From 3ce04dc3c3b6ab72bfb4ae203ede959dccfb2e3e Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Mon, 16 Mar 2015 15:22:03 -0400 Subject: [PATCH] Imported Upstream version 2.48.0 Change-Id: Ie8c1fa7173d48588524ed4e85cffd9e9af340d97 Signed-off-by: DongHun Kwak --- .dir-locals.el | 1 - .gitignore | 48 - ChangeLog | 163905 ++++++++++++++++++ INSTALL | 126 + Makefile.in | 1919 + NEWS | 614 + README | 366 + README.in | 25 + aclocal.m4 | 1708 + build/Makefile-newvs.am | 70 +- build/Makefile.in | 758 + build/Makefile.msvcproj | 107 + build/win32/Makefile.am | 7 +- build/win32/Makefile.in | 766 + build/win32/dirent/Makefile.in | 579 + build/win32/glibpc.py | 88 + build/win32/pc_base.py | 107 + build/win32/process_in_win32.py | 77 - build/win32/replace.py | 109 + build/win32/setup.py | 335 - build/win32/vs10/.gitignore | 6 - build/win32/vs10/Makefile.am | 98 +- build/win32/vs10/Makefile.in | 634 + build/win32/vs10/gio.vcxproj | 420 + build/win32/vs10/gio.vcxproj.filters | 229 + build/win32/vs10/gio.vcxproj.filtersin | 4 +- build/win32/vs10/gio.vcxprojin | 12 +- build/win32/vs10/glib-build-defines.props | 6 +- build/win32/vs10/glib-compile-resources.vcxproj | 8 +- .../vs10/glib-compile-resources.vcxproj.filters | 12 +- .../vs10/glib-compile-resources.vcxproj.filtersin | 12 + build/win32/vs10/glib-compile-resources.vcxprojin | 180 + build/win32/vs10/glib-compile-schemas.vcxproj | 8 +- .../vs10/glib-compile-schemas.vcxproj.filters | 12 +- .../vs10/glib-compile-schemas.vcxproj.filtersin | 12 + build/win32/vs10/glib-compile-schemas.vcxprojin | 180 + build/win32/vs10/glib-gen-srcs.props | 4 +- build/win32/vs10/glib-install.props | 235 +- build/win32/vs10/glib-install.propsin | 120 + build/win32/vs10/glib-install.vcxproj | 18 + build/win32/vs10/glib-install.vcxproj.filters | 13 + build/win32/vs10/glib-version-paths.props | 14 +- build/win32/vs10/glib-version-paths.props.in | 58 + build/win32/vs10/glib.sln | 248 +- build/win32/vs10/glib.vcxproj | 755 + build/win32/vs10/glib.vcxproj.filters | 202 + build/win32/vs10/glib.vcxproj.filtersin | 7 +- build/win32/vs10/glib.vcxprojin | 582 +- build/win32/vs10/gmodule.vcxproj | 8 +- build/win32/vs10/gobject.vcxproj | 225 + build/win32/vs10/gobject.vcxproj.filters | 45 + build/win32/vs10/gobject.vcxproj.filtersin | 2 +- build/win32/vs10/gobject.vcxprojin | 16 +- build/win32/vs10/gthread.vcxproj | 8 +- build/win32/vs11/.gitignore | 31 - build/win32/vs11/Makefile.am | 5 +- build/win32/vs11/Makefile.in | 662 + build/win32/vs11/README.txt | 91 + build/win32/vs11/gdbus.vcxproj | 180 + build/win32/vs11/gdbus.vcxproj.filters | 14 + build/win32/vs11/gio-querymodules.vcxproj | 184 + build/win32/vs11/gio-querymodules.vcxproj.filters | 14 + build/win32/vs11/gio.vcxproj | 420 + build/win32/vs11/gio.vcxproj.filters | 229 + build/win32/vs11/glib-build-defines.props | 84 + build/win32/vs11/glib-compile-resources.vcxproj | 181 + .../vs11/glib-compile-resources.vcxproj.filters | 13 + build/win32/vs11/glib-compile-schemas.vcxproj | 181 + .../vs11/glib-compile-schemas.vcxproj.filters | 13 + build/win32/vs11/glib-gen-srcs.props | 33 + build/win32/vs11/glib-genmarshal.vcxproj | 173 + build/win32/vs11/glib-genmarshal.vcxproj.filters | 22 + build/win32/vs11/glib-install.props | 353 + build/win32/vs11/glib-install.vcxproj | 182 + build/win32/vs11/glib-install.vcxproj.filters | 13 + build/win32/vs11/glib-version-paths.props | 58 + build/win32/vs11/glib.sln | 289 + build/win32/vs11/glib.vcxproj | 755 + build/win32/vs11/glib.vcxproj.filters | 202 + build/win32/vs11/gmodule.vcxproj | 204 + build/win32/vs11/gmodule.vcxproj.filters | 30 + build/win32/vs11/gobject.vcxproj | 225 + build/win32/vs11/gobject.vcxproj.filters | 45 + build/win32/vs11/gresource.vcxproj | 180 + build/win32/vs11/gresource.vcxproj.filters | 14 + build/win32/vs11/gsettings.vcxproj | 181 + build/win32/vs11/gsettings.vcxproj.filters | 14 + .../win32/vs11/gspawn-win32-helper-console.vcxproj | 177 + .../gspawn-win32-helper-console.vcxproj.filters | 22 + build/win32/vs11/gspawn-win32-helper.vcxproj | 177 + .../win32/vs11/gspawn-win32-helper.vcxproj.filters | 22 + build/win32/vs11/gthread.vcxproj | 188 + build/win32/vs11/gthread.vcxproj.filters | 27 + build/win32/vs12/.gitignore | 31 - build/win32/vs12/Makefile.am | 5 +- build/win32/vs12/Makefile.in | 662 + build/win32/vs12/README.txt | 91 + build/win32/vs12/gdbus.vcxproj | 180 + build/win32/vs12/gdbus.vcxproj.filters | 14 + build/win32/vs12/gio-querymodules.vcxproj | 184 + build/win32/vs12/gio-querymodules.vcxproj.filters | 14 + build/win32/vs12/gio.vcxproj | 420 + build/win32/vs12/gio.vcxproj.filters | 229 + build/win32/vs12/glib-build-defines.props | 84 + build/win32/vs12/glib-compile-resources.vcxproj | 181 + .../vs12/glib-compile-resources.vcxproj.filters | 13 + build/win32/vs12/glib-compile-schemas.vcxproj | 181 + .../vs12/glib-compile-schemas.vcxproj.filters | 13 + build/win32/vs12/glib-gen-srcs.props | 33 + build/win32/vs12/glib-genmarshal.vcxproj | 173 + build/win32/vs12/glib-genmarshal.vcxproj.filters | 22 + build/win32/vs12/glib-install.props | 353 + build/win32/vs12/glib-install.vcxproj | 182 + build/win32/vs12/glib-install.vcxproj.filters | 13 + build/win32/vs12/glib-version-paths.props | 58 + build/win32/vs12/glib.sln | 289 + build/win32/vs12/glib.vcxproj | 755 + build/win32/vs12/glib.vcxproj.filters | 202 + build/win32/vs12/gmodule.vcxproj | 204 + build/win32/vs12/gmodule.vcxproj.filters | 30 + build/win32/vs12/gobject.vcxproj | 225 + build/win32/vs12/gobject.vcxproj.filters | 45 + build/win32/vs12/gresource.vcxproj | 180 + build/win32/vs12/gresource.vcxproj.filters | 14 + build/win32/vs12/gsettings.vcxproj | 181 + build/win32/vs12/gsettings.vcxproj.filters | 14 + .../win32/vs12/gspawn-win32-helper-console.vcxproj | 177 + .../gspawn-win32-helper-console.vcxproj.filters | 22 + build/win32/vs12/gspawn-win32-helper.vcxproj | 177 + .../win32/vs12/gspawn-win32-helper.vcxproj.filters | 22 + build/win32/vs12/gthread.vcxproj | 188 + build/win32/vs12/gthread.vcxproj.filters | 27 + build/win32/vs14/Makefile.am | 45 + build/win32/vs14/Makefile.in | 662 + build/win32/vs14/README.txt | 91 + build/win32/vs14/gdbus.vcxproj | 180 + build/win32/vs14/gdbus.vcxproj.filters | 14 + build/win32/vs14/gio-querymodules.vcxproj | 184 + build/win32/vs14/gio-querymodules.vcxproj.filters | 14 + build/win32/vs14/gio.vcxproj | 420 + build/win32/vs14/gio.vcxproj.filters | 229 + build/win32/vs14/glib-build-defines.props | 84 + build/win32/vs14/glib-compile-resources.vcxproj | 181 + .../vs14/glib-compile-resources.vcxproj.filters | 13 + build/win32/vs14/glib-compile-schemas.vcxproj | 181 + .../vs14/glib-compile-schemas.vcxproj.filters | 13 + build/win32/vs14/glib-gen-srcs.props | 33 + build/win32/vs14/glib-genmarshal.vcxproj | 173 + build/win32/vs14/glib-genmarshal.vcxproj.filters | 22 + build/win32/vs14/glib-install.props | 353 + build/win32/vs14/glib-install.vcxproj | 182 + build/win32/vs14/glib-install.vcxproj.filters | 13 + build/win32/vs14/glib-version-paths.props | 58 + build/win32/vs14/glib.sln | 289 + build/win32/vs14/glib.vcxproj | 755 + build/win32/vs14/glib.vcxproj.filters | 202 + build/win32/vs14/gmodule.vcxproj | 204 + build/win32/vs14/gmodule.vcxproj.filters | 30 + build/win32/vs14/gobject.vcxproj | 225 + build/win32/vs14/gobject.vcxproj.filters | 45 + build/win32/vs14/gresource.vcxproj | 180 + build/win32/vs14/gresource.vcxproj.filters | 14 + build/win32/vs14/gsettings.vcxproj | 181 + build/win32/vs14/gsettings.vcxproj.filters | 14 + .../win32/vs14/gspawn-win32-helper-console.vcxproj | 177 + .../gspawn-win32-helper-console.vcxproj.filters | 22 + build/win32/vs14/gspawn-win32-helper.vcxproj | 177 + .../win32/vs14/gspawn-win32-helper.vcxproj.filters | 22 + build/win32/vs14/gthread.vcxproj | 188 + build/win32/vs14/gthread.vcxproj.filters | 27 + build/win32/vs8/Makefile.am | 11 - build/win32/vs8/README | 4 - build/win32/vs8/gio.vcproj | 486 - build/win32/vs8/glib-genmarshal.vcproj | 199 - build/win32/vs8/glib.sln | 84 - build/win32/vs8/glib.vcproj | 605 - build/win32/vs8/gmodule.vcproj | 217 - build/win32/vs8/gobject.vcproj | 295 - build/win32/vs8/gspawn-win32-helper-console.vcproj | 201 - build/win32/vs8/gspawn-win32-helper.vcproj | 201 - build/win32/vs8/gthread.vcproj | 215 - build/win32/vs9/.gitignore | 3 - build/win32/vs9/Makefile.am | 59 +- build/win32/vs9/Makefile.in | 614 + build/win32/vs9/gio.vcproj | 409 + build/win32/vs9/gio.vcprojin | 2 +- build/win32/vs9/glib-build-defines.vsprops | 4 + build/win32/vs9/glib-compile-resources.vcproj | 306 +- build/win32/vs9/glib-compile-resources.vcprojin | 155 + build/win32/vs9/glib-compile-schemas.vcproj | 306 +- build/win32/vs9/glib-compile-schemas.vcprojin | 155 + build/win32/vs9/glib-gen-srcs.vsprops | 2 +- build/win32/vs9/glib-install.vcproj | 50 +- build/win32/vs9/glib-install.vsprops | 256 +- build/win32/vs9/glib-install.vspropsin | 90 + build/win32/vs9/glib-version-paths.vsprops | 12 +- build/win32/vs9/glib-version-paths.vsprops.in | 57 + build/win32/vs9/glib.sln | 248 +- build/win32/vs9/glib.vcproj | 722 + build/win32/vs9/glib.vcprojin | 348 +- build/win32/vs9/gobject.vcproj | 218 + build/win32/vs9/gobject.vcprojin | 6 +- compile | 347 + config.guess | 1441 + config.h.in | 791 + config.h.win32 | 869 + config.h.win32.in | 58 +- config.sub | 1813 + configure | 32584 ++++ configure.ac | 279 +- depcomp | 791 + docs/Makefile.in | 758 + docs/reference/.gitignore | 16 - docs/reference/Makefile.in | 753 + docs/reference/gio/.gitignore | 3 - docs/reference/gio/Makefile.am | 9 +- docs/reference/gio/Makefile.in | 1132 + docs/reference/gio/gapplication.1 | 293 + docs/reference/gio/gdbus-codegen.1 | 761 + .../gio/gdbus-object-manager-example/.gitignore | 1 - .../gio/gdbus-object-manager-example/Makefile.am | 67 - .../gdbus-object-manager-example-docs.xml | 17 - .../gdbus-object-manager-example-sections.txt | 161 - .../gdbus-object-manager-example.types | 10 - docs/reference/gio/gdbus.1 | 324 + docs/reference/gio/gio-docs.xml | 16 + docs/reference/gio/gio-overrides.txt | 0 docs/reference/gio/gio-querymodules.1 | 44 + docs/reference/gio/gio-sections.txt | 206 +- docs/reference/gio/gio.types | 3 + docs/reference/gio/glib-compile-resources.1 | 167 + docs/reference/gio/glib-compile-schemas.1 | 96 + docs/reference/gio/glib-compile-schemas.xml | 8 + docs/reference/gio/gresource.1 | 95 + docs/reference/gio/gsettings.1 | 167 + docs/reference/gio/gvfs-overview.odg | Bin 17772 -> 0 bytes docs/reference/gio/html/GAction.html | 828 + docs/reference/gio/html/GActionGroup.html | 1239 + docs/reference/gio/html/GActionMap.html | 508 + docs/reference/gio/html/GAppInfo.html | 2206 + docs/reference/gio/html/GAppInfoMonitor.html | 147 + docs/reference/gio/html/GApplication.html | 2618 + .../gio/html/GApplicationCommandLine.html | 1051 + docs/reference/gio/html/GAsyncInitable.html | 767 + docs/reference/gio/html/GAsyncResult.html | 508 + docs/reference/gio/html/GBufferedInputStream.html | 696 + docs/reference/gio/html/GBufferedOutputStream.html | 388 + docs/reference/gio/html/GBytesIcon.html | 201 + docs/reference/gio/html/GCancellable.html | 857 + docs/reference/gio/html/GCharsetConverter.html | 313 + docs/reference/gio/html/GConverter.html | 466 + docs/reference/gio/html/GCredentials.html | 557 + docs/reference/gio/html/GDBusActionGroup.html | 162 + docs/reference/gio/html/GDBusAuthObserver.html | 384 + docs/reference/gio/html/GDBusConnection.html | 4772 + docs/reference/gio/html/GDBusInterface.html | 330 + .../reference/gio/html/GDBusInterfaceSkeleton.html | 874 + docs/reference/gio/html/GDBusMenuModel.html | 153 + docs/reference/gio/html/GDBusMessage.html | 2469 + docs/reference/gio/html/GDBusMethodInvocation.html | 908 + docs/reference/gio/html/GDBusObject.html | 403 + docs/reference/gio/html/GDBusObjectManager.html | 592 + .../gio/html/GDBusObjectManagerClient.html | 1275 + .../gio/html/GDBusObjectManagerServer.html | 508 + docs/reference/gio/html/GDBusObjectProxy.html | 258 + docs/reference/gio/html/GDBusObjectSkeleton.html | 488 + docs/reference/gio/html/GDBusProxy.html | 2151 + docs/reference/gio/html/GDBusServer.html | 626 + docs/reference/gio/html/GDataInputStream.html | 1584 + docs/reference/gio/html/GDataOutputStream.html | 688 + docs/reference/gio/html/GDatagramBased.html | 766 + docs/reference/gio/html/GDrive.html | 1854 + docs/reference/gio/html/GDtlsClientConnection.html | 468 + docs/reference/gio/html/GDtlsConnection.html | 1521 + docs/reference/gio/html/GDtlsServerConnection.html | 208 + docs/reference/gio/html/GEmblem.html | 351 + docs/reference/gio/html/GEmblemedIcon.html | 324 + docs/reference/gio/html/GFile.html | 9661 ++ docs/reference/gio/html/GFileDescriptorBased.html | 183 + docs/reference/gio/html/GFileEnumerator.html | 824 + docs/reference/gio/html/GFileIOStream.html | 350 + docs/reference/gio/html/GFileIcon.html | 199 + docs/reference/gio/html/GFileInfo.html | 4244 + docs/reference/gio/html/GFileInputStream.html | 292 + docs/reference/gio/html/GFileMonitor.html | 514 + docs/reference/gio/html/GFileOutputStream.html | 343 + docs/reference/gio/html/GFilenameCompleter.html | 284 + docs/reference/gio/html/GFilterInputStream.html | 247 + docs/reference/gio/html/GFilterOutputStream.html | 249 + docs/reference/gio/html/GIOModule.html | 590 + docs/reference/gio/html/GIOStream.html | 785 + docs/reference/gio/html/GIcon.html | 476 + docs/reference/gio/html/GInetAddress.html | 1029 + docs/reference/gio/html/GInetAddressMask.html | 501 + docs/reference/gio/html/GInetSocketAddress.html | 413 + docs/reference/gio/html/GInitable.html | 453 + docs/reference/gio/html/GInputStream.html | 1300 + docs/reference/gio/html/GListModel.html | 531 + docs/reference/gio/html/GListStore.html | 535 + docs/reference/gio/html/GLoadableIcon.html | 353 + docs/reference/gio/html/GMemoryInputStream.html | 304 + docs/reference/gio/html/GMemoryOutputStream.html | 577 + docs/reference/gio/html/GMenu.html | 1870 + docs/reference/gio/html/GMenuModel.html | 1208 + docs/reference/gio/html/GMount.html | 1917 + docs/reference/gio/html/GMountOperation.html | 1187 + docs/reference/gio/html/GNetworkAddress.html | 501 + docs/reference/gio/html/GNetworkMonitor.html | 724 + docs/reference/gio/html/GNetworkService.html | 416 + docs/reference/gio/html/GNotification.html | 780 + docs/reference/gio/html/GOutputStream.html | 1701 + docs/reference/gio/html/GPermission.html | 664 + docs/reference/gio/html/GPollableInputStream.html | 407 + docs/reference/gio/html/GPollableOutputStream.html | 407 + docs/reference/gio/html/GPropertyAction.html | 331 + docs/reference/gio/html/GProxy.html | 453 + docs/reference/gio/html/GProxyAddress.html | 573 + docs/reference/gio/html/GProxyResolver.html | 433 + docs/reference/gio/html/GRemoteActionGroup.html | 291 + docs/reference/gio/html/GResolver.html | 1245 + docs/reference/gio/html/GResource.html | 1166 + docs/reference/gio/html/GSeekable.html | 435 + docs/reference/gio/html/GSettings.html | 3623 + docs/reference/gio/html/GSettingsBackend.html | 820 + docs/reference/gio/html/GSimpleAction.html | 580 + docs/reference/gio/html/GSimpleActionGroup.html | 317 + docs/reference/gio/html/GSimpleAsyncResult.html | 1730 + docs/reference/gio/html/GSimpleIOStream.html | 187 + docs/reference/gio/html/GSimplePermission.html | 127 + docs/reference/gio/html/GSimpleProxyResolver.html | 373 + docs/reference/gio/html/GSocket.html | 4069 + docs/reference/gio/html/GSocketAddress.html | 369 + docs/reference/gio/html/GSocketClient.html | 2070 + docs/reference/gio/html/GSocketConnectable.html | 669 + docs/reference/gio/html/GSocketConnection.html | 626 + docs/reference/gio/html/GSocketControlMessage.html | 326 + docs/reference/gio/html/GSocketListener.html | 986 + docs/reference/gio/html/GSocketService.html | 352 + docs/reference/gio/html/GSrvTarget.html | 418 + docs/reference/gio/html/GSubprocess.html | 1587 + docs/reference/gio/html/GSubprocessLauncher.html | 958 + docs/reference/gio/html/GTask.html | 2636 + docs/reference/gio/html/GTcpConnection.html | 207 + docs/reference/gio/html/GTcpWrapperConnection.html | 211 + docs/reference/gio/html/GTestDBus.html | 506 + docs/reference/gio/html/GThemedIcon.html | 463 + .../reference/gio/html/GThreadedSocketService.html | 238 + docs/reference/gio/html/GTlsBackend.html | 559 + docs/reference/gio/html/GTlsCertificate.html | 613 + docs/reference/gio/html/GTlsClientConnection.html | 636 + docs/reference/gio/html/GTlsConnection.html | 1292 + docs/reference/gio/html/GTlsDatabase.html | 1284 + docs/reference/gio/html/GTlsFileDatabase.html | 207 + docs/reference/gio/html/GTlsInteraction.html | 836 + docs/reference/gio/html/GTlsPassword.html | 689 + docs/reference/gio/html/GTlsServerConnection.html | 213 + docs/reference/gio/html/GUnixConnection.html | 550 + .../gio/html/GUnixCredentialsMessage.html | 264 + docs/reference/gio/html/GUnixFDList.html | 451 + docs/reference/gio/html/GUnixFDMessage.html | 347 + docs/reference/gio/html/GUnixInputStream.html | 310 + docs/reference/gio/html/GUnixOutputStream.html | 310 + docs/reference/gio/html/GUnixSocketAddress.html | 608 + docs/reference/gio/html/GVfs.html | 356 + docs/reference/gio/html/GVolume.html | 1380 + docs/reference/gio/html/GVolumeMonitor.html | 925 + docs/reference/gio/html/GZlibCompressor.html | 328 + docs/reference/gio/html/GZlibDecompressor.html | 218 + docs/reference/gio/html/annotation-glossary.html | 91 + docs/reference/gio/html/api-index-2-18.html | 147 + docs/reference/gio/html/api-index-2-20.html | 156 + docs/reference/gio/html/api-index-2-22.html | 1082 + docs/reference/gio/html/api-index-2-24.html | 217 + docs/reference/gio/html/api-index-2-26.html | 1651 + docs/reference/gio/html/api-index-2-28.html | 718 + docs/reference/gio/html/api-index-2-30.html | 693 + docs/reference/gio/html/api-index-2-32.html | 717 + docs/reference/gio/html/api-index-2-34.html | 271 + docs/reference/gio/html/api-index-2-36.html | 274 + docs/reference/gio/html/api-index-2-38.html | 188 + docs/reference/gio/html/api-index-2-40.html | 364 + docs/reference/gio/html/api-index-2-42.html | 63 + docs/reference/gio/html/api-index-2-44.html | 214 + docs/reference/gio/html/api-index-2-46.html | 211 + docs/reference/gio/html/api-index-2-48.html | 283 + docs/reference/gio/html/api-index-deprecated.html | 321 + docs/reference/gio/html/api-index-full.html | 10223 ++ docs/reference/gio/html/application.html | 79 + docs/reference/gio/html/async.html | 47 + docs/reference/gio/html/ch01.html | 231 + docs/reference/gio/html/ch02.html | 161 + docs/reference/gio/html/ch03.html | 44 + docs/reference/gio/html/ch32.html | 74 + docs/reference/gio/html/ch33.html | 216 + docs/reference/gio/html/ch33s02.html | 40 + docs/reference/gio/html/ch33s03.html | 38 + docs/reference/gio/html/ch34.html | 55 + docs/reference/gio/html/ch34s02.html | 58 + docs/reference/gio/html/ch34s03.html | 158 + docs/reference/gio/html/ch34s04.html | 45 + docs/reference/gio/html/ch34s05.html | 47 + docs/reference/gio/html/ch34s06.html | 277 + docs/reference/gio/html/ch34s07.html | 159 + docs/reference/gio/html/ch35.html | 94 + docs/reference/gio/html/ch35s02.html | 141 + docs/reference/gio/html/ch35s03.html | 201 + docs/reference/gio/html/ch35s04.html | 96 + docs/reference/gio/html/conversion.html | 43 + docs/reference/gio/html/data-models.html | 37 + docs/reference/gio/html/extending-gio.html | 130 + docs/reference/gio/html/extending.html | 40 + .../gio/html/failable_initialization.html | 37 + docs/reference/gio/html/file_mon.html | 32 + docs/reference/gio/html/file_ops.html | 49 + docs/reference/gio/html/gapplication-tool.html | 287 + docs/reference/gio/html/gdbus-codegen.html | 1097 + docs/reference/gio/html/gdbus-convenience.html | 64 + .../gio/html/gdbus-example-gdbus-codegen.html | 89 + docs/reference/gio/html/gdbus-lowlevel.html | 58 + docs/reference/gio/html/gdbus.html | 299 + docs/reference/gio/html/gio-D-Bus-Addresses.html | 432 + .../gio/html/gio-D-Bus-Introspection-Data.html | 1562 + docs/reference/gio/html/gio-D-Bus-Utilities.html | 390 + .../gio/html/gio-Desktop-file-based-GAppInfo.html | 1194 + docs/reference/gio/html/gio-Extension-Points.html | 612 + .../gio/html/gio-GActionGroup-exporter.html | 190 + docs/reference/gio/html/gio-GContentType.html | 588 + .../gio/html/gio-GConverterInputstream.html | 212 + .../gio/html/gio-GConverterOutputstream.html | 212 + docs/reference/gio/html/gio-GDBusError.html | 1098 + docs/reference/gio/html/gio-GFileAttribute.html | 652 + docs/reference/gio/html/gio-GIOError.html | 561 + docs/reference/gio/html/gio-GIOScheduler.html | 362 + .../gio/html/gio-GMenuModel-exporter.html | 181 + .../gio-GSettingsSchema-GSettingsSchemaSource.html | 1276 + docs/reference/gio/html/gio-GWin32InputStream.html | 254 + .../reference/gio/html/gio-GWin32OutputStream.html | 255 + docs/reference/gio/html/gio-GWin32RegistryKey.html | 2066 + docs/reference/gio/html/gio-Owning-Bus-Names.html | 653 + docs/reference/gio/html/gio-TLS-Overview.html | 317 + docs/reference/gio/html/gio-Unix-Mounts.html | 1415 + .../reference/gio/html/gio-Watching-Bus-Names.html | 570 + docs/reference/gio/html/gio-gnetworking.h.html | 93 + docs/reference/gio/html/gio-gpollableutils.html | 470 + docs/reference/gio/html/gio-hierarchy.html | 190 + docs/reference/gio/html/gio-querymodules.html | 52 + docs/reference/gio/html/gio.devhelp2 | 3214 + .../reference/gio/html/glib-compile-resources.html | 208 + docs/reference/gio/html/glib-compile-schemas.html | 117 + docs/reference/gio/html/gresource-tool.html | 110 + docs/reference/gio/html/gsettings-tool.html | 177 + docs/reference/gio/html/gvfs-overview.png | Bin 0 -> 48474 bytes docs/reference/gio/html/highlevel-socket.html | 59 + docs/reference/gio/html/home.png | Bin 0 -> 256 bytes docs/reference/gio/html/icons.html | 52 + docs/reference/gio/html/index.html | 655 + docs/reference/gio/html/index.sgml | 4612 + docs/reference/gio/html/left-insensitive.png | Bin 0 -> 395 bytes docs/reference/gio/html/left.png | Bin 0 -> 262 bytes docs/reference/gio/html/menu-example.png | Bin 0 -> 31470 bytes docs/reference/gio/html/menu-model.png | Bin 0 -> 20647 bytes docs/reference/gio/html/migrating.html | 60 + docs/reference/gio/html/networking.html | 77 + docs/reference/gio/html/permissions.html | 38 + docs/reference/gio/html/pt01.html | 39 + docs/reference/gio/html/pt02.html | 599 + docs/reference/gio/html/registry.html | 32 + docs/reference/gio/html/resolver.html | 52 + docs/reference/gio/html/resources.html | 32 + docs/reference/gio/html/right-insensitive.png | Bin 0 -> 373 bytes docs/reference/gio/html/right.png | Bin 0 -> 261 bytes docs/reference/gio/html/running-gio-apps.html | 188 + docs/reference/gio/html/settings.html | 41 + docs/reference/gio/html/streaming.html | 109 + docs/reference/gio/html/style.css | 479 + docs/reference/gio/html/subprocesses.html | 37 + docs/reference/gio/html/testing.html | 32 + docs/reference/gio/html/tls.html | 70 + docs/reference/gio/html/tools.html | 55 + docs/reference/gio/html/types.html | 43 + docs/reference/gio/html/up-insensitive.png | Bin 0 -> 374 bytes docs/reference/gio/html/up.png | Bin 0 -> 260 bytes docs/reference/gio/html/utils.html | 32 + docs/reference/gio/html/volume_mon.html | 46 + docs/reference/gio/migrating-gdbus.xml | 31 +- docs/reference/gio/version.xml | 1 + docs/reference/glib/Makefile.am | 11 +- docs/reference/glib/Makefile.in | 1073 + docs/reference/glib/glib-docs.xml | 9 + docs/reference/glib/glib-gettextize.1 | 79 + docs/reference/glib/glib-sections.txt | 32 + docs/reference/glib/gtester-report.1 | 57 + docs/reference/glib/gtester.1 | 141 + docs/reference/glib/gvariant-varargs.xml | 3 +- .../Sorted_binary_tree_breadth-first_traversal.svg | 134 + .../glib/html/Sorted_binary_tree_inorder.svg | 753 + .../glib/html/Sorted_binary_tree_postorder.svg | 750 + .../glib/html/Sorted_binary_tree_preorder.svg | 750 + docs/reference/glib/html/annotation-glossary.html | 96 + docs/reference/glib/html/api-index-2-10.html | 166 + docs/reference/glib/html/api-index-2-12.html | 306 + docs/reference/glib/html/api-index-2-14.html | 561 + docs/reference/glib/html/api-index-2-16.html | 356 + docs/reference/glib/html/api-index-2-18.html | 107 + docs/reference/glib/html/api-index-2-2.html | 118 + docs/reference/glib/html/api-index-2-20.html | 85 + docs/reference/glib/html/api-index-2-22.html | 188 + docs/reference/glib/html/api-index-2-24.html | 422 + docs/reference/glib/html/api-index-2-26.html | 388 + docs/reference/glib/html/api-index-2-28.html | 121 + docs/reference/glib/html/api-index-2-30.html | 251 + docs/reference/glib/html/api-index-2-32.html | 342 + docs/reference/glib/html/api-index-2-34.html | 115 + docs/reference/glib/html/api-index-2-36.html | 115 + docs/reference/glib/html/api-index-2-38.html | 121 + docs/reference/glib/html/api-index-2-4.html | 398 + docs/reference/glib/html/api-index-2-40.html | 161 + docs/reference/glib/html/api-index-2-42.html | 41 + docs/reference/glib/html/api-index-2-44.html | 116 + docs/reference/glib/html/api-index-2-46.html | 68 + docs/reference/glib/html/api-index-2-48.html | 68 + docs/reference/glib/html/api-index-2-6.html | 415 + docs/reference/glib/html/api-index-2-8.html | 156 + docs/reference/glib/html/api-index-deprecated.html | 645 + docs/reference/glib/html/api-index-full.html | 9168 + docs/reference/glib/html/deprecated.html | 46 + docs/reference/glib/html/file-name-encodings.png | Bin 0 -> 32141 bytes docs/reference/glib/html/glib-Arrays.html | 1113 + .../glib/html/glib-Asynchronous-Queues.html | 1412 + .../glib/html/glib-Atomic-Operations.html | 930 + .../html/glib-Automatic-String-Completion.html | 610 + .../glib/html/glib-Balanced-Binary-Trees.html | 945 + docs/reference/glib/html/glib-Base64-Encoding.html | 436 + docs/reference/glib/html/glib-Basic-Types.html | 1176 + .../glib/html/glib-Bookmark-file-parser.html | 2417 + .../glib-Bounds-checked-integer-arithmetic.html | 384 + docs/reference/glib/html/glib-Byte-Arrays.html | 1499 + .../glib/html/glib-Byte-Order-Macros.html | 2092 + docs/reference/glib/html/glib-Caches.html | 535 + .../glib/html/glib-Character-Set-Conversion.html | 1285 + .../glib/html/glib-Commandline-option-parser.html | 2320 + docs/reference/glib/html/glib-Data-Checksums.html | 638 + docs/reference/glib/html/glib-Data-HMACs.html | 542 + docs/reference/glib/html/glib-Datasets.html | 658 + .../glib/html/glib-Date-and-Time-Functions.html | 2775 + .../glib/html/glib-Deprecated-Thread-APIs.html | 2086 + .../glib/html/glib-Double-ended-Queues.html | 1841 + .../glib/html/glib-Doubly-Linked-Lists.html | 1921 + .../glib/html/glib-Dynamic-Loading-of-Modules.html | 656 + docs/reference/glib/html/glib-Error-Reporting.html | 1250 + docs/reference/glib/html/glib-File-Utilities.html | 2486 + docs/reference/glib/html/glib-GDateTime.html | 2385 + docs/reference/glib/html/glib-GTimeZone.html | 654 + docs/reference/glib/html/glib-GVariant.html | 6946 + docs/reference/glib/html/glib-GVariantType.html | 1829 + .../html/glib-Glob-style-pattern-matching.html | 367 + docs/reference/glib/html/glib-Hash-Tables.html | 2257 + docs/reference/glib/html/glib-Hook-Functions.html | 1797 + .../glib/html/glib-Hostname-Utilities.html | 281 + docs/reference/glib/html/glib-I18N.html | 844 + docs/reference/glib/html/glib-IO-Channels.html | 2627 + .../glib/html/glib-Key-value-file-parser.html | 3466 + .../reference/glib/html/glib-Keyed-Data-Lists.html | 999 + docs/reference/glib/html/glib-Lexical-Scanner.html | 1992 + .../glib/html/glib-Memory-Allocation.html | 1473 + docs/reference/glib/html/glib-Memory-Slices.html | 652 + docs/reference/glib/html/glib-Message-Logging.html | 1020 + .../glib/html/glib-Miscellaneous-Macros.html | 1627 + .../html/glib-Miscellaneous-Utility-Functions.html | 2226 + docs/reference/glib/html/glib-N-ary-Trees.html | 1961 + .../glib/html/glib-Numerical-Definitions.html | 232 + .../glib-Perl-compatible-regular-expressions.html | 3520 + docs/reference/glib/html/glib-Pointer-Arrays.html | 1046 + docs/reference/glib/html/glib-Quarks.html | 371 + docs/reference/glib/html/glib-Random-Numbers.html | 760 + .../glib/html/glib-Relations-and-Tuples.html | 653 + docs/reference/glib/html/glib-Sequences.html | 2068 + .../glib/html/glib-Shell-related-Utilities.html | 298 + .../glib/html/glib-Simple-XML-Subset-Parser.html | 1478 + .../glib/html/glib-Singly-Linked-Lists.html | 1535 + .../glib/html/glib-Spawning-Processes.html | 1153 + docs/reference/glib/html/glib-Standard-Macros.html | 585 + docs/reference/glib/html/glib-String-Chunks.html | 369 + .../glib/html/glib-String-Utility-Functions.html | 4054 + docs/reference/glib/html/glib-Strings.html | 1791 + docs/reference/glib/html/glib-Testing.html | 3319 + .../glib/html/glib-The-Main-Event-Loop.html | 5090 + docs/reference/glib/html/glib-Thread-Pools.html | 808 + docs/reference/glib/html/glib-Threads.html | 3323 + docs/reference/glib/html/glib-Timers.html | 316 + docs/reference/glib/html/glib-Trash-Stacks.html | 272 + .../glib/html/glib-Type-Conversion-Macros.html | 308 + ...ib-UNIX-specific-utilities-and-integration.html | 608 + docs/reference/glib/html/glib-URI-Functions.html | 503 + .../glib/html/glib-Unicode-Manipulation.html | 4975 + .../glib/html/glib-Version-Information.html | 519 + .../glib/html/glib-Warnings-and-Assertions.html | 595 + .../html/glib-Windows-Compatibility-Functions.html | 699 + docs/reference/glib/html/glib-building.html | 437 + docs/reference/glib/html/glib-changes.html | 152 + docs/reference/glib/html/glib-compiling.html | 144 + docs/reference/glib/html/glib-core.html | 67 + docs/reference/glib/html/glib-cross-compiling.html | 164 + docs/reference/glib/html/glib-data-types.html | 99 + docs/reference/glib/html/glib-fundamentals.html | 59 + docs/reference/glib/html/glib-gettextize.html | 95 + docs/reference/glib/html/glib-programming.html | 75 + docs/reference/glib/html/glib-regex-syntax.html | 2216 + docs/reference/glib/html/glib-resources.html | 123 + docs/reference/glib/html/glib-running.html | 294 + docs/reference/glib/html/glib-utilities.html | 125 + docs/reference/glib/html/glib.devhelp2 | 3015 + docs/reference/glib/html/glib.html | 71 + docs/reference/glib/html/gtester-report.html | 80 + docs/reference/glib/html/gtester.html | 186 + .../glib/html/gvariant-format-strings.html | 1338 + docs/reference/glib/html/gvariant-text.html | 666 + docs/reference/glib/html/home.png | Bin 0 -> 256 bytes docs/reference/glib/html/index.html | 363 + docs/reference/glib/html/index.sgml | 3447 + docs/reference/glib/html/left-insensitive.png | Bin 0 -> 395 bytes docs/reference/glib/html/left.png | Bin 0 -> 262 bytes docs/reference/glib/html/mainloop-states.gif | Bin 0 -> 7088 bytes docs/reference/glib/html/right-insensitive.png | Bin 0 -> 373 bytes docs/reference/glib/html/right.png | Bin 0 -> 261 bytes docs/reference/glib/html/style.css | 479 + docs/reference/glib/html/tools.html | 40 + docs/reference/glib/html/up-insensitive.png | Bin 0 -> 374 bytes docs/reference/glib/html/up.png | Bin 0 -> 260 bytes docs/reference/glib/programming.xml | 2 +- docs/reference/glib/version.xml | 1 + docs/reference/gobject/Makefile.am | 2 +- docs/reference/gobject/Makefile.in | 1032 + docs/reference/gobject/glib-genmarshal.1 | 335 + docs/reference/gobject/glib-mkenums.1 | 224 + docs/reference/gobject/gobject-docs.xml | 4 + docs/reference/gobject/gobject-query.1 | 90 + docs/reference/gobject/gobject-sections.txt | 2 +- docs/reference/gobject/html/GBinding.html | 976 + docs/reference/gobject/html/GTypeModule.html | 843 + docs/reference/gobject/html/GTypePlugin.html | 557 + .../gobject/html/annotation-glossary.html | 89 + docs/reference/gobject/html/api-index-2-10.html | 79 + docs/reference/gobject/html/api-index-2-12.html | 49 + docs/reference/gobject/html/api-index-2-14.html | 45 + docs/reference/gobject/html/api-index-2-18.html | 42 + docs/reference/gobject/html/api-index-2-2.html | 34 + docs/reference/gobject/html/api-index-2-22.html | 42 + docs/reference/gobject/html/api-index-2-24.html | 67 + docs/reference/gobject/html/api-index-2-26.html | 195 + docs/reference/gobject/html/api-index-2-28.html | 41 + docs/reference/gobject/html/api-index-2-30.html | 68 + docs/reference/gobject/html/api-index-2-32.html | 79 + docs/reference/gobject/html/api-index-2-34.html | 57 + docs/reference/gobject/html/api-index-2-36.html | 50 + docs/reference/gobject/html/api-index-2-38.html | 75 + docs/reference/gobject/html/api-index-2-4.html | 172 + docs/reference/gobject/html/api-index-2-40.html | 38 + docs/reference/gobject/html/api-index-2-42.html | 34 + docs/reference/gobject/html/api-index-2-44.html | 60 + docs/reference/gobject/html/api-index-2-46.html | 34 + docs/reference/gobject/html/api-index-2-6.html | 38 + docs/reference/gobject/html/api-index-2-8.html | 38 + .../gobject/html/api-index-deprecated.html | 131 + docs/reference/gobject/html/api-index-full.html | 3030 + docs/reference/gobject/html/ch01s02.html | 161 + docs/reference/gobject/html/chapter-gobject.html | 321 + docs/reference/gobject/html/chapter-gtype.html | 316 + docs/reference/gobject/html/chapter-intro.html | 100 + docs/reference/gobject/html/chapter-signal.html | 253 + docs/reference/gobject/html/glib-genmarshal.html | 418 + docs/reference/gobject/html/glib-mkenums.html | 375 + docs/reference/gobject/html/glue.png | Bin 0 -> 12722 bytes .../gobject/html/gobject-Boxed-Types.html | 680 + docs/reference/gobject/html/gobject-Closures.html | 5125 + .../html/gobject-Enumeration-and-Flag-Types.html | 1130 + .../reference/gobject/html/gobject-GParamSpec.html | 1991 + .../gobject/html/gobject-Generic-values.html | 1089 + docs/reference/gobject/html/gobject-Signals.html | 3440 + ...gobject-Standard-Parameter-and-Value-Types.html | 7208 + .../gobject/html/gobject-The-Base-Object-Type.html | 4225 + .../gobject/html/gobject-Type-Information.html | 6487 + .../gobject/html/gobject-Value-arrays.html | 642 + .../html/gobject-Varargs-Value-Collection.html | 333 + docs/reference/gobject/html/gobject-memory.html | 208 + .../reference/gobject/html/gobject-properties.html | 406 + docs/reference/gobject/html/gobject-query.html | 127 + docs/reference/gobject/html/gobject.devhelp2 | 887 + docs/reference/gobject/html/gtype-conventions.html | 173 + .../gobject/html/gtype-instantiable-classed.html | 412 + .../html/gtype-non-instantiable-classed.html | 564 + .../gobject/html/gtype-non-instantiable.html | 107 + docs/reference/gobject/html/home.png | Bin 0 -> 256 bytes .../gobject/html/howto-gobject-chainup.html | 118 + .../reference/gobject/html/howto-gobject-code.html | 170 + .../gobject/html/howto-gobject-construction.html | 214 + .../gobject/html/howto-gobject-destruction.html | 189 + .../gobject/html/howto-gobject-methods.html | 543 + docs/reference/gobject/html/howto-gobject.html | 286 + .../gobject/html/howto-interface-implement.html | 164 + .../gobject/html/howto-interface-override.html | 227 + .../gobject/html/howto-interface-prerequisite.html | 222 + .../gobject/html/howto-interface-properties.html | 235 + docs/reference/gobject/html/howto-interface.html | 278 + docs/reference/gobject/html/howto-signals.html | 175 + docs/reference/gobject/html/index.html | 202 + docs/reference/gobject/html/index.sgml | 924 + docs/reference/gobject/html/left-insensitive.png | Bin 0 -> 395 bytes docs/reference/gobject/html/left.png | Bin 0 -> 262 bytes docs/reference/gobject/html/pr01.html | 71 + docs/reference/gobject/html/pt01.html | 79 + docs/reference/gobject/html/pt02.html | 66 + docs/reference/gobject/html/pt03.html | 54 + docs/reference/gobject/html/right-insensitive.png | Bin 0 -> 373 bytes docs/reference/gobject/html/right.png | Bin 0 -> 261 bytes docs/reference/gobject/html/rn01.html | 84 + docs/reference/gobject/html/rn02.html | 46 + docs/reference/gobject/html/signal.html | 372 + docs/reference/gobject/html/style.css | 479 + docs/reference/gobject/html/tools-ginspector.html | 34 + docs/reference/gobject/html/tools-gob.html | 39 + docs/reference/gobject/html/tools-gtkdoc.html | 82 + docs/reference/gobject/html/tools-refdb.html | 47 + docs/reference/gobject/html/tools-vala.html | 42 + docs/reference/gobject/html/up-insensitive.png | Bin 0 -> 374 bytes docs/reference/gobject/html/up.png | Bin 0 -> 260 bytes docs/reference/gobject/tmpl/.gitignore | 15 - docs/reference/gobject/tut_gobject.xml | 412 +- docs/reference/gobject/tut_gsignal.xml | 255 +- docs/reference/gobject/tut_gtype.xml | 489 +- docs/reference/gobject/tut_howto.xml | 1583 +- docs/reference/gobject/tut_intro.xml | 23 +- docs/reference/gobject/version.xml | 1 + gio/.gitignore | 17 - gio/Makefile.am | 100 +- gio/Makefile.in | 4821 + gio/fam/Makefile.am | 10 +- gio/fam/Makefile.in | 1572 + gio/fam/fam-helper.c | 274 - gio/fam/fam-helper.h | 36 - gio/fam/fam-module.c | 54 - gio/fam/gfamdirectorymonitor.c | 155 - gio/fam/gfamdirectorymonitor.h | 52 - gio/fam/gfamfilemonitor.c | 258 +- gio/fam/gfamfilemonitor.h | 53 - gio/fen/Makefile.am | 27 - gio/fen/fen-dump.c | 74 - gio/fen/fen-dump.h | 27 - gio/fen/fen-helper.c | 193 - gio/fen/fen-helper.h | 31 - gio/fen/fen-kernel.c | 550 - gio/fen/fen-kernel.h | 41 - gio/fen/fen-node.c | 638 - gio/fen/fen-node.h | 102 - gio/fen/gfendirectorymonitor.c | 140 - gio/fen/gfendirectorymonitor.h | 56 - gio/fen/gfenfilemonitor.c | 140 - gio/fen/gfenfilemonitor.h | 57 - gio/gaction.c | 2 +- gio/gactiongroup.c | 5 +- gio/gactiongroupexporter.c | 13 + gio/gappinfo.c | 6 +- gio/gapplication-tool.c | 2 +- gio/gapplication.c | 131 +- gio/gasyncinitable.c | 3 + gio/gasyncresult.c | 2 + gio/gcocoanotificationbackend.c | 278 + gio/gconstructor_as_data.h | 1 + gio/gcontenttype-win32.c | 26 +- gio/gconverter.c | 3 +- gio/gconverterinputstream.c | 1 - gio/gconverteroutputstream.c | 1 - gio/gcredentials.c | 2 +- gio/gdatagrambased.c | 473 + gio/gdatagrambased.h | 144 + gio/gdbus-2.0/codegen/.gitignore | 2 - gio/gdbus-2.0/codegen/Makefile.in | 1469 + gio/gdbus-2.0/codegen/codegen.py | 22 + gio/gdbus-2.0/codegen/config.py | 25 + gio/gdbus-daemon-generated.c | 4336 + gio/gdbus-daemon-generated.h | 672 + gio/gdbus-tool.c | 26 + gio/gdbusaddress.c | 219 +- gio/gdbusauthobserver.c | 4 +- gio/gdbusconnection.c | 878 +- gio/gdbusconnection.h | 10 +- gio/gdbusdaemon.c | 3 +- gio/gdbusinterfaceskeleton.c | 2 +- gio/gdbusmenumodel.c | 2 +- gio/gdbusmessage.c | 3 + gio/gdbusmethodinvocation.c | 27 +- gio/gdbusobject.c | 4 +- gio/gdbusobjectmanager.c | 8 +- gio/gdbusobjectmanagerclient.c | 5 +- gio/gdbusobjectmanagerserver.c | 31 +- gio/gdbusobjectskeleton.c | 2 +- gio/gdbusprivate.c | 197 +- gio/gdbusprivate.h | 3 +- gio/gdbusproxy.c | 272 +- gio/gdbusserver.c | 2 +- gio/gdesktopappinfo.c | 131 +- gio/gdtlsclientconnection.c | 273 + gio/gdtlsclientconnection.h | 75 + gio/gdtlsconnection.c | 975 + gio/gdtlsconnection.h | 191 + gio/gdtlsserverconnection.c | 95 + gio/gdtlsserverconnection.h | 69 + gio/gdummytlsbackend.c | 110 +- gio/gfile.c | 20 +- gio/gfileenumerator.c | 12 +- gio/gfileinfo-priv.h | 1 + gio/gfileinfo.c | 17 +- gio/gfileinfo.h | 14 + gio/gfilemonitor.c | 627 +- gio/gicon.c | 2 +- gio/ginetaddress.c | 49 +- gio/ginetsocketaddress.c | 62 +- gio/ginputstream.c | 5 +- gio/gio-autocleanups.h | 1 + gio/gio.h | 4 + gio/gio.rc | 30 + gio/gioenums.h | 82 +- gio/gioenumtypes.c | 1768 + gio/gioenumtypes.h | 171 + gio/gioerror.c | 23 + gio/giomodule.c | 92 +- gio/giostream.c | 36 +- gio/giotypes.h | 79 +- gio/glib-compile-resources.c | 23 +- gio/glib-compile-schemas.c | 50 +- gio/glistmodel.c | 5 +- gio/gliststore.c | 36 +- gio/gliststore.h | 5 + gio/glocaldirectorymonitor.c | 245 - gio/glocaldirectorymonitor.h | 84 - gio/glocalfile.c | 160 +- gio/glocalfile.h | 5 + gio/glocalfileenumerator.c | 10 +- gio/glocalfileinfo.c | 33 +- gio/glocalfilemonitor.c | 875 +- gio/glocalfilemonitor.h | 58 +- gio/gmemoryoutputstream.c | 6 +- gio/gmenu.c | 2 +- gio/gmenuexporter.c | 2 +- gio/gmenumodel.c | 4 +- gio/gnativesocketaddress.c | 160 + gio/gnativesocketaddress.h | 65 + gio/gnetworkaddress.c | 42 +- gio/gnetworkmonitor.c | 51 + gio/gnetworkmonitor.h | 3 + gio/gnetworkmonitorbase.c | 7 + gio/gnetworkmonitornetlink.c | 30 +- gio/gnetworkmonitornm.c | 49 + gio/gnetworkservice.c | 16 + gio/gnotification.c | 1 + gio/gnotificationbackend.c | 4 +- gio/goutputstream.c | 8 +- gio/gpermission.c | 14 +- gio/gpollfilemonitor.c | 38 +- gio/gpropertyaction.c | 45 +- gio/gproxyresolver.c | 1 - gio/gregistrysettingsbackend.c | 1159 +- gio/gresolver.c | 1 - gio/gresource-tool.c | 5 +- gio/gresource.c | 29 +- gio/gresourcefile.c | 58 + gio/gschema.its | 25 + gio/gschema.loc | 10 + gio/gsettings-tool.c | 98 +- gio/gsettings.c | 189 +- gio/gsettings.h | 2 +- gio/gsettingsschema.c | 47 +- gio/gsettingsschema.h | 3 + gio/gsimpleaction.c | 2 + gio/gsimpleactiongroup.c | 7 + gio/gsimpleasyncresult.c | 56 +- gio/gsimpleasyncresult.h | 50 +- gio/gsocket.c | 1740 +- gio/gsocket.h | 7 + gio/gsocketaddress.c | 6 +- gio/gsocketclient.c | 2 +- gio/gsocketconnectable.c | 31 + gio/gsocketconnectable.h | 6 + gio/gsocketconnection.c | 2 +- gio/gsocketcontrolmessage.c | 2 +- gio/gsocketlistener.c | 136 +- gio/gsocketlistener.h | 5 +- gio/gsocketservice.c | 144 +- gio/gsocks5proxy.c | 2 +- gio/gsubprocesslauncher.c | 22 +- gio/gtask.c | 152 +- gio/gtestdbus.c | 10 +- gio/gthreadedresolver.c | 2 +- gio/gthreadedsocketservice.c | 2 +- gio/gtlsbackend.c | 68 +- gio/gtlsbackend.h | 14 + gio/gtlscertificate.c | 21 +- gio/gtlsclientconnection.c | 30 + gio/gtlsclientconnection.h | 7 + gio/gtlsconnection.c | 13 +- gio/gtlsdatabase.c | 36 + gio/gtlsinteraction.c | 9 + gio/gtlsserverconnection.c | 4 + gio/gunionvolumemonitor.c | 6 +- gio/gunixinputstream.c | 1 - gio/gunixmount.c | 1 - gio/gunixmounts.c | 6 +- gio/gunixoutputstream.c | 1 - gio/gunixsocketaddress.c | 55 +- gio/gvdb/gvdb.doap | 32 - gio/gwin32appinfo.c | 5060 +- gio/gwin32appinfo.h | 4 +- gio/gwin32inputstream.c | 332 +- gio/gwin32mount.c | 1 - gio/gwin32outputstream.c | 333 +- gio/gwin32registrykey.c | 2419 + gio/gwin32registrykey.h | 283 + gio/inotify/Makefile.am | 2 - gio/inotify/Makefile.in | 1563 + gio/inotify/ginotifydirectorymonitor.c | 138 - gio/inotify/ginotifydirectorymonitor.h | 51 - gio/inotify/ginotifyfilemonitor.c | 133 +- gio/inotify/ginotifyfilemonitor.h | 4 +- gio/inotify/inotify-helper.c | 188 +- gio/inotify/inotify-kernel.c | 797 +- gio/inotify/inotify-kernel.h | 3 +- gio/inotify/inotify-missing.c | 2 +- gio/inotify/inotify-path.c | 125 +- gio/inotify/inotify-path.h | 2 +- gio/inotify/inotify-sub.c | 4 +- gio/inotify/inotify-sub.h | 1 - gio/kqueue/Makefile.am | 2 - gio/kqueue/Makefile.in | 1583 + gio/kqueue/gkqueuedirectorymonitor.c | 205 - gio/kqueue/gkqueuedirectorymonitor.h | 49 - gio/kqueue/gkqueuefilemonitor.c | 59 +- gio/kqueue/gkqueuefilemonitor.h | 4 +- gio/kqueue/kqueue-helper.c | 138 +- gio/kqueue/kqueue-helper.h | 3 +- gio/kqueue/kqueue-utils.c | 32 - gio/kqueue/kqueue-utils.h | 4 - gio/makefile.msc | 1 + gio/tests/.gitignore | 139 - gio/tests/Makefile.am | 29 +- gio/tests/Makefile.in | 4704 + gio/tests/actions.c | 31 + gio/tests/appmonitor.c | 12 +- gio/tests/async-close-output-stream.c | 9 +- gio/tests/cert-tests/cert-list.pem | 16 + gio/tests/contenttype.c | 15 +- gio/tests/converter-stream.c | 46 +- gio/tests/dbus-launch.c | 77 + gio/tests/defaultvalue.c | 2 +- gio/tests/desktop-app-info.c | 13 +- gio/tests/file.c | 2 +- gio/tests/g-file.c | 4 +- gio/tests/gapplication.c | 157 + gio/tests/gdbus-connection-loss.c | 3 +- gio/tests/gdbus-connection.c | 31 +- gio/tests/gdbus-exit-on-close.c | 12 +- gio/tests/gdbus-export.c | 68 +- gio/tests/gdbus-object-manager-example/Makefile.in | 1535 + gio/tests/gdbus-peer.c | 48 +- gio/tests/gdbus-proxy-threads.c | 8 +- gio/tests/gdbus-serialization.c | 34 +- gio/tests/gdbus-test-codegen.c | 2 +- gio/tests/gdbus-tests.c | 52 + gio/tests/gdbus-tests.h | 2 + gio/tests/gdbus-threading.c | 28 +- gio/tests/gdbus-unix-addresses.c | 170 + gio/tests/gio-du.c | 49 +- gio/tests/gschema-compile.c | 5 + gio/tests/gsettings.c | 36 +- gio/tests/gsubprocess.c | 11 +- gio/tests/gtesttlsbackend.c | 9 +- gio/tests/inet-address.c | 50 + gio/tests/live-g-file.c | 12 +- gio/tests/live-g-file.txt | 27 - gio/tests/modules/Makefile.in | 858 + gio/tests/network-address.c | 38 + gio/tests/network-monitor.c | 11 + gio/tests/plugin_resources.c | 185 + gio/tests/readwrite.c | 10 +- gio/tests/resources.c | 12 + gio/tests/schema-tests/cdata.gschema.xml | 7 - .../schema-tests/description-xmllang.gschema.xml | 13 + gio/tests/schema-tests/range-type-test.gschema.xml | 76 - .../summary-xmllang-and-attrs.gschema.xml | 13 + gio/tests/schema-tests/summary-xmllang.gschema.xml | 13 + gio/tests/services/Makefile.in | 577 + gio/tests/simple-async-result.c | 4 + gio/tests/socket-address.c | 40 + gio/tests/socket-listener.c | 155 +- gio/tests/socket-service.c | 247 + gio/tests/socket.c | 223 +- gio/tests/task.c | 91 + gio/tests/testfilemonitor.c | 667 + gio/tests/thumbnail-verification.c | 2 +- gio/tests/tls-certificate.c | 69 + gio/win32/Makefile.am | 6 +- gio/win32/Makefile.in | 1565 + gio/win32/gwin32directorymonitor.c | 244 - gio/win32/gwin32directorymonitor.h | 60 - gio/win32/gwin32filemonitor.c | 104 + gio/win32/gwin32filemonitor.h | 62 + gio/win32/gwin32fsmonitorutils.c | 425 + gio/win32/gwin32fsmonitorutils.h | 76 + gio/win32/gwinhttpfile.c | 5 +- gio/win32/makefile.msc | 35 - gio/xdgmime/.gitignore | 1 - gio/xdgmime/Makefile.in | 1574 + gio/xdgmime/xdgmimecache.c | 91 +- glib.doap | 47 - glib/.gitignore | 12 - glib/Makefile.am | 72 +- glib/Makefile.in | 3193 + glib/docs.c | 167 +- glib/garray.c | 12 +- glib/gasyncqueue.c | 100 + glib/gasyncqueue.h | 13 + glib/gatomic.c | 17 +- glib/gbacktrace.h | 2 + glib/gbitlock.c | 6 +- glib/gbytes.c | 26 +- glib/gconstructor.h | 38 +- glib/gconvert.c | 23 +- glib/gdataset.c | 17 +- glib/gdate.c | 17 +- glib/gdatetime.c | 12 +- glib/genviron.c | 19 +- glib/gerror.c | 72 +- glib/ghash.c | 71 +- glib/ghook.c | 4 +- glib/giowin32.c | 8 +- glib/gkeyfile.c | 40 +- glib/glib-autocleanups.h | 16 +- glib/glib-init.c | 12 +- glib/glib-init.h | 3 + glib/glib-private.c | 5 +- glib/glib-private.h | 3 + glib/glib.py | 4 + glib/glib.rc | 30 + glib/glibconfig.h.win32 | 256 + glib/glibconfig.h.win32.in | 18 +- glib/gmacros.h | 56 +- glib/gmain.c | 64 +- glib/gmain.h | 4 +- glib/gmarkup.c | 15 +- glib/gmem.c | 392 +- glib/gmem.h | 12 +- glib/gmessages.c | 119 +- glib/gmessages.h | 16 +- glib/gnode.h | 4 +- glib/gnulib/Makefile.am | 2 + glib/gnulib/Makefile.in | 1551 + glib/gnulib/printf-args.c | 210 +- glib/gnulib/printf-args.h | 126 +- glib/gnulib/printf-parse.c | 1003 +- glib/gnulib/printf-parse.h | 173 +- glib/gnulib/printf.c | 6 +- glib/gnulib/vasnprintf.c | 6445 +- glib/gnulib/vasnprintf.h | 68 +- glib/gnulib/verify.h | 279 + glib/gnulib/xsize.h | 101 + glib/goption.c | 12 +- glib/gpoll.h | 11 +- glib/gprintf.c | 11 +- glib/gqsort.c | 2 +- glib/gquark.c | 26 +- glib/grand.c | 6 +- glib/gregex.c | 144 +- glib/gscripttable.h | 97 +- glib/gsequence.c | 26 +- glib/gsequence.h | 2 + glib/gshell.c | 6 +- glib/gslice.c | 38 +- glib/gspawn-win32-helper-console.c | 2 + glib/gspawn-win32-helper.c | 20 +- glib/gspawn-win64-helper-console.c | 2 + glib/gspawn-win64-helper.c | 1 + glib/gspawn.c | 9 +- glib/gstdio.h | 2 +- glib/gstrfuncs.c | 108 +- glib/gstrfuncs.h | 1 + glib/gstring.c | 74 +- glib/gtester-report | 28 +- glib/gtestutils.c | 308 +- glib/gtestutils.h | 17 +- glib/gthread-posix.c | 4 +- glib/gthread.c | 24 +- glib/gthreadpool.c | 30 + glib/gthreadpool.h | 4 + glib/gtranslit.c | 2 + glib/gtrashstack.c | 63 +- glib/gtrashstack.h | 67 +- glib/gtree.c | 4 +- glib/gtypes.h | 67 +- glib/gunibreak.h | 1620 +- glib/gunichartables.h | 1853 +- glib/gunicode.h | 16 +- glib/gunidecomp.h | 53 +- glib/guniprop.c | 45 +- glib/gutf8.c | 302 +- glib/gutils.c | 105 +- glib/gutils.h | 93 +- glib/gvariant-core.c | 2 +- glib/gvariant-parser.c | 7 +- glib/gvariant.c | 13 +- glib/gversionmacros.h | 69 +- glib/gwin32.c | 123 +- glib/libcharset/.gitignore | 3 - glib/libcharset/Makefile.in | 1546 + glib/makefile.msc | 143 + glib/pcre/Makefile.am | 1 + glib/pcre/Makefile.in | 1697 + glib/pcre/pcre_version.c | 95 + glib/tests/.gitignore | 85 - glib/tests/1bit-mutex.c | 2 +- glib/tests/Makefile.am | 21 +- glib/tests/Makefile.in | 3048 + glib/tests/array-test.c | 45 +- glib/tests/asyncqueue.c | 48 + glib/tests/autoptr.c | 17 +- glib/tests/base64.c | 31 +- glib/tests/bookmarkfile.c | 27 +- glib/tests/bytes.c | 23 +- glib/tests/checksum.c | 3 +- glib/tests/cond.c | 16 +- glib/tests/date.c | 2 +- glib/tests/fileutils.c | 8 +- glib/tests/gdatetime.c | 87 +- glib/tests/gvariant.c | 3 +- glib/tests/hash.c | 4 + glib/tests/hmac.c | 3 +- glib/tests/keyfile.c | 18 +- glib/tests/malloc.c | 117 - glib/tests/markup-subparser.c | 1 + glib/tests/markups/valid-16.cdata-as-text | 42 - glib/tests/markups/valid-8.cdata-as-text | 5 - glib/tests/mutex.c | 2 +- glib/tests/option-context.c | 5 +- glib/tests/overflow.c | 199 + glib/tests/private.c | 6 +- glib/tests/queue.c | 2 +- glib/tests/rec-mutex.c | 4 +- glib/tests/regex.c | 138 +- glib/tests/rwlock.c | 2 +- glib/tests/sequence.c | 34 +- glib/tests/shell.c | 2 +- glib/tests/slice.c | 21 - glib/tests/strfuncs.c | 18 +- glib/tests/string.c | 10 +- glib/tests/testing.c | 26 + glib/tests/unicode.c | 20 +- glib/tests/utf8-performance.c | 133 +- glib/tests/utf8-validate.c | 10 + glib/tests/utils.c | 2 +- glib/update-gtranslit.py | 410 - glib/update-pcre/Makefile.in | 1354 + glib/update-pcre/ucp.patch | 834 - glib/win_iconv.c | 616 +- gmodule/.gitignore | 2 - gmodule/Makefile.in | 1650 + gmodule/gmodule.rc | 30 + gmodule/makefile.msc | 37 + gobject/.gitignore | 9 - gobject/Makefile.am | 59 +- gobject/Makefile.in | 2343 + gobject/gbinding.c | 148 +- gobject/gboxed.c | 7 +- gobject/gboxed.h | 6 +- gobject/gclosure.c | 73 +- gobject/gclosure.h | 3 +- gobject/glib-genmarshal.c | 10 +- gobject/glib-mkenums.in | 2 +- gobject/glib-types.h | 7 - gobject/gmarshal.c | 44 +- gobject/gmarshal.strings | 22 + gobject/gobject-autocleanups.h | 1 - gobject/gobject.c | 54 +- gobject/gobject.h | 12 +- gobject/gobject.rc | 30 + gobject/gobject.stp.in | 199 - gobject/gparam.c | 46 +- gobject/gparam.h | 7 +- gobject/gparamspecs.c | 44 +- gobject/gsignal.c | 130 +- gobject/gsignal.h | 3 + gobject/gsourceclosure.c | 8 +- gobject/gtype.c | 107 +- gobject/gtype.h | 73 +- gobject/gtypemodule.h | 1 + gobject/gvalue.c | 13 +- gobject/gvaluetypes.c | 2 +- gobject/makefile.msc | 83 + gobject/tests/.gitignore | 17 - gobject/tests/Makefile.am | 17 +- gobject/tests/Makefile.in | 1741 + gobject/tests/binding.c | 17 +- gobject/tests/dynamictests.c | 8 +- gobject/tests/private.c | 8 +- gobject/tests/signal-handler.c | 299 + gobject/tests/signals.c | 99 +- gobject/tests/threadtests.c | 8 +- gobject/tests/{valuearray.c => value.c} | 35 +- gthread/.gitignore | 1 - gthread/Makefile.in | 1609 + gthread/gthread.rc | 30 + gthread/makefile.msc | 26 + gtk-doc.make | 304 + install-sh | 508 + ltmain.sh | 11156 ++ m4macros/.gitignore | 6 - m4macros/Makefile.in | 1378 + m4macros/glib-gettext.m4 | 5 +- m4macros/gtk-doc.m4 | 88 + m4macros/libtool.m4 | 8388 + m4macros/ltoptions.m4 | 437 + m4macros/ltsugar.m4 | 124 + m4macros/ltversion.m4 | 23 + m4macros/lt~obsolete.m4 | 99 + missing | 215 + po/.gitignore | 3 - po/LINGUAS | 1 + po/POTFILES.in | 16 +- po/POTFILES.skip | 2 - po/README.translators | 25 - po/af.gmo | Bin 0 -> 7931 bytes po/am.gmo | Bin 0 -> 2696 bytes po/an.gmo | Bin 0 -> 99465 bytes po/ar.gmo | Bin 0 -> 46822 bytes po/as.gmo | Bin 0 -> 142849 bytes po/ast.gmo | Bin 0 -> 46631 bytes po/az.gmo | Bin 0 -> 12743 bytes po/be.gmo | Bin 0 -> 122702 bytes po/be@latin.gmo | Bin 0 -> 37359 bytes po/bg.gmo | Bin 0 -> 131836 bytes po/bg.po | 1128 +- po/bn.gmo | Bin 0 -> 72605 bytes po/bn_IN.gmo | Bin 0 -> 151174 bytes po/bs.gmo | Bin 0 -> 99185 bytes po/ca.gmo | Bin 0 -> 106228 bytes po/ca.po | 769 +- po/ca@valencia.gmo | Bin 0 -> 105797 bytes po/cs.gmo | Bin 0 -> 101256 bytes po/cs.po | 1120 +- po/cy.gmo | Bin 0 -> 27429 bytes po/da.gmo | Bin 0 -> 97825 bytes po/da.po | 1261 +- po/de.gmo | Bin 0 -> 104491 bytes po/de.po | 1140 +- po/dz.gmo | Bin 0 -> 34875 bytes po/el.gmo | Bin 0 -> 133548 bytes po/el.po | 1121 +- po/en@shaw.gmo | Bin 0 -> 69756 bytes po/en_CA.gmo | Bin 0 -> 78635 bytes po/en_GB.gmo | Bin 0 -> 88807 bytes po/eo.gmo | Bin 0 -> 86040 bytes po/es.gmo | Bin 0 -> 103798 bytes po/es.po | 1102 +- po/et.gmo | Bin 0 -> 51517 bytes po/eu.gmo | Bin 0 -> 100996 bytes po/eu.po | 1090 +- po/fa.gmo | Bin 0 -> 56429 bytes po/fi.gmo | Bin 0 -> 77578 bytes po/fi.po | 3551 +- po/fr.gmo | Bin 0 -> 108486 bytes po/fr.po | 1082 +- po/ga.gmo | Bin 0 -> 13248 bytes po/gd.gmo | Bin 0 -> 8293 bytes po/gd.po | 4416 + po/gl.gmo | Bin 0 -> 104031 bytes po/gl.po | 1142 +- po/glib20.pot | 4403 + po/gu.gmo | Bin 0 -> 144258 bytes po/he.gmo | Bin 0 -> 94339 bytes po/he.po | 1168 +- po/hi.gmo | Bin 0 -> 145670 bytes po/hr.gmo | Bin 0 -> 17441 bytes po/hu.gmo | Bin 0 -> 104880 bytes po/hu.po | 1107 +- po/hy.gmo | Bin 0 -> 91573 bytes po/id.gmo | Bin 0 -> 96846 bytes po/id.po | 1110 +- po/is.gmo | Bin 0 -> 13669 bytes po/is.po | 5561 +- po/it.gmo | Bin 0 -> 102244 bytes po/it.po | 1082 +- po/ja.gmo | Bin 0 -> 82470 bytes po/ka.gmo | Bin 0 -> 34272 bytes po/kk.gmo | Bin 0 -> 12728 bytes po/kk.po | 1155 +- po/kn.gmo | Bin 0 -> 162103 bytes po/ko.gmo | Bin 0 -> 107194 bytes po/ko.po | 1082 +- po/ku.gmo | Bin 0 -> 2868 bytes po/lt.gmo | Bin 0 -> 100136 bytes po/lt.po | 1141 +- po/lv.gmo | Bin 0 -> 100334 bytes po/lv.po | 1248 +- po/mai.gmo | Bin 0 -> 43284 bytes po/mg.gmo | Bin 0 -> 19620 bytes po/mk.gmo | Bin 0 -> 48283 bytes po/ml.gmo | Bin 0 -> 96980 bytes po/mn.gmo | Bin 0 -> 19212 bytes po/mr.gmo | Bin 0 -> 145093 bytes po/ms.gmo | Bin 0 -> 12052 bytes po/nb.gmo | Bin 0 -> 96773 bytes po/nb.po | 1075 +- po/nds.gmo | Bin 0 -> 6479 bytes po/ne.gmo | Bin 0 -> 25834 bytes po/nl.gmo | Bin 0 -> 64525 bytes po/nn.gmo | Bin 0 -> 36300 bytes po/oc.gmo | Bin 0 -> 106085 bytes po/oc.po | 6223 +- po/or.gmo | Bin 0 -> 152122 bytes po/pa.gmo | Bin 0 -> 137866 bytes po/pl.gmo | Bin 0 -> 105293 bytes po/pl.po | 1621 +- po/ps.gmo | Bin 0 -> 11631 bytes po/pt.gmo | Bin 0 -> 100902 bytes po/pt.po | 2185 +- po/pt_BR.gmo | Bin 0 -> 101187 bytes po/pt_BR.po | 1597 +- po/ro.gmo | Bin 0 -> 80425 bytes po/ru.gmo | Bin 0 -> 132395 bytes po/ru.po | 1131 +- po/rw.gmo | Bin 0 -> 2238 bytes po/si.gmo | Bin 0 -> 11420 bytes po/sk.gmo | Bin 0 -> 102396 bytes po/sk.po | 1688 +- po/sl.gmo | Bin 0 -> 98988 bytes po/sl.po | 1077 +- po/sq.gmo | Bin 0 -> 38153 bytes po/sr.gmo | Bin 0 -> 130111 bytes po/sr.po | 1165 +- po/sr@ije.gmo | Bin 0 -> 15673 bytes po/sr@latin.gmo | Bin 0 -> 101517 bytes po/sr@latin.po | 1165 +- po/sv.gmo | Bin 0 -> 99317 bytes po/sv.po | 1094 +- po/ta.gmo | Bin 0 -> 159502 bytes po/te.gmo | Bin 0 -> 150827 bytes po/tg.gmo | Bin 0 -> 3678 bytes po/th.gmo | Bin 0 -> 148843 bytes po/th.po | 1314 +- po/tl.gmo | Bin 0 -> 17922 bytes po/tr.gmo | Bin 0 -> 98462 bytes po/tr.po | 2278 +- po/tt.gmo | Bin 0 -> 7115 bytes po/ug.gmo | Bin 0 -> 122949 bytes po/uk.gmo | Bin 0 -> 128539 bytes po/vi.gmo | Bin 0 -> 107570 bytes po/vi.po | 1159 +- po/wa.gmo | Bin 0 -> 6389 bytes po/xh.gmo | Bin 0 -> 15991 bytes po/yi.gmo | Bin 0 -> 15918 bytes po/zh_CN.gmo | Bin 0 -> 91081 bytes po/zh_CN.po | 1238 +- po/zh_HK.gmo | Bin 0 -> 93404 bytes po/zh_TW.gmo | Bin 0 -> 94170 bytes po/zh_TW.po | 1114 +- py-compile | 170 + test-driver | 148 + tests/.gitignore | 78 - tests/Makefile.in | 2387 + tests/asyncqueue-test.c | 2 +- tests/casefold.txt | 143 +- tests/casemap.txt | 290 +- tests/gio-ls.c | 114 - tests/gobject/.gitignore | 15 - tests/gobject/Makefile.am | 20 +- tests/gobject/Makefile.in | 1770 + tests/gobject/ifacecheck.c | 163 - tests/gobject/ifaceinherit.c | 230 - tests/gobject/ifaceinit.c | 421 - tests/gobject/run-performance.sh | 6 - tests/gobject/testgobject.c | 427 - tests/gobject/testmarshal.c | 169 + tests/gobject/testmarshal.h | 36 + tests/makefile.msc | 105 + tests/refcount/Makefile.in | 1761 + tests/testglib.c | 184 +- tests/unicode-encoding.c | 33 +- win32-fixup.pl | 41 - 1385 files changed, 751351 insertions(+), 50283 deletions(-) delete mode 100644 .dir-locals.el delete mode 100644 .gitignore create mode 100644 ChangeLog create mode 100644 INSTALL create mode 100644 Makefile.in create mode 100644 README create mode 100644 aclocal.m4 create mode 100644 build/Makefile.in create mode 100644 build/Makefile.msvcproj create mode 100644 build/win32/Makefile.in create mode 100644 build/win32/dirent/Makefile.in create mode 100644 build/win32/glibpc.py create mode 100644 build/win32/pc_base.py delete mode 100644 build/win32/process_in_win32.py create mode 100644 build/win32/replace.py delete mode 100644 build/win32/setup.py delete mode 100644 build/win32/vs10/.gitignore create mode 100644 build/win32/vs10/Makefile.in create mode 100644 build/win32/vs10/gio.vcxproj create mode 100644 build/win32/vs10/gio.vcxproj.filters create mode 100644 build/win32/vs10/glib-compile-resources.vcxproj.filtersin create mode 100644 build/win32/vs10/glib-compile-resources.vcxprojin create mode 100644 build/win32/vs10/glib-compile-schemas.vcxproj.filtersin create mode 100644 build/win32/vs10/glib-compile-schemas.vcxprojin create mode 100644 build/win32/vs10/glib-install.propsin create mode 100644 build/win32/vs10/glib-install.vcxproj.filters create mode 100644 build/win32/vs10/glib-version-paths.props.in create mode 100644 build/win32/vs10/glib.vcxproj create mode 100644 build/win32/vs10/glib.vcxproj.filters create mode 100644 build/win32/vs10/gobject.vcxproj create mode 100644 build/win32/vs10/gobject.vcxproj.filters delete mode 100644 build/win32/vs11/.gitignore create mode 100644 build/win32/vs11/Makefile.in create mode 100644 build/win32/vs11/README.txt create mode 100644 build/win32/vs11/gdbus.vcxproj create mode 100644 build/win32/vs11/gdbus.vcxproj.filters create mode 100644 build/win32/vs11/gio-querymodules.vcxproj create mode 100644 build/win32/vs11/gio-querymodules.vcxproj.filters create mode 100644 build/win32/vs11/gio.vcxproj create mode 100644 build/win32/vs11/gio.vcxproj.filters create mode 100644 build/win32/vs11/glib-build-defines.props create mode 100644 build/win32/vs11/glib-compile-resources.vcxproj create mode 100644 build/win32/vs11/glib-compile-resources.vcxproj.filters create mode 100644 build/win32/vs11/glib-compile-schemas.vcxproj create mode 100644 build/win32/vs11/glib-compile-schemas.vcxproj.filters create mode 100644 build/win32/vs11/glib-gen-srcs.props create mode 100644 build/win32/vs11/glib-genmarshal.vcxproj create mode 100644 build/win32/vs11/glib-genmarshal.vcxproj.filters create mode 100644 build/win32/vs11/glib-install.props create mode 100644 build/win32/vs11/glib-install.vcxproj create mode 100644 build/win32/vs11/glib-install.vcxproj.filters create mode 100644 build/win32/vs11/glib-version-paths.props create mode 100644 build/win32/vs11/glib.sln create mode 100644 build/win32/vs11/glib.vcxproj create mode 100644 build/win32/vs11/glib.vcxproj.filters create mode 100644 build/win32/vs11/gmodule.vcxproj create mode 100644 build/win32/vs11/gmodule.vcxproj.filters create mode 100644 build/win32/vs11/gobject.vcxproj create mode 100644 build/win32/vs11/gobject.vcxproj.filters create mode 100644 build/win32/vs11/gresource.vcxproj create mode 100644 build/win32/vs11/gresource.vcxproj.filters create mode 100644 build/win32/vs11/gsettings.vcxproj create mode 100644 build/win32/vs11/gsettings.vcxproj.filters create mode 100644 build/win32/vs11/gspawn-win32-helper-console.vcxproj create mode 100644 build/win32/vs11/gspawn-win32-helper-console.vcxproj.filters create mode 100644 build/win32/vs11/gspawn-win32-helper.vcxproj create mode 100644 build/win32/vs11/gspawn-win32-helper.vcxproj.filters create mode 100644 build/win32/vs11/gthread.vcxproj create mode 100644 build/win32/vs11/gthread.vcxproj.filters delete mode 100644 build/win32/vs12/.gitignore create mode 100644 build/win32/vs12/Makefile.in create mode 100644 build/win32/vs12/README.txt create mode 100644 build/win32/vs12/gdbus.vcxproj create mode 100644 build/win32/vs12/gdbus.vcxproj.filters create mode 100644 build/win32/vs12/gio-querymodules.vcxproj create mode 100644 build/win32/vs12/gio-querymodules.vcxproj.filters create mode 100644 build/win32/vs12/gio.vcxproj create mode 100644 build/win32/vs12/gio.vcxproj.filters create mode 100644 build/win32/vs12/glib-build-defines.props create mode 100644 build/win32/vs12/glib-compile-resources.vcxproj create mode 100644 build/win32/vs12/glib-compile-resources.vcxproj.filters create mode 100644 build/win32/vs12/glib-compile-schemas.vcxproj create mode 100644 build/win32/vs12/glib-compile-schemas.vcxproj.filters create mode 100644 build/win32/vs12/glib-gen-srcs.props create mode 100644 build/win32/vs12/glib-genmarshal.vcxproj create mode 100644 build/win32/vs12/glib-genmarshal.vcxproj.filters create mode 100644 build/win32/vs12/glib-install.props create mode 100644 build/win32/vs12/glib-install.vcxproj create mode 100644 build/win32/vs12/glib-install.vcxproj.filters create mode 100644 build/win32/vs12/glib-version-paths.props create mode 100644 build/win32/vs12/glib.sln create mode 100644 build/win32/vs12/glib.vcxproj create mode 100644 build/win32/vs12/glib.vcxproj.filters create mode 100644 build/win32/vs12/gmodule.vcxproj create mode 100644 build/win32/vs12/gmodule.vcxproj.filters create mode 100644 build/win32/vs12/gobject.vcxproj create mode 100644 build/win32/vs12/gobject.vcxproj.filters create mode 100644 build/win32/vs12/gresource.vcxproj create mode 100644 build/win32/vs12/gresource.vcxproj.filters create mode 100644 build/win32/vs12/gsettings.vcxproj create mode 100644 build/win32/vs12/gsettings.vcxproj.filters create mode 100644 build/win32/vs12/gspawn-win32-helper-console.vcxproj create mode 100644 build/win32/vs12/gspawn-win32-helper-console.vcxproj.filters create mode 100644 build/win32/vs12/gspawn-win32-helper.vcxproj create mode 100644 build/win32/vs12/gspawn-win32-helper.vcxproj.filters create mode 100644 build/win32/vs12/gthread.vcxproj create mode 100644 build/win32/vs12/gthread.vcxproj.filters create mode 100644 build/win32/vs14/Makefile.am create mode 100644 build/win32/vs14/Makefile.in create mode 100644 build/win32/vs14/README.txt create mode 100644 build/win32/vs14/gdbus.vcxproj create mode 100644 build/win32/vs14/gdbus.vcxproj.filters create mode 100644 build/win32/vs14/gio-querymodules.vcxproj create mode 100644 build/win32/vs14/gio-querymodules.vcxproj.filters create mode 100644 build/win32/vs14/gio.vcxproj create mode 100644 build/win32/vs14/gio.vcxproj.filters create mode 100644 build/win32/vs14/glib-build-defines.props create mode 100644 build/win32/vs14/glib-compile-resources.vcxproj create mode 100644 build/win32/vs14/glib-compile-resources.vcxproj.filters create mode 100644 build/win32/vs14/glib-compile-schemas.vcxproj create mode 100644 build/win32/vs14/glib-compile-schemas.vcxproj.filters create mode 100644 build/win32/vs14/glib-gen-srcs.props create mode 100644 build/win32/vs14/glib-genmarshal.vcxproj create mode 100644 build/win32/vs14/glib-genmarshal.vcxproj.filters create mode 100644 build/win32/vs14/glib-install.props create mode 100644 build/win32/vs14/glib-install.vcxproj create mode 100644 build/win32/vs14/glib-install.vcxproj.filters create mode 100644 build/win32/vs14/glib-version-paths.props create mode 100644 build/win32/vs14/glib.sln create mode 100644 build/win32/vs14/glib.vcxproj create mode 100644 build/win32/vs14/glib.vcxproj.filters create mode 100644 build/win32/vs14/gmodule.vcxproj create mode 100644 build/win32/vs14/gmodule.vcxproj.filters create mode 100644 build/win32/vs14/gobject.vcxproj create mode 100644 build/win32/vs14/gobject.vcxproj.filters create mode 100644 build/win32/vs14/gresource.vcxproj create mode 100644 build/win32/vs14/gresource.vcxproj.filters create mode 100644 build/win32/vs14/gsettings.vcxproj create mode 100644 build/win32/vs14/gsettings.vcxproj.filters create mode 100644 build/win32/vs14/gspawn-win32-helper-console.vcxproj create mode 100644 build/win32/vs14/gspawn-win32-helper-console.vcxproj.filters create mode 100644 build/win32/vs14/gspawn-win32-helper.vcxproj create mode 100644 build/win32/vs14/gspawn-win32-helper.vcxproj.filters create mode 100644 build/win32/vs14/gthread.vcxproj create mode 100644 build/win32/vs14/gthread.vcxproj.filters delete mode 100644 build/win32/vs8/Makefile.am delete mode 100644 build/win32/vs8/README delete mode 100644 build/win32/vs8/gio.vcproj delete mode 100644 build/win32/vs8/glib-genmarshal.vcproj delete mode 100644 build/win32/vs8/glib.sln delete mode 100644 build/win32/vs8/glib.vcproj delete mode 100644 build/win32/vs8/gmodule.vcproj delete mode 100644 build/win32/vs8/gobject.vcproj delete mode 100644 build/win32/vs8/gspawn-win32-helper-console.vcproj delete mode 100644 build/win32/vs8/gspawn-win32-helper.vcproj delete mode 100644 build/win32/vs8/gthread.vcproj delete mode 100644 build/win32/vs9/.gitignore create mode 100644 build/win32/vs9/Makefile.in create mode 100644 build/win32/vs9/gio.vcproj create mode 100644 build/win32/vs9/glib-compile-resources.vcprojin create mode 100644 build/win32/vs9/glib-compile-schemas.vcprojin create mode 100644 build/win32/vs9/glib-install.vspropsin create mode 100644 build/win32/vs9/glib-version-paths.vsprops.in create mode 100644 build/win32/vs9/glib.vcproj create mode 100644 build/win32/vs9/gobject.vcproj create mode 100755 compile create mode 100755 config.guess create mode 100644 config.h.in create mode 100644 config.h.win32 create mode 100755 config.sub create mode 100755 configure create mode 100755 depcomp create mode 100644 docs/Makefile.in delete mode 100644 docs/reference/.gitignore create mode 100644 docs/reference/Makefile.in delete mode 100644 docs/reference/gio/.gitignore create mode 100644 docs/reference/gio/Makefile.in create mode 100644 docs/reference/gio/gapplication.1 create mode 100644 docs/reference/gio/gdbus-codegen.1 delete mode 100644 docs/reference/gio/gdbus-object-manager-example/.gitignore delete mode 100644 docs/reference/gio/gdbus-object-manager-example/Makefile.am delete mode 100644 docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example-docs.xml delete mode 100644 docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example-sections.txt delete mode 100644 docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example.types create mode 100644 docs/reference/gio/gdbus.1 create mode 100644 docs/reference/gio/gio-overrides.txt create mode 100644 docs/reference/gio/gio-querymodules.1 create mode 100644 docs/reference/gio/glib-compile-resources.1 create mode 100644 docs/reference/gio/glib-compile-schemas.1 create mode 100644 docs/reference/gio/gresource.1 create mode 100644 docs/reference/gio/gsettings.1 delete mode 100644 docs/reference/gio/gvfs-overview.odg create mode 100644 docs/reference/gio/html/GAction.html create mode 100644 docs/reference/gio/html/GActionGroup.html create mode 100644 docs/reference/gio/html/GActionMap.html create mode 100644 docs/reference/gio/html/GAppInfo.html create mode 100644 docs/reference/gio/html/GAppInfoMonitor.html create mode 100644 docs/reference/gio/html/GApplication.html create mode 100644 docs/reference/gio/html/GApplicationCommandLine.html create mode 100644 docs/reference/gio/html/GAsyncInitable.html create mode 100644 docs/reference/gio/html/GAsyncResult.html create mode 100644 docs/reference/gio/html/GBufferedInputStream.html create mode 100644 docs/reference/gio/html/GBufferedOutputStream.html create mode 100644 docs/reference/gio/html/GBytesIcon.html create mode 100644 docs/reference/gio/html/GCancellable.html create mode 100644 docs/reference/gio/html/GCharsetConverter.html create mode 100644 docs/reference/gio/html/GConverter.html create mode 100644 docs/reference/gio/html/GCredentials.html create mode 100644 docs/reference/gio/html/GDBusActionGroup.html create mode 100644 docs/reference/gio/html/GDBusAuthObserver.html create mode 100644 docs/reference/gio/html/GDBusConnection.html create mode 100644 docs/reference/gio/html/GDBusInterface.html create mode 100644 docs/reference/gio/html/GDBusInterfaceSkeleton.html create mode 100644 docs/reference/gio/html/GDBusMenuModel.html create mode 100644 docs/reference/gio/html/GDBusMessage.html create mode 100644 docs/reference/gio/html/GDBusMethodInvocation.html create mode 100644 docs/reference/gio/html/GDBusObject.html create mode 100644 docs/reference/gio/html/GDBusObjectManager.html create mode 100644 docs/reference/gio/html/GDBusObjectManagerClient.html create mode 100644 docs/reference/gio/html/GDBusObjectManagerServer.html create mode 100644 docs/reference/gio/html/GDBusObjectProxy.html create mode 100644 docs/reference/gio/html/GDBusObjectSkeleton.html create mode 100644 docs/reference/gio/html/GDBusProxy.html create mode 100644 docs/reference/gio/html/GDBusServer.html create mode 100644 docs/reference/gio/html/GDataInputStream.html create mode 100644 docs/reference/gio/html/GDataOutputStream.html create mode 100644 docs/reference/gio/html/GDatagramBased.html create mode 100644 docs/reference/gio/html/GDrive.html create mode 100644 docs/reference/gio/html/GDtlsClientConnection.html create mode 100644 docs/reference/gio/html/GDtlsConnection.html create mode 100644 docs/reference/gio/html/GDtlsServerConnection.html create mode 100644 docs/reference/gio/html/GEmblem.html create mode 100644 docs/reference/gio/html/GEmblemedIcon.html create mode 100644 docs/reference/gio/html/GFile.html create mode 100644 docs/reference/gio/html/GFileDescriptorBased.html create mode 100644 docs/reference/gio/html/GFileEnumerator.html create mode 100644 docs/reference/gio/html/GFileIOStream.html create mode 100644 docs/reference/gio/html/GFileIcon.html create mode 100644 docs/reference/gio/html/GFileInfo.html create mode 100644 docs/reference/gio/html/GFileInputStream.html create mode 100644 docs/reference/gio/html/GFileMonitor.html create mode 100644 docs/reference/gio/html/GFileOutputStream.html create mode 100644 docs/reference/gio/html/GFilenameCompleter.html create mode 100644 docs/reference/gio/html/GFilterInputStream.html create mode 100644 docs/reference/gio/html/GFilterOutputStream.html create mode 100644 docs/reference/gio/html/GIOModule.html create mode 100644 docs/reference/gio/html/GIOStream.html create mode 100644 docs/reference/gio/html/GIcon.html create mode 100644 docs/reference/gio/html/GInetAddress.html create mode 100644 docs/reference/gio/html/GInetAddressMask.html create mode 100644 docs/reference/gio/html/GInetSocketAddress.html create mode 100644 docs/reference/gio/html/GInitable.html create mode 100644 docs/reference/gio/html/GInputStream.html create mode 100644 docs/reference/gio/html/GListModel.html create mode 100644 docs/reference/gio/html/GListStore.html create mode 100644 docs/reference/gio/html/GLoadableIcon.html create mode 100644 docs/reference/gio/html/GMemoryInputStream.html create mode 100644 docs/reference/gio/html/GMemoryOutputStream.html create mode 100644 docs/reference/gio/html/GMenu.html create mode 100644 docs/reference/gio/html/GMenuModel.html create mode 100644 docs/reference/gio/html/GMount.html create mode 100644 docs/reference/gio/html/GMountOperation.html create mode 100644 docs/reference/gio/html/GNetworkAddress.html create mode 100644 docs/reference/gio/html/GNetworkMonitor.html create mode 100644 docs/reference/gio/html/GNetworkService.html create mode 100644 docs/reference/gio/html/GNotification.html create mode 100644 docs/reference/gio/html/GOutputStream.html create mode 100644 docs/reference/gio/html/GPermission.html create mode 100644 docs/reference/gio/html/GPollableInputStream.html create mode 100644 docs/reference/gio/html/GPollableOutputStream.html create mode 100644 docs/reference/gio/html/GPropertyAction.html create mode 100644 docs/reference/gio/html/GProxy.html create mode 100644 docs/reference/gio/html/GProxyAddress.html create mode 100644 docs/reference/gio/html/GProxyResolver.html create mode 100644 docs/reference/gio/html/GRemoteActionGroup.html create mode 100644 docs/reference/gio/html/GResolver.html create mode 100644 docs/reference/gio/html/GResource.html create mode 100644 docs/reference/gio/html/GSeekable.html create mode 100644 docs/reference/gio/html/GSettings.html create mode 100644 docs/reference/gio/html/GSettingsBackend.html create mode 100644 docs/reference/gio/html/GSimpleAction.html create mode 100644 docs/reference/gio/html/GSimpleActionGroup.html create mode 100644 docs/reference/gio/html/GSimpleAsyncResult.html create mode 100644 docs/reference/gio/html/GSimpleIOStream.html create mode 100644 docs/reference/gio/html/GSimplePermission.html create mode 100644 docs/reference/gio/html/GSimpleProxyResolver.html create mode 100644 docs/reference/gio/html/GSocket.html create mode 100644 docs/reference/gio/html/GSocketAddress.html create mode 100644 docs/reference/gio/html/GSocketClient.html create mode 100644 docs/reference/gio/html/GSocketConnectable.html create mode 100644 docs/reference/gio/html/GSocketConnection.html create mode 100644 docs/reference/gio/html/GSocketControlMessage.html create mode 100644 docs/reference/gio/html/GSocketListener.html create mode 100644 docs/reference/gio/html/GSocketService.html create mode 100644 docs/reference/gio/html/GSrvTarget.html create mode 100644 docs/reference/gio/html/GSubprocess.html create mode 100644 docs/reference/gio/html/GSubprocessLauncher.html create mode 100644 docs/reference/gio/html/GTask.html create mode 100644 docs/reference/gio/html/GTcpConnection.html create mode 100644 docs/reference/gio/html/GTcpWrapperConnection.html create mode 100644 docs/reference/gio/html/GTestDBus.html create mode 100644 docs/reference/gio/html/GThemedIcon.html create mode 100644 docs/reference/gio/html/GThreadedSocketService.html create mode 100644 docs/reference/gio/html/GTlsBackend.html create mode 100644 docs/reference/gio/html/GTlsCertificate.html create mode 100644 docs/reference/gio/html/GTlsClientConnection.html create mode 100644 docs/reference/gio/html/GTlsConnection.html create mode 100644 docs/reference/gio/html/GTlsDatabase.html create mode 100644 docs/reference/gio/html/GTlsFileDatabase.html create mode 100644 docs/reference/gio/html/GTlsInteraction.html create mode 100644 docs/reference/gio/html/GTlsPassword.html create mode 100644 docs/reference/gio/html/GTlsServerConnection.html create mode 100644 docs/reference/gio/html/GUnixConnection.html create mode 100644 docs/reference/gio/html/GUnixCredentialsMessage.html create mode 100644 docs/reference/gio/html/GUnixFDList.html create mode 100644 docs/reference/gio/html/GUnixFDMessage.html create mode 100644 docs/reference/gio/html/GUnixInputStream.html create mode 100644 docs/reference/gio/html/GUnixOutputStream.html create mode 100644 docs/reference/gio/html/GUnixSocketAddress.html create mode 100644 docs/reference/gio/html/GVfs.html create mode 100644 docs/reference/gio/html/GVolume.html create mode 100644 docs/reference/gio/html/GVolumeMonitor.html create mode 100644 docs/reference/gio/html/GZlibCompressor.html create mode 100644 docs/reference/gio/html/GZlibDecompressor.html create mode 100644 docs/reference/gio/html/annotation-glossary.html create mode 100644 docs/reference/gio/html/api-index-2-18.html create mode 100644 docs/reference/gio/html/api-index-2-20.html create mode 100644 docs/reference/gio/html/api-index-2-22.html create mode 100644 docs/reference/gio/html/api-index-2-24.html create mode 100644 docs/reference/gio/html/api-index-2-26.html create mode 100644 docs/reference/gio/html/api-index-2-28.html create mode 100644 docs/reference/gio/html/api-index-2-30.html create mode 100644 docs/reference/gio/html/api-index-2-32.html create mode 100644 docs/reference/gio/html/api-index-2-34.html create mode 100644 docs/reference/gio/html/api-index-2-36.html create mode 100644 docs/reference/gio/html/api-index-2-38.html create mode 100644 docs/reference/gio/html/api-index-2-40.html create mode 100644 docs/reference/gio/html/api-index-2-42.html create mode 100644 docs/reference/gio/html/api-index-2-44.html create mode 100644 docs/reference/gio/html/api-index-2-46.html create mode 100644 docs/reference/gio/html/api-index-2-48.html create mode 100644 docs/reference/gio/html/api-index-deprecated.html create mode 100644 docs/reference/gio/html/api-index-full.html create mode 100644 docs/reference/gio/html/application.html create mode 100644 docs/reference/gio/html/async.html create mode 100644 docs/reference/gio/html/ch01.html create mode 100644 docs/reference/gio/html/ch02.html create mode 100644 docs/reference/gio/html/ch03.html create mode 100644 docs/reference/gio/html/ch32.html create mode 100644 docs/reference/gio/html/ch33.html create mode 100644 docs/reference/gio/html/ch33s02.html create mode 100644 docs/reference/gio/html/ch33s03.html create mode 100644 docs/reference/gio/html/ch34.html create mode 100644 docs/reference/gio/html/ch34s02.html create mode 100644 docs/reference/gio/html/ch34s03.html create mode 100644 docs/reference/gio/html/ch34s04.html create mode 100644 docs/reference/gio/html/ch34s05.html create mode 100644 docs/reference/gio/html/ch34s06.html create mode 100644 docs/reference/gio/html/ch34s07.html create mode 100644 docs/reference/gio/html/ch35.html create mode 100644 docs/reference/gio/html/ch35s02.html create mode 100644 docs/reference/gio/html/ch35s03.html create mode 100644 docs/reference/gio/html/ch35s04.html create mode 100644 docs/reference/gio/html/conversion.html create mode 100644 docs/reference/gio/html/data-models.html create mode 100644 docs/reference/gio/html/extending-gio.html create mode 100644 docs/reference/gio/html/extending.html create mode 100644 docs/reference/gio/html/failable_initialization.html create mode 100644 docs/reference/gio/html/file_mon.html create mode 100644 docs/reference/gio/html/file_ops.html create mode 100644 docs/reference/gio/html/gapplication-tool.html create mode 100644 docs/reference/gio/html/gdbus-codegen.html create mode 100644 docs/reference/gio/html/gdbus-convenience.html create mode 100644 docs/reference/gio/html/gdbus-example-gdbus-codegen.html create mode 100644 docs/reference/gio/html/gdbus-lowlevel.html create mode 100644 docs/reference/gio/html/gdbus.html create mode 100644 docs/reference/gio/html/gio-D-Bus-Addresses.html create mode 100644 docs/reference/gio/html/gio-D-Bus-Introspection-Data.html create mode 100644 docs/reference/gio/html/gio-D-Bus-Utilities.html create mode 100644 docs/reference/gio/html/gio-Desktop-file-based-GAppInfo.html create mode 100644 docs/reference/gio/html/gio-Extension-Points.html create mode 100644 docs/reference/gio/html/gio-GActionGroup-exporter.html create mode 100644 docs/reference/gio/html/gio-GContentType.html create mode 100644 docs/reference/gio/html/gio-GConverterInputstream.html create mode 100644 docs/reference/gio/html/gio-GConverterOutputstream.html create mode 100644 docs/reference/gio/html/gio-GDBusError.html create mode 100644 docs/reference/gio/html/gio-GFileAttribute.html create mode 100644 docs/reference/gio/html/gio-GIOError.html create mode 100644 docs/reference/gio/html/gio-GIOScheduler.html create mode 100644 docs/reference/gio/html/gio-GMenuModel-exporter.html create mode 100644 docs/reference/gio/html/gio-GSettingsSchema-GSettingsSchemaSource.html create mode 100644 docs/reference/gio/html/gio-GWin32InputStream.html create mode 100644 docs/reference/gio/html/gio-GWin32OutputStream.html create mode 100644 docs/reference/gio/html/gio-GWin32RegistryKey.html create mode 100644 docs/reference/gio/html/gio-Owning-Bus-Names.html create mode 100644 docs/reference/gio/html/gio-TLS-Overview.html create mode 100644 docs/reference/gio/html/gio-Unix-Mounts.html create mode 100644 docs/reference/gio/html/gio-Watching-Bus-Names.html create mode 100644 docs/reference/gio/html/gio-gnetworking.h.html create mode 100644 docs/reference/gio/html/gio-gpollableutils.html create mode 100644 docs/reference/gio/html/gio-hierarchy.html create mode 100644 docs/reference/gio/html/gio-querymodules.html create mode 100644 docs/reference/gio/html/gio.devhelp2 create mode 100644 docs/reference/gio/html/glib-compile-resources.html create mode 100644 docs/reference/gio/html/glib-compile-schemas.html create mode 100644 docs/reference/gio/html/gresource-tool.html create mode 100644 docs/reference/gio/html/gsettings-tool.html create mode 100644 docs/reference/gio/html/gvfs-overview.png create mode 100644 docs/reference/gio/html/highlevel-socket.html create mode 100644 docs/reference/gio/html/home.png create mode 100644 docs/reference/gio/html/icons.html create mode 100644 docs/reference/gio/html/index.html create mode 100644 docs/reference/gio/html/index.sgml create mode 100644 docs/reference/gio/html/left-insensitive.png create mode 100644 docs/reference/gio/html/left.png create mode 100644 docs/reference/gio/html/menu-example.png create mode 100644 docs/reference/gio/html/menu-model.png create mode 100644 docs/reference/gio/html/migrating.html create mode 100644 docs/reference/gio/html/networking.html create mode 100644 docs/reference/gio/html/permissions.html create mode 100644 docs/reference/gio/html/pt01.html create mode 100644 docs/reference/gio/html/pt02.html create mode 100644 docs/reference/gio/html/registry.html create mode 100644 docs/reference/gio/html/resolver.html create mode 100644 docs/reference/gio/html/resources.html create mode 100644 docs/reference/gio/html/right-insensitive.png create mode 100644 docs/reference/gio/html/right.png create mode 100644 docs/reference/gio/html/running-gio-apps.html create mode 100644 docs/reference/gio/html/settings.html create mode 100644 docs/reference/gio/html/streaming.html create mode 100644 docs/reference/gio/html/style.css create mode 100644 docs/reference/gio/html/subprocesses.html create mode 100644 docs/reference/gio/html/testing.html create mode 100644 docs/reference/gio/html/tls.html create mode 100644 docs/reference/gio/html/tools.html create mode 100644 docs/reference/gio/html/types.html create mode 100644 docs/reference/gio/html/up-insensitive.png create mode 100644 docs/reference/gio/html/up.png create mode 100644 docs/reference/gio/html/utils.html create mode 100644 docs/reference/gio/html/volume_mon.html create mode 100644 docs/reference/gio/version.xml create mode 100644 docs/reference/glib/Makefile.in create mode 100644 docs/reference/glib/glib-gettextize.1 create mode 100644 docs/reference/glib/gtester-report.1 create mode 100644 docs/reference/glib/gtester.1 create mode 100644 docs/reference/glib/html/Sorted_binary_tree_breadth-first_traversal.svg create mode 100644 docs/reference/glib/html/Sorted_binary_tree_inorder.svg create mode 100644 docs/reference/glib/html/Sorted_binary_tree_postorder.svg create mode 100644 docs/reference/glib/html/Sorted_binary_tree_preorder.svg create mode 100644 docs/reference/glib/html/annotation-glossary.html create mode 100644 docs/reference/glib/html/api-index-2-10.html create mode 100644 docs/reference/glib/html/api-index-2-12.html create mode 100644 docs/reference/glib/html/api-index-2-14.html create mode 100644 docs/reference/glib/html/api-index-2-16.html create mode 100644 docs/reference/glib/html/api-index-2-18.html create mode 100644 docs/reference/glib/html/api-index-2-2.html create mode 100644 docs/reference/glib/html/api-index-2-20.html create mode 100644 docs/reference/glib/html/api-index-2-22.html create mode 100644 docs/reference/glib/html/api-index-2-24.html create mode 100644 docs/reference/glib/html/api-index-2-26.html create mode 100644 docs/reference/glib/html/api-index-2-28.html create mode 100644 docs/reference/glib/html/api-index-2-30.html create mode 100644 docs/reference/glib/html/api-index-2-32.html create mode 100644 docs/reference/glib/html/api-index-2-34.html create mode 100644 docs/reference/glib/html/api-index-2-36.html create mode 100644 docs/reference/glib/html/api-index-2-38.html create mode 100644 docs/reference/glib/html/api-index-2-4.html create mode 100644 docs/reference/glib/html/api-index-2-40.html create mode 100644 docs/reference/glib/html/api-index-2-42.html create mode 100644 docs/reference/glib/html/api-index-2-44.html create mode 100644 docs/reference/glib/html/api-index-2-46.html create mode 100644 docs/reference/glib/html/api-index-2-48.html create mode 100644 docs/reference/glib/html/api-index-2-6.html create mode 100644 docs/reference/glib/html/api-index-2-8.html create mode 100644 docs/reference/glib/html/api-index-deprecated.html create mode 100644 docs/reference/glib/html/api-index-full.html create mode 100644 docs/reference/glib/html/deprecated.html create mode 100644 docs/reference/glib/html/file-name-encodings.png create mode 100644 docs/reference/glib/html/glib-Arrays.html create mode 100644 docs/reference/glib/html/glib-Asynchronous-Queues.html create mode 100644 docs/reference/glib/html/glib-Atomic-Operations.html create mode 100644 docs/reference/glib/html/glib-Automatic-String-Completion.html create mode 100644 docs/reference/glib/html/glib-Balanced-Binary-Trees.html create mode 100644 docs/reference/glib/html/glib-Base64-Encoding.html create mode 100644 docs/reference/glib/html/glib-Basic-Types.html create mode 100644 docs/reference/glib/html/glib-Bookmark-file-parser.html create mode 100644 docs/reference/glib/html/glib-Bounds-checked-integer-arithmetic.html create mode 100644 docs/reference/glib/html/glib-Byte-Arrays.html create mode 100644 docs/reference/glib/html/glib-Byte-Order-Macros.html create mode 100644 docs/reference/glib/html/glib-Caches.html create mode 100644 docs/reference/glib/html/glib-Character-Set-Conversion.html create mode 100644 docs/reference/glib/html/glib-Commandline-option-parser.html create mode 100644 docs/reference/glib/html/glib-Data-Checksums.html create mode 100644 docs/reference/glib/html/glib-Data-HMACs.html create mode 100644 docs/reference/glib/html/glib-Datasets.html create mode 100644 docs/reference/glib/html/glib-Date-and-Time-Functions.html create mode 100644 docs/reference/glib/html/glib-Deprecated-Thread-APIs.html create mode 100644 docs/reference/glib/html/glib-Double-ended-Queues.html create mode 100644 docs/reference/glib/html/glib-Doubly-Linked-Lists.html create mode 100644 docs/reference/glib/html/glib-Dynamic-Loading-of-Modules.html create mode 100644 docs/reference/glib/html/glib-Error-Reporting.html create mode 100644 docs/reference/glib/html/glib-File-Utilities.html create mode 100644 docs/reference/glib/html/glib-GDateTime.html create mode 100644 docs/reference/glib/html/glib-GTimeZone.html create mode 100644 docs/reference/glib/html/glib-GVariant.html create mode 100644 docs/reference/glib/html/glib-GVariantType.html create mode 100644 docs/reference/glib/html/glib-Glob-style-pattern-matching.html create mode 100644 docs/reference/glib/html/glib-Hash-Tables.html create mode 100644 docs/reference/glib/html/glib-Hook-Functions.html create mode 100644 docs/reference/glib/html/glib-Hostname-Utilities.html create mode 100644 docs/reference/glib/html/glib-I18N.html create mode 100644 docs/reference/glib/html/glib-IO-Channels.html create mode 100644 docs/reference/glib/html/glib-Key-value-file-parser.html create mode 100644 docs/reference/glib/html/glib-Keyed-Data-Lists.html create mode 100644 docs/reference/glib/html/glib-Lexical-Scanner.html create mode 100644 docs/reference/glib/html/glib-Memory-Allocation.html create mode 100644 docs/reference/glib/html/glib-Memory-Slices.html create mode 100644 docs/reference/glib/html/glib-Message-Logging.html create mode 100644 docs/reference/glib/html/glib-Miscellaneous-Macros.html create mode 100644 docs/reference/glib/html/glib-Miscellaneous-Utility-Functions.html create mode 100644 docs/reference/glib/html/glib-N-ary-Trees.html create mode 100644 docs/reference/glib/html/glib-Numerical-Definitions.html create mode 100644 docs/reference/glib/html/glib-Perl-compatible-regular-expressions.html create mode 100644 docs/reference/glib/html/glib-Pointer-Arrays.html create mode 100644 docs/reference/glib/html/glib-Quarks.html create mode 100644 docs/reference/glib/html/glib-Random-Numbers.html create mode 100644 docs/reference/glib/html/glib-Relations-and-Tuples.html create mode 100644 docs/reference/glib/html/glib-Sequences.html create mode 100644 docs/reference/glib/html/glib-Shell-related-Utilities.html create mode 100644 docs/reference/glib/html/glib-Simple-XML-Subset-Parser.html create mode 100644 docs/reference/glib/html/glib-Singly-Linked-Lists.html create mode 100644 docs/reference/glib/html/glib-Spawning-Processes.html create mode 100644 docs/reference/glib/html/glib-Standard-Macros.html create mode 100644 docs/reference/glib/html/glib-String-Chunks.html create mode 100644 docs/reference/glib/html/glib-String-Utility-Functions.html create mode 100644 docs/reference/glib/html/glib-Strings.html create mode 100644 docs/reference/glib/html/glib-Testing.html create mode 100644 docs/reference/glib/html/glib-The-Main-Event-Loop.html create mode 100644 docs/reference/glib/html/glib-Thread-Pools.html create mode 100644 docs/reference/glib/html/glib-Threads.html create mode 100644 docs/reference/glib/html/glib-Timers.html create mode 100644 docs/reference/glib/html/glib-Trash-Stacks.html create mode 100644 docs/reference/glib/html/glib-Type-Conversion-Macros.html create mode 100644 docs/reference/glib/html/glib-UNIX-specific-utilities-and-integration.html create mode 100644 docs/reference/glib/html/glib-URI-Functions.html create mode 100644 docs/reference/glib/html/glib-Unicode-Manipulation.html create mode 100644 docs/reference/glib/html/glib-Version-Information.html create mode 100644 docs/reference/glib/html/glib-Warnings-and-Assertions.html create mode 100644 docs/reference/glib/html/glib-Windows-Compatibility-Functions.html create mode 100644 docs/reference/glib/html/glib-building.html create mode 100644 docs/reference/glib/html/glib-changes.html create mode 100644 docs/reference/glib/html/glib-compiling.html create mode 100644 docs/reference/glib/html/glib-core.html create mode 100644 docs/reference/glib/html/glib-cross-compiling.html create mode 100644 docs/reference/glib/html/glib-data-types.html create mode 100644 docs/reference/glib/html/glib-fundamentals.html create mode 100644 docs/reference/glib/html/glib-gettextize.html create mode 100644 docs/reference/glib/html/glib-programming.html create mode 100644 docs/reference/glib/html/glib-regex-syntax.html create mode 100644 docs/reference/glib/html/glib-resources.html create mode 100644 docs/reference/glib/html/glib-running.html create mode 100644 docs/reference/glib/html/glib-utilities.html create mode 100644 docs/reference/glib/html/glib.devhelp2 create mode 100644 docs/reference/glib/html/glib.html create mode 100644 docs/reference/glib/html/gtester-report.html create mode 100644 docs/reference/glib/html/gtester.html create mode 100644 docs/reference/glib/html/gvariant-format-strings.html create mode 100644 docs/reference/glib/html/gvariant-text.html create mode 100644 docs/reference/glib/html/home.png create mode 100644 docs/reference/glib/html/index.html create mode 100644 docs/reference/glib/html/index.sgml create mode 100644 docs/reference/glib/html/left-insensitive.png create mode 100644 docs/reference/glib/html/left.png create mode 100644 docs/reference/glib/html/mainloop-states.gif create mode 100644 docs/reference/glib/html/right-insensitive.png create mode 100644 docs/reference/glib/html/right.png create mode 100644 docs/reference/glib/html/style.css create mode 100644 docs/reference/glib/html/tools.html create mode 100644 docs/reference/glib/html/up-insensitive.png create mode 100644 docs/reference/glib/html/up.png create mode 100644 docs/reference/glib/version.xml create mode 100644 docs/reference/gobject/Makefile.in create mode 100644 docs/reference/gobject/glib-genmarshal.1 create mode 100644 docs/reference/gobject/glib-mkenums.1 create mode 100644 docs/reference/gobject/gobject-query.1 create mode 100644 docs/reference/gobject/html/GBinding.html create mode 100644 docs/reference/gobject/html/GTypeModule.html create mode 100644 docs/reference/gobject/html/GTypePlugin.html create mode 100644 docs/reference/gobject/html/annotation-glossary.html create mode 100644 docs/reference/gobject/html/api-index-2-10.html create mode 100644 docs/reference/gobject/html/api-index-2-12.html create mode 100644 docs/reference/gobject/html/api-index-2-14.html create mode 100644 docs/reference/gobject/html/api-index-2-18.html create mode 100644 docs/reference/gobject/html/api-index-2-2.html create mode 100644 docs/reference/gobject/html/api-index-2-22.html create mode 100644 docs/reference/gobject/html/api-index-2-24.html create mode 100644 docs/reference/gobject/html/api-index-2-26.html create mode 100644 docs/reference/gobject/html/api-index-2-28.html create mode 100644 docs/reference/gobject/html/api-index-2-30.html create mode 100644 docs/reference/gobject/html/api-index-2-32.html create mode 100644 docs/reference/gobject/html/api-index-2-34.html create mode 100644 docs/reference/gobject/html/api-index-2-36.html create mode 100644 docs/reference/gobject/html/api-index-2-38.html create mode 100644 docs/reference/gobject/html/api-index-2-4.html create mode 100644 docs/reference/gobject/html/api-index-2-40.html create mode 100644 docs/reference/gobject/html/api-index-2-42.html create mode 100644 docs/reference/gobject/html/api-index-2-44.html create mode 100644 docs/reference/gobject/html/api-index-2-46.html create mode 100644 docs/reference/gobject/html/api-index-2-6.html create mode 100644 docs/reference/gobject/html/api-index-2-8.html create mode 100644 docs/reference/gobject/html/api-index-deprecated.html create mode 100644 docs/reference/gobject/html/api-index-full.html create mode 100644 docs/reference/gobject/html/ch01s02.html create mode 100644 docs/reference/gobject/html/chapter-gobject.html create mode 100644 docs/reference/gobject/html/chapter-gtype.html create mode 100644 docs/reference/gobject/html/chapter-intro.html create mode 100644 docs/reference/gobject/html/chapter-signal.html create mode 100644 docs/reference/gobject/html/glib-genmarshal.html create mode 100644 docs/reference/gobject/html/glib-mkenums.html create mode 100644 docs/reference/gobject/html/glue.png create mode 100644 docs/reference/gobject/html/gobject-Boxed-Types.html create mode 100644 docs/reference/gobject/html/gobject-Closures.html create mode 100644 docs/reference/gobject/html/gobject-Enumeration-and-Flag-Types.html create mode 100644 docs/reference/gobject/html/gobject-GParamSpec.html create mode 100644 docs/reference/gobject/html/gobject-Generic-values.html create mode 100644 docs/reference/gobject/html/gobject-Signals.html create mode 100644 docs/reference/gobject/html/gobject-Standard-Parameter-and-Value-Types.html create mode 100644 docs/reference/gobject/html/gobject-The-Base-Object-Type.html create mode 100644 docs/reference/gobject/html/gobject-Type-Information.html create mode 100644 docs/reference/gobject/html/gobject-Value-arrays.html create mode 100644 docs/reference/gobject/html/gobject-Varargs-Value-Collection.html create mode 100644 docs/reference/gobject/html/gobject-memory.html create mode 100644 docs/reference/gobject/html/gobject-properties.html create mode 100644 docs/reference/gobject/html/gobject-query.html create mode 100644 docs/reference/gobject/html/gobject.devhelp2 create mode 100644 docs/reference/gobject/html/gtype-conventions.html create mode 100644 docs/reference/gobject/html/gtype-instantiable-classed.html create mode 100644 docs/reference/gobject/html/gtype-non-instantiable-classed.html create mode 100644 docs/reference/gobject/html/gtype-non-instantiable.html create mode 100644 docs/reference/gobject/html/home.png create mode 100644 docs/reference/gobject/html/howto-gobject-chainup.html create mode 100644 docs/reference/gobject/html/howto-gobject-code.html create mode 100644 docs/reference/gobject/html/howto-gobject-construction.html create mode 100644 docs/reference/gobject/html/howto-gobject-destruction.html create mode 100644 docs/reference/gobject/html/howto-gobject-methods.html create mode 100644 docs/reference/gobject/html/howto-gobject.html create mode 100644 docs/reference/gobject/html/howto-interface-implement.html create mode 100644 docs/reference/gobject/html/howto-interface-override.html create mode 100644 docs/reference/gobject/html/howto-interface-prerequisite.html create mode 100644 docs/reference/gobject/html/howto-interface-properties.html create mode 100644 docs/reference/gobject/html/howto-interface.html create mode 100644 docs/reference/gobject/html/howto-signals.html create mode 100644 docs/reference/gobject/html/index.html create mode 100644 docs/reference/gobject/html/index.sgml create mode 100644 docs/reference/gobject/html/left-insensitive.png create mode 100644 docs/reference/gobject/html/left.png create mode 100644 docs/reference/gobject/html/pr01.html create mode 100644 docs/reference/gobject/html/pt01.html create mode 100644 docs/reference/gobject/html/pt02.html create mode 100644 docs/reference/gobject/html/pt03.html create mode 100644 docs/reference/gobject/html/right-insensitive.png create mode 100644 docs/reference/gobject/html/right.png create mode 100644 docs/reference/gobject/html/rn01.html create mode 100644 docs/reference/gobject/html/rn02.html create mode 100644 docs/reference/gobject/html/signal.html create mode 100644 docs/reference/gobject/html/style.css create mode 100644 docs/reference/gobject/html/tools-ginspector.html create mode 100644 docs/reference/gobject/html/tools-gob.html create mode 100644 docs/reference/gobject/html/tools-gtkdoc.html create mode 100644 docs/reference/gobject/html/tools-refdb.html create mode 100644 docs/reference/gobject/html/tools-vala.html create mode 100644 docs/reference/gobject/html/up-insensitive.png create mode 100644 docs/reference/gobject/html/up.png delete mode 100644 docs/reference/gobject/tmpl/.gitignore create mode 100644 docs/reference/gobject/version.xml delete mode 100644 gio/.gitignore create mode 100644 gio/Makefile.in create mode 100644 gio/fam/Makefile.in delete mode 100644 gio/fam/fam-helper.c delete mode 100644 gio/fam/fam-helper.h delete mode 100644 gio/fam/fam-module.c delete mode 100644 gio/fam/gfamdirectorymonitor.c delete mode 100644 gio/fam/gfamdirectorymonitor.h delete mode 100644 gio/fam/gfamfilemonitor.h delete mode 100644 gio/fen/Makefile.am delete mode 100644 gio/fen/fen-dump.c delete mode 100644 gio/fen/fen-dump.h delete mode 100644 gio/fen/fen-helper.c delete mode 100644 gio/fen/fen-helper.h delete mode 100644 gio/fen/fen-kernel.c delete mode 100644 gio/fen/fen-kernel.h delete mode 100644 gio/fen/fen-node.c delete mode 100644 gio/fen/fen-node.h delete mode 100644 gio/fen/gfendirectorymonitor.c delete mode 100644 gio/fen/gfendirectorymonitor.h delete mode 100644 gio/fen/gfenfilemonitor.c delete mode 100644 gio/fen/gfenfilemonitor.h create mode 100644 gio/gcocoanotificationbackend.c create mode 100644 gio/gconstructor_as_data.h create mode 100644 gio/gdatagrambased.c create mode 100644 gio/gdatagrambased.h delete mode 100644 gio/gdbus-2.0/codegen/.gitignore create mode 100644 gio/gdbus-2.0/codegen/Makefile.in create mode 100644 gio/gdbus-2.0/codegen/config.py create mode 100644 gio/gdbus-daemon-generated.c create mode 100644 gio/gdbus-daemon-generated.h create mode 100644 gio/gdtlsclientconnection.c create mode 100644 gio/gdtlsclientconnection.h create mode 100644 gio/gdtlsconnection.c create mode 100644 gio/gdtlsconnection.h create mode 100644 gio/gdtlsserverconnection.c create mode 100644 gio/gdtlsserverconnection.h create mode 100644 gio/gio.rc create mode 100644 gio/gioenumtypes.c create mode 100644 gio/gioenumtypes.h delete mode 100644 gio/glocaldirectorymonitor.c delete mode 100644 gio/glocaldirectorymonitor.h create mode 100644 gio/gnativesocketaddress.c create mode 100644 gio/gnativesocketaddress.h create mode 100644 gio/gschema.its create mode 100644 gio/gschema.loc delete mode 100644 gio/gvdb/gvdb.doap create mode 100644 gio/gwin32registrykey.c create mode 100644 gio/gwin32registrykey.h create mode 100644 gio/inotify/Makefile.in delete mode 100644 gio/inotify/ginotifydirectorymonitor.c delete mode 100644 gio/inotify/ginotifydirectorymonitor.h create mode 100644 gio/kqueue/Makefile.in delete mode 100644 gio/kqueue/gkqueuedirectorymonitor.c delete mode 100644 gio/kqueue/gkqueuedirectorymonitor.h delete mode 100644 gio/tests/.gitignore create mode 100644 gio/tests/Makefile.in create mode 100644 gio/tests/dbus-launch.c create mode 100644 gio/tests/gdbus-object-manager-example/Makefile.in create mode 100644 gio/tests/gdbus-unix-addresses.c delete mode 100644 gio/tests/live-g-file.txt create mode 100644 gio/tests/modules/Makefile.in create mode 100644 gio/tests/plugin_resources.c delete mode 100644 gio/tests/schema-tests/cdata.gschema.xml create mode 100644 gio/tests/schema-tests/description-xmllang.gschema.xml delete mode 100644 gio/tests/schema-tests/range-type-test.gschema.xml create mode 100644 gio/tests/schema-tests/summary-xmllang-and-attrs.gschema.xml create mode 100644 gio/tests/schema-tests/summary-xmllang.gschema.xml create mode 100644 gio/tests/services/Makefile.in create mode 100644 gio/tests/socket-service.c create mode 100644 gio/tests/testfilemonitor.c create mode 100644 gio/win32/Makefile.in delete mode 100644 gio/win32/gwin32directorymonitor.c delete mode 100644 gio/win32/gwin32directorymonitor.h create mode 100644 gio/win32/gwin32filemonitor.c create mode 100644 gio/win32/gwin32filemonitor.h create mode 100644 gio/win32/gwin32fsmonitorutils.c create mode 100644 gio/win32/gwin32fsmonitorutils.h delete mode 100644 gio/win32/makefile.msc delete mode 100644 gio/xdgmime/.gitignore create mode 100644 gio/xdgmime/Makefile.in delete mode 100644 glib.doap delete mode 100644 glib/.gitignore create mode 100644 glib/Makefile.in create mode 100644 glib/glib.rc create mode 100644 glib/glibconfig.h.win32 create mode 100644 glib/gnulib/Makefile.in create mode 100644 glib/gnulib/verify.h create mode 100644 glib/gnulib/xsize.h create mode 100644 glib/gspawn-win32-helper-console.c create mode 100644 glib/gspawn-win64-helper-console.c create mode 100644 glib/gspawn-win64-helper.c delete mode 100644 glib/libcharset/.gitignore create mode 100644 glib/libcharset/Makefile.in create mode 100644 glib/makefile.msc create mode 100644 glib/pcre/Makefile.in create mode 100644 glib/pcre/pcre_version.c delete mode 100644 glib/tests/.gitignore create mode 100644 glib/tests/Makefile.in delete mode 100644 glib/tests/malloc.c delete mode 100644 glib/tests/markups/valid-16.cdata-as-text delete mode 100644 glib/tests/markups/valid-8.cdata-as-text create mode 100644 glib/tests/overflow.c delete mode 100755 glib/update-gtranslit.py create mode 100644 glib/update-pcre/Makefile.in delete mode 100644 glib/update-pcre/ucp.patch delete mode 100644 gmodule/.gitignore create mode 100644 gmodule/Makefile.in create mode 100644 gmodule/gmodule.rc create mode 100644 gmodule/makefile.msc delete mode 100644 gobject/.gitignore create mode 100644 gobject/Makefile.in create mode 100644 gobject/gmarshal.strings create mode 100644 gobject/gobject.rc delete mode 100644 gobject/gobject.stp.in create mode 100644 gobject/makefile.msc delete mode 100644 gobject/tests/.gitignore create mode 100644 gobject/tests/Makefile.in create mode 100644 gobject/tests/signal-handler.c rename gobject/tests/{valuearray.c => value.c} (56%) delete mode 100644 gthread/.gitignore create mode 100644 gthread/Makefile.in create mode 100644 gthread/gthread.rc create mode 100644 gthread/makefile.msc create mode 100644 gtk-doc.make create mode 100755 install-sh create mode 100644 ltmain.sh delete mode 100644 m4macros/.gitignore create mode 100644 m4macros/Makefile.in create mode 100644 m4macros/gtk-doc.m4 create mode 100644 m4macros/libtool.m4 create mode 100644 m4macros/ltoptions.m4 create mode 100644 m4macros/ltsugar.m4 create mode 100644 m4macros/ltversion.m4 create mode 100644 m4macros/lt~obsolete.m4 create mode 100755 missing delete mode 100644 po/.gitignore delete mode 100644 po/POTFILES.skip delete mode 100644 po/README.translators create mode 100644 po/af.gmo create mode 100644 po/am.gmo create mode 100644 po/an.gmo create mode 100644 po/ar.gmo create mode 100644 po/as.gmo create mode 100644 po/ast.gmo create mode 100644 po/az.gmo create mode 100644 po/be.gmo create mode 100644 po/be@latin.gmo create mode 100644 po/bg.gmo create mode 100644 po/bn.gmo create mode 100644 po/bn_IN.gmo create mode 100644 po/bs.gmo create mode 100644 po/ca.gmo create mode 100644 po/ca@valencia.gmo create mode 100644 po/cs.gmo create mode 100644 po/cy.gmo create mode 100644 po/da.gmo create mode 100644 po/de.gmo create mode 100644 po/dz.gmo create mode 100644 po/el.gmo create mode 100644 po/en@shaw.gmo create mode 100644 po/en_CA.gmo create mode 100644 po/en_GB.gmo create mode 100644 po/eo.gmo create mode 100644 po/es.gmo create mode 100644 po/et.gmo create mode 100644 po/eu.gmo create mode 100644 po/fa.gmo create mode 100644 po/fi.gmo create mode 100644 po/fr.gmo create mode 100644 po/ga.gmo create mode 100644 po/gd.gmo create mode 100644 po/gd.po create mode 100644 po/gl.gmo create mode 100644 po/glib20.pot create mode 100644 po/gu.gmo create mode 100644 po/he.gmo create mode 100644 po/hi.gmo create mode 100644 po/hr.gmo create mode 100644 po/hu.gmo create mode 100644 po/hy.gmo create mode 100644 po/id.gmo create mode 100644 po/is.gmo create mode 100644 po/it.gmo create mode 100644 po/ja.gmo create mode 100644 po/ka.gmo create mode 100644 po/kk.gmo create mode 100644 po/kn.gmo create mode 100644 po/ko.gmo create mode 100644 po/ku.gmo create mode 100644 po/lt.gmo create mode 100644 po/lv.gmo create mode 100644 po/mai.gmo create mode 100644 po/mg.gmo create mode 100644 po/mk.gmo create mode 100644 po/ml.gmo create mode 100644 po/mn.gmo create mode 100644 po/mr.gmo create mode 100644 po/ms.gmo create mode 100644 po/nb.gmo create mode 100644 po/nds.gmo create mode 100644 po/ne.gmo create mode 100644 po/nl.gmo create mode 100644 po/nn.gmo create mode 100644 po/oc.gmo create mode 100644 po/or.gmo create mode 100644 po/pa.gmo create mode 100644 po/pl.gmo create mode 100644 po/ps.gmo create mode 100644 po/pt.gmo create mode 100644 po/pt_BR.gmo create mode 100644 po/ro.gmo create mode 100644 po/ru.gmo create mode 100644 po/rw.gmo create mode 100644 po/si.gmo create mode 100644 po/sk.gmo create mode 100644 po/sl.gmo create mode 100644 po/sq.gmo create mode 100644 po/sr.gmo create mode 100644 po/sr@ije.gmo create mode 100644 po/sr@latin.gmo create mode 100644 po/sv.gmo create mode 100644 po/ta.gmo create mode 100644 po/te.gmo create mode 100644 po/tg.gmo create mode 100644 po/th.gmo create mode 100644 po/tl.gmo create mode 100644 po/tr.gmo create mode 100644 po/tt.gmo create mode 100644 po/ug.gmo create mode 100644 po/uk.gmo create mode 100644 po/vi.gmo create mode 100644 po/wa.gmo create mode 100644 po/xh.gmo create mode 100644 po/yi.gmo create mode 100644 po/zh_CN.gmo create mode 100644 po/zh_HK.gmo create mode 100644 po/zh_TW.gmo create mode 100755 py-compile create mode 100755 test-driver delete mode 100644 tests/.gitignore create mode 100644 tests/Makefile.in delete mode 100644 tests/gio-ls.c delete mode 100644 tests/gobject/.gitignore create mode 100644 tests/gobject/Makefile.in delete mode 100644 tests/gobject/ifacecheck.c delete mode 100644 tests/gobject/ifaceinherit.c delete mode 100644 tests/gobject/ifaceinit.c delete mode 100755 tests/gobject/run-performance.sh delete mode 100644 tests/gobject/testgobject.c create mode 100644 tests/gobject/testmarshal.c create mode 100644 tests/gobject/testmarshal.h create mode 100644 tests/makefile.msc create mode 100644 tests/refcount/Makefile.in delete mode 100644 win32-fixup.pl diff --git a/.dir-locals.el b/.dir-locals.el deleted file mode 100644 index abf24af..0000000 --- a/.dir-locals.el +++ /dev/null @@ -1 +0,0 @@ -((c-mode . ((indent-tabs-mode . nil))))) diff --git a/.gitignore b/.gitignore deleted file mode 100644 index f80afbc..0000000 --- a/.gitignore +++ /dev/null @@ -1,48 +0,0 @@ -# for all subdirectories -Makefile.in -Makefile -TAGS -.libs -.deps -*.o -*.lo -*.la -*.pc -.*.swp -.sw? -*.rc -*.gcno -*.gcda -*.gcov -*.sourcefiles -*.stp -*.exe -*.def -*.test -*.log -*.trs - -# autofoo stuff here -compile -config.* -configure -depcomp -aclocal.m4 -autom4te.cache -stamp-* -libtool -ltmain.sh -mingw32-config.cache -missing -install-sh -glib-gettextize -glib-zip -gtk-doc.make -py-compile -test-driver - -INSTALL -README -ChangeLog -/glib-lcov.info -/glib-lcov/ diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..e24f14a --- /dev/null +++ b/ChangeLog @@ -0,0 +1,163905 @@ +commit f384d20d80fc36ba86f73a885838a4903604a5e0 +Author: Allison Ryan Lortie +AuthorDate: Tue Mar 22 11:18:38 2016 -0400 +Commit: Allison Ryan Lortie +CommitDate: Tue Mar 22 11:18:38 2016 -0400 + + GLib 2.48.0 + + NEWS | 16 +++++++++++++++- + configure.ac | 4 ++-- + 2 files changed, 17 insertions(+), 3 deletions(-) + +commit a668ee8fe9b82606c6bec450ae40eed1d81aebe4 +Author: Iain Lane +AuthorDate: Mon Mar 14 13:21:54 2016 +0000 +Commit: Iain Lane +CommitDate: Mon Mar 21 13:44:38 2016 +0000 + + giotypefuncs.c: Sort _get_type functions in the 'C' locale + + This ensures that the generated file is always the same (not dependent + on the build machine's environment), making the build reproducible. + + Thanks to Jérémy Bobbio for the Debian bug + report and + patch. + + https://bugzilla.gnome.org/show_bug.cgi?id=763617 + + gio/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c7763d0712696ae153f2405017221050637908f3 +Author: Philip Withnall +AuthorDate: Mon Mar 21 12:44:15 2016 +0000 +Commit: Philip Withnall +CommitDate: Mon Mar 21 12:44:15 2016 +0000 + + glib-compile-resources: Fix minor memory leak on error path + + Spotted by Coverity (CID: #1353385). + + gio/glib-compile-resources.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 58f56b24601838d76a8fda7bd48f0ebe0f9758b5 +Author: Philip Withnall +AuthorDate: Mon Mar 21 12:35:25 2016 +0000 +Commit: Philip Withnall +CommitDate: Mon Mar 21 12:35:25 2016 +0000 + + gkeyfile: Clear a variable after freeing it + + find_file_in_data_dirs() doesn’t actually clear output_path to + NULL on + failure, so this prevents a use-after-free on that (fd == -1) error + path. + + Spotted by Coverity (CID: #1352981). + + glib/gkeyfile.c | 1 + + 1 file changed, 1 insertion(+) + +commit 7401dc1b0c9aab06b596eb01ec68888d075054b9 +Author: Ask Hjorth Larsen +AuthorDate: Sun Mar 20 23:41:28 2016 +0100 +Commit: Ask Hjorth Larsen +CommitDate: Sun Mar 20 23:41:28 2016 +0100 + + Updated Danish translation + + po/da.po | 385 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 205 insertions(+), 180 deletions(-) + +commit b8800ddc371485f1aa3f46896650fa5c47526743 +Author: Milo Casagrande +AuthorDate: Thu Mar 17 20:24:05 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Thu Mar 17 20:24:05 2016 +0000 + + Updated Italian translation + + po/it.po | 70 + +++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 38 insertions(+), 32 deletions(-) + +commit 8c9be18bd3dff42a2352c2dac6b8f17b243d2980 +Author: Allison Ryan Lortie +AuthorDate: Tue Mar 15 22:25:57 2016 -0400 +Commit: Allison Ryan Lortie +CommitDate: Tue Mar 15 22:26:31 2016 -0400 + + GLib 2.47.92 + + NEWS | 59 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 60 insertions(+), 1 deletion(-) + +commit db972a73ce016afb9561be2677547efdb649274b +Author: Philip Withnall +AuthorDate: Tue Mar 15 18:08:29 2016 +0000 +Commit: Philip Withnall +CommitDate: Tue Mar 15 18:08:29 2016 +0000 + + gio: Fix a GError memory leak in GNetworkService + + Spotted by Coverity (CID: #1325405). + + gio/gnetworkservice.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 27660b178e7efd1b54b0d86b2e3ebd993d7781b1 +Author: Philip Withnall +AuthorDate: Tue Mar 15 18:03:00 2016 +0000 +Commit: Philip Withnall +CommitDate: Tue Mar 15 18:03:00 2016 +0000 + + gio: Fix a GError memory leak in GDesktopAppInfo + + Spotted by Coverity (CID: #1352961). + + gio/gdesktopappinfo.c | 1 + + 1 file changed, 1 insertion(+) + +commit d8a7d5f168a8ea652e8e56ae9e157a66f7181923 +Author: Philip Withnall +AuthorDate: Tue Mar 15 12:28:10 2016 +0000 +Commit: Philip Withnall +CommitDate: Tue Mar 15 12:30:01 2016 +0000 + + gmessages: Clarify documentation for G_LOG_LEVEL_CRITICAL + + Clarify that it’s a critical //warning//, not a critical + something-else. + + glib/gmessages.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 37ebc83f7ff1caa0bca0140aa2e44120bddbca70 +Author: Marc-André Lureau +AuthorDate: Wed Feb 17 17:56:03 2016 +0100 +Commit: Marc-André Lureau +CommitDate: Tue Mar 15 11:14:57 2016 +0100 + + win32: use wide-char for constants + + Use the appropriate type for comparisons and assignment of wide chars. + + Signed-off-by: Marc-André Lureau + + https://bugzilla.gnome.org/show_bug.cgi?id=762202 + + glib/gwin32.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 622748680c807efcf1eb49bce3f0a9c08ad77484 +Author: Marc-André Lureau +AuthorDate: Wed Feb 17 17:52:59 2016 +0100 +Commit: Marc-André Lureau +CommitDate: Tue Mar 15 11:14:57 2016 +0100 + + win32: fix indentation + + Signed-off-by: Marc-André Lureau + + https://bugzilla.gnome.org/show_bug.cgi?id=762202 + + glib/gwin32.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 5be8cab966d65e7074dd6478d02cfa46724e479e +Author: Marc-André Lureau +AuthorDate: Wed Feb 17 17:52:31 2016 +0100 +Commit: Marc-André Lureau +CommitDate: Tue Mar 15 11:14:57 2016 +0100 + + win32: use wcslen() return type + + Signed-off-by: Marc-André Lureau + + https://bugzilla.gnome.org/show_bug.cgi?id=762202 + + glib/gwin32.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a1bcd1e45a3eea98dedcee68f67b458e95e9193d +Author: Marc-André Lureau +AuthorDate: Wed Feb 17 17:50:52 2016 +0100 +Commit: Marc-André Lureau +CommitDate: Tue Mar 15 11:14:57 2016 +0100 + + win32: fix off-by-one length check + + Laszlo Ersek said: "The length check is off by one (in the safe + direction); it + should be (nchars >= 2). The processing should be active for the + wide string + L"\r\n" -- resulting in the empty wide string --, I believe." + + Reported-by: Laszlo Ersek + Signed-off-by: Marc-André Lureau + + https://bugzilla.gnome.org/show_bug.cgi?id=762202 + + glib/gwin32.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0a580fc79e701363b12de2398e5c7428fe8af739 +Author: Philip Withnall +AuthorDate: Mon Mar 14 12:57:20 2016 +0000 +Commit: Philip Withnall +CommitDate: Mon Mar 14 12:57:20 2016 +0000 + + gio: Fix minor typo in GActionGroup documentation + + gio/gactiongroup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c49b70f61e9818d998623458b9e0dfbd58d65f23 +Author: Matthias Clasen +AuthorDate: Mon Mar 14 08:07:39 2016 -0400 +Commit: Matthias Clasen +CommitDate: Mon Mar 14 08:07:50 2016 -0400 + + Trivial whitespace fix + + glib/glib-init.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bc2f448dd53345cd277ea7f69a2c5079f5383500 +Author: Tom Tryfonidis +AuthorDate: Mon Mar 14 10:23:36 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Mon Mar 14 10:23:36 2016 +0000 + + Updated Greek translation + + po/el.po | 744 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 412 insertions(+), 332 deletions(-) + +commit c15b35c74e610aaf4e0ba0380c0af08a5a1f76e2 +Author: Jiri Grönroos +AuthorDate: Sun Mar 13 14:42:53 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Mar 13 14:42:53 2016 +0000 + + Updated Finnish translation + + po/fi.po | 1118 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 582 insertions(+), 536 deletions(-) + +commit e04e716ddb140d7154599f48b48514d3d91122cb +Author: Changwoo Ryu +AuthorDate: Sat Mar 12 20:26:19 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Sat Mar 12 20:26:19 2016 +0000 + + Updated Korean translation + + po/ko.po | 445 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 235 insertions(+), 210 deletions(-) + +commit 54114021c11dadb3fc6f80208e5468a1efbe3733 +Author: Yosef Or Boczko +AuthorDate: Fri Mar 11 14:55:43 2016 +0200 +Commit: Yosef Or Boczko +CommitDate: Fri Mar 11 14:55:43 2016 +0200 + + Updated Hebrew translation + + po/he.po | 226 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 120 insertions(+), 106 deletions(-) + +commit 98ab9fa94f926e11a58cb0c1ccc4aaebe5a3b349 +Author: Chun-wei Fan +AuthorDate: Fri Mar 11 16:54:39 2016 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Mar 11 16:54:39 2016 +0800 + + MSVC builds: Update string replacement util script + + This makes the replace-single function make use of the replace-multi + function, that was just added, to ease future maintenance. + + build/win32/replace.py | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +commit 745989192165110101165d17c7c3ed7410db5b92 +Author: Mario Blättermann +AuthorDate: Thu Mar 10 19:47:33 2016 +0100 +Commit: Mario Blättermann +CommitDate: Thu Mar 10 19:47:33 2016 +0100 + + Updated German translation + + po/de.po | 57 +++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 31 insertions(+), 26 deletions(-) + +commit 374a61f24541ae26f018f3bf1a14cc4337d0f463 +Author: Chun-wei Fan +AuthorDate: Thu Mar 10 20:33:35 2016 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Mar 10 20:33:35 2016 +0800 + + MSVC builds: Add scripts to generate .pc files + + Add a generic script, pc_base.py, which can be utilized to obtain path + info, along with user-input version info, which can be used to + generate + pkg-config .pc files. Also enhance replace.py a bit so that it + can also + be used in the future to replace multiple items in a file in one shot. + This is done to make building introspection files easier, as it + depends + much on the pkg-config .pc files to work. + + Update the project files so that when Python is available, we can + generate + the full, usable .pc files when we complete and 'install' the + builds, and + copy them to appropriate locations so that pkg-config can be set + to find + them easily. + + build/win32/Makefile.am | 2 + + build/win32/glibpc.py | 88 +++++++++++++++++++++ + build/win32/pc_base.py | 107 + ++++++++++++++++++++++++++ + build/win32/replace.py | 10 +++ + build/win32/vs10/Makefile.am | 1 + + build/win32/vs10/glib-install.propsin | 18 +++++ + build/win32/vs10/glib-install.vcxproj | 18 +++++ + build/win32/vs10/glib-install.vcxproj.filters | 13 ++++ + build/win32/vs11/Makefile.am | 1 + + build/win32/vs12/Makefile.am | 1 + + build/win32/vs14/Makefile.am | 1 + + build/win32/vs9/glib-install.vcproj | 50 +++++++++++- + build/win32/vs9/glib-install.vspropsin | 14 ++++ + 13 files changed, 320 insertions(+), 4 deletions(-) + +commit fd6ca66c16b942d1f7d8c70468a438ad4c887c7b +Author: Philip Withnall +AuthorDate: Wed Mar 9 15:51:45 2016 +0000 +Commit: Philip Withnall +CommitDate: Thu Mar 10 09:39:44 2016 +0000 + + codegen: Add support for g_autoptr to gdbus-codegen–generated + objects + + This means that any code generated by gdbus-codegen will now require + GLib 2.44 or newer. + + https://bugzilla.gnome.org/show_bug.cgi?id=763379 + + gio/gdbus-2.0/codegen/codegen.py | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +commit 4569161f81e9338bb91e5a64fd1d00665bcb19e6 +Author: Stephan Hesse +AuthorDate: Tue Sep 29 17:50:39 2015 +0200 +Commit: Debarshi Ray +CommitDate: Thu Mar 10 09:11:13 2016 +0100 + + gerror: Mention that g_clear_error can be used with an "empty" GError + + It is fine to do: + GError *error = NULL; + g_clear_error (&error); + + https://bugzilla.gnome.org/show_bug.cgi?id=762937 + + glib/gerror.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7c6141a546b80866e26a12cee8b6a9f1be5b9fc6 +Author: Allison Ryan Lortie +AuthorDate: Tue Mar 8 15:34:26 2016 -0500 +Commit: Allison Ryan Lortie +CommitDate: Wed Mar 9 10:41:17 2016 -0500 + + g_get_user_runtime_dir(): ensure directory exists + + If the XDG_RUNTIME_DIR environment variable is set, we are being + told by + the OS that this directory exists and is appropriately configured + already. In the fallback case of ~/.cache/, however, the directory + may + not yet exist. + + Rework the logic of this function a little so that we only check + for the + environment variable once. If it is not set, we will fall back to the + cache directory, and mkdir() it to make sure that it exists. + + Meanwhile, remove a statement from the reference documentation that + promises a warning in this case (which has never been true) + and replace + it with a statement that applications can rely on the directory + existing. + + This change prevents each user of this API from having to check + for the + directory for themselves; an example of that can be seen in bug + 763274. + + https://bugzilla.gnome.org/show_bug.cgi?id=763344 + + glib/gutils.c | 44 ++++++++++++++++++++++++++++++-------------- + 1 file changed, 30 insertions(+), 14 deletions(-) + +commit 37756a06c9c8821e4cbc22218046b88cdc85ca90 +Author: Philip Withnall +AuthorDate: Tue Mar 8 18:59:34 2016 +0000 +Commit: Philip Withnall +CommitDate: Wed Mar 9 07:50:07 2016 +0000 + + array: Support clearing an empty array with g_array_remove_range() + + Previously, calling g_array_remove_range(array, 0, array->len) on an + empty array would result in a precondition failure in + g_array_remove_range(), as the given start index (0), was not strictly + less than the array length (0). + + Allow the index to equal the array length, so that zero elements + can be + removed from any array. A subsequent check makes sure that the array + length is not overflowed by the index + length. + + https://bugzilla.gnome.org/show_bug.cgi?id=763339 + + glib/garray.c | 6 +++--- + glib/tests/array-test.c | 8 ++++++++ + 2 files changed, 11 insertions(+), 3 deletions(-) + +commit 7d3d948947f6854507ba62e215ea681b9ef7dad3 +Author: Marek Černocký +AuthorDate: Tue Mar 8 18:49:11 2016 +0100 +Commit: Marek Černocký +CommitDate: Tue Mar 8 18:49:11 2016 +0100 + + Updated Czech translation + + po/cs.po | 27 ++++++++++++++++----------- + 1 file changed, 16 insertions(+), 11 deletions(-) + +commit c9591c4e853e2d383f50c377839b12b7acb3d69b +Author: Fran Dieguez +AuthorDate: Tue Mar 8 10:45:49 2016 +0100 +Commit: Fran Dieguez +CommitDate: Tue Mar 8 10:45:49 2016 +0100 + + Updated Galician translations + + po/gl.po | 39 +++++++++++++++++++++++---------------- + 1 file changed, 23 insertions(+), 16 deletions(-) + +commit 6aa52f469b31209ce5963bd34d2fb10ceeec2528 +Author: Марко М. Костић +AuthorDate: Mon Mar 7 11:26:28 2016 +0100 +Commit: Мирослав Николић + +CommitDate: Mon Mar 7 11:26:28 2016 +0100 + + Updated Serbian translation + + po/sr.po | 91 + ++++++++++++++++++++++++++++++++-------------------------- + po/sr@latin.po | 75 ++++++++++++++++++++++++++--------------------- + 2 files changed, 92 insertions(+), 74 deletions(-) + +commit 5a8354c041af70e639dd93e700726cfc634e1850 +Author: Daniel Mustieles +AuthorDate: Sun Mar 6 20:01:32 2016 +0100 +Commit: Daniel Mustieles +CommitDate: Sun Mar 6 20:01:32 2016 +0100 + + Updated Spanish translation + + po/es.po | 36 +++++++++++++++++++++--------------- + 1 file changed, 21 insertions(+), 15 deletions(-) + +commit 9422d9f6dd641be11f712e71719ed336972e124f +Author: Anders Jonsson +AuthorDate: Sat Mar 5 23:03:30 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Sat Mar 5 23:03:30 2016 +0000 + + Updated Swedish translation + + po/sv.po | 36 +++++++++++++++++++++--------------- + 1 file changed, 21 insertions(+), 15 deletions(-) + +commit 2801341e5f346956d580a0fa25d0c6e12b6b85ae +Author: Matej Urbančič +AuthorDate: Sat Mar 5 21:15:47 2016 +0100 +Commit: Matej Urbančič +CommitDate: Sat Mar 5 21:15:47 2016 +0100 + + Updated Slovenian translation + + po/sl.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 7bf113c95da53d8ce7480847ede52d2d6f31b9e3 +Author: Aurimas Černius +AuthorDate: Sat Mar 5 21:41:58 2016 +0200 +Commit: Aurimas Černius +CommitDate: Sat Mar 5 21:41:58 2016 +0200 + + Updated Lithuanian translation + + po/lt.po | 29 +++++++++++++++++------------ + 1 file changed, 17 insertions(+), 12 deletions(-) + +commit 964707ace9208c601c7a1b45be903edee0d5de9a +Author: Matej Urbančič +AuthorDate: Sat Mar 5 20:41:20 2016 +0100 +Commit: Matej Urbančič +CommitDate: Sat Mar 5 20:41:20 2016 +0100 + + Updated Slovenian translation + + po/sl.po | 50 ++++++++++++++++++++++++++++++-------------------- + 1 file changed, 30 insertions(+), 20 deletions(-) + +commit 0064bd957d17882bc4e027b55dbc76f6a89e65aa +Author: Claude Paroz +AuthorDate: Sat Mar 5 18:02:30 2016 +0100 +Commit: Claude Paroz +CommitDate: Sat Mar 5 18:02:30 2016 +0100 + + Updated French translation + + po/fr.po | 536 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 274 insertions(+), 262 deletions(-) + +commit 72c339246a46a5b52c28786ad168f6d804b3679c +Author: Baurzhan Muftakhidinov +AuthorDate: Sat Mar 5 10:39:10 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Sat Mar 5 10:39:10 2016 +0000 + + Updated Kazakh translation + + po/kk.po | 448 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 236 insertions(+), 212 deletions(-) + +commit 046634375c3997e12270567dbf5f63d5e5c443b0 +Author: Stas Solovey +AuthorDate: Fri Mar 4 21:56:48 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Mar 4 21:56:48 2016 +0000 + + Updated Russian translation + + po/ru.po | 397 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 211 insertions(+), 186 deletions(-) + +commit a400a0e979f5c08bb2560131e55df6b5f06c0167 +Author: Gábor Kelemen +AuthorDate: Fri Mar 4 19:42:07 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Mar 4 19:42:07 2016 +0000 + + Updated Hungarian translation + + po/hu.po | 62 + +++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 37 insertions(+), 25 deletions(-) + +commit 658733eb04cfa0ee9d6ed0b6e15b8e43c0b1b2b4 +Author: Artur de Aquino Morais +AuthorDate: Fri Mar 4 14:04:40 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Mar 4 14:04:40 2016 +0000 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 526 + ++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 301 insertions(+), 225 deletions(-) + +commit 0527f97c4350574fbffac653e46bd57e4015f075 +Author: Dušan Kazik +AuthorDate: Thu Mar 3 21:05:23 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Thu Mar 3 21:05:23 2016 +0000 + + Updated Slovak translation + + po/sk.po | 27 ++++++++++++++++----------- + 1 file changed, 16 insertions(+), 11 deletions(-) + +commit 522b698e0b7e62fa2049c13046c9f57251754afe +Author: Rūdolfs Mazurs +AuthorDate: Thu Mar 3 22:22:19 2016 +0200 +Commit: Rūdolfs Mazurs +CommitDate: Thu Mar 3 22:22:19 2016 +0200 + + Update Latvian translation + + po/lv.po | 410 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 216 insertions(+), 194 deletions(-) + +commit 988ec5aae9347d4b7d6128aea64b792704127f38 +Author: Piotr Drąg +AuthorDate: Thu Mar 3 17:02:50 2016 +0100 +Commit: Piotr Drąg +CommitDate: Thu Mar 3 17:02:50 2016 +0100 + + Updated Polish translation + + po/pl.po | 36 +++++++++++++++++++++--------------- + 1 file changed, 21 insertions(+), 15 deletions(-) + +commit 8cdbc7fb2c8c876902e457abe46ee18a0b134486 +Author: coypu +AuthorDate: Wed Mar 2 19:38:48 2016 +0200 +Commit: Colin Walters +CommitDate: Thu Mar 3 10:51:05 2016 -0500 + + gdate: Move warning pragma outside of function + + Commit 0817af40e8c74c721c30f6ef482b1f53d12044c7 breaks the build on + older versions of GCC, which don't allow pragma inside functions. + + https://bugzilla.gnome.org/761550 + + glib/gdate.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 74b1dd87b5ff10ded5a09a10c36722aa5548ad63 +Author: Руслан Ижбулатов +AuthorDate: Fri Jan 15 22:25:32 2016 +0000 +Commit: Руслан Ижбулатов +CommitDate: Thu Mar 3 07:26:04 2016 +0000 + + W32: eliminate busy cursor when a rundll32-hosted child runs + + Even though GetStartupInfo() in g_win32_run_session_bus() would + tell us that STARTF_FORCEONFEEDBACK flag is not set, it still + affects the rundll32 process for some reason. + + This means that Windows WM changes mouse cursor to IDC_APPSTARTING for + a few seconds when rundll32 runs g_win32_run_session_bus(). Since + g_win32_run_session_bus() never satisfies the conditions set by + STARTF_FORCEONFEEDBACK, the busy cursor only goes away after a + timeout. + + Fix this by explicitly running GetMessage(). To ensure that + GetMessage() + doesn't block, post a quit message immediately before calling it. + + https://bugzilla.gnome.org/show_bug.cgi?id=760694 + + gio/gdbusaddress.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit 5efc8686ee5a12ea21d1562fddb83418d0c734b9 +Author: Matthias Clasen +AuthorDate: Wed Mar 2 19:06:49 2016 -0500 +Commit: Matthias Clasen +CommitDate: Wed Mar 2 19:06:49 2016 -0500 + + Remove erroneous markup in GError docs + + glib/gerror.c | 23 ++++++++++------------- + 1 file changed, 10 insertions(+), 13 deletions(-) + +commit 5a894c32321a613393261fd8643ad93713d427fe +Author: Jan Alexander Steffens (heftig) +AuthorDate: Wed Feb 24 18:58:25 2016 +0100 +Commit: Matthias Clasen +CommitDate: Wed Mar 2 19:04:28 2016 -0500 + + gsettings: Don't crash when no schemas are installed + + Still doesn't behave well ("gsettings help" causes an error), + but at least there's no segfault anymore. + + https://bugzilla.gnome.org/show_bug.cgi?id=724847 + + gio/gsettings-tool.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit f1c81da5bec82962f19ea801288c054e5c3cc664 +Author: Aurimas Černius +AuthorDate: Wed Mar 2 20:19:50 2016 +0200 +Commit: Aurimas Černius +CommitDate: Wed Mar 2 20:19:50 2016 +0200 + + Updated Lithuanian translation + + po/lt.po | 38 ++++++++++++++++++++++++-------------- + 1 file changed, 24 insertions(+), 14 deletions(-) + +commit 38b458ea4635d97fa7909272fb45d8c9ca7140d1 +Author: Dušan Kazik +AuthorDate: Tue Mar 1 20:06:22 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Tue Mar 1 20:06:22 2016 +0000 + + Updated Slovak translation + + po/sk.po | 33 +++++++++++++++++++-------------- + 1 file changed, 19 insertions(+), 14 deletions(-) + +commit b54acf513d55e3ef8df3d913dc3c78572989d3df +Author: Allison Ryan Lortie +AuthorDate: Mon Feb 29 09:31:14 2016 -0500 +Commit: Allison Ryan Lortie +CommitDate: Tue Mar 1 10:34:07 2016 -0500 + + GDBusConnection: use uint for bitshifts + + "1 << 31" is not well-defined, do use "1u << 31" instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=762748 + + gio/gdbusconnection.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 96fb3b9c0361ae4c25dfb00864fa308bcc719e71 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Mar 1 08:50:05 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Mar 1 08:55:29 2016 +0100 + + gwin32fsmonitorutils: avoid useless cast + + gio/win32/gwin32fsmonitorutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6e454a99ef3c175cf36c30fe477bbc1a87cb1751 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Mar 1 08:46:05 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Mar 1 08:55:26 2016 +0100 + + gwin32fsmonitorutils: avoid a possible invalid memory access + + gio/win32/gwin32fsmonitorutils.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit dedf65a5fd346da884a65dd4781504bc15533725 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Mar 1 08:40:48 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Mar 1 08:40:48 2016 +0100 + + gwin32fsmonitorutils: no need to g_assert when using g_new + + gio/win32/gwin32fsmonitorutils.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +commit 922cd8424a353b170320453dbedc95db5282f627 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Mar 1 08:37:51 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Mar 1 08:37:51 2016 +0100 + + gwin32fsmonitorutils: no need to check for NULL when using g_free + + gio/win32/gwin32fsmonitorutils.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +commit 007e3c5939a255b19ba65ec69b2627db310cb787 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Mar 1 08:37:14 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Mar 1 08:37:14 2016 +0100 + + gwin32fsmonitorutils: coding style fixes + + gio/win32/gwin32fsmonitorutils.c | 142 + ++++++++++++++++++++------------------- + 1 file changed, 73 insertions(+), 69 deletions(-) + +commit 7f60cbb701b11e66dc3d827100ed7a3a74a67e2e +Author: Sebastian Geiger +AuthorDate: Fri Feb 26 16:46:24 2016 +0100 +Commit: Sebastian Geiger +CommitDate: Mon Feb 29 15:47:32 2016 +0100 + + gio: fix documentation of GAction + + gio/gaction.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bffb44021182adfd83f2f973ec2dd6553b471e17 +Author: Mario Blättermann +AuthorDate: Sun Feb 28 19:25:40 2016 +0100 +Commit: Mario Blättermann +CommitDate: Sun Feb 28 19:25:40 2016 +0100 + + Updated German translation + + po/de.po | 31 ++++++++++++++++++------------- + 1 file changed, 18 insertions(+), 13 deletions(-) + +commit 8ca457a2177b513c8ee514fade54a6d84958ed59 +Author: Cédric Valmary +AuthorDate: Sun Feb 28 14:56:49 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Feb 28 14:56:49 2016 +0000 + + Updated Occitan translation + + po/oc.po | 6223 + ++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 3645 insertions(+), 2578 deletions(-) + +commit 45ccd3f95177b30623b6786804b392484462794c +Author: Ignacio Casal Quinteiro +AuthorDate: Sat Feb 27 14:54:17 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Sun Feb 28 15:05:18 2016 +0100 + + gwin32filemonitor: some cleanups + + Make the code a bit more consistent and get it into preparation to + merge the fs monitor stuff that uses the private struct directly. + + gio/win32/gwin32filemonitor.c | 31 +++++++++++++++---------------- + 1 file changed, 15 insertions(+), 16 deletions(-) + +commit 9c7c74c587cac3c808a32b7420d68468283b917f +Author: Marek Černocký +AuthorDate: Sat Feb 27 18:30:31 2016 +0100 +Commit: Marek Černocký +CommitDate: Sat Feb 27 18:30:31 2016 +0100 + + Updated Czech translation + + po/cs.po | 67 + ++++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 38 insertions(+), 29 deletions(-) + +commit bc5b7332b7508c4ea58d558f06444b9870a2fdd7 +Author: Ignacio Casal Quinteiro +AuthorDate: Thu Feb 25 17:23:50 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Feb 25 17:23:50 2016 +0100 + + Improve error on win32input/output streams + + gio/gwin32inputstream.c | 9 ++++++--- + gio/gwin32outputstream.c | 9 ++++++--- + 2 files changed, 12 insertions(+), 6 deletions(-) + +commit 99b30f389ee0272b5d5d256d95c4e7ea278d3cd3 +Author: Chun-wei Fan +AuthorDate: Thu Feb 25 18:37:01 2016 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Feb 25 18:37:01 2016 +0800 + + Visual Studio builds: Move @GLIB_VERSION@ usage + + ... from glib-gen-srcs.[vsprops|props].in to + glib-version-paths.[vsprops|props].in, and instead let autotools + generate + glib-version-paths.[vsprops|props] rather than + glib-gen-srcs.[vsprops|props], as this will need to be referenced for + other items as well, namely generating the .pc files which will become + useful for introspection builds. + + build/win32/vs10/.gitignore | 2 +- + build/win32/vs10/Makefile.am | 8 ++-- + build/win32/vs10/glib-gen-srcs.props | 33 +++++++++++++++ + build/win32/vs10/glib-gen-srcs.props.in | 33 --------------- + build/win32/vs10/glib-version-paths.props | 54 + ------------------------- + build/win32/vs10/glib-version-paths.props.in | 58 + +++++++++++++++++++++++++++ + build/win32/vs9/.gitignore | 2 +- + build/win32/vs9/Makefile.am | 6 +-- + build/win32/vs9/glib-gen-srcs.vsprops | 28 +++++++++++++ + build/win32/vs9/glib-gen-srcs.vsprops.in | 28 ------------- + build/win32/vs9/glib-version-paths.vsprops | 53 + ------------------------ + build/win32/vs9/glib-version-paths.vsprops.in | 57 + ++++++++++++++++++++++++++ + configure.ac | 4 +- + 13 files changed, 187 insertions(+), 179 deletions(-) + +commit 73192b84f8f9c579b46d4f10bb57b679a8b25582 +Author: Ignacio Casal Quinteiro +AuthorDate: Thu Feb 25 10:00:32 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Feb 25 10:00:32 2016 +0100 + + gwin32outputstream: cleanups to make the code more consistent + + gio/gwin32outputstream.c | 323 + +++++++++++++++++++++++------------------------ + 1 file changed, 156 insertions(+), 167 deletions(-) + +commit d5cb451c515563db4542dd3e09605236dde36527 +Author: Ignacio Casal Quinteiro +AuthorDate: Thu Feb 25 09:56:25 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Feb 25 09:56:25 2016 +0100 + + gwin32inputstream: some cleanups to make the code more consistent + + gio/gwin32inputstream.c | 322 + +++++++++++++++++++++++------------------------- + 1 file changed, 156 insertions(+), 166 deletions(-) + +commit ad2092bc680e434c3d17600988ec9b20f52eebef +Author: Colin Walters +AuthorDate: Wed Feb 24 13:40:25 2016 -0500 +Commit: Colin Walters +CommitDate: Wed Feb 24 13:44:10 2016 -0500 + + build: Unconditionally dist tapset files + + Apparently whoever made the last tarball didn't have + `--enable-systemtap`. + Disted files shouldn't depend on build flags. + + Also, it is cathartic for me to say tarballs are dumb and we should + just be pulling from git which is what's canonically tracking what's + source code and what's not and we don't need to repeat ourself in + `Makefile.am`. + + https://bugzilla.gnome.org/show_bug.cgi?id=762637 + + glib/Makefile.am | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 53a24814f6b69039c971c8c3575cdd92ebbd1882 +Author: Ignacio Casal Quinteiro +AuthorDate: Wed Feb 24 17:08:04 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Wed Feb 24 17:20:57 2016 +0100 + + gsettingschema: fix uninitialized value warning + + This error could actually happen in case the assertions are off. + + gio/gsettingsschema.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7a8abb20ab5f214d8fb5713420a5dc5fd61ef79c +Author: Ignacio Casal Quinteiro +AuthorDate: Wed Feb 24 11:27:09 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Wed Feb 24 11:27:09 2016 +0100 + + grand: rand_s is available in mingw64 + + glib/grand.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 5e009153548bf1ed176ea3e75f261394e9f3af74 +Author: Anders Jonsson +AuthorDate: Wed Feb 24 09:21:36 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Wed Feb 24 09:21:36 2016 +0000 + + Updated Swedish translation + + po/sv.po | 24 ++++++++++++++---------- + 1 file changed, 14 insertions(+), 10 deletions(-) + +commit f3334b47ec6df3cd7eb1a0c7eafd15a4f21256f2 +Author: Ignacio Casal Quinteiro +AuthorDate: Wed Feb 24 09:33:22 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Wed Feb 24 09:33:22 2016 +0100 + + Revert "registrybackend: use G_DECLARE_FINAL_TYPE" + + This reverts commit b0776ddd1850f5ca91fe50c11311fe5c9c90cf53. + mingw does not seem to like this patch so better go on the safe + way. + + gio/gregistrysettingsbackend.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +commit 13057bb73e230083c91beeece36433f2b0d70499 +Author: Ignacio Casal Quinteiro +AuthorDate: Wed Feb 24 09:18:42 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Wed Feb 24 09:18:42 2016 +0100 + + registrybackend: fix warning about unused variable + + gio/gregistrysettingsbackend.c | 2 -- + 1 file changed, 2 deletions(-) + +commit c6bd31488a24a8c889c419f9916ea1188adabf57 +Author: Fran Dieguez +AuthorDate: Tue Feb 23 20:21:31 2016 +0100 +Commit: Fran Dieguez +CommitDate: Tue Feb 23 20:21:31 2016 +0100 + + Updated Galician translations + + po/gl.po | 365 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 194 insertions(+), 171 deletions(-) + +commit c13be85f2ba6732a75d917a36a8e50c6377f25d1 +Author: Daniel Mustieles +AuthorDate: Mon Feb 22 21:20:07 2016 +0100 +Commit: Daniel Mustieles +CommitDate: Mon Feb 22 21:20:07 2016 +0100 + + Updated Spanish translation + + po/es.po | 26 +++++++++++++++----------- + 1 file changed, 15 insertions(+), 11 deletions(-) + +commit aead1c046dd39748cca449b55ec300ba5f025365 +Author: Hanno Boeck +AuthorDate: Mon Feb 22 07:46:17 2016 -0500 +Commit: Allison Ryan Lortie +CommitDate: Mon Feb 22 08:48:44 2016 -0500 + + GVariant text: fix scan of positional parameters + + The scanning to find the end of a positional parameter designator in + GVariant text format (e.g. '%i') is currently broken in case the 'end' + pointer is not specified. + + The scan is controlled by a somewhat complicated loop that needs + to deal + properly with cases like (123, %(ii)) [where '%(ii)' is to be taken + together, but the final ')' not]. + + This loop missed the case where a format string passed to + g_variant_new_parsed() ended immediately after such a conversion, + with a + nul character. In this case the 'end' pointer is NULL, so the + only way + we can find the end is by scanning for nul in the string. + + In case of g_variant_new_parsed() [which is what this code was + designed + to be used for], the bug is somewhat unlikely in practice: the + only way + that a valid text-form GVariant could ever contain a positional + parameter replacement at the end of the string is if this positional + parameter were the only thing being returned. In that case, the user + would likely have opted for a more direct approach. + + Unfortunately, this code is also active in the tokenisation phase of + g_variant_parse(), before positional parameters are rejected as + invalid + for that case. Anyone who calls this function with a nul-terminated + string (and no end pointer) is vulnerable to a crash from malicious + user + input. This can be seen, at the very least with many commandline + tools: + + $ dconf write /x '%i' + Segmentation fault + + We fix this problem by searching for the nul character in this + case, in + addition to comparing the end pointer. + + This problem is almost certainly limited to being able to cause + crashes. + The loop in question only performs reads and, in the + security-sensitive + case, the token will be quickly rejected after the loop is finished + (since it starts with '%' and the 'app' pointer is unset). This is + further mitigated by the fact that there are no known cases of + GVariant + text format being used as part of a protocol at a privilege barrier. + + glib/gvariant-parser.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 21c15080bd46e96ece6fb3b8cc87c7b0abaeb1e6 +Author: Artur de Aquino Morais +AuthorDate: Sun Feb 21 14:17:14 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Feb 21 14:17:14 2016 +0000 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 508 + ++++++++++++++++++++++++++---------------------------------- + 1 file changed, 222 insertions(+), 286 deletions(-) + +commit ca10ad1f542d4fb951b5416562b1d032b8ef4573 +Author: Piotr Drąg +AuthorDate: Sat Feb 20 16:30:05 2016 +0100 +Commit: Piotr Drąg +CommitDate: Sat Feb 20 16:30:05 2016 +0100 + + Updated Polish translation + + po/pl.po | 20 ++++++++++++-------- + 1 file changed, 12 insertions(+), 8 deletions(-) + +commit 0d0db609590307ecae03627ac55265597d4a0ca0 +Author: Tobias Nygren +AuthorDate: Fri Oct 16 18:46:26 2015 +0200 +Commit: Patrick Welche +CommitDate: Fri Feb 19 11:29:32 2016 +0000 + + gio/gtestdbus.c: don't use non-standard %m printf modifier + + https://bugzilla.gnome.org/show_bug.cgi?id=756706 + + gio/gtestdbus.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit c40422f9e66a79845dd809e2d8d7519a20ea3746 +Author: Мирослав Николић + +AuthorDate: Thu Feb 18 21:05:07 2016 +0100 +Commit: Мирослав Николић + +CommitDate: Thu Feb 18 21:05:07 2016 +0100 + + Updated Serbian translation + + po/sr.po | 416 + +++++++++++++++++++++++++++++---------------------------- + po/sr@latin.po | 416 + +++++++++++++++++++++++++++++---------------------------- + 2 files changed, 428 insertions(+), 404 deletions(-) + +commit 1d0f75f629f8f23089a109dc259cbfe99187fe31 +Author: Allison Ryan Lortie +AuthorDate: Thu Feb 18 12:14:52 2016 -0500 +Commit: Allison Ryan Lortie +CommitDate: Thu Feb 18 12:15:35 2016 -0500 + + Update maintainer record in DOAP + + glib.doap | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a484ca1bbd2f7884d45933be2ad822a4d71f93ba +Author: Milo Casagrande +AuthorDate: Thu Feb 18 13:22:05 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Thu Feb 18 13:22:05 2016 +0000 + + Updated Italian translation + + po/it.po | 20 ++++++++++++-------- + 1 file changed, 12 insertions(+), 8 deletions(-) + +commit b32f8ba19bd05db95f65baa5074c942b3964c1d3 +Author: Lars Uebernickel +AuthorDate: Tue Feb 3 14:09:44 2015 +0100 +Commit: Matthias Clasen +CommitDate: Thu Feb 18 08:18:58 2016 -0500 + + gapplication: add a way to override the app-id + + Some applications support running in a mode where they present + themselves as a different application to the user (for example web + browsers or terminals). + + To facilitate this, add an option --gapplication-app-id which allows + users to override an application's id from desktop files or similar. + + Applications need to opt-in to this by setting the + G_APPLICATION_CAN_OVERRIDE_APP_ID flag. + + https://bugzilla.gnome.org/show_bug.cgi?id=743933 + + gio/gapplication.c | 32 +++++++++++++++++++++++++------- + gio/gioenums.h | 7 ++++++- + 2 files changed, 31 insertions(+), 8 deletions(-) + +commit 15dea440c4c2a1b595b5513b458e84cd667f98b2 +Author: Milo Casagrande +AuthorDate: Thu Feb 18 13:16:18 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Thu Feb 18 13:16:18 2016 +0000 + + Updated Italian translation + + po/it.po | 1241 + ++++++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 795 insertions(+), 446 deletions(-) + +commit caf03300e56139bea5f690fa9d9d8b286ad47789 +Author: Matthias Clasen +AuthorDate: Wed Feb 17 20:09:22 2016 -0500 +Commit: Matthias Clasen +CommitDate: Wed Feb 17 20:10:43 2016 -0500 + + Remove leftover markup + + gio/gioenums.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a3a97dca3aa227182088be47db75fc57f1186946 +Author: Cole Robinson +AuthorDate: Mon Nov 2 20:28:49 2015 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 16 10:57:58 2016 -0500 + + gsettings: schema_list should use the passed schema's source + + currently schema_list will iterate over the default SchemaSource + list, and not the one associated with the passed in Schema. This + means schema_list can give incorrect results for a Schema fetched + from a non-default SchemaSource, like via new_from_directory. + + https://bugzilla.gnome.org/show_bug.cgi?id=757506 + + gio/gsettingsschema.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9d54f806e5668dfb6c7077db8ebf6abe23ba5320 +Author: Allison Ryan Lortie +AuthorDate: Tue Feb 16 06:35:12 2016 -0500 +Commit: Allison Ryan Lortie +CommitDate: Tue Feb 16 06:35:12 2016 -0500 + + GLib 2.47.6 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5918f9609e38d97c6cd67129bfc4729cc2bb88e3 +Author: Matthias Clasen +AuthorDate: Mon Feb 15 15:53:06 2016 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 15 15:53:06 2016 -0500 + + Updates + + NEWS | 32 ++++++++++++++++++++++++++++++++ + 1 file changed, 32 insertions(+) + +commit 3f29f7272c1776997c013b78600700ffab3d7738 +Author: Chao-Hsiung Liao +AuthorDate: Sat Feb 13 06:37:02 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Sat Feb 13 06:37:02 2016 +0000 + + Updated Chinese (Taiwan) translation + + po/zh_TW.po | 469 + +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 242 insertions(+), 227 deletions(-) + +commit 4a213a2fed57159a1689b0be9c120eba98287131 +Author: Anders Jonsson +AuthorDate: Fri Feb 12 22:26:43 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Feb 12 22:26:43 2016 +0000 + + Updated Swedish translation + + po/sv.po | 36 ++++++++++++++++++++---------------- + 1 file changed, 20 insertions(+), 16 deletions(-) + +commit 1964a8726b06237f751b2aa8b2a3fcd2ce555c44 +Author: Emmanuele Bassi +AuthorDate: Wed Feb 10 22:37:41 2016 +0000 +Commit: Emmanuele Bassi +CommitDate: Wed Feb 10 22:37:41 2016 +0000 + + macros: Fix Clang attribute detection + + For attributes we have to use __has_attribute(). + + https://bugzilla.gnome.org/show_bug.cgi?id=761843 + + glib/gmacros.h | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit c7f540b9e98bca42fc2207c16425ac326edf8ab3 +Author: Rafael Fontenelle +AuthorDate: Wed Feb 10 17:31:53 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Wed Feb 10 17:31:53 2016 +0000 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 40 ++++++++++++++++++++++------------------ + 1 file changed, 22 insertions(+), 18 deletions(-) + +commit 0817af40e8c74c721c30f6ef482b1f53d12044c7 +Author: coypu +AuthorDate: Mon Feb 8 00:06:06 2016 +0200 +Commit: Colin Walters +CommitDate: Mon Feb 8 10:26:58 2016 +0100 + + gdate: Suppress string format literal warning + + Newer versions of GCC emit an error here, but we know it's safe. + https://bugzilla.gnome.org/761550 + + glib/gdate.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit ac84fbfca370539094a99a3471c9d489d003ba90 +Author: Piotr Drąg +AuthorDate: Sat Feb 6 15:43:33 2016 +0100 +Commit: Piotr Drąg +CommitDate: Sat Feb 6 15:43:33 2016 +0100 + + Updated Polish translation + + po/pl.po | 481 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 249 insertions(+), 232 deletions(-) + +commit 30ff647a7cb8323ac96614a8f65900efb6092292 +Author: Dušan Kazik +AuthorDate: Sat Feb 6 14:18:18 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Sat Feb 6 14:18:18 2016 +0000 + + Updated Slovak translation + + po/sk.po | 1216 + ++++++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 788 insertions(+), 428 deletions(-) + +commit 19fd89f8db75928038929f9ea6d918c5f5deb1a5 +Author: Ignacio Casal Quinteiro +AuthorDate: Fri Feb 5 12:05:02 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Fri Feb 5 12:05:02 2016 +0100 + + registrybackend: avoid adding a new child when we return the root + + gio/gregistrysettingsbackend.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +commit 63b0f1087d4e4d209b5db53c6abf18dc1fdcf9a2 +Author: Ignacio Casal Quinteiro +AuthorDate: Fri Feb 5 11:38:05 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Fri Feb 5 11:39:30 2016 +0100 + + registrybackend: another cleanup creating a registry cache item + + gio/gregistrysettingsbackend.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +commit c73e9fc36acbbd9f37bf23af913631d23fcbbe7e +Author: Ignacio Casal Quinteiro +AuthorDate: Fri Feb 5 11:14:24 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Fri Feb 5 11:14:24 2016 +0100 + + registrybackend: use registry_cache_add_item instead of creating + manually + + gio/gregistrysettingsbackend.c | 16 +++++++--------- + 1 file changed, 7 insertions(+), 9 deletions(-) + +commit bd3dd1cd48bdc5c46598a6ef5649c55557cb276a +Author: Ignacio Casal Quinteiro +AuthorDate: Mon Feb 1 17:17:47 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Fri Feb 5 10:44:45 2016 +0100 + + registrybackend: get whether a key is writable or not + + gio/gregistrysettingsbackend.c | 31 ++++++++++++++++++++++++++++++- + 1 file changed, 30 insertions(+), 1 deletion(-) + +commit 604ca891769c664273beb519f315c6c327f48478 +Author: Руслан Ижбулатов +AuthorDate: Fri Feb 5 09:40:30 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Fri Feb 5 09:40:30 2016 +0100 + + registrybackend: do convert values to UTF-16 + + Perform conversion before writing a value out of the cache into + the registry, + and convert back when reading a value into the cache out of the + registry. + The registry holds UTF-8 strings. + + gio/gregistrysettingsbackend.c | 30 ++++++++++++++++++++++++++++++ + 1 file changed, 30 insertions(+) + +commit c4d943186e2709a975c574dfb396b911ca988a55 +Author: Руслан Ижбулатов +AuthorDate: Fri Feb 5 09:39:21 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Fri Feb 5 09:39:21 2016 +0100 + + registrybackend: fix memory leak + + gio/gregistrysettingsbackend.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit b8fc289e8fa126fec89d5b753bb05f80a75d57d9 +Author: Ignacio Casal Quinteiro +AuthorDate: Thu Feb 4 12:44:11 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Feb 4 12:44:11 2016 +0100 + + registrybackend: remove useless include + + gio/gregistrysettingsbackend.c | 1 - + 1 file changed, 1 deletion(-) + +commit 74442a0b8c59adf110b9072ac50955f45f59130c +Author: Ignacio Casal Quinteiro +AuthorDate: Thu Feb 4 11:16:45 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Feb 4 11:16:45 2016 +0100 + + registrybackend: do not leak self if there are no items + + gio/gregistrysettingsbackend.c | 13 +++++-------- + 1 file changed, 5 insertions(+), 8 deletions(-) + +commit dc97bb9b9b0ee0e0566d6a9752e06694f8e4985b +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Feb 2 13:12:22 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Feb 4 11:02:46 2016 +0100 + + registrybackend: handle readability of the keys + + If a key is removed or it cannot be read anymore we should + notify the backend about it so it fallbacks to the default + value. + + gio/gregistrysettingsbackend.c | 42 + +++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 41 insertions(+), 1 deletion(-) + +commit 05dd91a0b6cc8d036d1ef2c0ad457c966223989e +Author: Ignacio Casal Quinteiro +AuthorDate: Thu Feb 4 08:39:24 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Feb 4 08:59:59 2016 +0100 + + registrybackend: use unicode calls intead of the ansi ones + + https://bugzilla.gnome.org/show_bug.cgi?id=761504 + + gio/gregistrysettingsbackend.c | 107 + ++++++++++++++++++++++++++++++----------- + 1 file changed, 79 insertions(+), 28 deletions(-) + +commit 7161d709555c655827118c02b58b2f6f376883da +Author: Ignacio Casal Quinteiro +AuthorDate: Thu Feb 4 07:55:25 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Feb 4 07:55:25 2016 +0100 + + registrybackend: remove useless get_permission override + + The base class does the same + + gio/gregistrysettingsbackend.c | 8 -------- + 1 file changed, 8 deletions(-) + +commit 259a61ed2d71d517d538b74d0ce9814bd1e09168 +Author: Ignacio Casal Quinteiro +AuthorDate: Wed Feb 3 19:19:50 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Wed Feb 3 19:19:50 2016 +0100 + + registrybackend: pass the event to the cache update + + This way the registry cache has more control to specify what has + changed. + + gio/gregistrysettingsbackend.c | 38 + +++++++++++++++++++++----------------- + 1 file changed, 21 insertions(+), 17 deletions(-) + +commit e3189527dc1ae5da614c5f4693d1240395e093b8 +Author: Rico Tzschichholz +AuthorDate: Wed Feb 3 18:12:04 2016 +0100 +Commit: Rico Tzschichholz +CommitDate: Wed Feb 3 18:13:49 2016 +0100 + + gio/gobject: Various introspection fixes + + gio/gdbusaddress.c | 4 ++-- + gobject/gclosure.c | 2 +- + gobject/gsignal.c | 2 +- + gobject/gvaluetypes.c | 2 +- + 4 files changed, 5 insertions(+), 5 deletions(-) + +commit c7ea434e2ce4e12a7d92dfbdff2b1e4002d78975 +Author: Ignacio Casal Quinteiro +AuthorDate: Wed Feb 3 13:07:52 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Wed Feb 3 13:10:09 2016 +0100 + + registrybackend: properly propagate the partial key name + + gio/gregistrysettingsbackend.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit 7522d5c9828da1dea86cc9878cd08c485290949f +Author: Matej Urbančič +AuthorDate: Tue Feb 2 17:50:11 2016 +0100 +Commit: Matej Urbančič +CommitDate: Tue Feb 2 17:50:11 2016 +0100 + + Updated Slovenian translation + + po/sl.po | 345 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 181 insertions(+), 164 deletions(-) + +commit 927a4ed2f435cc7561b489807706f5f6da0fba23 +Author: Rico Tzschichholz +AuthorDate: Tue Feb 2 11:13:08 2016 +0100 +Commit: Rico Tzschichholz +CommitDate: Tue Feb 2 17:38:05 2016 +0100 + + gstring: Explictly annotate return-values with (transfer none/full) + + https://bugzilla.gnome.org/show_bug.cgi?id=744570 + + glib/gstring.c | 48 ++++++++++++++++++++++++------------------------ + 1 file changed, 24 insertions(+), 24 deletions(-) + +commit f1a5e394b05e6f69a3926df960c623c57494a4e2 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Feb 2 14:48:22 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Feb 2 14:48:22 2016 +0100 + + registrybackend: rename touched flag to readable + + This is a flag used to understand if a key exists on the registry + and if it is readable. It makes more sense to rename it as readable + since anyway a key that does not exists anymore is a key that is + not readable. + + gio/gregistrysettingsbackend.c | 23 +++++++++++------------ + 1 file changed, 11 insertions(+), 12 deletions(-) + +commit 5cc997f7c4d521bf824855c3a63b568186cbeb52 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Feb 2 09:15:10 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Feb 2 11:08:50 2016 +0100 + + registrybackend: close the key only if successfully opened + + gio/gregistrysettingsbackend.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit bf3f827ca1805519405904b4b929348510aa5b61 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Feb 2 08:25:29 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Feb 2 11:08:42 2016 +0100 + + registrybackend: use ptr_array_new_with_free_func + + gio/gregistrysettingsbackend.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +commit 9098a7f9271492d1e1c359fdfec25da804f5bda2 +Author: Ignacio Casal Quinteiro +AuthorDate: Mon Feb 1 17:17:35 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Feb 2 11:04:56 2016 +0100 + + registrybackend: minor style cleanup + + gio/gregistrysettingsbackend.c | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +commit d268d9f86ad39328a20567ffa8b6e1cc7e1d0205 +Author: Rico Tzschichholz +AuthorDate: Mon Nov 23 11:16:29 2015 +0100 +Commit: Rico Tzschichholz +CommitDate: Tue Feb 2 10:15:04 2016 +0100 + + socket: Fix annotation of g_socket_receive_message + + https://bugzilla.gnome.org/show_bug.cgi?id=761337 + + gio/gsocket.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit ec173eb654cf054198dd4b21d87f1c750e5c3c98 +Author: Rico Tzschichholz +AuthorDate: Sat Jan 30 20:57:44 2016 +0100 +Commit: Rico Tzschichholz +CommitDate: Tue Feb 2 10:11:08 2016 +0100 + + application: Fix annoation of g_application_add_option_group + + https://bugzilla.gnome.org/show_bug.cgi?id=761337 + + gio/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 169cfb250f2571624c57d074b829ca4005509ee6 +Author: Ignacio Casal Quinteiro +AuthorDate: Mon Feb 1 14:25:05 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Mon Feb 1 14:25:05 2016 +0100 + + registrybackend: avoid signed/unsigned comparison warnings + + gio/gregistrysettingsbackend.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +commit b0776ddd1850f5ca91fe50c11311fe5c9c90cf53 +Author: Ignacio Casal Quinteiro +AuthorDate: Mon Feb 1 14:24:46 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Mon Feb 1 14:24:46 2016 +0100 + + registrybackend: use G_DECLARE_FINAL_TYPE + + gio/gregistrysettingsbackend.c | 12 +++--------- + 1 file changed, 3 insertions(+), 9 deletions(-) + +commit 2d7cac366db997e67b7cdfb0538f6454538e0dce +Author: Alexander Shopov +AuthorDate: Mon Feb 1 06:20:03 2016 +0200 +Commit: Alexander Shopov +CommitDate: Mon Feb 1 06:21:09 2016 +0200 + + Updated Bulgarian translation + + po/bg.po | 1128 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 574 insertions(+), 554 deletions(-) + +commit 9183960df2ea975dc77595f7b408bf1d9254cd64 +Author: Daniel Mustieles +AuthorDate: Sun Jan 31 22:25:10 2016 +0100 +Commit: Daniel Mustieles +CommitDate: Sun Jan 31 22:25:10 2016 +0100 + + Updated Spanish translation + + po/es.po | 109 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 57 insertions(+), 52 deletions(-) + +commit c5931d1a16454eb0783d616ded6f33877b1e537f +Author: Hashem Nasarat +AuthorDate: Sun Jan 31 12:51:21 2016 -0500 +Commit: Hashem Nasarat +CommitDate: Sun Jan 31 12:54:28 2016 -0500 + + docs: fix grammar in Writing GLib Applications/Threads + + docs/reference/glib/programming.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 95dd373024901afdf31c020a2cc7966032b18866 +Author: Sébastien Wilmet +AuthorDate: Wed Apr 15 14:28:05 2015 +0200 +Commit: Sébastien Wilmet +CommitDate: Thu Jan 28 20:31:53 2016 +0100 + + docs: better documentation for g_file_info_copy_into() + + The documentation of g_file_info_copy_into() was misleading. The + attributes are not just copied, @dest_info is also cleared at the + beginning. So any previously set attributes in @dest_info are lost. + + There was a bug in gedit about this function, where some metadata were + not saved. So it might make sense to change the implementation to not + clear @dest_info, and copy one by one the attributes from @src_info to + @dest_info. + + https://bugzilla.gnome.org/show_bug.cgi?id=747927 + + gio/gfileinfo.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f14052461b47653213cbcbbca8eaba16ee38ca32 +Author: Sébastien Wilmet +AuthorDate: Wed Apr 15 15:00:18 2015 +0200 +Commit: Sébastien Wilmet +CommitDate: Thu Jan 28 18:49:28 2016 +0100 + + docs: GRegex: @start_position is in bytes + + The start_position arguments are passed to pcre_exec() as the + startoffset, which is in bytes (not characters). + + I had recently a doubt about this, so it's better to document it. + + https://bugzilla.gnome.org/show_bug.cgi?id=747927 + + glib/gregex.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit a4ed89bf75190631087596be22f9eb10dc6e53ef +Author: Sébastien Wilmet +AuthorDate: Wed Apr 15 14:53:16 2015 +0200 +Commit: Sébastien Wilmet +CommitDate: Thu Jan 28 18:49:28 2016 +0100 + + docs: improve doc of g_file_info_list_attributes() + + The name_space can be NULL. + + https://bugzilla.gnome.org/show_bug.cgi?id=747927 + + gio/gfileinfo.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit dfd74a271db84726e114b1b891d6d39bd9925f5b +Author: Chun-wei Fan +AuthorDate: Thu Jan 28 15:55:11 2016 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Jan 28 15:55:11 2016 +0800 + + gwin32.c: Avoid a GCC warning + + Add a pair of braces to make things more clear, to avoid a warning + when -Wparentheses is used. + + Reported by Ignacio Casel Quinteiro. + + glib/gwin32.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit 42699e37bea10fc51dd1a79888dfd8edae84c70a +Author: Matthias Clasen +AuthorDate: Wed Jan 27 21:05:31 2016 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 27 21:05:31 2016 -0500 + + gio: Include filename in error message + + I'm tired of seeing 'No such file or directory' in the logs without + a hint as to what is actually wrong. Including the filename here + may help me tracking down a bug in the continuous infrastructure. + + gio/glocalfileenumerator.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit d20e88fd114afb5cce17699ac2afea440a30f87d +Author: Chun-wei Fan +AuthorDate: Tue Jan 26 23:23:42 2016 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jan 26 23:23:42 2016 +0800 + + gwinhttpfile.c: Fix build on Visual Studio + + Visual Studio, at least the older versions, cannot use L on macros + which + are defined as a constant string, plus the L must be applied to + all string + literals here. This does not look nice, but this is life... + + gio/win32/gwinhttpfile.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 56b0454ba560f693c96abe437952f19b372d90dc +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 26 15:41:08 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 26 15:41:08 2016 +0100 + + registrybackend: fix warning + + gio/gregistrysettingsbackend.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit b57eac68e5d27c44f1e2c1836d56bcd8d64b836d +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 26 15:22:48 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 26 15:22:48 2016 +0100 + + registrybackend: fix double-free error + + gio/gregistrysettingsbackend.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit df1ffe7e27927606cfefc94cdbb28fb660411749 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 26 14:35:31 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 26 14:35:31 2016 +0100 + + registrybackend: remove :( from messages + + gio/gregistrysettingsbackend.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 0200e4036c162476089c9359dd97d1c25b372840 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 26 13:26:41 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 26 13:26:41 2016 +0100 + + registrybackend: simplify g_message_win32_error + + gio/gregistrysettingsbackend.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit bc85dee6b3f403f94b742461427903069aa00621 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 26 13:19:56 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 26 13:19:56 2016 +0100 + + registrybackend: do not accept 0 as a windows error + + We might end up removing from the error stack the wrong error + and this might be missleading + + gio/gregistrysettingsbackend.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit bad7e4a1149b9bad2385fe1818040f55f3e385c5 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 26 13:15:51 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 26 13:15:51 2016 +0100 + + registrybackend: do not leak the watch data in case of failure + + gio/gregistrysettingsbackend.c | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +commit 9e805ffd4381cded7a53e29dc66d4a4b6d2b152d +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 26 10:57:44 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 26 12:55:55 2016 +0100 + + winiconv: update to upstream version + + To update this code you need to fetch the last version of the code + from: https://github.com/win-iconv/win-iconv + + Then you need to ensure 3 things: + - the line ends are in unix format + - some of the methods do not expose a const on the prototype + refer to the commit b8c13a01b6bd5601eb3519dd3b20daed4bbc2e72 + on how to fix it + - fix one uninitialized variable if not yet fixed upstream + refer to 7e0cb48dee9a8ecd87d403b7941ad3209eee658c + + https://bugzilla.gnome.org/show_bug.cgi?id=761126 + + glib/win_iconv.c | 616 + +++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 371 insertions(+), 245 deletions(-) + +commit 31aab1bd429605a54d3763e3bd0c96b8da45fe38 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 26 12:53:56 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 26 12:53:56 2016 +0100 + + registrybackend: do not leak key and event if it cannot add the watch + + gio/gregistrysettingsbackend.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit a92d97ff1f61cf84289b1be2891c45cdf47298ed +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 26 12:21:48 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 26 12:21:48 2016 +0100 + + registrybackend: more style fixes + + This is the never ending story + + gio/gregistrysettingsbackend.c | 137 + +++++++++++++++++++++-------------------- + 1 file changed, 71 insertions(+), 66 deletions(-) + +commit 1b5b0eff9a9d058d6db88109c524c352e118d98f +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 26 12:02:18 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 26 12:02:18 2016 +0100 + + registrybackend: fix possible crash if cache_node is NULL + + gio/gregistrysettingsbackend.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 67f6ede3e5cd5a99bb5d3c09df82224a67f2df66 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 26 11:46:37 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 26 11:46:51 2016 +0100 + + registrybackend: remove space before ++ + + gio/gregistrysettingsbackend.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 8f7aa273dea5d127249cb76d2f8a2ccc43802d28 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 26 11:42:05 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 26 11:42:33 2016 +0100 + + registrybackend: fix possible mem leak + + If the parameters do not validate we would leak the memory. + + gio/gregistrysettingsbackend.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +commit 305a9b12c974fa963f19fba42efeaeaabf7f5aae +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 26 10:13:02 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 26 10:13:02 2016 +0100 + + winhttpfile: use glib format string macro + + Like this we avoid some downstream patching for msys2 + + gio/win32/gwinhttpfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a89629db1db6893a20cc52dbe85d2e89a4ba285f +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 26 10:10:39 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 26 10:10:39 2016 +0100 + + registrybackend: use the glib format string macro + + gio/gregistrysettingsbackend.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a159bc939d6068c16b5096a4085b7b669cc5ca40 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 26 09:00:35 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 26 09:00:35 2016 +0100 + + registrybackend: more cleanups + + gio/gregistrysettingsbackend.c | 75 + +++++++++++++++++++++++++----------------- + 1 file changed, 45 insertions(+), 30 deletions(-) + +commit 7256f2289a844ad7a4ec09e73eaaad47df601431 +Author: Ignacio Casal Quinteiro +AuthorDate: Mon Jan 25 16:12:59 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Mon Jan 25 16:12:59 2016 +0100 + + registrybackend: more cleanups + + gio/gregistrysettingsbackend.c | 138 + +++++++++++++++++++++++------------------ + 1 file changed, 78 insertions(+), 60 deletions(-) + +commit a5e819c4c3eee7a27e162d2277cfed7e5feb2195 +Author: Ignacio Casal Quinteiro +AuthorDate: Mon Jan 25 16:01:45 2016 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Mon Jan 25 16:02:03 2016 +0100 + + registrybackend: style fixes + + gio/gregistrysettingsbackend.c | 425 + ++++++++++++++++++++--------------------- + 1 file changed, 210 insertions(+), 215 deletions(-) + +commit 3a201128c2775f49bb1c211059c2c0ae7c320a00 +Author: Balázs Meskó +AuthorDate: Mon Jan 25 11:58:07 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Mon Jan 25 11:58:07 2016 +0000 + + Updated Hungarian translation + + po/hu.po | 156 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 80 insertions(+), 76 deletions(-) + +commit 192781d4b5250b678c3ea6f28af878e9817f46c9 +Author: Sebastian Geiger +AuthorDate: Sun Jan 24 18:53:59 2016 +0100 +Commit: Sebastian Geiger +CommitDate: Sun Jan 24 22:04:33 2016 +0100 + + gregex: improve documentation for g_regex_new + + glib/gregex.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 8c263008bbd9c1ce221276229e548d7b15dcb0d0 +Author: Philip Withnall +AuthorDate: Mon Jan 11 14:23:45 2016 +0000 +Commit: Philip Withnall +CommitDate: Sun Jan 24 14:44:44 2016 +0000 + + build: Calculate ABS_GLIB_RUNTIME_LIBDIR at build time + + Rather than calculating it at configure time. This means it can expand + $libdir properly, and use the Make $(realpath) function rather than + invoking the non-portable `readlink -f`. + + This fixes problems where `readlink` would be called on an invalid + path + (due to a variable not being expanded) and would evaluate to "", which + would then cause things to be installed in the wrong place. + + https://bugzilla.gnome.org/show_bug.cgi?id=744772 + + configure.ac | 4 ---- + gio/Makefile.am | 6 ++++++ + glib/Makefile.am | 13 +++++++++++++ + gobject/Makefile.am | 14 ++++++++++++++ + 4 files changed, 33 insertions(+), 4 deletions(-) + +commit 57f9c590f94bd74d1b3b72656fd1cc1c76000980 +Author: Chun-wei Fan +AuthorDate: Tue Jan 19 13:03:41 2016 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Jan 20 17:20:27 2016 +0800 + + Visual Studio builds: Include pcre_version.c in build + + ... for builds using the PCRE bundled with the GLib sources, so that + pcre_version() will also be defined, and be exported so that the + regex test program + will properly link when the bundled PCRE sources are used. + + This is a follow-up commit to 476f30a. + + build/win32/vs10/glib-build-defines.props | 6 +++++- + build/win32/vs10/glib.vcxproj.filtersin | 3 +++ + build/win32/vs10/glib.vcxprojin | 14 ++++++++++++++ + build/win32/vs9/glib-build-defines.vsprops | 4 ++++ + build/win32/vs9/glib.vcprojin | 10 ++++++++++ + 5 files changed, 36 insertions(+), 1 deletion(-) + +commit 3c0cddfe80990a653ff7b38e1701d3950df642b6 +Author: Philip Withnall +AuthorDate: Tue Jan 19 17:02:03 2016 +0000 +Commit: Philip Withnall +CommitDate: Tue Jan 19 17:10:40 2016 +0000 + + gdbusobjectmanagerserver: Clarify recommended ObjectManager paths + + Otherwise people might try to export the object manager at ‘/’, + which + doesn’t work. And I have no intention of making it work. + + https://bugzilla.gnome.org/show_bug.cgi?id=760852 + + gio/gdbusobjectmanagerserver.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +commit 1725580f2653290c889140b1366103134acb79ad +Author: Philip Withnall +AuthorDate: Tue Jan 19 17:01:14 2016 +0000 +Commit: Philip Withnall +CommitDate: Tue Jan 19 17:01:14 2016 +0000 + + gdbusobjectmanagerserver: Convert a DocBook link to Markdown + + gio/gdbusobjectmanagerserver.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 6e752d3f8b918e524fbffe3ca6433418092aa415 +Author: Allison Ryan Lortie +AuthorDate: Mon Jan 18 12:27:38 2016 -0500 +Commit: Allison Ryan Lortie +CommitDate: Mon Jan 18 15:29:17 2016 -0500 + + GLib 2.47.5 + + NEWS | 31 ++++++++++++++++++++++++++++++- + configure.ac | 2 +- + 2 files changed, 31 insertions(+), 2 deletions(-) + +commit ceec96146ef734bd568c3085a4dff8d60148e13d +Author: Mario Blättermann +AuthorDate: Mon Jan 18 20:53:50 2016 +0100 +Commit: Mario Blättermann +CommitDate: Mon Jan 18 20:53:50 2016 +0100 + + Updated German translation + + po/de.po | 42 +++++++++++++++++++++++------------------- + 1 file changed, 23 insertions(+), 19 deletions(-) + +commit 85a23529ab8e3de4656c134fc3a380db91b1d762 +Author: Emmanuele Bassi +AuthorDate: Mon Jan 18 18:48:42 2016 +0000 +Commit: Emmanuele Bassi +CommitDate: Mon Jan 18 18:48:42 2016 +0000 + + Revert "make *_get_instance_private const-compliant" + + This reverts commit a3a9664ed202303b899ca55625877542309d1a1f. + + Constifying the autogenerated get_instance_private functio makes C++ + compilers and GCC with -Wcast-qual warn during compilation of GLib and + projects depending on GLib. + + Since using const with GObject instances is not a common coding + practice, it's better to revert than trying to make every sigle GType + function const-safe (and possibly add more compiler warnings in the + process). + + https://bugzilla.gnome.org/show_bug.cgi?id=745068 + + gobject/gtype.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 617189f28c5d3eb05d7d09fe453b6f98c87d8a40 +Author: Emmanuele Bassi +AuthorDate: Mon Jan 18 18:46:12 2016 +0000 +Commit: Emmanuele Bassi +CommitDate: Mon Jan 18 18:46:12 2016 +0000 + + Revert "G_DECLARE_*: be const-compliant" + + This reverts commit 52f23db74ad58b822bafb0fdcac106489d864f8c. + + Constifying these macros make C++ compilers and GCC with -Wcast-qual + warn during compilation of GLib and projects depending on GLib. + + Since using const with GObject instances is not a common coding + practice, it's better to revert than trying to make every sigle GType + function const-safe (and possibly add more compiler warnings in the + process). + + https://bugzilla.gnome.org/show_bug.cgi?id=745068 + + gobject/gtype.h | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 476f30a00475f9643fc1638b9d9abf52b308b100 +Author: Iain Lane +AuthorDate: Mon Jan 18 18:30:58 2016 +0000 +Commit: Emmanuele Bassi +CommitDate: Mon Jan 18 18:37:28 2016 +0000 + + regex test: Fix with --with-pcre=internal + + We were linking with the wrong path for the internal libpcre, and + furthermore the function pcre_version was declared but never defined. + + glib/pcre/Makefile.am | 1 + + glib/pcre/pcre_version.c | 95 + ++++++++++++++++++++++++++++++++++++++++++++++++ + glib/tests/Makefile.am | 2 +- + 3 files changed, 97 insertions(+), 1 deletion(-) + +commit 9b8a34b5b33cb631f8abde42227841cfe099af74 +Author: Iain Lane +AuthorDate: Fri Jan 15 17:58:33 2016 +0000 +Commit: Allison Ryan Lortie +CommitDate: Mon Jan 18 12:19:12 2016 -0500 + + regex test: Assert /(?Pfoo)\\g +AuthorDate: Fri Jan 15 17:56:40 2016 +0000 +Commit: Allison Ryan Lortie +CommitDate: Mon Jan 18 12:19:12 2016 -0500 + + regex test: Check the expected PCRE version at runtime + + We might be built against a newer version than we're run against. + + https://bugzilla.gnome.org/show_bug.cgi?id=760683 + + glib/tests/Makefile.am | 13 ++++++++++++- + glib/tests/regex.c | 37 +++++++++++++++++++++++++++++-------- + 2 files changed, 41 insertions(+), 9 deletions(-) + +commit c3d6934f1838ae7c0d961c3d205f4b59789478ee +Author: Philip Withnall +AuthorDate: Thu Jun 25 12:58:14 2015 +0100 +Commit: Philip Withnall +CommitDate: Mon Jan 18 14:25:06 2016 +0000 + + gio: Add DTLS interfaces + + Add a new GDtlsConnection interface, plus derived + GDtlsClientConnection + and GDtlsServerConnection interfaces, for implementing Datagram TLS + support in glib-networking. + + A GDtlsConnection is a GDatagramBased, so may be used as a normal + datagram socket, wrapping all datagrams from a base GDatagramBased in + DTLS segments. + + Test cases are included in the implementation in glib-networking. + + https://bugzilla.gnome.org/show_bug.cgi?id=752240 + + docs/reference/gio/gio-docs.xml | 3 + + docs/reference/gio/gio-sections.txt | 81 +++ + docs/reference/gio/gio.types | 3 + + gio/Makefile.am | 6 + + gio/gdtlsclientconnection.c | 273 ++++++++++ + gio/gdtlsclientconnection.h | 75 +++ + gio/gdtlsconnection.c | 975 + ++++++++++++++++++++++++++++++++++++ + gio/gdtlsconnection.h | 191 +++++++ + gio/gdtlsserverconnection.c | 95 ++++ + gio/gdtlsserverconnection.h | 69 +++ + gio/gdummytlsbackend.c | 109 ++++ + gio/gio.h | 3 + + gio/giotypes.h | 3 + + gio/gtlsbackend.c | 68 ++- + gio/gtlsbackend.h | 14 + + gio/gtlsconnection.c | 2 + + po/POTFILES.in | 3 + + 17 files changed, 1970 insertions(+), 3 deletions(-) + +commit e3ab6ab38a69fe20f182703052387fa1cad21205 +Author: Chun-wei Fan +AuthorDate: Mon Jan 18 16:04:45 2016 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Jan 18 16:04:45 2016 +0800 + + Visual Studio builds: Rearrange build configs + + This is a follow-up commit for commit 82c2461, where the default + build is + to use the PCRE that is installed in the system, if it is available + and is + not overridden with --with-internal-pcre. + + For Visual Studio builds, this means that the new 'Debug' and + 'Release' + configs will now use PCRE that is found on the system, which were + renamed + from the '*_ExtPCRE' configs; and that there are now + 'Debug_BundledPCRE' + and 'Release_BundledPCRE' configs which make use of the PCRE that is + supplied with the GLib sources, which, replaces the former 'Debug' and + 'Release' configs. + + build/win32/vs10/glib.sln | 248 +++++++++--------- + build/win32/vs10/glib.vcxprojin | 550 + ++++++++++++++++++++-------------------- + build/win32/vs9/glib.sln | 248 +++++++++--------- + build/win32/vs9/glib.vcprojin | 336 ++++++++++++------------ + 4 files changed, 691 insertions(+), 691 deletions(-) + +commit 407a4e9e4e02c82a2e6371958487cd0a7ad704d3 +Author: Chun-wei Fan +AuthorDate: Mon Jan 18 14:08:40 2016 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Jan 18 14:08:40 2016 +0800 + + tests: Fix regex test conditions + + Commit 855594c changed the expected error for the regex + /(?Pfoo)\g +AuthorDate: Fri Apr 17 16:04:31 2015 +0000 +Commit: Руслан Ижбулатов +CommitDate: Thu Jan 14 15:11:08 2016 +0000 + + Make gnulib vfprintf return the number of bytes actually written + + To be honest, i don't remember what problems were caused by it + returning the + number of bytes it *wanted* to write instead of the number of bytes + it actually wrote. Probably related to the fact that fwrite could + independently fail, and ignoring its return value ignores that error. + + https://bugzilla.gnome.org/show_bug.cgi?id=748064 + + glib/gnulib/printf.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 82c2461e3d719dfe11361c07502d1cf8a998c121 +Author: Simon McVittie +AuthorDate: Tue Jan 5 12:20:20 2016 +0000 +Commit: Simon McVittie +CommitDate: Thu Jan 14 13:09:06 2016 +0000 + + Use system PCRE unless --with-pcre=internal is given + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=740573 + Reviewed-by: Emmanuele Bassi + Signed-off-by: Simon McVittie + + NEWS | 7 +++++++ + README.in | 7 +++++++ + configure.ac | 4 +++- + 3 files changed, 17 insertions(+), 1 deletion(-) + +commit 855594c4de5acaea53bb413c6302d19ff7befd17 +Author: Simon McVittie +AuthorDate: Wed Dec 23 15:03:16 2015 +0000 +Commit: Simon McVittie +CommitDate: Thu Jan 14 12:54:25 2016 +0000 + + regex test: expect ASSERTION_EXPECTED for /(?(?). + + The regex /(?Pfoo)\g + Reviewed-by: Emmanuele Bassi + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=759808 + + glib/tests/regex.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 86c5d8978d75f88aaa14ab8ed6186212abcb8f19 +Author: Allison Ryan Lortie +AuthorDate: Wed Jan 13 10:50:46 2016 -0500 +Commit: Allison Ryan Lortie +CommitDate: Wed Jan 13 10:51:44 2016 -0500 + + GDBusMethodInvocation: document behaviour change + + We changed the behaviour of this API to adapt to a change in the D-Bus + specification. Document the new behaviour, along with the time of the + change. + + https://bugzilla.gnome.org/show_bug.cgi?id=755421 + + gio/gdbusmethodinvocation.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit dbea81b02dc17f3e1935cdeb712d2728e3386812 +Author: Lars Uebernickel +AuthorDate: Fri Oct 30 11:24:19 2015 +0100 +Commit: Allison Ryan Lortie +CommitDate: Wed Jan 13 10:44:49 2016 -0500 + + gdbus: don't send unexpected replies + + gdbus sets NO_REPLY_EXPECTED when no callback is given to + g_dbus_connection_call(). It makes sense that it also handles + the server + side correctly by discarding replies to clients that don't want one. + + https://bugzilla.gnome.org/show_bug.cgi?id=755421 + + gio/gdbusmethodinvocation.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit 5dbb3453d79acaf8cec5aa03597f42701c5a2a74 +Author: Aurimas Černius +AuthorDate: Tue Jan 12 22:30:05 2016 +0200 +Commit: Aurimas Černius +CommitDate: Tue Jan 12 22:30:05 2016 +0200 + + Updated Lithuanian translation + + po/lt.po | 82 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 41 insertions(+), 41 deletions(-) + +commit 6b577196eed0754d2805fd48caa64f58f9bb8ee4 +Author: Javier Jardón +AuthorDate: Mon Jan 11 16:07:06 2016 +0000 +Commit: Javier Jardón +CommitDate: Mon Jan 11 16:07:06 2016 +0000 + + Deprecate GLIB_GNU_GETTEXT macro, use upstream gettext instead + + https://bugzilla.gnome.org/show_bug.cgi?id=624186 + + m4macros/glib-gettext.m4 | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 3add5e2837d83b253acfd861dbf8bb980076e4f0 +Author: Philip Withnall +AuthorDate: Fri Sep 26 14:01:16 2014 +0100 +Commit: Philip Withnall +CommitDate: Mon Jan 11 15:58:42 2016 +0000 + + gio: Document thread safety of the streams API + + Specifically, GIOStream and the TLS connection streams. + + Includes wording adapted from suggestions by Dan Winship + . + + https://bugzilla.gnome.org/show_bug.cgi?id=735754 + + gio/ginputstream.c | 5 ++++- + gio/giostream.c | 22 ++++++++++++++++++++++ + gio/goutputstream.c | 5 ++++- + gio/gtlsclientconnection.c | 4 ++++ + gio/gtlsconnection.c | 9 +++++++-- + gio/gtlsserverconnection.c | 4 ++++ + 6 files changed, 45 insertions(+), 4 deletions(-) + +commit 18fe6d83125f2cd2a3e355396f90ea979e42b37d +Author: David King +AuthorDate: Sun Jan 10 23:20:37 2016 +0000 +Commit: David King +CommitDate: Mon Jan 11 09:33:32 2016 +0000 + + docs: add Since for g_str_to_ascii + + glib/gtranslit.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 4e78a0a9df45961701d224326fbb9b93dcecf134 +Author: Javier Jardón +AuthorDate: Sun Jan 10 22:44:24 2016 +0000 +Commit: Javier Jardón +CommitDate: Sun Jan 10 22:44:24 2016 +0000 + + Revert "Use upstream gettext instead the glib one" + + This causes several problems: + - Compilation in FreeBSD with --enable-gtk-doc broke + - Modules that still use the AM_GLIB_GNU_GETTEXT macro + doesnt compile anymore because /usr/share/glib-2.0/gettext + is not filled with the correct files, as this was done in + the glib custom po/Makefile.in.in + + See https://bugzilla.gnome.org/show_bug.cgi?id=622991 + + This reverts commit e5c752371c7fb1343eff27b5f1d0bcbef4e333b9. + + Makefile.am | 1 - + configure.ac | 14 ++- + gio/Makefile.am | 1 - + glib/Makefile.am | 1 - + m4macros/Makefile.am | 11 +-- + po/Makefile.in.in | 268 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + po/Makevars | 89 ----------------- + 7 files changed, 281 insertions(+), 104 deletions(-) + +commit edfb3ead7793dc3e7fdc0f8193126d1a5079be1a +Author: Anders Jonsson +AuthorDate: Sun Jan 10 22:07:26 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Jan 10 22:07:26 2016 +0000 + + Updated Swedish translation + + po/sv.po | 124 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 62 insertions(+), 62 deletions(-) + +commit e5c752371c7fb1343eff27b5f1d0bcbef4e333b9 +Author: Javier Jardón +AuthorDate: Tue Jul 15 20:37:44 2014 +0000 +Commit: Javier Jardón +CommitDate: Sat Jan 9 18:49:22 2016 +0000 + + Use upstream gettext instead the glib one + + https://bugzilla.gnome.org/show_bug.cgi?id=622991 + + Makefile.am | 1 + + configure.ac | 14 +-- + gio/Makefile.am | 1 + + glib/Makefile.am | 1 + + m4macros/Makefile.am | 11 ++- + po/Makefile.in.in | 268 + --------------------------------------------------- + po/Makevars | 89 +++++++++++++++++ + 7 files changed, 104 insertions(+), 281 deletions(-) + +commit c1e2a8d72766323181c804b47547242bd70460e9 +Author: Matt Watson +AuthorDate: Fri Jan 8 16:06:53 2016 -0800 +Commit: Cosimo Cecchi +CommitDate: Fri Jan 8 18:08:20 2016 -0800 + + resource file: add cancel to dummy monitor + + gfilemonitor has a cancel vfunc and will call into the in dispose. + If we don't stub it out we get a segfault. + + gio/gresourcefile.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 50645b724a3b43767fd57e4af53365d0cd270382 +Author: Daiki Ueno +AuthorDate: Tue Jan 5 11:07:05 2016 +0900 +Commit: Daiki Ueno +CommitDate: Fri Jan 8 12:31:18 2016 +0900 + + gsettings: Install gettext ITS rules + + Recent gettext has a feature to allow consumer projects to supply + their + own string extraction rules for XML files, in ITS format. + + Gettext still ships the rule for *.gschema.xml, but it would be better + maintained in the upstream project. + + See the gettext documentation for details: + http://www.gnu.org/software/gettext/manual/html_node/Preparing-ITS-Rules.html + + https://bugzilla.gnome.org/show_bug.cgi?id=760199 + + gio/Makefile.am | 3 +++ + gio/gschema.its | 25 +++++++++++++++++++++++++ + gio/gschema.loc | 10 ++++++++++ + 3 files changed, 38 insertions(+) + +commit ea5ca11761b945cb27f685254afec5d3d56f2670 +Author: Christophe Fergeau +AuthorDate: Fri Nov 27 17:54:07 2015 +0100 +Commit: Christophe Fergeau +CommitDate: Thu Jan 7 15:21:08 2016 +0100 + + gio: Document that g_inet_address_new_* return value must be + g_object_unref'ed + + gio/ginetaddress.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit b6edac5aca160704f2bfbba541beee5b1f994a18 +Author: Christophe Fergeau +AuthorDate: Thu Nov 26 14:26:27 2015 +0100 +Commit: Christophe Fergeau +CommitDate: Thu Jan 7 15:21:04 2016 +0100 + + glib: Clarify g_warn_if_reached API doc + + Its documentation mentions that it logs a 'critical warning', + but since + the macro implementation calls g_warn_message(), it does not log a + critical message, but a regular warning. + + glib/gmessages.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b44fba25fbad89c105795a10a569fe422e4d1c44 +Author: Stephan Bergmann +AuthorDate: Wed Jan 6 16:25:49 2016 +0100 +Commit: Colin Walters +CommitDate: Wed Jan 6 10:33:04 2016 -0500 + + G_LIKELY/_UNLIKELY macros need more parentheses + + ...for cases like + + #include "glib.h" + #define COMMA , + void f(void) { if (G_LIKELY(0 COMMA 1)); } + + https://bugzilla.gnome.org/show_bug.cgi?id=760215 + + glib/gmacros.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit e91e811f020569fe3dae876ffa704fd3e452a33b +Author: Rafael Fontenelle +AuthorDate: Tue Jan 5 20:08:06 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Tue Jan 5 20:08:06 2016 +0000 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 320 + +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 167 insertions(+), 153 deletions(-) + +commit 786b4c8b8782e8ce62085595a8a87838307af8ba +Author: Chun-wei Fan +AuthorDate: Tue Jan 5 15:08:18 2016 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jan 5 15:15:38 2016 +0800 + + gwin32.c: Fix build on MinGW + + Apparently unlike mingw-w64 and Visual Studio, MinGW does not + come with + winternl.h, which defines NTSTATUS, so we need to include ntdef.h + instead + on MinGW for NTSTATUS. + + Based on patch by Cédric Krier. + + https://bugzilla.gnome.org/show_bug.cgi?id=756875 + + glib/gwin32.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 0309d645ad8149ed6e8bdb74a5c7272eea15546b +Author: Mario Blättermann +AuthorDate: Sat Jan 2 12:10:13 2016 +0000 +Commit: GNOME Translation Robot +CommitDate: Sat Jan 2 12:10:13 2016 +0000 + + Updated German translation + + po/de.po | 323 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 169 insertions(+), 154 deletions(-) + +commit 2e918501db4175aa9fc0b1daafbf2e270a7f6f8f +Author: Marek Černocký +AuthorDate: Thu Dec 24 14:40:22 2015 +0100 +Commit: Marek Černocký +CommitDate: Thu Dec 24 14:40:22 2015 +0100 + + Updated Czech translation + + po/cs.po | 328 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 170 insertions(+), 158 deletions(-) + +commit 30788dff5b940d34b4ce0594a7109f972b38686d +Author: Philip Withnall +AuthorDate: Wed Dec 23 16:48:10 2015 +0000 +Commit: Philip Withnall +CommitDate: Wed Dec 23 16:48:10 2015 +0000 + + gutf8: Fix typo in GIR annotation for g_utf8_to_ucs4() + + glib/gutf8.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 42b160b19f18ccb86fecac4553242ebd7ee8b78b +Author: Steven Chamberlain +AuthorDate: Tue Dec 22 09:28:36 2015 +0100 +Commit: Allison Ryan Lortie +CommitDate: Wed Dec 23 09:40:54 2015 -0500 + + gio: drop obsoleted lock causing deadlocks on FreeBSD + + I think it is a recursion from the GUnixMountMonitor constructor, to a + GLocalFileMonitor on /etc/fstab, and into GUnixMountMonitor again, now + with a mutex already held, so it deadlocks. + https://bugzilla.gnome.org/page.cgi?id=traceparser/trace.html&trace_id=235354 + + That mutex in glocalfile.c:g_local_file_find_enclosing_mount() doesn't + seem necessary any more IMHO. Inside it, only 'mount' is modified, + but + that's just a stack variable local to this function. When + klass->get_mount_for_mount_path is called, it's given one const + parameter and the other is unused, so they're unchanged. 'klass' + doesn't seem it could be modified either inside that function. + + It doesn't recurse infinitely, but seems to work correctly and + pass the + testsuite after this change. + + The FreeBSD project already applied my patch in their ports tree, and + their users seem happy with it. + + See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=712848#64 + and https://bugzilla.gnome.org/show_bug.cgi?id=753378 + + gio/gunionvolumemonitor.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +commit bec6a9a3003d95077ad23c235a9313d79c6a1c4f +Author: Chun-wei Fan +AuthorDate: Mon Dec 21 14:54:42 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Dec 22 17:33:33 2015 +0800 + + g_application_run(): Fix on Windows When Using Bindings + + As g_win32_get_command_line() calls CommandLineToArgvW() to acquire + the + arguments passed into a GApplication program, it actually returns the + whole command line which is used to invoke the program, including the + script interpreter and its flags when a script using GNOME bindings + (e.g. PyGObject and so on) is being invoked. + + The issue here is that g_application_run() would most probably have + trouble in the scripts scenario on Windows as it is likely unable to + "recognize" the script interpreter, causing such scripts to fail + to run. + + Largely based on the patch by Ray Donnelly . + + https://bugzilla.gnome.org/show_bug.cgi?id=734095 + + gio/gapplication.c | 29 ++++++++++++++++++++++++++++- + 1 file changed, 28 insertions(+), 1 deletion(-) + +commit 5f4b92202b2a36097ffa54fc7dbf96f692074069 +Author: Ignacio Casal Quinteiro +AuthorDate: Mon Dec 21 12:21:03 2015 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Mon Dec 21 12:22:10 2015 +0100 + + win32: fix warnings avoid discarding const qualifier + + gio/win32/gwin32fsmonitorutils.c | 4 ++-- + gio/win32/gwin32fsmonitorutils.h | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 07e55c049dd1d12ab5eff8397cea65587c3dc54f +Author: Aurimas Černius +AuthorDate: Sun Dec 20 15:02:49 2015 +0200 +Commit: Aurimas Černius +CommitDate: Sun Dec 20 15:02:49 2015 +0200 + + Updated Lithuanian translation + + po/lt.po | 386 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 198 insertions(+), 188 deletions(-) + +commit aa9a33b0dabb68a6586956d6d4aa0c861e534321 +Author: Xavier Claessens +AuthorDate: Wed Dec 16 11:34:41 2015 -0500 +Commit: Xavier Claessens +CommitDate: Wed Dec 16 11:44:43 2015 -0500 + + GApplication: Avoid getting the default context repeatidly + + This avoids getting a global lock on every main loop iteration. + + https://bugzilla.gnome.org/show_bug.cgi?id=759554 + + gio/gapplication.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit 1f341afa9acfb05afb02b73a4dff8992e0464aaa +Author: Matthias Clasen +AuthorDate: Wed Dec 16 09:16:35 2015 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 16 09:16:35 2015 -0500 + + More updates + + NEWS | 1 + + 1 file changed, 1 insertion(+) + +commit a379a0ad59df0b377bd7b047d2e5a56417252992 +Author: Jasper St. Pierre +AuthorDate: Tue Jul 28 00:14:08 2015 -0700 +Commit: Matthias Clasen +CommitDate: Wed Dec 16 09:15:43 2015 -0500 + + gapplication: Acquire the main context before running + + Otherwise, we'll acquire it on every loop iteration, which can + leave us + vulnerable to racing another thread for the acquisition of the main + context. + + This can break methods like g_main_context_invoke, which try to + acquire + a context to figure out if it can invoke the method synchronously or + need to defer to an idle. In these cases, it isn't guaranteed that the + invocation function will be invoked in the default main context, + e.g. the one that GApplication is holding. + + This also matches what GMainLoop is doing. + + https://bugzilla.gnome.org/show_bug.cgi?id=752983 + + gio/gapplication.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 5e73ca974d37ce2cc2204d1fdf0bf13284668963 +Author: Matthias Clasen +AuthorDate: Wed Dec 16 06:30:53 2015 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 16 07:52:05 2015 -0500 + + 2.47.4 + + NEWS | 25 +++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 26 insertions(+), 1 deletion(-) + +commit ce985f13f475fbb2b1f8c7d5a1e5ff1fa12a8e81 +Author: Руслан Ижбулатов +AuthorDate: Sat May 2 23:46:06 2015 +0000 +Commit: Matthias Clasen +CommitDate: Wed Dec 16 07:47:54 2015 -0500 + + Enable contenttype test on W32, tweak it to pass (mostly) + + * On W32 use a real directory (SYSTEMROOT) instead of '/etc/' + * Disable test_symbolic_icon() as it can't be passed (symbolic icons + are not + really supported) + + * PowerPoint/Gettext test still fails, presumably because msvcrt + qsort() moves + the entires (both have the same priority) + + https://bugzilla.gnome.org/show_bug.cgi?id=735696 + + gio/tests/Makefile.am | 2 +- + gio/tests/contenttype.c | 15 ++++++++++++++- + 2 files changed, 15 insertions(+), 2 deletions(-) + +commit b86e46e8e7f89f6866cb2fbb917ae00ea9431185 +Author: Руслан Ижбулатов +AuthorDate: Sat May 2 23:27:31 2015 +0000 +Commit: Matthias Clasen +CommitDate: Wed Dec 16 07:47:54 2015 -0500 + + xdgmime: Finer handling for cases where mmap() is not available + + Allocate an empty cache object, check cache objects for being empty + before using them. + Otherwise the code will re-read cache every 5 seconds, as NULL cache + does not trigger the code that stores mtime, which makes the cache + file appear modified/unloaded permanently. + + https://bugzilla.gnome.org/show_bug.cgi?id=735696 + + gio/xdgmime/xdgmimecache.c | 91 + +++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 74 insertions(+), 17 deletions(-) + +commit 1513efc904cfb42ed5305fd77b40e1c399380d40 +Author: Simon Feltman +AuthorDate: Tue Oct 15 23:26:41 2013 -0700 +Commit: Matthias Clasen +CommitDate: Wed Dec 16 07:47:54 2015 -0500 + + Add GParamSpec object ref management annotations + + Add ref-func, unref-func, set-value-func, and get-value-func + annotations to + GParamSpec so that it can be managed generically as a fundamental + type with + introspection. + + https://bugzilla.gnome.org/show_bug.cgi?id=710243 + + gobject/gparam.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 04c56cf6e77488ce7447e7a99afbada4711a8916 +Author: Matthias Clasen +AuthorDate: Wed Oct 7 23:34:42 2015 -0400 +Commit: Matthias Clasen +CommitDate: Wed Dec 16 07:47:53 2015 -0500 + + gsettings: Don't translate "" + + The empty msgid is traditionally used to store po file metadata, + so calling gettext with an empty msgid is not the right thing + to do. + + https://bugzilla.gnome.org/show_bug.cgi?id=756214 + + gio/gsettingsschema.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 30359e740953b596d6c3d980dba36dd131681a1f +Author: Allison Ryan Lortie +AuthorDate: Mon Nov 30 10:13:46 2015 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 16 07:47:53 2015 -0500 + + file monitors: reorder some code to avoid segfault + + We must initialise '->source' before we use fields inside of it. + + https://bugzilla.gnome.org/show_bug.cgi?id=758823 + + gio/glocalfilemonitor.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit c2d0c40bffa02a0981c03115179c3373a057f1ec +Author: Stanislav Brabec +AuthorDate: Mon Nov 23 20:47:44 2015 +0100 +Commit: Matthias Clasen +CommitDate: Wed Dec 16 07:47:53 2015 -0500 + + Fix gettext use + + gettext() calls inside library have to use gi18n-lib.h. + + https://bugzilla.gnome.org/show_bug.cgi?id=758553 + + gio/gresource.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4cda92b587232f7d25cab4b7ef7ba043aad8e506 +Author: Roman Lebedev +AuthorDate: Thu Oct 29 14:41:48 2015 +0300 +Commit: Matthias Clasen +CommitDate: Wed Dec 16 07:47:53 2015 -0500 + + glib-compile-resources: do not leak c_name + + As per #578363, "if one requests e.g. strings via + GOptionEntry.arg_data + then those are strduped and needs to be free'ed by the application." + + Fixes following leak: + + ================================================================= + ==29426==ERROR: LeakSanitizer: detected memory leaks + + Direct leak of 10 byte(s) in 1 object(s) allocated from: + 0 0x7f3ab783d37a in malloc + (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x9437a) + 1 0x7f3ab70f7c82 in g_malloc + /home/lebedevri/src/glib/glib/gmem.c:94 + 2 0x7f3ab70f7f60 in g_malloc_n + /home/lebedevri/src/glib/glib/gmem.c:330 + 3 0x7f3ab713258e in g_strndup + /home/lebedevri/src/glib/glib/gstrfuncs.c:425 + 4 0x7f3ab709c86b in strdup_len + /home/lebedevri/src/glib/glib/gconvert.c:864 + 5 0x7f3ab709c966 in g_locale_to_utf8 + /home/lebedevri/src/glib/glib/gconvert.c:905 + 6 0x7f3ab7103c32 in parse_arg + /home/lebedevri/src/glib/glib/goption.c:1276 + 7 0x7f3ab71066fb in parse_long_option + /home/lebedevri/src/glib/glib/goption.c:1670 + 8 0x7f3ab7108047 in g_option_context_parse + /home/lebedevri/src/glib/glib/goption.c:1997 + 9 0x408532 in main + /home/lebedevri/src/glib/gio/glib-compile-resources.c:629 + 10 0x7f3ab6c72b44 in __libc_start_main + (/lib/x86_64-linux-gnu/libc.so.6+0x21b44) + + https://bugzilla.gnome.org/show_bug.cgi?id=757299 + + gio/glib-compile-resources.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 3272267b99670e1bfccf5aebe97ead5e6f8b1bab +Author: Christian Hergert +AuthorDate: Sun Apr 13 17:17:59 2014 -0700 +Commit: Matthias Clasen +CommitDate: Wed Dec 16 07:47:53 2015 -0500 + + macros: add G_GNUC_CHECK_VERSION() for compiler checks. + + https://bugzilla.gnome.org/show_bug.cgi?id=728099 + + docs/reference/glib/glib-sections.txt | 1 + + glib/docs.c | 15 +++++++++++++++ + glib/gmacros.h | 6 ++++++ + 3 files changed, 22 insertions(+) + +commit 21b1c390a3ce1f7e2816c6309f161c4b92470c46 +Author: Allison Ryan Lortie +AuthorDate: Fri Oct 30 15:39:23 2015 +0000 +Commit: Matthias Clasen +CommitDate: Wed Dec 16 07:47:53 2015 -0500 + + GApplication: destroy the impl on shutdown + + It's theoretically possible (and see in the wild) for D-Bus + messages to + come in to the application after shutdown() has been called and while + we're draining out the lingering events in the main context. + + Prevent this from happening by ensuring we unregister our objects on + D-Bus during the shutdown process. + + https://bugzilla.gnome.org/show_bug.cgi?id=757372 + + gio/gapplication.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit aa16359986a1cf5a77a70cb4f92e1f99de233572 +Author: Ryan Lortie +AuthorDate: Fri Oct 16 12:36:58 2015 +0100 +Commit: Matthias Clasen +CommitDate: Wed Dec 16 07:47:53 2015 -0500 + + Stop supporting non-POSIX getpwuid_r, getgrgid_r + + Bug 13403 introduced support for the non-POSIX variants of these APIs + found on a system called "DG/UX". Meanwhile, the complicated checks + here are breaking cross-builds on systems that we actually care about. + + Remove the complicated checks and replace them with AC_CHECK_FUNCS. + Remove the resulting dead code from a couple of .c files. + + https://bugzilla.gnome.org/show_bug.cgi?id=756475 + + configure.ac | 84 + ++-------------------------------------------------- + gio/glocalfileinfo.c | 8 ++--- + glib/gutils.c | 22 ++------------ + 3 files changed, 7 insertions(+), 107 deletions(-) + +commit c935237e75c4ed770d9efc9e8bd3be109889d994 +Author: Marius Gedminas +AuthorDate: Fri May 8 02:54:00 2015 -0400 +Commit: Olivier Crête +CommitDate: Tue Dec 15 19:40:43 2015 -0500 + + glib.py: Fix Python 3 TypeError in gdb pretty-printers + + https://bugzilla.gnome.org/show_bug.cgi?id=749092 + + glib/glib.py | 4 ++++ + 1 file changed, 4 insertions(+) + +commit c97729532f54043edb959a2bd2ca6c5df5135658 +Author: Paolo Borelli +AuthorDate: Sun Dec 13 19:32:39 2015 +0100 +Commit: Paolo Borelli +CommitDate: Mon Dec 14 14:32:17 2015 +0100 + + W32: fix uninitialized var in g_app_info_get_all_for_type + + Compare with the handler->app, not with the app var which is not + initialized yet + + https://bugzilla.gnome.org/show_bug.cgi?id=759408 + + gio/gwin32appinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 61136c2c7333a937adb20a4a43f32e66bf89c2f5 +Author: Matthias Clasen +AuthorDate: Mon Dec 14 07:43:24 2015 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 14 07:43:24 2015 -0500 + + Trivial doc comment fix + + Use the same Since: syntax throughout. + + glib/gunicode.h | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit e9c9ff607c024b6daecccb577923c62c0f63cf63 +Author: Andrey Gursky +AuthorDate: Fri Nov 20 03:25:28 2015 +0100 +Commit: Colin Walters +CommitDate: Mon Dec 7 20:52:10 2015 -0500 + + Add missing checks for gnulib vasnprintf() + + Commit 212e4232e7520b2e328e3e965ed792e17b12e144 introduced a big + update + of gnulib. Necessary changes to configure.ac from old gnulib commit + e8e63d1b31bca6c82713cba490b21a861abb24b5 have been forgotten. Actually + available functions are not discovered by autotools. + + https://bugzilla.gnome.org/show_bug.cgi?id=759134 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b3e0caa3e3a2c06e61f49f62112ca9b7f94840db +Author: Sebastian Rasmussen +AuthorDate: Wed Dec 2 21:12:12 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Wed Dec 2 21:12:12 2015 +0000 + + Updated Swedish translation + + po/sv.po | 511 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 261 insertions(+), 250 deletions(-) + +commit 244f9e66f97e37c9a1570e3d975f0d63b34ae4cd +Author: Chun-wei Fan +AuthorDate: Wed Dec 2 21:23:10 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Dec 2 21:23:10 2015 +0800 + + build/win32: Add NMake Makefile module for building tests and + introspection + + This adds a NMake Makefile module that can be used for building + tests and + introspection using, NMake. This is not yet distributed in the + main GLib + tarballs, but this is placed here as the base location as this is + intended to be used in projects that support Visual Studio builds and + support the build of tests and/or introspection under Visual Studio + using + NMake. + + build/win32/detectenv-msvc.mak | 76 + ++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 76 insertions(+) + +commit 80dcec234c74c073c72bceea9731006b525aa576 +Author: Chun-wei Fan +AuthorDate: Wed Dec 2 21:04:43 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Dec 2 21:04:43 2015 +0800 + + config.h.win32.in: Clean up a bit + + Remove the HAVE_*INLINE items from here as well, since 'inline' is + unconditionally defined in gmacros.h. + + config.h.win32.in | 17 ----------------- + 1 file changed, 17 deletions(-) + +commit a81568273c2fedf6ac435dcd51731f8e79840694 +Author: Emmanuele Bassi +AuthorDate: Tue Dec 1 12:57:02 2015 +0000 +Commit: Emmanuele Bassi +CommitDate: Tue Dec 1 12:57:02 2015 +0000 + + docs: Be more precise on the use of set_resource_base_path() + + The current wording is a bit vague on when to call + set_resource_base_path() in a GApplication implementation. + + gio/gapplication.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit cfdd4cabe793d897f6dafd61391374099cd5ea1e +Author: Chun-wei Fan +AuthorDate: Mon Nov 30 11:22:17 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 30 11:22:17 2015 +0800 + + glib/glibconfig.h.win32.in: Clean up a bit further + + Also get rid of the items regarding G_HAVE_*INLINE as they aren't used + anymore as they are removed from configure.ac. + + Thanks to John Emmas and desrt for the earlier patch for getting + rid of the C4005 warnings. + + glib/glibconfig.h.win32.in | 12 ------------ + 1 file changed, 12 deletions(-) + +commit f2fb877ef796c543f8ca166c7e05a434f163faf7 +Author: Allison Ryan Lortie +AuthorDate: Fri Nov 27 11:31:41 2015 -0500 +Commit: Allison Ryan Lortie +CommitDate: Fri Nov 27 11:31:41 2015 -0500 + + glibconfig.h.win32.in: remove G_CAN_INLINE + + We now define this unconditionally in gmacros.h. + + Thanks to John Emmas for the tip. + + https://bugzilla.gnome.org/show_bug.cgi?id=757374 + + glib/glibconfig.h.win32.in | 2 -- + 1 file changed, 2 deletions(-) + +commit ec6971b864a3faffadd0bf4a87c7c1b47697fc83 +Author: Allison Ryan Lortie +AuthorDate: Fri Nov 27 11:27:51 2015 -0500 +Commit: Allison Ryan Lortie +CommitDate: Fri Nov 27 11:27:51 2015 -0500 + + gtypes.h: move G_STATIC_ASSERT to function scope + + It seems that some compilers get upset if this is done at global + scope, + so let's move it to function scope where we know it works. + + glib/gtypes.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a266ac62ea1e4deb7edd9332b87b29097607d7c7 +Author: Allison Ryan Lortie +AuthorDate: Thu Nov 26 09:25:39 2015 -0500 +Commit: Allison Ryan Lortie +CommitDate: Thu Nov 26 09:26:45 2015 -0500 + + tests: fix a test on 32-bit builds + + We were trying to squeeze 64-bit test vectors into gsize, which + is fine + on 64bit systems but doesn't work very well on 32-bit. + + Change that to a guint64. + + glib/tests/overflow.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 978779044844f9ff793c10395443639cac964e31 +Author: Matthias Clasen +AuthorDate: Wed Nov 25 21:37:13 2015 -0500 +Commit: Matthias Clasen +CommitDate: Wed Nov 25 21:38:20 2015 -0500 + + GApplication: improve docs + + Spell out which GVariant format strings to use for which + commandline option types. I just wasted some time debugging + this in an application. + + gio/gapplication.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit db641e32920ee8b553ab6f2d318aafa156e4390c +Author: Evangelos Foutras +AuthorDate: Wed Nov 25 23:29:18 2015 +0200 +Commit: Colin Walters +CommitDate: Wed Nov 25 17:33:11 2015 -0500 + + GDBusProxy: Fix a memory leak during initialization + + https://bugzilla.gnome.org/show_bug.cgi?id=758641 + + gio/gdbusproxy.c | 1 + + 1 file changed, 1 insertion(+) + +commit be225b76a7c362b61c49cd81c4081be98b510aab +Author: Allison Ryan Lortie +AuthorDate: Wed Nov 25 09:14:30 2015 -0500 +Commit: Allison Ryan Lortie +CommitDate: Wed Nov 25 09:41:49 2015 -0500 + + GLib 2.47.3 + + NEWS | 10 ++++++++++ + configure.ac | 2 +- + 2 files changed, 11 insertions(+), 1 deletion(-) + +commit ba12fbf8f8861e634def9fc0fb5e9ea603269803 +Author: Allison Ryan Lortie +AuthorDate: Wed Nov 25 08:48:06 2015 -0500 +Commit: Allison Ryan Lortie +CommitDate: Wed Nov 25 08:48:53 2015 -0500 + + gutils: g_bit_ inlines: add visibility macros + + My careful efforts to preserve the exporting of these symbols on + our ABI + was thwarted by our symbol visibility filtering. Let's fix that. + + glib/gutils.h | 3 +++ + 1 file changed, 3 insertions(+) + +commit 4f18c671ab8c7d313a1b97f9aff4616dee73bb2e +Author: Allison Ryan Lortie +AuthorDate: Tue Nov 24 18:44:45 2015 +0000 +Commit: Allison Ryan Lortie +CommitDate: Tue Nov 24 19:44:46 2015 +0000 + + GLib 2.47.2 + + NEWS | 37 +++++++++++++++++++++++++++++++++++++ + configure.ac | 4 ++-- + 2 files changed, 39 insertions(+), 2 deletions(-) + +commit 398c048c66e71ec52a1799ea6fbd4c3b1554ec5e +Author: Allison Ryan Lortie +AuthorDate: Fri Nov 6 13:08:41 2015 -0500 +Commit: Allison Ryan Lortie +CommitDate: Tue Nov 24 18:44:02 2015 +0000 + + docs: remove GDBusObjectManager example + + This example has been causing on-and-off build breaks for quite some + time. In this case, the code for copying the generated content + into the + main docs of GIO is causing problems with srcdir != destdir builds + (due + to the files also being copied from the read-only srcdir during + distchecks). + + We could probably work around this problem yet again, but since + there is + no real benefit to having this content included, so let's remove it. + + https://bugzilla.gnome.org/show_bug.cgi?id=734469 + + configure.ac | 1 - + docs/reference/gio/Makefile.am | 21 +-- + .../gio/gdbus-object-manager-example/.gitignore | 1 - + .../gio/gdbus-object-manager-example/Makefile.am | 67 --------- + .../gdbus-object-manager-example-docs.xml | 17 --- + .../gdbus-object-manager-example-sections.txt | 161 + --------------------- + .../gdbus-object-manager-example.types | 10 -- + docs/reference/gio/migrating-gdbus.xml | 29 +--- + 8 files changed, 3 insertions(+), 304 deletions(-) + +commit 69003a0751971275b9cb32ac345e0d0c15c81ecd +Author: Tom Tryfonidis +AuthorDate: Mon Nov 23 14:58:36 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Mon Nov 23 14:58:49 2015 +0000 + + Updated Greek translation + (cherry picked from commit bf0f0135a32f1ec744ac951d3b759d592ed36872) + + po/el.po | 310 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 155 insertions(+), 155 deletions(-) + +commit 7bc6f021d7b65fd61194f366077efb1faafa96dc +Author: Allison Ryan Lortie +AuthorDate: Tue Nov 17 13:29:35 2015 -0500 +Commit: Allison Ryan Lortie +CommitDate: Tue Nov 17 13:43:49 2015 -0500 + + gmacros: fix unguarded use of __STDC_VERSION__ + + According to the C spec, any undefined identifier used in a #if + expression is taken to have a numerical value of zero. + + Commit db2367e8782d7a39fc3e93d13f6a16f10cad04c2 introduced an #i + statement which depended on this behaviour. + + gcc has a -Wundef option which warns about depending on this + behaviour, + and unfortunately there are projects that are using -Werror=undef in + builds that include our headers. + + Adding a check for defined(__STDC_VERSION__) before using the macro is + enough to silence gcc. + + glib/gmacros.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1ee2db4a286e4980213a849a13a9f46b5a0dd654 +Author: Daniel Mustieles +AuthorDate: Tue Nov 17 18:48:06 2015 +0100 +Commit: Daniel Mustieles +CommitDate: Tue Nov 17 18:48:06 2015 +0100 + + Updated Spanish translation + + po/es.po | 531 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 272 insertions(+), 259 deletions(-) + +commit f87e002313d566dcce71a9aba040d22ddb5c1e80 +Author: Dan Winship +AuthorDate: Mon Nov 16 16:57:38 2015 -0500 +Commit: Dan Winship +CommitDate: Mon Nov 16 16:57:38 2015 -0500 + + Fix g_strerror() on non-glibc + + When using one of the codepaths that copies the error string into buf, + make sure the string gets strdup() afterward. + + https://bugzilla.gnome.org/show_bug.cgi?id=758194 + + glib/gstrfuncs.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 03cb2eb088a79b7849eb526e0e1f3e2f4ee5b2e4 +Author: GNOME Translation Robot +AuthorDate: Mon Nov 16 18:20:41 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Mon Nov 16 18:20:41 2015 +0000 + + Added Scottish Gaelic translation + + po/LINGUAS | 1 + + po/gd.po | 4416 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 4417 insertions(+) + +commit db2367e8782d7a39fc3e93d13f6a16f10cad04c2 +Author: Allison Ryan Lortie +AuthorDate: Mon Nov 9 11:36:10 2015 -0500 +Commit: Allison Ryan Lortie +CommitDate: Mon Nov 16 13:14:19 2015 -0500 + + GLib: clean up the "inline" mess once and for all + + It's been a long time since we've been unconditionally saying "static + inline" in GLib headers without complaints so it's safe to assume that + all compilers that we care about support this. + + One thing that is not yet totally supported is the unadorned use + of the + word "inline". Depending on the flags (-std=c89, for example), + even GCC + will complain about this. Detect missing C99 support and define + "inline" to "__inline" in that case. Some research shows "__inline" + appears to be the most widely-supported keyword here, but we may + need to + tweak this if we get some reports of breakage. + + Clean up all of the configure checks around this and define + G_CAN_INLINE + unconditionally. Unfortunately, we must assume that some people are + still using G_IMPLEMENT_INLINES, we must continue to implement that + (including undefining G_CAN_INLINE and redefining G_INLINE_FUNC) if + requested. + + It is not our intent to break existing users of the old-style + G_INLINE_FUNC approach and if that has happened, we may need to make + some further adjustments. + + https://bugzilla.gnome.org/show_bug.cgi?id=757374 + + configure.ac | 105 + --------------------------------------------------------- + glib/docs.c | 19 +++++------ + glib/gmacros.h | 21 ++++++++++++ + glib/gutils.h | 35 ------------------- + 4 files changed, 30 insertions(+), 150 deletions(-) + +commit 9834f79279574e2cddc4dcb6149da9bd782dd40d +Author: Allison Ryan Lortie +AuthorDate: Mon Nov 9 16:12:18 2015 +0000 +Commit: Allison Ryan Lortie +CommitDate: Mon Nov 16 13:14:19 2015 -0500 + + gutils: clean up bit funcs inlining mess + + gutils.h and gutils.c define three utility functions as inlines + that are + also exported via the ABI. This is done via complicated G_INLINE_FUNC + and G_IMPLEMENT_INLINES logic. + + In order to be able to remove this mess, we create a another + convoluted + but slightly cleaner approach: write straight-up inline versions + of the + functions named _impl() in the header. Define macros with the + "public" + function names that call these inlines. From the .c file, export the + ABI versions of these functions, implemented using the _impl() + version. + + https://bugzilla.gnome.org/show_bug.cgi?id=757374 + + glib/gutils.c | 31 ++++++++++++++++++++++++------- + glib/gutils.h | 53 ++++++++++++++++++++++++++++++++--------------------- + 2 files changed, 56 insertions(+), 28 deletions(-) + +commit 0bfbb0d257593b2fcfaaf9bf09c586057ecfac25 +Author: Allison Ryan Lortie +AuthorDate: Mon Nov 9 15:54:58 2015 +0000 +Commit: Allison Ryan Lortie +CommitDate: Mon Nov 16 13:14:19 2015 -0500 + + GTrashStack: uninline and deprecate + + Deprecate GTrashStack and remove the inline implementations for the + functions. This will help us clean up the mess that is inline + functions + in GLib. + + Because of how G_INLINE_FUNC worked, we have these functions on + our ABI, + so we must continue to export them as normal functions. We are + safe to + remove the inline versions, however, because any existing binaries + will + continue to carry them and any new builds will just start using the + non-inline versions. + + https://bugzilla.gnome.org/show_bug.cgi?id=757374 + + glib/gtrashstack.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++--- + glib/gtrashstack.h | 67 + ++++++++---------------------------------------------- + 2 files changed, 68 insertions(+), 60 deletions(-) + +commit 7ab79b3879fa8b336ba3047f2399f26e1601f68e +Author: Ben Iofel +AuthorDate: Mon Nov 16 10:05:16 2015 -0500 +Commit: Dan Winship +CommitDate: Mon Nov 16 12:33:02 2015 -0500 + + GTask: fix example code in docs + + https://bugzilla.gnome.org/show_bug.cgi?id=758181 + + gio/gtask.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 448e01353abba452148b7547eaa255b0555ae575 +Author: Kjartan Maraas +AuthorDate: Sun Nov 15 23:59:35 2015 +0100 +Commit: Kjartan Maraas +CommitDate: Sun Nov 15 23:59:35 2015 +0100 + + Updated Norwegian bokmål translation. + + po/nb.po | 539 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 280 insertions(+), 259 deletions(-) + +commit c50bb218de95e1f4278fb1b4ad5f300b13364b85 +Author: Chun-wei Fan +AuthorDate: Thu Nov 12 15:26:20 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Nov 12 15:26:20 2015 +0800 + + MSVC 2010+ builds: Do not explicitly use /LTCG + + This partially reverts dc4361f. + + As we now ensure that items using GResources and GConstructors + are always + referenced so that the linker does not optimize them out in a default + Release build, we no longer need to enforce the use of /LTCG, so + /LTCG:incremental will work as well. + + build/win32/vs10/gdbus.vcxproj | 2 -- + build/win32/vs10/gio-querymodules.vcxproj | 2 -- + build/win32/vs10/gio.vcxprojin | 2 -- + build/win32/vs10/glib-compile-resources.vcxprojin | 2 -- + build/win32/vs10/glib-compile-schemas.vcxprojin | 2 -- + build/win32/vs10/glib-genmarshal.vcxproj | 2 -- + build/win32/vs10/glib.vcxprojin | 4 ---- + build/win32/vs10/gmodule.vcxproj | 2 -- + build/win32/vs10/gobject.vcxprojin | 2 -- + build/win32/vs10/gresource.vcxproj | 2 -- + build/win32/vs10/gsettings.vcxproj | 2 -- + build/win32/vs10/gspawn-win32-helper-console.vcxproj | 2 -- + build/win32/vs10/gspawn-win32-helper.vcxproj | 2 -- + build/win32/vs10/gthread.vcxproj | 2 -- + 14 files changed, 30 deletions(-) + +commit db4df9908e0137c14f5aeeefba899240c4724970 +Author: Chun-wei Fan +AuthorDate: Tue Nov 10 17:20:18 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Nov 12 15:01:54 2015 +0800 + + gconstructor: Work around constructors being optimized away on MSVC + + Whole program optimization is enabled by default in visual studio + release builds, and this causes constructors (for e.g. resources) + to be + optimized away as they are not referenced from elsewhere. + + This works around this by some pragma magic. + + https://bugzilla.gnome.org/show_bug.cgi?id=752837 + + glib/gconstructor.h | 38 ++++++++++++++++++++++++++++++++------ + 1 file changed, 32 insertions(+), 6 deletions(-) + +commit 228ad1ed9cf9eb64ac16475e902ff5f861d60c10 +Author: Jeff Bai +AuthorDate: Thu Nov 12 11:02:56 2015 +0800 +Commit: Aron Xu +CommitDate: Thu Nov 12 11:02:56 2015 +0800 + + Update zh_CN translations + + po/zh_CN.po | 1238 + +++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 649 insertions(+), 589 deletions(-) + +commit 0a10d38d1533d7944bfd10552c5df9a3cc771d8c +Author: Mikhail Zabaluev +AuthorDate: Sat Nov 7 18:51:04 2015 +0200 +Commit: Mikhail Zabaluev +CommitDate: Sat Nov 7 18:55:17 2015 +0200 + + Return value of g_hash_table_get_{keys,values} is (transfer container) + + https://bugzilla.gnome.org/show_bug.cgi?id=757742 + + glib/ghash.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 42463b840fb953e4663384a3911df2cd643ecf08 +Author: Mikhail Zabaluev +AuthorDate: Sat Nov 7 18:50:08 2015 +0200 +Commit: Mikhail Zabaluev +CommitDate: Sat Nov 7 18:55:17 2015 +0200 + + ghash: Correctly annotate (nullable) and (out) parameters + + https://bugzilla.gnome.org/show_bug.cgi?id=757742 + + glib/ghash.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit 0e5365997179def68797cbaf5d1a0961bef2ad00 +Author: Balázs Úr +AuthorDate: Sat Nov 7 15:08:05 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Sat Nov 7 15:08:05 2015 +0000 + + Updated Hungarian translation + + po/hu.po | 397 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 204 insertions(+), 193 deletions(-) + +commit 779b5c9af00d42bcf4728270a3b5a983998121eb +Author: Philip Withnall +AuthorDate: Sat Nov 7 13:55:24 2015 +0100 +Commit: Philip Withnall +CommitDate: Sat Nov 7 13:55:24 2015 +0100 + + gtestutils: Fix a function name in a documentation example + + glib/gtestutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 25a7c817d3cbef8b6508b44bca6d0b01ca77916b +Author: Philip Withnall +AuthorDate: Fri Dec 6 12:23:09 2013 +0000 +Commit: Philip Withnall +CommitDate: Sat Nov 7 10:48:32 2015 +0100 + + glib: Add missing (nullable) and (optional) annotations + + Add various (nullable) and (optional) annotations which were missing + from a variety of functions. Also port a couple of existing + (allow-none) + annotations in the same files to use (nullable) and (optional) as + appropriate instead. + + Secondly, add various (not nullable) annotations as needed by the new + default in gobject-introspection of marking gpointers as + (nullable). See + https://bugzilla.gnome.org/show_bug.cgi?id=729660. + + This includes adding some stub documentation comments for the + assertion macro error functions, which weren’t previously + documented. + The new comments are purely to allow for annotations, and hence are + marked as (skip) to prevent the symbols appearing in the GIR file. + + https://bugzilla.gnome.org/show_bug.cgi?id=719966 + + gio/gconverter.c | 3 +- + gio/gcredentials.c | 2 +- + gio/gdbusconnection.h | 2 +- + gio/gfileinfo.c | 9 +++--- + gio/gicon.c | 2 +- + gio/gmemoryoutputstream.c | 6 ++-- + gio/gsocketaddress.c | 2 +- + gio/gsocketcontrolmessage.c | 2 +- + glib/garray.c | 6 ++-- + glib/gatomic.c | 14 ++++---- + glib/gbitlock.c | 6 ++-- + glib/gbytes.c | 5 +-- + glib/gconvert.c | 23 ++++++------- + glib/gdataset.c | 10 +++--- + glib/gdate.c | 2 +- + glib/gdatetime.c | 10 +++--- + glib/gerror.c | 8 ++--- + glib/ghash.c | 33 +++++++++---------- + glib/ghook.c | 4 +-- + glib/gmain.c | 8 ++--- + glib/gmem.c | 3 +- + glib/gmem.h | 2 +- + glib/gmessages.c | 27 +++++++++++++--- + glib/gnode.h | 4 +-- + glib/gprintf.c | 4 +-- + glib/gqsort.c | 2 +- + glib/gshell.c | 6 ++-- + glib/gslice.c | 38 ++++++++++++++++++---- + glib/gstrfuncs.c | 10 +++--- + glib/gstring.c | 4 +-- + glib/gtestutils.c | 10 +++++- + glib/gthread.c | 6 ++-- + glib/gtrashstack.c | 2 +- + glib/gtree.c | 4 +-- + glib/gutf8.c | 78 + +++++++++++++++++++++++---------------------- + glib/gutils.c | 2 +- + glib/gvariant-core.c | 2 +- + gobject/gboxed.c | 7 ++-- + gobject/gboxed.h | 6 ++-- + gobject/gclosure.c | 20 +++++++----- + gobject/gclosure.h | 3 +- + gobject/gmarshal.c | 44 ++++++++++++------------- + gobject/gobject.c | 39 +++++++++++++---------- + gobject/gparam.c | 2 +- + gobject/gsignal.c | 6 ++-- + gobject/gtype.c | 5 +-- + gobject/gtype.h | 31 ++++++++++-------- + gobject/gvalue.c | 2 +- + 48 files changed, 303 insertions(+), 223 deletions(-) + +commit 90808a02796449615947e49ae57f5f4fa2e404ea +Author: Sebastien Bacher +AuthorDate: Fri Nov 6 17:42:45 2015 +0100 +Commit: Allison Ryan Lortie +CommitDate: Fri Nov 6 11:55:57 2015 -0500 + + g_local_file_trash: remove invalid free call + + Commit 8ece2de964c01b3428f16766f199b58f0bc67212 transplanted a + block of + code that contained an early-exit-on-error case which freed several + variables. + + Because of the move, the normal-path unconditional free of one + of these + variables is now above this early exit case, so if this block is + hit, it + will now be a double-free. + + Remove that. + + https://bugzilla.gnome.org/show_bug.cgi?id=757693 + + gio/glocalfile.c | 1 - + 1 file changed, 1 deletion(-) + +commit 1ac2a606fc10dd8d0e880902bc428ae406beb70c +Author: Philip Withnall +AuthorDate: Fri Nov 6 11:27:24 2015 +0100 +Commit: Philip Withnall +CommitDate: Fri Nov 6 11:27:24 2015 +0100 + + gtlsconnection: Fix a typo in the documentation + + gio/gtlsconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 751d3f00a8f4162d486658cf640d94a7a9486360 +Author: Dan Winship +AuthorDate: Thu Nov 5 09:42:36 2015 -0500 +Commit: Dan Winship +CommitDate: Thu Nov 5 09:42:36 2015 -0500 + + Update .gitignore for overflow tests + + glib/tests/.gitignore | 2 ++ + 1 file changed, 2 insertions(+) + +commit 4d74ca4c3ad3c9900caf320b39433e68a7db8465 +Author: Jan de Groot +AuthorDate: Thu Mar 21 19:51:28 2013 +0000 +Commit: Jürg Billeter +CommitDate: Thu Nov 5 12:53:19 2015 +0100 + + Make gtester-report compatible with Python 3 + + Convert tabs to spaces and replace print with print(). + The script still works with Python 2.x. + + https://bugzilla.gnome.org/show_bug.cgi?id=696324 + + glib/gtester-report | 28 ++++++++++++++-------------- + 1 file changed, 14 insertions(+), 14 deletions(-) + +commit 1c6e6671d106a45a0f30d5ca6427ebf0cc26abf5 +Author: Jussi Kukkonen +AuthorDate: Thu Nov 5 11:08:32 2015 +0200 +Commit: Jussi Kukkonen +CommitDate: Thu Nov 5 13:50:13 2015 +0200 + + gio/tests: Don't depend on a data file that's not built + + data.gresource is not built when cross-compiling: Don't + add it to test_data in that case. + + https://bugzilla.gnome.org/show_bug.cgi?id=757628 + + gio/tests/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 503e3147485a8d21ec9915b5df4c2ba4e2c4284b +Author: Pedro Albuquerque +AuthorDate: Thu Nov 5 05:58:56 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Thu Nov 5 05:58:56 2015 +0000 + + Updated Portuguese translation + + po/pt.po | 433 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 222 insertions(+), 211 deletions(-) + +commit 236e8040b4f8fbf213374ce398ecf29ce011f47c +Author: Simon McVittie +AuthorDate: Mon Nov 2 17:17:55 2015 +0000 +Commit: Simon McVittie +CommitDate: Mon Nov 2 20:36:42 2015 +0000 + + Build gdbus-example-objectmanager-server again + + It was removed, apparently accidentally, in commit 5b48dc4. + This had the side-effect that it wasn't included in tarball releases, + which means that commit ab7b4be doesn't work when building a package. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=734469 + Reviewed-by: Colin Walters + + gio/tests/Makefile.am | 3 +++ + 1 file changed, 3 insertions(+) + +commit 0dbc81c73ae19310f477e4888f4d4cba8474a846 +Author: Mikhail Zabaluev +AuthorDate: Thu Oct 29 10:54:34 2015 +0200 +Commit: Mikhail Zabaluev +CommitDate: Mon Nov 2 20:03:38 2015 +0200 + + Move G_POLLFD_FORMAT to glibconfig.h + + It's a platform-specific macro, so it belongs in glibconfig.h. + This ensures that g-ir-scanner will not pick the wrong definition + for introspection. + + https://bugzilla.gnome.org/show_bug.cgi?id=757294 + + configure.ac | 8 +++++++- + glib/glibconfig.h.win32.in | 4 ++++ + glib/gpoll.h | 11 ++--------- + 3 files changed, 13 insertions(+), 10 deletions(-) + +commit 6f1b574ceab74a043d24c24d12b2cfb47e5f8228 +Author: Xavier Claessens +AuthorDate: Mon Nov 2 09:36:47 2015 -0500 +Commit: Xavier Claessens +CommitDate: Mon Nov 2 10:02:43 2015 -0500 + + Doc: Fix missing glibconfig.h when builddir!=srcdir + + Currently the doc is incomplete when builddir!=srcdir + (e.g. debian package) because glibconfig.h is generared from + configure.ac and is thus missing from srcdir. This leads to + missing doc for symbols like G_GINT64_FORMAT. + + https://bugzilla.gnome.org/show_bug.cgi?id=734469 + + docs/reference/gio/Makefile.am | 7 ++++--- + docs/reference/glib/Makefile.am | 11 ++++++++--- + docs/reference/gobject/Makefile.am | 2 +- + 3 files changed, 13 insertions(+), 7 deletions(-) + +commit 86a7c864b32cc8532df2b57f59526c11be507657 +Author: Xavier Claessens +AuthorDate: Fri Oct 30 14:59:11 2015 -0400 +Commit: Xavier Claessens +CommitDate: Mon Nov 2 09:26:58 2015 -0500 + + Doc: copy included example files + + This fix missing files when src_dir != build_dir. + + https://bugzilla.gnome.org/show_bug.cgi?id=734469 + + docs/reference/gio/Makefile.am | 19 ++++++++++++++++++- + docs/reference/gio/migrating-gdbus.xml | 10 +++++----- + 2 files changed, 23 insertions(+), 6 deletions(-) + +commit ee718d352615f8417683f99fba6d0d08a33760fa +Author: Lars Uebernickel +AuthorDate: Wed Oct 7 15:49:05 2015 +0200 +Commit: Lars Uebernickel +CommitDate: Mon Nov 2 13:52:10 2015 +0100 + + gapplication: reject actions without names + + https://bugzilla.gnome.org/show_bug.cgi?id=756134 + + gio/gsimpleaction.c | 2 ++ + gio/gsimpleactiongroup.c | 7 +++++++ + gio/tests/gapplication.c | 25 +++++++++++++++++++++++++ + 3 files changed, 34 insertions(+) + +commit 863bffdac7f08815e4189bc881cb0c26d98d96c3 +Author: Daiki Ueno +AuthorDate: Mon Nov 2 09:38:50 2015 +0900 +Commit: Daiki Ueno +CommitDate: Mon Nov 2 11:14:04 2015 +0900 + + doc: fix g_task_attach_source() example + + The 3rd argument of the function is not a GCallback, but a + GSourceFunc. + + https://bugzilla.gnome.org/show_bug.cgi?id=757451 + + gio/gtask.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit df352203d6eb06355e4de40006236af64181d9d6 +Author: Xavier Claessens +AuthorDate: Fri Oct 30 10:02:06 2015 -0400 +Commit: Xavier Claessens +CommitDate: Fri Oct 30 11:35:28 2015 -0400 + + Stop using g_sequence_get_length() to check if it's empty + + g_sequence_is_empty() is more efficient for that task. + + https://bugzilla.gnome.org/show_bug.cgi?id=756988 + + gio/gdbusmenumodel.c | 2 +- + gio/glocalfilemonitor.c | 6 +++--- + gio/gmenuexporter.c | 2 +- + glib/gsequence.c | 2 +- + 4 files changed, 6 insertions(+), 6 deletions(-) + +commit 2bc32606c73ccb66f86444b60bf0eabc9c959fb3 +Author: Xavier Claessens +AuthorDate: Thu Oct 22 16:23:12 2015 -0400 +Commit: Xavier Claessens +CommitDate: Fri Oct 30 11:35:27 2015 -0400 + + GSequence: document that _get_length() is not O(1) + + https://bugzilla.gnome.org/show_bug.cgi?id=756988 + + glib/gsequence.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 2331437df3fa3c28649f6b318ed980bd9462434f +Author: Xavier Claessens +AuthorDate: Mon Sep 21 13:24:44 2015 -0400 +Commit: Xavier Claessens +CommitDate: Fri Oct 30 10:30:55 2015 -0400 + + Doc: fix some gtk-doc warnings + + https://bugzilla.gnome.org/show_bug.cgi?id=755364 + + docs/reference/glib/glib-sections.txt | 1 + + gio/gfilemonitor.c | 15 +++++++++++++++ + gio/gsocketconnectable.h | 2 +- + glib/gmem.c | 3 +++ + gobject/gparam.c | 2 +- + gobject/gparam.h | 4 ++-- + 6 files changed, 23 insertions(+), 4 deletions(-) + +commit 7dd9ffbcfff3561d2d1bcd247c052e4c4399623f +Author: Allison Ryan Lortie +AuthorDate: Wed Oct 28 11:14:15 2015 +0000 +Commit: Allison Ryan Lortie +CommitDate: Fri Oct 30 11:58:49 2015 +0100 + + tests: test bounds-checked int arithmetic + + Add some simple testcases for the new bounds-checked integer + arithmetic + helpers. + + Include a second build of the testcase to make sure we test the + fallback + code even if we are on a compiler that supports the intrinsics. + + https://bugzilla.gnome.org/show_bug.cgi?id=503096 + + glib/tests/Makefile.am | 5 ++ + glib/tests/overflow.c | 199 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 204 insertions(+) + +commit d0219f25970c740ac1a8965754868d54bcd90eeb +Author: Allison Ryan Lortie +AuthorDate: Wed Oct 28 11:14:13 2015 +0000 +Commit: Allison Ryan Lortie +CommitDate: Fri Oct 30 11:58:49 2015 +0100 + + GLib: add bounds-checked unsigned int arithmetic + + Add some helpers for builds-checked unsigned integer arithmetic + to GLib. + These will be based on compiler intrinsics where they are available, + falling back to standard manual checks otherwise. + + The fallback case needs to be implemented as a function (which we do + inline) because we cannot rely on statement expressions. We also + implement the intrinsics case as an inline in order to avoid people + accidentally writing non-portable code which depends on static + evaluation of the builtin. + + For now there is only support for addition and multiplication + for guint, + guint64 and gsize. It may make sense to add support for subtraction + or + for the signed equivalents of those types in the future if we find + a use + for that. + + https://bugzilla.gnome.org/show_bug.cgi?id=503096 + + docs/reference/glib/glib-docs.xml | 1 + + docs/reference/glib/glib-sections.txt | 11 +++ + glib/docs.c | 124 + ++++++++++++++++++++++++++++++++++ + glib/gtypes.h | 57 +++++++++++++++- + 4 files changed, 192 insertions(+), 1 deletion(-) + +commit 89bda59170b662d65f91d36220492cc890dafa0d +Author: Allison Ryan Lortie +AuthorDate: Wed Oct 28 11:14:11 2015 +0000 +Commit: Allison Ryan Lortie +CommitDate: Fri Oct 30 11:58:49 2015 +0100 + + macros: add dummy __has_builtin() + + Add a dummy definition for Clang's __has_builtin() macro. This will + allow us to use __has_builtin() unconditionally, in the same way as we + already do for __has_feature(). + + https://bugzilla.gnome.org/show_bug.cgi?id=503096 + + glib/gmacros.h | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 41bd8c90aebb0fd6de0735f52a3e9e99e67a5eed +Author: Yosef Or Boczko +AuthorDate: Fri Oct 30 12:50:00 2015 +0200 +Commit: Yosef Or Boczko +CommitDate: Fri Oct 30 12:50:00 2015 +0200 + + Updated Hebrew translation + + po/he.po | 381 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 196 insertions(+), 185 deletions(-) + +commit adfd1847763f71c79424386fd31e31693ea7f599 +Author: Murray Cumming +AuthorDate: Wed Oct 28 10:50:31 2015 +0100 +Commit: Murray Cumming +CommitDate: Wed Oct 28 10:50:40 2015 +0100 + + Fix tiny typo. + + gobject/glib-mkenums.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d52625a94a816fffb880b8a85f3bfd4c35d02b99 +Author: Chun-wei Fan +AuthorDate: Tue Oct 27 09:28:10 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Oct 27 09:28:10 2015 +0800 + + gwin32.c: Fix g_win32_check_windows_version() on 32-bit + + The Windows API function RtlGetVersion() is actually a function + that is + decorated by WINAPI (i.e. __stdcall), so we need to correct this + so that + the symbol can be loaded correctly from ntdll.dll, so that we won't + crash as + a result. Should fix the crash due to stack overflow on 32-bit + builds. + + https://bugzilla.gnome.org/show_bug.cgi?id=756179 + + glib/gwin32.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f87fd39cf32cfda40dadaf1c8906cfc5c0518b06 +Author: Matthias Clasen +AuthorDate: Mon Oct 26 11:03:24 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 26 13:52:47 2015 -0400 + + 2.47.1 + + NEWS | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- + configure.ac | 4 ++-- + 2 files changed, 56 insertions(+), 3 deletions(-) + +commit a036bd38a574f38773d269447cf81df023d2c819 +Author: Matthias Clasen +AuthorDate: Mon Oct 26 13:51:30 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 26 13:52:47 2015 -0400 + + Try to fix the desktop-app-info test + + This was broken in 2bb898c60f4333. + + gio/tests/desktop-app-info.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +commit e93aaeb5333829fb94693223487c5baf77eb251d +Author: Rico Tzschichholz +AuthorDate: Sun Oct 25 19:43:54 2015 +0100 +Commit: Rico Tzschichholz +CommitDate: Sun Oct 25 19:43:54 2015 +0100 + + gio: Fix version of "Since" annotation + + gio/gsocketconnectable.c | 2 +- + gio/gsocketconnectable.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 0d4f6afcdf4e342b69383bfc022eed620dd1c3da +Author: Rico Tzschichholz +AuthorDate: Sun Oct 25 19:42:18 2015 +0100 +Commit: Rico Tzschichholz +CommitDate: Sun Oct 25 19:42:18 2015 +0100 + + docs: Add index for 2.48 api + + docs/reference/gio/gio-docs.xml | 4 ++++ + docs/reference/glib/glib-docs.xml | 4 ++++ + 2 files changed, 8 insertions(+) + +commit 4dae2d8289afabb59e3889118c392a09efea18a1 +Author: Dan Winship +AuthorDate: Sat Oct 24 10:37:22 2015 -0400 +Commit: Dan Winship +CommitDate: Sat Oct 24 10:37:22 2015 -0400 + + gtask: re-fix tasks-blocking-other-tasks + + The new "slowly add more task threads" code doesn't fully deal with + apps that queue lots and lots of tasks which then block on tasks from + their task threads. Fix this by bringing back the "task is blocking + other task" check and making sure that such tasks get bumped to the + front of the queue. + + https://bugzilla.gnome.org/show_bug.cgi?id=687223 + + gio/gtask.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit 556705cb9c826d70c043d67a87d997f82e2a559d +Author: Chun-wei Fan +AuthorDate: Sat Oct 24 11:05:27 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Sat Oct 24 11:05:27 2015 +0800 + + gwin32.c: Fix build on Visual Studio + + ntdef.h is a header that is normally only shipped with MinGW, + not Visual + Studio, which broke the build in commit 975cb91. Fix this by + including + winternl.h, which typedef's the NTSTATUS type in question on both + Visual + Studio and MinGW/mingw-w64, as well as pre-2008 Visual Studio. + + Clean up this inclusion part a little bit as well. + + glib/gwin32.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit af0a47701db53ccf68211582a1e3f31e2836d4f3 +Author: Dan Winship +AuthorDate: Fri Oct 23 11:28:32 2015 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 23 11:38:31 2015 -0400 + + gtypes.h: fix G_MAXUINT64 definition to use G_GUINT64_CONSTANT + + (Noticed as part of https://bugzilla.gnome.org/show_bug.cgi?id=756550) + + glib/gtypes.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 263aac125e3dfe26aebc6ce7bc0ed39889f19933 +Author: Dan Winship +AuthorDate: Fri Oct 23 11:28:03 2015 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 23 11:28:03 2015 -0400 + + .gitignore updates + + build/win32/vs10/.gitignore | 1 + + build/win32/vs9/.gitignore | 1 + + gio/tests/.gitignore | 5 ++++- + gobject/tests/.gitignore | 1 + + 4 files changed, 7 insertions(+), 1 deletion(-) + +commit 50d704ab8fadf714f814fff9c8091a64cf72beb5 +Author: Ignacio Casal Quinteiro +AuthorDate: Fri Oct 23 10:34:50 2015 +0200 +Commit: Ignacio Casal Quinteiro +CommitDate: Fri Oct 23 10:34:50 2015 +0200 + + win32: make sure bytes_read/written is set to 0 on error + + If we fail to PeekMessage or PostMessage we should make sure + that the output parameter bytes_read/written is set 0 instead + of being left uninitialized. This fixes an assertion in the io + channel call where the following invariant is checked: + (status == G_IO_STATUS_NORMAL) || (read_size == 0) + + glib/giowin32.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 3bb8294e00608238c2a28753425c9ce332c2bc0e +Author: Víctor Manuel Jáquez Leal +AuthorDate: Thu Oct 22 10:36:00 2015 +0200 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Oct 22 11:21:47 2015 +0200 + + giomodule: return a copy of module name + + This is a regression from commit 6dedc0. + + The clients expect to free the received module name, so the function + must return a copy. + + https://bugzilla.gnome.org/show_bug.cgi?id=756952 + + gio/giomodule.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 144a87a643a619ff82a3acaffa6ac3761bc5db1f +Author: Ignacio Casal Quinteiro +AuthorDate: Thu Oct 22 08:19:19 2015 +0200 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Oct 22 09:22:01 2015 +0200 + + Use bin/gio/modules when building with visual studio + + gio/giomodule.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 6dedc0364afeafac3bbae7ecbb87249234a4ca85 +Author: Ignacio Casal Quinteiro +AuthorDate: Thu Oct 22 08:18:24 2015 +0200 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Oct 22 08:42:22 2015 +0200 + + Factor out a get_gio_module_dir + + This also fixes some memory leaks on windows + + gio/giomodule.c | 42 ++++++++++++++++++++++++++++-------------- + 1 file changed, 28 insertions(+), 14 deletions(-) + +commit 31c45cb6aeb06d59b731fb725beeee17ed851475 +Author: Robert Ancell +AuthorDate: Tue Oct 20 15:44:32 2015 +1300 +Commit: Robert Ancell +CommitDate: Wed Oct 21 15:26:53 2015 +1300 + + gkeyfile: Handle whitespace after boolean values + + Ignore trailing whitespace when reading boolean values. Currently + it is + very easy to manually edit a keyfile to be: + + [section] + key=true_ + + Where '_' is a space character. g_key_file_get_boolean will read + this value as + false and this is hard for a user to detect (it will be reported + in GError + as an invalid value). + + Trailing whitespace is ignored for numbers for the same reason. This + was + fixed in 7a45dde4fe64b4f6c6d3ebc54dfb54d106290e9d. + + https://bugzilla.gnome.org/show_bug.cgi?id=664740 + + glib/gkeyfile.c | 17 +++++++++++++++-- + glib/tests/keyfile.c | 4 ++++ + 2 files changed, 19 insertions(+), 2 deletions(-) + +commit 51ed0f040505914d9be09f01b2b567d69df57ae4 +Author: Robert Ancell +AuthorDate: Tue Oct 20 15:46:01 2015 +1300 +Commit: Robert Ancell +CommitDate: Wed Oct 21 15:26:17 2015 +1300 + + gkeyfile: Test that whitespace is allowed after numbers + + Test that whitespace is allowed after numbers - this was fixed in + commit 7a45dde4fe64b4f6c6d3ebc54dfb54d106290e9d. + + glib/tests/keyfile.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 975cb9108543fb5c8b1146f74350ef4c6f1cd888 +Author: Sebastian Dröge +AuthorDate: Tue Oct 20 17:36:33 2015 +0300 +Commit: Sebastian Dröge +CommitDate: Tue Oct 20 20:47:07 2015 +0300 + + win32: Include ntdef.h for NTSTATUS + + https://bugzilla.gnome.org/show_bug.cgi?id=756875 + + glib/gwin32.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit ad0f340c273e3c6bac01bbc1eb41652903150f70 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Oct 20 16:12:07 2015 +0200 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Oct 20 16:13:08 2015 +0200 + + win32: let glib to use the right path separator for the modules + + gio/giomodule.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2ac7c5a6fb3c4f169ba5b44df762f7dc43504bfa +Author: Matthias Clasen +AuthorDate: Thu Oct 15 15:37:42 2015 -0400 +Commit: Matthias Clasen +CommitDate: Tue Oct 20 08:18:22 2015 -0400 + + Use -Wl,-znodelete for all our libraries + + Now that we initialize the quark tables from a constructor, + reloading libglib is just as bad as reloading libgobject, + so add the linker option to the LDFLAGS for all our libraries. + + https://bugzilla.gnome.org/show_bug.cgi?id=755609 + + configure.ac | 6 ++---- + gobject/Makefile.am | 1 - + 2 files changed, 2 insertions(+), 5 deletions(-) + +commit bf33f1d98d91e9326f04d56e1c3576baa886ae1d +Author: Philip Withnall +AuthorDate: Sun Oct 18 19:34:44 2015 +0100 +Commit: Philip Withnall +CommitDate: Tue Oct 20 07:18:15 2015 +0900 + + docs: Replace Maman in the tutorial with a more meaningful example + + Change it to a running example of a file viewer application with + a file + class and various derived classes and related interfaces. Hopefully + the + reader can relate to this a little better than to their maman. + + https://bugzilla.gnome.org/show_bug.cgi?id=753935 + + docs/reference/gobject/tut_gobject.xml | 142 +++---- + docs/reference/gobject/tut_gtype.xml | 188 +++++----- + docs/reference/gobject/tut_howto.xml | 651 + +++++++++++++++++++-------------- + 3 files changed, 548 insertions(+), 433 deletions(-) + +commit 419f57137ad1eaaa34ed41c23b5077642ca5b06c +Author: Ryan Lortie +AuthorDate: Thu Oct 15 15:14:36 2015 +0100 +Commit: Ryan Lortie +CommitDate: Fri Oct 16 12:10:50 2015 +0100 + + GDateTime test: fix occasional failures + + We were using the time() library call to get the current time from the + system in order to compare it to the time returned by + g_date_time_new_now(). + + Of course, we took care to ensure that the time (in seconds) didn't + change in the middle of this process by checking the before and after + value of the system time. + + Unfortunately, the system time as measured by time() was being taken + from a less-accurate clock source than the time used by GDateTime. + As a + result, we could have GDateTime already into the next second while the + "seconds" value of the time returned by time() was still in the last + one, even when checked "after". + + Avoid the problem by using the same ultimate source for time -- + g_get_real_time(). + + This is based on a similar patch from Iain Lane, but it uses + g_get_real_time() instead of g_get_current_time(). + + https://bugzilla.gnome.org/show_bug.cgi?id=754994 + + glib/tests/gdatetime.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 75eaf5091c07572f0bac2756821f228d87916df0 +Author: Mikhail Zabaluev +AuthorDate: Tue Oct 6 01:51:52 2015 +0300 +Commit: Mikhail Zabaluev +CommitDate: Thu Oct 15 23:57:06 2015 +0300 + + g_main_context_query(): Annotate @n_fds as (in) parameter + + The default is picked up as (out), which is bogus. + + https://bugzilla.gnome.org/show_bug.cgi?id=756099 + + glib/gmain.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 05aafe2cff5aab63c6c8d51261549b395f54bca6 +Author: Mikhail Zabaluev +AuthorDate: Wed Oct 14 08:10:38 2015 +0300 +Commit: Mikhail Zabaluev +CommitDate: Thu Oct 15 23:47:04 2015 +0300 + + gtypes.h: Make G_MININTn literals negative + + This is more friendly to the GIR scanner; with previous definitions, + the constant values end up out of range for their stated integer type. + + https://bugzilla.gnome.org/show_bug.cgi?id=756550 + + glib/gtypes.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 01baf396852bf9e31625260ccba939bf4f539f5e +Author: Christian Hergert +AuthorDate: Thu Oct 15 13:07:27 2015 -0700 +Commit: Christian Hergert +CommitDate: Thu Oct 15 13:07:27 2015 -0700 + + sequence: fix style issue in previous commit + + Use g_assert_true() rather than integer comparison in sequence + unit test. + + glib/tests/sequence.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8fccf8e4e3ae87f3c1069270daeb2a59a40bf89d +Author: Christian Hergert +AuthorDate: Thu Oct 15 12:54:09 2015 -0700 +Commit: Christian Hergert +CommitDate: Thu Oct 15 12:54:09 2015 -0700 + + sequence: add g_sequence_is_empty() + + This function provides an O(1) check to determine if a sequence + is empty. + Compare this to the two following alternatives to perform the + same check. + + O(h): if (0 == g_sequence_get_length (seq)) + O(2h): if (g_sequence_get_begin_iter(seq) == + g_sequence_get_end_iter(seq)) + + Where `h' is the height of the tree. + + https://bugzilla.gnome.org/show_bug.cgi?id=756316 + + glib/gsequence.c | 20 ++++++++++++++++++++ + glib/gsequence.h | 2 ++ + glib/tests/sequence.c | 26 ++++++++++++++++++++++++++ + 3 files changed, 48 insertions(+) + +commit 0b84596f6e8dc830e7f90e7501a036a16c7c31e3 +Author: Ignacio Casal Quinteiro +AuthorDate: Thu Oct 15 17:36:33 2015 +0200 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Oct 15 17:42:02 2015 +0200 + + gnulib: forgot some changes from HAVE_LONG_LONG_INT to HAVE_LONG_LONG + + https://bugzilla.gnome.org/show_bug.cgi?id=756382 + + glib/gnulib/printf-parse.c | 6 +++--- + glib/gnulib/vasnprintf.c | 12 ++++++------ + 2 files changed, 9 insertions(+), 9 deletions(-) + +commit 212e4232e7520b2e328e3e965ed792e17b12e144 +Author: Ignacio Casal Quinteiro +AuthorDate: Wed Oct 14 12:55:06 2015 +0200 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Oct 15 14:54:42 2015 +0200 + + Update gnulib + + It updates it to the version c5d07ce91a8ad51591154450442fa4376441fdfa + As a difference with upstream we need to ensure: + * Include "g-gnulib.h" so the methods get the gnulib namespace. + * xsize.h uses G_MAXSIZE instead of SIZE_MAX and the methods are + marked as static inline. + * Some defines are named different from the ones in glib i.e + HAVE_LONG_LONG_INT is HAVE_LONG_LONG + + All the unit tests pass properly with and without + --enable-included-printf. + It has also been tested on Windows. + + https://bugzilla.gnome.org/show_bug.cgi?id=756382 + + glib/gnulib/Makefile.am | 2 + + glib/gnulib/printf-args.c | 210 +- + glib/gnulib/printf-args.h | 126 +- + glib/gnulib/printf-parse.c | 1003 ++++--- + glib/gnulib/printf-parse.h | 173 +- + glib/gnulib/vasnprintf.c | 6445 + +++++++++++++++++++++++++++++++++++++------- + glib/gnulib/vasnprintf.h | 68 +- + glib/gnulib/verify.h | 279 ++ + glib/gnulib/xsize.h | 101 + + 9 files changed, 6823 insertions(+), 1584 deletions(-) + +commit 8ece2de964c01b3428f16766f199b58f0bc67212 +Author: Ryan Lortie +AuthorDate: Tue Sep 29 10:16:52 2015 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 14 18:08:02 2015 +0100 + + g_local_file_trash: write info file first + + Recent changes to file monitors removed the delay before events were + reported. Among other things, this caused the trash backend of + gvfs to + notice trashed files sooner than before. + + On noticing trashed files, the backend tries to read the info file to + discover (among other things) the original location of the file. + + Unfortunately, g_local_file_trash() does a strange dance when + trashing a + file. It does a loop of open(O_EXCL) in order to file an empty + filename + in the trash to write an info file to, trashes the file, and only then + writes the contents of the info file. This means that at the time the + file is moved to the trash, the info file is an empty stub. + + Change the order so that we write out the actual content of the info + file first. If the actual trash files then we will unlink the + info file + anyway. + + https://bugzilla.gnome.org/show_bug.cgi?id=749314 + + gio/glocalfile.c | 51 ++++++++++++++++++++++++++++----------------------- + 1 file changed, 28 insertions(+), 23 deletions(-) + +commit 7c6d29967e2c5d151d161596a1848f984d1c2845 +Author: Inaki Larranaga Murgoitio +AuthorDate: Wed Oct 14 11:49:54 2015 +0200 +Commit: dooteo +CommitDate: Wed Oct 14 11:49:54 2015 +0200 + + Updated Basque language + + po/eu.po | 981 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 507 insertions(+), 474 deletions(-) + +commit 128c413261f60c044aca14895ca2c5d2574d791e +Author: Philip Withnall +AuthorDate: Sun Oct 4 15:24:24 2015 +0100 +Commit: Philip Withnall +CommitDate: Tue Oct 13 15:42:14 2015 +0100 + + gsocketconnectable: Add a to_string() virtual method + + Add string serialisation functions for GNetworkAddress, + GSocketAddress, + GUnixSocketAddress, GInetSocketAddress, GNetworkService and + GSocketConnectable. These are intended for use in debug output, + not for + serialisation in network or disc protocols. + + They are implemented as a new virtual method on GSocketConnectable: + g_socket_connectable_to_string(). + + GInetSocketAddress and GUnixSocketAddress now implement + GSocketConnectable directly to implement to_string(). Previously they + implemented it via their abstract parent class, GSocketAddress. + + https://bugzilla.gnome.org/show_bug.cgi?id=737116 + + docs/reference/gio/gio-sections.txt | 1 + + gio/ginetsocketaddress.c | 62 + ++++++++++++++++++++++++++++++++++++- + gio/gnetworkaddress.c | 26 ++++++++++++++++ + gio/gnetworkservice.c | 14 +++++++++ + gio/gsocketaddress.c | 1 + + gio/gsocketconnectable.c | 31 +++++++++++++++++++ + gio/gsocketconnectable.h | 6 ++++ + gio/gunixsocketaddress.c | 52 ++++++++++++++++++++++++++++++- + gio/tests/inet-address.c | 50 ++++++++++++++++++++++++++++++ + gio/tests/network-address.c | 38 +++++++++++++++++++++++ + gio/tests/socket-address.c | 40 ++++++++++++++++++++++++ + 11 files changed, 319 insertions(+), 2 deletions(-) + +commit 4e631d2e5fd2d7d27b1ca5e2edd6a4d95c83566e +Author: Philip Withnall +AuthorDate: Fri Jun 12 08:50:42 2015 +0100 +Commit: Philip Withnall +CommitDate: Tue Oct 13 15:33:48 2015 +0100 + + gio: Add GDatagramBased interface and rebase GSocket on it + + GDatagramBased is an interface abstracting datagram-based + communications + in the style of the Berkeley sockets API. It may be contrasted to (for + example) GIOStream, which supports only streaming I/O. + + GDatagramBased allows socket-like communications to be done through + any + object, not just a concrete GSocket (which wraps socket()). + + This adds the GDatagramBased interface, and implements it in GSocket. + + https://bugzilla.gnome.org/show_bug.cgi?id=697907 + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 21 ++ + gio/Makefile.am | 2 + + gio/gdatagrambased.c | 473 + ++++++++++++++++++++++++++++++++++++ + gio/gdatagrambased.h | 144 +++++++++++ + gio/gio-autocleanups.h | 1 + + gio/gio.h | 1 + + gio/giotypes.h | 19 ++ + gio/gsocket.c | 144 ++++++++++- + gio/makefile.msc | 1 + + po/POTFILES.in | 1 + + 11 files changed, 807 insertions(+), 1 deletion(-) + +commit e5e08ebedbc1dd97d19f2504d43619991b1e52aa +Author: Mike Frysinger +AuthorDate: Mon Oct 12 23:29:00 2015 -0400 +Commit: Dan Winship +CommitDate: Tue Oct 13 09:04:39 2015 -0400 + + gthreadedresolver.c: Fix for Android 5.0+ + + https://bugzilla.gnome.org/show_bug.cgi?id=756477 + + gio/gthreadedresolver.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dc4361f4cb49f376993129fea6768a978a28711e +Author: Chun-wei Fan +AuthorDate: Tue Oct 13 19:30:22 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Oct 13 19:30:22 2015 +0800 + + MSVC 2010+ builds: Explicitly use /LTCG + + The Visual Studio projects used a default setting for link-time code + generation, which is a part of the various linker optimizations + that is + available, which is set as /LTCG for Visual Studio 2013 and earlier. + + This changed in Visual Studio 2015 to become /LTCG:incremental, + which would + cause GResources-generated code to be optimized out during linking, + unless + they were referred to directly in the main line code (such as when the + GResource is manually registered), causing programs to crash as a + result as + they can't find the needed code/data at run time. + + Fix this by explicitly setting /LTCG for all release builds, + for Visual + Studio 2010 and later. + + https://bugzilla.gnome.org/show_bug.cgi?id=752837 + + build/win32/vs10/gdbus.vcxproj | 2 ++ + build/win32/vs10/gio-querymodules.vcxproj | 2 ++ + build/win32/vs10/gio.vcxprojin | 10 ++++++---- + build/win32/vs10/glib-compile-resources.vcxprojin | 2 ++ + build/win32/vs10/glib-compile-schemas.vcxprojin | 2 ++ + build/win32/vs10/glib-genmarshal.vcxproj | 2 ++ + build/win32/vs10/glib.vcxprojin | 20 + ++++++++++++-------- + build/win32/vs10/gmodule.vcxproj | 10 ++++++---- + build/win32/vs10/gobject.vcxprojin | 10 ++++++---- + build/win32/vs10/gresource.vcxproj | 2 ++ + build/win32/vs10/gsettings.vcxproj | 2 ++ + build/win32/vs10/gspawn-win32-helper-console.vcxproj | 2 ++ + build/win32/vs10/gspawn-win32-helper.vcxproj | 2 ++ + build/win32/vs10/gthread.vcxproj | 10 ++++++---- + 14 files changed, 54 insertions(+), 24 deletions(-) + +commit b7e29730482dd2d5e88c3448c6310b6849c0a3cf +Author: Chun-wei Fan +AuthorDate: Mon Oct 12 16:49:53 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Oct 12 16:56:46 2015 +0800 + + gobject: Further optimize MSVC builds + + Use /ltcg (link time code generation) for linking as well. + + In fact, whole program optimization and /ltcg are the default + for Release + builds, so we don't really have to set them explicitly in the + projects, so + as a result, we can clean up the projects a little bit. + + https://bugzilla.gnome.org/show_bug.cgi?id=752837 + + build/win32/vs10/gobject.vcxprojin | 6 ------ + build/win32/vs9/gobject.vcprojin | 4 ---- + 2 files changed, 10 deletions(-) + +commit 670400ee337f84c9938db84e3de8d4a82ba3ec62 +Author: Chun-wei Fan +AuthorDate: Mon Oct 12 15:05:23 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Oct 12 15:05:23 2015 +0800 + + gobject: MSVC builds-improve optimization a bit + + Use whole program optimization (/GL) as we now use DllMain() to + initialize the library on Windows builds. + + https://bugzilla.gnome.org/show_bug.cgi?id=752837 + + build/win32/vs10/gobject.vcxprojin | 4 ++-- + build/win32/vs9/gobject.vcprojin | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 7a29771a743a8b5337af5f3fcd1fbfdfdc5d1b81 +Author: Ignacio Casal Quinteiro +AuthorDate: Fri Oct 9 13:22:34 2015 +0200 +Commit: Ignacio Casal Quinteiro +CommitDate: Sun Oct 11 10:29:10 2015 +0200 + + gobject: use a DllMain to initialize gobject on windows + + It seems that VS 2015 optimizes out the constructor on windows, + so it is better to use a DllMain to initialize the library + and keep using a normal constructor on the other platforms. + This research was done by Arnav Singh. + + https://bugzilla.gnome.org/show_bug.cgi?id=752837 + + gobject/gtype.c | 86 + ++++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 61 insertions(+), 25 deletions(-) + +commit cd1eba043c90da3aee8f5cd51b205b2e2c16f08e +Author: Debarshi Ray +AuthorDate: Thu Oct 8 18:50:26 2015 +0200 +Commit: Debarshi Ray +CommitDate: Fri Oct 9 14:16:29 2015 +0200 + + docs: Improve the text on G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START + + ... and fix a couple of typos in the process. + + https://bugzilla.gnome.org/show_bug.cgi?id=756251 + + gio/gioenums.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 16e0a5a886c60a648e74afd12c0cbeeb58d6d522 +Author: John Hiesey +AuthorDate: Wed Oct 7 17:34:17 2015 -0700 +Commit: Alexander Larsson +CommitDate: Thu Oct 8 20:07:08 2015 +0200 + + goutputstream: Report input stream read failure correctly + + When G_OUTPUT_STREAM_CLOSE_TARGET is set, + g_output_stream_real_splice was not returning -1 in any error + cases, since the success flag was being overwritten. + + https://bugzilla.gnome.org/show_bug.cgi?id=756255 + + gio/goutputstream.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit fb9df27776b116d9e8552c0b7b3109245a9c0d26 +Author: Ignacio Casal Quinteiro +AuthorDate: Thu Apr 9 18:05:18 2015 +0200 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Oct 8 17:32:29 2015 +0200 + + Change message system to use fputs instead of write + + By default g_log_default_handler always assumes that stdout + and stderr are file descriptors 1 and 2. On Win32 this isn't + always the case as the win32 API functions AttachConsole and + freopen can be used to dynamically attach GUI applications to + a console and the file descriptors of stderr and stdout will + become different than 1 and 2. + + Fix it by using fputs with the FILE directly instead of + using the file descriptors. + + https://bugzilla.gnome.org/show_bug.cgi?id=692085 + + glib/gmessages.c | 41 +++++++++++++++++++---------------------- + 1 file changed, 19 insertions(+), 22 deletions(-) + +commit 144d38fb9d63a26c99acbd3cc212430d3d688859 +Author: Philip Withnall +AuthorDate: Thu Oct 8 12:57:33 2015 +0100 +Commit: Philip Withnall +CommitDate: Thu Oct 8 12:57:33 2015 +0100 + + gparamspecs: Mark g_param_spec_string()’s default value as + (nullable) + + gobject/gparamspecs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 99ff9bb5e0ef261e39cb3c67a2d212f6bbeb99e4 +Author: Emmanuele Bassi +AuthorDate: Thu Oct 8 12:32:58 2015 +0100 +Commit: Emmanuele Bassi +CommitDate: Thu Oct 8 12:32:58 2015 +0100 + + Maintain the struct order when initializing + + Otherwise it'll break every GLIB_PRIVATE_CALL user. + + glib/glib-private.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 0cc8c0f3e1230f8a3d6d7ed53523c2045d43ea63 +Author: Philip Withnall +AuthorDate: Thu Oct 8 11:16:02 2015 +0100 +Commit: Philip Withnall +CommitDate: Thu Oct 8 11:16:02 2015 +0100 + + gerror: Add (optional) annotation to g_propagate_error() + + Also clarify in the documentation that @src must be non-%NULL. + + glib/gerror.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 2e078f1fc0f580bf390c84ebfcd36bcde076eca6 +Author: Philip Withnall +AuthorDate: Thu Oct 8 11:08:28 2015 +0100 +Commit: Philip Withnall +CommitDate: Thu Oct 8 11:10:39 2015 +0100 + + gstrfuncs: Add missing annotations to g_[ascii_]strto*() functions + + Add missing (out) (transfer none) (optional) annotations to + g_strtod(), + g_ascii_strtod(), g_ascii_strtoull() and g_ascii_strtoll(). + + glib/gstrfuncs.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 8d83aace106b6832629a3e05f49d074a4288c8df +Author: Matthias Clasen +AuthorDate: Tue Oct 6 20:09:08 2015 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 7 23:39:29 2015 -0400 + + Call glib_init from the gobject constructor + + We are using quarks in the gobject constructor, among other things, + so we need to ensure that glib is being initialized first. + + https://bugzilla.gnome.org/show_bug.cgi?id=756139 + + gobject/gtype.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit e0dce8a9ae77cd4430db224c3bb056d9d1882e58 +Author: Matthias Clasen +AuthorDate: Tue Oct 6 19:45:38 2015 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 7 23:39:29 2015 -0400 + + Export glib_init via GLIB_PRIVATE_CALL + + This will be used in the next commit to call glib_init from the + gobject constructor, to ensure proper constructor ordering with + non-GNU libc. + + https://bugzilla.gnome.org/show_bug.cgi?id=756139 + + glib/glib-init.c | 2 +- + glib/glib-init.h | 1 + + glib/glib-private.c | 3 +++ + glib/glib-private.h | 3 +++ + 4 files changed, 8 insertions(+), 1 deletion(-) + +commit 342d3296851dfabd88e9e3909ab45fa16e8139e0 +Author: Matthias Clasen +AuthorDate: Tue Oct 6 19:43:38 2015 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 7 23:39:29 2015 -0400 + + Make glib_init safe to call more than once + + This will be needed to fix constructor order for non-GNU libc. + + https://bugzilla.gnome.org/show_bug.cgi?id=756139 + + glib/glib-init.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 46a20470fa684c2f1390c91dcc8d5799bdd422c5 +Author: Chun-wei Fan +AuthorDate: Wed Oct 7 20:00:50 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Oct 7 20:46:31 2015 +0800 + + gwin32.c: Avoid deprecated Win32 API usage + + The VerifyVersionInfo() Win32 API has been deprecated in Windows + 10, and + there is no direct replacement for it, except by using a lower-level + RtlGetVersion() that we aquire from the Windows DDK or from ntdll.dll. + + Switch g_win32_check_windows_version() to use RtlGetVersion(), and + compare its results with the input parameters. + + https://bugzilla.gnome.org/show_bug.cgi?id=756179 + + glib/gwin32.c | 105 + +++++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 74 insertions(+), 31 deletions(-) + +commit 3624e70508d414ae734c0b51f81839f8b5b1c809 +Author: Matthias Clasen +AuthorDate: Tue Oct 6 06:45:31 2015 -0400 +Commit: Matthias Clasen +CommitDate: Tue Oct 6 06:49:48 2015 -0400 + + Update Unicode test data for Unicode 8 + + These files are used by the unicode-caseconv test. + + tests/casefold.txt | 143 +++++++++++++++++++++++++- + tests/casemap.txt | 290 + ++++++++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 429 insertions(+), 4 deletions(-) + +commit ac05ad55fadaac7cdce38f0ea19b2628a9864068 +Author: Philip Withnall +AuthorDate: Tue Oct 6 07:59:19 2015 +0100 +Commit: Philip Withnall +CommitDate: Tue Oct 6 07:59:19 2015 +0100 + + gdbusconnection: Add missing (nullable) to get_peer_credentials() + + Since Colin mentioned it on gir-devel-list. + + gio/gdbusconnection.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 4919c25d497dcba708074f7d35ea6b43d17f7294 +Author: Olivier Fourdan +AuthorDate: Tue Sep 15 09:22:12 2015 +0200 +Commit: Matthias Clasen +CommitDate: Mon Oct 5 23:21:43 2015 -0400 + + GDesktopAppInfo: Do not set the DISPLAY in gio + + The environment variable DISPLAY makes sense only for X11, it should + not be set in gio. + + Beside, if the backend is not X11 but Wayland, forcing the value of + DISPLAY to the Wayland display will confuse the backend selection and + possibly crash the applications. + + https://bugzilla.gnome.org/show_bug.cgi?id=754983 + + gio/gdesktopappinfo.c | 13 ++----------- + 1 file changed, 2 insertions(+), 11 deletions(-) + +commit 212b0c28cc54f0a877a17bbeb70e6d013ad96ff7 +Author: Philip Withnall +AuthorDate: Mon Oct 5 10:19:50 2015 +0100 +Commit: Philip Withnall +CommitDate: Mon Oct 5 16:15:19 2015 +0100 + + gsocket: Fix g_socket_send_messages_with_timeout() on win32 + + Commit a0cefc2217adafb6a21d87b66115df6abc9a9cdd introduced an + unresolved + symbol, g_socket_send_message_with_timeout(), on win32. Windows + unfortunately isn’t clever enough to fill in the gaps and magic + up the + implementation of that function from nowhere, so we had better do it + ourselves. + + Factor the blocking behaviour out of g_socket_send_message() into + a new + internal g_socket_send_message_with_timeout(). + + https://bugzilla.gnome.org/show_bug.cgi?id=756054 + + gio/gsocket.c | 45 +++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 39 insertions(+), 6 deletions(-) + +commit f91d1a2a7657a85b46922df4c813fbf8ca3d2bb1 +Author: Marc-André Lureau +AuthorDate: Sun Sep 27 22:42:50 2015 +0200 +Commit: Marc-André Lureau +CommitDate: Mon Oct 5 15:33:05 2015 +0200 + + docs: misc spelling + + glib/docs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dabf6627886c1d21b9fe03c897809eb64ef2ac54 +Author: Marc-André Lureau +AuthorDate: Mon Oct 5 13:02:37 2015 +0200 +Commit: Marc-André Lureau +CommitDate: Mon Oct 5 15:32:41 2015 +0200 + + testutils: remove internal ABI comment + + Some testutils external symbols are marked semi-internals, other + internals. It is not obvious what guarantees these symbols provide. + However, tests are now installable, and require the ABI stability + that glib provides for the rest of the symbols. + + In my case, I would like to introduce g_assert* compat code for older + glib versions, and be able to use the so-called "internal" ABI. + + I propose this change to the headers comments to explain the stability + guarantees. Removing the "internal" = you must not use this, in favor + of semi-internal = this is not documented. + + https://bugzilla.gnome.org/show_bug.cgi?id=756077 + + glib/gtestutils.h | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit e81d4ea988c2e35a9cca0ad12516c39608545bc5 +Author: Chun-wei Fan +AuthorDate: Mon Oct 5 16:29:05 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Oct 5 17:15:12 2015 +0800 + + gio/goscket.c: Fix build on Windows + + 5d68947 factored out resuable items, but some of these are only for + *NIX builds, which will break the build on Windows. Fix this by + building these portions only when !G_OS_WIN32. + + https://bugzilla.gnome.org/show_bug.cgi?id=756053 + + gio/gsocket.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 9b7f5ad61172ff71d0dd4a788a23c5803300ab59 +Author: Philip Withnall +AuthorDate: Sun Oct 4 15:25:03 2015 +0100 +Commit: Philip Withnall +CommitDate: Sun Oct 4 15:26:37 2015 +0100 + + gunixsocketaddress: Clarify construction behaviour of anonymous addrs + + Clarify the handling of G_UNIX_SOCKET_ADDRESS_ANONYMOUS in the + documentation for g_unix_socket_address_new_with_type(). + + gio/gunixsocketaddress.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit f9d9f9c056d96eccbb75dcbdef2b58f6d2a3edea +Author: Matthias Clasen +AuthorDate: Sun Oct 4 10:21:43 2015 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 4 10:24:06 2015 -0400 + + Update to Unicode 8.0 + + Regenerate data tables from the Unicode Character Database, add + new scripts, and update tests to include some of the new data. + + NEWS | 6 + + glib/gscripttable.h | 97 +-- + glib/gunibreak.h | 1620 +++++++++++++++++++++++++++++++----------- + glib/gunichartables.h | 1853 + ++++++++++++++++++++++++++++++++++--------------- + glib/gunicode.h | 16 +- + glib/gunidecomp.h | 53 +- + glib/guniprop.c | 7 + + glib/tests/unicode.c | 20 +- + 8 files changed, 2611 insertions(+), 1061 deletions(-) + +commit fc59c20e97a196a261d9caeb573ce411a98b8c32 +Author: Philip Withnall +AuthorDate: Sun Oct 4 11:34:36 2015 +0100 +Commit: Philip Withnall +CommitDate: Sun Oct 4 11:34:36 2015 +0100 + + gsocket: Minor documentation clarifications + + As suggested by Dan Winship on bug #697907. + + gio/gsocket.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit 237fec7e7025e5b517f06398e3a01354eb3035ec +Author: Philip Withnall +AuthorDate: Mon Aug 17 20:03:47 2015 +0100 +Commit: Philip Withnall +CommitDate: Sun Oct 4 10:39:13 2015 +0100 + + gsocket: Fix connected state if shutting down in two steps + + The value of g_socket_is_connected() gets stuck high if the GSocket is + shut down in two steps: + g_socket_shutdown (socket, TRUE, FALSE, NULL); + g_socket_shutdown (socket, FALSE, TRUE, NULL); + rather than one: + g_socket_shutdown (socket, TRUE, TRUE, NULL); + + Fix that by tracking the connected status for the read half and the + write half of the connection separately. + + https://bugzilla.gnome.org/show_bug.cgi?id=697907 + + gio/gsocket.c | 31 +++++++++++++++++++++++-------- + 1 file changed, 23 insertions(+), 8 deletions(-) + +commit 58ec6674801f07edcf79ba7e6a4a9f17d1a1e13b +Author: Philip Withnall +AuthorDate: Sat Oct 3 23:30:14 2015 +0100 +Commit: Philip Withnall +CommitDate: Sat Oct 3 23:31:44 2015 +0100 + + gkeyfile: Remove dead code and unused string literals + + In all these functions, group_name is guaranteed to be non-NULL by the + function preconditions, so there is no need to handle it as NULL when + building error messages. Remove some unnecessary string literals as a + result. + + Coverity CID: 1325438–1325441 + + glib/gkeyfile.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 456e02f280ede5e990bcfeb4faf6e6acba13d599 +Author: Philip Withnall +AuthorDate: Sat Oct 3 11:52:27 2015 +0100 +Commit: Philip Withnall +CommitDate: Sat Oct 3 11:52:27 2015 +0100 + + gdbusaddress: Fix memory leak when G_DBUS_DEBUG_ADDRESS is enabled + + Coverity CID: 1325374 + + gio/gdbusaddress.c | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +commit 0f98b2f4ec683fc29bee489cafdbbdc7d59ffa1d +Author: Philip Withnall +AuthorDate: Sat Oct 3 11:46:18 2015 +0100 +Commit: Philip Withnall +CommitDate: Sat Oct 3 11:46:18 2015 +0100 + + gsocks5proxy: Fix error reporting in authentication + + set_auth_msg() was returning FALSE to indicate error, but all its + callers were expecting a negative return value to indicate error. This + was causing memory leaks for the GError, and errors to not be + reported. + + Coverity CID: 1325357 + + gio/gsocks5proxy.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c1c001e300debcea9ba6630c1a87f56036840c52 +Author: Philip Withnall +AuthorDate: Sat Oct 3 11:43:49 2015 +0100 +Commit: Philip Withnall +CommitDate: Sat Oct 3 11:43:49 2015 +0100 + + gresource-tool: Fix minor memory leak when listing resources + + Coverity CID: 1325353 + + gio/gresource-tool.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 4f6dc3023205e9480bc4bb738bff06bd02d29567 +Author: Philip Withnall +AuthorDate: Sat Oct 3 11:33:00 2015 +0100 +Commit: Philip Withnall +CommitDate: Sat Oct 3 11:33:00 2015 +0100 + + glib-genmarshal: Fix memory leak with --prefix + + If --prefix is specified, marshaller_prefix is allocated and never + freed. It does not actually have to be allocated — just use + the static + string from argv. + + Coverity CID: 1325370 + + gobject/glib-genmarshal.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 292fd1155ae502df9aadc343cdbbd5d6b3149090 +Author: Philip Withnall +AuthorDate: Sat Oct 3 10:58:18 2015 +0100 +Commit: Philip Withnall +CommitDate: Sat Oct 3 10:58:18 2015 +0100 + + gtlscertificate: Fix error reporting if a GError is not passed in + + If the certificate constructor is called as: + g_tls_certificate_new_from_pem (data, length, NULL); + and PEM parsing fails for the private key, the function would have + continued to try and create a certificate using a NULL key_pem value, + which would have failed or crashed. + + Use g_propagate_error() correctly to avoid this. + + Coverity CID: 1325403 + + gio/gtlscertificate.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +commit 9275be383f63441e45ead925c8956b2d1a7768b1 +Author: Philip Withnall +AuthorDate: Sat Oct 3 10:48:46 2015 +0100 +Commit: Philip Withnall +CommitDate: Sat Oct 3 10:48:46 2015 +0100 + + glocalfile: Fix memory leak in find_topdir_for() + + Coverity CID 1325398. + + gio/glocalfile.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 4b2d92a864f1505f1b08eb639d74293fa32681da +Author: Dan Winship +AuthorDate: Fri Oct 2 10:06:22 2015 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 2 10:07:53 2015 -0400 + + Allow passing unset GValues to g_value_unset() + + This makes it more useful as an autocleanup func. + + Also, add a minimal test of g_value_init/g_value_reset/g_value_unset. + + https://bugzilla.gnome.org/show_bug.cgi?id=755766 + + gobject/gvalue.c | 11 ++++-- + gobject/tests/.gitignore | 2 +- + gobject/tests/Makefile.am | 2 +- + gobject/tests/value.c | 95 + ++++++++++++++++++++++++++++++++++++++++++++++ + gobject/tests/valuearray.c | 64 ------------------------------- + 5 files changed, 104 insertions(+), 70 deletions(-) + +commit b4a3c1bb1194d99efb547120bbff2f4442ef505d +Author: Dan Winship +AuthorDate: Fri Oct 2 09:55:29 2015 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 2 10:07:53 2015 -0400 + + Revert "gvalue: Add g_value_clear method" + + This reverts commit 1233962b54de68bfdf06cfde244693ab7fd3558a. + + docs/reference/gobject/gobject-sections.txt | 1 - + gobject/gvalue.c | 20 -------------------- + gobject/gvalue.h | 2 -- + 3 files changed, 23 deletions(-) + +commit 4c870904cd1ae7954ea1412d9145ca75b927dc18 +Author: Dan Winship +AuthorDate: Fri Oct 2 10:00:54 2015 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 2 10:07:53 2015 -0400 + + Revert "gvalue: Use g_value_clear as clear function" + + This reverts commit 3bb2e8dfc9eae7c6abd8fbec5fa751ffcb495121. + + gobject/gobject-autocleanups.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8ed9e8c79ffed28b2e6ee533d3d184c0a748ed48 +Author: Dan Winship +AuthorDate: Fri Oct 2 09:56:16 2015 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 2 10:07:53 2015 -0400 + + Revert "gvalue: Improve _unset() documentation" + + This reverts commit 3c0d38d68b78a6ea9e6ca82012f011075a625a2b. + + gobject/gvalue.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 0448e758cf9d4dba3c3f8636af850e88597c1821 +Author: Mikhail Zabaluev +AuthorDate: Fri Oct 2 01:01:42 2015 +0300 +Commit: Colin Walters +CommitDate: Thu Oct 1 21:15:22 2015 -0400 + + Skip g_bytes_new_with_free_func() in introspection + + The tricky ownership/mutability semantics on data make this function + unusable in introspection. + + https://bugzilla.gnome.org/show_bug.cgi?id=755961 + + glib/gbytes.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1e1e6c1086a494f065313dba73f7ab04078b8185 +Author: Mikhail Zabaluev +AuthorDate: Fri Oct 2 00:33:14 2015 +0300 +Commit: Colin Walters +CommitDate: Thu Oct 1 21:14:54 2015 -0400 + + gbytes: fix up annotations + + Annotate array elements as bytes. + Annotate a missed output parameter. + Replace (allow-none) with the corresponding modern annotations. + + https://bugzilla.gnome.org/show_bug.cgi?id=755961 + + glib/gbytes.c | 23 ++++++++++++----------- + 1 file changed, 12 insertions(+), 11 deletions(-) + +commit 4a5a30f716ae260bd89416cda8dbdcc5cf6f2e62 +Author: Philip Withnall +AuthorDate: Thu Oct 1 00:32:10 2015 +0100 +Commit: Philip Withnall +CommitDate: Thu Oct 1 15:27:21 2015 +0100 + + docs: Tidy up GObject construction discussion in the GObject tutorial + + Remove some outdated references to an old example, and add a row + in the + table of steps in object initialization for the + GObjectClass.constructed + virtual method. + + https://bugzilla.gnome.org/show_bug.cgi?id=754855 + + docs/reference/gobject/tut_gobject.xml | 23 ++++++++++++++++------- + 1 file changed, 16 insertions(+), 7 deletions(-) + +commit be732677f56f4da48f737dc7edd821ec1928515c +Author: Olivier Crête +AuthorDate: Thu Jul 2 11:32:34 2015 +0100 +Commit: Philip Withnall +CommitDate: Thu Oct 1 14:31:40 2015 +0100 + + gio: Add G_IO_ERROR_MESSAGE_TOO_LARGE + + Corresponding to EMSGSIZE, for when UDP datagrams are rejected due to + being too big. + + https://bugzilla.gnome.org/show_bug.cgi?id=752240 + + gio/gioenums.h | 4 +++- + gio/gioerror.c | 9 +++++++++ + 2 files changed, 12 insertions(+), 1 deletion(-) + +commit 1086507e75580083aef46ad3072e9ff7869c2bc4 +Author: Philip Withnall +AuthorDate: Mon Aug 17 18:10:43 2015 +0100 +Commit: Philip Withnall +CommitDate: Thu Oct 1 14:10:10 2015 +0100 + + gsocket: Fix error behaviour of g_socket_send_messages() + + If an error in the underlying sendmmsg() syscall occurs after + successfully sending one or more messages, g_socket_send_messages() + should return the number of messages successfully sent, rather than an + error. This mirrors the documented sendmmsg() behaviour. + + This is a slight behaviour change for g_socket_send_messages(), but as + it relaxes the error reporting (reporting errors in fewer situations + than before), it should not cause problems. + + https://bugzilla.gnome.org/show_bug.cgi?id=751924 + + gio/gsocket.c | 32 +++++++++++--------------------- + gio/tests/socket.c | 21 +++++++++++++++++++-- + 2 files changed, 30 insertions(+), 23 deletions(-) + +commit f62cbfc02230f160e0fd0947d74c4a012eb6232c +Author: Philip Withnall +AuthorDate: Fri Jun 12 08:47:37 2015 +0100 +Commit: Philip Withnall +CommitDate: Thu Oct 1 14:10:10 2015 +0100 + + gsocket: Add g_socket_receive_messages() + + Add support for receiving multiple messages with a single system call, + using recvmmsg() if available. Otherwise, fall back to looping over + g_socket_receive_message(). + + This adds new API, g_socket_receive_messages(), and corresponding unit + tests. + + https://bugzilla.gnome.org/show_bug.cgi?id=751924 + + config.h.win32.in | 3 + + configure.ac | 2 +- + docs/reference/gio/gio-sections.txt | 1 + + gio/gsocket.c | 294 + +++++++++++++++++++++++++++++++++++- + gio/gsocket.h | 7 + + gio/tests/socket.c | 163 ++++++++++++++++++++ + 6 files changed, 467 insertions(+), 3 deletions(-) + +commit a0cefc2217adafb6a21d87b66115df6abc9a9cdd +Author: Philip Withnall +AuthorDate: Wed Jul 29 11:13:33 2015 +0100 +Commit: Philip Withnall +CommitDate: Thu Oct 1 13:59:08 2015 +0100 + + gsocket: Switch internal functions from blocking booleans to timeouts + + In order to support per-operation timeouts on new API like + g_socket_receive_messages(), the internal GSocket API should use + timeouts rather than boolean blocking parameters. + + (timeout == 0) === (blocking == FALSE) + (timeout == -1) === (blocking == TRUE) + (timeout > 0) === new behaviour + + https://bugzilla.gnome.org/show_bug.cgi?id=751924 + + gio/gsocket.c | 391 + ++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 243 insertions(+), 148 deletions(-) + +commit 7f985b35ce599a37144f852903993300e8f1f197 +Author: Philip Withnall +AuthorDate: Mon Jul 27 14:21:00 2015 +0100 +Commit: Philip Withnall +CommitDate: Thu Oct 1 13:58:44 2015 +0100 + + gsocket: Factor out blocking parameter from g_socket_receive_message() + + This will make future API additions easier. The factored version is + internal for the time being. + + https://bugzilla.gnome.org/show_bug.cgi?id=751924 + + gio/gsocket.c | 214 + +++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 122 insertions(+), 92 deletions(-) + +commit 5d6894746635d19d719fbf15881dbd7fc375d77c +Author: Philip Withnall +AuthorDate: Fri Jun 12 08:30:20 2015 +0100 +Commit: Philip Withnall +CommitDate: Thu Oct 1 13:58:27 2015 +0100 + + gsocket: Split out functions to convert to and from struct msghdr + + As new methods are added to GSocket, we don’t want to duplicate this + code, so factor it out. + + https://bugzilla.gnome.org/show_bug.cgi?id=751924 + + gio/gsocket.c | 522 + +++++++++++++++++++++++++++++----------------------------- + 1 file changed, 257 insertions(+), 265 deletions(-) + +commit 8c4c16ddf405ecd93b1df682cbbbca1d7cfad9ba +Author: Philip Withnall +AuthorDate: Wed Jul 29 11:36:50 2015 +0100 +Commit: Philip Withnall +CommitDate: Thu Oct 1 13:58:07 2015 +0100 + + giotypes: Add GInputMessage struct + + This complements the GOutputMessage struct. It will shortly be + used for + adding a g_socket_receive_messages() function, but needs to be + committed + first to allow some internal refactoring of GSocket. + + https://bugzilla.gnome.org/show_bug.cgi?id=751924 + + docs/reference/gio/gio-sections.txt | 1 + + gio/giotypes.h | 54 + +++++++++++++++++++++++++++++++++++++ + 2 files changed, 55 insertions(+) + +commit 37fcab17d33b7b5384ec018c3595eb9ec393dc2a +Author: Philip Withnall +AuthorDate: Thu Oct 1 13:49:15 2015 +0100 +Commit: Philip Withnall +CommitDate: Thu Oct 1 13:49:15 2015 +0100 + + build: Bump version to 2.47.0 + + So that early adopters of new API have a version number to target. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 037991211d45f400526c8d7f0eb29c940b6e8726 +Author: Emmanuele Bassi +AuthorDate: Thu Oct 1 11:58:37 2015 +0100 +Commit: Emmanuele Bassi +CommitDate: Thu Oct 1 11:58:37 2015 +0100 + + Revert "Apply the previous change to gmarshal.c" + + This reverts commit 43e8bfca0c687317f96f976586194d26d8e141b4. + + https://bugzilla.gnome.org/show_bug.cgi?id=755922 + + gobject/gmarshal.c | 88 + +++++++++++++++++++++++++++--------------------------- + 1 file changed, 44 insertions(+), 44 deletions(-) + +commit cc818f5fe402c9c04f2ac1277bacbfe1cebfc2fe +Author: Emmanuele Bassi +AuthorDate: Thu Oct 1 11:54:11 2015 +0100 +Commit: Emmanuele Bassi +CommitDate: Thu Oct 1 11:54:11 2015 +0100 + + Revert "glib-genmarshal: Treat all parameters the same" + + This reverts commit 8e362161d9554e8a6c1e82f95bff24fc9fdcf9ef. + + There is a fundamental difference between g_value_peek_pointer() and + g_value_get_pointer(), and it's not just complexity: the latter checks + if the GValue holds a pointer type, whereas the former doesn't. + + https://bugzilla.gnome.org/show_bug.cgi?id=755922 + + gobject/glib-genmarshal.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ad7250ab5324a05456a7d5445edfd3ec26638dba +Author: Philip Withnall +AuthorDate: Wed Sep 30 12:57:42 2015 +0100 +Commit: Philip Withnall +CommitDate: Wed Sep 30 12:58:08 2015 +0100 + + giostream: Fix a typo in the documentation for g_io_stream_close() + + gio/giostream.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 202a9c3497e0c0b5789e533509dd8671617ae20c +Author: Ryan Lortie +AuthorDate: Tue Sep 29 11:18:54 2015 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 29 12:29:10 2015 -0400 + + GLocalFile: return text/plain for empty files + + Previously, GLib returned text/plain for empty files. + + This is important because people may want to open empty (eg: + just-created) text files with the text editor. + + An unintended side-effect of b6fc1df022a0326e7c36122b1416061bf796c98f + caused GLib to start returning application/octet-stream instead of + text/plain for these files. + + This commit is essentially a revert of that commit, with a different + solution: we move the special-case up a bit in the function and + hard-code it to text/plain. + + This change does not exactly maintain the old behaviour: previously, a + "fast" lookup would have returned application/octet-stream on an empty + file and now it will return text/plain. I consider this to be an + improvement (since we're returning better data) and don't expect it to + cause problems. + + https://bugzilla.gnome.org/show_bug.cgi?id=755795 + + gio/glocalfileinfo.c | 18 +++++++++++++----- + 1 file changed, 13 insertions(+), 5 deletions(-) + +commit 56b164a19566a63dda23d48a93b91875d89c9fde +Author: Ryan Lortie +AuthorDate: Mon Sep 21 16:54:49 2015 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 29 10:17:28 2015 -0400 + + g_variant_get_child(): flatten-first logic on '&' + + Copy the flatten-first logic from g_variant_get(), and for the same + reason: if the user is requesting a direct pointer access to a + tree-based child inside of argument to this function then that child + could disappear later. + + Forcing serialisation means that the pointer will remain valid as long + as the passed-in instance exists, which is the usual expectation with + GVariant API. + + https://bugzilla.gnome.org/show_bug.cgi?id=755374 + + glib/gvariant.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 3c0d38d68b78a6ea9e6ca82012f011075a625a2b +Author: Nicolas Dufresne +AuthorDate: Tue Sep 29 08:30:21 2015 -0400 +Commit: Nicolas Dufresne +CommitDate: Tue Sep 29 08:30:21 2015 -0400 + + gvalue: Improve _unset() documentation + + g_value_unset() only works with initialized value and will assert + if the GValue is zero-filled (or initialized with + G_VALUE_INIT). Document + this behaviour and refer to g_value_clear() for a method that work on + both initialized and zero-filled GValue. + + https://bugzilla.gnome.org/show_bug.cgi?id=755766 + + gobject/gvalue.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 3bb2e8dfc9eae7c6abd8fbec5fa751ffcb495121 +Author: Nicolas Dufresne +AuthorDate: Mon Sep 28 19:44:44 2015 -0400 +Commit: Nicolas Dufresne +CommitDate: Tue Sep 29 08:26:14 2015 -0400 + + gvalue: Use g_value_clear as clear function + + This change allow leaving a scope before g_value_init() has been + called. This would happen if you do: + + { + g_auto(GValue) value = G_VALUE_INIT; + } + + Or have a return statement (due to failure) before the part of + your code where you set this GValue. + + https://bugzilla.gnome.org/show_bug.cgi?id=755766 + + gobject/gobject-autocleanups.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1233962b54de68bfdf06cfde244693ab7fd3558a +Author: Nicolas Dufresne +AuthorDate: Mon Sep 28 19:41:28 2015 -0400 +Commit: Nicolas Dufresne +CommitDate: Tue Sep 29 08:26:14 2015 -0400 + + gvalue: Add g_value_clear method + + This method is similar to g_value_unset() but will accept + an uninitialized (zero-filled) GValue structure. + + https://bugzilla.gnome.org/show_bug.cgi?id=755766 + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gvalue.c | 20 ++++++++++++++++++++ + gobject/gvalue.h | 2 ++ + 3 files changed, 23 insertions(+) + +commit b36b4941a634af096d21f906caae25ef35161166 +Author: Nicolas Dufresne +AuthorDate: Mon Sep 28 19:35:30 2015 -0400 +Commit: Nicolas Dufresne +CommitDate: Tue Sep 29 08:26:13 2015 -0400 + + glib: Add 2.48 availibity macros + + https://bugzilla.gnome.org/show_bug.cgi?id=755766 + + docs/reference/glib/glib-sections.txt | 4 ++++ + glib/gversionmacros.h | 25 +++++++++++++++++++++++++ + 2 files changed, 29 insertions(+) + +commit 43e8bfca0c687317f96f976586194d26d8e141b4 +Author: Matthias Clasen +AuthorDate: Tue Sep 29 07:03:25 2015 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 29 07:04:36 2015 -0400 + + Apply the previous change to gmarshal.c + + Since gmarshal.c is no longer generated, we have to manually + apply this change to the builtin marshallers. + + gobject/gmarshal.c | 88 + +++++++++++++++++++++++++++--------------------------- + 1 file changed, 44 insertions(+), 44 deletions(-) + +commit 8e362161d9554e8a6c1e82f95bff24fc9fdcf9ef +Author: Matthias Clasen +AuthorDate: Tue Sep 29 07:02:07 2015 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 29 07:04:35 2015 -0400 + + glib-genmarshal: Treat all parameters the same + + There's no need to use a more expensive getter when swapping, + so just use the g_marshal_ getters there too. + + gobject/glib-genmarshal.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit de04fd13048dd208162573187e4c0d9e7d3428d3 +Author: Philip Withnall +AuthorDate: Mon Sep 28 13:23:29 2015 +0100 +Commit: Philip Withnall +CommitDate: Mon Sep 28 13:32:36 2015 +0100 + + gerror: Document the disadvantages of using GError + + And move the discussion to a new subsection in the GError + documentation. + Follow-up from commit 04662a8667c8bf0a594f0c6db7291066c272ad38. + + https://bugzilla.gnome.org/show_bug.cgi?id=743011 + + glib/gerror.c | 31 ++++++++++++++++++++++++------- + 1 file changed, 24 insertions(+), 7 deletions(-) + +commit 04662a8667c8bf0a594f0c6db7291066c272ad38 +Author: Philip Withnall +AuthorDate: Fri Jan 16 08:38:56 2015 +0000 +Commit: Philip Withnall +CommitDate: Mon Sep 28 13:04:25 2015 +0100 + + gerror: Document advantages of GError over numeric error codes + + Despite knowing about GError, there are multiple cases where + developers + have still used traditional numeric error codes, and then got + themselves + into a mess about bindability and generation of error messages. + + Try and avoid this by including a brief paragraph on the benefits of + GError over EINVAL-style error codes. + + https://bugzilla.gnome.org/show_bug.cgi?id=743011 + + glib/gerror.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 5ceaeef832fb595d1d5117524937b15c892cbd75 +Author: Philip Withnall +AuthorDate: Fri Jan 16 08:32:20 2015 +0000 +Commit: Philip Withnall +CommitDate: Mon Sep 28 13:04:25 2015 +0100 + + gerror: Add an extra heading to the GError documentation + + This means that the top of the documentation can link forward to this + important section, and random people on the internet can link directly + to it on developer.gnome.org. + + https://bugzilla.gnome.org/show_bug.cgi?id=743011 + + glib/gerror.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 21809c8c0fdf72b5859faeb1781ff3edc121120a +Author: Philip Withnall +AuthorDate: Fri Sep 26 13:45:00 2014 +0100 +Commit: Philip Withnall +CommitDate: Mon Sep 28 13:02:19 2015 +0100 + + giostream: Fix some typos in the GIOStream documentation + + This doesn’t change the meaning of the documentation. + + https://bugzilla.gnome.org/show_bug.cgi?id=735754 + + gio/giostream.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 363fa1822355021b4b723389d51f63ac263ef30c +Author: Philip Withnall +AuthorDate: Mon Aug 17 19:13:15 2015 +0100 +Commit: Philip Withnall +CommitDate: Mon Sep 28 12:47:09 2015 +0100 + + gsocket: Fix documentation for g_socket_send_message() + + It is no longer the most fully featured version of this function — + g_socket_send_messages() stole that dubious honour with 2.44. + + https://bugzilla.gnome.org/show_bug.cgi?id=751924 + + gio/gsocket.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 347e4a75ec745e09fa8433f557b363e5e95491cd +Author: Philip Withnall +AuthorDate: Wed Jul 29 14:08:31 2015 +0100 +Commit: Philip Withnall +CommitDate: Mon Sep 28 12:47:09 2015 +0100 + + gsocket: Clarify GSocket:blocking doesn’t apply to ops with + a parameter + + Operations which take an explicit blocking parameter are completely + unaffected by GSocket:blocking. + + https://bugzilla.gnome.org/show_bug.cgi?id=751924 + + gio/gsocket.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 8fdc6701889679d16ac064b481f968807eddbf0f +Author: Philip Withnall +AuthorDate: Mon Jul 27 14:46:54 2015 +0100 +Commit: Philip Withnall +CommitDate: Mon Sep 28 12:47:07 2015 +0100 + + gsocket: Clarify flags documentation for g_socket_receive_message() + + The API design here is a bit awkward — the in/out flags argument + should + actually have been an in flags argument and an out msg_flags argument. + Clarify that a bit in the documentation. + + https://bugzilla.gnome.org/show_bug.cgi?id=751924 + + gio/gsocket.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 4745c08220b90eac741ae3ca1913cbe90c9831ef +Author: Benjamin Gilbert +AuthorDate: Sat Sep 26 18:22:34 2015 -0400 +Commit: Colin Walters +CommitDate: Sun Sep 27 16:07:27 2015 -0400 + + win32: Fix link error with _wstat32i64() on 64-bit + + _wstat32i64() doesn't exist in msvcrt.dll. This doesn't cause + a problem + on 32-bit Windows because mingw-w64 #defines _wstat32i64 to _wstati64, + but on 64-bit Windows we get a link error. + + In addition, _wstat32i64() takes a struct _stat32i64 *, but + GLocalFileStat is #defined to struct _stati64, which is not the same + type on 64-bit Windows. + + Fix by using _wstati64(). + + https://bugzilla.gnome.org/show_bug.cgi?id=749161 + + gio/glocalfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit da2217859f1b7cc0a2a3b7d50e70b983ee301a10 +Author: Trần Ngọc Quân +AuthorDate: Sun Sep 27 15:28:55 2015 +0700 +Commit: Trần Ngọc Quân +CommitDate: Sun Sep 27 15:28:55 2015 +0700 + + Updated Vietnamese translation + + Signed-off-by: Trần Ngọc Quân + + po/vi.po | 1159 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 592 insertions(+), 567 deletions(-) + +commit a0b4e87f445ca00a73db8bf46cc47215a9f14788 +Author: Chun-wei Fan +AuthorDate: Fri Sep 25 12:54:26 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Sep 25 19:41:21 2015 +0800 + + build/Makefile-newvs.am: Update Comments for Usage + + Update the notes that this is also used for Visual Studio 2015 + support, + and correct the MSVC_VER_LONG for MSVC 2015, which is 14, not 2015. + + Also add a note that this can be used for other projects that have + Visual Studio build support. + + build/Makefile-newvs.am | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 762437c8495d11879d265965cf24703bf8dbfb5d +Author: Chun-wei Fan +AuthorDate: Fri Sep 25 12:25:13 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Sep 25 19:41:11 2015 +0800 + + Build: Make Makefile.msvcproj A Bit More Generic + + Handle also the situation where $(srcdir) == $(top_srcdir), so + that this + can also be used in cases like librsvg and gobject-introspection. + + build/Makefile.msvcproj | 10 +++------- + 1 file changed, 3 insertions(+), 7 deletions(-) + +commit ecd265288319c004a862a29c95487a888f62cfc7 +Author: Chun-wei Fan +AuthorDate: Fri Sep 25 17:47:33 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Sep 25 17:47:33 2015 +0800 + + build/win32/replace.py: Add Note On Its Reusability + + Add a note stating that this script can be copied for use to replace + strings in files when necessary, such as replacing autotools variables + in non-autotools builds, such as Visual Studio builds. + + build/win32/replace.py | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 2d7817887a9f0624f73492d04b2a992545f0beb9 +Author: Matthias Clasen +AuthorDate: Wed Sep 23 18:55:28 2015 -0400 +Commit: Matthias Clasen +CommitDate: Wed Sep 23 18:55:28 2015 -0400 + + Revert "list store: Fix a parameter check" + + This reverts commit d28639507db2029b8f184a5d93e9d8c28acc1955. + + This wasn't meant to go in. + + https://bugzilla.gnome.org/show_bug.cgi?id=755496 + + glib/gsequence.c | 18 +++++++----------- + 1 file changed, 7 insertions(+), 11 deletions(-) + +commit aef2d0c56dd6d363e51b1c37dc0095054f18098c +Author: Chun-wei Fan +AuthorDate: Wed Sep 23 16:12:50 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Sep 23 18:33:28 2015 +0800 + + build/win32: Make "Install" Property Sheet Generation More Robust + + List the files that are generated in the process to generate the + glib-install property sheets, so that we can use that list as a + depedency, as well as deleting those files in one shot after the + property sheet is generated, so we don't need to worry about those + in 'make distclean' or so. + + build/win32/vs10/Makefile.am | 8 ++++---- + build/win32/vs9/Makefile.am | 8 ++++---- + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit b81f3ced716b81ea604876ba1e89b953e0d04813 +Author: Xavier Claessens +AuthorDate: Mon Sep 21 10:41:00 2015 -0400 +Commit: Xavier Claessens +CommitDate: Tue Sep 22 11:18:30 2015 -0400 + + Move GStrv typedef to glib.h instead of gobject.h + + GStrv was historically only needed for the boxed G_TYPE_STRV, + but it is now useful for g_auto(GStrv) as well. This is not + an ABI change. + + https://bugzilla.gnome.org/show_bug.cgi?id=755355 + + docs/reference/glib/glib-sections.txt | 3 +++ + docs/reference/gobject/gobject-sections.txt | 1 - + glib/docs.c | 2 ++ + glib/glib-autocleanups.h | 1 + + glib/gstrfuncs.c | 7 +++++++ + glib/gstrfuncs.h | 1 + + glib/tests/autoptr.c | 8 ++++++++ + gobject/glib-types.h | 7 ------- + gobject/gobject-autocleanups.h | 1 - + 9 files changed, 22 insertions(+), 9 deletions(-) + +commit 32811598f384ac165a812b4dde8fb1ad4df2d420 +Author: Xavier Claessens +AuthorDate: Tue Sep 15 16:42:10 2015 -0400 +Commit: Xavier Claessens +CommitDate: Tue Sep 22 11:15:19 2015 -0400 + + doc: clarify that _get_instance_private() is NULL-safe + + https://bugzilla.gnome.org/show_bug.cgi?id=755083 + + gobject/gtype.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit ab26dd54337544275ff8bb61eb227aed83a8ed80 +Author: Emmanuele Bassi +AuthorDate: Tue Sep 22 13:10:28 2015 +0100 +Commit: Emmanuele Bassi +CommitDate: Tue Sep 22 15:14:14 2015 +0100 + + Revert use of the system_header GCC pragma + + This reverts commit 662bf991c08b16dea8a36026243b311f6cdb17f1. It + is not + a straight up revert because the old commit involved various long + since + removed ChangeLog files and we'd end up mudding the patch. + + The system_header GCC pragma is breaking warnings in the various + g_return_* macros; GCC stopped warning when using a macro with + a return + value in a function that returns void, as well as when using a macro + with no return value in a function that has a non-void return value. + Suppressing this kind of warnings is not a good idea. + + Other compilers are unaffected, even ones like Clang with a GCC + compatibility layer. + + Given the fact that the original commit was added 14 years ago as a + workaround in the old days of GTK+ 1.2, I think it's safe to drop it. + + https://bugzilla.gnome.org/show_bug.cgi?id=753310 + + glib/gmessages.h | 6 ------ + 1 file changed, 6 deletions(-) + +commit d488d75909a7f5bdc13865a155ea583fcc3cb07f +Author: Xavier Claessens +AuthorDate: Mon Sep 21 10:50:38 2015 -0400 +Commit: Xavier Claessens +CommitDate: Tue Sep 22 09:43:47 2015 -0400 + + Remove useless NULL check before g_free() + + glib/glib-autocleanups.h | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit f7f0c86a9c7669a5101615622a29d34098ecb7fc +Author: Милош Поповић +AuthorDate: Tue Sep 22 12:33:23 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Tue Sep 22 12:33:23 2015 +0000 + + Updated Serbian Latin translation + + po/sr@latin.po | 1014 + ++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 538 insertions(+), 476 deletions(-) + +commit 45c39bfed487378de5a4b7f977fd74564f29083e +Author: Милош Поповић +AuthorDate: Tue Sep 22 12:32:49 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Tue Sep 22 12:32:49 2015 +0000 + + Updated Serbian translation + + po/sr.po | 1014 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 538 insertions(+), 476 deletions(-) + +commit 613393bc1d52207c22f3fe8dc71c09277f9ac7f7 +Author: Petr Kovar +AuthorDate: Mon Sep 21 17:56:16 2015 +0200 +Commit: Petr Kovar +CommitDate: Mon Sep 21 17:56:16 2015 +0200 + + Update Czech translation + + po/cs.po | 427 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 218 insertions(+), 209 deletions(-) + +commit 9348af3651afbd554fec35e556cda8add48bd9f8 +Author: Xavier Claessens +AuthorDate: Mon Sep 21 09:53:25 2015 -0400 +Commit: Xavier Claessens +CommitDate: Mon Sep 21 10:47:50 2015 -0400 + + Doc: g_autoptr(gchar) has been replaced by g_autofree + + https://bugzilla.gnome.org/show_bug.cgi?id=755351 + + glib/docs.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d73cd49799444f9045d44a414c7b35f129844504 +Author: Matthias Clasen +AuthorDate: Mon Sep 21 06:10:10 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 21 08:38:33 2015 -0400 + + 2.46.0 + + NEWS | 16 ++++++++++++++++ + configure.ac | 4 ++-- + 2 files changed, 18 insertions(+), 2 deletions(-) + +commit 3ffed912c19c5c24b7302d2ff12f82a6167f1c30 +Author: Xavier Claessens +AuthorDate: Tue Sep 15 16:50:37 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 21 08:38:33 2015 -0400 + + doc: small clarification in g_autoptr() + + https://bugzilla.gnome.org/show_bug.cgi?id=755077 + + glib/docs.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 8297ea8badef5ae5bdeab85b74780fd70de60247 +Author: Matthew Waters +AuthorDate: Thu Sep 17 20:38:10 2015 +1000 +Commit: Matthias Clasen +CommitDate: Mon Sep 21 08:37:29 2015 -0400 + + win32: fix incorrect specifier + + error: format ‘%u’ expects argument of type ‘unsigned int’, + but argument 4 has + type ‘gsize {aka long long unsigned int}’ [-Werror=format=] + + https://bugzilla.gnome.org/show_bug.cgi?id=755154 + + gio/gwin32appinfo.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2bc094264b334b8afdbdc1cf35ff5265f0ac3415 +Author: Matthias Clasen +AuthorDate: Mon Sep 21 06:27:07 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 21 06:44:58 2015 -0400 + + Documentation fixups + + Various parameter fixups and symbol list additions. + + docs/reference/gio/gio-sections.txt | 4 +++- + docs/reference/glib/glib-sections.txt | 1 + + gio/gnativesocketaddress.c | 6 +++--- + gio/gwin32registrykey.c | 20 +++++++++---------- + glib/gasyncqueue.c | 36 + +++++++++++++++++------------------ + 5 files changed, 35 insertions(+), 32 deletions(-) + +commit 3ad2ef7510b036758d5aa928a6a0a1ac5c29c591 +Author: Ask Hjorth Larsen +AuthorDate: Sun Sep 20 20:20:37 2015 +0200 +Commit: Ask Hjorth Larsen +CommitDate: Sun Sep 20 20:20:37 2015 +0200 + + Updated Danish translation + + po/da.po | 864 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 443 insertions(+), 421 deletions(-) + +commit b1af57256721fa0198b63585d3bf26265a8736dd +Author: Rafael Fontenelle +AuthorDate: Sun Sep 20 14:32:13 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Sep 20 14:32:13 2015 +0000 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 1465 + ++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 791 insertions(+), 674 deletions(-) + +commit 1dc70d703e925bf441a12961223c4cb6d1e376bd +Author: Rūdolfs Mazurs +AuthorDate: Fri Sep 18 22:29:37 2015 +0300 +Commit: Rūdolfs Mazurs +CommitDate: Fri Sep 18 22:29:37 2015 +0300 + + Updated Latvian translation + + po/lv.po | 1102 + +++++++++++++++++++++++++++----------------------------------- + 1 file changed, 477 insertions(+), 625 deletions(-) + +commit 9d859934c5d097bc23578237d01324eb9b30c0f4 +Author: Bernd Homuth +AuthorDate: Thu Sep 17 15:36:28 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Thu Sep 17 15:36:28 2015 +0000 + + Updated German translation + + po/de.po | 964 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 494 insertions(+), 470 deletions(-) + +commit f1599649e55a52a8e331ee282ac4c5a03432cb43 +Author: Stas Solovey +AuthorDate: Thu Sep 17 11:31:28 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Thu Sep 17 11:31:28 2015 +0000 + + Updated Russian translation + + po/ru.po | 863 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 446 insertions(+), 417 deletions(-) + +commit ea93847a7d6f341c8ed53733c78b8f38f9567bc4 +Author: Chun-wei Fan +AuthorDate: Thu Sep 17 09:15:27 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Sep 17 09:15:27 2015 +0800 + + MSVC Build: Make Re-use Comment of Autotools Module Clearer + + build/Makefile.msvcproj | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit 9fe1c1b3e7a8d680e15d861c1ef224f4b7a2ebad +Author: Muhammet Kara +AuthorDate: Wed Sep 16 18:51:44 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Wed Sep 16 18:51:44 2015 +0000 + + Updated Turkish translation + + po/tr.po | 376 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 194 insertions(+), 182 deletions(-) + +commit 58eae7782acbbebb2d6793d4087b6e0a8f61e818 +Author: Benjamin Otte +AuthorDate: Wed Sep 16 18:44:48 2015 +0200 +Commit: Benjamin Otte +CommitDate: Wed Sep 16 18:45:48 2015 +0200 + + tests: Do last commit's fix for enums, too + + We don't want to treat enums as ints but as ints. + + gobject/tests/signals.c | 25 +++++++++++++++++-------- + 1 file changed, 17 insertions(+), 8 deletions(-) + +commit 605ff1efe76ee26695077b08b96f222cef96efb2 +Author: Benjamin Otte +AuthorDate: Wed Sep 16 18:17:04 2015 +0200 +Commit: Benjamin Otte +CommitDate: Wed Sep 16 18:45:48 2015 +0200 + + tests: Make testcase not pass 0 as a flags value + + This will not catch the case where we fail in libffi and always use 0. + In fact, be a real annoying person and use (1 << 31) as a flags + value to + test signedness, too. + + Also update the testcase to actually use flags everywhere and ot uint. + + https://bugzilla.gnome.org/show_bug.cgi?id=754882 + + gobject/tests/signals.c | 29 ++++++++++++++++++++++------- + 1 file changed, 22 insertions(+), 7 deletions(-) + +commit 7b685eab8821686821c38e398536b0842b0ed131 +Author: Ray Strode +AuthorDate: Wed Sep 16 18:01:04 2015 +0200 +Commit: Benjamin Otte +CommitDate: Wed Sep 16 18:45:48 2015 +0200 + + ffi: Marshal flags like enums + + Flags are enums. + Fixes broken marshalling on BE 64bit architectures. + + https://bugzilla.gnome.org/show_bug.cgi?id=754882 + + gobject/gclosure.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 846e206146c2f0b6b5321d245004d262c7d585a3 +Author: Murray Cumming +AuthorDate: Wed Sep 16 14:30:29 2015 +0200 +Commit: Murray Cumming +CommitDate: Wed Sep 16 14:30:29 2015 +0200 + + GListModel docs: It's get_n_items(), not get_length(). + + gio/glistmodel.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3bd1618ea955f950f87bc4e452029c5f0cea35aa +Author: Matthias Clasen +AuthorDate: Mon Sep 14 18:42:12 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 14 18:42:12 2015 -0400 + + Disable deprecation warnings for the stable release again + + Keeping these enabled causes too many people to file + bugs against gobject, and not enough people to send + patches to port away from deprecated properties. + + gobject/gobject.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5475be0c1053df95ac560a94b918445411b3639e +Author: Matthias Clasen +AuthorDate: Mon Sep 14 08:42:18 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 14 11:17:20 2015 -0400 + + 2.45.8 + + NEWS | 1 + + 1 file changed, 1 insertion(+) + +commit 4c938c246cf3da8db16a2d9cda7209f1d72e37ee +Author: Fran Dieguez +AuthorDate: Mon Sep 14 16:49:57 2015 +0200 +Commit: Fran Dieguez +CommitDate: Mon Sep 14 16:49:57 2015 +0200 + + Updated Galician translations + + po/gl.po | 935 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 478 insertions(+), 457 deletions(-) + +commit 69002f726d597c613223ad0ea8e6262b73842f1b +Author: Alexander Larsson +AuthorDate: Mon Sep 14 13:15:51 2015 +0200 +Commit: Alexander Larsson +CommitDate: Mon Sep 14 13:19:51 2015 +0200 + + signal: return TRUE from g_signal_has_handler_pending for custom + class closure + + This is almost always what you want, because if you're using this you + want to know if any "custom code" (i.e. not the default class closure) + is going to be run if you emit this signal. + + I looked at all the existing uses of this and they were all broken + in the + presence of g_signal_override_class_closure(). + + https://bugzilla.gnome.org/show_bug.cgi?id=754986 + + gobject/gsignal.c | 33 ++++++++++++++++++++++----------- + 1 file changed, 22 insertions(+), 11 deletions(-) + +commit 2e96668f245dba66c3ceedfea7a8ecc565a018e7 +Author: Matthias Clasen +AuthorDate: Sun Sep 13 22:44:29 2015 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 13 22:44:29 2015 -0400 + + Updates + + NEWS | 33 +++++++++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +commit a7b2b5686aea1199e3cdea7d1c743e087a1e5b1d +Author: Matthias Clasen +AuthorDate: Sun Sep 13 13:37:10 2015 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 13 13:37:10 2015 -0400 + + Fix make check + + I forgot to add the include to make I_() known in gdbusdaemon.c + + gio/gdbusdaemon.c | 1 + + 1 file changed, 1 insertion(+) + +commit 67c5bbaf03c95df198b2828d5dbf51b010721f11 +Author: Mikhail Zabaluev +AuthorDate: Sat Sep 12 12:13:10 2015 +0300 +Commit: Matthias Clasen +CommitDate: Sun Sep 13 13:12:25 2015 -0400 + + glib/tests/utf8-validate: test known-length case along with + null-terminated + + For all test cases where the text length is given as -1, also + call g_utf8_validate() with the actual string length to exercise + the known-length case. Unknown-length and known-length validation + use different code paths, but most of the tests only exercised with + unknown-length parameter. + + https://bugzilla.gnome.org/show_bug.cgi?id=754924 + + glib/tests/utf8-validate.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 8ab28b448bfc852b61c515c6fe230f23a5c1298b +Author: Mikhail Zabaluev +AuthorDate: Sat Sep 12 11:38:04 2015 +0300 +Commit: Matthias Clasen +CommitDate: Sun Sep 13 13:04:59 2015 -0400 + + glib/tests/utf8-validate: add another test for invalid continuation + bytes + + This would have caught the regression committed in the course of + bug #738504. + + glib/tests/utf8-validate.c | 1 + + 1 file changed, 1 insertion(+) + +commit d1f4d4a91a5274a33a0aee0748851bce7fbffa23 +Author: Mikhail Zabaluev +AuthorDate: Sat Sep 12 11:06:53 2015 +0300 +Commit: Matthias Clasen +CommitDate: Sun Sep 13 13:04:59 2015 -0400 + + g_utf8_validate: fix a regression + + A recent change permitted some characters from range 0x80-0xbf as + would-be valid sequence starters for length 2, as long as + continuation characters were OK. + + https://bugzilla.gnome.org/show_bug.cgi?id=738504 + + glib/gutf8.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a51a877d2739239e2ab7c72a60a5ecc27ba772f3 +Author: Nicola Fontana +AuthorDate: Fri Mar 22 23:32:45 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sun Sep 13 02:15:04 2015 -0400 + + GParamSpec: do not use static GParamSpecTypeInfo + + g_param_type_register_static() has read-only access the pspec_info + argument: no need to keep the original struct around. + + https://bugzilla.gnome.org/show_bug.cgi?id=696426 + + gobject/gparamspecs.c | 42 +++++++++++++++++++++--------------------- + 1 file changed, 21 insertions(+), 21 deletions(-) + +commit 6f752b52e9145986a26a5c6f0bf064a185bb07d2 +Author: Anders Jonsson +AuthorDate: Sat Sep 12 21:13:22 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Sat Sep 12 21:13:22 2015 +0000 + + Updated Swedish translation + + po/sv.po | 761 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 392 insertions(+), 369 deletions(-) + +commit d8a7e093b92bee5b4077968984314afe8bf193db +Author: Piotr Drąg +AuthorDate: Sat Sep 12 19:55:24 2015 +0200 +Commit: Piotr Drąg +CommitDate: Sat Sep 12 19:55:24 2015 +0200 + + Updated POTFILES.in + + po/POTFILES.in | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit b9a27679ec1555262c0c721ec1793d7acd7766d9 +Author: Matthias Clasen +AuthorDate: Sat Sep 12 12:05:31 2015 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 12 12:05:31 2015 -0400 + + Revert "Cleanups after we dropped mem vtables" + + This reverts commit 627854fee1fde93e01f27655b00a9082348ee15f. + + It has been argued that not aborting on malloc() failure is + an incompatible change. + + glib/gstrfuncs.c | 25 +++++++++++++++++++++---- + 1 file changed, 21 insertions(+), 4 deletions(-) + +commit 9acd0ddbf3c0f14e6ae7cb3f7faf4c24767f13b8 +Author: Matthias Clasen +AuthorDate: Sat Sep 12 00:00:40 2015 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 12 11:13:45 2015 -0400 + + gio: Intern all signal names beforehand + + This avoids pointless copying of static strings. + + gio/gappinfo.c | 6 +++--- + gio/gapplication.c | 12 ++++++------ + gio/gdbusauthobserver.c | 4 ++-- + gio/gdbusconnection.c | 2 +- + gio/gdbusdaemon.c | 2 +- + gio/gdbusinterfaceskeleton.c | 2 +- + gio/gdbusobject.c | 4 ++-- + gio/gdbusobjectmanager.c | 8 ++++---- + gio/gdbusobjectmanagerclient.c | 4 ++-- + gio/gdbusobjectskeleton.c | 2 +- + gio/gdbusproxy.c | 4 ++-- + gio/gdbusserver.c | 2 +- + gio/glistmodel.c | 3 ++- + gio/gmenumodel.c | 4 +++- + gio/gsettings.c | 8 ++++---- + gio/gsocketservice.c | 2 +- + gio/gthreadedsocketservice.c | 2 +- + gio/gunixmounts.c | 4 ++-- + 18 files changed, 39 insertions(+), 36 deletions(-) + +commit c90f283be33bffde48c244e0478b63fd6798fbcf +Author: Matthias Clasen +AuthorDate: Sat Sep 12 01:47:13 2015 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 12 11:13:45 2015 -0400 + + Speed up g_dataset_id_dup_data + + This code is used in the property notification path, so it + better be fast. This commit removes a g_return_if_fail check and + treats the common case of just a single data element better. + + glib/gdataset.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit 59df5440f3805db3e1d00b86d91a76dcb50412e4 +Author: Matthias Clasen +AuthorDate: Fri Sep 11 22:48:05 2015 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 12 11:13:45 2015 -0400 + + Drop g_slice_set_config tests + + With g_quark_init, we are now calling GSlice from a constructor + (this was already the case when linking against gobject). + + glib/tests/slice.c | 21 --------------------- + 1 file changed, 21 deletions(-) + +commit 2fe992b099bfd3fb121a71b7af43e116b2142b5d +Author: Matthias Clasen +AuthorDate: Fri Sep 11 23:59:27 2015 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 12 11:13:45 2015 -0400 + + Move quark initialization to a constructor + + This removes a branch from the very frequently called + quark functions. + + glib/glib-init.c | 1 + + glib/glib-init.h | 2 ++ + glib/gquark.c | 26 ++++++++++++++------------ + 3 files changed, 17 insertions(+), 12 deletions(-) + +commit 627854fee1fde93e01f27655b00a9082348ee15f +Author: Matthias Clasen +AuthorDate: Fri Sep 11 18:08:33 2015 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 12 11:13:45 2015 -0400 + + Cleanups after we dropped mem vtables + + Since g_malloc is now always malloc, we can just use + strdup and strndup directly. + + glib/gstrfuncs.c | 25 ++++--------------------- + 1 file changed, 4 insertions(+), 21 deletions(-) + +commit 97a25d12031b07540c95387cb434ee5c87b82c46 +Author: Matthias Clasen +AuthorDate: Thu Sep 10 23:57:01 2015 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 12 11:13:44 2015 -0400 + + Optimize g_unichar_iswide + + Apply the same optimization that was done for g_unichar_get_script + long ago: Use a quick check for the low end, and then remember the + midpoint of the last bsearch, since we're likely to be called for + characters that are close to each other. + + This change made g_unichar_iswide disappear from profiles of the + gtk3-demo listbox example. + + glib/guniprop.c | 38 ++++++++++++++++++++++++++++++-------- + 1 file changed, 30 insertions(+), 8 deletions(-) + +commit 96675446c5fc9b47265124e479cc300f7a7ced65 +Author: Dan Winship +AuthorDate: Thu Aug 6 15:39:22 2015 -0400 +Commit: Dan Winship +CommitDate: Fri Sep 11 12:39:44 2015 -0400 + + Make g_strerror() do less work + + Store the (translated, UTF-8-encoded) error strings in a hash table to + avoid doing translation and (possibly) g_locale_to_utf8() in every + g_strerror() call. + + https://bugzilla.gnome.org/show_bug.cgi?id=754788 + + glib/gstrfuncs.c | 55 + ++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 34 insertions(+), 21 deletions(-) + +commit 19eb511ba4f4914c1914472132d3601069bef906 +Author: Dan Winship +AuthorDate: Wed Sep 9 11:16:30 2015 -0400 +Commit: Dan Winship +CommitDate: Fri Sep 11 12:38:18 2015 -0400 + + More g_strerror() fixes + + Add a check to configure.ac for strerror_r, since we don't currently + require POSIX.1-2001 conformance in general. Add back a + plain-strerror() case as a fallback, and rearrange the glibc-vs-POSIX + strerror_r() branches. + + Update the docs to not claim that "not all platforms support the + strerror() function" (we require C90), but still mention the UTF-8 and + always-valid-string benefits. (And make test_strerror() check that + last part.) + + https://bugzilla.gnome.org/show_bug.cgi?id=754788 + + configure.ac | 2 +- + glib/gstrfuncs.c | 27 +++++++++++++++------------ + glib/tests/strfuncs.c | 11 +++++++++++ + 3 files changed, 27 insertions(+), 13 deletions(-) + +commit ee6740aa78d267d9890bc3830a723dbc1eaf303a +Author: Michael Catanzaro +AuthorDate: Thu Sep 10 20:46:21 2015 -0500 +Commit: Michael Catanzaro +CommitDate: Thu Sep 10 20:46:37 2015 -0500 + + Fix a typo + + gobject/gobject.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b8a5e22b6b6280ad05dd14cfa920316e85e30d04 +Author: Kalev Lember +AuthorDate: Thu Sep 10 15:06:56 2015 +0200 +Commit: Kalev Lember +CommitDate: Thu Sep 10 15:06:56 2015 +0200 + + Bump version + + So that early adopters of new api have a version to target. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d19411a76f91d47930ea67d16b30fba55734b449 +Author: Kalev Lember +AuthorDate: Thu Sep 10 14:08:35 2015 +0200 +Commit: Kalev Lember +CommitDate: Thu Sep 10 14:36:43 2015 +0200 + + autocleanups: Add GString type + + https://bugzilla.gnome.org/show_bug.cgi?id=754831 + + glib/glib-autocleanups.h | 10 +++++++++- + glib/tests/autoptr.c | 8 ++++++++ + 2 files changed, 17 insertions(+), 1 deletion(-) + +commit 4025b5a54fcbe2f5bc4c71e3259bc1af60c99169 +Author: Chun-wei Fan +AuthorDate: Wed Sep 9 11:58:44 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Sep 9 15:21:26 2015 +0800 + + MSVC Builds: "Add" MSVC 2015 Projects + + This "adds" the Visual Studio 2015 Project files by doing what we did + before: copying the Visual Studio 2010 projects and replacing items + in them, as the formats of the Visual Studio 201x projects are largely + the same. + + build/win32/Makefile.am | 3 ++- + build/win32/vs14/Makefile.am | 44 + ++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 1 + + 3 files changed, 47 insertions(+), 1 deletion(-) + +commit 9c7df09c3bc784d19c206e8c17c3c288368541d1 +Author: Chun-wei Fan +AuthorDate: Wed Sep 9 11:54:11 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Sep 9 15:21:12 2015 +0800 + + MSVC Builds: Simplify Script to Generate glib-mkenums + + Use a simple all-purpose utility script to generate the glib-mkenums + PERL script with the version info, and stop using the script that + tries to parse the autotools files. Move the things that + were taken out from build/win32/setup.py back there. + + build/win32/Makefile.am | 2 +- + build/win32/process_in_win32.py | 77 ------------------------- + build/win32/replace.py | 98 + ++++++++++++++++++++++++++++++++ + build/win32/setup.py | 35 +++++++++++- + build/win32/vs10/Makefile.am | 3 +- + build/win32/vs10/glib-gen-srcs.props | 33 ----------- + build/win32/vs10/glib-gen-srcs.props.in | 33 +++++++++++ + build/win32/vs9/Makefile.am | 3 +- + build/win32/vs9/glib-gen-srcs.vsprops | 28 --------- + build/win32/vs9/glib-gen-srcs.vsprops.in | 28 +++++++++ + configure.ac | 2 + + 11 files changed, 200 insertions(+), 142 deletions(-) + +commit 0570adff8074a786023bfb7646e7475af52f88f9 +Author: Matej Urbančič +AuthorDate: Tue Sep 8 23:19:40 2015 +0200 +Commit: Matej Urbančič +CommitDate: Tue Sep 8 23:19:40 2015 +0200 + + Updated Slovenian translation + + po/sl.po | 936 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 481 insertions(+), 455 deletions(-) + +commit 20e8b634771f85926a6f9a67e11f13eb01d45bc7 +Author: Sebastian Dröge +AuthorDate: Fri Sep 4 11:58:57 2015 +0300 +Commit: Sebastian Dröge +CommitDate: Tue Sep 8 17:39:07 2015 +0300 + + gioerror: Add more mappings for WinSock error codes + + https://bugzilla.gnome.org/show_bug.cgi?id=754560 + + gio/gioerror.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit 5a84f84325cbb0a58014348cb5513656432ae25d +Author: Rico Tzschichholz +AuthorDate: Tue Sep 8 14:15:44 2015 +0200 +Commit: Rico Tzschichholz +CommitDate: Tue Sep 8 14:15:44 2015 +0200 + + gparam: Fix Since tag of g_param_spec_get_name_quark + + gobject/gparam.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 925dca1746b45855ad56dbe219f631200e87c9ff +Author: Rico Tzschichholz +AuthorDate: Tue Sep 8 14:14:13 2015 +0200 +Commit: Rico Tzschichholz +CommitDate: Tue Sep 8 14:14:13 2015 +0200 + + docs: Add index for 2.46 api + + docs/reference/glib/glib-docs.xml | 4 ++++ + docs/reference/gobject/gobject-docs.xml | 4 ++++ + 2 files changed, 8 insertions(+) + +commit 0be6766d9be08bce4901ab3b5d80657070e65ee1 +Author: Chun-wei Fan +AuthorDate: Mon Sep 7 14:46:10 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Sep 8 15:51:58 2015 +0800 + + MSVC Builds: Prepare For Visual Studio 2015 + + Update the autotools module so that we can use it to upgrade the + Visual Studio 2010 projects to become Visual Studio 2015-compatible. + + Note that this will make the MSVC 2015 builds use the the the latest + VC140 CRT. + + build/Makefile-newvs.am | 22 +++++++++++++--------- + build/win32/vs11/Makefile.am | 4 +--- + build/win32/vs12/Makefile.am | 4 +--- + 3 files changed, 15 insertions(+), 15 deletions(-) + +commit 00933dfc9cc525963c6833d3180b593a87bb15bb +Author: Matthias Clasen +AuthorDate: Mon Sep 7 20:56:10 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 20:56:10 2015 -0400 + + Speed up property change notification a bit + + Avoid the quark lock and hash table lookup for every + emission of ::notify. + + gobject/gobject.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 41c0d15a6d680738e80a59e89c1058a97ca922ea +Author: Matthias Clasen +AuthorDate: Mon Sep 7 20:54:01 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 20:54:01 2015 -0400 + + Add a method to get the pspec name quark + + This lets us avoid the quark lookup in the hot + property change notification path. + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gparam.c | 34 + ++++++++++++++++++++++++++--- + gobject/gparam.h | 3 +++ + 3 files changed, 35 insertions(+), 3 deletions(-) + +commit a62ad79f5c59152d1a52c3b52d969c3c48390cda +Author: Matthias Clasen +AuthorDate: Mon Sep 7 19:57:53 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 19:57:53 2015 -0400 + + Clean up locking in g_object_notify_queue_add + + Instaed of returning with the lock held, simply assert + that this cannot happen: + + https://bugzilla.gnome.org/show_bug.cgi?id=749678#c4 + + gobject/gobject.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 087d75e3c336547fff37a4bc5d33b1ad041485bf +Author: Matthias Clasen +AuthorDate: Mon Sep 7 19:43:19 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 19:43:19 2015 -0400 + + Make g_set_object more symmetric + + As argued in bug 748633, and order of ref, assign, unref is + preferable. + + gobject/gobject.h | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +commit ebf961a58d540ea40611ad75bc983f5386d3635b +Author: Ting-Wei Lan +AuthorDate: Sat Sep 5 23:35:57 2015 +0800 +Commit: Colin Walters +CommitDate: Mon Sep 7 15:18:01 2015 -0400 + + Make g_strerror work with non-glibc POSIX systems + + We should only use GNU-specific strerror_r on glibc. On other systems, + we should use the XSI-compliant version. + + https://bugzilla.gnome.org/show_bug.cgi?id=754601 + + glib/gstrfuncs.c | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +commit e773acfe9a0f8cf4d67799f6177997bd8a761ede +Author: Matthias Clasen +AuthorDate: Mon Sep 7 14:59:22 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 15:01:16 2015 -0400 + + tests: Don't test g_utf8_to_ucs4_fast too rigorously + + The function is documented to assume valid input, and doesn't + guarantee behavior with invalid input. So don't test that. + + https://bugzilla.gnome.org/show_bug.cgi?id=754636 + + tests/unicode-encoding.c | 33 ++++++++++++++++++++++++++------- + 1 file changed, 26 insertions(+), 7 deletions(-) + +commit db3ffe5bf139a664609ab1f7e3715a2da5019805 +Author: Matthias Clasen +AuthorDate: Mon Sep 7 13:24:18 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 15:01:16 2015 -0400 + + unicode-encoding test: Differentiate error messages + + Spitting out the same error for different cases in not helpful. + + tests/unicode-encoding.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cb3a03e1e2160d4548db3d7b2e55789c05e08225 +Author: Changwoo Ryu +AuthorDate: Tue Sep 8 01:59:08 2015 +0900 +Commit: Changwoo Ryu +CommitDate: Tue Sep 8 01:59:08 2015 +0900 + + Updated Korean translation + + po/ko.po | 939 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 470 insertions(+), 469 deletions(-) + +commit 23229bfd0cbd2588402835758238e36407814148 +Author: Matthias Clasen +AuthorDate: Mon Sep 7 10:35:13 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 10:35:13 2015 -0400 + + GString: Avoid some repeated parameter checking + + Many of the append and prepend variants are just thin wrappers + around another one. Remove parameter checking in the wrapper + for these cases. The wrapped function is checking them anyway. + + glib/gstring.c | 20 +------------------- + 1 file changed, 1 insertion(+), 19 deletions(-) + +commit 03db1f455b4265654e237d2ad55464b4113cba8a +Author: Matthias Clasen +AuthorDate: Mon Sep 7 09:50:41 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 09:50:41 2015 -0400 + + Remove some unused code + + The function unescape_gstring_inplace was maintaining a line count + without ever making use of it. Drop that. + + glib/gmarkup.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit 44af2b1c17b5920052a6bb363c62d8452a570a42 +Author: Matthias Clasen +AuthorDate: Mon Sep 7 03:02:11 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 03:02:11 2015 -0400 + + Simplify g_param_spec_get_redirect_target a bit more + + It is enough to look for exact matches here, so no need to + dive into g_type_instance_is_a and take locks, etc. + + gobject/gparam.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit f1f80111c9bb691c658e8657c450845387cbefd1 +Author: Matthias Clasen +AuthorDate: Mon Sep 7 02:33:50 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 02:33:50 2015 -0400 + + Simplify g_param_spec_get_redirect_target + + There is no need to do a type check in a g_return_if_fail if the + type check is tne next thing the function does anyway. + + gobject/gparam.c | 8 +------- + 1 file changed, 1 insertion(+), 7 deletions(-) + +commit 401f78652c31a6a9eab68197e1634dcb765eabe6 +Author: Mikhail Zabaluev +AuthorDate: Tue Oct 14 23:39:28 2014 +0300 +Commit: Matthias Clasen +CommitDate: Sat Sep 5 13:14:11 2015 -0400 + + Reorganized utf8-performance tests + + Now each function-string pair gets its own test path to track + a single performance result. + + https://bugzilla.gnome.org/show_bug.cgi?id=738504 + + glib/tests/utf8-performance.c | 125 + ++++++++++++++++++++++++++---------------- + 1 file changed, 77 insertions(+), 48 deletions(-) + +commit b963565125f0ec2968300ddc80ab7750aa56625c +Author: Mikhail Zabaluev +AuthorDate: Mon Oct 13 21:31:02 2014 +0300 +Commit: Matthias Clasen +CommitDate: Sat Sep 5 13:12:48 2015 -0400 + + Unrolled implementation of g_utf8_to_ucs4_fast() + + Unrolling the branches and expressions for all expected cases + of UTF-8 sequences facilitates the work of both an optimizing compiler + and the branch prediction logic in the CPU. This speeds up decoding + noticeably on text composed primarily of longer sequences. + + https://bugzilla.gnome.org/show_bug.cgi?id=738504 + + glib/gutf8.c | 71 + ++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 43 insertions(+), 28 deletions(-) + +commit 3188b8ee791a38ac3dd7e477f30761344442f745 +Author: Mikhail Zabaluev +AuthorDate: Tue Oct 14 01:18:57 2014 +0300 +Commit: Matthias Clasen +CommitDate: Sat Sep 5 13:10:57 2015 -0400 + + Optimized branching in g_utf8_validate() + + The number of branches and logical operations can be reduced by + never producing a resulting wide character value to check its range. + Instead, individual bytes in the sequence are validated + depending on the branch taken on the basis of preceding bytes. + The syntax given in RFC 3629 is made use of. + + https://bugzilla.gnome.org/show_bug.cgi?id=738504 + + glib/gutf8.c | 149 + ++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 80 insertions(+), 69 deletions(-) + +commit 5644ee5083c5f03e01ee2e4de615c16cfc0dfcd0 +Author: Matthias Clasen +AuthorDate: Sat Sep 5 13:02:33 2015 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 5 13:02:33 2015 -0400 + + markup: trivial refactor + + Avoid an unnecessary branch. + + glib/gmarkup.c | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +commit d28639507db2029b8f184a5d93e9d8c28acc1955 +Author: Matthias Clasen +AuthorDate: Fri Sep 4 13:55:46 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 4 13:56:57 2015 -0400 + + list store: Fix a parameter check + + Getting this wrong causes build failures. + + https://bugzilla.gnome.org/show_bug.cgi?id=754582 + + glib/gsequence.c | 18 +++++++++++------- + 1 file changed, 11 insertions(+), 7 deletions(-) + +commit da4927b7fb0213f77d8ca087de6854948487c6ee +Author: Baurzhan Muftakhidinov +AuthorDate: Fri Sep 4 16:23:43 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Sep 4 16:23:43 2015 +0000 + + Updated Kazakh translation + + po/kk.po | 947 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 465 insertions(+), 482 deletions(-) + +commit 6e1618560035296f0d92231e241bf29b8d7d213c +Author: Milo Casagrande +AuthorDate: Fri Sep 4 07:49:58 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Sep 4 07:49:58 2015 +0000 + + Updated Italian translation + + po/it.po | 1651 + +++++++++++++++++++++++++------------------------------------- + 1 file changed, 663 insertions(+), 988 deletions(-) + +commit 1387a16bf4eb1859170bd2fa9b9efb9d5169d1e7 +Author: Chun-wei Fan +AuthorDate: Thu Sep 3 15:24:06 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Sep 3 19:10:26 2015 +0800 + + MSVC Builds: Remove Static Items + + ... which are now generated with the new autotools module, so we just + need to ensure the generated items are being dist'ed. + + https://bugzilla.gnome.org/show_bug.cgi?id=735429 + + build/win32/vs10/glib-compile-resources.vcxproj | 181 ----------- + .../vs10/glib-compile-resources.vcxproj.filters | 17 -- + build/win32/vs10/glib-compile-schemas.vcxproj | 181 ----------- + .../vs10/glib-compile-schemas.vcxproj.filters | 17 -- + build/win32/vs10/glib-install.props | 332 + --------------------- + build/win32/vs9/glib-compile-resources.vcproj | 156 ---------- + build/win32/vs9/glib-compile-schemas.vcproj | 156 ---------- + build/win32/vs9/glib-install.vsprops | 314 + ------------------- + 8 files changed, 1354 deletions(-) + +commit 041e77249af8778db1e37b3ad47c034fa7934e05 +Author: Chun-wei Fan +AuthorDate: Thu Sep 3 15:19:48 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Sep 3 19:10:06 2015 +0800 + + Cleanup and Enhance the MSVC Project Generation + + Make use of the common autotools module that is used to generate + the MSVC + project files from their respective templates so that the main + build files + beccome cleaner, and enhance them in a way that the headers that + should be + installed can be written to the property sheets during 'make dist', + so that + the chances of missing headers for MSVC builds can be greatly reduced. + + Also use this autotools module to fill in the projects for + glib-compile-schemas and glib-compile-resources. + + https://bugzilla.gnome.org/show_bug.cgi?id=735429 + + build/win32/vs10/.gitignore | 5 + + build/win32/vs10/Makefile.am | 96 ++++++----- + build/win32/vs10/gio.vcxproj.filtersin | 4 +- + build/win32/vs10/gio.vcxprojin | 4 +- + .../vs10/glib-compile-resources.vcxproj.filtersin | 12 ++ + build/win32/vs10/glib-compile-resources.vcxprojin | 180 + +++++++++++++++++++++ + .../vs10/glib-compile-schemas.vcxproj.filtersin | 12 ++ + build/win32/vs10/glib-compile-schemas.vcxprojin | 180 + +++++++++++++++++++++ + build/win32/vs10/glib-install.propsin | 102 ++++++++++++ + build/win32/vs10/glib.vcxproj.filtersin | 4 +- + build/win32/vs10/glib.vcxprojin | 2 +- + build/win32/vs10/gobject.vcxproj.filtersin | 2 +- + build/win32/vs10/gobject.vcxprojin | 2 +- + build/win32/vs9/.gitignore | 3 + + build/win32/vs9/Makefile.am | 56 ++++--- + build/win32/vs9/gio.vcprojin | 2 +- + build/win32/vs9/glib-compile-resources.vcprojin | 155 + ++++++++++++++++++ + build/win32/vs9/glib-compile-schemas.vcprojin | 155 + ++++++++++++++++++ + build/win32/vs9/glib-install.vspropsin | 76 +++++++++ + build/win32/vs9/glib.vcprojin | 2 +- + build/win32/vs9/gobject.vcprojin | 2 +- + gio/Makefile.am | 57 +++---- + glib/Makefile.am | 50 ++---- + gobject/Makefile.am | 44 ++--- + 24 files changed, 1032 insertions(+), 175 deletions(-) + +commit 700983c8c9827cb4de93d25757c767d1d5211910 +Author: Chun-wei Fan +AuthorDate: Thu Sep 3 19:08:55 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Sep 3 19:08:55 2015 +0800 + + build: Add Common Autotools Module for MSVC Projects + + This adds a common autotools module that can be used by various + projects to generate the Visual Studio projects as needed, and + if necessary, generate the headers listings to "install" for that + project, based on items passed in to this. This is modelled on the + Makefile.introspection autotools file that is used by many GNOME + projects to generate the introspection files. + + https://bugzilla.gnome.org/show_bug.cgi?id=735429 + + build/Makefile.msvcproj | 110 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 110 insertions(+) + +commit 63a5556aa2821b266b2b14b436abaa9f77e73e46 +Author: Aurimas Černius +AuthorDate: Wed Sep 2 21:17:11 2015 +0300 +Commit: Aurimas Černius +CommitDate: Wed Sep 2 21:17:11 2015 +0300 + + Updated Lithuanian translation + + po/lt.po | 329 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 168 insertions(+), 161 deletions(-) + +commit 7a65d1d3fb86b0ab46a0a425b79985e037cd3b68 +Author: Philip Withnall +AuthorDate: Wed Sep 2 14:48:04 2015 +0100 +Commit: Philip Withnall +CommitDate: Wed Sep 2 14:52:52 2015 +0100 + + gmem: Fix a typo in the g_try_new0() documentation + + glib/gmem.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b77fe970dbbc3c1e2bfaca58aade6874f8530885 +Author: Philip Withnall +AuthorDate: Wed Jan 14 10:44:12 2015 +0000 +Commit: Philip Withnall +CommitDate: Wed Sep 2 14:51:51 2015 +0100 + + gstring: Mark g_string_free() as taking (transfer full) input + + This is unusual, but the correct annotation for a free() function. + + https://bugzilla.gnome.org/show_bug.cgi?id=742903 + + glib/gstring.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4cad3f5e1bc88e626450607ca8c6b59265d7242b +Author: Chun-wei Fan +AuthorDate: Wed Sep 2 16:09:58 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Sep 2 17:03:44 2015 +0800 + + glib/strfuncs.c: Fix Build on Windows + + Windows does not have strerror_r(), but does have strerror_s(), + which is + threadsafe, and does more or less the same thing, so use it on + Windows to + fix the build. + + https://bugzilla.gnome.org/show_bug.cgi?id=754431 + + glib/gstrfuncs.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 4a09d0cf7a65cd08d4156eafd80e943712216d49 +Author: Ting-Wei Lan +AuthorDate: Wed Sep 2 01:19:40 2015 +0800 +Commit: Ting-Wei Lan +CommitDate: Wed Sep 2 01:19:40 2015 +0800 + + Fix return value error in g_list_store_sort + + gio/gliststore.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f14e2e5c53a5f1113c5e063511b7ea31319f4ccf +Author: Matthias Clasen +AuthorDate: Tue Sep 1 10:58:32 2015 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 1 10:58:32 2015 -0400 + + 2.45.7 + + NEWS | 47 +++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 48 insertions(+), 1 deletion(-) + +commit b04c565f33edbe7b81b028ba371da93b946f6393 +Author: Emmanuele Bassi +AuthorDate: Wed Aug 19 13:47:58 2015 +0100 +Commit: Matthias Clasen +CommitDate: Tue Sep 1 10:40:24 2015 -0400 + + gio: Link against gmodule when building tools + + Otherwise cross-compilation will fail with linker errors. + + https://bugzilla.gnome.org/show_bug.cgi?id=753745 + + gio/Makefile.am | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 5ce70917df75f87c89a9b1e9d0583ae4135f0b2c +Author: Emmanuele Bassi +AuthorDate: Wed Aug 19 13:38:30 2015 +0100 +Commit: Matthias Clasen +CommitDate: Tue Sep 1 10:40:24 2015 -0400 + + Drop binary checks when cross-compiling + + We don't need to run binaries we just built in order to successfully + build GLib and friends any more. + + Since commit b74e2a7, we don't need to run glib-genmarshal when + building + GIO; since commit f9eb9eed, all our tests (including the ones that do + need to run binaries we just built) are only built when running "make + check", instead of unconditionally at every build. + + This means that we don't need to check for existing, native binaries + when cross-compiling, and fail the configuration step if they are not + found — which also means that you don't need to natively build + GLib for + your toolchain, in order to cross-compile GLib. + + We can also use the cross-compilation conditional, and skip those + tests + that require a binary we just built in order to build. + + https://bugzilla.gnome.org/show_bug.cgi?id=753745 + + configure.ac | 24 ++---------------------- + gio/tests/Makefile.am | 12 +++++------- + gobject/tests/Makefile.am | 14 ++++++++------ + tests/gobject/Makefile.am | 20 +++++++------------- + 4 files changed, 22 insertions(+), 48 deletions(-) + +commit 1dec512a66fddfd8b4b265231b00d4f918b16cef +Author: Matthias Clasen +AuthorDate: Tue Sep 1 10:21:26 2015 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 1 10:21:26 2015 -0400 + + Revert "GSettings: delay backend subscription" + + This reverts commit 8ff5668a458344da22d30491e3ce726d861b3619. + + This change has had considerable fallout, and there was no + follow-up to address it. + + https://bugzilla.gnome.org/show_bug.cgi?id=733791 + + gio/gsettings-tool.c | 13 ------------- + gio/gsettings.c | 47 ++++------------------------------------------- + 2 files changed, 4 insertions(+), 56 deletions(-) + +commit 7fff264777ac9869ff347dd2bb02304e11d83a20 +Author: Matthias Clasen +AuthorDate: Tue Sep 1 10:18:23 2015 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 1 10:18:23 2015 -0400 + + Revert "GSettings: fix check for delaying backend subscription" + + This reverts commit d511d6b37f051d2cd8698055cbd85ee7f987325d. + + gio/gsettings.c | 12 +++--------- + 1 file changed, 3 insertions(+), 9 deletions(-) + +commit 16721468e5410732f2575be35652ece538587b94 +Author: Iain Lane +AuthorDate: Wed Jul 15 17:01:03 2015 +0100 +Commit: Iain Lane +CommitDate: Tue Sep 1 14:30:43 2015 +0100 + + gsignal: Don't crash when operating on signals on the wrong object + + gobject/gsignal.c | 21 +++++++++++++++------ + 1 file changed, 15 insertions(+), 6 deletions(-) + +commit 261250c46e3eab9b54c9cc59b405a69785a65b35 +Author: Iain Lane +AuthorDate: Thu Jul 16 15:38:21 2015 +0100 +Commit: Iain Lane +CommitDate: Tue Sep 1 14:30:37 2015 +0100 + + Test that disconnecting from the wrong thing warns and doesn't crash + + This broke in 916297be799ee001b4a214cc52c3b960bb0b5deb (≥ 2.45.3) + + gobject/tests/signals.c | 53 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 53 insertions(+) + +commit 976da775cbeff497e922f959f9a35d5e06cfc7a9 +Author: Alexandre Franke +AuthorDate: Tue Sep 1 07:57:48 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Tue Sep 1 07:57:48 2015 +0000 + + Updated French translation + + po/fr.po | 230 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 120 insertions(+), 110 deletions(-) + +commit 9f2e3f6b7262a8cae817a4cc12388fcc1bd63bce +Author: Dan Winship +AuthorDate: Wed Dec 3 05:57:29 2014 -0500 +Commit: Dan Winship +CommitDate: Mon Aug 31 13:59:48 2015 -0400 + + gtestutils: add g_assert_cmpmem() + + Add a test macro to compare two buffers (which are not already known + to be the same length) for equality. + + https://bugzilla.gnome.org/show_bug.cgi?id=754283 + + docs/reference/glib/glib-sections.txt | 1 + + gio/tests/async-close-output-stream.c | 9 ++----- + gio/tests/converter-stream.c | 46 + +++++++++++++++++------------------ + gio/tests/gdbus-peer.c | 3 +-- + gio/tests/gsettings.c | 4 +-- + gio/tests/gsubprocess.c | 11 ++++----- + gio/tests/readwrite.c | 10 +++----- + glib/gtestutils.c | 33 +++++++++++++++++++++---- + glib/gtestutils.h | 10 ++++++++ + glib/tests/base64.c | 25 ++++--------------- + glib/tests/bytes.c | 23 ++++++------------ + glib/tests/checksum.c | 3 +-- + glib/tests/gvariant.c | 3 +-- + glib/tests/hmac.c | 3 +-- + glib/tests/strfuncs.c | 3 +-- + glib/tests/string.c | 10 +++----- + glib/tests/testing.c | 26 ++++++++++++++++++++ + 17 files changed, 120 insertions(+), 103 deletions(-) + +commit 367f36d630afa01b0967547f5a038a1f8f499f45 +Author: Dan Winship +AuthorDate: Fri Dec 12 12:47:00 2014 -0500 +Commit: Dan Winship +CommitDate: Mon Aug 31 13:58:56 2015 -0400 + + gtestutils: forbid having two tests with the same full path + + In the same way that gtestutils used to let you create multiple suites + with the same name, it also let you create multiple tests with the + same name. Make that an error instead (and fix glib/tests/base64.c, + which was registering three separate tests named + "/base64/incremental/nobreak/4", and glib/tests/autoptr.c, which was + running test_g_variant_builder() twice). + + https://bugzilla.gnome.org/show_bug.cgi?id=754286 + + glib/gtestutils.c | 16 +++++++++++++++- + glib/tests/autoptr.c | 1 - + glib/tests/base64.c | 6 +++--- + 3 files changed, 18 insertions(+), 5 deletions(-) + +commit 123ea70d74e655f7401cf70d364ccfb2b03022a7 +Author: Dan Winship +AuthorDate: Sat Feb 1 18:23:13 2014 +0100 +Commit: Dan Winship +CommitDate: Mon Aug 31 13:58:56 2015 -0400 + + gtestutils: improve non-TAP output, fix handling of incomplete tests + + In non-TAP mode, tests that used g_test_skip() were labelled "OK", and + tests that used g_test_incomplete() were labelled "FAIL". Explicitly + show them as "SKIP" and "TODO" instead, like in the TAP case. + + Also, incomplete/TODO tests are not supposed to be treated as + failures, so fix that too. + + https://bugzilla.gnome.org/show_bug.cgi?id=754286 + + glib/gtestutils.c | 20 ++++++++++++++------ + 1 file changed, 14 insertions(+), 6 deletions(-) + +commit 6e382208f72cfd449cf076ac1f1fa340fe6eea0f +Author: Dan Winship +AuthorDate: Fri Dec 12 11:49:31 2014 -0500 +Commit: Dan Winship +CommitDate: Mon Aug 31 13:58:25 2015 -0400 + + gtestutils: print the TAP test plan first, not last + + TAP allows you to print the "test plan" (ie, the expected number of + tests" either at the start or the end of the test program, but if you + put it at the end, and the program crashes, automake will complain + "missing test plan", which is confusing to users (particularly since + it prints that *before* it prints that the test program crashed, + suggesting that somehow the lack of test plan was responsible for the + crash or something, rather than vice versa). + + Anyway, change it to count the tests ahead of time, and print the test + plan first. Keeping this simple requires disallowing the '-p', '-s', + and '--GTestSkipCount' options when using '--tap' (although we were + already printing the wrong number in the --GTestSkipCount case + anyway). + + https://bugzilla.gnome.org/show_bug.cgi?id=754284 + + glib/gtestutils.c | 44 ++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 42 insertions(+), 2 deletions(-) + +commit 51c91ed53d54efed8f82d5ead200ac5b6ef52a6a +Author: Dan Winship +AuthorDate: Fri Mar 14 14:57:51 2014 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 31 13:58:25 2015 -0400 + + gtestutils: move "/subprocess" path special-casing + + https://bugzilla.gnome.org/show_bug.cgi?id=754284 + + glib/gtestutils.c | 42 ++++++++++++++++++------------------------ + 1 file changed, 18 insertions(+), 24 deletions(-) + +commit 91ff2ba844a917162307a75afa658571d419701f +Author: Dan Winship +AuthorDate: Fri Mar 14 11:19:01 2014 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 31 13:58:25 2015 -0400 + + gtestutils: make g_test_suite_run{,internal} less confusing + + Rewrite g_test_suite_run() and g_test_suite_run_internal() to make it + clearer what they do (while still preserving exact backward + compatibility, meaning we need to handle the "-p" case differently + from the non-"-p" case). + + https://bugzilla.gnome.org/show_bug.cgi?id=754284 + + glib/gtestutils.c | 94 + ++++++++++++++++++++++++------------------------------- + 1 file changed, 41 insertions(+), 53 deletions(-) + +commit 510331bacf803a905577b93f118f5a32bba55bd3 +Author: Dan Winship +AuthorDate: Fri Mar 14 11:41:44 2014 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 31 13:58:25 2015 -0400 + + gtestutils: reorganize g_test_name manipulation + + https://bugzilla.gnome.org/show_bug.cgi?id=754284 + + glib/gtestutils.c | 20 +++++++++++++------- + 1 file changed, 13 insertions(+), 7 deletions(-) + +commit 34ec21fab54ecd964ab7167060b650ab0ff44602 +Author: Matthias Clasen +AuthorDate: Mon Aug 31 13:48:22 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 31 13:48:22 2015 -0400 + + win32: Fix a g_once_init_enter call + + g_once_init_enter must be given a gsize-sized location. + A gboolean doesn't qualify. This broke the build on win64. + + http://bugzilla.gnome.org/show_bug.cgi?id=754307 + + gio/gwin32appinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 591eabcbbcaf3589b004e65c4a11a0d7d18887c8 +Author: Matthias Clasen +AuthorDate: Mon Aug 31 13:43:47 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 31 13:43:47 2015 -0400 + + Remove an unused variable + + gio/gwin32registrykey.c | 2 -- + 1 file changed, 2 deletions(-) + +commit b8a2e08abadda92547ed63881dcfbe779594d03b +Author: Balázs Úr +AuthorDate: Mon Aug 31 16:16:49 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Mon Aug 31 16:16:49 2015 +0000 + + Updated Hungarian translation + + po/hu.po | 510 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 256 insertions(+), 254 deletions(-) + +commit e5734c37a6f1b0d3ce467e7a5ac11c29c1d5f56a +Author: Matthias Clasen +AuthorDate: Wed Aug 26 23:20:39 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 31 10:40:45 2015 -0400 + + Add g_list_store_sort + + GListStore already has a g_list_store_insert_sorted function, + which can be used to keep the list sorted according to a fixed + sort function. But if the sort function changes (as e.g. with + sort columns in a list UI), the entire list needs to be + resorted. In that case, you want g_list_store_sort(). + + https://bugzilla.gnome.org/show_bug.cgi?id=754152 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gliststore.c | 26 ++++++++++++++++++++++++++ + gio/gliststore.h | 5 +++++ + 3 files changed, 32 insertions(+) + +commit 516adb99c094fc2c4dcb95f97f9d251d7bba1716 +Author: Michael Catanzaro +AuthorDate: Fri Aug 28 19:47:19 2015 -0500 +Commit: Michael Catanzaro +CommitDate: Sat Aug 29 08:43:29 2015 -0500 + + Add certificate chain construction test + + Enhance GTestTlsBackend to allow setting the issuer property of + GTlsCertificates, and add a test to ensure certificate chain + construction with g_tls_certificate_new_from_pem() works as expected. + + https://bugzilla.gnome.org/show_bug.cgi?id=754264 + + gio/tests/cert-tests/cert-list.pem | 16 +++++++++ + gio/tests/gtesttlsbackend.c | 9 ++++- + gio/tests/tls-certificate.c | 69 + ++++++++++++++++++++++++++++++++++++++ + 3 files changed, 93 insertions(+), 1 deletion(-) + +commit 587068c969716df2b994362e3133c68d91455d47 +Author: Michael Catanzaro +AuthorDate: Fri Aug 28 19:43:09 2015 -0500 +Commit: Michael Catanzaro +CommitDate: Sat Aug 29 08:43:29 2015 -0500 + + GTlsCertificate: fix loading of chain with private key + + If a private key (or anything, in fact) follows the final certificate + in + the file, certificate parsing will be aborted and only the first + certificate in the chain will be returned, with the private key + not set. + Be tolerant of this, rather than expecting the final character in the + file to be the newline following the last certificate. + + https://bugzilla.gnome.org/show_bug.cgi?id=754264 + + gio/gtlscertificate.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 1ab3e3ed3e0c50cc8e747a9617f9412af8a15bdd +Author: Dan Winship +AuthorDate: Tue Aug 25 10:18:06 2015 -0400 +Commit: Dan Winship +CommitDate: Sat Aug 29 08:46:25 2015 -0400 + + gsocket: add a wrapper around g_set_error() to avoid extra work + + If @error is NULL then we don't even need to evaluate the remaining + arguments. And if errno is EWOULDBLOCK, then no one should see the + error message anyway, so don't bother g_strdup_printf'ing up a pretty + one. + + https://bugzilla.gnome.org/show_bug.cgi?id=752769 + + gio/gsocket.c | 54 ++++++++++++++++++++++++++---------------------------- + 1 file changed, 26 insertions(+), 28 deletions(-) + +commit a70265779480e31d575dd2a4f0444bf5a1849c22 +Author: Tom Tryfonidis +AuthorDate: Fri Aug 28 20:49:53 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Aug 28 20:49:53 2015 +0000 + + Updated Greek translation + + po/el.po | 676 + +++++++++++++++++++++++++++++---------------------------------- + 1 file changed, 315 insertions(+), 361 deletions(-) + +commit 30d95388e7835487e5ed67334bddc2a45c0846a5 +Author: Matthias Clasen +AuthorDate: Fri Aug 28 16:05:05 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 28 16:05:05 2015 -0400 + + Test g_strerror some more + + Set a locale here, so we actually do conversion, and also + run the loop far enough that we hit the 'unknown error' case. + + glib/tests/strfuncs.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 36fac0849ceabafb9e2a15045230833e7dbc9e9d +Author: Matthias Clasen +AuthorDate: Fri Aug 28 15:38:04 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 28 15:54:46 2015 -0400 + + Make g_strerror threadsafe + + We need to use strerror_r here, in order to be threadsafe. + + glib/gstrfuncs.c | 18 +++++++++++++++--- + 1 file changed, 15 insertions(+), 3 deletions(-) + +commit eb7ffccf44ecb27f581693c4f62ed8d361999817 +Author: Matthias Clasen +AuthorDate: Fri Aug 28 14:13:24 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 28 14:15:54 2015 -0400 + + test repeated g_hash_table_remove_all calls + + I just came across a situation where code ended up stuck in + an infinite loop in GHashTable code, so lets verify that this + is a safe thing. + + glib/tests/hash.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 323b1d9c5f20ff46d420bdb63f80f772f9f7fb2f +Author: Andika Triwidada +AuthorDate: Fri Aug 28 13:00:20 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Aug 28 13:00:20 2015 +0000 + + Updated Indonesian translation + + po/id.po | 196 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 103 insertions(+), 93 deletions(-) + +commit f8341badb87ffc7d48488b95b58efbd1c7747674 +Author: K. Adam Christensen +AuthorDate: Fri Aug 28 08:17:24 2015 -0400 +Commit: Colin Walters +CommitDate: Fri Aug 28 08:17:24 2015 -0400 + + gfileenumerator: Don't leak memory if out_info is NULL + + In the unusual case where one just wants the filenames, avoid + a leak. + + https://bugzilla.gnome.org/show_bug.cgi?id=754211 + + gio/gfileenumerator.c | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +commit 4cbd0d6a602f82f42aa8dc8e83c3daee95134d03 +Author: Yosef Or Boczko +AuthorDate: Thu Aug 27 23:21:08 2015 +0300 +Commit: Yosef Or Boczko +CommitDate: Thu Aug 27 23:21:08 2015 +0300 + + Updated Hebrew translation + + po/he.po | 346 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 178 insertions(+), 168 deletions(-) + +commit 42331aa15484dc60561a8848d4696a655ba2d22d +Author: Fran Dieguez +AuthorDate: Thu Aug 27 16:47:01 2015 +0200 +Commit: Fran Dieguez +CommitDate: Thu Aug 27 16:47:04 2015 +0200 + + Updated Galician translations + + po/gl.po | 173 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 99 insertions(+), 74 deletions(-) + +commit c061d6995c594c47f718d73b2419547161e92636 +Author: Piotr Drąg +AuthorDate: Wed Aug 26 18:21:34 2015 +0200 +Commit: Piotr Drąg +CommitDate: Wed Aug 26 18:21:34 2015 +0200 + + Updated Polish translation + + po/pl.po | 1406 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 697 insertions(+), 709 deletions(-) + +commit a3f567ad56af4e0c3cad8eab591360609ec94b5a +Author: Chao-Hsiung Liao +AuthorDate: Tue Aug 25 22:54:03 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Tue Aug 25 22:54:03 2015 +0000 + + Updated Chinese (Taiwan) translation + + po/zh_TW.po | 903 + ++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 475 insertions(+), 428 deletions(-) + +commit 91a6ec8d07eb521fc3f9be3bf7b7ae36a6108c88 +Author: Philip Withnall +AuthorDate: Tue Aug 25 10:49:06 2015 +0100 +Commit: Philip Withnall +CommitDate: Tue Aug 25 10:49:06 2015 +0100 + + gutils: Clarify return values of g_bit_nth_[lsf|msf]() + + Clarify in the documentation that both functions return -1 if no high + bits could be found. + + glib/gutils.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit b233d7e324e7661c6a487df9362a6503f0acfea5 +Author: Pedro Albuquerque +AuthorDate: Tue Aug 25 06:22:23 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Tue Aug 25 06:22:23 2015 +0000 + + Updated Portuguese translation + + po/pt.po | 392 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 198 insertions(+), 194 deletions(-) + +commit 7da3922d051907ccd9b32de140bab217c7665c02 +Author: Dan Winship +AuthorDate: Fri Aug 21 17:39:44 2015 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 24 16:30:05 2015 -0400 + + gdbus: fix race condition in connection filter freeing + + If you called g_dbus_connection_remove_filter() on a filter while it + was running (or about to be run) in another thread, its GDestroyNotify + would be run immediately, potentially causing the filter thread to + crash. + + Fix this by refcounting the filters, and using the existing mechanism + for running a GDestroyNotify in another thread in the case where the + the gdbus thread is the one that frees it. + + Also, add a bit of documentation explaining this (and add a related + clarification to g_dbus_connection_signal_subscribe()). + + https://bugzilla.gnome.org/show_bug.cgi?id=704568 + + gio/gdbusconnection.c | 136 + +++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 95 insertions(+), 41 deletions(-) + +commit 76c1f78cb92cdbfe46321da2b2d2ecfbfdf32eaa +Author: Philip Withnall +AuthorDate: Mon Aug 24 10:38:27 2015 +0100 +Commit: Philip Withnall +CommitDate: Mon Aug 24 10:38:27 2015 +0100 + + gfile: Clarify g_file_get_parent() documentation + + Clarify that a parent in this case has to be an immediate parent, + not an + arbitrary ancestor several levels up in the tree. + + gio/gfile.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 50a65cc38a68dcb04f57fb492c83878e5238d15b +Author: Philip Withnall +AuthorDate: Mon Aug 24 10:37:51 2015 +0100 +Commit: Philip Withnall +CommitDate: Mon Aug 24 10:37:51 2015 +0100 + + gfile: Clarify g_file_get_path() documentation + + Clarify that the returned path (if non-NULL) is guaranteed to be + absolute and canonical, but might still contain symlinks. + + gio/gfile.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 02f9e84709b4e4756f3e512dede3430f3538fbf5 +Author: Kalev Lember +AuthorDate: Sat Aug 22 23:13:33 2015 +0200 +Commit: Kalev Lember +CommitDate: Sat Aug 22 23:13:33 2015 +0200 + + gdbus: Add a missing include + + This fixes the build on non-unix platforms, such as win32 where + gunixfdlist.h is not included. + + gio/gdbusmethodinvocation.c | 1 + + 1 file changed, 1 insertion(+) + +commit a6ae52fa132ef2c5468d924945470957a7ef4c42 +Author: Michael Catanzaro +AuthorDate: Fri Aug 21 16:46:33 2015 -0500 +Commit: Michael Catanzaro +CommitDate: Fri Aug 21 16:46:33 2015 -0500 + + docs: Fix a typo finalised -> finalized + + db8455f07d3d58b8d30d35371c0bbd3e342c8960 added use of both "finalised" + and "finalized". We generally use American spelling, so prefer that. + + glib/gmain.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d33eae97c99c7dc0df362eba2010ec28ac08058e +Author: Philip Withnall +AuthorDate: Fri Aug 21 15:17:24 2015 +0100 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:17:24 2015 +0100 + + Revert "TODO ban maman" + + I can’t work git-bz. + + This reverts commit a228f0ac8031379d3568245e24fb287408cf3a26. + + docs/reference/gobject/tut_gtype.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a228f0ac8031379d3568245e24fb287408cf3a26 +Author: Philip Withnall +AuthorDate: Wed Aug 19 12:00:00 2015 +0100 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:53 2015 +0100 + + TODO ban maman + + docs/reference/gobject/tut_gtype.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 57d0ec57e43ce9b98a76fc7d07b3b5827481e516 +Author: Philip Withnall +AuthorDate: Tue Feb 24 08:50:53 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:53 2015 +0100 + + docs: Clarify costs of using the generic GObject C closure marshaller + + The libffi one is slower than type-specific generated ones, but is + generally better to use. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_gsignal.xml | 3 ++- + docs/reference/gobject/tut_howto.xml | 19 +++++++++++++++---- + 2 files changed, 17 insertions(+), 5 deletions(-) + +commit e57741791e9bd317a0777ab2eff6b40923f0f854 +Author: Philip Withnall +AuthorDate: Mon Feb 23 15:32:47 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:53 2015 +0100 + + docs: Port GObject concepts to use G_DECLARE_FINAL_TYPE + + And G_DECLARE_INTERFACE. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_gtype.xml | 172 + +++++++++++++++++------------------ + 1 file changed, 85 insertions(+), 87 deletions(-) + +commit ab9b52e69ce8d3da9bade6f73468736c7b1cec1a +Author: Philip Withnall +AuthorDate: Mon Feb 23 15:30:57 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:53 2015 +0100 + + docs: General cleanups and rewording in the GObject concepts docs + + • Remove copies of function declarations from the explanation + — if + people want those, they can follow links to the reference manual. + • Add markup to make C code more defined. + • Remove use of first person and irrelevant name dropping. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_gobject.xml | 95 ++++++------ + docs/reference/gobject/tut_gsignal.xml | 254 + +++++++++++++++------------------ + docs/reference/gobject/tut_gtype.xml | 163 +++++++++------------ + docs/reference/gobject/tut_intro.xml | 23 +-- + 4 files changed, 243 insertions(+), 292 deletions(-) + +commit a86ef242e4f2907ec1399057f194699f2fe28c94 +Author: Philip Withnall +AuthorDate: Thu Feb 19 14:12:50 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:53 2015 +0100 + + docs: Link to the GObject how-to from the GType tutorial + + So that first-time users don’t fall into the trap of reading + about the + gory memory layout details of GType and GObject when all they + wanted to + do was derive a class. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_gtype.xml | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +commit cd0d605b23f9efe247475ba425f811a513a138db +Author: Philip Withnall +AuthorDate: Thu Feb 19 14:08:43 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:53 2015 +0100 + + docs: Mention g_clear_object() in the GObject tutorial + + As an alternative to g_object_unref(). + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_gobject.xml | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit f9410b16475828f90d27cee58faa3a78a5f181d2 +Author: Philip Withnall +AuthorDate: Thu Feb 19 14:08:03 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:53 2015 +0100 + + docs: Remove pointless copy of GObject headers from tutorial + + Remove a copy of the refcounting functions from gobject.h from the + GObject tutorial. It suffices to link to the functions in the API + reference. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_gobject.xml | 28 ---------------------------- + 1 file changed, 28 deletions(-) + +commit 92f6325509007aea2022df2d3f618033480f86dd +Author: Philip Withnall +AuthorDate: Thu Feb 19 14:07:20 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:53 2015 +0100 + + docs: Miscellaneous formatting and wording fixes to GObject tutorial + + Convert a few sections to use the passive voice, and add some more + elements. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_gobject.xml | 72 + ++++++++++++++++------------------ + 1 file changed, 33 insertions(+), 39 deletions(-) + +commit 2aade94fcc768af254e7e169bfabc07477ed7179 +Author: Philip Withnall +AuthorDate: Thu Feb 19 14:05:56 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:53 2015 +0100 + + docs: Update code examples in GObject tutorial + + Use G_DECLARE_FINAL_TYPE, simplify property handling, and remove some + unnecessary braces. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_gobject.xml | 74 + +++++++++++----------------------- + 1 file changed, 23 insertions(+), 51 deletions(-) + +commit 42baaa88cd20adcce8767fb124682b1b3bd8b0ec +Author: Philip Withnall +AuthorDate: Fri Feb 20 13:16:08 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:53 2015 +0100 + + docs: Use generic marshallers in GObject how-to examples + + They’re the new vogue for handling signals. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_howto.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 01962b4dd1f3ef15e1412a2d1e21ce8e6e68bd1d +Author: Philip Withnall +AuthorDate: Fri Feb 20 13:15:15 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:52 2015 +0100 + + docs: Rename a parameter in a GObject how-to example + + Make it obvious the parameter is not related to AClass. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_howto.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a76242b35ab6809f7582fd06b8b30c05f82b3934 +Author: Philip Withnall +AuthorDate: Fri Feb 20 13:14:08 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:52 2015 +0100 + + docs: Add vfunc NULL checks to GObject how-to examples + + Not setting a pure vfunc is a programmer error, so can be handled + with a + g_return_if_fail() rather than needing a g_warning(). + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_howto.xml | 42 + ++++++++++++++++++++++++------------ + 1 file changed, 28 insertions(+), 14 deletions(-) + +commit 82abb80553e0da9dac512822e72f55281a68d38c +Author: Philip Withnall +AuthorDate: Fri Feb 20 13:12:49 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:52 2015 +0100 + + docs: Update interfaces in GObject how-to examples + + Use G_DECLARE_INTERFACE and G_DEFINE_INTERFACE. Fix a couple of typos. + Add some comments to empty functions to make it obvious they’re + intentionally empty. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_howto.xml | 57 + +++++++++++++++++++++--------------- + 1 file changed, 34 insertions(+), 23 deletions(-) + +commit ffc248919bc6456a90792a1ea0ecb689b8078791 +Author: Philip Withnall +AuthorDate: Fri Feb 20 13:10:04 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:52 2015 +0100 + + docs: Update instance private data in GObject how-to examples + + Use get_instance_private(). + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_howto.xml | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit b88ac15e65bf424db69614b6021865afb79a333b +Author: Philip Withnall +AuthorDate: Fri Feb 20 13:08:34 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:19 2015 +0100 + + docs: Update property handling in GObject how-to examples + + Be a bit more consistent about property enum numbering. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_howto.xml | 41 + +++++++++++++++++++----------------- + 1 file changed, 22 insertions(+), 19 deletions(-) + +commit 2e4700d52babcf06ac01243f650ccdf546561812 +Author: Philip Withnall +AuthorDate: Fri Feb 20 13:04:45 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:19 2015 +0100 + + docs: Various wording changes in the GObject how-to + + • Consistently make all titles sentence case + • Fix various typos + • Remove an unnecessary footnote + • Remove first person phrasing + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_howto.xml | 205 + +++++++++++++---------------------- + 1 file changed, 78 insertions(+), 127 deletions(-) + +commit f1287a9b2f995b8c7ec228cc3b3418670ef92695 +Author: Philip Withnall +AuthorDate: Fri Feb 20 12:54:05 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:19 2015 +0100 + + docs: Remove commented out sections from GObject how-to + + Unused, outdated, and unsalvagable. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_howto.xml | 402 + ----------------------------------- + 1 file changed, 402 deletions(-) + +commit 0344e6cb83b338c8ba23d9ea8aa7a9fffa8d146e +Author: Philip Withnall +AuthorDate: Fri Feb 20 12:51:18 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:19 2015 +0100 + + docs: Add missing elements to GObject how-to + + Break the text up a little with some formatting. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_howto.xml | 57 + +++++++++++++++++++++--------------- + 1 file changed, 33 insertions(+), 24 deletions(-) + +commit b6b0f5f305eab272192f01bd5adb68adaa31c10b +Author: Philip Withnall +AuthorDate: Fri Feb 20 12:42:52 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Aug 21 15:15:19 2015 +0100 + + docs: Update GObject how-to for G_DECLARE_*_TYPE macros + + Restructure the section of the how-to which covers the header + and source + code boilerplate for declaring and defining GObjects to use the new + G_DECLARE_*_TYPE macros. Present both final and derivable types. + + Trim various supporting paragraphs. + + Rename ‘class functions’ to ‘virtual functions’ to use + consistent, + modern terminology. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_howto.xml | 283 + +++++++++++++++++++++-------------- + 1 file changed, 171 insertions(+), 112 deletions(-) + +commit b6fc1df022a0326e7c36122b1416061bf796c98f +Author: Ryan Lortie +AuthorDate: Tue Oct 1 04:10:46 2013 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 21 01:00:49 2015 -0400 + + GLocalFileInfo: don't content-sniff zero-length files + + This will prevent attempting to read from some files that appear + normal but are + really device-like, such as those in /proc and /sys. + + If we can't stat() the file then don't bother attempting to sniff, + either. + + https://bugzilla.gnome.org/show_bug.cgi?id=708525 + + gio/glocalfileinfo.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 8f662e72594acf8e7f874f7670d1421af68c7fc6 +Author: Ting-Wei Lan +AuthorDate: Sun May 17 16:25:35 2015 +0800 +Commit: Matthias Clasen +CommitDate: Fri Aug 21 00:52:50 2015 -0400 + + glocalfileinfo: Support file creation time on FreeBSD and NetBSD + + FreeBSD and NetBSD have field st_birthtim and st_birthtime in + struct stat, + respectively, which can be used to get file creation time on + supported file + systems such as UFS2 and tmpfs. + + https://bugzilla.gnome.org/show_bug.cgi?id=749492 + + configure.ac | 2 +- + gio/glocalfileinfo.c | 12 ++++++++++++ + 2 files changed, 13 insertions(+), 1 deletion(-) + +commit 60a6ae6f0b84f059e33b8c658ef22c3d933db0a2 +Author: Christophe Fergeau +AuthorDate: Sun Mar 29 17:15:15 2015 +0200 +Commit: Matthias Clasen +CommitDate: Fri Aug 21 00:45:00 2015 -0400 + + Fix GError leak in g_file_query_writable_namespaces() + + gvfs commit b358ca "Make sure metadata is always returned by + query_writable_namespaces()" changed the + query_writable_namespaces vfunc to never return NULL, but the error + checking in g_daemon_file_query_writable_namespaces still assumes + vfunc + failure implies NULL return value and GError set. This causes a memory + leak as on failure the GError will be set but the vfunc implementation + will have created its own default list so NULL will not be returned, + and + the GError will never be cleared. + + This commit directly checks if the GError is set to detect failures, + my_error is directly dereferenced in the error block anyway. + + This also removes an unneeded call to g_file_attribute_info_new(); as + the vfunc always returns us a non-NULL GFileAttributeInfoList. + + https://bugzilla.gnome.org/show_bug.cgi?id=747364 + + gio/gfile.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit fa17536598ac931b811727944d7d74f8f4059820 +Author: Matthias Clasen +AuthorDate: Fri Aug 21 00:43:54 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 21 00:43:54 2015 -0400 + + Code cleanup + + gio/tests/testfilemonitor.c | 13 ------------- + 1 file changed, 13 deletions(-) + +commit b67dac56e30d8e1ba39d6ddf27ea198cecae6f33 +Author: Matthias Clasen +AuthorDate: Fri Aug 21 00:41:09 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 21 00:41:09 2015 -0400 + + Add a test for cross dir moves + + This is a test that is described in + + https://bugzilla.gnome.org/show_bug.cgi?id=742849 + + gio/tests/testfilemonitor.c | 133 + ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 133 insertions(+) + +commit 3498f29b81b522cf4697ff7384b7538f645a63d4 +Author: Matthias Clasen +AuthorDate: Fri Aug 21 00:08:57 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 21 00:08:57 2015 -0400 + + Test resource filesystem attributes + + gio/tests/resources.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit d942c64267ec72c19fa1b74050f238041918a479 +Author: Matthias Clasen +AuthorDate: Fri Aug 21 00:01:12 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 21 00:01:12 2015 -0400 + + resource file: Return some filesystem info + + We now return "resource" as the filesystem type, and state + that the filesystem if readonly. + + gio/gresourcefile.c | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +commit 1bfdcc8499f49e197c2f59a94a101b03fad51482 +Author: Matthias Clasen +AuthorDate: Thu Aug 20 23:48:51 2015 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 20 23:48:51 2015 -0400 + + resource file: Add a dummy file monitor + + This avoids the fallback to polling in GFile, which is unnecessarily + expensive for a resource which can never change. + + gio/gresourcefile.c | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +commit b995c08bf32cb701b92bd8c98651de2d77cade9e +Author: Matthias Clasen +AuthorDate: Thu Aug 20 22:31:41 2015 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 20 22:31:41 2015 -0400 + + Remove unused files + + We no longer have GLocalDirectoryMonitor implementations. + These files were not included in the build for a while now. + + gio/inotify/ginotifydirectorymonitor.c | 138 + --------------------------------- + gio/inotify/ginotifydirectorymonitor.h | 51 ------------ + 2 files changed, 189 deletions(-) + +commit d66e3f57cd5dcc4a2768d40d2a1f1351328ca2fc +Author: Matthias Clasen +AuthorDate: Thu Aug 20 22:30:19 2015 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 20 22:30:19 2015 -0400 + + Add more directory monitoring tests + + These tests clear up a misunderstanding of mine: Monitoring + nonexisting files and directories *does* work with the inotify + implementation, it just has a very long timeout for scanning + for missing locations, so the test needs to take that into + account. + + gio/inotify/inotify-missing.c | 2 +- + gio/inotify/inotify-path.c | 2 +- + gio/inotify/inotify-sub.c | 2 +- + gio/tests/testfilemonitor.c | 110 + ++++++++++++++++++++++++++++++++++++++---- + 4 files changed, 103 insertions(+), 13 deletions(-) + +commit ee31d492d80821ab72d6dd1c8950353ad12d54d0 +Author: Matthias Clasen +AuthorDate: Thu Aug 20 21:10:49 2015 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 20 21:10:49 2015 -0400 + + poll file monitor: Don't reimplement g_strcmp0 + + We have that function now, so use it. + + gio/gpollfilemonitor.c | 22 +++------------------- + 1 file changed, 3 insertions(+), 19 deletions(-) + +commit 09b618f0a162986e5f449acdb68ed125073f50b0 +Author: Matthias Clasen +AuthorDate: Thu Aug 20 20:16:23 2015 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 20 20:20:48 2015 -0400 + + Avoid a false deprecation + + gtk-doc misinterprets this comment and marks + g_find_program_in_path as deprecated, which it isn't. + + glib/gutils.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fa0f51ddf8357f0dbfe1066befb2f73fa639c1e4 +Author: Debarshi Ray +AuthorDate: Thu Jun 25 10:05:53 2015 +0200 +Commit: Debarshi Ray +CommitDate: Thu Aug 20 18:40:02 2015 +0200 + + fileinfo: Add a G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE attribute + + This is meant for opaque, non-POSIX-like backends to indicate that the + URI is not persistent. Applications should look at + G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET for the persistent URI. + Examples of such backends could be a portal for letting sandboxed + applications access the file-system, or a database-backed storage like + Google Drive. + + In these cases, the user visible file and folder names are different + from the real identifiers, used by the backend. So, a request to + create google-drive://user@gmail.com/foo/New\ File, would actually + lead to google-drive://user@gmail.com/foo/bar on the server even + though + the user visible name is still "New File". Since the server-defined + URI + is persistent and sanity-checked by the backend, it is recommended + that + applications switch to it as soon as possible. Backends will try to + keep a mapping from "fake" to "real" URIs, but those are only on a + best effort basis. They might not be persistent or have the same + guarantees as the "real" URIs. + + https://bugzilla.gnome.org/show_bug.cgi?id=741602 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gfileinfo-priv.h | 1 + + gio/gfileinfo.c | 1 + + gio/gfileinfo.h | 14 ++++++++++++++ + 4 files changed, 17 insertions(+) + +commit 4a076032cf6629b3c7bd742ddafae2c9dbbcfab4 +Author: Matthias Clasen +AuthorDate: Wed Aug 19 19:27:58 2015 -0400 +Commit: Matthias Clasen +CommitDate: Wed Aug 19 20:33:46 2015 -0400 + + More file monitor tests + + Test regular writes and attribute changes with a file monitor, + as well as various file changes under a directory monitor. + + gio/tests/testfilemonitor.c | 235 + +++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 233 insertions(+), 2 deletions(-) + +commit b8aad73af9325307a9cf82544a38d58480bd6ebb +Author: Matthias Clasen +AuthorDate: Wed Aug 19 16:24:22 2015 -0400 +Commit: Matthias Clasen +CommitDate: Wed Aug 19 16:24:22 2015 -0400 + + 2.45.6 + + NEWS | 5 +++++ + configure.ac | 2 +- + 2 files changed, 6 insertions(+), 1 deletion(-) + +commit 8d8a1c205b8eb5b54ea1fc8a2e39197dacb1788b +Author: Dan Winship +AuthorDate: Wed Aug 19 16:21:46 2015 -0400 +Commit: Dan Winship +CommitDate: Wed Aug 19 16:21:46 2015 -0400 + + fix previous + + gio/gdbusmethodinvocation.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c6862451411ae3039029fdd1e3697343fa2aed19 +Author: Dan Winship +AuthorDate: Wed Aug 19 13:21:00 2015 -0400 +Commit: Dan Winship +CommitDate: Wed Aug 19 16:08:48 2015 -0400 + + gdbus: don't warn when returning a value on a closed connection + + g_dbus_method_invocation_return_value(), etc, don't have GError + parameters (which makes sense since they won't usually return errors, + and there's not much you could do if they did), so in the rare case + when something does go wrong, they print a warning. + + However, there is at least one situation where the warning is a bad + idea: if you are using private bus connections, and a client connects, + makes a request, and then disconnects before getting the response. + Given that there's nothing the caller can do to prevent this case from + getting hit (since the client might not disconnect until after the + call to g_dbus_method_invocation_return_value() starts) and given that + the server can never actually know for sure that the client has + received the response (it might disconnect after reading the response, + but before processing it), just kill the warning in this case. + + https://bugzilla.gnome.org/show_bug.cgi?id=753839 + + gio/gdbusmethodinvocation.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit fc38156cbab15561f3139b2e851668641a6b17af +Author: Matthias Clasen +AuthorDate: Wed Aug 19 15:11:12 2015 -0400 +Commit: Matthias Clasen +CommitDate: Wed Aug 19 15:46:49 2015 -0400 + + 2.45.5 + + NEWS | 40 ++++++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 41 insertions(+), 1 deletion(-) + +commit 656494a7840cfb6c53c2cb9a27d82f58e2dd6f40 +Author: Dan Winship +AuthorDate: Wed Aug 19 15:45:11 2015 -0400 +Commit: Dan Winship +CommitDate: Wed Aug 19 15:45:11 2015 -0400 + + gpermission: fix async error returns + + a8eedd00 broke the error return values from + g_permission_acquire/release_async() on GSimplePermission. Fix that. + + gio/gpermission.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 8c32f7c448593862055a3b8de24514b76da96158 +Author: Matthias Clasen +AuthorDate: Wed Aug 19 07:10:55 2015 -0400 +Commit: Matthias Clasen +CommitDate: Wed Aug 19 14:57:53 2015 -0400 + + Add some file monitoring tests + + Add a new test which checks that atomically replacing a file that + is being monitored by GFileMonitor produced the expected events. + + The test can easily be expanded to cover other file monitoring + scenarios. + + gio/tests/Makefile.am | 1 + + gio/tests/testfilemonitor.c | 226 + ++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 227 insertions(+) + +commit ac78d14125a39f1677a5a5d77bb8ab4cb5f2d3c9 +Author: Matthias Clasen +AuthorDate: Wed Aug 19 07:10:01 2015 -0400 +Commit: Matthias Clasen +CommitDate: Wed Aug 19 14:57:53 2015 -0400 + + inotify: Fix handling of paired events for atomic replace + + After the big file monitoring rewrite, we only put the IN_MOVED_FROM + event + in the queue for such pairs. It matches INOTIFY_DIR_MASK and thus + we call + ip_dispatch_event on it, but that function was filtering it out + because + the filename in the 'from' event is the one of the temp file, not the + one we are monitoring. That name is in the 'to' event, so compare + it as + well, and let the event passin that case. + + There is another instance of this check in glocalfilemonitor.c, + which is + corrected here as well. + + https://bugzilla.gnome.org/show_bug.cgi?id=751358 + + gio/glocalfilemonitor.c | 4 ++-- + gio/inotify/inotify-path.c | 3 ++- + 2 files changed, 4 insertions(+), 3 deletions(-) + +commit 780b48c4cdc97ca5607ba15bc73ce5cc64d67c04 +Author: Daniel Mustieles +AuthorDate: Wed Aug 19 20:35:38 2015 +0200 +Commit: Daniel Mustieles +CommitDate: Wed Aug 19 20:35:38 2015 +0200 + + Updated Spanish translation + + po/es.po | 394 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 198 insertions(+), 196 deletions(-) + +commit 5a642651c799906ec67ebb268cbd8148cd774d0a +Author: Philip Withnall +AuthorDate: Fri Dec 19 15:27:03 2014 +0000 +Commit: Philip Withnall +CommitDate: Wed Aug 19 12:56:38 2015 +0100 + + gmessages: Mention g_return_if_fail() in g_warning() and g_error() + docs + + It seems to be common for people to use g_warning() or g_error() + as pre- + and post-condition error reporting functions, which is not really what + they’re intended for. Similarly, it is generally a sign of bad API + design to use g_warning() to report errors — use GError instead. + + Try and suggest this to the user in the hope that nice code results. + + https://bugzilla.gnome.org/show_bug.cgi?id=741779 + + glib/gmessages.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit ef1ba452b3302e75f767d6160cf8d379af55d90d +Author: Philip Withnall +AuthorDate: Fri Dec 19 15:21:09 2014 +0000 +Commit: Philip Withnall +CommitDate: Wed Aug 19 12:56:38 2015 +0100 + + gsignal: Document memory management best practices for signal handlers + + It’s quite common to see naked g_signal_connect() calls without + a paired + g_signal_handler_disconnect(). This is commonly a bug which could lead + to uses of the callback user data after it’s been freed. + + Document the best practices for avoiding this kind of bug by properly + disconnecting all signal handlers. + + https://bugzilla.gnome.org/show_bug.cgi?id=741779 + + gobject/gsignal.c | 26 ++++++++++++++++++++++++++ + gobject/gsignal.h | 3 +++ + 2 files changed, 29 insertions(+) + +commit db8455f07d3d58b8d30d35371c0bbd3e342c8960 +Author: Philip Withnall +AuthorDate: Thu Dec 18 16:01:26 2014 +0000 +Commit: Philip Withnall +CommitDate: Wed Aug 19 12:56:38 2015 +0100 + + gmain: Document memory management best practices for GSources + + It’s very common to see code where a timeout is scheduled using + g_timeout_add(), yet the owning object could be destroyed shortly + afterwards, before the timeout is fired, leading to use-after-free. + + Try and prevent this happening with new code by documenting best + practices for memory management of user data for GSource callbacks. + + https://bugzilla.gnome.org/show_bug.cgi?id=741779 + + glib/gmain.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 50 insertions(+) + +commit c5cd1c5f023c6d03de9e551d0b0fde2d2f383d29 +Author: Philip Withnall +AuthorDate: Fri Jan 16 09:44:27 2015 +0000 +Commit: Philip Withnall +CommitDate: Wed Aug 19 12:54:50 2015 +0100 + + gobject: Add cross-links from GObject reference docs to tutorials + + Add some brief links from the GObject reference documentation to the + existing tutorial and overview sections on GObjects. + + https://bugzilla.gnome.org/show_bug.cgi?id=743018 + + gobject/gobject.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 9874fe3c400f16bbe6769899702a343da525e1d6 +Author: Philip Withnall +AuthorDate: Fri Jan 16 09:43:16 2015 +0000 +Commit: Philip Withnall +CommitDate: Wed Aug 19 12:54:50 2015 +0100 + + gobject: Cross-link from GType reference docs to GType conventions + page + + Make it a little easier to find the GType conventions page, which I + guess should be the canonical guide to how to name things. + + This adds a brief mention of the valid characters in a type name + to the + conventions page. + + https://bugzilla.gnome.org/show_bug.cgi?id=743018 + + docs/reference/gobject/tut_gtype.xml | 4 ++++ + gobject/gtype.c | 8 ++++---- + 2 files changed, 8 insertions(+), 4 deletions(-) + +commit 10f96a914d4bdd9a472d304f76e2f1ed6ff47355 +Author: Dušan Kazik +AuthorDate: Wed Aug 19 10:59:44 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Wed Aug 19 10:59:44 2015 +0000 + + Updated Slovak translation + + po/sk.po | 407 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 208 insertions(+), 199 deletions(-) + +commit d624bf4e6673cc989f0d452c6bc2f26b526891c9 +Author: Philip Withnall +AuthorDate: Fri Dec 19 17:05:36 2014 +0000 +Commit: Philip Withnall +CommitDate: Wed Aug 19 11:38:55 2015 +0100 + + gthread: Suggest using *_async() functions instead of threads + + It’s unfortunately common to see worker threads being spawned + all over + the place to do operations which could be brought into the main thread + with an async call, simplifying everything. + + https://bugzilla.gnome.org/show_bug.cgi?id=741779 + + glib/gthread.c | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +commit 5ee333e4cb0b3d2160fcde7c6b3287fe2a8f079e +Author: Philip Withnall +AuthorDate: Wed Mar 4 11:37:40 2015 +0000 +Commit: Philip Withnall +CommitDate: Wed Aug 19 11:36:43 2015 +0100 + + gstrfuncs: Add a string formatting note about using G_GUINT64_FORMAT + + …and friends. The ‘String precision pitfalls’ section is + already linked + to from all the relevant printf()-style functions, so this + documentation + should hopefully be easy to find. + + https://bugzilla.gnome.org/show_bug.cgi?id=741779 + + glib/gstrfuncs.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 8c858a018d752e06e4a9720735ffc495c3159e20 +Author: Philip Withnall +AuthorDate: Fri Dec 19 17:23:54 2014 +0000 +Commit: Philip Withnall +CommitDate: Wed Aug 19 11:36:43 2015 +0100 + + gvariant: Clarify that nullable strings should use maybe types + + Otherwise people might try to encode a NULL string as "NULL". I’m + not + even kidding. + + https://bugzilla.gnome.org/show_bug.cgi?id=741779 + + docs/reference/glib/gvariant-varargs.xml | 3 ++- + glib/gvariant.c | 9 ++++++--- + 2 files changed, 8 insertions(+), 4 deletions(-) + +commit 5d014a802a4b47fbf5774f613d61b4218a1aa2a2 +Author: Janusz Lewandowski +AuthorDate: Fri Oct 10 22:58:20 2014 +0200 +Commit: Matthias Clasen +CommitDate: Tue Aug 18 16:41:12 2015 -0400 + + Add a g_dbus_connection_register_object_with_closures function + + This is a binding-friendly version of + g_dbus_connection_register_object. + Based on a patch by Martin Pitt and the code of + g_bus_watch_name_with_closures. + + https://bugzilla.gnome.org/show_bug.cgi?id=656325 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdbusconnection.c | 253 + ++++++++++++++++++++++++++++++++++++ + gio/gdbusconnection.h | 8 ++ + gio/tests/gdbus-export.c | 58 ++++++++- + 4 files changed, 313 insertions(+), 7 deletions(-) + +commit 61254347b19fa82c53a4f764346b5cb6b2aaf5dc +Author: Alexandre Franke +AuthorDate: Sat Aug 15 11:36:48 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Sat Aug 15 11:36:48 2015 +0000 + + Updated French translation + + po/fr.po | 517 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 258 insertions(+), 259 deletions(-) + +commit 23d8cc57634945d4fcd86eba26e8bdbe1ecf2fa1 +Author: Kjartan Maraas +AuthorDate: Tue Aug 11 19:41:08 2015 +0200 +Commit: Kjartan Maraas +CommitDate: Tue Aug 11 19:41:08 2015 +0200 + + Updated Norwegian bokmål translation. + + po/nb.po | 725 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 361 insertions(+), 364 deletions(-) + +commit 66116fc272c01a16188b5ce25ab8e88d01d48d92 +Author: Jordi Mas +AuthorDate: Tue Aug 11 08:05:34 2015 +0200 +Commit: Jordi Mas +CommitDate: Tue Aug 11 08:05:34 2015 +0200 + + Update Catalan translation + + po/ca.po | 765 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 389 insertions(+), 376 deletions(-) + +commit 34277d69960960aeeb936629fc4c5326c7414f25 +Author: Felix Riemann +AuthorDate: Sun Aug 9 23:13:38 2015 +0200 +Commit: Felix Riemann +CommitDate: Mon Aug 10 19:00:24 2015 +0200 + + gio: g_menu_item_set_icon should not fail if icon is NULL + + It allows passing a NULL icon to unset the icon and thus should not + log a critical warning if used like that. + + https://bugzilla.gnome.org/show_bug.cgi?id=753285 + + gio/gmenu.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0993cf6dc08829aa7ef826f26757b36b5f6f92b4 +Author: Muhammet Kara +AuthorDate: Sun Aug 9 15:46:12 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Aug 9 15:46:12 2015 +0000 + + Updated Turkish translation + + po/tr.po | 748 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 379 insertions(+), 369 deletions(-) + +commit a8eedd00a726483cd29a2a5c9660c82438a5d57e +Author: Dan Winship +AuthorDate: Fri Aug 7 09:48:27 2015 -0400 +Commit: Dan Winship +CommitDate: Fri Aug 7 09:50:16 2015 -0400 + + gio: fix a leftover GSimpleAsyncResult usage + + And remove remaining unnecessary gsimpleasyncresult.h includes + + gio/gconverterinputstream.c | 1 - + gio/gconverteroutputstream.c | 1 - + gio/gdbusobjectmanagerclient.c | 1 - + gio/gdummytlsbackend.c | 1 - + gio/gpermission.c | 11 ++++++----- + gio/gproxyresolver.c | 1 - + gio/gresolver.c | 1 - + gio/gunixinputstream.c | 1 - + gio/gunixmount.c | 1 - + gio/gunixoutputstream.c | 1 - + gio/gwin32inputstream.c | 1 - + gio/gwin32mount.c | 1 - + gio/gwin32outputstream.c | 1 - + 13 files changed, 6 insertions(+), 17 deletions(-) + +commit e02fa68068b05cdc93283af043e735cd19f40fcc +Author: Dan Winship +AuthorDate: Fri Aug 7 09:47:09 2015 -0400 +Commit: Dan Winship +CommitDate: Fri Aug 7 09:50:13 2015 -0400 + + gsettings-tool: fix deprecated call + + gio/gsettings-tool.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ff3dee4bf68c7bf971185f7fe6d06e71a71293d9 +Author: Dan Winship +AuthorDate: Thu Aug 6 17:00:16 2015 -0400 +Commit: Dan Winship +CommitDate: Fri Aug 7 09:49:57 2015 -0400 + + gdbus: fix gdbus-exit-on-close for gdbusconnection change + + gio/tests/gdbus-exit-on-close.c | 12 ++---------- + 1 file changed, 2 insertions(+), 10 deletions(-) + +commit a3660532535f92cfac136435579ed4f23231f48c +Author: Dan Winship +AuthorDate: Fri Aug 7 09:46:49 2015 -0400 +Commit: Dan Winship +CommitDate: Fri Aug 7 09:49:50 2015 -0400 + + glib: remove deprecated g_mem_is_system_malloc() check in gprintf.c + + glib/gprintf.c | 7 ------- + 1 file changed, 7 deletions(-) + +commit ebaa1de304ccad8cd9b82e5d49f229bf1815d529 +Author: Dan Winship +AuthorDate: Thu Aug 6 15:45:47 2015 -0400 +Commit: Dan Winship +CommitDate: Fri Aug 7 09:49:35 2015 -0400 + + glib: drop array-test test for bug 568760 + + The test relied on g_mem_set_vtable(), so it fails now. But no one + ever touches that code so it's not like we're going to break it again + anyway. + + glib/tests/array-test.c | 37 ------------------------------------- + 1 file changed, 37 deletions(-) + +commit a0e74f6033e2a5aeab1de175de5bfb28328eb23d +Author: Aurimas Černius +AuthorDate: Thu Aug 6 22:53:12 2015 +0300 +Commit: Aurimas Černius +CommitDate: Thu Aug 6 22:53:12 2015 +0300 + + Updated Lithuanian translation + + po/lt.po | 751 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 383 insertions(+), 368 deletions(-) + +commit 66bc9660c44b71c8bff47b4f7e16a801169a9f23 +Author: Colin Walters +AuthorDate: Mon Jan 5 09:40:37 2015 -0500 +Commit: Colin Walters +CommitDate: Thu Aug 6 08:51:02 2015 -0400 + + gdbusconnection: Don't g_printerr() when exiting + + exit-on-close for a DBus connection is a completely normal thing. On + a regular GNOME login, gdm retains the X server, but terminates the + session login bus and associated helpers like gnome-settings-dameon, + the a11y tools, etc. + + I've seen several downstream reports of confusion as to what these + apparent error messages mean in the system log. It doesn't help + that they're so obtuse. + + We're also printing them to stderr, when this is not an error. + + The reason this was introduced is presumably some people were confused + as to why their process exited when the system bus did. But the + solution for that I believe is documentation, not printing stuff to + everyone's system log in normal operation. + + https://bugzilla.gnome.org/show_bug.cgi?id=742386 + + gio/gdbusconnection.c | 11 ----------- + 1 file changed, 11 deletions(-) + +commit 905e916573a6a714bfbf513df2bb07bb365ca2a8 +Author: Matthias Clasen +AuthorDate: Wed Aug 5 17:18:48 2015 -0400 +Commit: Matthias Clasen +CommitDate: Wed Aug 5 17:18:48 2015 -0400 + + Don't leak an error + + The previous commit introduced a possible memory leak in cases + where we get a G_IO_ERROR_CLOSED error. Make sure to always + free an error, if we got one. + + https://bugzilla.gnome.org/show_bug.cgi?id=753278 + + gio/gdbusobjectmanagerserver.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit b3fcb1442e81d14846a8b5d2e33352ac0f6d48ea +Author: Stef Walter +AuthorDate: Wed Aug 5 13:25:47 2015 +0200 +Commit: Stef Walter +CommitDate: Wed Aug 5 13:43:08 2015 +0200 + + gdbus: Don't use g_assert_no_error() GDBusObjectManagerServer + + There are real world cases where emitting signals can fail, such + as if the DBus connection closes. Asserting and aborting the process + in these cases is just plain lazy. + + Ignore the errors when the connection is closed, and turn the + others into warnings. + + https://bugzilla.gnome.org/show_bug.cgi?id=753278 + + gio/gdbusobjectmanagerserver.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +commit 46cf19c447f50d0aa9a4aee8c58ef2a7da2033ef +Author: Andika Triwidada +AuthorDate: Mon Aug 3 11:28:22 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Mon Aug 3 11:28:22 2015 +0000 + + Updated Indonesian translation + + po/id.po | 1010 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 514 insertions(+), 496 deletions(-) + +commit a2a35870364d925d1217e4973bbcff53fc3c880d +Author: Benjamin Otte +AuthorDate: Sun Aug 2 17:36:05 2015 +0200 +Commit: Benjamin Otte +CommitDate: Sun Aug 2 17:37:12 2015 +0200 + + gmain: Document return value of GSourceFuncs.dispatch + + glib/gmain.h | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 6b652b1a2e7c6f67e9576e4331da76971d54cc68 +Author: Philip Withnall +AuthorDate: Wed Jul 29 11:56:41 2015 +0100 +Commit: Philip Withnall +CommitDate: Wed Jul 29 11:58:02 2015 +0100 + + gio: Fix application of GNetworkMonitor:network-metered patch + + The wrong patch from https://bugzilla.gnome.org/show_bug.cgi?id=750282 + was applied, causing test failures due to not implementing the + property + on GNetworkMonitorBase (plus some other omissions). + + Fix that by reverting commit a80e7db1a8f26dc558085844dcb8003edb6eca74 + and re-applying the correct patch over the top. + + https://bugzilla.gnome.org/show_bug.cgi?id=750282 + + gio/gnetworkmonitor.c | 18 +++++++++++------- + gio/gnetworkmonitorbase.c | 7 +++++++ + gio/gnetworkmonitornm.c | 9 ++++++--- + gio/tests/network-monitor.c | 11 +++++++++++ + 4 files changed, 35 insertions(+), 10 deletions(-) + +commit 7f195ac956153b06483bd0e78cfd3b5c100413b5 +Author: Philip Withnall +AuthorDate: Tue Jul 28 10:13:12 2015 +0100 +Commit: Philip Withnall +CommitDate: Tue Jul 28 10:14:17 2015 +0100 + + gresource: Clarify error docs for g_resource_enumerate_children() + + Document that it returns G_RESOURCE_ERROR_NOT_FOUND if the path + doesn’t + exist. + + gio/gresource.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 6e4e1c168c2fa1fea4b449ba7a4b551aa4b6af6e +Author: Akom Chotiphantawanon +AuthorDate: Tue Jul 28 15:55:05 2015 +0700 +Commit: Theppitak Karoonboonyanan +CommitDate: Tue Jul 28 15:55:05 2015 +0700 + + Updated Thai translation + + po/th.po | 371 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 185 insertions(+), 186 deletions(-) + +commit b173244b7d06234ff45027ca277da9dd986b5b37 +Author: Matthias Clasen +AuthorDate: Tue Jul 28 00:04:35 2015 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 28 00:04:35 2015 -0400 + + Remove malloc tests + + These tests were about the no longer supported + vtable functionality, so just remove them. + + glib/tests/Makefile.am | 1 - + glib/tests/malloc.c | 117 + ------------------------------------------------- + 2 files changed, 118 deletions(-) + +commit 3be6ed60aa58095691bd697344765e715a327fc1 +Author: Alexander Larsson +AuthorDate: Sat Jun 27 18:38:42 2015 +0200 +Commit: Matthias Clasen +CommitDate: Mon Jul 27 23:30:20 2015 -0400 + + Deprecate and drop support for memory vtables + + The memory vtables no longer work, because glib contructors are called + before main(), so there is no way to set it them before use. This + stops using + the vtable at all, and deprecates and stubs out the related functions. + + https://bugzilla.gnome.org/show_bug.cgi?id=751592 + + glib/gmem.c | 386 + +++++------------------------------------------------------- + glib/gmem.h | 8 +- + 2 files changed, 34 insertions(+), 360 deletions(-) + +commit 08a3f3f3d2190c7ff393ea13c5a310ba8a13a2e0 +Author: Matthias Clasen +AuthorDate: Mon Jul 27 07:52:27 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 27 07:53:40 2015 -0400 + + GOptionContext: Don't crash without main group + + This was introduced in 126c685f4aa and caused e.g. gdbus + to crash when called without arguments. + + https://bugzilla.gnome.org/show_bug.cgi?id=752210 + + glib/goption.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 17871e6881beb401eebb8b05eccb01490cfa85b6 +Author: Matthias Clasen +AuthorDate: Mon Jul 27 06:51:17 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 27 06:51:17 2015 -0400 + + Add a note to the g_str_hash docs + + Point out some shortcomings of the djb hash, as found in + + https://bugzilla.gnome.org/show_bug.cgi?id=751610 + + glib/ghash.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit a80e7db1a8f26dc558085844dcb8003edb6eca74 +Author: Richard Hughes +AuthorDate: Tue Jun 2 15:41:48 2015 +0100 +Commit: Matthias Clasen +CommitDate: Mon Jul 27 06:44:52 2015 -0400 + + gio: Add network metered information to GNetworkMonitor + + Add a property to GNetworkMonitor indicating if the network + is metered, e.g. subject to limitations set by service providers. + + The default value is FALSE + + https://bugzilla.gnome.org/show_bug.cgi?id=750282 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gnetworkmonitor.c | 47 + +++++++++++++++++++++++++++++++++++++ + gio/gnetworkmonitor.h | 3 +++ + gio/gnetworkmonitornm.c | 46 + ++++++++++++++++++++++++++++++++++++ + 4 files changed, 97 insertions(+) + +commit 9c4887027d6bd09f38120b195c677dbe3bc5654b +Author: Matthias Clasen +AuthorDate: Mon Jul 27 06:24:44 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 27 06:42:46 2015 -0400 + + Remove some questionable documentation + + A function that takes a lock can certainly block in the sense + that it has to wait if the lock is taken. + + https://bugzilla.gnome.org/show_bug.cgi?id=751751 + + glib/gasyncqueue.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c885d42751e35ac8210f889d80e4b059a08d86ae +Author: Matthias Clasen +AuthorDate: Sun Jul 26 21:39:53 2015 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 26 21:41:08 2015 -0400 + + Add tests for GApplication::handle-local-options + + gio/tests/gapplication.c | 132 + +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 132 insertions(+) + +commit 243d740c0430a2fa123c2428bf25ae80768ed633 +Author: Christophe Fergeau +AuthorDate: Sun Jun 21 10:51:50 2015 +0200 +Commit: Matthias Clasen +CommitDate: Sun Jul 26 21:41:08 2015 -0400 + + gapplication: Stop handle-local-options emission on errors + + A signal accumulator can return TRUE to continue signal emission, and + FALSE to stop signal emission. handle-local-options callbacks + can return + « return a non-negative option if you have handled your options and + want to exit the process ». + + Currently, g_application_handle_local_options_accumulator (the + accumulator for the handle-local-options signal) returns TRUE on + non-negative return value (ie continue signal emission), and returns + FALSE on negative return values (ie when the default option processing + should continue). + This return value seems backward as on >= 0 values, subsequent + handle-local-options callbacks could overwrite the 'exit request' from + the handler, while on < 0 values, the handle-local-options processing + could end up early if several callbacks are listening for this signal. + In particular, the default handler for this signal + (g_application_real_handle_local_options) always returns -1 and will + overwrite >= 0 return values from other handlers. + + This commit inverts the check so that signal emission stops early when + one of the handle-local-options callbacks indicates it wants + processing + to stop and the process to exit. + + https://bugzilla.gnome.org/show_bug.cgi?id=751598 + + gio/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2551685cf629b7f34030f146d71d2400825d36f7 +Author: Christophe Fergeau +AuthorDate: Sun Jun 21 10:56:58 2015 +0200 +Commit: Matthias Clasen +CommitDate: Sun Jul 26 21:41:08 2015 -0400 + + gapplication: Fix typos in handle-local-options API doc + + The @options parameter was missing an 's', and the name of + g_application_command_line_get_options_dict() was not correct. + + https://bugzilla.gnome.org/show_bug.cgi?id=751598 + + gio/gapplication.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c7e49a324164e80cfa64a1a66c110edde5e93cec +Author: Marek Černocký +AuthorDate: Sat Jul 25 03:27:32 2015 +0200 +Commit: Marek Černocký +CommitDate: Sat Jul 25 03:27:32 2015 +0200 + + Updated Czech translation + + po/cs.po | 479 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 234 insertions(+), 245 deletions(-) + +commit 0441ae1ccf31ab10c4c65c74ea58012c44106be5 +Author: Peter Meerwald +AuthorDate: Thu Jul 23 11:38:47 2015 +0200 +Commit: Matthias Clasen +CommitDate: Fri Jul 24 12:41:01 2015 -0400 + + ghash: Fix typo in g_hash_table_replace() documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=752767 + + glib/ghash.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8520ae3ffa71e2680076fd3fcc1b7350a364ae76 +Author: Philip Withnall +AuthorDate: Fri Jun 12 08:32:11 2015 +0100 +Commit: Philip Withnall +CommitDate: Thu Jul 23 11:37:18 2015 +0100 + + gsocket: Factor out blocking parameter from g_socket_send_messages() + + This will make future API additions easier. The factored version is + internal for the time being. + + https://bugzilla.gnome.org/show_bug.cgi?id=751924 + + gio/gsocket.c | 25 ++++++++++++++++++++++++- + 1 file changed, 24 insertions(+), 1 deletion(-) + +commit b65287fea54eea8979914b06ff44adea4bc809cc +Author: TingPing +AuthorDate: Sat Dec 20 18:59:15 2014 -0500 +Commit: Patrick Griffis +CommitDate: Thu Jul 23 04:22:59 2015 -0400 + + win32: Fix leak in g_win32_get_command_line() + + https://bugzilla.gnome.org/show_bug.cgi?id=741822 + + glib/gwin32.c | 1 + + 1 file changed, 1 insertion(+) + +commit 3cc349b04e76880a9d2f3c3d2195d171e110f66c +Author: TingPing +AuthorDate: Sat Dec 20 18:39:00 2014 -0500 +Commit: Patrick Griffis +CommitDate: Thu Jul 23 04:22:59 2015 -0400 + + win32: Replace usage of __wgetmainargs() + + It was an internal function that has been removed with VS 2015 + + Use g_win32_get_command_line() or CommandLineToArgvW() directly. + + https://bugzilla.gnome.org/show_bug.cgi?id=741822 + + gio/tests/gio-du.c | 49 + ++++++++++++++++------------------------------ + glib/gspawn-win32-helper.c | 20 +++---------------- + glib/gspawn.c | 9 ++------- + 3 files changed, 22 insertions(+), 56 deletions(-) + +commit be7de8a7fd0883f8514cf8b532ce1c820f7e35fa +Author: Arun Raghavan +AuthorDate: Tue Jul 21 12:09:16 2015 +0530 +Commit: Matthias Clasen +CommitDate: Tue Jul 21 15:20:23 2015 -0400 + + gdbusconnection: Fix signal subscription documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=752656 + + gio/gdbusconnection.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 53d487e31bc41cca9bca147e02e81b69e404fe07 +Author: Chun-wei Fan +AuthorDate: Tue Jul 21 11:26:29 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jul 21 11:26:29 2015 +0800 + + config.h.win32.in: Clean Up and Update + + Merge the parts that has things to do with stdint.h and inttypes.h + with + the !_MSC_VER portions, and add initial support for Visual Studio + 2015, + which added support for C99 snprintf() and vsnprintf(). + + Not too sure about the !_MSC_VER for C99 snprintf() and vsnprintf(), + but + since this file is mainly for Visual Studio builds, anyways... + + config.h.win32.in | 38 +++++++++++++++++--------------------- + 1 file changed, 17 insertions(+), 21 deletions(-) + +commit ab3805ab0471d47a2f7cc93d15eeb392c9d22b4b +Author: Matthias Clasen +AuthorDate: Mon Jul 20 16:00:16 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 20 17:45:43 2015 -0400 + + 2.45.4 + + NEWS | 27 +++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 28 insertions(+), 1 deletion(-) + +commit de1bd45fe9ef82c1f5f48c63975ee18ede67d23a +Author: Dan Winship +AuthorDate: Mon Jul 20 17:33:42 2015 -0400 +Commit: Dan Winship +CommitDate: Mon Jul 20 17:35:43 2015 -0400 + + gio/tests/task: fix for change to cancellation behavior + + Multiple tasks cancelled at the same time now complete in the opposite + order from how they used to. Fix the test to not assume any particular + order. + + gio/tests/task.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 717ebba9d78151c999b1c1d08dc539be978ee27c +Author: Piotr Drąg +AuthorDate: Mon Jul 20 21:39:49 2015 +0200 +Commit: Piotr Drąg +CommitDate: Mon Jul 20 21:39:49 2015 +0200 + + Updated POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit 45e99833e39af76ec9db13bb9d9edcaf3a719870 +Author: Paolo Borelli +AuthorDate: Sun Jul 19 23:47:57 2015 +0200 +Commit: Paolo Borelli +CommitDate: Mon Jul 20 00:00:42 2015 +0200 + + Move a unit test to the right file + + Move a test for threaded socket service to socket-service.c. + + gio/tests/socket-listener.c | 134 + ------------------------------------------- + gio/tests/socket-service.c | 136 + ++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 136 insertions(+), 134 deletions(-) + +commit e1d44799c0ba87506873c309ad4e16cce13bbfc4 +Author: Paolo Borelli +AuthorDate: Fri Jul 10 21:30:28 2015 +0200 +Commit: Paolo Borelli +CommitDate: Mon Jul 20 00:00:02 2015 +0200 + + socketservice: add an "active" property + + We already have start, stop and is_active methods, but turning it + into a real property is useful for a few reasons: + - it allows us to bind the property to an UI or a setting + - it allows us to get notified when the state changes + - it allows us to instantiate objects directly in the stopped state + + https://bugzilla.gnome.org/show_bug.cgi?id=752089 + + gio/gsocketservice.c | 142 + ++++++++++++++++++++++++++++++++++++--------- + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 1 + + gio/tests/socket-service.c | 111 +++++++++++++++++++++++++++++++++++ + 4 files changed, 226 insertions(+), 29 deletions(-) + +commit a223796d0b4f47277fe570313829376db0de8108 +Author: Paolo Borelli +AuthorDate: Sun Jul 12 19:51:17 2015 +0200 +Commit: Paolo Borelli +CommitDate: Sun Jul 19 23:53:35 2015 +0200 + + networkaddress: use free_full + + https://bugzilla.gnome.org/show_bug.cgi?id=752293 + + gio/gnetworkaddress.c | 10 +--------- + 1 file changed, 1 insertion(+), 9 deletions(-) + +commit 6a392a55ec37f33e001bad6495c8513f28f160cc +Author: Yosef Or Boczko +AuthorDate: Sun Jul 19 12:39:15 2015 +0300 +Commit: Yosef Or Boczko +CommitDate: Sun Jul 19 12:39:15 2015 +0300 + + Updated Hebrew translation + + po/he.po | 449 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 224 insertions(+), 225 deletions(-) + +commit 0c121775145645b847aace30d403496d81261fae +Author: Matthias Clasen +AuthorDate: Fri Jul 17 16:46:26 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 17 16:46:26 2015 -0400 + + notification: Add an assertion to clarify + + Coverity doesn't see that g_enum_get_value will never return + NULL here since we always pass it a valid enum value. Help + it along with an assertion. + + gio/gnotification.c | 1 + + 1 file changed, 1 insertion(+) + +commit dab20975872a9b3d5f37beffa9e8e2b78efe6c02 +Author: Daniel Macks +AuthorDate: Wed Jul 1 14:36:35 2015 -0400 +Commit: Emmanuele Bassi +CommitDate: Mon Jul 13 19:44:45 2015 +0100 + + Use GRegexMatchFlags not GRegexCompileFlags for TEST_MATCH _match_opts + + Fix the enums used in some test cases to use the correct enum type in + some test cases. + + https://bugzilla.gnome.org/show_bug.cgi?id=751798 + + glib/tests/regex.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 27fae8390946e73e8343a7fd7505796f3599ee23 +Author: Ilya Konstantinov +AuthorDate: Thu Jun 11 21:42:00 2015 +0300 +Commit: Patrick Griffis +CommitDate: Thu Jul 9 10:39:42 2015 -0400 + + gbacktrace: fix G_BREAKPOINT on Darwin (OSX, iOS) + + Using __builtin_trap() according to Apple's own documentation: + https://developer.apple.com/library/mac/technotes/tn2124/_index.html#//apple_ref/doc/uid/DTS10003391-CH1-SECCONTROLLEDCRASH + + https://bugzilla.gnome.org/show_bug.cgi?id=750807 + + glib/gbacktrace.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit dafc454e70460b371775a876f3831f280bf097b8 +Author: Xavier Claessens +AuthorDate: Wed Jul 8 14:38:16 2015 -0400 +Commit: Xavier Claessens +CommitDate: Wed Jul 8 14:38:16 2015 -0400 + + GAsyncInitable: Fix leaked object when using _newv_async + + gio/gasyncinitable.c | 1 + + 1 file changed, 1 insertion(+) + +commit 7ed76a4eca245edbf3149815a06795065164cb1f +Author: Ryan Lortie +AuthorDate: Mon Jul 6 10:21:33 2015 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 6 10:22:36 2015 -0400 + + file monitors: report MOVED only with both sides + + Make sure we know the destination file before reporting a MOVED event. + Otherwise, we should just fall back to reporting it as a DELETED. + + https://bugzilla.gnome.org/show_bug.cgi?id=751731 + + gio/glocalfilemonitor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c5221f8aea3c4407024a665ce66d8535237d7d62 +Author: Dimitris Spingos +AuthorDate: Mon Jul 6 01:50:10 2015 +0300 +Commit: Dimitris Spingos +CommitDate: Mon Jul 6 01:50:10 2015 +0300 + + Updated Greek translation + + po/el.po | 717 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 367 insertions(+), 350 deletions(-) + +commit e337fe31637fe868ab94b488caf9b4898a2a1040 +Author: Руслан Ижбулатов +AuthorDate: Thu Jul 2 11:06:17 2015 +0000 +Commit: Руслан Ижбулатов +CommitDate: Thu Jul 2 11:06:17 2015 +0000 + + W32: Add back the dummy g_app_info_reset_type_associations() + + gio/gwin32appinfo.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 155a6886357eefaed1da156b6593c7a6ec7cddd1 +Author: Руслан Ижбулатов +AuthorDate: Wed Jun 24 10:07:40 2015 +0000 +Commit: Руслан Ижбулатов +CommitDate: Thu Jul 2 11:03:47 2015 +0000 + + W32: Add a g_app_info_get_all_for_type() implementation + + Also add g_app_info_get_fallback_for_type() and + g_app_info_get_recommended_for_type() as proxies for + g_app_info_get_all_for_type(), until gcontenttype support is improved. + + gio/gwin32appinfo.c | 77 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 77 insertions(+) + +commit b9d919bd8f95e9eac7144ec7c413256c3f5cfc56 +Author: Руслан Ижбулатов +AuthorDate: Wed Jun 24 10:07:15 2015 +0000 +Commit: Руслан Ижбулатов +CommitDate: Thu Jul 2 11:03:47 2015 +0000 + + Don't ref a NULL pointer + + gio/gwin32appinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f405f4211565fde3c58f3da9b18ddcdc5d82ccf2 +Author: Stef Walter +AuthorDate: Tue Mar 17 13:06:02 2015 +0100 +Commit: Stef Walter +CommitDate: Thu Jul 2 12:24:11 2015 +0200 + + gsocket: Don't g_error() if file-descriptor is not a socket + + This code was out of date with current coding practices. + + Nowadays it's common to receive file descriptors over environment + variables from other processes like systemd. The unit files that + control these file descriptors are configurable by sysadmins. + + It is not (necessarily) a programmer error when + g_socket_details_from_fd() + is called with a file descriptor that is not a socket. It can also + be a system and/or configuration error. + + https://bugzilla.gnome.org/show_bug.cgi?id=746339 + + gio/gsocket.c | 21 +++------------------ + 1 file changed, 3 insertions(+), 18 deletions(-) + +commit a9c8cc143ce696c70526fb24079fb04b98adbfc7 +Author: Pedro Albuquerque +AuthorDate: Wed Jul 1 21:58:39 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Wed Jul 1 21:58:39 2015 +0000 + + Updated Portuguese translation + + po/pt.po | 2072 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 1076 insertions(+), 996 deletions(-) + +commit f2c1cfe8c770f73367a021044bcdda550348714c +Author: Iain Lane +AuthorDate: Tue Jun 30 17:13:49 2015 +0100 +Commit: Lars Uebernickel +CommitDate: Wed Jul 1 12:11:23 2015 +0200 + + gio/tests/appmonitor: Delete file before checking for changed event + + In 4e7d22e268a4e06beb1c09585a48288c31004da5, deleting the file + was moved + after the assertion which checks for the changed event that results + from + it being deleted. This is the wrong way around and makes the assertion + fail. + + Move the deletion back up before we check the condition. delete_app is + no longer an idle callback so it can be made void. The change + notification might come in when the loop isn't running now, so + don't try + to quit if it isn't running. In this case we'll wait for the three + second timeout and the test will still pass. + + https://bugzilla.gnome.org/show_bug.cgi?id=751737 + + gio/tests/appmonitor.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 475445e6e0e1388af7c07eedd1fb3c7679e09561 +Author: Emmanuele Bassi +AuthorDate: Mon Jun 29 20:14:40 2015 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Jun 29 20:14:40 2015 +0100 + + tests: Fix compiler warning + + Use `const gchar * const` to define a const array of const strings, + and + initialize the array when declaring it. + + https://bugzilla.gnome.org/show_bug.cgi?id=751672 + + glib/tests/keyfile.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit b25fa8feed42d226b63f4d89ebf4b07041d26181 +Author: Dan Winship +AuthorDate: Sun Jun 21 12:10:06 2015 -0400 +Commit: Dan Winship +CommitDate: Mon Jun 29 14:40:56 2015 -0400 + + gio/tests/socket.c: fix on OS X + + The semantics of calling shutdown() on a dup()ed socket aren't + well-specified, so don't require any specific behavior. + + https://bugzilla.gnome.org/show_bug.cgi?id=747676 + + gio/tests/socket.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit b97d666b2f4ce7f05b54f07906122608358fc177 +Author: Dan Winship +AuthorDate: Sun Jun 21 12:00:07 2015 -0400 +Commit: Dan Winship +CommitDate: Mon Jun 29 14:40:56 2015 -0400 + + gio/tests/socket.c: clean up a test case a bit + + gio/tests/socket.c | 33 ++++++++++++++++++--------------- + 1 file changed, 18 insertions(+), 15 deletions(-) + +commit 368c3f205ff6447e140396cfac10db31de70f135 +Author: Matthias Clasen +AuthorDate: Thu Jun 18 10:37:46 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 29 08:20:26 2015 -0700 + + GTask: Remove unused function + + We no longer resort the queue, so this function can go. + + https://bugzilla.gnome.org/show_bug.cgi?id=751160 + + gio/gtask.c | 8 -------- + 1 file changed, 8 deletions(-) + +commit e419e1c4e212b1195c8e531fd6eeb4a0b80108d3 +Author: Matthias Clasen +AuthorDate: Thu Jun 18 10:36:23 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 29 08:20:26 2015 -0700 + + GTask: Avoid resorting + + When a task is cancelled, we want to move it to the front + of the queue - our sort function does that for us, but there + is no need to resort the entire queue here, we can just + move the one item and be done with it. This uses just-introduced + threadpool api for this purpose. + + https://bugzilla.gnome.org/show_bug.cgi?id=751160 + + gio/gtask.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 9486f697bb3ed3b02fa2c82f50662fde7d77267e +Author: Matthias Clasen +AuthorDate: Mon Jun 29 08:19:31 2015 -0700 +Commit: Matthias Clasen +CommitDate: Mon Jun 29 08:20:26 2015 -0700 + + GThreadPool: Add some queue manipulation api + + GTask has a need for an api that boosts an unprocessed + item to the front of the queue, so add one. + + https://bugzilla.gnome.org/show_bug.cgi?id=751160 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gthreadpool.c | 30 ++++++++++++++++++++++++++++++ + glib/gthreadpool.h | 4 ++++ + 3 files changed, 35 insertions(+) + +commit 26d87927109d0758775e5455d4c0a22c1b3f9f75 +Author: Matthias Clasen +AuthorDate: Mon Jun 22 11:35:06 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 29 08:20:26 2015 -0700 + + Add tests for new GAsyncQueue api + + https://bugzilla.gnome.org/show_bug.cgi?id=751160 + + glib/tests/asyncqueue.c | 48 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 48 insertions(+) + +commit b662c6f09fe1a01bb1345f6cd7ab5a702eec5ee3 +Author: Matthias Clasen +AuthorDate: Thu Jun 18 10:26:14 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 29 08:20:26 2015 -0700 + + GAsyncQueue: Add some useful api + + The underlying queue supports removing and pushing items to + the front, and these operations can sometimes be useful. + + https://bugzilla.gnome.org/show_bug.cgi?id=751160 + + docs/reference/glib/glib-sections.txt | 4 ++ + glib/gasyncqueue.c | 100 + ++++++++++++++++++++++++++++++++++ + glib/gasyncqueue.h | 13 +++++ + 3 files changed, 117 insertions(+) + +commit 5574315b5207e959d162553e3bb5681b6264fe27 +Author: Ting-Wei Lan +AuthorDate: Wed Apr 29 14:51:14 2015 +0800 +Commit: Ting-Wei Lan +CommitDate: Mon Jun 29 22:49:17 2015 +0800 + + tests: Fix tests that fail with non-English locales + + Some tests check whether the translated messages are expected, + so we have to + force the use of English locales for them. + + https://bugzilla.gnome.org/show_bug.cgi?id=748610 + + glib/tests/date.c | 2 +- + glib/tests/fileutils.c | 1 + + glib/tests/markup-subparser.c | 1 + + glib/tests/option-context.c | 3 +-- + 4 files changed, 4 insertions(+), 3 deletions(-) + +commit f9af40a1330a8226d72c96bff56cdb4ab895dac7 +Author: Dan Winship +AuthorDate: Tue Jun 9 09:19:43 2015 -0400 +Commit: Dan Winship +CommitDate: Mon Jun 29 10:47:35 2015 -0400 + + Fix a FIXME in the WinXP inet_pton() implementation + + https://bugzilla.gnome.org/show_bug.cgi?id=749912 + + gio/ginetaddress.c | 44 ++++++++++++++++---------------------------- + 1 file changed, 16 insertions(+), 28 deletions(-) + +commit a4c3ab58ccf32b0f50ce6f78fa7d18ee5745d510 +Author: Wouter Paesen +AuthorDate: Tue May 26 17:03:50 2015 +0200 +Commit: Dan Winship +CommitDate: Mon Jun 29 10:46:21 2015 -0400 + + Fix g_inet_address_to_string() on XP + + [This patch originally also included an equivalent to the fix that was + committed in 3e29dada, but that was not the complete fix for the bug.] + + https://bugzilla.gnome.org/show_bug.cgi?id=749911 + + gio/ginetaddress.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 93dadb17ce9840a6c835f89984350edfb68a5946 +Author: Ting-Wei Lan +AuthorDate: Thu Feb 19 01:18:42 2015 +0800 +Commit: Ting-Wei Lan +CommitDate: Mon Jun 29 04:11:39 2015 +0800 + + gmessages: Add G_GNUC_NORETURN to g_error static function declaration + + https://bugzilla.gnome.org/show_bug.cgi?id=741901 + + glib/gmessages.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d7a1d890c109c8610333f938dee15e5d938ee8d8 +Author: Ting-Wei Lan +AuthorDate: Thu Jan 1 13:28:21 2015 +0800 +Commit: Ting-Wei Lan +CommitDate: Mon Jun 29 04:11:39 2015 +0800 + + gmacros: Only set G_ANALYZER_ANALYZING to 1 when clang static analyzer + is in use + + We set G_ANALYZER_ANALYZING to 1 when clang supporting static + analyzing before, + but this will cause compilation error when -Werror=return-type is + used and the + static analyzer is not in use because g_error static function only has + __attribute__((analyzer_noreturn)), which is useless for normal + compilation. + + https://bugzilla.gnome.org/show_bug.cgi?id=741901 + + glib/gmacros.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cb86c222cce2436d6a213e574fbba159b6f34010 +Author: Christian Hergert +AuthorDate: Sat Jun 27 22:41:13 2015 -0700 +Commit: Christian Hergert +CommitDate: Sat Jun 27 22:41:13 2015 -0700 + + gtypemodule: use G_GNUC_UNUSED in G_DEFINE_DYNAMIC_TYPE_EXTENDED + + We already do this in the normal case, might as well support it + for the + dynamic type module case as well. This prevents seeing a warning + when not + using the get_instance_private() in the dynamic type. + + gobject/gtypemodule.h | 1 + + 1 file changed, 1 insertion(+) + +commit 409202c1fd6552d4f655ffed3bcc649f30a7dcdb +Author: Philip Withnall +AuthorDate: Tue Apr 8 09:12:24 2014 +0100 +Commit: Philip Withnall +CommitDate: Thu Jun 25 10:42:35 2015 +0100 + + build: Ensure glibconfig.h.win32 is in DISTCLEANFILES + + Otherwise it’s possible for it to not be regenerated when + glibconfig.h + is, leading to inconsistencies. + + https://bugzilla.gnome.org/show_bug.cgi?id=727829 + + glib/Makefile.am | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit c612fcab0fb2d3f0bdaf011d5b566dc949dbd18a +Author: Kalev Lember +AuthorDate: Mon Jun 22 19:56:38 2015 +0200 +Commit: Kalev Lember +CommitDate: Tue Jun 23 14:22:41 2015 +0200 + + gapplication: Initialize backend before withdrawing notifications + + Make sure to initialize the notification backend in + g_application_withdraw_notification() the same way as is done in + g_application_send_notification(). + + This makes it possible for an app to withdraw notifications it + has sent + in a previous execution of the application. + + https://bugzilla.gnome.org/show_bug.cgi?id=750625 + + gio/gapplication.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit bb41a89c42dc4b24dc0a302b406df78e7c273744 +Author: Matthias Clasen +AuthorDate: Mon Jun 22 12:46:32 2015 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 23 06:56:26 2015 -0400 + + 2.45.3 + + NEWS | 2 ++ + configure.ac | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +commit 4e7d22e268a4e06beb1c09585a48288c31004da5 +Author: Matthias Clasen +AuthorDate: Tue Jun 23 06:55:28 2015 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 23 06:56:26 2015 -0400 + + Fix distcheck + + The appmonitor test was sometimes leaving files behind, causing + distcheck some heartburn. + + gio/tests/appmonitor.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 3e29dadae46fe4d1e26ff91c30d9d3b84eb6d84e +Author: Chun-wei Fan +AuthorDate: Tue Jun 23 13:52:25 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jun 23 13:52:25 2015 +0800 + + gio/ginetaddress.c: Fix Windows XP inet_pton() Emulation + + We need to be more careful when we try to assign values to gpointers, + so + that means we have to assign the value to the properly-dereference + gpointer, so that the assigned value will be retained after the + function + returns. This code will be dropped soon, but it is done for XP + compatibility's sake for 2.44. + + Should fix the issue reported in bug 730352 comment #24. + + gio/ginetaddress.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit fd789f118741d89df348ba21ddc1d813da02fb76 +Author: Tim-Philipp Müller +AuthorDate: Wed Jun 3 13:06:24 2015 +0100 +Commit: Tim-Philipp Müller +CommitDate: Sun Jun 21 10:28:14 2015 +0100 + + gsocket: avoid unnecessary select in _send_messages() and + _receive_message() + + For performance reasons we should always try to send or + receive our messages first and only wait for more space + or data to become available if we get an EAGAIN (and + are in blocking mode). + + https://bugzilla.gnome.org/show_bug.cgi?id=751122 + + gio/gsocket.c | 26 ++++++++++++++------------ + 1 file changed, 14 insertions(+), 12 deletions(-) + +commit 9e85f60ec68eb0330e18254726facdc5d8983e35 +Author: Paolo Borelli +AuthorDate: Thu Jun 18 09:36:12 2015 +0200 +Commit: Paolo Borelli +CommitDate: Thu Jun 18 16:33:31 2015 +0200 + + socketclient: annotate the connection param of "event" as nullable + + When emitting the RESOLVING/RESOLVED events the connection param is + set to NULL. + + gio/gsocketclient.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f5d4543139172f366afa0de36dd7e5eac08e2297 +Author: Alexander Larsson +AuthorDate: Wed Jun 17 17:31:19 2015 +0200 +Commit: Alexander Larsson +CommitDate: Wed Jun 17 17:32:17 2015 +0200 + + configure: test have_docbook_style != yes, not have_docbook_dtd + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4b02bfd6eee43aaaa0ad30955cc85558f402d90f +Author: Philip Withnall +AuthorDate: Wed Jun 17 09:25:49 2015 +0100 +Commit: Philip Withnall +CommitDate: Wed Jun 17 09:25:49 2015 +0100 + + gfile: Clarify that g_file_replace_contents() uses atomic renames + + It uses g_file_replace() internally, so is inherently safe. + + Though it might vomit .goutputstream-XXXXXX files all over the place + occasionally. + + gio/gfile.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 6e576503876759d18c94bbad3c20ebb83b82c631 +Author: Matthias Clasen +AuthorDate: Tue Jun 16 18:38:27 2015 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 16 18:38:27 2015 -0400 + + key file: Clarify documentation around comments + + The documentation was not very clear about the handling + of the '#' comment markers. State clearly how these are + handled by the getter and the setter. + + https://bugzilla.gnome.org/show_bug.cgi?id=479730 + + glib/gkeyfile.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +commit 7a295f063fdef26ae87bfe3a942847c5ecd7f7c3 +Author: Matthias Clasen +AuthorDate: Tue Jun 16 14:46:04 2015 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 16 14:56:33 2015 -0400 + + Updates + + NEWS | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 54 insertions(+) + +commit 9f90ee5eeccd47f39c7a03dcd786b125a19c195d +Author: Michael Catanzaro +AuthorDate: Sat Jun 13 22:52:33 2015 -0500 +Commit: Michael Catanzaro +CommitDate: Sat Jun 13 23:09:24 2015 -0500 + + genmarshal: silence register storage class warnings + + Using the register keyword triggers warnings on noteworthy compilers + (clang), since it's deprecated in C++ and at danger of being removed + from the language. There is no reason to use it since it isn't 1980 + anymore. + + https://bugzilla.gnome.org/show_bug.cgi?id=750918 + + gobject/glib-genmarshal.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 0d6e200384c8c2fb172273dcfaa6a48bc357d4a3 +Author: Cosimo Cecchi +AuthorDate: Thu Jun 11 15:56:25 2015 -0700 +Commit: Cosimo Cecchi +CommitDate: Thu Jun 11 15:56:25 2015 -0700 + + gresource: fix a couple of typos in documentation + + gio/gresource.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 1f0a11c59aa244a70766bdb4c3b06d3d79b25c7a +Author: Rico Tzschichholz +AuthorDate: Thu Jun 11 07:52:40 2015 +0200 +Commit: Rico Tzschichholz +CommitDate: Thu Jun 11 07:52:40 2015 +0200 + + g_log_set_handler_full: Bump "Since" version accordingly + + glib/gmessages.c | 2 +- + glib/gmessages.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 2471d9cf8697b07d4e86b6f143eda7b779be02a9 +Author: Matthias Clasen +AuthorDate: Fri Nov 28 23:31:00 2014 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jun 10 22:03:19 2015 -0400 + + Add g_log_set_handler_full + + This is a bindable version of g_log_set_handler that takes + a destroy notify for the user_data. + + https://bugzilla.gnome.org/show_bug.cgi?id=740516 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gmessages.c | 38 + ++++++++++++++++++++++++++++++++--- + glib/gmessages.h | 6 ++++++ + 3 files changed, 42 insertions(+), 3 deletions(-) + +commit 1102e6f9ca89b54e4e1139cca80f97c7bfb72dc3 +Author: Matthias Clasen +AuthorDate: Sun Mar 29 14:00:36 2015 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 10 21:59:28 2015 -0400 + + Allow property actions to invert booleans + + This can be handy when you want to change the sense of a toggle + in the UI without rewriting the underlying logic. Currently, this + is just exposed as a construct-only property. We may add a + convenience wrapper or a special !property syntax for this later. + + https://bugzilla.gnome.org/show_bug.cgi?id=728489 + + gio/gpropertyaction.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- + gio/tests/actions.c | 31 +++++++++++++++++++++++++++++++ + 2 files changed, 75 insertions(+), 1 deletion(-) + +commit fb1e5ff04b48b9bb93b99b127abf3ffe73a98e5c +Author: Matthias Clasen +AuthorDate: Tue Jun 9 19:17:58 2015 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 9 19:18:49 2015 -0400 + + Fix deprecation notice + + GSimpleAsyncResult has not been deprecated all that long. + + gio/gsimpleasyncresult.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b701c3c60824fca4c0056a7a46c627fe2977257d +Author: Simon McVittie +AuthorDate: Mon Apr 27 16:26:33 2015 +0100 +Commit: Simon McVittie +CommitDate: Tue Jun 9 18:17:25 2015 +0100 + + Regression test for falling back to autolaunch: and + XDG_RUNTIME_DIR/bus + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=747941 + Signed-off-by: Simon McVittie + Reviewed-by: Philip Withnall + + gio/tests/Makefile.am | 2 + + gio/tests/dbus-launch.c | 77 ++++++++++++++++++ + gio/tests/gdbus-unix-addresses.c | 170 + +++++++++++++++++++++++++++++++++++++++ + 3 files changed, 249 insertions(+) + +commit 32492c6ab0000c50564360c74acf069814d942d1 +Author: Simon McVittie +AuthorDate: Wed Apr 15 17:57:29 2015 +0100 +Commit: Simon McVittie +CommitDate: Tue Jun 9 18:17:16 2015 +0100 + + GDBus: try XDG_RUNTIME_DIR/bus before resorting to dbus-launch + + This is the right thing to do for the "a session is a user-session" + model implemented in dbus 1.9.14, which is described in + . + + It also resembles sd-bus' behaviour, although sd-bus will only try + kdbus and XDG_RUNTIME_DIR/bus, and never runs dbus-launch. + + On systems following the more traditional "a session is a + login-session" + model, X_R_D/bus won't exist, so it is harmless to check for it before + falling back to X11 autolaunching. Again, this matches the behaviour + of current libdbus and sd-bus versions. + + Now that we do this, g_test_dbus_unset() needs to clear + XDG_RUNTIME_DIR + as well as everything else. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=747941 + Signed-off-by: Simon McVittie + Reviewed-by: Philip Withnall + + gio/gdbusaddress.c | 67 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gtestdbus.c | 2 ++ + 2 files changed, 69 insertions(+) + +commit 0d3f56e31c9099653539fa2539e05b3ba336a441 +Author: Simon McVittie +AuthorDate: Wed Apr 15 19:59:50 2015 +0100 +Commit: Simon McVittie +CommitDate: Tue Jun 9 18:17:01 2015 +0100 + + g_dbus_address_connect: specifically use dbus-launch for autolaunch: + + This only alters what happens if we specifically connect to + "autolaunch:", for instance via + "DBUS_SESSION_BUS_ADDRESS=autolaunch:". + We will still potentially try other platform-specific things if + DBUS_SESSION_BUS_ADDRESS is unset. There are currently no other + platform-specific things, so there is no practical difference yet, + but I'm about to add a more-preferred fallback path before autolaunch. + + This matches libdbus' behaviour and the D-Bus Specification, in which + the autolaunch: transport specifically means X11 autolaunch + (as implemented by "dbus-launch --autolaunch") on Unix, or a + shared-memory-based protocol on Windows. Other platform-specific + transports or default/fallback modes, including launchd on Mac OS X + and XDG_RUNTIME_DIR/bus on Unix, are not part of "autolaunch:". + + It's rather unfortunate that the same name means two different + platform-specific mechanisms, specific to different platforms - + if they were added today I'd call them x11: and windows-shm: or + something - but it's been like this since 2007 so it's too late now. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=747941 + Signed-off-by: Simon McVittie + Reviewed-by: Philip Withnall + + gio/gdbusaddress.c | 38 +++++++++++++++++++++----------------- + 1 file changed, 21 insertions(+), 17 deletions(-) + +commit bf181a3ac78e824ca7e67ecfb2ba957e740594d7 +Author: Simon McVittie +AuthorDate: Mon Apr 27 14:38:41 2015 +0100 +Commit: Simon McVittie +CommitDate: Tue Jun 9 18:15:28 2015 +0100 + + regex: if PCRE is 8.34 or later, disable auto-possessification for DFA + + Normally, recent PCRE behaves as if certain patterns were replaced + by a more "possessive" pattern that gives the same answer for normal + regex matching, but is more efficient. However, the modified pattern + produces fewer results under DFA. If we want the full set of results + we have to apply PCRE_NO_AUTO_POSSESS, and that's a compile-time flag. + + This currently only affects a system PCRE, but would also work + fine for + an internal PCRE 8.34 or later if the embedded copy is updated. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=733325 + Reviewed-by: Christian Persch + + glib/gregex.c | 128 + +++++++++++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 95 insertions(+), 33 deletions(-) + +commit f45ceb838dae8f96b9bf646998a26a954a6fbf3d +Author: Christophe Fergeau +AuthorDate: Wed Jun 3 11:30:43 2015 +0200 +Commit: Christophe Fergeau +CommitDate: Tue Jun 9 13:47:41 2015 +0200 + + gapplication: Make sure --help output is translated + + Currently, applications using g_application_add_main_option_entries() + won't get translated entries in --help output. We need to call + g_option_group_set_translation_domain() with a NULL domain to ensure + that the + default application gettext domain (ie the one passed to the + textdomain() call) will be used for the main entries passed by the + application. + + If we want to allow more flexibility on which gettext domain should be + used for these entries, new API will be needed. + + https://bugzilla.gnome.org/show_bug.cgi?id=750322 + + gio/gapplication.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 6cd1f8b40ff66509eedfce9c3c46cbef799a7ffe +Author: Philip Withnall +AuthorDate: Fri Dec 19 20:43:06 2014 +0000 +Commit: Philip Withnall +CommitDate: Tue Jun 9 08:28:00 2015 +0100 + + gsettings: Document GSettings build system integration + + Add a new section to the main GSettings documentation which documents + the best practices for integrating GSettings into an autoconf/automake + build system using the GLIB_GSETTINGS macro. + + Some of this material was adapted from the migrating-gconf.xml guide. + + https://bugzilla.gnome.org/show_bug.cgi?id=741788 + + gio/gsettings.c | 54 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 54 insertions(+) + +commit 723961b749613aad05b6bd22d1f12479a0022bef +Author: Philip Withnall +AuthorDate: Fri Dec 19 20:42:21 2014 +0000 +Commit: Philip Withnall +CommitDate: Tue Jun 9 08:28:00 2015 +0100 + + gsettings: Expand documentation default value l10n + + Mention context, translation category, and the need for syntactic + validity of the translated values. + + https://bugzilla.gnome.org/show_bug.cgi?id=741788 + + gio/gsettings.c | 30 +++++++++++++++++++++++++++--- + 1 file changed, 27 insertions(+), 3 deletions(-) + +commit 73a71d6a435485714d8a96a156bb805d47438ac0 +Author: Xavier Claessens +AuthorDate: Mon Jun 8 11:09:39 2015 -0400 +Commit: Xavier Claessens +CommitDate: Mon Jun 8 16:04:53 2015 -0400 + + doc: Add missing GTlsDatabaseClass + + https://bugzilla.gnome.org/show_bug.cgi?id=750573 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gtlsdatabase.c | 36 + ++++++++++++++++++++++++++++++++++++ + 2 files changed, 37 insertions(+) + +commit 1405eeeed797470bed9d8062d4051bf5b011e42b +Author: Matthias Clasen +AuthorDate: Fri Jun 5 19:13:19 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 19:13:19 2015 -0400 + + Add registry helpers to the docs + + docs/reference/gio/gio-docs.xml | 4 +++ + docs/reference/gio/gio-sections.txt | 69 + +++++++++++++++++++++++++++++++++++++ + 2 files changed, 73 insertions(+) + +commit e5e6c25c88349bf9fe2456efeb3785655967ad71 +Author: Руслан Ижбулатов +AuthorDate: Tue May 5 02:12:25 2015 +0000 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 18:05:09 2015 -0400 + + Bump W32 Registry API 'Since:' version + + https://bugzilla.gnome.org/show_bug.cgi?id=734888 + + gio/gwin32registrykey.c | 60 +++++++++++++++++++++--------------------- + gio/gwin32registrykey.h | 70 + ++++++++++++++++++++++++------------------------- + 2 files changed, 65 insertions(+), 65 deletions(-) + +commit 6579c87bd2e9d61cac078165505e502f57b03623 +Author: Руслан Ижбулатов +AuthorDate: Tue May 5 02:09:10 2015 +0000 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 18:01:43 2015 -0400 + + Make W32 registry API compatible with MSVC + + * Only check __OBJECT_ATTRIBUTES_DEFINED and __UNICODE_STRING_DEFINED + on MinGW (MSVC doesn't have these) + * MSVC: disable:4005 when including windows.h and ntstatus.h + * Move NTAPI cconv into the parens with the NtQueryKeyFunc + * Fix return values in some functions + + https://bugzilla.gnome.org/show_bug.cgi?id=734888 + + gio/gwin32registrykey.c | 31 +++++++++++++++++-------------- + 1 file changed, 17 insertions(+), 14 deletions(-) + +commit 1ac5b92c2f16335d686268191e0605ae1f344b4a +Author: Руслан Ижбулатов +AuthorDate: Mon Aug 25 03:38:35 2014 +0000 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 18:01:43 2015 -0400 + + Add W32 Registry reading API to gio + + https://bugzilla.gnome.org/show_bug.cgi?id=734888 + + gio/Makefile.am | 2 + + gio/gwin32registrykey.c | 2418 + +++++++++++++++++++++++++++++++++++++++++++++++ + gio/gwin32registrykey.h | 283 ++++++ + 3 files changed, 2703 insertions(+) + +commit 2a71f187d731a71ef16f4368d49af68aa3fe158d +Author: Руслан Ижбулатов +AuthorDate: Sun May 17 11:42:55 2015 +0000 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 16:17:33 2015 -0400 + + Make GWin32AppInfo MSVC-compatible - use G_VA_COPY + + https://bugzilla.gnome.org/show_bug.cgi?id=666831 + + gio/gwin32appinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4d800e4d86db6825dd3c508c83352b9a4cd24350 +Author: Руслан Ижбулатов +AuthorDate: Fri Aug 29 08:53:35 2014 +0000 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 16:17:33 2015 -0400 + + GWin32AppInfo rewrite + + - On first call scan the registry, collect information about URI + protocols, + file extensions, applications and handlers, store that as a set of + interconnected structures in several hash tables + - Watch the registry keys, re-scan the registry when any one of + them changes. + + https://bugzilla.gnome.org/show_bug.cgi?id=666831 + + gio/gwin32appinfo.c | 4987 + +++++++++++++++++++++++++++++++++++++++++++++------ + gio/gwin32appinfo.h | 4 +- + 2 files changed, 4432 insertions(+), 559 deletions(-) + +commit 5bc0bc2fdeb8a7c7bb56fabbd8886b56bf34c85b +Author: Mikhail Zabaluev +AuthorDate: Tue Oct 14 01:25:56 2014 +0300 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 15:36:13 2015 -0400 + + Added g_utf8_validate() to UTF-8 performance testing + + https://bugzilla.gnome.org/show_bug.cgi?id=738504 + + glib/tests/utf8-performance.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +commit 007f6684c54a695a6c35315f12f9f306d5af83bb +Author: Matthias Clasen +AuthorDate: Fri Jun 5 15:27:59 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 15:27:59 2015 -0400 + + Add index for new api + + docs/reference/gio/gio-docs.xml | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 01e9302673630b20120505d92bbc245ba1bd027a +Author: Matthias Clasen +AuthorDate: Fri Jun 5 15:27:25 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 15:27:25 2015 -0400 + + Add new API to docs + + docs/reference/gio/gio-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit cb7020af5e864eed81520e980d66ccd683697ed4 +Author: Ryan Lortie +AuthorDate: Wed Nov 19 12:45:38 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 15:26:34 2015 -0400 + + GSettings: deprecate g_settings_list_keys() + + This is now possible with g_settings_schema_list_keys(). + + https://bugzilla.gnome.org/show_bug.cgi?id=740308 + + gio/gsettings.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6cf867fb2a5086d2c5c0ac6c71ac795008cd13ae +Author: Ryan Lortie +AuthorDate: Wed Nov 19 12:45:06 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 15:24:02 2015 -0400 + + gsettings tests: use g_settings_schema_list_keys() + + Stop using g_settings_list_keys() because soon it will be deprecated. + + https://bugzilla.gnome.org/show_bug.cgi?id=740308 + + gio/tests/gsettings.c | 32 ++++++++++++++++++++++++++++++-- + 1 file changed, 30 insertions(+), 2 deletions(-) + +commit bb8eea6148fab965969c74e80a936864fc65e671 +Author: Ryan Lortie +AuthorDate: Wed Nov 19 12:42:10 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 15:24:02 2015 -0400 + + gsettings tool: use schema for listing keys + + Use the newly added g_settings_schema_list_keys() API instead of + g_settings_list_keys() in order to list keys. + + Doing this allows the 'list-keys' command to work without creating a + GSettings object, which is more efficient. It also means that + we don't + have to provide a (meaningless and ignored) path when listing keys on + relocatable schemas. + + While we're at it, update the 'range' command not to require + creation of + a GSettings object, in a similar way. + + https://bugzilla.gnome.org/show_bug.cgi?id=740308 + + gio/gsettings-tool.c | 75 + +++++++++++++++++++++++++++++++++++++++------------- + 1 file changed, 57 insertions(+), 18 deletions(-) + +commit 82fcfeb3b065d7cc4d53e80776f9b476df7c2137 +Author: Ryan Lortie +AuthorDate: Wed Nov 19 12:40:22 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 15:24:02 2015 -0400 + + GSettingsSchema: add g_settings_schema_list_keys() + + The list of keys in a GSettings object depends entirely on the schema, + so it makes sense to expose this API there. + + Move the implementation out of gsettings.c and into gsettingsschema.c, + replacing the earlier with a simple call to the new location. + + We don't do the same for children because the children can change. + + https://bugzilla.gnome.org/show_bug.cgi?id=740308 + + gio/gsettings.c | 18 +----------------- + gio/gsettingsschema.c | 41 +++++++++++++++++++++++++++++++++++++++++ + gio/gsettingsschema.h | 3 +++ + 3 files changed, 45 insertions(+), 17 deletions(-) + +commit 36e093a31a9eb12021e7780b9e322c29763ffa58 +Author: Patrick Griffis +AuthorDate: Wed Mar 25 15:51:29 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 14:55:58 2015 -0400 + + Implement GNotification on OSX + + https://bugzilla.gnome.org/show_bug.cgi?id=747146 + + gio/Makefile.am | 5 +- + gio/gcocoanotificationbackend.c | 278 + ++++++++++++++++++++++++++++++++++++++++ + gio/giomodule.c | 7 + + gio/gnotificationbackend.c | 4 +- + 4 files changed, 292 insertions(+), 2 deletions(-) + +commit 89058e8a9b769ab223bc75739f5455dab18f7a3d +Author: Patrick Griffis +AuthorDate: Mon Apr 13 13:39:28 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 14:55:58 2015 -0400 + + configure: Require OSX >= 10.9 + + https://bugzilla.gnome.org/show_bug.cgi?id=747146 + + configure.ac | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 9e8f4d473604e291c0164965bf9bba5ac77cc2bf +Author: Ryan Lortie +AuthorDate: Thu Mar 26 16:35:06 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 14:55:01 2015 -0400 + + kqueue: add a bit of extra paranoia on cancel + + Cancellation of GPollFileMonitor is now handled correctly (in + the sense + that no further signals will follow) but let's be extra paranoid and + disconnect our handler anyway, for good measure. + + https://bugzilla.gnome.org/show_bug.cgi?id=739424 + + gio/kqueue/gkqueuefilemonitor.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit a367921d445f290263b052ad3da55525c1a5deb3 +Author: Ryan Lortie +AuthorDate: Thu Mar 26 16:31:48 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 14:55:01 2015 -0400 + + gpollfilemonitor: send 'changes done' for creates + + The new rules of GFileMonitor says that users should expect to see a + CHANGES_DONE_HINT following a CREATED as well as CHANGED. + + https://bugzilla.gnome.org/show_bug.cgi?id=739424 + + gio/gpollfilemonitor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 62e5ee5514f0838689bc7d2d2c1a43fa912eaf1a +Author: Ryan Lortie +AuthorDate: Thu Mar 26 16:29:19 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 14:55:01 2015 -0400 + + gpollfilemonitor: don't emit after cancellation + + GPollFileMonitor emits CHANGES_DONE_HINT after CHANGED signals, but it + doesn't check to ensure that the file monitor wasn't cancelled + before it + does that. + + If the original signal caused the monitor to be unreffed, cancelled + and + destroyed, we would still end up emitting an extra signal on it. + + Avoid that by checking first for cancellation. + + https://bugzilla.gnome.org/show_bug.cgi?id=739424 + + gio/gpollfilemonitor.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 16190d2dcd111b75b240baffe88653e5fa2822f6 +Author: Mikhail Zabaluev +AuthorDate: Mon Oct 6 02:01:38 2014 +0300 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 14:53:34 2015 -0400 + + glib/genviron.c, GSubprocessLauncher: ain't no "filename encoding" + + Removed all mentions of GLib file name encoding referring to + the environment strings. The env var content has no defined relation + to GLib's notion of filename encoding, or any encoding whatsoever. + It would be wrong to pass all UTF-8 strings through + g_filename_from_utf8() in order to put them into the environment, + for one thing. + + https://bugzilla.gnome.org/show_bug.cgi?id=738185 + + gio/gsubprocesslauncher.c | 22 +++++++++------------- + glib/genviron.c | 19 ++++++++----------- + 2 files changed, 17 insertions(+), 24 deletions(-) + +commit b31a873fb3bd1b67af9f7cc88bf44f8b5a941cec +Author: Jan Safranek +AuthorDate: Tue Nov 4 11:54:00 2014 +0000 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 14:35:34 2015 -0400 + + GDBus: Add new call flag to allow interactive authorization + + DBus has recently introduced new message flag + DBUS_HEADER_FLAG_ALLOW_INTERACTIVE_AUTHORIZATION, which tells that + caller is willing to wait for unspecified amount of time for the call + to return, as the service may perform interactive authorization (e.g. + using polkit). + + https://bugzilla.gnome.org/show_bug.cgi?id=739616 + + gio/gdbusconnection.c | 8 +++++++- + gio/gioenums.h | 11 +++++++++-- + 2 files changed, 16 insertions(+), 3 deletions(-) + +commit 865ce79ce0e92326b247ef51e7e2c78aaad99889 +Author: Ryan Lortie +AuthorDate: Thu May 21 12:32:20 2015 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 12:36:36 2015 -0400 + + GActionGroupExporter: flush queue on requests + + In order to maintain a logical stream of events, we need to make + sure we + flush and queued change notifications before responding to any + requests + for information from clients. + + If we don't do this, it's possible that we emit an 'add' event + that was + queued at the time of a 'DescribeAll' call _after_ the reply to that + call (which already contained the description of the new action). + + In practice, this is not only logically incorrect, but it can + also cause + problems. If a change to action 'state' or 'enabled' occurs after the + DescribeAll but before the signal has been dispatched, it will be + ignored because an 'add' signal is already pending. When that add + signal is sent, it will contain the correct data, but the receiver + will + ignore it because it already saw the action in the DescribeAll reply. + + https://bugzilla.gnome.org/show_bug.cgi?id=749693 + + gio/gactiongroupexporter.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit eeae7950fca962e65a5e08cfceae372782f5cc7e +Author: Ryan Lortie +AuthorDate: Sun May 25 11:21:06 2014 +0200 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 12:36:09 2015 -0400 + + GActionGroup: fix an annotation + + .get_action_state_type() does not return a copy. + + We remove the annotation entirely because it is evident from the + 'const' + on the return type. + + https://bugzilla.gnome.org/show_bug.cgi?id=730168 + + gio/gactiongroup.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 96df2727f4c120a9fec888a2840f60ac3c3edde9 +Author: Matthias Clasen +AuthorDate: Fri Jun 5 12:30:15 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 12:30:15 2015 -0400 + + win32: Make g_content_type_get_mime_type work for directories + + Now that we are using inode/directory for directories, handle + this case in g_content_type_get_mime_type() as well. + + gio/gcontenttype-win32.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 5f0665cbbc1d8b2fafeeb1fba7569612832b7541 +Author: Руслан Ижбулатов +AuthorDate: Thu Apr 30 23:09:30 2015 +0000 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 12:28:09 2015 -0400 + + W32: Special treatment for inode/directory mime/type + + This is a hack for GLocalFileInfo to correctly get icons for + directories. + Without this change content type for any W32 directory is NULL + (because there's no registry entry for "inode/directory" by default, + and in any way there's no file extension that means "directory" + to put there), + and GLocalFileInfo uses content type to grab icons. + + https://bugzilla.gnome.org/show_bug.cgi?id=748727 + + gio/gcontenttype-win32.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 9931336d2dfbaf44aeb54b7e31164b91718e7769 +Author: Matthias Clasen +AuthorDate: Fri Jun 5 12:26:41 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 12:26:41 2015 -0400 + + win32: Return proper icon names + + The code here was returning gtk-directory and similar names as + fallback, with a comment claiming that these are 'builtin gtk'. + But they aren't, anymore, so just return the standard names. + + gio/gcontenttype-win32.c | 19 +++++++++---------- + 1 file changed, 9 insertions(+), 10 deletions(-) + +commit c20f3b239cd37733df1b68f113fdc17621cc3157 +Author: Matthias Clasen +AuthorDate: Fri Jun 5 11:30:17 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 11:54:40 2015 -0400 + + Fix a markup confusion + + "0." at the beginning of a line is interpreted as a numeric list + by the gtk-doc markdown parser, so be careful to avoid that. + + https://bugzilla.gnome.org/show_bug.cgi?id=750399 + + glib/gdate.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 07b3595c230c42ef8a31406d00477c9f755e902d +Author: Matthias Clasen +AuthorDate: Fri Jun 5 11:21:57 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 5 11:54:40 2015 -0400 + + Trivial: fix a typo + + Pointed out in https://bugzilla.gnome.org/show_bug.cgi?id=750399 + + glib/gerror.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c94e4c6f03e39e3e7749980b8d19f1644aacb003 +Author: Philip Withnall +AuthorDate: Fri Dec 19 21:03:46 2014 +0000 +Commit: Philip Withnall +CommitDate: Fri Jun 5 13:02:33 2015 +0100 + + gsettings: Add a documentation section on relocatable schemas + + https://bugzilla.gnome.org/show_bug.cgi?id=741788 + + gio/gsettings.c | 26 +++++++++++++++++++++++++- + 1 file changed, 25 insertions(+), 1 deletion(-) + +commit 338741fff5381d1a8d11b8f62c9e208af8b016fa +Author: Stefan Ekenberg +AuthorDate: Wed Jun 3 15:59:57 2015 +0200 +Commit: Matthias Clasen +CommitDate: Thu Jun 4 22:30:50 2015 -0400 + + Prevent race condition in g_io_condition_get_type + + Prevents race condition in function g_io_condition_get_type by + ensuring + that the initialization section for 'etype' is executed only once + during a program's life time, and that concurrent threads are blocked + until initialization completes. This changes solves the problem that + concurrent threads could execute the check 'etype == 0' before any of + them had initialized it, which in turn meant that multiple threads + would then attempt to register the "GIOCondition" type. + + https://bugzilla.gnome.org/show_bug.cgi?id=750386 + + gobject/gsourceclosure.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 6c43b6a21aca5cac33992c6b690e566ac1664997 +Author: Matthias Clasen +AuthorDate: Thu Jun 4 19:25:20 2015 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 4 19:25:42 2015 -0400 + + Trivial: fix a comment typo + + gio/gunixmounts.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cac0a49ca031bbf0d3fa9902010b05e2ad6523b3 +Author: Balázs Úr +AuthorDate: Thu Jun 4 21:03:10 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Thu Jun 4 21:03:10 2015 +0000 + + Updated Hungarian translation + + po/hu.po | 502 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 261 insertions(+), 241 deletions(-) + +commit bdc3f149ec134081943fcd626a1c826cccd05171 +Author: Garrett Regier +AuthorDate: Wed Jun 3 17:16:21 2015 -0700 +Commit: Garrett Regier +CommitDate: Wed Jun 3 17:46:57 2015 -0700 + + binding: Simplify the default transform func + + https://bugzilla.gnome.org/show_bug.cgi?id=750369 + + gobject/gbinding.c | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +commit ace7f6861e180d8a9a3b6982e2cfa522cb0cb5a0 +Author: Garrett Regier +AuthorDate: Wed Jun 3 17:15:17 2015 -0700 +Commit: Garrett Regier +CommitDate: Wed Jun 3 17:46:57 2015 -0700 + + binding: Remove conditional from the default transform function + + Avoiding checking for INVERT_BOOLEAN each and + instead choose the correct function in constructed(). + + https://bugzilla.gnome.org/show_bug.cgi?id=750369 + + gobject/gbinding.c | 49 +++++++++++++++++-------------------------------- + 1 file changed, 17 insertions(+), 32 deletions(-) + +commit 36593a3aba8dded2781a2bdd9b2ad0050dc939f2 +Author: Garrett Regier +AuthorDate: Wed Jun 3 17:13:53 2015 -0700 +Commit: Garrett Regier +CommitDate: Wed Jun 3 17:46:57 2015 -0700 + + binding: Remove GObject data usage + + It isn't actually doing anything, instead it is + being managed without actually being used. + This has the result that GBinding is now more + thread-safe. + + https://bugzilla.gnome.org/show_bug.cgi?id=745013 + + gobject/gbinding.c | 46 ++-------------------------------------------- + 1 file changed, 2 insertions(+), 44 deletions(-) + +commit f68582356dd94f34e85574852556ab591854da27 +Author: Piotr Drąg +AuthorDate: Wed Jun 3 19:02:12 2015 +0200 +Commit: Piotr Drąg +CommitDate: Wed Jun 3 19:02:12 2015 +0200 + + Updated POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit 0d8dd2cf5cb7ba2d75b71bf765b299727eb32e26 +Author: Xavier Claessens +AuthorDate: Wed Jun 3 10:18:36 2015 -0400 +Commit: Xavier Claessens +CommitDate: Wed Jun 3 10:19:02 2015 -0400 + + doc: add GTlsInteractionClass + + https://bugzilla.gnome.org/show_bug.cgi?id=750344 + + docs/reference/gio/gio-sections.txt | 2 +- + gio/gtlsinteraction.c | 9 +++++++++ + 2 files changed, 10 insertions(+), 1 deletion(-) + +commit 7cba800a84730c9c5843acdd775e42b8c1438edf +Author: Alexander Larsson +AuthorDate: Mon Jun 1 10:02:47 2015 +0200 +Commit: Alexander Larsson +CommitDate: Wed Jun 3 08:52:54 2015 +0200 + + GNetworkMonitorNetlink: Fix check for non-kernel messages + + This code used to look at the SCM_CREDENTIALS and ignore every message + not from uid 0. However, when user namespaces are in use this does not + work, as if uid 0 is not mapped you get overflowuid instead. Right now + this means we ignore all messages in such user namespaces and glib + apps hang on startup. + + We can't look at pids either, as pid 0 is returned for processes + outside your pid namespace. + + Instead the correct approach is to look at the sending sockaddr and + if the port id (nl_pid) is zero, then its from the kernel. + + Source: + http://lists.linuxfoundation.org/pipermail/containers/2015-May/036032.html + + https://bugzilla.gnome.org/show_bug.cgi?id=750203 + + gio/gnetworkmonitornetlink.c | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) + +commit f8273f39a1fa5e961c30e96fa2a82d728736be09 +Author: Alexander Larsson +AuthorDate: Mon Jun 1 10:01:26 2015 +0200 +Commit: Alexander Larsson +CommitDate: Wed Jun 3 08:52:54 2015 +0200 + + Add GNativeSocketAddress for handling "other" addresses + + Instead of just dropping address types that we're not specifically + handling we return a GNativeSocketAddress which is just a dummy + container for the stuct sockaddr. + + https://bugzilla.gnome.org/show_bug.cgi?id=750203 + + docs/reference/gio/gio-sections.txt | 20 +++++ + gio/Makefile.am | 2 + + gio/giotypes.h | 1 + + gio/gnativesocketaddress.c | 160 + ++++++++++++++++++++++++++++++++++++ + gio/gnativesocketaddress.h | 65 +++++++++++++++ + gio/gsocketaddress.c | 3 +- + 6 files changed, 250 insertions(+), 1 deletion(-) + +commit f7b13e05f9bc5bd2b54f589d16ad580f6d833173 +Author: Mattias Ellert +AuthorDate: Fri Oct 24 12:29:00 2014 +0000 +Commit: Matthias Clasen +CommitDate: Thu May 28 21:54:52 2015 -0400 + + thread: Check sysconf value before using it + + sysconf() is documented as returning -1 if it can't determine + a minimum thread stack size. Check for this case before using + the return value. + + https://bugzilla.gnome.org/show_bug.cgi?id=739122 + + glib/gthread-posix.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 916297be799ee001b4a214cc52c3b960bb0b5deb +Author: Matthias Clasen +AuthorDate: Sat Sep 20 01:08:32 2014 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 27 14:41:19 2015 -0400 + + Add a global signal handler table + + Add a global lookup table for signal handlers. We already give + them a unique ID, so there is no good reason to pay for + non-constant lookups when disconnecting handlers. + + https://bugzilla.gnome.org/show_bug.cgi?id=737009 + + gobject/gsignal.c | 50 ++++++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 40 insertions(+), 10 deletions(-) + +commit 8a97dc56528b45dcd84a8c46f94b9a25a26d5cc3 +Author: Matthias Clasen +AuthorDate: Sat Sep 20 00:34:24 2014 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 27 14:41:19 2015 -0400 + + Add a performance test for signal connection + + This test checks the performance of connecting, disconnecting and + blocking many handlers. Various cases are checked: disconnect in + the same order, in the inverse order, at random. Connect to one + signal on a single object, to two signals on the same object, or + to the same signal on two different objects. + + https://bugzilla.gnome.org/show_bug.cgi?id=737009 + + gobject/tests/Makefile.am | 1 + + gobject/tests/signal-handler.c | 299 + +++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 300 insertions(+) + +commit ff1381e31e2c05d0e410c49e6a728ad175a9fc0a +Author: Daniel Mustieles +AuthorDate: Tue May 26 19:25:56 2015 +0200 +Commit: Daniel Mustieles +CommitDate: Tue May 26 19:25:56 2015 +0200 + + Updated Spanish translation + + po/es.po | 504 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 262 insertions(+), 242 deletions(-) + +commit 102ac0e7765796f49ccd271dd9de97885bc3c605 +Author: Matthias Clasen +AuthorDate: Mon May 25 23:29:41 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 25 23:30:07 2015 -0400 + + 2.45.2 + + NEWS | 32 ++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 33 insertions(+), 1 deletion(-) + +commit 126c685f4aa627a8190e09adfc8ab0733c14a6ea +Author: Matthias Clasen +AuthorDate: Mon May 25 13:26:48 2015 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 25 13:29:58 2015 -0400 + + GOptionContext: Improve help in simple cases + + Only add [OPTION...] to the usage line if the context + has options. And shorten "Application Options" to just + "Options" if we don't have to differentiate from other + kinds of options. + + glib/goption.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +commit 525bbbd6bd7c9abb45c4ddfcfb8dcf45bbbd5726 +Author: Emmanuele Bassi +AuthorDate: Mon May 25 14:04:06 2015 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon May 25 14:04:06 2015 +0100 + + Do not use a string literal when a format string is expected + + Otherwise we'll get compiler errors. + + Based on a patch by: Vincent Le Garrec + + https://bugzilla.gnome.org/show_bug.cgi?id=696749 + + gio/gregistrysettingsbackend.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5e7e058a9c26fa735386cf45b41ad91cc7768137 +Author: Emmanuele Bassi +AuthorDate: Mon Apr 20 14:11:12 2015 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon May 25 14:02:43 2015 +0100 + + docs: Add an example of G_DEFINE_BOXED_TYPE + + Mention that the GType of the boxed type is stored inside the + g_define_type_id variable. + + See bug: https://bugzilla.gnome.org/show_bug.cgi?id=723394 + + gobject/gtype.h | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit 7313195ae776dad441b18fb948149dfdd6ae76cc +Author: Akom Chotiphantawanon +AuthorDate: Sun May 24 17:42:33 2015 +0700 +Commit: Theppitak Karoonboonyanan +CommitDate: Sun May 24 17:42:33 2015 +0700 + + Updated Thai translation + + po/th.po | 1203 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 628 insertions(+), 575 deletions(-) + +commit 13a9e8b7a649fb8739f47e88fc2ab4218b9aed7a +Author: Dušan Kazik +AuthorDate: Sat May 23 20:36:38 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Sat May 23 20:36:38 2015 +0000 + + Updated Slovak translation + + po/sk.po | 431 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 223 insertions(+), 208 deletions(-) + +commit 3bd703e9c4a4de0ea3faf2073ffaffcb182c5b5d +Author: David Shea +AuthorDate: Wed Apr 8 13:14:22 2015 -0400 +Commit: Debarshi Ray +CommitDate: Sat May 23 22:18:14 2015 +0200 + + Add introspection annotations to GListStore + + GListStore requires that item-type be derived from GObject, so specify + that the type of the item parameters is GObject so the functions + can be + used via gobject-introspection. + + Add a scope parameter for the callback used during insert_sorted. + + gio/gliststore.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 074fe89f226d4c0f3c6bdd48b6b03c8051fbaf75 +Author: Matthias Clasen +AuthorDate: Fri May 15 22:53:41 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 15 22:53:41 2015 -0400 + + glib-compile-schemas: Improve an error message + + Mention the expected type when failing to parse a GVariant. + + gio/glib-compile-schemas.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit aecac6e1cb80b3b5e64459f5a8536ad93d021c1b +Author: Matthias Clasen +AuthorDate: Fri May 15 22:41:29 2015 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 15 22:41:29 2015 -0400 + + glib-compile-schemas: Show error positions + + GMarkup provides this information, pass it on. + + gio/glib-compile-schemas.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit d853ceddb5bd07e0835ef7b7953404f5c866832d +Author: Jordi Mas +AuthorDate: Fri May 15 22:14:44 2015 +0200 +Commit: Jordi Mas +CommitDate: Fri May 15 22:14:44 2015 +0200 + + Fixes to Catalan translation + + po/ca.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 4c1f716ef6d8d9bf73e60175ebad52b2c1d13b6b +Author: Alexandre Franke +AuthorDate: Fri May 15 08:46:51 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri May 15 08:46:51 2015 +0000 + + Updated French translation + + po/fr.po | 443 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 228 insertions(+), 215 deletions(-) + +commit ace7846322634159271c5c75ccadfa3cade78620 +Author: Simon McVittie +AuthorDate: Tue Apr 28 10:10:58 2015 +0100 +Commit: Simon McVittie +CommitDate: Thu May 14 18:39:57 2015 +0100 + + regex test: do not assert that system PCRE still has an 8.31 bug + + This was fixed in 8.32, so if we have that version, assert that it is + fixed; if we don't (e.g. the current internal pcre), still don't + assert that it *isn't* fixed. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=733325 + Reviewed-by: Christian Persch + Signed-off-by: Simon McVittie + + glib/tests/regex.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit fe1a2dc1965b564727480c8a99740252ea81274b +Author: Iain Lane +AuthorDate: Mon Mar 31 11:06:05 2014 +0100 +Commit: Simon McVittie +CommitDate: Thu May 14 12:11:57 2015 +0100 + + gdbus tests: wait up to 60s for gdbus-testserver to take its bus name + + Previously, we waited up to 0.5s, but that can fail on slow + architectures like ARM; now we wait up to 60s in 0.1s increments. + + Patch originally by Simon McVittie , + modified by Iain Lane to be called earlier, to catch all testcases + in a + particular test. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=724113 + Reviewed-by: Simon McVittie + Acked-by: Matthias Clasen + + gio/tests/gdbus-connection-loss.c | 3 +-- + gio/tests/gdbus-tests.c | 52 + +++++++++++++++++++++++++++++++++++++++ + gio/tests/gdbus-tests.h | 2 ++ + gio/tests/gdbus-threading.c | 8 +----- + 4 files changed, 56 insertions(+), 9 deletions(-) + +commit 3beb67f9f3b1db6ee133973edfd89df89d7bdde5 +Author: Simon McVittie +AuthorDate: Tue Feb 11 14:23:15 2014 +0000 +Commit: Simon McVittie +CommitDate: Thu May 14 12:11:20 2015 +0100 + + gdbus-connection: wait up to 10s to actually send a message + + We previously waited 0.25s, which should be enough even on slow + machines, + but you never know; but we also now wait in 0.1s increments, so + this test + should actually be faster now. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=724113 + Acked-by: Matthias Clasen + + gio/tests/gdbus-connection.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +commit f1c2e703454cb876a7df9c081c456a3df97b906e +Author: Garrett Regier +AuthorDate: Wed May 13 23:12:49 2015 -0700 +Commit: Garrett Regier +CommitDate: Thu May 14 03:58:53 2015 -0700 + + Connect to the detailed notify signal in GBinding + + This avoids the notify handler being called for each + and every emitted notify. + + https://bugzilla.gnome.org/show_bug.cgi?id=749353 + + gobject/gbinding.c | 44 ++++++++++++++++++++++++++------------------ + 1 file changed, 26 insertions(+), 18 deletions(-) + +commit b07ba8ed3b3c6b2b0402946283e896ad66b0a573 +Author: Garrett Regier +AuthorDate: Wed May 13 22:15:27 2015 -0700 +Commit: Garrett Regier +CommitDate: Thu May 14 03:58:53 2015 -0700 + + Fix g_binding_unbind() when the source and target are the same + + It tried to remove a weak ref, but it is only taken if the + source and target object are different. + + https://bugzilla.gnome.org/show_bug.cgi?id=749352 + + gobject/gbinding.c | 9 +++++++-- + gobject/tests/binding.c | 13 +++++++++++++ + 2 files changed, 20 insertions(+), 2 deletions(-) + +commit 31496767c7caed25c134e58b0f41b1e696f671fe +Author: Philip Withnall +AuthorDate: Thu May 14 08:31:22 2015 +0100 +Commit: Philip Withnall +CommitDate: Thu May 14 08:31:22 2015 +0100 + + gresource: Document generated C file function naming + + Mention the relationship to the --c-name argument, plus the need + to call + some_prefix_get_resource() to get the GResource object. + + gio/gresource.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit a8c157f92be6915549e1ec06e611e72da935385b +Author: Philip Withnall +AuthorDate: Thu May 14 08:15:46 2015 +0100 +Commit: Philip Withnall +CommitDate: Thu May 14 08:15:46 2015 +0100 + + gresource: Minor capitalisation fixes in documentation + + gio/gresource.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 6ac2e8c79a012e2d43292efdbd3250de31abff47 +Author: Philip Withnall +AuthorDate: Wed May 13 15:22:57 2015 +0100 +Commit: Philip Withnall +CommitDate: Wed May 13 15:22:57 2015 +0100 + + gmessages: Tweak docs for G_LOG_DOMAIN to use AM_CPPFLAGS + + Instead of INCLUDES, which is deprecated in automake. Using + AM_CPPFLAGS + also gives the hint that the -D argument should be a CPPFLAGS + variable, + rather than CFLAGS. + + glib/gmessages.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 29d380cc5bbd97ee5b0c95b5499d6dd17523b71b +Author: Garrett Regier +AuthorDate: Tue Apr 14 20:44:38 2015 -0700 +Commit: Garrett Regier +CommitDate: Tue May 12 05:30:46 2015 -0700 + + gtype: Bump allowed number of children + + Restricting the number of children to be less than 4095 can + be an issue when generating types. This is also an issue for + the Lua bindings as each Lua state will create a new GType each + time the Lua code is executed. + + https://bugzilla.gnome.org/show_bug.cgi?id=747882 + + gobject/gtype.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 45dae4b5063f9af7de8211ced95dd73cc770a86e +Author: Simon McVittie +AuthorDate: Mon May 11 17:03:00 2015 +0100 +Commit: Simon McVittie +CommitDate: Mon May 11 20:24:56 2015 +0100 + + tests: replace most g_print() with g_printerr() + + I searched all files that mention g_test_run, and replaced most + g_print() calls. This avoids interfering with TAP. Exceptions: + + * gio/tests/network-monitor: a manual mode that is run by + "./network-monitor --watch" is unaffected + * glib/gtester.c: not a test + * glib/gtestutils.c: not a test + * glib/tests/logging.c: specifically exercising g_print() + * glib/tests/markup-parse.c: a manual mode that is run by + "./markup-parse --cdata-as-text" is unaffected + * glib/tests/testing.c: specifically exercising capture of stdout + in subprocesses + * glib/tests/utils.c: captures a subprocess's stdout + * glib/tests/testglib.c: exercises an assertion failure in g_print() + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=725981 + Reviewed-by: Colin Walters + Signed-off-by: Simon McVittie + + gio/tests/defaultvalue.c | 2 +- + gio/tests/g-file.c | 4 +- + gio/tests/gdbus-connection.c | 2 +- + gio/tests/gdbus-export.c | 10 +-- + gio/tests/gdbus-peer.c | 4 +- + gio/tests/gdbus-proxy-threads.c | 4 +- + gio/tests/gdbus-test-codegen.c | 2 +- + gio/tests/gdbus-threading.c | 12 +-- + gio/tests/live-g-file.c | 12 +-- + glib/tests/1bit-mutex.c | 2 +- + glib/tests/base64.c | 4 +- + glib/tests/bookmarkfile.c | 26 +++--- + glib/tests/cond.c | 16 ++-- + glib/tests/fileutils.c | 6 +- + glib/tests/gdatetime.c | 6 +- + glib/tests/mutex.c | 2 +- + glib/tests/private.c | 6 +- + glib/tests/queue.c | 2 +- + glib/tests/rec-mutex.c | 4 +- + glib/tests/rwlock.c | 2 +- + glib/tests/sequence.c | 8 +- + glib/tests/shell.c | 2 +- + glib/tests/utils.c | 2 +- + gobject/tests/binding.c | 4 +- + gobject/tests/dynamictests.c | 8 +- + gobject/tests/private.c | 8 +- + gobject/tests/threadtests.c | 8 +- + tests/asyncqueue-test.c | 2 +- + tests/testglib.c | 182 + ++++++++++++++++++++-------------------- + 29 files changed, 176 insertions(+), 176 deletions(-) + +commit 064183a633b7fcfd9b7c1b5a2917fb6f0e9128d3 +Author: Simon McVittie +AuthorDate: Mon May 11 16:50:00 2015 +0100 +Commit: Simon McVittie +CommitDate: Mon May 11 20:24:52 2015 +0100 + + GFileMonitor test: use g_test_skip() instead of g_print() + + This stops it from interfering with structured stdout such as TAP. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=725981 + Reviewed-by: Colin Walters + Signed-off-by: Simon McVittie + + gio/tests/file.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0a9d91ab7b3b11df74a46d2068316a7c198e8558 +Author: Simon McVittie +AuthorDate: Mon May 11 16:38:57 2015 +0100 +Commit: Simon McVittie +CommitDate: Mon May 11 20:24:50 2015 +0100 + + testglib: my_hash_callback_remove_test: actually fail the test + + The test is to remove all the odd values with + my_hash_callback_remove(), + then iterate over all values and verify that they are even. However, + failing this check would just print "bad!" instead of failing + the test. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=725981 + Reviewed-by: Colin Walters + Signed-off-by: Simon McVittie + + tests/testglib.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4865538ce3d93dda802d25cbf93743e842507c5f +Author: Simon McVittie +AuthorDate: Mon May 11 16:34:35 2015 +0100 +Commit: Simon McVittie +CommitDate: Mon May 11 20:24:30 2015 +0100 + + GTestDBus: use g_printerr() for status message + + This avoids any possibility of interfering with test syntax (such as + TAP) on stdout. TAP specifically does not parse stderr. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=725981 + Reviewed-by: Colin Walters + Signed-off-by: Simon McVittie + + gio/gtestdbus.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 472dee39097881502bb593eb2effe37b3b6064a2 +Author: Simon McVittie +AuthorDate: Fri May 8 16:38:33 2015 +0100 +Commit: Simon McVittie +CommitDate: Mon May 11 17:48:02 2015 +0100 + + gdatetime test: don't assume that time stands still + + If we call time(NULL), then do something (however trivial), then call + g_date_time_new_now_utc(), they do not necessarily share a seconds + value. Let's say the gmtime call takes 2ms. time(NULL) could + return xx:xx:23 when the time is actually xx:xx:23.999999, resulting + in the g_date_time_new_now_utc() happening at xx:xx:24.000001. This is + unlikely, but did happen to me in a parallel build: + + GLib:ERROR:.../glib/tests/gdatetime.c:674:test_GDateTime_now_utc: + assertion failed (tm.tm_sec == g_date_time_get_second (dt)): + (23 == 24) + + A similar argument applies to the rollover from xx:23:59.999999 to + xx:24:00, so comparing seconds with a 1s "fuzz" or a >= comparison + is not sufficient; and so on into higher-order fields. + + I haven't seen the other tests that use _now() fail in the same way, + but they could. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=749080 + Reviewed-by: Philip Withnall + Signed-off-by: Simon McVittie + + glib/tests/gdatetime.c | 79 + +++++++++++++++++++++++++++++++++++++------------- + 1 file changed, 59 insertions(+), 20 deletions(-) + +commit e18e7956bfc8a65ecec18b1837d5b7835312c40a +Author: Evan Nemerson +AuthorDate: Sat May 9 23:45:03 2015 -0700 +Commit: Evan Nemerson +CommitDate: Mon May 11 09:40:26 2015 -0700 + + gnetworkaddress: add return type annotation to parse methods + + https://bugzilla.gnome.org/show_bug.cgi?id=749180 + + gio/gnetworkaddress.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit bced30cfbb9d98fdaf71225bae3330e95ea548fa +Author: Simon McVittie +AuthorDate: Thu May 7 17:36:01 2015 +0100 +Commit: Simon McVittie +CommitDate: Mon May 11 16:16:50 2015 +0100 + + GDBus tests: change progress noise from "if not quiet" to "if verbose" + + It seems that even after Bug #711796, these can still interfere + with TAP testing: + + PASS: gdbus-proxy-threads 1 /gdbus/proxy/vs-threads + tap-driver.sh: internal error getting exit status + tap-driver.sh: fatal: I/O or internal error + + Let's shut them up unless --verbose is used (which would be + appropriate + when running them interactively). + + Similar symptoms have been seen in Debian: + https://buildd.debian.org/status/fetch.php?pkg=glib2.0&arch=mipsel&ver=2.39.91-1&stamp=1394394568 + and in Guix: + https://lists.gnu.org/archive/html/bug-guix/2014-12/msg00002.html + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=725981 + Reviewed-by: Philip Withnall + Signed-off-by: Simon McVittie + + gio/tests/gdbus-proxy-threads.c | 4 ++-- + gio/tests/gdbus-threading.c | 8 ++++---- + 2 files changed, 6 insertions(+), 6 deletions(-) + +commit 6f859fe21a1955ab60ba4aa7e22841c7dbffdea3 +Author: Simon McVittie +AuthorDate: Thu May 7 16:45:48 2015 +0100 +Commit: Simon McVittie +CommitDate: Mon May 11 14:17:55 2015 +0100 + + gdbus-peer test: let GDBusServer start before notifying main thread + + When running the nonce-tcp and tcp-anonymous tests in one run + of gdbus-peer, or running one of them twice via command-line options + "-p /gdbus/tcp-anonymous -p /gdbus/tcp-anonymous", the one run second + would sometimes fail to connect with ECONNRESET. + + Adding more debug messages revealed that in the successful case, + g_main_loop_run() was executed in the server thread first: + + # tcp-anonymous: server thread: listening on + tcp:host=localhost,port=53517 + # tcp-anonymous: server thread: starting server... + # tcp-anonymous: server thread: creating main loop... + # tcp-anonymous: server thread: running main loop... + # tcp-anonymous: main thread: trying tcp:host=localhost,port=53517... + # tcp-anonymous: main thread: waiting for server thread... + + but in the failing case, the main thread attempted to connect + before the call to g_main_loop_run() in the server thread: + + # tcp-anonymous: server thread: listening on + tcp:host=localhost,port=40659 + # tcp-anonymous: server thread: starting server... + # tcp-anonymous: server thread: creating main loop... + # tcp-anonymous: main thread: trying tcp:host=localhost,port=40659... + # tcp-anonymous: server thread: running main loop... + + (The log message "creating main loop" was immediately before + create_service_loop(), and "running main loop" was immediately + before g_main_loop_run().) + + To ensure that the GDBusServer has a chance to start accepting + connections before the main thread tries to connect to it, do not + tell the main thread about the service_loop immediately, but instead + defer it to an idle. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=749079 + Signed-off-by: Simon McVittie + Reviewed-by: Philip Withnall + + gio/tests/gdbus-peer.c | 41 ++++++++++++++++++++++++++++------------- + 1 file changed, 28 insertions(+), 13 deletions(-) + +commit 474877d916439e20769a4aad4bccdedff2ad04ac +Author: Piotr Drąg +AuthorDate: Sun May 10 20:09:48 2015 +0200 +Commit: Piotr Drąg +CommitDate: Sun May 10 20:09:48 2015 +0200 + + Fix a minor typo in a comment + + glib/gdatetime.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d92a67afcb4349bd3e9f6d02b0fd1acf4526d5be +Author: Simon McVittie +AuthorDate: Wed Apr 29 12:28:27 2015 +0100 +Commit: Simon McVittie +CommitDate: Fri May 8 16:05:22 2015 +0100 + + gtestutils: better diagnostics if a captured subprocess fails + + It's unhelpful to get an error saying that stderr didn't match a + desired pattern, or matched an undesired pattern, without also + telling you what *was* on stderr. Similarly, if a test subprocess + exits 1, there's probably something useful on its stderr that + could have told you why. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=748534 + Signed-off-by: Simon McVittie + Reviewed-by: Dan Winship + + glib/gtestutils.c | 43 +++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 39 insertions(+), 4 deletions(-) + +commit f42d2c1b54541cf8d4e399f5c6d27d3ac40fc1a9 +Author: Simon McVittie +AuthorDate: Tue Apr 21 20:46:47 2015 +0100 +Commit: Simon McVittie +CommitDate: Fri May 8 16:03:57 2015 +0100 + + gdbus-serialization: use check_serialization() instead of dbus-daemon + + This test originally did not connect to the bus, which meant it was + omitted from commits like 415a8d81 that made sure none of GLib tests + rely on the presence of an existing session bus. (In particular, + Debian autobuilders don't have a session bus.) + + When test_double_array() was added, environments like the Debian + autobuilders didn't catch the fact that this test relied on having a + session bus, because it is often skipped in minimal environments + due to its libdbus-1 dependency. + + We don't actually need to connect to a dbus-daemon here: it's enough + to convert the message from GVariant to D-Bus serialization, and + back into an in-memory representation through libdbus. That's what + check_serialization() does, and I've verified that when I re-introduce + bug #732754 by reverting commits 627b49b and 2268628 locally, this + test still fails. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=744895 + Signed-off-by: Simon McVittie + Reviewed-by: Colin Walters + + gio/tests/gdbus-serialization.c | 26 ++++++++------------------ + 1 file changed, 8 insertions(+), 18 deletions(-) + +commit 23a5352cd8a1f247ac831ebada9dbc9f5d24476f +Author: Philip Withnall +AuthorDate: Sun May 3 12:17:10 2015 +0100 +Commit: Philip Withnall +CommitDate: Mon May 4 13:56:42 2015 +0100 + + glocalfilemonitor: Emit notification on rate limit change + + The changed variable was previously uninitialised in the path + where the + rate limit was actually changed. This could result in the + GObject::notify signal not getting emitted. + + Spotted by Coverity. + + CID: #1296516 + + https://bugzilla.gnome.org/show_bug.cgi?id=748834 + + gio/glocalfilemonitor.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 517ce45f8e21b2f7524fd429ee90ab1fbca9a30a +Author: Ting-Wei Lan +AuthorDate: Wed Apr 29 15:17:00 2015 +0800 +Commit: Ting-Wei Lan +CommitDate: Fri May 1 23:07:45 2015 +0800 + + gsocketlistener: Don't double unref address + + https://bugzilla.gnome.org/show_bug.cgi?id=748614 + + gio/gsocketlistener.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 34e946838d055cff810e32f6dba4331c49ea28c4 +Author: Ting-Wei Lan +AuthorDate: Wed Apr 29 14:55:00 2015 +0800 +Commit: Ting-Wei Lan +CommitDate: Fri May 1 23:07:45 2015 +0800 + + tests: Use de_DE.UTF-8 instead of de_DE + + de_DE.UTF-8 is supported by more operating systems, including FreeBSD, + NetBSD and OpenBSD. + + https://bugzilla.gnome.org/show_bug.cgi?id=748612 + + glib/tests/option-context.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7ebf2618aac31547131ced79f563266810917ae0 +Author: Matthias Clasen +AuthorDate: Thu Apr 30 13:40:42 2015 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 30 13:40:42 2015 -0400 + + 2.45.1 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c5fc7608792202b56b2b40e56941a4fcbbe1f400 +Author: Matthias Clasen +AuthorDate: Thu Apr 30 12:46:20 2015 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 30 12:46:20 2015 -0400 + + Updates + + NEWS | 76 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 75 insertions(+), 1 deletion(-) + +commit aeb069cd78e17cafa3002dbc40d074131d370571 +Author: Yosef Or Boczko +AuthorDate: Wed Apr 29 14:23:50 2015 +0300 +Commit: Yosef Or Boczko +CommitDate: Wed Apr 29 14:23:50 2015 +0300 + + Updated Hebrew translation + + po/he.po | 433 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 223 insertions(+), 210 deletions(-) + +commit c71b16c3be17113f80693690555c453f31e5f31a +Author: Hans Petter Jansson +AuthorDate: Tue Apr 28 16:50:42 2015 +0200 +Commit: Hans Petter Jansson +CommitDate: Tue Apr 28 16:50:42 2015 +0200 + + gmarkup: Make append_escaped_text() slightly more robust. + + https://bugzilla.gnome.org/show_bug.cgi?id=631597 + + glib/gmarkup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4e29e9a079a8e7a80ee78d9dc55b9ceb90f3421c +Author: Simon McVittie +AuthorDate: Sun Jul 20 19:34:54 2014 +0100 +Commit: Simon McVittie +CommitDate: Mon Apr 27 14:33:06 2015 +0100 + + regex test: do not assert that system PCRE allows "(?P<1>)" + + Perl >= 5.18, and PCRE >= 8.34, disallow this. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=733325 + Reviewed-by: Christian Persch + + glib/tests/regex.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 1fdece4f227a800ae44d04838fc29b6d8343fed5 +Author: Simon McVittie +AuthorDate: Sun Jul 20 19:33:17 2014 +0100 +Commit: Simon McVittie +CommitDate: Mon Apr 27 14:31:22 2015 +0100 + + regex test: improve diagnostics for some failures + + These fail with system PCRE 8.35, but the improved diagnostics are + generic. + + Reviewed-by: Christian Persch + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=733325 + + glib/tests/regex.c | 65 + +++++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 62 insertions(+), 3 deletions(-) + +commit 073a81d1da69689c3228846c81e93de2a4931ff4 +Author: Philip Withnall +AuthorDate: Mon Jun 30 15:57:28 2014 +0100 +Commit: Philip Withnall +CommitDate: Mon Apr 27 12:35:54 2015 +0100 + + gsignal: Mark the return value of g_signal_emitv() as (inout) + (optional) + + https://bugzilla.gnome.org/show_bug.cgi?id=719966 + + gobject/gsignal.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit ee742ec69cc543962917e073b3ec8ed19d296a10 +Author: Marek Černocký +AuthorDate: Sat Apr 25 12:41:09 2015 +0200 +Commit: Marek Černocký +CommitDate: Sat Apr 25 12:41:09 2015 +0200 + + Updated Czech translation + + po/cs.po | 404 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 208 insertions(+), 196 deletions(-) + +commit 0c97cb5fa21f66e6552fa15d3577cd4edb0bc574 +Author: Sveinn í Felli +AuthorDate: Fri Apr 24 14:36:02 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Apr 24 14:36:02 2015 +0000 + + Updated Icelandic translation + + po/is.po | 5561 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 3144 insertions(+), 2417 deletions(-) + +commit 10b5a8befc16bdefdbfb8d1fc10df11d53acb6ef +Author: Chun-wei Fan +AuthorDate: Wed May 14 16:02:35 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Apr 22 18:56:50 2015 +0800 + + Fix the thumbnail-verification Test + + The third parameter of the thumnail_verify() function had been + updated to + const GLocalFileStat, so update the thumbnail-verification test + likewise + so that the test works properly on all supported platforms. + + https://bugzilla.gnome.org/show_bug.cgi?id=711547 + + gio/tests/thumbnail-verification.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2bb898c60f43330f8bdf277e1931228031fe49b4 +Author: Ryan Lortie +AuthorDate: Thu Apr 2 17:17:35 2015 -0400 +Commit: Ryan Lortie +CommitDate: Wed Apr 22 10:52:10 2015 +0100 + + app info: tweak default application algorithm + + Always run the full algorithm for a given mime type before considering + fallback types. + + This includes considering installed applications capable of handling a + particular mimetype, even if such an app is not explicitly marked as + default, and there is a default app for a less-specific type. + + Specifically, this often helps with cases of installing apps that can + handle a particular subtype of text/plain. We want to take those apps + in preference to a generic text editor, even if that editor is + listed as + the default for text/plain and there is no default listed for the more + specific type. + + Because of the more holistic approach taken by the algorithm, it + is now + more complicated, but it also means that we can do more work while + holding the lock. In turn, that lets us avoid duplicating some + strings, + which is nice. + + https://bugzilla.gnome.org/show_bug.cgi?id=744282 + + gio/gdesktopappinfo.c | 103 + ++++++++++++++++++++++---------------------------- + 1 file changed, 45 insertions(+), 58 deletions(-) + +commit cf940b66bcea7835c2e01b9bfa051a2e826835c9 +Author: Chun-wei Fan +AuthorDate: Wed Apr 22 16:36:13 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Apr 22 16:36:13 2015 +0800 + + build/Makefile-newvs.am: Fix %.vcxproj Rule + + The if-else statement added in commit 9bc3ae9 was missing a '\' + after the + 'else', causing 'make dist/distcheck' to break with "unexpected + end-of-file" errors. + + Fix this-didn't notice this when reviewing that patch. My fault. :| + + build/Makefile-newvs.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bc01109618009ad748abdc58bdc0c64891b84db0 +Author: Philip Withnall +AuthorDate: Tue Apr 21 23:57:17 2015 +0100 +Commit: Philip Withnall +CommitDate: Wed Apr 22 00:02:06 2015 +0100 + + gdbusmessage: Fix a minor memory leak on an error path + + If g_dbus_message_to_blob() fails at all, it will leak its + mbuf. Spotted + by running the gdbus-serialization test under Valgrind — so there + is a + justification for leak-free tests after all! + + gio/gdbusmessage.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 1b3dbec0658695deee02b35b7d9a3fce981ce772 +Author: Philip Withnall +AuthorDate: Tue Apr 21 23:56:10 2015 +0100 +Commit: Philip Withnall +CommitDate: Wed Apr 22 00:02:06 2015 +0100 + + gvariant-parser: Clarify g_variant_parse() returns a non-floating ref + + Unlike, say, g_variant_new(), which returns a floating reference. + g_variant_parse() returns a non-floating one, so must always have + g_variant_unref() called on the result. + + glib/gvariant-parser.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit c62f7a7d688cc7c6d4f88e45cddd74aac5dc4582 +Author: Philip Withnall +AuthorDate: Tue Apr 21 23:55:49 2015 +0100 +Commit: Philip Withnall +CommitDate: Tue Apr 21 23:55:49 2015 +0100 + + tests: Fix various minor memory leaks in gdbus-serialization + + gio/tests/gdbus-serialization.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 41acf970accd25c4446e8f28c0b817e332722c23 +Author: Marc-André Lureau +AuthorDate: Fri Mar 6 15:22:33 2015 +0100 +Commit: Marc-André Lureau +CommitDate: Tue Apr 21 22:54:34 2015 +0200 + + gdbus: fix out-of-bound array access + + In path_rule_matches(), the given paths may be of 0-length. Do not + access memory before the array in those case. This is for example + triggered by: + + test_match_rule (con, G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_PATH, "/", + "", FALSE); + + in test_connection_signal_match_rules(). + + This bug was found thanks to GCC AddressSanitizer. + + https://bugzilla.gnome.org/show_bug.cgi?id=745745 + + gio/gdbusconnection.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 9bc3ae920731448575741bf0a799a32c9c1a6668 +Author: Simon McVittie +AuthorDate: Mon Apr 20 14:54:28 2015 +0100 +Commit: Simon McVittie +CommitDate: Mon Apr 20 15:55:29 2015 +0100 + + Makefile-newvs: some .vcxproj.filters files are in builddir, some + in srcdir + + Without this change, out-of-tree distcheck doesn't get very far. + + Similarly, allow *.vcxproj, *.props to be in either the builddir or + the srcdir. + + Finally, since I'm touching these lines anyway, eliminate some + useless uses of cat: "cat x | sed 's/foo/bar/' > y" is + equivalent to "sed 's/foo/bar/' < x > y". + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=748176 + Reviewed-by: Chun-wei Fan + + build/Makefile-newvs.am | 20 +++++++++++++++----- + 1 file changed, 15 insertions(+), 5 deletions(-) + +commit 812ce28d5ccf626bb6594749f4d87951ed5cfc73 +Author: Arun Raghavan +AuthorDate: Fri Apr 17 10:00:50 2015 +0530 +Commit: Dan Winship +CommitDate: Mon Apr 20 09:41:28 2015 -0400 + + gsocketconnection: Fix copy-pasto in documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=748019 + + gio/gsocketconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 92331eb10a6ad05d3b811546539a82470a36a466 +Author: Simon McVittie +AuthorDate: Mon Apr 20 12:15:42 2015 +0100 +Commit: Simon McVittie +CommitDate: Mon Apr 20 14:19:52 2015 +0100 + + Distribute summary-xmllang-and-attrs.gschema.xml in tarballs + + This is needed for "make distcheck". + + Reviewed-by: Matthias Clasen + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=748177 + + gio/tests/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 68bb63e3eea4a52a4c3486804087ed60a6f28404 +Author: Chun-wei Fan +AuthorDate: Fri Apr 17 13:59:28 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Apr 17 19:17:13 2015 +0800 + + build/Makfile-newvs.am: Use Pattern Rules + + Make use of pattern rules when generating the Visual Studio 2012/2013 + Projects from the Visual Studio 2010 projects, which will help to + clean up + the file and also avoid problems when running items like 'make + -jN dist'. + + build/Makefile-newvs.am | 34 ++++++++++++---------------------- + 1 file changed, 12 insertions(+), 22 deletions(-) + +commit 6a2543444cf596023efd4d8f185088ecdbc0d507 +Author: Руслан Ижбулатов +AuthorDate: Mon Aug 4 12:39:08 2014 +0000 +Commit: Руслан Ижбулатов +CommitDate: Thu Apr 16 19:58:05 2015 +0000 + + W32: use 64-bit stat for localfile size calculation + + https://bugzilla.gnome.org/show_bug.cgi?id=728669 + + gio/glocalfile.c | 32 ++++++++++++++++++++++++++++++-- + 1 file changed, 30 insertions(+), 2 deletions(-) + +commit 46779a31224714ce28d0bea4b0575826bb27e772 +Author: Behdad Esfahbod +AuthorDate: Mon Apr 13 12:30:16 2015 -0700 +Commit: Behdad Esfahbod +CommitDate: Mon Apr 13 12:30:16 2015 -0700 + + Remove UTF-8 quotation marks + + https://bugzilla.gnome.org/show_bug.cgi?id=747772 + + glib/gmacros.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 21107959ab12da217151fe8d5f0eb65bd93fd5aa +Author: Matthias Clasen +AuthorDate: Wed Apr 8 22:07:26 2015 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 9 17:27:17 2015 -0400 + + gdbus: Validate the --dest argument + + Passing an nonsense string for the --dest argument can lead + to a segfault of gdbus. Thats not nice, so use our existing + validation function for bus names here. + + https://bugzilla.gnome.org/show_bug.cgi?id=747541 + + gio/gdbus-tool.c | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +commit 3fa0a051a47ca9e7ddcaf56cf842dc133fceede9 +Author: Ryan Lortie +AuthorDate: Wed Apr 8 22:11:27 2015 -0400 +Commit: Ryan Lortie +CommitDate: Wed Apr 8 22:35:35 2015 -0400 + + gsettings: add test for repeated errors + + Make sure error handling on repeated and is + being done properly, not resulting in glib-compile-schemas throwing a + critical. + + https://bugzilla.gnome.org/show_bug.cgi?id=747542 + + gio/tests/gschema-compile.c | 3 +++ + .../schema-tests/summary-xmllang-and-attrs.gschema.xml | 13 + +++++++++++++ + 2 files changed, 16 insertions(+) + +commit 7f4fdb59aa6963a066e251063dc6b7cfb766fdfe +Author: Ryan Lortie +AuthorDate: Wed Apr 8 22:08:13 2015 -0400 +Commit: Ryan Lortie +CommitDate: Wed Apr 8 22:35:35 2015 -0400 + + gsettings: fix schema compiler error handling + + Fix a couple of issues in error handling in glib-compile-schemas. + + The first problem is that, in case of repeated or + tags we were still allocating a GString which was never + being freed (due to the throwing of the error resulting in immediate + termination of the parse). + + The second problem is that if the repeated tag also had + attributes, we would attempt to set the GError twice. + + https://bugzilla.gnome.org/show_bug.cgi?id=747542 + + gio/glib-compile-schemas.c | 34 ++++++++++++++++++++-------------- + 1 file changed, 20 insertions(+), 14 deletions(-) + +commit 2b8f131599842d7d6249815412a261df6fa65d15 +Author: Ryan Lortie +AuthorDate: Wed Apr 8 21:55:58 2015 -0400 +Commit: Ryan Lortie +CommitDate: Wed Apr 8 22:35:35 2015 -0400 + + gsettings: stay compatible with installed schemas + + Bug 747209 introduced an error when multiple or + + tags are found for a single key in a GSettings schema. This check + should have been present from the start, but it was left out + because the + schema compiler doesn't include these items in the cache file. Even + still -- part of the schema compiler's job is validation, and + it should + be enforcing proper syntax here. + + Repeated and tags are a semi-common problem + when + intltool has been misconfigured in the build system of a package, but + it's possible to imagine mistakes being made by hand as well. + + The idea is that these problems would be caught during the build of a + package and maintainers would be forced to fix their build systems. + + An unintended side-effect of this change, however, is that the schema + compiler started ignoring already-installed schemas that contained + these + problems, when rebuilding the cache. This means that the installation + of _any_ application would cause the regeneration of the entire cache, + with these already-installed applications being excluded. Without the + schema in the cache, the application would crash on next startup. + + The validation check in the gsettings m4 macro passes --strict to the + compiler, which is not used when rebuilding the cache after + installation. Pass this flag down into the parser and only throw the + error in case --strict was given. This will result in the (desired) + build failure without also causing already-installed apps to stop + functioning. + + This means that we will not get even a warning about the invalid + schema + file in the already-installed case, but that's fine. There is + no sense + spamming the user with these messages when they are already quite + fatal + for the developer at build time. + + https://bugzilla.gnome.org/show_bug.cgi?id=747472 + + gio/glib-compile-schemas.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 89d46d1bdc49755ff99982fb124ec081a2297c12 +Author: Matthias Clasen +AuthorDate: Wed Apr 8 06:38:16 2015 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 8 06:38:16 2015 -0400 + + docs: Document the --strict option of glib-compile-schemas + + Curiously, this option has managed to remain undocumented for + 5 years. + + docs/reference/gio/glib-compile-schemas.xml | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit cc287a21cf15350c6edcb029ee83cbf20259c48a +Author: Matthias Clasen +AuthorDate: Tue Apr 7 16:20:00 2015 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 7 16:20:00 2015 -0400 + + Mention the glib-compile-schemas change in NEWS + + NEWS | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 495d864e438472a1c1dce1db79d1ae18a584687d +Author: Ross Lagerwall +AuthorDate: Tue Apr 7 18:22:58 2015 +0100 +Commit: Ross Lagerwall +CommitDate: Tue Apr 7 18:23:39 2015 +0100 + + docs: Fix documentation for 95d300eac58e + + docs/reference/gio/gio-sections.txt | 1 + + gio/gtlsclientconnection.c | 2 +- + gio/gtlsclientconnection.h | 1 + + 3 files changed, 3 insertions(+), 1 deletion(-) + +commit b470b12c49750777e14990f24d98166d3aab9965 +Author: Christophe Fergeau +AuthorDate: Sat Feb 21 13:34:36 2015 +0100 +Commit: Christophe Fergeau +CommitDate: Tue Apr 7 10:41:47 2015 +0200 + + gatomic: Add missing new line in API doc comment + + This causes an overlong line, and a spurious '*' in the generated + documentation. + + https://bugzilla.gnome.org/show_bug.cgi?id=747363 + + glib/gatomic.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 7b8f51750391bf57278c080e366bf0e41235b4f3 +Author: Chun-wei Fan +AuthorDate: Tue Apr 7 15:02:22 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Apr 7 15:02:22 2015 +0800 + + gio/gdbusproxy.c: Include gasyncresult.h + + Commit f10b655 removed the inclusion of gasyncresult.h from + gdbusproxy.c, + but gdbusproxy.c uses g_async_result_get_source_object(), which + caused a + build warning/error. Fix that. + + gio/gdbusproxy.c | 1 + + 1 file changed, 1 insertion(+) + +commit 7e8d4145af745e6ac51337ffcc65872791e7299f +Author: Dan Winship +AuthorDate: Mon Apr 6 10:09:04 2015 -0400 +Commit: Dan Winship +CommitDate: Mon Apr 6 12:22:07 2015 -0400 + + gdbus: fix deadlock on message cancel/timeout + + The gdbus GTask port introduced a deadlock because some code had been + using g_simple_async_result_complete_in_idle() to ensure that the + callback didn't run until after a mutex was unlocked, but in the gtask + version, the callback was being run immediately. Fix it to drop the + mutex before calling g_task_return*(). Also, tweak + tests/gdbus-connection to test this. + + https://bugzilla.gnome.org/show_bug.cgi?id=747349 + + gio/gdbusconnection.c | 58 + +++++++++++++++++++++----------------------- + gio/tests/gdbus-connection.c | 15 ++++++++++++ + 2 files changed, 43 insertions(+), 30 deletions(-) + +commit 95d300eac58e6e6a7d57ce50896a7c656ebe78cf +Author: Ross Lagerwall +AuthorDate: Thu Feb 26 22:24:36 2015 +0000 +Commit: Ross Lagerwall +CommitDate: Mon Apr 6 14:54:12 2015 +0100 + + tls: Add support for copying session data + + Add support for copying session data between client connections. + This is needed for implementing FTP over SSL. Most servers use + a separate + session for each control connection and enforce sharing of each + control + connection's session between the related data connection. + + Copying session data between two connections is needed for two + reasons: + 1) The data connection runs on a separate port and so has a different + server_identity which means it would not normally share the session + with + the control connection using the session caching currently + implemented. + 2) It is typical to have multiple control connections, each of which + uses a different session with the same server_identity, so only one of + these sessions gets stored in the cache. If a data connection + is opened, + (ignoring the port issue) it may try and reuse the wrong control + connection's session, and fail. + + This operation is conceptually the same as OpenSSL's + SSL_copy_session_id + operation. + + https://bugzilla.gnome.org/show_bug.cgi?id=745255 + + gio/gtlsclientconnection.c | 26 ++++++++++++++++++++++++++ + gio/gtlsclientconnection.h | 6 ++++++ + 2 files changed, 32 insertions(+) + +commit eac975c68225e3c7d5ae21dbf382d6e5b6b02824 +Author: Руслан Ижбулатов +AuthorDate: Mon Apr 21 14:52:35 2014 +0000 +Commit: Руслан Ижбулатов +CommitDate: Sun Apr 5 11:09:22 2015 +0000 + + Make sure GStatBuf is typedefed correctly + + https://bugzilla.gnome.org/show_bug.cgi?id=728663 + + glib/gstdio.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b64e2956f6b9ae74f1fdcecb129bff7738817509 +Author: Paolo Borelli +AuthorDate: Thu Oct 9 15:54:43 2014 +0200 +Commit: Paolo Borelli +CommitDate: Sat Apr 4 21:26:15 2015 +0200 + + Add an event signal to GSocketListener + + This allows the caller to know when a socket has been bound so that + it can for instance set the SO_SENDBUF and SO_RECVBUF socket options + before listen is called + + https://bugzilla.gnome.org/show_bug.cgi?id=738207 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gioenums.h | 23 ++++++ + gio/gsocketlistener.c | 138 + ++++++++++++++++++++++++++++++++---- + gio/gsocketlistener.h | 5 +- + gio/tests/socket-listener.c | 65 +++++++++++++++++ + 5 files changed, 216 insertions(+), 16 deletions(-) + +commit ec9c248d7d5cf6c60e212c7ba4b9e8a0a4f76452 +Author: Dan Winship +AuthorDate: Tue Apr 17 10:38:37 2012 -0400 +Commit: Dan Winship +CommitDate: Sat Apr 4 10:16:52 2015 -0400 + + gio: deprecate GSimpleAsyncResult + + GTask has been around for a long time now, everything in GLib is using + it, and the run-in-thread deadlock problems should be fixed now. + + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + gio/gasyncinitable.c | 2 ++ + gio/gasyncresult.c | 2 ++ + gio/gsimpleasyncresult.c | 54 + +++++++++++++++++++++++++++++++++++++++++ + gio/gsimpleasyncresult.h | 50 + +++++++++++++++++++------------------- + gio/tests/simple-async-result.c | 4 +++ + 5 files changed, 87 insertions(+), 25 deletions(-) + +commit f10b6550ff2ce55d06b92d6dc3e443fc007b2f7a +Author: Dan Winship +AuthorDate: Thu Aug 2 15:46:32 2012 -0400 +Commit: Dan Winship +CommitDate: Sat Apr 4 10:16:45 2015 -0400 + + gio: (belatedly) port gdbus from GSimpleAsyncResult to GTask + + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + gio/gdbusaddress.c | 77 ++++----- + gio/gdbusconnection.c | 431 + ++++++++++++++++++-------------------------------- + gio/gdbusprivate.c | 197 +++++++++-------------- + gio/gdbusprivate.h | 3 +- + gio/gdbusproxy.c | 266 +++++++++++++------------------ + 5 files changed, 366 insertions(+), 608 deletions(-) + +commit e2655cd455db5ce3c768693127d983086ac1345c +Author: Dan Winship +AuthorDate: Sat Apr 4 10:00:39 2015 -0400 +Commit: Dan Winship +CommitDate: Sat Apr 4 10:00:39 2015 -0400 + + tests: clean up / ignore some more generated files + + gio/tests/.gitignore | 2 ++ + glib/tests/Makefile.am | 2 +- + glib/tests/bookmarkfile.c | 1 + + glib/tests/fileutils.c | 1 + + glib/tests/keyfile.c | 1 + + 5 files changed, 6 insertions(+), 1 deletion(-) + +commit 86866a2a6d4b7aa289f4f782dddac156869400bf +Author: Dan Winship +AuthorDate: Mon Mar 9 16:33:16 2015 -0400 +Commit: Dan Winship +CommitDate: Sat Apr 4 09:27:50 2015 -0400 + + gtask: remove hardcoded GTask thread-pool size + + GTask used a 10-thread thread pool for g_task_run_in_thread() / + g_task_run_in_thread_sync(), but this ran into problems when task + threads blocked waiting for another g_task_run_in_thread_sync() + operation to complete. Previously there was a workaround for this, by + bumping up the thread limit when that case was detected, but deadlocks + could still happen if there were non-GTask threads involved. (Eg, task + A sends a message to thread X and waits for a response, but thread X + needs to complete task B in a thread before returning the response to + task A.) + + So, allow GTask's thread pool to be expanded dynamically, by watching + it from the glib worker thread, and growing it (at an + exponentially-decreasing rate) if too much time passes without any + tasks completing. This should solve the deadlocking problems without + causing sudden breakage in apps that assume they can queue huge + numbers of tasks at once without consequences. + + https://bugzilla.gnome.org/show_bug.cgi?id=687223 + + README.in | 18 ++++++++ + gio/gtask.c | 138 + +++++++++++++++++++++++++++++++++++++++++-------------- + gio/tests/task.c | 91 ++++++++++++++++++++++++++++++++++++ + 3 files changed, 212 insertions(+), 35 deletions(-) + +commit b2734d762f9b33c60575e835bbf9ef190315c79a +Author: Matthias Clasen +AuthorDate: Wed Apr 1 18:55:54 2015 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 1 18:55:54 2015 -0400 + + glib-compile-schema: Don't accept duplicate docs + + This schema compiler was completely ignoring and + tags. Unfortunately, there are modules out there + who merge translations for these back in, with xml:lang. And + this is giving dconf-editor a hard time. Since this is not + how translations of schemas are meant to be done, just + reject such schema files. + + Also add tests exercising the new error handling. + + https://bugzilla.gnome.org/show_bug.cgi?id=747209 + + gio/glib-compile-schemas.c | 27 + ++++++++++++++++++++-- + gio/tests/Makefile.am | 2 ++ + gio/tests/gschema-compile.c | 2 ++ + .../schema-tests/description-xmllang.gschema.xml | 13 +++++++++++ + gio/tests/schema-tests/summary-xmllang.gschema.xml | 13 +++++++++++ + 5 files changed, 55 insertions(+), 2 deletions(-) + +commit 6ba363b6196d06799204655344f8e26b332b7970 +Author: Stas Solovey +AuthorDate: Mon Mar 30 21:45:26 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Mon Mar 30 21:45:26 2015 +0000 + + Updated Russian translation + + po/ru.po | 187 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 88 insertions(+), 99 deletions(-) + +commit 1f1fa69375f6ed2c8f863aa9a3de38e3be49fb27 +Author: alex94puchades +AuthorDate: Wed Mar 25 15:26:07 2015 +0100 +Commit: Matthias Clasen +CommitDate: Sun Mar 29 15:26:19 2015 -0400 + + Make glib-compile-resources a little smarter + + glib-compile-resources was guessing a filename ending + in .c when generating sources, but did not do the same + for headers. Fix it so it generates a .h file when + guessing the filename for headers. + + https://bugzilla.gnome.org/show_bug.cgi?id=746753 + + gio/glib-compile-resources.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 61a105b883c39b188c0eba5fd211adada2677c4d +Author: Matthias Clasen +AuthorDate: Sun Mar 29 11:41:00 2015 -0400 +Commit: Matthias Clasen +CommitDate: Sun Mar 29 11:43:52 2015 -0400 + + Clarify a confusing string + + Relative was repeated twice here, when clearly what was meant is + relative or absolute. Pointed out in + https://bugzilla.gnome.org/show_bug.cgi?id=726447 + + gio/gapplication-tool.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fd40b5942dc94effbd424302ccc9390e64005d5f +Author: Ryan Lortie +AuthorDate: Thu Mar 26 14:49:26 2015 -0400 +Commit: Ryan Lortie +CommitDate: Thu Mar 26 14:56:25 2015 -0400 + + inotify: fix move event matching accounting + + The hash table stores the list of unmatched IN_MOVE_FROM events, + but we + were removing entries from it when popping IN_MOVE_TO events. + + Fix that up to correct a crash in nautilus due to the assertion + failure + below. + + https://bugzilla.gnome.org/show_bug.cgi?id=746749 + + gio/inotify/inotify-kernel.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 706c4d32adfbca25cdb0663077aa0d82477fb356 +Author: Ryan Lortie +AuthorDate: Wed Mar 25 23:08:38 2015 -0400 +Commit: Ryan Lortie +CommitDate: Wed Mar 25 23:08:38 2015 -0400 + + file monitors: fix a typo + + Due to a typo, a rename reported via a pair of delete/create events + (due + to the watcher not giving the flag for moves to be paired) was + accidentally reported as being created with the old name instead + of the + new name. + + Fix that. + + gio/glocalfilemonitor.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 4a292721bcf2943bfc05c6a1c859992f28e3efec +Author: Ryan Lortie +AuthorDate: Wed Mar 25 09:29:49 2015 -0400 +Commit: Ryan Lortie +CommitDate: Wed Mar 25 09:37:01 2015 -0400 + + GListModel: roll back use of type redefinition + + We declare the typedefs for GListModel and GListStore in giotypes.h, + as + a matter of convention. This is not actually required, since the + typedef is emitted as part of the G_DECLARE_* macros. + + The giotypes.h approach is only used to avoid cyclic dependencies + between headers, which is not a problem in this case. + + Type redefinition is a C11 feature, and although it was around in some + compilers before then, gcc 4.2.1 (from 2007) is apparently still + in wide + use, being the default compiler for OpenBSD. + + Eventually, we will probably hit a case where we actually need to + redefine a type, but since we're not there yet, let's back off a bit. + + gio/giotypes.h | 2 -- + 1 file changed, 2 deletions(-) + +commit 3f36407d4a27e17f766a41fb7b9e7a0fcd75c85b +Author: Petr Kovar +AuthorDate: Wed Mar 25 13:01:47 2015 +0100 +Commit: Petr Kovar +CommitDate: Wed Mar 25 13:02:25 2015 +0100 + + Update Czech translation + + po/cs.po | 184 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 104 insertions(+), 80 deletions(-) + +commit 69fd1fd1d0f110800ec713bac5dafb418ceecc1c +Author: Ryan Lortie +AuthorDate: Sun Nov 9 11:22:42 2014 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 23 10:54:25 2015 -0400 + + GClosure: add valgrind hints + + GClosure has been in the "allocate area before the pointer" game since + before we did this with GTypeInstance. At the time that this was done + for GClosure, we didn't have valgrind.h in GLib. + + Now that we do, we should add similar valgrind hints as the ones + we did + for GTypeInstance. This substantially reduces reports of "possibly + lost" on pretty much any program that makes use of signals. + + https://bugzilla.gnome.org/show_bug.cgi?id=739850 + + gobject/gclosure.c | 43 ++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 38 insertions(+), 5 deletions(-) + +commit b0e330b68c161adfc5cffededd6703b6450562d5 +Author: Matthias Clasen +AuthorDate: Sun Mar 22 15:05:13 2015 -0400 +Commit: Matthias Clasen +CommitDate: Sun Mar 22 15:05:13 2015 -0400 + + Fix the build + + The world would be a better place if gcc had __has_feature(), too. + + glib/gmacros.h | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 42870201f8cd304d9e38b1b99d63a407dc9ae107 +Author: Matthias Clasen +AuthorDate: Sun Mar 22 14:18:36 2015 -0400 +Commit: Matthias Clasen +CommitDate: Sun Mar 22 14:20:00 2015 -0400 + + Account for clangs lack of __alloc_size__ + + clang's emulation of gcc 4.3 is not perfect, despite its + pretending that it is. + + https://bugzilla.gnome.org/show_bug.cgi?id=745821 + + glib/gmacros.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 0e0b777cfb8b645e9cc06e899a446c7d1d1d51a3 +Author: Muhammet Kara +AuthorDate: Sun Mar 22 00:17:31 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Mar 22 00:17:31 2015 +0000 + + Updated Turkish translation + + po/tr.po | 1526 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 711 insertions(+), 815 deletions(-) + +commit 1b22df78221c829f89d0955eac970d73790dae4a +Author: Philip Withnall +AuthorDate: Thu May 15 11:44:18 2014 +0100 +Commit: Dan Winship +CommitDate: Sat Mar 21 13:37:17 2015 -0400 + + gsocket: Document FD ownership with g_socket_new_from_fd() + + https://bugzilla.gnome.org/show_bug.cgi?id=730188 + + gio/gsocket.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit d4e7b4cf256380008d7d1b930b4c929b462700a4 +Author: Ask H. Larsen +AuthorDate: Sat Mar 21 16:24:42 2015 +0100 +Commit: Kenneth Nielsen +CommitDate: Sat Mar 21 16:24:42 2015 +0100 + + Updated Danish translation + + po/da.po | 566 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 296 insertions(+), 270 deletions(-) + +commit ba46f1a0830531d4d6c55ed7a23420f054aa61f3 +Author: Christian Kirbach +AuthorDate: Sat Mar 21 15:22:09 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Sat Mar 21 15:22:09 2015 +0000 + + Updated German translation + + po/de.po | 45 +++++++++++++++++++++------------------------ + 1 file changed, 21 insertions(+), 24 deletions(-) + +commit fdb6974d3d443553136fc406781911d5eb327b50 +Author: Inaki Larranaga Murgoitio +AuthorDate: Sat Mar 21 16:07:05 2015 +0100 +Commit: dooteo +CommitDate: Sat Mar 21 16:07:05 2015 +0100 + + Updated Basque language + + po/eu.po | 293 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 159 insertions(+), 134 deletions(-) + +commit 15c5e643c64b5f428fdbb515625dd6e939dcd40b +Author: Dan Winship +AuthorDate: Fri Mar 6 13:43:37 2015 -0500 +Commit: Dan Winship +CommitDate: Sat Mar 21 09:50:29 2015 -0400 + + gversionmacros: add 2.46 version macros + + docs/reference/glib/glib-sections.txt | 4 ++++ + glib/gversionmacros.h | 44 + +++++++++++++++++++++++++++-------- + 2 files changed, 38 insertions(+), 10 deletions(-) + +commit 7c70377abf045ed93e18227e424b473c087f12df +Author: Ryan Lortie +AuthorDate: Fri Dec 19 17:05:59 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 20 13:32:45 2015 -0400 + + gmain: Save errno when handling unix signals + + Our signal handler calls write() on a pipe or an eventfd in order to + deliver the notification. It's unlikely, but this could fail, setting + errno. We even check the case that it fails with EINTR. + + If it does set errno, then it has potentially blown away the value or + errno that the preempted code cared about (ie: if the signal arrived + shortly after a system call but before errno was checked). + + Wrap the handler with code to save errno. + + https://bugzilla.gnome.org/show_bug.cgi?id=741791 + + glib/gmain.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 671292bbb284735aead726f55fbd8c99f9793959 +Author: Chun-wei Fan +AuthorDate: Thu Mar 12 19:20:30 2015 +0800 +Commit: Ryan Lortie +CommitDate: Fri Mar 20 12:01:35 2015 -0400 + + Win32: Port Directory Monitoring to New GLocalFileMonitor + + This WIP patch moves the Windows Directory Monitoring code to the new + GLocalFileMonitor mechanism, and adds file monitoring in the process. + + Progress from previous patch: + -File renames are now properly supported, but + G_FILE_MONITOR_EVENT_MOVED_IN + and G_FILE_MONITOR_EVENT_MOVED_OUT needs to be investigated, as + ReadDirectoryChangesW() seems to send FILE_ACTION_REMOVED when a + file is + moved out of a directory. + -Events are handled for both the long and short (8.3) variants of the + filenames, and files monitored will report changes when it is changed + via its short or long filenames. + + Things to be done: + -Perhaps find out about attribute changes in files in a monitored + directory; if a file is monitored, attribute changes are correctly + handled. + -Investigate on G_FILE_MONITOR_EVENT_MOVED_OUT, + G_FILE_MONITOR_EVENT_MOVED_IN, G_FILE_MONITOR_EVENT_PRE_UNMOUNT, + G_FILE_MONITOR_EVENT_UNMOUNTED. + -Investigate on the "boredom" algoritm, and see how we can do it on + Windows. + + https://bugzilla.gnome.org/show_bug.cgi?id=730116 + + gio/Makefile.am | 5 +- + gio/win32/Makefile.am | 6 +- + gio/win32/gwin32directorymonitor.c | 244 --------------------- + gio/win32/gwin32directorymonitor.h | 60 ------ + gio/win32/gwin32filemonitor.c | 105 +++++++++ + gio/win32/gwin32filemonitor.h | 62 ++++++ + gio/win32/gwin32fsmonitorutils.c | 422 + +++++++++++++++++++++++++++++++++++++ + gio/win32/gwin32fsmonitorutils.h | 76 +++++++ + 8 files changed, 672 insertions(+), 308 deletions(-) + +commit d682df186e9cca2b8db0e921450a4db31cf0c467 +Author: Ryan Lortie +AuthorDate: Sat Jan 17 11:11:22 2015 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 20 12:01:35 2015 -0400 + + file monitors: rewrite FAM file monitor + + Completely rewrite the FAM file monitor. Major changes: + + - now runs in the worker thread + + - dispatches events in a threadsafe way via GFileMonitorSource + + - uses unix fd source instead of a GIOChannel + + - is now simple enough to fit into one short file + + gio/fam/Makefile.am | 10 +- + gio/fam/fam-helper.c | 274 + ----------------------------------------- + gio/fam/fam-helper.h | 36 ------ + gio/fam/fam-module.c | 54 -------- + gio/fam/gfamdirectorymonitor.c | 155 ----------------------- + gio/fam/gfamdirectorymonitor.h | 52 -------- + gio/fam/gfamfilemonitor.c | 258 + +++++++++++++++++++++++++------------- + gio/fam/gfamfilemonitor.h | 53 -------- + 8 files changed, 172 insertions(+), 720 deletions(-) + +commit 21ab660cf8d2622917eceaa24fbd07d81ea949af +Author: Ryan Lortie +AuthorDate: Fri Jan 16 20:25:38 2015 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 20 12:01:35 2015 -0400 + + fen: remove Solaris file monitor support + + This code is unmaintained and we have no way to port it to the + new file + monitoring API. + + configure.ac | 17 -- + gio/Makefile.am | 7 - + gio/fen/Makefile.am | 27 -- + gio/fen/fen-dump.c | 74 ----- + gio/fen/fen-dump.h | 27 -- + gio/fen/fen-helper.c | 193 ------------- + gio/fen/fen-helper.h | 31 -- + gio/fen/fen-kernel.c | 550 ----------------------------------- + gio/fen/fen-kernel.h | 41 --- + gio/fen/fen-node.c | 638 + ----------------------------------------- + gio/fen/fen-node.h | 102 ------- + gio/fen/gfendirectorymonitor.c | 140 --------- + gio/fen/gfendirectorymonitor.h | 56 ---- + gio/fen/gfenfilemonitor.c | 140 --------- + gio/fen/gfenfilemonitor.h | 57 ---- + 15 files changed, 2100 deletions(-) + +commit 641b98ce6b7f58d32001002881f049be4680429b +Author: Ryan Lortie +AuthorDate: Fri Jan 16 18:51:34 2015 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 20 12:01:35 2015 -0400 + + kqueue backend: port to new GLocalFileMonitor API + + This is the bare minimal effort. This seems not to crash immediately, + but it definitely needs some better testing. + + The backend is not in good shape. It could use some serious work. + + gio/kqueue/Makefile.am | 2 - + gio/kqueue/gkqueuedirectorymonitor.c | 205 + ----------------------------------- + gio/kqueue/gkqueuedirectorymonitor.h | 49 --------- + gio/kqueue/gkqueuefilemonitor.c | 54 ++++----- + gio/kqueue/gkqueuefilemonitor.h | 4 +- + gio/kqueue/kqueue-helper.c | 138 +++++------------------ + gio/kqueue/kqueue-helper.h | 3 +- + gio/kqueue/kqueue-utils.c | 32 ------ + gio/kqueue/kqueue-utils.h | 4 - + 9 files changed, 49 insertions(+), 442 deletions(-) + +commit 19522424b15ff4b0e2be6dc453183e836953d20c +Author: Ryan Lortie +AuthorDate: Fri Jan 16 16:41:21 2015 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 20 12:01:35 2015 -0400 + + GPollFileMonitor: use thread default main context + + Attach the GPollFileMonitor to the thread default main context instead + of the global default. + + This matches the behaviour of the other file monitors. + + gio/gpollfilemonitor.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +commit c5d5e2916bc2ce81e4882167f1439570f0ac178e +Author: Ryan Lortie +AuthorDate: Thu Jan 15 16:38:22 2015 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 20 12:01:35 2015 -0400 + + inotify: implement "boredom" algorithm + + Use the "interesting" value from g_file_monitor_source_handle_event() + to + decide if we're currently being flooded by a stream of boring events. + + The main case here is when one or more files is being written to + and the + change events are all being rate-limited in the GFileMonitor + frontends. + + In that case, we become "bored" with the event stream and add + a backoff + timeout. In the case that it is exactly one large file being written + (which is the common case) then leaving the event in the queue + also lets + the kernel perform merging on it, so when we wake up, we will only see + the one event. Even in the case that the kernel is unable to perform + merging, the context switch overhead will be vastly reduced. + + In testing, this cuts down on the number of wake ups during a + large file + copy, by a couple orders of magnitude (ie: less than 1% of the + number of + wake ups). + + gio/inotify/inotify-helper.c | 24 ++-- + gio/inotify/inotify-kernel.c | 260 + ++++++++++++++++++++++++++++++++++--------- + gio/inotify/inotify-kernel.h | 2 +- + gio/inotify/inotify-path.c | 29 +++-- + gio/inotify/inotify-path.h | 2 +- + 5 files changed, 241 insertions(+), 76 deletions(-) + +commit 9adf948a2b2215814bbc6b10e827349d05f2c883 +Author: Ryan Lortie +AuthorDate: Thu Jan 15 15:39:43 2015 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 20 12:01:34 2015 -0400 + + GFileMonitorSource: return "interesting" value + + Return an "interesting" boolean from the event handler function on + GFileMonitorSource. + + An event was "interesting" if it will result in a signal actually + being + dispatched to the user. It is "uninteresting" if it only hit an + already-dirty rate limiter. + + We will use this information to do some backing off in the backends + when + faced with a flood of uninteresting events. + + gio/glocalfilemonitor.c | 35 +++++++++++++++++++++++------------ + gio/glocalfilemonitor.h | 2 +- + 2 files changed, 24 insertions(+), 13 deletions(-) + +commit 3d2d4b8efe44af1da7206b10e4565e59dbdb5121 +Author: Ryan Lortie +AuthorDate: Thu Jan 15 11:08:35 2015 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 20 12:01:34 2015 -0400 + + inotify: send CHANGES_DONE when new files 'appear' + + We generally assume that an IN_CREATE event is the start of a + series of + events in which another process is doing this: + + fd = creat (...) -> IN_CREATE + write (fd, ..) -> IN_MODIFY + write (fd, ..) -> IN_MODIFY + close (fd) -> IN_CLOSE_WRITE + + and as such, we use the CHANGES_DONE_HINT event after CREATED in order + to show when this sequence of events has completed (ie: when we + receive + IN_CLOSE_WRITE when the user closes the file). + + Renaming a file into place is handled by IN_MOVED_FROM so we + don't have + to worry about that. + + There are many other cases, however, where a new file 'appears' in a + directory in its completed form already, and the kernel reports + IN_CREATE. Examples include mkdir, mknod, and the creation of + hardlinks. In these cases, there is no corresponding IN_CLOSE_WRITE + event and the CHANGES_DONE_HINT will have to be emitted by an + arbitrary + timeout. + + Try to detect some of these cases and report CHANGES_DONE_HINT + immediately. + + This is not perfect. There are some cases that will not be reliably + detected. An example is if the user makes a hardlink and then + immediately deletes the original (before we can stat the new file). + Another example is if the user creates a file with O_TMPFILE. In both + of these cases, CHANGES_DONE_HINT will still eventually be delivered + via + the timeout. + + gio/inotify/inotify-helper.c | 39 ++++++++++++++++++++++++++++++++++++++- + 1 file changed, 38 insertions(+), 1 deletion(-) + +commit 2737ab3201163631be152801a859b3874a667f10 +Author: Ryan Lortie +AuthorDate: Mon Jan 12 14:59:35 2015 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 20 11:59:47 2015 -0400 + + substantially rework file monitors + + Remove all event merging and dispatch logic from GFileMonitor. + The only + implementation of GFileMonitor outside of glib is in gvfs and + it already + does these things properly. + + Get rid of GLocalDirectoryMonitor. We will use a single class, + GLocalFileMonitor, for both directory and file monitoring. This will + prevent every single backend from having to create two objects + separately (eg: ginotifydirectorymonitor.c and ginotifyfilemonitor.c). + + Introduce GFileMonitorSource as a thread-safe cross-context dispatch + mechanism. Put it in GLocalFileMonitor. All backends will be + expected + to dispatch via the source and not touch the GFileMonitor object + at all + from the worker thread. + + Remove all construct properties from GLocalFileMonitor and remove the + "context" construct property from GFileMonitor. All backends must now + get the information about what file to monitor from the ->start() call + which is mandatory to implement. + + Remove the implementation of rate limiting in GFileMonitor and add an + implementation in GLocalFileMonitor. gvfs never did anything + with this + anyway, but if it wanted to, it would have to implement it for itself. + This was done in order to get the rate_limit field into the + GFileMonitorSource so that it could be safely accessed from the worker + thread. + + Expose g_local_file_is_remote() internally for NFS detection. + + With the "is_remote" functionality exposed, we can now move all + functions for creating local file monitors to a proper location in + glocalfilemonitor.c + + Port the inotify backend to adjust to the changes above. None of the + other backends are ported yet. Those will come in future commits. + + gio/Makefile.am | 2 - + gio/gdesktopappinfo.c | 14 +- + gio/gfilemonitor.c | 632 ++++-------------------- + gio/gioenums.h | 27 +- + gio/giomodule.c | 34 +- + gio/glocaldirectorymonitor.c | 245 ---------- + gio/glocaldirectorymonitor.h | 84 ---- + gio/glocalfile.c | 38 +- + gio/glocalfile.h | 2 + + gio/glocalfilemonitor.c | 861 + ++++++++++++++++++++++++++++++--- + gio/glocalfilemonitor.h | 58 ++- + gio/inotify/Makefile.am | 2 - + gio/inotify/ginotifydirectorymonitor.c | 2 +- + gio/inotify/ginotifyfilemonitor.c | 133 ++--- + gio/inotify/ginotifyfilemonitor.h | 4 +- + gio/inotify/inotify-helper.c | 149 ++---- + gio/inotify/inotify-kernel.c | 8 +- + gio/inotify/inotify-path.c | 97 +--- + gio/inotify/inotify-sub.c | 2 - + gio/inotify/inotify-sub.h | 1 - + po/POTFILES.in | 1 - + 21 files changed, 1081 insertions(+), 1315 deletions(-) + +commit 779c809a3d07fca6c1da4f87d4ce6cf7f2d95608 +Author: Ryan Lortie +AuthorDate: Thu Mar 5 21:28:29 2015 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 20 11:58:42 2015 -0400 + + inotify: rewrite inotify-kernel + + Remove the hardwired 1 second event queue logic from inotify-kernel + and + replace it with something vastly less complicated. + + Events are now reported as soon as is possible instead of after a + delay. + + We still must delay IN_MOVED_FROM events in order to look for the + matching IN_MOVED_TO events, and since we want to report events + in order + this means that events behind those events can also be delayed. We + limit ourselves, however: + + - no more than 100 events can be delayed at a time + + - no event can be delayed by more than 10ms + + https://bugzilla.gnome.org/show_bug.cgi?id=627285 + + gio/inotify/inotify-kernel.c | 659 + ++++++++++++------------------------------- + gio/inotify/inotify-kernel.h | 1 + + 2 files changed, 183 insertions(+), 477 deletions(-) + +commit fd8b45eb6785831d4a3749b31724de6eea74de1a +Author: Ryan Lortie +AuthorDate: Thu Mar 5 21:05:06 2015 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 20 11:58:42 2015 -0400 + + GLocalFile: add _new_from_dirname_and_basename + + Add a new internal constructor for GLocalFile (which itself is + private). + + This new constructor allows creating a GLocalFile from a dirname and a + basename, assuming that the dirname is already in canonical form + and the + basename is a regular basename. + + This will be used for creating GLocalFile instances from the file + monitoring code (for signal emissions). + + gio/glocalfile.c | 32 ++++++++++++++++++++++++++++++++ + gio/glocalfile.h | 3 +++ + 2 files changed, 35 insertions(+) + +commit 6a86390555c19f34c5ac4d2090f0c799c3b96479 +Author: Jiri Grönroos +AuthorDate: Fri Mar 20 17:43:30 2015 +0200 +Commit: Timo Jyrinki +CommitDate: Fri Mar 20 17:43:30 2015 +0200 + + Finnish translation update + + po/fi.po | 3455 + +++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 2188 insertions(+), 1267 deletions(-) + +commit ea512bf1e6219c99617da80e1367ad37ba1aefb8 +Author: Kjartan Maraas +AuthorDate: Thu Mar 19 21:16:10 2015 +0100 +Commit: Kjartan Maraas +CommitDate: Thu Mar 19 21:16:10 2015 +0100 + + Updated Norwegian bokmål translation. + + po/nb.po | 181 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 103 insertions(+), 78 deletions(-) + +commit 93c8cbcfcd9ffe13fe9dd761b660ac9e1ff04da8 +Author: Jasper St. Pierre +AuthorDate: Wed Mar 18 14:28:07 2015 -0700 +Commit: Jasper St. Pierre +CommitDate: Wed Mar 18 14:28:14 2015 -0700 + + Update .gitignore + + gio/tests/.gitignore | 1 + + glib/tests/.gitignore | 1 + + 2 files changed, 2 insertions(+) + +commit 0fee64032eec45a5f66218a2f608ad43dd085e2a +Author: Yosef Or Boczko +AuthorDate: Tue Mar 17 12:27:19 2015 +0200 +Commit: Yosef Or Boczko +CommitDate: Tue Mar 17 12:27:19 2015 +0200 + + Updated Hebrew translation + + po/he.po | 281 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 153 insertions(+), 128 deletions(-) + +commit f1f39e7b2afd3828dafb2ead8ae3ef8a04d7ae8f +Author: Ryan Lortie +AuthorDate: Mon Mar 16 15:22:03 2015 -0400 +Commit: Ryan Lortie +CommitDate: Mon Mar 16 15:22:03 2015 -0400 + + bump version (to GLib 2.45.0) + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 76f77fe8c971acf087abf8b969800289717ee89a +Author: Ryan Lortie +AuthorDate: Mon Mar 16 14:25:53 2015 -0400 +Commit: Ryan Lortie +CommitDate: Mon Mar 16 14:25:53 2015 -0400 + + GLib 2.43.92 + + NEWS | 57 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 58 insertions(+), 1 deletion(-) + +commit fdc7cd6dd371b1eb438c02ac910bb5a5283f91d3 +Author: Stas Solovey +AuthorDate: Mon Mar 16 10:01:52 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Mon Mar 16 10:01:52 2015 +0000 + + Updated Russian translation + + po/ru.po | 189 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 109 insertions(+), 80 deletions(-) + +commit e6de48e68053b92b88cb4f08d8b6b1072fb66b5a +Author: Matej Urbančič +AuthorDate: Sun Mar 15 14:31:13 2015 +0100 +Commit: Matej Urbančič +CommitDate: Sun Mar 15 14:31:13 2015 +0100 + + Updated Slovenian translation + + po/sl.po | 181 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 103 insertions(+), 78 deletions(-) + +commit e2d05dfe989f365495ec7b99089c7dcc507115fc +Author: Claude Paroz +AuthorDate: Sat Mar 14 09:34:57 2015 +0100 +Commit: Claude Paroz +CommitDate: Sat Mar 14 09:34:57 2015 +0100 + + Updated French translation + + po/fr.po | 170 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 98 insertions(+), 72 deletions(-) + +commit 7ed2928054f899f75e8debc095a498e4ca655f09 +Author: A S Alam +AuthorDate: Fri Mar 13 22:50:42 2015 -0500 +Commit: A S Alam +CommitDate: Fri Mar 13 22:50:42 2015 -0500 + + Translation pa updated for Gnome + + po/pa.po | 503 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 266 insertions(+), 237 deletions(-) + +commit 0de16c98f7606da0d6cb3700bb6eeac0e16ac4a4 +Author: Ryan Lortie +AuthorDate: Fri Mar 13 17:34:57 2015 -0400 +Commit: Ryan Lortie +CommitDate: Fri Mar 13 17:39:50 2015 -0400 + + ContextSpecificGroup: some fixups + + For all of the effort spent ensuring that this algorithm would be + correctly threadsafe, I messed up the order of operations within a + single thread when porting to the new approach. + + Fix that up. + + Also: fix some overzealous asserting in the testcases. Since shutdown + is now lazy, we can never surely say !is_running at any particular + point + in time. + + gio/gcontextspecificgroup.c | 7 +++---- + gio/tests/contexts.c | 5 ++--- + 2 files changed, 5 insertions(+), 7 deletions(-) + +commit 7a3c8e900aed6d04647efb2a32d2565558e04d19 +Author: Samir Ribic +AuthorDate: Fri Mar 13 20:57:49 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Mar 13 20:57:49 2015 +0000 + + Updated Bosnian translation + + po/bs.po | 6432 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 3600 insertions(+), 2832 deletions(-) + +commit 3a2c35850854ceaac372067b19415aa4368c646b +Author: Sebastian Rasmussen +AuthorDate: Fri Mar 13 17:16:00 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Mar 13 17:16:00 2015 +0000 + + Updated Swedish translation + + po/sv.po | 181 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 103 insertions(+), 78 deletions(-) + +commit c5c8bac69337f6a9e9d0311f5b9793cf6b15e41c +Author: Philip Withnall +AuthorDate: Fri Mar 13 09:10:01 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Mar 13 09:10:25 2015 +0000 + + goption: Mention type of G_OPTION_ARG_CALLBACK in documentation + + glib/goption.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 627a145e16abe92dc5fe94bff6a379a9a1379837 +Author: Tim-Philipp Müller +AuthorDate: Fri Dec 12 01:38:24 2014 +0000 +Commit: Ryan Lortie +CommitDate: Thu Mar 12 21:01:36 2015 -0400 + + threads: use FUTEX_WAIT_PRIVATE and FUTEX_WAKE_PRIVATE if possible + + This avoids some expensive code paths in the kernel, see + http://lwn.net/Articles/229668/ + + https://bugzilla.gnome.org/show_bug.cgi?id=741442 + + glib/gbitlock.c | 9 +++++++-- + glib/gthread-posix.c | 17 +++++++++++------ + 2 files changed, 18 insertions(+), 8 deletions(-) + +commit 6fffce2588b19e5c80915cc9f713fc51d6dd3879 +Author: Ryan Lortie +AuthorDate: Thu Mar 12 17:24:05 2015 -0400 +Commit: Ryan Lortie +CommitDate: Thu Mar 12 17:24:05 2015 -0400 + + docs: clean up a few glib issues + + Fix a few typical problems, and also stop wrapping the inline + definition + of g_steal_pointer in parens, since it is not necessary and it + confuses + gtk-doc. + + docs/reference/glib/glib-sections.txt | 3 +++ + glib/gmem.h | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) + +commit bf19b8e6c32aee318da237f8b9beb9278a10c3aa +Author: Ryan Lortie +AuthorDate: Thu Mar 12 17:01:00 2015 -0400 +Commit: Ryan Lortie +CommitDate: Thu Mar 12 17:01:00 2015 -0400 + + gio docs: remote errant colon from docstring + + This does not belong there. + + gio/gtlsclientconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d9de830b65224f6e8f1e1b9284bd049b86b56619 +Author: Ryan Lortie +AuthorDate: Thu Mar 12 16:53:18 2015 -0400 +Commit: Ryan Lortie +CommitDate: Thu Mar 12 16:55:22 2015 -0400 + + Convert remaining uses of 'Rename to:' + + This was replaced by (rename-to) in 2013 (see bug 676133). + + They're also causing gtk-doc trouble, so let's get rid of them. + + gio/gdbusinterface.c | 4 +--- + gio/gdbusnameowning.c | 8 ++------ + gio/gdbusnamewatching.c | 8 ++------ + gio/gsubprocess.c | 3 +-- + glib/giochannel.c | 3 +-- + glib/glib-unix.c | 3 +-- + glib/gmain.c | 12 ++++-------- + gobject/gbinding.c | 4 +--- + gobject/gobject.c | 3 +-- + gobject/gvaluearray.c | 3 +-- + 10 files changed, 15 insertions(+), 36 deletions(-) + +commit eff505ed3c36dd15706094cc4bef36b41924d01d +Author: Ryan Lortie +AuthorDate: Thu Mar 12 16:43:02 2015 -0400 +Commit: Ryan Lortie +CommitDate: Thu Mar 12 16:43:02 2015 -0400 + + docs: more cleanups for GIO + + docs/reference/gio/Makefile.am | 9 ++++++++- + docs/reference/gio/gio-sections.txt | 3 +-- + docs/reference/gio/gio.types | 1 + + gio/gdbusprivate.c | 2 +- + gio/gsubprocess.c | 2 +- + 5 files changed, 12 insertions(+), 5 deletions(-) + +commit 497b294510599f987433833ac15d25e8d7f8da12 +Author: Xavier Claessens +AuthorDate: Wed Feb 11 11:27:28 2015 -0500 +Commit: Ryan Lortie +CommitDate: Thu Mar 12 16:09:14 2015 -0400 + + Doc: Fix missing API from GOptionGroup boxing + + docs/reference/glib/glib-sections.txt | 2 ++ + docs/reference/gobject/gobject-sections.txt | 2 ++ + 2 files changed, 4 insertions(+) + +commit 15a4af545e409004e758903b1f522257e5454e13 +Author: Xavier Claessens +AuthorDate: Thu Feb 5 13:10:14 2015 -0500 +Commit: Ryan Lortie +CommitDate: Thu Mar 12 16:09:14 2015 -0400 + + Doc: Mark a few things as private + + docs/reference/gio/gio-sections.txt | 5 +++++ + gio/gresource.c | 2 +- + gio/gresource.h | 1 + + gio/gsettingsbackend.h | 1 + + 4 files changed, 8 insertions(+), 1 deletion(-) + +commit 8b654e24a5743a32b1d11794fef10a7cbf8ff5d3 +Author: Xavier Claessens +AuthorDate: Wed Jan 28 12:25:10 2015 -0500 +Commit: Ryan Lortie +CommitDate: Thu Mar 12 16:09:14 2015 -0400 + + Win32: Move g_win32_check_windows_version() to the correct place + in header + + It was added after G_END_DECLS, outside the #ifdef G_PLATFORM_WIN32, + and inside a #ifndef __GTK_DOC_IGNORE__ block. So it was missing from + the doc. + + https://bugzilla.gnome.org/show_bug.cgi?id=743661 + + glib/gwin32.h | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +commit 3626e1426d4fa24dc565618001df3ad9a26b3b00 +Author: Rūdolfs Mazurs +AuthorDate: Thu Mar 12 21:54:49 2015 +0200 +Commit: Rūdolfs Mazurs +CommitDate: Thu Mar 12 21:54:49 2015 +0200 + + Updated Latvian translation + + po/lv.po | 525 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 277 insertions(+), 248 deletions(-) + +commit 5c825d32725bb48c276d3b0be2971feb3cacd2e2 +Author: Changwoo Ryu +AuthorDate: Thu Mar 12 02:51:35 2015 +0900 +Commit: Changwoo Ryu +CommitDate: Thu Mar 12 02:51:35 2015 +0900 + + Updated Korean translation + + po/ko.po | 29 +++++++++++++++++++++++++++-- + 1 file changed, 27 insertions(+), 2 deletions(-) + +commit 8668631baaf09c58f782c884035ac2710b9b14de +Author: Tom Tryfonidis +AuthorDate: Wed Mar 11 13:12:14 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Wed Mar 11 13:12:14 2015 +0000 + + Updated Greek translation + + po/el.po | 173 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 99 insertions(+), 74 deletions(-) + +commit b4d6a5fb1826da3441ed9040a4c3bf6e2e4cc2c8 +Author: Jordi Mas +AuthorDate: Tue Mar 10 17:44:19 2015 -0400 +Commit: Jordi Mas +CommitDate: Tue Mar 10 17:44:19 2015 -0400 + + Update Catalan translation + + po/ca.po | 526 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 276 insertions(+), 250 deletions(-) + +commit a866155e8e26fba75f87c643cbcadbc47e13bc82 +Author: Benjamin Steinwender +AuthorDate: Tue Mar 10 20:56:05 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Tue Mar 10 20:56:05 2015 +0000 + + Updated German translation + + po/de.po | 528 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 279 insertions(+), 249 deletions(-) + +commit f6ccb19e1a9b8acb700f271b3dc3e6c809babfe0 +Author: Piotr Drąg +AuthorDate: Tue Mar 10 19:50:30 2015 +0100 +Commit: Piotr Drąg +CommitDate: Tue Mar 10 19:50:30 2015 +0100 + + Updated POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit 4f1f68e6bebc0694208bc7bf43816bde58229fd6 +Author: Philip Withnall +AuthorDate: Thu Aug 21 19:04:04 2014 +0100 +Commit: Philip Withnall +CommitDate: Tue Mar 10 08:37:45 2015 +0000 + + gtask: Add a GTask:completed property + + This can be used to query whether the task has completed, in the sense + that it has had a result set on it, and has already – or will + soon – + invoke its callback function. + + Notifications for this property are emitted immediately after the + task’s + main callback, in the same main context as that callback. This allows + for multiple bits of code to listen for completion of the GTask, which + opens the door for blocking on cancellation of the GTask and improved + handling of ‘pending’ behaviour. + + https://bugzilla.gnome.org/show_bug.cgi?id=743636 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gtask.c | 88 +++++++++++++++++- + gio/gtask.h | 2 + + gio/tests/task.c | 175 + ++++++++++++++++++++++++++++++++---- + 4 files changed, 245 insertions(+), 21 deletions(-) + +commit e83f9e52542af1b3986999638e4aec33587c19b8 +Author: Alexander Shopov +AuthorDate: Tue Mar 10 10:35:24 2015 +0200 +Commit: Alexander Shopov +CommitDate: Tue Mar 10 10:35:24 2015 +0200 + + Updated Bulgarian translation + + po/bg.po | 449 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 235 insertions(+), 214 deletions(-) + +commit a065c7c5d47a6da35c17f77fd62b25ac9e4ec01e +Author: Dušan Kazik +AuthorDate: Mon Mar 9 11:48:33 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Mon Mar 9 11:48:33 2015 +0000 + + Updated Slovak translation + + po/sk.po | 135 + +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 80 insertions(+), 55 deletions(-) + +commit ec9f16846ff59629042c6dcd8b22d9cac9d3b223 +Author: Trần Ngọc Quân +AuthorDate: Mon Mar 9 13:26:18 2015 +0700 +Commit: Trần Ngọc Quân +CommitDate: Mon Mar 9 13:26:18 2015 +0700 + + Updated Vietnamese translation + + Signed-off-by: Trần Ngọc Quân + + po/vi.po | 597 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 313 insertions(+), 284 deletions(-) + +commit dfb9f09c280101aa0fc220f4aed917ccdf1533a1 +Author: Daniel Mustieles +AuthorDate: Sun Mar 8 21:25:11 2015 +0100 +Commit: Daniel Mustieles +CommitDate: Sun Mar 8 21:25:11 2015 +0100 + + Updated Spanish translation + + po/es.po | 197 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 112 insertions(+), 85 deletions(-) + +commit 81473a0fff03d0cf0096d38be27e203f1ac1393b +Author: Aurimas Černius +AuthorDate: Sun Mar 8 20:26:36 2015 +0200 +Commit: Aurimas Černius +CommitDate: Sun Mar 8 20:26:36 2015 +0200 + + Updated Lithuanian translation + + po/lt.po | 147 + +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 87 insertions(+), 60 deletions(-) + +commit 65efd817b26f5182f219fa774bdb2e475359569b +Author: Baurzhan Muftakhidinov +AuthorDate: Sun Mar 8 18:06:01 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Mar 8 18:06:01 2015 +0000 + + Updated Kazakh translation + + po/kk.po | 5054 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 2875 insertions(+), 2179 deletions(-) + +commit 1e317331e4b078c5525d37a9c49f470a5048d246 +Author: Balázs Úr +AuthorDate: Sun Mar 8 17:38:41 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Mar 8 17:38:41 2015 +0000 + + Updated Hungarian translation + + po/hu.po | 277 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 151 insertions(+), 126 deletions(-) + +commit 3deaf41e87d09d7e7598eba87c0093b521f93e32 +Author: Milo Casagrande +AuthorDate: Sun Mar 8 15:32:40 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Mar 8 15:32:40 2015 +0000 + + Updated Italian translation + + po/it.po | 1035 + ++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 701 insertions(+), 334 deletions(-) + +commit 4a7e68fd73f73cfb97be4ec06b225bf16ef92659 +Author: Piotr Drąg +AuthorDate: Sun Mar 8 15:42:16 2015 +0100 +Commit: Piotr Drąg +CommitDate: Sun Mar 8 15:42:16 2015 +0100 + + Updated Polish translation + + po/pl.po | 145 + +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 85 insertions(+), 60 deletions(-) + +commit d4122b954f83e349921b3dea149978d2b821b4f5 +Author: Piotr Drąg +AuthorDate: Sun Mar 8 15:39:02 2015 +0100 +Commit: Piotr Drąg +CommitDate: Sun Mar 8 15:39:02 2015 +0100 + + Updated POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit fdcfe584010f0f33945bd5fd7231d3bee167fa26 +Author: Changwoo Ryu +AuthorDate: Sun Mar 8 03:31:59 2015 +0900 +Commit: Changwoo Ryu +CommitDate: Sun Mar 8 03:31:59 2015 +0900 + + Updated Korean translation + + po/ko.po | 518 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 263 insertions(+), 255 deletions(-) + +commit 6ce79e586f0bb5df49e8f1a1935bfef666986f8a +Author: Dan Winship +AuthorDate: Tue Dec 9 13:35:06 2014 +0100 +Commit: Dan Winship +CommitDate: Fri Mar 6 16:01:07 2015 -0500 + + GSocketClient: fix handling of application proxies + + g_socket_client_add_application_proxy() claimed "When the indicated + proxy protocol is returned by the #GProxyResolver, #GSocketClient will + consider this protocol as supported but will not try to find a #GProxy + instance to handle handshaking." But in fact, it did the checks in the + wrong order, so GProxy proxies ended up overriding + application-specified ones. Fix that. + + Also, simplify the code a bit by making use of g_hash_table_add() and + g_hash_table_contains(). + + https://bugzilla.gnome.org/show_bug.cgi?id=733876 + + gio/gsocketclient.c | 34 +++++++++++++++------------------- + 1 file changed, 15 insertions(+), 19 deletions(-) + +commit ed4a742946374f7ee3c46b93eb943c95f04ec4c4 +Author: Paolo Borelli +AuthorDate: Sat Feb 28 11:05:02 2015 +0100 +Commit: Paolo Borelli +CommitDate: Fri Mar 6 21:23:58 2015 +0100 + + HTTP proxy support + + Based on code from "WockyHttpProxy" written by Nicolas Dufresne + and Marc-André Lureau. Initial glib patch by Brian J. Murrell. + + https://bugzilla.gnome.org/show_bug.cgi?id=733876 + + docs/reference/gio/Makefile.am | 1 + + gio/Makefile.am | 2 + + gio/ghttpproxy.c | 392 + +++++++++++++++++++++++++++++++++++++++++ + gio/ghttpproxy.h | 54 ++++++ + gio/giomodule.c | 3 + + 5 files changed, 452 insertions(+) + +commit 6fe28eef3ce5dd7ce12c6ace080bac5d9479f50c +Author: Chun-wei Fan +AuthorDate: Thu Mar 5 16:13:03 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Mar 6 23:40:03 2015 +0800 + + Windows: Use Standard Networking Functions If Possible + + Currently, the Windows code use Winsock2-specific APIs to try + to emulate + calls such as inet_pton(), inet_ntop() and if_nametoindex(), which + may not + do the job all the time. On Vista and later, Winsock2 does provide a + proper implementation for these functions, so we can use them if + they exist + on the system, by querying for them during g_networking_init(). + Otherwise, + we continue to use the original code path for these, in the case of + XP and + Server 2003. + + This enables many of the network-address tests to pass on Windows as a + result, when the native Winsock2 implementations can be used. + + https://bugzilla.gnome.org/show_bug.cgi?id=730352 + + gio/Makefile.am | 1 + + gio/ginetaddress.c | 169 + ++++++++++++++++++++++++++++++++----------------- + gio/gnetworking.c | 39 +++++++++++- + gio/gsocket.c | 8 +++ + gio/gwin32networking.h | 42 ++++++++++++ + 5 files changed, 199 insertions(+), 60 deletions(-) + +commit ec1edef3ab171f1fa24d62858a2643de6e582f58 +Author: ria.freelander@gmail.com +AuthorDate: Thu Mar 5 13:07:00 2015 +0000 +Commit: Lars Uebernickel +CommitDate: Thu Mar 5 14:54:33 2015 +0100 + + gfdonotificationbackend: support themed icons + + The spec allows setting the "image-path" hint to an icon name as well. + + https://bugzilla.gnome.org/show_bug.cgi?id=745634 + + gio/gfdonotificationbackend.c | 21 ++++++++++++++++----- + 1 file changed, 16 insertions(+), 5 deletions(-) + +commit b9c8cecc9d83d40ea680bbb297047fa837481dc2 +Author: Chun-wei Fan +AuthorDate: Mon Jan 19 11:03:57 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Mar 5 12:44:31 2015 +0800 + + gresolver.c: Windows: Fix IPv6 Address Handling + + Check the IPv6 addresses on Windows, as we need to reject those + that have + brackets/ports around them as valid addresses in this form would + have been + accepted during the call to g_inet_address_new_from_string (). + + https://bugzilla.gnome.org/show_bug.cgi?id=730352 + + gio/gresolver.c | 18 ++++++++++++++---- + 1 file changed, 14 insertions(+), 4 deletions(-) + +commit fecec087024f81fc3afb36ac30e1af3d35ecb65f +Author: Marc-Antoine Perennou +AuthorDate: Wed Mar 4 11:46:46 2015 +0100 +Commit: Marc-Antoine Perennou +CommitDate: Wed Mar 4 14:08:19 2015 +0100 + + gio: add some missing autocleanup + + https://bugzilla.gnome.org/show_bug.cgi?id=745589 + + Signed-off-by: Marc-Antoine Perennou + + gio/gio-autocleanups.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit 74c9eaac11c1d4d2c0cdadf572760150c893e625 +Author: Chun-wei Fan +AuthorDate: Wed Mar 4 20:11:43 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Mar 4 20:11:43 2015 +0800 + + MSVC Builds: Few More Enahncements + + Update the .pdb file generation for the MSVC 2010+ DLLs (and the + x64 gspawn + helper programs), so that they match the names of the DLLs/EXEs + that are + built. Also update the .lib generation so that all will use + -$(ApiVersion) + from the property sheets instead of the -2.0 which was previously hard + coded (as we will eventually move into GLib 3.x in the future, + for example) + + build/win32/vs10/gio.vcxprojin | 12 +++++++---- + build/win32/vs10/glib.vcxprojin | 24 + ++++++++++++++-------- + build/win32/vs10/gmodule.vcxproj | 12 +++++++---- + build/win32/vs10/gobject.vcxprojin | 12 +++++++---- + .../win32/vs10/gspawn-win32-helper-console.vcxproj | 2 ++ + build/win32/vs10/gspawn-win32-helper.vcxproj | 2 ++ + build/win32/vs10/gthread.vcxproj | 12 +++++++---- + build/win32/vs9/gio.vcprojin | 8 ++++---- + build/win32/vs9/glib.vcprojin | 16 +++++++-------- + build/win32/vs9/gmodule.vcproj | 8 ++++---- + build/win32/vs9/gobject.vcprojin | 8 ++++---- + build/win32/vs9/gthread.vcproj | 8 ++++---- + 12 files changed, 76 insertions(+), 48 deletions(-) + +commit 6d030ea0aef634cfdd6b82c9f213c1061b68709a +Author: Philip Withnall +AuthorDate: Wed Mar 4 08:52:22 2015 +0000 +Commit: Philip Withnall +CommitDate: Wed Mar 4 08:55:30 2015 +0000 + + gobject: Mark a helper variable as const + + It’s only used for argv values, which are not modified here. + + https://bugzilla.gnome.org/show_bug.cgi?id=614684 + + gobject/gobject-query.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bdfc8231c6252dfe11cc0d614e71dd98e7570b53 +Author: Philip Withnall +AuthorDate: Fri Dec 19 18:21:30 2014 +0000 +Commit: Philip Withnall +CommitDate: Wed Mar 4 08:45:00 2015 +0000 + + gerror: Minor clarifications to the GError documentation + + • Clarify that GError** parameters are for the return of _newly + allocated_ GError*s. + • Clarify that errors may need to be checked for explicitly if the + return value of a function doesn’t reliably indicate them. + + https://bugzilla.gnome.org/show_bug.cgi?id=741779 + + glib/gerror.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 7f159f13dc7829613c4b2063cd78b027bf702637 +Author: Мирослав Николић + +AuthorDate: Tue Mar 3 20:05:47 2015 +0100 +Commit: Мирослав Николић + +CommitDate: Tue Mar 3 20:05:47 2015 +0100 + + Updated Serbian translation + + po/sr.po | 468 + ++++++++++++++++++++++++++++----------------------------- + po/sr@latin.po | 468 + ++++++++++++++++++++++++++++----------------------------- + 2 files changed, 468 insertions(+), 468 deletions(-) + +commit 2a581fab7d4eb3c72b0a76c1662f4932ba7be1db +Author: Philip Withnall +AuthorDate: Fri Dec 19 17:08:59 2014 +0000 +Commit: Philip Withnall +CommitDate: Tue Mar 3 18:40:33 2015 +0000 + + gvariant: Use ‘UTF-8’ in docs rather than ‘utf8’ + + Nitpicky correction. + + https://bugzilla.gnome.org/show_bug.cgi?id=741779 + + glib/gvariant.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit 8df6e5fa3ffeb74739d5d914669c7e245a84e46d +Author: Philip Withnall +AuthorDate: Fri Dec 19 15:33:59 2014 +0000 +Commit: Philip Withnall +CommitDate: Tue Mar 3 18:40:33 2015 +0000 + + gmain: Explicitly document the threading behaviour of g_timeout_add() + + i.e. That calling g_timeout_add() from a thread other than the + main one + probably doesn’t do what you want. Same for g_idle_add() and the + *_full() variants. + + https://bugzilla.gnome.org/show_bug.cgi?id=741779 + + glib/gmain.c | 24 ++++++++++++++++-------- + 1 file changed, 16 insertions(+), 8 deletions(-) + +commit 4aedc85fb35f58b602259d34b94dcebeefa198bc +Author: Philip Withnall +AuthorDate: Fri Dec 19 19:02:15 2014 +0000 +Commit: Philip Withnall +CommitDate: Tue Mar 3 18:40:33 2015 +0000 + + gobject: Mention g_clear_object() in g_object_unref() documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=741779 + + gobject/gobject.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 18c9a4e17a74b1707b8a17779e13956e151edc27 +Author: Philip Withnall +AuthorDate: Fri Dec 19 19:01:06 2014 +0000 +Commit: Philip Withnall +CommitDate: Tue Mar 3 18:40:33 2015 +0000 + + gmem: Clarify that a NULL check is not needed before calling g_free() + + It was documented before, but wasn’t especially clear. Doing + if (X) + g_free (X); + is apparently quite a pervasive real-world anti-pattern, so perhaps it + could be documented more explicitly. + + https://bugzilla.gnome.org/show_bug.cgi?id=741779 + + glib/gmem.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 984576c01e54f335a1a2cde9e6f235946bd35f96 +Author: Philip Withnall +AuthorDate: Fri Dec 19 18:53:54 2014 +0000 +Commit: Philip Withnall +CommitDate: Tue Mar 3 18:40:33 2015 +0000 + + glist: Clarify that g_list_nth() is expensive + + Just in case people have forgotten their basic algorithms course. Seen + in some pretty terrible code in the wild; hopefully mentioning + the cost + in the documentation will make people think twice about using + a counter + variable when iterating over a linked list. + + https://bugzilla.gnome.org/show_bug.cgi?id=741779 + + glib/glist.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit c6312daba0418e384b9ee64917861225a85edacf +Author: Philip Withnall +AuthorDate: Fri Dec 19 18:53:22 2014 +0000 +Commit: Philip Withnall +CommitDate: Tue Mar 3 18:40:33 2015 +0000 + + glist: Clarify how g_list_free_1() handles links + + It doesn’t, which is fine, but could be unexpected if undocumented. + + https://bugzilla.gnome.org/show_bug.cgi?id=741779 + + glib/glist.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 59748c3be03fb4df0005fcc54f6b6267d6b2ada8 +Author: Philip Withnall +AuthorDate: Fri Dec 19 18:52:32 2014 +0000 +Commit: Philip Withnall +CommitDate: Tue Mar 3 18:40:33 2015 +0000 + + ghash: Document that g_hash_get_[keys|values]() are expensive + + And definitely not the right way to iterate over a hash table (as seen + in code in the wild). + + https://bugzilla.gnome.org/show_bug.cgi?id=741779 + + glib/ghash.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit c639b628ec425ac28b79bd48c703fc7115b1fc97 +Author: Philip Withnall +AuthorDate: Thu Dec 18 11:23:05 2014 +0000 +Commit: Philip Withnall +CommitDate: Tue Mar 3 18:40:33 2015 +0000 + + gparamspecs: Recommend use of most specific GParamSpec types + + It’s quite common to see a g_param_spec_pointer() used for + GObject or + boxed types which, while not incorrect, does make memory management + unsafe, since no copying or reference counting can be performed + automatically. + + Similarly, people often use g_param_spec_boolean() when an enum + would be + more appropriate, cf. + http://blog.ometer.com/2011/01/20/boolean-parameters-are-wrong/ + Using enums also means that the set of allowable values can be + extended + in future if needed. + + In the hope that people who write code like that read the + documentation, + mention the more specific types in the documentation. + + https://bugzilla.gnome.org/show_bug.cgi?id=741779 + + gobject/gparamspecs.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 430814992ddefae2588ae12e4d6aa4d66ed23461 +Author: Philip Withnall +AuthorDate: Wed Feb 18 17:01:18 2015 +0000 +Commit: Philip Withnall +CommitDate: Tue Mar 3 18:27:45 2015 +0000 + + docs: Expand introduction to mention using async calls over sync ones + + As discussed on the mailing list (see the whole thread): + https://mail.gnome.org/archives/desktop-devel-list/2015-February/msg00126.html + + Expand the GIO documentation introduction to talk a little about + when to + use async and sync functions, and how the former should almost + always be + preferred over the latter. + + Link to this from the GFile documentation, which is an entry point + for a + lot of async calls. + + https://bugzilla.gnome.org/show_bug.cgi?id=744722 + + docs/reference/gio/overview.xml | 52 + +++++++++++++++++++++++++++++++++++++++++ + gio/gfile.c | 12 +++++++--- + 2 files changed, 61 insertions(+), 3 deletions(-) + +commit f829bde76acf0d139dcbe4b81b3721d9e929fbee +Author: Philip Withnall +AuthorDate: Wed Jan 14 10:44:52 2015 +0000 +Commit: Philip Withnall +CommitDate: Tue Mar 3 17:59:50 2015 +0000 + + gstring: Mark the return value from g_string_free() as nullable + + It’s NULL iff free_segment is TRUE, so the annotation doesn’t + quite + capture all the function definition, but is a safe over-estimate + of the + return value’s nullability. + + https://bugzilla.gnome.org/show_bug.cgi?id=719966 + + glib/gstring.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b9c94b344eacba14ad7b9a29e8a4b161c5d3e10e +Author: Philip Withnall +AuthorDate: Fri Jun 20 21:20:36 2014 +0100 +Commit: Philip Withnall +CommitDate: Tue Mar 3 17:59:50 2015 +0000 + + gfileutils: Mark the return value from g_path_skip_root() as nullable + + It returns NULL for non-absolute paths. + + https://bugzilla.gnome.org/show_bug.cgi?id=719966 + + glib/gfileutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 32956587f35a8c4f1048549f9fce521c1e21de15 +Author: Philip Withnall +AuthorDate: Wed Feb 18 17:58:32 2015 +0000 +Commit: Philip Withnall +CommitDate: Tue Mar 3 17:25:43 2015 +0000 + + docs: Remove redundant header examples from GObject tutorial + + These are in the header boilerplate section, but are actually source + boilerplate which is covered in later sections. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_howto.xml | 73 + ++---------------------------------- + 1 file changed, 4 insertions(+), 69 deletions(-) + +commit 88e011a7cfe531f9f41cc7f0ca91c5ddf6b86325 +Author: Philip Withnall +AuthorDate: Fri Feb 20 14:29:43 2015 +0000 +Commit: Philip Withnall +CommitDate: Tue Mar 3 17:25:43 2015 +0000 + + docs: Change tutorial encodings from ISO-8859-1 to UTF-8 + + ISO-8859-1 — that’s a blast from the past. + + https://bugzilla.gnome.org/show_bug.cgi?id=744060 + + docs/reference/gobject/tut_gobject.xml | 2 +- + docs/reference/gobject/tut_gsignal.xml | 2 +- + docs/reference/gobject/tut_gtype.xml | 2 +- + docs/reference/gobject/tut_howto.xml | 2 +- + docs/reference/gobject/tut_intro.xml | 2 +- + docs/reference/gobject/tut_tools.xml | 2 +- + 6 files changed, 6 insertions(+), 6 deletions(-) + +commit 6be1e678dc2ad1dbe707ab6e58ac56c9053784d3 +Author: Chun-wei Fan +AuthorDate: Tue Mar 3 19:21:40 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Mar 3 19:21:40 2015 +0800 + + Visual Studio Builds: "Install" .pdb files + + They are helpful in debugging in a stack. + + build/win32/vs10/glib-install.props | 25 +++++++++++++++++++++++-- + build/win32/vs9/glib-install.vsprops | 25 +++++++++++++++++++++++-- + 2 files changed, 46 insertions(+), 4 deletions(-) + +commit 6e117b3fcc6cc076fb0d784c40ca91a756c6b7e7 +Author: Chun-wei Fan +AuthorDate: Tue Mar 3 18:24:08 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Mar 3 18:24:58 2015 +0800 + + MSVC Builds: GIO: Standardize zlib Linking + + Link to zlib1.lib for all builds, as: + -The notion of zlib1d.lib is rather not standardized across the + board for + most cases. + -Easier for the grand all-in-one solution file. + + build/win32/vs10/gio.vcxprojin | 4 ++-- + build/win32/vs9/gio.vcprojin | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit d76ac1560e606a23e3437370559ab9079f8f81a2 +Author: Chun-wei Fan +AuthorDate: Tue Mar 3 18:09:42 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Mar 3 18:09:42 2015 +0800 + + Visual Studio 2008 Builds: Speed Up Release Builds + + Use the /MP option so that each project can build multiple sources in + parallel, which can cut down release build times by quite a bit. + This will + cause a brief warning for debug builds due to their use of /Gm, + and builds + would otherwise proceed as they did before. + + Unfortunately Visual Studio 2008 is too old to support the /d2Zi+ + flag, so + we can't make a better debug situation for it at the moment. + + build/win32/vs9/glib-build-defines.vsprops | 1 + + 1 file changed, 1 insertion(+) + +commit 7b1729f3c066c07ca075a08b3b46ed4d43fb9e29 +Author: Chun-wei Fan +AuthorDate: Tue Mar 3 13:52:22 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Mar 3 13:52:22 2015 +0800 + + MSVC Builds: Improve Build Speed and Debugging + + Use Multiprocessor compilation which can cut down build times by + quite a + bit and use the /d2Zi+ flag to have better debugging info being + logged to + the .pdb for release builds. + + These are only applicable for Visual Studio 2010/2012 and later. + + build/win32/vs10/glib-build-defines.props | 2 ++ + 1 file changed, 2 insertions(+) + +commit 94b9d87a43fbde8295f78fc86cb88bbe552cdbba +Author: Chun-wei Fan +AuthorDate: Tue Mar 3 12:05:50 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Mar 3 12:06:22 2015 +0800 + + MSVC Builds: Fix and Update "Installation" + + The gobjectnotifyqueue.c was accidently dropped from the files to + copy, and + a new public header for GIO was added, so address these parts. + + build/win32/vs10/glib-install.props | 6 ++++-- + build/win32/vs9/glib-install.vsprops | 6 ++++-- + 2 files changed, 8 insertions(+), 4 deletions(-) + +commit ad66ec82ee35bbcb00ef6f5597c5c212fa46ac03 +Author: Marek Černocký +AuthorDate: Mon Mar 2 21:52:32 2015 +0100 +Commit: Marek Černocký +CommitDate: Mon Mar 2 21:52:32 2015 +0100 + + Updated Czech translation + + po/cs.po | 458 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 227 insertions(+), 231 deletions(-) + +commit 8c104a01e19a60301fb5857eeddd1c610634ba70 +Author: Ryan Lortie +AuthorDate: Thu Feb 12 12:18:22 2015 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 2 15:10:46 2015 -0500 + + GContextSpecificGroup: fix deadlock + + There was a theoretical deadlock between the worker trying to emit a + signal at the same time as we were waiting for it to shutdown the + notification (while holding the lock). + + The deadlock was particularly annoying because we didn't really + need to + wait for the shutdown and because it wasn't possible to signals to + arrive while waiting for a start. Attempting to deal with start and + stop in an asymmetric way could have lead to other weird situations, + however. + + Drop the lock while waiting for the worker thread to start. + This means + that we face the possibility of multiple waiters on the cond at + the same + time, so we need to make more of a state machine. + + https://bugzilla.gnome.org/show_bug.cgi?id=742599 + + gio/gcontextspecificgroup.c | 77 + +++++++++++++++++++++++++++------------------ + gio/gcontextspecificgroup.h | 4 +++ + gio/tests/contexts.c | 4 +-- + 3 files changed, 52 insertions(+), 33 deletions(-) + +commit 88745c2fa70eed50beb90a61c58e51baf369f74d +Author: Ryan Lortie +AuthorDate: Sun Jan 25 15:16:50 2015 +0000 +Commit: Ryan Lortie +CommitDate: Mon Mar 2 15:10:46 2015 -0500 + + tests: add some tests for GContextSpecificGroup + + https://bugzilla.gnome.org/show_bug.cgi?id=742599 + + gio/tests/contexts.c | 222 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 222 insertions(+) + +commit 548c165a9f8386af29e8bb8243d8923e0f315c2e +Author: Ryan Lortie +AuthorDate: Thu Jan 8 01:35:33 2015 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 2 15:10:46 2015 -0500 + + Make GUnixMountMonitor per-context + + GUnixMountMonitor was not threadsafe before. It was a global + singleton + which emitted signals in the first thread that happened to construct + it. + + Move it to a per-context singleton model where each GMainContext gets + its own GUnixMountMonitor. Monitor for the changes from the GLib + worker + thread and dispatch the results to each context with an active + monitor. + + https://bugzilla.gnome.org/show_bug.cgi?id=742599 + + gio/gunixmounts.c | 261 + +++++++++++++++++++++++++++--------------------------- + 1 file changed, 131 insertions(+), 130 deletions(-) + +commit ae38d2bfa4e0bd72bf418a42cd5bda7a156b6092 +Author: Ryan Lortie +AuthorDate: Wed Jan 7 23:52:53 2015 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 2 15:10:46 2015 -0500 + + gunixmounts: move GUnixMountMonitor code + + Move this code to the correct part of the file. + + While we're at it, drop an unused #define MOUNT_POLL_INTERVAL. + + https://bugzilla.gnome.org/show_bug.cgi?id=742599 + + gio/gunixmounts.c | 56 + +++++++++++++++++++++++++++---------------------------- + 1 file changed, 27 insertions(+), 29 deletions(-) + +commit f535218f703528060fcc2a72df57c52ab86d628f +Author: Ryan Lortie +AuthorDate: Wed Jan 7 23:49:47 2015 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 2 15:10:46 2015 -0500 + + gunixmounts.c: add fold markers + + This is a large file with a lot of very complicated code in it. Add + some fold markers to make things a bit more manageable. + + https://bugzilla.gnome.org/show_bug.cgi?id=742599 + + gio/gunixmounts.c | 30 ++++++++++++++++++++++++++++++ + 1 file changed, 30 insertions(+) + +commit 3167c6124ccb19fe655044e30aecea93598d1df0 +Author: Ryan Lortie +AuthorDate: Thu Jan 8 02:16:50 2015 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 2 15:10:46 2015 -0500 + + Deprecate g_unix_mount_monitor_set_rate_limit() + + Deprecate g_unix_mount_monitor_set_rate_limit() and turn it into a + no-op. + + This function doesn't behave as advertised. It only controls rate + limiting for filesystem-based monitors. It has no impact over + reporting + mount changes on Linux, for example, because those are based on + polling + for changes in /proc (which doesn't use filesystem monitors). It also + has no impact on Mac OS because a library interface is used there. + + This was added in https://bugzilla.gnome.org/show_bug.cgi?id=521946 in + order to be used by HAL, which is effectively dead. udisks no longer + uses this code at all. + + https://bugzilla.gnome.org/show_bug.cgi?id=742599 + + gio/gunixmounts.c | 18 +++++++++--------- + gio/gunixmounts.h | 2 +- + 2 files changed, 10 insertions(+), 10 deletions(-) + +commit 73d4e6f12ff20648996f655fe66cd916be631ba3 +Author: Ryan Lortie +AuthorDate: Thu Jan 8 02:03:18 2015 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 2 15:10:46 2015 -0500 + + Rename g_unix_mount_monitor_new() to _get() + + This is a singleton, but we have a function called _new() to get it. + What's worse is that the documentation makes no mention of this, and + actually specifically says that a new monitor will be created + each time. + + https://bugzilla.gnome.org/show_bug.cgi?id=742599 + + docs/reference/gio/gio-sections.txt | 1 + + gio/glocaldirectorymonitor.c | 2 +- + gio/gunixmounts.c | 41 + ++++++++++++++++++++++++++++--------- + gio/gunixmounts.h | 4 +++- + gio/gunixvolumemonitor.c | 2 +- + 5 files changed, 37 insertions(+), 13 deletions(-) + +commit 720274511ba243e72ab169cde96ab827804fd871 +Author: Ryan Lortie +AuthorDate: Thu Jan 8 02:36:26 2015 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 2 15:10:46 2015 -0500 + + GAppInfoMonitor: port to GContextSpecificGroup + + https://bugzilla.gnome.org/show_bug.cgi?id=742599 + + gio/gappinfo.c | 131 + ++++----------------------------------------------------- + 1 file changed, 9 insertions(+), 122 deletions(-) + +commit c90b083fa8fd3da88086e634b45a190c0e4ba165 +Author: Ryan Lortie +AuthorDate: Wed Jan 7 23:09:30 2015 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 2 15:10:46 2015 -0500 + + Add internal helper GContextSpecificGroup + + Add a new internal helper called GContextSpecificGroup. + + This is a mechanism for helping to maintain a group of + context-specific + monitor objects (eg: GAppInfoMonitor, GUnixMountMonitor). + + https://bugzilla.gnome.org/show_bug.cgi?id=742599 + + gio/Makefile.am | 2 + + gio/gcontextspecificgroup.c | 258 + ++++++++++++++++++++++++++++++++++++++++++++ + gio/gcontextspecificgroup.h | 47 ++++++++ + 3 files changed, 307 insertions(+) + +commit 220f7754c4db601715a7285584c0fb563a69ce3e +Author: Piotr Drąg +AuthorDate: Mon Mar 2 20:26:45 2015 +0100 +Commit: Piotr Drąg +CommitDate: Mon Mar 2 20:26:45 2015 +0100 + + Updated Polish translation + + po/pl.po | 452 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 224 insertions(+), 228 deletions(-) + +commit cd3f4bb32ccc6baa78cca92df423d1a51bb11931 +Author: Ryan Lortie +AuthorDate: Mon Mar 2 11:54:48 2015 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 2 11:55:33 2015 -0500 + + GLib 2.43.91 + + NEWS | 29 +++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 30 insertions(+), 1 deletion(-) + +commit 0cb75bf796a3d8d2918509d8e370853a72f3e673 +Author: Ryan Lortie +AuthorDate: Fri Feb 27 07:50:28 2015 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 2 11:55:33 2015 -0500 + + GApplication: don't iterate further on _quit() + + If someone explicitly calls g_application_quit() then don't attempt to + drain the mainloop of remaining sources. + + This allows applications with 100% CPU utilisation to quit reliably. + + https://bugzilla.gnome.org/show_bug.cgi?id=744876 + + gio/gapplication.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit eb92b4fdff8ec70511b9a249999ad8864007c36a +Author: Rico Tzschichholz +AuthorDate: Sun Mar 1 18:12:09 2015 +0100 +Commit: Rico Tzschichholz +CommitDate: Sun Mar 1 18:12:09 2015 +0100 + + gio: Add some missing type annotations to object arguments + + Similar to https://bugzilla.gnome.org/show_bug.cgi?id=745239 + + gio/gapplication.c | 4 ++-- + gio/gsettings.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 71642ce766d73bb06f2cd33b4f585bafff315c7d +Author: Ryan Lortie +AuthorDate: Sun Mar 1 00:47:17 2015 -0500 +Commit: Ryan Lortie +CommitDate: Sun Mar 1 00:50:09 2015 -0500 + + tests: only chmod autorun.exe on UNIX + + We install win32-software/autorun.exe (as test data for mime scanning) + only on UNIX builds, so don't attempt to chmod it on 'make install' + unless we're on UNIX. + + gio/tests/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit 8bbeb6fd2f8b2d44b8185155a851c85917ed712b +Author: Aurimas Černius +AuthorDate: Sat Feb 28 21:25:35 2015 +0200 +Commit: Aurimas Černius +CommitDate: Sat Feb 28 21:25:35 2015 +0200 + + Updated Lithuanian translation + + po/lt.po | 528 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 265 insertions(+), 263 deletions(-) + +commit f15f860ed9cda8db0a6ef7b27bac203d6747f78b +Author: Dušan Kazik +AuthorDate: Sat Feb 28 12:53:36 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Sat Feb 28 12:53:36 2015 +0000 + + Updated Slovak translation + + po/sk.po | 2611 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 1248 insertions(+), 1363 deletions(-) + +commit a3a9664ed202303b899ca55625877542309d1a1f +Author: Marc-Antoine Perennou +AuthorDate: Sat Nov 9 12:09:20 2013 +0900 +Commit: Marc-Antoine Perennou +CommitDate: Fri Feb 27 08:51:08 2015 +0100 + + make *_get_instance_private const-compliant + + This is pure read-only access to an external struct + so void warnings for people calling it from const + contexts such as accessors + + https://bugzilla.gnome.org/show_bug.cgi?id=745068 + + Signed-off-by: Marc-Antoine Perennou + + gobject/gtype.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 52f23db74ad58b822bafb0fdcac106489d864f8c +Author: Marc-Antoine Perennou +AuthorDate: Tue Feb 24 09:17:33 2015 +0100 +Commit: Marc-Antoine Perennou +CommitDate: Fri Feb 27 08:51:08 2015 +0100 + + G_DECLARE_*: be const-compliant + + switching to the old macros boilerplate to G_DECLARE_* + a lot of warnings start to pop when *_IS_A_* or such are + called from a const context. + Fix this by taking const pointers as parameters + + https://bugzilla.gnome.org/show_bug.cgi?id=745068 + + Signed-off-by: Marc-Antoine Perennou + + gobject/gtype.h | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 3f596074a90c692fa5de736e37a0cc8bb1685c19 +Author: Evan Nemerson +AuthorDate: Thu Feb 26 10:17:59 2015 -0800 +Commit: Evan Nemerson +CommitDate: Thu Feb 26 10:52:14 2015 -0800 + + GPropertyAction: add type annotation to constructor's object argument + + https://bugzilla.gnome.org/show_bug.cgi?id=745239 + + gio/gpropertyaction.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit d36f6a9633f18cbf14e8a52add66b40d8eb6a4da +Author: David King +AuthorDate: Mon Feb 9 11:23:58 2015 +0000 +Commit: Rico Tzschichholz +CommitDate: Thu Feb 26 12:32:43 2015 +0100 + + gobject.h: Use correct format specifier for __LINE__ + + GCC 5.0, with its new -Wformat-signedness, warns about the sign being + different between a type and the format string in printf-format + messages, leading to compiler warnings with + G_OBJECT_WARN_INVALID_PSPEC. + In other uses of __LINE__ inside GLib, %d is used, and GCC seems to + expect a format specifier of %d as well: + https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html + + https://bugzilla.gnome.org/show_bug.cgi?id=744263 + + gobject/gobject.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e966cc51de22a9f8b045f6f0f6f0de82f934d46d +Author: Philip Withnall +AuthorDate: Tue Feb 24 10:57:14 2015 +0000 +Commit: Philip Withnall +CommitDate: Tue Feb 24 10:57:14 2015 +0000 + + gcancellable: Mention nullability in g_cancellable_cancel() docs + + Calling g_cancellable_cancel(NULL) is an explicitly allowed no-op, for + convenience. Document and annotate that. + + gio/gcancellable.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 99232046d6d26cdd76de02bae065e1f153332c49 +Author: Alexandre Franke +AuthorDate: Tue Feb 24 00:42:43 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Tue Feb 24 00:42:43 2015 +0000 + + Updated French translation + + po/fr.po | 454 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 228 insertions(+), 226 deletions(-) + +commit 0550708ca7b615ab9e0df96ded43d18653f33ac2 +Author: Colin Walters +AuthorDate: Mon Feb 23 08:32:36 2015 -0500 +Commit: Colin Walters +CommitDate: Mon Feb 23 10:40:40 2015 -0500 + + tests: Add many autoptr tests + + I love Emacs keyboard macros, used them to convert the list of + defines cleverly into a list of tests, then iterated and filled in + the necessary constructor arguments. + + gio/tests/Makefile.am | 6 + + gio/tests/autoptr.c | 23 +++ + glib/glib-autocleanups.h | 3 + + glib/tests/autoptr.c | 420 + ++++++++++++++++++++++++++++++++++++++++++++++- + 4 files changed, 447 insertions(+), 5 deletions(-) + +commit 1b348a876f84342bb3a197fadd249f8ce95abfeb +Author: Colin Walters +AuthorDate: Mon Feb 23 07:56:34 2015 -0500 +Commit: Colin Walters +CommitDate: Mon Feb 23 07:56:34 2015 -0500 + + autocleanups: Remove g_autoptr(gchar) + + - It's not sufficient, there are other bare array types + like guint8, gdouble, etc. + + - Other types like GVariant* always come as pointers, whereas + there's a rather fundamental distinction between "gchar" and + "gchar*" that has been signified to C programmers for 30+ years via + the '*' character, and we're hiding that. + + https://bugzilla.gnome.org/show_bug.cgi?id=744747 + + glib/glib-autocleanups.h | 1 - + 1 file changed, 1 deletion(-) + +commit d0105f1c0845c1244c8419d0bb24c6f64ac9015f +Author: Colin Walters +AuthorDate: Sun Feb 15 08:58:44 2015 -0500 +Commit: Colin Walters +CommitDate: Sun Feb 22 22:18:07 2015 -0500 + + Add g_autofree + + The g_autoptr() being associated with the type name works out really + well for things like GHashTable. However, it's a bit more awkward to + associate with "gchar". Also because one can't use "char". + Similarly, there are a lot of other "bare primitive array" types that + one might reasonably use. + + This patch does not remove the autoptr for "gchar", even though I + think it's rather awkward and strange. + + Also while we're here, add a test case for the cleanup bits. + + https://bugzilla.gnome.org/show_bug.cgi?id=744747 + + glib/docs.c | 34 ++++++++++++++++++++++++++++++++++ + glib/glib-autocleanups.h | 8 ++++++++ + glib/gmacros.h | 1 + + glib/tests/Makefile.am | 6 ++++++ + glib/tests/autoptr.c | 37 +++++++++++++++++++++++++++++++++++++ + 5 files changed, 86 insertions(+) + +commit 2844f239f60cab6e549102d7cdc3cf0333076cbe +Author: Ryan Lortie +AuthorDate: Sat Feb 21 10:24:23 2015 -0500 +Commit: Ryan Lortie +CommitDate: Sun Feb 22 19:14:03 2015 -0500 + + GApplication: let the main loop drain on shutdown + + After ::shutdown, run the mainloop until all pending activity is + handled, before returning from run(). + + Among other things, this gives a chance for destroyed windows to be + properly withdrawn from the windowing system. + + https://bugzilla.gnome.org/show_bug.cgi?id=744876 + + gio/gapplication.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 9cee2e6a72bb06f7483442ab364910879c512e39 +Author: Chao-Hsiung Liao +AuthorDate: Sat Feb 21 11:09:48 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Sat Feb 21 11:09:48 2015 +0000 + + Updated Chinese (Taiwan) translation + + po/zh_TW.po | 464 + ++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 233 insertions(+), 231 deletions(-) + +commit 5e994b1e9ba0ddbd27773825cb8bfe30ee2e69d2 +Author: Emmanuele Bassi +AuthorDate: Fri Feb 20 19:54:07 2015 +0000 +Commit: Emmanuele Bassi +CommitDate: Fri Feb 20 19:54:07 2015 +0000 + + gobject: Add missing autocleanup for GInitiallyUnowned + + We are missing the auto cleanup function for this type, which means + G_DECLARE_* macros won't work with classes inheriting from + GInitiallyUnowned. + + gobject/gobject-autocleanups.h | 1 + + 1 file changed, 1 insertion(+) + +commit f141607eecc1e592cc811cdaf580a5994c1b34a7 +Author: Colin Walters +AuthorDate: Fri Feb 20 14:35:59 2015 -0500 +Commit: Colin Walters +CommitDate: Fri Feb 20 14:37:39 2015 -0500 + + gfileenumerator: Convert docbook tag -> markdown + + This code predated the markdown conversion. Pointed out by mclasen. + + gio/gfileenumerator.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 52cd62d946946af3b0c9dac644ddc4bd517d131b +Author: Colin Walters +AuthorDate: Thu Feb 12 18:20:14 2015 -0500 +Commit: Colin Walters +CommitDate: Fri Feb 20 14:02:05 2015 -0500 + + filenumerator: Add g_file_enumerator_iterate() + + This is *significantly* more pleasant to use from C (while handling + errors and memory cleanup). + + While we're here, change some ugly, leaky code in + tests/desktop-app-info.c to use it, in addition to a test case + in tests/file.c. + + https://bugzilla.gnome.org/show_bug.cgi?id=661554 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gfileenumerator.c | 116 + ++++++++++++++++++++++++++++++++++++ + gio/gfileenumerator.h | 8 +++ + gio/tests/desktop-app-info.c | 77 ++++++++++++++---------- + gio/tests/file.c | 46 ++++++++++++++ + 5 files changed, 215 insertions(+), 33 deletions(-) + +commit 9d6d30475b4039b3bd352e641c4266efeb14329c +Author: Colin Walters +AuthorDate: Thu Feb 19 18:31:29 2015 -0500 +Commit: Colin Walters +CommitDate: Fri Feb 20 07:08:50 2015 -0500 + + autocleanups: Add G*Array types + + Not sure how these were omitted. Probably few people are really using + this yet...and we don't have test cases (that's in the other patch). + + https://bugzilla.gnome.org/show_bug.cgi?id=744830 + + glib/glib-autocleanups.h | 3 +++ + 1 file changed, 3 insertions(+) + +commit 9b0358770716f1f6cc7e891ad71ee2111ae0f626 +Author: Philip Withnall +AuthorDate: Thu Feb 19 14:03:43 2015 +0000 +Commit: Philip Withnall +CommitDate: Thu Feb 19 14:04:05 2015 +0000 + + gliststore: Add missing parameter documentation + + gio/gliststore.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 0d27b2e4e2e88b2cae88cb1936af4cb93add1aab +Author: Fran Dieguez +AuthorDate: Thu Feb 19 11:00:05 2015 +0100 +Commit: Fran Dieguez +CommitDate: Thu Feb 19 11:00:05 2015 +0100 + + Updated Galician translations + + po/gl.po | 456 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 229 insertions(+), 227 deletions(-) + +commit 2b273825965bc824dbc2ca8bfbde863c07032d45 +Author: Lars Uebernickel +AuthorDate: Thu Feb 19 00:41:42 2015 +0100 +Commit: Lars Uebernickel +CommitDate: Thu Feb 19 08:39:55 2015 +0100 + + gapplication: test setting and binding busy state + + https://bugzilla.gnome.org/show_bug.cgi?id=744756 + + gio/tests/gapplication.c | 60 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 60 insertions(+) + +commit b4ef6d957f301ab7020acb6ecdae736d3087b79d +Author: Lars Uebernickel +AuthorDate: Thu Feb 19 00:33:01 2015 +0100 +Commit: Lars Uebernickel +CommitDate: Thu Feb 19 08:39:55 2015 +0100 + + gapplication: add "is-busy" + + A property to query the current busy state of an application. + + https://bugzilla.gnome.org/show_bug.cgi?id=744756 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gapplication.c | 50 + ++++++++++++++++++++++++++++++++++--- + gio/gapplication.h | 2 ++ + 3 files changed, 50 insertions(+), 3 deletions(-) + +commit 6ef0664017722a5f06739a03973c368c69c9746e +Author: Ryan Lortie +AuthorDate: Wed Feb 18 16:45:59 2015 -0500 +Commit: Ryan Lortie +CommitDate: Wed Feb 18 16:45:59 2015 -0500 + + gapplication: stop using deprecated API + + More fallout from the GOptionGroup binding patch. + + gio/gapplication.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2d3d8cdce2e30978c259bdbc61c2af26ee081533 +Author: Lars Uebernickel +AuthorDate: Tue Feb 17 08:39:05 2015 +0100 +Commit: Lars Uebernickel +CommitDate: Wed Feb 18 20:17:03 2015 +0100 + + gapplication: tune busy-binding + + g_application_bind_busy_property() had the restriction that only one + property can be bound per object, so that NULL could be used to + unbind. + Even though this is enough for most uses, it is a weird API. + + Lift that restriction and add an explicit unbind function. + + https://bugzilla.gnome.org/show_bug.cgi?id=744565 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gapplication.c | 89 + ++++++++++++++++++++++++------------- + gio/gapplication.h | 5 +++ + 3 files changed, 65 insertions(+), 30 deletions(-) + +commit a2172ee247b43265b249188de53c8f9d6cb7b7b3 +Author: Ryan Lortie +AuthorDate: Wed Feb 18 11:03:03 2015 -0500 +Commit: Ryan Lortie +CommitDate: Wed Feb 18 11:26:25 2015 -0500 + + GLib 2.43.90 + + NEWS | 27 +++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 28 insertions(+), 1 deletion(-) + +commit 03de825c7e5e768662b36f090f47287b99158668 +Author: Piotr Drąg +AuthorDate: Wed Feb 18 13:43:12 2015 +0100 +Commit: Piotr Drąg +CommitDate: Wed Feb 18 13:43:12 2015 +0100 + + Updated POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit 6b33ec39ad297ffb4066ddb7c4443a4d09dfe877 +Author: Milo Casagrande +AuthorDate: Wed Feb 18 08:12:00 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Wed Feb 18 08:12:00 2015 +0000 + + Updated Italian translation + + po/it.po | 189 + +++++++++++++++++++++++++++------------------------------------ + 1 file changed, 82 insertions(+), 107 deletions(-) + +commit 07ae2e1278201a9b3441a3afdc25768c01ed179d +Author: Ryan Lortie +AuthorDate: Tue Jan 20 08:38:18 2015 -0500 +Commit: Ryan Lortie +CommitDate: Tue Feb 17 16:27:46 2015 -0500 + + tests: add GSimpleIOStream async close tests + + Just a couple of tests to make sure the two paths are working + properly, + without crashes or leaks. + + https://bugzilla.gnome.org/show_bug.cgi?id=741630 + + gio/tests/io-stream.c | 61 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 61 insertions(+) + +commit d4e3b82a93c59edd6f8c396868413e0fbf621972 +Author: Ignacio Casal Quinteiro +AuthorDate: Wed Dec 17 09:11:29 2014 +0100 +Commit: Ryan Lortie +CommitDate: Tue Feb 17 16:27:46 2015 -0500 + + Add GSimpleIOStream class + + GSimpleIOStream represents an object that wraps an input and an output + stream making easy to use them by calling the #GIOStream methods. + + https://bugzilla.gnome.org/show_bug.cgi?id=741630 + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 14 +++ + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/giotypes.h | 1 + + gio/gsimpleiostream.c | 222 + ++++++++++++++++++++++++++++++++++++ + gio/gsimpleiostream.h | 45 ++++++++ + gio/tests/defaultvalue.c | 1 + + gio/tests/io-stream.c | 83 +------------- + 9 files changed, 291 insertions(+), 79 deletions(-) + +commit c2c0a6ae5c8a0e924cb4b3a25b6adadcad7bd87e +Author: Ryan Lortie +AuthorDate: Tue Jan 20 08:11:02 2015 -0500 +Commit: Ryan Lortie +CommitDate: Tue Feb 17 16:17:01 2015 -0500 + + GIOStream: support for unemulated async close() + + Add an implementation of non-thread-emulated async close of a + GIOStream + if either of the underlying stream objects support it. + + This prevents us from calling close() functions from another thread on + an object that may not be expecting that. It also allows us to + skip the + thread entirely in case our objects support a pure async close. + + https://bugzilla.gnome.org/show_bug.cgi?id=741630 + + gio/giostream.c | 81 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 78 insertions(+), 3 deletions(-) + +commit cb40c553aefff522cf3c6ff8af783afa3e217649 +Author: Ryan Lortie +AuthorDate: Tue Jan 20 08:09:33 2015 -0500 +Commit: Ryan Lortie +CommitDate: Tue Feb 17 16:17:01 2015 -0500 + + streams: add private 'async close via threads' API + + Add an internal helper to find out if close_async() is implemented via + threads using the default implementation in the base class. + + We will use this to decide if we should do a 'pure async' close of a + GIOStream or not. + + https://bugzilla.gnome.org/show_bug.cgi?id=741630 + + gio/ginputstream.c | 20 ++++++++++++++++++++ + gio/gioprivate.h | 2 ++ + gio/goutputstream.c | 19 +++++++++++++++++++ + 3 files changed, 41 insertions(+) + +commit f56f1ef074c6043f505b05a4ca134c9ee2c717a1 +Author: Ryan Lortie +AuthorDate: Tue Jan 20 12:54:09 2015 -0500 +Commit: Ryan Lortie +CommitDate: Tue Feb 17 16:17:01 2015 -0500 + + streams: de-gtkdocify internal API + + Remove the /** **/-style block from two internal helpers to prevent + gtk-doc from picking them up. + + https://bugzilla.gnome.org/show_bug.cgi?id=741630 + + gio/ginputstream.c | 2 +- + gio/goutputstream.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 512e9b3b34d067ae4685143eb0c5f7969c6fd1e8 +Author: Marc-André Lureau +AuthorDate: Thu Feb 12 22:29:36 2015 +0100 +Commit: Ryan Lortie +CommitDate: Tue Feb 17 16:16:52 2015 -0500 + + gdbus: delay closing stream after read finish + + Closing the stream on the writing side my race with a pending + read. This + patch ensures that closing is delayed after reading is finished. + + https://bugzilla.gnome.org/show_bug.cgi?id=743990 + + gio/gdbusprivate.c | 28 +++++++++++++++++++++++----- + 1 file changed, 23 insertions(+), 5 deletions(-) + +commit c7f0ea435471024fc2531ac5185d9f4b5127bfb0 +Author: Ryan Lortie +AuthorDate: Wed Feb 4 17:47:39 2015 +0100 +Commit: Ryan Lortie +CommitDate: Tue Feb 17 16:16:52 2015 -0500 + + tests: check for NULL before g_object_unref() + + delayed_close_free() calls g_object_unref() on a variable that is + expected to possibly contain NULL (as indicated by the fact that the + NULL case is handled in my_slow_close_output_stream_close_async()). + + This is dead code right now (due to a bug in GDBus), which is why it + isn't actually causing a failure. It should still be fixed, however. + + https://bugzilla.gnome.org/show_bug.cgi?id=743990 + + gio/tests/gdbus-close-pending.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 619832f729fbe696575fe1c42a3101eab7691427 +Author: Colin Walters +AuthorDate: Tue Feb 17 13:36:20 2015 -0500 +Commit: Colin Walters +CommitDate: Tue Feb 17 13:37:03 2015 -0500 + + autocleanups: Use g_option_context_unref() + + This fixes a use of a deprecated API. + + glib/glib-autocleanups.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fcb30409ec7f5d2903f5f944c8b0b52fdffaab12 +Author: Lars Uebernickel +AuthorDate: Wed Feb 4 11:01:41 2015 +0100 +Commit: Lars Uebernickel +CommitDate: Tue Feb 17 19:09:47 2015 +0100 + + gapplication: never set the prgname to the app id + + GApplication set the prgname to the application's id when it was + running + in service mode. This broke with the addition of new --app-id option, + because g_set_prgname() was called before parsing the options. Calling + it after option parsing doesn't work, because GOptionContext sets + prgname to argv[0] unconditionally. + + Instead of changing the semantics of GOptionContext, simply remove + this + functionality from GApplication. It is very unusual to have the + prgname + set to the app id instead of the binary's name and might confuse + people + when looking at logs etc. + + When overriding local_command_line() from a subclass, + g_option_context_parse() might never be invokded. Thus, continue + setting + the prgname to argv[0] in GApplication. + + https://bugzilla.gnome.org/show_bug.cgi?id=743933 + + gio/gapplication.c | 23 ++++++----------------- + 1 file changed, 6 insertions(+), 17 deletions(-) + +commit 62f7ea8191bbfd05f40abee2af0146fb8a193362 +Author: Milo Casagrande +AuthorDate: Tue Feb 17 13:32:06 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Tue Feb 17 13:32:06 2015 +0000 + + Updated Italian translation + + po/it.po | 1261 + +++++++++++++++++++++++--------------------------------------- + 1 file changed, 470 insertions(+), 791 deletions(-) + +commit 0f2b54142a455dd7f31aa9f3795b9173edd8fb1d +Author: Lars Uebernickel +AuthorDate: Sun Feb 15 18:54:13 2015 +0100 +Commit: Lars Uebernickel +CommitDate: Mon Feb 16 07:38:43 2015 +0100 + + gapplication: add bind_busy_property() + + Balancing g_application_{un,}mark_busy() is non-trivial in some cases. + + Make it a bit more convenient by allowing to bind multiple boolean + properties (from different objects) to the busy state. As long + as these + properties are true, the application is marked as busy. + + https://bugzilla.gnome.org/show_bug.cgi?id=744565 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gapplication.c | 104 + ++++++++++++++++++++++++++++++++++++ + gio/gapplication.h | 5 ++ + 3 files changed, 110 insertions(+) + +commit c59d195dd2bc56d393c06b066c3ac80bea7016bb +Author: Matej Urbančič +AuthorDate: Sun Feb 15 21:11:57 2015 +0100 +Commit: Matej Urbančič +CommitDate: Sun Feb 15 21:11:57 2015 +0100 + + Updated Slovenian translation + + po/sl.po | 450 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 226 insertions(+), 224 deletions(-) + +commit f7d6c3ba904857f82e369f056f61f016b6b82c98 +Author: Sebastian Rasmussen +AuthorDate: Sun Feb 15 19:49:43 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Feb 15 19:49:43 2015 +0000 + + Updated Swedish translation + + po/sv.po | 3751 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 1963 insertions(+), 1788 deletions(-) + +commit 0adb8e9da5a72823ad319a0e176257ae15a2f536 +Author: Ivan Komaritsyn +AuthorDate: Sun Feb 15 09:10:44 2015 +0300 +Commit: Yuri Myasoedov +CommitDate: Sun Feb 15 09:10:44 2015 +0300 + + Updated Russian translation + + po/ru.po | 457 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 230 insertions(+), 227 deletions(-) + +commit ab8493fa907fa9abb1c07202c4d99b1874ba4bd8 +Author: Efstathios Iosifidis +AuthorDate: Sat Feb 14 17:09:14 2015 +0200 +Commit: Dimitris Spingos +CommitDate: Sat Feb 14 17:09:14 2015 +0200 + + Updated Greek translation + + po/el.po | 456 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 230 insertions(+), 226 deletions(-) + +commit a074c7a6f2c4468f9d4fdf9d03f3953b819207e6 +Author: Phillip Wood +AuthorDate: Wed Nov 5 15:04:45 2014 +0000 +Commit: Colin Walters +CommitDate: Fri Feb 13 16:16:06 2015 -0500 + + Test functions should have async scope + + The testing utilities execute fixture and test functions + asynchronously. + + https://bugzilla.gnome.org/show_bug.cgi?id=739724 + + glib/gtestutils.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 977be8c1494ac2e51414f956022e7441045d6ab7 +Author: Kjartan Maraas +AuthorDate: Thu Feb 12 01:27:02 2015 +0100 +Commit: Kjartan Maraas +CommitDate: Thu Feb 12 01:27:02 2015 +0100 + + Updated Norwegian bokmål translation. + + po/nb.po | 263 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 131 insertions(+), 132 deletions(-) + +commit 43df97ab86187a56495c8c00abb6130b7e379c8c +Author: Bastien Nocera +AuthorDate: Thu Jan 22 14:44:47 2015 +0100 +Commit: Bastien Nocera +CommitDate: Wed Feb 11 15:32:00 2015 +0100 + + goption: Add boxed type for GOptionGroup + + This would allow bindings to use _get_option_group() functions, which + would then allow them to use GOption parsing. + + This also adds introspection annotations to + g_option_context_add_group(), g_option_context_set_main_group() and + g_option_context_get_main_group(). + + https://bugzilla.gnome.org/show_bug.cgi?id=743349 + + glib/goption.c | 85 + ++++++++++++++++++++++++++++++++++++++-------------- + glib/goption.h | 6 +++- + gobject/gboxed.c | 2 ++ + gobject/glib-types.h | 11 +++++++ + 4 files changed, 81 insertions(+), 23 deletions(-) + +commit 93f2998765cf2d8b0416a7d645e600b111373a76 +Author: Philip Withnall +AuthorDate: Tue Dec 2 15:00:45 2014 +0000 +Commit: Philip Withnall +CommitDate: Wed Feb 11 09:17:33 2015 +0000 + + glist: Mention that g_list_length() is bad for checking list emptiness + + Despite linked lists being a fairly fundamental computer science + concept, some developers insist on using: + g_list_length (list) > 0 + to determine whether a list is non-empty, rather than using: + list != NULL + + Add a comment to the documentation for g_list_length() and + g_slist_length() pointing out the better alternative in the hope + that it + will prevent some of this abuse. + + https://bugzilla.gnome.org/show_bug.cgi?id=741024 + + glib/glist.c | 3 ++- + glib/gslist.c | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit 926955f325e1fee48301d5a595a78a5bffd86ce5 +Author: Matthias Clasen +AuthorDate: Tue Feb 10 19:49:10 2015 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 10 19:49:10 2015 -0500 + + 2.43.4 + + NEWS | 43 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 43 insertions(+) + +commit 56f0c637cffce17c3aae5033aa3142a5ebc4edfd +Author: Jasper St. Pierre +AuthorDate: Tue Feb 10 11:50:53 2015 -0800 +Commit: Jasper St. Pierre +CommitDate: Tue Feb 10 11:50:59 2015 -0800 + + Update .gitignore + + gio/tests/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit 433fc9475d351f3529bea0ea18a443eb5ec7f3dc +Author: Chun-wei Fan +AuthorDate: Mon Feb 9 15:42:01 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Feb 10 23:17:07 2015 +0800 + + gmem.h, gthread.h: Include glib/gutils.h + + gmem.h and gthread.h made use of the inline keyword, that is not + available + on all compilers in C-mode, causing builds to break on such compilers. + + Include glib/gutils.h which handles the inline issue, in place of + glib/gtypes.h if applicable, which is included quite early on by + glib/gutils.h. + + https://bugzilla.gnome.org/show_bug.cgi?id=744190 + + glib/gmem.h | 2 +- + glib/gthread.h | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +commit 59c0ff48257b812ad4542c914372fcc646abb0df +Author: Sébastien Wilmet +AuthorDate: Sun Oct 5 15:12:25 2014 +0200 +Commit: Sébastien Wilmet +CommitDate: Sun Feb 8 16:06:17 2015 +0100 + + GI annotation for g_get_charset() + + https://bugzilla.gnome.org/show_bug.cgi?id=736914 + + glib/gcharset.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 3f6d233e872e5d8a520486a644fb118d358a9be8 +Author: Sébastien Wilmet +AuthorDate: Thu Sep 18 17:16:59 2014 +0200 +Commit: Sébastien Wilmet +CommitDate: Sun Feb 8 16:06:17 2015 +0100 + + docs: code example for enumeration types + + I had to read the GTK+ code recently to have an example. + + https://bugzilla.gnome.org/show_bug.cgi?id=736914 + + gobject/genums.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit 0110f2a810cfd638a0a6525deb69aeec7a0f0cab +Author: Ryan Lortie +AuthorDate: Fri Feb 6 17:00:01 2015 +0100 +Commit: Ryan Lortie +CommitDate: Fri Feb 6 17:01:56 2015 +0100 + + g_steal_pointer: make it C++ clean + + We have a test that #includes our headers from a C++ program to make + sure we don't throw any errors or warnings as a result of that. + + The new inline implementation of g_steal_pointer() does an implicit + conversion from (void *), which is not valid in C++. + + Add a cast to avoid the problem. + + Thanks to Ignacio Casal Quinteiro for the report. + + glib/gmem.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit aa68b3d6d6f6d6c51e753b26b0fdc67b0eeefa17 +Author: Ryan Lortie +AuthorDate: Fri Feb 6 12:41:57 2015 +0100 +Commit: Ryan Lortie +CommitDate: Fri Feb 6 15:17:27 2015 +0100 + + tests: add a test case for g_steal_pointer() + + Just some basic checking to make sure it works as intended. + + https://bugzilla.gnome.org/show_bug.cgi?id=742456 + + glib/tests/utils.c | 39 +++++++++++++++++++++++++++++++++++++++ + 1 file changed, 39 insertions(+) + +commit e668796c5a90a19bce0ff893794817af6aad4dc2 +Author: Ryan Lortie +AuthorDate: Fri Feb 6 12:38:26 2015 +0100 +Commit: Ryan Lortie +CommitDate: Fri Feb 6 15:14:57 2015 +0100 + + Add new API g_steal_pointer() + + This is particularly nice when used with g_autoptr(). See examples in + the docs. + + This patch is based upon an idea (and original patch submission) from + Will Manley . + + https://bugzilla.gnome.org/show_bug.cgi?id=742456 + + glib/gmem.h | 71 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 71 insertions(+) + +commit b5538416c065bafe760220e92754f891abd254b2 +Author: Xavier Claessens +AuthorDate: Tue Feb 3 10:40:15 2015 -0500 +Commit: Ryan Lortie +CommitDate: Fri Feb 6 12:18:44 2015 +0100 + + GListModel: Use G_DECLARE_INTERFACE + + https://bugzilla.gnome.org/show_bug.cgi?id=743939 + + gio/gio-autocleanups.h | 1 - + gio/glistmodel.h | 12 +++--------- + 2 files changed, 3 insertions(+), 10 deletions(-) + +commit 3d39b8eb01aa5590865691a303ee9153b2a35cf5 +Author: Xavier Claessens +AuthorDate: Tue Feb 3 10:40:07 2015 -0500 +Commit: Ryan Lortie +CommitDate: Fri Feb 6 12:18:37 2015 +0100 + + Add G_DECLARE_INTERFACE + + https://bugzilla.gnome.org/show_bug.cgi?id=743939 + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gtype.h | 74 + +++++++++++++++++++++++++++++ + 2 files changed, 75 insertions(+) + +commit 1404d3e12819b342fda74d082dcb067a029141b1 +Author: Xavier Claessens +AuthorDate: Thu Feb 5 10:35:42 2015 -0500 +Commit: Ryan Lortie +CommitDate: Fri Feb 6 12:11:18 2015 +0100 + + Add GMutexLocker + + https://bugzilla.gnome.org/show_bug.cgi?id=744012 + + docs/reference/glib/glib-sections.txt | 5 +++ + glib/glib-autocleanups.h | 1 + + glib/gthread.h | 69 + +++++++++++++++++++++++++++++++++++ + 3 files changed, 75 insertions(+) + +commit 74c22150cf4c2f8a9c7d7fae058a7fd589a94a27 +Author: Xavier Claessens +AuthorDate: Thu Feb 5 16:20:43 2015 +0100 +Commit: Ryan Lortie +CommitDate: Thu Feb 5 16:20:43 2015 +0100 + + docs: fix up docs issues in gio/ + + docs/reference/gio/Makefile.am | 10 ++++ + docs/reference/gio/gio-sections.txt | 111 + +++++++++++++++++++++++++++++++++-- + gio/fen/fen-kernel.c | 1 - + gio/gaction.c | 7 +++ + gio/gactiongroup.c | 7 +++ + gio/gactionmap.c | 7 +++ + gio/gappinfo.c | 10 +++- + gio/gappinfo.h | 1 + + gio/gapplication.c | 10 ++++ + gio/gapplication.h | 5 -- + gio/gapplicationcommandline.c | 7 +++ + gio/gdbusactiongroup.c | 7 +++ + gio/gdbusmenumodel.c | 7 +++ + gio/gdbusobject.c | 7 +++ + gio/gdbusobjectmanager.c | 7 +++ + gio/gdesktopappinfo.c | 7 +++ + gio/gdesktopappinfo.h | 4 +- + gio/gfile.h | 3 + + gio/gfiledescriptorbased.h | 2 + + gio/gfileinfo.h | 4 +- + gio/gicon.h | 1 + + gio/giomodule.c | 12 ++++ + gio/gnetworkmonitor.c | 16 +++++ + gio/gproxyaddress.c | 8 +++ + gio/gproxyresolver.c | 13 ++++ + gio/gremoteactiongroup.c | 7 +++ + gio/gresource.c | 7 +++ + gio/gsettings.c | 7 +++ + gio/gsettingsbackend.h | 15 +++++ + gio/gsettingsschema.c | 15 ++++- + gio/gsimpleaction.c | 8 +++ + gio/gsocketcontrolmessage.h | 2 + + gio/gsocketlistener.h | 2 + + gio/gsocketservice.h | 2 + + gio/gtcpwrapperconnection.c | 7 +++ + gio/gtlsbackend.c | 4 ++ + gio/gtlscertificate.c | 1 - + gio/gtlsclientconnection.h | 8 +++ + gio/gtlspassword.h | 9 +++ + gio/gtlsserverconnection.h | 8 +++ + gio/gunixconnection.c | 7 +++ + gio/gunixfdlist.c | 7 +++ + gio/gunixfdmessage.c | 7 +++ + gio/gwin32mount.c | 2 +- + gio/kqueue/kqueue-exclusions.c | 2 +- + gio/kqueue/kqueue-helper.c | 4 +- + gio/win32/gwinhttpfile.c | 2 +- + gio/win32/gwinhttpfileinputstream.c | 2 +- + gio/win32/gwinhttpfileoutputstream.c | 2 +- + 49 files changed, 385 insertions(+), 26 deletions(-) + +commit 6a97275c4507e08b66fdeb4bb054bb8f78096f14 +Author: Xavier Claessens +AuthorDate: Thu Feb 5 15:24:27 2015 +0100 +Commit: Ryan Lortie +CommitDate: Thu Feb 5 16:01:17 2015 +0100 + + docs: fix many documentation issues in gobject/ + + docs/reference/gobject/Makefile.am | 5 ++--- + docs/reference/gobject/gobject-sections.txt | 5 ++++- + gobject/gboxed.c | 6 ------ + gobject/gclosure.c | 20 ++++++++++++++++++++ + gobject/gclosure.h | 19 +++++++++++++++++++ + gobject/gparam.c | 2 +- + gobject/gparam.h | 1 + + gobject/gsignal.c | 13 +++++++++++++ + gobject/gtype.h | 2 -- + gobject/gtypemodule.h | 14 ++++++++++++++ + gobject/gvaluecollector.h | 7 +++++++ + 11 files changed, 81 insertions(+), 13 deletions(-) + +commit 7417198e4e1915e3ab026ce454ebb3f6349af1c6 +Author: Ryan Lortie +AuthorDate: Wed Feb 4 16:29:56 2015 +0100 +Commit: Ryan Lortie +CommitDate: Wed Feb 4 16:30:24 2015 +0100 + + docs: fix typo in g_settings_new_full() docstring + + gio/gsettings.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8d96932cb8aa9869dece68318176900334f40b3f +Author: Ryan Lortie +AuthorDate: Wed Feb 4 15:37:27 2015 +0100 +Commit: Ryan Lortie +CommitDate: Wed Feb 4 15:37:27 2015 +0100 + + docs: add a bunch of pointless documentation + + Document each of the baked-in CClosure marshallers that we have in + gobject, along with their #GVaClosureMarshal equivalents. + + Based on a patch from Xavier Claessens + . + + gobject/gmarshal.c | 790 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 790 insertions(+) + +commit d4791bd383189f4ea056e4f2aa0c90171bf7a6be +Author: Xavier Claessens +AuthorDate: Mon Feb 2 09:46:31 2015 -0500 +Commit: Ryan Lortie +CommitDate: Wed Feb 4 15:07:15 2015 +0100 + + Doc: Fix g_auto and g_autoptr typo + + glib/docs.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit a1c85833d4951bdb7dfd2c252f7e318059c3389b +Author: Xavier Claessens +AuthorDate: Mon Feb 2 15:00:25 2015 -0500 +Commit: Ryan Lortie +CommitDate: Wed Feb 4 15:07:14 2015 +0100 + + Doc: Add missing functions in gio.types + + This is made by doing a build with --rebuild-types option, + then manually remove those functions: + g_win32_input_stream_get_type + g_win32_output_stream_get_type + g_io_extension_get_type + + Maybe Makefile.am could remove them automatically so we can + remove gio.types from git and rely on --rebuild-types option? + + docs/reference/gio/gio.types | 23 +++++++++++++++++------ + 1 file changed, 17 insertions(+), 6 deletions(-) + +commit 116d8fa042772be5828c4af8a1134ec09119b4fc +Author: Xavier Claessens +AuthorDate: Mon Feb 2 14:41:04 2015 -0500 +Commit: Ryan Lortie +CommitDate: Wed Feb 4 15:07:14 2015 +0100 + + Doc: sort and uniquify gio.types + + docs/reference/gio/gio.types | 76 + +++++++++++++++++++++----------------------- + 1 file changed, 36 insertions(+), 40 deletions(-) + +commit caf9db2dfbea4fd0306d4edf12b11ee91d235c7c +Author: Xavier Claessens +AuthorDate: Fri Jan 30 11:40:46 2015 -0500 +Commit: Ryan Lortie +CommitDate: Wed Feb 4 15:07:14 2015 +0100 + + Doc: Fix GListModel/GListStore + + docs/reference/gio/gio-sections.txt | 3 +-- + gio/glistmodel.c | 10 +++++++++- + gio/gliststore.c | 9 ++++++++- + 3 files changed, 18 insertions(+), 4 deletions(-) + +commit 642f7a5c792ae2c2ba6deb301f910a3ca9438eac +Author: Chun-wei Fan +AuthorDate: Wed Feb 4 16:00:52 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Feb 4 16:00:52 2015 +0800 + + Visual Studio 2008 Builds: Fix Header "Installation" + + Apparently I did not fix the "installation" of gliststore.h and + glistmodel.h fully for Visual Studio 2008 builds. Fix that. Doh! + + build/win32/vs9/glib-install.vsprops | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5b74681f5b4dd3f5fc93b82a4f706c2337d76a8d +Author: Aurélien Zanelli +AuthorDate: Tue Feb 3 15:41:05 2015 +0100 +Commit: Colin Walters +CommitDate: Tue Feb 3 11:48:18 2015 -0500 + + gnulib/vasprintf: handle unsigned modifier for long long + + Otherwise, an unsigned integer will be displayed as a signed one if we + use internal printf and if HAVE_LONG_LONG_FORMAT is not defined. + + https://bugzilla.gnome.org/show_bug.cgi?id=743936 + + glib/gnulib/vasnprintf.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit c1b0f178ca4739e7ab2e4e47c4585d41db8637e5 +Author: Lars Uebernickel +AuthorDate: Tue Feb 3 16:06:53 2015 +0100 +Commit: Lars Uebernickel +CommitDate: Tue Feb 3 16:08:37 2015 +0100 + + GListStore: fix preconditions in insert_sorted() + + gio/gliststore.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 2b536d3cbb718e9cf731bf07df96738341540701 +Author: Xavier Claessens +AuthorDate: Tue Feb 3 15:57:54 2015 +0100 +Commit: Ryan Lortie +CommitDate: Tue Feb 3 15:57:54 2015 +0100 + + docs: fix typos in G_DECLARE_*_TYPE + + https://bugzilla.gnome.org/show_bug.cgi?id=743656 + + gobject/gtype.h | 24 +++++++++++++----------- + 1 file changed, 13 insertions(+), 11 deletions(-) + +commit 26af7c152f602896cabf9ab6cb6ba42a47a5b992 +Author: Ryan Lortie +AuthorDate: Tue Feb 3 13:42:59 2015 +0100 +Commit: Ryan Lortie +CommitDate: Tue Feb 3 15:46:48 2015 +0100 + + tests: add test for GListStore inserted sort + + https://bugzilla.gnome.org/show_bug.cgi?id=743927 + + gio/tests/glistmodel.c | 96 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 96 insertions(+) + +commit 3f3eac474b26d5e01fbfdb50f3e45b7f7826bad9 +Author: Ryan Lortie +AuthorDate: Tue Feb 3 13:18:10 2015 +0100 +Commit: Ryan Lortie +CommitDate: Tue Feb 3 15:46:48 2015 +0100 + + GListStore: add sorted insert function + + Add g_list_store_insert_sorted() which takes a GCompareDataFunc to + decide where to insert. This ends up being a very trivial function, + thanks to GSequence. + + https://bugzilla.gnome.org/show_bug.cgi?id=743927 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gliststore.c | 39 + +++++++++++++++++++++++++++++++++++++ + gio/gliststore.h | 6 ++++++ + 3 files changed, 46 insertions(+) + +commit 6161b285da3d00fb4e02d4774d741799b6e18584 +Author: Chun-wei Fan +AuthorDate: Mon Feb 2 23:25:31 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Feb 3 20:20:46 2015 +0800 + + gtype.h: Fix Build on non-GCC + + Use the (private) _GLIB_DEFINE_AUTOPTR_CHAINUP macro for + G_DECLARE_DERIVABLE_TYPE and G_DECLARE_FINAL_TYPE so that we will + attempt to typedef and define items necessary for GCC + __attribute__((cleanup)) on, well, GCC only. + + This fixes the build on non-GCC. + + https://bugzilla.gnome.org/show_bug.cgi?id=743640 + + gobject/gtype.h | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +commit 696db7561560d9311dca93f0c849f96770f41d01 +Author: Chun-wei Fan +AuthorDate: Mon Feb 2 23:21:35 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Feb 3 18:11:30 2015 +0800 + + gmacros.h: Add Private Macro _GLIB_DEFINE_AUTOPTR_CHAINUP + + This is necessary as we are using _GLIB_AUTOPTR_TYPENAME and + _GLIB_AUTOPTR_FUNC_NAME in gtype.h for G_DECLARE_DERIVABLE_TYPE and + G_DECLARE_FINAL_TYPE, but _GLIB_AUTOPTR_TYPENAME and + _GLIB_AUTOPTR_FUNC_NAME expand to nothing on non-GCC, causing + builds on + non-GCC to break, due to bad typedef and function definitions. + + This patch defines a new private macro which does what is needed + on GCC + builds and does nothing on non-GCC builds, thus fixing the build. + + https://bugzilla.gnome.org/show_bug.cgi?id=743640 + + glib/gmacros.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit ccf696a6e1da37ed414f08edb745a99aba935211 +Author: Chun-wei Fan +AuthorDate: Mon Feb 2 13:33:18 2015 +0800 +Commit: Ryan Lortie +CommitDate: Mon Feb 2 11:16:45 2015 +0100 + + glistmodel.h: Fix _GListModelInterface Define + + "interface" is a reserved word on Visual Studio, so fix the build by + using g_iface instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=743827 + + gio/glistmodel.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 57a49f6891a0d69c0b3b686040bf81e303831b77 +Author: Ryan Lortie +AuthorDate: Mon Feb 2 09:16:55 2015 +0100 +Commit: Ryan Lortie +CommitDate: Mon Feb 2 09:17:44 2015 +0100 + + fix G_DEFINE_AUTO_CLEANUP_FREE_FUNC on non-GCC + + Add the missing 'none' argument to this macro in the non-GCC case. + The + none parameter was added after the others and I forgot to update the + non-GCC case. + + https://bugzilla.gnome.org/show_bug.cgi?id=743640 + + glib/gmacros.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 08f7f976961ca1174d187a917ec2a3d235f09448 +Author: Ryan Lortie +AuthorDate: Fri Jan 30 17:38:45 2015 +0100 +Commit: Ryan Lortie +CommitDate: Mon Feb 2 09:16:35 2015 +0100 + + docs: link the GListModel docs from the index + + docs/reference/gio/gio-docs.xml | 5 +++++ + 1 file changed, 5 insertions(+) + +commit dee57faa6ca60f451b83655b59af806da4a48a17 +Author: Chun-wei Fan +AuthorDate: Mon Feb 2 14:27:29 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Feb 2 14:27:29 2015 +0800 + + MSVC Builds: Fix "Installation" of GListModel Headers + + Somehow I had the wrong path for getting the headers... oops. + + build/win32/vs10/glib-install.props | 4 ++-- + build/win32/vs9/glib-install.vsprops | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 25e26ea034eff1b1f9823106efb3d8db5fcbeaed +Author: Chun-wei Fan +AuthorDate: Mon Feb 2 14:16:18 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Feb 2 14:16:18 2015 +0800 + + MSVC Builds: Update vs11|vs12/Makefile.am + + The rename of install.vxproj to glib-install.vcxproj needs to + be applied + here as well for dist'ing the project files correctly. + + build/win32/vs11/Makefile.am | 2 +- + build/win32/vs12/Makefile.am | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 444a5fcd4a22ca8c78cde5b4ee333287429c980e +Author: Chun-wei Fan +AuthorDate: Mon Feb 2 12:49:42 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Feb 2 12:49:42 2015 +0800 + + MSVC Builds: Rename "install" Projects + + Rename the project to "install" the GLib files, as we are planning + to have + a grand solution file that would build the entire GTK+ stack with + its deps, + to ease the process for people building the GTK+ stack from a stock + installation of Visual Studio. + + build/win32/vs10/Makefile.am | 2 +- + build/win32/vs10/glib-install.vcxproj | 164 + ++++++++++++++++++++++++++++++++++ + build/win32/vs10/glib.sln | 2 +- + build/win32/vs10/install.vcxproj | 164 + ---------------------------------- + build/win32/vs9/Makefile.am | 2 +- + build/win32/vs9/glib-install.vcproj | 77 ++++++++++++++++ + build/win32/vs9/glib.sln | 2 +- + build/win32/vs9/install.vcproj | 77 ---------------- + 8 files changed, 245 insertions(+), 245 deletions(-) + +commit 407adc6ea12e08950b36722b95fa54ef925de53a +Author: Chun-wei Fan +AuthorDate: Mon Feb 2 11:16:29 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Feb 2 11:16:29 2015 +0800 + + gobject\gtype.h: Make up for Missing '\' + + The macro definition for G_DECLARE_DERIVABLE_TYPE was missing a + '\' when + we wanted to ignore deprecation warnings for it. + + gobject/gtype.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 65f4bd17a2bab8c8ffb13a4c0311cfda86c5a630 +Author: Chun-wei Fan +AuthorDate: Mon Feb 2 11:14:07 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Feb 2 11:14:07 2015 +0800 + + One More Update For MSVC Builds + + We also need to "install" the headers for Lars' new APIs for + GListModel/ + GListStore. + + build/win32/vs10/glib-install.props | 2 ++ + build/win32/vs9/glib-install.vsprops | 2 ++ + 2 files changed, 4 insertions(+) + +commit 50012fb426394c21f656c9c01f41cdf031794f28 +Author: Chun-wei Fan +AuthorDate: Mon Feb 2 10:51:25 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Feb 2 10:51:25 2015 +0800 + + MSVC Builds: "Install" the Autocleanup Headers + + We are including the autocleanup headers as public headers for + all builds, + although they work only for GCC in reality, so "install" them. + + Also clean up a bit as we are having "\\" in places, where we + only need + "\". + + build/win32/vs10/glib-install.props | 283 + ++++++++++++++++++----------------- + build/win32/vs9/glib-install.vsprops | 283 + ++++++++++++++++++----------------- + 2 files changed, 286 insertions(+), 280 deletions(-) + +commit e2f8afdd85c18c6eea4ce42b0c9dad2cdbfc9b3e +Author: Ryan Lortie +AuthorDate: Fri Jan 30 15:21:20 2015 +0100 +Commit: Ryan Lortie +CommitDate: Fri Jan 30 16:58:40 2015 +0100 + + gio: add support for g_auto() and g_autoptr() + + Add support to libgio types for the new cleanup macros. + + https://bugzilla.gnome.org/show_bug.cgi?id=743640 + + gio/Makefile.am | 1 + + gio/gdbusdaemon.h | 2 + + gio/gdesktopappinfo.h | 2 + + gio/gfiledescriptorbased.h | 1 + + gio/gio-autocleanups.h | 147 + ++++++++++++++++++++++++++++++++++++++++++ + gio/gio.h | 2 + + gio/gunixconnection.h | 2 + + gio/gunixcredentialsmessage.h | 2 + + gio/gunixfdlist.h | 1 + + gio/gunixfdmessage.h | 2 + + gio/gunixinputstream.h | 2 + + gio/gunixmount.h | 1 + + gio/gunixmounts.h | 1 + + gio/gunixoutputstream.h | 2 + + gio/gunixsocketaddress.h | 2 + + gio/gunixvolume.h | 1 + + gio/gwin32appinfo.h | 2 + + gio/gwin32inputstream.h | 2 + + gio/gwin32mount.h | 1 + + gio/gwin32outputstream.h | 2 + + 20 files changed, 178 insertions(+) + +commit 8ea414c8c6c40e208ebe4a9fdd41c7abdb05c392 +Author: Ryan Lortie +AuthorDate: Wed Jan 28 11:47:05 2015 +0000 +Commit: Ryan Lortie +CommitDate: Fri Jan 30 16:52:36 2015 +0100 + + G_DECLARE_*_TYPE: add auto cleanup support + + Automatically add support for the new cleanup macros to the type + declaration macros. + + This is an API break because now your parent class needs to support + cleanup if you want to use G_DECLARE_*_TYPE. These macros are only 1 + day old, however, so that's probably not a big problem (and we are + already busy adding the macros all over GLib and Gtk+). + + https://bugzilla.gnome.org/show_bug.cgi?id=743640 + + gobject/gtype.h | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit 3d5de34def8b3120190ffb2561b5093abb6a3abb +Author: Ryan Lortie +AuthorDate: Wed Jan 28 11:46:34 2015 +0000 +Commit: Ryan Lortie +CommitDate: Fri Jan 30 16:52:36 2015 +0100 + + gobject: add support for g_auto() and g_autoptr() + + Add support to libgobject types for the new cleanup macros. + + https://bugzilla.gnome.org/show_bug.cgi?id=743640 + + glib/glib-object.h | 2 ++ + gobject/Makefile.am | 1 + + gobject/gobject-autocleanups.h | 26 ++++++++++++++++++++++++++ + 3 files changed, 29 insertions(+) + +commit 663834671dd34e95f7dbb6b96bebf1daac468c93 +Author: Ryan Lortie +AuthorDate: Wed Jan 28 11:45:26 2015 +0000 +Commit: Ryan Lortie +CommitDate: Fri Jan 30 16:52:36 2015 +0100 + + glib: add support for g_auto() and g_autoptr() + + Add support to the libglib types for the new cleanup macros. + + https://bugzilla.gnome.org/show_bug.cgi?id=743640 + + glib/Makefile.am | 1 + + glib/glib-autocleanups.h | 67 + ++++++++++++++++++++++++++++++++++++++++++++++++ + glib/glib.h | 2 ++ + 3 files changed, 70 insertions(+) + +commit 2596919c58a364243196e65a9adda693448139f7 +Author: Ryan Lortie +AuthorDate: Wed Jan 28 11:27:35 2015 +0000 +Commit: Ryan Lortie +CommitDate: Fri Jan 30 16:49:53 2015 +0100 + + macros: add support for GNUC cleanup __attribute__ + + Add g_auto() and g_autoptr() as helpers for declaring variables with + automatic cleanup. + + Add some macros to help types define cleanup functions for themselves. + + Going forward it will be an expectation that people use this + macro when + creating a new type, even if they do not intend to use the + auto-cleanup + functionality for themselves. + + These new macros only work on GCC and clang, which is why we resisted + adding them for so long. There exist many people who are only + interested in writing programs for these compilers, however, and a + similar API in libgsystem has proven to be extremely popular, so let's + expose this functionality to an even wider audience. + + We ignore deprecation warnings when emitting the free functions, which + seems suspicious. The reason that we do this is not because we + want to + call deprecated functions, but just the opposite: sometimes the free + function will be an _unref() function that is only AVAILABLE_IN newer + versions, and these warnings are also implemented as deprecation + warnings. + + https://bugzilla.gnome.org/show_bug.cgi?id=743640 + + docs/reference/glib/glib-sections.txt | 7 ++ + glib/docs.c | 190 + ++++++++++++++++++++++++++++++++++ + glib/gmacros.h | 34 ++++++ + 3 files changed, 231 insertions(+) + +commit b5e1ea6fee6ac5b97585ffc1e30eb4f1ec137e1f +Author: Ryan Lortie +AuthorDate: Fri Jan 30 16:40:03 2015 +0100 +Commit: Ryan Lortie +CommitDate: Fri Jan 30 16:49:53 2015 +0100 + + DECLARE_TYPE: ignore deprecations in inlines + + Prevent complaints about deprecations in the inline functions + emitted by + the new G_DECLARE_*_TYPE macros. + + gobject/gtype.h | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 9d0389b3b574e6e0fc181ac161bf7c9ccd231e15 +Author: Ryan Lortie +AuthorDate: Wed Jan 28 11:30:23 2015 +0000 +Commit: Ryan Lortie +CommitDate: Fri Jan 30 16:49:53 2015 +0100 + + G_DECLARE_FINAL_TYPE: trivial fix in docs comment + + https://bugzilla.gnome.org/show_bug.cgi?id=743640 + + gobject/gtype.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 93982d4a16d8623137177da2f994abaf8075b4b0 +Author: Ryan Lortie +AuthorDate: Fri Jan 30 15:30:02 2015 +0100 +Commit: Ryan Lortie +CommitDate: Fri Jan 30 15:30:02 2015 +0100 + + giotypefuncs test: tweak _get_type() regexp + + Make sure that we only match the _get_type() function name by + restricting the regexp to matching [A-Za-z0-9_]. We were matching + on .* + before which means that if we had two _get_type() functions + appearing on + a single line then we would get everything in between them included + (by + the default rule of '*' being greedy). + + This affected G_DECLARE_*_TYPE which puts several uses of _get_type() + into a single line. + + gio/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b69beff42691ef300b6829beb261ca4cdfff02be +Author: Lars Uebernickel +AuthorDate: Thu May 1 20:04:32 2014 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jan 30 15:08:57 2015 +0100 + + Add GListModel + + GListModel is an interface that represents a dynamic list of GObjects. + + Also add GListStore, a simple implementation of GListModel that stores + all objects in memory, using a GSequence. + + https://bugzilla.gnome.org/show_bug.cgi?id=729351 + + docs/reference/gio/gio-sections.txt | 38 ++++ + gio/Makefile.am | 4 + + gio/gio.h | 2 + + gio/giotypes.h | 2 + + gio/glistmodel.c | 260 ++++++++++++++++++++++ + gio/glistmodel.h | 78 +++++++ + gio/gliststore.c | 421 + ++++++++++++++++++++++++++++++++++++ + gio/gliststore.h | 66 ++++++ + gio/tests/Makefile.am | 1 + + gio/tests/glistmodel.c | 132 +++++++++++ + 10 files changed, 1004 insertions(+) + +commit 6d55189d8c7eaf95b7d94d62b6e88caccaa4034a +Author: Lars Uebernickel +AuthorDate: Mon Jan 26 10:13:26 2015 +0000 +Commit: Lars Uebernickel +CommitDate: Wed Jan 28 18:09:28 2015 +0000 + + gsettings: add g_settings_schema_list_children + + https://bugzilla.gnome.org/show_bug.cgi?id=743517 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gsettings.c | 24 +--------------------- + gio/gsettingsschema.c | 41 + +++++++++++++++++++++++++++++++++++++ + gio/gsettingsschema.h | 3 +++ + 4 files changed, 46 insertions(+), 23 deletions(-) + +commit d95bb1f08b07c3ae701076cd9d3cf6894a122e9c +Author: Lars Uebernickel +AuthorDate: Mon Jan 26 09:50:34 2015 +0000 +Commit: Lars Uebernickel +CommitDate: Wed Jan 28 18:09:28 2015 +0000 + + gsettings: add g_settings_schema_key_get_name + + https://bugzilla.gnome.org/show_bug.cgi?id=743517 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gsettingsschema.c | 18 ++++++++++++++++++ + gio/gsettingsschema.h | 2 ++ + 3 files changed, 21 insertions(+) + +commit f3c604d2735fd63c5d45ecbeff9cb0e90d3356ac +Author: Christian Hergert +AuthorDate: Tue Jan 27 18:50:04 2015 +0000 +Commit: Ryan Lortie +CommitDate: Wed Jan 28 13:22:23 2015 +0000 + + G_DECLARE_DERIVED_TYPE: allow forward declarations + + This allows multiple declarations such as: + + typedef struct _Foo Foo; + + as is needed when you have systems with circular referencing. + + https://bugzilla.gnome.org/show_bug.cgi?id=743596 + + gobject/gtype.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit e8d3f29300b695b1f49723fc561f3ab81a1fb361 +Author: Dan Winship +AuthorDate: Tue Jan 27 07:38:31 2015 -0500 +Commit: Dan Winship +CommitDate: Tue Jan 27 07:38:31 2015 -0500 + + gcredentialsprivate: clarify the USE_FREEBSD_CMSGCRED users + + Add comments clarifying what the three non-FreeBSD platforms using + G_CREDENTIALS_USE_FREEBSD_CMSGCRED are. + + gio/gcredentialsprivate.h | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 4c54b9fe31b2a9b2db3ccbce71ae486001cb8b5e +Author: Peeter Must +AuthorDate: Tue Jan 27 11:34:48 2015 +0900 +Commit: Dan Winship +CommitDate: Tue Jan 27 07:31:24 2015 -0500 + + gcredentials: Add support for DragonFly + + https://bugzilla.gnome.org/show_bug.cgi?id=743508 + + gio/gcredentialsprivate.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3b4cb28e17c6a5dac64eb8afda2b1143757ad7a4 +Author: Ryan Lortie +AuthorDate: Mon Feb 3 17:40:17 2014 +0000 +Commit: Ryan Lortie +CommitDate: Tue Jan 27 11:07:52 2015 +0000 + + gtype: add type declaration macros for headers + + Add G_DECLARE_DERIVABLE_TYPE() and G_DECLARE_FINAL_TYPE() to allow + skipping almost all of the typical GObject boilerplate code. + + These macros make some assumptions about GObject best practice + that mean + that they may not be usable with older classes that have to preserve + API/ABI compatibility with a time before these practices existed. + + https://bugzilla.gnome.org/show_bug.cgi?id=389585 + + docs/reference/gobject/gobject-sections.txt | 2 + + gobject/gtype.h | 158 + ++++++++++++++++++++++++++++ + 2 files changed, 160 insertions(+) + +commit e07cc89dee9ef3ad7d0062c0ac669025584ef281 +Author: Chun-wei Fan +AuthorDate: Mon Jan 26 11:17:28 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jan 27 12:17:25 2015 +0800 + + glib-sections.txt: Add g_win32_check_windows_version() + + https://bugzilla.gnome.org/show_bug.cgi?id=741895 + + docs/reference/glib/glib-sections.txt | 2 ++ + 1 file changed, 2 insertions(+) + +commit bcbf80c35580142216f4b1ed2f71717efb2de99d +Author: Chun-wei Fan +AuthorDate: Mon Jan 26 11:11:48 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jan 27 12:17:14 2015 +0800 + + gwin32: Add g_win32_check_windows_version() API + + This adds a public API where one can use to see whether the running + version + of Windows where the code is run is at least the specified version, + service + pack level, and the type (non-server, server, any) of the running + Windows + OS. + + This API is done as: + -GetVersion()/GetVersionEx() changed in the way they work since + Windows 8.1 + [1][2], so a newer mechanism to check the version of the running + Windows + operating system is needed. MSDN also states that GetVersion() + might be + further changed or removed after Windows 8.1. This provides a + wrapper for + VerfyVersionInfo() as well in GLib for most cases, which was + recommended + in place of g_win32_get_windows_version() for more detailed Windows + version checking. + -Provides an OS-level functionality check, for those that we don't + need to + venture into GetProcAddress(), and also to determine system API + behavior + changes due to differences in OS versions. + + Also added a note for the g_win32_get_windows_version() API that + since the + behavior of GetVersion() which it uses, is changed since Windows + 8.1, users + of the API should be aware. + + [1]: + http://msdn.microsoft.com/zh-tw/library/windows/desktop/ms724451%28v=vs.85%29.aspx + [2]: + http://msdn.microsoft.com/zh-tw/library/windows/desktop/ms724451%28v=vs.85%29.aspx + + https://bugzilla.gnome.org/show_bug.cgi?id=741895 + + glib/gwin32.c | 82 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- + glib/gwin32.h | 26 ++++++++++++++++++- + 2 files changed, 105 insertions(+), 3 deletions(-) + +commit be2d9b4f5801380ac02e8d158686538d10e3dee5 +Author: Cosimo Cecchi +AuthorDate: Mon Jan 26 11:18:06 2015 +0000 +Commit: Cosimo Cecchi +CommitDate: Mon Jan 26 12:06:24 2015 +0000 + + GSimpleAction: add g_simple_action_set_state_hint + + Currently the only way to set a state hint on an action is through a + subclass; add a g_simple_action_set_state_hint() method so that this + becomes easier for clients that already use GSimpleAction. + + https://bugzilla.gnome.org/show_bug.cgi?id=743521 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gsimpleaction.c | 39 + ++++++++++++++++++++++++++++++++++++- + gio/gsimpleaction.h | 4 ++++ + 3 files changed, 43 insertions(+), 1 deletion(-) + +commit 2a0c18041ba71435df3fc3834d360553c97fdfe4 +Author: Ilya Konstantinov +AuthorDate: Sat Dec 20 11:19:00 2014 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 26 09:06:13 2015 +0000 + + gthread: add thread name support on Mac OS + + https://bugzilla.gnome.org/show_bug.cgi?id=741807 + + configure.ac | 10 ++++++++++ + glib/gthread-posix.c | 8 ++++---- + 2 files changed, 14 insertions(+), 4 deletions(-) + +commit 1cf7f5a2400ee9f4140e5c5bfab60e536bdabf14 +Author: Philip Withnall +AuthorDate: Sun Jan 25 17:09:35 2015 +0000 +Commit: Philip Withnall +CommitDate: Sun Jan 25 17:09:35 2015 +0000 + + gobject: Fix a typo in a documentation comment + + gobject/gobject.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4462cd30bc737a590ab8eec8b50b90e9952ad083 +Author: Philip Withnall +AuthorDate: Sun Jan 25 17:09:24 2015 +0000 +Commit: Philip Withnall +CommitDate: Sun Jan 25 17:09:24 2015 +0000 + + gthread: Fix a typo in a documentation comment + + glib/gthread.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 92041f4b3b7eca6ddff0bade48b77d88f906ca6f +Author: Philip Withnall +AuthorDate: Sun Jan 25 16:22:43 2015 +0000 +Commit: Philip Withnall +CommitDate: Sun Jan 25 16:22:43 2015 +0000 + + gstrfuncs: Document that g_ascii_dtostr() writes a nul terminator + + And g_ascii_formatd(). + + Reviewed-by: Ryan Lortie + + glib/gstrfuncs.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit ef09373e03c9f2f8bf9388013c812bb73c12076f +Author: Chun-wei Fan +AuthorDate: Wed Jan 21 14:28:47 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Jan 21 14:28:47 2015 +0800 + + gio/Makefile.am: Fix MSVC Project Generation + + We need to filter out gnetworkmonitornm.c in the MSVC Projects, + as that is + UNIX-only code. + + gio/Makefile.am | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 29307b4e41d36bfbc73f3c6405d6ccdfbf1f87e6 +Author: Ryan Lortie +AuthorDate: Tue Jan 20 01:38:13 2015 -0500 +Commit: Ryan Lortie +CommitDate: Tue Jan 20 01:38:13 2015 -0500 + + bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 95ea50d73c342796bffd20110c62dc9aef988c0c +Author: Ryan Lortie +AuthorDate: Tue Jan 20 00:05:11 2015 -0500 +Commit: Ryan Lortie +CommitDate: Tue Jan 20 00:05:28 2015 -0500 + + GLib 2.43.3 + + NEWS | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +commit 11a846b6bf646ef6b4686c02fdf3fd8d2c72fb41 +Author: Philip Withnall +AuthorDate: Fri Jan 16 09:14:08 2015 +0000 +Commit: Philip Withnall +CommitDate: Sun Jan 18 23:04:05 2015 +0000 + + gtestutils: Add an example of using test fixtures + + Add a simple example of a test suite with two unit tests both + using the + same fixture. + + https://bugzilla.gnome.org/show_bug.cgi?id=743014 + + glib/gtestutils.c | 64 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 64 insertions(+) + +commit ee245b57ffa8fb0677d9eaf48bfcaf20ced638ea +Author: Inaki Larranaga Murgoitio +AuthorDate: Sat Jan 17 17:14:46 2015 +0100 +Commit: dooteo +CommitDate: Sat Jan 17 17:14:46 2015 +0100 + + Updated Basque language + + po/eu.po | 431 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 216 insertions(+), 215 deletions(-) + +commit cf03e824780d4ca58de664737bf5ba9ed416cfa2 +Author: Ignacio Casal Quinteiro +AuthorDate: Mon Dec 22 16:38:50 2014 +0100 +Commit: Paolo Borelli +CommitDate: Sat Jan 17 15:04:25 2015 +0100 + + gsocket: always try before waiting for condition + + When implementing blocking operations on top of + nonblocking sockets we should always first try to + perform the operation and then if needed handle + EAGAIN and wait with g_socket_wait_condition. + This is an optimization since we avoid calling + wait condition when it is not needed, but most + importantly this fixes hangs on win32 where some + events (in particular FD_WRITE) are only emitted + after the operation fails with EWOULDBLOCK. + + https://bugzilla.gnome.org/show_bug.cgi?id=732439 + https://bugzilla.gnome.org/show_bug.cgi?id=741707 + + gio/gsocket.c | 147 + ++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 77 insertions(+), 70 deletions(-) + +commit 4f4714285dcc5c3ce9c87f65d9f684f285113a6e +Author: Paolo Borelli +AuthorDate: Sat Jan 10 15:23:07 2015 +0100 +Commit: Paolo Borelli +CommitDate: Sat Jan 17 15:04:25 2015 +0100 + + gsocket: add a testcase that shows a hang on win32 + + Add a unit test that checks g_socket_new_from_fd by creating + a gsocket, obtaining its fd, duplicating the fd and then creating + a gsocket from the new fd. This shows a hang on win32 since the + gsocket created from the fd never receives the FD_WRITE event + because we wait for the condition without first trying to write + and windows signals the condition only after a EWOULDBLOCK error. + + https://bugzilla.gnome.org/show_bug.cgi?id=741707 + + gio/tests/socket.c | 94 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 94 insertions(+) + +commit 2c5076cd58d27eca46aa32ea44ec54cefb96499e +Author: Philip Withnall +AuthorDate: Fri Jan 16 09:22:21 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Jan 16 09:22:21 2015 +0000 + + gtestutils: Add links to gtester and gtester-report documentation + + Link some existing text to make cross-referencing a little easier. + + glib/gtestutils.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 056f50ce94e4b5c6bf6c128c348983401b402b45 +Author: Philip Withnall +AuthorDate: Fri Jan 16 09:18:41 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Jan 16 09:18:41 2015 +0000 + + gtestutils: Fix a typo in the g_test_add() documentation + + glib/gtestutils.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 7dd7c04148dac716ce2eb7df72056d739efa3c30 +Author: Philip Withnall +AuthorDate: Fri Jan 16 09:10:46 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Jan 16 09:15:07 2015 +0000 + + gtestutils: Clarify that test fixtures are allocated by GLib + + Make it a little clearer that the user’s fixture setup and teardown + functions don’t have to do the allocation or freeing. + + glib/gtestutils.c | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +commit 123bd7aecf29598a8a04d55998bf8ec778fc6dd7 +Author: Philip Withnall +AuthorDate: Fri Jan 16 09:12:53 2015 +0000 +Commit: Philip Withnall +CommitDate: Fri Jan 16 09:15:07 2015 +0000 + + gtestutils: Fix a typo in the g_test_run() documentation + + glib/gtestutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9114923db213a53cdaee7de8dd1ad818919048a2 +Author: Philip Withnall +AuthorDate: Thu Jan 15 14:20:33 2015 +0000 +Commit: Philip Withnall +CommitDate: Thu Jan 15 14:22:25 2015 +0000 + + ggettext: Include an example of setlocale() and friends in the + i18n docs + + Include an example main() function, and include a link to the gettext + manual’s section on integrating gettext with build systems. + + That should work as a complete reference for how to add i18n + support to + an application. + + https://bugzilla.gnome.org/show_bug.cgi?id=742972 + + glib/ggettext.c | 24 +++++++++++++++++++++--- + 1 file changed, 21 insertions(+), 3 deletions(-) + +commit 7a8ef00aae2620b66306c8ab521e0d109e38d1ab +Author: Paolo Borelli +AuthorDate: Tue Jan 13 12:44:20 2015 +0100 +Commit: Paolo Borelli +CommitDate: Wed Jan 14 16:21:00 2015 +0100 + + Avoid warning when using G_STMT_END macro with MSVC + + Workaround found on + http://cnicholson.net/2009/03/stupid-c-tricks-dowhile0-and-c4127/ + + https://bugzilla.gnome.org/show_bug.cgi?id=742851 + + glib/gmacros.h | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 432476355bc03ca4b62508f90747497644cc687c +Author: Paolo Borelli +AuthorDate: Tue Jan 13 13:22:07 2015 +0100 +Commit: Paolo Borelli +CommitDate: Wed Jan 14 16:21:00 2015 +0100 + + Use G_STMT_START/END in gslice.h + + glib/gslice.h | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit be0c9e507a59aec5655a1c109adb3b0a588e2502 +Author: Paolo Borelli +AuthorDate: Tue Jan 13 13:19:58 2015 +0100 +Commit: Paolo Borelli +CommitDate: Wed Jan 14 16:21:00 2015 +0100 + + Use G_STMT_START/END in gtestutils + + glib/gtestutils.h | 72 + ++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 45 insertions(+), 27 deletions(-) + +commit 70e2630f5aa7045cafda2ede0d25f325adc37152 +Author: Philip Withnall +AuthorDate: Fri Dec 19 21:10:53 2014 +0000 +Commit: Philip Withnall +CommitDate: Wed Jan 14 10:53:04 2015 +0000 + + gsettings: Fix a typo in the GSettings documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=741788 + + gio/gsettings.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b1e5b0e73324d9c2db6abb4cf459cbb9b03a24ef +Author: Matthias Clasen +AuthorDate: Tue Jan 13 16:54:59 2015 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 13 16:54:59 2015 -0500 + + Bump version + + So that early adopters of new api have a version to target. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f7be461601ab51a9f29e1fd07692efb261d0104b +Author: Iain Lane +AuthorDate: Mon Jan 12 10:03:18 2015 +0000 +Commit: Lars Uebernickel +CommitDate: Tue Jan 13 12:11:06 2015 +0100 + + gnetworkmonitornm: Check if network-manager is running + + We were asking for properties on NM's dbus interface, but if NM is not + running then there won't be any. Check if the name has an owner before + doing anything to it. + + https://bugzilla.gnome.org/show_bug.cgi?id=741653 + + gio/gnetworkmonitornm.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit 84a1efeabd56b080a2a63acb783a9bbc35513873 +Author: Ryan Lortie +AuthorDate: Wed Jan 7 16:15:22 2015 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 10 18:00:02 2015 -0500 + + configure.ac: reject 'universal' builds + + AC_C_BIGENDIAN can return 'universal' as the result in the case + that we + are trying to do a universal build on Mac OS. This has to be + opted into + explicitly by using multiple -arch CFLAGS. + + Previously, we detected this result and fell back to doing our + own check + based on the endianness of the build machine, hardcoding that. This + means that universal builds might successfully build, but the binaries + would never actually run correctly on the 'opposite' arch. + + This check was added because of a bug in the intial implementation of + this detection in autoconf, which was inappropriately identifying + non-macos compilers as 'universal'. That was hitting ppc64 systems. + See https://bugzilla.redhat.com/show_bug.cgi?id=449944 for more info. + + Commit b0e687ef42e21b1eb7af18c4eaebcd41b0bd5632 in autoconf ("Limit + AC_C_BIGENDIAN univeral checks to Mac OS X") solved this issue + in 2008, + so let's remove our workaround. For good measure, if we detect + "universal" in the result, error out. + + https://bugzilla.gnome.org/show_bug.cgi?id=742548 + + configure.ac | 12 +----------- + 1 file changed, 1 insertion(+), 11 deletions(-) + +commit 12b5eff6dc612b0bfbff4e84806442c3b0daa432 +Author: Rafael Ferreira +AuthorDate: Fri Jan 9 01:49:13 2015 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Jan 9 01:49:13 2015 +0000 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 1009 + ++++++++++++++++++++++++++++------------------------------- + 1 file changed, 471 insertions(+), 538 deletions(-) + +commit 1632d5716e5df22ff4eaf5698245cee2dd70f82c +Author: Chun-wei Fan +AuthorDate: Wed Jan 7 09:59:47 2015 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Jan 7 09:59:47 2015 +0800 + + Win32: Update Pre-configured Config Headers + + Update config.h.win32.in and glibconfig.h.win32.in so that they + will be + in-line with the ones that are produced with configure.ac, for use on + Windows builds. + + Thanks to Philip Withnall for pointing out the changes needed + to update + glibconfig.h.win32.in in bug 727829. + + config.h.win32.in | 3 +++ + glib/glibconfig.h.win32.in | 8 ++++++-- + 2 files changed, 9 insertions(+), 2 deletions(-) + +commit 327d35ed414b845e0199a11e8bcbb5296ad70c95 +Author: Timm Bäder +AuthorDate: Mon Jan 5 11:51:46 2015 +0100 +Commit: Timm Bäder +CommitDate: Mon Jan 5 11:51:46 2015 +0100 + + gnetworkmonitornm: Prevent crash + + g_dbus_proxy_get_cached_property_names can return NULL if there are no + cached properties, so don't try to access them in that case. + + gio/gnetworkmonitornm.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit aa4e2d4dc3131076bed5f8e3fb83d4238a4f93b9 +Author: TingPing +AuthorDate: Sat Aug 16 04:47:46 2014 -0400 +Commit: Ryan Lortie +CommitDate: Sun Jan 4 22:09:37 2015 -0500 + + Fix GContentType usage + + https://bugzilla.gnome.org/show_bug.cgi?id=734946 + + gio/glocalfileinfo.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 48293bb47d9c1fa403d54e3f9f7bd4f2f1b8ad1e +Author: Matthias Clasen +AuthorDate: Tue Dec 23 19:49:27 2014 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 23 19:49:41 2014 -0500 + + Fix a typo + + glib/gdatetime.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8344bf117929bfa70d5bf99937ab176a9ab0c8fb +Author: Erick Pérez Castellanos +AuthorDate: Sun Dec 21 11:08:39 2014 -0500 +Commit: Erick Pérez Castellanos +CommitDate: Mon Dec 22 11:02:08 2014 -0500 + + Fix document typo + + This one was making syntax highlighting fail. + + gio/gsettings.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 30abc73c1a8ff1e86513d7b3f4d1ba1a51d70790 +Author: Matthias Clasen +AuthorDate: Sat Dec 20 21:32:53 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 20 21:32:53 2014 -0500 + + Silence the build some more + + glib/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c447bc7f93fbc6e1aaf7f46eef9da2f820c8f209 +Author: Thomas Haller +AuthorDate: Wed Dec 17 10:00:35 2014 +0100 +Commit: Thomas Haller +CommitDate: Thu Dec 18 15:02:16 2014 +0100 + + gobject: don't use G_STRLOC in G_OBJECT_WARN_INVALID_PSPEC() macro + + Using G_STRLOC ends up embedding unique strings of the form + __FILE__:__LINE__ in the compiled binary. We can avoid these + by passing __FILE__ and __LINE__ separately when constructing + the warning text. + This probably reduces the size of the binary as __FILE__ is + likely already contained as string otherwise. + + Note that for GCC 2.x this changes behavior because G_STRLOC + also contained __PRETTY_FUNCTION__. + + https://bugzilla.gnome.org/show_bug.cgi?id=741654 + + gobject/gobject.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d951db4236146efd8f4f343740d50433739526c8 +Author: Philip Withnall +AuthorDate: Tue Dec 16 11:29:03 2014 +0000 +Commit: Philip Withnall +CommitDate: Thu Dec 18 11:32:56 2014 +0000 + + gobject: Add g_set_object() convenience function to set GObject + pointers + + Along the same lines as g_clear_object(), g_set_object() is a + convenience function to update a GObject pointer, handling reference + counting transparently and correctly. + + Specifically, it handles the case where a pointer is set to its + current + value. If handled naïvely, that could result in the object instance + being finalised. In the following code, that happens when + (my_obj == new_value) and the object has a single reference: + g_clear_object (&my_obj); + my_obj = g_object_ref (new_value); + + It also simplifies boilerplate code such as set_property() + implementations, which are otherwise long and boring. + + Test cases included. + + https://bugzilla.gnome.org/show_bug.cgi?id=741589 + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gobject.h | 63 + +++++++++++++++++++++++++++++ + gobject/tests/reference.c | 60 + +++++++++++++++++++++++++++ + 3 files changed, 124 insertions(+) + +commit 4f3ab40c042d8c53e8540188a7508e91301baa41 +Author: Philip Chimento +AuthorDate: Tue Dec 2 12:34:30 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 18 02:02:53 2014 -0500 + + gfile: Explain nonobvious use of my_error + + In g_file_make_directory_with_parents(), the my_error variable is used + for several different purposes throughout the whole function, not + all of + which are obvious. This explains the situation with some comments. + + https://bugzilla.gnome.org/show_bug.cgi?id=719455 + + gio/gfile.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit 44372f4dd0a4a8aac1b66b820810b3f7bdf70513 +Author: Philip Chimento +AuthorDate: Tue Dec 3 18:51:51 2013 -0800 +Commit: Ryan Lortie +CommitDate: Thu Dec 18 02:02:53 2014 -0500 + + gfile: Use g_error_matches + + Make proper use of g_error_matches() instead of comparing only + error codes. + + https://bugzilla.gnome.org/show_bug.cgi?id=719455 + + gio/gfile.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 5a7db3015ab0f14e4e2ad6766b3ce819447faf93 +Author: Philip Chimento +AuthorDate: Wed Nov 27 17:43:18 2013 -0800 +Commit: Ryan Lortie +CommitDate: Thu Dec 18 02:02:53 2014 -0500 + + gfile: make_directory_with_parents race condition + + A race condition could cause g_file_make_directory_with_parents() to + fail with G_IO_ERROR_EXISTS despite the requested directory not + existing. + + https://bugzilla.gnome.org/show_bug.cgi?id=719455 + + gio/gfile.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 388e0d576f5a50a3219e01eb93fe689a7f30ee38 +Author: Daniel Mustieles +AuthorDate: Wed Dec 17 12:31:29 2014 +0100 +Commit: Daniel Mustieles +CommitDate: Wed Dec 17 12:31:29 2014 +0100 + + Updated Spanish translation + + po/es.po | 496 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 249 insertions(+), 247 deletions(-) + +commit e98a5828d3ada47b080ab6d69c9349e2c5a4ee5d +Author: Philip Withnall +AuthorDate: Tue Dec 16 11:23:12 2014 +0000 +Commit: Philip Withnall +CommitDate: Tue Dec 16 17:11:11 2014 +0000 + + docs: Remove a mention of g_clear_object() being atomic + + It is no longer atomic. + + https://bugzilla.gnome.org/show_bug.cgi?id=741589 + + docs/reference/gobject/tut_howto.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 924f269763fec66194d3357285f6d860986f66b2 +Author: Matthias Clasen +AuthorDate: Mon Dec 15 11:56:12 2014 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 15 13:17:15 2014 -0500 + + 2.43.2 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0f21ee4c89551fd14f2926e86a174a8338fab9e1 +Author: Matthias Clasen +AuthorDate: Mon Dec 15 13:17:02 2014 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 15 13:17:15 2014 -0500 + + gobject: Add missing symbols to the docs + + docs/reference/gobject/gobject-sections.txt | 3 +++ + 1 file changed, 3 insertions(+) + +commit 169eae47e519068a0afa2ec44b24b884214d79ec +Author: Matthias Clasen +AuthorDate: Mon Dec 15 13:14:01 2014 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 15 13:17:15 2014 -0500 + + gio: Add missing symbols to docs + + docs/reference/gio/gio-sections.txt | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit b32ea8d9242c84f3959a9e3d6b5ed63fcb6eff9b +Author: Matthias Clasen +AuthorDate: Mon Dec 15 11:52:42 2014 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 15 11:52:42 2014 -0500 + + Updates + + NEWS | 34 ++++++++++++++++++++++++++++++++++ + 1 file changed, 34 insertions(+) + +commit b6d1c66c506637ba614a2327e0071eb6a1873fc2 +Author: Dan Winship +AuthorDate: Sun Dec 14 08:04:27 2014 -0500 +Commit: Dan Winship +CommitDate: Sun Dec 14 08:04:27 2014 -0500 + + gio/tests/socket: fix one of the new tests + + One of the recently-added tests was using g_test_cmpstr() on a buffer + containing a string that wasn't necessarily 0-terminated. + + gio/tests/socket.c | 1 + + 1 file changed, 1 insertion(+) + +commit 1a2a689deacaac32b351ae97b00d8c35a6499cf6 +Author: Xavier Claessens +AuthorDate: Sat Nov 29 08:39:24 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Dec 12 11:01:37 2014 -0500 + + Doc: glib: Fix all undocumented/unused/undeclared symbols + + There is one issue left in gscanner.h due to a bug #741305 in gtk-doc. + + https://bugzilla.gnome.org/show_bug.cgi?id=740814 + + docs/reference/glib/Makefile.am | 6 +++- + docs/reference/glib/glib-overrides.txt | 5 ---- + docs/reference/glib/glib-sections.txt | 50 + ++++++++++++++++++++++++++++++++++ + glib/docs.c | 14 ++++++++-- + glib/gconstructor.h | 3 ++ + glib/gconvert.h | 2 ++ + glib/gdir.h | 2 ++ + glib/genviron.h | 3 +- + glib/gfileutils.h | 2 ++ + glib/ghash.c | 2 ++ + glib/giochannel.h | 2 ++ + glib/gkeyfile.c | 20 +++++++++++++- + glib/goption.c | 3 ++ + glib/gspawn.h | 2 ++ + glib/gstdio.c | 2 ++ + glib/gunicode.h | 4 +-- + glib/gwin32.h | 2 ++ + glib/valgrind.h | 2 -- + 18 files changed, 112 insertions(+), 14 deletions(-) + +commit b6aa0c4890442845205a1b8696376a3e5fe0f2d7 +Author: Shankar Prasad +AuthorDate: Fri Dec 12 11:55:07 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Dec 12 11:55:07 2014 +0000 + + Updated Kannada translation + + po/kn.po | 533 + +++++++++++++++++++++++---------------------------------------- + 1 file changed, 194 insertions(+), 339 deletions(-) + +commit 45e4ea75da0016675352bb00da8f148b07c23c04 +Author: Yosef Or Boczko +AuthorDate: Fri Dec 12 12:36:27 2014 +0200 +Commit: Yosef Or Boczko +CommitDate: Fri Dec 12 12:36:27 2014 +0200 + + Updated Hebrew translation + + po/he.po | 432 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 217 insertions(+), 215 deletions(-) + +commit de657238774755eb58a1c6fbf9123f978fb828e7 +Author: Ryan Lortie +AuthorDate: Thu Dec 11 18:49:16 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 11 18:50:07 2014 -0500 + + ghash: minor docs tweak + + We should not advise people to cast the result of + g_hash_table_get_keys_as_array() to a type that looks suitable for use + with g_strfreev(). Advise to use (const gchar **) instead. + + glib/ghash.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ae1b6ecd9d1b5e0fa701cd2fd44425ab2312ab02 +Author: Tim-Philipp Müller +AuthorDate: Fri Jun 13 20:19:09 2014 +0100 +Commit: Tim-Philipp Müller +CommitDate: Thu Dec 11 15:10:44 2014 +0000 + + gio/tests/socket: add unit test for g_socket_send_messages() + + https://bugzilla.gnome.org/show_bug.cgi?id=719646 + + gio/tests/socket.c | 55 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 55 insertions(+) + +commit fff5c7cd631f7eefeb93412b1d9d90517c4b895e +Author: Tim-Philipp Müller +AuthorDate: Thu Jun 12 18:16:45 2014 +0100 +Commit: Tim-Philipp Müller +CommitDate: Thu Dec 11 15:10:44 2014 +0000 + + gsocket: add g_socket_send_messages() + + Allows sending of multiple messages (packets, datagrams) + in one go using sendmmsg(), thus drastically reducing the + number of syscalls when sending out a lot of data, or when + sending out the same data to multiple recipients. + + https://bugzilla.gnome.org/show_bug.cgi?id=719646 + + configure.ac | 2 +- + gio/giotypes.h | 35 ++++++++ + gio/gsocket.c | 275 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gsocket.h | 9 ++ + 4 files changed, 320 insertions(+), 1 deletion(-) + +commit 3c3fc0e463278f368e6192ff65a45b6873bf370a +Author: Tim-Philipp Müller +AuthorDate: Fri Jun 13 19:45:25 2014 +0100 +Commit: Tim-Philipp Müller +CommitDate: Thu Dec 11 15:10:44 2014 +0000 + + gio/tests/socket: add datagram version of test_ip_sync + + gio/tests/socket.c | 170 + ++++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 163 insertions(+), 7 deletions(-) + +commit 486485042719dd13c03d5261a7945e94bdf63d69 +Author: Tim-Philipp Müller +AuthorDate: Fri Jun 13 10:48:52 2014 +0100 +Commit: Tim-Philipp Müller +CommitDate: Thu Dec 11 15:10:44 2014 +0000 + + gio/tests/socket: add test for g_socket_send_message() + + gio/tests/socket.c | 30 ++++++++++++++++++++++++++++++ + 1 file changed, 30 insertions(+) + +commit dd5fd6902d8433b8771da9d92ec2ce8c056eae29 +Author: Sweta Kothari +AuthorDate: Thu Dec 11 09:30:01 2014 +0530 +Commit: Sweta Kothari +CommitDate: Thu Dec 11 09:30:23 2014 +0530 + + Updated gujarati translations + + po/gu.po | 365 + ++++++++++++++++++++++++++++----------------------------------- + 1 file changed, 164 insertions(+), 201 deletions(-) + +commit fbf0b2e19c9a4720fa019ebef8995104d85c2c4e +Author: Muhammet Kara +AuthorDate: Wed Dec 10 22:04:49 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Wed Dec 10 22:04:49 2014 +0000 + + Updated Turkish translation + + po/tr.po | 6825 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 3842 insertions(+), 2983 deletions(-) + +commit f8da414d089057f63cb277af575675deb63536b0 +Author: Dan Winship +AuthorDate: Wed Dec 10 18:39:21 2014 +0100 +Commit: Dan Winship +CommitDate: Wed Dec 10 18:39:21 2014 +0100 + + gio: fix the Since/AVAILABLE version on network connectivity stuff + + gio/gioenums.h | 2 +- + gio/gnetworkmonitor.c | 4 ++-- + gio/gnetworkmonitor.h | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +commit a12f546b3bd32ae826306c4c7dbd931fe37ec632 +Author: Colin Walters +AuthorDate: Sun Dec 7 16:00:55 2014 -0500 +Commit: Colin Walters +CommitDate: Sun Dec 7 22:00:41 2014 -0500 + + keyfile: Add "in group" to GError message consistently + + This originated with https://github.com/GNOME/ostree/pull/23 + It's nicer for the user if we also mention which group the expected + key would be in. + + And in fact, every other error *except* _get_value() already had it. + + https://bugzilla.gnome.org/show_bug.cgi?id=741226 + + glib/gkeyfile.c | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) + +commit 7966f27882095e1c2c4e2a0f6e36925bcdc65e9f +Author: Balázs Úr +AuthorDate: Sun Dec 7 09:26:40 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Dec 7 09:26:40 2014 +0000 + + Updated Hungarian translation + + po/hu.po | 347 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 175 insertions(+), 172 deletions(-) + +commit 7d9816934e6a233369a2df1282a49d1549d9fa0f +Author: Ross Lagerwall +AuthorDate: Sun Nov 30 22:17:51 2014 +0000 +Commit: Ross Lagerwall +CommitDate: Sun Dec 7 08:40:18 2014 +0200 + + gio/tests: Prevent hangs and aborts in socket-listener + + Fix two problems: + 1) If g_socket_service_stop is called before the accept call is + requeued, + then the reference count won't decrease and this code will hang + forever: + while (G_OBJECT (service)->ref_count == ref_count) + g_main_context_iteration (NULL, TRUE); + + 2) Sometimes the testcase fails (maybe 1 in 200 times for me): + GLib-GIO:ERROR:socket-listener.c:73:connection_cb: assertion failed + (G_OBJECT (service)->ref_count == 2): (3 == 2) + Aborted (core dumped) + + The problem is that depending on ordering, cancellation of the async + listener can require further main context iterations before it + releases + the reference on the socket service. Furthermore, in some cases, it + requires at least one iteration. + + https://bugzilla.gnome.org/show_bug.cgi?id=712570 + + gio/tests/socket-listener.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 53abf0dc7d22d8a150fdc6162ef212cb5aa87c2f +Author: Piotr Drąg +AuthorDate: Fri Dec 5 23:04:04 2014 +0100 +Commit: Piotr Drąg +CommitDate: Fri Dec 5 23:04:04 2014 +0100 + + Updated POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit 485a6900fcd481f0899e4a775c96d5a34b62cb90 +Author: Bastien Nocera +AuthorDate: Wed Dec 3 18:36:25 2014 +0100 +Commit: Bastien Nocera +CommitDate: Fri Dec 5 17:37:41 2014 +0100 + + gio: Add GNetworkMonitor impl based on NetworkManager + + Which implements the new GNetworkConnectivity property. + + https://bugzilla.gnome.org/show_bug.cgi?id=664562 + + gio/Makefile.am | 2 + + gio/giomodule.c | 2 + + gio/gnetworkmonitornm.c | 307 + ++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gnetworkmonitornm.h | 53 +++++++++ + 4 files changed, 364 insertions(+) + +commit 8d08b821090d5394175c17f375a192bb3f824c0c +Author: Dan Winship +AuthorDate: Wed Apr 16 10:39:12 2014 -0400 +Commit: Bastien Nocera +CommitDate: Fri Dec 5 17:37:41 2014 +0100 + + gio: add network connectivity state to GNetworkMonitor + + Add a property to GNetworkMonitor indicating the level of network + connectivity: none/local, limited, stuck behind a portal, or full. + + The default implementation just returns none or full depending on the + value of is-available. + + https://bugzilla.gnome.org/show_bug.cgi?id=664562 + + gio/gioenums.h | 24 +++++++++++++++++++ + gio/gnetworkmonitor.c | 56 + +++++++++++++++++++++++++++++++++++++++++++++ + gio/gnetworkmonitor.h | 35 +++++++++++++++------------- + gio/gnetworkmonitorbase.c | 24 +++++++++++++------ + gio/tests/network-monitor.c | 11 +++++++++ + 5 files changed, 127 insertions(+), 23 deletions(-) + +commit ed68d80e61b60833c15b69e57117e7f267757632 +Author: Bastien Nocera +AuthorDate: Thu Dec 4 12:27:23 2014 +0100 +Commit: Bastien Nocera +CommitDate: Fri Dec 5 17:37:41 2014 +0100 + + gio: Correct the "available in" for GNetworkMonitor + + They were marked as available in all versions when the main interface + was actually added in glib 2.32. + + https://bugzilla.gnome.org/show_bug.cgi?id=664562 + + gio/gnetworkmonitor.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit e0f1a19332fd2aa25dc08eda289a217044e07472 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Dec 2 14:25:56 2014 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Dec 2 14:29:50 2014 +0100 + + gio: provide G_IO_ERROR_NOT_CONNECTED translation for ENOTCONN + + https://bugzilla.gnome.org/show_bug.cgi?id=741016 + + gio/gioerror.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 22ab227348e9ac6671da3d2bf143aafbf99838ca +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Dec 2 14:29:11 2014 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Dec 2 14:29:50 2014 +0100 + + gio: fix build + + next time I should definitely try to compile after a rebase + conflict... + + gio/gioenums.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fbfc23453ddbbf8fc44984c78910c4e8c23ef847 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Dec 2 13:50:51 2014 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Dec 2 14:21:14 2014 +0100 + + gio: add G_IO_ERROR_NOT_CONNECTED + + It adds a new error G_IO_ERROR_NOT_CONNECTED + and makes the win32 error ERROR_PIPE_LISTENING + to be translated to it. + + https://bugzilla.gnome.org/show_bug.cgi?id=741016 + + gio/gioenums.h | 2 ++ + gio/gioerror.c | 3 +++ + 2 files changed, 5 insertions(+) + +commit d0d5ea71bbbee5146a0d0221efa6ecfab703822c +Author: Rico Tzschichholz +AuthorDate: Mon Dec 1 14:16:54 2014 +0100 +Commit: Rico Tzschichholz +CommitDate: Mon Dec 1 14:17:26 2014 +0100 + + docs: Add index for 2.44 api + + docs/reference/gio/gio-docs.xml | 4 ++++ + docs/reference/glib/glib-docs.xml | 4 ++++ + docs/reference/gobject/gobject-docs.xml | 4 ++++ + 3 files changed, 12 insertions(+) + +commit 8b27ac0d9f8f87ca5a2f4e7b2ff071be5adb61e3 +Author: Trần Ngọc Quân +AuthorDate: Mon Dec 1 09:07:13 2014 +0700 +Commit: Trần Ngọc Quân +CommitDate: Mon Dec 1 09:07:13 2014 +0700 + + Updated Vietnamese translation + + Signed-off-by: Trần Ngọc Quân + + po/vi.po | 2804 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1518 insertions(+), 1286 deletions(-) + +commit 967fedc0ae04fab3162f25715c6d7bde73d22d57 +Author: Dan Winship +AuthorDate: Fri Aug 19 10:23:12 2011 -0400 +Commit: Dan Winship +CommitDate: Sat Nov 29 14:26:42 2014 -0500 + + gsocket: add G_IO_ERROR_CONNECTION_CLOSED + + Add G_IO_ERROR_CONNECTION_CLOSED as an alias for + G_IO_ERROR_BROKEN_PIPE, and also return it on ECONNRESET. + + It doesn't really make sense to try to distinguish EPIPE and + ECONNRESET at the GLib level, since the exact choice of which error + gets returned in what conditions depends on the OS. Given that, we + ought to map the two errors to the same value, and since we're already + mapping EPIPE to G_IO_ERROR_BROKEN_PIPE, we need to map ECONNRESET to + that too. But the existing name doesn't really make sense for sockets, + so we add a new name. + + https://bugzilla.gnome.org/show_bug.cgi?id=728928 + + gio/gioenums.h | 10 ++++++++-- + gio/gioerror.c | 9 +++++++++ + gio/tests/socket.c | 38 ++++++++++++++++++++++++++++++++------ + 3 files changed, 49 insertions(+), 8 deletions(-) + +commit 64f9bf96fdc47ab7fedd91d291f805c3e10322b4 +Author: Dan Winship +AuthorDate: Sun Nov 23 12:53:03 2014 -0500 +Commit: Dan Winship +CommitDate: Sat Nov 29 14:22:42 2014 -0500 + + gnetworkaddress: Add g_network_address_new_loopback() constructor + + This is a convenience method for creating a GNetworkAddress which is + guaranteed to return IPv4 and IPv6 loopback addresses. The program + cannot guarantee that 'localhost' will resolve to both types of + address, so programs which wish to connect to a local service over + either IPv4 or IPv6 must currently manually create an IPv4 and another + IPv6 socket, and detect which of the two are working. This new API + allows the existing GSocketConnectable machinery to be used to + automate that. + + Based on a patch from Philip Withnall. + + https://bugzilla.gnome.org/show_bug.cgi?id=732317 + + docs/reference/gio/gio-sections.txt | 5 +- + gio/gnetworkaddress.c | 45 ++++++++++++ + gio/gnetworkaddress.h | 2 + + gio/tests/network-address.c | 132 + ++++++++++++++++++++++++++++++++++++ + 4 files changed, 182 insertions(+), 2 deletions(-) + +commit 296c710c64c3f145674a6c20357d4c0b0da1b393 +Author: Ryan Lortie +AuthorDate: Fri Nov 28 17:55:28 2014 -0500 +Commit: Ryan Lortie +CommitDate: Sat Nov 29 14:22:03 2014 -0500 + + GVariant tests: test with larger strings + + Allocate some larger strings in the testcase to make sure we + handle them + correctly as well. + + glib/tests/gvariant.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5aba9ca837205f8eddec138326430af9d2fd6b11 +Author: Ryan Lortie +AuthorDate: Fri Nov 28 12:43:03 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Nov 28 23:54:02 2014 -0500 + + gmain: fix poll record comparison + + We intend to keep the list of poll records sorted by (integer) file + descriptor, but due to a typo we are actually keeping it sorted by + pointer address of the GPollFD. + + Fix that. + + https://bugzilla.gnome.org/show_bug.cgi?id=11059 + + glib/gmain.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c476f7cd264ca3c69c002c4bcc1563b17cd976b2 +Author: Ryan Lortie +AuthorDate: Fri Nov 28 16:20:40 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Nov 28 16:22:16 2014 -0500 + + gsignal: add a clarification to the docs + + As evidenced by a mistake that I made recently, this documentation + could + use a little bit of clarification. + + gobject/gsignal.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit d511d6b37f051d2cd8698055cbd85ee7f987325d +Author: Lars Uebernickel +AuthorDate: Fri Nov 28 13:06:04 2014 +0100 +Commit: Lars Uebernickel +CommitDate: Fri Nov 28 15:19:07 2014 +0100 + + GSettings: fix check for delaying backend subscription + + g_settings_has_signal_handlers() checks whether any of the signals has + pending handlers. However, g_signal_has_handler_pending() matches on + exact detail, even when passing 0. Subscribing to one of GSettings' + signals with a detail will fail this check and never connect to the + backend. + + Fix this by calling has_handler_pending() with the key as detail as + well. + + https://bugzilla.gnome.org/show_bug.cgi?id=740848 + + gio/gsettings.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +commit 7f2f4ab12df6ddb501900846896f496520871d16 +Author: Matthias Clasen +AuthorDate: Thu Nov 27 09:12:42 2014 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 27 09:12:42 2014 -0500 + + Use the new g_strv_contains + + No need to keep our own copy of this in the testsuite. + + gio/tests/contenttype.c | 39 ++++++++++++--------------------------- + 1 file changed, 12 insertions(+), 27 deletions(-) + +commit 71944b1bfd2cff57e889b806d001458dce6fa2b5 +Author: Xavier Claessens +AuthorDate: Mon Apr 15 14:54:31 2013 +0200 +Commit: Philip Withnall +CommitDate: Tue Nov 25 12:51:36 2014 +0000 + + gstrfuncs: Add g_strv_contains() + + Includes unit tests. + + https://bugzilla.gnome.org/show_bug.cgi?id=685880 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gstrfuncs.c | 27 +++++++++++++++++++++++++++ + glib/gstrfuncs.h | 4 ++++ + glib/tests/strfuncs.c | 19 +++++++++++++++++++ + 4 files changed, 51 insertions(+) + +commit 3f5a78a248406611c3eb7096a72749c892d47653 +Author: Matthias Clasen +AuthorDate: Mon Nov 24 13:07:22 2014 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 24 14:31:56 2014 -0500 + + 2.43.1 + + NEWS | 27 +++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 28 insertions(+), 1 deletion(-) + +commit e784a4ba326e939b74578f417202833d3231c7ac +Author: Dan Winship +AuthorDate: Sun Nov 23 12:33:01 2014 -0500 +Commit: Dan Winship +CommitDate: Sun Nov 23 12:33:01 2014 -0500 + + gio/tests: add a socket-listener test + + Add a GSocketListener test program. Currently the only test is a + regression test for bug 712570 (based on a standalone bug reproducer + provided by Ross Lagerwall). + + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 1 + + gio/tests/socket-listener.c | 166 + ++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 168 insertions(+) + +commit 9a6e01ea5bde908e2bcce4dc66d89483e84fd837 +Author: Ross Lagerwall +AuthorDate: Tue Oct 28 21:16:50 2014 +0000 +Commit: Dan Winship +CommitDate: Sun Nov 23 12:02:38 2014 -0500 + + gio: Prevent hang when finalizing GThreadedSocketService + + If all users of a GThreadedSocketService release their references + to the + service while a connection thread is running, the thread function will + release the last reference to the service which causes the finalize to + deadlock waiting for all threads to finish (because it's called + from the + thread function). + + To fix this, don't wait for all threads to finish in the service's + finalize method. Since the threads hold a reference to the service, + finalize should only be called when all threads are finished running + (or + have unrefed the service and are about to finish). + + https://bugzilla.gnome.org/show_bug.cgi?id=712570 + + gio/gthreadedsocketservice.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +commit 91802bbf2bfd336aec640c9412f955b1df8f80ae +Author: Jasper St. Pierre +AuthorDate: Tue Oct 28 13:45:34 2014 -0700 +Commit: Jasper St. Pierre +CommitDate: Sat Nov 22 19:47:43 2014 -0800 + + gparam: Make the documentation clearer for CONSTRUCT_ONLY properties + + It's not that the properly will only be set on construction, it's that + it *can* only be set upon construction. + + gobject/gparam.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 89e663107ecefd6db7ea24d2ffdf935020222947 +Author: Michael Henning +AuthorDate: Wed Nov 5 01:20:25 2014 -0500 +Commit: Michael Henning +CommitDate: Sat Nov 22 17:24:51 2014 -0500 + + gio: Implement g_win32_app_info_launch_uris for windows. + + gio/gwin32appinfo.c | 48 +++++++++++++++++++++++++++++++----------------- + 1 file changed, 31 insertions(+), 17 deletions(-) + +commit 90f0eb101f108ee4096b5b3ef2d570ce588abb64 +Author: Michael Henning +AuthorDate: Wed Nov 5 01:18:25 2014 -0500 +Commit: Michael Henning +CommitDate: Sat Nov 22 17:24:51 2014 -0500 + + gio: Implement g_app_info_get_default_for_uri_scheme for windows. + + gio/gwin32appinfo.c | 22 ++++++++++++++++------ + 1 file changed, 16 insertions(+), 6 deletions(-) + +commit 7f5c862e166a6f288d8d0ec2622685316f64b87c +Author: Dan Winship +AuthorDate: Sat Nov 22 10:54:41 2014 -0500 +Commit: Dan Winship +CommitDate: Sat Nov 22 11:02:22 2014 -0500 + + GTlsClientConnection: loosen the semantics of "use-ssl3" + + If SSL 3.0 has been disabled (at the host, application, or library + level), then the "use-ssl3" property becomes a "fail-immediately" + property. + + Despite the name, the point of the property wasn't really specifically + to use SSL 3.0; it was to allow fallback when talking to broken + servers that do SSL/TLS negotiation incorrectly and break when they + see unexpectedly-high version numbers. So if we can't fall back to SSL + 3.0, then the "use-ssl3" property should fall back to TLS 1.0 instead + (since there are hosts that will reject a TLS 1.2 handshake, but + accept a TLS 1.0 one). + + glib-networking is being updated to implement that behavior, so update + the documentation here. + + https://bugzilla.gnome.org/show_bug.cgi?id=738633 + + gio/gtlsclientconnection.c | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +commit f6bbd19beb41aeb52426ba96b3c39c1b09f6bc17 +Author: Chun-wei Fan +AuthorDate: Thu Nov 20 18:34:21 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Nov 20 22:11:25 2014 +0800 + + GSettings Registry Backend: Init cache_lock Earlier + + In commit 8ff5668, we are subscribing the GSettings backend later, + but this + meant that we need to initialize cache_lock earlier, as we might + try to + use that lock before a change notification is issued to subscribe the + backend, which would then cause an access violation if we are + trying to + read GSettings values, as that lock is used to access the Windows + Registry. + + Initialize cache_lock once we initialize the GSettings Registry + backend, + and delete it upon finalize, so that g_settings_read_from_backend() + can + proceed normally, even if the GSettings backend is not yet subscribed. + + https://bugzilla.gnome.org/show_bug.cgi?id=740413 + + gio/gregistrysettingsbackend.c | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +commit 5c68fc9f93ee3d3cdb94cda2be5565584dfbb908 +Author: Christian Persch +AuthorDate: Tue Sep 23 10:46:53 2014 +0200 +Commit: Christian Persch +CommitDate: Thu Nov 20 10:38:18 2014 +0100 + + gsettingsschema: Print the string that failed to parse + + When parsing a translated value fails, print the actual string that + failed to parse instead of the 'domain\004string' untranslated string. + + https://bugzilla.gnome.org/show_bug.cgi?id=737150 + https://bugzilla.gnome.org/show_bug.cgi?id=737160 + + gio/gsettingsschema.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8ff5668a458344da22d30491e3ce726d861b3619 +Author: Ryan Lortie +AuthorDate: Sat Jul 26 17:16:37 2014 +0200 +Commit: Ryan Lortie +CommitDate: Wed Nov 19 13:40:09 2014 -0500 + + GSettings: delay backend subscription + + GSettings objects begin watching for changes as soon as they are + created + in order that they can emit the "changed" signal. + + In the case of dconf, if we want to be able to emit the changed + signal, + we need to go on the bus and add some match rules. This requires + creating the dconf helper thread and also requires initialising GDBus + (which creates another thread). + + Some users of GSettings are never interested in the "changed" signal. + One of these users is the glib-networking code that gets run + every time + a new network connection is created. + + Some users are reporting that they are annoyed that simply + establishing + a network connection would spawn two extra threads and create a D-Bus + connection. + + In order to avoid doing unnecessary work for these simple uses, delay + the subscription until we know that we will actually need to do it. + + We do this in a simple way, using a simple argument: in order for the + user to care that a value changed then they must have: + + 1) watched for a change signal; and then + 2) actually read a value + + If the user didn't actually read a value then they cannot possibly be + interested in if the value changed or not (since they never knew + the old + value to begin with and therefore would be unable to observe that it + ever changed, since they have nothing to compare the new value with). + + This really is a behaviour change, however, and it does impact + at least + one user: the 'monitor' functionality of the GSettings commandline + tool, + which is interested in reporting changes without ever having known the + original values. We add a workaround to the commandline tool in order + to ensure that it continues to function properly. + + It's also possible to argue that it is completely valid to have read a + value and _then_ established a change signal connection under the + (correct) assumption that it would not have been possible to miss a + change signal by virtue of not having returned to the mainloop. + Although this argument is true, this pattern is extremely + non-idiomatic, + and the problem is easily avoided by doing things in the usual order. + + We never really talked about change notification in the overview + documentation for GSettings, so it seems like now is a good time + to add + some discussion, including the new rules for when one can expect + change + signals to be emitted. + + https://bugzilla.gnome.org/show_bug.cgi?id=733791 + + gio/gsettings-tool.c | 13 +++++++++++++ + gio/gsettings.c | 47 +++++++++++++++++++++++++++++++++++++++++++---- + 2 files changed, 56 insertions(+), 4 deletions(-) + +commit 6c080721fc1879d8c92176fe630e00122110ea2e +Author: Alberto Ruiz +AuthorDate: Tue Nov 18 14:43:41 2014 +0000 +Commit: Alberto Ruiz +CommitDate: Tue Nov 18 14:43:41 2014 +0000 + + glib: Improve documentation for g_strfreev() + + Fixes #740309. + + glib/gstrfuncs.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 61e125a57783422e25bb0e9616c9115f68641426 +Author: Kjartan Maraas +AuthorDate: Sat Nov 15 18:31:40 2014 +0100 +Commit: Kjartan Maraas +CommitDate: Sat Nov 15 18:31:40 2014 +0100 + + Updated Norwegian bokmål translation. + + po/nb.po | 340 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 171 insertions(+), 169 deletions(-) + +commit 021c4ad050f979e5b36c34474d5fbb189278acdf +Author: Lars Uebernickel +AuthorDate: Sat Nov 15 10:30:41 2014 +0100 +Commit: Lars Uebernickel +CommitDate: Sat Nov 15 17:35:18 2014 +0100 + + gapplication: enable --help when app has options + + This should already work according to the documentation, but doesn't + because main_options is consumed before the check in + g_application_parse_command_line(). + + Fix by moving the check for main_options up. + + https://bugzilla.gnome.org/show_bug.cgi?id=740157 + + gio/gapplication.c | 28 ++++++++++++++-------------- + gio/tests/gapplication.c | 45 + +++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 59 insertions(+), 14 deletions(-) + +commit 61cecd5a68743542baf685b47e8a4a5f4a98d205 +Author: David King +AuthorDate: Thu Nov 13 17:49:31 2014 +0000 +Commit: David King +CommitDate: Thu Nov 13 17:49:31 2014 +0000 + + docs: Add missing opening parenthesis + + https://mail.gnome.org/archives/gnome-web-list/2014-November/msg00003.html + + glib/gmem.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1edd463137067ccb7533f3a1e072dc516bb32d86 +Author: Volker Sobek +AuthorDate: Fri May 23 22:45:30 2014 +0200 +Commit: Volker Sobek +CommitDate: Mon Nov 10 23:25:23 2014 +0100 + + docs: Update GParamFlags docs. + + Remove reference to G_PARAM_READWRITE from GParamFlags' description, + since commit 6c395244a5db added G_PARAM_READWRITE to GParamFlags. + + https://bugzilla.gnome.org/show_bug.cgi?id=726037 + + gobject/gparam.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 20f6cc2a10ba26860e7a6d27c100deadb5497772 +Author: Sébastien Wilmet +AuthorDate: Wed Nov 5 14:00:45 2014 +0100 +Commit: Sébastien Wilmet +CommitDate: Sun Nov 9 20:42:50 2014 +0100 + + Simplify code that uses g_queue_insert_before() and insert_after() + + g_queue_insert_before() and g_queue_insert_after() now accept a NULL + sibling. + + https://bugzilla.gnome.org/show_bug.cgi?id=736620 + + glib/gqueue.c | 5 +---- + glib/tests/sequence.c | 16 +++------------- + 2 files changed, 4 insertions(+), 17 deletions(-) + +commit 8a90f5e9f6da778743aaec365ee4ceb62b717130 +Author: Sébastien Wilmet +AuthorDate: Wed Nov 5 14:03:30 2014 +0100 +Commit: Sébastien Wilmet +CommitDate: Sun Nov 9 20:42:49 2014 +0100 + + GQueue: accept a NULL sibling for insert_before() and insert_after() + + It simplifies a little bit some code that inserts data relative to a + GList location, that might be NULL for the tail of the queue. A NULL + sibling is probably less useful for insert_after(), so it's more for + consistency with insert_before(). + + https://bugzilla.gnome.org/show_bug.cgi?id=736620 + + glib/gqueue.c | 35 ++++++++++++++++++++++++----------- + glib/tests/queue.c | 2 ++ + 2 files changed, 26 insertions(+), 11 deletions(-) + +commit 012c9dcd820f9679784181568f97c0e1e6b5e37f +Author: Chun-wei Fan +AuthorDate: Mon Nov 3 10:09:14 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 3 10:09:38 2014 +0800 + + gnetworking.h.win32: Move "#undef interface" + + This is a follow-up commit due to the fix in gnetworking.h.in + in commit + 7103484 (gnetworking.h.in: move "#undef interface"). + + gio/gnetworking.h.win32 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7103484017ff000d01ed94567539d37fa09b32b2 +Author: Dan Winship +AuthorDate: Sun Nov 2 09:36:14 2014 -0500 +Commit: Dan Winship +CommitDate: Sun Nov 2 09:36:14 2014 -0500 + + gnetworking.h.in: move "#undef interface" + + The win32 headers do: + + #define interface struct + + which is just evil and breaks other code that assumes it can use + "interface" as a variable name. gnetworking.h was supposed to be doing + "#undef interface" after including the win headers, but it did it too + soon, resulting in it getting redefined by a later include. Fix this. + + https://bugzilla.gnome.org/show_bug.cgi?id=738551 + + gio/gnetworking.h.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 982d0e11d702ff49f69cb90cb65dd71ebd3df54d +Author: Dan Winship +AuthorDate: Tue Oct 28 15:08:43 2014 -0400 +Commit: Dan Winship +CommitDate: Sat Nov 1 17:11:25 2014 -0400 + + GTlsCertificate: fix loading of bad certificate chains + + g_tls_certificate_new_from_file() was only loading the complete chain + if it was fully valid, but we only meant to be validating that it + formed an actual chain (since the caller may be planning to ignore + other errors). + + https://bugzilla.gnome.org/show_bug.cgi?id=729739 + + gio/gtlscertificate.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 0728e62be8bf247f9d097822efd26312367ff133 +Author: Ross Lagerwall +AuthorDate: Mon Sep 8 21:09:08 2014 +0100 +Commit: Ross Lagerwall +CommitDate: Thu Oct 30 20:19:14 2014 +0000 + + doc: Clarify documentation regarding g_file_replace and etags + + Clarify that with g_file_replace, a non-NULL etag is only checked + if the + file already exists. + + https://bugzilla.gnome.org/show_bug.cgi?id=736286 + + gio/gfile.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 226c292b6ab95014648e9fc0a082bb6c26eeccc8 +Author: Ross Lagerwall +AuthorDate: Wed Oct 29 22:12:39 2014 +0000 +Commit: Ross Lagerwall +CommitDate: Thu Oct 30 20:15:47 2014 +0000 + + gio: Prevent hang writing to a large GMemoryBuffer + + Fix a hang due to overflow by using unsigned numbers and explicitly + checking if the number overflows to zero. This also fixes the + previous + logic which assigned an int which may be negative to an unsigned + number + resulting in sign extension and strange results. + + Use gsize rather than int to allow for large buffers on 64 bit + machines. + + https://bugzilla.gnome.org/show_bug.cgi?id=727988 + + gio/gdbusmessage.c | 18 ++++++++---------- + 1 file changed, 8 insertions(+), 10 deletions(-) + +commit 5a6f13d16f38ea0a6c9d48332b7e3932b7f3b7d4 +Author: Ross Lagerwall +AuthorDate: Wed Oct 29 22:05:32 2014 +0000 +Commit: Ross Lagerwall +CommitDate: Thu Oct 30 20:15:47 2014 +0000 + + gio: Prevent hang writing to a large GMemoryOutputStream + + Fix a hang due to overflow by using unsigned numbers and explicitly + checking if the number overflows to zero. This also fixes the + previous + logic which assigned an int which may be negative to an unsigned + number + resulting in sign extension and strange results. + + Use gsize rather than int to allow for large streams on 64 bit + machines. + + https://bugzilla.gnome.org/show_bug.cgi?id=727988 + + gio/gmemoryoutputstream.c | 18 ++++++++---------- + 1 file changed, 8 insertions(+), 10 deletions(-) + +commit b3e3ed73864143e732c4d65441eaec086a3ab83e +Author: Dan Winship +AuthorDate: Tue Mar 13 11:43:38 2012 -0400 +Commit: Dan Winship +CommitDate: Wed Oct 29 17:19:20 2014 -0400 + + gmain: don't pass the same fd to g_poll() multiple times + + If a given fd is being polled by multiple sources, we used to pass it + multiple times to g_poll(), which is technically illegal (and not + supported by the select()-based fallback implementation of poll() in + gpoll.c), and also made it more likely that we'd exceed the maximum + number of pollfds. + + Fix it to merge together "duplicate" GPollFDs. The easiest way to do + this involves re-sorting context->poll_records into fd order rather + than priority order. This means we now have to walk the entire pollrec + list for every g_main_context_query() and g_main_context_poll(), + rather than only walking the list up to the current max_priority. + However, this will only have a noticeable effect if you have tons of + GPollFDs, and we're already too slow in that case anyway because of + other O(n) operations that happen too often. So this shouldn't change + much (and the new poll API will eventually let us be cleverer). + + Remove some win32-specific code which did the same thing (but was + O(n^2)). + + https://bugzilla.gnome.org/show_bug.cgi?id=11059 + + glib/gmain.c | 86 ++++++++++++++++----------- + glib/gpoll.c | 35 ++++------- + glib/tests/mainloop.c | 161 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 222 insertions(+), 60 deletions(-) + +commit 66fc112c742f56f85fc34b458325e87df4cd78d0 +Author: Owen W. Taylor +AuthorDate: Thu Oct 9 14:40:45 2014 -0400 +Commit: Owen W. Taylor +CommitDate: Tue Oct 28 13:57:52 2014 -0400 + + GDBusInterfaceVTable: clarify memory handling for the method() + virtual function + + There are two consistent interpretations that could be taken for + memory + handling of the 'invocation' parameter passed to the method_call() + virtual + function of GDBusInterfaceVTable + + - A reference is passed (transfer full) to the method_call() + virtual function, + and that reference is then passed (transfer full) to the + return_value/error + functions on GDBusMethodInvocation. + - An internal reference is retained from the point where + method_call() is called + until the return_value/error function is called. + + Since the return_value/error functions were already marked (transfer + full), + we use the first interpretation, annotate the invocation parameter of + method call as (transfer full) and describe this in the documentation, + along + with the idea that you are always supposed to call one of the + return_value/error + functions. + + See bug 738122 for the leak this caused in GJS. + + https://bugzilla.gnome.org/show_bug.cgi?id=738259 + + gio/gdbusconnection.h | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit 837d0b94a9bc96275c635450879c12fd54005426 +Author: Matthias Clasen +AuthorDate: Mon Oct 27 17:32:06 2014 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 27 17:32:15 2014 -0400 + + Updates for 2.43.0 + + NEWS | 40 ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 40 insertions(+) + +commit 203fe3b8a8817da8e1ec771e2ebd15c747653158 +Author: Philip Withnall +AuthorDate: Wed Sep 24 14:06:02 2014 +0100 +Commit: Philip Withnall +CommitDate: Mon Oct 27 09:43:55 2014 +0000 + + gcancellable: Clarify that GSources hold references to GCancellables + + Clarify in the documentation that a GSource created with + g_cancellable_source_new() must be explicitly removed from its + GMainContext before the GCancellable can be finalised. + + This could be a common way of leaking GCancellables. + + https://bugzilla.gnome.org/show_bug.cgi?id=737259 + + gio/gcancellable.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 92d67358986c3be48ccbd4135b53ea591f15ea86 +Author: Erik van Pienbroek +AuthorDate: Thu Jul 17 18:37:04 2014 +0200 +Commit: Dan Winship +CommitDate: Sun Oct 26 11:42:53 2014 -0400 + + Guard g_inet_address_mask_equal against invalid input + + https://bugzilla.gnome.org/show_bug.cgi?id=733338 + + gio/ginetaddressmask.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 0501bf26b924cdaccf9c1c38522f267b7a520ef4 +Author: Dan Winship +AuthorDate: Wed Oct 15 17:49:09 2014 -0400 +Commit: Dan Winship +CommitDate: Sat Oct 25 08:52:54 2014 -0400 + + gio/tests/tls-certificates: fix + + da053e34 broke the tls-certificates test by requiring the backend to + implement g_tls_certificate_verify() (which the test TLS backend + didn't). Add a trivial implementation to make the test pass again; + we'll need something more complicated when we add tests that are + supposed to get errors. + + gio/tests/gtesttlsbackend.c | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) + +commit 4125415e7f4d1213fc7122beac0d91af08e37b28 +Author: Benjamin Otte +AuthorDate: Sun Oct 12 02:21:08 2014 +0200 +Commit: Benjamin Otte +CommitDate: Tue Oct 21 22:51:40 2014 +0200 + + gfile: g_file_equal (x, x) is TRUE + + So shortcut it. + + I wrote this patch less as a performance optimization and more as a + clarification, so that people looking at the code can be assured + of this + invariant. + + https://bugzilla.gnome.org/show_bug.cgi?id=738374 + + gio/gfile.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit b768d0e4eaf15934067557cfee6b8beebca5df42 +Author: Ryan Lortie +AuthorDate: Tue Oct 21 11:30:47 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 21 12:09:57 2014 -0400 + + Add tests for {read,write}_all_async() + + https://bugzilla.gnome.org/show_bug.cgi?id=737451 + + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 1 + + gio/tests/stream-rw_all.c | 258 + ++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 260 insertions(+) + +commit 223b5f757fe07cdec2879315965297a31edc3478 +Author: Ryan Lortie +AuthorDate: Mon Sep 29 11:50:05 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 21 12:09:57 2014 -0400 + + docs: explain inconsistency of _{read,write}_all() + + These functions are inconsistent with our normal conventions in that + they set an output variable to a specified value, even in the + case that + an error is thrown. + + Document very clearly that this should be considered exceptional. + + https://bugzilla.gnome.org/show_bug.cgi?id=737451 + + gio/ginputstream.c | 10 ++++++++-- + gio/goutputstream.c | 11 +++++++++-- + 2 files changed, 17 insertions(+), 4 deletions(-) + +commit c8d10470939847069b1a346d4c44f2adde3469f6 +Author: Ryan Lortie +AuthorDate: Mon Sep 29 11:44:09 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 21 12:09:57 2014 -0400 + + Add g_output_stream_write_all_async() + + Similar to the previous patch, this commit contains a minor + violation of + normal API conventions. See the explanation in the previous commit + message. + + Heavily based on a patch from Ignacio Casal Quinteiro. + + https://bugzilla.gnome.org/show_bug.cgi?id=737451 + + gio/goutputstream.c | 183 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/goutputstream.h | 16 +++++ + 2 files changed, 199 insertions(+) + +commit 76b890d0f104b6ee48a057fc58f1c6b495fdf2f2 +Author: Ryan Lortie +AuthorDate: Mon Sep 29 11:40:46 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 21 11:31:45 2014 -0400 + + Add g_input_stream_read_all_async() + + Add an asynchronous version of _read_all(). + + This API is not fully consistent with the normal expectations of a + non-asynchronous version. Consistency between the sync and async + version is + probably more important. + + The API will still bind correctly, but access to all functionality + will + not be available: specifically, in the case of an error, higher level + languages will be unable to determine how many bytes were successfully + read before the error. Most users will probably not want to use this + information anyway, so this is OK -- and if they do need the + information, then they can just write the loop for themselves. + + Heavily based on a patch from Ignacio Casal Quinteiro. + + https://bugzilla.gnome.org/show_bug.cgi?id=737451 + + gio/ginputstream.c | 179 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/ginputstream.h | 15 +++++ + 2 files changed, 194 insertions(+) + +commit aabc3a41c36f89363884b2a61dd9b038e5b5c214 +Author: Michael Catanzaro +AuthorDate: Mon Oct 20 19:05:26 2014 -0500 +Commit: Michael Catanzaro +CommitDate: Mon Oct 20 19:05:48 2014 -0500 + + Fix another ancient docs typo + + gio/gtcpconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f4af8d1d007edcfa5949315be563b3aa8792f250 +Author: Ryan Lortie +AuthorDate: Sat Oct 4 12:47:33 2014 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 20 15:00:51 2014 +0200 + + GApplication: ignore --help if not handling args + + If the user didn't register any arguments for parsing, also ignore + --help. This fixes a regression in meld. + + https://bugzilla.gnome.org/show_bug.cgi?id=737869 + + gio/gapplication.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 817f82da6c92d8a2ef0e0582037fd2bbd248798c +Author: Ryan Lortie +AuthorDate: Mon Oct 20 14:28:10 2014 +0200 +Commit: Ryan Lortie +CommitDate: Mon Oct 20 14:34:52 2014 +0200 + + GOption: stop calling getopt() + + We called getopt() to try to find out of the platform on which we are + running defaults to strict POSIX-style argument handling (ie: flags + following the first filename are considered as further filenames + rather + than flags). + + This is the default case on BSDs, for example. It is also the case on + GNU systems with the POSIXLY_CORRECT environment variable set. + + Unfortunately many of our tools rely on being able to accept + commandline + arguments in the non-strict ordering and the code for making these + calls + is spread widely (for example in Makefile fragments invoking some + of our + build tools). + + For this reason we need to revert the getopt() check and only enable + strict POSIX mode in the case that the application explicitly + opts into + it using the _set_strict_posix() API. + + This also fixs a failure to build on Windows due to missing getopt(). + + https://bugzilla.gnome.org/show_bug.cgi?id=723160 + + glib/goption.c | 15 +++------------ + 1 file changed, 3 insertions(+), 12 deletions(-) + +commit e9b7c702404929c415320545905dcf008c9cd666 +Author: Ryan Lortie +AuthorDate: Fri Oct 17 14:38:43 2014 +0200 +Commit: Ryan Lortie +CommitDate: Fri Oct 17 14:39:09 2014 +0200 + + GHashTable: small docs fix + + We use g_hash_table_unref() here, not g_object_unref(). + + glib/ghash.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 18745ff674896c931379d097b18d74678044668e +Author: Benjamin Berg +AuthorDate: Fri Oct 17 14:16:22 2014 +0200 +Commit: Ryan Lortie +CommitDate: Fri Oct 17 14:29:26 2014 +0200 + + Allow hash table destroy notifiers to remove other entries + + With this patch it is fine to call g_hash_table_lookup and + g_hash_table_remove from destroy notification functions. Before + this could lead to an infinitie loop if g_hash_table_remove_all + was used. + + https://bugzilla.gnome.org/show_bug.cgi?id=695082 + + glib/ghash.c | 91 + ++++++++++++++++++++++++++++++++++++++++++++----------- + glib/tests/hash.c | 55 +++++++++++++++++++++++++++++++-- + 2 files changed, 125 insertions(+), 21 deletions(-) + +commit cb042bf5b5750a31f93b122b49f5a90975a5ed6a +Author: Emmanuele Bassi +AuthorDate: Fri Oct 17 11:14:10 2014 +0100 +Commit: Emmanuele Bassi +CommitDate: Fri Oct 17 11:16:16 2014 +0100 + + docs: Add missing get_type() reference to gio.types + + GSubprocessLauncher is a GObject, so we need to tell gtk-doc to + inspect + it. + + https://bugzilla.gnome.org/show_bug.cgi?id=738675 + + docs/reference/gio/gio.types | 1 + + 1 file changed, 1 insertion(+) + +commit ae52ab3d1170a393b0b734e9b9b37c3f107a7c03 +Author: Ryan Lortie +AuthorDate: Mon Jan 27 15:42:23 2014 +0000 +Commit: Lars Uebernickel +CommitDate: Wed Oct 15 23:37:45 2014 +0200 + + GOption: add strict posix mode + + Add a "posixly correct" mode to GOption to stop parsing arguments as + soon as the first non-option argument is encountered. + + We determine the default value on the basis of duplicating the + behaviour + of the system getopt() implementation (which we directly check the + behaviour of at runtime). On GNU systems this allows the user + to modify + our behaviour using POSIXLY_CORRECT. + + The user can change the value by g_option_context_set_strict_posix(), + which might be useful for some usecases of GOptionContext (as + mentioned + in the doc string of this new function). + + https://bugzilla.gnome.org/show_bug.cgi?id=723160 + + glib/goption.c | 72 + +++++++++++++++++++++++++++++++++++++++++++++ + glib/goption.h | 6 ++++ + glib/tests/option-context.c | 66 + +++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 144 insertions(+) + +commit f2786908a8858ec9d063e8fae7e4b2d8d612b682 +Author: Matthias Clasen +AuthorDate: Tue Oct 14 23:22:14 2014 -0400 +Commit: Matthias Clasen +CommitDate: Tue Oct 14 23:22:14 2014 -0400 + + GApplication: Plug a memory leak + + We were not freeing resource_path. + + gio/gapplication.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 5a0a85e444f5f7d18e4d20fc0340afb58f732e5f +Author: Jasper St. Pierre +AuthorDate: Tue Oct 14 19:14:01 2014 -0700 +Commit: Jasper St. Pierre +CommitDate: Tue Oct 14 19:17:53 2014 -0700 + + gdesktopappinfo: Fix copy/paste typo from e24e89b + + Commit e24e89b accidentally ironically introduced a typo when + replacing + the code with symbolic contents. Specifically, "Added Associations" + was + replaced with "Default Applications" when reading defaults.list, + giving + a warning about the file containing a "Default Applications" group. + + If this was intended, it should have not been lumped in with + a cleanup. + + gio/gdesktopappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e054bbfe1646239abc673658db314f546ff27709 +Author: Benjamin Otte +AuthorDate: Sun Oct 12 01:57:02 2014 +0200 +Commit: Benjamin Otte +CommitDate: Sun Oct 12 01:57:02 2014 +0200 + + gfile: Clarify docs + + Clarify corner cases that were unclear while reviewing a GTK patch. + + gio/gfile.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 6e994d06560bdb36921eef8338681caf95d90102 +Author: Benjamin Otte +AuthorDate: Sun Oct 12 01:29:27 2014 +0200 +Commit: Benjamin Otte +CommitDate: Sun Oct 12 01:29:27 2014 +0200 + + Bump version to 2.43.0 + + We have new API. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 36d8b941d4b5007b71c2b60bb80b80fa31a354e6 +Author: Benjamin Otte +AuthorDate: Sun Sep 7 05:28:56 2014 +0200 +Commit: Benjamin Otte +CommitDate: Sun Oct 12 00:27:06 2014 +0200 + + signal: Keep only one list of emissions + + There is no need to keep 2 lists. + + This simplifies the code and gets rid of the only user inside glib of + G_HAVE_GROWING_STACK. + + https://bugzilla.gnome.org/show_bug.cgi?id=736284 + + gobject/gsignal.c | 73 + +++++++++++++++++++------------------------------------ + 1 file changed, 25 insertions(+), 48 deletions(-) + +commit 58ec89ea7c86f9b61ae4a0017019e19f09a1542f +Author: Matthias Clasen +AuthorDate: Sat Oct 11 15:53:13 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 11 15:53:13 2014 -0400 + + Fix a return_if_fail confusion + + This slipped through my editing of the patch. + + gobject/gtype.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 011bf876e75c93c6b3fb9dd24d9458d881d4b36b +Author: Owen W. Taylor +AuthorDate: Thu Oct 9 16:38:10 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 11 13:54:29 2014 -0400 + + Add simple instance count facility + + Add GOBJECT_DEBUG=instance-count which enables internal accounting + of the number of instances of each GType, and + g_type_get_instance_count() + to retrieve the result. + + https://bugzilla.gnome.org/show_bug.cgi?id=354457 + + gobject/gtype.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- + gobject/gtype.h | 6 +++++- + 2 files changed, 55 insertions(+), 2 deletions(-) + +commit aa401aef878eb0dc02e0c4523cadceaa714ac012 +Author: Krasimir Chonov +AuthorDate: Sat Oct 11 08:17:10 2014 +0300 +Commit: Alexander Shopov +CommitDate: Sat Oct 11 08:19:43 2014 +0300 + + Updated Bulgarian translation + + po/bg.po | 2239 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1230 insertions(+), 1009 deletions(-) + +commit 26c66ab1b9806d097bd1080240435cb37642f141 +Author: Matthias Clasen +AuthorDate: Fri Oct 10 14:17:56 2014 -0400 +Commit: Matthias Clasen +CommitDate: Fri Oct 10 14:17:56 2014 -0400 + + Clarify g_propagate_error docs + + I just ran into a bug that was caused by having src being a + persistent GError* that was not cleared after propagating it. + + glib/gerror.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 0bfea5e7728bf7bc9e25da3c828b60c6fc9c776f +Author: Benjamin Gilbert +AuthorDate: Thu Oct 9 00:07:36 2014 -0400 +Commit: Matthias Clasen +CommitDate: Fri Oct 10 06:41:55 2014 -0400 + + Fix g_cond_timed_wait() timeout with !CLOCK_MONOTONIC + + g_get_monotonic_time() and g_get_real_time() now always use different + clocks, so we cannot avoid correcting for their offset. Fixes failure + to time out on Mac OS X. + + https://bugzilla.gnome.org/show_bug.cgi?id=738197 + + glib/deprecated/gthread-deprecated.c | 6 ------ + 1 file changed, 6 deletions(-) + +commit 549e7b0de62b9f31825f0c24f41cfa7eaad97360 +Author: Aleksander Morgado +AuthorDate: Wed Oct 8 20:37:42 2014 +0200 +Commit: Aleksander Morgado +CommitDate: Wed Oct 8 20:51:47 2014 +0200 + + garray: initialize allocated size in g_byte_array_new_take() + + Internal allocation size (array->alloc) was being kept to 0 when a new + GByteArray was created from an already existing heap-allocated buffer. + + Among other things, this was making g_byte_array_set_size() fully + clear all + the buffer contents (not just the newly allocated memory) when + G_DEBUG=gc-friendly was being used... + + if (G_UNLIKELY (g_mem_gc_friendly)) + memset (array->data + array->alloc, 0, want_alloc - array->alloc); + + https://bugzilla.gnome.org/show_bug.cgi?id=738170 + + glib/garray.c | 1 + + 1 file changed, 1 insertion(+) + +commit de82b641b05ee32812d945a9d4ecd1c1bbc3401e +Author: Matthias Clasen +AuthorDate: Mon Oct 6 22:41:06 2014 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 6 22:41:06 2014 -0400 + + Add advice on g_cancellable_reset + + Don't use it at home. + + gio/gcancellable.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit da053e345b4729a8a166eca54da257ae9accc7b1 +Author: Aleix Conchillo Flaqué +AuthorDate: Mon Oct 6 10:19:48 2014 -0700 +Commit: Aleix Conchillo Flaqué +CommitDate: Mon Oct 6 10:19:48 2014 -0700 + + tlscertificate: add support for certificate chains + + This patch changes the behavior of the following functions: + + g_tls_certificate_new_from_pem + g_tls_certificate_new_from_file + g_tls_certificate_new_from_files + + If more than one certificate is found it will try to load the chain. + + It is assumed that the chain will be in the right order (top-level + certificate will be the last one in the file). If the chain cannot be + verified, the first certificate in the file will be returned as + before. + + https://bugzilla.gnome.org/show_bug.cgi?id=729739 + + gio/gtlscertificate.c | 230 + ++++++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 184 insertions(+), 46 deletions(-) + +commit 4454b815367831a71b1ae00b0182b5b389a78df2 +Author: Michael Catanzaro +AuthorDate: Sun Oct 5 12:11:08 2014 -0500 +Commit: Michael Catanzaro +CommitDate: Sun Oct 5 12:11:21 2014 -0500 + + Fix typo + + glib/gthreadpool.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6cd13d34fe9db74dd1d6a144630262ab6306a95f +Author: Milo Casagrande +AuthorDate: Sun Oct 5 13:07:12 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Oct 5 13:07:12 2014 +0000 + + Updated Italian translation + + po/it.po | 688 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 350 insertions(+), 338 deletions(-) + +commit 5cbc94d8294634e54218fcc5d78d2f31e116469f +Author: Matthias Clasen +AuthorDate: Thu Oct 2 14:41:01 2014 -0400 +Commit: Matthias Clasen +CommitDate: Thu Oct 2 14:41:01 2014 -0400 + + GDataSet: Add more tests + + These tests exercise the NULL key fix from the previous commit. + + glib/tests/dataset.c | 54 + +++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 53 insertions(+), 1 deletion(-) + +commit f6a9d0479622593c8339346b7298ca04f31a56be +Author: Matthias Clasen +AuthorDate: Thu Oct 2 14:40:16 2014 -0400 +Commit: Matthias Clasen +CommitDate: Thu Oct 2 14:40:16 2014 -0400 + + GDataSet: silently accept NULL/0 as keys + + This used to be the behaviour before we made these functions + threadsafe; keep it that way. + + https://bugzilla.gnome.org/show_bug.cgi?id=737741 + + glib/gdataset.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit e24e89bc0777044b41f180dbf3891f852b4a749e +Author: Bastien Nocera +AuthorDate: Thu Sep 4 15:39:19 2014 +0200 +Commit: Bastien Nocera +CommitDate: Tue Sep 30 14:41:43 2014 +0200 + + gdesktopappinfo: Use symbolic names in the code + + We have #defines for the key file groups, so use them to avoid typos. + + https://bugzilla.gnome.org/show_bug.cgi?id=736273 + + gio/gdesktopappinfo.c | 26 ++++++++++++-------------- + 1 file changed, 12 insertions(+), 14 deletions(-) + +commit 45344f362256d725e8e8b5d334b5062853554115 +Author: Ting-Wei Lan +AuthorDate: Mon Sep 29 23:25:11 2014 +0800 +Commit: Ting-Wei Lan +CommitDate: Tue Sep 30 00:42:00 2014 +0800 + + GCredentials: Fix ABI break when adding NetBSD support + + https://bugzilla.gnome.org/show_bug.cgi?id=728256 + + gio/gioenums.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 682bca095068d2823a129bebae42bb4f27f3e118 +Author: Ryan Lortie +AuthorDate: Mon Sep 29 11:39:51 2014 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 29 11:40:10 2014 -0400 + + Add version macros for 2.44 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gversionmacros.h | 24 ++++++++++++++++++++++++ + 2 files changed, 25 insertions(+) + +commit a4612a922bc984ff45e2096d2d286da1be5be481 +Author: Philip Withnall +AuthorDate: Fri Sep 26 16:18:46 2014 +0100 +Commit: Philip Withnall +CommitDate: Sat Sep 27 10:30:39 2014 +0100 + + tests: Fix some minor leaks in the unit tests + + https://bugzilla.gnome.org/show_bug.cgi?id=737446 + + glib/tests/bookmarkfile.c | 1 + + glib/tests/fileutils.c | 3 ++- + glib/tests/option-context.c | 8 ++++++-- + 3 files changed, 9 insertions(+), 3 deletions(-) + +commit cb2c6eef0a5a044b39f8c92360e3e01375e23d10 +Author: Sébastien Wilmet +AuthorDate: Sat Sep 27 00:04:55 2014 +0200 +Commit: Sébastien Wilmet +CommitDate: Sat Sep 27 00:04:55 2014 +0200 + + gslist: indentation fix + + glib/gslist.c | 102 + +++++++++++++++++++++++++++++----------------------------- + 1 file changed, 51 insertions(+), 51 deletions(-) + +commit 66ef10eec9f4acae19335373fe7cbbebed5ceb60 +Author: Sébastien Wilmet +AuthorDate: Thu Sep 18 16:41:32 2014 +0200 +Commit: Sébastien Wilmet +CommitDate: Fri Sep 26 23:36:26 2014 +0200 + + docs: syntax highlighting for the code examples + + In the sections Concepts, Tools and Tutorial. + + https://bugzilla.gnome.org/show_bug.cgi?id=736914 + + docs/reference/gobject/glib-genmarshal.xml | 12 +-- + docs/reference/gobject/glib-mkenums.xml | 12 +-- + docs/reference/gobject/tut_gobject.xml | 20 ++-- + docs/reference/gobject/tut_gsignal.xml | 40 ++++---- + docs/reference/gobject/tut_gtype.xml | 80 +++++++-------- + docs/reference/gobject/tut_howto.xml | 156 + ++++++++++++++--------------- + docs/reference/gobject/tut_intro.xml | 8 +- + docs/reference/gobject/tut_tools.xml | 4 +- + 8 files changed, 166 insertions(+), 166 deletions(-) + +commit 1c6df7aaeb52672c7a63517c4df271db7727b8be +Author: Philip Withnall +AuthorDate: Thu Sep 25 09:51:25 2014 +0100 +Commit: Philip Withnall +CommitDate: Thu Sep 25 13:59:25 2014 +0100 + + gmain: Unref child sources when finalising a GSource + + If a GSource is created, *not* attached to a GMainContext, and + then has + child sources added, dropping the last reference to the parent GSource + will leak its references to its child sources. Currently, child + sources + are only unreffed when g_source_destroy() is called on the parent. + + https://bugzilla.gnome.org/show_bug.cgi?id=737338 + + glib/gmain.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit eaca86801e1ae149559ec1575cac4ef4813a255e +Author: Philip Withnall +AuthorDate: Thu Sep 25 09:51:00 2014 +0100 +Commit: Philip Withnall +CommitDate: Thu Sep 25 09:52:50 2014 +0100 + + gmain: Fix some signed/unsigned integer comparisons + + Just to shut gcc up. + + https://bugzilla.gnome.org/show_bug.cgi?id=737338 + + glib/gmain.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 42d0dc363e3597d36136051d53e25c09ebff253f +Author: Sweta Kothari +AuthorDate: Wed Sep 24 23:09:32 2014 +0530 +Commit: Sweta Kothari +CommitDate: Wed Sep 24 23:09:32 2014 +0530 + + Updated gujarati translations + + po/gu.po | 2135 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 1198 insertions(+), 937 deletions(-) + +commit 0ab9d66b058ad2fadf0194578739a2aece607b6f +Author: Krishnababu Krothapalli +AuthorDate: Tue Sep 23 14:28:34 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Tue Sep 23 14:28:34 2014 +0000 + + Updated Telugu translation + + po/te.po | 2161 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 1212 insertions(+), 949 deletions(-) + +commit e1b84e3296c1ab0cba29ce2114505ae9f5002cae +Author: Hib Eris +AuthorDate: Mon Sep 22 22:37:43 2014 +0200 +Commit: Colin Walters +CommitDate: Tue Sep 23 09:08:16 2014 -0400 + + Include in glib/valgrind.h + + This ensures the uintptr_t type is defined on mingw-w64. + + Fixes compile error: + + make[4]: Entering directory + `/home/abuild/rpmbuild/BUILD/glib-2.42.0/gobject' + CC libgobject_2_0_la-gtype.lo + In file included from gtype.c:24:0: + ../glib/valgrind.h: In function 'VALGRIND_PRINTF': + ../glib/valgrind.h:5601:4: error: unknown type name 'uintptr_t' + uintptr_t _qzz_res; + ^ + + https://bugzilla.gnome.org/show_bug.cgi?id=737143 + + glib/valgrind.h | 3 +++ + 1 file changed, 3 insertions(+) + +commit f5ed7d2d3e26d7b06c5aac4ef38f5eb995289a59 +Author: Saibal Ray +AuthorDate: Tue Sep 23 11:27:44 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Tue Sep 23 11:27:44 2014 +0000 + + Updated Bengali (India) translation + + po/bn_IN.po | 6452 + ++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 3675 insertions(+), 2777 deletions(-) + +commit f41ebebd3476e3e6887f11ed26672a39513c4f98 +Author: Philip Withnall +AuthorDate: Fri Sep 19 08:54:33 2014 +0100 +Commit: Philip Withnall +CommitDate: Tue Sep 23 08:08:45 2014 +0100 + + gtask: Ignore errors from g_thread_pool_push() + + g_thread_pool_push() only returns an error if it fails to spawn a new + thread. However, it unconditionally adds the task to its worker queue, + so: + • if _any_ threads exist in the pool, the task will eventually be + handled; and + • if _no_ threads exist in the pool, the task will be handled + if one + is eventually successfully spawned. + If no more threads are ever spawned, the process probably has bigger + problems than a single GTask which is taking forever to complete. + + https://bugzilla.gnome.org/show_bug.cgi?id=736806 + + gio/gtask.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit 925913d8dd8f4f283265fb7b2e17fc3da4d06b3e +Author: Philip Withnall +AuthorDate: Wed Sep 17 17:20:46 2014 +0100 +Commit: Philip Withnall +CommitDate: Tue Sep 23 08:08:25 2014 +0100 + + gtask: Document signal handler reference counting + + Explain why the signal handler holds a reference to the GTask, even + though that causes a reference loop at first glance. + + https://bugzilla.gnome.org/show_bug.cgi?id=736806 + + gio/gtask.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit c6838ffaa1dd5ff9d2b44f7eaffcd8ecf9886f2a +Author: Philip Withnall +AuthorDate: Wed Sep 17 15:07:25 2014 +0100 +Commit: Philip Withnall +CommitDate: Tue Sep 23 08:08:25 2014 +0100 + + gtask: Fix a signed/unsigned integer comparison + + The GSource times assigned to creation_time are always signed. + + https://bugzilla.gnome.org/show_bug.cgi?id=736806 + + gio/gtask.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 26a240fd1004c76500c6be104364a3a12bf9a279 +Author: Ryan Lortie +AuthorDate: Mon Sep 22 13:15:02 2014 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 22 13:15:17 2014 -0400 + + GLib 2.42.0 + + NEWS | 36 ++++++++++++++++++++++++++++++++++++ + configure.ac | 4 ++-- + 2 files changed, 38 insertions(+), 2 deletions(-) + +commit c8d884da433696b3cc8f19ce83ff3b86b4978472 +Author: A S Alam +AuthorDate: Sun Sep 21 08:52:43 2014 -0500 +Commit: A S Alam +CommitDate: Sun Sep 21 08:52:43 2014 -0500 + + update Punjabi Translation for 3.14 release + + po/pa.po | 694 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 335 insertions(+), 359 deletions(-) + +commit db41a84239a0adda496f2577a85303f0c679482d +Author: Rajesh Ranjan +AuthorDate: Sun Sep 21 04:14:06 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Sep 21 04:14:06 2014 +0000 + + Updated Hindi translation + + po/hi.po | 2269 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 1268 insertions(+), 1001 deletions(-) + +commit d3c65dcbba2e23c55a15bb09106b045e5d860b2d +Author: YunQiang Su +AuthorDate: Sun Sep 21 10:58:01 2014 +0800 +Commit: YunQiang Su +CommitDate: Sun Sep 21 10:58:01 2014 +0800 + + Revert "update zh_CN translation" + + Add wrong po file + This reverts commit ee3d55573ff3731b2f92deb5e35decc316d53475. + + po/zh_CN.po | 5039 + +++++++++++++++++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 4378 insertions(+), 661 deletions(-) + +commit ee3d55573ff3731b2f92deb5e35decc316d53475 +Author: YunQiang Su +AuthorDate: Sun Sep 21 10:30:53 2014 +0800 +Commit: YunQiang Su +CommitDate: Sun Sep 21 10:30:53 2014 +0800 + + update zh_CN translation + + po/zh_CN.po | 5039 + ++++++++--------------------------------------------------- + 1 file changed, 661 insertions(+), 4378 deletions(-) + +commit f550be0c6ab978ded5c9e94d98858a26b2682dca +Author: Tong Hui +AuthorDate: Sun Sep 21 10:24:22 2014 +0800 +Commit: YunQiang Su +CommitDate: Sun Sep 21 10:24:22 2014 +0800 + + update zh_CN translation + + po/zh_CN.po | 657 + ++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 334 insertions(+), 323 deletions(-) + +commit a2d4a612c67951a0c9090b4225ccd1774af414df +Author: Ask H. Larsen +AuthorDate: Sat Sep 20 17:19:18 2014 +0200 +Commit: Kenneth Nielsen +CommitDate: Sat Sep 20 17:19:18 2014 +0200 + + Updated Danish translation + + po/da.po | 654 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 334 insertions(+), 320 deletions(-) + +commit dceff8fc2c354b994793d8792455bee7ed195169 +Author: Ryan Lortie +AuthorDate: Tue Sep 16 19:48:06 2014 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 19 13:39:00 2014 -0400 + + gmain: improve g_source_set_name thread safety + + Step up thread safety on g_source_set_name() to the same standard + as all + other GSource functions: after we are attached to a main context, this + function should be threadsafe. + + https://bugzilla.gnome.org/show_bug.cgi?id=736683 + + glib/gmain.c | 23 +++++++++++++++++++---- + 1 file changed, 19 insertions(+), 4 deletions(-) + +commit 1cbdbef77209fe82239bd10f062425491cf256ae +Author: Ryan Lortie +AuthorDate: Tue Sep 16 19:40:30 2014 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 19 13:39:00 2014 -0400 + + gsource: clarify restrictions on non-existant IDs + + Document that one must not use the "by id" source APIs with + non-existent + IDs. The real justification behind this restriction is that the reuse + of source ids makes it unsafe to call these functions unless you're + absolutely sure that the source exists and it belongs to you. If you + call one of these functions on a source that may already have been + removed then you run the risk of finding someone else's source (with + your reused id). + + This also bails us out of a slightly tricky situation with respect to + the threadsafety of g_main_context_find_source_by_id(). The fact that + this function doesn't return a reference implies that its return value + cannot be safely accessed unless we already know for sure that a + reference is being held elsewhere (by example, by the main context + itself if we know that the source has not been removed). The function + itself, however, performs an access to the value, which could + result in + a crash. + + If we mandate that it is only valid to call this function on + known-to-exist source IDs then we dodge this problem. + + https://bugzilla.gnome.org/show_bug.cgi?id=736683 + + glib/gmain.c | 34 +++++++++++++++++++++++++++++++++- + 1 file changed, 33 insertions(+), 1 deletion(-) + +commit 7db1baf59078c667ac1ae43f839b2b1866e65a87 +Author: Simon McVittie +AuthorDate: Fri Sep 19 15:05:04 2014 +0100 +Commit: Simon McVittie +CommitDate: Fri Sep 19 16:58:23 2014 +0100 + + GVariant: say that serialized form needs an out-of-band length + + This confused me for a while, because it isn't the same as D-Bus. + Like GVariant, the D-Bus serialization needs an out-of-band + endianness and type indicator, but unlike GVariant, serialized + D-Bus objects encapsulate their own length (often by starting with + a byte-count). This does come at some redundancy cost, so I can see + why the more efficient GVariant format does this the way it does; + but it's a difference between D-Bus and GVariant that seems worth + calling out. + + It's also relevant for the designers of file or message-framing + formats: with D-Bus serialization it would be feasible to say + "the file + starts with a little-endian D-Bus variant, followed by...", + but in GVariant you wouldn't be able to deserialize the variant + unless you either assume that it extends to end-of-file, or have + an explicit length. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=736975 + Reviewed-by: Ryan Lortie + + glib/gvariant.c | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +commit 174ebaefcc2b1b94f4a628e60f150b7209230dbf +Author: Matthias Clasen +AuthorDate: Thu Sep 18 15:26:36 2014 -0400 +Commit: Matthias Clasen +CommitDate: Thu Sep 18 15:26:36 2014 -0400 + + gresource: Make extract work better + + When no section is specified, look for the resource to extract + in all sections - previously, we would stop after the first + section. + + gio/gresource-tool.c | 22 ++++++++++++---------- + 1 file changed, 12 insertions(+), 10 deletions(-) + +commit 5c951e5b042d80ae2dcb1e17ec07fa8008e07085 +Author: Matthias Clasen +AuthorDate: Thu Sep 18 14:51:09 2014 -0400 +Commit: Matthias Clasen +CommitDate: Thu Sep 18 14:52:03 2014 -0400 + + gresource: Use GError in more places + + The API gives us an error message, lets use it. + + gio/gresource-tool.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit dfaaf37338533b2412800c61b342b296fff7c6cf +Author: Sébastien Wilmet +AuthorDate: Thu Sep 18 20:31:52 2014 +0200 +Commit: Sébastien Wilmet +CommitDate: Thu Sep 18 20:32:43 2014 +0200 + + Update URLs library.gnome.org -> developer.gnome.org + + INSTALL.in | 4 ++-- + docs/reference/gio/gio-docs.xml | 2 +- + docs/reference/glib/glib-docs.xml | 2 +- + docs/reference/gobject/gobject-docs.xml | 2 +- + docs/reference/gobject/tut_tools.xml | 4 ++-- + 5 files changed, 7 insertions(+), 7 deletions(-) + +commit 4fb9421528777e80beeae1e85eafb46e44f5b408 +Author: Мирослав Николић + +AuthorDate: Wed Sep 17 21:11:50 2014 +0200 +Commit: Мирослав Николић + +CommitDate: Wed Sep 17 21:11:50 2014 +0200 + + Updated Serbian translation + + po/sr.po | 694 + +++++++++++++++++++++++++++------------------------------ + po/sr@latin.po | 694 + +++++++++++++++++++++++++++------------------------------ + 2 files changed, 668 insertions(+), 720 deletions(-) + +commit 5486481fab3fc149aa41a440cfe63bcfa8567926 +Author: Sandeep Sheshrao Shedmake +AuthorDate: Fri Sep 12 19:01:35 2014 +0530 +Commit: Sandeep Sheshrao Shedmake +CommitDate: Wed Sep 17 10:30:43 2014 +0530 + + Updated Marathi Translations + + po/mr.po | 2134 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 1197 insertions(+), 937 deletions(-) + +commit 38a061422532b3d7b8bce0988f3767806ac28f8f +Author: Jasper St. Pierre +AuthorDate: Tue Sep 16 15:41:58 2014 -0600 +Commit: Ryan Lortie +CommitDate: Tue Sep 16 17:49:49 2014 -0400 + + GApplication:handle-local-options: document return value + + The return value for this signal was documented in the prose, but not + properly in a Returns: stanza. Fix that. + + gio/gapplication.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 8061694c496094015bfd3959cbece7ab158ef6ef +Author: Jasper St. Pierre +AuthorDate: Tue Sep 16 15:39:59 2014 -0600 +Commit: Ryan Lortie +CommitDate: Tue Sep 16 17:49:40 2014 -0400 + + goption: Add G_OPTION_FLAG_NONE + + This is helpful to better document code, as G_OPTION_FLAG_NONE is more + readable than 0. + + glib/goption.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit 84ec6b4d78928d4b51d64f17b4bde56314e75b1b +Author: Jasper St. Pierre +AuthorDate: Tue Sep 16 15:39:41 2014 -0600 +Commit: Ryan Lortie +CommitDate: Tue Sep 16 17:48:49 2014 -0400 + + g_application_add_main_option: fix type signature + + The flags argument is a GOptionFlags so use that type instead of + 'int'. + + gio/gapplication.c | 2 +- + gio/gapplication.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 4482977238ae80f64c2fe318d1500f4662c73980 +Author: Jasper St. Pierre +AuthorDate: Tue Sep 16 14:45:34 2014 -0600 +Commit: Jasper St. Pierre +CommitDate: Tue Sep 16 14:52:21 2014 -0600 + + Fix some introspection warnings + + gio/gapplication.c | 2 +- + gio/gapplication.h | 2 +- + gio/gdesktopappinfo.c | 3 +++ + gio/gmenumodel.h | 2 +- + 4 files changed, 6 insertions(+), 3 deletions(-) + +commit 0177cece40ab8a31bf8994706ac4cac8d80f8755 +Author: Matthias Clasen +AuthorDate: Mon Sep 15 14:43:42 2014 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 15 15:52:48 2014 -0400 + + 2.41.5 + + NEWS | 23 +++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 24 insertions(+), 1 deletion(-) + +commit bb6a77afa328f16568a41b26de75f255dcfc9daf +Author: Sebastian Dröge +AuthorDate: Sat Sep 13 16:31:03 2014 +0300 +Commit: Sebastian Dröge +CommitDate: Mon Sep 15 22:25:08 2014 +0300 + + grand: Only use rand_s() when targetting Visual Studio >= 2005 + + It did not exist before. Fall back to the current time plus + process id on older targets. This makes GLib work again on + Windows XP. + + https://bugzilla.gnome.org/show_bug.cgi?id=736458 + + glib/grand.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit f2b5edb6527e5bdde6f9e9c6771556308d0ea027 +Author: Shantha kumar +AuthorDate: Mon Sep 15 13:39:11 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Mon Sep 15 13:39:11 2014 +0000 + + Updated Tamil translation + + po/ta.po | 1798 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 914 insertions(+), 884 deletions(-) + +commit 27405ae878ebabb4361d38ed22be11b6891fd866 +Author: Matej Urbančič +AuthorDate: Sun Sep 14 22:18:09 2014 +0200 +Commit: Matej Urbančič +CommitDate: Sun Sep 14 22:18:09 2014 +0200 + + Updated Slovenian translation + + po/sl.po | 643 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 328 insertions(+), 315 deletions(-) + +commit 25990eb2b6da94e1d03631eab8a952ef84cb9986 +Author: Sébastien Wilmet +AuthorDate: Tue Sep 9 21:20:34 2014 +0200 +Commit: Sébastien Wilmet +CommitDate: Sat Sep 13 16:59:31 2014 +0200 + + docs: various small fixes + + For the GPtrArray example, several variables declared on the same line + is harder to read and to work with (to move, remove or comment + a single + variable declaration). + + gio/gfileinfo.c | 2 +- + glib/garray.c | 6 ++++-- + 2 files changed, 5 insertions(+), 3 deletions(-) + +commit fdc5b8f7443ccc0778c8163f47370be1ff65d86d +Author: Shankar Prasad +AuthorDate: Fri Sep 12 12:58:11 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Sep 12 12:58:11 2014 +0000 + + Updated Kannada translation + + po/kn.po | 3003 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 1584 insertions(+), 1419 deletions(-) + +commit d2f3e1190719d655a0f75a6a08ed6185ea558032 +Author: Chun-wei Fan +AuthorDate: Fri Sep 12 15:51:49 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Sep 12 15:51:49 2014 +0800 + + MSVC Builds: Update "Installation" + + This updates the glib-install.[props|vsprops] so that the headers to + "install" for the build are kept up-to-date. Note that this has been + generated by a script, so that this hopefully means that the header + "installation" can be maintained along with the autotools files + for most + uses, to simplify maintenance. + + build/win32/vs10/glib-install.props | 750 + +++++++++++------------------------ + build/win32/vs9/glib-install.vsprops | 473 +++++++++++----------- + 2 files changed, 473 insertions(+), 750 deletions(-) + +commit 0c5ed58342917d79ff3f6811e6b9a9a6d6a4b675 +Author: Balázs Úr +AuthorDate: Thu Sep 11 16:40:14 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Thu Sep 11 16:40:14 2014 +0000 + + Updated Hungarian translation + + po/hu.po | 701 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 339 insertions(+), 362 deletions(-) + +commit bebfd422af0a2fef422489d04f3b1d87bebd8b92 +Author: Sebastian Dröge +AuthorDate: Tue Sep 9 20:18:20 2014 +0200 +Commit: Sebastian Dröge +CommitDate: Thu Sep 11 11:07:48 2014 +0300 + + gutils: Don't use issetugid() on Android + + Android had it in older versions but the new 64 bit ABI does not + have it anymore, and some versions of the 32 bit ABI neither. + + https://code.google.com/p/android-developer-preview/issues/detail?id=168 + + https://bugzilla.gnome.org/show_bug.cgi?id=736351 + + glib/gutils.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 3b8bc8bacf1fe31cda44fb5293711e87989388ea +Author: Ryan Lortie +AuthorDate: Tue Sep 9 13:58:38 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 9 14:11:38 2014 -0400 + + GDesktopAppInfo: avoid inotify on missing dirs + + Some desktop file directories, like /usr/local/share/applications + may be + missing on some systems. + + When we try to inotify on these directories, this will result in a + every-4-seconds poll being setup which is quite bad. + + This is an issue that should be fixed in inotify itself but the + problem + is much larger there. For now, we can work around it in + GDesktopAppInfo + by refusing to monitor missing directories. + + We may get some spurious notifications of changes in the case that + /usr/local/share or /usr/local/share/applications is created without + actually adding desktop files, but spurious changes can already be + reported in other cases, so that's OK. We won't get (user-visible) + notification for a simple case of a completely unrelated file being + created (however we cannot avoid the wakeup in this case due to how + inotify works). That's probably pretty theoretical, though, + since files + in /usr don't change much and for the home directory we're likely to + have at least ~/.config and ~/.local existing. + + https://bugzilla.gnome.org/show_bug.cgi?id=736350 + + gio/gdesktopappinfo.c | 88 + +++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 85 insertions(+), 3 deletions(-) + +commit 2f55c66c64d77de9fa7d5524468d424071aecc44 +Author: Ryan Lortie +AuthorDate: Tue Sep 9 13:58:18 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 9 14:11:38 2014 -0400 + + apps test: add new "monitor" subcommand + + Waits until something modifies a desktop directory, then exits. + + https://bugzilla.gnome.org/show_bug.cgi?id=736350 + + gio/tests/apps.c | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit 9ac7d51a8086dece5994da4899fb07b223bd2ff7 +Author: Yuri Myasoedov +AuthorDate: Tue Sep 9 17:04:40 2014 +0400 +Commit: Yuri Myasoedov +CommitDate: Tue Sep 9 17:04:40 2014 +0400 + + Updated Russian translation + + po/ru.po | 790 + +++++++++++++++++++++++++++------------------------------------ + 1 file changed, 335 insertions(+), 455 deletions(-) + +commit 8df2cca08a5c06286303b39a34121c7e6925bf15 +Author: Paolo Borelli +AuthorDate: Sun Sep 7 18:34:26 2014 +0200 +Commit: Paolo Borelli +CommitDate: Mon Sep 8 08:19:25 2014 +0200 + + Fix minor mem leak in test case + + gio/tests/simple-proxy.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 5bb62d077b7882a105ac2468f4d152bc5e557d7d +Author: Paolo Borelli +AuthorDate: Wed Sep 3 08:12:01 2014 +0200 +Commit: Paolo Borelli +CommitDate: Mon Sep 8 08:19:25 2014 +0200 + + GThreadPool: expand g_thread_pool_new docs + + glib/gthreadpool.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit aef0e4b7f3c7a33cd9d6c370fdad2b6f7d725f15 +Author: Matthias Clasen +AuthorDate: Sun Sep 7 22:50:36 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 7 22:50:36 2014 -0400 + + Fix docs to talk about --enable-coverage + + The configure options to turn on coverage testing got renamed + at some point, but the docs were not updated. Fix that. + + https://bugzilla.gnome.org//show_bug.cgi?id=735915 + + docs/reference/glib/building.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 281fdd372ea65af230074fe95c8dd5d664809f05 +Author: Rūdolfs Mazurs +AuthorDate: Sun Sep 7 12:55:20 2014 +0300 +Commit: Rūdolfs Mazurs +CommitDate: Sun Sep 7 12:55:20 2014 +0300 + + Updated Latvian translation + + po/lv.po | 693 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 334 insertions(+), 359 deletions(-) + +commit 09979125d816ac726641c93cb735f73ece35cbf5 +Author: Fran Diéguez +AuthorDate: Thu Sep 4 21:35:07 2014 +0200 +Commit: Fran Diéguez +CommitDate: Thu Sep 4 21:35:07 2014 +0200 + + Updated Galician translations + + po/gl.po | 261 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 135 insertions(+), 126 deletions(-) + +commit 08efbda7333cf1d349719e699bbcbb63b8ef09e4 +Author: Ryan Lortie +AuthorDate: Thu Sep 4 13:17:27 2014 -0400 +Commit: Ryan Lortie +CommitDate: Thu Sep 4 14:48:05 2014 -0400 + + GDesktopAppInfo: fix default app logic + + We use "tweaks" structures to track how a particular directory impacts + the list of added, removed and default applications. We maintain this + set of tweaks for each directory, in a hash table, keyed by unaliased + mime type name, in order to facilitate fast lookups. + + A typo in the logic for creating and maintaining the uniqueness + of these + structures was causing the default app to be selected incorrectly from + time to time. Fix that. + + gio/gdesktopappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e763d93456881cb45a28a4c5c566d53128633aaa +Author: Patrick Welche +AuthorDate: Mon Sep 1 18:42:43 2014 +0200 +Commit: Dan Winship +CommitDate: Thu Sep 4 08:26:27 2014 -0400 + + GCredentials: credentials messages are not correctly supported + on NetBSD + + https://bugzilla.gnome.org/show_bug.cgi?id=735819 + + gio/gcredentialsprivate.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7dd3397820f5dcbcd523432aadf5897b58f6eeb8 +Author: Andika Triwidada +AuthorDate: Wed Sep 3 13:49:48 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Wed Sep 3 13:49:48 2014 +0000 + + Updated Indonesian translation + + po/id.po | 682 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 348 insertions(+), 334 deletions(-) + +commit 0ba39c1c7a447930009935101e97ada0cc93cb5c +Author: Piotr Drąg +AuthorDate: Wed Sep 3 03:10:27 2014 +0200 +Commit: Piotr Drąg +CommitDate: Wed Sep 3 03:10:27 2014 +0200 + + Updated Polish translation + + po/pl.po | 654 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 334 insertions(+), 320 deletions(-) + +commit d73886675ec391caa46f2b8004286b1342d1e6f3 +Author: Matthias Clasen +AuthorDate: Tue Sep 2 11:36:32 2014 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 2 11:36:32 2014 -0400 + + 2.41.4 + + NEWS | 29 +++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 30 insertions(+), 1 deletion(-) + +commit 5fe65ec2719ef842ccb4389d5ed0744965c21220 +Author: Changwoo Ryu +AuthorDate: Tue Sep 2 13:05:58 2014 +0900 +Commit: Changwoo Ryu +CommitDate: Tue Sep 2 13:05:58 2014 +0900 + + Updated Korean translation + + po/ko.po | 713 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 364 insertions(+), 349 deletions(-) + +commit 62f0d6143a3ae9203638e5650ab2f6656222d7ce +Author: Claude Paroz +AuthorDate: Mon Sep 1 09:30:32 2014 +0200 +Commit: Claude Paroz +CommitDate: Mon Sep 1 09:30:32 2014 +0200 + + Updated French translation + + po/fr.po | 657 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 336 insertions(+), 321 deletions(-) + +commit d4298e5ed12afbc4966d3ec61a34eb5f31431729 +Author: Christian Kirbach +AuthorDate: Sun Aug 31 22:00:45 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Aug 31 22:00:45 2014 +0000 + + Updated German translation + + po/de.po | 2101 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1158 insertions(+), 943 deletions(-) + +commit a78443a1e48409d32eb2b24b52dad03ae2231e10 +Author: Matthias Clasen +AuthorDate: Fri Aug 29 15:12:31 2014 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 29 15:12:31 2014 -0400 + + Don't mark GThread struct as deprecated + + Having a definition of struct _GThread inside a deprecation + ifdef confuses gtk-doc into marking it as deprecated. Avoid this. + + https://bugzilla.gnome.org//show_bug.cgi?id=735297 + + glib/deprecated/gthread.h | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 325ffb376c971ab86b709144f35eab5cea1cf482 +Author: Maria Mavridou +AuthorDate: Thu Aug 28 21:25:31 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Thu Aug 28 21:25:31 2014 +0000 + + Updated Greek translation + + po/el.po | 705 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 361 insertions(+), 344 deletions(-) + +commit 0a37264fd1953845cc386bb4ff207294e691fee8 +Author: Yosef Or Boczko +AuthorDate: Thu Aug 28 18:11:06 2014 +0300 +Commit: Yosef Or Boczko +CommitDate: Thu Aug 28 18:11:06 2014 +0300 + + Updated Hebrew translation + + po/he.po | 477 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 243 insertions(+), 234 deletions(-) + +commit f16d7f887e48ec3e9eacd6cae6aaa694beaeecad +Author: Manoj Kumar Giri +AuthorDate: Wed Aug 27 13:34:53 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Wed Aug 27 13:34:53 2014 +0000 + + Updated Oriya translation + + po/or.po | 2152 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 1211 insertions(+), 941 deletions(-) + +commit 369c8bd566ba76d0c87a92cdb6a1c8abe2599c61 +Author: Patrick Welche +AuthorDate: Tue Aug 26 17:27:23 2014 +0100 +Commit: Alexander Larsson +CommitDate: Wed Aug 27 15:08:38 2014 +0200 + + GUnixMounts: Improve efficiency in polling case + + https://bugzilla.gnome.org/show_bug.cgi?id=583330 + + gio/gunixmounts.c | 42 +++++++++++++++--------------------------- + 1 file changed, 15 insertions(+), 27 deletions(-) + +commit 35eaf037bdfca985abf5d349e7355f1d2ed9c77b +Author: Thomas Haller +AuthorDate: Fri Aug 1 16:59:36 2014 +0200 +Commit: Thomas Haller +CommitDate: Fri Aug 22 20:58:11 2014 +0200 + + gmacros.h: add G_GNUC_*_IGNORE_DEPRECATIONS macros for clang + + https://bugzilla.gnome.org/show_bug.cgi?id=734126 + + Signed-off-by: Thomas Haller + + glib/gmacros.h | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit cb320cb5feb78a5a06651d3223914d9099a6f212 +Author: Philip Withnall +AuthorDate: Thu Aug 21 19:00:13 2014 +0100 +Commit: Philip Withnall +CommitDate: Fri Aug 22 19:11:26 2014 +0100 + + gsocketclient: Handle cancellation between CONNECTING and CONNECTED + + If a g_socket_client_connect_async() operation is cancelled between + the + CONNECTING and CONNECTED events (i.e. while in the + g_socket_connection_connect_async() call), the code in + g_socket_client_connected_callback() would previously unconditionally + loop round and try the next socket address from the address enumerator + (by calling enumerator_next_async()). This would correctly handle the + cancellation and return from the overall task — but not before + emitting + a spurious RESOLVING event. + + Avoid emitting the spurious RESOLVING event by explicitly handling + cancellation at the beginning of g_socket_client_connected_callback(). + + https://bugzilla.gnome.org/show_bug.cgi?id=735179 + + gio/gsocketclient.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 607d5a785891729889f1606e8d38edcc7332dfa1 +Author: Marek Černocký +AuthorDate: Fri Aug 22 08:08:51 2014 +0200 +Commit: Marek Černocký +CommitDate: Fri Aug 22 08:08:51 2014 +0200 + + Updated Czech translation + + po/cs.po | 413 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 211 insertions(+), 202 deletions(-) + +commit c74af7369fb32791973e94bcd3c5f45ddd3f5d0b +Author: Chao-Hsiung Liao +AuthorDate: Thu Aug 21 17:06:03 2014 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Thu Aug 21 17:06:03 2014 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 890 + ++++++++++++++++++++++------------------------------------- + po/zh_TW.po | 891 + ++++++++++++++++++++++-------------------------------------- + 2 files changed, 663 insertions(+), 1118 deletions(-) + +commit bf9c8625048d2adc5cbc5893fa27e7e9a3a9ba3e +Author: Jonas Danielsson +AuthorDate: Wed Aug 13 07:06:36 2014 -0400 +Commit: Jonas Danielsson +CommitDate: Wed Aug 20 16:02:59 2014 +0200 + + GApplication: Add g_application_add_main_option + + This function adds a single main option entry to be handeled by + GApplication. The option entry has it arg_data field set to NULL + and will be added to the applications packed_options. + + The rationale for this is that bindings will be able to add + command line options even when they can't use the un-boxed struct + GOptionEntry. + + https://bugzilla.gnome.org/show_bug.cgi?id=727455 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gapplication.c | 67 + +++++++++++++++++++++++++++++++++++-- + gio/gapplication.h | 9 +++++ + 3 files changed, 75 insertions(+), 2 deletions(-) + +commit 4f775b7b7ff38581b110ce1664451381ca3d88b6 +Author: Patrick Welche +AuthorDate: Mon Aug 18 21:48:28 2014 +0100 +Commit: Alexander Larsson +CommitDate: Tue Aug 19 10:48:12 2014 +0200 + + GUnixMounts: Fall back to polling on systems without mtab + + This is necessary for many of the BSD family at least. + + https://bugzilla.gnome.org/show_bug.cgi?id=583330 + + gio/gunixmounts.c | 103 + ++++++++++++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 89 insertions(+), 14 deletions(-) + +commit d964c7d6863758fca1e2e5ed18553d0cd76ea3bc +Author: ngoswami +AuthorDate: Mon Aug 18 15:44:42 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Mon Aug 18 15:44:42 2014 +0000 + + Updated Assamese translation + + po/as.po | 1845 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 937 insertions(+), 908 deletions(-) + +commit e0e52b60ea4c65d1f3660ff6b8c547c82665036b +Author: Rico Tzschichholz +AuthorDate: Mon Aug 18 14:08:41 2014 +0200 +Commit: Rico Tzschichholz +CommitDate: Mon Aug 18 14:08:41 2014 +0200 + + docs: Fix broken gtk-doc formatting + + gio/fen/fen-kernel.c | 6 ++--- + gio/gdbusprivate.c | 4 ++-- + gio/gfileattribute.c | 44 + ++++++++++++++++++------------------ + gio/gresource.c | 2 +- + gio/gunixmounts.c | 6 ++--- + gio/gwin32mount.c | 2 +- + gio/gwin32volumemonitor.c | 2 +- + gio/kqueue/kqueue-thread.c | 12 +++++----- + gio/tests/gdbus-threading.c | 2 +- + gio/tests/test-io-stream.c | 2 +- + gio/tests/test-pipe-unix.c | 4 ++-- + gio/win32/gwinhttpfile.c | 2 +- + gio/win32/gwinhttpfileinputstream.c | 2 +- + gio/win32/gwinhttpfileoutputstream.c | 2 +- + gio/win32/gwinhttpvfs.c | 2 +- + 15 files changed, 47 insertions(+), 47 deletions(-) + +commit 4c8480e6fa9e7e0971bc800fee8a5f0aba67dd9a +Author: Rico Tzschichholz +AuthorDate: Sun Aug 17 22:54:22 2014 +0200 +Commit: Rico Tzschichholz +CommitDate: Sun Aug 17 22:54:22 2014 +0200 + + docs: Add index for 2.42 api + + docs/reference/glib/glib-docs.xml | 4 ++++ + docs/reference/gobject/gobject-docs.xml | 4 ++++ + 2 files changed, 8 insertions(+) + +commit 96af008bdfe53be2ea4ef719b8c8f2121c76a504 +Author: Carles Ferrando +AuthorDate: Sun Aug 17 13:19:46 2014 +0200 +Commit: Gil Forcada +CommitDate: Sun Aug 17 13:19:46 2014 +0200 + + [l10n] Updated Catalan (Valencian) translation + + po/ca@valencia.po | 2479 + ++++++++++++++++++++++++++--------------------------- + 1 file changed, 1215 insertions(+), 1264 deletions(-) + +commit 7585cc49c7d8e016da99d9686af1ebdbe061b989 +Author: Gil Forcada +AuthorDate: Sun Aug 17 13:19:42 2014 +0200 +Commit: Gil Forcada +CommitDate: Sun Aug 17 13:19:42 2014 +0200 + + [l10n] Updated Catalan translation + + po/ca.po | 650 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 331 insertions(+), 319 deletions(-) + +commit e03fc7a522fd623bfe521ceb44ff51ca85c598b3 +Author: Matthias Clasen +AuthorDate: Sat Aug 16 08:59:40 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 16 09:02:12 2014 -0400 + + Updates for 2.41.3 + + NEWS | 33 +++++++++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +commit 01fec1f0d58c344eacae265440938eb7759b21db +Author: Christian Kirbach +AuthorDate: Fri Aug 15 17:56:35 2014 +0200 +Commit: Christian Kirbach +CommitDate: Fri Aug 15 17:58:33 2014 +0200 + + Updated German translation + + po/de.po | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 52b5a06dea63c9489e76862f16895b08118aa63f +Author: Chun-wei Fan +AuthorDate: Wed Aug 13 09:55:11 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Aug 13 09:55:11 2014 +0800 + + Visual C++ Builds: Update README.txt's + + Update notes about usage of PCRE and for people attempting to + build GLib + on a Chinese, Japanese or Korean locale. + + build/win32/vs10/README.txt | 31 +++++++++++++++++++------------ + build/win32/vs9/README.txt | 31 +++++++++++++++++++------------ + 2 files changed, 38 insertions(+), 24 deletions(-) + +commit b88fdf0b0f7e6acf109745322e27fe7869e5267e +Author: Dan Winship +AuthorDate: Tue Aug 12 07:50:20 2014 -0400 +Commit: Dan Winship +CommitDate: Tue Aug 12 07:50:20 2014 -0400 + + docs: hyphenate "High-level" and "Low-level" + + docs/reference/gio/gio-docs.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3d89041220a2a783b5706763b35778f9154c0883 +Author: Chun-wei Fan +AuthorDate: Fri Aug 8 17:39:22 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Aug 8 17:39:48 2014 +0800 + + MSVC Builds: Generate glib-mkenums If Possible + + As glib-mkenums would likely be used in the building of the other + components of the stack, such as Cogl, Clutter and + gsettings-desktop-schemas, generate that using a Python script + (if Python + can be found) and "install" it. + + build/win32/Makefile.am | 3 +- + build/win32/process_in_win32.py | 77 + ++++++++++++++++++++++++++++++ + build/win32/setup.py | 35 +------------- + build/win32/vs10/glib-gen-srcs.props | 4 ++ + build/win32/vs10/glib-install.props | 2 + + build/win32/vs10/glib-version-paths.props | 4 ++ + build/win32/vs10/gobject.vcxproj.filtersin | 5 +- + build/win32/vs10/gobject.vcxprojin | 26 ++++++++-- + build/win32/vs9/glib-gen-srcs.vsprops | 20 ++++---- + build/win32/vs9/glib-install.vsprops | 1 + + build/win32/vs9/glib-version-paths.vsprops | 4 ++ + build/win32/vs9/gobject.vcprojin | 42 ++++++++++++++-- + 12 files changed, 167 insertions(+), 56 deletions(-) + +commit 3e2735f4680b9f46548e7d039b0241cd24aee162 +Author: Edward Hervey +AuthorDate: Mon Jun 23 11:39:04 2014 +0200 +Commit: Edward Hervey +CommitDate: Fri Aug 8 11:13:38 2014 +0200 + + gtype: Fast-path for g_type_is_a + + Do I really need to explain why ? + + https://bugzilla.gnome.org/show_bug.cgi?id=732085 + + gobject/gtype.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 4b5bdf6cebc4c1b7c6db7e23c678cc2f5003e757 +Author: Andre Moreira Magalhaes (andrunko) + +AuthorDate: Tue Jul 29 21:04:48 2014 -0300 +Commit: Edward Hervey +CommitDate: Fri Aug 8 11:13:01 2014 +0200 + + Do not crash when checking whether an instance type is of a given + fundamental. + + Not all instances have a TypeNode associated (e.g. GstEvent), so + lets check if node is available + before trying to use it. + + This crash can be easily reproduced by creating an event with + gst_event_new_eos and using + G_IS_OBJECT on the event instance. + + https://bugzilla.gnome.org/show_bug.cgi?id=733982 + + gobject/gtype.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 5053054c629c3ead90ec3c6fa1fc0fa642476d46 +Author: Matej Urbančič +AuthorDate: Wed Aug 6 14:15:40 2014 +0200 +Commit: Matej Urbančič +CommitDate: Wed Aug 6 14:15:40 2014 +0200 + + Updated Slovenian translation + + po/sl.po | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit 3c6efd4d5077862adc918c651ab7c49dc133d643 +Author: Руслан Ижбулатов +AuthorDate: Mon Apr 21 15:00:18 2014 +0000 +Commit: Руслан Ижбулатов +CommitDate: Tue Aug 5 21:49:54 2014 +0000 + + Make sure compiled resources only have / as dirsep + + https://bugzilla.gnome.org/show_bug.cgi?id=725511 + + gio/glib-compile-resources.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b637714ded46a05a98fb92b7b96e69fe9b215307 +Author: Martin Srebotnjak +AuthorDate: Tue Aug 5 21:03:32 2014 +0200 +Commit: Matej Urbančič +CommitDate: Tue Aug 5 21:03:32 2014 +0200 + + Updated Slovenian translation + + po/sl.po | 70 + ++++++++++++++++++++++++---------------------------------------- + 1 file changed, 26 insertions(+), 44 deletions(-) + +commit 10504edfaae764c8d32213d40db0438a8d392207 +Author: Inaki Larranaga Murgoitio +AuthorDate: Tue Aug 5 14:02:42 2014 +0200 +Commit: dooteo +CommitDate: Tue Aug 5 14:02:42 2014 +0200 + + Updated Basque language + + po/eu.po | 599 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 307 insertions(+), 292 deletions(-) + +commit 14f2376c8a06f0936d734ec6a7e0e836072acf65 +Author: Руслан Ижбулатов +AuthorDate: Wed Jul 30 07:15:39 2014 +0000 +Commit: Руслан Ижбулатов +CommitDate: Tue Aug 5 06:44:01 2014 +0000 + + Change W32 console detection to look at the window, not stdout + + Check for console window being attached to the process, not for stdout + being redirected into a console window. + + https://bugzilla.gnome.org/show_bug.cgi?id=733960 + + glib/gspawn-win32.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4f734873006729d18551c215d9dcf22392dbeaf3 +Author: Руслан Ижбулатов +AuthorDate: Mon Apr 21 15:44:47 2014 +0000 +Commit: Руслан Ижбулатов +CommitDate: Sat Aug 2 12:41:14 2014 +0000 + + Fix tests to compile again - add missing headers to W32, call correct + process-id-getting function + + https://bugzilla.gnome.org/show_bug.cgi?id=725513 + + gio/tests/filter-cat.c | 1 + + gio/tests/gsubprocess-testprog.c | 2 ++ + gio/tests/win32-streams.c | 6 +++--- + glib/tests/fileutils.c | 2 +- + 4 files changed, 7 insertions(+), 4 deletions(-) + +commit 7e0cb48dee9a8ecd87d403b7941ad3209eee658c +Author: Руслан Ижбулатов +AuthorDate: Sat Aug 2 12:36:37 2014 +0000 +Commit: Руслан Ижбулатов +CommitDate: Sat Aug 2 12:38:39 2014 +0000 + + Silence a controversial warning in win_iconv + + https://bugzilla.gnome.org/show_bug.cgi?id=711547 + + glib/win_iconv.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 42ddcc6ff22c66f1ded9d7a3879df39988531878 +Author: Руслан Ижбулатов +AuthorDate: Sat Aug 2 12:35:43 2014 +0000 +Commit: Руслан Ижбулатов +CommitDate: Sat Aug 2 12:38:38 2014 +0000 + + Silence some uncontroversial warnings + + https://bugzilla.gnome.org/show_bug.cgi?id=711547 + + gio/gresolver.c | 2 ++ + glib/gmain.c | 1 + + glib/gutils.c | 3 ++- + 3 files changed, 5 insertions(+), 1 deletion(-) + +commit 40650e33239994237917322d4cfecc34e4cc4394 +Author: Руслан Ижбулатов +AuthorDate: Sat Aug 2 12:22:16 2014 +0000 +Commit: Руслан Ижбулатов +CommitDate: Sat Aug 2 12:31:09 2014 +0000 + + Fix printf-tests on W32 by ifdefing the expected output + + https://bugzilla.gnome.org/show_bug.cgi?id=725515 + + glib/tests/test-printf.c | 19 +++++++++++++++---- + 1 file changed, 15 insertions(+), 4 deletions(-) + +commit 6680ff1ee93127b247f8ca32958620ec7db6af48 +Author: Руслан Ижбулатов +AuthorDate: Mon Apr 21 15:55:59 2014 +0000 +Commit: Руслан Ижбулатов +CommitDate: Sat Aug 2 10:54:01 2014 +0000 + + Save errno and pass it along to make sure gettext does not change it + + https://bugzilla.gnome.org/show_bug.cgi?id=725514 + + glib/gfileutils.c | 58 + +++++++++++++++++++++++++++++++++++++++---------------- + 1 file changed, 41 insertions(+), 17 deletions(-) + +commit 786590fe93682c9b28136ccf65d870b23dd807f7 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jul 29 18:59:21 2014 +0200 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Jul 31 13:04:56 2014 +0200 + + win32: improve the package installation dir lookup + + As an example, the core of gedit is in a private library + placed in %INSTALLDIR%/lib/gedit/libgedit.dll + + Before this patch we would get %INSTALLDIR%/lib/gedit as the + installation package dir, while what we actually want is to get + %INSTALLDIR% + + https://bugzilla.gnome.org/show_bug.cgi?id=733934 + + glib/gwin32.c | 33 +++++++++++++++++++++++++++------ + 1 file changed, 27 insertions(+), 6 deletions(-) + +commit 905a8e655c4f50f655cbd90455b26a37b977c563 +Author: Руслан Ижбулатов +AuthorDate: Thu Jul 31 10:12:59 2014 +0000 +Commit: Руслан Ижбулатов +CommitDate: Thu Jul 31 10:39:54 2014 +0000 + + Ensure critial sections are released before returning + + https://bugzilla.gnome.org/show_bug.cgi?id=734035 + + gio/gregistrysettingsbackend.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit ad4f7846569980c54c29aac55ace01b20ba9b3d2 +Author: Olav Vitters +AuthorDate: Wed Jul 30 15:41:13 2014 +0200 +Commit: Olav Vitters +CommitDate: Wed Jul 30 15:41:22 2014 +0200 + + doap category core + + glib.doap | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b1dd594a22e3499caafdeccd7fa223a032b9e177 +Author: Alexander Larsson +AuthorDate: Wed Jul 30 12:32:21 2014 +0200 +Commit: Alexander Larsson +CommitDate: Wed Jul 30 15:11:01 2014 +0200 + + Remove atomics from g_clear_object/g_clear_pointer + + Practically no caller of these functions require atomic behaviour, + but the atomics are much slower than normal operations, which makes + it desirable to get rid of them. We have not done this before because + that would be a break of the ABI. + + However, I recently looked into this and it seems that even if the + atomics *are* used for g_clear_* it is not ever safe to use this. The + atomics protects two threads that are racing to free a global/shared + object from freeing the object twice. However, any *user* of the + global + object have no protection from the object being freed while in use, + because there is no paired operation the reads and refs the object + as an atomic unit (nor can such an operation be implemented using + purely atomic ops). + + So, since nothing could safely have used the atomic aspects of these + functions I consider it acceptable to just remove it. + + https://bugzilla.gnome.org/show_bug.cgi?id=733969 + + glib/gmem.c | 16 +++++----------- + glib/gmem.h | 13 ++++++------- + gobject/gobject.c | 3 --- + 3 files changed, 11 insertions(+), 21 deletions(-) + +commit 2266f6b743a5a4e4d560238ebd085bf0e1ad8934 +Author: Alexander Larsson +AuthorDate: Wed Jul 30 12:09:01 2014 +0200 +Commit: Alexander Larsson +CommitDate: Wed Jul 30 12:10:30 2014 +0200 + + tests/gobject/performance: Clean up and add refcount performance test + + tests/gobject/performance.c | 129 + ++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 119 insertions(+), 10 deletions(-) + +commit 03b510fde17b130dd7273cee6a65e2d54ff85fff +Author: David King +AuthorDate: Wed May 7 10:25:40 2014 +0100 +Commit: David King +CommitDate: Mon Jul 28 14:48:23 2014 +0200 + + gfile: Fix memory leak in g_file_move() + + https://bugzilla.gnome.org/show_bug.cgi?id=729703 + + gio/gfile.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit e15ba53cdab91587721a38efa4eeea9acf871860 +Author: Ryan Lortie +AuthorDate: Sun Jul 27 10:08:00 2014 +0200 +Commit: Ryan Lortie +CommitDate: Sun Jul 27 10:08:47 2014 +0200 + + configure.ac: fix typo in last patch + + 20e709d8b92e28d162c78b147afe4040e3a48b85 fixed some issues in + configure.ac but also introduced a typo. Fix that. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d36f4ec593e877b2f077df116f47fb6b0c08a5f8 +Author: Aurimas Černius +AuthorDate: Sun Jul 27 01:03:32 2014 +0300 +Commit: Aurimas Černius +CommitDate: Sun Jul 27 01:03:32 2014 +0300 + + Updated Lithuanian translation + + po/lt.po | 169 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 89 insertions(+), 80 deletions(-) + +commit 20e709d8b92e28d162c78b147afe4040e3a48b85 +Author: Alessandro Di Federico +AuthorDate: Fri Jul 25 04:16:00 2014 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jul 26 10:02:32 2014 +0200 + + configure: Remove unintentional nested functions + + More of the same as 9362a1b2d987125a8aa0723b916d29aaaece329a. + + https://bugzilla.gnome.org/show_bug.cgi?id=733715 + + configure.ac | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 2268628565e4fb098252e782e58709d6b525b48a +Author: Ryan Lortie +AuthorDate: Thu Jul 24 11:36:57 2014 +0200 +Commit: Ryan Lortie +CommitDate: Thu Jul 24 15:51:21 2014 +0200 + + gdbus: Properly fix encoding of double arrays + + It turns out that this bug actually would (sometimes) impact any + sort of + fixed-sized array with an alignment requirement of 8 due to + incorrectly + counting the alignment inserted between the (aligned 4) array + length and + the actual data. + + Fix this properly and remove the exception for doubles. + + https://bugzilla.gnome.org/show_bug.cgi?id=732754 + + gio/gdbusmessage.c | 10 +++------- + 1 file changed, 3 insertions(+), 7 deletions(-) + +commit 7009e317d84f661ec63b85edb436d3a2727be488 +Author: Colin Walters +AuthorDate: Tue Jul 22 14:04:44 2014 -0400 +Commit: Colin Walters +CommitDate: Wed Jul 23 13:31:02 2014 -0400 + + gtlsinteraction: Hoist precondition before allocation + + We're using a precondition in the middle of the function, and if we + hit it, we leak the closure. + + Let's allocate the closure per path; this allows us to allocate it + before path-specific preconditions, and better avoids a pointless + malloc/free pair in the unhandled case. + + https://bugzilla.gnome.org/show_bug.cgi?id=733576 + + gio/gtlsinteraction.c | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +commit 627b49b39039d43a784fa9890f473d1ca8d52417 +Author: Stef Walter +AuthorDate: Tue Jul 22 21:29:27 2014 +0200 +Commit: Stef Walter +CommitDate: Wed Jul 23 15:44:40 2014 +0200 + + gio: Fix regression encoding an array of doubles + + Take the simple slow path in this case. Encoding a double + takes special precautions as you can see in append_value_to_blob() + and friends. + + https://bugzilla.gnome.org/show_bug.cgi?id=732754 + + gio/gdbusmessage.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit b6c1d696a98b7fc4e691e8acc9f88b7bc8d57e9d +Author: Stef Walter +AuthorDate: Tue Jul 22 21:13:50 2014 +0200 +Commit: Stef Walter +CommitDate: Wed Jul 23 15:44:40 2014 +0200 + + gio: Add regression test for double array encoding + + https://bugzilla.gnome.org/show_bug.cgi?id=732754 + + gio/tests/gdbus-serialization.c | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + +commit d0083f7e2dd621c6b78496bdb6ecf5d580c5e110 +Author: Owen W. Taylor +AuthorDate: Wed Jul 23 09:27:31 2014 -0400 +Commit: Owen W. Taylor +CommitDate: Wed Jul 23 09:28:23 2014 -0400 + + Revert "gatomic: statically assert that our assumptions hold" + + This reverts commit 7269d75321b9d2a967a59fb35f243397f577eb41. + + Adding G_STATIC_ASSERT() into a header file caused compilation + problems with at least one app (Anjuta). Reverting to keep + GNOME continuous testing running. + + https://bugzilla.gnome.org/show_bug.cgi?id=730932 + + glib/gatomic.h | 6 ------ + 1 file changed, 6 deletions(-) + +commit d40a2df0886cdd5ba5aabee9e81ab3d3859302d6 +Author: Kjartan Maraas +AuthorDate: Wed Jul 23 14:57:15 2014 +0200 +Commit: Kjartan Maraas +CommitDate: Wed Jul 23 14:57:15 2014 +0200 + + Updated Norwegian bokmål translation. + + po/nb.po | 598 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 305 insertions(+), 293 deletions(-) + +commit 91821974e1e9e71fb5f2c623f68c0c9e2a6a59a9 +Author: Colin Walters +AuthorDate: Tue Jul 22 14:31:25 2014 -0400 +Commit: Colin Walters +CommitDate: Wed Jul 23 07:43:41 2014 -0400 + + gcredentials: Add assertion to pacify static analysis + + This should always be true. + + https://bugzilla.gnome.org/show_bug.cgi?id=733576 + + gio/gcredentials.c | 1 + + 1 file changed, 1 insertion(+) + +commit 8ebd287fe6ae7aee11038679d086a880c13845a2 +Author: Colin Walters +AuthorDate: Tue Jul 22 14:23:47 2014 -0400 +Commit: Colin Walters +CommitDate: Wed Jul 23 07:43:41 2014 -0400 + + gkeyfilesettingsbackend: Add assertion for known-true condition + + We know the group exists since we enumerated it. Should silence a + static analysis warning. + + https://bugzilla.gnome.org/show_bug.cgi?id=733576 + + gio/gkeyfilesettingsbackend.c | 1 + + 1 file changed, 1 insertion(+) + +commit 7ea4bf3f309232d85b7b60f6ac6295e679a22ed8 +Author: Colin Walters +AuthorDate: Tue Jul 22 14:22:23 2014 -0400 +Commit: Colin Walters +CommitDate: Wed Jul 23 07:43:41 2014 -0400 + + glocalfileinfo: Suppress static analysis return value warning + + Just ignore the return value, since we're checking contents != NULL. + + https://bugzilla.gnome.org/show_bug.cgi?id=733576 + + gio/glocalfileinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5fe71c7c5c44b429eebba028cca6ecdc1356b50c +Author: Colin Walters +AuthorDate: Tue Jul 22 14:21:31 2014 -0400 +Commit: Colin Walters +CommitDate: Wed Jul 23 07:43:41 2014 -0400 + + gsettingsschema: Suppress return value check + + We're intentionally ignoring the value here. Pacifies static + analysis. + + https://bugzilla.gnome.org/show_bug.cgi?id=733576 + + gio/gsettingsschema.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit acdcf5cd50ccbf76fb4d74dbef4e768d5980e46e +Author: Colin Walters +AuthorDate: Tue Jul 22 14:14:46 2014 -0400 +Commit: Colin Walters +CommitDate: Wed Jul 23 07:43:41 2014 -0400 + + gapplicationimpl-dbus: Fix leak of fd list object + + Spotted by static analysis. + + https://bugzilla.gnome.org/show_bug.cgi?id=733576 + + gio/gapplicationimpl-dbus.c | 1 + + 1 file changed, 1 insertion(+) + +commit 3fb44c4c713847059aac22c4c71074e14d11aceb +Author: Colin Walters +AuthorDate: Tue Jul 22 14:11:25 2014 -0400 +Commit: Colin Walters +CommitDate: Wed Jul 23 07:43:41 2014 -0400 + + gsettingsschema: Close directory + + Spotted by static analysis. + + https://bugzilla.gnome.org/show_bug.cgi?id=733576 + + gio/gsettingsschema.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit e55a953642a9e402f4363f9fa347b6061dd78990 +Author: Colin Walters +AuthorDate: Tue Jul 22 14:08:00 2014 -0400 +Commit: Colin Walters +CommitDate: Wed Jul 23 07:43:41 2014 -0400 + + gthreadedresolver: Unref unexpected address + + I don't believe any real app would hit this, but we do leak + if it occurs. + + Spotted by static analysis. + + https://bugzilla.gnome.org/show_bug.cgi?id=733576 + + gio/gthreadedresolver.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 49a5d0f6f2aed99cd78f25655f137f4448e47d92 +Author: Colin Walters +AuthorDate: Tue Jul 22 14:00:23 2014 -0400 +Commit: Colin Walters +CommitDate: Wed Jul 23 07:43:41 2014 -0400 + + gfileutils: Add missing g_free() in error path + + Discovered by static analysis. + + https://bugzilla.gnome.org/show_bug.cgi?id=733576 + + glib/gfileutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit feec280b7c5c7b9198e34b10b4f5764c9c3c4505 +Author: Colin Walters +AuthorDate: Tue Jul 22 13:58:53 2014 -0400 +Commit: Colin Walters +CommitDate: Wed Jul 23 07:43:41 2014 -0400 + + gfile: Initialize variable to pacify static analysis + + Not a real bug, but will quiet the analysis. + + https://bugzilla.gnome.org/show_bug.cgi?id=733576 + + gio/gfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9060a85193a0e15f67568ea6cac3a082fbcab30f +Author: Simon McVittie +AuthorDate: Sun Jul 20 12:41:57 2014 +0100 +Commit: Simon McVittie +CommitDate: Wed Jul 23 09:18:43 2014 +0100 + + glib-init: statically assert that we have 8-bit bytes + + configure.ac assumes this. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=730932 + + configure.ac | 1 + + glib/glib-init.c | 3 +++ + 2 files changed, 4 insertions(+) + +commit 7269d75321b9d2a967a59fb35f243397f577eb41 +Author: Simon McVittie +AuthorDate: Sun Jul 20 12:39:24 2014 +0100 +Commit: Simon McVittie +CommitDate: Wed Jul 23 09:17:48 2014 +0100 + + gatomic: statically assert that our assumptions hold + + This code assumes that int is exactly 4 bytes, and that pointers + are either 4 or 8 bytes, on platforms with __ATOMIC_SEQ_CST. + In practice this is going to be true. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=730932 + + glib/gatomic.h | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 19e0cdd7a08af4e9ea8b15f6f82199f93bb4355d +Author: Daniel Mustieles +AuthorDate: Tue Jul 22 12:29:34 2014 +0200 +Commit: Daniel Mustieles +CommitDate: Tue Jul 22 12:29:34 2014 +0200 + + Updated Spanish translation + + po/es.po | 496 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 252 insertions(+), 244 deletions(-) + +commit 015db2d2af3d5a3f31909c7ffb5307e5141d8fbd +Author: Dan Winship +AuthorDate: Wed May 7 09:17:05 2014 -0400 +Commit: Dan Winship +CommitDate: Mon Jul 21 11:31:27 2014 -0400 + + gio/tests/socket: add some missing g_assert_no_error()s + + gio/tests/socket.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 634b69219979c084837c59874e5b2aec01a1d3e4 +Author: Dan Winship +AuthorDate: Thu May 1 09:59:05 2014 -0400 +Commit: Dan Winship +CommitDate: Mon Jul 21 11:31:27 2014 -0400 + + gsocket: Set SO_NOSIGPIPE on sockets on Darwin + + This is a best-effort approach to preventing SIGPIPE emissions + on Darwin + and iOS, where they continue to be intercepted by the Xcode debugger + even if SIG_IGN prevents them crashing the program. + + This is similar to the existing code which sets MSG_NOSIGNAL on all + send() calls. MSG_NOSIGNAL doesn't exist on Darwin though. + + Based on a patch from Philip Withnall. + + https://bugzilla.gnome.org/show_bug.cgi?id=728730 + + gio/gsocket.c | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +commit 7b34e07ac4576b75bcf932fd8dfeca23242ea1b1 +Author: Dan Winship +AuthorDate: Thu May 1 09:58:07 2014 -0400 +Commit: Dan Winship +CommitDate: Mon Jul 21 11:31:27 2014 -0400 + + gsocket: move set_fd_nonblocking() into g_socket_constructed() + + gio/gsocket.c | 58 + +++++++++++++++++++++++++++------------------------------- + 1 file changed, 27 insertions(+), 31 deletions(-) + +commit ccf5959bf490e1124f66e971c9491c07ff86812f +Author: Enrico Nicoletto +AuthorDate: Fri Jul 18 18:49:04 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Jul 18 18:49:04 2014 +0000 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 460 + +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 235 insertions(+), 225 deletions(-) + +commit ebe47823db6409eda6e391826666b3eb8dedb692 +Author: Philip Withnall +AuthorDate: Fri Jul 18 08:49:19 2014 +0100 +Commit: Philip Withnall +CommitDate: Fri Jul 18 08:50:18 2014 +0100 + + ginetaddress: Add a precondition to g_inet_address_new_from_string() + + Ensure that the input string is non-NULL, as inet_pton() does not like + NULL strings. + + https://bugzilla.gnome.org/show_bug.cgi?id=733345 + + gio/ginetaddress.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 641864bcba5cc85c0a5ab3a62b3781ca90271acb +Author: Ignacio Casal Quinteiro +AuthorDate: Thu Jul 17 13:27:54 2014 +0200 +Commit: Ignacio Casal Quinteiro +CommitDate: Thu Jul 17 13:30:50 2014 +0200 + + socketservice: minor cleanup + + gio/gsocketservice.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +commit 79e63d4e5dfbf42ecb001e8b698c32d0bc73117b +Author: Matthias Clasen +AuthorDate: Mon Jul 14 10:48:09 2014 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 14 10:48:09 2014 -0400 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 76ec61dee30b81d5b91df86b3f23060364efded9 +Author: Matthias Clasen +AuthorDate: Mon Jul 14 09:11:46 2014 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 14 10:23:25 2014 -0400 + + 2.41.2 + + NEWS | 44 ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 44 insertions(+) + +commit c7c4c3bf5e3fdb5f95f92e881743ef8e7ad779f1 +Author: Marek Kasik +AuthorDate: Mon Jul 14 15:37:06 2014 +0200 +Commit: Marek Kasik +CommitDate: Mon Jul 14 16:02:35 2014 +0200 + + Remove redundant checks before free + + Remove checks for NULL before g_free(). + + https://bugzilla.gnome.org/show_bug.cgi?id=733156 + + gio/fen/fen-kernel.c | 4 +--- + gio/gdbusintrospection.c | 3 +-- + gio/gnetworkaddress.c | 3 +-- + gio/gnetworkservice.c | 3 +-- + 4 files changed, 4 insertions(+), 9 deletions(-) + +commit 24d614357a1ab42af8a55db189a8ac05f67c013d +Author: Ignacio Casal Quinteiro +AuthorDate: Mon Jul 14 08:54:45 2014 +0200 +Commit: Matthias Clasen +CommitDate: Mon Jul 14 08:43:17 2014 -0400 + + gspawn-win32: do not rely on __argc and __argv global vars. + + Since we are getting passed Unicode values these global vars + might not have the correct value. Instead always get the wide + arguments + and convert them to utf8 to use them. + + https://bugzilla.gnome.org/show_bug.cgi?id=733146 + + glib/gspawn-win32-helper.c | 67 + +++++++++++++++++++++++----------------------- + 1 file changed, 34 insertions(+), 33 deletions(-) + +commit d67813045dfd6336a6e109c4818990c3fb117ade +Author: Gergely POLONKAI +AuthorDate: Sat Jul 12 07:36:00 2014 +0000 +Commit: Matthias Clasen +CommitDate: Mon Jul 14 08:39:34 2014 -0400 + + Fix typos in gbytes_hash and g_time_zone_find_interval docs + + https://bugzilla.gnome.org/show_bug.cgi?id=733084 + + glib/gbytes.c | 2 +- + glib/gtimezone.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit f62c8fce8e7f9ae102de308941423006e419cdf3 +Author: SyncEvolution Nightly Testing + +AuthorDate: Thu Jul 10 09:52:26 2014 +0000 +Commit: Matthias Clasen +CommitDate: Mon Jul 14 08:35:11 2014 -0400 + + gio: avoid g_object_ref(NULL) in g_dbus_object_manager_client_finalize + + When establishing a D-Bus connection failed, + g_dbus_object_manager_client_finalize() + calls g_object_ref(manager->priv->connection) when that pointer + is NULL, + which is considered and logged as error by glib. + + https://bugzilla.gnome.org/show_bug.cgi?id=732984 + + gio/gdbusobjectmanagerclient.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit b458d3da325c94308f442cebe897c6648938c119 +Author: Matthias Clasen +AuthorDate: Mon Jul 14 08:27:30 2014 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 14 08:27:30 2014 -0400 + + Fix a failing testcase + + This fix is a bit of a blind guess, I couldn't really discern + from recent commits whether this is an expected behavior change + or not. + + gio/tests/desktop-app-info.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +commit 60fe7b46d2a500bd6a5cd47105dc3172acf9c7a9 +Author: Javier Jardón +AuthorDate: Thu Jul 10 17:09:07 2014 +0100 +Commit: Javier Jardón +CommitDate: Thu Jul 10 17:09:30 2014 +0100 + + docs: Use "Returns:" instead "Return:" + + glib/gdataset.c | 2 +- + gobject/gobject.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 02c6e908d7a1ea85ba4fdc39e2c4f8d45d8be739 +Author: Michael Catanzaro +AuthorDate: Wed Jul 9 10:48:47 2014 -0500 +Commit: Michael Catanzaro +CommitDate: Wed Jul 9 10:49:39 2014 -0500 + + Fix typo + + gio/gdbusconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5d0e295fb858cce1cba3f45019a844521b735777 +Author: Ryan Lortie +AuthorDate: Wed Jul 9 11:19:58 2014 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jul 9 11:19:58 2014 -0400 + + GDBusMessage: add some G_UNLIKELY on error paths + + More for documentation than anything else... + + gio/gdbusmessage.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 636cd00c213995ffecd302369515bc3b36257589 +Author: Tim-Philipp Müller +AuthorDate: Sat Jul 5 15:03:22 2014 +0100 +Commit: Ryan Lortie +CommitDate: Wed Jul 9 10:59:06 2014 -0400 + + GCond (linux): fix g_cond_wait_until() return value on timeout + + It should return FALSE on timeout (and only on timeout), and + TRUE otherwise. + + https://bugzilla.gnome.org/show_bug.cgi?id=731986 + + glib/gthread-posix.c | 5 +++-- + glib/tests/cond.c | 6 ++++++ + 2 files changed, 9 insertions(+), 2 deletions(-) + +commit ecf1359191b2f796a7d63288652dd1a93525417d +Author: Ryan Lortie +AuthorDate: Sun Jun 29 17:47:10 2014 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jul 9 10:59:06 2014 -0400 + + GMutex (linux): detect and report some errors + + Detect the following two errors: + + - attempting to unlock a mutex that is not locked + + - attempting to clear a mutex that was not initialised or was + initialised but is still locked + + Both of these are fatal errors. We avoid using g_error() here because + doing so would involve calls back into the GMutex code, and if things + are going off the rails then we want to avoid that. + + https://bugzilla.gnome.org/show_bug.cgi?id=731986 + + glib/gthread-posix.c | 24 ++++++++++++++++++++---- + 1 file changed, 20 insertions(+), 4 deletions(-) + +commit 49b59e5ac4428a6a99a85d699c3662f96efc4e9d +Author: Ryan Lortie +AuthorDate: Tue Jun 10 08:28:32 2014 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jul 9 10:59:06 2014 -0400 + + GLib: implement GMutex natively on Linux + + If we have futex(2) then we can implement GMutex natively and gain a + substantial performance increase (vs. using pthreads). + + This also avoids the need to allocate an extra structure in memory + when + using GMutex or GCond: we can use the structure directly. + + The main reason for the increase in performance is that our + implementation can be made more simple: we don't need to support the + array of options on pthread_mutex_t (which includes the possibility, + for + example, of being recursive). + + The result is a ~30% improvement in uncontended cases and a much + larger + increase (3 to 4 times) in contended cases for a simple testcase. + + https://bugzilla.gnome.org/show_bug.cgi?id=731986 + + glib/gthread-posix.c | 208 + ++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 207 insertions(+), 1 deletion(-) + +commit be0b921115c319186c678a054958f405b8c90a2b +Author: Dan Winship +AuthorDate: Thu Apr 10 11:37:23 2014 -0400 +Commit: Dan Winship +CommitDate: Wed Jul 9 10:48:34 2014 -0400 + + Fix up failure-to-see-expected-message logging + + When GLib had been told to expect message X, but then actually saw + message Y, it would log the "did not see expected message" error with + message Y's log level and domain, which makes no sense. Change it to + log with domain "GLib" and G_LOG_LEVEL_CRITICAL instead. + + Also, include the expected domain in the error message, so that if + that's the reason why the expectation didn't match, you can tell that + from the error message. + + Update glib/tests/testing.c for these changes; for all other test + programs in GLib and elsewhere, this change should not break any + existing tests, it should only improve the output on failure. + + https://bugzilla.gnome.org/show_bug.cgi?id=727974 + + glib/gmessages.c | 10 ++++++---- + glib/tests/testing.c | 12 +++++++++--- + 2 files changed, 15 insertions(+), 7 deletions(-) + +commit 5463c8cedbdf9ea2829f83c53876f21b34f57250 +Author: Ryan Lortie +AuthorDate: Fri Jul 4 15:00:49 2014 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jul 9 10:43:26 2014 -0400 + + GDBusMessage: fast-path decoding of fixed arrays + + Instead of creating a separate GVariant for each of the 'y's in an + 'ay', + use g_variant_new_fixed_array(). + + https://bugzilla.gnome.org/show_bug.cgi?id=732754 + + gio/gdbusmessage.c | 145 + +++++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 114 insertions(+), 31 deletions(-) + +commit 958da1e9dc82fbb91862501226b8928faf2f9558 +Author: Ryan Lortie +AuthorDate: Fri Jul 4 18:42:14 2014 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jul 9 10:43:26 2014 -0400 + + GDBusMessage: fast-path encoding of fixed arrays + + Instead of handling each item separately, handle the array as a whole. + + https://bugzilla.gnome.org/show_bug.cgi?id=732754 + + gio/gdbusmessage.c | 21 ++++++++++++++++++++- + 1 file changed, 20 insertions(+), 1 deletion(-) + +commit f8d42cefbddf4930e40d6866e7002e556186763e +Author: Dan Winship +AuthorDate: Wed Jul 9 10:36:57 2014 -0400 +Commit: Dan Winship +CommitDate: Wed Jul 9 10:36:57 2014 -0400 + + gtask: fix leak in example code + + gio/gtask.c | 1 + + 1 file changed, 1 insertion(+) + +commit e608ec7b2e47d29fa189fca6e97f484f41c115a4 +Author: Tristan Van Berkom +AuthorDate: Tue Jul 8 13:13:51 2014 -0300 +Commit: Tristan Van Berkom +CommitDate: Tue Jul 8 13:13:51 2014 -0300 + + Added missing "Since:" annotations for g_input_stream_read_bytes() + APIs. + + gio/ginputstream.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit d108ada4b98cb50fb1517f55c4f09acdaf3de471 +Author: Ryan Lortie +AuthorDate: Fri Jul 4 14:59:17 2014 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 7 15:02:54 2014 -0400 + + GDBusMessage: simplify byteswapping + + Remove some duplication by simplifying our byteswap checks. + + https://bugzilla.gnome.org/show_bug.cgi?id=732754 + + gio/gdbusmessage.c | 108 + +++++++++++++++++------------------------------------ + 1 file changed, 35 insertions(+), 73 deletions(-) + +commit 58250555224ffcd22be24b1da9025564090cdba0 +Author: Ryan Lortie +AuthorDate: Fri Jul 4 19:18:40 2014 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 7 13:40:03 2014 -0400 + + gapplication tests: test resource base path + + Run some cases to make sure resource base path is behaving as + we expect + it to. + + https://bugzilla.gnome.org/show_bug.cgi?id=722092 + + gio/tests/gapplication.c | 34 ++++++++++++++++++++++++++++++++++ + 1 file changed, 34 insertions(+) + +commit cea9de93c8838099661f5b54462f9c4b6410bfc9 +Author: Ryan Lortie +AuthorDate: Fri Jul 4 09:53:51 2014 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 7 13:40:03 2014 -0400 + + GApplication: add a "resource base path" + + We don't use this for anything inside of GApplication yet, but Gtk is + about to start using it to find various bits of the application + (such as + its menus, icons, etc.). + + By default, we form the base path from the application ID to end + up with + the familiar /org/example/app style. + + https://bugzilla.gnome.org/show_bug.cgi?id=722092 + + docs/reference/gio/gio-sections.txt | 3 ++ + gio/gapplication.c | 104 + ++++++++++++++++++++++++++++++++++++ + gio/gapplication.h | 6 +++ + 3 files changed, 113 insertions(+) + +commit 60226a0386158e6969ec406e8af5efde4085d15b +Author: Philip Withnall +AuthorDate: Fri Jul 4 14:04:17 2014 +0100 +Commit: Philip Withnall +CommitDate: Sun Jul 6 12:56:41 2014 +0100 + + ginetsocketaddress: Explicitly initialise flags for getaddrinfo() + + This is not a functional change, as the hints field is static + and hence + automatically initialised to zero — which happens to be what + AF_UNSPEC + and the unspecified protocol are defined as. However, it’s best + to be + explicit about this, in case AF_UNSPEC is _not_ defined as zero. + + https://bugzilla.gnome.org/show_bug.cgi?id=732739 + + gio/ginetsocketaddress.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 29c48f623fdcf516d6123ee9544087e1f512ed53 +Author: Michael Catanzaro +AuthorDate: Sat Jul 5 20:27:58 2014 -0500 +Commit: Michael Catanzaro +CommitDate: Sat Jul 5 20:27:58 2014 -0500 + + Fix typo + + gobject/gclosure.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 46ca06228486ce725bf202d3abb0a55a22250ba2 +Author: Aurimas Černius +AuthorDate: Sat Jul 5 13:41:58 2014 +0300 +Commit: Aurimas Černius +CommitDate: Sat Jul 5 13:41:58 2014 +0300 + + Updated Lithuanian translation + + po/lt.po | 583 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 293 insertions(+), 290 deletions(-) + +commit 97f34bacce1fa59c6b3ee05bdbc2ab96a8ad9a4e +Author: Sébastien Wilmet +AuthorDate: Thu Jul 3 19:53:51 2014 +0200 +Commit: Sébastien Wilmet +CommitDate: Fri Jul 4 17:03:50 2014 +0200 + + doc: small improvement and fixes + + - Add an example to g_strsplit(), like it is done for + g_strsplit_set(). + + - GTK-Doc generates a list if a "1." is at the beginning of a line. + + https://bugzilla.gnome.org/show_bug.cgi?id=732704 + + glib/giochannel.c | 4 ++-- + glib/gstrfuncs.c | 6 +++++- + 2 files changed, 7 insertions(+), 3 deletions(-) + +commit 48c7d041e2d046462156056d297f609465fce6ab +Author: Sébastien Wilmet +AuthorDate: Thu Jul 3 18:02:31 2014 +0200 +Commit: Sébastien Wilmet +CommitDate: Fri Jul 4 17:03:50 2014 +0200 + + doc: improve doc of g_input_stream_read() + + I recently needed to nul-terminate the returned buffer, and I wasn't + sure if g_input_stream_read() does that or not. I've checked + glocalfileinputstream.c, which calls read(2) which doesn't + nul-terminate + the buffer. So I assume it's the same behavior for all GInputStream + subclasses. + + https://bugzilla.gnome.org/show_bug.cgi?id=732704 + + gio/ginputstream.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit b0c7221c559693baf0735d6562940e0eec0a798c +Author: Sébastien Wilmet +AuthorDate: Thu Jul 3 15:45:11 2014 +0200 +Commit: Sébastien Wilmet +CommitDate: Thu Jul 3 20:11:46 2014 +0200 + + doc: improve doc of g_subprocess_wait() + + When using this API, I wasn't sure what the cancellable does. I think + it's generally desirable to kill the subprocess if the wait + operation is + cancelled, since in this case the application is no longer + interested by + the subprocess. + + https://bugzilla.gnome.org/show_bug.cgi?id=732704 + + gio/gsubprocess.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit c3842d1969feace4bfb12919be730e75e53877d9 +Author: Michael Catanzaro +AuthorDate: Tue Jul 1 23:52:19 2014 -0500 +Commit: Michael Catanzaro +CommitDate: Tue Jul 1 23:52:19 2014 -0500 + + Fix old wiki links + + README.win32 | 4 ++-- + build/win32/vs10/README.txt | 2 +- + build/win32/vs9/README.txt | 2 +- + docs/reference/gio/gdbus-codegen.xml | 2 +- + docs/reference/gobject/tut_tools.xml | 2 +- + gio/gactiongroupexporter.c | 2 +- + gio/gapplicationimpl-dbus.c | 2 +- + 7 files changed, 8 insertions(+), 8 deletions(-) + +commit 451f732e4f80523a14628375a981566c2d6b0bb8 +Author: Fran Diéguez +AuthorDate: Tue Jul 1 18:01:59 2014 +0200 +Commit: Fran Diéguez +CommitDate: Tue Jul 1 18:01:59 2014 +0200 + + Updated Galician translations + + po/gl.po | 675 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 340 insertions(+), 335 deletions(-) + +commit 98d37f203e1f60f45a761f3be74a5e6864f5d9d6 +Author: Chun-wei Fan +AuthorDate: Tue Jul 1 16:08:21 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jul 1 16:08:21 2014 +0800 + + MSVC 2012/2013 Support: Update Property Sheet Creation + + Be a bit more careful when copying and updating the property sheets, + so that + we don't accidently change fields with '10' in them that are + actually not + indicating the Visual Studio version. + + build/Makefile-newvs.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 46df528adf7ce75be4bbdd3f97349670cb24a018 +Author: Rico Tzschichholz +AuthorDate: Mon Jun 30 14:46:32 2014 +0200 +Commit: Rico Tzschichholz +CommitDate: Mon Jun 30 14:46:32 2014 +0200 + + glib: Fix make dist + + glib/Makefile.am | 2 -- + 1 file changed, 2 deletions(-) + +commit 72de983469ce1db81134ed3b5e2af77b56170bf3 +Author: Chun-wei Fan +AuthorDate: Mon Jun 30 17:31:57 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Jun 30 19:56:05 2014 +0800 + + valgrind.h: Disable Valgrind features on x64 Visual C++ Builds + + ...so that builds of GLib on x64 Visual C++ can be restored, as + the build + fails in line 449 of valgrind.h as it only supports MinGW/GCC for x64 + Windows and simply will not build otherwise. Make the x64 Visual C++ + builds compile again by defining NVALGRIND when GLib is being + built for + Windows on x64 Visual C++. + + https://bugzilla.gnome.org/show_bug.cgi?id=732465 + + glib/valgrind.h | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit b39b19ca20159597ad7faece38de53a2939244c5 +Author: Christian Persch +AuthorDate: Sun Jun 29 20:17:57 2014 +0200 +Commit: Christian Persch +CommitDate: Sun Jun 29 20:18:48 2014 +0200 + + unicode: Update test data files for unicode 7.0.0 + + https://bugzilla.gnome.org/show_bug.cgi?id=731929#c2 + + tests/casefold.txt | 51 +++++++++++++++++- + tests/casemap.txt | 153 + ++++++++++++++++++++++++++++++++++++++++++++++++++--- + 2 files changed, 196 insertions(+), 8 deletions(-) + +commit ffe286e647ce9ba9bb8e1631ba3cf0194038f438 +Author: Sébastien Wilmet +AuthorDate: Fri Jun 27 20:43:39 2014 +0200 +Commit: Sébastien Wilmet +CommitDate: Sun Jun 29 17:57:24 2014 +0200 + + doc: improve doc of g_file_equal() + + A critical message is printed when a parameter of g_file_equal() + is not + a GFile. When we read the documentation before this commit, we + can think + that passing NULL or another type than GFile is allowed, but it is not + the case. + + Another option is to allow NULL parameters. But for consistency with + e.g. g_str_equal(), it's probably better to keep the code as is. + + https://bugzilla.gnome.org/show_bug.cgi?id=732357 + + gio/gfile.c | 1 - + 1 file changed, 1 deletion(-) + +commit 82352ab8e7bc0d499a1e1a805ba4c5f896d3ba8c +Author: Sébastien Wilmet +AuthorDate: Sun May 11 18:51:29 2014 +0200 +Commit: Sébastien Wilmet +CommitDate: Sun Jun 29 17:57:24 2014 +0200 + + doc: various improvements + + - g_subprocess_launcher_spawn() and spawnv(): there is no other way + AFAIK to create a GSubprocess from a launcher. So these + functions are not "convenience helper". + + - annotate optional arguments for g_shell_parse_argv(). + + - other trivial fix + + https://bugzilla.gnome.org/show_bug.cgi?id=732357 + + gio/gsubprocess.c | 2 +- + gio/gsubprocesslauncher.c | 6 ++---- + glib/gshell.c | 7 ++++--- + 3 files changed, 7 insertions(+), 8 deletions(-) + +commit 42e04f4effe2a8759392f1485b5f4df85aefe48e +Author: Ryan Lortie +AuthorDate: Sun Jun 29 11:34:16 2014 -0400 +Commit: Ryan Lortie +CommitDate: Sun Jun 29 11:34:16 2014 -0400 + + GActionEntry: one more docs fix + + Hyperlink "GVariant text format". + + gio/gactionmap.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit c78037773b574b6f15915c23299eb7a2ff3c1900 +Author: Ryan Lortie +AuthorDate: Sun Jun 29 11:13:25 2014 -0400 +Commit: Ryan Lortie +CommitDate: Sun Jun 29 11:14:45 2014 -0400 + + GActionEntry: improve documentation + + Document that giving %NULL for the activate handler is supported since + GLib 2.40. We documented this on GSimpleAction itself (where the + default handler functionality is implemented) but expecting the + user to + dig that up is asking a bit much. + + Also, add some more explicit documentation about the conditions under + which each field is expected to be filled in. + + https://bugzilla.gnome.org/show_bug.cgi?id=732429 + + gio/gactionmap.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +commit 1b3deb5f56a6d73fadb4303a02bf52a67bdefaf5 +Author: Koop Mast +AuthorDate: Sun Feb 23 01:09:45 2014 +0100 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 14:06:59 2014 -0400 + + Change gio/data-to-c.pl to /usr/bin/env perl. + + On FreeBSD perl gets installed in /usr/local, And a compat symlink in + /usr/bin. However this symlink might go away in the future. + + https://bugzilla.gnome.org/show_bug.cgi?id=724986 + + gio/data-to-c.pl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit afce39c228eacfecb45bd9de0f58e7ca767e36ed +Author: Patrick Welche +AuthorDate: Tue Apr 15 15:09:22 2014 +0100 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 14:06:36 2014 -0400 + + gcredentials: add NetBSD support + + https://bugzilla.gnome.org/show_bug.cgi?id=728256 + + gio/gcredentials.c | 28 ++++++++++++++++++++++++++++ + gio/gcredentialsprivate.h | 8 ++++++++ + gio/gioenums.h | 2 ++ + gio/gsocket.c | 17 +++++++++++++++++ + gio/gunixcredentialsmessage.c | 2 ++ + gio/tests/credentials.c | 8 ++++++++ + 6 files changed, 65 insertions(+) + +commit 01098e34c188b4ec93944e14dbece6818d786aec +Author: Lars Uebernickel +AuthorDate: Sun Jun 15 15:42:31 2014 +0200 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 14:05:23 2014 -0400 + + GNotification: add priority + + https://bugzilla.gnome.org/show_bug.cgi?id=731623 + + gio/gfdonotificationbackend.c | 26 ++++++++++++++++++-- + gio/gioenums.h | 26 ++++++++++++++++++++ + gio/gnotification-private.h | 2 +- + gio/gnotification.c | 55 + ++++++++++++++++++++++++++++++++++--------- + gio/gnotification.h | 7 +++++- + gio/tests/gnotification.c | 8 +++---- + 6 files changed, 105 insertions(+), 19 deletions(-) + +commit baef9d18116d55196f00847e0b96c317bab2238b +Author: Kang Hu +AuthorDate: Sat May 10 20:47:57 2014 +0800 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 14:00:32 2014 -0400 + + gobject: move _g_type_debug_flags from gtype.h to gtype-private.h + + _g_type_debug_flags is used internally to suport GOBJECT_DEBUG + environment variable. it should never be exposed to the outside. + + https://bugzilla.gnome.org/show_bug.cgi?id=729914 + + gobject/gtype-private.h | 2 ++ + gobject/gtype.h | 1 - + 2 files changed, 2 insertions(+), 1 deletion(-) + +commit 9f5afe3966d31ef6f1e880d950206a0325e6c777 +Author: Mikhail Zabaluev +AuthorDate: Sun Sep 22 23:34:27 2013 +0300 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 13:56:07 2014 -0400 + + glib/tests/mainloop: Acquire the context while asserting its state + + The iteration methods presume that the context is acquired. + + https://bugzilla.gnome.org/show_bug.cgi?id=699132 + + glib/tests/mainloop.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit c0e8f8a8dbd0dc2c92cd7b7b450d624585570d05 +Author: Mikhail Zabaluev +AuthorDate: Tue Sep 17 09:07:07 2013 +0300 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 13:56:07 2014 -0400 + + A simple test for polling on a file-like descriptor + + https://bugzilla.gnome.org/show_bug.cgi?id=699132 + + glib/tests/mainloop.c | 43 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 43 insertions(+) + +commit 000737612852d76fd1b85b42363901ec6ab12bd9 +Author: Ryan Lortie +AuthorDate: Fri Jun 6 12:16:55 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 13:51:23 2014 -0400 + + giochannel: avoid setting uninitialised length + + Our internal call to g_io_channel_read_line_backend() may return + G_IO_STATUS_ERROR, in which case two things will be true: + + - the GError will have been set (if appropriate) + + - the &got_length return value may not have been set + + Since it's our convention to leave 'out' parameters untouched in + exception cases, this is perfectly fine. Unfortunately, + g_io_channel_read_line(), in wrapping this internal function, always + promotes the length parameter, even in the case of error. + + Stop doing that in order to avoid overwriting the callers's variable + with junk in the error case. + + https://bugzilla.gnome.org/show_bug.cgi?id=731339 + + glib/giochannel.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 88b284c07051ccf5a7561d04236d83c8bb61993a +Author: Bastien Nocera +AuthorDate: Thu Apr 17 09:18:14 2014 +0200 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 13:46:17 2014 -0400 + + GDateTime: Add guards to g_date_time_new() + + https://bugzilla.gnome.org/show_bug.cgi?id=728401 + + glib/gdatetime.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit f18811f2dcca8e49f001d86541bfd05deb7290a9 +Author: Florian Pelz +AuthorDate: Thu May 8 19:44:30 2014 +0200 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 13:43:23 2014 -0400 + + docs: Fix formatting of g_alloca documentation. + + https://bugzilla.gnome.org/show_bug.cgi?id=729825 + + glib/galloca.h | 47 ++++++++++++++++++++--------------------------- + 1 file changed, 20 insertions(+), 27 deletions(-) + +commit cc38cb359fc4966cbd7616cac0bf867a31762235 +Author: Daniel Macks +AuthorDate: Tue Jun 10 13:43:27 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 13:19:56 2014 -0400 + + Convert multiple #if/#endif to single #if/#elif/#endif + + https://bugzilla.gnome.org/show_bug.cgi?id=731424 + + glib/gutils.c | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +commit ab9f63fadd8f769b2b2ae7c32a8cce42fac01451 +Author: Patrick Welche +AuthorDate: Sat Jan 4 17:42:23 2014 +0000 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 13:17:16 2014 -0400 + + gmessages: make g_assert_warning compiler friendly + + https://bugzilla.gnome.org/show_bug.cgi?id=720708 + + glib/gmessages.c | 24 +++++++++++++++--------- + 1 file changed, 15 insertions(+), 9 deletions(-) + +commit dce88768dc9bedaa46eb310a1f64562ea1247b68 +Author: Ryan Lortie +AuthorDate: Sun May 25 12:18:14 2014 +0200 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 13:07:52 2014 -0400 + + all: remove use of 'register' keyword + + We should have done this a decade ago... + + https://bugzilla.gnome.org/show_bug.cgi?id=730293 + + glib/deprecated/gcompletion.c | 8 +-- + glib/gchecksum.c | 2 +- + glib/gdataset.c | 10 ++-- + glib/gmessages.c | 14 ++--- + glib/gpattern.c | 4 +- + glib/gstrfuncs.c | 30 +++++----- + glib/gtypes.h | 16 ++--- + glib/gutils.h | 2 +- + glib/pcre/pcre_compile.c | 40 ++++++------- + glib/pcre/pcre_dfa_exec.c | 6 +- + glib/pcre/pcre_exec.c | 51 ++++++++-------- + glib/pcre/pcre_ord2utf8.c | 2 +- + glib/pcre/pcre_study.c | 12 ++-- + glib/pcre/pcre_valid_utf8.c | 4 +- + gobject/gmarshal.c | 132 + +++++++++++++++++++++--------------------- + gobject/gsignal.c | 2 +- + gobject/gtype.c | 2 +- + tests/bit-test.c | 2 +- + 18 files changed, 168 insertions(+), 171 deletions(-) + +commit d217429729aad360f372633f2ec99778c0fc08d5 +Author: Christian Persch +AuthorDate: Sat May 3 19:36:18 2014 +0200 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 12:49:38 2014 -0400 + + unicode: Update to unicode 7.0.0 + + See bug https://bugzilla.gnome.org/show_bug.cgi?id=731929. + + glib/gscripttable.h | 241 +- + glib/gunibreak.h | 3405 ++++++++++++++++------ + glib/gunichartables.h | 2462 ++++++++++++---- + glib/gunicode.h | 50 +- + glib/gunicomp.h | 254 +- + glib/gunidecomp.h | 7781 + +++++++++++++++++++++++++------------------------ + glib/guniprop.c | 25 + + glib/tests/unicode.c | 50 +- + 8 files changed, 8762 insertions(+), 5506 deletions(-) + +commit 30ed5f53e205e6bfc35126a9d3c62dac8a9c5dad +Author: Christian Persch +AuthorDate: Thu Jun 19 19:29:16 2014 +0200 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 12:49:07 2014 -0400 + + unicode: Switch compose_second_single to gunichar + + This will be required for the update to unicode 7.0.0. + + glib/gen-unicode-tables.pl | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +commit 7e3d32b7053b47ca7feecf185abac96b619770c2 +Author: Christian Persch +AuthorDate: Sat May 3 18:49:07 2014 +0200 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 12:49:07 2014 -0400 + + unicode: Move gscripttable.h generation into main script + + So we just have to run one script when updating the unicode data, + not two. + + glib/gen-script-table.pl | 119 + ----------------------------------------- + glib/gen-unicode-tables.pl | 129 + +++++++++++++++++++++++++++++++++++++++++++-- + glib/gscripttable.h | 14 ++--- + 3 files changed, 133 insertions(+), 129 deletions(-) + +commit 33c8a894907cf557c50849d8a3a2447324750414 +Author: Christian Persch +AuthorDate: Sat May 3 17:56:07 2014 +0200 +Commit: Matthias Clasen +CommitDate: Sat Jun 28 12:49:07 2014 -0400 + + unicode: Simplify width table generation + + Move width table generation into the gen-unicode-tables.pl + script. This makes + updating the tables automatic without the previously required + manual editing + required to insert the tables in the right place of the source code. + + glib/gen-iswide-table.py | 58 ------------ + glib/gen-unicode-tables.pl | 97 +++++++++++++++++++- + glib/gunichartables.h | 220 + +++++++++++++++++++++++++++++++++++++++++++++ + glib/guniprop.c | 90 ++----------------- + 4 files changed, 322 insertions(+), 143 deletions(-) + +commit 66779064368742f04eb0e45346a3b4fb53a8d6ca +Author: Ryan Lortie +AuthorDate: Fri Jun 27 13:21:03 2014 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jun 27 14:44:36 2014 -0400 + + GObject: tweak property deprecation warnings + + Don't emit property deprecation warnings for construct properties that + are being set to their default value during construction, but _do_ + emit + them in all cases when the property was explicitly given to + g_object_new(). + + https://bugzilla.gnome.org/show_bug.cgi?id=732184 + + gobject/gobject.c | 56 + +++++++++++++++++++++++++++---------------------------- + 1 file changed, 27 insertions(+), 29 deletions(-) + +commit 4d327bdcb0fe94901c6d207afa90477a52f88df2 +Author: Ryan Lortie +AuthorDate: Tue Jun 24 21:42:46 2014 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jun 27 13:21:15 2014 -0400 + + GTimeZone: remove some dead code + + Remove code that parsed out and stored the unused isstd and isgmt + fields. + + glib/gtimezone.c | 39 ++------------------------------------- + 1 file changed, 2 insertions(+), 37 deletions(-) + +commit f948a7148340012a20286dfb94912be73c32c1f6 +Author: Emmanuele Bassi +AuthorDate: Wed Jun 25 11:56:12 2014 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Jun 25 11:56:12 2014 +0100 + + gtype: Remove unused header + + GType does not use GBSearchArray any more. + + gobject/gtype.c | 1 - + 1 file changed, 1 deletion(-) + +commit 59c9291f5f12492bab5bb303af41a38b930be97b +Author: Ryan Lortie +AuthorDate: Tue Jun 24 16:56:20 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jun 24 16:57:12 2014 -0400 + + Revert "gsettings: remove long-deprecated "schema" property" + + This reverts commit cf9b162e0d0defaff2ad5c85aeaf7af0899ad22f. + + It turns out that there are still a very large number of users of this + API. + + https://bugzilla.gnome.org/show_bug.cgi?id=732102 + + gio/gsettings.c | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit d0e706178584d2251b11f71321cdbfee5af04847 +Author: Ryan Lortie +AuthorDate: Tue Jun 24 16:13:30 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jun 24 16:18:30 2014 -0400 + + GObject: warn on use of deprecated properties + + By default G_PARAM_DEPRECATED means absolutely nothing. We only + emit a + warning if G_ENABLE_DIAGNOSTIC is set to '1' and then, only on sets. + + Turn the logic on its head: emit the warning by default, unless + G_ENABLE_DIAGNOSTIC is set to 0. In order to avoid a torrent of + output, only + emit a warning once per property name. + + https://bugzilla.gnome.org/show_bug.cgi?id=732184 + + gobject/gobject.c | 83 + +++++++++++++++++++++++++++++++++++++++++-------------- + 1 file changed, 63 insertions(+), 20 deletions(-) + +commit c5c3c320a2eb32aa9bde5d412ce5bee0fc215ead +Author: Edward Hervey +AuthorDate: Thu Jun 19 11:28:48 2014 +0200 +Commit: Ryan Lortie +CommitDate: Tue Jun 24 14:21:10 2014 -0400 + + gvalue: New g_value_init_from_instance + + Used for the commonly used case (in signal emission) where we + initialize and set a GValue for an instance + + Includes a fast-path for GObject + + Overall makes it 6 times faster than the previous combination + of g_value_init + g_value_set_instance + + Makes signal emission around 10% faster + + https://bugzilla.gnome.org/show_bug.cgi?id=731950 + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gsignal.c | 6 +-- + gobject/gvalue.c | 65 + +++++++++++++++++++++++++++++ + gobject/gvalue.h | 3 ++ + 4 files changed, 71 insertions(+), 4 deletions(-) + +commit f727c820b823178285d90b3f033f7d2a4d3cdf9f +Author: Ryan Lortie +AuthorDate: Tue Jun 24 10:40:30 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jun 24 14:18:29 2014 -0400 + + gvariant tests: workaround libc/compiler "issue" + + memcmp() is declared by glibc as follows: + + /* Compare N bytes of S1 and S2. */ + extern int memcmp (const void *__s1, const void *__s2, size_t __n) + __THROW __attribute_pure__ __nonnull ((1, 2)); + + despite the fact that it is valid to call it with a null pointer + if the + size is zero. + + gcc 4.9.0 contains a new optimisation that sees that we pass a pointer + to this function and concludes that it certainly must not be null, + removing a later check and thereby causing a crash. + + We protect the invocation of memcmp() with a condition to prevent gcc + from making this false assumption (arguably under wrong advice from + glibc). + + glib/tests/gvariant.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +commit cf9b162e0d0defaff2ad5c85aeaf7af0899ad22f +Author: Ryan Lortie +AuthorDate: Mon Jun 23 08:53:26 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jun 24 14:18:28 2014 -0400 + + gsettings: remove long-deprecated "schema" property + + This property has been deprecated for three years after only having + existed for one. We've wanted to reuse the name for all that time, so + let's try to actually remove it now and see if we can get away + with it. + + https://bugzilla.gnome.org/show_bug.cgi?id=732102 + + gio/gsettings.c | 24 ------------------------ + 1 file changed, 24 deletions(-) + +commit f2ceb74e91e05e9556622bc2cde7ab57cbc30ea3 +Author: Ryan Lortie +AuthorDate: Mon Jun 23 08:53:06 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jun 24 14:18:28 2014 -0400 + + gsettings test: stop testing long-deprecated API + + We want to try taking this away now... + + https://bugzilla.gnome.org/show_bug.cgi?id=732102 + + gio/tests/gsettings.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 753e6ef7d78374072141bbf8fc0f3f3d7e1b57db +Author: Michael Catanzaro +AuthorDate: Tue Jun 24 10:49:00 2014 -0500 +Commit: Michael Catanzaro +CommitDate: Tue Jun 24 10:49:21 2014 -0500 + + docs: fix typos + + docs/reference/gobject/tut_howto.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit bc56512dd77b9b2386d5a2f43c5ec33691bb185e +Author: Matthias Clasen +AuthorDate: Mon Jun 23 23:14:56 2014 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 23 23:14:56 2014 -0400 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1429ff12d8dd7d36c4bdc3cb771d12748f16410a +Author: Matthias Clasen +AuthorDate: Mon Jun 23 21:58:07 2014 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 23 21:58:07 2014 -0400 + + 2.41.1 + + NEWS | 30 ++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 31 insertions(+), 1 deletion(-) + +commit f1095de46f5f43edf494ea6adcabbe86685baadf +Author: Philip Withnall +AuthorDate: Mon Jun 23 15:01:28 2014 +0100 +Commit: Philip Withnall +CommitDate: Mon Jun 23 16:53:38 2014 +0100 + + gsocketlistener: Don’t explicitly close sockets on finalisation + + Instead of closing the sockets explicitly, let them close themselves + when their final reference is dropped. This makes use of + g_socket_listener_add_socket() more natural. + + https://bugzilla.gnome.org/show_bug.cgi?id=732107 + + gio/gsocketlistener.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +commit 00e733315de2c2588b0b5b95e02fcd29bb259cb1 +Author: Philip Withnall +AuthorDate: Mon Jun 23 10:12:08 2014 +0100 +Commit: Philip Withnall +CommitDate: Mon Jun 23 16:24:47 2014 +0100 + + gsocket: Document that g_socket_create_source() holds a socket ref + + This is quite important, as it means you can safely let the GSocket + drop + out of scope while maintaining a reference to the GSource, and the + socket will remain open. That means fewer closure structures, simpler + code, and fewer allocations. + + https://bugzilla.gnome.org/show_bug.cgi?id=732081 + + gio/gsocket.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 248ca727820923c28a39d2e0ee40db54c141adea +Author: Philip Withnall +AuthorDate: Mon Jun 23 00:59:39 2014 +0100 +Commit: Philip Withnall +CommitDate: Mon Jun 23 12:30:51 2014 +0100 + + gsignal: Add an example to the g_signal_connect_swapped() + documentation + + The precise behaviour of and motivation behind swapping parameters was + not entirely clear before. + + https://bugzilla.gnome.org/show_bug.cgi?id=732068 + + gobject/gsignal.h | 28 +++++++++++++++++++++++++--- + 1 file changed, 25 insertions(+), 3 deletions(-) + +commit 90025254fd0047d61fe5c1de84b905da842c43f0 +Author: Matthias Clasen +AuthorDate: Fri Jun 20 20:54:47 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 22 14:34:27 2014 -0400 + + Return folder as icon for directories + + 'folder' is the name of the folder icon in the incon naming spec, + and the Adwaita icon theme doesn't include an inode-directory icon. + This fixes folders appearing as generic file in the file chooser. + + https://bugzilla.gnome.org/show_bug.cgi?id=731996 + + gio/glocalfileinfo.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit d80adeaa960ddfa13837900d0391f9bd9c239f78 +Author: Philip Withnall +AuthorDate: Sat Jun 21 23:01:08 2014 +0100 +Commit: Philip Withnall +CommitDate: Sun Jun 22 13:02:18 2014 +0100 + + gtestdbus: Don’t close stdout for dbus-daemon + + The stdout FD passed to dbus-daemon is propagated to all its child + processes, such as service activated processes. If we close the + FD after + reading the bus address from the daemon, any child process which + subsequently writes to stdout (e.g. for logging) will get a SIGPIPE + and + explode. + + Instead of closing the stdout FD immediately after dbus-daemon has + spawned, keep it open until the daemon is killed. + + https://bugzilla.gnome.org/show_bug.cgi?id=732019 + + gio/gtestdbus.c | 17 +++++++++++++---- + 1 file changed, 13 insertions(+), 4 deletions(-) + +commit 0950369899ac04ebe0357d0b1ba834c4dab39219 +Author: Philip Withnall +AuthorDate: Sat Jun 21 12:29:09 2014 +0100 +Commit: Philip Withnall +CommitDate: Sun Jun 22 12:57:57 2014 +0100 + + gclosure: Remove an unused alloca() and assignment + + Coverity issue: #1159511 + + https://bugzilla.gnome.org/show_bug.cgi?id=732005 + + gobject/gclosure.c | 3 --- + 1 file changed, 3 deletions(-) + +commit afea86a7ef4f73a6fffd2155f2ddf411bb6fd8c6 +Author: Philip Withnall +AuthorDate: Sat Jun 21 12:28:54 2014 +0100 +Commit: Philip Withnall +CommitDate: Sun Jun 22 12:57:57 2014 +0100 + + goption: Remove an unused assignment + + Coverity issue: #1159514 + + https://bugzilla.gnome.org/show_bug.cgi?id=732005 + + glib/goption.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 6b8ae8f21b909102b4279900e90cb294cf542188 +Author: Philip Withnall +AuthorDate: Sat Jun 21 10:48:08 2014 +0100 +Commit: Philip Withnall +CommitDate: Sat Jun 21 17:41:31 2014 +0100 + + gwakeup: Clarify buffer sizing in g_wakeup_signal() + + The code in g_wakeup_signal() is currently correct: it writes a 64-bit + counter increment value if the FD is an eventfd, and writes an + arbitrary + 8-bit value if using a normal pipe. + + However, the reasoning behind these buffer sizes is not clear, and the + mismatch between the allocated buffer size and the length passed to + write() in the pipe case could be mistaken for a bug. + + Coverity issue: #1159490 + + https://bugzilla.gnome.org/show_bug.cgi?id=732002 + + glib/gwakeup.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +commit eb6da409fa904d99ec6c62718f366e3a70033881 +Author: Zeeshan Ali (Khattak) +AuthorDate: Fri Jun 20 18:25:03 2014 +0100 +Commit: Zeeshan Ali (Khattak) +CommitDate: Sat Jun 21 12:18:58 2014 +0100 + + docs: Correct param to interface's default_init() + + https://bugzilla.gnome.org/show_bug.cgi?id=731979 + + docs/reference/gobject/tut_howto.xml | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit d552a1f125eac718b988cdae654e36645c685343 +Author: Michael Catanzaro +AuthorDate: Fri Jun 20 16:44:08 2014 -0500 +Commit: Michael Catanzaro +CommitDate: Fri Jun 20 16:44:59 2014 -0500 + + docs: fix a broken sentence + + docs/reference/gobject/tut_gtype.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 9362a1b2d987125a8aa0723b916d29aaaece329a +Author: Ryan Lortie +AuthorDate: Fri Jun 20 14:43:26 2014 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jun 20 16:00:48 2014 -0400 + + configure.ac: fix check for futex and eventfd + + We were using AC_LANG_PROGRAM to build a program to test for our + ability + to call syscall (__NR_futex, ...);. This macro adds "main () { ... }" + around the provided code segment automatically. The provided code + segment provided its own main() function, however. + + The result looked something like: + + int main (void) { + int main (void) { + ... + } + } + + which worked on GCC, but not on clang. + + Let's fix that. Let's fix the same mistake copied over for eventfd() + detection while we're at it. + + configure.ac | 11 ----------- + 1 file changed, 11 deletions(-) + +commit bef557e55d8ab89b324ff2099b2621254aeb3929 +Author: Ryan Lortie +AuthorDate: Fri Jun 20 14:38:45 2014 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jun 20 16:00:48 2014 -0400 + + gatomic: disable GCC extension atomics for clang + + clang defines the macro that we use to test for GCC's extension + support + for C11 atomics, but doesn't define the extension in the same way. + Check for clang and disable the macros again if we find it. + + https://bugzilla.gnome.org/show_bug.cgi?id=731513 + + glib/gatomic.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7991178a752a22274950e54dc4f05b55ae54d756 +Author: Matthias Clasen +AuthorDate: Mon Jun 16 15:24:37 2014 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 16 15:25:42 2014 -0400 + + Try to make gobject.py work with both pythons + + This change was suggested on the fedora test list, and has been + reported to work. + + gobject/gobject.py | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 9f69534030f963183ac5398889630a641a71409b +Author: Erik van Pienbroek +AuthorDate: Sat Jun 14 17:10:17 2014 +0200 +Commit: Colin Walters +CommitDate: Sat Jun 14 14:21:37 2014 -0400 + + Prevent an invalid @CARBON_LIBS@ from appearing in the .pc files + + Fixes static linking when using the glib pkgconfig file. + Regression was introduced in commit 8d037c6 (bz #668152) + + https://bugzilla.gnome.org/show_bug.cgi?id=731657 + + configure.ac | 2 ++ + 1 file changed, 2 insertions(+) + +commit 94e13c71c5b722b4d236cc6b4c2a8d6a843aeadd +Author: Tim-Philipp Müller +AuthorDate: Fri Jun 13 19:23:13 2014 +0100 +Commit: Tim-Philipp Müller +CommitDate: Fri Jun 13 19:32:09 2014 +0100 + + gio/tests/socket: fix minor memleak + + gio/tests/socket.c | 1 + + 1 file changed, 1 insertion(+) + +commit 09498e52bbc71496cd1b99ad5c8781783a864881 +Author: Colin Walters +AuthorDate: Thu Jun 12 13:37:16 2014 -0400 +Commit: Colin Walters +CommitDate: Thu Jun 12 13:38:27 2014 -0400 + + gparam: Remove unnecessary conditionals around preconditions + + These cause a static analyzer to think we're trying to actually handle + them being NULL, which is not the case. They both must not be NULL, + period. + + No idea why the code was like this originally. + + Reviewed by mclasen on IRC. + + gobject/gparam.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +commit f7d7e5ab2f3f9421f9df5d76487f37d4bdc78088 +Author: Colin Walters +AuthorDate: Thu Jun 12 12:53:18 2014 -0400 +Commit: Colin Walters +CommitDate: Thu Jun 12 13:25:06 2014 -0400 + + gbookmarkfile: Cleaner error handling code to pacify static analysis + + A static analyzer flagged the g_file_get_contents() call as not + checking its return value. While the code here is actually correct, + it's verbose at best. + + I think the "goto out + cleanup" code style is substantially cleaner, + less error prone, and easier to read. It also will pacify the static + analyzer. + + https://bugzilla.gnome.org/show_bug.cgi?id=731584 + + glib/gbookmarkfile.c | 35 +++++++++-------------------------- + 1 file changed, 9 insertions(+), 26 deletions(-) + +commit fcdd25a96eb33c389f381cacce42e6d4f2912c5c +Author: Ryan Lortie +AuthorDate: Fri Jun 6 14:35:55 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jun 10 19:04:35 2014 -0400 + + gparam: change value of G_PARAM_EXPLICIT_NOTIFY + + GParamSpec has a possibility of user-introduced flags, and we didn't + respect that with the addition of _EXPLICIT_NOTIFY. + + Change the documentation for the maximum number of user flags to 10, + just to pick a somewhat random number. The documentation here + was never + correct anyway -- it previously claimed that as many as 38 flags were + possible. + + Meanwhile, move G_PARAM_EXPLICIT_NOTIFY next to _DEPRECATED in + order to + avoid conflicts with low-numbered user flags (which are in use by at + least evolution-data-server). + + https://bugzilla.gnome.org/show_bug.cgi?id=731341 + + gobject/gparam.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit b413f7a285f597e4bcbb8866fcb22bea661fcdcd +Author: Daniel Macks +AuthorDate: Mon Jun 9 15:17:19 2014 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 10 09:24:43 2014 -0400 + + gnextstepsettingsbackend: Use same token for function-call and + its availability + + Availability of the g_nextstep_settings_backend_get_type() prototype + is controlled by HAVE_COCOA in gsettingsbackendinternal.h and the + actual implemenation by OS_COCOA in Makefile.am. Therefore, the + giomodule.c call to that function should also be protected by a COCOA + token rather than an CARBON token (cocoa and carbon are independent + autoconf tests). + + https://bugzilla.gnome.org/show_bug.cgi?id=731425 + + gio/giomodule.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 93d0c632326064f3e72f0e88e3dc971bdfc74af0 +Author: Daniel Macks +AuthorDate: Tue Jun 10 06:00:33 2014 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 10 08:57:54 2014 -0400 + + assert-msg-test: Explicitly quit gdb session to avoid zombie + + gdb is run in batch mode, and can leave leave the program being + executed/debugged running when the batchfile is finished. Explicitly + "quit"ing the subprocess prevents it from leaving the stray subprocess + when gdb finishes. + + https://bugzilla.gnome.org/show_bug.cgi?id=731366 + + tests/assert-msg-test.gdb | 1 + + 1 file changed, 1 insertion(+) + +commit 545b44444b365a4e3ba98ec71fab4f12293a229c +Author: Ryan Lortie +AuthorDate: Fri Jun 6 16:51:40 2014 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 9 14:18:15 2014 -0400 + + gtype: remove interface-after-init exceptions + + A year ago, we tried to remove support for adding interfaces on + already-initialised types. There were problems with the C++ and C# + bindings at the time, so we added exceptions to give them a bit more + time to catch up. + + It's already one cycle after when these exceptions were planned to be + removed, so let's take them out now. + + https://bugzilla.gnome.org/show_bug.cgi?id=697229 + + gobject/gtype.c | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +commit 91b9aef0c9988fcab6adb7be3af46953c1c558c9 +Author: Chun-wei Fan +AuthorDate: Mon Jun 9 10:27:36 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Jun 9 10:27:36 2014 +0800 + + MSVC 2010+ Projects: Update "Installation" Process + + Currently, due to the way that Visual Studio 2010+ projects are + handled, + the "install" project does not re-build upon changes to the sources, + as it + does not believe that its dependencies have changed, although + the changed + sources are automatically recompiled. This means that if a part + or more + of the solution does not build, or if the sources need some other + fixes + or enhancements, the up-to-date build is not copied automatically, + which + can be misleading. + + Improve on the situation by forcing the "install" project to + trigger its + rebuild, so that the updated binaries can be copied. This does + trigger an + MSBuild warning, but having that warning is way better than not + having an + up-to-date build, especially during testing and development. + + build/win32/vs10/glib-install.props | 40 + +++++++++++++++++++++++++++---------- + build/win32/vs10/install.vcxproj | 28 +++++++++++++++----------- + 2 files changed, 46 insertions(+), 22 deletions(-) + +commit 39d70301c58b0e79f90fc2729eecc10ba5c3caf9 +Author: Michael Catanzaro +AuthorDate: Fri Jun 6 19:04:12 2014 -0500 +Commit: Michael Catanzaro +CommitDate: Fri Jun 6 22:58:48 2014 -0500 + + trivial: docs: add some missing commas + + docs/reference/gobject/gobject-docs.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f2f66bfe45f41d18e7437341e5ebf4c70d815958 +Author: Ryan Lortie +AuthorDate: Fri Jun 6 16:42:23 2014 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jun 6 16:44:47 2014 -0400 + + docs: warn about installing properties after init + + Leave ourselves a little wiggle room: if people install properties + after + initialisation then we reserve the right to handle that in a way that + may not be threadsafe. + + https://bugzilla.gnome.org/show_bug.cgi?id=698614 + + gobject/gobject.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +commit 85e9455f68c6cc6093a1ede1c5f15587bba08b51 +Author: Ryan Lortie +AuthorDate: Fri Jun 6 16:40:15 2014 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jun 6 16:44:47 2014 -0400 + + Revert "GObject: prevent installing properties after init" + + This reverts commit ddb0ce14215cd62c7a2497d6cf9f2ea63c40ebb5. + + Conflicts: + gobject/gobject.c + + https://bugzilla.gnome.org/show_bug.cgi?id=698614 + + gobject/gobject.c | 6 ------ + gobject/gtype-private.h | 1 - + gobject/gtype.c | 10 ---------- + 3 files changed, 17 deletions(-) + +commit 256305dea5ce0a7c4512b4842b0703c025853e1c +Author: Tim-Philipp Müller +AuthorDate: Sat May 31 14:54:08 2014 +0100 +Commit: Ryan Lortie +CommitDate: Fri Jun 6 11:41:12 2014 -0400 + + gthread: use inline keyword for _get_impl() functions + + Give compiler a hint that these should be inlined, + which doesn't seem to happen by default with -O2. + Yields 5% speedup in artificial benchmarks, and + 1% speedup in a real-world test case doing a lot + of mutex locking and unlocking. + + https://bugzilla.gnome.org/show_bug.cgi?id=730807 + + glib/gthread-posix.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit db0e43d25a5316f3a6f2f31712a0b8359e247a20 +Author: Ryan Lortie +AuthorDate: Tue May 27 15:28:08 2014 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jun 6 11:41:12 2014 -0400 + + gatomic: use GCC C11-style atomics, if available + + GCC does not yet support ISO C11 atomic operations, but it has + compatible versions available as an extension. Use these for load and + store if they are available in order to avoid emitting a hard fence + instruction (since in many cases, we do not need it -- on x86, for + example). + + For now we use the fully seqentially-consistent memory model, since + these APIs are documented rather explicitly: "This call acts as a full + compiler and hardware memory barrier". + + In the future we can consider introducing new APIs for the more + relaxed + memory models, if they are available (or fall back to stricter ones + otherwise). + + https://bugzilla.gnome.org/show_bug.cgi?id=730807 + + glib/gatomic.h | 77 + ++++++++++++++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 64 insertions(+), 13 deletions(-) + +commit 875eeb2ca1d32fc0fdd70518f7d6f4dc8de1a287 +Author: Ryan Lortie +AuthorDate: Tue May 27 15:27:54 2014 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jun 6 11:41:12 2014 -0400 + + gatomic: whitespace fixes + + https://bugzilla.gnome.org/show_bug.cgi?id=730807 + + glib/gatomic.h | 32 ++++++++++++++++---------------- + 1 file changed, 16 insertions(+), 16 deletions(-) + +commit aa0e8735c14ebb3cbfa38d441a6a05bb978e23b2 +Author: Ryan Lortie +AuthorDate: Tue May 27 15:25:37 2014 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jun 6 11:41:12 2014 -0400 + + gatomic: fix typo in deprecation attribute + + https://bugzilla.gnome.org/show_bug.cgi?id=730807 + + glib/gatomic.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d558e87c65517e3646f3b8ebc8f11448e25ccbf2 +Author: Ryan Lortie +AuthorDate: Fri Jun 6 10:45:51 2014 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jun 6 10:49:29 2014 -0400 + + gtype: guard uses of new fundamental type check + + g_type_is_fundamentally_a (see bug 730984) is a new API/ABI and is + marked with a version macro. We should therefore avoid its + unconditional use from G_IS_OBJECT() and G_IS_PARAM_SPEC() which are + APIs that have been around for a long time. + + This prevents deprecation warnings from being emitted when these + functions are used with an older GLIB_VERSION_MAX_ALLOWED and also + prevents linking to the new ABI in that case (so that it's possible to + use the resulting binary with an older version of GLib). + + https://bugzilla.gnome.org/show_bug.cgi?id=731335 + + gobject/gobject.h | 4 ++++ + gobject/gparam.h | 4 ++++ + 2 files changed, 8 insertions(+) + +commit 0208861a13afc30964fb4f409525fa1cdb544cf4 +Author: Ryan Lortie +AuthorDate: Fri Jun 6 10:25:16 2014 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jun 6 10:25:48 2014 -0400 + + test: add test for explicit-notify properties + + https://bugzilla.gnome.org/show_bug.cgi?id=731200 + + gobject/tests/properties.c | 62 + ++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 60 insertions(+), 2 deletions(-) + +commit bbdb2345fc7e5a57cb7af90ab0bf8ced437ada24 +Author: Ryan Lortie +AuthorDate: Wed Jun 4 08:59:50 2014 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jun 6 10:25:48 2014 -0400 + + gobject: add 'explicit notify' GParamSpec flag + + Add a flag to prevent the automatic emission of the "notify" signal + during g_object_set_property(). + + If this flag is set then the class must explicitly emit the notify + for themselves. This is already standard practice on most classes, + but + we cannot simply remove the existing behaviour because there are + surely + many cases where it is needed. + + https://bugzilla.gnome.org/show_bug.cgi?id=731200 + + gobject/gobject.c | 13 ++++++++----- + gobject/gparam.h | 5 +++++ + 2 files changed, 13 insertions(+), 5 deletions(-) + +commit dc496ac7644d11e47b626a879b12813b31ef83b7 +Author: Matthias Clasen +AuthorDate: Thu Jun 5 08:04:19 2014 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 5 08:04:47 2014 -0400 + + Add a test for GMenuAttributeIter + + gio/tests/gmenumodel.c | 62 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 62 insertions(+) + +commit c4fc3aa5258bee806d19fa587355f0daa093e097 +Author: David King +AuthorDate: Fri May 16 12:32:49 2014 +0100 +Commit: David King +CommitDate: Wed Jun 4 12:49:28 2014 +0100 + + valgrind.h: Update to latest upstream version + + Avoid crashes in g_type_free_instance() on mingw64. + + https://bugzilla.gnome.org/show_bug.cgi?id=730198 + + glib/valgrind.h | 2142 + +++++++++++++++++++++++++++++++++++++++++-------------- + 1 file changed, 1623 insertions(+), 519 deletions(-) + +commit 6eb55b9a33b3b025859e1a08e11c89719d542d41 +Author: Chun-wei Fan +AuthorDate: Tue Jun 3 15:50:37 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jun 3 15:50:37 2014 +0800 + + Support Building Using Visual Studio 2013 + + Like the Visual Studio 2012 project files, the Visual Studio 2013 + files are + largely the same as the Visual Studio 2010 project files, so support + Visual Studio 2013 by updating the autotools scripts that is used for + Visual Studio 2012. This means that project files for Visual + Studio 2012 + and Visual Studio 2013 can be maintained by simply maintaining + the Visual + Studio 2010 project files, adding minimal maintenance overhead. + + build/Makefile-newvs.am | 14 +++++++------- + build/win32/Makefile.am | 3 ++- + build/win32/vs11/Makefile.am | 4 ++++ + build/win32/vs12/.gitignore | 31 +++++++++++++++++++++++++++++ + build/win32/vs12/Makefile.am | 46 + ++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 1 + + 6 files changed, 91 insertions(+), 8 deletions(-) + +commit 90671cd3cd0a98e8f706acf6e72d037aba1892e5 +Author: Matthias Clasen +AuthorDate: Sun Jun 1 09:38:49 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 1 09:38:49 2014 -0400 + + docs: Add missing language annotations + + gio/gdbusauthobserver.c | 2 +- + glib/ghash.c | 2 +- + glib/gvariant.c | 6 +++--- + 3 files changed, 5 insertions(+), 5 deletions(-) + +commit adfaf0e456eceaf531d12d667afef8fce85103c1 +Author: Matthias Clasen +AuthorDate: Sat May 31 20:55:00 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 31 20:55:00 2014 -0400 + + docs: GType documentation cleanup + + Still some markup left. + + gobject/gtype.c | 3 +- + gobject/gtype.h | 325 + +++++++++++++++++++++++++++----------------------------- + 2 files changed, 160 insertions(+), 168 deletions(-) + +commit 24ab95582b03ec947fc512cb85545fe87026baf1 +Author: Emmanuele Bassi +AuthorDate: Sat May 31 19:21:23 2014 +0100 +Commit: Emmanuele Bassi +CommitDate: Sat May 31 19:22:15 2014 +0100 + + docs: Replace XML tag with back ticks + + https://bugzilla.gnome.org/show_bug.cgi?id=731050 + + gobject/gtype.h | 3 +-- + gobject/gtypemodule.h | 6 +++--- + 2 files changed, 4 insertions(+), 5 deletions(-) + +commit a0c3fdfae0af260bd90adbb4f784afc21dbb9b24 +Author: Emmanuele Bassi +AuthorDate: Sat May 31 19:20:03 2014 +0100 +Commit: Emmanuele Bassi +CommitDate: Sat May 31 19:22:15 2014 +0100 + + docs: Replace tags with back ticks + + https://bugzilla.gnome.org/show_bug.cgi?id=731050 + + glib/gbookmarkfile.h | 2 +- + glib/gdatetime.h | 2 +- + glib/gerror.h | 4 ++-- + glib/gmain.h | 10 +++++----- + glib/goption.h | 6 +++--- + 5 files changed, 12 insertions(+), 12 deletions(-) + +commit 903a5d711e7337f4803f42815fe996061bd2a8eb +Author: Matthias Clasen +AuthorDate: Sat May 31 11:32:55 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 31 11:32:55 2014 -0400 + + docs: Add an index for 2.40 api + + docs/reference/gobject/gobject-docs.xml | 4 ++++ + 1 file changed, 4 insertions(+) + +commit ab18d71e6f7a281687dd39b2616ae3a41fdaaf29 +Author: Matthias Clasen +AuthorDate: Sat May 31 09:04:11 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 31 10:54:02 2014 -0400 + + Minor documentation additions and corrections + + Going for 100%. + + glib/deprecated/gthread-deprecated.c | 2 ++ + glib/docs.c | 8 +++++- + glib/gconvert.h | 7 +++--- + glib/giochannel.c | 7 +----- + glib/gmessages.c | 7 ++++++ + glib/gpoll.h | 8 ++++++ + glib/gregex.h | 13 +++++++--- + glib/gscanner.c | 8 ++++++ + glib/gvariant-parser.c | 2 ++ + glib/gversion.c | 47 + ++++++++++++++++++++++++++++++++++++ + gobject/gvalue.c | 11 +++++---- + 11 files changed, 101 insertions(+), 19 deletions(-) + +commit f38b438c965a8cfc84bc62086f0cec6637aa6f1f +Author: Matthias Clasen +AuthorDate: Sat May 31 10:38:47 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 31 10:54:02 2014 -0400 + + docs: Fill in the gspawn long description + + glib/gspawn.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit 06b7786f31a6038e78bcc99c88c076e8f9ff07f0 +Author: Matthias Clasen +AuthorDate: Sat May 31 10:18:07 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 31 10:54:02 2014 -0400 + + docs: Fill in gshell long description + + glib/gshell.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit ad5b4bf92e9a2afdea8d817e0d799c4c1ba0d4f7 +Author: Matthias Clasen +AuthorDate: Sat May 31 09:02:27 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 31 10:54:02 2014 -0400 + + Document g_signal_handlers_destroy + + gobject/gsignal.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit a4847190332ec2e9b749e68c5153de9e972d8b4d +Author: Matthias Clasen +AuthorDate: Sat May 31 08:55:21 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 31 10:54:02 2014 -0400 + + docs: Fix up varargs documentation + + gtk-doc expects varargs to be documented in a specific way, + otherwise it complains. + + gio/gsubprocess.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit abd4df4b55fc447cad9a9d907c61d6254dc1fba1 +Author: Matthias Clasen +AuthorDate: Sat May 31 08:54:52 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 31 10:54:02 2014 -0400 + + docs: Add some missing apis + + docs/reference/gio/gio-sections.txt | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 5b0183fd23dd58cd995df0b41f9f3eb4432d7f34 +Author: Matthias Clasen +AuthorDate: Sat May 31 08:54:16 2014 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 31 10:54:02 2014 -0400 + + docs: Add a 2.42 api index + + docs/reference/gio/gio-docs.xml | 4 ++++ + 1 file changed, 4 insertions(+) + +commit f8595a490f15c702578dc6c08bc182806e02681b +Author: Edward Hervey +AuthorDate: Fri May 30 12:25:27 2014 +0200 +Commit: Ryan Lortie +CommitDate: Sat May 31 15:46:21 2014 +0200 + + GParamSpec: Use new fundamental instance check + + https://bugzilla.gnome.org/show_bug.cgi?id=730984 + + gobject/gparam.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit faceb8960bf5a623a1af4ac876c964daa8fbab42 +Author: Edward Hervey +AuthorDate: Wed May 28 10:59:14 2014 +0200 +Commit: Ryan Lortie +CommitDate: Sat May 31 15:46:21 2014 +0200 + + gobject: Use fast fundamental instance type check + + Speeds up g_object_ref/_unref by 50%-65% (i.e. takes 60-65% of + the time + it used to take). + + https://bugzilla.gnome.org/show_bug.cgi?id=730984 + + gobject/gobject.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6072e3650fba8ff57b5c3f135f81488c83f27f0b +Author: Edward Hervey +AuthorDate: Wed May 28 10:57:28 2014 +0200 +Commit: Ryan Lortie +CommitDate: Sat May 31 15:45:29 2014 +0200 + + gtype: Add check for fundamental instance type + + When checking whether an instance is of a given fundamental type (such + as G_TYPE_OBJECT), we can avoid over 60%+ of the cost of checking + types. + + https://bugzilla.gnome.org/show_bug.cgi?id=730984 + + docs/reference/gobject/gobject-sections.txt | 2 ++ + gobject/gtype.c | 9 +++++++++ + gobject/gtype.h | 16 ++++++++++++++++ + 3 files changed, 27 insertions(+) + +commit 03a48e1adea2862635c439f8270a5cc2d969289a +Author: Matthias Clasen +AuthorDate: Fri May 30 10:21:43 2014 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 30 10:22:35 2014 -0400 + + Fix the closure test in continuous + + This test has the same problem as the mapping-test - it uses + SIGUSR1 without checking the signal mask. Apply the same fix + here. + + gobject/tests/closure.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 367dbdce367fd504804a1256dc393534d6784bfc +Author: Matthias Clasen +AuthorDate: Fri May 30 10:18:36 2014 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 30 10:22:35 2014 -0400 + + Fix the mapping test in continuous + + It turns out that due to a recent gdm change, the inherited + signal mask has SIGUSR1 blocked - which is bad news for + tests using SIGUSR1. Fix the test by explicitly checking the + signal mask before using SIGUSR1. + + tests/mapping-test.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit 79f930f6dc23c05fef7fdcaaeed0df230698453e +Author: Thiago Santos +AuthorDate: Thu May 29 19:13:37 2014 -0300 +Commit: Ryan Lortie +CommitDate: Fri May 30 13:51:16 2014 +0200 + + gconvert: mention that the g_convert len should be in bytes + + Some charsets have each char with more than one byte, make it + clear that + the length should be in bytes + + https://bugzilla.gnome.org/show_bug.cgi?id=730963 + + glib/gconvert.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 1e28df02642237f776f9b4f42bffd8de675af754 +Author: Matthias Clasen +AuthorDate: Wed May 28 06:14:56 2014 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 28 06:16:11 2014 -0400 + + Add more debug spew to the mapping-test + + tests/mapping-test.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit fd9120dc505773faf3ace728c8ad8c503824ee9f +Author: Philip Withnall +AuthorDate: Tue May 27 15:50:00 2014 +0100 +Commit: Philip Withnall +CommitDate: Wed May 28 10:59:38 2014 +0100 + + gvariant: Clarify type and format strings in the docs + + '@' and '&' are only used in format strings as prefixes to type + strings and not to full format strings. + + https://bugzilla.gnome.org/show_bug.cgi?id=729269 + + docs/reference/glib/gvariant-varargs.xml | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit de1c0722b92d101171f7c2ce7eb199727528dff1 +Author: Matthias Clasen +AuthorDate: Tue May 27 22:13:33 2014 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 27 22:13:33 2014 -0400 + + mapping-test: Add debug spew + + This might help figuring out why the test is failing in continuous. + + tests/mapping-test.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 84fd73b2fa098ff63656e7cbe1ef211f948123c2 +Author: Dan Winship +AuthorDate: Tue May 27 09:39:46 2014 -0400 +Commit: Dan Winship +CommitDate: Tue May 27 09:42:50 2014 -0400 + + gio/tests/network-address: fix when no network is available + + GResolver doesn't do full validation of its inputs, so in some of + these tests, the fact that we were getting back + G_RESOLVER_ERROR_NOT_FOUND is because the junk string was getting + passed to an upstream DNS resolver, which returned NXDOMAIN. But if + there's no network on the machine then we'd get + G_RESOLVER_ERROR_INTERNAL instead in that case. + + gio/tests/network-address.c | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) + +commit e93f7be60d6a45ca5ca76fd033be887f10e886a4 +Author: Ryan Lortie +AuthorDate: Mon May 26 17:34:48 2014 +0200 +Commit: Ryan Lortie +CommitDate: Mon May 26 23:01:56 2014 +0200 + + GLib 2.41.0 + + NEWS | 83 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 83 insertions(+) + +commit 6f7dc3a44f966e69a7495cd5af5017ec02b3938c +Author: Ryan Lortie +AuthorDate: Mon May 26 23:01:25 2014 +0200 +Commit: Ryan Lortie +CommitDate: Mon May 26 23:01:56 2014 +0200 + + gio tests: rm xdgconfighome on 'make clean' + + gio/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 61a9142cd0936bd67dcb88db5591e1190caf3188 +Author: Ryan Lortie +AuthorDate: Mon May 26 17:33:57 2014 +0200 +Commit: Ryan Lortie +CommitDate: Mon May 26 17:34:54 2014 +0200 + + Revert "gvariant: Fix confusion between type and format strings in + the docs" + + This reverts commit fca1b83be74c9840037cfee84015fd8460cc33f9. + + The original documentation was correct. + + https://bugzilla.gnome.org/show_bug.cgi?id=729269 + + docs/reference/glib/gvariant-varargs.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d3fd88ddd54dd533b09e8782a8ffc0dc9f6f0571 +Author: Philip Withnall +AuthorDate: Fri May 16 23:08:10 2014 +0100 +Commit: Philip Withnall +CommitDate: Mon May 26 08:39:40 2014 +0100 + + gtestutils: Error out if /dev/null stdin redirection fails + + https://bugzilla.gnome.org/show_bug.cgi?id=730189 + + glib/gtestutils.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 570b27b9acbf6e6f31ab0f9a31a4cce60f4d228a +Author: Evan Nemerson +AuthorDate: Wed May 21 00:27:36 2014 -0700 +Commit: Evan Nemerson +CommitDate: Fri May 23 10:04:06 2014 -0700 + + gio: port annotations from the Vala metadata. + + https://bugzilla.gnome.org/show_bug.cgi?id=730493 + + gio/gaction.c | 2 +- + gio/gactiongroup.c | 9 ++++---- + gio/gapplicationcommandline.c | 2 +- + gio/gcancellable.c | 4 ++-- + gio/gcontenttype.c | 6 +++--- + gio/gdatainputstream.c | 49 + +++++++++++++++++++++--------------------- + gio/gdbusmessage.c | 3 ++- + gio/gdbusobjectmanagerclient.c | 4 ++-- + gio/gfile.c | 24 ++++++++++----------- + gio/gfileenumerator.c | 5 +++-- + gio/gfileinfo.c | 6 +++--- + gio/gicon.c | 4 ++-- + gio/gloadableicon.c | 13 +++++------ + gio/gpollableinputstream.c | 4 ++-- + gio/gpollableutils.c | 3 ++- + gio/gsettingsschema.c | 2 +- + gio/gtlsclientconnection.c | 2 +- + gio/gtlsdatabase.c | 4 +++- + gio/gvolume.c | 4 ++-- + 19 files changed, 79 insertions(+), 71 deletions(-) + +commit e3db9632e7e8a1e4177f503aa9ffa184a991e8a4 +Author: Chun-wei Fan +AuthorDate: Fri May 23 10:14:16 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Fri May 23 10:14:50 2014 +0800 + + config.h.win32.in: Define _WIN32_WINNT Conditionally + + This is done so that _WIN32_WINNT may be overridden in the project + files, + if needed, so that one can access the Vista+ (or so) Windows APIs + easier + by using "preprocessor defines" (or so) in the Visual C++ project + files. + + config.h.win32.in | 2 ++ + 1 file changed, 2 insertions(+) + +commit 922dd548d5697556b76f720c985728d110ac6b9d +Author: Matthias Clasen +AuthorDate: Thu May 22 17:22:56 2014 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 22 17:25:34 2014 -0400 + + Try to fix mapping-test + + The mapping-test is failing under gnome-continuous. I suspect this + is simply due to running many tests in parallel, and mapping-test + being racy. Replace the blind sleep by signals, to avoid the + races. + + tests/mapping-test.c | 46 +++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 39 insertions(+), 7 deletions(-) + +commit 2a27b7252243b0eaceeb9fbc6ecba1b3a3b36905 +Author: Murray Cumming +AuthorDate: Tue Apr 29 13:21:41 2014 +0200 +Commit: Murray Cumming +CommitDate: Thu May 22 12:46:07 2014 +0200 + + GDBusError enum: Remove trailing comma. + + This is helpful to people using the g++ --pedantic option. + + gio/gioenums.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6a8c2685be3992d0aac0c54d12a3fb31dd198624 +Author: Marek Kasik +AuthorDate: Thu May 22 11:00:14 2014 +0200 +Commit: Marek Kasik +CommitDate: Thu May 22 11:00:14 2014 +0200 + + gobject: unref unused class + + If g_type_class_ref() returns a class which is not + a GObjectClass we need to unref it before return in + object_interface_check_properties(). + + https://bugzilla.gnome.org/show_bug.cgi?id=706983 + + gobject/gobject.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit ace7658b28642e8a5b9ffe54838ccb4847b1cc6b +Author: Matthias Clasen +AuthorDate: Wed May 21 07:40:09 2014 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 21 07:41:08 2014 -0400 + + Trivial: fix a guard comment + + The conventional comment for the #endif at the bottom of the + header was not matching the #ifdef at the top in glib-private.h. + Fix that. + + glib/glib-private.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cdb9670dc3448e3f582e04c742f3689d619d066d +Author: Philip Withnall +AuthorDate: Sat May 17 12:08:58 2014 +0100 +Commit: Philip Withnall +CommitDate: Tue May 20 11:03:02 2014 +0100 + + gdbus-tool: Remove dead variables + + Coverity issues: #1159447, #1159446 + + https://bugzilla.gnome.org/show_bug.cgi?id=730295 + + gio/gdbus-tool.c | 8 -------- + 1 file changed, 8 deletions(-) + +commit 03a82ce898ea435efd73a250d989f8dc6249aaf8 +Author: Philip Withnall +AuthorDate: Fri May 16 21:47:24 2014 +0100 +Commit: Philip Withnall +CommitDate: Tue May 20 11:01:38 2014 +0100 + + gthread: Fix use of a local variable after it went out of scope + + This could theoretically cause problems, although in practice we would + have seen them by now (the bug was introduced in 2012). + + Coverity issue: #1159486 + + https://bugzilla.gnome.org/show_bug.cgi?id=730277 + + glib/gthread-posix.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit e1243d11f000e18436b439f5655532801a71aeec +Author: Philip Withnall +AuthorDate: Fri May 16 22:09:29 2014 +0100 +Commit: Philip Withnall +CommitDate: Tue May 20 11:01:37 2014 +0100 + + gsubprocess: Add a missing va_end() call + + Coverity issues: #1214070, #1214069 + + https://bugzilla.gnome.org/show_bug.cgi?id=730278 + + gio/gsubprocess.c | 1 + + gio/gsubprocesslauncher.c | 1 + + 2 files changed, 2 insertions(+) + +commit f4ae0cbf9a464122ed4207a8ee74e424851d9bdf +Author: Chun-wei Fan +AuthorDate: Mon May 19 14:49:39 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Mon May 19 14:49:39 2014 +0800 + + Update config.h.win32.in for Newer Windows + + Make use of if_indextoname() and if_nametoindex() when building + against + Window Vista/Server 2008 or later, as these are provided by the + system. + + This is not turned on by default as we still want to support XP and + Server 2003-turn this on by changing _WIN32_WINNT to 0x600 or + later prior + to compiling GLib. + + https://bugzilla.gnome.org/show_bug.cgi?id=730352 + + config.h.win32.in | 25 +++++++++++++------------ + 1 file changed, 13 insertions(+), 12 deletions(-) + +commit 4844b4bb564b152812ef6bf2ce5c514877ef323e +Author: Marek Černocký +AuthorDate: Sun May 18 08:38:05 2014 +0200 +Commit: Marek Černocký +CommitDate: Sun May 18 08:38:05 2014 +0200 + + Updated Czech translation + + po/cs.po | 470 + ++++++++++++++++++++++++++++----------------------------------- + 1 file changed, 212 insertions(+), 258 deletions(-) + +commit 9c539a86b12430108b3d1951daab117b83e1fb25 +Author: Yosef Or Boczko +AuthorDate: Fri May 16 04:37:21 2014 +0300 +Commit: Yosef Or Boczko +CommitDate: Fri May 16 04:37:21 2014 +0300 + + Updated Hebrew translation + + po/he.po | 1741 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 879 insertions(+), 862 deletions(-) + +commit 7f5cc2c3c5409a6d5e3acab5d6349ae69fb67922 +Author: Philip Withnall +AuthorDate: Thu May 15 12:16:00 2014 +0100 +Commit: Philip Withnall +CommitDate: Thu May 15 14:35:19 2014 +0100 + + gsocket: Add missing preconditions to g_socket_send_message() + + https://bugzilla.gnome.org/show_bug.cgi?id=730190 + + gio/gsocket.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 60e459b196947c9c9aaa6fd14ca682ddf9f7a492 +Author: Philip Withnall +AuthorDate: Thu May 15 10:18:38 2014 +0100 +Commit: Philip Withnall +CommitDate: Thu May 15 14:35:19 2014 +0100 + + gresource-tool: Fix an FD leak in an error path + + Coverity issues: #1214054, #1214055, #1214056 + + gio/gresource-tool.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +commit 46b7217fbf02b679749cf1d042ecc57504a3b97c +Author: Philip Withnall +AuthorDate: Thu May 15 10:15:26 2014 +0100 +Commit: Philip Withnall +CommitDate: Thu May 15 14:35:19 2014 +0100 + + gtestutils: Don’t free unassigned variables in an error path + + If the stream is invalid, msg.nums and msg.strings have not been + assigned to, so don’t free them. + + Coverity issue: #1159505 + + glib/gtestutils.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 4360756c6903491977886f4b4eee0650469d9ea4 +Author: Matthias Clasen +AuthorDate: Mon May 12 23:05:41 2014 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 13 08:08:38 2014 -0400 + + Avoid overeager warning about deprecated properties + + Construct properties are always set during construction. + It makes no sense to warn about this even if the property + is marked as deprecated; the deprecation warning should + only be issues for explicit uses of the property after + construction. + + https://bugzilla.gnome.org/show_bug.cgi?id=730045 + + gobject/gobject.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +commit 4dba2eb48625c7d5f72e4737eff28688332143c6 +Author: Matthias Clasen +AuthorDate: Wed May 7 23:08:50 2014 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 13 08:08:37 2014 -0400 + + Remove some markup from docs + + gobject/gsignal.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c2a828772b30a0c10a8f4b15d7fc841f26b807b8 +Author: Chun-wei Fan +AuthorDate: Tue Mar 18 12:54:10 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Mon May 12 22:14:05 2014 +0800 + + gio/gtestdbus.c: Fix write_config_file() for Windows + + Windows does not like g_unlink() to be called on files whose file + descriptor is still open, so doing that would cause a permission + denied error. Since the fd is not used in that function after + acquiring the temp file, close it earlier before + g_file_set_contents(), so that it can complete successfully. + + This fixes a number of GTK+ tests on Windows. + + https://bugzilla.gnome.org/show_bug.cgi?id=719344 + + gio/gtestdbus.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 54d1751fd824ded1f1437572b5c16e2db4154db5 +Author: Sébastien Wilmet +AuthorDate: Sun May 11 23:41:23 2014 +0200 +Commit: Sébastien Wilmet +CommitDate: Mon May 12 00:25:06 2014 +0200 + + doc: better ordering of GSubprocessLauncher functions + + Take the same order as the header. + + docs/reference/gio/gio-sections.txt | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit 25bd4e79169af27f193d3b7c7b1b3295a7042074 +Author: Daniel Mustieles +AuthorDate: Sat May 10 19:43:59 2014 +0200 +Commit: Daniel Mustieles +CommitDate: Sat May 10 19:43:59 2014 +0200 + + Updated Spanish translation + + po/es.po | 451 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 227 insertions(+), 224 deletions(-) + +commit 20cda557e5766cc34af8efb3a6eb4cfcea149ea7 +Author: Tom Tromey +AuthorDate: Fri Feb 21 19:16:00 2014 +0000 +Commit: Tim Lunn +CommitDate: Sat May 10 19:49:22 2014 +1000 + + gobject.py: Port to gdb 7.7 frame filter API + + https://bugzilla.gnome.org/show_bug.cgi?id=623552 + + gobject/gobject.py | 92 + ++++++++++++++++++++++++++++-------------------------- + 1 file changed, 48 insertions(+), 44 deletions(-) + +commit 430e6fd6ad4ecf68ca110e90a626a60fd5d4eca8 +Author: Sébastien Wilmet +AuthorDate: Mon Apr 21 14:50:53 2014 +0200 +Commit: Sébastien Wilmet +CommitDate: Fri May 9 18:47:42 2014 +0200 + + doc: various improvements + + - GSubprocessLauncher exists since 2.40, not 2.36 + - more logical order for g_markup functions + - fix short description of GMarkup + - GMarkupParser: specify that some parameters are NULL-terminated. + - g_string_new (NULL); is possible. + - other trivial fixes. + + https://bugzilla.gnome.org/show_bug.cgi?id=728983 + + docs/reference/glib/glib-sections.txt | 4 ++-- + gio/giotypes.h | 2 +- + glib/gmarkup.c | 3 ++- + glib/gmarkup.h | 3 ++- + glib/gstring.c | 3 ++- + gobject/gsignal.c | 4 ++-- + 6 files changed, 11 insertions(+), 8 deletions(-) + +commit 7c205ae90d5ee1dc583b20548fcb65a231af48ff +Author: Lukasz Skalski +AuthorDate: Fri May 9 15:06:52 2014 +0200 +Commit: Ryan Lortie +CommitDate: Fri May 9 10:21:22 2014 -0400 + + gio: cleanup gdbusmessage.c file + + * removed passing GError to ensure_input_padding() function + - it was necessary before commit 3e5214c15c2a19b64d74e714 + when we used GData*Streams and GMemoryInputStream with + g_seekable_seek() - now it's useless, + + * removed checking return value of ensure_input_padding() + function - in previous implementation (like above) + g_seekable_seek() could return FALSE - now it's always TRUE, + + * removed passing GError to g_memory_buffer_read_*() functions + and checking returned value - it also has been inherited after + old implementation with g_data_input_stream_read_*() functions + - now it's also useless + + * cleaned up code formatting, + + https://bugzilla.gnome.org/show_bug.cgi?id=729875 + + gio/gdbusmessage.c | 187 + +++++++++++++++++++---------------------------------- + 1 file changed, 67 insertions(+), 120 deletions(-) + +commit 079d20f012127873335fccd174b104b60d9d7f4f +Author: Ryan Lortie +AuthorDate: Thu May 8 16:16:35 2014 -0400 +Commit: Ryan Lortie +CommitDate: Thu May 8 16:19:56 2014 -0400 + + tests: add testcase for {Only,Not}ShowIn + + https://bugzilla.gnome.org/show_bug.cgi?id=729813 + + gio/tests/appinfo.c | 4 +-- + gio/tests/apps.c | 12 +++++++ + gio/tests/desktop-app-info.c | 42 + +++++++++++++++++++--- + .../usr/applications/gcr-prompter.desktop | 3 +- + 4 files changed, 53 insertions(+), 8 deletions(-) + +commit 5a5e16e93c4f11e635918ecdb41681f63fd05a39 +Author: Ryan Lortie +AuthorDate: Thu May 8 08:57:50 2014 -0400 +Commit: Ryan Lortie +CommitDate: Thu May 8 16:19:56 2014 -0400 + + AppInfo: use XDG_CURRENT_DESKTOP for OnlyShowIn + + Expand the functionality of g_desktop_app_info_set_desktop_env() to + include the possibility of passing strings containing ':' characters + (as + some apps, such as gnome-session, are directly passing the value of + XDG_CURRENT_DESKTOP). At the same time, deprecate it, since now + we get + the list from the environment variable for ourselves. + + Modify the checks in g_desktop_app_info_get_show_in() to deal with + multiple items listed in XDG_CURRENT_DESKTOP. For example, if we find + that we have + + XDG_CURRENT_DESKTOP=GNOME-Classic:GNOME + + and a desktop file contains: + + OnlyShowIn=GNOME + + then we will show this file because of the fallback to GNOME. If the + file _also_ contains the line: + + NotShowIn=GNOME-Classic + + Then we will not show it, because GNOME-Classic comes before GNOME in + XDG_CURRENT_DESKTOP. + + https://bugzilla.gnome.org/show_bug.cgi?id=729813 + + gio/gdesktopappinfo.c | 99 + +++++++++++++++++++++++++-------------------------- + gio/gdesktopappinfo.h | 2 +- + 2 files changed, 50 insertions(+), 51 deletions(-) + +commit 880e8e8cb254e8c0c8a4bb62ebb606404818b52b +Author: Ryan Lortie +AuthorDate: Fri Nov 15 14:44:33 2013 -0500 +Commit: Ryan Lortie +CommitDate: Thu May 8 16:19:55 2014 -0400 + + tests: add tests for GDesktopAppInfo Implements= + + https://bugzilla.gnome.org/show_bug.cgi?id=712391 + + gio/tests/apps.c | 7 ++++ + gio/tests/desktop-app-info.c | 39 + +++++++++++++++++++++- + .../desktop-files/usr/applications/cheese.desktop | 1 + + .../desktop-files/usr/applications/eog.desktop | 1 + + .../usr/applications/gnome-contacts.desktop | 1 + + .../usr/applications/gnome-music.desktop | 1 + + 6 files changed, 49 insertions(+), 1 deletion(-) + +commit 0b277192932f7612906186620a369f7445cd5f41 +Author: Ryan Lortie +AuthorDate: Fri Nov 15 14:44:11 2013 -0500 +Commit: Ryan Lortie +CommitDate: Thu May 8 16:19:50 2014 -0400 + + docs: add two missing symbols on GDesktopAppInfo + + https://bugzilla.gnome.org/show_bug.cgi?id=712391 + + docs/reference/gio/gio-sections.txt | 3 +++ + 1 file changed, 3 insertions(+) + +commit 9aaf990960c5182602de01fe046379af7bd9627a +Author: Ryan Lortie +AuthorDate: Fri Nov 15 14:40:37 2013 -0500 +Commit: Ryan Lortie +CommitDate: Thu May 8 16:19:05 2014 -0400 + + Add g_desktop_app_info_get_implementations() + + This provides support for the draft addition of 'Implements=' to + the Desktop + Entry specification. + + https://bugzilla.gnome.org/show_bug.cgi?id=712391 + + gio/gdesktopappinfo.c | 83 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gdesktopappinfo.h | 3 ++ + 2 files changed, 86 insertions(+) + +commit 49f5737f00640c60006159041f6e8c7976330ee4 +Author: Matthias Clasen +AuthorDate: Mon May 5 20:30:35 2014 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 5 20:30:35 2014 -0400 + + Add a testcase for the previous fix + + This testcase tests that short option arguments are + not erroneously added to the remaining argument array + when g_option_context_set_ignore_unknown_options is + called. + https://bugzilla.gnome.org/show_bug.cgi?id=729563 + + glib/tests/option-context.c | 48 + +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 48 insertions(+) + +commit 85606f609363092e8f47db57b05762a0728ec80e +Author: Kjell Ahlstedt +AuthorDate: Mon May 5 14:40:31 2014 +0200 +Commit: Matthias Clasen +CommitDate: Mon May 5 20:29:29 2014 -0400 + + goption: Don't include parsed option values in G_OPTION_REMAINING + + After a call to g_option_context_set_ignore_unknown_options(context, + TRUE), + the values of short options were included in the array returned by a + G_OPTION_REMAINING option. + + https://bugzilla.gnome.org/show_bug.cgi?id=729563 + + glib/goption.c | 1 + + 1 file changed, 1 insertion(+) + +commit 1565a4914494e56275d6ff393b90b8fb1b712708 +Author: Lionel Landwerlin +AuthorDate: Tue Jan 21 19:12:08 2014 +0000 +Commit: Dan Winship +CommitDate: Mon May 5 11:10:09 2014 -0400 + + gio: iostream: use GTask instead of internal pointer + + This fixes an infinite recursion loop when calling + g_io_stream_close_async() on a SoupIOStream. + + https://bugzilla.gnome.org/show_bug.cgi?id=722723 + + gio/giostream.c | 49 +++++++++++++++++++++++++------------------------ + 1 file changed, 25 insertions(+), 24 deletions(-) + +commit 24fdee7a78f9148fce173781128bd3287ca5ede1 +Author: Mathieu Bridon +AuthorDate: Mon May 5 18:30:56 2014 +0800 +Commit: Mathieu Bridon +CommitDate: Mon May 5 18:30:56 2014 +0800 + + Fix some typos in documentation + + glib/genviron.c | 2 +- + gobject/gtype.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 63737df0e82ca1c74e2a622948eb5c0eb209f9d1 +Author: Philip Withnall +AuthorDate: Fri May 2 09:42:06 2014 +0200 +Commit: Philip Withnall +CommitDate: Sun May 4 18:22:09 2014 +0100 + + docs: Add a README.rationale documenting major design decisions + + It will be useful to document the major decisions which affect + the whole + of GLib in one centralised, easily-greppable file, otherwise they will + get lost forever in Bugzilla. + + This file should contain a brief explanation of the decision and its + rationale, plus a link to further discussion (e.g. on a mailing + list or + bug report). + + This contains an initial discussion about use of compiler attributes + in + GLib. + + https://bugzilla.gnome.org/show_bug.cgi?id=113075 + + HACKING | 3 ++- + Makefile.am | 1 + + README.rationale | 10 ++++++++++ + 3 files changed, 13 insertions(+), 1 deletion(-) + +commit 11297fd183b460abfad861cb94f9371fde487ef2 +Author: Philip Withnall +AuthorDate: Thu Nov 28 20:39:56 2013 +0000 +Commit: Philip Withnall +CommitDate: Sun May 4 18:21:20 2014 +0100 + + gstrfuncs: Add missing preconditions to g_str_match_string() + + https://bugzilla.gnome.org/show_bug.cgi?id=113075 + + glib/gstrfuncs.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 81e0a2f362383b827ae8cd092cb909a0c3c6dc04 +Author: Dan Winship +AuthorDate: Sat May 3 17:24:48 2014 -0400 +Commit: Dan Winship +CommitDate: Sat May 3 17:27:44 2014 -0400 + + gio: add a missing property to GDummyTlsConnection + + GDummyTlsConnection didn't implement the "interaction" property, + meaning you'd get warnings if you tried to set it while creating a + GTlsConnection when using the dummy backend. (Of course, trying to + create the GTlsConnection will fail anyway, but it ought to fail + without hitting any g_warnings.) + + gio/gdummytlsbackend.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit b2825257449446313265842920c35262f35d9063 +Author: Pau Iranzo +AuthorDate: Fri May 2 12:41:30 2014 +0200 +Commit: Gil Forcada +CommitDate: Fri May 2 12:41:47 2014 +0200 + + [l10n] Update Catalan translation + + po/ca.po | 2058 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1128 insertions(+), 930 deletions(-) + +commit 361a6eb8561649ce1df1eeb2a624fd473fb02dc5 +Author: Philip Withnall +AuthorDate: Wed Apr 30 16:58:21 2014 +0200 +Commit: Philip Withnall +CommitDate: Thu May 1 15:34:30 2014 +0200 + + docs: Fix some minor typos in the GVariant documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=729269 + + docs/reference/glib/gvariant-varargs.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit fca1b83be74c9840037cfee84015fd8460cc33f9 +Author: Philip Withnall +AuthorDate: Wed Apr 30 16:37:30 2014 +0200 +Commit: Philip Withnall +CommitDate: Wed Apr 30 16:38:43 2014 +0200 + + gvariant: Fix confusion between type and format strings in the docs + + ‘@’ and ‘&’ are only used in format strings, not type strings. + + https://bugzilla.gnome.org/show_bug.cgi?id=729269 + + docs/reference/glib/gvariant-varargs.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 704852ff097f848dcb89ba553431b460938d8d91 +Author: Philip Withnall +AuthorDate: Tue Apr 29 08:47:14 2014 +0100 +Commit: Philip Withnall +CommitDate: Tue Apr 29 10:40:20 2014 +0100 + + gobject: Document that classes/objects/interfaces are zero-filled + + On initialisation, GObject guarantees to zero-fill + class/object/interface structures. Document this so people don’t + spend + forever writing: + my_object->priv->some_member = NULL; + my_object->priv->some_other_member = NULL; + + https://bugzilla.gnome.org/show_bug.cgi?id=729167 + + docs/reference/gobject/tut_howto.xml | 9 ++++++--- + gobject/gtype.c | 11 +++++++++-- + gobject/gtype.h | 7 +++++++ + 3 files changed, 22 insertions(+), 5 deletions(-) + +commit cb3f6f95477a90e4ea828595401d593298dca1bd +Author: Matej Urbančič +AuthorDate: Mon Apr 28 21:47:39 2014 +0200 +Commit: Matej Urbančič +CommitDate: Mon Apr 28 21:47:39 2014 +0200 + + Updated Slovenian translation + + po/sl.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0d51f324a6fe131a8cee5fd51d20e7cfeb76e0db +Author: Matej Urbančič +AuthorDate: Mon Apr 28 21:45:20 2014 +0200 +Commit: Matej Urbančič +CommitDate: Mon Apr 28 21:45:20 2014 +0200 + + Updated Slovenian translation + + po/sl.po | 2048 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1122 insertions(+), 926 deletions(-) + +commit ca123834016de680827ce8175c39f8d85d0877e7 +Author: Matej Urbančič +AuthorDate: Mon Apr 28 21:28:16 2014 +0200 +Commit: Matej Urbančič +CommitDate: Mon Apr 28 21:28:16 2014 +0200 + + Updated Slovenian translation + + po/sl.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4ba23522b1b49f62aaf8d68d230d4373e36e21f6 +Author: Lars Uebernickel +AuthorDate: Mon Apr 28 09:26:32 2014 +0200 +Commit: Lars Uebernickel +CommitDate: Mon Apr 28 09:28:21 2014 +0200 + + gmenuexporter: fix protocol documentation link + + gio/gmenuexporter.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit da69439753da10874ac6f48a6fd92504adf12fa5 +Author: Enrico Nicoletto +AuthorDate: Sun Apr 27 00:19:44 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Sun Apr 27 00:19:44 2014 +0000 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 437 + ++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 220 insertions(+), 217 deletions(-) + +commit 254b8dfcd0138dba835fe5caf535118c74685a3b +Author: Juan Pablo Ugarte +AuthorDate: Fri Apr 25 19:35:58 2014 -0300 +Commit: Juan Pablo Ugarte +CommitDate: Fri Apr 25 20:06:41 2014 -0300 + + Added type check to GPermission public functions. + + gio/gpermission.c | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +commit 956921e51facfab7e7706257ba5a976d011f97a5 +Author: Philip Withnall +AuthorDate: Thu Apr 24 09:26:12 2014 +0100 +Commit: Philip Withnall +CommitDate: Fri Apr 25 09:52:01 2014 +0100 + + gresolver: Ensure GThreadedResolver always sets an error if resolution + fails + + It was previously possible for GThreadedResolver to return an + empty list + and no error in response to a g_resolver_lookup_by_name() call, if it + happened that all the addresses returned by getaddrinfo() could not be + converted from native addresses to GSocketAddresses. + + Fix that by setting a G_RESOLVER_ERROR_NOT_FOUND if the returned + list is + empty. + + https://bugzilla.gnome.org/show_bug.cgi?id=728776 + + gio/gthreadedresolver.c | 19 ++++++++++++++++--- + 1 file changed, 16 insertions(+), 3 deletions(-) + +commit 14b0c15abb228c1e4c5400595cd7c0ff8d86bfbd +Author: Philip Withnall +AuthorDate: Thu Apr 24 09:24:48 2014 +0100 +Commit: Philip Withnall +CommitDate: Fri Apr 25 09:52:01 2014 +0100 + + gresolver: Document that GResolver lists are non-empty on success + + The documentation previously wasn’t clear about whether the + GResolver + methods could return an empty list and no error. On balance, + this seems + like a bad idea, and GResolver should commit to always return a + non-empty list, or an error (which should be + G_RESOLVER_ERROR_NOT_FOUND + if the list would otherwise be empty). + + https://bugzilla.gnome.org/show_bug.cgi?id=728776 + + gio/gresolver.c | 43 ++++++++++++++++++++++++------------------- + 1 file changed, 24 insertions(+), 19 deletions(-) + +commit c565d645e9aab5065d4141bb7d5c290213fab924 +Author: Dan Winship +AuthorDate: Thu Apr 24 12:15:55 2014 -0400 +Commit: Dan Winship +CommitDate: Thu Apr 24 12:18:36 2014 -0400 + + gio: remove an unneeded pragma + + ddf82a25 removed the use of non-literal format strings from + gthreadedresolver.c, but left the "#pragma GCC diagnostic ignored + -Wformat-nonliteral" behind. + + gio/gthreadedresolver.c | 5 ----- + 1 file changed, 5 deletions(-) + +commit 44415953783f5ea880ce90e21a7eaea280f99f1c +Author: Volker Sobek +AuthorDate: Wed Apr 16 23:56:02 2014 +0200 +Commit: Volker Sobek +CommitDate: Thu Apr 24 13:42:37 2014 +0200 + + docs: Remove comment before plural s + + These did show up in the html. Since symbol names are checked for a + trailing plural s when generating the docs, the links stay functional + after removing these comments. + + https://bugzilla.gnome.org/show_bug.cgi?id=728380 + + gio/gappinfo.h | 2 +- + gio/gfile.h | 6 +++--- + gio/gfileattribute.h | 4 ++-- + gio/gfileenumerator.c | 2 +- + gio/gicon.h | 2 +- + gio/gioenums.h | 2 +- + gio/giotypes.h | 4 ++-- + gio/gunixmounts.h | 2 +- + glib/gvariant-core.c | 2 +- + gobject/gclosure.h | 2 +- + gobject/gtype.h | 2 +- + gobject/gvaluecollector.h | 2 +- + 12 files changed, 16 insertions(+), 16 deletions(-) + +commit 99b67614b796976253bbbdda1b4fd06acda01a90 +Author: Philip Withnall +AuthorDate: Wed Nov 6 10:54:06 2013 +0000 +Commit: Philip Withnall +CommitDate: Wed Apr 23 13:02:41 2014 +0100 + + gaction: Minor clarifications in the GAction documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=728350 + + gio/gaction.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 58abc1fc198a8579667ea2164c33964b250a0435 +Author: Antoine Jacoutot +AuthorDate: Wed Apr 16 10:27:09 2014 +0200 +Commit: Antoine Jacoutot +CommitDate: Sun Apr 20 23:16:59 2014 +0200 + + platform_get_argv0: drop unneeded headers for OpenBSD + + And properly set the size of len. + There is also no need for realloc(), g_malloc0 will do just fine. + + https://bugzilla.gnome.org/show_bug.cgi?id=728280 + + glib/goption.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit 9352cdb5f4f7dffa983d411625e874110b81cb35 +Author: Philip Withnall +AuthorDate: Sat Apr 19 18:22:24 2014 +0100 +Commit: Philip Withnall +CommitDate: Sat Apr 19 18:24:04 2014 +0100 + + gfile: More explicitly document the context for GFileProgressCallback + + Be more explicit in the documentation for g_file_copy_async() about + which GMainContext its progress callback is executed in. + + https://bugzilla.gnome.org/show_bug.cgi?id=728565 + + gio/gfile.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 157521a5c43fd78884b77b9216e2e5c30d2a944d +Author: marablack3 +AuthorDate: Fri Apr 18 17:55:02 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Apr 18 17:55:02 2014 +0000 + + Updated Greek translation + + po/el.po | 1690 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 852 insertions(+), 838 deletions(-) + +commit 2b247e158991c9698c7cb53731395de2b69cb086 +Author: Philip Withnall +AuthorDate: Wed Apr 16 19:03:56 2014 +0100 +Commit: Philip Withnall +CommitDate: Wed Apr 16 19:04:25 2014 +0100 + + gio: Document that GSocket is not thread safe + + https://bugzilla.gnome.org/show_bug.cgi?id=726318 + + gio/gsocket.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 7a86a6690a767b48379c9233049a6a9d2a21a86e +Author: Philip Withnall +AuthorDate: Wed Feb 19 18:02:37 2014 +0000 +Commit: Philip Withnall +CommitDate: Wed Apr 16 16:20:46 2014 +0100 + + hmac: Add support for SHA-512 in GHmac + + The block size wasn’t configured before, so calling g_hmac_new() + with + G_CHECKSUM_SHA512 would hit a g_assert_not_reached() and explode. + + Implement G_CHECKSUM_SHA512 and add unit tests for HMACs with SHA-256 + and SHA-512 using the test vectors from RFC 4868. + + https://bugzilla.gnome.org/show_bug.cgi?id=724741 + + glib/ghmac.c | 10 ++- + glib/tests/hmac.c | 177 + ++++++++++++++++++++++++++++++++++++++++++++++++++---- + 2 files changed, 173 insertions(+), 14 deletions(-) + +commit d93458d97d74ef12a08de20c1f27ea1cfa54447f +Author: Ryan Lortie +AuthorDate: Wed Apr 16 07:53:58 2014 -0400 +Commit: Ryan Lortie +CommitDate: Wed Apr 16 07:53:58 2014 -0400 + + Revert "Bug 724590 - GSlice slab_stack corruption" + + This reverts commit c49ec3c8d7a90589308ce1b87a92bc627335ffd2. + + glib/gslice.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit c49ec3c8d7a90589308ce1b87a92bc627335ffd2 +Author: John Ralls +AuthorDate: Mon Feb 17 15:51:38 2014 -0800 +Commit: John Ralls +CommitDate: Tue Apr 15 17:27:16 2014 -0700 + + Bug 724590 - GSlice slab_stack corruption + + Dereference allocation->contention_counters before trying to take the + address of an element. + + glib/gslice.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 9f0ad54c8082656c29e4b567bd4d5f4bd849375c +Author: Volker Sobek +AuthorDate: Tue Apr 15 16:18:59 2014 +0200 +Commit: Volker Sobek +CommitDate: Tue Apr 15 22:19:07 2014 +0200 + + docs: Use markdown links in all .c and .h files + + Commit e7fd3de86d60 already did most of this. + + https://bugzilla.gnome.org/show_bug.cgi?id=728285 + + gio/gdesktopappinfo.h | 2 +- + gio/giotypes.h | 2 +- + gio/gnetworkmonitor.h | 2 +- + gio/gproxy.h | 2 +- + gio/gproxyresolver.h | 2 +- + gio/gtlsbackend.h | 2 +- + gio/gvfs.h | 2 +- + gio/gvolume.h | 4 ++-- + gio/gvolumemonitor.h | 2 +- + glib/deprecated/grel.c | 2 +- + glib/gqueue.h | 2 +- + gobject/gparam.h | 2 +- + gobject/gtype.h | 2 +- + 13 files changed, 14 insertions(+), 14 deletions(-) + +commit afaee8dc6ad72281dd1a51ebae58aaabf0efdb05 +Author: Ryan Lortie +AuthorDate: Tue Apr 15 14:10:39 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 15 14:12:58 2014 -0400 + + gdesktopappinfo: fix a crasher + + During the time that we are expanding the strv, it is not + null-terminated. Use the strv_len variable instead to bound the + search + for duplicates. + + gio/gdesktopappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7916f6d63614b74d81a5527cef2b0e9c7bbb45f2 +Author: Alberto Ruiz +AuthorDate: Tue Apr 15 18:56:26 2014 +0200 +Commit: Alberto Ruiz +CommitDate: Tue Apr 15 18:56:26 2014 +0200 + + gio: fix g-i annotations in g_settings_schema_source_list_schemas() + + gio/gsettingsschema.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 9a5e85c078d5f624d24b24f34cff287a0d6354c5 +Author: Ryan Lortie +AuthorDate: Thu Apr 10 12:00:40 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 15 11:36:39 2014 -0400 + + tests: use mimeapps.list over defaults.list + + defaults.list is deprecated, so use mimeapps.list as a filename + instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=728040 + + gio/tests/mimeapps.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 6fd5a8cdaa0dee2217ebe7411adf3ddb37f1827e +Author: Ryan Lortie +AuthorDate: Wed Apr 9 08:44:18 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 15 11:36:39 2014 -0400 + + GDesktopAppInfo: rewrite content type code + + Redo the code for type-based selection of applications (all, + recommended, default, fallback) based on the new DesktopFileDir + structures that we introduced last cycle. + + At the same time, we expand the functionality to add support for + the new + features of the specification: + + - moving ~/.local/share/applications/mimeapps.list to ~/.config/ + + - per-desktop default applications (via XDG_CURRENT_DESKTOP) + + - sysadmin customisation of defaults (via /etc/xdg/mimeapps.list) + + - deprecation of the old defaults.list, favouring the use of + /usr/share/applications/mimeapps.list (or gnome-mimeapps.list) to + accomplish the same + + We modify the mimeapps testcase to check for mimeapps.list having been + created in XDG_CONFIG_HOME instead of XDG_DATA_HOME. + + The modification is a net reduction of code (due to less duplication + in + bookkeeping). It is also an increase in performance and reduction in + memory consumption (due to simplified data structures). Finally, it + removes the stat-based timestamp checking in favour of the + GFileMonitor-based approach that was already being used in the + implementation of DesktopFileDir (in order to know if we had to rescan + the desktop files themselves). + + https://bugzilla.gnome.org/show_bug.cgi?id=728040 + + gio/gdesktopappinfo.c | 1479 + +++++++++++++++++++++---------------------------- + gio/tests/mimeapps.c | 7 +- + 2 files changed, 632 insertions(+), 854 deletions(-) + +commit caf0f1df1c59b0b7e5f68327e3852817d74609a5 +Author: Ryan Lortie +AuthorDate: Thu Apr 10 22:32:28 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 15 11:36:39 2014 -0400 + + mimetype tests: don't depend on specific behaviour + + We currently assume that setting an application as the default + will take + it to the front of the list of supported applications for a given + type, + but this is not necessarily true. + + Check instead that the application is actually set as default. + + https://bugzilla.gnome.org/show_bug.cgi?id=728040 + + gio/tests/desktop-app-info.c | 51 + +++++++++++--------------------------------- + 1 file changed, 13 insertions(+), 38 deletions(-) + +commit 54047080e963b2d6c3f966340dcd9d788b73ac9c +Author: Ryan Lortie +AuthorDate: Thu Apr 10 11:49:21 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 15 11:36:39 2014 -0400 + + appmonitor test: avoid /usr/share + + Set XDG_DATA_DIRS to make sure we don't use /usr/share from the + appmonitor test. We will soon throw a warning if we find + defaults.list, + so make sure we don't open ourselves up to that if there is one on the + system. + + https://bugzilla.gnome.org/show_bug.cgi?id=728040 + + gio/tests/appmonitor.c | 1 + + 1 file changed, 1 insertion(+) + +commit a366b6f2d5cabcf04bad84ef40589eada2d7d4f6 +Author: Ryan Lortie +AuthorDate: Wed Apr 9 18:59:20 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 15 11:36:38 2014 -0400 + + tests: expand 'apps' tool + + Add modes to output the applications found for get_default_, + get_recommended_, get_fallback_ and get_all_for_type(). + + https://bugzilla.gnome.org/show_bug.cgi?id=728040 + + gio/tests/apps.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 46 insertions(+) + +commit 41761a134df118f64ee0316ad83cb7b7e6035145 +Author: Ryan Lortie +AuthorDate: Wed Apr 9 19:14:37 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 15 11:36:38 2014 -0400 + + mimeapps test: fix defaults vs. recommended + + The desktop file for myapp3 didn't declare support for image/png, but + the testcase expects it to be recommended on the basis of it being the + default app according to defaults.list. + + This will not work in the future -- we will only list apps that + actually + support the filetype in question, unless they've been explicitly added + as associations. + + https://bugzilla.gnome.org/show_bug.cgi?id=728040 + + gio/tests/mimeapps.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 84e9829feea8f455357fb875e77d579b2437de4a +Author: Ryan Lortie +AuthorDate: Wed Apr 9 19:23:27 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 15 11:36:38 2014 -0400 + + desktop-app-info test: use g_assert_strcmp() + + Replace some assert(strcmp()) with g_assert_strcmp() so that we get + better output in case of failures. + + https://bugzilla.gnome.org/show_bug.cgi?id=728040 + + gio/tests/desktop-app-info.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 6c7972a05c2901d67d793be2db64817fec94e8e7 +Author: Antoine Jacoutot +AuthorDate: Thu Apr 10 11:16:44 2014 +0200 +Commit: Antoine Jacoutot +CommitDate: Tue Apr 15 15:12:08 2014 +0200 + + build: also unset LIBS when LDFLAGS is unset + + On OpenBSD, libintl is installed under /usr/local/lib. When configure + checks unset LDFLAGS, LIBS should also be unset otherwise we end + up with + -lintl which cannot be found resulting to the compile check to fail. + + https://bugzilla.gnome.org/show_bug.cgi?id=727939 + + configure.ac | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit 2d96503898745dbf88bec9ff57649b2d3853a851 +Author: Colin Walters +AuthorDate: Sat Apr 12 13:26:29 2014 -0400 +Commit: Colin Walters +CommitDate: Sat Apr 12 13:26:29 2014 -0400 + + gdesktopappinfo: Don't double free sn_id + + Not sure why mclasen added a g_free() in that path, it was just wrong. + We free it correctly later. + + gio/gdesktopappinfo.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +commit af1772b6422967820d27dbb952f3ef42f2287a8f +Author: Colin Walters +AuthorDate: Sat Apr 12 13:21:20 2014 -0400 +Commit: Colin Walters +CommitDate: Sat Apr 12 13:21:20 2014 -0400 + + gdesktopappinfo: Initialize sn_id to NULL + + Otherwise we'll be freeing a random stack pointer. + + gio/gdesktopappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 74ec947079e9159c71b28b98439b8a7ad9c415ee +Author: Antoine Jacoutot +AuthorDate: Thu Apr 10 10:40:16 2014 +0200 +Commit: Antoine Jacoutot +CommitDate: Sat Apr 12 07:56:09 2014 +0200 + + openbsd: remove -pthread + + This is not needed any longer; libpthread is properly included in + shared libs on OpenBSD where -pthread -lpthread mean the same. + + configure.ac | 3 --- + 1 file changed, 3 deletions(-) + +commit 94e5dafbc9ae823590aa3a3f3989b8f5978f1a9d +Author: Matthias Clasen +AuthorDate: Fri Apr 11 15:46:38 2014 -0700 +Commit: Matthias Clasen +CommitDate: Fri Apr 11 19:00:12 2014 -0700 + + Deal with startup notify id being NULL + + The app launch context may just not support startup notification, + in which case, g_app_launch_context_get_startup_notify_id() will + return NULL. + + Failure to take this into account leads to criticals like this: + gnome-session[8489]: GLib-CRITICAL: g_variant_new_take_string: + assertion 'string != NULL' failed + gnome-session[8489]: GLib-CRITICAL: g_variant_new_variant: assertion + 'value != NULL' failed + gnome-session[8489]: GLib-CRITICAL: g_variant_get_type: assertion + 'value != NULL' failed + gnome-session[8489]: GLib-CRITICAL: g_variant_type_is_subtype_of: + assertion 'g_variant_type_check (type)' failed + + https://bugzilla.gnome.org/show_bug.cgi?id=728066 + + gio/gdesktopappinfo.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 6c395244a5db7ac96d0c6279c6e846e99c1dc967 +Author: Emmanuele Bassi +AuthorDate: Mon Mar 10 15:16:44 2014 +0000 +Commit: Emmanuele Bassi +CommitDate: Thu Apr 10 20:00:23 2014 +0100 + + gparam: Add G_PARAM_READWRITE to GParamFlags + + Using a #define for an enumeration value buys us nothing, and it's + mostly historical baggage that makes binding GObject needlessly + complicated. + + https://bugzilla.gnome.org/show_bug.cgi?id=726037 + + gobject/gparam.h | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +commit 9fe9a676a452a73daccdb46246575c4a4c97ee16 +Author: Cosimo Cecchi +AuthorDate: Wed Apr 9 18:07:38 2014 -0700 +Commit: Cosimo Cecchi +CommitDate: Thu Apr 10 09:16:22 2014 -0700 + + gapplication-tool: ensure object paths are valid + + Hyphens are not valid characters for DBus object paths; see the + similar + code in gapplicationimpl-dbus.c + + https://bugzilla.gnome.org/show_bug.cgi?id=727928 + + gio/gapplication-tool.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 59d11879efb2a9a847f614faaa85f67644258f70 +Author: Cosimo Cecchi +AuthorDate: Wed Apr 9 18:07:22 2014 -0700 +Commit: Cosimo Cecchi +CommitDate: Thu Apr 10 09:16:22 2014 -0700 + + gapplication-tool: fix a typo + + This must have never worked. + + https://bugzilla.gnome.org/show_bug.cgi?id=727928 + + gio/gapplication-tool.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit eec507c15987388ae624eada236032e700bf8c50 +Author: Dan Winship +AuthorDate: Wed Apr 9 09:57:46 2014 -0400 +Commit: Dan Winship +CommitDate: Thu Apr 10 10:10:24 2014 -0400 + + g_str_has_prefix: don't call strlen(str) + + There's no reason to check the length of @str in g_str_has_prefix(), + since if it's shorter than @prefix, the strncmp() will fail anyway. + And besides making the function less efficient, it also breaks code + like: + + if (buf->len >=3 && g_str_has_prefix (buf->data, "foo")) + ... + + which really looks like it ought to work whether buf->data is + nul-terminated or not. + + https://bugzilla.gnome.org/show_bug.cgi?id=727890 + + glib/gstrfuncs.c | 11 +---------- + 1 file changed, 1 insertion(+), 10 deletions(-) + +commit 0e44b29340a1e3db140064d7c34070904e3fd8be +Author: Debarshi Ray +AuthorDate: Thu Apr 10 15:26:45 2014 +0200 +Commit: Debarshi Ray +CommitDate: Thu Apr 10 15:27:16 2014 +0200 + + giomodule: Add a NULL guard to extension_point_get_extension_by_name + + ... otherwise a NULL input will lead to a crash in strcmp. + + https://bugzilla.gnome.org/show_bug.cgi?id=727964 + + gio/giomodule.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 2b178c762fbc0706031e9890ba190233e243a602 +Author: Alexandre Rostovtsev +AuthorDate: Mon Sep 2 13:59:18 2013 -0400 +Commit: Alexandre Rostovtsev +CommitDate: Thu Apr 10 01:38:41 2014 -0400 + + gobject: try to link with -Wl,-z,nodelete + + Since the type system does not support reloading its data and assumes + that libgobject remains loaded for the lifetime of the process, we + should link libgobject with a flag indicating that it can't be + unloaded. + + https://bugzilla.gnome.org/show_bug.cgi?id=707298 + + configure.ac | 34 ++++++++++++++++++++++++++++++++++ + gobject/Makefile.am | 1 + + 2 files changed, 35 insertions(+) + +commit 7089cf89672b70711b0ebe10fdd24cd73f6060d5 +Author: Colin Walters +AuthorDate: Thu Apr 3 14:05:45 2014 -0400 +Commit: Colin Walters +CommitDate: Wed Apr 9 20:22:38 2014 -0400 + + g_file_copy: Don't set GError when we intend to ignore errors + + For better or worse, the current g_file_copy intention was to ignore + errors copying metadata, but we still set the GError, while returning + TRUE. + + https://bugzilla.gnome.org/show_bug.cgi?id=727559 + + gio/gfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 76d6fd01dec6fd3ae4cb21f4bdf1ad7ee521a2c2 +Author: Stef Walter +AuthorDate: Wed Apr 9 16:14:11 2014 +0200 +Commit: Stef Walter +CommitDate: Wed Apr 9 20:48:19 2014 +0200 + + gio: Add newer dbus UnknownXxxx and PropertyReadOnly errors + + Add G_DBUS_ERROR codes for: + + * org.freedesktop.DBus.Error.UnknownObject + * org.freedesktop.DBus.Error.UnknownInterface + * org.freedesktop.DBus.Error.UnknownProperty + * org.freedesktop.DBus.Error.PropertyReadOnly + + These were discussed on the dbus mailing list + and introduced in the following libdbus commit: + + 2c34514620c4b79ea4ec71d1db583379138d01ac + + https://bugzilla.gnome.org/show_bug.cgi?id=727900 + + gio/gdbuserror.c | 6 +++++- + gio/gioenums.h | 14 +++++++++++++- + gio/tests/gdbus-error.c | 3 +++ + 3 files changed, 21 insertions(+), 2 deletions(-) + +commit 65f26691733a8c8b48476d899b52cf17c0cfae88 +Author: Dan Winship +AuthorDate: Wed Apr 9 10:39:45 2014 -0400 +Commit: Dan Winship +CommitDate: Wed Apr 9 10:39:45 2014 -0400 + + gtlscertificate: fix certificate list parsing with trailing comments + + g_tls_certificate_list_new_from_file() was supposed to ignore non-PEM + content, but it accidentally required that there not be anything after + the last certificate. Fix that. + + https://bugzilla.gnome.org/show_bug.cgi?id=727692 + + gio/gtlscertificate.c | 25 +++++++++++++++---------- + 1 file changed, 15 insertions(+), 10 deletions(-) + +commit 6c31eeb6bfc56e31f3f62de46c0a694d18dc503e +Author: Daniel Korostil +AuthorDate: Sun Apr 6 16:28:40 2014 +0300 +Commit: Daniel Korostil +CommitDate: Sun Apr 6 16:28:40 2014 +0300 + + Updated Ukrainian translation + + po/uk.po | 6440 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 3650 insertions(+), 2790 deletions(-) + +commit b81c12fcabd0895a861cfd88aa43ac65d8cbea91 +Author: Marek Kasik +AuthorDate: Thu Apr 3 17:35:22 2014 +0200 +Commit: Marek Kasik +CommitDate: Fri Apr 4 16:04:46 2014 +0200 + + GApplication: Don't decrease use_count below 0 + + Place an assert for use_count to be at least 1 + in g_application_release() so we don't decrease + it below 0. + + https://bugzilla.gnome.org/show_bug.cgi?id=727551 + + gio/gapplication.c | 1 + + 1 file changed, 1 insertion(+) + +commit 3cfa44da5a6f07b6416935c0f66d4d49e9398524 +Author: David King +AuthorDate: Fri Apr 4 10:42:56 2014 +0100 +Commit: David King +CommitDate: Fri Apr 4 10:43:29 2014 +0100 + + docs: Fix typo in g_unichar_iswide_cjk() comment + + glib/guniprop.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4a4b0443212c27c5386b1f2ebf35883734915464 +Author: Paolo Borelli +AuthorDate: Thu Apr 3 11:33:33 2014 +0200 +Commit: Paolo Borelli +CommitDate: Thu Apr 3 11:37:32 2014 +0200 + + Add a small note to g_cclosure_marshal_generic docs + + reviewed-by: Emmanuele Bassi + + gobject/gclosure.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 20feb23569e61b061b507e995b5438a35676ae51 +Author: Wim Taymans +AuthorDate: Mon Mar 10 16:27:48 2014 +0100 +Commit: Dan Winship +CommitDate: Wed Apr 2 11:23:29 2014 -0400 + + networkaddress: fix parsing of uri with @ after authority + + Make sure that the @ sign is inside the authority part before + attempting + to parse the userinfo. We do this by checking if the @ sign comes + before + any of the possible authority delimiters. + Add unit test to verify parsing of + ftp://ftp.gnome.org/start?foo=bar@baz + + https://bugzilla.gnome.org/show_bug.cgi?id=726040 + + gio/gnetworkaddress.c | 11 +++++++++-- + gio/tests/network-address.c | 3 ++- + 2 files changed, 11 insertions(+), 3 deletions(-) + +commit 8d037c678d8d3d0c0e4e1ddb22e47306567ed88a +Author: Philip Withnall +AuthorDate: Thu Mar 20 12:32:36 2014 +0000 +Commit: Philip Withnall +CommitDate: Tue Apr 1 19:11:32 2014 +0100 + + build: Include Cocoa/Carbon in Libs.private if targetting Mac OS X + + This allows static linking against GIO on OS X, which would previously + fail due to unresolved symbols from the above two frameworks. + + https://bugzilla.gnome.org/show_bug.cgi?id=668152 + + configure.ac | 14 +++++++++----- + gio-2.0.pc.in | 2 +- + glib-2.0.pc.in | 2 +- + 3 files changed, 11 insertions(+), 7 deletions(-) + +commit 638993f5ac9be841c4fc932ca768d26840dd6be6 +Author: Olivier Crête +AuthorDate: Wed Mar 26 19:45:52 2014 -0400 +Commit: Olivier Crête +CommitDate: Mon Mar 31 12:48:04 2014 -0400 + + networkmonitornetlink: IN6_IS_ADDR_MC_LINKLOCAL is only guaranteed + to work on struct in6_addr* + + https://bugzilla.gnome.org/show_bug.cgi?id=727119 + + gio/gnetworkmonitornetlink.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 3da5d59078b135ee224dae223b7ebb3e873e980a +Author: Dan Winship +AuthorDate: Tue Mar 25 13:52:45 2014 -0400 +Commit: Dan Winship +CommitDate: Sun Mar 30 11:55:47 2014 -0400 + + gio: move Winsock error mapping to g_io_error_from_win32_error() + + Rather than having special code in gsocket.c, handle Winsock errors + along with other Win32 errors in gioerror.c + + Also, reference g_win32_error_message() from the + g_io_error_from_win32_error() docs, and update the + g_win32_error_message() docs to clarify that it works with Winsock + error codes too. + + gio/gioerror.c | 45 ++++++++++++++++++++++++++++++++++++++++++--- + gio/gsocket.c | 30 +++--------------------------- + glib/gwin32.c | 12 ++++++------ + 3 files changed, 51 insertions(+), 36 deletions(-) + +commit befc111c435be63bdc6a2d59204f697d26688369 +Author: Dan Winship +AuthorDate: Fri Mar 21 16:57:56 2014 -0400 +Commit: Dan Winship +CommitDate: Sun Mar 30 11:06:35 2014 -0400 + + gio/tests/socket: Update to check the error code + + Only treat IPv6 as unsupported if the attempt to create a socket + returns G_IO_ERROR_NOT_SUPPORTED: any other error is a bug. + + gio/tests/socket.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 9fc35dbfb6b804c0ead5dd3dba1bbf14773a2f8f +Author: Dan Winship +AuthorDate: Fri Mar 21 16:54:04 2014 -0400 +Commit: Dan Winship +CommitDate: Sun Mar 30 11:06:35 2014 -0400 + + gioerror: map some more values to G_IO_ERROR_NOT_SUPPORTED + + Map EPROTONOSUPPORT, ESOCKTNOSUPPORT, EPFNOSUPPORT and EAFNOSUPPORT to + G_IO_ERROR_NOT_SUPPORTED in g_io_error_from_errno(). (GSocket's + socket_io_error_from_errno() already did this with the corresponding + Winsock errors.) + + Also map EOPNOTSUPP, which on Linux is the same as ENOTSUP, but may + not be on other platforms. + + Also, rewrite the EAGAIN/EWOULDBLOCK section to use the simpler idiom + used by EEXIST/ENOTEMPTY and (now) ENOTSUP/EOPNOTSUPP. + + gio/gioenums.h | 2 +- + gio/gioerror.c | 59 + ++++++++++++++++++++++++++++++++++++++-------------------- + 2 files changed, 40 insertions(+), 21 deletions(-) + +commit 0afd6d22ebb9ecb5e2b426904a91cac7a445cfe6 +Author: Inaki Larranaga Murgoitio +AuthorDate: Sun Mar 30 15:09:59 2014 +0200 +Commit: dooteo +CommitDate: Sun Mar 30 15:09:59 2014 +0200 + + Updated Basque language + + po/eu.po | 2183 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1202 insertions(+), 981 deletions(-) + +commit a0b932ac8bc8a0ee40c32a8f87247baeab78f6ef +Author: Volker Sobek +AuthorDate: Sun Mar 30 01:01:17 2014 +0100 +Commit: Colin Walters +CommitDate: Sun Mar 30 08:37:23 2014 -0400 + + docs: Remove escaping '\' from literals + + commit 35066ed6c6b51317f49069f2564c547aa309f9f1 replaced entities, but + escaped the replacement text also inside literals, which resulted + in the + escaping '\' to also appear in the documentation. + + https://bugzilla.gnome.org/show_bug.cgi?id=727320 + + gio/gappinfo.c | 2 +- + gio/gicon.c | 2 +- + glib/gdatetime.c | 2 +- + glib/gkeyfile.c | 2 +- + glib/grand.c | 2 +- + 5 files changed, 5 insertions(+), 5 deletions(-) + +commit 31694f9ccbb8a142998252288cd04d9738451a7f +Author: Dan Winship +AuthorDate: Tue Mar 25 13:20:13 2014 -0400 +Commit: Dan Winship +CommitDate: Sat Mar 29 12:54:29 2014 -0400 + + Bump version to 2.41.0, add GLIB_VERSION_2_42, etc + + configure.ac | 4 ++-- + docs/reference/glib/glib-sections.txt | 3 +++ + glib/gversionmacros.h | 24 ++++++++++++++++++++++++ + 3 files changed, 29 insertions(+), 2 deletions(-) + +commit 8792609e15394967cab526838b83f90acb401663 +Author: Bastien Nocera +AuthorDate: Sat Mar 22 13:15:45 2014 +0100 +Commit: Bastien Nocera +CommitDate: Thu Mar 27 12:53:00 2014 +0100 + + gio: Add names to idles and timeouts + + This isn't too useful for some of the "return result in idle" + functions, but it's better than nothing. + + https://bugzilla.gnome.org/show_bug.cgi?id=726872 + + gio/gactiongroupexporter.c | 1 + + gio/gappinfo.c | 1 + + gio/gdbus-2.0/codegen/codegen.py | 3 ++- + gio/gdbusconnection.c | 11 +++++++++++ + gio/gdbusnameowning.c | 1 + + gio/gdbusnamewatching.c | 1 + + gio/gdbusprivate.c | 3 +++ + gio/gdbusserver.c | 1 + + gio/gfilemonitor.c | 1 + + gio/gioscheduler.c | 2 ++ + gio/gnetworkmonitorbase.c | 1 + + gio/gsimpleasyncresult.c | 2 ++ + gio/gtask.c | 1 + + 13 files changed, 28 insertions(+), 1 deletion(-) + +commit e1dee398bf6610f4822b5d2491bf545fdc502f91 +Author: Volker Sobek +AuthorDate: Wed Mar 26 23:10:00 2014 +0100 +Commit: Volker Sobek +CommitDate: Thu Mar 27 01:04:12 2014 +0100 + + GNotification: Some small documentation fixes + + Use #GVariant instead of GVariant. + + g_notification_add_button_with_target, + g_notification_set_default_action_and_target: + Replace 'format_string' with 'target_format'. + + g_notification_set_default_action_and_target_value: + Remove paragraph that apparently had been accidentally copied from + g_notification_set_default_action_and_target. + + https://bugzilla.gnome.org/show_bug.cgi?id=727123 + + gio/gnotification.c | 24 ++++++++++-------------- + 1 file changed, 10 insertions(+), 14 deletions(-) + +commit 0c65f7e45a29fa93b0e24488ef881d374d621541 +Author: Olivier Crête +AuthorDate: Fri Mar 14 17:46:38 2014 -0400 +Commit: Olivier Crête +CommitDate: Sun Mar 23 16:17:09 2014 -0400 + + GSocket: ignore timed out state when not relevant + + Do this by separating the timeout check from the other socket checks. + + https://bugzilla.gnome.org/show_bug.cgi?id=726375 + + gio/gsocket.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +commit 1e8c4d2a6e302dde5d8441d5873f4def4f4eb629 +Author: Dan Winship +AuthorDate: Tue Mar 18 09:56:23 2014 -0400 +Commit: Dan Winship +CommitDate: Sun Mar 23 15:00:03 2014 -0400 + + gio: fix two more g_task_return_error_if_cancelled() leaks + + https://bugzilla.gnome.org/show_bug.cgi?id=726611 + + gio/gunixmount.c | 5 ++++- + gio/gunixvolume.c | 5 ++++- + 2 files changed, 8 insertions(+), 2 deletions(-) + +commit 14872d29298b841260a2b5a481e07b0213d506f8 +Author: Olivier Crête +AuthorDate: Mon Mar 17 23:50:30 2014 -0400 +Commit: Dan Winship +CommitDate: Sun Mar 23 15:00:03 2014 -0400 + + socketclient: Fix leak + + https://bugzilla.gnome.org/show_bug.cgi?id=726611 + + gio/gsocketclient.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit cef7d9aeb8be347a5a46b752abfeb6770b241e13 +Author: Petr Kovar +AuthorDate: Sun Mar 23 16:12:50 2014 +0100 +Commit: Petr Kovar +CommitDate: Sun Mar 23 16:12:50 2014 +0100 + + Update Czech translation + + po/cs.po | 2109 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1174 insertions(+), 935 deletions(-) + +commit 8af00dc1b2c1a090c0f2130e29aff659f19aee09 +Author: Gábor Kelemen +AuthorDate: Fri Mar 21 21:34:26 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Fri Mar 21 21:34:26 2014 +0000 + + Updated Hungarian translation + + po/hu.po | 2105 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 1175 insertions(+), 930 deletions(-) + +commit 98aa80b262ec92b5709bc016e5778bf6bc99ca33 +Author: Dan Winship +AuthorDate: Sat Feb 1 18:13:50 2014 +0100 +Commit: Dan Winship +CommitDate: Fri Mar 21 09:36:52 2014 -0400 + + gio/tests/socket: skip IPv6 tests on IPv6-less machines + + https://bugzilla.gnome.org/show_bug.cgi?id=667468 + + gio/tests/socket.c | 32 ++++++++++++++++++++++++++++++++ + 1 file changed, 32 insertions(+) + +commit c67d23aa2f788b2a49801c2ee26a11d56871ef7a +Author: Dan Winship +AuthorDate: Thu Mar 20 09:25:19 2014 -0400 +Commit: Dan Winship +CommitDate: Thu Mar 20 09:31:56 2014 -0400 + + Clarify expectations with error codes like G_IO_ERROR_FAILED + + If an error code enumeration is expected to be extended in the future, + people shouldn't compare explicitly against its generic "FAILED" + value. + + https://bugzilla.gnome.org/show_bug.cgi?id=726775 + + gio/gioenums.h | 16 +++++++++++++++- + gio/gioerror.c | 12 ++++++++---- + glib/gerror.c | 13 ++++++++++++- + 3 files changed, 35 insertions(+), 6 deletions(-) + +commit 9c19f6dfa18c6ad6155d93413610e83822ca5210 +Author: Ask H. Larsen +AuthorDate: Wed Mar 19 21:47:30 2014 +0100 +Commit: Kenneth Nielsen +CommitDate: Wed Mar 19 21:47:30 2014 +0100 + + Updated Danish translation + + po/da.po | 2039 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1121 insertions(+), 918 deletions(-) + +commit b643dcfcede4db2fe067d3d248baf97d12e38ba9 +Author: Мирослав Николић + +AuthorDate: Tue Mar 18 21:13:19 2014 +0100 +Commit: Мирослав Николић + +CommitDate: Tue Mar 18 21:13:19 2014 +0100 + + Updated Serbian translation + + po/sr.po | 2116 + +++++++++++++++++++++++++++++++------------------------- + po/sr@latin.po | 2116 + +++++++++++++++++++++++++++++++------------------------- + 2 files changed, 2356 insertions(+), 1876 deletions(-) + +commit d8c14f1378b9b5362e84220cf52415c316534a9a +Author: Dan Winship +AuthorDate: Mon Mar 17 15:11:31 2014 -0400 +Commit: Dan Winship +CommitDate: Mon Mar 17 17:43:19 2014 -0400 + + gbinding: warn on failed value transformation + + GBinding warned if g_value_transform() returned FALSE, but it didn't + warn if there was no transformation available at all. Fix that and + test it. + + https://bugzilla.gnome.org/show_bug.cgi?id=726574 + + gobject/gbinding.c | 14 +++++++------- + gobject/tests/binding.c | 24 ++++++++++++++++++++++++ + 2 files changed, 31 insertions(+), 7 deletions(-) + +commit 1a8e3074af0382d2d44ce5cfdddfca52be44aaa2 +Author: A S Alam +AuthorDate: Mon Mar 17 16:39:21 2014 -0500 +Commit: A S Alam +CommitDate: Mon Mar 17 16:39:21 2014 -0500 + + update Punjabi Translation 17March2014: Alam + + po/pa.po | 2099 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1166 insertions(+), 933 deletions(-) + +commit 599c669b23a56d605fc69d96a93a198d27b08b28 +Author: Ryan Lortie +AuthorDate: Mon Mar 17 17:18:47 2014 -0400 +Commit: Ryan Lortie +CommitDate: Mon Mar 17 17:18:47 2014 -0400 + + GLib 2.39.92 + + NEWS | 28 ++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 29 insertions(+), 1 deletion(-) + +commit b0630a37b8310907e5389bb17eb62a7412747345 +Author: Claude Paroz +AuthorDate: Sat Mar 15 19:45:27 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Sat Mar 15 19:45:27 2014 +0000 + + Updated French translation + + po/fr.po | 2052 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1123 insertions(+), 929 deletions(-) + +commit 3f119b2fd408fb2e0f4eea07ed9618d2faa749ee +Author: Ryan Lortie +AuthorDate: Tue Mar 11 21:41:36 2014 -0400 +Commit: Ryan Lortie +CommitDate: Fri Mar 14 09:46:39 2014 -0400 + + GSettingsBackend: fix a nasty race condition + + In the event that a GSettings object is being destroyed just as + a change + signal is being delivered, the destroying thread will race with the + dconf worker thread for acquiring the lock on the GSettingsBackend. + + If the signalling thread gets there first then the destroying thread + will block on the lock. The signalling thread adds a reference to the + GSettings object that is being destroyed and releases the lock. The + idea is that this should prevent the GSettings object from being + destroyed and thus maintain its entry in the list. Unfortunately, the + weak reference notify function is already running and as soon as we + release the lock, the list entry is removed. + + The signalling thread crashes. + + This bug is indicative of a serious problem encountered in many + situations where GObject instances are touched from multiple threads. + Ideally, we will move to a place where g_object_ref() is not called at + all on the GSettings object from the dconf worker thread and + instead, a + dispatch will be done without holding a reference (similar to how + GAppInfoMonitor presently works). This would also prevent the + unfortunate case of someone dropping what they assume to be the last + reference on a GSettings object, only to have an already-pending + signal + delivered once they return to the mainloop, crashing their program. + + Making this change for GSettings (with multiple instances per thread, + the possibility of multiple backends and each instance being + interested + in different events) is going to be extremely non-trivial, so it's + not a + change that makes sense at this point in the cycle. + + For now, we can do a relatively small and isolated tweak so that we + never access the list except under a lock. We still perform the bad + pattern of acquiring a ref in a foreign thread which means that + we still + risk delivering a signal to a GSettings object that the user has + assumed + is dead (unless they explicitly disconnect their signal handler). + This + is a problem that we already had, however. + + https://bugzilla.gnome.org/show_bug.cgi?id=710367 + + gio/gsettingsbackend.c | 44 ++++++++++++++++++++------------------------ + 1 file changed, 20 insertions(+), 24 deletions(-) + +commit 698970f1f70f1821df5ac83ffa6d797fa4579881 +Author: Ryan Lortie +AuthorDate: Wed Feb 26 17:09:59 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 14 09:46:39 2014 -0400 + + gsettingsbackend: a minor simplification + + Change the order of the arguments on the (internal) keys_changed + callback in + GSettingsListenerVTable. + + This means that all functions in the table now fit the following + signature: + + void (* f) (GObject *target, + GSettingsBackend *backend, + const gchar *name_or_path, + gpointer origin_tag, + const gchar * const *names); + + allowing the possibility of arguments ignored at the end. + + This allows us to simplify our dispatch-to-thread code in + GSettingsBackend, + making it a bit less generic. + + So far, this should be a straight refactor. + + https://bugzilla.gnome.org/show_bug.cgi?id=710367 + + gio/gdelayedsettingsbackend.c | 4 +-- + gio/gsettings.c | 4 +-- + gio/gsettingsbackend.c | 74 + ++++++++++++++---------------------------- + gio/gsettingsbackendinternal.h | 4 +-- + 4 files changed, 31 insertions(+), 55 deletions(-) + +commit 62206576c34d4ea10d43324144db44970c99dd97 +Author: Chun-wei Fan +AuthorDate: Wed Mar 12 17:26:45 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Mar 12 17:26:45 2014 +0800 + + Update config.h.win32.in + + Make the entries of config.h.win32.in match those that are being + checked + in config.h.in. + + config.h.win32.in | 36 ++++++++++++++++-------------------- + 1 file changed, 16 insertions(+), 20 deletions(-) + +commit bb43d78aff72d406e64a47d2592919c58152aba3 +Author: Duarte Loreto +AuthorDate: Wed Mar 12 02:10:55 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Wed Mar 12 02:10:55 2014 +0000 + + Updated Portuguese translation + + po/pt.po | 2040 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1121 insertions(+), 919 deletions(-) + +commit ffe4e94e3afa16c4e28d6e299f68d8a7ca408b8c +Author: Ryan Lortie +AuthorDate: Tue Mar 11 12:19:19 2014 -0400 +Commit: Ryan Lortie +CommitDate: Tue Mar 11 21:28:58 2014 -0400 + + GUnixVolume: implement _finish functions + + The _finish functions for GUnixVolume _mount and _eject functions were + never implemented, having been simply stubbed out as 'return TRUE;'. + + Implement them. + + https://bugzilla.gnome.org/show_bug.cgi?id=724916 + + gio/gunixvolume.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 62fa9c578f4ee3f2ca5127961a4609596a4bdaee +Author: Ryan Lortie +AuthorDate: Sun Mar 2 21:24:14 2014 -0500 +Commit: Ryan Lortie +CommitDate: Tue Mar 11 21:28:58 2014 -0400 + + GUnixVolume: port to GSubprocess + + Do the same as we just did for GUnixMount, for GUnixVolume too. + + https://bugzilla.gnome.org/show_bug.cgi?id=724916 + + gio/gunixvolume.c | 174 + ++++++++++++------------------------------------------ + 1 file changed, 37 insertions(+), 137 deletions(-) + +commit 64ec757d058dae045e275577da8f14f463cc7c44 +Author: Ryan Lortie +AuthorDate: Sun Mar 2 17:39:11 2014 -0500 +Commit: Ryan Lortie +CommitDate: Tue Mar 11 21:28:58 2014 -0400 + + GUnixMount: port unmount to GSubprocess + + The existing code is buggy and now that we have GSubprocess, we + should just use + it instead, allowing for some substantial reduction in complexity. + + https://bugzilla.gnome.org/show_bug.cgi?id=724916 + + gio/gunixmount.c | 158 + +++++++++++-------------------------------------------- + 1 file changed, 32 insertions(+), 126 deletions(-) + +commit cee80dc8c4a1707f8a2e5540540d220f9ca89de2 +Author: Yuri Myasoedov +AuthorDate: Tue Mar 11 21:21:57 2014 +0400 +Commit: Yuri Myasoedov +CommitDate: Tue Mar 11 21:21:57 2014 +0400 + + Updated Russian translation + + po/ru.po | 2957 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1624 insertions(+), 1333 deletions(-) + +commit 8c78fb827b51aa6e48fa20bac3f1ede4c699dd43 +Author: Lars Uebernickel +AuthorDate: Mon Mar 10 19:46:23 2014 +0100 +Commit: Lars Uebernickel +CommitDate: Tue Mar 11 11:47:57 2014 +0100 + + glocalfileinfo: don't special-case directory icons + + As of e6af432, g_content_type_get_symbolic_icon() returns non-symbolic + fallbacks. Thus, we can't append another symbolic icon to the + fallbacks. + + The special case was a bit of a hack anyway. It was only applied to + themed icons and there was no generic fallback for mime types that are + not folders. + + https://bugzilla.gnome.org/show_bug.cgi?id=726046 + + gio/glocalfileinfo.c | 10 ++-------- + 1 file changed, 2 insertions(+), 8 deletions(-) + +commit 25f36d8e5efb1312bc684a28158ecfba2dd2ace0 +Author: David King +AuthorDate: Mon Mar 10 19:16:28 2014 +0000 +Commit: David King +CommitDate: Mon Mar 10 19:16:28 2014 +0000 + + Add g_application_command_line_get_options_dict() to docs + + docs/reference/gio/gio-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit a9ac71b50361f035163b7611e06d5b470467d125 +Author: Chao-Hsiung Liao +AuthorDate: Sun Mar 9 11:39:30 2014 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Sun Mar 9 11:39:30 2014 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 1759 + +++++++++++++++++++++++++++++------------------------------ + po/zh_TW.po | 1759 + +++++++++++++++++++++++++++++------------------------------ + 2 files changed, 1736 insertions(+), 1782 deletions(-) + +commit 012011538f4513569f92e322c4377efa2cb64378 +Author: Sebastian Dröge +AuthorDate: Sun Feb 9 23:08:21 2014 +0100 +Commit: Ryan Lortie +CommitDate: Sat Mar 8 09:01:52 2014 -0500 + + gtype – Mark _get_instance_private() function as G_GNUC_UNUSED + + clang likes to complain about it being unused. + + https://bugzilla.gnome.org/show_bug.cgi?id=723899 + + gobject/gtype.h | 1 + + 1 file changed, 1 insertion(+) + +commit 1a736f5f51d19904ab82d684674d003b51364c32 +Author: Rūdolfs Mazurs +AuthorDate: Sat Mar 8 15:58:53 2014 +0200 +Commit: Rūdolfs Mazurs +CommitDate: Sat Mar 8 15:58:53 2014 +0200 + + Updated Latvian translation + + po/lv.po | 2101 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1168 insertions(+), 933 deletions(-) + +commit 0fa3a8dd602fba7149825ec3c030d9ac9e70dd42 +Author: Wylmer Wang +AuthorDate: Sat Mar 8 12:26:07 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Sat Mar 8 12:26:07 2014 +0000 + + Updated Chinese (China) translation + + po/zh_CN.po | 1709 + ++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 862 insertions(+), 847 deletions(-) + +commit 66e2ffe97869e13562b13c51d5dbd3ea1a89bd51 +Author: Ryan Lortie +AuthorDate: Fri Mar 7 07:41:50 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 7 07:47:14 2014 -0500 + + gio tests: add codegen to BUILT_SOURCES + + We need to have these in BUILT_SOURCES so that 'make' knows to + generate them + before attempting to compile other .c files in the same directory + (since some + of these files include the header). + + Should fix up remaining issues about partial versions of this + file being + included under parallel builds. + + https://bugzilla.gnome.org/show_bug.cgi?id=725891 + + gio/tests/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 7a6dfd75d66d274020805b6c770ba683900a3402 +Author: Matthias Clasen +AuthorDate: Fri Mar 7 06:10:36 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Mar 7 06:10:36 2014 -0500 + + GObject: Remove more leftover markup from headers + + gobject/gbinding.h | 2 +- + gobject/gobject.h | 10 +++++----- + gobject/gparam.h | 8 ++++---- + gobject/gtypemodule.h | 2 +- + gobject/gtypeplugin.h | 5 ++--- + 5 files changed, 13 insertions(+), 14 deletions(-) + +commit fdd7ed94fe7d7427b962c5c0faa66f68b18a3fc1 +Author: Changwoo Ryu +AuthorDate: Fri Mar 7 02:02:27 2014 +0900 +Commit: Changwoo Ryu +CommitDate: Fri Mar 7 02:02:27 2014 +0900 + + Updated Korean translation + + po/ko.po | 2035 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1109 insertions(+), 926 deletions(-) + +commit d41dad89681837498202743cd8ee63e62a024f4a +Author: Kjartan Maraas +AuthorDate: Wed Mar 5 19:24:18 2014 +0100 +Commit: Kjartan Maraas +CommitDate: Wed Mar 5 19:24:18 2014 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 61 + ++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 30 insertions(+), 31 deletions(-) + +commit b22f02a94bc4449f1f7741a73e8d4c899b69d627 +Author: Giovanni Campagna +AuthorDate: Tue Mar 4 15:30:12 2014 +0100 +Commit: Giovanni Campagna +CommitDate: Wed Mar 5 17:14:14 2014 +0100 + + Unskip GVariantDict + + There is no reason to (skip) GVariantDict, it's a boxed type + and perfectly usable from gobject-introspection. + + https://bugzilla.gnome.org/show_bug.cgi?id=725656 + + glib/gvariant.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c9cda16a4f607bf9b6498051d2b83aad99e391e4 +Author: Ryan Lortie +AuthorDate: Wed Mar 5 09:04:00 2014 -0500 +Commit: Ryan Lortie +CommitDate: Wed Mar 5 09:05:42 2014 -0500 + + cond test: remove alarm() usage + + This means that the test can't build on Windows (and we do want + it there). + + This will be properly resolved with bug 725266, but let's not + block the + build before then. + + https://bugzilla.gnome.org/show_bug.cgi?id=724859 + + glib/tests/cond.c | 5 ----- + 1 file changed, 5 deletions(-) + +commit fd8c1a306725ed7f877c0ec6d5c27f5436c5941f +Author: Matthias Clasen +AuthorDate: Tue Mar 4 20:20:52 2014 -0500 +Commit: Matthias Clasen +CommitDate: Tue Mar 4 20:20:52 2014 -0500 + + Work around gtk-doc problems + + Returns shall never be at the beginning of a line. + + gio/gsubprocess.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2b11af4f1f336f8e7fda26045fe76375176c8a17 +Author: Ryan Lortie +AuthorDate: Tue Mar 4 09:08:24 2014 -0500 +Commit: Ryan Lortie +CommitDate: Tue Mar 4 09:08:24 2014 -0500 + + gsubprocess: test environment a bit more + + Add a test for GSubprocess to test setting, unsetting and inheritance + of + environment variables. Use communicate() to give it a bit more of a + workout as well. + + https://bugzilla.gnome.org/show_bug.cgi?id=725651 + + gio/tests/gsubprocess-testprog.c | 18 ++++++++++++++++++ + gio/tests/gsubprocess.c | 35 +++++++++++++++++++++++++++++++++++ + 2 files changed, 53 insertions(+) + +commit e767204e0e8108df66893e23209b22b041be893d +Author: Ryan Lortie +AuthorDate: Tue Mar 4 08:55:00 2014 -0500 +Commit: Ryan Lortie +CommitDate: Tue Mar 4 08:55:00 2014 -0500 + + GSubprocessLauncher: don't get empty environment + + Use g_get_environ() to get the environment variables with their values + instead of g_listenv() which only lists off the keys. + + https://bugzilla.gnome.org/show_bug.cgi?id=725651 + + gio/gsubprocesslauncher.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9da88a12c52f122e1e2b8faaed6c95ec1bcef104 +Author: Ryan Lortie +AuthorDate: Mon Mar 3 21:25:16 2014 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 3 21:26:24 2014 -0500 + + gsubprocess: test empty splices + + Make sure we handle the case that our splice returns no data properly. + + https://bugzilla.gnome.org/show_bug.cgi?id=724916 + + gio/tests/gsubprocess.c | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +commit 9f71965becd919a736cb57bbd3501b22e6341fa7 +Author: Ryan Lortie +AuthorDate: Sun Mar 2 21:01:12 2014 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 3 21:26:24 2014 -0500 + + gsubprocess: fix communicate() with empty buffers + + On the splice for stdout or stderr completing, GSubprocess calls + _slice_finish() to collect the result. + + We assume that a zero return value here means failure, but in + fact this + function returns a gssize -- the number of bytes transferred, or + -1 for + an error. + + This causes GSubprocess to mistakenly think that it has an error + when it + actually just has an empty buffer (as would be the case when + collecting + stderr from a successful command). + + Check for -1 instead of FALSE to detect the error. + + https://bugzilla.gnome.org/show_bug.cgi?id=724916 + + gio/gsubprocess.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit de142c0c5ad9a35e704f1fc9eeeaed3684a30adb +Author: Ryan Lortie +AuthorDate: Sun Mar 2 22:18:14 2014 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 3 16:03:00 2014 -0500 + + GLib 2.39.91 + + NEWS | 33 +++++++++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +commit 5d5ea495b5dca3965d60556300151c75a44c5653 +Author: Ryan Lortie +AuthorDate: Sun Mar 2 09:38:51 2014 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 3 16:01:27 2014 -0500 + + desktopappinfo: add Exec to searchable keys + + Add the basename from the first component of the Exec line to the + list of + strings to search for via g_desktop_app_info_search(). + + We treat Exec as a fairly strong match -- just below the visible name. + + Add a testcase to make sure everything is working OK. + + https://bugzilla.gnome.org/show_bug.cgi?id=725023 + + gio/gdesktopappinfo.c | 35 + +++++++++++++++++----- + gio/tests/desktop-app-info.c | 9 ++++++ + .../desktop-files/usr/applications/eog.desktop | 2 +- + 3 files changed, 38 insertions(+), 8 deletions(-) + +commit 9ecc859f95d3a2f3faf918c96ca21a447dd33b6a +Author: Theppitak Karoonboonyanan +AuthorDate: Mon Mar 3 17:27:09 2014 +0700 +Commit: Theppitak Karoonboonyanan +CommitDate: Mon Mar 3 17:27:09 2014 +0700 + + Updated Thai translation + + po/th.po | 552 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 282 insertions(+), 270 deletions(-) + +commit 79caa3a7e151897b062f82251eec207bc1514ff3 +Author: Matthias Clasen +AuthorDate: Sun Mar 2 19:10:00 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sun Mar 2 19:10:00 2014 -0500 + + Add a few tests for G_MARKUP_TREAT_CDATA_AS_TEXT + + Related to + https://bugzilla.gnome.org/show_bug.cgi?id=725433 + + glib/tests/Makefile.am | 9 ++++++- + glib/tests/markups/valid-16.cdata-as-text | 42 + +++++++++++++++++++++++++++++++ + glib/tests/markups/valid-16.expected | 42 + +++++++++++++++++++++++++++++++ + glib/tests/markups/valid-16.gmarkup | 10 ++++++++ + glib/tests/markups/valid-8.cdata-as-text | 5 ++++ + 5 files changed, 107 insertions(+), 1 deletion(-) + +commit b93a13bb796eeb30a45bcdca9a760a9ef4c47a2e +Author: Matthias Clasen +AuthorDate: Sun Mar 2 19:02:23 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sun Mar 2 19:03:15 2014 -0500 + + Add a way to test different markup parser flags + + For now, we are mainly interested in G_MARKUP_TREAT_CDATA_AS_TEXT. + This commit makes markup-parse look for expected output files with + the extension .cdata-as-text in addition to .expected, and compares + the output of parsing with G_MARKUP_TREAT_CDATA_AS_TEXT against + them. markup-parse --cdata-as-text foo.gmarkup can be used to produce + such expected output. + + glib/tests/markup-parse.c | 81 + +++++++++++++++++++++++++++++++++-------------- + 1 file changed, 57 insertions(+), 24 deletions(-) + +commit 49cc207e35ef6b6ce7f4954a4c067ab43145f6bf +Author: Matthias Clasen +AuthorDate: Sun Mar 2 18:20:37 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sun Mar 2 18:23:43 2014 -0500 + + docs: Ditch more markup + + Some markup was hiding in docs in headers. Drop it there, too. + + gio/gdbusconnection.h | 56 +++++++++--------- + gio/gioenums.h | 15 +++-- + gio/gsettings.h | 2 +- + gio/gvolume.h | 13 ++--- + glib/gbacktrace.h | 2 +- + glib/gmarkup.h | 4 +- + glib/goption.h | 157 + +++++++++++++++++++++----------------------------- + glib/gspawn.h | 91 ++++++++++++++--------------- + gobject/gsignal.h | 5 +- + gobject/gtype.h | 6 +- + gobject/gtypeplugin.h | 8 +-- + gobject/gvalue.h | 7 +-- + 12 files changed, 164 insertions(+), 202 deletions(-) + +commit ad4d81418ecdaf53950de117710be127d53169da +Author: Piotr Drąg +AuthorDate: Sun Mar 2 19:24:01 2014 +0100 +Commit: Piotr Drąg +CommitDate: Sun Mar 2 19:24:01 2014 +0100 + + Updated Polish translation + + po/pl.po | 2052 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1123 insertions(+), 929 deletions(-) + +commit fdf14e9e6cbd2e373988d7b9e913788a58c63388 +Author: Philip Withnall +AuthorDate: Wed Feb 19 18:03:37 2014 +0000 +Commit: Philip Withnall +CommitDate: Mon Feb 24 16:38:08 2014 +0000 + + hmac: Make unit test const-correct + + https://bugzilla.gnome.org/show_bug.cgi?id=724741 + + glib/tests/hmac.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 393503ba5bdc7c09cd46b716aaf3d2c63a6c7f9c +Author: Ryan Lortie +AuthorDate: Sat Feb 8 12:23:46 2014 +0000 +Commit: Ryan Lortie +CommitDate: Mon Feb 24 09:28:43 2014 -0500 + + gmain: simplify g_main_context_find_source_by_id() + + Since we now keep a hashtable of sources, we can implement this + function + without iteration. + + https://bugzilla.gnome.org/show_bug.cgi?id=724839 + + glib/gmain.c | 27 ++++++++++----------------- + 1 file changed, 10 insertions(+), 17 deletions(-) + +commit 9e81709012f27eebe336f40f948e9493c87fc75b +Author: Ryan Lortie +AuthorDate: Sat Feb 8 12:17:10 2014 +0000 +Commit: Ryan Lortie +CommitDate: Mon Feb 24 09:28:43 2014 -0500 + + gmain: Simplify source id tracking + + Simplify our tracking of issued source id integers and fix some bugs. + + Previously the source's id was remove from the 'used' table from + source_remove_from_context() which was also called if the source + priority was changed (in which case it would never be added back + to the + table). The source id could be reissued in that case. + + In the new approach, we just always keep a hash table of sources, by + source id. This simplifies the logic and will also allow us to + improve + performance of g_main_context_find_source_by_id() which is called + in some + fairly common cases, such as g_source_remove(). These improvements + will be in + the following commits. + + https://bugzilla.gnome.org/show_bug.cgi?id=724839 + + glib/gmain.c | 77 + ++++++++++++++---------------------------------------------- + 1 file changed, 18 insertions(+), 59 deletions(-) + +commit e7bde4acf4499d353780b696435e1a43dee66c54 +Author: Matthias Clasen +AuthorDate: Sun Feb 23 12:03:13 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 23 12:11:59 2014 -0500 + + Test content type icons more thoroughly + + Check we actually get the right icon names, and check + that symbolic icons fall back to non-symbolic ones. + + gio/tests/contenttype.c | 71 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 71 insertions(+) + +commit e6af432b39ac9e0123387e5a993737073dce9153 +Author: John Lindgren +AuthorDate: Sun Feb 23 00:52:31 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 23 12:11:59 2014 -0500 + + Add non-symbolic fallback icons in g_content_type_get_symbolic_icon(). + + This makes the behavior consistent with + e.g. g_volume_get_symbolic_icon(). + + https://bugzilla.gnome.org/show_bug.cgi?id=724994 + + gio/gcontenttype.c | 44 +++++++++++++++++++------------------------- + 1 file changed, 19 insertions(+), 25 deletions(-) + +commit 356fe2cec65ad5b531ff08c78e5c24f37017bb83 +Author: Ryan Lortie +AuthorDate: Sun Feb 23 01:11:50 2014 -0500 +Commit: Ryan Lortie +CommitDate: Sun Feb 23 01:14:27 2014 -0500 + + asyncqueue: fix timeout math on 32bit systems + + 88182d375e13ae6519a288d5295220c83ca27e73 caught this issue in + g_async_queue_timed_pop() but failed to fix the same bug in the + _unlocked() + variant. + + This is only a problem on 32bit systems. On 64bit systems, the tv_sec + in a timeval is already 64 bits, so no overflow occurs. + + https://bugzilla.gnome.org/show_bug.cgi?id=722604 + + glib/gasyncqueue.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit 4af9b8e9cb43cbcb1f889b74b85111325aab57ba +Author: Ryan Lortie +AuthorDate: Sun Feb 23 00:47:29 2014 -0500 +Commit: Ryan Lortie +CommitDate: Sun Feb 23 00:47:29 2014 -0500 + + mappedfile test: permit ENODEV on /dev/null + + mmap() on /dev/null returns ENODEV on old Linux versions and also on + Hurd, so accept that in the testcase. + + https://bugzilla.gnome.org/show_bug.cgi?id=722360 + + glib/tests/mappedfile.c | 1 + + 1 file changed, 1 insertion(+) + +commit 4825e819b2ca59409b93f4d6f0f742d630626887 +Author: Chun-wei Fan +AuthorDate: Thu Feb 20 08:47:54 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Sun Feb 23 11:48:06 2014 +0800 + + Fix build of gio/gapplication.c on Visual C++ + + Visual C++ is quite zealous about checking against the types used + in the + initializing of array of structures, even up to Visual C++ 2013. + Fix this + by splitting up the initializing steps. + + https://bugzilla.gnome.org/show_bug.cgi?id=724609 + + gio/gapplication.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 8da795de4f04dad35029a36c155d0b299d739840 +Author: Ryan Lortie +AuthorDate: Thu Feb 13 17:07:07 2014 -0500 +Commit: Ryan Lortie +CommitDate: Sat Feb 22 10:25:42 2014 -0500 + + gsocket: use check/prepare only on win32 + + There is no longer any code left in the check/prepare functions + on UNIX, + so put %NULL in the GSourceFuncs vtable. + + This also allows us to simplify some logic. + + https://bugzilla.gnome.org/show_bug.cgi?id=724707 + + gio/gsocket.c | 27 +++++++++++++-------------- + 1 file changed, 13 insertions(+), 14 deletions(-) + +commit e8f26efe0d0ddf64b4be45e61917039b98de83bf +Author: Ryan Lortie +AuthorDate: Thu Feb 13 16:37:49 2014 -0500 +Commit: Ryan Lortie +CommitDate: Sat Feb 22 10:25:42 2014 -0500 + + gsocket: use _add_unix_fd() instead of _add_poll() + + Use g_source_add_unix_fd() on UNIX instead of using a GPollFD. + + https://bugzilla.gnome.org/show_bug.cgi?id=724707 + + gio/gsocket.c | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +commit 04aee2d9201551810c2f9345b5b64ed7bf4e910e +Author: Ryan Lortie +AuthorDate: Thu Feb 13 16:59:28 2014 -0500 +Commit: Ryan Lortie +CommitDate: Sat Feb 22 10:25:42 2014 -0500 + + gsocket: make use of g_source_set_ready_time() + + Drop our own hand-rolled version of the same functionality. + + https://bugzilla.gnome.org/show_bug.cgi?id=724707 + + gio/gsocket.c | 39 ++++++++++++--------------------------- + 1 file changed, 12 insertions(+), 27 deletions(-) + +commit 12d65f250987f6bea25ad38acd7c26b3f47d0ab6 +Author: Ryan Lortie +AuthorDate: Thu Feb 20 19:05:30 2014 -0500 +Commit: Ryan Lortie +CommitDate: Sat Feb 22 10:25:06 2014 -0500 + + GSource: mark some API as "implementation only" + + Clarify that _add_poll() _remove_poll() _add_unix_fd(), + _modify_unix_fd(), _remove_unix_fd(), _query_unix_fd(), + _set_ready_time(), _add_child_source() and _remove_child_source() + are only + intended to be used by the implementation of a particular GSource -- + not its + consumers. + + https://bugzilla.gnome.org/show_bug.cgi?id=724707 + + glib/gmain.c | 27 +++++++++++++++++++++++++++ + 1 file changed, 27 insertions(+) + +commit 1f7100506a51584e66930851c5243fd2eaee5c35 +Author: Ryan Lortie +AuthorDate: Thu Feb 13 16:58:34 2014 -0500 +Commit: Ryan Lortie +CommitDate: Sat Feb 22 10:24:19 2014 -0500 + + gsocket: don't abuse GPollFD.revents field + + We are reusing the GPollFD.revents field of the source to store a + temporary value. Use a local variable for that instead. + + This is a refactor to make the next commit easier to understand. + + https://bugzilla.gnome.org/show_bug.cgi?id=724707 + + gio/gsocket.c | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +commit ff96f88e172d504b5aef2a852880e21341809e1f +Author: Ryan Lortie +AuthorDate: Thu Feb 13 16:34:29 2014 -0500 +Commit: Ryan Lortie +CommitDate: Sat Feb 22 10:24:19 2014 -0500 + + gsocket: use cancellable child source + + Now that GCancellable's GSource is based on _set_ready_time() + instead of + an fd, we should use it as a child source, instead of forcing the + creation of the fd and adding it as a poll. + + https://bugzilla.gnome.org/show_bug.cgi?id=724707 + + gio/gsocket.c | 22 +++++++--------------- + 1 file changed, 7 insertions(+), 15 deletions(-) + +commit d8263dd7930fddddc4b8158e720ce0387d445af7 +Author: Ryan Lortie +AuthorDate: Thu Feb 13 16:16:27 2014 -0500 +Commit: Ryan Lortie +CommitDate: Sat Feb 22 10:24:19 2014 -0500 + + gsocket: trivial typo fix + + https://bugzilla.gnome.org/show_bug.cgi?id=724707 + + gio/gsocket.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6147d15ea256ff0aabf11fb854ef07cf0e0e3a62 +Author: Ryan Lortie +AuthorDate: Sat Feb 22 09:22:27 2014 -0500 +Commit: Ryan Lortie +CommitDate: Sat Feb 22 10:23:40 2014 -0500 + + gmain: repeat preconditions for emphasis + + g_main_context_acquire() mentions that you must have called it before + you make any calls to _prepare(), _query(), _check() or _dispatch(). + + For emphasis, add a note on each of those functions pointing back + to the + fact that you must have called _acquire() before using them. + + glib/gmain.c | 26 +++++++++++++++++++------- + 1 file changed, 19 insertions(+), 7 deletions(-) + +commit c0aa150cb0d362224480240b2db8ff214717bdd1 +Author: Ryan Lortie +AuthorDate: Fri Feb 21 16:25:09 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Feb 21 16:42:21 2014 -0500 + + g_main_context_wait: add a critical to detect use + + Due to its unusual interface, I suspect that nobody is using + g_main_context_wait() but there is no way to know. + + Add a critical notice that will be displayed if anyone calls the + function, asking them to file a bug with us. + + We'll let this go out with the 2.40 release and see if we get + a response + before we proceed with actually breaking the functionality. + + glib/gmain.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 5103c5d643f7e7de7983619204a25c3c774478e8 +Author: Ryan Lortie +AuthorDate: Fri Feb 21 16:40:16 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Feb 21 16:42:21 2014 -0500 + + GCond: check result of pthread_condattr_setclock() + + Make sure this call succeeds, aborting if it doesn't + + This will prevent people from having to waste time chasing down + the problems + that would otherwise be caused by this silent failure. + + glib/gthread-posix.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 03a43c290e470c67015d01237c5d81ea81a7b129 +Author: Ryan Lortie +AuthorDate: Fri Feb 21 10:20:11 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Feb 21 16:42:21 2014 -0500 + + gmain: abort if monotonic time is unsupported + + We now depend on CLOCK_MONOTONIC, but it's possible that people may + attempt to run GLib on systems where it isn't supported at runtime. + + Check the return value of clock_gettime() and abort() if it fails in + order to save these people from wasting time on debugging a tricky + issue. + + https://bugzilla.gnome.org/show_bug.cgi?id=670144 + + glib/gmain.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 6fcaa7aa96fc4b274a4358f2cec3a4075568d343 +Author: Xavier Claessens +AuthorDate: Fri Feb 21 15:35:36 2014 -0500 +Commit: Xavier Claessens +CommitDate: Fri Feb 21 15:39:31 2014 -0500 + + GHashTable: Explicitly document that _iter_remove() is safe while + iterating + + https://bugzilla.gnome.org/show_bug.cgi?id=723316 + + glib/ghash.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 59a8ae34c01a9f5e311cb3fb6bb12fbe3e0096b0 +Author: Aurimas Černius +AuthorDate: Fri Feb 21 22:16:16 2014 +0200 +Commit: Aurimas Černius +CommitDate: Fri Feb 21 22:16:16 2014 +0200 + + Updated Lithuanian translation + + po/lt.po | 1750 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 864 insertions(+), 886 deletions(-) + +commit 450363321db007d1c9a6c654b245e701ccc2998a +Author: Chun-wei Fan +AuthorDate: Fri Feb 21 17:06:56 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Feb 21 23:37:31 2014 +0800 + + glib/Makefile.am: Dist gtranslit-data.h + + This header needs to be distributed as well, which was + inadvertently missed. + + https://bugzilla.gnome.org/show_bug.cgi?id=724858 + + glib/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 73060f5e78ea5f208275f4a7cb6183636aeef1da +Author: Ryan Lortie +AuthorDate: Fri Feb 21 07:56:06 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Feb 21 07:56:26 2014 -0500 + + slow-motion post-release version bump + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 061793a726df038fb8c790984c81020e14feb0bb +Author: Ryan Lortie +AuthorDate: Thu Feb 20 18:49:37 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 20 18:52:33 2014 -0500 + + gconvert: add note to avoid transliteration + + Add a note to the documentation of g_convert() advising to avoid using + it for transliteration. Link to g_str_to_ascii(). + + glib/gconvert.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 0415930b499fa951f1e82d38fc60461a8bd42c4b +Author: Ryan Lortie +AuthorDate: Thu Feb 13 10:18:03 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 20 18:32:42 2014 -0500 + + gsource: document priority of child sources + + Add a note to the documentation that child sources cannot have + their priority + changed independently from their parent. Add a g_return_if_fail() + to the + public API in order to enforce this. + + This was already a reality due to the check in + g_source_set_priority_unlocked(), but it was never explicitly + documented. + + https://bugzilla.gnome.org/show_bug.cgi?id=724706 + + glib/gmain.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 8491f03581b6ada1d82f29064c99b604e98c7e09 +Author: Ryan Lortie +AuthorDate: Thu Feb 20 18:32:04 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 20 18:32:42 2014 -0500 + + g_str_to_ascii(): a couple of minor tweaks + + Add a precondition guard and use g_string_sized_new() to avoid some + reallocations. + + glib/gtranslit.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit a8ea3dc03b203e18825aa4c8473c9ab832fbeddf +Author: Ryan Lortie +AuthorDate: Mon Feb 17 13:15:55 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 20 18:27:48 2014 -0500 + + g_str_tokenize_and_fold: do proper transliteration + + g_str_tokenize_and_fold() can now do proper locale-sensitive + transliteration for ascii alternatives. + + https://bugzilla.gnome.org/show_bug.cgi?id=710142 + + glib/gstrfuncs.c | 28 ++++++++++++++++------------ + 1 file changed, 16 insertions(+), 12 deletions(-) + +commit d7291760df7de8cc878cb418749cb0f6afa6c69d +Author: Ryan Lortie +AuthorDate: Mon Feb 17 11:55:22 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 20 18:27:24 2014 -0500 + + tests: test transliteration API + + Add some tests for the new transliteration API. + + https://bugzilla.gnome.org/show_bug.cgi?id=710142 + + glib/tests/strfuncs.c | 107 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 107 insertions(+) + +commit 941b8979d07a7d9bd1a8f581ee744c0c914e12ee +Author: Ryan Lortie +AuthorDate: Mon Feb 17 11:54:18 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 20 18:27:24 2014 -0500 + + Add locale-sensitive ASCII transliteration API + + Add a new function, g_str_to_ascii() that does locale-dependent ASCII + transliteration of UTF-8 strings. + + This function works off of an internal database. We get the data + out of + the localedata shipped with glibc, which seems to be just about + the best + source of locale-sensitive transliteration information available + anywhere. + + We include a update script with this commit that's not used by + anything + at all -- it will just sit in git. It is intended to be run manually + from time to time. + + https://bugzilla.gnome.org/show_bug.cgi?id=710142 + + docs/reference/glib/glib-sections.txt | 1 + + glib/Makefile.am | 1 + + glib/gstrfuncs.h | 4 + + glib/gtranslit-data.h | 12 + + glib/gtranslit.c | 409 + +++++++++++++++++++++++++++++++++ + glib/update-gtranslit.py | 410 + ++++++++++++++++++++++++++++++++++ + 6 files changed, 837 insertions(+) + +commit 436d77f70ac9aed56d1b5f223e05a29e34378444 +Author: Ryan Lortie +AuthorDate: Tue Feb 18 19:04:24 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 20 17:57:57 2014 -0500 + + tests: add a test for g_cond_wait_until() + + https://bugzilla.gnome.org/show_bug.cgi?id=673607 + + glib/tests/cond.c | 38 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 38 insertions(+) + +commit 1de36e775599e77f2fe47b381f0e5b1b62e93f66 +Author: Ryan Lortie +AuthorDate: Tue Feb 18 18:50:18 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 20 17:55:09 2014 -0500 + + Fix g_cond_wait_until() vs. monotonic time + + We've had a relatively rocky path with g_cond_wait_until() on systems + that either don't support pthread_condattr_setclock() or where + g_get_monotonic_time() is not based on CLOCK_MONOTONIC (ie: + Android and + Mac OS). + + Fortunately, both of these platforms seem to share + pthread_cond_timedwait_relative_np() which allows us to implement + g_cond_wait_until() without races. + + With this patch, we now require that one of + pthread_condattr_setclock() + or pthread_cond_timedwait_relative_np() exists. A quick look around + suggests that this is true for all platforms that we care about. + + This patch removes our use of pthread_cond_timedwait_monotonic() and + pthread_cond_timedwait_monotonic_np() which were Android-only APIs. + + https://bugzilla.gnome.org/show_bug.cgi?id=673607 + + configure.ac | 17 ++++------------- + glib/gthread-posix.c | 45 ++++++++++++++++++++++++++++++++++----------- + 2 files changed, 38 insertions(+), 24 deletions(-) + +commit d61431254636b9ecc250884eb34757c2504e5685 +Author: Ryan Lortie +AuthorDate: Tue Feb 18 14:09:49 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 20 17:52:49 2014 -0500 + + gmain: rework g_get_monotonic_time() a bit + + We now assume the existence of clock_gettime() and CLOCK_MONOTONIC as + specified by POSIX.1-2001. This means that we always return truly + monotonic time, which will prevent problems in the case that the user + changes the time. + + Mac OS doesn't have clock_gettime() but it does have + mach_absolute_time(), so we can use that there. + + We keep our Windows case as well (although we should simplify it + once XP + hits EOL later this year). + + This patch removes the fallback to gettimeofday() in case of missing + clock_gettime(). We no longer have any way to test this codepath and + therefore it must go. + + This patch also restructures the #ifdef a bit so that we repeat the + entire function definition inside of #ifdef instead of just the entire + body of one function. + + https://bugzilla.gnome.org/show_bug.cgi?id=724687 + + configure.ac | 3 +- + glib/gmain.c | 164 + +++++++++++++++++++++++++++++++---------------------------- + 2 files changed, 88 insertions(+), 79 deletions(-) + +commit 20f4d1820b8d4d0fc4447188e33efffd6d4a88d8 +Author: William Jon McCann +AuthorDate: Wed Feb 19 19:35:23 2014 -0500 +Commit: William Jon McCann +CommitDate: Wed Feb 19 19:41:52 2014 -0500 + + docs: use "Returns:" consistently + + Instead of "Return value:". + + gio/gactiongroup.c | 8 ++-- + gio/gappinfo.c | 2 +- + gio/gcancellable.c | 2 +- + gio/gdesktopappinfo.c | 2 +- + gio/gfileenumerator.c | 4 +- + gio/gfilterinputstream.c | 2 +- + gio/gfilteroutputstream.c | 2 +- + gio/ginetaddressmask.c | 12 +++--- + gio/ginetsocketaddress.c | 4 +- + gio/ginitable.c | 6 +-- + gio/ginputstream.c | 12 +++--- + gio/gioerror.c | 2 +- + gio/giomodule.c | 4 +- + gio/giostream.c | 4 +- + gio/gmemoryoutputstream.c | 2 +- + gio/gnetworkaddress.c | 12 +++--- + gio/gnetworkmonitor.c | 6 +-- + gio/gnetworkservice.c | 10 ++--- + gio/goutputstream.c | 16 ++++---- + gio/gpollableinputstream.c | 2 +- + gio/gpollableoutputstream.c | 2 +- + gio/gpollableutils.c | 6 +-- + gio/gproxy.c | 8 ++-- + gio/gproxyresolver.c | 8 ++-- + gio/gresolver.c | 20 +++++----- + gio/gresource.c | 8 ++-- + gio/gsocketaddressenumerator.c | 4 +- + gio/gsocketconnectable.c | 4 +- + gio/gsrvtarget.c | 14 +++---- + gio/gtask.c | 6 +-- + gio/gtcpwrapperconnection.c | 4 +- + gio/gtlsbackend.c | 12 +++--- + gio/gtlscertificate.c | 14 +++---- + gio/gtlsclientconnection.c | 10 ++--- + gio/gtlsconnection.c | 24 ++++++------ + gio/gtlsdatabase.c | 16 ++++---- + gio/gtlsfiledatabase.c | 2 +- + gio/gtlspassword.c | 6 +-- + gio/gtlsserverconnection.c | 2 +- + gio/gunixinputstream.c | 4 +- + gio/gunixoutputstream.c | 4 +- + gio/gwin32inputstream.c | 4 +- + gio/gwin32outputstream.c | 4 +- + gio/gwin32volumemonitor.c | 2 +- + gio/inotify/inotify-helper.c | 2 +- + glib/deprecated/gcompletion.c | 2 +- + glib/gasyncqueue.c | 24 ++++++------ + glib/gbase64.c | 12 +++--- + glib/gbookmarkfile.c | 54 +++++++++++++------------- + glib/gcharset.c | 6 +-- + glib/gchecksum.c | 14 +++---- + glib/gconvert.c | 30 +++++++------- + glib/gdataset.c | 2 +- + glib/gdatetime.c | 46 +++++++++++----------- + glib/gdir.c | 4 +- + glib/genviron.c | 8 ++-- + glib/gerror.c | 8 ++-- + glib/gfileutils.c | 32 +++++++-------- + glib/ggettext.c | 2 +- + glib/ghash.c | 28 +++++++------- + glib/ghmac.c | 12 +++--- + glib/ghostutils.c | 10 ++--- + glib/giochannel.c | 46 +++++++++++----------- + glib/gkeyfile.c | 44 ++++++++++----------- + glib/gmain.c | 88 + +++++++++++++++++++++--------------------- + glib/gmappedfile.c | 6 +-- + glib/gmarkup.c | 16 ++++---- + glib/gmem.c | 2 +- + glib/gnode.c | 2 +- + glib/goption.c | 6 +-- + glib/gpoll.c | 2 +- + glib/gqueue.c | 28 +++++++------- + glib/grand.c | 24 ++++++------ + glib/gsequence.c | 48 +++++++++++------------ + glib/gshell.c | 6 +-- + glib/gspawn.c | 10 ++--- + glib/gstrfuncs.c | 56 +++++++++++++-------------- + glib/gstring.c | 18 ++++----- + glib/gstringchunk.c | 2 +- + glib/gtestutils.h | 2 +- + glib/gthreadpool.c | 18 ++++----- + glib/gtimer.c | 4 +- + glib/gtree.c | 18 ++++----- + glib/gunibreak.c | 2 +- + glib/gunicollate.c | 6 +-- + glib/gunidecomp.c | 8 ++-- + glib/guniprop.c | 60 ++++++++++++++-------------- + glib/gutf8.c | 42 ++++++++++---------- + glib/gutils.c | 16 ++++---- + glib/gversion.c | 2 +- + glib/gwin32.c | 2 +- + gobject/gbinding.c | 16 ++++---- + gobject/gbinding.h | 2 +- + 93 files changed, 600 insertions(+), 600 deletions(-) + +commit 9cb53851be2d90c804e6f31da26a11c51329f33c +Author: Chun-wei Fan +AuthorDate: Wed Feb 19 13:57:18 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Feb 20 08:36:54 2014 +0800 + + gio/gresolver.c: Fix build on Windows + + Windows does not come with inet_aton(), and this check on IPv4 + addresses + is actually not needed on Windows as the getaddrinfo() implementation + on + Windows already rejects non-standard and non-real IPv4 + numbers-and-dots + addresses. + + https://bugzilla.gnome.org/show_bug.cgi?id=724609 + + gio/gresolver.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit a5ae016359ffb8634d6a12e5853e89f743eca0b9 +Author: Kjartan Maraas +AuthorDate: Wed Feb 19 23:57:40 2014 +0100 +Commit: Kjartan Maraas +CommitDate: Wed Feb 19 23:57:40 2014 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 60 + +++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 33 insertions(+), 27 deletions(-) + +commit 0ffa1ea8ddb9a3c17ab0ad13a0f6685657fb41e2 +Author: Xavier Claessens +AuthorDate: Wed Feb 19 15:51:27 2014 -0500 +Commit: Xavier Claessens +CommitDate: Wed Feb 19 15:51:27 2014 -0500 + + Add G_ÂTYPE_VARIANT_DCT into the doc + + docs/reference/gobject/gobject-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit ec17605d4f62fa6b460846f30a5ea409425bee00 +Author: Ryan Lortie +AuthorDate: Mon Feb 17 18:33:34 2014 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 17 18:33:34 2014 -0500 + + GLib 2.39.90 + + NEWS | 36 ++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 37 insertions(+), 1 deletion(-) + +commit c37cd19feee3a609fec8909f01df8755052c59ab +Author: Ryan Lortie +AuthorDate: Mon Feb 17 18:13:01 2014 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 17 18:18:20 2014 -0500 + + Work around test failure in gdbus-names + + This is caused by g_test_dbus_down() returning too soon. + + Add a sleep for now. + + https://bugzilla.gnome.org/show_bug.cgi?id=711807 + + gio/tests/gdbus-names.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 53d5b17f629a593dc3862f39fdcef9339ca4816d +Author: Ryan Lortie +AuthorDate: Mon Feb 17 17:43:48 2014 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 17 17:44:58 2014 -0500 + + GApplication: disable some more tests + + Disable some racy GApplication testcases. We need some better + non-hacky + GApplication tests... + + https://bugzilla.gnome.org/show_bug.cgi?id=724126 + + gio/tests/gapplication.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +commit c81834c0895766f104bc6fb1579704066df90597 +Author: Matthias Clasen +AuthorDate: Mon Feb 17 16:57:13 2014 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 17 16:57:13 2014 -0500 + + Bump gtk-doc dep to 1.20 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4139b26f3e2f869191b3d96d912f699470db6cea +Author: Dan Winship +AuthorDate: Fri Feb 14 15:35:11 2014 -0500 +Commit: Dan Winship +CommitDate: Mon Feb 17 11:38:11 2014 -0500 + + gsocket: fix g_socket_condition_timed_wait() recovery after EINTR + + After getting an EINTR, g_socket_condition_timed_wait() has to adjust + its timeout, but it was trying to convert from nanoseconds to + microseconds by multiplying by 1000 rather than dividing... Oops. + + https://bugzilla.gnome.org/show_bug.cgi?id=724239 + + gio/gsocket.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5a4478664be8bc6523f6452bfd63340718be2aa5 +Author: Dan Winship +AuthorDate: Fri Feb 14 16:12:50 2014 -0500 +Commit: Dan Winship +CommitDate: Mon Feb 17 11:33:37 2014 -0500 + + gtestutils: make the new assert messages more detailed + + g_assert_true(), g_assert_false(), g_assert_null(), and + g_assert_nonnull() simply printed out the expression they were + checking, without any further explanation of what went wrong. (In + particular, "g_assert_true(x)" and "g_assert_false(x)" would both + print the same thing on failure.) Add a little bit more context. + + https://bugzilla.gnome.org/show_bug.cgi?id=724385 + + glib/gtestutils.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 299ca6dc1e54797e6fc5264c7b19b08bd726ca83 +Author: Ross Burton +AuthorDate: Tue Feb 4 13:15:08 2014 +0000 +Commit: Ross Burton +CommitDate: Mon Feb 17 10:21:31 2014 +0000 + + gio/tests: fix race when generating code + + There is a race condition in the makefile that can result in build + failures like this in parallel builds: + + | ./gdbus-test-codegen-generated.h:7:0: error: unterminated #ifndef + | #ifndef __GDBUS_TEST_CODEGEN_GENERATED_H__ + + This is because a rule like this: + + x.c x.h: prerequisites + @commands + + doesn't consider x.c and x.h together. Instead, it expands to two + rules, one to + generate x.c and one to generate x.h, which happen to run the same + commands. In + the worst case they execute in parallel, overwriting each other's + output. + + Signed-off-by: Ross Burton + + https://bugzilla.gnome.org/show_bug.cgi?id=723616 + + gio/tests/Makefile.am | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit ed017994c9396f10c87646b5fa3639e1ca1925b8 +Author: Olivier Crête +AuthorDate: Sat Feb 15 02:23:29 2014 -0500 +Commit: Olivier Crête +CommitDate: Sun Feb 16 19:59:44 2014 -0500 + + subprocess: Init and clear the mutex + + Fixes the leak of the GMutexImpl allocated inside the first call + to g_mutex_lock() + on an uninitialized GMutex. + + https://bugzilla.gnome.org/show_bug.cgi?id=724401 + + gio/gsubprocess.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit a732f2966d114a040a2958084252b697b1f29f29 +Author: Paolo Borelli +AuthorDate: Sun Feb 16 22:06:11 2014 +0100 +Commit: Paolo Borelli +CommitDate: Sun Feb 16 22:06:11 2014 +0100 + + Annotate g_application_add_main_option_entries + + gio/gapplication.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 89022761018fd87a19b0c4cf5a9c9fe8575a743a +Author: Dan Winship +AuthorDate: Sun Feb 16 09:24:04 2014 -0500 +Commit: Dan Winship +CommitDate: Sun Feb 16 09:24:04 2014 -0500 + + g_simple_async_result_is_valid: fix for NULL source tag + + If a GSimpleAsyncResult has a NULL source tag, allow it to compare + valid to a non-NULL source tag in g_simple_async_result_is_valid(), to + simplify cases where, eg, g_simple_async_result_new() and + g_simple_async_result_report_error_in_idle() are both used. + + https://bugzilla.gnome.org/show_bug.cgi?id=721458 + + gio/gsimpleasyncresult.c | 22 +++++++------- + gio/tests/simple-async-result.c | 65 + +++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 77 insertions(+), 10 deletions(-) + +commit 9c135707cb0653cc0f7d66ee67921428fa912611 +Author: Koop Mast +AuthorDate: Sat Feb 15 19:54:21 2014 +0100 +Commit: Dan Winship +CommitDate: Sat Feb 15 18:35:57 2014 -0500 + + Fix the build on FreeBSD by replacing EAI_NODATA with EAI_NONAME. + + https://bugzilla.gnome.org/show_bug.cgi?id=724434 + + gio/gresolver.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7cbff954b926d97ce2f3ce08487866b668e7eafb +Author: Ryan Lortie +AuthorDate: Sun Jan 12 03:14:04 2014 -0500 +Commit: Ryan Lortie +CommitDate: Sat Feb 15 16:55:25 2014 -0500 + + win32: fixup lib.exe invocation + + We have a configure.ac check for lib.exe that attempts to enable + creation of .lib files for our 5 public libraries. That has been + broken + for a long time for two reasons: + + 1) the Makefiles hardcode 'lib' instead of 'lib.exe' + + 2) we dropped generation of .def files quite some time ago + (except for + in gthread where we have the two-symbol file under version + control) + + Add new rules for creating .def files from dumpbin.exe (which + you should + have if you have lib.exe) and fix the .lib rules to use lib.exe. + + Add a bit of $(AM_V_GEN) all around, as well. + + https://bugzilla.gnome.org/show_bug.cgi?id=722033 + + gio/Makefile.am | 5 ++++- + glib/Makefile.am | 5 ++++- + gmodule/Makefile.am | 5 ++++- + gobject/Makefile.am | 5 ++++- + gthread/Makefile.am | 2 +- + 5 files changed, 17 insertions(+), 5 deletions(-) + +commit 08533cae05dfe6d3af5e02c95af9de65680cdae0 +Author: Ryan Lortie +AuthorDate: Sat Feb 15 08:44:05 2014 -0500 +Commit: Ryan Lortie +CommitDate: Sat Feb 15 10:31:52 2014 -0500 + + only '#pragma GCC' outside of functions + + Don't use #pragma GCC inside of function scope. + + https://bugzilla.gnome.org/show_bug.cgi?id=724417 + + glib/tests/test-printf.c | 24 +++++++++++++++++------- + 1 file changed, 17 insertions(+), 7 deletions(-) + +commit 5575a3e9cb8ec3d0f0f373cb64e6fedc4c72c0f5 +Author: Dan Winship +AuthorDate: Tue Aug 20 21:36:25 2013 -0400 +Commit: Dan Winship +CommitDate: Sat Feb 15 10:22:24 2014 -0500 + + gio: don't accept nonstandard IPv4 "numbers-and-dots" addresses + + In addition to the standard "192.168.1.1" format, there are numerous + legacy IPv4 address formats (such as "192.168.257", + "0xc0.0xa8.0x01.0x01", "0300.0250.0001.0001", "3232235777", and + "0xc0a80101"). However, none of these forms are ever used any more + except in phishing attempts. GLib wasn't supposed to be accepting + these addresses (neither g_hostname_is_ip_address() nor + g_inet_address_new_from_string() recognizes them), but getaddrinfo() + accepts them, and so the parts of gio that use getaddrinfo() + accidentally did accept those formats. + + Fix GNetworkAddress and GResolver to reject these address formats. + + https://bugzilla.gnome.org/show_bug.cgi?id=679957 + + docs/reference/gio/gio-sections.txt | 1 + + gio/ginetsocketaddress.c | 74 +++++++++++++++++++++++ + gio/ginetsocketaddress.h | 17 +++--- + gio/gnetworkaddress.c | 28 +++------ + gio/gresolver.c | 55 ++++++++++++++--- + gio/gthreadedresolver.c | 2 +- + gio/tests/network-address.c | 116 + ++++++++++++++++++++++++++++++++++++ + 7 files changed, 256 insertions(+), 37 deletions(-) + +commit 5cab3fcec13f9b9b13ebb483498e3e50bc1a4b45 +Author: Dan Winship +AuthorDate: Mon Dec 2 11:59:30 2013 -0500 +Commit: Dan Winship +CommitDate: Sat Feb 15 10:20:53 2014 -0500 + + gobject: re-allow finalization from constructor() + + Although returning NULL from constructor is strongly discouraged, some + old libraries need to keep doing it for ABI-compatibility reasons. + Given this, it's rude to forbid finalization from within + constructor(), since it would otherwise work correctly now anyway (and + the critical when returning NULL should discourage any new uses of + returning NULL from constructor()). + + https://bugzilla.gnome.org/show_bug.cgi?id=661576 + + gobject/gobject.c | 4 ++-- + gobject/tests/object.c | 20 +++++++++++--------- + 2 files changed, 13 insertions(+), 11 deletions(-) + +commit 074df396813692c7680c5406224131eda554d474 +Author: Dan Winship +AuthorDate: Sat Feb 1 14:21:10 2014 +0100 +Commit: Dan Winship +CommitDate: Sat Feb 15 10:06:04 2014 -0500 + + Fix g_socket_get_available() with TCP on Windows + + Windows needs a special inefficient hack to implement + g_socket_get_available() correctly for UDP sockets, but that hack + isn't needed for TCP, and in fact, might give the wrong answer in that + case. Fix it to only use the hack with UDP. + + Also, fix that case to handle non-blocking sockets as well. + + And add a test case for g_socket_get_available() with TCP. + + https://bugzilla.gnome.org/show_bug.cgi?id=723422 + + gio/gsocket.c | 20 ++++++++-- + gio/tests/socket.c | 107 + +++++++++++++++++++++++++++++++++++++++++------------ + 2 files changed, 100 insertions(+), 27 deletions(-) + +commit d690b3dcd083cfeb004db0c65c7196f558cba1ff +Author: Matthias Clasen +AuthorDate: Fri Feb 14 21:49:42 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 14 21:49:42 2014 -0500 + + docs: Remove a few trailing s + + glib/glib-unix.h | 18 ++++++++---------- + 1 file changed, 8 insertions(+), 10 deletions(-) + +commit bcab7ba002f052481329f2b70b4c7ea31b544b86 +Author: Matthias Clasen +AuthorDate: Fri Feb 14 21:39:11 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 14 21:39:11 2014 -0500 + + docs: Remove some unneeded decorations + + @var is not expanded inside literal `` blocks. + Just remove those @ characters. + + glib/gatomic.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit bc6ee788b4ff6590513da6ab657448885e92b20b +Author: Matthias Clasen +AuthorDate: Fri Feb 14 21:33:36 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 14 21:33:36 2014 -0500 + + docs: let go of * + + Since we are no longer using sgml mode, using /* */ to + escape block comments inside examples does not work anymore. + Switch to using line comments with // + + gio/gappinfo.c | 2 +- + gio/gapplicationcommandline.c | 6 +++--- + gio/gcancellable.c | 14 ++++++------- + gio/gdbuserror.c | 8 ++++---- + gio/giomodule.c | 4 ++-- + gio/gmemoryoutputstream.c | 6 +++--- + gio/gsimpleaction.c | 2 +- + gio/gsimpleasyncresult.c | 21 ++++++++----------- + gio/gsocketconnectable.c | 16 ++++++--------- + gio/gtask.c | 48 + +++++++++++++++++++++---------------------- + gio/gvolume.c | 4 ++-- + glib/garray.c | 10 ++++----- + glib/gerror.c | 31 ++++++++++++++-------------- + glib/gfileutils.c | 4 ++-- + glib/ghash.c | 2 +- + glib/glist.c | 12 +++++------ + glib/gmain.c | 4 ++-- + glib/gmarkup.c | 4 ++-- + glib/gmessages.c | 5 ++--- + glib/goption.c | 10 ++++----- + glib/gregex.c | 8 ++++---- + glib/gslice.c | 12 +++++------ + glib/gslist.c | 8 ++++---- + glib/gtestutils.c | 4 ++-- + glib/gthread-posix.c | 8 ++++---- + glib/gthread.c | 29 +++++++++++++------------- + glib/gvariant.c | 13 ++++++------ + gmodule/gmodule.c | 4 ++-- + gobject/gclosure.c | 8 ++++---- + gobject/gobject.c | 14 +++++++------ + gobject/gvalue.c | 16 +++++++-------- + 31 files changed, 162 insertions(+), 175 deletions(-) + +commit 450e7b1036fc95d41d6cb72d48824cd8b438037c +Author: Ryan Lortie +AuthorDate: Thu Feb 13 18:26:07 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Feb 14 10:42:40 2014 -0500 + + configure.ac: tweak inotify check + + Our check for inotify_init1() being defined is broken. We happily + declare that inotify is supported, even if the check fails. + + This was originally intended to check for inotify_init1 in the libc so + that we could fall back to inotify_init if it was not yet defined. + + FreeBSD has a libinotify that emulates the inotify API via kqueue. It + installs a header and requires linking to -linotify. + We + don't want to falsely detect working inotify in this case. + + Treat the lack of inotify_init1() in the libc as a lack of inotify + support. This requires only a new libc -- we still support old + kernels: + in the case that inotify1_init() fails, we fall back to + inotify_init(). + + https://bugzilla.gnome.org/show_bug.cgi?id=724330 + + configure.ac | 3 +-- + gio/giomodule.c | 2 +- + gio/inotify/inotify-kernel.c | 5 +---- + 3 files changed, 3 insertions(+), 7 deletions(-) + +commit db83b8ac4ce70c31398121f0bde9ac87d4f42c58 +Author: Dan Winship +AuthorDate: Thu Feb 13 12:59:20 2014 -0500 +Commit: Dan Winship +CommitDate: Thu Feb 13 12:59:29 2014 -0500 + + gtask: fix trivial doc typo + + gio/gtask.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0f5577de57b83841280dbd925c1b64b77bf4a828 +Author: Simon McVittie +AuthorDate: Tue Feb 11 15:24:34 2014 +0000 +Commit: Simon McVittie +CommitDate: Thu Feb 13 14:31:27 2014 +0000 + + g_test_run: return 0 if all tests are skipped in TAP mode + + Exit status 77 is special to Automake's default test driver, but is + treated as an error by TAP. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=724124 + Reviewed-by: Dan Winship + + glib/gtestutils.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit ffa5fab09a504cc6d2ff862b4cff123e27e118e1 +Author: Simon McVittie +AuthorDate: Tue Feb 11 15:14:33 2014 +0000 +Commit: Simon McVittie +CommitDate: Thu Feb 13 14:31:09 2014 +0000 + + glib/tests/collate.c: run to completion when skipping all tests + + Otherwise, we don't produce valid TAP output, and fail with: + + ERROR: collate - missing test plan + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=724124 + Reviewed-by: Dan Winship + + glib/tests/collate.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +commit 169846c5ab19abaa5474f5b5f30c3deef645ee03 +Author: Philip Withnall +AuthorDate: Thu Feb 13 10:58:21 2014 +0000 +Commit: Philip Withnall +CommitDate: Thu Feb 13 14:09:48 2014 +0000 + + gsocketconnection: Document closing connections with + g_io_stream_close() + + It’s not enough to close a connection by calling + g_input_stream_close() + and g_output_stream_close() on its two substreams: to close the + underlying socket, one must use g_io_stream_close(). Document that. + + https://bugzilla.gnome.org/show_bug.cgi?id=724278 + + gio/giostream.c | 6 +++--- + gio/gsocketconnection.c | 4 ++++ + 2 files changed, 7 insertions(+), 3 deletions(-) + +commit 0017728c8c19ac0e64eee7740e43138d85885ee2 +Author: Dan Winship +AuthorDate: Thu Feb 13 08:30:24 2014 -0500 +Commit: Dan Winship +CommitDate: Thu Feb 13 08:30:59 2014 -0500 + + gsocketservice: Clarify g_socket_service_stop() documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=724233 + + gio/gsocketservice.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 125913e9fe27da29699987d406fe6290ff288ccd +Author: Simon McVittie +AuthorDate: Thu Feb 6 17:48:44 2014 +0000 +Commit: Simon McVittie +CommitDate: Tue Feb 11 15:02:16 2014 +0000 + + g_child_watch_source_new: POSIX pid must be positive + + If we used a non-positive pid, we'd call waitpid(that_pid, ...) + which is exactly the situation this function can't deal with. + + On Windows, GPid is a HANDLE (pointer), so I don't think the same + thing + applies. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=723743 + Reviewed-by: Ryan Lortie + + glib/gmain.c | 31 ++++++++++++++++++++++++------- + 1 file changed, 24 insertions(+), 7 deletions(-) + +commit a3cb5ce33b636dd31ac009d5396997dfbb0b032c +Author: Simon McVittie +AuthorDate: Thu Feb 6 10:19:47 2014 +0000 +Commit: Simon McVittie +CommitDate: Tue Feb 11 15:01:58 2014 +0000 + + Be more clear that g_return_if_fail is undefined behaviour + + In particular, it is not incorrect to g_return_if_fail (..., FALSE) + in a function returning a "success" gboolean and a GError: "failure to + meet the preconditions is an error" takes precedence over the + GError documentation's guarantee that the error will be set on + failure. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=660809 + Reviewed-by: Emmanuele Bassi + + glib/gerror.c | 18 ++++++++++++++++-- + glib/gmessages.h | 29 +++++++++++++++++++++++------ + 2 files changed, 39 insertions(+), 8 deletions(-) + +commit f5e60984af7ae056c9795d4820834707520866ed +Author: Emmanuele Bassi +AuthorDate: Mon Feb 10 15:48:17 2014 +0000 +Commit: Emmanuele Bassi +CommitDate: Mon Feb 10 15:48:17 2014 +0000 + + po/nb.po: Fix mismatched translation + + Missing '\n' at the end of the string broke building under CI. + + po/nb.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bf25c451f5f96ef428b0dbb15881de4699b554f8 +Author: Kjartan Maraas +AuthorDate: Mon Feb 10 16:16:41 2014 +0100 +Commit: Kjartan Maraas +CommitDate: Mon Feb 10 16:17:06 2014 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 62 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 29 insertions(+), 33 deletions(-) + +commit 87a7b7763bae1bb8faa5e8244ee12cf05a2180b8 +Author: Andika Triwidada +AuthorDate: Mon Feb 10 14:55:59 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Mon Feb 10 14:55:59 2014 +0000 + + Updated Indonesian translation + + po/id.po | 2055 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1120 insertions(+), 935 deletions(-) + +commit d173d97c9ba27ac009f756a727a23a3359c5c5fc +Author: Philip Withnall +AuthorDate: Mon Feb 10 08:49:52 2014 +0000 +Commit: Philip Withnall +CommitDate: Mon Feb 10 08:50:36 2014 +0000 + + gsubprocess: Fix ‘Since’ lines in documentation to read 2.40 + + GSubprocess was introduced in GLib 2.40, not 2.36. + + https://bugzilla.gnome.org/show_bug.cgi?id=724001 + + gio/gioenums.h | 2 +- + gio/giotypes.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 24536dd030796dc57ca5148b031062da3e0b793e +Author: Philip Withnall +AuthorDate: Mon Feb 10 08:21:49 2014 +0000 +Commit: Philip Withnall +CommitDate: Mon Feb 10 08:22:30 2014 +0000 + + gsubprocess: Fix a broken link in the documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=724001 + + gio/gsubprocess.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 28b1d39058d7b45a1bada07ba875263219eb04f8 +Author: Kjartan Maraas +AuthorDate: Mon Feb 10 08:15:00 2014 +0100 +Commit: Kjartan Maraas +CommitDate: Mon Feb 10 08:15:00 2014 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 2015 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1101 insertions(+), 914 deletions(-) + +commit ada09a7b625a9c705de4ff5b9d9f11bb1ed42e06 +Author: Milo Casagrande +AuthorDate: Sun Feb 9 12:21:34 2014 +0100 +Commit: Milo Casagrande +CommitDate: Sun Feb 9 12:21:34 2014 +0100 + + [l10n] Updated Italian translation. + + po/it.po | 1712 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 864 insertions(+), 848 deletions(-) + +commit c158a9cdcbef04a51f64a4cac2db2f5e509b8794 +Author: Matthias Clasen +AuthorDate: Sun Feb 9 02:12:53 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 9 02:12:53 2014 -0500 + + Fix a misformatting in GVariant docs + + The + at the beginning of the line was misinterpreted + as markdown for a list. + + glib/gvariant.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 35066ed6c6b51317f49069f2564c547aa309f9f1 +Author: Matthias Clasen +AuthorDate: Sun Feb 9 02:07:26 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 9 02:07:26 2014 -0500 + + Docs: Drop entities, switch away from sgml mode + + Since all element markup is now gone from the doc comments, + we can turn off the gtk-doc sgml mode, which means that from + now on, docbook markup is no longer allowed in doc comments. + + To make this possible, we have to replace all remaining + entities in doc comments by their replacement text, & -> & + and so on. + + docs/reference/gio/Makefile.am | 2 +- + docs/reference/glib/Makefile.am | 2 +- + docs/reference/gobject/Makefile.am | 2 +- + gio/gappinfo.c | 2 +- + gio/gdbusaddress.c | 2 +- + gio/gdbusintrospection.c | 2 +- + gio/gdesktopappinfo.c | 2 +- + gio/gfileattribute.c | 2 +- + gio/gfiledescriptorbased.c | 2 +- + gio/gicon.c | 2 +- + gio/gmenumodel.c | 2 +- + gio/gnetworking.c | 2 +- + gio/gproxyresolver.c | 4 ++-- + gio/gsettings.c | 12 ++++++------ + gio/gsocket.c | 6 +++--- + gio/gunixconnection.c | 2 +- + gio/gunixfdlist.c | 2 +- + gio/gunixfdmessage.c | 2 +- + gio/gunixinputstream.c | 2 +- + gio/gunixmounts.c | 2 +- + gio/gunixoutputstream.c | 2 +- + gio/gunixsocketaddress.c | 2 +- + gio/gwin32inputstream.c | 2 +- + gio/gwin32outputstream.c | 2 +- + glib/docs.c | 4 ++-- + glib/gbookmarkfile.c | 6 +++--- + glib/gerror.c | 12 ++++++------ + glib/ggettext.c | 4 ++-- + glib/ghook.c | 6 +++--- + glib/glist.c | 4 ++-- + glib/gmarkup.c | 10 +++++----- + glib/grand.c | 2 +- + glib/gregex.c | 25 +++++++++++++------------ + glib/gstrfuncs.c | 30 +++++++++++++++--------------- + glib/gtestutils.c | 14 +++++++------- + glib/gunicollate.c | 4 ++-- + glib/gvariant.c | 16 ++++++++-------- + glib/gwin32.c | 4 ++-- + gobject/gvaluearray.c | 2 +- + 39 files changed, 104 insertions(+), 103 deletions(-) + +commit a03cee3b27b9c1abfbef4972e67adec6286cc968 +Author: Matthias Clasen +AuthorDate: Sat Feb 8 17:52:21 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 17:52:21 2014 -0500 + + Convert remaining examples to links + + gio/gdbusauthobserver.c | 7 +++++-- + gio/gdbusconnection.c | 20 ++++++++++++++++---- + gio/gdbusnameowning.c | 3 ++- + gio/gdbusnamewatching.c | 3 ++- + gio/gdbusproxy.c | 3 ++- + gio/gdbusserver.c | 3 ++- + 6 files changed, 29 insertions(+), 10 deletions(-) + +commit 623b58eeac2e6f46fc12a63f948794c4e3d889d1 +Author: Matthias Clasen +AuthorDate: Sat Feb 8 15:59:24 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 15:59:24 2014 -0500 + + REmove another table + + gio/gfileinfo.c | 23 +++++++++-------------- + 1 file changed, 9 insertions(+), 14 deletions(-) + +commit 5acd7b01de2f9a1b22d0a06f62e7bb6b8f5e1849 +Author: Matthias Clasen +AuthorDate: Sat Feb 8 15:50:17 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 15:50:17 2014 -0500 + + Remove some informalexamples + + glib/gnode.c | 53 +++++++++++++++-------------------------------------- + 1 file changed, 15 insertions(+), 38 deletions(-) + +commit a59e3d69b49b82706b24f31a08d5be4b2c211aac +Author: Matthias Clasen +AuthorDate: Sat Feb 8 15:34:04 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 15:34:04 2014 -0500 + + Another stray + + glib/gvariant.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d5e5244c304b1d33105fe94a7edd7ad5140facaa +Author: Matthias Clasen +AuthorDate: Sat Feb 8 15:28:34 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 15:28:34 2014 -0500 + + Another stray litreal + + gio/gapplication.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit c4991d24ee58b5f116fc9cbe87c6fbb7ee7a731a +Author: Matthias Clasen +AuthorDate: Sat Feb 8 15:19:13 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 15:19:24 2014 -0500 + + Strip out a remaining programlisting + + glib/gconvert.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit cd5cd874f0ae52d21accad24d27b0283352049a3 +Author: Matthias Clasen +AuthorDate: Sat Feb 8 15:18:37 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 15:18:37 2014 -0500 + + Convert another table to a list + + gio/gdbusutils.c | 103 + ++++++++++--------------------------------------------- + 1 file changed, 19 insertions(+), 84 deletions(-) + +commit 3d0e55dfd5bc96bee16befb24883abfdbc6bd634 +Author: Matthias Clasen +AuthorDate: Sat Feb 8 15:18:06 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 15:18:06 2014 -0500 + + Convert more xincluded examples to external links + + gio/gapplication.c | 31 ++++++++----------------------- + 1 file changed, 8 insertions(+), 23 deletions(-) + +commit ebc4347b2c5adebd656c0977ba3242f1d7850569 +Author: Matthias Clasen +AuthorDate: Sat Feb 8 13:55:27 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 13:55:27 2014 -0500 + + Docs: Remove an example tag that has snuck back in + + glib/gvariant.c | 18 ++++++++---------- + 1 file changed, 8 insertions(+), 10 deletions(-) + +commit 03b21a19ec94da5c48fdfb798067d037f381e8b1 +Author: Matthias Clasen +AuthorDate: Sat Feb 8 13:47:02 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 13:47:02 2014 -0500 + + Docs: convert another table to a list + + glib/gvariant.c | 20 +++++--------------- + 1 file changed, 5 insertions(+), 15 deletions(-) + +commit 38b1d63b24d5fd44cb921b4c9af17892c9779e49 +Author: Matthias Clasen +AuthorDate: Sat Feb 8 13:43:16 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 13:43:16 2014 -0500 + + Convert GVariantType table to a list + + glib/gvarianttype.c | 352 + +++++++--------------------------------------------- + 1 file changed, 47 insertions(+), 305 deletions(-) + +commit f04dbac47d1c6cb60f2e78ce46c0b3fef91e49ec +Author: Matthias Clasen +AuthorDate: Sat Feb 8 13:28:11 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 13:28:11 2014 -0500 + + Remove a new literal tag that has crept in + + gio/gapplication.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit c43e0c34b0e1197fc20ee091082cae4701d0bb58 +Author: Matthias Clasen +AuthorDate: Sat Feb 8 13:25:04 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 13:25:04 2014 -0500 + + Remove a few leftover s + + gio/gfile.c | 20 ++++++++------------ + 1 file changed, 8 insertions(+), 12 deletions(-) + +commit 3ad5aadb40bd117457c30a7680bc7ef73a7dc6b3 +Author: Matthias Clasen +AuthorDate: Sat Feb 8 13:22:58 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 13:22:58 2014 -0500 + + Remove a stray tag + + gio/gpropertyaction.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit e16f053aa7571669a76b13fba8b51ae842cffc42 +Author: Matthias Clasen +AuthorDate: Sat Feb 8 13:22:38 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 13:22:38 2014 -0500 + + Remove tables from GFileAttribute docs + + gio/gfileattribute.c | 196 + ++++++++++++++++----------------------------------- + 1 file changed, 60 insertions(+), 136 deletions(-) + +commit e7fd3de86d6004d8dba5f8448eb063c6731546e9 +Author: Matthias Clasen +AuthorDate: Sat Feb 8 12:26:56 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 8 12:26:56 2014 -0500 + + Eradicate links and xrefs + + These are all replaced by markdown ref links. + + gio/gapplication.c | 3 +- + gio/gapplicationcommandline.c | 3 +- + gio/gasyncinitable.c | 12 ++--- + gio/gbufferedinputstream.c | 3 +- + gio/gdatainputstream.c | 9 ++-- + gio/gdbusactiongroup.c | 2 +- + gio/gdbusaddress.c | 2 +- + gio/gdbusconnection.c | 79 ++++++++++++++-------------- + gio/gdbusinterfaceskeleton.c | 4 +- + gio/gdbusintrospection.c | 2 +- + gio/gdbusmenumodel.c | 2 +- + gio/gdbusmethodinvocation.c | 6 +-- + gio/gdbusnameowning.c | 8 +-- + gio/gdbusnamewatching.c | 16 +++--- + gio/gdbusobjectmanagerclient.c | 10 ++-- + gio/gdbusproxy.c | 23 ++++----- + gio/gdbusserver.c | 9 ++-- + gio/gdbusutils.c | 49 +++++++++++++----- + gio/gfile.c | 87 ++++++++++++------------------- + gio/gfileattribute.c | 6 +-- + gio/gfileenumerator.c | 6 +-- + gio/gfileinfo.c | 12 ++--- + gio/gfileinputstream.c | 3 +- + gio/gfileiostream.c | 3 +- + gio/gfilemonitor.c | 11 ++-- + gio/gfileoutputstream.c | 3 +- + gio/ginitable.c | 3 +- + gio/ginputstream.c | 11 ++-- + gio/giomodule.c | 4 +- + gio/gioscheduler.c | 2 +- + gio/gmenumodel.c | 19 +++---- + gio/gresource.c | 12 ++--- + gio/gsettings.c | 27 +++++----- + gio/gsettingsschema.c | 3 +- + gio/gsimpleasyncresult.c | 12 ++--- + gio/gsocket.c | 6 +-- + gio/gsocketservice.c | 6 +-- + gio/gtask.c | 36 ++++++------- + gio/gtlsconnection.c | 3 +- + gio/gvolume.c | 9 ++-- + gio/gvolumemonitor.c | 8 +-- + glib/gcharset.c | 9 ++-- + glib/gconvert.c | 40 +++++++------- + glib/gdataset.c | 6 +-- + glib/gdate.c | 10 ++-- + glib/ghash.c | 4 +- + glib/giochannel.c | 11 ++-- + glib/glist.c | 21 ++++---- + glib/gmain.c | 2 +- + glib/gmessages.c | 3 +- + glib/gnode.c | 10 ++-- + glib/goption.c | 3 +- + glib/gprintf.c | 18 +++---- + glib/gquark.c | 5 +- + glib/gqueue.c | 4 +- + glib/gregex.c | 2 +- + glib/gsequence.c | 11 ++-- + glib/gslice.c | 33 +++++------- + glib/gslist.c | 115 + ++++++++++++++++++++--------------------- + glib/gstrfuncs.c | 4 +- + glib/gtestutils.c | 15 ++---- + glib/gtree.c | 9 ++-- + glib/gunicollate.c | 8 ++- + glib/gvariant-parser.c | 8 +-- + glib/gvariant.c | 51 +++++++++--------- + gmodule/gmodule.c | 4 +- + gobject/gclosure.c | 10 ++-- + gobject/genums.c | 19 +++---- + gobject/gobject.c | 20 +++---- + gobject/gvalue.c | 6 +-- + 70 files changed, 467 insertions(+), 528 deletions(-) + +commit 1448e619b5aa68d3daade2bedfa86518cb99dd06 +Author: Daniel Mustieles +AuthorDate: Fri Feb 7 14:47:16 2014 +0100 +Commit: Daniel Mustieles +CommitDate: Fri Feb 7 14:47:16 2014 +0100 + + Updated Spanish translation + + po/es.po | 1818 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 921 insertions(+), 897 deletions(-) + +commit 6129f2b9e3ea750df51651519592f6321d4d232a +Author: Fran Diéguez +AuthorDate: Fri Feb 7 01:27:18 2014 +0100 +Commit: Fran Diéguez +CommitDate: Fri Feb 7 01:27:18 2014 +0100 + + Updated Galician translations + + po/gl.po | 1699 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 857 insertions(+), 842 deletions(-) + +commit 63777d0c63d23c201affc8e2ea8a046a7d4390f5 +Author: Matthias Clasen +AuthorDate: Thu Feb 6 16:59:49 2014 -0500 +Commit: Matthias Clasen +CommitDate: Thu Feb 6 16:59:49 2014 -0500 + + Remove a few overlooked literals + + gio/gdbusproxy.c | 23 +++++++++++------------ + gio/ginetsocketaddress.c | 6 +++--- + 2 files changed, 14 insertions(+), 15 deletions(-) + +commit df990914cf28a4b8417597d5b2208aa2bf34e694 +Author: Matthias Clasen +AuthorDate: Thu Feb 6 16:49:29 2014 -0500 +Commit: Matthias Clasen +CommitDate: Thu Feb 6 16:49:29 2014 -0500 + + Stop using replaceable tags + + gio/gfileattribute.c | 6 +++--- + gio/gsettings.c | 8 ++++---- + glib/goption.c | 22 +++++++++------------- + glib/gtestutils.c | 14 ++++++-------- + 4 files changed, 22 insertions(+), 28 deletions(-) + +commit 5baa0f2af590d3febbcd7eba0f38dee7d1621fdc +Author: Matthias Clasen +AuthorDate: Thu Feb 6 16:48:49 2014 -0500 +Commit: Matthias Clasen +CommitDate: Thu Feb 6 16:48:49 2014 -0500 + + Stop using for ids + + Instead, use the id support in markdown headings. + + gio/gasyncresult.c | 5 +++-- + gio/gfile.c | 6 +++--- + gio/gvolume.c | 5 +++-- + glib/gstrfuncs.c | 4 ++-- + gobject/gobject.c | 4 ++-- + gobject/gparam.c | 12 ++++++------ + 6 files changed, 19 insertions(+), 17 deletions(-) + +commit 4ec314812e3357d061f902f70eb464784590a6c3 +Author: Enrico Nicoletto +AuthorDate: Thu Feb 6 18:32:02 2014 +0000 +Commit: GNOME Translation Robot +CommitDate: Thu Feb 6 18:32:02 2014 +0000 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 1672 + ++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 844 insertions(+), 828 deletions(-) + +commit 323242578524a1b6355d8451015b14ca75aa0afa +Author: Matthias Clasen +AuthorDate: Thu Feb 6 08:04:52 2014 -0500 +Commit: Matthias Clasen +CommitDate: Thu Feb 6 08:07:16 2014 -0500 + + Docs: replace by ` + + gio/gappinfo.c | 43 +++++++++++++++++------------------ + gio/gapplicationcommandline.c | 6 ++--- + gio/gasyncresult.c | 13 +++++------ + gio/gdbusauthobserver.c | 4 ++-- + gio/gdbusconnection.c | 14 ++++++------ + gio/gdbuserror.c | 2 +- + gio/gdbusinterfaceskeleton.c | 2 +- + gio/gdbusintrospection.c | 4 ++-- + gio/gdbusmethodinvocation.c | 5 ++--- + gio/gdbusobjectmanagerclient.c | 2 +- + gio/gdbusproxy.c | 8 +++---- + gio/gdesktopappinfo.c | 31 ++++++++++++------------- + gio/gfile.c | 6 ++--- + gio/gicon.c | 6 ++--- + gio/ginetsocketaddress.c | 2 +- + gio/gmount.c | 6 ++--- + gio/gnetworking.c | 2 +- + gio/gproxyresolver.c | 12 +++++----- + gio/gremoteactiongroup.c | 6 ++--- + gio/gresource.c | 6 ++--- + gio/gsettingsschema.c | 43 +++++++++++++++++------------------ + gio/gsocket.c | 44 +++++++++++++++++------------------- + gio/gsubprocess.c | 7 +++--- + gio/gtask.c | 21 +++++++++-------- + gio/gtlscertificate.c | 10 ++++----- + gio/gtlsconnection.c | 16 ++++++------- + gio/gunixsocketaddress.c | 2 +- + glib/docs.c | 4 ++-- + glib/gatomic.c | 28 +++++++++++------------ + glib/gbacktrace.c | 2 +- + glib/gbase64.c | 6 ++--- + glib/gbookmarkfile.c | 32 +++++++++++++------------- + glib/gconvert.c | 4 ++-- + glib/gdatetime.c | 11 +++++---- + glib/gdir.c | 3 +-- + glib/gerror.c | 23 +++++++++---------- + glib/gfileutils.c | 30 ++++++++++++------------- + glib/ghash.c | 36 ++++++++++++++--------------- + glib/ghook.c | 6 ++--- + glib/giochannel.c | 4 ++-- + glib/gkeyfile.c | 19 ++++++++-------- + glib/glib-init.c | 2 +- + glib/glib-unix.c | 10 ++++----- + glib/gmain.c | 15 ++++++------- + glib/goption.c | 12 +++++----- + glib/grand.c | 11 +++++---- + glib/gscanner.c | 6 ++--- + glib/gslice.c | 20 ++++++++--------- + glib/gspawn.c | 11 +++++---- + glib/gstrfuncs.c | 14 +++++------- + glib/gtestutils.c | 51 + +++++++++++++++++++++--------------------- + glib/gtimezone.c | 16 ++++++------- + glib/gtrashstack.c | 2 +- + glib/gutils.c | 2 +- + glib/gvariant-core.c | 2 +- + glib/gwin32.c | 6 ++--- + gmodule/gmodule.c | 4 ++-- + gobject/gclosure.c | 48 + +++++++++++++++++++-------------------- + gobject/genums.c | 2 +- + gobject/gobject.c | 2 +- + gobject/gparam.c | 6 ++--- + gobject/gsignal.c | 4 ++-- + 62 files changed, 371 insertions(+), 406 deletions(-) + +commit a35d8a4c77fbb9a8dd143742c29c0807ec99412b +Author: Matthias Clasen +AuthorDate: Wed Feb 5 22:57:27 2014 -0500 +Commit: Matthias Clasen +CommitDate: Thu Feb 6 08:07:16 2014 -0500 + + Docs: use quotes instead of firstterm + + gio/gapplication.c | 43 +++++++++++++++++++++---------------------- + glib/gkeyfile.c | 5 ++--- + glib/gmain.c | 10 +++++----- + glib/gsequence.c | 13 ++++++------- + glib/guniprop.c | 8 ++++---- + gobject/gclosure.c | 14 +++++++------- + gobject/gobject.c | 22 +++++++++++----------- + 7 files changed, 56 insertions(+), 59 deletions(-) + +commit b766db0878ae686032f73e0c96571dae58595d66 +Author: Matthias Clasen +AuthorDate: Wed Feb 5 22:49:54 2014 -0500 +Commit: Matthias Clasen +CommitDate: Thu Feb 6 08:07:15 2014 -0500 + + Docs: don't use option tags + + glib/docs.c | 6 +++--- + glib/ggettext.c | 8 ++++---- + glib/goption.c | 59 + +++++++++++++++++++++++++------------------------------ + glib/gtestutils.c | 30 +++++++++++++--------------- + 4 files changed, 48 insertions(+), 55 deletions(-) + +commit 4569b8ac2d7305fd7e26fd8b6bd1ecedd1fcbb02 +Author: Matthias Clasen +AuthorDate: Wed Feb 5 22:37:54 2014 -0500 +Commit: Matthias Clasen +CommitDate: Thu Feb 6 08:07:15 2014 -0500 + + Stop using starttag elements + + gio/gdbusintrospection.c | 2 +- + gio/gsettings.c | 34 ++++++++++++++++------------------ + 2 files changed, 17 insertions(+), 19 deletions(-) + +commit 73c23d9143ec73fd83923c9a0e144e3683f97452 +Author: Matthias Clasen +AuthorDate: Wed Feb 5 22:02:24 2014 -0500 +Commit: Matthias Clasen +CommitDate: Thu Feb 6 08:07:15 2014 -0500 + + Use markdown for images + + gio/gmenumodel.c | 14 ++++++-------- + glib/gconvert.c | 7 +++---- + glib/gmain.c | 9 +++++---- + glib/gstrfuncs.c | 4 ++-- + 4 files changed, 16 insertions(+), 18 deletions(-) + +commit 49c2223ee610a14a0101958acb634e37f5521ca8 +Author: Matthias Clasen +AuthorDate: Wed Feb 5 22:01:54 2014 -0500 +Commit: Matthias Clasen +CommitDate: Thu Feb 6 08:07:15 2014 -0500 + + Use a code block instead of + + glib/goption.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 0e671286fc59b4a68e8640b955c07bd874486dd5 +Author: Ryan Lortie +AuthorDate: Sun Jan 12 18:14:30 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 6 12:02:53 2014 +0000 + + GApplication: parse command line options + + Add support for parsing command line options with GApplication. + + You can add GOptionGroup and GOptionEntry using two new APIs: + g_application_add_option_group() and + g_application_add_main_option_entries(). + + Also add a "handle-local-options" signal that allows handling of + commandline arguments in the local process without having to override + local_command_line. + + As a special feature, you can have a %NULL @arg_data in a GOptionEntry + which will cause the argument to be stored in a GVariantDict. This + dictionary is available for inspection and modification by the + "handle-local-options" signal and can be forwarded to the primary + instance in cases of command line invocation (where it can be fetched + using g_application_command_line_get_options()). + + https://bugzilla.gnome.org/show_bug.cgi?id=721977 + + docs/reference/gio/gio-sections.txt | 3 + + gio/gapplication.c | 725 + ++++++++++++++++++++++++++++-------- + gio/gapplication.h | 11 +- + gio/gapplicationcommandline.c | 56 +++ + gio/gapplicationcommandline.h | 3 + + gio/gapplicationimpl-dbus.c | 6 +- + gio/gapplicationimpl.h | 2 +- + 7 files changed, 655 insertions(+), 151 deletions(-) + +commit 7f36233042691d942982c4e6c4ea16f7e27aeb6b +Author: Ryan Lortie +AuthorDate: Wed Feb 5 17:11:50 2014 +0000 +Commit: Ryan Lortie +CommitDate: Thu Feb 6 12:02:53 2014 +0000 + + GOption: fix bug in strv mode + + We are a bit too aggressive about freeing memory in strv mode. Only + free it in the case that we actually set the pointer to NULL. + + Uncovered by the GApplication tests. + + glib/goption.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit 6939add283f948864e288390689fc12b9c61cbb1 +Author: Theppitak Karoonboonyanan +AuthorDate: Thu Feb 6 10:24:49 2014 +0700 +Commit: Theppitak Karoonboonyanan +CommitDate: Thu Feb 6 10:24:49 2014 +0700 + + Updated Thai translation + + po/th.po | 1842 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1018 insertions(+), 824 deletions(-) + +commit cb588d45320c5a6b767d299ebd85306d45e1773c +Author: Matthias Clasen +AuthorDate: Wed Feb 5 21:23:28 2014 -0500 +Commit: Matthias Clasen +CommitDate: Wed Feb 5 21:23:28 2014 -0500 + + Convert external links to markdown syntax + + gio/gappinfo.c | 5 ++--- + gio/gapplication.c | 2 +- + gio/gapplicationcommandline.c | 9 ++++++--- + gio/gcontenttype.c | 10 +++++++--- + gio/gdbusinterfaceskeleton.c | 10 +++++----- + gio/gdbusintrospection.c | 2 +- + gio/gdbusobjectmanager.c | 4 ++-- + gio/gdbusobjectmanagerclient.c | 4 ++-- + gio/gdbusobjectmanagerserver.c | 4 ++-- + gio/gdbusproxy.c | 7 ++++--- + gio/gdesktopappinfo.c | 15 ++++++++------- + gio/gfile.c | 3 ++- + gio/gfiledescriptorbased.c | 2 +- + gio/gmount.c | 6 ++++-- + gio/gsettings.c | 3 ++- + gio/gtestdbus.c | 3 ++- + gio/gunixconnection.c | 2 +- + gio/gunixfdlist.c | 2 +- + gio/gunixfdmessage.c | 2 +- + gio/gunixinputstream.c | 2 +- + gio/gunixmounts.c | 2 +- + gio/gunixoutputstream.c | 2 +- + gio/gunixsocketaddress.c | 2 +- + gio/gwin32inputstream.c | 2 +- + gio/gwin32outputstream.c | 2 +- + glib/docs.c | 2 +- + glib/gbase64.c | 8 +++++--- + glib/gbookmarkfile.c | 10 +++++----- + glib/ghash.c | 3 ++- + glib/ghmac.c | 3 ++- + glib/ghostutils.c | 6 +++--- + glib/gkeyfile.c | 24 +++++++++++------------ + glib/gmarkup.c | 8 ++++---- + glib/gmessages.c | 8 ++++---- + glib/grand.c | 5 ++--- + glib/gregex.c | 9 +++++---- + glib/gslice.c | 6 ++++-- + glib/gtimer.c | 10 +++++----- + glib/gtimezone.c | 19 +++++++++---------- + glib/gunidecomp.c | 11 +++++++---- + glib/guniprop.c | 16 +++++++++------- + glib/gurifuncs.c | 5 +++-- + glib/gutils.c | 43 + +++++++++++++++++++++--------------------- + glib/gvarianttype.c | 10 +++++----- + gobject/gclosure.c | 4 ++-- + 45 files changed, 170 insertions(+), 147 deletions(-) + +commit 0cc20b7e0b8376a1b7c14a1a712d1f22a8c0eac0 +Author: Matthias Clasen +AuthorDate: Wed Feb 5 20:17:46 2014 -0500 +Commit: Matthias Clasen +CommitDate: Wed Feb 5 20:17:46 2014 -0500 + + Don't use in docs + + Switch to simpler markdown, `foo`. + + gio/gdesktopappinfo.c | 10 +++++----- + gio/gfiledescriptorbased.c | 6 +++--- + gio/gresource.c | 7 ++++--- + gio/gsettings.c | 5 ++--- + gio/gsettingsbackend.c | 2 +- + gio/gsettingsschema.c | 15 +++++++-------- + gio/gtestdbus.c | 8 ++++---- + gio/gunixconnection.c | 6 +++--- + gio/gunixfdlist.c | 6 +++--- + gio/gunixfdmessage.c | 8 ++++---- + gio/gunixinputstream.c | 6 +++--- + gio/gunixmounts.c | 9 ++++----- + gio/gunixoutputstream.c | 6 +++--- + gio/gunixsocketaddress.c | 6 +++--- + gio/gvolume.c | 9 ++++----- + gio/gwin32inputstream.c | 6 +++--- + gio/gwin32outputstream.c | 6 +++--- + glib/docs.c | 4 ++-- + glib/gconvert.c | 3 +-- + glib/ggettext.c | 6 +++--- + glib/grand.c | 4 ++-- + glib/gstrfuncs.c | 8 +++----- + glib/gtestutils.c | 16 ++++++++-------- + glib/gtimezone.c | 11 +++++------ + glib/gunidecomp.c | 12 ++++++------ + glib/gutils.c | 26 ++++++++++++-------------- + gmodule/gmodule.c | 11 +++++------ + 27 files changed, 106 insertions(+), 116 deletions(-) + +commit 111803030d54b192ca1edd25bbde90130eaff2a9 +Author: Matthias Clasen +AuthorDate: Wed Feb 5 19:32:41 2014 -0500 +Commit: Matthias Clasen +CommitDate: Wed Feb 5 19:32:41 2014 -0500 + + Don't use in docs + + Switch to simpler markdown, `foo`. + + gio/gappinfo.c | 22 +++++++++--------- + gio/gapplicationcommandline.c | 6 ++--- + gio/gdesktopappinfo.c | 12 +++++----- + gio/giomodule.c | 6 ++--- + gio/gresource.c | 11 ++++----- + gio/gsettingsbackend.c | 4 ++-- + gio/gsettingsschema.c | 5 ++--- + gio/gtestdbus.c | 14 +++++++----- + glib/gcharset.c | 6 ++--- + glib/gconvert.c | 35 ++++++++++++++--------------- + glib/gfileutils.c | 6 ++--- + glib/ggettext.c | 2 +- + glib/gkeyfile.c | 5 +++-- + glib/glib-init.c | 2 +- + glib/gmessages.c | 28 +++++++++++------------ + glib/grand.c | 7 +++--- + glib/gspawn.c | 38 +++++++++++++++---------------- + glib/gtestutils.c | 4 ++-- + glib/gtimezone.c | 39 ++++++++++++++++---------------- + glib/gutils.c | 52 + +++++++++++++++++++++---------------------- + 20 files changed, 151 insertions(+), 153 deletions(-) + +commit 2fda00af3585b9b589268299cf3b27abd891b80f +Author: Shankar Prasad +AuthorDate: Wed Feb 5 15:19:25 2014 +0530 +Commit: Shankar Prasad +CommitDate: Wed Feb 5 15:19:25 2014 +0530 + + updated kn.po + + po/kn.po | 1408 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 778 insertions(+), 630 deletions(-) + +commit 2b8edf234c9f1926ca2b24bf431fc1c8dc7c4ecf +Author: Philip Withnall +AuthorDate: Thu Nov 21 17:39:16 2013 +0000 +Commit: Philip Withnall +CommitDate: Wed Feb 5 09:40:49 2014 +0000 + + gvariant: Document the need to cast varargs when constructing + GVariants + + Slightly expand on the documentation about casting varargs when + constructing GVariants, and link to it from all the functions + where it’s + a necessary consideration. + + Add an example of passing flags to a ‘t’ type variable (guint64). + Assuming the flags enum does not have many members, the flag variable + will be 32 bits wide, and needs an explicit cast to be passed into + g_variant_new() as a 64-bit value. + + https://bugzilla.gnome.org/show_bug.cgi?id=712837 + + docs/reference/glib/gvariant-varargs.xml | 1 + + glib/gvariant-parser.c | 12 ++++++++++++ + glib/gvariant.c | 23 +++++++++++++++++++++++ + 3 files changed, 36 insertions(+) + +commit 3f3d2976d1102eb202e58e42793a511d01d10604 +Author: Ryan Lortie +AuthorDate: Tue Feb 4 14:22:55 2014 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 4 14:23:14 2014 +0000 + + return_if_fail vs. return_val_if_fail fix + + glib/gvariant.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 78ec35f7abab5b65cbc8b71bb89441bf691b5fce +Author: Ryan Lortie +AuthorDate: Tue Jan 28 10:55:44 2014 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 4 12:24:19 2014 +0000 + + gobject: box GVariantDict + + We will want to use this in GApplication for a signal and a property. + + https://bugzilla.gnome.org/show_bug.cgi?id=625408 + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gboxed.c | 1 + + gobject/glib-types.h | 11 +++++++++++ + 3 files changed, 13 insertions(+) + +commit 14e62d1fa29442866f3230e47e736acc54394906 +Author: Ryan Lortie +AuthorDate: Fri Jan 24 09:42:13 2014 -0500 +Commit: Ryan Lortie +CommitDate: Tue Feb 4 11:56:06 2014 +0000 + + add GVariantDict + + ...the long-requested mutable dictionary helper for GVariant. + + https://bugzilla.gnome.org/show_bug.cgi?id=625408 + + docs/reference/glib/glib-sections.txt | 15 + + glib/gvariant.c | 511 + ++++++++++++++++++++++++++++++++++ + glib/gvariant.h | 47 ++++ + 3 files changed, 573 insertions(+) + +commit 7a76ab6f48da18faf5a9528a6612c8dbbe0d60a8 +Author: Matthias Clasen +AuthorDate: Mon Feb 3 19:34:15 2014 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 3 19:34:15 2014 -0500 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e7db49b6e34edae3b02c34ea5acd9699df0c5ef8 +Author: Matthias Clasen +AuthorDate: Mon Feb 3 19:06:53 2014 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 3 19:06:53 2014 -0500 + + 2.39.4 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f7a43ba87df15486386fe27727d99b1c9aeb7d34 +Author: Matthias Clasen +AuthorDate: Mon Feb 3 17:37:42 2014 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 3 17:37:42 2014 -0500 + + Updates + + NEWS | 31 +++++++++++++++++++++++++++++++ + 1 file changed, 31 insertions(+) + +commit c8476e9f8f1ca99f7d30a0505268abc4049fb0c6 +Author: Matthias Clasen +AuthorDate: Mon Feb 3 17:10:45 2014 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 3 17:10:45 2014 -0500 + + Fix a typo + + glib/gthread.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5d71376763744c26005e918d21f3bd26d884388e +Author: Philip Withnall +AuthorDate: Fri Jan 31 12:16:15 2014 +0000 +Commit: Philip Withnall +CommitDate: Mon Feb 3 07:55:44 2014 +0000 + + gmain: Note that g_source_destroy() can be called multiple times + + https://bugzilla.gnome.org/show_bug.cgi?id=723360 + + glib/gmain.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit e1ea008fc836b5d358419029b2d7c664121ccaf6 +Author: Chao-Hsiung Liao +AuthorDate: Sun Feb 2 20:09:16 2014 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Sun Feb 2 20:09:16 2014 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 1465 + ++++++++++++++++++++++++++++++++++------------------------- + po/zh_TW.po | 1465 + ++++++++++++++++++++++++++++++++++------------------------- + 2 files changed, 1692 insertions(+), 1238 deletions(-) + +commit ecadb5a92d8707e60cab9e5db19fb0705846415c +Author: Emmanuele Bassi +AuthorDate: Sun Feb 2 09:32:09 2014 +0000 +Commit: Emmanuele Bassi +CommitDate: Sun Feb 2 09:35:17 2014 +0000 + + tests: Remove a compiler warning + + glib/tests/slice.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a2c42b4a799283f5e811acbd99d58b68eaa7bd3e +Author: Emmanuele Bassi +AuthorDate: Sun Feb 2 09:30:30 2014 +0000 +Commit: Emmanuele Bassi +CommitDate: Sun Feb 2 09:30:30 2014 +0000 + + array: Remove a compiler warning + + The GRealPtrArray variable is not necessary: we're accessing only + public + fields of GPtrArray. + + glib/garray.c | 1 - + 1 file changed, 1 deletion(-) + +commit 017349823c0304b1e10c24c832adfecc3d227107 +Author: Emmanuele Bassi +AuthorDate: Sun Feb 2 09:28:31 2014 +0000 +Commit: Emmanuele Bassi +CommitDate: Sun Feb 2 09:28:31 2014 +0000 + + array: Fix compilation + + glib/garray.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7cf221aadb4f9bd6e7f015fb327ae551bb52b08f +Author: Antoine Jacoutot +AuthorDate: Tue Jan 21 17:25:35 2014 +0100 +Commit: Antoine Jacoutot +CommitDate: Sun Feb 2 10:08:05 2014 +0100 + + gio: extend the system_internal lists with BSD paths + + gio/gunixmounts.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit d8bbc77cb39a9dee1af7f2e97b7b23bafa19fea3 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 21:48:35 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 21:48:35 2014 -0500 + + GVariant: Convert docs to markdown + + Specifically, convert the sections to markdown syntax. + + glib/gvariant.c | 357 + +++++++++++++++++++++++++------------------------------- + 1 file changed, 162 insertions(+), 195 deletions(-) + +commit 9b6cc973a00bfa4bd9dccbfbe38518587e22a614 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 21:41:57 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 21:41:57 2014 -0500 + + Don't use the varname tag + + This is just an environment variable, after all. + + glib/gtimezone.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit d282bd3929d4d7df9f9833ffc76ec5c1b1b8b89f +Author: Matthias Clasen +AuthorDate: Sat Feb 1 21:40:10 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 21:40:10 2014 -0500 + + gmain: Convert docs to markdown + + Specifically, convert sections to markdown syntax and + drop all the para tags. + + glib/gmain.c | 29 ++++++++++++++++------------- + 1 file changed, 16 insertions(+), 13 deletions(-) + +commit ce87d6420c9367b029c9d686cff04f913539b126 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 21:18:29 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 21:19:00 2014 -0500 + + Don't use the quote tag + + It was only used in two places, and we can easily do without. + + gio/gdbusconnection.c | 7 +++---- + glib/gthread.c | 10 +++++----- + 2 files changed, 8 insertions(+), 9 deletions(-) + +commit 2f26bad026057efc7ea7e4433e3ff4635ba36e61 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:54:18 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:54:18 2014 -0500 + + Remove an unnecessary paragraph + + glib/gvarianttype.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit 8945da08ac71267d70c0d062b03070303e5b6286 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:53:50 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:53:50 2014 -0500 + + Make gtk-doc find another symbol + + glib/gvariant-parser.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit efae1126db66e74db84b6f054c689aabe32502a8 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:53:17 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:53:17 2014 -0500 + + GTree: formatting fixes + + glib/gtree.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 26b4f6b41c40a6989af2c7a2da1f78d3e497a652 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:51:53 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:51:53 2014 -0500 + + gstrfuncs: Fix up gtk-doc warnings + + glib/gstrfuncs.c | 42 +++++++++++++++++++++--------------------- + glib/gstrfuncs.h | 3 +-- + 2 files changed, 22 insertions(+), 23 deletions(-) + +commit 71d842674faf2cd0a2d85808d64132e9aa206fd2 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:50:57 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:50:57 2014 -0500 + + grand: formatting cleanups + + glib/grand.c | 224 + ++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 121 insertions(+), 103 deletions(-) + +commit 3bbd15383f72cd9b856a193d8fd083bcf6547e8f +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:50:33 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:50:33 2014 -0500 + + Formatting cleanups + + glib/gpoll.h | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit ca462d1b5911f1858528e9149929d53123ddc6da +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:49:59 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:49:59 2014 -0500 + + Avoid another gtk-doc warning + + glib/gpattern.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit acdd7015fb779ad2484f31b01d463009a42ee1e1 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:49:21 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:49:21 2014 -0500 + + Avoid a gtk-doc warning + + glib/gmessages.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7548dab9595845096d249ed203a51c61abf9d0d6 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:48:52 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:48:52 2014 -0500 + + GIOChannel: Move some docs where they are looked for + + glib/giochannel.c | 35 ++++++++++++++--------------------- + 1 file changed, 14 insertions(+), 21 deletions(-) + +commit 23dd2b01a180a6db08e494d9d9ed4927ff27ba0a +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:47:23 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:47:23 2014 -0500 + + Avoid some gtk-doc warnings + + glib/ghook.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a556afc97003815d95144901ad8833402b0839b4 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:46:43 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:46:43 2014 -0500 + + Drop another use of xinclude + + glib/gbookmarkfile.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit cbd585495c5e123490edf9804c5e2df26879668a +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:45:25 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:46:29 2014 -0500 + + GArray: Documentation cleanups + + glib/garray.c | 284 + +++++++++++++++++++++++++++++----------------------------- + glib/garray.h | 2 +- + 2 files changed, 145 insertions(+), 141 deletions(-) + +commit 8f57d6dd1dec74c17086696ca2223814a2dd1818 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:43:53 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:43:53 2014 -0500 + + Docs: Avoid a 'returns' at the beginning of the line + + This confuses gtk-doc. + + glib/docs.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 1c33c14c044ec3c3c14cb847e2112872f56aed36 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:43:01 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:43:01 2014 -0500 + + Add some more deprecation guards to shut up gtk-doc + + glib/deprecated/gcache.h | 4 ++++ + glib/deprecated/gmain.h | 3 +++ + glib/deprecated/gthread.h | 4 ++++ + 3 files changed, 11 insertions(+) + +commit 6566f746f615673b2a6eeaf44d3e9c4373900c5a +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:41:47 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:41:47 2014 -0500 + + Drop use of xinclude in GTestDBus docs + + gio/gtestdbus.c | 10 +++------- + 1 file changed, 3 insertions(+), 7 deletions(-) + +commit 95aba90d090dea84209982999b81ada074733308 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:41:12 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:41:12 2014 -0500 + + Docs: Remove another use of xinclude + + gio/gsettings.c | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +commit 0bfb09daf13c570ba863d40518f12390531aee47 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 20:40:41 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 20:40:41 2014 -0500 + + Fix up missing symbols in glib-sections.txt + + docs/reference/glib/glib-sections.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 306dfb32923ddde09fb72044aa8aa1349c969569 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 15:26:38 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 15:26:38 2014 -0500 + + Drop use of the command tag + + It is more useful to link to the included man page, anyway. + + gio/gdbusproxy.c | 3 +-- + gio/gresource.c | 4 ++-- + gio/gsettingsschema.c | 4 ++-- + glib/gbacktrace.c | 34 +++++++++++++++++----------------- + gmodule/gmodule.c | 3 +-- + 5 files changed, 23 insertions(+), 25 deletions(-) + +commit 8bdc089ca46f20d08487d5c1b41610459a9b4b51 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 15:25:43 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 15:25:43 2014 -0500 + + Docs: Drop use of indexterm tags + + These have not been making it into the index, anyway. + + gio/gasyncresult.c | 18 +++++++++--------- + gio/gfile.c | 8 ++++---- + 2 files changed, 13 insertions(+), 13 deletions(-) + +commit adf892e96af403b8950dff1a370e4270ffaebc62 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 15:11:49 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 15:11:49 2014 -0500 + + Annotate all examples with their language + + The C ones, at least. + + gio/gactionmap.c | 2 +- + gio/gasyncinitable.c | 2 +- + gio/gasyncresult.c | 2 +- + gio/gcancellable.c | 2 +- + gio/gdbusconnection.c | 4 ++-- + gio/gdbuserror.c | 2 +- + gio/gdbusproxy.c | 6 +++--- + gio/gfileenumerator.c | 2 +- + gio/giomodule.c | 4 ++-- + gio/gmemoryoutputstream.c | 2 +- + gio/gsettingsschema.c | 4 ++-- + gio/gsimpleaction.c | 2 +- + gio/gsimpleasyncresult.c | 2 +- + gio/gsocketconnectable.c | 2 +- + gio/gtask.c | 8 ++++---- + gio/gthemedicon.c | 4 ++-- + gio/gvolume.c | 4 ++-- + glib/docs.c | 32 ++++++++++++++++---------------- + glib/garray.c | 8 ++++---- + glib/gasyncqueue.c | 2 +- + glib/gbacktrace.c | 2 +- + glib/gdate.c | 4 ++-- + glib/gerror.c | 18 +++++++++--------- + glib/gfileutils.c | 2 +- + glib/ggettext.c | 8 ++++---- + glib/ghash.c | 2 +- + glib/glist.c | 16 ++++++++-------- + glib/gmain.c | 12 ++++++------ + glib/gmarkup.c | 8 ++++---- + glib/gmessages.c | 8 ++++---- + glib/goption.c | 4 ++-- + glib/gregex.c | 6 +++--- + glib/gslice.c | 4 ++-- + glib/gslist.c | 8 ++++---- + glib/gstrfuncs.c | 6 +++--- + glib/gtestutils.c | 8 ++++---- + glib/gthread-posix.c | 10 +++++----- + glib/gthread.c | 16 ++++++++-------- + glib/gvariant-parser.c | 6 +++--- + glib/gvariant.c | 8 ++++---- + gmodule/gmodule.c | 2 +- + gobject/gbinding.c | 6 +++--- + gobject/gclosure.c | 8 ++++---- + gobject/genums.c | 2 +- + gobject/gobject.c | 22 +++++++++++----------- + gobject/gtype.c | 2 +- + gobject/gtypeplugin.c | 2 +- + gobject/gvalue.c | 2 +- + gobject/gvaluearray.c | 4 ++-- + 49 files changed, 151 insertions(+), 151 deletions(-) + +commit 701f00f12515dfad2092842f34ccbf11679406e3 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 15:11:00 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 15:11:00 2014 -0500 + + GApplicationCommandline: Shorten embedded examples + + Just show relevant fragments of the three examples inline, + and link to the full sources. This lets us get rid of + xinclude markup. + + gio/gapplicationcommandline.c | 173 + +++++++++++++++++++++++++++++------------- + 1 file changed, 121 insertions(+), 52 deletions(-) + +commit 77c4ff80dcf487d0a0f8b82e9c3e721618724bd0 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 12:19:04 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 12:19:04 2014 -0500 + + docs: Stop using the function tag + + gio/gactiongroup.c | 2 +- + glib/deprecated/gthread-deprecated.c | 10 +++++----- + glib/gasyncqueue.c | 6 +++--- + glib/gmessages.c | 19 ++++++++++--------- + glib/gpattern.c | 6 +++--- + glib/grand.c | 32 + +++++++++++++++----------------- + glib/gregex.c | 2 +- + glib/gthread-posix.c | 2 +- + glib/gthread.c | 5 ++--- + 9 files changed, 41 insertions(+), 43 deletions(-) + +commit faa007c8274d786d070884834b080e47a7951fa9 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 12:09:14 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 12:09:14 2014 -0500 + + Don't use computeroutput tag + + There was one occurrence of this. + + glib/gbacktrace.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 42cf80780b4fbbe9063ed3d962bb13f341757b3f +Author: Matthias Clasen +AuthorDate: Sat Feb 1 11:57:13 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 12:00:30 2014 -0500 + + Docs: Big entity cleanup + + Strip lots of entity use from |[ ]| examples (which are now + implicit CDATA). Also remove many redundant uses of . + + gio/gappinfo.c | 6 +++--- + gio/gasyncresult.c | 6 +++--- + gio/gcancellable.c | 14 ++++++++------ + gio/gdbusconnection.c | 2 +- + gio/gdbuserror.c | 11 ++++++----- + gio/gdbusmessage.c | 26 +++++++++++++------------- + gio/gdbusobjectmanagerserver.c | 7 +++---- + gio/gdbusobjectskeleton.c | 6 +++--- + gio/gdbusproxy.c | 4 ++-- + gio/gemblemedicon.c | 4 ++-- + gio/gfileenumerator.c | 4 ++-- + gio/gfileinfo.c | 2 +- + gio/giomodule.c | 4 ++-- + gio/gsettings.c | 2 +- + gio/gsimpleasyncresult.c | 4 ++-- + gio/gsocket.c | 4 ++-- + gio/gsocketconnectable.c | 22 +++++++++++----------- + gio/gsrvtarget.c | 4 ++-- + gio/gtlscertificate.c | 2 +- + glib/docs.c | 2 +- + glib/garray.c | 8 ++++---- + glib/gbacktrace.c | 4 ++-- + glib/gbookmarkfile.c | 4 +++- + glib/gdate.c | 2 +- + glib/gerror.c | 21 +++++++++++---------- + glib/ggettext.c | 8 ++++---- + glib/gmain.c | 10 +++++----- + glib/gmarkup.c | 12 ++++++------ + glib/goption.c | 8 ++++---- + glib/gpoll.c | 2 +- + glib/gquark.c | 2 +- + glib/gregex.c | 14 +++++++------- + glib/gstrfuncs.c | 2 +- + glib/gthread.c | 16 ++++++++-------- + gobject/gclosure.c | 16 ++++++++-------- + gobject/gobject.c | 16 ++++++++-------- + gobject/gparam.c | 12 ++++++------ + gobject/gvalue.c | 28 ++++++++++++++-------------- + 38 files changed, 163 insertions(+), 158 deletions(-) + +commit 6972264c7daad6688f3a2908c84760892121917d +Author: Matthias Clasen +AuthorDate: Sat Feb 1 11:08:23 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 11:08:23 2014 -0500 + + GModule: Move docs away from markup + + gmodule/gmodule.c | 22 +++++++++------------- + 1 file changed, 9 insertions(+), 13 deletions(-) + +commit 4ab94a268369481cb4992346ecdc1faae348c5c4 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:48:36 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:48:36 2014 -0500 + + gtestdbus: Use markdown for sections + + gio/gtestdbus.c | 125 + ++++++++++++++++++++++++++------------------------------ + 1 file changed, 57 insertions(+), 68 deletions(-) + +commit eb69bc6aa4cb1d9600337fd19a9109f938606c5a +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:48:02 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:48:02 2014 -0500 + + GSettings: use markdown for sections + + gio/gsettings.c | 78 + ++++++++++++++++++++++++++------------------------------- + 1 file changed, 36 insertions(+), 42 deletions(-) + +commit b5fb6b4bbfe5903be06a515449a07cf1f1119c26 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:47:09 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:47:09 2014 -0500 + + gconvert: Stop using footnotes + + These don't really work in the generated docs, so just copy + the content in the few places. + + glib/gconvert.c | 73 + ++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 44 insertions(+), 29 deletions(-) + +commit 60b623d3fb70c09cb08e6c088b76c59d4316e132 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:19:07 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:45 2014 -0500 + + GObject: Convert docs to markdown + + In particular, convert lists to markdown syntax. + + gobject/gclosure.c | 27 ++++++++------------ + gobject/gobject.c | 65 ++++++---------------------------------------- + gobject/gsignal.c | 29 +++++++++------------ + gobject/gtypemodule.c | 30 ++++++++-------------- + gobject/gtypeplugin.c | 71 + ++++++++++++++++++++++----------------------------- + 5 files changed, 72 insertions(+), 150 deletions(-) + +commit c93c05faa32aa030ff7aa604b5bb01871716cb2c +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:18:07 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:45 2014 -0500 + + gregex: Convert docs to markdown + + In particular, convert lists to markdown syntax. + + glib/gregex.c | 33 ++++++--------------------------- + 1 file changed, 6 insertions(+), 27 deletions(-) + +commit 8f486ceebb611bb7b2cffbf6b7a247f9b7dedb2e +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:17:28 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:44 2014 -0500 + + goption: Convert docs to markdown + + In particular, convert lists to markdown syntax. + + glib/goption.c | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +commit f7a604699815b8189d769e960e5469b67367e0e6 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:17:04 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:44 2014 -0500 + + gmessages: Convert docs to markdown + + In particular, convert lists to markdown syntax. + + glib/gmessages.c | 25 ++++++++----------------- + 1 file changed, 8 insertions(+), 17 deletions(-) + +commit 99b53a0aaf5432057849fbf98b3666b688974030 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:15:52 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:44 2014 -0500 + + gmarkup: Convert docs to markdown + + In particular, convert lists to markdown syntax. + + glib/gmarkup.c | 47 ++++++++++++++++++++++++----------------------- + 1 file changed, 24 insertions(+), 23 deletions(-) + +commit 85d612a968c1d02a958f57c38d1ce90ceea4afc9 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:15:20 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:44 2014 -0500 + + gmain: Convert docs to markdown + + In particular, convert lists to markdown syntax. + + glib/gmain.c | 27 +++++++++------------------ + 1 file changed, 9 insertions(+), 18 deletions(-) + +commit c4da8f426a89f85fa752e262b58ba650d47d38cd +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:14:59 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:44 2014 -0500 + + GKeyFile: Convert docs to markdown + + In particular, convert lists to markdown syntax. + + glib/gkeyfile.c | 29 +++++++++++++++-------------- + 1 file changed, 15 insertions(+), 14 deletions(-) + +commit 9f896667f8fc8b9596a50242116782567710c3a7 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:14:41 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:44 2014 -0500 + + GIOChannel: remove unneeded markup from the docs + + glib/giochannel.c | 56 + +++++++++++++++++++++---------------------------------- + 1 file changed, 21 insertions(+), 35 deletions(-) + +commit 22f8e8461cfc9bdc20015129ae221c6f1ed4a125 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:14:08 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:44 2014 -0500 + + ggettext: Convert docs to markdown + + In particular, convert lists to markdown syntax. + + glib/ggettext.c | 20 +++++++++++--------- + 1 file changed, 11 insertions(+), 9 deletions(-) + +commit fab4f91907447635b648c908a685aeef0c8b0c21 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:13:41 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:44 2014 -0500 + + fileutils: Convert docs to markdown + + In particular, convert lists to markdown syntax. + + glib/gfileutils.c | 25 ++++++++++--------------- + 1 file changed, 10 insertions(+), 15 deletions(-) + +commit d76f4455f1248b88473d8acbb19a9152f800c269 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:13:17 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:44 2014 -0500 + + GError: Convert docs to markdown + + In particular, convert lists to markdown syntax. + + glib/gerror.c | 108 + +++++++++++++++++++++++----------------------------------- + 1 file changed, 43 insertions(+), 65 deletions(-) + +commit ef3796d3fd8bed9b4b6ccd0abf7d309634f6c83a +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:11:38 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:43 2014 -0500 + + GDateTime: Convert docs to markdown + + In particular convert sections and lists to markdown syntax. + + glib/gdatetime.c | 320 + ++++++++++++------------------------------------------- + 1 file changed, 68 insertions(+), 252 deletions(-) + +commit 5cf14b0cc25b789be627573f7051f69b5d696a03 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 10:10:19 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:43 2014 -0500 + + gconvert: Convert docs to markdown + + In particular, we convert sections and lists to markdown syntax + here. + + glib/gconvert.c | 143 + +++++++++++++++++++++++++------------------------------- + 1 file changed, 63 insertions(+), 80 deletions(-) + +commit 07506f6c579c309724abe20dd843eb60716c94cc +Author: Matthias Clasen +AuthorDate: Sat Feb 1 09:50:23 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:43 2014 -0500 + + kqueue: Don't use doc comments + + This is not public API, so no need to confuse gtk-doc by + documentation that it needs to ignore. Also, no need for + markup in here. + + gio/kqueue/kqueue-thread.c | 34 ++++++++++++++-------------------- + 1 file changed, 14 insertions(+), 20 deletions(-) + +commit 293fdc312c0eabd8407e2f60e1135fb08bfcfe03 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 00:27:22 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:43 2014 -0500 + + GVariantType: convert docs to markdown + + Convert lists to markdown syntax, and remove lots of . + + glib/gvarianttype.c | 190 + +++++++++++++++++++++------------------------------- + 1 file changed, 76 insertions(+), 114 deletions(-) + +commit fe9e812d7f606fd8df6809ab01e45addaffa1e66 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 00:26:58 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:43 2014 -0500 + + GVariant: convert docs to markdown + + Convert lists to markdown syntax, and remove a lot of . + + glib/gvariant.c | 21 +++++++++------------ + 1 file changed, 9 insertions(+), 12 deletions(-) + +commit bc982223eb439bec711050db44c20b6c51e3da93 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 00:26:38 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:43 2014 -0500 + + gthread: Convert docs to markdown + + Convert lists to markdown syntax. + + glib/gthread.c | 75 + ++++++++++++++++++++++++++-------------------------------- + 1 file changed, 34 insertions(+), 41 deletions(-) + +commit 4308d2be9aa66071c0ccdcb9c5a0cafe722252a5 +Author: Matthias Clasen +AuthorDate: Sat Feb 1 00:26:05 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:43 2014 -0500 + + testutils: Convert docs to markdown + + Convert lists to markdown. + + glib/gtestutils.c | 134 + ++++++++++++++++-------------------------------------- + 1 file changed, 38 insertions(+), 96 deletions(-) + +commit 77a60147538275710318778335205a796269fad0 +Author: Matthias Clasen +AuthorDate: Fri Jan 31 23:47:57 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:43 2014 -0500 + + GApplication: Convert docs to markdown + + gio/gapplication.c | 38 ++++++++++++++++++++++++-------------- + 1 file changed, 24 insertions(+), 14 deletions(-) + +commit 01be2876893f70eed25f479545e8fb632470c0f5 +Author: Matthias Clasen +AuthorDate: Fri Jan 31 23:47:42 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:43 2014 -0500 + + gdbusnameowning: Convert docs to markdown + + gio/gdbusnameowning.c | 127 + +++++++++++++++++++++++++------------------------- + 1 file changed, 63 insertions(+), 64 deletions(-) + +commit 3247d117042c834bc8d8e3737147d50e804f7f60 +Author: Matthias Clasen +AuthorDate: Fri Jan 31 23:42:40 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:42 2014 -0500 + + GDBusConnection: Convert docs to markdown + + And straighten out capitalization across the file. + + gio/gdbusconnection.c | 724 + +++++++++++++++++++++++++------------------------- + 1 file changed, 368 insertions(+), 356 deletions(-) + +commit fee9194adeac05d843280c8726641e6004e7bc8a +Author: Matthias Clasen +AuthorDate: Fri Jan 31 23:01:30 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:42 2014 -0500 + + GIcon: Convert docs to markdown + + gio/gicon.c | 19 +++++++------------ + 1 file changed, 7 insertions(+), 12 deletions(-) + +commit 192ddc0792b552ffb653e0ab43f04a25cfd678d9 +Author: Matthias Clasen +AuthorDate: Fri Jan 31 23:01:13 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:42 2014 -0500 + + GDBusProxy: Convert docs to markdown + + gio/gdbusproxy.c | 31 +++++++++++++------------------ + 1 file changed, 13 insertions(+), 18 deletions(-) + +commit 54578e4c34f8ad7dc315afb18923cbac857ff43d +Author: Matthias Clasen +AuthorDate: Fri Jan 31 23:00:58 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:42 2014 -0500 + + GMenuModel: Convert docs to markdown + + gio/gmenumodel.c | 56 + ++++++++++++++++++++++---------------------------------- + 1 file changed, 22 insertions(+), 34 deletions(-) + +commit 4a1710862d6c18e4280c595f380f3b210145432c +Author: Matthias Clasen +AuthorDate: Fri Jan 31 22:49:44 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:42 2014 -0500 + + GSimpleProxyResolver: convert docs to markdown + + gio/gsimpleproxyresolver.c | 76 + ++++++++++++++++++---------------------------- + 1 file changed, 29 insertions(+), 47 deletions(-) + +commit d7b9f209904bcd5fdee9a902a1302c08a1ca9552 +Author: Matthias Clasen +AuthorDate: Fri Jan 31 22:42:21 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:42 2014 -0500 + + GSocketClient: convert docs to markdown + + gio/gsocketclient.c | 108 + +++++++++++++++++----------------------------------- + 1 file changed, 34 insertions(+), 74 deletions(-) + +commit ba307a0c52599097c3d11c5a88eb28d9f0f48e96 +Author: Matthias Clasen +AuthorDate: Fri Jan 31 22:29:13 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 1 10:22:42 2014 -0500 + + GTask: convert long desc to markdown + + Use markdown sections and lists here. + + gio/gtask.c | 264 + +++++++++++++++++++++++++++--------------------------------- + 1 file changed, 118 insertions(+), 146 deletions(-) + +commit ed2bb953301b47bf34ff9c76b5931285d8434654 +Author: Dan Winship +AuthorDate: Sat Feb 1 13:37:07 2014 +0100 +Commit: Dan Winship +CommitDate: Sat Feb 1 13:37:07 2014 +0100 + + gio/tests/network-address: fix for systems with large ifindexes + + In some virtualization setups, ifindexes can end up becoming very + large, and so the existing code that assumes that *some* interface + must have an index less than 255 fails. + + Fix this by explicitly looking for "lo" first. And then if that fails + (on Windows, or other systems where the loopback interface is not + called "lo"), try indexes up to 1024 rather than 255. + + https://bugzilla.gnome.org/show_bug.cgi?id=723048 + + gio/tests/network-address.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +commit 76330899a1b0f8f8dea1912e7f24d73eb3adc1c0 +Author: Dan Winship +AuthorDate: Sat Feb 1 13:27:19 2014 +0100 +Commit: Dan Winship +CommitDate: Sat Feb 1 13:27:19 2014 +0100 + + Unbreak glib/tests/markup-parse after FSF address change patch + + glib/tests/markups/valid-14.gmarkup | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 243b264fca673d0a4e69cad3d0984474324f86a9 +Author: Dan Winship +AuthorDate: Tue Jan 28 14:46:37 2014 -0500 +Commit: Dan Winship +CommitDate: Sat Feb 1 13:16:28 2014 +0100 + + gnetworkmonitornetlink: filter out IPv6 LL MC changes + + For some reason, IPv6 link-local multicast routing changes all the + time. GNetworkMonitorBase was already ignoring them for purposes of + emitting network-changed, but GNetworkMonitorNetlink would still + trigger a re-dump after getting one, so network-changed would end up + getting emitted anyway. + + gio/gnetworkmonitornetlink.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit cade4d6f19b356eb7eaea9963263cbbe8d95e2de +Author: Matthias Clasen +AuthorDate: Fri Jan 31 22:14:01 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 31 22:14:01 2014 -0500 + + Fix the docs build + + gio/gtask.c | 9 ++++++--- + gio/gtestdbus.c | 4 ++-- + 2 files changed, 8 insertions(+), 5 deletions(-) + +commit a4c33c6f8b39c0517d0034d2298a952df4897535 +Author: Matthias Clasen +AuthorDate: Fri Jan 31 22:05:04 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 31 22:05:04 2014 -0500 + + Docs: Don't use the code tag + + gio/gdbusaddress.c | 19 ++++++++++--------- + glib/glib-init.c | 12 ++++++------ + glib/gvariant-parser.c | 5 ++++- + glib/gvariant.c | 10 +++++----- + gobject/gsignal.c | 5 ++--- + gobject/gvaluearray.c | 3 +-- + 6 files changed, 28 insertions(+), 26 deletions(-) + +commit 17f51583a8733c312f5ac53478b36c5f3972ab45 +Author: Matthias Clasen +AuthorDate: Fri Jan 31 21:56:33 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 31 21:56:33 2014 -0500 + + Docs: Convert examples to |[ ]| + + gio/gactionmap.c | 7 +- + gio/gapplication.c | 22 +++--- + gio/gcontenttype.c | 7 +- + gio/gdbuserror.c | 16 ++--- + gio/gdbusmessage.c | 8 +-- + gio/gfile.c | 4 +- + gio/gmenu.c | 10 ++- + gio/gresource.c | 10 +-- + gio/gsettings.c | 16 ++--- + gio/gsimpleaction.c | 20 +++--- + gio/gtask.c | 31 ++++---- + gio/gtestdbus.c | 13 ++-- + gio/gvolume.c | 124 + ++++++++++++++++---------------- + glib/deprecated/gthread-deprecated.c | 134 + +++++++++++++++-------------------- + glib/garray.c | 54 +++++++------- + glib/gconvert.c | 2 +- + glib/gmessages.c | 26 +++---- + glib/goption.c | 5 +- + glib/gslice.c | 25 +++---- + glib/gthread-posix.c | 10 +-- + glib/gthread.c | 102 +++++++++++--------------- + glib/gurifuncs.c | 4 +- + glib/gvariant-parser.c | 5 +- + glib/gvariant.c | 67 ++++++++---------- + glib/gversion.c | 24 ++----- + gobject/gobject.c | 34 ++++----- + gobject/gtype.c | 8 +-- + 27 files changed, 346 insertions(+), 442 deletions(-) + +commit 4d12e0d66f1641a6eb2ba9c65579935136f6ef46 +Author: Matthias Clasen +AuthorDate: Fri Jan 31 20:34:33 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 31 20:34:33 2014 -0500 + + Docs: Don't use the emphasis tag + + Most of the time, the text read just as well without the extra + boldness. + + gio/gasyncresult.c | 11 +- + gio/gcancellable.c | 16 +- + gio/gdatainputstream.c | 14 +- + gio/gdbusconnection.c | 7 +- + gio/gdbusmethodinvocation.c | 2 +- + gio/gdbusobjectmanagerclient.c | 13 +- + gio/gdbusproxy.c | 2 +- + gio/gdbusutils.c | 7 +- + gio/gnetworking.c | 9 +- + gio/gnetworkmonitor.c | 7 +- + gio/goutputstream.c | 26 ++- + gio/gresolver.c | 5 +- + gio/gsettings.c | 3 +- + gio/gtask.c | 4 +- + glib/docs.c | 34 ++-- + glib/gcharset.c | 2 +- + glib/gconvert.c | 17 +- + glib/gdate.c | 24 +-- + glib/gerror.c | 96 +++++------ + glib/ggettext.c | 4 +- + glib/giochannel.c | 3 +- + glib/gmain.c | 7 +- + glib/gmem.c | 18 ++- + glib/gmessages.c | 3 +- + glib/goption.c | 6 +- + glib/gpattern.c | 17 +- + glib/gquark.c | 34 ++-- + glib/gqueue.c | 18 +-- + glib/gsequence.c | 153 +++++++++--------- + glib/gstrfuncs.c | 30 ++-- + glib/gthread.c | 7 +- + glib/gutf8.c | 8 +- + glib/gutils.c | 18 ++- + gobject/gbinding.c | 24 +-- + gobject/gsignal.c | 43 ++--- + gobject/gtype.c | 359 + +++++++++++++++++++++-------------------- + 36 files changed, 515 insertions(+), 536 deletions(-) + +commit 64eface479baf3db06f0f42b43f391db55b5ad4d +Author: Matthias Clasen +AuthorDate: Fri Jan 31 17:38:27 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 31 18:20:06 2014 -0500 + + Docs: don't use the warning tag + + More markup removal + + gio/gdbusinterface.c | 11 +++++------ + gio/gfile.c | 8 ++++---- + gio/goutputstream.c | 10 +++++----- + glib/docs.c | 9 ++++----- + glib/genviron.c | 36 ++++++++++++++++-------------------- + glib/grand.c | 10 +++++----- + glib/gstrfuncs.c | 11 +++++------ + glib/gvariant.c | 4 ++-- + 8 files changed, 46 insertions(+), 53 deletions(-) + +commit c575d24dfb78d956e66a522524c7b1d82d0adde7 +Author: Matthias Clasen +AuthorDate: Fri Jan 31 14:56:10 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 31 18:20:06 2014 -0500 + + Docs: Don't use the note tag + + More markup avoidance. + + gio/gioscheduler.c | 8 +- + gio/gsettingsbackend.c | 6 +- + gio/gsimpleasyncresult.c | 8 +- + gio/gthemedicon.c | 4 - + glib/docs.c | 271 +++++++++---------- + glib/garray.c | 676 + ++++++++++++++++++++++++----------------------- + glib/ggettext.c | 24 +- + glib/gkeyfile.c | 7 +- + glib/glib-unix.c | 18 +- + glib/glist.c | 31 +-- + glib/gmacros.h | 52 ++-- + glib/gmem.c | 17 +- + glib/gqueue.c | 7 +- + glib/gsequence.c | 8 - + glib/gslist.c | 30 +-- + glib/gspawn.c | 161 ++++++----- + glib/gstrfuncs.c | 219 ++++++++------- + glib/gthread-posix.c | 7 +- + glib/gthread.c | 10 +- + glib/gutils.c | 28 +- + gobject/gbinding.c | 48 ++-- + gobject/gobject.c | 2 - + 22 files changed, 773 insertions(+), 869 deletions(-) + +commit 4cbee6a35b4f75dc418cb9e0219dcd3104a5ba17 +Author: Colin Walters +AuthorDate: Fri Jan 31 09:36:52 2014 -0500 +Commit: Colin Walters +CommitDate: Fri Jan 31 09:36:52 2014 -0500 + + Restore executability for other files + + gio/gdbus-2.0/codegen/codegen_main.py | 0 + glib/gen-unicode-tables.pl | 0 + glib/gtester-report | 0 + tests/gen-casefold-txt.pl | 0 + tests/gen-casemap-txt.pl | 0 + 5 files changed, 0 insertions(+), 0 deletions(-) + +commit a7435d2e69d4757c129e0e5cb36eb2c810f50bf1 +Author: Colin Walters +AuthorDate: Fri Jan 31 09:23:45 2014 -0500 +Commit: Colin Walters +CommitDate: Fri Jan 31 09:23:45 2014 -0500 + + Restore executability on data-to-c.pl + + gio/data-to-c.pl | 0 + 1 file changed, 0 insertions(+), 0 deletions(-) + +commit 078dbda148a81af1b3a76fbda72f089b963087f1 +Author: Daniel Mustieles +AuthorDate: Thu Jan 23 12:58:29 2014 +0100 +Commit: Daniel Mustieles +CommitDate: Fri Jan 31 14:31:55 2014 +0100 + + Updated FSF's address + + gio/data-to-c.pl | 4 +--- + gio/fam/fam-helper.c | 4 +--- + gio/fam/fam-helper.h | 4 +--- + gio/fam/fam-module.c | 4 +--- + gio/fam/gfamdirectorymonitor.c | 4 +--- + gio/fam/gfamdirectorymonitor.h | 4 +--- + gio/fam/gfamfilemonitor.c | 4 +--- + gio/fam/gfamfilemonitor.h | 4 +--- + gio/fen/fen-dump.c | 4 +--- + gio/fen/fen-dump.h | 4 +--- + gio/fen/fen-helper.c | 4 +--- + gio/fen/fen-helper.h | 4 +--- + gio/fen/fen-kernel.c | 4 +--- + gio/fen/fen-kernel.h | 4 +--- + gio/fen/fen-node.c | 4 +--- + gio/fen/fen-node.h | 4 +--- + gio/fen/gfendirectorymonitor.c | 4 +--- + gio/fen/gfendirectorymonitor.h | 4 +--- + gio/fen/gfenfilemonitor.c | 4 +--- + gio/fen/gfenfilemonitor.h | 4 +--- + gio/gaction.c | 4 +--- + gio/gaction.h | 4 +--- + gio/gactiongroup.c | 4 +--- + gio/gactiongroup.h | 4 +--- + gio/gactiongroupexporter.c | 4 +--- + gio/gactiongroupexporter.h | 4 +--- + gio/gactionmap.c | 4 +--- + gio/gactionmap.h | 4 +--- + gio/gappinfo.c | 4 +--- + gio/gappinfo.h | 4 +--- + gio/gappinfoprivate.h | 4 +--- + gio/gapplication-tool.c | 4 +--- + gio/gapplication.c | 4 +--- + gio/gapplication.h | 4 +--- + gio/gapplicationcommandline.c | 4 +--- + gio/gapplicationcommandline.h | 4 +--- + gio/gapplicationimpl-dbus.c | 4 +--- + gio/gasynchelper.c | 4 +--- + gio/gasynchelper.h | 4 +--- + gio/gasyncinitable.c | 4 +--- + gio/gasyncinitable.h | 4 +--- + gio/gasyncresult.c | 4 +--- + gio/gasyncresult.h | 4 +--- + gio/gbufferedinputstream.c | 4 +--- + gio/gbufferedinputstream.h | 4 +--- + gio/gbufferedoutputstream.c | 4 +--- + gio/gbufferedoutputstream.h | 4 +--- + gio/gbytesicon.c | 4 +--- + gio/gbytesicon.h | 4 +--- + gio/gcancellable.c | 4 +--- + gio/gcancellable.h | 4 +--- + gio/gcharsetconverter.c | 4 +--- + gio/gcharsetconverter.h | 4 +--- + gio/gcontenttype-win32.c | 4 +--- + gio/gcontenttype.c | 4 +--- + gio/gcontenttype.h | 4 +--- + gio/gcontenttypeprivate.h | 4 +--- + gio/gconverter.c | 4 +--- + gio/gconverter.h | 4 +--- + gio/gconverterinputstream.c | 4 +--- + gio/gconverterinputstream.h | 4 +--- + gio/gconverteroutputstream.c | 4 +--- + gio/gconverteroutputstream.h | 4 +--- + gio/gcredentials.c | 4 +--- + gio/gcredentials.h | 4 +--- + gio/gcredentialsprivate.h | 4 +--- + gio/gdatainputstream.c | 4 +--- + gio/gdatainputstream.h | 4 +--- + gio/gdataoutputstream.c | 4 +--- + gio/gdataoutputstream.h | 4 +--- + gio/gdbus-2.0/codegen/__init__.py | 4 +--- + gio/gdbus-2.0/codegen/codegen.py | 4 +--- + gio/gdbus-2.0/codegen/codegen_docbook.py | 4 +--- + gio/gdbus-2.0/codegen/codegen_main.py | 4 +--- + gio/gdbus-2.0/codegen/config.py.in | 4 +--- + gio/gdbus-2.0/codegen/dbustypes.py | 4 +--- + gio/gdbus-2.0/codegen/gdbus-codegen.in | 4 +--- + gio/gdbus-2.0/codegen/parser.py | 4 +--- + gio/gdbus-2.0/codegen/utils.py | 4 +--- + gio/gdbus-tool.c | 4 +--- + gio/gdbusactiongroup-private.h | 4 +--- + gio/gdbusactiongroup.c | 4 +--- + gio/gdbusactiongroup.h | 4 +--- + gio/gdbusaddress.c | 4 +--- + gio/gdbusaddress.h | 4 +--- + gio/gdbusauth.c | 4 +--- + gio/gdbusauth.h | 4 +--- + gio/gdbusauthmechanism.c | 4 +--- + gio/gdbusauthmechanism.h | 4 +--- + gio/gdbusauthmechanismanon.c | 4 +--- + gio/gdbusauthmechanismanon.h | 4 +--- + gio/gdbusauthmechanismexternal.c | 4 +--- + gio/gdbusauthmechanismexternal.h | 4 +--- + gio/gdbusauthmechanismsha1.c | 4 +--- + gio/gdbusauthmechanismsha1.h | 4 +--- + gio/gdbusauthobserver.c | 4 +--- + gio/gdbusauthobserver.h | 4 +--- + gio/gdbusconnection.c | 4 +--- + gio/gdbusconnection.h | 4 +--- + gio/gdbuserror.c | 4 +--- + gio/gdbuserror.h | 4 +--- + gio/gdbusinterface.c | 4 +--- + gio/gdbusinterface.h | 4 +--- + gio/gdbusinterfaceskeleton.c | 4 +--- + gio/gdbusinterfaceskeleton.h | 4 +--- + gio/gdbusintrospection.c | 4 +--- + gio/gdbusintrospection.h | 4 +--- + gio/gdbusmenumodel.c | 4 +--- + gio/gdbusmenumodel.h | 4 +--- + gio/gdbusmessage.c | 4 +--- + gio/gdbusmessage.h | 4 +--- + gio/gdbusmethodinvocation.c | 4 +--- + gio/gdbusmethodinvocation.h | 4 +--- + gio/gdbusnameowning.c | 4 +--- + gio/gdbusnameowning.h | 4 +--- + gio/gdbusnamewatching.c | 4 +--- + gio/gdbusnamewatching.h | 4 +--- + gio/gdbusobject.c | 4 +--- + gio/gdbusobject.h | 4 +--- + gio/gdbusobjectmanager.c | 4 +--- + gio/gdbusobjectmanager.h | 4 +--- + gio/gdbusobjectmanagerclient.c | 4 +--- + gio/gdbusobjectmanagerclient.h | 4 +--- + gio/gdbusobjectmanagerserver.c | 4 +--- + gio/gdbusobjectmanagerserver.h | 4 +--- + gio/gdbusobjectproxy.c | 4 +--- + gio/gdbusobjectproxy.h | 4 +--- + gio/gdbusobjectskeleton.c | 4 +--- + gio/gdbusobjectskeleton.h | 4 +--- + gio/gdbusprivate.c | 4 +--- + gio/gdbusprivate.h | 4 +--- + gio/gdbusproxy.c | 4 +--- + gio/gdbusproxy.h | 4 +--- + gio/gdbusserver.c | 4 +--- + gio/gdbusserver.h | 4 +--- + gio/gdbusutils.c | 4 +--- + gio/gdbusutils.h | 4 +--- + gio/gdelayedsettingsbackend.c | 4 +--- + gio/gdelayedsettingsbackend.h | 4 +--- + gio/gdesktopappinfo.c | 4 +--- + gio/gdesktopappinfo.h | 4 +--- + gio/gdrive.c | 4 +--- + gio/gdrive.h | 4 +--- + gio/gdummyfile.c | 4 +--- + gio/gdummyfile.h | 4 +--- + gio/gdummyproxyresolver.c | 4 +--- + gio/gdummyproxyresolver.h | 4 +--- + gio/gdummytlsbackend.c | 4 +--- + gio/gdummytlsbackend.h | 4 +--- + gio/gemblem.c | 4 +--- + gio/gemblem.h | 4 +--- + gio/gemblemedicon.c | 4 +--- + gio/gemblemedicon.h | 4 +--- + gio/gfdonotificationbackend.c | 4 +--- + gio/gfile.c | 4 +--- + gio/gfile.h | 4 +--- + gio/gfileattribute-priv.h | 4 +--- + gio/gfileattribute.c | 4 +--- + gio/gfileattribute.h | 4 +--- + gio/gfiledescriptorbased.c | 4 +--- + gio/gfiledescriptorbased.h | 4 +--- + gio/gfileenumerator.c | 4 +--- + gio/gfileenumerator.h | 4 +--- + gio/gfileicon.c | 4 +--- + gio/gfileicon.h | 4 +--- + gio/gfileinfo-priv.h | 4 +--- + gio/gfileinfo.c | 4 +--- + gio/gfileinfo.h | 4 +--- + gio/gfileinputstream.c | 4 +--- + gio/gfileinputstream.h | 4 +--- + gio/gfileiostream.c | 4 +--- + gio/gfileiostream.h | 4 +--- + gio/gfilemonitor.c | 4 +--- + gio/gfilemonitor.h | 4 +--- + gio/gfilenamecompleter.c | 4 +--- + gio/gfilenamecompleter.h | 4 +--- + gio/gfileoutputstream.c | 4 +--- + gio/gfileoutputstream.h | 4 +--- + gio/gfilterinputstream.c | 4 +--- + gio/gfilterinputstream.h | 4 +--- + gio/gfilteroutputstream.c | 4 +--- + gio/gfilteroutputstream.h | 4 +--- + gio/ggtknotificationbackend.c | 4 +--- + gio/gicon.c | 4 +--- + gio/gicon.h | 4 +--- + gio/ginetaddress.c | 4 +--- + gio/ginetaddress.h | 4 +--- + gio/ginetaddressmask.c | 4 +--- + gio/ginetaddressmask.h | 4 +--- + gio/ginetsocketaddress.c | 4 +--- + gio/ginetsocketaddress.h | 4 +--- + gio/ginitable.c | 4 +--- + gio/ginitable.h | 4 +--- + gio/ginputstream.c | 4 +--- + gio/ginputstream.h | 4 +--- + gio/gio-querymodules.c | 4 +--- + gio/gio.h | 4 +--- + gio/gioenums.h | 4 +--- + gio/gioerror.c | 4 +--- + gio/gioerror.h | 4 +--- + gio/giomodule-priv.h | 4 +--- + gio/giomodule.c | 4 +--- + gio/giomodule.h | 4 +--- + gio/gioprivate.h | 4 +--- + gio/gioscheduler.c | 4 +--- + gio/gioscheduler.h | 4 +--- + gio/giostream.c | 4 +--- + gio/giotypes.h | 4 +--- + gio/giowin32-priv.h | 4 +--- + gio/gkeyfilesettingsbackend.c | 4 +--- + gio/glib-compile-resources.c | 4 +--- + gio/glib-compile-schemas.c | 4 +--- + gio/gloadableicon.c | 4 +--- + gio/gloadableicon.h | 4 +--- + gio/glocaldirectorymonitor.c | 4 +--- + gio/glocaldirectorymonitor.h | 4 +--- + gio/glocalfile.c | 4 +--- + gio/glocalfile.h | 4 +--- + gio/glocalfileenumerator.c | 4 +--- + gio/glocalfileenumerator.h | 4 +--- + gio/glocalfileinfo.c | 4 +--- + gio/glocalfileinfo.h | 4 +--- + gio/glocalfileinputstream.c | 4 +--- + gio/glocalfileinputstream.h | 4 +--- + gio/glocalfileiostream.c | 4 +--- + gio/glocalfileiostream.h | 4 +--- + gio/glocalfilemonitor.c | 4 +--- + gio/glocalfilemonitor.h | 4 +--- + gio/glocalfileoutputstream.c | 4 +--- + gio/glocalfileoutputstream.h | 4 +--- + gio/glocalvfs.c | 4 +--- + gio/glocalvfs.h | 4 +--- + gio/gmemoryinputstream.c | 4 +--- + gio/gmemoryinputstream.h | 4 +--- + gio/gmemoryoutputstream.c | 4 +--- + gio/gmemoryoutputstream.h | 4 +--- + gio/gmemorysettingsbackend.c | 4 +--- + gio/gmenu.c | 4 +--- + gio/gmenu.h | 4 +--- + gio/gmenuexporter.c | 4 +--- + gio/gmenuexporter.h | 4 +--- + gio/gmenumodel.c | 4 +--- + gio/gmenumodel.h | 4 +--- + gio/gmount.c | 4 +--- + gio/gmount.h | 4 +--- + gio/gmountoperation.c | 4 +--- + gio/gmountoperation.h | 4 +--- + gio/gmountprivate.h | 4 +--- + gio/gnativevolumemonitor.c | 4 +--- + gio/gnativevolumemonitor.h | 4 +--- + gio/gnetworkaddress.c | 4 +--- + gio/gnetworkaddress.h | 4 +--- + gio/gnetworking.c | 4 +--- + gio/gnetworking.h.in | 4 +--- + gio/gnetworking.h.win32 | 4 +--- + gio/gnetworkingprivate.h | 4 +--- + gio/gnetworkmonitor.c | 4 +--- + gio/gnetworkmonitor.h | 4 +--- + gio/gnetworkmonitorbase.c | 4 +--- + gio/gnetworkmonitorbase.h | 4 +--- + gio/gnetworkmonitornetlink.c | 4 +--- + gio/gnetworkmonitornetlink.h | 4 +--- + gio/gnetworkservice.c | 4 +--- + gio/gnetworkservice.h | 4 +--- + gio/gnextstepsettingsbackend.c | 4 +--- + gio/gnotification-private.h | 4 +--- + gio/gnotification.c | 4 +--- + gio/gnotification.h | 4 +--- + gio/gnotificationbackend.c | 4 +--- + gio/gnotificationbackend.h | 4 +--- + gio/gnullsettingsbackend.c | 4 +--- + gio/goutputstream.c | 4 +--- + gio/goutputstream.h | 4 +--- + gio/gpermission.c | 4 +--- + gio/gpermission.h | 4 +--- + gio/gpollableinputstream.c | 4 +--- + gio/gpollableinputstream.h | 4 +--- + gio/gpollableoutputstream.c | 4 +--- + gio/gpollableoutputstream.h | 4 +--- + gio/gpollableutils.c | 4 +--- + gio/gpollableutils.h | 4 +--- + gio/gpollfilemonitor.c | 4 +--- + gio/gpollfilemonitor.h | 4 +--- + gio/gpropertyaction.c | 4 +--- + gio/gpropertyaction.h | 4 +--- + gio/gproxy.c | 4 +--- + gio/gproxy.h | 4 +--- + gio/gproxyaddress.c | 4 +--- + gio/gproxyaddress.h | 4 +--- + gio/gproxyaddressenumerator.c | 4 +--- + gio/gproxyaddressenumerator.h | 4 +--- + gio/gproxyresolver.c | 4 +--- + gio/gproxyresolver.h | 4 +--- + gio/gregistrysettingsbackend.c | 4 +--- + gio/gregistrysettingsbackend.h | 4 +--- + gio/gremoteactiongroup.c | 4 +--- + gio/gremoteactiongroup.h | 4 +--- + gio/gresolver.c | 4 +--- + gio/gresolver.h | 4 +--- + gio/gresource-tool.c | 4 +--- + gio/gresource.c | 4 +--- + gio/gresource.h | 4 +--- + gio/gresourcefile.c | 4 +--- + gio/gresourcefile.h | 4 +--- + gio/gseekable.c | 4 +--- + gio/gseekable.h | 4 +--- + gio/gsettings-mapping.c | 4 +--- + gio/gsettings-mapping.h | 4 +--- + gio/gsettings-tool.c | 4 +--- + gio/gsettings.c | 4 +--- + gio/gsettings.h | 4 +--- + gio/gsettingsbackend.c | 4 +--- + gio/gsettingsbackend.h | 4 +--- + gio/gsettingsbackendinternal.h | 4 +--- + gio/gsettingsschema-internal.h | 4 +--- + gio/gsettingsschema.c | 4 +--- + gio/gsettingsschema.h | 4 +--- + gio/gsimpleaction.c | 4 +--- + gio/gsimpleaction.h | 4 +--- + gio/gsimpleactiongroup.c | 4 +--- + gio/gsimpleactiongroup.h | 4 +--- + gio/gsimpleasyncresult.c | 4 +--- + gio/gsimpleasyncresult.h | 4 +--- + gio/gsimplepermission.c | 4 +--- + gio/gsimplepermission.h | 4 +--- + gio/gsimpleproxyresolver.h | 4 +--- + gio/gsocket.c | 4 +--- + gio/gsocket.h | 4 +--- + gio/gsocketaddress.c | 4 +--- + gio/gsocketaddress.h | 4 +--- + gio/gsocketaddressenumerator.c | 4 +--- + gio/gsocketaddressenumerator.h | 4 +--- + gio/gsocketclient.c | 4 +--- + gio/gsocketclient.h | 4 +--- + gio/gsocketconnectable.c | 4 +--- + gio/gsocketconnectable.h | 4 +--- + gio/gsocketconnection.c | 4 +--- + gio/gsocketconnection.h | 4 +--- + gio/gsocketcontrolmessage.h | 4 +--- + gio/gsocketinputstream.c | 4 +--- + gio/gsocketlistener.c | 4 +--- + gio/gsocketlistener.h | 4 +--- + gio/gsocketoutputstream.c | 4 +--- + gio/gsocketservice.c | 4 +--- + gio/gsocketservice.h | 4 +--- + gio/gsocks4aproxy.c | 4 +--- + gio/gsocks4aproxy.h | 4 +--- + gio/gsocks4proxy.c | 4 +--- + gio/gsocks4proxy.h | 4 +--- + gio/gsocks5proxy.c | 4 +--- + gio/gsocks5proxy.h | 4 +--- + gio/gsrvtarget.c | 4 +--- + gio/gsrvtarget.h | 4 +--- + gio/gsubprocess.h | 4 +--- + gio/gsubprocesslauncher-private.h | 4 +--- + gio/gsubprocesslauncher.h | 4 +--- + gio/gtask.c | 4 +--- + gio/gtask.h | 4 +--- + gio/gtcpconnection.h | 4 +--- + gio/gtcpwrapperconnection.c | 4 +--- + gio/gtcpwrapperconnection.h | 4 +--- + gio/gtestdbus.c | 4 +--- + gio/gtestdbus.h | 4 +--- + gio/gthemedicon.c | 4 +--- + gio/gthemedicon.h | 4 +--- + gio/gthreadedresolver.c | 4 +--- + gio/gthreadedresolver.h | 4 +--- + gio/gthreadedsocketservice.c | 4 +--- + gio/gthreadedsocketservice.h | 4 +--- + gio/gtlsbackend.c | 4 +--- + gio/gtlsbackend.h | 4 +--- + gio/gtlscertificate.c | 4 +--- + gio/gtlscertificate.h | 4 +--- + gio/gtlsclientconnection.c | 4 +--- + gio/gtlsclientconnection.h | 4 +--- + gio/gtlsconnection.c | 4 +--- + gio/gtlsconnection.h | 4 +--- + gio/gtlsdatabase.c | 4 +--- + gio/gtlsdatabase.h | 4 +--- + gio/gtlsfiledatabase.c | 4 +--- + gio/gtlsinteraction.c | 4 +--- + gio/gtlsinteraction.h | 4 +--- + gio/gtlspassword.c | 4 +--- + gio/gtlspassword.h | 4 +--- + gio/gtlsserverconnection.c | 4 +--- + gio/gtlsserverconnection.h | 4 +--- + gio/gunionvolumemonitor.c | 4 +--- + gio/gunionvolumemonitor.h | 4 +--- + gio/gunixconnection.h | 4 +--- + gio/gunixcredentialsmessage.h | 4 +--- + gio/gunixfdlist.h | 4 +--- + gio/gunixfdmessage.h | 4 +--- + gio/gunixinputstream.c | 4 +--- + gio/gunixinputstream.h | 4 +--- + gio/gunixmount.c | 4 +--- + gio/gunixmount.h | 4 +--- + gio/gunixmounts.c | 4 +--- + gio/gunixmounts.h | 4 +--- + gio/gunixoutputstream.c | 4 +--- + gio/gunixoutputstream.h | 4 +--- + gio/gunixsocketaddress.c | 4 +--- + gio/gunixsocketaddress.h | 4 +--- + gio/gunixvolume.c | 4 +--- + gio/gunixvolume.h | 4 +--- + gio/gunixvolumemonitor.c | 4 +--- + gio/gunixvolumemonitor.h | 4 +--- + gio/gvdb/gvdb-builder.c | 4 +--- + gio/gvdb/gvdb-builder.h | 4 +--- + gio/gvdb/gvdb-format.h | 4 +--- + gio/gvdb/gvdb-reader.c | 4 +--- + gio/gvdb/gvdb-reader.h | 4 +--- + gio/gvfs.c | 4 +--- + gio/gvfs.h | 4 +--- + gio/gvolume.c | 4 +--- + gio/gvolume.h | 4 +--- + gio/gvolumemonitor.c | 4 +--- + gio/gvolumemonitor.h | 4 +--- + gio/gwin32appinfo.c | 4 +--- + gio/gwin32appinfo.h | 4 +--- + gio/gwin32inputstream.c | 4 +--- + gio/gwin32inputstream.h | 4 +--- + gio/gwin32mount.c | 4 +--- + gio/gwin32mount.h | 4 +--- + gio/gwin32outputstream.c | 4 +--- + gio/gwin32outputstream.h | 4 +--- + gio/gwin32volumemonitor.c | 4 +--- + gio/gwin32volumemonitor.h | 4 +--- + gio/gzlibcompressor.c | 4 +--- + gio/gzlibcompressor.h | 4 +--- + gio/gzlibdecompressor.c | 4 +--- + gio/gzlibdecompressor.h | 4 +--- + gio/inotify/ginotifydirectorymonitor.c | 4 +--- + gio/inotify/ginotifydirectorymonitor.h | 4 +--- + gio/inotify/ginotifyfilemonitor.c | 4 +--- + gio/inotify/ginotifyfilemonitor.h | 4 +--- + gio/inotify/inotify-helper.c | 3 +-- + gio/inotify/inotify-helper.h | 3 +-- + gio/inotify/inotify-kernel.c | 3 +-- + gio/inotify/inotify-kernel.h | 3 +-- + gio/inotify/inotify-missing.c | 3 +-- + gio/inotify/inotify-missing.h | 3 +-- + gio/inotify/inotify-path.c | 3 +-- + gio/inotify/inotify-path.h | 3 +-- + gio/inotify/inotify-sub.c | 3 +-- + gio/inotify/inotify-sub.h | 3 +-- + gio/strinfo.c | 4 +--- + gio/tests/cancellable.c | 4 +--- + gio/tests/dbus-appinfo.c | 4 +--- + gio/tests/desktop-app-info.c | 4 +--- + gio/tests/filter-cat.c | 4 +--- + gio/tests/gdbus-addresses.c | 4 +--- + gio/tests/gdbus-auth.c | 4 +--- + gio/tests/gdbus-bz627724.c | 4 +--- + gio/tests/gdbus-close-pending.c | 4 +--- + gio/tests/gdbus-connection-flush-helper.c | 4 +--- + gio/tests/gdbus-connection-flush.c | 4 +--- + gio/tests/gdbus-connection-loss.c | 4 +--- + gio/tests/gdbus-connection-slow.c | 4 +--- + gio/tests/gdbus-connection.c | 4 +--- + gio/tests/gdbus-error.c | 4 +--- + gio/tests/gdbus-exit-on-close.c | 4 +--- + gio/tests/gdbus-export.c | 4 +--- + gio/tests/gdbus-introspection.c | 4 +--- + gio/tests/gdbus-message.c | 4 +--- + gio/tests/gdbus-names.c | 4 +--- + gio/tests/gdbus-non-socket.c | 4 +--- + gio/tests/gdbus-overflow.c | 4 +--- + gio/tests/gdbus-peer-object-manager.c | 4 +--- + gio/tests/gdbus-peer.c | 4 +--- + gio/tests/gdbus-proxy-threads.c | 4 +--- + gio/tests/gdbus-proxy-well-known-name.c | 4 +--- + gio/tests/gdbus-proxy.c | 4 +--- + gio/tests/gdbus-serialization.c | 4 +--- + gio/tests/gdbus-sessionbus.c | 4 +--- + gio/tests/gdbus-sessionbus.h | 4 +--- + gio/tests/gdbus-test-codegen.c | 4 +--- + gio/tests/gdbus-tests.c | 4 +--- + gio/tests/gdbus-tests.h | 4 +--- + gio/tests/gdbus-threading.c | 4 +--- + gio/tests/gnotification-server.c | 4 +--- + gio/tests/gnotification-server.h | 4 +--- + gio/tests/gnotification.c | 4 +--- + gio/tests/gtesttlsbackend.c | 4 +--- + gio/tests/gtesttlsbackend.h | 4 +--- + gio/tests/gtlsconsoleinteraction.c | 4 +--- + gio/tests/gtlsconsoleinteraction.h | 4 +--- + gio/tests/network-monitor.c | 4 +--- + gio/tests/pollable.c | 4 +--- + gio/tests/proxy-test.c | 4 +--- + gio/tests/proxy.c | 4 +--- + gio/tests/resolver.c | 4 +--- + gio/tests/resources.c | 4 +--- + gio/tests/socket.c | 4 +--- + gio/tests/test-io-stream.c | 4 +--- + gio/tests/test-io-stream.h | 4 +--- + gio/tests/test-pipe-unix.c | 4 +--- + gio/tests/test-pipe-unix.h | 4 +--- + gio/tests/tls-certificate.c | 4 +--- + gio/tests/tls-interaction.c | 4 +--- + gio/thumbnail-verify.c | 4 +--- + gio/thumbnail-verify.h | 4 +--- + gio/win32/gwin32directorymonitor.c | 4 +--- + gio/win32/gwin32directorymonitor.h | 4 +--- + gio/win32/gwinhttpfile.c | 4 +--- + gio/win32/gwinhttpfile.h | 4 +--- + gio/win32/gwinhttpfileinputstream.c | 4 +--- + gio/win32/gwinhttpfileinputstream.h | 4 +--- + gio/win32/gwinhttpfileoutputstream.c | 4 +--- + gio/win32/gwinhttpfileoutputstream.h | 4 +--- + gio/win32/gwinhttpvfs.c | 4 +--- + gio/win32/gwinhttpvfs.h | 4 +--- + gio/xdgmime/xdgmime.c | 4 +--- + gio/xdgmime/xdgmime.h | 4 +--- + gio/xdgmime/xdgmimealias.c | 4 +--- + gio/xdgmime/xdgmimealias.h | 4 +--- + gio/xdgmime/xdgmimecache.c | 4 +--- + gio/xdgmime/xdgmimecache.h | 4 +--- + gio/xdgmime/xdgmimeglob.c | 4 +--- + gio/xdgmime/xdgmimeglob.h | 4 +--- + gio/xdgmime/xdgmimeicon.c | 4 +--- + gio/xdgmime/xdgmimeicon.h | 4 +--- + gio/xdgmime/xdgmimeint.c | 4 +--- + gio/xdgmime/xdgmimeint.h | 4 +--- + gio/xdgmime/xdgmimemagic.c | 4 +--- + gio/xdgmime/xdgmimemagic.h | 4 +--- + gio/xdgmime/xdgmimeparent.c | 4 +--- + gio/xdgmime/xdgmimeparent.h | 4 +--- + glib-gettextize.in | 3 +-- + glib/deprecated/gallocator.c | 4 +--- + glib/deprecated/gallocator.h | 4 +--- + glib/deprecated/gcache.c | 4 +--- + glib/deprecated/gcache.h | 4 +--- + glib/deprecated/gcompletion.c | 4 +--- + glib/deprecated/gcompletion.h | 4 +--- + glib/deprecated/gmain.h | 4 +--- + glib/deprecated/grel.h | 4 +--- + glib/deprecated/gthread-deprecated.c | 4 +--- + glib/deprecated/gthread.h | 4 +--- + glib/docs.c | 4 +--- + glib/galloca.h | 4 +--- + glib/garray.c | 4 +--- + glib/garray.h | 4 +--- + glib/gasyncqueue.c | 4 +--- + glib/gasyncqueue.h | 4 +--- + glib/gasyncqueueprivate.h | 4 +--- + glib/gatomic.c | 4 +--- + glib/gatomic.h | 4 +--- + glib/gbacktrace.c | 4 +--- + glib/gbacktrace.h | 4 +--- + glib/gbase64.c | 4 +--- + glib/gbase64.h | 4 +--- + glib/gbitlock.c | 4 +--- + glib/gbitlock.h | 4 +--- + glib/gbytes.c | 4 +--- + glib/gbytes.h | 4 +--- + glib/gcharset.c | 4 +--- + glib/gcharset.h | 3 +-- + glib/gcharsetprivate.h | 4 +--- + glib/gchecksum.c | 4 +--- + glib/gchecksum.h | 4 +--- + glib/gconvert.c | 4 +--- + glib/gconvert.h | 4 +--- + glib/gdataset.c | 3 +-- + glib/gdataset.h | 4 +--- + glib/gdatasetprivate.h | 4 +--- + glib/gdate.c | 4 +--- + glib/gdate.h | 4 +--- + glib/gdir.c | 4 +--- + glib/gdir.h | 4 +--- + glib/gen-unicode-tables.pl | 4 +--- + glib/genviron.c | 4 +--- + glib/genviron.h | 4 +--- + glib/gerror.c | 4 +--- + glib/gerror.h | 3 +-- + glib/gfileutils.c | 3 +-- + glib/gfileutils.h | 3 +-- + glib/ggettext.c | 4 +--- + glib/ggettext.h | 4 +--- + glib/ghash.c | 4 +--- + glib/ghash.h | 4 +--- + glib/ghmac.c | 4 +--- + glib/ghmac.h | 4 +--- + glib/ghook.c | 4 +--- + glib/ghook.h | 4 +--- + glib/ghostutils.c | 4 +--- + glib/ghostutils.h | 4 +--- + glib/gi18n-lib.h | 4 +--- + glib/gi18n.h | 4 +--- + glib/giochannel.c | 4 +--- + glib/giochannel.h | 4 +--- + glib/giounix.c | 4 +--- + glib/giowin32.c | 4 +--- + glib/gkeyfile.c | 3 +-- + glib/gkeyfile.h | 3 +-- + glib/glib-init.c | 4 +--- + glib/glib-init.h | 4 +--- + glib/glib-object.h | 4 +--- + glib/glib-private.c | 4 +--- + glib/glib-private.h | 4 +--- + glib/glib-unix.c | 4 +--- + glib/glib-unix.h | 4 +--- + glib/glib.h | 4 +--- + glib/glib_trace.h | 4 +--- + glib/glist.c | 4 +--- + glib/glist.h | 4 +--- + glib/gmacros.h | 4 +--- + glib/gmain-internal.h | 4 +--- + glib/gmain.c | 4 +--- + glib/gmain.h | 4 +--- + glib/gmappedfile.c | 4 +--- + glib/gmappedfile.h | 4 +--- + glib/gmarkup.c | 3 +-- + glib/gmarkup.h | 3 +-- + glib/gmem.c | 4 +--- + glib/gmem.h | 4 +--- + glib/gmessages.c | 4 +--- + glib/gmessages.h | 4 +--- + glib/gnode.c | 4 +--- + glib/gnode.h | 4 +--- + glib/gnulib/asnprintf.c | 4 +--- + glib/gnulib/g-gnulib.h | 4 +--- + glib/gnulib/printf-args.c | 4 +--- + glib/gnulib/printf-args.h | 4 +--- + glib/gnulib/printf-parse.c | 4 +--- + glib/gnulib/printf-parse.h | 4 +--- + glib/gnulib/printf.c | 4 +--- + glib/gnulib/printf.h | 4 +--- + glib/gnulib/vasnprintf.c | 4 +--- + glib/gnulib/vasnprintf.h | 4 +--- + glib/goption.c | 4 +--- + glib/goption.h | 4 +--- + glib/gpattern.c | 4 +--- + glib/gpattern.h | 4 +--- + glib/gpoll.c | 4 +--- + glib/gpoll.h | 4 +--- + glib/gprimes.c | 4 +--- + glib/gprimes.h | 4 +--- + glib/gprintf.c | 4 +--- + glib/gprintf.h | 4 +--- + glib/gprintfint.h | 4 +--- + glib/gqsort.c | 4 +--- + glib/gqsort.h | 4 +--- + glib/gquark.c | 3 +-- + glib/gquark.h | 4 +--- + glib/gqueue.c | 4 +--- + glib/gqueue.h | 4 +--- + glib/grand.c | 4 +--- + glib/grand.h | 4 +--- + glib/gscanner.c | 4 +--- + glib/gscanner.h | 4 +--- + glib/gsequence.c | 4 +--- + glib/gsequence.h | 4 +--- + glib/gslice.c | 4 +--- + glib/gslice.h | 4 +--- + glib/gslist.c | 4 +--- + glib/gslist.h | 4 +--- + glib/gstdio.c | 3 +-- + glib/gstdio.h | 3 +-- + glib/gstrfuncs.c | 4 +--- + glib/gstrfuncs.h | 4 +--- + glib/gstring.c | 4 +--- + glib/gstring.h | 4 +--- + glib/gstringchunk.c | 4 +--- + glib/gstringchunk.h | 4 +--- + glib/gtester-report | 4 +--- + glib/gtester.c | 4 +--- + glib/gtestutils.c | 4 +--- + glib/gtestutils.h | 4 +--- + glib/gthread-posix.c | 4 +--- + glib/gthread-win32.c | 4 +--- + glib/gthread.c | 4 +--- + glib/gthread.h | 4 +--- + glib/gthreadpool.c | 4 +--- + glib/gthreadpool.h | 4 +--- + glib/gthreadprivate.h | 3 +-- + glib/gtimer.c | 4 +--- + glib/gtimer.h | 4 +--- + glib/gtimezone.c | 4 +--- + glib/gtimezone.h | 4 +--- + glib/gtrashstack.c | 4 +--- + glib/gtrashstack.h | 4 +--- + glib/gtree.c | 4 +--- + glib/gtree.h | 4 +--- + glib/gtypes.h | 4 +--- + glib/gunibreak.c | 3 +-- + glib/gunicode.h | 3 +-- + glib/gunicodeprivate.h | 4 +--- + glib/gunicollate.c | 3 +-- + glib/gunidecomp.c | 3 +-- + glib/guniprop.c | 4 +--- + glib/gurifuncs.c | 4 +--- + glib/gurifuncs.h | 4 +--- + glib/gutf8.c | 4 +--- + glib/gutils.c | 4 +--- + glib/gutils.h | 4 +--- + glib/gvariant-core.c | 4 +--- + glib/gvariant-core.h | 4 +--- + glib/gvariant-internal.h | 4 +--- + glib/gvariant-parser.c | 4 +--- + glib/gvariant-serialiser.c | 4 +--- + glib/gvariant-serialiser.h | 4 +--- + glib/gvariant.c | 4 +--- + glib/gvariant.h | 4 +--- + glib/gvarianttype.c | 4 +--- + glib/gvarianttype.h | 4 +--- + glib/gvarianttypeinfo.c | 4 +--- + glib/gvarianttypeinfo.h | 4 +--- + glib/gversion.c | 4 +--- + glib/gversion.h | 4 +--- + glib/gversionmacros.h | 4 +--- + glib/gwakeup.c | 4 +--- + glib/gwakeup.h | 4 +--- + glib/gwin32.c | 4 +--- + glib/gwin32.h | 4 +--- + glib/libcharset/README | 4 +--- + glib/tests/array-test.c | 4 +--- + glib/tests/cache.c | 4 +--- + glib/tests/convert.c | 4 +--- + glib/tests/hash.c | 4 +--- + glib/tests/hostutils.c | 4 +--- + glib/tests/markups/valid-14.expected | 3 +-- + glib/tests/markups/valid-14.gmarkup | 3 +-- + glib/tests/node.c | 4 +--- + glib/tests/pattern.c | 4 +--- + glib/tests/regex.c | 4 +--- + glib/tests/scannerapi.c | 4 +--- + glib/tests/shell.c | 4 +--- + glib/tests/sort.c | 4 +--- + glib/tests/tree.c | 4 +--- + glib/tests/uri.c | 4 +--- + glib/tests/utf8-performance.c | 4 +--- + glib/tests/utf8-pointer.c | 4 +--- + glib/tests/utf8-validate.c | 4 +--- + gmodule/gmodule-ar.c | 4 +--- + gmodule/gmodule-dl.c | 4 +--- + gmodule/gmodule-dyld.c | 4 +--- + gmodule/gmodule-win32.c | 4 +--- + gmodule/gmodule.c | 4 +--- + gmodule/gmodule.h | 4 +--- + gmodule/gmoduleconf.h.in | 4 +--- + gmodule/gmoduleconf.h.win32 | 4 +--- + gobject/gatomicarray.c | 4 +--- + gobject/gatomicarray.h | 4 +--- + gobject/gbinding.c | 4 +--- + gobject/gbinding.h | 4 +--- + gobject/gboxed.c | 4 +--- + gobject/gboxed.h | 4 +--- + gobject/gclosure.c | 4 +--- + gobject/gclosure.h | 4 +--- + gobject/genums.c | 4 +--- + gobject/genums.h | 4 +--- + gobject/glib-genmarshal.c | 4 +--- + gobject/glib-types.h | 4 +--- + gobject/gobject-query.c | 4 +--- + gobject/gobject.c | 4 +--- + gobject/gobject.h | 4 +--- + gobject/gobject_trace.h | 4 +--- + gobject/gobjectnotifyqueue.c | 4 +--- + gobject/gparam.c | 4 +--- + gobject/gparam.h | 4 +--- + gobject/gparamspecs.c | 4 +--- + gobject/gparamspecs.h | 4 +--- + gobject/gsignal.c | 4 +--- + gobject/gsignal.h | 4 +--- + gobject/gsourceclosure.c | 4 +--- + gobject/gsourceclosure.h | 4 +--- + gobject/gtype-private.h | 4 +--- + gobject/gtype.c | 4 +--- + gobject/gtype.h | 4 +--- + gobject/gtypemodule.c | 4 +--- + gobject/gtypemodule.h | 4 +--- + gobject/gtypeplugin.c | 4 +--- + gobject/gtypeplugin.h | 4 +--- + gobject/gvalue.c | 4 +--- + gobject/gvalue.h | 4 +--- + gobject/gvaluearray.c | 4 +--- + gobject/gvaluearray.h | 4 +--- + gobject/gvaluecollector.h | 4 +--- + gobject/gvaluetransform.c | 4 +--- + gobject/gvaluetypes.c | 4 +--- + gobject/gvaluetypes.h | 4 +--- + gobject/tests/ifaceproperties.c | 4 +--- + gobject/tests/testcommon.h | 4 +--- + gthread/gthread-impl.c | 4 +--- + po/po2tbl.sed.in | 3 +-- + tests/child-test.c | 4 +--- + tests/completion-test.c | 4 +--- + tests/dirname-test.c | 4 +--- + tests/env-test.c | 4 +--- + tests/file-test.c | 4 +--- + tests/gen-casefold-txt.pl | 4 +--- + tests/gen-casemap-txt.pl | 4 +--- + tests/gio-test.c | 4 +--- + tests/gobject/accumulator.c | 4 +--- + tests/gobject/defaultiface.c | 4 +--- + tests/gobject/deftype.c | 4 +--- + tests/gobject/dynamictype.c | 4 +--- + tests/gobject/gvalue-test.c | 4 +--- + tests/gobject/ifacecheck.c | 4 +--- + tests/gobject/ifaceinherit.c | 4 +--- + tests/gobject/ifaceinit.c | 4 +--- + tests/gobject/override.c | 4 +--- + tests/gobject/paramspec-test.c | 4 +--- + tests/gobject/performance-threaded.c | 4 +--- + tests/gobject/performance.c | 4 +--- + tests/gobject/references.c | 4 +--- + tests/gobject/signals.c | 4 +--- + tests/gobject/singleton.c | 4 +--- + tests/gobject/testcommon.h | 4 +--- + tests/gobject/testgobject.c | 4 +--- + tests/gobject/testmodule.c | 4 +--- + tests/gobject/testmodule.h | 4 +--- + tests/libmoduletestplugin_a.c | 4 +--- + tests/libmoduletestplugin_b.c | 4 +--- + tests/mapping-test.c | 4 +--- + tests/memchunks.c | 4 +--- + tests/module-test.c | 4 +--- + tests/relation-test.c | 4 +--- + tests/slice-color.c | 4 +--- + tests/slice-concurrent.c | 4 +--- + tests/slice-test.c | 4 +--- + tests/sources.c | 4 +--- + tests/spawn-test.c | 4 +--- + tests/testglib.c | 4 +--- + tests/type-test.c | 4 +--- + 825 files changed, 825 insertions(+), 2444 deletions(-) + +commit fc04275a007ff2b450d78cfa002a303ba5e2d9d0 +Author: Matthias Clasen +AuthorDate: Fri Jan 31 05:58:17 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 31 05:58:17 2014 -0500 + + Docs: don't use the type tag + + Just avoid explicit docbook markup. + + gio/gcredentials.c | 12 +-- + gio/ginetsocketaddress.c | 4 +- + gio/gsocketaddress.c | 38 ++++--- + gio/gunixsocketaddress.c | 2 +- + glib/docs.c | 46 ++++----- + glib/gdate.c | 2 +- + glib/gstrfuncs.c | 66 ++++++------ + glib/gutf8.c | 259 + ++++++++++++++++++++++------------------------- + 8 files changed, 203 insertions(+), 226 deletions(-) + +commit 3d42934b71f9e3e8ac82b00982a6e0b00ba1b92a +Author: Matthias Clasen +AuthorDate: Fri Jan 31 00:29:14 2014 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 31 00:29:14 2014 -0500 + + Docs: don't use the structname tag + + Just avoid explicit docbook markup. + + gio/gapplicationcommandline.c | 4 +-- + glib/garray.c | 6 ++-- + glib/gdate.c | 50 +++++++++++++------------- + glib/ghook.c | 6 ++-- + glib/gpattern.c | 7 ++-- + glib/grand.c | 5 ++- + glib/gstdio.c | 83 + +++++++++++++++++++++---------------------- + glib/gtrashstack.c | 2 +- + glib/gtree.c | 7 ++-- + gmodule/gmodule.c | 2 +- + gobject/gtype.c | 7 ++-- + 11 files changed, 86 insertions(+), 93 deletions(-) + +commit 6f3c465535311a028c12cc04d4188ce79eb03560 +Author: Matthias Clasen +AuthorDate: Thu Jan 30 23:59:06 2014 -0500 +Commit: Matthias Clasen +CommitDate: Thu Jan 30 23:59:06 2014 -0500 + + Docs: don't use structfield tags + + They don't add anything over @foo, and we want to avoid explicit + docbook markup as far as possible. + + glib/docs.c | 4 ++-- + gobject/gtype.c | 6 ++---- + 2 files changed, 4 insertions(+), 6 deletions(-) + +commit acfb76afe2c7dab67f87878c2a3f5f3aa2d8dbfd +Author: Matthias Clasen +AuthorDate: Thu Jan 30 23:52:58 2014 -0500 +Commit: Matthias Clasen +CommitDate: Thu Jan 30 23:52:58 2014 -0500 + + Docs: don't use + + It basically does not work in the HTML output. + + gio/gdbusconnection.c | 12 ++++-------- + glib/gdate.c | 10 +++++----- + glib/gslice.c | 7 +++---- + gobject/gsignal.c | 10 ++++------ + 4 files changed, 16 insertions(+), 23 deletions(-) + +commit 67b0afd5fd21aae4041e897ff3151b84f3c85a65 +Author: Shantha kumar +AuthorDate: Thu Jan 30 15:03:08 2014 +0530 +Commit: Shantha kumar +CommitDate: Thu Jan 30 15:03:08 2014 +0530 + + Tamil Translations Updated + + po/ta.po | 1236 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 650 insertions(+), 586 deletions(-) + +commit 8548d16add2ed4b208aca062c230aeeca9103d0a +Author: Matthias Clasen +AuthorDate: Sat Jan 25 18:18:42 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Jan 25 18:19:58 2014 -0500 + + Drop a no-longer-existing example from the docs + + gapplication-example-menu.c was dropped in + 0c094d660769a00564ef33a775a387f62cf2ff41, two years ago. + Time to remove its inclusion in the docs too. + + https://bugzilla.gnome.org/show_bug.cgi?id=722973 + + gio/gapplication.c | 8 -------- + 1 file changed, 8 deletions(-) + +commit ee38a1af8020a83174277d83f5b10efe0e498fc1 +Author: Rico Tzschichholz +AuthorDate: Thu Jan 23 17:22:19 2014 +0100 +Commit: Rico Tzschichholz +CommitDate: Thu Jan 23 17:22:19 2014 +0100 + + gobject: Add missing transfer annotation to g_boxed_copy + + gobject/gboxed.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 46e13e5d49fa1f64920d088e1e6bbd9fee4c1886 +Author: Rico Tzschichholz +AuthorDate: Thu Jan 23 17:21:32 2014 +0100 +Commit: Rico Tzschichholz +CommitDate: Thu Jan 23 17:21:32 2014 +0100 + + gio: Add missing transfer annotation to g_simple_proxy_resolver_new + + gio/gsimpleproxyresolver.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c5e989c6d8d13542fcdd47905e98c980d7d7603d +Author: Chun-wei Fan +AuthorDate: Thu Jan 23 17:32:50 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Jan 23 17:32:50 2014 +0800 + + glib/goption.c: Fix build on MSVC + + Use #ifdef rather than #if, as MSVC does not like #if without + parens, and this is the normal usage in other cases like this. + + glib/goption.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 1c8035066ea2ce92f5c7c7d8f8715896012fdb02 +Author: William Jon McCann +AuthorDate: Wed Jan 22 17:51:12 2014 -0500 +Commit: William Jon McCann +CommitDate: Wed Jan 22 17:51:12 2014 -0500 + + glib: annotate some memory functions with allow-none + + glib/gmem.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit f37439c1b11230a01460291818eccb6bfec23da6 +Author: Nilamdyuti Goswami +AuthorDate: Wed Jan 22 22:25:26 2014 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Wed Jan 22 22:25:26 2014 +0530 + + Assamese translation updated + + po/as.po | 993 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 489 insertions(+), 504 deletions(-) + +commit 5ca9bee52456b91ab4c0c477db3faf430f7fb72f +Author: Rico Tzschichholz +AuthorDate: Wed Jan 22 14:21:41 2014 +0100 +Commit: Rico Tzschichholz +CommitDate: Wed Jan 22 14:21:41 2014 +0100 + + gio: Fix some header/source parameter-naming mismatches + + gio/gaction.h | 2 +- + gio/gfile.h | 2 +- + gio/gsettingsschema.h | 4 ++-- + 3 files changed, 4 insertions(+), 4 deletions(-) + +commit cd86c0243c6ca24e3968e8a3ea1d0c8af8c1a690 +Author: Rico Tzschichholz +AuthorDate: Wed Jan 22 14:06:10 2014 +0100 +Commit: Rico Tzschichholz +CommitDate: Wed Jan 22 14:06:10 2014 +0100 + + gsubprocess: Add missing transfer annotations to get_*_pipe() + + gio/gsubprocess.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 829464a3c7b3054ba4d73a9b217a6db466dabc88 +Author: Ryan Lortie +AuthorDate: Sat Jan 18 14:29:16 2014 -0500 +Commit: Ryan Lortie +CommitDate: Tue Jan 21 15:15:38 2014 -0500 + + test default GSimpleAction activation + + Test the default handling of the "activate" signal on GSimpleAction. + + https://bugzilla.gnome.org/show_bug.cgi?id=722503 + + gio/tests/actions.c | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +commit a497ad889e98d261ad5f4bf31c0bfb728e12270d +Author: Jasper St. Pierre +AuthorDate: Tue Jan 21 12:08:03 2014 -0500 +Commit: Jasper St. Pierre +CommitDate: Tue Jan 21 12:08:07 2014 -0500 + + strfuncs: Make g_str_tokenize_and_fold introspectable + + glib/gstrfuncs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ea22300620a10affaa3192d8f56c777a81fcd2c6 +Author: Jasper St. Pierre +AuthorDate: Tue Jan 21 12:00:35 2014 -0500 +Commit: Jasper St. Pierre +CommitDate: Tue Jan 21 12:00:41 2014 -0500 + + gsettings: Fix annotations + + gio/gsettings.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 460e3e9d01db5ad272b8b67e1e3e15907d5d7932 +Author: Emmanuele Bassi +AuthorDate: Mon Jan 20 20:03:40 2014 +0000 +Commit: Emmanuele Bassi +CommitDate: Mon Jan 20 20:03:40 2014 +0000 + + docs: Add missing GTest functions + + The GTest message API is missing from the reference. + + docs/reference/glib/glib-sections.txt | 3 +++ + 1 file changed, 3 insertions(+) + +commit 2cb9b8f99491959e53783d127daa8c99b81e159e +Author: Chun-wei Fan +AuthorDate: Tue Jan 7 13:34:09 2014 +0800 +Commit: Matthias Clasen +CommitDate: Mon Jan 20 10:22:47 2014 -0500 + + glib/gtimezone.c: Check the size of tzi.DaylightName + + We need to re-get the size of tzi.DaylightName before we call + RegQueryValue() because the buffer might not have enough room to + hold the + value for tzi.DaylightName that would be acquired by + RegQueryValueExA(), + even though the size of tzi.DaylightName and tzi.StandardName is + the same. + + This is a pitfall of RegQueryValue()[1] as not doing this can result + in an + ERROR_MORE_DATA (234) failure, causing the acquisition of + tzi.DaylightName + to fail. + + This will fix the gdatetime/equal test, amongst some other tests in + gdatetime, at least on certain non-English version of Windows. + + [1]: + http://social.msdn.microsoft.com/Forums/vstudio/en-US/84f90854-e90c-4b63-8fc1-655a0b4645fd/regqueryvalueex-returns-errormoredata + + https://bugzilla.gnome.org/show_bug.cgi?id=719344 + + glib/gtimezone.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 2330f7e65ee22e42016d28c26f554fcfe9518ed5 +Author: Matthias Clasen +AuthorDate: Mon Jan 20 08:43:02 2014 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 20 08:43:02 2014 -0500 + + Use __asm__ instead of asm + + This is a little more robust as various compiler flags make + gcc forget about asm. + + https://bugzilla.gnome.org/show_bug.cgi?id=693299 + + glib/gbitlock.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit ff9a61eed93ec342c00360e83abb4411647f64a2 +Author: Matthias Clasen +AuthorDate: Mon Jan 20 08:16:09 2014 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 20 08:16:09 2014 -0500 + + Fix CFLAGS manipulation + + The code for ensuring that CFLAGS contain -g if + --enable-debug has been specified did not work right. + + https://bugzilla.gnome.org/show_bug.cgi?id=685204 + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit fc6d6b6e109af2d7c3339b3c64963c6679db1a6e +Author: Matthias Clasen +AuthorDate: Mon Jan 20 07:37:42 2014 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 20 07:37:42 2014 -0500 + + GAction: remove a lie + + Not only was the link to GtkAction broken, it is not true. + + https://bugzilla.gnome.org/show_bug.cgi?id=722591 + + gio/gaction.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 93cda800f1dab6ecbecb4ac247b8c079ff7fca14 +Author: Matthias Clasen +AuthorDate: Mon Jan 20 07:33:27 2014 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 20 07:33:27 2014 -0500 + + Try again to fix the freebsd build + + https://bugzilla.gnome.org/show_bug.cgi?id=722526 + + glib/deprecated/gthread.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2efc2ef77526fb902f1d603875eaca833b47f0b5 +Author: Matthias Clasen +AuthorDate: Mon Jan 20 00:34:29 2014 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 20 00:34:29 2014 -0500 + + Clarify g_strchomp and g_strchug docs + + https://bugzilla.gnome.org/show_bug.cgi?id=583036 + + glib/gstrfuncs.c | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +commit deb8a9325b2f3c82f92746583baa7bd2a6552bd1 +Author: A. Walton +AuthorDate: Thu Aug 29 23:33:58 2013 -0700 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 23:51:51 2014 -0500 + + Clarify type transformability and comparability + + If two GValues are transformable, it implies they are compatible, + so you do not need to check for compatibility yourself. Bump the + documentation to reflect this fact. + + https://bugzilla.gnome.org/show_bug.cgi?id=707111 + + gobject/gvalue.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 647412603a6f888bf9ed6b56a6827fa36d421584 +Author: Matthias Clasen +AuthorDate: Sun Jan 19 23:49:12 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 23:49:12 2014 -0500 + + More GTree and GNode formatting and documentation fixes + + Among other things, add images for tree traversal types, + taken from Wikimedia Commons. + + docs/reference/glib/Makefile.am | 14 +- + .../Sorted_binary_tree_breadth-first_traversal.svg | 134 ++++ + docs/reference/glib/Sorted_binary_tree_inorder.svg | 753 + +++++++++++++++++++++ + .../glib/Sorted_binary_tree_postorder.svg | 750 + ++++++++++++++++++++ + .../reference/glib/Sorted_binary_tree_preorder.svg | 750 + ++++++++++++++++++++ + glib/gnode.c | 53 ++ + glib/gtree.c | 593 ++++++++-------- + 7 files changed, 2741 insertions(+), 306 deletions(-) + +commit 5459d148d17a82632ad3317f8d4a9977b31cd09c +Author: Matthias Clasen +AuthorDate: Sun Jan 19 22:23:51 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 22:23:51 2014 -0500 + + Move GTraverseType to gnode docs + + docs/reference/glib/glib-sections.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 44db9f2a0fc008b38da78e7197fd3f40b8fa0872 +Author: Matthias Clasen +AuthorDate: Sun Jan 19 22:03:40 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 22:03:40 2014 -0500 + + GQueue: documentation and formatting fixes + + glib/gqueue.c | 315 + +++++++++++++++++++++++++++++----------------------------- + 1 file changed, 158 insertions(+), 157 deletions(-) + +commit a918519328df2e79c101a884ec94fe6aca574882 +Author: Matthias Clasen +AuthorDate: Sun Jan 19 21:10:25 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 21:37:28 2014 -0500 + + GList: Some further documentation and formatting tweaks + + glib/glist.c | 459 + ++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 235 insertions(+), 224 deletions(-) + +commit 86de6f0ebce777f64f60f27565fdd4b91c6fe8b4 +Author: Olivier Sessink +AuthorDate: Wed Sep 5 09:52:23 2012 +0200 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 20:43:51 2014 -0500 + + tag: documentation enhancement for novice application developers + + Adds some code examples how functions can be used. Adds a hint + to look at GQueue if access to the start and the end of the list + is required. + + applying comments from Emmanuele Bassi and adds some more + improvements to clarify how functions should be used. + + https://bugzilla.gnome.org/show_bug.cgi?id=683388 + + glib/glist.c | 164 + ++++++++++++++++++++++++++++++++++++++++------------------- + 1 file changed, 113 insertions(+), 51 deletions(-) + +commit 84f3147f434eab1124276ea2fdbee9a1e9a02c45 +Author: Simon McVittie +AuthorDate: Fri Nov 16 12:53:39 2012 +0000 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 20:23:43 2014 -0500 + + glib-init: make static assertions about platform assumptions + + GLib has a pervasive assumption that function and data pointers are + basically interchangeable, which is true in all modern ABIs, + but not actually guaranteed by ISO C. If someone tries to use GLib + on a + platform where function and data pointers are different sizes, + fail early. + + https://bugzilla.gnome.org/show_bug.cgi?id=688406 + + glib/glib-init.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit a4480d5f715a7631b1e98daa08a447f7c6b4bcd1 +Author: Simon McVittie +AuthorDate: Fri Nov 16 12:51:31 2012 +0000 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 20:23:43 2014 -0500 + + GHashTable: statically assert that GHashTableIter works as intended + + https://bugzilla.gnome.org/show_bug.cgi?id=688406 + + glib/ghash.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 476aa9ae46098f1090fc52ab2c10859fa8bb5495 +Author: Simon McVittie +AuthorDate: Fri Nov 16 12:49:15 2012 +0000 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 20:23:30 2014 -0500 + + glib-private.h: add _glib_alignof + + glib/glib-private.h | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 8f6be404cbfbda7e188bd164bb72465eeaba6980 +Author: Ryan Lortie +AuthorDate: Fri Oct 25 01:47:37 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 17:41:18 2014 -0500 + + GMainContext: unref pending sources on destroy + + It is possible (but unlikely) that there will be a non-empty list of + pending dispatches when we remove the last ref from a GMainContext. + Make sure we drop the refs on the sources appropriately. + + Add a (now-working) testcase that demonstrates how to trigger + the issue. + + https://bugzilla.gnome.org/show_bug.cgi?id=139699 + + glib/gmain.c | 5 +++++ + glib/tests/mainloop.c | 42 ++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 47 insertions(+) + +commit 2a3ee7ceafad19ecc2bfe435a95226f74d64952f +Author: Matthias Clasen +AuthorDate: Sun Jan 19 17:13:51 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 17:13:51 2014 -0500 + + Work around broken FreeBSD headers + + It seems that including just pthread.h does not define + clockid_t on these systems. + + https://bugzilla.gnome.org/show_bug.cgi?id=722526 + + glib/deprecated/gthread.h | 1 + + 1 file changed, 1 insertion(+) + +commit d102cf2b0fbab27d5787c536311745c4431d05e4 +Author: Matthias Clasen +AuthorDate: Sun Jan 19 08:57:43 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 08:58:28 2014 -0500 + + Fix the build + + The thumbnail-verification test (indirectly) includes individual + headers, so define GIO_COMPILATION to make it work. + + gio/tests/thumbnail-verification.c | 1 + + 1 file changed, 1 insertion(+) + +commit 38a6ab3e0ef0c842f9134309e033a1019e498448 +Author: Marc-André Lureau +AuthorDate: Wed Nov 6 14:02:26 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 08:28:31 2014 -0500 + + win32: silence build warning + + glocalfile.c: In function 'g_local_file_measure_size_of_file': + glocalfile.c:2654:3: warning: passing argument 2 of 'g_lstat' from + incompatible pointer type [enabled by default] + if (g_lstat (name->data, &buf) != 0) + ^ + In file included from glocalfile.c:68:0: + ../glib/gstdio.h:135:5: note: expected 'struct GStatBuf *' but + argument + is of type 'struct _stati64 *' + + https://bugzilla.gnome.org/show_bug.cgi?id=711547 + + gio/glocalfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a8f58fcfec121241be7890f5b340e139f39fd125 +Author: Marc-André Lureau +AuthorDate: Wed Nov 6 13:57:07 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 08:26:47 2014 -0500 + + win32: silence build warning + + gdbusauthmechanismexternal.c: In function 'mechanism_client_initiate': + gdbusauthmechanismexternal.c:355:3: warning: 'initial_response' may be + used uninitialized in this function [-Wmaybe-uninitialized] + return initial_response; + ^ + gdbusauthmechanismexternal.c:332:10: note: 'initial_response' was + declared here + + https://bugzilla.gnome.org/show_bug.cgi?id=711547 + + gio/gdbusauthmechanismexternal.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2873b3c20cf6b6ebde5bcaaf395675ba7bc3b696 +Author: Marc-André Lureau +AuthorDate: Wed Nov 6 13:54:34 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 08:25:33 2014 -0500 + + win32: silence build warning + + glocalfileinfo.c: In function '_g_local_file_info_get': + glocalfileinfo.c:1955:11: warning: passing argument 3 of + 'get_thumbnail_attributes' from incompatible pointer type [enabled by + default] + get_thumbnail_attributes (path, info, &statbuf); + ^ + glocalfileinfo.c:1285:1: note: expected 'const struct GStatBuf *' but + argument is of type 'struct _stati64 *' + get_thumbnail_attributes (const char *path, + + https://bugzilla.gnome.org/show_bug.cgi?id=711547 + + gio/glocalfileinfo.c | 2 +- + gio/thumbnail-verify.c | 2 +- + gio/thumbnail-verify.h | 3 ++- + 3 files changed, 4 insertions(+), 3 deletions(-) + +commit b4474c0b6bd8aee7140259c9753162b66c954a03 +Author: Matthias Clasen +AuthorDate: Sun Jan 19 08:21:50 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 08:21:50 2014 -0500 + + Avoid a deprecation warning + + https://bugzilla.gnome.org/show_bug.cgi?id=711547 + + glib/gwin32.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 7463bc1727cf805b84738902be0d3e51688aeead +Author: Christophe Fergeau +AuthorDate: Fri Jan 17 18:42:36 2014 +0100 +Commit: Matthias Clasen +CommitDate: Sun Jan 19 08:13:03 2014 -0500 + + Adjust doc to Makefile.decl renaming + + g_test_build_filename() API documentation still mentions + Makefile.decl, but + it has been renamed to glib.mk in f9eb9eed + + https://bugzilla.gnome.org/show_bug.cgi?id=722436 + + glib/gtestutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9e81c07ad6b02c073c9cc7bf0a1288b884ec8741 +Author: Ryan Lortie +AuthorDate: Sat Jan 18 14:27:26 2014 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 18 14:27:26 2014 -0500 + + GSimpleAction: fix mistake in last commit + + Some bad copy-paste happening here... + + gio/gsimpleaction.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1ec71144fb8064ffdbdcb56a213cf90a77726f68 +Author: Ryan Lortie +AuthorDate: Sat Jan 18 13:02:47 2014 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 18 14:19:37 2014 -0500 + + GSimpleAction: add default activate handler + + If the action is stateful and the user doesn't have their own + activate handler + then do some reasonable things for ourselves. + + After a lot of experience using stateful GSimpleAction it turns + out that + people almost always end up using it in the same ways: + + A boolean-typed stateful action with no parameter is most likely going + to want to be toggled. Any other type of action that has the + parameter + type equal to the state type probably intends for activation to + represent a request to change the state. + + This patch implements those two cases. This will let people stop + writing their own trivial handlers over and over. + + https://bugzilla.gnome.org/show_bug.cgi?id=722503 + + gio/gsimpleaction.c | 31 ++++++++++++++++++++++++++++++- + 1 file changed, 30 insertions(+), 1 deletion(-) + +commit 258ac3b25398547c9ae0434c7c049a88d1e309ed +Author: Ryan Lortie +AuthorDate: Sun Jan 12 12:47:43 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 17 20:13:46 2014 -0500 + + GOptionContext: add some notes about encodings + + Add a note to the overview documentation for GOptionContext about why + you need to be careful about argv encoding on UNIX and about why you + should avoid argv entirely on Windows. Mention some possible + alternative approaches, including a code example. + + https://bugzilla.gnome.org/show_bug.cgi?id=722025 + + glib/goption.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 51 insertions(+) + +commit e5f91951a132b4a7daa848887a87ba22f96568bc +Author: Ryan Lortie +AuthorDate: Sun Jan 12 12:31:38 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 17 20:06:37 2014 -0500 + + GApplication: change commandline encoding policy + + Clarify in the documentation that the commandline arguments passed + around by GApplication (to local_command_line and returned via + g_application_command_line_get_arguments()) are in the GLib filename + encoding (ie: UTF-8) on Windows, not the system code page. + + Fix the mismatch that would result from having argv passed to + g_application_run() in main() on Windows (where it is in the system + code page) by ignoring argc/argv on Windows and calling + g_win32_get_command_line() for ourselves. Document this. + + This might be a slight API break on Windows: we documented that it was + possible to call g_application_run() with arguments other than + argc/argv + and now doing that will result in those arguments being ignored. + It has + always been recommended practice to only call g_application_run() from + main() directly, however, and all of our code examples have shown only + this. We will see if this causes any issues and consider reevaluating + the situation if so. + + https://bugzilla.gnome.org/show_bug.cgi?id=722025 + + gio/gapplication.c | 32 +++++++++++++++++++++----------- + gio/gapplicationcommandline.c | 7 ++++++- + 2 files changed, 27 insertions(+), 12 deletions(-) + +commit 643f2b348dea7486ef2eaa4f8e4eb858bce5f3e1 +Author: Ryan Lortie +AuthorDate: Thu Jan 16 22:11:18 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 17 20:05:41 2014 -0500 + + g_file_new_for_commandline_arg: clarify encoding + + Add a note to the documentation for g_file_new_for_commandline_arg() + that this function is intended to operate on strings already in + the GLib + filename encoding on Windows. + + This has been the case for a long time, but this documents the + requirement. + + https://bugzilla.gnome.org/show_bug.cgi?id=722025 + + gio/gfile.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 673ee54cddab81cf4456b1c2ecf7a668e97e5a0f +Author: Ryan Lortie +AuthorDate: Sun Jan 12 12:13:42 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 17 20:04:44 2014 -0500 + + win32: add g_win32_get_command_line() + + This returns the command line in GLib filename encoding format (ie: + UTF-8) for use with g_option_context_parse_strv(). + + This will allow parsing of Unicode commandline arguments on Windows, + even if the characters in those arguments fall outside of the range of + the system codepage. + + https://bugzilla.gnome.org/show_bug.cgi?id=722025 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gwin32.c | 55 + +++++++++++++++++++++++++++++++++++ + glib/gwin32.h | 3 ++ + 3 files changed, 59 insertions(+) + +commit 3352293ab5b93d8607dc61a99195ea09aa7bf423 +Author: Ryan Lortie +AuthorDate: Sun Jan 12 12:10:19 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 17 19:33:09 2014 -0500 + + g_option_context_parse_strv: use UTF-8 on Windows + + Add another difference to the freshly-added + g_option_context_parse_strv: + now, on Windows, its arguments on to be in UTF-8 instead of the argv[] + encoding (from the system codepage). + + The documentation teases g_win32_get_command_line() which is a new + GLib-filename-encoding-based function that will be added in a + following + commit. + + https://bugzilla.gnome.org/show_bug.cgi?id=722025 + + glib/goption.c | 37 +++++++++++++++++++++++++++++++++---- + 1 file changed, 33 insertions(+), 4 deletions(-) + +commit 9592d40613ad02085fb7643cac96df655081dd3b +Author: Ryan Lortie +AuthorDate: Thu Jan 16 21:47:09 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 16 22:42:01 2014 -0500 + + GOption: don't use "rand" in code example + + rand() is a function defined in the libc, so our code example gives + warnings if you try to compile it. Fix that. + + https://bugzilla.gnome.org/show_bug.cgi?id=722025 + + glib/goption.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d3c729bf0e3320046f309ce64b4ff0189563fe89 +Author: Marc-André Lureau +AuthorDate: Thu Jan 16 18:02:18 2014 +0100 +Commit: Matthias Clasen +CommitDate: Thu Jan 16 20:27:26 2014 -0500 + + gio: fix small memory leak on local xattr + + g_strconcat() allocates memory, it needs to be freed. + + ==10653== 1,400 bytes in 50 blocks are definitely lost in loss record + 1,838 of 1,851 + ==10653== at 0x4A0645D: malloc (in + /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) + ==10653== by 0x54ACB22: g_malloc (gmem.c:102) + ==10653== by 0x54ACE4D: g_malloc_n (gmem.c:343) + ==10653== by 0x54C8463: g_strconcat (gstrfuncs.c:589) + ==10653== by 0x4D6ED38: get_xattrs_from_fd (glocalfileinfo.c:660) + ==10653== by 0x4D71622: + _g_local_file_info_get_from_fd (glocalfileinfo.c:2028) + ==10653== by 0x4D731A0: + g_local_file_input_stream_query_info (glocalfileinputstream.c:356) + ==10653== by 0x4C996D8: + g_file_input_stream_query_info (gfileinputstream.c:148) + ==10653== by 0x4C863F6: file_copy_fallback (gfile.c:3120) + ==10653== by 0x4C86DD2: g_file_copy (gfile.c:3398) + + https://bugzilla.gnome.org/show_bug.cgi?id=722357 + + gio/glocalfileinfo.c | 1 + + 1 file changed, 1 insertion(+) + +commit fabdf80c7de57e531fba70052a89ed19d3c24e91 +Author: Christian Schramm +AuthorDate: Thu Jan 16 12:36:09 2014 +0100 +Commit: Matthias Clasen +CommitDate: Thu Jan 16 20:18:46 2014 -0500 + + gstringchunk: Use g_slist_free_full() where possible + + We have that function, let's use it - instead of manually + freeing the elements of the slist in a loop (and reduce + the line count a bit). + + https://bugzilla.gnome.org/show_bug.cgi?id=722326 + + glib/gstringchunk.c | 16 ++-------------- + 1 file changed, 2 insertions(+), 14 deletions(-) + +commit 5c5982709f3814c16a6a4d60030b65955926367b +Author: Christian Schramm +AuthorDate: Thu Jan 16 12:14:32 2014 +0100 +Commit: Matthias Clasen +CommitDate: Thu Jan 16 20:15:31 2014 -0500 + + gbookmarkfile: removed unused include 'gslist.h' + + https://bugzilla.gnome.org/show_bug.cgi?id=722323 + + glib/gbookmarkfile.c | 1 - + 1 file changed, 1 deletion(-) + +commit c4934c93589420b6c024f893ddb7cafc75279d40 +Author: Jasper St. Pierre +AuthorDate: Wed Jan 15 10:37:55 2014 -0500 +Commit: Jasper St. Pierre +CommitDate: Wed Jan 15 10:37:59 2014 -0500 + + Update .gitignore + + gio/tests/.gitignore | 8 +++++++- + glib/tests/.gitignore | 3 +++ + 2 files changed, 10 insertions(+), 1 deletion(-) + +commit e41dab438cb9b0b9dcc815158da12dd391aa35ed +Author: Ryan Lortie +AuthorDate: Mon Jan 13 16:12:41 2014 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 13 17:23:23 2014 -0500 + + GLib 2.39.3 + + NEWS | 85 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 85 insertions(+) + +commit bcd276c2b453517c43c8413ed877f82a9ead1884 +Author: Ryan Lortie +AuthorDate: Mon Jan 13 17:23:14 2014 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 13 17:23:22 2014 -0500 + + more distcheck fixes + + gio/tests/Makefile.am | 4 +++- + glib/tests/Makefile.am | 2 +- + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit 028856a99fd8ce7dc6a1318a6b57cdbbefbc6bdc +Author: Ryan Lortie +AuthorDate: Mon Jan 13 16:41:31 2014 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 13 16:43:12 2014 -0500 + + build: fix 'make distclean' + + Don't run a non-existent lcov command to clean up during 'make + distclean' + + glib.mk | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 4130118a72c1389efe7c646b620932bb33a06530 +Author: Ryan Lortie +AuthorDate: Mon Jan 13 16:12:31 2014 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 13 16:12:31 2014 -0500 + + giomodule test: fix again + + The compiled modules will be in the G_TEST_BUILT directory, not _DIST. + + gio/tests/giomodule.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 186965fc9b9105fbaaffec2300a36175f160b1db +Author: Ryan Lortie +AuthorDate: Mon Jan 13 15:31:38 2014 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 13 15:31:38 2014 -0500 + + giomodule test: force shared library build + + http://lists.gnu.org/archive/html/bug-libtool/2013-05/msg00009.html + hit + us again. libtool only builds .so files if we install the library, so + force it to build for our testcase, even if we don't install it. + + gio/tests/modules/Makefile.am | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit 60cca82c9da99c9dc6b0622d5b0779fd0bdc2ad2 +Author: Rico Tzschichholz +AuthorDate: Mon Jan 13 12:33:35 2014 +0100 +Commit: Rico Tzschichholz +CommitDate: Mon Jan 13 12:33:35 2014 +0100 + + gdesktopinfo: Fix typo in "Since" annotation of has_key + + gio/gdesktopappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fb087feb4ddb643b8ade424cdbe5e301a3899ba8 +Author: Dimitris Spingos +AuthorDate: Mon Jan 13 10:25:01 2014 +0200 +Commit: Dimitris Spingos +CommitDate: Mon Jan 13 10:25:01 2014 +0200 + + Updated Greek translation + + po/el.po | 1034 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 498 insertions(+), 536 deletions(-) + +commit 3d8ec7a7db9d897b01b32d6ff0cb1fbc313643b1 +Author: Yosef Or Boczko +AuthorDate: Mon Jan 13 08:59:04 2014 +0200 +Commit: Yosef Or Boczko +CommitDate: Mon Jan 13 08:59:04 2014 +0200 + + Updated Hebrew translation + + po/he.po | 1458 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 827 insertions(+), 631 deletions(-) + +commit d751e65aff6df64318ab2d95b3098dd155a1e0aa +Author: Ryan Lortie +AuthorDate: Fri Jan 10 12:28:14 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 10 12:32:35 2014 -0500 + + tests: fix leaks in option-context test + + Use the new g_option_context_parse_strv() to patch up some leaks + in some + insufficiently-argv-emulating testcases in option-context.c. + + This gives some test coverage of the new function while also making + option-context now leak-free. + + https://bugzilla.gnome.org/show_bug.cgi?id=721947 + + glib/tests/option-context.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit f062fae4d6d705736c2b1b899c4413b99d4cfc96 +Author: Ryan Lortie +AuthorDate: Fri Jan 10 12:16:24 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 10 12:32:35 2014 -0500 + + GOptionContext: add memory-friendly parse mode + + Add g_option_context_parse_strv() that obeys the normal memory + conventions for + dealing with a strv instead of assuming that we're dealing with the + 'argv' + parameter to main(). + + This will help for using GOptionContext with GApplication. + + https://bugzilla.gnome.org/show_bug.cgi?id=721947 + + docs/reference/glib/glib-sections.txt | 1 + + glib/goption.c | 43 + +++++++++++++++++++++++++++++++++++ + glib/goption.h | 4 ++++ + 3 files changed, 48 insertions(+) + +commit d3017967d8123e800fd593e22fda1c0d7f40071f +Author: Ryan Lortie +AuthorDate: Fri Jan 10 11:17:44 2014 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 10 11:17:44 2014 -0500 + + GApplication: allow handles_commandline and service + + The default local_command_line handler has a fast return path for the + case that we handle the commandline by forwarding it to the primary + instance, but this doesn't account for the fact that we may want to + become a service. + + Allow for this by making sure we don't take the fast path of the + service + flag is set. + + gio/gapplication.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit e8b7dd32fcfb4be82d3d78561fc36fbc560f3394 +Author: Ryan Lortie +AuthorDate: Sat Oct 26 12:27:20 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jan 9 16:15:53 2014 -0500 + + GApplication: add --gapplication-service switch + + Add a --gapplication-service switch to the default implementation of + local_command_line. This name is unlikely to clash with any + option used + by an existing application. + + When a normal application (neither service nor launcher) is launched + with + exactly this one argument, G_APPLICATION_IS_SERVICE will be set. + + The idea is that people will write their D-Bus service file with + --gapplication-service on the Exec line. This provides a nice + compromise for people who want the benefits of DBusActivatable + applications but without losing the ability to easily run them + directly + (under the debugger or inside jhbuild, etc.) + + https://bugzilla.gnome.org/show_bug.cgi?id=710965 + + gio/gapplication.c | 40 ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 40 insertions(+) + +commit 8bc63b0ef03ee431eeaaf12191cb2cf983ee7de2 +Author: Ryan Lortie +AuthorDate: Wed Jan 8 11:01:55 2014 -0500 +Commit: Ryan Lortie +CommitDate: Wed Jan 8 22:58:06 2014 -0500 + + gdbus-introspection test: test escaping attributes + + Make sure attribute values are properly escaped in generated XML. + + https://bugzilla.gnome.org/show_bug.cgi?id=721796 + + gio/tests/gdbus-introspection.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 04ee78248631e4ae2dc9b7088fee60c57515d3d1 +Author: Ryan Lortie +AuthorDate: Wed Jan 8 10:56:57 2014 -0500 +Commit: Ryan Lortie +CommitDate: Wed Jan 8 22:58:06 2014 -0500 + + gdbus: properly escape introspection annotations + + Make sure we escape any special characters that are found in + annotation + names or values to avoid emitting a malformed XML document in response + to an Introspect call. + + https://bugzilla.gnome.org/show_bug.cgi?id=721796 + + gio/gdbusintrospection.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +commit 38720494452aa336eb2f168ac4bd2add138c400e +Author: Matthias Clasen +AuthorDate: Tue Jan 7 22:55:43 2014 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 7 22:55:43 2014 -0500 + + Add includes to all gio docs + + gio/gaction.c | 1 + + gio/gactiongroup.c | 1 + + gio/gactiongroupexporter.c | 1 + + gio/gactionmap.c | 1 + + gio/gapplication.c | 1 + + gio/gapplicationcommandline.c | 1 + + gio/gdbusactiongroup.c | 1 + + gio/gdbusmenumodel.c | 1 + + gio/ginetaddress.c | 1 + + gio/ginetaddressmask.c | 1 + + gio/ginetsocketaddress.c | 1 + + gio/gmenu.c | 1 + + gio/gmenuexporter.c | 1 + + gio/gmenumodel.c | 1 + + gio/gnotification.c | 1 + + gio/gpermission.c | 5 +++-- + gio/gpropertyaction.c | 1 + + gio/gproxy.c | 1 + + gio/gproxyaddress.c | 1 + + gio/gremoteactiongroup.c | 1 + + gio/gsettings.c | 1 + + gio/gsettingsschema.c | 5 +++-- + gio/gsimpleaction.c | 1 + + gio/gsimpleactiongroup.c | 1 + + gio/gsimplepermission.c | 1 + + gio/gsocketaddress.c | 5 +++-- + gio/gsocketconnectable.c | 1 + + gio/gsocketcontrolmessage.c | 1 + + gio/gsocketlistener.c | 1 + + gio/gsocketservice.c | 1 + + gio/gsubprocess.c | 1 + + gio/gsubprocesslauncher.c | 1 + + gio/gtask.c | 3 ++- + gio/gtcpconnection.c | 1 + + gio/gtcpwrapperconnection.c | 4 +++- + gio/gthreadedsocketservice.c | 1 + + gio/gtlscertificate.c | 1 + + 37 files changed, 46 insertions(+), 8 deletions(-) + +commit 86497649bbe2c39c61ec34810017af6dc45eaa0c +Author: Dan Winship +AuthorDate: Tue Jan 7 11:18:54 2014 -0500 +Commit: Dan Winship +CommitDate: Tue Jan 7 12:32:35 2014 -0500 + + Document g_test_run() order better, and how it changed + + But also note that the ordering is strictly an aesthetic/convenience + thing, and that tests should not be written to depend on it. + + https://bugzilla.gnome.org/show_bug.cgi?id=721624 + + README.in | 18 ++++++++++++++++++ + glib/gtestutils.c | 26 +++++++++++++++++++++++++- + 2 files changed, 43 insertions(+), 1 deletion(-) + +commit 0e109fceab05f094baabc10d795c4f489584840c +Author: Claudio Saavedra +AuthorDate: Tue Jan 7 11:33:14 2014 +0200 +Commit: Claudio Saavedra +CommitDate: Tue Jan 7 11:33:14 2014 +0200 + + glib/tests: fix build + + glib/tests/keyfile.c | 1 + + 1 file changed, 1 insertion(+) + +commit 6bd30a4cb90c406edfd141016e08b36804b98103 +Author: Chun-wei Fan +AuthorDate: Mon Jan 6 10:05:48 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jan 7 13:36:31 2014 +0800 + + glib/tests/keyfile.c: Use g_close() + + Use g_close() instead, as close() is really found in io.h on + Windows, not + unistd.h as on Unix, and hence unistd.h is not universally available. + + https://bugzilla.gnome.org/show_bug.cgi?id=719344 + + glib/tests/keyfile.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 8bb81e7024db1f3e88cde20459ed62981cf372af +Author: Chun-wei Fan +AuthorDate: Sat Jan 4 10:52:15 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jan 7 13:35:16 2014 +0800 + + glib/tests/date.c: Fix the tests on non-English Windows + + The names of the month (and abbreviations) are specific to the Windows + system locale, so we need to use SetThreadLocale() to set the + locale of + the running program to en-US so that it will parse "March" and + "Sept" etc. + correctly. + + https://bugzilla.gnome.org/show_bug.cgi?id=719344 + + glib/tests/date.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 210f96dfcfec94946ce28e910a5ca2db78335885 +Author: Ryan Lortie +AuthorDate: Mon Jan 6 13:58:41 2014 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 6 14:00:17 2014 -0500 + + Fix one-character typo in old NEWS entry + + Change a very confusing typo "will not" -> "will now" about the + g_critical() on removing non-existent sources. + + https://bugzilla.gnome.org/show_bug.cgi?id=721625 + + NEWS | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit eb7ef594defc1b70acb4750a9d785cb42d1057be +Author: Chun-wei Fan +AuthorDate: Mon Jan 6 12:31:18 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Jan 6 12:31:18 2014 +0800 + + Fix GLib MSVC Project + + The glib/gthread-win32.c was accidently removed from the last + commit, sorry + + build/win32/vs10/glib.vcxprojin | 1 + + build/win32/vs9/glib.vcprojin | 1 + + 2 files changed, 2 insertions(+) + +commit 940b3c225030494913b2801b05885ae32bb957ac +Author: Chun-wei Fan +AuthorDate: Mon Jan 6 12:21:46 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Jan 6 12:21:46 2014 +0800 + + Tidy Up the glib MSVC Project + + Move the per-source define/undefine cflags into the property sheets, + and + apply the cflags for the bundled PCRE sources to the PCRE sources only + + build/win32/vs10/glib-build-defines.props | 10 +- + build/win32/vs10/glib.vcxprojin | 231 + +++++++++++++++++++---------- + build/win32/vs9/glib-build-defines.vsprops | 10 +- + build/win32/vs9/glib.vcprojin | 161 ++++++++++---------- + 4 files changed, 247 insertions(+), 165 deletions(-) + +commit 16c41f0c36e20d63db28bc0938d28bd9e40bf1e4 +Author: Chun-wei Fan +AuthorDate: Mon Jan 6 11:22:39 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Jan 6 11:22:39 2014 +0800 + + Drop the testglib MSVC Projects + + There are many test programs that are shipped with GLib, and this + project + is a one-to-one project, which does not make sense to keep as + various test + programs may have different CFLAGS, etc, which will require different + build + options. + + build/win32/vs10/Makefile.am | 2 - + build/win32/vs10/glib.sln | 18 ---- + build/win32/vs10/testglib.vcxproj | 173 + ------------------------------ + build/win32/vs10/testglib.vcxproj.filters | 22 ---- + build/win32/vs11/.gitignore | 2 - + build/win32/vs11/Makefile.am | 2 - + build/win32/vs9/Makefile.am | 1 - + build/win32/vs9/glib.sln | 21 ---- + build/win32/vs9/testglib.vcproj | 158 + --------------------------- + 9 files changed, 399 deletions(-) + +commit 71c9ea42f81efef48e58bcd9223fe11b63ab8489 +Author: Matthias Clasen +AuthorDate: Sat Jan 4 21:09:18 2014 -0500 +Commit: Matthias Clasen +CommitDate: Sat Jan 4 21:09:18 2014 -0500 + + Use tap mode for installed tests too, when using tap + + glib-tap.mk | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit b3253fe02521969d4f4299136ae34a7e147adc2a +Author: Rico Tzschichholz +AuthorDate: Sat Jan 4 22:04:20 2014 +0100 +Commit: Matthias Clasen +CommitDate: Sat Jan 4 18:46:52 2014 -0500 + + glib/tests: Fix non-debug build of slice test + + In addition to e013cf9cad56e919af2f057eb52d58371483a6f8 + + glib/tests/slice.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 33f81cc509198e65f76a506340eb9863ca7120ce +Author: Jasper St. Pierre +AuthorDate: Sat Jan 4 01:40:24 2014 -0500 +Commit: Jasper St. Pierre +CommitDate: Sat Jan 4 01:40:27 2014 -0500 + + tests/keyfile: Fix build + + glib/tests/keyfile.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 589aed9383c6008d71ae5fe12356ffdd944802f0 +Author: Chun-wei Fan +AuthorDate: Fri Jan 3 23:48:04 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Sat Jan 4 10:44:17 2014 +0800 + + gio/tests/giomodule.c: Use G_MODULE_SUFFIX + + The file extension of the GIO module could be something other + than .so, + depending on platform. Use G_MODULE_SUFFIX so that the test will run + correctly on non-*nix platforms, such as Windows. + + https://bugzilla.gnome.org/show_bug.cgi?id=719344 + + gio/tests/giomodule.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3fd6edab66244b100c32dc0a8b0720fe61431dcc +Author: Chun-wei Fan +AuthorDate: Tue Dec 17 10:58:15 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Sat Jan 4 10:42:28 2014 +0800 + + Fix the Keyfile Test on Windows + + Windows will not allow one to write to a temp file opened by + g_mkstemp() + by opening another fd associated with it before one closes the fd that + is returned by g_mkstemp(), which will cause the test_save test + to fail. + + Fix this by using a variable to store the fd from g_mkstemp() + and checking + it, and call close() on that variable before attempting to call + g_key_file_save_to_file() on the temp file as that will attempt + to open + another fd (which would not work) associated with that temp file. + + https://bugzilla.gnome.org/show_bug.cgi?id=719344 + + glib/tests/keyfile.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 6448f875529bb6c79f64550b62c3e294c3a6efa5 +Author: Michael Catanzaro +AuthorDate: Thu Jan 2 19:40:47 2014 -0600 +Commit: Michael Catanzaro +CommitDate: Thu Jan 2 19:40:47 2014 -0600 + + docs: fix two typos + + docs/reference/gobject/tut_tools.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 1867fc210fa14d68d1b139a04c5d79a0e344c6bc +Author: Ryan Lortie +AuthorDate: Thu Jan 2 16:43:13 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 2 20:38:40 2014 -0500 + + unix signals: stop using atomics + + They are not required here. See the discussion in the bug report. + + https://bugzilla.gnome.org/show_bug.cgi?id=711090 + + glib/gmain.c | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +commit 23ec1b9aca13d862e30be69e642d7022f7760fcb +Author: Rafael Ferreira +AuthorDate: Thu Jan 2 22:08:14 2014 -0200 +Commit: Rafael Ferreira +CommitDate: Thu Jan 2 22:08:14 2014 -0200 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 1022 + ++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 522 insertions(+), 500 deletions(-) + +commit 2b289cc5659276f570e9862ab8fd9d3733b88c22 +Author: Matthias Clasen +AuthorDate: Thu Jan 2 13:25:41 2014 -0500 +Commit: Matthias Clasen +CommitDate: Thu Jan 2 13:36:37 2014 -0500 + + Fix make install with --disable-installed-tests + + If installed tests are not enabled, installed_testdir is not + defined, so we end up trying to create /modules and to chmod + things in /x-content/, which is not right. + + gio/tests/Makefile.am | 2 ++ + gio/tests/modules/Makefile.am | 21 ++++++++++++++++----- + 2 files changed, 18 insertions(+), 5 deletions(-) + +commit c09cfc1c8a218a320faa7f624e6ac3194fcd8049 +Author: Ryan Lortie +AuthorDate: Thu Jan 2 12:54:12 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 2 12:54:12 2014 -0500 + + GFile: fix uninitialised variable + + clang cause the fact that some of our 'goto out;' cases cause use + to try + and free an uninitialised GString. Fix that up. + + gio/gfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 51b3dd73329ddabfd4fd72c23fa220ee948a854f +Author: Ryan Lortie +AuthorDate: Thu Jan 2 01:38:07 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 2 10:08:55 2014 -0500 + + GDBusConnection: don't write to stdout + + When losing the D-Bus connection, we would write to stdout about + it just + before killing ourselves with SIGTERM. We're a library, so we should + probably use stderr instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=721324 + + gio/gdbusconnection.c | 10 +++++----- + gio/tests/gdbus-exit-on-close.c | 4 ++-- + 2 files changed, 7 insertions(+), 7 deletions(-) + +commit 8976175ba9913219d5469f022ceac03a106b4c54 +Author: Ryan Lortie +AuthorDate: Thu Jan 2 01:55:07 2014 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 2 01:55:07 2014 -0500 + + gsettings: tweak test for last commit + + The last commit changed the behaviour of child objects of delayed + GSettings. Adjust the testcase accordingly. + + gio/tests/gsettings.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit c7636ce64b8c4bf89fe75e9431d7d583a1573424 +Author: Ryan Lortie +AuthorDate: Sat Dec 21 23:13:57 2013 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 2 01:50:40 2014 -0500 + + g_settings_get_child(): inherit backend + + Part of the purpose of g_settings_get_child() was that it could + be used + after you delay() a GSettings object, and then apply() all of the + settings together. In order for that to work, we need to share the + backend. + + https://bugzilla.gnome.org/show_bug.cgi?id=720891 + + gio/gsettings.c | 1 + + 1 file changed, 1 insertion(+) + +commit d25b655bf579ccc7e2e56a9b2185177fde04e058 +Author: Matthias Clasen +AuthorDate: Wed Jan 1 23:28:23 2014 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 23:28:23 2014 -0500 + + Make symlink test work installed + + We can't assume that the location used for G_TEST_DIST paths + is writable, so just create the symlink in the current directory + instead. + + glib/tests/fileutils.c | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +commit d91023fb4c9ac329aa5eed97e37a3f1b661a2203 +Author: Matthias Clasen +AuthorDate: Wed Jan 1 22:39:32 2014 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 22:39:32 2014 -0500 + + Drop locale-dependent timeval tests + + glib/tests/timer.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 11ddb843b9a0f7b56cb0c4b166eacd321e3e6dd3 +Author: Matthias Clasen +AuthorDate: Wed Jan 1 22:30:24 2014 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 22:30:24 2014 -0500 + + Make /contenttype/tree test work installed + + The x-content/win32-software type is only recognized if + the autorun.exe file is executable. Since the file is installed + as data, we need to fix up its permissions in an + install-data-hook. + + gio/tests/Makefile.am | 3 +++ + 1 file changed, 3 insertions(+) + +commit dba1ae12a89e2acc8229db0e2f678109b836c6d0 +Author: Matthias Clasen +AuthorDate: Wed Jan 1 22:01:15 2014 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 22:01:15 2014 -0500 + + Avoid a compiler warning + + gio/tests/basic-application.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6106e38c8e7cbf523fd3a9c638ffc32133d2a7a4 +Author: Matthias Clasen +AuthorDate: Wed Jan 1 21:39:51 2014 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 21:41:16 2014 -0500 + + Make timeval tests independent of the environment + + Some of the tested formats are locale-dependent, so unset + the TZ environment variable before testing them. + + glib/tests/timer.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit cda4080af079b733d8e8ad50fae3527cbdf11e15 +Author: Chun-wei Fan +AuthorDate: Thu Jan 2 09:54:18 2014 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Jan 2 09:54:18 2014 +0800 + + MSVC 2012 Projects: Rename a Property Sheet + + Forgot to update the property sheet file name from the Visual + Studio 2010 + update... Sorry! + + build/win32/vs11/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 76584e7ae3c3676e6445637f1ad026e5af857938 +Author: Ryan Lortie +AuthorDate: Tue Oct 29 11:11:28 2013 -0700 +Commit: Colin Walters +CommitDate: Wed Jan 1 19:19:59 2014 -0500 + + Fix races in unix signal dispatch + + Fix some races introduced in be2c7b83c4a9c9d3aa76b1499c27ab19e0f4e470 + while keeping the property that multiple handlers for the same unix + signal all get dispatched. + + Also fix the behaviour of the source checking for pending signals when + it's created. No matter what we do here (clear the pending flag + or not) + there is something that can go wrong. + + If we clear the flag, we may prevent other sources from being + dispatched. If we don't clear it, we may end up dispatching the same + source twice (if we manage to dispatch it from its own thread + before the + GLib worker has a chance to run). + + Instead, run the full dispatch procedure when a new source is added. + It + actually doesn't matter what thread this runs in since the lock + is held. + + https://bugzilla.gnome.org/show_bug.cgi?id=711090 + + glib/gmain.c | 27 ++++++++++++++++++++------- + 1 file changed, 20 insertions(+), 7 deletions(-) + +commit 97d9138f6c4367bdfe76e3e46871a683c4a2d051 +Author: Colin Walters +AuthorDate: Wed Jan 1 19:05:34 2014 -0500 +Commit: Colin Walters +CommitDate: Wed Jan 1 19:05:34 2014 -0500 + + gio/tests: Fix usage of BUILT_SOURCES + + gio/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 52cefa239dd5b83b084107a4994d67f719812338 +Author: Yosef Or Boczko +AuthorDate: Thu Jan 2 01:40:26 2014 +0200 +Commit: Yosef Or Boczko +CommitDate: Thu Jan 2 01:40:26 2014 +0200 + + Fix doc build + + docs/reference/glib/running.xml | 2 -- + 1 file changed, 2 deletions(-) + +commit f9f7ad2557bac58452f827b7890d8ef246e53ede +Author: Matthias Clasen +AuthorDate: Wed Jan 1 17:42:33 2014 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Improve gutils.c test coverage + + glib/tests/utils.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit 3de604d438feb851c7517ab04a823d25bd1997ba +Author: Matthias Clasen +AuthorDate: Wed Jan 1 17:41:59 2014 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Improve GDate test coverage + + glib/tests/date.c | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + +commit 5e6d86877ddf9961b6dbe37d02a2ce2d31b9d6cf +Author: Matthias Clasen +AuthorDate: Tue Dec 31 09:19:50 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Improve GIOChannel test coverage + + glib/tests/protocol.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 5ec36cd02ae2efacf2dd11c218afa2b3ab1dee40 +Author: Matthias Clasen +AuthorDate: Tue Dec 31 09:19:22 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Improve hostutils test coverage + + glib/tests/hostutils.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit baceea958207bc6a010bae6bc87805f97611cccf +Author: Matthias Clasen +AuthorDate: Tue Dec 31 09:18:50 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Improve GVariant test coverage + + glib/tests/gvariant.c | 204 + +++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 201 insertions(+), 3 deletions(-) + +commit ec0d6d7812a655355afeb14d76647fc00c047102 +Author: Matthias Clasen +AuthorDate: Tue Dec 31 09:18:30 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Test stdio wrappers + + glib/tests/fileutils.c | 78 + ++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 76 insertions(+), 2 deletions(-) + +commit 93dad4808e6ea74a3688db7942a630ff857dd0e5 +Author: Matthias Clasen +AuthorDate: Mon Dec 30 20:18:15 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Trivial typo fix + + glib/gvariant-parser.c | 2 +- + glib/gvariant-serialiser.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 90aa4ed0a061ac7dfcf9d92b7cd1acf3ad70e8aa +Author: Matthias Clasen +AuthorDate: Mon Dec 30 10:55:07 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Improve charset test coverage + + glib/tests/utils.c | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit 4f0a13effca82febccb0e84d0017bf378359fb69 +Author: Matthias Clasen +AuthorDate: Mon Dec 30 10:54:46 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Add tests for g_malloc + + glib/tests/Makefile.am | 1 + + glib/tests/malloc.c | 117 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 118 insertions(+) + +commit 58cdf0b474ddcc94ba0bedc39c778cfa93c518ce +Author: Matthias Clasen +AuthorDate: Mon Dec 30 10:53:32 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Drop memory-related trap variables + + These are just more lo-tech conditional breakpoint wannabes. + Debuggers can be trusted to support conditional breakpoints + nowadays. + + docs/reference/glib/running.xml | 42 + ----------------------------------------- + glib/gmem.c | 25 ------------------------ + 2 files changed, 67 deletions(-) + +commit 6d3b83a8c131e190da5db10d81c0d3cc0e3c6768 +Author: Matthias Clasen +AuthorDate: Mon Dec 30 09:49:30 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Improve GAsyncQueue test coverage + + glib/tests/asyncqueue.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit 9a2c8d89c7b5039475bbe17c043cd9d7c884fc9f +Author: Matthias Clasen +AuthorDate: Mon Dec 30 09:48:56 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Improve test coverage of g_utf8_collate_key_for_filename + + The existing tests were accidentally using the same test data + twice. Fix that, and add another set of tests that exercise + the filename collation special cases. + + glib/tests/collate.c | 60 + +++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 57 insertions(+), 3 deletions(-) + +commit 32e0499c5623a69575c408944cd56a7e5b755d9e +Author: Matthias Clasen +AuthorDate: Mon Dec 30 09:48:29 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Add tests for g_spaced_primes_closest + + glib/tests/hash.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 46 insertions(+) + +commit 4989cb4ddefe9daca94b20ec4e4912e38c7b237e +Author: Matthias Clasen +AuthorDate: Mon Dec 30 09:48:10 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Improve GOptionContext test coverage + + glib/tests/option-context.c | 60 + +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 60 insertions(+) + +commit d6bd36c6992c9b2b4b47391b47d954c8b64e44c3 +Author: Matthias Clasen +AuthorDate: Mon Dec 30 09:47:49 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Improve GBookmarkFile test coverage + + glib/tests/bookmarkfile.c | 259 + +++++++++++++++++++++++++++++++++++++ + glib/tests/bookmarks/valid-01.xbel | 4 + + glib/tests/bookmarks/valid-02.xbel | 2 + + glib/tests/bookmarks/valid-03.xbel | 1 + + 4 files changed, 266 insertions(+) + +commit 14359e17c99fdcd9f7492aad0b4795e18795e540 +Author: Matthias Clasen +AuthorDate: Tue Dec 31 12:45:09 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + GBookmarkFile: Streamline error handling a bit + + glib/gbookmarkfile.c | 21 ++++----------------- + 1 file changed, 4 insertions(+), 17 deletions(-) + +commit 228a2c82f6c51bda71c36952cba72bafa7344e9f +Author: Matthias Clasen +AuthorDate: Tue Dec 31 12:48:05 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + GBookmarkFile: Remove dead code + + The icon element is actually parsed further up, and this + case is never hit, so remove it. + + glib/gbookmarkfile.c | 20 -------------------- + 1 file changed, 20 deletions(-) + +commit 0f746070d813aa3d7e181a3b29828d7a9ad66953 +Author: Matthias Clasen +AuthorDate: Mon Dec 30 09:45:53 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:22 2014 -0500 + + Make a bookmark testfile roundtrippable + + This will be used in new tests in the following commit. + + glib/tests/bookmarks/valid-01.xbel | 15 ++++++--------- + 1 file changed, 6 insertions(+), 9 deletions(-) + +commit 95f13ded9243c7ea9e7ded8e013f683a6c1bb2b5 +Author: Matthias Clasen +AuthorDate: Mon Dec 30 08:57:04 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Trivial formatting fixes + + glib/gunicollate.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit d264d32d3b0a5080bc41186d3ef11dd4373af2b5 +Author: Matthias Clasen +AuthorDate: Sun Dec 29 13:47:43 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Improve glib-unix test coverage + + glib/tests/unix.c | 33 +++++++++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +commit 6814f7ebd9013a2df439bd81346960421e726a3c +Author: Matthias Clasen +AuthorDate: Sun Dec 29 13:46:00 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Improve GHashTable test coverage + + glib/tests/hash.c | 27 ++++++++++++++++++++++++++- + 1 file changed, 26 insertions(+), 1 deletion(-) + +commit 95d4856760d0e5c81c14f60c88a986eaed12cbe2 +Author: Matthias Clasen +AuthorDate: Sun Dec 29 13:45:38 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Add a test for g_markup_parse_context_get_element_stack + + glib/tests/Makefile.am | 1 + + glib/tests/markup.c | 98 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 99 insertions(+) + +commit 27e352985bf0734e9209e8052dc966a05e6bfae1 +Author: Matthias Clasen +AuthorDate: Sun Dec 29 13:43:28 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Remove broken attempt at parsing date-only + + g_time_val_from_iso8601 was attempting to parse strings + having only a date, but failed to actually set the timeval + despite returning TRUE. Since the docs state that the function + only parses strings containing a date and a time, just return + FALSE in this case. + + Also remove an incomplete testcase for this behaviour that was + just checking the boolean return value, but not timeval. + + glib/gtimer.c | 17 ++++++----------- + tests/testglib.c | 2 +- + 2 files changed, 7 insertions(+), 12 deletions(-) + +commit 680c348bb4f7b815ff58a48df915f67e175dea4f +Author: Matthias Clasen +AuthorDate: Sun Dec 29 07:55:14 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Add missing includes + + config.h needs to be included in every source file, first. + + gio/gfdonotificationbackend.c | 2 ++ + gio/ggtknotificationbackend.c | 1 + + 2 files changed, 3 insertions(+) + +commit cc8c1541c9ed420ca8a3a8c21605341e5c6f5939 +Author: Matthias Clasen +AuthorDate: Sun Dec 29 07:23:19 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Improve mainloop test coverage + + glib/tests/mainloop.c | 69 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 69 insertions(+) + +commit 24d992f8a16347e13a4351db63b9e3a0c97b9577 +Author: Matthias Clasen +AuthorDate: Sun Dec 29 07:23:01 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Add tests for GTimer and GTimeVal + + glib/tests/Makefile.am | 1 + + glib/tests/timer.c | 213 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 214 insertions(+) + +commit 2ded47e9558c49e5ad281b693a9c1a7f1180355d +Author: Matthias Clasen +AuthorDate: Wed Dec 25 23:52:15 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Improve GTree test coverage + + glib/tests/tree.c | 144 + ++++++++++++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 129 insertions(+), 15 deletions(-) + +commit 6e23e6c641022f15dfa4fa6da6fddc1f37cd92c6 +Author: Matthias Clasen +AuthorDate: Wed Dec 25 23:51:58 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Improve logging test coverage + + glib/tests/logging.c | 32 +++++++++++++++++++++----------- + 1 file changed, 21 insertions(+), 11 deletions(-) + +commit cdb14a194e08eac5e34ac22f0183a478cfc413d7 +Author: Matthias Clasen +AuthorDate: Wed Dec 25 23:51:26 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Improve testing test coverage + + In particular, test the just-fixed g_test_trap_reached_timeout. + + glib/tests/testing.c | 41 +++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 41 insertions(+) + +commit 3343bc3385c54f9098869103a7817a71a7e05ca7 +Author: Matthias Clasen +AuthorDate: Wed Dec 25 23:50:37 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Fix g_test_trap_reached_timeout + + The function was returning the opposite of what the + documentation says. + + glib/gtestutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e013cf9cad56e919af2f057eb52d58371483a6f8 +Author: Matthias Clasen +AuthorDate: Tue Dec 24 23:35:31 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Improve GSlice test coverage + + glib/tests/slice.c | 150 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 150 insertions(+) + +commit 19ad8dbfa6dd83c015b1d2a74e61417605c53e7d +Author: Matthias Clasen +AuthorDate: Tue Dec 24 23:33:28 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Improve GNode test coverage + + glib/tests/node.c | 228 + +++++++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 165 insertions(+), 63 deletions(-) + +commit 6fe85aee8ded23719faff64599299fd6c2ea480b +Author: Matthias Clasen +AuthorDate: Tue Dec 24 23:26:25 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Improve fileutils test coverage + + Add some tests for g_file_read_link. + + glib/tests/fileutils.c | 43 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 43 insertions(+) + +commit f16753cfe04006144bdfbd1fb7d3dab20024915b +Author: Matthias Clasen +AuthorDate: Tue Dec 24 23:24:40 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Unify error reporting in gfileutils.c + + Use the set_file_error helper function in more places, + saving some 50 lines. + + glib/gfileutils.c | 218 + ++++++++++++++++++++++-------------------------------- + 1 file changed, 88 insertions(+), 130 deletions(-) + +commit 2299bcd88d7bc99e787b4ee878355e6eddb778ca +Author: Matthias Clasen +AuthorDate: Tue Dec 24 00:06:00 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Improve GResourceFile test coverage + + gio/tests/resources.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 3eeeb7aaa7d601eb6f46005a03638744a890e9f8 +Author: Matthias Clasen +AuthorDate: Tue Dec 24 00:05:36 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Improve gsettings test coverage + + gio/tests/gsettings.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 1041fc21905767fc15cf1ec9a4ff3ecb0fdcd6d9 +Author: Matthias Clasen +AuthorDate: Tue Dec 24 00:05:01 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Improve gdbus test coverage + + gio/tests/gdbus-peer.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit df3ac947ac5c9ecb55789f81e8770a44af92a31c +Author: Matthias Clasen +AuthorDate: Tue Dec 24 00:04:44 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Improve converter test coverage + + gio/tests/converter-stream.c | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit 354ae1d61c0a03c245ab1c191780e470c2608679 +Author: Matthias Clasen +AuthorDate: Tue Dec 24 00:04:14 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Add tests for remote actions + + This improves the GApplication test coverage. + + gio/tests/basic-application.c | 111 + ++++++++++++++++++++++++++++++++++++++++++ + gio/tests/gapplication.c | 42 +++++++++++++++- + 2 files changed, 151 insertions(+), 2 deletions(-) + +commit 8aeb391a771302fa6818a37a76e1240c955ce8f5 +Author: Matthias Clasen +AuthorDate: Tue Dec 24 00:03:20 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Improve GIOModule test coverage + + Add a dedicated test for GIOModule. + + configure.ac | 1 + + gio/tests/Makefile.am | 5 +- + gio/tests/giomodule.c | 136 + ++++++++++++++++++++++++++++++++++++++ + gio/tests/modules/Makefile.am | 27 ++++++++ + gio/tests/modules/test-module-a.c | 57 ++++++++++++++++ + gio/tests/modules/test-module-b.c | 57 ++++++++++++++++ + 6 files changed, 281 insertions(+), 2 deletions(-) + +commit 7bea4bd89ae252b2d69daea362f9ba5c0508d2e1 +Author: Matthias Clasen +AuthorDate: Tue Dec 24 00:01:22 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Correct a doc comment + + gio/gsettingsbackend.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5bcbb98f45710ffae796ac4b2b73f68d573a1c75 +Author: Matthias Clasen +AuthorDate: Mon Dec 23 23:59:56 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + GIOModule: Add some more details to the docs + + gio/giomodule.h | 32 ++++++++++++++++++-------------- + 1 file changed, 18 insertions(+), 14 deletions(-) + +commit 0356d7f4c34745a0ebce88e08d1cdd6563218c3e +Author: Matthias Clasen +AuthorDate: Mon Dec 23 23:59:37 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Fix a typo in a comment + + The D-Bus interface is org.freedesktop.DBus.Peer, not + org.freedesktop.DBus. + + gio/gdbusconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b5ba22f163f884f14724b54d001bd044308f9f63 +Author: Matthias Clasen +AuthorDate: Mon Dec 23 15:47:45 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:21 2014 -0500 + + Add a generic property test + + This test is inspired by its namesake in GTK+. We instantiate + all types, and check the default values of their properties, + with some exceptions for types that are known not to work. + + gio/tests/Makefile.am | 15 +++- + gio/tests/defaultvalue.c | 228 + +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 242 insertions(+), 1 deletion(-) + +commit 290b46cd24d35d6bce7b86e05ce5948b42c45233 +Author: Matthias Clasen +AuthorDate: Mon Dec 23 15:01:20 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:20 2014 -0500 + + GTlsPassword: Make declared defaults match + + String properties typically start out with a value of NULL. + No reason to deviate from that convention here. + + gio/gtlspassword.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3a37e403e6813305fe0b3dd57b0db1a1eb30a627 +Author: Matthias Clasen +AuthorDate: Mon Dec 23 15:00:55 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:20 2014 -0500 + + Make GFileIcon more robust + + No reason not to survive g_object_unref (g_object_new (...)) + + gio/gfileicon.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 34de9189f6f29dccbad8224a9605e4eb6d40b94e +Author: Matthias Clasen +AuthorDate: Mon Dec 23 15:00:18 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:20 2014 -0500 + + Make GEmblem more robust + + No reason not to survive g_object_unref (g_object_new (...)). + + gio/gemblem.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 62b28546afc01deae13f155f7a283d45c2fd7395 +Author: Matthias Clasen +AuthorDate: Mon Dec 23 15:00:02 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:20 2014 -0500 + + Trivial formatting fixes + + gio/gcharsetconverter.c | 33 ++++++++++++++++----------------- + 1 file changed, 16 insertions(+), 17 deletions(-) + +commit 6c75ba2b902602c90fe239346e557aa1284eb667 +Author: Matthias Clasen +AuthorDate: Mon Dec 23 12:11:03 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:20 2014 -0500 + + Add tests for x-content type sniffing + + This test exercises the tree matching parts of gcontenttype.c + + gio/tests/Makefile.am | 4 +++ + gio/tests/contenttype.c | 31 + ++++++++++++++++++++++ + .../image-dcf/DCIM/Camera/20130831_203925.jpg | 0 + .../image-dcf/DCIM/Camera/20130831_203928.jpg | 0 + gio/tests/x-content/unix-software/autorun.sh | 3 +++ + gio/tests/x-content/win32-software/autorun.exe | 0 + 6 files changed, 38 insertions(+) + +commit 159459bc2d44de2ed3abc50d64d42a5a9ae0dc91 +Author: Matthias Clasen +AuthorDate: Mon Dec 23 12:09:46 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:20 2014 -0500 + + Simplify fileattributematcher tests a bit + + Just use assertions instead of pretty-printed error messages. + + gio/tests/fileattributematcher.c | 20 +++----------------- + 1 file changed, 3 insertions(+), 17 deletions(-) + +commit 3bbfd908802a44fb871a0498c088ac61b7ca50e7 +Author: Matthias Clasen +AuthorDate: Mon Dec 23 12:08:47 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:20 2014 -0500 + + Improve GApplicationCommandline test coverage + + Add tests for many GApplicationCommandline apis to the + existing application tests. + + gio/tests/basic-application.c | 115 ++++++++++++++++++++++++++-- + gio/tests/gapplication.c | 170 + +++++++++++++++++++++++++++++++++++------- + 2 files changed, 252 insertions(+), 33 deletions(-) + +commit 7846d6154a0c7de3ecd51b484d56396b11ca1ff2 +Author: Matthias Clasen +AuthorDate: Mon Dec 23 12:08:08 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:20 2014 -0500 + + Improve GSubprocess test coverage + + Test the synchronous communicate functions. + + gio/tests/gsubprocess.c | 139 + +++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 133 insertions(+), 6 deletions(-) + +commit e021bb910176413f18904fce5e677916116bc9bf +Author: Matthias Clasen +AuthorDate: Mon Dec 23 12:07:11 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 1 17:59:20 2014 -0500 + + Improve GInitable test coverage + + This just adds a bit more variety to the uses of GInitiable + in other tests. + + gio/tests/network-monitor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 243bec9d0d52293ed6d6b2b6990f23ecb5309f9b +Author: Jasper St. Pierre +AuthorDate: Thu Sep 19 15:41:09 2013 -0400 +Commit: Jasper St. Pierre +CommitDate: Tue Dec 31 15:40:40 2013 -0500 + + gobject.py: Simplify or_join_array + + gobject/gobject.py | 12 ++---------- + 1 file changed, 2 insertions(+), 10 deletions(-) + +commit bfbe7127d539176ca625fbf052cca9cf4cfc42d8 +Author: Jasper St. Pierre +AuthorDate: Thu Sep 19 15:24:16 2013 -0400 +Commit: Jasper St. Pierre +CommitDate: Tue Dec 31 15:40:40 2013 -0500 + + gobject.py: Simplify and reduce code a bit + + gobject/gobject.py | 25 ++++++++++++------------- + 1 file changed, 12 insertions(+), 13 deletions(-) + +commit 4e512a1af8ecba7c2fa23945a524f91926026103 +Author: Jasper St. Pierre +AuthorDate: Thu Sep 19 14:59:44 2013 -0400 +Commit: Jasper St. Pierre +CommitDate: Tue Dec 31 15:40:10 2013 -0500 + + gobject.py: Remove old hack for stripping IA__ symbols + + We don't use IA__ symbols anymore; they've been replaced with + -Bsymbolic + + gobject/gobject.py | 23 ----------------------- + 1 file changed, 23 deletions(-) + +commit b4af2d685ec02b575b48d23d2bf51678dbc023c2 +Author: Jasper St. Pierre +AuthorDate: Thu Sep 19 11:55:47 2013 -0400 +Commit: Jasper St. Pierre +CommitDate: Tue Dec 31 15:40:10 2013 -0500 + + gobject.py: Fix indentation + + gobject/gobject.py | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit 0c87f71521802a323e1fd2136788ad8942ea85eb +Author: Jasper St. Pierre +AuthorDate: Tue Dec 31 15:13:06 2013 -0500 +Commit: Jasper St. Pierre +CommitDate: Tue Dec 31 15:39:02 2013 -0500 + + codegen: direction defaults to "in" + + gio/gdbus-2.0/codegen/parser.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e9c19583dea2f2dc654df992ea0b952adfa93d81 +Author: Michael Catanzaro +AuthorDate: Sun Dec 29 14:20:13 2013 -0600 +Commit: Michael Catanzaro +CommitDate: Sun Dec 29 14:20:13 2013 -0600 + + docs: fix a typo + + docs/reference/gio/overview.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ddc29a903644dfcb737c5a17a35081fc76d348e9 +Author: Chun-wei Fan +AuthorDate: Fri Dec 27 12:25:18 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Dec 27 12:25:18 2013 +0800 + + Visual Studio Projects: Cleanup Property Sheets + + Make the projects include a single property sheet as necessary, + which will + in turn include the other property sheet(s) as needed, so that we + can avoid + warnings where we include the same property sheets twice in a single + project. + + Also make the copying of pre-configured headers into custom build + rules so + that they can be removed upon the clean command from the IDE and + that they + can be re-copied if their counterpart *.h.win32 are updated. + + build/win32/vs10/Makefile.am | 2 +- + build/win32/vs10/gio.vcxproj.filtersin | 3 + + build/win32/vs10/gio.vcxprojin | 24 ++- + build/win32/vs10/glib-build-defines.props | 2 +- + build/win32/vs10/glib-gen-srcs.props | 29 ++++ + build/win32/vs10/glib-install.props | 249 + +++++++++++++++--------------- + build/win32/vs10/glib-version-paths.props | 2 +- + build/win32/vs10/glib.vcxproj.filtersin | 4 + + build/win32/vs10/glib.vcxprojin | 78 ++++++++-- + build/win32/vs10/glibprepbuild.props | 39 ----- + build/win32/vs10/gmodule.vcxproj | 24 ++- + build/win32/vs10/gmodule.vcxproj.filters | 3 + + build/win32/vs10/install.vcxproj | 4 - + build/win32/vs9/Makefile.am | 2 +- + build/win32/vs9/gio.vcprojin | 42 ++++- + build/win32/vs9/glib-gen-srcs.vsprops | 32 ++++ + build/win32/vs9/glib-install.vsprops | 138 ++++++++--------- + build/win32/vs9/glib.vcprojin | 148 +++++++++++++++++- + build/win32/vs9/glibprepbuild.vsprops | 27 ---- + build/win32/vs9/gmodule.vcproj | 42 ++++- + build/win32/vs9/install.vcproj | 8 +- + 21 files changed, 593 insertions(+), 309 deletions(-) + +commit d01a075632150fcc63f4d9f41046a450a3f4915a +Author: Chun-wei Fan +AuthorDate: Fri Dec 27 10:50:35 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Dec 27 10:50:35 2013 +0800 + + Visual Studio Projects: Use Unix Line Endings + + ...where possible, to make application of patches easier in the + future. + The README.txt's and the .sln files are still in Windows/DOS line + endings + as they need to be so. + + build/win32/vs10/gdbus.vcxproj | 358 + ++++++++++---------- + build/win32/vs10/gdbus.vcxproj.filters | 26 +- + build/win32/vs10/gio-querymodules.vcxproj | 366 + ++++++++++----------- + build/win32/vs10/gio-querymodules.vcxproj.filters | 26 +- + build/win32/vs10/glib-compile-resources.vcxproj | 360 + ++++++++++---------- + .../vs10/glib-compile-resources.vcxproj.filters | 32 +- + build/win32/vs10/glib-compile-schemas.vcxproj | 360 + ++++++++++---------- + build/win32/vs10/glib-genmarshal.vcxproj | 344 + +++++++++---------- + build/win32/vs10/gmodule.vcxproj | 366 + ++++++++++----------- + build/win32/vs10/gresource.vcxproj | 358 + ++++++++++---------- + build/win32/vs10/gresource.vcxproj.filters | 26 +- + build/win32/vs10/gsettings.vcxproj | 360 + ++++++++++---------- + .../win32/vs10/gspawn-win32-helper-console.vcxproj | 348 + ++++++++++---------- + build/win32/vs10/gspawn-win32-helper.vcxproj | 348 + ++++++++++---------- + build/win32/vs10/gthread.vcxproj | 366 + ++++++++++----------- + build/win32/vs10/install.vcxproj | 326 + +++++++++--------- + build/win32/vs10/testglib.vcxproj | 344 + +++++++++---------- + build/win32/vs9/gdbus.vcproj | 310 + ++++++++--------- + build/win32/vs9/gio-querymodules.vcproj | 310 + ++++++++--------- + build/win32/vs9/glib-compile-resources.vcproj | 312 + +++++++++--------- + build/win32/vs9/glib-genmarshal.vcproj | 322 + +++++++++--------- + build/win32/vs9/gresource.vcproj | 310 + ++++++++--------- + build/win32/vs9/gspawn-win32-helper-console.vcproj | 326 + +++++++++--------- + build/win32/vs9/gspawn-win32-helper.vcproj | 320 + +++++++++--------- + build/win32/vs9/gthread.vcproj | 334 + +++++++++---------- + build/win32/vs9/install.vcproj | 154 ++++----- + build/win32/vs9/testglib.vcproj | 316 + +++++++++--------- + 27 files changed, 3864 insertions(+), 3864 deletions(-) + +commit c488aa6785c0865dcaf1748418f05798bab68835 +Author: Chun-wei Fan +AuthorDate: Fri Dec 27 10:32:01 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Dec 27 10:32:01 2013 +0800 + + Visual Studio Property Sheets: Use Unix Line Endings + + This makes it easier to apply patches in the future. + + build/win32/vs10/glib-build-defines.props | 140 ++-- + build/win32/vs10/glib-install.props | 1106 + ++++++++++++++-------------- + build/win32/vs10/glib-version-paths.props | 100 +-- + build/win32/vs10/glibprepbuild.props | 78 +- + build/win32/vs9/glib-build-defines.vsprops | 130 ++-- + build/win32/vs9/glib-install.vsprops | 572 +++++++------- + build/win32/vs9/glib-version-paths.vsprops | 98 +-- + build/win32/vs9/glibprepbuild.vsprops | 54 +- + 8 files changed, 1139 insertions(+), 1139 deletions(-) + +commit fb21c8eaab64301591a0e179a42ef25cbd793a6e +Author: Antoine Jacoutot +AuthorDate: Thu Dec 26 11:03:45 2013 +0100 +Commit: Antoine Jacoutot +CommitDate: Thu Dec 26 19:57:44 2013 +0100 + + kqueue: fix a potential deadlock + + In case an object is already monitored, we lock then return without + unlocking it which can then result in a self deadlock. So properly + unlock before returning. + + https://bugzilla.gnome.org/show_bug.cgi?id=721074 + + gio/kqueue/kqueue-missing.c | 1 + + 1 file changed, 1 insertion(+) + +commit f3c9b17d3c8984fa7281bd6c849aa6a0170b54de +Author: Mikhail Gusarov +AuthorDate: Thu Dec 26 11:22:05 2013 -0500 +Commit: Colin Walters +CommitDate: Thu Dec 26 11:22:05 2013 -0500 + + gio-2.0.pc: Add -lselinux when linking statically if so configured + + https://bugzilla.gnome.org/show_bug.cgi?id=721087 + + gio-2.0.pc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c26c557908fe3083e9470b2a191cd53dc907138d +Author: Morten Welinder +AuthorDate: Thu Dec 26 07:37:17 2013 -0500 +Commit: Colin Walters +CommitDate: Thu Dec 26 07:37:17 2013 -0500 + + gsubprocesslauncher: Use "env" instead of "environ" + + The latter may come from system headers. + + https://bugzilla.gnome.org/show_bug.cgi?id=721059 + + gio/gsubprocesslauncher.c | 6 +++--- + gio/gsubprocesslauncher.h | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 091e466095c47f60ef5b2b0c81459615169216cf +Author: Matthias Scheler +AuthorDate: Wed Dec 25 13:57:56 2013 -0500 +Commit: Colin Walters +CommitDate: Wed Dec 25 13:57:56 2013 -0500 + + gio: Fix return of value from void function + + https://bugzilla.gnome.org/show_bug.cgi?id=721034 + + gio/gfile.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit d7f885b1f3fcd863dd2e48a12932a609d783ac10 +Author: Colin Walters +AuthorDate: Mon Nov 18 14:28:15 2013 -0500 +Commit: Colin Walters +CommitDate: Mon Dec 23 11:28:26 2013 -0500 + + Revert "gsettings m4: check for .xml in src/builddir" + + This reverts commit b3593693d918f0ae97094f6712d817180b8eea6a. + + See: https://bugzilla.gnome.org/show_bug.cgi?id=712171#c3 + See: https://bugzilla.gnome.org/show_bug.cgi?id=712171#c4 + + Tested using both srcdir == builddir and srcdir != builddir in hotssh. + + Conflicts: + m4macros/gsettings.m4 + + https://bugzilla.gnome.org/show_bug.cgi?id=712630 + + m4macros/gsettings.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ee5dab6bb5b84408d88fa7d3bb333311ab3fa263 +Author: Ryan Lortie +AuthorDate: Fri Nov 22 13:06:54 2013 -0500 +Commit: Ryan Lortie +CommitDate: Sun Dec 22 11:41:45 2013 -0500 + + gdbus tool: print GVariant errors in context + + Use g_variant_parse_error_print_context() to format the error message + from the GVariant parser. + + There is a slightly dubious interaction with the "parse me harder" + functionality here. We're probably going to have to deal with that + separately. + + https://bugzilla.gnome.org/show_bug.cgi?id=715028 + + gio/gdbus-tool.c | 17 ++++++++++++++--- + 1 file changed, 14 insertions(+), 3 deletions(-) + +commit 94a89f6c2fdbffe562a0ec34a979c01fefc5a9ac +Author: Ryan Lortie +AuthorDate: Fri Nov 22 12:57:21 2013 -0500 +Commit: Ryan Lortie +CommitDate: Sun Dec 22 11:41:44 2013 -0500 + + gapplication(1): print GVariant errors in context + + Use g_variant_parse_error_print_context() to format the error message + from the GVariant parser. + + https://bugzilla.gnome.org/show_bug.cgi?id=715028 + + gio/gapplication-tool.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 420f90d849c7670f716b7d9dede81655f794a6da +Author: Ryan Lortie +AuthorDate: Fri Nov 22 12:55:10 2013 -0500 +Commit: Ryan Lortie +CommitDate: Sun Dec 22 11:41:43 2013 -0500 + + gsettings tool: print GVariant errors in context + + Use g_variant_parse_error_print_context() to format the error message + from the GVariant parser. + + https://bugzilla.gnome.org/show_bug.cgi?id=715028 + + gio/gsettings-tool.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 56fb675d865d4331037bd95f57ce6f381564fe27 +Author: Ryan Lortie +AuthorDate: Sun Dec 22 11:41:19 2013 -0500 +Commit: Ryan Lortie +CommitDate: Sun Dec 22 11:41:19 2013 -0500 + + GVariant: add way to print context of parse errors + + This was a feature intended from the very beginning that somehow never + got written. It's a way to replace these sort of error messages + out of + the GVariant parser: + + 1-2,10-15:unable to find a common type + + with something in the style of the Vala compiler: + + unable to find a common type: + [1, 2, 3, 'str'] + ^ ^^^^^ + + https://bugzilla.gnome.org/show_bug.cgi?id=715028 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gvariant-parser.c | 222 + ++++++++++++++++++++++++++++++++++ + glib/gvariant.h | 4 + + 3 files changed, 227 insertions(+) + +commit 3f41e492851b3e69ceb050986766fe3137cbb1fe +Author: Ryan Lortie +AuthorDate: Sun Dec 22 11:33:07 2013 -0500 +Commit: Ryan Lortie +CommitDate: Sun Dec 22 11:33:07 2013 -0500 + + Use POSIX-specified over + + POSIX specifies that is the correct header to include for + poll(), so let's do that instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=141251 + + config.h.win32.in | 3 --- + configure.ac | 16 +++------------- + docs/reference/glib/glib-sections.txt | 1 - + gio/gunixmounts.c | 5 +---- + glib/gpoll.c | 4 ++-- + tests/timeloop-basic.c | 2 +- + 6 files changed, 7 insertions(+), 24 deletions(-) + +commit eeac91f866939fd033303f34c7eb9d2b57c769fb +Author: Murray Cumming +AuthorDate: Tue Sep 17 11:10:28 2013 +0200 +Commit: Ryan Lortie +CommitDate: Sun Dec 22 11:27:16 2013 -0500 + + GVariant: Add g_variant_parse_error_quark() + + Most GErrors, such as GSomethingError, have a function to get + their quark that looks like g_something_error_quark(), + so bindings (such as gtkmm) would expect GVariantParseError + to have g_variant_parse_error_quark(). Instead this had + g_variant_parser_get_error_quark(). + This deprecates the old function and adds the correct one, + making life easier for gtkmm (and maybe others). + + https://bugzilla.gnome.org/show_bug.cgi?id=708212 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gvariant-parser.c | 11 ++++++++++- + glib/gvariant.h | 7 +++++-- + 3 files changed, 16 insertions(+), 3 deletions(-) + +commit 864d960d756e3be0a857875337b7e6b520298b78 +Author: Matthias Clasen +AuthorDate: Sun Dec 22 00:44:56 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Dec 22 00:44:56 2013 -0500 + + More settings backend tests + + This adds some more test coverage around writability changes + in the keyfile and delayed settings backends. + + gio/tests/gsettings.c | 27 ++++++++++++++++++++------- + 1 file changed, 20 insertions(+), 7 deletions(-) + +commit 41a8296e111595c5902f607cda47c1d5d14ac405 +Author: Matthias Clasen +AuthorDate: Sun Dec 22 00:43:44 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Dec 22 00:43:44 2013 -0500 + + GKeyfileSettingsBackend: Use a directory monitor + + GKeyfileSettingsBackend was using a file monitor to monitor + the parent directory of its keyfile. + + gio/gkeyfilesettingsbackend.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 3c873e7617695e8517deb1cfd1ee886af772135c +Author: Matthias Clasen +AuthorDate: Sat Dec 21 16:49:52 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 21 16:49:52 2013 -0500 + + More test coverage for settings backends + + gio/tests/gsettings.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit 8669f2c915083625f7503b96d1779f7f3773f890 +Author: Matthias Clasen +AuthorDate: Sat Dec 21 16:16:16 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 21 16:16:28 2013 -0500 + + Simplify coverage rules + + This works just fine, no need for the manual removal of the + info file. + + glib.mk | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit a5d8209d75bbae578ab3052173fbe55baac20e7f +Author: Matthias Clasen +AuthorDate: Sat Dec 21 15:44:51 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 21 15:44:51 2013 -0500 + + Fix a typo + + glib-tap.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d6e95cc5f5e777c0f4908beafa74173de139478e +Author: Matthias Clasen +AuthorDate: Sat Dec 21 13:20:44 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 21 13:22:00 2013 -0500 + + Fix a !srcdir problem with installed tests + + When installing scripts which are not generated in a + srcdir != builddir build, $< will have ../.. goo in it. + So we need to strip the directory parts before using + the filename to construct a new path. + + glib-tap.mk | 2 +- + glib.mk | 3 ++- + 2 files changed, 3 insertions(+), 2 deletions(-) + +commit dac1ad66ebe3df38b129d78915db1c29e4d7a30d +Author: Matthias Clasen +AuthorDate: Sat Dec 21 12:51:22 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 21 13:22:00 2013 -0500 + + Improve gsettings test coverage + + Deal with corner cases around delay. + + gio/tests/gsettings.c | 52 + ++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 51 insertions(+), 1 deletion(-) + +commit fc828c4de8b8de0e8c8469877f9c148616bb5b96 +Author: Matthias Clasen +AuthorDate: Sat Dec 21 11:56:24 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 21 13:22:00 2013 -0500 + + contenttype tests: better assertions + + I recently had to track down why these tests failed. Turned + out that some rogue package on my system had installed mime + types that declared all files with 3 letter names to be + 'chemical/x-turbomole-vibrational'. + This change will make it more obvious what is going on by + mentioning the mime types in the assertion message. + + gio/tests/contenttype.c | 35 ++++++++++++++++++++++++----------- + 1 file changed, 24 insertions(+), 11 deletions(-) + +commit 6d8ac1125e326a09dd324543ad3150f5e9159c13 +Author: Matthias Clasen +AuthorDate: Sat Dec 21 10:48:40 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 21 13:22:00 2013 -0500 + + Slightly improve coverate for notification tests + + gio/tests/gnotification.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 5ab9e21d7a595ccc00bef861e57740f0ec2bc14e +Author: Matthias Clasen +AuthorDate: Sat Dec 21 01:10:59 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 21 13:22:00 2013 -0500 + + Improve test coverage for GPropertyAction + + gio/tests/actions.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit f9747d07c89e94f920051db0a7ade37ce236a1d2 +Author: Matthias Clasen +AuthorDate: Sat Dec 21 01:00:10 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 21 13:22:00 2013 -0500 + + Test some gsettings corner case + + Setting a strv to NULL was not tested before. + + gio/tests/gsettings.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +commit 2f01b0975e7f774f2536a3cd2b33d486a484da9f +Author: Matthias Clasen +AuthorDate: Sat Dec 21 00:04:14 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 21 13:22:00 2013 -0500 + + Some tweaks to coverage support + + Rename the configure option to --enable-coverage, and make + it quiet by default. + + configure.ac | 8 ++++---- + glib.mk | 12 ++++++------ + 2 files changed, 10 insertions(+), 10 deletions(-) + +commit 65a7e56328b7a169c1eb977cfce545ceb4d29676 +Author: Fran Diéguez +AuthorDate: Thu Dec 19 01:17:25 2013 +0100 +Commit: Fran Diéguez +CommitDate: Thu Dec 19 01:17:25 2013 +0100 + + Updated Galician translations + + po/gl.po | 794 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 399 insertions(+), 395 deletions(-) + +commit fab0805b81a74dfb76e2bde9373d6439ed2eb64b +Author: Dan Winship +AuthorDate: Wed Dec 18 09:59:54 2013 -0500 +Commit: Dan Winship +CommitDate: Wed Dec 18 10:09:46 2013 -0500 + + Make g_test_run() return 77 if all tests are skipped + + Change g_test_run() to return 1 on failure (rather than the number of + failed tests), and 77 if all tests are skipped (since automake and + some other test harnesses recognize that status code). + + Previously g_test_run() returned the number of failed tests, but this + behavior was not documented, and at any rate, prior to 2.39, + g_test_run() would normally not return at all if an error occurred. + + https://bugzilla.gnome.org/show_bug.cgi?id=720263 + + glib/gtestutils.c | 14 +++++++-- + glib/tests/testing.c | 81 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 93 insertions(+), 2 deletions(-) + +commit 10d82f9775a91c2c4c1eddb17c2e0d08d79310ec +Author: Dan Winship +AuthorDate: Wed Dec 18 09:29:29 2013 -0500 +Commit: Dan Winship +CommitDate: Wed Dec 18 10:09:46 2013 -0500 + + gtestutils: rename test_skip_count to test_startup_skip_count + + https://bugzilla.gnome.org/show_bug.cgi?id=720263 + + glib/gtestutils.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 8c188fc9e55cc9e24000271f6ad8a47ffdcb62d7 +Author: Dan Winship +AuthorDate: Wed Dec 11 16:32:11 2013 +0100 +Commit: Dan Winship +CommitDate: Wed Dec 18 09:26:54 2013 -0500 + + gtestutils: skipping a test should count as success, not failure + + In particular, the test program as a whole should exit with status 0 + if you skipped some tests but did not fail any. + + https://bugzilla.gnome.org/show_bug.cgi?id=720263 + + glib/gtestutils.c | 3 ++- + glib/tests/testing.c | 8 ++++++++ + 2 files changed, 10 insertions(+), 1 deletion(-) + +commit c300079f1320b8522a4885987fd2443c171ec629 +Author: Bastien Nocera +AuthorDate: Mon Dec 16 17:21:41 2013 +0100 +Commit: Bastien Nocera +CommitDate: Wed Dec 18 10:53:01 2013 +0100 + + gdbus-codegen: Fix crasher in goa-using apps + + When replacing a version of goa-daemon (from gnome-online-accounts) + by a newer version with some added interfaces, evolution-data-server + and the gvfs-goa volume monitor might crash as there's no interface + definition for this new interface. + + Work-around this by returning earlier from the _notify() + implementation, + rather than accessing invalid memory. + + https://bugzilla.gnome.org/show_bug.cgi?id=720539 + + gio/gdbus-2.0/codegen/codegen.py | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit d33f72097fa21aade43e273d049e2a7105e99ad5 +Author: Tim Lunn +AuthorDate: Wed Dec 18 07:14:38 2013 +1100 +Commit: Tim Lunn +CommitDate: Wed Dec 18 07:22:16 2013 +1100 + + Make gdb pretty-printers compatible with Python3 + + On some systems gdb is linked against python3 where "long" no longer + exists. In this case should be using int. + + https://bugzilla.gnome.org/show_bug.cgi?id=720635 + + glib/glib.py | 4 ++++ + gobject/gobject.py | 5 +++++ + 2 files changed, 9 insertions(+) + +commit 91d4659bbf8cf88d8be905c7e0abbedce931b688 +Author: Damien Lespiau +AuthorDate: Tue Mar 23 15:18:12 2010 +0000 +Commit: Colin Walters +CommitDate: Tue Dec 17 10:51:48 2013 -0500 + + gobject.py: Don't install frame filters when GDB does not support them + + Stock GDB (both versions 7.0 and 7.1) does not come with the new + backtrace code and python API. To prevent an ugly python backtrace + when + auto-loading gobject.py, let's catch the exception and not register + the + FrameWrapper and the FrameFilter. + + https://bugzilla.gnome.org/show_bug.cgi?id=613732 + + gobject/gobject.py | 30 ++++++++++++++++++++---------- + 1 file changed, 20 insertions(+), 10 deletions(-) + +commit 4846fd923d52108de4243429ada9c3dcab5f83e9 +Author: Matthias Clasen +AuthorDate: Tue Dec 17 00:45:41 2013 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 17 00:45:41 2013 -0500 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0cfffd597e204b687577ff2a43015916ee313f4e +Author: Matthias Clasen +AuthorDate: Tue Dec 17 00:30:08 2013 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 17 00:30:08 2013 -0500 + + 2.39.2 + + NEWS | 78 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 78 insertions(+) + +commit 6c8600b2b86fe42edd6d6e9648a92f32e404457c +Author: Ryan Lortie +AuthorDate: Wed Nov 20 16:57:26 2013 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 16 14:55:28 2013 -0500 + + valgrind.h: add "r0" to the clobber list on PPC + + Looks like the magic sequences trash this register, so make sure GCC + knows that. + + https://bugzilla.gnome.org/show_bug.cgi?id=710983 + + glib/valgrind.h | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 2731b01c73ecc7ca692fefba1ce14c1aa4f5f5a0 +Author: Ryan Lortie +AuthorDate: Tue Dec 10 19:21:33 2013 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 16 14:55:12 2013 -0500 + + tests: change test timezone to America/Toronto + + America/Toronto is the canonical name for Canada/Eastern in the + zoneinfo + database. + + glib/tests/gdatetime.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5ccdf2b86a7ecb2def51cbf7fcd7318ad20a6cc9 +Author: Matthias Clasen +AuthorDate: Sun Dec 15 21:06:35 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Dec 15 21:07:12 2013 -0500 + + Expand the truncate tests + + Check that the data is expanded with zeros. + + gio/tests/memory-output-stream.c | 22 +++++++++++++++++++++- + 1 file changed, 21 insertions(+), 1 deletion(-) + +commit 453a69534c1407ccee6b66c1edd71c1e23a0cdae +Author: Matthias Clasen +AuthorDate: Sun Dec 15 20:06:25 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Dec 15 21:07:12 2013 -0500 + + Update tests for new truncate behavior + + gio/tests/buffered-output-stream.c | 2 +- + gio/tests/data-output-stream.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit baed90af43add09e1667da6adfb4801936d8bd24 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:23:01 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sun Dec 15 21:07:11 2013 -0500 + + gdbus-export: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711802 + + gio/tests/gdbus-export.c | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +commit db6a297d9eaf8eec21556689944d792085eed095 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:20:50 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sun Dec 15 21:07:11 2013 -0500 + + gdbus-auth: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711802 + + gio/tests/gdbus-auth.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 2ad121ab16992ec5841dd0891710bb2cd37cdbe3 +Author: Colin Walters +AuthorDate: Sun Dec 15 20:44:20 2013 -0500 +Commit: Colin Walters +CommitDate: Sun Dec 15 20:44:53 2013 -0500 + + gsubprocesslauncher: Annotate g_subprocess_launcher_spawnv() + + Needs to be an array. + + gio/gsubprocesslauncher.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3f8888d348458a09040a8bdc6c09b4c080a78241 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:27:57 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sun Dec 15 19:29:26 2013 -0500 + + sources: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + tests/sources.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +commit 0b486a49e48e309c98fe151650f9903e3c61ff46 +Author: Matthias Clasen +AuthorDate: Sun Dec 15 18:50:49 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Dec 15 18:50:49 2013 -0500 + + Fix up gsettings test + + gio/tests/gsettings.c | 6 ------ + 1 file changed, 6 deletions(-) + +commit 3b9ad6e6ef030cd8487f165e8d81174bd82e4fb9 +Author: Ross Lagerwall +AuthorDate: Sun Dec 8 22:41:15 2013 +0200 +Commit: Matthias Clasen +CommitDate: Sun Dec 15 11:54:39 2013 -0500 + + gio: Update GMemoryOutputStream length after truncate + + For GMemoryOutputStream, update valid_len when truncating so that + g_memory_output_stream_get_data_size () returns the correct result. + + https://bugzilla.gnome.org/show_bug.cgi?id=720080 + + gio/gmemoryoutputstream.c | 2 ++ + gio/tests/memory-output-stream.c | 5 +++++ + 2 files changed, 7 insertions(+) + +commit c34cc2348cfd3c461974dea4419001dbd9610202 +Author: Matthias Clasen +AuthorDate: Sun Dec 15 11:20:19 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Dec 15 11:50:00 2013 -0500 + + Simplify subprocesses in tests + + Use the new way of running tests in a subprocess without + registering extra 'subprocess' test cases where appropriate. + + gio/tests/gsettings.c | 117 + +++++++++++++++++++++++------------------------ + glib/tests/array-test.c | 26 +++++------ + glib/tests/dataset.c | 23 +++++----- + glib/tests/scannerapi.c | 21 ++++----- + glib/tests/slice.c | 14 +++--- + glib/tests/test-printf.c | 48 +++++++++---------- + glib/tests/testing.c | 93 ++++++++++++++++--------------------- + glib/tests/utils.c | 37 ++++++--------- + gobject/tests/object.c | 16 +++---- + 9 files changed, 176 insertions(+), 219 deletions(-) + +commit cd2204bb65114e5ac62b014e6167a659aa254361 +Author: Stef Walter +AuthorDate: Wed Dec 11 09:31:35 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sun Dec 15 11:03:17 2013 -0500 + + gtestutils: Allow clean simple use of g_test_trap_subprocess() + + Allow g_test_trap_subprocess() to be used in a simple cases by + rerunning the same test case itself. This is accomplished by + passing %NULL as the test case name. + + https://bugzilla.gnome.org/show_bug.cgi?id=720236 + + glib/gtestutils.c | 40 ++++++++++++++++++++++++---------------- + glib/tests/list.c | 35 +++++++++++++++++------------------ + 2 files changed, 41 insertions(+), 34 deletions(-) + +commit 162852d1b5512873c04e9ccf616e1fa13470e4eb +Author: Matthias Clasen +AuthorDate: Sat Dec 14 23:54:18 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 14 23:54:18 2013 -0500 + + Add a testcase for g_ptr_array_insert + + glib/tests/array-test.c | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +commit 12fbc5ec4a02246a2ad3dc11225f51feb7ed7bdd +Author: Matthias Clasen +AuthorDate: Sat Dec 14 23:45:36 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 14 23:45:36 2013 -0500 + + Add g_ptr_array_insert to the docs + + docs/reference/glib/glib-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit 9ed0d0c5096ad1434dfff70503ff6375646d6c8a +Author: Tristan Van Berkom +AuthorDate: Wed Nov 27 14:34:20 2013 +0900 +Commit: Matthias Clasen +CommitDate: Sat Dec 14 23:41:44 2013 -0500 + + GPtrArray: Added g_ptr_array_insert() + + Speaks for itself, I've found myself on numerous occasions + writing my own version of this, or using a GArray of pointers. + + https://bugzilla.gnome.org/show_bug.cgi?id=719395 + + glib/garray.c | 36 ++++++++++++++++++++++++++++++++++++ + glib/garray.h | 4 ++++ + 2 files changed, 40 insertions(+) + +commit 6011d0a4ae9a8e70e20df3b7ad37f940ddf2f9f8 +Author: Chun-wei Fan +AuthorDate: Fri Dec 13 16:21:00 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Dec 13 16:21:00 2013 +0800 + + glib/gwin32.c: Silence a Deprecation Warning + + Since we are already building a deprecated function for compatibility + reasons, we don't really need to see a warning when it uses another + deprecated GLib function. + + glib/gwin32.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 3af58d2e9fefe14dc55fd41222a5c92947a08270 +Author: Chun-wei Fan +AuthorDate: Thu Dec 12 18:00:52 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Dec 12 18:00:52 2013 +0800 + + gio/gdbusaddress: Clean up Win32 code a bit + + Combine duplicate parts into one, as the symbol used by RunDLL + under x64 + is the same for either Visual C++ or MinGW-64 + + gio/gdbusaddress.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +commit c7c1ad4d0265a2c393adef265c7f2cbe23421361 +Author: Milo Casagrande +AuthorDate: Thu Dec 12 09:50:46 2013 +0100 +Commit: Milo Casagrande +CommitDate: Thu Dec 12 09:50:46 2013 +0100 + + [l10n] Updated Italian translation. + + po/it.po | 1321 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 749 insertions(+), 572 deletions(-) + +commit d721d41d380ab1494e8d4e08b38fd884b1660fe7 +Author: Matthias Clasen +AuthorDate: Wed Dec 11 10:35:45 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 11 10:36:26 2013 -0500 + + Remove an unused define + + https://bugzilla.gnome.org/show_bug.cgi?id=720210 + + glib/gdataset.c | 3 --- + 1 file changed, 3 deletions(-) + +commit e6c86d58f274b8a1a365627ffb1fa14daacd4335 +Author: Martin Pitt +AuthorDate: Wed Dec 11 13:17:10 2013 +0100 +Commit: Martin Pitt +CommitDate: Wed Dec 11 13:17:10 2013 +0100 + + gdesktopappinfo: Add missing annotations + + Add missing (allow-none) annotations to + g_desktop_app_info_launch_uris_as_manager(). Tested with + + python -c "from gi.repository import GLib, Gio; + Gio.DesktopAppInfo.new('gcalctool.desktop').launch_uris_as_manager([], + None, + GLib.SpawnFlags.SEARCH_PATH|GLib.SpawnFlags.STDOUT_TO_DEV_NULL, + None, None, None, None)" + + which is necessary to do a launch_uris() without leaking stdout. + + https://launchpad.net/bugs/1259721 + + gio/gdesktopappinfo.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit aa7f1ba21a8536a147e90bb29e972fcea41e8e3d +Author: Chun-wei Fan +AuthorDate: Wed Dec 11 20:09:59 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Dec 11 20:09:59 2013 +0800 + + Update Visual C++ "Installation" Phase + + Install the Python scripts that is used by gdbus-codegen in + share\glib-2.0\codegen, to be consistent with the other platforms. + + Please see https://bugzilla.gnome.org/show_bug.cgi?id=702862 for + details + on this. + + build/win32/vs10/glib-install.props | 4 ++-- + build/win32/vs9/glib-install.vsprops | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 36ef409591bf3c0f368c39d083c42ed029cea5e6 +Author: Manuel Bachmann +AuthorDate: Wed Dec 11 10:59:28 2013 +0100 +Commit: Manuel Bachmann +CommitDate: Wed Dec 11 11:02:33 2013 +0100 + + gdbus-codegen: look for deps in correct path under win32 + + codegen.py and friends get installed in "share/glib-2.0", + so look for them there. + + https://bugzilla.gnome.org/show_bug.cgi?id=702862 + + gio/gdbus-2.0/codegen/gdbus-codegen.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e6456bcfb682113b2b623e9ccd9bcec46626e4ed +Author: Stef Walter +AuthorDate: Wed Dec 4 12:48:53 2013 +0100 +Commit: Stef Walter +CommitDate: Wed Dec 11 07:32:03 2013 +0100 + + gdbus-connection: Work around race in connection tests + + GDBusConnection cleanup is inherently racy due to its use of worker + threads. Put tests that expect a NULL G_BUS_TYPE_SESSION singleton + as the first tests to work around cleanup races. + + https://bugzilla.gnome.org/show_bug.cgi?id=719837 + + gio/tests/gdbus-connection.c | 30 ++++++++++++++++++++---------- + 1 file changed, 20 insertions(+), 10 deletions(-) + +commit a22f77739dd4ec911d7bdc0f0fc61314e5f9f1cf +Author: Ryan Lortie +AuthorDate: Sun Dec 8 18:18:16 2013 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 9 12:10:16 2013 -0500 + + g_get_current_dir(): consult PWD first + + Check if the current directory is the same as $PWD. This matches the + behaviour of the get_current_dir_name() function in glibc. + + https://bugzilla.gnome.org/show_bug.cgi?id=705902 + + glib/gfileutils.c | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +commit 0f1579e62cded436c3fbfbeaf3130c8d8ffcb01c +Author: Lars Uebernickel +AuthorDate: Sun Dec 8 17:30:33 2013 +0100 +Commit: Lars Uebernickel +CommitDate: Mon Dec 9 15:51:56 2013 +0100 + + g_settings_get: only check for non-copying format string + + 396d40af introduced a redundant call to + g_variant_check_format_string(). + Checking whether the format string copies all values is enough. + + https://bugzilla.gnome.org/show_bug.cgi?id=719979 + + gio/gsettings.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 05f36e7ffcac0e58c1bf578bc37e1dc129f4b8e3 +Author: Ryan Lortie +AuthorDate: Sun Dec 8 16:38:47 2013 -0500 +Commit: Ryan Lortie +CommitDate: Sun Dec 8 16:38:47 2013 -0500 + + clang fixes: tweak last commit + + We need to actually ignore "-Wformat-nonliteral" to make clang happy + + glib/tests/test-printf.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ddf82a25761ed6aae17e478ab5d3096275b32b35 +Author: Ryan Lortie +AuthorDate: Sun Dec 8 14:22:51 2013 -0500 +Commit: Ryan Lortie +CommitDate: Sun Dec 8 14:22:51 2013 -0500 + + [PATCH] Fix trivial non literal format uses + + Based on a patch from Henrique Dante de Almeida . + + https://bugzilla.gnome.org/show_bug.cgi?id=691608 + + gio/gcontenttype.c | 16 ++++++---------- + gio/gthreadedresolver.c | 32 ++++++++++++-------------------- + glib/tests/test-printf.c | 3 +++ + 3 files changed, 21 insertions(+), 30 deletions(-) + +commit 904474454146877180f33930a5843545035fdecb +Author: keyring +AuthorDate: Sat Dec 7 15:05:26 2013 +0800 +Commit: Wylmer Wang +CommitDate: Sat Dec 7 15:05:26 2013 +0800 + + Update Chinese simplified translation + + po/zh_CN.po | 1609 + +++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 907 insertions(+), 702 deletions(-) + +commit 396d40af237db00e1014520cf6858cfed30bbc51 +Author: Lars Uebernickel +AuthorDate: Fri Dec 6 16:01:48 2013 +0100 +Commit: Lars Uebernickel +CommitDate: Fri Dec 6 16:48:00 2013 +0100 + + g_settings_get: check validity of format string + + Allow only format strings that copy all values (i.e, don't contain + '&'), + as the returned pointers might become invalid in some rare cases. + + Since this is technically an API break, this patch only prints a + critical when a faulty format string is detected, but still fetches + the + values. + + https://bugzilla.gnome.org/show_bug.cgi?id=719979 + + gio/gsettings.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit c07eccd9c212e1e1642ee8cd359f5066ee8e5295 +Author: Philip Withnall +AuthorDate: Tue Dec 3 08:27:05 2013 +0000 +Commit: Philip Withnall +CommitDate: Fri Dec 6 09:41:56 2013 +0000 + + gtestdbus: Add a note about thread safety to the documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=712148 + + gio/gtestdbus.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 7e9e7a66a1820478c87d3fadd47869eed88ef6f3 +Author: Daiki Ueno +AuthorDate: Thu Dec 5 18:16:36 2013 +0900 +Commit: Daiki Ueno +CommitDate: Fri Dec 6 07:55:27 2013 +0900 + + Fix documentation typos in GTask and GCancellable examples + + https://bugzilla.gnome.org/show_bug.cgi?id=719884 + + gio/gcancellable.c | 2 +- + gio/gtask.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 8f4dc7012ef832b038777e88e8e37b051f524194 +Author: Colin Walters +AuthorDate: Tue Dec 3 17:15:14 2013 -0500 +Commit: Colin Walters +CommitDate: Tue Dec 3 19:23:49 2013 -0500 + + gsignal: Signal connection ids are always > 0 if successful + + Note this explicitly so that people can rely on doing: + + if (mystruct->sigid > 0) + g_signal_disconnect (mystruct->object, mystruct->sigid); + + https://bugzilla.gnome.org/show_bug.cgi?id=719809 + + gobject/gsignal.c | 6 +++--- + gobject/gsignal.h | 6 +++--- + 2 files changed, 6 insertions(+), 6 deletions(-) + +commit b2bf13ccdd08cba7ad33e6ac588120d0cbed54fa +Author: Marc-André Lureau +AuthorDate: Tue Nov 26 17:45:37 2013 +0100 +Commit: Marc-André Lureau +CommitDate: Tue Dec 3 15:56:47 2013 +0100 + + gutf8: use g_try_malloc_n + + As recommended by Christian Persch. + + https://bugzilla.gnome.org/show_bug.cgi?id=711546 + + glib/gutf8.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit bff76bc36ff2b158bb702f9d579e2ff039a252b0 +Author: Marc-André Lureau +AuthorDate: Tue Dec 3 15:35:50 2013 +0100 +Commit: Marc-André Lureau +CommitDate: Tue Dec 3 15:56:47 2013 +0100 + + gmessages: make _g_log_abort() do only breakpoints again + + Commit e53caad4 makes _g_log_abort() noreturn by calling abort() + unconditionally. + + However, it is useful to be able to skip some log_abort() with a + debugger, to reach a point of interest. Revert back to previous + behaviour. Make g_assert_warning() noreturn by calling abort(). + + https://bugzilla.gnome.org/show_bug.cgi?id=711800 + + glib/gmessages.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 2baa50ee4fde91f89692e00b1fc4fa39713be799 +Author: Matthias Clasen +AuthorDate: Mon Dec 2 22:26:48 2013 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 3 06:00:47 2013 -0500 + + Remove g_trap_instance_signals as well + + This is another crude conditional breakpoint mechanism and can + be done better with actual conditional breakpoints or with systemtap + tracepoints. + + https://bugzilla.gnome.org/show_bug.cgi?id=719687 + + gobject/gsignal.c | 34 ++-------------------------------- + 1 file changed, 2 insertions(+), 32 deletions(-) + +commit 28c2706da73d7dddb12d336b26a08218e761817c +Author: Matthias Clasen +AuthorDate: Mon Dec 2 21:48:03 2013 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 2 21:48:03 2013 -0500 + + Drop g_trap_object_ref debugging mechanism + + This is really just a very crude and limited conditional breakpoint. + Update the documentation to explain conditional breakpoints in + gdb instead. Also, remove the link to refdbg, which appears dead. + + https://bugzilla.gnome.org/show_bug.cgi?id=719687 + + docs/reference/gobject/tut_tools.xml | 21 +++++++-------------- + gobject/gobject.c | 12 ------------ + 2 files changed, 7 insertions(+), 26 deletions(-) + +commit 0f800cd1a863bc0c3e51c03592e2fb1ffbda8982 +Author: Xavier Claessens +AuthorDate: Mon Dec 2 14:37:23 2013 -0500 +Commit: Xavier Claessens +CommitDate: Mon Dec 2 14:45:42 2013 -0500 + + Document clearly async functions not copying its args + + Usually async methods copy/ref its arguments so caller can + forget about them. g_file_replace_contents_async() and + g_output_stream_write_async() are exceptions. + + https://bugzilla.gnome.org/show_bug.cgi?id=690525 + + gio/gfile.c | 5 +++++ + gio/goutputstream.c | 5 +++++ + 2 files changed, 10 insertions(+) + +commit c4e9135352c9dc5cef4f6c51432cd4763f849bc4 +Author: Xavier Claessens +AuthorDate: Mon Dec 2 14:40:35 2013 -0500 +Commit: Xavier Claessens +CommitDate: Mon Dec 2 14:45:42 2013 -0500 + + GFile: add GBytes version of _replace_contents_async() + + https://bugzilla.gnome.org/show_bug.cgi?id=690525 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gfile.c | 65 + ++++++++++++++++++++++++++++++++----- + gio/gfile.h | 9 +++++ + 3 files changed, 66 insertions(+), 9 deletions(-) + +commit 10d2a01c9a47098e91c6782121a820e4b16717ab +Author: Colin Walters +AuthorDate: Sun Dec 1 18:52:37 2013 -0500 +Commit: Colin Walters +CommitDate: Sun Dec 1 22:00:27 2013 -0500 + + gsubprocess: Annotate g_subprocess_newv() + + So that it can actually be invoked by bindings. + + gio/gsubprocess.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4aa6894e82b86246d8343feda0dcca79e7e36d1b +Author: Chun-wei Fan +AuthorDate: Mon Dec 2 09:51:18 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Dec 2 09:51:18 2013 +0800 + + build/win32/vs9/gio.vcprojin: Use UNIX Line endings + + Be more consistent with the other project file templates, which will + simplify future application of patches. + + build/win32/vs9/gio.vcprojin | 348 + +++++++++++++++++++++---------------------- + 1 file changed, 174 insertions(+), 174 deletions(-) + +commit a812e110bf990e890ad15697e369c295520d0f98 +Author: Matthias Clasen +AuthorDate: Sun Dec 1 11:45:41 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Dec 1 11:47:00 2013 -0500 + + Install all test data + + The desktop-files directory contains a mimeapps.cache file + that was not installed as data for installed tests, causing + the file measure test to fail only in when installed. + + gio/tests/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit d22e577a030d33d9e79f508f1e296ac1cccd21e5 +Author: Aurimas Černius +AuthorDate: Sun Dec 1 18:30:19 2013 +0200 +Commit: Aurimas Černius +CommitDate: Sun Dec 1 18:30:19 2013 +0200 + + Updated Lithuanian translation + + po/lt.po | 1314 + ++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 761 insertions(+), 553 deletions(-) + +commit 72eae6edddf0d2200a64c1a0a68079ced5ff48a6 +Author: Matthias Clasen +AuthorDate: Sat Nov 30 22:51:03 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 30 23:10:13 2013 -0500 + + Improve file measure testcase + + Make the testcase compare the byte size to what is reported + by du. Also add a test for the async api, and mak eit test + the progress reporting callback. + + gio/tests/file.c | 166 + +++++++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 162 insertions(+), 4 deletions(-) + +commit 9d4cd9c5ae307d40c96d8bc00f419f65795b8090 +Author: Philip Withnall +AuthorDate: Tue Nov 12 13:14:19 2013 +0000 +Commit: Philip Withnall +CommitDate: Fri Nov 29 08:11:13 2013 +0000 + + gtestdbus: Minor documentation fixes + + https://bugzilla.gnome.org/show_bug.cgi?id=712148 + + gio/gtestdbus.c | 28 +++++++++++++++------------- + 1 file changed, 15 insertions(+), 13 deletions(-) + +commit 46c1aea0e7d77581ced8ebd064b5a886417f7371 +Author: Philip Withnall +AuthorDate: Tue Nov 12 13:10:33 2013 +0000 +Commit: Philip Withnall +CommitDate: Fri Nov 29 08:11:13 2013 +0000 + + gtestdbus: Fix non-const use of const variables + + The argv array should be declared as const. + + https://bugzilla.gnome.org/show_bug.cgi?id=712148 + + gio/gtestdbus.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 598a9c5028eef0f84b8f3830524058f3ab5eb257 +Author: Philip Withnall +AuthorDate: Tue Nov 12 13:09:56 2013 +0000 +Commit: Philip Withnall +CommitDate: Fri Nov 29 08:11:13 2013 +0000 + + gtestdbus: Fix variable shadowing + + Shut up, GCC. + + https://bugzilla.gnome.org/show_bug.cgi?id=712148 + + gio/gtestdbus.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit b328cae6a975055ad83d99b248f366fe0973ff0e +Author: Matthias Clasen +AuthorDate: Fri Nov 29 00:11:47 2013 -0500 +Commit: Matthias Clasen +CommitDate: Fri Nov 29 00:12:43 2013 -0500 + + Add a test for g_file_measure_disk_usage + + gio/tests/file.c | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + +commit 7a90c201f7212a410ed871d7decab23e8b63d0e9 +Author: Colin Walters +AuthorDate: Fri Nov 29 04:12:26 2013 +0000 +Commit: Colin Walters +CommitDate: Fri Nov 29 04:12:26 2013 +0000 + + tests/gsubprocess: Only compare basename of /tmp + + Otherwise, we break in Continuous where /tmp == /sysroot/tmp, + and something in the execve() or the kernel will do realpath() + for us. + + gio/tests/gsubprocess.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 4c3b009992f585ce00cafc8cd38941eb646df8e5 +Author: Matthias Clasen +AuthorDate: Thu Nov 28 21:58:48 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 21:58:48 2013 -0500 + + Improve GType test coverage + + Add a test for g_type_class_get_instance_private_offset + + gobject/tests/private.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit d6af3c63c9a95aa86aebf422f14935059a769159 +Author: Matthias Clasen +AuthorDate: Thu Nov 28 21:58:25 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 21:58:25 2013 -0500 + + Add a test for g_atexit + + glib/tests/utils.c | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +commit 2cafe37e19561ee1c10960d191dc776d70c19c7f +Author: Matthias Clasen +AuthorDate: Thu Nov 28 21:57:47 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 21:57:47 2013 -0500 + + Improve GApplication test coverage + + Exercise more of the GActionMap implementation. + + gio/tests/gapplication.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 5528a0f408c5fa29e174a9612da9b0dd136be81f +Author: Matthias Clasen +AuthorDate: Thu Nov 28 21:56:48 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 21:56:48 2013 -0500 + + Improve GNotification test coverage + + gio/tests/gnotification.c | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +commit 97a06b42527b3df1724c0bc61f654f651f3055e4 +Author: Matthias Clasen +AuthorDate: Thu Nov 28 21:53:53 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 21:53:53 2013 -0500 + + Improve GSimpleActionGroup test coverage + + Add a case that overwrites an existing action. + + gio/tests/actions.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 38afb17598c509f2960891b16deb3625ec64b1dc +Author: Matthias Clasen +AuthorDate: Thu Nov 28 14:50:59 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 16:01:23 2013 -0500 + + Generate overview images for coverage + + lcov has the options to generate overview images for each source + file with the --frames option. Lets try this. + + glib.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dbe560ac0106571261b8e8d1ed0335df47c97e97 +Author: Matthias Clasen +AuthorDate: Thu Nov 28 14:33:03 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 16:01:23 2013 -0500 + + Improve GSettings test coverage + + This covers some more GSettingsSchemaKey api. + + gio/tests/gsettings.c | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +commit 555d40eeed7309d11717c872b2115f4d6a519a86 +Author: Matthias Clasen +AuthorDate: Thu Nov 28 13:54:50 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 16:01:23 2013 -0500 + + Improve search utils test coverage + + This adds test cases for the Turkish i. + + glib/tests/search-utils.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 00ab7790ce6057390c9c5eb25380051c15610637 +Author: Matthias Clasen +AuthorDate: Thu Nov 28 13:54:17 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 16:01:23 2013 -0500 + + Improve GNotification test coverage + + gio/tests/gnotification.c | 63 + +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 63 insertions(+) + +commit ec393a3009f89439373486c480a8592595b7c06c +Author: Matthias Clasen +AuthorDate: Thu Nov 28 13:00:03 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 16:01:23 2013 -0500 + + Improve GKeyFile test coverage + + glib/tests/keyfile.c | 65 + +++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 64 insertions(+), 1 deletion(-) + +commit 804c4fe1d37fa9c1c32e858052f56012d73163ef +Author: Matthias Clasen +AuthorDate: Thu Nov 28 12:59:32 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 16:01:23 2013 -0500 + + Improve test coverage for GHashTable + + glib/tests/hash.c | 79 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 78 insertions(+), 1 deletion(-) + +commit a688b2a9c0192a8373407fb53636d0e2c6d3ecbd +Author: Matthias Clasen +AuthorDate: Thu Nov 28 12:59:11 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 16:01:23 2013 -0500 + + Improve test coverage for GSubprocess + + gio/tests/gsubprocess-testprog.c | 14 ++++++++++++++ + gio/tests/gsubprocess.c | 30 ++++++++++++++++++++++++++++++ + 2 files changed, 44 insertions(+) + +commit f18138a9cf4b43c527636688ac87d03385c9664a +Author: Matthias Clasen +AuthorDate: Thu Nov 28 12:58:44 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 16:01:23 2013 -0500 + + Improve test coverage for gsettings + + gio/tests/gsettings.c | 20 ++++++++++++++++++-- + 1 file changed, 18 insertions(+), 2 deletions(-) + +commit 9a02cfd9142b9692116f828c402b115592e2256b +Author: Matthias Clasen +AuthorDate: Thu Nov 28 02:01:48 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 16:01:23 2013 -0500 + + Test new gsettings api + + g_settings_get_user_value and g_settings_get_default_value + are now covered. + + gio/tests/gsettings.c | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + +commit 49ea52e6a69d96bd3eb29ed26c6cb1de592d336f +Author: Philip Withnall +AuthorDate: Thu Nov 28 20:41:49 2013 +0000 +Commit: Philip Withnall +CommitDate: Thu Nov 28 20:41:49 2013 +0000 + + gio: Replace g_clear_object() with if()…g_object_unref() + + As per https://bugzilla.gnome.org/show_bug.cgi?id=113075#c39. + + gio/gcontenttype.c | 3 ++- + gio/gdbusserver.c | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit 49fc6d5b7e0714e783565f083aaca1de598256c0 +Author: djcb +AuthorDate: Thu Nov 28 08:25:20 2013 -0500 +Commit: Colin Walters +CommitDate: Thu Nov 28 08:25:20 2013 -0500 + + gdbus-codegen: Fix leak in property setter + + Comparing the code generated for the setter and other methods without + (real) return value, I noticed that the setter does not unref the + gvariant it gets. + + https://bugzilla.gnome.org/show_bug.cgi?id=719472 + + gio/gdbus-2.0/codegen/codegen.py | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 7d82d6dc5b7de75672d4875b2a897b9a29836f32 +Author: Matthias Clasen +AuthorDate: Thu Nov 28 01:36:29 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 01:36:29 2013 -0500 + + Test g_subprocess_launcher_spawn + + The spawnv variant of this function already had a test, but + spawn was not tested. + + gio/tests/gsubprocess.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7ef1eccd7e97baee34e3ff76f1e19cdefc1b9eb8 +Author: Matthias Clasen +AuthorDate: Thu Nov 28 01:34:52 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 01:34:52 2013 -0500 + + Fix g_subprocess_launcher_spawn + + This function turns a varargs argument list into a string array, + but forgets to NULL-terminate it. This function was not covered + by unit tests...so it was broken. + + gio/gsubprocesslauncher.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 4a687ed7237143be0e6c38c970aef0603793fc71 +Author: Matthias Clasen +AuthorDate: Thu Nov 28 01:12:26 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 01:12:26 2013 -0500 + + Test some more GSubProcess api + + This covers g_subprocess_set_environ, g_subprocess_setenv, + g_subprocess_getenv, and g_subprocess_set_flags. + + gio/tests/gsubprocess-testprog.c | 18 +++++++++++++++++ + gio/tests/gsubprocess.c | 42 + ++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 60 insertions(+) + +commit bd932aa9f8605a3823bc32428cccb334dc1f5ee0 +Author: Matthias Clasen +AuthorDate: Thu Nov 28 00:19:19 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 28 00:19:19 2013 -0500 + + Add a GAppInfoMonitor test + + The test reveals that there's something fishy with this monitor. + One has to call g_app_info_get_all() for it to start working, + and then it only works once. + + gio/tests/Makefile.am | 1 + + gio/tests/appmonitor.c | 114 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 115 insertions(+) + +commit 36a42ab0a50c2825a8111007ff59ff2da14ecff9 +Author: Matthias Clasen +AuthorDate: Wed Nov 27 22:48:06 2013 -0500 +Commit: Matthias Clasen +CommitDate: Wed Nov 27 22:48:06 2013 -0500 + + Add tests for new GAction api + + g_action_name_is_valid and g_action_parse_detailed_name are + now covered. + + gio/tests/actions.c | 59 + +++++++++++++++++++++++++++++++++++++---------------- + 1 file changed, 41 insertions(+), 18 deletions(-) + +commit 1e3fe29fc3707e7844fce8e3761c3f12090d9158 +Author: Manuel Bachmann +AuthorDate: Wed Nov 27 23:18:54 2013 +0100 +Commit: Manuel Bachmann +CommitDate: Wed Nov 27 23:18:54 2013 +0100 + + Fix g_win32_run_session_bus hook for MinGW-w64 + + On win64, g_win32_run_session_bus gets exported with this + precise name, with MinGW as well as MSVC. + + Fixes annoying "Entry not found" UI warning. + + gio/gdbusaddress.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 43d19dae11c5d7a62ab11d64feaa43129a24351b +Author: Ryan Lortie +AuthorDate: Wed Nov 27 12:41:33 2013 -0500 +Commit: Ryan Lortie +CommitDate: Wed Nov 27 12:42:32 2013 -0500 + + gsettings tool: stop using GMainLoop + + Just iterate directly. + + gio/gsettings-tool.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit f33a7f9ef2a14ddc8397477920e013f0987df0a4 +Author: Ryan Lortie +AuthorDate: Wed Nov 27 12:40:27 2013 -0500 +Commit: Ryan Lortie +CommitDate: Wed Nov 27 12:42:32 2013 -0500 + + gsettings tool: fix some sed damage + + The previous patch to simplify the GSettings commandline tool + by making + more use of global variables went a bit too far and broke 'gsettings + monitor' when used without a specific key. + + Fix that up again. + + gio/gsettings-tool.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit e53caad4f139e2df0b34dae5864576796dda514e +Author: Dan Winship +AuthorDate: Wed Nov 27 10:57:43 2013 -0500 +Commit: Dan Winship +CommitDate: Wed Nov 27 10:57:43 2013 -0500 + + Fix a warning about _g_log_abort() + + G_BREAKPOINT is not noreturn, so make it so that we abort() if it + returns, to make _g_log_abort() be properly noreturn again. + + glib/gmessages.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 695070b52e1c5b849993b0a1bb24e23d59434059 +Author: Dan Winship +AuthorDate: Wed Nov 27 10:15:44 2013 -0500 +Commit: Dan Winship +CommitDate: Wed Nov 27 10:42:32 2013 -0500 + + Fix the gtestutils core dump prevention again + + The previous patch was preventing core dumps on failed assertions, but + not on g_error()s. + + glib/gmessages.c | 19 ++++++++----------- + 1 file changed, 8 insertions(+), 11 deletions(-) + +commit 1300108e0c50e70d5414c195649ad41419074e1a +Author: Rui Matos +AuthorDate: Wed Nov 27 14:32:05 2013 +0100 +Commit: Rui Matos +CommitDate: Wed Nov 27 16:18:19 2013 +0100 + + GDBusObjectManagerClient: keep the manager alive while firing signals + + Handlers for the signals we emit might unref the object manager. Make + sure we keep it alive until we are done with it. + + https://bugzilla.gnome.org/show_bug.cgi?id=719402 + + gio/gdbusobjectmanagerclient.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit 30e1ab326296088fd83c046e83b0f0a0b89b9489 +Author: Ryan Lortie +AuthorDate: Wed Nov 27 10:13:10 2013 -0500 +Commit: Ryan Lortie +CommitDate: Wed Nov 27 10:17:15 2013 -0500 + + tests: move /param/implement to -m slow + + Take this test out of 'make check'. It's causing problems for a + lot of people + due to fact that it's essentially a forkbomb. It's causing failures + for Debian + on ARM and it's DoSing coredumps to system crash collectors. + + The conditional only covers registration of the master, not the + subprocess parts. This is because g_test_slow() always return + FALSE in + the subprocesses, so they would fail to run if we didn't register them + unconditionally. + + gobject/tests/param.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit aa337d36741b17e53470fd8b08e672fa56ca59b1 +Author: Philip Withnall +AuthorDate: Mon Nov 25 13:26:45 2013 +0000 +Commit: Philip Withnall +CommitDate: Wed Nov 27 10:12:27 2013 +0000 + + gbytes: Clarify the nullability of GBytes->data + + Clarify that it is permitted for a GBytes to contain a NULL data + pointer, as long as its size is 0. + + https://bugzilla.gnome.org/show_bug.cgi?id=715164 + + glib/gbytes.c | 38 ++++++++++++++++++++++++++------------ + 1 file changed, 26 insertions(+), 12 deletions(-) + +commit 33dd6d12d7478df22b7759f0ed26f81187ad2a54 +Author: Philip Withnall +AuthorDate: Mon Nov 25 14:06:01 2013 +0000 +Commit: Philip Withnall +CommitDate: Wed Nov 27 10:05:56 2013 +0000 + + gfileutils: Fix a potential integer overflow + + When calculating the array sizes in get_contents_stdio(), there is a + possibility of overflow for very large files. Rearrange the overflow + checks to avoid this. + + The code already handled some possibilities of files being too + large, so + no new GError has been added to handle this; the existing + G_FILE_ERROR_FAILED is re-used. + + Found by scan-build. + + https://bugzilla.gnome.org/show_bug.cgi?id=715164 + + glib/gfileutils.c | 37 ++++++++++++++++++++++--------------- + 1 file changed, 22 insertions(+), 15 deletions(-) + +commit c1d5db618688a78aa897d269859a1bc6413a9e55 +Author: Philip Withnall +AuthorDate: Mon Nov 25 13:50:20 2013 +0000 +Commit: Philip Withnall +CommitDate: Wed Nov 27 10:05:56 2013 +0000 + + gvariant: Fix a potential memcpy(NULL) call + + This probably won’t crash, as it can only happen if (size == 0), but + add a check to be safe, and to shut up the static analyser. + + This case can be reached with the following call: + gvs_read_unaligned_le(NULL, 0) + which can be called from: + gvs_tuple_get_child(value, index_) + with (value.data == NULL) and (value.size == 0). + + Found by scan-build. + + https://bugzilla.gnome.org/show_bug.cgi?id=715164 + + glib/gvariant-serialiser.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit c9344fd5135474471dc34e29141a186454e7473e +Author: Philip Withnall +AuthorDate: Tue Nov 26 11:21:37 2013 +0000 +Commit: Philip Withnall +CommitDate: Wed Nov 27 10:01:30 2013 +0000 + + gio/tests: Add a dynamic type check assertion + + This shuts up a static analysis false positive, and adds some extra + checking. + + Found by scan-build. + + https://bugzilla.gnome.org/show_bug.cgi?id=113075 + + gio/tests/task.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 32118951ea827811d3885568916de89a0e5d1f4e +Author: Philip Withnall +AuthorDate: Tue Nov 26 11:20:01 2013 +0000 +Commit: Philip Withnall +CommitDate: Wed Nov 27 10:01:30 2013 +0000 + + gio/tests: Add a non-NULL assertion to help static analysis + + The static analyser (correctly) considers a type check to fail if the + variable is NULL. In this case, the address must be non-NULL as + no error + was thrown by g_socket_connection_get_remote_address(), but the static + analyser doesn’t know this. + + Add a non-NULL assertion anyway, both to shut the analyser up, and + because it’s good extra testing. + + Found by scan-build. + + https://bugzilla.gnome.org/show_bug.cgi?id=113075 + + gio/tests/proxy-test.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c9ccc2af9157b99651507eb078e6cdd8d31d3bd6 +Author: Philip Withnall +AuthorDate: Tue Nov 26 11:18:35 2013 +0000 +Commit: Philip Withnall +CommitDate: Wed Nov 27 10:01:29 2013 +0000 + + gio/tests: Add non-NULL assertions to help static analysis + + These prevent some false positives from the static analyser which are + caused by it not inspecting the invariants of + g_subprocess_communicate[_utf8]_finish() (i.e. that stdout and + stdout_str will always be set unless an error was returned). + + They’re also good testing anyway. + + Found by scan-build. + + https://bugzilla.gnome.org/show_bug.cgi?id=113075 + + gio/tests/gsubprocess.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit fe004445a41d69075fcb542219026d4b8fc343a9 +Author: Philip Withnall +AuthorDate: Tue Nov 26 11:18:01 2013 +0000 +Commit: Philip Withnall +CommitDate: Wed Nov 27 10:01:29 2013 +0000 + + gio/tests: Fix a g_return_val_if_fail() in a void function + + Should be g_return_if_fail() instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=113075 + + gio/tests/gnotification-server.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 73e6b900d431f8ef948aa134e45107bd326e8004 +Author: Philip Withnall +AuthorDate: Tue Nov 26 11:16:57 2013 +0000 +Commit: Philip Withnall +CommitDate: Wed Nov 27 10:01:29 2013 +0000 + + gunixmounts: Fix a potential strcmp(NULL) call + + mntent->mnt_fsname may be NULL at this point; if so, fall to the + second + branch and set mount_entry->device_path = NULL. + + Found by scan-build. + + https://bugzilla.gnome.org/show_bug.cgi?id=113075 + + gio/gunixmounts.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8b9e8dc53b1efba01d760cde9d2cb01fdee51cf7 +Author: Philip Withnall +AuthorDate: Tue Nov 26 11:12:48 2013 +0000 +Commit: Philip Withnall +CommitDate: Wed Nov 27 10:01:29 2013 +0000 + + gcontenttype: Fix a potential NULL pointer dereference + + If the initial part of the header (‘MIME-TreeMagic’) is valid, + but the + following line does not start with ‘[’ (i.e. is not a valid + section + line), insert_matchlet() will be called with a NULL match pointer, and + will crash with a NULL pointer dereference. + + Fix this by bailing out if a valid section line isn’t encountered + before + the first insert_matchlet() call (i.e. between the header line and the + first data line). + + Note that this has not been tested against a real treemagic file; the + fix is purely theoretical. + + Found by scan-build. + + https://bugzilla.gnome.org/show_bug.cgi?id=113075 + + gio/gcontenttype.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit aa28ced44e0460fb01406aa17996d863ffe3cbf6 +Author: Philip Withnall +AuthorDate: Tue Nov 26 11:11:21 2013 +0000 +Commit: Philip Withnall +CommitDate: Wed Nov 27 10:01:29 2013 +0000 + + gunixfdlist: Fix a potential NULL pointer dereference + + In the case that (n_fds == 0 && fds == NULL), memcpy() would be called + against a NULL src pointer. Even though the number of bytes to copy is + 0, avoid the possibility of a crash by only calling if fds is + non-NULL. + + Found by scan-build. + + https://bugzilla.gnome.org/show_bug.cgi?id=113075 + + gio/gunixfdlist.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 956c58c7f202009d769aefc9bc8adaedccec074d +Author: Philip Withnall +AuthorDate: Tue Nov 26 11:09:58 2013 +0000 +Commit: Philip Withnall +CommitDate: Wed Nov 27 10:01:29 2013 +0000 + + gsocketaddress: Add an assertion to help static analysis + + The static analyser will check dynamic type assertions and assume that + if they fail, the variable can either have the wrong type, or be NULL + (which is correct). The analyser doesn’t know that other + constraints in + the API ensure the variable is non-NULL. + + Add a non-null assertion to help the static analyser and shut it up in + this case. + + https://bugzilla.gnome.org/show_bug.cgi?id=113075 + + gio/gsocketaddress.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit c729f416fb07e723a8404e28241a8096ac438838 +Author: Philip Withnall +AuthorDate: Tue Nov 26 11:08:50 2013 +0000 +Commit: Philip Withnall +CommitDate: Wed Nov 27 10:01:29 2013 +0000 + + gdbusserver: Fix a potential g_object_unref(NULL) call + + This can happen if the hash table lookup for ‘noncefile’ fails, + and + hence the first ‘goto out’ is hit, at which point resolver + is still + NULL. + + Found with scan-build. + + https://bugzilla.gnome.org/show_bug.cgi?id=113075 + + gio/gdbusserver.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 44af12aba114c82e04fa78eb2ad9aaf8aa5137b2 +Author: Philip Withnall +AuthorDate: Tue Nov 26 11:07:45 2013 +0000 +Commit: Philip Withnall +CommitDate: Wed Nov 27 10:01:29 2013 +0000 + + gcontenttype: Fix a potential g_object_unref(NULL) call + + This can happen if the g_file_query_info() call fails, returning NULL. + + Found with scan-build. + + https://bugzilla.gnome.org/show_bug.cgi?id=113075 + + gio/gcontenttype.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b9322bf9abe2e61718b2b1c57aa09b18946a2d35 +Author: Chun-wei Fan +AuthorDate: Fri Nov 15 13:00:55 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Nov 27 08:01:47 2013 +0800 + + gio/tests/memory-output-stream.c: Avoid an uninitialized variable + + Be a little bit more careful in regards to initializing a primitive + type + variable before passing it by reference, as it could have random stuff + in the variable's address depending on the CRT, such as MSVCR110.DLL, + causing random, invalid stuff being written in that address. + + This will fix this test when built with Visual Studio 2012. + + https://bugzilla.gnome.org/show_bug.cgi?id=711047 + + gio/tests/memory-output-stream.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 29b66e1458113e1786209f5784f919082d22c618 +Author: Chun-wei Fan +AuthorDate: Tue Nov 26 18:57:04 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Nov 27 08:01:46 2013 +0800 + + glib/tests/enviroment.c: Fix running on Windows + + Don't attempt to insert environmental variables in the hash table + during + the test listenv that is an empty string, as GetEnvironmentStringsW() + also + returns special enviroment variables which have empty strings as their + variable names, at least on Windows 7 and 8. + + https://bugzilla.gnome.org/show_bug.cgi?id=711047 + + glib/tests/environment.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 32cfcc87400af61261ecdac29b38962c1de876f1 +Author: Michael Natterer +AuthorDate: Tue Nov 26 23:00:52 2013 +0100 +Commit: Michael Natterer +CommitDate: Tue Nov 26 23:00:52 2013 +0100 + + gio: remove precondition checks from g_output_stream_printf() + + because we call g_output_stream_vprintf() which does exactly the same + checks. + + gio/goutputstream.c | 5 ----- + 1 file changed, 5 deletions(-) + +commit c9cfa7d1d55291503c8adb8a1cca24781e4a8da4 +Author: Stef Walter +AuthorDate: Thu Oct 31 23:03:58 2013 +0100 +Commit: Stef Walter +CommitDate: Tue Nov 26 20:23:48 2013 +0100 + + gthread-posix: Don't use gslice allocated GRecMutex + + This leads to problems during cleanup, and seems strange + to have locks defined in terms of things that need locking. + + https://bugzilla.gnome.org/show_bug.cgi?id=711753 + + glib/gthread-posix.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit d86396f21fa164bd3cb5efc111ef50bd7065beec +Author: Michael Natterer +AuthorDate: Mon Nov 25 23:26:21 2013 +0100 +Commit: Michael Natterer +CommitDate: Tue Nov 26 11:51:24 2013 +0100 + + gio: add g_output_string_[v]printf() + + which are useful for porting FILE* based output code. + + gio/goutputstream.c | 104 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/goutputstream.h | 14 +++++++ + 2 files changed, 118 insertions(+) + +commit a997cfe90fae92d13bd1bf7e7f45f2a2381c9f11 +Author: Chun-wei Fan +AuthorDate: Tue Nov 26 13:16:15 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Nov 26 13:16:15 2013 +0800 + + gio/gdbusauthmechanismsha1.c: Move G_OS_* checks down + + The G_OS_* checks are only valid if the GLib headers have been + previously + included, so that io.h can be included properly on Windows + + gio/gdbusauthmechanismsha1.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 03bf43e14aa3d5c22f9365a6c6137e3bb1f67b02 +Author: Colin Walters +AuthorDate: Mon Nov 25 18:39:46 2013 -0500 +Commit: Colin Walters +CommitDate: Mon Nov 25 18:39:46 2013 -0500 + + gsubprocess: Document g_subprocess_get_identifier() + + gio/gsubprocess.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit ed1df0ea59fcb316827d709642d023caeebc5078 +Author: Daniel Mustieles +AuthorDate: Mon Nov 25 17:27:43 2013 +0100 +Commit: Daniel Mustieles +CommitDate: Mon Nov 25 17:27:43 2013 +0100 + + Updated Spanish translation + + po/es.po | 789 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 379 insertions(+), 410 deletions(-) + +commit 299bcbfa41db0093bc876c1095f0aab248e3b771 +Author: Philip Withnall +AuthorDate: Mon Nov 25 13:35:53 2013 +0000 +Commit: Philip Withnall +CommitDate: Mon Nov 25 15:46:51 2013 +0000 + + gsubprocess: Fix potential strlen(NULL) calls + + Also clarify the nullability of stdin_buf arguments in GSubprocess + communication calls. + + Found with scan-build. + + https://bugzilla.gnome.org/show_bug.cgi?id=715164 + + gio/gsubprocess.c | 24 ++++++++++++++++-------- + 1 file changed, 16 insertions(+), 8 deletions(-) + +commit d6a19d2e76654570c056ef328c6fb4fdda939272 +Author: Marc-André Lureau +AuthorDate: Wed Nov 6 12:21:58 2013 +0100 +Commit: Marc-André Lureau +CommitDate: Mon Nov 25 12:07:57 2013 +0100 + + utf8: report allocation error + + Make some of the conversion functions a bit more friendly to + allocation + failure. + + Even though the glib policy is to abort() on allocation failure by + default, it can be quite helpful to return an allocation error for + functions already providing a GError. + + I needed a safer g_utf16_to_utf8() to solve crash on big clipboard + operations with win32, related to rhbz#1017250 (and coming gdk + handling + bug). + + https://bugzilla.gnome.org/show_bug.cgi?id=711546 + + glib/gconvert.h | 4 +++- + glib/gutf8.c | 47 +++++++++++++++++++++++++++++++++++------------ + 2 files changed, 38 insertions(+), 13 deletions(-) + +commit 0dbe5c43df6d3eb32abe766ed08da525a8c8bfa4 +Author: Chun-wei Fan +AuthorDate: Mon Nov 25 15:26:25 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 25 15:26:25 2013 +0800 + + msvc_recommended_pragmas.h: Treat C4819 warnings as errors + + Warning C4819 in Visual Studio builds indicates an issue of Visual + Studio + 2005 and later running on East Asian locales of Windows, which likely + results in broken builds of GLib, Pango, GTK+, and possibly other + GNOME + projects such as Cogl and Clutter (and is also an issue when + building other + projects like QT and Firefox). + + Treat this warning as an error as a result when building GLib-based + items + on Visual Studio, and tell people how to remedy this issue correctly. + + README.win32 | 15 +++++++++++++++ + msvc_recommended_pragmas.h | 2 ++ + 2 files changed, 17 insertions(+) + +commit 3d70db075005a94d7fd18ac8a8dbd0abb82bff9e +Author: Dan Winship +AuthorDate: Sat Nov 23 12:06:05 2013 -0500 +Commit: Dan Winship +CommitDate: Sun Nov 24 15:14:13 2013 -0500 + + Reorganize the "don't dump core from test subprocesses" code. + + g_test_init() was calling _g_messages_set_exit_on_fatal() from + subprocesses, to make fatal log messages call _exit() rather than + abort(), but the function name is sort of confusing, and we don't + really need it anyway, since g_log() can just call g_test_subprocess() + instead and decide for itself. + + Likewise, update g_assertion_message() to do the check itself, rather + than calling into gmessages to do it, and fix + g_assertion_message_expr() to also check whether it should exit or + abort. (Previously it always called abort(), although this didn't + actually matter since that was dead code until + test_nonfatal_assertions was added.) + + https://bugzilla.gnome.org/show_bug.cgi?id=711800 + + glib/Makefile.am | 1 - + glib/gmessages-private.h | 35 ----------------------------------- + glib/gmessages.c | 34 +++++++++++++++------------------- + glib/gtestutils.c | 25 ++++++++++++++++++++----- + 4 files changed, 35 insertions(+), 60 deletions(-) + +commit 97fac936708863a52d46cfb0ec3259e1b2c03d29 +Author: Dan Winship +AuthorDate: Sun Nov 10 15:27:26 2013 -0500 +Commit: Dan Winship +CommitDate: Sun Nov 24 14:59:51 2013 -0500 + + gtestutils: add g_assert_nonnull() to go with g_assert_null() + + https://bugzilla.gnome.org/show_bug.cgi?id=711800 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gtestutils.c | 15 +++++++++++++++ + glib/gtestutils.h | 6 +++++- + 3 files changed, 21 insertions(+), 1 deletion(-) + +commit f4c30feb9598e09d1d32805bad96e216c1a21786 +Author: Dan Winship +AuthorDate: Sun Nov 10 15:44:06 2013 -0500 +Commit: Dan Winship +CommitDate: Sun Nov 24 14:59:51 2013 -0500 + + gtestutils: fix g_test_set_nonfatal_assertions() + + g_test_set_nonfatal_assertions() was a no-op, because + g_assertion_message() wasn't actually checking the + test_nonfatal_assertions flag. Fix that and add a test. + + Also, g_test_set_nonfatal_assertions() has to set test_mode_fatal to + FALSE as well, or else a failed assertion will cause the test program + to abort at the end of the failed test. + + Also, belatedly add this and the new g_assert_* methods to the docs. + + https://bugzilla.gnome.org/show_bug.cgi?id=711800 + + docs/reference/glib/glib-sections.txt | 5 +++++ + glib/gtestutils.c | 19 +++++++++++++++---- + glib/tests/testing.c | 22 ++++++++++++++++++++++ + 3 files changed, 42 insertions(+), 4 deletions(-) + +commit 910191597a6c2e5d5d460e9ce9efb4f47d9cc63c +Author: Matthias Clasen +AuthorDate: Sun Nov 24 01:22:44 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Nov 24 01:22:44 2013 -0500 + + Add boolean returns to some hash functions + + The functions g_hash_table_insert, g_hash_table_replace + and g_hash_table_add now return TRUE if they inserted a + new key/value pair. + + https://bugzilla.gnome.org/show_bug.cgi?id=697828 + + glib/ghash.c | 34 +++++++++++++++++++++++----------- + glib/ghash.h | 6 +++--- + glib/tests/hash.c | 10 ++++++++-- + 3 files changed, 34 insertions(+), 16 deletions(-) + +commit 616af3b80e62e283a1d8edba6b5da03f07a6ef0e +Author: Matthias Clasen +AuthorDate: Sun Nov 24 00:56:26 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Nov 24 00:59:35 2013 -0500 + + Avoid a compiler warning + + glib/garray.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1fb4b3b2bf30b6a74c1b161a0884a424f7211e33 +Author: Manuel Bachmann +AuthorDate: Sun Nov 24 04:51:21 2013 +0100 +Commit: Manuel Bachmann +CommitDate: Sun Nov 24 04:51:21 2013 +0100 + + Fix G_OS #ifdefs in gbusserver.c + + G_OS #ifdefs are only available once glibconfig.h has been + evaluated ; that is, after including glib headers. + Move this block down so it gets correctly evaluated. + + gio/gdbusserver.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +commit 5efc038e0dc77459ee5258b76640da423ded458e +Author: Matthias Clasen +AuthorDate: Sat Nov 23 22:24:00 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 22:24:51 2013 -0500 + + Fix up appinfo test + + Make it possible to skip the terminal-launching test simply + by setting DISPLAY= . Previously, you had to unset DISPLAY, + which is a little more cumbersome. + + https://bugzilla.gnome.org/show_bug.cgi?id=711178 + + gio/tests/appinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0fc0754e655a0628c4b25da4fe2ddf261208deb3 +Author: Matthias Clasen +AuthorDate: Sat Nov 23 22:21:29 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 22:21:29 2013 -0500 + + Fix up the appinfo test + + One testcase was launching appinfo-test from a GAppInfo that + does not have a filename. In this case, the G_LAUNCHED_DESKTOP_FILE + envvar is not exported. Make appinfo-test deal with that, without + spewing warnings. + + https://bugzilla.gnome.org/show_bug.cgi?id=711178 + + gio/tests/appinfo-test.c | 21 +++++++++++++++------ + 1 file changed, 15 insertions(+), 6 deletions(-) + +commit 0250d185b1780691c02d746d0732ab94aeabd1ed +Author: Matthias Clasen +AuthorDate: Sat Nov 23 21:28:40 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 21:28:40 2013 -0500 + + Fix warnings in a the actions test + + The actions test tests the GSimpleActionGroup API. Maybe this + should be moved to use GActionMap, but for now, just disable + the deprecations. + + There was also one test that wasn't actually hooked up, so + do that as well. + + gio/tests/actions.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit dedc990e28c0755b33ccbaee0c19d22f430563e6 +Author: Matthias Clasen +AuthorDate: Sat Nov 23 21:10:06 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 21:10:06 2013 -0500 + + Fix array API inconsistency + + g_array_remove_range and g_byte_array_remove_range return + a pointer to the array, g_ptr_array_remove_range returns + void. Since it is pretty harmless, make it return the array + too. + + https://bugzilla.gnome.org/show_bug.cgi?id=159528 + + glib/garray.c | 18 +++++++++++------- + glib/garray.h | 2 +- + 2 files changed, 12 insertions(+), 8 deletions(-) + +commit 698393f15d32c6386588cf37b3aea8342ae45bf7 +Author: Matthias Clasen +AuthorDate: Sat Nov 23 21:09:32 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 21:09:32 2013 -0500 + + Fix the stack direction check again + + Turns out I got it wrong. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 341c0b1988542f88f6c506145fda2ebd694f3331 +Author: Matthias Clasen +AuthorDate: Sat Nov 23 20:24:49 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 20:27:04 2013 -0500 + + Improve stack direction detection + + When the function in the test program is inlined, all bets are + off whether the detection will work correctly or not. Make it + harder for the compiler to play games on us by making the + function recursive. + + https://bugzilla.gnome.org/show_bug.cgi?id=307947 + + configure.ac | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit df71ecfc2dcefdc05f18dda5e6108f75ecbfe491 +Author: Matthias Clasen +AuthorDate: Sat Nov 23 20:12:13 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 20:26:10 2013 -0500 + + Fix the configure check for growing stack + + The check was getting the direction wrong, as proven by the + just committed signal invocation hint test. + + https://bugzilla.gnome.org/show_bug.cgi?id=711871 + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit e81e33b35d389f14858015d759c9a3f416420c2d +Author: Matthias Clasen +AuthorDate: Sat Nov 23 20:06:07 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 20:06:07 2013 -0500 + + Add a test for g_signal_get_invocation_hint + + This is the sole piece of code in GLib where we make use of the + stack growing direction. And this test proves that we have been + getting the direction wrong all these years... + + gobject/tests/signals.c | 47 + +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 47 insertions(+) + +commit bd8fb391aa71a7693302dfe4f27ca10bab82c68a +Author: Christian Persch +AuthorDate: Thu May 24 19:18:44 2012 +0200 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 18:16:41 2013 -0500 + + application: Use printerr for runtime errors + + g_critical can be fatal (with --g-fatal-warnings, or some env + var set), + so don't use it to print out runtime errors. + + Bug #676761. + + gio/gapplication.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit e45372895dd31033726c0ddfa1f7ff55a52d907c +Author: Matthias Clasen +AuthorDate: Sat Nov 23 18:15:04 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 18:15:04 2013 -0500 + + Fix desktop-app-info test + + The recent change to the search scoring algorithm made + nautilus and konqueror switch places in the search results. + Update the test to reflect that. + + gio/tests/desktop-app-info.c | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +commit baf92d09d69de0d9f9b2d0f77fc62c21fdef4da8 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:18:34 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 17:37:58 2013 -0500 + + gtestdbus: Properly close server connections + + Otherwise g_test_dbus_down() following a g_test_dbus_stop() + will hang until it times out. + + https://bugzilla.gnome.org/show_bug.cgi?id=711807 + + gio/gtestdbus.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit f16045c9cf221b800766fc0813d12f2a83636468 +Author: Matthias Clasen +AuthorDate: Sat Nov 23 16:58:51 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 16:58:51 2013 -0500 + + Add a test for notify emission ordering + + This tests the ordering that was just documented. + See + + https://bugzilla.gnome.org/show_bug.cgi?id=607016 + + gobject/tests/properties.c | 39 +++++++++++++++++++++++++++++++++++++++ + 1 file changed, 39 insertions(+) + +commit 429010b15c0345d38b8dd711ccc1f45b2bbdbab4 +Author: Matthias Clasen +AuthorDate: Sat Nov 23 16:44:31 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 16:44:31 2013 -0500 + + Document details of GObject::notify + + The signals queued while notify is frozen are emitted in + reverse order, while omitting duplicates. The lack of documentation + for this was pointed out in + + https://bugzilla.gnome.org/show_bug.cgi?id=607016 + + gobject/gobject.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit 5a5aaa203ac111add979abeb128ccc582b0cdc5c +Author: Stef Walter +AuthorDate: Sat Nov 9 09:25:02 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 15:20:51 2013 -0500 + + gdbus-connection: Fix race condition in test + + The test was expecting that the spawned process wouldn't start + up before the NameOwnerChanged signal was subscribed. + + https://bugzilla.gnome.org/show_bug.cgi?id=711805 + + gio/tests/gdbus-connection.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 65da592249b3eff7fbb5edb31d94e028cc3c43d0 +Author: Lars Uebernickel +AuthorDate: Tue Oct 29 00:01:38 2013 -0700 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 15:11:09 2013 -0500 + + Add basic test for the GNotification gtk backend + + https://bugzilla.gnome.org/show_bug.cgi?id=711051 + + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 2 + + gio/tests/gnotification-server.c | 339 + +++++++++++++++++++++++++++++++++++++++ + gio/tests/gnotification-server.h | 46 ++++++ + gio/tests/gnotification.c | 163 +++++++++++++++++++ + 5 files changed, 551 insertions(+) + +commit 797959f05a26409fe143e54cc7d706ec5fa3d713 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:17:49 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 13:47:29 2013 -0500 + + gtestdbus: Don't destroy GSource twice + + https://bugzilla.gnome.org/show_bug.cgi?id=711806 + + gio/gtestdbus.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 047d9ce6f2ae840bacb3e4cf42d128d9d247b96e +Author: Gergely POLONKAI +AuthorDate: Wed Sep 18 11:01:00 2013 +0000 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 13:36:55 2013 -0500 + + GObject: Introspection annotations for enums + + This commit adds a few missing annotations to g_enum and + g_flags functions. + + https://bugzilla.gnome.org/show_bug.cgi?id=708274 + + gobject/genums.c | 30 ++++++++++++++++-------------- + 1 file changed, 16 insertions(+), 14 deletions(-) + +commit aef0adc0dd6e53c28aa3243ee97a202257a4e195 +Author: Bastien Nocera +AuthorDate: Thu Nov 14 17:39:06 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 13:35:52 2013 -0500 + + GSettings: More docs for deprecated _list_schemas() + + Most _list_schemas() uses were to check for the availability + of a particular schema. g_settings_schema_source_lookup() is + a better way to do this. + + https://bugzilla.gnome.org/show_bug.cgi?id=712315 + + gio/gsettingsschema.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 330905587860ee83a1931ad3b6794cdfde35f582 +Author: Matthias Clasen +AuthorDate: Sat Nov 23 13:16:06 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 13:16:06 2013 -0500 + + GVariantBuilder: small documentation fixes + + The examples for g_variant_builder_add and + g_variant_builder_add_parsed were leaking a heap-allocated + builder. Fix that by converting the examples to stack + allocation. + + https://bugzilla.gnome.org/show_bug.cgi?id=697585 + https://bugzilla.gnome.org/show_bug.cgi?id=703522 + + glib/gvariant-parser.c | 18 +++++++++--------- + glib/gvariant.c | 16 ++++++++-------- + 2 files changed, 17 insertions(+), 17 deletions(-) + +commit 4382e8b876a3991e1be2827be76630e1b67b8e03 +Author: Andrew Walton +AuthorDate: Tue Nov 12 13:04:49 2013 -0800 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 11:01:29 2013 -0500 + + CLOEXEC fix for older FreeBSDs and OS X. + + Some older POSIX-flavored operating systems may not have adopted + O_CLOEXEC yet. + + See https://bugzilla.gnome.org/show_bug.cgi?id=712136. + + gio/gsubprocess.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit f969f1fc25248d4f53c78568481205b21ef1446b +Author: Matthias Clasen +AuthorDate: Sat Nov 23 10:49:00 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 10:49:00 2013 -0500 + + Small documentation clarification + + https://bugzilla.gnome.org/show_bug.cgi?id=671557 + + glib/gkeyfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e3babb368742f6f8b69ba2c8a2b9a95d6142e8ff +Author: Stef Walter +AuthorDate: Fri Nov 8 14:26:33 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 01:17:03 2013 -0500 + + giomodule: Allow overriding source directory gio modules are + loaded from + + When testing (and valgrinding) we need to have a known set of modules + loaded. + + https://bugzilla.gnome.org/show_bug.cgi?id=711801 + + docs/reference/gio/overview.xml | 12 +++++++++++- + gio/giomodule.c | 7 ++++++- + 2 files changed, 17 insertions(+), 2 deletions(-) + +commit be231c6be03586f9a428f9ae5c9ae166b2747b75 +Author: Dan Winship +AuthorDate: Sun Nov 10 13:27:15 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 00:43:54 2013 -0500 + + glib-tap.mk: fix to actually use the TAP driver + + The Makefile rules in glib-tap.mk were copied from an example that + assumed that all the test programs had names ending in ".test", so + they didn't actually have any effect for us and resulted in us still + using the standard automake test driver. Fix this so we actually do + use TAP now. + + https://bugzilla.gnome.org/show_bug.cgi?id=711796 + + Makefile.am | 1 + + glib-tap.mk | 2 +- + tap-driver.sh | 652 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 654 insertions(+), 1 deletion(-) + +commit 8f5b40c04672a150ed6df27d9f83aba8ec8ea29d +Author: Dan Winship +AuthorDate: Sun Nov 10 13:26:01 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 00:43:54 2013 -0500 + + gio/tests: fix output of gdbus-proxy-threads and gdbus-threading + + Make gdbus-proxy-threads and gdbus-threading print a newline at the + end of their progress strings, to avoid messing up their TAP-format + output. + + https://bugzilla.gnome.org/show_bug.cgi?id=711796 + + gio/tests/gdbus-proxy-threads.c | 5 ++++- + gio/tests/gdbus-threading.c | 12 +++++++++--- + 2 files changed, 13 insertions(+), 4 deletions(-) + +commit c762a3a3f60a984edb721dd8879a52bffd134bd4 +Author: Dan Winship +AuthorDate: Sun Nov 10 13:25:45 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 00:43:53 2013 -0500 + + gio/tests: basic-application is a helper program, not a test + + https://bugzilla.gnome.org/show_bug.cgi?id=711796 + + gio/tests/Makefile.am | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 41eacde63071d52bab52ee721efb12a279b14198 +Author: Dan Winship +AuthorDate: Sun Nov 10 13:23:15 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 00:43:45 2013 -0500 + + gtestutils: add "options" to g_test_init(), make option-argv0 + use gtester + + Declare that the previously-unused "..." argument to g_test_init() is + actually a NULL-terminated list of strings indicating testing options, + and add an option "no_g_set_prgname", which keeps g_test_init() from + calling g_set_prgname(). Then we can port glib/tests/option-argv0 to + use gtester, by passing that option. + + https://bugzilla.gnome.org/show_bug.cgi?id=711796 + + glib/gtestutils.c | 18 +++++++++++++----- + glib/gtestutils.h | 2 +- + glib/tests/option-argv0.c | 11 ++++------- + 3 files changed, 18 insertions(+), 13 deletions(-) + +commit f733075cd13504fa1977a433cbad463f8900828e +Author: Dan Winship +AuthorDate: Sun Nov 10 13:22:46 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 00:39:07 2013 -0500 + + glib/tests/include: port to gtester + + https://bugzilla.gnome.org/show_bug.cgi?id=711796 + + glib/tests/include.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +commit a9d93ca1dfbee4d4b6bb0880493be5ed6efac62c +Author: Matthias Clasen +AuthorDate: Sat Nov 23 00:22:09 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 23 00:22:09 2013 -0500 + + Add some mainloop instrumentation + + Add trace points around adding, removing and dispatching of + sources. + + https://bugzilla.gnome.org/show_bug.cgi?id=710741 + + glib/glib.stp.in | 22 ++++++++++++++++++++++ + glib/glib_probes.d | 4 ++++ + glib/gmain.c | 8 ++++++++ + 3 files changed, 34 insertions(+) + +commit 91dd70cf1715f64ff8dcd1ce2f641a905988f275 +Author: Dan Winship +AuthorDate: Wed Nov 20 09:41:13 2013 -0500 +Commit: Dan Winship +CommitDate: Wed Nov 20 16:30:43 2013 -0500 + + building: Document C90 and POSIX requirements + + https://bugzilla.gnome.org/show_bug.cgi?id=710519 + + INSTALL.in | 4 ++++ + docs/reference/glib/building.xml | 15 +++++++++------ + 2 files changed, 13 insertions(+), 6 deletions(-) + +commit 9d7235dea7670a059cb4e653f6f9fee63560277f +Author: Dan Winship +AuthorDate: Wed Nov 20 09:31:20 2013 -0500 +Commit: Dan Winship +CommitDate: Wed Nov 20 16:30:43 2013 -0500 + + building: belated docs update: GNU make is required, not recommended + + https://bugzilla.gnome.org/show_bug.cgi?id=710519 + + INSTALL.in | 2 +- + docs/reference/glib/building.xml | 14 +++++++------- + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit 158dde050702f83a058962d14156a02234fc9685 +Author: Dan Winship +AuthorDate: Sat Oct 19 13:04:00 2013 -0400 +Commit: Dan Winship +CommitDate: Wed Nov 20 09:25:39 2013 -0500 + + Replace #ifdef HAVE_UNISTD_H checks with #ifdef G_OS_UNIX + + In Windows development environments that have it, is mostly + just a wrapper around several other native headers (in particular, + , which contains read(), close(), etc, and , which + contains getpid()). But given that some Windows dev environments don't + have , everything that uses those functions on Windows + already needed to include the correct Windows header as well, and so + there is never any point to including on Windows. + + Also, remove some includes (and a few others) that were + unnecessary even on unix. + + https://bugzilla.gnome.org/show_bug.cgi?id=710519 + + config.h.win32.in | 7 ------- + configure.ac | 10 +++------- + gio/gdbusauthmechanismexternal.c | 4 ---- + gio/gdbusauthmechanismsha1.c | 4 ++-- + gio/gdbusconnection.c | 4 ---- + gio/gdbusmessage.c | 3 --- + gio/gdbusprivate.c | 3 --- + gio/gdbusserver.c | 4 ++-- + gio/gdummyfile.c | 3 --- + gio/glib-compile-resources.c | 7 +++---- + gio/glib-compile-schemas.c | 4 ---- + gio/glocalfile.c | 2 -- + gio/glocalfileinfo.c | 8 +++----- + gio/glocalfileinputstream.c | 4 +--- + gio/glocalfileoutputstream.c | 4 +--- + gio/gsimpleasyncresult.c | 7 ------- + gio/gtestdbus.c | 2 +- + glib/gbookmarkfile.c | 5 ----- + glib/gdatetime.c | 4 ---- + glib/genviron.c | 3 --- + glib/gfileutils.c | 6 +++--- + glib/giochannel.c | 4 ---- + glib/gkeyfile.c | 2 +- + glib/gmain.c | 4 ++-- + glib/gmappedfile.c | 7 ++++--- + glib/gmessages.c | 7 ++++--- + glib/gpoll.c | 4 ++-- + glib/grand.c | 8 ++++---- + glib/gscanner.c | 8 ++++---- + glib/gslice.c | 2 +- + glib/gstdio.c | 2 +- + glib/gstring.c | 3 --- + glib/gtestutils.c | 4 +--- + glib/gthread.c | 4 ++-- + glib/gtimer.c | 4 ++-- + glib/gutils.c | 4 +--- + glib/tests/base64.c | 3 --- + glib/tests/checksum.c | 3 --- + glib/tests/hmac.c | 3 --- + glib/tests/mappedfile.c | 10 +++++++--- + glib/tests/node.c | 4 ---- + glib/tests/thread.c | 2 +- + gmodule/gmodule.c | 2 +- + gobject/glib-genmarshal.c | 6 +++--- + gobject/gobject-query.c | 3 --- + tests/env-test.c | 4 ---- + tests/file-test.c | 5 ++--- + tests/gio-test.c | 8 ++++---- + 48 files changed, 66 insertions(+), 152 deletions(-) + +commit 3981cddbf8659458be9f863151314cd0fd1682bf +Author: Dan Winship +AuthorDate: Sat Oct 19 13:03:59 2013 -0400 +Commit: Dan Winship +CommitDate: Wed Nov 20 09:17:42 2013 -0500 + + Require POSIX.1 (1990) compliance on unix + + Assume unix platforms support the original POSIX.1 standard. + Specifically, assume that if G_OS_UNIX, then we have chown(), + getcwd(), getgrgid(), getpwuid(), link(), , , + , , , and . + + Additionally, since all versions of Windows that we care about also + have , we can remove HAVE_SYS_TYPES_H checks everywhere. + + Also remove one include of , and the corresponding + configure check, since the include is not currently needed (and may + always have just been a typo for ). + + https://bugzilla.gnome.org/show_bug.cgi?id=710519 + + config.h.win32.in | 33 --------------------------------- + configure.ac | 34 ++++++++++++++-------------------- + gio/gfile.c | 3 --- + gio/glocalfile.c | 2 +- + gio/glocalfileinfo.c | 16 +++++++--------- + gio/glocalfileinfo.h | 2 -- + gio/glocalfileoutputstream.c | 2 +- + gio/glocalvfs.c | 4 ++-- + gio/gsocket.c | 2 +- + glib/gbacktrace.c | 15 +++++---------- + glib/gfileutils.c | 6 ------ + glib/gthread-posix.c | 9 +++------ + glib/gutils.c | 9 ++++----- + 13 files changed, 38 insertions(+), 99 deletions(-) + +commit 6e4a7fca431f53fdfd89afbe956212229cf52200 +Author: Dan Winship +AuthorDate: Sat Oct 19 13:03:58 2013 -0400 +Commit: Dan Winship +CommitDate: Wed Nov 20 09:16:16 2013 -0500 + + Require C90 compliance + + Assume all supported platforms implement C90, and therefore they + (correctly) implement atexit(), memmove(), setlocale(), strerror(), + and vprintf(), and have and . + + (Also remove the configure check testing that "do ... while (0)" works + correctly; the non-do/while-based version of G_STMT_START and + G_STMT_END was removed years ago, but the check remained. Also, remove + some checks that configure.ac claimed were needed for libcharset, but + aren't actually used.) + + Note that removing the g_memmove() function is not an ABI break even + on systems where g_memmove() was previously not a macro, because it + was never marked GLIB_AVAILABLE_IN_ALL or listed in glib.symbols, so + it would have been glib-internal since 2004. + + https://bugzilla.gnome.org/show_bug.cgi?id=710519 + + config.h.win32.in | 33 ---------- + configure.ac | 154 + ++++++++------------------------------------ + gio/gbufferedinputstream.c | 2 +- + gio/gbufferedoutputstream.c | 2 +- + glib/garray.c | 32 ++++----- + glib/gbsearcharray.h | 4 +- + glib/gfileutils.c | 2 +- + glib/gslice.c | 14 ++-- + glib/gstrfuncs.c | 15 +---- + glib/gstring.c | 10 +-- + glib/gutils.c | 56 ++-------------- + glib/gutils.h | 13 +--- + glib/pcre/Makefile.am | 1 + + glib/tests/test-printf.c | 2 - + gobject/gtype.c | 18 +++--- + gobject/gvaluearray.c | 8 +-- + 16 files changed, 80 insertions(+), 286 deletions(-) + +commit 7f5b2901cf5bea290c11133dad16850176178dad +Author: Dan Winship +AuthorDate: Sat Oct 19 13:03:56 2013 -0400 +Commit: Dan Winship +CommitDate: Wed Nov 20 09:16:16 2013 -0500 + + Remove alleged support for last-millennium Unixes + + Remove workarounds for NeXTStep (last released in 1995), SunOS (1994), + HP-UX 9.x (1992) and 10.x (1995), OSF/1 / Digital UNIX / Tru64 UNIX + 4.x (1999), and AIX 4.x (1999). + + HP-UX 11 implements dlopen(), so dropping support for earlier versions + also lets us remove the HP-UX-specific gmodule-dld. + + https://bugzilla.gnome.org/show_bug.cgi?id=710519 + + configure.ac | 66 ++---------------- + glib/gfileutils.c | 5 +- + glib/glibconfig.h.win32.in | 6 +- + glib/gpoll.c | 6 -- + glib/gutils.c | 9 +-- + gmodule/Makefile.am | 1 - + gmodule/gmodule-dld.c | 163 + -------------------------------------------- + gmodule/gmodule.c | 12 ++-- + gmodule/gmoduleconf.h.in | 3 +- + gmodule/gmoduleconf.h.win32 | 1 - + m4macros/glib-2.0.m4 | 5 +- + 11 files changed, 15 insertions(+), 262 deletions(-) + +commit 51a917bc1656368e8d94ea7ea3b33d3cc06daa82 +Author: Dan Winship +AuthorDate: Sat Oct 19 13:03:55 2013 -0400 +Commit: Dan Winship +CommitDate: Wed Nov 20 09:16:16 2013 -0500 + + Remove alleged support for BeOS + + Since the initial addition of BeOS support in 1999, there has only + been one update to it (in 2005, and it wasn't even very big). GLib is + known to not currently build on Haiku (or presumably actual BeOS) + without additional patching, and the fact that there isn't a single + G_OS_BEOS check in gio/ is suspicious. + + Additionally, other than the GModule implementation, all of the + existing G_OS_BEOS checks are either (a) "G_OS_UNIX || G_OS_BEOS", or + (b) random minor POSIXy tweaks (include this header file rather than + that one, etc), suggesting that if we were going to support Haiku, it + would probably be simpler to treat it as a special kind of G_OS_UNIX + (as we do with Mac OS X) rather than as its own completely different + thing. + + So, kill G_OS_BEOS. + + https://bugzilla.gnome.org/show_bug.cgi?id=710519 + + configure.ac | 32 ------ + docs/reference/glib/glib-sections.txt | 1 - + glib/docs.c | 7 -- + glib/gbacktrace.c | 2 +- + glib/gmain.c | 5 - + glib/gpoll.c | 4 - + glib/gstdio.c | 2 +- + glib/gutils.c | 2 +- + gmodule/Makefile.am | 1 - + gmodule/gmodule-beos.c | 204 + ---------------------------------- + gmodule/gmoduleconf.h.in | 1 - + gmodule/gmoduleconf.h.win32 | 1 - + 12 files changed, 3 insertions(+), 259 deletions(-) + +commit 57969f4b251d14eaa3d154842f208dde4cc525a7 +Author: Dan Winship +AuthorDate: Sat Oct 19 13:03:46 2013 -0400 +Commit: Dan Winship +CommitDate: Wed Nov 20 09:16:16 2013 -0500 + + Remove alleged support for OS/2 + + In particular, remove the OS/2 GModule implementation (which AFAICT + was never actually built even on OS/2). + + https://bugzilla.gnome.org/show_bug.cgi?id=710519 + + glib/gutils.c | 4 -- + gmodule/Makefile.am | 1 - + gmodule/gmodule-os2.c | 144 + -------------------------------------------- + gmodule/gmoduleconf.h.in | 1 - + gmodule/gmoduleconf.h.win32 | 1 - + 5 files changed, 151 deletions(-) + +commit 6f7d8f6294da1c08d918b14cb012e5fa854ff080 +Author: Stef Walter +AuthorDate: Tue Oct 29 18:03:29 2013 +0100 +Commit: Stef Walter +CommitDate: Tue Nov 19 14:53:28 2013 +0100 + + gbacktrace: Print out gdb exec errors correctly + + We want to see error messages related to starting and running + gdb (such as if it's not installed). + + https://bugzilla.gnome.org/show_bug.cgi?id=711088 + + glib/gbacktrace.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +commit b1af471a3f08c3afa4eb61f0791998aac5da80a8 +Author: Michael Haubenwallner +AuthorDate: Thu Nov 14 16:22:10 2013 +0100 +Commit: Colin Walters +CommitDate: Tue Nov 19 08:11:35 2013 -0500 + + build: Give internal libraries higher precedence + + Linking local libraries too late may cause preinstalled libraries to + get found earlier, due to external library paths in .la files. + + https://bugzilla.gnome.org/show_bug.cgi?id=712314 + + gio/Makefile.am | 37 +++++++++++++++++++------------------ + gio/tests/Makefile.am | 6 ++++-- + tests/Makefile.am | 8 ++++---- + tests/gobject/Makefile.am | 2 +- + 4 files changed, 28 insertions(+), 25 deletions(-) + +commit 36f1a4ce7ed6df6aa8d24169508cc33dfc34cd79 +Author: Stef Walter +AuthorDate: Tue Oct 29 21:30:06 2013 +0100 +Commit: Stef Walter +CommitDate: Tue Nov 19 08:08:14 2013 +0100 + + gmessages: Add g_info macro for G_LOG_LEVEL_INFO + + For completeness. Although less used than others, projects want + to use this, and end up having to define it awkwardly themselves. + + https://bugzilla.gnome.org/show_bug.cgi?id=711103 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gmessages.c | 22 +++++++++++++++++++++- + glib/gmessages.h | 15 +++++++++++++++ + glib/tests/protocol.c | 5 +---- + 4 files changed, 38 insertions(+), 5 deletions(-) + +commit a46459b0002af97c035133907706caeba76f7863 +Author: Colin Walters +AuthorDate: Mon Nov 18 16:15:34 2013 -0500 +Commit: Colin Walters +CommitDate: Mon Nov 18 17:13:34 2013 -0500 + + GSocketClient: For _CONNECTING event, make remote address accessible + + My application (hotssh) would like to get the resolved address + from DNS, + before we start the connect(). + + We could add a new event, but it's easy enough to just cache it on the + GSocketConnection; this avoids any new API. + + https://bugzilla.gnome.org/show_bug.cgi?id=712547 + + gio/gioprivate.h | 6 ++++++ + gio/gsocketclient.c | 8 +++++++- + gio/gsocketconnection.c | 30 ++++++++++++++++++++++++++++++ + 3 files changed, 43 insertions(+), 1 deletion(-) + +commit 1f0573d2e6605d657cdf2884cc4dcd646f8a214f +Author: Michael Haubenwallner +AuthorDate: Thu Nov 14 16:16:59 2013 +0100 +Commit: Colin Walters +CommitDate: Mon Nov 18 14:48:55 2013 -0500 + + AIX splice() is something different + + AIX does provide the splice() symbol, but this does have different + signature and usecase than what Linux may provide. + + https://bugzilla.gnome.org/show_bug.cgi?id=712314 + + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +commit efb1701bf3baf6f5b05fd1a7a5a4ff990a7dc460 +Author: Michael Haubenwallner +AuthorDate: Thu Nov 14 16:12:02 2013 +0100 +Commit: Colin Walters +CommitDate: Mon Nov 18 14:47:53 2013 -0500 + + Use AC_HEADER_MAJOR + + Instead of checking for sys/mkdev.h headerfile, there is the + AC_HEADER_MAJOR helper for how to get major(), minor(), makedev(). + + https://bugzilla.gnome.org/show_bug.cgi?id=712314 + + configure.ac | 3 ++- + gio/gdbusmessage.c | 9 ++++++--- + 2 files changed, 8 insertions(+), 4 deletions(-) + +commit 3c2d52cc965ac6c4d44f3812cb3d52631873ff02 +Author: Colin Walters +AuthorDate: Tue Nov 12 13:41:47 2013 -0500 +Commit: Colin Walters +CommitDate: Mon Nov 18 14:19:19 2013 -0500 + + gsettings.m4: @GSETTINGS_RULES@: Support srcdir != builddir with + nonrecursive make + + In hotssh I use nonrecursive make. gnome-continuous uses srcdir != + builddir by default. @GSETTINGS_RULES@ will then attempt to touch a + nonexistent path. + + This patch fixes that. + + https://bugzilla.gnome.org/show_bug.cgi?id=712171 + + m4macros/gsettings.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f79e39154d4028dac1366e813aba0cabdd48c9c2 +Author: Dan Winship +AuthorDate: Sun Nov 17 09:45:20 2013 -0500 +Commit: Dan Winship +CommitDate: Sun Nov 17 09:45:20 2013 -0500 + + GDummyTlsBackend: cache the GDummyTlsDatabase + + The default GTlsDatabase is supposed to be a singleton (and libsoup + has tests that will fail if it's not). + + gio/gdummytlsbackend.c | 29 ++++++++++++++++++++++++++--- + 1 file changed, 26 insertions(+), 3 deletions(-) + +commit cfc8215fc1dc09acbfd4bb2c2b5ae5d66a4146d4 +Author: Ray Strode +AuthorDate: Fri Nov 15 14:47:09 2013 -0500 +Commit: Ray Strode +CommitDate: Fri Nov 15 15:56:26 2013 -0500 + + gobject: Box GMappedFile + + GMappedFile is current unintrospectable, because it's not a registered + box type. It already has reference counting functions, so there's + little reason not to box it. + + This commit adds GMappedFile to the hoard of other boxes types handled + by gboxed.c + + https://bugzilla.gnome.org/show_bug.cgi?id=712393 + + gobject/gboxed.c | 1 + + gobject/glib-types.h | 11 +++++++++++ + 2 files changed, 12 insertions(+) + +commit ca830f273396322a29c439f760c06e9bad0399f1 +Author: Ryan Lortie +AuthorDate: Fri Nov 15 15:23:43 2013 -0500 +Commit: Ryan Lortie +CommitDate: Fri Nov 15 15:32:09 2013 -0500 + + Fix GSettings testcase again + + Hopefully this one will work for both srcdir == builddir and not. + + gio/tests/Makefile.am | 2 +- + gio/tests/gsettings.c | 7 +- + gio/tests/org.gtk.test.gschema.xml | 204 + -------------------------------- + gio/tests/org.gtk.test.gschema.xml.orig | 204 + ++++++++++++++++++++++++++++++++ + 4 files changed, 210 insertions(+), 207 deletions(-) + +commit cb889d95804144c86d9a64aeb6b21a18df035b7e +Author: Philip Withnall +AuthorDate: Thu Nov 14 18:06:32 2013 +0000 +Commit: Philip Withnall +CommitDate: Thu Nov 14 18:06:32 2013 +0000 + + gstrfuncs: Mention nullability in g_ascii_strcasecmp() documentation + + Like strcmp(), g_ascii_strcasecmp() requires that both of its + parameters + be non-%NULL. + + glib/gstrfuncs.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 2fb8901b647f94f74a79f5017793d6c6ed2af981 +Author: Florian Müllner +AuthorDate: Thu Nov 7 23:41:21 2013 +0100 +Commit: Florian Müllner +CommitDate: Wed Nov 13 16:54:02 2013 +0100 + + gdesktopappinfo: Rank Keywords matches higher than GenericName + + It makes sense to match on GenericName in case an application does + not provide any keywords, but the Keywords field has been added + to explicitly support the search case, while GenericName was used + to be displayed in menus, so it makes more sense to consider + Keywords more (or equally) relevant for search. + + https://bugzilla.gnome.org/show_bug.cgi?id=711640 + + gio/gdesktopappinfo.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit d33f758313f32e123ec70f052216b028a50fc0a6 +Author: Ryan Lortie +AuthorDate: Tue Nov 12 00:19:50 2013 -0500 +Commit: Ryan Lortie +CommitDate: Tue Nov 12 00:19:50 2013 -0500 + + bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 00d980f6f4e8bfbc5fb36a487890006da7d2f5b3 +Author: Ryan Lortie +AuthorDate: Mon Nov 11 23:09:11 2013 -0500 +Commit: Ryan Lortie +CommitDate: Tue Nov 12 00:05:09 2013 -0500 + + GLib 2.39.1 + + NEWS | 135 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 135 insertions(+) + +commit ce35c08c5702b31676ff0db4412864ca55247913 +Author: Ryan Lortie +AuthorDate: Mon Nov 11 23:11:55 2013 -0500 +Commit: Ryan Lortie +CommitDate: Tue Nov 12 00:05:09 2013 -0500 + + Revert "gdbus-connection-loss: Fix leak in test" + + This reverts commit 670379b26f4a86c7b51b928eb0332b9a654e4c4c. + + This is causing distcheck to fail and will have to be revisited later. + + gio/tests/gdbus-connection-loss.c | 3 --- + 1 file changed, 3 deletions(-) + +commit 5c4f3f4dab47059c81855c383176ab4d88be1a18 +Author: Ryan Lortie +AuthorDate: Mon Nov 11 23:17:32 2013 -0500 +Commit: Ryan Lortie +CommitDate: Tue Nov 12 00:05:04 2013 -0500 + + gsettings test: fix srcdir != builddir + + Just copy the schemas to the builddir and compile them in place + instead + of trying to mess around with creating the compiled file in a + different + dir. This solves issues in the summary/description testcase when + GSettings expects the usual situation of having the .xml files present + in the same directory. + + gio/tests/Makefile.am | 1 + + gio/tests/gsettings.c | 10 +++++----- + 2 files changed, 6 insertions(+), 5 deletions(-) + +commit 1e5e3b64a8f3caa4c42a49b17b89dbbede892a90 +Author: Stef Walter +AuthorDate: Sat Nov 9 08:51:41 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 17:41:39 2013 +0100 + + gsubprocess: Fix a number of leaks and a segfault + + Fixed a number of leaks in gsubprocess, as well as a segfault + that was hidden by never calling + g_subprocess_communicate_state_free(). + + https://bugzilla.gnome.org/show_bug.cgi?id=711803 + + gio/gsubprocess.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +commit d10f35310ffb50edca7efef25071c52f45683160 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:53:32 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 17:37:48 2013 +0100 + + threadpool-test: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + tests/threadpool-test.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 3e041ce5adde83a44f6f5156c7463157539ddbc4 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:26:31 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 17:35:26 2013 +0100 + + mainloop-test: Fix uninitialized memory access in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + tests/mainloop-test.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit a638be8a790a67688066229f239a612194cdff70 +Author: Stef Walter +AuthorDate: Thu Nov 7 22:56:11 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 17:17:10 2013 +0100 + + Revert "giomodule: Fix leaks in module loading" + + This reverts commit dc72039c162e1ca6400f28f92dd8e090ce99bd3f. + + This depends on a patch that allows GTypeModule to be finalized. + Lets put this back in bugzilla until that gets in. + + gio/giomodule.c | 28 ++++++++++------------------ + 1 file changed, 10 insertions(+), 18 deletions(-) + +commit aa7ec15091a29c37aa32c117dff94b6b72498b39 +Author: Stef Walter +AuthorDate: Mon Nov 11 15:27:24 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 17:06:38 2013 +0100 + + Revert "defaultiface: Fix leak in test" + + This reverts commit fd7b2faa64febab407ffde2506c995544583a9d5. + + This required another patch to be commited first. Will put this + back in bugzilla. + + tests/gobject/defaultiface.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +commit f038c629a404c49cb8149add55dde286b7ddb079 +Author: Chun-wei Fan +AuthorDate: Wed Nov 6 16:35:21 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 11 22:52:00 2013 +0800 + + glib/tests/: Avoid GCCisms and fix tests for MSVC + + Skip the tests on inf/nan strings for the gvariant and strfuncs + tests, and + skip the hex strings for the strtod tests in strfuncs as they are C99 + features that are not yet supported by Visual C++ (even 2013). Use a + definition for NAN and INFINITY (that is also used in PyGObject) as + atof("NaN") and atof("Infinity") simply returns 0.0 (which is not + a NAN) + in Visual C++ to fix the tests running there. + + Also adapt to the format of g_ascii_formatd() when dealing with 1e99. + + https://bugzilla.gnome.org/show_bug.cgi?id=711047 + + glib/tests/gvariant.c | 5 ++++- + glib/tests/strfuncs.c | 31 +++++++++++++++++++++++++++++-- + 2 files changed, 33 insertions(+), 3 deletions(-) + +commit 0212ab61824c098ec0a213465e85e2bc2702b4ed +Author: Chun-wei Fan +AuthorDate: Wed Nov 6 16:58:00 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 11 22:40:57 2013 +0800 + + Tests: Fix up the expected messages + + There was an expected messages that was not in the form that GLib on + Windows actually produces, which causes some test to fail. + Fix this up. + + https://bugzilla.gnome.org/show_bug.cgi?id=711047 + + gio/tests/credentials.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c58a7b8c7454aa82895c8d325e964ac94f79ae3b +Author: Chun-wei Fan +AuthorDate: Wed Nov 6 16:45:12 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 11 22:39:57 2013 +0800 + + tests: Fix for non-GCC + + Remove uses of using empty arrays in initialization and structs, + and build + tests that rely on GCCisms on GCC only. + + https://bugzilla.gnome.org/show_bug.cgi?id=711047 + + glib/tests/mem-overflow.c | 6 +++++ + gobject/tests/param.c | 64 + +++++++++++++++++++++++------------------------ + 2 files changed, 38 insertions(+), 32 deletions(-) + +commit a7707ec60ba8155c345df58d414060e177f15804 +Author: Chun-wei Fan +AuthorDate: Wed Nov 6 15:14:06 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 11 22:38:36 2013 +0800 + + glib/tests/spawn-singlethread: Improve test for Windows + + Use a Windows-style .bat script for the test_spawn_script() test, + at least + when the code is built with Visual C++ (due to differences in + how scripts + are written for shells and Windows cmd.exe), and account for + Windows-style + line endings for that test too. + + Let the MinGW builds (which are normally done in an MSYS BASH-style + shell) continue to use the + *NIX-style script for that test. + + https://bugzilla.gnome.org/show_bug.cgi?id=711047 + + glib/tests/Makefile.am | 1 + + glib/tests/echo-script.bat | 2 ++ + glib/tests/spawn-singlethread.c | 22 +++++++++++++++++++--- + 3 files changed, 22 insertions(+), 3 deletions(-) + +commit b27a2d436bad5fcda5fea52bb84a39fd42e66041 +Author: Chun-wei Fan +AuthorDate: Tue Nov 5 17:33:09 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 11 22:38:05 2013 +0800 + + gio/tests/gsubprocess.c: Fix on Windows + + We need to check for the correct line endings on Windows (\r\n) + for the + echo tests and currently need to skip the test_echo_eof test there, as + it depends on the cat utility that is not normally found on Windows, + and + using an external installation of cat via MSYS or Cygwin would + render the + test program to hang as cat waits for user input. + + https://bugzilla.gnome.org/show_bug.cgi?id=711047 + + gio/tests/gsubprocess.c | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +commit fd41363e0213adda7c274c7ac06b411a17d5619f +Author: Chun-wei Fan +AuthorDate: Tue Nov 5 16:08:45 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 11 22:37:39 2013 +0800 + + tests/: Include unistd.h on *NIX only + + https://bugzilla.gnome.org/show_bug.cgi?id=711047 + + tests/child-test.c | 9 ++++----- + tests/env-test.c | 4 +--- + tests/mapping-test.c | 9 ++++----- + tests/refcount/closures.c | 3 +++ + tests/refcount/objects.c | 5 ++++- + tests/refcount/objects2.c | 5 ++++- + tests/refcount/properties.c | 5 ++++- + tests/refcount/properties2.c | 5 ++++- + tests/refcount/signals.c | 5 ++++- + tests/slice-concurrent.c | 2 ++ + 10 files changed, 34 insertions(+), 18 deletions(-) + +commit 5fd3c63ae8ab3923fa7963832dadde1d065a1e48 +Author: Chun-wei Fan +AuthorDate: Tue Nov 5 15:51:08 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 11 22:37:10 2013 +0800 + + glib/gspawn-win32-helper.c: Clean up a bit + + Remove the parts about storing up the fd's in a data structure, + but call + close() on the fd's. However, retain the _get_osfhandle() check + on the + fd's when we iterate through the fd's as on fd values in the + iteration may + well be invalid fd's. As a result, the invalid parameter handler + is still + needed for newer Microsoft CRTs (8.0/2005+) for _get_osfhandle() to + make sure that the program does not abort when we check the + validity of + fd's to be closed in the loop[1]. + + [1]: + http://msdn.microsoft.com/en-us/library/ks2530z6%28v=vs.80%29.aspx + + glib/gspawn-win32-helper.c | 47 + ++++++++++++++++++---------------------------- + 1 file changed, 18 insertions(+), 29 deletions(-) + +commit ccba409d349211d0705a8ae1fcf0f88fbb370175 +Author: Chun-wei Fan +AuthorDate: Tue Nov 5 12:58:40 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 11 22:36:32 2013 +0800 + + tests/: Avoid closing invalid fd's + + ...and only include unistd.h when we are on *NIX. + + Newer Visual C++ runtimes (8.0/2005 and later) will cause the + program to + crash with an internal abort() call when they detect instances + of close() + being called on an invalid fd, such as when the fd is -1, and + these should + be purged anyways. + + https://bugzilla.gnome.org/show_bug.cgi?id=711047 + + tests/file-test.c | 16 +++++++++------- + tests/testglib.c | 17 +++++++++-------- + 2 files changed, 18 insertions(+), 15 deletions(-) + +commit 172aaa3a0135fe14567b33389cfbf25103260967 +Author: Chun-wei Fan +AuthorDate: Tue Nov 5 12:45:38 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 11 22:35:40 2013 +0800 + + glib/gmessages.h: Unify log messages + + ...Under various compilers when !G_DISABLE_CHECKS. Previously, the + messages that are logged differ depending whether GLib was built + with GCC + or not. To simplify test cases, make all builds use a single + output format + for g_return_if_fail(), g_return_val_if_fail(), g_return_if_reached(), + and + g_return_val_if_reached(), by using the GCC-style format and + replaceing + __PRETTY_FUNCTION__ with G_STRFUNC, so that it will work across + various + compilers. + + https://bugzilla.gnome.org/show_bug.cgi?id=711047 + + glib/gmessages.h | 54 + ++++-------------------------------------------------- + 1 file changed, 4 insertions(+), 50 deletions(-) + +commit fff14a5b7cf62d176b20bb3bb2fa573f9f7bcd2d +Author: Dan Winship +AuthorDate: Sat Nov 2 09:33:26 2013 -0400 +Commit: Dan Winship +CommitDate: Mon Nov 11 09:28:07 2013 -0500 + + gcancellable: don't use g_cancellable_connect() in GCancellableSource + + g_cancellable_connect() is documented as calling its callback only + once, but GCancellableSource should trigger every time the cancellable + is cancelled. + + https://bugzilla.gnome.org/show_bug.cgi?id=710691 + https://bugzilla.gnome.org/show_bug.cgi?id=711286 + + gio/gcancellable.c | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +commit b4aee2a759898ce785675a158fc74963cc380317 +Author: Shantha kumar +AuthorDate: Mon Nov 11 14:20:40 2013 +0530 +Commit: Shantha kumar +CommitDate: Mon Nov 11 14:21:12 2013 +0530 + + Updated Tamil Translations + + po/ta.po | 978 + +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 601 insertions(+), 377 deletions(-) + +commit 670379b26f4a86c7b51b928eb0332b9a654e4c4c +Author: Stef Walter +AuthorDate: Sat Nov 9 20:28:28 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 08:46:45 2013 +0100 + + gdbus-connection-loss: Fix leak in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711802 + + gio/tests/gdbus-connection-loss.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 14b27eaab88e8c8860461fb98ede7eb14a510d46 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:23:15 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 08:46:33 2013 +0100 + + gdbus-introspection: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711802 + + gio/tests/gdbus-introspection.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit e34d74bdb390fce029e7734e93b7ff8154b75e26 +Author: Stef Walter +AuthorDate: Thu Nov 7 22:40:40 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 08:20:13 2013 +0100 + + private: Use threading primitives correctly in private test + + We shouldn't be clearing statically allocated mutexes, and also + don't use deprecated heap-allocated GPrivate. + + https://bugzilla.gnome.org/show_bug.cgi?id=711755 + + glib/tests/private.c | 17 ++++++----------- + 1 file changed, 6 insertions(+), 11 deletions(-) + +commit 177fe9f98ee7a017cff11f739c16c203b671a7e2 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:52:16 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 08:14:45 2013 +0100 + + timeloop: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + tests/timeloop.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 9e0ade0691b30baf07bab7d5b4b00467b82c21b9 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:29:56 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 08:10:51 2013 +0100 + + file-test: Fix leaks in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + tests/file-test.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit dce83add1800c7145d6375626e2129fc51a83267 +Author: Stef Walter +AuthorDate: Sun Nov 10 00:15:30 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:57:52 2013 +0100 + + gthreadpool: Don't pass bad data to GThreadPool sorter + + This causes sorters to crash. + + https://bugzilla.gnome.org/show_bug.cgi?id=711756 + + glib/gthreadpool.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 81d0ebe29ccd852e969acda7394969e3f13eb136 +Author: Stef Walter +AuthorDate: Thu Oct 31 11:43:14 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:40:16 2013 +0100 + + gmain: Fix use of uninitialized memory in sigaction structure + + https://bugzilla.gnome.org/show_bug.cgi?id=711754 + + glib/gmain.c | 1 + + 1 file changed, 1 insertion(+) + +commit fd7b2faa64febab407ffde2506c995544583a9d5 +Author: Stef Walter +AuthorDate: Sun Nov 10 15:58:06 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:27:22 2013 +0100 + + defaultiface: Fix leak in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711779 + + tests/gobject/defaultiface.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit bac4179476d0eee96f8bd73fef760b4289b79c17 +Author: Stef Walter +AuthorDate: Sun Nov 10 15:57:12 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:27:15 2013 +0100 + + timeloop-closure: Fix leaks in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711779 + + tests/gobject/timeloop-closure.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +commit d8722441d167694dd943aeeab4e8addd4ce41f6a +Author: Stef Walter +AuthorDate: Sun Nov 10 15:56:59 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:27:01 2013 +0100 + + signals: Fix leak in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711779 + + tests/gobject/signals.c | 1 + + 1 file changed, 1 insertion(+) + +commit 1b9662046f4c98b8aa8aff63a0bbbfde3b6bf3f7 +Author: Stef Walter +AuthorDate: Sun Nov 10 15:56:32 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:26:53 2013 +0100 + + paramspec-test: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711779 + + tests/gobject/paramspec-test.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 320f0b32de8458c05793733991e05497d1b5c782 +Author: Stef Walter +AuthorDate: Sun Nov 10 15:56:17 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:26:37 2013 +0100 + + override: Fix leaks in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711779 + + tests/gobject/override.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit e6de9c6940cc123e9f843e3069f73a75a887487f +Author: Stef Walter +AuthorDate: Sun Nov 10 15:55:56 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:26:28 2013 +0100 + + gvalue-test: Fix leaks in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711779 + + tests/gobject/gvalue-test.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 83301d8c1f678fbcd26129ba4bc4cc2332e15bdd +Author: Stef Walter +AuthorDate: Sun Nov 10 15:55:35 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:26:20 2013 +0100 + + accumulator: Fix leak in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711779 + + tests/gobject/accumulator.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 5339950e2519933912fe5e3374caf721ad790220 +Author: Stef Walter +AuthorDate: Thu Nov 7 22:57:27 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:26:04 2013 +0100 + + threadtests: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711779 + + gobject/tests/threadtests.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +commit ac6d35b4df8726f18926b5060f969a6229f96378 +Author: Stef Walter +AuthorDate: Thu Nov 7 22:57:13 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:25:53 2013 +0100 + + enums: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711779 + + gobject/tests/enums.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit dc72039c162e1ca6400f28f92dd8e090ce99bd3f +Author: Stef Walter +AuthorDate: Thu Nov 7 23:00:28 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:22:48 2013 +0100 + + giomodule: Fix leaks in module loading + + https://bugzilla.gnome.org/show_bug.cgi?id=711798 + + gio/giomodule.c | 28 ++++++++++++++++++---------- + 1 file changed, 18 insertions(+), 10 deletions(-) + +commit b88f992c6ea3b082ac967b852ceb1618c0196783 +Author: Stef Walter +AuthorDate: Sun Nov 10 14:48:36 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:20:09 2013 +0100 + + boxed: Fix double free in boxed unit tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711782 + + gobject/tests/boxed.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 91c8fb82feae5675f20ac0fcb21226a1b516e5df +Author: Stef Walter +AuthorDate: Sat Nov 9 20:21:44 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:12:53 2013 +0100 + + gdbus-connection: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711802 + + gio/tests/gdbus-connection.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit f80e2695e1c624484a149fbd5b1c795d6b0ab519 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:21:16 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:12:37 2013 +0100 + + gdbus-connection-slow: Fix leak in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711802 + + gio/tests/gdbus-connection-slow.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 0d51ff79edfb39d8b9e4d775a399404c1641784d +Author: Stef Walter +AuthorDate: Sat Nov 9 20:28:41 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:12:26 2013 +0100 + + gdbus-connection: Fix use after free in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711802 + + gio/tests/gdbus-connection.c | 3 --- + 1 file changed, 3 deletions(-) + +commit 95526b5db5adad7f550de06b707f429eb9da0654 +Author: Stef Walter +AuthorDate: Sat Nov 9 08:54:28 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:12:18 2013 +0100 + + gsubprocess: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711802 + + gio/tests/gsubprocess.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit fe3c878c53b2c8087c6c0605a36d55d61ddab3f4 +Author: Stef Walter +AuthorDate: Sat Nov 9 08:53:13 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:12:00 2013 +0100 + + gsubprocess: Fix error detection logic in tests + + Various tests were depending on local_error being set by a callback + when it could never have been the case. Simplify async error detection + logic in those cases, and fix leak of GError. + + https://bugzilla.gnome.org/show_bug.cgi?id=711802 + + gio/tests/gsubprocess.c | 40 ++++++++++++++-------------------------- + 1 file changed, 14 insertions(+), 26 deletions(-) + +commit 78ad171da96e15b370867b69077fa3d149920c83 +Author: Stef Walter +AuthorDate: Fri Nov 8 14:28:55 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:11:29 2013 +0100 + + g-icon: Fix memory leak in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711802 + + gio/tests/g-icon.c | 1 + + 1 file changed, 1 insertion(+) + +commit faafd4c051febb545838be9b663eabe5f3df254f +Author: Stef Walter +AuthorDate: Fri Nov 8 14:28:23 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:11:22 2013 +0100 + + contexts: Fix memory leak in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711802 + + gio/tests/contexts.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 438f7110f92dd290bce205abb61249ed4d564c37 +Author: Stef Walter +AuthorDate: Sun Nov 10 16:39:45 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:11:14 2013 +0100 + + data-output-stream: Fix some access after free + + The memory pointed to by a GMemoryOutputStream can be realloc'd + + https://bugzilla.gnome.org/show_bug.cgi?id=711802 + + gio/tests/data-output-stream.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 72171240cc1d3dfdee27ce460e88fca23308bdba +Author: Stef Walter +AuthorDate: Sun Nov 10 16:39:28 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 07:10:59 2013 +0100 + + buffered-output-stream: Fix some access after free + + The memory pointed to by a GMemoryOutputStream can be realloc'd + + https://bugzilla.gnome.org/show_bug.cgi?id=711802 + + gio/tests/buffered-output-stream.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 419b47e166fce8974e8bc31e966020c57e6fe19f +Author: Stef Walter +AuthorDate: Sat Nov 9 20:19:44 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Nov 11 06:55:09 2013 +0100 + + gtestdbus: Fix leak of GMainLoop + + https://bugzilla.gnome.org/show_bug.cgi?id=711808 + + gio/gtestdbus.c | 1 + + 1 file changed, 1 insertion(+) + +commit 6294d730235577b018b1b8df85691a96a5ce4d80 +Author: Stef Walter +AuthorDate: Sun Nov 10 10:54:47 2013 +0100 +Commit: Stef Walter +CommitDate: Sun Nov 10 22:53:42 2013 +0100 + + module-test: Fix leaks in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711768 + + tests/module-test.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit fe8862dc1be42a65d0140b4f3d3ef345def638d9 +Author: Stef Walter +AuthorDate: Sun Nov 10 14:32:17 2013 +0100 +Commit: Stef Walter +CommitDate: Sun Nov 10 22:52:47 2013 +0100 + + utils: Don't free memory owned by glib in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711775 + + glib/tests/utils.c | 1 - + 1 file changed, 1 deletion(-) + +commit 0a02fd9c526f029808b38d1f7b9758e28675ec9d +Author: Stef Walter +AuthorDate: Sun Nov 10 10:54:26 2013 +0100 +Commit: Stef Walter +CommitDate: Sun Nov 10 22:45:04 2013 +0100 + + iochannel-test: Fix leaks in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + tests/iochannel-test.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 44bd2ab07e81016c961a59f0a66f4351ac5822cf +Author: Stef Walter +AuthorDate: Sat Nov 9 20:52:42 2013 +0100 +Commit: Stef Walter +CommitDate: Sun Nov 10 22:44:39 2013 +0100 + + unicode-encoding: Fix leaks in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + tests/unicode-encoding.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit e8cc0966d4a2fb3cf059122b4a4b9479e25604e4 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:51:18 2013 +0100 +Commit: Stef Walter +CommitDate: Sun Nov 10 22:44:12 2013 +0100 + + thread-test: Fix leaks in tests + + This is a test of deprecated functionality and its age is + showing. Doesn't actually do what it says. But fix leaks anyway. + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + tests/thread-test.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit ae1764b4e0dd33d55fac8a5329b0c5d45c4c66fd +Author: Stef Walter +AuthorDate: Sat Nov 9 20:30:11 2013 +0100 +Commit: Stef Walter +CommitDate: Sun Nov 10 22:43:25 2013 +0100 + + mainloop-test: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + tests/mainloop-test.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 83a14d13ec22fad898a5be9aaa66b50536d6be17 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:29:04 2013 +0100 +Commit: Stef Walter +CommitDate: Sun Nov 10 22:42:57 2013 +0100 + + datetime: Fix leak in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + tests/datetime.c | 1 + + 1 file changed, 1 insertion(+) + +commit 5ae5d438a684118556cc8875277d524d6ce9088b +Author: Stef Walter +AuthorDate: Sat Nov 9 20:26:57 2013 +0100 +Commit: Stef Walter +CommitDate: Sun Nov 10 22:42:29 2013 +0100 + + mapping-test: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + tests/mapping-test.c | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +commit fc4630b7ac089fcd1aff1c8376433e971ab193dd +Author: Stef Walter +AuthorDate: Sat Nov 9 20:26:15 2013 +0100 +Commit: Stef Walter +CommitDate: Sun Nov 10 22:41:44 2013 +0100 + + gio-test: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + tests/gio-test.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit ee743674a16f251bb275d6ee59f6da8cbf2b2910 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:25:39 2013 +0100 +Commit: Stef Walter +CommitDate: Sun Nov 10 22:41:29 2013 +0100 + + completion-test: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + tests/completion-test.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit ba56c7b720a88ba096a3325c03457dab9088b3b8 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:25:23 2013 +0100 +Commit: Stef Walter +CommitDate: Sun Nov 10 22:41:16 2013 +0100 + + child-test: Fix leak in test + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + tests/child-test.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 9a67fb903f394fc884fbacd2f54392632db2b898 +Author: Stef Walter +AuthorDate: Sat Nov 9 20:25:07 2013 +0100 +Commit: Stef Walter +CommitDate: Sun Nov 10 22:40:58 2013 +0100 + + asyncqueue-test: Fix leaks in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + tests/asyncqueue-test.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit e52558672610fa12c967448dcabb9a8cfd27179e +Author: Stef Walter +AuthorDate: Thu Nov 7 22:40:59 2013 +0100 +Commit: Stef Walter +CommitDate: Sun Nov 10 22:40:28 2013 +0100 + + unix: Fix memory leak in unix test + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + glib/tests/unix.c | 1 + + 1 file changed, 1 insertion(+) + +commit ab3c55435af3cecaa4b7805e8f6ffe1719e13ba6 +Author: Dan Winship +AuthorDate: Thu Nov 7 22:38:52 2013 +0100 +Commit: Stef Walter +CommitDate: Sun Nov 10 22:40:08 2013 +0100 + + gerror: Don't leak memory when overwrite warning + + Even though we can't always make no-leak guarantees when g_warning() + in this case we're testing this behavior in tests, and it would be + good to be able to valgrind this. + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + glib/gerror.c | 10 ++++++++-- + glib/tests/error.c | 3 --- + 2 files changed, 8 insertions(+), 5 deletions(-) + +commit e74b4351a33aa09ed053922cca907c956cbe61cd +Author: Stef Walter +AuthorDate: Thu Oct 31 14:41:34 2013 +0100 +Commit: Stef Walter +CommitDate: Sun Nov 10 22:39:25 2013 +0100 + + private: Fix memory leak in tests + + Don't use g_private_new(), it's deprecated, and leaks by definition. + + https://bugzilla.gnome.org/show_bug.cgi?id=711751 + + glib/tests/private.c | 14 ++++++-------- + 1 file changed, 6 insertions(+), 8 deletions(-) + +commit ae6dbb35cbf11a363b28f1e86b1f6f2bc4036b4c +Author: Michael Catanzaro +AuthorDate: Sat Nov 9 09:33:42 2013 -0600 +Commit: Michael Catanzaro +CommitDate: Sat Nov 9 09:35:14 2013 -0600 + + giomodule: small typo in documentation + + gio/giomodule.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0cb8454b5c0ba31aa1c8b4915503686bfe5cddeb +Author: Matthias Clasen +AuthorDate: Fri Nov 8 20:57:04 2013 -0500 +Commit: Matthias Clasen +CommitDate: Fri Nov 8 20:57:04 2013 -0500 + + Small documentation improvement + + gio/gsettings.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ca22ac794428c70fb0e11be3358f18b68d755ae3 +Author: Matthias Clasen +AuthorDate: Fri Nov 8 20:45:54 2013 -0500 +Commit: Matthias Clasen +CommitDate: Fri Nov 8 20:45:54 2013 -0500 + + Add an index for new api in glib docs + + docs/reference/glib/glib-docs.xml | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 83d427819778315e4d8b2d6cbc6e758d92733174 +Author: Rico Tzschichholz +AuthorDate: Fri Nov 8 08:15:43 2013 +0100 +Commit: Rico Tzschichholz +CommitDate: Fri Nov 8 08:15:43 2013 +0100 + + Revert "gio/Makefile: make sure to dist gappinfoprivate.h" + + This reverts commit c45b26d61f6539dbf4e202aded08d9614b441f81. + + gio/Makefile.am | 1 - + 1 file changed, 1 deletion(-) + +commit 5627452048fb1925a7bfbabd7d7fba553e4458ca +Author: Michael Catanzaro +AuthorDate: Thu Nov 7 18:39:59 2013 -0600 +Commit: Michael Catanzaro +CommitDate: Thu Nov 7 18:41:29 2013 -0600 + + gstrfuncs: fix small typo in documentation + + glib/gstrfuncs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bda60c3e8b92575520495b8f283ee5ba595da074 +Author: Ryan Lortie +AuthorDate: Thu Nov 7 13:56:56 2013 -0500 +Commit: Ryan Lortie +CommitDate: Thu Nov 7 13:56:56 2013 -0500 + + GAppInfoMonitor: don't try to use NULL hash table + + Don't g_hash_table_iter_init() on a NULL table if we see the app info + monitoring but no monitors have been created yet. + + https://bugzilla.gnome.org/show_bug.cgi?id=711632 + + gio/gappinfo.c | 19 +++++++++++-------- + 1 file changed, 11 insertions(+), 8 deletions(-) + +commit ffbf866d3b3dfae234fbdeef8bab683c14d66e30 +Author: Ryan Lortie +AuthorDate: Tue Oct 29 12:02:44 2013 -0700 +Commit: Ryan Lortie +CommitDate: Thu Nov 7 13:51:05 2013 -0500 + + GApplication: fix bogus testcase + + We had a GApplication testcase that handled both open and commandline. + This only way that this worked was by implementing the commandline + handler without actually setting the HANDLES_COMMAND_LINE flag. + + This behaviour is now invalid, so just rip out the offending part + of the + test. + + https://bugzilla.gnome.org/show_bug.cgi?id=711099 + + gio/gapplicationimpl-dbus.c | 3 ++- + gio/tests/basic-application.c | 23 ----------------------- + gio/tests/gapplication.c | 5 ----- + 3 files changed, 2 insertions(+), 29 deletions(-) + +commit 6e0bbd8adb861b21de24c1701e0de21bae339e73 +Author: Ryan Lortie +AuthorDate: Thu Oct 10 09:28:30 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Nov 7 12:41:27 2013 -0500 + + appinfo: Add some testcases for searching + + https://bugzilla.gnome.org/show_bug.cgi?id=711557 + + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 38 ++++ + gio/tests/apps.c | 58 +++++ + gio/tests/desktop-app-info.c | 242 + +++++++++++++++++++- + .../desktop-files/home/applications/eog.desktop | 11 + + ...c6a4e022b17686306243dada811d550d25eb1fb.desktop | 7 + + .../desktop-files/usr/applications/baobab.desktop | 39 ++++ + .../desktop-files/usr/applications/cheese.desktop | 46 ++++ + .../usr/applications/dconf-editor.desktop | 33 +++ + .../desktop-files/usr/applications/eog.desktop | 43 ++++ + .../usr/applications/evince-previewer.desktop | 28 +++ + .../desktop-files/usr/applications/evince.desktop | 42 ++++ + .../usr/applications/file-roller.desktop | 43 ++++ + .../usr/applications/gcr-prompter.desktop | 18 ++ + .../usr/applications/gcr-viewer.desktop | 10 + + .../desktop-files/usr/applications/gedit.desktop | 83 +++++++ + .../desktop-files/usr/applications/glade.desktop | 56 +++++ + .../usr/applications/gnome-clocks.desktop | 41 ++++ + .../usr/applications/gnome-contacts.desktop | 25 +++ + .../usr/applications/gnome-font-viewer.desktop | 33 +++ + .../usr/applications/gnome-music.desktop | 22 ++ + .../usr/applications/gnome-terminal.desktop | 39 ++++ + .../usr/applications/gucharmap.desktop | 38 ++++ + .../usr/applications/kde4/dolphin.desktop | 27 +++ + .../usr/applications/kde4/kate.desktop | 26 +++ + .../usr/applications/kde4/konqbrowser.desktop | 26 +++ + .../usr/applications/kde4/okular.desktop | 23 ++ + .../desktop-files/usr/applications/mimeinfo.cache | 246 + +++++++++++++++++++++ + .../applications/nautilus-autorun-software.desktop | 19 ++ + .../usr/applications/nautilus-classic.desktop | 15 ++ + .../applications/nautilus-connect-server.desktop | 22 ++ + .../usr/applications/nautilus.desktop | 39 ++++ + .../desktop-files/usr/applications/totem.desktop | 36 +++ + .../desktop-files/usr/applications/yelp.desktop | 39 ++++ + 34 files changed, 1512 insertions(+), 2 deletions(-) + +commit 3d32d5359aefc0c287265c85278a31c7e2ea9b3d +Author: Ryan Lortie +AuthorDate: Tue Nov 5 22:51:48 2013 -0500 +Commit: Ryan Lortie +CommitDate: Thu Nov 7 12:41:27 2013 -0500 + + Add g_desktop_app_info_search() + + The first time this function is called we load all of the keyfiles in + the directory, ignoring the 'Hidden' ones and build an index out + of the + interesting fields using g_str_tokenize_and_fold(). + + We do prefix matching on the tokens to find relevent desktop files. + + Right now this is implemented as a hashtable that we iterate over, + checking prefixes on each token. This could possibly be sped up by + creating an array, but it's already pretty fast... + + https://bugzilla.gnome.org/show_bug.cgi?id=711557 + + gio/gdesktopappinfo.c | 525 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gdesktopappinfo.h | 2 + + 2 files changed, 527 insertions(+) + +commit c45b26d61f6539dbf4e202aded08d9614b441f81 +Author: Ryan Lortie +AuthorDate: Thu Nov 7 12:11:55 2013 -0500 +Commit: Ryan Lortie +CommitDate: Thu Nov 7 12:41:27 2013 -0500 + + gio/Makefile: make sure to dist gappinfoprivate.h + + gio/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit ffb39bff6fc76051901dddbb179afdf83baafc27 +Author: Rico Tzschichholz +AuthorDate: Thu Nov 7 17:37:13 2013 +0100 +Commit: Rico Tzschichholz +CommitDate: Thu Nov 7 17:37:13 2013 +0100 + + gio: Add gappinfoprivate.h to Makefile.am + + In addition to e55d33edc1336ddc6d5cdfa0e3003a69a5812d26 + + gio/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit a004fc80598c2b14f2e3780fb0f94fc9f6faf263 +Author: Dimitris Spingos +AuthorDate: Thu Nov 7 17:19:09 2013 +0200 +Commit: Dimitris Spingos +CommitDate: Thu Nov 7 17:19:09 2013 +0200 + + Updated Greek translation + + po/el.po | 1320 + +++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 784 insertions(+), 536 deletions(-) + +commit 838b49ead77c35d94fa16d48a6d7271bab082a71 +Author: Patrick Welche +AuthorDate: Thu Nov 7 10:58:46 2013 +0000 +Commit: Colin Walters +CommitDate: Thu Nov 7 07:28:27 2013 -0500 + + configure: test(1) uses = to test for string equality + + https://bugzilla.gnome.org/show_bug.cgi?id=711600 + + m4macros/glibtests.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 87e6db8deb96565cf4336c187e0dcec8b014cae2 +Author: Chun-wei Fan +AuthorDate: Tue Oct 29 14:55:27 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Nov 7 09:25:54 2013 +0800 + + codegen.py: Rearrange GLib Version Check + + ...so that the generated code will build on all platforms, as + compilers + like Visual C++ does not like #ifdef checks during a definition/use of + a macro. + + https://bugzilla.gnome.org/show_bug.cgi?id=711049 + + gio/gdbus-2.0/codegen/codegen.py | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +commit e55d33edc1336ddc6d5cdfa0e3003a69a5812d26 +Author: Ryan Lortie +AuthorDate: Wed Sep 25 09:19:43 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed Nov 6 11:26:53 2013 -0500 + + Add GAppInfoMonitor + + This is a simple object that emits a "change" signal when the + installed + applications may have changed in some way. + + https://bugzilla.gnome.org/show_bug.cgi?id=711556 + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 13 +++ + docs/reference/gio/gio.types | 1 + + gio/gappinfo.c | 225 + ++++++++++++++++++++++++++++++++++++ + gio/gappinfo.h | 14 +++ + gio/gappinfoprivate.h | 28 +++++ + gio/gdesktopappinfo.c | 4 + + 7 files changed, 286 insertions(+) + +commit 86ce3bf48e40756a360b13e18493a15d8d1bf5ae +Author: Ryan Lortie +AuthorDate: Sat Jul 27 16:04:56 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed Nov 6 10:56:25 2013 -0500 + + gdesktopappinfo: keep a list of files in the dirs + + In each DesktopFileDir, store a list of desktop files for that + directory. This speeds up opening desktop files by name because + we can + skip statting in directories that we know don't have the file and also + speeds up _get_all() because we can avoid enumeration. + + This also improves our support for dealing with names like + 'kde4/kate.desktop' (equivalent to kde4-kate.desktop) since we + find out + about all of these files are the start and don't need to guess about + which '-' to change to a '/'. It also means that we can easily deal + with more than one level of such prefixes. + + We use a file monitor to watch for changes, invalidating our + lists when + we notice them. + + https://bugzilla.gnome.org/show_bug.cgi?id=711520 + + gio/gdesktopappinfo.c | 434 + ++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 328 insertions(+), 106 deletions(-) + +commit 27da0799b8a2762e6ae44d0721014eeed8c36489 +Author: Stef Walter +AuthorDate: Thu Oct 31 23:07:10 2013 +0100 +Commit: Stef Walter +CommitDate: Wed Nov 6 10:14:57 2013 +0100 + + signals: Fix memory leaks in signals unit tests + + https://bugzilla.gnome.org/show_bug.cgi?id=627423 + + gobject/tests/signals.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit b49344c1d389035066aed0c4392c18990afe68a4 +Author: Stef Walter +AuthorDate: Thu Oct 31 23:06:27 2013 +0100 +Commit: Stef Walter +CommitDate: Wed Nov 6 10:14:30 2013 +0100 + + qdata: Fix leak in qdata unit tests + + https://bugzilla.gnome.org/show_bug.cgi?id=627423 + + gobject/tests/qdata.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 267222873399cadb0feef4009b26fb1109453fcd +Author: Stef Walter +AuthorDate: Thu Oct 31 14:39:05 2013 +0100 +Commit: Stef Walter +CommitDate: Wed Nov 6 10:14:16 2013 +0100 + + gerror: Don't leak when warning about overwriting an error + + While not strictly necessary, this fixes a false positive + leak in the tests. + + https://bugzilla.gnome.org/show_bug.cgi?id=627423 + + glib/gerror.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +commit 92b71825fd6b62e339b89159b2cfba8e5ca839c4 +Author: Ryan Lortie +AuthorDate: Sun Mar 24 21:55:08 2013 -0400 +Commit: Stef Walter +CommitDate: Wed Nov 6 10:12:50 2013 +0100 + + tests: fix leak in mainloop test + + Properly unref a pair of GSources in the unix-fd mainloop test. + + valgrind was reporting these as 'still reachable' before (possibly due + to some residual pointers somewhere in memory), but when running with + G_DEBUG=cleanup they were properly reported as leaked. + + glib/tests/mainloop.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit eef0d3c0b8ca541e48a8a9d7ec39ed40a717db6f +Author: Ryan Lortie +AuthorDate: Sun Mar 24 21:25:26 2013 -0400 +Commit: Stef Walter +CommitDate: Wed Nov 6 10:12:40 2013 +0100 + + grand: restructure a bit + + Instead of having lots of 'if NULL then allocate' code segments + for the + global GRand instance, move it to a single getter function that + everyone + calls. + + glib/grand.c | 38 +++++++++++++++++--------------------- + 1 file changed, 17 insertions(+), 21 deletions(-) + +commit 70410b322c6a7cfa047d2a4049d0c810e9a52da8 +Author: Ryan Lortie +AuthorDate: Sun Mar 24 21:18:30 2013 -0400 +Commit: Stef Walter +CommitDate: Wed Nov 6 10:09:29 2013 +0100 + + gslice: don't misuse g_mutex_init() + + We were using g_mutex_init() to initialise a pair of mutexes in static + storage, but we should only do that for mutexes that are part of + allocated structures. + + glib/gslice.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 4af135ce49e5c8aa8231e0c9e24f04f5cd917468 +Author: Philip Withnall +AuthorDate: Tue Nov 5 16:43:26 2013 +0000 +Commit: Philip Withnall +CommitDate: Tue Nov 5 16:43:26 2013 +0000 + + garray: Note lack of bounds checking in g_ptr_array_index() + documentation + + glib/garray.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit f4931142806556123ce75dcf8b84e60dc7cd4e3c +Author: Chun-wei Fan +AuthorDate: Mon Nov 4 16:32:01 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 4 22:55:30 2013 +0800 + + gio/tests: Clean up inclusion of unistd.h + + Include unistd.h only on *NIX and define items as necessary on + Windows, + also replace instances of ssize_t with the GLib-equivilant gssize + so to fix + the build on platforms that do not have ssize_t, such as Visual C++. + + https://bugzilla.gnome.org/show_bug.cgi?id=711047 + + gio/tests/filter-cat.c | 13 +++++++++++-- + gio/tests/gsubprocess-testprog.c | 4 ++-- + gio/tests/readwrite.c | 5 ++++- + gio/tests/resolver.c | 2 ++ + gio/tests/win32-streams.c | 1 - + 5 files changed, 19 insertions(+), 6 deletions(-) + +commit d262b6fe0ca851a47fede2e624cec4aa041f2f14 +Author: Chun-wei Fan +AuthorDate: Mon Nov 4 13:07:52 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 4 22:52:02 2013 +0800 + + glib/tests: Clean up inclusion of unistd.h + + Include unistd.h only when G_OS_UNIX is defined (or when G_OS_WIN32 + is not + defined). This will avoid including unistd.h unconditionally and/or + unecessarily, which may cause problems in certain scenarios, such + as when + building the tests on Visual C++, which does not come with a + unistd.h and + MinGW, where unistd.h is essentially a wrapper for io.h and process.h. + + https://bugzilla.gnome.org/show_bug.cgi?id=711047 + + glib/tests/base64.c | 4 +--- + glib/tests/checksum.c | 4 +--- + glib/tests/gwakeuptest.c | 4 +++- + glib/tests/hmac.c | 4 +--- + glib/tests/mappedfile.c | 3 +-- + glib/tests/node.c | 10 +++------- + glib/tests/protocol.c | 5 +++-- + glib/tests/thread.c | 5 +---- + glib/tests/timeout.c | 2 ++ + 9 files changed, 16 insertions(+), 25 deletions(-) + +commit 1079d30e1b5b9002ca5d4e5bef398e855a7c115f +Author: Chun-wei Fan +AuthorDate: Mon Nov 4 12:23:30 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 4 22:51:39 2013 +0800 + + glib/tests/fileutils.c: Include unistd.h on *NIX only + + ...and fix the test on non-English Windows, as gettext on Windows does + not honor LC_ALL = "C" (the default CRT behavior) but requires using + SetThreadLocale() to set the locale as it picks up the user's + environment + and the thread's locale. Without doing so the + g_format_size_for_display() + et al will display the translated message if the gettext translations + have + been installed before, causing the test_format_size_for_display + tests to + fail. + + https://bugzilla.gnome.org/show_bug.cgi?id=711047 + + glib/tests/fileutils.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +commit 20f873a0bcafe9d8d929be98ea72a0d0608d076a +Author: Chun-wei Fan +AuthorDate: Tue Oct 29 19:12:38 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 4 10:31:28 2013 +0800 + + tests/libmoduletestplugins*.c: Update Prototypes + + Visual C++ does not like function declarations being different from + their prototypes, so make the prototypes match the declarations by + decorating them with G_MODULE_EXPORT. + + https://bugzilla.gnome.org/show_bug.cgi?id=711047 + + tests/libmoduletestplugin_a.c | 10 +++++----- + tests/libmoduletestplugin_b.c | 12 ++++++------ + 2 files changed, 11 insertions(+), 11 deletions(-) + +commit 39a62a064b55eead4142c5585a25b86c57759ec5 +Author: Chun-wei Fan +AuthorDate: Tue Oct 29 19:17:32 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 4 10:30:57 2013 +0800 + + gio/test/resources.c: Fix for Windows + + We need to use g_content_type_get_mime_type() to look up the mime + type of + the file from the registry on the content type that was acquired on + Windows, as g_file_info_get_content_type() does not acquire the + file mime type (unlike on *NIX). + + g_content_type_get_mime_type() on *NIX is more or less an no-op as it + simply returns the g_strdup()-ed version of the passed-in content + type. + + This will enable the resources test to pass on Windows. + + https://bugzilla.gnome.org/show_bug.cgi?id=711047 + + gio/tests/resources.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 64909ff7409968b83b0961e053eac98a03bd30cf +Author: Ognyan Tonchev +AuthorDate: Tue Oct 29 16:39:38 2013 +0100 +Commit: Dan Winship +CommitDate: Sun Nov 3 18:11:55 2013 -0500 + + gmain: make g_source_add_child_source() thread safe + + g_source_add_child_source() releases the context lock before attaching + child_source to context. And this causes trouble if parent source is + blocked and g_main_dispatch() manages to lock the context mutex + and call + unblock_source() before child_source gets attached to context. + To fix this we call g_source_attach_unlocked() before releasing the + context mutex. + + https://bugzilla.gnome.org/show_bug.cgi?id=711064 + + glib/gmain.c | 21 +++++++++++---------- + 1 file changed, 11 insertions(+), 10 deletions(-) + +commit 89f961583580b16b5b67b2138d609ffd52f59c75 +Author: Ross Lagerwall +AuthorDate: Tue Oct 29 06:02:59 2013 +0200 +Commit: Ross Lagerwall +CommitDate: Sun Nov 3 06:47:33 2013 +0200 + + gio: Don't allow skipping past the end of GLocalFileInputStream + + The overridden implementation of the skip method for + GLocalFileInputStream allows skipping past the end of the file + which is + inconsistent with the documentation. Prevent this by first seeking to + the end of the file and then seeking backwards from there as much as + is necessary. + + https://bugzilla.gnome.org/show_bug.cgi?id=711048 + + gio/glocalfileinputstream.c | 23 +++++++++++++++++++---- + gio/tests/readwrite.c | 12 ++++++++++++ + 2 files changed, 31 insertions(+), 4 deletions(-) + +commit dc172f06162398b51d230511756292154bace423 +Author: Dan Winship +AuthorDate: Sat Nov 2 12:18:45 2013 -0400 +Commit: Dan Winship +CommitDate: Sat Nov 2 12:23:30 2013 -0400 + + gmacros.h: fix C99 check + + G_STRFUNC was checking __STDC_VERSION__ against the wrong value + (though it didn't actually matter, since __STDC_VERSION__ wasn't + defined in C90, so the check still only matched C99 and above anyway). + + glib/gmacros.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d0cd2e8ed036f4eff40c6de7a3b4a3361e48295e +Author: Fran Diéguez +AuthorDate: Fri Nov 1 12:52:43 2013 +0100 +Commit: Fran Diéguez +CommitDate: Fri Nov 1 14:51:30 2013 +0100 + + Updated Galician translations + + po/gl.po | 237 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 117 insertions(+), 120 deletions(-) + +commit aff483616c950fce2c8b466b5d0e8fbe2374fb8c +Author: Fran Diéguez +AuthorDate: Mon Oct 28 01:13:41 2013 +0100 +Commit: Fran Diéguez +CommitDate: Fri Nov 1 12:50:41 2013 +0100 + + Updated Galician translations + + po/gl.po | 785 + +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 488 insertions(+), 297 deletions(-) + +commit e6d19a27a3242ebf7ac23d3999e325f6a8d9ea39 +Author: Daniel Mustieles +AuthorDate: Thu Oct 31 14:36:50 2013 +0100 +Commit: Daniel Mustieles +CommitDate: Thu Oct 31 14:36:50 2013 +0100 + + Updated Spanish translation + + po/es.po | 825 + ++++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 524 insertions(+), 301 deletions(-) + +commit 6ed60a936cf4a220519195c456c3eaa5ddec66b4 +Author: Murray Cumming +AuthorDate: Thu Oct 31 13:15:01 2013 +0100 +Commit: Murray Cumming +CommitDate: Thu Oct 31 13:15:01 2013 +0100 + + docs: GDataTime: *_add_*(): Mention that you can subtract. + + Because this was not obvious to at least one person on irc. + + glib/gdatetime.c | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +commit e2fcb77cb04b4b86768d56d8fccfb36f1a5d9451 +Author: Ross Lagerwall +AuthorDate: Wed Oct 30 20:34:14 2013 +0200 +Commit: Ross Lagerwall +CommitDate: Thu Oct 31 06:31:43 2013 +0200 + + gio: Clean up trashinfo file if trashing fails + + https://bugzilla.gnome.org/show_bug.cgi?id=687202 + + gio/glocalfile.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit e94df7cfc279f38563e80e5a2b48a1bbd8d2b71b +Author: Xavier Claessens +AuthorDate: Mon Oct 28 17:02:44 2013 -0400 +Commit: Xavier Claessens +CommitDate: Tue Oct 29 13:42:35 2013 -0400 + + Tests: It is useless to unset "DBUS_SESSION_BUS_ADDRESS" manually + + If the goal is to make sure we don't have a dbus connection, it has + to call g_test_dbus_unset() instead which is much more complete. + + In this case, g_test_dbus_unset() is called already, so it should be + fine. + + https://bugzilla.gnome.org/show_bug.cgi?id=697348 + + gio/tests/gapplication.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit 06fbdb04d5001eaf9abadb872185d7b3e1593e08 +Author: Xavier Claessens +AuthorDate: Mon Oct 28 14:54:22 2013 -0400 +Commit: Xavier Claessens +CommitDate: Tue Oct 29 13:42:14 2013 -0400 + + GTestDBus: Make sure only DBUS_SESSION_BUS_ADDRESS is set by default + + g_test_dbus_unset() now also unset DBUS_STARTER_ADDRESS and + DBUS_STARTER_BUS_TYPE. + + https://bugzilla.gnome.org/show_bug.cgi?id=697348 + + gio/gtestdbus.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 940fa98290812789d095d93ff1c550cd86fb2428 +Author: Xavier Claessens +AuthorDate: Mon Oct 28 17:18:54 2013 -0400 +Commit: Xavier Claessens +CommitDate: Tue Oct 29 13:30:22 2013 -0400 + + Tests: add session_bus_run() and use it where possible + + This is to avoid having again the subtil bug in dbus-appinfo.c: + session_bus_down() was called before g_test_run() so the test was + running on the user's dbus session. + + https://bugzilla.gnome.org/show_bug.cgi?id=697348 + + gio/tests/dbus-appinfo.c | 6 +----- + gio/tests/gdbus-export.c | 11 +---------- + gio/tests/gdbus-introspection.c | 10 +--------- + gio/tests/gdbus-proxy.c | 5 +---- + gio/tests/gdbus-sessionbus.c | 11 +++++++++++ + gio/tests/gdbus-sessionbus.h | 1 + + gio/tests/gdbus-test-codegen.c | 11 +---------- + 7 files changed, 17 insertions(+), 38 deletions(-) + +commit 5280c03368299bbb4f721f3e47213aa01d9d0142 +Author: Colin Walters +AuthorDate: Tue Oct 29 09:47:34 2013 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 29 09:37:06 2013 -0700 + + tests/gdbus-introspection: Add a less trivial test case for + _IGNORE_QUALIFIED + + This is distilled from PackageKit which currently aborts on startup. + + https://bugzilla.gnome.org/show_bug.cgi?id=665634 + + gio/tests/gdbus-introspection.c | 25 ++++++++++++------------- + 1 file changed, 12 insertions(+), 13 deletions(-) + +commit daff84e23c4870f674293a90f36d79f4587d20cc +Author: Ryan Lortie +AuthorDate: Tue Oct 29 09:01:32 2013 -0700 +Commit: Ryan Lortie +CommitDate: Tue Oct 29 09:37:06 2013 -0700 + + GMarkup: clear attributes on ignorned tags + + Make sure that if we ignore a tag then we also clear the attributes + that + we already collected so that they don't end up on the next unignored + tag + opening. + + Also add some extra brackets for clarity (it doesn't make any + difference + -- I just think it reads nicer this way). + + https://bugzilla.gnome.org/show_bug.cgi?id=665634 + + glib/gmarkup.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 425f307b01a41e6cd4922b037105a66293863cce +Author: Lars Uebernickel +AuthorDate: Mon Oct 28 23:55:19 2013 -0700 +Commit: Lars Uebernickel +CommitDate: Tue Oct 29 09:01:35 2013 -0700 + + gtk-notification-backend: remove unused variable + + A reference to the session bus is now stored in GNotificationBackend. + Remove the extraneous one in the gtk backend and stop using it in + withdraw_notification. + + https://bugzilla.gnome.org/show_bug.cgi?id=711051 + + gio/ggtknotificationbackend.c | 18 +----------------- + 1 file changed, 1 insertion(+), 17 deletions(-) + +commit 1a037b140893433757400267d00a3a4437c3cdb7 +Author: Ross Lagerwall +AuthorDate: Tue Oct 29 14:53:38 2013 +0200 +Commit: Ross Lagerwall +CommitDate: Tue Oct 29 17:00:30 2013 +0200 + + gio: Clear error properly to prevent crash + + https://bugzilla.gnome.org/show_bug.cgi?id=711070 + + gio/gfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c8aba61713ec0f674fa0dc986db3b2db3cdd0c41 +Author: Ryan Lortie +AuthorDate: Mon Oct 28 11:44:16 2013 -0700 +Commit: Colin Walters +CommitDate: Tue Oct 29 10:49:48 2013 -0400 + + GCancellable: drop lock for callback during connect() + + Don't hold the lock when calling the user's callback during + g_cancellable_connect() for the case that the cancellable has already + fired. + + Taken from a patch by Alex Larsson. + + Doc updates from Colin Walters. + + https://bugzilla.gnome.org/show_bug.cgi?id=705395 + + gio/gcancellable.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit 61e8e1cd02cc9b9ae8917262ecc17633312b7683 +Author: Chun-wei Fan +AuthorDate: Tue Oct 29 14:49:13 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Oct 29 22:44:11 2013 +0800 + + gio/gsubprocess.c: Use g_snprintf() + + snprintf() is unfortunately still not universally available, so use + g_snprintf() to ensure the build works on all platforms. + + https://bugzilla.gnome.org/show_bug.cgi?id=711049 + + gio/gsubprocess.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e08ef9c367c4ad7c7d18b33b26465e8afbc895f3 +Author: Chun-wei Fan +AuthorDate: Tue Oct 29 12:46:32 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Oct 29 12:46:32 2013 +0800 + + gobject/gvaluetransform.c: Cleanup #ifndef _MSC_VER + + The two casts that were unsupported with Visual Studio is now properly + supported, so build this code like how the other compilers build + the code. + + gobject/gvaluetransform.c | 3 --- + 1 file changed, 3 deletions(-) + +commit b227528f3291c8c4cfdfea057917edec63597ff8 +Author: Ryan Lortie +AuthorDate: Mon Oct 28 20:48:53 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 20:50:01 2013 -0700 + + GSettingsSchemaSource: fix parameter name in header + + list_schemas() had the parameters called 'recursive' and + 'non-recursive' + in the header instead of 'relocatable'. Fix that. + + gio/gsettingsschema.c | 17 ++++++++--------- + gio/gsettingsschema.h | 4 ++-- + 2 files changed, 10 insertions(+), 11 deletions(-) + +commit abb9a746f4cc2c67a1dd96fa35e8d20bebe81c4f +Author: Ryan Lortie +AuthorDate: Mon Oct 28 14:49:14 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 18:11:46 2013 -0700 + + exporter: give error on Describe of missing action + + If someone calls org.gtk.Actions.Describe on a non-existent action + then + return an exception instead of a trivial description (disabled, no + state, etc.). + + https://bugzilla.gnome.org/show_bug.cgi?id=687185 + + gio/gactiongroupexporter.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e275b8bc6c48aa7c894cb4f53bd1ee95850eb801 +Author: Ryan Lortie +AuthorDate: Mon Oct 28 14:49:14 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 18:08:21 2013 -0700 + + exporter: give error on Describe of missing action + + If someone calls org.gtk.Actions.Describe on a non-existent action + then + return an exception instead of a trivial description (disabled, no + state, etc.). + + https://bugzilla.gnome.org/show_bug.cgi?id=687185 + + gio/gactiongroupexporter.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 83869120bba2aa745a1b23fb415ab0eddd6f9327 +Author: Ryan Lortie +AuthorDate: Mon Oct 28 14:59:26 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 18:08:16 2013 -0700 + + GSimpleAction: don't allow changing state type + + g_object_set() allowed us to bypass the usual checks that the state + doesn't change type and also leaked. + + Fix that up by turning the state into a construct property (so that it + always gets set once during construction, even if only to NULL) and + then route the further sets through the C API so that they are subject + to the same checks. + + https://bugzilla.gnome.org/show_bug.cgi?id=696424 + + gio/gsimpleaction.c | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +commit 908d7d6d6abb53a00e20bab70df7099ecd66890b +Author: Ryan Lortie +AuthorDate: Mon Oct 28 15:30:25 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 15:30:25 2013 -0700 + + glib-compile-schemas: ignore qualified tags/attrs + + Ignore qualified (in the XML namespace sense) tags and attributes when + compiling GSettings schemas. + + This will allow people to add custom tags and attributes to their + schemas + without tripping up the compiler. + + https://bugzilla.gnome.org/show_bug.cgi?id=635641 + + gio/glib-compile-schemas.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 9933a9f90477bf960f7f9c357253d1e4c78e5db5 +Author: Ryan Lortie +AuthorDate: Mon Oct 28 15:27:29 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 15:28:51 2013 -0700 + + GDBus: ignore qualified XML tags and attributes + + Ignore qualified (in the XML namespace sense) tags and attributes when + parsing D-Bus introspection XML. + + This will allow people to add custom tags and attributes to their + D-Bus + interfaces without tripping up GDBus. + + https://bugzilla.gnome.org/show_bug.cgi?id=665634 + + gio/gdbusintrospection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1bc98830c5a3ffe5a43e5e05730064cb149f25bd +Author: Ryan Lortie +AuthorDate: Mon Oct 28 14:11:05 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 15:24:58 2013 -0700 + + tests: add a ignore-qualified markup-collect case + + Add a case to markup-collect that exercises the new IGNORE_QUALIFIED + flag. + + https://bugzilla.gnome.org/show_bug.cgi?id=665634 + + glib/tests/markup-collect.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 474d91566a7db52ee1776933ea5c4b6276b1280a +Author: Ryan Lortie +AuthorDate: Mon Oct 28 14:05:51 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 15:24:58 2013 -0700 + + GMarkup: add G_MARKUP_IGNORE_QUALIFIED + + Add a flag to GMarkupParserFlags to ignore qualified tags (along with + their contents) and attributes. + + This will provide a nice way for some of our parsers (GDBus + introspection, GSettings schema, etc) to ignore additional tags that + users have added to their files, under a different namespace. + + https://bugzilla.gnome.org/show_bug.cgi?id=665634 + + glib/gmarkup.c | 36 +++++++++++++++++++++++++++++++----- + glib/gmarkup.h | 7 ++++++- + 2 files changed, 37 insertions(+), 6 deletions(-) + +commit cbccbaeacfbde66f4b611b37752b0d96e77ca91e +Author: Ryan Lortie +AuthorDate: Mon Oct 28 13:56:26 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 15:24:58 2013 -0700 + + GMarkup: share some common code for closing tags + + The code for dealing with and the second half of was + largely duplicated. We can share a lot of it by using a common + function. + + This slightly changes the behaviour of the parser under error + circumstances: previously the parser would deal with ' +AuthorDate: Mon Oct 28 10:12:29 2013 +0100 +Commit: Stef Walter +CommitDate: Mon Oct 28 21:31:34 2013 +0100 + + test: g_debug messages shouldn't affect g_assert_expected_messages + + Debug messages are meant to give insight into how a process is + proceeding, and are unpredictable in nature. They also often have + line numbers in them. + + This patch ignores debug messages in + g_test_assert_expected_messages(). + + https://bugzilla.gnome.org/show_bug.cgi?id=710991 + + glib/gmessages.c | 12 +++++++++--- + glib/tests/testing.c | 14 ++++++++++++++ + 2 files changed, 23 insertions(+), 3 deletions(-) + +commit 0d89d38cac5dddeade2c3bd21a27b6d8de997fa0 +Author: Ryan Lortie +AuthorDate: Mon Oct 28 12:10:13 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 12:10:13 2013 -0700 + + GSettings: fix for loop in 'extends' functionality + + Obvious mistake :( + + gio/gsettingsschema.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit b30486985bfceeed206fb285b8377596e374602e +Author: Ryan Lortie +AuthorDate: Mon Oct 28 10:54:08 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 11:49:10 2013 -0700 + + gsettings(1): stop using deprecated APIs + + Stop using the recently-deprecated GSettings APIs. + + Use the GSettingsSchema-based APIs instead. + + This fixes a number of bugs and also a net reduction of code. In + particular, list-schemas will now work in context of a given + --schemadir + argument. + + https://bugzilla.gnome.org/show_bug.cgi?id=695558 + + gio/gsettings-tool.c | 105 + ++++++++++++++++++++------------------------------- + 1 file changed, 41 insertions(+), 64 deletions(-) + +commit a1a4dbf6ff94204dd61ec7944c854261f8a2dc3b +Author: Ryan Lortie +AuthorDate: Mon Oct 28 10:23:29 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 11:48:32 2013 -0700 + + gsettings(1): use global variables + + The number of arguments passed to each function is about to + increase, so + just use global variables instead. + + This is a commandline tool, after all... + + https://bugzilla.gnome.org/show_bug.cgi?id=695558 + + gio/gsettings-tool.c | 174 + +++++++++++++++++++++++---------------------------- + 1 file changed, 77 insertions(+), 97 deletions(-) + +commit bcb030a4745d9d88a6150146a37e732a5c7c5d4f +Author: Ryan Lortie +AuthorDate: Sun Oct 27 17:03:04 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 11:31:48 2013 -0700 + + GSettingsSchemaKey: add introspection APIs + + Add g_settings_schema_has_key() and _get_range(), _range_check(), + _get_value_type(), _get_default_value() methods on GSettingsSchemaKey. + + Deprecate the equivalent APIs on GSettings. + + https://bugzilla.gnome.org/show_bug.cgi?id=683017 + + docs/reference/gio/gio-sections.txt | 7 ++ + gio/gsettings.c | 80 ++------------ + gio/gsettings.h | 4 +- + gio/gsettingsschema-internal.h | 4 - + gio/gsettingsschema.c | 212 + ++++++++++++++++++++++++++++++------ + gio/gsettingsschema.h | 13 +++ + 6 files changed, 208 insertions(+), 112 deletions(-) + +commit c0865fbaf25b3666808b0c044c972c3dd76d397e +Author: Ryan Lortie +AuthorDate: Mon Oct 28 10:23:29 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 10:23:29 2013 -0700 + + bump version + + dconf needs the new version with read_user_value() on the backend API. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bebdfb8e6264f61ffefce3ce297f860909ee2ea3 +Author: Ryan Lortie +AuthorDate: Sun Oct 27 10:34:01 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 10:19:49 2013 -0700 + + GSettings: add getters for user/default value + + Add two new APIs: g_settings_get_user_value() and + g_settings_get_default_value(). Together, these should allow the + inspection of all interesting cases of "is this key set?" and "what + would happen if I reset this key?" + + https://bugzilla.gnome.org/show_bug.cgi?id=668233 + + docs/reference/gio/gio-sections.txt | 2 + + gio/gsettings.c | 100 + ++++++++++++++++++++++++++++++++++++ + gio/gsettings.h | 7 +++ + 3 files changed, 109 insertions(+) + +commit 2d06dbeef185d25c8f4af2936d371c8ea717331b +Author: Ryan Lortie +AuthorDate: Sun Oct 27 10:33:08 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 10:19:49 2013 -0700 + + GSettings: small internal refactor + + Add two boolean parameters to our internal getter utility function in + anticipation of the coming addition of g_settings_get_user_value() and + g_settings_get_default_value() APIs. + + https://bugzilla.gnome.org/show_bug.cgi?id=668233 + + gio/gsettings.c | 21 +++++++++++++-------- + 1 file changed, 13 insertions(+), 8 deletions(-) + +commit 84a6e651c208971e810d04c1ab08bed6a5f58905 +Author: Ryan Lortie +AuthorDate: Sun Oct 27 09:42:32 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 10:19:49 2013 -0700 + + GSettingsBackend: add read_user_value() API + + This will get the 'user' value from the database (ie: the one that + the user has + control over). + + Provide a default implementation that chains to ->read(). That will + work for + all of our internal backends which don't have a concept of layering or + lockdown. + + The delayed backend implments "user value" by returning anything + that's + in the changeset (incuding an explicit NULL) or chaining up otherwise. + + We will use this for g_settings_get_user_value(). + + https://bugzilla.gnome.org/show_bug.cgi?id=668233 + + gio/gdelayedsettingsbackend.c | 27 ++++++++++++++++++++++++ + gio/gsettingsbackend.c | 47 + ++++++++++++++++++++++++++++++++++++++++++ + gio/gsettingsbackend.h | 6 +++++- + gio/gsettingsbackendinternal.h | 3 +++ + 4 files changed, 82 insertions(+), 1 deletion(-) + +commit d567aa51149186e4675e01a5f11afb0360917da0 +Author: Philip Withnall +AuthorDate: Mon Oct 28 17:07:49 2013 +0000 +Commit: Philip Withnall +CommitDate: Mon Oct 28 17:07:49 2013 +0000 + + gio: Remove an unused variable from Makefile.am + + RESOLVER_LIBADD was not defined anywhere (its functionality has + migrated to NETWORK_LIBS instead). + + gio/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f2c4eb8cbb20424a5e715b7f423d96ba9a30ac7f +Author: Emmanuele Bassi +AuthorDate: Mon Oct 14 19:41:54 2013 +0100 +Commit: Colin Walters +CommitDate: Mon Oct 28 12:47:16 2013 -0400 + + docs: Mention that generated code should not be kept + + Code generated by gdbus-codegen should neither be checked in into + revision control, nor should be distributed. + + https://bugzilla.gnome.org/show_bug.cgi?id=710133 + + docs/reference/gio/gdbus-codegen.xml | 5 +++++ + 1 file changed, 5 insertions(+) + +commit e547d14b7043836c59166af1d5497cb8f73caff6 +Author: Emmanuele Bassi +AuthorDate: Mon Oct 14 19:40:53 2013 +0100 +Commit: Colin Walters +CommitDate: Mon Oct 28 12:47:16 2013 -0400 + + gdbus-codegen maintains ABI for type structures + + Make it explicit, to avoid changes that could potentially lead to + breakage in user code. + + https://bugzilla.gnome.org/show_bug.cgi?id=710133 + + docs/reference/gio/gdbus-codegen.xml | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 1b08980b48df4bcf973d3e308780dfdb3a62e9fa +Author: Emmanuele Bassi +AuthorDate: Mon Oct 14 19:30:21 2013 +0100 +Commit: Colin Walters +CommitDate: Mon Oct 28 12:47:16 2013 -0400 + + gdbus-codegen: Take into consideration MAX_ALLOWED for private data + + The G_ADD_PRIVATE() macro, and the auto-generated + get_instance_private() + internal function, should be used conditionally depending on the + maximum + allowed version of GLib, as defined by the GLIB_VERSION_MAX_ALLOWED + pre-processor symbol. + + This allows generating code that can be compiled in projects that wish + to use an older API version of GLib through the use of the + GLIB_VERSION_MAX_ALLOWED symbol. + + https://bugzilla.gnome.org/show_bug.cgi?id=710133 + + gio/gdbus-2.0/codegen/codegen.py | 29 ++++++++++++++++++++++++++--- + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 6 +++++- + 3 files changed, 32 insertions(+), 4 deletions(-) + +commit 066df98849e890761a39361a4f5267ae3faa12b0 +Author: Ryan Lortie +AuthorDate: Mon Oct 28 09:29:15 2013 -0700 +Commit: Ryan Lortie +CommitDate: Mon Oct 28 09:44:05 2013 -0700 + + g_settings_schema_list: some fixes + + Prevent a crash in the case that gvdb_table_list() returns NULL (ie: + because a schema has no keys). + + Stop a memory leak caused by pointlessly stealing keys from a + hashtable + (after we quarked them already). + + Stop allocating an extra entry at the end of an array for a terminator + (that we never wrote anyway) when all functions using this API + refer to + the out-parameter length array. + + https://bugzilla.gnome.org/show_bug.cgi?id=711016 + + gio/gsettingsschema.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 5616e03f7a89a7dc83438b82e71d31e6456d2675 +Author: Matthias Clasen +AuthorDate: Mon Oct 28 12:31:31 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 28 12:32:04 2013 -0400 + + Fix handling of icons in GNotification + + The fdo backend was sending a uri where a file path + was expected. + + gio/gfdonotificationbackend.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 65af7c47fff4ab04f26d6c8e33c6a01e19139613 +Author: Stef Walter +AuthorDate: Wed Nov 28 22:01:21 2012 +0100 +Commit: Stef Walter +CommitDate: Mon Oct 28 09:36:26 2013 +0100 + + Add a request_certificate virtual method to GTlsInteraction + + This allows GTlsConnection implementations to request a certificate + from the user. + + Fix ups by Dan Winship + + https://bugzilla.gnome.org/show_bug.cgi?id=637257 + + docs/reference/gio/gio-sections.txt | 7 +- + gio/gioenums.h | 14 + + gio/gtlsinteraction.c | 390 ++++++++++++++++++++++++--- + gio/gtlsinteraction.h | 47 +++- + gio/tests/Makefile.am | 2 + + gio/tests/tls-interaction.c | 508 + ++++++++++++++++++++++++++++++++---- + 6 files changed, 867 insertions(+), 101 deletions(-) + +commit 1fba61981a80c7a536113ba55f5a6acee8cd230c +Author: Matthew Barnes +AuthorDate: Sun Oct 27 17:26:33 2013 -0700 +Commit: Ryan Lortie +CommitDate: Sun Oct 27 17:27:44 2013 -0700 + + GKeyFileSettingsBackend: ignore file deletions + + Ignore the keyfile being deleted (ie: by the user) instead of + reporting + it to the application as all values being reverted back to their + originals. + + https://bugzilla.gnome.org/show_bug.cgi?id=637956 + + gio/gkeyfilesettingsbackend.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit ef57996f44d57a3c6f7abda5a447ca8baf9dfbea +Author: Christian Persch +AuthorDate: Sun Oct 27 17:22:38 2013 -0700 +Commit: Ryan Lortie +CommitDate: Sun Oct 27 17:23:17 2013 -0700 + + Add test for extended schemas + + The test checks that the keys of the base schema are all present in + the extended schema. + + https://bugzilla.gnome.org/show_bug.cgi?id=645453 + + gio/tests/gsettings.c | 16 ++++++++++++++++ + gio/tests/org.gtk.test.gschema.xml | 16 ++++++++++++++++ + 2 files changed, 32 insertions(+) + +commit cbf8cf8598e527a0d3b895cbfedef6b728ab8b82 +Author: Ryan Lortie +AuthorDate: Sun Oct 27 17:18:10 2013 -0700 +Commit: Ryan Lortie +CommitDate: Sun Oct 27 17:18:10 2013 -0700 + + GSettings: properly support 'extends' + + Support the 'extends' attribute that has been supported by the + compiler + for a long time by doing three things: + + - when creating a schema that extends another schema, lookup + that other + schema + + - when looking up keys and we can't find them in the schema, check + (recursively) in the 'extends' schema + + - when listing all keys in a schema, also visit the extends schemas, + but take care to avoid duplicates caused by overrides + + Extend the testsuite to verify that it works. + + https://bugzilla.gnome.org/show_bug.cgi?id=645453 + + gio/gsettingsschema.c | 152 + +++++++++++++++++++++++++++++++------------------- + 1 file changed, 96 insertions(+), 56 deletions(-) + +commit 3041d0a8dbc9b82d15291061814c4160a5d400ab +Author: Ross Lagerwall +AuthorDate: Fri Oct 25 10:05:02 2013 +0200 +Commit: Ryan Lortie +CommitDate: Sun Oct 27 17:15:38 2013 -0700 + + gio: Fix typo in documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=710859 + + gio/gfileinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6f386341bd0b03012c3f379d75d78755ef8cc7b6 +Author: Ryan Lortie +AuthorDate: Sat Oct 26 19:12:46 2013 -0700 +Commit: Ryan Lortie +CommitDate: Sun Oct 27 17:12:57 2013 -0700 + + Add g_settings_schema_source_list_schemas() + + g_settings_list_schemas() and g_settings_list_relocatable_schemas() + are + now deprecated. + + This will allow listing off schemas on non-default sources and is a + better fit with the new direction the API is going. + + https://bugzilla.gnome.org/show_bug.cgi?id=680838 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gsettings.h | 4 +- + gio/gsettingsschema.c | 172 + ++++++++++++++++++++---------------- + gio/gsettingsschema.h | 6 ++ + 4 files changed, 103 insertions(+), 80 deletions(-) + +commit 13067362d2539f47624e4fb38589bf5281dd3276 +Author: Colin Walters +AuthorDate: Sun Oct 27 10:34:08 2013 -0400 +Commit: Colin Walters +CommitDate: Sun Oct 27 16:02:36 2013 -0400 + + gsubprocess: Add documentation about default input directions + + gio/gsubprocess.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 6bb9d17e40deb230ab14f369304b8feca02230c0 +Author: Colin Walters +AuthorDate: Sun Oct 27 10:21:13 2013 -0400 +Commit: Colin Walters +CommitDate: Sun Oct 27 16:02:36 2013 -0400 + + gsubprocess: Fall back to plain F_DUPFD+fcntl for OS X <= Snow Lion + + Since it apparently doesn't have F_DUPFD_CLOEXEC. + + https://bugzilla.gnome.org/show_bug.cgi?id=710962 + + gio/gsubprocess.c | 32 +++++++++++++++++++++++++++++--- + 1 file changed, 29 insertions(+), 3 deletions(-) + +commit 00b35c78f861b2413fdb0bcba7d12249e52b0374 +Author: Ryan Lortie +AuthorDate: Sat Oct 26 18:58:06 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 27 10:42:55 2013 -0700 + + Add a testcase for summary/description + + https://bugzilla.gnome.org/show_bug.cgi?id=668232 + + gio/tests/gsettings.c | 38 + ++++++++++++++++++++++++++++++++++++++ + gio/tests/org.gtk.test.gschema.xml | 18 ++++++++++++++++++ + 2 files changed, 56 insertions(+) + +commit 96a053e025f4b5a7286844df3d691ebb508953ab +Author: Ryan Lortie +AuthorDate: Sat Oct 26 18:57:55 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 27 10:42:55 2013 -0700 + + Add g_settings_schema_key_get_summary/description + + Add an API to read the summary and description from the .xml schema + files. + + This will be used by dconf-editor and gnome-tweak-tool. + + This API is a bit heavy -- it parses the XML and builds a table. It + also loads gettext domains for translation. It only does these things + if it is used, however, so it will not impact normal applications. + + We store the summary/description in a pair of hash tables on the + schema + source (which we have a backref to as of a few commits ago). We can't + use a global table because people might want to request summary and + description from non-default sources. We don't want to use per-schema + tables because we'd have to reparse the directory every time (since we + cannot guess which file a schema may have been in). + + https://bugzilla.gnome.org/show_bug.cgi?id=668232 + + docs/reference/gio/gio-sections.txt | 4 + + gio/gsettingsschema.c | 355 + ++++++++++++++++++++++++++++++++++++ + gio/gsettingsschema.h | 5 + + 3 files changed, 364 insertions(+) + +commit 84fa07aeb1e3e41deac3508231712967366abfbd +Author: Ryan Lortie +AuthorDate: Sat Oct 26 18:57:24 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 27 10:42:50 2013 -0700 + + Make GSettingsSchemaKey public + + Take this private API and make it public along with a boxed type and + ref/unref functions. + + Future commits will add accessors with new functionality and some that + allow us to deprecate functions on GSettings itself (such as + g_settings_get_range). + + https://bugzilla.gnome.org/show_bug.cgi?id=668232 + + docs/reference/gio/gio-sections.txt | 7 ++++ + gio/gsettingsschema-internal.h | 6 ++- + gio/gsettingsschema.c | 73 + +++++++++++++++++++++++++++++++++++++ + gio/gsettingsschema.h | 13 +++++++ + 4 files changed, 97 insertions(+), 2 deletions(-) + +commit 0ef43ba743d0b3d1f8c13cd7fc8e3abab5609c49 +Author: Ryan Lortie +AuthorDate: Sat Oct 26 18:50:39 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 27 09:32:10 2013 -0700 + + GSettingsSchema: store a backref to the source + + Record in each GSettingsSchema object the source from which it came. + + This will be useful in future commits. + + https://bugzilla.gnome.org/show_bug.cgi?id=668232 + + gio/gsettingsschema.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit e462eda3d5c86349bd5daa7db687e582001390d7 +Author: Ryan Lortie +AuthorDate: Sat Oct 26 18:49:58 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 27 09:32:10 2013 -0700 + + Clean up GSettingsSchema logic + + The way we created the global schema list predates + g_settings_schema_source_new_from_directory() and therefore doesn't + use + it. + + Update it to use that function, removing some code. + + https://bugzilla.gnome.org/show_bug.cgi?id=668232 + + gio/gsettingsschema.c | 55 + +++++++++++++++++++-------------------------------- + 1 file changed, 20 insertions(+), 35 deletions(-) + +commit ba3103763d1405c9dfd0f14c435aef307dfb92f6 +Author: Ryan Lortie +AuthorDate: Sun Oct 27 09:24:40 2013 -0700 +Commit: Ryan Lortie +CommitDate: Sun Oct 27 09:26:56 2013 -0700 + + tests: test g_hash_table_get_keys_as_array() + + https://bugzilla.gnome.org/show_bug.cgi?id=710964 + + glib/tests/hash.c | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +commit 288076770264c7b34d57c985d827c3a3d2710209 +Author: Ryan Lortie +AuthorDate: Sat Oct 26 18:48:42 2013 -0700 +Commit: Ryan Lortie +CommitDate: Sun Oct 27 09:26:53 2013 -0700 + + Add g_hash_table_get_keys_as_array() + + Returns a %NULL-terminated array of the keys of a hashtable. + + In the case that the hash table has strings for keys, this is + actually a + gchar**. + + https://bugzilla.gnome.org/show_bug.cgi?id=710964 + + docs/reference/glib/glib-sections.txt | 1 + + glib/ghash.c | 46 + +++++++++++++++++++++++++++++++++++ + glib/ghash.h | 3 +++ + 3 files changed, 50 insertions(+) + +commit 415c6d2e2742946606c4db5b1157a946767afdb7 +Author: Giovanni Campagna +AuthorDate: Fri Oct 25 18:02:16 2013 +0200 +Commit: Giovanni Campagna +CommitDate: Sat Oct 26 14:55:18 2013 +0200 + + gapplication: don't emit warnings for DBus calls + + If a broken (or malicious) remote client calls Open or CommandLine + on a GApplication that does not implement those, return a DBus + error instead of going through and then emitting a warning. + + https://bugzilla.gnome.org/show_bug.cgi?id=710885 + + gio/gapplicationimpl-dbus.c | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit 3e48e3be40ffb38067dc8cce4e5830cdd9c08aa5 +Author: Giovanni Campagna +AuthorDate: Fri Oct 25 18:01:51 2013 +0200 +Commit: Giovanni Campagna +CommitDate: Sat Oct 26 14:55:18 2013 +0200 + + gapplication: fix memory leak + + g_variant_get_child_value() returns a new GVariant, which we must + free. + + https://bugzilla.gnome.org/show_bug.cgi?id=710885 + + gio/gapplicationimpl-dbus.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 0e1924a66c642d4aa4a30b97cff509903f972435 +Author: Ryan Lortie +AuthorDate: Fri Oct 25 12:22:42 2013 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 25 18:17:35 2013 -0400 + + win32: use real random data for seed on win32 + + We can get cryptographically secure data from rand_s(). + + https://bugzilla.gnome.org/show_bug.cgi?id=710738 + + glib/grand.c | 21 +++++++++++---------- + 1 file changed, 11 insertions(+), 10 deletions(-) + +commit 2bf492e97dd2f90c730ff5eecbde99c8f55265ee +Author: Nilamdyuti Goswami +AuthorDate: Fri Oct 25 12:44:48 2013 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Fri Oct 25 12:44:48 2013 +0530 + + Assamese translation updated + + po/as.po | 345 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 184 insertions(+), 161 deletions(-) + +commit 8973a8bea710c085e6e357d5bf869000f91a1dc9 +Author: Ryan Lortie +AuthorDate: Wed Oct 23 15:09:07 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 24 15:31:45 2013 -0400 + + GLib 2.39.0 + + NEWS | 213 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 213 insertions(+) + +commit e52ff015522db55d5ec71cd9afa55863247bb74f +Author: Ryan Lortie +AuthorDate: Thu Oct 24 14:24:04 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 24 15:31:45 2013 -0400 + + docs: dist manpage gapplication.xml + + docs/reference/gio/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit fcd2f7e63923853e113500e48005d269291cf391 +Author: Philip Withnall +AuthorDate: Thu Oct 24 12:09:27 2013 +0100 +Commit: Ryan Lortie +CommitDate: Thu Oct 24 13:55:33 2013 -0400 + + tests: Add tests for the thumbnail verification code in GIO + + This code was added for use by the G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID + file attribute, but may end up being used elsewhere (e.g. in GVfs) + as well. + As it’s dealing with untrusted external files, and the non-trivial + PNG file + format, this commit adds several test cases to cover valid and + invalid PNG + files. + + The security model for the thumbnail verification code is that + the user’s + cache directory is untrusted, and potentially any PNG file which + is passed + to the verifier has been manipulated arbitrarily by an attacker. + + This is a follow-up to commit + fe7069749fe39a006985ec266260a3c02ee8c855. + + https://bugzilla.gnome.org/show_bug.cgi?id=709898 + + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 17 ++++ + gio/tests/thumbnail-verification.c | 121 + +++++++++++++++++++++++++ + gio/tests/thumbnails/bad-header.png | Bin 0 -> 512 bytes + gio/tests/thumbnails/empty-key.png | Bin 0 -> 512 bytes + gio/tests/thumbnails/header-and-chunk-size.png | Bin 0 -> 20 bytes + gio/tests/thumbnails/header-only.png | 2 + + gio/tests/thumbnails/huge-chunk-size.png | Bin 0 -> 512 bytes + gio/tests/thumbnails/mtime-zero.png | Bin 0 -> 512 bytes + gio/tests/thumbnails/no-text-data.png | Bin 0 -> 256 bytes + gio/tests/thumbnails/overlong-value.png | Bin 0 -> 512 bytes + gio/tests/thumbnails/uri-mismatch.png | Bin 0 -> 512 bytes + gio/tests/thumbnails/valid-no-size.png | Bin 0 -> 512 bytes + gio/tests/thumbnails/valid.png | Bin 0 -> 512 bytes + 14 files changed, 141 insertions(+) + +commit ed6ca39d3bb3e23c332a5de2b2efbde0d8db21f0 +Author: Colin Walters +AuthorDate: Thu Oct 17 16:57:10 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 24 09:53:55 2013 -0400 + + Revert "Use g_return_val_if_fail() for developer-only messages" + + This reverts commit 00f0795a84d23f2e2654a86f8bd3a233c8af3771. + + https://bugzilla.gnome.org/show_bug.cgi?id=569017 + + gio/gicon.c | 70 + ++++++++++++++++++++++++++++++++++++++++++++++++------- + gio/gthemedicon.c | 13 ++++++++++- + 2 files changed, 74 insertions(+), 9 deletions(-) + +commit d5e2a57741ec13196360b073a04f7929ebdb642e +Author: Jiro Matsuzawa +AuthorDate: Thu Aug 29 01:05:29 2013 +0900 +Commit: Ryan Lortie +CommitDate: Thu Oct 24 09:53:55 2013 -0400 + + gsettings-tool: Add --version into general usage + + https://bugzilla.gnome.org/show_bug.cgi?id=707002 + + gio/gsettings-tool.c | 1 + + 1 file changed, 1 insertion(+) + +commit 6568843624e9f46a3c51cd8c1a6670896a48f1fb +Author: Ryan Lortie +AuthorDate: Wed Oct 23 16:42:12 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 24 09:53:55 2013 -0400 + + GSettings: verify path validity on constructors + + Don't allow constructing GSettings objects with invalid paths. + + https://bugzilla.gnome.org/show_bug.cgi?id=704802 + + gio/gsettings.c | 27 +++++++++++++++++++++++++-- + 1 file changed, 25 insertions(+), 2 deletions(-) + +commit 0a7d1084a5917815eef34cf9a0bc2d140fcaa190 +Author: Olivier Brunel +AuthorDate: Tue Oct 8 16:11:44 2013 +0200 +Commit: Matthias Clasen +CommitDate: Thu Oct 24 08:09:48 2013 -0400 + + gthemedicon: Fallback to non-symbolic icons + + When doing fallback for symbolic icons, we first shorten the name + at dashes + while preserving the -symbolic suffix. But after exhausting that, + we should also + try stripping the suffix. + + See https://bugzilla.gnome.org/show_bug.cgi?id=708163 + + Signed-off-by: Olivier Brunel + + https://bugzilla.gnome.org/show_bug.cgi?id=710254 + + gio/gthemedicon.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +commit 1e1e2d1ff7debb3941a8841c4ec501dbd6edd1fd +Author: Colin Walters +AuthorDate: Wed Oct 23 16:41:09 2013 -0400 +Commit: Colin Walters +CommitDate: Wed Oct 23 16:41:09 2013 -0400 + + grand: Document this is not for cryptographic purposes + + While this is obvious to seasoned experts upon inspection, it is + really worth documenting explicitly. + + https://bugzilla.gnome.org/show_bug.cgi?id=710736 + + glib/grand.c | 20 ++++++++++++++++---- + 1 file changed, 16 insertions(+), 4 deletions(-) + +commit 856d90156942d340513942126c2536339e00d04a +Author: Philip Withnall +AuthorDate: Wed Oct 23 15:45:15 2013 +0100 +Commit: Philip Withnall +CommitDate: Wed Oct 23 20:55:00 2013 +0100 + + gdbus: Ensure message matching always succeeds against + path_namespace='/' + + This copies the fix from upstream D-Bus bug + https://bugs.freedesktop.org/show_bug.cgi?id=70799 to the GDBusDaemon + implementation, ensuring that matching against path_namespace='/' + succeeds + for all keys (i.e. it’s a no-op). + + https://bugzilla.gnome.org/show_bug.cgi?id=710726 + + gio/gdbusdaemon.c | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +commit a4bcd3e65aa580fb23bca6e1b09f62dff5837237 +Author: Ryan Lortie +AuthorDate: Wed Oct 23 14:17:48 2013 -0400 +Commit: Dan Winship +CommitDate: Wed Oct 23 15:28:06 2013 -0400 + + gtester: only remove source if not already dead + + Don't attempt to g_source_remove() a source for which we already + returned FALSE + from the handler. + + https://bugzilla.gnome.org/show_bug.cgi?id=710724 + + glib/gtester.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit f7beb90193236c1863fb62eaad607615f5695431 +Author: Ryan Lortie +AuthorDate: Wed Oct 23 11:10:00 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 23 12:00:44 2013 -0400 + + tests: expect critical on failure to remove source + + We've added a g_critical() on failure to remove sources, so make + sure we + expect to see that (instead of failing the test due to the unexpected + message). + + https://bugzilla.gnome.org/show_bug.cgi?id=710724 + + glib/tests/protocol.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit b9de6f04890eecb1dc9c3b70efbcde35008ba182 +Author: Ryan Lortie +AuthorDate: Wed Oct 23 11:04:01 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 23 12:00:44 2013 -0400 + + gmain: test g_source_remove() with invalid ID + + Make sure we get the proper critical displayed. + + https://bugzilla.gnome.org/show_bug.cgi?id=710724 + + glib/tests/mainloop.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit a919be3d39150328874ff647fb2c2be7af3df996 +Author: Bastien Nocera +AuthorDate: Wed Oct 23 15:38:58 2013 +0200 +Commit: Ryan Lortie +CommitDate: Wed Oct 23 12:00:43 2013 -0400 + + gmain: Warn when g_source_remove() fails + + Trying to remove a non-existent source should really be + a programming error, as the programmer could be trying to + use the wrong function to remove a callback, as seen when + GtkScrolledWindow tried to remove ID from another function + using g_source_remove(). + + See https://bugzilla.gnome.org/show_bug.cgi?id=710666#c12 + + https://bugzilla.gnome.org/show_bug.cgi?id=710724 + + glib/gmain.c | 23 ++++++++++++++--------- + 1 file changed, 14 insertions(+), 9 deletions(-) + +commit fe7069749fe39a006985ec266260a3c02ee8c855 +Author: Ryan Lortie +AuthorDate: Fri Oct 11 11:22:31 2013 +0100 +Commit: Ryan Lortie +CommitDate: Wed Oct 23 11:56:28 2013 -0400 + + file-info: Add a G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID attribute + + This indicates whether the thumbnail (given by + G_FILE_ATTRIBUTE_THUMBNAIL_PATH) + is valid — i.e. to represent the file in its current state. If + G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID is FALSE (for a normal _or_ failed + thumbnail) it means the file has changed since the thumbnail was + generated, and + the thumbnail is out of date. + + Part of checking thumbnail validity (by the spec) involves parsing + headers out of the thumbnail .png so we include some (small) code + to do + that in a separate file. We will likely want to copy this code + to gvfs + to do the same for GVfsFile. + + Heavily based on a patch from Philip Withnall + + who suggested the feature and designed the API. + + https://bugzilla.gnome.org/show_bug.cgi?id=709898 + + docs/reference/gio/Makefile.am | 3 +- + docs/reference/gio/gio-sections.txt | 1 + + gio/Makefile.am | 2 + + gio/gfileattribute.c | 6 +- + gio/gfileinfo-priv.h | 1 + + gio/gfileinfo.c | 1 + + gio/gfileinfo.h | 15 +++ + gio/glocalfileinfo.c | 36 ++++-- + gio/thumbnail-verify.c | 250 + ++++++++++++++++++++++++++++++++++++ + gio/thumbnail-verify.h | 31 +++++ + 10 files changed, 335 insertions(+), 11 deletions(-) + +commit 38dc8d4cd302082c4e308d0b7032160c98736244 +Author: Ryan Lortie +AuthorDate: Tue Oct 22 15:51:15 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 23 11:32:13 2013 -0400 + + GMemoryOutputStream: docs and whitespace fixes + + Document the difference between resizable and fixed-sized streams, + particularly with regards to sizing and seeking. + + https://bugzilla.gnome.org/show_bug.cgi?id=684842 + + gio/gmemoryoutputstream.c | 98 + +++++++++++++++++++++++++++++++---------------- + 1 file changed, 64 insertions(+), 34 deletions(-) + +commit 1d1c17d9ee69ece6c28da0544d12a29b1c3e4dc9 +Author: Ryan Lortie +AuthorDate: Tue Oct 22 16:15:29 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 23 11:32:13 2013 -0400 + + GMemoryOutputStream: improve seek tests + + Improve test coverage for testing seeking on fixed vs. resizable + GMemoryOutputStream. + + https://bugzilla.gnome.org/show_bug.cgi?id=684842 + + gio/tests/memory-output-stream.c | 97 + ++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 94 insertions(+), 3 deletions(-) + +commit fdc5cd8d9fcf9ac8c0ebe27cf6cd3c8648690a8b +Author: Ryan Lortie +AuthorDate: Wed Oct 23 11:25:56 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 23 11:31:27 2013 -0400 + + Change semantics of seek on memory output stream + + It is our intention that memory output streams should operate in two + distinct modes, depending on if a realloc function was provided + or not. + + In the case that we have a realloc function (resizable mode), we want + the stream to behave as if it were a file that started out empty. In + the case that we don't have a realloc function (fixed-sized mode), we + want the stream to behave as a block device would. + + To this end, we introduce two changes in functionality: + + - seeking to SEEK_END on a resizable stream will now seek to the + end of + the valid data region, not to the end of the allocated memory + (which + is really just an implementation detail) + + - seeks past the end of the allocated memory size are now permitted, + but only on resizable streams. The next write will grow the buffer + (inserting zeros between). + + Some tweaks to testcases were required in order not to break the + build, + which indicates that this is an API break, but it seems unlikely that + anyone will be effected by these changes 'in the real world'. + + Updates to documentation and further testcases are in following + commits. + + Based on a patch from Maciej Piechotka . + + https://bugzilla.gnome.org/show_bug.cgi?id=684842 + + gio/gmemoryoutputstream.c | 17 +++++++++++++++-- + gio/tests/buffered-output-stream.c | 4 ++-- + gio/tests/memory-output-stream.c | 2 +- + 3 files changed, 18 insertions(+), 5 deletions(-) + +commit 38ef509cf3558bffb326f7c6d511bcd77e98981b +Author: Ryan Lortie +AuthorDate: Tue Oct 22 15:01:16 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 23 11:19:27 2013 -0400 + + GSeekable: document seek-past-end semantics + + Introduce the concept of "fixed" vs. "resizable" streams and document + how g_seekable_seek() works for each case. + + We don't include g_seekable_is_fixed_size() at this point because we + don't know if anyone would require it. This may appear in the + future if + someone asks for it, however. + + https://bugzilla.gnome.org/show_bug.cgi?id=684842 + + gio/gseekable.c | 32 ++++++++++++++++++++++++++------ + 1 file changed, 26 insertions(+), 6 deletions(-) + +commit 3b28df1e008101341504f82c8e65f3109aca10cc +Author: Philip Withnall +AuthorDate: Wed Oct 23 15:07:46 2013 +0100 +Commit: Philip Withnall +CommitDate: Wed Oct 23 15:36:23 2013 +0100 + + gdbus: Work around a D-Bus bug with path_namespace='/' match rules + + D-Bus versions < 1.6.18 (i.e. all current versions) have a bug + with the + path_namespace='/' match rule key. It should conceptually match + everything, + but actually matches nothing. This results in no property change + (or other) + signals being forwarded to the D-Bus client. + + The work-around implemented in GDBusObjectManagerClient is to + remove the + path_namespace match key if its value is ‘/’. + + For the upstream D-Bus bug, see: + https://bugs.freedesktop.org/show_bug.cgi?id=70799 + + https://bugzilla.gnome.org/show_bug.cgi?id=710726 + + gio/gdbusobjectmanagerclient.c | 22 +++++++++++++++++----- + 1 file changed, 17 insertions(+), 5 deletions(-) + +commit 5a3fd63246d2cf7d4d8e2e559320ea0e3658beee +Author: Bastien Nocera +AuthorDate: Fri Oct 18 14:37:31 2013 +0200 +Commit: Ryan Lortie +CommitDate: Wed Oct 23 00:22:21 2013 -0400 + + g_file_error_from_errno: Remove unneeded breaks + + Just wasting space + + https://bugzilla.gnome.org/show_bug.cgi?id=710625 + + glib/gfileutils.c | 25 ------------------------- + 1 file changed, 25 deletions(-) + +commit 1b592524ff461c8905b43f4fe04ae3bc47d61592 +Author: Ryan Lortie +AuthorDate: Tue Oct 22 16:24:41 2013 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 22 16:24:41 2013 -0400 + + GKeyfile: don't leak on failed get_(u)int64 + + In the case that g_key_file_get_(u)int64 fails to parse the integer, + make sure we free the string before returning. + + Reported by Andrew Stone + + https://bugzilla.gnome.org/show_bug.cgi?id=710313 + + glib/gkeyfile.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit efecfe0fac83fc305fd5e2c3f377ee70e1c987db +Author: Dan Winship +AuthorDate: Sun Oct 20 09:27:11 2013 -0400 +Commit: Dan Winship +CommitDate: Tue Oct 22 11:01:15 2013 -0400 + + gobject: simplify object-in-construction handling + + Rather than keeping a global list of objects that are being + constructed, use qdata on the object itself like we do with several + other properties now. + + https://bugzilla.gnome.org/show_bug.cgi?id=661576 + + gobject/gobject.c | 68 + ++++++++++++++++--------------------------------------- + 1 file changed, 19 insertions(+), 49 deletions(-) + +commit 0d62eb467f8fbf7a59454bec3498bcdd3c7889e0 +Author: Dan Winship +AuthorDate: Mon Apr 29 13:04:11 2013 -0400 +Commit: Dan Winship +CommitDate: Tue Oct 22 11:01:15 2013 -0400 + + gobject: forbid finalization-during-construction + + If a constructor() implementation created an object but then unreffed + it rather than returning it, that object would get left on the + construction_objects list, which would cause problems later when that + memory location got reused by another object. + + "Fix" this by making it fail intentionally, and add a test for it (and + for the normal, working singleton case). + + https://bugzilla.gnome.org/show_bug.cgi?id=661576 + + gobject/gobject.c | 26 +++++--- + gobject/tests/.gitignore | 1 + + gobject/tests/Makefile.am | 1 + + gobject/tests/object.c | 151 + ++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 169 insertions(+), 10 deletions(-) + +commit a7bd6c47db8330fa0b88201ff4d9abf72fb10ef5 +Author: Matthias Clasen +AuthorDate: Mon Oct 21 18:46:48 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 21 18:46:48 2013 -0400 + + Clarify the g_application_withdraw_notification docs + + Mention that notifications are dismissed when activated. + + gio/gapplication.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 1f0e69f73438fb4f6dfbd7676a0ef4d60e9b529c +Author: Ryan Lortie +AuthorDate: Mon Oct 21 14:55:52 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 21 15:24:55 2013 -0400 + + Don't build gapplication(1) on win32 + + It's pretty closely tied to desktop files... + + gio/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit 358588ed2ad70e68df3d4de2837b0f0e2073910f +Author: Ryan Lortie +AuthorDate: Mon Oct 21 14:55:21 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 21 15:24:55 2013 -0400 + + GSubprocess win32 fixups + + Note: we go out of our way not to pass a child setup function on win32 + (even if it does nothing) because we get a g_warning() from gspawn + if we + do so. + + gio/gsubprocess.c | 41 + ++++++++++++++++++++++++++++++++++++++-- + gio/gsubprocesslauncher.c | 31 +++++++++++++++++++++--------- + gio/gwin32inputstream.c | 1 + + gio/gwin32outputstream.c | 1 + + gio/tests/gsubprocess-testprog.c | 1 + + 5 files changed, 64 insertions(+), 11 deletions(-) + +commit b21c86b6a01453b522c1a428fc5961d3a4204649 +Author: Colin Walters +AuthorDate: Mon Oct 21 15:05:45 2013 -0400 +Commit: Colin Walters +CommitDate: Mon Oct 21 15:05:45 2013 -0400 + + GNotification: Don't install private headers, avoid duplicated + prototype + + These both break gobject-introspection's build, and moreover are + things we don't want to do anyways. + + gio/Makefile.am | 4 ++-- + gio/gnotification-private.h | 2 -- + 2 files changed, 2 insertions(+), 4 deletions(-) + +commit 8dfb0703298bf8f25f3440967fca348ec71e4253 +Author: Ryan Lortie +AuthorDate: Fri Oct 18 20:40:57 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 21 14:33:06 2013 -0400 + + Don't g_test_assert_expected_messages for g_error + + Don't allow the user to assert for expected g_error(). They need + to use + subprocess for this. + + https://bugzilla.gnome.org/show_bug.cgi?id=709615 + + glib/gmessages.c | 1 + + glib/tests/testing.c | 10 ++++++++++ + 2 files changed, 11 insertions(+) + +commit 6957004007fb2a5faf0013e6ec44926d841404b5 +Author: Ryan Lortie +AuthorDate: Mon Oct 21 14:29:44 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 21 14:30:30 2013 -0400 + + GNotification: finish documentation + + Add the missing documentation and add the section to the GIO reference + docs. Fix up a few small documentation issues. + + https://bugzilla.gnome.org/show_bug.cgi?id=688492 + + docs/reference/gio/Makefile.am | 2 ++ + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 29 ++++++++++++++++++++++ + gio/giotypes.h | 1 - + gio/gnotification.c | 48 + +++++++++++++++++++++++++++++++++---- + 5 files changed, 75 insertions(+), 6 deletions(-) + +commit 51fac60a92278483892d007323b48dbc375d2645 +Author: Ryan Lortie +AuthorDate: Mon Oct 21 12:54:19 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 21 14:30:30 2013 -0400 + + GNotification: some final cleanups + + Move a method from GNotificationBackend into the fdo backend (since it + was only used from here). Remove the accessors for the already-public + (in private header) ->dbus_connect and ->application on + GNotificationBackend. + + https://bugzilla.gnome.org/show_bug.cgi?id=688492 + + gio/gfdonotificationbackend.c | 35 +++++++++++++++++++++++++---------- + gio/ggtknotificationbackend.c | 12 +++--------- + gio/gnotificationbackend.c | 34 ---------------------------------- + gio/gnotificationbackend.h | 8 -------- + 4 files changed, 28 insertions(+), 61 deletions(-) + +commit 766f5584cea0f78921c9288ba7c1c489e6252dd4 +Author: Lars Uebernickel +AuthorDate: Tue Oct 15 12:19:09 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 21 14:30:26 2013 -0400 + + Add gtk notification backend + + https://bugzilla.gnome.org/show_bug.cgi?id=688492 + + gio/Makefile.am | 1 + + gio/gfdonotificationbackend.c | 15 ++--- + gio/ggtknotificationbackend.c | 144 + ++++++++++++++++++++++++++++++++++++++++++ + gio/giomodule.c | 2 + + gio/gnotification-private.h | 4 +- + gio/gnotification.c | 108 ++++++++++++++++++++++++++----- + gio/gnotification.h | 4 +- + gio/gnotificationbackend.c | 12 +++- + 8 files changed, 261 insertions(+), 29 deletions(-) + +commit 639bd3626b683a0be273462d47e6bc30351a77d1 +Author: Lars Uebernickel +AuthorDate: Tue Oct 15 11:21:10 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 21 14:30:26 2013 -0400 + + Add GNotification + + https://bugzilla.gnome.org/show_bug.cgi?id=688492 + + gio/Makefile.am | 6 + + gio/gapplication.c | 99 +++++++ + gio/gapplication.h | 8 + + gio/gfdonotificationbackend.c | 405 ++++++++++++++++++++++++++ + gio/gio.h | 1 + + gio/giomodule.c | 9 + + gio/giotypes.h | 2 + + gio/gnotification-private.h | 54 ++++ + gio/gnotification.c | 639 + ++++++++++++++++++++++++++++++++++++++++++ + gio/gnotification.h | 94 +++++++ + gio/gnotificationbackend.c | 112 ++++++++ + gio/gnotificationbackend.h | 83 ++++++ + 12 files changed, 1512 insertions(+) + +commit 1b04954cd0712f6bb1e5f575d015a781fdc2135b +Author: Philip Withnall +AuthorDate: Mon Oct 21 15:09:13 2013 +0100 +Commit: Philip Withnall +CommitDate: Mon Oct 21 15:30:47 2013 +0100 + + gmessages: Clarify new-line behaviour of message functions + + Mention that g_printerr() and friends don’t append a trailing + new-line + character to printed messages, but g_log() and friends do. + + glib/gmessages.c | 46 +++++++++++++++++++++++++++++++++++++++++++--- + glib/gprintf.c | 4 ++++ + 2 files changed, 47 insertions(+), 3 deletions(-) + +commit 0e4d6664471cd3d6157595d868542708323a97f7 +Author: Djalal Harouni +AuthorDate: Sun Oct 20 14:15:25 2013 +0100 +Commit: Dan Winship +CommitDate: Sun Oct 20 15:42:45 2013 -0400 + + glib-init: fix redundant-decls of g_mem_gc_friendly + + Currently g_mem_gc_friendly is declared in both gmem.h and glib-init.h + files, we will have reports on each unit that include these two files. + + This patch removes the redundant declaration from glib-init.h + + Since g_mem_gc_friendly is related to gmem.h and was first declared in + this header which also exports it via glib.h, then declare it + in gmem.h + + Other files already include gmem.h: garray.c and gslice.c, no need to + change anything. + + Signed-off-by: Djalal Harouni + + https://bugzilla.gnome.org/show_bug.cgi?id=710345 + + glib/glib-init.c | 1 + + glib/glib-init.h | 1 - + 2 files changed, 1 insertion(+), 1 deletion(-) + +commit fef69bc65516ad23615aaa0272f4aa2cb5fe30bf +Author: Djalal Harouni +AuthorDate: Sun Oct 20 13:42:09 2013 +0100 +Commit: Dan Winship +CommitDate: Sun Oct 20 15:42:45 2013 -0400 + + gmem: remove glib-init.h inclusion + + No need to include glib-init.h here. This was added by + commit 47444dacc069be but that commit did not make use of any its + exported symbols, so just remove it. + + Signed-off-by: Djalal Harouni + + https://bugzilla.gnome.org/show_bug.cgi?id=710345 + + glib/gmem.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 58c26d388307b52b6ef2f9e4ea621c7ea582c584 +Author: Enrico Nicoletto +AuthorDate: Sat Oct 19 12:39:22 2013 -0300 +Commit: Enrico Nicoletto +CommitDate: Sat Oct 19 12:46:27 2013 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 724 + +++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 448 insertions(+), 276 deletions(-) + +commit d308ede4912213ab64ca98f47a6710091f3ca27f +Author: Djalal Harouni +AuthorDate: Thu Oct 17 02:04:20 2013 +0100 +Commit: Dan Winship +CommitDate: Sat Oct 19 12:18:55 2013 -0400 + + gio/gbufferedinputstream: fix redundant-decls of + g_buffered_input_stream_finalize() + + g_buffered_input_stream_finalize() is already declared as static + in this + gbufferedinputstream.c file, so just remove the redundant declaration. + + Signed-off-by: Djalal Harouni + + https://bugzilla.gnome.org/show_bug.cgi?id=710345 + + gio/gbufferedinputstream.c | 2 -- + 1 file changed, 2 deletions(-) + +commit fe4967f9f131554f4f7ed380b3868104711814f7 +Author: Djalal Harouni +AuthorDate: Thu Oct 17 01:54:11 2013 +0100 +Commit: Dan Winship +CommitDate: Sat Oct 19 12:18:55 2013 -0400 + + gutils: fix redundant-decls of g_init_user_config_dir() + + g_init_user_config_dir() is already declared as static in this + gutils.c + file, so just remove the redundant declaration. + + Signed-off-by: Djalal Harouni + + https://bugzilla.gnome.org/show_bug.cgi?id=710345 + + glib/gutils.c | 1 - + 1 file changed, 1 deletion(-) + +commit 97cbfd7901d6d354aa088c6c4a83f53d25780ef6 +Author: Djalal Harouni +AuthorDate: Thu Oct 17 00:54:44 2013 +0100 +Commit: Dan Winship +CommitDate: Sat Oct 19 12:18:55 2013 -0400 + + gconvert: fix redundant-decls of _g_charset_get_aliases() + + _g_charset_get_aliases() is already declared in gcharsetprivate.h + which was added by commit 4c2a6595889eff44fa, and gconvert.c includes + this gcharsetprivate header, so no need to declare it again. + + Signed-off-by: Djalal Harouni + + https://bugzilla.gnome.org/show_bug.cgi?id=710345 + + glib/gconvert.c | 3 --- + 1 file changed, 3 deletions(-) + +commit d94d6ecd3f4928d2ea0755841a9f1b381a1c7d99 +Author: Dan Winship +AuthorDate: Sat Oct 19 11:31:06 2013 -0400 +Commit: Dan Winship +CommitDate: Sat Oct 19 11:33:25 2013 -0400 + + genviron: fix g_setenv(var, NULL) and some other stuff + + Passing a NULL value to g_setenv() was never documented as working, + and in fact it worked on some platforms and crashed on others. Make it + g_return_if_fail() everywhere insted. + + Also, remove some incorrect docs in g_environ_getenv() and + g_environ_setenv() that shouldn't have been copied from g_getenv() and + g_setenv(). And belatedly simplify the checks in g_unsetenv(). + + https://bugzilla.gnome.org/show_bug.cgi?id=704593 + + glib/genviron.c | 26 ++++++++------------------ + 1 file changed, 8 insertions(+), 18 deletions(-) + +commit 2907d4cc718658556ff0cf56ffec35b419409abf +Author: Jehan +AuthorDate: Sat Oct 19 20:59:41 2013 +1300 +Commit: Colin Walters +CommitDate: Sat Oct 19 09:09:12 2013 -0400 + + gconvert: Clarify g_locale_to/from_utf8 docs + + It was not clear from the doc whether the return value was to be freed + or belonging to glib. + + https://bugzilla.gnome.org/show_bug.cgi?id=710496 + + glib/gconvert.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit d55180c73bfaac3930f412ddc3d1a2fd31f678b1 +Author: Ross Lagerwall +AuthorDate: Sat Oct 12 08:13:18 2013 +0200 +Commit: Ryan Lortie +CommitDate: Fri Oct 18 10:32:18 2013 -0400 + + docs: Remove comment about calling g_type_init() + + https://bugzilla.gnome.org/show_bug.cgi?id=709966 + + docs/reference/gio/overview.xml | 6 ------ + 1 file changed, 6 deletions(-) + +commit d157e7fdd7085838b3f690b5b20d98b643a3777a +Author: Nilamdyuti Goswami +AuthorDate: Fri Oct 18 19:14:51 2013 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Fri Oct 18 19:14:51 2013 +0530 + + Assamese translation updated + + po/as.po | 478 + +++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 328 insertions(+), 150 deletions(-) + +commit fd90101f4af4ca7d257d3c071f81a56bcb261c3b +Author: Matthias Clasen +AuthorDate: Thu Oct 17 21:03:18 2013 -0400 +Commit: Matthias Clasen +CommitDate: Thu Oct 17 21:03:18 2013 -0400 + + Include gapplication(1) in the tools section + + docs/reference/gio/gio-docs.xml | 1 + + 1 file changed, 1 insertion(+) + +commit c848323948b01c69d76ea5e065a12b6e34df4b6b +Author: Matthias Clasen +AuthorDate: Thu Oct 17 20:55:53 2013 -0400 +Commit: Matthias Clasen +CommitDate: Thu Oct 17 20:55:53 2013 -0400 + + Fix up subprocess docs + + The GSubprocessLauncher docs had their own long description, + but were not properly set up as their own section. + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 19 ++++++++++++------- + gio/gsubprocesslauncher.c | 2 +- + 3 files changed, 14 insertions(+), 8 deletions(-) + +commit 71534d9d629a416874dfe82cd64432db53eaf512 +Author: Matthias Clasen +AuthorDate: Thu Oct 17 20:45:32 2013 -0400 +Commit: Matthias Clasen +CommitDate: Thu Oct 17 20:45:32 2013 -0400 + + Fix up gio-sections.txt + + docs/reference/gio/gio-sections.txt | 2 ++ + 1 file changed, 2 insertions(+) + +commit ea52ce07d8adf3b5bbb3e4f6cc8fe06571006c0d +Author: Matthias Clasen +AuthorDate: Thu Oct 17 20:38:15 2013 -0400 +Commit: Matthias Clasen +CommitDate: Thu Oct 17 20:38:15 2013 -0400 + + Generate introspected docs for GSimpleProxyResolver + + docs/reference/gio/gio.types | 1 + + 1 file changed, 1 insertion(+) + +commit 8520c9cdf4180cc7b33779b2d507301c8942b34e +Author: Matthias Clasen +AuthorDate: Thu Oct 17 20:37:57 2013 -0400 +Commit: Matthias Clasen +CommitDate: Thu Oct 17 20:37:57 2013 -0400 + + Add some missing argument docs + + gio/gsubprocess.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 4cae0703f7fb4cb7ed706c1955c6b8978580d34e +Author: Matthias Clasen +AuthorDate: Thu Oct 17 20:16:13 2013 -0400 +Commit: Matthias Clasen +CommitDate: Thu Oct 17 20:16:13 2013 -0400 + + Add index for 2.40 api additions + + docs/reference/gio/gio-docs.xml | 4 ++++ + 1 file changed, 4 insertions(+) + +commit ebd098155b45d87cbf5ca1d3abdac526a51cc1c2 +Author: Colin Walters +AuthorDate: Thu Oct 17 22:39:48 2013 +0100 +Commit: Colin Walters +CommitDate: Thu Oct 17 22:39:48 2013 +0100 + + tests/gsubprocess: Locate test child binary for installed tests too + + Just use the new g_test_build_filename() rather than assuming + it's in cwd. + + gio/tests/gsubprocess.c | 10 +++------- + 1 file changed, 3 insertions(+), 7 deletions(-) + +commit f7e2190e74ea217c7cfb132b1c4dc01d13bda203 +Author: Piotr Drąg +AuthorDate: Thu Oct 17 21:56:55 2013 +0200 +Commit: Piotr Drąg +CommitDate: Thu Oct 17 21:56:55 2013 +0200 + + Updated POTFILES.in + + po/POTFILES.in | 2 ++ + 1 file changed, 2 insertions(+) + +commit 00f0795a84d23f2e2654a86f8bd3a233c8af3771 +Author: Ihar Hrachyshka +AuthorDate: Fri Oct 11 23:54:56 2013 +0400 +Commit: Colin Walters +CommitDate: Thu Oct 17 15:11:51 2013 -0400 + + Use g_return_val_if_fail() for developer-only messages + + Replaced several usages of GError with g_return_val_if_fail() for + developer-only messages. As additional value, it also removes those + messages from the list to translate, simplifying translator's work a + bit. + + https://bugzilla.gnome.org/show_bug.cgi?id=569017 + + gio/gicon.c | 70 + +++++++------------------------------------------------ + gio/gthemedicon.c | 13 +---------- + 2 files changed, 9 insertions(+), 74 deletions(-) + +commit 542ad4db031273b2ce6416f8909fbff933113ec6 +Author: Ryan Lortie +AuthorDate: Thu Oct 17 15:01:42 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 17 15:01:42 2013 -0400 + + Fixup GSubprocess documentation bits + + docs/reference/gio/Makefile.am | 1 + + docs/reference/gio/gio-sections.txt | 38 +++- + gio/gsubprocess.c | 343 + +++++++++++++++++++++++------------- + gio/gsubprocess.h | 36 ++-- + gio/gsubprocesslauncher.c | 3 +- + 5 files changed, 277 insertions(+), 144 deletions(-) + +commit 9318d5a4292544f2f7f8f9bc2d805974b3b52c7e +Author: Colin Walters +AuthorDate: Tue Oct 15 15:04:54 2013 +0100 +Commit: Ryan Lortie +CommitDate: Thu Oct 17 14:32:44 2013 -0400 + + gsubprocess: Add UTF-8 variants of communicate() + + Over many years of writing code interacting with subprocesses, + a pattern + that comes up a lot is to run a child and get its output as UTF-8, to + put inside a JSON document or render in a GtkTextBuffer, etc. + + It's very important to validate at the boundaries, and not say deep + inside Pango. + + We could do this a bit more efficiently if done in a streaming + fashion, + but realistically this should be OK for now. + + gio/gsubprocess.c | 181 + ++++++++++++++++++++++++++++++++++++++++++++++-- + gio/gsubprocess.h | 21 ++++++ + gio/tests/gsubprocess.c | 105 ++++++++++++++++++++++++++-- + 3 files changed, 296 insertions(+), 11 deletions(-) + +commit 0e1a3ee3450d1a091234292fde6109bf3c778bab +Author: Colin Walters +AuthorDate: Tue Oct 15 00:12:22 2013 +0100 +Commit: Ryan Lortie +CommitDate: Thu Oct 17 14:32:44 2013 -0400 + + gsubprocess: Fix up communicate + + We weren't closing the streams after we were done reading or writing, + which is kind of essential. The easy way to fix this is to just use + g_output_stream_splice() to a GMemoryOutputStream rather than + hand-rolling it. This results in a substantial reduction of code + complexity. + + A second serious issue is that we were marking the task as complete + when + the process exits, but that's racy - there could still be data to read + from stdout. Fix this by just refcounting outstanding operations. + + This code, not surprisingly, looks a lot like the "multi" test. + + Next, because processes output binary data, I'd be forced to annotate + the char*/length pairs as (array) (element-type uint8). But rather + than + doing that, it's *far* simpler to just use GBytes. + + We need a version of this that actually validates as UTF-8, that + will be + in the next patch. + + gio/gsubprocess.c | 398 + ++++++++++++---------------------------------- + gio/gsubprocess.h | 38 +---- + gio/gsubprocesslauncher.c | 32 ++-- + gio/gsubprocesslauncher.h | 2 +- + gio/tests/gsubprocess.c | 70 +++++++- + 5 files changed, 197 insertions(+), 343 deletions(-) + +commit 5b48dc40cc13567d276883ee826fe9e78bc7f46a +Author: Colin Walters +AuthorDate: Thu May 17 14:37:17 2012 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 17 14:32:44 2013 -0400 + + GSubprocess: New class for spawning child processes + + There are a number of nice things this class brings: + + 0) Has a race-free termination API on all platforms (on UNIX, calls to + kill() and waitpid() are coordinated as not to cause problems). + 1) Operates in terms of G{Input,Output}Stream, not file descriptors + 2) Standard GIO-style async API for wait() with cancellation + 3) Makes some simple cases easy, like synchronously spawning a + process with an argument list + 4) Makes hard cases possible, like asynchronously running a process + with stdout/stderr merged, output directly to a file path + + Much rewriting and code review from Ryan Lortie + + https://bugzilla.gnome.org/show_bug.cgi?id=672102 + + docs/reference/gio/gio-docs.xml | 4 + + docs/reference/gio/gio-sections.txt | 33 + + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 5 + + gio/gio.h | 2 + + gio/gioenums.h | 50 ++ + gio/giotypes.h | 18 + + gio/glib-compile-resources.c | 81 +- + gio/gsubprocess.c | 1689 + +++++++++++++++++++++++++++++++++++ + gio/gsubprocess.h | 174 ++++ + gio/gsubprocesslauncher-private.h | 61 ++ + gio/gsubprocesslauncher.c | 718 +++++++++++++++ + gio/gsubprocesslauncher.h | 118 +++ + gio/tests/.gitignore | 2 + + gio/tests/Makefile.am | 5 +- + gio/tests/gsubprocess-testprog.c | 199 +++++ + gio/tests/gsubprocess.c | 855 ++++++++++++++++++ + 17 files changed, 3959 insertions(+), 56 deletions(-) + +commit e30bbca6679605487e52e52f810c54a0464b6d37 +Author: Ryan Lortie +AuthorDate: Sat Nov 10 13:16:29 2012 -0500 +Commit: Ryan Lortie +CommitDate: Thu Oct 17 14:32:41 2013 -0400 + + gspawn: support creating pipes with O_CLOEXEC + + Add a new flag, G_SPAWN_CLOEXEC_PIPES, for creating the stdin/out/err + pipes with O_CLOEXEC (for the usual reasons). + + glib/gspawn.c | 37 +++++++++++-------------------------- + glib/gspawn.h | 5 ++++- + 2 files changed, 15 insertions(+), 27 deletions(-) + +commit c515c3ed111a721047d014832c2fc24bd1adb4a0 +Author: Colin Walters +AuthorDate: Tue May 22 16:06:10 2012 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 17 14:27:07 2013 -0400 + + gio: Add private API to create win32 streams from fds + + This will be used by GSubprocess. + + https://bugzilla.gnome.org/show_bug.cgi?id=672102 + + gio/Makefile.am | 1 + + gio/giowin32-priv.h | 42 +++++++++++++++++++++++++++++++++++++++++ + gio/gwin32inputstream.c | 49 + +++++++++++++++++++++++++++++++++++++----------- + gio/gwin32outputstream.c | 49 + +++++++++++++++++++++++++++++++++++++----------- + 4 files changed, 119 insertions(+), 22 deletions(-) + +commit aaddd823bcce4c5f751cb694c7c7d5064978213b +Author: Ihar Hrachyshka +AuthorDate: Thu Oct 10 17:23:00 2013 +0400 +Commit: Colin Walters +CommitDate: Thu Oct 17 13:20:14 2013 -0400 + + Removed obsolete makefile rules + + Removed test, test-report, full-report, perf-report. They all + come from + an old (now obsolete) approach toward glib testing[1]. Now the blessed + ways to test glib are 'make check' and installed tests. + + [1]: + https://mail.gnome.org/archives/gtk-devel-list/2007-November/msg00000.html + + https://bugzilla.gnome.org/show_bug.cgi?id=709995 + + docs/Makefile.am | 1 - + glib.mk | 59 + ++------------------------------------------------------ + 2 files changed, 2 insertions(+), 58 deletions(-) + +commit a2f6f0d2f6c8fa0a9ee5ab483af6cea5d5766dfe +Author: Jasper St. Pierre +AuthorDate: Thu Oct 17 13:02:11 2013 -0400 +Commit: Jasper St. Pierre +CommitDate: Thu Oct 17 13:04:06 2013 -0400 + + gtask: Fix invalid name in documentation + + gio/gtask.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9defb6b1b1de18b6005148e036941e89b400dbd2 +Author: Ryan Lortie +AuthorDate: Sun Jul 14 19:43:19 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 17 10:12:27 2013 -0400 + + New gapplication(1) tool + + This is essentially a commandline implementation of the client-side of + the org.freedesktop.Application D-Bus interface. + + It includes support for tab-completion based on desktop files + and their + contents. + + https://bugzilla.gnome.org/show_bug.cgi?id=704218 + + docs/reference/gio/Makefile.am | 1 + + docs/reference/gio/gapplication.xml | 352 +++++++++++++++++++++++++++ + gio/.gitignore | 1 + + gio/Makefile.am | 9 + + gio/completion/gapplication | 55 +++++ + gio/gapplication-tool.c | 463 + ++++++++++++++++++++++++++++++++++++ + 6 files changed, 881 insertions(+) + +commit 4e1e36a7f0d3254bad01aaf3ba94dc70b230ef62 +Author: Ryan Lortie +AuthorDate: Thu Oct 17 08:22:11 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 17 08:22:11 2013 -0400 + + Revert "gapplication: don't rely on cmdline being finalized + immediately" + + This reverts commit c5748328bee08e322997cc4703c372f6866a1693. + + gio/gapplicationimpl-dbus.c | 26 +++----------------------- + 1 file changed, 3 insertions(+), 23 deletions(-) + +commit c5748328bee08e322997cc4703c372f6866a1693 +Author: Cosimo Cecchi +AuthorDate: Fri Sep 13 11:38:47 2013 -0700 +Commit: Matthias Clasen +CommitDate: Wed Oct 16 23:06:13 2013 -0400 + + gapplication: don't rely on cmdline being finalized immediately + + The GApplicationCommandLine DBus implementation currently calls + g_dbus_method_invocation_return_value() in its finalize() + implementation + only, relying on the object being destroyed after g_object_unref() is + called on it inside g_application_impl_method_call(). + + While this is usually fine for C applications, when overriding the + command_line vfunc from language bindings, the binding might add extra + references to the object, which might not be released immediately + - e.g. + because they're garbage collected, or possibly even leaked. The same + scenario could happen in a C application that decides to keep a + reference to the passed-in GApplicationCommandLine object. + + To ensure the CommandLine DBus method always gets a reply after the + invocation of command_line in the primary instance, explicitly + send the + message back before dropping our reference to the object. + + https://bugzilla.gnome.org/show_bug.cgi?id=708042 + + gio/gapplicationimpl-dbus.c | 26 +++++++++++++++++++++++--- + 1 file changed, 23 insertions(+), 3 deletions(-) + +commit be2656f13952dd22d348ff5e3f43240700cdef5a +Author: Colin Walters +AuthorDate: Wed Oct 16 10:10:22 2013 -0400 +Commit: Colin Walters +CommitDate: Wed Oct 16 13:33:14 2013 -0400 + + g_file_copy: Fall back to pathname queryinfo to help gvfs backends + + It's not difficult to do; not all backends implement it, and for some + it may be difficult to implement query_info_on_read(), so let's just + do both. + + https://bugzilla.gnome.org/show_bug.cgi?id=706254 + + gio/gfile.c | 23 ++++++++++++++++++++++- + 1 file changed, 22 insertions(+), 1 deletion(-) + +commit 4fea5c0029bdb8d800c5857bfba983147fe53445 +Author: Xavier Claessens +AuthorDate: Tue Oct 15 11:02:40 2013 -0400 +Commit: Xavier Claessens +CommitDate: Tue Oct 15 11:02:40 2013 -0400 + + Fix wrong function names in g_str_match_string() documentation + + glib/gstrfuncs.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit b2c15f18b2f35d2363922469e3497e5a10459e52 +Author: Ihar Hrachyshka +AuthorDate: Sat Oct 12 16:43:16 2013 +0400 +Commit: Colin Walters +CommitDate: Tue Oct 15 10:11:12 2013 -0400 + + Updated reference to README.commits + + The major useful information regarding commits is now placed in + README.commits, not README. + + https://bugzilla.gnome.org/show_bug.cgi?id=709994 + + HACKING | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c6d7e1ede766ea0227d2a594a3129445d03a6dfe +Author: Andika Triwidada +AuthorDate: Tue Oct 15 11:54:59 2013 +0700 +Commit: Andika Triwidada +CommitDate: Tue Oct 15 11:54:59 2013 +0700 + + Updated Indonesian translation + + po/id.po | 244 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 124 insertions(+), 120 deletions(-) + +commit 04202954308471196817318b12df64665656fcda +Author: Xavier Claessens +AuthorDate: Wed Oct 9 14:32:58 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 14 16:48:47 2013 -0400 + + Add testcase for search utilities functions + + https://bugzilla.gnome.org/show_bug.cgi?id=709753 + + glib/tests/.gitignore | 1 + + glib/tests/Makefile.am | 1 + + glib/tests/search-utils.c | 76 + +++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 78 insertions(+) + +commit 38dfce5992db803de0a179705ab93109012faa3c +Author: Ryan Lortie +AuthorDate: Mon Oct 14 14:37:10 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 14 16:48:42 2013 -0400 + + Add simple string "search" function + + Add a pair of functions to make it easier to do simple string + matching. + + This will be useful for use with things like GtkSearchBar and + will also + be the basis of the searching done by the (soon to appear) + g_desktop_app_info_search() + + https://bugzilla.gnome.org/show_bug.cgi?id=709753 + + docs/reference/glib/glib-sections.txt | 2 + + glib/gstrfuncs.c | 239 + ++++++++++++++++++++++++++++++++++ + glib/gstrfuncs.h | 10 ++ + 3 files changed, 251 insertions(+) + +commit 4c510801cfc8120d7dea7ae8121832e8d17d2453 +Author: Ryan Lortie +AuthorDate: Mon Oct 14 14:36:34 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 14 16:48:37 2013 -0400 + + Add g_str_is_ascii() + + Add a function for checking if a string is pure ASCII. + + https://bugzilla.gnome.org/show_bug.cgi?id=709753 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gstrfuncs.c | 23 +++++++++++++++++++++++ + glib/gstrfuncs.h | 2 ++ + 3 files changed, 26 insertions(+) + +commit c4c3ee6087d36603b29a8a1201c7171d2f99c0b1 +Author: Noah Massey +AuthorDate: Sun Oct 13 10:25:39 2013 -0400 +Commit: Colin Walters +CommitDate: Sun Oct 13 10:25:39 2013 -0400 + + gmain: mark newest id used when source id overflows + + When the source id reaches G_MAXUINT (just prior to overflow), we + record the existing source ids to prevent reassigning them. As we are + about to assign G_MAXUINT to the triggering source, that id should be + added as well. + + https://bugzilla.gnome.org/show_bug.cgi?id=710002 + + glib/gmain.c | 1 + + 1 file changed, 1 insertion(+) + +commit e2d5282636bcbf4c8ac64a599bb020d33cd59897 +Author: Colin Walters +AuthorDate: Tue Oct 8 12:17:16 2013 -0400 +Commit: Colin Walters +CommitDate: Tue Oct 8 12:19:11 2013 -0400 + + GMemoryOutputStream: Don't return -1 as a gboolean in precondition + + Since it could confuse callers (admittedly who are already violating + a precondition). + + Just spotted while adapting some bits of this code for a ssh library. + + gio/gmemoryoutputstream.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 30772e74bf42cf7be67041df21316d305027f0fc +Author: Nilamdyuti Goswami +AuthorDate: Mon Oct 7 12:56:28 2013 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Mon Oct 7 12:56:28 2013 +0530 + + Assamese translation updated + + po/as.po | 246 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 125 insertions(+), 121 deletions(-) + +commit 8e17040c159bf0a7cf060f12e467a0ad1f5b6741 +Author: Dan Winship +AuthorDate: Fri Oct 4 12:58:48 2013 -0400 +Commit: Dan Winship +CommitDate: Sun Oct 6 14:24:43 2013 -0400 + + Fix overloading of "source" and "target" terminology in GBinding + + GBindingTransformFunc called its arguments "source_value" and + "target_value", but in the transform_from function of a bidirectional + binding, "source_value" comes from the target object, and + "target_value" comes from the source object, which quickly gets + confusing if you need to use g_binding_get_source(), etc, in the + function. + + Of course developers can call their transform function arguments + whatever they want, but many will copy from the headers/docs to start + out, so use less confusing names here ("from_value" and "to_value"). + + Also, fix the documentation to describe the bidirectional case + correctly. + + https://bugzilla.gnome.org/show_bug.cgi?id=709440 + + gobject/gbinding.c | 44 ++++++++++++++++++++++---------------------- + gobject/gbinding.h | 17 ++++++++++------- + gobject/tests/binding.c | 24 ++++++++++++------------ + 3 files changed, 44 insertions(+), 41 deletions(-) + +commit be7f40185fb2ce884112c1f8a4b196ea65350466 +Author: Kalev Lember +AuthorDate: Sat Sep 21 13:52:09 2013 +0200 +Commit: Kalev Lember +CommitDate: Fri Oct 4 22:08:36 2013 +0200 + + xdgmime: Fix an invalid read + + This commit factors out a function for comparing string suffixes, + and at + the same time makes it safe for mime types that are shorter than the + "/*" suffix. + + ==25418== Invalid read of size 1 + ==25418== at 0x3C6D0F9D22: __gio_xdg_cache_mime_type_subclass + (xdgmimecache.c:848) + ==25418== by 0x3C6D09ED8C: g_content_type_is_a (gcontenttype.c:158) + ==25418== by 0x34D8031E95: gtk_recent_filter_filter + (gtkrecentfilter.c:733) + ==25418== by 0x34D802F167: _gtk_recent_chooser_get_items + (gtkrecentchooserutils.c:387) + ==25418== by 0x34D802D07F: idle_populate_func + (gtkrecentchoosermenu.c:1011) + ==25418== by 0x34D7A20477: gdk_threads_dispatch (gdk.c:804) + ==25418== by 0x3C6C0492F5: g_main_context_dispatch (gmain.c:3065) + ==25418== by 0x3C6C049677: g_main_context_iterate.isra.23 + (gmain.c:3712) + ==25418== by 0x3C6C04972B: g_main_context_iteration (gmain.c:3773) + ==25418== by 0x34D7FC2AF4: gtk_main_iteration (gtkmain.c:1262) + ==25418== by 0x408EB4: main (in /usr/bin/glade) + + https://bugzilla.gnome.org/show_bug.cgi?id=708529 + + gio/xdgmime/xdgmime.c | 19 ++++++++++++++----- + gio/xdgmime/xdgmimecache.c | 19 ++++++++++++++----- + 2 files changed, 28 insertions(+), 10 deletions(-) + +commit 5aead642c29d2fcd4cc4152449eb434b52edc6af +Author: John Ralls +AuthorDate: Fri Oct 4 11:45:47 2013 -0700 +Commit: John Ralls +CommitDate: Fri Oct 4 11:47:46 2013 -0700 + + Restore gl_GLIBC21 to configure; needed for libcharset + + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +commit e0ffd5c184bd1c0e6d602c406f53ed5f6b765f88 +Author: Ryan Lortie +AuthorDate: Thu Oct 3 10:02:08 2013 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 4 12:19:03 2013 -0400 + + appinfo: Don't try DBusActivatable with load_from_keyfile + + We can't get the name of the filename, so we can't determine the + application + ID. We'll have to fallback on Exec= for this case. + + https://bugzilla.gnome.org/show_bug.cgi?id=709326 + + gio/gdesktopappinfo.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 5d7a7df867543644a4dc55ba980833743ffa1859 +Author: Ryan Lortie +AuthorDate: Thu Oct 3 12:39:53 2013 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 4 12:18:20 2013 -0400 + + Add g_key_file_save_to_file() + + To write a keyfile to disk. + + https://bugzilla.gnome.org/show_bug.cgi?id=309224 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gkeyfile.c | 38 + +++++++++++++++++++++++++++++++++++ + glib/gkeyfile.h | 4 ++++ + 3 files changed, 43 insertions(+) + +commit 5a269e5a90181a5cafce90e7e5d7bc4f42f47f52 +Author: Dan Winship +AuthorDate: Thu Sep 19 16:09:38 2013 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 4 09:51:31 2013 -0400 + + gcredentials: add Solaris support + + Based on patches from Igor Pashev. + + https://bugzilla.gnome.org/show_bug.cgi?id=705029 + + gio/gcredentials.c | 52 + +++++++++++++++++++++++++++++++++++++++---- + gio/gcredentialsprivate.h | 12 ++++++++++ + gio/gioenums.h | 4 +++- + gio/gsocket.c | 36 ++++++++++++++++++++++++------ + gio/gunixcredentialsmessage.c | 2 ++ + gio/tests/credentials.c | 18 +++++++++++++++ + 6 files changed, 112 insertions(+), 12 deletions(-) + +commit 66edac7fb9f44009cdcac68c102c77d880e139a3 +Author: Dan Winship +AuthorDate: Thu Sep 19 12:56:56 2013 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 4 09:51:31 2013 -0400 + + gcredentials: add Hurd support + + It uses the same system as FreeBSD. + + https://bugzilla.gnome.org/show_bug.cgi?id=708265 + + gio/gcredentials.c | 5 +++-- + gio/gcredentialsprivate.h | 2 +- + 2 files changed, 4 insertions(+), 3 deletions(-) + +commit cedd697bf80faf18d0d42b3e4d8bef5a5cf8ef9f +Author: Dan Winship +AuthorDate: Wed Sep 18 13:40:09 2013 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 4 09:51:31 2013 -0400 + + gcredentials: add internal macros to simplify all the #ifdefs + + Rather than having lots of obscure platform-based #ifdefs all over + gio, define some macros in gcredentialsprivate.h, and use those to + simplify the rest of the code. + + https://bugzilla.gnome.org/show_bug.cgi?id=701482 + + gio/Makefile.am | 1 + + gio/gcredentials.c | 174 + ++++++++++++++++++------------------------ + gio/gcredentialsprivate.h | 51 +++++++++++++ + gio/gsocket.c | 36 ++++----- + gio/gunixcredentialsmessage.c | 140 ++++++++++++--------------------- + gio/tests/credentials.c | 53 +++++++++---- + gio/tests/gdbus-peer.c | 48 ++++-------- + 7 files changed, 238 insertions(+), 265 deletions(-) + +commit 32d2539295308711ec97b37feb104e1be04ba454 +Author: Giovanni Campagna +AuthorDate: Thu Oct 3 20:26:18 2013 +0200 +Commit: Giovanni Campagna +CommitDate: Fri Oct 4 02:38:17 2013 +0200 + + GDBusProxy: add flag to control autostarting at construction time + + Sometimes the application doesn't want to autostart a service + when it creates a proxy, but wants the service autostarted when + it makes the first method call. Allow that behavior with a new + flag. + + https://bugzilla.gnome.org/show_bug.cgi?id=708828 + + gio/gdbusproxy.c | 15 ++++++++------- + gio/gioenums.h | 7 ++++++- + 2 files changed, 14 insertions(+), 8 deletions(-) + +commit c8e1dbb106e27653176a1692f05c287cd8ca0bfd +Author: Ryan Lortie +AuthorDate: Sat Jul 27 15:08:58 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 3 10:40:25 2013 -0400 + + gdesktopappinfo: Large-scale whitespace fixup + + Fix up a lot of whitespace issues in this file since we're about to do + some pretty serious rewriting here anyway... + + Add some fold markers while we're at it. + + gio/gdesktopappinfo.c | 1208 + +++++++++++++++++++++++++------------------------ + 1 file changed, 626 insertions(+), 582 deletions(-) + +commit b0601e75583600d0ea54e67f98ba91a7580df07c +Author: Ryan Lortie +AuthorDate: Wed Jul 24 17:48:37 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 3 10:40:25 2013 -0400 + + gdesktopappinfo: rework search path + + Change the search path to be a global array of 'DesktopFileDir' + structures and + change the 'get' function to an 'ensure' function. + + This is just a straight-up refactor. Future patches will expand the + DesktopFileDir structure. + + gio/gdesktopappinfo.c | 95 + ++++++++++++++++++++++++++++----------------------- + 1 file changed, 53 insertions(+), 42 deletions(-) + +commit 5e59ab8e8cb953bf9212ed47e8a41d34611a10de +Author: Ryan Lortie +AuthorDate: Wed Jul 24 17:28:43 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 3 10:40:25 2013 -0400 + + gdesktopappinfo: remove global_defaults_cache + + ...and some related functions. + + This variable is also used for nothing at all. + + gio/gdesktopappinfo.c | 28 +++------------------------- + 1 file changed, 3 insertions(+), 25 deletions(-) + +commit b95ef4aad457d502973ae6396e3bf45e3ba12753 +Author: Ryan Lortie +AuthorDate: Wed Jul 24 17:26:45 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 3 10:40:25 2013 -0400 + + gdesktopappinfo: remove should_ping_mime_monitor + + This variable is used for nothing... + + gio/gdesktopappinfo.c | 18 +----------------- + 1 file changed, 1 insertion(+), 17 deletions(-) + +commit 33762a417381db8cdd3229f12959ed01c0389165 +Author: Ryan Lortie +AuthorDate: Thu Jul 25 14:05:36 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 3 10:37:47 2013 -0400 + + glocalfile: add private worker monitor APIs + + Add a convenient and race-free method of watching local files from the + GLib worker thread. + + Without this, the race-free way to create a monitor that dispatches + events to the worker thread looked something like this: + + - dispatch an idle to the worker thread + - from the idle, create the monitor and connect signals + - from the original thread, wait (on a cond?) until the worker thread + has finished setting up the monitor + - read the file that you were monitoring + + which is just ridiculously complicated... + + To use the new API: + + monitor = g_local_file_monitor_new_in_worker ("/path/to/some/file", + G_FILE_MONITOR_NONE, + &error); + g_assert_no_error (error); + + g_signal_connect (monitor, "changed", G_CALLBACK (callback), NULL); + + g_local_file_monitor_start (monitor); + + 'callback' will run from the GLib worker thread. + + This is the reason that the start() call was introduced in the + previous + commit. The backends that don't use the start() call will have a very + thin race between creating the monitor and connecting the signal, but + hopefully they will be fixed soon. + + These new APIs will be used (at least) from gdesktopappinfo to + watch for + changes in the desktop file directories. + + https://bugzilla.gnome.org/show_bug.cgi?id=704887 + + gio/glocaldirectorymonitor.c | 10 ++++++---- + gio/glocaldirectorymonitor.h | 7 +++++++ + gio/glocalfile.c | 26 ++++++++++++++++++++++++-- + gio/glocalfilemonitor.c | 6 ++++-- + gio/glocalfilemonitor.h | 7 +++++++ + 5 files changed, 48 insertions(+), 8 deletions(-) + +commit 5409d7827e1e51d8efd078e3f36eddc3c0405804 +Author: Ryan Lortie +AuthorDate: Thu Jul 25 14:17:09 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 3 10:37:35 2013 -0400 + + GFileMonitor: support specifying a context + + Add a new "context" construct-only property to allow explicitly + specifying the context in which events should be dispatched. + + https://bugzilla.gnome.org/show_bug.cgi?id=704887 + + gio/gfilemonitor.c | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +commit 700677de512e19060337121692058627fe717d24 +Author: Ryan Lortie +AuthorDate: Thu Jul 25 13:48:50 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 3 10:37:30 2013 -0400 + + inotify: stop using constructor() + + and start using the new start() vcall on the local monitor classes. + + I only port inotify because I am uncomfortable making changes to the + other monitor backends without having a way of testing them. + + https://bugzilla.gnome.org/show_bug.cgi?id=704887 + + gio/inotify/ginotifydirectorymonitor.c | 36 ++++++-------------- + gio/inotify/ginotifyfilemonitor.c | 62 + ++++++++++------------------------ + 2 files changed, 28 insertions(+), 70 deletions(-) + +commit b050dc3c0a2236887719ddc7d1f53866bf4d5267 +Author: Ryan Lortie +AuthorDate: Thu Jul 25 13:29:16 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 3 10:37:19 2013 -0400 + + local monitors: make more idiomatic use of GObject + + Stop abusing constructor() to do startup work, adding _start() calls + instead. + + The backends themselves still use constructor() although a patch + will be + following to also fix inotify. + + The reason for using a separate start() call instead of constructed() + will become apparent in future commits. + + https://bugzilla.gnome.org/show_bug.cgi?id=704887 + + gio/glocaldirectorymonitor.c | 73 + +++++++++++++++----------------------------- + gio/glocaldirectorymonitor.h | 2 ++ + gio/glocalfilemonitor.c | 66 ++++++++++++--------------------------- + gio/glocalfilemonitor.h | 3 ++ + 4 files changed, 48 insertions(+), 96 deletions(-) + +commit 1ddfd9d98ebb772534eba27bdf275cc0507a5b09 +Author: Ryan Lortie +AuthorDate: Thu Jul 25 13:19:56 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 3 10:35:22 2013 -0400 + + directory monitor: use the right 'mount_notify' + + During initialisation of a directory monitor with the + G_FILE_MONITOR_WATCH_MOUNTS flag set, GLocalDirectory monitor will + add a + UNIX mount watch in case the file notification backend doesn't support + reporting these events for itself. + + Unfortunately, it was performing the check incorrectly, resulting in a + monitor always being added. + + Fix that, and add the #define for + G_LOCAL_DIRECTORY_MONITOR_GET_CLASS() + that was also missing (since the fix depends on it). + + https://bugzilla.gnome.org/show_bug.cgi?id=704882 + + gio/glocaldirectorymonitor.c | 2 +- + gio/glocaldirectorymonitor.h | 1 + + 2 files changed, 2 insertions(+), 1 deletion(-) + +commit dd4c3695b4e4559179c2a10b7e1a6a13f8f8293e +Author: Colin Walters +AuthorDate: Wed Oct 2 10:32:03 2013 -0400 +Commit: Colin Walters +CommitDate: Wed Oct 2 11:23:01 2013 -0400 + + goutputstream: Add clear warning about short writes to _write_bytes() + and async version + + Matthew Barnes noted this on IRC a few days ago. I just had this file + open for other reasons and decided to tweak the docs to make this trap + more clear. + + https://bugzilla.gnome.org/show_bug.cgi?id=709301 + + gio/goutputstream.c | 62 + ++++++++++++++++++----------------------------------- + 1 file changed, 21 insertions(+), 41 deletions(-) + +commit 27898916d42f0e827cf2e99c12ab7bcd0a3712a9 +Author: Ryan Lortie +AuthorDate: Thu Aug 8 18:50:21 2013 +0200 +Commit: Ryan Lortie +CommitDate: Wed Oct 2 12:37:09 2013 -0400 + + g_settings_list_children: only list viable schemas + + Don't return children with invalid schemas from + g_settings_list_children() (ie: missing schemas or mismatched paths). + This prevents gsettings list-recursively from crashing when broken + schemas are installed on the system. + + https://bugzilla.gnome.org/show_bug.cgi?id=705688 + + gio/gsettingsschema.c | 56 + ++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 55 insertions(+), 1 deletion(-) + +commit d1e4f3dd1a67a646314918d90119e352d34315cb +Author: Christian Persch +AuthorDate: Tue Oct 1 15:40:43 2013 +0200 +Commit: Christian Persch +CommitDate: Wed Oct 2 18:22:16 2013 +0200 + + unicode: Update to unicode 6.3.0 + + No new blocks were added in 6.3, and only 5 new characters to be used + with the updated BiDi algorithm. And some character properties + were changed. + + See http://www.unicode.org/versions/Unicode6.3.0/ for more + information. + + https://bugzilla.gnome.org/show_bug.cgi?id=709227 + + glib/gscripttable.h | 11 ++++++----- + glib/gunibreak.h | 31 ++++++++++++++----------------- + glib/gunichartables.h | 34 +++++++++++++++++----------------- + 3 files changed, 37 insertions(+), 39 deletions(-) + +commit 2f57139b282f2ddf110966d4d0e80c6409230f67 +Author: Simon Feltman +AuthorDate: Tue Oct 1 03:38:24 2013 -0700 +Commit: Simon Feltman +CommitDate: Tue Oct 1 18:31:17 2013 -0700 + + Fix crashes in various GParamSpec creation functions + + Add NULL check and return after calls to g_param_spec_internal + in GParamSpec + creation functions. This avoids glib crashing due to things like + badly named + properties. + + https://bugzilla.gnome.org/show_bug.cgi?id=707887 + + gobject/gparamspecs.c | 52 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 52 insertions(+) + +commit 75bb906e5ea7927f8d411085e8e7539c5b85c313 +Author: Michael Forney +AuthorDate: Tue Oct 1 05:19:55 2013 -0700 +Commit: Colin Walters +CommitDate: Tue Oct 1 09:00:10 2013 -0400 + + Add missing string.h include + + Required for memset() + + gio/gnetworkmonitornetlink.c | 1 + + 1 file changed, 1 insertion(+) + +commit 713614608d38ba5e16ffd54796ed60ac5dc2e004 +Author: Ryan Lortie +AuthorDate: Mon Sep 30 13:06:30 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 30 13:06:30 2013 -0400 + + Fix a careless mistake in the last commit + + Thanks Colin :) + + glib/gmain.c | 1 + + 1 file changed, 1 insertion(+) + +commit 5ad7893b51d8652561dff72c70d6cb53416a31bf +Author: Ryan Lortie +AuthorDate: Wed Jun 12 14:57:09 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 30 12:41:06 2013 -0400 + + gmain: Remove dispatching source stack + + This stack exists only to answer the question of "what is the + currently + dispatching source" and is handled in a way that makes it very clear + that we don't need to be using a linked list at all... + + Just store the GSource directly. + + Independently discovered (and same solution) by Phillip Susi. + + https://bugzilla.gnome.org/show_bug.cgi?id=709113 + + glib/gmain.c | 37 ++++++++++++++----------------------- + 1 file changed, 14 insertions(+), 23 deletions(-) + +commit 4e9e7d0cba53a711bd650e9a5e28452b93f0d849 +Author: Mike Ruprecht +AuthorDate: Mon Feb 18 08:12:50 2013 -0600 +Commit: Dan Winship +CommitDate: Sun Sep 29 17:48:41 2013 -0400 + + GOutputStream: Use async read/write of streams in splice_async() + + There are some corner cases where using the sync version of read/write + in a thread could cause thread-safety issues. In these cases it's + possible to override the output stream's splice_async() function, + but for input streams one would need to do some acrobatics to + stay thread-safe. Alternatively, some implementations may not even + override their sync read/write functions. + + This patch refactors the default splice_async() implementation to + call the sync read and write functions in a thread only when both + async versions are thread-based. When one or both are non-threaded, + it calls the virtual write_async() and read_async() functions of the + involved streams within the same thread. + + https://bugzilla.gnome.org/show_bug.cgi?id=691581 + + gio/goutputstream.c | 180 + ++++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 175 insertions(+), 5 deletions(-) + +commit 87e5617a65883c49eab9291db4a644a520362ed0 +Author: Mike Ruprecht +AuthorDate: Mon Feb 18 07:58:58 2013 -0600 +Commit: Dan Winship +CommitDate: Sun Sep 29 17:48:41 2013 -0400 + + GOutputStream: Split _close_async for internal use + + Refactor g_output_stream_close_async() into itself and an internal + variant for potential use inside other operations (splice_async). + The internal version must be called between + g_output_stream_set_pending() and g_output_stream_clear_pending(). + + https://bugzilla.gnome.org/show_bug.cgi?id=691581 + + gio/goutputstream.c | 76 + +++++++++++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 68 insertions(+), 8 deletions(-) + +commit 416ca8ad5729bfe92c1e32e1f9464849870a5ede +Author: Mike Ruprecht +AuthorDate: Sun Feb 24 09:09:05 2013 -0600 +Commit: Dan Winship +CommitDate: Sun Sep 29 17:48:41 2013 -0400 + + GOutputStream: Rename _g_output_stream_close_internal() for + consistency + + https://bugzilla.gnome.org/show_bug.cgi?id=691581 + + gio/goutputstream.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit e967a76728700d27719388653946c9190e95063b +Author: Mike Ruprecht +AuthorDate: Sat Feb 23 15:13:53 2013 -0600 +Commit: Dan Winship +CommitDate: Sun Sep 29 17:48:40 2013 -0400 + + tests: Add testcases for g_output_stream_splice_async() + + Previously, no testcases tested the close flags of + g_output_stream_splice_async. This patch adds tests for that and + also tests various combinations of threaded and non-threaded + GInputStream async reads and GOutputStream async writes. + + https://bugzilla.gnome.org/show_bug.cgi?id=691581 + + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 1 + + gio/tests/async-splice-output-stream.c | 205 + +++++++++++++++++++++++++++++++++ + 3 files changed, 207 insertions(+) + +commit dec3bfeebc20d8fee9d6ddd6a7187ac762887f2d +Author: Mike Ruprecht +AuthorDate: Sat Feb 23 17:42:49 2013 -0600 +Commit: Dan Winship +CommitDate: Sun Sep 29 17:48:40 2013 -0400 + + GOutputStream: Add g_output_stream_async_write_is_via_threads() + + In implementing a better g_output_stream_splice_async() and possibly + other situtations it's helpful to know whether the output stream's + write function internally uses threads. If it and the input stream's + read async functions use threads, then the splice function could + spawn a single thread for better efficiency. + + This patch adds a function to determine whether an output stream's + g_output_stream_write_async() function internally uses threads. + + https://bugzilla.gnome.org/show_bug.cgi?id=691581 + + gio/gioprivate.h | 2 ++ + gio/goutputstream.c | 26 ++++++++++++++++++++++++-- + 2 files changed, 26 insertions(+), 2 deletions(-) + +commit 94a232a4ed6245d0189f7de182f10a7c3825dc73 +Author: Mike Ruprecht +AuthorDate: Sat Feb 23 17:32:31 2013 -0600 +Commit: Dan Winship +CommitDate: Sun Sep 29 17:48:40 2013 -0400 + + GInputStream: Add g_input_stream_async_read_is_via_threads() + + In implementing a better g_output_stream_splice_async() and possibly + other situtations it's helpful to know whether the input stream's + read function internally uses threads. If it and the output stream's + write async functions use threads, then the splice function could + spawn a single thread for better efficiency. + + This patch adds a function to determine whether an input stream's + g_input_stream_read_async() function internally uses threads. + + https://bugzilla.gnome.org/show_bug.cgi?id=691581 + + gio/Makefile.am | 1 + + gio/ginputstream.c | 32 +++++++++++++++++++++++++------- + gio/gioprivate.h | 32 ++++++++++++++++++++++++++++++++ + 3 files changed, 58 insertions(+), 7 deletions(-) + +commit ab5aa2aa3a43cbd94aa6d7f3d683f9875df7249a +Author: John Ralls +AuthorDate: Sun Sep 29 11:33:30 2013 -0700 +Commit: John Ralls +CommitDate: Sun Sep 29 11:33:30 2013 -0700 + + Fix the -Werror=format-nonliteral fixes for older GCCs + + They don't allow that pragma inside functions. + + gio/gcontenttype.c | 6 +++--- + gio/gthreadedresolver.c | 8 +++++--- + glib/gfileutils.c | 10 +++++----- + glib/gmarkup.c | 8 +++++--- + glib/gstrfuncs.c | 7 ++++--- + glib/gutils.c | 8 +++++--- + 6 files changed, 27 insertions(+), 20 deletions(-) + +commit 09d83640a8e79bff71cddf90d39b40ef411d30c9 +Author: John Ralls +AuthorDate: Sat Sep 28 16:44:32 2013 -0700 +Commit: Colin Walters +CommitDate: Sun Sep 29 11:03:16 2013 -0400 + + More -Werror=format-nonliteral fixes + + This fixes the build with CLang. + + https://bugzilla.gnome.org/show_bug.cgi?id=702516 + + gio/gcontenttype.c | 5 ++++- + gio/gthreadedresolver.c | 3 +++ + glib/gmarkup.c | 5 ++++- + glib/gstrfuncs.c | 5 ++++- + glib/gutils.c | 3 +++ + 5 files changed, 18 insertions(+), 3 deletions(-) + +commit 38d1658b879c036f086b9dd5195d95bde8e08785 +Author: Colin Walters +AuthorDate: Mon Jun 17 17:49:12 2013 -0400 +Commit: Colin Walters +CommitDate: Sun Sep 29 11:02:30 2013 -0400 + + gfileutils: Make -Werror=format-nonliteral happy + + I tried to please it by using G_GNUC_FORMAT, but that didn't work, so + let's just fall back to pushing an ignore. + + https://bugzilla.gnome.org/show_bug.cgi?id=702516 + + glib/gfileutils.c | 50 ++++++++++++++++++++++++++++++++++++-------------- + 1 file changed, 36 insertions(+), 14 deletions(-) + +commit b5ce635a423c8fbf226d46b3e7cdd106561fecbb +Author: Dan Winship +AuthorDate: Sat Sep 28 12:31:52 2013 -0400 +Commit: Dan Winship +CommitDate: Sat Sep 28 12:31:52 2013 -0400 + + gmessages: fix clang annotations to work with older versions + + https://bugzilla.gnome.org/show_bug.cgi?id=708793 + + glib/gmessages.h | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit 4a953af8a53552931b7a5e32849f1ddca6658c4e +Author: Dan Winship +AuthorDate: Sat Sep 28 12:18:14 2013 -0400 +Commit: Dan Winship +CommitDate: Sat Sep 28 12:18:14 2013 -0400 + + gio: make gnetworking.h nodist + + https://bugzilla.gnome.org/show_bug.cgi?id=708972 + + gio/Makefile.am | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit c9ac45a023dda81d232e4efc8e9642e2b849a973 +Author: Dan Winship +AuthorDate: Sat Sep 28 10:39:01 2013 -0400 +Commit: Dan Winship +CommitDate: Sat Sep 28 10:39:01 2013 -0400 + + .gitignore: add "signals" + + tests/gobject/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit e3fa9c9ab6a2b1f9955c457f413ddc81d0c1f3ff +Author: Patrick Welche +AuthorDate: Fri Sep 27 10:09:32 2013 +0100 +Commit: Patrick Welche +CommitDate: Fri Sep 27 17:14:43 2013 +0100 + + Only use SA_RESTART if it exists + + Fixes build on QNX (and possibly HPUX given Bug 168352) + Patch essentially from pkgsrc devel/glib2/patches/patch-ai + + https://bugzilla.gnome.org/show_bug.cgi?id=583321 + + glib/gmain.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 2d8e5ef81e8116eeb8fea18292360dd3166b4b4e +Author: Bastien Nocera +AuthorDate: Wed Sep 25 16:14:17 2013 +0200 +Commit: Alexander Larsson +CommitDate: Fri Sep 27 09:52:57 2013 +0200 + + gdesktopappinfo: Call g_file_get_path() on demand + + Rather than always calling out to g_file_get_path() (which + might block, whatever the documentation might say), postpone + the call until we actually need it. + + https://bugzilla.gnome.org/show_bug.cgi?id=708753 + + gio/gdesktopappinfo.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 458c1c0f16566e9ddfabe3c211adcb7815730e28 +Author: Robert Ancell +AuthorDate: Fri Sep 27 14:52:51 2013 +1200 +Commit: Robert Ancell +CommitDate: Fri Sep 27 14:52:51 2013 +1200 + + gio: Fix documentation for GSocketControlMessage that refers to a + 'file description' instead of a 'file descriptor' + + gio/gsocketcontrolmessage.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0167c3340d8201dca8e9031b61703bbc5ed6ce33 +Author: Jan Schmidt +AuthorDate: Wed Sep 25 19:22:26 2013 +1000 +Commit: Jan Schmidt +CommitDate: Fri Sep 27 10:52:50 2013 +1000 + + gio: Fix -Werror format string errors from mismatched ints. + + gio/gdbusmessage.c | 8 ++++---- + gio/gdbusprivate.c | 4 ++-- + 2 files changed, 6 insertions(+), 6 deletions(-) + +commit 7eb1e5fc5bc5aa6744bd516463ca2d65104c5a4e +Author: William Orr +AuthorDate: Thu Sep 26 11:02:06 2013 -0700 +Commit: Colin Walters +CommitDate: Thu Sep 26 15:22:51 2013 -0400 + + glocalfile: Only use O_DIRECTORY if available + + Solaris 10 for example doesn't have it. + + https://bugzilla.gnome.org/show_bug.cgi?id=708860 + + configure.ac | 12 ++++++++++++ + gio/glocalfile.c | 6 +++++- + 2 files changed, 17 insertions(+), 1 deletion(-) + +commit e631507c50330157e09fe07a781c004ab1e6b456 +Author: Yuri Myasoedov +AuthorDate: Wed Sep 25 23:11:08 2013 +0400 +Commit: Yuri Myasoedov +CommitDate: Wed Sep 25 23:11:29 2013 +0400 + + Updated Russian translation + + po/ru.po | 1406 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 679 insertions(+), 727 deletions(-) + +commit 3c5aad358c3de1c27dcd86100bc47891d20d80ed +Author: Krzesimir Nowak +AuthorDate: Wed Sep 25 09:39:20 2013 +0200 +Commit: Krzesimir Nowak +CommitDate: Wed Sep 25 09:39:20 2013 +0200 + + Fix typo in GLIB_VERSION_2_40 docs. + + https://bugzilla.gnome.org/show_bug.cgi?id=708714 + + glib/gversionmacros.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 93101f1b8938eb7a679514c96c0ef5aeafa7c3a6 +Author: Shantha kumar +AuthorDate: Wed Sep 25 12:28:53 2013 +0530 +Commit: Shantha kumar +CommitDate: Wed Sep 25 12:28:53 2013 +0530 + + Tamil Translations Updated + + po/ta.po | 139 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 72 insertions(+), 67 deletions(-) + +commit 74314de4d8c13b817fe433a8ff4c5a249cd1d722 +Author: James Strandboge +AuthorDate: Tue Sep 24 13:19:20 2013 +0100 +Commit: Ryan Lortie +CommitDate: Tue Sep 24 09:25:51 2013 -0400 + + gio: Fix typo in the /org/freedesktop/DBus path + + https://bugzilla.gnome.org/show_bug.cgi?id=708677 + + gio/gdbusobjectmanagerclient.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 1d4bb3f5d0e88754aedb04d0a7df0e0c2788e363 +Author: Svante Signell +AuthorDate: Wed Sep 18 16:39:09 2013 +0200 +Commit: Dan Winship +CommitDate: Tue Sep 24 08:59:38 2013 -0400 + + gio/gsocket.c: Fix error code checks when SOCK_CLOEXEC is defined but + not supported on GNU/Hurd. + + https://bugzilla.gnome.org/show_bug.cgi?id=708266 + + gio/gsocket.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 04e784e0c2675e104cc1d39c3e4e649c3a326e2c +Author: Chao-Hsiung Liao +AuthorDate: Tue Sep 24 19:01:24 2013 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Tue Sep 24 19:01:24 2013 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 14 +++++++------- + po/zh_TW.po | 12 ++++++------ + 2 files changed, 13 insertions(+), 13 deletions(-) + +commit d974d2ec8f7b4c8231a4b7b388d93737ebbec9b6 +Author: Ryan Lortie +AuthorDate: Mon Sep 23 17:47:49 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 23 17:47:49 2013 -0400 + + Bump version to 2.39.0 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fbe3ce89a8a3696393d504fdd4372b86837eac6a +Author: Ryan Lortie +AuthorDate: Mon Sep 23 17:46:58 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 23 17:46:58 2013 -0400 + + Introduce version macros for 2.40 + + glib/gversionmacros.h | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit c8de2b11bbbf5705ee20bf68d0c11e455b441312 +Author: Ryan Lortie +AuthorDate: Mon Sep 23 16:14:57 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 23 17:07:33 2013 -0400 + + GLib 2.38.0 + + NEWS | 129 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 4 +- + 2 files changed, 131 insertions(+), 2 deletions(-) + +commit 9da87f597cb81965f697c09a71e7d1dada010561 +Author: Ryan Lortie +AuthorDate: Mon Sep 23 17:04:53 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 23 17:07:33 2013 -0400 + + fix up refcount/properties test case + + Recent changes to the properties testcase made invalid use of + the GArray + free function. This free function takes a pointer to the item to be + freed, not the item itself. Since that item was a pointer to + a GObject, + g_object_unref() was getting a GObject**, rather than a GObject*. + + The use of GArray in this testcase is pretty questionable in the first + place, so just use C arrays instead. + + tests/refcount/properties.c | 43 + +++++++++++++------------------------------ + 1 file changed, 13 insertions(+), 30 deletions(-) + +commit 748c86e45f976639657284a40834484c1724732a +Author: Ryan Lortie +AuthorDate: Mon Sep 23 16:38:49 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 23 17:07:33 2013 -0400 + + gio docs: add some missing functions + + docs/reference/gio/gio-sections.txt | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit abf505fd0e6ae5c353de24621adbf56a083d4e66 +Author: Ryan Lortie +AuthorDate: Mon Sep 23 16:29:24 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 23 16:31:40 2013 -0400 + + More gio-du win32 fixes + + Don't free the utf8 filename before the async function completes. + + also, gitignore + + gio/tests/.gitignore | 1 + + gio/tests/gio-du.c | 9 ++++----- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit 6d08d1191bfe17364c1d3b4634b86d6150c6db3f +Author: Ryan Lortie +AuthorDate: Mon Sep 23 16:15:34 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 23 16:15:52 2013 -0400 + + Revert "gcancellable: allow g_cancellable_disconnect from "cancelled" + handler on same thread" + + This reverts commits 83605e2d0a7b0d39987715cfd046f7b8ef6de94e and + 140fa7ee4669adb3827e3ddea5be57f51ee7af3e. + + gio/gcancellable.c | 32 ++++++++++++-------------------- + 1 file changed, 12 insertions(+), 20 deletions(-) + +commit 140fa7ee4669adb3827e3ddea5be57f51ee7af3e +Author: Alexander Larsson +AuthorDate: Mon Sep 23 09:11:04 2013 +0200 +Commit: Alexander Larsson +CommitDate: Mon Sep 23 09:11:04 2013 +0200 + + cancellable: Minor fix to docs + + The code uses "my_data", not "data" everywhere else. + + gio/gcancellable.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 83605e2d0a7b0d39987715cfd046f7b8ef6de94e +Author: Ray Strode +AuthorDate: Tue Sep 10 15:32:12 2013 -0400 +Commit: Alexander Larsson +CommitDate: Mon Sep 23 09:09:48 2013 +0200 + + gcancellable: allow g_cancellable_disconnect from "cancelled" + handler on same thread + + g_cancellable_disconnect will wait until any pending "cancelled" + handlers finish. This is useful because disconnecting a handler + can have the + side-effect of freeing data that the cancelled handler may rely on. + Unfortunately, the code used to enforce this synchronization between + "cancelled" handlers and g_cancellable_disconnect will also cause + deadlock if the cancelled handler itself calls + g_cancellable_disconect. + + Obviously, if g_cancellable_disconnect is explicitly called by a + "cancelled" + handler, then the "cancelled" handler is shouldering the + responsibility + of not using any data that may be freed by disconnection. + + Also, g_cancellable_disconnect can be called in unexpected places by + lower layers in the code (for instance as a result of + g_source_destroy). + In practice, this means it's easy for deadlocks to inadvertently crop + up when using "cancelled" handlers. + + For these reasons, it would be good to fix the deadlock. + + This commit prevents the deadlock by allowing foregoing + synchronization, + if a pending "cancelled" handler is in the same thread as the + g_cancellabale_disconnnect call. + + https://bugzilla.gnome.org/show_bug.cgi?id=705395 + + gio/gcancellable.c | 30 +++++++++++++++++++----------- + 1 file changed, 19 insertions(+), 11 deletions(-) + +commit 795a36142d447cf8e45668dc999e29612bc4a796 +Author: Duarte Loreto +AuthorDate: Mon Sep 23 00:16:05 2013 +0100 +Commit: Duarte Loreto +CommitDate: Mon Sep 23 00:16:05 2013 +0100 + + Updated Portuguese translation + + po/pt.po | 901 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 456 insertions(+), 445 deletions(-) + +commit bbd8102ee5e553a9c8471bc9863e99b2843caed5 +Author: Claude Paroz +AuthorDate: Sun Sep 22 20:01:57 2013 +0200 +Commit: Claude Paroz +CommitDate: Sun Sep 22 20:01:57 2013 +0200 + + Updated French translation + + po/fr.po | 877 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 440 insertions(+), 437 deletions(-) + +commit 29ef8217665fa1cd000e4668e01dbd638ab61f5e +Author: Ray Strode +AuthorDate: Fri Sep 20 15:20:39 2013 -0400 +Commit: Ray Strode +CommitDate: Fri Sep 20 16:06:02 2013 -0400 + + tests: add signal disconnection test + + This commit adds a test to ensure that during a signal emission, if + a signal handler gets disconnected, it won't be run, even if it would + have run before the disconnection. + + tests/gobject/Makefile.am | 2 + + tests/gobject/signals.c | 135 + ++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 137 insertions(+) + +commit cb7059e17f48c77eeb2e8354ddb64c149a312262 +Author: Ray Strode +AuthorDate: Fri Sep 20 15:41:29 2013 -0400 +Commit: Ray Strode +CommitDate: Fri Sep 20 16:06:02 2013 -0400 + + tests: free properties test object from main thread instead of + helper thread + + The test objects are used from the main thread after the helper + threads + are destroyed, so we need to keep them alive until we're done + using them. + + tests/refcount/properties.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d5c72b334b717584f0ed03ee7cfc5047af9f9e3d +Author: Dieter Verfaillie +AuthorDate: Fri Sep 20 21:07:28 2013 +0200 +Commit: Dieter Verfaillie +CommitDate: Fri Sep 20 21:08:20 2013 +0200 + + docs: fix GSourceFuncs docs + + "returns" at the start of a description continuation + line seems to confuse GTK-Doc's parser. Rearrange + the text a bit to work around this... + + https://bugzilla.gnome.org/show_bug.cgi?id=708445 + + glib/gmain.h | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit e31ce1cfe392c71263ac6b81b4c50c35b923952e +Author: Murray Cumming +AuthorDate: Fri Sep 20 09:27:53 2013 +0200 +Commit: Murray Cumming +CommitDate: Fri Sep 20 09:27:53 2013 +0200 + + gsettings: Correct a GLIB_AVAILABLE_IN_* + + gio/gsettings.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 54e79d7dcb4c0d36ab867e1814ff26b97b4617d9 +Author: Misty De Meo +AuthorDate: Wed Sep 18 23:41:22 2013 -0700 +Commit: Colin Walters +CommitDate: Thu Sep 19 08:39:18 2013 -0400 + + gobject: Fix compilation on OS X/ppc64 + + Apple's GCC compilers cannot deal well with 64-bit pointers in + transparent unions on ppc64, so compilation of + _G_DEFINE_BOXED_TYPE_BEGIN was failing. Fortunately glib already + provides a fallback for compilers that can't deal with it; this adds + this specific case to the check. + + https://bugzilla.gnome.org/show_bug.cgi?id=647145 + + gobject/gtype.h | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 85be7acb95dd57243003d3115268a6cbc3ebc8ba +Author: A S Alam +AuthorDate: Wed Sep 18 08:49:53 2013 -0500 +Commit: A S Alam +CommitDate: Wed Sep 18 08:54:02 2013 -0500 + + Punjabi Translation updated by Aman + + po/pa.po | 896 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 456 insertions(+), 440 deletions(-) + +commit 0ff1a89f5462106b7121362ef42c4987a18a976a +Author: Ask H. Larsen +AuthorDate: Tue Sep 17 18:28:19 2013 +0200 +Commit: Kenneth Nielsen +CommitDate: Tue Sep 17 18:28:19 2013 +0200 + + Updated Danish translation + + po/da.po | 890 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 451 insertions(+), 439 deletions(-) + +commit c0ecae37f639ad03548ef76eaa5d30c203ea7963 +Author: Ryan Lortie +AuthorDate: Tue Sep 17 11:39:56 2013 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 17 11:39:56 2013 -0400 + + GLib 2.37.93 + + NEWS | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit b72c466653c6e4a493874b35e4e7acdcadda7e67 +Author: Ryan Lortie +AuthorDate: Tue Sep 17 09:53:18 2013 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 17 09:53:18 2013 -0400 + + measure_disk_usage: properly report results + + In the async case, make sure we copy all of the out parameters + from the + results structure, not just 'disk_usage'. + + gio/gfile.c | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +commit dbf95a5ae94441dc235d8dcf003f05cb5c6bd84b +Author: Ryan Lortie +AuthorDate: Tue Sep 17 09:40:04 2013 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 17 09:44:23 2013 -0400 + + measure_disk_usage: skip progress on NULL callback + + In the real_..._async wrapper for GFile.measure_disk_usage, skip the + wrapping of the progress callback in the case that the user gave + a NULL + callback to the async function. This is a performance improvement + because the sync version won't have to do continuous sampling of the + clock to issue a call to the wrapper which will then do nothing. + + Unfortunately, I made this simplifying assumption when writing the + wrapper, but forgot to actually implement it when making the sync + call. + As a result, the wrapper is still called, and invokes the NULL + callback, + causing a segfault. + + Make sure we pass NULL if the user's callback was NULL. + + https://bugzilla.gnome.org/show_bug.cgi?id=707787 + + gio/gfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1a9b739c3176f0fd89aaadb10d90680c345c2d53 +Author: Chao-Hsiung Liao +AuthorDate: Tue Sep 17 19:35:13 2013 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Tue Sep 17 19:35:13 2013 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 215 + +++++++++++++++++++++++++++++++----------------------------- + po/zh_TW.po | 215 + +++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 220 insertions(+), 210 deletions(-) + +commit 373980f545639d577fd00bd0998a5acbe72b00c4 +Author: Ryan Lortie +AuthorDate: Mon Sep 16 14:14:07 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 16 14:14:07 2013 -0400 + + bump + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f4c3e56f198e28e17694cc2939dd39ac2ed7bdca +Author: Ryan Lortie +AuthorDate: Mon Sep 16 13:47:04 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 16 13:47:04 2013 -0400 + + GLib 2.37.92 + + NEWS | 27 +++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 28 insertions(+), 1 deletion(-) + +commit 348764269d0d2af3371caeb96cae65976891022c +Author: Ryan Lortie +AuthorDate: Mon Sep 16 13:42:02 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 16 13:42:02 2013 -0400 + + gio-du: show the correct filename in progress + + We were showing argv[1] in the progress output before, which is not + always the filename. + + gio/tests/gio-du.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2684dec44786b8463f27ec14547cfafab80c28a1 +Author: Chun-wei Fan +AuthorDate: Fri Sep 13 17:42:44 2013 +0800 +Commit: Ryan Lortie +CommitDate: Mon Sep 16 13:40:14 2013 -0400 + + gio-du: Improve test program on Windows + + Make use of __wgetmainargs() on Windows so that we can get wide char + versions of the argv's that are passed in when this test program + is being + invoked. This is necessary as one might enter non-ASCII, such as + CJK characters filenames and/or directories to run the test program + against, so that we can process the name(s) and pass the proper + UTF-8-encoded name(s) of the files/directories that is being tested. + + https://bugzilla.gnome.org/show_bug.cgi?id=707787 + + gio/tests/gio-du.c | 78 + +++++++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 56 insertions(+), 22 deletions(-) + +commit 084e5b0122d52f66d9320fb9b147ca4c62d3e9ac +Author: Ryan Lortie +AuthorDate: Thu Sep 12 11:44:11 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 16 13:38:40 2013 -0400 + + GLocalFile: use GDir for g_file_measure_disk_usage + + It turns out that although dirent is available on mingw32 (where the + code was originally tested), it is not usable from MSVC. + + Avoid portability problems by just using GDir. + + Also, be careful about ensuring that we utf8-format filenames in our + error messages, and leave out the "file://" component since the + strings + we're displaying are not URIs (and we don't want to make them + URIs since + the extra escaping would reduce legibility). + + Thanks to Chun-wei Fan for portions of this + patch and for reviews. + + https://bugzilla.gnome.org/show_bug.cgi?id=707787 + + gio/glocalfile.c | 57 + +++++++++++++++++++++++++++++++------------------------- + 1 file changed, 32 insertions(+), 25 deletions(-) + +commit 725125aba3875ccd86dc51b8e4f301fe3c8de3a4 +Author: Ryan Lortie +AuthorDate: Thu Sep 12 17:00:29 2013 +0800 +Commit: Ryan Lortie +CommitDate: Mon Sep 16 13:38:40 2013 -0400 + + GDir: add some glib-private APIs + + Add a simple UNIX-only API that is used to create a GDir object from a + DIR* that is aquired using opendir() or fdopendir(). + + This makes it possible to use GDir with openat(), which in turn will + allow use of GDir in the existing GLocalFile implementation of + g_file_measure_disk_usage(), avoiding the current MSVC compatibility + problems there. + + Also add an API similar to g_dir_open(), but without the GError + handling + (since we want to create a better error message from inside of + glocalfile.c). + + Thanks to Chun-wei Fan for portions of this + patch and for reviews. + + https://bugzilla.gnome.org/show_bug.cgi?id=707787 + + glib/gdir.c | 153 + +++++++++++++++++++++++++++++++++------------------- + glib/gdir.h | 4 ++ + glib/glib-private.c | 5 +- + glib/glib-private.h | 8 +++ + 4 files changed, 115 insertions(+), 55 deletions(-) + +commit 0e71110d17af3b82081a2d5487459280fb8dd902 +Author: Benjamin Steinwender +AuthorDate: Mon Sep 16 19:05:54 2013 +0200 +Commit: Benjamin Steinwender +CommitDate: Mon Sep 16 19:05:54 2013 +0200 + + Updated German translation + + po/de.po | 371 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 192 insertions(+), 179 deletions(-) + +commit 67dd31e60fe6dbec95d043920a51aa152dbe6cac +Author: Gabor Kelemen +AuthorDate: Mon Sep 16 13:07:12 2013 +0200 +Commit: Gabor Kelemen +CommitDate: Mon Sep 16 13:07:12 2013 +0200 + + Updated Hungarian translation + + po/hu.po | 187 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 92 insertions(+), 95 deletions(-) + +commit 799af7a0d92cc5b56fd8f07b5527c0973759fce7 +Author: Changwoo Ryu +AuthorDate: Sat Sep 14 22:46:15 2013 +0900 +Commit: Changwoo Ryu +CommitDate: Sat Sep 14 22:46:15 2013 +0900 + + Updated Korean translation + + po/ko.po | 144 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 73 insertions(+), 71 deletions(-) + +commit 89800d0ad4b4b6872c7913fd1a66c5ca8b6a040e +Author: Andika Triwidada +AuthorDate: Sat Sep 14 15:42:05 2013 +0700 +Commit: Andika Triwidada +CommitDate: Sat Sep 14 15:42:05 2013 +0700 + + Updated Indonesian translation + + po/id.po | 1552 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 784 insertions(+), 768 deletions(-) + +commit 90b32fcc474208730d08b350cd1f2a7d4e1be723 +Author: Gil Forcada +AuthorDate: Sat Sep 14 00:06:21 2013 +0200 +Commit: Gil Forcada +CommitDate: Sat Sep 14 00:07:12 2013 +0200 + + [l10n] Update Catalan translation + + po/ca.po | 137 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 71 insertions(+), 66 deletions(-) + +commit 35d5b60b093762f4a5c7bb58051622f81e092ace +Author: Rico Tzschichholz +AuthorDate: Fri Sep 13 21:16:14 2013 +0200 +Commit: Rico Tzschichholz +CommitDate: Fri Sep 13 21:16:14 2013 +0200 + + gmodule: Two minor g-i annotations fixes + + gmodule/gmodule.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit b671cc96b1de4c80cc7170399f4b94729b7a7c97 +Author: Nilamdyuti Goswami +AuthorDate: Fri Sep 13 18:25:03 2013 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Fri Sep 13 18:25:03 2013 +0530 + + Assamese Translation Updated + + po/as.po | 215 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 110 insertions(+), 105 deletions(-) + +commit 7a91a6c9a56c70a7b80a71376d3299e7f81fd7cb +Author: Chun-wei Fan +AuthorDate: Tue Sep 10 00:49:39 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Sep 13 11:31:05 2013 +0800 + + gio/tests/gio-du.c: Avoid Using Unintialized Variable + + https://bugzilla.gnome.org/show_bug.cgi?id=707787 + + gio/tests/gio-du.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 054270e4eb12fd62d584535af947244ba8fe6c25 +Author: Aurimas Černius +AuthorDate: Thu Sep 12 23:16:04 2013 +0300 +Commit: Aurimas Černius +CommitDate: Thu Sep 12 23:19:04 2013 +0300 + + Updated Lithuanian translation + + po/lt.po | 192 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 95 insertions(+), 97 deletions(-) + +commit 5a11019034f68dc5522935d447d71593140f5210 +Author: Ryan Lortie +AuthorDate: Thu Sep 12 14:38:08 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Sep 12 14:40:24 2013 -0400 + + tests: remove assertion for '!uncertain' on .txt + + Virtaal installs a mime package for various .po-like file formats, one + of which has the extension .txt. This causes GLib to report ".txt" + files still as "text/plain" but no longer with complete certainty. + + The result is that asserting !uncertain during the testsuite + causes the + test to fail if Virtaal happens to be installed. + + Remove this assertion. + + gio/tests/contenttype.c | 1 - + 1 file changed, 1 deletion(-) + +commit ac8b7ba9250a55f0fe8fcad16cb6e9e4f60c6946 +Author: Ryan Lortie +AuthorDate: Thu Sep 12 14:22:56 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Sep 12 14:40:24 2013 -0400 + + tests: properly set locale to C + + We're testing for particular error messages, so we need to set to a C + locale to make sure we get the untranslated version. + + Previously, this test set the LANG environment variable, but + that's not + good enough if LANGUAGE is also set. The only way to ensure that + LANGUAGE is ignored is to disable l10n with LC_ALL=C. + + glib/tests/markup-parse.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8ab1b58ffd75314ceb8d67af12935a7cccc12904 +Author: Ihar Hrachyshka +AuthorDate: Thu Sep 12 19:20:01 2013 +0300 +Commit: Ihar Hrachyshka +CommitDate: Thu Sep 12 19:20:01 2013 +0300 + + Updated Belarusian translation. + + po/be.po | 872 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 440 insertions(+), 432 deletions(-) + +commit 49a0cf08f759cf0e1621e3ef6318c7a3e8d487fb +Author: Rūdolfs Mazurs +AuthorDate: Wed Sep 11 22:36:52 2013 +0300 +Commit: Rūdolfs Mazurs +CommitDate: Wed Sep 11 22:36:52 2013 +0300 + + Updated Latvian translation + + po/lv.po | 904 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 458 insertions(+), 446 deletions(-) + +commit 5f6290e4f96cc3110168b056532c5af28aa15687 +Author: Marek Černocký +AuthorDate: Tue Sep 10 21:01:15 2013 +0200 +Commit: Marek Černocký +CommitDate: Tue Sep 10 21:01:15 2013 +0200 + + Updated Czech translation + + po/cs.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0acb99c933e515ee81c364290599c87210ee2b9f +Author: Marek Černocký +AuthorDate: Tue Sep 10 21:00:16 2013 +0200 +Commit: Marek Černocký +CommitDate: Tue Sep 10 21:00:16 2013 +0200 + + Updated Czech translation + + po/cs.po | 216 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 110 insertions(+), 106 deletions(-) + +commit f4e4c1bbbd03e52beed565bd31487c7e5d3506ed +Author: Fran Diéguez +AuthorDate: Tue Sep 10 15:53:23 2013 +0200 +Commit: Fran Diéguez +CommitDate: Tue Sep 10 15:53:23 2013 +0200 + + Updated Galician translations + + po/gl.po | 213 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 109 insertions(+), 104 deletions(-) + +commit b301828b1507ae943ed8a755e87754b7412b8773 +Author: Milo Casagrande +AuthorDate: Tue Sep 10 10:03:24 2013 +0200 +Commit: Milo Casagrande +CommitDate: Tue Sep 10 10:03:24 2013 +0200 + + [l10n] Updated Italian translation. + + po/it.po | 183 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 94 insertions(+), 89 deletions(-) + +commit df5a70057f9c3f275e59e97f500ae66c499fe853 +Author: Enrico Nicoletto +AuthorDate: Mon Sep 9 20:31:50 2013 -0300 +Commit: Enrico Nicoletto +CommitDate: Mon Sep 9 20:31:50 2013 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 217 + +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 111 insertions(+), 106 deletions(-) + +commit c0299d32ea80ddbbc3d272c58d0f9ebc46497281 +Author: Piotr Drąg +AuthorDate: Tue Sep 10 00:56:17 2013 +0200 +Commit: Piotr Drąg +CommitDate: Tue Sep 10 00:56:17 2013 +0200 + + Updated Polish translation + + po/pl.po | 181 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 93 insertions(+), 88 deletions(-) + +commit 49bbebc0b9fac28f009a1d43d10565dc1173f646 +Author: Dieter Verfaillie +AuthorDate: Mon Sep 9 23:34:01 2013 +0200 +Commit: Dieter Verfaillie +CommitDate: Mon Sep 9 23:57:30 2013 +0200 + + gio/tests/network-address: fix SCOPE_ID_TEST_INDEX fallback + + gio/tests/network-address.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b82ace52e00b703cc9c9e81162333a7eec9d6b96 +Author: Kalev Lember +AuthorDate: Mon Sep 9 23:35:25 2013 +0200 +Commit: Kalev Lember +CommitDate: Mon Sep 9 23:35:25 2013 +0200 + + Trivial typo fix + + glib/gstring.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 322f687f5f7aabf8e8c41628615f9b926a0127d2 +Author: Matej Urbančič +AuthorDate: Mon Sep 9 20:35:43 2013 +0200 +Commit: Matej Urbančič +CommitDate: Mon Sep 9 20:35:43 2013 +0200 + + Updated Slovenian translation + + po/sl.po | 181 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 93 insertions(+), 88 deletions(-) + +commit 83d55492d488d7c5765d28ffe2222926b234c842 +Author: Daniel Mustieles +AuthorDate: Mon Sep 9 16:46:32 2013 +0200 +Commit: Daniel Mustieles +CommitDate: Mon Sep 9 16:46:32 2013 +0200 + + Updated Spanish translation + + po/es.po | 215 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 110 insertions(+), 105 deletions(-) + +commit a61c9f489a3da4b25b399a599c11dcfb4c4fd3a7 +Author: Ryan Lortie +AuthorDate: Sun Jul 28 14:46:14 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 9 10:41:17 2013 -0400 + + tests/: add gio-du + + This is basically a minimally-featured 'du' equivalent to manually + test + g_file_measure_disk_usage(). + + https://bugzilla.gnome.org/show_bug.cgi?id=704893 + + gio/tests/Makefile.am | 1 + + gio/tests/gio-du.c | 146 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 147 insertions(+) + +commit 6ec2bb17c393c411a2182e865aa0979165dfbac5 +Author: Ryan Lortie +AuthorDate: Sun Jul 28 13:41:17 2013 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 6 13:16:17 2013 -0400 + + GFile: add new g_file_measure_disk_usage() API + + This is essentially the equivalent of 'du'. + + This is currently only supported on local files. gvfs will add + support for the + interface later. + + https://bugzilla.gnome.org/show_bug.cgi?id=704893 + + docs/reference/gio/gio-sections.txt | 4 + + gio/gfile.c | 301 + ++++++++++++++++++++++++++++++++++++ + gio/gfile.h | 53 +++++++ + gio/gioenums.h | 23 +++ + gio/giotypes.h | 43 ++++++ + gio/glocalfile.c | 289 + ++++++++++++++++++++++++++++++++++ + 6 files changed, 713 insertions(+) + +commit 242a735fe02462f7e6e8b2b2dc8c55d380d4fd96 +Author: Мирослав Николић + +AuthorDate: Thu Sep 5 08:05:45 2013 +0200 +Commit: Мирослав Николић + +CommitDate: Thu Sep 5 08:05:45 2013 +0200 + + Updated Serbian translation + + po/sr.po | 924 + +++++++++++++++++++++++++++++---------------------------- + po/sr@latin.po | 924 + +++++++++++++++++++++++++++++---------------------------- + 2 files changed, 946 insertions(+), 902 deletions(-) + +commit 52251a5237579946f5afa2c3319bbd5504b2b92e +Author: Chun-wei Fan +AuthorDate: Thu Sep 5 13:58:24 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Sep 5 13:59:02 2013 +0800 + + Visual C++ Builds: Fix "install" Projects + + Due to the split up of the property sheets, the install projects + did not + have info on the Intermediate and Output Paths, which caused confusing + messages from Visual Studio to show up upon completing build+"install" + and + closing Visual Studio on whether to reload the install project, + at least on + Visual Studio 2008. + + Include the property sheet which defines these properties to fix this. + + build/win32/vs10/install.vcxproj | 4 ++++ + build/win32/vs9/install.vcproj | 8 ++++---- + 2 files changed, 8 insertions(+), 4 deletions(-) + +commit 268f3ce0ff0eff2a858a91a049a87aefd23f2f93 +Author: Changwoo Ryu +AuthorDate: Wed Sep 4 00:29:58 2013 +0900 +Commit: Changwoo Ryu +CommitDate: Wed Sep 4 00:29:58 2013 +0900 + + Updated Korean translation + + po/ko.po | 904 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 460 insertions(+), 444 deletions(-) + +commit 801a5c8bb23bdcc26a3900d479f4139f4d38fb7e +Author: Matthias Clasen +AuthorDate: Mon Sep 2 12:12:58 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 2 12:12:58 2013 -0400 + + bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b6a52f0a917576282545ab6dc769efd02e548757 +Author: Matthias Clasen +AuthorDate: Mon Sep 2 11:25:57 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 2 11:25:57 2013 -0400 + + 2.37.7 + + NEWS | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +commit ed1e3816adaf43021924a7096bb7dc4d834a9a69 +Author: Martin Pitt +AuthorDate: Mon Sep 2 12:04:43 2013 +0200 +Commit: Martin Pitt +CommitDate: Mon Sep 2 12:04:43 2013 +0200 + + gobject-2.0: Annotate another GSignal function taking instances + + As a followup to commit a72983a, annotate g_signal_handlers_destroy() + as well. + + gobject/gsignal.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit a72983a5db5d25e6face815c6eba5775175e4aa4 +Author: Emmanuele Bassi +AuthorDate: Tue Aug 27 14:11:47 2013 +0200 +Commit: Martin Pitt +CommitDate: Mon Sep 2 08:25:56 2013 +0200 + + gobject-2.0: Annotate GSignal functions taking instances + + Unbreak the GSignal API at least for GObject sub-classes. + + https://bugzilla.gnome.org/show_bug.cgi?id=685387 + + gobject/gsignal.c | 38 +++++++++++++++++++------------------- + 1 file changed, 19 insertions(+), 19 deletions(-) + +commit c81773da9cd21f1122da6e049d111cac8d6b6a3e +Author: Matthias Clasen +AuthorDate: Sun Sep 1 14:54:33 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 1 14:56:23 2013 -0400 + + Add Since tag for g_close + + The lack of this information in the docs was pointed out in + + https://bugzilla.gnome.org/show_bug.cgi?id=707092 + + glib/gstdio.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 8c50dfcc5a9d2f3166dcb03770bd6a0886a3fcdb +Author: Gil Forcada +AuthorDate: Sat Aug 31 22:45:44 2013 +0200 +Commit: Gil Forcada +CommitDate: Sat Aug 31 22:45:44 2013 +0200 + + [l10n] Update Catalan translation + + po/ca.po | 1138 + ++++++++++++++++++++++++-------------------------------------- + 1 file changed, 437 insertions(+), 701 deletions(-) + +commit f8bb08305cf819502934036e1fcfb7d7c7776097 +Author: Dan Winship +AuthorDate: Sat Aug 31 11:51:07 2013 -0400 +Commit: Dan Winship +CommitDate: Sat Aug 31 11:51:07 2013 -0400 + + gmessages: fix g_test_expect_message() with NULL domains + + Allow passing a NULL domain to g_test_expect_message(), and more + importantly, don't crash if a message with a NULL domain gets logged + while there is an expected message. + + glib/gmessages.c | 5 ++--- + glib/tests/testing.c | 13 +++++++++++++ + 2 files changed, 15 insertions(+), 3 deletions(-) + +commit cde9f4598ba0e34d7c5fcbe4fcddaf67c15bd5e3 +Author: Dan Winship +AuthorDate: Sat Aug 24 17:47:57 2013 -0400 +Commit: Dan Winship +CommitDate: Sat Aug 31 11:40:44 2013 -0400 + + gio/tests/socket: fix warning building on win32 + + setsockopt() has a broken prototype on win32. Fix this by just using + g_socket_set_option() instead. + + gio/tests/socket.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +commit 02393e6faf409c0cae952e94ecbc2c8fad75a3ee +Author: Sebastian Dröge +AuthorDate: Wed Oct 24 14:25:01 2012 +0200 +Commit: Dan Winship +CommitDate: Sat Aug 31 11:40:44 2013 -0400 + + gio/tests/socket: add test for g_socket_get_available_bytes() + + https://bugzilla.gnome.org/show_bug.cgi?id=686786 + + gio/tests/socket.c | 76 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 76 insertions(+) + +commit 9fd0927e5888458c9b1061f3cdf3a1aaa4924e36 +Author: Dan Winship +AuthorDate: Sat Aug 24 13:55:06 2013 -0400 +Commit: Dan Winship +CommitDate: Sat Aug 31 11:40:44 2013 -0400 + + gsocket: Fix g_socket_get_available_bytes() on Windows and OS X + + On Windows and OS X, FIONREAD on a UDP socket gets the total number of + bytes available, not the number of bytes available in the next packet, + which is the more useful number (and how the function always behaved + on Linux). + + On OS X, fix this by using SO_NREAD. On Windows, fix this by doing a + MSG_PEEK recv() into a giant buffer, since there is apparently no + other way to get the information. + + https://bugzilla.gnome.org/show_bug.cgi?id=686786 + + gio/gsocket.c | 32 ++++++++++++++++++++++++++------ + 1 file changed, 26 insertions(+), 6 deletions(-) + +commit 8d62c2495a1c74a51eb9c752b3d2e0f4b93feefc +Author: Kalev Lember +AuthorDate: Fri Aug 30 21:58:49 2013 +0200 +Commit: Kalev Lember +CommitDate: Sat Aug 31 13:34:41 2013 +0200 + + Add tests for new '%z' g_date_time_format extensions + + https://bugzilla.gnome.org/show_bug.cgi?id=707151 + + glib/tests/gdatetime.c | 38 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 38 insertions(+) + +commit 8fd7f58aeef89f60ca16b8350e6dd0bd34ab5ed1 +Author: Kalev Lember +AuthorDate: Fri Aug 30 21:24:56 2013 +0200 +Commit: Kalev Lember +CommitDate: Sat Aug 31 13:34:41 2013 +0200 + + gdatetime: Extend the '%z' timezone format + + Implement gnulib strftime extensions for the '%z' numeric timezone + format. These are also supported and documented by GNU date(1): + + %z +hhmm numeric time zone (e.g., -0400) + + %:z +hh:mm numeric time zone (e.g., -04:00) + + %::z +hh:mm:ss numeric time zone (e.g., -04:00:00) + + %:::z numeric time zone with : to necessary precision (e.g., + -04, +05:30) + + https://bugzilla.gnome.org/show_bug.cgi?id=707151 + + glib/gdatetime.c | 99 + +++++++++++++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 87 insertions(+), 12 deletions(-) + +commit dac5e5e755b684582bf42ba443fa283e3cc40a14 +Author: Shantha kumar +AuthorDate: Fri Aug 30 15:36:22 2013 +0530 +Commit: Shantha kumar +CommitDate: Fri Aug 30 15:36:22 2013 +0530 + + Tamil Translations Updated + + po/ta.po | 413 + ++++++++++++++++++++++++--------------------------------------- + 1 file changed, 157 insertions(+), 256 deletions(-) + +commit 11254b3c7d0e95748a9e6e7988948cb1ba686a7e +Author: Dan Winship +AuthorDate: Thu Aug 29 09:25:42 2013 -0400 +Commit: Dan Winship +CommitDate: Thu Aug 29 09:25:42 2013 -0400 + + gsocket: make GSocketSource trigger on G_IO_NVAL + + Getting G_IO_NVAL probably indicates bugs/race conditions in the + calling code, but if GSocket just ignores it, it will get stuck in an + infinite loop. + + gio/gsocket.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 996edb0c46356d8a326f886b91a77a6af9a2de3e +Author: Antoine Jacoutot +AuthorDate: Wed Aug 28 09:35:27 2013 +0200 +Commit: Antoine Jacoutot +CommitDate: Wed Aug 28 12:01:44 2013 +0200 + + fix atomic ops detection + + AC_TRY_LINK should be used instead of AC_TRY_COMPILE because the code + will compile everywhere, either producing ``atomic'' code, or an + external reference to __sync_bool_compare_and_swap. + + https://bugzilla.gnome.org/show_bug.cgi?id=706958 + + configure.ac | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 34e1a537956e85d9d2db2127cd723a6c7456f793 +Author: Dan Winship +AuthorDate: Tue Aug 27 09:40:18 2013 -0400 +Commit: Dan Winship +CommitDate: Tue Aug 27 09:42:14 2013 -0400 + + gtype: fix a no-op assertion + + g_type_class_add_private() was doing + + g_assert (node->data->instance.private_size <= 0xffff); + + but that field is a guint16, so the check was a no-op. (Noticed by + clang, but not gcc for some reason.) Fix it to do the math in a gssize + variable and do the bounds checking there before updating the struct + field. + + https://bugzilla.gnome.org/show_bug.cgi?id=706888 + + gobject/gtype.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +commit ca4f6ba855fe0a18d8135e8379bec03e60b88f89 +Author: Balázs Úr +AuthorDate: Mon Aug 26 19:39:25 2013 +0200 +Commit: Balázs Úr +CommitDate: Mon Aug 26 19:39:25 2013 +0200 + + Updated Hungarian translation + + po/hu.po | 885 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 448 insertions(+), 437 deletions(-) + +commit 666b0bed9c4c9aec830edaf5539f0daf4d28f83b +Author: Jonas Danielsson +AuthorDate: Sat Aug 24 13:12:45 2013 +0200 +Commit: Colin Walters +CommitDate: Sat Aug 24 08:53:30 2013 -0400 + + gloadableicon: Fix gir bindings for load_finish + + Make the gir notation for g_loadable_icon_load_finish match + the ones for g_loadable_icon_load. + + https://bugzilla.gnome.org/show_bug.cgi?id=706706 + + gio/gloadableicon.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 9bcb6d3f007358deb77294b828ea5d706de04aab +Author: Dieter Verfaillie +AuthorDate: Thu Aug 22 20:52:17 2013 +0200 +Commit: Dieter Verfaillie +CommitDate: Thu Aug 22 20:52:17 2013 +0200 + + Fix G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=706469 + + gobject/gtype.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f6c4dee67aa5a670e8aeafdee7adae9261b8d1ab +Author: Jiro Matsuzawa +AuthorDate: Fri Aug 23 00:41:24 2013 +0900 +Commit: Jiro Matsuzawa +CommitDate: Fri Aug 23 00:41:24 2013 +0900 + + l10n: Update Japanese translation + + po/ja.po | 886 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 448 insertions(+), 438 deletions(-) + +commit ab6b7dbc2efc506e43616941ac70f14fc20de574 +Author: Sebastian Dröge +AuthorDate: Sun Jul 28 16:43:44 2013 +0200 +Commit: Sebastian Dröge +CommitDate: Thu Aug 22 16:14:56 2013 +0200 + + GSocket – GSocketSource finalizing not threadsafe on Windows + + The requested_conditions list access is not threadsafe. When passing + the socket ownership from a GSource callback to another thread, which + also creates a GSocketSource for the socket, it can happen that the + original GSocketSource is finalized at the same time as the new one + is created. This would cause inconsistencies in the + requested_conditions + list and can cause assertions or completely undefined behaviour. + + https://bugzilla.gnome.org/show_bug.cgi?id=705027 + + gio/gsocket.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit b3b6aab007e8cf0c5a88cba8deb484269ad7eab1 +Author: Ján Kyselica +AuthorDate: Wed Aug 21 21:12:28 2013 +0200 +Commit: Peter Mráz +CommitDate: Wed Aug 21 21:12:28 2013 +0200 + + Updated slovak translation + + po/sk.po | 892 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 455 insertions(+), 437 deletions(-) + +commit bb7b0a8ca01c0f463fbd7a66cab686b9160ff59a +Author: Chun-wei Fan +AuthorDate: Thu Aug 15 21:27:02 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Aug 21 20:28:26 2013 +0800 + + gio/gdbusaddress.c: Silence RunDLL errors + + The RunDLL command call during get_session_address_dbus_launch() was + expecting _g_win32_run_session_bus@16 and g_win32_run_session_bus + on Win32 and Win64 respectively at least when GLib is compiled + with MSVC, + not g_win32_run_session_bus@16, which caused annoying RunDLL error + dialogue + boxes to show up during the use of GtkApplication (such as when + running + gtk3-demo-application on Windows), prevented GtkApplication items from + being run for more than one time during the lifespan of the program, + and this also interfered with some GTK+ tests, causing them to fail. + + Update accordingly to address the issue. + + gio/gdbusaddress.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 2ff85ca47c4aa4ea67314bfade58ea087df6fb20 +Author: Chun-wei Fan +AuthorDate: Wed Aug 21 17:54:32 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Aug 21 17:54:32 2013 +0800 + + Fix typo in last commit + + The gio.vcxprojin and glib.vcxprojin were including .vsprops property + sheets, but it should have been .props instead. + + build/win32/vs10/gio.vcxprojin | 8 ++++---- + build/win32/vs10/glib.vcxprojin | 32 ++++++++++++++++---------------- + 2 files changed, 20 insertions(+), 20 deletions(-) + +commit 113793a4429b7a8f7d0eb7271a3ad6a6853932e5 +Author: Chun-wei Fan +AuthorDate: Wed Aug 21 16:57:11 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Aug 21 16:57:11 2013 +0800 + + MSVC 2010 Project Files: Split up the Property Sheets + + Like the Visual Studio 2008 project files, split up the property + sheets + so to ease maintenace, and to prepare to use autotools to fill in the + header entries to "install". + + Put some of the items that are frequently repeated in the projects + as well, + also to simplify maintenance. + + Also, update the autotools files to automate the upgrade of Visual + Studio + 2010 project as we now have multiple property sheets to copy and + process. + + build/Makefile-newvs.am | 13 +- + build/win32/vs10/Makefile.am | 7 +- + build/win32/vs10/gdbus.vcxproj | 8 +- + build/win32/vs10/gio-querymodules.vcxproj | 16 +- + build/win32/vs10/gio.vcxprojin | 24 +- + build/win32/vs10/glib-build-defines.props | 70 +++ + build/win32/vs10/glib-compile-resources.vcxproj | 16 +- + build/win32/vs10/glib-compile-schemas.vcxproj | 8 +- + build/win32/vs10/glib-genmarshal.vcxproj | 8 +- + build/win32/vs10/glib-install.props | 553 + ++++++++++++++++++ + build/win32/vs10/glib-version-paths.props | 50 ++ + build/win32/vs10/glib.props | 631 + --------------------- + build/win32/vs10/glib.vcxprojin | 40 +- + build/win32/vs10/glibprepbuild.props | 39 ++ + build/win32/vs10/gmodule.vcxproj | 16 +- + build/win32/vs10/gobject.vcxprojin | 16 +- + build/win32/vs10/gresource.vcxproj | 8 +- + build/win32/vs10/gsettings.vcxproj | 8 +- + .../win32/vs10/gspawn-win32-helper-console.vcxproj | 16 +- + build/win32/vs10/gspawn-win32-helper.vcxproj | 16 +- + build/win32/vs10/gthread.vcxproj | 16 +- + build/win32/vs10/install.vcxproj | 9 +- + build/win32/vs10/testglib.vcxproj | 16 +- + build/win32/vs11/.gitignore | 5 +- + build/win32/vs11/Makefile.am | 7 +- + 25 files changed, 859 insertions(+), 757 deletions(-) + +commit 3c4ee831f74e760b65e9239bec3ad5b5ac60e6a6 +Author: Chun-wei Fan +AuthorDate: Wed Aug 21 16:05:47 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Aug 21 16:05:47 2013 +0800 + + MSVC 2008 Projects: Split the Property Sheets + + Split the property sheet into four sheets, to make maintainance of the + build files easier, and also to prepare for using autotools to fill in + the parts for the "installation" of headers. + + Also put more of the items that are repeated in the projects into the + property sheets, also to improve ease of maintenance. + + Updates to the Visual Studio 2010 projects will come later, as + the script + to update them to Visual Studio 2012 must also be taken into account + during' + the process. + + build/win32/vs9/Makefile.am | 7 +- + build/win32/vs9/gdbus.vcproj | 8 +- + build/win32/vs9/gio-querymodules.vcproj | 16 +- + build/win32/vs9/gio.vcprojin | 24 +- + build/win32/vs9/glib-build-defines.vsprops | 65 ++++ + build/win32/vs9/glib-compile-resources.vcproj | 16 +- + build/win32/vs9/glib-compile-schemas.vcproj | 8 +- + build/win32/vs9/glib-genmarshal.vcproj | 8 +- + build/win32/vs9/glib-install.vsprops | 286 ++++++++++++++++ + build/win32/vs9/glib-version-paths.vsprops | 49 +++ + build/win32/vs9/glib.vcprojin | 32 +- + build/win32/vs9/glib.vsprops | 360 + --------------------- + build/win32/vs9/glibprepbuild.vsprops | 27 ++ + build/win32/vs9/gmodule.vcproj | 21 +- + build/win32/vs9/gobject.vcprojin | 16 +- + build/win32/vs9/gresource.vcproj | 8 +- + build/win32/vs9/gsettings.vcproj | 8 +- + build/win32/vs9/gspawn-win32-helper-console.vcproj | 16 +- + build/win32/vs9/gspawn-win32-helper.vcproj | 16 +- + build/win32/vs9/gthread.vcproj | 16 +- + build/win32/vs9/install.vcproj | 8 +- + build/win32/vs9/testglib.vcproj | 21 +- + 22 files changed, 550 insertions(+), 486 deletions(-) + +commit 716ec71ece2a583d48e7c09e2d8562cf5eb96809 +Author: Chun-wei Fan +AuthorDate: Wed Aug 21 13:55:52 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Aug 21 13:55:52 2013 +0800 + + GLib MSVC Projects: Consolidate PCRE items + + Move the definitions of macros used to build PCRE that ships with + GLib into + the property sheets, so that it can be easier to maintain + + build/win32/vs10/glib.props | 4 ++++ + build/win32/vs10/glib.vcxprojin | 8 ++++---- + build/win32/vs9/glib.vcprojin | 8 ++++---- + build/win32/vs9/glib.vsprops | 4 ++++ + 4 files changed, 16 insertions(+), 8 deletions(-) + +commit 18f498c3fa6469662c3ab0050eb12d9731b8174a +Author: Chun-wei Fan +AuthorDate: Wed Aug 21 13:34:42 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Aug 21 13:34:42 2013 +0800 + + GIO MSVC Projects: Drop Unneeded Defines + + GIO_MODULE_DIR is dynamically constructed on Windows, so we don't + really + need to define it here. + + build/win32/vs10/gio.vcxprojin | 8 ++++---- + build/win32/vs9/gio.vcprojin | 8 ++++---- + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit 7145f06941c3909108d248f11bd992bc221048d7 +Author: Chun-wei Fan +AuthorDate: Wed Aug 21 11:16:19 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Aug 21 11:16:19 2013 +0800 + + GIO MSVC Project: Link to iphlpapi.lib + + This is needed for GetAdaptersAddresses()[1], which was used to + implement + if_nametoindex on Windows, notably on Windows XP, in commit 01156b12. + + if_nametoindex and if_indextoname, as noted in config.h.win32(.in), is + available with Windows Vista and later, so when we eventually drop + support for Windows XP, we can call them directly, and these functions + also reside in the same iphlpapi.lib + + [1]: + http://msdn.microsoft.com/en-us/library/windows/desktop/aa365915%28v=vs.85%29.aspx + + build/win32/vs10/gio.vcxprojin | 8 ++++---- + build/win32/vs9/gio.vcprojin | 8 ++++---- + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit e05abaed0467fa4231bd0665973aa6b42384a12c +Author: Chun-wei Fan +AuthorDate: Wed Aug 21 11:04:37 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Aug 21 11:04:37 2013 +0800 + + Update config.h.win32.in + + Make entries more in sync with the items checked with autotools, and + provide a MinGW declaration for _GLIB_EXTERN, taken from configure.ac. + + config.h.win32.in | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit dacc0ad2d16277550d806fcb8e9d398546675eab +Author: Piotr Drąg +AuthorDate: Tue Aug 20 23:29:38 2013 +0200 +Commit: Piotr Drąg +CommitDate: Tue Aug 20 23:29:38 2013 +0200 + + Updated Polish translation + + po/pl.po | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 130aaddd20e58e2f58ed10ac78807f8aed742ea5 +Author: Piotr Drąg +AuthorDate: Tue Aug 20 20:33:47 2013 +0200 +Commit: Piotr Drąg +CommitDate: Tue Aug 20 20:33:47 2013 +0200 + + Updated Polish translation + + po/pl.po | 713 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 362 insertions(+), 351 deletions(-) + +commit a4363582b0f1bcf55af9e49f2bd3897cc5d64438 +Author: Matthias Clasen +AuthorDate: Mon Aug 19 23:54:43 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 19 23:54:43 2013 -0400 + + post-release bump + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c512d16570d8b355525a019d71ea66be27fe1d01 +Author: Matthias Clasen +AuthorDate: Mon Aug 19 23:31:40 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 19 23:31:53 2013 -0400 + + 2.37.6 + + NEWS | 45 +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 45 insertions(+) + +commit 739874c5dad77d5a5f0e88cc45d2199d9fa4b40e +Author: Matthias Clasen +AuthorDate: Mon Aug 19 23:29:54 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 19 23:29:54 2013 -0400 + + Set up test environment properly + + To make the G_TEST_SRCDIR and G_TEST_BUILDDIR variables + reach our test binaries, we have to add it to the + TESTS_ENVIRONMENT variable. + + glib-tap.mk | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 820406931b0fccc46fd3a4ebae0bb3a8629d9f57 +Author: Matthias Clasen +AuthorDate: Mon Aug 19 22:31:56 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 19 22:32:21 2013 -0400 + + Dist tap-test script + + Otherwise it won't be around when make distcheck is looking + for it. + + Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 49cf439ce7432203688a32c5087ce50591f90329 +Author: Matthias Clasen +AuthorDate: Mon Aug 19 20:00:25 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 19 20:57:44 2013 -0400 + + Fix make check + + The glib/tests contained some tests for gtester. Now that + we're not including glib.mk anymore, we have to define + GTESTER ourselves. + + Makefile.am | 3 ++- + glib/tests/Makefile.am | 1 + + 2 files changed, 3 insertions(+), 1 deletion(-) + +commit 01156b122c1c57bb27b664c6b973a35418b1f86d +Author: Sebastian Dröge +AuthorDate: Wed Jul 31 14:11:55 2013 +0200 +Commit: Dan Winship +CommitDate: Mon Aug 19 12:28:20 2013 -0400 + + GSocket – Implement multicast interface selection on Windows + + https://bugzilla.gnome.org/show_bug.cgi?id=697185 + + gio/Makefile.am | 2 +- + gio/gnetworking.h.in | 1 + + gio/gnetworking.h.win32 | 1 + + gio/gsocket.c | 59 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 62 insertions(+), 1 deletion(-) + +commit c069c51db5767ae0973e3bbbfd9f3a1d2b2320a3 +Author: Dan Winship +AuthorDate: Mon Aug 19 12:14:27 2013 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 19 12:15:36 2013 -0400 + + gnetworkaddress: allow IPv6 scope ids in URIs + + GNetworkAddress was allowing IPv6 scope ids in g_network_address_new() + / g_network_address_parse(), but not in g_network_address_parse_uri(). + Fix that. + + Part of https://bugzilla.gnome.org/show_bug.cgi?id=669724 + + gio/gnetworkaddress.c | 31 +++++++++--- + gio/tests/inet-address.c | 55 -------------------- + gio/tests/network-address.c | 120 + +++++++++++++++++++++++++++++++++++++++++++- + 3 files changed, 143 insertions(+), 63 deletions(-) + +commit e1f92431c1bc430362d27f9bce2f14bf8176aa5b +Author: Dan Winship +AuthorDate: Mon Aug 19 12:09:59 2013 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 19 12:15:36 2013 -0400 + + gnetworkaddress: fix parsing of URIs with IPv6 literal and port + + Addresses like "http://[::1]:8080/" were being parsed as though they + did not include a port. Fix that, and add some more parsing tests. + + gio/gnetworkaddress.c | 3 ++ + gio/tests/network-address.c | 107 + +++++++++++++++++++++++--------------------- + 2 files changed, 60 insertions(+), 50 deletions(-) + +commit 635196b1ffc5e810431b5746d52138d2c3bcb1db +Author: Matthias Clasen +AuthorDate: Sun Aug 18 18:13:02 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 18 18:13:02 2013 -0400 + + Expand docs for thread names + + Thread names may be NULL, and don't have to be unique. + The docs should tell you that. + + glib/gthread.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 3c040f8534d87782d2ffefd88dfe87cd00393271 +Author: Milo Casagrande +AuthorDate: Sun Aug 18 14:29:29 2013 +0200 +Commit: Milo Casagrande +CommitDate: Sun Aug 18 14:29:29 2013 +0200 + + [l10n] Updated Italian translation. + + po/it.po | 557 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 281 insertions(+), 276 deletions(-) + +commit b0e6a38d952f9c123e5966f382e77395daff2586 +Author: William Jon McCann +AuthorDate: Wed Jan 16 15:07:54 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 21:53:33 2013 -0400 + + Remove legacy icon name support + + https://bugzilla.gnome.org/show_bug.cgi?id=684327 + + gio/gcontenttype.c | 21 +++++++-------------- + 1 file changed, 7 insertions(+), 14 deletions(-) + +commit 6ed46cd2a493e405623b8e46d3c1eca89cba5929 +Author: Matej Urbančič +AuthorDate: Sun Aug 18 01:59:54 2013 +0200 +Commit: Matej Urbančič +CommitDate: Sun Aug 18 01:59:54 2013 +0200 + + Updated Slovenian translation + + po/sl.po | 695 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 349 insertions(+), 346 deletions(-) + +commit 0e9f9867fab2e17f4723e739125d764bc40c9791 +Author: Matthias Clasen +AuthorDate: Sat Aug 17 15:46:00 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 17:25:58 2013 -0400 + + Start using TAP + + Convert {glib,gobject,gio}/tests to use the automake TAP driver + and test harness instead of gtester. To do so, we add a glib-tap.mk + that provides the same interface as glib.mk, except for the + reporting and coverage testing functionality. Eventually, we may + want to replace glib.mk with it. I've not yet converted the + toplevel tests/ directory, since it mixes gtestutils tests with + other binaries. + + https://bugzilla.gnome.org/show_bug.cgi?id=692125 + + gio/tests/Makefile.am | 3 +- + glib-tap.mk | 128 + ++++++++++++++++++++++++++++++++++++++++++++++ + glib/tests/Makefile.am | 2 +- + gobject/tests/Makefile.am | 2 +- + tap-test | 5 ++ + 5 files changed, 137 insertions(+), 3 deletions(-) + +commit 1ea340529737a0a020ac67353e24661eaf3678b1 +Author: Matthias Clasen +AuthorDate: Sat Aug 17 15:23:41 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 17:25:58 2013 -0400 + + Update the documentation for assertion macros + + The assertion macros that are part of gtestutils (but not + g_assert) can now be made non-fatal. Update the documentation + to reflect that. + + https://bugzilla.gnome.org/show_bug.cgi?id=692125 + + glib/gtestutils.c | 56 + ++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 35 insertions(+), 21 deletions(-) + +commit a6a87506877939fee54bdc7eca70d47fc7d893d4 +Author: Matthias Clasen +AuthorDate: Sat Aug 17 15:18:29 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 17:25:57 2013 -0400 + + Add a way to make assertions non-fatal + + When using test harnesses other than gtester (e.g. using TAP), + it can be suboptimal to have the very first failed assertion + abort the test suite. + + This commit adds a g_test_set_nonfatal_assertions() that can + be called in a test binary to change the behaviour of most + assert macros to just call g_test_fail() and continue. We + don't change the behavior of g_assert() and g_assert_not_reached(), + since these to assertion macros are older than GTest, are + widely used outside of testsuites, and will cause compiler + warnings if they loose their noreturn annotation. + + https://bugzilla.gnome.org/show_bug.cgi?id=692125 + + glib/gtestutils.c | 27 +++++++++++++++++++++++++++ + glib/gtestutils.h | 10 ++++++---- + 2 files changed, 33 insertions(+), 4 deletions(-) + +commit b63739e60ea03364a7a06e0c697b5c6c4690d0b6 +Author: Matthias Clasen +AuthorDate: Sat Feb 2 12:53:05 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 17:25:57 2013 -0400 + + Add g_assert_true, g_assert_false and g_assert_null + + These are just like g_assert(), but using a different entry + point for the message, so we can repurpose them together + with the other assertion macros. + + https://bugzilla.gnome.org/show_bug.cgi?id=692125 + + glib/gtestutils.c | 27 +++++++++++++++++++++++++++ + glib/gtestutils.h | 15 ++++++++++++++- + 2 files changed, 41 insertions(+), 1 deletion(-) + +commit a32c9c7e9c9500f151ccae602d92f88e43d8df45 +Author: Matthias Clasen +AuthorDate: Sat Feb 2 12:47:54 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 17:25:57 2013 -0400 + + Make g_assert and g_assert_not_reached use the same entry point + + These two assertion macros are commonly used outside tests, + so we can't repurpose them, as we are going to do with the + other assertion macros in the following commits. This + change is in preparation for that. + + https://bugzilla.gnome.org/show_bug.cgi?id=692125 + + glib/gtestutils.c | 6 +++++- + glib/gtestutils.h | 2 +- + 2 files changed, 6 insertions(+), 2 deletions(-) + +commit 19aafc4ca4dba2b63d24f01d23890ff30ef9b133 +Author: Matthias Clasen +AuthorDate: Sat Aug 17 14:16:37 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 17:25:57 2013 -0400 + + Support TAP as an output format + + Initial support for the Test Anything Protocol for + GTest output. Use the --tap option to get TAP output. + More information about TAP can be found e.g. here: + http://en.wikipedia.org/wiki/Test_Anything_Protocol + + https://bugzilla.gnome.org/show_bug.cgi?id=692125 + + glib/gtestutils.c | 59 + +++++++++++++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 51 insertions(+), 8 deletions(-) + +commit 69582bf63565c187a64daa1b9b22fc5a4d322db3 +Author: Matthias Clasen +AuthorDate: Sat Aug 17 14:14:20 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 17:25:57 2013 -0400 + + Add a function to check test status from the inside + + The new g_test_failed() function can be used to find + out if a currently running testcase is already marked + as failed. + + https://bugzilla.gnome.org/show_bug.cgi?id=692125 + + glib/gtestutils.c | 24 ++++++++++++++++++++++++ + glib/gtestutils.h | 2 ++ + 2 files changed, 26 insertions(+) + +commit 88eaefb9d5f52bedf34a359b21c62f3c2cb95f20 +Author: Matthias Clasen +AuthorDate: Sat Aug 17 14:11:24 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 17:25:56 2013 -0400 + + Add functions to mark tests as skipped or incomplete + + We also expand the GTestResult enumeration to include + values for skipped and incomplete tests, and pass that + on when logging a test result. + + https://bugzilla.gnome.org/show_bug.cgi?id=692125 + + glib/gtestutils.c | 59 + ++++++++++++++++++++++++++++++++++++++++++++++++++++--- + glib/gtestutils.h | 4 ++++ + 2 files changed, 60 insertions(+), 3 deletions(-) + +commit 4e6d25f00501c0b9b3660d62409ea002ad24ca0a +Author: Matthias Clasen +AuthorDate: Sat Aug 17 14:04:58 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 17:25:56 2013 -0400 + + Add a GTestResult enumeration + + This enumeration will be expanded to introduce more results + in the following commits. + + https://bugzilla.gnome.org/show_bug.cgi?id=692125 + + glib/gtestutils.c | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +commit 8253f98a18043cba76cc7524f752b3586e63b747 +Author: Matthias Clasen +AuthorDate: Sun Jan 20 03:23:38 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 17:25:56 2013 -0400 + + Add start/stop suite log messages + + These will be used in the following commits, when + implementing support for TAP as an alternative + test driver protocol. + + https://bugzilla.gnome.org/show_bug.cgi?id=692125 + + glib/gtester.c | 2 ++ + glib/gtestutils.c | 10 ++++++++++ + glib/gtestutils.h | 4 +++- + glib/tests/protocol.c | 4 ++++ + 4 files changed, 19 insertions(+), 1 deletion(-) + +commit de9cf58f6578e3c801a1b86d141502a8c147925e +Author: Matthias Clasen +AuthorDate: Sat Aug 17 17:25:25 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 17:25:56 2013 -0400 + + GApplication: Stop using deprecated api + + gio/gapplication.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 18accd43f79bc27cb68767cfcf1e3899b5349d57 +Author: Matthias Clasen +AuthorDate: Sat Aug 17 17:22:05 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 17:25:56 2013 -0400 + + Quell a few compiler warnings + + glib/tests/protocol.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5cd169810edb711964930f20b42796edce355ce5 +Author: Matthias Clasen +AuthorDate: Sat Aug 17 13:45:34 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 13:45:34 2013 -0400 + + Take out an unused line from gdatetime tests + + This line was apparently causing build problems on Win64, + and since the only test involving the t_str variable was + already commented out, lets just take this out altogether. + + https://bugzilla.gnome.org/show_bug.cgi?id=696970 + + glib/tests/gdatetime.c | 3 --- + 1 file changed, 3 deletions(-) + +commit 409a6db3492e8d5e81f5e248e9e9abe100506ff5 +Author: Stef Walter +AuthorDate: Tue May 14 08:49:55 2013 +0200 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 13:40:06 2013 -0400 + + Mark up warnings/critical functions for clang analyzer + + The clang code analyzer needs to know that functions like g_error + g_critical an g_return_if_fail should be seen by the analyzer in the + same way as g_assert(). That is the analyzer should think they are + fatal. + + https://bugzilla.gnome.org/show_bug.cgi?id=700268 + + glib/gmacros.h | 13 +++++++++++++ + glib/gmessages.h | 13 +++++++------ + 2 files changed, 20 insertions(+), 6 deletions(-) + +commit 547df5937cc3b821498e27eb55cebc1f414ce597 +Author: Dan Winship +AuthorDate: Sun Feb 17 15:11:18 2013 -0500 +Commit: Dan Winship +CommitDate: Sat Aug 17 13:26:42 2013 -0400 + + GSocket: fix g_socket_bind() allow_reuse semantics + + With UDP sockets, g_socket_bind() with allow_reuse=TRUE on Linux + behaved in a way that the documentation didn't suggest, and that + didn't match other OSes. (Specifically, it allowed binding multiple + multicast sockets to the same address.) + + Since this behavior is useful, and since allow_reuse didn't have any + other meaning with UDP sockets, update the docs to reflect the Linux + behavior, and make it do the same thing on non-Linux. + + https://bugzilla.gnome.org/show_bug.cgi?id=689245 + + gio/gsocket.c | 67 +++++++++++++++++++++++++++++++-------------- + gio/tests/socket.c | 79 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 126 insertions(+), 20 deletions(-) + +commit 2ea4af6f019632b810ea6f7c0f0c44498cf5dddf +Author: Dan Winship +AuthorDate: Sun Feb 17 09:41:55 2013 -0500 +Commit: Dan Winship +CommitDate: Sat Aug 17 13:26:42 2013 -0400 + + GSocket: fix broadcast documentation + + The :broadcast property only affects sending broadcast packets, not + receiving them. + + gio/gsocket.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 37849277645d05c1e1cd9c5e585d7231f75ffa2f +Author: Robert Ancell +AuthorDate: Fri May 31 11:07:55 2013 +1200 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 13:02:25 2013 -0400 + + Add G_SPAWN_DEFAULT to GSpawnFlags + + This is convenient for language bindings, and also makes + invocations of g_spawn functions in C more readable. + + https://bugzilla.gnome.org/show_bug.cgi?id=701318 + + glib/gspawn.h | 2 ++ + glib/tests/spawn-multithreaded.c | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +commit 8b3d779d1ece535680724812fddffbdc940f328c +Author: Matthias Clasen +AuthorDate: Sat Aug 17 12:35:33 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 12:35:33 2013 -0400 + + Make g_date_time_new check its arguments + + The documentation for this function explicitly gives valid + ranges for the arguments and states that out-of-range arguments + will cause NULL to be returned. Only, the code didn't check + the ranges, and crashed instead. Fix that and add a testcase + for invalid arguments. It turns out that the test_z testcase + was providing invalid arguments and relied on g_date_time_new + to return a non-NULL value anyway, so this commit fixes that + testcase as well. + + https://bugzilla.gnome.org/show_bug.cgi?id=702674 + + glib/gdatetime.c | 8 ++++++++ + glib/tests/gdatetime.c | 14 +++++++++++++- + 2 files changed, 21 insertions(+), 1 deletion(-) + +commit e70250bbd5e786240fee7ad373ee16657518acf7 +Author: Ryan Lortie +AuthorDate: Fri Jun 7 11:41:41 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 17 12:10:23 2013 -0400 + + Export __glib_assert_msg + + Put __glib_assert_msg in the dynamic symbol table, but not in + any public + headers. + + This variable is _not_ part of our API but this way debuggers and + automated crash report utilities will be able to access this variable, + even if debug symbols are not available. + + https://bugzilla.gnome.org/show_bug.cgi?id=701800 + + glib/gtestutils.c | 1 + + 1 file changed, 1 insertion(+) + +commit f550c0dc9dafc582d323735d9e220e441a337f9a +Author: Dan Winship +AuthorDate: Sat Aug 17 10:35:13 2013 -0400 +Commit: Dan Winship +CommitDate: Sat Aug 17 10:35:13 2013 -0400 + + update .gitignores + + gio/tests/.gitignore | 2 ++ + gobject/tests/.gitignore | 1 + + 2 files changed, 3 insertions(+) + +commit fd5b1939bddf4b935c7e8dea21496483d15c4ece +Author: Dan Winship +AuthorDate: Thu Feb 7 10:02:55 2013 -0500 +Commit: Dan Winship +CommitDate: Sat Aug 17 10:34:32 2013 -0400 + + build: fix dtrace-related warnings + + Fix the warnings when compiling and linking the probes files by + calling dtrace with all the -W flags removed from CFLAGS (since dtrace + generates bad C code), and with CC set to "libtool --mode=compile ..." + (so that it will output a proper .lo file and libtool won't warn when + linking it into the .la). + + https://bugzilla.gnome.org/show_bug.cgi?id=693335 + + glib/Makefile.am | 15 ++++++++++----- + gobject/Makefile.am | 15 ++++++++++----- + 2 files changed, 20 insertions(+), 10 deletions(-) + +commit 5415537edb383fedfc5d4edc17dcf2bd2b8a38af +Author: Dan Winship +AuthorDate: Sun Jun 2 19:59:09 2013 -0300 +Commit: Dan Winship +CommitDate: Sat Aug 17 10:25:26 2013 -0400 + + glib/tests/gdatetime: use UTC time in test_GDateTime_diff() + + test_GDateTime_diff() checks that the span from 2009-01-01 to + 2010-01-01 is exactly 365 * G_TIME_SPAN_DAY, but it does this using + local time, and so fails if you are in a timezone that is in the + southern hemisphere which only did DST during one of 2008-2009 and + 2009-2010 (in which case the year will end up being one hour too long + or too short). + + Switch the diff tests to use UTC time instead; there are plenty of + other local time tests already. + + https://bugzilla.gnome.org/show_bug.cgi?id=701529 + + glib/tests/gdatetime.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 74a5e920767eb350979595c3bc51f126158608d9 +Author: Wouter Bolsterlee +AuthorDate: Sat Aug 17 14:58:12 2013 +0200 +Commit: Wouter Bolsterlee +CommitDate: Sat Aug 17 14:58:12 2013 +0200 + + Updated Dutch translation + + po/nl.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a7f2765dbabf889df065e601fc072644dda625e4 +Author: Daiki Ueno +AuthorDate: Fri Aug 16 17:44:14 2013 +0200 +Commit: Daiki Ueno +CommitDate: Sat Aug 17 06:42:02 2013 +0200 + + codegen: Treat input file as binary + + Under C locale, open() in Python 3 sets the file encoding to ASCII. + As expat looks at encoding="..." in XML declaration, gdbus-codegen can + simply open the input file as binary and let expat decode the content. + + https://bugzilla.gnome.org/show_bug.cgi?id=696633 + + gio/gdbus-2.0/codegen/codegen_main.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1e945933d4709131730294df0f9076a4424e6e1c +Author: Chun-wei Fan +AuthorDate: Fri Aug 16 10:35:19 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Aug 16 10:35:19 2013 +0800 + + config.h.win32.in: Drop unneeded item + + ...We no longer have the iconv cache code around. + + config.h.win32.in | 3 --- + 1 file changed, 3 deletions(-) + +commit 2ab9e544778b040c26d422138bea307f69064958 +Author: Chun-wei Fan +AuthorDate: Fri Aug 16 10:29:41 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Aug 16 10:29:41 2013 +0800 + + Update config.h.win32.in + + Make its entries match the items that are being checked by the + autotools + builds in config.h.in. + + config.h.win32.in | 66 + +++++++++++++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 59 insertions(+), 7 deletions(-) + +commit 4cea6625cb377daa1a0088189447750427a146c3 +Author: Colin Walters +AuthorDate: Thu Aug 15 18:24:45 2013 -0400 +Commit: Colin Walters +CommitDate: Thu Aug 15 19:45:34 2013 -0400 + + giochannel: Add an out annotation for g_io_channel_read_unichar() + + Since it's an output variable. + + https://bugzilla.gnome.org/show_bug.cgi?id=704165 + + glib/giochannel.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a93d373812e37dbac3b749457cedf290227ef441 +Author: Dan Winship +AuthorDate: Thu Aug 15 11:30:59 2013 -0400 +Commit: Dan Winship +CommitDate: Thu Aug 15 12:43:57 2013 -0400 + + gio/tests/task: fix a race condition in test_run_in_thread() + + When running a task in a thread, GTask may still be internally holding + a ref on the task in that thread even after the callback is called in + the original thread (depending on thread scheduling). Fix the test to + handle that by using a weak notify that signals a GCond, and wait for + that GCond from the main thread. (And add a corresponding check to + test_return_on_cancel().) + + https://bugzilla.gnome.org/show_bug.cgi?id=705152 + + gio/tests/task.c | 45 ++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 38 insertions(+), 7 deletions(-) + +commit 4b334ef8f1393c997a2d83de4ffe0976dff238c3 +Author: Nick Schermer +AuthorDate: Wed Aug 7 21:01:00 2013 +0200 +Commit: Colin Walters +CommitDate: Wed Aug 14 18:11:05 2013 +0100 + + gobject: Handle ref_count==0 in notify_by_pspec + + Just like g_object_notify, check for a zero ref_count in + g_object_notify_by_pspec and leave if it is 0. + + This allows using functions in ->finalize() that possibly also + notify a property change on the object. Previously, + this resulted in an error from g_object_ref. + + https://bugzilla.gnome.org/show_bug.cgi?id=705570 + + gobject/gobject.c | 3 +++ + gobject/tests/properties.c | 7 +++++++ + 2 files changed, 10 insertions(+) + +commit 62f173f1f3e5da028fd11cb827a54418e1ca8ec2 +Author: Theppitak Karoonboonyanan +AuthorDate: Wed Aug 14 17:07:38 2013 +0700 +Commit: Theppitak Karoonboonyanan +CommitDate: Wed Aug 14 17:07:38 2013 +0700 + + Updated Thai translation. + + po/th.po | 880 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 442 insertions(+), 438 deletions(-) + +commit 844589b03e39ac07af3b63b234d03221ac11e766 +Author: Matthias Clasen +AuthorDate: Tue Aug 13 16:48:51 2013 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 13 16:48:51 2013 -0400 + + GSimpleActionGroup: Deprecated redundant API + + See https://bugzilla.gnome.org/show_bug.cgi?id=705600 + + gio/gsimpleactiongroup.c | 8 ++++++++ + gio/gsimpleactiongroup.h | 8 ++++---- + 2 files changed, 12 insertions(+), 4 deletions(-) + +commit a5fd296cc8583de6ac10c5a6adc84751495ad7e1 +Author: Cosimo Cecchi +AuthorDate: Tue Aug 13 15:16:48 2013 +0200 +Commit: Cosimo Cecchi +CommitDate: Tue Aug 13 17:19:24 2013 +0200 + + themedicon: correctly fallback to symbolic icons + + When an icon is requested as symbolic, our generic fallback algorithm + uses fullcolor icons when the specified icon name is not found, + treating + the "-symbolic" suffix as another component of the icon name. + + Change the algorithm to check beforehand if the icon is symbolic, + remove + the suffix if so, and re-add it at the end for all the generated icon + names. + + https://bugzilla.gnome.org/show_bug.cgi?id=680926 + + gio/gthemedicon.c | 35 +++++++++++++++++++++++++++++------ + 1 file changed, 29 insertions(+), 6 deletions(-) + +commit aa4b9429b43e125a05c4c1c0d7b168c13efbb2ad +Author: Aurimas Černius +AuthorDate: Sun Aug 11 21:01:50 2013 +0300 +Commit: Aurimas Černius +CommitDate: Sun Aug 11 21:01:50 2013 +0300 + + Updated Lithuanian translation + + po/lt.po | 867 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 437 insertions(+), 430 deletions(-) + +commit 0dcb1db7a0ec73a67b37a911c6b52b135365e37e +Author: Kjartan Maraas +AuthorDate: Thu Aug 8 22:14:04 2013 +0200 +Commit: Kjartan Maraas +CommitDate: Thu Aug 8 22:14:04 2013 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 551 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 278 insertions(+), 273 deletions(-) + +commit 4ab30c0770f21444682a1671f017293b8631900c +Author: Daniel Mustieles +AuthorDate: Thu Aug 8 11:14:31 2013 +0200 +Commit: Daniel Mustieles +CommitDate: Thu Aug 8 11:14:31 2013 +0200 + + Updated Spanish translation + + po/es.po | 80 + +++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 41 insertions(+), 39 deletions(-) + +commit c2352409051df49a08d9dced5b69ede434e90723 +Author: Ryan Lortie +AuthorDate: Mon Jul 29 10:00:20 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sun Aug 4 17:26:05 2013 +0200 + + g_get_tmp_dir(): Clean up envars + + On UNIX, we should only ever be looking at TMPDIR. + + On Windows, we should only ever look at TEMP. + + Also, clean up the documentation to better describe what is actually + happening. The previous docs may have left someone confused about why + this function returns "/var/tmp" on Solaris, even with no TMPDIR set. + + https://bugzilla.gnome.org/show_bug.cgi?id=705075 + + glib/gutils.c | 40 ++++++++++++++++++---------------------- + 1 file changed, 18 insertions(+), 22 deletions(-) + +commit 05d6175ded6ce5f1f7721e2ea90792d348505d89 +Author: Yaron Shahrabani +AuthorDate: Sun Aug 4 10:31:19 2013 +0300 +Commit: Yaron Shahrabani +CommitDate: Sun Aug 4 10:31:19 2013 +0300 + + Updated Hebrew translation. + + po/he.po | 1720 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 846 insertions(+), 874 deletions(-) + +commit 66233f1d1b70a4c220b1dc98e5338e8469a82ff1 +Author: Emanuele Aina +AuthorDate: Sat Aug 3 11:51:00 2013 +0200 +Commit: Emanuele Aina +CommitDate: Sun Aug 4 08:15:30 2013 +0200 + + gtype: Fix typo in g_type_class_add_private() error message + + https://bugzilla.gnome.org/show_bug.cgi?id=705398 + + gobject/gtype.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9edd65ad99194ed549a2cdac7c40898451be13ab +Author: Yuri Myasoedov +AuthorDate: Sun Aug 4 09:44:21 2013 +0400 +Commit: Yuri Myasoedov +CommitDate: Sun Aug 4 09:44:21 2013 +0400 + + Updated Russian translation + + po/ru.po | 847 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 433 insertions(+), 414 deletions(-) + +commit 29b2d3b74bf97b3f950bda666dfc208a1c34c8d7 +Author: Sandeep Sheshrao Shedmake +AuthorDate: Sun Aug 4 08:57:37 2013 +0530 +Commit: Sandeep Sheshrao Shedmake +CommitDate: Sun Aug 4 08:57:37 2013 +0530 + + Updated Marathi Translations + + po/mr.po | 624 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 312 insertions(+), 312 deletions(-) + +commit 13759f9ce8c691f0ac7b9c7afe9da896ec9377a3 +Author: Marek Černocký +AuthorDate: Sat Aug 3 20:05:34 2013 +0200 +Commit: Marek Černocký +CommitDate: Sat Aug 3 20:05:34 2013 +0200 + + Updated Czech translation + + po/cs.po | 101 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 50 insertions(+), 51 deletions(-) + +commit 0d99699ee447745c4e1a622282542be1cbff0d3f +Author: Chao-Hsiung Liao +AuthorDate: Sat Aug 3 21:06:46 2013 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Sat Aug 3 21:06:46 2013 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 863 + ++++++++++++++++++++++++++++++------------------------------ + po/zh_TW.po | 863 + ++++++++++++++++++++++++++++++------------------------------ + 2 files changed, 872 insertions(+), 854 deletions(-) + +commit 8c170c565b700099d738ea06eab0ed8c8c1aa565 +Author: Rafael Ferreira +AuthorDate: Fri Aug 2 23:15:58 2013 -0300 +Commit: Rafael Ferreira +CommitDate: Fri Aug 2 23:15:58 2013 -0300 + + Updated Brazilian Portuguese translation proofread by Enrico Nicoletto + + po/pt_BR.po | 889 + ++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 450 insertions(+), 439 deletions(-) + +commit 3d15261a5c90822587e91a49074f3224b8e8cd6e +Author: Fran Diéguez +AuthorDate: Fri Aug 2 12:16:30 2013 +0200 +Commit: Fran Diéguez +CommitDate: Fri Aug 2 12:16:30 2013 +0200 + + Updated Galician translations + + po/gl.po | 533 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 269 insertions(+), 264 deletions(-) + +commit 7c0d527fa63f9b84ba8bd084b742676d3d5ebb82 +Author: Rico Tzschichholz +AuthorDate: Thu Aug 1 20:41:50 2013 +0200 +Commit: Rico Tzschichholz +CommitDate: Thu Aug 1 20:41:50 2013 +0200 + + GMenuModel: Fix typo in annotation + + gio/gmenumodel.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5451265cf40b58678e60662bccaa92e3dcb2a8ec +Author: Sweta Kothari +AuthorDate: Thu Aug 1 13:46:52 2013 +0530 +Commit: Sweta Kothari +CommitDate: Thu Aug 1 13:47:53 2013 +0530 + + Updated Gujarati Translations + + po/gu.po | 48 +++++++++++++++++++++++++----------------------- + 1 file changed, 25 insertions(+), 23 deletions(-) + +commit 8a1b55372857fa628eb3a1f27d63891374d13bef +Author: Daniel Svensson +AuthorDate: Tue Jul 30 18:20:44 2013 -0400 +Commit: Colin Walters +CommitDate: Tue Jul 30 18:20:44 2013 -0400 + + gdesktopappinfo: Add missing return value + + gio/gdesktopappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 097ba61b33cd69b81260520ec1a891f3c0ccfb8c +Author: Nilamdyuti Goswami +AuthorDate: Tue Jul 30 22:40:49 2013 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Tue Jul 30 22:41:25 2013 +0530 + + Assamese translation updated + + po/as.po | 47 +++++++++++++++++++++++++---------------------- + 1 file changed, 25 insertions(+), 22 deletions(-) + +commit 54a76e24b3ac2d03851ac4825482f915cfcdc470 +Author: Dan Winship +AuthorDate: Tue Jul 30 09:12:48 2013 -0400 +Commit: Dan Winship +CommitDate: Tue Jul 30 09:13:18 2013 -0400 + + gsocket: fix a cut-and-pasted error message + + gio/gsocket.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0f46a48ee3f8eaa9aaf7c4b2bd3ccff5eff061e3 +Author: Matthias Clasen +AuthorDate: Mon Jul 29 18:07:32 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 29 18:07:32 2013 -0400 + + post-release version bump + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1a78bea7cac2f49815b2a57039b27dc9993f6d1e +Author: Matthias Clasen +AuthorDate: Mon Jul 29 17:18:06 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 29 17:19:06 2013 -0400 + + 2.37.5 + + NEWS | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 57 insertions(+) + +commit 7a31a5010c548237bb107f2bf6a73d336f374bb2 +Author: Ryan Lortie +AuthorDate: Mon Jul 29 17:15:19 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 29 17:15:19 2013 -0400 + + GMenuModel: add annotations to virtual functions + + Patch from Ted Gould. + + https://bugzilla.gnome.org/show_bug.cgi?id=704931 + + gio/gmenumodel.h | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit 9551a811981d14f897d100508dbcff07db1fc503 +Author: Sébastien Wilmet +AuthorDate: Mon Jul 29 17:29:05 2013 +0200 +Commit: Sébastien Wilmet +CommitDate: Mon Jul 29 17:29:05 2013 +0200 + + Fix G_ADD_PRIVATE_DYNAMIC() + + gobject/gtypemodule.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d0b4f59e8cffc9da8d6e2a856687d34ed2765c3a +Author: Chun-wei Fan +AuthorDate: Fri Jul 19 19:10:41 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Jul 29 10:26:01 2013 +0800 + + Add MSVC implementations of G_GNUC_*_IGNORE_DEPRECATIONS + + As Visual Studio 2008 and later have support for the __pragma keyword, + where the compiler pragmas can be used in a macro, we can support + G_GNUC_BEGIN_IGNORE_DEPRECATIONS and G_GNUC_END_IGNORE_DEPRECATIONS + for Visual Studio 2008 and later, so many deprecation (C4996) warnings + can be suppressed when using these compilers when we use these macros + in the code. + + https://bugzilla.gnome.org/show_bug.cgi?id=704543 + + glib/gmacros.h | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 90da4ed628cf9e311c4730d529b5d53159035676 +Author: Matthias Clasen +AuthorDate: Sun Jul 28 22:06:57 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 28 22:06:57 2013 -0400 + + Trivial typo fix + + gobject/gsignal.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3bdd8a2c882ed3cd8d7aab48d2f3180a543d21a2 +Author: Matthias Clasen +AuthorDate: Sun Jul 28 18:44:41 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 28 18:44:41 2013 -0400 + + Use GLIB_PRIVATE_CALL macro + + I accidentally pushed the fix for bug 704873 before + applying this cleanup. + + gio/inotify/inotify-kernel.c | 6 +++--- + gio/inotify/inotify-missing.c | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit d9359765acea796473ec9de328d023e5bdc7e96a +Author: Matthias Clasen +AuthorDate: Sun Jul 28 18:39:51 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 28 18:39:51 2013 -0400 + + Use better assertion macros + + Use g_assert_cmpint and friends in the convert test, to get + more telling messages when they fail. + + glib/tests/convert.c | 132 + +++++++++++++++++++++++++-------------------------- + 1 file changed, 66 insertions(+), 66 deletions(-) + +commit 39460701d4ed32e1c437358875280a410fe8b82f +Author: Matthias Clasen +AuthorDate: Sun Jul 28 18:39:42 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 28 18:39:42 2013 -0400 + + Avoid an unused variable warning + + glib/tests/unix.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 331e93c3f1ad95cb4add48213613e8eeee8cb386 +Author: Colin Walters +AuthorDate: Sun Jul 28 00:21:00 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sun Jul 28 18:37:47 2013 -0400 + + Drop iconv caching code + + This was introduced for Solaris performance theoretically; + we have never been able to use it on Linux/glibc because + the UTF-16 BOM state isn't reset. + + We have no data about Solaris performance; were some to + still exist, we could reintroduce the code with an explicit + check for Solaris, not a check for glibc. + + https://bugzilla.gnome.org/show_bug.cgi?id=704999 + + configure.ac | 27 ------ + glib/gconvert.c | 297 + -------------------------------------------------------- + 2 files changed, 324 deletions(-) + +commit abbb22573813405215c11bff9fb6b110880fd711 +Author: Ryan Lortie +AuthorDate: Thu Jul 25 10:28:42 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 28 17:19:38 2013 -0400 + + inotify: don't assume mainloop is running + + GFileMonitor takes great care to sample the thread-default main + context + at the time that it is created in order that events can be + dispatched to + the correct thread when they come in. + + The inotify GFileMonitor implementation uses a global file descriptor + shared between all watches. It has to poll this file descriptor from + somewhere so it arbitrarily picks the default main context. + + The problem with that is that the user might not be running it. + + Let's use the GLib worker thread for this instead. It's guaranteed to + be running if you need it, and this is exactly the sort of problem it + was meant to solve. + + https://bugzilla.gnome.org/show_bug.cgi?id=704873 + + gio/inotify/inotify-kernel.c | 20 ++++++++++++++++---- + gio/inotify/inotify-missing.c | 8 +++++++- + 2 files changed, 23 insertions(+), 5 deletions(-) + +commit 5843582604c9b1b0d459dc7f15182c966d112d9e +Author: Matthias Clasen +AuthorDate: Sun Jul 28 17:04:56 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 28 17:04:56 2013 -0400 + + Fix build with statvfs + + As pointed out in bug 704587, the maze of ifdefs was missing the + variable declaration for statfs_result in one case. + + https://bugzilla.gnome.org/show_bug.cgi?id=704587 + + gio/glocalfile.c | 1 + + 1 file changed, 1 insertion(+) + +commit 023e3b31a5352460f415944e166d413c2c747886 +Author: Rico Tzschichholz +AuthorDate: Sat Jul 27 09:02:58 2013 +0200 +Commit: Rico Tzschichholz +CommitDate: Sat Jul 27 09:02:58 2013 +0200 + + Fix a typo + + Introduced by 3b01cbe8a8a9ee2d1169f072624069877b91097c + + gobject/gtype.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ca6b93d0936e6864d374d3e8f2a795c1702b28b3 +Author: Emmanuele Bassi +AuthorDate: Fri Jul 26 16:45:48 2013 +0100 +Commit: Matthias Clasen +CommitDate: Fri Jul 26 20:56:54 2013 -0400 + + Add macros and symbols for private data on dynamic types + + We need a TypeName_private_offset variable defined by the macros + used to + register dynamic types. We also need to call the + adjust_private_offset() + function inside class_init(). G_ADD_PRIVATE_DYNAMIC only sets the size + of the private data structure, and relies on the behaviour of the + g_type_class_adjuset_private_offset() function to register the private + data structure at class init time if passed a value greater than zero. + + This allows using G_PRIVATE_OFFSET with dynamic types. + + gobject/gtypemodule.h | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +commit d2bb019533bbcbd1cee3891822ac7ba6ff55ad3d +Author: Colin Walters +AuthorDate: Fri Jul 26 12:39:51 2013 +0100 +Commit: Colin Walters +CommitDate: Fri Jul 26 19:46:21 2013 +0100 + + configure: Use AC_USE_SYSTEM_EXTENSIONS + + ...instead of detecting glibc and using _GNU_SOURCE manually. This + should fix the build when using glibc-emulating libraries; we can + defer portability work to autoconf. + + https://bugzilla.gnome.org/show_bug.cgi?id=684123 + + configure.ac | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +commit 3b01cbe8a8a9ee2d1169f072624069877b91097c +Author: Matthias Clasen +AuthorDate: Fri Jul 26 14:40:10 2013 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 26 14:42:22 2013 -0400 + + Document restrictions on private names + + With the new machinery, private structs must be named + TypeNamePrivate if TypeName is the name of the instance + struct. + + gobject/gtype.h | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 40f56d9d351f36d3ba2d4797c8f65caa38c78488 +Author: Sweta Kothari +AuthorDate: Fri Jul 26 14:50:22 2013 +0530 +Commit: Sweta Kothari +CommitDate: Fri Jul 26 14:50:22 2013 +0530 + + updated Gujarati translations + + po/gu.po | 574 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 290 insertions(+), 284 deletions(-) + +commit dc2d3f77811c1247f8c46030557e4f76804bdf9e +Author: Nilamdyuti Goswami +AuthorDate: Thu Jul 25 13:18:58 2013 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Thu Jul 25 13:18:58 2013 +0530 + + Assamese translation updated + + po/as.po | 495 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 247 insertions(+), 248 deletions(-) + +commit 2127654da5ec64db93653e7b0ac02b0b17abe191 +Author: Dan Winship +AuthorDate: Wed Jul 24 10:02:38 2013 -0400 +Commit: Dan Winship +CommitDate: Wed Jul 24 14:22:23 2013 -0400 + + mainloop: redo child source tests to not use timeouts + + The timeout-based tests could fail on slow or heavily-loaded machines. + Change them to use a counter-based "timeout" source rather than a + time-based one, so they no longer depend on wall time. + + https://bugzilla.gnome.org/show_bug.cgi?id=700460 + + glib/tests/mainloop.c | 109 + +++++++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 89 insertions(+), 20 deletions(-) + +commit 8c748efce1b441cf8aa05f22a24c27a940a29cf7 +Author: Dan Winship +AuthorDate: Wed Jul 24 10:45:36 2013 -0400 +Commit: Dan Winship +CommitDate: Wed Jul 24 10:45:36 2013 -0400 + + gnetworkaddress: tweak to make Solaris happy + + https://bugzilla.gnome.org/show_bug.cgi?id=704704 + + gio/gnetworkaddress.c | 1 + + 1 file changed, 1 insertion(+) + +commit 5a287a0be58c7b54208143367e3d6e011f961544 +Author: Shantha kumar +AuthorDate: Wed Jul 24 14:57:30 2013 +0530 +Commit: Shantha kumar +CommitDate: Wed Jul 24 14:57:30 2013 +0530 + + Tamil Translation Updated + + po/ta.po | 637 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 317 insertions(+), 320 deletions(-) + +commit baf7f1e23e4c924049e75fe11ea029846c03706d +Author: Colin Walters +AuthorDate: Mon Jul 22 19:31:35 2013 +0100 +Commit: Colin Walters +CommitDate: Tue Jul 23 14:43:38 2013 -0400 + + tests/unix: Don't error immediately on timeout + + On a heavily loaded system, it's possible that both our normal + condition *and* the timeout occurred. In that case we can just ignore + the timeout. + + While I did add a "sig_timeout" boolean, we don't need to add any + assertions around whether or not it was reached - the assertions + covering the non-timeout case are sufficient. The sig_timeout boolean + is mainly for later debugging. + + https://bugzilla.gnome.org/show_bug.cgi?id=700460 + + glib/tests/unix.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit 2e471acfcabef4bbf50ce29dc9cd157263e646f0 +Author: Colin Walters +AuthorDate: Mon Jul 22 19:06:31 2013 +0100 +Commit: Colin Walters +CommitDate: Tue Jul 23 14:43:15 2013 -0400 + + gmain: Reset signal handlers to default when source is destroyed + + If someone creates a unix signal source for e.g. SIGINT, and then + removes it, reset the handler to SIG_DFL. + + Not doing this was the source of race conditions in the + glib/tests/unix test, but this will also just make us a "good citizen" + by cleaning up. + + For example, if a project temporarily creates a handler for SIGTERM, + and then later removes it, they almost certainly want SIGTERM to + revert to the default of terminating the process, rather than doing + nothing. + + https://bugzilla.gnome.org/show_bug.cgi?id=704699 + + glib/gmain.c | 51 + +++++++++++++++++++++++++++++++-------------------- + glib/tests/unix.c | 11 ++++------- + 2 files changed, 35 insertions(+), 27 deletions(-) + +commit 6fbb1463429748bed7ab6593779430ee1c0664f5 +Author: Sébastien Wilmet +AuthorDate: Mon Jul 15 13:52:14 2013 +0200 +Commit: Sébastien Wilmet +CommitDate: Tue Jul 23 15:43:22 2013 +0200 + + GRegex: add g_regex_get_max_lookbehind() + + It is useful for multi-segment regex matching. + + A unit test is included. + + https://bugzilla.gnome.org/show_bug.cgi?id=689794 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gregex.c | 23 +++++++++++++++++++++++ + glib/gregex.h | 2 ++ + glib/tests/regex.c | 19 +++++++++++++++++++ + 4 files changed, 45 insertions(+) + +commit d9e01e0c37eb7928a99aeaa3d51007198991928d +Author: Colin Walters +AuthorDate: Mon Jul 22 15:11:13 2013 +0100 +Commit: Colin Walters +CommitDate: Mon Jul 22 15:14:34 2013 +0100 + + tests/closure: Send SIGUSR1 only to our pid + + Otherwise in e.g. the gnome-ostree integrationtest system, we + end up sending SIGUSR1 to the *entire session*, which triggers + various badness in untested debugging paths from gnome-session. + + gobject/tests/closure.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 00f5c63621d8a0e67562deaf529b6a9c9362e2d7 +Author: Colin Walters +AuthorDate: Mon Jul 22 12:51:00 2013 +0100 +Commit: Colin Walters +CommitDate: Mon Jul 22 09:34:24 2013 -0400 + + tests/closure: Use correct prototype for signal callback + + This test worked when compiled without optimization, but fails with + -O2. Presumably we just happened to find the GMainLoop off the stack + somewhere. + + https://bugzilla.gnome.org/show_bug.cgi?id=704267 + + gobject/tests/closure.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit a65a85a4fd334a2dbd6739955aa652efc83a360f +Author: Daniel Mustieles +AuthorDate: Mon Jul 22 13:48:58 2013 +0200 +Commit: Daniel Mustieles +CommitDate: Mon Jul 22 13:48:58 2013 +0200 + + Updated Spanish translation + + po/es.po | 549 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 276 insertions(+), 273 deletions(-) + +commit 64041ca498a6115eb3a6f32c0fb2a3bec3c9fd88 +Author: Milan Crha +AuthorDate: Mon Jul 22 09:54:33 2013 +0200 +Commit: Milan Crha +CommitDate: Mon Jul 22 09:54:33 2013 +0200 + + g_thread_create_full() can dereference NULL pointer + + In case of the thread creation failure, and the thread was not created + as joinable, the g_thread_create_full() could dereference a NULL + pointer. + + https://bugzilla.gnome.org/show_bug.cgi?id=704523 + + glib/deprecated/gthread-deprecated.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 114b1ccf78849988567011c36dd5e868a66a3431 +Author: Chun-wei Fan +AuthorDate: Thu Jul 18 17:22:53 2013 +0800 +Commit: Colin Walters +CommitDate: Sun Jul 21 20:50:34 2013 +0100 + + gsourceclosure.c: Fix build on Windows + + GPid is a HANDLE (aka void *) on Windows, not an int, so treat pid + accordingly on Windows, as using pid as a gulong directly would + likely be + undesirable on Windows + + https://bugzilla.gnome.org/show_bug.cgi?id=704447 + + gobject/gsourceclosure.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 88ab63155de12a995c53711c65cc25026912171e +Author: Dan Winship +AuthorDate: Thu Jul 18 08:11:35 2013 -0400 +Commit: Colin Walters +CommitDate: Sun Jul 21 20:50:11 2013 +0100 + + gobject/tests/closure: fix on win32 + + (The g_closure_unref() was wrong, but was not causing errors on linux + for some reason.) + + https://bugzilla.gnome.org/show_bug.cgi?id=704447 + + gobject/tests/closure.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 35e331b86912813a7d18b0ca3fb951f5759c11e8 +Author: Colin Walters +AuthorDate: Sun Jul 21 19:42:34 2013 +0100 +Commit: Colin Walters +CommitDate: Sun Jul 21 19:42:34 2013 +0100 + + tests/closure: Fix invalid unref + + The closure is floating, g_source_set_closure() will claim the + ref, so we do not need to unref it. + + gobject/tests/closure.c | 1 - + 1 file changed, 1 deletion(-) + +commit 1543baddee0b18531325aa9728529777c38c94d7 +Author: Marek Černocký +AuthorDate: Sun Jul 21 11:00:38 2013 +0200 +Commit: Marek Černocký +CommitDate: Sun Jul 21 11:00:38 2013 +0200 + + Updated Czech translation + + po/cs.po | 454 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 230 insertions(+), 224 deletions(-) + +commit 4f327d6379c3eb8f9dcd5127349c06f1d34b1155 +Author: Sébastien Wilmet +AuthorDate: Fri Jul 12 16:44:13 2013 +0200 +Commit: Sébastien Wilmet +CommitDate: Sat Jul 20 11:07:46 2013 +0200 + + GRegex: update documentation for partial matching + + The restrictions on partial matching no longer apply with PCRE + >= 8.00. + + The pcrepartial manpage contains the "FORMERLY RESTRICTED PATTERNS" + section: + + "For releases of PCRE prior to 8.00, because of the way certain + internal optimizations were implemented in the pcre_exec() function, + the + PCRE_PARTIAL option (predecessor of PCRE_PARTIAL_SOFT) could not + be used + with all patterns. From release 8.00 onwards, the restrictions no + longer apply, and partial matching with can be requested + for any + pattern." + + https://bugzilla.gnome.org/show_bug.cgi?id=704250 + + glib/gregex.c | 16 ++++------------ + 1 file changed, 4 insertions(+), 12 deletions(-) + +commit b3968fb1501bb2950e6c15aad95083e6f01973ba +Author: Sébastien Wilmet +AuthorDate: Fri Jul 5 13:23:11 2013 +0200 +Commit: Sébastien Wilmet +CommitDate: Sat Jul 20 11:07:46 2013 +0200 + + Improve documentation + + - Mention G_SOURCE_CONTINUE and G_SOURCE_REMOVE in the GSourceFunc + doc; + - Mention G_PARAM_READWRITE and G_PARAM_STATIC_STRINGS in the + GParamFlags doc; + - Fix "Since:" version for G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE; + - Fix typo. + + https://bugzilla.gnome.org/show_bug.cgi?id=704250 + + glib/gmain.h | 3 ++- + glib/gregex.h | 2 +- + gobject/gparam.h | 2 +- + gobject/gtype.h | 2 +- + 4 files changed, 5 insertions(+), 4 deletions(-) + +commit 8753df9d700dcc132f77432d76863884ab21fa87 +Author: Matthias Clasen +AuthorDate: Fri Jul 19 19:41:24 2013 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 19 19:43:48 2013 -0400 + + gsettings tool: report failure to write + + If a key is locked down, we should report an error if we + fail to write it. + + https://bugzilla.gnome.org/show_bug.cgi?id=704424 + + gio/gsettings-tool.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit dc87c453fbdcf568990c0e7587fa4607f5e148b9 +Author: Igor Pashev +AuthorDate: Fri Jul 19 18:23:29 2013 -0400 +Commit: Colin Walters +CommitDate: Fri Jul 19 18:23:29 2013 -0400 + + tests/gvariant: Canonicalize to lower case to work on Illumos + (OpenSolaris) + + Solaris libc gives lowercase strings. + + https://bugzilla.gnome.org/show_bug.cgi?id=704585 + + glib/tests/gvariant.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 31aee73285729b1d0d2210cb728b4b2d52711678 +Author: Colin Walters +AuthorDate: Fri Jul 19 11:50:35 2013 -0400 +Commit: Colin Walters +CommitDate: Fri Jul 19 17:49:47 2013 -0400 + + gdbusnameowning: Don't spew an error if we're releasing a name due + to closing + + The default GNOME 3.10 login process right now has gdm spawn a session + for the login screen, retaining the X server, but closing the session + bus. Right now in this scenario many GNOME components such as + gnome-settings-daemon attempt to "clean up" on shutdown by releasing + their owned names. + + But they're shutting down because the session bus went away, so + releasing the name is pointless, and presently spews an error into the + journal. + + This patch avoids that error spew, which helps system administrators + find *real* problems. + + https://bugzilla.gnome.org/show_bug.cgi?id=704567 + + gio/gdbusnameowning.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit be2c7b83c4a9c9d3aa76b1499c27ab19e0f4e470 +Author: Giovanni Campagna +AuthorDate: Tue Jul 16 15:26:02 2013 +0200 +Commit: Giovanni Campagna +CommitDate: Fri Jul 19 09:34:47 2013 +0200 + + glib-unix: fix handling of multiple signal source for the same signal + + We can't reset the pending flag for a signal until we've traversed + the whole list, as the documentation clearly says that in case + multiple + sources they all get invoked. + This is still racy if you get a signal after checking the flag + but before resetting it, but it was the same before. The correct + fix would be to use sigwait() or signalfd(), but that would mean + blocking all signals in all threads, which is not compatible + with existing applications. + + https://bugzilla.gnome.org/show_bug.cgi?id=704322 + + glib/gmain.c | 6 ++--- + glib/tests/unix.c | 70 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 71 insertions(+), 5 deletions(-) + +commit 72a7e824d65b725a5f64224ee274fe5e3d7933fc +Author: Dan Winship +AuthorDate: Wed Jul 17 18:58:18 2013 -0400 +Commit: Dan Winship +CommitDate: Wed Jul 17 21:41:45 2013 -0400 + + gsourceclosure: fix idle/timeout/signal closures, add child watch + support + + And add a test for all source types. + + https://bugzilla.gnome.org/show_bug.cgi?id=704267 + + gobject/gsourceclosure.c | 69 +++++++++++++++- + gobject/tests/.gitignore | 1 + + gobject/tests/Makefile.am | 1 + + gobject/tests/closure.c | 202 + ++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 270 insertions(+), 3 deletions(-) + +commit d06400cbaf4d3f6741a463668b2c8a56f695d124 +Author: Chun-wei Fan +AuthorDate: Wed Jul 17 16:54:35 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Jul 17 16:54:35 2013 +0800 + + Visual Studio Builds: Update property sheets + + "Install" the newly-introduced gpropertyaction.h header file, which is + required for GIO. + + build/win32/vs10/glib.props | 2 ++ + build/win32/vs9/glib.vsprops | 1 + + 2 files changed, 3 insertions(+) + +commit 95f7dc949135181dcefd69e6773f1488c02a79a9 +Author: Chun-wei Fan +AuthorDate: Wed Jul 17 16:45:50 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Jul 17 16:45:50 2013 +0800 + + Visual Studio Builds: "Install" gdbus-codegen + + build/win32/vs10/glib.props | 7 +++++++ + build/win32/vs9/glib.vsprops | 4 ++++ + 2 files changed, 11 insertions(+) + +commit 371fb88362f372644bc1503594f8885ffd65f52e +Author: Matthias Clasen +AuthorDate: Tue Jul 16 19:21:31 2013 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 16 19:21:31 2013 -0400 + + gsettings tool: Improve documentation + + Mention that gsettings needs a session bus to make changes. + + docs/reference/gio/gsettings.xml | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 8ead9055b9139a8e8849e8d34ba0bd4b245618db +Author: Ryan Lortie +AuthorDate: Sun Jul 14 17:11:59 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sun Jul 14 19:48:01 2013 -0400 + + GApplication: reply to ActivateAction + + Send a reply for org.freedesktop.Application.ActivateAction calls. We + missed this before because nobody was waiting for it. + + gio/gapplicationimpl-dbus.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 06b968b6db73c88e16a791328be1ba57fe287d6a +Author: Matthias Clasen +AuthorDate: Sun Jul 14 11:35:56 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 14 11:36:45 2013 -0400 + + Make a test desktop file a little less invalid + + Add a missing Name entry, and add a terminal ; to the Actions + entry in org.gtk.test.dbusappinfo.desktop. desktop-file-validate + still contains about the DBusActivatable entry and about the + missing Exec entries. The former will go away when + desktop-file-validate + gets updated for the latest spec revision. + + gio/tests/org.gtk.test.dbusappinfo.desktop | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit ff68fca9e9fc7b534af86f2928d80830b331716f +Author: Colin Walters +AuthorDate: Thu Jul 11 11:07:17 2013 -0400 +Commit: Colin Walters +CommitDate: Sun Jul 14 14:46:43 2013 +0100 + + tests/mainloop: Fix assertions to really avoid race conditions + + As the comment says, we may be delayed an arbitrary amount of time on + non-idle systems; update the assertions to reflect this. + + This should fix periodic failures in the gnome-ostree continuous + integration system. + + https://bugzilla.gnome.org/700460 + + glib/tests/mainloop.c | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +commit 405936632a4ed8a83cb1a5472944e35e8159566a +Author: Christian Kirbach +AuthorDate: Sun Jul 14 12:24:07 2013 +0200 +Commit: Christian Kirbach +CommitDate: Sun Jul 14 12:24:07 2013 +0200 + + Updated German translation + + po/de.po | 947 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 483 insertions(+), 464 deletions(-) + +commit 8d0e0c6fcca845659ae54f8a4c1508826ed36963 +Author: Dan Winship +AuthorDate: Mon Jun 3 08:13:50 2013 -0300 +Commit: Dan Winship +CommitDate: Sat Jul 13 16:38:55 2013 -0400 + + gcancellable: update GCancellableSource, fix a race condition + + Update GCancellableSource to call g_source_set_ready_time() when its + cancellable is cancelled, rather than manually checking the state of + the cancellable from prepare() and check(). + + This means that we now need to use g_cancellable_connect() rather than + g_signal_connect() at construction time, to avoid the connect/cancel + race condition. Likewise, use g_cancellable_disconnect() to avoid the + disconnect/cancel race condition when freeing the source. (In fact, + that was necessary in the earlier code as well, and might have + occasionally caused spurious criticals or worse.) + + https://bugzilla.gnome.org/show_bug.cgi?id=701511 + + gio/gcancellable.c | 40 +++++++++++++--------------------------- + 1 file changed, 13 insertions(+), 27 deletions(-) + +commit 8f80fbb2a7bbd140657247b328d6f010ed4d9157 +Author: Dan Winship +AuthorDate: Mon Jun 3 08:10:31 2013 -0300 +Commit: Dan Winship +CommitDate: Sat Jul 13 16:38:55 2013 -0400 + + Remove some unnecessary source prepare/check functions + + GPollableSource and GSocket's "broken" source never trigger on their + own, so with the changes to GSources in the last cycle, their check + and prepare functions are unnecessary (and undesired). + + https://bugzilla.gnome.org/show_bug.cgi?id=701511 + + gio/gpollableutils.c | 18 ++---------------- + gio/gsocket.c | 17 ++--------------- + 2 files changed, 4 insertions(+), 31 deletions(-) + +commit 6d328a0d5d0c4762d9d942f2632763075b12dcb8 +Author: Dan Winship +AuthorDate: Sat Jun 1 15:24:13 2013 -0300 +Commit: Dan Winship +CommitDate: Sat Jul 13 16:38:55 2013 -0400 + + gio: port unix streams to GUnixFDSource + + The unix input/output streams were using a gio-only source type that + was mostly identical to GUnixFDSource. Get rid of that source type + and just use GUnixFDSource instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=701511 + + gio/gasynchelper.c | 109 + ------------------------------------------------ + gio/gasynchelper.h | 8 ---- + gio/gunixinputstream.c | 13 +++++- + gio/gunixoutputstream.c | 13 +++++- + 4 files changed, 22 insertions(+), 121 deletions(-) + +commit 8a899265329f6bbbb066991fdc036045d7031b37 +Author: Dan Winship +AuthorDate: Sat Jun 1 15:23:15 2013 -0300 +Commit: Dan Winship +CommitDate: Sat Jul 13 16:38:55 2013 -0400 + + gsourceclosure: Add support for GUnixSignalWatchSource and + GUnixFDSource + + https://bugzilla.gnome.org/show_bug.cgi?id=701511 + + glib/glib-unix.c | 8 ++++---- + glib/gmain.c | 2 +- + glib/gmain.h | 4 ++++ + gobject/gsourceclosure.c | 45 + +++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 54 insertions(+), 5 deletions(-) + +commit 1da47d5ede3384105c035638fb4eb533d8989e20 +Author: Dan Winship +AuthorDate: Sun Jun 2 19:59:23 2013 -0300 +Commit: Dan Winship +CommitDate: Sat Jul 13 16:38:55 2013 -0400 + + gsourceclosure: use g_cclosure_marshal_generic + + For the glib-defined source types, and any source type that defines a + closure callback but not a closure marshal, use + g_cclosure_marshal_generic. And then remove all the other remaining + source closure marshals. + + https://bugzilla.gnome.org/show_bug.cgi?id=701511 + + gio/gasynchelper.c | 25 ------------------------- + gio/gcancellable.c | 1 - + gio/gpollableutils.c | 1 - + gio/gsocket.c | 1 - + gobject/gsourceclosure.c | 35 ++--------------------------------- + 5 files changed, 2 insertions(+), 61 deletions(-) + +commit cdff4a331ef5ba986afb3707db6cc019b71654d4 +Author: Ryan Lortie +AuthorDate: Sat Jul 13 15:48:39 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jul 13 15:48:39 2013 -0400 + + Fix g_return_if_fail vs. return_val_if_fail + + gio/gaction.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c04a063b781fa4a8c84ed067eaa31241fea18f86 +Author: Ryan Lortie +AuthorDate: Thu Jul 4 16:24:38 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jul 13 13:41:03 2013 -0400 + + GAction: add function for printing detailed names + + A counterpart for parsing of detailed actions into (name, target) + pairs, + this new function prints them back. + + We also add a new function to check for validity of action names. + Only + valid action names are allowed when printing. Parsing accepts _some_ + invalid names for backwards compatibility. + + https://bugzilla.gnome.org/show_bug.cgi?id=704157 + + docs/reference/gio/gio-sections.txt | 2 + + gio/gaction.c | 102 + +++++++++++++++++++++++++++++++++--- + gio/gaction.h | 8 +++ + 3 files changed, 105 insertions(+), 7 deletions(-) + +commit c08ef6c165c6935f257d3fb98c049be50e3816da +Author: Dan Winship +AuthorDate: Tue Jun 4 17:29:55 2013 -0300 +Commit: Dan Winship +CommitDate: Fri Jul 12 11:59:50 2013 -0400 + + gnetworkmonitornetlink: handle default route via device + + If the default route is via a device rather than a particular IP + address, then neither RTA_DST nor RTA_GATEWAY will be present in the + RTM_NEWROUTE message, and so GNetworkMonitorNetlink would ignore it, + and then think there was no default route. (This could happen with + certain kinds of VPNs, if they were set to route all traffic through + the VPN.) + + Fix this by recognizing routes that specify RTA_OIF ("output + interface") instead of RTA_GATEWAY. + + https://bugzilla.gnome.org/show_bug.cgi?id=701609 + + gio/gnetworkmonitornetlink.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit 973464781cf90c3b1a55c88cd1772a25aba153ca +Author: Ryan Lortie +AuthorDate: Thu Jul 11 15:57:05 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 11 15:57:59 2013 -0400 + + Fix a typo in a filename in Makefile.am + + gio/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3b1b04433cdc1f1685af2e9c5437e3ac41f3a94a +Author: Ryan Lortie +AuthorDate: Sat Jun 8 17:31:09 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 11 15:49:28 2013 -0400 + + Add a testcase for DBusActivatable=true + + Add a fairly realistic testcase that ensures that GDesktopAppInfo with + DBusActivatable=true can successfully talk to GApplication for + a variety + of purposes. + + https://bugzilla.gnome.org/show_bug.cgi?id=699259 + + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 3 + + gio/tests/dbus-appinfo.c | 290 + +++++++++++++++++++++++++++++ + gio/tests/org.gtk.test.dbusappinfo.desktop | 17 ++ + 4 files changed, 311 insertions(+) + +commit 2a4dbbc73a65a9a8faa895eda88d0e7339ae9475 +Author: Piotr Drąg +AuthorDate: Thu Jul 11 21:09:15 2013 +0200 +Commit: Piotr Drąg +CommitDate: Thu Jul 11 21:09:15 2013 +0200 + + Updated POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit d07d96e13549439ea42af0f9348afc5aa044bc9f +Author: Ryan Lortie +AuthorDate: Thu Jul 11 13:54:47 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 11 13:54:47 2013 -0400 + + Deal with new automake test stuff + + Add *.trs and *.log to .gitignore along with test-driver + + Add *.trs and *.log to CLEANFILES in glib.mk. + + .gitignore | 3 +++ + glib.mk | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) + +commit 985e95e831b340adb57b848590bc20c4e163100a +Author: Ryan Lortie +AuthorDate: Thu Jul 11 13:47:45 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 11 13:49:20 2013 -0400 + + Add missing file + + This got removed during the OnlyShowIn shuffle. + + gio/tests/appinfo-test-actions.desktop | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit 9ec8ab62b29ca9a5499fd906231a1c3bb758f321 +Author: Ryan Lortie +AuthorDate: Thu Jul 11 13:04:23 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 11 13:04:23 2013 -0400 + + GDesktopAppInfo: remove note about OnlyShowIn + + A previous version of the patch had OnlyShowIn support for desktop + file + actions. This was removed from the spec and the patch rewritten, but + this bit of documentation slipped through. Remove it. + + gio/gdesktopappinfo.c | 5 ----- + 1 file changed, 5 deletions(-) + +commit 6dc5c118e4e52d6a6abaed4d6191fe655917ee4d +Author: Ryan Lortie +AuthorDate: Thu Jul 11 12:46:59 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 11 12:48:08 2013 -0400 + + Implement the Desktop Action specification + + For some time, the desktop file specification has supported + "additional + application actions". This is intended to allow for additional + methods + of starting an app, such as a mail client having a "Compose New + Message" + action that brings up the compose window instead of the folder list. + + This patch adds support for this with a relatively minimal API. + + In the case that the application is a GApplication and + DBusActivatable, + desktop actions are translated into GActions that have been added + to the + application with g_action_map_add_action(). This more or less closes + the loop on being able to activate an application with an action + invocation (instead of 'activate'). + + https://bugzilla.gnome.org/show_bug.cgi?id=664444 + + docs/reference/gio/gio-sections.txt | 4 + + gio/gdesktopappinfo.c | 219 + ++++++++++++++++++++++++++++++++---- + gio/gdesktopappinfo.h | 12 ++ + gio/tests/Makefile.am | 1 + + gio/tests/desktop-app-info.c | 78 +++++++++++++ + glib/gkeyfile.h | 1 + + 6 files changed, 291 insertions(+), 24 deletions(-) + +commit f77e1216500986ae60b42a77e25717e1710c6013 +Author: Ryan Lortie +AuthorDate: Fri Jun 28 11:41:43 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 11 12:35:45 2013 -0400 + + add GPropertyAction + + Add a new type of GAction that represents the value of a property + on an + object. As an example, this might be used on the "visible-child-name" + property of a GtkStack. + + https://bugzilla.gnome.org/show_bug.cgi?id=703270 + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 15 + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/giotypes.h | 1 + + gio/gpropertyaction.c | 555 + ++++++++++++++++++++++++++++++++++++ + gio/gpropertyaction.h | 49 ++++ + gio/tests/actions.c | 174 ++++++++++- + 8 files changed, 797 insertions(+), 1 deletion(-) + +commit 662e3c4891a63498d9720d7c9a3d782f30374d3a +Author: Ryan Lortie +AuthorDate: Thu Jul 11 12:26:33 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 11 12:26:33 2013 -0400 + + GVariant: fix two small/theoretical leaks + + Fix some leaks that turned up while valgrinding the GVariant testcase. + + These leaks are small and only occur when there is already an error in + the program: they are leaks of temp strings used when formatting a + critical message. + + These show up as leaks again the testcase under the new "expect + messages" approach. Previously, we fork()ed and these caused the + subprocess to abort, which is why this was not noticed before. + + glib/gvariant.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 1c586e44befe07812ac1e4473ef9e3a76330b78e +Author: Ryan Lortie +AuthorDate: Thu Jul 11 12:16:44 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 11 12:16:44 2013 -0400 + + Add g_variant_new_printf + + Add a quick way to get a floating GVariant from printf formatting. + + docs/reference/glib/glib-sections.txt | 1 + + glib/gvariant.c | 38 + +++++++++++++++++++++++++++++++++++ + glib/gvariant.h | 3 +++ + glib/tests/gvariant.c | 21 +++++++++++++++++++ + 4 files changed, 63 insertions(+) + +commit 542099b5adfad9ee0641242b837e0e3d705d973a +Author: Matthias Clasen +AuthorDate: Tue Jul 9 14:28:19 2013 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 9 14:28:19 2013 -0400 + + bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d5c5dcfab92a34e286e830520622a45b9e8fd39d +Author: Matthias Clasen +AuthorDate: Tue Jul 9 12:54:00 2013 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 9 13:31:04 2013 -0400 + + 2.37.4 + + NEWS | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +commit 89f9f227d6d968516e999c038d9115351879d9da +Author: Matthias Clasen +AuthorDate: Tue Jul 9 13:30:49 2013 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 9 13:31:04 2013 -0400 + + Add G_TYPE_CHECKSUM to the docs + + docs/reference/gobject/gobject-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit e38ee2f468bbbed0d354a95bbace3e9e19e8e695 +Author: Matthias Clasen +AuthorDate: Tue Jul 9 13:28:07 2013 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 9 13:28:23 2013 -0400 + + Document g_simple_proxy_resolver_set_ignore_hosts + + gio/gsimpleproxyresolver.c | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +commit 1c1255772bcdba846e31a00b1b5495b4da8ce607 +Author: Matthias Clasen +AuthorDate: Tue Jul 9 13:23:12 2013 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 9 13:23:22 2013 -0400 + + Minor doc tweak + + glib/gtestutils.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 9675bcc5e7bd3e7ce2d23ad4ffecf332f09192d2 +Author: Gil Forcada +AuthorDate: Fri Jul 5 02:23:48 2013 +0200 +Commit: Gil Forcada +CommitDate: Fri Jul 5 02:23:48 2013 +0200 + + [l10n] Update Catalan translation + + po/ca.po | 514 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 257 insertions(+), 257 deletions(-) + +commit dbdfcb69ce4a7f14bac784c2684c1a66bfe6a2c9 +Author: Sebastian Dröge +AuthorDate: Thu Jul 4 10:27:02 2013 +0200 +Commit: Sebastian Dröge +CommitDate: Thu Jul 4 10:41:59 2013 +0200 + + gthread: Use pthread_cond_timedwait_monotonic() if available + + Otherwise we have to rely on pthread_cond_timedwait() actually using + the monotonic clock, which might be true or not. On Android at least + it is using the realtime clock, no pthread_condattr_setclock() + is available + but instead pthread_cond_timedwait_monotonic() can be used. + + configure.ac | 18 ++++++++++++++++++ + glib/gthread-posix.c | 9 +++++++++ + 2 files changed, 27 insertions(+) + +commit a4c352cd99738095ba34e04a86a2ffa9cc659cfe +Author: Emmanuele Bassi +AuthorDate: Thu Jun 27 15:15:40 2013 +0100 +Commit: Colin Walters +CommitDate: Wed Jul 3 09:37:03 2013 -0400 + + Ensure that MAX_ALLOWED keeps working with the type macros + + When using the GLIB_VERSION_MAX_ALLOWED macro to define the upper + bound + of allowed API the G_DEFINE_TYPE_EXTENDED starts warning about + the newly + added g_type_class_adjust_private_offset() function; this effectively + introduces a run-time dependency on GLib 2.38 even if we don't use its + API explicitly. + + https://bugzilla.gnome.org/show_bug.cgi?id=703191 + + gobject/gtype.h | 32 +++++++++++++++++++++++++------- + 1 file changed, 25 insertions(+), 7 deletions(-) + +commit 4cd7bcaf00f26e60b7f76c7db91fcdefb9c0ae95 +Author: Martin Ejdestig +AuthorDate: Tue Jul 2 19:53:04 2013 +0200 +Commit: Colin Walters +CommitDate: Wed Jul 3 09:03:20 2013 -0400 + + Add missing G_BEGIN/END_DECLS to gsettingsschema.h. + + Without this fix, using any of the enclosed functions when building + with a + C++ compiler will result in undefined references. + + https://bugzilla.gnome.org/show_bug.cgi?id=703478 + + gio/gsettingsschema.h | 4 ++++ + 1 file changed, 4 insertions(+) + +commit cb4469600c5146a48501a31e9a3fb9bfc261477d +Author: Ryan Lortie +AuthorDate: Mon Jul 1 17:42:43 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 1 23:36:30 2013 -0400 + + GDBusConnection: be more careful with async GetAll + + It's possible to get a org.freedesktop.Properties.GetAll call even + if we + have no readable properties in the introspection, in which case we + should return the empty list in the usual way. + + We should certainly _not_ be dispatching to the method call handler of + an interface which has no properties (since it will not be expecting + this). + + Add a check to make sure that there is at least one readable property + before assuming that a NULL get_property handler implies that we + want to + handle properties asynchronously. + + Add a testcase that was failing before the change and works after it. + + https://bugzilla.gnome.org/show_bug.cgi?id=703437 + + gio/gdbusconnection.c | 22 +++++++++++++++++++--- + gio/tests/gdbus-export.c | 29 ++++++++++++++++++++++++++++- + 2 files changed, 47 insertions(+), 4 deletions(-) + +commit 3cefb7248affdf92c878520f54bcaa3993d9b2fc +Author: Ryan Lortie +AuthorDate: Mon Jul 1 23:30:31 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 1 23:30:47 2013 -0400 + + Revert two errant commits to GMutex, etc. + + This reverts commits dfbac178bdcbcb042be928dcbeaa87742b511836 and + 56348210f38209a11902e54b2db41833aab36414. + + These two commits introduce undesirable behaviour and were made + with no + apparent approval from anybody at all, and without reference to a + bug or + mailing list discussion. + + glib/gthread-posix.c | 6 +----- + glib/gthread-win32.c | 1 - + 2 files changed, 1 insertion(+), 6 deletions(-) + +commit e55ccf7338f2eb68f08d648855a4a92a091df690 +Author: Paul Barbieri +AuthorDate: Mon Jul 1 21:10:28 2013 +0100 +Commit: Colin Walters +CommitDate: Mon Jul 1 21:10:28 2013 +0100 + + gspawn: Fix leak of internal pipe with G_SPAWN_LEAVE_DESCRIPTORS_OPEN + + Even when the app author specifies G_SPAWN_LEAVE_DESCRIPTORS_OPEN, + we should avoid leaking our internal pipe machinery into the + child. + + Commit message written by: Colin Walters + + https://bugzilla.gnome.org/show_bug.cgi?id=703407 + + glib/gspawn.c | 1 + + 1 file changed, 1 insertion(+) + +commit 1891eafd1da6f31e6b8876b2882800a5c2b92148 +Author: Bastien Nocera +AuthorDate: Fri Jun 21 20:07:58 2013 +0200 +Commit: Bastien Nocera +CommitDate: Mon Jul 1 08:40:40 2013 +0200 + + Fix typo in documentation + + s/doucumentation/documentation + + glib/gspawn.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dfbac178bdcbcb042be928dcbeaa87742b511836 +Author: Jeffrey Stedfast +AuthorDate: Sun Jun 30 14:01:34 2013 -0400 +Commit: Jeffrey Stedfast +CommitDate: Sun Jun 30 14:02:38 2013 -0400 + + Finish the previous fix for GMutex, GRecMutex, GRWLock and GCond + + glib/gthread-posix.c | 3 +++ + glib/gthread-win32.c | 1 + + 2 files changed, 4 insertions(+) + +commit 56348210f38209a11902e54b2db41833aab36414 +Author: Jeffrey Stedfast +AuthorDate: Sun Jun 30 13:46:28 2013 -0400 +Commit: Jeffrey Stedfast +CommitDate: Sun Jun 30 13:46:28 2013 -0400 + + Fixed g_mutex_clear() to fully undo g_mutex_init() + + In order to fully undo the effects of g_mutex_init(), + it is necessary to reset the internal mutex pointer + back to NULL so that a later call to g_mutex_init() + actually works as expected. + + glib/gthread-posix.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit b05bf77223cffb025b8a24963d6149a755da43c0 +Author: Sébastien Wilmet +AuthorDate: Tue Jun 25 22:11:54 2013 +0200 +Commit: Sébastien Wilmet +CommitDate: Sun Jun 30 10:32:18 2013 +0200 + + Doc: small fixes + + This commit adds the GTestSubprocessFlags enum to the docs, and fixes + several minor typos in various places. + + https://bugzilla.gnome.org/show_bug.cgi?id=703254 + + docs/reference/glib/glib-sections.txt | 1 + + gio/gasyncresult.c | 2 +- + gio/gtask.c | 2 +- + glib/gtestutils.c | 6 +++--- + 4 files changed, 6 insertions(+), 5 deletions(-) + +commit b7b38384010be4385ba9a1872dc3eb7a0134cbe0 +Author: Dan Winship +AuthorDate: Fri Jun 14 11:19:31 2013 -0300 +Commit: Matthias Clasen +CommitDate: Sat Jun 29 23:23:36 2013 -0400 + + Make G_STRFUNC consistent across platforms + + Recent versions of clang have changed __PRETTY_FUNCTION__ to always + include the function signature (rather than including the function + signature in C++ but not in C like gcc does). This causes G_STRFUNC to + give different results under clang and gcc, causing some tests with + g_test_expect_messages() to fail. + + Fix this by only using __PRETTY_FUNCTION__ in C++, and using + __FUNCTION__ in C. (Under gcc this change has no effect.) + + https://bugzilla.gnome.org/show_bug.cgi?id=702147 + + glib/gmacros.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a3182e3b9a229292be5370542915ae4cc8cc6e25 +Author: Matthias Clasen +AuthorDate: Sat Jun 29 22:51:31 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 29 22:51:31 2013 -0400 + + Improve various section headings in the docs + + We don't use # or other forms of links in the section headings. + We also capitalize them and don't put a final period. + + This commit corrects several headings to follow these rules. + + gio/gbytesicon.c | 2 +- + gio/gdbusutils.c | 2 +- + gio/gpollableutils.c | 2 +- + gio/gremoteactiongroup.c | 2 +- + gio/gsettingsschema.c | 2 +- + gio/gtcpwrapperconnection.c | 2 +- + 6 files changed, 6 insertions(+), 6 deletions(-) + +commit d30a2d92f3450ee420c49781c889b5fd3c46aba9 +Author: Matthias Clasen +AuthorDate: Sat Jun 29 22:46:38 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 29 22:46:38 2013 -0400 + + docs: minor formatting fixes to the gresource man page + + Make the SECTION argument appear the same way throughout. + + docs/reference/gio/gresource.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5989651bee6bf8d8c50b180fa6295d824caa37de +Author: Dan Winship +AuthorDate: Tue Jun 25 09:34:29 2013 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 25 09:35:05 2013 -0400 + + tests: add a test for the previous commit + + glib/tests/mainloop.c | 51 + ++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 50 insertions(+), 1 deletion(-) + +commit 1d5c815ecd3a5ac6032e7931491296e693b51ccd +Author: Wim Taymans +AuthorDate: Thu May 30 16:46:02 2013 +0200 +Commit: Dan Winship +CommitDate: Tue Jun 25 09:25:57 2013 -0400 + + gmain: handle blocked source in g_source_add_child_source() + + When a child_source is added to a blocked source it has no context, + yet we + call block_source on it that segfaults when it dereferences the + NULL context + when it attempts to remove the file descriptors. To fix this we: + + - Ensure that when we block a source, we don't attempt to remove + its file + descriptors from a NULL context. + + - Also ensure that when we attach a blocked source to a context, + we don't add the + file descriptors to the context. + + https://bugzilla.gnome.org/show_bug.cgi?id=701283 + + glib/gmain.c | 34 ++++++++++++++++++++-------------- + 1 file changed, 20 insertions(+), 14 deletions(-) + +commit 5841267a6c046744979fc11ec856265c18c6338c +Author: Ryan Lortie +AuthorDate: Mon Jun 24 12:13:30 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 24 12:13:30 2013 -0400 + + version bump + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1b12e9511cd9a002dc20b578e4064ce95c9c18d4 +Author: Ryan Lortie +AuthorDate: Mon Jun 24 11:05:20 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 24 11:19:25 2013 -0400 + + GLib 2.37.3 + + NEWS | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit a61f718e5e801657691a35fb402258531a2dbcd9 +Author: Ryan Lortie +AuthorDate: Mon Jun 24 11:19:06 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 24 11:19:25 2013 -0400 + + small docs xml fixup + + docs/reference/gobject/tut_howto.xml | 1 + + 1 file changed, 1 insertion(+) + +commit 54cc43630ddf724722ebdfc1d6906dc1986b773d +Author: Emmanuele Bassi +AuthorDate: Mon Jun 24 15:43:04 2013 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Jun 24 15:43:04 2013 +0100 + + Rename the generated private data getter function + + As it turns out, we have examples of internal functions called + type_name_get_private() in the wild (especially among older + libraries), + so we need to use a name for the per-instance private data getter + function that hopefully won't conflict with anything. + + docs/reference/gobject/tut_howto.xml | 12 ++++++------ + gio/gappinfo.c | 2 +- + gio/gapplication.c | 2 +- + gio/gapplicationcommandline.c | 2 +- + gio/gbufferedinputstream.c | 2 +- + gio/gbufferedoutputstream.c | 2 +- + gio/gcancellable.c | 2 +- + gio/gconverterinputstream.c | 2 +- + gio/gconverteroutputstream.c | 2 +- + gio/gdatainputstream.c | 2 +- + gio/gdataoutputstream.c | 2 +- + gio/gdbus-2.0/codegen/codegen.py | 4 ++-- + gio/gdbusauth.c | 2 +- + gio/gdbusauthmechanism.c | 2 +- + gio/gdbusauthmechanismanon.c | 2 +- + gio/gdbusauthmechanismexternal.c | 2 +- + gio/gdbusauthmechanismsha1.c | 2 +- + gio/gdbusinterfaceskeleton.c | 2 +- + gio/gdbusobjectmanagerclient.c | 2 +- + gio/gdbusobjectmanagerserver.c | 2 +- + gio/gdbusobjectproxy.c | 2 +- + gio/gdbusobjectskeleton.c | 2 +- + gio/gdbusproxy.c | 2 +- + gio/gdelayedsettingsbackend.c | 2 +- + gio/gemblemedicon.c | 2 +- + gio/gfileenumerator.c | 2 +- + gio/gfileinputstream.c | 2 +- + gio/gfileiostream.c | 2 +- + gio/gfilemonitor.c | 2 +- + gio/gfileoutputstream.c | 2 +- + gio/gfilterinputstream.c | 8 ++++---- + gio/gfilteroutputstream.c | 8 ++++---- + gio/ginetaddress.c | 2 +- + gio/ginetaddressmask.c | 2 +- + gio/ginetsocketaddress.c | 2 +- + gio/ginputstream.c | 2 +- + gio/giostream.c | 2 +- + gio/glocalfileinputstream.c | 2 +- + gio/glocalfileoutputstream.c | 2 +- + gio/gmemoryinputstream.c | 2 +- + gio/gmemoryoutputstream.c | 2 +- + gio/gmenumodel.c | 4 ++-- + gio/gmountoperation.c | 2 +- + gio/gnetworkaddress.c | 2 +- + gio/gnetworkmonitorbase.c | 2 +- + gio/gnetworkmonitornetlink.c | 2 +- + gio/gnetworkservice.c | 2 +- + gio/goutputstream.c | 2 +- + gio/gpermission.c | 2 +- + gio/gproxyaddress.c | 2 +- + gio/gproxyaddressenumerator.c | 2 +- + gio/gresolver.c | 2 +- + gio/gsettings.c | 2 +- + gio/gsettingsbackend.c | 2 +- + gio/gsimpleactiongroup.c | 2 +- + gio/gsimpleproxyresolver.c | 2 +- + gio/gsocket.c | 2 +- + gio/gsocketclient.c | 2 +- + gio/gsocketconnection.c | 2 +- + gio/gsocketinputstream.c | 2 +- + gio/gsocketlistener.c | 2 +- + gio/gsocketoutputstream.c | 2 +- + gio/gsocketservice.c | 2 +- + gio/gtcpconnection.c | 2 +- + gio/gtcpwrapperconnection.c | 2 +- + gio/gtestdbus.c | 2 +- + gio/gthreadedsocketservice.c | 2 +- + gio/gtlsinteraction.c | 2 +- + gio/gtlspassword.c | 2 +- + gio/gunixcredentialsmessage.c | 2 +- + gio/gunixfdlist.c | 2 +- + gio/gunixfdmessage.c | 2 +- + gio/gunixinputstream.c | 2 +- + gio/gunixoutputstream.c | 2 +- + gio/gunixsocketaddress.c | 2 +- + gio/gwin32inputstream.c | 2 +- + gio/gwin32outputstream.c | 2 +- + gobject/gtype.h | 6 +++--- + gobject/tests/private.c | 16 ++++++++-------- + 79 files changed, 101 insertions(+), 101 deletions(-) + +commit 6000bc9ea8a1d6da53304db8dd6a4880d52cb2d2 +Author: Emmanuele Bassi +AuthorDate: Mon Jun 24 15:43:00 2013 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Jun 24 15:43:00 2013 +0100 + + gio: Missing G_ADD_PRIVATE in GFileInputStream + + gio/gfileinputstream.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 1f6f7e1c4d38a8eab41af3280fcfcdd23b270102 +Author: Emmanuele Bassi +AuthorDate: Wed Jun 12 15:18:29 2013 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Jun 24 14:18:01 2013 +0100 + + docs: Clean up the GObject tutorial a bit + + Started off by using the new instance private data macro, ended up + cleaning up the obscure, out of date, or simply broken concepts and + paragraphs. + + https://bugzilla.gnome.org/show_bug.cgi?id=700035 + + docs/reference/gobject/tut_howto.xml | 303 + ++++++++++++++++------------------- + 1 file changed, 142 insertions(+), 161 deletions(-) + +commit f870d5abdb2f38d751665e820a4c13a4fdeca6fe +Author: Emmanuele Bassi +AuthorDate: Mon Jun 10 22:21:02 2013 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Jun 24 14:18:01 2013 +0100 + + docs: Include newly added functions and macros + + The functions are private, and an implementation detail of the macros. + + https://bugzilla.gnome.org/show_bug.cgi?id=700035 + + docs/reference/gobject/gobject-sections.txt | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 32747def4bb4cce7cfc4f0f8ba8560392ec9ad3d +Author: Emmanuele Bassi +AuthorDate: Tue Jun 11 00:29:58 2013 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Jun 24 14:18:01 2013 +0100 + + gio: Use the new private instance data declaration + + Use the newly added macros, and remove the explicit calls to + g_type_class_add_private(). + + https://bugzilla.gnome.org/show_bug.cgi?id=700035 + + gio/gappinfo.c | 12 +++++------- + gio/gapplication.c | 7 ++----- + gio/gapplicationcommandline.c | 11 +++-------- + gio/gbufferedinputstream.c | 7 ++----- + gio/gbufferedoutputstream.c | 8 ++------ + gio/gcancellable.c | 8 ++------ + gio/gconverterinputstream.c | 10 +++------- + gio/gconverteroutputstream.c | 10 +++------- + gio/gdatainputstream.c | 13 ++++--------- + gio/gdataoutputstream.c | 8 ++------ + gio/gdbus-2.0/codegen/codegen.py | 18 ++++++++---------- + gio/gdbusauth.c | 7 ++----- + gio/gdbusauthmechanism.c | 9 ++------- + gio/gdbusauthmechanismanon.c | 8 ++------ + gio/gdbusauthmechanismexternal.c | 8 ++------ + gio/gdbusauthmechanismsha1.c | 8 ++------ + gio/gdbusinterfaceskeleton.c | 7 +++---- + gio/gdbusobjectmanagerclient.c | 7 ++----- + gio/gdbusobjectmanagerserver.c | 9 +++------ + gio/gdbusobjectproxy.c | 9 +++------ + gio/gdbusobjectskeleton.c | 7 +++---- + gio/gdbusproxy.c | 8 +++----- + gio/gdelayedsettingsbackend.c | 13 ++++--------- + gio/gemblemedicon.c | 7 ++----- + gio/gfileenumerator.c | 27 +++++++++++---------------- + gio/gfileinputstream.c | 6 +----- + gio/gfileiostream.c | 15 ++++++--------- + gio/gfilemonitor.c | 18 +++++++----------- + gio/gfileoutputstream.c | 15 ++++++--------- + gio/gfilterinputstream.c | 34 +++++++++++++++------------------- + gio/gfilteroutputstream.c | 29 ++++++++++++++--------------- + gio/ginetaddress.c | 24 ++++++++++-------------- + gio/ginetaddressmask.c | 19 ++++++++----------- + gio/ginetsocketaddress.c | 38 + ++++++++++++-------------------------- + gio/ginputstream.c | 17 +++-------------- + gio/giostream.c | 15 ++------------- + gio/glocalfileinputstream.c | 32 +++++++++----------------------- + gio/glocalfileoutputstream.c | 35 +++++++++++++++-------------------- + gio/gmemoryinputstream.c | 7 ++----- + gio/gmemoryoutputstream.c | 7 ++----- + gio/gmenumodel.c | 16 ++++++---------- + gio/gmountoperation.c | 10 +++------- + gio/gnetworkaddress.c | 6 ++---- + gio/gnetworkmonitorbase.c | 30 +++++++++++++----------------- + gio/gnetworkmonitornetlink.c | 31 ++++++++++++++----------------- + gio/gnetworkservice.c | 6 ++---- + gio/goutputstream.c | 19 ++++--------------- + gio/gpermission.c | 10 +++------- + gio/gproxyaddress.c | 9 +++------ + gio/gproxyaddressenumerator.c | 11 +++-------- + gio/gresolver.c | 5 ++--- + gio/gsettings.c | 9 ++------- + gio/gsettingsbackend.c | 10 +++------- + gio/gsimpleactiongroup.c | 7 ++----- + gio/gsimpleproxyresolver.c | 7 ++----- + gio/gsocket.c | 15 +++++++-------- + gio/gsocketclient.c | 13 ++++--------- + gio/gsocketconnection.c | 10 +++------- + gio/gsocketinputstream.c | 29 ++++++++++++++--------------- + gio/gsocketlistener.c | 10 +++------- + gio/gsocketoutputstream.c | 29 ++++++++++++++--------------- + gio/gsocketservice.c | 19 +++++++------------ + gio/gtcpconnection.c | 16 ++++++---------- + gio/gtcpwrapperconnection.c | 19 +++++++------------ + gio/gtestdbus.c | 8 ++------ + gio/gthreadedsocketservice.c | 26 ++++++++++---------------- + gio/gtlsinteraction.c | 7 ++----- + gio/gtlspassword.c | 7 ++----- + gio/gunixcredentialsmessage.c | 9 ++------- + gio/gunixfdlist.c | 11 +++-------- + gio/gunixfdmessage.c | 12 +++--------- + gio/gunixinputstream.c | 27 ++++++++------------------- + gio/gunixoutputstream.c | 27 ++++++++------------------- + gio/gunixsocketaddress.c | 9 +++------ + gio/gwin32inputstream.c | 18 +++--------------- + gio/gwin32outputstream.c | 19 +++---------------- + 76 files changed, 370 insertions(+), 713 deletions(-) + +commit aba80eea6c2965ee253a675610bd31c3dc256419 +Author: Emmanuele Bassi +AuthorDate: Tue Jun 11 00:29:22 2013 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Jun 24 14:18:01 2013 +0100 + + gparam: Use the new private instance data API + + https://bugzilla.gnome.org/show_bug.cgi?id=700035 + + gobject/gparam.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +commit 39ba7c81428cf660381266337990b16c31e9630f +Author: Emmanuele Bassi +AuthorDate: Sun Jun 23 14:50:49 2013 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Jun 24 14:18:01 2013 +0100 + + gobject: Add private field access macros + + Similar to G_STRUCT_MEMBER and G_STRUCT_MEMBER_P, but automatically + using + the G_PRIVATE_OFFSET macro. + + https://bugzilla.gnome.org/show_bug.cgi?id=700035 + + gobject/gtype.h | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +commit d91d114a54bb89d987acb47a6d78fcd5c3ecd2fc +Author: Emmanuele Bassi +AuthorDate: Wed Jun 19 20:41:02 2013 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Jun 24 14:18:01 2013 +0100 + + Add G_PRIVATE_OFFSET + + A macro that evaluates to the offset of a field inside an instance + private data structure. + + https://bugzilla.gnome.org/show_bug.cgi?id=700035 + + gobject/gtype.h | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit d3dec6ec80e9243bdc14d47f6e51c381eb46cda2 +Author: Emmanuele Bassi +AuthorDate: Thu May 9 14:41:26 2013 -0700 +Commit: Emmanuele Bassi +CommitDate: Mon Jun 24 14:18:01 2013 +0100 + + Allow registering instance private data during get_type() + + For static types, it should be possible to register a private data + structure right when we are registering the type, i.e. from the + get_type() implementation. By allowing this, we can take advantage of + the existing type definition macros to cut down the amount of code + necessary (as well as the knowledge baggage) when creating a new type. + + The main issue with this new feature is that it cannot be mixed + with the + old idiomatic way of adding private instance data by calling + a function + in the middle of the class_init() implementation, as that imposes the + additional constraint of initializing the whole type hierarchy + in order + to retrieve the offset of the private data in the GTypeInstance + allocation. + + For this reason we are going to follow a two-step process; in + the first + step, we are going to introduce the new (semi-private) API to register + the intent to add private instance data from within the get_type() + implementation, and hide it behind a macro; at the same time, the + G_DEFINE_TYPE_EXTENDED macro is going to be modified so that it will + register the private instance data if the macro was used, using a new + (semi-private) function as well. Once we have migrated all our + code, we + will make the first new function perform the actual private data + registration, and turn the second new function into a no-op. This + should + guarantee a transparent migration of existing code to the new + idiomatic + form. + + https://bugzilla.gnome.org/show_bug.cgi?id=700035 + + gobject/gtype.c | 105 ++++++++++++++++++++ + gobject/gtype.h | 104 ++++++++++++++++++++ + gobject/tests/.gitignore | 1 + + gobject/tests/Makefile.am | 1 + + gobject/tests/private.c | 246 + ++++++++++++++++++++++++++++++++++++++++++++++ + 5 files changed, 457 insertions(+) + +commit ebdbbd9b62efa40542a467862a5401e0a8b4e07e +Author: Matthias Clasen +AuthorDate: Sun Jun 23 19:35:15 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 23 19:35:50 2013 -0400 + + Define GTESTER_REPORT for non-GLIB too + + glib.mk | 1 + + 1 file changed, 1 insertion(+) + +commit fdc9379132dbdd3b02a04eab3a3cbd4c9e7cef3f +Author: Dieter Verfaillie +AuthorDate: Sun Jun 23 14:15:05 2013 +0200 +Commit: Dieter Verfaillie +CommitDate: Sun Jun 23 14:15:05 2013 +0200 + + docs: fix GTK-Doc build + + cd html && gtkdoc-mkhtml $mkhtml_options gio ../gio-docs.xml + ../xml/gdbusconnection.xml:2063: parser error : Opening and ending + tag mismatch: literal line 2062 and para + + ^ + + gio/gdbusconnection.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit edf16aace4033967dd2bcf9e05beff1c62190451 +Author: Ryan Lortie +AuthorDate: Sat Jun 22 13:41:12 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jun 22 13:41:12 2013 -0400 + + GDBusMethodInvocation: add missing 'goto out' + + We do a bunch of new validity checks for return values in response to + calls on the D-Bus property API but we miss the 'goto out' in + one case. + Add it. + + https://bugzilla.gnome.org/show_bug.cgi?id=698375 + + gio/gdbusmethodinvocation.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 317e8c132d1fd6373a698846932a10c443979726 +Author: Ryan Lortie +AuthorDate: Wed Apr 17 09:45:23 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jun 22 13:38:32 2013 -0400 + + GDBusMethodInvocation: add property return checks + + Add some type checking for the values returned from async property + handling calls, similar in spirit to the type checking we do for + normal + method calls. + + https://bugzilla.gnome.org/show_bug.cgi?id=698375 + + gio/gdbusmethodinvocation.c | 59 + +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 59 insertions(+) + +commit f754c4e85b666686a374aa31f7d05fff739e9cde +Author: Ryan Lortie +AuthorDate: Wed Apr 17 09:30:15 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jun 22 13:38:31 2013 -0400 + + GDBusConnection: allow async property handling + + The existing advice in the documentation to "simply" register the + "org.freedesktop.DBus.Properties" interface if you want to handle + properties asynchronously is pretty unreasonable. If you want + to handle + this interface you have to deal with all properties for all interfaces + on the path, and you have to do all of the checking for yourself. You + also have to provide your own introspection data. + + Introduce a new convention for dealing with properties asynchronously. + + If the user provides NULL for their get_property() or set_property() + functions in the vtable and has properties registered then the + properties are sent to the method_call() handler. We get lucky here + that this function takes an "interface_name" parameter that we can set + to "org.freedesktop.DBus.Properties". + + We also do the user the favour of setting the GDBusPropertyInfo on the + GDBusMethodInvocation for their convenience (for much the same reasons + as they might want the already-available GDBusMethodInfo). + + Add a testcase as well as a bunch of documentation about this new + feature. + + https://bugzilla.gnome.org/show_bug.cgi?id=698375 + + gio/gdbusconnection.c | 53 ++++++++++--- + gio/gdbusconnection.h | 35 ++++++++- + gio/gdbusmethodinvocation.c | 19 +++++ + gio/tests/gdbus-export.c | 176 + ++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 268 insertions(+), 15 deletions(-) + +commit c691f7b6ca664fc33100b29d1d920c2a94779a6e +Author: Ryan Lortie +AuthorDate: Wed Apr 17 09:28:05 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jun 22 13:38:31 2013 -0400 + + GDBusMethodInvocation: add 'property_info' + + Add a field on GDBusMethodInvocation for GDBusPropertyInfo. + + For now, it is always %NULL. It will be set in future patches. + + https://bugzilla.gnome.org/show_bug.cgi?id=698375 + + gio/gdbusconnection.c | 4 +++- + gio/gdbusmethodinvocation.c | 41 + ++++++++++++++++++++++++++++++++--------- + gio/gdbusmethodinvocation.h | 2 ++ + gio/gdbusprivate.h | 19 ++++++++++--------- + 4 files changed, 47 insertions(+), 19 deletions(-) + +commit 14dc0280039a08c4b85ab9a5fbcbb17bf491afa8 +Author: Ryan Lortie +AuthorDate: Wed Apr 17 09:24:36 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jun 22 13:38:30 2013 -0400 + + GDBusConnection: some straight-up refactoring + + Separate the code for validating a method call from the code for + actually scheduling it for dispatch. + + This will allow property Get/Set/GetAll calls to be dispatched to the + method_call handler without duplicating a lot of code. + + https://bugzilla.gnome.org/show_bug.cgi?id=698375 + + gio/gdbusconnection.c | 86 + ++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 58 insertions(+), 28 deletions(-) + +commit 02f5cdd98320d330d9b94ccfb15a0f6986534930 +Author: Ryan Lortie +AuthorDate: Sat Jun 22 13:37:54 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jun 22 13:37:54 2013 -0400 + + GDBusConnection: move 'Set' typecheck to worker + + We presently do a lot of checks on property sets (signature check, + correct interface, property exists, etc.) from the worker thread + before + dispatching the call to the user's thread. The typecheck, however, is + saved until just before calling the user's vfunc, in their thread. + + My best guess is that this was done to save having to unpack the value + from the tuple twice (since we don't unpack it until we're just about + the call the user). + + This patch moves the check to the same place as all of the other + checks. + + The purpose of this change is to allow for sharing this check with the + (soon-to-be-introduced) case of handing property sets from + method_call(). + + This change has a minor side effect: error messages generated + by sending + invalid values to property sets are no longer guaranteed to be + correctly + ordered with respect to the void returns from successful property + sets. + They will instead be correctly ordered with respect to the other error + messages. + + https://bugzilla.gnome.org/show_bug.cgi?id=698375 + + gio/gdbusconnection.c | 40 +++++++++++++++++++++++++--------------- + 1 file changed, 25 insertions(+), 15 deletions(-) + +commit 0d29b17af7c5a79e143c31208cc0b37f7c09d481 +Author: Ryan Lortie +AuthorDate: Wed Apr 17 12:52:59 2013 +0200 +Commit: Ryan Lortie +CommitDate: Sat Jun 22 13:36:51 2013 -0400 + + GDBusConnection: remove an unused g_variant_get() + + https://bugzilla.gnome.org/show_bug.cgi?id=698375 + + gio/gdbusconnection.c | 5 ----- + 1 file changed, 5 deletions(-) + +commit 15477ebd4216a6d71556eb381974b0dd93019dda +Author: Ryan Lortie +AuthorDate: Wed Jun 5 18:46:29 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jun 22 09:28:55 2013 -0400 + + Makefile.am: move gtk-doc.make back to EXTRA_DIST + + 0192c599377c35cc465eed1ae61de56d5a1034e8 moved this file from + EXTRA_DIST TO + BUILT_EXTRA_DIST for an unknown reason. + + Having it here causes the timestamp to be updated during 'make + dist' to + something newer than docs/reference/*/Makefile.in. This is a problem + because those Makefile.in are generated by including gtk-doc.make, so + automake becomes convinced that they need to be regenerated. + This is a + problem for people who don't have automake installed, or have + the wrong + version. + + The timestamp problem has been around for quite a while, but it only + became a problem recently after automake changed policy about this in + commit a22717dffe37f30ef2ad2c355b68c9b3b5e4b8c7. + + Specifically: + + https://bugzilla.gnome.org/show_bug.cgi?id=700350 + + Makefile.am | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 4829e02c09c9faa5a312bac04bbaaccb82fa7981 +Author: Colin Walters +AuthorDate: Thu Jun 20 13:13:29 2013 -0400 +Commit: Colin Walters +CommitDate: Thu Jun 20 16:49:49 2013 -0400 + + Revert "g_file_set_contents(): don't fsync on ext3/4" + + We didn't actually do any real-world testing of this, and + unsurprisingly it turns out to break in at least one widely-used + configuration (Fedora 19 x86_64, ext4 on LVM). + + This reverts commit 9d0c17b50102267a5029b58b1f44efbad82d8f03. + + https://bugzilla.gnome.org/show_bug.cgi?id=701560 + + glib/gfileutils.c | 9 +-------- + 1 file changed, 1 insertion(+), 8 deletions(-) + +commit 69afaf6905bf6d9e6808a1f18d410ea810e37435 +Author: Kjartan Maraas +AuthorDate: Thu Jun 20 11:46:58 2013 +0200 +Commit: Kjartan Maraas +CommitDate: Thu Jun 20 11:46:58 2013 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 286 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 136 insertions(+), 150 deletions(-) + +commit 97b82d8d21bc77fdc3aa27a851662d642a89bc5c +Author: Chun-wei Fan +AuthorDate: Thu Jun 20 15:48:32 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Jun 20 15:48:32 2013 +0800 + + Add MSVC Projects for Utility Programs + + Build and "install" the gio-querymodules and gdbus utility programs + so that + the Visual Studio builds of GLib is more comprehensive. The Python + scripts + for the GDBus codegen will be added to "installation" later. + + build/win32/vs10/Makefile.am | 4 + + build/win32/vs10/gdbus.vcxproj | 180 + +++++++++++++++++++++ + build/win32/vs10/gdbus.vcxproj.filters | 14 ++ + build/win32/vs10/gio-querymodules.vcxproj | 184 + ++++++++++++++++++++++ + build/win32/vs10/gio-querymodules.vcxproj.filters | 14 ++ + build/win32/vs10/glib.props | 4 + + build/win32/vs10/glib.sln | 36 +++++ + build/win32/vs10/install.vcxproj | 8 + + build/win32/vs11/Makefile.am | 4 + + build/win32/vs9/Makefile.am | 2 + + build/win32/vs9/gdbus.vcproj | 155 + ++++++++++++++++++ + build/win32/vs9/gio-querymodules.vcproj | 155 + ++++++++++++++++++ + build/win32/vs9/glib.sln | 49 ++++++ + build/win32/vs9/glib.vsprops | 2 + + 14 files changed, 811 insertions(+) + +commit ffaf57b936c22e95d13f90257425555716e6036e +Author: Chun-wei Fan +AuthorDate: Thu Jun 20 15:43:32 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Jun 20 15:43:32 2013 +0800 + + Update Visual Studio Projects + + Make all projects settings use the MultiByte character set when + building + GLib to improve consistency. + + build/win32/vs10/glib-compile-resources.vcxproj | 4 ++-- + build/win32/vs10/glib-compile-schemas.vcxproj | 4 ++-- + build/win32/vs10/glib-genmarshal.vcxproj | 4 ++-- + build/win32/vs10/gresource.vcxproj | 4 ++-- + build/win32/vs10/gsettings.vcxproj | 4 ++-- + build/win32/vs9/glib-compile-resources.vcproj | 4 ++-- + build/win32/vs9/glib-compile-schemas.vcproj | 4 ++-- + build/win32/vs9/glib-genmarshal.vcproj | 4 ++-- + build/win32/vs9/gresource.vcproj | 4 ++-- + build/win32/vs9/gsettings.vcproj | 4 ++-- + 10 files changed, 20 insertions(+), 20 deletions(-) + +commit 19e20084abb681a74254ad485c64e34b540cdc46 +Author: Arnel A. Borja +AuthorDate: Mon Jun 10 12:37:42 2013 +0800 +Commit: Vadim Rutkovsky +CommitDate: Wed Jun 19 17:26:45 2013 +0200 + + g_uri_unescape_string: Mention (allow-none)/%NULL in documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=701409 + + glib/gurifuncs.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 8d29a5a357425892e0fa7e2bc79b7f8b23c7ebd0 +Author: Arnel A. Borja +AuthorDate: Sat Jun 1 14:47:27 2013 +0800 +Commit: Vadim Rutkovsky +CommitDate: Wed Jun 19 17:26:45 2013 +0200 + + g_uri_escape_string: Add missing allow-none annotation + + https://bugzilla.gnome.org/show_bug.cgi?id=701409 + + glib/gurifuncs.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 87d5985718bafbebb9e64c614acaf75ee3e28e0a +Author: Milo Casagrande +AuthorDate: Wed Jun 19 10:37:13 2013 +0200 +Commit: Milo Casagrande +CommitDate: Wed Jun 19 10:37:13 2013 +0200 + + [l10n] Updated Italian translation. + + po/it.po | 286 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 136 insertions(+), 150 deletions(-) + +commit 18702168e125b8423d19d0e6fa7350e8956e0c81 +Author: Colin Walters +AuthorDate: Mon Jun 17 13:05:11 2013 -0400 +Commit: Colin Walters +CommitDate: Mon Jun 17 13:05:11 2013 -0400 + + gobject/tests: Add missing build dependency + + gobject/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f9e47f1f2f971a3d0709d692704de892729df1d8 +Author: Matthias Clasen +AuthorDate: Mon Jun 17 12:56:40 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 17 12:56:40 2013 -0400 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 544816bf6ec4bc8dd2296624bd77ca0fe08a59e0 +Author: Matthias Clasen +AuthorDate: Mon Jun 17 08:40:33 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 17 12:40:47 2013 -0400 + + 2.37.2 + + NEWS | 44 ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 44 insertions(+) + +commit d929eb64eeac8947e966e817e3afc7f7aff8672b +Author: Matthias Clasen +AuthorDate: Mon Jun 17 12:39:56 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 17 12:40:47 2013 -0400 + + Try to make the testgdate test hobble along a little longer + + tests/testgdate.c | 44 +++++++++++++++++++++++--------------------- + 1 file changed, 23 insertions(+), 21 deletions(-) + +commit 1eefcb4d66479ece8a7e6932cf65dee60d0c5984 +Author: Matthias Clasen +AuthorDate: Sun Jun 16 09:28:59 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 16 09:28:59 2013 -0400 + + Plug a small memory leak + + g_test_trap_assertions was leaking the process_id string. + + glib/gtestutils.c | 1 + + 1 file changed, 1 insertion(+) + +commit 910732ea7e6e4eaf42a33c32d25899b10afefa81 +Author: Emmanuele Bassi +AuthorDate: Fri May 3 16:44:36 2013 -0700 +Commit: Emmanuele Bassi +CommitDate: Wed Jun 12 11:24:55 2013 +0100 + + tests/binding: Ensure that the binding goes away + + Use weak pointers so that we can check that the GBinding instance goes + away when it should. + + https://bugzilla.gnome.org/show_bug.cgi?id=698018 + + gobject/tests/binding.c | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +commit d1959e4faae93bbe22bb95c99850b515611cb578 +Author: Emmanuele Bassi +AuthorDate: Thu May 16 22:34:55 2013 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Jun 12 11:24:55 2013 +0100 + + binding: Use hash table as a set + + gobject/gbinding.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 25a3c8720cb13944eb051775b89838540d4c5760 +Author: Emmanuele Bassi +AuthorDate: Thu May 16 22:28:54 2013 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Jun 12 11:24:55 2013 +0100 + + binding: Make unbind() release the reference on GBinding + + The automatic memory management of GBinding is not optimal for high + order languages with garbage collectors semantics. If we leave the + binding instance inert but still referenced it will be leaked, so one + solution that does not throw away the baby of C convenience with the + bathwater of language bindability is to have unbind() perform an + implicit unref(). + + Hopefully, C developers will read the documentation and especially the + note that says that after calling unbind() the reference count on the + GBinding instance is decreased. + + https://bugzilla.gnome.org/show_bug.cgi?id=698018 + + gobject/gbinding.c | 81 + ++++++++++++++++++++++++++++--------------------- + gobject/tests/binding.c | 4 +-- + 2 files changed, 48 insertions(+), 37 deletions(-) + +commit 270d73a1e08162de9099f6058b20ffe4d026d4e6 +Author: Emmanuele Bassi +AuthorDate: Fri May 3 15:51:43 2013 -0700 +Commit: Emmanuele Bassi +CommitDate: Wed Jun 12 11:24:55 2013 +0100 + + docs: Fix g_binding_unbind() in the API reference + + docs/reference/gobject/gobject-sections.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 236ee6556188d3b1f3055d7d2ff65ea6cc824655 +Author: Krishnababu Krothapalli +AuthorDate: Tue Jun 11 14:23:53 2013 +0530 +Commit: Krishnababu Krothapalli +CommitDate: Tue Jun 11 14:23:53 2013 +0530 + + Updated Telugu Translations + + po/te.po | 301 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 150 insertions(+), 151 deletions(-) + +commit f1f7c97e084c8cecd10a5d05ea2022bf20deeada +Author: Shankar Prasad +AuthorDate: Tue Jun 11 11:52:33 2013 +0530 +Commit: Shankar Prasad +CommitDate: Tue Jun 11 11:52:33 2013 +0530 + + updated kn translations + + po/kn.po | 235 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 116 insertions(+), 119 deletions(-) + +commit 9d9532bdd358a38c1b878be91702af5a8b82a5aa +Author: Colin Walters +AuthorDate: Mon Jun 10 13:17:08 2013 -0400 +Commit: Benjamin Otte +CommitDate: Tue Jun 11 01:46:08 2013 +0200 + + gmain: Document more use cases of g_main_context_wakeup() + + https://bugzilla.gnome.org/show_bug.cgi?id=701878 + + glib/gmain.c | 30 ++++++++++++++++++++++++++++-- + 1 file changed, 28 insertions(+), 2 deletions(-) + +commit 8a37af7f0ec434c8e283d3b8da4e4833e767574e +Author: Benjamin Otte +AuthorDate: Sat Jun 8 21:59:59 2013 +0200 +Commit: Benjamin Otte +CommitDate: Tue Jun 11 01:46:08 2013 +0200 + + tests: Add a test for a specific invariant + + See the documentation in the test. The invariant is used by + gnome-test-runner. + + https://bugzilla.gnome.org/show_bug.cgi?id=701878 + + glib/tests/mainloop.c | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +commit 8474ad7f6ac9ee3ea8bbadf162abb2493bce2af9 +Author: Marek Černocký +AuthorDate: Mon Jun 10 21:31:36 2013 +0200 +Commit: Marek Černocký +CommitDate: Mon Jun 10 21:31:36 2013 +0200 + + Updated Czech translation + + po/cs.po | 568 + +++++++++++++++++++++++++++++---------------------------------- + 1 file changed, 263 insertions(+), 305 deletions(-) + +commit 57eca445ca1080be8278e1d8ab432dde3bdab648 +Author: Piotr Drąg +AuthorDate: Mon Jun 10 20:32:57 2013 +0200 +Commit: Piotr Drąg +CommitDate: Mon Jun 10 20:33:26 2013 +0200 + + Updated Polish translation + + po/pl.po | 246 + +++++++++++++++++++++++++++++---------------------------------- + 1 file changed, 114 insertions(+), 132 deletions(-) + +commit c1e32a5c59cf43d86c6e1b50ba570e01a549c026 +Author: Ryan Lortie +AuthorDate: Mon Jun 10 11:14:17 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 10 11:18:06 2013 -0400 + + GObject: turn add-property-after-init to a warning + + We have turned up enough cases of this being done (including GTK API + allowing apps to do this to GtkSettings well after it has been + instantiated) that it is clear that we cannot really break this + feature + while claiming to be backwards compatible. + + For that reason, it becomes a warning rather than a critical (ie: + it is + still well-defined behaviour, but you are discouraged from doing it). + + The intention is to keep this feature for at least the next while. + A given GObjectClass will be able to avoid using GParamSpec pool + for as + long as you don't install properties after init. If you do that, you + will get a warning and we will devolve to using GParamSpecPool. + + https://bugzilla.gnome.org/show_bug.cgi?id=698614 + + gobject/gobject.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit bbf9f5e97c49f0f24476bfb7e457f7f60789ea89 +Author: Nilamdyuti Goswami +AuthorDate: Mon Jun 10 14:58:13 2013 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Mon Jun 10 14:58:53 2013 +0530 + + Assamese translation updated + + po/as.po | 265 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 130 insertions(+), 135 deletions(-) + +commit 3fdbfe7c0a7585c9c2dd0dc4976883e324c6e957 +Author: Fran Diéguez +AuthorDate: Mon Jun 10 10:31:01 2013 +0200 +Commit: Fran Diéguez +CommitDate: Mon Jun 10 10:31:01 2013 +0200 + + Updated Galician translations + + po/gl.po | 222 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 108 insertions(+), 114 deletions(-) + +commit 12958ed5cc08e3222054edbdb203fdfe4b2f5d1f +Author: Ryan Lortie +AuthorDate: Sat Jun 8 17:01:56 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jun 8 17:01:56 2013 -0400 + + gio/tests: sort tests in the Makefile.am + + ...to make it clear where people should add theirs, reducing the + chance + of conflicts caused by everyone always adding at the end. + + gio/tests/Makefile.am | 138 + +++++++++++++++++++++++++------------------------- + 1 file changed, 69 insertions(+), 69 deletions(-) + +commit afc8b1020aaa3a8acd7e8328d148748d3a5adfe6 +Author: Ryan Lortie +AuthorDate: Mon Apr 29 13:37:55 2013 -0700 +Commit: Ryan Lortie +CommitDate: Fri Jun 7 18:36:55 2013 -0400 + + GDesktopAppInfo: support DBusActivatable + + Support the sender-side of the freedesktop application specification + for + cases that we find 'DBusActivatable=true' in the desktop file. + + https://bugzilla.gnome.org/show_bug.cgi?id=699259 + + gio/gdesktopappinfo.c | 219 + +++++++++++++++++++++++++++++++++++++++----------- + glib/gkeyfile.h | 1 + + 2 files changed, 172 insertions(+), 48 deletions(-) + +commit 0aaac55d1474dde49a5ac664dda16f0f6deca9b6 +Author: Matthias Clasen +AuthorDate: Thu Jun 6 00:05:41 2013 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 6 00:06:46 2013 -0400 + + Update link to documentation + + gio/gapplicationimpl-dbus.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6965b721b1c7ec571f54065ddd1ef4ee1f7a4c3d +Author: Dan Winship +AuthorDate: Wed Jun 5 23:49:31 2013 -0300 +Commit: Dan Winship +CommitDate: Wed Jun 5 23:49:56 2013 -0300 + + tests: fix and re-add the broken test + + gio/tests/inet-address.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 1dac271ace5f4ca690ac2ce13864b444359c54ce +Author: Matthias Clasen +AuthorDate: Wed Jun 5 21:50:52 2013 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 5 21:50:52 2013 -0400 + + Remove a failing testcase + + One of the recently added examples seems wrong. Drop it. + + gio/tests/inet-address.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 76a10a572c67387533fa1e34796e39e3b7e70c30 +Author: Colin Walters +AuthorDate: Wed Jun 5 18:05:12 2013 -0400 +Commit: Colin Walters +CommitDate: Wed Jun 5 18:52:14 2013 -0400 + + GFileEnumerator: Add some documentation about ordering + + Kind of a gratuitious gaping hole in the docs... + + https://bugzilla.gnome.org/show_bug.cgi?id=701680 + + gio/gfileenumerator.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit 74a034028a964a25cc11318caf0b3c6d9a47bbcc +Author: Ryan Lortie +AuthorDate: Wed Jun 5 15:51:13 2013 -0400 +Commit: Dan Winship +CommitDate: Wed Jun 5 19:48:29 2013 -0300 + + tests: add a few more invalid IPv6 address tests + + https://bugzilla.gnome.org/show_bug.cgi?id=701401 + + gio/tests/inet-address.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 59ed934b055229ff2da96f96c772a060dc0f4092 +Author: Dan Winship +AuthorDate: Sun Jun 2 18:32:21 2013 -0300 +Commit: Dan Winship +CommitDate: Wed Jun 5 19:48:19 2013 -0300 + + ginetaddress: fix addr/string conversions on windows + + When parsing an address, we need to re-set "len" between IPv4 and + IPv6, since WSAStringToAddress() might set it to sizeof(struct + sin_addr) + when trying to parse the string as IPv4, even if it fails. Also, we + need to make sure to not pass strings to WSAStringToAddress() that it + will accept but that we don't want it to. + + When stringifying an address, we need to clear the sockaddr before + filling it in, so we don't accidentally end up with an unwanted + scope_id or the like. + + https://bugzilla.gnome.org/show_bug.cgi?id=701401 + + gio/ginetaddress.c | 29 +++++++++++++++++++++-------- + 1 file changed, 21 insertions(+), 8 deletions(-) + +commit 9f1a0b57cdca9eb2f9d8a8ecd414369df739fb8d +Author: Colin Walters +AuthorDate: Sun May 12 07:28:01 2013 +0100 +Commit: Colin Walters +CommitDate: Wed Jun 5 19:00:20 2013 +0100 + + Ensure g_file_copy() does not temporarily expose private files + + Previously, g_file_copy() would (on Unix) create files with the + default mode of 644. For applications which might at user request + copy arbitrary private files such as ~/.ssh or /etc/shadow, a + world-readable copy would be temporarily exposed. + + This patch is suboptimal in that it *only* fixes g_file_copy() + for the case where both source and destination are instances of + GLocalFile on Unix. + + The reason for this is that the public GFile APIs for creating files + allow very limited control over the access permissions for the created + file; one can either say a file is "private" or not. Fixing + this by adding e.g. g_file_create_with_attributes() would make sense, + except this would entail 8 new API calls for all the variants of + _create(), _create_async(), _replace(), _replace_async(), + _create_readwrite(), _create_readwrite_async(), _replace_readwrite(), + _replace_readwrite_async(). That can be done as a separate patch + later. + + https://bugzilla.gnome.org/show_bug.cgi?id=699959 + + gio/gfile.c | 24 +++++++++++++++++++++++- + gio/glocalfile.c | 23 ++++++++++++++--------- + gio/glocalfile.h | 2 ++ + gio/glocalfileoutputstream.c | 36 ++++++++++++++++++++++-------------- + gio/glocalfileoutputstream.h | 2 ++ + 5 files changed, 63 insertions(+), 24 deletions(-) + +commit 02aaef5a4dd92fe3a3f3a7c4ccebf22ca1ba2644 +Author: Colin Walters +AuthorDate: Thu May 9 00:01:59 2013 +0100 +Commit: Colin Walters +CommitDate: Wed Jun 5 18:56:53 2013 +0100 + + g_file_copy(): Clean up logic for info query + + Previously, we called g_file_query_info() *again* on the source at the + very end of the copy. This has the lame semantics that if the source + happened to be deleted, we would fail to apply attributes to the + destination. This could even be a security flaw. + + This commit changes things so that we query info from the source + *stream* after opening - i.e. on Unix we use the proper fstat() and + friends. That way we operate more atomically. + + https://bugzilla.gnome.org/show_bug.cgi?id=699959 + + gio/gfile.c | 128 + +++++++++++++++++++++++++++++++++++++++++------------------- + 1 file changed, 88 insertions(+), 40 deletions(-) + +commit b4df86fa193d54c7604bf90aa88824e220b92683 +Author: Ryan Lortie +AuthorDate: Mon Apr 29 13:30:02 2013 -0700 +Commit: Ryan Lortie +CommitDate: Wed Jun 5 12:50:50 2013 -0400 + + GApplication: implement fd.o application spec + + The freedesktop application specification is largely overlapping the + GLib application D-Bus interface but implementing it will allow for + applications to be launched directly from desktop files, which + we want. + + We keep the old Gtk interface for compatibility reasons and because it + has some functionality not in the freedesktop spec (Busy state, + CommandLine, etc.). + + https://bugzilla.gnome.org/show_bug.cgi?id=699259 + + gio/gapplicationimpl-dbus.c | 78 + +++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 76 insertions(+), 2 deletions(-) + +commit 7baea0aee559c70139e03421487d5aa213a547c0 +Author: Ryan Lortie +AuthorDate: Thu May 9 09:30:38 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jun 5 12:50:50 2013 -0400 + + GApplication: set prgname to appid for services + + Since services are based on D-Bus activation and desktop files are + supposed to be named like the busname for DBusActivatable applications + and since gnome-shell wants wmclass equal to the desktop file name, we + therefore want wmclass equal to the application ID in this case. + + wmclass is determined from the prgname, which is otherwise pretty + pointless to set to some random thing in $(libexec) for a D-Bus + service, + so set that to the appid. + + This means that for D-Bus services, the following things are now + all the + same: + + - application ID + - prgname + - wmclass property set on all windows + - desktop file name + - well-known bus name + + There are not many applications running as D-Bus services at + present so + this shouldn't impact anybody except for gnome-clocks (where this + change + will be fixing a bug) and gnome-terminal. + + https://bugzilla.gnome.org/show_bug.cgi?id=699259 + + gio/gapplication.c | 24 +++++++++++++++++++----- + 1 file changed, 19 insertions(+), 5 deletions(-) + +commit 25d6560588bee636466ad62127f306a5d68bb872 +Author: Daniel Mustieles +AuthorDate: Wed Jun 5 18:28:48 2013 +0200 +Commit: Daniel Mustieles +CommitDate: Wed Jun 5 18:28:48 2013 +0200 + + Updated Spanish translation + + po/es.po | 51 ++++++++++++++++++++++----------------------------- + 1 file changed, 22 insertions(+), 29 deletions(-) + +commit 27c2864843f40d6a89eb9b0609f47216dd44058c +Author: ManojKumar Giri +AuthorDate: Wed Jun 5 13:08:46 2013 +0530 +Commit: ManojKumar Giri +CommitDate: Wed Jun 5 13:08:46 2013 +0530 + + Updated Odia Translation. + + po/or.po | 51 ++++++++++++++++++++++----------------------------- + 1 file changed, 22 insertions(+), 29 deletions(-) + +commit 5b872bb4fdc5118ea19172d3654131918ad676b4 +Author: Sandeep Sheshrao Shedmake +AuthorDate: Wed Jun 5 12:28:00 2013 +0530 +Commit: Sandeep Sheshrao Shedmake +CommitDate: Wed Jun 5 12:28:00 2013 +0530 + + Updated Marathi Translations + + po/mr.po | 470 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 233 insertions(+), 237 deletions(-) + +commit 78ebab5bea1982a49cadadb36aa9ab0b3485d2fa +Author: Sweta Kothari +AuthorDate: Wed Jun 5 10:48:55 2013 +0530 +Commit: Sweta Kothari +CommitDate: Wed Jun 5 10:49:24 2013 +0530 + + Updated Gujarati Translations + + po/gu.po | 51 ++++++++++++++++++++++----------------------------- + 1 file changed, 22 insertions(+), 29 deletions(-) + +commit 9d0c17b50102267a5029b58b1f44efbad82d8f03 +Author: Ryan Lortie +AuthorDate: Tue Jun 4 09:48:12 2013 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jun 4 09:52:10 2013 -0400 + + g_file_set_contents(): don't fsync on ext3/4 + + ext3 and ext4 (for quite some time) with default mount options don't + need fsync() to ensure safety of replace-by-rename. Stop doing + that for + these filesystems. + + Note: this patch also impacts ext2, which is probably not safe, but I + don't know of any way to check ext2. vs the others because they + all have + the same magic numbers (short of opening /proc/mount). + + This patch assumes that if BTRFS_SUPER_MAGIC is defined then so + will be + EXT3_SUPER_MAGIC. + + https://bugzilla.gnome.org/show_bug.cgi?id=701560 + + glib/gfileutils.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit 16b26231ca7d807a5bb52228eb4f2cae4427edde +Author: Dan Winship +AuthorDate: Sat May 25 11:09:43 2013 -0300 +Commit: Dan Winship +CommitDate: Tue Jun 4 09:24:47 2013 -0300 + + gio/tests/inet-address: fix to work on OS X + + OS X's getaddrinfo() only supports IPv6 scope IDs that are interface + names, not numbers. So use if_indextoname() to get the name of an + interface and construct an address using that. + + https://bugzilla.gnome.org/show_bug.cgi?id=700123 + + configure.ac | 2 +- + gio/tests/inet-address.c | 28 ++++++++++++++++++++++++---- + 2 files changed, 25 insertions(+), 5 deletions(-) + +commit c828aef014082c06f6a697ef4d0b92054d82b727 +Author: Ryan Lortie +AuthorDate: Mon Jun 3 22:55:20 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 3 22:55:20 2013 -0400 + + g_file_set_contents: change {posix_ => }fallocate + + Use fallocate() instead of posix_fallocate() so that we just fail + instead of getting the emulated version from the libc. + + https://bugzilla.gnome.org/show_bug.cgi?id=701560 + + configure.ac | 2 +- + glib/gfileutils.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit fc98c13fdec0e5ea7d8827be0eb1f1add31ad946 +Author: Ryan Lortie +AuthorDate: Mon Jun 3 17:59:29 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 3 17:59:29 2013 -0400 + + g_file_set_contents(): fix simple logic error + + CI FTW. + + glib/gfileutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e40435e834b4da4e791dd6c67ffc8bf285b777fd +Author: Ryan Lortie +AuthorDate: Mon Jun 3 17:49:06 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 3 17:49:06 2013 -0400 + + g_file_set_contents(): use unistd instead of stdio + + Use a normal write() system call instead of fdopen() and fwrite(). + + This will definitely work on UNIX system and should work on Windows as + well... + + As an added bonus, we can use g_close() now as well. + + https://bugzilla.gnome.org/show_bug.cgi?id=701560 + + glib/gfileutils.c | 52 + +++++++++++++++++++--------------------------------- + 1 file changed, 19 insertions(+), 33 deletions(-) + +commit c152ceba090840be100ae6eeb90b639b85420ec7 +Author: Ryan Lortie +AuthorDate: Mon Jun 3 16:16:25 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 3 17:43:36 2013 -0400 + + g_file_set_contents(): don't allocate display name + + g_file_set_contents() sets a GError in the event of various failures + that count occur. It uses g_filename_display_name() in order to + get the + filename to include in the messages. + + Factor out the error handling to make it easier to allocate the + display + name only when we need it (instead of allocating it every time). + + https://bugzilla.gnome.org/show_bug.cgi?id=701560 + + glib/gfileutils.c | 124 + ++++++++++++++++++++---------------------------------- + 1 file changed, 46 insertions(+), 78 deletions(-) + +commit d3be43fcc5165b7680c9073438ad60a3652c1703 +Author: Ryan Lortie +AuthorDate: Mon Jun 3 15:43:01 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 3 16:12:04 2013 -0400 + + g_file_set_contents(): use posix_fallocate() + + Extents-based filesystems like knowing in advance how much data + will be + written to a file in order to prevent fragmentation. If we have + it, use + posix_fallocate() before writing data in g_file_set_contents(). + + https://bugzilla.gnome.org/show_bug.cgi?id=701560 + + configure.ac | 2 +- + glib/gfileutils.c | 7 +++++++ + 2 files changed, 8 insertions(+), 1 deletion(-) + +commit b9350597384502e51e800d9bcfea32d719b7b41b +Author: Matej Urbančič +AuthorDate: Mon Jun 3 21:37:49 2013 +0200 +Commit: Matej Urbančič +CommitDate: Mon Jun 3 21:37:49 2013 +0200 + + Updated Slovenian translation + + po/sl.po | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 771c841b3d2ff10e36cfd103479ca57dc698be5e +Author: Daniel Mustieles +AuthorDate: Mon Jun 3 11:27:44 2013 +0200 +Commit: Daniel Mustieles +CommitDate: Mon Jun 3 11:27:44 2013 +0200 + + Updated Spanish translation + + po/es.po | 48 ++++++++++++++++++++++++------------------------ + 1 file changed, 24 insertions(+), 24 deletions(-) + +commit ebea942d955c383ab179db1473d58cee6b2dee54 +Author: ManojKumar Giri +AuthorDate: Mon Jun 3 13:48:33 2013 +0530 +Commit: ManojKumar Giri +CommitDate: Mon Jun 3 13:48:33 2013 +0530 + + Updated Odia Translation. + + po/or.po | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 72af6b0d5baa291210d603c366d232185ceae91f +Author: Sweta Kothari +AuthorDate: Mon Jun 3 13:30:48 2013 +0530 +Commit: Sweta Kothari +CommitDate: Mon Jun 3 13:31:25 2013 +0530 + + Updated Gujarati Translations + + po/gu.po | 48 ++++++++++++++++++++++++------------------------ + 1 file changed, 24 insertions(+), 24 deletions(-) + +commit 9acc480d72e9140ec1fa34d780c6d924c7a71aec +Author: Kjell Ahlstedt +AuthorDate: Sun Jun 2 20:21:33 2013 +0200 +Commit: Kjell Ahlstedt +CommitDate: Mon Jun 3 09:37:01 2013 +0200 + + Remove extra comma in gtestutils.h + + https://bugzilla.gnome.org/show_bug.cgi?id=701474 + + glib/gtestutils.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d0301080ee78c2f67ce04486da2ee3e7e123eece +Author: Matthias Clasen +AuthorDate: Sun Jun 2 20:00:21 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 2 20:02:06 2013 -0400 + + Improve GSettings test coverage + + gio/tests/gsettings.c | 100 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 100 insertions(+) + +commit b9406904a5d8a50a0608864160029e7bb07d04e2 +Author: Matthias Clasen +AuthorDate: Sun Jun 2 19:59:48 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 2 20:02:06 2013 -0400 + + Add a directory monitoring test + + gio/tests/Makefile.am | 1 + + gio/tests/monitor.c | 184 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 185 insertions(+) + +commit e546eb016a15646be75b73c1eacf6c2b6d5f120b +Author: Matthias Clasen +AuthorDate: Sun Jun 2 14:37:19 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 2 20:01:56 2013 -0400 + + Remove some unused inotify code + + gio/inotify/inotify-kernel.c | 142 + ++++++------------------------------------ + gio/inotify/inotify-missing.c | 15 ----- + 2 files changed, 20 insertions(+), 137 deletions(-) + +commit a62079e2e3270f6196a0744c532e72d38ab311b1 +Author: Ryan Lortie +AuthorDate: Sun Jun 2 09:53:06 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sun Jun 2 09:53:24 2013 -0400 + + tests: Remove a leftover debug printf + + https://bugzilla.gnome.org/show_bug.cgi?id=701456 + + gio/tests/file.c | 1 - + 1 file changed, 1 deletion(-) + +commit fc35c3487eb926417261035cfc834b0b716530e1 +Author: Matthias Clasen +AuthorDate: Sun Jun 2 01:47:19 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 2 01:47:19 2013 -0400 + + Improve unix stream test coverage + + gio/tests/unix-streams.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 8f655149e9d0bb48fc7ebb2c29bba13924f13056 +Author: Matthias Clasen +AuthorDate: Sun Jun 2 01:46:21 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 2 01:46:21 2013 -0400 + + Improve GAppInfo test coverage + + gio/tests/mimeapps.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit 0326f146fd3bbff74e7ca1e77bef814601c1a981 +Author: Matthias Clasen +AuthorDate: Sun Jun 2 01:44:49 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 2 01:44:49 2013 -0400 + + Improve GMemoryInputStream test coverage + + gio/tests/memory-input-stream.c | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +commit dcf5dea9225efd3ef60a23a5a0fcbbb1e95cc794 +Author: Matthias Clasen +AuthorDate: Sun Jun 2 01:44:15 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 2 01:44:15 2013 -0400 + + Improve GMenuModel test coverage + + gio/tests/gmenumodel.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +commit c40e0b59da5dba6af74f7778e77b01e7f7f48e15 +Author: Matthias Clasen +AuthorDate: Sun Jun 2 01:43:13 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 2 01:43:13 2013 -0400 + + Improve GFileAttributeMatcher test coverage + + gio/tests/g-file-info.c | 24 +++++++++++++++++++++--- + 1 file changed, 21 insertions(+), 3 deletions(-) + +commit 0753ae1235a3765339b4637db0ca0c89a66fb0e4 +Author: Matthias Clasen +AuthorDate: Sun Jun 2 01:42:28 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 2 01:42:28 2013 -0400 + + Improve GIcon test coverage + + gio/tests/g-icon.c | 118 + ++++++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 107 insertions(+), 11 deletions(-) + +commit 49d39633d15427436a18e160f06aab12dce6f378 +Author: Matthias Clasen +AuthorDate: Sun Jun 2 01:41:50 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 2 01:41:50 2013 -0400 + + Improve test coverage for GZipCompressor + + gio/tests/converter-stream.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit 2f3f270fccaf92ae423864b5d35e61572137fda3 +Author: Matthias Clasen +AuthorDate: Sun Jun 2 01:41:09 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 2 01:41:09 2013 -0400 + + Improve test coverage for GBufferedOutputStream + + gio/tests/buffered-output-stream.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 6a487eae569198c88ef799b637891a4ed53effae +Author: Matthias Clasen +AuthorDate: Sun Jun 2 01:40:39 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 2 01:40:39 2013 -0400 + + Trivial formatting fix + + gio/gbytesicon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7977bb15de1f19e4f11484779c581a6c08ebdd03 +Author: Matthias Clasen +AuthorDate: Sat Jun 1 18:54:57 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 1 18:54:57 2013 -0400 + + Skip spawn tests when collecting coverage + + These tests break gcov's data collection, so don't link them + against -lgov. See bug 682133. + + glib/tests/Makefile.am | 5 +++++ + 1 file changed, 5 insertions(+) + +commit fed8ae38c3b43c8da693c624bb552c50d269af84 +Author: Matthias Clasen +AuthorDate: Sat Jun 1 00:36:16 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 1 18:51:25 2013 -0400 + + Improve test coverage a bit + + gio/tests/file.c | 20 ++++++++++++++++++++ + gio/tests/memory-output-stream.c | 10 ++++++++++ + 2 files changed, 30 insertions(+) + +commit c0f96bb27636de407a29c8ee30bb44a03c74a0fb +Author: Matthias Clasen +AuthorDate: Sat Jun 1 00:35:39 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 1 18:51:25 2013 -0400 + + mem-overflow: test malloc and realloc corner cases + + glib/tests/mem-overflow.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +commit 81be95fffbb8aed746fe6ceaa820fde10773e026 +Author: Fran Diéguez +AuthorDate: Sun Jun 2 00:25:33 2013 +0200 +Commit: Fran Diéguez +CommitDate: Sun Jun 2 00:25:33 2013 +0200 + + Updated Galician translations + + po/gl.po | 401 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 204 insertions(+), 197 deletions(-) + +commit 79972d22ac7085c252b6714d7dffd10fb470db6b +Author: Ryan Lortie +AuthorDate: Sat Jun 1 11:38:10 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jun 1 11:38:10 2013 -0400 + + Fix failure to build exit-on-close gdbus test + + In the case that HAVE_DBUS_DAEMON was undefined (as in ostree + where glib + is built before D-Bus) this test was failing. Move it inside the + HAVE_DBUS_DAEMON block. + + gio/tests/Makefile.am | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit 16ec6295806131103e1ba08f8b23f5b9bbe05adb +Author: Ryan Lortie +AuthorDate: Sat Jun 1 10:07:33 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jun 1 10:08:24 2013 -0400 + + glib.mk: Rework win32 test support + + Newer versions of automake (~1.13.1) seem to generate some new + rules for + testcases that get tripped up on our use of $(addsuffix) and + $(strip) so + take those out of the definition of TESTS on win32. + + glib.mk | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 601a00fa2ac31da0595cfe572b04edcdded3ae86 +Author: Ryan Lortie +AuthorDate: Sat Jun 1 09:55:13 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jun 1 09:55:13 2013 -0400 + + Change a pair of TESTS = to TEST += + + tests/gobject/Makefile.am | 2 +- + tests/refcount/Makefile.am | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit e042db0f83d73801a206cbaed1a49783355e0dd5 +Author: Ryan Lortie +AuthorDate: Fri May 31 22:33:22 2013 -0400 +Commit: Ryan Lortie +CommitDate: Fri May 31 23:16:00 2013 -0400 + + GSettings tests: reverse installed test complexity + + Remove the complications that were introduced in an attempt to + make the + gsettings and gschema-compile tests function as installed tests. + These + tests are designed (in large part for gsettings and entirely for + gschema-compile) to test the in-tree tools and should not be + testing the + system versions. + + In the future we may want to move the use of the in-tree tools + from the + gsettings testcase into the Makefile and install the resulting files, + allowing this testcase to run against those files, installed. + + gio/tests/gschema-compile.c | 9 +-------- + gio/tests/gsettings.c | 46 + ++++++++++++++++----------------------------- + 2 files changed, 17 insertions(+), 38 deletions(-) + +commit f9eb9eed10b7123ef000e49be1290755b2d6ae8f +Author: Ryan Lortie +AuthorDate: Thu May 30 00:07:32 2013 -0400 +Commit: Ryan Lortie +CommitDate: Fri May 31 23:12:15 2013 -0400 + + Rework the build system for a new tests approach + + Perform a substantial cleanup of the build system with respect to + building and installing testcases. + + First, Makefile.decl has been renamed glib.mk and substantially + expanded. We intend to add more stuff here in the future, like canned + rules for mkenums, marshallers, resources, etc. + + By default, tests are no longer compiled as part of 'make'. They will + be built when 'make check' is run. The old behaviour can be obtained + with --enable-always-build-tests. + + --disable-modular-tests is gone (because tests are no longer built by + default). There is no longer any way to cause 'make check' to be a + no-op, but that's not very useful anyway. + + A new glibtests.m4 file is introduced. Along with glib.mk, this + provides for consistent handling of --enable-installed-tests and + --enable-always-build-tests (mentioned above). + + Port our various test-installing Makefiles to the new framework. + + This patch substantially improves the situation in the toplevel tests/ + directory. Things are now somewhat under control there. There were + some tests being built that weren't even being run and we run + those now. + The long-running GObject performance tests in this directory have been + removed from 'make check' because they take too long. + + As an experiment, 'make check' now runs the testcases on win32 builds, + by default. We can't run them under gtester (since it uses a pipe to + communicate with the subprocess) so just toss them in TESTS. Most of + them are passing on win32. + + Things are not quite done here, but this patch is already a + substantial + improvement. More to come. + + Makefile.am | 17 +- + Makefile.decl | 97 --- + configure.ac | 28 +- + gio/Makefile.am | 20 +- + gio/fam/Makefile.am | 4 +- + gio/fen/Makefile.am | 6 +- + gio/gdbus-2.0/codegen/Makefile.am | 4 +- + gio/glib-compile-schemas.c | 4 +- + gio/inotify/Makefile.am | 6 +- + gio/kqueue/Makefile.am | 6 +- + gio/tests/Makefile.am | 726 + +++++++++------------ + gio/tests/appinfo.c | 6 + + gio/tests/file.c | 2 +- + gio/tests/gdbus-example-objectmanager-client.c | 2 +- + gio/tests/gdbus-example-objectmanager-server.c | 2 +- + gio/tests/gdbus-object-manager-example/Makefile.am | 37 +- + gio/tests/gdbus-peer.c | 2 +- + gio/tests/gdbus-test-fixture.c | 2 +- + gio/tests/gschema-compile.c | 6 +- + gio/tests/gsettings.c | 61 +- + gio/win32/Makefile.am | 6 +- + gio/xdgmime/Makefile.am | 4 +- + glib.mk | 223 +++++++ + glib/Makefile.am | 15 +- + glib/gnulib/Makefile.am | 4 +- + glib/libcharset/Makefile.am | 6 +- + glib/pcre/Makefile.am | 4 +- + glib/tests/Makefile.am | 194 +++--- + glib/update-pcre/Makefile.am | 2 +- + gmodule/Makefile.am | 8 +- + gobject/Makefile.am | 14 +- + gobject/tests/Makefile.am | 86 +-- + gthread/Makefile.am | 6 +- + m4macros/Makefile.am | 2 +- + m4macros/glibtests.m4 | 28 + + tests/Makefile.am | 296 ++++----- + tests/gobject/Makefile.am | 124 ++-- + tests/refcount/Makefile.am | 33 +- + 38 files changed, 974 insertions(+), 1119 deletions(-) + +commit 210b1f8b4230b881d1c2e4a9e7dac571c967e091 +Author: Ryan Lortie +AuthorDate: Thu May 30 00:04:05 2013 -0400 +Commit: Ryan Lortie +CommitDate: Fri May 31 23:03:19 2013 -0400 + + Remove a bunch of lingering g_thread_init() + + After this patch, there is but one remaining use of g_thread_init(), + which is in tests/slice-threadinit.c, a testcase dedicated to testing + the functionality of gslice across a g_thread_init() boundary. + + This testcase is pretty meaningless these days... probably we should + delete it. + + tests/asyncqueue-test.c | 2 -- + tests/child-test.c | 3 --- + tests/gobject/performance-threaded.c | 3 --- + tests/mainloop-test.c | 4 +--- + tests/onceinit.c | 2 -- + tests/slice-test.c | 2 -- + tests/thread-test.c | 1 - + tests/threadpool-test.c | 2 -- + 8 files changed, 1 insertion(+), 18 deletions(-) + +commit e66abbe2ef574b1ff5c36588bbac7267f04e5abe +Author: Ryan Lortie +AuthorDate: Wed May 29 23:49:30 2013 -0400 +Commit: Ryan Lortie +CommitDate: Fri May 31 23:03:19 2013 -0400 + + Some final g_test_build_filename() porting + + This should be the last users that need to be ported. + + For some of the oldschool non-gtester-ified tests, we call + g_test_init() + from main() because it is necessary in order to use + g_test_build_filename(). + + gio/tests/appinfo-test.c | 2 +- + gio/tests/desktop-app-info.c | 2 +- + glib/tests/keyfile.c | 2 +- + glib/tests/spawn-singlethread.c | 2 +- + tests/iochannel-test.c | 11 +++-------- + tests/module-test.c | 17 ++++++----------- + tests/unicode-caseconv.c | 10 +++------- + tests/unicode-encoding.c | 12 ++++-------- + 8 files changed, 20 insertions(+), 38 deletions(-) + +commit d7b3e558cfc91b1eaee80b156ad358774ded1c34 +Author: Ryan Lortie +AuthorDate: Wed May 29 23:43:26 2013 -0400 +Commit: Ryan Lortie +CommitDate: Fri May 31 23:03:19 2013 -0400 + + Move a pair of gobject tests to tests/gobject/ + + testgobject.c and timeloop-closure.c are the only two tests in the + toplevel tests/ directory that depend on gobject, so move them to + tests/gobject/ along with the other gobject tests. + + Both of these were in noinst_PROGRAMS and not TESTS, so keep them that + way when we move them. + + tests/Makefile.am | 7 +- + tests/gobject/Makefile.am | 6 +- + tests/gobject/testgobject.c | 429 + +++++++++++++++++++++++++++++++++++++++ + tests/gobject/timeloop-closure.c | 220 ++++++++++++++++++++ + tests/testgobject.c | 429 + --------------------------------------- + tests/timeloop-closure.c | 220 -------------------- + 6 files changed, 656 insertions(+), 655 deletions(-) + +commit a114e98d09248f843c87b99c15534db4cf6367aa +Author: Matthias Clasen +AuthorDate: Fri May 31 21:24:21 2013 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 31 21:24:21 2013 -0400 + + Split off the gdbus-overflow test + + It is unrealiable under load, and frequently fails in the + ostree tests. See https://bugzilla.gnome.org/show_bug.cgi?id=701105 + + gio/tests/Makefile.am | 3 +- + gio/tests/gdbus-overflow.c | 252 + +++++++++++++++++++++++++++++++++++++++++++++ + gio/tests/gdbus-peer.c | 126 +---------------------- + 3 files changed, 255 insertions(+), 126 deletions(-) + +commit eb16c5a4fea60e7969640972c8bc70dcc8673857 +Author: Matthias Clasen +AuthorDate: Fri May 31 17:23:29 2013 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 31 17:24:14 2013 -0400 + + Fix a typo + + glib/gtestutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9cfac6e76c19b40a9b07b92d34afb06b13b1876e +Author: Ryan Lortie +AuthorDate: Thu May 30 13:50:17 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu May 30 13:50:42 2013 -0400 + + Bump version. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a681e11f928e79d40d4d1e994dd5b65378f911a7 +Author: William Jon McCann +AuthorDate: Wed Jan 30 00:46:43 2013 +0100 +Commit: William Jon McCann +CommitDate: Thu May 30 10:25:29 2013 -0400 + + Fix property example in gobject tutorial + + https://bugzilla.gnome.org/show_bug.cgi?id=692848 + + docs/reference/gobject/tut_howto.xml | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +commit ccc039c70578b3fdf146d8e4d97588debf3d7c89 +Author: Ryan Lortie +AuthorDate: Wed May 29 23:30:46 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 29 23:31:19 2013 -0400 + + Remove org.gtk.test.gschema + + This is the old non-xml schema file format that we were playing around + with at one time. Nothing is using this file anymore. + + gio/tests/Makefile.am | 1 - + gio/tests/org.gtk.test.gschema | 39 + --------------------------------------- + 2 files changed, 40 deletions(-) + +commit c235087ba44cd090623510d50371f4444538a49c +Author: Ryan Lortie +AuthorDate: Wed May 29 21:49:53 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 29 21:49:53 2013 -0400 + + icon deserialisation: fix uninitialised variable + + Deserialising an emblemed icon would make uninitialised use of a + variable in the error case. Fix that. + + gio/gicon.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit c7e965f4ee26b95b10b80756f24589019f9d3857 +Author: Ryan Lortie +AuthorDate: Wed May 29 21:33:04 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 29 21:36:50 2013 -0400 + + docs/: ignore gtester Makefile targets + + Mark 'test', 'test-report', 'perf-report' and 'full-report' as + PHONY in + docs/Makefile.am to prevent recursion of gtester into the + documentation + subdirectories. Stop including Makefile.decl from these directories + since it is no longer necessary. + + This will clear up the warnings about EXTRA_DIST being defined once in + gtk-doc.make and again in Makefile.decl. + + docs/Makefile.am | 5 +++-- + docs/reference/Makefile.am | 2 -- + docs/reference/gio/Makefile.am | 1 - + docs/reference/gio/gdbus-object-manager-example/Makefile.am | 1 - + docs/reference/glib/Makefile.am | 1 - + docs/reference/gobject/Makefile.am | 1 - + 6 files changed, 3 insertions(+), 8 deletions(-) + +commit a8a9afe17c0ee484b65c6f75e0d22ad1ae2cd9b6 +Author: Ryan Lortie +AuthorDate: Mon Apr 22 17:37:18 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 29 09:25:25 2013 -0400 + + GObject: prevent installing properties after init + + GObject has previously allowed installing properties after class_init + has finished running. This means that you could install some of your + own properties on G_TYPE_OBJECT, for example, although they wouldn't + have worked properly. + + A previous patch asserted that this was not true and we had to + revert it + because it broke the shell. Instead of reverting, we should have + used a + critical, so do that now. + + Complaints go to this bug: + + https://bugzilla.gnome.org/show_bug.cgi?id=698614 + + gobject/gobject.c | 9 +++++++-- + gobject/gtype-private.h | 1 + + gobject/gtype.c | 10 ++++++++++ + 3 files changed, 18 insertions(+), 2 deletions(-) + +commit 8df1bb3486417bc67a5b38fb8fa81f333b18da22 +Author: Ryan Lortie +AuthorDate: Wed May 29 08:49:16 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 29 09:03:32 2013 -0400 + + Rename G_TEST_DISTED to G_TEST_DIST + + Since this feature is so utterly automake-centric, we may as well be + using the same terminology as automake itself (ie: although it's + BUILT_SOURCES, it's DIST_EXTRA, not DISTED). + + Also add some comments to the enum explaining that these terms are + really corresponding directly to the automake terms. + + https://bugzilla.gnome.org/show_bug.cgi?id=549783 + + gio/tests/appinfo.c | 22 +++++++++++----------- + gio/tests/contexts.c | 2 +- + gio/tests/file.c | 2 +- + gio/tests/g-icon.c | 2 +- + gio/tests/gdbus-peer.c | 2 +- + gio/tests/gschema-compile.c | 2 +- + gio/tests/gsettings.c | 8 ++++---- + gio/tests/tls-certificate.c | 44 + ++++++++++++++++++++++---------------------- + glib/gtestutils.c | 30 ++++++++++++++++++++++-------- + glib/gtestutils.h | 2 +- + glib/tests/bookmarkfile.c | 4 ++-- + glib/tests/keyfile.c | 6 +++--- + glib/tests/mappedfile.c | 10 +++++----- + glib/tests/markup-parse.c | 4 ++-- + 14 files changed, 77 insertions(+), 63 deletions(-) + +commit da478acd3c948536cd117e4347fcc554d93a7dc8 +Author: Ryan Lortie +AuthorDate: Tue May 28 17:48:06 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 29 09:03:32 2013 -0400 + + Remove G_TEST_DATA= from installed .test files + + This is no longer needed with the new test data file finding stuff. + + https://bugzilla.gnome.org/show_bug.cgi?id=549783 + + gio/tests/Makefile.am | 2 +- + glib/tests/Makefile.am | 2 +- + gobject/tests/Makefile.am | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit ddd7e941f4e7199832b508d7f892680ca31937de +Author: Ryan Lortie +AuthorDate: Tue May 28 18:03:17 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 29 09:03:32 2013 -0400 + + Test data file API: port two more testcases + + These ones were slightly non-trivial so they didn't get included + in the + previous patches. Port them now. + + https://bugzilla.gnome.org/show_bug.cgi?id=549783 + + gio/tests/appinfo.c | 75 + ++++++++++++++++++--------------------------------- + gio/tests/gsettings.c | 15 ++++------- + 2 files changed, 31 insertions(+), 59 deletions(-) + +commit 17ded322c5cb2cdb230233a9a020e1acdab9c0ab +Author: Ryan Lortie +AuthorDate: Tue May 28 14:24:47 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 29 09:03:32 2013 -0400 + + tests: move tests to new _get_filename() API + + This API was introduced to save a few lines of code here and there, so + let's start by removing a bunch from our own tests. + + https://bugzilla.gnome.org/show_bug.cgi?id=549783 + + gio/tests/file.c | 5 +-- + gio/tests/g-icon.c | 7 +--- + gio/tests/gdbus-connection-slow.c | 12 ++---- + gio/tests/gdbus-connection.c | 5 +-- + gio/tests/gdbus-introspection.c | 5 +-- + gio/tests/gdbus-peer.c | 3 +- + gio/tests/gdbus-proxy-well-known-name.c | 9 +---- + gio/tests/gdbus-proxy.c | 11 +---- + gio/tests/resources.c | 35 +++++----------- + gio/tests/tls-certificate.c | 72 + ++++++++++++--------------------- + glib/tests/keyfile.c | 12 ++---- + glib/tests/mappedfile.c | 25 +++--------- + 12 files changed, 56 insertions(+), 145 deletions(-) + +commit 575a9da718e8c84da052f50f1435914a94197696 +Author: Ryan Lortie +AuthorDate: Tue May 28 13:22:59 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 29 09:03:32 2013 -0400 + + gtest: Add more path building API + + Add a pair of functions for returning strings that don't need to be + freed. This is a bit of a hack but it will turn the 99% case of using + these functions from: + + gchar *tmp; + tmp = g_test_build_filename (...); + fd = open (tmp, ...); + g_free (tmp); + + to: + + fd = open (g_test_get_filename (...), ...); + + which is a pretty substantial win. + + https://bugzilla.gnome.org/show_bug.cgi?id=549783 + + docs/reference/glib/glib-sections.txt | 2 + + glib/gtestutils.c | 125 + ++++++++++++++++++++++++++++++---- + glib/gtestutils.h | 6 ++ + 3 files changed, 118 insertions(+), 15 deletions(-) + +commit 58c6ca32aac6e0735d7325ce0b876025c722bae3 +Author: Ryan Lortie +AuthorDate: Tue May 28 12:48:37 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 29 09:03:31 2013 -0400 + + tests: use new g_test_build_filename() API + + Port most of the tests to the new g_test_build_filename() API. + + https://bugzilla.gnome.org/show_bug.cgi?id=549783 + + gio/tests/contexts.c | 8 +----- + gio/tests/file.c | 10 +++---- + gio/tests/g-icon.c | 9 +------ + gio/tests/gapplication.c | 23 +++++----------- + gio/tests/gdbus-connection-loss.c | 9 +------ + gio/tests/gdbus-connection-slow.c | 11 ++------ + gio/tests/gdbus-connection.c | 13 +-------- + gio/tests/gdbus-introspection.c | 9 +------ + gio/tests/gdbus-peer.c | 9 +------ + gio/tests/gdbus-proxy-well-known-name.c | 11 ++------ + gio/tests/gdbus-proxy.c | 11 ++------ + gio/tests/gdbus-threading.c | 9 +------ + gio/tests/gschema-compile.c | 8 +----- + gio/tests/resources.c | 25 +++++------------- + gio/tests/tls-certificate.c | 47 + ++++++++++++++------------------- + glib/tests/bookmarkfile.c | 9 ++----- + glib/tests/keyfile.c | 14 +++------- + glib/tests/mappedfile.c | 17 ++++-------- + glib/tests/markup-parse.c | 10 ++----- + 19 files changed, 62 insertions(+), 200 deletions(-) + +commit 0c4806733cb30f56325b0f1c4e95a400e4998c14 +Author: Ryan Lortie +AuthorDate: Tue May 28 12:44:41 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 29 09:03:31 2013 -0400 + + Add g_test_build_filename() + + This function allows testcases to find data files in various + situations + of srcdir == builddir, srcdir != builddir and for installed tests. + + https://bugzilla.gnome.org/show_bug.cgi?id=549783 + + Makefile.decl | 6 +-- + docs/reference/glib/glib-sections.txt | 3 ++ + glib/gtestutils.c | 98 + +++++++++++++++++++++++++++++++++++ + glib/gtestutils.h | 11 ++++ + 4 files changed, 115 insertions(+), 3 deletions(-) + +commit 2afd39a90dbde31159a78b780bacdd636badb34e +Author: Matthias Clasen +AuthorDate: Tue May 28 22:23:58 2013 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 29 08:38:03 2013 -0400 + + Trivial doc typo fix + + gobject/gtype.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 2349635ebe1a757107d864bac603d7f2189b7418 +Author: Matthias Clasen +AuthorDate: Wed May 29 00:07:26 2013 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 29 08:37:57 2013 -0400 + + Trivial documentation typos + + gobject/gobject.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit b5463f4cf44eb74e667491ddd96476f51b9a8ed6 +Author: Matthias Clasen +AuthorDate: Wed May 29 00:14:55 2013 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 29 08:37:50 2013 -0400 + + Work with ltp 1.10 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit db1c83a5163dab40673b1c5cdf23fdff771ebaf3 +Author: Matthias Clasen +AuthorDate: Wed May 29 08:34:24 2013 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 29 08:37:28 2013 -0400 + + Improve gtype test coverage + + tests/refcount/objects.c | 3 +++ + tests/refcount/properties.c | 2 ++ + tests/refcount/properties2.c | 2 ++ + tests/refcount/properties4.c | 4 ++++ + 4 files changed, 11 insertions(+) + +commit 07168724d74cb656938df7abaa42dacff94c62cf +Author: Matthias Clasen +AuthorDate: Wed May 29 08:33:55 2013 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 29 08:37:19 2013 -0400 + + Improve signal test coverage + + gobject/tests/signals.c | 206 + +++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 205 insertions(+), 1 deletion(-) + +commit a9abbb31924f8ae9f51c1064f88efedde7c34117 +Author: Matthias Clasen +AuthorDate: Wed May 29 00:15:55 2013 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 29 08:37:08 2013 -0400 + + Improve test coverage in gobject/ + + Lines: 6631 8862 74.8 % + Functions: 747 893 83.7 % + + gobject/tests/Makefile.am | 5 +- + gobject/tests/boxed.c | 116 +++++++++++++++++++++++++++++++++++ + gobject/tests/qdata.c | 28 +++++++++ + gobject/tests/type.c | 152 + ++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 300 insertions(+), 1 deletion(-) + +commit 3382ac99be3141e084fea888c428f5d5bf725ab7 +Author: Emanuele Aina +AuthorDate: Mon May 20 15:53:40 2013 +0100 +Commit: Emanuele Aina +CommitDate: Tue May 28 22:59:24 2013 +0200 + + GIcon: NULLify the `type' out param in the sync methods too + + Both g_[file|bytes]_icon_load() leave the `type' out parameter + untouched, while the async methods g_[file|bytes]_icon_load_finish() + always set it to NULL. + + For consistency's sake NULLify it in the sync methods too. + + https://bugzilla.gnome.org/show_bug.cgi?id=700725 + + gio/gbytesicon.c | 3 +++ + gio/gfileicon.c | 3 +++ + 2 files changed, 6 insertions(+) + +commit 7a861ab4c9b4a8e379b1c5b7ec0385c5ef0c5d3d +Author: Matej Urbančič +AuthorDate: Tue May 28 22:26:50 2013 +0200 +Commit: Matej Urbančič +CommitDate: Tue May 28 22:26:50 2013 +0200 + + Updated Slovenian translation + + po/sl.po | 113 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 59 insertions(+), 54 deletions(-) + +commit 9d7429509cbb6adbe6be86a55183acceccfd7167 +Author: Shankar Prasad +AuthorDate: Tue May 28 18:28:09 2013 +0530 +Commit: Shankar Prasad +CommitDate: Tue May 28 18:28:09 2013 +0530 + + updated kn translations + + po/kn.po | 123 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 63 insertions(+), 60 deletions(-) + +commit 26df5e0d949b0ada2e5c939359dfccca71735cb4 +Author: Chun-wei Fan +AuthorDate: Tue May 28 12:55:56 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Tue May 28 12:56:28 2013 +0800 + + Update Visual Studio Project Sheets + + "Install" the newly-introduced gio/gbytesicon.h... + + build/win32/vs10/glib.props | 2 ++ + build/win32/vs9/glib.vsprops | 1 + + 2 files changed, 3 insertions(+) + +commit 762842b9943145c3645f4ded065d6737fccf3692 +Author: Ryan Lortie +AuthorDate: Mon May 27 17:34:21 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon May 27 23:36:06 2013 -0400 + + GLib 2.37.1 + + NEWS | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 48 insertions(+) + +commit 4c9a7b65eb028f78ad4e68c177e4ee634124b694 +Author: Matthias Clasen +AuthorDate: Mon May 27 22:05:19 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 27 22:05:19 2013 -0400 + + More test fixes for builddir != srcdir + + tests/Makefile.am | 1 + + tests/iochannel-test.c | 2 +- + tests/unicode-caseconv.c | 2 +- + tests/unicode-encoding.c | 2 +- + 4 files changed, 4 insertions(+), 3 deletions(-) + +commit 98a921045cf16cb927eae2fd13a5f025cfb76365 +Author: Matthias Clasen +AuthorDate: Mon May 27 21:20:10 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 27 21:21:55 2013 -0400 + + Fix make check with builddir != srcdir + + This broke when the tests were converted to be installable. + My apologies. + + gio/tests/Makefile.am | 1 + + gio/tests/appinfo.c | 16 ++++++++++------ + gio/tests/gapplication.c | 11 ++++++++--- + gio/tests/gdbus-connection-loss.c | 2 +- + gio/tests/gdbus-connection-slow.c | 2 +- + gio/tests/gdbus-connection.c | 2 +- + gio/tests/gdbus-introspection.c | 8 ++++---- + gio/tests/gdbus-proxy-well-known-name.c | 2 +- + gio/tests/gdbus-proxy.c | 2 +- + gio/tests/gdbus-threading.c | 8 ++++---- + 10 files changed, 32 insertions(+), 22 deletions(-) + +commit 4ec32e6fa827a97c4d7fd8a8b00126d52a604319 +Author: Colin Walters +AuthorDate: Mon May 27 19:30:31 2013 -0400 +Commit: Colin Walters +CommitDate: Mon May 27 19:30:31 2013 -0400 + + gio/tests: Make gdbus-proxy-well-known-name handle srcdir != builddir + + gio/tests/gdbus-proxy-well-known-name.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 7336a1e745907104ec7fab9f2086c2fc93ef8b9d +Author: Ryan Lortie +AuthorDate: Mon May 27 18:34:33 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon May 27 18:34:53 2013 -0400 + + Fix yet more test regressions... + + gio/tests/gdbus-connection-slow.c | 10 +++++----- + gio/tests/gdbus-proxy.c | 10 +++++----- + 2 files changed, 10 insertions(+), 10 deletions(-) + +commit 42139d463721aff623041eb3e016aae263b01a8b +Author: Ryan Lortie +AuthorDate: Mon May 27 18:30:53 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon May 27 18:34:53 2013 -0400 + + One more broken test.... + + gio/tests/gdbus-connection-loss.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 8f87d428a6c8c91aaa47daaaff2d843b6536a88c +Author: Ryan Lortie +AuthorDate: Mon May 27 18:27:14 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon May 27 18:27:26 2013 -0400 + + More srcdir != destdir tests fallout + + gio/tests/resources.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +commit aa3db2c91b254250a84b8c8e07eb3da96fbf74aa +Author: Ryan Lortie +AuthorDate: Mon May 27 18:05:09 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon May 27 18:12:54 2013 -0400 + + tests: fix a srcdir vs. destdir issue + + The target file is a script, so it'll always be in SRCDIR for the + uninstalled + case. Just look there and avoid the libtool trickery. + + glib/tests/spawn-singlethread.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +commit ad2716bb1aa202bd6d25ab8bdafb09fd3bcc8c22 +Author: ManojKumar Giri +AuthorDate: Mon May 27 18:09:17 2013 +0530 +Commit: ManojKumar Giri +CommitDate: Mon May 27 18:09:17 2013 +0530 + + Updated Odia Translation. + + po/or.po | 127 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 65 insertions(+), 62 deletions(-) + +commit 676a3d6ede64b6383d25706d514e7f4498474c96 +Author: Shantha kumar +AuthorDate: Mon May 27 15:31:22 2013 +0530 +Commit: Shantha kumar +CommitDate: Mon May 27 15:31:22 2013 +0530 + + Tamil Translation Updated + + po/ta.po | 127 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 65 insertions(+), 62 deletions(-) + +commit 0d55c4aaf8c6671387dee287da7574ae25fb9983 +Author: Chun-wei Fan +AuthorDate: Mon May 27 15:57:54 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon May 27 15:58:54 2013 +0800 + + Fix the GObject Visual Studio Projects + + Update G_LOG_DOMAIN to be "GLib-GObject" so that we are consistent + with + the autotools builds, and that tests expecting the log domain to be + "GLib-GObject" would not fail. + + build/win32/vs10/gobject.vcxprojin | 8 ++++---- + build/win32/vs9/gobject.vcprojin | 8 ++++---- + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit 524470d8e02c7da867cf61dff86de1105067bebb +Author: Chun-wei Fan +AuthorDate: Mon May 27 13:23:58 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon May 27 13:23:58 2013 +0800 + + Fix the GLib Visual Studio Projects + + Define the G_LOG_DOMAIN of the GLib DLL as "GLib", because: + -This makes it consistent with the autotools builds + -Some tests expect the log domain to be "GLib" + + build/win32/vs10/glib.vcxprojin | 16 ++++++++-------- + build/win32/vs9/glib.vcprojin | 16 ++++++++-------- + 2 files changed, 16 insertions(+), 16 deletions(-) + +commit 80985d1c05e58f63252b1b108e8637808a2f3e4c +Author: Chun-wei Fan +AuthorDate: Mon May 27 12:49:47 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon May 27 12:50:37 2013 +0800 + + Update config.h.win32(.in) + + Make the entries of config.h.win32(.in) consistent with the entries + that are generated from the autotools build (config.h.in). + + config.h.win32.in | 25 ++++++++++++------------- + 1 file changed, 12 insertions(+), 13 deletions(-) + +commit b382c6f63339397c338aa68ad939894665368ada +Author: Matthias Clasen +AuthorDate: Sat May 25 23:07:03 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 25 23:15:36 2013 -0400 + + Avoid a segfault in gdbus tool + + When the interface name is invalid, we don't get an error + back from g_dbus_connection_call_sync. + + gio/gdbus-tool.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit 0b167b0ae964fcd999ccf8a9fdc41804df936a28 +Author: Colin Walters +AuthorDate: Fri May 24 22:16:44 2013 +0100 +Commit: Colin Walters +CommitDate: Fri May 24 22:16:44 2013 +0100 + + build: Fix usage of %.test again + + We actually need the first dependency because it includes the + final executable name. Rather, fix the original bug by using + the variable $(EXEEXT). + + gio/tests/Makefile.am | 2 +- + glib/tests/Makefile.am | 2 +- + gobject/tests/Makefile.am | 2 +- + tests/Makefile.am | 2 +- + tests/gobject/Makefile.am | 2 +- + 5 files changed, 5 insertions(+), 5 deletions(-) + +commit 5088c705ac5ce118502d0c6ea74aca1cec26b575 +Author: Colin Walters +AuthorDate: Fri May 24 15:42:12 2013 -0400 +Commit: Colin Walters +CommitDate: Fri May 24 16:30:21 2013 -0400 + + tests: Drop unnecessary % from .test pattern match rule + + On Windows, the executables will have .exe, so this won't + match. Furthermore, they aren't actually dependent on the + executable to build. + + gio/tests/Makefile.am | 2 +- + glib/tests/Makefile.am | 2 +- + gobject/tests/Makefile.am | 2 +- + tests/Makefile.am | 2 +- + tests/gobject/Makefile.am | 2 +- + 5 files changed, 5 insertions(+), 5 deletions(-) + +commit b85e8e5bfb3f0cb86411cc5d8b038c5af1404f1c +Author: Daniel Mustieles +AuthorDate: Fri May 24 13:57:47 2013 +0200 +Commit: Daniel Mustieles +CommitDate: Fri May 24 13:57:47 2013 +0200 + + Updated Spanish translation + + po/es.po | 286 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 145 insertions(+), 141 deletions(-) + +commit a2a6122bb62f3536f59156170f334df4f8741842 +Author: Nilamdyuti Goswami +AuthorDate: Fri May 24 17:28:12 2013 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Fri May 24 17:28:12 2013 +0530 + + Assamese translation updated + + po/as.po | 290 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 147 insertions(+), 143 deletions(-) + +commit fc6f6a4330e72bd4155ca0b491136ff61b477294 +Author: Sweta Kothari +AuthorDate: Fri May 24 13:21:27 2013 +0530 +Commit: Sweta Kothari +CommitDate: Fri May 24 13:21:27 2013 +0530 + + Updated Gujarati Translations + + po/gu.po | 290 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 147 insertions(+), 143 deletions(-) + +commit ec61deb79116c8b2364ef070f98ac9a222249f0c +Author: Simon Kågedal Reimer +AuthorDate: Mon May 6 22:04:32 2013 +0200 +Commit: Matthias Clasen +CommitDate: Thu May 23 22:14:59 2013 -0400 + + G_GNUC_FORMAT: documentation error + + Attribute should be placed just before the semicolon, not after. + As can be seen in the example. + + https://bugzilla.gnome.org/show_bug.cgi?id=699779 + + glib/docs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 47d96381a2f52587f8706ffa115b2379d6ca731e +Author: Jason L. Quinn +AuthorDate: Thu Apr 11 23:43:17 2013 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 23 22:11:50 2013 -0400 + + spelling fixes of 'runtine' and 'adresses' in cross.xml and + running.xml, respectively + + https://bugzilla.gnome.org/show_bug.cgi?id=697849 + + docs/reference/glib/cross.xml | 2 +- + docs/reference/glib/running.xml | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 3d1d49177bc577e4c0d4ec2d73b96db09e4d5be3 +Author: Ryan Lortie +AuthorDate: Thu Feb 21 17:48:04 2013 +0000 +Commit: Matthias Clasen +CommitDate: Thu May 23 21:50:54 2013 -0400 + + gsignal: remove some pointless locking + + We previously hold a lock in the loop that collects the arguments for + g_signal_emit(), which we drop before calling into the argument + collection functions and reacquire again at the bottom of the loop + (ie: + one release/acquire pair for each argument collected). To make + matters + worse, the lock is just released again after the loop. + + Presumably that was done to protect the access to the parameter array, + but it's pretty unlikely that this is needed because the only way it + changes is if the signal is unloaded. That only happens when + unloading + types which is quite unlikely to happen while we are emitting on an + instance of that type (and, as an aside, never happens anymore + anyway). + + If we move the unlock below the loop up above it and remove the + acquire/release pair from the loop, we improve performance in the new + arg-collecting performance tests by ~15% (more like ~18% in the case + where we only emit to one handler -- where argument collection + dominates + more). + + https://bugzilla.gnome.org/show_bug.cgi?id=694380 + + gobject/gsignal.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 8bb6a4aec5dbc7535244a0fa2b96b728eebe75cc +Author: Ryan Lortie +AuthorDate: Thu Feb 21 17:47:08 2013 +0000 +Commit: Matthias Clasen +CommitDate: Thu May 23 21:50:53 2013 -0400 + + performance test: add signal test with args + + Add a signal that has some typical arguments (a uint and a pointer) + since all of the other signal performance tests are for signals + with no + args. + + https://bugzilla.gnome.org/show_bug.cgi?id=694380 + + tests/gobject/performance.c | 45 + +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 45 insertions(+) + +commit 4b72bbf9b18a698555bb2aa914b9ab5fd0a4e5f3 +Author: Ryan Lortie +AuthorDate: Thu Feb 21 17:44:56 2013 +0000 +Commit: Matthias Clasen +CommitDate: Thu May 23 21:50:52 2013 -0400 + + performance test: share some code + + The handled and unhandled cases share the same data and _run() + functions. Refactor into a common section. + + https://bugzilla.gnome.org/show_bug.cgi?id=694380 + + tests/gobject/performance.c | 62 + ++++++++++++++++++--------------------------- + 1 file changed, 25 insertions(+), 37 deletions(-) + +commit 7427e2295812b7512478d76a4424b32ec977523a +Author: Elisabeth Henry +AuthorDate: Mon Apr 1 04:11:01 2013 +0200 +Commit: Matthias Clasen +CommitDate: Thu May 23 21:48:28 2013 -0400 + + gunixconnection: added ngettext to support plural forms + + While those strings ("Expecting 1 control message, got %d" and + "Expecting one fd, but got %d\n") have same singular/plural form + in english, it is not necessarily the case in other languages. + + https://bugzilla.gnome.org/show_bug.cgi?id=695233 + + gio/gunixconnection.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +commit 7fc2ab9493dbb480e2b6815813af9cf8bbfc081e +Author: Colin Walters +AuthorDate: Thu May 9 18:47:50 2013 +0100 +Commit: Colin Walters +CommitDate: Thu May 23 23:11:58 2013 +0100 + + GLocalFileOutputStream: Further deduplicate error code path + + Just code cleanup. + + https://bugzilla.gnome.org/699959 + + gio/glocalfileoutputstream.c | 56 + +++++++++++++++++++------------------------- + 1 file changed, 24 insertions(+), 32 deletions(-) + +commit 5e65cd4e5153b340a25a8ffb580cf5f23f54d649 +Author: Colin Walters +AuthorDate: Thu May 9 18:39:50 2013 +0100 +Commit: Colin Walters +CommitDate: Thu May 23 23:10:44 2013 +0100 + + GLocalFileOutputStream: Deduplicate stream creation code + + Lots of copy/paste of the error handling path, let's deduplicate + so I can sanely patch this code later. + + https://bugzilla.gnome.org/699959 + + gio/glocalfileoutputstream.c | 103 + +++++++++++++------------------------------ + 1 file changed, 31 insertions(+), 72 deletions(-) + +commit 49030c8797d5a415e2cb94a3c658f67206cb8bf5 +Author: Colin Walters +AuthorDate: Wed May 22 17:41:32 2013 +0100 +Commit: Colin Walters +CommitDate: Thu May 23 10:11:21 2013 -0400 + + gdbus-peer: Drop some usage of g_thread_yield() + + It's a recipe for race conditions and error; on some hardware + architectures one thread isn't guaranteed to see the results + of writes from another thread without a cache flush. + + https://bugzilla.gnome.org/show_bug.cgi?id=700855 + + gio/tests/gdbus-peer.c | 66 + ++++++++++++++++++++++++++++++++------------------ + 1 file changed, 43 insertions(+), 23 deletions(-) + +commit ff8f37ac05490c67fc3be5e87ff5756f1a275da3 +Author: Colin Walters +AuthorDate: Thu May 23 01:07:13 2013 +0100 +Commit: Colin Walters +CommitDate: Thu May 23 01:11:26 2013 +0100 + + glib/tests/cond: Fix race condition + + The producer could push two values with the first one being + lost. Fix this by blocking the producer until a consumer + reads. + + glib/tests/cond.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 9115dd0a7ce31f69f78aca0b0b32d7d2e4670be3 +Author: Dan Winship +AuthorDate: Wed May 22 14:20:08 2013 -0300 +Commit: Dan Winship +CommitDate: Wed May 22 14:25:50 2013 -0300 + + gtestutils: Use stdio rather than write() to be Windows-friendly + + Windows doesn't define STDOUT_FILENO and STDERR_FILENO, and they're + not even guaranteed to be 1 and 2. So just use stdio instead. Also fix + a counting error. Pointed out on gtk-devel-list. + + glib/gtestutils.c | 15 ++++++--------- + 1 file changed, 6 insertions(+), 9 deletions(-) + +commit c9cc0beb3a8c298b843efdb71822a71cc078a8ac +Author: Josep Puigdemont +AuthorDate: Tue May 21 16:46:25 2013 +0200 +Commit: Colin Walters +CommitDate: Tue May 21 11:18:08 2013 -0400 + + Timeout the test if dbus sevice has not appeared in due time. + + The test /gdbus/connection/large_message waits for a dbus name + to appear. + The dbus name is created by a another process executed in the + background. + If for some reason this fails, the test will likely wait forever. + This will avoid this situation by making the test fail if the + dbus service + has not appeared after 10 seconds. + + https://bugzilla.gnome.org/show_bug.cgi?id=698981 + + gio/tests/gdbus-connection-slow.c | 21 ++++++++++++++++++++- + 1 file changed, 20 insertions(+), 1 deletion(-) + +commit 4edc2f1a9330006a5d615bc16264b5328da6fe66 +Author: Dan Winship +AuthorDate: Tue May 21 09:52:32 2013 -0300 +Commit: Dan Winship +CommitDate: Tue May 21 11:39:11 2013 -0300 + + po: update for quote changes + + https://bugzilla.gnome.org/show_bug.cgi?id=700746 + + po/af.po | 146 +++++++++++++------------- + po/am.po | 146 +++++++++++++------------- + po/an.po | 142 ++++++++++++------------- + po/ar.po | 146 +++++++++++++------------- + po/as.po | 158 ++++++++++++++-------------- + po/ast.po | 146 +++++++++++++------------- + po/az.po | 173 +++++++++++++++--------------- + po/be.po | 142 ++++++++++++------------- + po/be@latin.po | 146 +++++++++++++------------- + po/bg.po | 142 ++++++++++++------------- + po/bn.po | 146 +++++++++++++------------- + po/bn_IN.po | 146 +++++++++++++------------- + po/bs.po | 151 +++++++++++++------------- + po/ca.po | 153 +++++++++++++-------------- + po/ca@valencia.po | 153 +++++++++++++-------------- + po/cs.po | 148 +++++++++++++------------- + po/cy.po | 149 +++++++++++++------------- + po/da.po | 153 +++++++++++++-------------- + po/de.po | 148 +++++++++++++------------- + po/dz.po | 149 +++++++++++++------------- + po/el.po | 308 + ++++++++++++++++++++++++++--------------------------- + po/en@shaw.po | 146 +++++++++++++------------- + po/en_CA.po | 288 + +++++++++++++++++++++++++------------------------- + po/en_GB.po | 303 + ++++++++++++++++++++++++++-------------------------- + po/eo.po | 298 + ++++++++++++++++++++++++++-------------------------- + po/es.po | 158 ++++++++++++++-------------- + po/et.po | 156 +++++++++++++-------------- + po/eu.po | 152 +++++++++++++-------------- + po/fa.po | 143 +++++++++++++------------ + po/fi.po | 140 ++++++++++++------------- + po/fr.po | 142 ++++++++++++------------- + po/ga.po | 146 +++++++++++++------------- + po/gl.po | 156 +++++++++++++-------------- + po/gu.po | 278 ++++++++++++++++++++++++------------------------ + po/he.po | 293 + +++++++++++++++++++++++++-------------------------- + po/hi.po | 266 +++++++++++++++++++++++----------------------- + po/hr.po | 146 +++++++++++++------------- + po/hu.po | 142 ++++++++++++------------- + po/hy.po | 290 + +++++++++++++++++++++++++------------------------- + po/id.po | 148 +++++++++++++------------- + po/is.po | 151 +++++++++++++------------- + po/it.po | 142 ++++++++++++------------- + po/ja.po | 156 +++++++++++++-------------- + po/ka.po | 146 +++++++++++++------------- + po/kk.po | 148 +++++++++++++------------- + po/kn.po | 252 ++++++++++++++++++++++---------------------- + po/ko.po | 280 ++++++++++++++++++++++++------------------------- + po/ku.po | 146 +++++++++++++------------- + po/lt.po | 144 ++++++++++++------------- + po/lv.po | 155 ++++++++++++++------------- + po/mai.po | 146 +++++++++++++------------- + po/mg.po | 146 +++++++++++++------------- + po/mk.po | 146 +++++++++++++------------- + po/ml.po | 172 +++++++++++++++--------------- + po/mn.po | 149 +++++++++++++------------- + po/mr.po | 290 + +++++++++++++++++++++++++------------------------- + po/ms.po | 151 +++++++++++++------------- + po/nb.po | 142 ++++++++++++------------- + po/nds.po | 146 +++++++++++++------------- + po/ne.po | 148 +++++++++++++------------- + po/nl.po | 150 +++++++++++++------------- + po/nn.po | 140 ++++++++++++------------- + po/oc.po | 146 +++++++++++++------------- + po/or.po | 264 +++++++++++++++++++++++----------------------- + po/pa.po | 284 ++++++++++++++++++++++++------------------------- + po/pl.po | 142 ++++++++++++------------- + po/ps.po | 146 +++++++++++++------------- + po/pt.po | 309 + +++++++++++++++++++++++++++--------------------------- + po/pt_BR.po | 150 +++++++++++++------------- + po/ro.po | 152 +++++++++++++-------------- + po/ru.po | 146 +++++++++++++------------- + po/rw.po | 150 +++++++++++++------------- + po/si.po | 146 +++++++++++++------------- + po/sk.po | 142 ++++++++++++------------- + po/sl.po | 288 + +++++++++++++++++++++++++------------------------- + po/sq.po | 146 +++++++++++++------------- + po/sr.po | 142 ++++++++++++------------- + po/sr@ije.po | 149 +++++++++++++------------- + po/sr@latin.po | 142 ++++++++++++------------- + po/sv.po | 150 +++++++++++++------------- + po/ta.po | 282 ++++++++++++++++++++++++------------------------- + po/te.po | 286 + +++++++++++++++++++++++++------------------------- + po/tg.po | 144 ++++++++++++------------- + po/th.po | 281 ++++++++++++++++++++++++------------------------- + po/tl.po | 149 +++++++++++++------------- + po/tr.po | 288 + +++++++++++++++++++++++++------------------------- + po/tt.po | 146 +++++++++++++------------- + po/ug.po | 270 +++++++++++++++++++++++------------------------ + po/uk.po | 146 +++++++++++++------------- + po/vi.po | 280 ++++++++++++++++++++++++------------------------- + po/wa.po | 149 +++++++++++++------------- + po/xh.po | 152 +++++++++++++-------------- + po/yi.po | 149 +++++++++++++------------- + po/zh_CN.po | 148 +++++++++++++------------- + po/zh_HK.po | 152 +++++++++++++-------------- + po/zh_TW.po | 152 +++++++++++++-------------- + 96 files changed, 8511 insertions(+), 8585 deletions(-) + +commit 4b94c0831e449374ce769cb4938a28b3dca59a43 +Author: Dan Winship +AuthorDate: Mon May 20 17:54:48 2013 -0300 +Commit: Dan Winship +CommitDate: Tue May 21 11:23:22 2013 -0300 + + Use 'dumb quotes' rather than `really dumb quotes' + + Back in the far-off twentieth century, it was normal on unix + workstations for U+0060 GRAVE ACCENT to be drawn as "‛" and + for U+0027 + APOSTROPHE to be drawn as "’". This led to the convention of using + them as poor-man's ‛smart quotes’ in ASCII-only text. + + However, "'" is now universally drawn as a vertical line, and "`" at a + 45-degree angle, making them an `odd couple' when used together. + + Unfortunately, there are lots of very old strings in glib, and also + lots of new strings in which people have kept up the old tradition, + perhaps entirely unaware that it used to not look stupid. + + Fix this by just using 'dumb quotes' everywhere. + + https://bugzilla.gnome.org/show_bug.cgi?id=700746 + + gio/gapplicationimpl-dbus.c | 2 +- + gio/gdbus-2.0/codegen/codegen.py | 2 +- + gio/gdbus-tool.c | 24 ++--- + gio/gdbusaddress.c | 60 ++++++------ + gio/gdbusauth.c | 82 ++++++++--------- + gio/gdbusauthmechanismanon.c | 2 +- + gio/gdbusauthmechanismsha1.c | 42 ++++----- + gio/gdbusconnection.c | 44 ++++----- + gio/gdbusmessage.c | 26 +++--- + gio/gdbusmethodinvocation.c | 4 +- + gio/gdbusproxy.c | 6 +- + gio/gdbusserver.c | 6 +- + gio/gicon.c | 6 +- + gio/glib-compile-schemas.c | 16 ++-- + gio/gsettings.c | 36 ++++---- + gio/gsettingsschema.c | 6 +- + gio/kqueue/dep-list.c | 6 +- + gio/kqueue/kqueue-thread.c | 2 +- + gio/tests/gdbus-example-subtree.c | 6 +- + gio/tests/gdbus-export.c | 24 ++--- + gio/tests/gdbus-non-socket.c | 4 +- + gio/tests/gdbus-serialization.c | 32 +++---- + gio/tests/gdbus-test-codegen.c | 4 +- + gio/tests/gdbus-tests.h | 4 +- + glib/gcharset.c | 8 +- + glib/gchecksum.c | 2 +- + glib/gdate.c | 4 +- + glib/gfileutils.c | 4 +- + glib/glib-mirroring-tab/gen-mirroring-tab.c | 6 +- + glib/gmessages.c | 4 +- + glib/gmessages.h | 4 +- + glib/gnode.h | 8 +- + glib/gscanner.c | 20 ++-- + glib/gscanner.h | 4 +- + glib/gspawn.c | 8 +- + glib/gtester-report | 2 +- + glib/gunicode.h | 2 +- + glib/gutils.c | 6 +- + glib/gutils.h | 4 +- + glib/gvariant-parser.c | 14 +-- + glib/gvariant.c | 28 +++--- + glib/tests/gvariant.c | 40 ++++---- + glib/tests/markup-collect.c | 2 +- + gmodule/gmodule-beos.c | 2 +- + gmodule/gmodule-win32.c | 2 +- + gmodule/gmodule.c | 2 +- + gmodule/gmodule.h | 8 +- + gobject/gboxed.c | 4 +- + gobject/genums.c | 2 +- + gobject/gobject.c | 50 +++++----- + gobject/gobject.h | 2 +- + gobject/gparam.c | 10 +- + gobject/gsignal.c | 108 +++++++++++----------- + gobject/gtype.c | 136 + ++++++++++++++-------------- + gobject/gvalue.c | 6 +- + gobject/gvaluetypes.c | 20 ++-- + tests/testgdateparser.c | 8 +- + 57 files changed, 488 insertions(+), 488 deletions(-) + +commit 52f6a7d16250d2b180c83cce8929f3e14972e1a9 +Author: Dan Winship +AuthorDate: Tue May 21 11:21:36 2013 -0300 +Commit: Dan Winship +CommitDate: Tue May 21 11:21:36 2013 -0300 + + tests: fix a few recently-broken tests + + tests/gobject/Makefile.am | 1 + + tests/module-test.c | 3 --- + tests/run-assert-msg-test.sh | 4 ++-- + 3 files changed, 3 insertions(+), 5 deletions(-) + +commit bb1a5ca9a8488bbbfc06f961e2275c36b354ed3b +Author: Colin Walters +AuthorDate: Tue May 21 09:21:21 2013 -0400 +Commit: Colin Walters +CommitDate: Tue May 21 09:21:21 2013 -0400 + + gio/tests: Fix gdbus-connection when run from "make check" + + gio/tests/Makefile.am | 1 + + gio/tests/gdbus-connection.c | 12 ++++++++---- + 2 files changed, 9 insertions(+), 4 deletions(-) + +commit 7ff5c082213c13c893f583f2bce77fa63a146af2 +Author: Matthias Clasen +AuthorDate: Mon May 20 21:05:56 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 20 23:41:49 2013 -0400 + + Convert more tests to installed tests + + This makes the tests in tests installed, except for + the performance tests. + + tests/Makefile.am | 33 +++++++++++++++++++++++++++++++-- + tests/gobject/Makefile.am | 8 +++++--- + tests/iochannel-test.c | 12 ++++++++---- + tests/module-test.c | 13 ++++++++----- + tests/unicode-caseconv.c | 9 ++++++--- + tests/unicode-encoding.c | 6 ++++-- + 6 files changed, 62 insertions(+), 19 deletions(-) + +commit 1808888a1f543276f83d65ef41a5cadb5f31c388 +Author: Matthias Clasen +AuthorDate: Mon May 20 21:05:56 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 20 21:05:56 2013 -0400 + + Convert more tests to installed tests + + tests/gobject/Makefile.am | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit c26e253b1090d529097ccd3c744f865977d3703f +Author: Colin Walters +AuthorDate: Tue May 21 00:12:31 2013 +0100 +Commit: Colin Walters +CommitDate: Tue May 21 00:12:31 2013 +0100 + + gio/tests: gsettings is a developer-only test + + It tries to run glib-compile-schemas and glib-mkenums, which + we won't have in the runtime tree. + + Anyways it's kind of a dumb test since the best test for + compilation tools is...compiling things, which we already + do frequently. + + gio/tests/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit f2a9a6142c7187b6dd700728ecfa5ea094ad6096 +Author: Colin Walters +AuthorDate: Tue May 21 00:07:18 2013 +0100 +Commit: Colin Walters +CommitDate: Tue May 21 00:07:18 2013 +0100 + + gmessages: Fix up testing commit to handle fatal masquerading + + This makes glib/tests/testing pass again. + + glib/gmessages.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c12538a9c0693d9204bee0ef43dc505a52c55ba2 +Author: Colin Walters +AuthorDate: Tue May 21 00:02:39 2013 +0100 +Commit: Colin Walters +CommitDate: Tue May 21 00:02:39 2013 +0100 + + gio/tests: Disable desktop-app-info test in installed mode for now + + It wants a writable copy of the applications, and appears to + depend on a prior execution of "mimeapps". This will take + a bit of work to untangle. + + gio/tests/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 3d7fcc23c154824a0377ceea07a1d3b18bcd3874 +Author: Colin Walters +AuthorDate: Mon May 20 21:50:28 2013 +0100 +Commit: Colin Walters +CommitDate: Mon May 20 21:50:28 2013 +0100 + + gio/tests: Make gdbus-peer work in installed mode + + There's no /etc/hosts in gnome-ostree... + + gio/tests/gdbus-peer.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +commit 7ee44da5cf7fc5c7bee18c29287d8f062f045c67 +Author: Colin Walters +AuthorDate: Mon May 20 21:43:52 2013 +0100 +Commit: Colin Walters +CommitDate: Mon May 20 21:43:52 2013 +0100 + + gio/tests: Fix gapplication test in installed mode + + gio/tests/gapplication.c | 28 ++++++++++++++++++++++------ + 1 file changed, 22 insertions(+), 6 deletions(-) + +commit 1a398b2e564e4ba8a42ca4865d49233b5b4a0c95 +Author: Colin Walters +AuthorDate: Mon May 20 21:33:00 2013 +0100 +Commit: Colin Walters +CommitDate: Mon May 20 21:33:00 2013 +0100 + + gio/tests: Some more fixes for installed tests + + file passes now, appinfo needs a bit more work, but is getting + there. + + gio/tests/Makefile.am | 23 +++++++++++++++++++---- + gio/tests/appinfo.c | 3 ++- + gio/tests/file.c | 16 ++++++++++++++-- + 3 files changed, 35 insertions(+), 7 deletions(-) + +commit bdf383dcd6c3adc657c35ef499f4739509da6eb1 +Author: Colin Walters +AuthorDate: Mon May 20 20:15:43 2013 +0100 +Commit: Colin Walters +CommitDate: Mon May 20 20:15:43 2013 +0100 + + gio/tests: Deduplicate Makefile.am a bit + + We can just add all the static test data to EXTRA_DIST. + + gio/tests/Makefile.am | 8 +------- + 1 file changed, 1 insertion(+), 7 deletions(-) + +commit 714cbbea52f0d08b6a4a4588329128a5172e8e92 +Author: Colin Walters +AuthorDate: Mon May 20 14:31:48 2013 +0100 +Commit: Colin Walters +CommitDate: Mon May 20 19:07:55 2013 +0100 + + gtestutils: Ensure test subprocesses don't dump core + + Since we expect them to crash, let's not spam the system + core dump collection (systemd, abrt). At the moment + systemd is not very robust against programs crashing + in loops. + + Instead of aborting, we exit(1). + + https://bugzilla.gnome.org/show_bug.cgi?id=700714 + + glib/Makefile.am | 1 + + glib/gmessages-private.h | 35 +++++++++++++++++++++++++++++++++++ + glib/gmessages.c | 27 ++++++++++++++++++++++++--- + glib/gtestutils.c | 18 +++++++++++++++++- + 4 files changed, 77 insertions(+), 4 deletions(-) + +commit 9038e2263827a4323be81a8f199afb87eef07587 +Author: Kjartan Maraas +AuthorDate: Mon May 20 14:51:04 2013 +0200 +Commit: Kjartan Maraas +CommitDate: Mon May 20 14:51:04 2013 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 292 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 150 insertions(+), 142 deletions(-) + +commit 142d78214d42905fd9af195265b9bda85f6a36a8 +Author: Matthias Clasen +AuthorDate: Mon May 20 08:46:21 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 20 08:46:21 2013 -0400 + + Convert remaining gio tests to installed + + gio/tests/Makefile.am | 32 ++++++---- + gio/tests/appinfo.c | 104 + +++++++++++++++++++++++++------- + gio/tests/gdbus-connection-loss.c | 12 +++- + gio/tests/gdbus-connection-slow.c | 17 +++++- + gio/tests/gdbus-connection.c | 13 +++- + gio/tests/gdbus-introspection.c | 12 +++- + gio/tests/gdbus-proxy-well-known-name.c | 17 +++++- + gio/tests/gdbus-proxy.c | 18 +++++- + gio/tests/gdbus-threading.c | 12 +++- + 9 files changed, 194 insertions(+), 43 deletions(-) + +commit 5e1f9173c397a04eca97a11d962fce824a2234a3 +Author: Matthias Clasen +AuthorDate: Mon May 20 06:38:41 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 20 06:38:41 2013 -0400 + + Convert some gio tests to installed tests + + gio/tests/Makefile.am | 220 + +++++++++++++++++++++++-------------- + gio/tests/cert-key.pem | 32 ------ + gio/tests/cert-list.pem | 52 --------- + gio/tests/cert-tests/cert-key.pem | 32 ++++++ + gio/tests/cert-tests/cert-list.pem | 52 +++++++++ + gio/tests/cert-tests/cert1.pem | 17 +++ + gio/tests/cert-tests/cert2.pem | 17 +++ + gio/tests/cert-tests/cert3.pem | 17 +++ + gio/tests/cert-tests/key-cert.pem | 32 ++++++ + gio/tests/cert-tests/key.pem | 15 +++ + gio/tests/cert-tests/key8.pem | 16 +++ + gio/tests/cert-tests/nothing.pem | 0 + gio/tests/cert1.pem | 17 --- + gio/tests/cert2.pem | 17 --- + gio/tests/cert3.pem | 17 --- + gio/tests/contexts.c | 16 ++- + gio/tests/g-icon.c | 14 ++- + gio/tests/gschema-compile.c | 17 ++- + gio/tests/gsettings.c | 49 ++++++--- + gio/tests/key-cert.pem | 32 ------ + gio/tests/key.pem | 15 --- + gio/tests/key8.pem | 16 --- + gio/tests/nothing.pem | 0 + gio/tests/resources.c | 42 ++++--- + gio/tests/tls-certificate.c | 100 ++++++++++++----- + 25 files changed, 510 insertions(+), 344 deletions(-) + +commit f66016261a3db69fd14b8f3821123aad82d651e2 +Author: Matthias Clasen +AuthorDate: Sun May 19 21:49:51 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 19 21:49:51 2013 -0400 + + Make gobject tests installable + + This makes the gobject tests run as part of the ostree integration + tests. + + gobject/tests/Makefile.am | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit 6c3cf6dc18d9fc0a80e732406ac31a71acab09a6 +Author: Milo Casagrande +AuthorDate: Sun May 19 13:30:46 2013 +0200 +Commit: Milo Casagrande +CommitDate: Sun May 19 13:30:46 2013 +0200 + + [l10n] Updated Italian translation. + + po/it.po | 236 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 120 insertions(+), 116 deletions(-) + +commit ad7959c5b7d484c7d819a15f61cad46b6fab8cfd +Author: Colin Walters +AuthorDate: Mon May 6 09:47:00 2013 -0400 +Commit: Colin Walters +CommitDate: Thu May 16 08:51:57 2013 -0400 + + Add --enable-installed-tests configure option + + See https://live.gnome.org/GnomeGoals/InstalledTests for more + information. + + The tests now support being run both uninstalled and installed, so + 'make check' works for those who want it. For tests which need data + files, the way this works is they look in the compiled in value of + SRCDIR by default, and the generated tests use "env G_TEST_DATA=" to + override that. + + This patch only converts glib/tests for now; if this patch looks good, + I'll do the rest of the tests. + + https://bugzilla.gnome.org/show_bug.cgi?id=699079 + + .gitignore | 1 + + configure.ac | 7 ++++++- + glib/tests/Makefile.am | 49 + ++++++++++++++++++++++++++++++++++++++++------- + glib/tests/bookmarkfile.c | 11 +++++++++-- + glib/tests/keyfile.c | 19 +++++++++++++++--- + glib/tests/mappedfile.c | 26 ++++++++++++++++++++----- + glib/tests/markup-parse.c | 12 ++++++++++-- + glib/tests/protocol.c | 8 ++++++-- + 8 files changed, 111 insertions(+), 22 deletions(-) + +commit 91d7c8de6bfa4290006da992ea0ef604ff24b009 +Author: Colin Walters +AuthorDate: Mon May 6 09:24:25 2013 -0400 +Commit: Colin Walters +CommitDate: Thu May 16 08:51:57 2013 -0400 + + glib/tests: Drop unnecessary SRCDIR definitions + + It's always going to be defined, we don't support compiling these + tests "by hand". This is a cleanup commit for the installed tests + work. + + https://bugzilla.gnome.org/show_bug.cgi?id=699079 + + glib/tests/bookmarkfile.c | 4 ---- + glib/tests/keyfile.c | 4 ---- + glib/tests/markup-parse.c | 4 ---- + glib/tests/spawn-singlethread.c | 5 +---- + 4 files changed, 1 insertion(+), 16 deletions(-) + +commit 225d8fb97d4400a3417c32ee16ba3d1da570a010 +Author: Colin Walters +AuthorDate: Fri May 3 18:36:43 2013 -0400 +Commit: Colin Walters +CommitDate: Thu May 16 08:51:57 2013 -0400 + + glib/tests: Use explicit file listings + + This is a preparatory commit for installed tests work; having things + cleanly categorized helps. + + https://bugzilla.gnome.org/show_bug.cgi?id=699079 + + glib/tests/Makefile.am | 71 + ++++++++++++++++++++++++++++++------- + glib/tests/markup-parse.c | 10 +++--- + glib/tests/markups/fail-3.expected | 50 ++++++++++++++++++++++++++ + glib/tests/markups/fail-36.expected | 4 +++ + 4 files changed, 117 insertions(+), 18 deletions(-) + +commit 6e64bbe8de27ab72aa84dbe90c34f3a01eaadc15 +Author: Colin Walters +AuthorDate: Fri May 3 18:13:51 2013 -0400 +Commit: Colin Walters +CommitDate: Thu May 16 08:51:57 2013 -0400 + + glib/tests/mappedfile: Copy test file before writing to it + + This way we're *always* testing writability rather than only sometimes + doing it in the source directory. + + https://bugzilla.gnome.org/show_bug.cgi?id=699079 + + glib/tests/mappedfile.c | 53 + ++++++++++++++++++++++++++++++++----------------- + 1 file changed, 35 insertions(+), 18 deletions(-) + +commit 23f5d8b238bc104672e0ad967c916ca258acef06 +Author: Jorge Pérez Pérez +AuthorDate: Wed May 15 23:05:10 2013 +0200 +Commit: Daniel Martinez +CommitDate: Wed May 15 23:05:10 2013 +0200 + + Added Aragonese translation + + po/LINGUAS | 1 + + po/an.po | 4472 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 4473 insertions(+) + +commit c81a9556fffea3578aff3d53b4f1bc61c905c748 +Author: Adrian Bunk +AuthorDate: Tue May 14 01:48:37 2013 +0300 +Commit: Colin Walters +CommitDate: Wed May 15 15:43:50 2013 -0400 + + m4macros/glib-gettext.m4: Don't use AC_HEADER_STDC + + AC_HEADER_STDC is obsolete (pre-C89 headers are no longer an issue), + and the resulting STDC_HEADERS define is anyway not used. + + https://bugzilla.gnome.org/show_bug.cgi?id=700263 + + m4macros/glib-gettext.m4 | 1 - + 1 file changed, 1 deletion(-) + +commit 216725f0ae31f193c57244df3c4d11dcb46d790b +Author: Shankar Prasad +AuthorDate: Tue May 14 15:26:07 2013 +0530 +Commit: Shankar Prasad +CommitDate: Tue May 14 15:26:07 2013 +0530 + + updated kn translations + + po/kn.po | 395 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 192 insertions(+), 203 deletions(-) + +commit e195490a879e6fcdd5b861629fadd6b7e652237b +Author: Dan Winship +AuthorDate: Mon May 13 11:47:12 2013 -0400 +Commit: Dan Winship +CommitDate: Mon May 13 12:10:53 2013 -0400 + + tests/slice: use G_GNUC_BEGIN_IGNORE_DEPRECATIONS + + rather than implementing it by hand + + glib/tests/slice.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit eebb3c1c8e09d122f049edb762c9a13199f3b1e9 +Author: Dan Winship +AuthorDate: Mon May 13 11:38:53 2013 -0400 +Commit: Dan Winship +CommitDate: Mon May 13 12:10:53 2013 -0400 + + gtestutils: use g_clear_pointer + + glib/gtestutils.c | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +commit e9284ed29731365415992d8c9ed72f10e67cf056 +Author: Dan Winship +AuthorDate: Wed Dec 5 11:28:53 2012 -0500 +Commit: Dan Winship +CommitDate: Mon May 13 12:10:53 2013 -0400 + + gtestutils: deprecate g_test_trap_fork() + + https://bugzilla.gnome.org/show_bug.cgi?id=679683 + + gio/tests/gdbus-non-socket.c | 2 ++ + glib/gtestutils.c | 6 ++++-- + glib/gtestutils.h | 3 ++- + glib/tests/testing.c | 6 ++++++ + 4 files changed, 14 insertions(+), 3 deletions(-) + +commit e3d1869ee3b6e269b80723173dc4f85c7cc3eaea +Author: Dan Winship +AuthorDate: Sat Nov 24 15:58:36 2012 -0500 +Commit: Dan Winship +CommitDate: Mon May 13 12:10:52 2013 -0400 + + tests: port from g_test_trap_subprocess() to g_test_trap_fork() + + https://bugzilla.gnome.org/show_bug.cgi?id=679683 + + gio/tests/gdbus-exit-on-close.c | 137 +++++++------ + gio/tests/gdbus-non-socket.c | 1 + + gio/tests/gdbus-proxy.c | 20 +- + gio/tests/gschema-compile.c | 50 +++-- + gio/tests/gsettings.c | 422 + ++++++++++++++++++++++++++-------------- + glib/tests/array-test.c | 27 +-- + glib/tests/dataset.c | 22 ++- + glib/tests/gvariant.c | 79 +++++--- + glib/tests/list.c | 35 ++-- + glib/tests/logging.c | 215 +++++++++++--------- + glib/tests/mem-overflow.c | 143 +++++++++----- + glib/tests/option-context.c | 382 + ++++++++++++++++++++---------------- + glib/tests/scannerapi.c | 21 +- + glib/tests/slice.c | 14 +- + glib/tests/test-printf.c | 277 ++++++++++---------------- + glib/tests/testing.c | 204 ++++++++++++------- + glib/tests/utils.c | 22 ++- + gobject/tests/param.c | 54 ++++- + tests/Makefile.am | 1 + + tests/testglib.c | 50 +++-- + 20 files changed, 1263 insertions(+), 913 deletions(-) + +commit 467f9ea1bc41bdb343644fc0d13760799542cc4e +Author: Dan Winship +AuthorDate: Sun Nov 25 11:50:09 2012 -0500 +Commit: Dan Winship +CommitDate: Mon May 13 12:10:52 2013 -0400 + + tests/protocol: redo a bit + + Rather than overloading --verbose, just skip the tests that aren't + supposed to be run in the parent process (so that if you do run the + toplevel test with --verbose, it doesn't immediately error out). + + https://bugzilla.gnome.org/show_bug.cgi?id=679683 + + glib/tests/protocol.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit 960f5500e22d505a5dccbff51ccbc8ab969f0851 +Author: Dan Winship +AuthorDate: Sat Nov 24 15:58:27 2012 -0500 +Commit: Dan Winship +CommitDate: Mon May 13 12:10:52 2013 -0400 + + gtestutils: add g_test_trap_subprocess() + + g_test_trap_fork() doesn't work on Windows and is potentially flaky on + unix anyway given the fork-but-don't-exec. Replace it with + g_test_trap_subprocess(), which re-spawns the same program with + arguments telling it to run a specific (otherwise-ignored) test case. + + Make the existing g_test_trap_fork() unit tests be unix-only (they + never passed on Windows anyway), and add a parallel set of + g_test_trap_subprocess() tests. + + Also fix the logic of gtestutils's "-p" argument (which is used by the + subprocess tests); previously if you had tests "/foo/bar" and + "/foo/bar/baz", and ran the test program with "-p /foo/bar/baz", it + would run "/foo/bar" too. Fix that and add tests. + + https://bugzilla.gnome.org/show_bug.cgi?id=679683 + + docs/reference/glib/glib-sections.txt | 4 +- + glib/gmessages.c | 2 +- + glib/gtestutils.c | 753 + +++++++++++++++++++++++----------- + glib/gtestutils.h | 16 +- + glib/tests/testing.c | 183 +++++++++ + 5 files changed, 712 insertions(+), 246 deletions(-) + +commit 38859e8e2930f12bc5885c1ce9191aa3f73b8110 +Author: Dan Winship +AuthorDate: Wed Dec 19 15:59:55 2012 -0500 +Commit: Dan Winship +CommitDate: Mon May 13 12:10:52 2013 -0400 + + g_test_trap_fork: don't blow away the SIGCHLD handler + + Not sure why it was doing this, but it's not necessary (all of glib's + tests pass fine without it), and it breaks tests that try to use + g_spawn_sync() or GChildWatchSource after doing a g_test_trap_fork(). + + https://bugzilla.gnome.org/show_bug.cgi?id=679683 + + glib/gtestutils.c | 1 - + 1 file changed, 1 deletion(-) + +commit 4c356443b85d8deb97107cfebc8c329446a9d6c9 +Author: Dan Winship +AuthorDate: Sun Nov 25 13:52:20 2012 -0500 +Commit: Dan Winship +CommitDate: Mon May 13 12:10:52 2013 -0400 + + tests/spawn-*.c: fix on Windows + + Need to append ".exe" to the spawned binary name on Windows + + https://bugzilla.gnome.org/show_bug.cgi?id=679683 + + glib/tests/Makefile.am | 1 + + glib/tests/spawn-multithreaded.c | 4 ++-- + glib/tests/spawn-singlethread.c | 4 ++-- + 3 files changed, 5 insertions(+), 4 deletions(-) + +commit 1d310cf5dbe3ef224f5af505f33cc7263a5801e9 +Author: Christian Persch +AuthorDate: Sun May 12 21:52:54 2013 +0200 +Commit: Christian Persch +CommitDate: Mon May 13 13:45:11 2013 +0200 + + app: Document when floating variants are consumed + + Bug #700203. + + gio/gaction.c | 2 ++ + gio/gsimpleaction.c | 2 ++ + 2 files changed, 4 insertions(+) + +commit b7550999cdee5281cdece52b4ca2d35fa70dd868 +Author: ManojKumar Giri +AuthorDate: Fri May 10 12:08:27 2013 +0530 +Commit: ManojKumar Giri +CommitDate: Fri May 10 12:08:27 2013 +0530 + + Updated Odia Translation. + + po/or.po | 306 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 150 insertions(+), 156 deletions(-) + +commit 6fe6b0300b382fd000f75edd3ad968d29b276a0d +Author: Matthias Clasen +AuthorDate: Thu May 9 16:02:52 2013 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 9 16:04:54 2013 -0400 + + Clarify GValueArray docs + + Don't refer to Quicksort in the documentation of + g_value_array_sort, but just to qsort(). + + gobject/gvaluearray.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 8d13a3e4e175697f00d5963542ea2ff0aa37662f +Author: Krishnababu Krothapalli +AuthorDate: Thu May 9 18:03:09 2013 +0530 +Commit: Krishnababu Krothapalli +CommitDate: Thu May 9 18:03:09 2013 +0530 + + Updated Telugu Translations + + po/te.po | 306 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 150 insertions(+), 156 deletions(-) + +commit c2d6aaa540240c1842b6204cafc8dca404e4ba87 +Author: Zeeshan Ali (Khattak) +AuthorDate: Tue Mar 20 22:40:32 2012 +0200 +Commit: Zeeshan Ali (Khattak) +CommitDate: Wed May 8 03:55:39 2013 +0300 + + Fix minor typos in GSocketConnectable example code + + gio/gsocketconnectable.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 25fa94eb82a8b55fd9279f5faa67c02c4738b8d8 +Author: Sebastian Dröge +AuthorDate: Mon May 6 16:06:48 2013 +0200 +Commit: Sebastian Dröge +CommitDate: Mon May 6 16:06:48 2013 +0200 + + Declare res_init() for builds against Android's Bionic + + res_init() exists in the C library here and as such is detected + by configure, but it is not declared in any header. + + gio/gresolver.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit f4a188234105cb363aecaefd31e06e1f976200c0 +Author: Dan Winship +AuthorDate: Sun May 5 16:50:43 2013 -0400 +Commit: Dan Winship +CommitDate: Sun May 5 16:50:43 2013 -0400 + + GProxyAddressEnumerator: add default-port property + + Although none of the in-tree GSocketConnectable types need it, other + types (like SoupAddress) may find it useful to be able to pass a URI + and a default-port to GProxyAddressEnumerator separately (the same way + you can with GNetworkAddress). So add a default-port property. + + https://bugzilla.gnome.org/show_bug.cgi?id=698877 + + gio/gproxyaddressenumerator.c | 181 + +++++++++++++++++++++++------------------- + gio/tests/proxy-test.c | 105 +++++++++++++++++++++--- + 2 files changed, 194 insertions(+), 92 deletions(-) + +commit 6104230bce3607f62d47165dbee5ccbe73953b5a +Author: Matthias Clasen +AuthorDate: Sat May 4 21:10:43 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 4 21:10:43 2013 -0400 + + Document all gtester-report options + + The --subunit option was missing from the man page. + + docs/reference/glib/gtester-report.xml | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 794401c0a2165ec6d9e0e29b61c0a2cdb59acdb2 +Author: Matthias Clasen +AuthorDate: Sat May 4 21:08:18 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 4 21:08:18 2013 -0400 + + Document all glib-mkenums placeholders + + The @ENUMPREFIX@ placeholder was missing in the man page. + + docs/reference/gobject/glib-mkenums.xml | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit f10dc91ceedaef63d3a6b0421d4ae0b28f5e1473 +Author: Matthias Clasen +AuthorDate: Sat May 4 21:05:24 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 4 21:05:24 2013 -0400 + + Document all glib-genmarshal options + + The --stdinc option was missing from the man page. + + docs/reference/gobject/glib-genmarshal.xml | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 8d99b24a03adf1c5b950336c3bd649baeb953a9e +Author: Matthias Clasen +AuthorDate: Sat May 4 21:03:00 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 4 21:03:00 2013 -0400 + + Fix a typo + + docs/reference/gio/glib-compile-resources.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7b60a469b751b655cbce04fb44b40e42a7d42391 +Author: Matthias Clasen +AuthorDate: Sat May 4 21:01:35 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 4 21:01:35 2013 -0400 + + Document all gdbus-codegen options + + The --help and --xml-files options were missing from the man page. + + docs/reference/gio/gdbus-codegen.xml | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +commit 13958ee4292947e0a074ebf4a0e697462ba58e79 +Author: Dan Winship +AuthorDate: Thu May 2 10:14:57 2013 -0400 +Commit: Dan Winship +CommitDate: Sat May 4 10:09:39 2013 -0400 + + gbitlock: fix this to not unconditionally use futex emulation + + Ryan accidentally committed some debugging code a long time ago, + causing this file to always use futex emulation even when real futex + support was available. I noticed this a while later and pointed it out + to him, and assumed he was going to fix it, but I guess he assumed I + was going to fix it, and then neither of us did... + + https://bugzilla.gnome.org/show_bug.cgi?id=699500 + + glib/gbitlock.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9d69c274e0e13294bbfd6488c220ab523d3e881a +Author: Matthias Clasen +AuthorDate: Thu May 2 21:00:57 2013 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 2 21:02:37 2013 -0400 + + Silently handle icon being NULL + + While an emblemed icon without a base icon is not very + useful, no need to crash here. + This was crashing the object finalization test in gtk. + + gio/gemblemedicon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a360b314aad5dcbc575948a401d22d47a36e4328 +Author: Emmanuele Bassi +AuthorDate: Sun Apr 14 21:04:41 2013 +0100 +Commit: Emmanuele Bassi +CommitDate: Thu May 2 15:50:21 2013 -0700 + + binding: Add an explicit unbind() + + Higher order languages with garbage collection can have issues + releasing + a binding, as they do not control the last reference being dropped on + the binding, source, or target instances. + + https://bugzilla.gnome.org/show_bug.cgi?id=698018 + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gbinding.c | 89 + +++++++++++++++++++---------- + gobject/gbinding.h | 2 + + gobject/tests/binding.c | 32 +++++++++++ + 4 files changed, 95 insertions(+), 29 deletions(-) + +commit f61daa6ed275f1794a6552d3343e313d1d243933 +Author: Colin Walters +AuthorDate: Thu May 2 11:39:11 2013 -0400 +Commit: Colin Walters +CommitDate: Thu May 2 14:04:41 2013 -0400 + + tests/mappedfile: Also handle ENOMEM + + The RHEL6.4 kernel gives me that instead of EINVAL. + + https://bugzilla.gnome.org/show_bug.cgi?id=699485 + + glib/tests/mappedfile.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit c0e0c6a4201c879b5d8d7f5314d42f268a317f4c +Author: Dan Winship +AuthorDate: Thu May 2 13:58:25 2013 -0400 +Commit: Dan Winship +CommitDate: Thu May 2 13:58:25 2013 -0400 + + gobject: rename an unused parameter to make AIX happy + + gobject/gobject.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 769e3edbe0f658ecaf22d7352486aad176095328 +Author: Simon McVittie +AuthorDate: Thu May 2 16:50:01 2013 +0100 +Commit: Simon McVittie +CommitDate: Thu May 2 18:37:25 2013 +0100 + + GSocks5Proxy: don't crash if parsing negotiation reply fails + + The GError should be initialized to NULL, otherwise we'll + "pile up" errors, then try to free an uninitialized pointer. + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=699493 + + gio/gsocks5proxy.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit eda37dbc3f547d785e4e8941abd320d1292e93e7 +Author: Rajesh Ranjan +AuthorDate: Thu May 2 13:45:46 2013 +0530 +Commit: Rajesh Ranjan +CommitDate: Thu May 2 13:45:46 2013 +0530 + + hindi update + + po/hi.po | 311 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 153 insertions(+), 158 deletions(-) + +commit b24f73700d3779187b763178d4e462cdfa3e43c5 +Author: Matej Urbančič +AuthorDate: Wed May 1 20:32:44 2013 +0200 +Commit: Matej Urbančič +CommitDate: Wed May 1 20:32:44 2013 +0200 + + Updated Slovenian translation + + po/sl.po | 1396 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 702 insertions(+), 694 deletions(-) + +commit 631cf195c8fa718d78354688de4d88057c7e68ad +Author: Matthias Clasen +AuthorDate: Wed May 1 05:20:02 2013 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 1 05:20:02 2013 -0400 + + Bump version to 2.37.1 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 20012ec9a96c3b12315be0f516fbea9088e67d93 +Author: Matthias Clasen +AuthorDate: Wed May 1 00:16:25 2013 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 1 00:16:25 2013 -0400 + + Add 2.38 indexes to the docs + + docs/reference/gio/gio-docs.xml | 4 ++++ + docs/reference/glib/glib-docs.xml | 4 ++++ + docs/reference/gobject/gobject-docs.xml | 4 ++++ + 3 files changed, 12 insertions(+) + +commit 83e74d5e3e5b6b142daceb12497608312820c1ae +Author: Matthias Clasen +AuthorDate: Wed May 1 00:15:06 2013 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 1 00:15:06 2013 -0400 + + Updates + + NEWS | 68 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 68 insertions(+) + +commit daf7f56491517f048e119a12661999a103875c06 +Author: Tim Lunn +AuthorDate: Wed May 1 10:39:26 2013 +1000 +Commit: Tim Lunn +CommitDate: Wed May 1 11:15:13 2013 +1000 + + gio: fix small leak + + https://bugzilla.gnome.org/show_bug.cgi?id=699361 + + gio/gdesktopappinfo.c | 1 + + 1 file changed, 1 insertion(+) + +commit 0646e00e2522490b41f39fc25a4093bb61e8a4dc +Author: Ryan Lortie +AuthorDate: Sun Apr 21 10:55:40 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 29 13:39:55 2013 -0700 + + GApplication: don't leak 'hint' on remote Open + + We were using format string "s" to deconstruct the open hint into a + 'const gchar *' which, of course, we never freed. Fix that. + + gio/gapplicationimpl-dbus.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 706e636ab83de76c22ed7f2e56df9a1bcb49b39a +Author: Cosimo Cecchi +AuthorDate: Fri Apr 26 17:11:02 2013 -0400 +Commit: Cosimo Cecchi +CommitDate: Fri Apr 26 17:12:39 2013 -0400 + + bytesicon: don't use g_object_unref() on GBytes + + We need to use g_bytes_unref() + + https://bugzilla.gnome.org/show_bug.cgi?id=699001 + + gio/gbytesicon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 463022cc09c3ebab18c4d3a6f2f80752339dc5f0 +Author: Cosimo Cecchi +AuthorDate: Fri Apr 26 17:07:41 2013 -0400 +Commit: Cosimo Cecchi +CommitDate: Fri Apr 26 17:08:06 2013 -0400 + + bytesicon: fix a memory leak + + https://bugzilla.gnome.org/show_bug.cgi?id=698999 + + gio/gbytesicon.c | 1 + + 1 file changed, 1 insertion(+) + +commit 518e3104bf6cdb5d8e6b43d3b721805db5951139 +Author: Colin Walters +AuthorDate: Fri Apr 26 08:12:01 2013 -0400 +Commit: Colin Walters +CommitDate: Fri Apr 26 16:23:42 2013 -0400 + + configure: Assume C90 compatible malloc() prototype + + This ancient code was attempting to cope with (unknown) systems whose + malloc() prototype was incompatible with the standard. This test was + fragile; it would break if the build environment provided -Wall in + CFLAGS. + + Now that it's 2013, let's assume that target systems have a sane + malloc(). If someone complains, we can revisit this. + + https://bugzilla.gnome.org/698716 + + configure.ac | 41 ------------------------------ + glib/gmem.c | 81 + ++++++++++-------------------------------------------------- + 2 files changed, 13 insertions(+), 109 deletions(-) + +commit 7d61da0c078fcc10fada292811401b127e330555 +Author: Ryan Lortie +AuthorDate: Fri Apr 26 11:27:51 2013 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 26 11:34:27 2013 -0400 + + g_object_new: check for NULL from _constructor() + + There is some code in the wild (like in gnome-session) that does this + from its custom _constructor() implementation: + + { + GObject *obj; + + obj = ((chain up)); + + if (!object_is_viable (obj)) + { + g_object_unref (obj); + return NULL; + } + else + return obj; + } + + This has never been a valid use of GObject and this code has always + caused memory to be leaked[1] by growing the construction_objects + list. + The ability to legitimately return NULL from a constructor was exactly + the reason that we created GInitable, in fact. + + That doesn't change the fact that the g_object_new() rewrite will + crash + in this case, so instead of doing that, let's emit a critical + and avoid + the crash. This will allow people to upgrade their GLib without also + upgrading their gnome-session. Meanwhile, people can fix their broken + code. + + [1] not in the strictest sense of the word, because it's still + reachable + + gobject/gobject.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit c98c65fffc4319c5caca164df09af9c8415a46bd +Author: Shantha kumar +AuthorDate: Fri Apr 26 11:40:25 2013 +0530 +Commit: Shantha kumar +CommitDate: Fri Apr 26 11:40:25 2013 +0530 + + Tamil Translation Updated + + po/ta.po | 630 + +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 373 insertions(+), 257 deletions(-) + +commit c027e88a30fc3c332c8955fdeef1bf5e15cc63fc +Author: Mike Ruprecht +AuthorDate: Thu Apr 25 02:24:53 2013 -0500 +Commit: Mike Ruprecht +CommitDate: Thu Apr 25 02:54:14 2013 -0500 + + gio/tests: Find "true" in PATH opposed to hardcoding the location + + Not all systems have /usr/bin/true. Some have it in /bin/true. + Instead of trying to guess a hardcoded path to find it, let + g_app_info_create_from_commandline() internally search PATH + to find the program. + + https://bugzilla.gnome.org/show_bug.cgi?id=698655 + + gio/tests/desktop-app-info.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8a6ae995ee53f09da60b60f853b597b23f9dc4c0 +Author: Milo Casagrande +AuthorDate: Thu Apr 25 09:01:11 2013 +0200 +Commit: Milo Casagrande +CommitDate: Thu Apr 25 09:01:21 2013 +0200 + + [l10n] Updated Italian translation. + + po/it.po | 121 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 63 insertions(+), 58 deletions(-) + +commit 03dd6cf1b55fbef243e90ee3253dacecae06cf61 +Author: Cosimo Cecchi +AuthorDate: Wed Apr 24 11:58:47 2013 -0400 +Commit: Cosimo Cecchi +CommitDate: Wed Apr 24 11:58:47 2013 -0400 + + docs: fix docs for g_icon_[de]serialize() + + docs/reference/gio/gio-sections.txt | 2 ++ + gio/gicon.c | 24 ++++++++++++++++++++++++ + 2 files changed, 26 insertions(+) + +commit 755f4f0bf66ea6b9e735bf685a5ae2a2c404d6d2 +Author: Piotr Drąg +AuthorDate: Wed Apr 24 00:01:48 2013 +0200 +Commit: Piotr Drąg +CommitDate: Wed Apr 24 00:03:37 2013 +0200 + + Updated Polish translation + + po/pl.po | 119 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 62 insertions(+), 57 deletions(-) + +commit bfa8bef7b9985b3ab8bc6165ed5e915f70d464d8 +Author: Ryan Lortie +AuthorDate: Wed Mar 27 23:34:30 2013 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 23 14:39:09 2013 -0400 + + GObject: substantially rework g_object_new() + + Make a number of improvements to g_object_new(): + + - instead of looking up the GParamSpec for the named property once in + g_object_new() (in order to collect) and then again in + g_object_newv + (when actually setting the property), g_object_new_internal() is a + new function that takes the GParamSpec on the interface to + avoid the + second lookup + + - in the case that ->constructor() is not set, we need not waste time + creating an array of GObjectConstructParam to pass in. + Just directly + iterate the list of parameters, calling set_property() on each. + + - instead of playing with linked lists to keep track of the construct + properties, realise that the number of construct properties that we + will set is exactly equal to the length of the construct_properties + list on GObjectClass and the only thing that may change is + where the + value comes from (in the case that it was passed in) + + This assumption was already implicit in the existing code and + can be + seen from the sizing of the array used to hold the construct + properties, but it wasn't taken advantage of to make things + simpler. + + - instead of allocating and filling a separate array of the + non-construct properties just re-iterate the passed-in list and set + all properties that were not marked G_PARAM_CONSTRUCT (since + the ones + that were construct params were already used during construction) + + - use the new g_param_spec_get_default_value() API instead of + allocating and setting the GValue for each construct property that + wasn't passed from the user + + Because we are now iterating the linked list of properties in-order we + need to append to that list during class initialising instead of + prepending. + + These changes show a very small improvement on the simple-construction + performance testcase (probably just noise) and they improve the + complex-construction case by ~30%. + + Thanks to Alex Larsson for reviews and fixes. + + https://bugzilla.gnome.org/show_bug.cgi?id=698056 + + gobject/gobject.c | 527 + +++++++++++++++++++++++++++++++++++------------------- + 1 file changed, 340 insertions(+), 187 deletions(-) + +commit c18462b5803a3dd57d3ccb67153ad7851cc8ce08 +Author: Ryan Lortie +AuthorDate: Tue Apr 23 11:11:20 2013 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 23 14:39:09 2013 -0400 + + GParamSpec: add g_param_spec_get_default_value() + + The way of getting the default value out of a GParamSpec is to + allocate + a GValue, initialise it, then call g_param_spec_set_default() to + set the + default value into that GValue. + + This is exactly how we handle setting the default value for all of the + construct properties that were not explicitly passed to + g_object_new(). + + Instead of doing the alloc/init/store on all construct properties on + every call to g_object_new(), we can cache those GValues in the + private + data of the GParamSpec itself and reuse them. + + This patch does not actually make that change to g_object_new() + yet, but + it adds the API to GParamSpec so that a future patch to GObject + can make + the change. + + https://bugzilla.gnome.org/show_bug.cgi?id=698056 + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gparam.c | 62 + +++++++++++++++++++++++++++++ + gobject/gparam.h | 3 +- + gobject/tests/param.c | 16 ++++++++ + 4 files changed, 81 insertions(+), 1 deletion(-) + +commit c30c0bb34d80013489897c49bef36cc56972d5d9 +Author: Ryan Lortie +AuthorDate: Tue Apr 23 10:38:23 2013 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 23 14:39:09 2013 -0400 + + GType: add accessor for instance private offset + + Since instance private data is now always at a constant offset to the + instance pointer, we can add an accessor for it that doesn't also + require an instance. + + The idea is that classes can call this from their class_init and store + it in a file-scoped static variable and use that to find their private + data on instances very quickly, without a priv pointer. + + https://bugzilla.gnome.org/show_bug.cgi?id=698056 + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gtype.c | 48 + +++++++++++++++++++++++++++++ + gobject/gtype.h | 2 ++ + 3 files changed, 51 insertions(+) + +commit eb860fd898a6a2bd86c11d245294cd0e8cd4304b +Author: Ryan Lortie +AuthorDate: Tue Apr 23 13:26:48 2013 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 23 14:39:09 2013 -0400 + + Partially revert "Merge waitpid() from g_spawn_sync into gmain()" + + This partially reverts commit + ce0022933c255313e010b27f977f4ae02aad1e7e. + + It used to be safe to use g_spawn_sync() from processes that had their + own SIGCHLD handler because it simply called wait(). When it was + changed to depend on the GLib child watching infrastructure this meant + that GLib had to own the SIGCHLD handler. + + This caused hangs in at least Pidgin. + + The patch contained two other improvements to the child watch + code which + we want to keep, so only revert the changes to gspawn itself. + + https://bugzilla.gnome.org/show_bug.cgi?id=698081 + + glib/gspawn.c | 76 + ++++++++++++++++++++++++++++------------------------------- + 1 file changed, 36 insertions(+), 40 deletions(-) + +commit c91af2ab44c20556f3d3493edff686cf77137fda +Author: Ryan Lortie +AuthorDate: Tue Apr 23 14:30:42 2013 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 23 14:36:07 2013 -0400 + + Test GUnixSocketAddress construction + + This test fails without the previous fix and works properly with it. + + https://bugzilla.gnome.org/show_bug.cgi?id=698686 + + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 1 + + gio/tests/socket-address.c | 79 + ++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 81 insertions(+) + +commit 9c243beea25f08b506eab9e1e877d6ffe2b20531 +Author: Ryan Lortie +AuthorDate: Tue Apr 23 13:38:33 2013 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 23 14:36:07 2013 -0400 + + GUnixSocketAddress: fix construct parameter issue + + GUnixSocketAddress has some very strange logic for interpreting its + construct paramters. This logic behaves differently in these + two cases: + + g_object_new (G_TYPE_UNIX_SOCKET_ADDRESS, + "abstract", FALSE, + "address-type", ..., + NULL); + + and + + g_object_new (G_TYPE_UNIX_SOCKET_ADDRESS, + "address-type", ..., + NULL); + + even though the default value for "abstract" is already FALSE. + + Change the way the code works so that it is not sensitive to people + merely setting a property to its default value. + + https://bugzilla.gnome.org/show_bug.cgi?id=698686 + + gio/gunixsocketaddress.c | 23 ++++++----------------- + 1 file changed, 6 insertions(+), 17 deletions(-) + +commit 7409ac0d14e197f0c2ef1ae86fa15ddaeea5a434 +Author: Ryan Lortie +AuthorDate: Tue Apr 23 11:59:09 2013 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 23 12:01:17 2013 -0400 + + gtype: tweak valgrind hints + + The valgrind client requests were not producing the intended result in + some cases, so step up our game a bit. + + gobject/gtype.c | 17 ++++++++++++----- + 1 file changed, 12 insertions(+), 5 deletions(-) + +commit e8438f98e2d274b57008eddcb86df3f63e166933 +Author: Ryan Lortie +AuthorDate: Mon Apr 22 18:32:05 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 22 18:32:49 2013 -0400 + + Revert "GObject: prevent installing properties after init" + + This reverts commit ddb0ce14215cd62c7a2497d6cf9f2ea63c40ebb5. + + Colin's smoke testing has found issues in at least gjs and + gnome-settings-daemon. We'll need to see if we can address those. + + gobject/gobject.c | 9 ++------- + gobject/gtype-private.h | 1 - + gobject/gtype.c | 10 ---------- + 3 files changed, 2 insertions(+), 18 deletions(-) + +commit ddb0ce14215cd62c7a2497d6cf9f2ea63c40ebb5 +Author: Ryan Lortie +AuthorDate: Mon Apr 22 17:37:18 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 22 17:40:51 2013 -0400 + + GObject: prevent installing properties after init + + GObject has previously allowed installing properties after class_init + has finished running. This means that you could install some of your + own properties on G_TYPE_OBJECT, for example, although they wouldn't + have worked properly. + + Prevent this from happening. Require that all properties are + installed by + the time class_init has finished. + + Complaints go to this bug: + + https://bugzilla.gnome.org/show_bug.cgi?id=698614 + + gobject/gobject.c | 9 +++++++-- + gobject/gtype-private.h | 1 + + gobject/gtype.c | 10 ++++++++++ + 3 files changed, 18 insertions(+), 2 deletions(-) + +commit 31fde567a95ff8f50b6b0e75d4010da9b73514ed +Author: Ryan Lortie +AuthorDate: Mon Apr 22 12:33:30 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 22 16:16:23 2013 -0400 + + gtype: put private data before the instance + + Classically, a GTypeInstance has had the following layout: + + [[[[GTypeInstance] GObject] TypeA] TypeB] [TypeAPrivate] + [TypeBPrivate] + + where TypeB is a subclass of TypeA which is a GObject. Both TypeA and + TypeB use pivate data. + + The main problem with this approach is that the offset between + a pointer + to an instance of TypeA and the TypeAPrivate is not constant: + it changes + depending on the depth of derivation and the size of the instance + structures of the derived types. For example, changing the size + of the + TypeB structure in the above example would push the TypeAPrivate + further + along. + + This complicates the implementation of g_type_instance_get_private(). + In particular, during object construction when the class pointer + to the + 'complete type' of the object is not yet stored in the header of the + GTypeInstance, we need a lookup table in order to be able to implement + g_type_instance_get_private() accurately. + + We can avoid this problem by storing the private data before the + structures, in reverse order, like so: + + [TypeBPrivate] [TypeAPrivate] [[[[GTypeInstance] GObject] TypeA] + TypeB] + + Now the distance between TypeA and TypeAPrivate depends only on + the size + of GObject and GTypeInstance, which are static. Even in the case of + TypeB, the distance is not statically known but can be determined at + runtime and is constant (because we will know the size of TypeAPrivate + by the time we initialise TypeB and it won't change). + + This approach requires a slighty dirty trick: allocating extra memory + _before_ the pointer we return from g_type_create_instance(). + The main + problem with this is that it will cause valgrind to behave very badly, + reporting almost everything as "possibly lost". + + We can correct for this by including a few valgrind client requests in + order to inform it that the start of the GTypeInstance should be + considered a block of memory and that pointers to it should mean that + this block is reachable. In order to make the private data reachable, + we also declare it as a block and include an extra pointer from + the end + of the primary block pointing back at it. All of this is only done if + we are running under Valgrind. + + https://bugzilla.gnome.org/show_bug.cgi?id=698595 + + gobject/gtype.c | 221 + ++++++++++++++++++-------------------------------------- + 1 file changed, 72 insertions(+), 149 deletions(-) + +commit 00fbc2f0ce2fb65da1027485707fbac59b91a1ef +Author: Ryan Lortie +AuthorDate: Mon Apr 22 12:28:44 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 22 16:15:31 2013 -0400 + + gslice: disable by default under valgrind + + All experienced GLib hackers know that G_SLICE=always-malloc is + absolutely essential when valgrinding but many users of GLib + don't know + about this and get hit pretty hard when valgrinding their programs. + + When initialising gslice, add a check to see if we are running under + valgrind and disable ourselves if we are. + + We only do the check in the case that G_SLICE= was not specified + in the + environment, so setting it to an empty string will prevent this + default + behaviour. + + I considered modifying gslice to use the VALGRIND_MALLOCLIKE_BLOCK + client request in all cases in order to just mark the blocks properly + but these calls are not free and gslice is pretty hyper-optimised. + It's + easier to just disable gslice completely and this way we only have + to do + one check during startup. It's also theoretically possible that + someone + might want to use valgrind to debug gslice, in which case the extra + annotations would probably cause quite a lot of difficulty. + + https://bugzilla.gnome.org/show_bug.cgi?id=698595 + + glib/gslice.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit c8d56d7cf79b107d0e9a64812734fe877b332093 +Author: Ryan Lortie +AuthorDate: Mon Apr 22 12:10:35 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 22 16:15:16 2013 -0400 + + Add a copy of valgrind.h to glib/ + + This is a BSD-licenced header file that is designed to be copy-pasted + into programs. It will allow us to detect if we are running under + Valgrind and send "client requests" to it. + + We will use this for a couple of reasons in upcoming patches. + + https://bugzilla.gnome.org/show_bug.cgi?id=698595 + + glib/Makefile.am | 3 +- + glib/valgrind.h | 4840 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 4842 insertions(+), 1 deletion(-) + +commit c1c1b33f883d6afd2e27bb2506ab6490ed916052 +Author: Ryan Lortie +AuthorDate: Sat Apr 20 18:55:03 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 22 16:12:42 2013 -0400 + + GMenu: add g_menu_item_set_icon() convenience + + This function takes a GIcon, serialises it and sets the resulting + GVariant as the "icon" attribute on the menu item. We will need + to add + a patch to Gtk to actually consume this icon. + + Also add G_MENU_ATTRIBUTE_ICON. + + https://bugzilla.gnome.org/show_bug.cgi?id=688820 + + docs/reference/gio/gio-sections.txt | 4 +++- + gio/gmenu.c | 41 + +++++++++++++++++++++++++++++++++++++ + gio/gmenu.h | 4 ++++ + gio/gmenumodel.h | 15 ++++++++++++++ + 4 files changed, 63 insertions(+), 1 deletion(-) + +commit 63a0cc3f8d97da612d445babfe367fb3d603e658 +Author: Jasper St. Pierre +AuthorDate: Mon Apr 22 13:12:12 2013 -0400 +Commit: Jasper St. Pierre +CommitDate: Mon Apr 22 13:12:20 2013 -0400 + + tests: Fix appinfo test + + gio/tests/appinfo.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 709ade0e45bce4d43ef227c9442f599389482dce +Author: Daniel Mustieles +AuthorDate: Mon Apr 22 17:49:06 2013 +0200 +Commit: Daniel Mustieles +CommitDate: Mon Apr 22 17:49:06 2013 +0200 + + Updated Spanish translation + + po/es.po | 142 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 72 insertions(+), 70 deletions(-) + +commit 93349e6ea36fa5dd48ee2fa2cd9b8328414cf3c5 +Author: Sweta Kothari +AuthorDate: Mon Apr 22 15:53:10 2013 +0530 +Commit: Sweta Kothari +CommitDate: Mon Apr 22 15:54:09 2013 +0530 + + Updated gujarati file + + po/gu.po | 110 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 54 insertions(+), 56 deletions(-) + +commit 454691a4b4957846ed81e1611eb8ee142258008f +Author: Piotr Drąg +AuthorDate: Mon Apr 22 00:37:20 2013 +0200 +Commit: Piotr Drąg +CommitDate: Mon Apr 22 00:37:20 2013 +0200 + + Updated POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit c16f914b40c749b938490a4e10a3c54ec1855c42 +Author: Ryan Lortie +AuthorDate: Sat Apr 20 18:50:21 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sun Apr 21 16:31:14 2013 -0400 + + GIcon: add g_icon_[de]serialize() + + Add support for serialising a GIcon to a GVariant and deserialising + the + result back to a GIcon. + + This solves a number of problems suffered by the existing to_string() + API, primarily these: + + - not forcing the icon to be a utf8 string means that we can + efficiently encode a PNG (ie: just give the array of bytes) + + - there is no need to ensure that proper types are loaded before + using + the deserialisation interface. 'Foreign' icon types will probably + emit a serialised format the deserialises to a GBytesIcon. + + We additionally clearly document what is required for being a consumer + or implementation of #GIcon. + + Further patches will be required to GdkPixbuf and GVfsIcon to bring + their implementations in line with the new rules (essentially: + introduce + implementations of the new serialize() API). + + https://bugzilla.gnome.org/show_bug.cgi?id=688820 + + gio/gbytesicon.c | 10 +++ + gio/gemblem.c | 21 +++++ + gio/gemblemedicon.c | 49 ++++++++++++ + gio/gfileicon.c | 9 +++ + gio/gicon.c | 217 + ++++++++++++++++++++++++++++++++++++++++++++++++++-- + gio/gicon.h | 7 ++ + gio/gthemedicon.c | 9 +++ + gio/gvfs.h | 3 +- + gio/tests/g-icon.c | 122 ++++++++++++++++++++++++++++- + 9 files changed, 439 insertions(+), 8 deletions(-) + +commit 9cc222c0bfc65034143753a64b081b7811ee48f1 +Author: Ryan Lortie +AuthorDate: Sat Apr 20 17:23:31 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sun Apr 21 16:25:15 2013 -0400 + + Introduce GBytesIcon + + GBytesIcon is an icon that has a GBytes inside of it where the GBytes + contains some sort of encoded image in a widely-recognised file + format. + Ideally this will be a PNG. + + It implements GLoadableIcon, so GTK will already understand how to use + it, but we will add another patch there to make things more efficient. + + https://bugzilla.gnome.org/show_bug.cgi?id=688820 + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 14 ++ + gio/Makefile.am | 2 + + gio/gbytesicon.c | 253 + ++++++++++++++++++++++++++++++++++++ + gio/gbytesicon.h | 54 ++++++++ + gio/gio.h | 1 + + gio/giotypes.h | 1 + + 7 files changed, 326 insertions(+) + +commit 519e989ea8d33924f5d6f5d57f100e65359275af +Author: Ryan Lortie +AuthorDate: Sat Apr 20 16:41:09 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sun Apr 21 16:25:13 2013 -0400 + + GIcon: pure re-factor of _from_string() + + Split out the 'simple string format' cases of URIs, file paths and + themed icons to a separate function. + + This function will be shared by g_icon_deserialize(). + + https://bugzilla.gnome.org/show_bug.cgi?id=688820 + + gio/gicon.c | 77 + ++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 43 insertions(+), 34 deletions(-) + +commit c0af442909e1304b799a4b6c145f8444c752e3da +Author: Jasper St. Pierre +AuthorDate: Sat Apr 20 15:13:42 2013 -0400 +Commit: Jasper St. Pierre +CommitDate: Sun Apr 21 00:09:47 2013 -0400 + + gdesktopappinfo: Allow getting the desktop ID from the filename + + gio/gdesktopappinfo.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 390115f3851de49f93918cda9266ab857382cc3e +Author: Lars Uebernickel +AuthorDate: Sat Apr 20 18:58:14 2013 -0400 +Commit: Lars Uebernickel +CommitDate: Sat Apr 20 22:10:36 2013 -0400 + + gactionmap: don't require GActionGroup + + https://bugzilla.gnome.org/show_bug.cgi?id=698478 + + gio/gactionmap.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit ac1379e22cc6d97f1336eee0f846900950e978b5 +Author: Lars Uebernickel +AuthorDate: Sat Apr 20 11:44:21 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sat Apr 20 19:24:47 2013 -0400 + + g_variant_get_data_as_bytes: return a sub-bytes if necessary + + https://bugzilla.gnome.org/show_bug.cgi?id=698457 + + glib/gvariant-core.c | 15 ++++++++++++++- + glib/tests/gvariant.c | 11 +++++++++++ + 2 files changed, 25 insertions(+), 1 deletion(-) + +commit dbb65b54651a88b9691b156bf19b53fbe4a4bd5a +Author: Ryan Lortie +AuthorDate: Sat Apr 20 11:44:53 2013 -0400 +Commit: Ryan Lortie +CommitDate: Sat Apr 20 18:58:24 2013 -0400 + + GVariant: add new g_variant_new_take_string() API + + Lots of people have variously asked for APIs like + g_variant_new_string_printf() in order to avoid having to use + g_strdup_printf(), create a GVariant using g_variant_new_string(), + then + free the temporary string. + + Instead of supporting that, plus a million other potential cases, + introduce g_variant_new_take_string() as a compromise. + + It's not possible to write: + + v = g_variant_new_take_string (g_strdup_printf (....)); + + to get the desired result and avoid the extra copies. In addition, it + works with many other functions. + + https://bugzilla.gnome.org/show_bug.cgi?id=698455 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gvariant.c | 36 + +++++++++++++++++++++++++++++++++++ + glib/gvariant.h | 2 ++ + 3 files changed, 39 insertions(+) + +commit a2a44a9617098ef061b1fd026ea44d381aa5ccec +Author: Sébastien Wilmet +AuthorDate: Wed Apr 17 16:37:55 2013 +0200 +Commit: Sébastien Wilmet +CommitDate: Fri Apr 19 21:38:13 2013 +0200 + + Add async version of g_file_make_directory() + + https://bugzilla.gnome.org/show_bug.cgi?id=548353 + + docs/reference/gio/gio-sections.txt | 2 + + gio/gfile.c | 111 + ++++++++++++++++++++++++++++++++++++ + gio/gfile.h | 25 ++++++-- + 3 files changed, 134 insertions(+), 4 deletions(-) + +commit bd57c3f171d0775d8b1f0944f45a196b59fc79fd +Author: Sébastien Wilmet +AuthorDate: Wed Apr 17 15:07:03 2013 +0200 +Commit: Sébastien Wilmet +CommitDate: Fri Apr 19 21:38:13 2013 +0200 + + GFile: fix the *_async_thread() + + In the *_async_thread() functions, call the corresponding synchronous + function instead of calling the interface vfunc, which can be NULL. + + In some cases the check for the vfunc == NULL was done, but to be + consistent it is better to always call the synchronous version + (and the + code is simpler). + + https://bugzilla.gnome.org/show_bug.cgi?id=548353 + + gio/gfile.c | 65 + ++++++++----------------------------------------------------- + 1 file changed, 8 insertions(+), 57 deletions(-) + +commit 1de0625103e98710689d65cecfc288e15a5d240d +Author: Ryan Lortie +AuthorDate: Mon Apr 8 15:27:16 2013 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 19 14:52:51 2013 -0400 + + GMenu: add g_menu_remove_all() API + + Removes all of the items from a GMenu. The keyboard indicator + wants to + do this as part of refreshing the layout list, as an example. + + https://bugzilla.gnome.org/show_bug.cgi?id=697601 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gmenu.c | 23 +++++++++++++++++++++++ + gio/gmenu.h | 3 +++ + 3 files changed, 27 insertions(+) + +commit 57cd876321f563bade0f6230108b1fce18d9b0c6 +Author: Ryan Lortie +AuthorDate: Wed Apr 17 12:12:20 2013 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 19 11:40:04 2013 -0400 + + GVariant parser: tweak lexer for format strings + + Tweak the lexer so that '[%s]' gets parsed as three separate tokens, + instead of the closing bracket getting sucked into the format string. + + glib/gvariant-parser.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 1d87c6c7f818eef758a2bd6afd07f6feabc5f45d +Author: Ryan Lortie +AuthorDate: Wed Apr 17 12:08:00 2013 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 19 11:40:04 2013 -0400 + + GVariant parser: turn two asserts into soft errors + + Parsing wrongly-typed GVariant text format data is a well-defined + operation and it ought to result in a GError. We do that for most + cases, but 'v' and 'ay' were being treated differently. Fix those as + well. + + glib/gvariant-parser.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit c70b4978598a3b4e3d712e89cacf21b5369ed53e +Author: Robert Bragg +AuthorDate: Wed Apr 17 04:35:50 2013 -0400 +Commit: Colin Walters +CommitDate: Wed Apr 17 04:36:24 2013 -0400 + + utils: avoid redundant set/endpwent around getpwuid + + set/endpwent are only required for iterating through passwd entries + using getpwent(). Since we are explicitly requesting a passwd entry + for a uid then the set/endpwent calls are redundant. + + Removing these redundant calls is required for building on Android + since their C library doesn't implement these. + + https://bugzilla.gnome.org/show_bug.cgi?id=645881 + + glib/gutils.c | 6 ------ + 1 file changed, 6 deletions(-) + +commit d171e833478dcb067a543082ff69c237c97c6fe4 +Author: Giovanni Campagna +AuthorDate: Fri Apr 12 17:25:15 2013 +0200 +Commit: Giovanni Campagna +CommitDate: Tue Apr 16 15:57:19 2013 +0200 + + GVariant: fix transfer annotation + + g_variant_new_from_bytes() returns a floating reference, so it + must be annotated (transfer none) + + https://bugzilla.gnome.org/show_bug.cgi?id=697887 + + glib/gvariant-core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ad12142943e0f20ed9583c9d6bf50f6262110c74 +Author: Emilio Pozuelo Monfort +AuthorDate: Sat Apr 13 12:02:24 2013 +0200 +Commit: Emilio Pozuelo Monfort +CommitDate: Tue Apr 16 15:44:27 2013 +0200 + + check-abis.sh: allow _ftext as that's leaked on mips + + https://bugzilla.gnome.org/show_bug.cgi?id=697942 + + check-abis.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit bcbaf1bef01c669715860299fe8603bc21b0e137 +Author: Sebastian Dröge +AuthorDate: Wed Nov 28 16:55:54 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Tue Apr 16 13:24:26 2013 +0200 + + Fix compilation on Android with the bionic C library + + https://bugzilla.gnome.org/show_bug.cgi?id=689223 + + configure.ac | 182 + ++++++++++++++++++++++++++++++++----- + gio/glocalfileinfo.c | 2 + + gio/gresolver.c | 2 + + gio/gthreadedresolver.c | 143 +++++++++++++++++++++++++++++ + gio/tests/gtlsconsoleinteraction.c | 12 ++- + glib/galloca.h | 4 +- + glib/glib-unix.c | 5 + + glib/gstrfuncs.c | 14 +++ + glib/gutils.c | 6 ++ + glib/tests/Makefile.am | 2 +- + gmodule/gmodule-dl.c | 4 + + 11 files changed, 349 insertions(+), 27 deletions(-) + +commit 5e2cad9de96a569e72466a4ff748c579d6d6708e +Author: Jasper St. Pierre +AuthorDate: Wed Mar 27 16:41:44 2013 -0400 +Commit: Jasper St. Pierre +CommitDate: Fri Apr 12 16:41:57 2013 -0400 + + bookmarkfile: Fix annotations on GBookmarkFile + + glib/gbookmarkfile.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit 3c614be04acaea3a84b07cd3732af0567bb0c376 +Author: Marek Kasik +AuthorDate: Wed Apr 10 13:48:49 2013 +0200 +Commit: Marek Kasik +CommitDate: Fri Apr 12 17:04:06 2013 +0200 + + tests: Add test for disabled help options + + Test whether help options are hidden when they are disabled + by g_option_context_set_help_enabled(.., FALSE). + + https://bugzilla.gnome.org/show_bug.cgi?id=697652 + + glib/tests/option-context.c | 60 + +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 60 insertions(+) + +commit d20336130d08978c5e7e7f12df29d6cb6f7bbef5 +Author: Marek Kasik +AuthorDate: Tue Apr 9 18:03:53 2013 +0200 +Commit: Marek Kasik +CommitDate: Fri Apr 12 17:04:02 2013 +0200 + + Don't show help options when help is disabled + + Check whether help is enabled when creating help text + in g_option_context_get_help(). + + https://bugzilla.gnome.org/show_bug.cgi?id=697652 + + glib/goption.c | 26 ++++++++++++++++---------- + 1 file changed, 16 insertions(+), 10 deletions(-) + +commit a12157b1f8515bbd9304ecd03c646a34ca7e975d +Author: Jason Quinn +AuthorDate: Thu Apr 11 05:00:38 2013 -0400 +Commit: Colin Walters +CommitDate: Thu Apr 11 05:00:59 2013 -0400 + + building.xml: Fix a typo of "fo" to "of" + + https://bugzilla.gnome.org/show_bug.cgi?id=697771 + + docs/reference/glib/building.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f5806a208cab3a460e29d8ef56611257efe81ed8 +Author: Balázs Úr +AuthorDate: Wed Apr 10 23:33:20 2013 +0200 +Commit: Balázs Úr +CommitDate: Wed Apr 10 23:33:20 2013 +0200 + + Updated Hungarian translation + + po/hu.po | 111 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 59 insertions(+), 52 deletions(-) + +commit 733bf962023d9b227bc9d8f5a1366b222b796946 +Author: Sébastien Wilmet +AuthorDate: Thu Jan 31 18:45:32 2013 +0100 +Commit: Sébastien Wilmet +CommitDate: Wed Apr 10 22:32:33 2013 +0200 + + Add async version of g_file_trash() + + https://bugzilla.gnome.org/show_bug.cgi?id=548353 + + docs/reference/gio/gio-sections.txt | 2 + + gio/gfile.c | 111 + ++++++++++++++++++++++++++++++++++++ + gio/gfile.h | 27 +++++++-- + 3 files changed, 136 insertions(+), 4 deletions(-) + +commit c35b73a90f8489f69e14b5029479d5f5304176bb +Author: Sébastien Wilmet +AuthorDate: Thu Jan 31 18:44:24 2013 +0100 +Commit: Sébastien Wilmet +CommitDate: Wed Apr 10 20:31:44 2013 +0200 + + Add missing details in GFile documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=548353 + + gio/gfile.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 0513c855cba69b96e4c9d2200719249a8a0c586e +Author: Dan Winship +AuthorDate: Wed Apr 10 11:39:12 2013 -0400 +Commit: Dan Winship +CommitDate: Wed Apr 10 11:39:12 2013 -0400 + + gmain: fix double-unlock in g_main_context_unref() + + When unreffing a context with sources still attached, it would end up + unlocking an already-unlocked context, causing crashes on platforms + that (unlike Linux) actually check for that. + + https://bugzilla.gnome.org/show_bug.cgi?id=697595 + + glib/gmain.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 74ed1cf5b0538f71ae566219c14b6a1b954c1a74 +Author: Lionel Landwerlin +AuthorDate: Fri Apr 5 15:21:23 2013 +0100 +Commit: Lionel Landwerlin +CommitDate: Wed Apr 10 11:07:12 2013 +0100 + + gunixmounts: remove warning on unused variable + + https://bugzilla.gnome.org/show_bug.cgi?id=697367 + + gio/gunixmounts.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 907a931082f442ab15bc4508284bf4bf90fa4aa4 +Author: Robert Ancell +AuthorDate: Wed Apr 10 15:53:14 2013 +1200 +Commit: Robert Ancell +CommitDate: Wed Apr 10 15:55:37 2013 +1200 + + Fix deprecation warning for g_io_channel_read + + glib/giochannel.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2ca9dda72aa85756010dfc9b73aa0d891e61bf29 +Author: Руслан Ижбулатов +AuthorDate: Tue Apr 9 14:09:33 2013 +0200 +Commit: Alexander Larsson +CommitDate: Tue Apr 9 14:10:13 2013 +0200 + + win32: Allow POSIX threads to be used if --with-threads=posix + + All tests pass with this patch AND a good pthreads implementation + (i'm using winpthreads, not pthreads-w32). + + https://bugzilla.gnome.org/show_bug.cgi?id=697626 + + configure.ac | 6 ++++++ + glib/Makefile.am | 4 +++- + glib/glib-init.c | 4 ++++ + glib/gthread-posix.c | 3 +++ + 4 files changed, 16 insertions(+), 1 deletion(-) + +commit 0a130c8bb0bbbbe392c3c10b92a09906ce8a07f3 +Author: Руслан Ижбулатов +AuthorDate: Tue Apr 9 14:02:54 2013 +0200 +Commit: Alexander Larsson +CommitDate: Tue Apr 9 14:02:54 2013 +0200 + + win32: Fix warning + + glib/gspawn-win32-helper.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c237338b04954803f482571d57dbe5cd927e7ae3 +Author: Руслан Ижбулатов +AuthorDate: Sat Dec 3 07:08:26 2011 +0400 +Commit: Alexander Larsson +CommitDate: Tue Apr 9 11:55:42 2013 +0200 + + Use AC_LINK_IFELSE instead of AC_TRY_COMPILE + + Fixes #665445 + + configure.ac | 17 ++++++++++------- + 1 file changed, 10 insertions(+), 7 deletions(-) + +commit 00f6d78125a02c014bcfb31e47b082ff30ede1d6 +Author: Lars Uebernickel +AuthorDate: Mon Apr 8 08:13:10 2013 +0200 +Commit: Lars Uebernickel +CommitDate: Mon Apr 8 15:59:39 2013 +0200 + + g_dbus_connection_signal_subscribe: add path and namespace matching + + https://bugzilla.gnome.org/show_bug.cgi?id=695156 + + gio/gdbusconnection.c | 93 + ++++++++++++++++++++++++++++++++++++++------ + gio/gioenums.h | 9 ++++- + gio/tests/gdbus-connection.c | 78 +++++++++++++++++++++++++++++++++++++ + 3 files changed, 167 insertions(+), 13 deletions(-) + +commit 690d6b97f83149770ef2aa4477c1cb28159678c2 +Author: James Turner +AuthorDate: Fri Apr 5 15:29:55 2013 -0400 +Commit: Antoine Jacoutot +CommitDate: Mon Apr 8 14:15:22 2013 +0200 + + g_atomic_int_get, g_atomic_pointer_get: accept const arguments + + https://bugzilla.gnome.org/show_bug.cgi?id=697386 + + glib/gatomic.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit aba02c5248ef1a8911588e38f56d011f81e21345 +Author: Antoine Jacoutot +AuthorDate: Tue Mar 26 12:34:51 2013 +0100 +Commit: Antoine Jacoutot +CommitDate: Sun Apr 7 09:09:59 2013 +0200 + + simpler regex match on the shebang + + The previous pattern didn't match on traditional non-GNU sed(1). + https://bugzilla.gnome.org/show_bug.cgi?id=696629 + + glib/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d474309c3f439fbe8c4af8cd9acac70235cf67a3 +Author: Lionel Landwerlin +AuthorDate: Fri Apr 5 15:18:28 2013 +0100 +Commit: Lionel Landwerlin +CommitDate: Sun Apr 7 07:11:30 2013 +0100 + + gunixmounts: correctly flag hasmntopt usage + + https://bugzilla.gnome.org/show_bug.cgi?id=697365 + + gio/gunixmounts.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 3d03c9cb13d8d5f23fa4b118c46e24d2d12996b1 +Author: Shankar Prasad +AuthorDate: Fri Apr 5 17:23:01 2013 +0530 +Commit: Shankar Prasad +CommitDate: Fri Apr 5 17:23:01 2013 +0530 + + Updated kn translations + + po/kn.po | 126 + +++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 86 insertions(+), 40 deletions(-) + +commit a04596417037227329cb4bdbcf3786a60a4f9a52 +Author: Shankar Prasad +AuthorDate: Fri Apr 5 16:20:28 2013 +0530 +Commit: Shankar Prasad +CommitDate: Fri Apr 5 16:20:28 2013 +0530 + + Updated kn translations + + po/kn.po | 321 + +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 189 insertions(+), 132 deletions(-) + +commit 1517cdb813253a550334b6cb614fa49dde9d1ac9 +Author: Shankar Prasad +AuthorDate: Fri Apr 5 12:36:07 2013 +0530 +Commit: Shankar Prasad +CommitDate: Fri Apr 5 12:36:29 2013 +0530 + + Updated kn translations + + po/kn.po | 1022 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 557 insertions(+), 465 deletions(-) + +commit fb1ad873a6d29e40681e2ffd555e88a1d08428c1 +Author: Jesse van den Kieboom +AuthorDate: Fri Apr 5 08:01:17 2013 +0200 +Commit: Jesse van den Kieboom +CommitDate: Fri Apr 5 08:01:17 2013 +0200 + + GDateTime to GTimeZone in opaque structure doc + + glib/gtimezone.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3b4c9f5fcc6dcd519f106406c489b5492f31dba1 +Author: Cosimo Cecchi +AuthorDate: Thu Apr 4 13:15:00 2013 -0400 +Commit: Cosimo Cecchi +CommitDate: Thu Apr 4 13:15:00 2013 -0400 + + gversionmacros: fix a typo + + glib/gversionmacros.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit db325cd6a3ed3e95d497d7a4087c0f37f155ef01 +Author: Cosimo Cecchi +AuthorDate: Wed Apr 3 14:12:03 2013 -0400 +Commit: Cosimo Cecchi +CommitDate: Thu Apr 4 13:13:53 2013 -0400 + + application: introduce methods to mark the application as busy + + This feature is intended for clients that want to signal a desktop + shell + their busy state, for instance because a long-running operation is + pending. + The API works in a similar way to g_application_hold and + g_application_release: applications can call g_application_mark_busy() + to increase a counter that will keep the application marked as busy + until the counter reaches zero again. + + The busy state is exported read-only on the org.gtk.Application + interface + for clients to use. + + https://bugzilla.gnome.org/show_bug.cgi?id=672018 + + docs/reference/gio/gio-sections.txt | 3 ++ + gio/gapplication.c | 58 + +++++++++++++++++++++++++++++++++++++ + gio/gapplication.h | 5 ++++ + gio/gapplicationimpl-dbus.c | 55 + +++++++++++++++++++++++++++++++++++ + gio/gapplicationimpl.h | 3 ++ + 5 files changed, 124 insertions(+) + +commit 96f7e6d70b7b7aa915e471d5ee5f5bc2a6637af9 +Author: Ryan Lortie +AuthorDate: Thu Apr 4 11:12:42 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 4 11:41:19 2013 -0400 + + gtype: interface-after-init exception for gtk# + + gtk# also has a problem with the new interface-after-init restriction + that nobody noticed until now. Add an exception for them as well so + that they have a cycle or so to sort things out. + + https://bugzilla.gnome.org/show_bug.cgi?id=687659 + + gobject/gtype.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit c5307e4cba67fadf1749c9a5c127bf1000c1dc89 +Author: Ryan Lortie +AuthorDate: Thu Apr 4 09:31:11 2013 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 4 11:10:17 2013 -0400 + + gtype: interface-after-init exception for glibmm + + glibmm has a pretty difficult-to-solve problem caused by our recent + change to deny addition of interfaces to classes after initialisation. + + They're looking for a long-term workaround for the problem, but in the + meantime we can allow the registration to succeed (with warning) + if the + class looks like it's being defined by gtkmm. + + https://bugzilla.gnome.org/show_bug.cgi?id=697229 + + gobject/gtype.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 859e4239c575a0e597f32d017d6012be7b4d3ab8 +Author: Andres G. Aragoneses +AuthorDate: Thu Apr 4 12:10:28 2013 +0100 +Commit: Andres G. Aragoneses +CommitDate: Thu Apr 4 12:11:06 2013 +0100 + + gobject: fix G_DEFINE_TYPE_EXTENDED docs so code snippet actually + compiles + + Flags being used in the G_DEFINE_TYPE_EXTENDED sample was "0", so it + should expand to 0 as well, otherwise the compiler would bark with: + maman-bar.c: In function ‘maman_bar_get_type’: + maman-bar.c:36:53: error: ‘flags’ undeclared (first use in + this function) + maman-bar.c:36:53: note: each undeclared identifier is reported only + once for each function it appears in + + https://bugzilla.gnome.org/show_bug.cgi?id=697250 + + gobject/gtype.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cef5ce20122ab9f2e62cd582eea751f1efd2c246 +Author: Nilamdyuti Goswami +AuthorDate: Thu Apr 4 13:26:59 2013 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Thu Apr 4 13:27:35 2013 +0530 + + Assamese translation updated + + po/as.po | 142 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 72 insertions(+), 70 deletions(-) + +commit bfb6ff0dbd587841366cc4fa04d1da549dc3e9d7 +Author: David Gomes +AuthorDate: Wed Apr 3 20:15:49 2013 +0100 +Commit: Matthias Clasen +CommitDate: Wed Apr 3 21:35:57 2013 -0400 + + gsettings: implemented --version command + + This was discussed in + https://bugzilla.gnome.org/show_bug.cgi?id=697131 + + gio/completion/gsettings | 2 +- + gio/gsettings-tool.c | 18 ++++++++++++++++++ + 2 files changed, 19 insertions(+), 1 deletion(-) + +commit 4214078f3353d19c65f997eca236726b9e7a3503 +Author: Kjartan Maraas +AuthorDate: Wed Apr 3 11:51:27 2013 +0200 +Commit: Kjartan Maraas +CommitDate: Wed Apr 3 11:51:27 2013 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 196 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 101 insertions(+), 95 deletions(-) + +commit d1bbab5689064e23732a132aa53de360d3e59383 +Author: Colin Walters +AuthorDate: Wed Apr 3 00:31:28 2013 -0400 +Commit: Colin Walters +CommitDate: Wed Apr 3 00:33:45 2013 -0400 + + gmacros: Mark G_UNAVAILABLE() functions as deprecated (gcc <= 4.4) + + RHEL6 ships with GCC 4.4 by default, which doesn't understand the + nicer deprecated attribute that takes a message. However, we can at + least fall back to the old G_DEPRECATED, rather than silently doing + nothing. + + This gives me warning messages when building OSTree on RHEL6 when I + accidentally added a usage of g_unix_fd_source_new(). + + https://bugzilla.gnome.org/show_bug.cgi?id=697160 + + glib/gmacros.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3456152f23a9507f10c868ff4bc1cca91a486b21 +Author: Giovanni Campagna +AuthorDate: Fri Mar 29 15:39:26 2013 +0100 +Commit: Giovanni Campagna +CommitDate: Tue Apr 2 23:04:15 2013 +0200 + + GThreadedResolver: set an error if no records could be found + + It is possible that the upstream servers return something, but + we then filter all results because they are of the wrong type. + In that case the API and subsequent GTask calls expect a GError + to be set. + + https://bugzilla.gnome.org/show_bug.cgi?id=696857 + + gio/gthreadedresolver.c | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +commit 31c00c1fbeba76e046ade5792b9b3b3638d9f11c +Author: Guido Günther +AuthorDate: Sun Mar 24 17:11:49 2013 +0100 +Commit: Guido Günther +CommitDate: Tue Apr 2 21:49:59 2013 +0200 + + codegen: move G_DEFINE_INTERFACE{,_WITH_CODE} before _default_init + + to avoid warnings when built with -Wredundant-decls: + + sessionmanager-presence-generated.c:316:1: warning: redundant + redeclaration of ‘session_manager_presence_default_init’ + [-Wredundant-decls] + sessionmanager-presence-generated.c:281:1: note: previous definition + of ‘session_manager_presence_default_init’ was here + sessionmanager-presence-generated.c:1273:1: warning: redundant + redeclaration of ‘object_default_init’ [-Wredundant-decls] + sessionmanager-presence-generated.c:1259:1: note: previous + definition of ‘object_default_init’ was here + + https://bugzilla.gnome.org/show_bug.cgi?id=696108 + + gio/gdbus-2.0/codegen/codegen.py | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +commit 576e2ce1db9b6b2ea5f19c45909c6ddbd871e744 +Author: Guido Günther +AuthorDate: Mon Mar 18 22:31:36 2013 +0100 +Commit: Guido Günther +CommitDate: Tue Apr 2 21:49:54 2013 +0200 + + codegen: Avoid warnings when the generated client code is built + with -Wunused-parameter + + https://bugzilla.gnome.org/show_bug.cgi?id=696108 + + gio/gdbus-2.0/codegen/codegen.py | 52 + ++++++++++++++++++++-------------------- + 1 file changed, 26 insertions(+), 26 deletions(-) + +commit e359130e3ec840b72628253d0bde44144225fa1a +Author: Colin Walters +AuthorDate: Tue Apr 2 14:10:15 2013 -0400 +Commit: Colin Walters +CommitDate: Tue Apr 2 14:14:42 2013 -0400 + + ghash: Suppress -Wmaybe-uninitialized from GCC 4.4 + + It's not clever enough to figure out that these are always initialized + in code paths that use them. + + Reviewed-By: Benjamin Otte + + glib/ghash.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 8cddb54659582042eaede0da158c3ab40105bada +Author: Ryan Lortie +AuthorDate: Mon Apr 1 15:01:20 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 1 16:53:54 2013 -0400 + + gaction: add parser for detailed action names + + Expand and formalise the syntax for detailed action names, adding a + well-documented (and tested) public parser API for them. + + Port the only GLib-based user of detailed action names to the new API: + g_menu_item_set_detailed_action(). The users in Gtk+ will also be + ported soon. + + https://bugzilla.gnome.org/show_bug.cgi?id=688954 + + docs/reference/gio/gio-sections.txt | 3 ++ + gio/gaction.c | 100 + ++++++++++++++++++++++++++++++++++++ + gio/gaction.h | 6 +++ + gio/gmenu.c | 33 +++++------- + gio/tests/actions.c | 75 +++++++++++++++++++++++++++ + 5 files changed, 196 insertions(+), 21 deletions(-) + +commit e1fdd59f08b3072464b5374b62146fd69014ef77 +Author: Ryan Lortie +AuthorDate: Mon Apr 1 16:53:33 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 1 16:53:53 2013 -0400 + + Add GLib 2.38 version macros + + glib/gversionmacros.h | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit 1011e4269f2c1bb16ad0a72b4b92abaf625c6b56 +Author: Hib Eris +AuthorDate: Sun Mar 31 16:40:34 2013 +0200 +Commit: Hib Eris +CommitDate: Mon Apr 1 08:48:36 2013 +0200 + + Fix compile error in gdbusmessage.c for win64 + + https://bugzilla.gnome.org/show_bug.cgi?id=696973 + + gio/gdbusmessage.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2c8008a905df7a67e18ec9642ac7d7905da3f3ce +Author: Xan Lopez +AuthorDate: Tue Mar 26 19:19:41 2013 +0100 +Commit: Xan Lopez +CommitDate: Tue Mar 26 19:19:41 2013 +0100 + + gtask: free error on finalize if it's set + + https://bugzilla.gnome.org/show_bug.cgi?id=696652 + + gio/gtask.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit fdd3cf921cf32ac5d281df025b45f888cb93d9ff +Author: Murray Cumming +AuthorDate: Tue Mar 26 10:51:48 2013 +0100 +Commit: Murray Cumming +CommitDate: Tue Mar 26 10:51:48 2013 +0100 + + Fix tiny docs typo. + + gio/gtlsfiledatabase.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 812bb6cff04f1451c76924b257dcac7c8a1d531c +Author: Ryan Lortie +AuthorDate: Mon Mar 25 17:49:20 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Mar 25 17:49:20 2013 -0400 + + bump version for start of unstable branch + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bea56fc270883a6705b377f9c933a3080b901362 +Author: Ryan Lortie +AuthorDate: Mon Mar 25 17:39:21 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Mar 25 17:39:21 2013 -0400 + + GLib 2.36.0 + + NEWS | 32 ++++++++++++++++++++++++++++++++ + configure.ac | 4 ++-- + 2 files changed, 34 insertions(+), 2 deletions(-) + +commit 978571d854922d12050e17d618e747ebdb4ff0a8 +Author: Colin Walters +AuthorDate: Sun Mar 17 18:33:59 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Mar 25 16:32:39 2013 -0400 + + g_file_copy(): Ensure G_FILE_COPY_OVERWRITE preserves permissions + + We need to close the stream *before* applying the file modes, because + g_file_replace() allocates a temporary file. At the moment we're + applying the modes to the extant file, then immediately rename()ing + over it with the default perms. + + This regressed with commit 166766a89fcd173dcd6ffda11f902029928f7f28. + + The real fix here is to have g_file_create_with_info() so that we can + atomically create a file with the permissions we want. + + https://bugzilla.gnome.org/show_bug.cgi?id=696014 + + gio/gfile.c | 15 +++++++------- + gio/tests/file.c | 59 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 67 insertions(+), 7 deletions(-) + +commit ef2aa88a4f5febd34e89b0101872d513c78ca7f5 +Author: Ani Peter +AuthorDate: Mon Mar 25 23:08:52 2013 +0530 +Commit: Ani Peter +CommitDate: Mon Mar 25 23:11:43 2013 +0530 + + Completed for Malayalam + + po/ml.po | 6115 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 3377 insertions(+), 2738 deletions(-) + +commit d428084e4e3ab30fe56b77579c817fa2f8cf7c13 +Author: A S Alam +AuthorDate: Mon Mar 25 22:50:00 2013 +0530 +Commit: A S Alam +CommitDate: Mon Mar 25 22:50:00 2013 +0530 + + Punjabi: Translation updated (aalam) + + po/pa.po | 393 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 195 insertions(+), 198 deletions(-) + +commit 9d1a4343b1427ce5f70c5b27dd3b77b4b6451182 +Author: Krishnababu Krothapalli +AuthorDate: Mon Mar 25 15:26:55 2013 +0530 +Commit: Krishnababu Krothapalli +CommitDate: Mon Mar 25 15:27:44 2013 +0530 + + Updated Telugu Translations + + po/te.po | 855 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 440 insertions(+), 415 deletions(-) + +commit 21c99744ff723cd58133eb62e81637d5b7983e72 +Author: Krishnababu Krothapalli +AuthorDate: Wed Nov 28 16:06:58 2012 +0530 +Commit: Krishnababu Krothapalli +CommitDate: Mon Mar 25 15:27:43 2013 +0530 + + Updated Telugu Translations + + po/te.po | 822 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 417 insertions(+), 405 deletions(-) + +commit 09fcd1a2dfcb961cc5030377f71cd4febce0fed7 +Author: Murray Cumming +AuthorDate: Mon Mar 25 10:16:49 2013 +0100 +Commit: Murray Cumming +CommitDate: Mon Mar 25 10:16:49 2013 +0100 + + Corrected some GLIB_AVAILABLE_IN_* + + gio/gsocketclient.h | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit c63d7ce89f60b67eed8e723cfd14d3bb1378244e +Author: Petr Kovar +AuthorDate: Sun Mar 24 20:20:55 2013 +0100 +Commit: Petr Kovar +CommitDate: Sun Mar 24 20:20:55 2013 +0100 + + Update Czech translation + + po/cs.po | 1395 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 701 insertions(+), 694 deletions(-) + +commit beae47d838d7e7912ea7716ba4177f286c95a270 +Author: Guido Günther +AuthorDate: Sat Mar 23 12:41:15 2013 +0100 +Commit: Guido Günther +CommitDate: Sun Mar 24 16:27:01 2013 +0100 + + Init padding to NULL to avoid a missing initializer warning + + like + + sessionmanager-presence-generated.c:920:1: warning: missing + initializer [-Wmissing-field-initializers] + sessionmanager-presence-generated.c:920:1: + warning: (near initialization for + ‘_org_gnome_session_manager_presence_skeleton_vtable.padding’) + [-Wmissing-field-initializers] + + https://bugzilla.gnome.org/review?bug=696108 + + gio/gdbus-2.0/codegen/codegen.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 82f29a0204b07e92889f49a7ed215c2ffd0c2755 +Author: Yuri Myasoedov +AuthorDate: Sat Mar 23 21:12:04 2013 +0400 +Commit: Yuri Myasoedov +CommitDate: Sat Mar 23 21:12:04 2013 +0400 + + Updated Russian translation + + po/ru.po | 1347 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 688 insertions(+), 659 deletions(-) + +commit 159e923d168ed23153e5ef3b2c5ac423e4f8563f +Author: Jiro Matsuzawa +AuthorDate: Sat Mar 23 19:10:01 2013 +0900 +Commit: Jiro Matsuzawa +CommitDate: Sat Mar 23 19:10:01 2013 +0900 + + [l10n] Update Japanese translation + + po/ja.po | 148 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 72 insertions(+), 76 deletions(-) + +commit 05b3787cda1afb14946929e2aef64b62bce08225 +Author: ManojKumar Giri +AuthorDate: Fri Mar 22 18:26:42 2013 +0530 +Commit: ManojKumar Giri +CommitDate: Fri Mar 22 18:26:42 2013 +0530 + + Updated Odia Language along with FUEL implementation + + po/or.po | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit fe6e7f7bc6bd9cff32efe00d0c288ac15e37bb82 +Author: ManojKumar Giri +AuthorDate: Fri Mar 22 18:22:51 2013 +0530 +Commit: ManojKumar Giri +CommitDate: Fri Mar 22 18:22:51 2013 +0530 + + Updated Odia Language along with FUEL implementation + + po/or.po | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 8431ae42b46eb68267f001a9f2c628e09c8c09c8 +Author: ManojKumar Giri +AuthorDate: Fri Mar 22 18:11:16 2013 +0530 +Commit: ManojKumar Giri +CommitDate: Fri Mar 22 18:11:16 2013 +0530 + + Updated Odia Language along with FUEL implementation + + po/or.po | 1453 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 717 insertions(+), 736 deletions(-) + +commit 7f7154ac495012e0022e18ba2dbfabec6a3ee998 +Author: Sweta Kothari +AuthorDate: Fri Mar 22 16:26:24 2013 +0530 +Commit: Sweta Kothari +CommitDate: Fri Mar 22 16:27:08 2013 +0530 + + Updated gujarati file + + po/gu.po | 112 + ++++++++++++++++++++++++--------------------------------------- + 1 file changed, 42 insertions(+), 70 deletions(-) + +commit 48e4d01473760d15501097a49b844e9bd69d7fff +Author: Sandeep Sheshrao Shedmake +AuthorDate: Fri Mar 22 15:46:01 2013 +0530 +Commit: Sandeep Sheshrao Shedmake +CommitDate: Fri Mar 22 15:46:01 2013 +0530 + + Updated Marathi Translations + + po/mr.po | 1349 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 693 insertions(+), 656 deletions(-) + +commit 14fe1ae7b387e6af9ad6a876c3f53ef598bb7dd6 +Author: Shantha kumar +AuthorDate: Fri Mar 22 15:17:35 2013 +0530 +Commit: Shantha kumar +CommitDate: Fri Mar 22 15:17:35 2013 +0530 + + Tamil Translations Updated + + po/ta.po | 683 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 353 insertions(+), 330 deletions(-) + +commit e4eaa14a8eb9ad3f720bb794f8dfef2ae56a2285 +Author: Murray Cumming +AuthorDate: Thu Mar 21 13:10:36 2013 +0100 +Commit: Murray Cumming +CommitDate: Thu Mar 21 13:11:03 2013 +0100 + + Corrected a GLIB_AVAILABLE_IN_* + + glib/gvariant.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a3de65afee7c9eb4519efd51cf0c256d41e6be47 +Author: Rajesh Ranjan +AuthorDate: Thu Mar 21 14:58:09 2013 +0530 +Commit: Rajesh Ranjan +CommitDate: Thu Mar 21 14:58:09 2013 +0530 + + hindi translation + + po/hi.po | 1400 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 698 insertions(+), 702 deletions(-) + +commit dd0ea5dcc2f7de16d23603ddee93db6c0367d689 +Author: Tristan Van Berkom +AuthorDate: Wed Jan 16 16:26:08 2013 +0900 +Commit: Tristan Van Berkom +CommitDate: Thu Mar 21 16:37:21 2013 +0900 + + Added examples to GTestDBus documentation + + docs/reference/gio/migrating-gdbus.xml | 4 ++ + gio/gtestdbus.c | 75 +++++++++++++++++++++++++++++ + gio/tests/gdbus-test-fixture.c | 86 + ++++++++++++++-------------------- + 3 files changed, 114 insertions(+), 51 deletions(-) + +commit 7081635b7fe372d2aad418724a99591307cd4bfb +Author: Gabor Kelemen +AuthorDate: Thu Mar 21 00:22:58 2013 +0100 +Commit: Gabor Kelemen +CommitDate: Thu Mar 21 00:22:58 2013 +0100 + + Updated Hungarian translation + + po/hu.po | 1549 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 797 insertions(+), 752 deletions(-) + +commit ed95b01d896196ca1ee63a9354238ea6c5320d00 +Author: Inaki Larranaga Murgoitio +AuthorDate: Wed Mar 20 09:35:28 2013 +0100 +Commit: dooteo +CommitDate: Wed Mar 20 09:35:28 2013 +0100 + + Updated Basque language + + po/eu.po | 2009 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1107 insertions(+), 902 deletions(-) + +commit 9f758c29b2f396f43324437ad23cbfd30d19afd4 +Author: Victor Ibragimov +AuthorDate: Tue Mar 19 22:30:07 2013 +0100 +Commit: Gil Forcada +CommitDate: Tue Mar 19 22:30:20 2013 +0100 + + [l10n] Added Tadjik translation + + po/LINGUAS | 1 + + po/tg.po | 4162 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 4163 insertions(+) + +commit 4c6c093b3600d5bc7f649a7dcc89486e38bd31e8 +Author: Ryan Lortie +AuthorDate: Mon Mar 18 23:28:27 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Mar 18 23:28:27 2013 -0400 + + More clean up for Unicode corrigendum #9 + + Fix some more testcases. + + tests/utf8.txt | 14 ++------------ + 1 file changed, 2 insertions(+), 12 deletions(-) + +commit 11bb67bbdac1fe4eaacbc1211d637e3276a0e3eb +Author: Ryan Lortie +AuthorDate: Mon Mar 18 23:01:08 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Mar 18 23:01:08 2013 -0400 + + Small NEWS change + + NEWS | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a8939a67dea9af04cd2735fd05944da764857d7b +Author: Ryan Lortie +AuthorDate: Mon Mar 18 22:57:55 2013 -0400 +Commit: Ryan Lortie +CommitDate: Mon Mar 18 22:57:55 2013 -0400 + + tests: remove a pair of testcases that fail in en_CA + + These testcases don't work with the Canadian date format, so remove + them. + + glib/tests/date.c | 12 ------------ + 1 file changed, 12 deletions(-) + +commit 366b0481be429a0c9f6038a2c15dd2d135beef68 +Author: Ján Kyselica +AuthorDate: Mon Mar 18 21:22:18 2013 +0100 +Commit: Peter Mráz +CommitDate: Mon Mar 18 21:22:18 2013 +0100 + + Updated slovak translation + + po/sk.po | 82 + +++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 45 insertions(+), 37 deletions(-) + +commit 3e41aba011c4d47fa8cdf4b685baf95179a94ae5 +Author: Matthias Clasen +AuthorDate: Mon Mar 18 15:23:07 2013 -0400 +Commit: Matthias Clasen +CommitDate: Mon Mar 18 15:23:07 2013 -0400 + + Another update + + NEWS | 34 ++++++++++++++++++++++++++++++++++ + 1 file changed, 34 insertions(+) + +commit 9863cce079e8ece11cce61902d6ea08c6780467a +Author: Christian Persch +AuthorDate: Mon Mar 18 14:01:28 2013 +0100 +Commit: Christian Persch +CommitDate: Mon Mar 18 14:11:05 2013 +0100 + + goption: g_option_context_new allows NULL for parameter_string + + glib/goption.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cc092232aaedd24ad4757c22803e91e65e61e46d +Author: Chun-wei Fan +AuthorDate: Mon Mar 18 16:52:36 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Mar 18 16:52:36 2013 +0800 + + Update Visual Studio property sheets + + "Install" gtask.h... it's needed. + + build/win32/vs10/glib.props | 2 ++ + build/win32/vs9/glib.vsprops | 1 + + 2 files changed, 3 insertions(+) + +commit 5825dd864b965d4bf32f87cd042d5bb60850eaa7 +Author: Matthias Clasen +AuthorDate: Sun Mar 17 23:30:34 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Mar 17 23:30:34 2013 -0400 + + g_hash_table_get_keys: Improve docs slightly + + https://bugzilla.gnome.org/show_bug.cgi?id=630284 + + glib/ghash.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d59acb701e8ab80f51f19dc9ec9d5145fc4fc2e7 +Author: Matthias Clasen +AuthorDate: Sun Mar 17 23:01:21 2013 -0400 +Commit: Matthias Clasen +CommitDate: Sun Mar 17 23:01:21 2013 -0400 + + Small cleanup to tutorial headings + + This makes all the subsection headers consistent. + https://bugzilla.gnome.org/show_bug.cgi?id=659428 + + docs/reference/gobject/tut_howto.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 0a13464df86ac2c68c52686451ce250f2e454d3a +Author: David King +AuthorDate: Fri Feb 17 14:54:31 2012 +0000 +Commit: Matthias Clasen +CommitDate: Sun Mar 17 22:58:03 2013 -0400 + + docs: Elaborate replacement for g_strncasecmp + + https://bugzilla.gnome.org/show_bug.cgi?id=568405 + + glib/gstrfuncs.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 9a08d81b0d58d78e7f2353a088690d8d243d4425 +Author: David Schleef +AuthorDate: Sun Mar 17 15:56:17 2013 -0700 +Commit: Matthias Clasen +CommitDate: Sun Mar 17 22:48:53 2013 -0400 + + Add warning to g_base64_decode() + + https://bugzilla.gnome.org/show_bug.cgi?id=696015 + + glib/gbase64.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit a8811fb86477d162379694eb8a4480a11ee8cc71 +Author: Patrick Ohly +AuthorDate: Thu Mar 7 18:44:44 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sun Mar 17 22:46:20 2013 -0400 + + GDBusMethodInvocation: leak and potential crash + + _g_dbus_method_invocation_new is said to allow method_info == NULL, + but will crash inside g_dbus_method_info_ref when the method_info + really is NULL, because g_dbus_method_info_ref does not allow NULL as + parameter. Fixed by checking for NULL in _g_dbus_method_invocation_new + itself. + + The leak itself happens because _g_dbus_method_invocation_new stores a + new reference to the method_info without also unreferencing it. Fixed + by adding the missing unref, protected by an if because the pointer + may be NULL. + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=695376 + + gio/gdbusmethodinvocation.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit 1a9567139d56d648eb1fa7b07a660488b6b50435 +Author: Rūdolfs Mazurs +AuthorDate: Sun Mar 17 20:08:27 2013 +0200 +Commit: Rūdolfs Mazurs +CommitDate: Sun Mar 17 20:08:27 2013 +0200 + + Updated Latvian translation + + po/lv.po | 1354 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 698 insertions(+), 656 deletions(-) + +commit a484b6205d079cf1bdfef99fd6c52efb0c0e31c9 +Author: Ihar Hrachyshka +AuthorDate: Sun Mar 17 16:40:46 2013 +0300 +Commit: Ihar Hrachyshka +CommitDate: Sun Mar 17 16:40:46 2013 +0300 + + Updated Belarusian translation. + + po/be.po | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 9a8bae80360a12f7641b0bf33f0e46f30bad1b1b +Author: Gheyret Kenji +AuthorDate: Sun Mar 17 13:54:19 2013 +0900 +Commit: Gheyret Kenji +CommitDate: Sun Mar 17 13:54:19 2013 +0900 + + Updated Uyghur translation + + Signed-off-by: Gheyret Kenji + + po/ug.po | 15 ++++++--------- + 1 file changed, 6 insertions(+), 9 deletions(-) + +commit 255c65f83c1515a7e3fc4609b36e72acc08a79e4 +Author: Stephan Bergmann +AuthorDate: Fri Mar 15 17:30:24 2013 +0100 +Commit: Colin Walters +CommitDate: Fri Mar 15 12:51:49 2013 -0400 + + gmacros: Ensure GUINT32/64_SWAP_LE_BE macros parenthesize arguments + + Like all macros, we need to parenthesize arguments to ensure the order + of operations is correct. + + See the mail thread starting at + + "GCC produced wrong code in gvfs-1.14.2-3.fc18.x86_64" for how this + caused trouble with GVFS (which in turn caused trouble with + LibreOffice, where running "soffice sftp://.../.../test.odt" to access + an .odt file via GVFS failed to properly type-detect that file as a + Writer document and produced bogus error messages about the file being + broken). + + https://bugzilla.gnome.org/show_bug.cgi?id=695925 + + glib/gtypes.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 55a235d377f8da416834156b89c7f5b98b02583b +Author: Duarte Loreto +AuthorDate: Fri Mar 15 12:55:57 2013 +0000 +Commit: Duarte Loreto +CommitDate: Fri Mar 15 12:55:57 2013 +0000 + + Updated Portuguese translation and converted to New Spelling (Novo AO) + + po/pt.po | 1579 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 802 insertions(+), 777 deletions(-) + +commit e3c2d030922d1cab1eab45d3695622ccf0a736e6 +Author: Sébastien Wilmet +AuthorDate: Thu Mar 14 23:24:18 2013 +0100 +Commit: Sébastien Wilmet +CommitDate: Fri Mar 15 09:07:30 2013 +0100 + + Doc: clarify set_property() vfunc + + Implementations "don't need to ...". It was not clear what happen + if they do it all the same. + + https://bugzilla.gnome.org/show_bug.cgi?id=695887 + + gobject/gobject.h | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit e5690794146d7a0db7683ecd783b621b33cf2c52 +Author: Sébastien Wilmet +AuthorDate: Thu Mar 14 22:56:54 2013 +0100 +Commit: Sébastien Wilmet +CommitDate: Fri Mar 15 09:07:29 2013 +0100 + + Doc: clarify a bit g_signal_connect_object() + + "the object" can be a bit confusing for a beginner, he can think it is + the @instance. + + https://bugzilla.gnome.org/show_bug.cgi?id=695887 + + gobject/gobject.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2c566aa09ebffb379e34136b33bcaf7f87ec331c +Author: Martin Srebotnjak +AuthorDate: Thu Mar 14 23:17:33 2013 +0100 +Commit: Matej Urbančič +CommitDate: Thu Mar 14 23:17:33 2013 +0100 + + Updated Slovenian translation + + po/sl.po | 1209 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 601 insertions(+), 608 deletions(-) + +commit 2d1456b0ed8014a55f806b6cab106c0969794486 +Author: Sweta Kothari +AuthorDate: Thu Mar 14 16:28:11 2013 +0530 +Commit: Sweta Kothari +CommitDate: Thu Mar 14 16:28:11 2013 +0530 + + Updated gujarati file + + po/gu.po | 373 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 208 insertions(+), 165 deletions(-) + +commit a0a68efc1e7d3e4ec81e1cd97a6337d77a15afff +Author: Sweta Kothari +AuthorDate: Thu Mar 14 15:24:20 2013 +0530 +Commit: Sweta Kothari +CommitDate: Thu Mar 14 15:24:20 2013 +0530 + + Updated gujarati file + + po/gu.po | 1408 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 734 insertions(+), 674 deletions(-) + +commit 605c4ca24ef0cbfdee5775526399f217f659faea +Author: Emilio Pozuelo Monfort +AuthorDate: Mon Mar 4 20:03:26 2013 +0100 +Commit: Ryan Lortie +CommitDate: Wed Mar 13 09:41:09 2013 -0400 + + live-g-file: test hidden files + + We test for traditional Unix dot-leading files as well as + for files listed in the .hidden file. + + https://bugzilla.gnome.org/show_bug.cgi?id=695147 + + gio/tests/live-g-file.c | 36 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 36 insertions(+) + +commit 3902006a5b043ad418ff5ee1542d54c678280db8 +Author: Ryan Lortie +AuthorDate: Tue Mar 12 12:53:42 2013 -0400 +Commit: Ryan Lortie +CommitDate: Wed Mar 13 09:41:03 2013 -0400 + + glocalfileinfo: Stop using PATH_MAX for .hidden + + We were using PATH_MAX to size a static array for reading lines from + the .hidden file. Some platforms (Hurd) don't declare a PATH_MAX. + + Switch to using g_file_get_contents() and g_str_split('\n') instead. + + Also take the time to clean up a bit with a switch to using a + 'set mode' + GHashTable (since this code was originally written before we had + those). + + This patch is largely based on a patch from Emilio Pozuelo Monfort + (who + also reported the bug). + + https://bugzilla.gnome.org/show_bug.cgi?id=695147 + + gio/glocalfileinfo.c | 32 +++++++++++++------------------- + 1 file changed, 13 insertions(+), 19 deletions(-) + +commit 8028f54c9c66b7e483ff658e082062ad5275f264 +Author: Gheyret Kenji +AuthorDate: Wed Mar 13 20:48:15 2013 +0900 +Commit: Gheyret Kenji +CommitDate: Wed Mar 13 20:48:15 2013 +0900 + + Updated Uyghur translation + + Signed-off-by: Gheyret Kenji + + po/ug.po | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 498d907bcbc36fe5c1ac55e1a93b08594852c434 +Author: Gheyret Kenji +AuthorDate: Wed Mar 13 20:39:02 2013 +0900 +Commit: Gheyret Kenji +CommitDate: Wed Mar 13 20:39:02 2013 +0900 + + Updated Uyghur translation + + Signed-off-by: Gheyret Kenji + + po/ug.po | 521 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 283 insertions(+), 238 deletions(-) + +commit 4db7e5ea0d73e895db442501e3cf07e2e600d03f +Author: Joe Hansen +AuthorDate: Tue Mar 12 23:14:39 2013 +0100 +Commit: KennethNielsen +CommitDate: Tue Mar 12 23:14:39 2013 +0100 + + Updated Danish translation + + po/da.po | 1319 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 674 insertions(+), 645 deletions(-) + +commit ee8d54b0cfc75f828b250504cfc9092e6ccf2a00 +Author: Carles Ferrando +AuthorDate: Tue Mar 12 23:02:33 2013 +0100 +Commit: Gil Forcada +CommitDate: Tue Mar 12 23:02:33 2013 +0100 + + [l10n] Updated Catalan (Valencian) translation + + po/ca@valencia.po | 1346 + +++++++++++++++++++++++++++-------------------------- + 1 file changed, 687 insertions(+), 659 deletions(-) + +commit 7b7cf945773c532770f7895724405c795f5f94c7 +Author: Gil Forcada +AuthorDate: Tue Mar 12 23:02:24 2013 +0100 +Commit: Gil Forcada +CommitDate: Tue Mar 12 23:02:24 2013 +0100 + + [l10n] Updated Catalan translation + + po/ca.po | 1344 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 686 insertions(+), 658 deletions(-) + +commit 5131421c09706658d1b33e9e5fc39210dcbfd0a9 +Author: Claude Paroz +AuthorDate: Tue Mar 12 18:17:12 2013 +0100 +Commit: Claude Paroz +CommitDate: Tue Mar 12 18:17:12 2013 +0100 + + Updated French translation + + po/fr.po | 1332 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 676 insertions(+), 656 deletions(-) + +commit e359bc09c2dc2f4feca1f4aec2ca6602aef870d1 +Author: Ryan Lortie +AuthorDate: Tue Mar 12 12:32:16 2013 -0400 +Commit: Ryan Lortie +CommitDate: Tue Mar 12 12:46:18 2013 -0400 + + tests: clean up for Unicode corrigendum #9 + + Unicode corrigendum #9 spells out in no uncertain terms that on + conversion interfaces we should not reject characters like U+FFFE and + U+FFFF which we were doing before. + + Commit f91ef4ef15d220f6899c97aaf5b1c0a8f68cfe9a started accepting + these + characters, but we had some testcases that were checking that strings + containing these characters should be rejected. + + Update the tests. + + https://bugzilla.gnome.org/show_bug.cgi?id=694669 + + glib/tests/utf8-validate.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit a839dc5df6e16dd060490091ed00c4c7781f5ddd +Author: Nilamdyuti Goswami +AuthorDate: Tue Mar 12 18:23:29 2013 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Tue Mar 12 18:24:22 2013 +0530 + + Assamese translation updated for gnome 3.8 + + po/as.po | 605 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 306 insertions(+), 299 deletions(-) + +commit 97050e503fc012239b61bef70df4e8f7586e3b7c +Author: Martin Pitt +AuthorDate: Mon Mar 11 09:29:34 2013 +0100 +Commit: Martin Pitt +CommitDate: Tue Mar 12 07:07:07 2013 +0100 + + Fix /appinfo/mime tests + + Commit f641699 (for bug 675333) introduced a check whether the Exec= + program in + a .desktop actually exists. This broke the /appinfo/mime/* test + cases which use + executable names like "my_app". + + Use real ones instead (like "echo" and "sleep"), and add a new + /appinfo/mime/ignore-nonexisting test case which verifies that + g_desktop_app_info_new() indeed ignores nonexisting executables. + + https://bugzilla.gnome.org/show_bug.cgi?id=695191 + + gio/tests/mimeapps.c | 36 +++++++++++++++++++++++++++++++----- + 1 file changed, 31 insertions(+), 5 deletions(-) + +commit 48b18041c119cfa28488663d044158f1502ee379 +Author: Milo Casagrande +AuthorDate: Mon Mar 11 22:08:36 2013 +0100 +Commit: Milo Casagrande +CommitDate: Mon Mar 11 22:08:36 2013 +0100 + + [l10n] Updated Italian translation. + + po/it.po | 97 + ++++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 51 insertions(+), 46 deletions(-) + +commit 40026bce914d7525f4b8e9f0e60058fcaee97077 +Author: Fran Diéguez +AuthorDate: Mon Mar 11 21:54:50 2013 +0100 +Commit: Fran Diéguez +CommitDate: Mon Mar 11 21:54:50 2013 +0100 + + Updated Galician translations + + po/gl.po | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 1c10773d681e92c1e44a97c8ff9e0e2e977b578a +Author: Seong-ho Cho +AuthorDate: Tue Mar 12 02:22:06 2013 +0900 +Commit: Changwoo Ryu +CommitDate: Tue Mar 12 02:22:43 2013 +0900 + + Updated Korean translation + + po/ko.po | 1400 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 702 insertions(+), 698 deletions(-) + +commit 77798c227841487de7b7fbcfbd115e1492054310 +Author: Daniel Mustieles +AuthorDate: Mon Mar 11 18:09:07 2013 +0100 +Commit: Daniel Mustieles +CommitDate: Mon Mar 11 18:09:07 2013 +0100 + + Updated Spanish translation + + po/es.po | 384 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 195 insertions(+), 189 deletions(-) + +commit f240872cf85a34c29bac18754c6cb1ee562cf3a0 +Author: Dimitris Spingos +AuthorDate: Mon Mar 11 17:26:39 2013 +0200 +Commit: Dimitris Spingos +CommitDate: Mon Mar 11 17:26:39 2013 +0200 + + Updated Greek translation + + po/el.po | 24 +++++++++++++----------- + 1 file changed, 13 insertions(+), 11 deletions(-) + +commit 5e20ba457de0902175f04fbc68d4035a7c174391 +Author: Мирослав Николић + +AuthorDate: Mon Mar 11 11:29:28 2013 +0100 +Commit: Мирослав Николић + +CommitDate: Mon Mar 11 11:29:28 2013 +0100 + + Updated Serbian translation + + po/sr.po | 386 + +++++++++++++++++++++++++++++---------------------------- + po/sr@latin.po | 386 + +++++++++++++++++++++++++++++---------------------------- + 2 files changed, 392 insertions(+), 380 deletions(-) + +commit 8a8f423629c89f6c7a066bfa5f0e1270508b4999 +Author: Mario Blättermann +AuthorDate: Sun Mar 10 17:06:47 2013 +0100 +Commit: Mario Blättermann +CommitDate: Sun Mar 10 17:06:47 2013 +0100 + + [l10n] Updated German translation + + po/de.po | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 1da401d7b8a7f3fb0dfd2048980d61482724c415 +Author: Jiro Matsuzawa +AuthorDate: Sun Mar 10 21:55:53 2013 +0900 +Commit: Jiro Matsuzawa +CommitDate: Sun Mar 10 21:55:53 2013 +0900 + + [l10n] Update Japanese translation + + po/ja.po | 1548 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 796 insertions(+), 752 deletions(-) + +commit d72e609ff6eb37e0cfb7fb783dd7d626497aac36 +Author: Rafael Ferreira +AuthorDate: Sat Mar 9 15:43:20 2013 -0300 +Commit: Rafael Ferreira +CommitDate: Sat Mar 9 15:43:20 2013 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 9da2125f4906b6bedc1d66dac73865a052af430e +Author: Piotr Drąg +AuthorDate: Sat Mar 9 19:41:07 2013 +0100 +Commit: Piotr Drąg +CommitDate: Sat Mar 9 19:41:07 2013 +0100 + + Updated Polish translation + + po/pl.po | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 92de11e7e78bb50581cbbb7f06e5f1620a0dcc1d +Author: Aurimas Černius +AuthorDate: Sat Mar 9 17:20:42 2013 +0200 +Commit: Aurimas Černius +CommitDate: Sat Mar 9 17:20:42 2013 +0200 + + Updated Lithuanian translation + + po/lt.po | 396 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 198 insertions(+), 198 deletions(-) + +commit 2549c33451c9460c25030baa6d25bc0002532b2a +Author: Jiro Matsuzawa +AuthorDate: Sat Mar 9 23:56:02 2013 +0900 +Commit: Jiro Matsuzawa +CommitDate: Sat Mar 9 23:56:02 2013 +0900 + + gsettings-tool: Make a string translatable + + https://bugzilla.gnome.org/show_bug.cgi?id=695425 + + gio/gsettings-tool.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 74e92836d0624e056c7747cec6da17461cfaab6b +Author: Matej Urbančič +AuthorDate: Sat Mar 9 13:50:59 2013 +0100 +Commit: Matej Urbančič +CommitDate: Sat Mar 9 13:50:59 2013 +0100 + + Updated Slovenian translation + + po/sl.po | 381 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 191 insertions(+), 190 deletions(-) + +commit 9c3d69eaa78d89e58580fcd0ab3e364b1c4833eb +Author: Ihar Hrachyshka +AuthorDate: Sat Mar 9 14:01:43 2013 +0300 +Commit: Ihar Hrachyshka +CommitDate: Sat Mar 9 14:01:43 2013 +0300 + + Updated Belarusian translation. + + po/be.po | 48 ++++++++++++++++++++++++++---------------------- + 1 file changed, 26 insertions(+), 22 deletions(-) + +commit eaaa5ef6fb445172f0e24ee0271e4e72aa8911a3 +Author: Dimitris Spingos +AuthorDate: Sat Mar 9 11:37:03 2013 +0200 +Commit: Dimitris Spingos +CommitDate: Sat Mar 9 11:37:03 2013 +0200 + + Updated Greek translation + + po/el.po | 619 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 314 insertions(+), 305 deletions(-) + +commit af6192631284c283ce511d02522d3c60a436d1d2 +Author: Piotr Drąg +AuthorDate: Fri Mar 8 20:46:44 2013 +0100 +Commit: Piotr Drąg +CommitDate: Fri Mar 8 20:46:44 2013 +0100 + + Updated Polish translation + + po/pl.po | 80 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 40 insertions(+), 40 deletions(-) + +commit 85b8f23d627ebf50a461a9b6d305482f1bbdeb2e +Author: Mario Blättermann +AuthorDate: Fri Mar 8 17:06:53 2013 +0100 +Commit: Mario Blättermann +CommitDate: Fri Mar 8 17:06:53 2013 +0100 + + [l10n] Updated German translation + + po/de.po | 38 +++++++++++++++++++------------------- + 1 file changed, 19 insertions(+), 19 deletions(-) + +commit 7d468ad538a2c35a6d061602508e71d55ea356ab +Author: Rafael Ferreira +AuthorDate: Fri Mar 8 10:37:54 2013 -0300 +Commit: Rafael Ferreira +CommitDate: Fri Mar 8 10:37:54 2013 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 33fb5227ad7953cf3336a8ce48b00e6300e86dce +Author: Theppitak Karoonboonyanan +AuthorDate: Fri Mar 8 15:46:25 2013 +0700 +Commit: Theppitak Karoonboonyanan +CommitDate: Fri Mar 8 15:46:25 2013 +0700 + + Updated Thai translation + + po/th.po | 6057 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 3313 insertions(+), 2744 deletions(-) + +commit f67a9905ff310b124f91f4d232b785553eafbd2b +Author: Behdad Esfahbod +AuthorDate: Thu Mar 7 20:14:08 2013 -0500 +Commit: Behdad Esfahbod +CommitDate: Thu Mar 7 20:21:12 2013 -0500 + + [win32] Remove MemoryBarrier() fallback implementation + + I added these because the older mingw32 toolchain didn't have + MemoryBarrier(). The newer mingw-w64 toolchain however has. + As reported by John Emmas this was causing build failure with + MSVC because of inline issues. But that reminded me that we + may be taking this path even if the system implements + MemoryBarrier as a function, which is a waste. So, just remove + it. + + glib/gatomic.c | 20 ++++---------------- + 1 file changed, 4 insertions(+), 16 deletions(-) + +commit 75d424977e132b6f3ec33eb8d3b27339b3120862 +Author: Fran Diéguez +AuthorDate: Fri Mar 8 00:49:41 2013 +0100 +Commit: Fran Diéguez +CommitDate: Fri Mar 8 00:49:41 2013 +0100 + + Updated Galician translations + + po/gl.po | 92 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 46 insertions(+), 46 deletions(-) + +commit f1173dd7251d51f1c8895fceb89f4ccdda912b47 +Author: Matthias Clasen +AuthorDate: Thu Mar 7 16:44:36 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Mar 7 16:45:50 2013 -0500 + + Fix a mixup of singular and plural + + Pointed out in https://bugzilla.gnome.org/show_bug.cgi?id=695339 + + gio/gdbusmessage.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b3dc7e734dbd62b761f41ef1260e39c8c58794d7 +Author: Ihar Hrachyshka +AuthorDate: Thu Mar 7 16:20:49 2013 +0300 +Commit: Ihar Hrachyshka +CommitDate: Thu Mar 7 16:20:49 2013 +0300 + + Updated Belarusian translation. + + po/be.po | 1301 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 656 insertions(+), 645 deletions(-) + +commit 865316dfb847a539f1b51e6931d46b05aa1d1fc2 +Author: Rafael Ferreira +AuthorDate: Thu Mar 7 00:31:42 2013 -0300 +Commit: Rafael Ferreira +CommitDate: Thu Mar 7 00:31:42 2013 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 2101 + +++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 1166 insertions(+), 935 deletions(-) + +commit 155f599b206f67642970e0bc35b3ba5e1386b884 +Author: Jasper St. Pierre +AuthorDate: Wed Mar 6 20:32:14 2013 -0500 +Commit: Jasper St. Pierre +CommitDate: Wed Mar 6 20:32:53 2013 -0500 + + tests/appinfo: Fix a typo + + The environment variable name is BLA, not BAR, so if BAR is + set for some strange reason, the test fails. + + gio/tests/appinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 717e933e72605c9b83c3007d9613f25e788dc622 +Author: Mario Blättermann +AuthorDate: Tue Mar 5 22:33:18 2013 +0100 +Commit: Mario Blättermann +CommitDate: Tue Mar 5 22:33:48 2013 +0100 + + [l10n] Updated German translation + + po/de.po | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit f91ef4ef15d220f6899c97aaf5b1c0a8f68cfe9a +Author: Christian Persch +AuthorDate: Mon Feb 25 14:48:14 2013 +0100 +Commit: Christian Persch +CommitDate: Tue Mar 5 17:27:53 2013 +0100 + + unicode: Allow noncharacters + + Implement unicode corrigendum #9. + + https://bugzilla.gnome.org/show_bug.cgi?id=694669 + + glib/gutf8.c | 14 +++----------- + glib/tests/unicode.c | 2 +- + 2 files changed, 4 insertions(+), 12 deletions(-) + +commit 06a59f889a8d3c8a63622af64d253632a0530017 +Author: Ognyan Tonchev +AuthorDate: Thu Feb 28 18:27:14 2013 +0100 +Commit: Colin Walters +CommitDate: Tue Mar 5 10:55:29 2013 -0500 + + base64: Fix g_base64_decode_step () + + Do not produce invalid data if there was padding character in the + previous sequence. + + https://bugzilla.gnome.org/show_bug.cgi?id=694843 + + glib/gbase64.c | 14 ++++++++++++-- + glib/tests/base64.c | 2 -- + 2 files changed, 12 insertions(+), 4 deletions(-) + +commit 27b19cee1bb5007f9dd123e171bcf3f978263f15 +Author: Colin Walters +AuthorDate: Fri Mar 1 13:29:29 2013 -0500 +Commit: Colin Walters +CommitDate: Tue Mar 5 10:55:21 2013 -0500 + + base64: Add tests for incremental decoding with very small block size + + At the moment, sizes 1-3 are commented out since they fail, but + a future patch will fix that. + + https://bugzilla.gnome.org/show_bug.cgi?id=694843 + + glib/tests/base64.c | 53 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 53 insertions(+) + +commit f641699299ed2713cf247e3465bb1a21612b36f7 +Author: Cosimo Cecchi +AuthorDate: Fri May 4 17:51:35 2012 -0400 +Commit: Cosimo Cecchi +CommitDate: Mon Mar 4 14:40:36 2013 -0500 + + desktopappinfo: check whether the specified executable is valid + + Before declaring the desktop file as valid, make sure the referenced + application actually exists in path and the commandline is not + malformed. + + https://bugzilla.gnome.org/show_bug.cgi?id=675333 + + gio/gdesktopappinfo.c | 33 ++++++++++++++++++++++++++++++++- + 1 file changed, 32 insertions(+), 1 deletion(-) + +commit fd04d6860fd6a964b7e1dde05cd5b12ba1b7994e +Author: Mario Blättermann +AuthorDate: Sun Mar 3 22:11:21 2013 +0100 +Commit: Mario Blättermann +CommitDate: Sun Mar 3 22:11:21 2013 +0100 + + [l10n] Updated German translation + + po/de.po | 1313 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 668 insertions(+), 645 deletions(-) + +commit a9a6c4ae81eec7b2ac0ceecaff9a63bb7ec6bc50 +Author: Matthias Clasen +AuthorDate: Sat Mar 2 09:25:48 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Mar 2 09:30:41 2013 -0500 + + Update for 2.37.9 + + NEWS | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +commit 7be9de786a4cb1d0ab63a412ee0af2de0d250e61 +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Sat Mar 2 20:42:13 2013 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Sat Mar 2 20:42:13 2013 +0700 + + Updated Vietnamese translation + + po/vi.po | 51 ++++++++++++++++++--------------------------------- + 1 file changed, 18 insertions(+), 33 deletions(-) + +commit 773297519eeb532b8989337333a95bc960e97765 +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Sat Mar 2 20:37:35 2013 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Sat Mar 2 20:37:35 2013 +0700 + + po/vi: import from Damned Lies + + po/vi.po | 1393 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 717 insertions(+), 676 deletions(-) + +commit 14768e97f8c87c0f4a32a7f946017fd853a67512 +Author: Matthias Clasen +AuthorDate: Fri Mar 1 19:11:11 2013 -0500 +Commit: Matthias Clasen +CommitDate: Fri Mar 1 19:11:11 2013 -0500 + + Make GList more robust + + g_list_delete_link was silently ignoring a NULL link before + the last change. Make it do so again, since we've found callers + that rely on this. + + glib/glist.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 10630eed3066907a880816592bb35965d203f02c +Author: Chao-Hsiung Liao +AuthorDate: Fri Mar 1 22:23:13 2013 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Fri Mar 1 22:23:13 2013 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 1306 + +++++++++++++++++++++++++++++----------------------------- + po/zh_TW.po | 1308 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 1330 insertions(+), 1284 deletions(-) + +commit fe10e864712d00191d1d3234e7a5ca643fd7ac6b +Author: Rafael Ferreira +AuthorDate: Fri Mar 1 06:35:30 2013 -0300 +Commit: Rafael Ferreira +CommitDate: Fri Mar 1 06:35:30 2013 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 1581 + ++++++++++++++++++++++++++--------------------------------- + 1 file changed, 687 insertions(+), 894 deletions(-) + +commit c7996825ce999a99f2d73722419c0d11d0b52238 +Author: Chun-wei Fan +AuthorDate: Tue Feb 26 12:38:57 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Mar 1 16:12:37 2013 +0800 + + Fix gspawn-win32-helper.c with newer Microsoft CRTs + + The newer Microsoft CRTs (8.0/2005 and later) impose much stricter + (paranoid) checks on close() being doubly called and the use of + invalid file descriptors. This makes the calls on the file + descriptors + use more caution when using them and only call close() when necessary. + + This also adds an (empty) invalid parameter handler* as required + by the + newer Microsoft CRTs to prevent the system from aborting the process + when we are checking whether a file descriptor is valid. + + [*]: http://msdn.microsoft.com/en-us/library/a9yf33zb.aspx + + https://bugzilla.gnome.org/show_bug.cgi?id=693646 + + glib/gspawn-win32-helper.c | 79 + ++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 72 insertions(+), 7 deletions(-) + +commit 872d3634a78b417612d90c3472d5cd7078ef2440 +Author: Chun-wei Fan +AuthorDate: Fri Mar 1 16:11:24 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Mar 1 16:12:36 2013 +0800 + + Update config.h.win32.in + + Add entry for __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, to better reflect + the + entries of items in config.h.in. We are not currently defining + this here + as the pre-configured config.h.win32.in is primarily meant for Visual + Studio builds of GLib-the MinGW/GCC/Clang builds of GLib will normally + use the autotools builds, which should give the correct config.h + entries + upon running ./configure. + + config.h.win32.in | 3 +++ + 1 file changed, 3 insertions(+) + +commit 3f678afa0547f0bacf0579c82a8939c25f022643 +Author: Wylmer Wang +AuthorDate: Thu Feb 28 21:07:02 2013 +0800 +Commit: Aron Xu +CommitDate: Thu Feb 28 21:07:02 2013 +0800 + + Update Simplified Chinese translation + + po/zh_CN.po | 1969 + ++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 1082 insertions(+), 887 deletions(-) + +commit 156b14cde5423c5bdaf8f28f1a8a5a0b54fbe455 +Author: Colin Walters +AuthorDate: Tue Feb 26 11:19:51 2013 -0500 +Commit: Colin Walters +CommitDate: Wed Feb 27 08:34:01 2013 -0500 + + build: Add --disable-compile-warnings + + Some (broken) toolchains for example trip up + -Werror=missing-prototypes in system headers. This patch allows + people to skip the formerly hardcoded "baseline" warnings. + + https://bugzilla.gnome.org/show_bug.cgi?id=694757 + + configure.ac | 10 ++++++++-- + gio/Makefile.am | 2 ++ + gio/tests/Makefile.am | 11 ++++++----- + glib/Makefile.am | 2 ++ + glib/tests/Makefile.am | 2 ++ + gmodule/Makefile.am | 2 ++ + gobject/Makefile.am | 2 ++ + gobject/tests/Makefile.am | 2 ++ + gthread/Makefile.am | 2 ++ + 9 files changed, 28 insertions(+), 7 deletions(-) + +commit e3582c617cf00f3c90b6448d11cf253933a28802 +Author: Behdad Esfahbod +AuthorDate: Mon Feb 25 23:08:43 2013 -0500 +Commit: Behdad Esfahbod +CommitDate: Mon Feb 25 23:08:43 2013 -0500 + + Minor + + glib/gwakeup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 547221b486473ed9b7f85634ce162f937e5912b1 +Author: Behdad Esfahbod +AuthorDate: Mon Feb 25 22:48:03 2013 -0500 +Commit: Behdad Esfahbod +CommitDate: Mon Feb 25 22:48:03 2013 -0500 + + [win32] Fix atomic ops on mingw* + + Bug 682896 - glib doesn't build on mingw32 + + configure.ac | 63 + ++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 38 insertions(+), 25 deletions(-) + +commit e1ccae841658854a5db0d907edb2b1f2c0a68ef5 +Author: Behdad Esfahbod +AuthorDate: Mon Feb 25 22:01:11 2013 -0500 +Commit: Behdad Esfahbod +CommitDate: Mon Feb 25 22:11:30 2013 -0500 + + [win32] Add fallback implementations for gatomic.c on mingw32 + + Bug 682896 - glib doesn't build on mingw32 + + glib/gatomic.c | 72 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 67 insertions(+), 5 deletions(-) + +commit 8efe198d2e7f2c02d2d11831e6f99313960ca1c3 +Author: A S Alam +AuthorDate: Tue Feb 26 07:18:28 2013 +0530 +Commit: A S Alam +CommitDate: Tue Feb 26 07:18:28 2013 +0530 + + Punjabi: Translation updated (aalam) + + po/pa.po | 1263 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 647 insertions(+), 616 deletions(-) + +commit 921593b022491ce3dbd61739cc9808a715f25b9f +Author: Matthias Clasen +AuthorDate: Sun Feb 24 22:54:09 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 24 22:56:35 2013 +0100 + + GList: be more robust + + We can detect list corruption in some cases. The new test case + demonstrates a case where we can warn instead of silently corrupt + the list. This was pointed out by Steve Grubb. + + Also, use the same auxiliary routine in all places where we unlink + a list element. + + glib/glist.c | 69 + ++++++++++++++++++++++++++++--------------------------- + glib/tests/list.c | 27 ++++++++++++++++++++++ + 2 files changed, 62 insertions(+), 34 deletions(-) + +commit 6833267a07cb3251bc1fa89c99cc3fe6c47001e2 +Author: Dan Winship +AuthorDate: Sun Feb 24 15:02:10 2013 +0100 +Commit: Dan Winship +CommitDate: Sun Feb 24 15:02:57 2013 +0100 + + gtestutils: fix two GLIB_AVAILABLE flags + + g_test_expect_message() and g_test_assert_expected_messages() appeared + in 2.34 + + glib/gtestutils.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit cbd070d8b8589dda6d70f09e8fbff12610aa4b3f +Author: Ján Kyselica +AuthorDate: Fri Feb 22 22:27:10 2013 +0000 +Commit: Pavol Klačanský +CommitDate: Fri Feb 22 22:27:10 2013 +0000 + + Updated Slovak translation + + po/sk.po | 655 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 332 insertions(+), 323 deletions(-) + +commit 0a39acc0579d89fc9bfbcf31596f336568a795c2 +Author: Gheyret Kenji +AuthorDate: Fri Feb 22 22:52:26 2013 +0900 +Commit: Gheyret Kenji +CommitDate: Fri Feb 22 22:52:26 2013 +0900 + + Updated Uyghur translation + + Signed-off-by: Gheyret Kenji + + po/ug.po | 193 + +++++++++++++++++++++++++-------------------------------------- + 1 file changed, 75 insertions(+), 118 deletions(-) + +commit f5d40bd8138991287bbdc2e249bd35cf82caf123 +Author: Ryan Lortie +AuthorDate: Thu Feb 21 11:25:26 2013 +0000 +Commit: Ryan Lortie +CommitDate: Fri Feb 22 00:54:50 2013 +0000 + + gsignal: improve warning output + + When looking up signals by name (to connect, for example) and + the named + signal cannot be found on the given instance, report the type of the + instance. + + This is quite a lot more useful as a diagnostic message than only a + memory address. + + https://bugzilla.gnome.org/show_bug.cgi?id=694350 + + gobject/gsignal.c | 26 ++++++++++++++++++-------- + 1 file changed, 18 insertions(+), 8 deletions(-) + +commit aede77464259e6d50e724113c16f301367201a72 +Author: Alexander Larsson +AuthorDate: Thu Feb 21 16:10:36 2013 +0100 +Commit: Alexander Larsson +CommitDate: Thu Feb 21 16:54:44 2013 +0100 + + signals: Ensure we ref handler in emission fast path + + We need to keep a reference to the handler in the fast path, just like + in the slow path, otherwise if another thread disconnects the handler + we may destroy the closure while we're using it without the lock held. + + We also move the freeing of the instance to after the emission + is totally + done as the handler_unref_R (and the tracepoint) reference it. + + https://bugzilla.gnome.org/show_bug.cgi?id=694253 + + gobject/gsignal.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit 3e274423bacfa1b702fea93fba9d6d44c650db44 +Author: Alexander Larsson +AuthorDate: Thu Feb 21 16:06:24 2013 +0100 +Commit: Alexander Larsson +CommitDate: Thu Feb 21 16:54:44 2013 +0100 + + signals: No need to use atomics for Handler refcount + + handler_ref and handler_unref_R are always called with the signal + lock held. This is obvious for handler_unref_R as it even sometimes + drops this lock, and can be verified quickly for handler_ref by + looking + at all call sites. + + This improves the performace about 6% on the emit-handled and the + emit-handled-generic tests. + + https://bugzilla.gnome.org/show_bug.cgi?id=694253 + + gobject/gsignal.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +commit 5bbca5fa0c96904542f286b55329820a9567a9c9 +Author: Ryan Lortie +AuthorDate: Thu Feb 21 14:58:32 2013 +0000 +Commit: Ryan Lortie +CommitDate: Thu Feb 21 14:59:53 2013 +0000 + + GApplication: document IS_SERVICE timeout properly + + The documentation was suggesting that using G_APPLICATION_IS_SERVICE + would automatically set an inactivity timeout (ie: app stays + around for + a while after the use count drops to zero). + + In reality, it only adds an initial 10 second wait for the first + activation message to arrive after which it uses the normal inactivity + timeout mechanism. + + gio/gapplication.c | 9 ++++++--- + gio/gioenums.h | 5 +++-- + 2 files changed, 9 insertions(+), 5 deletions(-) + +commit ce0ff7c9da6d159669e4aad2e964a56fc915cc7c +Author: Ryan Lortie +AuthorDate: Thu Feb 21 10:19:27 2013 +0000 +Commit: Ryan Lortie +CommitDate: Thu Feb 21 10:19:27 2013 +0000 + + threads: don't do rlimit test when running as root + + Linux CAP_SYS_RESOURCE overrides RLIMIT_NPROC so we probably shouldn't + test thread creation failure when running the test as root... + + glib/tests/thread.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 9670d06a660cd27a30a339798f4af1ce4c5abb29 +Author: Dan Winship +AuthorDate: Tue Feb 19 16:12:30 2013 -0500 +Commit: Dan Winship +CommitDate: Wed Feb 20 07:33:58 2013 -0500 + + GNetworkMonitorBase: implement can_reach_async + + Implement the g_network_monitor_can_reach_async() rather than falling + back to the default implementation, which calls the sync version (not + in a thread). + + https://bugzilla.gnome.org/show_bug.cgi?id=694181 + + gio/gnetworkmonitorbase.c | 130 + +++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 112 insertions(+), 18 deletions(-) + +commit 4ca3d80ff3d5d076c0bfc187b4efa9fa51cbcca2 +Author: Matthew Barnes +AuthorDate: Tue Feb 19 11:18:11 2013 -0500 +Commit: Dan Winship +CommitDate: Wed Feb 20 07:33:58 2013 -0500 + + g_network_monitor_base_can_reach: Check for default route after + enumerating. + + Enumerate the GSocketConnectable before checking for a default route. + For some connectable types this will involve a DNS lookup. This will + elminate false positives for hosts behind a VPN since DNS lookup will + fail if the VPN is not connected. + + https://bugzilla.gnome.org/show_bug.cgi?id=694181 + + gio/gnetworkmonitorbase.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +commit c6c11665668c47841011258e5dbca07ad3d8aba0 +Author: Dan Winship +AuthorDate: Tue Feb 19 15:19:22 2013 -0500 +Commit: Dan Winship +CommitDate: Wed Feb 20 07:33:58 2013 -0500 + + GNetworkAddress: drop cached addresses on resolver reload + + If the resolver reloads (ie, if /etc/resolv.conf changes), + GNetworkAddress needs to re-resolve its addresses the next time it's + enumerated. Otherwise hosts that have different IP addresses inside + and outside a VPN won't work correctly if you hold on to a + GNetworkAddress for them for a long time. + + https://bugzilla.gnome.org/show_bug.cgi?id=694181 + + gio/gnetworkaddress.c | 70 + +++++++++++++++++++++++++++++++++++------------- + gio/gnetworkingprivate.h | 2 ++ + gio/gresolver.c | 14 ++++++++++ + 3 files changed, 67 insertions(+), 19 deletions(-) + +commit cfafad5aefeeab1a4ee208cefa15e01d31932611 +Author: Ryan Lortie +AuthorDate: Mon Feb 4 14:41:25 2013 +0100 +Commit: Ryan Lortie +CommitDate: Wed Feb 20 11:09:30 2013 +0000 + + gutils: stop g_get_home_dir() from reading passwd + + In the case that the "HOME" environment variable is set (as it + is under + normal circumstances), we don't really need to be opening /etc/passwd. + + For historical reasons (ie: how we used to ignore $HOME) and due + to the + grouping of many unrelated things together (reading username, + hostname, + home directory, tmpdir, etc.) into one function we were still opening + /etc/passwd in g_get_home_dir(), even if $HOME was set. + + Since earlier commits removed code from it, all that remains in + g_get_any_init_do() is the logic for dealing with $HOME and reading + the + password database. + + We now split the logic to deal with $HOME into g_get_home_dir(). With + only the password database functionality remaining, + g_get_any_init_do() + is renamed to g_get_user_database_entry() and modified not to + set global + variables but rather return a struct. If g_get_home_dir() cannot find + $HOME, it falls back to calling g_get_user_database_entry() and using + the home directory from there. + + Use of the 'g_utils_global' lock is further reduced by using + g_once_init_enter() to protect the critical sections in each of + g_get_user_database_entry() and g_get_home_dir(). + + Finally, the g_get_user_name() and g_get_real_name() functions are + modified to use the new regime. + + https://bugzilla.gnome.org/show_bug.cgi?id=693204 + + glib/gutils.c | 399 + +++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 213 insertions(+), 186 deletions(-) + +commit 167c73faf461cf84accffe190813ce0ab5ef6cdc +Author: Ryan Lortie +AuthorDate: Mon Feb 4 14:40:03 2013 +0100 +Commit: Ryan Lortie +CommitDate: Wed Feb 20 11:09:29 2013 +0000 + + gutils: replace direct references to g_home_dir + + Some code was directly calling g_get_any_init() and then expecting + to be + able to use the static 'g_home_dir' variable directly. Change these + over to g_get_home_dir() instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=693204 + + glib/gutils.c | 37 +++++++++++++++---------------------- + 1 file changed, 15 insertions(+), 22 deletions(-) + +commit 9879c7f5fa640d994dc1209ef333d4be706670f0 +Author: Ryan Lortie +AuthorDate: Mon Feb 4 14:17:08 2013 +0100 +Commit: Ryan Lortie +CommitDate: Wed Feb 20 11:09:29 2013 +0000 + + gutils: split out g_get_tmp_dir() + + Remove the code for getting the tmpdir from g_get_any_init_do() and + outside of the g_utils_global lock. + + https://bugzilla.gnome.org/show_bug.cgi?id=693204 + + glib/gutils.c | 125 + ++++++++++++++++++++++++++-------------------------------- + 1 file changed, 55 insertions(+), 70 deletions(-) + +commit 3c9691f7f8b3b66905ab689a5dddc6157182b50e +Author: Ryan Lortie +AuthorDate: Mon Feb 4 13:49:06 2013 +0100 +Commit: Ryan Lortie +CommitDate: Wed Feb 20 11:09:29 2013 +0000 + + gutils: split out g_get_host_name() + + Remove the code for getting the hostname from g_get_any_init_do() and + outside of the g_utils_global lock. + + https://bugzilla.gnome.org/show_bug.cgi?id=693204 + + glib/gutils.c | 33 ++++++++++++++++++--------------- + 1 file changed, 18 insertions(+), 15 deletions(-) + +commit 8c42a663f8182f8281c083390aa761e8e9badc63 +Author: Ryan Lortie +AuthorDate: Mon Feb 4 14:04:05 2013 +0100 +Commit: Ryan Lortie +CommitDate: Wed Feb 20 11:09:29 2013 +0000 + + win32: Drop old codepage ABI from gutils.c + + This is a source-compatible change and only breaks ABI with respect to + truly ancient binaries (and those binaries are already broken + for other + reasons). + + Back in the day, functions like g_get_user_name() used to return + strings + in the system codepage instead of utf8 (as they do today). + + It was decided at some point to change these functions to return utf8, + breaking source compatibility but keeping ABI compatibility. This was + done by exporting new symbols with names like g_get_user_name_utf8() + and + using a #define of the old name over to the new name (so that newly + compiled code would link against the _utf8 version, but old binaries + would continue to use the non-utf8 variant). + + Meanwhile, glib has undergone several ABI breaks on Windows since, so + those old binaries don't work anymore. + + Start to clean up this mess by removing the #define renaming. New + binaries calling g_get_user_name() will now link against + g_get_user_name() and it will return utf8. + + We must keep the functions like g_get_user_name_utf8() for binary + compatibility with recently built programs (ie: ones built with the + renaming). Nobody should have ever been calling these directly and of + course they can return utf8, so just add them as internal wrappers + in the + .c file and declare them _GLIB_EXTERN there. + + One day, if we feel like breaking Windows ABI again, we can finish the + cleanup by dropping the wrappers. There is some talk of introducing + something like 'ABI compatible for two years' and this change would be + compatible with such a regime. + + https://bugzilla.gnome.org/show_bug.cgi?id=693204 + + glib/gutils.c | 71 + ++++++++++------------------------------------------------- + glib/gutils.h | 19 ---------------- + 2 files changed, 12 insertions(+), 78 deletions(-) + +commit b029135ed49b33d8f301d79a9ca27df6894d8b22 +Author: Mike Ruprecht +AuthorDate: Mon Feb 18 07:56:05 2013 -0600 +Commit: Mike Ruprecht +CommitDate: Tue Feb 19 08:47:45 2013 -0600 + + GOutputStream: Remove unused SpliceUserData struct + + gio/goutputstream.c | 6 ------ + 1 file changed, 6 deletions(-) + +commit 90f726f6b96c274c35358dc178cc0e85a18fdc99 +Author: Chun-wei Fan +AuthorDate: Tue Feb 19 18:26:30 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Feb 19 18:26:30 2013 +0800 + + Update Visual Studio property sheets + + "install" gio/gsimpleproxyresolver.h... + + build/win32/vs10/glib.props | 2 ++ + build/win32/vs9/glib.vsprops | 1 + + 2 files changed, 3 insertions(+) + +commit d21699a272bd046d43faaeb107770bef16c47dd7 +Author: Ryan Lortie +AuthorDate: Tue Feb 19 10:06:55 2013 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 19 10:06:55 2013 +0000 + + *bump* + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 766dec9670a40035cee456e8776947085fc50814 +Author: Ryan Lortie +AuthorDate: Tue Feb 19 09:29:28 2013 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 19 09:29:28 2013 +0000 + + GLib 2.35.8 + + NEWS | 35 +++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 36 insertions(+), 1 deletion(-) + +commit 4e975bfc9e3268ec271480bed89091ad2d4290db +Author: Мирослав Николић + +AuthorDate: Mon Feb 18 10:43:49 2013 +0100 +Commit: Мирослав Николић + +CommitDate: Mon Feb 18 10:43:49 2013 +0100 + + Updated Serbian translation + + po/sr.po | 2 +- + po/sr@latin.po | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 7c3b4617cfb58cc51e78e9f9a729b6e89130818b +Author: Мирослав Николић + +AuthorDate: Mon Feb 18 10:38:38 2013 +0100 +Commit: Мирослав Николић + +CommitDate: Mon Feb 18 10:38:38 2013 +0100 + + Updated Serbian translation + + po/sr.po | 275 + ++++++++++++++++++++++++++++----------------------------- + po/sr@latin.po | 275 + ++++++++++++++++++++++++++++----------------------------- + 2 files changed, 272 insertions(+), 278 deletions(-) + +commit c910c3e7a319db88749418cedbebe05fbe1b9324 +Author: Alexander Larsson +AuthorDate: Mon Feb 18 10:30:29 2013 +0100 +Commit: Alexander Larsson +CommitDate: Mon Feb 18 10:30:29 2013 +0100 + + GNetworkAddress: Build if AI_NUMERICSERV not defined + + This is not defined on all Win32 SDKs and in some unixes. + If its not defined its safe to just ignore it though. + + gio/gnetworkaddress.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit d175fae8d5226cd2f24454c1fa6cc3ca6ba317ce +Author: Piotr Drąg +AuthorDate: Sun Feb 17 16:49:40 2013 +0100 +Commit: Piotr Drąg +CommitDate: Sun Feb 17 16:49:40 2013 +0100 + + Updated Polish translation + + po/pl.po | 56 ++++++++++++++++++++++++++++---------------------------- + 1 file changed, 28 insertions(+), 28 deletions(-) + +commit 4061a96cc182453bb8c6f0c958d2461f64db8a11 +Author: Dan Winship +AuthorDate: Sun Feb 17 09:54:11 2013 -0500 +Commit: Dan Winship +CommitDate: Sun Feb 17 09:54:58 2013 -0500 + + GSimpleProxyResolver: add missing include + + string.h was getting pulled in by something else on Linux, but not + elsewhere + + gio/gsimpleproxyresolver.c | 1 + + 1 file changed, 1 insertion(+) + +commit c78d0e9ac4d9f08b37af946486c3e6db894ac168 +Author: Dan Winship +AuthorDate: Fri Feb 15 10:39:19 2013 -0500 +Commit: Dan Winship +CommitDate: Fri Feb 15 10:39:19 2013 -0500 + + GSocketClient: add missing NULL to g_object_set() call + + gio/gsocketclient.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit e4695bd6f547a05f335f43038787873242f264cb +Author: Thomas Perl +AuthorDate: Sun Feb 10 00:16:49 2013 +0100 +Commit: Dan Winship +CommitDate: Fri Feb 15 10:12:36 2013 -0500 + + docs/reference/glib/cross.xml: Fix typo: yes/np -> yes/no + + https://bugzilla.gnome.org/show_bug.cgi?id=693502 + + docs/reference/glib/cross.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8a77f7bb181f3341a6866cd0e64779c35b3a3f61 +Author: Dan Winship +AuthorDate: Wed Dec 12 16:12:09 2012 +0100 +Commit: Dan Winship +CommitDate: Fri Feb 15 09:10:00 2013 -0500 + + gnetworkaddress: preserve IPv6 scope ID in IP literals + + If a GNetworkAddress is created with a hostname like "fe80::xxx%em1", + make sure that the scope_id corresponding to "em1" is present in the + GSocketAddresses it returns when used as a GSocketConnectable. + + https://bugzilla.gnome.org/show_bug.cgi?id=684404 + + gio/gnetworkaddress.c | 88 + ++++++++++++++++++++++++++++++++++-------------- + gio/tests/inet-address.c | 38 +++++++++++++++++++++ + 2 files changed, 100 insertions(+), 26 deletions(-) + +commit a44a3cc15091a2f6ba13bfede5dbdfc4215715cb +Author: Dan Winship +AuthorDate: Thu Feb 14 18:06:41 2013 -0500 +Commit: Dan Winship +CommitDate: Fri Feb 15 09:03:48 2013 -0500 + + GSimpleProxyResolver: fix for the case where the default proxy is NULL + + gio/gsimpleproxyresolver.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit afc0a7257584467394bd3fb8c04918646ac34a88 +Author: Piotr Drąg +AuthorDate: Fri Feb 15 13:45:35 2013 +0100 +Commit: Piotr Drąg +CommitDate: Fri Feb 15 13:45:35 2013 +0100 + + Updated POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit cb40853eaebe0adcad8ca9baa8c7f1d0a3d75721 +Author: Jasper St. Pierre +AuthorDate: Fri Feb 15 05:39:20 2013 -0500 +Commit: Jasper St. Pierre +CommitDate: Fri Feb 15 05:39:20 2013 -0500 + + More doc fixes + + gio/gasyncresult.h | 2 +- + gio/gmenumodel.h | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 3522567519facaaea24c4dc3414bb69cecb2b0ec +Author: Jasper St. Pierre +AuthorDate: Fri Feb 15 05:35:05 2013 -0500 +Commit: Jasper St. Pierre +CommitDate: Fri Feb 15 05:35:29 2013 -0500 + + gmenumodel: Fix documentation + + gio/gmenumodel.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ee17a54c289b8be286a54c594cff5c2d46345054 +Author: Dan Winship +AuthorDate: Sat Jan 26 09:54:03 2013 -0500 +Commit: Dan Winship +CommitDate: Thu Feb 14 10:24:14 2013 -0500 + + GSimpleProxyResolver: new simple GProxyResolver class + + Add GSimpleProxyResolver, for letting people do static proxy + resolution, and to use as a base class for other resolvers (such as + GProxyResolverGnome). + + https://bugzilla.gnome.org/show_bug.cgi?id=691105 + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 20 ++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 8 +- + gio/gio.h | 1 + + gio/gsimpleproxyresolver.c | 593 + ++++++++++++++++++++++++++++++++++++ + gio/gsimpleproxyresolver.h | 91 ++++++ + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 1 + + gio/tests/simple-proxy.c | 236 ++++++++++++++ + 10 files changed, 950 insertions(+), 3 deletions(-) + +commit 7c49869eaef4d49c57bbdf4e95989e4d8f864623 +Author: Dan Winship +AuthorDate: Sun Jan 27 13:53:36 2013 -0500 +Commit: Dan Winship +CommitDate: Thu Feb 14 10:24:14 2013 -0500 + + GSocketClient: add proxy-resolver property + + Add a proxy-resolver property to GSocketClient, to allow overriding + proxy resolution in situations where you need to force a particular + proxy rather than using the system defaults. + + https://bugzilla.gnome.org/show_bug.cgi?id=691105 + + docs/reference/gio/gio-sections.txt | 2 + + gio/gproxyaddressenumerator.c | 43 ++++++++-- + gio/gsocketclient.c | 113 ++++++++++++++++++++++++-- + gio/gsocketclient.h | 5 ++ + gio/tests/proxy-test.c | 154 + ++++++++++++++++++++++++++++++++++-- + 5 files changed, 302 insertions(+), 15 deletions(-) + +commit d200208d2b8bad7babdd56f4ec6fcae1589e142b +Author: Simon McVittie +AuthorDate: Wed Feb 13 20:42:58 2013 +0000 +Commit: Simon McVittie +CommitDate: Wed Feb 13 20:42:58 2013 +0000 + + g_dbus_address_escape_value: add + + This is a GLib reimplementation of dbus_address_escape_value(). + It's useful if you want to construct a D-Bus address from pieces: + for instance, if you have a listening Unix socket whose path is known, + and you want to connect a D-Bus peer to it. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=693673 + Reviewed-by: Colin Walters + [amended to add Since: 2.36 as per review] + Signed-off-by: Simon McVittie + + gio/gdbusaddress.c | 47 + +++++++++++++++++++++++++++++++++++++++++++++ + gio/gdbusaddress.h | 3 +++ + gio/tests/gdbus-addresses.c | 24 +++++++++++++++++++++++ + 3 files changed, 74 insertions(+) + +commit 035cd81477ca9dc3061ff056c269fee28aab89c3 +Author: Stef Walter +AuthorDate: Wed Feb 13 07:20:43 2013 +0100 +Commit: Stef Walter +CommitDate: Wed Feb 13 07:23:13 2013 +0100 + + gio: Fix annotations on g_[async_]initable_new() and friends + + These return a GObject even though in C it's represented as a gpointer + + https://bugzilla.gnome.org/show_bug.cgi?id=693694 + + gio/gasyncinitable.c | 4 ++-- + gio/ginitable.c | 9 ++++++--- + 2 files changed, 8 insertions(+), 5 deletions(-) + +commit 23d6d1769bc95eba6029dae4593755154c320cf4 +Author: Matthias Clasen +AuthorDate: Sun Feb 10 11:42:58 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 10 12:23:02 2013 -0500 + + Fix the build on Solaris + + Make the btrfs support explicitly linux-only, as that is what it + is. With this, there's no need anymore to check for sys/ioctl.h + either. + https://bugzilla.gnome.org/show_bug.cgi?id=692829 + + configure.ac | 1 - + gio/gfile.c | 6 +++--- + 2 files changed, 3 insertions(+), 4 deletions(-) + +commit 27ecab75538a47ed89b78b4c212d870a9be60bac +Author: Aleksander Morgado +AuthorDate: Thu Feb 7 10:54:24 2013 +0100 +Commit: Aleksander Morgado +CommitDate: Sat Feb 9 20:34:52 2013 +0100 + + gdbusobjectmanagerclient: always connect to proxy's 'g-signal' + + If we don't connect to the control proxy's 'g-signal' signal, we + won't have + 'object-added' or 'object-removed' signals. So, connect to the + 'g-signal' not + only when there already is a name-owner, but always. + + https://bugzilla.gnome.org/show_bug.cgi?id=693285 + + gio/gdbusobjectmanagerclient.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit f9d6dcac0b0bdd30a19cb81dfde96264570bc815 +Author: Wouter Bolsterlee +AuthorDate: Sat Feb 9 17:50:16 2013 +0100 +Commit: Wouter Bolsterlee +CommitDate: Sat Feb 9 17:50:16 2013 +0100 + + Updated Dutch translation + + po/nl.po | 94 + +++++++++++++++++++--------------------------------------------- + 1 file changed, 28 insertions(+), 66 deletions(-) + +commit ff9b0875d04267d7a42db9f3885bcea42faef421 +Author: Rachid +AuthorDate: Sat Feb 9 17:41:59 2013 +0100 +Commit: Wouter Bolsterlee +CommitDate: Sat Feb 9 17:41:59 2013 +0100 + + Updated Dutch translation + + po/nl.po | 6318 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 3442 insertions(+), 2876 deletions(-) + +commit d7c8eda18676dbb1e6743ef46b3bbfe00cdbb578 +Author: Ryan Lortie +AuthorDate: Thu Feb 7 14:05:28 2013 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 7 14:15:45 2013 -0500 + + tests: comment out asserts in dynamic type tests + + We have some testcases that assert that type modules are unloaded + after + the last reference on them is dropped. Comment out those asserts now + that we turned the last unref into a no-op. + + https://bugzilla.gnome.org/show_bug.cgi?id=693351 + + tests/gobject/defaultiface.c | 6 ++++++ + tests/gobject/dynamictype.c | 4 ++++ + 2 files changed, 10 insertions(+) + +commit 72df62600d1ab473125b6e8beb998e71aa63701e +Author: Ryan Lortie +AuthorDate: Thu Feb 7 13:50:16 2013 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 7 14:15:45 2013 -0500 + + disable support for unloading of dynamic types + + Experimentally disable the ability to unload dynamic types by refusing + to drop the last reference on types (effectively turning the type + unloading into dead code). + + The plan is to leave things like this for a stable cycle and only + proceed with removing the code if we are sure that there are no + unforeseen problems. + + https://bugzilla.gnome.org/show_bug.cgi?id=693351 + + gobject/gtype.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 2f61a877d8e8e1311d905ab374e421ed0f37c3b7 +Author: Dan Winship +AuthorDate: Thu Feb 7 08:41:00 2013 -0500 +Commit: Dan Winship +CommitDate: Thu Feb 7 08:41:00 2013 -0500 + + build: fix configure arpa/nameser.h test for Solaris + + https://bugzilla.gnome.org/show_bug.cgi?id=692827 + + configure.ac | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 5b2c87538d09422c2aad61bb42400907c521ec4e +Author: Fran Diéguez +AuthorDate: Wed Feb 6 18:20:41 2013 +0100 +Commit: Fran Diéguez +CommitDate: Wed Feb 6 18:20:41 2013 +0100 + + Updated Galician translations + + po/gl.po | 518 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 259 insertions(+), 259 deletions(-) + +commit 7bcd03b570c8dd1e9c9f1607cd3ec29f2895f526 +Author: Ryan Lortie +AuthorDate: Tue Feb 5 18:48:37 2013 +0100 +Commit: Ryan Lortie +CommitDate: Tue Feb 5 15:50:19 2013 -0500 + + GLib 2.35.7 + + NEWS | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit 87d9b0b1fd18f7e5e543b69476e44811af809cf6 +Author: Milo Casagrande +AuthorDate: Tue Feb 5 19:22:03 2013 +0100 +Commit: Milo Casagrande +CommitDate: Tue Feb 5 19:22:03 2013 +0100 + + [l10n] Updated Italian translation. + + po/it.po | 1304 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 655 insertions(+), 649 deletions(-) + +commit 7788bb3a915cc0818186bb2c04a51e195579d13e +Author: Matthias Clasen +AuthorDate: Mon Feb 4 22:46:24 2013 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 4 22:46:24 2013 -0500 + + Make G_IO_FLAG_IS_WRITEABLE and enum value + + Having it as a define was causing some problems for bindings. + https://bugzilla.gnome.org/show_bug.cgi?id=657045 + + glib/giochannel.h | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 262ebcd3fa0aff41e7e8e7e70ac1d493f41f2470 +Author: Matthias Clasen +AuthorDate: Mon Feb 4 22:35:29 2013 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 4 22:35:29 2013 -0500 + + docs: Add 2 missing : + + The file attribute names go by namespace::keyname, not + namespace:keyname. + + https://bugzilla.gnome.org/show_bug.cgi?id=636683 + + gio/gfileattribute.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 7f9af8071ca6b9f2ba9e1b60ae41aeeb7274e491 +Author: Andoni Morales Alastruey +AuthorDate: Sat Nov 10 16:27:56 2012 +0100 +Commit: Matthias Clasen +CommitDate: Mon Feb 4 21:58:10 2013 -0500 + + configure: fix check for atomic operations + + Some compilers have support for atomic operations, but do not + define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4. Instead of checking + for this define, we check for __sync_bool_compare_and_swap and + define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 if the compiler doesn't + define it. + + https://bugzilla.gnome.org/show_bug.cgi?id=682818 + + configure.ac | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +commit 6b3ec827325cdca7eb2728b07eda4c6b21833b65 +Author: Víctor Manuel Jáquez Leal +AuthorDate: Sun Feb 3 19:52:58 2013 +0100 +Commit: Ryan Lortie +CommitDate: Sun Feb 3 23:59:21 2013 +0100 + + Compile private test with -pthread on UNIX + + The commit f5f151cb removed this linkage, which is needed, + at least for the toolchain gcc version 4.7.2 (Debian 4.7.2-5) + + https://bugzilla.gnome.org/show_bug.cgi?id=693105 + + glib/tests/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit 6bcb1c0ed6d1fc0ccade1a1b1bd2167b226ec39c +Author: Matthias Clasen +AuthorDate: Sun Feb 3 15:14:57 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 15:14:57 2013 -0500 + + Post-release version bump + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3fe8ed04c7ae7a34af03056e73962c2beea53486 +Author: Matthias Clasen +AuthorDate: Sun Feb 3 14:25:09 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 14:25:09 2013 -0500 + + 2.35.6 + + NEWS | 64 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 65 insertions(+), 1 deletion(-) + +commit 844527c037717d6d086eed1cf750732032d7585c +Author: Matthias Clasen +AuthorDate: Sun Feb 3 14:08:02 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 14:08:02 2013 -0500 + + Document GIO_USE_FILE_MONITOR + + docs/reference/gio/overview.xml | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit 435abb174d6a1c17ef9f85e7d83cf27c419ce790 +Author: Matthias Clasen +AuthorDate: Sun Feb 3 13:50:36 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 13:50:36 2013 -0500 + + Fix a doc comment mismatch + + gio/gapplicationcommandline.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c5ec4831fa8d96de37d04dcd97abb249872b7a44 +Author: Matthias Clasen +AuthorDate: Sun Feb 3 13:46:50 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 13:46:50 2013 -0500 + + Trivial doc comment formatting fix + + docs/reference/gio/gio-sections.txt | 9 +++++++++ + gio/gmemoryinputstream.c | 3 ++- + 2 files changed, 11 insertions(+), 1 deletion(-) + +commit 9c72b5776af287447cd79bfee8c848797402755a +Author: Matthias Clasen +AuthorDate: Sun Feb 3 13:26:36 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 13:26:36 2013 -0500 + + add 2.36 index to gobject docs + + docs/reference/gobject/gobject-docs.xml | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 349e6018641d846cd3854d2df223e8a8cf20149b +Author: Matthias Clasen +AuthorDate: Sun Feb 3 13:25:56 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 13:25:56 2013 -0500 + + Add 2.36 index to glib docs + + docs/reference/glib/glib-docs.xml | 4 ++++ + 1 file changed, 4 insertions(+) + +commit f302c655842149faa4f01af46e95693ebfcd737b +Author: Matthias Clasen +AuthorDate: Sun Feb 3 13:24:59 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 13:24:59 2013 -0500 + + Add a 2.36 index to gio docs + + docs/reference/gio/gio-docs.xml | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 1e4b5a3267161b69975ec5af31c30165c0c555ab +Author: Matthias Clasen +AuthorDate: Sun Feb 3 13:22:28 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 13:22:28 2013 -0500 + + Minor doc build cleanups + + docs/reference/glib/glib-sections.txt | 2 ++ + 1 file changed, 2 insertions(+) + +commit 79d7a138af288e74c564b6382ac17582fc01e323 +Author: Matthias Clasen +AuthorDate: Sun Feb 3 13:17:59 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 13:17:59 2013 -0500 + + Make GUnixFDSourceFunc show up in the docs + + docs/reference/glib/glib-sections.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 50850cdf98ba4e65d35a4c8e88f301b5c2551b7e +Author: Matthias Clasen +AuthorDate: Sun Feb 3 10:21:20 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 10:21:20 2013 -0500 + + Use g_timeout_add_seconds for some long timeouts + + https://bugzilla.gnome.org/show_bug.cgi?id=692618 + + gio/tests/gdbus-tests.c | 12 ++++++------ + tests/child-test.c | 2 +- + 2 files changed, 7 insertions(+), 7 deletions(-) + +commit 1a7b4b42a89ea9736e6447a54e0d2a678356ff64 +Author: Lars Uebernickel +AuthorDate: Thu Jan 31 11:44:32 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 09:59:09 2013 -0500 + + gmenumodel: add G_MENU_ATTRIBUTE_ACTION_NAMESPACE + + https://bugzilla.gnome.org/show_bug.cgi?id=692928 + + gio/gmenumodel.h | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 7fb922365bcf635f46b7989ccf08a17c7dd43f91 +Author: Lars Uebernickel +AuthorDate: Thu Jan 31 11:35:49 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 09:59:08 2013 -0500 + + gmenumodel: document G_MENU_{ATTRIBUTE,LINK}_* + + https://bugzilla.gnome.org/show_bug.cgi?id=692928 + + gio/gmenumodel.h | 52 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 52 insertions(+) + +commit aeafab17c72ae19e77c2711183ace8a022e773aa +Author: Lars Uebernickel +AuthorDate: Thu Jan 31 11:03:14 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 09:59:07 2013 -0500 + + gmenuexporter: fix typo in docstring + + https://bugzilla.gnome.org/show_bug.cgi?id=692928 + + gio/gmenuexporter.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f802f467a5bc5454f7ca5c685fe6e1f3f05a2ae5 +Author: Matthias Clasen +AuthorDate: Sun Feb 3 09:50:48 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 09:50:48 2013 -0500 + + Avoid a portability problem in the checksum test + + String literals are not guaranteed to work like this. + https://bugzilla.gnome.org/show_bug.cgi?id=570572 + + glib/tests/checksum.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit abbb54cdd6da757f9833d57126551ce934f4970d +Author: Matthias Clasen +AuthorDate: Sun Feb 3 01:28:50 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 01:30:05 2013 -0500 + + Fix deprecation note for g_static_mutex_free + + It should point at g_mutex_clear, not g_mutex_free. + https://bugzilla.gnome.org/show_bug.cgi?id=678223 + + glib/deprecated/gthread-deprecated.c | 2 +- + glib/deprecated/gthread.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit d632713a7716db10eca4524e7438cbc52f0ea230 +Author: Matthias Clasen +AuthorDate: Sun Feb 3 01:11:02 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 01:11:02 2013 -0500 + + Make G_DISABLE_DEPRECATED work again for wholly deprecated headers + + Patch by Milan Crha, + + https://bugzilla.gnome.org/show_bug.cgi?id=688169 + + glib/glib.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit 39a528b9fdf7b16c81bf5338a4b7dd4fd5318dea +Author: Dan Winship +AuthorDate: Thu Aug 23 12:39:26 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Feb 3 00:46:52 2013 -0500 + + g_option_context_help: don't modify the input data + + If there are options that need their names to be aliased, keep track + of that internally rather than modifying the passed-in GOptionGroup + (and leaking strings in the process). + + https://bugzilla.gnome.org/show_bug.cgi?id=682560 + + glib/goption.c | 42 ++++++++++++++++++++++++++++++------------ + 1 file changed, 30 insertions(+), 12 deletions(-) + +commit ab328469f5cab5681e5564893938a48fe5c2222f +Author: Matthias Clasen +AuthorDate: Sat Feb 2 22:54:15 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 2 22:54:15 2013 -0500 + + Silence automake + + automake doesn't like INCLUDES anymore. + + docs/reference/gio/Makefile.am | 2 +- + .../gio/gdbus-object-manager-example/Makefile.am | 6 +++--- + docs/reference/gobject/Makefile.am | 5 +++-- + gio/gdbus-2.0/codegen/Makefile.am | 1 - + gio/tests/Makefile.am | 16 + ++++++++-------- + gio/tests/gdbus-object-manager-example/Makefile.am | 2 +- + glib/gnulib/Makefile.am | 8 ++++++-- + glib/libcharset/Makefile.am | 5 +++-- + gobject/tests/Makefile.am | 7 ++++--- + tests/gobject/Makefile.am | 2 +- + tests/refcount/Makefile.am | 2 +- + 11 files changed, 31 insertions(+), 25 deletions(-) + +commit 0336eb67a23a434ecb08b1fcafb087b869f45239 +Author: Matthias Clasen +AuthorDate: Sat Feb 2 16:53:45 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 2 18:27:22 2013 -0500 + + Log errors the same way as messages + + This will make sense if we keep going past + the assertions that cause the error to be logged. + + glib/gtestutils.c | 1 + + 1 file changed, 1 insertion(+) + +commit f5f151cb85b217516ad375d085f379ec4ea97d88 +Author: Matthias Clasen +AuthorDate: Sat Feb 2 16:26:17 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 2 18:27:22 2013 -0500 + + Simplify glib/glib/tests setup + + The Makefile.am was setting a ton of unnecessary things + + glib/tests/Makefile.am | 346 + +++++++++++++------------------------------------ + 1 file changed, 87 insertions(+), 259 deletions(-) + +commit 8455702a8d55436f2ca37b801052d41cfb0ee2c9 +Author: Matthias Clasen +AuthorDate: Sat Feb 2 16:23:03 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 2 18:27:22 2013 -0500 + + Make the logging test more robust + + The default handler test was not unsetting the log handler that + gets installed by GTest, which causes the log messages to be + duplicated + on stdout if --verbose or --tap are passed. This in turn can make some + of the non-match checks fail. Since we are already using + g_test_trap_fork, + we can just unset the handler in the child. + + glib/tests/logging.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 067d822968719e87adde7745541e8fa82cfcf9ab +Author: Piotr Drąg +AuthorDate: Sun Feb 3 00:24:14 2013 +0100 +Commit: Piotr Drąg +CommitDate: Sun Feb 3 00:24:14 2013 +0100 + + Updated Polish translation + + po/pl.po | 503 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 258 insertions(+), 245 deletions(-) + +commit 278fe4a20f133b95694b413cc42789c3d85fdef1 +Author: Yaron Shahrabani +AuthorDate: Sat Feb 2 11:23:56 2013 +0200 +Commit: Yaron Shahrabani +CommitDate: Sat Feb 2 11:23:56 2013 +0200 + + Updated Hebrew translation. + + po/he.po | 620 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 316 insertions(+), 304 deletions(-) + +commit a809650a06cc91aa3f7acbe4ac3d7c4018798c2e +Author: Will Thompson +AuthorDate: Tue Jan 29 16:09:40 2013 +0000 +Commit: Matthias Clasen +CommitDate: Sat Feb 2 00:34:06 2013 -0500 + + Test for g_hash_table_insert() corrupting sets + + https://bugzilla.gnome.org/show_bug.cgi?id=692815 + + glib/tests/hash.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 50 insertions(+) + +commit bb1df4d01b25e6e12ff30adcd3b07b37c4837bc0 +Author: Ryan Lortie +AuthorDate: Wed Jan 30 01:23:48 2013 +0100 +Commit: Matthias Clasen +CommitDate: Sat Feb 2 00:34:01 2013 -0500 + + hashtable: properly handle insert() de-set-ifying + + GHashTable remains a set for as long as all of the keys are exactly + equal (in pointer value) to all of the values. We check this by + comparing keys to values when we do inserts. + + Unfortunately, when doing g_hash_table_insert() when a key is + already in + the table, the old key pointer value is kept, but the new value + pointer + is used. Now we have a situation where a key pointer is unequal to a + value pointer, but we were not treating this case properly. + + Fix that. + + https://bugzilla.gnome.org/show_bug.cgi?id=692815 + + glib/ghash.c | 74 + +++++++++++++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 56 insertions(+), 18 deletions(-) + +commit b1e02c7e32b40bd9e202fd4e14f046041ae0258b +Author: Руслан Ижбулатов +AuthorDate: Sat Jan 19 11:50:28 2013 +0400 +Commit: Matthias Clasen +CommitDate: Sat Feb 2 00:25:27 2013 -0500 + + Fix gio tests makefile for W32 + + While compiling, libtool will say that undefined symbols are not + allowed, and + will refuse to make you a dll. This is only one line, easy to + miss. And it + doesn't prevent `make' from completing successfully. + + The code this patch adds is from other Makefile.am files that use + $(no_undefined). It's absence in gio is, most likely, an oversight. + + Fixes #692058 + + gio/tests/Makefile.am | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 59372663f2ed57b60de7cbf2a3241cf9d7adbbea +Author: Matthias Clasen +AuthorDate: Sat Feb 2 00:19:15 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 2 00:19:15 2013 -0500 + + Don't try to find nfs mounts on Windows + + This should fix the build there. + https://bugzilla.gnome.org/show_bug.cgi?id=592211 + + gio/glocalfile.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit 477490786b05c25614620a47a4b7d6632aa6e480 +Author: Ryan Lortie +AuthorDate: Fri Feb 1 04:56:23 2013 +0100 +Commit: Ryan Lortie +CommitDate: Fri Feb 1 04:56:23 2013 +0100 + + gmain: equivocate a bit on _set_ready_time() + + Since this is a new API this cycle it's a good time to add a doc + comment + explicitly declaring that a confusing issue that could be resolved + either way has no specific defined behaviour. + + This may allow us some additional freedom in future GMainContext + work or + we may decide that one behaviour is more desirable than the other. + + glib/gmain.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 3202978060b8352633ad484199ce51d4b81ffdc3 +Author: Stef Walter +AuthorDate: Wed Jan 30 11:13:38 2013 +0100 +Commit: Stef Walter +CommitDate: Thu Jan 31 10:00:55 2013 +0100 + + gdbus: Don't output invalid nested docbook tags + + Fix gdbus-codegen so it no longer outputs tags like + Text + + https://bugzilla.gnome.org/show_bug.cgi?id=692865 + + gio/gdbus-2.0/codegen/codegen_docbook.py | 20 +++++++++++++------- + 1 file changed, 13 insertions(+), 7 deletions(-) + +commit 11e208f9d61156c1bbe4ff9f3ca3f24827246976 +Author: Stef Walter +AuthorDate: Wed Jan 30 11:07:52 2013 +0100 +Commit: Stef Walter +CommitDate: Thu Jan 31 10:00:55 2013 +0100 + + gdbus: Don't output invalid empty tags + + Docbook doesn't allow an empty and so the docbook + output from gdbus-codegen is invalid when a method/signal has + no arguments. + + https://bugzilla.gnome.org/show_bug.cgi?id=692865 + + gio/gdbus-2.0/codegen/codegen_docbook.py | 40 + +++++++++++++++++--------------- + 1 file changed, 21 insertions(+), 19 deletions(-) + +commit a60014f1b6fe9b62fa37b738dfc9a97d3046a1dc +Author: Dan Winship +AuthorDate: Wed Dec 12 16:00:26 2012 +0100 +Commit: Dan Winship +CommitDate: Wed Jan 30 16:46:02 2013 -0500 + + GInetSocketAddress: fix the byte order of flowinfo and scope_id + + The flowinfo and scope_id fields of struct sockaddr_in6 are in host + byte order, but the code previously assumed they were in network byte + order. Fix that. + + This is an ABI-breaking change (since before you would have had to use + g_ntohl() and g_htonl() with them to get the correct values, and now + that would give the wrong values), but the previous behavior was + clearly wrong, and no one ever reported it, so it is likely that no + one was actually using it. + + https://bugzilla.gnome.org/show_bug.cgi?id=684404 + + README.in | 6 ++++++ + gio/ginetsocketaddress.c | 4 ++-- + gio/gsocketaddress.c | 4 ++-- + gio/tests/socket.c | 4 ++-- + 4 files changed, 12 insertions(+), 6 deletions(-) + +commit 0ea7abaed5cff685f4d825f13588979e5dcb8e5b +Author: Cosimo Cecchi +AuthorDate: Wed Jan 30 17:59:09 2013 +0100 +Commit: Cosimo Cecchi +CommitDate: Wed Jan 30 17:59:09 2013 +0100 + + gmacros: add G_GNUC_UNUSED to G_STATIC_ASSERT + + Silence some warnings seen with GCC 4.8. + + glib/gmacros.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 7986d834c03490104a06e6adfa6156a52688f7c2 +Author: Kjartan Maraas +AuthorDate: Tue Jan 29 19:36:58 2013 +0100 +Commit: Kjartan Maraas +CommitDate: Tue Jan 29 19:36:58 2013 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 324 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 162 insertions(+), 162 deletions(-) + +commit f398bec5bcc0d924e2401c76a6b94133e9490835 +Author: Colin Walters +AuthorDate: Fri Jan 25 12:05:26 2013 -0500 +Commit: Colin Walters +CommitDate: Tue Jan 29 09:46:04 2013 -0500 + + Add g_close(), use it + + There are two benefits to this: + + 1) We can centralize any operating system specific knowledge of + close-vs-EINTR handling. For example, while on Linux we should + never + retry, if someone cared enough later about HP-UX, they could + come by + and change this one spot. + 2) For places that do care about the return value and want to provide + the caller with a GError, this function makes it convenient to + do so. + + Note that gspawn.c had an incorrect EINTR loop-retry around close(). + + https://bugzilla.gnome.org/show_bug.cgi?id=682819 + + docs/reference/glib/glib-sections.txt | 1 + + gio/gapplicationimpl-dbus.c | 3 ++- + gio/gdbusprivate.c | 3 ++- + gio/gdbusserver.c | 4 ++- + gio/gdesktopappinfo.c | 6 ++++- + gio/gfile.c | 15 ++++++++--- + gio/glocalfile.c | 7 +++-- + gio/glocalfileinfo.c | 3 ++- + gio/glocalfileinputstream.c | 24 +++++++---------- + gio/glocalfileoutputstream.c | 49 + ++++++++++++++--------------------- + gio/gnetworkmonitornetlink.c | 5 ++-- + glib/glib-unix.c | 1 - + glib/gspawn.c | 14 +++------- + glib/gstdio.c | 43 ++++++++++++++++++++++++++++++ + glib/gstdio.h | 4 +++ + 15 files changed, 115 insertions(+), 67 deletions(-) + +commit cf68300d27784ab5baaf6ef4761cead0ec404b1f +Author: Simon McVittie +AuthorDate: Sat Jan 26 17:37:33 2013 +0000 +Commit: Simon McVittie +CommitDate: Mon Jan 28 11:37:53 2013 +0000 + + g_atomic_int_get, g_atomic_pointer_get: accept const arguments + + Signed-off-by: Simon McVittie + Reviewed-by: Matthias Clasen + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=692583 + + glib/gatomic.c | 12 ++++++------ + glib/gatomic.h | 4 ++-- + glib/tests/atomic.c | 11 +++++++++++ + 3 files changed, 19 insertions(+), 8 deletions(-) + +commit f7b31301d5cc8f3810a747fb598b3cb683dfb337 +Author: Matej Urbančič +AuthorDate: Sun Jan 27 22:03:12 2013 +0100 +Commit: Matej Urbančič +CommitDate: Sun Jan 27 22:29:37 2013 +0100 + + Updated Slovenian translation + + po/sl.po | 275 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 137 insertions(+), 138 deletions(-) + +commit 166766a89fcd173dcd6ffda11f902029928f7f28 +Author: Colin Walters +AuthorDate: Fri Jan 25 10:40:45 2013 -0500 +Commit: Colin Walters +CommitDate: Sun Jan 27 11:04:48 2013 -0500 + + GFile: Clean up file_copy_fallback to fix SEGV with btrfs + + Ok, this function was just an awful mess before. Now the problem + domain is not trivial, and I won't claim this new code is *beautiful*, + but it should fix the bug at hand, and be somewhat less prone to + failure for the next person who tries to modify it. There's only one + unref call for each object now. + + https://bugzilla.gnome.org/show_bug.cgi?id=692408 + + gio/gfile.c | 140 + +++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 76 insertions(+), 64 deletions(-) + +commit 1818e0a2f80fc578d80b8dbc73163bf81b7d792b +Author: Aurimas Černius +AuthorDate: Sat Jan 26 20:24:32 2013 +0200 +Commit: Aurimas Černius +CommitDate: Sat Jan 26 20:24:32 2013 +0200 + + Updated Lithuanian translation + + po/lt.po | 2066 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 1043 insertions(+), 1023 deletions(-) + +commit 67694fb35e88dd4254173871ebfd5ef814a2ba59 +Author: Rui Matos +AuthorDate: Sat Jan 26 19:08:08 2013 +0100 +Commit: Rui Matos +CommitDate: Sat Jan 26 19:12:10 2013 +0100 + + gsequence: Fix g_sequence_lookup() return value documentation + + Mention that we return NULL if the item we are looking up isn't + found. + + glib/gsequence.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 82f2ee90fea41238d1936fc38a404cdb268c1b89 +Author: Dan Winship +AuthorDate: Sat Jan 26 10:09:33 2013 -0500 +Commit: Dan Winship +CommitDate: Sat Jan 26 10:09:33 2013 -0500 + + .gitignore updates + + gio/tests/.gitignore | 4 ++++ + tests/.gitignore | 1 + + 2 files changed, 5 insertions(+) + +commit 1eb5c7ceddd88bb198a01384684e52e7080921a9 +Author: Matthias Clasen +AuthorDate: Fri Jan 25 20:09:26 2013 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 25 20:09:26 2013 -0500 + + Plug a small memleak in gdbus-export test + + gio/tests/gdbus-export.c | 1 + + 1 file changed, 1 insertion(+) + +commit 48fd50701229de084947ea94406c1ff2c7c397f5 +Author: Colin Walters +AuthorDate: Fri Jan 25 12:32:39 2013 -0500 +Commit: Colin Walters +CommitDate: Fri Jan 25 13:45:07 2013 -0500 + + gfile: Ensure we create internal pipe with FD_CLOEXEC + + That way the descriptors aren't leaked to child processes. + + https://bugzilla.gnome.org/show_bug.cgi?id=692544 + + gio/gfile.c | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +commit cbd7225e7072e6c886e7370f999299d25906a14b +Author: Colin Walters +AuthorDate: Fri Jan 25 12:06:04 2013 -0500 +Commit: Colin Walters +CommitDate: Fri Jan 25 12:06:04 2013 -0500 + + gwakeup: Fix uninitialized variable from previous commit + + We really don't want to infloop here... + + glib/gwakeup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 090f874626312e83d053a51aeb59670b2a9655d7 +Author: Colin Walters +AuthorDate: Wed Aug 29 11:44:01 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Jan 25 11:23:48 2013 -0500 + + Handle EINTR for a few more write() calls + + https://bugzilla.gnome.org/show_bug.cgi?id=682819 + + glib/gmessages.c | 5 ++++- + glib/gwakeup.c | 13 +++++++++++-- + 2 files changed, 15 insertions(+), 3 deletions(-) + +commit 2ab5ed84b2154146c75dcd3876315a4beda48752 +Author: Daniel Mustieles +AuthorDate: Fri Jan 25 12:54:09 2013 +0100 +Commit: Daniel Mustieles +CommitDate: Fri Jan 25 12:54:09 2013 +0100 + + Updated Spanish translation + + po/es.po | 257 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 129 insertions(+), 128 deletions(-) + +commit 7261294ec163234e52f0edeb24df0b18f5e77395 +Author: Akira TAGOH +AuthorDate: Thu Jan 24 12:33:39 2013 +0900 +Commit: Akira TAGOH +CommitDate: Fri Jan 25 13:39:53 2013 +0900 + + gcontenttype: Duplicate the string inside Mutex lock for thread-safety + + https://bugzilla.gnome.org/show_bug.cgi?id=692360 + + gio/gcontenttype.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit c67a2ebda387331793563dafa57dbb19aa136b9d +Author: Gil Forcada +AuthorDate: Fri Jan 25 00:17:18 2013 +0100 +Commit: Gil Forcada +CommitDate: Fri Jan 25 00:17:18 2013 +0100 + + Incorrect string formatters, fixes #692229 + + glib/gfileutils.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit b0d5ce16782cc06712456ffa6b8a7521a70bcd1e +Author: Alexander Larsson +AuthorDate: Wed Jan 23 12:07:10 2013 +0100 +Commit: Alexander Larsson +CommitDate: Thu Jan 24 10:07:03 2013 +0100 + + Ignore fstab entries that are bind mounts + + We don't show the bind mounts anyway, so it only leads to + problems when we show the fstab entries, like being unable + to mount them. + + https://bugzilla.gnome.org/show_bug.cgi?id=625552 + + gio/gunixmounts.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 455afd3545a29393aec66f5d87dde7920db9d87b +Author: Dan Winship +AuthorDate: Mon Jan 21 11:25:26 2013 -0500 +Commit: Dan Winship +CommitDate: Wed Jan 23 12:49:29 2013 -0500 + + build: fix a srcdir != builddir problem with gnetworking.h + + gio's glib-mkenums call needs to get gnetworking.h out of $(builddir), + not $(srcdir). Fix/simplify it by using $(filter) on $^ and letting + make find everything. + + Also add -Wno-portability to AM_INIT_AUTOMAKE in configure.ac, so that + it doesn't warn about this (or about the gmake-specific features we + were already using in gio/tests/) + + https://bugzilla.gnome.org/show_bug.cgi?id=691866 + + configure.ac | 2 +- + gio/Makefile.am | 6 ++---- + 2 files changed, 3 insertions(+), 5 deletions(-) + +commit d8874e58a78889815f004f62681cd99b5f5d36f7 +Author: Colin Walters +AuthorDate: Wed Jan 23 11:51:48 2013 -0500 +Commit: Colin Walters +CommitDate: Wed Jan 23 12:23:51 2013 -0500 + + gtester: Use FD_CLOEXEC when creating pipes + + We were already unsetting the cloexec flag for the child later, + just not actually starting with it. + + https://bugzilla.gnome.org/show_bug.cgi?id=692404 + + glib/gtester.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 5932e16acda9434cd4e9d76cf6faba4b8217357f +Author: Dan Winship +AuthorDate: Tue Jan 22 16:39:49 2013 -0500 +Commit: Dan Winship +CommitDate: Wed Jan 23 08:48:32 2013 -0500 + + GNetworkMonitorNetlink: make the netlink socket cloexec + + Use the same code GSocket does, to try SOCK_CLOEXEC first, and then + fall back to FD_CLOEXEC if it fails. (And fix that code to not call + fcntl if SOCK_CLOEXEC worked.) + + https://bugzilla.gnome.org/show_bug.cgi?id=692332 + + gio/gnetworkingprivate.h | 5 +++ + gio/gnetworkmonitornetlink.c | 2 +- + gio/gsocket.c | 86 + ++++++++++++++++++++++++++------------------ + 3 files changed, 57 insertions(+), 36 deletions(-) + +commit 2476dd24d7c30dbc04a37fbac6a2fa7e2551ede9 +Author: Shankar Prasad +AuthorDate: Wed Jan 23 12:59:13 2013 +0530 +Commit: Shankar Prasad +CommitDate: Wed Jan 23 12:59:13 2013 +0530 + + Updated kn translations + + po/kn.po | 689 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 351 insertions(+), 338 deletions(-) + +commit bfc9536617721535eb0403496d9983542f2175e4 +Author: Chun-wei Fan +AuthorDate: Tue Jan 22 14:14:27 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jan 22 14:14:27 2013 +0800 + + build/Makefile-newvs.am: Make description comment clearer + + build/Makefile-newvs.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit e908b50371a5052d7a9690b3409ae028d46540b4 +Author: Cosimo Cecchi +AuthorDate: Sun Jan 20 14:00:50 2013 -0500 +Commit: Cosimo Cecchi +CommitDate: Mon Jan 21 10:36:42 2013 -0500 + + gfile: don't report completion twice on g_file_load_contents error + + When an error occurs while reading the file input stream in + g_file_load_contents (e.g. because the operation was cancelled), the + code is correctly calling g_task_return_error(), but in the callback + from the close operation, g_task_return_boolean() will be called + again. + + Code that cleans up its state in the async callback will then + be called + twice, leading to invalid memory access. + + https://bugzilla.gnome.org/show_bug.cgi?id=692202 + + gio/gfile.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 40f8e15c1b07f46d36b16cf8bcf9fce7f1a73c54 +Author: Cosimo Cecchi +AuthorDate: Sun Jan 20 13:12:49 2013 -0500 +Commit: Cosimo Cecchi +CommitDate: Mon Jan 21 09:51:09 2013 -0500 + + inotify: fix a memleak + + https://bugzilla.gnome.org/show_bug.cgi?id=692201 + + gio/inotify/inotify-path.c | 1 + + 1 file changed, 1 insertion(+) + +commit 09342300074f8cff5b91bb777d99f63bcda2666c +Author: Kjartan Maraas +AuthorDate: Mon Jan 21 12:25:16 2013 +0100 +Commit: Kjartan Maraas +CommitDate: Mon Jan 21 12:25:16 2013 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 264 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 138 insertions(+), 126 deletions(-) + +commit 1ce415b45bde895c31dd32e2f7ab7e7ab79e735e +Author: Giovanni Campagna +AuthorDate: Thu Jan 3 22:53:06 2013 +0100 +Commit: Giovanni Campagna +CommitDate: Sun Jan 20 16:23:32 2013 +0100 + + Install an invalidation notifier for GClosure in + g_source_set_closure() + + The point of g_source_set_closure() is getting memory management + right, + including handling closures disappearing from the outside (for example + because a runtime they refer to is being shutdown). This means that + sources with an associated closure should remove themselves from the + main loop and free memory when the closure is invalidated. + + https://bugzilla.gnome.org/show_bug.cgi?id=692034 + + gobject/gsourceclosure.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit e68402e330b977fb6324af6eca7ccf612b0e8b9c +Author: Gheyret Kenji +AuthorDate: Sun Jan 20 19:47:16 2013 +0900 +Commit: Gheyret Kenji +CommitDate: Sun Jan 20 19:47:16 2013 +0900 + + Updated Uyghur translation + + Signed-off-by: Gheyret Kenji + + po/ug.po | 2377 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 1275 insertions(+), 1102 deletions(-) + +commit 287849a1ee1f927e055f6daa5d298ba568529fb2 +Author: Matthias Clasen +AuthorDate: Sun Jan 20 03:16:47 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Jan 20 03:16:47 2013 -0500 + + Fix a typo + + glib/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 89aa9dbd9871d6f6cffc25ae8cb02e3b764a25b6 +Author: Matthias Clasen +AuthorDate: Sun Jan 20 03:14:24 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Jan 20 03:14:24 2013 -0500 + + Fix g_test_add_vtable + + This function was creating a test suite for each added + testcase, when it should have grouped tests according to + their paths. + + glib/gtestutils.c | 23 +++++++++++++++++++++-- + 1 file changed, 21 insertions(+), 2 deletions(-) + +commit 1cd0cf37974f8bae221bf9b988376066c683f69e +Author: Matthias Clasen +AuthorDate: Sun Jan 20 03:12:09 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sun Jan 20 03:12:09 2013 -0500 + + Fix annotation for g_test_fail + + The doc comment has a "Since: 2.30" annotation, so make + the header match that. + + glib/gtestutils.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9e9d028b96b3e19902a40b930418a0ec3e30ccfc +Author: Matthias Clasen +AuthorDate: Sat Jan 19 14:30:05 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Jan 19 14:30:05 2013 -0500 + + Fix build with -Werror=format + + There were a few places in gmarkup.c where we were giving + pointer differences when integers are expected. Fix that + by explicitly casting to int. + + https://bugzilla.gnome.org/show_bug.cgi?id=692079 + + glib/gmarkup.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 6af88940032ab12179af5a9531915344e3e3db98 +Author: Ryan Lortie +AuthorDate: Fri Jan 18 18:48:31 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Jan 19 14:04:49 2013 -0500 + + fam: implement gio-nfs-{file,directory}-monitor + + Declare explicit support for monitor NFS from the fam file monitoring + backend. This will cause it to be preferred for monitoring on NFS, if + it is installed. + + https://bugzilla.gnome.org/show_bug.cgi?id=592211 + + gio/fam/fam-module.c | 2 ++ + gio/fam/gfamdirectorymonitor.c | 4 ++++ + gio/fam/gfamfilemonitor.c | 4 ++++ + 3 files changed, 10 insertions(+) + +commit 6be54e9f56e9344ecd55a8952dff957573a136b7 +Author: Ryan Lortie +AuthorDate: Fri Jan 18 18:44:11 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Jan 19 14:04:49 2013 -0500 + + localfile: add support for monitoring on NFS + + Add a pair of new extension points: 'gio-nfs-file-monitor' and + 'gio-nfs-directory-monitor'. + + Add a check to GLocalFile when creating a file monitor. If the + requested file is in the user's home directory and the user has an NFS + home directory then attempt to use an implementation of one of the new + extension points. If we don't have any implementations then fall back + to the normal "local" monitors. + + https://bugzilla.gnome.org/show_bug.cgi?id=592211 + + gio/giomodule.c | 6 ++++ + gio/glocaldirectorymonitor.c | 15 ++++++--- + gio/glocaldirectorymonitor.h | 2 ++ + gio/glocalfile.c | 73 + ++++++++++++++++++++++++++++++++++++++++++-- + gio/glocalfilemonitor.c | 19 ++++++++---- + gio/glocalfilemonitor.h | 2 ++ + 6 files changed, 105 insertions(+), 12 deletions(-) + +commit c83600e8ae419df7c30b16d267d71d706a29936f +Author: Ryan Lortie +AuthorDate: Fri Jan 18 18:30:36 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Jan 19 14:04:49 2013 -0500 + + file monitors: use new giomodule function + + Get rid of the complicated default module detection code in + GLocalFileMonitor and GLocalDirectoryMonitor and use the new + _gio_module_get_default_type() function instead. + + This change also adds the ability to override the default file monitor + via the GIO_USE_FILE_MONITOR environment variable in the same way + as can + be done for GIO_USE_VFS. + + https://bugzilla.gnome.org/show_bug.cgi?id=592211 + + gio/glocaldirectorymonitor.c | 60 + +++----------------------------------------- + gio/glocalfilemonitor.c | 60 + +++----------------------------------------- + 2 files changed, 8 insertions(+), 112 deletions(-) + +commit 3a7b44c007c2d80d9adfa883eca82124ec39deee +Author: Ryan Lortie +AuthorDate: Fri Jan 18 18:27:57 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Jan 19 14:04:49 2013 -0500 + + giomodule: add a new "get default" function + + _gio_module_get_default() is a very convenient function for modules + implementing a singleton -- it finds the default module by priority + subject to override by a given environment variable name, instantiates + it, and caches the instance for future calls. It also has the ability + to query instances for being 'active' using a callback. + + It doesn't work very well for non-singletons (like file monitors). + + Add a new function _gio_module_get_default_type() that skips the + instantiation, returning the GType instead. As a replacement for the + 'active' callback, a vtable offset can be given for a virtual function + to use to query if a particular backend is supported. + + https://bugzilla.gnome.org/show_bug.cgi?id=592211 + + gio/giomodule-priv.h | 4 ++ + gio/giomodule.c | 120 + ++++++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 122 insertions(+), 2 deletions(-) + +commit ca58dae277896d9e431b54069e5f28cf1bd49d2a +Author: Chun-wei Fan +AuthorDate: Sat Jan 19 12:05:12 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Sat Jan 19 12:05:12 2013 +0800 + + Update Visual C++ 2010 property sheet + + Left out some items to purge in the last commit. Sorry :| + + build/win32/vs10/glib.props | 18 ------------------ + 1 file changed, 18 deletions(-) + +commit 6c7539fe592849f5639eebd277763319f6fc9cb8 +Author: Chun-wei Fan +AuthorDate: Sat Jan 19 12:02:45 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Sat Jan 19 12:02:45 2013 +0800 + + Clean up Visual C++ property sheets + + We no longer need entries to generate the .def files in the property + sheets + as we are now doing __declspec (dllexport) to export all the needed + symbols. So, purge these items from the property sheets since they + are no + longer used. + + build/win32/vs10/glib.props | 7 ------- + build/win32/vs9/glib.vsprops | 24 ------------------------ + 2 files changed, 31 deletions(-) + +commit bdb7c2d956a95ca6a66812c1218dc085f8f2f8fe +Author: Chun-wei Fan +AuthorDate: Sat Jan 19 11:58:47 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Sat Jan 19 11:58:47 2013 +0800 + + Bug 688681: Stop using the .def file for GThread Visual C++ builds + + We should also stop using gthread/gthread.def file as well, since we + also use __declspec (dllexport) for the two (deprecated) functions + there + since commit f8756694. + + This should also silence some linker warnings in x64 builds. + + Also get rid of the references to the .symbols files in the + .vcxproj.filters(in) in the various Visual C++ 2010 projects + + build/win32/vs10/gio.vcxproj.filtersin | 5 ----- + build/win32/vs10/glib.vcxproj.filtersin | 5 ----- + build/win32/vs10/gmodule.vcxproj.filters | 5 ----- + build/win32/vs10/gobject.vcxproj.filtersin | 5 ----- + build/win32/vs10/gthread.vcxproj | 7 ------- + build/win32/vs10/gthread.vcxproj.filters | 5 ----- + build/win32/vs9/gthread.vcproj | 18 ++---------------- + 7 files changed, 2 insertions(+), 48 deletions(-) + +commit 13966e0fadc40a6fabb0de216e8b2c3b6d457a79 +Author: Cosimo Cecchi +AuthorDate: Fri Jan 18 17:22:52 2013 -0500 +Commit: Cosimo Cecchi +CommitDate: Fri Jan 18 17:22:52 2013 -0500 + + timezone: plug a memleak + + glib/gtimezone.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit f24594122c3e3c66702ff537d3468ed251838007 +Author: Cosimo Cecchi +AuthorDate: Fri Jan 18 17:02:35 2013 -0500 +Commit: Cosimo Cecchi +CommitDate: Fri Jan 18 17:09:31 2013 -0500 + + timezone: avoid a double GBytes unref + + This will cause random memory corruption; functions should not unref + passed-in parameters. + + glib/gtimezone.c | 1 - + 1 file changed, 1 deletion(-) + +commit 4d3bb3caf7a1076960e148216e4f6d20eedd5ad1 +Author: Мирослав Николић + +AuthorDate: Fri Jan 18 23:01:19 2013 +0100 +Commit: Мирослав Николић + +CommitDate: Fri Jan 18 23:01:19 2013 +0100 + + Updated Serbian translation + + po/sr.po | 1120 + ++++++++++++++++++++++++++++---------------------------- + po/sr@latin.po | 1120 + ++++++++++++++++++++++++++++---------------------------- + 2 files changed, 1120 insertions(+), 1120 deletions(-) + +commit 998c6e65cf18aee626b9982347c29b4b09f2c097 +Author: Ryan Lortie +AuthorDate: Fri Jan 18 16:11:20 2013 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 18 16:27:13 2013 -0500 + + GVariant: fix normal-form checking for tuples + + GVariant has the concept of fixed-sized types (ie: types for which all + values of the type will have the same size). Examples are booleans, + integers, doubles, etc. Tuples containing only these types are also + fixed size. + + When GVariant is trying to deal with a fixed-sized value for which it + doesn't have a sufficient backing store (eg: the case where a + fixed-sized value was created with g_variant_new_data() with an + incorrect number of bytes) it denotes this by setting the size of the + value to the correct fixed size but using a NULL data pointer. + + This is well-documented in several code comments and also in the + public + API documentation for g_variant_get_data() which describes the + situation + number which NULL could be returned. + + The decision to deal with this case in this way was changed at + the last + minute around the time that GVariant was merged -- originally we + had an + elaborate setup involving allocating an internal buffer of sufficient + size to be shared between all invalid values. + + Unfortunately, when making this change a small detail was missed. + gvs_tuple_get_child() (the function responsible for deserialising + tuples) was updated to properly check for this case (and it contains a + comment about why it must). gvs_tuple_is_normal() (the function + responsible for verifying if a tuple is in normal form) was not. + + We add the check now. + + Note that this problem does not exist with any other container type + because tuples are the only container capable of being fixed-sized. + All + other container types (arrays, maybes, variants) can contain + a variable + number of items or items of variable types (note: we consider + dictionary + entries to be two-tuples). The code for validating non-container + values + also contains a check for the case of NULL data. + + The problem also does not occur in the only other function dealing + with + serialised tuples: gvs_tuple_n_children(). Whereas other container + types would have to inspect the serialised data to determine the + number + of children, for tuples it can be determined directly from the type. + + glib/gvariant-serialiser.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 00ee6de4e29f7f8c5338f1f9083717d5ec1d9246 +Author: Ryan Lortie +AuthorDate: Fri Jan 18 14:33:16 2013 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 18 14:33:16 2013 -0500 + + gobject/: Remove abicheck.sh from DIST_EXTRA + + gobject/Makefile.am | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 614f6c5e7073737cf1f531120287688859f88bd7 +Author: Ryan Lortie +AuthorDate: Fri Jan 18 13:56:10 2013 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 18 13:57:07 2013 -0500 + + Add new API checking utility + + Add a test script to make sure that (with a few exceptions) only + symbols + that start with 'g_' are being exported from our public libraries. + + https://bugzilla.gnome.org/show_bug.cgi?id=692029 + + Makefile.am | 7 ++++++- + check-abis.sh | 23 +++++++++++++++++++++++ + 2 files changed, 29 insertions(+), 1 deletion(-) + +commit 52a81a7d86102604729ba07824f1ae6a45b51cea +Author: Ryan Lortie +AuthorDate: Fri Jan 18 13:27:16 2013 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 18 13:28:43 2013 -0500 + + Remove a few more G_GNUC_INTERNAL users + + gio/fen/fen-kernel.c | 2 +- + gio/inotify/inotify-helper.c | 2 +- + glib/gconvert.c | 2 +- + glib/gutils.c | 2 +- + glib/gwakeup.h | 12 ++++++------ + 5 files changed, 10 insertions(+), 10 deletions(-) + +commit 346aa683de6b84da4bb53a63693ec04858cbf952 +Author: Ryan Lortie +AuthorDate: Fri Jan 18 13:23:40 2013 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 18 13:23:40 2013 -0500 + + Fix visibility for glib/ and gio/ submodules + + We have various sub directories in glib/ and gio/ (eg: inotify, + gnulib, + pcre, xdgmime, etc.) that build convenience libraries that are then + included into libglib and libgio. The files in these directories need + to be built with the same visibility policy as the files in the first + level directories, so add CFLAGS for them all. + + This wasn't a problem when the visibility flags were set directly in + CFLAGS but then we had to deal with some modules that we built that we + explicitly wanted to export symbols from. + + For now, we can keep things the way they are because it's less + hacky and + although it's a theoretical hazard to forget these CFLAGS, we + rarely add + new subdirectories to the build. + + gio/fen/Makefile.am | 1 + + gio/inotify/Makefile.am | 1 + + gio/kqueue/Makefile.am | 1 + + gio/win32/Makefile.am | 1 + + gio/xdgmime/Makefile.am | 1 + + glib/gnulib/Makefile.am | 1 + + glib/libcharset/Makefile.am | 1 + + glib/pcre/Makefile.am | 1 + + 8 files changed, 8 insertions(+) + +commit 6f8f1f7097cbef698b4c7be5816bc9d3864ec744 +Author: Colin Walters +AuthorDate: Wed Nov 28 12:00:40 2012 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 18 13:03:28 2013 -0500 + + Remove most use of G_GNUC_INTERNAL + + Now that we use an explicit list of symbols to export, the + G_GNUC_INTERNAL is redundant. + + https://bugzilla.gnome.org/show_bug.cgi?id=688681 + + gio/gapplicationimpl.h | 8 -------- + gio/gdbusactiongroup.c | 2 +- + gio/gdelayedsettingsbackend.h | 5 ----- + gio/gregistrysettingsbackend.h | 1 - + gio/gsettings-mapping.h | 3 --- + gio/gsettingsbackendinternal.h | 15 --------------- + gio/gsettingsschema-internal.h | 15 --------------- + glib/gcharset.c | 2 +- + glib/gcharsetprivate.h | 3 +-- + glib/gconvert.c | 2 +- + glib/glib-init.h | 12 ++++++------ + glib/glib-private.h | 3 --- + glib/gmain.c | 2 +- + glib/gmessages.h | 2 +- + glib/gthread-win32.c | 4 ++-- + glib/gthreadprivate.h | 7 ------- + glib/gunicodeprivate.h | 5 ++--- + glib/gvariant-core.h | 3 --- + 18 files changed, 16 insertions(+), 78 deletions(-) + +commit dbf447292d83b54be321c33025aea2e4d448d4f5 +Author: Ryan Lortie +AuthorDate: Sun Jan 13 23:31:45 2013 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 17 10:50:18 2013 -0500 + + Remove ABI checking scripts + + Before this commit, the only difference between the expected and + actual + ABI were the addition of _init and _fini symbols in each module (now + that regexp-based export control is not catching those). + + gio/Makefile.am | 8 - + gio/abicheck.sh | 13 - + gio/gio.symbols | 1808 + ----------------------------------------------- + glib/Makefile.am | 9 - + glib/abicheck.sh | 13 - + glib/glib.symbols | 1694 + -------------------------------------------- + gmodule/Makefile.am | 1 - + gmodule/gmodule.symbols | 14 - + gobject/Makefile.am | 9 +- + gobject/abicheck.sh | 13 - + gobject/gobject.symbols | 426 ----------- + 11 files changed, 1 insertion(+), 4007 deletions(-) + +commit 304950a7ac9866dca990dcabb02ec5297c735ce8 +Author: Ryan Lortie +AuthorDate: Sun Jan 13 23:12:23 2013 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 17 10:49:37 2013 -0500 + + Remove regexp-based export control + + configure.ac | 10 ---------- + gio/Makefile.am | 4 +--- + glib/Makefile.am | 4 +--- + gmodule/Makefile.am | 2 +- + gobject/Makefile.am | 5 +---- + 5 files changed, 4 insertions(+), 21 deletions(-) + +commit d89fb7bf10bc1f9de10a275625d4c18a1d4ff89d +Author: Ryan Lortie +AuthorDate: Wed Jan 16 22:55:27 2013 -0500 +Commit: Ryan Lortie +CommitDate: Wed Jan 16 23:04:11 2013 -0500 + + gsignal: fix closure invalidation code + + This is the bug that has been causing segfaults and criticals + when accel + keys are used to close windows via GtkUIManager. + + The main cause of this problem was a mistake made in the original + patch + when modifying the handler_lookup() to take the extra 'closure' + parameter. The original check used was: + + if (handler->sequential_number == handler_id || + (closure && handler->closure == closure)) + + It was called to find a particular closure like so: + + handler_lookup (instance, 0, closure, &signal_id); + + The problem is that the check will return if either the signal ID or + closure matches (if a closure was given). The calling code assumes + 0 to + be an invalid signal ID which will match no handlers, but + unfortunately + the rest of gsignal code uses this to denote a signal that has already + been disconnected. The result is that this function was searching + for a + matching closure _or_ the first already-disconnected handler. When it + found the already-disconnected handler, we'd get criticals and + crashes. + + The condition has been corrected; it now ignores the handler_id + parameter if the closure parameter is non-NULL. + + While we're in here, change the lifecycle of the invalidation + notify to + be easier to understand. + + Before, the notify was removed when the last reference on the handler + dropped. This could happen in very many situations; often at the + end of + an emission. Instead, we now tie the registration of the notifier to + the lifecycle of the signal connection. When the signal is + disconnected + we remove the notification, even if other references are held (eg: + because it is currently being dispatched). + + https://bugzilla.gnome.org/show_bug.cgi?id=690118 + + gobject/gsignal.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit 578b657f950e66376f31f8c09151c85d39e8219c +Author: Dan Winship +AuthorDate: Wed Jan 16 10:09:10 2013 -0500 +Commit: Dan Winship +CommitDate: Wed Jan 16 10:17:15 2013 -0500 + + gio/tests: add some more async stream tests + + Add read_async() and skip_async() tests to buffered-input-stream. + + Fix and re-enable filter-streams's existing close_async() tests, and + add read_async(), skip_async(), and write_async() tests as well. Also, + redo the tests to use dummy GFilterInputStream and GFilterOutputStream + subclasses rather than GBufferedInput/OutputStream, so that we're + testing the base filter stream implementations of everything (since + the buffered stream overrides are already getting tested in the + buffered-input-stream and buffered-output-stream tests anyway). + + Add a skip_async() test to unix-streams. (This one would crash without + the bugfix in the previous commit.) + + gio/tests/buffered-input-stream.c | 164 +++++++++++++++++++++++++++++++++ + gio/tests/filter-streams.c | 188 + ++++++++++++++++++++++++++++++++------ + gio/tests/unix-streams.c | 90 ++++++++++++++---- + 3 files changed, 394 insertions(+), 48 deletions(-) + +commit acfa6e233780a79664a62e5d4f1bf822b446017e +Author: Alban Browaeys +AuthorDate: Wed Jan 16 00:04:58 2013 +0100 +Commit: Dan Winship +CommitDate: Wed Jan 16 10:12:46 2013 -0500 + + gio: callback_data is the task not the task data. + + skip_callback_wrapper expect the user_data (callback_data) + to be the task holding the task_data, not the task_data + itself. + Otherwise the task_data is cast as GTask and then task_data + is extracted from this bogus task. + + https://bugzilla.gnome.org/show_bug.cgi?id=691812 + + gio/ginputstream.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit e1517ca82da834dccf8a862bd84cdd17e36e1124 +Author: Ryan Lortie +AuthorDate: Tue Jan 15 15:40:14 2013 -0500 +Commit: Ryan Lortie +CommitDate: Tue Jan 15 15:40:14 2013 -0500 + + mainloop test: fix a silly memory error + + glib/tests/mainloop.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 46b15bb58148d84b3681d1a728ca0e6e96d65122 +Author: Ryan Lortie +AuthorDate: Tue Jan 15 15:40:09 2013 -0500 +Commit: Ryan Lortie +CommitDate: Tue Jan 15 15:40:09 2013 -0500 + + mainloop test: use atomic for cross-thread access + + glib/tests/mainloop.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 42c2c4f67da404330960ca307393ad71e68c167d +Author: Ryan Lortie +AuthorDate: Tue Jan 15 15:22:35 2013 -0500 +Commit: Ryan Lortie +CommitDate: Tue Jan 15 15:22:35 2013 -0500 + + mainloop test: fix a small typo + + This g_assert() could never possibly fail, as it was. + + glib/tests/mainloop.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 83e5d169d6f0fd3d0427bc3599df8e777b275d9f +Author: Ryan Lortie +AuthorDate: Mon Jan 14 23:05:31 2013 -0500 +Commit: Ryan Lortie +CommitDate: Tue Jan 15 14:08:02 2013 -0500 + + tests for the new MainContext/GSource API + + glib/tests/mainloop.c | 492 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 492 insertions(+) + +commit 6d1a6636090b498d43354d5503ac39fb10ac908c +Author: Ryan Lortie +AuthorDate: Mon Jan 14 14:47:16 2013 -0500 +Commit: Ryan Lortie +CommitDate: Tue Jan 15 14:08:02 2013 -0500 + + Add a UNIX fd source + + https://bugzilla.gnome.org/show_bug.cgi?id=658020 + + docs/reference/glib/glib-sections.txt | 10 ++- + glib/glib-unix.c | 139 + ++++++++++++++++++++++++++++++++++ + glib/glib-unix.h | 33 ++++++++ + glib/glib.symbols | 3 + + 4 files changed, 184 insertions(+), 1 deletion(-) + +commit cbf68cb22d9f17721654283e97c2320025f03bc7 +Author: Ryan Lortie +AuthorDate: Mon Jan 14 16:53:06 2013 -0500 +Commit: Ryan Lortie +CommitDate: Tue Jan 15 14:08:02 2013 -0500 + + gsource: Add support for file descriptors on UNIX + + Adding file descriptors to a GSource provides similar functionality to + the old g_source_add_poll() API with two main differences. + + First: the list of handles is managed internally and therefore + users are + prevented from randomly modifying the ->events field. This prepares + us + for an epoll future where changing the event mask is a syscall. + + Second: keeping the list internally allows us to check the ->revents + for + events for ourselves, allowing the source to skip implementing + check/prepare. This also prepares us for the future by allowing an + implementation that doesn't need to iterate over all of the sources + every time. + + https://bugzilla.gnome.org/show_bug.cgi?id=686853 + + docs/reference/glib/glib-sections.txt | 4 + + glib/glib.symbols | 4 + + glib/gmain.c | 225 + +++++++++++++++++++++++++++++++++- + glib/gmain.h | 17 +++ + 4 files changed, 246 insertions(+), 4 deletions(-) + +commit db7d5306cce36ace71e6f7765a7669fc335747e8 +Author: Ryan Lortie +AuthorDate: Tue Aug 30 19:14:17 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jan 15 14:08:02 2013 -0500 + + GTimeoutSource: simplify + + Take advantage of the new default handling of the 'prepare' and + 'check' + functions. + + https://bugzilla.gnome.org/show_bug.cgi?id=657729 + + glib/gmain.c | 50 +++++++++++--------------------------------------- + 1 file changed, 11 insertions(+), 39 deletions(-) + +commit 768574635dcb69e91a2b749467ef3c75ed16579f +Author: Ryan Lortie +AuthorDate: Mon Jan 14 16:51:51 2013 -0500 +Commit: Ryan Lortie +CommitDate: Tue Jan 15 14:08:02 2013 -0500 + + GSource: new API g_source_set_ready_time() + + Add an API to mark a GSource to automatically become ready at the + specified monotonic time. + + https://bugzilla.gnome.org/show_bug.cgi?id=657729 + + docs/reference/glib/glib-sections.txt | 2 + + glib/glib.symbols | 2 + + glib/gmain.c | 109 + ++++++++++++++++++++++++++++++++++ + glib/gmain.h | 9 ++- + 4 files changed, 121 insertions(+), 1 deletion(-) + +commit 6d25e349988d4c40b066d548383fce3b126a7a43 +Author: Ryan Lortie +AuthorDate: Mon Oct 29 18:26:05 2012 +0100 +Commit: Ryan Lortie +CommitDate: Tue Jan 15 14:08:02 2013 -0500 + + gsource: allow NULL check and prepare functions + + Allow for NULL GSourceFuncs.check() and .prepare(). + + For prepare() the source will be taken not to be ready and having an + infinite timeout. For check() the source will be taken not to + be ready. + + https://bugzilla.gnome.org/show_bug.cgi?id=686853 + + glib/gmain.c | 54 ++++++++++++++++++++++++++++++++++-------------------- + glib/gmain.h | 8 ++++++-- + 2 files changed, 40 insertions(+), 22 deletions(-) + +commit 8f7f7f6c4209900ca1a77c7e2015ff3e9c252097 +Author: Ryan Lortie +AuthorDate: Mon Oct 29 16:33:18 2012 +0100 +Commit: Ryan Lortie +CommitDate: Tue Jan 15 14:08:02 2013 -0500 + + move GIOCondition to gmain.h from giochannel.h + + GIOCondition has uses outside of GIOChannel, so move it to gmain.h. + + https://bugzilla.gnome.org/show_bug.cgi?id=686853 + + glib/giochannel.h | 10 ---------- + glib/gmain.h | 11 +++++++++++ + 2 files changed, 11 insertions(+), 10 deletions(-) + +commit ed8ec635eb37099d36581b4b66dd24148940ebfa +Author: Ryan Lortie +AuthorDate: Mon Oct 29 16:31:46 2012 +0100 +Commit: Ryan Lortie +CommitDate: Tue Jan 15 14:08:01 2013 -0500 + + gsource: Make GSource->source_funcs const + + This is the vtable pointer for the source which is usually held in + static storage. For our internal sources it points at a vtable which + the user should really never be modifying. + + Mark it const. + + https://bugzilla.gnome.org/show_bug.cgi?id=686853 + + glib/gmain.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e1bee17e947b98f72d3764081333f339099b086a +Author: Yuri Sedunov +AuthorDate: Tue Jan 15 11:05:43 2013 -0500 +Commit: Colin Walters +CommitDate: Tue Jan 15 11:05:43 2013 -0500 + + gtester: Add #include config.h + + Missed #include "config.h" so, in particular, large file support + (_FILE_OFFSET_BITS) ignored. + + https://bugzilla.gnome.org/show_bug.cgi?id=691624 + + glib/gtester.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 38229d47d1996fd046258f09d705d8247bf176ae +Author: Chun-wei Fan +AuthorDate: Tue Jan 15 15:47:17 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jan 15 19:35:52 2013 +0800 + + Revert "Improvde #include order consistency" + + This reverts commit f2e00a07f49d6ad0e8d790396bcdea913592ce33. + + Moving the block up would prevent G_OS_WIN32 being checked correctly + as + it is a macro that is defined by including the GLib header(s), + at least for + Visual C++ builds. + + https://bugzilla.gnome.org/show_bug.cgi?id=691769 + + gobject/glib-genmarshal.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 4ba56f3653df55c187bd29ac6e4ebb4d33f4ba61 +Author: Chun-wei Fan +AuthorDate: Tue Jan 15 15:23:05 2013 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jan 15 15:23:05 2013 +0800 + + Bug 688681: Stop using .def files in Visual Studio builds + + Since we are now starting to use __declspec (dllexport) to export the + public functions during the build of the GLib DLLs (i.e. to + generate the + .lib files), we don't want to generate the .def files from the + .symbols + files as we did before for a long time. + + This removes from the projects the custom build steps to generate the + various .def files + + This will also update the pre-configured config.h(.win32.in) to define + _GLIB_EXTERN appropriately as __declspec (dllexport), as well as + making its + entries reflect config.h.in more closely. + + build/win32/vs10/gio.vcxprojin | 20 -------- + build/win32/vs10/glib.vcxprojin | 36 -------------- + build/win32/vs10/gmodule.vcxproj | 20 -------- + build/win32/vs10/gobject.vcxprojin | 20 -------- + build/win32/vs9/gio.vcprojin | 53 +-------------------- + build/win32/vs9/glib.vcprojin | 97 + +------------------------------------- + build/win32/vs9/gmodule.vcproj | 53 +-------------------- + build/win32/vs9/gobject.vcprojin | 53 +-------------------- + config.h.win32.in | 25 +++++----- + 9 files changed, 16 insertions(+), 361 deletions(-) + +commit c4d8eafd00eaed4d712fc7ec206f26d3bb9c1a54 +Author: Matthias Clasen +AuthorDate: Tue Jan 15 00:24:27 2013 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 15 00:24:27 2013 -0500 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 61539f735a92a40597e7575b9ae870973257fccd +Author: Matthias Clasen +AuthorDate: Mon Jan 14 23:52:10 2013 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 14 23:52:10 2013 -0500 + + 2.35.4 + + NEWS | 69 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 64 insertions(+), 5 deletions(-) + +commit a605b332c5a918006de8f50e9741dd0f33aa1e31 +Author: Matthias Clasen +AuthorDate: Mon Jan 14 23:25:05 2013 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 14 23:48:33 2013 -0500 + + Dist assert-msg-test.gdb + + And refer to it in srcdir. Otherwise, the test fails mysteriously + in make distcheck. + + tests/Makefile.am | 3 ++- + tests/run-assert-msg-test.sh | 3 +-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 5d42fdd068bddaaf7e42b7aaca2c15e931ebf3c5 +Author: Ryan Lortie +AuthorDate: Mon Jan 14 23:24:53 2013 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 14 23:31:59 2013 -0500 + + visibility: Use a separate CFLAGS variable + + We only want to control the default visibility for our five main + installable libraries: libglib, libgthread, libgmodule, libgobject, + libgio. We should therefore only set -fvisibility=hidden when + building + those. + + Use a separate substitution variable for this purpose. + + Using CFLAGS directly leads to some modules built in testcases not + exporting their symbols (and then the tests fail). It also affects + the + fam file monitoring module. + + Colin had originally done it this way in his visibility patch + series but + I failed to understand why so I didn't copy it. Now I do. + + Also: revert changes made to two testcases in an attempt to work + around + this issue. + + https://bugzilla.gnome.org/show_bug.cgi?id=691756 + + configure.ac | 4 +++- + gio/Makefile.am | 3 ++- + gio/tests/resourceplugin.c | 8 +++----- + glib/Makefile.am | 1 + + gmodule/Makefile.am | 1 + + gobject/Makefile.am | 2 +- + gthread/Makefile.am | 1 + + tests/libmoduletestplugin_a.c | 20 ++++++++------------ + tests/libmoduletestplugin_b.c | 19 ++++++++----------- + tests/module-test.c | 6 ++---- + 10 files changed, 30 insertions(+), 35 deletions(-) + +commit 7e00f381916cab6ba13f1d430310802cf6b9c726 +Author: Matthias Clasen +AuthorDate: Mon Jan 14 22:47:02 2013 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 14 22:47:02 2013 -0500 + + Fix module-test in a better way + + Avoid having visibility attribute directly in the code by + adding a _GLIB_EXTERN-decorated declaration for the exported + variables. + + tests/libmoduletestplugin_a.c | 3 ++- + tests/libmoduletestplugin_b.c | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit d4f0ae2c692f95046e381a2825b839b4816aea86 +Author: Matthias Clasen +AuthorDate: Mon Jan 14 22:22:41 2013 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 14 22:22:41 2013 -0500 + + Fix distcheck + + With gdbus-testserver now being a compiled program, it no longer + lives in SRCDIR. + + gio/tests/gdbus-connection-loss.c | 2 +- + gio/tests/gdbus-connection-slow.c | 2 +- + gio/tests/gdbus-connection.c | 2 +- + gio/tests/gdbus-introspection.c | 2 +- + gio/tests/gdbus-proxy-well-known-name.c | 4 ++-- + gio/tests/gdbus-proxy.c | 4 ++-- + gio/tests/gdbus-threading.c | 2 +- + 7 files changed, 9 insertions(+), 9 deletions(-) + +commit b96499690b0da7f2713e4d5d75b4e375ef01ed2b +Author: Matthias Clasen +AuthorDate: Mon Jan 14 21:31:47 2013 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 14 21:31:47 2013 -0500 + + Fix up visibility fallout in module-test + + tests/libmoduletestplugin_a.c | 19 +++++++++++-------- + tests/libmoduletestplugin_b.c | 18 ++++++++++-------- + tests/module-test.c | 6 ++++-- + 3 files changed, 25 insertions(+), 18 deletions(-) + +commit d1c25d3191214ce6cd289f0756e6027c35cc2075 +Author: Matthias Clasen +AuthorDate: Mon Jan 14 17:21:52 2013 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 14 17:35:47 2013 -0500 + + Fix the assert-msg test + + gdb is playing games with us, by breaking -x /dev/stdin + + tests/assert-msg-test.gdb | 3 +++ + tests/run-assert-msg-test.sh | 3 ++- + 2 files changed, 5 insertions(+), 1 deletion(-) + +commit ba4a3849c6cd5f14060a540398b0c498ae906bee +Author: Matthias Clasen +AuthorDate: Mon Jan 14 15:53:37 2013 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 14 16:14:28 2013 -0500 + + Remove an unused function + + gio/tests/gdbus-test-fixture.c | 9 --------- + 1 file changed, 9 deletions(-) + +commit 57041baf58dd4a3aad5ffee804ef8fc9fa15d6af +Author: Matthias Clasen +AuthorDate: Mon Jan 14 15:53:13 2013 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 14 16:14:28 2013 -0500 + + Make the build more quiet + + gobject/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 456d6bb3e14402df58d26c64dadb5317dbf065e6 +Author: Ryan Lortie +AuthorDate: Mon Jan 14 11:17:52 2013 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 14 11:17:52 2013 -0500 + + win32: hide g_win32_app_info_get_type() + + This was in a private header file and was never part of the public + ABI. + Hide it again. + + Caught by Dieter Verfaillie. + + gio/gwin32appinfo.h | 1 - + 1 file changed, 1 deletion(-) + +commit b7e749fc68eeedf0abc392c00acb8d0bde2352dd +Author: Ryan Lortie +AuthorDate: Mon Jan 14 11:14:53 2013 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 14 11:17:01 2013 -0500 + + glocal*monitor: export ABI only on UNIX + + Add an #ifdef G_OS_UNIX around the GLIB_AVAILABLE_IN_ALL annotation on + the _get_type() functions for GLocal{File,Directory}Monitor. + + These symbols are in private header files and are only exported + so that + the in-tree file monitoring modules can subclass. This is only needed + on UNIX and was therefore never part of the public ABI on Windows. + + Caught by Dieter Verfaillie. + + gio/glocaldirectorymonitor.h | 2 ++ + gio/glocalfilemonitor.h | 2 ++ + 2 files changed, 4 insertions(+) + +commit 963243e6b52a7083c1ae152ce92948cbfcd5945f +Author: Ryan Lortie +AuthorDate: Mon Jan 14 11:11:00 2013 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 14 11:11:00 2013 -0500 + + win32: hide _glib_get_dll_directory again + + This is not part of our public ABI and it's not used from the other + libraries in GLib, so we should not be exporting it. + + Caught by Dieter Verfaillie. + + glib/glib-private.h | 1 - + 1 file changed, 1 deletion(-) + +commit aac826723391950c873682e2b7fb2ee7617a57f8 +Author: Martin Pitt +AuthorDate: Mon Jan 14 11:26:30 2013 +0100 +Commit: Martin Pitt +CommitDate: Mon Jan 14 11:36:14 2013 +0100 + + GParamSpec: Make constructors introspectable + + Commit 282366c3262 unnecessarily (skip)ed all the GParamSpec + constructors like + g_param_spec_bool(). Make those introspectable by dropping the + (skip) and + adding proper transfer annotations. + + Keep g_param_spec_value_array() skipped as GValueArray is deprecated. + + gobject/gparamspecs.c | 88 + +++++++++++++++++++++++++-------------------------- + 1 file changed, 44 insertions(+), 44 deletions(-) + +commit 2c13657b0f1d9bd3bb2f6658adc6a410b13f355d +Author: Ryan Lortie +AuthorDate: Mon Jan 14 00:13:00 2013 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 14 00:13:00 2013 -0500 + + tests: introduce a small hack for visibility + + One of our testcases builds a small giomodule for testing the + loading of + modules containing resources. Unfortunately, this module gets built + using the same CFLAGS as the rest of GLib, including the visibility + flags (defaulting to hidden). + + Use "config.h" to get a declaration of _GLIB_EXTERN that will export + symbols properly and use it to annotate the necessary APIs. + + gio/tests/resourceplugin.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit f8756694cf3883b45d88eca99c013511f7ed0c10 +Author: Ryan Lortie +AuthorDate: Mon Jan 14 00:06:26 2013 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 14 00:06:26 2013 -0500 + + gthread-impl.c: add missing #include "config.h" + + One of the features of our new symbol exporting regime is that + it forces + config.h to be included at the top of every .c file. + + This was missed in gthread-impl.c. + + The only reason this wasn't noticed is because nothing in this file is + being used anymore. We need those symbols to continue to be exported + for reasons of ABI backwards compatibility, however. + + gthread/gthread-impl.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 59e46c4928243f63072996f6e98dab24d765df05 +Author: Ryan Lortie +AuthorDate: Sun Jan 13 23:43:44 2013 -0500 +Commit: Ryan Lortie +CommitDate: Sun Jan 13 23:48:23 2013 -0500 + + kqueue: Reduce G_GNUC_INTERNAL + G_LOCK abuse + + The kqueue file monitoring backend was misusing G_GNUC_INTERNAL + for want + of 'static' in a couple of places and also using it to declare a lock + that was never used at all. + + Fix those up. + + gio/kqueue/kqueue-helper.c | 4 +--- + gio/kqueue/kqueue-missing.c | 2 +- + gio/kqueue/kqueue-thread.c | 4 ++-- + 3 files changed, 4 insertions(+), 6 deletions(-) + +commit 64e1a9ca50cca461e7c6e2a4eb20a457269b6701 +Author: Ryan Lortie +AuthorDate: Sun Jan 13 23:30:49 2013 -0500 +Commit: Ryan Lortie +CommitDate: Sun Jan 13 23:32:07 2013 -0500 + + gio: remove export tags from two private headers + + I got a little bit too excited and added GLIB_AVAILABLE_IN_ALL tags to + some internal API. + + gio/glocalfileinputstream.h | 3 --- + gio/glocalfileiostream.h | 2 -- + 2 files changed, 5 deletions(-) + +commit 068a119f7401efe68c0fdbfaea86c5e55c0ed7d5 +Author: Ryan Lortie +AuthorDate: Sun Jan 13 15:41:03 2013 -0500 +Commit: Ryan Lortie +CommitDate: Sun Jan 13 22:59:40 2013 -0500 + + win32: build: stop using .def files + + With visibility now under the control of __declspec(dllexport) we no + longer need to build .def files or use them for building our various + .dll files. + + .def files used to be installed (even though it is only really useful + when creating the .dll or .lib file). Don't do that anymore either. + + The Makefiles still contain rules to create a .lib file for use with + Visual Studio and these rules require .def files. There are special + requirements to using these rules (like having installed and setup + Microsoft tools for use during the build) and therefore the problem of + creating a .def file for use with them is left open to anyone + willing to + make the effort. Many options are available depending on which + toolchain is in use (dlltool, pexport, gendef, dumpbin.exe, just + to name + a few). + + If we can find a free tool for creating .lib files in the future, we + should probably revisit this issue and add proper support back to our + build system. + + gio/Makefile.am | 20 ++------------------ + glib/Makefile.am | 20 ++------------------ + gmodule/Makefile.am | 19 ++----------------- + gobject/Makefile.am | 21 +++------------------ + 4 files changed, 9 insertions(+), 71 deletions(-) + +commit 2e7669f5cc46927602108c328fbbeb846bd09218 +Author: Ryan Lortie +AuthorDate: Thu Dec 6 13:42:06 2012 -0500 +Commit: Ryan Lortie +CommitDate: Sun Jan 13 22:59:40 2013 -0500 + + configure.ac: change our visibility policy + + Check for -fvisibility=hidden as a supported CFLAG. + + If it is supported, use it and emit an AC_DEFINE to change the meaning + of _GLIB_EXTERN to include the GNU attribute for marking symbols as + public: __attribute((visibility("default"))). + + This will override the public definition of _GLIB_EXTERN for any file + which does #include "config.h" (forcing all our .c files to do so, + as a + side effect). + + If we're on mingw, assume that -fvisibility will work and also + throw in + a __declspec(dllexport) for good measure. This will allow us to move + away from using a .def file to create the the various DLLs. + + It's possible that there may be compilers that accept + -fvisibility=hidden but don't accept the GNU attribute for making + symbols public again -- we will hopefully receive bugs if any of those + exist. + + https://bugzilla.gnome.org/show_bug.cgi?id=688681 + + configure.ac | 31 +++++++++++++++++++++++++++++++ + 1 file changed, 31 insertions(+) + +commit f13d3c075fce46a361ea98fb0c487aa21d4d1673 +Author: Ryan Lortie +AuthorDate: Sun Jan 13 15:34:27 2013 -0500 +Commit: Ryan Lortie +CommitDate: Sun Jan 13 22:59:40 2013 -0500 + + win32: visibility fixups + + Add/remove visibility macros according to if symbols were previously + part of our public win32 API. + + glib/glib-private.h | 2 ++ + glib/gunicode.h | 2 -- + glib/gwin32.h | 14 +++++++++++--- + 3 files changed, 13 insertions(+), 5 deletions(-) + +commit 38359d1796d8bce43fb77c74adaaf664bcf82c21 +Author: Ryan Lortie +AuthorDate: Sun Jan 13 22:57:27 2013 -0500 +Commit: Ryan Lortie +CommitDate: Sun Jan 13 22:59:40 2013 -0500 + + gio: hide another leaked symbol + + guint g_menu_model_items_changed_signal leaked out. Tuck it back in. + + gio/gio.symbols | 1 - + gio/gmenumodel.c | 2 +- + 2 files changed, 1 insertion(+), 2 deletions(-) + +commit 47c9b1e315824501843880dd20785d97792cb500 +Author: Rico Tzschichholz +AuthorDate: Sun Jan 13 20:49:15 2013 +0100 +Commit: Rico Tzschichholz +CommitDate: Sun Jan 13 20:49:15 2013 +0100 + + gio: add some missing array annotations with their element-type + + gio/gactionmap.c | 4 ++-- + gio/ginputstream.c | 9 ++++++--- + gio/gsocket.c | 8 ++++---- + 3 files changed, 12 insertions(+), 9 deletions(-) + +commit 85997d9eeb0581110c7df9a0fd7febeb27a3ee4d +Author: Rico Tzschichholz +AuthorDate: Sun Jan 13 20:05:17 2013 +0100 +Commit: Rico Tzschichholz +CommitDate: Sun Jan 13 20:05:17 2013 +0100 + + gio: add missing element-type annotation + + gio/gtlsdatabase.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3bd09b5fa602962b9f0445295984f7e17f8995d5 +Author: Ryan Lortie +AuthorDate: Thu Dec 6 14:01:46 2012 -0500 +Commit: Ryan Lortie +CommitDate: Sun Jan 13 13:13:55 2013 -0500 + + gmarshal.h: replace "extern" with GLIB_AVAILABLE_IN_ALL + + This was one of the few public header files that was properly + declaring + functions as "extern". Switch it to use GLIB_AVAILABLE_IN_ALL + instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=688681 + + gobject/gmarshal.h | 616 + ++++++++++++++++++++++++++++------------------------- + 1 file changed, 330 insertions(+), 286 deletions(-) + +commit 4625c138e96bca942c9215132df14d194c884802 +Author: Ryan Lortie +AuthorDate: Thu Dec 6 14:03:22 2012 -0500 +Commit: Ryan Lortie +CommitDate: Sun Jan 13 13:13:43 2013 -0500 + + gbacktrace.c: special treatment for a weird symbol + + We have a public symbol 'glib_on_error_halt' that is exported from + gbacktrace.c without appearing in a header, presumably with the + intention that people will be able to hit it from their debugger. + + Mark it as GLIB_AVAILABLE_IN_ALL from inside the .c file... + + https://bugzilla.gnome.org/show_bug.cgi?id=688681 + + glib/gbacktrace.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit b91c47682749b7e1455305ec5f99d5f950574a36 +Author: Ryan Lortie +AuthorDate: Thu Dec 6 13:37:45 2012 -0500 +Commit: Ryan Lortie +CommitDate: Sun Jan 13 13:13:36 2013 -0500 + + Add a new _GLIB_EXTERN macro for "extern" + + This macro simply evaluates the "extern" unless it has been explicitly + defined to something else. + + All of the version macros (including the unversioned deprecation + markers + and GLIB_AVAILABLE_IN_ALL) now include _GLIB_EXTERN as part of their + definition. + + G_INLINE has also been modified to use _GLIB_EXTERN where appropriate. + + This macro should never be used outside of the + gmacros.h/gversonmacros.h + headers. + + The effect of this patch is that "extern" has now been added to all + functions declared in installed headers. Strictly speaking, this is + something we should have had all along... + + GLIB_VAR and GOBJECT_VAR have also been modified to use _GLIB_EXTERN + on + non-Windows, instead of "extern" which they were using before. The + eventual goal is to use the normal version/deprecation macros on + exported variables and drop GLIB_VAR but we need to see how this will + work on Windows before we go ahead with that. + + https://bugzilla.gnome.org/show_bug.cgi?id=688681 + + glib/gmacros.h | 16 ++++++++++------ + glib/gtypes.h | 2 +- + glib/gutils.h | 4 ++-- + glib/gversionmacros.h | 38 +++++++++++++++++++------------------- + gobject/gparamspecs.h | 2 +- + 5 files changed, 33 insertions(+), 29 deletions(-) + +commit ba1bdd0708b154396c0e0d0609353db21ab5e6e9 +Author: Ryan Lortie +AuthorDate: Sun Jan 13 13:13:03 2013 -0500 +Commit: Ryan Lortie +CommitDate: Sun Jan 13 13:13:03 2013 -0500 + + add a missing AVAILABLE_IN_2_36 annotation + + gio/gapplicationcommandline.h | 1 + + 1 file changed, 1 insertion(+) + +commit 0156092a4203d1c40dcd0df7515fc7eeaebba9ac +Author: Ryan Lortie +AuthorDate: Thu Dec 6 14:04:59 2012 -0500 +Commit: Ryan Lortie +CommitDate: Sun Jan 13 13:11:57 2013 -0500 + + various: add GLIB_AVAILABLE_IN_ALL everywhere else + + Add the GLIB_AVAILABLE_IN_ALL annotation to all old functions (that + haven't already been annotated with the GLIB_AVAILABLE_IN_* macros + or a + deprecation macro). + + If we discover in the future that we cannot use only one macro on + Windows, it will be an easy sed patch to fix that. + + https://bugzilla.gnome.org/show_bug.cgi?id=688681 + + gio/gaction.h | 8 +++ + gio/gactiongroup.h | 14 +++++ + gio/gappinfo.h | 37 ++++++++++++ + gio/gapplication.h | 17 ++++++ + gio/gapplicationcommandline.h | 11 ++++ + gio/gasyncinitable.h | 7 +++ + gio/gasyncresult.h | 3 + + gio/gbufferedinputstream.h | 12 ++++ + gio/gbufferedoutputstream.h | 7 +++ + gio/gcancellable.h | 15 +++++ + gio/gcharsetconverter.h | 5 ++ + gio/gcontenttype.h | 11 ++++ + gio/gconverter.h | 3 + + gio/gconverterinputstream.h | 3 + + gio/gconverteroutputstream.h | 3 + + gio/gcredentials.h | 8 +++ + gio/gdatainputstream.h | 22 +++++++ + gio/gdataoutputstream.h | 12 ++++ + gio/gdbusactiongroup.h | 1 + + gio/gdbusaddress.h | 6 ++ + gio/gdbusauthobserver.h | 3 + + gio/gdbusconnection.h | 41 +++++++++++++ + gio/gdbuserror.h | 11 ++++ + gio/gdbusinterface.h | 4 ++ + gio/gdbusinterfaceskeleton.h | 14 +++++ + gio/gdbusintrospection.h | 31 ++++++++++ + gio/gdbusmenumodel.h | 2 + + gio/gdbusmessage.h | 50 ++++++++++++++++ + gio/gdbusmethodinvocation.h | 18 ++++++ + gio/gdbusnameowning.h | 5 ++ + gio/gdbusnamewatching.h | 5 ++ + gio/gdbusobject.h | 4 ++ + gio/gdbusobjectmanager.h | 5 ++ + gio/gdbusobjectmanagerclient.h | 11 ++++ + gio/gdbusobjectmanagerserver.h | 8 +++ + gio/gdbusobjectproxy.h | 3 + + gio/gdbusobjectskeleton.h | 7 +++ + gio/gdbusproxy.h | 26 +++++++++ + gio/gdbusserver.h | 8 +++ + gio/gdbusutils.h | 8 +++ + gio/gdesktopappinfo.h | 7 +++ + gio/gdrive.h | 25 ++++++++ + gio/gemblem.h | 5 ++ + gio/gemblemedicon.h | 6 ++ + gio/gfile.h | 109 + +++++++++++++++++++++++++++++++++++ + gio/gfileattribute.h | 7 +++ + gio/gfiledescriptorbased.h | 2 + + gio/gfileenumerator.h | 11 ++++ + gio/gfileicon.h | 3 + + gio/gfileinfo.h | 72 +++++++++++++++++++++++ + gio/gfileinputstream.h | 4 ++ + gio/gfileiostream.h | 5 ++ + gio/gfilemonitor.h | 5 ++ + gio/gfilenamecompleter.h | 5 ++ + gio/gfileoutputstream.h | 5 ++ + gio/gfilterinputstream.h | 4 ++ + gio/gfilteroutputstream.h | 4 ++ + gio/gicon.h | 5 ++ + gio/ginetaddress.h | 20 +++++++ + gio/ginetsocketaddress.h | 4 ++ + gio/ginitable.h | 5 ++ + gio/ginputstream.h | 15 +++++ + gio/gioerror.h | 3 + + gio/giomodule.h | 18 ++++++ + gio/giostream.h | 12 ++++ + gio/gloadableicon.h | 4 ++ + gio/glocaldirectorymonitor.h | 1 + + gio/glocalfileinputstream.h | 3 + + gio/glocalfileiostream.h | 2 + + gio/glocalfilemonitor.h | 1 + + gio/gmemoryinputstream.h | 4 ++ + gio/gmemoryoutputstream.h | 6 ++ + gio/gmount.h | 24 ++++++++ + gio/gmountoperation.h | 15 +++++ + gio/gnativevolumemonitor.h | 1 + + gio/gnetworkaddress.h | 7 +++ + gio/gnetworkmonitor.h | 4 ++ + gio/gnetworkmonitorbase.h | 2 + + gio/gnetworkservice.h | 7 +++ + gio/goutputstream.h | 19 ++++++ + gio/gpermission.h | 11 ++++ + gio/gpollableinputstream.h | 5 ++ + gio/gpollableoutputstream.h | 5 ++ + gio/gpollableutils.h | 1 + + gio/gproxy.h | 6 ++ + gio/gproxyaddress.h | 7 +++ + gio/gproxyaddressenumerator.h | 1 + + gio/gproxyresolver.h | 6 ++ + gio/gresolver.h | 15 +++++ + gio/gseekable.h | 6 ++ + gio/gsettings.h | 44 ++++++++++++++ + gio/gsettingsbackend.h | 12 ++++ + gio/gsimpleaction.h | 4 ++ + gio/gsimpleactiongroup.h | 5 ++ + gio/gsimpleasyncresult.h | 25 ++++++++ + gio/gsimplepermission.h | 2 + + gio/gsocket.h | 40 +++++++++++++ + gio/gsocketaddress.h | 5 ++ + gio/gsocketaddressenumerator.h | 4 ++ + gio/gsocketclient.h | 31 ++++++++++ + gio/gsocketconnectable.h | 3 + + gio/gsocketconnection.h | 7 +++ + gio/gsocketcontrolmessage.h | 6 ++ + gio/gsocketlistener.h | 14 +++++ + gio/gsocketservice.h | 5 ++ + gio/gsrvtarget.h | 9 +++ + gio/gtcpconnection.h | 3 + + gio/gtcpwrapperconnection.h | 3 + + gio/gthemedicon.h | 7 +++ + gio/gthreadedresolver.h | 1 + + gio/gthreadedsocketservice.h | 2 + + gio/gtlsbackend.h | 8 +++ + gio/gtlscertificate.h | 7 +++ + gio/gtlsclientconnection.h | 9 +++ + gio/gtlsconnection.h | 18 ++++++ + gio/gtlsdatabase.h | 14 +++++ + gio/gtlsfiledatabase.h | 2 + + gio/gtlsinteraction.h | 5 ++ + gio/gtlspassword.h | 11 ++++ + gio/gtlsserverconnection.h | 2 + + gio/gunixconnection.h | 5 ++ + gio/gunixcredentialsmessage.h | 5 ++ + gio/gunixfdlist.h | 8 +++ + gio/gunixfdmessage.h | 6 ++ + gio/gunixinputstream.h | 5 ++ + gio/gunixmounts.h | 33 +++++++++++ + gio/gunixoutputstream.h | 5 ++ + gio/gunixsocketaddress.h | 7 +++ + gio/gvfs.h | 8 +++ + gio/gvolume.h | 17 ++++++ + gio/gvolumemonitor.h | 7 +++ + gio/gwin32appinfo.h | 1 + + gio/gwin32inputstream.h | 5 ++ + gio/gwin32outputstream.h | 5 ++ + gio/gzlibcompressor.h | 4 ++ + gio/gzlibdecompressor.h | 3 + + glib/deprecated/gthread-deprecated.c | 1 + + glib/garray.h | 49 ++++++++++++++++ + glib/gasyncqueue.h | 20 +++++++ + glib/gatomic.h | 12 ++++ + glib/gbacktrace.h | 2 + + glib/gbase64.h | 6 ++ + glib/gbitlock.h | 6 ++ + glib/gbookmarkfile.h | 40 +++++++++++++ + glib/gbytes.h | 14 +++++ + glib/gcharset.h | 4 ++ + glib/gchecksum.h | 10 ++++ + glib/gconvert.h | 21 +++++++ + glib/gdataset.h | 15 +++++ + glib/gdate.h | 47 +++++++++++++++ + glib/gdatetime.h | 47 +++++++++++++++ + glib/gdir.h | 6 ++ + glib/genviron.h | 11 ++++ + glib/gerror.h | 12 ++++ + glib/gfileutils.h | 24 ++++++++ + glib/ggettext.h | 6 ++ + glib/ghash.h | 37 ++++++++++++ + glib/ghook.h | 23 ++++++++ + glib/ghostutils.h | 5 ++ + glib/giochannel.h | 43 ++++++++++++++ + glib/gkeyfile.h | 47 +++++++++++++++ + glib/glib-private.h | 1 + + glib/glibintl.h | 2 + + glib/glist.h | 30 ++++++++++ + glib/gmain.h | 79 +++++++++++++++++++++++++ + glib/gmappedfile.h | 6 ++ + glib/gmarkup.h | 15 +++++ + glib/gmem.h | 16 +++++ + glib/gmessages.h | 15 +++++ + glib/gnode.h | 26 +++++++++ + glib/goption.h | 26 +++++++++ + glib/gpattern.h | 6 ++ + glib/gpoll.h | 1 + + glib/gprimes.h | 1 + + glib/gprintf.h | 7 +++ + glib/gqsort.h | 1 + + glib/gquark.h | 6 ++ + glib/gqueue.h | 40 +++++++++++++ + glib/grand.h | 16 +++++ + glib/gregex.h | 40 +++++++++++++ + glib/gscanner.h | 21 +++++++ + glib/gsequence.h | 37 ++++++++++++ + glib/gshell.h | 4 ++ + glib/gslice.h | 6 ++ + glib/gslist.h | 28 +++++++++ + glib/gspawn.h | 13 +++++ + glib/gstdio.h | 19 ++++++ + glib/gstrfuncs.h | 45 +++++++++++++++ + glib/gstring.h | 31 ++++++++++ + glib/gstringchunk.h | 6 ++ + glib/gtestutils.h | 45 +++++++++++++++ + glib/gthread.h | 16 +++++ + glib/gthreadpool.h | 14 +++++ + glib/gtimer.h | 11 ++++ + glib/gtimezone.h | 10 ++++ + glib/gtree.h | 16 +++++ + glib/gunicode.h | 63 ++++++++++++++++++++ + glib/gurifuncs.h | 4 ++ + glib/gutils.h | 28 +++++++++ + glib/gvariant-internal.h | 2 + + glib/gvariant-serialiser.h | 9 +++ + glib/gvariant.h | 101 + ++++++++++++++++++++++++++++++++ + glib/gvarianttype.h | 30 ++++++++++ + glib/gvarianttypeinfo.h | 10 ++++ + glib/gversion.h | 1 + + gmodule/gmodule.h | 10 ++++ + gobject/gbinding.h | 10 ++++ + gobject/gboxed.h | 10 ++++ + gobject/gclosure.h | 18 ++++++ + gobject/genums.h | 14 +++++ + gobject/glib-types.h | 17 ++++++ + gobject/gobject.h | 59 +++++++++++++++++++ + gobject/gparam.h | 29 ++++++++++ + gobject/gparamspecs.h | 23 ++++++++ + gobject/gsignal.h | 38 ++++++++++++ + gobject/gsourceclosure.h | 2 + + gobject/gtype.h | 57 ++++++++++++++++++ + gobject/gtypemodule.h | 8 +++ + gobject/gtypeplugin.h | 5 ++ + gobject/gvalue.h | 11 ++++ + gobject/gvaluetypes.h | 38 ++++++++++++ + 221 files changed, 3186 insertions(+) + +commit 0dba77d0f4a28671d77222129f219b5961748562 +Author: Ryan Lortie +AuthorDate: Thu Dec 6 13:59:35 2012 -0500 +Commit: Ryan Lortie +CommitDate: Sun Jan 13 13:05:15 2013 -0500 + + gioenumtypes.h.template: use GLIB_AVAILABLE_IN_ALL + + glib-mkenums is not currently clever enough to know which version an + enum type was added in, so just mark all the _get_type() functions as + available in all versions. + + https://bugzilla.gnome.org/show_bug.cgi?id=688681 + + gio/gioenumtypes.h.template | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0a2b58625998680568623e69fd7fcedfd33d04da +Author: Ryan Lortie +AuthorDate: Thu Dec 6 13:34:55 2012 -0500 +Commit: Ryan Lortie +CommitDate: Sun Jan 13 13:05:09 2013 -0500 + + gversionmacros.h: add GLIB_AVAILABLE_IN_ALL + + Add a macro to declare that a particular symbol is available in all + versions of GLib. + + All newly-added symbols should have proper version macros (like + GLIB_AVAILABLE_IN_2_36) and this macro is less likely to get used 'by + accident' for those than one with a name like GLIB_EXTERN or + GLIB_PUBLIC. + + https://bugzilla.gnome.org/show_bug.cgi?id=688681 + + glib/gversionmacros.h | 1 + + 1 file changed, 1 insertion(+) + +commit c219181cb20a57988ed8426be2a5da8acf6aa07c +Author: Henrique Dante de Almeida +AuthorDate: Sun Jan 13 14:05:14 2013 -0200 +Commit: Colin Walters +CommitDate: Sun Jan 13 12:32:40 2013 -0500 + + Add G_GNUC_PRINTF on all functions with format strings + + This allows compilation with clang without errors, even when + -Wformat-nonliteral is active (as long as there are no real cases of + non literal formatting). + + https://bugzilla.gnome.org/show_bug.cgi?id=691608 + + gio/gdbusauth.c | 1 + + gio/gdbusauthmechanismsha1.c | 1 + + gio/gdbusdaemon.c | 1 + + gio/gdbuserror.h | 4 ++-- + gio/gdbusmessage.c | 1 + + gio/gdbusmethodinvocation.h | 5 +++-- + gio/gsimpleasyncresult.h | 5 +++-- + gio/gtask.h | 2 +- + glib/gerror.c | 1 + + glib/gerror.h | 2 +- + glib/gmarkup.c | 2 ++ + glib/gmarkup.h | 2 +- + glib/gmessages.h | 4 ++-- + glib/gprintf.h | 8 ++++---- + glib/gstrfuncs.h | 3 ++- + glib/gstring.h | 6 ++++-- + glib/gutils.h | 3 ++- + glib/gvariant-parser.c | 4 ++++ + glib/tests/markup-escape.c | 1 + + glib/tests/string.c | 1 + + glib/tests/test-printf.c | 1 + + 21 files changed, 39 insertions(+), 19 deletions(-) + +commit 120834db5b1cc735530d2452440ffd8a3b6e48f7 +Author: Benjamin Otte +AuthorDate: Sun Jan 13 18:14:11 2013 +0100 +Commit: Benjamin Otte +CommitDate: Sun Jan 13 18:14:11 2013 +0100 + + API: Constify g_get_prgname() + + Found by Mike Gorse while via pygobject freeing the value. + + Should have been const according to original commit message. + + glib/gutils.c | 2 +- + glib/gutils.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 52bfa084c4221d4283b2e1eb7aab8dca246d6921 +Author: Fran Diéguez +AuthorDate: Sun Jan 13 17:39:08 2013 +0100 +Commit: Fran Diéguez +CommitDate: Sun Jan 13 17:39:08 2013 +0100 + + Updated Galician translations + + po/gl.po | 164 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 88 insertions(+), 76 deletions(-) + +commit 0864e3bd6fc17bab3f60b6f0e240efb44b6b5d43 +Author: Henrique Dante de Almeida +AuthorDate: Sun Jan 13 12:58:12 2013 -0200 +Commit: Colin Walters +CommitDate: Sun Jan 13 10:47:25 2013 -0500 + + build: Ensure user-set CFLAGS override defaults + + For example, the user should be able disable our default -Werror + settings. + + https://bugzilla.gnome.org/show_bug.cgi?id=691608 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1738d5f1ef7ade40445aeb296911f9ef59da8a19 +Author: Dan Winship +AuthorDate: Sat Jan 12 17:39:37 2013 -0500 +Commit: Dan Winship +CommitDate: Sun Jan 13 09:55:48 2013 -0500 + + GInputStream: fix default g_input_stream_skip_async() logic + + g_input_stream_real_skip_async() wants to use read_async() normally, + but will use skip() in a thread instead if it sees that read_async() + will end up using threads. Except that the test for "will read_async() + use threads" never got updated to know about the GPollableInputStream + support in read_async(), so it was doing the wrong thing in that case. + Fix. + + Also remove a small bit of pre-GTask cruft noticed nearby. + + https://bugzilla.gnome.org/show_bug.cgi?id=691489 + + gio/ginputstream.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +commit e9661331babcdb19e52c094d94948ce1292b145e +Author: Matej Urbančič +AuthorDate: Sun Jan 13 12:02:42 2013 +0100 +Commit: Matej Urbančič +CommitDate: Sun Jan 13 12:02:42 2013 +0100 + + Updated Slovenian translation + + po/sl.po | 252 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 134 insertions(+), 118 deletions(-) + +commit 12168bd6615f7e5aa7d1ad388a6b4fc0c522015c +Author: Alexander Shopov +AuthorDate: Sat Jan 12 20:18:05 2013 +0200 +Commit: Alexander Shopov +CommitDate: Sat Jan 12 20:18:43 2013 +0200 + + Updated Bulgarian translation + + po/bg.po | 1226 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 620 insertions(+), 606 deletions(-) + +commit be04560f96b533a1ac591f466a2ad5b428348069 +Author: Matthias Clasen +AuthorDate: Sat Jan 12 13:02:31 2013 -0500 +Commit: Matthias Clasen +CommitDate: Sat Jan 12 13:02:31 2013 -0500 + + Expand g_type_init release notes + + This is in the light of + https://bugzilla.gnome.org/show_bug.cgi?id=691077 + + README.in | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 8fe8dcda1e6c3d799a0409ef983811d9c659a3cf +Author: Colin Walters +AuthorDate: Fri Jan 11 11:10:15 2013 -0500 +Commit: Colin Walters +CommitDate: Fri Jan 11 11:14:12 2013 -0500 + + glocalfile: Only check for .hidden files if standard::is-hidden + is requested + + For OSTree, I use Gio and also really care about performance. It's + disturbing to see open('.hidden') all over my straces and such. At + the moment I have an explicit set of things to query, as opposed to + "standard::*", since even before this that also implies an lstat() of + the parent directory. + + This matches up with what we do for all the other attributes. + + See https://bugzilla.gnome.org/show_bug.cgi?id=587806 + https://bugzilla.gnome.org/show_bug.cgi?id=691558 + + gio/glocalfileinfo.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +commit a1f40adf733b64500b09e0d02d51967b43df9ee5 +Author: Colin Walters +AuthorDate: Thu Jan 10 16:25:15 2013 -0500 +Commit: Colin Walters +CommitDate: Thu Jan 10 22:24:00 2013 -0500 + + gio-querymodules: Ensure we're linked to GObject + + Since we're dynamically loading objects, after the g_type_init() + change, we now need to ensure people building with --as-needed don't + lose the DT_NEEDED on libgobject. + + https://bugzilla.gnome.org/show_bug.cgi?id=691077 + + gio/gio-querymodules.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit f2a5b33270389b741e6ed756bf4d12730f8b392f +Author: Will Thompson +AuthorDate: Thu Jan 10 11:16:47 2013 +0000 +Commit: Will Thompson +CommitDate: Thu Jan 10 11:17:01 2013 +0000 + + G_IO_ERROR_INVALID_DATA: fix docstring typo + + gio/gioenums.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cb1876b4a7e2d1c91fcf461515d5a7933c62c6ff +Author: Antoine Jacoutot +AuthorDate: Wed Jan 9 16:29:29 2013 +0100 +Commit: Antoine Jacoutot +CommitDate: Wed Jan 9 16:29:29 2013 +0100 + + ipv6_v4mapped: force pass even if we don't speak IPv4 + + Some OS (e.g. OpenBSD) do not implement IP v4-mapped addresses. When + this is the case, then we get a "Connection refused", so force + the test + to pass to that further tests can run. + + https://bugzilla.gnome.org/show_bug.cgi?id=686058 + + gio/tests/socket.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 615b44c7ca77273b76b986edad16a56752c00bed +Author: Dan Winship +AuthorDate: Wed Jan 9 10:06:53 2013 -0500 +Commit: Dan Winship +CommitDate: Wed Jan 9 10:12:12 2013 -0500 + + glib-compile-resources: avoid warnings with + -Wmissing-field-initializers + + Initialize all the fields of the generated GStaticResource, to avoid + warnings in packages that build with -Wmissing-field-initializers. + + gio/glib-compile-resources.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fb1fa6747dbb00b57889058abc27869c7a40c555 +Author: Daniel Mustieles +AuthorDate: Tue Jan 8 14:43:21 2013 +0100 +Commit: Daniel Mustieles +CommitDate: Tue Jan 8 14:43:21 2013 +0100 + + Updated Spanish translation + + po/es.po | 250 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 128 insertions(+), 122 deletions(-) + +commit 6513e656c00550d99235faaa4714db33f12a444c +Author: Javier Jardón +AuthorDate: Mon Jan 7 15:41:19 2013 +0000 +Commit: Javier Jardón +CommitDate: Mon Jan 7 15:41:19 2013 +0000 + + configure.ac: replace obsolete AC_CONFIG_HEADER with with + AC_CONFIG_HEADERS + + The former is an obsolete alias to the latter. + It may get removed in the future. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7e5390b870c5c6fd2b27d52b8a675efc551d9b7e +Author: Nilamdyuti Goswami +AuthorDate: Mon Jan 7 17:44:23 2013 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Mon Jan 7 17:44:39 2013 +0530 + + Assamese translation updated + + po/as.po | 135 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 73 insertions(+), 62 deletions(-) + +commit b3ce0deb6d81bad318fee2f15e73cc4df20d945f +Author: Dan Winship +AuthorDate: Sun Jan 6 18:56:39 2013 -0500 +Commit: Dan Winship +CommitDate: Sun Jan 6 18:56:39 2013 -0500 + + tests/gdatetime: add a missing ; on windows + + glib/tests/gdatetime.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1d0687aa814e55def9ffb618310d7e0ae4f591cc +Author: Dan Winship +AuthorDate: Sun Jan 6 17:12:15 2013 -0500 +Commit: Dan Winship +CommitDate: Sun Jan 6 17:13:11 2013 -0500 + + gio/tests: fix a few more gdbus-testserver.py references + + that got missed in Matthias's earlier patch + + gio/tests/gdbus-proxy-well-known-name.c | 2 +- + gio/tests/gdbus-proxy.c | 8 ++++---- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit 5eba9784979e0b723c05a45cf767046607e4e759 +Author: Nirbheek Chauhan +AuthorDate: Sat Jan 5 12:52:31 2013 +0530 +Commit: Colin Walters +CommitDate: Sat Jan 5 14:21:25 2013 -0500 + + GFile: Add Btrfs clone ioctl support + + The attached patch adds support for the btrfs "clone" ioctl which + makes Copy-on-Write reflinks, resulting in cheap O(1) copies when + source/destination are on the same filesystem. The ioctl itself is + quite straightforward, and GNU coreutils has had support since 7.5 + (--reflink=auto --sparse=auto). + + The ioctl only operates on regular files and symlinks, and always + follows symlinks; checks have been added accordingly. + + This patch would be very useful for everyone who uses btrfs + filesystems (Meego folks for instance). On systems that don't have + btrfs, or if the the source is not on a btrfs filesystem, the ioctl + returns EINVAL, and the fallback code is triggered. Hence this will + cause no problems for non-btrfs users. + + https://bugzilla.gnome.org/show_bug.cgi?id=626497 + + configure.ac | 1 + + gio/gfile.c | 104 + +++++++++++++++++++++++++++++++++++++++++++++++++++++------ + 2 files changed, 96 insertions(+), 9 deletions(-) + +commit f42347d82e3724958d36922a6171c2eb262336cb +Author: Dan Winship +AuthorDate: Sat Jan 5 13:26:23 2013 -0500 +Commit: Dan Winship +CommitDate: Sat Jan 5 13:29:01 2013 -0500 + + GMemoryInputStream: fix skip_async() + + a5876e5f made GMemoryInputStream subclassable, but accidentally broke + read_async() and skip_async() in the process. The immediately + following e7983495 fixed read_async() (and added a test for it), but + skip_async() accidentally got... skipped. + + Fix it now and add a test for it. + + Also, GMemoryInputStream's skip_async() was assuming that skip() could + never fail, which is true of its own implementation, but might not be + true of a subclass's, so do proper GError handling too. + + gio/gmemoryinputstream.c | 8 ++++++-- + gio/tests/memory-input-stream.c | 43 + ++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 48 insertions(+), 3 deletions(-) + +commit 330c6c116e31628fcd46ee95e7bff51c60be5bab +Author: Rico Tzschichholz +AuthorDate: Fri Jan 4 21:36:37 2013 +0100 +Commit: Rico Tzschichholz +CommitDate: Fri Jan 4 21:36:37 2013 +0100 + + gio/tests: Drop superfluous dbus-1 dependencies of gdbus-auth + + gio/tests/Makefile.am | 3 +-- + gio/tests/gdbus-auth.c | 1 - + 2 files changed, 1 insertion(+), 3 deletions(-) + +commit c2055f22f4399a23d1c02a94f8b029212e37e162 +Author: Ryan Lortie +AuthorDate: Mon Nov 5 11:07:16 2012 -0500 +Commit: Rico Tzschichholz +CommitDate: Fri Jan 4 21:20:04 2013 +0100 + + gtype: disallow adding interfaces after the fact + + Add a check to prevent adding an interface to a class that has already + had its class_init done. + + This is an incompatible change but it is suspected that there are not + many users of this functionality. Two known exceptions are pygobject + (fixed in bug 686149) and our own testsuite (affected tests have been + temporarily disabled by this patch). + + Once we confirm that nobody else is using this functionality we can + remove a rather large amount of code for dealing with this case. + + https://bugzilla.gnome.org/show_bug.cgi?id=687659 + + gobject/gtype.c | 6 ++++++ + gobject/tests/threadtests.c | 20 ++++++++++++-------- + tests/gobject/Makefile.am | 3 --- + 3 files changed, 18 insertions(+), 11 deletions(-) + +commit 125833d4277046efc77aeabe43282514b9f5bc73 +Author: Rico Tzschichholz +AuthorDate: Fri Jan 4 20:37:27 2013 +0100 +Commit: Rico Tzschichholz +CommitDate: Fri Jan 4 20:37:27 2013 +0100 + + gio/tests: Fix make dist + + Missing bit of 32c925427785895ce156f4bb428082e1952d2407 + + gio/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit efa7b5f1e7d28e10d2c4413fc1626305f46706f5 +Author: Rico Tzschichholz +AuthorDate: Fri Jan 4 20:25:46 2013 +0100 +Commit: Rico Tzschichholz +CommitDate: Fri Jan 4 20:25:46 2013 +0100 + + Revert "gtype: disallow adding interfaces after the fact" + + This reverts commit d6a075b0d8dfe4e4a41f6624ad7032d2163d420c. + + gobject/gtype.c | 6 ------ + gobject/tests/threadtests.c | 20 ++++++++------------ + tests/gobject/Makefile.am | 3 +++ + 3 files changed, 11 insertions(+), 18 deletions(-) + +commit e478b65ea5fe20ea714a4e78be051a8aa7583ece +Author: Matthias Clasen +AuthorDate: Fri Jan 4 08:27:00 2013 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 4 08:28:13 2013 -0500 + + Improve g_cond_wait docs + + Document that the mutex is locked upon return. + https://bugzilla.gnome.org/show_bug.cgi?id=691110 + + glib/gthread-posix.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 5fbdd3aa27a4a0445708a453ffbd935e6905ee2a +Author: Marko Lindqvist +AuthorDate: Thu Jan 3 19:21:35 2013 -0500 +Commit: Colin Walters +CommitDate: Thu Jan 3 19:22:16 2013 -0500 + + Remove deprecated AM_PROG_CC_STDC + + Fixes automake 1.13 build. + + https://bugzilla.gnome.org/show_bug.cgi?id=691011 + + configure.ac | 1 - + 1 file changed, 1 deletion(-) + +commit 101ddfe22f0313c5159bda754697a59b559e7718 +Author: David Zeuthen +AuthorDate: Thu Jan 3 13:34:21 2013 -0500 +Commit: David Zeuthen +CommitDate: Thu Jan 3 13:35:10 2013 -0500 + + In gdbus-auth test, use g_unsetenv(), not g_setenv() with a NULL value + + Signed-off-by: David Zeuthen + + gio/tests/gdbus-auth.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 361fe28fb9ebf6841830b7f193671a378554bc9e +Author: Matthias Clasen +AuthorDate: Thu Jan 3 13:13:50 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Jan 3 13:16:22 2013 -0500 + + Drop gdbus-testserver.py + + The tests are using the C version of gdbus-testserver now. + This means we no longer rely on dbus-python for 'make check'. + https://bugzilla.gnome.org/show_bug.cgi?id=675856 + + gio/tests/Makefile.am | 1 - + gio/tests/gdbus-testserver.py | 299 + ------------------------------------------ + 2 files changed, 300 deletions(-) + +commit 663ed23bc5614fb4f40df04a9e949f63cf554e06 +Author: Matthias Clasen +AuthorDate: Thu Jan 3 13:12:58 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Jan 3 13:15:15 2013 -0500 + + Use the C gdbus-testserver in tests + + gio/tests/gdbus-connection-loss.c | 2 +- + gio/tests/gdbus-connection-slow.c | 2 +- + gio/tests/gdbus-connection.c | 2 +- + gio/tests/gdbus-introspection.c | 2 +- + gio/tests/gdbus-proxy-well-known-name.c | 2 +- + gio/tests/gdbus-proxy.c | 2 +- + gio/tests/gdbus-threading.c | 2 +- + 7 files changed, 7 insertions(+), 7 deletions(-) + +commit 416fa3b9efb7b75c781ea26e004ad6183ea16e24 +Author: Matthias Clasen +AuthorDate: Thu Jan 3 13:11:58 2013 -0500 +Commit: Matthias Clasen +CommitDate: Thu Jan 3 13:14:26 2013 -0500 + + Add a C version of gdbus-testserver.py + + This will let us drop the dbus-python dependency. + The C version does not 100% reproduce all the hash table + and array manipulation of the python version, but the tests + do not rely on it anyway. + + gio/tests/Makefile.am | 3 + + gio/tests/gdbus-testserver.c | 889 + +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 892 insertions(+) + +commit 2652dc13573471a1a20070fdeef0c44eb0aa4f9a +Author: David Zeuthen +AuthorDate: Thu Jan 3 11:57:21 2013 -0500 +Commit: David Zeuthen +CommitDate: Thu Jan 3 12:12:55 2013 -0500 + + GDBus: Avoid use of libdbus-1 in authentication tests + + This greatly simplifies the test since everything is now in a single + process and possible bugs / quirks in libdbus-1 will not interfere + with the tests. On the other hand, we no longer test interoperability + with libdbus-1. This is somewhat moot, however, since other tests that + involve a message bus (e.g. GTestDBus users which include most of the + GDBus test suite itself) will test this. + + Also ensure that we don't pollute existing D-Bus keyrings for the + DBUS_COOKIE_SHA1 authentication method (e.g. files in the + ~/.dbus-keyrings directory) by setting the environment variables + G_DBUS_COOKIE_SHA1_KEYRING_DIR and + G_DBUS_COOKIE_SHA1_KEYRING_DIR_IGNORE_PERMISSION. + + All in all, this change avoids some thorny issues where the GDBus and + libdbus-1 implementations disagree on whether an item in the D-Bus + keyring is still valid (items have an age etc.). In reality, since the + DBUS_COOKIE_SHA1 authentication method is never used in production, + this is never hit in production. This bug was, however, frequently hit + if you just ran the test suite repeatedly for 15 minutes or so. + + Also add TODO items to mention that we currently don't test corner + cases involving + + - DBUS_COOKIE_SHA1 timeouts + - libdbus-1 interoperability + + Signed-off-by: David Zeuthen + + gio/tests/Makefile.am | 2 - + gio/tests/gdbus-auth.c | 304 + +++++++++++++++++++++++++++---------------------- + 2 files changed, 165 insertions(+), 141 deletions(-) + +commit 03e84f936fd6f4acbcdf671cc6be5b0690ee7ea6 +Author: Dan Winship +AuthorDate: Wed Jan 2 13:00:48 2013 -0500 +Commit: Dan Winship +CommitDate: Wed Jan 2 13:02:51 2013 -0500 + + GValueArray: clarify the deprecation warnings + + GValueArray as a whole is deprecated in favor of GArray (with GValue + elements); warnings like "'g_value_array_get_nth' is deprecated: Use + 'g_array_index' instead" are confusing because they suggest that the + GArray functions can be used with GValueArrays. Make them say "Use + 'GArray' instead" instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=690970 + + gobject/gvaluearray.h | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit af27baaaef3510e32104af6fa196336f13dbc5a9 +Author: Dieter Verfaillie +AuthorDate: Wed Jan 2 13:10:31 2013 +0100 +Commit: Dieter Verfaillie +CommitDate: Wed Jan 2 13:10:31 2013 +0100 + + Fix build with --enable-gtk-doc + + https://bugzilla.gnome.org/show_bug.cgi?id=691001 + + docs/reference/glib/building.xml | 1 + + 1 file changed, 1 insertion(+) + +commit 3e5068c18631afdc3c6a50a82f6e3499ac9bf3ed +Author: Matthias Clasen +AuthorDate: Tue Jan 1 15:49:06 2013 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 1 15:49:06 2013 -0500 + + Add a --with-python option + + The effect is the same as specifying PYTHON=python3, but a + configure option works better in jhbuild. + https://bugzilla.gnome.org/show_bug.cgi?id=684103 + + configure.ac | 11 ++++++++++- + docs/reference/glib/building.xml | 8 ++++++++ + 2 files changed, 18 insertions(+), 1 deletion(-) + +commit 86610b059463472e01c0001b83ed052a3edca2e0 +Author: Matthias Clasen +AuthorDate: Tue Jan 1 14:06:20 2013 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 1 14:06:20 2013 -0500 + + Move testgobject to tests/ + + And fix it to actually check the right things. + + gobject/Makefile.am | 3 - + gobject/testgobject.c | 429 + -------------------------------------------------- + tests/Makefile.am | 6 +- + tests/testgobject.c | 429 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 433 insertions(+), 434 deletions(-) + +commit f2e00a07f49d6ad0e8d790396bcdea913592ce33 +Author: Matthias Clasen +AuthorDate: Tue Jan 1 13:54:54 2013 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 1 13:54:54 2013 -0500 + + Improvde #include order consistency + + This was mostly fixed already, just re-fix a few details here. + https://bugzilla.gnome.org/show_bug.cgi?id=71704 + + gobject/gatomicarray.c | 4 ++-- + gobject/gclosure.c | 2 +- + gobject/glib-genmarshal.c | 9 +++++---- + gobject/gtype.c | 2 +- + 4 files changed, 9 insertions(+), 8 deletions(-) + +commit 7acfdb04ac1af34af26353a2af388adb7e4db844 +Author: Paolo Borelli +AuthorDate: Thu Dec 27 20:55:30 2012 +0100 +Commit: Matthias Clasen +CommitDate: Tue Jan 1 11:20:25 2013 -0500 + + Annotate GApplication::local_command_line + + Also add some documentation. + https://bugzilla.gnome.org/show_bug.cgi?id=690670 + + gio/gapplication.h | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +commit 5e62827efdf8a6efbf48e5ed88e02ec4e3a40329 +Author: Jasper St. Pierre +AuthorDate: Tue Jul 3 15:14:18 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jan 1 11:03:19 2013 -0500 + + gmarkup: Make GMarkupParseContext a boxed type + + At the same time, add a refcount and public ref/unref methods. + This makes it usable from introspectable. + + https://bugzilla.gnome.org/show_bug.cgi?id=690084 + + docs/reference/glib/glib-sections.txt | 2 ++ + docs/reference/gobject/gobject-sections.txt | 1 + + glib/glib.symbols | 2 ++ + glib/gmarkup.c | 44 + +++++++++++++++++++++++++++++ + glib/gmarkup.h | 4 +++ + gobject/gboxed.c | 1 + + gobject/glib-types.h | 11 ++++++++ + gobject/gobject.symbols | 1 + + 8 files changed, 66 insertions(+) + +commit 157f80c2440dcc4ff581b2829bc2ce14071a69e2 +Author: Matthias Clasen +AuthorDate: Tue Jan 1 10:25:07 2013 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 1 10:25:07 2013 -0500 + + Drop a broken link + + The GSettings migration docs had a link to the no-longer existing + gsettings-tutorial branch of gnome-utils. Remove it. + https://bugzilla.gnome.org/show_bug.cgi?id=690043 + + docs/reference/gio/migrating-gconf.xml | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 0d3da350c608483a12c89334638317d57449e968 +Author: Michael Henning +AuthorDate: Sat Dec 29 23:57:23 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 31 16:13:29 2012 -0500 + + gutils: move G_END_DECLS to the end of gutils.h + + Previously, some declarations near the bottom came after the + G_END_DECLS, causing linker errors for C++ users that called those + functions. + + https://bugzilla.gnome.org/show_bug.cgi?id=690902 + + glib/gutils.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 81c1fd22bd92454b0f7c97715e11c77eb0451abf +Author: Daniel Mustieles +AuthorDate: Mon Dec 31 12:20:07 2012 +0100 +Commit: Daniel Mustieles +CommitDate: Mon Dec 31 12:20:07 2012 +0100 + + Updated Spanish translation + + po/es.po | 180 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 92 insertions(+), 88 deletions(-) + +commit a9f363733ba796b8c2365fc45a616f94bd6463e3 +Author: Matthias Clasen +AuthorDate: Sat Dec 29 00:22:34 2012 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 29 00:22:34 2012 -0500 + + Fix up the gschema.dtd + + This DTD wasn't syntactically correct, and didn't actually + describe keys correctly. This change makes it a bit too lax, + but at least it can be used now. + https://bugzilla.gnome.org/show_bug.cgi?id=690538 + + gio/gschema.dtd | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 12ad403a43763aa4a99a6055c3cccd2677252430 +Author: Matthias Clasen +AuthorDate: Sat Dec 29 00:03:09 2012 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 29 00:03:09 2012 -0500 + + Remove a failing test + + Since we stripped g_credentials_set_pid(), the test for + g_credentials_get_pid() can't succeed anymore, so remove it. + + gio/tests/credentials.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit 32c925427785895ce156f4bb428082e1952d2407 +Author: Tristan Van Berkom +AuthorDate: Thu Dec 20 15:34:22 2012 +0900 +Commit: Matthias Clasen +CommitDate: Fri Dec 28 21:28:28 2012 -0500 + + Adding test coverage for GTestDBus activating in-tree services. + + https://bugzilla.gnome.org/show_bug.cgi?id=690543 + + configure.ac | 2 + + gio/tests/Makefile.am | 9 +- + gio/tests/gdbus-test-fixture.c | 121 + +++++++++++++++++++++ + gio/tests/services/Makefile.am | 2 + + ...org.gtk.GDBus.Examples.ObjectManager.service.in | 3 + + 5 files changed, 136 insertions(+), 1 deletion(-) + +commit e1b99b2ddcf21f5dab26ad74afa6935eaf70028e +Author: Matthias Clasen +AuthorDate: Thu Dec 27 23:43:14 2012 -0500 +Commit: Matthias Clasen +CommitDate: Thu Dec 27 23:43:14 2012 -0500 + + Move single-include guards inside include guards + + gcc has optimizations for include guards that only work + if they are outermost in the the header. + https://bugzilla.gnome.org/show_bug.cgi?id=689810 + + gio/gaction.h | 6 +++--- + gio/gactiongroup.h | 6 +++--- + gio/gactiongroupexporter.h | 6 +++--- + gio/gactionmap.h | 6 +++--- + gio/gappinfo.h | 6 +++--- + gio/gapplication.h | 6 +++--- + gio/gapplicationcommandline.h | 6 +++--- + gio/gasyncinitable.h | 6 +++--- + gio/gasyncresult.h | 6 +++--- + gio/gbufferedinputstream.h | 6 +++--- + gio/gbufferedoutputstream.h | 6 +++--- + gio/gcancellable.h | 6 +++--- + gio/gcharsetconverter.h | 6 +++--- + gio/gcontenttype.h | 6 +++--- + gio/gconverter.h | 6 +++--- + gio/gconverterinputstream.h | 6 +++--- + gio/gconverteroutputstream.h | 6 +++--- + gio/gcredentials.h | 6 +++--- + gio/gdatainputstream.h | 6 +++--- + gio/gdataoutputstream.h | 6 +++--- + gio/gdbusactiongroup.h | 6 +++--- + gio/gdbusaddress.h | 6 +++--- + gio/gdbusauth.h | 6 +++--- + gio/gdbusauthmechanism.h | 6 +++--- + gio/gdbusauthmechanismanon.h | 6 +++--- + gio/gdbusauthmechanismexternal.h | 6 +++--- + gio/gdbusauthmechanismsha1.h | 6 +++--- + gio/gdbusauthobserver.h | 6 +++--- + gio/gdbusconnection.h | 6 +++--- + gio/gdbuserror.h | 6 +++--- + gio/gdbusintrospection.h | 6 +++--- + gio/gdbusmessage.h | 6 +++--- + gio/gdbusmethodinvocation.h | 6 +++--- + gio/gdbusnameowning.h | 6 +++--- + gio/gdbusnamewatching.h | 6 +++--- + gio/gdbusprivate.h | 6 +++--- + gio/gdbusproxy.h | 6 +++--- + gio/gdbusserver.h | 6 +++--- + gio/gdbusutils.h | 6 +++--- + gio/gdrive.h | 6 +++--- + gio/gdummyproxyresolver.h | 6 +++--- + gio/gemblem.h | 6 +++--- + gio/gemblemedicon.h | 6 +++--- + gio/gfile.h | 6 +++--- + gio/gfileattribute.h | 6 +++--- + gio/gfileenumerator.h | 6 +++--- + gio/gfileicon.h | 6 +++--- + gio/gfileinfo.h | 6 +++--- + gio/gfileinputstream.h | 6 +++--- + gio/gfileiostream.h | 6 +++--- + gio/gfilemonitor.h | 6 +++--- + gio/gfilenamecompleter.h | 6 +++--- + gio/gfileoutputstream.h | 6 +++--- + gio/gfilterinputstream.h | 6 +++--- + gio/gfilteroutputstream.h | 6 +++--- + gio/gicon.h | 6 +++--- + gio/ginetaddress.h | 6 +++--- + gio/ginetaddressmask.h | 6 +++--- + gio/ginetsocketaddress.h | 6 +++--- + gio/ginitable.h | 6 +++--- + gio/ginputstream.h | 6 +++--- + gio/gioenums.h | 6 +++--- + gio/gioerror.h | 6 +++--- + gio/giomodule.h | 6 +++--- + gio/gioscheduler.h | 6 +++--- + gio/giostream.h | 6 +++--- + gio/giotypes.h | 6 +++--- + gio/gloadableicon.h | 6 +++--- + gio/gmemoryinputstream.h | 6 +++--- + gio/gmemoryoutputstream.h | 6 +++--- + gio/gmount.h | 6 +++--- + gio/gmountoperation.h | 6 +++--- + gio/gnativevolumemonitor.h | 6 +++--- + gio/gnetworkaddress.h | 6 +++--- + gio/gnetworkmonitor.h | 6 +++--- + gio/gnetworkservice.h | 6 +++--- + gio/goutputstream.h | 6 +++--- + gio/gpermission.h | 6 +++--- + gio/gpollableinputstream.h | 6 +++--- + gio/gpollableoutputstream.h | 6 +++--- + gio/gpollableutils.h | 6 +++--- + gio/gproxy.h | 6 +++--- + gio/gproxyaddress.h | 6 +++--- + gio/gproxyaddressenumerator.h | 6 +++--- + gio/gproxyresolver.h | 6 +++--- + gio/gremoteactiongroup.h | 6 +++--- + gio/gresolver.h | 6 +++--- + gio/gresource.h | 6 +++--- + gio/gseekable.h | 6 +++--- + gio/gsettings.h | 6 +++--- + gio/gsimpleaction.h | 6 +++--- + gio/gsimpleactiongroup.h | 6 +++--- + gio/gsimpleasyncresult.h | 6 +++--- + gio/gsimplepermission.h | 6 +++--- + gio/gsocket.h | 6 +++--- + gio/gsocketaddress.h | 6 +++--- + gio/gsocketaddressenumerator.h | 6 +++--- + gio/gsocketclient.h | 6 +++--- + gio/gsocketconnectable.h | 6 +++--- + gio/gsocketconnection.h | 6 +++--- + gio/gsocketcontrolmessage.h | 6 +++--- + gio/gsocketlistener.h | 6 +++--- + gio/gsocketservice.h | 6 +++--- + gio/gsrvtarget.h | 6 +++--- + gio/gtask.h | 6 +++--- + gio/gtcpconnection.h | 6 +++--- + gio/gtcpwrapperconnection.h | 6 +++--- + gio/gtestdbus.h | 6 +++--- + gio/gthemedicon.h | 6 +++--- + gio/gthreadedsocketservice.h | 6 +++--- + gio/gtlsbackend.h | 6 +++--- + gio/gtlscertificate.h | 6 +++--- + gio/gtlsclientconnection.h | 6 +++--- + gio/gtlsconnection.h | 6 +++--- + gio/gtlsdatabase.h | 6 +++--- + gio/gtlsfiledatabase.h | 6 +++--- + gio/gtlsinteraction.h | 6 +++--- + gio/gtlspassword.h | 6 +++--- + gio/gtlsserverconnection.h | 6 +++--- + gio/gvfs.h | 6 +++--- + gio/gvolume.h | 6 +++--- + gio/gvolumemonitor.h | 6 +++--- + gio/gzlibcompressor.h | 6 +++--- + gio/gzlibdecompressor.h | 6 +++--- + glib/deprecated/gallocator.h | 6 +++--- + glib/deprecated/gcache.h | 6 +++--- + glib/deprecated/gcompletion.h | 6 +++--- + glib/deprecated/gmain.h | 6 +++--- + glib/deprecated/grel.h | 6 +++--- + glib/deprecated/gthread.h | 6 +++--- + glib/galloca.h | 6 +++--- + glib/garray.h | 6 +++--- + glib/gasyncqueue.h | 6 +++--- + glib/gatomic.h | 6 +++--- + glib/gbacktrace.h | 6 +++--- + glib/gbase64.h | 6 +++--- + glib/gbookmarkfile.h | 6 +++--- + glib/gbytes.h | 6 +++--- + glib/gcharset.h | 6 +++--- + glib/gchecksum.h | 6 +++--- + glib/gconvert.h | 6 +++--- + glib/gdataset.h | 6 +++--- + glib/gdate.h | 6 +++--- + glib/gdatetime.h | 6 +++--- + glib/gdir.h | 6 +++--- + glib/genviron.h | 6 +++--- + glib/gerror.h | 6 +++--- + glib/gfileutils.h | 6 +++--- + glib/ggettext.h | 6 +++--- + glib/ghash.h | 6 +++--- + glib/ghmac.h | 6 +++--- + glib/ghook.h | 6 +++--- + glib/ghostutils.h | 6 +++--- + glib/giochannel.h | 6 +++--- + glib/gkeyfile.h | 6 +++--- + glib/glist.h | 6 +++--- + glib/gmacros.h | 6 +++--- + glib/gmain-internal.h | 6 +++--- + glib/gmain.h | 6 +++--- + glib/gmappedfile.h | 6 +++--- + glib/gmarkup.h | 6 +++--- + glib/gmem.h | 6 +++--- + glib/gmessages.h | 6 +++--- + glib/gnode.h | 6 +++--- + glib/goption.h | 6 +++--- + glib/gpattern.h | 6 +++--- + glib/gpoll.h | 6 +++--- + glib/gprimes.h | 6 +++--- + glib/gqsort.h | 6 +++--- + glib/gquark.h | 6 +++--- + glib/gqueue.h | 6 +++--- + glib/grand.h | 6 +++--- + glib/gregex.h | 6 +++--- + glib/gscanner.h | 6 +++--- + glib/gsequence.h | 6 +++--- + glib/gshell.h | 6 +++--- + glib/gslice.h | 6 +++--- + glib/gslist.h | 6 +++--- + glib/gspawn.h | 6 +++--- + glib/gstrfuncs.h | 6 +++--- + glib/gstring.h | 6 +++--- + glib/gstringchunk.h | 6 +++--- + glib/gtestutils.h | 6 +++--- + glib/gthread.h | 6 +++--- + glib/gthreadpool.h | 6 +++--- + glib/gtimer.h | 6 +++--- + glib/gtimezone.h | 6 +++--- + glib/gtrashstack.h | 6 +++--- + glib/gtree.h | 6 +++--- + glib/gtypes.h | 6 +++--- + glib/gunicode.h | 6 +++--- + glib/gurifuncs.h | 6 +++--- + glib/gutils.h | 6 +++--- + glib/gvariant.h | 6 +++--- + glib/gvarianttype.h | 6 +++--- + glib/gversion.h | 6 +++--- + glib/gversionmacros.h | 6 +++--- + glib/gwin32.h | 6 +++--- + gobject/gatomicarray.h | 6 +++--- + gobject/gbinding.h | 6 +++--- + gobject/gboxed.h | 6 +++--- + gobject/gclosure.h | 6 +++--- + gobject/genums.h | 6 +++--- + gobject/glib-types.h | 6 +++--- + gobject/gobject.h | 6 +++--- + gobject/gparam.h | 6 +++--- + gobject/gparamspecs.h | 6 +++--- + gobject/gsignal.h | 6 +++--- + gobject/gsourceclosure.h | 6 +++--- + gobject/gtype-private.h | 6 +++--- + gobject/gtype.h | 6 +++--- + gobject/gtypemodule.h | 6 +++--- + gobject/gtypeplugin.h | 6 +++--- + gobject/gvalue.h | 6 +++--- + gobject/gvaluearray.h | 6 +++--- + gobject/gvaluetypes.h | 6 +++--- + 216 files changed, 648 insertions(+), 648 deletions(-) + +commit 89d48d7800a21db1b94c09644bc68b84cda1940b +Author: Ryan Lortie +AuthorDate: Wed Jan 18 14:37:37 2012 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 27 11:00:49 2012 -0500 + + Add g_application_command_line_get_stdin() + + This returns a GInputStream corresponding to the stdin on the + commandline that caused this invocation. + + The local case works on both UNIX (GUnixInputStream on stdin) and + Windows (GWin32InputStream on GetStdHandle(STD_INPUT_HANDLE)). The + remote case works only on UNIX (by fd passing over D-Bus). + + https://bugzilla.gnome.org/show_bug.cgi?id=668210 + + gio/gapplicationcommandline.c | 46 +++++++++++++++++++++++++++ + gio/gapplicationcommandline.h | 13 +++++--- + gio/gapplicationimpl-dbus.c | 73 + +++++++++++++++++++++++++++++++++++++------ + gio/gio.symbols | 1 + + 4 files changed, 119 insertions(+), 14 deletions(-) + +commit 3e97776276a3648fac9706d7a82715ab230bfb5d +Author: Mattias Põldaru +AuthorDate: Thu Dec 27 16:37:24 2012 +0200 +Commit: Priit Laes +CommitDate: Thu Dec 27 16:37:24 2012 +0200 + + [l10n] Updated Estonian translation + + po/et.po | 4996 + ++++++++++++++++++++++++++++---------------------------------- + 1 file changed, 2285 insertions(+), 2711 deletions(-) + +commit 3a7c1594d126d20510eb4f6b769dedc8a68e3834 +Author: Fran Diéguez +AuthorDate: Mon Dec 24 22:53:03 2012 +0100 +Commit: Fran Diéguez +CommitDate: Mon Dec 24 22:53:03 2012 +0100 + + Updated Galician translations + + po/gl.po | 181 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 92 insertions(+), 89 deletions(-) + +commit 53bbf26c17cf0876cdd18ddb77f6f985999a24d4 +Author: Dimitris Spingos +AuthorDate: Mon Dec 24 17:23:17 2012 +0200 +Commit: Dimitris Spingos +CommitDate: Mon Dec 24 17:23:17 2012 +0200 + + Updated Greek translation + + po/el.po | 1188 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 606 insertions(+), 582 deletions(-) + +commit 74cc23405883ed33d7c42e05044265086d3fb420 +Author: Kjartan Maraas +AuthorDate: Sun Dec 23 17:38:45 2012 +0100 +Commit: Kjartan Maraas +CommitDate: Sun Dec 23 17:39:50 2012 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 1130 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 564 insertions(+), 566 deletions(-) + +commit f1a1cccd5a3354407d32e458324ae416cb527925 +Author: Peter Mráz +AuthorDate: Sun Dec 23 14:32:58 2012 +0100 +Commit: Pavol Klačanský +CommitDate: Sun Dec 23 14:32:58 2012 +0100 + + Updated Slovak translation + + po/sk.po | 1362 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 663 insertions(+), 699 deletions(-) + +commit a9578b0bb7b5f81bb64ae6f969293c4ad3afc48a +Author: Piotr Drąg +AuthorDate: Sun Dec 23 04:28:23 2012 +0100 +Commit: Piotr Drąg +CommitDate: Sun Dec 23 04:28:23 2012 +0100 + + Updated Polish translation + + po/pl.po | 182 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 93 insertions(+), 89 deletions(-) + +commit f3ecba5e122ecd535066dd65473488498ee8fa22 +Author: Yaron Shahrabani +AuthorDate: Thu Dec 20 14:24:17 2012 +0200 +Commit: Yaron Shahrabani +CommitDate: Thu Dec 20 14:24:17 2012 +0200 + + Updated Hebrew translation. + + po/he.po | 625 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 314 insertions(+), 311 deletions(-) + +commit c284d1c4ad38281f070060da221311f23f4c0eca +Author: Daniel Mustieles +AuthorDate: Thu Dec 20 11:08:39 2012 +0100 +Commit: Daniel Mustieles +CommitDate: Thu Dec 20 11:08:39 2012 +0100 + + Updated Spanish translation + + po/es.po | 296 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 146 insertions(+), 150 deletions(-) + +commit 5445b4aeecf87233d54e27fee442359273a3f081 +Author: Nilamdyuti Goswami +AuthorDate: Thu Dec 20 13:48:11 2012 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Thu Dec 20 13:48:35 2012 +0530 + + Assamese translation updated + + po/as.po | 507 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 254 insertions(+), 253 deletions(-) + +commit 08dce819ccaa63cbc572253da034634b21ddffca +Author: Matthias Clasen +AuthorDate: Wed Dec 19 15:20:45 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 15:20:45 2012 -0500 + + Revert "gtestutils: add g_test_trap_subprocess(), deprecate + g_test_trap_fork()" + + This reverts commit e3a29184d56b3a65664eb8859e61afbc804497c8. + + docs/reference/glib/glib-sections.txt | 5 +- + glib/glib.symbols | 3 - + glib/gmessages.c | 2 +- + glib/gtestutils.c | 429 + ++++++---------------------------- + glib/gtestutils.h | 34 +-- + glib/tests/testing.c | 91 -------- + 6 files changed, 77 insertions(+), 487 deletions(-) + +commit 0178402c6d5aee998934db6d4b49fff95dc50c48 +Author: Matthias Clasen +AuthorDate: Wed Dec 19 15:20:37 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 15:20:37 2012 -0500 + + Revert "tests: port from g_test_trap_subprocess() to + g_test_trap_fork()" + + This reverts commit ea06ec80634ff8f22882f3bc92effb10ac294e41. + + gio/tests/gdbus-exit-on-close.c | 133 ++++++------ + gio/tests/gdbus-non-socket.c | 9 +- + gio/tests/gdbus-proxy.c | 20 +- + gio/tests/gschema-compile.c | 50 ++--- + gio/tests/gsettings.c | 439 + +++++++++++++--------------------------- + glib/tests/array-test.c | 27 ++- + glib/tests/dataset.c | 23 +-- + glib/tests/gvariant.c | 79 +++----- + glib/tests/logging.c | 204 ++++++++----------- + glib/tests/mem-overflow.c | 143 +++++-------- + glib/tests/option-context.c | 372 +++++++++++++++------------------- + glib/tests/scannerapi.c | 21 +- + glib/tests/slice.c | 17 +- + glib/tests/test-printf.c | 281 +++++++++++++++---------- + glib/tests/testing.c | 214 +++++++------------- + glib/tests/utils.c | 22 +- + gobject/tests/param.c | 54 +---- + tests/Makefile.am | 1 - + tests/testglib.c | 50 ++--- + 19 files changed, 884 insertions(+), 1275 deletions(-) + +commit 6f15db8c3d3b8c6f800e1408d05f57a133d0e7a1 +Author: Matthias Clasen +AuthorDate: Wed Dec 19 15:20:31 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 15:20:31 2012 -0500 + + Revert "gtestutils: fix "-p" logic" + + This reverts commit 723a8f55880f1e7bf1b475901ce40e6cd443b72d. + + glib/gtestutils.c | 2 +- + glib/tests/testing.c | 125 + --------------------------------------------------- + 2 files changed, 1 insertion(+), 126 deletions(-) + +commit 50850fe08c92caafe99f8a1130479b6a63440e44 +Author: Matthias Clasen +AuthorDate: Wed Dec 19 15:20:20 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 15:20:20 2012 -0500 + + Revert "tests/option-context: fix under --verbose" + + This reverts commit 80253cd71007975946a084697ccec9891102a3e7. + + glib/tests/option-context.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit f64d6640d4e08bc0a82aa2b13482f48efc1c1229 +Author: Matthias Clasen +AuthorDate: Wed Dec 19 15:20:13 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 15:20:13 2012 -0500 + + Revert "tests/protocol: redo a bit" + + This reverts commit 8d9969fe15f2afc0c13b5d20a3103df666d68934. + + glib/tests/protocol.c | 49 + +++++++++++++++++++++++++++++-------------------- + 1 file changed, 29 insertions(+), 20 deletions(-) + +commit 53a436221fe603686bf40feb49d79a048db44943 +Author: Matthias Clasen +AuthorDate: Wed Dec 19 15:20:05 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 15:20:05 2012 -0500 + + Revert "tests/spawn-*.c: fix on Windows" + + This reverts commit 602714a8dae08e395c8834aa059375de7dd877c0. + + glib/tests/Makefile.am | 2 -- + glib/tests/spawn-multithreaded.c | 4 ++-- + glib/tests/spawn-singlethread.c | 4 ++-- + 3 files changed, 4 insertions(+), 6 deletions(-) + +commit 2fe36a22388216a04dfd74a59a72d8636c1098e4 +Author: Simon McVittie +AuthorDate: Thu Nov 8 14:09:23 2012 +0000 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 15:14:35 2012 -0500 + + Check that credentials pass through D-Bus on supported platforms + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=687920 + + gio/tests/gdbus-peer.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit 32bfd46c7b193de9eb6794d436f797c49b6a9f68 +Author: Simon McVittie +AuthorDate: Thu Nov 8 14:08:44 2012 +0000 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 15:14:27 2012 -0500 + + GCredentials: add a regression test + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=687920 + + gio/tests/Makefile.am | 1 + + gio/tests/credentials.c | 131 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 132 insertions(+) + +commit 8f65536504a0902f1e90696eb18f8c2bd5bc1782 +Author: Simon McVittie +AuthorDate: Thu Nov 8 14:08:24 2012 +0000 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 15:08:09 2012 -0500 + + GCredentials: add getter/setter for the Unix process ID + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=687920 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gcredentials.c | 43 + +++++++++++++++++++++++++++++++++++++ + gio/gcredentials.h | 3 +++ + gio/gio.symbols | 1 + + 4 files changed, 48 insertions(+) + +commit 602714a8dae08e395c8834aa059375de7dd877c0 +Author: Dan Winship +AuthorDate: Sun Nov 25 13:52:20 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 14:35:13 2012 -0500 + + tests/spawn-*.c: fix on Windows + + Need to append ".exe" to the spawned binary name on Windows + + https://bugzilla.gnome.org/show_bug.cgi?id=679683 + + glib/tests/Makefile.am | 2 ++ + glib/tests/spawn-multithreaded.c | 4 ++-- + glib/tests/spawn-singlethread.c | 4 ++-- + 3 files changed, 6 insertions(+), 4 deletions(-) + +commit 8d9969fe15f2afc0c13b5d20a3103df666d68934 +Author: Dan Winship +AuthorDate: Sun Nov 25 11:50:09 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 14:35:12 2012 -0500 + + tests/protocol: redo a bit + + Rather than overloading --verbose, just skip the tests that aren't + supposed to be run in the parent process (so that if you do run the + toplevel test with --verbose, it doesn't immediately error out). + + https://bugzilla.gnome.org/show_bug.cgi?id=679683 + + glib/tests/protocol.c | 49 + ++++++++++++++++++++----------------------------- + 1 file changed, 20 insertions(+), 29 deletions(-) + +commit 80253cd71007975946a084697ccec9891102a3e7 +Author: Dan Winship +AuthorDate: Sun Nov 25 11:42:59 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 14:35:12 2012 -0500 + + tests/option-context: fix under --verbose + + We need to always pass G_TEST_TRAP_SILENCE_STDERR/STDOUT, or else + we can't check that they contained the right text later. + + https://bugzilla.gnome.org/show_bug.cgi?id=679683 + + glib/tests/option-context.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +commit 723a8f55880f1e7bf1b475901ce40e6cd443b72d +Author: Dan Winship +AuthorDate: Sat Aug 25 11:54:31 2012 -0400 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 14:35:11 2012 -0500 + + gtestutils: fix "-p" logic + + If you had two tests "/foo/bar" and "/foo/bar/baz", and ran the test + program with "-p /foo/bar/baz", it would run "/foo/bar" too. Fix that. + And add a test to tests/testing for it. + + https://bugzilla.gnome.org/show_bug.cgi?id=679683 + + glib/gtestutils.c | 2 +- + glib/tests/testing.c | 125 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 126 insertions(+), 1 deletion(-) + +commit ea06ec80634ff8f22882f3bc92effb10ac294e41 +Author: Dan Winship +AuthorDate: Sat Nov 24 16:34:13 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 14:35:10 2012 -0500 + + tests: port from g_test_trap_subprocess() to g_test_trap_fork() + + (or, in a few cases, to g_test_expect_message()) + + https://bugzilla.gnome.org/show_bug.cgi?id=679683 + + gio/tests/gdbus-exit-on-close.c | 133 ++++++------ + gio/tests/gdbus-non-socket.c | 9 +- + gio/tests/gdbus-proxy.c | 20 +- + gio/tests/gschema-compile.c | 50 +++-- + gio/tests/gsettings.c | 439 + +++++++++++++++++++++++++++------------- + glib/tests/array-test.c | 27 +-- + glib/tests/dataset.c | 23 ++- + glib/tests/gvariant.c | 79 +++++--- + glib/tests/logging.c | 204 +++++++++++-------- + glib/tests/mem-overflow.c | 143 ++++++++----- + glib/tests/option-context.c | 372 +++++++++++++++++++--------------- + glib/tests/scannerapi.c | 21 +- + glib/tests/slice.c | 17 +- + glib/tests/test-printf.c | 281 ++++++++++--------------- + glib/tests/testing.c | 214 +++++++++++++------- + glib/tests/utils.c | 22 +- + gobject/tests/param.c | 54 ++++- + tests/Makefile.am | 1 + + tests/testglib.c | 50 +++-- + 19 files changed, 1275 insertions(+), 884 deletions(-) + +commit e3a29184d56b3a65664eb8859e61afbc804497c8 +Author: Dan Winship +AuthorDate: Sat Nov 24 15:58:27 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 14:35:08 2012 -0500 + + gtestutils: add g_test_trap_subprocess(), deprecate g_test_trap_fork() + + g_test_trap_fork() doesn't work on Windows and is potentially flaky on + unix anyway given the fork-but-don't-exec. Replace it with + g_test_trap_subprocess(), which re-spawns the same program with + arguments telling it to run a specific (otherwise-ignored) test case. + + Make the existing g_test_trap_fork() unit tests be unix-only (they + never passed on Windows anyway), and add a parallel set of + g_test_trap_subprocess() tests. + + https://bugzilla.gnome.org/show_bug.cgi?id=679683 + + docs/reference/glib/glib-sections.txt | 5 +- + glib/glib.symbols | 3 + + glib/gmessages.c | 2 +- + glib/gtestutils.c | 429 + ++++++++++++++++++++++++++++------ + glib/gtestutils.h | 34 ++- + glib/tests/testing.c | 91 ++++++++ + 6 files changed, 487 insertions(+), 77 deletions(-) + +commit 79fab3e647b77f948d2e946d630dedec9ce19f5f +Author: Daniel Macks +AuthorDate: Sat Dec 1 14:23:01 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 14:32:24 2012 -0500 + + Add missing autoconf test for sysctlbyname() + + uses specific mib[] tokens iff it is available, but configure wasn't + testing for it to be available. + + https://bugzilla.gnome.org/show_bug.cgi?id=689324 + + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +commit 1fec9ac47d157ca28c4efc1c18e5dd98bc39332b +Author: Daniel Macks +AuthorDate: Thu Nov 29 10:33:47 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 19 14:29:08 2012 -0500 + + Fix constant type to match assigned variable type + + Some compilers assume a literal value is a certain byte-length without + checking the type to which it is being assigned, giving a compile-time + warning: a default of 'long' is a mismatch when assigning to a guint64 + when the latter is a 'long long'. Use one of glib's standard macros to + specify the type of the constant to match the variable type. + + https://bugzilla.gnome.org/show_bug.cgi?id=688829 + + glib/tests/utils.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 69ad5010e3044d5329d19b0b3099ff0c5e9e1ddc +Author: Dan Winship +AuthorDate: Wed Dec 19 09:10:01 2012 -0500 +Commit: Dan Winship +CommitDate: Wed Dec 19 09:10:12 2012 -0500 + + inotify: fix compile + + gio/inotify/ginotifyfilemonitor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5f1f9cb7d8886a6d8f06e2f67e9674758cd550bd +Author: Emmanuele Bassi +AuthorDate: Wed Dec 19 11:03:24 2012 +0000 +Commit: Emmanuele Bassi +CommitDate: Wed Dec 19 13:48:31 2012 +0000 + + timezone: Fix byte arithmetic + + Use guint8* instead of gpointer, to avoid warnings and side effects. + + https://bugzilla.gnome.org/show_bug.cgi?id=686128 + + glib/gtimezone.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit 1d7985aa0adf7c22060470de727484e92f0a0eb9 +Author: Dan Winship +AuthorDate: Mon Nov 19 16:18:55 2012 -0500 +Commit: Dan Winship +CommitDate: Wed Dec 19 08:32:42 2012 -0500 + + tests: multiple fixes to run-assert-msg-test.sh + + 1) use "../libtool" rather than "libtool" to avoid problems + with wacky OS X not-actually-libtool + + 2) Use libtool on the libtool script, not the binary, so that it + actually does anything + + 3) Don't use "gdb --ex" since it's apparently new-ish/non-portable. + + https://bugzilla.gnome.org/show_bug.cgi?id=684723 + + tests/run-assert-msg-test.sh | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +commit 3a7244bd0ca5e30b1c3199c7995f924cfd231855 +Author: Dan Winship +AuthorDate: Wed Dec 19 08:22:23 2012 -0500 +Commit: Dan Winship +CommitDate: Wed Dec 19 08:22:23 2012 -0500 + + Add "Since 2.36" to G_FILE_MONITOR_WATCH_HARD_LINKS doc + + gio/gioenums.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 707bc4a40f48f1a361071a8b8b13d96743e89561 +Author: Ryan Lortie +AuthorDate: Wed Nov 18 17:59:14 2009 -0600 +Commit: Dan Winship +CommitDate: Wed Dec 19 08:19:18 2012 -0500 + + gio + inotify support for hard links + + Add a new GFileMonitorFlag: G_FILE_MONITOR_WATCH_HARD_LINKS. + When set, + changes made to the file via another hard link will be detected. + + Implement the new flag for the inotify backend. + + https://bugzilla.gnome.org/show_bug.cgi?id=532815 + + gio/gfile.c | 19 +- + gio/gioenums.h | 9 +- + gio/inotify/ginotifydirectorymonitor.c | 2 +- + gio/inotify/ginotifyfilemonitor.c | 3 + + gio/inotify/inotify-helper.c | 20 +- + gio/inotify/inotify-path.c | 323 + ++++++++++++++++++++++++++++----- + gio/inotify/inotify-path.h | 2 +- + gio/inotify/inotify-sub.c | 4 +- + gio/inotify/inotify-sub.h | 11 +- + 9 files changed, 327 insertions(+), 66 deletions(-) + +commit e6d45972fc0f75345b7ba19ac3d554cf801ba86a +Author: John Ralls +AuthorDate: Wed Dec 19 00:40:08 2012 +0000 +Commit: John Ralls +CommitDate: Wed Dec 19 00:40:08 2012 +0000 + + Bug 633117: glib fails tests if /etc/localtime is not properly set + + glib/tests/gdatetime.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit c9939b0fc7d831e97e653ace5ca9751d17d3c405 +Author: John Ralls +AuthorDate: Tue Dec 18 15:41:09 2012 -0800 +Commit: John Ralls +CommitDate: Tue Dec 18 15:43:41 2012 -0800 + + GTimeZone interval_info: Fix interval 0 per IANA tzfile instructions + + IANA tzfiles don't always put standard time in the 0th t_info. Follow + their instructions to use the first standard time t_info for + interval 0. + + glib/gtimezone.c | 22 ++++++++++++++++++---- + 1 file changed, 18 insertions(+), 4 deletions(-) + +commit 0f0404af21a6702f394c065ca0de33eb89a5fc48 +Author: John Ralls +AuthorDate: Tue Dec 18 15:40:43 2012 -0800 +Commit: John Ralls +CommitDate: Tue Dec 18 15:43:41 2012 -0800 + + test_posix_parse: PST8PDT passes on Unix because it names an IANA + zone. + + glib/tests/gdatetime.c | 14 ++++---------- + 1 file changed, 4 insertions(+), 10 deletions(-) + +commit bdab372379790a9cca07c60ce5fa979a7dfc92ae +Author: John Ralls +AuthorDate: Mon Dec 17 13:35:10 2012 -0800 +Commit: John Ralls +CommitDate: Tue Dec 18 15:43:41 2012 -0800 + + MSWindows TimeZone Support: Refactor and rewrite TZ variable parsing + + glib/gtimezone.c | 619 + +++++++++++++++++++++++++++---------------------------- + 1 file changed, 300 insertions(+), 319 deletions(-) + +commit 1af37768a533f1f5d039869f329d5a8bcd53d5f2 +Author: John Ralls +AuthorDate: Tue Dec 11 13:42:05 2012 -0800 +Commit: John Ralls +CommitDate: Tue Dec 18 15:43:40 2012 -0800 + + Test the TZ-variable parsing functions + + glib/tests/gdatetime.c | 185 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 185 insertions(+) + +commit 7d1ae24e19b4eb35c6cea810284fadda58e6d40e +Author: John Ralls +AuthorDate: Thu Dec 6 17:16:50 2012 -0800 +Commit: John Ralls +CommitDate: Tue Dec 18 15:43:40 2012 -0800 + + Implement and test time zone name/abbrev setting for Windows. + + glib/gtimezone.c | 14 ++++++++++++++ + glib/tests/gdatetime.c | 9 +++++++++ + 2 files changed, 23 insertions(+) + +commit d12bb7ef7284b49ccdeb81d7ef80b572eb1195d8 +Author: John Ralls +AuthorDate: Tue Dec 4 10:51:48 2012 -0800 +Commit: John Ralls +CommitDate: Tue Dec 18 15:43:40 2012 -0800 + + Win32 TimeZone Support: General refactoring + + For code clarity and to pass tests + + glib/gtimezone.c | 530 + +++++++++++++++++++++++++++---------------------------- + 1 file changed, 259 insertions(+), 271 deletions(-) + +commit 1ef6933cbefe9ceed75b59e9dc4ece49aa6da247 +Author: John Ralls +AuthorDate: Tue Dec 4 11:13:04 2012 -0800 +Commit: John Ralls +CommitDate: Tue Dec 18 15:43:40 2012 -0800 + + Add MSWindows timezone names to test new windows support. + + glib/tests/gdatetime.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +commit 1ccd4d60fc6566ca4fcdbf6e961b1cb1cddc7127 +Author: Arnel A. Borja +AuthorDate: Sat Oct 20 11:06:28 2012 +0800 +Commit: John Ralls +CommitDate: Tue Dec 18 15:43:40 2012 -0800 + + GTimeZone: Fix time zones in Windows + + Get time zone information from registry. Use GetTimeZoneInformation() + instead to get the local time zone if Dynamic DST is not available. + + https://bugzilla.gnome.org/show_bug.cgi?id=683998 + + glib/gtimezone.c | 52 + +++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 49 insertions(+), 3 deletions(-) + +commit 206ba07bd99b3d0cb0620e04ed51e4529d1ba6eb +Author: Arnel A. Borja +AuthorDate: Mon Oct 15 11:07:16 2012 +0800 +Commit: John Ralls +CommitDate: Tue Dec 18 15:43:40 2012 -0800 + + GTimeZone: Parse Windows format for TZ + + Parse the "tzn[+|-]hh[:mm[:ss]][dzn]" format used in Windows for + environment variable TZ. + + https://bugzilla.gnome.org/show_bug.cgi?id=683998 + + glib/gtimezone.c | 265 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 265 insertions(+) + +commit 87436e6b3d8a6218578e6ffd63a35e60ebc8a207 +Author: Arnel A. Borja +AuthorDate: Sat Oct 20 14:10:43 2012 +0800 +Commit: John Ralls +CommitDate: Tue Dec 18 15:43:40 2012 -0800 + + GTimeZone: Parse POSIX format for TZ + + Parse the "std offset [dst [offset],start[/time],end[/time]]" (POSIX) + format used in Unix for environment variable TZ. + + https://bugzilla.gnome.org/show_bug.cgi?id=686128 + + glib/gtimezone.c | 341 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 336 insertions(+), 5 deletions(-) + +commit 9a4a53c03daf20b7a2f61db87af3b698dac80784 +Author: Arnel A. Borja +AuthorDate: Sun Oct 21 11:26:21 2012 +0800 +Commit: John Ralls +CommitDate: Tue Dec 18 15:43:40 2012 -0800 + + GTimeZone: Add initialization functions for rules + + Add functions to initialize a GTimeZone from rules. + + glib/gtimezone.c | 277 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 277 insertions(+) + +commit 9fae921c3e3ecf312e7481f764894ef84add0d76 +Author: Arnel A. Borja +AuthorDate: Mon Oct 15 10:57:09 2012 +0800 +Commit: John Ralls +CommitDate: Tue Dec 18 15:43:40 2012 -0800 + + GTimeZone: Parse more offset formats + + Allow more formats for offset. Parse seconds in offsets too. Make + offset + signs optional. + + https://bugzilla.gnome.org/show_bug.cgi?id=686128 + + glib/gtimezone.c | 46 +++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 37 insertions(+), 9 deletions(-) + +commit 59f2da17490bca084a988092986d6b28d0342bf3 +Author: John Ralls +AuthorDate: Mon Oct 15 14:32:58 2012 -0700 +Commit: John Ralls +CommitDate: Tue Dec 18 15:43:40 2012 -0800 + + Replace zoneinfo pointers with structs + + The approach of sucking a zoneinfo file into a GBytes and working with + pointers into it might be fast, but it's obtuse and not compatible + with + Microsoft Windows. + + glib/gtimezone.c | 349 + +++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 211 insertions(+), 138 deletions(-) + +commit 489e031f22611720b0259b937c81827b82ba00d6 +Author: John Ralls +AuthorDate: Mon Oct 15 14:19:53 2012 -0700 +Commit: John Ralls +CommitDate: Tue Dec 18 15:43:40 2012 -0800 + + Extract function init_zone_from_iana_info + + glib/gtimezone.c | 89 + +++++++++++++++++++++++++++++--------------------------- + 1 file changed, 46 insertions(+), 43 deletions(-) + +commit 47de8646e2ef6490d930dbb8d1da99687682dcf3 +Author: John Ralls +AuthorDate: Mon Oct 15 14:11:14 2012 -0700 +Commit: John Ralls +CommitDate: Tue Dec 18 15:43:40 2012 -0800 + + Extract function zone_info_unix + + glib/gtimezone.c | 82 + +++++++++++++++++++++++++++++++------------------------- + 1 file changed, 45 insertions(+), 37 deletions(-) + +commit 5df1edaf70ad3abe45cb599de934b9531b7388a2 +Author: Ryan Lortie +AuthorDate: Mon Nov 5 11:07:16 2012 -0500 +Commit: Rico Tzschichholz +CommitDate: Tue Dec 18 21:37:07 2012 +0100 + + gtype: disallow adding interfaces after the fact + + Add a check to prevent adding an interface to a class that has already + had its class_init done. + + This is an incompatible change but it is suspected that there are not + many users of this functionality. Two known exceptions are pygobject + (fixed in bug 686149) and our own testsuite (affected tests have been + temporarily disabled by this patch). + + Once we confirm that nobody else is using this functionality we can + remove a rather large amount of code for dealing with this case. + + https://bugzilla.gnome.org/show_bug.cgi?id=687659 + + gobject/gtype.c | 6 ++++++ + gobject/tests/threadtests.c | 20 ++++++++++++-------- + tests/gobject/Makefile.am | 3 --- + 3 files changed, 18 insertions(+), 11 deletions(-) + +commit d04faab3274ae06a318a87b08c499df7a797d39d +Author: Rico Tzschichholz +AuthorDate: Tue Dec 18 21:32:01 2012 +0100 +Commit: Rico Tzschichholz +CommitDate: Tue Dec 18 21:32:01 2012 +0100 + + gio: Fix build with -Werror=format-security + + gio/gunixvolume.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d1ab41c940aa357c4cd04dd3c66284de3a15e5c4 +Author: Rico Tzschichholz +AuthorDate: Tue Dec 18 21:23:13 2012 +0100 +Commit: Rico Tzschichholz +CommitDate: Tue Dec 18 21:23:13 2012 +0100 + + Revert "gtype: disallow adding interfaces after the fact" + + This reverts commit d6a075b0d8dfe4e4a41f6624ad7032d2163d420c. + + gobject/gtype.c | 6 ------ + gobject/tests/threadtests.c | 20 ++++++++------------ + tests/gobject/Makefile.am | 3 +++ + 3 files changed, 11 insertions(+), 18 deletions(-) + +commit f0f6c8d231b415e5d69575c0c757e10abefdca2b +Author: PHO +AuthorDate: Tue Dec 18 08:33:50 2012 +0900 +Commit: Dan Winship +CommitDate: Tue Dec 18 13:31:02 2012 -0500 + + gsocket: Work around broken CMSG_FIRSTHDR() + + As RFC 2292 points out, some platforms (e.g. Darwin 9.8.0) provide + CMSG_FIRSTHDR(msg) which just returns msg.msg_control without first + checking if msg.msg_controllen is non-zero. We need a workaround for + such platforms not to let g_socket_receive_message() segfault. + + https://bugzilla.gnome.org/show_bug.cgi?id=690388 + + gio/gsocket.c | 57 + ++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 30 insertions(+), 27 deletions(-) + +commit 780871d2738091f425afa1573bc1bce6969f85e6 +Author: Colin Walters +AuthorDate: Sat Dec 15 09:55:39 2012 -0500 +Commit: Colin Walters +CommitDate: Tue Dec 18 13:21:24 2012 -0500 + + GOutputStream: Fix a compiler warning + + gio/goutputstream.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 07bb8097e535eea27c5130c523f70759fb2ff45d +Author: Dan Winship +AuthorDate: Sat Dec 15 11:44:59 2012 -0500 +Commit: Dan Winship +CommitDate: Tue Dec 18 13:19:08 2012 -0500 + + gtask: don't deadlock when tasks block on other tasks + + If tasks block waiting for other tasks to complete then the system can + end up starved for threads. Avoid this by bumping up max-threads in + that case. + + This also reverts 7b1f8c58 and reverts max-threads for GTask's + GThreadPool back to 10. + + https://bugzilla.gnome.org/show_bug.cgi?id=687223 + + gio/gtask.c | 41 ++++++++++++++++++++++++++-- + gio/tests/task.c | 83 + +++++++++++++++++++++++++++++++++++++++++++++++++++----- + 2 files changed, 114 insertions(+), 10 deletions(-) + +commit 2149b29468bb99af3c29d5de61f75aad735082dc +Author: Colin Walters +AuthorDate: Mon Dec 17 10:47:53 2012 -0500 +Commit: Colin Walters +CommitDate: Tue Dec 18 13:13:15 2012 -0500 + + Add g_get_num_processors() + + Based on a patch from John Cupitt + + Useful for thread pools which should scale to number of processors. + + See https://bugzilla.gnome.org/show_bug.cgi?id=687223 + + https://bugzilla.gnome.org/show_bug.cgi?id=614930 + + docs/reference/glib/glib-sections.txt | 3 ++ + glib/glib.symbols | 1 + + glib/gthread.c | 56 + +++++++++++++++++++++++++++++++++++ + glib/gthread.h | 3 ++ + glib/tests/spawn-multithreaded.c | 10 ++++--- + 5 files changed, 69 insertions(+), 4 deletions(-) + +commit ed5accf16c03cc3ec5d54a457163a747d580b49d +Author: Dan Winship +AuthorDate: Thu Aug 2 15:50:35 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Dec 18 09:07:24 2012 -0500 + + gio: port file/vfs-related classes from GSimpleAsyncResult to GTask + + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + gio/gdrive.c | 56 +-- + gio/gfile.c | 933 + ++++++++++++++++++------------------------------ + gio/gfileenumerator.c | 184 ++++------ + gio/gfileicon.c | 67 +--- + gio/gfileinputstream.c | 80 ++--- + gio/gfileiostream.c | 13 +- + gio/gfileoutputstream.c | 80 ++--- + gio/gloadableicon.c | 64 ++-- + gio/gmount.c | 105 +++--- + gio/gunixmount.c | 121 +++---- + gio/gunixvolume.c | 101 +++--- + gio/gvolume.c | 44 ++- + 12 files changed, 723 insertions(+), 1125 deletions(-) + +commit 669505e354a843efb2e198d4b56e310fa6a69b9a +Author: Dan Winship +AuthorDate: Thu Aug 2 15:49:59 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Dec 18 09:07:19 2012 -0500 + + gio: port basic I/O classes from GSimpleAsyncResult to GTask + + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + gio/gbufferedinputstream.c | 168 +++++------ + gio/gbufferedoutputstream.c | 73 ++--- + gio/gdatainputstream.c | 133 ++++----- + gio/ginputstream.c | 412 +++++++++++--------------- + gio/giostream.c | 177 ++++++------ + gio/gmemoryinputstream.c | 36 +-- + gio/gmemoryoutputstream.c | 23 +- + gio/goutputstream.c | 686 + +++++++++++++++++++++----------------------- + gio/gunixinputstream.c | 110 ++----- + gio/gunixoutputstream.c | 103 ++----- + 10 files changed, 771 insertions(+), 1150 deletions(-) + +commit 586adb9790a60ed6a8168da351719a93bc0c2e1a +Author: Shantha kumar +AuthorDate: Tue Dec 18 16:48:21 2012 +0530 +Commit: Shantha kumar +CommitDate: Tue Dec 18 16:48:21 2012 +0530 + + Tamil translation updated + + po/ta.po | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 8a4567aaeba8fb9efc7d968b0d99dff00dc439eb +Author: Shantha kumar +AuthorDate: Tue Dec 18 16:35:48 2012 +0530 +Commit: Shantha kumar +CommitDate: Tue Dec 18 16:35:48 2012 +0530 + + Tamil translation updated + + po/ta.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5eb2e087cee184e48fe0563c3950f6827be35bdd +Author: Shantha kumar +AuthorDate: Tue Dec 18 16:29:08 2012 +0530 +Commit: Shantha kumar +CommitDate: Tue Dec 18 16:29:08 2012 +0530 + + Tamil translation updated + + po/ta.po | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +commit e3d6bb41c5682fca47fdcd498cbc8a356f84e81f +Author: Shantha kumar +AuthorDate: Tue Dec 18 16:07:10 2012 +0530 +Commit: Shantha kumar +CommitDate: Tue Dec 18 16:07:10 2012 +0530 + + Tamil translation updated + + po/ta.po | 107 + +++++++++++++++++++++++---------------------------------------- + 1 file changed, 39 insertions(+), 68 deletions(-) + +commit b1eb481e47a135d11aba67047631ce9dd1927d23 +Author: Shantha kumar +AuthorDate: Tue Dec 18 16:01:25 2012 +0530 +Commit: Shantha kumar +CommitDate: Tue Dec 18 16:01:25 2012 +0530 + + Tamil translation updated + + po/ta.po | 6350 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3409 insertions(+), 2941 deletions(-) + +commit 99d92b1f534a4a607558f26eef9818ec013ea64e +Author: Matej Urbančič +AuthorDate: Tue Dec 18 08:40:39 2012 +0100 +Commit: Matej Urbančič +CommitDate: Tue Dec 18 08:40:39 2012 +0100 + + Updated Slovenian translation + + po/sl.po | 1901 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 953 insertions(+), 948 deletions(-) + +commit 9061d916058d706c3ff04f633e0158444adfec28 +Author: Matthias Clasen +AuthorDate: Mon Dec 17 19:18:13 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 17 19:18:13 2012 -0500 + + bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6262a48678c2104617a9d329668e878bbbf1fb7f +Author: Matthias Clasen +AuthorDate: Mon Dec 17 14:39:24 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 17 19:15:29 2012 -0500 + + 2.35.3 + + NEWS | 65 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- + README.in | 6 ++++++ + 2 files changed, 66 insertions(+), 5 deletions(-) + +commit c23122b5e9e1933d09389a3e88d8d42de89f6727 +Author: Matthias Clasen +AuthorDate: Mon Dec 17 19:14:22 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 17 19:15:29 2012 -0500 + + Fix distcheck + + build/Makefile-newvs.am | 2 +- + build/win32/vs11/Makefile.am | 3 ++- + gio/Makefile.am | 5 +++++ + 3 files changed, 8 insertions(+), 2 deletions(-) + +commit b055c828152b01d4e00182b24dc841136f50b4e1 +Author: Christophe Fergeau +AuthorDate: Mon Dec 17 14:58:04 2012 +0100 +Commit: Christophe Fergeau +CommitDate: Mon Dec 17 15:51:07 2012 +0100 + + Fix g_type_add_class_private() name in g_warning + + When g_type_class_get_private is called without calling + g_type_add_class_private first, a g_warning is issued, but + the name of the function to call is wrong: + g_type_class_add_class_private. + + https://bugzilla.gnome.org/show_bug.cgi?id=690348 + + gobject/gtype.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit df334d6e00917d2ba8d8e722f9192da65c09827e +Author: Dan Winship +AuthorDate: Wed Dec 12 16:39:02 2012 +0100 +Commit: Dan Winship +CommitDate: Mon Dec 17 09:01:05 2012 -0500 + + gsocket: improve sockopt handling for IPv4-wrapped-IPv6 sockets + + On IPv6 sockets, set both the IPv4 and IPv6 versions of IP socket + options, in case the socket is (or might become) IPv4-wrapped. (But + ignore errors when setting the IPv4 version.) + + Similarly, when joining or leaving a multicast group, pick the sockopt + to use based on the address family of the multicast address rather + than the address family of the socket. + + https://bugzilla.gnome.org/show_bug.cgi?id=687092 + + gio/gsocket.c | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +commit 72d7d23402ff33c1bb92069829749dba0c509328 +Author: PHO +AuthorDate: Mon Dec 17 22:26:38 2012 +0900 +Commit: Dan Winship +CommitDate: Mon Dec 17 08:54:12 2012 -0500 + + Remove an unneeded escaping in NAMESER_COMPAT_INCLUDE + + In configure.ac, escaping '#' in NAMESER_COMPAT_INCLUDE results in + the following gio/gnetworking.h, which obviously doesn't compile: + + #include + #include + \#include + + https://bugzilla.gnome.org/show_bug.cgi?id=690346 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0eb28063a837b25a1ef388410fa656472f1d687d +Author: Daniel Mustieles +AuthorDate: Sun Dec 16 20:47:11 2012 +0100 +Commit: Daniel Mustieles +CommitDate: Sun Dec 16 20:47:11 2012 +0100 + + Updated Spanish translation + + po/es.po | 384 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 191 insertions(+), 193 deletions(-) + +commit bb4ced01f69aa4e1e9f49452d0fb37ab9236efc1 +Author: Piotr Drąg +AuthorDate: Sun Dec 16 03:44:09 2012 +0100 +Commit: Piotr Drąg +CommitDate: Sun Dec 16 03:44:09 2012 +0100 + + Updated Polish translation + + po/pl.po | 1034 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 515 insertions(+), 519 deletions(-) + +commit 14ee3bc44849ebec5c87f40ef8d6431e0ddf7733 +Author: Fran Diéguez +AuthorDate: Sat Dec 15 00:41:54 2012 +0100 +Commit: Fran Diéguez +CommitDate: Sat Dec 15 00:41:54 2012 +0100 + + Updated Galician translations + + po/gl.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit b0efb4523455abe6deb0ec6fb05b8baca0b6a56a +Author: Fran Diéguez +AuthorDate: Sat Dec 15 00:40:16 2012 +0100 +Commit: Fran Diéguez +CommitDate: Sat Dec 15 00:40:16 2012 +0100 + + Updated Galician translations + + po/gl.po | 921 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 464 insertions(+), 457 deletions(-) + +commit 0b2919a93a8deba7d233ccad6222e9eb92d7ccf5 +Author: Chun-wei Fan +AuthorDate: Sat Dec 15 00:28:30 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Sat Dec 15 00:28:30 2012 +0800 + + Update Visual C++ property sheets + + The last commit (Add a preconfigured gio/gnetworking.h for Windows) + has to + be split into two as git am does not like a patch that deals with + files + that have different line feeds. + + This updates the property sheets to use the pre-configured + gio/gnetworking.h during the build process. + + https://bugzilla.gnome.org/show_bug.cgi?id=690163 + + build/win32/vs10/glib.props | 6 +++--- + build/win32/vs9/glib.vsprops | 6 +++--- + 2 files changed, 6 insertions(+), 6 deletions(-) + +commit 4b859e4e7a23e4aaa325770e891b6a73d44cc9fc +Author: Chun-wei Fan +AuthorDate: Thu Dec 13 23:45:04 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Sat Dec 15 00:22:37 2012 +0800 + + Add a preconfigured gio/gnetworking.h for Windows + + Since Windows builds by Visual C++ do not make use of autotools during + its build process, we need to dist a pre-configured + gio/gnetworking.h(.win32) for such builds. + + The vs9/vs10 (and therefore vs11) property sheets are updated as well + + https://bugzilla.gnome.org/show_bug.cgi?id=690163 + + gio/Makefile.am | 1 + + gio/gnetworking.h.win32 | 82 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 83 insertions(+) + +commit cc3171f6802c909097f9633f3bde7705d39efaa9 +Author: Tomas Bzatek +AuthorDate: Fri Dec 14 16:54:09 2012 +0100 +Commit: Tomas Bzatek +CommitDate: Fri Dec 14 16:54:09 2012 +0100 + + docs: Fix return value of g_file_set_attributes_from_info() + + GIO API usually returns FALSE and sets GError when something went + wrong + and it was also the case of this method, just being badly documented. + + gio/gfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3c87ab97ffd8735bff78c177e163826484776cd2 +Author: Jasper St. Pierre +AuthorDate: Wed Dec 12 04:49:28 2012 -0500 +Commit: Jasper St. Pierre +CommitDate: Thu Dec 13 21:38:18 2012 -0500 + + gfileenumerator: Add a g_file_enumerator_get_child method + + This is a new convenience method designed to simplify some use + cases of GFileEnumerator, by making it easy to get the next file + from a file enumerator. + + https://bugzilla.gnome.org/show_bug.cgi?id=690083 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gfileenumerator.c | 31 +++++++++++++++++++++++++++++++ + gio/gfileenumerator.h | 3 +++ + gio/gio.symbols | 1 + + gio/tests/live-g-file.c | 4 ++-- + 5 files changed, 38 insertions(+), 2 deletions(-) + +commit 6cce4790b7639656c7701a4ed8495ba50abd7c6e +Author: Piotr Drąg +AuthorDate: Wed Dec 12 22:21:17 2012 +0100 +Commit: Piotr Drąg +CommitDate: Wed Dec 12 22:21:17 2012 +0100 + + Updated POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit 211ed1775dfc514077984d0fea5d2529dcc5036e +Author: Dan Winship +AuthorDate: Mon Feb 13 21:12:34 2012 -0500 +Commit: Dan Winship +CommitDate: Wed Dec 12 15:20:22 2012 +0100 + + gsocket: add getsockopt/setsockopt wrappers + + Add g_socket_get_option() and g_socket_set_option(), wrapping + getsockopt/setsockopt for the case of integer-valued options. Update + code to use these instead of the underlying calls. + + https://bugzilla.gnome.org/show_bug.cgi?id=623187 + + configure.ac | 38 ++-- + docs/reference/gio/gio-sections.txt | 2 + + gio/gio.symbols | 2 + + gio/gnetworkmonitornetlink.c | 21 +-- + gio/gsocket.c | 356 + ++++++++++++++++++++++-------------- + gio/gsocket.h | 13 ++ + gio/gunixconnection.c | 64 +++---- + 7 files changed, 288 insertions(+), 208 deletions(-) + +commit b377e69685c99150cf7661e1aa77d60934e00521 +Author: Dan Winship +AuthorDate: Thu Nov 11 09:57:25 2010 -0500 +Commit: Dan Winship +CommitDate: Wed Dec 12 15:20:22 2012 +0100 + + Add gnetworking.h + + Install a public "gnetworking.h" header that can be used to include + the relevant OS-dependent networking headers. This does not really + abstract away unix-vs-windows however; error codes, in particular, + are incompatible. + + gnetworkingprivate.h now contains just a few internal URI-related + functions + + Also add a g_networking_init() function to gnetworking.h, which can be + used to explicitly initialize OS-level networking, rather than having + that happen as a side-effect of registering GInetAddress. + + https://bugzilla.gnome.org/show_bug.cgi?id=623187 + + configure.ac | 20 ++++++++- + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 6 +++ + gio/.gitignore | 1 + + gio/Makefile.am | 3 ++ + gio/gcredentials.c | 13 +----- + gio/gdbusauth.c | 3 +- + gio/ginetaddress.c | 22 +++------- + gio/gio.symbols | 1 + + gio/gnetworking.c | 79 + +++++++++++++++++++++++++++++++++++ + gio/gnetworking.h.in | 83 + +++++++++++++++++++++++++++++++++++++ + gio/gnetworkingprivate.h | 55 +----------------------- + gio/gresolver.c | 6 +-- + gio/gsocket.c | 8 ++-- + gio/gunixconnection.c | 8 +--- + gio/gunixcredentialsmessage.c | 16 ++----- + gio/gunixfdlist.c | 3 +- + gio/gunixfdmessage.c | 3 +- + gio/gunixsocketaddress.c | 2 +- + gio/tests/gdbus-peer.c | 2 +- + gio/tests/socket.c | 3 +- + gio/tests/unix-fd.c | 2 +- + 22 files changed, 220 insertions(+), 120 deletions(-) + +commit 9e90575502e663e5adde201f214c811df08bdf29 +Author: Dan Winship +AuthorDate: Thu Dec 29 11:25:07 2011 -0500 +Commit: Dan Winship +CommitDate: Wed Dec 12 15:20:22 2012 +0100 + + gio: move resolver utils from gresolver.c to gthreadedresolver.c + + Since there is only one resolver implementation now, we can move the + resolver utility functions from gresolver.c into gthreadedresolver.c, + and remove the prototypes from gnetworkingprivate.h. + + https://bugzilla.gnome.org/show_bug.cgi?id=623187 + + gio/gnetworkingprivate.h | 34 --- + gio/gresolver.c | 555 + ----------------------------------------------- + gio/gthreadedresolver.c | 499 +++++++++++++++++++++++++++++++++++++++--- + 3 files changed, 474 insertions(+), 614 deletions(-) + +commit c70072180557c0a897da0d96ef2cf4f5398ddd3b +Author: Colin Walters +AuthorDate: Tue Dec 11 16:53:48 2012 -0500 +Commit: Colin Walters +CommitDate: Tue Dec 11 17:12:19 2012 -0500 + + g_unix_open_pipe: Add missing F_SETFD + + Spotted by Ray Strode + + While we're here, microoptimize by skipping the fcntl() calls if flags + is 0. + + https://bugzilla.gnome.org/show_bug.cgi?id=690069 + + glib/glib-unix.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 5baa26be724db9e8bb16e52568a0caca31a0b74b +Author: Colin Walters +AuthorDate: Mon Dec 10 20:30:44 2012 -0500 +Commit: Colin Walters +CommitDate: Mon Dec 10 20:30:44 2012 -0500 + + gobject.symbols: Update for g_checksum_get_type() + + See previous commit. + + gobject/gobject.symbols | 1 + + 1 file changed, 1 insertion(+) + +commit bf1e63c2aaa0ff3dad75a006576ba8b5daac6559 +Author: Colin Walters +AuthorDate: Mon Dec 10 10:50:30 2012 -0500 +Commit: Colin Walters +CommitDate: Mon Dec 10 20:08:09 2012 -0500 + + Make GChecksum more fully introspectable + + In 2.34, g_compute_checksum_for_bytes() was added, but this patch + allows binding users to use the incremental update API; this is + significantly more efficient than reading entire files into memory. + + https://bugzilla.gnome.org/show_bug.cgi?id=689982 + + glib/gchecksum.c | 8 ++++---- + gobject/gboxed.c | 1 + + gobject/glib-types.h | 11 +++++++++++ + 3 files changed, 16 insertions(+), 4 deletions(-) + +commit afdb2abb13896a3d5caecabd2f7158e8047f9956 +Author: Dan Winship +AuthorDate: Wed Nov 7 10:36:05 2012 -0500 +Commit: Dan Winship +CommitDate: Mon Dec 10 17:04:05 2012 +0100 + + gio: Don't leak the temp file when g_file_replace() fails or is + cancelled + + If the temp file still exists at the end of the close operation, + unlink it. + + https://bugzilla.gnome.org/show_bug.cgi?id=629301 + + gio/glocalfileoutputstream.c | 5 ++ + gio/tests/file.c | 136 + ++++++++++++++++++++++++++++++++++--------- + 2 files changed, 113 insertions(+), 28 deletions(-) + +commit e218b96a6bf687842834fbfe133e77495049f251 +Author: Alexander Larsson +AuthorDate: Fri Dec 7 17:34:52 2012 +0100 +Commit: Alexander Larsson +CommitDate: Mon Dec 10 12:55:28 2012 +0100 + + Add g_type_get_type_registration_serial() + + This lets you cache type lookup information and then know when + the cache information is out of date. In particular, we want this + in order to be able to cache g_type_from_name() lookups in the Gtk+ + theme machinery. + + https://bugzilla.gnome.org/show_bug.cgi?id=689847 + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gobject.symbols | 1 + + gobject/gtype.c | 23 +++++++++++++++++++++++ + gobject/gtype.h | 3 +++ + 4 files changed, 28 insertions(+) + +commit d77948eadf39ff4fdc001f679c7628e84e3af461 +Author: David Zeuthen +AuthorDate: Thu Dec 6 16:21:58 2012 -0500 +Commit: David Zeuthen +CommitDate: Thu Dec 6 16:21:58 2012 -0500 + + fileinfo: mark lost+found/ root directory as hidden + + This was reported in bug 689800. + + https://bugzilla.gnome.org/show_bug.cgi?id=689800 + + Signed-off-by: David Zeuthen + + gio/glocalfile.c | 40 ++++++++++++++++++++++++++++++++++++++++ + gio/glocalfileinfo.c | 5 +++++ + gio/glocalfileinfo.h | 4 ++++ + 3 files changed, 49 insertions(+) + +commit 510ba9b4efe1813e24c6dfa7405c3547bf9efdd7 +Author: Timothy Arceri +AuthorDate: Thu Nov 29 10:50:55 2012 +1100 +Commit: David Zeuthen +CommitDate: Thu Dec 6 16:18:19 2012 -0500 + + Support for .hidden files + + https://bugzilla.gnome.org/show_bug.cgi?id=587806 + + gio/glocalfileinfo.c | 116 + ++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 115 insertions(+), 1 deletion(-) + +commit 6869454103471d383216dc39db09279d61aa2bba +Author: Ryan Lortie +AuthorDate: Thu Dec 6 13:56:39 2012 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 6 13:58:42 2012 -0500 + + add two missing version macros + + gio/gsimpleactiongroup.h | 1 + + glib/deprecated/gthread.h | 1 + + 2 files changed, 2 insertions(+) + +commit 7c9884476085ceb3fc91cd2eb0374543e79a6e56 +Author: Ryan Lortie +AuthorDate: Thu Dec 6 13:29:31 2012 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 6 13:30:31 2012 -0500 + + various: add missing cases of #include "config.h" + + gio/gapplicationimpl-dbus.c | 2 ++ + gio/gdbusmenumodel.c | 2 ++ + gio/gioenumtypes.c.template | 2 ++ + gio/gmenuexporter.c | 2 ++ + gio/gmenumodel.c | 2 ++ + gio/gnextstepsettingsbackend.c | 2 ++ + gio/gsimpleactiongroup.c | 2 ++ + glib/glib-private.c | 2 ++ + glib/gtimezone.c | 2 ++ + glib/gvariant-core.c | 2 ++ + 10 files changed, 20 insertions(+) + +commit 7523c04b54485f3343a3fb55ada4a8f3d8290860 +Author: Ryan Lortie +AuthorDate: Sun Dec 2 12:07:24 2012 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 6 11:41:46 2012 -0500 + + g_get_home_dir(): honour $HOME + + If the $HOME environment variable is set, prefer that to the entry in + /etc/passwd. + + This brings us in line with almost every other utility and library on + UNIX-like systems while avoiding some of the more complicated + possibilities that have been suggested. + + This incompatible change has been petitioned for quite some time by + many, and in particular from the Debian world, which carries a patch + that adds a new G_HOME environment variable with the same meaning as + this patch now assigns to HOME. + + The primary motivation for the change was to increase the testability + of + GLib-based programs from 'make check' types of frameworks: it is now + possible to set HOME to a temp directory to avoid the testsuite + modifying the user's real home directory. + + The change also brings us increased compliance with the XDG Base + Directory Specification. The specification specifically states + that the + default values should be computed based on the HOME environment + variable, whereas we were basing them on the value from /etc/passwd. + + The change was agreed to by all in attendence at the November 29 Gtk+ + developer meeting. + + https://bugzilla.gnome.org/show_bug.cgi?id=142568 + + NEWS | 9 ++++++++ + glib/gutils.c | 74 + +++++++++++++++++++++++++++++------------------------------ + 2 files changed, 46 insertions(+), 37 deletions(-) + +commit 28f88cf111eb0c8ac109d8a99560c39eaa71ce01 +Author: Daniel Mustieles +AuthorDate: Wed Dec 5 20:08:15 2012 +0100 +Commit: Daniel Mustieles +CommitDate: Wed Dec 5 20:08:15 2012 +0100 + + Updated Spanish translation + + po/es.po | 290 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 147 insertions(+), 143 deletions(-) + +commit 1e74e46a00bc4495f620b3c0e639f6c05d7d2389 +Author: Colin Walters +AuthorDate: Fri Nov 30 15:18:01 2012 -0500 +Commit: Colin Walters +CommitDate: Wed Dec 5 13:30:15 2012 -0500 + + gdbusobjectskeleton: Fix compiler warnings + + The G_OBJECT_WARN_INVALID_PROPERTY_ID() macro uses a local variable + named "_object"; work around this by using "object" as the variable we + pass in. + + https://bugzilla.gnome.org/show_bug.cgi?id=689377 + + gio/gdbusobjectskeleton.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 33de093b5abf26c42e9b6ead38088afd21e61991 +Author: Colin Walters +AuthorDate: Fri Nov 30 15:22:54 2012 -0500 +Commit: Colin Walters +CommitDate: Wed Dec 5 13:30:14 2012 -0500 + + gobject: Use local variable names in macros less likely to clash + + At least GDBus had code that had "_object" as a parameter to one of + its functions, but this clashes with the GObject macro + G_OBJECT_WARN_INVALID_PROPERTY_ID() which created a local "_object". + + Since many of us cargo cult around copies of objects, let's be + defensive here and use local variable names less likely to clash with + application code. + + https://bugzilla.gnome.org/show_bug.cgi?id=689377 + + gobject/gobject.h | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit e97a2f4195fb5bd8d7777651232dc10487a1ed92 +Author: Dan Winship +AuthorDate: Thu Nov 15 22:26:54 2012 -0500 +Commit: Dan Winship +CommitDate: Wed Dec 5 11:15:19 2012 -0500 + + win32: suppress fatal error dialog box when running tests + + When running a test program (ie, if g_test_init() has been called), + don't pop up a dialog box when a fatal error occurs. Just print the + message to stderr and exit. + + https://bugzilla.gnome.org/show_bug.cgi?id=679683 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gmessages.c | 14 +++++++++----- + glib/gtestutils.c | 10 ++++++++++ + glib/gtestutils.h | 1 + + 4 files changed, 21 insertions(+), 5 deletions(-) + +commit ac025007cc571cd767fac8cbd6f937d01773ce28 +Author: Aleksander Morgado +AuthorDate: Mon Dec 3 15:59:06 2012 +0100 +Commit: Aleksander Morgado +CommitDate: Mon Dec 3 15:59:06 2012 +0100 + + gsocketlistener: set source object tag before completing the GTask + + Otherwise, the finish() method won't find the source object. + + https://bugzilla.gnome.org/show_bug.cgi?id=689538 + + gio/gsocketlistener.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 80c24d36f2525d83e458ebbdf62fdbd085945a02 +Author: Kalev Lember +AuthorDate: Sun Dec 2 15:34:37 2012 +0100 +Commit: Kalev Lember +CommitDate: Sun Dec 2 18:19:31 2012 +0100 + + win32: Fix GDBusDaemon build when glib is built as a static lib + + This makes sure not to ifdef _g_io_win32_get_module() out when glib is + built as a static lib, and also fixes it to work when DllMain isn't + available. + + The implementation uses GetModuleHandleEx() which is only available on + Windows XP and later, so this commit effectively drops the Windows + 2000 + support in glib. Earlier commit 731b4699 already took care of defining + _WIN32_WINNT to support the Windows XP API. + + https://bugzilla.gnome.org/show_bug.cgi?id=675516 + + gio/giomodule.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 4a506290a701a890b4609ac979f8e1d11935a39e +Author: Arnel A. Borja +AuthorDate: Fri Sep 14 08:58:04 2012 +0800 +Commit: Kalev Lember +CommitDate: Sun Dec 2 18:12:57 2012 +0100 + + win32: Use AC_CHECK_TOOL to find dlltool + + https://bugzilla.gnome.org/show_bug.cgi?id=684145 + + configure.ac | 1 + + tests/Makefile.am | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +commit e261b9c0308495ef03a5171fec734323748b599d +Author: Evan Nemerson +AuthorDate: Thu Nov 15 11:52:28 2012 -0800 +Commit: Evan Nemerson +CommitDate: Sat Dec 1 22:40:08 2012 -0800 + + gtask: annotate source_object arguments and return values as GObject + + https://bugzilla.gnome.org/show_bug.cgi?id=688419 + + gio/gtask.c | 17 ++++++++++------- + 1 file changed, 10 insertions(+), 7 deletions(-) + +commit fe0b77fea8c9e5e5d1dd1cada4c18f17b6c9085a +Author: Mike Gorse +AuthorDate: Thu Nov 29 16:51:59 2012 -0600 +Commit: Mike Gorse +CommitDate: Fri Nov 30 15:51:47 2012 -0600 + + Optimize reading strings when deserializing gdbus messages + + Now that we're directly accessing the memory holding a message blob, + we can access strings directly while reading them. This speeds up + read_string significantly, since we no longer malloc/memcpy/free. + + gio/gdbusmessage.c | 96 + +++++++++++++++--------------------------------------- + 1 file changed, 26 insertions(+), 70 deletions(-) + +commit a5f57bad20754b337357e1fba099773b34ed841d +Author: Matthias Clasen +AuthorDate: Fri Nov 30 09:03:20 2012 -0500 +Commit: Matthias Clasen +CommitDate: Fri Nov 30 09:05:41 2012 -0500 + + g_file_enumerate_children: Fix reference to wrong error code + + This function does in fact return G_IO_ERROR_NOT_DIRETORY, and + not G_FILE_ERROR_NOTDIR. + + gio/gfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 30cff2a8e07a818a2bd8800549b264b6dec73b89 +Author: Nilamdyuti Goswami +AuthorDate: Fri Nov 30 17:23:29 2012 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Fri Nov 30 17:23:48 2012 +0530 + + Assamese translation updated + + po/as.po | 176 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 87 insertions(+), 89 deletions(-) + +commit d64691c1fdd0fcf39e106507d30fb69aa672df04 +Author: Yaron Shahrabani +AuthorDate: Fri Nov 30 11:01:53 2012 +0200 +Commit: Yaron Shahrabani +CommitDate: Fri Nov 30 11:01:53 2012 +0200 + + Updated Hebrew translation. + + po/he.po | 161 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 81 insertions(+), 80 deletions(-) + +commit e2241c62eebbab6a169fe7ceb4413e8cc778bed7 +Author: Yaron Shahrabani +AuthorDate: Fri Nov 23 10:11:32 2012 +0200 +Commit: Yaron Shahrabani +CommitDate: Fri Nov 30 11:00:44 2012 +0200 + + Updated Hebrew translation. + + po/he.po | 1019 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 514 insertions(+), 505 deletions(-) + +commit 936254c386b57ee61ccbba3fac659fc631a9cc9a +Author: Alexander Larsson +AuthorDate: Fri Nov 30 09:39:13 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Nov 30 09:39:52 2012 +0100 + + Don't look for icons called "(null)" if no xdg mime icon + + gio/gcontenttype.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit edf94ba2631b8c4d32e798eaec69ceb89d6b32a8 +Author: Emilio Pozuelo Monfort +AuthorDate: Thu Nov 29 17:48:35 2012 +0100 +Commit: Emilio Pozuelo Monfort +CommitDate: Fri Nov 30 00:07:58 2012 +0100 + + Fix race condition in gapplication/basic test + + The three processes this test creates need to be executed + in order, and g_usleep was used to guarantee that. + However, under heavy load, that is not enough. Instead, + wait until the children start by making sure they have + written to stdout before proceeding any further. + + https://bugzilla.gnome.org/show_bug.cgi?id=664627 + + gio/tests/gapplication.c | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +commit 3e5214c15c2a19b64d74e7142b6cd0d520dddf04 +Author: Mike Gorse +AuthorDate: Wed Oct 31 19:44:03 2012 -0500 +Commit: Mike Gorse +CommitDate: Thu Nov 29 14:15:34 2012 -0600 + + Use a simple struct when reading and writing gdbus messages + + GData*Streams incur significant overhead, and we do not need all + of the + functionality that they provide, since we only ever read from/write to + memory when handling message blobs, so it is more performant to use a + simple structure. + + https://bugzilla.gnome.org/show_bug.cgi?id=652650 + + gio/gdbusmessage.c | 818 + +++++++++++++++++++++++++++++++++++++++-------------- + 1 file changed, 600 insertions(+), 218 deletions(-) + +commit ccd1fb682050f4ccd9e0b5d1024d02199b7c862b +Author: Juan Pablo Ugarte +AuthorDate: Thu Nov 29 16:12:25 2012 -0300 +Commit: Juan Pablo Ugarte +CommitDate: Thu Nov 29 16:29:47 2012 -0300 + + Added G_IO_ERROR_BROKEN_PIPE + + gio/gioenums.h | 4 +++- + gio/gioerror.c | 6 ++++++ + 2 files changed, 9 insertions(+), 1 deletion(-) + +commit 52c608dd0d2f8a2818c6b1fc36040eeed8f301ab +Author: Ryan Lortie +AuthorDate: Thu Nov 29 09:03:32 2012 -0500 +Commit: Colin Walters +CommitDate: Thu Nov 29 14:07:27 2012 -0500 + + gio: GLIB_AVAILABLE_IN to more APIs + + Useful on its own, but also for a future patch for symbol visibility. + + https://bugzilla.gnome.org/show_bug.cgi?id=688681 + + gio/gactionmap.h | 4 ++++ + gio/gapplication.h | 1 + + gio/gcontenttype.h | 1 + + gio/gdesktopappinfo.h | 6 ++++++ + gio/ginetaddressmask.h | 6 ++++++ + gio/giomodule.h | 5 +++++ + gio/gmenu.h | 27 +++++++++++++++++++++++++++ + gio/gmenumodel.h | 19 +++++++++++++++++++ + gio/gresource.h | 2 ++ + gio/gsettingsschema.h | 4 ++++ + gio/gsimpleaction.h | 1 + + 11 files changed, 76 insertions(+) + +commit ce586ba991967b1a663a9082312a45725da6fe5b +Author: Kalev Lember +AuthorDate: Wed Nov 28 23:25:52 2012 +0100 +Commit: Kalev Lember +CommitDate: Wed Nov 28 23:25:52 2012 +0100 + + Unconditionally use g_content_type_get_symbolic_icon() + + ... and g_content_type_get_generic_icon_name(). The new functions are + implemented for Win32 since commit dace477c, so we no longer need to + guard them with G_OS_UNIX. + + gio/gio.symbols | 2 -- + gio/glocalfileinfo.c | 2 -- + 2 files changed, 4 deletions(-) + +commit c9affa778e14e7dc44221fa678963e09df744f32 +Author: Sebastian Dröge +AuthorDate: Wed Nov 28 16:55:12 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Wed Nov 28 16:55:12 2012 +0100 + + Revert "Fix compilation on Android with the bionic C library" + + This reverts commit cb0ed84d4022e0fba6aaa9e99e258d8d507a90e5. + + It wasn't meant to be pushed yet. + + gio/glocalfileinfo.c | 2 - + gio/gresolver.c | 137 + ------------------------------------- + gio/gthreadedresolver.c | 7 -- + gio/tests/gtlsconsoleinteraction.c | 10 +-- + glib/galloca.h | 4 +- + glib/gstrfuncs.c | 14 ---- + glib/gutils.c | 6 -- + gmodule/gmodule-dl.c | 4 -- + 8 files changed, 2 insertions(+), 182 deletions(-) + +commit 97385dbbe82a628a9997ed85e6c9f58dddf334d0 +Author: Andoni Morales Alastruey +AuthorDate: Wed Nov 28 16:34:18 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Wed Nov 28 16:34:18 2012 +0100 + + Fix duplicated case value for mingw runtimes defining EOVERLFOW + as EFBIG + + glib/giochannel.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit cb0ed84d4022e0fba6aaa9e99e258d8d507a90e5 +Author: Sebastian Dröge +AuthorDate: Wed Nov 28 16:28:28 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Wed Nov 28 16:32:48 2012 +0100 + + Fix compilation on Android with the bionic C library + + gio/glocalfileinfo.c | 2 + + gio/gresolver.c | 137 + +++++++++++++++++++++++++++++++++++++ + gio/gthreadedresolver.c | 7 ++ + gio/tests/gtlsconsoleinteraction.c | 10 ++- + glib/galloca.h | 4 +- + glib/gstrfuncs.c | 14 ++++ + glib/gutils.c | 6 ++ + gmodule/gmodule-dl.c | 4 ++ + 8 files changed, 182 insertions(+), 2 deletions(-) + +commit 058fa6393e368a2134f18df3296c09eb33d8e951 +Author: Sebastian Dröge +AuthorDate: Wed Nov 28 16:25:43 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Wed Nov 28 16:25:43 2012 +0100 + + Protect against strcmp() on NULL strings + + glib/ggettext.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit fca30c3e165df732360e26c685496729dbcfe8b9 +Author: Martin Pitt +AuthorDate: Wed Nov 28 12:09:17 2012 +0100 +Commit: Martin Pitt +CommitDate: Wed Nov 28 12:10:52 2012 +0100 + + g_unix_signal_add_full(): Annotate to shadow g_unix_signal_add() + + Just like g_timeout_add() and friends, we want to hide the + unintrospectable + g_unix_signal_add() from GI bindings and present + g_unix_signal_add_full() as + GLib.unix_signal_add() to them. + + glib/glib-unix.c | 1 + + 1 file changed, 1 insertion(+) + +commit 2b6be7544c5f5a8937f9e62eb796d0489cb46a67 +Author: Matthias Clasen +AuthorDate: Wed Nov 28 00:04:45 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Nov 28 00:58:03 2012 -0500 + + Add new api to the docs + + docs/reference/gio/gio-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit 65740f62bfa41836a738267d09fc676744af8edc +Author: Matthias Clasen +AuthorDate: Wed Nov 28 00:01:11 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Nov 28 00:58:03 2012 -0500 + + Fix suprisingly hard-to-spot typo + + gio/gfileinfo.c | 2 +- + gio/gfileinfo.h | 2 +- + gio/gio.symbols | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit ed5c17e11f3b37b0725e1ca2f62511338fa23f1b +Author: Colin Walters +AuthorDate: Thu Nov 22 08:23:27 2012 -0500 +Commit: Colin Walters +CommitDate: Tue Nov 27 20:45:21 2012 -0500 + + GMemoryOutputStream: Add new _resizable() constructor usable from + bindings + + Really, the memory output stream API is too warped around the model + where it's a fixed size buffer that you've already allocated. Even in + C, I find myself always wanting to use it to just accumulate data into + an arbitrary-sized buffer it allocates. + + Unfortunately, it's also not usable from bindings because it's not + common to bind g_free() and g_realloc(), but if you just pass + NULL, you + get the default of a fixed size, which is useless as per above. + + I am going to use this from a gjs test case, and the GSubprocess test + cases also will use it. + + https://bugzilla.gnome.org/show_bug.cgi?id=688931 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 1 + + gio/gmemoryoutputstream.c | 14 ++++++++++++++ + gio/gmemoryoutputstream.h | 2 ++ + gio/tests/memory-output-stream.c | 4 ++-- + 5 files changed, 20 insertions(+), 2 deletions(-) + +commit 7a5dd54f472790c7ba366d267c637eb203797c14 +Author: Bastien Nocera +AuthorDate: Tue Nov 27 17:23:08 2012 +0100 +Commit: Bastien Nocera +CommitDate: Tue Nov 27 17:23:08 2012 +0100 + + fileinfo: Add missing AVAILABLE macro + + As forgotten in previous patch. + + gio/gfileinfo.h | 1 + + 1 file changed, 1 insertion(+) + +commit f635f1fd16d72ba4dc1fe2f1dc1413c773595393 +Author: Bastien Nocera +AuthorDate: Tue Nov 27 16:59:28 2012 +0100 +Commit: Bastien Nocera +CommitDate: Tue Nov 27 16:59:28 2012 +0100 + + fileinfo: Add _get_deletion_date() helper + + For use in gnome-settings-daemon, so that callers don't have + to parse the deletion date by hand. + + gio/gfileinfo.c | 36 ++++++++++++++++++++++++++++++++++++ + gio/gfileinfo.h | 1 + + gio/gio.symbols | 1 + + 3 files changed, 38 insertions(+) + +commit 3baf256a2c55ffcf2664e72a39821fddb59370e1 +Author: Ryan Lortie +AuthorDate: Sun Nov 25 14:25:59 2012 -0500 +Commit: Ryan Lortie +CommitDate: Tue Nov 27 10:10:37 2012 -0500 + + gio: New API for GFile from remote commandline arg + + Add a pair of new APIs: one to GFile to create a new file from a + commandline arg relative to a given cwd and one to + GApplicationCommandLine to create a GFile from an arg, relative to the + cwd of the invoking commandline. + + https://bugzilla.gnome.org/show_bug.cgi?id=689037 + + docs/reference/gio/gio-sections.txt | 2 + + gio/gapplicationcommandline.c | 32 ++++++++++++++++ + gio/gapplicationcommandline.h | 4 ++ + gio/gfile.c | 76 + +++++++++++++++++++++++++++++-------- + gio/gfile.h | 3 ++ + gio/gio.symbols | 2 + + 6 files changed, 103 insertions(+), 16 deletions(-) + +commit 4e7161ce20364a61db1b6188654c19d9ff83b9d9 +Author: ManojKumar Giri +AuthorDate: Tue Nov 27 19:21:43 2012 +0530 +Commit: ManojKumar Giri +CommitDate: Tue Nov 27 19:21:43 2012 +0530 + + Updated Odia Translation with FUEL implementation. + + po/or.po | 325 + +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 190 insertions(+), 135 deletions(-) + +commit b55e1820a9faff5557d99f78bd0a205659afc60d +Author: Dan Winship +AuthorDate: Sat Nov 24 15:47:45 2012 -0500 +Commit: Dan Winship +CommitDate: Mon Nov 26 10:47:34 2012 -0500 + + g_test_expect_message: fix pattern syntax in example code + + glib/gmessages.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 37f369a41eebcebe331f614b12c07cb954f3144c +Author: Ryan Lortie +AuthorDate: Sun Nov 25 14:47:53 2012 -0500 +Commit: Ryan Lortie +CommitDate: Sun Nov 25 14:51:04 2012 -0500 + + stop using libgthread internally + + The gobject tools (glib-genmarshal and gobject-query) were linking + against libgthread. Stop that. + + Also, remove the gthread_INCLUDES internal automake substitution. + + configure.ac | 9 ++------- + gobject/Makefile.am | 4 ++-- + 2 files changed, 4 insertions(+), 9 deletions(-) + +commit 1f005d93853f882cfeac3805644286e4d8a99124 +Author: John Ralls +AuthorDate: Sun Nov 25 16:35:08 2012 +0900 +Commit: John Ralls +CommitDate: Sun Nov 25 16:44:06 2012 +0900 + + Bug 681685: Transcoding fails on OSX + + Add aliases for codesets supported by iconv and included in locales. + Ifdef-out tests in glib/tests/gdatetime.c which fail because on + OSX only + ASCII numbers or symbols are returned for the format. + + Even though nl_langinfo does weird things on Darwin in some cases, it + still acts correctly when LANG/LC_ALL is set to a supported + locale.codeset. + + glib/libcharset/config.charset | 32 ++++++++++++++++++++++++++++++++ + glib/tests/gdatetime.c | 8 ++++++++ + 2 files changed, 40 insertions(+) + +commit ee8080cc0bda9141e323c01b12e812b1ab748e18 +Author: Paolo Borelli +AuthorDate: Sat Nov 24 19:12:13 2012 +0100 +Commit: Paolo Borelli +CommitDate: Sat Nov 24 19:21:54 2012 +0100 + + Add GApplication local_command_line test + + Assert that startup and shutdown are not called if we return TRUE from + local_command_line + + gio/tests/gapplication.c | 56 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 56 insertions(+) + +commit 543bbd8752cf6370897c711afed3caa0663a4850 +Author: Ryan Lortie +AuthorDate: Sat Nov 24 13:20:29 2012 -0500 +Commit: Ryan Lortie +CommitDate: Sat Nov 24 13:20:29 2012 -0500 + + GApplication: don't shutdown() on failure to start + + If we fail to start (and don't register() or call startup()) then also + don't call shutdown(). This happens in the case of failing to parse + commandline arguments, for example. + + gio/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit be008ea6e2fd4d6fa38d00b16365b20e7fc2f876 +Author: Ryan Lortie +AuthorDate: Sat Nov 24 11:23:22 2012 -0500 +Commit: Ryan Lortie +CommitDate: Sat Nov 24 11:23:22 2012 -0500 + + gdatetime: Fix some docs sed damage + + glib/gdatetime.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit afc2294fa84992784945842048a3e8799d73f1a8 +Author: Rajesh Ranjan +AuthorDate: Fri Nov 23 14:22:25 2012 +0530 +Commit: Rajesh Ranjan +CommitDate: Fri Nov 23 14:22:25 2012 +0530 + + hindi translation update + + po/hi.po | 873 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 451 insertions(+), 422 deletions(-) + +commit 7ed88ac25cbd93e5e15047a42570e1bb3003458d +Author: Rajesh Ranjan +AuthorDate: Fri Nov 23 14:04:34 2012 +0530 +Commit: Rajesh Ranjan +CommitDate: Fri Nov 23 14:04:34 2012 +0530 + + hindi translation update + + po/hi.po | 19 +++++++++---------- + 1 file changed, 9 insertions(+), 10 deletions(-) + +commit 6290d5218100bd12d4cf3fdc4087ba0fbb0afa94 +Author: Rajesh Ranjan +AuthorDate: Fri Nov 23 14:02:05 2012 +0530 +Commit: Rajesh Ranjan +CommitDate: Fri Nov 23 14:02:05 2012 +0530 + + hindi translation update + + po/hi.po | 876 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 424 insertions(+), 452 deletions(-) + +commit 2b7c2107a5478660630666e57d53251c7602135a +Author: Sébastien Wilmet +AuthorDate: Thu Nov 22 19:41:19 2012 +0100 +Commit: Sébastien Wilmet +CommitDate: Thu Nov 22 23:08:54 2012 +0100 + + Improve i18n documentation + + Clearly explain which gettext functions must be called. It depends + whether the program is an application or a library. + + https://bugzilla.gnome.org/show_bug.cgi?id=688886 + + glib/ggettext.c | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +commit 276cf6ceeea9489ef1ed23788c3c42dee5fcd72d +Author: Krzesimir Nowak +AuthorDate: Thu Nov 22 16:56:52 2012 +0100 +Commit: Krzesimir Nowak +CommitDate: Thu Nov 22 17:33:04 2012 +0100 + + configure: Make GNUC visibility attribute test more reliable. + + Using "int main (int argc, char** argv)" in this test causes GCC to + issue two warnings about unused variable if CFLAGS envvar has + -Wunused-parameter (or just -Wextra). Those warnings are not related + to the attribute checking but they can make the test fail anyway. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 73d230bc2500a17f9d7eb605c8c86fad3a878014 +Author: Nilamdyuti Goswami +AuthorDate: Thu Nov 22 21:59:15 2012 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Thu Nov 22 21:59:15 2012 +0530 + + Assamese translation updated + + po/as.po | 1017 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 548 insertions(+), 469 deletions(-) + +commit 7944195b7acadc6061c1e4fac0aad3be11a5bb16 +Author: ManojKumar Giri +AuthorDate: Thu Nov 22 20:20:05 2012 +0530 +Commit: ManojKumar Giri +CommitDate: Thu Nov 22 20:20:05 2012 +0530 + + Updated Odia Translation with FUEL implementation. + + po/or.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5089ebefe97447c9cf1dbc6779de24568cd624d2 +Author: ManojKumar Giri +AuthorDate: Thu Nov 22 20:18:15 2012 +0530 +Commit: ManojKumar Giri +CommitDate: Thu Nov 22 20:18:15 2012 +0530 + + Updated Odia Translation with FUEL implementation. + + po/or.po | 1897 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 1072 insertions(+), 825 deletions(-) + +commit 5ff99924d89896541212c93b0ac80229e7fc6a20 +Author: Will Thompson +AuthorDate: Wed Nov 14 14:59:42 2012 +0000 +Commit: Will Thompson +CommitDate: Thu Nov 22 09:37:22 2012 +0000 + + gthread: add AVAILABLE_IN_2_32 annotations + + https://bugzilla.gnome.org/show_bug.cgi?id=688319 + + glib/gthread.h | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +commit 4ffa4724383cbb93c4c2fd0fb8d46027a54acde0 +Author: Matthias Clasen +AuthorDate: Wed Nov 21 17:39:19 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Nov 21 21:20:25 2012 -0500 + + Add a test for the GAppLaunchContext::launched signal + + gio/tests/appinfo.c | 50 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 50 insertions(+) + +commit bace1822d792cd8767156508834237d550888177 +Author: Matthias Clasen +AuthorDate: Fri Nov 16 18:24:21 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Nov 21 21:20:25 2012 -0500 + + GAppLaunchContext: make it possible ot get the effective startup id + + gnome-session needs to know the startup id that was given to + a started app; this was not available via GAppLaunchContext. + This commit adds a ::launched signal to get this information. + At the same time, turn the launch_failed vfunc into a signal + as well. + + https://bugzilla.gnome.org/show_bug.cgi?id=688497 + + gio/gappinfo.c | 55 + +++++++++++++++++++++++++++++++++++++++++++++------ + gio/gappinfo.h | 4 +++- + gio/gdesktopappinfo.c | 14 +++++++++++++ + 3 files changed, 66 insertions(+), 7 deletions(-) + +commit 7b0c93554be9db2db2cba2cd59bcbebad5077d47 +Author: Matthias Clasen +AuthorDate: Wed Nov 21 21:14:26 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Nov 21 21:20:25 2012 -0500 + + Add new api to exported symbols + + gio/gio.symbols | 3 +++ + 1 file changed, 3 insertions(+) + +commit 419a1e404007ac7d63788e700ed30b54a5efa711 +Author: Matthias Clasen +AuthorDate: Wed Nov 21 21:13:40 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Nov 21 21:20:25 2012 -0500 + + Add new API to the docs + + docs/reference/gio/gio-sections.txt | 3 +++ + 1 file changed, 3 insertions(+) + +commit ace7b0fd86430774fc5de2eaee8d6b1b15930c59 +Author: Matthias Clasen +AuthorDate: Wed Nov 21 16:15:14 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Nov 21 21:13:01 2012 -0500 + + Add a test for new GDesktopAppInfo getters + + gio/tests/desktop-app-info.c | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit 4adbc7aa42d75c072cf6946240a82f56247416f6 +Author: Matthias Clasen +AuthorDate: Fri Nov 16 18:22:45 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Nov 21 21:12:45 2012 -0500 + + GDesktopAppInfo: add enough api to make autostart implementable + + gnome-session still uses EggDesktopFile, since GDesktopAppInfo is + missing a handful of APIs that are needed to implement the + autostart spec. This patch adds the minimum that is required. + + https://bugzilla.gnome.org/show_bug.cgi?id=688497 + + gio/gdesktopappinfo.c | 103 + ++++++++++++++++++++++++++++++++++++++++++++------ + gio/gdesktopappinfo.h | 9 +++++ + 2 files changed, 101 insertions(+), 11 deletions(-) + +commit 563ee093bccca5727908a7c20da2a42f59cb004b +Author: Chun-wei Fan +AuthorDate: Thu Nov 22 08:59:02 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Nov 22 08:59:02 2012 +0800 + + build/win32/Makefile.am: Also go into the vs11 subdirectory + + build/win32/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 76cecf061b377d30e5422cdddb1fb9d19c52421d +Author: Chun-wei Fan +AuthorDate: Mon Nov 19 12:58:55 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Nov 22 08:56:51 2012 +0800 + + Add autotools scripts to create VS2012 projects + + As the project file format for Visual Studio 2012 is only slightly + different from Visual Studio 2010 projects, we can provide support for + building GLib (and other projects) with Visual Studio 2012 with + relatively + little effort. This might change when we eventually get GLib to + work with + the Windows 8 (Modern UI/formerly Metro) APIs, but this will + suffice for + the time being for people needing to build GLib with Visual Studio + 2012. + + Basically all that needs to be done at 'make dist' is: + -Copy the .sln/.props/README.txt/.vcxproj files and replace the VS2010 + stuff with VS2012 stuff + -Copy the .vcxproj.filters as is + + build/Makefile-newvs.am | 32 ++++++++++++++++++++++++++++++++ + build/win32/vs11/.gitignore | 30 ++++++++++++++++++++++++++++++ + build/win32/vs11/Makefile.am | 36 ++++++++++++++++++++++++++++++++++++ + configure.ac | 1 + + 4 files changed, 99 insertions(+) + +commit 269f890474de12f31548ddb66ff9a856b18a9894 +Author: Kjell Ahlstedt +AuthorDate: Mon Nov 12 17:07:39 2012 +0100 +Commit: Colin Walters +CommitDate: Wed Nov 21 18:09:46 2012 -0500 + + GObject: Fix code snippet in description of floating reference. + + https://bugzilla.gnome.org/show_bug.cgi?id=688180 + + gobject/gobject.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 5900d60d0640af59961e87f5315eb1d2f11fad9c +Author: Olivier Blin +AuthorDate: Wed Nov 14 19:08:10 2012 +0100 +Commit: Colin Walters +CommitDate: Wed Nov 21 17:56:12 2012 -0500 + + configure: add missing square bracket in AS_IF for memmove + + This has been broken in commit + 54e31ab4f172bbb28434eafc34c9345a93c9ccf5 + It seems to be the only hunk that was incorrectly converted. + + https://bugzilla.gnome.org/show_bug.cgi?id=688377 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6e2046207a2fe1c013bbf348b87d54a1375dea7a +Author: Eduardo Lima Mitev +AuthorDate: Fri Nov 16 18:20:09 2012 +0100 +Commit: Julian Andres Klode +CommitDate: Wed Nov 21 21:50:26 2012 +0100 + + gchecksum: Adds SHA512 support + + https://bugzilla.gnome.org/show_bug.cgi?id=602715 + + glib/gchecksum.c | 317 + +++++++++++++++++++++++++++++++++++++++++++++++++- + glib/gchecksum.h | 4 +- + glib/tests/checksum.c | 192 ++++++++++++++++++++++++++++++ + 3 files changed, 511 insertions(+), 2 deletions(-) + +commit 5c94a3e89cae9946bab07478c992172eda9c8ca9 +Author: Daniel Mustieles +AuthorDate: Tue Nov 20 15:50:54 2012 +0100 +Commit: Daniel Mustieles +CommitDate: Tue Nov 20 15:50:54 2012 +0100 + + Updated Spanish translation + + po/es.po | 815 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 414 insertions(+), 401 deletions(-) + +commit 46a92a760b8fc83015ec5016cd0bc8b3ab343325 +Author: Sebastian Dröge +AuthorDate: Tue Nov 20 08:58:30 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Tue Nov 20 15:03:06 2012 +0100 + + Add boxed GType for GThread + + https://bugzilla.gnome.org/show_bug.cgi?id=688704 + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gboxed.c | 2 ++ + gobject/glib-types.h | 11 +++++++++++ + gobject/gobject.symbols | 1 + + 4 files changed, 15 insertions(+) + +commit ca8062a389d88b879da1018c5d2f7429113b9e9e +Author: Shankar Prasad +AuthorDate: Tue Nov 20 11:42:27 2012 +0530 +Commit: Shankar Prasad +CommitDate: Tue Nov 20 11:42:58 2012 +0530 + + Updated Kannada Translations + + po/kn.po | 372 + +++++++++++++++++++++++++++------------------------------------ + 1 file changed, 157 insertions(+), 215 deletions(-) + +commit 51d083010286cb4bdc0d7b0b2323e25a94115087 +Author: Debarshi Ray +AuthorDate: Tue Nov 20 00:11:56 2012 +0100 +Commit: Debarshi Ray +CommitDate: Tue Nov 20 00:24:52 2012 +0100 + + file-info: Don't leak the filename if thumbnailing failed + + Fixes: https://bugzilla.gnome.org/686895 + + gio/glocalfileinfo.c | 1 + + 1 file changed, 1 insertion(+) + +commit cdc95d31e61d6ff9425011af7904cb342e4a3a86 +Author: Ryan Lortie +AuthorDate: Mon Nov 19 18:20:41 2012 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 19 18:20:41 2012 -0500 + + *bump* + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 779ed3f0a530f402d522b1eb23c2dd06f70e6413 +Author: Ryan Lortie +AuthorDate: Mon Nov 19 16:14:05 2012 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 19 16:18:20 2012 -0500 + + NEWS + + NEWS | 84 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 84 insertions(+) + +commit 824bc48adb464d5360237975fc5369f0b634d9b9 +Author: Ryan Lortie +AuthorDate: Mon Nov 19 16:10:55 2012 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 19 16:14:16 2012 -0500 + + Remove two accidentally-exported symbols + + This reverts commit 85976cf91deae6ac7cf1639a187a424ff7296968 and + properly removes the offending symbols from gio.symbols. + + These two private symbols were found to be exported during Colin's + recent work cleaning up function visibility (among other things). + + They were never exposed in any header file and I am 100% certain that + they have never been used by anybody. They were always private + -- only + exposed on the library symbol list. + + This change will cause ABI checking tools to complain that we have + removed functions, but the change is completely harmless for actual + applications. + + https://bugzilla.gnome.org/show_bug.cgi?id=687441 + + gio/gio.symbols | 2 -- + gio/gmenumodel.c | 8 ++------ + 2 files changed, 2 insertions(+), 8 deletions(-) + +commit 5272bc4d67ff6c100ba02b02869db80f51d37c26 +Author: Ryan Lortie +AuthorDate: Mon Nov 19 10:28:55 2012 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 19 10:30:47 2012 -0500 + + Revert "[gobject] set all properties before constructed()" + + This reverts commit 028d4a03f2baa7ca9243a2819f30ffb0d5e137d7. + + I thought that we would be able to get away with this incompatible + change but it appears to impact far too much existing code. The only + thing we can do is revert. + + https://bugzilla.gnome.org/show_bug.cgi?id=688596 + + gobject/gobject.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 39150f90e5c34e5402c1a31ed9e71d2e21cfd4c0 +Author: Chun-wei Fan +AuthorDate: Mon Nov 19 12:38:28 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 19 12:38:28 2012 +0800 + + Update config.h.win32.in + + Make its entries correspond to the entries in config.h.in, and use + _strnicmp for strncasecmp on Visual C++. + + config.h.win32.in | 29 ++++++++++++++++++++--------- + 1 file changed, 20 insertions(+), 9 deletions(-) + +commit 596f96b08db1b99c820e397cb2030fa27e79ff96 +Author: Antoine Jacoutot +AuthorDate: Sat Nov 17 09:44:48 2012 +0100 +Commit: Antoine Jacoutot +CommitDate: Sat Nov 17 16:32:23 2012 +0100 + + gio-kqueue: use O_EVTONLY on MacOS + + MacOS provides the O_EVTONLY flag to open(2) which allow to open + a file + for monitoring without preventing an unmount of the volume that + contains + it. + + https://bugzilla.gnome.org/show_bug.cgi?id=688518 + + gio/kqueue/kqueue-exclusions.c | 5 +++++ + gio/kqueue/kqueue-helper.c | 4 ++++ + 2 files changed, 9 insertions(+) + +commit ef8510be09a746dcbc8d470376688820b225c40f +Author: Michael Natterer +AuthorDate: Fri Nov 16 18:48:09 2012 +0100 +Commit: Michael Natterer +CommitDate: Fri Nov 16 18:51:41 2012 +0100 + + Bug 673047 - gunicollate is broken on OS X + + Apply slightly modified patch from Camillo Lugaresi which fixes + gunicollate for OSX >= 10.6. It was totally hilariously broken + for anyone on 10.6 and later, I dont know if it's now broken + on 10.5, but better fix it for the vast majority of users. + + glib/gunicollate.c | 29 ++++++++++++++--------------- + 1 file changed, 14 insertions(+), 15 deletions(-) + +commit 11e306a759f6c90f4b1da67dbdf5a98ca5809670 +Author: Kalev Lember +AuthorDate: Fri Nov 16 17:33:14 2012 +0100 +Commit: Kalev Lember +CommitDate: Fri Nov 16 17:33:14 2012 +0100 + + Fix a broken link in GConf migration guide + + gnome-utils git repo was moved to archive/ and this broke the link. + + docs/reference/gio/migrating-gconf.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 03ef7ba5abab928c17142f553f86b97d28ecf946 +Author: Dan Winship +AuthorDate: Thu Nov 15 18:18:54 2012 -0500 +Commit: Dan Winship +CommitDate: Fri Nov 16 08:22:06 2012 -0500 + + win32: re-fix the _utf8 compat function situation + + The previous fix didn't work, because every place within glib that + used any of the functions also needed to be including win32compat.h. + + So, move the prototypes back to their original headers (but at least + all in one place at the bottom). + + https://bugzilla.gnome.org/show_bug.cgi?id=688109 + + docs/reference/glib/Makefile.am | 3 +- + glib/Makefile.am | 1 - + glib/gconvert.c | 1 - + glib/gconvert.h | 24 ++++++ + glib/gdir.c | 1 - + glib/gdir.h | 10 +++ + glib/genviron.h | 12 +++ + glib/gfileutils.h | 20 +++++ + glib/giochannel.h | 8 ++ + glib/glib.h | 4 - + glib/gspawn.h | 46 +++++++++++ + glib/gutils.h | 14 ++++ + glib/gwin32.h | 14 ++++ + glib/gwin32compat.h | 178 + ---------------------------------------- + 14 files changed, 149 insertions(+), 187 deletions(-) + +commit 834e6e96b355d7b313f59eef3c90a68bc5463365 +Author: Paul Menzel +AuthorDate: Wed Nov 14 18:49:50 2012 +0100 +Commit: David King +CommitDate: Fri Nov 16 08:44:23 2012 +0000 + + docs: Fix spelling of "exceed" in gobject/gtype.c + + https://bugzilla.gnome.org/show_bug.cgi?id=688338 + + gobject/gtype.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8bf295bcd8d870997bb067adbddc5636f8bae9cf +Author: Aleksander Morgado +AuthorDate: Thu Nov 15 09:31:14 2012 +0100 +Commit: Aleksander Morgado +CommitDate: Thu Nov 15 22:24:54 2012 +0100 + + gdbus: improve documentation of the GDBusError section + + https://bugzilla.gnome.org/show_bug.cgi?id=688370 + + gio/gdbuserror.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 2628dc2c09ea7658aebf810d9db90070e3be301d +Author: Dan Winship +AuthorDate: Sun Nov 11 13:07:30 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Nov 15 14:19:06 2012 -0500 + + gtestutils: don't try to print long doubles + + A few gtestutils function use long double as a type that can (in + theory) hold any int or any double. But win32 doesn't support long + doubles in printf, so convert them to ints or doubles first before + trying to print them. + + https://bugzilla.gnome.org/show_bug.cgi?id=688109 + + glib/gtestutils.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +commit aa1418c427ea904e22c9bfe812a569f4aee1e3f7 +Author: Dan Winship +AuthorDate: Sun Nov 11 13:05:16 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Nov 15 14:19:06 2012 -0500 + + win32: work around broken winsock prototypes + + Re-#define a few socket functions to work around winsock's prototypes + having, eg, "int *" rather than "unsigned int *", or "char *" rather + than "void *". + + (Also fix two places that mistakenly assumed guint==guint32.) + + https://bugzilla.gnome.org/show_bug.cgi?id=688109 + + gio/gsocket.c | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +commit fc3acd88baad368b70f6b263e74c945e15fdc8ef +Author: Dan Winship +AuthorDate: Sun Nov 11 11:29:16 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Nov 15 14:19:06 2012 -0500 + + win32: avoid printf format warnings on nonstandard formats + + glib/tests/test-printf tests some non-standard printf formats on + Windows, which gcc doesn't recognize, and so complains about. Disable + those warnings for that test. + + https://bugzilla.gnome.org/show_bug.cgi?id=688109 + + glib/tests/test-printf.c | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +commit d9e8feae7cb60e2e2cb62f0a948f025c09ca8553 +Author: Dan Winship +AuthorDate: Sun Nov 11 11:21:07 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Nov 15 14:19:06 2012 -0500 + + win32: make gio/tests/gdbus-proxy.c compile + + win32 doesn't have kill(), so this won't even compile on Windows + unless that is ifdeffed out. The test probably still doesn't *work*, + but... + + https://bugzilla.gnome.org/show_bug.cgi?id=688109 + + gio/tests/gdbus-proxy.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 75d2c1823c56f01db1b2e97bd9287fd70fdcd84d +Author: Dan Winship +AuthorDate: Sat Nov 10 11:13:24 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Nov 15 14:19:06 2012 -0500 + + gvariant-internal.h: fix the include hack + + gvariant-internal.h was defining GLIB_COMPILATION so that it could + include individual headers, but this broke tests/gvariant on windows + because setting GLIB_COMPILATION changes the definition of GLIB_VAR, + causing external variables to not be found. Fix this by having it + define __GLIB_H_INSIDE__ instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=688109 + + glib/gvariant-internal.h | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 468a166711ab78986b3404909c6d9c0cf3633bea +Author: Dan Winship +AuthorDate: Sat Nov 10 11:09:18 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Nov 15 14:19:06 2012 -0500 + + GLocalFile: canonicalize the initial directory separator + + GLocalFile was (in certain situations) translating a path like + "/foo/bar/baz" to "/foo\bar\baz" on win32. Fix it to make sure the + initial directory separator gets canonicalized too. + + Fixes gio/tests/g-icon on win32. + + https://bugzilla.gnome.org/show_bug.cgi?id=688109 + + gio/glocalfile.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit f80d8f1e4d583167234d79ace0a3ef7081826317 +Author: Dan Winship +AuthorDate: Sat Nov 10 11:06:57 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Nov 15 14:19:06 2012 -0500 + + win32: various fixes to test programs + + Fix a few win32-specific bugs in various tests, and #ifdef out code + that is UNIX- or Linux-specific that wouldn't be expected to pass on + Windows. + + https://bugzilla.gnome.org/show_bug.cgi?id=688109 + + glib/tests/fileutils.c | 2 +- + glib/tests/gdatetime.c | 5 ++++- + glib/tests/keyfile.c | 13 +++++++++++-- + glib/tests/mappedfile.c | 4 ++++ + glib/tests/uri.c | 25 +++++++++++++------------ + glib/tests/utils.c | 17 +++++++++++++++++ + 6 files changed, 50 insertions(+), 16 deletions(-) + +commit b8c13a01b6bd5601eb3519dd3b20daed4bbc2e72 +Author: Dan Winship +AuthorDate: Sat Nov 10 10:58:19 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Nov 15 14:19:06 2012 -0500 + + win32: misc warning fixes + + https://bugzilla.gnome.org/show_bug.cgi?id=688109 + + gio/gdbusaddress.c | 4 +++- + gio/gdbusauth.c | 1 + + gio/giomodule.c | 4 ++++ + gio/gregistrysettingsbackend.c | 25 +++++++++++++------------ + gio/gsocket.c | 6 +----- + gio/gwin32mount.c | 4 ++-- + gio/gwin32volumemonitor.c | 35 + ++++------------------------------- + gio/win32/gwin32directorymonitor.c | 23 +++++++++++------------ + glib/gbitlock.c | 3 ++- + glib/gdatetime.c | 4 ++-- + glib/giochannel.h | 6 ++++++ + glib/giowin32.c | 3 ++- + glib/gkeyfile.c | 2 ++ + glib/glib-init.c | 4 ++++ + glib/gmain.c | 1 + + glib/gmappedfile.c | 2 ++ + glib/gnulib/vasnprintf.c | 5 ++++- + glib/gspawn-win32.c | 2 ++ + glib/gthread-win32.c | 1 + + glib/gutils.c | 2 +- + glib/tests/1bit-mutex.c | 2 ++ + glib/tests/fileutils.c | 2 +- + glib/tests/gwakeuptest.c | 2 +- + glib/win_iconv.c | 14 +++++++------- + tests/qsort-test.c | 4 ++-- + 25 files changed, 81 insertions(+), 80 deletions(-) + +commit f248c86b0aac6c64bd2cb8e2a0e8814719a4bb0a +Author: Dan Winship +AuthorDate: Sun Nov 11 11:32:40 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Nov 15 14:19:05 2012 -0500 + + win32: move some code into #ifdef G_OS_UNIX + + Fix various bits of code/declarations that are only used by G_OS_UNIX + but were still visible to G_OS_WIN32. + + https://bugzilla.gnome.org/show_bug.cgi?id=688109 + + gio/gdbusmessage.c | 2 ++ + gio/gdbusprivate.c | 8 +++++++- + gio/glocaldirectorymonitor.c | 11 ++++++----- + gio/tests/Makefile.am | 2 +- + 4 files changed, 16 insertions(+), 7 deletions(-) + +commit 731b46990896665a8107535080bb075a6e18b6f7 +Author: Dan Winship +AuthorDate: Sat Nov 10 10:54:43 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Nov 15 14:19:05 2012 -0500 + + win32: define _WIN32_WINNT globally + + Rather than defining _WIN32_WINNT only in a handful of files, define + it in config.h, like we do with _GNU_SOURCE. + + (Also remove a "#define WIN32_LEAN_AND_MEAN" that isn't really all + that useful.) + + https://bugzilla.gnome.org/show_bug.cgi?id=688109 + + configure.ac | 2 ++ + gio/glocalfile.c | 1 - + gio/gnetworkingprivate.h | 1 - + gio/gregistrysettingsbackend.c | 3 --- + gio/gtestdbus.c | 1 - + gio/gwin32volumemonitor.c | 1 - + gio/win32/gwin32directorymonitor.c | 2 -- + gio/win32/gwinhttpvfs.h | 1 - + 8 files changed, 2 insertions(+), 10 deletions(-) + +commit 3ac6cfaeaadc82ce7d8b9dba7134d5ea7272c70c +Author: Dan Winship +AuthorDate: Sat Nov 10 10:51:18 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Nov 15 14:19:05 2012 -0500 + + win32: prototype _glib_get_dll_directory() and _glib_get_locale_dir() + + Rather than using "extern" declarations of these win32 functions + everywhere they're needed, just prototype them in glib-private.h. + (Which also fixes the fact that they weren't prototyped in the files + where they're defined.) + + https://bugzilla.gnome.org/show_bug.cgi?id=688109 + + gio/gdbus-tool.c | 10 ++++++++-- + gio/glib-compile-resources.c | 5 ++++- + gio/glib-compile-schemas.c | 5 ++++- + gio/gresource-tool.c | 5 ++++- + gio/gsettings-tool.c | 5 ++++- + glib/ggettext.c | 1 + + glib/glib-private.h | 5 +++++ + glib/gspawn-win32.c | 2 +- + 8 files changed, 31 insertions(+), 7 deletions(-) + +commit 08f4f92fedff4821b1cdbab1763f5e3df59ce458 +Author: Dan Winship +AuthorDate: Thu Nov 15 12:24:57 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Nov 15 14:19:05 2012 -0500 + + win32: add gwin32compat.h, for utf8-renaming compatibility defines + + To avoid -Wmissing-prototype warnings, we need to prototype both the + original and the _utf8 versions of all of the functions that have had + _utf8-renaming on Windows. But duplicating all the prototypes is ugly, + so rather than doing them "in-place", move them all to a new header + file just for that. + + https://bugzilla.gnome.org/show_bug.cgi?id=688109 + + docs/reference/glib/Makefile.am | 3 +- + glib/Makefile.am | 1 + + glib/gconvert.c | 1 + + glib/gconvert.h | 9 -- + glib/gdir.c | 2 +- + glib/gdir.h | 8 -- + glib/genviron.h | 8 -- + glib/gfileutils.h | 15 ---- + glib/giochannel.h | 4 - + glib/glib.h | 4 + + glib/gspawn.h | 10 --- + glib/gutils.h | 14 ---- + glib/gwin32.h | 7 -- + glib/gwin32compat.h | 178 + ++++++++++++++++++++++++++++++++++++++++ + gmodule/gmodule.h | 18 ++-- + 15 files changed, 198 insertions(+), 84 deletions(-) + +commit c2acbc018269a052eb7546950088a0860e3b1545 +Author: Wim Taymans +AuthorDate: Thu Nov 15 11:37:20 2012 +0100 +Commit: Dan Winship +CommitDate: Thu Nov 15 11:09:00 2012 -0500 + + gsocket: fix joining/leaving multicast groups + + Initialize the structure passed to setsockopt to 0 to avoid random + errors when joining or leaving a multicast group. + + https://bugzilla.gnome.org/show_bug.cgi?id=688378 + + gio/gsocket.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 49db979922283364238a5c208671591f713ecd78 +Author: Michael Natterer +AuthorDate: Thu Nov 15 15:23:07 2012 +0100 +Commit: Michael Natterer +CommitDate: Thu Nov 15 15:33:38 2012 +0100 + + Revert "gmain: Add private API to create Unix child watch that + uses waitid()" + + This reverts commit 93bf37ce1507380f74d4cb4cab6640fc7d2eb7d1. + + configure.ac | 2 +- + glib/glib-private.c | 3 +- + glib/glib-private.h | 3 - + glib/gmain.c | 178 + +++++++++++++--------------------------------------- + 4 files changed, 45 insertions(+), 141 deletions(-) + +commit 6dee874b68548981ae567b553be3c010766e4a25 +Author: Michael Natterer +AuthorDate: Thu Nov 15 15:22:52 2012 +0100 +Commit: Michael Natterer +CommitDate: Thu Nov 15 15:33:38 2012 +0100 + + Revert "gio: Add private API to create win32 streams from fds" + + This reverts commit 292de8cc5259eb66c40d9a74d85389650ef67747. + + gio/Makefile.am | 1 - + gio/giowin32-priv.h | 43 ----------------------------------------- + gio/gwin32inputstream.c | 50 + +++++++++++------------------------------------- + gio/gwin32outputstream.c | 50 + +++++++++++------------------------------------- + 4 files changed, 22 insertions(+), 122 deletions(-) + +commit 75de24ca667b0acd82ef736cac1808add81fa637 +Author: Michael Natterer +AuthorDate: Thu Nov 15 15:22:37 2012 +0100 +Commit: Michael Natterer +CommitDate: Thu Nov 15 15:33:38 2012 +0100 + + Revert "gspawn: support creating pipes with O_CLOEXEC" + + This reverts commit 2054ccad95cfdcf5eccd2ef6847c12039c9678e8. + + glib/gspawn.c | 37 ++++++++++++++++++++++++++----------- + glib/gspawn.h | 5 +---- + 2 files changed, 27 insertions(+), 15 deletions(-) + +commit 2aa97e2847246d95cae32c9c061162bfb4af838a +Author: Colin Walters +AuthorDate: Thu Nov 15 08:42:36 2012 -0500 +Commit: Colin Walters +CommitDate: Thu Nov 15 08:42:36 2012 -0500 + + gdbus: Fix some compiler warnings + + Code appears to have been copy/pasted from a bit which used _object, + but I think it's clearer to always use the "self" parameter anyways. + + gio/gdbusobjectmanagerclient.c | 4 ++-- + gio/gdbusobjectproxy.c | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit a335fd1de8fc2ab4b26c5fe6055014ea15043fb9 +Author: Antoine Jacoutot +AuthorDate: Wed Nov 14 12:57:42 2012 +0100 +Commit: Antoine Jacoutot +CommitDate: Thu Nov 15 08:13:30 2012 +0100 + + GFileMonitor: Add kqueue(3) support to GIO + + Written by Dmitry Matveev as part of GSoC 2011: + http://netbsd-soc.sourceforge.net/projects/kqueue4gio/ + + This brings native file monitoring support on systems supporting + kqueue(3) + (all BSDs) and remove the need to rely on the unmaintained gamin + software. + The backend adds GKqueueDirectoryMonitor and GKqueueFileMonitor. + + Some parts rewritten by myself (to prevent needing a configuration + file). + Helpful inputs from Colin Walters and Simon McVittie. + + https://bugzilla.gnome.org/show_bug.cgi?id=679793 + + configure.ac | 12 + + gio/Makefile.am | 6 + + gio/giomodule.c | 6 + + gio/kqueue/Makefile.am | 34 ++ + gio/kqueue/dep-list.c | 521 ++++++++++++++++++++++++++++ + gio/kqueue/dep-list.h | 69 ++++ + gio/kqueue/gkqueuedirectorymonitor.c | 205 +++++++++++ + gio/kqueue/gkqueuedirectorymonitor.h | 49 +++ + gio/kqueue/gkqueuefilemonitor.c | 209 ++++++++++++ + gio/kqueue/gkqueuefilemonitor.h | 51 +++ + gio/kqueue/kqueue-exclusions.c | 60 ++++ + gio/kqueue/kqueue-exclusions.h | 28 ++ + gio/kqueue/kqueue-helper.c | 644 + +++++++++++++++++++++++++++++++++++ + gio/kqueue/kqueue-helper.h | 37 ++ + gio/kqueue/kqueue-missing.c | 157 +++++++++ + gio/kqueue/kqueue-missing.h | 32 ++ + gio/kqueue/kqueue-sub.c | 79 +++++ + gio/kqueue/kqueue-sub.h | 50 +++ + gio/kqueue/kqueue-thread.c | 310 +++++++++++++++++ + gio/kqueue/kqueue-thread.h | 45 +++ + gio/kqueue/kqueue-utils.c | 242 +++++++++++++ + gio/kqueue/kqueue-utils.h | 57 ++++ + 22 files changed, 2903 insertions(+) + +commit 2054ccad95cfdcf5eccd2ef6847c12039c9678e8 +Author: Ryan Lortie +AuthorDate: Sat Nov 10 13:16:29 2012 -0500 +Commit: Colin Walters +CommitDate: Wed Nov 14 14:12:15 2012 -0500 + + gspawn: support creating pipes with O_CLOEXEC + + Add a new flag, G_SPAWN_CLOEXEC_PIPES, for creating the stdin/out/err + pipes with O_CLOEXEC (for the usual reasons). + + https://bugzilla.gnome.org/show_bug.cgi?id=672102 + + glib/gspawn.c | 37 +++++++++++-------------------------- + glib/gspawn.h | 5 ++++- + 2 files changed, 15 insertions(+), 27 deletions(-) + +commit 292de8cc5259eb66c40d9a74d85389650ef67747 +Author: Colin Walters +AuthorDate: Tue May 22 16:06:10 2012 -0400 +Commit: Colin Walters +CommitDate: Wed Nov 14 14:12:05 2012 -0500 + + gio: Add private API to create win32 streams from fds + + This will be used by GSubprocess. + + https://bugzilla.gnome.org/show_bug.cgi?id=672102 + + gio/Makefile.am | 1 + + gio/giowin32-priv.h | 43 +++++++++++++++++++++++++++++++++++++++++ + gio/gwin32inputstream.c | 50 + +++++++++++++++++++++++++++++++++++++----------- + gio/gwin32outputstream.c | 50 + +++++++++++++++++++++++++++++++++++++----------- + 4 files changed, 122 insertions(+), 22 deletions(-) + +commit 93bf37ce1507380f74d4cb4cab6640fc7d2eb7d1 +Author: Colin Walters +AuthorDate: Mon May 21 17:09:06 2012 -0400 +Commit: Colin Walters +CommitDate: Wed Nov 14 14:11:57 2012 -0500 + + gmain: Add private API to create Unix child watch that uses waitid() + + This avoids collecting the zombie child, which means that the PID + can't be reused. This prevents possible race conditions that might + occur were one to send e.g. SIGTERM to a child. + + This race condition has always existed due to the way we called + waitpid() for the app, but the window was widened when we moved the + waitpid() calls into a separate thread. + + If waitid() isn't available, we return NULL, and consumers of this + private API (namely, GSubprocess) will need to handle that. + + https://bugzilla.gnome.org/show_bug.cgi?id=672102 + + configure.ac | 2 +- + glib/glib-private.c | 3 +- + glib/glib-private.h | 3 + + glib/gmain.c | 178 + +++++++++++++++++++++++++++++++++++++++------------- + 4 files changed, 141 insertions(+), 45 deletions(-) + +commit e744a4aa7a5b6e7b0fb3bd9e553b152ce424992c +Author: Simon McVittie +AuthorDate: Tue Nov 13 14:25:21 2012 +0000 +Commit: Simon McVittie +CommitDate: Wed Nov 14 13:26:57 2012 +0000 + + Remove trailing spaces from expected GMarkup error messages + + Commit 138f4c1 broke the relevant part of 'make check' by changing the + error messages away from the ones we previously expected. This commit + updates the expected output to catch up. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=688255 + Reviewed-by: Matthias Clasen + + glib/tests/markups/fail-5.expected | 2 +- + glib/tests/markups/fail-6.expected | 2 +- + glib/tests/markups/fail-7.expected | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit b98a1c8df30f9e24588a48331dacf01e49760549 +Author: Colin Walters +AuthorDate: Thu Nov 8 09:12:25 2012 -0500 +Commit: Colin Walters +CommitDate: Tue Nov 13 11:32:57 2012 -0500 + + gmain: Handle case where source id overflows + + 0 is not a valid source id, but for long-lived programs that rapidly + create/destroy sources, it's possible for the source id to overflow. + We should handle this, because the documentation implies we will. + + https://bugzilla.gnome.org/show_bug.cgi?id=687098 + + glib/glib-private.c | 3 +- + glib/glib-private.h | 5 ++- + glib/gmain.c | 76 +++++++++++++++++++++++++++++++++++++++++--- + glib/tests/mainloop.c | 87 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 165 insertions(+), 6 deletions(-) + +commit 606aa26acf8382ac0abb008838a0bcde12246c63 +Author: Paul Menzel +AuthorDate: Sun Nov 11 14:48:15 2012 +0100 +Commit: David King +CommitDate: Tue Nov 13 13:54:40 2012 +0000 + + gio/*: Fix spelling of determining + + $ sed -i s,determing,determining,g gio/gdrive.c + $ sed -i s,determing,determining,g gio/gdbusprivate.c + + http://www.merriam-webster.com/dictionary/determining + + For some reason according to `git log --follow` the whole file was + created during some translation update. + + commit c45b8135046790e13b0d486f605dc62c9a783b16 + Author: Timo Jyrinki + Date: Mon Mar 12 11:02:04 2012 +0200 + + Finnish translation update from + http://l10n.laxstrom.name/wiki/Gnome_3.4 translation sprint + + gio/gdbusprivate.c | 2 +- + gio/gdrive.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 9fb3082070a47a19663c3abf0c059639f9893b10 +Author: Dan Winship +AuthorDate: Sun Nov 11 14:14:04 2012 -0500 +Commit: Dan Winship +CommitDate: Sun Nov 11 14:14:04 2012 -0500 + + Revert "Return correct value for g_socket_get_available_bytes() + on Windows and OSX" + + This neither compiles nor does what it's supposed to on Windows. + + This reverts commit 1e598600a16d885a3ca859fe951a5bdd198fd6e7. + + gio/gsocket.c | 15 ++++----------- + gio/tests/socket.c | 53 + ----------------------------------------------------- + 2 files changed, 4 insertions(+), 64 deletions(-) + +commit 4651ec772520c892bf586710ac8e8ed38c515698 +Author: Dan Winship +AuthorDate: Sat Nov 10 10:37:00 2012 -0500 +Commit: Dan Winship +CommitDate: Sun Nov 11 13:33:36 2012 -0500 + + .gitignore: ignore .def files (win32 build) + + .gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit 2bba1da30674686960571603961e8daed973e5d0 +Author: Sebastian Dröge +AuthorDate: Fri Nov 9 15:28:36 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Sun Nov 11 17:32:38 2012 +0100 + + Add caching for the receiver addresses for g_socket_receive_from() + + https://bugzilla.gnome.org/show_bug.cgi?id=668842 + + gio/gsocket.c | 85 + ++++++++++++++++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 76 insertions(+), 9 deletions(-) + +commit df1e0497928e96fbf6bd0a4d69b60fd19385d4be +Author: Мирослав Николић + +AuthorDate: Sun Nov 11 11:36:03 2012 +0100 +Commit: Мирослав Николић + +CommitDate: Sun Nov 11 11:36:03 2012 +0100 + + Updated Serbian translation + + po/sr.po | 400 + ++++++++++++++++++++++++++++++--------------------------- + po/sr@latin.po | 400 + ++++++++++++++++++++++++++++++--------------------------- + 2 files changed, 416 insertions(+), 384 deletions(-) + +commit 4a20aa31b1091462aa9ef842809d53cbd9b285bf +Author: Aurimas Černius +AuthorDate: Sat Nov 10 14:12:30 2012 +0200 +Commit: Aurimas Černius +CommitDate: Sat Nov 10 14:12:30 2012 +0200 + + Updated Lithuanian translation + + po/lt.po | 1460 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 730 insertions(+), 730 deletions(-) + +commit 1b3e65d5025d2d15a877edc4fb3caf105b6775ee +Author: Fran Diéguez +AuthorDate: Sat Nov 10 10:56:26 2012 +0100 +Commit: Fran Diéguez +CommitDate: Sat Nov 10 11:07:09 2012 +0100 + + Updated Galician translations + + po/gl.po | 381 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 191 insertions(+), 190 deletions(-) + +commit a8db7314fb194110eb4d9f7964a3eff5516c96c5 +Author: Matej Urbančič +AuthorDate: Sat Nov 10 08:58:41 2012 +0100 +Commit: Matej Urbančič +CommitDate: Sat Nov 10 08:58:41 2012 +0100 + + Updated Slovenian translation + + po/sl.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit de298366e51d58c99ea5f9046eecde886558fb1d +Author: Matej Urbančič +AuthorDate: Sat Nov 10 08:56:38 2012 +0100 +Commit: Matej Urbančič +CommitDate: Sat Nov 10 08:56:38 2012 +0100 + + Updated Slovenian translation + + po/sl.po | 412 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 211 insertions(+), 201 deletions(-) + +commit 8caf39b59b96396a12d516b553f79f5eade4b096 +Author: Matthias Clasen +AuthorDate: Fri Nov 9 22:14:39 2012 -0500 +Commit: Matthias Clasen +CommitDate: Fri Nov 9 22:14:39 2012 -0500 + + Add an option to make glib-compile-resources use G_GNUC_INTERNAL + + https://bugzilla.gnome.org/show_bug.cgi?id=687742 + + docs/reference/gio/glib-compile-resources.xml | 13 +++++++++++++ + gio/glib-compile-resources.c | 26 + ++++++++++++++++---------- + 2 files changed, 29 insertions(+), 10 deletions(-) + +commit 138f4c1e2f3fdea3168f91fc72cde9fb0b0e602b +Author: Matthias Clasen +AuthorDate: Fri Nov 9 22:12:57 2012 -0500 +Commit: Matthias Clasen +CommitDate: Fri Nov 9 22:12:57 2012 -0500 + + Remove trailing space from some translated strings + + https://bugzilla.gnome.org/show_bug.cgi?id=687700 + + gio/glib-compile-schemas.c | 2 +- + glib/gmarkup.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 7fd15ee4aee6ec21eb85f8836a5fd66f598a86f4 +Author: Matthias Clasen +AuthorDate: Fri Nov 9 22:10:10 2012 -0500 +Commit: Matthias Clasen +CommitDate: Fri Nov 9 22:10:10 2012 -0500 + + Add plural forms for some translations + + https://bugzilla.gnome.org/show_bug.cgi?id=687698 + + glib/gfileutils.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 1e598600a16d885a3ca859fe951a5bdd198fd6e7 +Author: Sebastian Dröge +AuthorDate: Wed Oct 24 14:25:01 2012 +0200 +Commit: Matthias Clasen +CommitDate: Fri Nov 9 21:57:50 2012 -0500 + + Return correct value for g_socket_get_available_bytes() on Windows + and OSX + + https://bugzilla.gnome.org/show_bug.cgi?id=686786 + + gio/gsocket.c | 15 +++++++++++---- + gio/tests/socket.c | 53 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 64 insertions(+), 4 deletions(-) + +commit b65dac802e4c1bad3b3dd681f35eff52129b6d9e +Author: John Ralls +AuthorDate: Fri Nov 9 09:22:19 2012 -0800 +Commit: John Ralls +CommitDate: Fri Nov 9 09:23:01 2012 -0800 + + Fix poll able streams for Darwin (and probably BSD) + + + Darwin's poll doesn't change revents if there are no available + events, though it returns 0. Initialize the fd.revents to 0 so that + the test passes. + + That reveals a test failure, though, because with socket streams + it takes time for an event to pass through the socket. Provide an + 80-usec delay to allow time for the propagation. + + gio/gsocket.c | 1 + + gio/gunixinputstream.c | 1 + + gio/gunixoutputstream.c | 1 + + gio/tests/converter-stream.c | 6 ++++++ + gio/tests/pollable.c | 3 +++ + 5 files changed, 12 insertions(+) + +commit 5588d47985073563749066ed18a981b1ff437f14 +Author: John Ralls +AuthorDate: Thu Nov 8 09:52:28 2012 -0800 +Commit: John Ralls +CommitDate: Fri Nov 9 09:23:01 2012 -0800 + + Fix compile error about missing prototype + + For g_nextstep_settings_backend_get_type() + + gio/gnextstepsettingsbackend.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit f1b34cab8af395087e13d1a733bca1959487158f +Author: Dan Winship +AuthorDate: Fri Nov 9 11:38:08 2012 -0500 +Commit: Dan Winship +CommitDate: Fri Nov 9 11:41:01 2012 -0500 + + gthreadedresolver: fix a bug in the GTask porting of lookup_records + + We were passing the wrong destroy notify when returning the list of + records, so it would crash if it got called (ie, if you didn't call + g_resolver_lookup_records_finish()). + + (Also fix s/targets/records/ throughout the records functions.) + + gio/gthreadedresolver.c | 23 ++++++++++++++--------- + 1 file changed, 14 insertions(+), 9 deletions(-) + +commit edeffe0c870d0716ab0f5a5b8d435ef585c71448 +Author: Timothy Arceri +AuthorDate: Fri Nov 9 23:48:38 2012 +1100 +Commit: Ryan Lortie +CommitDate: Fri Nov 9 08:40:43 2012 -0500 + + Use url encoding for trash fileinfo path as per freedesktop trash + specification + + https://bugzilla.gnome.org/show_bug.cgi?id=687540 + + gio/glocalfile.c | 29 +---------------------------- + 1 file changed, 1 insertion(+), 28 deletions(-) + +commit a07a5f82aafca64872691313e233295e591e7632 +Author: Martin Pitt +AuthorDate: Fri Nov 9 09:32:03 2012 +0100 +Commit: Martin Pitt +CommitDate: Fri Nov 9 09:32:03 2012 +0100 + + GByteArray: Add missing transfer annotations + + Make g_byte_array_new() and g_byte_array_new_take() introspectable + by adding + missing transfer annotations to return value. + + Covered by tests in PyGObject. + + glib/garray.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit e06268d72e49dd487038043674aa1ee2f419118c +Author: Martin Pitt +AuthorDate: Fri Nov 9 09:02:22 2012 +0100 +Commit: Martin Pitt +CommitDate: Fri Nov 9 09:09:39 2012 +0100 + + GBytes: Add missing annotations + + Annotate g_bytes_new*()'s data argument to be a guint8 array, as + introspection clients cannot deal with raw gconstpointers. This makes + GBytes' behaviour similar to GByteArray whose API already uses guint8. + + Add missing transfer annotation to g_bytes_get_data() to make it + introspectable. + + This is covered by test cases in PyGObject. + + glib/gbytes.c | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +commit 8dd70a261df853d86f4944481dc6a18d4c8a62af +Author: John Ralls +AuthorDate: Thu Nov 8 08:35:23 2012 -0800 +Commit: John Ralls +CommitDate: Thu Nov 8 08:37:54 2012 -0800 + + Bug 686185: GDateTime Transcoding fails on OSX + + Better fix than d5df0a10f. Thanks to Christian Persch for pointing + this + out. + + glib/tests/gdatetime.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a9eb1907a6451cdfe68f5924b138cfbeebc4dcf1 +Author: Emmanuel Pacaud +AuthorDate: Wed Nov 7 09:58:45 2012 +0100 +Commit: Emmanuel Pacaud +CommitDate: Thu Nov 8 08:19:43 2012 +0100 + + Check for PR_GET_NAME + + PR_GET_NAME may not be defined when using an old kernel. Deal with it. + + glib/tests/thread.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 753494a25e35bd1f2413bd741f73d60226fcfd14 +Author: Colin Walters +AuthorDate: Tue Nov 6 15:04:47 2012 -0500 +Commit: Colin Walters +CommitDate: Wed Nov 7 09:51:20 2012 -0500 + + tests/buffered-input-stream: Fix size of parameter passed + + buffer-size is guint, but the public API is gsize for some reason. + + Tested-By: gustavold@linux.vnet.ibm.com + + https://bugzilla.gnome.org/show_bug.cgi?id=687801 + + gio/tests/buffered-input-stream.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit d5df0a10f142db8216cb41e38ec23d5729956650 +Author: John Ralls +AuthorDate: Thu Oct 18 10:47:18 2012 -0700 +Commit: John Ralls +CommitDate: Tue Nov 6 16:50:09 2012 -0800 + + Skip test_non_utf8_printf() if EUC-JP is aliased to UTF-8 + + See https://bugzilla.gnome.org/show_bug.cgi?id=686185 + This skips the test on those systems, like Darwin, which provide the + ja_JP.eucjp locale but which glib doesn't know how to transcode and + aliases JIS to UTF-8. + + glib/tests/gdatetime.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit b26fb3ae5cc18fa51cd6169f1b3b5c4dd74dab29 +Author: Ryan Lortie +AuthorDate: Mon Nov 5 12:22:49 2012 -0500 +Commit: Ryan Lortie +CommitDate: Tue Nov 6 14:40:36 2012 -0500 + + Don't call varargs open() through non-varargs type + + open() is probably defined varargs. Casting a varargs function to an + equivalent non-varargs type and then calling it is undefined, but + gfileutils.c was doing exactly that. + + Add some non-varargs wrappers to avoid the problem. + + Problem reported by John Spencer. + + https://bugzilla.gnome.org/show_bug.cgi?id=687600 + + glib/gfileutils.c | 42 ++++++++++++++++++++++++++++++++---------- + 1 file changed, 32 insertions(+), 10 deletions(-) + +commit 77032ea390cfbb1165f57fc6a61b8e4d2055934a +Author: Ryan Lortie +AuthorDate: Tue Nov 6 07:41:13 2012 -0500 +Commit: Ryan Lortie +CommitDate: Tue Nov 6 07:41:13 2012 -0500 + + belated version bump + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d6a075b0d8dfe4e4a41f6624ad7032d2163d420c +Author: Ryan Lortie +AuthorDate: Mon Nov 5 11:07:16 2012 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 5 13:20:28 2012 -0500 + + gtype: disallow adding interfaces after the fact + + Add a check to prevent adding an interface to a class that has already + had its class_init done. + + This is an incompatible change but it is suspected that there are not + many users of this functionality. Two known exceptions are pygobject + (fixed in bug 686149) and our own testsuite (affected tests have been + temporarily disabled by this patch). + + Once we confirm that nobody else is using this functionality we can + remove a rather large amount of code for dealing with this case. + + https://bugzilla.gnome.org/show_bug.cgi?id=687659 + + gobject/gtype.c | 6 ++++++ + gobject/tests/threadtests.c | 20 ++++++++++++-------- + tests/gobject/Makefile.am | 3 --- + 3 files changed, 18 insertions(+), 11 deletions(-) + +commit 1af1b2b2bb10b5db27cd43af02f199ebc3f466d7 +Author: Martin Pitt +AuthorDate: Wed Oct 24 16:30:37 2012 +0200 +Commit: Martin Pitt +CommitDate: Mon Nov 5 14:41:31 2012 +0100 + + Box GPollFD to make it introspectable + + https://bugzilla.gnome.org/show_bug.cgi?id=686797 + + docs/reference/gobject/gobject-sections.txt | 2 ++ + gobject/gboxed.c | 10 ++++++++++ + gobject/glib-types.h | 11 +++++++++++ + gobject/gobject.symbols | 1 + + 4 files changed, 24 insertions(+) + +commit 81b27ffc1cbba85e322fd731e30dfdaad86cbd5e +Author: Ryan Lortie +AuthorDate: Mon Nov 5 08:24:30 2012 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 5 08:24:30 2012 -0500 + + Add a translator comment about 'KB' + + The GLib units policy used to be that 'KB' means 1024 bytes, + 'MB' means + 1024 KB, 'GB' means 1024 MB, etc. + + Those days are over, but we have a deprecated function that still + works + that way. It contains the string "KB", marked for translation, which + has been a source of confusion for translators on multiple occasions. + + https://bugzilla.gnome.org/show_bug.cgi?id=687516 + + glib/gutils.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 2b17e797a43944e38babcac1ba02296cfd81623d +Author: Chun-wei Fan +AuthorDate: Mon Nov 5 17:22:38 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 5 17:22:38 2012 +0800 + + gio/gthreadedresolver.c: Fix non-UNIX build + + Move the GError *error declaration up, as that variable is also + used for + non-Unix builds. + + gio/gthreadedresolver.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8a530463add643890e4a4ec57f80531f5ef39101 +Author: Sweta Kothari +AuthorDate: Mon Nov 5 11:33:04 2012 +0530 +Commit: Sweta Kothari +CommitDate: Mon Nov 5 11:33:39 2012 +0530 + + Updated gujarati file + + po/gu.po | 311 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 158 insertions(+), 153 deletions(-) + +commit c5b9a47facb1cbffafae0c401d6596e2618238d1 +Author: Chun-wei Fan +AuthorDate: Mon Nov 5 12:31:44 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 5 12:31:44 2012 +0800 + + Visual C++ 2010 projects: Prepare support for VS2012 + + Add the PlatformToolset tag to the project configs so that we can + use add a + simple script later to the autotools files to copy the projects + and change + the value (v100 -> v110) of that tag (and other simple changes) + in order + that we can quickly provide and maintain support for Visual Studio + 2012 + with minimal effort. + + Note that at the moment GLib does not yet support the API/SDK + requirements + for Windows 8 Modern UI (formerly known as Metro), but this paves + the very + initial step. + + build/win32/vs10/gio.vcxprojin | 4 + + build/win32/vs10/glib-compile-resources.vcxproj | 4 + + build/win32/vs10/glib-compile-schemas.vcxproj | 356 + +++++++++--------- + build/win32/vs10/glib-genmarshal.vcxproj | 340 + ++++++++--------- + build/win32/vs10/glib.vcxprojin | 8 + + build/win32/vs10/gmodule.vcxproj | 402 + +++++++++++---------- + build/win32/vs10/gobject.vcxprojin | 4 + + build/win32/vs10/gresource.vcxproj | 4 + + build/win32/vs10/gsettings.vcxproj | 356 + +++++++++--------- + .../win32/vs10/gspawn-win32-helper-console.vcxproj | 344 + +++++++++--------- + build/win32/vs10/gspawn-win32-helper.vcxproj | 344 + +++++++++--------- + build/win32/vs10/gthread.vcxproj | 376 + +++++++++---------- + build/win32/vs10/install.vcxproj | 300 +++++++-------- + build/win32/vs10/testglib.vcxproj | 340 + ++++++++--------- + 14 files changed, 1621 insertions(+), 1561 deletions(-) + +commit 8e9279861293384a99778bb55e75ae7e8fa598d8 +Author: Simon Feltman +AuthorDate: Sat Nov 3 18:59:25 2012 -0700 +Commit: Martin Pitt +CommitDate: Sun Nov 4 13:51:15 2012 +0100 + + Add array length annotation to GSignalQuery param_types field + + https://bugzilla.gnome.org/show_bug.cgi?id=687541 + + gobject/gsignal.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 05034c0ff1e008ec668197fb4bb01e64b6734849 +Author: Peter Mráz +AuthorDate: Sat Nov 3 15:53:48 2012 +0000 +Commit: Pavol Klačanský +CommitDate: Sat Nov 3 15:53:48 2012 +0000 + + Updated Slovak translation + + po/sk.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f508fbbbd7032a80532b34c74874a764553fb73d +Author: Peter Mráz +AuthorDate: Sat Nov 3 15:52:03 2012 +0000 +Commit: Pavol Klačanský +CommitDate: Sat Nov 3 15:52:03 2012 +0000 + + Updated Slovak translation + + po/sk.po | 6482 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3488 insertions(+), 2994 deletions(-) + +commit 13ae0f1f922defaf21c3a5dbe8d299cddc71170a +Author: Martin Pitt +AuthorDate: Sat Nov 3 13:52:29 2012 +0100 +Commit: Martin Pitt +CommitDate: Sat Nov 3 14:00:45 2012 +0100 + + Annotate g_filename_to_utf8() + + bytes_read and bytes_written are (out) arguments, and the return + value must be + a byte array instead of utf8, as otherwise the function would + only support + UTF-8 locales/file names. + + glib/gconvert.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 837db1a026a451f2785be18593bf3fa631acabd6 +Author: Simon McVittie +AuthorDate: Fri Nov 2 15:45:14 2012 +0000 +Commit: Simon McVittie +CommitDate: Fri Nov 2 16:27:19 2012 +0000 + + Fix more warning-addition fallout + + I'm normally a big fan of small atomic commits, but I also want to get + things done this afternoon... + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=687441 + Reviewed-by: Colin Walters + + tests/child-test.c | 4 ++-- + tests/iochannel-test.c | 2 +- + tests/mainloop-test.c | 18 +++++++++--------- + tests/module-test.c | 2 ++ + tests/onceinit.c | 6 ++++-- + tests/slice-concurrent.c | 17 +++++++++++------ + tests/thread-test.c | 6 +++--- + tests/threadpool-test.c | 2 +- + 8 files changed, 33 insertions(+), 24 deletions(-) + +commit 733acc23164e4845b6c990c0881290da568d3730 +Author: Simon McVittie +AuthorDate: Fri Nov 2 15:19:32 2012 +0000 +Commit: Simon McVittie +CommitDate: Fri Nov 2 16:14:11 2012 +0000 + + Fix more void prototypes in tests + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=687441 + Reviewed-by: Colin Walters + + tests/gobject/ifaceinherit.c | 4 ++-- + tests/gobject/performance.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit eb7dc2bcc61d28ad06e4e7fce781d1f467ce0592 +Author: Simon McVittie +AuthorDate: Fri Nov 2 15:19:20 2012 +0000 +Commit: Simon McVittie +CommitDate: Fri Nov 2 16:14:09 2012 +0000 + + Predeclare more things in tests + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=687441 + Reviewed-by: Colin Walters + + tests/gobject/accumulator.c | 12 ++++++------ + tests/gobject/defaultiface.c | 1 + + tests/gobject/deftype.c | 2 ++ + tests/gobject/dynamictype.c | 2 ++ + tests/gobject/ifaceinherit.c | 6 ++++++ + tests/gobject/performance.c | 8 ++++++++ + tests/gobject/references.c | 1 + + tests/gobject/singleton.c | 1 + + 8 files changed, 27 insertions(+), 6 deletions(-) + +commit 85976cf91deae6ac7cf1639a187a424ff7296968 +Author: Simon McVittie +AuthorDate: Fri Nov 2 14:54:19 2012 +0000 +Commit: Simon McVittie +CommitDate: Fri Nov 2 16:13:57 2012 +0000 + + Bring back a couple of private-but-extern symbols + + These both existed in 2.34.1, but are not exposed in headers, and were + meant to be private. Making them static (in commit 84475e43) was + technically an ABI break, and in particular it causes abicheck.sh + to fail. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=687441 + Reviewed-by: Colin Walters + + gio/gmenumodel.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 7b1f8c582a699305bdbeadebb5628f54112c7220 +Author: Dan Winship +AuthorDate: Tue Oct 30 15:10:40 2012 -0400 +Commit: Dan Winship +CommitDate: Fri Nov 2 10:19:06 2012 -0400 + + gtask: bump the max thread pool size up to 100 to avoid + stalls/deadlocks + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=686810 for now. + https://bugzilla.gnome.org/show_bug.cgi?id=687223 discusses a nicer + fix for later. + + gio/gtask.c | 2 +- + gio/tests/task.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 1afaea333b2f2775d4e5fc6f4de8f9f83f994fd7 +Author: Simon McVittie +AuthorDate: Sun Oct 21 23:38:31 2012 +0100 +Commit: Simon McVittie +CommitDate: Fri Nov 2 13:55:40 2012 +0000 + + Use the FreeBSD credentials-passing code on Debian GNU/kFreeBSD + + The __FreeBSD__ macro means we have both a FreeBSD kernel and FreeBSD + libc, which isn't the case on GNU/kFreeBSD (GNU libc and userland on + the FreeBSD kernel), so it predefines a different macro. The kernel + is what actually matters for credentials-passing, though. + + Signed-off-by: Simon McVittie + Tested-by: Steven Chamberlain + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=649302 + Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=581750 + Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=631968 + Reviewed-by: Dan Winship + + gio/gcredentials.c | 18 +++++++++--------- + gio/gunixcredentialsmessage.c | 12 ++++++------ + 2 files changed, 15 insertions(+), 15 deletions(-) + +commit ce0022933c255313e010b27f977f4ae02aad1e7e +Author: Colin Walters +AuthorDate: Mon Oct 29 15:44:16 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Nov 2 09:19:13 2012 -0400 + + Merge waitpid() from g_spawn_sync into gmain() + + This is preparatory work for a future commit which will add a + "catchall" waitpid API. If we don't synchronize here with the worker + thread, race conditions are possible. + + This also ensures we have an error message if someone adds a child + watch for a nonexistent pid, etc. Previously, we'd simply keep + calling waitpid() getting ECHILD, and ignoring it until the source was + removed. Now, we g_warning() and fire the source. + + Thirdly, this ensures that the waitpid() call in gmain handles EINTR, + like the g_spawn_sync() one did. + + https://bugzilla.gnome.org/show_bug.cgi?id=687061 + + glib/gmain.c | 20 ++++++++++++---- + glib/gspawn.c | 76 + +++++++++++++++++++++++++++++++---------------------------- + 2 files changed, 56 insertions(+), 40 deletions(-) + +commit 0bdf7fecaf1ffc7263d2bc48a87c99f4705138fc +Author: Tim-Philipp Müller +AuthorDate: Fri Nov 2 13:14:58 2012 +0000 +Commit: Tim-Philipp Müller +CommitDate: Fri Nov 2 13:14:58 2012 +0000 + + tests: fix compiler warning in gvariant test + + gvariant.c:3555:1: warning: function declaration isn’t a prototype + [-Wstrict-prototypes] + + glib/tests/gvariant.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 28b30caecb8d53c0d41e6a46ef9ba01d2f08e051 +Author: Colin Walters +AuthorDate: Thu Nov 1 19:39:20 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Nov 2 09:03:52 2012 -0400 + + configure: Enable set of standard -Werror=foo flags + + We're not going to depend on gnome-common (I assume) so this patch + nicks the systemd macro to test for compiler flags, and uses it to set + a similar set of -Werror=foo as the gnome-common one does. + + See https://bugzilla.gnome.org/show_bug.cgi?id=608953 + See + https://mail.gnome.org/archives/desktop-devel-list/2012-July/msg00100.html + + If we're going to be setting more strict compiler flags for GNOME, we + should really ensure GLib builds with them first, as it's kind of the + model citizen. + + In particular, you can see several times that downstreams such as + Debian have come in and fixed -Wformat-security bugs. We should never + let those get into tarballs, or even commits. + + https://bugzilla.gnome.org/show_bug.cgi?id=687385 + + configure.ac | 16 +-- + m4macros/attributes.m4 | 288 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 297 insertions(+), 7 deletions(-) + +commit 055aa2b55e192a9c44fb0af07d8c1b3d8ef20b99 +Author: Colin Walters +AuthorDate: Thu Nov 1 20:10:46 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Nov 2 09:03:52 2012 -0400 + + gdateparser: Delete unused debug print function + + https://bugzilla.gnome.org/show_bug.cgi?id=687385 + + tests/testgdateparser.c | 16 ---------------- + 1 file changed, 16 deletions(-) + +commit 94ef8dff0d5da861389f12dee592c42936c4dba9 +Author: Colin Walters +AuthorDate: Thu Nov 1 19:43:02 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Nov 2 09:03:52 2012 -0400 + + gdbusactiongroup: Add prototype for g_dbus_action_group_sync() + + Even private functions that are actually called across compilation + units should have prototypes. For g_dbus_action_group_sync(), create + one in gdbusactiongroup-private.h + + https://bugzilla.gnome.org/show_bug.cgi?id=687385 + + gio/Makefile.am | 1 + + gio/gactiongroupexporter.c | 2 +- + gio/gapplicationimpl-dbus.c | 8 +------- + gio/gdbusactiongroup-private.h | 37 +++++++++++++++++++++++++++++++++++++ + gio/gdbusactiongroup.c | 2 +- + 5 files changed, 41 insertions(+), 9 deletions(-) + +commit dc4922af219397b18ca4d9d0ba53f0a99b43f3d4 +Author: Colin Walters +AuthorDate: Thu Nov 1 19:40:07 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Nov 2 09:03:52 2012 -0400 + + test-pipe-unix: Add missing include + + Fixes the build with -Werror=missing-prototypes. + + https://bugzilla.gnome.org/show_bug.cgi?id=687385 + + gio/tests/test-pipe-unix.c | 1 + + 1 file changed, 1 insertion(+) + +commit 3686aa0e18cf68167b14ec630bec8ba90a20d720 +Author: Colin Walters +AuthorDate: Thu Nov 1 19:39:09 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Nov 2 09:03:52 2012 -0400 + + gettext: Add missing include + + Fixes the build with -Werror=missing-prototypes. + + https://bugzilla.gnome.org/show_bug.cgi?id=687385 + + glib/ggettext.c | 1 + + 1 file changed, 1 insertion(+) + +commit 4c2a6595889eff44fa5f610e6c69016702100e95 +Author: Colin Walters +AuthorDate: Thu Nov 1 19:38:44 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Nov 2 09:03:52 2012 -0400 + + gcharset: Add header file for private API + + This fixes the build with -Werror=missing-prototypes. + + https://bugzilla.gnome.org/show_bug.cgi?id=687385 + + glib/Makefile.am | 1 + + glib/gcharset.c | 2 +- + glib/gcharsetprivate.h | 33 +++++++++++++++++++++++++++++++++ + glib/gconvert.c | 2 +- + 4 files changed, 36 insertions(+), 2 deletions(-) + +commit 488cdb13f60273a944a6b9f0c22e233f43c7e00f +Author: Colin Walters +AuthorDate: Thu Nov 1 19:38:09 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Nov 2 09:03:51 2012 -0400 + + gslice: Prototype G_ENABLE_DEBUG function that's part of ABI + + Sadly, g_slice_debug_tree_statistics is conditionally part of the + public ABI. We might as well make it conditionally part of the API as + well, even though this will require people actually using it to + + https://bugzilla.gnome.org/show_bug.cgi?id=687385 + + glib/gslice.h | 4 ++++ + 1 file changed, 4 insertions(+) + +commit bd8387f25affe2f5780b57daf4fd3f01daf0c43d +Author: Colin Walters +AuthorDate: Thu Nov 1 19:37:57 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Nov 2 09:03:35 2012 -0400 + + g_check_setuid: Include glib-private.h + + Otherwise we fail to build with -Werror=missing-prototypes. + + https://bugzilla.gnome.org/show_bug.cgi?id=687385 + + glib/gutils.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 139892734ebdc012b7a0c4897d89d16b3706fd5f +Author: Colin Walters +AuthorDate: Thu Nov 1 19:37:38 2012 -0400 +Commit: Colin Walters +CommitDate: Thu Nov 1 20:12:02 2012 -0400 + + tests/1bitmutex: Hack to build with -Werror=missing-prototypes + + Admittedly, this could probably be better, but it builds. + + https://bugzilla.gnome.org/show_bug.cgi?id=687385 + + glib/tests/1bit-mutex.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 8e59d8602ca5921d78245f5d2b405b517a5e7cf9 +Author: Colin Walters +AuthorDate: Thu Nov 1 19:36:52 2012 -0400 +Commit: Colin Walters +CommitDate: Thu Nov 1 20:12:02 2012 -0400 + + Use (void) for no parameters, not () + + This ensures we build with -Werror=missing-parameter-type. + + https://bugzilla.gnome.org/show_bug.cgi?id=687385 + + gio/gresource.c | 2 +- + gobject/tests/threadtests.c | 2 +- + tests/assert-msg-test.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit 84475e4320347e637ac2fc84c9dc28b1668c8772 +Author: Colin Walters +AuthorDate: Thu Nov 1 19:36:15 2012 -0400 +Commit: Colin Walters +CommitDate: Thu Nov 1 20:12:02 2012 -0400 + + build: Prototype GType accessors for private classes + + Otherwise we fail to build with -Werror=missing-prototypes. + + https://bugzilla.gnome.org/show_bug.cgi?id=687385 + + gio/gmenumodel.c | 4 ++++ + gio/gresourcefile.c | 2 ++ + gio/tests/gdbus-peer-object-manager.c | 1 + + gio/tests/proxy-test.c | 5 +++++ + gobject/tests/param.c | 1 + + tests/refcount/closures.c | 1 + + tests/refcount/properties3.c | 1 + + tests/refcount/properties4.c | 1 + + 8 files changed, 16 insertions(+) + +commit 6d88a2f82294ffd6f75436e3f8e72b30fd591a03 +Author: Colin Walters +AuthorDate: Thu Nov 1 19:35:38 2012 -0400 +Commit: Colin Walters +CommitDate: Thu Nov 1 20:12:01 2012 -0400 + + build: Add missing "static" keyword where it should be used + + Otherwise we fail to build with -Werror=missing-prototypes. + + https://bugzilla.gnome.org/show_bug.cgi?id=687385 + + gio/gdbusactiongroup.c | 2 +- + gio/gtestdbus.c | 2 +- + gio/tests/gdbus-peer-object-manager.c | 2 +- + gio/tests/gdbus-peer.c | 2 +- + gio/tests/resources.c | 2 +- + tests/libmoduletestplugin_a.c | 6 ++++++ + tests/libmoduletestplugin_b.c | 8 ++++++++ + tests/testgdate.c | 3 ++- + tests/testgdateparser.c | 3 ++- + tests/unicode-collate.c | 4 ++-- + 10 files changed, 25 insertions(+), 9 deletions(-) + +commit f6da43f56c8d884c477594a787d2d025f67b0784 +Author: Colin Walters +AuthorDate: Thu Nov 1 19:36:41 2012 -0400 +Commit: Colin Walters +CommitDate: Thu Nov 1 20:12:01 2012 -0400 + + build: Ensure we #include header files for glib-genmarshal code + + Otherwise we fail with -Werror=missing-prototypes. + + https://bugzilla.gnome.org/show_bug.cgi?id=687385 + + gobject/tests/Makefile.am | 2 +- + tests/gobject/Makefile.am | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 67466b41afc6c5605b441c4955fba372e28975d3 +Author: Colin Walters +AuthorDate: Thu Nov 1 19:40:41 2012 -0400 +Commit: Colin Walters +CommitDate: Thu Nov 1 20:12:01 2012 -0400 + + build: Don't use C99 declarations + + Since GLib needs to compile with MSVC, we can't use them. This fixes + compilation when using -Werror=declaration-after-statement. + + https://bugzilla.gnome.org/show_bug.cgi?id=687385 + + gio/tests/gdbus-proxy.c | 4 ++-- + gio/tests/gdbus-test-codegen.c | 14 +++++++------- + glib/gthread-posix.c | 10 ++++++---- + glib/tests/gdatetime.c | 3 ++- + 4 files changed, 17 insertions(+), 14 deletions(-) + +commit 59a24ab5a3ffff7d2cd36a1b392b49cc4024c29d +Author: Robert Ancell +AuthorDate: Wed Oct 31 14:56:00 2012 +1300 +Commit: Robert Ancell +CommitDate: Thu Nov 1 14:47:25 2012 +1300 + + Use "Returns:" instead of the invalid "@returns" for annotating + return values. + + https://bugzilla.gnome.org/show_bug.cgi?id=673229 + + gio/gvdb/gvdb-reader.c | 27 ++++++---- + glib/deprecated/gcache.c | 6 ++- + glib/deprecated/gcompletion.c | 20 ++++--- + glib/deprecated/grel.c | 18 ++++--- + glib/deprecated/gthread-deprecated.c | 23 +++++--- + glib/garray.c | 101 + +++++++++++++++++++++++------------ + glib/gdataset.c | 19 ++++--- + glib/giochannel.c | 5 +- + glib/giounix.c | 6 ++- + glib/giowin32.c | 9 ++-- + glib/glist.c | 21 +++++--- + glib/gnode.c | 3 +- + glib/gpattern.c | 15 ++++-- + glib/grand.c | 6 ++- + glib/gsequence.c | 7 +-- + glib/gslist.c | 6 ++- + glib/gthread.c | 3 +- + glib/gtimer.c | 8 +-- + glib/gtree.c | 3 +- + glib/gvariant-parser.c | 3 +- + 20 files changed, 200 insertions(+), 109 deletions(-) + +commit 4447d5ce1117f261e7a2a935cd9a62340d436a74 +Author: Colin Walters +AuthorDate: Thu Oct 25 15:34:29 2012 -0400 +Commit: Colin Walters +CommitDate: Wed Oct 31 17:45:21 2012 -0400 + + tests/signals: Disable large enumeration value test that is failing + on PPC64 + + Basically due to a combination of va_args semantics around + signed/unsigned ints, this test case fails on ppc64. At the moment, + we have as yet to find any real-world consumer with such a large + enumeration value. + + Unfortunately, the possible fixes for this are extremely invasive; + we would have to define a new enum API. + + Given both of these facts, we believe it makes the most sense at the + current time to simply not test this. If we at a later time determine + there is such a real-world consumer, we can look at doing the + necessary fixes. + + https://bugzilla.gnome.org/show_bug.cgi?id=686662 + + gobject/tests/signals.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 531be87f24ecb8ad5d8753a79d8fdd894d0e094a +Author: Rico Tzschichholz +AuthorDate: Wed Oct 31 13:14:06 2012 +0100 +Commit: Rico Tzschichholz +CommitDate: Wed Oct 31 13:14:06 2012 +0100 + + po: Fix Makefile.in.in syntax + + Introduced by cff536c99ed22f83a09a1030c720f1555240390b + + po/Makefile.in.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a773a615b6fc11964ea81356aa2348e1bf116c9e +Author: Will Thompson +AuthorDate: Tue Oct 30 17:16:33 2012 +0000 +Commit: Will Thompson +CommitDate: Tue Oct 30 17:17:23 2012 +0000 + + GNetworkMonitor: add missing apostrophe to docstring + + gio/gnetworkmonitor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 529bf6bd89757eb7046e8a538349ca59a90e2136 +Author: Vincent Untz +AuthorDate: Tue Mar 27 16:52:24 2012 +0200 +Commit: Colin Walters +CommitDate: Tue Oct 30 09:27:20 2012 -0400 + + Add annotations for g_filename_from_uri() + + https://bugzilla.gnome.org/show_bug.cgi?id=672924 + + glib/gconvert.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 0d22609fe981aab877dc9f3bbfa3f97a7c4152f2 +Author: Aleksander Morgado +AuthorDate: Tue Oct 30 13:15:23 2012 +0100 +Commit: Aleksander Morgado +CommitDate: Tue Oct 30 13:15:23 2012 +0100 + + gmessages: fix minor typo in documentation + + glib/gmessages.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 15a21bd3cd1065a1c9e5378f0cefd99716235e9f +Author: Sweta Kothari +AuthorDate: Tue Oct 30 16:21:42 2012 +0530 +Commit: Sweta Kothari +CommitDate: Tue Oct 30 16:22:14 2012 +0530 + + Updated gujarati file + + po/gu.po | 1021 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 500 insertions(+), 521 deletions(-) + +commit 311e18abdded1f525725ea6e2c346fb402b2af02 +Author: Ryan Lortie +AuthorDate: Mon Oct 29 10:13:40 2012 +0100 +Commit: Ryan Lortie +CommitDate: Mon Oct 29 16:18:10 2012 +0100 + + gthread-posix: always use atomic pointer ops + + On platforms where dependent loads can be reordered (alpha) and + we have + exotic implementation of pthread_mutex_lock() it could be possible + that + our implementation of g_mutex_lock() is unsafe. + + Always use atomic operations to avoid this possibility. + + https://bugzilla.gnome.org/show_bug.cgi?id=686191 + + glib/gthread-posix.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit f20ae7fcfdaf9adeac3f73242adb798f1a80ddff +Author: Ryan Lortie +AuthorDate: Mon Oct 29 09:09:49 2012 +0100 +Commit: Ryan Lortie +CommitDate: Mon Oct 29 16:18:10 2012 +0100 + + g_dbus_connection_export_menu_model(): fix a crash + + Add some extra protection when 'preparing' a group that doesn't yet + contain any menus. This can happen if you subscribe to a group that + doesn't yet exist. + + It was possible to crash any application using + g_dbus_connection_export_menu_model() by requesting a non-existent + subscription group over the bus. + + In practice this only happened in races -- where the proxy sees + a group + that exists and queries it, but by the time it does, it's already + gone. + + https://bugzilla.gnome.org/show_bug.cgi?id=687089 + + gio/gmenuexporter.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +commit 00f4c12bf97432a50e49749895d2c8174e204907 +Author: Paul Eggert +AuthorDate: Mon Oct 29 10:19:20 2012 -0400 +Commit: Colin Walters +CommitDate: Mon Oct 29 10:19:20 2012 -0400 + + gmain: Document constraints on waitpid + + Applications that use glib should not invoke waitpid with a first + argument that is nonpositive, because when such a waitpid is run in + one thread and glib waits for a subprocess in another, there is a race + condition, and the former waitpid can reap a process that was intended + for the latter. Mention this in the documentation for + g_child_watch_source_new, and in the diagnostic generated by + g_spawn_sync when its waitpid fails with errno equal to ECHILD. + + Signed-off-by: Colin Walters + + http://bugzilla.gnome.org/show_bug.cgi?id=687075 + + glib/gmain.c | 8 ++++---- + glib/gspawn.c | 2 +- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit cff536c99ed22f83a09a1030c720f1555240390b +Author: Colin Walters +AuthorDate: Sun Oct 28 09:46:35 2012 -0400 +Commit: Colin Walters +CommitDate: Mon Oct 29 09:39:36 2012 -0400 + + mkinstalldirs: Delete from version control + + This is installed by automake. By maintaining it in git, we create + merge conflicts as people build with different versions of automake. + + Just use 'mkdir -p' instead in gettext. Should be portable enough. + + https://bugzilla.gnome.org/show_bug.cgi?id=686839 + + Makefile.am | 5 -- + mkinstalldirs | 162 + ------------------------------------------------------ + po/Makefile.in.in | 20 ++----- + 3 files changed, 4 insertions(+), 183 deletions(-) + +commit d04ac162c10f3a855dbbaea6efe06de9d85aea02 +Author: Colin Walters +AuthorDate: Sat Oct 27 12:28:14 2012 -0400 +Commit: Colin Walters +CommitDate: Sat Oct 27 12:29:02 2012 -0400 + + README.in: Note undefined behavior with new g_type_init() -> + ctor change + + https://bugzilla.gnome.org/show_bug.cgi?id=686822 + + README.in | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 8911cee350575f7c0b534d97fd10787181c0e542 +Author: Rico Tzschichholz +AuthorDate: Sat Oct 27 12:12:29 2012 +0200 +Commit: Rico Tzschichholz +CommitDate: Sat Oct 27 12:12:29 2012 +0200 + + gio/tests: Fix build with -Werror=format-security + + gio/tests/gdbus-peer-object-manager.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fa523734c7c438944fc3b6f09a40b79d855475ee +Author: Rico Tzschichholz +AuthorDate: Sat Oct 27 12:10:44 2012 +0200 +Commit: Rico Tzschichholz +CommitDate: Sat Oct 27 12:10:44 2012 +0200 + + gio/tests: Fix linker failure + + Fixes 8c320d0c34ad5b3a31ac4f9024dba358a46ac725 + + gio/tests/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit d68b4e1d02a06417bfe29494708a29a3d944cf41 +Author: Stef Walter +AuthorDate: Fri Oct 26 11:12:46 2012 +0200 +Commit: Stef Walter +CommitDate: Fri Oct 26 21:25:55 2012 +0200 + + gio: No need to specify SOURCES when name matches executable + + Removes some of the duplication from Makefile.am + + https://bugzilla.gnome.org/show_bug.cgi?id=686921 + + gio/tests/Makefile.am | 121 + -------------------------------------------------- + 1 file changed, 121 deletions(-) + +commit 8c320d0c34ad5b3a31ac4f9024dba358a46ac725 +Author: Stef Walter +AuthorDate: Fri Oct 26 10:42:17 2012 +0200 +Commit: Stef Walter +CommitDate: Fri Oct 26 21:25:55 2012 +0200 + + gio: Remove LDADD repetition from gio/tests Makefile + + Using a global LDADD for the basic libraries to link. + + https://bugzilla.gnome.org/show_bug.cgi?id=686921 + + gio/tests/Makefile.am | 122 + +++++++------------------------------------------- + 1 file changed, 16 insertions(+), 106 deletions(-) + +commit fb2d3aacb5998397586ce4523f987dff60a9ca85 +Author: Stef Walter +AuthorDate: Fri Oct 26 10:30:29 2012 +0200 +Commit: Stef Walter +CommitDate: Fri Oct 26 21:20:04 2012 +0200 + + gdbus: Allow GDBusObjectManagerClient to work on peer connections + + Allow GDBusObjectManagerClient to work on peer to peer DBus + connections. Don't require that a unique bus name is available + for the object manager, if the owned bus name is NULL. + + https://bugzilla.gnome.org/show_bug.cgi?id=686920 + + gio/gdbusobjectmanagerclient.c | 70 ++++--- + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 3 + + gio/tests/gdbus-peer-object-manager.c | 364 + ++++++++++++++++++++++++++++++++++ + 4 files changed, 406 insertions(+), 32 deletions(-) + +commit 7db2ac7b88a4d2211894153212e92ea9db5cacbb +Author: Matthew Barnes +AuthorDate: Fri Oct 26 13:20:29 2012 -0400 +Commit: Matthew Barnes +CommitDate: Fri Oct 26 13:20:29 2012 -0400 + + Fix typo in G_TEST_DBUS. + + gio/gtestdbus.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d681b581ff059fdf258b6f91b62cf1e474f2cc71 +Author: Cosimo Cecchi +AuthorDate: Mon Apr 30 22:39:57 2012 -0400 +Commit: Cosimo Cecchi +CommitDate: Fri Oct 26 10:48:09 2012 -0400 + + file-info: catch thumbnail files in large directory as well + + When building the file attribute table info for local files, use + thumbnail paths in $XDG_CACHE_DIR/thumbnails/large in addition to + $XDG_CACHE_DIR/thumbnails/normal. + + Failing to do this would cause an application that creates large + thumbnails by default to never find any value for + G_FILE_ATTRIBUTE_THUMBNAIL_PATH, with no + G_FILE_ATTRIBUTE_THUMBNAILING_FAILED set, which might cause the + application to either think thumbnailing is still in progress, or + blindly requeue thumbnail operations in a loop. + + Large thumbnails are generally preferred, so we now default to + the path + of a large thumbnail (in case both are present). + + https://bugzilla.gnome.org/show_bug.cgi?id=686895 + + gio/glocalfileinfo.c | 19 ++++++++++++++----- + 1 file changed, 14 insertions(+), 5 deletions(-) + +commit 36bf25371ce77d8cea4336f52e7db09e05f23ca5 +Author: Colin Walters +AuthorDate: Thu Oct 25 18:21:59 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Oct 26 09:28:01 2012 -0400 + + g_unix_signal_source_new: Allow SIGUSR1 and SIGUSR2 + + These are user defined, it makes sense to allow watching them. This + is needed to port gnome-session and gdm over. + + https://bugzilla.gnome.org/show_bug.cgi?id=686898 + + glib/glib-unix.c | 17 +++++++++++------ + 1 file changed, 11 insertions(+), 6 deletions(-) + +commit 1775c46e7a3c45da936bbff97fa241e196910964 +Author: Martin Pitt +AuthorDate: Thu Oct 25 14:55:30 2012 +0200 +Commit: Martin Pitt +CommitDate: Thu Oct 25 14:55:30 2012 +0200 + + GIOChannel: Add missing annotations + + The various read and write methods have several out arguments which + were not + previously marked as such. Also, as GIOChannel supports binary data + with a NULL + encoding, the buffers need to be uint8 arrays instead of utf8 strings. + + glib/giochannel.c | 29 +++++++++++++++-------------- + 1 file changed, 15 insertions(+), 14 deletions(-) + +commit a5c5730085cf7739215af1624ebdf403b5c11232 +Author: Martin Pitt +AuthorDate: Thu Oct 25 11:27:39 2012 +0200 +Commit: Martin Pitt +CommitDate: Thu Oct 25 11:27:39 2012 +0200 + + Revert "Box GPollFD to make it introspectable" + + This reverts commit 932f4250b88a50059330a9df8224feeab6b0ffd7. + + This got pushed accidentally and has not been accepted yet. It's + also not clear + whether we want this in the first place. + + https://bugzilla.gnome.org/show_bug.cgi?id=686797 + + docs/reference/gobject/gobject-sections.txt | 2 -- + gobject/gboxed.c | 10 ---------- + gobject/glib-types.h | 11 ----------- + gobject/gobject.symbols | 1 - + 4 files changed, 24 deletions(-) + +commit 932f4250b88a50059330a9df8224feeab6b0ffd7 +Author: Martin Pitt +AuthorDate: Wed Oct 24 16:30:37 2012 +0200 +Commit: Martin Pitt +CommitDate: Thu Oct 25 07:58:09 2012 +0200 + + Box GPollFD to make it introspectable + + https://bugzilla.gnome.org/show_bug.cgi?id=686797 + + docs/reference/gobject/gobject-sections.txt | 2 ++ + gobject/gboxed.c | 10 ++++++++++ + gobject/glib-types.h | 11 +++++++++++ + gobject/gobject.symbols | 1 + + 4 files changed, 24 insertions(+) + +commit c3f52eae0e283f82a51d84ef3252dd10e36a0657 +Author: Martin Pitt +AuthorDate: Thu Oct 25 07:51:40 2012 +0200 +Commit: Martin Pitt +CommitDate: Thu Oct 25 07:52:43 2012 +0200 + + GIOChannel: Add missing (allow-none) annotations + + g_io_channel_set_line_term() and g_io_channel_set_encoding() can + get NULL + arguments, mark them as such. + + glib/giochannel.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 4fb2d737ac69b60d9aef4f06884bb6a69752c607 +Author: Colin Walters +AuthorDate: Tue Oct 23 16:11:33 2012 +0200 +Commit: Ryan Lortie +CommitDate: Tue Oct 23 16:25:49 2012 +0200 + + gvariant: Make g_variant_new_from_bytes() public + + Now that GBytes has been made public, we should make + g_variant_new_from_bytes() public too. + + Add g_variant_get_data_as_bytes() to match. + + https://bugzilla.gnome.org/show_bug.cgi?id=677062 + + docs/reference/glib/glib-sections.txt | 2 ++ + glib/glib.symbols | 2 ++ + glib/gvariant-core.c | 31 + +++++++++++++++++++++++++++++-- + glib/gvariant-core.h | 4 ---- + glib/gvariant.h | 8 ++++++++ + glib/tests/gvariant.c | 32 + ++++++++++++++++++++++++++++++++ + 6 files changed, 73 insertions(+), 6 deletions(-) + +commit 7d17fd6f61781e73c4304016d09be091d5045145 +Author: Ryan Lortie +AuthorDate: Mon Oct 22 22:20:47 2012 +0200 +Commit: Ryan Lortie +CommitDate: Mon Oct 22 22:20:47 2012 +0200 + + Release GLib 2.35.1 + + NEWS | 61 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 62 insertions(+), 1 deletion(-) + +commit 05756f84187c6ceef2c24ad7535284c691ec4c8a +Author: Murray Cumming +AuthorDate: Sun Oct 21 13:08:01 2012 +0200 +Commit: Murray Cumming +CommitDate: Sun Oct 21 13:08:01 2012 +0200 + + Fix this cost -> the cost typos + + gio/gdbusintrospection.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit c2a2c4a00bd1b0ab8210e3e1dfc4acaeb56a3e5a +Author: Matej Urbančič +AuthorDate: Sat Oct 20 00:14:37 2012 +0200 +Commit: Matej Urbančič +CommitDate: Sat Oct 20 00:14:37 2012 +0200 + + Updated Slovenian translation + + po/sl.po | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 475edeb2edad68b4bef818deb7ee7db92598397f +Author: Antoine Jacoutot +AuthorDate: Fri Oct 19 14:34:18 2012 +0200 +Commit: Antoine Jacoutot +CommitDate: Fri Oct 19 14:34:18 2012 +0200 + + Allow slightly too big poll duration in /socket/timed_wait test + + Sometimes the poll duration in the /socket/timed_wait test is slightly + bigger than the requested 100000, causing failures like: + + GLib-GIO:ERROR:socket.c:620:test_timed_wait: + assertion failed (poll_duration < 110000): (110057 < 110000) + + Adjust the test to allow some jitter in the "too high" direction. + + https://bugzilla.gnome.org/show_bug.cgi?id=686458 + + gio/tests/socket.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d906f84a441ad70e42fd6d5eac8837a8a8639aaa +Author: Matthias Clasen +AuthorDate: Tue Oct 16 21:07:13 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Oct 16 21:21:25 2012 -0400 + + GBytes: deal with a corner-case + + When calling g_bytes_unref_to_data on a GBytes with NULL data + we could end up with double-free or use-after-free issues. + https://bugzilla.gnome.org/show_bug.cgi?id=686091 + + glib/gbytes.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a0a364382333083ddc6376edc4d3cfb8dce0ccff +Author: Matthias Clasen +AuthorDate: Tue Oct 16 21:16:50 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Oct 16 21:21:25 2012 -0400 + + Add a test for the previous fix + + Running tests/bytes with G_SLICE=always-malloc MALLOC_CHECK_=2 + was aborting before. + + glib/tests/bytes.c | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit 654bfcb7ce3b99d6b71ae86f1e0aee33056f70b1 +Author: Ryan Lortie +AuthorDate: Tue Oct 16 12:29:22 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 16 12:40:21 2012 -0400 + + GBusNameVanishedCallback: document NULL connection + + @connection can be NULL for this callback. Document this possibility + and describe the circumstances. + + https://bugzilla.gnome.org/show_bug.cgi?id=686231 + + gio/gdbusnamewatching.h | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 212ffcc574d929ca0715960b4f29a4aab909a251 +Author: Ryan Lortie +AuthorDate: Tue Oct 16 12:27:12 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 16 12:31:23 2012 -0400 + + GMenuExporter: allow NULL bus on _name_vanished + + GBusNameVanishedCallback is called with a NULL GDBusConnection in the + case that the connection has vanished. We were doing an assert to + verify that it was the same as we had exported the menu on and that + assert was failing. + + https://bugzilla.gnome.org/show_bug.cgi?id=685995 + + gio/gmenuexporter.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 2002479c02fa6e468fc3f67ddc663657a52ebde8 +Author: Ryan Lortie +AuthorDate: Tue Oct 16 09:40:45 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 16 09:40:45 2012 -0400 + + Add note about g_type_init() to README + + README.in | 5 +++++ + 1 file changed, 5 insertions(+) + +commit df02fa1e4cc61a2c7f3aafdf1a6534a831f1c0d6 +Author: Ryan Lortie +AuthorDate: Mon Oct 15 12:01:01 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 16 09:39:24 2012 -0400 + + Properly deprecate g_type_init() + + Now that all internal users of it are gone. + + https://bugzilla.gnome.org/show_bug.cgi?id=686161 + + gobject/gtype.c | 4 ++++ + gobject/gtype.h | 16 ++++++++++------ + 2 files changed, 14 insertions(+), 6 deletions(-) + +commit 1dc774a653e992e1153fbed16f90097fa8db467f +Author: Ryan Lortie +AuthorDate: Mon Oct 15 12:00:51 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 16 09:39:24 2012 -0400 + + Remove g_type_init() calls + + Very many testcases, some GLib tools (resource compiler, etc) and + GApplication were calling g_type_init(). + + Remove those uses, as they are no longer required. + + https://bugzilla.gnome.org/show_bug.cgi?id=686161 + + gio/gapplication.c | 4 ---- + gio/gdbus-tool.c | 2 -- + gio/gdbusaddress.c | 2 -- + gio/gio-querymodules.c | 2 -- + gio/glib-compile-resources.c | 2 -- + gio/gresource-tool.c | 2 -- + gio/gsettings-tool.c | 2 -- + gio/tests/actions.c | 1 - + gio/tests/appinfo.c | 1 - + gio/tests/async-close-output-stream.c | 2 -- + gio/tests/buffered-input-stream.c | 1 - + gio/tests/buffered-output-stream.c | 2 -- + gio/tests/cancellable.c | 1 - + gio/tests/contenttype.c | 2 -- + gio/tests/contexts.c | 1 - + gio/tests/converter-stream.c | 1 - + gio/tests/data-input-stream.c | 1 - + gio/tests/data-output-stream.c | 1 - + gio/tests/desktop-app-info.c | 1 - + gio/tests/echo-server.c | 2 -- + gio/tests/file.c | 2 -- + gio/tests/fileattributematcher.c | 2 -- + gio/tests/filter-cat.c | 2 -- + gio/tests/filter-streams.c | 1 - + gio/tests/g-file-info.c | 1 - + gio/tests/g-file.c | 1 - + gio/tests/g-icon.c | 1 - + gio/tests/gapplication-example-cmdline2.c | 2 -- + gio/tests/gapplication-example-dbushooks.c | 2 -- + gio/tests/gapplication.c | 2 -- + gio/tests/gdbus-addresses.c | 1 - + gio/tests/gdbus-auth.c | 1 - + gio/tests/gdbus-bz627724.c | 1 - + gio/tests/gdbus-close-pending.c | 1 - + gio/tests/gdbus-connection-flush-helper.c | 2 -- + gio/tests/gdbus-connection-flush.c | 1 - + gio/tests/gdbus-connection-loss.c | 1 - + gio/tests/gdbus-connection-slow.c | 1 - + gio/tests/gdbus-connection.c | 1 - + gio/tests/gdbus-daemon.c | 2 -- + gio/tests/gdbus-error.c | 1 - + gio/tests/gdbus-example-export.c | 2 -- + gio/tests/gdbus-example-objectmanager-client.c | 2 -- + gio/tests/gdbus-example-objectmanager-server.c | 2 -- + gio/tests/gdbus-example-own-name.c | 2 -- + gio/tests/gdbus-example-peer.c | 2 -- + gio/tests/gdbus-example-server.c | 2 -- + gio/tests/gdbus-example-subtree.c | 2 -- + gio/tests/gdbus-example-unix-fd-client.c | 2 -- + gio/tests/gdbus-example-watch-name.c | 2 -- + gio/tests/gdbus-example-watch-proxy.c | 2 -- + gio/tests/gdbus-exit-on-close.c | 1 - + gio/tests/gdbus-export.c | 1 - + gio/tests/gdbus-introspection.c | 1 - + gio/tests/gdbus-message.c | 1 - + gio/tests/gdbus-names.c | 1 - + gio/tests/gdbus-non-socket.c | 1 - + gio/tests/gdbus-peer.c | 1 - + gio/tests/gdbus-proxy-threads.c | 1 - + gio/tests/gdbus-proxy-well-known-name.c | 1 - + gio/tests/gdbus-proxy.c | 1 - + gio/tests/gdbus-serialization.c | 1 - + gio/tests/gdbus-test-codegen.c | 1 - + gio/tests/gdbus-threading.c | 1 - + gio/tests/gmenumodel.c | 1 - + gio/tests/gschema-compile.c | 1 - + gio/tests/gsettings.c | 1 - + gio/tests/httpd.c | 2 -- + gio/tests/inet-address.c | 1 - + gio/tests/io-stream.c | 1 - + gio/tests/live-g-file.c | 1 - + gio/tests/memory-input-stream.c | 1 - + gio/tests/memory-output-stream.c | 1 - + gio/tests/mimeapps.c | 1 - + gio/tests/network-address.c | 2 -- + gio/tests/network-monitor.c | 2 -- + gio/tests/permission.c | 1 - + gio/tests/pollable.c | 1 - + gio/tests/proxy-test.c | 1 - + gio/tests/proxy.c | 2 -- + gio/tests/readwrite.c | 1 - + gio/tests/resolver.c | 2 -- + gio/tests/resources.c | 1 - + gio/tests/send-data.c | 2 -- + gio/tests/simple-async-result.c | 1 - + gio/tests/sleepy-stream.c | 1 - + gio/tests/socket-client.c | 2 -- + gio/tests/socket-server.c | 2 -- + gio/tests/socket.c | 1 - + gio/tests/srvtarget.c | 1 - + gio/tests/task.c | 1 - + gio/tests/tls-certificate.c | 1 - + gio/tests/tls-interaction.c | 1 - + gio/tests/unix-fd.c | 2 -- + gio/tests/unix-streams.c | 1 - + gio/tests/vfs.c | 1 - + gio/tests/volumemonitor.c | 2 -- + gio/tests/win32-streams.c | 1 - + gobject/gobject-query.c | 2 -- + gobject/gvalue.c | 2 -- + gobject/testgobject.c | 1 - + gobject/tests/binding.c | 1 - + gobject/tests/boxed.c | 1 - + gobject/tests/dynamictests.c | 1 - + gobject/tests/enums.c | 1 - + gobject/tests/ifaceproperties.c | 2 -- + gobject/tests/param.c | 1 - + gobject/tests/properties.c | 1 - + gobject/tests/qdata.c | 2 +- + gobject/tests/reference.c | 2 -- + gobject/tests/signals.c | 2 -- + gobject/tests/threadtests.c | 1 - + gobject/tests/valuearray.c | 2 -- + tests/gio-ls.c | 2 -- + tests/gobject/accumulator.c | 1 - + tests/gobject/defaultiface.c | 1 - + tests/gobject/dynamictype.c | 1 - + tests/gobject/gvalue-test.c | 1 - + tests/gobject/ifacecheck.c | 2 -- + tests/gobject/ifaceinherit.c | 1 - + tests/gobject/ifaceinit.c | 1 - + tests/gobject/override.c | 1 - + tests/gobject/paramspec-test.c | 1 - + tests/gobject/performance-threaded.c | 2 -- + tests/gobject/performance.c | 2 -- + tests/gobject/references.c | 1 - + tests/gobject/singleton.c | 2 +- + tests/refcount/closures.c | 1 - + tests/refcount/objects.c | 1 - + tests/refcount/objects2.c | 1 - + tests/refcount/properties.c | 1 - + tests/refcount/properties2.c | 3 +-- + tests/refcount/properties3.c | 1 - + tests/refcount/properties4.c | 1 - + tests/refcount/signals.c | 1 - + tests/timeloop-closure.c | 2 -- + 136 files changed, 3 insertions(+), 189 deletions(-) + +commit 7c42ab23b55c43ab96d0ac2124b550bf1f49c1ec +Author: Ryan Lortie +AuthorDate: Mon Oct 15 11:53:25 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 16 09:39:24 2012 -0400 + + Convert g_type_init() to a ctor + + Move the guts of g_type_init() into a ctor and turn g_type_init() + itself + into a do-nothing function. + + g_type_init_with_debug_flags() now ignores its arguments, but it has + always been possible to achieve the same effect via environment + variables. + + https://bugzilla.gnome.org/show_bug.cgi?id=686161 + + docs/reference/gobject/tut_gtype.xml | 4 +- + gobject/gtype.c | 104 + ++++++++++++++++------------------- + gobject/gtype.h | 1 - + 3 files changed, 50 insertions(+), 59 deletions(-) + +commit 691c0b053e0d290db407b539ff63849423e60907 +Author: Matthias Clasen +AuthorDate: Mon Oct 15 19:48:44 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 15 19:48:44 2012 -0400 + + Add missing semicolons to gobject_probes.d + + Pointed out in + https://bugzilla.gnome.org/show_bug.cgi?id=686119 + + gobject/gobject_probes.d | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit f923fb330bbf73c3aff8fb2b942e15f8e2246a25 +Author: Marc-Antoine Perennou +AuthorDate: Sat Oct 6 14:56:36 2012 +0200 +Commit: Matthias Clasen +CommitDate: Mon Oct 15 19:37:04 2012 -0400 + + gdbus-testserver: port to pygi + + Signed-off-by: Marc-Antoine Perennou + + https://bugzilla.gnome.org/show_bug.cgi?id=685608 + + gio/tests/gdbus-testserver.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit e16f82854a64fd3d21656818f39a78ce6e8084af +Author: Matthias Clasen +AuthorDate: Mon Oct 15 19:34:36 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 15 19:34:36 2012 -0400 + + Add return-if-fail checks to g_application_hold/release + + This is our common practice for public API. + https://bugzilla.gnome.org/show_bug.cgi?id=685208 + + gio/gapplication.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 1a20d56a894040e35153591c2d86513d5dddb409 +Author: Ryan Lortie +AuthorDate: Mon Oct 15 19:28:28 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 15 19:28:28 2012 -0400 + + g_settings_bind: use canonical property name + + We were using the user-passed value of the @property argument for + several purposes in g_settings_bind(): error messages, binding + uniqueness (ie: one-binding-per-property-per-object) and most + importantly, connecting to the detailed notify:: signal. + + The user may pass a string like "property_name" when the property's + canonical name is "property-name". g_object_class_find_property() + will + find the property under these circumstances, but a connection to + "notify::property_name" will not notice notifies emitted for + "property-name". + + We can solve this by using the user's string to perform the lookup and + then using pspec->name for everything after that. + + https://bugzilla.gnome.org/show_bug.cgi?id=684882 + + gio/gsettings.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit dace477c92ea3a9111cef73159a6a1fcaaf0f497 +Author: Matthias Clasen +AuthorDate: Mon Oct 15 19:22:50 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 15 19:22:50 2012 -0400 + + Add Win32 versions of some new content type APIs + + This commit adds minimal versions of + g_content_type_get_symbolic_icon and + g_content_type_get_generic_icon_name. + https://bugzilla.gnome.org/show_bug.cgi?id=683642 + + gio/gcontenttype-win32.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 93bdc5b3d9989549c60739a8493f6142044daeb6 +Author: Ask H. Larsen +AuthorDate: Mon Oct 15 06:33:25 2012 +0200 +Commit: Kenneth Nielsen +CommitDate: Mon Oct 15 06:33:25 2012 +0200 + + Updated Danish translation + + po/da.po | 133 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 67 insertions(+), 66 deletions(-) + +commit a36028f386708bb10d7c3817b5da5201777dc16c +Author: Ryan Lortie +AuthorDate: Sat Oct 13 12:16:32 2012 -0400 +Commit: Ryan Lortie +CommitDate: Sat Oct 13 12:16:32 2012 -0400 + + gsignal: really fix closure invalidation + + Commit 66b0d95f0ba1939882368b47b01f93289c42ae07 missed this part + of the + patch. + + gobject/gsignal.c | 1 + + 1 file changed, 1 insertion(+) + +commit a1e6ecdfebb213c0b2b6c4c89ea6e5a7521fc6d1 +Author: Arnel A. Borja +AuthorDate: Fri Oct 12 09:58:05 2012 -0700 +Commit: John Ralls +CommitDate: Fri Oct 12 09:58:55 2012 -0700 + + gtimezone: Indentation adn comment fixes + + glib/gtimezone.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 86a8ec047e43e5767604bea5d0b31b65165a8c94 +Author: John Ralls +AuthorDate: Mon Sep 24 10:54:38 2012 -0700 +Commit: John Ralls +CommitDate: Fri Oct 12 09:43:57 2012 -0700 + + Bug 631382 - GTimeZone support for zoneinfo version 1 + + glib/gtimezone.c | 62 + ++++++++++++++++++++++++++++++++++++++------------------ + 1 file changed, 42 insertions(+), 20 deletions(-) + +commit 6005f1d016244c6c3ca13e36032acd77c04d2640 +Author: Kjartan Maraas +AuthorDate: Thu Oct 11 20:27:30 2012 +0200 +Commit: Kjartan Maraas +CommitDate: Thu Oct 11 20:27:30 2012 +0200 + + Updated Norwegian bokmål translation. + + po/nb.po | 223 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 114 insertions(+), 109 deletions(-) + +commit a342be71388d8b0248c74ef68dace3744d687cfa +Author: Will Thompson +AuthorDate: Tue Oct 9 09:30:06 2012 +0100 +Commit: Will Thompson +CommitDate: Thu Oct 11 16:12:47 2012 +0100 + + gtestdbus: correct documentation typos + + https://bugzilla.gnome.org/show_bug.cgi?id=685787 + + gio/gtestdbus.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit e162fab4c0257997c08e29072b36b9db3992778d +Author: Dan Winship +AuthorDate: Thu Aug 2 15:45:24 2012 -0400 +Commit: Dan Winship +CommitDate: Wed Oct 10 10:29:37 2012 -0400 + + gio/tests: port from GSimpleAsyncResult to GTask + + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + gio/tests/cancellable.c | 75 + ++++++++++++++++++++------------------ + gio/tests/gtlsconsoleinteraction.c | 41 +++++++++++---------- + gio/tests/proxy-test.c | 69 + +++++++++++++---------------------- + gio/tests/tls-interaction.c | 30 +++++++-------- + 4 files changed, 99 insertions(+), 116 deletions(-) + +commit d21309464cbbe3970a08a10d1a1a91ebf279dadb +Author: Dan Winship +AuthorDate: Thu Aug 2 15:48:22 2012 -0400 +Commit: Dan Winship +CommitDate: Wed Oct 10 10:29:37 2012 -0400 + + gio: port networking classes from GSimpleAsyncResult to GTask + + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + gio/gdummyproxyresolver.c | 40 ++----- + gio/gnetworkaddress.c | 61 +++++----- + gio/gnetworkmonitor.c | 25 ++--- + gio/gnetworkservice.c | 96 ++++++---------- + gio/gproxyaddressenumerator.c | 128 ++++++++------------- + gio/gresolver.c | 21 ++-- + gio/gsocketaddressenumerator.c | 31 ++--- + gio/gsocketclient.c | 139 +++++++++++------------ + gio/gsocketconnection.c | 67 ++++------- + gio/gsocketinputstream.c | 3 - + gio/gsocketlistener.c | 68 ++++------- + gio/gsocketoutputstream.c | 3 - + gio/gsocks4aproxy.c | 99 ++++++---------- + gio/gsocks5proxy.c | 169 ++++++++++++++-------------- + gio/gtcpconnection.c | 107 ++++++------------ + gio/gtlsdatabase.c | 249 + ++++++++++++++++++----------------------- + gio/gtlsinteraction.c | 29 +++-- + gio/gunixconnection.c | 90 +++++---------- + 18 files changed, 563 insertions(+), 862 deletions(-) + +commit 130d0fdac0645116adf3e731fd63e6b3f50d6d7b +Author: Dan Winship +AuthorDate: Thu Aug 2 15:51:37 2012 -0400 +Commit: Dan Winship +CommitDate: Wed Oct 10 10:29:36 2012 -0400 + + gio: port GAsyncInitable from GSimpleAsyncResult to GTask + + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + gio/gasyncinitable.c | 36 ++++++++++++++++++++++-------------- + 1 file changed, 22 insertions(+), 14 deletions(-) + +commit 55e7ca6e1b2c85af72ae5dd70be80abf07f3fa46 +Author: Dan Winship +AuthorDate: Mon Nov 21 09:19:56 2011 -0500 +Commit: Dan Winship +CommitDate: Wed Oct 10 10:29:36 2012 -0400 + + gio: deprecate gioscheduler, soft deprecate GSimpleAsyncResult + + Reimplement gioscheduler in terms of GTask, and deprecate the original + gioscheduler methods. Update docs to point people to GTask rather than + gioscheduler and GSimpleAsyncResult, but don't actually formally + deprecate GSimpleAsyncResult yet. + + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + docs/reference/gio/gio-docs.xml | 2 +- + gio/gasyncinitable.c | 40 +++++------ + gio/gasyncresult.c | 12 +++- + gio/gdbusinterfaceskeleton.c | 40 +++++------ + gio/gfile.c | 67 ++++++++----------- + gio/gfileenumerator.c | 2 +- + gio/gioscheduler.c | 143 + +++++++++++----------------------------- + gio/gioscheduler.h | 4 ++ + gio/gsimpleasyncresult.c | 12 ++-- + 9 files changed, 125 insertions(+), 197 deletions(-) + +commit b20eec329484d99cdceafab80aa68164709c7868 +Author: Dan Winship +AuthorDate: Tue Oct 11 14:57:35 2011 -0400 +Commit: Dan Winship +CommitDate: Wed Oct 10 10:29:36 2012 -0400 + + gio: port GThreadedResolver from GSimpleAsyncResult to GTask + + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + gio/gthreadedresolver.c | 573 + +++++++++++------------------------------------- + 1 file changed, 131 insertions(+), 442 deletions(-) + +commit 4aeefa70a10b89b53a3bd1ed305d451f3cc6d2ad +Author: Dan Winship +AuthorDate: Wed Oct 5 10:05:50 2011 -0400 +Commit: Dan Winship +CommitDate: Wed Oct 10 10:29:36 2012 -0400 + + GTask: new GAsyncResult implementation / threaded task manager + + GTask is a replacement for GSimpleAsyncResult and GIOScheduler, that + also allows for making cancellable wrappers around non-cancellable + functions (as in GThreadedResolver). + + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 53 + + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gio.symbols | 31 + + gio/giotypes.h | 1 + + gio/gtask.c | 1805 + +++++++++++++++++++++++++++++++++++ + gio/gtask.h | 160 ++++ + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 4 + + gio/tests/task.c | 1668 + ++++++++++++++++++++++++++++++++ + 12 files changed, 3728 insertions(+) + +commit 132c4cee4fa445b7de29711719090d61cd5903c3 +Author: Dan Winship +AuthorDate: Wed Oct 10 10:02:39 2012 -0400 +Commit: Dan Winship +CommitDate: Wed Oct 10 10:03:15 2012 -0400 + + ghash.c: fix docs + + A previous commit left an unclosed XML tag. Fix that. + + glib/ghash.c | 15 +++++---------- + 1 file changed, 5 insertions(+), 10 deletions(-) + +commit 66b0d95f0ba1939882368b47b01f93289c42ae07 +Author: Ryan Lortie +AuthorDate: Mon Oct 8 18:20:24 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 9 11:40:45 2012 -0400 + + [gsignal] Fix closure invalidation + + If the closure is invalidated we drop the ref on the signal handler + node, but if the signal is currently being dispatched, the ref + could be + held elsewhere. + + Flag that we no longer have an outstanding invalidation handler + so that + we don't try to unregister ourselves when the other ref drops. + + Add a testcase that catches this situation. + + gobject/tests/signals.c | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +commit fd29b2f356913e05d97cf372b3576bf7c32836e7 +Author: Aleksander Morgado +AuthorDate: Mon Oct 8 10:03:43 2012 +0200 +Commit: Aleksander Morgado +CommitDate: Tue Oct 9 07:22:41 2012 +0200 + + gdbus: minor documentation fix in + g_dbus_interface_skeleton_has_connection() + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=685697 + + gio/gdbusinterfaceskeleton.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 028d4a03f2baa7ca9243a2819f30ffb0d5e137d7 +Author: Ryan Lortie +AuthorDate: Mon Oct 8 11:40:00 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 8 11:40:00 2012 -0400 + + [gobject] set all properties before constructed() + + Move the constructed() call to happen after all of the properties are + set (not just the construct properties). + + This is an incompatible change but we are making it under the belief + that it should be safe. If this change impacts you in a negative way + please comment on the bug. + + https://bugzilla.gnome.org/show_bug.cgi?id=685733 + + gobject/gobject.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 8fd75705f4bf7e9c84683bff2569757cccddd8c3 +Author: Ryan Lortie +AuthorDate: Mon Oct 8 11:20:07 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 8 11:22:04 2012 -0400 + + fix g_signal_connect_object() documentation + + g_signal_connect_object() now works properly, so we can remove + the note + in the docs about it being broken. + + https://bugzilla.gnome.org/show_bug.cgi?id=118536 + + gobject/gobject.c | 22 ++++------------------ + 1 file changed, 4 insertions(+), 18 deletions(-) + +commit c15769d30411db7e8de766d7004c90d267ebcabc +Author: Ryan Lortie +AuthorDate: Mon Oct 8 11:18:00 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 8 11:21:58 2012 -0400 + + [gsignal] fix up a crasher in previous commit + + The previous commit introduced a new variable in the Handler + struct but + didn't initialise it. This was causing some tests to crash. + + https://bugzilla.gnome.org/show_bug.cgi?id=118536 + + gobject/gsignal.c | 1 + + 1 file changed, 1 insertion(+) + +commit d03d26feabc5861fe43d503f5e06d73cee9c6fe8 +Author: Matthias Clasen +AuthorDate: Wed Jun 23 01:49:24 2004 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 8 11:21:48 2012 -0400 + + [gsignal] disconnect invalidated closures + + Modify gsignal to automatically disconnect a GClosure that becomes + invalid (in the g_closure_invalidate() sense). + + Previously, when g_signal_connect_object() was used with a GObject as + the user_data and that object was destroyed, the handler would + no longer + be called but the signal handler was itself was not disconnected (ie: + the bookkeeping data was kept around). + + The main effect of this patch is that these signal handlers will now + be automatically disconnected (and fully freed). + + The documentation for g_signal_connect_object() has anticipated this + change for over 10 years and has advised the following workaround when + disconnecting signal handlers connected with + g_signal_connect_object(): + + if (g_signal_handler_is_connected (instance, id)) + g_signal_handler_disconnect (instance, id); + + If your code follows this practice then it will continue to work. + + If your code never disconnects the signal handler then it was wasting + memory before (and this commit fixes that). + + If your code unconditionally disconnects the signal handler then you + will start to see (harmless) g_critical() warnings about this and you + should fix them. + + https://bugzilla.gnome.org/show_bug.cgi?id=118536 + + gobject/gsignal.c | 66 + ++++++++++++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 58 insertions(+), 8 deletions(-) + +commit d9730f0e319472750f5b7b8b62743ded86e5eaeb +Author: Jasper St. Pierre +AuthorDate: Sun Oct 7 20:10:36 2012 -0300 +Commit: Jasper St. Pierre +CommitDate: Sun Oct 7 20:12:03 2012 -0300 + + ghash: Add documentation + + glib/ghash.c | 37 +++---------------------------------- + 1 file changed, 3 insertions(+), 34 deletions(-) + +commit f15b2b316662c0092f0b7cd567be29cdcacd0c71 +Author: Jasper St. Pierre +AuthorDate: Wed Sep 26 11:36:30 2012 -0300 +Commit: Jasper St. Pierre +CommitDate: Sun Oct 7 20:12:02 2012 -0300 + + glib.py: Remove old debugging code + + This was accidentally copy/pasted from gobject.py + + glib/glib.py | 4 ---- + 1 file changed, 4 deletions(-) + +commit 7e6fa556ec2c98db583baa29870530bf67d45c7c +Author: Dan Winship +AuthorDate: Fri Oct 5 09:32:24 2012 -0400 +Commit: Dan Winship +CommitDate: Sat Oct 6 10:40:53 2012 -0400 + + GFileMonitor: thread-safety fix for non-default-main-context monitors + + When queuing events to another thread, we need a mutex around + priv->pending_file_changes and priv->pending_file_change_source. + + https://bugzilla.gnome.org/show_bug.cgi?id=682950 + + gio/gfilemonitor.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit 05461e5709f81a98547c70c07a48af783e4fd54e +Author: Colin Walters +AuthorDate: Thu Sep 27 20:11:27 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Oct 5 17:00:13 2012 -0400 + + codegen: Install Python files in $(datadir)/glib-2.0, rather than + $(libdir) + + These files are actually architecture-indepdendent; using $(libdir) + for them means that /usr/bin/gdbus-codegen varies between + architectures, which is problematic for (mis)uses of multilib. + + See https://bugzilla.redhat.com/show_bug.cgi?id=718404 + + https://bugzilla.gnome.org/show_bug.cgi?id=685012 + + gio/gdbus-2.0/codegen/Makefile.am | 4 ++-- + gio/gdbus-2.0/codegen/gdbus-codegen.in | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit ce06987449660eb4ca0b3ad7ecc5801b4ae2164f +Author: Colin Walters +AuthorDate: Wed Sep 26 15:44:33 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Oct 5 16:50:48 2012 -0400 + + codegen: Explicitly close output + + This is just cleaner rather than relying on the GC, and maybe + if we're lucky it will actually solve a problem. + + https://bugzilla.gnome.org/show_bug.cgi?id=684909 + + gio/gdbus-2.0/codegen/codegen_main.py | 2 ++ + 1 file changed, 2 insertions(+) + +commit eb2f5c1e0f0ffef490334434469fe9fe33d68cf6 +Author: Dan Winship +AuthorDate: Wed Sep 5 09:44:24 2012 -0400 +Commit: Dan Winship +CommitDate: Wed Oct 3 16:36:38 2012 -0400 + + Add GLIB_VERSION_2_36 and related + + docs/reference/glib/glib-sections.txt | 2 ++ + glib/gversionmacros.h | 24 ++++++++++++++++++++++++ + 2 files changed, 26 insertions(+) + +commit a8a416181c7ceaf44501e84a7fb790b520606a5e +Author: David Zeuthen +AuthorDate: Wed Oct 3 11:20:51 2012 -0400 +Commit: David Zeuthen +CommitDate: Wed Oct 3 11:23:04 2012 -0400 + + gdbus-codegen: Update tests for new inheritance-semantics for Since + + Signed-off-by: David Zeuthen + + gio/tests/test-codegen.xml | 2 -- + 1 file changed, 2 deletions(-) + +commit fa6a6846303817feb9bbd3f6aa136852c10cd072 +Author: David Zeuthen +AuthorDate: Wed Oct 3 11:07:57 2012 -0400 +Commit: David Zeuthen +CommitDate: Wed Oct 3 11:13:12 2012 -0400 + + gdbus-codegen: make members of an interface inherit the "Since" + annotation + + This is the expected (and sane) behavior - without this bug-fix you'd + have to add "Since" to every member of a newly added D-Bus interface. + + Also show-case this in the codegen example. + + Signed-off-by: David Zeuthen + + .../gdbus-object-manager-example-sections.txt | 6 ++++++ + gio/gdbus-2.0/codegen/dbustypes.py | 18 + ++++++++++++------ + .../gdbus-example-objectmanager.xml | 13 +++++++++++++ + 3 files changed, 31 insertions(+), 6 deletions(-) + +commit 242dfd617bc1f6ac03363f9bcde7c1edf02fd38a +Author: Christian Persch +AuthorDate: Sun Jul 8 00:24:58 2012 +0200 +Commit: Christian Persch +CommitDate: Wed Oct 3 13:58:20 2012 +0200 + + unicode: Add new tests for unicode 6.2 + + glib/tests/unicode.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 9524c620bb9a05cb014eaf1d3d66fe47fd7e369e +Author: Christian Persch +AuthorDate: Sat Jul 7 23:56:18 2012 +0200 +Commit: Christian Persch +CommitDate: Wed Oct 3 13:58:19 2012 +0200 + + unicode: Update to unicode 6.2.0 beta + + glib/gscripttable.h | 8 +- + glib/gunibreak.h | 1002 +++---- + glib/gunichartables.h | 15 +- + glib/gunicomp.h | 62 +- + glib/gunidecomp.h | 7443 + +++++++++++++++++++++++++------------------------ + glib/guniprop.c | 13 +- + 6 files changed, 4375 insertions(+), 4168 deletions(-) + +commit 95acb7c0d1411477660fe4d073c7278c59adc019 +Author: Christian Persch +AuthorDate: Sat Jul 7 23:53:23 2012 +0200 +Commit: Christian Persch +CommitDate: Wed Oct 3 13:58:19 2012 +0200 + + unicode: Add new line breaking class from unicode 6.2 + + Regional Indicator (RI) is new in unicode 6.2. + + https://bugzilla.gnome.org/show_bug.cgi?id=684912 + + glib/gen-unicode-tables.pl | 1 + + glib/gunicode.h | 10 +++++----- + 2 files changed, 6 insertions(+), 5 deletions(-) + +commit b0ef1c1fbbbff44d78d4935d84f0a4f2b250dcba +Author: Christian Persch +AuthorDate: Sun Jul 8 00:21:59 2012 +0200 +Commit: Christian Persch +CommitDate: Wed Oct 3 13:58:19 2012 +0200 + + unicode: Use g_assert_cmp{int,uint,hex} in tests + + This gives more info when the test goes wrong. + + glib/tests/unicode.c | 57 + +++++++++++++++++++++++++++------------------------- + 1 file changed, 30 insertions(+), 27 deletions(-) + +commit 47bc95c0db1d67b1b9d5e06430bb6060d96d67cd +Author: Christian Persch +AuthorDate: Wed Oct 3 13:58:04 2012 +0200 +Commit: Christian Persch +CommitDate: Wed Oct 3 13:58:19 2012 +0200 + + build: Post branch version bump + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ec82f610655f09bda21e9da1ce629762f72570df +Author: Matthias Clasen +AuthorDate: Sun Sep 30 19:24:13 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 30 19:24:13 2012 -0400 + + Really fix the leak + + Pointed out by Josselin Mouette. + + gio/glib-compile-resources.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 7f325939bae0a82f4d0f926f73f1002dbd4a0a11 +Author: Matthias Clasen +AuthorDate: Sun Sep 30 14:07:37 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 30 14:07:37 2012 -0400 + + Fix memory leaks in glib-compile resources + + Based on a patch by Josselin Mouette, + https://bugzilla.gnome.org/show_bug.cgi?id=685069 + + gio/glib-compile-resources.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 7c045e34238b9c9280bc77529f952ae5b8b581f2 +Author: Matthias Clasen +AuthorDate: Sun Sep 30 13:37:39 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 30 13:40:48 2012 -0400 + + Correct to docs for g_strcmp0 + + Don't promise to return -1 or 1 - we fall back to strcmp which + does not guarantee this. + https://bugzilla.gnome.org/show_bug.cgi?id=685037 + + glib/gtestutils.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f3f3f4a4120f2b828715933797220d3c594af0d1 +Author: Žygimantas Beručka +AuthorDate: Sun Sep 30 13:01:14 2012 +0300 +Commit: Žygimantas Beručka +CommitDate: Sun Sep 30 13:01:14 2012 +0300 + + Updated Lithuanian translation + + po/lt.po | 1263 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 637 insertions(+), 626 deletions(-) + +commit 685259dfea99c16bdd97f596af6548f83cb5669a +Author: Benjamin Otte +AuthorDate: Thu Sep 27 15:31:46 2012 +0200 +Commit: Benjamin Otte +CommitDate: Thu Sep 27 15:31:46 2012 +0200 + + Fix gdb script for new quark variable names + + ... and don't spam stderr with exceptions if someone renames things + again. + + Last but not least, keep the old names as a fallback, so that + LD_PRELOAD + with an older libglib still works. + + glib/glib.py | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +commit 3d45854a580f35e191f89a567328b03009baf22a +Author: Chun-wei Fan +AuthorDate: Wed Sep 26 17:47:52 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Sep 26 17:47:52 2012 +0800 + + Update config.h.win32(.in) and glibconfig.h.win32(.in) + + -Make config.h.win32(.in) have entries that more resembles the + generated + config.h.in + -Move the ALIGNOF_* #define's from glibconfig.h.win32(.in) to + config.h.win32(.in), where they were supposed to be. + + config.h.win32.in | 29 +++++++++++++++++++++++++++++ + glib/glibconfig.h.win32.in | 4 ---- + 2 files changed, 29 insertions(+), 4 deletions(-) + +commit 03658b1d123c69abdbde324b6ce43528e9a9e9cf +Author: Chun-wei Fan +AuthorDate: Wed Sep 26 15:42:53 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Sep 26 15:42:53 2012 +0800 + + Visual C++ property sheet updates + + Make up for the missed GIO headers that need to be installed. + + build/win32/vs10/glib.props | 4 ++++ + build/win32/vs9/glib.vsprops | 2 ++ + 2 files changed, 6 insertions(+) + +commit d9b15f85a773fd93fa10b07ef1a08cf314ce4d09 +Author: Carles Ferrando +AuthorDate: Wed Sep 26 01:50:49 2012 +0200 +Commit: Gil Forcada +CommitDate: Wed Sep 26 01:50:49 2012 +0200 + + [l10n] Updated Catalan (Valencian) translation + + po/ca@valencia.po | 795 + +++++++++++++++++++++++++++--------------------------- + 1 file changed, 399 insertions(+), 396 deletions(-) + +commit 51d32b23a4f048f6a380938f081d1504fa8484c7 +Author: Luca Ferretti +AuthorDate: Tue Sep 25 08:34:44 2012 +0200 +Commit: Milo Casagrande +CommitDate: Tue Sep 25 08:34:44 2012 +0200 + + [l10n] Updated Italian translation. + + po/it.po | 1511 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 801 insertions(+), 710 deletions(-) + +commit 89fa960677ec918d8b731ebf8732ab930bfecc5e +Author: Petr Kovar +AuthorDate: Mon Sep 24 18:23:18 2012 +0200 +Commit: Petr Kovar +CommitDate: Mon Sep 24 18:23:18 2012 +0200 + + Update Czech translation + + po/cs.po | 1443 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 795 insertions(+), 648 deletions(-) + +commit 9fa86cf2173ed7e1c3cee7865167ef8870d4661b +Author: Matthias Clasen +AuthorDate: Sun Sep 23 22:39:20 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 23 22:39:20 2012 -0400 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b470097b8baedeb2d021adb1141007edc805e90b +Author: Matthias Clasen +AuthorDate: Sun Sep 23 22:33:21 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 23 22:34:05 2012 -0400 + + 2.34.0 + + INSTALL.in | 5 ++--- + README.in | 10 ++++++++++ + configure.ac | 4 ++-- + 3 files changed, 14 insertions(+), 5 deletions(-) + +commit 096b0883fc121ac51e6d95c63faacb78b22e5745 +Author: Matthias Clasen +AuthorDate: Sun Sep 23 21:20:06 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 23 21:20:06 2012 -0400 + + More updates + + NEWS | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit c44f8f5b9f8ce041b24b6e0851eeded933295c4c +Author: Matthias Clasen +AuthorDate: Sun Sep 23 20:14:27 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 23 20:14:27 2012 -0400 + + Document g_test_dbus_get_flags + + gio/gtestdbus.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 3ff9645a4d5129c18f46ee1fad5f493d976e3510 +Author: Matthias Clasen +AuthorDate: Sun Sep 23 19:55:40 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 23 19:55:40 2012 -0400 + + Typo fix + + docs/reference/gio/gio-sections.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 580b58c3c0be3422c39925912e2282a917c96c8b +Author: Matthias Clasen +AuthorDate: Sun Sep 23 11:23:29 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 23 11:23:29 2012 -0400 + + Update GConf migration guide + + Newer intltool makes this much easier. Yay + https://bugzilla.gnome.org/show_bug.cgi?id=674620 + + docs/reference/gio/migrating-gconf.xml | 14 ++++++-------- + 1 file changed, 6 insertions(+), 8 deletions(-) + +commit 6270b3f384e67e2bb0ea2d000e9a1054a64b4569 +Author: Matthias Clasen +AuthorDate: Sun Sep 23 11:16:26 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 23 11:16:26 2012 -0400 + + Fix g_ptr_array_ref_docs + + https://bugzilla.gnome.org/show_bug.cgi?id=676034 + + glib/garray.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 26ecc52073285b4ee66da392e12b9a626116da7b +Author: Matthias Clasen +AuthorDate: Sun Sep 23 11:13:57 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 23 11:13:57 2012 -0400 + + Clarify g_type_init docs + + Mention that there's no way to undo it. + https://bugzilla.gnome.org/show_bug.cgi?id=654239 + + gobject/gtype.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 1ea6c0d6d44b7ad8eacbc43d16da2e0f32c5aa61 +Author: Matthias Clasen +AuthorDate: Sun Sep 23 10:44:57 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 23 10:47:22 2012 -0400 + + Update to latest version + + We should really stop shipping this, but I don't want to make + such a change on the day before a stable release, so I'll just + update it to avoid noise in diffs. + + mkinstalldirs | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 91ff013e7fcd289645b82cf641606893e2d8c81b +Author: Anita Reitere +AuthorDate: Sun Sep 23 17:44:20 2012 +0300 +Commit: Rūdolfs Mazurs +CommitDate: Sun Sep 23 17:44:20 2012 +0300 + + Updated Latvian translation + + po/lv.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3632d0000d55f8309409b93fb65a03ce33d8b3b1 +Author: Mario Blättermann +AuthorDate: Sun Sep 23 14:43:07 2012 +0200 +Commit: Mario Blättermann +CommitDate: Sun Sep 23 14:43:07 2012 +0200 + + [l10n] Updated German translation + + po/de.po | 1435 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 756 insertions(+), 679 deletions(-) + +commit 344066e0c196a9396ea1e9c6db4797ce35c7e726 +Author: Matthias Clasen +AuthorDate: Sun Sep 23 02:18:56 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 23 02:18:56 2012 -0400 + + Fix gio docs + + gio/gappinfo.c | 2 +- + gio/gasyncresult.c | 14 +++++++------- + gio/gdesktopappinfo.c | 14 +++++++------- + gio/gfile.c | 2 +- + gio/gmenu.h | 2 +- + gio/gunixmounts.c | 5 +++-- + 6 files changed, 20 insertions(+), 19 deletions(-) + +commit a12c277acb836591c1df625c25a6107756facce2 +Author: Matthias Clasen +AuthorDate: Sun Sep 23 01:59:37 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 23 02:00:03 2012 -0400 + + Fix GRegex docs + + glib/gregex.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 6283f801b0eb1e189295a794f1a2945cb460f2a7 +Author: Matthias Clasen +AuthorDate: Sun Sep 23 01:58:44 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 23 02:00:03 2012 -0400 + + Fix up g_tree_foreach docs + + glib/gtree.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit d9f8381aa8f396fd27a5c8faaebb440982bc351c +Author: Matthias Clasen +AuthorDate: Sun Sep 23 01:46:34 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 23 01:59:57 2012 -0400 + + Fix up docs for GDuplicateFunc + + glib/gdataset.c | 1 + + glib/gdataset.h | 4 ++-- + 2 files changed, 3 insertions(+), 2 deletions(-) + +commit cc2b1839f59f9b0da3b5a4887fa10f1012968845 +Author: Matthias Clasen +AuthorDate: Sun Sep 23 01:18:53 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 23 01:18:53 2012 -0400 + + Updates + + NEWS | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +commit 1820aa55ab1d4a46cced484e57816b5e7e56920c +Author: Shankar Prasad +AuthorDate: Sun Sep 23 02:27:03 2012 +0530 +Commit: Shankar Prasad +CommitDate: Sun Sep 23 02:27:15 2012 +0530 + + Updated kn translation + + po/kn.po | 141 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 70 insertions(+), 71 deletions(-) + +commit 814679b61e5c3a2a1e7c1e458ae1ef4c3c012c10 +Author: Rūdolfs Mazurs +AuthorDate: Sat Sep 22 20:02:44 2012 +0300 +Commit: Rūdolfs Mazurs +CommitDate: Sat Sep 22 20:02:44 2012 +0300 + + Updated Latvian translation + + po/lv.po | 139 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 72 insertions(+), 67 deletions(-) + +commit 3e328a63b8516ae6e0b5dcd43f8dd645a6c37a28 +Author: Carles Ferrando +AuthorDate: Sat Sep 22 16:44:50 2012 +0200 +Commit: Gil Forcada +CommitDate: Sat Sep 22 16:45:48 2012 +0200 + + [l10n]Updated Catalan (Valencian) translation + + po/ca@valencia.po | 1211 + ++++++++++++++++++++++++++++++----------------------- + 1 file changed, 694 insertions(+), 517 deletions(-) + +commit 378be2a14106f75ad0a0291099dcdc512a322f45 +Author: Gil Forcada +AuthorDate: Sat Sep 22 16:44:39 2012 +0200 +Commit: Gil Forcada +CommitDate: Sat Sep 22 16:45:48 2012 +0200 + + [l10n] Updated Catalan translation + + po/ca.po | 1707 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 949 insertions(+), 758 deletions(-) + +commit 0d2383999da05444bf55faad56223de3e8f1b236 +Author: Yaron Shahrabani +AuthorDate: Sat Sep 22 15:24:19 2012 +0300 +Commit: Yaron Shahrabani +CommitDate: Sat Sep 22 15:24:19 2012 +0300 + + Updated Hebrew translation. + + po/he.po | 121 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 63 insertions(+), 58 deletions(-) + +commit 8a08fde54b70d96b31841382c857b44a6fb6bf9c +Author: Alexander Shopov +AuthorDate: Sat Sep 22 13:00:25 2012 +0300 +Commit: Alexander Shopov +CommitDate: Sat Sep 22 13:00:25 2012 +0300 + + Updated Bulgarian translation + + po/bg.po | 989 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 511 insertions(+), 478 deletions(-) + +commit 5b8b7419a8f79ab351c67f65523998e21cdff491 +Author: Shankar Prasad +AuthorDate: Sat Sep 22 00:21:21 2012 +0530 +Commit: Shankar Prasad +CommitDate: Sat Sep 22 00:21:35 2012 +0530 + + Updated kn translation + + po/kn.po | 1723 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 963 insertions(+), 760 deletions(-) + +commit 65e2a235af87c59cbfd13707086bc044ff167da1 +Author: Rafael Ferreira +AuthorDate: Fri Sep 21 15:41:12 2012 -0300 +Commit: Djavan Fagundes +CommitDate: Fri Sep 21 15:41:12 2012 -0300 + + Updated Brazilian Portuguese Translation + + po/pt_BR.po | 58 + ++++++++++++++++++++++++++++------------------------------ + 1 file changed, 28 insertions(+), 30 deletions(-) + +commit af3557a74c29c5a8b5d0e0d2a122a8212633f634 +Author: Krishnababu Krothapalli +AuthorDate: Thu Sep 20 16:14:21 2012 +0530 +Commit: Krishnababu Krothapalli +CommitDate: Thu Sep 20 16:15:01 2012 +0530 + + Updated Telugu Translations + + po/te.po | 734 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 374 insertions(+), 360 deletions(-) + +commit 3dd65859a7610b6adfd247c9c6828ed6c614e97f +Author: Chun-wei Fan +AuthorDate: Tue Sep 18 17:05:49 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Sep 19 10:32:05 2012 +0800 + + gio: Fix build on Windows + + The newly-introduced functions, g_content_type_get_symbolic_icon() and + g_content_type_get_generic_icon_name() don't seem to be for Windows, + at + least for now. So filter them out from gio.symbols on Windows. + + Also, glocalfileinfo.c calls g_content_type_get_symbolic_icon() in + get_icon(), so only build that code when on Unix, for the time being. + + https://bugzilla.gnome.org/show_bug.cgi?id=684278 + + gio/gio.symbols | 2 ++ + gio/glocalfileinfo.c | 2 ++ + 2 files changed, 4 insertions(+) + +commit 18143b7aef8b105a75ec6ad695f50895353dd0f6 +Author: Fran Diéguez +AuthorDate: Wed Sep 19 02:27:16 2012 +0200 +Commit: Fran Diéguez +CommitDate: Wed Sep 19 02:27:16 2012 +0200 + + Updated Galician translations + + po/gl.po | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 01d10600ed14f734d1b0ef8e42eb3f32dd880fee +Author: Bruce Cowan +AuthorDate: Tue Sep 18 18:35:04 2012 +0100 +Commit: Bruce Cowan +CommitDate: Tue Sep 18 18:35:04 2012 +0100 + + Updated British English translation + + po/en_GB.po | 73 + +++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 39 insertions(+), 34 deletions(-) + +commit 3d6c6ff6af46edc6c45ca25f8e6887f3ef14809a +Author: Daniel Mustieles +AuthorDate: Tue Sep 18 16:35:15 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Tue Sep 18 16:35:15 2012 +0200 + + Updated Spanish translation + + po/es.po | 171 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 88 insertions(+), 83 deletions(-) + +commit ce3dddb62200fdcc97cc0aa4ec47400e94d99d36 +Author: Ryan Lortie +AuthorDate: Tue Sep 18 10:14:35 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 18 10:14:35 2012 -0400 + + GApplication: document differences from libunique + + People implementing GApplication often waste a lot of time by + trying to + use it as if it were libunique. Add a note to the docs about the + difference. + + gio/gapplication.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit 2cffb96088918f1d955fa20399b1819322635511 +Author: Ryan Lortie +AuthorDate: Tue Sep 18 08:38:04 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 18 08:38:04 2012 -0400 + + bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f6463bf095f455426c2e384f8033ba7cbf25a033 +Author: Sandeep Sheshrao Shedmake +AuthorDate: Tue Sep 18 13:13:52 2012 +0530 +Commit: Sandeep Sheshrao Shedmake +CommitDate: Tue Sep 18 13:13:52 2012 +0530 + + Updated Marathi Translations + + po/mr.po | 75 + ++++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 40 insertions(+), 35 deletions(-) + +commit a336201bf4c5f8b65c4c10261c3b9ee1a9748dfc +Author: Rajesh Ranjan +AuthorDate: Tue Sep 18 13:11:18 2012 +0530 +Commit: Rajesh Ranjan +CommitDate: Tue Sep 18 13:11:18 2012 +0530 + + hindi update + + po/hi.po | 1575 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 894 insertions(+), 681 deletions(-) + +commit b004390600189e9b21db2e3ce536b692c224b1aa +Author: Rafael Ferreira +AuthorDate: Mon Sep 17 23:35:57 2012 -0300 +Commit: Djavan Fagundes +CommitDate: Mon Sep 17 23:35:57 2012 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 1466 + +++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 816 insertions(+), 650 deletions(-) + +commit b28911499102ec1ca3f6f7f0b31585271634dc5a +Author: Gabor Kelemen +AuthorDate: Tue Sep 18 01:21:04 2012 +0200 +Commit: Gabor Kelemen +CommitDate: Tue Sep 18 01:21:04 2012 +0200 + + Updated Hungarian translation + + po/hu.po | 1667 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 904 insertions(+), 763 deletions(-) + +commit a47761a36e0b23b11e4aa991948da17e4f6b17b0 +Author: Ryan Lortie +AuthorDate: Mon Sep 17 17:53:58 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 17 17:53:58 2012 -0400 + + GLib 2.33.14 + + NEWS | 57 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 58 insertions(+), 1 deletion(-) + +commit c4a20dd6c767b0f91ab1e0a87e3570dbb2ccd47f +Author: Yuri Myasoedov +AuthorDate: Mon Sep 17 20:29:36 2012 +0400 +Commit: Yuri Myasoedov +CommitDate: Mon Sep 17 20:29:36 2012 +0400 + + Updated Russian translation + + po/ru.po | 115 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 62 insertions(+), 53 deletions(-) + +commit db2210203883544d38fb93e80ebf4cccaa2c26a9 +Author: Dieter Verfaillie +AuthorDate: Thu Sep 13 12:13:36 2012 +0200 +Commit: Alexander Larsson +CommitDate: Mon Sep 17 15:29:59 2012 +0200 + + gresource tests: fix VPATH builds emitting errors during dependency + generation + + Adding the --sourcedir option fixes these: + /path/to/src/gio/tests/test2.gresource.xml: Error on line 5 char 1: + Failed to locate 'test1.txt' in current directory. + /path/to/src/gio/tests/test3.gresource.xml: Error on line 5 char 1: + Failed to locate 'test1.txt' in current directory. + /path/to/src/gio/tests/test4.gresource.xml: Error on line 5 char 1: + Failed to locate 'test1.txt' in current directory. + /path/to/src/gio/tests/test.gresource.xml: Error on line 5 char 1: + Failed to locate 'test1.txt' in current directory. + + gio/tests/Makefile.am | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 2edbee58f613abfb6ef2bb47529dca178924067d +Author: Aurimas Černius +AuthorDate: Sun Sep 16 23:11:25 2012 +0300 +Commit: Aurimas Černius +CommitDate: Sun Sep 16 23:11:25 2012 +0300 + + Updated Lithuanian translation + + po/lt.po | 211 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 108 insertions(+), 103 deletions(-) + +commit 1b4e2169ec581378029d357916fe77b4f7173a10 +Author: Chao-Hsiung Liao +AuthorDate: Sun Sep 16 12:20:45 2012 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Sun Sep 16 12:20:45 2012 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 74 + +++++++++++++++++++++++++++++++++---------------------------- + po/zh_TW.po | 74 + +++++++++++++++++++++++++++++++++---------------------------- + 2 files changed, 80 insertions(+), 68 deletions(-) + +commit 262d7cbc7a282850949c117b433e0a1a4a59b9ab +Author: Ask H. Larsen +AuthorDate: Sun Sep 16 02:09:14 2012 +0200 +Commit: Kenneth Nielsen +CommitDate: Sun Sep 16 02:09:14 2012 +0200 + + Updated Danish translation + + po/da.po | 1589 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 884 insertions(+), 705 deletions(-) + +commit b726ec71811c05b55a64e3677ab4dd3d18767fd4 +Author: Matej Urbančič +AuthorDate: Sat Sep 15 20:49:54 2012 +0200 +Commit: Matej Urbančič +CommitDate: Sat Sep 15 20:49:54 2012 +0200 + + Updated Slovenian translation + + po/sl.po | 123 + ++++++++++++++++++++++++--------------------------------------- + 1 file changed, 46 insertions(+), 77 deletions(-) + +commit d0b695e2370c440b61503bfc87e513b40195084e +Author: Duarte Loreto +AuthorDate: Sat Sep 15 19:29:25 2012 +0100 +Commit: Duarte Loreto +CommitDate: Sat Sep 15 19:29:25 2012 +0100 + + Updated Portuguese translation + + po/pt.po | 73 + ++++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 39 insertions(+), 34 deletions(-) + +commit ac7dcd810b65054e2796e8581eb7073a2b5d73dd +Author: Seong-ho Cho +AuthorDate: Sat Sep 15 15:06:39 2012 +0900 +Commit: Changwoo Ryu +CommitDate: Sat Sep 15 15:07:04 2012 +0900 + + Updated Korean translation + + po/ko.po | 1876 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 1011 insertions(+), 865 deletions(-) + +commit 87eceb200107ea5437c3a1e5a808c16887ba20e2 +Author: Andika Triwidada +AuthorDate: Sat Sep 15 11:51:46 2012 +0700 +Commit: Andika Triwidada +CommitDate: Sat Sep 15 11:51:46 2012 +0700 + + Updated Indonesian translation + + po/id.po | 80 + ++++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 43 insertions(+), 37 deletions(-) + +commit d2526f509dbbfdcd1e12b0526ab15f235a373436 +Author: Fran Diéguez +AuthorDate: Sat Sep 15 01:43:08 2012 +0200 +Commit: Fran Diéguez +CommitDate: Sat Sep 15 01:43:08 2012 +0200 + + Updated Galician translations + + po/gl.po | 114 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 58 insertions(+), 56 deletions(-) + +commit 80105f173a45690c2332fa64c35b06874ef177d7 +Author: Matthias Clasen +AuthorDate: Fri Sep 14 19:40:24 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 14 19:40:24 2012 -0400 + + Fix the doc build + + docs/reference/glib/Makefile.am | 1 + + docs/reference/glib/programming.xml | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +commit e21847d9bbdabe8e494360a3181ca58c25bf9261 +Author: Tom Tryfonidis +AuthorDate: Fri Sep 14 19:50:21 2012 +0300 +Commit: Tom Tryfonidis +CommitDate: Fri Sep 14 19:50:21 2012 +0300 + + Updated Greek translation + + po/el.po | 107 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 56 insertions(+), 51 deletions(-) + +commit 552d6b4db29ca2b0e3decdd02a7fbe7dd6c64e5e +Author: Ihar Hrachyshka +AuthorDate: Fri Sep 14 13:26:34 2012 +0300 +Commit: Ihar Hrachyshka +CommitDate: Fri Sep 14 13:26:34 2012 +0300 + + Updated Belarusian translation. + + po/be.po | 77 + +++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 42 insertions(+), 35 deletions(-) + +commit 2e01c0da3ce20eaedd661cdb730a2bd3e6cc3fbe +Author: Alexandre Franke +AuthorDate: Fri Sep 14 09:44:48 2012 +0200 +Commit: Alexandre Franke +CommitDate: Fri Sep 14 09:44:48 2012 +0200 + + Update French translation + + po/fr.po | 75 + +++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 41 insertions(+), 34 deletions(-) + +commit 7c6ce77dd3bc0ffa4ee7a0d532ba4bffcc812ad2 +Author: Мирослав Николић + +AuthorDate: Fri Sep 14 09:23:53 2012 +0200 +Commit: Мирослав Николић + +CommitDate: Fri Sep 14 09:23:53 2012 +0200 + + Updated Serbian translation + + po/sr.po | 75 + +++++++++++++++++++++++++++++++--------------------------- + po/sr@latin.po | 75 + +++++++++++++++++++++++++++++++--------------------------- + 2 files changed, 80 insertions(+), 70 deletions(-) + +commit 25e304724125ff4b2fcc29c9a0ee40688620b3f9 +Author: Nilamdyuti Goswami +AuthorDate: Fri Sep 14 11:53:11 2012 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Fri Sep 14 11:53:39 2012 +0530 + + Assamese translation updated + + po/as.po | 75 + ++++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 40 insertions(+), 35 deletions(-) + +commit d47e83676a9c2fb63fd66ca5998902b98469b91f +Author: A S Alam +AuthorDate: Fri Sep 14 07:30:04 2012 +0530 +Commit: A S Alam +CommitDate: Fri Sep 14 07:30:04 2012 +0530 + + update Punjabi Translation + + po/pa.po | 774 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 373 insertions(+), 401 deletions(-) + +commit 1a8f413555304d137f1fbb602fe1b912954c0c46 +Author: Piotr Drąg +AuthorDate: Fri Sep 14 00:53:20 2012 +0200 +Commit: Piotr Drąg +CommitDate: Fri Sep 14 00:53:20 2012 +0200 + + Updated Polish translation + + po/pl.po | 105 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 55 insertions(+), 50 deletions(-) + +commit d6cbb29f598d677d5fc1c974cba6d9f646cff491 +Author: Colin Walters +AuthorDate: Wed Aug 22 14:26:11 2012 -0400 +Commit: Colin Walters +CommitDate: Thu Sep 13 18:34:29 2012 -0400 + + CVE-2012-3524: Hardening for being run in a setuid environment + + Some programs attempt to use libglib (or even libgio) when setuid. + For a long time, GTK+ simply aborted if launched in this + configuration, but we never had a real policy for GLib. + + I'm not sure whether we should advertise such support. However, given + that there are real-world programs that do this currently, we can make + them safer with not too much effort. + + Better to fix a problem caused by an interaction between two + components in *both* places if possible. + + This patch adds a private function g_check_setuid() which is used to + first ensure we don't run an external dbus-launch binary if + DBUS_SESSION_BUS_ADDRESS isn't set. + + Second, we also ensure the local VFS is used in this case. The + gdaemonvfs extension point will end up talking to the session bus + which is typically undesirable in a setuid context. + + Implementing g_check_setuid() is interesting - whether or not we're + running in a privilege-escalated path is operating system specific. + Note that GTK+'s code to check euid versus uid worked historically on + Unix, more modern systems have filesystem capabilities and SELinux + domain transitions, neither of which are captured by the uid + comparison. + + On Linux/glibc, the way this works is that the kernel sets an + AT_SECURE flag in the ELF auxiliary vector, and glibc looks for it on + startup. If found, then glibc sets a public-but-undocumented + __libc_enable_secure variable which we can use. Unfortunately, while + it *previously* worked to check this variable, a combination of newer + binutils and RPM break it: + http://www.openwall.com/lists/owl-dev/2012/08/14/1 + + So for now on Linux/glibc, we fall back to the historical Unix version + until we get glibc fixed. + + On some BSD variants, there is a issetugid() function. On other Unix + variants, we fall back to what GTK+ has been doing. + + Reported-By: Sebastian Krahmer + Signed-off-by: Colin Walters + + configure.ac | 15 ++++++++++++-- + gio/gdbusaddress.c | 9 +++++++++ + gio/gvfs.c | 3 +++ + glib/genviron.c | 1 + + glib/glib-private.c | 4 +++- + glib/glib-private.h | 4 ++++ + glib/gutils.c | 57 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 7 files changed, 90 insertions(+), 3 deletions(-) + +commit cc3238a9c9f11740cf78f2e7914c93eb8dc7c0e1 +Author: William Jon McCann +AuthorDate: Mon Sep 10 15:16:58 2012 -0400 +Commit: William Jon McCann +CommitDate: Thu Sep 13 12:50:02 2012 -0400 + + Add api to get the generic icon name for a mime type + + https://bugzilla.gnome.org/show_bug.cgi?id=683744 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gcontenttype.c | 71 + +++++++++++++++++++++++++++---------- + gio/gcontenttype.h | 3 ++ + gio/gio.symbols | 1 + + 4 files changed, 57 insertions(+), 19 deletions(-) + +commit 8d362a14e423fa7293cc6abc58178db98c5427c1 +Author: Mario Blättermann +AuthorDate: Thu Sep 13 11:05:59 2012 +0200 +Commit: Christian Kirbach +CommitDate: Thu Sep 13 11:05:59 2012 +0200 + + Updated German translation + + po/de.po | 2484 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 1271 insertions(+), 1213 deletions(-) + +commit c99acf51d0405500592c36b739faa6bfcdb8181a +Author: Alexander Larsson +AuthorDate: Thu Sep 13 10:13:04 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Sep 13 10:20:27 2012 +0200 + + Fix regression in g_shell_parse_argv() + + The commit in 6e4acf44b3a943906432a2bf55223ac107d8e0c2 broke + the fallthrough case for '\\' when it changed the '#' case. + + This caused issues like this: + https://bugzilla.gnome.org/show_bug.cgi?id=683821 + + https://bugzilla.gnome.org/show_bug.cgi?id=562907 + + glib/gshell.c | 8 ++++---- + glib/tests/shell.c | 3 ++- + 2 files changed, 6 insertions(+), 5 deletions(-) + +commit d6b9df69492deb7f35e5454668dd59ddd0999e2d +Author: Sandeep Sheshrao Shedmake +AuthorDate: Wed Sep 12 15:49:27 2012 +0530 +Commit: Sandeep Sheshrao Shedmake +CommitDate: Wed Sep 12 15:49:27 2012 +0530 + + Updated Marathi Translations + + po/mr.po | 710 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 339 insertions(+), 371 deletions(-) + +commit 47a3b76ac5d35abd9af49b1bcc12b2bf4d239ef7 +Author: Matthias Clasen +AuthorDate: Tue Sep 11 23:14:39 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 11 23:15:03 2012 -0400 + + Move GIO-specific information to the GIO docs + + docs/reference/gio/overview.xml | 105 + +++++++++++++++++++++++++++++++++--- + docs/reference/glib/programming.xml | 58 +------------------- + 2 files changed, 101 insertions(+), 62 deletions(-) + +commit fc7dc331130a6c0c31fd29cc02fa508033cc9c74 +Author: Matthias Clasen +AuthorDate: Tue Sep 11 22:41:18 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 11 22:41:18 2012 -0400 + + Add a section about writing GLib applications + + For now, this includes some information about threads and security. + + docs/reference/glib/glib-docs.xml | 11 +--- + docs/reference/glib/programming.xml | 121 + ++++++++++++++++++++++++++++++++++++ + 2 files changed, 124 insertions(+), 8 deletions(-) + +commit 6a50dc511ba994b49244b10f232ed1fcb6bfdccb +Author: Matthias Clasen +AuthorDate: Tue Sep 11 20:22:26 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 11 20:24:30 2012 -0400 + + Drop GVFS_INOTIFY_DIAG debug feature + + Just not a good idea to have this in production code. + + docs/reference/gio/overview.xml | 11 ------ + gio/inotify/Makefile.am | 2 -- + gio/inotify/inotify-diag.c | 74 + ----------------------------------------- + gio/inotify/inotify-diag.h | 29 ---------------- + gio/inotify/inotify-helper.c | 2 -- + 5 files changed, 118 deletions(-) + +commit 7a0c47843f9319fc247b911540c2f6ba6e0d7bab +Author: Nilamdyuti Goswami +AuthorDate: Tue Sep 11 18:55:26 2012 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Tue Sep 11 18:55:54 2012 +0530 + + Assamese translation updated + + po/as.po | 685 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 336 insertions(+), 349 deletions(-) + +commit c9a3cd6d8b3a0ad35b289a862b23e14a9bc59ed5 +Author: Thomas Bechtold +AuthorDate: Tue Sep 11 07:45:24 2012 +0200 +Commit: Richard Hughes +CommitDate: Tue Sep 11 13:16:32 2012 +0100 + + Fix gdbus connection annotations + + g_dbus_connection_call_with_unix_fd_list_sync () and + g_dbus_connection_call_sync () should allow None for the + bus_name parameter. + + https://bugzilla.gnome.org/show_bug.cgi?id=683771 + + Signed-off-by: Richard Hughes + + gio/gdbusconnection.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 3a7d89a4143c650bd56188ae154fa805462f5e89 +Author: Claude Paroz +AuthorDate: Mon Sep 10 11:01:39 2012 +0200 +Commit: Claude Paroz +CommitDate: Mon Sep 10 11:01:39 2012 +0200 + + Updated French translation by Alexandre Franke and Claude Paroz + + po/fr.po | 1466 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 790 insertions(+), 676 deletions(-) + +commit 59ad2acfc548d216e17c76d68c504cfd7dabecea +Author: LRN +AuthorDate: Sun Sep 9 10:49:06 2012 -0400 +Commit: Colin Walters +CommitDate: Sun Sep 9 10:49:45 2012 -0400 + + gwin32mount.c: Fix syntax error + + Signed-off-by: Colin Walters + + https://bugzilla.gnome.org/show_bug.cgi?id=683641 + + gio/gwin32mount.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 1a99d0eb997f33c7915779555af2f95b67a77943 +Author: Duarte Loreto +AuthorDate: Sun Sep 9 01:30:24 2012 +0100 +Commit: Duarte Loreto +CommitDate: Sun Sep 9 01:30:24 2012 +0100 + + Updated Portuguese translation + + po/pt.po | 651 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 330 insertions(+), 321 deletions(-) + +commit a9720d149781aa6826eb14c7c5b7d409a5cd9237 +Author: Martin Srebotnjak +AuthorDate: Sat Sep 8 20:40:24 2012 +0200 +Commit: Matej Urbančič +CommitDate: Sat Sep 8 20:40:24 2012 +0200 + + Updated Slovenian translation + + po/sl.po | 1729 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 922 insertions(+), 807 deletions(-) + +commit 73a100d2ef0c4bf4b201e04e31c90d35a8082a12 +Author: Ryan Lortie +AuthorDate: Tue Sep 4 20:54:33 2012 -0400 +Commit: Ryan Lortie +CommitDate: Sat Sep 8 14:08:01 2012 -0400 + + G_DEFINE_QUARK: fix up some implementation issues + + https://bugzilla.gnome.org/show_bug.cgi?id=683360 + + glib/gquark.h | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +commit 986405c37adcfdfd6d6afd0138ccedf462d51cfd +Author: Marek Černocký +AuthorDate: Sat Sep 8 11:17:27 2012 +0200 +Commit: Marek Černocký +CommitDate: Sat Sep 8 11:17:27 2012 +0200 + + Updated Czech translation + + po/cs.po | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit fcbc30451ea4e64e0dbe5f5ed356007d0ddbbff1 +Author: Ihar Hrachyshka +AuthorDate: Fri Sep 7 18:27:47 2012 +0300 +Commit: Ihar Hrachyshka +CommitDate: Fri Sep 7 18:27:47 2012 +0300 + + Updated Belarusian translation. + + po/be.po | 832 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 424 insertions(+), 408 deletions(-) + +commit 0c582a0cfcbe39e2d604d11b9a32896999463bc7 +Author: Yaron Shahrabani +AuthorDate: Fri Sep 7 16:52:28 2012 +0300 +Commit: Yaron Shahrabani +CommitDate: Fri Sep 7 16:52:28 2012 +0300 + + Updated Hebrew translation. + + po/he.po | 1047 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 529 insertions(+), 518 deletions(-) + +commit e2ca8f1df1a3dd9c817f759925def39c777881e1 +Author: Мирослав Николић + +AuthorDate: Thu Sep 6 22:34:36 2012 +0200 +Commit: Мирослав Николић + +CommitDate: Thu Sep 6 22:34:36 2012 +0200 + + Updated Serbian translation + + po/sr.po | 682 + ++++++++++++++++++++++++++++----------------------------- + po/sr@latin.po | 682 + ++++++++++++++++++++++++++++----------------------------- + 2 files changed, 670 insertions(+), 694 deletions(-) + +commit e6df67abe60654bc65317e05881be317ccbdc03b +Author: Colin Walters +AuthorDate: Wed Sep 5 09:04:58 2012 -0400 +Commit: Colin Walters +CommitDate: Thu Sep 6 09:23:06 2012 -0400 + + tests/gvariant: Fix test on big endian architectures + + We need to ensure we get the exact same byte-level GVariant, so + byteswap on big endian architectures. + + https://bugzilla.gnome.org/show_bug.cgi?id=683384 + + glib/tests/gvariant.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 02f143c2d9fa793f872df65441f86bc958d5c731 +Author: Martin Pitt +AuthorDate: Mon Sep 3 21:43:50 2012 +0200 +Commit: Martin Pitt +CommitDate: Thu Sep 6 06:18:42 2012 +0200 + + Box GTimeZone to make it introspectable + + https://bugzilla.gnome.org/show_bug.cgi?id=683167 + + docs/reference/gobject/gobject-sections.txt | 2 ++ + gobject/gboxed.c | 1 + + gobject/glib-types.h | 10 ++++++++++ + gobject/gobject.symbols | 1 + + 4 files changed, 14 insertions(+) + +commit f4980c6295c73aa218532cfb6de0e210eac9a3f3 +Author: Bruce Cowan +AuthorDate: Wed Sep 5 13:13:54 2012 +0100 +Commit: Bruce Cowan +CommitDate: Wed Sep 5 13:13:54 2012 +0100 + + Updated British English translation + + po/en_GB.po | 1490 + +++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 829 insertions(+), 661 deletions(-) + +commit 54fa6a0bcfbb175ad30e6285d061336da60befcf +Author: Chao-Hsiung Liao +AuthorDate: Wed Sep 5 19:52:32 2012 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Wed Sep 5 19:52:32 2012 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 655 + ++++++++++++++++++++++++++++++------------------------------ + po/zh_TW.po | 655 + ++++++++++++++++++++++++++++++------------------------------ + 2 files changed, 662 insertions(+), 648 deletions(-) + +commit 9ecbb2dfd3bc022065689c40e6b2930765711bb3 +Author: Dirgita +AuthorDate: Tue Sep 4 19:47:46 2012 +0700 +Commit: Andika Triwidada +CommitDate: Tue Sep 4 19:47:46 2012 +0700 + + Updated Indonesian translation + + po/id.po | 659 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 333 insertions(+), 326 deletions(-) + +commit dad25c48190b3a2817b6586dba8c043f6d8354d5 +Author: Matthias Clasen +AuthorDate: Mon Sep 3 16:27:19 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 3 16:27:19 2012 -0400 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 626abfdc108154c3ae149e82580779669fb63881 +Author: Matthias Clasen +AuthorDate: Mon Sep 3 15:14:18 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 3 15:14:18 2012 -0400 + + 2.33.10 + + NEWS | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- + configure.ac | 2 +- + 2 files changed, 52 insertions(+), 2 deletions(-) + +commit 5d915a4a779e566431d0f268b63904d82e62f5bd +Author: Daniel Mustieles +AuthorDate: Mon Sep 3 16:18:23 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Mon Sep 3 16:18:23 2012 +0200 + + Revert "Updated Spanish translation" + + This reverts commit bc036bf9789556f37b2872baaee3c126af7e6e3f. + + po/es.po | 1571 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 791 insertions(+), 780 deletions(-) + +commit bc036bf9789556f37b2872baaee3c126af7e6e3f +Author: Daniel Mustieles +AuthorDate: Mon Sep 3 16:15:35 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Mon Sep 3 16:15:35 2012 +0200 + + Updated Spanish translation + + po/es.po | 1571 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 780 insertions(+), 791 deletions(-) + +commit d68609f9fd22e0e498f13fc7340075022f94ed48 +Author: Dan Winship +AuthorDate: Mon Sep 3 10:06:13 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Sep 3 10:07:31 2012 -0400 + + Revert "xdgmime: plug a small leak" + + This reverts commit 4e7031f073db2df7297feab35c9d353b0b3977d8. + + The string actually does get freed somewhere else, at least in some + cases. Can be looked at again later if this reintroduces a leak. + + https://bugzilla.gnome.org/show_bug.cgi?id=683270 + + gio/xdgmime/xdgmime.c | 1 - + 1 file changed, 1 deletion(-) + +commit 857ac29c1fd785626281709051e4b3850493418c +Author: Daniel Mustieles +AuthorDate: Mon Sep 3 16:06:57 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Mon Sep 3 16:06:57 2012 +0200 + + Updated Spanish translation + + po/es.po | 731 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 356 insertions(+), 375 deletions(-) + +commit 4d1b0d46dbf3f735a8808d66bc2d30baa9bd3947 +Author: Dan Winship +AuthorDate: Mon Sep 3 08:56:10 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Sep 3 08:56:10 2012 -0400 + + update .gitignore + + gobject/tests/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit beb0f9c15058e2249ffed73747f11298e6949b84 +Author: Dan Winship +AuthorDate: Fri Aug 24 20:43:54 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Sep 3 08:41:23 2012 -0400 + + gio/tests: fix leaks + + https://bugzilla.gnome.org/show_bug.cgi?id=682560 + + gio/tests/appinfo.c | 2 ++ + gio/tests/contexts.c | 13 ++++++++++++- + gio/tests/converter-stream.c | 1 + + gio/tests/file.c | 5 ++++- + gio/tests/live-g-file.c | 21 +++++++++++++++++---- + gio/tests/memory-input-stream.c | 3 +++ + gio/tests/mimeapps.c | 1 + + gio/tests/network-address.c | 1 + + gio/tests/network-monitor.c | 26 +++++++++++++++++++++++++- + gio/tests/proxy-test.c | 36 +++++++++++++++++++++++++++--------- + gio/tests/unix-streams.c | 1 + + 11 files changed, 94 insertions(+), 16 deletions(-) + +commit 17bb9d542cea2eeb3cb54cb583f671cf5e005631 +Author: Dan Winship +AuthorDate: Fri Aug 24 17:11:38 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Sep 3 08:40:14 2012 -0400 + + gio/tests/cancellable: fix to still work when running slowly + + The test was assuming that all cancelled ops would finish within a + certain amount of time, but this often failed under valgrind. Instead, + just run the loop until all of the ops have actually finished. + + https://bugzilla.gnome.org/show_bug.cgi?id=682560 + + gio/tests/cancellable.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 568f7377088ea7836217f0bec917cc77e1210742 +Author: Dan Winship +AuthorDate: Fri Aug 24 17:11:17 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Sep 3 08:40:14 2012 -0400 + + gio/tests: port some stuff to g_test_expect_message() + + https://bugzilla.gnome.org/show_bug.cgi?id=682560 + + gio/tests/Makefile.am | 2 +- + gio/tests/actions.c | 78 + +++++++++++++++++++---------------------------- + gio/tests/gdbus-message.c | 50 +++++++++++++++++------------- + gio/tests/gsettings.c | 52 +++++++++++++++---------------- + 4 files changed, 85 insertions(+), 97 deletions(-) + +commit 039ecf2bc613ea5687d1052a87c982163e506451 +Author: Dan Winship +AuthorDate: Fri Aug 24 17:08:38 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Sep 3 08:40:14 2012 -0400 + + g_file_copy: plug a leak + + The fallback copy code was leaking the GFileInfo if it didn't have + G_FILE_ATTRIBUTE_STANDARD_TYPE. + + https://bugzilla.gnome.org/show_bug.cgi?id=682560 + + gio/gfile.c | 1 + + 1 file changed, 1 insertion(+) + +commit fa58cef826d8f3b6b3eb0cad230b0421ee35f8a2 +Author: Dan Winship +AuthorDate: Fri Aug 24 17:06:46 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Sep 3 08:36:10 2012 -0400 + + GDesktopAppInfo: fix leaks + + g_desktop_app_info_ensure_saved() was leaking the file contents. + + _g_desktop_app_info_launch_uris_internal() was leaking the session bus + on error. + + https://bugzilla.gnome.org/show_bug.cgi?id=682560 + + gio/gdesktopappinfo.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 4e7031f073db2df7297feab35c9d353b0b3977d8 +Author: Dan Winship +AuthorDate: Fri Aug 24 17:03:35 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Sep 3 08:36:10 2012 -0400 + + xdgmime: plug a small leak + + https://bugzilla.gnome.org/show_bug.cgi?id=682560 + + gio/xdgmime/xdgmime.c | 1 + + 1 file changed, 1 insertion(+) + +commit 03be681e08dc9e706d2d22df01fd4edb004a7577 +Author: Dan Winship +AuthorDate: Thu Aug 23 16:53:13 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Sep 3 08:36:10 2012 -0400 + + gobject/tests: plug leaks + + https://bugzilla.gnome.org/show_bug.cgi?id=682560 + + gobject/tests/signals.c | 3 +++ + gobject/tests/threadtests.c | 13 ++++++++++--- + 2 files changed, 13 insertions(+), 3 deletions(-) + +commit e0cba35d4116c61035a0cbb403d89a04bbdb8963 +Author: Dan Winship +AuthorDate: Mon Aug 27 07:45:08 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Sep 3 08:36:10 2012 -0400 + + gobject/tests: use g_test_expect_messages() + + https://bugzilla.gnome.org/show_bug.cgi?id=682560 + + gobject/tests/Makefile.am | 3 +++ + gobject/tests/ifaceproperties.c | 16 +++++++--------- + gobject/tests/param.c | 15 +++++++-------- + 3 files changed, 17 insertions(+), 17 deletions(-) + +commit 7972485ca10ef7b45389832f3d8afcf1372c8991 +Author: Yuri Kozlov +AuthorDate: Mon Sep 3 10:16:21 2012 +0400 +Commit: Yuri Myasoedov +CommitDate: Mon Sep 3 10:16:21 2012 +0400 + + Updated Russian translation + + po/ru.po | 1522 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 824 insertions(+), 698 deletions(-) + +commit 7662dbe82b2a4010418586434756ad75169318b3 +Author: Piotr Drąg +AuthorDate: Mon Sep 3 01:20:56 2012 +0200 +Commit: Piotr Drąg +CommitDate: Mon Sep 3 01:20:56 2012 +0200 + + Updated Polish translation + + po/pl.po | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +commit a30f6a6eb82e896d5b1dc0921d1d8256ed7ec546 +Author: Matthias Clasen +AuthorDate: Wed Aug 29 00:01:15 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 2 15:10:20 2012 -0400 + + Add new api to symbol lists and docs + + https://bugzilla.gnome.org/show_bug.cgi?id=682849 + + docs/reference/glib/glib-sections.txt | 3 +++ + docs/reference/gobject/gobject-sections.txt | 4 ++++ + glib/glib.symbols | 2 ++ + gobject/gobject.symbols | 4 ++++ + 4 files changed, 13 insertions(+) + +commit d80d70458ad1711f9c1935a58df3eb9e04853464 +Author: Matthias Clasen +AuthorDate: Sat Sep 1 00:20:22 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 2 15:10:20 2012 -0400 + + Add a threaded test for g_object_replace_data + + This is the threaded atomic add test from glib/tests/atomic.c, + redone using qdata instead of an atomic int to store the values. + + gobject/tests/Makefile.am | 1 + + gobject/tests/qdata.c | 93 + +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 94 insertions(+) + +commit 2fa77fb76c452755fe5f2a1ebe10f27583959250 +Author: Matthias Clasen +AuthorDate: Tue Aug 28 23:56:01 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 2 15:09:13 2012 -0400 + + Add some tests for new object data api + + These are non-threaded, but the do test dup and destroy somewhat. + + https://bugzilla.gnome.org/show_bug.cgi?id=682849 + + gobject/tests/reference.c | 121 + ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 121 insertions(+) + +commit 1254ca716bf64ce97f6b47882493411883a41865 +Author: Matthias Clasen +AuthorDate: Tue Aug 28 06:45:30 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 2 15:09:13 2012 -0400 + + Add an atomic compare-and-exchange operation for object data + + This is useful when using object data in thread-safe libraries. + + https://bugzilla.gnome.org/show_bug.cgi?id=682849 + + gobject/gobject.c | 175 + +++++++++++++++++++++++++++++++++++++++++++++++++++++- + gobject/gobject.h | 30 ++++++++++ + 2 files changed, 204 insertions(+), 1 deletion(-) + +commit 06e3a1d71afb66d573b20f17a575c345fb4b697f +Author: Matthias Clasen +AuthorDate: Tue Aug 28 06:44:00 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 2 15:09:12 2012 -0400 + + Add compare-and exchange for data lists + + Also, make it possible to get a 'new ref' on a datalist member + in a race-free way. + This is useful when using object data in thread-safe libraries. + + https://bugzilla.gnome.org/show_bug.cgi?id=682849 + + glib/gdataset.c | 223 + +++++++++++++++++++++++++++++++++++++++++++++++++------- + glib/gdataset.h | 17 ++++- + 2 files changed, 214 insertions(+), 26 deletions(-) + +commit 18e49c30f02da6d0e10a4dc72760cf3f05303588 +Author: Rūdolfs Mazurs +AuthorDate: Sun Sep 2 16:02:50 2012 +0300 +Commit: Rūdolfs Mazurs +CommitDate: Sun Sep 2 16:04:37 2012 +0300 + + Updated Latvian translation + + po/lv.po | 2467 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 1281 insertions(+), 1186 deletions(-) + +commit b3beac08f592dcdf57181fcbdffd51fd8b9811f7 +Author: Aurimas Černius +AuthorDate: Sun Sep 2 15:39:16 2012 +0300 +Commit: Aurimas Černius +CommitDate: Sun Sep 2 15:39:16 2012 +0300 + + Updated Lithuanian translation + + po/lt.po | 809 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 388 insertions(+), 421 deletions(-) + +commit 2d85894bc5e45b2a50e5a5784a99e4c31beea7ec +Author: Paolo Borelli +AuthorDate: Sun Sep 2 12:25:50 2012 +0200 +Commit: Paolo Borelli +CommitDate: Sun Sep 2 12:25:50 2012 +0200 + + Fix gtk-doc for g_app_info_get_supported_types + + gio/gappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 724c8a18464cd3e2fb3547235cf1f82400bbf91e +Author: Aleksander Morgado +AuthorDate: Fri Aug 31 11:41:53 2012 +0200 +Commit: Matthias Clasen +CommitDate: Sat Sep 1 11:53:19 2012 -0400 + + gdbus-codegen: avoid error when wrong interface is provided to + --annotate + + If the interface given cannot be matched, `iface_obj' was left + uninitialized and + the iface_obj == None check would end up crashing: + + Traceback (most recent call last): + File "/usr/bin/gdbus-codegen", line 41, in + sys.exit(codegen_main.codegen_main()) + File "/usr/lib64/gdbus-2.0/codegen/codegen_main.py", line 175, + in codegen_main + apply_annotations(all_ifaces, opts.annotate) + File "/usr/lib64/gdbus-2.0/codegen/codegen_main.py", line 146, + in apply_annotations + apply_annotation(iface_list, iface, None, None, None, None, + key, value) + File "/usr/lib64/gdbus-2.0/codegen/codegen_main.py", line 64, + in apply_annotation + if iface_obj == None: + UnboundLocalError: local variable 'iface_obj' referenced before + assignment + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=683088 + + gio/gdbus-2.0/codegen/codegen_main.py | 1 + + 1 file changed, 1 insertion(+) + +commit c270b833a631ef5469d0dce787244ecf56386c5d +Author: Matthias Clasen +AuthorDate: Fri Aug 31 23:22:16 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 1 11:08:27 2012 -0400 + + Fix shell tests + + glib/tests/shell.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit e81ba25d396dd5596e242e22c06bbd71d9e17168 +Author: Kjartan Maraas +AuthorDate: Sat Sep 1 10:42:05 2012 +0200 +Commit: Kjartan Maraas +CommitDate: Sat Sep 1 10:42:05 2012 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 643 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 326 insertions(+), 317 deletions(-) + +commit e2596ba2432a6417df35faa4410f07698c4fbb8a +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Sat Sep 1 13:17:05 2012 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Sat Sep 1 13:17:05 2012 +0700 + + Updated Vietnamese translation + + po/vi.po | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 22eaa16b7f9e7fc5c9eee4b58449fbc6639f6ece +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Sat Sep 1 13:16:36 2012 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Sat Sep 1 13:16:36 2012 +0700 + + po/vi: import from Damned Lies + + po/vi.po | 630 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 302 insertions(+), 328 deletions(-) + +commit aefcd5922fff0800460570c6521a7456778c93b4 +Author: Fran Diéguez +AuthorDate: Fri Aug 31 21:00:52 2012 +0200 +Commit: Fran Diéguez +CommitDate: Fri Aug 31 21:00:52 2012 +0200 + + Updated Galician translations + + po/gl.po | 665 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 337 insertions(+), 328 deletions(-) + +commit 55f7061097c3a7e6a381089dab65b9eed642408c +Author: Martin Pitt +AuthorDate: Mon Aug 20 06:02:31 2012 +0200 +Commit: Martin Pitt +CommitDate: Fri Aug 31 18:03:26 2012 +0200 + + Bump max time in test_method_calls_on_proxy() test + + On slower platforms, the overhead of the 240 D-BUS Sleep calls is + larger than + the current maximum of 6 seconds. A run on a Panda board sometimes + fails with + + ERROR:/build/buildd/glib2.0-2.33.8/./gio/tests/gdbus-threading.c:409:test_method_calls_on_proxy: + assertion failed (elapsed_msec < 6000): (7365 < 6000) + + Bump maximum time to 8 seconds to be more resilient to this. + + https://bugzilla.gnome.org/show_bug.cgi?id=682222 + + gio/tests/gdbus-threading.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8297e8a3a0d63a69fd923219031438698a118759 +Author: Tom Tryfonidis +AuthorDate: Fri Aug 31 11:08:42 2012 +0300 +Commit: Tom Tryfonidis +CommitDate: Fri Aug 31 11:08:42 2012 +0300 + + Updated Greek translation + + po/el.po | 1946 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 1017 insertions(+), 929 deletions(-) + +commit eec52a18c029fc4f494e92a59f3cd6665f0f1bbd +Author: Piotr Drąg +AuthorDate: Thu Aug 30 17:59:33 2012 +0200 +Commit: Piotr Drąg +CommitDate: Thu Aug 30 17:59:33 2012 +0200 + + Updated Polish translation + + po/pl.po | 639 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 323 insertions(+), 316 deletions(-) + +commit 40b4fae42e8c8ad306a1fab93a1e263354fef3d5 +Author: William Jon McCann +AuthorDate: Tue Aug 28 19:22:01 2012 -0400 +Commit: William Jon McCann +CommitDate: Thu Aug 30 11:04:43 2012 -0400 + + Add ability to get symbolic icon for content type + + https://bugzilla.gnome.org/show_bug.cgi?id=682101 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gcontenttype.c | 79 + ++++++++++++++++++++++++++++--------- + gio/gcontenttype.h | 1 + + gio/gio.symbols | 1 + + gio/glocalfileinfo.c | 75 + ++++++++++++++++++++++------------- + 5 files changed, 110 insertions(+), 47 deletions(-) + +commit a15a071f35f2743451aa98b2b069b7eca975c7ea +Author: William Jon McCann +AuthorDate: Tue Aug 28 18:56:53 2012 -0400 +Commit: William Jon McCann +CommitDate: Thu Aug 30 11:04:43 2012 -0400 + + Add symbolic icon support to gfileinfo + + https://bugzilla.gnome.org/show_bug.cgi?id=682101 + + docs/reference/gio/gio-sections.txt | 3 ++ + gio/gfileinfo-priv.h | 1 + + gio/gfileinfo.c | 58 ++++++++++++++++++++++ + gio/gfileinfo.h | 14 ++++++ + gio/gio.symbols | 2 + + gio/glocalfileinfo.c | 97 + +++++++++++++++++++++++++++++-------- + 6 files changed, 154 insertions(+), 21 deletions(-) + +commit a2dca48bf75efcc684cfc670b4552a2c5c77d1a2 +Author: William Jon McCann +AuthorDate: Tue Aug 28 15:37:43 2012 -0400 +Commit: William Jon McCann +CommitDate: Thu Aug 30 11:04:43 2012 -0400 + + Add symbolic icon support to drive, volume, and mount + + We need symbolic icon support for display in Nautilus. + + https://bugzilla.gnome.org/show_bug.cgi?id=682101 + + docs/reference/gio/gio-sections.txt | 5 +++ + gio/gdrive.c | 30 ++++++++++++++++ + gio/gdrive.h | 4 +++ + gio/gio.symbols | 5 +++ + gio/gmount.c | 32 +++++++++++++++++ + gio/gmount.h | 3 ++ + gio/gunixmount.c | 12 +++++++ + gio/gunixmounts.c | 71 + +++++++++++++++++++++++++------------ + gio/gunixmounts.h | 4 +++ + gio/gunixvolume.c | 11 ++++++ + gio/gvolume.c | 32 +++++++++++++++++ + gio/gvolume.h | 3 ++ + gio/gwin32mount.c | 35 +++++++++++++----- + 13 files changed, 217 insertions(+), 30 deletions(-) + +commit 88d181ef18b50018d4645870bc6d0a1283177f68 +Author: Rui Matos +AuthorDate: Wed Aug 29 19:18:45 2012 +0200 +Commit: Rui Matos +CommitDate: Thu Aug 30 11:51:49 2012 +0200 + + gdbus-tool: Check return value of strrchr() + + Fixes a crash when invoking gdbus like: + + $ gdbus emit --session -o / -s Foo + + https://bugzilla.gnome.org/show_bug.cgi?id=682965 + + gio/gdbus-tool.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 5328f760ee80ced5dc44ed9c0e388ee00d7bf42d +Author: Chun-wei Fan +AuthorDate: Thu Aug 30 17:14:13 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Aug 30 17:14:13 2012 +0800 + + Update gspawn-win*helper* Visual C++ projects + + Add GLIB_COMPILATION to the preprocessor definitions to fix the build. + + build/win32/vs10/gspawn-win32-helper-console.vcxproj | 8 ++++---- + build/win32/vs10/gspawn-win32-helper.vcxproj | 8 ++++---- + build/win32/vs9/gspawn-win32-helper-console.vcproj | 8 ++++---- + build/win32/vs9/gspawn-win32-helper.vcproj | 8 ++++---- + 4 files changed, 16 insertions(+), 16 deletions(-) + +commit 6e4acf44b3a943906432a2bf55223ac107d8e0c2 +Author: Dominique Leuenberger +AuthorDate: Fri Aug 17 11:10:41 2012 +0200 +Commit: Matthias Clasen +CommitDate: Wed Aug 29 20:42:25 2012 -0400 + + gshell: Fix parsing of comments in command lines. + + Fixes bug 562907 + + glib/gshell.c | 18 ++++++++++++++++++ + glib/tests/shell.c | 2 ++ + 2 files changed, 20 insertions(+) + +commit 9bca5bb49f0fc0585335abf476b7082e654878b6 +Author: Cosimo Cecchi +AuthorDate: Wed Aug 29 14:46:11 2012 -0400 +Commit: Cosimo Cecchi +CommitDate: Wed Aug 29 14:46:11 2012 -0400 + + appinfo: fix annotations for g_app_info_launch and + g_app_info_launch_uris + + The files/uris parameters for these functions can be NULL, so we + need an + allow-none annotation here. + + gio/gappinfo.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 6e64ba58b90d1d834a6b5f61acec6755e4b80072 +Author: Colin Walters +AuthorDate: Mon Aug 27 18:30:06 2012 -0400 +Commit: Colin Walters +CommitDate: Tue Aug 28 13:56:59 2012 -0400 + + Switch all open() calls to use g_open() + + Because it now handles EINTR. And we should do so. While most people + use Linux, which tries very hard to avoid propagating EINTR back up + into userspace, it can still happen. + + https://bugzilla.gnome.org/show_bug.cgi?id=682833 + + gio/glocalfile.c | 2 +- + gio/glocalfileinfo.c | 4 ++-- + gio/gresource-tool.c | 3 ++- + gio/tests/gdbus-peer.c | 2 +- + gio/tests/pollable.c | 3 ++- + glib/giounix.c | 8 ++------ + glib/gtestutils.c | 3 ++- + glib/tests/mappedfile.c | 5 +++-- + gobject/glib-genmarshal.c | 3 ++- + 9 files changed, 17 insertions(+), 16 deletions(-) + +commit 2542b6f60492fadfb21f2c4a29976c3494c7e6c5 +Author: Colin Walters +AuthorDate: Mon Aug 27 18:22:26 2012 -0400 +Commit: Colin Walters +CommitDate: Tue Aug 28 13:56:58 2012 -0400 + + xdgmime: Handle EINTR in open() + + https://bugzilla.gnome.org/show_bug.cgi?id=682833 + + gio/xdgmime/xdgmimecache.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 62570a52b179fc521209444926d7945fc31210a4 +Author: Cosimo Cecchi +AuthorDate: Tue Aug 28 13:15:29 2012 -0400 +Commit: Cosimo Cecchi +CommitDate: Tue Aug 28 13:16:25 2012 -0400 + + gio: don't quote quark names for G_DEFINE_QUARK + + gio/gioerror.c | 2 +- + gio/gresolver.c | 2 +- + gio/gresource.c | 2 +- + gio/gtlsconnection.c | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +commit 4b602940e2c46d9f91acf91f67a6cd0b6ea05e13 +Author: Cosimo Cecchi +AuthorDate: Tue Aug 28 13:15:56 2012 -0400 +Commit: Cosimo Cecchi +CommitDate: Tue Aug 28 13:16:24 2012 -0400 + + glib: don't quote quark names for G_DEFINE_QUARK + + glib/gbookmarkfile.c | 2 +- + glib/gconvert.c | 2 +- + glib/gfileutils.c | 2 +- + glib/giochannel.c | 2 +- + glib/gkeyfile.c | 2 +- + glib/glib-unix.c | 2 +- + glib/gmarkup.c | 2 +- + glib/goption.c | 2 +- + glib/gregex.c | 2 +- + glib/gshell.c | 2 +- + glib/gspawn-win32.c | 4 ++-- + glib/gspawn.c | 4 ++-- + glib/gthread.c | 2 +- + glib/gvariant-parser.c | 2 +- + 14 files changed, 16 insertions(+), 16 deletions(-) + +commit daae12710a890b974e57cc806b275248760ce131 +Author: Cosimo Cecchi +AuthorDate: Tue Aug 28 13:14:35 2012 -0400 +Commit: Cosimo Cecchi +CommitDate: Tue Aug 28 13:16:23 2012 -0400 + + gquark: clarify G_DEFINE_QUARK docs about the use of quotes + + Use the term "name" instead of "string" in the documentation, and + add a + note explaining double quotes shouldn't be used for the quark name. + + glib/gquark.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 369c7689c24154ac04ac1dd528f99164fafb0541 +Author: Matthias Clasen +AuthorDate: Tue Aug 28 05:52:24 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 28 05:57:17 2012 -0400 + + Add missing includes + + glib/gmarkup.c | 1 + + glib/gshell.c | 1 + + glib/gspawn-win32.c | 1 + + glib/gspawn.c | 1 + + glib/gvariant-parser.c | 1 + + 5 files changed, 5 insertions(+) + +commit 60d2cb665ef4bc751b4a4a940ec2f336f57b5535 +Author: Matthias Clasen +AuthorDate: Mon Aug 27 23:42:12 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 28 00:08:08 2012 -0400 + + Use G_DEFINE_QUARK for quarks in GIO + + gio/gioerror.c | 8 ++------ + gio/gresolver.c | 7 +------ + gio/gresource.c | 6 +----- + gio/gtlsconnection.c | 7 +------ + 4 files changed, 5 insertions(+), 23 deletions(-) + +commit b7d1518ce9f337a7ede1a659de31ff81dafcbac5 +Author: Matthias Clasen +AuthorDate: Mon Aug 27 23:37:41 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 28 00:08:07 2012 -0400 + + Fix a typo in a doc comment + + glib/gthread-posix.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4f12f7c029d8a4e7eaca633cb7e71c82a08be28d +Author: Matthias Clasen +AuthorDate: Mon Aug 27 23:36:42 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 28 00:08:07 2012 -0400 + + Use G_DEFINE_QUARK for GLib's own quarks + + This commit just deals with glib/. + gobject/ and gio/ will be handled in separate commits. + + glib/gbookmarkfile.c | 10 +--------- + glib/gconvert.c | 6 +----- + glib/gfileutils.c | 6 +----- + glib/giochannel.c | 7 ++----- + glib/gkeyfile.c | 7 +------ + glib/glib-unix.c | 6 +----- + glib/gmarkup.c | 6 +----- + glib/goption.c | 7 +------ + glib/gregex.c | 11 +---------- + glib/gshell.c | 6 +----- + glib/gspawn-win32.c | 13 ++----------- + glib/gspawn.c | 13 ++----------- + glib/gthread.c | 6 +----- + glib/gvariant-parser.c | 11 +---------- + 14 files changed, 17 insertions(+), 98 deletions(-) + +commit 702b44886572c657d552f3ec15e9794acd4265e5 +Author: Matthias Clasen +AuthorDate: Mon Aug 27 23:34:30 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 28 00:08:07 2012 -0400 + + Add a G_DEFINE_QUARK macro + + https://bugzilla.gnome.org/show_bug.cgi?id=627240 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gquark.c | 12 ++++++++++++ + glib/gquark.h | 13 +++++++++++++ + 3 files changed, 26 insertions(+) + +commit a1ff18582da002c93150d48f70aeab8b340f73ff +Author: Matthias Clasen +AuthorDate: Mon Aug 27 23:16:25 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 28 00:08:06 2012 -0400 + + Put quarks in their own source file + + Just because I'm too lazy to grep every single time for the other + source file in which the quark code is hiding. + + glib/Makefile.am | 1 + + glib/gdataset.c | 299 +---------------------------------------------- + glib/gquark.c | 347 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 349 insertions(+), 298 deletions(-) + +commit 030ebfb93b4c4c4525341ef81f9c548fcc6d8921 +Author: Daiki Ueno +AuthorDate: Fri Aug 24 15:43:02 2012 +0900 +Commit: Matthias Clasen +CommitDate: Tue Aug 28 00:08:06 2012 -0400 + + gsettings-tool: make list-recursively really recurse + + https://bugzilla.gnome.org/show_bug.cgi?id=682586 + + gio/gsettings-tool.c | 11 +++-------- + 1 file changed, 3 insertions(+), 8 deletions(-) + +commit a55298941072697324ac34990ebf455271f1b35b +Author: Matthias Clasen +AuthorDate: Sun Aug 19 23:50:09 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 28 00:08:05 2012 -0400 + + GFile: Cosmetic doc changes + + gio/gfile.c | 5031 + ++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 2589 insertions(+), 2442 deletions(-) + +commit 0149f44f4a3c8874b8327eddcd58561f5707220a +Author: Matthias Clasen +AuthorDate: Sun Aug 19 18:36:18 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 28 00:08:05 2012 -0400 + + Fix the GDBusProxy async test + + Patch by Mike Gorse, bug + https://bugzilla.gnome.org/show_bug.cgi?id=674805 + + gio/tests/gdbus-proxy.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 7e07ea8189547f7e044c418c914c4bc26f9cf6a2 +Author: Matthias Clasen +AuthorDate: Sun Aug 19 18:35:56 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 28 00:08:05 2012 -0400 + + Make async permission tests work + + gio/tests/permission.c | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) + +commit 375943ea215871c0fe6d1d02e970cb2d71c8445c +Author: Mike Gorse +AuthorDate: Thu Apr 26 16:06:34 2012 -0500 +Commit: Matthias Clasen +CommitDate: Tue Aug 28 00:08:04 2012 -0400 + + Fix the gdbus-proxy async test + + The async test had several problems: + - It created a proxy and did not launch a main loop, meaning that its + callback would usually not get called, or, if it did get called, the + test harness would have taken down the connection already, causing an + assertion failure when the proxy had an error. + - It was dependent on the proxy test to set up the server and + would fail + because some properties were modified by that test. + + https://bugzilla.gnome.org/show_bug.cgi?id=674805 + + gio/tests/gdbus-proxy.c | 47 + +++++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 41 insertions(+), 6 deletions(-) + +commit ce976bcac7294e72b3e94dda17fe5dfb157770d4 +Author: Colin Walters +AuthorDate: Mon Aug 27 14:37:21 2012 -0400 +Commit: Colin Walters +CommitDate: Mon Aug 27 18:10:12 2012 -0400 + + gstdio: Harden g_open() against EINTR + + Noticed by code inspection, when auditing some of my code for EINTR + handling. + + https://bugzilla.gnome.org/show_bug.cgi?id=682819 + + glib/gstdio.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit d54e10632a575963790d50661ae75692bb159b37 +Author: Colin Walters +AuthorDate: Wed Mar 28 13:53:37 2012 -0400 +Commit: Colin Walters +CommitDate: Mon Aug 27 17:02:00 2012 -0400 + + gvariant: Add tests for exact SHA256 checksums + + I'd like to use GVariant as a data format in my userspace filesystem, + and having the actual bits be stable means I can reliably compute + cryptographic checksums. + + This updated patch removes vardict checks, because Ryan wants the + flexibility to change them in the future. + + https://bugzilla.gnome.org/show_bug.cgi?id=673012 + + glib/tests/gvariant.c | 74 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 74 insertions(+) + +commit 7936af693477f5b8dfeef4e0d90e6fa4531cf395 +Author: Ryan Lortie +AuthorDate: Mon Aug 27 16:12:30 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 27 16:12:30 2012 -0400 + + GVariantType: gut g_variant_type_check() + + This function is causing an insane amount of wasted time on some + real-world profiles and it's pretty useless since we already have + GVariantType (as a type different from a string) for the purpose of + static type safety. + + Disable it for now. We can possibly turn this back on again if + we solve + bug #544026. + + https://bugzilla.gnome.org/show_bug.cgi?id=679835 + + glib/gvarianttype.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +commit b53e95f3eb98fc7ba1527e225c32bb4ee2892746 +Author: Nilamdyuti Goswami +AuthorDate: Mon Aug 27 23:39:52 2012 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Mon Aug 27 23:40:28 2012 +0530 + + Implemented FUEL entries to Assamese translation + + po/as.po | 260 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 130 insertions(+), 130 deletions(-) + +commit 1a2c5e155deacb7ebeb8d0ca2c800a97a90a7ab9 +Author: Dan Winship +AuthorDate: Thu Aug 23 12:48:49 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 27 07:38:27 2012 -0400 + + glib/tests: fix leaks + + https://bugzilla.gnome.org/show_bug.cgi?id=682560 + + glib/tests/asyncqueue.c | 4 + + glib/tests/bookmarkfile.c | 3 +- + glib/tests/checksum.c | 13 +- + glib/tests/collate.c | 15 +- + glib/tests/cond.c | 9 + + glib/tests/convert.c | 1 + + glib/tests/dataset.c | 2 + + glib/tests/fileutils.c | 2 + + glib/tests/gwakeuptest.c | 1 + + glib/tests/mainloop.c | 33 +- + glib/tests/markup-parse.c | 3 +- + glib/tests/option-context.c | 8 +- + glib/tests/queue.c | 6 +- + glib/tests/regex.c | 963 + ++++++++++++++++++++------------------- + glib/tests/spawn-multithreaded.c | 7 +- + glib/tests/spawn-singlethread.c | 8 +- + glib/tests/string.c | 2 + + glib/tests/timeout.c | 6 +- + glib/tests/unix.c | 4 +- + 19 files changed, 596 insertions(+), 494 deletions(-) + +commit 0c0cdfd9c4a9d57aae0fb50b5e18cab6ba9e1a76 +Author: Dan Winship +AuthorDate: Thu Aug 23 12:29:36 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 27 07:31:13 2012 -0400 + + gtestutils: add g_test_add_data_func_full() + + Like g_test_add_data_func(), but includes a GDestroyNotify for the + test data. + + https://bugzilla.gnome.org/show_bug.cgi?id=682560 + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gtestutils.c | 28 ++++++++++++++++++++++++++++ + glib/gtestutils.h | 7 +++++++ + 4 files changed, 37 insertions(+) + +commit 242737822357c9a686df69bdb888b0d42caf1d5c +Author: Dan Winship +AuthorDate: Thu Aug 23 12:38:17 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 27 07:24:15 2012 -0400 + + gmain: remove unix signal watch if its GSourceFunc returns FALSE + + g_unix_signal_watch_dispatch() was ignore the callback's return value. + Fix that. + + https://bugzilla.gnome.org/show_bug.cgi?id=682560 + + glib/gmain.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 99c7c951d99c180a5f5832d922b4f3f58380a1cd +Author: Dan Winship +AuthorDate: Thu Aug 23 12:35:20 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 27 07:24:07 2012 -0400 + + gmain: don't leak child sources that are destroyed before their + parents + + A parent source holds refs on its children, so if the child source is + destroyed, we need to drop that ref. Fix, and reorganize to make this + all more obvious. + + https://bugzilla.gnome.org/show_bug.cgi?id=682560 + + glib/gmain.c | 44 ++++++++++++++++++++++---------------------- + 1 file changed, 22 insertions(+), 22 deletions(-) + +commit 48a9887eae1058b055994c832b26a8ab9876db57 +Author: Dan Winship +AuthorDate: Thu Aug 23 12:33:43 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 27 07:23:59 2012 -0400 + + gmain: free source_lists when freeing GMainContext + + If a context was freed with sources still attached, those sources + correctly got destroyed, but the corresponding GSourceList structs + were being leaked. + + https://bugzilla.gnome.org/show_bug.cgi?id=682560 + + glib/gmain.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit b901aaf6731d836b036aa1cee63087aa3fdc0768 +Author: Dan Winship +AuthorDate: Sun Aug 26 14:40:13 2012 -0400 +Commit: Dan Winship +CommitDate: Sun Aug 26 14:40:22 2012 -0400 + + Update .gitignores + + gio/tests/.gitignore | 2 ++ + tests/.gitignore | 1 + + 2 files changed, 3 insertions(+) + +commit ac7c050d377f6815534074b855cdf74f02cf96b2 +Author: Colin Walters +AuthorDate: Sat Aug 25 17:13:43 2012 -0400 +Commit: Colin Walters +CommitDate: Sat Aug 25 17:13:43 2012 -0400 + + docs: Ensure CLEANFILES is set before we use += + + We need to be defensive about this in the case where gtk-doc.make is + empty. + + docs/reference/gio/Makefile.am | 1 + + docs/reference/glib/Makefile.am | 1 + + docs/reference/gobject/Makefile.am | 1 + + 3 files changed, 3 insertions(+) + +commit dbad8304ff123f7fe242bdd8a8cfcb7eef8afce6 +Author: William Jon McCann +AuthorDate: Fri Aug 24 13:32:25 2012 -0400 +Commit: William Jon McCann +CommitDate: Fri Aug 24 13:36:26 2012 -0400 + + Don't crash if set_app_info is called before adding metadata + + set_mime_type, set_is_private, add_group, set_groups, set_icon, etc + all added metadata before using it. If set_app_info was called before + any of those it would crash when trying to access the metadata. + + glib/gbookmarkfile.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit dbf9f7a2882c240fe48ab441de7e015638686ccc +Author: OKANO Takayoshi +AuthorDate: Thu Aug 23 19:15:09 2012 +0900 +Commit: Jiro Matsuzawa +CommitDate: Thu Aug 23 19:15:09 2012 +0900 + + [l10n] Update Japanese translation + + po/ja.po | 1174 + ++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 680 insertions(+), 494 deletions(-) + +commit 462c48acad4efe9db5afd3c7d8e3e0342a591bea +Author: A S Alam +AuthorDate: Thu Aug 23 07:57:51 2012 +0530 +Commit: A S Alam +CommitDate: Thu Aug 23 07:57:51 2012 +0530 + + update Punjabi Translation + + po/pa.po | 1401 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 764 insertions(+), 637 deletions(-) + +commit 12494f697ffd2117ec607d62a04c5a97e32e8482 +Author: Piotr Drąg +AuthorDate: Wed Aug 22 22:36:15 2012 +0200 +Commit: Piotr Drąg +CommitDate: Wed Aug 22 22:36:15 2012 +0200 + + Updated Polish translation + + po/pl.po | 1039 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 585 insertions(+), 454 deletions(-) + +commit 0b6fdff05cc10f5e639a39dd4b79e01a025ad2d5 +Author: Colin Walters +AuthorDate: Wed Aug 22 14:48:41 2012 -0400 +Commit: Colin Walters +CommitDate: Wed Aug 22 14:48:41 2012 -0400 + + Fix regression when TMPDIR/TMP are unset + + We should just be returning /tmp as a default, not calling g_getenv + ("/tmp") which makes no sense. + + https://bugzilla.gnome.org/show_bug.cgi?id=672329 + + glib/gutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ad20e074c4aa6492c5334870515f48c3a23e051c +Author: Kjartan Maraas +AuthorDate: Wed Aug 22 10:29:16 2012 +0200 +Commit: Kjartan Maraas +CommitDate: Wed Aug 22 10:29:16 2012 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 225 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 116 insertions(+), 109 deletions(-) + +commit e77f3ea0d8194e421fc7dd18032622f8b8a85c2e +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Wed Aug 22 09:15:00 2012 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Wed Aug 22 09:15:00 2012 +0700 + + Updated Vietnamese translation + + po/vi.po | 90 + ++++++++++++++++++++++++++-------------------------------------- + 1 file changed, 37 insertions(+), 53 deletions(-) + +commit eab38232de82ae19cc3c12a67861e0f1d82191ca +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Wed Aug 22 08:51:44 2012 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Wed Aug 22 08:51:44 2012 +0700 + + po/vi: imported from Damned Lies + + po/vi.po | 952 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 543 insertions(+), 409 deletions(-) + +commit 4a89e2ee7d7a46a52272a6b4197cb3af998d0a49 +Author: Duarte Loreto +AuthorDate: Wed Aug 22 00:54:09 2012 +0100 +Commit: Duarte Loreto +CommitDate: Wed Aug 22 00:54:09 2012 +0100 + + Updated Portuguese translation + + po/pt.po | 1260 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 715 insertions(+), 545 deletions(-) + +commit 221bbd8d76670d00f7b574ac77ca49ef9a9fb4dd +Author: Ryan Lortie +AuthorDate: Tue Aug 21 16:32:17 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue Aug 21 16:32:17 2012 -0400 + + *bump* + + thanks rico :) + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a3655be2111ee38839fe2a1fd001923d1d4ad7be +Author: Dieter Verfaillie +AuthorDate: Tue Aug 21 21:10:16 2012 +0200 +Commit: Dieter Verfaillie +CommitDate: Tue Aug 21 21:15:45 2012 +0200 + + win32: fix tests/sources.c + + "make check" was failing on sys/resource.h not being available on + win32. Seeing that this test just spews some numbers on stdout + whithout really testing anything we can safely replace them with + similar enough numbers by relying on g_get_monotonic_time (). + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=682386 + + tests/sources.c | 78 + +++++++++++++++++++++++++-------------------------------- + 1 file changed, 34 insertions(+), 44 deletions(-) + +commit 7518f7a674723ded4cbb32d780c594c5d515af70 +Author: Stef Walter +AuthorDate: Tue Aug 21 13:26:27 2012 +0200 +Commit: Stef Walter +CommitDate: Tue Aug 21 13:30:02 2012 +0200 + + Revert "gtlscertificate: Add certificate-bytes and private-key-bytes + props" + + * In order to add contstruct properties to an abstract base + calls, and retain ABI stability, the base class must add a + default implementation of those properties. + * We cannot add a default implementation of certificate-bytes + or private-key-bytes since certificate and private-key properties + are writable on construct-only. + + This reverts commit 541c985869fe9f2c0a858c0a91b4eb60f99d19f0. + + https://bugzilla.gnome.org/show_bug.cgi?id=682081 + + gio/gdummytlsbackend.c | 4 --- + gio/gtlscertificate.c | 59 + +++++++++------------------------------------ + gio/tests/gtesttlsbackend.c | 6 ----- + 3 files changed, 11 insertions(+), 58 deletions(-) + +commit a8c784df58b7af490d0b08e74bd6f1085da692df +Author: Stef Walter +AuthorDate: Fri Aug 17 10:55:10 2012 +0200 +Commit: Stef Walter +CommitDate: Tue Aug 21 13:21:26 2012 +0200 + + gdbus: Fix double free and use after free of object path + + * This occurs when the 'g-object-path' property is read + on a GDBusObjectSkeleton + + https://bugzilla.gnome.org/show_bug.cgi?id=682075 + + gio/gdbusobjectskeleton.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2222b657ded5b0c59999f63ff74534726235d7eb +Author: Chao-Hsiung Liao +AuthorDate: Tue Aug 21 19:16:27 2012 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Tue Aug 21 19:16:27 2012 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 81 + +++++++++++++++++++++++++++++-------------------------------- + po/zh_TW.po | 81 + +++++++++++++++++++++++++++++-------------------------------- + 2 files changed, 78 insertions(+), 84 deletions(-) + +commit 0d8a81b722e18092062f83b7fd8c0b3a5f4d613a +Author: Cosimo Cecchi +AuthorDate: Mon Aug 20 19:46:33 2012 +0200 +Commit: Cosimo Cecchi +CommitDate: Tue Aug 21 10:55:28 2012 +0200 + + mount-op: use gint64 instead of guint64 for time_left and bytes_left + + Since those can be -1, they need to be signed. + + https://bugzilla.gnome.org/show_bug.cgi?id=682284 + + gio/gmountoperation.c | 9 +++++---- + gio/gmountoperation.h | 4 ++-- + 2 files changed, 7 insertions(+), 6 deletions(-) + +commit ac8c13d25c86e62f04bbfb7ac21fc9fb6eb02337 +Author: Andika Triwidada +AuthorDate: Tue Aug 21 13:53:46 2012 +0700 +Commit: Andika Triwidada +CommitDate: Tue Aug 21 13:53:46 2012 +0700 + + Updated Indonesian translation + + po/id.po | 90 + +++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 46 insertions(+), 44 deletions(-) + +commit ed40bf6715763045457cd6123b3882222c818cde +Author: Ryan Lortie +AuthorDate: Mon Aug 20 18:32:25 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 20 18:36:51 2012 -0400 + + NEWS, versions, etc. + + NEWS | 58 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 59 insertions(+), 1 deletion(-) + +commit 59394b3e1e3b3907b4dc18de4067e5476b4c1649 +Author: Ryan Lortie +AuthorDate: Mon Aug 20 18:32:46 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 20 18:34:13 2012 -0400 + + Revert the GMarkup attribute collect changes + + We need to have some more discussion on this topic. + + This reverts commits 86329ba44fc7662c0bad37955f0ec980a24be495 and + 8d40389d15544bdc612989157f80380badce52f7. + + https://bugzilla.gnome.org/show_bug.cgi?id=665634 + + docs/reference/glib/glib-sections.txt | 1 - + gio/gdbusintrospection.c | 100 ++++++++-------- + glib/glib.symbols | 1 - + glib/gmarkup.c | 218 + +++++++++++----------------------- + glib/gmarkup.h | 9 -- + glib/tests/markup-collect.c | 125 +++++++------------ + 6 files changed, 165 insertions(+), 289 deletions(-) + +commit 850680d751812e3d7fbc4052a8c56ad90e20a3fa +Author: Ryan Lortie +AuthorDate: Mon Aug 20 17:57:13 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 20 17:57:13 2012 -0400 + + gmarkup test: fix use of message expect API + + glib/tests/markup-collect.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 56210220a2c86b099ca7757b67a3ef7fb2366d3d +Author: Dan Winship +AuthorDate: Mon Aug 20 17:26:45 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 20 17:26:45 2012 -0400 + + tests/protocol: update the messages to reflect G_LOG_DOMAIN being + set now + + glib/tests/protocol.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit d06c7a911ea28d9d8019b901f71bd12cfa2dd64d +Author: Ryan Lortie +AuthorDate: Mon Aug 20 16:25:09 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 20 16:26:25 2012 -0400 + + g_test_expect_message: add some g_return_if_fail + + NULL domain is not supported and some might expect this to work, + so make + sure they don't get the wrong idea... + + glib/gmessages.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 07fadc7932713145ec429394c9ebf2a87bd09b75 +Author: Lars Uebernickel +AuthorDate: Mon Aug 20 14:32:14 2012 +0200 +Commit: Ryan Lortie +CommitDate: Mon Aug 20 16:26:25 2012 -0400 + + GMenuModel: add test for the new GMenuItem API + + gio/tests/gmenumodel.c | 68 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 68 insertions(+) + +commit 6798fcdd0f3c1b96c3c0e8561ea81e9a05f2005f +Author: Ryan Lortie +AuthorDate: Sat Aug 18 14:24:46 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 20 16:26:25 2012 -0400 + + GMenuItem: add constructor to copy from model + + Add g_menu_item_new_from_model() for constructing a GMenuItem that + is a + copy of a menu item that's in a GMenuModel. + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 1 + + gio/gmenu.c | 87 + +++++++++++++++++++++++++++++++++++++ + gio/gmenu.h | 4 ++ + 4 files changed, 93 insertions(+) + +commit 99478dd893fab44f3672cbacce3c87b6dec3bb58 +Author: Ryan Lortie +AuthorDate: Sat Aug 18 14:20:59 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 20 16:26:25 2012 -0400 + + GMenuItem: add getter APIs + + GMenuItem has been write-only up to this point. Add some APIs for + reading back values as well. + + docs/reference/gio/gio-sections.txt | 3 + + gio/gio.symbols | 3 + + gio/gmenu.c | 118 + ++++++++++++++++++++++++++++++++++++ + gio/gmenu.h | 13 ++++ + 4 files changed, 137 insertions(+) + +commit ad79b0f8efdb72e9c4b337dffa62521e7fa2a89a +Author: Ryan Lortie +AuthorDate: Sat Aug 18 14:14:21 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 20 16:26:25 2012 -0400 + + GMenuModel: remove a type safety bug + + There was a /* XXX */ in the code here to do proper typechecking + of the + GVariant in the menu model when using + g_menu_model_get_item_attribute(). + We have g_variant_check_format_string() now, so use it. + + gio/gmenumodel.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +commit 34653169e5653b95d61c461f088e6016f042d08a +Author: Ryan Lortie +AuthorDate: Sat Aug 18 14:12:55 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 20 16:26:25 2012 -0400 + + GVariant: add g_variant_check_format_string() + + For some time now people have been asking for a way to check for type + compatibility between GVariant instances and format strings. + There are + several APIs inside of GLib itself that would benefit from this. + + This patch introduces a way to do that. + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gvariant.c | 104 + ++++++++++++++++++++++++++++++++++ + glib/gvariant.h | 4 +- + glib/tests/gvariant.c | 54 ++++++++++++++++++ + 5 files changed, 163 insertions(+), 1 deletion(-) + +commit 6a6b64ef4d9f2985eaf1cb727398019359b4b4f4 +Author: Aurimas Černius +AuthorDate: Mon Aug 20 23:10:25 2012 +0300 +Commit: Aurimas Černius +CommitDate: Mon Aug 20 23:10:25 2012 +0300 + + Updated Lithuanian translation + + po/lt.po | 1694 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 847 insertions(+), 847 deletions(-) + +commit cc24dac3c8edbe2068ba15522bb5d937602082dc +Author: Dan Winship +AuthorDate: Mon Jul 30 16:38:30 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 20 13:54:52 2012 -0400 + + glib/tests: use g_test_expect_message() + + Replace some tests that used to use g_test_trap_fork() with + g_test_expect_message() instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=679556 + + glib/tests/Makefile.am | 1 + + glib/tests/error.c | 45 ++++++------ + glib/tests/gvariant.c | 56 ++++++++------- + glib/tests/mainloop.c | 11 ++- + glib/tests/markup-collect.c | 20 +++--- + glib/tests/strfuncs.c | 163 + ++++++++++++++++++++++---------------------- + 6 files changed, 159 insertions(+), 137 deletions(-) + +commit 25ac137c0a47ccc5214dabeaa41da18dac2b0cee +Author: Dan Winship +AuthorDate: Mon Jul 30 16:05:08 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 20 13:54:52 2012 -0400 + + gtestutils: add g_text_expect_message() + + Add g_test_expect_message() and g_test_assert_expected_messages(), to + allow tests of warnings, error messages, return-if-fails, etc. + + https://bugzilla.gnome.org/show_bug.cgi?id=679556 + + docs/reference/glib/glib-sections.txt | 4 + + glib/glib.symbols | 2 + + glib/gmessages.c | 466 + +++++++++++++++++++++------------- + glib/gtestutils.h | 10 + + glib/tests/testing.c | 86 +++++++ + 5 files changed, 397 insertions(+), 171 deletions(-) + +commit 78a8aecbb339f620e87711389f56308c219d443f +Author: Dan Winship +AuthorDate: Mon Jul 30 15:32:31 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 20 13:49:06 2012 -0400 + + g_logv: only expand the message once + + Hoist the g_strdup_printf()'ing out of the loop, since the message is + the same for every handler that gets called. + + https://bugzilla.gnome.org/show_bug.cgi?id=679556 + + glib/gmessages.c | 60 + +++++++++++++++++++++++--------------------------------- + 1 file changed, 24 insertions(+), 36 deletions(-) + +commit f78931c4abf217fce0eca890da411c1c1c983d45 +Author: Dan Winship +AuthorDate: Wed Aug 1 09:49:10 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 20 13:49:06 2012 -0400 + + glib/tests/testing, logging: don't use g_test_undefined() + + We are verifying the behavior of the test/logging functions here; this + is not undefined behavior. + + https://bugzilla.gnome.org/show_bug.cgi?id=679556 + + glib/tests/logging.c | 54 + ++++++++++++++++++++-------------------------------- + glib/tests/testing.c | 32 ++++++++++--------------------- + 2 files changed, 31 insertions(+), 55 deletions(-) + +commit d9f6314f57cad9940938165421c1efc09636147b +Author: Marc-André Lureau +AuthorDate: Tue Jul 3 02:04:08 2012 +0200 +Commit: Marc-André Lureau +CommitDate: Mon Aug 20 17:10:31 2012 +0200 + + win32: add pipe-io-cancel-test + + Test that win32 streams can be cancelled. + It can even be tested with wine on Linux! + + https://bugzilla.gnome.org/show_bug.cgi?id=679288 + + gio/tests/win32-streams.c | 56 + +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 56 insertions(+) + +commit b9b2cf6a666af907d775a871d76b5b6871b4a6bd +Author: Marc-André Lureau +AuthorDate: Wed Aug 8 01:02:40 2012 +0200 +Commit: Marc-André Lureau +CommitDate: Mon Aug 20 17:10:31 2012 +0200 + + win32: add pipe-io-concurrent + + Implement test case suggested by Ryan Lortie on bug: + https://bugzilla.gnome.org/show_bug.cgi?id=679288 + + "There is a potential race here that's really unlikely to happen, but + here we go: We are trying to read from the same socket in two threads. + Some data comes. That causes the poll() in both threads (above) to + finish running. Then the cancellable is checked above. We now find + ourselves here. Only one thread will read the data. The other will + block on this function. Then the user may cancel the cancellable while + we are blocked here, but we will stay blocked...." + + gio/tests/win32-streams.c | 98 + +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 98 insertions(+) + +commit 1c1ba8b5122295651400eed3f3fb3b9f69f0ac47 +Author: Marc-André Lureau +AuthorDate: Mon Aug 20 15:47:15 2012 +0200 +Commit: Marc-André Lureau +CommitDate: Mon Aug 20 17:10:31 2012 +0200 + + win32: add pipe-io-overlap-test + + gio/tests/win32-streams.c | 92 + +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 92 insertions(+) + +commit b9d7b80897d79cb43c4a795c7d9d3d9a24e140cc +Author: Marc-André Lureau +AuthorDate: Fri Jul 6 00:46:32 2012 +0200 +Commit: Marc-André Lureau +CommitDate: Mon Aug 20 17:10:31 2012 +0200 + + win32: make gio stream cancellable + + v2: + - fix cancellation of concurrent readers + - replace g_assert() usage with g_warn_if_fail() + v3: + - fix indentation + - fix loop code to not leak (silly me) + + https://bugzilla.gnome.org/show_bug.cgi?id=679288 + + gio/gasynchelper.c | 29 +++++++++++++++++++++++++---- + 1 file changed, 25 insertions(+), 4 deletions(-) + +commit 4b5d762d5d73af90de49801ecc1da52d4cd86d6f +Author: Marc-André Lureau +AuthorDate: Wed Aug 8 01:08:15 2012 +0200 +Commit: Marc-André Lureau +CommitDate: Mon Aug 20 17:10:31 2012 +0200 + + win32: handle ERROR_MORE_DATA + + If a named pipe is being read in message mode and the next message is + longer than the nNumberOfBytesToRead parameter specifies, ReadFile + returns FALSE and GetLastError returns ERROR_MORE_DATA. + + Since the API doesn't allow to return both a GError and the number of + bytes read so far, it makes more sense to return nread, and let the + client call GetLastError() himself to check if ERROR_MORE_DATA. + + The current alternative loses the nread information. + + https://bugzilla.gnome.org/show_bug.cgi?id=679288 + + gio/gwin32inputstream.c | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +commit 23d80a04da43c08f4ea626283607a7546d7a56db +Author: Marc-André Lureau +AuthorDate: Mon Jul 2 21:45:41 2012 +0200 +Commit: Marc-André Lureau +CommitDate: Mon Aug 20 17:10:31 2012 +0200 + + win32: use overlapped events for streams + + Any file handle created with FLAG_OVERLAPPED must have + ReadFile()/WriteFile() called with an OVERLAPPED structure. + Failing to do so will give unspecified results, invalid read/write or + corruption. + + Without FLAG_OVERLAPPED, it is not possible to read and write + concurrently, even with two seperate threads, created by 2 input and + output gio streams. Also, only with FLAG_OVERLAPPED may an IO + operation be asynchronous and thus be cancellable. + + We may want to call ReOpenFile() to make sure the FLAG is set, but + this API is only available since Vista+. + + According to MSDN doc, adding the OVERLAPPED argument for IO operation + on handles without FLAG_OVERLAPPED is allowed, and indeed the existing + test still passes. + + v2: + - update GetLastError() after _g_win32_overlap_wait_result () + - split the unrelated ERROR_MORE_DATA handling + + https://bugzilla.gnome.org/show_bug.cgi?id=679288 + + gio/gasynchelper.c | 28 +++++++++++++++++++++++ + gio/gasynchelper.h | 11 +++++++++ + gio/gwin32inputstream.c | 58 + ++++++++++++++++++++++++++++++++++++------------ + gio/gwin32outputstream.c | 53 ++++++++++++++++++++++++++++++++----------- + 4 files changed, 123 insertions(+), 27 deletions(-) + +commit 96a0c589eec8e66f0d879c2a0979df6fd2c23dde +Author: Thomas Hindoe Paaboel Andersen +AuthorDate: Mon Aug 20 16:41:42 2012 +0200 +Commit: Thomas Hindoe Paaboel Andersen +CommitDate: Mon Aug 20 16:41:42 2012 +0200 + + gmem.c: array is only paritally filled by memcpy + + The size of the local_data arrray is too large. It should not be + multiplied by the sizeof guint. + + The memcpy of profile_data to local_data later will only fill a part + of the + array. + + Spotted with the PVS-Studio static analyzer + + https://bugzilla.gnome.org/show_bug.cgi?id=681501 + + glib/gmem.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 248cc2c8858a2c60b9aaaa7706ef3a7f5bce84cc +Author: Daniel Mustieles +AuthorDate: Mon Aug 20 14:15:39 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Mon Aug 20 14:15:39 2012 +0200 + + Updated Spanish translation + + po/es.po | 348 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 190 insertions(+), 158 deletions(-) + +commit cbf346ce53887e7e40f38c0945f94ff672fa114e +Author: Matthias Clasen +AuthorDate: Sun Aug 19 02:27:04 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 19 02:27:04 2012 -0400 + + Remove some more 'the the' + + gio/tests/gdbus-test-codegen.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit efd822bb07c50e68d3cbe4c7f7a3d816a0ab7808 +Author: Matthias Clasen +AuthorDate: Sun Aug 19 02:26:42 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 19 02:26:42 2012 -0400 + + Improve test coverage for GSocketConnection + + gio/tests/proxy-test.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit cc5d7ccdba6e46548a1e895db1d8dab3409278b8 +Author: Matthias Clasen +AuthorDate: Sun Aug 19 02:26:05 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 19 02:26:05 2012 -0400 + + Improve test coverage for unix socket addresses + + gio/tests/unix-fd.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 63eaeb223b9b773e055acc1a8fc7637e4a676b82 +Author: Matthias Clasen +AuthorDate: Sun Aug 19 02:25:37 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 19 02:25:37 2012 -0400 + + Improve test coverage for resources + + gio/tests/resources.c | 61 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 61 insertions(+) + +commit beea8c5c847a7bf46ae77d834ed7cc3fb6822c5c +Author: Matthias Clasen +AuthorDate: Sun Aug 19 02:25:21 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 19 02:25:21 2012 -0400 + + Improve test coverage for filter streams + + gio/tests/filter-streams.c | 22 +++++++++++++++++++++- + 1 file changed, 21 insertions(+), 1 deletion(-) + +commit b22f4a2dd2c05038f45485b850f3ba04bf28afb9 +Author: Matthias Clasen +AuthorDate: Sun Aug 19 02:25:02 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 19 02:25:02 2012 -0400 + + Improve test coverage for unix streams + + gio/tests/unix-streams.c | 38 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 38 insertions(+) + +commit 3afec2b87282b25233add6bcdfb9af4657f40ddd +Author: Matthias Clasen +AuthorDate: Sun Aug 19 02:24:44 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 19 02:24:44 2012 -0400 + + Improve test coverage for pollable streams + + gio/tests/pollable.c | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +commit eeb4951c47d6a869d50590a9a81afbb99f63b5f3 +Author: Matthias Clasen +AuthorDate: Sun Aug 19 02:24:04 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 19 02:24:04 2012 -0400 + + Improve GSettings test coverage + + gio/tests/gsettings.c | 81 + +++++++++++++++++++++++++++++++++++++- + gio/tests/org.gtk.test.gschema.xml | 3 ++ + 2 files changed, 83 insertions(+), 1 deletion(-) + +commit f89e9deaec3bf279eac5073a30d6d3d7b2a1568b +Author: Matthias Clasen +AuthorDate: Sun Aug 19 02:23:32 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 19 02:23:32 2012 -0400 + + Improve GAppInfo test coverage + + gio/tests/appinfo-test.desktop | 8 ++++-- + gio/tests/appinfo.c | 60 + +++++++++++++++++++++++++++++++++++++++++- + gio/tests/mimeapps.c | 21 ++++++++++++--- + 3 files changed, 83 insertions(+), 6 deletions(-) + +commit 35bf77445bcce900fa6007290ac8226107763b94 +Author: Matthias Clasen +AuthorDate: Sun Aug 19 02:22:59 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 19 02:22:59 2012 -0400 + + Add some GInetAddress tests + + gio/tests/Makefile.am | 4 + + gio/tests/inet-address.c | 365 + +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 369 insertions(+) + +commit 867ad1cebc002d881e9e113277e8ea2e03cdaaf1 +Author: Matthias Clasen +AuthorDate: Sun Aug 19 02:22:33 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 19 02:22:33 2012 -0400 + + Add some GPermission tests + + gio/tests/Makefile.am | 4 ++ + gio/tests/permission.c | 106 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 110 insertions(+) + +commit 2687d921e15e4aead3af4867fcd6220088085d7a +Author: Matthias Clasen +AuthorDate: Sun Aug 19 02:21:02 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 19 02:21:02 2012 -0400 + + Cosmetic change + + gtk-doc doesn't need anymore to recognize plural + forms of links. + + gio/gpollableinputstream.c | 2 +- + gio/gpollableoutputstream.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 4dbcd27eeea8181810c8ddefd116ce474bea8496 +Author: Matthias Clasen +AuthorDate: Sun Aug 19 02:19:27 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 19 02:19:27 2012 -0400 + + Make GPermission more forgiving + + It is not great if calling g_permission_acquire on a simple + permission object just segfaults. This commit arranges for + this to return a G_IO_ERROR_NOT_SUPPORTED error. + + gio/gpermission.c | 53 + ++++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 50 insertions(+), 3 deletions(-) + +commit 4a8740d0d23077cf9be99dfd3cf583ba33595279 +Author: Matthias Clasen +AuthorDate: Sat Aug 18 23:17:47 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 18 23:17:47 2012 -0400 + + It is 'registered', not 'registred' + + gio/gresource.c | 12 ++++++------ + gobject/gparam.c | 2 +- + 2 files changed, 7 insertions(+), 7 deletions(-) + +commit e27367f341e56bd951ea4b6fb42ef23cd0598c65 +Author: Matthias Clasen +AuthorDate: Sat Aug 18 23:15:58 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 18 23:15:58 2012 -0400 + + Exterminate 'the the' + + gio/gdbusprivate.c | 2 +- + gio/gioenums.h | 2 +- + gio/gproxyaddress.c | 2 +- + gio/gzlibcompressor.c | 2 +- + glib/gmain.c | 14 +++++++------- + glib/gmarkup.c | 2 +- + glib/gspawn.h | 2 +- + gobject/gvalue.h | 6 +++--- + 8 files changed, 16 insertions(+), 16 deletions(-) + +commit 96ed9e41f436412dbc0628cf45ecd460e9823089 +Author: Matthias Clasen +AuthorDate: Sat Aug 18 14:42:10 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 18 14:42:10 2012 -0400 + + Improve utils test coverage + + glib/tests/utils.c | 26 +++++++++++++++++++++++++- + 1 file changed, 25 insertions(+), 1 deletion(-) + +commit cb8f88ca9fc87a65c7df69164e0ea8a905fc224b +Author: Matthias Clasen +AuthorDate: Sat Aug 18 14:41:48 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 18 14:41:48 2012 -0400 + + Improve uri test coverage + + glib/tests/uri.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 2c338e21d6f86bad96283d5388991dc4c4b34361 +Author: Matthias Clasen +AuthorDate: Sat Aug 18 14:41:35 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 18 14:41:35 2012 -0400 + + Improve strfuncs tests coverage + + glib/tests/strfuncs.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 58c7747c50c98331769bc4d68f341652c42063c3 +Author: Matthias Clasen +AuthorDate: Sat Aug 18 14:41:23 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 18 14:41:23 2012 -0400 + + Improve GRegex test coverage + + glib/tests/regex.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +commit a7e10fa0b6c1772b8be49f17bb3e1eeb3477c26c +Author: Matthias Clasen +AuthorDate: Sat Aug 18 14:41:07 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 18 14:41:07 2012 -0400 + + Improve GPrivate test coverage + + glib/tests/private.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit aad40b89fe0539eede3a66e2fe2fc8b9c8f5c420 +Author: Matthias Clasen +AuthorDate: Sat Aug 18 14:40:33 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 18 14:40:33 2012 -0400 + + Improve file utils test coverage + + glib/tests/fileutils.c | 149 + ++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 148 insertions(+), 1 deletion(-) + +commit 6e1d205ad30e9a3c031d0660f909dbed8665dee4 +Author: Matthias Clasen +AuthorDate: Sat Aug 18 14:40:15 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 18 14:40:15 2012 -0400 + + Improve GError test coverage + + glib/tests/error.c | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +commit e181234fe5bbf80be3973d4803bce68887a771c6 +Author: Matthias Clasen +AuthorDate: Sat Aug 18 14:39:52 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 18 14:39:52 2012 -0400 + + Improve atomic ops test coverage + + glib/tests/atomic.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 06d837b6a3ac59f8e997d9f745136d48b85ecb38 +Author: Matthias Clasen +AuthorDate: Sat Aug 18 14:39:28 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 18 14:39:28 2012 -0400 + + Improve array test coverage + + glib/tests/array-test.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +commit 373dcaea567281b977e76d812a73d2ee201d2745 +Author: Matthias Clasen +AuthorDate: Sat Aug 18 14:38:53 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 18 14:38:53 2012 -0400 + + Improve threadpool test coverage + + tests/threadpool-test.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit a946892b1e80aabcf33eb9783ce1cacaf6162e97 +Author: Fran Diéguez +AuthorDate: Fri Aug 17 23:17:51 2012 +0200 +Commit: Fran Diéguez +CommitDate: Fri Aug 17 23:17:51 2012 +0200 + + Updated Galician translations + + po/gl.po | 550 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 276 insertions(+), 274 deletions(-) + +commit 2360d04e50d744a6db42a0a24418ecd272b45a8e +Author: Owen W. Taylor +AuthorDate: Thu Aug 16 22:06:45 2012 -0400 +Commit: Owen W. Taylor +CommitDate: Fri Aug 17 13:41:34 2012 -0400 + + Fix problems with CLEANFILES and automake-1.11.1 + + Running with automake-1.11.1, a couple fixes are needed + for CLEANFILES when gtk-doc is not installed. + + (Found with Amazon Linux AMI release 2012.03) + + https://bugzilla.gnome.org/show_bug.cgi?id=682067 + + autogen.sh | 5 ++++- + glib/Makefile.am | 2 +- + 2 files changed, 5 insertions(+), 2 deletions(-) + +commit fdcdcf4f2f7a382d8b8d00842524bbd9aa82d3e0 +Author: Krishnababu Krothapalli +AuthorDate: Fri Aug 17 19:43:40 2012 +0530 +Commit: Krishnababu Krothapalli +CommitDate: Fri Aug 17 19:43:40 2012 +0530 + + Updated Telugu Translations + + po/te.po | 104 + +++++++++++++++++++++++++++++---------------------------------- + 1 file changed, 47 insertions(+), 57 deletions(-) + +commit a53ccea814fa052a7d2aaa543cf2483b4f455cb4 +Author: Krishnababu Krothapalli +AuthorDate: Fri Aug 17 19:22:00 2012 +0530 +Commit: Krishnababu Krothapalli +CommitDate: Fri Aug 17 19:22:00 2012 +0530 + + Updated Telugu Translations + + po/te.po | 1077 + ++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 628 insertions(+), 449 deletions(-) + +commit 2954f70d39198e67ff6a364a4f5c275381af1a75 +Author: Chun-wei Fan +AuthorDate: Fri Aug 17 19:22:43 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Aug 17 19:22:43 2012 +0800 + + Fix build on Visual C++ + + -glib/gmarkup.c: Use G_VA_COPY() instead of va_copy() as va_copy() + may not + be universally available. + -gio/gtestdbus.c: Include io.h on Windows for close() + + gio/gtestdbus.c | 3 +++ + glib/gmarkup.c | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) + +commit 69124b2dc4587f9c978648e38c548c50352ef930 +Author: Мирослав Николић + +AuthorDate: Fri Aug 17 12:59:44 2012 +0200 +Commit: Мирослав Николић + +CommitDate: Fri Aug 17 12:59:44 2012 +0200 + + Updated Serbian translation + + po/sr.po | 253 + +++++++++++++++++++++++++++++++-------------------------- + po/sr@latin.po | 253 + +++++++++++++++++++++++++++++++-------------------------- + 2 files changed, 278 insertions(+), 228 deletions(-) + +commit f116437c7e73035a72ce45cb47c4518df604711a +Author: Nilamdyuti Goswami +AuthorDate: Fri Aug 17 14:22:32 2012 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Fri Aug 17 14:23:19 2012 +0530 + + Assamese translation updated + + po/as.po | 318 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 171 insertions(+), 147 deletions(-) + +commit 56e9f896c691cb99ebd4f4d20a507760c0f445fa +Author: Sandeep Sheshrao Shedmake +AuthorDate: Fri Aug 17 12:24:15 2012 +0530 +Commit: Sandeep Sheshrao Shedmake +CommitDate: Fri Aug 17 12:24:15 2012 +0530 + + Updated Marathi Translations + + po/mr.po | 1372 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 780 insertions(+), 592 deletions(-) + +commit 86a4fd6fa98de29f7ee05ba655a00e4c42f11756 +Author: David King +AuthorDate: Fri Feb 17 11:15:08 2012 +0000 +Commit: David King +CommitDate: Fri Aug 17 07:16:50 2012 +0100 + + docs: Describe GCompletion item memory management + + https://bugzilla.gnome.org/show_bug.cgi?id=600751 + + glib/deprecated/gcompletion.c | 20 +++++++++++++------- + 1 file changed, 13 insertions(+), 7 deletions(-) + +commit b13a79aeb45e0630482202372e136ea264a24e5f +Author: Matthias Clasen +AuthorDate: Fri Aug 17 01:14:51 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 17 01:15:08 2012 -0400 + + Adapt schema tests to changed error messages + + gio/tests/gschema-compile.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 056d39c9f7e058397beaed7b4f5637857510b4e2 +Author: Colin Walters +AuthorDate: Tue May 29 18:54:58 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 17 00:48:40 2012 -0400 + + GMappedFile: Add g_mapped_file_get_bytes() + + This is yet another API that has a data/length/refcount combination + that one might often want to turn into a GBytes. + + https://bugzilla.gnome.org/show_bug.cgi?id=677065 + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gmappedfile.c | 24 ++++++++++++++++++++++++ + glib/gmappedfile.h | 2 ++ + glib/tests/mappedfile.c | 19 +++++++++++++++++++ + 5 files changed, 47 insertions(+) + +commit b0d8498ee31ab9e3a0ad4c747d1816dd6d4758f5 +Author: Matthias Clasen +AuthorDate: Fri Aug 17 00:27:10 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 17 00:27:10 2012 -0400 + + GDateTime: pack the struct better + + Makes a difference in 32bit. + + glib/gdatetime.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 86329ba44fc7662c0bad37955f0ec980a24be495 +Author: Matthias Clasen +AuthorDate: Thu Aug 16 23:41:19 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 23:41:19 2012 -0400 + + gdbus: Use g_markup_collect_known_attributes() in GDBus introspection + + In order to be able to cope with the introspection XML + from the Telepathy specification, which uses attributes + like tp:type and tp:name-for-bindings, we need to ignore + unknown attributes when parsing. + Closes: https://bugzilla.gnome.org/show_bug.cgi?id=665634 + + gio/gdbusintrospection.c | 100 + ++++++++++++++++++++++------------------------- + 1 file changed, 47 insertions(+), 53 deletions(-) + +commit 8d40389d15544bdc612989157f80380badce52f7 +Author: Matthias Clasen +AuthorDate: Thu Aug 16 23:40:08 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 23:40:08 2012 -0400 + + gmarkup: Add g_markup_collect_known_attributes() + + Add a variant of g_markup_collect_attributes() which will + ignore unknown attributes (such as those from different XML + namespaces) when parsing markup, rather than returning + G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE as g_markup_collect_attributes() + does. + + Patch by Philip Withnall, + https://bugzilla.gnome.org/show_bug.cgi?id=665634 + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gmarkup.c | 218 + +++++++++++++++++++++++----------- + glib/gmarkup.h | 9 ++ + glib/tests/markup-collect.c | 125 ++++++++++++------- + 5 files changed, 242 insertions(+), 112 deletions(-) + +commit 21aff13d22257ae786bbf39bd68f24f448205bfc +Author: Matthias Clasen +AuthorDate: Thu Aug 16 23:23:16 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 23:23:16 2012 -0400 + + Fix 'make report' + + Turns out this doesn't work unless every Makefile.am includes + Makefile.decl. + + gio/gdbus-2.0/codegen/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 6bee6dbce53310935dce7cb1de73e0b0be36f988 +Author: Matthias Clasen +AuthorDate: Thu Aug 16 23:02:41 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 23:02:41 2012 -0400 + + Miscellaneous string fixes + + Typo and punctuation fixes, and some rewording, based + on a patch by Philip Withnall, bug + https://bugzilla.gnome.org/review?bug=628193 + + gio/gdbusaddress.c | 4 ++-- + gio/gdbusmethodinvocation.c | 4 ++-- + gio/gicon.c | 2 +- + gio/glib-compile-schemas.c | 12 ++++++------ + gio/gsocket.c | 6 +++--- + gio/gsocketclient.c | 4 ++-- + gio/gsocks5proxy.c | 4 ++-- + glib/gregex.c | 2 +- + 8 files changed, 19 insertions(+), 19 deletions(-) + +commit e4dc223e9d1778f21c8267171dd6562ba82634c3 +Author: Matthias Clasen +AuthorDate: Thu Aug 16 22:47:43 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 22:47:43 2012 -0400 + + Make capitalisation of "UNIX" consistent in translatable strings + + Based on a patch by Philip Withnall, bug + https://bugzilla.gnome.org/review?bug=628193 + + gio/gunixsocketaddress.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 191f09b04409202fc88fc88f5e05c16d4cdfa86c +Author: Matthias Clasen +AuthorDate: Thu Aug 16 22:23:20 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 22:23:20 2012 -0400 + + Change "dash" to "hyphen" in translatable strings + + GSchemas use hyphens, not dashes. + Patch by Philip Withnall, bug + https://bugzilla.gnome.org/review?bug=628193 + + gio/glib-compile-schemas.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 4e55bebb7aaaf2bdd635db691ad6524dd9e893f8 +Author: Matthias Clasen +AuthorDate: Thu Aug 16 22:17:46 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 22:17:46 2012 -0400 + + Fix leak in GWinHttpVfs + + Patch by Ole André Vadla Ravnås, bug + https://bugzilla.gnome.org/show_bug.cgi?id=627423 + + gio/win32/gwinhttpvfs.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 6ef1e56479db644cff6717a838a8e63a54ce54da +Author: Matthias Clasen +AuthorDate: Thu Aug 16 22:15:54 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 22:15:54 2012 -0400 + + Fix leak in GFileAttributeInfoList + + Patch by Ole André Vadla Ravnås, bug + https://bugzilla.gnome.org/show_bug.cgi?id=627423 + + gio/gfileattribute.c | 1 + + 1 file changed, 1 insertion(+) + +commit bf3262dd935ecbe72374311447de1f1c70a43fcc +Author: Matthias Clasen +AuthorDate: Thu Aug 16 20:18:37 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 21:33:04 2012 -0400 + + GTest: Improve --help output + + https://bugzilla.gnome.org/show_bug.cgi?id=550433 + + glib/gtester.c | 33 +++++++++++++++--------------- + glib/gtestutils.c | 61 + ++++++++++++++++++++++--------------------------------- + 2 files changed, 41 insertions(+), 53 deletions(-) + +commit 55ca95c2203cb483439aae9b1f282b93f32f621c +Author: David King +AuthorDate: Fri Feb 17 14:42:58 2012 +0000 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 19:17:41 2012 -0400 + + docs: Improve G_GNUC_* documentation + + Mention where the GCC attributes should be placed for functions and + arguments. Add an example for G_GNUC_UNUSED. + + https://bugzilla.gnome.org/show_bug.cgi?id=326931 + + glib/docs.c | 94 + ++++++++++++++++++++++++++++++++++++++++++++++++++----------- + 1 file changed, 77 insertions(+), 17 deletions(-) + +commit 2ccf64ba59cfcc472a658b036b8a919aa081ea7f +Author: Matthias Clasen +AuthorDate: Thu Aug 16 18:44:41 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 18:46:17 2012 -0400 + + Improve glib-genmarshal man page + + Expand the example in glib-genmarshal.1 to include the actual + commandline invocations, and update the generated function + names to match reality. + https://bugzilla.gnome.org/show_bug.cgi?id=637460 + + docs/reference/gobject/glib-genmarshal.xml | 21 ++++++++++++++------- + 1 file changed, 14 insertions(+), 7 deletions(-) + +commit aa50b8aec31df6951070ed9674ab3b14dc6d2759 +Author: Colin Walters +AuthorDate: Thu Aug 16 18:31:02 2012 -0400 +Commit: Colin Walters +CommitDate: Thu Aug 16 18:31:02 2012 -0400 + + build: Fix the --disable-man case + + The manpage listing needs to be inside the conditional. + + docs/reference/gio/Makefile.am | 8 +++++--- + docs/reference/glib/Makefile.am | 8 +++++--- + docs/reference/gobject/Makefile.am | 7 +++++-- + 3 files changed, 15 insertions(+), 8 deletions(-) + +commit d7e1d51fc94b79dfa4243f3b9aa6eafbe169ed6f +Author: Owen W. Taylor +AuthorDate: Tue Aug 14 12:57:43 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 18:08:08 2012 -0400 + + Add tests for g_file_make_directory_with_parents() + + Add tests to catch recent regressions with + g_file_make_directory_with_parents() + + https://bugzilla.gnome.org/show_bug.cgi?id=680823 + + gio/tests/live-g-file.c | 93 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 93 insertions(+) + +commit f899358156a34d1b5258d1fcdeb289e7b2bbf233 +Author: Owen W. Taylor +AuthorDate: Tue Aug 14 11:25:56 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 18:08:06 2012 -0400 + + g_file_make_directory_with_parents: clean up logic + + Simplify logic by only looking at whether we have a GError and + not also using return codes. + + https://bugzilla.gnome.org/show_bug.cgi?id=680823 + + gio/gfile.c | 22 ++++++++++------------ + 1 file changed, 10 insertions(+), 12 deletions(-) + +commit 5291190f46614c9e1491599af345f9c41c74967e +Author: Owen W. Taylor +AuthorDate: Tue Aug 14 11:20:16 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 18:08:05 2012 -0400 + + g_file_make_directory_with_parents(): fix a corner case + + If g_file_get_parent() unexpectedly failed, we could return + FALSE but with no error. + + https://bugzilla.gnome.org/show_bug.cgi?id=680823 + + gio/gfile.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 732470a3594351ffc3d085a755271844c462e9c8 +Author: Owen W. Taylor +AuthorDate: Tue Aug 14 11:00:14 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 18:08:03 2012 -0400 + + g_file_make_directory_with_parents: refix error propagation + + The patch from b0bce4ad triggered segfaults - see: + + http://redmine.yorba.org/issues/5656 + + We were clearing the error before dereferencing it in the next + go-around of the while loop - this wasn't necessary. + + https://bugzilla.gnome.org/show_bug.cgi?id=680823 + + gio/gfile.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +commit b60168a5f5b4bcfa8f8ed175cd18a0cfaea96063 +Author: Matthias Clasen +AuthorDate: Wed Aug 8 10:01:47 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 18:06:11 2012 -0400 + + Remove man page placeholder generation + + I don't see a good reason for this - if man page generation is + disabled, man pages are not produced, and things like 'make dist' + will fail. That is simpler and better. + + https://bugzilla.gnome.org/show_bug.cgi?id=681336 + + docs/reference/gio/Makefile.am | 15 +-------------- + docs/reference/glib/Makefile.am | 15 +-------------- + docs/reference/gobject/Makefile.am | 15 +-------------- + 3 files changed, 3 insertions(+), 42 deletions(-) + +commit 4cd5a63f12357b6ed6314cfed237965dba0aaeae +Author: Matthias Clasen +AuthorDate: Wed Aug 8 09:57:48 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 18:06:08 2012 -0400 + + Clean up man pages on 'clean' + + Follow the automake heuristic that says "if 'make' created it, + 'make clean' should remove it". + + https://bugzilla.gnome.org/show_bug.cgi?id=681336 + + docs/reference/gio/Makefile.am | 2 +- + docs/reference/glib/Makefile.am | 2 +- + docs/reference/gobject/Makefile.am | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit ce531302cd3b562a284da24ef425108d3466a7fb +Author: Matthias Clasen +AuthorDate: Wed Aug 8 09:55:29 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 18:06:05 2012 -0400 + + Make --enable-man and --enable-gtk-doc independent + + Previously, --enable-man --disable-gtk-doc would silently skip + man page generation, because we didn't even desdend into + docs/reference. + Fix this by always going there. + + https://bugzilla.gnome.org/show_bug.cgi?id=681336 + + docs/Makefile.am | 2 -- + 1 file changed, 2 deletions(-) + +commit 317d91d06bc3bcdef91f98a7a75489977aa154e4 +Author: Matthias Clasen +AuthorDate: Thu Aug 16 17:21:03 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 16 17:21:03 2012 -0400 + + Fix an example + + Pointed out by Chandni Verma in + https://bugzilla.gnome.org/show_bug.cgi?id=682025 + + docs/reference/glib/gvariant-varargs.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f8a5fc2e2e548e72526b4d69f1c04a78030e47d4 +Author: Javier Jardón +AuthorDate: Wed Aug 15 02:45:10 2012 +0900 +Commit: Javier Jardón +CommitDate: Wed Aug 15 02:46:16 2012 +0900 + + Revert "Use upstream gettext instead the glib one" + + Commited by mistake + This reverts commit e930e3b3aac2fe4d62996d8033121a40153f2da3. + + autogen.sh | 4 - + configure.ac | 15 ++- + gio/Makefile.am | 1 - + glib/Makefile.am | 1 - + po/Makefile.in.in | 280 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + po/Makevars | 66 ------------- + 6 files changed, 293 insertions(+), 74 deletions(-) + +commit 6b201748b5f71f74af02ba8c01fd4c53750f910a +Author: Sebastian Geiger +AuthorDate: Thu Aug 9 23:01:29 2012 +0200 +Commit: Javier Jardón +CommitDate: Wed Aug 15 02:34:50 2012 +0900 + + compiling.xml: Add note and fix gcc example + + Because of the '--as-needed' default option + for the linker, the linking will fail, if the + file name appears after any of the options or + the pkg-config invocation. + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=681854 + + docs/reference/glib/compiling.xml | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit e930e3b3aac2fe4d62996d8033121a40153f2da3 +Author: Javier Jardón +AuthorDate: Mon May 16 13:23:47 2011 +0100 +Commit: Javier Jardón +CommitDate: Wed Aug 15 01:41:11 2012 +0900 + + Use upstream gettext instead the glib one + + autogen.sh | 4 + + configure.ac | 15 +-- + gio/Makefile.am | 1 + + glib/Makefile.am | 1 + + po/Makefile.in.in | 280 + ------------------------------------------------------ + po/Makevars | 66 +++++++++++++ + 6 files changed, 74 insertions(+), 293 deletions(-) + +commit f92a3525f79ecb53d470c00797b71c12860eb05b +Author: Dirgita +AuthorDate: Mon Aug 13 06:04:31 2012 +0700 +Commit: Andika Triwidada +CommitDate: Mon Aug 13 06:04:31 2012 +0700 + + Updated Indonesian translation + + po/id.po | 6031 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 3358 insertions(+), 2673 deletions(-) + +commit ddfcfa66ae602c11ce9c4bfc426a79d668653278 +Author: Colin Walters +AuthorDate: Tue Aug 7 17:26:43 2012 -0400 +Commit: Colin Walters +CommitDate: Wed Aug 8 10:37:39 2012 -0400 + + build: Switch back to using AS_IF for conditionals + + See https://bugzilla.gnome.org/show_bug.cgi?id=674483 + + https://bugzilla.gnome.org/show_bug.cgi?id=681413 + + configure.ac | 42 +++++++++++++++++++++--------------------- + 1 file changed, 21 insertions(+), 21 deletions(-) + +commit e5ad42c6127e0c4c3c5c6567e137305fbeee4fbc +Author: Chao-Hsiung Liao +AuthorDate: Tue Aug 7 13:36:35 2012 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Tue Aug 7 13:36:35 2012 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 183 + ++++++++++++++++++++++++++++++------------------------------ + po/zh_TW.po | 183 + ++++++++++++++++++++++++++++++------------------------------ + 2 files changed, 180 insertions(+), 186 deletions(-) + +commit 541c985869fe9f2c0a858c0a91b4eb60f99d19f0 +Author: Stef Walter +AuthorDate: Mon Aug 6 18:20:48 2012 +0200 +Commit: Stef Walter +CommitDate: Mon Aug 6 22:23:20 2012 +0200 + + gtlscertificate: Add certificate-bytes and private-key-bytes props + + * These properties contain the same data as certificate and + private-key, but as GBytes + + https://bugzilla.gnome.org/show_bug.cgi?id=681319 + + gio/gdummytlsbackend.c | 4 +++ + gio/gtlscertificate.c | 59 + ++++++++++++++++++++++++++++++++++++--------- + gio/tests/gtesttlsbackend.c | 6 +++++ + 3 files changed, 58 insertions(+), 11 deletions(-) + +commit 69dd29296e2ff691f7d305ad7686d9c2e0d6e158 +Author: Ryan Lortie +AuthorDate: Mon Aug 6 16:20:36 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 6 16:20:36 2012 -0400 + + bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6b43310ef41cde26978c261cf1c0e2715adf732d +Author: Ryan Lortie +AuthorDate: Mon Aug 6 15:56:26 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 6 15:56:26 2012 -0400 + + GLib 2.33.8 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b55a2a2005cd45932bda56810aecbc5ac784fb4d +Author: Matthias Clasen +AuthorDate: Mon Aug 6 12:08:21 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 12:08:21 2012 -0400 + + Don't use GIO in GTestDBus setup + + Using GIO here may cause the gvfs module to be loaded, which + in turn gets onto the session bus to talk to gvfsd - not ideal + if you are trying to control the session bus life cycle. Instead, + just use old-fashioned glib file utils. + + gio/gtestdbus.c | 21 +++++++++------------ + 1 file changed, 9 insertions(+), 12 deletions(-) + +commit 197ebb3be4fe01ac5da536157a9b6951f2871d01 +Author: Matthias Clasen +AuthorDate: Mon Aug 6 12:08:04 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 12:08:04 2012 -0400 + + More updates + + NEWS | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit cc80ae321fdfdcc90596940c8161861d25b20eed +Author: Matthias Clasen +AuthorDate: Mon Aug 6 11:55:59 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 11:55:59 2012 -0400 + + Solaris build fix for GIO + + Solaris/OpenSolaris/OpenIndiana define FIONREAD in sys/filio.h. + This commit adds a configure check for this header, and includes + it conditionally in gio/gsocket.c. + + Patch by Fabian Groffen, bug 675524. + + configure.ac | 2 +- + gio/gsocket.c | 4 ++++ + 2 files changed, 5 insertions(+), 1 deletion(-) + +commit bd883f8dc75f056c2b25e941fb09422dc5786bbe +Author: Dan Winship +AuthorDate: Fri Feb 3 13:03:38 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 11:31:52 2012 -0400 + + gio/tests/g-icon.c: fix some path checks on win32 + + Some of the tests needed to be modified to use G_DIR_SEPARATOR_S + rather than hardcoded "/"s. + + https://bugzilla.gnome.org/show_bug.cgi?id=669331 + + gio/tests/g-icon.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 291853bea3881a7eeb0f2c56946d3a1c0ef38c95 +Author: Dan Winship +AuthorDate: Fri Feb 3 12:42:10 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 11:27:39 2012 -0400 + + gicon: make g_icon_new_for_string() recognize win32 paths + + (but for compatibility, make it still recognize unix paths on win32 + too) + + https://bugzilla.gnome.org/show_bug.cgi?id=669331 + + gio/gicon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 26f1e0938eeb61c7f93b651aa316e33f3b0d6292 +Author: Dan Winship +AuthorDate: Fri Feb 3 11:35:26 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 11:27:38 2012 -0400 + + gio/tests/file: skip the file monitor tests if using GPollFileMonitor + + test_create_delete() assumes that if it creates a file and then + immediately deletes it, that the file monitor will notice this and + record it as a create followed by a delete. But that won't work with + GPollFileMonitor, which will just think nothing changed. So skip the + test in that case. + + https://bugzilla.gnome.org/show_bug.cgi?id=669331 + + gio/tests/file.c | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +commit 2793b39ea3de4fdac5cf154c7a12ac7ba82657d2 +Author: Dan Winship +AuthorDate: Fri Feb 3 11:12:02 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 11:27:37 2012 -0400 + + gio/tests/g-file.c: fix some path checks on win32 + + Some of the tests needed to be modified to use G_DIR_SEPARATOR_S + rather than hardcoded "/"s. + + https://bugzilla.gnome.org/show_bug.cgi?id=669331 + + gio/tests/g-file.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit 5c91af7e41443252857cdcf6fe0f0dabdc0b5250 +Author: Dan Winship +AuthorDate: Fri Feb 3 11:10:50 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 11:27:36 2012 -0400 + + glocalfile: fix g_file_get_parse_name() on win32 + + When getting the parse name for a file: URI on win32, we were not + translating "\" to "/", resulting in incorrect output. + + https://bugzilla.gnome.org/show_bug.cgi?id=669331 + + gio/glocalfile.c | 21 ++++++++++++++++++++- + 1 file changed, 20 insertions(+), 1 deletion(-) + +commit b2ddbd8f556c41f4d076c4cc4788684a9c84e7a2 +Author: Matthias Clasen +AuthorDate: Mon Aug 6 11:03:42 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 11:03:42 2012 -0400 + + Plug a minor memory leak in GDBusObjectProxy + + As pointed out by Patrick Ohly in bug 680505, + GDBusObjectProxy was forgetting to free its object_path. + + gio/gdbusobjectproxy.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit be7095980e90a8d8e76e678dc085423d2717c3bd +Author: David Rothlisberger +AuthorDate: Mon Jul 16 13:12:15 2012 +0100 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 10:26:45 2012 -0400 + + gobject docs: Remove confusing acronym + + In the wikipedia disambiguation page[1] the only entry that even + remotely makes sense in this context is "and so on". Google searches + for "aso memory management" and "aso garbage collection" don't yield + anything relevant. + + [1] http://en.wikipedia.org/wiki/ASO + + https://bugzilla.gnome.org/show_bug.cgi?id=679996 + + docs/reference/gobject/tut_gobject.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bcda26a504c58d5ef5c13032c6c29cf3c56c226e +Author: David Rothlisberger +AuthorDate: Mon Jul 16 10:57:46 2012 +0100 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 10:26:44 2012 -0400 + + gobject docs: Remove incorrect reference to signals docs + + The chapter on signals comes after this chapter, not before (see + "tut_gobject.xml" in docs/reference/gobject/gobject-docs.xml). + + https://bugzilla.gnome.org/show_bug.cgi?id=679996 + + docs/reference/gobject/tut_gobject.xml | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 10474aca34f8adf7258294d678e56525b7570c70 +Author: Brian Koning +AuthorDate: Mon Jul 23 11:04:45 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 10:17:30 2012 -0400 + + Remove extra newline chars in local + g_application_command_line_print/err + + The extra newline chars in the local + implementation of g_application_command_line_print and + g_application_command_line_printerr() cause an unwanted newline + after printed strings. This patch removes the newline chars to make + the functions consistent with their documentation. + + https://bugzilla.gnome.org/show_bug.cgi?id=680459 + + gio/gapplicationcommandline.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 151b198b93764ac69b5c067afe9fbf7c6c4acea4 +Author: Pavel Vasin +AuthorDate: Mon Jul 16 15:57:26 2012 +0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 10:08:13 2012 -0400 + + GDBusActionGroup: hold ref until async init done + + to avoid use-after-free if GDBusActionGroup was finalized + + https://bugzilla.gnome.org/show_bug.cgi?id=679509 + + gio/gdbusactiongroup.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit b2d848e3cb83fb096d6337be701cf834defa56b9 +Author: Pavel Vasin +AuthorDate: Sun Jul 15 14:34:53 2012 +0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 10:08:11 2012 -0400 + + gio/tests/actions: test for bug679509 + + gio/tests/actions.c | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +commit a74749d354a9d5458f664eb67691901e13bfe738 +Author: Matthias Clasen +AuthorDate: Mon Aug 6 08:51:40 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 08:52:58 2012 -0400 + + Deprecated GSlice config API + + This was marked as 'internal debugging' in the headers, and + should have never been made public. As a first step to repair + this, deprecate it. + + https://bugzilla.gnome.org/show_bug.cgi?id=680831 + + glib/gslice.h | 4 ++++ + glib/tests/slice.c | 3 +++ + 2 files changed, 7 insertions(+) + +commit 0b8662635df3e35aacb7d2e7cef517c47869c6ec +Author: Matthias Clasen +AuthorDate: Mon Aug 6 08:49:30 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 6 08:52:58 2012 -0400 + + configure.ac: Use AS_HELP_STRING throughout + + https://bugzilla.gnome.org/show_bug.cgi?id=680831 + + configure.ac | 36 ++++++++++++++++++------------------ + 1 file changed, 18 insertions(+), 18 deletions(-) + +commit 49b35f093034af6ff14df4df2073a6111614c9d0 +Author: Stef Walter +AuthorDate: Fri Aug 3 21:51:08 2012 +0200 +Commit: Stef Walter +CommitDate: Mon Aug 6 10:44:52 2012 +0200 + + gtlscertificate: Don't confuse certificate and public key in docs + + * A certificate sorta acts as a public key, but more specifically + it contains a public key (in its subjectPublicKeyInfo) field. + * Documentation was confusing and could have read like the + certificate and certificate-pem properties were returning the + public key part of the certificate. + + https://bugzilla.gnome.org/show_bug.cgi?id=681158 + + gio/gtlscertificate.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +commit 278fe0c67f1d3a8731356fdda0e0adfb633cd7c4 +Author: Stef Walter +AuthorDate: Tue Jul 31 16:47:45 2012 +0200 +Commit: Stef Walter +CommitDate: Mon Aug 6 10:38:39 2012 +0200 + + gchecksum: Add g_compute_checksum_for_bytes() + + * Add a GBytes based version of g_compute_checksum_for_data() + * Add appropriate tests + + https://bugzilla.gnome.org/show_bug.cgi?id=680912 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gchecksum.c | 30 +++++++++++++++++++++++ + glib/gchecksum.h | 5 ++++ + glib/glib.symbols | 1 + + glib/tests/checksum.c | 45 + +++++++++++++++++++++++++++++++---- + 5 files changed, 78 insertions(+), 4 deletions(-) + +commit dd2ecf7488190d7ffd7912f6bf81da3560ad3976 +Author: Stef Walter +AuthorDate: Fri Aug 3 18:19:36 2012 +0200 +Commit: Stef Walter +CommitDate: Mon Aug 6 10:32:49 2012 +0200 + + checksum: Use functions instead of macros when building tests + + * No need for hard to debug and maintain macros here. + + https://bugzilla.gnome.org/show_bug.cgi?id=681151 + + glib/tests/checksum.c | 65 + +++++++++++++++++++++++++++++---------------------- + 1 file changed, 37 insertions(+), 28 deletions(-) + +commit 0f6a092cc5a1cc82a02b23e9daa15159319f929c +Author: Javier Jardón +AuthorDate: Tue Apr 17 12:59:11 2012 +0100 +Commit: Javier Jardón +CommitDate: Sun Aug 5 22:29:28 2012 +0900 + + Make gtk-doc not a hard dependency of GLib + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=674314 + + autogen.sh | 10 ++++++---- + configure.ac | 7 ++++++- + docs/Makefile.am | 2 ++ + 3 files changed, 14 insertions(+), 5 deletions(-) + +commit 10fc00b38515bc322d5e497d61a50165b04c3c8d +Author: Mark Nauwelaerts +AuthorDate: Wed Apr 25 14:21:06 2012 +0200 +Commit: Tim-Philipp Müller +CommitDate: Sun Aug 5 12:52:38 2012 +0100 + + gclosure: do not copy and leak when generically marshalling return + value + + https://bugzilla.gnome.org/show_bug.cgi?id=674800 + + gobject/gclosure.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 24b9f61ee4b8b7bc755b84398207112c18b4121f +Author: Mark Nauwelaerts +AuthorDate: Thu Jul 19 16:38:59 2012 +0200 +Commit: Tim-Philipp Müller +CommitDate: Sun Aug 5 12:52:33 2012 +0100 + + tests: add check for leaking signal return value + + https://bugzilla.gnome.org/show_bug.cgi?id=674800 + + tests/refcount/Makefile.am | 5 ++++- + tests/refcount/signals.c | 26 ++++++++++++++++++++++++++ + 2 files changed, 30 insertions(+), 1 deletion(-) + +commit 13a1154b4cf664e486df9fa6a76d279b8090c49e +Author: Mark Nauwelaerts +AuthorDate: Thu Jul 19 16:38:06 2012 +0200 +Commit: Tim-Philipp Müller +CommitDate: Sun Aug 5 12:26:03 2012 +0100 + + tests: make refcount signals test slightly valgrind cleaner + + tests/refcount/signals.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit f1a13b895d71fb9523c65591a7ebb7a8bad0a4d9 +Author: Matthias Clasen +AuthorDate: Sat Aug 4 17:49:53 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 4 17:49:53 2012 -0400 + + NEWS updates for 2.33.8 + + NEWS | 33 +++++++++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +commit 08dd0f246a17c5e1fd78ae19c18f52905c47fdbc +Author: Matthias Clasen +AuthorDate: Fri Aug 3 00:36:25 2012 +0200 +Commit: Matthias Clasen +CommitDate: Fri Aug 3 23:36:45 2012 -0400 + + docs: Improve man page consistency + + Make Options sections refsect1 instead of refsect2, and use + uppercase for argument names. Also add a product name, and + shorten some argument names. + + docs/reference/gio/gdbus-codegen.xml | 21 +- + docs/reference/gio/gdbus.xml | 29 ++- + docs/reference/gio/gio-querymodules.xml | 14 +- + docs/reference/gio/glib-compile-resources.xml | 83 ++++--- + docs/reference/gio/glib-compile-schemas.xml | 29 ++- + docs/reference/gio/gresource.xml | 17 +- + docs/reference/gio/gsettings.xml | 17 +- + docs/reference/glib/glib-gettextize.xml | 23 +- + docs/reference/glib/gtester-report.xml | 18 +- + docs/reference/glib/gtester.xml | 33 ++- + docs/reference/gobject/glib-genmarshal.xml | 237 ++++++++++--------- + docs/reference/gobject/glib-mkenums.xml | 315 + +++++++++++++------------- + docs/reference/gobject/gobject-query.xml | 41 ++-- + 13 files changed, 506 insertions(+), 371 deletions(-) + +commit d241978412144650e73e9b635cf1869f8d4da2b9 +Author: Matthias Clasen +AuthorDate: Fri Aug 3 00:33:34 2012 +0200 +Commit: Matthias Clasen +CommitDate: Fri Aug 3 23:36:45 2012 -0400 + + docs: Improve man page generation + + Use $(AM_V_GEN) for generating man pages, and set some parameters + for the XSL stylesheets. Among other things, don't generate AUTHORS + and COPYRIGHT sections. + + docs/reference/gio/Makefile.am | 10 +++++++++- + docs/reference/glib/Makefile.am | 10 +++++++++- + docs/reference/gobject/Makefile.am | 10 +++++++++- + 3 files changed, 27 insertions(+), 3 deletions(-) + +commit 9f9ab640306da52127935bd8eab82a1a8dcaaf89 +Author: Matthias Clasen +AuthorDate: Thu Aug 2 23:52:46 2012 +0200 +Commit: Matthias Clasen +CommitDate: Fri Aug 3 23:36:45 2012 -0400 + + Rework the man page configury + + Default to generate man pages if the required tools and + stylesheets are found. Error out if --enable-man is given + but tools or stylesheets are missing. + + configure.ac | 49 +++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 37 insertions(+), 12 deletions(-) + +commit e2470ec6db5230c183a4879b5f0c687b699614e9 +Author: Matthias Clasen +AuthorDate: Thu Aug 2 23:51:52 2012 +0200 +Commit: Matthias Clasen +CommitDate: Fri Aug 3 23:36:45 2012 -0400 + + docs: Don't put links in section titles + + gio/gsettingsschema.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 6ddf40f301439c01bec24344694074bd9ba5f016 +Author: Stef Walter +AuthorDate: Wed Aug 1 10:41:02 2012 +0200 +Commit: Stef Walter +CommitDate: Fri Aug 3 18:58:30 2012 +0200 + + gtlscertificate: Add g_tls_certificate_is_same() function + + * Certificate equality in PKIX in general is equality between + the DER encoding of the certificates. + + https://bugzilla.gnome.org/show_bug.cgi?id=681116 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 1 + + gio/gtlscertificate.c | 37 + +++++++++++++++++++++++++++++++++++++ + gio/gtlscertificate.h | 4 ++++ + 4 files changed, 43 insertions(+) + +commit b913b0c29ed7269a1684ec15f27b59a8ad2ef5e4 +Author: Stef Walter +AuthorDate: Wed Aug 1 14:22:53 2012 +0200 +Commit: Stef Walter +CommitDate: Fri Aug 3 17:39:10 2012 +0200 + + gtlsdatabase: Don't complain if no callbacks for async functions + + https://bugzilla.gnome.org/show_bug.cgi?id=681118 + + gio/gtlsdatabase.c | 7 ------- + 1 file changed, 7 deletions(-) + +commit aaf6ac8321065b9a81f96070d629bd72b589dfde +Author: Sweta Kothari +AuthorDate: Fri Aug 3 13:35:05 2012 +0530 +Commit: Sweta Kothari +CommitDate: Fri Aug 3 13:35:05 2012 +0530 + + Updated gujarati file + + po/gu.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c0b3a656c78c1f14c146464aa50697990db8b88b +Author: Sweta Kothari +AuthorDate: Fri Aug 3 13:32:12 2012 +0530 +Commit: Sweta Kothari +CommitDate: Fri Aug 3 13:32:12 2012 +0530 + + Updated gujarati file + + po/gu.po | 6025 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 3285 insertions(+), 2740 deletions(-) + +commit 800ca21e555e5e9fe1f07a4a8473d6d24ada6301 +Author: David Zeuthen +AuthorDate: Wed Aug 1 11:57:22 2012 -0400 +Commit: David Zeuthen +CommitDate: Wed Aug 1 11:57:22 2012 -0400 + + GDBusError: Fix up G_STATIC_ASSERT guidance + + This was reported in bug 680994. + + https://bugzilla.gnome.org/show_bug.cgi?id=680994 + + Signed-off-by: David Zeuthen + + gio/gdbuserror.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit b3f96373372771744a5ade73b2e897ec32365182 +Author: Dan Winship +AuthorDate: Wed Jul 25 14:41:04 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Jul 31 14:37:56 2012 -0400 + + gthreadpool: set default max_unused_threads and max_idle_time values + + GThreadPool defaulted to 0 for max_unused_threads (meaning thread-pool + threads would exit immediately if there was not already another task + waiting for them), and 0 for max_idle_time (meaning unused threads + would linger forever, though this is only relevant if you changed + max_unused_threads). + + However, GIOScheduler changed the global defaults to 2 and 15*1000, + respectively, arguing that these were more useful defaults. And they + are, so let's use them. + + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + gio/gioscheduler.c | 6 ------ + glib/gthreadpool.c | 9 +++++---- + 2 files changed, 5 insertions(+), 10 deletions(-) + +commit 26056558be4656ee6e891a4fae5d4198de7519cf +Author: Dan Winship +AuthorDate: Mon Jul 30 08:06:57 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Jul 30 12:48:10 2012 -0400 + + gmain: allow g_source_get_context() on destroyed sources + + g_source_get_context() was checking that the source wasn't destroyed + (since a source doesn't hold a ref on its context, and so + source->context might point to garbage in that case). However, it's + useful to be allowed to call g_source_get_context() on a source that + is destroyed-but-currently-running. + + So instead, let g_source_get_context() return the context whenever + it's non-NULL, and clear the source->context of any sources that are + still in a context's sources list when the context is freed. Since + sources are only removed from the list when the source is freed (not + when it is destroyed), this means that now whenever a source has a + non-NULL context pointer, then that pointer is valid. + + This also means that g_source_get_time() will now return-if-fail + rather than crashing if it is called on a source whose context has + been destroyed. + + Add tests to glib/tests/mainloop to verify that g_source_get_context() + and g_source_get_time() work on destroyed sources. + + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + glib/gmain.c | 15 ++++++++++++--- + glib/tests/mainloop.c | 14 ++++++++++++-- + 2 files changed, 24 insertions(+), 5 deletions(-) + +commit 6881e743ee37eff154326ef5e0510651c0a14ac4 +Author: Dan Winship +AuthorDate: Sun Jul 29 13:06:53 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Jul 30 12:48:10 2012 -0400 + + glib/tests/mainloop: test g_source_get_time() + + Verify that + + - g_source_get_time() does not change within a single callback + (even if the real time does) + + - g_source_get_time() does not change between different callbacks in + the same mainloop iteration + + - g_source_get_time() does change between iterations if the real + time did. + + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + glib/tests/mainloop.c | 105 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 105 insertions(+) + +commit b0bce4ad41937dabf7e5c94dcce3caf4e88f3f97 +Author: Owen W. Taylor +AuthorDate: Mon Jul 30 13:33:05 2012 +0200 +Commit: Owen W. Taylor +CommitDate: Mon Jul 30 18:29:26 2012 +0200 + + g_file_make_directory_with_parents: Fix error propagation + + When creating a directory fails for some reason other than + the parent not existing, don't clear the error before we try + to propagate it. + + To reproduce, run 'ostadmin init' on /ostree or otherwise try to + run the function on a directory with a parent directory where the + current user is not allowed to write. + + https://bugzilla.gnome.org/show_bug.cgi?id=680823 + + gio/gfile.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit d7829ced532a5ffba4c56772a7a4b24e3e228651 +Author: Colin Walters +AuthorDate: Mon Jul 30 05:11:08 2012 -0400 +Commit: Colin Walters +CommitDate: Mon Jul 30 05:11:08 2012 -0400 + + GFile: Note semantics of g_file_delete() + + Particularly for someone programming on Unix, this helps them + understand that we will unlink symbolic links, and not follow them. + + gio/gfile.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 14a1c20177eab4d584b29cbd6fe5933f4b2af4de +Author: Colin Walters +AuthorDate: Sat Jul 28 09:30:22 2012 -0400 +Commit: Colin Walters +CommitDate: Mon Jul 30 05:01:06 2012 -0400 + + GFile: Add g_file_delete_async() + + This looks like it was stubbed out but not implemented; the vtable + entry dates to commit 3781343738de4abddf56982325a77bd70a98cd26 which + is just alex's initial merge of gio into glib. + + I was working on some code that wants an asynchronous rm -rf + equivalent, and so yeah, this is desirable. + + https://bugzilla.gnome.org/show_bug.cgi?id=680760 + + docs/reference/gio/gio-sections.txt | 2 + + gio/gfile.c | 118 + ++++++++++++++++++++++++++++++++++++ + gio/gfile.h | 27 +++++++-- + gio/gio.symbols | 2 + + gio/tests/file.c | 43 +++++++++++++ + 5 files changed, 188 insertions(+), 4 deletions(-) + +commit 6b6bef753f2e8f01e01fc8e8f099edcebc9ff8b6 +Author: Colin Walters +AuthorDate: Sun Jul 29 09:29:03 2012 -0400 +Commit: Colin Walters +CommitDate: Mon Jul 30 04:09:08 2012 -0400 + + Add .dir-locals.el to tell Emacs users not to use tabs for C + + Requested by Ryan. + + https://bugzilla.gnome.org/show_bug.cgi?id=680787 + + .dir-locals.el | 1 + + 1 file changed, 1 insertion(+) + +commit c3154cc48eab8bb3ee6afc661d04cc919d6f9543 +Author: Fran Diéguez +AuthorDate: Mon Jul 30 02:42:30 2012 +0200 +Commit: Fran Diéguez +CommitDate: Mon Jul 30 02:42:30 2012 +0200 + + Updated Galician translations + + po/gl.po | 344 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 180 insertions(+), 164 deletions(-) + +commit 8abfe528b75c6aab3a46ec02c4dcca05fceca83b +Author: Andrej Žnidaršič +AuthorDate: Sun Jul 29 13:11:18 2012 +0200 +Commit: Matej Urbančič +CommitDate: Sun Jul 29 13:11:18 2012 +0200 + + Updated Slovenian translation + + po/sl.po | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit ad4f780cb427c1c37c0b0d87fac867285926eb16 +Author: Lionel Landwerlin +AuthorDate: Fri Jul 27 14:52:17 2012 +0200 +Commit: Lionel Landwerlin +CommitDate: Fri Jul 27 19:41:05 2012 +0200 + + glib: fix locale detection on android + + g_utf8_strup() tries to call setlocale() before starting to compute + the length of its first argument. Calling setlocale() can return NULL + (as specified in the man page), and obviously that happens on android. + + https://bugzilla.gnome.org/show_bug.cgi?id=680704 + + glib/guniprop.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 3339a395c298a64a9a6056b80230cc1381a6406a +Author: Мирослав Николић + +AuthorDate: Wed Jul 25 10:33:27 2012 +0200 +Commit: Мирослав Николић + +CommitDate: Wed Jul 25 10:33:27 2012 +0200 + + Updated Serbian translation + + po/sr.po | 1283 + ++++++++++++++++++++++++++------------------------------ + po/sr@latin.po | 1249 + ++++++++++++++++++++++++++---------------------------- + 2 files changed, 1191 insertions(+), 1341 deletions(-) + +commit 72824f2af2a6ae01ede471ef987ee60b9f7cd047 +Author: Yaron Shahrabani +AuthorDate: Tue Jul 24 22:39:15 2012 +0300 +Commit: Yaron Shahrabani +CommitDate: Tue Jul 24 22:39:15 2012 +0300 + + Updated Hebrew translation. + + po/he.po | 1120 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 611 insertions(+), 509 deletions(-) + +commit 3bb53b14530116eeac1e6bcaabf7a28edb74e877 +Author: Tobias Endrigkeit +AuthorDate: Mon Jul 23 22:11:53 2012 +0200 +Commit: Mario Blättermann +CommitDate: Mon Jul 23 22:11:53 2012 +0200 + + [l10n] Updated German translation + + po/de.po | 300 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 160 insertions(+), 140 deletions(-) + +commit 0830e10e6f6dab02afdc39b61d9611d7330edad1 +Author: Kjartan Maraas +AuthorDate: Mon Jul 23 11:42:22 2012 +0200 +Commit: Kjartan Maraas +CommitDate: Mon Jul 23 11:42:22 2012 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 388 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 196 insertions(+), 192 deletions(-) + +commit 003e7a70e80d508458c7a9d4cc76b84a1eb35f94 +Author: Colin Walters +AuthorDate: Fri Jul 20 10:40:56 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 20 14:07:39 2012 -0400 + + Revert unintential IAPI break for g_key_file_load_from_data() + + The old (length) annotation actually wasn't being read. Changing + it to an array was telling g-i that it was an array of utf8, which + is clearly not true. + + We *could* add (element-type guint8), but that would change it to a + byte array, as opposed to the original utf8 version. + + Just removing the annotation should bring us back to where we + were, which was fine. + + https://bugzilla.gnome.org/show_bug.cgi?id=680310 + + glib/gkeyfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1ae7c7d982b3f461dcab178b3d20a04aaa9d9d72 +Author: Chun-wei Fan +AuthorDate: Thu Jul 19 23:15:59 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Jul 19 23:15:59 2012 +0800 + + gio/Makefile.am: Filter out gcontenttype.c for MSVC builds + + gcontenttype.c was split into gcontenttype.c and gcontenttype-win32.c + in commit 32192ee9 ("Split gcontenttype.c"), so we don't want + to include + gcontenttype.c in the Visual C++ build as it is no longer a source + file + meant for Windows. + + Thanks to Thomas H.P. Anderson for pointing this out. + + gio/Makefile.am | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 23a2136fb5dd860a57a9bd46e61099ea4da99447 +Author: Matthias Clasen +AuthorDate: Thu Jul 19 06:37:59 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 19 06:37:59 2012 -0400 + + Check for PR_SET_NAME + + Bug 680148 claims that PR_SET_NAME may not be defined when + using an old kernel. Deal with it. + + glib/gthread-posix.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 4c255d4602b4c6f65031588ff30342c36e250567 +Author: Matthias Clasen +AuthorDate: Thu Jul 19 06:32:29 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 19 06:32:29 2012 -0400 + + Be more careful when using xlocale + + Bug 680074 shows that we may end up in situations where only + some of the xlocale functions we need are available. Rather than + trying to find the minimal set of required functions for each + use, define a global USE_XLOCALE and only use any xlocale functions + if we have a full set. + + glib/gstrfuncs.c | 22 +++++++++++++++------- + 1 file changed, 15 insertions(+), 7 deletions(-) + +commit dd098405ad4f7ad2a0029cbfc340ca2e7e2b5633 +Author: Matthias Clasen +AuthorDate: Thu Jul 19 06:20:10 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 19 06:20:41 2012 -0400 + + Cosmetic: Fix up line endings + + Somehow a few ^M sneaked in here. + + glib/gstrfuncs.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 2357f67b1b7a9448d78e8606f10b472c595c7c90 +Author: Dan Winship +AuthorDate: Wed Jul 18 15:08:44 2012 -0400 +Commit: Dan Winship +CommitDate: Wed Jul 18 15:08:44 2012 -0400 + + gmain: handle child sources being destroyed before parent + + Fix a crash when a child source is destroyed before its parent. Also, + add a test case for this and the previous fix. + + glib/gmain.c | 23 ++++++++++-------- + glib/tests/mainloop.c | 65 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 78 insertions(+), 10 deletions(-) + +commit ee6e66cb4483d82fcb0657d13faebf844258c70b +Author: Dan Winship +AuthorDate: Wed Jul 18 14:19:36 2012 -0400 +Commit: Dan Winship +CommitDate: Wed Jul 18 14:19:36 2012 -0400 + + g_source_add_child_source: sync blocked state + + Child sources are supposed to be blocked when their parents are, so + when adding a source to a blocked source, block the child too. Fixes a + warning when unblocking the parent. + + glib/gmain.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 2855b827da44144c76b72d8cfec9599a835df4ea +Author: Dan Winship +AuthorDate: Tue Jul 17 16:21:03 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Jul 17 16:21:03 2012 -0400 + + gio/tests/converter-stream: add a new test, rename an old one + + Add a test that the decompressor input streams handle truncated data + correctly. (They do; I wrote the test thinking there was a bug there, + but there isn't.) + + Also, rename the "corruption" tests to "roundtrip", since "corruption" + makes it sound like we're testing how the converters deal with + corrupted data, as opposed to merely testing that they don't corrupt + data themselves. And fix the bug reference. + + gio/tests/converter-stream.c | 112 + ++++++++++++++++++++++++++++++++----------- + 1 file changed, 83 insertions(+), 29 deletions(-) + +commit 09c18537f4e8b3ede066339cc23b76df8a4fc2cc +Author: Dan Winship +AuthorDate: Tue Jul 17 13:17:01 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Jul 17 15:32:48 2012 -0400 + + g_cancellable_source_new: don't use a file descriptor + + Rather than implementing GCancellableSource by polling on its fd, + implement it by just waking its GMainContext up from the "cancelled" + signal handler, thereby helping to reduce file descriptor usage. + Suggested by Ryan Lortie. + + https://bugzilla.gnome.org/show_bug.cgi?id=680121 + + gio/gcancellable.c | 24 +++++++++++++++++++----- + 1 file changed, 19 insertions(+), 5 deletions(-) + +commit 0e37822e10626859bcc6cb0452f1c0832e6990fa +Author: Matthias Clasen +AuthorDate: Tue Jul 17 14:23:08 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 17 14:23:08 2012 -0400 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ffefa544d68972cf5cc7099eb015c35630c5314d +Author: Matthias Clasen +AuthorDate: Tue Jul 17 13:50:58 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 17 13:50:58 2012 -0400 + + More updates + + NEWS | 1 + + 1 file changed, 1 insertion(+) + +commit a0b71839ee27eec27d8b9da24d25c153d6273f42 +Author: Stef Walter +AuthorDate: Tue Jul 17 18:34:16 2012 +0200 +Commit: Matthias Clasen +CommitDate: Tue Jul 17 13:47:26 2012 -0400 + + GIOScheduler: Fix access after free in "cancelled" handler + + * GCancellable can be "cancelled" more than once if + g_cancellable_reset() is called. + * Don't assume that because the "cancelled" signal fired + it won't fire again. + + https://bugzilla.gnome.org/show_bug.cgi?id=680111 + + gio/gioscheduler.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e97a4c7e5ef205dea08928f64ee5ba7e222e3b9b +Author: Matthias Clasen +AuthorDate: Tue Jul 17 13:00:00 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 17 13:47:26 2012 -0400 + + 2.33.6 + + https://bugzilla.gnome.org/show_bug.cgi?id=680111 + + NEWS | 14 ++++++++++++++ + configure.ac | 2 +- + 2 files changed, 15 insertions(+), 1 deletion(-) + +commit d90ad1805552aab969f316a1de687efdb71e27fe +Author: Dan Winship +AuthorDate: Tue Jul 17 09:12:39 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Jul 17 09:15:44 2012 -0400 + + GAsyncInitable: partially revert the init_finish changes + + g_async_initable_real_init_finish() was previously handling all + GSimpleAsyncResults, even if they weren't created by + g_async_initable_real_init_async(), and libnm-glib accidentally relied + on that behavior. So remove the g_simple_async_result_is_valid() + check. + + gio/gasyncinitable.c | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +commit cd8ec3359b4b8afd5cce48bf218ecd793f8064eb +Author: Krzesimir Nowak +AuthorDate: Sun Jul 15 19:10:43 2012 +0200 +Commit: Krzesimir Nowak +CommitDate: Mon Jul 16 17:58:22 2012 +0200 + + GVariantType: Add (constructor) annotation for some constructors. + + This are mistaken by g-ir-scanner as GVariantType's methods, because + they take a GVariantType* as a first parameter. + + https://bugzilla.gnome.org/show_bug.cgi?id=679968 + + glib/gvarianttype.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 1b3578ec0beb19639e21c08e560a4fdb010a438a +Author: Daniel Mustieles +AuthorDate: Mon Jul 16 16:42:49 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Mon Jul 16 16:42:49 2012 +0200 + + Updated Spanish translation + + po/es.po | 441 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 231 insertions(+), 210 deletions(-) + +commit bfbfbec91e10ea7f34e43a5d263031abb914dec6 +Author: Marc-André Lureau +AuthorDate: Mon Jul 9 04:12:02 2012 +0200 +Commit: Marc-André Lureau +CommitDate: Mon Jul 16 12:49:25 2012 +0200 + + win32: g_getenv() should return "" if variable exists and empty + + On Windows, GetEnvironmentVariable() returns 0 for empty variables. + Checking GetLastError() == ERROR_ENVVAR_NOT_FOUND helps make a + difference between a variable that does not exist or an empty one + which should return "". + + https://bugzilla.gnome.org/show_bug.cgi?id=679617 + + glib/genviron.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 6007a4b0b109855f8521ba93ed10b3a1d2bf77f2 +Author: Marc-André Lureau +AuthorDate: Mon Jul 9 03:54:55 2012 +0200 +Commit: Marc-André Lureau +CommitDate: Mon Jul 16 12:49:24 2012 +0200 + + win32: fix g_get_environ() + + The current code create the strv array incorrectly, it is too big and + leaves invalid holes. This may result in crashes when freeing the + returned value. + + https://bugzilla.gnome.org/show_bug.cgi?id=679617 + + glib/genviron.c | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +commit 11819933e2d0b8833dfd7a0173f66be989a5a914 +Author: Matthias Clasen +AuthorDate: Mon Jul 16 06:01:55 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 16 06:01:55 2012 -0400 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d48bd70853496c5a835e0d3a83136ef23ea778c9 +Author: Matthias Clasen +AuthorDate: Sun Jul 15 20:36:10 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 15 20:36:10 2012 -0400 + + More updates + + NEWS | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit f81c2c753ab0f6cc71866cd3e387a2e2dc857d60 +Author: Ihar Hrachyshka +AuthorDate: Sun Jul 15 12:27:03 2012 +0300 +Commit: Ihar Hrachyshka +CommitDate: Sun Jul 15 12:27:03 2012 +0300 + + Updated Belarusian translation. + + po/be.po | 1106 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 620 insertions(+), 486 deletions(-) + +commit ef4bbecce76505abc5ba143f57bae4cba0a76f16 +Author: Piotr Drąg +AuthorDate: Sun Jul 15 01:23:25 2012 +0200 +Commit: Piotr Drąg +CommitDate: Sun Jul 15 01:26:12 2012 +0200 + + Updated Polish translation + + po/pl.po | 192 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 101 insertions(+), 91 deletions(-) + +commit 160da82e3943e2a42685d72f54dddb11db80458c +Author: Chao-Hsiung Liao +AuthorDate: Sat Jul 14 13:51:12 2012 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Sat Jul 14 13:51:12 2012 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 1127 + ++++++++++++++++++++++++++++++++++------------------------- + po/zh_TW.po | 1127 + ++++++++++++++++++++++++++++++++++------------------------- + 2 files changed, 1298 insertions(+), 956 deletions(-) + +commit c182ee1f7189ea2f547e1af6498b27bd501397fc +Author: Matthias Clasen +AuthorDate: Fri Jul 13 17:37:37 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 13 17:37:37 2012 -0400 + + Fix GModule documentation a bit + + The documentation for g_module_make_resident was for some reason + in the doc comment for g_module_name. + + https://bugzilla.gnome.org/show_bug.cgi?id=679813 + + gmodule/gmodule.c | 16 +++++++++++++--- + gmodule/gmodule.h | 2 ++ + 2 files changed, 15 insertions(+), 3 deletions(-) + +commit 34b2125edff9d4ce1dc6e2e84e5a816ee14b4791 +Author: Matthias Clasen +AuthorDate: Fri Jul 13 17:37:12 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 13 17:37:12 2012 -0400 + + Fix doc build + + glib/gregex.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3201bcd1b278f335669972cbd991c3a6778a040e +Author: Nilamdyuti Goswami +AuthorDate: Fri Jul 13 17:53:45 2012 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Fri Jul 13 17:54:20 2012 +0530 + + Assamese translation updated + + po/as.po | 447 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 227 insertions(+), 220 deletions(-) + +commit 97676046f2764ace8d0ac65df092046044841ac0 +Author: Matthias Clasen +AuthorDate: Thu Jul 12 23:40:43 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 12 23:51:08 2012 -0400 + + Update NEWS + + NEWS | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 54 insertions(+) + +commit d9af4259f779a4e88d9d47a9e99944ad785f4190 +Author: Marc-André Lureau +AuthorDate: Wed Jul 11 19:41:58 2012 +0200 +Commit: Colin Walters +CommitDate: Thu Jul 12 23:19:52 2012 -0400 + + win32: fix build g_spawn_check_exit_status() with mingw + + With mingw, only gspawn-win32.c is compiled, but it is missing some + new symbols. + + https://bugzilla.gnome.org/show_bug.cgi?id=679691 + + glib/gspawn-win32.c | 25 +++++++++++++++++++++++++ + glib/gspawn.c | 10 ---------- + 2 files changed, 25 insertions(+), 10 deletions(-) + +commit ce1b50bf2afbbcfd6c560feed00de2df50b7dfba +Author: Krzesimir Nowak +AuthorDate: Thu Jul 12 16:09:57 2012 +0200 +Commit: Krzesimir Nowak +CommitDate: Thu Jul 12 16:09:57 2012 +0200 + + GRegex, GConvert: Add some missing annotations. + + Also, removed pointless (allow-none) return annotation. + + https://bugzilla.gnome.org/show_bug.cgi?id=679762 + + glib/gconvert.c | 6 +++--- + glib/gregex.c | 15 +++++++++------ + 2 files changed, 12 insertions(+), 9 deletions(-) + +commit 99f26ab08f777040230fdd81423d1220722cef2f +Author: Cosimo Cecchi +AuthorDate: Wed Jul 11 20:25:59 2012 -0400 +Commit: Cosimo Cecchi +CommitDate: Wed Jul 11 20:26:16 2012 -0400 + + mount-operation: add a Since tag to the show-unmount-progress signal + + gio/gmountoperation.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 44375ad7c595884c091056a1955d08a1975c5516 +Author: Cosimo Cecchi +AuthorDate: Fri Jul 6 15:41:47 2012 -0400 +Commit: Cosimo Cecchi +CommitDate: Wed Jul 11 19:57:42 2012 -0400 + + mount-operation: add show-unmount-progress signal + + The actual implementation will be in gvfs. + + https://bugzilla.gnome.org/show_bug.cgi?id=676111 + + gio/gmountoperation.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + gio/gmountoperation.h | 6 +++++- + 2 files changed, 51 insertions(+), 1 deletion(-) + +commit 37fbd702d54a471781e853acaf805e0f508fbd3a +Author: Tom Tryfonidis +AuthorDate: Thu Jul 12 02:38:20 2012 +0300 +Commit: Tom Tryfonidis +CommitDate: Thu Jul 12 02:38:20 2012 +0300 + + Updated Greek translation + + po/el.po | 819 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 456 insertions(+), 363 deletions(-) + +commit eda1735029e01d6391fe8a4cde6c5688727c8183 +Author: Rui Matos +AuthorDate: Tue Jul 10 11:38:34 2012 +0200 +Commit: Rui Matos +CommitDate: Wed Jul 11 03:27:29 2012 +0200 + + GDBusNodeInfo: remove a spurious for loop + + https://bugzilla.gnome.org/show_bug.cgi?id=679671 + + gio/gdbusintrospection.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +commit 6f23c33831f69ef111d22491586d1dfdd8ca3693 +Author: Rui Matos +AuthorDate: Tue Jul 10 11:37:56 2012 +0200 +Commit: Rui Matos +CommitDate: Wed Jul 11 03:27:29 2012 +0200 + + GDBusNodeInfo: the XML string must contain exactly one node element + + Make the documentation clear about this. + + https://bugzilla.gnome.org/show_bug.cgi?id=679671 + + gio/gdbusintrospection.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit f7abd3ce130ae3a6da8502c2dce8d773d7514464 +Author: Colin Walters +AuthorDate: Tue Jul 10 11:27:22 2012 -0400 +Commit: Colin Walters +CommitDate: Tue Jul 10 18:03:56 2012 -0400 + + Add g_spawn_check_exit_status() + + Many (if not "almost all") programs that spawn other programs via + g_spawn_sync() or the like simply want to check whether or not the + child exited successfully, but doing so requires use of + platform-specific functionality and there's actually a fair amount of + boilerplate involved. + + This new API will help drain a *lot* of mostly duplicated code in + GNOME, from gnome-session to gdm. And we can see that some bits even + inside GLib were doing it wrong; for example checking the exit status + on Unix, but ignoring it on Windows. + + https://bugzilla.gnome.org/show_bug.cgi?id=679691 + + docs/reference/glib/glib-sections.txt | 1 + + gio/gdbusaddress.c | 29 +------- + gio/gdesktopappinfo.c | 4 +- + gio/glib-compile-resources.c | 14 ++-- + gio/tests/gdbus-connection-slow.c | 9 +-- + gio/tests/gdbus-connection.c | 2 +- + glib/glib.symbols | 2 + + glib/gmain.c | 12 ++-- + glib/gmain.h | 8 ++- + glib/gspawn.c | 128 + +++++++++++++++++++++++++++++++--- + glib/gspawn.h | 13 ++++ + 11 files changed, 158 insertions(+), 64 deletions(-) + +commit 82d914d808c616d14d489c0272c6d5afc4bfbd5a +Author: Dan Winship +AuthorDate: Thu May 10 11:09:52 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Jul 10 10:49:20 2012 -0400 + + gio: add g_async_result_is_tagged() + + Rather than doing a two step + first-check-the-GAsyncResult-subtype-then- + check-the-tag, add a GAsyncResult-level method so that you can do them + both at once, simplifying the code for "short-circuit" async return + values where the vmethod never gets called. + + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gasyncresult.c | 29 +++++++++++++++++++++++++++++ + gio/gasyncresult.h | 7 +++++++ + gio/gbufferedinputstream.c | 9 ++------- + gio/gfileenumerator.c | 11 +++-------- + gio/ginputstream.c | 27 ++++++--------------------- + gio/gio.symbols | 1 + + gio/giostream.c | 9 ++------- + gio/goutputstream.c | 27 ++++++--------------------- + gio/gresolver.c | 13 ++++--------- + gio/gsimpleasyncresult.c | 8 ++++++++ + 11 files changed, 69 insertions(+), 73 deletions(-) + +commit f8532a13e2054e649f75ca2a58e01604be05549e +Author: Dan Winship +AuthorDate: Thu May 10 09:00:45 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Jul 10 10:49:14 2012 -0400 + + gio: Add g_async_result_legacy_propagate_error() + + Finish deprecating the "handle GSimpleAsyncResult errors in the + wrapper function" idiom (and protect against future GSimpleAsyncResult + deprecation warnings) by adding a "legacy" GAsyncResult method + to do it in those classes/methods where it had been traditionally + done. + + (This applies only to wrapper methods; in cases where an _async + vmethod explicitly uses GSimpleAsyncResult, its corresponding _finish + vmethod still uses g_simple_async_result_propagate_error.) + + https://bugzilla.gnome.org/show_bug.cgi?id=667375 + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gasyncinitable.c | 8 +- + gio/gasyncresult.c | 42 ++++++++ + gio/gasyncresult.h | 4 + + gio/gbufferedinputstream.c | 5 +- + gio/gdrive.c | 44 +++------ + gio/gfile.c | 189 + ++++++++++-------------------------- + gio/gfileenumerator.c | 16 ++- + gio/gfileinputstream.c | 9 +- + gio/gfileiostream.c | 13 +-- + gio/gfileoutputstream.c | 9 +- + gio/ginputstream.c | 15 +-- + gio/gio.symbols | 1 + + gio/giostream.c | 5 +- + gio/gloadableicon.c | 10 +- + gio/gmount.c | 48 +++------ + gio/goutputstream.c | 24 +++-- + gio/gresolver.c | 24 ++--- + gio/gvolume.c | 24 ++--- + 19 files changed, 180 insertions(+), 311 deletions(-) + +commit 538b2f106de78b7dfeac2a98f3d5594ed0ed2ade +Author: Dan Winship +AuthorDate: Mon Jun 11 13:44:19 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Jul 10 10:47:55 2012 -0400 + + gio: handle GSimpleAsyncResult errors in _finish vmethods + + Originally, the standard idiom with GSimpleAsyncResult was to handle + all errors in the _finish wrapper function, so that vmethods only had + to deal with successful results. But this means that chaining up to a + parent _finish vmethod won't work correctly. Fix this by also checking + for errors in all the relevant vmethods. (We have to redundantly check + in both the vmethod and the wrapper to preserve compatibility.) + + https://bugzilla.gnome.org/show_bug.cgi?id=667375 + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + gio/gasyncinitable.c | 19 ++++++++----------- + gio/gbufferedinputstream.c | 3 +++ + gio/gfile.c | 42 + +++++++++++++++++++++++++++++++++++++++++- + gio/gfileenumerator.c | 8 ++++++++ + gio/gfileinputstream.c | 3 +++ + gio/gfileoutputstream.c | 7 +++++-- + gio/ginputstream.c | 12 ++++++++++++ + gio/giostream.c | 5 +++++ + gio/gloadableicon.c | 3 +++ + gio/goutputstream.c | 16 ++++++++++++++++ + 10 files changed, 104 insertions(+), 14 deletions(-) + +commit a98d26c9bbd40b5d00d5a1536402c9196534087c +Author: Dan Winship +AuthorDate: Tue Apr 17 09:55:33 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Jul 10 10:47:49 2012 -0400 + + GFile: remove some unnecessary code + + The "mainloop_barrier" in copy_async_thread() is unnecessary, since + the g_simple_async_result_complete_in_idle() will be queued after all + of the g_io_scheduler_job_send_to_mainloop_async()s, and sources with + the same priority will run in the order in which they were queued. + + https://bugzilla.gnome.org/show_bug.cgi?id=661767 + + gio/gfile.c | 15 --------------- + 1 file changed, 15 deletions(-) + +commit 4749878f9102d40d072bb5c838f2dd2e8d61d417 +Author: Antoine Jacoutot +AuthorDate: Mon Jul 9 18:17:01 2012 +0200 +Commit: Antoine Jacoutot +CommitDate: Tue Jul 10 15:14:52 2012 +0200 + + goptions: use G_N_ELEMENTS instead of nitems + + glib/goption.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +commit 5a85fe0e37504cea13fe8a587691f72373b18830 +Author: Ryan Lortie +AuthorDate: Mon Jul 9 12:43:50 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 9 12:47:31 2012 -0400 + + GVariant: fix string validation + + String validation was done by checking if the string was valid + utf8 and + ensuring that the first non-utf8 character was the last character (ie: + the nul terminator). + + No check was actually done to make sure that this byte actually + contained a nul, however, so it was possible that you could have a + string like "hello\xff" with length 6 that would correctly validate. + + Fix that, and test it. + + glib/gvariant-serialiser.c | 11 ++++++++++- + glib/tests/gvariant.c | 1 + + 2 files changed, 11 insertions(+), 1 deletion(-) + +commit 3b0f1cc432b546c538d82036bd1a655489d11f35 +Author: Stef Walter +AuthorDate: Sat May 5 12:51:16 2012 +0200 +Commit: Stef Walter +CommitDate: Mon Jul 9 17:47:39 2012 +0200 + + Fix up GObject interface documentation + + * Document how to override interfaces already implemented + in a base class, and also call those base class implementations + from a derived reimplementation. + * Don't recomend people use base_init() style functions to + initialize interface signals and properties, use default_init() + aka class_init() instead (as G_DEFINE_INTERFACE() uses). + * The above solves the interface init called multiple times + problem, so remove some needless naysaying about that. + * Document default_init() in the interface initialization discussion + * Linkify more stuff. + * Remove some crud and typos + + https://bugzilla.gnome.org/show_bug.cgi?id=675504 + + docs/reference/gobject/tut_gtype.xml | 143 ++++++++++++----- + docs/reference/gobject/tut_howto.xml | 303 + ++++++++++++++++++++++++----------- + 2 files changed, 309 insertions(+), 137 deletions(-) + +commit 2cf9608d4892690c16332c27b3f5de0276d2f569 +Author: Fran Diéguez +AuthorDate: Mon Jul 9 15:05:04 2012 +0200 +Commit: Fran Diéguez +CommitDate: Mon Jul 9 15:05:04 2012 +0200 + + Updated Galician translations + + po/gl.po | 403 + +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 238 insertions(+), 165 deletions(-) + +commit f9a6a97470583417a26619b5da3d56097a15c6dd +Author: Antoine Jacoutot +AuthorDate: Sun Jul 8 19:23:18 2012 +0200 +Commit: Antoine Jacoutot +CommitDate: Sun Jul 8 19:23:18 2012 +0200 + + OpenBSD: explicitely define nitems + + nitems is never guaranteed to be defined in sys/params.h as it + is meant + to be defined within a protected ifdef __KERNEL condition. + + glib/goption.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit a511a706de048dcc779eb09d85f3d2e9329d68cd +Author: Torsten Schönfeld +AuthorDate: Mon May 3 20:33:50 2010 +0200 +Commit: Torsten Schönfeld +CommitDate: Sun Jul 8 00:47:01 2012 +0200 + + gio: Add type macros for GFileAttributeInfoList and + GFileAttributeMatcher + + https://bugzilla.gnome.org/show_bug.cgi?id=616892 + + gio/gfileattribute.h | 4 +++- + gio/gfileinfo.h | 4 +++- + 2 files changed, 6 insertions(+), 2 deletions(-) + +commit c09bf3e6b935d5e5ef0ecf2bb88788537c3ebecd +Author: David Zeuthen +AuthorDate: Sat Jul 7 17:10:46 2012 -0400 +Commit: David Zeuthen +CommitDate: Sat Jul 7 17:10:46 2012 -0400 + + gdbus-codegen: improve casting a tiny wee bit + + The in commit b79fbc5c3fc8d7093919dde2dc244d26a97596c3 for fixing + -Wstrict-aliasing warnings was a little too brutal, make it a bit + better. + + Signed-off-by: David Zeuthen + + gio/gdbus-2.0/codegen/codegen.py | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 53b3175cfabe78b6ce3403f38d59addb218cb61b +Author: Christian Persch +AuthorDate: Thu Jun 28 23:20:39 2012 +0200 +Commit: Christian Persch +CommitDate: Sat Jul 7 22:08:08 2012 +0200 + + regex: Add new GRegexError code from PCRE 8.31 + + glib/gregex.c | 3 +++ + glib/gregex.h | 7 +++++-- + glib/tests/regex.c | 1 + + 3 files changed, 9 insertions(+), 2 deletions(-) + +commit 2188a5e59c512668dc3c76607fb8ccad4910cc3c +Author: Christian Persch +AuthorDate: Thu Jun 28 23:21:16 2012 +0200 +Commit: Christian Persch +CommitDate: Sat Jul 7 22:08:08 2012 +0200 + + regex: Enable fixed test + + This problem was fixed in PCRE 8.31, so uncomment the test. + + glib/tests/regex.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 94578330109eb7fb1588c0d0d0bb526bfb0ce9b6 +Author: Christian Persch +AuthorDate: Thu Jun 14 22:15:27 2012 +0200 +Commit: Christian Persch +CommitDate: Sat Jul 7 22:08:02 2012 +0200 + + regex: Import PCRE 8.31 + + https://bugzilla.gnome.org/show_bug.cgi?id=679193 + + glib/pcre/pcre.h | 10 +- + glib/pcre/pcre_compile.c | 195 ++-- + glib/pcre/pcre_dfa_exec.c | 225 +++-- + glib/pcre/pcre_exec.c | 331 +++++-- + glib/pcre/pcre_fullinfo.c | 4 + + glib/pcre/pcre_globals.c | 4 + + glib/pcre/pcre_internal.h | 43 +- + glib/pcre/pcre_jit_compile.c | 2028 + +++++++++++++++++++++++++++--------------- + glib/pcre/pcre_study.c | 15 +- + glib/pcre/pcre_tables.c | 292 +++--- + glib/pcre/ucp.h | 9 +- + glib/update-pcre/ucp.patch | 55 +- + 12 files changed, 2087 insertions(+), 1124 deletions(-) + +commit f66052fc87caada2552f651e9a21f1daac86b2a1 +Author: Ryan Lortie +AuthorDate: Fri Jul 6 17:27:54 2012 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jul 6 17:29:30 2012 -0400 + + GVariant: support comparing booleans + + g_variant_compare() is documented as working on booleans but somehow + this case was missed. Add it and test it. + + Problem discovered by Charles Kerr. + + glib/gvariant.c | 4 ++++ + glib/tests/gvariant.c | 5 +++++ + 2 files changed, 9 insertions(+) + +commit b79fbc5c3fc8d7093919dde2dc244d26a97596c3 +Author: David Zeuthen +AuthorDate: Fri Jul 6 13:45:09 2012 -0400 +Commit: David Zeuthen +CommitDate: Fri Jul 6 13:49:28 2012 -0400 + + gdbus-codegen: neuter warnings when using -Wstrict-aliasing + + Signed-off-by: David Zeuthen + + gio/gdbus-2.0/codegen/codegen.py | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit d728eae85fbcefb66f9bfc41a52cf315ef84d667 +Author: David Zeuthen +AuthorDate: Fri Jul 6 13:43:05 2012 -0400 +Commit: David Zeuthen +CommitDate: Fri Jul 6 13:49:28 2012 -0400 + + gdbus-codegen: don't shadow variable + + This avoids a warning when building with -Wshadow + + Signed-off-by: David Zeuthen + + gio/gdbus-2.0/codegen/codegen.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit ed492a5de2a217c08bccd4032b1122fba2f25c6f +Author: Ryan Lortie +AuthorDate: Fri Jul 6 13:43:17 2012 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jul 6 13:44:17 2012 -0400 + + GSettings: be more careful about keys names with / + + Prevent attempts to access keys ending with slashes that exist in the + schema file as references to child schemas. + + Also: don't emit change signals for these same keys. + + gio/gsettings.c | 20 ++++++++++++++++---- + gio/gsettingsschema.c | 2 +- + 2 files changed, 17 insertions(+), 5 deletions(-) + +commit 52a6d7022af6dfc597bae97fdabcaf2d24855126 +Author: Kjartan Maraas +AuthorDate: Fri Jul 6 19:11:26 2012 +0200 +Commit: Kjartan Maraas +CommitDate: Fri Jul 6 19:11:26 2012 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 750 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 414 insertions(+), 336 deletions(-) + +commit ee9aae5dcfe8dd1956e78a52c4e8c53c0f7861fe +Author: Dan Winship +AuthorDate: Thu Apr 26 14:08:22 2012 -0400 +Commit: Dan Winship +CommitDate: Fri Jul 6 12:10:42 2012 -0400 + + Clarify the GLIB_VERSION_MIN_REQUIRED/MAX_ALLOWED docs + + https://bugzilla.gnome.org/show_bug.cgi?id=674898 + + glib/gversionmacros.h | 23 +++++++++++++++-------- + 1 file changed, 15 insertions(+), 8 deletions(-) + +commit 40f0f66151c09a02b6355c7da02af081c30dd586 +Author: Dan Winship +AuthorDate: Thu Apr 26 11:08:23 2012 -0400 +Commit: Dan Winship +CommitDate: Fri Jul 6 12:10:42 2012 -0400 + + Deal with GLIB_VERSION_MIN_REQUIRED/MAX_ALLOWED being a "future" value + + If GLIB_VERSION_MIN_REQUIRED or GLIB_VERSION_MAX_ALLOWED was defined + to a future value, we were essentially treating it as + GLIB_VERSION_0_0. Fix to treat it as being in the future instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=674898 + + glib/gversionmacros.h | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +commit 4ac0d78d5ddde773b7abf05e4c5e128a8acb835d +Author: Colin Walters +AuthorDate: Tue May 29 17:58:41 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Jul 6 10:19:12 2012 -0400 + + GString: Tweak documentation, add g_string_free_to_bytes() + + The docs for GString should really mention GByteArray, and what makes + it different. Drop the comparison to Java which is dated and actually + inaccurate (because StringBuffer operates on Unicode). + + While we're here, add g_string_free_to_bytes(), which further + complements the spread of GBytes-based API. For example, one can + create a buffer using GString, then send it off via + g_output_stream_write_bytes(). + + https://bugzilla.gnome.org/show_bug.cgi?id=677064 + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gstring.c | 48 + ++++++++++++++++++++++++++++++----- + glib/gstring.h | 3 +++ + glib/tests/string.c | 21 +++++++++++++++ + 5 files changed, 68 insertions(+), 6 deletions(-) + +commit d72116d8b7c802895be6b02093342fd9e770813d +Author: David Zeuthen +AuthorDate: Fri Jul 6 09:19:48 2012 -0400 +Commit: David Zeuthen +CommitDate: Fri Jul 6 09:26:41 2012 -0400 + + gdbus-codegen: Don't generate invalid GObject property names + + For a D-Bus property with name "Type" (fairly common), we used to + generate a GObject property with name "type-" and C accessors + get_type_() (to avoid clashing with the GType getter), set_type_() + (for symmetri). + + However, the rules for GObject property names are fairly rigid and + specifically prohibit names ending in a dash. + + Therefore change things so the chosen GObject property name is "type" + but preserve the naming rules for the C getter and setter (for the + same reasons: avoiding name clashing and symmetri). + + This change does break the API of generated code (but only on the + GObject property level, the C symbols are not changed) but strictly + speaking the behavior was undefined since "type-" was an invalid + GObject property name. + + Also add a test case for this. + + Bug 679473. + + https://bugzilla.gnome.org/show_bug.cgi?id=679473 + + Signed-off-by: David Zeuthen + + gio/gdbus-2.0/codegen/dbustypes.py | 3 ++- + gio/tests/gdbus-test-codegen.c | 28 ++++++++++++++++++++++++++++ + gio/tests/test-codegen.xml | 4 ++++ + 3 files changed, 34 insertions(+), 1 deletion(-) + +commit 2a87010831db5d4c18905103e9e7d804546552bf +Author: Emmanuele Bassi +AuthorDate: Wed Mar 7 12:54:04 2012 +0000 +Commit: Matthias Clasen +CommitDate: Thu Jul 5 23:27:35 2012 -0400 + + Constify collect and lcopy strings in GTypeValueTable + + This avoids warnings when creating idiomatic value tables, like: + + static const GTypeValueTable _clutter_shader_float_value_table = { + clutter_value_init_shader_float, + clutter_value_free_shader_float, + clutter_value_copy_shader_float, + clutter_value_peek_pointer, + "ip", + clutter_value_collect_shader_float, + "pp", + clutter_value_lcopy_shader_float + }; + + Because the strings are literals. And, really: nobody should be using + allocated values for the collection and lcopy strings. + + https://bugzilla.gnome.org/show_bug.cgi?id=671545 + + gobject/gtype.h | 4 ++-- + gobject/gvaluecollector.h | 6 +++--- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit ab4cc22ba5d7a1a9ee72eaccd171ac1fc82bfb5c +Author: Matthias Clasen +AuthorDate: Thu Jul 5 22:25:49 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 5 22:25:49 2012 -0400 + + Improve the g_dir_read_name documentation + + This function can return NULL in error cases as well. Document + this, and explain how to discriminate the cases. + https://bugzilla.gnome.org/show_bug.cgi?id=639771 + + glib/gdir.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit f416ece1039f65ce77df6983a872950c82877e37 +Author: Piotr Drąg +AuthorDate: Wed Jul 4 04:25:41 2012 +0200 +Commit: Piotr Drąg +CommitDate: Wed Jul 4 04:25:41 2012 +0200 + + Updated POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit 04af05fd1f648aca3e2aa805df5a376a992a04d3 +Author: Matthias Clasen +AuthorDate: Tue Jul 3 21:14:41 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 3 21:14:41 2012 -0400 + + Drop unneeded includes + + gio/gcharsetconverter.c | 1 - + gio/glocalfileinfo.c | 1 - + gio/gwin32appinfo.c | 2 +- + 3 files changed, 1 insertion(+), 3 deletions(-) + +commit 32192ee9e4210a12b76ee5cbfbb8b6f2d957d3e9 +Author: Matthias Clasen +AuthorDate: Tue Jul 3 21:13:32 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 3 21:13:32 2012 -0400 + + Split gcontenttype.c + + Instead of a giant #if G_OS_WIN32 #else #endif around the entire + file, just split it into gcontenttype.c and gcontenttype-win32.c. + + gio/Makefile.am | 5 +- + gio/gcontenttype-win32.c | 378 + +++++++++++++++++++++++++++++++++++++++++++++++ + gio/gcontenttype.c | 353 + +------------------------------------------ + 3 files changed, 382 insertions(+), 354 deletions(-) + +commit af3b1674cd65e1d650fb82bc93483391b99feb50 +Author: Marc-André Lureau +AuthorDate: Tue Jul 3 20:04:05 2012 +0200 +Commit: Matthias Clasen +CommitDate: Tue Jul 3 21:01:31 2012 -0400 + + win32: fix build after bug 674452 + + gio/gcontenttype.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5d7fa1c7839dfeb482f549ca9bb3ab7027e9994a +Author: Ryan Lortie +AuthorDate: Tue Jul 3 15:40:35 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jul 3 15:40:44 2012 -0400 + + GObject docs fixup + + docs/reference/gobject/Makefile.am | 1 + + docs/reference/gobject/gobject-sections.txt | 29 + +++++++++++++++++++++++++++++ + 2 files changed, 30 insertions(+) + +commit 72660997bc0b0ee81095b85911992db3c644e5da +Author: Rico Tzschichholz +AuthorDate: Tue Jul 3 21:22:16 2012 +0200 +Commit: Rico Tzschichholz +CommitDate: Tue Jul 3 21:22:16 2012 +0200 + + glib/deprecated: Fix some version typos + + glib/deprecated/gthread-deprecated.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit be249ac6ae461b2f8c3995d7311033f82738827a +Author: Nilamdyuti Goswami +AuthorDate: Tue Jul 3 21:01:17 2012 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Tue Jul 3 21:01:59 2012 +0530 + + Assamese translation updated + + po/as.po | 388 + +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 238 insertions(+), 150 deletions(-) + +commit 45c48bffdd3e684470be38a03dea466f78e184bd +Author: Alexander Shopov +AuthorDate: Tue Jul 3 16:55:12 2012 +0300 +Commit: Alexander Shopov +CommitDate: Tue Jul 3 16:55:12 2012 +0300 + + Updated Bulgarian translation + + po/bg.po | 316 + +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 187 insertions(+), 129 deletions(-) + +commit 489b947c3be8ea892d415ac1b623e5bfc3445439 +Author: Neil Roberts +AuthorDate: Mon Jul 2 13:41:32 2012 +0100 +Commit: Neil Roberts +CommitDate: Mon Jul 2 18:44:49 2012 +0100 + + Fix the 'Since' tag for G_SOURCE_{REMOVE,CONTINUE} + + The Since tag for these was saying 2.28 but it was actually added in + 2.31. It looks like all of the Since tags list stable version numbers + so this patch bumps that up to 2.32. + + https://bugzilla.gnome.org/show_bug.cgi?id=679258 + + glib/gmain.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 938c28b36bf7090c654802d877d76f404d783799 +Author: Christian Persch +AuthorDate: Mon Jul 2 17:56:54 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 18:02:15 2012 +0200 + + regex: Require PCRE 8.13 + + Bump the required version for external PCRE to 8.13, to fix the build + with external PCRE. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b5b1179d3fc04d4ec4fd03e4df852ac7c02d4e00 +Author: Daniel Mustieles +AuthorDate: Mon Jul 2 17:34:59 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Mon Jul 2 17:34:59 2012 +0200 + + Updated Spanish translation + + po/es.po | 20 ++++---------------- + 1 file changed, 4 insertions(+), 16 deletions(-) + +commit 4b787aa31d8e71d108cbf0a61db3dd7805cf2205 +Author: Daniel Mustieles +AuthorDate: Mon Jul 2 17:29:02 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Mon Jul 2 17:29:02 2012 +0200 + + Updated Spanish translation + + po/es.po | 373 + +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 229 insertions(+), 144 deletions(-) + +commit 1519d6b894c95968fdd13a2004cf0c9d97efe7bd +Author: Daniel Mustieles +AuthorDate: Mon Jul 2 17:24:45 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Mon Jul 2 17:24:45 2012 +0200 + + Fixed a a «big bug» in a string ;-) + + glib/gregex.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7483315f83cac1f54fd72c331e6eff0781b8560f +Author: Christian Persch +AuthorDate: Sun Jun 17 22:51:44 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 15:59:39 2012 +0200 + + regex: Fix unicode othercasing + + Reorder the toupper/tolower calls when othercaseing, so this + function is bug-for-bug compatible with the pcre internal tables. + + https://bugzilla.gnome.org/show_bug.cgi?id=678273 + + glib/pcre/pcre_tables.c | 4 ++-- + glib/tests/regex.c | 6 ++++++ + 2 files changed, 8 insertions(+), 2 deletions(-) + +commit a2f54a3408fcf45cae991b6886f4495fdae1f5ac +Author: Christian Persch +AuthorDate: Thu Jun 14 22:04:05 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 15:59:39 2012 +0200 + + regex: Add FIRSTLINE compile flag + + This option exists since PCRE 6.0. + + glib/gregex.c | 2 ++ + glib/gregex.h | 5 ++++- + glib/tests/regex.c | 3 +++ + 3 files changed, 9 insertions(+), 1 deletion(-) + +commit e99e34f65f6cf66feaccde29e480965d525586ae +Author: Christian Persch +AuthorDate: Thu Jun 7 23:24:07 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 15:59:39 2012 +0200 + + regex: Add NOTEMPTY_ATSTART match option + + Since PCRE 8.00 it supports a variant of PCRE_NOTEMPTY that works + similarly except that it only applies to the start of the matched + string + but permits empty matches further in. + + glib/gregex.c | 32 +++++++++++++++++--------------- + glib/gregex.h | 32 ++++++++++++++++++-------------- + glib/tests/regex.c | 15 +++++++++++++-- + 3 files changed, 48 insertions(+), 31 deletions(-) + +commit 1171215014bb9406ff8ae1ea91b1c251b4e7d71b +Author: Christian Persch +AuthorDate: Thu Jun 7 22:50:52 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 15:59:39 2012 +0200 + + regex: Add PARTIAL_HARD match option + + Since PCRE 8.00 it supports a new partial matching method + PCRE_PARTIAL_HARD. + + glib/gregex.c | 21 +++++++++++++++++---- + glib/gregex.h | 9 ++++++++- + glib/tests/regex.c | 11 +++++++++-- + 3 files changed, 34 insertions(+), 7 deletions(-) + +commit 0a2967030af2a5cce9fd6ae916a535f26239bcd3 +Author: Christian Persch +AuthorDate: Thu Jun 7 20:12:11 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 15:59:39 2012 +0200 + + regex: Add JavaScript compat mode + + Since PCRE 7.7, there's a flag that changes the behaviour to be more + JavaScript compatible. Since it's no effort to expose it, just do so. + + glib/gregex.c | 52 + ++++++++++++++++++++++++++++++++-------------------- + glib/gregex.h | 8 +++++++- + glib/tests/regex.c | 1 + + 3 files changed, 40 insertions(+), 21 deletions(-) + +commit e5550a24db48ce6f67b0f3b8df9dc467087c941b +Author: Christian Persch +AuthorDate: Thu Jun 7 18:11:49 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 15:59:39 2012 +0200 + + regex: Don't leak internal PCRE options + + g_regex_get_compile_get_compile_flags() and g_regex_get_match_flags() + were leaking PCRE flags that don't exist in the corresponding + public GRegexCompileFlags and GRegexMatchFlags; this change masks + these internal flags. + + glib/gregex.c | 36 +++++++++++++++++++++------ + glib/tests/regex.c | 73 + +++++++++++++++++++++++++++++++++++++----------------- + 2 files changed, 78 insertions(+), 31 deletions(-) + +commit 26d91ddc08b41533a6952014fd9c19c80865e840 +Author: Christian Persch +AuthorDate: Thu Jun 7 16:44:52 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 15:59:39 2012 +0200 + + regex: Add BSR_ANYCRLF and BSR_ANY match options + + These flags override the compile option at match time. They use + PCRE_BSR_ANYCRLF + and PCRE_BSR_UNICODE, resp., which make \R match only CR, LF and CRLF, + or any + Unicode newline character or character sequences, resp. + + glib/gregex.c | 6 +++++- + glib/gregex.h | 13 ++++++++++++- + 2 files changed, 17 insertions(+), 2 deletions(-) + +commit 88ac3839f5d3d8d05ea7ea391209dff378866f57 +Author: Christian Persch +AuthorDate: Thu Jun 7 16:44:10 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 15:59:39 2012 +0200 + + regex: Add BSR_ANYCRLF compile option + + When this flag is set, \R only matches CR, LF and CRLF. + + glib/gregex.c | 4 +++- + glib/gregex.h | 7 ++++++- + 2 files changed, 9 insertions(+), 2 deletions(-) + +commit 86a04a05e6b697361c58b1577c52b4a713bf18d3 +Author: Christian Persch +AuthorDate: Thu Jun 7 16:42:50 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 15:59:39 2012 +0200 + + regex: Fix newline definition for system PCRE + + While we PCRE_BSR_UNICODE is the default in the internal PCRE, + that may + not be true for the system one. Force the PCRE_BSR_UNICODE flag on it. + + glib/gregex.c | 6 ++++++ + glib/tests/regex.c | 3 ++- + 2 files changed, 8 insertions(+), 1 deletion(-) + +commit 91ba8ae1560d4132e4ed2631b8e69684c3c863d3 +Author: Christian Persch +AuthorDate: Thu Jun 7 16:07:04 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 15:59:38 2012 +0200 + + regex: Don't return from inside a g_once_init_enter/leave block + + When using the system PCRE, and it was compiled with incompatible + options, + the code was returning from inside a g_once_init_enter/leave block + without + calling g_once_init_leave(). + + glib/gregex.c | 36 ++++++++++++++++-------------------- + 1 file changed, 16 insertions(+), 20 deletions(-) + +commit 69a12e3275c6e068929d2ed69ba1af87df0f851b +Author: Christian Persch +AuthorDate: Thu Jun 7 15:57:15 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 15:59:34 2012 +0200 + + regex: Add accessor for PCRE_INFO_HASCRORLF + + This flag is new in PCRE 7.3, and checks whether there is an explicit + CR or LF reference in the pattern. + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gregex.c | 21 +++++++++++++++++++++ + glib/gregex.h | 1 + + glib/tests/regex.c | 11 +++++++++++ + 5 files changed, 35 insertions(+) + +commit 7ada9765160ce8a41fae0a0e0435ad00a8037601 +Author: Christian Persch +AuthorDate: Thu Jun 7 15:36:11 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 14:17:34 2012 +0200 + + regex: Remove message for unused error code + + Since PCRE 7.3 the PCRE_ERROR_NULLWSLIMIT error is not returned + anymore. + + glib/gregex.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 592531019ede1c6d48304ba8babce0a5470d16d7 +Author: Christian Persch +AuthorDate: Thu Jun 7 15:26:02 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 14:17:34 2012 +0200 + + regex: Add NEWLINE_ANYCRLF match option + + This PCRE option is new in PCRE 7.1. + + glib/gregex.c | 38 ++++++++++++++++++++------------------ + glib/gregex.h | 31 +++++++++++++++++++------------ + 2 files changed, 39 insertions(+), 30 deletions(-) + +commit c8c049b177dc40c0242409389ddccfa59ba88953 +Author: Christian Persch +AuthorDate: Thu Jun 7 15:23:37 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 14:17:34 2012 +0200 + + regex: Add NEWLINE_ANYCRLF compile option + + The PCRE_NEWLINE_ANYCRLF option is new in PCRE 7.1. With it set, + the only + only newline sequences recognised are CR, LF and CRLF. + + glib/gregex.c | 4 +++- + glib/gregex.h | 21 ++++++++++++++------- + glib/tests/regex.c | 2 -- + 3 files changed, 17 insertions(+), 10 deletions(-) + +commit 7e8b5ea442f235f5e272b0fe7a4768bf897b6aad +Author: Christian Persch +AuthorDate: Thu Jun 7 14:48:51 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Jul 2 14:17:34 2012 +0200 + + regex: Assert that our flags values are the same as PCRE's + + We rely on those flags having the same values as PCRE's (so we + can pass + them right through), so assert this at compile time. + + glib/gregex.c | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit 03611f7c0670ea14eedbc121972aed7ce60bb9ee +Author: Simon Feltman +AuthorDate: Wed Jun 13 23:20:17 2012 -0700 +Commit: Colin Walters +CommitDate: Sun Jul 1 11:14:54 2012 -0400 + + Updated codegen to work with python3. + + Most changes were just replacing usage of "has_key" with "in". + Also updated the sorting function which was simplified and + changed to a "key" function instead of "cmp" (which is no longer + supported in python3. Verified everything builds with + python 2.7 and 3. + + https://bugzilla.gnome.org/show_bug.cgi?id=678066 + + gio/gdbus-2.0/codegen/codegen.py | 15 +++++---------- + gio/gdbus-2.0/codegen/codegen_docbook.py | 8 +++----- + gio/gdbus-2.0/codegen/codegen_main.py | 4 ++-- + gio/gdbus-2.0/codegen/parser.py | 22 +++++++++++----------- + gio/gdbus-2.0/codegen/utils.py | 17 +++++------------ + 5 files changed, 26 insertions(+), 40 deletions(-) + +commit 6d5484b2962c2a365983e8a37295f298909bca00 +Author: Christian Persch +AuthorDate: Fri Jun 8 01:08:10 2012 +0200 +Commit: Christian Persch +CommitDate: Sun Jul 1 14:00:11 2012 +0200 + + regex: Handle PCRE_ERROR_RECURSIONLOOP + + Was missing from the error conversion routine. + + glib/gregex.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 7e5615138af8a5044bb5adac0804a59073d4cb69 +Author: Christian Persch +AuthorDate: Wed Jun 6 21:55:01 2012 +0200 +Commit: Christian Persch +CommitDate: Sun Jul 1 14:00:11 2012 +0200 + + regex: Update GRegexError with newer PCRE error codes + + Update the GRegexError enum with new PCRE errors up to PCRE 8.30. + + https://bugzilla.gnome.org/show_bug.cgi?id=677579 + + glib/gregex.c | 145 + +++++++++++++++++++++++++++++++++++------------------ + glib/gregex.h | 40 +++++++++++++-- + glib/tests/regex.c | 51 +++++++++++++++++-- + 3 files changed, 181 insertions(+), 55 deletions(-) + +commit 3be1d864d838a9015866656764c0a615f63f63ec +Author: Christian Persch +AuthorDate: Thu Jun 7 18:22:44 2012 +0200 +Commit: Christian Persch +CommitDate: Sun Jul 1 14:00:11 2012 +0200 + + regex: Simplify regex compile tests + + Use a macro instead of repeating the same code over and over again. + + glib/tests/regex.c | 106 + +++++++++++------------------------------------------ + 1 file changed, 22 insertions(+), 84 deletions(-) + +commit 20ab7e2aea955e4a70be43cbb6e4237afd98bf7b +Author: Christian Persch +AuthorDate: Thu Jun 7 19:53:17 2012 +0200 +Commit: Christian Persch +CommitDate: Sun Jul 1 14:00:11 2012 +0200 + + regex: Deprecate an obsolete error code + + G_REGEX_ERROR_DEFINE_REPETION is dead and never raised by PCRE. + + glib/gregex.c | 3 --- + glib/gregex.h | 2 +- + 2 files changed, 1 insertion(+), 4 deletions(-) + +commit d9e8d3e0f0fc00435b161dd3dfb1b8727922ba00 +Author: Christian Persch +AuthorDate: Wed Jun 6 21:54:08 2012 +0200 +Commit: Christian Persch +CommitDate: Sun Jul 1 14:00:11 2012 +0200 + + regex: Fix PCRE error code conversion + + Use the shifted error codes for comparisions. + + https://bugzilla.gnome.org/show_bug.cgi?id=677578 + + glib/gregex.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit 3173fca9cc520785f82e602fe830c220c2d1820f +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Sat Jun 30 09:55:26 2012 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Sat Jun 30 09:55:26 2012 +0700 + + Updated Vietnamese translation + + po/vi.po | 103 + +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 64 insertions(+), 39 deletions(-) + +commit 7ddefe3f4b2221147bd77f362760e8fb00f7e624 +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Sat Jun 30 09:42:53 2012 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Sat Jun 30 09:42:53 2012 +0700 + + po/vi: import from Damned Lies + + po/vi.po | 661 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 362 insertions(+), 299 deletions(-) + +commit 64bfbc2cf074de087c4e195d6409af9c24dc2f28 +Author: Matthias Clasen +AuthorDate: Fri Jun 29 13:47:15 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 29 14:16:55 2012 -0400 + + GOptionContext: Don't show headings without options + + If the only entry in the main group is for the rest args, + don't bother printing "Application Options". + + glib/goption.c | 2 ++ + glib/tests/option-context.c | 27 ++++++++++++++++++++++++++- + 2 files changed, 28 insertions(+), 1 deletion(-) + +commit 08cfcdc81add6f6f2247b1cc82d2c15ad27001f0 +Author: Johan Dahlin +AuthorDate: Fri Jun 29 11:59:23 2012 -0300 +Commit: Johan Dahlin +CommitDate: Fri Jun 29 11:59:33 2012 -0300 + + Use the same Python as we found in configure + + Don't assume /usr/bin/python is python 2.x, on newer Ubuntu versions + it's actually python 3.x. + + gio/gdbus-2.0/codegen/Makefile.am | 2 +- + gio/gdbus-2.0/codegen/gdbus-codegen.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit df319ca49ca1e8caff1a4f17e8e53628b33b8d56 +Author: Tom Tryfonidis +AuthorDate: Thu Jun 28 17:44:14 2012 +0300 +Commit: Tom Tryfonidis +CommitDate: Thu Jun 28 17:44:14 2012 +0300 + + Updated Greek translation + + po/el.po | 94 + +++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 49 insertions(+), 45 deletions(-) + +commit d023b81a7a261782f2c88df7751f3476bd802b99 +Author: Martin Pitt +AuthorDate: Wed Jun 27 16:30:38 2012 +0200 +Commit: Martin Pitt +CommitDate: Thu Jun 28 15:57:22 2012 +0200 + + Fix /contenttype/guess test + + After fixing bug 674452 this test case now reliably fails, as "ABC + abc" is text + and definitively not PowerPoint. It previously worked as + g_content_type_guess() + was reading beyond the boundary of the data due to specifying -1 + as data + length. + + Update that test case to expect a PO template instead, and add two + more with a + definitive PO template syntax and some binary data. We do not + currently have a + MIME magic for PowerPoint, so we cannot actually detect it with + certainty, but + at least make sure that the returned MIME type is correct. + + https://bugzilla.gnome.org/show_bug.cgi?id=678941 + + gio/tests/contenttype.c | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) + +commit c35106fcc4a736a2cdd3566042da15216dea415b +Author: Alexander Larsson +AuthorDate: Thu Jun 28 15:38:06 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Jun 28 15:38:06 2012 +0200 + + Fix the mimetype default fix + + We need to ignore the defaults.list item only when there + was a mimetype handler found in a previous mimetype, not + if one was found for the same mimetype as the one that + is listed in defaults.list (same for the new-style defaults). + + gio/gdesktopappinfo.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit f14c0112d07832b0ae4c75fd8d348e8f15d131d1 +Author: Alexander Larsson +AuthorDate: Thu Jun 28 14:50:37 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Jun 28 15:05:03 2012 +0200 + + Fix default app lookup wrt parent types and defaults.list + + There was an issue when looking up the default handler + for a type where a supertype was listed in defaults.list. + We would pick the default for the parent type even if + there was a handler for the more specific type. + + In the case of the new-style defaults marking ( + "Default Applications" in mimeapps.list) we were already + checking for a more specific handler befor using a default, + but we also need to do a similar check for the defaults.list + case. + + https://bugzilla.gnome.org/show_bug.cgi?id=678944 + + gio/gdesktopappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1ae30806403e556c8297a16a25a18687d9e80f89 +Author: Stef Walter +AuthorDate: Thu Jun 28 14:41:39 2012 +0200 +Commit: Stef Walter +CommitDate: Thu Jun 28 14:43:12 2012 +0200 + + GTlsInteraction: Fix incorrect locking of mutex + + * Fix incorrect locking of mutex in + g_tls_interaction_invoke_ask_password() + + https://bugzilla.gnome.org/show_bug.cgi?id=678758 + + gio/gtlsinteraction.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 139c1ce9884a91be167ab9d48d3c4b0df89dd112 +Author: Martin Pitt +AuthorDate: Wed Jun 27 09:25:37 2012 +0200 +Commit: Martin Pitt +CommitDate: Wed Jun 27 16:00:27 2012 +0200 + + gio/tests/contenttype: Call g_content_type_guess() with valid data len + + g_content_type_guess() requires specifying a valid data length. Fixes + a + segfault when running the test. + + Also add an explicit check for this and return XDG_MIME_TYPE_UNKNOWN + when + data_size is specified as -1, to avoid crashing. + + https://bugzilla.gnome.org/show_bug.cgi?id=674452 + + gio/gcontenttype.c | 8 ++++++++ + gio/tests/contenttype.c | 4 ++-- + 2 files changed, 10 insertions(+), 2 deletions(-) + +commit 95f29687e14423ca541cac1c00137375b935168d +Author: Martin Pitt +AuthorDate: Wed Jun 27 11:46:28 2012 +0200 +Commit: Martin Pitt +CommitDate: Wed Jun 27 15:32:38 2012 +0200 + + /mainloop/timeouts test: Reduce race condition + + Due to load, particular traits of the architecture, or other + circumstances, the + /mainloop/timeouts sometimes manages to call the "every + 100 ms" timer loop only 9 times in 1050 ms. + + This is an inherent race-condition in the test; allow it some slack + and accept + 9 times as well. + + https://bugzilla.gnome.org/show_bug.cgi?id=678959 + + glib/tests/mainloop.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 240ef2b9e830f2aa92356368902bec813f3c1ef8 +Author: Philipp Kern +AuthorDate: Wed Jun 27 10:57:50 2012 +0200 +Commit: Martin Pitt +CommitDate: Wed Jun 27 10:59:29 2012 +0200 + + valuetransform: Fix definition of ulong_bool + + On big endian 64 bit machines such as s390x, an uint is too small + to hold a + ulong_bool; it needs to be an actual ulong. + + https://bugzilla.gnome.org/show_bug.cgi?id=678949 + http://bugs.debian.org/662057 + + gobject/gvaluetransform.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c5e5e95a217dc43a70bd998fce16ed93225e0cfd +Author: Alexander Shopov +AuthorDate: Wed Jun 27 07:17:40 2012 +0300 +Commit: Alexander Shopov +CommitDate: Wed Jun 27 07:17:40 2012 +0300 + + Updated Bulgarian translation + + po/bg.po | 391 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 203 insertions(+), 188 deletions(-) + +commit 72af44cb1249f02cbe56376a751e3ae6d3b39ea8 +Author: Martin Pitt +AuthorDate: Tue Jun 26 18:32:29 2012 +0200 +Commit: Martin Pitt +CommitDate: Tue Jun 26 18:34:08 2012 +0200 + + Allow slightly too small poll duration in /socket/timed_wait test + + Sometimes the poll duration in the /socket/timed_wait test is + slightly lower + than the requested 100000, causing failures like + + ERROR:/build/buildd/glib2.0-2.33.2/./gio/tests/socket.c:619:test_timed_wait: + assertion failed (poll_duration > = 100000): (99240 >= 100000) + FAIL + + Adjust the test to also allow some jitter in the "too small" + direction, similar + to the already existing span for "slightly too large". + + https://bugzilla.gnome.org/show_bug.cgi?id=678881 + + gio/tests/socket.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d6aa3b3bdd9f0fe1d9f2d2eed1d881bc189bcfe8 +Author: Colin Walters +AuthorDate: Mon Jun 25 20:46:28 2012 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 26 12:26:05 2012 -0400 + + GTestDBus: Don't call into gvfs + + https://bugzilla.gnome.org/show_bug.cgi?id=678808 + + gio/gtestdbus.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 55bac5da0ada8f46824a4d565cdd8ea7e3774a47 +Author: Dan Winship +AuthorDate: Wed Apr 11 13:08:13 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 26 08:40:32 2012 -0400 + + GMainContext: reorganize source list to avoid O(n) behavior + + Rather than having a single priority-ordered list of GSources, store a + list of queues of each priority level. This means that adding a source + is now O(n) in the number of unique priority levels currently being + used, rather than O(n) in the total number of sources. + + https://bugzilla.gnome.org/show_bug.cgi?id=619329 + + glib/gmain.c | 154 + ++++++++++++++++++++++++++++++++++++++++++++++++----------- + 1 file changed, 126 insertions(+), 28 deletions(-) + +commit aaaaab91de10445a178e8183a95d98189249e868 +Author: Dan Winship +AuthorDate: Fri Jun 22 22:21:05 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 26 08:40:31 2012 -0400 + + gmain: add GSourceIter + + add an explicit iterator for GMainContext sources + + https://bugzilla.gnome.org/show_bug.cgi?id=619329 + + glib/gmain.c | 154 + +++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 92 insertions(+), 62 deletions(-) + +commit 8e65c304315a7f54addd9c2771d20eca007f9d6a +Author: Dan Winship +AuthorDate: Sat Jun 23 12:01:40 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 26 08:40:31 2012 -0400 + + gmain: rename some variables for clarity + + https://bugzilla.gnome.org/show_bug.cgi?id=619329 + + glib/gmain.c | 28 ++++++++++++++-------------- + 1 file changed, 14 insertions(+), 14 deletions(-) + +commit 532f463eaf48d6a560977fd64479cfa05433162e +Author: Dan Winship +AuthorDate: Wed Apr 11 10:22:45 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 26 08:40:31 2012 -0400 + + gmain: child sources must always have same priority as parent + + A child source does not have a priority of its own; it must have the + same priority as its parent. Enforce this in + g_source_set_priority_unlocked(). + + https://bugzilla.gnome.org/show_bug.cgi?id=619329 + + glib/gmain.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit d981d79a4291f76373f7f0e3abec762977133e27 +Author: Ryan Lortie +AuthorDate: Tue Aug 30 12:15:04 2011 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 26 08:40:31 2012 -0400 + + GSource: initialise ->priv on construct + + For efficiency, we waited until setting up child sources to allocate + ->priv. Simplify things a bit by allocating it from the start. + + https://bugzilla.gnome.org/show_bug.cgi?id=619329 + + glib/gmain.c | 39 ++++++++++++++------------------------- + 1 file changed, 14 insertions(+), 25 deletions(-) + +commit 56de38da7dc4ffd1c60c336211806e345dbcaf42 +Author: Dan Winship +AuthorDate: Sun Jun 24 09:48:10 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 26 08:40:31 2012 -0400 + + tests: add a timing test for adding lots of GSources + + https://bugzilla.gnome.org/show_bug.cgi?id=619329 + + tests/.gitignore | 1 + + tests/Makefile.am | 2 + + tests/sources.c | 189 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 192 insertions(+) + +commit 4780ee5d4a6057312abee9a8fcaad45a9897fe0e +Author: Ryan Lortie +AuthorDate: Mon Jun 25 23:23:36 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 25 23:23:58 2012 -0400 + + glib/: gtk-doc cleanup + + docs/reference/glib/glib-overrides.txt | 5 +++++ + glib/docs.c | 3 +++ + glib/gkeyfile.c | 2 +- + glib/gunicode.h | 2 +- + 4 files changed, 10 insertions(+), 2 deletions(-) + +commit 130c249eacfba3b77ec110880661386e7945b898 +Author: Colin Walters +AuthorDate: Mon Jun 25 19:37:05 2012 -0400 +Commit: Colin Walters +CommitDate: Mon Jun 25 19:37:05 2012 -0400 + + Fix previous commit + + gio/tests/actions.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b837cdde69fa39ed10aaf8791ab656ad41dedeb0 +Author: Colin Walters +AuthorDate: Mon Jun 25 18:14:10 2012 -0400 +Commit: Colin Walters +CommitDate: Mon Jun 25 18:14:10 2012 -0400 + + gio/tests/actions: Plug a memory leak + + gio/tests/actions.c | 1 + + 1 file changed, 1 insertion(+) + +commit b65194e8dfd3d9c3fabb16a189c0b326c175f9d5 +Author: Colin Walters +AuthorDate: Mon Jun 25 17:05:45 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 25 17:07:16 2012 -0400 + + GIOScheduler: Disconnect from cancellable after job completes + + This was causing crashes when a cancellable was canceled after the job + had completed. + + https://bugzilla.gnome.org/show_bug.cgi?id=678576 + + gio/gioscheduler.c | 49 ++++++++++++++++++++++--------------------------- + 1 file changed, 22 insertions(+), 27 deletions(-) + +commit 03f2f3b0027e9239fc501539b1c16aefaee863d6 +Author: Ryan Lortie +AuthorDate: Mon Jun 25 16:55:31 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 25 16:55:31 2012 -0400 + + *bump* + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a5ed95c9ad973e30c1c1938c55ffe60f4a14dab7 +Author: Ryan Lortie +AuthorDate: Mon Jun 25 16:29:53 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 25 16:29:53 2012 -0400 + + GLib 2.33.3 + + NEWS | 44 ++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 45 insertions(+), 1 deletion(-) + +commit 115ca3d8970ca32d824a201a9cc8f1fb24f3155e +Author: Ryan Lortie +AuthorDate: Mon Jun 25 10:37:51 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 25 16:19:03 2012 -0400 + + Revert "GIOScheduler: Avoid constant iteration over pending job list" + + This reverts commit 2839297686a9305b4fa909b93c337ef1d1a5e94b. + + Conflicts: + + gio/gioscheduler.c + + https://bugzilla.gnome.org/show_bug.cgi?id=678576 + + gio/gioscheduler.c | 41 ++++++++++++++++++++++++++--------------- + 1 file changed, 26 insertions(+), 15 deletions(-) + +commit 1354ef25402e0d340aa52521a5f51b1fb387705c +Author: Lars Uebernickel +AuthorDate: Mon Jun 25 18:29:01 2012 +0200 +Commit: Lars Uebernickel +CommitDate: Mon Jun 25 18:29:01 2012 +0200 + + GDbusActionGroup: always set strict when _query_action fails + + gio/gdbusactiongroup.c | 1 + + 1 file changed, 1 insertion(+) + +commit 4b66dc1ca6657171d7d9b45568b3479653a525f8 +Author: Fran Diéguez +AuthorDate: Mon Jun 25 00:01:07 2012 +0200 +Commit: Fran Diéguez +CommitDate: Mon Jun 25 00:01:07 2012 +0200 + + Updated Galician translations + + po/gl.po | 367 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 191 insertions(+), 176 deletions(-) + +commit bea994199379f4e09091b030c46fd922b304d0d2 +Author: Matthias Clasen +AuthorDate: Sat Jun 23 20:55:51 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 23 21:01:33 2012 -0400 + + Mark utf8 performance tests as such + + glib/tests/utf8-performance.c | 26 ++++++++++++-------------- + 1 file changed, 12 insertions(+), 14 deletions(-) + +commit c5561ff6992bfbf2b92af401bc6f96317514b4a3 +Author: Matthias Clasen +AuthorDate: Sat Jun 23 17:58:51 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 23 17:59:37 2012 -0400 + + Remove a few redundant ;s + + gio/gdbusobjectmanagerclient.c | 2 +- + gio/gresourcefile.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 02eed18a4e745b4b4a0f0d5d2892faaecbd2c23d +Author: Phil Clayton +AuthorDate: Tue Jun 12 16:09:19 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sat Jun 23 17:54:33 2012 -0400 + + Add missing annotation to GDBusConnection::closed + + Add annotation (allow-none) to the parameter error. + + https://bugzilla.gnome.org/show_bug.cgi?id=677952 + + gio/gdbusconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 90f70099d86dbf6c249137f9fbaead1df8002f6e +Author: Emmanuele Bassi +AuthorDate: Thu May 31 23:48:35 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sat Jun 23 17:53:22 2012 -0400 + + Update the comment in gmarshal.list + + The current note makes it look like the marshaller code generation has + been deprecated in favour of the libffi-based generic marshaller; this + is not the case, so we should probably clarify the point a bit. + + https://bugzilla.gnome.org/show_bug.cgi?id=677235 + + gobject/gmarshal.list | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit 1c6070a6792b78f44df9746ee96116cbbcc4dd40 +Author: Matthias Clasen +AuthorDate: Sat Jun 23 17:51:11 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 23 17:51:11 2012 -0400 + + Add a test for G_USER_DIRECTOR_DESKTOP + + Based on a patch by Marc-Antoine Perennou, + https://bugzilla.gnome.org/show_bug.cgi?id=676594 + + glib/tests/utils.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit 53b48dfd3bce21fc6b52128859b01329efa10d52 +Author: Christian Persch +AuthorDate: Sun Jun 17 22:51:44 2012 +0200 +Commit: Matthias Clasen +CommitDate: Sat Jun 23 17:32:15 2012 -0400 + + regex: Fix unicode othercasing + + The old _pcre_ucp_othercase() function was wrong in returning + NOTACHAR (0xffffffff) for characters that aren't changed by upper- + and lower-casing. This led to PCRE internally using incorrect (or + at least inefficient) character classes when using G_REGEX_CASELESS. + + E.g. [Z-\x{100}] turned into: + + [Z\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{39c}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{fffe}\x{178}z-\x{101}] + + instead of the expected and efficient + + [Z\x{39c}\x{178}z-\x{101}] + + https://bugzilla.gnome.org/show_bug.cgi?id=678273 + + glib/pcre/pcre_tables.c | 17 +++++++---------- + 1 file changed, 7 insertions(+), 10 deletions(-) + +commit 22e9f72a8e23c9469c2891e48e082be664429dac +Author: Matthias Clasen +AuthorDate: Sat Jun 23 17:30:10 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 23 17:30:10 2012 -0400 + + Add a note of caution to the g_slist_delete_link() docs + + glib/gslist.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 905184b3ef04ea6068bd115111354cebe34d3bbc +Author: Sasi Bhushan Boddepalli +AuthorDate: Sat Jun 23 10:16:28 2012 +0530 +Commit: Sasi Bhushan Boddepalli +CommitDate: Sat Jun 23 10:16:28 2012 +0530 + + Updated Telugu Translation + + po/te.po | 540 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 305 insertions(+), 235 deletions(-) + +commit 991d07d66a8b111131181a8db15abbb042ee7c6d +Author: Colin Walters +AuthorDate: Thu Jun 21 11:10:00 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 22 11:46:06 2012 -0400 + + GIOScheduler: Use a GList, not GSList for jobs + + In general, code using g_slist_delete_link() is broken, because it + potentially requires an O(n) traversal. Just switch to GList in this + case. + + The performance hit here was exacerbated by the fact that we were + holding a mutex that needed to be accessed by all threads. + + https://bugzilla.gnome.org/show_bug.cgi?id=678576 + + gio/gioscheduler.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 2839297686a9305b4fa909b93c337ef1d1a5e94b +Author: Colin Walters +AuthorDate: Thu Jun 21 10:20:20 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 22 11:46:06 2012 -0400 + + GIOScheduler: Avoid constant iteration over pending job list + + The iteration over the list (while holding a mutex) was a serious + performance hit for asynchronous I/O. We can just use + g_cancellable_connect(). + + https://bugzilla.gnome.org/show_bug.cgi?id=678576 + + gio/gioscheduler.c | 41 +++++++++++++++-------------------------- + 1 file changed, 15 insertions(+), 26 deletions(-) + +commit a8ddd52a45ccf1e9a6aa6b5d873e12eda3a205df +Author: Colin Walters +AuthorDate: Thu Jun 21 15:44:16 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 22 10:34:46 2012 -0400 + + GRand: Check return value of fopen directly + + This doesn't fix anything, it should just silence some static analysis + tools. + + glib/grand.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit 01d8d43d0b66f349a38075a3ebfd82fc9bed084a +Author: Colin Walters +AuthorDate: Thu Jun 21 15:37:39 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 22 10:34:03 2012 -0400 + + gspawn: Abort if we can't open /dev/null + + This really "shouldn't happen", but if we have an assertion here, it + will help static analysis tools know we're not hitting undefined + state. + + glib/gspawn.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 7d622157f055d9fb0ae3686f2b7a4fd1952af258 +Author: Colin Walters +AuthorDate: Thu Jun 21 15:33:51 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 22 10:32:26 2012 -0400 + + tests/unix: Ensure buffer is NUL terminated + + glib/tests/unix.c | 1 + + 1 file changed, 1 insertion(+) + +commit 56411bb67807cb5306f495d41276fe6855cdcee7 +Author: Colin Walters +AuthorDate: Thu Jun 21 12:12:53 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 22 10:32:25 2012 -0400 + + gsignal: Properly handle NULL nodes + + gobject/gsignal.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit ccd30d6816564db42b2ce13afc6bdf32274206e8 +Author: Colin Walters +AuthorDate: Thu Jun 21 12:12:33 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 22 10:32:25 2012 -0400 + + gresourcefile.c: Remove stray semicolon + + gio/gresourcefile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c1ada372e968db4c5ccdc684d21b2a3e53514b85 +Author: Colin Walters +AuthorDate: Thu Jun 21 12:08:05 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 22 10:32:25 2012 -0400 + + gmenu: Remove stray semicolon in g_menu_clear_item() + + gio/gmenu.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 598c3d233a560c10133b9a8a426ae87288a98584 +Author: Colin Walters +AuthorDate: Thu Jun 21 12:06:34 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 22 10:32:25 2012 -0400 + + tests: Add missing initializer for return value + + gio/tests/test-pipe-unix.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f626cb3c16e415a78e21c7b1009e0fb9851fa3b4 +Author: Colin Walters +AuthorDate: Thu Jun 21 12:05:39 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 22 10:32:25 2012 -0400 + + tests: Add missing va_end() + + gio/tests/gapplication.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit eef6f0add83c9a82b7544b519f292a90d9356a74 +Author: Colin Walters +AuthorDate: Thu Jun 21 12:00:04 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 22 10:32:25 2012 -0400 + + gfileutils: Remove extra fclose() + + This is a regression introduced by: + commit 6ac8e6108cf15884e28fe1ecd3042dfce0e11dfd + Author: Matthias Clasen + Date: Tue Jun 14 10:12:46 2011 -0400 + + Don't leak resources in error cases + + glib/gfileutils.c | 1 - + 1 file changed, 1 deletion(-) + +commit e756bef2e3b93a09b38a4f793a7b7265584457c8 +Author: Daniel Mustieles +AuthorDate: Fri Jun 22 13:44:29 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Fri Jun 22 13:44:29 2012 +0200 + + Updated Spanish translation + + po/es.po | 61 + ++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 32 insertions(+), 29 deletions(-) + +commit 8ed955ceba9868bff43bdd591a36c12294735ab2 +Author: Stef Walter +AuthorDate: Sun May 13 07:44:57 2012 +0200 +Commit: Stef Walter +CommitDate: Fri Jun 22 08:29:51 2012 +0200 + + gresolver: More robust parsing of DNS responses + + * Handle truncated responses, and invalid names + + https://bugzilla.gnome.org/show_bug.cgi?id=675966 + + gio/gresolver.c | 199 + ++++++++++++++++++++++++++++++++++++++------------------ + 1 file changed, 134 insertions(+), 65 deletions(-) + +commit 49e50757076b589bd21274221b3f69f7b2b785f3 +Author: Matthew Barnes +AuthorDate: Thu Jun 21 23:39:14 2012 -0400 +Commit: Matthew Barnes +CommitDate: Thu Jun 21 23:41:54 2012 -0400 + + Add g_dbus_object_manager_server_is_exported() + + Returns whether a GDBusObjectSkeleton is exported on a + GDBusObjectManagerServer. + + https://bugzilla.gnome.org/show_bug.cgi?id=678539 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdbusobjectmanagerserver.c | 34 + ++++++++++++++++++++++++++++++++++ + gio/gdbusobjectmanagerserver.h | 2 ++ + gio/gio.symbols | 1 + + 4 files changed, 38 insertions(+) + +commit aae1633d0f0c75b7d9c2dd7b8c10eb279f70fc0d +Author: Colin Walters +AuthorDate: Thu Jun 21 18:32:06 2012 -0400 +Commit: Colin Walters +CommitDate: Thu Jun 21 18:32:23 2012 -0400 + + GUnixVolumeMonitor: Make use of new g_list_copy_deep() + + gio/gunixvolumemonitor.c | 12 ++---------- + 1 file changed, 2 insertions(+), 10 deletions(-) + +commit 2fd6eb7e1cfc878d011ec0b7e58c5e696186516e +Author: Jonh Wendell +AuthorDate: Thu Jun 21 12:23:23 2012 -0300 +Commit: Jonh Wendell +CommitDate: Thu Jun 21 17:21:30 2012 -0300 + + Adds g_list_copy_deep and g_slist_copy_deep + + They make a full (deep) copy of a list. + + In contrast with g_[s]list_copy(), these functions take a function + as a argument + to make a copy of each list element, in addition to copying the list + container itself. + + The functions g_[s]list_copy() were reimplemented to just call the + new functions + with NULL as the function argument, which will behave like current + implementation. + + https://bugzilla.gnome.org/show_bug.cgi?id=675024 + + docs/reference/glib/glib-sections.txt | 2 ++ + glib/glib.symbols | 2 ++ + glib/glist.c | 48 + ++++++++++++++++++++++++++++++++--- + glib/glist.h | 7 +++++ + glib/gslist.c | 48 + ++++++++++++++++++++++++++++++++--- + glib/gslist.h | 6 +++++ + glib/tests/list.c | 29 +++++++++++++++++++++ + 7 files changed, 136 insertions(+), 6 deletions(-) + +commit e0f4b2b03b877e0360f56836ebfe454aa3a9dca5 +Author: Dan Winship +AuthorDate: Thu Jun 21 15:13:06 2012 -0400 +Commit: Dan Winship +CommitDate: Thu Jun 21 15:13:06 2012 -0400 + + gio/tests/proxy-test: fix cleanup + + make sure the proxy threads are in the "waiting for a connection" + state when we do the final cleanup, or else there are race conditions + involving which thread processes the GCancellable cancellation first. + + gio/tests/proxy-test.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit e9ec1ad0689dfbb1121e1c5fe5b1aedbe2de568f +Author: Matthias Clasen +AuthorDate: Thu Jun 21 06:11:58 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 21 06:11:58 2012 -0400 + + Install bash completion files in /usr/share/ + + The bash-completion code nowadays expects completion files to + be installed in /usr/share/bash-completion/completions, and + expects them to be named like the command they are completing + for. + + https://bugzilla.gnome.org/show_bug.cgi?id=677782 + + gio/Makefile.am | 8 ++-- + gio/completion/gdbus | 33 ++++++++++++++++ + gio/completion/gresource | 58 +++++++++++++++++++++++++++ + gio/completion/gsettings | 84 + ++++++++++++++++++++++++++++++++++++++++ + gio/gdbus-bash-completion.sh | 33 ---------------- + gio/gresource-bash-completion.sh | 58 --------------------------- + gio/gsettings-bash-completion.sh | 84 + ---------------------------------------- + 7 files changed, 179 insertions(+), 179 deletions(-) + +commit 80b6074aa27815e3c824f1e01ccb2431b03feec4 +Author: Dan Winship +AuthorDate: Wed Jun 20 10:14:01 2012 -0400 +Commit: Dan Winship +CommitDate: Wed Jun 20 10:14:01 2012 -0400 + + gio/tests/pollable: add can_poll() assertions + + Assert that socket streams and socket/pipe-based unix streams are + pollable, and file-based unix streams are not. + + https://bugzilla.gnome.org/show_bug.cgi?id=677770 + + gio/tests/pollable.c | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) + +commit 7d0db042234165678f5dfafef3dd96d3af97b56c +Author: Dan Winship +AuthorDate: Mon Jun 18 15:31:47 2012 -0400 +Commit: Dan Winship +CommitDate: Wed Jun 20 08:20:50 2012 -0400 + + gdbus: fix generated code to not warn under -Wfloat-equal + + https://bugzilla.gnome.org/show_bug.cgi?id=678333 + + gio/gdbus-2.0/codegen/codegen.py | 11 +++++++++-- + gio/tests/gdbus-test-codegen.c | 31 +++++++++++++++++++++++++++++++ + 2 files changed, 40 insertions(+), 2 deletions(-) + +commit 599d1a430e787f7cda929b8b0188a01f39453e66 +Author: Chun-wei Fan +AuthorDate: Wed Jun 20 10:19:14 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Jun 20 10:19:14 2012 +0800 + + msvc_recommended_pragmas.h: Re-enable C4819 warnings + + Apparently the C4819 warnings appear due to a bug on Visual C++ + on DBCS + locales, so re-enable this. + + Add a note in the Visual C++ Readme.txt's regarding this. + + build/win32/vs10/README.txt | 7 +++++++ + build/win32/vs9/README.txt | 7 +++++++ + msvc_recommended_pragmas.h | 3 --- + 3 files changed, 14 insertions(+), 3 deletions(-) + +commit 7cf38c6ad76f5b343614bba9d31f683b7edb0620 +Author: Nilamdyuti Goswami +AuthorDate: Tue Jun 19 18:51:26 2012 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Tue Jun 19 18:51:26 2012 +0530 + + Assamese translation reviewed + + po/as.po | 1397 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 717 insertions(+), 680 deletions(-) + +commit 98f201b73b4ba5b5dfd86ebcd524ea8f73855174 +Author: Chun-wei Fan +AuthorDate: Tue Jun 19 16:35:26 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jun 19 16:35:26 2012 +0800 + + Bug 678332-gio/gconverterinputstream.c: Fix build + + Apparently the previous change to this file broke GCC builds, so + fix that. + + gio/gconverterinputstream.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 875854411a4ea5fdd1d9217d7856858d89090cb9 +Author: Chun-wei Fan +AuthorDate: Tue Jun 19 12:04:28 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jun 19 12:04:28 2012 +0800 + + Bug 678332-GIO: Fix build on Windows/non-GCC + + -gconverterinputstream.c: Avoid GCCism by not using non-standard + pointer + arithmetic on void*, but do a cast to char * as that seems to be + what the + variable was used for. + -gtestdbus.c: Don't include unistd.h unconditionally, and use + g_usleep() + instead of usleep(), as usleep() is not universally available. + + gio/gconverterinputstream.c | 2 +- + gio/gtestdbus.c | 4 +++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit 08a6f8d27f8d6c059f4c074680218f6bc66f8174 +Author: Chun-wei Fan +AuthorDate: Mon Jun 18 17:09:56 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Jun 18 17:09:56 2012 +0800 + + build/win32/vs9/glib.vsprops: Cosmetics + + Make it more consistent accross the board by using CopyDir as the + output/"install" folder. + + build/win32/vs9/glib.vsprops | 514 + ++++++++++++++++++++++--------------------- + 1 file changed, 259 insertions(+), 255 deletions(-) + +commit b81d7886525ea7d53a0bf7f8e845827eea5cf912 +Author: Martin Pitt +AuthorDate: Mon Jun 18 07:39:23 2012 +0200 +Commit: Martin Pitt +CommitDate: Mon Jun 18 07:39:23 2012 +0200 + + Fix g_utf8_validate() out argument transfer mode + + The "end" argument is unusual in g_utf8_validate(): it's not a + classic out + argument which gets allocated by the called function, but merely + points into + one of its input arguments. Thus it is "transfer none". + + https://bugzilla.gnome.org/show_bug.cgi?id=672889 + + glib/gutf8.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a1da843cb48de1ef080c20b1c8ebc9bc88688ce6 +Author: Dan Winship +AuthorDate: Sat Jun 16 10:38:45 2012 -0400 +Commit: Dan Winship +CommitDate: Sat Jun 16 10:38:50 2012 -0400 + + docs: fix an example + + docs/reference/gio/gdbus-codegen.xml | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit defa25f3d00619947720be0bcda2357bd43e718f +Author: Matthias Clasen +AuthorDate: Fri Jun 15 18:53:09 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 15 18:53:09 2012 -0400 + + GKeyFile: Deal better with blank lines + + There is no need to store a has_trailing_blank_line boolean for + each group, we can just check this at the time we assemble the data. + + This fixes a problem without roundtrips where we would sometimes + add an extra blank line between groups. + + The testcase here is inspired by + https://bugzilla.gnome.org/show_bug.cgi?id=677817 + + glib/gkeyfile.c | 12 +++--------- + glib/tests/keyfile.c | 26 ++++++++++++++++++++++++++ + 2 files changed, 29 insertions(+), 9 deletions(-) + +commit d0c8895a073625ce87bf1604b9ab72cc7e15c616 +Author: Matthias Clasen +AuthorDate: Fri Jun 15 15:16:13 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 15 15:16:13 2012 -0400 + + GWakeup: Avoid extraneous wakeups + + We were checking the wrong number here, and waking up unnecessarily. + https://bugzilla.gnome.org/show_bug.cgi?id=678052 + + glib/gmain.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6a5b3729ab447dd93ba337fa916067d5af2419dc +Author: Paolo Borelli +AuthorDate: Fri Jun 15 14:41:20 2012 +0200 +Commit: Paolo Borelli +CommitDate: Fri Jun 15 14:47:04 2012 +0200 + + Improve g_find_program_in_path documentation + + Document that g_find_program_in_path returns a newly-allocated string + + glib/gutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3647a3dcaaf0c877d0ea9398bbf5d9846a3cacfb +Author: Tom Tryfonidis +AuthorDate: Fri Jun 15 13:15:48 2012 +0300 +Commit: Tom Tryfonidis +CommitDate: Fri Jun 15 13:15:48 2012 +0300 + + Updated Greek translation + + po/el.po | 1533 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 733 insertions(+), 800 deletions(-) + +commit 211d50ac7418cd05d8a7828fca388c127e02308a +Author: Daniel Mustieles +AuthorDate: Thu Jun 14 13:48:29 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Thu Jun 14 13:48:29 2012 +0200 + + Updated Spanish translation + + po/es.po | 142 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 77 insertions(+), 65 deletions(-) + +commit a090a3680b093e7473cc5e760bdf3454f8ca9e9e +Author: Khaled Hosny +AuthorDate: Wed Jun 13 21:00:44 2012 +0200 +Commit: Khaled Hosny +CommitDate: Wed Jun 13 21:00:44 2012 +0200 + + Updated Arabic translation + + po/ar.po | 5639 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 2991 insertions(+), 2648 deletions(-) + +commit ee19ddcb1423814edc76aa03dd3c2252e9f722b4 +Author: William Jon McCann +AuthorDate: Mon Apr 30 12:51:25 2012 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 13 14:46:13 2012 -0400 + + Update to use XDG cache home for thumbnails + + https://bugzilla.gnome.org/show_bug.cgi?id=675168 + + gio/glocalfileinfo.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit e5d4af10a344eaa5eee72390858ee3cf374f35ad +Author: Matthias Clasen +AuthorDate: Wed Jun 13 14:43:29 2012 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 13 14:44:20 2012 -0400 + + Improve GTimeZone test coverage + + glib/tests/gdatetime.c | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +commit 5ff95679b805f7cc78f0579546700b6d48a35e0d +Author: Benjamin Otte +AuthorDate: Wed Jun 13 17:33:01 2012 +0200 +Commit: Benjamin Otte +CommitDate: Wed Jun 13 18:54:54 2012 +0200 + + glib-compile-resources: Forward errors from spawned processes + + We just grab stderr from gdk-pixbuf-to-csource and xmllint and include + it in the error message. It's the best we can do. + + gio/glib-compile-resources.c | 22 ++++++++++++---------- + 1 file changed, 12 insertions(+), 10 deletions(-) + +commit 6c1276eb5fcc19921d0a0584aee140bccc3f8488 +Author: Stefan Sauer +AuthorDate: Tue Jun 12 20:22:39 2012 +0200 +Commit: Stefan Sauer +CommitDate: Tue Jun 12 20:45:29 2012 +0200 + + gtype: make these cases fatal. + + Otherwise we crash with a null-ptr deref in g_object_newv and ever + there we + should not return null, as we're saying that object creation will + not return + null. + + gobject/gtype.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit 0866e1ede967e513f09bfb47166d76005e0486b2 +Author: Dan Winship +AuthorDate: Tue Jun 12 07:09:53 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 12 07:09:53 2012 -0400 + + update .gitignore + + gio/tests/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit 14eb3d3590b5c08626c4901b16e9695747d43188 +Author: Dan Winship +AuthorDate: Tue Jun 12 07:08:26 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 12 07:08:26 2012 -0400 + + gunixoutputstream: add missing can_poll() implementation + + https://bugzilla.gnome.org/show_bug.cgi?id=677770 + + gio/gunixoutputstream.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit b9ec5699cd27334fdc605875bb0eeb818de64d4a +Author: Murray Cumming +AuthorDate: Tue Jun 12 10:35:52 2012 +0200 +Commit: Murray Cumming +CommitDate: Tue Jun 12 10:35:52 2012 +0200 + + Remove trailing commas from enums + + gio/gioenums.h | 2 +- + glib/gspawn.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 6f1c4f7f056eddcbf884659ff68240c0784003c6 +Author: Matthias Clasen +AuthorDate: Mon Jun 11 10:24:03 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 11 10:25:24 2012 -0400 + + Correct the docs for g_time_zone_adjust_time + + March 13, 2010 is very ordinary. + March 14, 2010 is the special day. + + glib/gtimezone.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f47de7ec2c9f79edbb3e03f3112aa8cd1d286309 +Author: Matthias Clasen +AuthorDate: Mon Jun 11 10:23:42 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 11 10:25:24 2012 -0400 + + Improve GTimeZone test coverage + + glib/tests/gdatetime.c | 66 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 66 insertions(+) + +commit d4f885478542ad7356b44e2a9965dc1081ea80dc +Author: Matthias Clasen +AuthorDate: Mon Jun 11 07:19:42 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 11 10:25:24 2012 -0400 + + Cosmetic changes + + tests/gio-test.c | 25 ++++--------------------- + tests/iochannel-test.c | 18 +++++++----------- + 2 files changed, 11 insertions(+), 32 deletions(-) + +commit 6ee10762b5194076a7a9db80d41dbb3aa14fe287 +Author: Matthias Clasen +AuthorDate: Mon Jun 11 07:19:14 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 11 10:25:19 2012 -0400 + + Improve GOptionContext test coverage + + glib/tests/option-context.c | 111 + +++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 109 insertions(+), 2 deletions(-) + +commit c5dabac47a3613e742ebfc0c4dec4f91ab796ae8 +Author: Matthias Clasen +AuthorDate: Mon Jun 11 07:18:29 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 11 07:18:29 2012 -0400 + + Fix a typo + + It is 'entries', not 'entires'. + + glib/goption.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3e706ef88b3b433f777e552c85339b901314deaa +Author: David Zeuthen +AuthorDate: Fri Jun 8 13:30:48 2012 -0400 +Commit: David Zeuthen +CommitDate: Fri Jun 8 13:30:48 2012 -0400 + + GDBusProxy: Treat org.freedesktop.systemd1.Masked error as non-fatal + + This is useful otherwise we'll fail if a systemd service is + masked. See bug 677718 for details. + + https://bugzilla.gnome.org/show_bug.cgi?id=677718 + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 34 ++++++++++++++++++++++++++-------- + 1 file changed, 26 insertions(+), 8 deletions(-) + +commit ea826d7facabbcd05b8343554acc808275881009 +Author: Daniel Macks +AuthorDate: Wed Jun 6 22:40:26 2012 -0400 +Commit: Colin Walters +CommitDate: Thu Jun 7 07:00:44 2012 -0400 + + Fix path to aclocal in output message + + datadir is defined in terms of datarootdir by default in configure + (datadir='${datarootdir}' with ${datarootdir} not expanded), so + defining datadir must happen *after* datarootdir is defined in the + glib-gettextize shell script. Otherwise ${datarootdir} is null when it + is expanded at runtime. + + https://bugzilla.gnome.org/show_bug.cgi?id=518309 + + glib-gettextize.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9e1d4da14d8e69fb60da1a9733ac1d58d0dcd8b2 +Author: Martin Jansa +AuthorDate: Wed Jun 6 21:38:28 2012 -0400 +Commit: Colin Walters +CommitDate: Wed Jun 6 21:55:07 2012 -0400 + + configure: Add --disable-libelf option + + See + http://git.openembedded.org/openembedded-core/tree/meta/recipes-core/glib-2.0/glib-2.0/nolibelf.patch?id=1f73485a143f0aa6cd87636f3d36a7d1dfc40a3b + + Signed-off-by: Colin Walters + + configure.ac | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit 032e8dabd15133952c7c4f9da05605380b17f79f +Author: Tomas Bzatek +AuthorDate: Wed Jun 6 19:44:39 2012 +0200 +Commit: Tomas Bzatek +CommitDate: Wed Jun 6 19:44:39 2012 +0200 + + gdbus: Implement g_dbus_connection_get_last_serial() + + This patch brings an ability to retrieve serial number of the last + message sent within the current thread. + + https://bugzilla.gnome.org/show_bug.cgi?id=676825 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdbusconnection.c | 49 ++++++++++++++++++++ + gio/gdbusconnection.h | 4 ++ + gio/gio.symbols | 1 + + gio/tests/gdbus-connection.c | 90 + +++++++++++++++++++++++++++++++++++++ + 5 files changed, 145 insertions(+) + +commit 7ccfa9ce4b2352277448f66a138cc028f5fe57c8 +Author: Colin Walters +AuthorDate: Wed Jun 6 07:15:48 2012 -0400 +Commit: Colin Walters +CommitDate: Wed Jun 6 07:15:48 2012 -0400 + + tests/spawn-multithreaded: Decrease parallelism to avoid crashing + on OS X + + https://bugzilla.gnome.org/show_bug.cgi?id=677527 + + glib/tests/spawn-multithreaded.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f3ff037bd147b7d86f23108660a2fe71df5268a6 +Author: Daniel Macks +AuthorDate: Tue Jun 5 19:20:13 2012 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 5 21:26:58 2012 -0400 + + Pass -framework sub-flag without embedded whitespace + + The "-framework" linker flag takes a second word as a parameter. If + they are passed separated with whitespace, some flag-handling routines + may not know to keep the two words together as a single unit. Use + -Wl,, to pass multiple words without embedded whitespace. + + https://bugzilla.gnome.org/show_bug.cgi?id=566994 + + configure.ac | 4 ++-- + gio/Makefile.am | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 4690d85607da879e50746db64ea99a273823c25e +Author: Daniel Macks +AuthorDate: Tue Jun 5 14:16:24 2012 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 5 14:16:27 2012 -0400 + + configure: Require libelf 0.8.12 + + Older versions don't have the required API. + + (Commit message written by Colin Walters ) + + https://bugzilla.gnome.org/show_bug.cgi?id=673253 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e4a8f12e770e9483e2b7bf965711a22fad134444 +Author: Martin Pitt +AuthorDate: Tue Jun 5 18:50:36 2012 +0200 +Commit: Martin Pitt +CommitDate: Tue Jun 5 18:50:36 2012 +0200 + + g_dbus_gvariant_to_gvalue(): Add missing out annotation + + gio/gdbusutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bdf1660e2856a22aeca6b5927b5756119d6526ec +Author: Ryan Lortie +AuthorDate: Mon Jun 4 13:17:47 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 4 13:17:47 2012 -0400 + + GLib 2.33.2 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e8c5bd2bb0047677223849c2d516df8bd37606e4 +Author: Matthias Clasen +AuthorDate: Sun Jun 3 13:18:39 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 4 06:04:30 2012 -0400 + + Updates for 2.33.2 + + NEWS | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 46 insertions(+) + +commit 3e1b972c933bc4a01e8d05f1bb6c6df1ad816579 +Author: Matthias Clasen +AuthorDate: Mon Jun 4 06:00:45 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 4 06:04:29 2012 -0400 + + Improve GResource test coverage + + gio/tests/resources.c | 112 + ++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 109 insertions(+), 3 deletions(-) + +commit c7de2dd0e39bf9ef5641490b25c8a6eb17b7863a +Author: Matthias Clasen +AuthorDate: Mon Jun 4 06:00:03 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 4 06:04:29 2012 -0400 + + Improve GSocketAddress test coverage + + gio/tests/unix-fd.c | 20 ++++++++++++++++++-- + 1 file changed, 18 insertions(+), 2 deletions(-) + +commit 721366d0883c39ad31027f0f406ffca9485408ed +Author: Matthias Clasen +AuthorDate: Mon Jun 4 05:59:46 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 4 06:04:29 2012 -0400 + + Improve GNetworkMonitor test coverage + + gio/tests/network-monitor.c | 150 + ++++++++++++++++++++++++++++++-------------- + 1 file changed, 103 insertions(+), 47 deletions(-) + +commit 4ad5210b353b685dce0aae9bd7331838f6cc5f92 +Author: Matthias Clasen +AuthorDate: Mon Jun 4 05:59:27 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 4 06:04:29 2012 -0400 + + Improve GIcon test coverage + + gio/tests/g-icon.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 3129bac14c6ac5e991127f8cc51810c28306bbad +Author: Matthias Clasen +AuthorDate: Sun Jun 3 21:37:32 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 4 06:04:28 2012 -0400 + + Formatting cleanups + + gio/gvfs.c | 96 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 49 insertions(+), 47 deletions(-) + +commit eeb5140ad2b318fd5f6a7c02efbd0b33859975c2 +Author: Matthias Clasen +AuthorDate: Sun Jun 3 19:51:47 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 4 06:04:28 2012 -0400 + + Improve GMenu test coverage + + gio/tests/gmenumodel.c | 64 + ++++++++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 57 insertions(+), 7 deletions(-) + +commit 0a1079d171439d89cd1c825d20c7d766ab3573b5 +Author: Matthias Clasen +AuthorDate: Sun Jun 3 19:51:20 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 4 06:04:28 2012 -0400 + + Improve GApplication test coverage + + gio/tests/basic-application.c | 1 + + gio/tests/gapplication.c | 45 + +++++++++++++++++++++++++++++++++++++++++-- + 2 files changed, 44 insertions(+), 2 deletions(-) + +commit 642e89f35678c687d45c204ad095b58f785d6c91 +Author: Matthias Clasen +AuthorDate: Sun Jun 3 19:51:05 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 4 06:04:27 2012 -0400 + + Improve GActionGroup test coverage + + gio/tests/actions.c | 134 + +++++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 123 insertions(+), 11 deletions(-) + +commit a53a1b65b59577e6332509789a062c6038a085a8 +Author: Matthias Clasen +AuthorDate: Sun Jun 3 19:50:54 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 4 06:04:27 2012 -0400 + + Improve GIcon test coverage + + gio/tests/g-icon.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 26a1056bde7f6ef97963b1a4b42d3da3027f555f +Author: Matthias Clasen +AuthorDate: Sun Jun 3 16:30:58 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 4 06:04:26 2012 -0400 + + Expand GAppInfo tests + + gio/tests/appinfo.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +commit 51e6edf08b34120e1bb88a28785f3b5e59e1a2b3 +Author: Bruno Brouard +AuthorDate: Sun Jun 3 13:36:14 2012 +0200 +Commit: Bruno Brouard +CommitDate: Sun Jun 3 13:36:14 2012 +0200 + + Updated French translation + + po/fr.po | 324 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 182 insertions(+), 142 deletions(-) + +commit ce5bd68e26d0e67c24313076b7f634f1dcac81b9 +Author: Marc-Antoine Perennou +AuthorDate: Tue May 22 21:56:10 2012 +0200 +Commit: Marc-Antoine Perennou +CommitDate: Fri Jun 1 10:46:00 2012 +0200 + + glib: fix g_reload_user_special_dirs_cache + + We handle a special case for G_USER_DIRECTORY_DESKTOP + when we init the values but drop it when we reload them. + Fix this by preferring old values to NULL + + https://bugzilla.gnome.org/show_bug.cgi?id=676594 + + Signed-off-by: Marc-Antoine Perennou + + glib/gutils.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +commit 2e31166f6a005d2af724942ec3e8f58cecb3a756 +Author: Daniel Mustieles +AuthorDate: Thu May 31 15:29:31 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Thu May 31 15:29:31 2012 +0200 + + Updated Spanish translation + + po/es.po | 50 +++++++++++++++++++++++++------------------------- + 1 file changed, 25 insertions(+), 25 deletions(-) + +commit 4f04247a1964457a7493f23d786486df449b3e08 +Author: Daniel Mustieles +AuthorDate: Thu May 31 13:19:37 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Thu May 31 13:19:37 2012 +0200 + + Updated Spanish translation + + po/es.po | 207 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 102 insertions(+), 105 deletions(-) + +commit 69e12cd3d56ae43b188a278b807e517961627ada +Author: Dan Winship +AuthorDate: Wed May 30 08:30:27 2012 -0400 +Commit: Dan Winship +CommitDate: Wed May 30 09:02:33 2012 -0400 + + GConverterInputStream: fix an edge case + + Reading from a GConverterInputStream with both input_buffer and + converted_buffer non-empty would return bogus data (the data from + converted_buffer would essentially get skipped over, though the + returned nread reflected what the count would be if it hadn't been). + + This was never noticed before because (a) it can't happen if all of + your reads are at least as large as either the internal buffer size or + the remaining length of the stream (which covers most real-world use), + and (b) it can't happen if all of your reads are 1 byte (which covers + most of tests/converter-test). (And (c) it only happens for some + converters/input streams.) But this was happening occasionally in + libsoup when content-sniffing a gzipped response, because the + SoupContentSnifferStream would first read 512 bytes (to sniff), and + then pass through larger reads after that. + + Fixed and added a test to converter-test. + + https://bugzilla.gnome.org/show_bug.cgi?id=676478 + + gio/gconverterinputstream.c | 1 + + gio/tests/converter-stream.c | 163 + +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 164 insertions(+) + +commit 0fd9863abe218c002327ea993089476a793a99e6 +Author: Christian Persch +AuthorDate: Tue May 29 19:10:57 2012 +0200 +Commit: Christian Persch +CommitDate: Tue May 29 19:10:57 2012 +0200 + + build: Add missing AM_V_GEN to silence the build + + gio/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4979c1d075e08bcdc7a6569afae2052dac5eea81 +Author: Christian Persch +AuthorDate: Sat May 5 16:52:28 2012 +0200 +Commit: Christian Persch +CommitDate: Tue May 29 19:01:42 2012 +0200 + + application: Add dbus register/unregister hooks + + When the application is using its D-Bus backend, it is useful to + be able + to export extra D-Bus objects at the right time, i.e. *before* + the application + tries to own the bus name. This is accomplished here by adding a hook + in GApplicationClass for this; and a corresponding hook that will + be called + on unregistration to undo whatever the register hook did. + + Bug #675509. + + gio/gapplication.c | 36 +++++++++++ + gio/gapplication.h | 10 ++- + gio/gapplicationimpl-dbus.c | 15 ++++- + gio/tests/Makefile.am | 4 ++ + gio/tests/gapplication-example-dbushooks.c | 99 + ++++++++++++++++++++++++++++++ + 5 files changed, 162 insertions(+), 2 deletions(-) + +commit f642209ef4c7f13f5ff03ca3c315cd237f8f26bb +Author: Philip Withnall +AuthorDate: Sun May 27 22:40:44 2012 +0100 +Commit: Philip Withnall +CommitDate: Mon May 28 15:47:07 2012 +0100 + + gobject: Document notify signal deduplication with freeze/thaw + + Expand the documentation for g_object_[freeze|thaw]_notify() to + explain that + it deduplicates “notify” signals emitted by frozen objects, + so that at most + one signal is emitted per property. + + https://bugzilla.gnome.org/show_bug.cgi?id=676937 + + gobject/gobject.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 1637f08ed146bca89049301495a49d8873c2957e +Author: Matej Urbančič +AuthorDate: Mon May 28 14:57:02 2012 +0200 +Commit: Matej Urbančič +CommitDate: Mon May 28 14:57:02 2012 +0200 + + Updated Slovenian translation + + po/sl.po | 313 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 164 insertions(+), 149 deletions(-) + +commit ae421c9f6ca58ba18494619dc89ed1d2b60948eb +Author: Guillaume Desmottes +AuthorDate: Fri Apr 27 10:02:54 2012 +0200 +Commit: Guillaume Desmottes +CommitDate: Mon May 28 10:54:59 2012 +0200 + + Link to gvariant-format-strings-pointers in getter API + + https://bugzilla.gnome.org/show_bug.cgi?id=674777 + + glib/gvariant.c | 30 +++++++++++++++++++++++++++++- + 1 file changed, 29 insertions(+), 1 deletion(-) + +commit 175864b83c076f6b74a822e75990ab3a15ab73bc +Author: Colin Walters +AuthorDate: Sat May 26 11:53:14 2012 -0400 +Commit: Colin Walters +CommitDate: Sat May 26 11:53:14 2012 -0400 + + gappinfo: Fix uninitialized-variable gcc warning + + gio/gappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 151e37816bea6101523cf7dddab4ea1ce55ec909 +Author: Colin Walters +AuthorDate: Fri May 25 09:22:06 2012 -0400 +Commit: Colin Walters +CommitDate: Sat May 26 10:13:30 2012 -0400 + + Annotate API introduced for 2.34 with GLIB_AVAILABLE_IN_2_34 + + https://bugzilla.gnome.org/show_bug.cgi?id=676816 + + gio/gdbusauthobserver.h | 1 + + gio/gresolver.h | 3 +++ + 2 files changed, 4 insertions(+) + +commit 1cc7162c9560796829db457f7ea5fdd218a0ae46 +Author: Colin Walters +AuthorDate: Fri May 25 08:59:09 2012 -0400 +Commit: Colin Walters +CommitDate: Sat May 26 10:13:30 2012 -0400 + + Annotate API introduced for 2.32 with GLIB_AVAILABLE_IN_2_32 + + https://bugzilla.gnome.org/show_bug.cgi?id=676816 + + gio/gactiongroup.h | 1 + + gio/gactiongroupexporter.h | 2 ++ + gio/gactionmap.h | 3 +-- + gio/gappinfo.h | 3 +++ + gio/gapplication.h | 2 ++ + gio/gdbusactiongroup.h | 1 + + gio/gdbusinterface.h | 1 + + gio/gdrive.h | 1 + + gio/gfile.h | 1 + + gio/gfileinfo.h | 1 + + gio/ginetaddressmask.h | 3 +++ + gio/ginetsocketaddress.h | 2 ++ + gio/gmenu.h | 2 ++ + gio/gmenuexporter.h | 2 ++ + gio/gnetworkmonitor.h | 2 ++ + gio/gnetworkmonitorbase.h | 2 ++ + gio/gremoteactiongroup.h | 3 +++ + gio/gresource.h | 17 +++++++++++++++++ + gio/gsettings.h | 2 ++ + gio/gsettingsschema.h | 7 +++++++ + gio/gsimpleasyncresult.h | 1 + + gio/gsocket.h | 11 +++++++++++ + gio/gsocketconnection.h | 4 ++++ + gio/gunixconnection.h | 4 ++++ + gio/gunixmounts.h | 1 + + gio/gvolume.h | 1 + + 26 files changed, 78 insertions(+), 2 deletions(-) + +commit a9637126465fba06c1fc73cc70eb5f683ad4e4b3 +Author: Colin Walters +AuthorDate: Fri May 25 08:42:50 2012 -0400 +Commit: Colin Walters +CommitDate: Sat May 26 10:13:30 2012 -0400 + + Annotate API introduced for 2.30 with GLIB_AVAILABLE_IN_2_30 + + I didn't do this comprehensively, since there's a lot of it, mainly + due to the GDBus object manager stuff, but anyone trying to use + that would fail fast due to lack of the gdbus code generator. + + My main goal was to get API additions to existing classes like + g_data_input_stream_read_line_utf8(), as well as the lower level new + API like glib-unix.h. + + https://bugzilla.gnome.org/show_bug.cgi?id=676816 + + gio/gaction.h | 1 + + gio/gdatainputstream.h | 2 ++ + gio/gdbusconnection.h | 3 +++ + glib/gatomic.h | 4 ++++ + glib/gfileutils.h | 3 +++ + glib/ghash.h | 1 + + glib/ghmac.h | 9 +++++++++ + glib/glib-unix.h | 6 ++++++ + glib/gunicode.h | 1 + + glib/gutils.h | 2 ++ + glib/gvariant.h | 2 ++ + gobject/glib-types.h | 4 ++++ + 12 files changed, 38 insertions(+) + +commit 9c86e1168cad8ae2c2642ffd487d4f6319e1dc04 +Author: Marc-Antoine Perennou +AuthorDate: Sat May 26 10:34:53 2012 +0200 +Commit: Marc-Antoine Perennou +CommitDate: Sat May 26 10:35:05 2012 +0200 + + gio: fix symbol name + + Signed-off-by: Marc-Antoine Perennou + + gio/gio.symbols | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 800d6ff1115b27bf0e9cce818a0511048e2f1cc5 +Author: Dan Winship +AuthorDate: Thu Apr 5 09:19:17 2012 -0400 +Commit: Jasper St. Pierre +CommitDate: Thu May 24 17:48:13 2012 -0400 + + gio: add GBytes-based input/output stream methods + + Using a caller-supplied buffer for g_input_stream_read() doesn't + translate well to the semantics of many other languages, and using a + non-refcounted buffer for read_async() and write_async() makes it + impossible to manage the memory correctly currently in + garbage-collected languages. + + Fix both of these issues by adding a new set of methods that work with + GBytes objects rather than plain buffers. + + https://bugzilla.gnome.org/show_bug.cgi?id=671139 + + docs/reference/gio/gio-sections.txt | 6 ++ + gio/ginputstream.c | 174 + ++++++++++++++++++++++++++++++++++++ + gio/ginputstream.h | 16 ++++ + gio/gio.symbols | 6 ++ + gio/goutputstream.c | 157 + ++++++++++++++++++++++++++++++++ + gio/goutputstream.h | 16 ++++ + gio/tests/memory-input-stream.c | 26 ++++++ + gio/tests/memory-output-stream.c | 27 ++++++ + 8 files changed, 428 insertions(+) + +commit 4b456635e422ea620bfb3feeddac12a7045bd43b +Author: Christian Persch +AuthorDate: Thu May 24 17:51:35 2012 +0200 +Commit: Christian Persch +CommitDate: Thu May 24 17:51:35 2012 +0200 + + Revert "application: Don't print a critical warning here" + + This reverts commit 1541478bac6fed26bcb77ebae5e50bb7a76954f7. + + gio/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ee1965b888d070428b88bbcde989e98ce63a5fe4 +Author: Christian Persch +AuthorDate: Sat May 5 17:29:44 2012 +0200 +Commit: Christian Persch +CommitDate: Thu May 24 17:34:08 2012 +0200 + + application: Save a few bytes in the library + + There's really no need to put useless whitespace into the .so. + + gio/gapplicationimpl-dbus.c | 48 + ++++++++++++++++++++++----------------------- + 1 file changed, 24 insertions(+), 24 deletions(-) + +commit 1541478bac6fed26bcb77ebae5e50bb7a76954f7 +Author: Christian Persch +AuthorDate: Sat May 5 17:26:34 2012 +0200 +Commit: Christian Persch +CommitDate: Thu May 24 17:33:37 2012 +0200 + + application: Don't print a critical warning here + + It's a runtime error, not a programming error. + + gio/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9217309a5cd1eb59c7881939cdb58bd48e27097e +Author: Marc-Antoine Perennou +AuthorDate: Tue May 22 20:38:52 2012 +0200 +Commit: Marc-Antoine Perennou +CommitDate: Tue May 22 20:38:52 2012 +0200 + + glib: fix build + + Signed-off-by: Marc-Antoine Perennou + + glib/genviron.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +commit 481191f118a8f8e6505917a985e531137796d8ac +Author: Christian Persch +AuthorDate: Sun May 20 00:01:35 2012 +0200 +Commit: Christian Persch +CommitDate: Tue May 22 19:47:28 2012 +0200 + + gspawn: Add GSpawnFlag to use the PATH from envp + + Add a G_SPAWN_SEARCH_PATH_FROM_ENVP flag to GSpawnFlags so that + g_spawn_async() etc use the PATH variable from the passed-in child + environment to search for the executable. + If both this flag and the G_SPAWN_SEARCH_PATH flag are set, the + child environment is searched first and only falls back to the + PATH from the process environment if it is unset. + + Bug #676398. + + glib/gspawn.c | 48 ++++++++++++++++++++++++++++++++++++------------ + glib/gspawn.h | 6 +++++- + 2 files changed, 41 insertions(+), 13 deletions(-) + +commit 6969b63827a302604a0566c8889feed33a25d842 +Author: Christian Persch +AuthorDate: Sat May 19 23:59:01 2012 +0200 +Commit: Christian Persch +CommitDate: Tue May 22 19:47:22 2012 +0200 + + environ: Allow NULL envp + + https://bugzilla.gnome.org/show_bug.cgi?id=676397 + + glib/genviron.c | 31 ++++++++++++++++++++----------- + glib/tests/environment.c | 20 ++++++++++++++++++++ + 2 files changed, 40 insertions(+), 11 deletions(-) + +commit 44d4990442532dd067ca670a3a4b18109ee6b02c +Author: Colin Walters +AuthorDate: Fri May 18 10:39:05 2012 -0400 +Commit: Colin Walters +CommitDate: Mon May 21 13:45:15 2012 -0400 + + GMemoryOutputStream: Add API to return data as a GBytes + + Matches the corresponding additions to GMemoryInputStream. + + https://bugzilla.gnome.org/show_bug.cgi?id=672102 + + gio/gio.symbols | 1 + + gio/gmemoryoutputstream.c | 28 ++++++++++++++++++++++++++++ + gio/gmemoryoutputstream.h | 3 +++ + gio/tests/memory-output-stream.c | 38 + ++++++++++++++++++++++++++++++++++++++ + 4 files changed, 70 insertions(+) + +commit 1bedf248794fe5cf9dad5e40c18329e79f9d855e +Author: Colin Walters +AuthorDate: Thu May 17 14:36:15 2012 -0400 +Commit: Colin Walters +CommitDate: Mon May 21 13:45:15 2012 -0400 + + GMemoryInputStream: Add API to accept GBytes + + And s/Chunk/GBytes/ internally. GBytes is really a perfect match for + GMemoryInputStream. + + https://bugzilla.gnome.org/show_bug.cgi?id=672102 + + gio/gio.symbols | 2 + + gio/gmemoryinputstream.c | 107 + ++++++++++++++++++++++++++++++----------------- + gio/gmemoryinputstream.h | 6 +++ + 3 files changed, 76 insertions(+), 39 deletions(-) + +commit 6e32f0a6018ab26b2a14c184752913d6f2ecad40 +Author: Debarshi Ray +AuthorDate: Thu May 17 06:43:54 2012 +0200 +Commit: Debarshi Ray +CommitDate: Mon May 21 17:54:25 2012 +0200 + + gio: The tmpl parameter to g_file_new_tmp can be NULL + + Fixes: https://bugzilla.gnome.org/676208 + + gio/gfile.c | 1 - + 1 file changed, 1 deletion(-) + +commit 7cadf4f15f952457b5a5440d24d1a93e0a99cdde +Author: Dan Winship +AuthorDate: Wed Mar 21 09:22:38 2012 -0400 +Commit: Dan Winship +CommitDate: Fri May 18 12:36:12 2012 -0400 + + g_utf8_validate: @str shouldn't end up annotated as utf8 + + In order for this function to have any point, it has to be possible to + pass non-UTF-8 data to it, so annotate @str as being array-of-guint8 + instead of utf8. + + https://bugzilla.gnome.org/show_bug.cgi?id=672548 + + glib/gutf8.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8df2b96a6910aa557a6db2b1b5e618f3ace70f11 +Author: Dan Winship +AuthorDate: Fri May 18 12:18:23 2012 -0400 +Commit: Dan Winship +CommitDate: Fri May 18 12:18:23 2012 -0400 + + proxy-test: work even when the upstream DNS lies + + Rather than depending on the host's DNS configuration to properly + return an error for a non-existent hostname, just substitute in + a dummy GResolver implementation that does it for us. + + gio/tests/proxy-test.c | 60 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 60 insertions(+) + +commit 555cd1923fae52a145d527904f4efc0fc6298585 +Author: Dan Winship +AuthorDate: Fri May 18 08:49:05 2012 -0400 +Commit: Dan Winship +CommitDate: Fri May 18 12:17:28 2012 -0400 + + g_app_info_launch_default_for_uri: don't use GFile if we don't have to + + GFile doesn't handle some "real" URIs, so check if there's a default + handler for the URI scheme first, and only use g_file_new_for_uri() + and g_file_query_default_handler() if not. Eg, this fixes the case of + opening http URIs with "%2F" in the path. + + https://bugzilla.gnome.org/show_bug.cgi?id=666386 + + gio/gappinfo.c | 36 ++++++++++++++++++++++++++---------- + 1 file changed, 26 insertions(+), 10 deletions(-) + +commit 0e6d9df35c948d5e65eae0edb6652a9cce88f557 +Author: Holger Berndt +AuthorDate: Thu May 17 22:24:10 2012 +0200 +Commit: Holger Berndt +CommitDate: Fri May 18 15:20:40 2012 +0200 + + Document that g_app_info_create_from_commandline() does unquoting + according to fd.o + + https://bugzilla.gnome.org/show_bug.cgi?id=676277 + + gio/gdesktopappinfo.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 17e95c59c9f7b1cd023aabb3645c70b9f1f37577 +Author: Dan Winship +AuthorDate: Thu May 17 13:48:21 2012 -0400 +Commit: Dan Winship +CommitDate: Thu May 17 13:48:56 2012 -0400 + + gnetworkmonitornetlink: don't leak the list of networks + + https://bugzilla.gnome.org/show_bug.cgi?id=676265 + + gio/gnetworkmonitornetlink.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0ecbb0a4045877936d872fb8aaedd49baa4d89ef +Author: Dan Winship +AuthorDate: Thu May 10 13:29:39 2012 -0400 +Commit: Dan Winship +CommitDate: Thu May 17 10:47:05 2012 -0400 + + g_clear_pointer: work around gcc helpfulness + + gcc gets upset when we do "((GDestroyNotify) destroy) (_p)" because + it's non-portable. But we don't care; we already know glib wouldn't + work on any platform where different pointer types have different + calling conventions. So tweak the code to avoid the warning. + + https://bugzilla.gnome.org/show_bug.cgi?id=674634 + + glib/gmem.h | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 787f8087836804c903f8271699e576544426e023 +Author: Matthias Clasen +AuthorDate: Thu May 17 00:44:36 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 17 00:44:36 2012 -0400 + + gsettings: add reset-recursively to bash completion + + https://bugzilla.gnome.org/show_bug.cgi?id=675832 + + gio/gsettings-bash-completion.sh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 431d3adacdd640141f83a6c3496760adc6aba5eb +Author: Matthias Clasen +AuthorDate: Thu May 17 00:41:33 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 17 00:41:52 2012 -0400 + + Improve libelf configure check + + system libelf is not sufficient for glib (lacks elf_getshdrstrndx and + elf_getshdrnum) so let's make sure we don't define HAVE_LIBELF + + configure.ac | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit aded15c9d10dbf3ec218e25793e3467240585511 +Author: Ravi Sankar Guntur +AuthorDate: Mon Mar 19 21:17:32 2012 +0530 +Commit: Matthias Clasen +CommitDate: Thu May 17 00:38:43 2012 -0400 + + glib: fix memory leaks in gutils, protocol, and strfuncs tests + + https://bugzilla.gnome.org/show_bug.cgi?id=672329 + + Signed-off-by: Ravi Sankar Guntur + + glib/gutils.c | 26 ++++++++++++++++++++------ + glib/tests/protocol.c | 6 +++++- + glib/tests/strfuncs.c | 42 +++++++++++++++++++++++++++++++++--------- + 3 files changed, 58 insertions(+), 16 deletions(-) + +commit 447a25ea50af2349d313c10c46b61104ce4c0391 +Author: Dan Winship +AuthorDate: Wed May 16 12:00:44 2012 -0400 +Commit: Dan Winship +CommitDate: Wed May 16 12:00:44 2012 -0400 + + update .gitignore + + gio/tests/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit 0417ddab6fbd2f1cddbb9218e0e300e04da2eda5 +Author: Giovanni Campagna +AuthorDate: Sat Apr 14 19:34:00 2012 +0200 +Commit: Giovanni Campagna +CommitDate: Wed May 16 12:42:12 2012 +0200 + + GAppInfo: add a mechanism to query supported content types + + This essentially adds an accessor for the MimeType field in desktop + files, + to retrieve the list of all mime types supported by an application. + The interface though is part of GAppInfo, so it could be implemented + in the future by other backends. + + https://bugzilla.gnome.org/show_bug.cgi?id=674111 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gappinfo.c | 31 +++++++++++++++++++++++++++++++ + gio/gappinfo.h | 4 ++++ + gio/gdesktopappinfo.c | 13 +++++++++++++ + gio/gio.symbols | 1 + + gio/tests/appinfo-test.desktop | 1 + + gio/tests/appinfo.c | 16 ++++++++++++++++ + 7 files changed, 67 insertions(+) + +commit e011d2c92162d25a6e6d5f67d462edfeb4af3d7a +Author: Dan Winship +AuthorDate: Sun Jan 3 14:47:56 2010 -0500 +Commit: Dan Winship +CommitDate: Tue May 15 13:46:38 2012 -0400 + + Add g_type_ensure() and use it rather than playing games with volatile + + https://bugzilla.gnome.org/show_bug.cgi?id=605976 + + docs/reference/gobject/gobject-sections.txt | 1 + + gio/gicon.c | 10 +++---- + gio/ginetaddress.c | 4 +-- + gio/giomodule.c | 38 + ++++++++++++------------- + gio/gresolver.c | 5 +--- + gio/gsocket.c | 4 +-- + gio/gsocketconnection.c | 6 ++-- + gio/gsocketcontrolmessage.c | 8 ++---- + gio/gunixconnection.c | 5 +--- + gobject/gobject.symbols | 1 + + gobject/gtype.c | 43 + +++++++++++++++++++++++++---- + gobject/gtype.h | 2 ++ + 12 files changed, 72 insertions(+), 55 deletions(-) + +commit 2a4235d0f3fe3b3fb007385ee59082c0987158ce +Author: Paolo Borelli +AuthorDate: Tue May 15 17:38:44 2012 +0200 +Commit: Paolo Borelli +CommitDate: Tue May 15 17:39:38 2012 +0200 + + gfile: add g_return_if_fail to g_file_make_directory_with_parents() + + gio/gfile.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 5a57144d5749efaf3b5e752db9b041597d4b062f +Author: Colin Walters +AuthorDate: Fri May 4 10:03:12 2012 -0400 +Commit: Colin Walters +CommitDate: Tue May 15 11:07:33 2012 -0400 + + gfile: Plug memory leak in g_file_make_directory_with_parents() + + The logic here is pretty twisted, but basically we were leaking a ref + for each non-existent parent. The clearest way to fix this was to + move to more explicit refcounting logic; when a variable is pointing + to an object, it holds a ref. + + https://bugzilla.gnome.org/show_bug.cgi?id=675446 + + gio/gfile.c | 23 ++++++++++++++++------- + 1 file changed, 16 insertions(+), 7 deletions(-) + +commit d5d3c7b3a4830a12e155e949345cfc9109236786 +Author: Matthias Clasen +AuthorDate: Mon May 14 16:18:26 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 14 17:57:42 2012 -0400 + + Cover some malloc corner cases in tests + + glib/tests/utils.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +commit 215844b3a64fae95b24e464fe87ab6c3b5cd8daa +Author: Matthias Clasen +AuthorDate: Sun May 13 01:52:37 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 14 17:57:42 2012 -0400 + + Add a test for g_clear_pointer + + glib/tests/utils.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +commit e153c8c58b7643d8d823b7a199c3efb19fea3985 +Author: Jiro Matsuzawa +AuthorDate: Sun May 13 19:22:24 2012 +0900 +Commit: Jiro Matsuzawa +CommitDate: Sun May 13 19:25:42 2012 +0900 + + [l10n] Update Japanese translation + + po/ja.po | 637 + ++++++++++++++++----------------------------------------------- + 1 file changed, 155 insertions(+), 482 deletions(-) + +commit e3eb137bbb2ebeede6156424e3e0a1aeb8973614 +Author: Matthias Clasen +AuthorDate: Sun May 13 00:46:39 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 13 01:14:17 2012 -0400 + + Use non-deprecated api in tests + + https://bugzilla.gnome.org/show_bug.cgi?id=660851 + + glib/tests/rec-mutex.c | 4 ++-- + glib/tests/rwlock.c | 6 +++--- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit 77695437b319c8e1a918c8b3ab892ba8a63fbf63 +Author: Jasper St. Pierre +AuthorDate: Wed May 2 12:53:27 2012 -0400 +Commit: Jasper St. Pierre +CommitDate: Fri May 11 19:31:52 2012 -0300 + + gkeyfile: Fix annotations for g_key_file_load_from_data + + https://bugzilla.gnome.org/show_bug.cgi?id=675309 + + glib/gkeyfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ebc3b928a39e8895719a5795a14e13c2cdf3c8bd +Author: Lars Uebernickel +AuthorDate: Thu May 10 09:35:03 2012 -0700 +Commit: Lars Uebernickel +CommitDate: Thu May 10 09:35:03 2012 -0700 + + docs: reference g_menu_item_new in gmenu convenience menuitem API + + gio/gmenu.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 748f44b12f25717a45477a6e2e74bf6abc7951ba +Author: Christian Kirbach +AuthorDate: Tue May 8 19:16:14 2012 +0200 +Commit: Mario Blättermann +CommitDate: Tue May 8 19:16:14 2012 +0200 + + [l10n] Updated German translation + + po/de.po | 177 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 95 insertions(+), 82 deletions(-) + +commit 1b29ea3663501a407b82d83792d47d0941df13b2 +Author: Xavier Claessens +AuthorDate: Tue May 8 16:49:53 2012 +0200 +Commit: Xavier Claessens +CommitDate: Tue May 8 16:49:53 2012 +0200 + + Set GLIB_VERSION_MAX_ALLOWED to GLIB_VERSION_CUR_STABLE by default + + glib/gversionmacros.h | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +commit 744f36bb0685e35aac5fcfcf37cb1e1c9c45786e +Author: Emmanuele Bassi +AuthorDate: Tue May 8 15:12:42 2012 +0100 +Commit: Emmanuele Bassi +CommitDate: Tue May 8 15:12:42 2012 +0100 + + version macros: Make MIN_REQUIRED the current stable version + + So that deprecation warnings will come into effect starting from the + stable release, instead of the next. + + glib/gversionmacros.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fb63c73bbe213f5c1ac7ecafdf298c3cb8de23c3 +Author: Jiro Matsuzawa +AuthorDate: Tue May 8 20:24:53 2012 +0900 +Commit: Jiro Matsuzawa +CommitDate: Tue May 8 20:26:18 2012 +0900 + + [l10n] Update Japanese translation + + po/ja.po | 6155 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3275 insertions(+), 2880 deletions(-) + +commit a365684bf086742763b098feddaf5525bc9581c0 +Author: Michael Olbrich +AuthorDate: Mon May 7 10:33:44 2012 +0200 +Commit: Colin Walters +CommitDate: Mon May 7 17:18:06 2012 -0400 + + configure.ac: more AS_IF + + It looks like JH_CHECK_XML_CATALOG has some prerequisite as well + + Signed-off-by: Michael Olbrich + + https://bugzilla.gnome.org/show_bug.cgi?id=674483 + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 54e31ab4f172bbb28434eafc34c9345a93c9ccf5 +Author: Colin Walters +AuthorDate: Thu May 3 15:18:11 2012 -0400 +Commit: Colin Walters +CommitDate: Mon May 7 17:18:04 2012 -0400 + + configure: Use AS_IF almost everywhere + + Not doing so is an evil trap, sadly. This patch has been + compile-checked on Fedora 16, and I've verified that the generated + config.status and config.h is exactly the same. + + https://bugzilla.gnome.org/show_bug.cgi?id=674483 + + configure.ac | 246 + ++++++++++++++++++++++++++++------------------------------- + 1 file changed, 118 insertions(+), 128 deletions(-) + +commit e30823d93ff643c82d4037c2cf0f509e347f49de +Author: Michael Olbrich +AuthorDate: Thu May 3 08:44:12 2012 +0200 +Commit: Colin Walters +CommitDate: Mon May 7 17:18:03 2012 -0400 + + configure.ac: use AS_IF + + This way any prerequisites for e.g. AC_CHECK_HEADER are always + executed + before the 'if'. + + Signed-off-by: Michael Olbrich + + https://bugzilla.gnome.org/show_bug.cgi?id=674483 + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 7ba899701566c5941ba93bcd31e0b7ae70a7e69d +Author: Yuri Kozlov +AuthorDate: Sun May 6 11:35:01 2012 +0400 +Commit: Yuri Myasoedov +CommitDate: Sun May 6 11:35:01 2012 +0400 + + Updated Russian translation + + po/ru.po | 57 +++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 35 insertions(+), 22 deletions(-) + +commit ed1f10bc1c149ac6c317b80b3ba46fda6b545a4e +Author: Krzesimir Nowak +AuthorDate: Thu May 3 15:00:14 2012 +0200 +Commit: Krzesimir Nowak +CommitDate: Fri May 4 09:31:25 2012 +0200 + + docs: Fix typo in G_DEFINE_DYNAMIC_TYPE_EXTENDED example. + + gobject/gtypemodule.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5aa38ae9fb8eed894dcd37baa154967aae7f6c45 +Author: Marek Černocký +AuthorDate: Fri May 4 09:30:06 2012 +0200 +Commit: Marek Černocký +CommitDate: Fri May 4 09:30:06 2012 +0200 + + Updated Czech translation + + po/cs.po | 223 + +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 140 insertions(+), 83 deletions(-) + +commit 486d563049a789b0a2f45f1b5564eaf66294f083 +Author: Christian Persch +AuthorDate: Wed May 2 20:14:52 2012 +0200 +Commit: Christian Persch +CommitDate: Wed May 2 20:15:39 2012 +0200 + + application: Clarification about 'primary instance' + + For non-unique applications, the 'primary instance' is the current + instance. + + gio/gapplication.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit f7b61c72b4f2fef3ab21b51b9660973452d22f8d +Author: Dimitris Spingos +AuthorDate: Wed May 2 12:00:03 2012 +0300 +Commit: Kostas Papadimas +CommitDate: Wed May 2 12:00:03 2012 +0300 + + Updated Greek translation + + po/el.po | 6433 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3408 insertions(+), 3025 deletions(-) + +commit 874355de53e7ea7009860c0b67094d919a5daa6f +Author: Chun-wei Fan +AuthorDate: Wed May 2 11:10:23 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Wed May 2 11:10:23 2012 +0800 + + Fix GIO/GObject Visual C++ projects + + -Make up for the missed DLL_EXPORT-it's actually needed for all + GLib DLL + builds, omitting this caused problems to surface due to recent + works to + make GDBus work on Windows. + -Also use the FFI_BULIDING macro for GObject builds as the suggessted + workaround for using static LibFFI builds (as we do now)-please see + ffi.h(.in). This will fix the build of GObject against LibFFI 3.0.11, + but it is probable that this will change at some point for LibFFI. + + build/win32/vs10/gio.vcxprojin | 8 ++++---- + build/win32/vs10/gobject.vcxprojin | 8 ++++---- + build/win32/vs9/gio.vcprojin | 8 ++++---- + build/win32/vs9/gobject.vcprojin | 8 ++++---- + 4 files changed, 16 insertions(+), 16 deletions(-) + +commit 83f04afa0b8b66d200ccdc17ac6f5cd0e17b1c15 +Author: Ryan Lortie +AuthorDate: Tue May 1 12:57:00 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue May 1 15:16:05 2012 -0700 + + GLib 2.33.1 + + NEWS | 78 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 78 insertions(+) + +commit 774074f99bcc6237290e5252faf24581d7fe9932 +Author: Ryan Lortie +AuthorDate: Tue May 1 13:48:52 2012 -0700 +Commit: Ryan Lortie +CommitDate: Tue May 1 15:16:05 2012 -0700 + + slice-color test: don't use non-existent macro + + G_GUINT64_MODIFIER doesn't exist, but G_GINT64_MODIFIER does (and will + be the same as is needed for unsigned). + + tests/slice-color.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b31d872081a70817dc036043fef05cd950c4e86f +Author: Ryan Lortie +AuthorDate: Tue May 1 13:23:09 2012 -0700 +Commit: Ryan Lortie +CommitDate: Tue May 1 15:16:05 2012 -0700 + + tests: temporarily disable GDBus async proxy test + + It has never worked properly and, with the new GDBus testing stuff, + it's + occasionally failing. + + https://bugzilla.gnome.org/show_bug.cgi?id=672248 + + gio/tests/gdbus-proxy.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 56ca8add1088385a874fdb371a6d490926109710 +Author: Ryan Lortie +AuthorDate: Tue May 1 15:40:15 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue May 1 15:16:05 2012 -0700 + + contenttype test: don't pass -1 as length + + g_content_type_guess() takes a gsize, not a gssize, and -1 does + not mean + "I am passing a NULL terminated string". + + gio/tests/contenttype.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit 8db824e00b69302dafed9ceddd6f34abf5202516 +Author: Michael Biebl +AuthorDate: Tue May 1 18:42:12 2012 +0200 +Commit: Michael Biebl +CommitDate: Tue May 1 19:57:44 2012 +0200 + + configure: Reset LIBS after ELF check + + If action-if-found is not specified, AC_CHECK_LIB will append + the library + to LIBS. As we don't want to link everything against libelf, + reset LIBS + after doing the checks. + + configure.ac | 2 ++ + 1 file changed, 2 insertions(+) + +commit eb5381b8622eda26b6bd86dbac39bd9ed86bf730 +Author: Ryan Lortie +AuthorDate: Mon Apr 30 12:20:54 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 30 17:43:06 2012 -0400 + + GApplication: add accessor for DBus information + + Provide public access to the GDBusConnect and object path that + GApplication is using. Prevents others from having to guess these + things for themselves based on the application ID. + + https://bugzilla.gnome.org/show_bug.cgi?id=671249 + + docs/reference/gio/gio-sections.txt | 3 ++ + gio/gapplication.c | 65 + ++++++++++++++++++++++++++++++++++++- + gio/gapplication.h | 5 +++ + gio/gapplicationimpl-dbus.c | 11 +++++++ + gio/gapplicationimpl.h | 6 ++++ + gio/gio.symbols | 2 ++ + 6 files changed, 91 insertions(+), 1 deletion(-) + +commit 16f92a33aca1161aab3669f39b32f5c8f09fb433 +Author: Ryan Lortie +AuthorDate: Sat Mar 3 11:31:05 2012 -0500 +Commit: Ryan Lortie +CommitDate: Mon Apr 30 17:38:15 2012 -0400 + + GApplication: allow null application_id + + GApplication application ID is now permitted to be NULL, in which case + G_APPLICATION_NON_UNIQUE will be implicitly enabled. + + https://bugzilla.gnome.org/show_bug.cgi?id=671249 + + gio/gapplication.c | 57 + +++++++++++++++++++++++++++------------------ + gio/gapplicationimpl-dbus.c | 6 +++++ + gio/gioenums.h | 9 +++---- + 3 files changed, 45 insertions(+), 27 deletions(-) + +commit d959ace72cd07bebe0d87d483613b3285bb3c4f4 +Author: Bruno Brouard +AuthorDate: Mon Apr 30 21:54:22 2012 +0200 +Commit: Bruno Brouard +CommitDate: Mon Apr 30 21:56:22 2012 +0200 + + Updated French translation + + po/fr.po | 171 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 93 insertions(+), 78 deletions(-) + +commit cbf06d8fa94672496d170c65ed9c328816e7eee0 +Author: Xavier Claessens +AuthorDate: Mon Apr 30 17:02:06 2012 +0200 +Commit: Xavier Claessens +CommitDate: Mon Apr 30 17:03:31 2012 +0200 + + g_clear_pointer: use the same static checks than g_clear_object + in glib-2-32 + + glib/gmem.h | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 19ac408650ffbbff55fa01fe0968242abb7eacc3 +Author: Fran Diéguez +AuthorDate: Mon Apr 30 16:14:24 2012 +0200 +Commit: Fran Diéguez +CommitDate: Mon Apr 30 16:14:24 2012 +0200 + + Updated Galician translations + + po/gl.po | 38 +++++++++++++++++++------------------- + 1 file changed, 19 insertions(+), 19 deletions(-) + +commit cf4582fb81108b879f5d017a7b25f26ec2328b6a +Author: Luca Ferretti +AuthorDate: Mon Apr 30 15:41:08 2012 +0200 +Commit: Luca Ferretti +CommitDate: Mon Apr 30 15:41:50 2012 +0200 + + l10n: Updated Italian translation + + po/it.po | 319 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 169 insertions(+), 150 deletions(-) + +commit 7d4d0668b37476a1dc0f088574e7292fdac7c17c +Author: Dan Winship +AuthorDate: Mon Apr 30 06:54:05 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Apr 30 09:28:42 2012 -0400 + + Update gio/tests/.gitignore + + gio/tests/.gitignore | 2 ++ + 1 file changed, 2 insertions(+) + +commit c37273dccb183c98ee45f164117f515e4efbff06 +Author: Dan Winship +AuthorDate: Mon Apr 30 06:31:20 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Apr 30 09:28:42 2012 -0400 + + fix warnings + + gio/gdbusdaemon.c | 1 - + gio/gtestdbus.c | 2 +- + gio/tests/buffered-input-stream.c | 2 +- + glib/goption.c | 1 - + tests/gobject/defaultiface.c | 3 +-- + tests/gobject/dynamictype.c | 3 +-- + tests/gobject/ifaceinit.c | 2 ++ + tests/slice-color.c | 7 ++++--- + tests/slice-test.c | 2 +- + tests/threadpool-test.c | 16 +++++++++++----- + 10 files changed, 22 insertions(+), 17 deletions(-) + +commit c5285b3abafe2d28f99e0dd0981deee49fa401f1 +Author: Kjartan Maraas +AuthorDate: Mon Apr 30 10:16:16 2012 +0200 +Commit: Kjartan Maraas +CommitDate: Mon Apr 30 10:16:16 2012 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 143 + +++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 98 insertions(+), 45 deletions(-) + +commit a7bde137c3b66ca1857332fd3a702e80d457731d +Author: Jonh Wendell +AuthorDate: Sat Apr 28 10:11:25 2012 -0300 +Commit: Jonh Wendell +CommitDate: Sat Apr 28 10:12:03 2012 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 375 + +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 197 insertions(+), 178 deletions(-) + +commit fd3ec4df87ce05f364799b7eb8b0219420d755c4 +Author: Dan Winship +AuthorDate: Fri Apr 27 09:27:38 2012 -0400 +Commit: Dan Winship +CommitDate: Fri Apr 27 09:27:38 2012 -0400 + + Fix several recently-introduced bugs in g_output_stream_write_async() + + g_output_stream_write_async() was not initializing the newly-added + members of the WriteData structure, causing various problems. + + Also, g_input_stream_read_async() was now leaking its cancellable. Fix + that as well. + + https://bugzilla.gnome.org/show_bug.cgi?id=674612 + + gio/ginputstream.c | 12 ++++++++++-- + gio/goutputstream.c | 15 +++++++++++++-- + 2 files changed, 23 insertions(+), 4 deletions(-) + +commit 00285b7517a63a243a5b61b738de5eea957ae767 +Author: Xavier Claessens +AuthorDate: Mon Apr 23 17:57:56 2012 +0200 +Commit: Xavier Claessens +CommitDate: Fri Apr 27 09:42:29 2012 +0200 + + Add g_clear_pointer() + + Also reimplement g_clear_object() using g_clear_pointer() + + https://bugzilla.gnome.org/show_bug.cgi?id=674634 + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gmem.c | 39 + +++++++++++++++++++++++++++++++++++ + glib/gmem.h | 18 ++++++++++++++++ + gobject/gobject.c | 13 +----------- + gobject/gobject.h | 14 +------------ + 6 files changed, 61 insertions(+), 25 deletions(-) + +commit 3f816dc5d14ce64f89c5e8b16ac7d8c1f3542b0d +Author: Debarshi Ray +AuthorDate: Mon Apr 16 23:00:01 2012 +0200 +Commit: Debarshi Ray +CommitDate: Thu Apr 26 23:10:41 2012 +0200 + + GAppInfo: overwrite the DISPLAY only if it is set in the launch + context + + If the launch context is a GAppLaunchContext, and not a + GdkAppLaunchContext, then g_app_launch_context_get_display will return + NULL because the get_display virtual method is undefined. The DISPLAY + might still be inherited from the parent process, in which case + overwriting it with NULL breaks the launch. + + This is a regression introduced in: + de834bed306565c0652050665eafff4dfcdf0d8b + + Fixes: https://bugzilla.gnome.org/672786 + + gio/gdesktopappinfo.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 6219767f61fe7b402c9db8fbdaf57ab8ffb25681 +Author: Yaron Shahrabani +AuthorDate: Thu Apr 26 15:29:12 2012 +0300 +Commit: Yaron Shahrabani +CommitDate: Thu Apr 26 15:29:12 2012 +0300 + + Updated Hebrew translation. + + po/he.po | 25 ++++++++++++++++++++----- + 1 file changed, 20 insertions(+), 5 deletions(-) + +commit 79724bf80c414a06f3caf1f2ff614bb3c44a8ba3 +Author: Alexander Larsson +AuthorDate: Thu Apr 26 10:05:41 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Apr 26 10:06:18 2012 +0200 + + Dist gio/dbus-daemon.xml and fix dependency for builddir != srcdir + + gio/Makefile.am | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 063ec9a75d6f70b45a8e51653608a6e40f948b3c +Author: Colin Walters +AuthorDate: Wed Apr 25 14:47:01 2012 -0400 +Commit: Colin Walters +CommitDate: Wed Apr 25 15:41:48 2012 -0400 + + build: Fix 'make dist' regression + + Commit f084b603771f78126bc0b07229a1574b76e776bb incorrectly set + DIST_SUBDIRS for the toplevel Makefile.am. In general actually we + don't need to set it, because modern automake automatically sets + it by looking at conditionals for SUBDIRS. + + Tested-by: Rico Tzschichholz + + https://bugzilla.gnome.org/show_bug.cgi?id=667806 + + gio/Makefile.am | 3 --- + glib/Makefile.am | 6 +----- + gobject/Makefile.am | 3 --- + 3 files changed, 1 insertion(+), 11 deletions(-) + +commit 87cc77a1985efa18bcd8fc3318c90d8557ae9129 +Author: Dan Winship +AuthorDate: Wed Apr 25 10:44:55 2012 -0400 +Commit: Dan Winship +CommitDate: Wed Apr 25 10:46:44 2012 -0400 + + gsocket: test if family is <= 0, not < 0 + + If all members of GSocketFamily are supported on the platform, then + all of its values will be positive, and so the enum might become + unsigned, in which case testing for "family < 0" might cause warnings. + But we want to return an error if family == 0 (aka + G_SOCKET_FAMILY_INVALID) anyway, so just tweak the test accordingly. + + https://bugzilla.gnome.org/show_bug.cgi?id=674592 + + gio/gsocket.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 56bcba11dd2d2b679efeebcf78f0f5736ba311e1 +Author: Michael Olbrich +AuthorDate: Wed Apr 25 09:46:35 2012 +0200 +Commit: Colin Walters +CommitDate: Wed Apr 25 09:36:29 2012 -0400 + + make sure configure fails if AC_CHECK_ALIGNOF cannot detect the + alignment + + When cross-compiling with gcc >= 4.5 AC_CHECK_ALIGNOF fails to + detect the + correct alignment. Without a previous AC_CHECK_TYPE for the same + type, the + alignment is silently set to '0'. + This makes sure that configure fails and reports the problem. + + Signed-off-by: Michael Olbrich + + https://bugzilla.gnome.org/show_bug.cgi?id=674483 + + configure.ac | 3 +++ + 1 file changed, 3 insertions(+) + +commit b053f990c91eff334aec8db9519846a041a98999 +Author: Dieter Verfaillie +AuthorDate: Tue Apr 24 16:39:21 2012 +0200 +Commit: Dieter Verfaillie +CommitDate: Tue Apr 24 16:39:21 2012 +0200 + + win32: More srcdir != builddir fixing + + gio/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 62905cda0b42163bbd582278260f659f94e4d2bf +Author: Alexander Larsson +AuthorDate: Tue Apr 24 14:53:49 2012 +0200 +Commit: Alexander Larsson +CommitDate: Tue Apr 24 14:53:49 2012 +0200 + + win32: Fix build with srcdir != builddir + + Missed this part in the last commit + + gio/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 88bfc9b289e2b40bd7bff94dcdb06eb0b7b53f67 +Author: Alexander Larsson +AuthorDate: Tue Apr 24 14:03:38 2012 +0200 +Commit: Alexander Larsson +CommitDate: Tue Apr 24 14:09:54 2012 +0200 + + win32: Fix build of gdbus-daemon-generated.[ch] + + gdbus-daemon-generated.[ch] failed to build because it depended + on gdbus-2.0/codegen/gdbus-codegen which was build during the + SUBDIRS part + of the build, however SUBDIRS are done *after* processing + BUILT_SOURCES, + and these files are in BUILT_SOURCES. + + The fix is simple, instead of running the gdbus-codegen code we + run the gdbus-codegen.in code, which works fine for uninstalled + execution. + + I also removed Makefile from the dependencies to avoid rebuilding + the file + in tarballs, as Makefiles are written at configure time. We should + be able to + ship the prebuilt files in the tarballs. + When running uninstalled + + gio/Makefile.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2c0756ea0e118deece4b797d15c2462db48191ed +Author: Alexander Shopov +AuthorDate: Tue Apr 24 07:28:43 2012 +0300 +Commit: Alexander Shopov +CommitDate: Tue Apr 24 07:28:43 2012 +0300 + + Updated Bulgarian translation + + po/bg.po | 21 +++++++++++++++++---- + 1 file changed, 17 insertions(+), 4 deletions(-) + +commit 02be039a6cc41bc0e65a336ad76b4c5b14e00e22 +Author: Fran Diéguez +AuthorDate: Tue Apr 24 00:29:07 2012 +0200 +Commit: Fran Diéguez +CommitDate: Tue Apr 24 00:29:07 2012 +0200 + + Updated Galician translations + + po/gl.po | 21 +++++++++++++++++---- + 1 file changed, 17 insertions(+), 4 deletions(-) + +commit 810a296d4244f061f037445f39b8900fb67ba3e8 +Author: Chun-wei Fan +AuthorDate: Tue Apr 24 00:03:33 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Apr 24 00:03:33 2012 +0800 + + Visual C++ projects: Clean/fix up + + Clean/fix up the Preprocessor Definitions for the various projects, + where + we purge out the unneeded macros and add _DEBUG to the Debug builds of + various projects that somehow lacked this. + + This will also fix the GIO build under Visual C++ 2008, as the + _DEBUG macro + in the release builds will cause a debug entry to appear in its + manifest + file during the build, which will cause GIO-using applications to fail + to run on systems not running Visual C++/Studio 2008 due to its + embedding + of a badly-generated manifest file. + + build/win32/vs10/gio.vcxprojin | 8 ++++---- + build/win32/vs10/glib-genmarshal.vcxproj | 8 ++++---- + build/win32/vs10/glib.vcxprojin | 16 + ++++++++-------- + build/win32/vs10/gmodule.vcxproj | 8 ++++---- + build/win32/vs10/gobject.vcxprojin | 8 ++++---- + build/win32/vs10/gspawn-win32-helper-console.vcxproj | 4 ++-- + build/win32/vs10/gspawn-win32-helper.vcxproj | 4 ++-- + build/win32/vs10/gthread.vcxproj | 8 ++++---- + build/win32/vs9/gio.vcprojin | 8 ++++---- + build/win32/vs9/glib-genmarshal.vcproj | 8 ++++---- + build/win32/vs9/glib.vcprojin | 16 + ++++++++-------- + build/win32/vs9/gmodule.vcproj | 8 ++++---- + build/win32/vs9/gobject.vcprojin | 8 ++++---- + build/win32/vs9/gspawn-win32-helper-console.vcproj | 4 ++-- + build/win32/vs9/gspawn-win32-helper.vcproj | 4 ++-- + build/win32/vs9/gthread.vcproj | 8 ++++---- + 16 files changed, 64 insertions(+), 64 deletions(-) + +commit 58f0173149d5be9a7fc0810e4bcf7a2fafde1a7f +Author: Matthias Clasen +AuthorDate: Mon Apr 23 08:19:29 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 23 08:20:22 2012 -0400 + + Add tests for signal convenience api + + gobject/tests/signals.c | 37 ++++++++++++++++++++++++++++++++++++- + 1 file changed, 36 insertions(+), 1 deletion(-) + +commit e62102dbc5bd9f6fe905775fc19aea894ef7f8d4 +Author: Matthias Clasen +AuthorDate: Mon Apr 23 08:19:06 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 23 08:20:22 2012 -0400 + + Add tests for toggle reference and qdata + + gobject/tests/reference.c | 148 + ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 148 insertions(+) + +commit 8b618eb7f1eec1632c164053097f3e41150782ce +Author: Matthias Clasen +AuthorDate: Mon Apr 23 08:17:40 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 23 08:20:21 2012 -0400 + + Improve test coverage in gobject/tests + + This is just making sure that we execute property getters/setters. + + gobject/tests/dynamictests.c | 3 +++ + gobject/tests/properties.c | 9 +++++++++ + 2 files changed, 12 insertions(+) + +commit 87832242023e593751b20f6fa90235b32cfe5d4c +Author: Matthias Clasen +AuthorDate: Mon Apr 23 08:16:50 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 23 08:20:21 2012 -0400 + + Add some directory getter tests + + glib/tests/utils.c | 94 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 94 insertions(+) + +commit 1089a0a9f6987b7b1aa8f3f9e4def1b92cdfd11c +Author: Matthias Clasen +AuthorDate: Mon Apr 23 08:16:23 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 23 08:20:21 2012 -0400 + + Improve GOptionContext test coverage + + glib/tests/option-context.c | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +commit 6214977260f22b41f0e2e407c7fa2a5a3bed5084 +Author: Daniel Mustieles +AuthorDate: Mon Apr 23 11:40:33 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Mon Apr 23 11:40:33 2012 +0200 + + Updated Spanish translation + + po/es.po | 141 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 74 insertions(+), 67 deletions(-) + +commit a44e80198340d7169197fe7627868383dc4df06c +Author: Maciej Piechotka +AuthorDate: Thu Mar 29 02:08:41 2012 +0200 +Commit: Alexander Larsson +CommitDate: Mon Apr 23 10:57:12 2012 +0200 + + Make GDataOutputStream implement GSeekable + + https://bugzilla.gnome.org/show_bug.cgi?id=673034 + + gio/gdataoutputstream.c | 108 ++++++++++++++++++++++- + gio/tests/data-output-stream.c | 194 + +++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 299 insertions(+), 3 deletions(-) + +commit 43895e3089ec1ac7af2f77530fe91678b58a3501 +Author: Maciej Piechotka +AuthorDate: Thu Mar 29 01:50:41 2012 +0200 +Commit: Alexander Larsson +CommitDate: Mon Apr 23 10:57:07 2012 +0200 + + Make GBufferedOutputStream implement GSeekable + + https://bugzilla.gnome.org/show_bug.cgi?id=673034 + + gio/gbufferedoutputstream.c | 132 ++++++++++++++++++++++++- + gio/tests/buffered-output-stream.c | 195 + +++++++++++++++++++++++++++++++++++++ + 2 files changed, 324 insertions(+), 3 deletions(-) + +commit 90739baec071f4bba19558a3e08a9f330f78070e +Author: Maciej Piechotka +AuthorDate: Wed Mar 28 14:12:44 2012 +0200 +Commit: Alexander Larsson +CommitDate: Mon Apr 23 10:57:01 2012 +0200 + + Make GBufferedInputStream implement GSeekable + + https://bugzilla.gnome.org/show_bug.cgi?id=673034 + + gio/gbufferedinputstream.c | 138 + ++++++++++++++++++++++++++++++++++++-- + gio/tests/buffered-input-stream.c | 86 ++++++++++++++++++++++++ + 2 files changed, 220 insertions(+), 4 deletions(-) + +commit 86abe5163fb2fe08ae886b2decc18ba9318b974c +Author: Yuri Kozlov +AuthorDate: Mon Apr 23 12:12:27 2012 +0400 +Commit: Yuri Myasoedov +CommitDate: Mon Apr 23 12:12:27 2012 +0400 + + Updated Russian translation + + po/ru.po | 1480 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 779 insertions(+), 701 deletions(-) + +commit a151c97106948c6bd21b0e2a71b7c18b1f106ce9 +Author: Matthias Clasen +AuthorDate: Mon Apr 23 00:35:37 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 23 00:35:37 2012 -0400 + + Make the child source test work + + On my machine, this test was failing, because the timeout source + for quitting the inner mainloop was triggering repeatedly. Avoid + that by explicitly returning G_SOURCE_REMOVE from the callback. + + glib/tests/mainloop.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +commit d18a9caf0310c2c6f98e04e15c7a8ca8280846e1 +Author: Javier Jardón +AuthorDate: Mon Apr 23 02:45:08 2012 +0100 +Commit: Javier Jardón +CommitDate: Mon Apr 23 02:46:18 2012 +0100 + + docs: Use latest docbook dtd: 4.5 + + .../gdbus-object-manager-example-docs.xml | + 4 ++-- + docs/reference/gio/migrating-gdbus.xml | + 4 ++-- + docs/reference/glib/building.xml | + 4 ++-- + docs/reference/glib/changes.xml | + 4 ++-- + docs/reference/glib/compiling.xml | + 4 ++-- + docs/reference/glib/cross.xml | + 4 ++-- + docs/reference/glib/regex-syntax.xml | + 4 ++-- + docs/reference/glib/resources.xml | + 4 ++-- + docs/reference/glib/running.xml | + 4 ++-- + docs/reference/gobject/tut_gobject.xml | + 4 ++-- + docs/reference/gobject/tut_gsignal.xml | + 4 ++-- + docs/reference/gobject/tut_gtype.xml | + 4 ++-- + docs/reference/gobject/tut_howto.xml | + 4 ++-- + docs/reference/gobject/tut_intro.xml | + 4 ++-- + docs/reference/gobject/tut_tools.xml | + 4 ++-- + 15 files changed, 30 insertions(+), 30 deletions(-) + +commit ee44211f1a44e58bb7c3d93aed6eeee4863d5263 +Author: Javier Jardón +AuthorDate: Sun Apr 22 21:56:07 2012 +0100 +Commit: Javier Jardón +CommitDate: Mon Apr 23 02:31:32 2012 +0100 + + docs: rename *-docs.sgml to *-docs.xml + + We are using xml docbook nowadays + + docs/reference/gio/gio-docs.xml | 4 +- + docs/reference/glib/Makefile.am | 18 +- + docs/reference/glib/building.sgml | 538 ------- + docs/reference/glib/building.xml | 538 +++++++ + docs/reference/glib/changes.sgml | 174 -- + docs/reference/glib/changes.xml | 174 ++ + docs/reference/glib/compiling.sgml | 121 -- + docs/reference/glib/compiling.xml | 121 ++ + docs/reference/glib/cross.sgml | 208 --- + docs/reference/glib/cross.xml | 208 +++ + docs/reference/glib/glib-docs.sgml | 221 --- + docs/reference/glib/glib-docs.xml | 221 +++ + docs/reference/glib/regex-syntax.sgml | 2531 + ------------------------------ + docs/reference/glib/regex-syntax.xml | 2531 + ++++++++++++++++++++++++++++++ + docs/reference/glib/resources.sgml | 115 -- + docs/reference/glib/resources.xml | 115 ++ + docs/reference/glib/running.sgml | 380 ----- + docs/reference/glib/running.xml | 380 +++++ + docs/reference/gobject/Makefile.am | 2 +- + docs/reference/gobject/gobject-docs.sgml | 170 -- + docs/reference/gobject/gobject-docs.xml | 170 ++ + 21 files changed, 4470 insertions(+), 4470 deletions(-) + +commit 3ea31fc0f1d81affaf655f550899fa16cb59201a +Author: Javier Jardón +AuthorDate: Mon Apr 23 01:36:49 2012 +0100 +Commit: Javier Jardón +CommitDate: Mon Apr 23 02:23:31 2012 +0100 + + docs: Add index to new api added in 2.34 + + docs/reference/gio/gio-docs.xml | 4 ++++ + docs/reference/glib/glib-docs.sgml | 4 ++++ + docs/reference/gobject/gobject-docs.sgml | 4 ++++ + 3 files changed, 12 insertions(+) + +commit 14a7781873317e24b55984173e2bedf6eaaf0917 +Author: Javier Jardón +AuthorDate: Mon Apr 23 01:15:26 2012 +0100 +Commit: Javier Jardón +CommitDate: Mon Apr 23 02:23:31 2012 +0100 + + docs: Fix "Since" markup + + glib/gdatetime.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2a37bc0dc6cc013d01836b45c2eea6b1bd6d80e5 +Author: Dan Winship +AuthorDate: Sun Apr 22 15:18:50 2012 -0400 +Commit: Dan Winship +CommitDate: Sun Apr 22 15:24:36 2012 -0400 + + gio: add a proxy test program + + Test GProxy, GProxyResolver, GProxyAddress, and + GProxyAddressEnumerator, plus GSocketClient's proxy-resolving + codepaths. + + gio/tests/Makefile.am | 4 + + gio/tests/proxy-test.c | 1077 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 1081 insertions(+) + +commit bcaa0a3820dae0ce10fc8329b10b7c963447e6d3 +Author: Dan Winship +AuthorDate: Sat Apr 21 00:25:53 2012 -0400 +Commit: Dan Winship +CommitDate: Sun Apr 22 15:24:29 2012 -0400 + + gio: Add more information to GProxyAddress + + Add two new methods to GProxyAddress for recovering information about + the destination URI that the proxy was created for (and modify + GProxyAddressEnumerator to set that information when creating the + GProxyAddress). + + docs/reference/gio/gio-sections.txt | 2 + + gio/gio.symbols | 2 + + gio/gproxyaddress.c | 116 + +++++++++++++++++++++++++++++++++--- + gio/gproxyaddress.h | 5 ++ + gio/gproxyaddressenumerator.c | 54 ++++++++++------- + 5 files changed, 152 insertions(+), 27 deletions(-) + +commit 8c7025e72320775f915cdd776e09c7cbecd648ac +Author: Dan Winship +AuthorDate: Sun Apr 22 15:20:14 2012 -0400 +Commit: Dan Winship +CommitDate: Sun Apr 22 15:23:40 2012 -0400 + + gio: fix error handling in async case of GProxyAddressEnumerator + + In the async case, a failed DNS lookup was causing the proxy + resolution to bail out immediately, rather than just moving on to the + next potential proxy (which might not need us to do the DNS lookup + beforehand). Fix that. + + gio/gproxyaddressenumerator.c | 95 + ++++++++++++++++++++++++++----------------- + 1 file changed, 58 insertions(+), 37 deletions(-) + +commit 3cf987e660d0b32e44b2be67352db65f14342f6a +Author: Fran Diéguez +AuthorDate: Sun Apr 22 15:34:12 2012 +0200 +Commit: Fran Diéguez +CommitDate: Sun Apr 22 15:34:12 2012 +0200 + + Updated Galician translations + + po/gl.po | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 2a5763c412b624cb70fdc858431b5292ff5312e0 +Author: Daniel Mustieles +AuthorDate: Sun Apr 22 11:13:21 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Sun Apr 22 11:13:21 2012 +0200 + + Updated Spanish translation + + po/es.po | 147 + ++++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 90 insertions(+), 57 deletions(-) + +commit 1e73a200a6fd13b36c52cf783521ac5a256cec56 +Author: Yaron Shahrabani +AuthorDate: Sun Apr 22 11:41:51 2012 +0300 +Commit: Yaron Shahrabani +CommitDate: Sun Apr 22 11:41:51 2012 +0300 + + Updated Hebrew translation. + + po/he.po | 371 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 207 insertions(+), 164 deletions(-) + +commit ecdaf357fe230baefefd45ebd3000ab7c37869ac +Author: Alexander Shopov +AuthorDate: Sun Apr 22 09:07:34 2012 +0300 +Commit: Alexander Shopov +CommitDate: Sun Apr 22 09:07:34 2012 +0300 + + Updated Bulgarian translation + + po/bg.po | 147 + ++++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 94 insertions(+), 53 deletions(-) + +commit 2adf6b3d6b975130f41fcbbd66ea348d8a10c0e6 +Author: Fran Diéguez +AuthorDate: Sat Apr 21 16:30:59 2012 +0200 +Commit: Fran Diéguez +CommitDate: Sat Apr 21 16:30:59 2012 +0200 + + Updated Galician translations + + po/gl.po | 29 +++++++++++++++++++++++++++-- + 1 file changed, 27 insertions(+), 2 deletions(-) + +commit 8ebea8263402dd4a5778c2febbd4ef891eddd88c +Author: Matej Urbančič +AuthorDate: Sat Apr 21 12:46:49 2012 +0200 +Commit: Matej Urbančič +CommitDate: Sat Apr 21 12:46:49 2012 +0200 + + Updated Slovenian translation + + po/sl.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 68629ceb4fab5393448ab4688320eace56d11790 +Author: Matej Urbančič +AuthorDate: Sat Apr 21 12:39:22 2012 +0200 +Commit: Matej Urbančič +CommitDate: Sat Apr 21 12:39:22 2012 +0200 + + Updated Slovenian translation + + po/sl.po | 180 + ++++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 110 insertions(+), 70 deletions(-) + +commit 5d7e9bfbbd7f993922b09577d775822f63ea5640 +Author: Мирослав Николић + +AuthorDate: Sat Apr 21 09:26:24 2012 +0200 +Commit: Мирослав Николић + +CommitDate: Sat Apr 21 09:26:24 2012 +0200 + + Updated Serbian translation + + po/sr.po | 349 + ++++++++++++++++++++++++++++++++------------------------- + po/sr@latin.po | 349 + ++++++++++++++++++++++++++++++++------------------------- + 2 files changed, 392 insertions(+), 306 deletions(-) + +commit 88f73eef540d107210a0f52de81cb1a2c87cb5d6 +Author: Piotr Drąg +AuthorDate: Fri Apr 20 20:50:26 2012 +0200 +Commit: Piotr Drąg +CommitDate: Fri Apr 20 20:50:26 2012 +0200 + + Updated POTFILES.in + + po/POTFILES.in | 2 ++ + 1 file changed, 2 insertions(+) + +commit 755c1311958f256d60daeb548d1ba4d235d2783b +Author: Daniel Mustieles +AuthorDate: Fri Apr 20 17:22:55 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Fri Apr 20 17:22:55 2012 +0200 + + Updated Spanish translation + + po/es.po | 130 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 73 insertions(+), 57 deletions(-) + +commit 515a454c39b81f61565f7b41ff26aad7a133f853 +Author: Fran Diéguez +AuthorDate: Fri Apr 20 15:12:48 2012 +0200 +Commit: Fran Diéguez +CommitDate: Fri Apr 20 15:12:48 2012 +0200 + + Updated Galician translations + + po/gl.po | 120 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 67 insertions(+), 53 deletions(-) + +commit 5fb44f70dcac16ff6f13d3d36c330ddd617a5d97 +Author: Alexander Larsson +AuthorDate: Fri Apr 20 10:23:34 2012 +0200 +Commit: Alexander Larsson +CommitDate: Fri Apr 20 15:02:48 2012 +0200 + + win32: Implement _g_dbus_get_machine_id using machine guid + + This is what libdbus uses, so we're compatible. + + gio/gdbusprivate.c | 42 ++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 42 insertions(+) + +commit dccce383670592f12510019e92ea91a618a1810c +Author: Alexander Larsson +AuthorDate: Wed Apr 18 17:09:37 2012 +0200 +Commit: Alexander Larsson +CommitDate: Fri Apr 20 15:02:48 2012 +0200 + + win32: Support autolaunching dbus daemon + + gio/Makefile.am | 8 ++ + gio/gdbusaddress.c | 306 + ++++++++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 312 insertions(+), 2 deletions(-) + +commit bd148e127a5863de4aef260cd879e0eda370c711 +Author: Alexander Larsson +AuthorDate: Wed Apr 18 16:25:29 2012 +0200 +Commit: Alexander Larsson +CommitDate: Fri Apr 20 15:02:48 2012 +0200 + + Add _g_io_win32_get_module to get the gio HMODULE + + gio/giomodule-priv.h | 4 ++++ + gio/giomodule.c | 6 ++++++ + 2 files changed, 10 insertions(+) + +commit 74214e2997e51fd96842aac2eee049e6b81a4595 +Author: Alexander Larsson +AuthorDate: Thu Apr 19 11:01:24 2012 +0200 +Commit: Alexander Larsson +CommitDate: Fri Apr 20 15:02:48 2012 +0200 + + GTestDBus: Allow to specify the dbus-daemon binary + + The env var G_TEST_DBUS_DAEMON lets you change dbus-daemon to + whatever you want. This is useful to test with gdbus-daemon + + gio/gtestdbus.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 0d8b1b14d2d56c92b2b783798a9552eb75d77a29 +Author: Alexander Larsson +AuthorDate: Mon Apr 16 10:16:47 2012 +0200 +Commit: Alexander Larsson +CommitDate: Fri Apr 20 15:02:48 2012 +0200 + + Add gdbus-daemon test app + + gio/tests/Makefile.am | 4 +++ + gio/tests/gdbus-daemon.c | 72 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 76 insertions(+) + +commit 25581738a8d5ee7db2a6d9ebd908d59b2837cd70 +Author: Alexander Larsson +AuthorDate: Mon Apr 16 10:16:04 2012 +0200 +Commit: Alexander Larsson +CommitDate: Fri Apr 20 15:02:48 2012 +0200 + + Add GDBusDAaemon, an implementation of a message bus + + This is mostly complete, sans support for activation. However, its + not as picky as the libdbus implementation in terms like validation + and limits checking, nor is it as tested. + + Its can be useful to test gdbus if dbus-daemon is not availible, but + its main reason for existance is to implement a default session bus + on win32 so that e.g. GApplication is guaranteed to work. + + gio/.gitignore | 1 + + gio/Makefile.am | 17 +- + gio/dbus-daemon.xml | 76 +++ + gio/gdbusdaemon.c | 1752 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gdbusdaemon.h | 19 + + 5 files changed, 1864 insertions(+), 1 deletion(-) + +commit b38f1c7aff0bb7388993973f4d8516b95ad593ba +Author: Benjamin Otte +AuthorDate: Fri Apr 20 14:31:05 2012 +0200 +Commit: Benjamin Otte +CommitDate: Fri Apr 20 14:32:41 2012 +0200 + + resourcefile: Set display name + + Fixes resource filenames not being printed in CSS warnings for GTK. + + https://bugzilla.gnome.org/show_bug.cgi?id=674345 + + gio/gresourcefile.c | 1 + + 1 file changed, 1 insertion(+) + +commit 289e3b9143fe9bd27657ed277dd7ea2e1a690aa3 +Author: Matthias Clasen +AuthorDate: Thu Apr 19 17:13:52 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 19 17:15:14 2012 -0400 + + More beautiful fix + + A comma on a line by itself is too ugly to stand. + + gio/gtestdbus.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit bf8a4ed099b53dc1b952b7c3b2ef38c45dbd359e +Author: Matthias Clasen +AuthorDate: Thu Apr 19 17:06:49 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 19 17:14:25 2012 -0400 + + Bump version to 2.33.1 + + This avoids triggering the 'too new' warning from 2.34 API. + + configure.ac | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit bb78753a661f7149fc0ac85cfdbf10f9f7e9fc42 +Author: Alexander Larsson +AuthorDate: Thu Apr 19 20:46:08 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Apr 19 20:46:08 2012 +0200 + + Fix non-win32 build error in my recent commit + + gio/gtestdbus.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 6d51527ba0fe7cece9d1f61466076d332bc7fbac +Author: Matthias Clasen +AuthorDate: Thu Apr 19 13:25:26 2012 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 19 13:25:26 2012 -0400 + + Revert "tests: fix test on windows" + + This reverts commit 79361eede240e9591891290c22cd072ccddb78a3. + + Just commenting out a test without an explanation does not + look right to me. This needs at the minimum a link to a + bug report or an explanation for why the behaviour is platform + dependent. If the test was just wrong, it needs to be removed, + not commented out. If there is a bug in the win32 implementation, + it needs to be fixed. + + glib/tests/fileutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 21e049b2539d492cd4e959e5c962245d33adf8ca +Author: Alexander Larsson +AuthorDate: Thu Apr 19 18:12:23 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Apr 19 18:19:10 2012 +0200 + + Tests: Move dbus specific tests to if HAVE_DBUS_DAEMON + + These used to only be built on unix, but if you have dbus-daemon on + win32 we should really build them there too. + + configure.ac | 3 +++ + gio/tests/Makefile.am | 16 +++++++++++----- + 2 files changed, 14 insertions(+), 5 deletions(-) + +commit 234ddf131b43b0f99ce26489993dd0a13abb50ab +Author: Alexander Larsson +AuthorDate: Thu Apr 19 18:11:47 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Apr 19 18:19:10 2012 +0200 + + Fix test building on win32 + + gio/tests/gdbus-connection-slow.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 58e613bfc7cf566a391c62245e4c5e895fcc7873 +Author: Alexander Larsson +AuthorDate: Thu Apr 19 13:49:52 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Apr 19 18:19:01 2012 +0200 + + GTestDBus: Make work on win32 + + Win32 doesn't have things like fork so the existing code has no way + of working. Instead we swap it all out for a custom implementation + on win32. + + gio/gtestdbus.c | 64 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 62 insertions(+), 2 deletions(-) + +commit 79361eede240e9591891290c22cd072ccddb78a3 +Author: Andoni Morales Alastruey +AuthorDate: Thu Apr 19 15:02:34 2012 +0200 +Commit: Sebastian Dröge +CommitDate: Thu Apr 19 15:20:43 2012 +0200 + + tests: fix test on windows + + glib/tests/fileutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit af7dc168f65453305e2cd8f63b0daaa3c441927c +Author: Andoni Morales Alastruey +AuthorDate: Thu Apr 19 15:12:48 2012 +0200 +Commit: Sebastian Dröge +CommitDate: Thu Apr 19 15:20:31 2012 +0200 + + test: only check for defined errors + + glib/tests/fileutils.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 44 insertions(+) + +commit 0d9a7f2117ff821d576ec54dee724b69907fa7a0 +Author: Alexander Larsson +AuthorDate: Wed Apr 18 16:24:44 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Apr 19 10:24:08 2012 +0200 + + Remove ununsed include + + gio/tests/gdbus-connection.c | 1 - + 1 file changed, 1 deletion(-) + +commit 82aecce30131e275dff73f23ee91e7c40a9b3f03 +Author: Alexander Larsson +AuthorDate: Tue Apr 17 15:50:53 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Apr 19 10:24:08 2012 +0200 + + gdbus: Escape nonce files in dbus addressess + + Otherwise the colon in c:\blah made for trouble + + gio/gdbusserver.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 2414d7d6a197e0c4b184607160d6cd8a378df177 +Author: Alexander Larsson +AuthorDate: Tue Apr 17 15:50:01 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Apr 19 10:24:08 2012 +0200 + + Fix build on win32 + + Some errnos don't exist on win32 + + glib/tests/fileutils.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit b77af49b0a921a8695a8b856264df3152a9c3689 +Author: Alexander Larsson +AuthorDate: Mon Apr 16 10:18:44 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Apr 19 10:24:08 2012 +0200 + + Fix race in gdbus-connection test + + We need to flush the AddMatches before even connecting to the bus, + or we + risk missing the NameOwnerChanged from the new connections. + + gio/tests/gdbus-connection.c | 25 +++++++++++++------------ + 1 file changed, 13 insertions(+), 12 deletions(-) + +commit ff92fe95935b38eaacedb287f6600df000ed1c1a +Author: Alexander Larsson +AuthorDate: Mon Apr 16 09:55:29 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Apr 19 10:24:08 2012 +0200 + + Support initial underscores in dbus codegen namespace + + Before these were considered lowercase and thus got duplicated. + + gio/gdbus-2.0/codegen/utils.py | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 415a8d81f6fc52d7314517f36bd03f0cbad27dd5 +Author: Xavier Claessens +AuthorDate: Wed Apr 18 23:28:17 2012 +0200 +Commit: Xavier Claessens +CommitDate: Thu Apr 19 10:07:39 2012 +0200 + + Use GTestDBus in all GDBus unit tests + + To make port easier, this rewrites dbus-sessionbus.c using a + GTestDBus singleton internally. + + https://bugzilla.gnome.org/show_bug.cgi?id=672985 + + gio/tests/actions.c | 2 - + gio/tests/gapplication.c | 23 +-- + gio/tests/gdbus-auth.c | 5 - + gio/tests/gdbus-bz627724.c | 6 +- + gio/tests/gdbus-connection-loss.c | 13 +- + gio/tests/gdbus-connection-slow.c | 7 +- + gio/tests/gdbus-connection.c | 23 +-- + gio/tests/gdbus-exit-on-close.c | 12 +- + gio/tests/gdbus-export.c | 13 +- + gio/tests/gdbus-introspection.c | 21 +-- + gio/tests/gdbus-names.c | 14 +- + gio/tests/gdbus-peer.c | 2 - + gio/tests/gdbus-proxy-threads.c | 14 +- + gio/tests/gdbus-proxy-well-known-name.c | 11 +- + gio/tests/gdbus-proxy.c | 15 +- + gio/tests/gdbus-sessionbus.c | 325 + ++------------------------------ + gio/tests/gdbus-sessionbus.h | 12 +- + gio/tests/gdbus-test-codegen.c | 11 -- + gio/tests/gdbus-tests.c | 106 ----------- + gio/tests/gdbus-tests.h | 25 --- + gio/tests/gdbus-threading.c | 11 -- + gio/tests/gmenumodel.c | 3 - + 22 files changed, 65 insertions(+), 609 deletions(-) + +commit 95bf3d1194a42aa0933e2d1dba26ba57395613fc +Author: Xavier Claessens +AuthorDate: Wed Apr 18 23:21:13 2012 +0200 +Commit: Xavier Claessens +CommitDate: Thu Apr 19 10:06:26 2012 +0200 + + Add GTestDBus object + + This is a helper to write unit tests using a private dbus-daemon. + + https://bugzilla.gnome.org/show_bug.cgi?id=672985 + + docs/reference/gio/gio-docs.xml | 4 + + docs/reference/gio/gio-sections.txt | 18 + + docs/reference/gio/gio.types | 2 + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gio.symbols | 10 + + gio/gioenums.h | 12 + + gio/giotypes.h | 2 + + gio/gtestdbus.c | 693 + ++++++++++++++++++++++++++++++++++++ + gio/gtestdbus.h | 74 ++++ + 10 files changed, 818 insertions(+) + +commit 2e3d50631ff05d28ed5bdae97d1becc4c6b5e078 +Author: Xavier Claessens +AuthorDate: Fri Apr 6 14:51:09 2012 +0200 +Commit: Xavier Claessens +CommitDate: Thu Apr 19 10:06:21 2012 +0200 + + Add private _g_bus_get_singleton_if_exists() function + + This is used by g_test_dbus_down() to ensure the GDBusConnection + gets disposed, but not create one if the singleton already got + disposed. + + https://bugzilla.gnome.org/show_bug.cgi?id=672985 + + gio/gdbusconnection.c | 19 +++++++++++++++++++ + gio/gdbusprivate.h | 3 +++ + 2 files changed, 22 insertions(+) + +commit 98569e53e3678ab906bfcd3a8c624ea3d74d643f +Author: David Zeuthen +AuthorDate: Wed Apr 18 13:48:27 2012 -0400 +Commit: David Zeuthen +CommitDate: Wed Apr 18 13:48:27 2012 -0400 + + Revert "Add a private copy of gio/tests/gdbus-tests.c,h to gio/" + + This reverts commit 07bbc87615c6c0d6a525f40c2bffad2c11e400d2. + + gio/Makefile.am | 1 - + gio/gdbus-tests.c | 268 + ------------------------------------------------------ + gio/gdbus-tests.h | 145 ----------------------------- + 3 files changed, 414 deletions(-) + +commit 26d4da2352bea3024a90b7fe0d1b1ed4c1b5e979 +Author: David Zeuthen +AuthorDate: Wed Apr 18 13:48:09 2012 -0400 +Commit: David Zeuthen +CommitDate: Wed Apr 18 13:48:09 2012 -0400 + + Revert "Add private _g_bus_get_singleton_if_exists() function" + + This reverts commit f8a8e9039889c090fb3323e195730b9e460396e4. + + gio/gdbusconnection.c | 19 ------------------- + gio/gdbusprivate.h | 3 --- + 2 files changed, 22 deletions(-) + +commit a6f83d73e59cc2ab0353ff3edf38d27185852581 +Author: David Zeuthen +AuthorDate: Wed Apr 18 13:47:51 2012 -0400 +Commit: David Zeuthen +CommitDate: Wed Apr 18 13:47:51 2012 -0400 + + Revert "Add GTestDBus object" + + This reverts commit 1b5f70b5b035019ba28da6a5db6eff8122e17ae7. + + docs/reference/gio/gio-docs.xml | 4 - + docs/reference/gio/gio-sections.txt | 18 - + docs/reference/gio/gio.types | 2 - + gio/Makefile.am | 2 - + gio/gio.h | 1 - + gio/gio.symbols | 10 - + gio/gioenums.h | 15 - + gio/giotypes.h | 2 - + gio/gtestdbus.c | 650 + -------------------------------- + gio/gtestdbus.h | 82 ---- + gio/tests/actions.c | 2 + + gio/tests/gapplication.c | 23 +- + gio/tests/gdbus-auth.c | 5 + + gio/tests/gdbus-bz627724.c | 6 +- + gio/tests/gdbus-connection-loss.c | 13 +- + gio/tests/gdbus-connection-slow.c | 7 +- + gio/tests/gdbus-connection.c | 20 +- + gio/tests/gdbus-exit-on-close.c | 12 +- + gio/tests/gdbus-export.c | 13 +- + gio/tests/gdbus-introspection.c | 11 +- + gio/tests/gdbus-names.c | 13 +- + gio/tests/gdbus-peer.c | 2 + + gio/tests/gdbus-proxy-threads.c | 10 +- + gio/tests/gdbus-proxy-well-known-name.c | 11 +- + gio/tests/gdbus-proxy.c | 11 +- + gio/tests/gdbus-sessionbus.c | 325 +++++++++++++++- + gio/tests/gdbus-sessionbus.h | 12 +- + gio/tests/gdbus-test-codegen.c | 11 + + gio/tests/gdbus-threading.c | 11 + + gio/tests/gmenumodel.c | 3 + + 30 files changed, 469 insertions(+), 838 deletions(-) + +commit 9dce93514eb80cd54c2c02db3abf50f2d5a34fb0 +Author: David Zeuthen +AuthorDate: Wed Apr 18 13:33:00 2012 -0400 +Commit: David Zeuthen +CommitDate: Wed Apr 18 13:33:00 2012 -0400 + + GMenuModel: Don't leak GDBusConnection in test + + See https://bugzilla.gnome.org/show_bug.cgi?id=672985#c89 + + Signed-off-by: David Zeuthen + + gio/tests/gmenumodel.c | 1 + + 1 file changed, 1 insertion(+) + +commit 1b5f70b5b035019ba28da6a5db6eff8122e17ae7 +Author: Xavier Claessens +AuthorDate: Wed Apr 18 08:50:07 2012 +0200 +Commit: David Zeuthen +CommitDate: Wed Apr 18 11:19:13 2012 -0400 + + Add GTestDBus object + + This is a helper to write unit tests using a private dbus-daemon. + + session_bus_up/down() are now just wrappers around a GTestDBus + singleton. + + https://bugzilla.gnome.org/show_bug.cgi?id=672985 + + docs/reference/gio/gio-docs.xml | 4 + + docs/reference/gio/gio-sections.txt | 18 + + docs/reference/gio/gio.types | 2 + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gio.symbols | 10 + + gio/gioenums.h | 15 + + gio/giotypes.h | 2 + + gio/gtestdbus.c | 650 + ++++++++++++++++++++++++++++++++ + gio/gtestdbus.h | 82 ++++ + gio/tests/actions.c | 2 - + gio/tests/gapplication.c | 23 +- + gio/tests/gdbus-auth.c | 5 - + gio/tests/gdbus-bz627724.c | 6 +- + gio/tests/gdbus-connection-loss.c | 13 +- + gio/tests/gdbus-connection-slow.c | 7 +- + gio/tests/gdbus-connection.c | 20 +- + gio/tests/gdbus-exit-on-close.c | 12 +- + gio/tests/gdbus-export.c | 13 +- + gio/tests/gdbus-introspection.c | 11 +- + gio/tests/gdbus-names.c | 13 +- + gio/tests/gdbus-peer.c | 2 - + gio/tests/gdbus-proxy-threads.c | 10 +- + gio/tests/gdbus-proxy-well-known-name.c | 11 +- + gio/tests/gdbus-proxy.c | 11 +- + gio/tests/gdbus-sessionbus.c | 325 +--------------- + gio/tests/gdbus-sessionbus.h | 12 +- + gio/tests/gdbus-test-codegen.c | 11 - + gio/tests/gdbus-threading.c | 11 - + gio/tests/gmenumodel.c | 3 - + 30 files changed, 838 insertions(+), 469 deletions(-) + +commit f8a8e9039889c090fb3323e195730b9e460396e4 +Author: Xavier Claessens +AuthorDate: Fri Apr 6 14:51:09 2012 +0200 +Commit: David Zeuthen +CommitDate: Wed Apr 18 11:19:13 2012 -0400 + + Add private _g_bus_get_singleton_if_exists() function + + This is used by g_test_dbus_down() to ensure the GDBusConnection + gets disposed, but not create one if the singleton already got + disposed. + + https://bugzilla.gnome.org/show_bug.cgi?id=672985 + + gio/gdbusconnection.c | 19 +++++++++++++++++++ + gio/gdbusprivate.h | 3 +++ + 2 files changed, 22 insertions(+) + +commit 07bbc87615c6c0d6a525f40c2bffad2c11e400d2 +Author: Xavier Claessens +AuthorDate: Tue Apr 17 19:33:11 2012 +0200 +Commit: David Zeuthen +CommitDate: Wed Apr 18 11:19:13 2012 -0400 + + Add a private copy of gio/tests/gdbus-tests.c,h to gio/ + + https://bugzilla.gnome.org/show_bug.cgi?id=672985 + + gio/Makefile.am | 1 + + gio/gdbus-tests.c | 268 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gdbus-tests.h | 145 +++++++++++++++++++++++++++++ + 3 files changed, 414 insertions(+) + +commit c70a4030dd55fae4555e374bd7fe421fd36f3e22 +Author: Kjartan Maraas +AuthorDate: Wed Apr 18 09:27:04 2012 +0200 +Commit: Kjartan Maraas +CommitDate: Wed Apr 18 09:27:04 2012 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 177 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 88 insertions(+), 89 deletions(-) + +commit b3f814883f460ec9b309552a501652ecdecfb2dc +Author: Alexandre Rostovtsev +AuthorDate: Sun Apr 15 22:57:25 2012 -0400 +Commit: William Hua +CommitDate: Wed Apr 18 00:00:29 2012 -0400 + + Do not detect GNUstep as Cocoa + + GNUstep also installs Foundation/Foundation.h + + https://bugzilla.gnome.org/show_bug.cgi?id=674172 + + Signed-off-by: William Hua + + configure.ac | 3 +++ + 1 file changed, 3 insertions(+) + +commit a147004b83ee48265e266e33da7656a3a09c7edb +Author: William Hua +AuthorDate: Tue Apr 17 23:49:47 2012 -0400 +Commit: William Hua +CommitDate: Tue Apr 17 23:49:47 2012 -0400 + + Use Cocoa header for Cocoa test instead of Foundation. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7f5f47ae15268a1dd96fabd360eb25e712724ac4 +Author: David Zeuthen +AuthorDate: Tue Apr 17 17:51:01 2012 -0400 +Commit: David Zeuthen +CommitDate: Tue Apr 17 17:51:55 2012 -0400 + + gdbus-codegen: Don't leak stuff in tests + + Signed-off-by: David Zeuthen + + gio/tests/gdbus-test-codegen.c | 108 + +++++++++++++++++++++++++---------------- + 1 file changed, 67 insertions(+), 41 deletions(-) + +commit eedb6d8366a9cf4e638fe34ebdca17b387e41ce5 +Author: David Zeuthen +AuthorDate: Tue Apr 17 17:50:40 2012 -0400 +Commit: David Zeuthen +CommitDate: Tue Apr 17 17:51:55 2012 -0400 + + GDBusObjectProxy: Don't leak connection + + Signed-off-by: David Zeuthen + + gio/gdbusobjectproxy.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 3964e708e9a4eb7c23c0aa651ccf8bc7a57cbbf0 +Author: David Zeuthen +AuthorDate: Tue Apr 17 17:48:08 2012 -0400 +Commit: David Zeuthen +CommitDate: Tue Apr 17 17:51:55 2012 -0400 + + GDBusObjectManagerClient: Don't leak object proxy when handling + D-Bus signal + + It's g_object_unref(), not g_object_ref(). Ugh. + + Therefore, use g_clear_object(). + + Signed-off-by: David Zeuthen + + gio/gdbusobjectmanagerclient.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 3b9791cca63f78e39fdbcb8596c4b8a4e84fa937 +Author: Piotr Drąg +AuthorDate: Tue Apr 17 19:48:59 2012 +0200 +Commit: Piotr Drąg +CommitDate: Tue Apr 17 19:48:59 2012 +0200 + + Updated POTFILES.in + + po/POTFILES.in | 2 ++ + 1 file changed, 2 insertions(+) + +commit 00ee06e6a332d1415baf5533e34f05a83d64cb02 +Author: Dan Winship +AuthorDate: Sat Feb 4 16:46:29 2012 -0500 +Commit: Dan Winship +CommitDate: Tue Apr 17 12:33:12 2012 -0400 + + gio: use GPollable* to implement fallback read_async/write_async + + If a GInputStream does not provide a read_async() implementation, but + does implement GPollableInputStream, then instead of doing + read-synchronously-in-a-thread, just use + g_pollable_input_stream_read_nonblocking() and + g_pollable_input_stream_create_source() to implement an async read in + the same thread. Similarly for GOutputStream. + + Remove a bunch of existing read_async()/write_async() implementations + that are basically equivalent to the new fallback method. + + https://bugzilla.gnome.org/show_bug.cgi?id=673997 + + gio/gbufferedinputstream.c | 195 + -------------------------------------------- + gio/gbufferedoutputstream.c | 108 ------------------------ + gio/ginputstream.c | 71 +++++++++++++++- + gio/gmemoryinputstream.c | 57 ------------- + gio/gmemoryoutputstream.c | 62 -------------- + gio/goutputstream.c | 66 ++++++++++++++- + gio/gsocketinputstream.c | 91 --------------------- + gio/gsocketoutputstream.c | 111 +++---------------------- + gio/gunixinputstream.c | 143 ++------------------------------ + gio/gunixoutputstream.c | 135 ------------------------------ + 10 files changed, 150 insertions(+), 889 deletions(-) + +commit 82ec4dcaed8107d436f76c45ec30645715b6dbef +Author: Dan Winship +AuthorDate: Mon Feb 6 15:08:08 2012 -0500 +Commit: Dan Winship +CommitDate: Tue Apr 17 12:33:12 2012 -0400 + + gio: implement GPollableInput/OutputStream in more stream types + + Implement GPollableInputStream in GMemoryInputStream and + GConverterInputStream, and likewise implement GPollableOutputStream in + the corresponding output streams. + + https://bugzilla.gnome.org/show_bug.cgi?id=673997 + + gio/gconverterinputstream.c | 130 +++++++++++++++++++++++--- + gio/gconverteroutputstream.c | 119 ++++++++++++++++++++---- + gio/gmemoryinputstream.c | 41 ++++++++- + gio/gmemoryoutputstream.c | 40 +++++++- + gio/tests/converter-stream.c | 214 + +++++++++++++++++++++++++++++++++++++++++++ + 5 files changed, 508 insertions(+), 36 deletions(-) + +commit 111ba203c2440a5d7d8a14b043213b78d54752ae +Author: Dan Winship +AuthorDate: Sat Feb 11 17:22:49 2012 -0500 +Commit: Dan Winship +CommitDate: Tue Apr 17 12:33:12 2012 -0400 + + gpollableutils: utility functions for pollable stream implementations + + Move g_pollable_source_new() here from gpollableinputstream.c, add + g_pollable_source_new_full(), and add some new methods to do either + blocking or nonblocking reads depending on a boolean argument. + + https://bugzilla.gnome.org/show_bug.cgi?id=673997 + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 14 +- + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gio.symbols | 6 +- + gio/gpollableinputstream.c | 103 ----------- + gio/gpollableinputstream.h | 3 - + gio/gpollableutils.c | 350 + ++++++++++++++++++++++++++++++++++++ + gio/gpollableutils.h | 65 +++++++ + 9 files changed, 435 insertions(+), 110 deletions(-) + +commit 7e95777a6a46ef40b1a175e95136942b4eed4d75 +Author: Dan Winship +AuthorDate: Sun Apr 1 14:47:19 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Apr 17 12:33:12 2012 -0400 + + gio: minor GPollableInputStream / GPollableOutputStream fixes + + Make g_pollable_input_stream_read() and + g_pollable_output_stream_write() look a little bit more like the + non-pollable versions in terms of error handling, etc. Also, use the + read_fn and write_fn virtual methods directly rather than calling + g_input_stream_read()/g_output_stream_write(), to avoid problems with + re-entrancy involving the "pending" flag. + + Also belatedly add single-include guards to the header files. + + https://bugzilla.gnome.org/show_bug.cgi?id=673997 + + gio/gpollableinputstream.c | 41 + +++++++++++++++++++++++++++++++---------- + gio/gpollableinputstream.h | 8 ++++++-- + gio/gpollableoutputstream.c | 41 + +++++++++++++++++++++++++++++++---------- + gio/gpollableoutputstream.h | 8 ++++++-- + 4 files changed, 74 insertions(+), 24 deletions(-) + +commit adea9fb25210f2d04bcf2453c18847fb965927f7 +Author: Dan Winship +AuthorDate: Tue Apr 17 11:46:50 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Apr 17 12:33:12 2012 -0400 + + GConverterInputStream: fix an infinite loop when fill_buffer returns + an error + + The loop was using a GConverterResult variable where it meant to use a + gssize, and since GConverterResult was ending up as an unsigned type, + this meant the (res < 0) check always failed. + + gio/gconverterinputstream.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 2ef1a8ef05410ee724f7ad577db57bd11e6c51c2 +Author: Hannes Mueller +AuthorDate: Sat Feb 4 10:06:35 2012 +0100 +Commit: Benjamin Otte +CommitDate: Tue Apr 17 18:24:41 2012 +0200 + + avoid warning in gutils.h when using gcc with -Wconversion + + Old solution to avoid warning with gcc flag -Wconversion does not + work with gcc >=4.3 since the behaviour for that flag has been + changed, ref. http://gcc.gnu.org/wiki/NewWconversion. Now cast for + __builtin_clzl is required, which itself is declared to return int. + + https://bugzilla.gnome.org/show_bug.cgi?id=619026 + + glib/gutils.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit be6955a008396cd234f53361459c9fcf91576fdc +Author: Sasi Bhushan +AuthorDate: Tue Apr 17 15:45:05 2012 +0530 +Commit: Sasi Bhushan Boddepalli +CommitDate: Tue Apr 17 15:45:05 2012 +0530 + + Updated Telugu Translation + + po/te.po | 214 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 108 insertions(+), 106 deletions(-) + +commit bb6807ae254936ef95679e6b18b87e19ae90da1f +Author: Alexander Shopov +AuthorDate: Tue Apr 17 06:28:41 2012 +0300 +Commit: Alexander Shopov +CommitDate: Tue Apr 17 06:28:41 2012 +0300 + + Updated Bulgarian translation + + po/bg.po | 180 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 90 insertions(+), 90 deletions(-) + +commit f93c999706ed2dcb24ff7f942cf25c4f4a8ea786 +Author: Fran Diéguez +AuthorDate: Tue Apr 17 01:11:08 2012 +0200 +Commit: Fran Diéguez +CommitDate: Tue Apr 17 01:11:08 2012 +0200 + + Updated Galician translations + + po/gl.po | 183 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 93 insertions(+), 90 deletions(-) + +commit 8869de3857210a243419589a4a1c8357b40c7b02 +Author: Christian Persch +AuthorDate: Thu Nov 17 15:18:50 2011 +0100 +Commit: Christian Persch +CommitDate: Mon Apr 16 22:39:34 2012 +0200 + + gdbus-codegen: Avoid warnings in generated code + + Initialising a "gchar *" struct member from a string literal may + produce + a warning; add an explicit cast to fix that. + + Bug #664275. + + gio/gdbus-2.0/codegen/codegen.py | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 5ef34e5f11b4f71a66615b6506108ee540cc3420 +Author: Christian Persch +AuthorDate: Mon Apr 9 15:34:10 2012 +0200 +Commit: Christian Persch +CommitDate: Mon Apr 16 22:39:34 2012 +0200 + + resources: compiler: Fix resources on big endian architectures + + Resources are always little endian, so the gvdb is byteswapped. When + looking + up the value, it would return a new byteswapped variant, making + the data + returned from do_lookup() invalid once that variant is unref'd. Since + byteswapping doesn't matter for the "ay" data anyway, just use + gvdb_table_get_raw_value() instead and only byteswap the length + and flag + values. + + https://bugzilla.gnome.org/show_bug.cgi?id=673409 + + gio/gresource.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit cf619cffb77b6792f344b517bb4fc46afe0690f5 +Author: Wolfgang Stöggl +AuthorDate: Mon Apr 16 22:37:30 2012 +0200 +Commit: Wolfgang Stöggl +CommitDate: Mon Apr 16 22:37:30 2012 +0200 + + [l10n] Updated German translation + + po/de.po | 87 + +++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 45 insertions(+), 42 deletions(-) + +commit 8da60fa91adca38a0f3c792397bbf89e179b2634 +Author: Matej Urbančič +AuthorDate: Mon Apr 16 22:24:41 2012 +0200 +Commit: Matej Urbančič +CommitDate: Mon Apr 16 22:24:41 2012 +0200 + + Updated Slovenian translation + + po/sl.po | 245 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 124 insertions(+), 121 deletions(-) + +commit 4553caa37a9f4bf73a2af364e592d3d128b32474 +Author: Piotr Drąg +AuthorDate: Mon Apr 16 21:19:23 2012 +0200 +Commit: Piotr Drąg +CommitDate: Mon Apr 16 21:19:48 2012 +0200 + + Updated Polish translation + + po/pl.po | 104 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 52 insertions(+), 52 deletions(-) + +commit 3ac2930e1aabeca7dac7a2570cba24591d97e0d2 +Author: Colin Walters +AuthorDate: Mon Apr 16 13:55:02 2012 -0400 +Commit: Colin Walters +CommitDate: Mon Apr 16 14:14:29 2012 -0400 + + tests: Fix race conditions in mainloop/invoke test + + 1) The test was using GCond incorrectly (it always needs a + state variable) + 2) The state assertion was racing with the thread; just delete it. + All we're really trying to test here is that the invoke runs by the + time the thread is gone, and the function has an assertion that + it runs in the correct thread. + + https://bugzilla.gnome.org/show_bug.cgi?id=674213 + + glib/tests/mainloop.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 3054ecf10943575381dfea2513936567be51dd73 +Author: Colin Walters +AuthorDate: Mon Apr 16 11:50:05 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Apr 16 13:47:27 2012 -0400 + + tests/mainloop: Add a test for recursive child sources + + https://bugzilla.gnome.org/show_bug.cgi?id=669260 + + glib/tests/mainloop.c | 57 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 57 insertions(+) + +commit bdbb5313408013d0877aa76352fa4a14015841c5 +Author: Dan Winship +AuthorDate: Fri Apr 13 11:44:34 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Apr 16 13:47:27 2012 -0400 + + tests/mainloop: add a test for child sources + + https://bugzilla.gnome.org/show_bug.cgi?id=669260 + + glib/tests/mainloop.c | 98 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 98 insertions(+) + +commit a49568ceccb133c5a99524f3fdb842f0c05eb0b3 +Author: Dan Winship +AuthorDate: Wed Apr 11 15:21:17 2012 -0400 +Commit: Dan Winship +CommitDate: Mon Apr 16 13:47:27 2012 -0400 + + gmain: block child sources when blocking the parent + + When blocking a source that has child sources, we need to consider the + children blocked as well. Otherwise they will still trigger repeatedly + in an inner loop started from the parent source's callback. + + https://bugzilla.gnome.org/show_bug.cgi?id=669260 + + glib/gmain.c | 35 +++++++++++++++++++++++++++++------ + 1 file changed, 29 insertions(+), 6 deletions(-) + +commit b3b32be1e1a7dab2467456b73bf8cbf5f64f2cbf +Author: Kalev Lember +AuthorDate: Sat Apr 14 15:48:13 2012 +0300 +Commit: Kalev Lember +CommitDate: Mon Apr 16 18:46:12 2012 +0300 + + Only build gmenumodel test on unix + + It depends on gdbus-sessionbus.c which only builds on unix. + + gio/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit aacd3469a595f32627691f1a7d5baf1ffbcc9527 +Author: Kalev Lember +AuthorDate: Sat Apr 14 15:40:17 2012 +0300 +Commit: Kalev Lember +CommitDate: Mon Apr 16 18:46:12 2012 +0300 + + tests/fileutils: Fix Windows build + + glib/tests/fileutils.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 6bbfa4ee141e89c0961b6d12aa54876e49482fcd +Author: Chandan Kumar (ciypro) +AuthorDate: Mon Apr 16 20:50:21 2012 +0530 +Commit: chandankumar +CommitDate: Mon Apr 16 20:52:20 2012 +0530 + + Updated HINDI translation + + po/hi.po | 309 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 145 insertions(+), 164 deletions(-) + +commit 0f57e5c70ce33d8ee21a2ae8565bd980689ab0c2 +Author: Cosimo Cecchi +AuthorDate: Mon Apr 16 10:45:12 2012 -0400 +Commit: Cosimo Cecchi +CommitDate: Mon Apr 16 10:53:43 2012 -0400 + + tests/date: force English locale running the GDateTime tests + + The parsing test needs to make some assumption about the locale + representation of the string to be parsed, so we need to explicitly + override the locale here. + + glib/tests/date.c | 1 + + 1 file changed, 1 insertion(+) + +commit 01c5cdb50d73ffe205cd42b6e096d249d6428b14 +Author: Daniel Mustieles +AuthorDate: Mon Apr 16 16:31:29 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Mon Apr 16 16:31:29 2012 +0200 + + Updated Spanish translation + + po/es.po | 210 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 106 insertions(+), 104 deletions(-) + +commit db4a635963480d27eb2b87264b12b50afb6266d7 +Author: Petr Kovar +AuthorDate: Mon Apr 16 15:57:21 2012 +0200 +Commit: Petr Kovar +CommitDate: Mon Apr 16 15:57:21 2012 +0200 + + Update Czech translation + + po/cs.po | 169 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 85 insertions(+), 84 deletions(-) + +commit 666374c16f3d8118fe3422839d22ca32af69e4d0 +Author: Stef Walter +AuthorDate: Wed Apr 4 17:13:10 2012 +0200 +Commit: Stef Walter +CommitDate: Mon Apr 16 15:51:39 2012 +0200 + + Add support for MX, TXT, NS and SOA records to GResolver + + * Add resolver functions for looking up DNS records of + various types. Currently implemented: MX, TXT, SOA, SRV, NS + * Return records as GVariant tuples. + * Make the GSrvTarget lookups a wrapper over this new + functionality. + * Rework the resolver test so that it has support for + looking up MX, NS, SOA, TXT records, and uses GOptionContext + + https://bugzilla.gnome.org/show_bug.cgi?id=672944 + + docs/reference/gio/gio-sections.txt | 4 + + gio/gio.symbols | 4 + + gio/gioenums.h | 43 ++++ + gio/gnetworkingprivate.h | 10 +- + gio/gresolver.c | 469 + +++++++++++++++++++++++++++++++++--- + gio/gresolver.h | 35 ++- + gio/gthreadedresolver.c | 118 +++++---- + gio/tests/resolver.c | 281 +++++++++++++++++++-- + 8 files changed, 862 insertions(+), 102 deletions(-) + +commit cec17df59810b6f321d0b43027f3b90e4b1ba18c +Author: Petr Kovar +AuthorDate: Mon Apr 16 15:21:17 2012 +0200 +Commit: Petr Kovar +CommitDate: Mon Apr 16 15:21:17 2012 +0200 + + Update Czech translation + + po/cs.po | 361 + +++++++++++++++++++++++++-------------------------------------- + 1 file changed, 143 insertions(+), 218 deletions(-) + +commit b17085dcb9cbf13a55a11ad4bff718e8d3c5d54e +Author: Yinghua Wang +AuthorDate: Mon Apr 16 14:06:56 2012 +0800 +Commit: YunQiang Su +CommitDate: Mon Apr 16 14:06:56 2012 +0800 + + update Simplified Chinese (zh_CN) translation + + po/zh_CN.po | 320 + ++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 162 insertions(+), 158 deletions(-) + +commit 6d19f11c89db11cd5bb3637c83261b6316b150df +Author: Rafał Mużyło +AuthorDate: Sun Apr 15 11:17:07 2012 -0400 +Commit: Colin Walters +CommitDate: Sun Apr 15 11:17:28 2012 -0400 + + configure: Fix typo in ELF check + + Signed-off-by: Colin Walters + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4b98c512df9102086f9c6babb04fed3533b73925 +Author: Colin Walters +AuthorDate: Thu Apr 12 13:54:55 2012 -0400 +Commit: Colin Walters +CommitDate: Sun Apr 15 11:15:54 2012 -0400 + + build: When cross compiling, don't require host binaries if tests + are not enabled + + These binaries are now only used by the test suite. glib-genmarshal + *used* to be required to generate marshallers, but isn't anymore now + that we use libffi (via g_cclosure_marshal_generic). + + https://bugzilla.gnome.org/show_bug.cgi?id=667806 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f084b603771f78126bc0b07229a1574b76e776bb +Author: Colin Walters +AuthorDate: Fri Jan 13 10:09:10 2012 -0500 +Commit: Colin Walters +CommitDate: Sun Apr 15 11:15:54 2012 -0400 + + build: Add --disable-modular-tests build option + + This patch solves two problems: + + First, it allows builders to optionally cut the circular dependency + between dbus and glib by disabling the modular tests (just like how + the tests can be disabled in dbus). + + Second, the tests are entirely pointless to build if cross-compiling. + + It also moves us slightly closer to the long term future we want where + the tests are a separate ./configure invocation and run against the + INSTALLED glib, not the one in the source tree. This would allow us to + run the tests constantly, not just when glib is built. + + https://bugzilla.gnome.org/show_bug.cgi?id=667806 + + Makefile.am | 7 ++++++- + configure.ac | 19 +++++++++++++------ + gio/Makefile.am | 7 ++++++- + glib/Makefile.am | 8 +++++++- + gobject/Makefile.am | 8 +++++++- + 5 files changed, 39 insertions(+), 10 deletions(-) + +commit 366c39b6420c4cd23653a0e7d798d5f34e556392 +Author: Yuri Myasoedov +AuthorDate: Sun Apr 15 00:27:04 2012 +0400 +Commit: Yuri Myasoedov +CommitDate: Sun Apr 15 00:27:04 2012 +0400 + + Updated Russian translation + + po/ru.po | 1388 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 678 insertions(+), 710 deletions(-) + +commit 1e2ca7646400f5f3a4464bbac3f50852dbf4e4cf +Author: Cosimo Cecchi +AuthorDate: Fri Apr 13 16:06:16 2012 -0400 +Commit: Cosimo Cecchi +CommitDate: Sat Apr 14 13:09:33 2012 -0400 + + fileinfo: document the correct type for trash::orig-path + + The correct type for this attribute, as set by GVfs, is + G_FILE_ATTRIBUTE_TYPE_BYTE_STRING (which is the correct type for file + paths anyway). + + https://bugzilla.gnome.org/show_bug.cgi?id=674074 + + gio/gfileinfo.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 6a9341d851030eac3cd20eb5b91a02d1db3c7006 +Author: David Zeuthen +AuthorDate: Sat Apr 14 12:40:57 2012 -0400 +Commit: David Zeuthen +CommitDate: Sat Apr 14 12:40:57 2012 -0400 + + GDBusAuth: Handle when no there is no auth observer present + + I obviously fucked up when adding the ::allow-mechanism signal, sorry. + + Signed-off-by: David Zeuthen + + gio/gdbusauth.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b9d1fe7db23c14440c64a3878c9461162b948826 +Author: David Zeuthen +AuthorDate: Wed Apr 11 23:34:08 2012 -0400 +Commit: David Zeuthen +CommitDate: Sat Apr 14 12:33:14 2012 -0400 + + Check that auth methods work and interoperate with libdbus-1 + + See https://bugzilla.gnome.org/show_bug.cgi?id=673943 + + Signed-off-by: David Zeuthen + + gio/tests/Makefile.am | 7 ++ + gio/tests/gdbus-auth.c | 292 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 299 insertions(+) + +commit 9496565a4cf3cc175929a3d184cb5dc6023f62ec +Author: David Zeuthen +AuthorDate: Sat Apr 14 12:29:30 2012 -0400 +Commit: David Zeuthen +CommitDate: Sat Apr 14 12:32:23 2012 -0400 + + GSocketControlMessage: Don't warn about unknown messages + + If we do this, the tests added in bug 673943 will cause warnings. + + Signed-off-by: David Zeuthen + + gio/gsocketcontrolmessage.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +commit ce81bd87c5fdd54126ceb81c17fea7c914833c3e +Author: David Zeuthen +AuthorDate: Wed Apr 11 23:30:48 2012 -0400 +Commit: David Zeuthen +CommitDate: Sat Apr 14 11:52:20 2012 -0400 + + GDBusAuthObserver: Add a way to control what authentication mechanisms + to use + + This is related to https://bugzilla.gnome.org/show_bug.cgi?id=673943 + but also useful in a lot of other contexts. + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdbusauth.c | 40 +++++++++++++++++------- + gio/gdbusauth.h | 1 + + gio/gdbusauthobserver.c | 62 + +++++++++++++++++++++++++++++++++++++ + gio/gdbusauthobserver.h | 3 ++ + gio/gdbusconnection.c | 1 + + gio/gio.symbols | 1 + + 7 files changed, 97 insertions(+), 12 deletions(-) + +commit bb7f3e0cbd89d0a55630e02dba562303c038a445 +Author: Giovanni Campagna +AuthorDate: Thu Apr 5 23:26:12 2012 +0200 +Commit: Giovanni Campagna +CommitDate: Sat Apr 14 02:44:25 2012 +0200 + + GDesktopAppInfo: add an accessor for StartupWMClass + + Components using GIO to do window to application matching can + use that field to retrieve potential candidates. + + https://bugzilla.gnome.org/show_bug.cgi?id=673659 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdesktopappinfo.c | 26 +++++++++++++++++++++++++- + gio/gdesktopappinfo.h | 2 ++ + gio/gio.symbols | 1 + + gio/tests/appinfo-test.desktop | 2 ++ + gio/tests/appinfo.c | 15 +++++++++++++++ + 6 files changed, 46 insertions(+), 1 deletion(-) + +commit 79013634abe3a627d867f7054aaedb453b83d831 +Author: Giovanni Campagna +AuthorDate: Mon Apr 9 20:27:24 2012 +0200 +Commit: Giovanni Campagna +CommitDate: Sat Apr 14 02:22:36 2012 +0200 + + Add version macros for 2.34 + + This marks the start of the new development cycle, and opens the + window for API additions. + + https://bugzilla.gnome.org/show_bug.cgi?id=673659 + + glib/gversionmacros.h | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit 55bbb9fc69856fff853e4f464ac0813e247e78d2 +Author: Matthias Clasen +AuthorDate: Fri Apr 13 19:54:42 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 13 19:54:42 2012 -0400 + + Bump version + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2b6cf583d264c101c72f4f7554925a0612b58e08 +Author: Matthias Clasen +AuthorDate: Fri Apr 13 19:53:42 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 13 19:53:42 2012 -0400 + + 2.32.1 + + NEWS | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit c1a83a4ac8b0e45bd176ff1334f58ae2d5c33ad2 +Author: Matthias Clasen +AuthorDate: Fri Apr 13 18:51:23 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 13 19:53:07 2012 -0400 + + Fix distcheck + + I forgot to dist a test script, and forgot to look for it + in srcdir instead of builddir. + + glib/tests/Makefile.am | 3 ++- + glib/tests/spawn-singlethread.c | 5 ++++- + 2 files changed, 6 insertions(+), 2 deletions(-) + +commit 9375212311382679344649b66d5161b25af02724 +Author: Christian Kirbach +AuthorDate: Fri Apr 13 19:39:19 2012 +0200 +Commit: Mario Blättermann +CommitDate: Fri Apr 13 19:39:19 2012 +0200 + + [l10n] Updated German translation + + po/de.po | 302 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 152 insertions(+), 150 deletions(-) + +commit baf0ebf7b233f05359f59dbee8d73fa15ef09407 +Author: Dan Winship +AuthorDate: Fri Apr 13 11:43:09 2012 -0400 +Commit: Dan Winship +CommitDate: Fri Apr 13 12:15:15 2012 -0400 + + tests/mainloop: fix a race condition + + Rather than depending on the machine's speed/load, just interlock + between the two threads properly. + + glib/tests/mainloop.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit e0aa0ae8a2b8a8989447673a7323434040ec7bd0 +Author: Dan Winship +AuthorDate: Fri Apr 13 11:42:39 2012 -0400 +Commit: Dan Winship +CommitDate: Fri Apr 13 12:15:11 2012 -0400 + + tests/mainloop: use g_assert_cmpint(), for better error messages + + glib/tests/mainloop.c | 32 ++++++++++++++++---------------- + 1 file changed, 16 insertions(+), 16 deletions(-) + +commit 50aed1cc8f5cfc18d389c5e1c059368482fba56d +Author: Matthias Clasen +AuthorDate: Fri Apr 13 09:31:08 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 13 09:39:48 2012 -0400 + + Make the markup-parse test independent of the locale + + I added a setlocale call, because we need it for Unicode to + come out right; but I forgot to fix the locale, so we now + fail when comparing error messages to the expected (English) + result. Correct this by setting LANG explicitly to en_US.utf-8. + + https://bugzilla.gnome.org/show_bug.cgi?id=669285 + + glib/tests/markup-parse.c | 1 + + 1 file changed, 1 insertion(+) + +commit 5e0be9e9e2a3ed3b84fe3ce8d4d560220bd78811 +Author: Bruce Cowan +AuthorDate: Fri Apr 13 13:27:39 2012 +0100 +Commit: Bruce Cowan +CommitDate: Fri Apr 13 13:27:39 2012 +0100 + + Updated British English translation + + po/en_GB.po | 289 + +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 147 insertions(+), 142 deletions(-) + +commit e13fc585354508cb28dd08b7d3f44f5744cfa461 +Author: Kalev Lember +AuthorDate: Fri Apr 13 13:22:46 2012 +0300 +Commit: Kalev Lember +CommitDate: Fri Apr 13 13:22:46 2012 +0300 + + GResource docs: fix typo + + gio/gresource.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 192892b52cbd13d4d3a09c1ca09c5ccdfe76d359 +Author: Ryan Lortie +AuthorDate: Thu Apr 12 20:04:32 2012 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 12 20:04:32 2012 -0400 + + GSettings docs: clarify what is a good path + + Add an explicit note to the docs about choosing paths based on domain + names, not ones like "/apps/", "/desktop/" or "/system/". + + gio/gsettings.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit 6560b37450cd19c4a7c7b690e279fe97b7bfdcaa +Author: Ryan Lortie +AuthorDate: Thu Apr 12 19:55:34 2012 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 12 19:55:34 2012 -0400 + + glib-compile-schemas: warn about bad dconf paths + + For quite some time the recommended usage of GSettings and dconf has + been to use paths like /org/gnome/example/. Use of /apps/ has spilled + over from GConf and is continuing to make its way into a number of + applications as they port. + + glib-compile-schemas will now warn about these types of paths being + used. This generates a lot of noise, but hopefully it will reduce the + number of ported applications making this mistake. + + gio/glib-compile-schemas.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 386f0f29fd3dc8e39f49b50ae496c6b1feb3b0a1 +Author: Alexander Larsson +AuthorDate: Thu Apr 12 16:50:20 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Apr 12 16:50:20 2012 +0200 + + Fall back to SO_PEERCRED if credentials passing fails + + Turns out libdbus doesn't send struct ucred credentials on linux, but + just relies on the SO_PEERCRED support. However, gdbus does send, and + expect to recieve a ucred credential. So, when libdbus talks to a + gdbus server the authentication fails to send the credentials. + + We fix this by falling back to g_socket_get_credentials() if we don't + get any credential messages. + + gio/gunixconnection.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit ec91ed00f14c70cca9749347b8ebc19d72d9885b +Author: Alexander Larsson +AuthorDate: Thu Apr 12 16:43:49 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Apr 12 16:43:49 2012 +0200 + + Detect "empty" socket credentials on Linux + + Linux uses struct ucred to pass over socket credentials. Historically + this has always worked in recievemsg, if SO_PASSCRED was set on + the socket, + even if the remote side didn't pass any credits. But this change + broke that: + + http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=16e5726269611b71c930054ffe9b858c1cea88eb;hp=a9e9fd7182332d0cf5f3e601df3e71dd431b70d7 + + However, it doesn't actually fail getting the credentials, it + just returns + an "empty" one, as initialized by cred_to_ucred() at: + + http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=net/core/sock.c;h=b29ab61b029cf7f76fda992ecfcb8dcaa06b0483;#l756 + + So, we detect this and fail the credentials reading. + + This actually happened in real life with gdbus acting as a server, as + gdbus expected an ucred but libdbus didn't send one. + + gio/gunixcredentialsmessage.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 69d929e67fd44d9a20c64064cc7e06f5d3cead82 +Author: William Hua +AuthorDate: Wed Apr 11 23:25:09 2012 -0400 +Commit: William Hua +CommitDate: Wed Apr 11 23:25:09 2012 -0400 + + Be more precise about Carbon v. Cocoa. + + configure.ac | 14 ++++++++++++++ + gio/Makefile.am | 7 ++----- + gio/giomodule.c | 2 +- + gio/gsettingsbackendinternal.h | 2 +- + 4 files changed, 18 insertions(+), 7 deletions(-) + +commit ebe30ef463f5fd2f011a3386c8e95aff7a42ab22 +Author: OKANO Takayoshi +AuthorDate: Thu Apr 12 09:30:05 2012 +0900 +Commit: Jiro Matsuzawa +CommitDate: Thu Apr 12 09:31:51 2012 +0900 + + [l10n] Update Japanese translation + + po/ja.po | 430 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 215 insertions(+), 215 deletions(-) + +commit 47692845c0a062a76f99b5de125c5eafa4556847 +Author: Kalev Lember +AuthorDate: Wed Apr 11 16:41:48 2012 +0300 +Commit: Kalev Lember +CommitDate: Wed Apr 11 20:01:44 2012 +0300 + + gio-2.0.pc: Avoid full path to executables + + Instead of using full path in glib_compile_schemas and + glib_compile_resources variables, rely on having the executables in + PATH. + + This fixes the cross-compiling case where we cannot execute the + binaries + for target system. Instead of executing the target system's + binaries, we + need to use the native versions installed on the build host. The + easiest + way to find the native executables is to just pick them up from PATH. + + In addition, this brings gio-2.0.pc in line with glib-2.0.pc -- the + latter has historically only listed the executable name and not + the full + path. + + https://bugzilla.gnome.org/show_bug.cgi?id=673911 + + gio-2.0.pc.in | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 5739d896f8d3bf9883d4f5e4b7553a617a1c751a +Author: Jeremy Huddleston +AuthorDate: Wed Apr 11 02:05:00 2012 -0400 +Commit: William Hua +CommitDate: Wed Apr 11 10:31:59 2012 -0400 + + Don't use fast enumeration in old version of Mac OS. + + Signed-off-by: William Hua + + gio/gnextstepsettingsbackend.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +commit 51a2661da647d6ad5610a98bbdb8c805f822265b +Author: Jeremy Huddleston +AuthorDate: Wed Apr 11 01:44:29 2012 -0400 +Commit: William Hua +CommitDate: Wed Apr 11 10:31:59 2012 -0400 + + Link with Foundation framework on OSX. + + Signed-off-by: William Hua + + gio/Makefile.am | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +commit 92654b5035966e36a3b17d4a8a7db74d857f3acf +Author: Bruno Brouard +AuthorDate: Wed Apr 11 14:53:22 2012 +0200 +Commit: Bruno Brouard +CommitDate: Wed Apr 11 14:53:22 2012 +0200 + + Updated French translation + + po/fr.po | 176 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 90 insertions(+), 86 deletions(-) + +commit 708f82735ddade84ebd82106aa921fcb04c8c01f +Author: Chandan Kumar (ciypro) +AuthorDate: Wed Apr 11 16:25:22 2012 +0530 +Commit: chandankumar +CommitDate: Wed Apr 11 16:27:42 2012 +0530 + + Updated HINDI translation + + po/hi.po | 1051 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 586 insertions(+), 465 deletions(-) + +commit 53accb95c017f21761d550dddc92c8d8bf5f2d58 +Author: Kjartan Maraas +AuthorDate: Wed Apr 11 12:41:51 2012 +0200 +Commit: Kjartan Maraas +CommitDate: Wed Apr 11 12:41:51 2012 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 228 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 116 insertions(+), 112 deletions(-) + +commit e1cabfd3f2c294d5fc7c79135d1bb284b456c0d1 +Author: Matthias Clasen +AuthorDate: Tue Apr 10 23:52:30 2012 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 10 23:52:30 2012 -0400 + + Updates + + NEWS | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + +commit e448f206e6473b5eb17b2296d90a5876eb5f34a0 +Author: Carles Ferrando +AuthorDate: Tue Apr 10 23:12:29 2012 +0200 +Commit: Gil Forcada +CommitDate: Tue Apr 10 23:12:29 2012 +0200 + + [l10n]Updated Catalan (Valencian) translation + + po/ca@valencia.po | 187 + ++++++++++++++++++++++++++++-------------------------- + 1 file changed, 96 insertions(+), 91 deletions(-) + +commit 1083b28fb98daed0318eadbc26fdde3201c7ca0a +Author: Jordi Serratosa +AuthorDate: Tue Apr 10 23:12:23 2012 +0200 +Commit: Gil Forcada +CommitDate: Tue Apr 10 23:12:23 2012 +0200 + + [l10n] Fixes on Catalan translation + + po/ca.po | 249 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 122 insertions(+), 127 deletions(-) + +commit c037879bd1424dce4e897635d829327b21e86e69 +Author: Will Thompson +AuthorDate: Fri Apr 6 10:03:29 2012 +0100 +Commit: David Zeuthen +CommitDate: Tue Apr 10 16:39:49 2012 -0400 + + gdbus: test case for 673612 + + When presented with an array of empty arrays of 8-byte-aligned types, + GDBus would incorrectly apply the 8-byte alignment when reading back. + + https://bugzilla.gnome.org/show_bug.cgi?id=673612 + + Signed-off-by: David Zeuthen + + gio/tests/gdbus-serialization.c | 60 + ++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 59 insertions(+), 1 deletion(-) + +commit 113f4abb67620696f63d61d1f22a5be635332b7c +Author: Will Thompson +AuthorDate: Tue Apr 10 13:20:09 2012 +0100 +Commit: David Zeuthen +CommitDate: Tue Apr 10 16:39:47 2012 -0400 + + GDBusMessage: do not align for grandchildren of empty arrays. + + D-Bus arrays are serialized as follows: + + 1. align to a 4-byte boundary (for the length) + 2. uint32: the length of the serialized body in bytes + 3. padding for the alignment of the body type (not included in + the length) + 4. the body. + + Note that 3. is a no-op unless the body type is an 8-byte aligned type + (uint64, int64, double, struct, dict_entry), since you are always on a + 4-byte boundary from aligning and writing the length. + + So, an empty aax (that is, an array containing zero arrays of int64) + is serialized as follows: + + 1. align to a 4-byte boundary + 2. length of the contents of this (empty) array, in bytes (0) + 3. align to a 4-byte boundary (the child array's alignment + requirement) + 4. there is no body. + + But previously, GDBus would recurse in step three to align not + just for + the type of the child array, but for the nonexistent child array's + contents. This only affects the algorithm when the grandchild type has + 8-byte alignment and the reader happened to not already be on + an 8-byte + boundary, in which case 4 bytes were spuriously skipped. + + https://bugzilla.gnome.org/show_bug.cgi?id=673612 + + Signed-off-by: David Zeuthen + + gio/gdbusmessage.c | 151 + +++++++++++++++++++++++++---------------------------- + 1 file changed, 72 insertions(+), 79 deletions(-) + +commit e28d3ef92197eb2e2a6a3a5627dcfaf475021e7e +Author: Will Thompson +AuthorDate: Tue Apr 10 12:58:52 2012 +0100 +Commit: David Zeuthen +CommitDate: Tue Apr 10 16:39:45 2012 -0400 + + GDBusMessage: print more debug info about alignment + + Signed-off-by: David Zeuthen + + gio/gdbusmessage.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ce5710121961d0a7dfc1b5f83577e485560fa8c8 +Author: Yaron Shahrabani +AuthorDate: Tue Apr 10 20:06:51 2012 +0300 +Commit: Yaron Shahrabani +CommitDate: Tue Apr 10 20:06:51 2012 +0300 + + Updated Hebrew translation. + + po/he.po | 254 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 129 insertions(+), 125 deletions(-) + +commit 6620b305a7eae8b59303b3858c25b3f9b9e5fc2d +Author: Мирослав Николић + +AuthorDate: Tue Apr 10 11:06:03 2012 +0200 +Commit: Мирослав Николић + +CommitDate: Tue Apr 10 11:06:03 2012 +0200 + + Updated Serbian translation + + po/sr.po | 183 + +++++++++++++++++++++++++++++---------------------------- + po/sr@latin.po | 183 + +++++++++++++++++++++++++++++---------------------------- + 2 files changed, 184 insertions(+), 182 deletions(-) + +commit 825fdfdc9a7ad9a64ca2ea9184b7c7db397d37f8 +Author: Jasper St. Pierre +AuthorDate: Mon Apr 9 20:07:13 2012 -0300 +Commit: Jasper St. Pierre +CommitDate: Mon Apr 9 23:41:00 2012 -0400 + + gclosure: Support return values of GVariants + + https://bugzilla.gnome.org/show_bug.cgi?id=673803 + + gobject/gclosure.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit c39d6954d3219472b3e9187bb86931051d313582 +Author: Cosimo Cecchi +AuthorDate: Mon Apr 9 15:47:29 2012 -0400 +Commit: Cosimo Cecchi +CommitDate: Mon Apr 9 15:47:29 2012 -0400 + + tests: always use four digit years for date parsing tests + + Or some system with different locale settings might get confused + whether + a two digit year is to be parsed with regard to the current century or + as an absolute year. + + glib/tests/date.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 3b079daf9de2a293ad272ca997cd9dd06f072d8e +Author: Aurimas Černius +AuthorDate: Mon Apr 9 21:52:10 2012 +0300 +Commit: Aurimas Černius +CommitDate: Mon Apr 9 21:52:10 2012 +0300 + + Updated Lithuanian translation + + po/lt.po | 196 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 99 insertions(+), 97 deletions(-) + +commit 390f02fca0a3f79e7349bf12bdf30cba5ceae448 +Author: Piotr Drąg +AuthorDate: Mon Apr 9 17:24:00 2012 +0200 +Commit: Piotr Drąg +CommitDate: Mon Apr 9 17:24:00 2012 +0200 + + Updated POTFILES.skip + + po/POTFILES.skip | 1 + + 1 file changed, 1 insertion(+) + +commit 72aca9db1de2fc897e85d47ada1674af9b96c9b4 +Author: Fran Diéguez +AuthorDate: Sun Apr 8 21:56:22 2012 +0200 +Commit: Fran Diéguez +CommitDate: Sun Apr 8 21:56:22 2012 +0200 + + Updated Galician translations + + po/gl.po | 210 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 107 insertions(+), 103 deletions(-) + +commit ee29e496841d3b56689e826eba9ec0e7ca7f91bc +Author: Matthias Clasen +AuthorDate: Sun Apr 8 10:23:16 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:52 2012 -0400 + + binding: Improve test coverage + + gobject/tests/binding.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit fb0951e67aa8f650f76d6e9bddf4f93c42c57735 +Author: Matthias Clasen +AuthorDate: Sun Apr 8 10:21:50 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:52 2012 -0400 + + spawn: Improve test coverage + + Add a test that excercises the script execution code. + Unfortunately, much of this code only runs in the forked + child, and therefore its execution does not get caught + by gcov. + + glib/tests/echo-script | 1 + + glib/tests/spawn-singlethread.c | 32 ++++++++++++++++++++++++++++++++ + 2 files changed, 33 insertions(+) + +commit b87e7ca7291929d405deaec23368165638255504 +Author: Matthias Clasen +AuthorDate: Sun Apr 8 10:21:27 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:51 2012 -0400 + + mainloop: Improve test coverage + + glib/tests/mainloop.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 43806fca693cb2b12d6f50b0ec38f5e2ed8022c5 +Author: Matthias Clasen +AuthorDate: Sun Apr 8 10:20:46 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:51 2012 -0400 + + settings: Improve test coverage + + gio/tests/gsettings.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit 3072e7afee287a32d44b1113fd341f7ae64b77e3 +Author: Matthias Clasen +AuthorDate: Sun Apr 8 10:20:10 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:51 2012 -0400 + + gdbusserver: Improve test coverage + + gio/tests/gdbus-peer.c | 24 +++++++++++++++++++++++- + 1 file changed, 23 insertions(+), 1 deletion(-) + +commit 26145b97088428444182bcd3c1371c9e27bcb375 +Author: Matthias Clasen +AuthorDate: Sun Apr 8 10:19:20 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:51 2012 -0400 + + icon: Improve test coverage + + gio/tests/g-icon.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit a8c869e9458087220df7e0194c3981032e8caed4 +Author: Matthias Clasen +AuthorDate: Sun Apr 8 10:17:32 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:51 2012 -0400 + + contenttype: Improve test coverage + + Excercise more parts of the guessing machinery. + These tests rely on the mime database being present. + + gio/tests/contenttype.c | 70 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 70 insertions(+) + +commit 1e2cf010e7de9041c38a2ea4bb29807086720f76 +Author: Matthias Clasen +AuthorDate: Sun Apr 8 10:17:04 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:51 2012 -0400 + + networkaddress: Improve test coverage + + gio/tests/network-address.c | 37 ++++++++++++++++++++++++++++++++++++- + 1 file changed, 36 insertions(+), 1 deletion(-) + +commit 5632e9fc9cc588d4846cb40e88194d025f758412 +Author: Matthias Clasen +AuthorDate: Sun Apr 8 10:15:29 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:51 2012 -0400 + + networkaddress: Fix userinfo parsing in uris + + The code that is checking the userinfo part was accidentally + given a pointer to the end of the userinfo, so it was not + checking the right portion of the string at all. + + gio/gnetworkaddress.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 2a1ea40920b3a65420e085c3828da9e406e7afa0 +Author: Matthias Clasen +AuthorDate: Sat Apr 7 11:32:36 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:51 2012 -0400 + + utils: Improve test coverage + + Add a test for some of our gettext variants. + + glib/tests/utils.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +commit 5951295937feffcb9b9671c20f3f07a6df4fd984 +Author: Matthias Clasen +AuthorDate: Sat Apr 7 11:28:42 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:51 2012 -0400 + + fileutils: Improve test coverage + + Add tests for corner cases of g_path_get_basename, and + for the errno-to-file-error conversion. + + glib/tests/fileutils.c | 59 + +++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 56 insertions(+), 3 deletions(-) + +commit 550b69b963dd63360b762172073490b49167ff70 +Author: Matthias Clasen +AuthorDate: Sat Apr 7 11:28:04 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:51 2012 -0400 + + sort: Improve test coverage + + Test the code paths that sort 'large' items. + + glib/tests/sort.c | 33 ++++++++++++++++++++++++++++++++- + 1 file changed, 32 insertions(+), 1 deletion(-) + +commit 06015064b8766bbc3efbc38ed2a62703322ca173 +Author: Matthias Clasen +AuthorDate: Sat Apr 7 11:27:15 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:50 2012 -0400 + + date: Improve test coverage + + Add tests that exercise g_date_order, g_date_compare, g_date_clamp, + and more of the date parsing functions. + + glib/tests/date.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 49 insertions(+) + +commit cbeecdc4ae5e25e94e694f0503e42386572c5a25 +Author: Matthias Clasen +AuthorDate: Sat Apr 7 11:23:47 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:50 2012 -0400 + + convert: Improve test coverage + + Add a test that excercises the 'no conversion' code path. + This uncovered that we don't treat errno properly in this path, + and as a consequence, the returned error code is unreliable. + + glib/tests/convert.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit 7d489acecc4d3e293660d59a942e686776d6b2b4 +Author: Matthias Clasen +AuthorDate: Sat Apr 7 11:22:13 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:50 2012 -0400 + + collate: Improve test coverage + + Add some strings that exercise the non-ASCII parts of our + collation support. + + glib/tests/collate.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 6a57bf12433e241a82a7646cde33b5297bc86d3a +Author: Matthias Clasen +AuthorDate: Sat Apr 7 11:21:09 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:50 2012 -0400 + + Make the dbus menu tests independent from the session bus + + With this change, + DBUS_SESSION_BUS_ADDRESS= make check + succeed here. + + gio/tests/Makefile.am | 1 + + gio/tests/gmenumodel.c | 16 ++++++++++++++-- + 2 files changed, 15 insertions(+), 2 deletions(-) + +commit d036960d3058825625bc595896306f53e787e408 +Author: Matthias Clasen +AuthorDate: Sat Apr 7 11:20:01 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 8 10:24:50 2012 -0400 + + ifdef out some unused code + + Nothing wrong with leaving debug spew in the code, but we should + not build it if it is not used. + + gio/tests/gdbus-connection.c | 26 +++++++++++++++----------- + 1 file changed, 15 insertions(+), 11 deletions(-) + +commit fca9c7a2c73a0c12154b28dff71b90b09f0e0c22 +Author: Piotr Drąg +AuthorDate: Sun Apr 8 13:13:53 2012 +0200 +Commit: Piotr Drąg +CommitDate: Sun Apr 8 13:13:53 2012 +0200 + + Updated Polish translation + + po/pl.po | 194 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 99 insertions(+), 95 deletions(-) + +commit 4becf835b7a2739e727aa0bf272a8b5c0b67b36c +Author: Alexander Shopov +AuthorDate: Sat Apr 7 20:58:19 2012 +0300 +Commit: Alexander Shopov +CommitDate: Sat Apr 7 20:58:19 2012 +0300 + + Updated Bulgarian translation + + po/bg.po | 208 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 106 insertions(+), 102 deletions(-) + +commit 5ce66bed3df43b8fe0a2b2b973f7b1b097ee80ac +Author: Matthias Clasen +AuthorDate: Fri Apr 6 21:22:17 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 6 21:22:17 2012 -0400 + + Formatting cleanup + + gio/gresource.c | 405 + ++++++++++++++++++++++++++++---------------------------- + 1 file changed, 202 insertions(+), 203 deletions(-) + +commit 8db4b949b8fa4577ecff0289776a5c098c575cc5 +Author: Matthias Clasen +AuthorDate: Fri Apr 6 20:50:34 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 6 20:52:15 2012 -0400 + + Always use '/' in test paths + + It does not make much sense to use a platform-dependent + directory separator in these strings, since they are not + filesystem paths. + + https://bugzilla.gnome.org/show_bug.cgi?id=673216 + + glib/gtestutils.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit e52cf810426600fde8b92dc44482b9e19680dc43 +Author: Matthias Clasen +AuthorDate: Fri Apr 6 20:41:19 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 6 20:41:19 2012 -0400 + + Don't return values from void functions + + Sun CC does not take that lightly. + + gio/gactionmap.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit d0b429af482d759f33b82002362ecd8630edc943 +Author: Matthias Clasen +AuthorDate: Fri Apr 6 19:15:53 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 6 19:15:53 2012 -0400 + + Revert "GDesktopAppInfo: add an accessor for StartupWMClass" + + This reverts commit 3ccc4cf91d4ee20df4207f04d3344ee33f1b5c94. + + docs/reference/gio/gio-sections.txt | 1 - + gio/gdesktopappinfo.c | 23 +---------------------- + gio/gdesktopappinfo.h | 1 - + gio/gio.symbols | 1 - + gio/tests/appinfo-test.desktop | 2 -- + gio/tests/appinfo.c | 15 --------------- + 6 files changed, 1 insertion(+), 42 deletions(-) + +commit 3ccc4cf91d4ee20df4207f04d3344ee33f1b5c94 +Author: Giovanni Campagna +AuthorDate: Thu Apr 5 23:26:12 2012 +0200 +Commit: Giovanni Campagna +CommitDate: Sat Apr 7 00:22:02 2012 +0200 + + GDesktopAppInfo: add an accessor for StartupWMClass + + Components using GIO to do window to application matching can + use that field to retrieve potential candidates. + + https://bugzilla.gnome.org/show_bug.cgi?id=673659 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdesktopappinfo.c | 23 ++++++++++++++++++++++- + gio/gdesktopappinfo.h | 1 + + gio/gio.symbols | 1 + + gio/tests/appinfo-test.desktop | 2 ++ + gio/tests/appinfo.c | 15 +++++++++++++++ + 6 files changed, 42 insertions(+), 1 deletion(-) + +commit a81a0622027a21b71ba11677933f07b646cca151 +Author: Dan Winship +AuthorDate: Wed Apr 4 10:21:24 2012 -0400 +Commit: Dan Winship +CommitDate: Thu Apr 5 12:57:56 2012 -0400 + + gchecksum: fix strict-aliasing warnings in the MD5 code + + https://bugzilla.gnome.org/show_bug.cgi?id=673191 + + glib/gchecksum.c | 39 +++++++++++++++++++++------------------ + 1 file changed, 21 insertions(+), 18 deletions(-) + +commit 0c14f2b8a77f93489255147258f3bf9439c6f06d +Author: Sasi Bhushan +AuthorDate: Thu Apr 5 19:23:08 2012 +0530 +Commit: Sasi Bhushan Boddepalli +CommitDate: Thu Apr 5 19:23:08 2012 +0530 + + Updated Telugu Translation + + po/te.po | 370 + +++++++++++++++++++++++++-------------------------------------- + 1 file changed, 147 insertions(+), 223 deletions(-) + +commit 265526288958bfe576b02e4d3a2a5cf7d4ea60a5 +Author: Dieter Verfaillie +AuthorDate: Tue Apr 3 13:20:01 2012 +0200 +Commit: Johan Dahlin +CommitDate: Thu Apr 5 10:23:46 2012 -0300 + + Fix malformed GTK-Doc comment blocks: remove repeated comment blocks. + + gio/gproxyresolver.h: GProxyResolver already documented in + gio/giotypes.h + gio/gtlsbackend.h: GTlsBackend already documented in gio/gtlsbackend.c + gio/gtlsclientconnection.h: GTlsClientConnection already documented + in gio/gtlsclientconnection.c + gio/gtlsconnection.h: GTlsConnection already documented in + gio/gtlsconnection.c + gio/gunixconnection.h: GTcpConnection already documented in + gio/giotypes.h + glib/gversion.h: GLIB_CHECK_VERSION already documented in + glib/gversion.c + + Found these thanks to the improved gobject-introspection + GTK-Doc comment block/annotation parser. + See https://bugzilla.gnome.org/show_bug.cgi?id=672254 + + https://bugzilla.gnome.org/show_bug.cgi?id=673385 + + gio/gproxyresolver.h | 5 ----- + gio/gtlsbackend.c | 5 +++-- + gio/gtlsbackend.h | 10 ---------- + gio/gtlsclientconnection.h | 8 -------- + gio/gtlsconnection.h | 8 -------- + gio/gunixconnection.h | 7 ------- + glib/gversion.h | 22 ---------------------- + 7 files changed, 3 insertions(+), 62 deletions(-) + +commit ce7f1a07890e081675f1522595e7a1b519bb6f5e +Author: Dieter Verfaillie +AuthorDate: Tue Apr 3 10:56:29 2012 +0200 +Commit: Johan Dahlin +CommitDate: Thu Apr 5 10:23:45 2012 -0300 + + Fix malformed GTK-Doc comment blocks: don't confuse GTK-Doc parsers. + + Found these thanks to the improved gobject-introspection + GTK-Doc comment block/annotation parser. + See https://bugzilla.gnome.org/show_bug.cgi?id=672254 + + https://bugzilla.gnome.org/show_bug.cgi?id=673385 + + gio/gdbusmessage.c | 26 +++++++++++++------------- + glib/giochannel.c | 2 +- + gobject/gparam.h | 2 +- + 3 files changed, 15 insertions(+), 15 deletions(-) + +commit 0183c1f8a158834e5bfb601d4a207a8cff0b2b62 +Author: Dieter Verfaillie +AuthorDate: Tue Apr 3 20:17:00 2012 +0200 +Commit: Johan Dahlin +CommitDate: Thu Apr 5 10:23:42 2012 -0300 + + Fix malformed GTK-Doc comment blocks: invalid parameters and tags. + + Found these thanks to the improved gobject-introspection + GTK-Doc comment block/annotation parser. + See https://bugzilla.gnome.org/show_bug.cgi?id=672254 + + https://bugzilla.gnome.org/show_bug.cgi?id=673385 + + gio/gremoteactiongroup.c | 2 +- + glib/gasyncqueue.c | 4 ++-- + glib/gmem.c | 1 - + gobject/gtype.c | 2 +- + 4 files changed, 4 insertions(+), 5 deletions(-) + +commit fefe5d9a20756d58f4207ae26553d65d54037b20 +Author: Dieter Verfaillie +AuthorDate: Mon Apr 2 17:03:56 2012 +0200 +Commit: Johan Dahlin +CommitDate: Thu Apr 5 10:23:42 2012 -0300 + + Fix malformed GTK-Doc comment blocks: correct struct name. + + Found these thanks to improved gobject-introspection GTK-Doc + comment block/annotation parser from: + https://bugzilla.gnome.org/show_bug.cgi?id=672254 + + https://bugzilla.gnome.org/show_bug.cgi?id=673385 + + gio/giotypes.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a058c1c13e379d4dbe17741231ec9d3f482daf55 +Author: Dieter Verfaillie +AuthorDate: Mon Apr 2 17:02:15 2012 +0200 +Commit: Johan Dahlin +CommitDate: Thu Apr 5 10:23:41 2012 -0300 + + Fix malformed GTK-Doc comment blocks: mutliline annotations are + invalid. + + Found these thanks to improved gobject-introspection GTK-Doc + comment block/annotation parser from: + https://bugzilla.gnome.org/show_bug.cgi?id=672254 + + https://bugzilla.gnome.org/show_bug.cgi?id=673385 + + glib/gvariant.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 60fb0f5ea8e05174971dfca0e6c1dae35f816b9e +Author: Dieter Verfaillie +AuthorDate: Mon Apr 2 17:01:32 2012 +0200 +Commit: Johan Dahlin +CommitDate: Thu Apr 5 10:23:40 2012 -0300 + + Fix malformed GTK-Doc comment blocks: unmark non GTK-Doc comment + block. + + Found these thanks to improved gobject-introspection GTK-Doc + comment block/annotation parser from: + https://bugzilla.gnome.org/show_bug.cgi?id=672254 + + https://bugzilla.gnome.org/show_bug.cgi?id=673385 + + gio/strinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8e740f726faf659df912c0c496eb5de80f1695ad +Author: Dieter Verfaillie +AuthorDate: Mon Apr 2 17:16:35 2012 +0200 +Commit: Johan Dahlin +CommitDate: Thu Apr 5 10:23:39 2012 -0300 + + Fix malformed GTK-Doc comment blocks: add missing colons. + + Found these thanks to improved gobject-introspection GTK-Doc + comment block/annotation parser from: + https://bugzilla.gnome.org/show_bug.cgi?id=672254 + + https://bugzilla.gnome.org/show_bug.cgi?id=673385 + + gio/gdesktopappinfo.c | 2 +- + gio/gfile.c | 2 +- + gio/gfileinfo.c | 2 +- + gio/gmountoperation.c | 2 +- + gio/gproxyaddress.c | 8 ++++---- + glib/gmem.c | 2 +- + glib/gqueue.c | 2 +- + glib/gscanner.c | 2 +- + glib/gtestutils.c | 4 ++-- + glib/gurifuncs.h | 2 +- + 10 files changed, 14 insertions(+), 14 deletions(-) + +commit 6bd47498a043ed52db0ecb2989e9d9157924c82c +Author: Ihar Hrachyshka +AuthorDate: Thu Apr 5 15:25:42 2012 +0300 +Commit: Ihar Hrachyshka +CommitDate: Thu Apr 5 15:25:42 2012 +0300 + + Updated Belarusian translation. + + po/be.po | 201 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 103 insertions(+), 98 deletions(-) + +commit 24fa2ee53c62a22b7e9f5504f7242a5d847ba87b +Author: Chun-wei Fan +AuthorDate: Thu Apr 5 15:46:34 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Apr 5 15:46:34 2012 +0800 + + gobject/tests/signals.c: Remove C99ism + + Declare variables in start of block. + + gobject/tests/signals.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 63673da5eb5ba313f92ee06daf9df8aff6aa0a11 +Author: Chun-wei Fan +AuthorDate: Thu Apr 5 15:45:38 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Apr 5 15:45:38 2012 +0800 + + Update GLib Visual C++ projects + + Some of the bundled PCRE source files are removed as they are + not needed + anymore (please see commit e7c0f10e), so don't include them in + the projects + + build/win32/vs10/glib.vcxproj.filtersin | 9 --------- + build/win32/vs10/glib.vcxprojin | 30 + ------------------------------ + build/win32/vs9/glib.vcprojin | 30 + ------------------------------ + 3 files changed, 69 deletions(-) + +commit 88781d59066a185337dee76969fb49dabc4a6f15 +Author: Dan Winship +AuthorDate: Wed Apr 4 15:22:15 2012 -0400 +Commit: Dan Winship +CommitDate: Wed Apr 4 15:23:31 2012 -0400 + + Fix some gtk-doc stuff + + gio/ginputstream.c | 8 ++++---- + gio/goutputstream.c | 8 ++++---- + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit 69d698799563a0276550c339157a01d10d9e95dc +Author: Matthias Clasen +AuthorDate: Wed Apr 4 14:56:17 2012 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 4 15:02:48 2012 -0400 + + Switch to using a mainloop when waiting for connection close + + GDBus heavily relies on idles for some of its cleanup operations, + and not running a mainloop leads to things not getting cleaned + up properly, which in turn leads to test failures, since the + session bus singleton does not get removed. + + gio/tests/gdbus-tests.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f1d4d3a4a5734e21dd1f0ea7afc352e475df0c27 +Author: Matthias Clasen +AuthorDate: Wed Apr 4 14:39:17 2012 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 4 15:02:48 2012 -0400 + + Improve GApplication tests + + Make GApplication tests manage their dbus connections. + + gio/tests/Makefile.am | 2 +- + gio/tests/gapplication.c | 57 + +++++++++++++++++++++++++++++++++++++++--------- + 2 files changed, 48 insertions(+), 11 deletions(-) + +commit a52c0a06c8789f27b94a74c6a5811f12949f792e +Author: Matthias Clasen +AuthorDate: Wed Apr 4 06:38:36 2012 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 4 15:02:48 2012 -0400 + + Make basic-application test more robust + + This program is only used indirectly from gapplication.c in + tests, but that is no reason to let it segfault when it is + run from the commandline without arguments. + + gio/tests/basic-application.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 9171894a59d217bf3f01a10674d774bb51f68a06 +Author: Matthias Clasen +AuthorDate: Wed Apr 4 06:36:45 2012 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 4 15:02:48 2012 -0400 + + GActionMap: correct critical warnings + + These warnings were copied from GSimpleActionGroup, but the function + names were not updated. Correct that. + + gio/gactionmap.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 4259587fec70248f4d61ce06fc468bb72a0f9991 +Author: Matthias Clasen +AuthorDate: Tue Apr 3 21:52:45 2012 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 4 15:02:48 2012 -0400 + + Add tests for action-related gapplication api + + gio/tests/gapplication.c | 51 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 51 insertions(+) + +commit 8a4744f7fd0bf3780a1299bfb7ba7087f87229a4 +Author: Matthias Clasen +AuthorDate: Tue Apr 3 21:39:06 2012 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 4 15:02:48 2012 -0400 + + Add a test for g_application_quit + + gio/tests/gapplication.c | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +commit 588c2bacf7753dc17c95a8ec56f2f457e205026e +Author: Matthias Clasen +AuthorDate: Tue Apr 3 01:43:45 2012 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 4 15:01:48 2012 -0400 + + Improve keyfile test coverage + + glib/tests/keyfile.c | 61 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 61 insertions(+) + +commit 3eec7eeeaa09a1af7d08f4d172b481747293f9c7 +Author: Matthias Clasen +AuthorDate: Tue Apr 3 01:42:21 2012 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 4 15:01:48 2012 -0400 + + Remove a bit of unused code + + _g_utf8_strwidth is always called with max == -1, so remove the + parameter and update all callers. + + glib/goption.c | 38 +++++++++----------------------------- + 1 file changed, 9 insertions(+), 29 deletions(-) + +commit 84a1b8aac8478428fdc8085400674be52278c6eb +Author: Matthias Clasen +AuthorDate: Tue Apr 3 01:09:39 2012 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 4 15:01:48 2012 -0400 + + Improve test coverage + + Add tests for all the suffixes in g_format_size. + + glib/tests/fileutils.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit 51609ec943f9d51a8c8863badd79d2a9293ae4c7 +Author: Dan Winship +AuthorDate: Wed Apr 4 14:38:18 2012 -0400 +Commit: Dan Winship +CommitDate: Wed Apr 4 14:49:15 2012 -0400 + + tests/gdatetime: fix new_from_unix test + + When creating a struct tm for "1990-01-01T00:00:00" to pass to + mktime(), we have to set tm_isdst to -1; leaving it set to 0 will + result in the wrong time being generated when run in a timezone where + January 1 would normally be tm_isdst==1 (ie, in southern hemisphere + DST-observing countries, like Australia). + + https://bugzilla.gnome.org/show_bug.cgi?id=670254 + + glib/tests/gdatetime.c | 1 + + 1 file changed, 1 insertion(+) + +commit f0a3241eab5ba61ebe4aa6fbe7f1cb0ec696d8c9 +Author: Daniel Mustieles +AuthorDate: Wed Apr 4 17:18:59 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Wed Apr 4 17:18:59 2012 +0200 + + Updated Spanish translation + + po/es.po | 9032 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 4519 insertions(+), 4513 deletions(-) + +commit e133f31896f7cfe1034332244e728f0aa384b844 +Author: Gabor Kelemen +AuthorDate: Wed Apr 4 17:02:04 2012 +0200 +Commit: Gabor Kelemen +CommitDate: Wed Apr 4 17:02:04 2012 +0200 + + Updated Hungarian translation + + po/hu.po | 470 + +++++++++++++++++++++++---------------------------------------- + 1 file changed, 170 insertions(+), 300 deletions(-) + +commit 47adef84da73e71a9ecafc56e8313997fb685394 +Author: Dan Winship +AuthorDate: Wed Apr 4 10:47:04 2012 -0400 +Commit: Dan Winship +CommitDate: Wed Apr 4 10:47:04 2012 -0400 + + Fix warnings caused by an ifdeffed-out test case + + gio/tests/gapplication.c | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +commit 142b0455ff2bd0d376632107de7c943be74c585b +Author: Matej Urbančič +AuthorDate: Wed Apr 4 13:42:44 2012 +0200 +Commit: Matej Urbančič +CommitDate: Wed Apr 4 13:42:44 2012 +0200 + + Updated Slovenian translation + + po/sl.po | 204 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 104 insertions(+), 100 deletions(-) + +commit 9aa19e1d9615924ab25c63918d09d334a0277b8e +Author: Rodrigo Moya +AuthorDate: Wed Apr 4 11:55:40 2012 +0200 +Commit: Rodrigo Moya +CommitDate: Wed Apr 4 11:55:40 2012 +0200 + + Use 'if test' for checking auto* variables' values + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 118c42e7471155d444b9df38d9538f344cb7f89c +Author: Rodrigo Moya +AuthorDate: Wed Apr 4 11:39:03 2012 +0200 +Commit: Rodrigo Moya +CommitDate: Wed Apr 4 11:39:03 2012 +0200 + + Always include G_SOCKET_FAMILY_UNIX value in GSocketFamily + + This is needed because glib-mkenums doesn't handle #ifdef values in + enums, and so it needs to have all values always defined in the enum. + When not available, define the missing values to a negative value. + + configure.ac | 12 +++++++++++- + gio/gioenums.h | 2 -- + gio/gsocket.c | 7 +++++++ + 3 files changed, 18 insertions(+), 3 deletions(-) + +commit 091d652120e068518ed4b7d8a835018f30ed63e8 +Author: Guillaume Desmottes +AuthorDate: Tue Apr 3 16:37:22 2012 +0200 +Commit: Guillaume Desmottes +CommitDate: Tue Apr 3 16:46:13 2012 +0200 + + use GLIB_DEPRECATED_IN_2_32_FOR to deprecate g_value_{g,s}et_schar + + https://bugzilla.gnome.org/show_bug.cgi?id=673439 + + gobject/gvaluetypes.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f2c77ee718b0bfdcf5f1d6eaba151122b8c5eb36 +Author: Will Thompson +AuthorDate: Fri Mar 30 14:44:05 2012 +0100 +Commit: Will Thompson +CommitDate: Mon Apr 2 18:10:35 2012 +0100 + + g_input_stream_read[_finish]: document returning 0 on EOF + + g_input_stream_read() does state that it returns 0 on end of file, but + not in the Returns: line, so it's easy to miss on a quick skim-read. + + g_input_stream_read_async() documents that + g_input_stream_read_finish() + returns 0 on end of file, but g_input_stream_read_finish() itself does + not. + + https://bugzilla.gnome.org/show_bug.cgi?id=673174 + + gio/ginputstream.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 27d95bd81fabd41367cf000566ee2ccf3651652c +Author: Matthias Clasen +AuthorDate: Mon Apr 2 08:53:20 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 2 09:09:11 2012 -0400 + + Rework the libelf configure checks one more time + + It seems that there is quite a bit of variation out there, in + terms of libelf versions and API. Make the checks more thorough, + by not only checking for elf_begin, but also some of the shdr function + that we need. Also, explicitly check for libelf.h. + + This should address bug 673132 and 673253. + + configure.ac | 18 ++++++++++++++---- + 1 file changed, 14 insertions(+), 4 deletions(-) + +commit e51c3b4cfe9f24ccf21ee3bd04186fe5c38d95f8 +Author: Matthias Clasen +AuthorDate: Mon Apr 2 08:00:48 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 2 09:09:11 2012 -0400 + + Use new hashset api in the hash set tests + + glib/tests/hash.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit c2318a18f91ee098efd8239ae6d9ec0bd3826423 +Author: Matthias Clasen +AuthorDate: Mon Apr 2 07:59:55 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 2 09:09:11 2012 -0400 + + Dispose test object + + While not very important, it means one less untested function + in the coverage report. + + tests/refcount/objects2.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit c173c0beb4e0f664faf616bd6475b6c5c1aa50fb +Author: Matthias Clasen +AuthorDate: Mon Apr 2 07:59:23 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 2 09:09:11 2012 -0400 + + Drop g_thread_init from tests + + This is not needed anymore. + + tests/refcount/Makefile.am | 3 +-- + tests/refcount/closures.c | 1 - + tests/refcount/objects.c | 1 - + tests/refcount/objects2.c | 3 +-- + tests/refcount/properties.c | 1 - + tests/refcount/properties2.c | 1 - + tests/refcount/properties3.c | 2 -- + tests/refcount/signals.c | 4 ---- + 8 files changed, 2 insertions(+), 14 deletions(-) + +commit 9ea9471d26084d787858024838d08fc666a7b18b +Author: Matthias Clasen +AuthorDate: Mon Apr 2 07:37:55 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 2 09:09:10 2012 -0400 + + Improve GBusObjectManager test coverage + + gio/tests/gdbus-test-codegen.c | 57 + +++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 56 insertions(+), 1 deletion(-) + +commit 548337b042fa71ab8b2d93452232ed8930ddbc93 +Author: David King +AuthorDate: Mon Apr 2 10:22:56 2012 +0100 +Commit: David King +CommitDate: Mon Apr 2 10:22:56 2012 +0100 + + docs: Fix typo in glib-compile-schemas man page + + docs/reference/gio/glib-compile-schemas.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bebbc69081a952d0ff2e411a086c11b74330b292 +Author: Matthias Clasen +AuthorDate: Sun Apr 1 23:04:59 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 1 23:08:42 2012 -0400 + + Improve boxed test coverage + + This commit add basic tests for all GLib types that are registered + as boxed types. + + gobject/tests/boxed.c | 143 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 143 insertions(+) + +commit e7c0f10ee0baebc4768ab250e1306201fa5d7e20 +Author: Matthias Clasen +AuthorDate: Sun Apr 1 22:04:08 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 1 23:08:42 2012 -0400 + + Drop some unused PCRE sources + + There is no point in compiling these, since we are not calling + any of the functions in them. + + glib/pcre/Makefile.am | 3 - + glib/pcre/pcre_maketables.c | 148 + -------------------------------------------- + glib/pcre/pcre_refcount.c | 89 -------------------------- + glib/pcre/pcre_version.c | 95 ---------------------------- + glib/pcre/pcreposix.h | 146 + ------------------------------------------- + 5 files changed, 481 deletions(-) + +commit 0f469c26319b4b0aeee63be75ba6041b978e01b4 +Author: Daniel Nylander +AuthorDate: Sun Apr 1 13:11:33 2012 +0200 +Commit: Daniel Nylander +CommitDate: Sun Apr 1 13:11:33 2012 +0200 + + Updated Swedish translation + + po/sv.po | 128 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 72 insertions(+), 56 deletions(-) + +commit 829db4cec3fa59e1ec905e226851ae719858c8d4 +Author: Antoine Jacoutot +AuthorDate: Sat Mar 31 22:48:42 2012 +0200 +Commit: Antoine Jacoutot +CommitDate: Sat Mar 31 22:48:42 2012 +0200 + + gthread-posix: fix typo in error message + + glib/gthread-posix.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 14945449580d394b5e1e009f71792ccac51fc41e +Author: Antoine Jacoutot +AuthorDate: Sat Mar 31 20:20:19 2012 +0200 +Commit: Antoine Jacoutot +CommitDate: Sat Mar 31 20:22:51 2012 +0200 + + gresource: libelf, try pkg-config first then fall-back to AC_CHECK_LIB + + On some systems gelf.h may not be stored under the top level include + directory in which case we need to add the correct include paths in + cflags by using pkg-config(1). + + configure.ac | 7 ++++--- + gio/Makefile.am | 3 ++- + 2 files changed, 6 insertions(+), 4 deletions(-) + +commit 4143842eb47c1f38b2b4742b0928e4049e38afb9 +Author: Robert Ancell +AuthorDate: Sat Mar 24 23:58:45 2012 +1100 +Commit: Robert Ancell +CommitDate: Sat Mar 31 20:34:28 2012 +1100 + + Add missing allow-none annotations for function parameters. + + Found using: + find . -name '*.c' | xargs grep 'or %NULL' | grep ' \* @' | grep -v + '@error' | grep -v allow-none + + gio/gactiongroup.c | 8 ++++---- + gio/gapplication.c | 4 ++-- + gio/gapplicationcommandline.c | 2 +- + gio/gasyncinitable.c | 2 +- + gio/gcancellable.c | 8 ++++---- + gio/gdbusaddress.c | 6 +++--- + gio/gdbusauthobserver.c | 4 ++-- + gio/gdbusconnection.c | 40 + ++++++++++++++++++++-------------------- + gio/gdbuserror.c | 4 ++-- + gio/gdbusinterface.c | 2 +- + gio/gdbusintrospection.c | 2 +- + gio/gdbusmessage.c | 6 +++--- + gio/gdbusmethodinvocation.c | 4 ++-- + gio/gdbusnameowning.c | 14 +++++++------- + gio/gdbusnamewatching.c | 12 ++++++------ + gio/gdbusobjectmanagerclient.c | 16 ++++++++-------- + gio/gdbusproxy.c | 24 ++++++++++++------------ + gio/gdbusserver.c | 2 +- + gio/gfile.c | 24 ++++++++++++------------ + gio/ginitable.c | 2 +- + gio/gioscheduler.c | 6 +++--- + gio/gmemoryoutputstream.c | 6 +++--- + gio/gnetworkmonitor.c | 4 ++-- + gio/gpermission.c | 8 ++++---- + gio/gsettingsbackend.c | 2 +- + gio/gsimpleasyncresult.c | 2 +- + gio/gsocket.c | 4 ++-- + gio/gsocketclient.c | 2 +- + gio/gtlsconnection.c | 4 ++-- + gio/gvolume.c | 2 +- + glib/garray.c | 6 +++--- + glib/gbookmarkfile.c | 36 ++++++++++++++++++------------------ + glib/gconvert.c | 2 +- + glib/gdataset.c | 8 ++++---- + glib/gdatetime.c | 6 +++--- + glib/gerror.c | 8 ++++---- + glib/ggettext.c | 8 ++++---- + glib/ghash.c | 10 +++++----- + glib/giochannel.c | 6 +++--- + glib/gkeyfile.c | 8 ++++---- + glib/gmain.c | 28 ++++++++++++++-------------- + glib/gmem.c | 4 ++-- + glib/gmessages.c | 2 +- + glib/goption.c | 28 ++++++++++++++-------------- + glib/gpattern.c | 2 +- + glib/gregex.c | 2 +- + glib/gsequence.c | 2 +- + glib/gstdio.c | 2 +- + glib/gstrfuncs.c | 6 +++--- + glib/gtestutils.c | 4 ++-- + glib/gunidecomp.c | 2 +- + glib/gutf8.c | 26 +++++++++++++------------- + glib/gvariant-parser.c | 8 ++++---- + glib/gvariant-serialiser.c | 2 +- + glib/gvarianttype.c | 2 +- + glib/gvarianttypeinfo.c | 8 ++++---- + glib/gwin32.c | 10 +++++----- + gmodule/gmodule.c | 2 +- + 58 files changed, 232 insertions(+), 232 deletions(-) + +commit 4cf5d2531608b4433fb3348d679f099bd3d29716 +Author: Matthias Clasen +AuthorDate: Fri Mar 30 17:34:37 2012 -0400 +Commit: Matthias Clasen +CommitDate: Fri Mar 30 17:34:37 2012 -0400 + + Fix a link + + As pointed out in bug 673139, the link to the mailing list + information page was outdated. + + README.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5f0ff457ce5e8fc9aa5ca121cf429888bcf4e51f +Author: ManojKumar Giri +AuthorDate: Fri Mar 30 18:08:23 2012 +0530 +Commit: ManojKumar Giri +CommitDate: Fri Mar 30 18:10:03 2012 +0530 + + Updated Odia Translation + + po/or.po | 247 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 122 insertions(+), 125 deletions(-) + +commit e3cc48f28998782da46292b53b5b540e82094d2a +Author: Christian Persch +AuthorDate: Thu Mar 22 14:01:40 2012 +0100 +Commit: Christian Persch +CommitDate: Thu Mar 29 17:43:43 2012 +0200 + + resources: compiler: Respect absolute paths + + When a already has an absolute path, use it directly instead + of trying to + locate it in the --sourcedir directories. + + https://bugzilla.gnome.org/show_bug.cgi?id=672541 + + gio/glib-compile-resources.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 8f8fc836709cff58bd666b87937542088cfc19db +Author: Kalev Lember +AuthorDate: Wed Mar 28 12:42:49 2012 +0300 +Commit: Kalev Lember +CommitDate: Wed Mar 28 12:42:49 2012 +0300 + + configure: Fix alignment tests when cross compiling + + When inserting custom code to AC_CHECK_ALIGNOF, make sure to not + replace + the default includes, but instead append to them. + + This fixes ALIGNOF_GUINT32 and ALIGNOF_GUINT64 that were both 0 + when cross + compiling. The third 'unsigned long' test wasn't affected because the + AC_CHECK_ALIGNOF call didn't specify the optional 2nd parameter. + + configure.ac | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 92b84e88ab9bdd6db869574020843101ddb3a0de +Author: Chun-wei Fan +AuthorDate: Wed Mar 28 15:12:04 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Mar 28 15:12:04 2012 +0800 + + Fix gspawn-win32-helper Visual C++ projects + + The name of the executable for the Release|Win32 and Release|x64 + configs + were mixed up. Fix that. DOH! for not noting this earlier. + + build/win32/vs10/gspawn-win32-helper.vcxproj | 2 +- + build/win32/vs9/gspawn-win32-helper.vcproj | 7 ++----- + 2 files changed, 3 insertions(+), 6 deletions(-) + +commit 0463fa1cb0ab991bc9d8a1986a5a8511e39825b5 +Author: Chun-wei Fan +AuthorDate: Wed Mar 28 14:57:12 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Mar 28 14:57:12 2012 +0800 + + Fix VS property sheets + + We need to accomodate for gspawn-win64-helper-console.exe for the + "install" + phase too. + + build/win32/vs10/glib.props | 2 +- + build/win32/vs9/glib.vsprops | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 50a8fa5efda293898ea378f82ba29ca54124c5fb +Author: Daniel Mustieles +AuthorDate: Tue Mar 27 21:24:37 2012 +0200 +Commit: Daniel Mustieles +CommitDate: Tue Mar 27 21:24:37 2012 +0200 + + Updated Spanish translation + + po/es.po | 9040 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 4514 insertions(+), 4526 deletions(-) + +commit cbb95038cf23ce8061961984bd52ad565b219a6e +Author: Dan Winship +AuthorDate: Tue Mar 27 12:45:27 2012 -0400 +Commit: Dan Winship +CommitDate: Tue Mar 27 12:45:27 2012 -0400 + + GFileMonitor: fix docs bug + + gio/gfilemonitor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5a68f59e5b32d826902279f2b54fddcae6ee7b4b +Author: Sandeep Sheshrao Shedmake +AuthorDate: Tue Mar 27 15:04:14 2012 +0530 +Commit: Sandeep Sheshrao Shedmake +CommitDate: Tue Mar 27 15:04:14 2012 +0530 + + Updated Marathi Translations + + po/mr.po | 422 + +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 261 insertions(+), 161 deletions(-) + +commit 9b0734a09c7ed357fbb21db52ce8fbc42b8f014c +Author: Bastien Nocera +AuthorDate: Tue Mar 27 11:01:00 2012 +0200 +Commit: Bastien Nocera +CommitDate: Tue Mar 27 11:01:00 2012 +0200 + + all: s/availible/available/ + + gio/gresource.c | 4 ++-- + glib/gmain.c | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit ec55b19da59b939c0de67ce172b3176b692399fa +Author: Rajesh Ranjan +AuthorDate: Tue Mar 27 12:22:39 2012 +0530 +Commit: Rajesh Ranjan +CommitDate: Tue Mar 27 12:22:39 2012 +0530 + + hindi translation by Chandan Kumar + + po/hi.po | 5813 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3095 insertions(+), 2718 deletions(-) + +commit 569357dcc3fe85f78d204ba94e477bac97350a4f +Author: Sandeep Sheshrao Shedmake +AuthorDate: Mon Mar 26 19:48:20 2012 +0530 +Commit: Sandeep Sheshrao Shedmake +CommitDate: Mon Mar 26 19:48:20 2012 +0530 + + Updated Marathi Translations + + po/mr.po | 5925 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3160 insertions(+), 2765 deletions(-) + +commit bf20906ad4952611f992c3fa79bd074838a9279e +Author: ManojKumar Giri +AuthorDate: Mon Mar 26 18:42:41 2012 +0530 +Commit: ManojKumar Giri +CommitDate: Mon Mar 26 18:42:41 2012 +0530 + + Updated Odia Translation + + po/or.po | 5969 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3169 insertions(+), 2800 deletions(-) + +commit 72c11eda584849bb55e85d06fea87476c423d258 +Author: Marek Černocký +AuthorDate: Mon Mar 26 14:49:18 2012 +0200 +Commit: Marek Černocký +CommitDate: Mon Mar 26 14:49:18 2012 +0200 + + Updated Czech translation + + po/cs.po | 6143 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3254 insertions(+), 2889 deletions(-) + +commit 56c2c297cd7fc2af00a40bcb29a000b676f9949a +Author: Rudolfs Mazurs +AuthorDate: Sun Mar 25 15:05:26 2012 +0300 +Commit: Peteris Krisjanis +CommitDate: Sun Mar 25 15:05:26 2012 +0300 + + Updated Latvian translation. + + po/lv.po | 6240 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3325 insertions(+), 2915 deletions(-) + +commit c80eeae316fb3a351947502788eeb29c12f0a88f +Author: Luca Ferretti +AuthorDate: Sun Mar 25 13:14:47 2012 +0200 +Commit: Milo Casagrande +CommitDate: Sun Mar 25 13:14:47 2012 +0200 + + [l10n] Updated Italian translation + + po/it.po | 336 + +++++++++++++++++++++++++++------------------------------------ + 1 file changed, 141 insertions(+), 195 deletions(-) + +commit f8ddba0b8a2969f9d539019bdb961b2273690c72 +Author: Shankar Prasad +AuthorDate: Sun Mar 25 13:26:17 2012 +0530 +Commit: Shankar Prasad +CommitDate: Sun Mar 25 13:26:17 2012 +0530 + + Updated Kannada Translation + + po/kn.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 6bd8fecfa178a08b4adfbb4c4cf981e3721df66d +Author: Shankar Prasad +AuthorDate: Sun Mar 25 13:24:31 2012 +0530 +Commit: Shankar Prasad +CommitDate: Sun Mar 25 13:24:31 2012 +0530 + + Updated Kannada Translation + + po/kn.po | 92 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 46 insertions(+), 46 deletions(-) + +commit 41cccb467f354cf843877fe73db539a1e332a41d +Author: Shankar Prasad +AuthorDate: Sun Mar 25 13:03:57 2012 +0530 +Commit: Shankar Prasad +CommitDate: Sun Mar 25 13:03:57 2012 +0530 + + Updated Kannada Translation + + po/kn.po | 18 +++++++----------- + 1 file changed, 7 insertions(+), 11 deletions(-) + +commit 22885b1de447c1a8398b03978e60a0042eabc016 +Author: Shankar Prasad +AuthorDate: Sun Mar 25 12:42:30 2012 +0530 +Commit: Shankar Prasad +CommitDate: Sun Mar 25 12:42:50 2012 +0530 + + Updated Kannada Translation + + po/kn.po | 78 + +++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 40 insertions(+), 38 deletions(-) + +commit e927df7b7ab089f5e7de452a509130c06e13e4f9 +Author: Matthias Clasen +AuthorDate: Sat Mar 24 23:00:15 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Mar 24 23:00:15 2012 -0400 + + Add a forgotten include guard + + gbytes.h was missing the single-include guard. + + glib/gbytes.h | 4 ++++ + 1 file changed, 4 insertions(+) + +commit de64aa8bd70fe42c613a948ce670a27b8d5c12cc +Author: Shankar Prasad +AuthorDate: Sun Mar 25 00:33:10 2012 +0530 +Commit: Shankar Prasad +CommitDate: Sun Mar 25 00:33:10 2012 +0530 + + Updated Kannada Translation + + po/kn.po | 5769 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3071 insertions(+), 2698 deletions(-) + +commit 257e6c4e4e291955b99bf43440eef55fad977520 +Author: Daniel Nylander +AuthorDate: Sat Mar 24 16:58:42 2012 +0100 +Commit: Daniel Nylander +CommitDate: Sat Mar 24 16:58:42 2012 +0100 + + Updated Swedish translation + + po/sv.po | 6145 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 3223 insertions(+), 2922 deletions(-) + +commit d793287b3a5ede547cbd1b72de46c499f8ab8c35 +Author: Matthias Clasen +AuthorDate: Sat Mar 24 11:31:01 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Mar 24 11:31:01 2012 -0400 + + Bump version + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 816554c62bf227498cb539924e6ee2050030b4b9 +Author: Matthias Clasen +AuthorDate: Sat Mar 24 11:28:35 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Mar 24 11:28:35 2012 -0400 + + 2.32.0 + + NEWS | 12 ++++++++++++ + configure.ac | 4 ++-- + 2 files changed, 14 insertions(+), 2 deletions(-) + +commit 97cc0d0179e20c9a83d049b9a999f7fab40eacfb +Author: Matthias Clasen +AuthorDate: Sat Mar 24 10:33:38 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Mar 24 10:33:38 2012 -0400 + + Release notes tweaks + + Update download locations, mailing list instructions, and shuffle + the version-specific notes to be at the end. + + README.in | 96 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 47 insertions(+), 49 deletions(-) + +commit d2b7ee62f9d4df0aa5925ea123da7db6753d03ac +Author: Raphael Kubo da Costa +AuthorDate: Mon Mar 19 14:20:08 2012 -0300 +Commit: Colin Walters +CommitDate: Thu Mar 22 11:02:07 2012 -0400 + + Make the `include' glib test case build on FreeBSD. + + Defining _POSIX_C_SOURCE to 0 will make time.h not create the + clockid_t + typedef used by some functions in pthread.h. + + The right approach here is to set it to 199309L, which creates the + typedef on FreeBSD and doesn't set __USE_UNIX98 or __USE_XOPEN2K on + glibc, which is what the test is actually testing. + + https://bugzilla.gnome.org/show_bug.cgi?id=672406 + + glib/tests/include.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fd8b01ead613788ad136cc61e1b744dfd811e0ec +Author: Krishnababu Krothapalli +AuthorDate: Thu Mar 22 19:56:06 2012 +0530 +Commit: Krishnababu Krothapalli +CommitDate: Thu Mar 22 19:56:06 2012 +0530 + + Updated Telugu Translations + + po/te.po | 549 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 317 insertions(+), 232 deletions(-) + +commit b08b3012235b089cc3c8d015c47f703da01a4d81 +Author: Chun-wei Fan +AuthorDate: Tue Mar 20 13:19:11 2012 +0800 +Commit: Matthias Clasen +CommitDate: Tue Mar 20 22:29:50 2012 -0400 + + glib/gqsort.c: Fix C99ism/GCCism + + -There were a number of variables that were declared in the middle of + the block, so move these declarations to the start of the block + -There was a use of mempcpy, but it is a GCC extension, so use + memcpy since + we didn't care about the return value of the call to mempcpy. + + https://bugzilla.gnome.org/show_bug.cgi?id=672095 + + glib/gqsort.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit f23e7c3ef988a251c42a8a8f7e60566e0bab76fb +Author: Alexander Larsson +AuthorDate: Tue Mar 20 10:20:18 2012 +0100 +Commit: Alexander Larsson +CommitDate: Tue Mar 20 10:20:18 2012 +0100 + + Fix the tests on win32 + + There was some unix-specific pathname handling in the test utils + which broke the css tests on win32. + + glib/gtestutils.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit d0635dac52b4a4dae535dd22940ed2adb6a89074 +Author: Alexander Larsson +AuthorDate: Tue Mar 20 10:19:42 2012 +0100 +Commit: Alexander Larsson +CommitDate: Tue Mar 20 10:19:42 2012 +0100 + + Use g_unsetenv, not unsetenv + + This fixed the win32 build + + glib/tests/logging.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit aed6d01d1454293ddaba84a5bd1a666385f44f62 +Author: Alexander Larsson +AuthorDate: Tue Mar 20 10:18:32 2012 +0100 +Commit: Alexander Larsson +CommitDate: Tue Mar 20 10:18:32 2012 +0100 + + Only build actions test on unix + + It depends on gdbus-sessionbus.c which only builds on unix. + + gio/tests/Makefile.am | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 322c6e93444e74ae99b73f1ae7e3b55563470431 +Author: Marco Trevisan (Treviño) +AuthorDate: Mon Mar 19 20:13:24 2012 +0100 +Commit: David Zeuthen +CommitDate: Mon Mar 19 17:12:00 2012 -0400 + + GDBusConnection: Avoid dereferencing vtable for unregistered objects + + https://bugzilla.gnome.org/show_bug.cgi?id=671988 + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 617c0cb6a0776c3c090c54d10eda21768d76890c +Author: Matthias Clasen +AuthorDate: Mon Mar 19 16:59:54 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Mar 19 16:59:54 2012 -0400 + + bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2826ece6fc91944a3469ba8f1b7b81143b11ccaa +Author: Matthias Clasen +AuthorDate: Mon Mar 19 16:58:48 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Mar 19 16:58:48 2012 -0400 + + Fix distcheck + + automake decided to complain about some more leftovers. + + glib/Makefile.am | 7 ++++++- + gobject/Makefile.am | 2 ++ + 2 files changed, 8 insertions(+), 1 deletion(-) + +commit 166595c4d58ce1b0e7d297b4bbb599e7ddd5cf8d +Author: Matthias Clasen +AuthorDate: Mon Mar 19 14:27:20 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Mar 19 14:27:20 2012 -0400 + + 2.31.22 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9f92d2110cf8b4225725e161f29e8f7add590c64 +Author: Matthias Clasen +AuthorDate: Mon Mar 19 13:43:31 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Mar 19 13:43:31 2012 -0400 + + Updates + + NEWS | 41 +++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 41 insertions(+) + +commit 6dfb50adf7eb004b9fe79f9314e27856d80a4de8 +Author: Matthias Clasen +AuthorDate: Mon Mar 19 13:28:14 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Mar 19 13:28:14 2012 -0400 + + Don't return from a void function + + glib/gqsort.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cb45176110a85c3e8228499edb2ce36da85f3670 +Author: Matthias Clasen +AuthorDate: Mon Mar 19 13:26:19 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Mar 19 13:26:19 2012 -0400 + + Fix a C99ism + + glib/gqsort.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit bd3063c742f654a2233620ad2e666e5f0bc9e9bf +Author: Matthias Clasen +AuthorDate: Mon Mar 19 13:22:04 2012 -0400 +Commit: Matthias Clasen +CommitDate: Mon Mar 19 13:22:04 2012 -0400 + + Silence a compiler warning + + glib/gqsort.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2afbc425eb24f21c598636e5037782cb8a1870ea +Author: Ryan Lortie +AuthorDate: Fri Mar 16 13:32:38 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Mar 19 12:41:23 2012 -0400 + + GDBus: set no-reply flag on calls with no callback + + If g_dbus_connection_call() or g_dbus_proxy_call() are given a NULL + callback then set the no-reply flag on the outgoing D-Bus message. + + https://bugzilla.gnome.org/show_bug.cgi?id=672239 + + gio/gdbusconnection.c | 71 + +++++++++++++++++++++++++++++++++++---------------- + gio/gdbusproxy.c | 46 +++++++++++++++++++++++---------- + 2 files changed, 82 insertions(+), 35 deletions(-) + +commit c3125ee36d47e71d27906b88eed68b0b9c9b9e0c +Author: Ryan Lortie +AuthorDate: Fri Mar 16 13:15:46 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Mar 19 12:41:18 2012 -0400 + + GDBusProxy: report an error instead of leaking it + + GDBusProxy sets an error on a GSimpleAsyncResult and then returns + without dispatching the result for completion (and leaks the result in + the process). Fix that. + + Also add a testcase. Unfortunately, adding the testcase uncovered + bug #672248. We can work around that by reordering the tests. + + https://bugzilla.gnome.org/show_bug.cgi?id=672249 + + gio/gdbusproxy.c | 2 ++ + gio/tests/gdbus-proxy.c | 44 +++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 45 insertions(+), 1 deletion(-) + +commit 190891042d9830fb095bf50220555384cae7f823 +Author: Chun-wei Fan +AuthorDate: Mon Mar 19 16:02:37 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Mar 19 16:02:37 2012 +0800 + + Update config.h.win32(.in) + + Make it more like the one that is generated by autotools. + + It is true that Visual C++ has sig_atomic_t, at least for Visual + C++ 2008 + and later, but this is currently only used for UNIX builds of GLib, + as a + point of note here. + + config.h.win32.in | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit bac0294c73b3ff9c33885d0af6f3e20af7062739 +Author: Chun-wei Fan +AuthorDate: Mon Mar 19 15:55:20 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Mar 19 15:55:20 2012 +0800 + + Update glibconfig.h.win32(.in) + + Added the definitions below, as these #defines are needed for gqsort.c + + #define ALIGNOF_GUINT32 4 + #define ALIGNOF_GUINT64 8 + #define ALIGNOF_UNSIGNED_LONG 4 + + glib/glibconfig.h.win32.in | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 06384094689efbdc00cc39dcb9eb2929dec92933 +Author: Bruno Brouard +AuthorDate: Sun Mar 18 10:34:15 2012 +0100 +Commit: Bruno Brouard +CommitDate: Sun Mar 18 10:34:15 2012 +0100 + + Updated French translation + + po/fr.po | 1400 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 794 insertions(+), 606 deletions(-) + +commit 8c2434f01a60865e22c579c4092c3588827e883b +Author: Matthias Clasen +AuthorDate: Sat Mar 17 23:43:52 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Mar 17 23:43:52 2012 -0400 + + Make inf testcase more forgiving + + printf may produce "infinity" instead of "inf". + + https://bugzilla.gnome.org/show_bug.cgi?id=668973 + + glib/tests/gvariant.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 57878d6042366070e80a109bf113ac03abb86cfd +Author: Sebastian Dröge +AuthorDate: Sat Mar 17 23:28:48 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Mar 17 23:28:48 2012 -0400 + + Use __builtin_bswap* for GUINT*_SWAP_LE_BE if building with GCC + + https://bugzilla.gnome.org/show_bug.cgi?id=531901 + + glib/gtypes.h | 38 ++++++++++++++++++++++++++++++-------- + glib/tests/utils.c | 24 ++++++++++++++++++++++++ + 2 files changed, 54 insertions(+), 8 deletions(-) + +commit e2b47ae9e0ff4402253c5ca854b3a5229513a12e +Author: Dieter Verfaillie +AuthorDate: Sat Mar 17 23:10:01 2012 -0400 +Commit: Matthias Clasen +CommitDate: Sat Mar 17 23:10:01 2012 -0400 + + Fix out of tree build for MinGW/MSYS + + When building with MinGW/MSYS with srcdir != builddir the build fails: + - to locate the generated .def files + - creating libglib-gdb.py + - creating libgobject-gdb.py + + Solved this by explicitly instructing these files to be generated + in $(builddir)/... + + https://bugzilla.gnome.org/show_bug.cgi?id=653167 + + gio/Makefile.am | 10 +++++----- + glib/Makefile.am | 17 ++++++----------- + gmodule/Makefile.am | 8 ++++---- + gobject/Makefile.am | 13 ++++++------- + 4 files changed, 21 insertions(+), 27 deletions(-) + +commit 65d758859c8155362f8ffaebf5614a10d025f5a6 +Author: Duarte Loreto +AuthorDate: Sun Mar 18 00:45:43 2012 +0000 +Commit: Duarte Loreto +CommitDate: Sun Mar 18 00:45:43 2012 +0000 + + Updated Portuguese translation + + po/pt.po | 6128 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3230 insertions(+), 2898 deletions(-) + +commit 7f856e3a09386c7d87ee0562a2ab85b463cac20f +Author: Aurimas Černius +AuthorDate: Sat Mar 17 18:49:25 2012 +0200 +Commit: Aurimas Černius +CommitDate: Sat Mar 17 18:49:25 2012 +0200 + + Updated Lithuanian translation + + po/lt.po | 170 + +++++++++++++++++++++++++-------------------------------------- + 1 file changed, 66 insertions(+), 104 deletions(-) + +commit 1b08ad61cdd19899f51ec44242913b18576861e1 +Author: Ryan Lortie +AuthorDate: Sat Mar 17 12:39:23 2012 -0400 +Commit: Ryan Lortie +CommitDate: Sat Mar 17 12:41:36 2012 -0400 + + man pages: document the order of schema overrides + + GSettings overrides are processed in such a way that + alphabetically-later files have precedence over earlier files (eg: 20_ + will beat 10_). Document that fact. + + docs/reference/gio/glib-compile-schemas.xml | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit e8122f6f98b853bccfb6aebcfb1714eb6f82971e +Author: Yuri Kozlov +AuthorDate: Sat Mar 17 12:57:44 2012 +0400 +Commit: Yuri Myasoedov +CommitDate: Sat Mar 17 12:58:12 2012 +0400 + + Updated Russian translation + + po/ru.po | 6215 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3306 insertions(+), 2909 deletions(-) + +commit 6833385c5a7a35e22bb549ad0e7f390031952945 +Author: Colin Walters +AuthorDate: Tue Mar 13 14:49:04 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Mar 16 16:15:16 2012 -0400 + + gmain: Use sig_atomic_t for list of pending Unix signals + + Pointed out by: Simon McVittie + + https://bugzilla.gnome.org/show_bug.cgi?id=671997 + + configure.ac | 12 ++++++++++++ + glib/gmain.c | 9 +++++++-- + 2 files changed, 19 insertions(+), 2 deletions(-) + +commit f3fca56b7ef94e70e78597afca69b157e07cd339 +Author: Tomas Bzatek +AuthorDate: Fri Mar 16 18:54:09 2012 +0100 +Commit: Tomas Bzatek +CommitDate: Fri Mar 16 18:54:09 2012 +0100 + + gio: Only show mounts in /run/media/$USER + + And reflect the recent changes + sync with gvfs+udisks2 rules. + + https://bugzilla.gnome.org/show_bug.cgi?id=669797 + + gio/gunixmounts.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +commit b0739f22231b7555c9fcfd5b9fcb5f93b5a46149 +Author: David Benjamin +AuthorDate: Thu Mar 15 19:16:02 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Mar 16 11:49:30 2012 -0400 + + Continue searching in PATH on ENODEV and ETIMEDOUT + + Synchronize the error-handling logic from glibc. Users with networked + filesystems in their PATH may hit ETIMEDOUT. + + https://bugzilla.gnome.org/show_bug.cgi?id=672201 + + glib/gspawn.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit cf912785b6aa4cd7acd1cf2b041b25fae76df5f7 +Author: Colin Walters +AuthorDate: Thu Mar 15 17:59:01 2012 -0400 +Commit: Colin Walters +CommitDate: Fri Mar 16 11:49:30 2012 -0400 + + gtype: Note idempotency of g_type_init() + + gobject/gtype.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 8ae5bd399ed94fe74172f1331fbe716b4f68249c +Author: Alexander Larsson +AuthorDate: Fri Mar 16 12:51:33 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 16 16:04:36 2012 +0100 + + Remove now unused qsort_r checks + + https://bugzilla.gnome.org/show_bug.cgi?id=672095 + + configure.ac | 45 --------------------------------------------- + 1 file changed, 45 deletions(-) + +commit a43dd7435af92d70fa0ef5a2c48e77156b0ad304 +Author: Alexander Larsson +AuthorDate: Wed Mar 14 21:17:47 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 16 16:04:36 2012 +0100 + + Make g_array_sort* methods use a stable sort + + Also, remove previous comments about sort stability in g_array_sort + docs, + as the method that was explained does not work. Adds a new comment + about this. + + https://bugzilla.gnome.org/show_bug.cgi?id=672095 + + glib/garray.c | 42 +++++++++++++++++++++++------------------- + 1 file changed, 23 insertions(+), 19 deletions(-) + +commit 839957f275875b6f8fd033d67379bce0fde1c58f +Author: Alexander Larsson +AuthorDate: Wed Mar 14 21:17:23 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 16 16:04:36 2012 +0100 + + Make g_qsort_with_data stable, based on glibc msort + + We need a stable sort, and we might as well always use it rather + than have multiple sort versions. This picks up the glibc + merge sort implementation which it uses by default for qsort, + except we don't fall back to non-stable quicksort in some cases + like glibc + + https://bugzilla.gnome.org/show_bug.cgi?id=672095 + + configure.ac | 31 ++++ + glib/gqsort.c | 494 + +++++++++++++++++++++++++++--------------------------- + glib/tests/sort.c | 39 +++++ + 3 files changed, 320 insertions(+), 244 deletions(-) + +commit 8da947892022ba966893e5ceb1c5235c5da4665f +Author: Gabor Kelemen +AuthorDate: Fri Mar 16 11:12:56 2012 +0100 +Commit: Gabor Kelemen +CommitDate: Fri Mar 16 11:12:56 2012 +0100 + + Updated Hungarian translation + + po/hu.po | 6275 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3347 insertions(+), 2928 deletions(-) + +commit 5a108c918355b7344daad1acdcd87bc3765aeaca +Author: Carles Ferrando +AuthorDate: Thu Mar 15 23:33:50 2012 +0100 +Commit: Gil Forcada +CommitDate: Thu Mar 15 23:33:50 2012 +0100 + + [l10n]Updated Catalan (Valencian) translation + + po/ca@valencia.po | 6314 + ++++++++++++++++++++++++++++------------------------- + 1 file changed, 3313 insertions(+), 3001 deletions(-) + +commit 93b9d65d12e74dc23162a23b53f8d166e5e17fd4 +Author: Gil Forcada +AuthorDate: Thu Mar 15 23:33:43 2012 +0100 +Commit: Gil Forcada +CommitDate: Thu Mar 15 23:33:43 2012 +0100 + + [l10n]Updated Catalan translation + + po/ca.po | 6364 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3352 insertions(+), 3012 deletions(-) + +commit f025c9c4f4803dd09dba12ca8f35692a0ea8050a +Author: David Zeuthen +AuthorDate: Thu Mar 15 14:04:39 2012 -0400 +Commit: David Zeuthen +CommitDate: Thu Mar 15 14:04:39 2012 -0400 + + GDBusConnection: Don't store GCancellable in qdata + + Now that we're using g_simple_async_result_set_check_cancellable() we + no longer need this terrible hack of carrying the GCancellable on the + GSimpleAsyncResult using qdata. See bug 672013 for more details. + + https://bugzilla.gnome.org/show_bug.cgi?id=672013 + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 16 +--------------- + 1 file changed, 1 insertion(+), 15 deletions(-) + +commit e3c7fdd7a47264c584f3f16e37d903a7d1f36f76 +Author: Ryan Lortie +AuthorDate: Tue Mar 13 16:41:57 2012 -0400 +Commit: David Zeuthen +CommitDate: Thu Mar 15 14:01:35 2012 -0400 + + GDBus: make use of reliable async cancellation + + Call g_simple_async_result_set_check_cancellable() after all + GSimpleAsyncResult creation in order to take advantage of the new + reliable cancellation feature. + + The guarantee of reliable cancellation fixes a bug in dbusmenu (which + was already assuming that cancellation was reliable). See this bug: + https://bugs.launchpad.net/ubuntu/+source/libdbusmenu/+bug/953562 + + https://bugzilla.gnome.org/show_bug.cgi?id=672013 + + Signed-off-by: David Zeuthen + + gio/gdbusaddress.c | 1 + + gio/gdbusconnection.c | 5 +++++ + gio/gdbusprivate.c | 1 + + gio/gdbusproxy.c | 3 +++ + 4 files changed, 10 insertions(+) + +commit 1c42b6b09213b3c5275a71bbcd7def9a19767b59 +Author: Chun-wei Fan +AuthorDate: Thu Mar 15 16:39:52 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Mar 15 16:39:52 2012 +0800 + + Fix "install" paths in VS property sheets + + ...and cleanup the VS2010 property sheets a little bit + + build/win32/vs10/glib.props | 10 +++++----- + build/win32/vs9/glib.vsprops | 2 +- + 2 files changed, 6 insertions(+), 6 deletions(-) + +commit 53b02b023da1ef7c253493b4aee0830e77a09a87 +Author: Mario Blättermann +AuthorDate: Wed Mar 14 22:27:33 2012 +0100 +Commit: Mario Blättermann +CommitDate: Wed Mar 14 22:27:33 2012 +0100 + + [l10n] Updated German translation + + po/de.po | 1506 + ++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 919 insertions(+), 587 deletions(-) + +commit 4804094472e90a537b534c32e3c225b624c4500e +Author: Ryan Lortie +AuthorDate: Tue Mar 13 16:09:01 2012 -0400 +Commit: Ryan Lortie +CommitDate: Wed Mar 14 08:36:11 2012 -0400 + + GSimpleAsyncResult: support reliable cancellation + + Add a function g_simple_async_result_set_check_cancellable() + to provide + a GCancellable that is checked for being cancelled during the call to + g_simple_async_result_propagate_error(). + + This gives asynchronous operation implementations an easy way to + provide reliable cancellation of those operations -- even in the case + that a positive result has occured and is pending dispatch at the time + the operation is cancelled. + + https://bugzilla.gnome.org/show_bug.cgi?id=672013 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 1 + + gio/gsimpleasyncresult.c | 58 + +++++++++++++++++++++++++++++++++++++ + gio/gsimpleasyncresult.h | 2 ++ + 4 files changed, 62 insertions(+) + +commit 53b1afba0eb94f7f836b408d81da7b58c374dc3f +Author: Mike Gorse +AuthorDate: Tue Mar 13 16:02:30 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Mar 14 06:01:36 2012 -0400 + + Invalidate single_va_closure when adding an emission hook + + If the optimization is used for only having one closure handling a + signal emission, then hooks will not be run, so it should be disabled + when an emission hook is added. + + https://bugzilla.gnome.org/show_bug.cgi?id=671918 + + gobject/gsignal.c | 1 + + 1 file changed, 1 insertion(+) + +commit fbbdf98668641a6e6494dacb5f5f13703145e6f8 +Author: Ryan Lortie +AuthorDate: Tue Mar 13 20:10:39 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue Mar 13 20:15:21 2012 -0400 + + g_log: mask log level before checking prefix flags + + We check if the log level is in the "prefixed" list by checking it + against the g_log_msg_prefix bitfield. + + Unfortunately we were failing to mask by G_LOG_LEVEL_MASK first, so if + the FATAL bit was set (for example) then it would never match. + This was + the case for g_error(). + + https://bugzilla.gnome.org/show_bug.cgi?id=672026 + + glib/gmessages.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 545736c0fbc4fdc861a726b293a5b3c1cd611a3c +Author: Ryan Lortie +AuthorDate: Tue Mar 13 20:08:27 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue Mar 13 20:15:21 2012 -0400 + + glib-init: restore default for G_MESSAGES_PREFIXED + + In the glib-init shuffle this ended up being set to no messages + prefixed + by default. Fix that so that we have prefixes back. + + https://bugzilla.gnome.org/show_bug.cgi?id=672026 + + glib/glib-init.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit 063f03fa761fe2e341e32ebec6ed7ff6732b5bb1 +Author: Ryan Lortie +AuthorDate: Tue Mar 13 20:08:01 2012 -0400 +Commit: Ryan Lortie +CommitDate: Tue Mar 13 20:15:21 2012 -0400 + + glib-init: fix obvious buffer size mismatch + + glib/glib-init.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 73fb1944e43b3ed3942c453dbe30db859cfe1bbe +Author: Bruce Cowan +AuthorDate: Tue Mar 13 13:48:15 2012 +0000 +Commit: Bruce Cowan +CommitDate: Tue Mar 13 13:48:15 2012 +0000 + + Updated British English translation + + po/en_GB.po | 6037 + +++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 3185 insertions(+), 2852 deletions(-) + +commit 2127246139d6e7706d6a94dd754af649dfa6e650 +Author: Kenneth Nielsen +AuthorDate: Tue Mar 13 09:11:21 2012 +0100 +Commit: Kenneth Nielsen +CommitDate: Tue Mar 13 09:11:21 2012 +0100 + + Updated Danish translation + + po/da.po | 122 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 70 insertions(+), 52 deletions(-) + +commit 81aaf53567cf8dc13ae77878a8663b847ca54fcc +Author: Ryan Lortie +AuthorDate: Mon Mar 12 16:43:15 2012 -0400 +Commit: Ryan Lortie +CommitDate: Mon Mar 12 16:44:00 2012 -0400 + + GSocketMsgFlags: annotate as a flags + + This was being incorrectly guessed as an enum. Fix that. + + https://bugzilla.gnome.org/show_bug.cgi?id=671942 + + gio/gioenums.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 748cbafb8bffe88a7f1a3867b5f3f23d8713da6c +Author: Kjartan Maraas +AuthorDate: Mon Mar 12 18:18:55 2012 +0100 +Commit: Kjartan Maraas +CommitDate: Mon Mar 12 18:22:27 2012 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 117 + +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 69 insertions(+), 48 deletions(-) + +commit c45b8135046790e13b0d486f605dc62c9a783b16 +Author: Timo Jyrinki +AuthorDate: Mon Mar 12 11:02:04 2012 +0200 +Commit: Timo Jyrinki +CommitDate: Mon Mar 12 11:02:04 2012 +0200 + + Finnish translation update from + http://l10n.laxstrom.name/wiki/Gnome_3.4 translation sprint + + po/fi.po | 5844 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 2846 insertions(+), 2998 deletions(-) + +commit 68bdfd69241ebb01be71fb7c8c8c7a188aedf8fb +Author: Kristjan SCHMIDT +AuthorDate: Sun Mar 11 12:02:28 2012 +0100 +Commit: Kristjan SCHMIDT +CommitDate: Sun Mar 11 12:02:28 2012 +0100 + + Updated Esperanto translation + + po/eo.po | 6076 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3194 insertions(+), 2882 deletions(-) + +commit 657e476b74bcf4c1e3a9363951d4adcb537b66de +Author: Piotr Drąg +AuthorDate: Fri Mar 9 22:18:45 2012 +0100 +Commit: Piotr Drąg +CommitDate: Fri Mar 9 22:18:45 2012 +0100 + + Updated Polish translation + + po/pl.po | 6186 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3246 insertions(+), 2940 deletions(-) + +commit 8084047ee3fa639fc0ca33035356e2ce11f0cab6 +Author: Ryan Lortie +AuthorDate: Fri Mar 9 10:29:32 2012 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 9 10:29:32 2012 -0500 + + logging test: unset G_MESSAGES_DEBUG + + Having G_MESSAGES_DEBUG=all in the environment will fail this + testcase. + + glib/tests/logging.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 265f265c677bc5399dbb1cfa449cb4b915a6459f +Author: Mark Janossy +AuthorDate: Fri Mar 9 09:54:23 2012 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 9 09:54:23 2012 -0500 + + deprecated threads: fix race in GStaticRecMutex + + The very last access to the 'depth' field of GStaticRecMutex in + g_static_rec_mutex_unlock_full() was being performed after dropping + the + implementation mutex for the last time. + + This allowed the lock to be dropped an additional time if it was + acquired in another thread right at that instant (which is somewhat + likely, since another thread could have just been woken up by the lock + being released). + + https://bugzilla.gnome.org/show_bug.cgi?id=670846 + + glib/deprecated/gthread-deprecated.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +commit cb44e96dfadf33c1c5df43dabe7ced19a03789dc +Author: Alexander Larsson +AuthorDate: Fri Mar 9 11:32:45 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 9 11:32:45 2012 +0100 + + Fix crash in signal emission optimization + + The trace of the signal emission of the was calculating the instance + type after the instance was unrefed. Fix this by keeping the instance + type around. + + gobject/gsignal.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit bbe4b5719502c934e3a2f931773babd858997e43 +Author: Alexander Larsson +AuthorDate: Fri Mar 9 09:32:06 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 9 09:57:03 2012 +0100 + + signal emission: Allocate instance_and_param with alloca + + This Gives a 5% performance increase in e.g. the emit-handled test. + + gobject/gsignal.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +commit 7b939efa6fad289c2878c64c1edd932200cf5f33 +Author: Erik van Pienbroek +AuthorDate: Thu Mar 8 20:29:18 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 9 08:24:28 2012 +0100 + + Use native glib-genmarshal when cross-compiling + + The ability to cross-compile glib got broken after the + merge of the 'signal-performance' branch as the assumption + was made that the generated glib-genmarshal can be executed + on the host (which isn't valid when cross-compiling). + + Fixed this by using the just-built glib-genmarshal for normal + compilations and the native (host) glib-genmarshal when doing a + cross-compilation as was also done in several other areas of GLib + + Tested for host=x86_64-unknown-linux-gnu, + target=x86_64-unknown-linux-gnu + and host=x86_64-unknown-linux-gnu, target=i686-w64-mingw32 + + https://bugzilla.gnome.org/show_bug.cgi?id=671676 + + gobject/tests/Makefile.am | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 3fa735848782735a7ccff3abba39c53388592588 +Author: Ryan Lortie +AuthorDate: Thu Mar 8 11:55:09 2012 -0500 +Commit: Ryan Lortie +CommitDate: Thu Mar 8 12:07:03 2012 -0500 + + gio-querymodules: unlink instead of writing empty cache + + If there are no modules installed then the most appropriate thing + is to + have no cachefile instead of an empty one. This unbreaks the "clean + directory after 'make uninstall'" check that automake does. + + https://bugzilla.gnome.org/show_bug.cgi?id=671664 + + gio/gio-querymodules.c | 20 ++++++++++++++++---- + 1 file changed, 16 insertions(+), 4 deletions(-) + +commit c9f55445aa2f86b1ea62367849522ecabbe48d72 +Author: Chun-wei Fan +AuthorDate: Thu Mar 8 17:18:43 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Mar 8 17:19:15 2012 +0800 + + msvc_recommended_pragmas.h: Silence C4819 warnings + + This warning appears when unicode chars that cannot be displayed + in the + current Windows code page is used anywhere in the file, including + comment + blocks. We probably don't need to see these, especially as problems + caused by such characters are manifested as other warnings or errors, + for example, the need to add BOM to a file when compiling code with + complex script on Windows. + + msvc_recommended_pragmas.h | 3 +++ + 1 file changed, 3 insertions(+) + +commit 93e2c1f12a354bca11d3467f3d7a2a0eb5dcd683 +Author: Nilamdyuti Goswami +AuthorDate: Thu Mar 8 14:08:11 2012 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Thu Mar 8 14:09:12 2012 +0530 + + Assamese translation completed + + po/as.po | 552 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 312 insertions(+), 240 deletions(-) + +commit c79606a3d61ad45653a1c8fe7e2b18ba07fab56d +Author: Chao-Hsiung Liao +AuthorDate: Thu Mar 8 15:56:14 2012 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Thu Mar 8 15:56:14 2012 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 90 + ++++++++++++++++++++++++++++++++++++------------------------- + po/zh_TW.po | 90 + ++++++++++++++++++++++++++++++++++++------------------------- + 2 files changed, 108 insertions(+), 72 deletions(-) + +commit 05663607eaa595735e037a06101f897fdf97de36 +Author: Chun-wei Fan +AuthorDate: Thu Mar 8 15:34:39 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Mar 8 15:34:39 2012 +0800 + + Update config.h.win32(.in) + + Remove the config for ENABLE_REGEX, as GRegex is now included in + all builds. + + config.h.win32.in | 3 --- + 1 file changed, 3 deletions(-) + +commit d642bf442ffcfba52c58764b03ac6dcf21feb1cf +Author: Chun-wei Fan +AuthorDate: Thu Mar 8 15:04:17 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Mar 8 15:04:17 2012 +0800 + + glib-genmarshal.c: Use G_VA_COPY instead of va_copy() + + In the code generation portion, va_copy() is not universally + available, + so use the existing G_VA_COPY macro that in turn calls va_copy() if it + is available or call an appropriate emulation otherwise. + + gobject/glib-genmarshal.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b72bb9dd08b15a3f85ab593121f9ba49828c07c2 +Author: Chun-wei Fan +AuthorDate: Thu Mar 8 14:51:22 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Mar 8 14:51:22 2012 +0800 + + Use G_VA_COPY instead of va_copy() + + va_vopy() is not universally available in all compilers, so make + use of + the existing G_VA_COPY macro which either calls va_copy() if it is + available, or emulates it if otherwise. + + gobject/gclosure.c | 2 +- + gobject/gmarshal.c | 42 +++++++++++++++++++++--------------------- + 2 files changed, 22 insertions(+), 22 deletions(-) + +commit 75ca1cd15891739052c96e94eed5f046f344f9c5 +Author: Emmanuele Bassi +AuthorDate: Wed Mar 7 12:53:14 2012 +0000 +Commit: Emmanuele Bassi +CommitDate: Wed Mar 7 12:53:14 2012 +0000 + + gobject: Fix a compiler warning + + Shuffle the parenthesis around. + + gobject/gsignal.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7cf50ceb857968a99e141e8e2c75053761a12639 +Author: Cosimo Cecchi +AuthorDate: Tue Mar 6 22:10:53 2012 -0500 +Commit: Cosimo Cecchi +CommitDate: Tue Mar 6 22:11:22 2012 -0500 + + tests: fix GAction test for headless run + + gio/tests/Makefile.am | 1 + + gio/tests/actions.c | 11 +++++++++++ + 2 files changed, 12 insertions(+) + +commit a06542b998869c619a9eb9548d5e3bc780d09bbb +Author: Nilamdyuti Goswami +AuthorDate: Tue Mar 6 21:43:24 2012 +0530 +Commit: Nilamdyuti Goswami +CommitDate: Tue Mar 6 21:45:13 2012 +0530 + + Assamese translation completed + + po/as.po | 5816 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3069 insertions(+), 2747 deletions(-) + +commit 6b4e24aca04f5b48f787f51db8d73dae620136a3 +Author: Seong-ho Cho +AuthorDate: Tue Mar 6 23:50:59 2012 +0900 +Commit: Changwoo Ryu +CommitDate: Tue Mar 6 23:50:59 2012 +0900 + + Updated Korean translation + + po/ko.po | 1129 + ++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 695 insertions(+), 434 deletions(-) + +commit 026340c5fcafd63b38a0424a0b83ae3a1c551aa7 +Author: Alexander Larsson +AuthorDate: Tue Mar 6 11:35:17 2012 +0100 +Commit: Alexander Larsson +CommitDate: Tue Mar 6 11:35:17 2012 +0100 + + Fix unused variable warning + + gobject/gsignal.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6e8caec6d9af06d4f7f0e6cd1a86c6c47e49ff01 +Author: David Zeuthen +AuthorDate: Mon Mar 5 12:57:32 2012 -0500 +Commit: David Zeuthen +CommitDate: Mon Mar 5 13:00:28 2012 -0500 + + GUnix{Input,Output}Stream: Only release cancelable poll-fd if we + allocated it + + Otherwise we get criticals a'la + + GLib-GIO-CRITICAL **: g_cancellable_release_fd: assertion + `cancellable->priv->fd_refcount > 0' failed + + when reading/writing to certain kinds of file descriptors. + + Patch reviewed by Dan Winship on IRC. + + Signed-off-by: David Zeuthen + + gio/gunixinputstream.c | 3 ++- + gio/gunixoutputstream.c | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit b6f65ec94065eb1ef321fe034b6fe94059bb741e +Author: Matthias Clasen +AuthorDate: Mon Mar 5 11:43:20 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Mar 5 11:44:16 2012 -0500 + + bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3cf1ad1881c2d8f0cac67d51d3e29713bb28a201 +Author: Alexander Larsson +AuthorDate: Mon Mar 5 15:05:07 2012 +0100 +Commit: Alexander Larsson +CommitDate: Mon Mar 5 15:06:22 2012 +0100 + + Use G_DEFINE_CONSTRUCTOR for the glib_init constructor + + No need to hand-roll this when we have a macro version. + + glib/glib-init.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit a970fddb0ed68de910120cbe009edb94aa38eb9d +Author: Matthias Clasen +AuthorDate: Mon Mar 5 09:01:20 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Mar 5 09:01:20 2012 -0500 + + 2.31.20 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 17fe7fbd5afe58d386cd9df1148d9f897c233f7e +Author: Matthias Clasen +AuthorDate: Mon Mar 5 08:32:07 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Mar 5 08:32:07 2012 -0500 + + Update glib-genmarshal docs + + A bunch of new commandline options sneaked in without docs... + + docs/reference/gobject/glib-genmarshal.xml | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit afe30b28847487d9b5cb4fb65ce740107cbc7423 +Author: Matthias Clasen +AuthorDate: Mon Mar 5 07:54:47 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Mar 5 07:54:47 2012 -0500 + + Fix a compiler warning + + gobject/gsignal.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dea3619367633786f98267181f18ec11834ec507 +Author: Matthias Clasen +AuthorDate: Mon Mar 5 07:34:58 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Mar 5 07:34:58 2012 -0500 + + gobject: Fix symbol lists + + gobject/gobject.symbols | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit d2e742c60516963d894516f1ffaf72be021b5df2 +Author: Matthias Clasen +AuthorDate: Mon Mar 5 07:02:53 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Mar 5 07:02:53 2012 -0500 + + More updates + + NEWS | 4 ++++ + 1 file changed, 4 insertions(+) + +commit f3fb42cfaf967cec4450437d81f824de266fb274 +Merge: e9c399a 2d6502f +Author: Alexander Larsson +AuthorDate: Mon Mar 5 12:29:45 2012 +0100 +Commit: Alexander Larsson +CommitDate: Mon Mar 5 12:29:45 2012 +0100 + + Merge branch 'signal-performance' + +commit e9c399a65bfa1796947a8d1d65a4a7edab610c3b +Author: Matthias Clasen +AuthorDate: Sun Mar 4 23:42:45 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Mar 5 06:18:24 2012 -0500 + + Fix distcheck + + gio/fam/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 17835f8efd226580f767cf86e846749102050ae1 +Author: YunQiang Su +AuthorDate: Mon Mar 5 17:44:58 2012 +0800 +Commit: YunQiang Su +CommitDate: Mon Mar 5 17:44:58 2012 +0800 + + update Simplified Chinese (zh_CN) translation + + po/zh_CN.po | 5919 + +++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 3129 insertions(+), 2790 deletions(-) + +commit c0c2cbe0aec6fe42ac7496ed831b2e78a477c351 +Author: Matthias Clasen +AuthorDate: Sun Mar 4 22:25:50 2012 -0500 +Commit: Matthias Clasen +CommitDate: Sun Mar 4 22:28:28 2012 -0500 + + Fix distcheck + + glib/pcre/Makefile.am | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 47b162c1dfeca9384058e24a9cef3fdb4e730151 +Author: Matthias Clasen +AuthorDate: Sun Mar 4 21:48:26 2012 -0500 +Commit: Matthias Clasen +CommitDate: Sun Mar 4 21:48:26 2012 -0500 + + Updates for 2.31.20 + + NEWS | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 51 insertions(+) + +commit 1426a8ca07f3ad0e874c0b0aad241ae93cf1e144 +Author: Matthias Clasen +AuthorDate: Sun Mar 4 20:49:04 2012 -0500 +Commit: Matthias Clasen +CommitDate: Sun Mar 4 20:49:04 2012 -0500 + + Fix binding properties of the same object + + This problem was pointed out in bug 639873. + The patch here is based on Matt Barnes patch, + I've added a testcase as well. + + gobject/gbinding.c | 8 +++++--- + gobject/tests/binding.c | 36 ++++++++++++++++++++++++++++++++++++ + 2 files changed, 41 insertions(+), 3 deletions(-) + +commit 840c32281d307c709b3b2d83071280b3bf46b969 +Author: Nirbheek Chauhan +AuthorDate: Tue Feb 21 19:42:22 2012 +0530 +Commit: Matthias Clasen +CommitDate: Sun Mar 4 20:36:04 2012 -0500 + + Run gdb under libtool so that local libraries are used + + If this isn't done, the system-wide glib is used for this test, + and that can cause test failures. + + https://bugzilla.gnome.org/621368 + + tests/run-assert-msg-test.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d49a77df5de8102974654f6f27a119dabd550043 +Author: Matej Urbančič +AuthorDate: Sun Mar 4 21:23:29 2012 +0100 +Commit: Matej Urbančič +CommitDate: Sun Mar 4 21:23:29 2012 +0100 + + Updated Slovenian translation + + po/sl.po | 72 + +++++++++++++++++++++++++++++----------------------------------- + 1 file changed, 32 insertions(+), 40 deletions(-) + +commit ce5ccbf3e0638b33f66a0948ecffe287beca1592 +Author: Martin Srebotnjak +AuthorDate: Sun Mar 4 21:20:59 2012 +0100 +Commit: Matej Urbančič +CommitDate: Sun Mar 4 21:20:59 2012 +0100 + + Updated Slovenian translation + + po/sl.po | 1636 + +++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 992 insertions(+), 644 deletions(-) + +commit f3bf532a3c6dd97605117dba4b7cc4aae10e7136 +Author: Michael Biebl +AuthorDate: Sun Mar 4 00:26:10 2012 +0100 +Commit: Michael Biebl +CommitDate: Sun Mar 4 00:26:10 2012 +0100 + + build: include glib-compile-resources.xml in the dist tarball + + https://bugzilla.gnome.org/show_bug.cgi?id=671281 + + docs/reference/gio/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit cc2104e87a12414c205319a0e488c17c64246e9c +Author: Michael Biebl +AuthorDate: Sat Mar 3 21:39:35 2012 +0100 +Commit: Michael Biebl +CommitDate: Sat Mar 3 21:39:35 2012 +0100 + + build: Fix failure on "make distclean" + + https://bugzilla.gnome.org/show_bug.cgi?id=671270 + + gio/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2d6502f67bb207c5a0d6eaba27b2398b74baa28f +Author: Alexander Larsson +AuthorDate: Sat Mar 3 21:36:10 2012 +0100 +Commit: Alexander Larsson +CommitDate: Sat Mar 3 21:36:10 2012 +0100 + + fastpath: Do allow NO_RECURSE fastpath for NOP emissions + + This fixes a performance regression wrt the old NOP emission + handler. + + gobject/gsignal.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 5f280eb6a828d3bdeb932ce42ee97b2ab7e771f2 +Author: Shota Akiyama +AuthorDate: Thu Feb 23 11:52:12 2012 +0100 +Commit: Dan Winship +CommitDate: Sat Mar 3 13:29:29 2012 -0500 + + glib/gmacros.h: Fix up attribute to avoid namespace collisions + + https://bugzilla.gnome.org/show_bug.cgi?id=670751 + + glib/gmacros.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit deea0e39ba6bb7c41da405c1269abb962ca81a71 +Author: Dan Winship +AuthorDate: Fri Mar 2 10:22:11 2012 -0500 +Commit: Dan Winship +CommitDate: Sat Mar 3 13:26:43 2012 -0500 + + gspawn: rename G_SPAWN_ERROR_2BIG to be more bindings-friendly + + Rename G_SPAWN_ERROR_2BIG to G_SPAWN_ERROR_TOO_BIG (while keeping the + old name for compatibility), to fix problems with language bindings + where the old name translates into something that would be + syntactically invalid due to starting with a digit. + + https://bugzilla.gnome.org/show_bug.cgi?id=671025 + + glib/gspawn.c | 2 +- + glib/gspawn.h | 8 ++++++-- + 2 files changed, 7 insertions(+), 3 deletions(-) + +commit a5caa564b7ac03d49386690c3037e57bdf80563d +Author: Ryan Lortie +AuthorDate: Sat Mar 3 11:40:51 2012 -0500 +Commit: Ryan Lortie +CommitDate: Sat Mar 3 11:48:12 2012 -0500 + + GApplication: fix name unregister logic + + We were attempting to unregister our ownership of our D-Bus name + even in + the case that we were non-unique (ie: we didn't actually own the + name). + Rework the logic a bit to prevent that: for non-unique, we leave + impl->bus_name as NULL and we only register/unregister if it is + non-NULL. + + gio/gapplicationimpl-dbus.c | 16 +++++++--------- + 1 file changed, 7 insertions(+), 9 deletions(-) + +commit 5c3e86277627a8cc2dab64dd25fc7a30369472e0 +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Sat Mar 3 22:49:18 2012 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Sat Mar 3 22:49:18 2012 +0700 + + Updated Vietnamese translation + + po/vi.po | 85 + +++++++++++++++++++++++++++++----------------------------------- + 1 file changed, 38 insertions(+), 47 deletions(-) + +commit f5aad13d8f1fe4fccf128105f9ab50f2e73f7737 +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Sat Mar 3 22:35:16 2012 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Sat Mar 3 22:35:16 2012 +0700 + + po/vi: import from Damned Lies + + po/vi.po | 1134 + ++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 669 insertions(+), 465 deletions(-) + +commit 27d9b92264a35dc5753f63ad0ff2f8e5c7381c44 +Author: Inaki Larranaga Murgoitio +AuthorDate: Sat Mar 3 14:43:05 2012 +0100 +Commit: dooteo +CommitDate: Sat Mar 3 14:43:05 2012 +0100 + + Updated Basque language + + po/eu.po | 6203 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3268 insertions(+), 2935 deletions(-) + +commit 59ee6dbc004adda8c4e4c8ff58bf21a9173eb99f +Author: Peter O'Gorman +AuthorDate: Fri Mar 2 13:36:27 2012 -0800 +Commit: John Ralls +CommitDate: Fri Mar 2 13:36:27 2012 -0800 + + Bug 640202 Impossible to build multi-architecture libraries + + Hides ELF-only linker flag -export-dynamic from non-ELF linkers. + + configure.ac | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +commit b05ea89d0c9e97fcd7858a83ea0d1c6d7fe1972f +Author: Alexander Larsson +AuthorDate: Fri Mar 2 20:22:29 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 2 20:22:29 2012 +0100 + + Mask out G_SIGNAL_TYPE_STATIC_SCOPE when comparing types + + gobject/gsignal.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d10f79a1963d169b1613b2163176cdea7b7d4d8d +Author: Emmanuele Bassi +AuthorDate: Fri Mar 2 17:06:36 2012 +0000 +Commit: Emmanuele Bassi +CommitDate: Fri Mar 2 17:06:36 2012 +0000 + + build: Fix rules for marshalers.[ch] + + gobject/tests/.gitignore | 1 + + gobject/tests/Makefile.am | 11 +++++++---- + 2 files changed, 8 insertions(+), 4 deletions(-) + +commit 3d52ee999af39b37badfb8ed6f7b0dbcf28c73b0 +Author: Alexander Larsson +AuthorDate: Fri Mar 2 16:16:17 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 2 17:13:04 2012 +0100 + + Add more tests for signal emissions + + gobject/tests/Makefile.am | 10 ++ + gobject/tests/marshalers.list | 3 + + gobject/tests/signals.c | 361 + +++++++++++++++++++++++++++++++++++++++++- + 3 files changed, 367 insertions(+), 7 deletions(-) + +commit f02ec2f2de3c9863da36be951662ddf4080adfaa +Author: Alexander Larsson +AuthorDate: Wed Feb 22 19:36:05 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 2 17:13:03 2012 +0100 + + Optimize single-handler va_marshaller case + + When there is only one closure handling a signal emission and + it doesn't have a bunch of complicated features enabled we + can short circuit the va_args collection into GValues and call the + callback via the va_marshaller directly. + + https://bugzilla.gnome.org/show_bug.cgi?id=661140 + + gobject/gsignal.c | 344 + ++++++++++++++++++++++++++++++++-------------- + gobject/gvaluecollector.h | 30 ++++ + 2 files changed, 274 insertions(+), 100 deletions(-) + +commit a3e91088ce40ed201cfe1514b0adb252394027b1 +Author: Alexander Larsson +AuthorDate: Fri Mar 2 11:20:45 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 2 17:13:03 2012 +0100 + + Use builtin marshallers and va_marshallers if possible + + If the signal argumment types matches a built in standard + marshaller we use the va_marshaller for that, and also the + normal marshaller if NULL was specified (as its faster than + the generic one). + + gobject/gsignal.c | 54 + +++++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 51 insertions(+), 3 deletions(-) + +commit 7964cda8e6c9dc779e99b65150e158e29d373ea4 +Author: Alexander Larsson +AuthorDate: Wed Feb 22 19:34:05 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 2 17:13:03 2012 +0100 + + Add g_signal_set_va_marshaller + + This lets you set a va_marshaller on your signal which will be + propagated to all closures for the signal. Also, automatically + uses the generica va_marshaller if you specify a NULL c_marshaller. + + https://bugzilla.gnome.org/show_bug.cgi?id=661140 + + gobject/gsignal.c | 58 + ++++++++++++++++++++++++++++++++++++++++++++++++++----- + gobject/gsignal.h | 11 +++++++++++ + 2 files changed, 64 insertions(+), 5 deletions(-) + +commit 1c4f0ca48332f2e550b5e5e17365c43912958cee +Author: Alexander Larsson +AuthorDate: Tue Feb 28 15:48:20 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 2 17:13:03 2012 +0100 + + Add _g_closure_is_void to check for NULL vfuncs + + https://bugzilla.gnome.org/show_bug.cgi?id=661140 + + gobject/gclosure.c | 36 ++++++++++++++++++++++++++++++++++++ + gobject/gtype-private.h | 2 ++ + 2 files changed, 38 insertions(+) + +commit 57051905f9279d2c8c27e9e50154c9565708f4d5 +Author: Alexander Larsson +AuthorDate: Wed Feb 22 19:32:36 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 2 17:13:03 2012 +0100 + + Support generating va marshallers in glib-genmarshal + + https://bugzilla.gnome.org/show_bug.cgi?id=661140 + + gobject/glib-genmarshal.c | 232 ++++++++++-- + gobject/gmarshal.c | 909 + ++++++++++++++++++++++++++++++++++++++++++++++ + gobject/gmarshal.h | 154 ++++++++ + 3 files changed, 1272 insertions(+), 23 deletions(-) + +commit 588af03a2893615736685c43cdaff767f70d04e8 +Author: Alexander Larsson +AuthorDate: Wed Feb 22 19:29:14 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 2 17:13:03 2012 +0100 + + Add optional support for varargs marshallers to GClosure + + These closures support being invoked on a va_args which can + be useful as you can then avoid boxing the va_args into + GValues in certain cases. + + https://bugzilla.gnome.org/show_bug.cgi?id=661140 + + gobject/gclosure.c | 364 + +++++++++++++++++++++++++++++++++++++++++++++++- + gobject/gclosure.h | 18 +++ + gobject/gtype-private.h | 13 ++ + 3 files changed, 392 insertions(+), 3 deletions(-) + +commit d5fbbe400aef8c802968a1398fc8e9546173b748 +Author: Alexander Larsson +AuthorDate: Wed Feb 22 17:46:21 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 2 17:13:03 2012 +0100 + + Add GRealClosure and move meta_marshallers there + + This means we're not abusing the notifiers for meta_marshallres, + and we're able to later cleanly add other fields to GClosure. + + We still have to leave the ABI intact for the GClosure->meta_marshal + bit, as old G_CLOSURE_N_NOTIFIERS macro instances still accesses it. + However, we always set it to zero to keep those macros working. + + https://bugzilla.gnome.org/show_bug.cgi?id=661140 + + gobject/gclosure.c | 81 + ++++++++++++++++++++----------------------------- + gobject/gclosure.h | 6 ++-- + gobject/gsignal.c | 4 +-- + gobject/gtype-private.h | 12 ++++++++ + 4 files changed, 51 insertions(+), 52 deletions(-) + +commit 950e6a4a207180862061618de5a3b77f92d71c0a +Author: Alexander Larsson +AuthorDate: Wed Feb 22 19:44:24 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 2 17:13:03 2012 +0100 + + tests: Add generic and empty signal emission performace tests + + generic means it uses the generic marshaller + empty means the vfunc pointer is NULL + + https://bugzilla.gnome.org/show_bug.cgi?id=661140 + + tests/gobject/performance.c | 112 + ++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 107 insertions(+), 5 deletions(-) + +commit 3be0e57458fe297d79a20f261cc2b0f92c91db45 +Author: Lionel Landwerlin +AuthorDate: Tue Sep 27 09:15:17 2011 +0100 +Commit: Alexander Larsson +CommitDate: Fri Mar 2 17:13:03 2012 +0100 + + tests: performance: add emit-handled/emit-unhandled tests + + Signed-off-by: Lionel Landwerlin + + tests/gobject/performance.c | 125 + ++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 104 insertions(+), 21 deletions(-) + +commit 00f1e1f5c282b0943d0a7b3e073d8867b0bdba05 +Author: Jörn Magens +AuthorDate: Wed Feb 29 12:29:50 2012 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 2 09:08:30 2012 -0500 + + GSequence: add note about lookup requiring sorting + + g_sequence_lookup() only works on sorted sequences, but it's + quite easy + to create unsorted sequences. Add a note to the documentation + that the + sequence must be sorted in order for g_sequence_lookup() to work. + + https://bugzilla.gnome.org/show_bug.cgi?id=670969 + + glib/gsequence.c | 32 ++++++++++++++++++++++++++++++++ + 1 file changed, 32 insertions(+) + +commit 7e7e0b141c887a2880c88f051cb8ed07e474b24a +Author: Yaron Shahrabani +AuthorDate: Fri Mar 2 14:15:58 2012 +0200 +Commit: Yaron Shahrabani +CommitDate: Fri Mar 2 14:15:58 2012 +0200 + + Updated Hebrew translation. + + po/he.po | 131 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 76 insertions(+), 55 deletions(-) + +commit cb0566eaf3b245bf2eaa8c9e912cf240d8868193 +Author: Christian Dywan +AuthorDate: Sat Mar 26 14:48:54 2011 +0000 +Commit: Javier Jardón +CommitDate: Thu Mar 1 21:40:35 2012 +0000 + + gobject/gtype.c: Emphasize use of priv in member and use + g_return_val_if_fail + + Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=597785 + + Signed-off-by: Javier Jardón + + gobject/gtype.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 10fbfcf09010e423cfc79c54e8da50b62a0f4b8a +Author: David Zeuthen +AuthorDate: Thu Mar 1 14:06:43 2012 -0500 +Commit: David Zeuthen +CommitDate: Thu Mar 1 14:06:43 2012 -0500 + + Add G_VOLUME_IDENTIFIER_KIND_CLASS identifier + + If an application (such as Nautilus) wants to show a sidebar with + devices group into different groups such as "Devices" and "Network", + it's currently up to the application itself to do the classification + (for example by looking at the URI scheme for the activation root, + e.g. smb://). + + This patch adds a new identifier G_VOLUME_IDENTIFIER_KIND_CLASS that + can be set by volume monitors and used by applications. + + See https://bugzilla.gnome.org/show_bug.cgi?id=668295 + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 1 + + gio/gvolume.h | 18 ++++++++++++++++++ + 2 files changed, 19 insertions(+) + +commit 479416fada430f8d1f5af8e9b7c536b2ee6e71fb +Author: Krishnababu Krothapalli +AuthorDate: Thu Mar 1 13:59:41 2012 +0530 +Commit: Krishnababu Krothapalli +CommitDate: Thu Mar 1 13:59:41 2012 +0530 + + Updated Telugu Translations + + po/te.po | 6103 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3207 insertions(+), 2896 deletions(-) + +commit 80611295ab56dd95add95a9600ba8bc88d5e9a62 +Author: Colin Walters +AuthorDate: Wed Feb 29 12:37:24 2012 -0500 +Commit: Colin Walters +CommitDate: Wed Feb 29 13:09:41 2012 -0500 + + g_uri_unescape_segment: Mention (allow-none)/%NULL in documentation + + glib/gurifuncs.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit ede8707129389d6a795b9d23de2554b0d656e2f5 +Author: Emmanuele Bassi +AuthorDate: Wed Feb 29 17:52:39 2012 +0000 +Commit: Emmanuele Bassi +CommitDate: Wed Feb 29 17:56:06 2012 +0000 + + Version the deprecation of g_value_array_get_type() + + Just like the rest of the GValueArray API. + + gobject/gboxed.h | 13 ------------- + gobject/gvaluearray.h | 13 ++++++++++++- + 2 files changed, 12 insertions(+), 14 deletions(-) + +commit c5b6f774c4c133b5c1a9ebbd046a54ef6f177f84 +Author: Andoni Morales Alastruey +AuthorDate: Wed Feb 29 11:19:21 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Wed Feb 29 11:29:23 2012 +0100 + + gsocket: fix compilation when ENOTSOCK and WSANOTSOCK are both defined + + gio/gsocket.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 9db8692f5ada433b4c7292b5b595a667fb53bebc +Author: Chun-wei Fan +AuthorDate: Wed Feb 29 11:58:16 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Feb 29 11:58:16 2012 +0800 + + Update Visual C++ projects + + Update the build support of the included PCRE as we are now including + PCRE 8.30 with the GLib distribution. + + Also "install" the new gversionmacros.h header file. + + build/win32/vs10/glib.props | 2 + + build/win32/vs10/glib.vcxproj.filtersin | 19 ++++- + build/win32/vs10/glib.vcxprojin | 122 + ++++++++++++++++++++++++++++++-- + build/win32/vs9/glib.vcprojin | 122 + ++++++++++++++++++++++++++++++-- + build/win32/vs9/glib.vsprops | 1 + + 5 files changed, 252 insertions(+), 14 deletions(-) + +commit 2bde3e8d833cf2d90ac3a0b3b89810ddd54b8c10 +Author: Aleksander Morgado +AuthorDate: Tue Feb 28 01:14:29 2012 +0100 +Commit: Aleksander Morgado +CommitDate: Tue Feb 28 10:36:54 2012 +0100 + + gio-2.0.pc: add gdbus_codegen variable + + https://bugzilla.gnome.org/show_bug.cgi?id=670922 + + gio-2.0.pc.in | 1 + + 1 file changed, 1 insertion(+) + +commit 0155e19566a9d9e0d334eddac7dd757b4b9a2f4c +Author: Fran Diéguez +AuthorDate: Tue Feb 28 00:32:18 2012 +0100 +Commit: Fran Diéguez +CommitDate: Tue Feb 28 00:32:18 2012 +0100 + + Updated Galician translations + + po/gl.po | 66 + +++++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 42 insertions(+), 24 deletions(-) + +commit 7a4a973cfd1508065efa69c6a910cd01b490499a +Author: David Zeuthen +AuthorDate: Mon Feb 27 14:53:13 2012 -0500 +Commit: David Zeuthen +CommitDate: Mon Feb 27 14:53:13 2012 -0500 + + GDBusConnection: Don't leak message reply in error path + + This was reported in bug 670909. + + https://bugzilla.gnome.org/show_bug.cgi?id=670909 + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit eeccd3866ac679b36f5bff2c8c542b911a09a390 +Author: Ryan Lortie +AuthorDate: Mon Feb 27 14:00:55 2012 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 27 14:01:10 2012 -0500 + + GDBusMenuModel: plug a leak of a GHashTable + + gio/gdbusmenumodel.c | 1 + + 1 file changed, 1 insertion(+) + +commit 51f1297a6e8a031a611dd15b8aec8f4abac9a1db +Author: Christian Persch +AuthorDate: Mon Feb 27 16:25:50 2012 +0100 +Commit: Christian Persch +CommitDate: Mon Feb 27 16:25:50 2012 +0100 + + Fixup docs comment + + glib/gunicode.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d2c37669f24d6c52642f0f7d76c6d8432fb57a6d +Author: Christian Persch +AuthorDate: Mon Feb 13 14:20:55 2012 +0100 +Commit: Christian Persch +CommitDate: Mon Feb 27 13:27:13 2012 +0100 + + regex: unicode: Update to Unicode 6.1.0 + + Update some more PCRE tables to Unicode 6.1.0. Should be completely + updated now. + + glib/pcre/pcre_tables.c | 297 + ++++++++++++++++++++++++++---------------------- + 1 file changed, 159 insertions(+), 138 deletions(-) + +commit c67ad269f1801371050da5600fa83abaf1130411 +Author: Matthias Clasen +AuthorDate: Mon Feb 27 07:16:11 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 27 07:16:11 2012 -0500 + + Fix doc build again + + The way gtk-doc works, we need compiling.sgml in both + content_files (to make sure it ends up in the disted tarball) + and in expand_content_files (to have references expanded). + + docs/reference/glib/Makefile.am | 3 +++ + 1 file changed, 3 insertions(+) + +commit 96c98ce62ebb88b296deab5391203a870dbfa068 +Author: Matthias Clasen +AuthorDate: Mon Feb 27 06:48:01 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 27 06:54:16 2012 -0500 + + Improve the wording of the message for G_UNAVAILABLE + + The version number we have here is the one the function appeared + in, not the max-allowed version. Therefore 'unavailable before + VERSION' makes more sense than 'unavailable for VERSION'. + + glib/gmacros.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit fecdb4f8dc5338b9c069edeb4f0eb77b0aaf3605 +Author: Rico Tzschichholz +AuthorDate: Mon Feb 27 12:50:18 2012 +0100 +Commit: Rico Tzschichholz +CommitDate: Mon Feb 27 12:50:18 2012 +0100 + + docs/glib: Moving back compiling.sgml to content_files to fix + make dist + + docs/reference/glib/Makefile.am | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 37c84b3bbf7ae6408f35db896c43ef513ffa0e8d +Author: Alexander Shopov +AuthorDate: Mon Feb 27 07:31:44 2012 +0200 +Commit: Alexander Shopov +CommitDate: Mon Feb 27 07:34:23 2012 +0200 + + Updated Bulgarian translation + + po/bg.po | 952 + ++++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 604 insertions(+), 348 deletions(-) + +commit 4995ef4dd7959dde44c62014a06c52d41acd8908 +Author: Matthias Clasen +AuthorDate: Mon Feb 27 00:32:13 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 27 00:32:13 2012 -0500 + + Add a 'these are private' note for the version macros + + glib/gversionmacros.h | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 76175ab9eda0c1d56a2b6a816853ab00264b1f3b +Author: Matthias Clasen +AuthorDate: Mon Feb 27 00:18:47 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 27 00:18:47 2012 -0500 + + Improve documentation around deprecations + + docs/reference/glib/Makefile.am | 4 +++- + docs/reference/glib/compiling.sgml | 2 +- + docs/reference/glib/glib-docs.sgml | 2 +- + docs/reference/glib/glib-sections.txt | 1 + + glib/docs.c | 8 ++++++++ + 5 files changed, 14 insertions(+), 3 deletions(-) + +commit 550fcaddf7fcdb8a4052ab43f40b27e5e9d94be1 +Author: Emmanuele Bassi +AuthorDate: Tue Feb 21 13:40:50 2012 +0000 +Commit: Matthias Clasen +CommitDate: Mon Feb 27 00:00:06 2012 -0500 + + Add versioned deprecation annotation + + We start from GLib 2.26. + + https://bugzilla.gnome.org/show_bug.cgi?id=670542 + + glib/deprecated/gcompletion.h | 16 +++++----- + glib/deprecated/grel.h | 22 +++++++------- + glib/deprecated/gthread.h | 70 + +++++++++++++++++++++---------------------- + glib/gatomic.h | 2 +- + glib/gmain.h | 2 +- + glib/gunicode.h | 2 +- + 6 files changed, 57 insertions(+), 57 deletions(-) + +commit 817d992abcf127cec3de89b6d6e6e45a99b1727d +Author: Emmanuele Bassi +AuthorDate: Mon Feb 20 16:41:30 2012 +0000 +Commit: Matthias Clasen +CommitDate: Mon Feb 27 00:00:05 2012 -0500 + + value array: Annotate with versioned deprecation + + https://bugzilla.gnome.org/show_bug.cgi?id=670542 + + gobject/gvaluearray.h | 20 ++++++++++---------- + gobject/tests/valuearray.c | 2 +- + 2 files changed, 11 insertions(+), 11 deletions(-) + +commit 34aeeb7d64a0433f7994dd2b3f60bc018f0a84c1 +Author: Emmanuele Bassi +AuthorDate: Mon Feb 20 16:20:15 2012 +0000 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 23:58:41 2012 -0500 + + Add flexible API version boundaries + + There are cases when it should be possible to define at compile time + what range of functions and types should be used, in order to get, + or restrict, the compiler warnings for deprecated or newly added + types or functions. + + For instance, if GLib introduces a deprecation warning on a type in + version 2.32, application code can decide to specify the minimum and + maximum boundary of the used API to be 2.30; when compiling against + a new version of GLib, this would produce the following results: + + - all deprecations introduced prior to 2.32 would emit compiler + warnings when used by the application code; + - all deprecations introduced in 2.32 would not emit compiler + warnings when used by the application code; + - all new symbols introduced in 2.32 would emit a compiler warning. + + Using this scheme it should be possible to have fairly complex + situations, like the following one: + + assuming that an application is compiled with: + GLIB_VERSION_MIN_REQUIRED = GLIB_VERSION_2_30 + GLIB_VERSION_MAX_ALLOWED = GLIB_VERSION_2_32 + + and a GLib header containing: + + void function_A (void) GLIB_DEPRECATED_IN_2_26; + void function_B (void) GLIB_DEPRECATED_IN_2_28; + void function_C (void) GLIB_DEPRECATED_IN_2_30; + void function_D (void) GLIB_AVAILABLE_IN_2_32; + void function_E (void) GLIB_AVAILABLE_IN_2_34; + + any application code using the above functions will get the + following + compiler warnings: + + function_A: deprecated symbol warning + function_B: deprecated symbol warning + function_C: no warning + function_D: no warning + function_E: undefined symbol warning + + This means that it should be possible to gradually port code towards + non-deprecated API gradually, on a per-release basis. + + https://bugzilla.gnome.org/show_bug.cgi?id=670542 + + configure.ac | 4 + + docs/reference/glib/compiling.sgml | 9 ++ + docs/reference/glib/glib-sections.txt | 9 ++ + glib/Makefile.am | 1 + + glib/docs.c | 32 ++++++ + glib/glib.h | 1 + + glib/gmacros.h | 9 ++ + glib/gtypes.h | 1 + + glib/gversion.c | 12 ++ + glib/gversionmacros.h | 206 + ++++++++++++++++++++++++++++++++++ + 10 files changed, 284 insertions(+) + +commit d70634526d43a9d9281301c2097c788ca575e318 +Author: Christian Persch +AuthorDate: Sat Feb 11 23:51:11 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 22:22:56 2012 -0500 + + regex: Remove --disable-regex option + + https://bugzilla.gnome.org/show_bug.cgi?id=622149 + + configure.ac | 114 + +++++++++++++++++++++++------------------------------ + glib/Makefile.am | 16 +------- + glib/tests/regex.c | 13 ------ + gobject/gboxed.c | 5 --- + 4 files changed, 51 insertions(+), 97 deletions(-) + +commit 3e7f42654ff2fd471ccd67ad6b8a38672f81a393 +Author: David King +AuthorDate: Tue Feb 21 11:19:20 2012 +0000 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 22:22:05 2012 -0500 + + docs: Clarify how to unset a GFileInfo attribute + + https://bugzilla.gnome.org/show_bug.cgi?id=592666 + + gio/gfileinfo.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 500aafd09960b5cea027585e3898192f9501d04f +Author: David King +AuthorDate: Tue Feb 21 10:05:08 2012 +0000 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 22:21:19 2012 -0500 + + docs: Clarify g_type_register_fundamental() behaviour + + https://bugzilla.gnome.org/show_bug.cgi?id=580873 + + gobject/gtype.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 989c466296fe9094f80a0633546b7419da7522c6 +Author: Christian Persch +AuthorDate: Sun Feb 12 21:22:13 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 22:09:05 2012 -0500 + + regex: Remove pcre_ucd.c + + glib/pcre/pcre_ucd.c | 3098 + -------------------------------------------------- + 1 file changed, 3098 deletions(-) + +commit 706b72db21d25ec26ed7411e5221550ffb08ff21 +Author: Christian Persch +AuthorDate: Sun Feb 12 21:20:33 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 22:09:05 2012 -0500 + + regex: Use glib for unicode data + + Use g_unichar_type() and g_unichar_get_script() instead of pcre + tables. + + glib/pcre/Makefile.am | 1 - + glib/pcre/pcre_compile.c | 26 +- + glib/pcre/pcre_dfa_exec.c | 96 +++--- + glib/pcre/pcre_exec.c | 26 +- + glib/pcre/pcre_internal.h | 11 +- + glib/pcre/pcre_tables.c | 16 + + glib/pcre/pcre_xclass.c | 24 +- + glib/pcre/ucp.h | 265 ++++++++-------- + glib/update-pcre/ucp.patch | 732 + ++++++++++++++++++++++++++++++++++++++++++++- + 9 files changed, 958 insertions(+), 239 deletions(-) + +commit 75dffb99b3d11f4ae9d8a72a055641482a727b75 +Author: Christian Persch +AuthorDate: Sun Feb 12 20:41:52 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 22:09:05 2012 -0500 + + regex: Remove obsolete patch + + glib/update-pcre/utt.patch | 30 ------------------------------ + 1 file changed, 30 deletions(-) + +commit 8e8ab99bad79455fae732f5472c8b06a68cca35d +Author: Christian Persch +AuthorDate: Sun Feb 12 20:04:41 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 22:09:05 2012 -0500 + + regex: unicode: Update to Unicode 6.1.0 + + glib/pcre/pcre_ucd.c | 4769 + ++++++++++++++++++++++++++------------------------ + glib/pcre/ucp.h | 10 +- + 2 files changed, 2452 insertions(+), 2327 deletions(-) + +commit 735e4a6a6a5112b5caccb7e55841aa0eba50f5cb +Author: Christian Persch +AuthorDate: Sun Feb 12 19:44:31 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 22:09:04 2012 -0500 + + regex: Remove obsolete makefile fragments + + The update.sh script doesn't work with current PCRE, so these are + obsolete. + + glib/update-pcre/Makefile.am | 2 -- + glib/update-pcre/Makefile.am-1 | 28 ---------------------------- + glib/update-pcre/Makefile.am-2 | 10 ---------- + 3 files changed, 40 deletions(-) + +commit afa3375210cf5b29885559c6fefcdd1b167614d2 +Author: Christian Persch +AuthorDate: Sun Feb 12 19:40:48 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 22:09:04 2012 -0500 + + regex: Use glib memory allocator + + glib/pcre/pcre_globals.c | 10 ++-- + glib/update-pcre/memory.patch | 114 + +++++++++++++----------------------------- + 2 files changed, 40 insertions(+), 84 deletions(-) + +commit 38309dc482eb80037b620d5797fce133fe5f3060 +Author: Christian Persch +AuthorDate: Sun Feb 12 19:31:15 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 22:09:04 2012 -0500 + + regex: Remove obsolete patch + + glib/update-pcre/Makefile.am | 3 +-- + glib/update-pcre/pcre_valid_utf8.c | 14 -------------- + 2 files changed, 1 insertion(+), 16 deletions(-) + +commit d02f6393dffe8dbf9e909d20cab9c8dcaaa8d98b +Author: Christian Persch +AuthorDate: Sun Feb 12 19:29:42 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 22:09:04 2012 -0500 + + regex: Use g_ascii_is[x]digit + + glib/pcre/pcre_compile.c | 22 +++-- + glib/update-pcre/digitab.patch | 217 + +++++++++++++++++------------------------ + 2 files changed, 101 insertions(+), 138 deletions(-) + +commit 8aadf6b3c94b907c418b8289f89978e289aefa1d +Author: Christian Persch +AuthorDate: Sun Feb 12 19:20:49 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 22:09:04 2012 -0500 + + regex: Remove obsolete patch + + PCRE doesn't even contain the patched file anymore. + + glib/update-pcre/Makefile.am | 1 - + glib/update-pcre/pcre_ucp_searchfuncs.c | 130 + -------------------------------- + 2 files changed, 131 deletions(-) + +commit 3225b24cb5a24b1360d90d7efaf6e3e7329717bd +Author: Christian Persch +AuthorDate: Sun Feb 12 19:18:44 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 22:09:03 2012 -0500 + + regex: Remove obsolete patches + + Upstream PCRE has removed the relocations that these patches were + fixing; + the patches are obsolete. + + glib/update-pcre/make_utt.py | 57 ------- + glib/update-pcre/table-reduction.patch | 269 + --------------------------------- + 2 files changed, 326 deletions(-) + +commit a40523b7f2e4994e9a9f8c577d2b2b03d701290e +Author: Christian Persch +AuthorDate: Sun Feb 12 19:14:59 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 22:09:03 2012 -0500 + + regex: Update included PCRE to 8.30 + + glib/pcre/Makefile.am | 43 +- + glib/pcre/pcre.h | 290 +- + glib/pcre/pcre_byte_order.c | 288 ++ + glib/pcre/pcre_chartables.c | 2 +- + glib/pcre/pcre_compile.c | 3217 ++++++++++++------ + glib/pcre/pcre_config.c | 48 +- + glib/pcre/pcre_dfa_exec.c | 901 +++-- + glib/pcre/pcre_exec.c | 3406 +++++++++++-------- + glib/pcre/pcre_fullinfo.c | 62 +- + glib/pcre/pcre_get.c | 199 +- + glib/pcre/pcre_globals.c | 14 +- + glib/pcre/pcre_internal.h | 1168 +++++-- + glib/pcre/pcre_jit_compile.c | 6915 + ++++++++++++++++++++++++++++++++++++++ + glib/pcre/pcre_maketables.c | 148 + + glib/pcre/pcre_newline.c | 50 +- + glib/pcre/pcre_ord2utf8.c | 30 +- + glib/pcre/pcre_refcount.c | 89 + + glib/pcre/pcre_string_utils.c | 168 + + glib/pcre/pcre_study.c | 718 +++- + glib/pcre/pcre_tables.c | 54 +- + glib/pcre/pcre_try_flipped.c | 139 - + glib/pcre/pcre_ucd.c | 2981 ++++++++++++++++ + glib/pcre/pcre_ucp_searchfuncs.c | 131 - + glib/pcre/pcre_valid_utf8.c | 299 ++ + glib/pcre/pcre_version.c | 95 + + glib/pcre/pcre_xclass.c | 64 +- + glib/pcre/pcreposix.h | 146 + + glib/pcre/ucp.h | 195 +- + 28 files changed, 17983 insertions(+), 3877 deletions(-) + +commit da4293a4e431185d8c0c889643712adea0dae473 +Author: Matthias Clasen +AuthorDate: Sun Feb 26 21:49:20 2012 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 21:49:20 2012 -0500 + + Update case conversion test data for Unicode 6.1 + + tests/casefold.txt | 7 ++++++- + tests/casemap.txt | 25 +++++++++++-------------- + 2 files changed, 17 insertions(+), 15 deletions(-) + +commit 8280a8ee36845699ea62ce0a36fcde26e22b1b90 +Author: Christian Persch +AuthorDate: Fri Feb 10 18:59:50 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 21:24:08 2012 -0500 + + unicode: tests: More script to/from ISO-15924 tests + + glib/tests/unicode.c | 140 + ++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 139 insertions(+), 1 deletion(-) + +commit 58b4cdd38b3fb78de918b9861e5d6362d48d1fcd +Author: Christian Persch +AuthorDate: Fri Feb 10 18:42:08 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 21:24:08 2012 -0500 + + unicode: tests: Add tests for new scripts + + glib/tests/unicode.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit d133d229327b8cfb7974a861da08f57140cf5c55 +Author: Christian Persch +AuthorDate: Fri Feb 10 18:36:13 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 21:24:08 2012 -0500 + + unicode: tests: Add tests for new line break classes + + glib/tests/unicode.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 2a2f3c41761d078368e084574bf2f1c51b89f792 +Author: Christian Persch +AuthorDate: Fri Feb 10 18:25:47 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 21:24:07 2012 -0500 + + unicode: Regenerate tables from Unicode 6.1.0 + + glib/gunibreak.h | 1176 ++++++++++++++++++++++++++++++----------- + glib/gunichartables.h | 1383 + ++++++++++++++++++++++++++++++++----------------- + 2 files changed, 1766 insertions(+), 793 deletions(-) + +commit d1da9ff080b42f1bac6a611f68d8d3f8a166f3e6 +Author: Christian Persch +AuthorDate: Fri Feb 10 18:21:31 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 21:24:07 2012 -0500 + + unicode: Regenerate gscripttable.h for Unicode 6.1.0 + + glib/gscripttable.h | 162 + ++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 100 insertions(+), 62 deletions(-) + +commit 3554026b39b575612ce71d79608156a303800552 +Author: Christian Persch +AuthorDate: Fri Feb 10 18:33:22 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 21:24:07 2012 -0500 + + unicode: tests: Remove U+27CD from is-undefined test + + It's assigned in Unicode 6.1.0. + + glib/tests/unicode.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 48e01af6f1115057d861367792e1e40f2a71fdd3 +Author: Christian Persch +AuthorDate: Fri Feb 10 18:20:26 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 21:24:07 2012 -0500 + + unicode: Add new line break classes from Unicode 6.1.0 + + glib/gen-unicode-tables.pl | 2 ++ + glib/gunicode.h | 6 +++++- + 2 files changed, 7 insertions(+), 1 deletion(-) + +commit fb574834c18893413fa0549f0c12699ad6354724 +Author: Christian Persch +AuthorDate: Fri Feb 10 16:59:41 2012 +0100 +Commit: Matthias Clasen +CommitDate: Sun Feb 26 21:24:07 2012 -0500 + + unicode: Add new scripts from Unicode 6.1.0 + + glib/gunicode.h | 22 +++++++++++++++++++--- + glib/guniprop.c | 9 +++++++++ + 2 files changed, 28 insertions(+), 3 deletions(-) + +commit 2161bf254f6bfdfe589f7750c30f129261a48b30 +Author: Stefan Sauer +AuthorDate: Sun Feb 26 21:20:24 2012 +0100 +Commit: Stefan Sauer +CommitDate: Sun Feb 26 21:22:10 2012 +0100 + + goption: try to be helpful in goption args/flag checks + + When complaining about ill defined GOptionEntries include the name + of the option + group and entry in the warning. + + glib/goption.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +commit e4738839edfa88d1e9c401f9342d2a11e7ad2bab +Author: Daniel Mustieles +AuthorDate: Sun Feb 26 20:08:29 2012 +0100 +Commit: Daniel Mustieles +CommitDate: Sun Feb 26 20:08:29 2012 +0100 + + Updated Spanish translation + + po/es.po | 137 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 77 insertions(+), 60 deletions(-) + +commit 761b21a249f1438bd7c347a316f023e89a30dbbc +Author: Jonh Wendell +AuthorDate: Sun Feb 26 10:59:40 2012 -0300 +Commit: Jonh Wendell +CommitDate: Sun Feb 26 10:59:40 2012 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 75 + ++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 42 insertions(+), 33 deletions(-) + +commit 4ce98d3b5952f7c1048352c436c71d636beaae48 +Author: Thomas Hindoe Paaboel Andersen +AuthorDate: Sat Feb 25 10:25:13 2012 +0100 +Commit: Colin Walters +CommitDate: Sun Feb 26 07:35:12 2012 -0500 + + docs: g_file_new_tmp: template was renamed to tmpl + + gio/gfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0833f9735dbf077f401e30fcd8047516a53ce0c0 +Author: A S Alam +AuthorDate: Sun Feb 26 16:24:15 2012 +0530 +Commit: A S Alam +CommitDate: Sun Feb 26 16:24:15 2012 +0530 + + update Punjabi Translation + + po/pa.po | 6072 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3268 insertions(+), 2804 deletions(-) + +commit 4876be4abfa3291cf3e5412092059b7a2ac2ccce +Author: Мирослав Николић + +AuthorDate: Sun Feb 26 11:26:11 2012 +0100 +Commit: Мирослав Николић + +CommitDate: Sun Feb 26 11:26:11 2012 +0100 + + Updated Serbian translation + + po/sr.po | 89 + ++++++++++++++++++++++++++++++++++------------------------ + po/sr@latin.po | 89 + ++++++++++++++++++++++++++++++++++------------------------ + 2 files changed, 106 insertions(+), 72 deletions(-) + +commit 755a45e530bdde4b618baeec1f4f478bcc2e4f03 +Author: Gheyret Kenji +AuthorDate: Sun Feb 26 11:23:43 2012 +0900 +Commit: Gheyret Kenji +CommitDate: Sun Feb 26 11:23:43 2012 +0900 + + Updated Uyghur translation + + po/ug.po | 6110 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 3151 insertions(+), 2959 deletions(-) + +commit ba7e1542fe9ed53dbf596e23a3efdfacae1adb98 +Author: Ihar Hrachyshka +AuthorDate: Sun Feb 26 01:18:29 2012 +0300 +Commit: Ihar Hrachyshka +CommitDate: Sun Feb 26 01:18:29 2012 +0300 + + Updated Belarusian translation. + + po/be.po | 77 + +++++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 49 insertions(+), 28 deletions(-) + +commit abac7df5734cff4ea92b5ae92a8b34008548ecfb +Author: Jonh Wendell +AuthorDate: Sat Feb 25 10:54:53 2012 -0200 +Commit: Jonh Wendell +CommitDate: Sat Feb 25 18:58:09 2012 -0200 + + Make some strings translatable + + gio/gresource-tool.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 3cc5900b7be49da10617775b91d86bbf945091ca +Author: Aurimas Černius +AuthorDate: Sat Feb 25 22:37:20 2012 +0200 +Commit: Aurimas Černius +CommitDate: Sat Feb 25 22:37:20 2012 +0200 + + Updated Lithuanian translation + + po/lt.po | 6207 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3290 insertions(+), 2917 deletions(-) + +commit feaf828a92dcc373c859a196d7b82ab9347e4b2a +Author: Jonh Wendell +AuthorDate: Sat Feb 25 10:18:40 2012 -0200 +Commit: Jonh Wendell +CommitDate: Sat Feb 25 10:18:40 2012 -0200 + + Fixed a typo + + gio/glib-compile-resources.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c75614ecedf7d990083c4f54871816d547a23a0c +Author: Arash Mousavi +AuthorDate: Sat Feb 25 15:35:17 2012 +0330 +Commit: Arash Mousavi +CommitDate: Sat Feb 25 15:35:17 2012 +0330 + + Updated Persian Translation + + po/fa.po | 5657 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3007 insertions(+), 2650 deletions(-) + +commit cb7d3552c3673f898fb677c1ae6fca1931f67a38 +Author: Chao-Hsiung Liao +AuthorDate: Sat Feb 25 10:44:50 2012 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Sat Feb 25 10:44:50 2012 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 333 + +++++++++++++++++++++++++++++++----------------------------- + po/zh_TW.po | 333 + +++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 344 insertions(+), 322 deletions(-) + +commit 47475dbe6ab981679cbc2931306973d2143694cd +Author: John Ralls +AuthorDate: Fri Feb 24 17:04:52 2012 -0800 +Commit: John Ralls +CommitDate: Fri Feb 24 17:04:52 2012 -0800 + + [Bug 529806] Cannot build in 64-bit Mac OS X due to libiconv + + glib/gconvert.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 462f7f5a4d7f5690e34f639afdd111c5c4119e26 +Author: Filippo Della Betta +AuthorDate: Thu Feb 16 10:04:50 2012 +0100 +Commit: Ryan Lortie +CommitDate: Fri Feb 24 16:21:45 2012 -0500 + + Added better support of G_STRFUNC for Visual Studio platform + + https://bugzilla.gnome.org/show_bug.cgi?id=670128 + + glib/gmacros.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit a75cac1b4c63f348f65e7045ab0eb6b66a2f55d8 +Author: Jonh Wendell +AuthorDate: Fri Feb 24 17:12:14 2012 -0200 +Commit: Jonh Wendell +CommitDate: Fri Feb 24 17:12:14 2012 -0200 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 6156 + +++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 3237 insertions(+), 2919 deletions(-) + +commit 21457abdccc06087ee4e20f8f0e4449b318f6723 +Author: Daiki Ueno +AuthorDate: Fri Feb 24 10:12:08 2012 +0900 +Commit: Colin Walters +CommitDate: Thu Feb 23 22:19:00 2012 -0500 + + Hide global variable for signal ID in gdbusproxy.c. + + Also a similar fix for gdbusserver.c. + + https://bugzilla.gnome.org/show_bug.cgi?id=670721 + + gio/gdbusproxy.c | 2 +- + gio/gdbusserver.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit eece6cb9c33dbbc30e6a71e09f699fe1ab6fdff3 +Author: Richard Hughes +AuthorDate: Thu Feb 23 10:34:46 2012 +0000 +Commit: Richard Hughes +CommitDate: Thu Feb 23 10:34:46 2012 +0000 + + Fix up 'Since:' for g_mapped_file_new_from_fd() + + It was introduced in 2.31.0, not 2.30.x + + glib/gmappedfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 98a70df48603c3c4fc63acb22a9bf6985bc0fa55 +Author: Dan Winship +AuthorDate: Wed Feb 22 11:38:43 2012 -0500 +Commit: Dan Winship +CommitDate: Wed Feb 22 11:38:43 2012 -0500 + + gthread-posix: fix order of arguments in g_thread_abort() message + + glib/gthread-posix.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 88182d375e13ae6519a288d5295220c83ca27e73 +Author: Dan Winship +AuthorDate: Wed Feb 22 08:12:52 2012 -0500 +Commit: Dan Winship +CommitDate: Wed Feb 22 11:36:08 2012 -0500 + + gasyncqueue: fix a 32bit overflow in g_async_queue_timed_pop + + also, add a test for g_async_queue_timed_pop() and + g_async_queue_timeout_pop() to tests/asyncqueue.c + + https://bugzilla.gnome.org/show_bug.cgi?id=669670 + + glib/gasyncqueue.c | 2 +- + glib/tests/asyncqueue.c | 35 +++++++++++++++++++++++++++++++++++ + 2 files changed, 36 insertions(+), 1 deletion(-) + +commit 9ff09f34cf0bc5fbc951490923880d82d94862d1 +Author: Rui Matos +AuthorDate: Tue Feb 21 16:42:43 2012 +0100 +Commit: Rui Matos +CommitDate: Wed Feb 22 12:17:38 2012 +0100 + + gvaluetransform: Fix an infinite loop with GFlagsValue sets with + the 0 value + + Transforming a GValue holding flags from a GFlagsValue set that + includes the 0 + value (no flag bits set) into a string would loop until exhausting + all the + available memory. + + https://bugzilla.gnome.org/show_bug.cgi?id=670557 + + gobject/gvaluetransform.c | 2 +- + gobject/tests/enums.c | 16 ++++++++++++++-- + 2 files changed, 15 insertions(+), 3 deletions(-) + +commit 9e5ff3d3ebba8bd7f3a871735ed35fe7b4e98d77 +Author: Rico Tzschichholz +AuthorDate: Tue Feb 21 14:19:37 2012 +0100 +Commit: Rico Tzschichholz +CommitDate: Tue Feb 21 14:19:37 2012 +0100 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 055229b1c589aa8b722eef2d622e1b2bde939961 +Author: Fran Diéguez +AuthorDate: Tue Feb 21 11:57:41 2012 +0100 +Commit: Fran Diéguez +CommitDate: Tue Feb 21 11:57:41 2012 +0100 + + Updated Galician translations + + po/gl.po | 140 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 76 insertions(+), 64 deletions(-) + +commit b80e169b146a31a1595ce6342f675cab6536f76a +Author: Ryan Lortie +AuthorDate: Tue Feb 21 01:37:09 2012 +0100 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:37:09 2012 +0100 + + mention g_application_quit() in the NEWS + + NEWS | 3 +++ + 1 file changed, 3 insertions(+) + +commit ed519758997ca0fa40575722816be3121f106357 +Author: Ryan Lortie +AuthorDate: Mon Feb 20 21:41:35 2012 +0100 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:20:39 2012 +0100 + + GApplication: add g_application_quit() + + A long requested feature; this quits the application immediately, + ignoring the hold count. + + https://bugzilla.gnome.org/show_bug.cgi?id=670485 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gapplication.c | 29 +++++++++++++++++++++++++++++ + gio/gapplication.h | 2 ++ + gio/gio.symbols | 1 + + 4 files changed, 33 insertions(+) + +commit 486c694af02c69b06484d0b87c89c2874422f4ff +Author: Ryan Lortie +AuthorDate: Tue Feb 21 01:12:25 2012 +0100 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:13:14 2012 +0100 + + Mention documentation fixes in NEWS + + NEWS | 2 ++ + 1 file changed, 2 insertions(+) + +commit 2ca6c475ea16d4e1a0a136bde1c20ba45c421a58 +Author: David King +AuthorDate: Sat Feb 18 11:56:09 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:55 2012 +0100 + + docs: Fix g_async_queue_timeout_pop_unlocked typo + + glib/gasyncqueue.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 912ac79041ed64b2df9be7e88bdb4323d3a6f20e +Author: David King +AuthorDate: Sat Feb 18 12:25:32 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Add some missing G_TOKEN_* descriptions + + glib/gscanner.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 708d4178ceb34586a630afc4597008cf5e9f3a12 +Author: David King +AuthorDate: Sun Feb 19 15:16:59 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix g_key_file_load_from_file error parameter + + glib/gkeyfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1965206be828c724ca79d1461134a4ac5adcb73f +Author: David King +AuthorDate: Sun Feb 19 15:19:40 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Ignore private network monitor headers + + docs/reference/gio/Makefile.am | 3 +++ + 1 file changed, 3 insertions(+) + +commit c5f8f6f8f4c19b8b735ab9ea9d25b192b4123187 +Author: David King +AuthorDate: Sun Feb 19 15:41:12 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix GTlsBackend typo GTyep → GType + + gio/gtlsbackend.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a290fff9a28a16086de8af7f5e1c789b2070a016 +Author: David King +AuthorDate: Sun Feb 19 15:51:09 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix GTlsDatabase typos + + gio/gioenums.h | 5 +++-- + gio/gtlsdatabase.c | 11 ++++++----- + 2 files changed, 9 insertions(+), 7 deletions(-) + +commit c490a75a18a5ef81821d94a939ac8108111207dc +Author: David King +AuthorDate: Sun Feb 19 16:09:35 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix GApplicationCommandLine typo + + gio/gapplication.c | 6 +++--- + gio/gapplicationcommandline.c | 4 ++-- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit 69ecc4b49676508fef4372dfc9bf69f1b500125f +Author: David King +AuthorDate: Sun Feb 19 16:11:23 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix define typos in GApplication + + gio/gapplication.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit fba11825a325351d9470765caf8e05c0425c1290 +Author: David King +AuthorDate: Sun Feb 19 16:13:59 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix typo in GActionGroup + + gio/gactiongroup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6129a1c2d5e654454befdc2734f690bdce42ef9d +Author: David King +AuthorDate: Sun Feb 19 16:14:54 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix GActionGroup exporter typo + + gio/gactiongroupexporter.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 87c76bdbb6e64484959892909b9a411fe7073a59 +Author: David King +AuthorDate: Sun Feb 19 16:18:37 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Remove some old GMenu documentation + + gio/gapplication.c | 6 ++---- + gio/gmenu.c | 3 --- + 2 files changed, 2 insertions(+), 7 deletions(-) + +commit 83392caa727a80bcd9334ac36f41ef4301559a43 +Author: David King +AuthorDate: Sun Feb 19 16:25:07 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix typo GAsyncReady → GAsyncResult + + Also GSimpleAsyncReady → GSimpleAsyncResult. + + gio/gasynchelper.c | 2 +- + gio/gmount.c | 4 ++-- + gio/gvolume.c | 4 ++-- + 3 files changed, 5 insertions(+), 5 deletions(-) + +commit 37fd4d86ab8f3f27caf8817c7a1100ff364dacd1 +Author: David King +AuthorDate: Sun Feb 19 16:26:52 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Remove mention of GFileAttributeValue + + Instead mention GFileAttributeInfo. + + gio/gfileattribute.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 8ee2cadd7f51f6e1632b8bd8235b9c4c97ecee9d +Author: David King +AuthorDate: Sun Feb 19 16:30:10 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix some GDBusConnection typos + + gio/gdbusconnection.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 11154ff5c13260e257abd240b0353d78e213d0fa +Author: David King +AuthorDate: Sun Feb 19 16:32:08 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix typo GConvertFlags → GConverterFlags + + gio/gconverter.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 59e1c77b8d46ca083dec98d29a2ea7521cee651d +Author: David King +AuthorDate: Sun Feb 19 16:34:27 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix typo export → unexport + + gio/gdbusinterfaceskeleton.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 13bc546657b111a4dd61891e6329cb99a2137320 +Author: David King +AuthorDate: Sun Feb 19 16:35:10 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix GDBusProxy typo name → g-name + + gio/gdbusproxy.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ae3ae3699bc153a9fbd3ae0c788f40c8c13fffbd +Author: David King +AuthorDate: Sun Feb 19 16:36:28 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix typo in GFileInputStream + + g_seekable_stream_can_seek() → g_seekable_can_seek(). + + gio/gfileinputstream.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e70b72f5a10c22be137d3173e9fbe2ae11c82f85 +Author: David King +AuthorDate: Sun Feb 19 16:37:55 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix method names in GMenu and GMenuModel + + gio/gmenu.c | 11 +++++------ + gio/gmenumodel.c | 6 +++--- + 2 files changed, 8 insertions(+), 9 deletions(-) + +commit 43a3a5edfcb43d0c659047637cb5f0af762201d1 +Author: David King +AuthorDate: Sun Feb 19 16:39:15 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix GNetworkAddress typo + + g_network_address_parse_host() → g_network_address_parse(). + + gio/gnetworkaddress.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4653c6074f74234f230e8a8b1d1eb94fe05c48f0 +Author: David King +AuthorDate: Sun Feb 19 16:40:06 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Add documentation for supports_hostname in GProxy + + Also fix a typo has → as. + + gio/gproxy.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 5d64eb4cb8e682175875343eef9de0f5798bf09d +Author: David King +AuthorDate: Sun Feb 19 16:42:55 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Correct GSocketClient::event link + + gio/gsocketclient.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2616b6eb8e04e63ad8d7151fbf2805ab5d2be9b1 +Author: David King +AuthorDate: Sun Feb 19 16:46:59 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix some typos in GVolume + + gio/gvolume.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 07dc3db69a9c32637e9834ad62b32df3bdcfc4cb +Author: David King +AuthorDate: Sun Feb 19 16:48:20 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Fix GFileAttribute link in GFileInfo + + gio/gfileinfo.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 8c8657ac34fde32ebe49020de415b56140c427ce +Author: David King +AuthorDate: Sun Feb 19 16:53:30 2012 +0000 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:54 2012 +0100 + + docs: Correct GUnixMount → GUnixMountEntry + + gio/gmount.c | 2 +- + gio/gunixmounts.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 31936039b0494201af3d6c0af3df14ad6bd1f8db +Author: Ryan Lortie +AuthorDate: Tue Feb 21 00:31:14 2012 +0100 +Commit: Ryan Lortie +CommitDate: Tue Feb 21 01:10:53 2012 +0100 + + GApplication: disable a broken test + + This test made some invalid assumptions that are no longer true. + Disable it until we can figure out a better way. + + gio/tests/gapplication.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +commit 726257ab9721acd0699e54194e20e7f53e5a9688 +Author: Dan Winship +AuthorDate: Mon Feb 13 17:20:04 2012 -0500 +Commit: Dan Winship +CommitDate: Mon Feb 20 18:29:51 2012 -0500 + + gsocket: add g_socket_condition_timed_wait() + + https://bugzilla.gnome.org/show_bug.cgi?id=667755 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 1 + + gio/gsocket.c | 91 + +++++++++++++++++++++++++++++++------ + gio/gsocket.h | 5 ++ + gio/tests/socket.c | 53 ++++++++++++++++++++- + 5 files changed, 136 insertions(+), 15 deletions(-) + +commit 823f553e36dc3421dd202631962f25ca82298c44 +Author: Matthias Clasen +AuthorDate: Tue Feb 21 00:26:06 2012 +0100 +Commit: Matthias Clasen +CommitDate: Tue Feb 21 00:26:48 2012 +0100 + + 2.31.18 + + NEWS | 42 ++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 43 insertions(+), 1 deletion(-) + +commit dbc01d30901204f676ce6225c5f1627a47924c17 +Author: Matthias Clasen +AuthorDate: Tue Feb 21 00:25:31 2012 +0100 +Commit: Matthias Clasen +CommitDate: Tue Feb 21 00:26:19 2012 +0100 + + Don't rely on /bin/sh + + Another Fedora UsrMove victim ! + + glib/tests/utils.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3808a181db2079dc0975811296fa86268de90641 +Author: Ask H. Larsen +AuthorDate: Mon Feb 20 23:25:53 2012 +0100 +Commit: Kenneth Nielsen +CommitDate: Mon Feb 20 23:25:53 2012 +0100 + + Updated Danish translation + + po/da.po | 6117 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 3203 insertions(+), 2914 deletions(-) + +commit 7630bff9ea720cae187f8c9eb065239f1c36ba11 +Author: Luca Ferretti +AuthorDate: Mon Feb 20 15:14:18 2012 +0100 +Commit: Luca Ferretti +CommitDate: Mon Feb 20 15:14:41 2012 +0100 + + l10n: Updated Italian translation + + po/it.po | 6509 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 3454 insertions(+), 3055 deletions(-) + +commit 0efd808c964f38d9517cda9ad0d749eadb6e1862 +Author: Kjartan Maraas +AuthorDate: Sun Feb 19 15:26:13 2012 +0100 +Commit: Kjartan Maraas +CommitDate: Sun Feb 19 15:26:13 2012 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 179 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 95 insertions(+), 84 deletions(-) + +commit 17e7c85d8f2f87a50ee78740a1d44cbc6be097c2 +Author: David King +AuthorDate: Sat Feb 18 11:19:53 2012 +0000 +Commit: David King +CommitDate: Sat Feb 18 11:20:27 2012 +0000 + + docs: Fix g_drive_get_identifier() typo + + gio/gdrive.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b50863aafac23b2d19ae69dd9a6d243a15075dc5 +Author: David King +AuthorDate: Sat Feb 18 11:10:00 2012 +0000 +Commit: David King +CommitDate: Sat Feb 18 11:11:52 2012 +0000 + + docs: Add GIOModuleScope and GIOModuleScopeFlags + + Fix some typos and add GIOModuleScope and GIOModuleScopeFlags to + gio-sections.txt. + + docs/reference/gio/gio-sections.txt | 2 ++ + gio/gioenums.h | 4 ++-- + gio/giomodule.c | 2 +- + 3 files changed, 5 insertions(+), 3 deletions(-) + +commit 4e6c2b88b9d071d5aedfdafb2b55533d46c5f266 +Author: David King +AuthorDate: Sat Feb 18 09:24:42 2012 +0000 +Commit: David King +CommitDate: Sat Feb 18 09:25:36 2012 +0000 + + docs: Typo fix GInitiable → GInitable + + gio/ginitable.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit c29d7d7f53646a07e42e6edbc777bac90bcdf1d2 +Author: David King +AuthorDate: Sat Feb 18 09:20:02 2012 +0000 +Commit: David King +CommitDate: Sat Feb 18 09:22:31 2012 +0000 + + docs: Typo fixes for GMount + + gio/gmount.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d0a310de96b97669e1341fbe1246dbae869f4a5c +Author: Yaron Shahrabani +AuthorDate: Sat Feb 18 11:07:12 2012 +0200 +Commit: Yaron Shahrabani +CommitDate: Sat Feb 18 11:07:12 2012 +0200 + + Updated Hebrew translation. + + po/he.po | 985 + +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 614 insertions(+), 371 deletions(-) + +commit 50efbaf063f77f4e273f87ebf4ab01a1c507e97f +Author: Peter Kjellerstedt +AuthorDate: Thu Feb 16 12:17:32 2012 +0100 +Commit: Colin Walters +CommitDate: Fri Feb 17 11:59:30 2012 -0500 + + Do not fail unit test due to gdb abbreviating strings + + gdb by default will only print strings up to 200 characters. After + that + it abbreviates them. This affects the run-assert-msg-test.sh script if + the path to the glib installation is too long (in our case it was 133 + characters, 132 would still have worked...) + + By having gdb execute "set print elements 0" before printing the + assert + string, the limit on maximum number of characters to print is set to + unlimited. + + Signed-off-by: Peter Kjellerstedt + + https://bugzilla.gnome.org/show_bug.cgi?id=670218 + + tests/run-assert-msg-test.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 29f3e40e4e8bb382f405ecd1769d37bfd536e24b +Author: David King +AuthorDate: Fri Feb 17 16:09:59 2012 +0000 +Commit: David King +CommitDate: Fri Feb 17 16:12:27 2012 +0000 + + docs: Fix a typo in the GSeekable documentation + + gio/gseekable.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 52f34311b908e661f257cab70d60d89d37a2da75 +Author: Matthias Clasen +AuthorDate: Thu Feb 16 13:33:44 2012 -0500 +Commit: Matthias Clasen +CommitDate: Thu Feb 16 13:33:44 2012 -0500 + + Docs: fix reference to nonexisting function + + The regex syntax docs referred to g_regex_fetch() when + g_match_info_fetch() was meant. + + https://bugzilla.gnome.org/show_bug.cgi?id=669865 + + docs/reference/glib/regex-syntax.sgml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 275731e20039e763748608072e0e2a98b7d035ed +Author: Ravi Sankar Guntur +AuthorDate: Tue Feb 14 22:05:33 2012 +0530 +Commit: Colin Walters +CommitDate: Thu Feb 16 10:19:23 2012 -0500 + + gio: fix memory leak in g_buffered_output_stream_write_async() + + https://bugzilla.gnome.org/show_bug.cgi?id=670085 + + Signed-off-by: Ravi Sankar Guntur + + gio/gbufferedoutputstream.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit eafb108cafe257645fc0d16a16ac2764afed6d5a +Author: Christian Persch +AuthorDate: Wed Feb 15 15:25:47 2012 +0100 +Commit: Christian Persch +CommitDate: Wed Feb 15 17:46:31 2012 +0100 + + gbytes: Add G_BEGIN/END_DECL guards + + Bug #670138. + + glib/gbytes.h | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 26f238e85d751aded81602f68cd69bf73cfc8350 +Author: Christian Persch +AuthorDate: Sun Feb 5 16:00:31 2012 +0100 +Commit: Christian Persch +CommitDate: Wed Feb 15 17:45:44 2012 +0100 + + Plug a mem leak in g_environ_unsetenv + + And clarify the memory allocation requirement of the string arrays + passed to + g_environ_{,un}setenv(). + + ==9458== 10 bytes in 1 blocks are definitely lost in loss record 16 + of 39 + ==9458== at 0x402AD89: malloc (vg_replace_malloc.c:236) + ==9458== by 0x4221A1F: vasprintf (vasprintf.c:78) + ==9458== by 0x40C6065: g_vasprintf (gprintf.c:314) + ==9458== by 0x409D894: g_strdup_vprintf (gstrfuncs.c:509) + ==9458== by 0x409D8C9: g_strdup_printf (gstrfuncs.c:535) + ==9458== by 0x40672E9: g_environ_setenv (genviron.c:156) + ==9458== by 0x80490E7: test_environ_array (environment.c:78) + ==9458== by 0x40A3DB5: test_case_run (gtestutils.c:1662) + ==9458== by 0x40A40B2: g_test_run_suite_internal + (gtestutils.c:1715) + ==9458== by 0x40A417C: g_test_run_suite_internal + (gtestutils.c:1726) + ==9458== by 0x40A42F9: g_test_run_suite (gtestutils.c:1771) + ==9458== by 0x40A3441: g_test_run (gtestutils.c:1319) + ==9458== by 0x80493F1: main (environment.c:108) + + Bug #669412. + + glib/genviron.c | 63 + +++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 39 insertions(+), 24 deletions(-) + +commit ca05902a5883020add334e542a63d7f9381a3117 +Author: Dan Winship +AuthorDate: Fri Feb 10 08:49:17 2012 -0500 +Commit: Dan Winship +CommitDate: Wed Feb 15 09:54:38 2012 -0500 + + Add G_GNUC_BEGIN/END_IGNORE_DEPRECATIONS + + Add new macros to disable -Wdeprecated-declarations around a piece of + code, using the C99 (and GNU89) _Pragma() operator. Replace the + existing use of #pragma for this in gio, and suppress the warnings in + gvaluearray.c as well. + + https://bugzilla.gnome.org/show_bug.cgi?id=669671 + + docs/reference/glib/glib-sections.txt | 2 ++ + gio/gdesktopappinfo.c | 7 ++++--- + gio/giomodule.c | 5 ++--- + glib/docs.c | 33 + +++++++++++++++++++++++++++++++++ + glib/gmacros.h | 11 +++++++++++ + gobject/gvaluearray.c | 4 ++++ + 6 files changed, 56 insertions(+), 6 deletions(-) + +commit ab59739e1177d463fc7577def059deb0179662cc +Author: Dan Winship +AuthorDate: Fri Feb 10 08:24:28 2012 -0500 +Commit: Dan Winship +CommitDate: Wed Feb 15 09:54:38 2012 -0500 + + gobject: Use a destructor rather than g_atexit() for refcount + debugging + + https://bugzilla.gnome.org/show_bug.cgi?id=669671 + + gobject/gobject.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit d4992b3d10f64918017617cda0fdaba4d132bf99 +Author: Murray Cumming +AuthorDate: Wed Feb 15 11:53:03 2012 +0100 +Commit: Murray Cumming +CommitDate: Wed Feb 15 11:53:03 2012 +0100 + + g_application_activate(): Fix typo in docs. + + gio/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d240b883155183fcb9723766b4e4b4b5a0db57ff +Author: Giovanni Campagna +AuthorDate: Mon Feb 13 16:42:44 2012 +0100 +Commit: Giovanni Campagna +CommitDate: Tue Feb 14 19:05:08 2012 +0100 + + GKeyFile: fix annotation of g_key_file_load_from_data + + (array) without (element-type) means "array of the same type as + the C type", so gchar* with (array) is interpreted as an array of + strings. Since GKeyFiles must be UTF-8 encoded anyway, just + annotate it as a string. + + https://bugzilla.gnome.org/show_bug.cgi?id=658484 + + glib/gkeyfile.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5b8a6900d3c0e757044b7f5c6e9eb54f9cb18154 +Author: Giovanni Campagna +AuthorDate: Mon Feb 13 16:41:20 2012 +0100 +Commit: Giovanni Campagna +CommitDate: Tue Feb 14 19:04:07 2012 +0100 + + GDataInputStream: don't segfault on async line reads + + If an async line read fails, it returns NULL. In that case, we + must return NULL before validating the line, or we segfault. + + https://bugzilla.gnome.org/show_bug.cgi?id=658484 + + gio/gdatainputstream.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 96671ce815e061a7ff472adbe89ac381443c619a +Author: Kasia Bondarava +AuthorDate: Tue Feb 14 18:28:32 2012 +0300 +Commit: Ihar Hrachyshka +CommitDate: Tue Feb 14 18:28:32 2012 +0300 + + Updated Belarusian translation. + + po/be.po | 910 + ++++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 575 insertions(+), 335 deletions(-) + +commit f2eed2fd2521cd856b0fcc91187a1da09f386768 +Author: Мирослав Николић + +AuthorDate: Tue Feb 14 11:01:33 2012 +0100 +Commit: Мирослав Николић + +CommitDate: Tue Feb 14 11:02:27 2012 +0100 + + Updated Serbian translation + + po/sr.po | 229 + +++++++++++++++++++++------------------------------------ + po/sr@latin.po | 229 + +++++++++++++++++++++------------------------------------ + 2 files changed, 170 insertions(+), 288 deletions(-) + +commit dd553a2ba32cd8523e3097d34228c21b96a3f10c +Author: Dan Winship +AuthorDate: Wed Feb 8 08:26:36 2012 -0500 +Commit: Dan Winship +CommitDate: Mon Feb 13 09:09:08 2012 -0500 + + gasyncqueue: deprecate GTimeVal-based methods, add relative-delay ones + + https://bugzilla.gnome.org/show_bug.cgi?id=669670 + + docs/reference/glib/glib-sections.txt | 8 ++- + glib/gasyncqueue.c | 105 + ++++++++++++++++++++++++++++++---- + glib/gasyncqueue.h | 15 +++-- + glib/glib.symbols | 2 + + glib/gthreadpool.c | 16 ++---- + 5 files changed, 117 insertions(+), 29 deletions(-) + +commit 99af65a079e4d7c0c20960a6e68f83b3c56f6f20 +Author: Мирослав Николић + +AuthorDate: Sun Feb 12 20:12:30 2012 +0100 +Commit: Мирослав Николић + +CommitDate: Sun Feb 12 20:13:40 2012 +0100 + + Updated Serbian translation + + po/sr.po | 6162 + ++++++++++++++++++++++++++++++-------------------------- + po/sr@latin.po | 6160 + +++++++++++++++++++++++++++++-------------------------- + 2 files changed, 6541 insertions(+), 5781 deletions(-) + +commit 3d34b9bbc7322256d8fb6a6081c503e321d907db +Author: Daniel Mustieles +AuthorDate: Sun Feb 12 13:21:17 2012 +0100 +Commit: Daniel Mustieles +CommitDate: Sun Feb 12 13:21:17 2012 +0100 + + Updated Spanish translation + + po/es.po | 279 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 151 insertions(+), 128 deletions(-) + +commit 967f3f83a7311c7ee9584b2f2bc80413142b096f +Author: Matthias Clasen +AuthorDate: Fri Feb 10 22:13:36 2012 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 10 22:21:42 2012 -0500 + + Add a few more missing functions to the docs + + docs/reference/gio/gio-sections.txt | 1 + + docs/reference/gobject/gobject-sections.txt | 3 +++ + 2 files changed, 4 insertions(+) + +commit 5278d1f6af5e053ec1fe75bfde6c86ebcb06afba +Author: Matthias Clasen +AuthorDate: Fri Feb 10 22:08:47 2012 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 10 22:08:47 2012 -0500 + + Add g_settings_new_full to the docs + + docs/reference/gio/gio-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit cd3aebc96e59ef558ce0a4d84629da0a97fe24eb +Author: Matthias Clasen +AuthorDate: Fri Feb 10 21:10:58 2012 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 10 21:10:58 2012 -0500 + + Add g_test_undefined to the docs + + docs/reference/glib/glib-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit 8cb48f644d66fef98429d2adbf298d3225a25fef +Author: Matthias Clasen +AuthorDate: Fri Feb 10 21:09:39 2012 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 10 21:09:39 2012 -0500 + + Fix a parameter name mismatch + + gtk-doc gets unhappy if parameters aren't named the same in + headers, sources and doc comments. + + glib/ghash.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6293105593e68165590c66bdd40c0df7f822b1e1 +Author: Matthias Clasen +AuthorDate: Fri Feb 10 18:06:10 2012 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 10 18:06:10 2012 -0500 + + Drop menu markup docs + + This does not exist anymore. + + docs/reference/gio/gio-docs.xml | 1 - + 1 file changed, 1 deletion(-) + +commit 7e657d1e5c4ea733531da2da87f6435ffaa3deac +Author: Javier Jardón +AuthorDate: Fri Feb 10 20:09:20 2012 +0000 +Commit: Javier Jardón +CommitDate: Fri Feb 10 20:09:20 2012 +0000 + + docs: Fix some typos in gwin32inputstream + + docs/reference/gio/gio-sections.txt | 2 +- + gio/gwin32inputstream.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 704a2ca02de0430786114e7d9bf7aa772c40b934 +Author: Marc-André Lureau +AuthorDate: Fri Feb 10 02:02:29 2012 +0100 +Commit: Marc-André Lureau +CommitDate: Fri Feb 10 19:07:29 2012 +0100 + + socket/win32: flush pending read before signaling HUP + + Unix and Windows gio GSocket behaves differently when the socket is + closed by the peer. On Unix, the client receives pending data before + receiving HUP. But on Windows, the HUP may come before, resulting in + unreliable and racy code. We should have same behaviour on all + platforms. + + According to MSDN documentation: "an application should check for + remaining data upon receipt of FD_CLOSE to avoid any possibility of + losing data." + + https://bugzilla.gnome.org/show_bug.cgi?id=669810 + + gio/gsocket.c | 22 ++++++++++++++++++++-- + 1 file changed, 20 insertions(+), 2 deletions(-) + +commit 6ca817c3f2c14b39792b381466067f71e601f895 +Author: Marc-André Lureau +AuthorDate: Fri Feb 10 14:52:33 2012 +0100 +Commit: Marc-André Lureau +CommitDate: Fri Feb 10 19:07:29 2012 +0100 + + gio/tests: add /socket/close_graceful test + + Add a test to check that remaining data is read before the close + event is received. + + https://bugzilla.gnome.org/show_bug.cgi?id=669810 + + gio/tests/socket.c | 85 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 85 insertions(+) + +commit 6d3b31a533d74b727bca5ac720a81eacb8aee31e +Author: Christophe Fergeau +AuthorDate: Thu Feb 9 17:59:55 2012 +0100 +Commit: Christophe Fergeau +CommitDate: Fri Feb 10 10:03:38 2012 +0100 + + Fix g_hash_table_foreach crash with NULL hash table + + When G_DISABLE_ASSERT is not defined, g_hash_table_foreach and + g_hash_table_find dereferences the hash table argument before + checking if it's NULL. This causes a crash when one of this function + is mistakenly called with a NULL argument instead of returning + with a warning through g_return_if_fail. + + glib/ghash.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +commit b17b135d9f4fa5652d64decf1d1cd0cad7de21f0 +Author: Chun-wei Fan +AuthorDate: Fri Feb 10 08:57:21 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Feb 10 08:57:21 2012 +0800 + + Dist gio/gconstructor_as_data.h + + This will avoid a dependency on a PERL installation for Visual Studio + builds. + + Checked with mclasen in + https://bugzilla.gnome.org/show_bug.cgi?id=669538#c2 + + gio/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit d4e3ae990c55c3673c4d18870173d78c38dd6494 +Author: Chun-wei Fan +AuthorDate: Tue Feb 7 14:41:24 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Feb 10 08:53:52 2012 +0800 + + Bug 669538-glib-compile-resources.c: Include io.h on Windows + + This is needed for close() on Windows (Visual C++ specifically) + so that + no C4013 (aka Implicit declaration of ...) errors/warnings will + be emitted. + + gio/glib-compile-resources.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 52d046009607e35b4665fc94aa392874d9aaacb8 +Author: Richard Hughes +AuthorDate: Thu Feb 9 16:22:36 2012 +0000 +Commit: Richard Hughes +CommitDate: Thu Feb 9 17:24:43 2012 +0000 + + Allow multiple --sourcedir options to glib-compile-resources + + gio/glib-compile-resources.c | 50 + +++++++++++++++++++++++++++++++++++++------- + 1 file changed, 42 insertions(+), 8 deletions(-) + +commit 40e9192d7261ff9eec9e6ec4bd7029c08df80004 +Author: Ryan Lortie +AuthorDate: Thu Feb 9 12:15:49 2012 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 9 12:15:49 2012 -0500 + + GApplication: put non-unique apps on D-Bus + + For a number of reasons it might be useful to register the object + paths + associated with a non-unique application so that the application + can at + least field requests to its unique D-Bus name. + + https://bugzilla.gnome.org/show_bug.cgi?id=647986 + + gio/gapplication.c | 21 +++++++++------------ + gio/gapplicationimpl-dbus.c | 22 +++++++++++++++++++++- + 2 files changed, 30 insertions(+), 13 deletions(-) + +commit db38923c94bb764f14ac4b7bff6e71cf6aba343f +Author: David King +AuthorDate: Tue Feb 7 09:02:51 2012 +0000 +Commit: David King +CommitDate: Thu Feb 9 11:59:15 2012 +0000 + + docs: Fix gdbus-codegen example XML + + Without the surrounding tags, gdbus-codegen does not + generate any + implementation for the interface described in the introspection XML. + + https://bugzilla.gnome.org/show_bug.cgi?id=669544 + + docs/reference/gio/gdbus-codegen.xml | 30 ++++++++++++++++-------------- + 1 file changed, 16 insertions(+), 14 deletions(-) + +commit daf78764e5e142ea0c787e5f3f22e5bee4417883 +Author: Dan Winship +AuthorDate: Fri Feb 3 12:14:06 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Feb 9 06:48:12 2012 -0500 + + gthread-win32: update for g_get_monotonic_time() changes + + g_cond_wait_until() was calling GetSystemTimeAsFileTime() to get the + current time, which is no longer what g_get_monotonic_time() returns. + + https://bugzilla.gnome.org/show_bug.cgi?id=669329 + + glib/gthread-win32.c | 10 +--------- + 1 file changed, 1 insertion(+), 9 deletions(-) + +commit ca5ed93fde448943d7ab62b057a9b16e6ed85621 +Author: Dan Winship +AuthorDate: Fri Feb 3 11:45:51 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Feb 9 06:48:12 2012 -0500 + + glocalfile: fix error code when opening a directory on win32 + + g_file_read() was returning G_IO_ERROR_IS_DIRECTORY when you tried to + open a directory on unix, but G_IO_ERROR_PERMISSION_DENIED on win32. + Fix that, and add a test to tests/file.c + + Pointed out on IRC by Paweł Forysiuk. + + https://bugzilla.gnome.org/show_bug.cgi?id=669330 + + gio/glocalfile.c | 14 ++++++++++++++ + gio/tests/file.c | 5 +++++ + 2 files changed, 19 insertions(+) + +commit a067df5d720096a62736d26c9e971363c0843d91 +Author: David Zeuthen +AuthorDate: Wed Feb 8 12:46:04 2012 -0500 +Commit: David Zeuthen +CommitDate: Wed Feb 8 12:49:22 2012 -0500 + + GDBusProxy: Add G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES flag + + This is useful when using certain D-Bus services where the + PropertiesChanged signal does not include the property value such as + e.g. various systemd mechanisms, see e.g. + + https://bugs.freedesktop.org/show_bug.cgi?id=37632 + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 108 + +++++++++++++++++++++++++++++++++++++++--- + gio/gioenums.h | 4 +- + gio/tests/gdbus-proxy.c | 47 +++++++++++++++++- + gio/tests/gdbus-testserver.py | 6 +-- + 4 files changed, 153 insertions(+), 12 deletions(-) + +commit 1370804f2b1cbb39875bb6a8a53f5bc5318092f4 +Author: Jesse van den Kieboom +AuthorDate: Wed Feb 8 17:13:34 2012 +0100 +Commit: Jesse van den Kieboom +CommitDate: Wed Feb 8 17:43:53 2012 +0100 + + Retrieve cwd and environ in local GApplicationCommandLine + + https://bugzilla.gnome.org/show_bug.cgi?id=669689 + + gio/gapplicationcommandline.c | 38 +++++++++++++++++++++++++++----------- + 1 file changed, 27 insertions(+), 11 deletions(-) + +commit 90dbaca92477aeb6e1facac5dd8172e0d5319d4e +Author: Ravi Sankar Guntur +AuthorDate: Mon Feb 6 23:10:34 2012 +0530 +Commit: Colin Walters +CommitDate: Wed Feb 8 09:36:12 2012 -0500 + + glib/tests: mainloop - fix a mem leak. + + https://bugzilla.gnome.org/show_bug.cgi?id=669372 + + Signed-off-by: Ravi Sankar Guntur + + glib/tests/mainloop.c | 23 ++++++++++++++++++++++- + 1 file changed, 22 insertions(+), 1 deletion(-) + +commit bd79c00537756ca24423e51f11cae008111ab7d2 +Author: Ravi Sankar Guntur +AuthorDate: Sat Feb 4 23:42:41 2012 +0530 +Commit: Colin Walters +CommitDate: Wed Feb 8 09:23:54 2012 -0500 + + glib/tests: fix memory leak + + https://bugzilla.gnome.org/show_bug.cgi?id=669372 + + Signed-off-by: Ravi Sankar Guntur + + glib/tests/gdatetime.c | 1 + + glib/tests/hash.c | 1 + + 2 files changed, 2 insertions(+) + +commit 46affb0cd8befd5c6c13583570434648ee1e1f13 +Author: Dan Winship +AuthorDate: Wed Feb 8 08:39:42 2012 -0500 +Commit: Dan Winship +CommitDate: Wed Feb 8 08:51:34 2012 -0500 + + gio: update .gitignore + + gio/.gitignore | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +commit a8f516f61e42de970c78a2905a309a7c17eb02c2 +Author: Dan Winship +AuthorDate: Wed Feb 8 08:46:03 2012 -0500 +Commit: Dan Winship +CommitDate: Wed Feb 8 08:46:03 2012 -0500 + + glib/tests/option-context: remove unused tests + + These tests were written, but then never used since it was decided to + add g_warnings() to goption.c in the cases they were supposed to be + testing. So anyway, just remove them. + + glib/tests/option-context.c | 68 + --------------------------------------------- + 1 file changed, 68 deletions(-) + +commit 71c3ba28a8d9e117efb0446db37d69210820266f +Author: Chun-wei Fan +AuthorDate: Wed Feb 8 20:41:13 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Feb 8 20:41:13 2012 +0800 + + config.h.win32.in: Add note on if_nametoindex + + This explains the current disabling of HAVE_IF_NAMETOINDEX as we are + still supporting Windows XP. This is expected to change when + the patch + for XP support for if_nametoindex in accepted into master. + + config.h.win32.in | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 95a2c885d749b6a14aa3db04bf5ee46ca91fc915 +Author: Chun-wei Fan +AuthorDate: Wed Feb 8 19:52:55 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Feb 8 19:52:55 2012 +0800 + + config.h.win32.in: Updates + + Make this more like the config.h.in template + + config.h.win32.in | 21 ++++++++++++--------- + 1 file changed, 12 insertions(+), 9 deletions(-) + +commit af99ccc0d663b759b7edfaf744bcb657853280c2 +Author: Chun-wei Fan +AuthorDate: Wed Feb 8 15:09:13 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Feb 8 15:09:13 2012 +0800 + + Update VS2010 property sheet + + Should be $(CopyDir) not $(OutDir) here for VS2010. Oops :| + + build/win32/vs10/glib.props | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bbda744c0e8d5aa3c1b5476c5083ccfd51b02a7b +Author: Chun-wei Fan +AuthorDate: Wed Feb 8 14:54:38 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Feb 8 14:54:38 2012 +0800 + + Update VS property sheets + + ...To reflect the correct GIO headers to install + + build/win32/vs10/glib.props | 4 ++-- + build/win32/vs9/glib.vsprops | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit f049262a6105ecad71e5515300cbb0239800b10d +Author: Dan Winship +AuthorDate: Tue Feb 7 10:54:22 2012 -0500 +Commit: Dan Winship +CommitDate: Tue Feb 7 13:32:22 2012 -0500 + + glib-mkenums: fix handling of forward enum declarations + + Given + + typedef enum MyFoo MyFoo; + + glib-mkenums would get confused, not notice the ";", and then keep + skipping lines until it found one that started with a "{", possibly + even going into the next file. + + Fix it to just ignore those lines instead (and also, to error out if + it hits eof while parsing an enum). + + https://bugzilla.gnome.org/show_bug.cgi?id=669595 + + gobject/glib-mkenums.in | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 808346c6abd1af04221308a1ef3abe98b7f062f4 +Author: Javier Jardón +AuthorDate: Tue Feb 7 15:37:26 2012 +0100 +Commit: Javier Jardón +CommitDate: Tue Feb 7 16:06:04 2012 +0100 + + docs: Add win32 gio specific api to the docs + + Reported by Lethalman on IRC + + docs/reference/gio/gio-docs.xml | 2 ++ + docs/reference/gio/gio-sections.txt | 42 + +++++++++++++++++++++++++++++++++++++ + 2 files changed, 44 insertions(+) + +commit 46e2df316dd4f23b20e2ed2b300cc294336c8dac +Author: Chun-wei Fan +AuthorDate: Tue Feb 7 17:05:22 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Feb 7 17:05:22 2012 +0800 + + Add Visual C++ 2010 projects to compile GResource tools + + Added projects to compile the glib-compile-resources and + gresource(-tool) + utility programs during the Visual C++ 2010 build process, "install" + the resulting binaries upon successful compilation, and dist the new + .vcxproj and .vcxproj.filters files. + + Also updated the property sheet and "install" project to make sure + the new + .exe's are indeed "installed" and removed from the "install" + project the + dependency on the testglib project as testglib is not an exhausive + test on + GLib and people might want to make that project compile different test + programs as they might need. + + Just wondering: I have updated the property sheet to create the + gconstructor_as_data.h header for glib-compile-resources, but is + it better + to dist that generated header instead as the VS 2008/2010 projects + will + depend on a working installation of PERL on Windows? + + build/win32/vs10/Makefile.am | 4 + + build/win32/vs10/glib-compile-resources.vcxproj | 177 + +++++++++++++++++++++ + .../vs10/glib-compile-resources.vcxproj.filters | 17 ++ + build/win32/vs10/glib.props | 10 ++ + build/win32/vs10/glib.sln | 38 ++++- + build/win32/vs10/gresource.vcxproj | 176 + ++++++++++++++++++++ + build/win32/vs10/gresource.vcxproj.filters | 14 ++ + build/win32/vs10/install.vcxproj | 12 +- + 8 files changed, 443 insertions(+), 5 deletions(-) + +commit 2b400d853e084dc7fe512ea6a56510e64cba7846 +Author: Chun-wei Fan +AuthorDate: Tue Feb 7 16:31:53 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Feb 7 16:31:53 2012 +0800 + + Update Visual C++ 2008 projects + + Make the "install" project depend on the glib-compile-resources + gresource + projects so that these tools will be indeed installed. Missed that + in my + last commit-oops. + + Also make the "install" project not to depend on the testglib + project as: + -the test program in the project is not an exhausive test of the GLib + libraries + -One may want to use the project to compile different test program(s), + so + it might be better to keep the project but not "install" the + resulting + .exe + + build/win32/vs9/glib.sln | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit d858cd30478c0d331e1dc4164e39237de6f52f7f +Author: Chun-wei Fan +AuthorDate: Tue Feb 7 14:37:57 2012 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Feb 7 14:37:57 2012 +0800 + + Add Visual C++ 2008 projects for GResource tools + + Add projects to build the glib-compile-resources and gresource(-tool) + utilities, and "install" these tools upon successful compilation, + and dist + the new projects. + + One piece of note: will it be better to dist gconstructor_as_data.h + instead + of generating it in the VS build process (I generated it in the + property + sheet update in this commit)? + + Visual C++ 2010 projects will follow shortly. + + build/win32/vs9/Makefile.am | 2 + + build/win32/vs9/glib-compile-resources.vcproj | 156 + ++++++++++++++++++++++++++ + build/win32/vs9/glib.sln | 46 ++++++++ + build/win32/vs9/glib.vsprops | 6 + + build/win32/vs9/gresource.vcproj | 155 + +++++++++++++++++++++++++ + 5 files changed, 365 insertions(+) + +commit 867f554ea53bb4e7c975a919e245d4a02d6f42fe +Author: Christian Persch +AuthorDate: Mon Feb 6 22:33:19 2012 +0100 +Commit: Christian Persch +CommitDate: Mon Feb 6 22:33:19 2012 +0100 + + docs: Fix typo + + docs/reference/gio/glib-compile-resources.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1faed130dc227f983f42f23df2a242bd004c4ac8 +Author: Giovanni Campagna +AuthorDate: Thu Nov 17 00:52:59 2011 +0100 +Commit: Giovanni Campagna +CommitDate: Mon Feb 6 17:26:30 2012 +0100 + + gtimezone: consider a leading : in TZ environment variable + + When set to represent a zoneinfo file, TZ may start with :, therefore + glib needs to check it and ignore the first char when building the + resulting filename, or it won't be found. + Also, the path could be absolute, in which case it is wrong to + append /usr/share/timezone + + https://bugzilla.gnome.org/show_bug.cgi?id=664237 + + glib/gtimezone.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit b98b63187a24451411c88962bd82553652b198e0 +Author: Swecha Localization Team +AuthorDate: Mon Feb 6 17:15:14 2012 +0530 +Commit: Praveen Illa +CommitDate: Mon Feb 6 17:15:14 2012 +0530 + + Updated Telugu Translation + + po/te.po | 1774 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 918 insertions(+), 856 deletions(-) + +commit bd0897034970253cb3831bdd4d54bb620cdab075 +Author: Fran Diéguez +AuthorDate: Mon Feb 6 02:54:44 2012 +0100 +Commit: Fran Diéguez +CommitDate: Mon Feb 6 02:54:44 2012 +0100 + + Updated Galician translations + + po/gl.po | 418 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 224 insertions(+), 194 deletions(-) + +commit 7e9aed94deb6d6b9f25af539d84bb1e66c958cbc +Author: Christian Persch +AuthorDate: Sun Feb 5 20:00:16 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Feb 5 20:00:16 2012 +0100 + + Revert "Plug a mem leak in g_environ_unsetenv" + + This reverts commit 2f4b46e3783b04cddcb2622a57b2a8e692cff68a, + which was + pushed accidentally. + + glib/genviron.c | 3 --- + 1 file changed, 3 deletions(-) + +commit 30e0a1beacb8ffa2e58581e723023a3475d6ad62 +Author: Christian Persch +AuthorDate: Sun Feb 5 19:55:45 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Feb 5 19:57:10 2012 +0100 + + resources: Consolidate creation of GResource into one place + + gio/gresource.c | 32 ++++++++++++++++++++------------ + 1 file changed, 20 insertions(+), 12 deletions(-) + +commit 04df4d45a47d653c24c75f321fe7b017b2d47a68 +Author: Christian Persch +AuthorDate: Sun Feb 5 16:44:10 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Feb 5 19:57:10 2012 +0100 + + resources: tests: Plug a mem leak + + ==1265== 84 (8 direct, 76 indirect) bytes in 1 blocks are definitely + lost in loss record 793 of 827 + ==1265== at 0x4029467: calloc (vg_replace_malloc.c:467) + ==1265== by 0x408479B: standard_calloc (gmem.c:104) + ==1265== by 0x4084846: g_malloc0 (gmem.c:189) + ==1265== by 0x4084B2D: g_malloc0_n (gmem.c:385) + ==1265== by 0x4228A98: g_resource_load (gresource.c:253) + ==1265== by 0x804A56D: test_resource_registred (resources.c:198) + + gio/tests/resources.c | 1 + + 1 file changed, 1 insertion(+) + +commit 0ebb6339d15aa4ccc5a380dd35d116806c7005f3 +Author: Christian Persch +AuthorDate: Sun Feb 5 16:39:51 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Feb 5 19:57:10 2012 +0100 + + resources: tests: Plug a mem leak + + ==509== 700 (20 direct, 680 indirect) bytes in 1 blocks are definitely + lost in loss record 828 of 837 + ==509== at 0x402AD89: malloc (vg_replace_malloc.c:236) + ==509== by 0x4084724: standard_malloc (gmem.c:85) + ==509== by 0x40847C7: g_malloc (gmem.c:159) + ==509== by 0x409B1E1: g_slice_alloc (gslice.c:1003) + ==509== by 0x405396B: g_bytes_new_with_free_func (gbytes.c:173) + ==509== by 0x405390D: g_bytes_new_take (gbytes.c:122) + ==509== by 0x804A48C: test_resource_data (resources.c:174) + + gio/tests/resources.c | 1 + + 1 file changed, 1 insertion(+) + +commit 6789ab2294409ce9388ada1110ea5bb8da71b95a +Author: Christian Persch +AuthorDate: Sun Feb 5 16:38:36 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Feb 5 19:57:10 2012 +0100 + + resources: tests: Plug a mem leak + + ==29204== 11,456 (84 direct, 11,372 indirect) bytes in 1 blocks are + definitely lost in loss record 859 of 861 + ==29204== at 0x402AD89: malloc (vg_replace_malloc.c:236) + ==29204== by 0x4084724: standard_malloc (gmem.c:85) + ==29204== by 0x40847C7: g_malloc (gmem.c:159) + ==29204== by 0x409B1E1: g_slice_alloc (gslice.c:1003) + ==29204== by 0x409B227: g_slice_alloc0 (gslice.c:1029) + ==29204== by 0x41936CF: g_type_create_instance (gtype.c:1872) + ==29204== by 0x417CCC9: g_object_constructor (gobject.c:1839) + ==29204== by 0x417C6F4: g_object_newv (gobject.c:1703) + ==29204== by 0x417CC5A: g_object_new_valist (gobject.c:1820) + ==29204== by 0x417C1DB: g_object_new (gobject.c:1535) + ==29204== by 0x41E5E29: g_converter_input_stream_new + (gconverterinputstream.c:204) + ==29204== by 0x4228D38: g_resource_open_stream (gresource.c:363) + + gio/tests/resources.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 877fe6fb524df8478c963342b7948aa3aa55f25e +Author: Christian Persch +AuthorDate: Sun Feb 5 16:37:36 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Feb 5 19:57:10 2012 +0100 + + resources: Init refcount to 1 + + This bug was exposed by fixing the following leak in the resources + test: + + ==29204== 11,456 (84 direct, 11,372 indirect) bytes in 1 blocks are + definitely lost in loss record 859 of 861 + ==29204== at 0x402AD89: malloc (vg_replace_malloc.c:236) + ==29204== by 0x4084724: standard_malloc (gmem.c:85) + ==29204== by 0x40847C7: g_malloc (gmem.c:159) + ==29204== by 0x409B1E1: g_slice_alloc (gslice.c:1003) + ==29204== by 0x409B227: g_slice_alloc0 (gslice.c:1029) + ==29204== by 0x41936CF: g_type_create_instance (gtype.c:1872) + ==29204== by 0x417CCC9: g_object_constructor (gobject.c:1839) + ==29204== by 0x417C6F4: g_object_newv (gobject.c:1703) + ==29204== by 0x417CC5A: g_object_new_valist (gobject.c:1820) + ==29204== by 0x417C1DB: g_object_new (gobject.c:1535) + ==29204== by 0x41E5E29: g_converter_input_stream_new + (gconverterinputstream.c:204) + ==29204== by 0x4228D38: g_resource_open_stream (gresource.c:363) + + gio/gresource.c | 1 + + 1 file changed, 1 insertion(+) + +commit 30e9cccb85bd6f398ce1f17d9a8eae98f4c2430a +Author: Christian Persch +AuthorDate: Sun Feb 5 16:18:34 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Feb 5 19:57:10 2012 +0100 + + resources: Plug a mem leak + + ==29204== 7,192 (76 direct, 7,116 indirect) bytes in 1 blocks are + definitely lost in loss record 855 of 861 + ==29204== at 0x402AD89: malloc (vg_replace_malloc.c:236) + ==29204== by 0x4084724: standard_malloc (gmem.c:85) + ==29204== by 0x40847C7: g_malloc (gmem.c:159) + ==29204== by 0x409B1E1: g_slice_alloc (gslice.c:1003) + ==29204== by 0x409B227: g_slice_alloc0 (gslice.c:1029) + ==29204== by 0x41936CF: g_type_create_instance (gtype.c:1872) + ==29204== by 0x417CCC9: g_object_constructor (gobject.c:1839) + ==29204== by 0x417C6F4: g_object_newv (gobject.c:1703) + ==29204== by 0x417CC5A: g_object_new_valist (gobject.c:1820) + ==29204== by 0x417C1DB: g_object_new (gobject.c:1535) + ==29204== by 0x424E815: g_zlib_decompressor_new + (gzlibdecompressor.c:270) + ==29204== by 0x4228DD8: g_resource_lookup_data (gresource.c:422) + + gio/gresource.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit e194a9032f03a14b4a2be85c370a9cf52faeb3d2 +Author: Christian Persch +AuthorDate: Sun Feb 5 16:16:37 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Feb 5 19:57:10 2012 +0100 + + resources: tests: Plug a mem leak + + ==28778== 700 (20 direct, 680 indirect) bytes in 1 blocks are + definitely lost in loss record 842 of 863 + ==28778== at 0x402AD89: malloc (vg_replace_malloc.c:236) + ==28778== by 0x4084724: standard_malloc (gmem.c:85) + ==28778== by 0x40847C7: g_malloc (gmem.c:159) + ==28778== by 0x409B1E1: g_slice_alloc (gslice.c:1003) + ==28778== by 0x405396B: g_bytes_new_with_free_func (gbytes.c:173) + ==28778== by 0x405390D: g_bytes_new_take (gbytes.c:122) + ==28778== by 0x804C2B1: test_uri_query_info (resources.c:435) + + gio/tests/resources.c | 1 + + 1 file changed, 1 insertion(+) + +commit 108e11875e74c9c9483cab1a8f72e432bdbb8004 +Author: Christian Persch +AuthorDate: Sun Feb 5 16:14:21 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Feb 5 19:57:10 2012 +0100 + + resources: tests: Plug a mem leak + + ==28318== 38 (12 direct, 26 indirect) bytes in 1 blocks are definitely + lost in loss record 613 of 865 + ==28318== at 0x402AD89: malloc (vg_replace_malloc.c:236) + ==28318== by 0x4084724: standard_malloc (gmem.c:85) + ==28318== by 0x40847C7: g_malloc (gmem.c:159) + ==28318== by 0x4084AB4: g_malloc_n (gmem.c:361) + ==28318== by 0x4229599: g_resources_enumerate_children + (gresource.c:806) + ==28318== by 0x804B39E: test_resource_registred (resources.c:283) + + gio/tests/resources.c | 1 + + 1 file changed, 1 insertion(+) + +commit 74c262a8bd4a1fa6a0163ceb22667852c891c159 +Author: Christian Persch +AuthorDate: Sun Feb 5 16:12:23 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Feb 5 19:57:09 2012 +0100 + + resources: tests: Plug a mem leak + + ==27820== 31 bytes in 1 blocks are definitely lost in loss record + 587 of 866 + ==27820== at 0x402AD89: malloc (vg_replace_malloc.c:236) + ==27820== by 0x4084724: standard_malloc (gmem.c:85) + ==27820== by 0x40847C7: g_malloc (gmem.c:159) + ==27820== by 0x4084AB4: g_malloc_n (gmem.c:361) + ==27820== by 0x409D6A1: g_strdup (gstrfuncs.c:356) + ==27820== by 0x4069FF7: g_get_current_dir (gfileutils.c:2544) + ==27820== by 0x804BCA7: test_resource_module (resources.c:370) + + gio/tests/resources.c | 1 + + 1 file changed, 1 insertion(+) + +commit ffe7a3293f7e69fab1211f014a54b78fb7611ee0 +Author: Christian Persch +AuthorDate: Sun Feb 5 16:10:48 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Feb 5 19:57:09 2012 +0100 + + resources: Plug a mem leak + + ==27020== 44 (24 direct, 20 indirect) bytes in 1 blocks are definitely + lost in loss record 684 of 936 + ==27020== at 0x402AD89: malloc (vg_replace_malloc.c:236) + ==27020== by 0x4084724: standard_malloc (gmem.c:85) + ==27020== by 0x40847C7: g_malloc (gmem.c:159) + ==27020== by 0x409B1E1: g_slice_alloc (gslice.c:1003) + ==27020== by 0x40BC038: g_variant_get_child_value + (gvariant-core.c:969) + ==27020== by 0x40B5277: g_variant_get_variant (gvariant.c:749) + ==27020== by 0x4273182: gvdb_table_value_from_item + (gvdb-reader.c:478) + ==27020== by 0x42731E8: gvdb_table_get_value (gvdb-reader.c:509) + ==27020== by 0x4228B36: do_lookup (gresource.c:280) + ==27020== by 0x4228F56: g_resource_get_info (gresource.c:492) + + gio/gresource.c | 1 + + 1 file changed, 1 insertion(+) + +commit fa370571690356bc1082b89ff5b8b8a74664d16f +Author: Christian Persch +AuthorDate: Sun Feb 5 16:08:10 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Feb 5 19:57:09 2012 +0100 + + resources: Plug a mem leak + + ==26427== 24 bytes in 1 blocks are definitely lost in loss record + 608 of 965 + ==26427== at 0x402AD89: malloc (vg_replace_malloc.c:236) + ==26427== by 0x4084724: standard_malloc (gmem.c:85) + ==26427== by 0x40847C7: g_malloc (gmem.c:159) + ==26427== by 0x409B1E1: g_slice_alloc (gslice.c:1003) + ==26427== by 0x40BC038: g_variant_get_child_value + (gvariant-core.c:969) + ==26427== by 0x40BA89F: g_variant_valist_get (gvariant.c:4482) + ==26427== by 0x40BAC23: g_variant_get_va (gvariant.c:4681) + ==26427== by 0x40BAB29: g_variant_get (gvariant.c:4633) + ==26427== by 0x4228BA5: do_lookup (gresource.c:293) + ==26427== by 0x4228F51: g_resource_get_info (gresource.c:493) + + gio/gresource.c | 35 +++++++++++++++++------------------ + 1 file changed, 17 insertions(+), 18 deletions(-) + +commit 2f4b46e3783b04cddcb2622a57b2a8e692cff68a +Author: Christian Persch +AuthorDate: Sun Feb 5 16:00:31 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Feb 5 19:57:09 2012 +0100 + + Plug a mem leak in g_environ_unsetenv + + ==9458== 10 bytes in 1 blocks are definitely lost in loss record 16 + of 39 + ==9458== at 0x402AD89: malloc (vg_replace_malloc.c:236) + ==9458== by 0x4221A1F: vasprintf (vasprintf.c:78) + ==9458== by 0x40C6065: g_vasprintf (gprintf.c:314) + ==9458== by 0x409D894: g_strdup_vprintf (gstrfuncs.c:509) + ==9458== by 0x409D8C9: g_strdup_printf (gstrfuncs.c:535) + ==9458== by 0x40672E9: g_environ_setenv (genviron.c:156) + ==9458== by 0x80490E7: test_environ_array (environment.c:78) + ==9458== by 0x40A3DB5: test_case_run (gtestutils.c:1662) + ==9458== by 0x40A40B2: g_test_run_suite_internal + (gtestutils.c:1715) + ==9458== by 0x40A417C: g_test_run_suite_internal + (gtestutils.c:1726) + ==9458== by 0x40A42F9: g_test_run_suite (gtestutils.c:1771) + ==9458== by 0x40A3441: g_test_run (gtestutils.c:1319) + ==9458== by 0x80493F1: main (environment.c:108) + + Bug #669412. + + glib/genviron.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 26a5af83d428657dcae72af1c920b36055d92020 +Author: Matthias Clasen +AuthorDate: Sat Feb 4 22:54:58 2012 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 4 22:54:58 2012 -0500 + + Back to odd + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d6a4369089ad3dd4ab047989ba1ff31904b17eb6 +Author: Matthias Clasen +AuthorDate: Sat Feb 4 18:43:13 2012 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 4 18:43:13 2012 -0500 + + 2.31.16 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 439c8365da232ceb715f14f3f0a7a0751e35547c +Author: Matthias Clasen +AuthorDate: Sat Feb 4 11:51:45 2012 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 4 11:51:45 2012 -0500 + + Updates + + NEWS | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +commit 59a0134de8ba98d05d97d8fcded4e86bac7fe606 +Author: Ravi Sankar Guntur +AuthorDate: Sat Feb 4 00:14:56 2012 +0530 +Commit: Colin Walters +CommitDate: Sat Feb 4 10:01:19 2012 -0500 + + fix memory leak in g_bookmark_file_parse() + + https://bugzilla.gnome.org/show_bug.cgi?id=669334 + + Signed-off-by: Ravi Sankar Guntur + + glib/gbookmarkfile.c | 48 + ++++++++++++++++++++---------------------------- + 1 file changed, 20 insertions(+), 28 deletions(-) + +commit 7e3eeb2ba12c056308020afa1b26891e5d514539 +Author: Kjartan Maraas +AuthorDate: Sat Feb 4 12:32:51 2012 +0100 +Commit: Kjartan Maraas +CommitDate: Sat Feb 4 12:32:51 2012 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 160 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 82 insertions(+), 78 deletions(-) + +commit f43565c822697504e32d2d329f4ea1c6c073d514 +Author: Dan Winship +AuthorDate: Fri Feb 3 11:29:46 2012 -0500 +Commit: Dan Winship +CommitDate: Fri Feb 3 13:01:19 2012 -0500 + + gio/tests/file: use g_file_new_tmp() + + Rather than misusing g_file_open_tmp(), misuse g_file_new_tmp() + instead. Progress! (Also, gets rid of a compile warning about close() + on win32.) + + gio/tests/file.c | 28 ++++++++++++++-------------- + 1 file changed, 14 insertions(+), 14 deletions(-) + +commit cc4c1e89f439244fd0af0afd45ca40015cea4634 +Author: Dan Winship +AuthorDate: Fri Feb 3 12:08:40 2012 -0500 +Commit: Dan Winship +CommitDate: Fri Feb 3 12:58:53 2012 -0500 + + gio/tests/socket-common.c: add a missing #ifdef G_OS_UNIX + + gio/tests/socket-common.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit d22c36cf00878a949261603ebac9515245e829bd +Author: Dan Winship +AuthorDate: Fri Feb 3 11:39:27 2012 -0500 +Commit: Dan Winship +CommitDate: Fri Feb 3 12:49:48 2012 -0500 + + gioenums.h: clean up a few GIOErrorEnum descriptions + + gio/gioenums.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit e9caa11aa5b12a424bc0602855b6960d29aa4a3c +Author: Daniel Mustieles +AuthorDate: Fri Feb 3 16:29:28 2012 +0100 +Commit: Daniel Mustieles +CommitDate: Fri Feb 3 16:29:28 2012 +0100 + + Updated Spanish translation + + po/es.po | 265 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 132 insertions(+), 133 deletions(-) + +commit 3b8ba958f5a0d1e129219cab10ced9c0fa03c1cc +Author: Alexander Larsson +AuthorDate: Fri Feb 3 15:11:23 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Feb 3 15:11:23 2012 +0100 + + Fix warning to refer to to-pixdata, not xmllint + + gio/glib-compile-resources.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ac800fa8febe2370cab2de2e0f4ed5abb431e963 +Author: Alexander Larsson +AuthorDate: Fri Feb 3 15:05:03 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Feb 3 15:05:43 2012 +0100 + + Fix GResourceFile get_parent() + + This was erronously losing the last char. + + gio/gresourcefile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 260a9cc290c42f06af89db33306df7a990448ed9 +Author: Christian Persch +AuthorDate: Wed Feb 1 14:59:22 2012 +0100 +Commit: Christian Persch +CommitDate: Thu Feb 2 23:44:44 2012 +0100 + + resource: tests: Use g_assert_cmp[u]int + + ... instead of just g_assert(), so when the test does fail, one + immediately + can see the actual value the variable had. + + gio/tests/resources.c | 56 + +++++++++++++++++++++++++-------------------------- + 1 file changed, 28 insertions(+), 28 deletions(-) + +commit cb1dd2143dc6f5b5881b6d94abb7dd6f05137c76 +Author: Christian Persch +AuthorDate: Tue Jan 31 18:10:55 2012 +0100 +Commit: Christian Persch +CommitDate: Thu Feb 2 23:44:40 2012 +0100 + + resources: compiler: Fix entity processing of xml-stripblanks + + Preserve entities instead of replacing them! + + Bug #669173. + + gio/glib-compile-resources.c | 1 - + 1 file changed, 1 deletion(-) + +commit 296a2a72c6837ddc90a372b5bc6aea95a9bf82be +Author: Christian Persch +AuthorDate: Tue Jan 31 18:01:25 2012 +0100 +Commit: Christian Persch +CommitDate: Thu Feb 2 23:44:38 2012 +0100 + + resources: compiler: Make to-pixbuf failure fatal + + Bug #669123. + + gio/glib-compile-resources.c | 12 +++++++++--- + gio/gresource.c | 9 +++++---- + 2 files changed, 14 insertions(+), 7 deletions(-) + +commit 387ed239e236cad1c3a54d08a34194c36bb59dba +Author: Ryan Lortie +AuthorDate: Thu Feb 2 10:48:11 2012 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 2 10:53:50 2012 -0500 + + gsettings tool: fix a memory error + + 8852d4e9a08e7fbc9df7fb99a54b112f5049ee19 introduced a memory error by + taking the type of a GVariant, freeing the GVariant and using the type + after the free. + + This delays the free until after we've used the type. + + https://bugzilla.gnome.org/show_bug.cgi?id=669253 + + gio/gsettings-tool.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 552b815365649521379c60b672f608a40a8a5f44 +Author: Kalev Lember +AuthorDate: Wed Feb 1 18:44:15 2012 +0200 +Commit: Alexander Larsson +CommitDate: Thu Feb 2 16:22:42 2012 +0100 + + gio: Convert data-to-c.c to perl + + Helper scripts in C can be problematic for cross compiling: the + compiler + produces executables for the target platform, which the host is + usually + unable to run. + + https://bugzilla.gnome.org/show_bug.cgi?id=669224 + + gio/Makefile.am | 10 +++------- + gio/data-to-c.c | 51 --------------------------------------------------- + gio/data-to-c.pl | 39 +++++++++++++++++++++++++++++++++++++++ + 3 files changed, 42 insertions(+), 58 deletions(-) + +commit 053b011cccdf8463a10ae09799dd43048bb6c9f0 +Author: Benjamin Otte +AuthorDate: Wed Feb 1 16:25:01 2012 +0100 +Commit: Benjamin Otte +CommitDate: Wed Feb 1 16:25:23 2012 +0100 + + docs: Clarify GSocketClient reuse policy + + gio/gsocketclient.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit a60f475b36a35081913c8fa51dc4de6381aaee56 +Author: Kalev Lember +AuthorDate: Wed Feb 1 15:48:28 2012 +0200 +Commit: Kalev Lember +CommitDate: Wed Feb 1 15:53:55 2012 +0200 + + gio/tests: Fix out-of-source build + + The glib-compile-resources --generate-dependencies call was failing, + although not stopping the build. + + Failed to open file 'test2.gresource.xml': No such file or directory + Failed to open file 'test3.gresource.xml': No such file or directory + Failed to open file 'test4.gresource.xml': No such file or directory + Failed to open file 'test.gresource.xml': No such file or directory + + gio/tests/Makefile.am | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 9cf678ed2233ecb603eda92cf727e8cf8ec27335 +Author: Kalev Lember +AuthorDate: Wed Feb 1 10:09:57 2012 +0200 +Commit: Kalev Lember +CommitDate: Wed Feb 1 15:53:54 2012 +0200 + + gio.symbols: Add g_static_* symbols + + ... which were added in b79cfda49c. + + gio/gio.symbols | 3 +++ + 1 file changed, 3 insertions(+) + +commit 0bb201348f7fad556197bec979fc488354ac8a9d +Author: Kalev Lember +AuthorDate: Wed Feb 1 09:10:29 2012 +0200 +Commit: Kalev Lember +CommitDate: Wed Feb 1 15:53:54 2012 +0200 + + gresource-tool: include sys/mman.h conditionally + + It's only needed for code guarded by HAVE_LIBELF, so ifdef the include + as well. + + gio/gresource-tool.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3758b41e08147ca15d5f348afa8e84d9ea6a6a0b +Author: Matthias Clasen +AuthorDate: Tue Jan 31 22:00:45 2012 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 31 22:02:22 2012 -0500 + + Add a test to show that GMarkup properly handles > in content + + glib/tests/markups/valid-15.expected | 3 +++ + glib/tests/markups/valid-15.gmarkup | 1 + + 2 files changed, 4 insertions(+) + +commit 47aa8c43e8d63af27ea60befbeb498d9c6be17b6 +Author: Alexander Larsson +AuthorDate: Tue Jan 31 16:07:09 2012 +0100 +Commit: Alexander Larsson +CommitDate: Tue Jan 31 16:07:09 2012 +0100 + + resources: Add to-pixdata preprocessing option + + docs/reference/gio/glib-compile-resources.xml | 9 ++++ + gio/glib-compile-resources.c | 67 + ++++++++++++++++++++++++++- + gio/gresource.c | 13 ++++-- + 3 files changed, 85 insertions(+), 4 deletions(-) + +commit b79cfda49c59b348c9c713f5f04fd9ec982b6c9d +Author: Alexander Larsson +AuthorDate: Tue Jan 31 10:51:44 2012 +0100 +Commit: Alexander Larsson +CommitDate: Tue Jan 31 10:51:44 2012 +0100 + + Make constructor-based resource registration malloc free + + We need to do this because constructors run before main() and + thus before any call to g_mem_set_vtable, making it impossible to + use that function if constructors call g_malloc. + + We do this by making the constructors just register the static data + for lazy registration, doing the lazy registration when using + the global resource set. + + gio/glib-compile-resources.c | 80 +++++++++--------- + gio/gresource.c | 189 + +++++++++++++++++++++++++++++++++++++++---- + gio/gresource.h | 14 ++++ + 3 files changed, 223 insertions(+), 60 deletions(-) + +commit 2496c8b53e0fde02328a43b16542353a8a1643d7 +Author: Alexander Larsson +AuthorDate: Tue Jan 31 10:51:23 2012 +0100 +Commit: Alexander Larsson +CommitDate: Tue Jan 31 10:51:23 2012 +0100 + + resources: Minor fixes to the docs + + gio/gresource.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 8ab7ed8ffc2da341064d759776b1e985a2fd24a7 +Author: Matthias Clasen +AuthorDate: Mon Jan 30 18:47:31 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 18:47:31 2012 -0500 + + Bump version number + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d332bdcc583c67e17d2d508225200372f2981ad4 +Author: Matthias Clasen +AuthorDate: Mon Jan 30 18:46:18 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 18:46:18 2012 -0500 + + 2.31.14 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e6713ec8105b8197a0b56e9f15b48dfa9550ffe1 +Author: Matthias Clasen +AuthorDate: Mon Jan 30 18:45:45 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 18:46:11 2012 -0500 + + Fix distclean + + gio/Makefile.am | 4 ++-- + gio/tests/Makefile.am | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit a6bafde5f26b7773fc06e7c3b222b41dfe0d069c +Author: Matthias Clasen +AuthorDate: Mon Jan 30 17:54:33 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 17:54:33 2012 -0500 + + Dist gconstructor.h + + glib/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit de0d7a335c76cd158f69d83788985ed05db5756b +Author: Matthias Clasen +AuthorDate: Mon Jan 30 17:53:48 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 17:53:48 2012 -0500 + + Emit meaningful error messages + + That is useful, even if this is only an internal tool. + I have been scratching my head why this tool would + break distcheck... + + gio/data-to-c.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +commit 77ebf9bfc50f86f6ecc4aa41c0b5f4cea75219ad +Author: Matthias Clasen +AuthorDate: Mon Jan 30 17:26:33 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 17:26:33 2012 -0500 + + Fix builddir != src builds + + gio/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 796389d6c8ce1fb4645db8c13f04aeb7f13d9225 +Author: Matthias Clasen +AuthorDate: Mon Jan 30 16:23:01 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 16:23:01 2012 -0500 + + Some more documentation fixes + + gio/gactiongroup.c | 2 +- + gio/gsocket.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 49eeaa9bbdec4b7f57d28697971a63be6854b63e +Author: Matthias Clasen +AuthorDate: Mon Jan 30 15:59:38 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 16:16:48 2012 -0500 + + Assorted documentation fixes + + docs/reference/gio/gio-sections.txt | 5 ----- + gio/gapplication.c | 3 ++- + gio/ginetsocketaddress.c | 2 +- + gio/gnetworkmonitor.c | 34 + ++++++++++++++++++++++++++++++++++ + gio/gremoteactiongroup.c | 4 ++-- + 5 files changed, 39 insertions(+), 9 deletions(-) + +commit 9902a5e064c24ed5793a1e4850026a06147fcd1b +Author: Matthias Clasen +AuthorDate: Mon Jan 30 15:37:43 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 15:37:43 2012 -0500 + + Drop menu markup functions from API docs + + docs/reference/gio/gio-sections.txt | 10 ---------- + 1 file changed, 10 deletions(-) + +commit 9ffc3391ed7fd8f667c7919edf444e4761fa9e63 +Author: Matthias Clasen +AuthorDate: Mon Jan 30 15:37:28 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 15:37:28 2012 -0500 + + Fix doc syntax + + gobject/gvaluearray.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9fe3d34ae354d00f590a268e032b39022d62d184 +Author: Matthias Clasen +AuthorDate: Mon Jan 30 15:26:15 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 15:26:15 2012 -0500 + + Move pragmas out of function body + + It seems that older gcc does not like pragmas inside functions. + + gio/gdesktopappinfo.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 96f9997387e77cfa567e008f08c75007300e4590 +Author: Matthias Clasen +AuthorDate: Mon Jan 30 15:25:09 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 15:25:09 2012 -0500 + + Move pragmas out of function body + + It seems that older gcc does not like pragmas inside functions. + + gio/giomodule.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit bdd0aada62806fb492ddf79179ee3d66836d5ba0 +Author: Matthias Clasen +AuthorDate: Mon Jan 30 14:21:03 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 14:21:03 2012 -0500 + + Silence another deprecation warning + + gio/gdesktopappinfo.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 5ae5fc85f40bd5dbc405c37b6dff6992e717e5f5 +Author: Matthias Clasen +AuthorDate: Mon Jan 30 14:18:07 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 14:18:07 2012 -0500 + + Silence a deprecation warning + + Advantage of the new deprecation handling: there's pragmas + to shut them up locally. + + gio/giomodule.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit b01af10c86bece6271bdbda09c28d7a3b63d0709 +Author: Matthias Clasen +AuthorDate: Mon Jan 30 14:06:22 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 14:06:22 2012 -0500 + + Remove a check that triggers deprecation warnings + + gobject/tests/reference.c | 1 - + 1 file changed, 1 deletion(-) + +commit ec49d55247ae4dc5f80d0a3e80229e3d4aa0dd86 +Author: Matthias Clasen +AuthorDate: Mon Jan 30 13:38:44 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 30 13:38:44 2012 -0500 + + Updates + + NEWS | 43 ++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 42 insertions(+), 1 deletion(-) + +commit 968f4e8d79b3191266bf327f18b167445db0076e +Author: Alexander Larsson +AuthorDate: Mon Jan 30 16:57:54 2012 +0100 +Commit: Alexander Larsson +CommitDate: Mon Jan 30 16:59:27 2012 +0100 + + Move constructor macros to an internal header and into generated code + + With this we're not longer exporting the constructor headers, + which means + we're not tying ourselves to a macro that might need special + tweaking on + a compiler-by-compiler basis. + + gio/Makefile.am | 10 +++++ + gio/data-to-c.c | 44 +++++++++++++++++++++ + gio/glib-compile-resources.c | 3 ++ + gio/tests/resources.c | 1 + + glib/gconstructor.h | 91 + +++++++++++++++++++++++++++++++++++++++++++ + glib/gmacros.h | 93 + -------------------------------------------- + 6 files changed, 149 insertions(+), 93 deletions(-) + +commit e43a98c00091f5e293d2d9d72df2c04081802abe +Author: Antoine Jacoutot +AuthorDate: Mon Jan 30 16:17:06 2012 +0100 +Commit: Antoine Jacoutot +CommitDate: Mon Jan 30 16:17:06 2012 +0100 + + goption: implement platform_get_argv0() for OpenBSD + + https://bugzilla.gnome.org/show_bug.cgi?id=669024 + + glib/goption.c | 31 ++++++++++++++++++++++++++++++- + glib/tests/option-argv0.c | 4 ++-- + 2 files changed, 32 insertions(+), 3 deletions(-) + +commit 18cb864d12acdb0915ebf63b89b2385dc3fb7e6c +Author: Dan Winship +AuthorDate: Mon Jan 30 09:00:15 2012 -0500 +Commit: Dan Winship +CommitDate: Mon Jan 30 09:00:36 2012 -0500 + + gtlspassword.c: indentation fixes and doc clarifications + + gio/gtlspassword.c | 75 + +++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 46 insertions(+), 29 deletions(-) + +commit 46aaad1b2c7f75947833a3315d8c990ab15d49d7 +Author: Chao-Hsiung Liao +AuthorDate: Sun Jan 29 22:57:02 2012 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Sun Jan 29 22:57:02 2012 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 5844 + ++++++++++++++++++++++++++++++---------------------------- + po/zh_TW.po | 5863 + +++++++++++++++++++++++++++++++---------------------------- + 2 files changed, 6138 insertions(+), 5569 deletions(-) + +commit e9b2e86f59fa5c68ad15c82b355838331d65767e +Author: Kjartan Maraas +AuthorDate: Sat Jan 28 15:42:38 2012 +0100 +Commit: Kjartan Maraas +CommitDate: Sat Jan 28 15:42:38 2012 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 286 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 155 insertions(+), 131 deletions(-) + +commit 7486cd946acc268290a7fa498416f44c95aba40b +Author: Ravi Sankar Guntur +AuthorDate: Sat Jan 28 12:02:36 2012 +0530 +Commit: Ryan Lortie +CommitDate: Sat Jan 28 07:52:56 2012 +0100 + + comments/docs: Fix couple of typos + + https://bugzilla.gnome.org/show_bug.cgi?id=668857 + + glib/gbase64.c | 2 +- + glib/gbookmarkfile.c | 2 +- + glib/gchecksum.c | 2 +- + glib/gdataset.c | 4 ++-- + glib/gdate.c | 2 +- + glib/ggettext.c | 2 +- + glib/grand.c | 2 +- + glib/gsequence.c | 2 +- + glib/gslice.c | 4 ++-- + glib/gtester.c | 2 +- + glib/gthread-posix.c | 2 +- + 11 files changed, 13 insertions(+), 13 deletions(-) + +commit 9a7a98bf3b4853371e72c91d665e5ad375d68929 +Author: Ryan Lortie +AuthorDate: Sat Jan 28 01:09:08 2012 +0100 +Commit: Ryan Lortie +CommitDate: Sat Jan 28 01:23:05 2012 +0100 + + glib-compile-schemas: get strict about whitespace + + It's important to have strict rules for handling of whitespace in + translated strings in GSettings schema files so that the tools + extracting the messages will end up with the same messages as the + runtime calling gettext(). + + The rules are designed to be simple and unambiguous yet cover most + normal uses in a convenient way. + + Those rules are as follows (with rationale): + + - for tags, the text content has its leading and trailing + whitespace stripped off, but internal whitespace is not + modified in + any way. + + This allows for slightly more flexible use of whitespace without + causing that whitespace to appear in the strings for translation. + + - for and tags, the content is split into + paragraphs. Paragraphs are separated by two or more sequential + newline characters. Each paragraph has its leading and trailing + whitespace removed and all other whitespace is normalised to a + single ascii space character. Finally, the paragraphs are + rejoined, + inserting exactly two newlines between them. + + This allows for longer explanations (particularly in the + description + tag) using a natural format that, when normalised, will display + nicely in toolkits. + + This patch implements the rules for tags. The schema + compiler + currently ignores and tags. + + gio/glib-compile-schemas.c | 76 + ++++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 63 insertions(+), 13 deletions(-) + +commit 37af8167b65ab95278262bd243292042d01a916b +Author: Ryan Lortie +AuthorDate: Fri Jan 27 21:49:46 2012 +0100 +Commit: Ryan Lortie +CommitDate: Fri Jan 27 21:50:03 2012 +0100 + + README: Fix potentially extremely annoying typo + + README.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5bfc973c279b9c3819cf83e903c8456f6bdadb5f +Author: Daniel Mustieles +AuthorDate: Fri Jan 27 13:39:52 2012 +0100 +Commit: Daniel Mustieles +CommitDate: Fri Jan 27 13:39:52 2012 +0100 + + Updated Spanish translation + + po/es.po | 89 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 45 insertions(+), 44 deletions(-) + +commit 83f530dfc6276be21d2750673d244dc21c11b179 +Author: Daniel Mustieles +AuthorDate: Fri Jan 27 11:17:23 2012 +0100 +Commit: Daniel Mustieles +CommitDate: Fri Jan 27 11:17:23 2012 +0100 + + Updated Spanish translation + + po/es.po | 660 + +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 393 insertions(+), 267 deletions(-) + +commit da386705f9e03ebf2cb9abbc523d84146b075444 +Author: Ryan Lortie +AuthorDate: Fri Jan 27 03:00:23 2012 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 27 03:00:23 2012 -0500 + + GSettings: two memory use fixes + + First, correct a rather dubious case of accessing a GSettingsSchemaKey + after clearing it. This was technically okay because only the + key name + was accessed (and it is not owned by the struct) but it looks very + wrong. + + Second, have g_settings_backend_write() sink the passed in GVariant*. + Not all backends get this right, and I'm starting to like the + pattern of + virtual function wrappers being responsible for sinking the parameters + that they are documented as consuming. + + gio/gsettings.c | 4 +++- + gio/gsettingsbackend.c | 8 +++++++- + 2 files changed, 10 insertions(+), 2 deletions(-) + +commit 8e763aef43b951746662978c7c644365a92ecfa3 +Author: David Zeuthen +AuthorDate: Thu Jan 26 14:52:09 2012 -0500 +Commit: David Zeuthen +CommitDate: Thu Jan 26 14:56:29 2012 -0500 + + gdbus-codegen: Use C array instead of GValueArray + + GValueArray was deprecated in bug 667228 and since we never change the + size of the array, it was kinda dumb to just GValueArray in the first + place. + + https://bugzilla.gnome.org/show_bug.cgi?id=667228 + + Signed-off-by: David Zeuthen + + gio/gdbus-2.0/codegen/codegen.py | 24 +++++++++++++----------- + 1 file changed, 13 insertions(+), 11 deletions(-) + +commit 9bfde4a53fbc7c5596c65c790b76e61aae88860d +Author: Ryan Lortie +AuthorDate: Thu Jan 26 11:27:47 2012 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 26 14:40:34 2012 -0500 + + GKeyFile: allow loading from empty strings + + GKeyFile supports empty files and also supports loading from the + string + "", but will fail with a critical if you try: + + - explicit length == 0 + - data == NULL + + length == 0 should always be valid, and data == NULL should be + valid in + the case that length == 0, so add some testcases for those and fix the + code up to allow them. + + https://bugzilla.gnome.org/show_bug.cgi?id=668756 + + glib/gkeyfile.c | 5 ++--- + glib/tests/keyfile.c | 27 ++++++++++++++++++++++++++- + 2 files changed, 28 insertions(+), 4 deletions(-) + +commit bc40fe582d63e75c0e7f9dae44808ecc924e3f7e +Author: David Zeuthen +AuthorDate: Thu Jan 26 14:16:28 2012 -0500 +Commit: David Zeuthen +CommitDate: Thu Jan 26 14:20:08 2012 -0500 + + GDBusInterface: add dup_object() method + + This is needed for thread-safety ... yes, it would have been better to + make get_object() return a full reference and have something like a + peek_object() method return a borrowed reference for C convenience + (only a single vfunc would have been needed). But such an ABI break is + too late now... + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdbusinterface.c | 40 + ++++++++++++++++++++++++++++++++++++- + gio/gdbusinterface.h | 3 +++ + gio/gdbusinterfaceskeleton.c | 14 +++++++++++++ + gio/gdbusproxy.c | 17 ++++++++++++++++ + gio/gio.symbols | 1 + + 6 files changed, 75 insertions(+), 1 deletion(-) + +commit eb6c35f7c391acdc62d295589d829b99088e224c +Author: David Zeuthen +AuthorDate: Thu Jan 26 14:06:59 2012 -0500 +Commit: David Zeuthen +CommitDate: Thu Jan 26 14:06:59 2012 -0500 + + gio.symbols: Remove removed g_menu_markup_* symbols + + Signed-off-by: David Zeuthen + + gio/gio.symbols | 6 ------ + 1 file changed, 6 deletions(-) + +commit 1542e898f97a152563e53ff871f2e7d26a359a85 +Author: Dan Winship +AuthorDate: Thu Jan 26 09:53:56 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Jan 26 09:54:50 2012 -0500 + + gmain: fix a bunch of comment typos in g_get_monotonic_time() + + And remove a comment about Windows in the fallback implementation that + no longer applies, since there's now a separate Windows-specific + implementation. + + glib/gmain.c | 37 +++++++++++++++++-------------------- + 1 file changed, 17 insertions(+), 20 deletions(-) + +commit 8998e77b8f348179d0d2fe4d9aea312caef05d71 +Author: Christian Persch +AuthorDate: Thu Jan 26 15:22:10 2012 +0100 +Commit: Christian Persch +CommitDate: Thu Jan 26 15:23:16 2012 +0100 + + docs: Fix formatting in glib-compile-resource man page + + Fixup the formatting in the example rule for --generate-dependencies. + + docs/reference/gio/glib-compile-resources.xml | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit fbfad9cf859072d0a3b0182f636d2496493130e9 +Author: Rico Tzschichholz +AuthorDate: Thu Jan 26 14:52:31 2012 +0100 +Commit: Rico Tzschichholz +CommitDate: Thu Jan 26 14:53:15 2012 +0100 + + Updated POTFILES.in + + po/POTFILES.in | 1 - + 1 file changed, 1 deletion(-) + +commit 59881a65b2c92edfcc1ad26ec04ff99f401a962b +Author: Andoni Morales Alastruey +AuthorDate: Thu Jan 26 14:38:14 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Thu Jan 26 14:44:50 2012 +0100 + + keyfile tests: Fix windows build using portable g_setenv + + glib/tests/keyfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9f870fc056c2ce01c54a25456ca71e95de170a85 +Author: Christian Persch +AuthorDate: Thu Jan 26 14:35:30 2012 +0100 +Commit: Christian Persch +CommitDate: Thu Jan 26 14:35:30 2012 +0100 + + docs: Fix the glib-compile-resources docs + + Add a tag missing from commit + 45783c5927f32cae965c67db14adb8422373d345. + + docs/reference/gio/glib-compile-resources.xml | 2 ++ + 1 file changed, 2 insertions(+) + +commit 2a90aba068439ef528cd31f36971ca92b5a70f94 +Author: Ryan Lortie +AuthorDate: Wed Jan 25 19:55:33 2012 -0500 +Commit: Ryan Lortie +CommitDate: Wed Jan 25 21:05:27 2012 -0500 + + Drop the GMenu markup functions + + The parser has been moved into Gtk in a modified form and the printer + was never really useful anyway (except for debugging/testing). + + gio/Makefile.am | 5 - + gio/gio.h | 1 - + gio/gmenumarkup.c | 741 + ------------------------------------------------- + gio/gmenumarkup.h | 47 ---- + gio/menumarkup.dtd | 29 -- + gio/menumarkup.xml | 26 -- + gio/menumarkup2.xml | 75 ----- + gio/tests/gmenumodel.c | 375 ++++++++----------------- + 8 files changed, 121 insertions(+), 1178 deletions(-) + +commit 4e9f59bff8adc59fd8fde5bdee9879b8c3e4e55b +Author: Matthias Clasen +AuthorDate: Wed Jan 25 14:18:34 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 25 16:15:18 2012 -0500 + + e G_SOURCE_CONTINUE/REMOVE internally + + Now that we have these macros, we should use them. + This commit covers everything in gio/. + + gio/gapplication.c | 2 +- + gio/gmountoperation.c | 2 +- + gio/gpollfilemonitor.c | 2 +- + gio/gregistrysettingsbackend.c | 2 +- + gio/gunixmount.c | 2 +- + gio/tests/contexts.c | 2 +- + gio/tests/gapplication-example-cmdline3.c | 2 +- + gio/tests/gapplication.c | 2 +- + gio/tests/pollable.c | 8 ++++---- + gio/tests/simple-async-result.c | 2 +- + 10 files changed, 13 insertions(+), 13 deletions(-) + +commit ef159af00f723f46658f46af03ea67185dae9988 +Author: Matthias Clasen +AuthorDate: Wed Jan 25 08:53:05 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 25 16:15:18 2012 -0500 + + Use G_SOURCE_CONTINUE/REMOVE internally + + Now that we have these macros, we should use them. + This commit covers everything in glib/. + + glib/gmain.c | 2 +- + glib/tests/mainloop.c | 2 +- + glib/tests/spawn-multithreaded.c | 2 +- + glib/tests/spawn-singlethread.c | 2 +- + glib/tests/timeout.c | 4 +++- + glib/tests/unix.c | 6 +++--- + 6 files changed, 10 insertions(+), 8 deletions(-) + +commit 12060df9f17a48cd4c7fda27a0af70c17c308ad9 +Author: Ryan Lortie +AuthorDate: Wed Jan 25 10:09:09 2012 -0500 +Commit: Ryan Lortie +CommitDate: Wed Jan 25 10:09:09 2012 -0500 + + GHash: add note about randomness in hashing + + To clarify our statements about being robust against outside attackers + degrading the performance of your hashtable. + + glib/ghash.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 5286dbb7e14d53256ebe45b4482c3a5317eb4e5c +Author: Christian Persch +AuthorDate: Tue Jan 24 14:18:12 2012 +0100 +Commit: Christian Persch +CommitDate: Wed Jan 25 14:47:58 2012 +0100 + + resources: tool: Fix a compiler warning + + Use G_GSIZE_FORMAT. + + gio/gresource-tool.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f42a5fb53b80540b3af457af32ca1de072f4fdd7 +Author: Christian Persch +AuthorDate: Mon Jan 23 22:51:44 2012 +0100 +Commit: Christian Persch +CommitDate: Wed Jan 25 14:47:48 2012 +0100 + + resources: compiler: Add autoselected output format + + This allows simplifying the make rules. + + Bug #668539. + + docs/reference/gio/glib-compile-resources.xml | 21 +++++++++++++++++++++ + gio/glib-compile-resources.c | 11 +++++++++++ + gio/tests/Makefile.am | 13 +++++-------- + 3 files changed, 37 insertions(+), 8 deletions(-) + +commit 55d10d6bfdfa054d59fa5a01a8289fdc507e0aa9 +Author: Christian Persch +AuthorDate: Mon Jan 23 20:42:20 2012 +0100 +Commit: Christian Persch +CommitDate: Wed Jan 25 14:47:37 2012 +0100 + + resources: compiler: Add dependency generator + + Bug #668532. + + docs/reference/gio/glib-compile-resources.xml | 17 ++++++++++ + gio/glib-compile-resources.c | 48 + +++++++++++++++++++++------ + gio/tests/Makefile.am | 11 +++--- + 3 files changed, 61 insertions(+), 15 deletions(-) + +commit 45783c5927f32cae965c67db14adb8422373d345 +Author: Christian Persch +AuthorDate: Sat Jan 14 22:34:15 2012 +0100 +Commit: Christian Persch +CommitDate: Wed Jan 25 14:47:37 2012 +0100 + + resources: compiler: Allow stripping blanks from xml data + + It's hardly useful to bloat the resource data with blanks intended + only + for human readability, so add a preprocessing option that uses + xmllint --noblanks + to strip these. + + Bug #667929. + + docs/reference/gio/glib-compile-resources.xml | 14 ++++ + gio/glib-compile-resources.c | 111 + ++++++++++++++++++++++++-- + gio/gresource.c | 10 ++- + gio/tests/test.gresource.xml | 1 + + 4 files changed, 129 insertions(+), 7 deletions(-) + +commit e94a5f4f8394fe6a7160850c12ea8079215e4323 +Author: Matthias Clasen +AuthorDate: Wed Jan 25 07:32:39 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 25 07:32:39 2012 -0500 + + GKeyFile: make list separators effective again + + We must preserve the list_separator across clear;init + sequences. + + glib/gkeyfile.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit aea9951ef0714418ac139a6c3678eb64d82c692f +Author: Matthias Clasen +AuthorDate: Wed Jan 25 07:32:20 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 25 07:32:20 2012 -0500 + + Fix the new test + + glib/tests/keyfile.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit e50d7e065c72278f7811f7008dac80d5ce53f401 +Author: Matthias Clasen +AuthorDate: Wed Jan 25 07:26:58 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 25 07:26:58 2012 -0500 + + Add a test for g_key_file_set_list_separator + + A recent 'harmless' fix broke it... + + glib/tests/keyfile.c | 28 ++++++++++++++++++++++++++-- + 1 file changed, 26 insertions(+), 2 deletions(-) + +commit ca949756de4ac87815144295abeb8d37535ea314 +Author: Guillaume Desmottes +AuthorDate: Wed Jan 25 12:03:14 2012 +0100 +Commit: Guillaume Desmottes +CommitDate: Wed Jan 25 12:04:12 2012 +0100 + + GArray: initialize the clear_func pointer + + https://bugzilla.gnome.org/show_bug.cgi?id=668650 + + glib/garray.c | 1 + + 1 file changed, 1 insertion(+) + +commit 73f5764fcde237737a844fb3b164bcddf6c335d1 +Author: Xan Lopez +AuthorDate: Wed Jan 25 10:28:27 2012 +0100 +Commit: Xan Lopez +CommitDate: Wed Jan 25 10:28:27 2012 +0100 + + gresource-tool: fix the build + + gio/gresource-tool.c | 1 + + 1 file changed, 1 insertion(+) + +commit e9725d165621c34f076ce3ae3bb1b2513aa7cf0d +Author: Ravi Sankar Guntur +AuthorDate: Sat Jan 21 22:17:18 2012 +0530 +Commit: Matthias Clasen +CommitDate: Tue Jan 24 23:41:23 2012 -0500 + + Macro to insert a new GNode "after" the given sibling. + + https://bugzilla.gnome.org/show_bug.cgi?id=626258 + + Signed-off-by: Ravi Sankar Guntur + + docs/reference/glib/glib-sections.txt | 1 + + glib/gnode.c | 5 +++-- + glib/gnode.h | 13 +++++++++++++ + 3 files changed, 17 insertions(+), 2 deletions(-) + +commit aa95853f9cd509b09a9c94a58df778ededad562f +Author: Enrique Ocaña González +AuthorDate: Tue Jan 24 13:24:51 2012 +0100 +Commit: Matthias Clasen +CommitDate: Tue Jan 24 23:40:33 2012 -0500 + + Honor the glib_cv_g_atomic_lock_free env var in configure + + This fixes bug: https://bugzilla.gnome.org/show_bug.cgi?id=668572 + + configure.ac | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 0ac9ab4e271c8dbaaddd3e748aa687faa4a75523 +Author: Emmanuele Bassi +AuthorDate: Wed Jan 4 09:31:12 2012 +0000 +Commit: Matthias Clasen +CommitDate: Tue Jan 24 23:37:24 2012 -0500 + + Deprecate GValueArray + + The GValueArray type was added in a time, during the Jurassic era + or so, + when GArray did not have a representable GType. The GValueArray + API has + various issues as well: + + - it doesn't match the other GLib array types; + - it is not reference counted; + - the structure is fully exposed on the stack, so it cannot be + extended to add reference counting; + - it cannot be forcibly resized. + + The nice thing is that now we have a GArray type that can replace in + full GValueArray, so we can deprecate the latter, and reduce the + complexity in GLib, application code, and bindings. + + https://bugzilla.gnome.org/show_bug.cgi?id=667228 + + gobject/gboxed.c | 5 ++++- + gobject/gboxed.h | 4 ++++ + gobject/gparamspecs.c | 3 +++ + gobject/gparamspecs.h | 6 ++++++ + gobject/gvaluearray.c | 37 +++++++++++++++++++++++++++++++++++++ + gobject/gvaluearray.h | 20 +++++++++++++++++++- + gobject/tests/valuearray.c | 1 + + 7 files changed, 74 insertions(+), 2 deletions(-) + +commit c602a5f887233bdd75544a290023d10029ca4fda +Author: Emmanuele Bassi +AuthorDate: Wed Jan 4 07:41:47 2012 +0000 +Commit: Matthias Clasen +CommitDate: Tue Jan 24 23:25:38 2012 -0500 + + array: Add a clear function + + Like GPtrArray has a "free function" that can be used to free memory + associated to each pointer in the array, GArray would benefit from + having a "clear function" that can be used to clear the content of + each element of the array when it's removed, or when the entire array + is freed. + + https://bugzilla.gnome.org/show_bug.cgi?id=667243 + + docs/reference/glib/glib-sections.txt | 1 + + glib/garray.c | 71 + ++++++++++++++++++++++++++++++----- + glib/garray.h | 2 + + glib/glib.symbols | 1 + + glib/tests/array-test.c | 38 +++++++++++++++++++ + 5 files changed, 103 insertions(+), 10 deletions(-) + +commit 030b3f25e3e5c018247e18bf309e0454ba138898 +Author: Matthias Clasen +AuthorDate: Tue Jan 24 21:11:13 2012 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 24 21:11:13 2012 -0500 + + GHashTable: Add a note about hash collisions + + glib/ghash.c | 18 +++++++++++++----- + 1 file changed, 13 insertions(+), 5 deletions(-) + +commit a3b91b36919af79abbb4737253c40afe18008ee0 +Author: Matthias Clasen +AuthorDate: Tue Jan 24 17:37:09 2012 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 24 17:38:23 2012 -0500 + + gresource: Initialize i18n + + ...otherwise translations don't work. Pointed out by Kjartan Maraas. + + https://bugzilla.gnome.org/show_bug.cgi?id=668561 + + gio/gresource-tool.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +commit 26d4feae0cc900bdb56af490176d30025cd0bba6 +Author: Ryan Lortie +AuthorDate: Tue Jan 24 16:59:59 2012 -0500 +Commit: Ryan Lortie +CommitDate: Tue Jan 24 17:17:08 2012 -0500 + + keyfile tests: Add testcase for bug #634232 + + Add a testcase based on one by Alfredo Dal'Ava Júnior (the original + reporter of the bug). + + https://bugzilla.gnome.org/show_bug.cgi?id=634232 + + glib/tests/keyfile.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +commit fe10b2c966289d87ea6ea6e76e1ae87ba16f101b +Author: Ryan Lortie +AuthorDate: Tue Jan 24 16:45:49 2012 -0500 +Commit: Ryan Lortie +CommitDate: Tue Jan 24 17:16:48 2012 -0500 + + GKeyFile: remove approximate_size optimisation + + This is micro-optimisation of the worst kind and it's causing obscure + bugs in edge cases. Better just remove this entirely. + + https://bugzilla.gnome.org/show_bug.cgi?id=634232 + + glib/gkeyfile.c | 40 +++++++--------------------------------- + 1 file changed, 7 insertions(+), 33 deletions(-) + +commit 570514a95c0e2602eb187bd49c6c50e02d09486f +Author: Dan Winship +AuthorDate: Tue Jan 24 08:28:33 2012 -0500 +Commit: Dan Winship +CommitDate: Tue Jan 24 08:30:24 2012 -0500 + + GSocket: fix complile on platforms without source-specific multicast + + Some platforms don't have the source-specific multicast sockopts, and + so would fail to compile. Fix that (and return an error if the caller + tries to use source-specific). Also clarify the docs a bit. + + https://bugzilla.gnome.org/show_bug.cgi?id=668468 + + gio/gsocket.c | 34 +++++++++++++++++++++++++--------- + 1 file changed, 25 insertions(+), 9 deletions(-) + +commit 3f691c6f511a49d0b391ca2d488b9fd617b4ca3d +Author: Christian Persch +AuthorDate: Sun Jan 30 20:45:52 2011 +0100 +Commit: Christian Persch +CommitDate: Tue Jan 24 14:20:37 2012 +0100 + + Write list-of value correctly + + Fixes a c&p typo. Bug #639099. + + gio/glib-compile-schemas.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9a689e1077affb7dcf05898693dd7a616cb4484b +Author: Kjartan Maraas +AuthorDate: Tue Jan 24 10:53:35 2012 +0100 +Commit: Kjartan Maraas +CommitDate: Tue Jan 24 10:53:35 2012 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 390 + ++++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 246 insertions(+), 144 deletions(-) + +commit 99c379f5148b15326a9e2b5d23db9d941c97d2c1 +Author: Matthias Clasen +AuthorDate: Mon Jan 23 19:21:22 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 23 19:24:10 2012 -0500 + + GMenuMarkup: call g_variant_ref_sink() + + Watch out for them floating variants ! + They are easily consumed... + + gio/gmenumarkup.c | 1 + + 1 file changed, 1 insertion(+) + +commit ae3b9b16ceab5518280a18e79b78a0c94c4d1ed3 +Author: Fran Diéguez +AuthorDate: Tue Jan 24 00:50:50 2012 +0100 +Commit: Fran Diéguez +CommitDate: Tue Jan 24 00:50:50 2012 +0100 + + Updated Galician translations + + po/gl.po | 447 + +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 280 insertions(+), 167 deletions(-) + +commit 051d4d846eead9d6baccc939c46a56653f9827c3 +Author: Piotr Drąg +AuthorDate: Mon Jan 23 20:15:30 2012 +0100 +Commit: Piotr Drąg +CommitDate: Mon Jan 23 20:15:30 2012 +0100 + + Updated POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit d994c38aba1f564e63058ce615dbb8bb4ae34e36 +Author: Matthias Clasen +AuthorDate: Mon Jan 23 00:23:18 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 23 00:26:05 2012 -0500 + + Add docs for gresource + + docs/reference/gio/Makefile.am | 2 + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gresource.xml | 116 + +++++++++++++++++++++++++++++++++++++++ + 3 files changed, 119 insertions(+) + +commit 716cf3558510be0a7ba7075a431ac2a5ad13b2bf +Author: Matthias Clasen +AuthorDate: Sun Jan 22 02:39:11 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 23 00:24:34 2012 -0500 + + Add a resource tool + + This lets you poke at resources in elf files and + standalone resource bundles. So far, only listing + and extracting resources is supported. The support + for elf files requires libelf. + + configure.ac | 11 + + gio/Makefile.am | 13 +- + gio/gresource-bash-completion.sh | 58 ++++ + gio/gresource-tool.c | 622 + +++++++++++++++++++++++++++++++++++++++ + 4 files changed, 703 insertions(+), 1 deletion(-) + +commit b6a8dec558c259d3320a5d0d4bc5f8c0d6c62a41 +Author: Dan Winship +AuthorDate: Thu Jan 19 10:39:57 2012 -0500 +Commit: Dan Winship +CommitDate: Fri Jan 20 19:50:48 2012 -0500 + + g_date_time_format: fix output in non-UTF-8 locales + + In non-UTF-8 locales, the translations and nl_langinfo() return values + must be converted to UTF-8 before being returned to the caller. + Likewise, when making a recursive call to expand a format like '%x', + the format string must first be converted to UTF-8. + + https://bugzilla.gnome.org/show_bug.cgi?id=668250 + + configure.ac | 26 +-- + glib/gdatetime.c | 574 + +++++++++++++++++++++++++++++-------------------- + glib/tests/gdatetime.c | 63 ++++++ + 3 files changed, 413 insertions(+), 250 deletions(-) + +commit 9fa374ccf7f360c54c29a0cee746b20820ae4afa +Author: Matthias Clasen +AuthorDate: Fri Jan 20 15:42:44 2012 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 20 15:42:44 2012 -0500 + + bump rev + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e4642d58adf802772f3f2e39566aee300d395742 +Author: Matthias Clasen +AuthorDate: Fri Jan 20 15:10:29 2012 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 20 15:10:29 2012 -0500 + + 2.31.12 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f2b760ea188bc3f0d373d0ab6e0ebfbeea62a707 +Author: Matthias Clasen +AuthorDate: Fri Jan 20 15:10:00 2012 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 20 15:10:00 2012 -0500 + + Updates + + NEWS | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +commit a461f70080f4fb7127ee59619abed803dbdc2353 +Author: Matthias Clasen +AuthorDate: Fri Jan 20 08:08:06 2012 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 20 08:08:06 2012 -0500 + + Silence some compiler warnings + + gio/gmenumarkup.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2c864a1bb2fa25b82dd439c705c2e9ae23f29c5d +Author: Matthias Clasen +AuthorDate: Fri Jan 20 08:07:52 2012 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 20 08:07:52 2012 -0500 + + Silence a compiler warning + + gio/gmemoryinputstream.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 8852d4e9a08e7fbc9df7fb99a54b112f5049ee19 +Author: Matthias Clasen +AuthorDate: Fri Jan 20 08:02:26 2012 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 20 08:03:38 2012 -0500 + + Fix a refcounting error + + 'new' is created floating, therefore it is consumed by + g_settings_set, and unreffing it after that call is not right. + + gio/gsettings-tool.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 6784468625a77b3daa1247f2199bc11714cb4eca +Author: Ryan Lortie +AuthorDate: Thu Jan 19 22:13:51 2012 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 19 22:13:51 2012 -0500 + + Note G_MESSAGES_DEBUG in README + + README.in | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit d683c201f93cdb3c98c4ee16b085f748d63df789 +Author: Ryan Lortie +AuthorDate: Thu Jan 19 10:49:06 2012 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 19 10:50:29 2012 -0500 + + tests for GSettings action binding + + https://bugzilla.gnome.org/show_bug.cgi?id=668279 + + gio/tests/gsettings.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 46 insertions(+) + +commit 1d98d18f64edddddea314630e9830a56082c2639 +Author: Ryan Lortie +AuthorDate: Thu Jan 19 09:40:24 2012 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 19 10:50:29 2012 -0500 + + add a way to create a GAction from GSettings + + g_settings_create_action() will create a GAction for the named key, + allowing it to be added to the action group of the application + (so that + the setting can be directly manipulated from menus, for example). + + https://bugzilla.gnome.org/show_bug.cgi?id=668279 + + docs/reference/gio/gio-sections.txt | 3 + + gio/gio.symbols | 1 + + gio/gsettings.c | 262 + ++++++++++++++++++++++++++++++++++++ + gio/gsettings.h | 3 + + 4 files changed, 269 insertions(+) + +commit cf48434867bf6fa074f9a0a67cf03b5c2157170a +Author: Ryan Lortie +AuthorDate: Thu Jan 19 09:01:08 2012 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 19 10:49:31 2012 -0500 + + gsignal: add g_signal_handlers_disconnect_by_data + + Similar to g_signal_handlers_disconnect_by_func() but disconnects all + functions that use the given user_data. + + https://bugzilla.gnome.org/show_bug.cgi?id=668269 + + gobject/gsignal.h | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +commit 41fbf42c3cbebcf061d023d35e2a4dff5ba7e7de +Author: Murray Cumming +AuthorDate: Thu Jan 19 16:18:05 2012 +0100 +Commit: Murray Cumming +CommitDate: Thu Jan 19 16:18:05 2012 +0100 + + gioenums.h: Remove a trailing comma. + + gio/gioenums.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c95e9085296a1c76124896bf6bedd772cdef4c5e +Author: Ryan Lortie +AuthorDate: Wed Jan 18 22:15:30 2012 -0500 +Commit: Ryan Lortie +CommitDate: Wed Jan 18 22:16:23 2012 -0500 + + GSettingsSchema: ignore empty schema caches + + glib-compile-schemas used to generate these. They're harmless + and they + mean that no schemas are installed in a particular directory, so just + ignore them. + + https://bugzilla.gnome.org/show_bug.cgi?id=656301 + + gio/gsettingsschema.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit d8b295abb3e34ce8fe5e7c16bf3ae208d70a3205 +Author: Christian Persch +AuthorDate: Sat Jan 14 21:28:29 2012 +0100 +Commit: Christian Persch +CommitDate: Wed Jan 18 19:43:17 2012 +0100 + + resources: Plug mem leaks in resource compiler + + ==13007== 173 bytes in 1 blocks are definitely lost in loss record + 90 of 106 + ==13007== at 0x402AD89: malloc (vg_replace_malloc.c:236) + ==13007== by 0x407DDBA: standard_malloc (gmem.c:85) + ==13007== by 0x407E318: g_try_malloc (gmem.c:271) + ==13007== by 0x40654DE: g_file_get_contents (gfileutils.c:756) + ==13007== by 0x804A531: main (glib-compile-resources.c:580) + + ==13007== 521 (56 direct, 465 indirect) bytes in 1 blocks are + definitely lost in loss record 100 of 106 + ==13007== at 0x402AD89: malloc (vg_replace_malloc.c:236) + ==13007== by 0x407DDBA: standard_malloc (gmem.c:85) + ==13007== by 0x407E160: g_malloc (gmem.c:159) + ==13007== by 0x4091D8D: g_slice_alloc (gslice.c:1003) + ==13007== by 0x40674A1: g_hash_table_new_full (ghash.c:676) + ==13007== by 0x804B252: gvdb_hash_table_new (gvdb-builder.c:76) + ==13007== by 0x43C66B2: (below main) (libc-start.c:226) + + gio/glib-compile-resources.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 54b986d9187f3935f09b7ba04a9644f8f7c8556e +Author: Ryan Lortie +AuthorDate: Mon Jan 16 14:47:08 2012 -0500 +Commit: Ryan Lortie +CommitDate: Wed Jan 18 13:39:22 2012 -0500 + + GApplication: drop support for appmenu/menubars + + This has been moved over to GtkApplication now. + + https://bugzilla.gnome.org/show_bug.cgi?id=668118 + + gio/gapplication.c | 105 +----------------------------- + gio/gapplicationimpl-dbus.c | 154 + -------------------------------------------- + 2 files changed, 1 insertion(+), 258 deletions(-) + +commit 7a2e6ab79132db79987e67c08ff12be7b46eed62 +Author: Dan Winship +AuthorDate: Wed Jan 18 13:28:00 2012 -0500 +Commit: Dan Winship +CommitDate: Wed Jan 18 13:28:00 2012 -0500 + + update .gitignores + + .gitignore | 1 - + gio/.gitignore | 1 + + gio/tests/.gitignore | 8 ++++++++ + 3 files changed, 9 insertions(+), 1 deletion(-) + +commit da9d98728dd6b43be2d9e51707e41e8ae1299676 +Author: Dan Winship +AuthorDate: Wed Jan 18 12:05:07 2012 -0500 +Commit: Dan Winship +CommitDate: Wed Jan 18 12:07:11 2012 -0500 + + Fix glib-compile-resources usage when cross-compiling + + Copy the behavior of glib-genmarshal: require an installed copy of it, + and use that rather than the built copy. + + configure.ac | 5 +++++ + gio/tests/Makefile.am | 16 +++++++++++----- + 2 files changed, 16 insertions(+), 5 deletions(-) + +commit 7a0bddd768b8f88c94ecf15ac026cad16af4e7f4 +Author: Will Thompson +AuthorDate: Wed Jan 18 10:14:37 2012 +0000 +Commit: Will Thompson +CommitDate: Wed Jan 18 16:16:58 2012 +0000 + + GDBusConnection: note that exit-on-close is sometimes TRUE + + g_bus_get_finish() and g_bus_get_sync() both document that the + returned + object will usually have exit-on-close set to TRUE, but the property's + documentation specified that its default is FALSE. While that's + technically true from a GObject perspective, it's not accurate + from the + API user's perspective. + + https://bugzilla.gnome.org/show_bug.cgi?id=668163 + + Reviewed-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/gdbusconnection.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit d077b66ee9b480569095e605ce98edab61afbb1c +Author: Xavier Claessens +AuthorDate: Mon Jan 16 14:51:19 2012 +0100 +Commit: Xavier Claessens +CommitDate: Wed Jan 18 15:21:56 2012 +0100 + + GUnixConnection: add async variant for send/receive_credentials() + + https://bugzilla.gnome.org/show_bug.cgi?id=629503 + + docs/reference/gio/gio-sections.txt | 4 + + gio/gio.symbols | 4 + + gio/gunixconnection.c | 195 + +++++++++++++++++++++++++++++++----- + gio/gunixconnection.h | 15 ++- + 4 files changed, 193 insertions(+), 25 deletions(-) + +commit 3691194b357aa5a045f8f87658150670834f45c2 +Author: Dan Winship +AuthorDate: Wed Jan 18 09:02:21 2012 -0500 +Commit: Dan Winship +CommitDate: Wed Jan 18 09:02:21 2012 -0500 + + g_base64_encode_step: clarify break_lines behavior a bit + + break_lines uses LFs, not CRLFs like you might expect (since it's + designed for email-related use), but we can't change that now since + the caller has to allocate the output buffer and so the + number-of-bytes-output is part of the ABI. So, just document that. + + https://bugzilla.gnome.org/show_bug.cgi?id=668158 + + glib/gbase64.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 08036ce30318a666a4f9df22512d74805be0d498 +Author: Dan Winship +AuthorDate: Tue Jan 17 19:46:34 2012 -0500 +Commit: Dan Winship +CommitDate: Tue Jan 17 19:46:57 2012 -0500 + + gsocket: make this compile on Windows again + + https://bugzilla.gnome.org/show_bug.cgi?id=668071 + + configure.ac | 2 +- + gio/gsocket.c | 24 +++++++++++++----------- + gio/gsocket.h | 4 ++-- + 3 files changed, 16 insertions(+), 14 deletions(-) + +commit 28f3d4dbffa108c2026efce714e09767c4794237 +Author: Kjartan Maraas +AuthorDate: Tue Jan 17 17:11:43 2012 +0100 +Commit: Kjartan Maraas +CommitDate: Tue Jan 17 17:11:43 2012 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 92 + +++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 51 insertions(+), 41 deletions(-) + +commit 3fe710c0b59b881c7b4090601f8c1a33876af78d +Author: Kjartan Maraas +AuthorDate: Tue Jan 17 17:10:19 2012 +0100 +Commit: Kjartan Maraas +CommitDate: Tue Jan 17 17:10:19 2012 +0100 + + Fix broken build with -Wundefined + + glib/gmacros.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d825828b7b00f67a06ef1b6ba7ddb9c5dd6b0d87 +Author: Alexander Larsson +AuthorDate: Tue Jan 17 12:32:37 2012 +0100 +Commit: Alexander Larsson +CommitDate: Tue Jan 17 12:32:37 2012 +0100 + + resources: Skip initial underscores in resource section names + + Initial underscores are used in c identifier to make them private, + for instance in Gtk+. However, we don't want to have this in the + resource section name, that just looks ugly. + + gio/glib-compile-resources.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 7dfbe5aa3040d042131b9ff8ac1be0568d56303a +Author: Dan Winship +AuthorDate: Mon Jan 16 17:15:06 2012 -0500 +Commit: Dan Winship +CommitDate: Mon Jan 16 17:16:40 2012 -0500 + + gsocket: Use alternate IPv6 multicast group sockopt names + + Apparently IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP are more portable than + IPV6_ADD_MEMBERSHIP and IPV6_DROP_MEMBERSHIP. (Windows and Linux have + both, but OS X only has the latter.) + + gio/gsocket.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8390f3bf7e49bbacd96b356c06fa2ebe3edeaf4c +Author: Matthias Clasen +AuthorDate: Mon Jan 16 14:46:26 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 16 14:46:26 2012 -0500 + + Back to the odd + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 639c5867c7d86cb50d5dde54acaa9ec0fcdd7648 +Author: Matthias Clasen +AuthorDate: Mon Jan 16 14:00:18 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 16 14:00:45 2012 -0500 + + 2.31.10 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1945ed407b4ee6e951cc1644274f9cac49e3f045 +Author: Matthias Clasen +AuthorDate: Mon Jan 16 11:50:07 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 16 14:00:45 2012 -0500 + + Updates + + NEWS | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit bf7408c30bac5b0a20202be5aaa850dd0ca1e671 +Author: Dan Winship +AuthorDate: Thu Dec 29 09:42:25 2011 -0500 +Commit: Dan Winship +CommitDate: Mon Jan 16 13:37:02 2012 -0500 + + GInetSocketAddress: add IPv6 flowinfo and scope_id fields + + struct sin6_addr has two additional fields that struct sin_addr + doesn't. Add support for those to GInetSocketAddress, and make sure + they don't get lost when converting between glib and native types. + + https://bugzilla.gnome.org/show_bug.cgi?id=635554 + + docs/reference/gio/gio-sections.txt | 2 + + gio/ginetsocketaddress.c | 109 + ++++++++++++++++++++++++++++++++++-- + gio/ginetsocketaddress.h | 12 ++-- + gio/gio.symbols | 2 + + gio/gsocketaddress.c | 7 ++- + gio/tests/socket.c | 40 +++++++++++++ + 6 files changed, 162 insertions(+), 10 deletions(-) + +commit c71fc7477ed3ebe513432cba21d69ca99d7eb81c +Author: Dan Winship +AuthorDate: Thu Dec 29 09:18:53 2011 -0500 +Commit: Dan Winship +CommitDate: Mon Jan 16 13:37:02 2012 -0500 + + ginetaddress.c: fix an incorrect enum name in the docs + + gio/ginetaddress.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 76f46b4f33c178fe9a2c0113b38dca1dc9e87c97 +Author: Sebastian Dröge +AuthorDate: Mon Jan 16 19:22:28 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Mon Jan 16 19:22:28 2012 +0100 + + GSocket: Use correct type for SO_BROADCAST parameter + + gio/gsocket.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d44bb6ef64bf309efa393d8c89138ba23ad6c004 +Author: Sebastian Dröge +AuthorDate: Mon Jan 16 15:49:50 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Mon Jan 16 18:41:40 2012 +0100 + + GSocket: Reset the timeout in the GSocket GSource after it was + triggered + + https://bugzilla.gnome.org/show_bug.cgi?id=667989 + + gio/gsocket.c | 17 ++++++++++++++--- + 1 file changed, 14 insertions(+), 3 deletions(-) + +commit fbdb8128dce3ef013640c7142888a76f56a7f0f8 +Author: Ole André Vadla Ravnås +AuthorDate: Mon Jan 16 14:00:49 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Mon Jan 16 18:41:40 2012 +0100 + + GSocket: Add function to get the currently available bytes for reading + + https://bugzilla.gnome.org/show_bug.cgi?id=668009 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 1 + + gio/gsocket.c | 34 + ++++++++++++++++++++++++++++++++++ + gio/gsocket.h | 2 ++ + 4 files changed, 38 insertions(+) + +commit ffb5f8b10191ddf51ccd021c1e4dbba4eafbc370 +Author: Sebastian Dröge +AuthorDate: Fri Jan 13 13:01:35 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Mon Jan 16 18:41:40 2012 +0100 + + GSocket: Add function to set/get the broadcast setting on a socket + + https://bugzilla.gnome.org/show_bug.cgi?id=623187 + + docs/reference/gio/gio-sections.txt | 2 + + gio/gio.symbols | 2 + + gio/gsocket.c | 94 + +++++++++++++++++++++++++++++++++++++ + gio/gsocket.h | 4 ++ + 4 files changed, 102 insertions(+) + +commit 5560d9b8800de1144d77ed924286759286b7d27e +Author: Sebastian Dröge +AuthorDate: Fri Jan 13 12:48:02 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Mon Jan 16 18:41:40 2012 +0100 + + GSocket: Add function for setting unicast TTL + + docs/reference/gio/gio-sections.txt | 2 + + gio/gio.symbols | 2 + + gio/gsocket.c | 114 + ++++++++++++++++++++++++++++++++++++ + gio/gsocket.h | 5 ++ + 4 files changed, 123 insertions(+) + +commit 03b40522df4fb247f76e5948eddd2d7a02c097a5 +Author: Sebastian Dröge +AuthorDate: Fri Jan 13 12:53:50 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Mon Jan 16 18:41:40 2012 +0100 + + GSocket: Add support for source-specific multicast (RFC 4604) + + gio/gsocket.c | 22 +++++++++++++++++----- + gio/gsocket.h | 2 ++ + 2 files changed, 19 insertions(+), 5 deletions(-) + +commit 97f25892ea38e227fe802d0cc50fd88be12cdb17 +Author: Sebastian Dröge +AuthorDate: Fri Jan 13 12:37:31 2012 +0100 +Commit: Sebastian Dröge +CommitDate: Mon Jan 16 18:41:40 2012 +0100 + + GSocket: Add possibility to join a multicast group only on a specific + interface + + configure.ac | 4 ++++ + gio/gnetworkingprivate.h | 1 + + gio/gsocket.c | 28 +++++++++++++++++++++++++--- + gio/gsocket.h | 2 ++ + 4 files changed, 32 insertions(+), 3 deletions(-) + +commit a62d1bb74728aa80af2410cee57950a545f6fa04 +Author: Dan Winship +AuthorDate: Thu Dec 29 11:01:23 2011 -0500 +Commit: Sebastian Dröge +CommitDate: Mon Jan 16 18:41:40 2012 +0100 + + GSocket: Add multicast-related functions + + Add APIs for sending and receiving multicast datagrams with GSocket. + + Based on an earlier patch from Olivier Chalouhi. + + https://bugzilla.gnome.org/show_bug.cgi?id=626589 + + docs/reference/gio/gio-sections.txt | 7 + + gio/gio.symbols | 6 + + gio/gsocket.c | 337 + +++++++++++++++++++++++++++++++++++- + gio/gsocket.h | 13 ++ + 4 files changed, 362 insertions(+), 1 deletion(-) + +commit 26b3fbd141089d493adb700be0366e8e7f9e595b +Author: Kjartan Maraas +AuthorDate: Sun Jan 15 15:52:24 2012 +0100 +Commit: Kjartan Maraas +CommitDate: Mon Jan 16 16:59:48 2012 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 239 + +++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 162 insertions(+), 77 deletions(-) + +commit afe7a2d1368fc8dff0735757c096ded3d540ae42 +Author: Dan Winship +AuthorDate: Thu Jan 5 13:04:37 2012 -0500 +Commit: Dan Winship +CommitDate: Mon Jan 16 09:42:50 2012 -0500 + + GAsyncInitable: fix subclassibility + + If a class implements GAsyncInitable, and its parent also implements + it, then the subclass needs to call its parent's init_async() before + running its own. This was made more complicated by the fact that the + default init_finish() behavior was handled by the wrapper method + (which can't be used when making the super call) rather than the + default implementation itself. Fix that. + + https://bugzilla.gnome.org/show_bug.cgi?id=667375 + + gio/gasyncinitable.c | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +commit feb120eb40570e803e043e1a87213166ad307c30 +Author: Alexander Larsson +AuthorDate: Mon Jan 16 10:38:35 2012 +0100 +Commit: Alexander Larsson +CommitDate: Mon Jan 16 10:38:35 2012 +0100 + + Fix typo + + registred_resources -> registered_resources + + gio/gresource.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit decac50c1598f75ce781a3c6a68a85c0defe38ac +Author: Patrick Welche +AuthorDate: Thu Jan 12 15:38:15 2012 +0000 +Commit: Matthias Clasen +CommitDate: Sun Jan 15 23:41:27 2012 -0500 + + Protect call to pthread_condattr_setclock with define. + + While here update pthread_attr_setstacksize test to use AC_LINK_IFELSE + and avoid an unused variable in glib/tests/thread.c. + + https://bugzilla.gnome.org/show_bug.cgi?id=667790 + + configure.ac | 22 +++++++++++++++++----- + glib/gthread-posix.c | 2 +- + glib/tests/thread.c | 2 +- + 3 files changed, 19 insertions(+), 7 deletions(-) + +commit 6d9f874330ee27ea09b383cb30718a492f6539dd +Author: Simon McVittie +AuthorDate: Fri Sep 30 14:02:29 2011 +0100 +Commit: Matthias Clasen +CommitDate: Sun Jan 15 23:21:03 2012 -0500 + + g_error_new_valist, g_error_copy: warn if domain is 0 or message + is NULL + + Neither of those usages is valid, but there's a lot of use of 0 as a + domain "in the wild", so we can't g_return_if_fail yet. + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=660371 + + glib/gerror.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit 186c15fc879606866215b40f1bfb730b1c47a727 +Author: Matthias Clasen +AuthorDate: Sun Jan 15 23:18:09 2012 -0500 +Commit: Matthias Clasen +CommitDate: Sun Jan 15 23:18:09 2012 -0500 + + GError: small documentation addition + + Document that out variables are not guaranteed to be set to + defined values if an error is thrown. Inspired by bug 658315 + + glib/gerror.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 5377c0de0108d292ea3e23fa6d90410f9ac9fa00 +Author: Matthias Clasen +AuthorDate: Sun Jan 15 22:15:10 2012 -0500 +Commit: Matthias Clasen +CommitDate: Sun Jan 15 22:15:10 2012 -0500 + + Beef up Libs.private in glib-2.0.pc + + This should help getting static builds working on mingw. + Based on a patch by Volker Grabsch, bug 619126. + + At the same time, drop the unnecessary GLIB_RT_LIBS variable; + we are already adding -lrt to G_THREAD_LIBS. + + configure.ac | 4 +--- + gio-2.0.pc.in | 2 +- + glib-2.0.pc.in | 2 +- + glib/Makefile.am | 2 +- + 4 files changed, 4 insertions(+), 6 deletions(-) + +commit 7e542e97a97a02592beea6a8ffff497f538df3ab +Author: Matthias Clasen +AuthorDate: Sun Jan 15 21:09:31 2012 -0500 +Commit: Matthias Clasen +CommitDate: Sun Jan 15 21:10:54 2012 -0500 + + Trivial docs fix + + I like GLib to be consistently capitalized in the docs. + + docs/reference/gio/glib-compile-resources.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4abe25dbbdd1ba0fd430ef61a02334b8be497fc6 +Author: Daniel Mustieles +AuthorDate: Sun Jan 15 19:28:05 2012 +0100 +Commit: Daniel Mustieles +CommitDate: Sun Jan 15 19:28:05 2012 +0100 + + Updated Spanish translation + + po/es.po | 259 + +++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 176 insertions(+), 83 deletions(-) + +commit 673396fb654036f7eb7ba152bb6966e48c1c0e5d +Author: Dan Winship +AuthorDate: Sun Jan 15 09:35:11 2012 -0500 +Commit: Dan Winship +CommitDate: Sun Jan 15 09:39:14 2012 -0500 + + gmain: fix adding a child source to an already-attached source + + Adding a child source to an already-attached parent source would + crash, because we were passing the parent's context when setting the + child's priority. + + glib/gmain.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 87dc86240835313f0cfe503b2d68a09301ad6240 +Author: Christian Persch +AuthorDate: Sun Jan 15 00:34:56 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Jan 15 13:03:16 2012 +0100 + + Ensure to generate a flags GType for empty Flags enums + + When the flags enum only has the default NONE = 0 entry, glib-mkenums + creates an enum type for it, not a flags type. Add an annotation + to the + enum to ensure the correct GType is created. + + Bug #667938. + + gio/gioenums.h | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit b717ef86ade12781b95464f4de26c1c1ec2f2df2 +Author: Christian Persch +AuthorDate: Sat Jan 14 21:13:03 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Jan 15 13:03:09 2012 +0100 + + resources: Use g_set_error_literal where appropriate + + gio/gresourcefile.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +commit 870fc484d994093b1d4ebc8d2f52665530693e59 +Author: Christian Persch +AuthorDate: Sun Jan 15 00:40:25 2012 +0100 +Commit: Christian Persch +CommitDate: Sun Jan 15 13:02:59 2012 +0100 + + Add missing Since: docs + + gio/gioenums.h | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 91e3a673767214a86c3316f8851d93a911953f78 +Author: Fran Diéguez +AuthorDate: Sun Jan 15 00:42:25 2012 +0100 +Commit: Fran Diéguez +CommitDate: Sun Jan 15 00:42:25 2012 +0100 + + Updated Galician translations + + po/gl.po | 733 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 414 insertions(+), 319 deletions(-) + +commit 0fd61489e5e02312dd54ad721bcca7c45cf367a4 +Author: Rico Tzschichholz +AuthorDate: Sat Jan 14 11:18:07 2012 +0100 +Commit: Rico Tzschichholz +CommitDate: Sat Jan 14 11:18:07 2012 +0100 + + gio/tests: Fix out-of-source build and use uninstalled libraries + + gio/tests/Makefile.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a6e149e41f359c4bf2ddab341dad20e7fb2bd9f3 +Author: Benjamin Otte +AuthorDate: Sat Jan 14 01:13:42 2012 +0100 +Commit: Benjamin Otte +CommitDate: Sat Jan 14 01:15:16 2012 +0100 + + array: return_if_fail() if element size is 0 + + This is particular useful for: + g_array_new (sizeof (MyStruct), FALSE, FALSE); + because the correct incantation is + g_array_new (FALSE, FALSE, sizeof (MyStruct)); + and these warnings will trigger in the first situation. + + glib/garray.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 9d52243790aa460c228bdcf7ee8e28f78ecd7b13 +Author: Benjamin Otte +AuthorDate: Sun Jan 1 21:51:40 2012 +0100 +Commit: Benjamin Otte +CommitDate: Sat Jan 14 01:15:16 2012 +0100 + + values: Use v_pointer for g_value_set_gtype() + + ... and g_value_get_gtype(). G_TYPE_GTYPE is a pointer type, so it's + values should use the v_pointer member. This is especially true, + because + the value collectors from varargs in gvaluecollector.h use that, too. + + This should only cause issues when sizeof(glong) != sizeof(gpointer), + and I'm not aware of any such platform. Maybe win64? + + gobject/gvaluetypes.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 86cd3018e0c5205707b2db8b9cc8537c2f60678d +Author: Rico Tzschichholz +AuthorDate: Fri Jan 13 23:48:12 2012 +0100 +Commit: Rico Tzschichholz +CommitDate: Fri Jan 13 23:48:12 2012 +0100 + + gio/tests: add some missing files to EXTRA_DIST + + gio/tests/Makefile.am | 5 +++++ + 1 file changed, 5 insertions(+) + +commit e3fe25669227944381119852b89beead267c604c +Author: Rico Tzschichholz +AuthorDate: Fri Jan 13 23:18:01 2012 +0100 +Commit: Rico Tzschichholz +CommitDate: Fri Jan 13 23:18:01 2012 +0100 + + gio: Fix for -Wformat-security + + gio/gresourcefile.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 8735f53ae4f1530b07ff6cf1a5211378b09cd50d +Author: Rico Tzschichholz +AuthorDate: Fri Jan 13 22:35:44 2012 +0100 +Commit: Rico Tzschichholz +CommitDate: Fri Jan 13 22:35:44 2012 +0100 + + tests: Fix build failure of resources by linking against + libgmodule-2.0.la + + gio/tests/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 0ed77c4fdd44d717a7ab2e55b6d3551975133215 +Author: Piotr Drąg +AuthorDate: Fri Jan 13 21:11:03 2012 +0100 +Commit: Piotr Drąg +CommitDate: Fri Jan 13 21:11:03 2012 +0100 + + Updated POTFILES.in + + po/POTFILES.in | 3 +++ + 1 file changed, 3 insertions(+) + +commit 056cec779a02d33a49fa7bdd9abe621d6bdc95d4 +Author: Alexander Larsson +AuthorDate: Thu Jan 12 14:50:56 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Jan 13 17:12:57 2012 +0100 + + Add GResource functions to gio.symbols + + gio/gio.symbols | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +commit 186e2d20780d23ebe234e9432ee7bfc47fd25ba3 +Author: Alexander Larsson +AuthorDate: Thu Jan 12 21:09:15 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Jan 13 17:12:57 2012 +0100 + + Add GLIB_COMPILE_RESOURCES to glib m4 macros + + m4macros/glib-2.0.m4 | 3 +++ + 1 file changed, 3 insertions(+) + +commit ac51c338ed4c503dab0927e64e8de7cad5a73e0a +Author: Alexander Larsson +AuthorDate: Thu Jan 12 20:51:56 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Jan 13 17:12:57 2012 +0100 + + Add glib_compile_resources variable to the gio pc file + + gio-2.0.pc.in | 1 + + 1 file changed, 1 insertion(+) + +commit c7dfea30b358d737a2711f25a7167968fede4c05 +Author: Alexander Larsson +AuthorDate: Fri Jan 13 16:39:28 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Jan 13 17:12:57 2012 +0100 + + Add documentation for GResource + + docs/reference/gio/Makefile.am | 1 + + docs/reference/gio/gio-docs.xml | 5 ++ + docs/reference/gio/gio-sections.txt | 43 +++++++++++ + docs/reference/gio/glib-compile-resources.xml | 101 + ++++++++++++++++++++++++++ + 4 files changed, 150 insertions(+) + +commit e041843b3e70df95c8909cf4e35728d0d88c1530 +Author: Alexander Larsson +AuthorDate: Wed Dec 21 23:37:56 2011 +0100 +Commit: Alexander Larsson +CommitDate: Fri Jan 13 17:12:57 2012 +0100 + + Support resource:/// uris + + gio/Makefile.am | 2 + + gio/gresourcefile.c | 875 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gresourcefile.h | 51 +++ + gio/gvfs.c | 11 + + gio/tests/resources.c | 40 +++ + 5 files changed, 979 insertions(+) + +commit 75439298f88b5a56130cd1fc03c944f0326471e5 +Author: Alexander Larsson +AuthorDate: Wed Dec 21 21:45:16 2011 +0100 +Commit: Alexander Larsson +CommitDate: Fri Jan 13 17:12:53 2012 +0100 + + Add tests for GResource + + gio/tests/Makefile.am | 32 +++- + gio/tests/resourceplugin.c | 18 ++ + gio/tests/resources.c | 436 + ++++++++++++++++++++++++++++++++++++++++++ + gio/tests/test.gresource.xml | 10 + + gio/tests/test1.txt | 1 + + gio/tests/test2.gresource.xml | 6 + + gio/tests/test2.txt | 1 + + gio/tests/test3.gresource.xml | 6 + + gio/tests/test3.txt | 1 + + gio/tests/test4.gresource.xml | 6 + + 10 files changed, 516 insertions(+), 1 deletion(-) + +commit 827657491dba97392f5ba38a5f5c13f8f2431b10 +Author: Alexander Larsson +AuthorDate: Wed Dec 21 21:43:20 2011 +0100 +Commit: Alexander Larsson +CommitDate: Fri Jan 13 17:12:50 2012 +0100 + + Initial version of glib-compile-resources + + This is the basic utility to create resource files, either binary + versions or source files that can be compiled into your app. + + gio/Makefile.am | 13 +- + gio/glib-compile-resources.c | 693 + +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 705 insertions(+), 1 deletion(-) + +commit b87cf491630032de24c2c4ac680b6ea17613b2c8 +Author: Alexander Larsson +AuthorDate: Wed Dec 21 21:38:23 2011 +0100 +Commit: Alexander Larsson +CommitDate: Fri Jan 13 17:12:45 2012 +0100 + + Initial version of GResource + + GResource is a bundle of files combined into a single binary blog. + The API lets you access the files the resource contains by + using resource paths. You can also register resources with a + global list and access these globally in a merged resource namespace. + + The normal way this is used is to link in the resources into your + application/library and have it be automatically registred. + + Resources are compiled from an xml description using + glib-compile-resources. + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gioenums.h | 38 +++ + gio/giotypes.h | 8 + + gio/gresource.c | 844 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gresource.h | 98 +++++++ + 6 files changed, 991 insertions(+) + +commit d85b722734a6fcfe94032f6113de9e5c190fd7c3 +Merge: 9ef4554 73acf01 +Author: Alexander Larsson +AuthorDate: Fri Jan 13 16:12:56 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Jan 13 16:12:56 2012 +0100 + + Merge remote-tracking branch 'gvdb/master' + +commit 9ef4554a0b252b092ee0e6731305b829d088f0cc +Author: Alexander Larsson +AuthorDate: Wed Dec 21 21:13:21 2011 +0100 +Commit: Alexander Larsson +CommitDate: Fri Jan 13 16:02:47 2012 +0100 + + Add macros to handle constructor functions on the compilers that + support it + + This is only supported on some compilers, so we define + G_HAS_CONSTRUCTORS + when it is supported. However, when it is supported we guarantee that + both constructors and destructors work, in executables as well + as shared + libraries (including runtime unloading of shared libraries). + + Usage is a bit unorthodox, as some compilers need to use #pragma to + implement constructors, and #pragma can't be used in macros. + + The canonical way to use this: + + #ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA + #pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(my_constructor) + #endif + G_DEFINE_CONSTRUCTOR(my_constructor) + + static void my_constructor (void) + { + ... + + #ifdef G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA + #pragma G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(my_destructor) + #endif + G_DEFINE_DESTRUCTOR(my_destructor) + + static void my_destructor (void) + { + ... + + glib/gmacros.h | 93 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 93 insertions(+) + +commit 73acf016185f323a8caa268b53284621d805fb15 +Author: Alexander Larsson +AuthorDate: Fri Jan 13 15:59:56 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Jan 13 15:59:56 2012 +0100 + + Support creating a GvdbReader from data + + This is needed for the glib resource work. + + gvdb-reader.c | 146 + ++++++++++++++++++++++++++++++++++++++++++---------------- + gvdb-reader.h | 10 ++++ + 2 files changed, 117 insertions(+), 39 deletions(-) + +commit d1f6300363bb8afc5f7f1e54663a7201587bcd41 +Author: Murray Cumming +AuthorDate: Fri Jan 13 09:21:46 2012 +0100 +Commit: Alexander Larsson +CommitDate: Fri Jan 13 09:23:06 2012 +0100 + + Docs: Changed can not to cannot. + + This is a backport from the glib commit + 30fdc1a79938540af7bad0af68d0a3b8af14f117 + + gvdb-reader.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3db6241b12bccab05be6916e1f843091a3cea380 +Author: Yaron Shahrabani +AuthorDate: Fri Jan 13 09:38:35 2012 +0200 +Commit: Yaron Shahrabani +CommitDate: Fri Jan 13 09:38:35 2012 +0200 + + Updated Hebrew translation. + + po/he.po | 442 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 221 insertions(+), 221 deletions(-) + +commit 9e732ab0ea742d57a46f72be475ac1d2f026eae2 +Author: Javier Jardón +AuthorDate: Tue Dec 6 23:15:58 2011 +0000 +Commit: Javier Jardón +CommitDate: Thu Jan 12 14:13:07 2012 +0000 + + docs/gobject/tutorial: Use g_object_class_install_properties + + docs/reference/gobject/tut_gobject.xml | 51 + ++++++++++++++++++---------------- + docs/reference/gobject/tut_howto.xml | 33 ++++++++++++++-------- + 2 files changed, 49 insertions(+), 35 deletions(-) + +commit c3d6595f5a9230fc579edd9a646351b22ca6d976 +Author: Evan Nemerson +AuthorDate: Sat Jan 7 09:54:53 2012 -0800 +Commit: Colin Walters +CommitDate: Wed Jan 11 15:50:08 2012 -0500 + + GIO: add lots of annotations for Vala bindings + + https://bugzilla.gnome.org/show_bug.cgi?id=667447 + + gio/gapplicationcommandline.c | 2 +- + gio/gbufferedinputstream.c | 3 ++- + gio/gdbusintrospection.c | 2 +- + gio/gdbusmessage.c | 15 ++++++++------- + gio/gdbusserver.c | 2 +- + gio/gemblemedicon.c | 2 +- + gio/gfile.c | 18 +++++++++--------- + gio/gfileicon.c | 3 ++- + gio/gfileinfo.c | 2 +- + gio/gfilemonitor.c | 2 +- + gio/ginetaddress.c | 2 +- + gio/ginitable.c | 2 +- + gio/gmemoryinputstream.c | 4 ++-- + gio/gmountoperation.c | 3 ++- + gio/gnetworkaddress.c | 2 +- + gio/gnetworkservice.c | 2 +- + gio/goutputstream.c | 2 ++ + gio/gsimpleactiongroup.c | 4 ++-- + gio/gsocket.c | 19 ++++++++++++------- + gio/gsocketservice.c | 3 ++- + gio/gthemedicon.c | 6 +++--- + gio/gtlsclientconnection.c | 3 ++- + gio/gtlsdatabase.c | 4 ++-- + gio/gtlsfiledatabase.c | 3 ++- + gio/gtlspassword.c | 1 + + gio/gtlsserverconnection.c | 3 ++- + 26 files changed, 65 insertions(+), 49 deletions(-) + +commit e98f17e5cf1696d418444b23cb092be0eaba3008 +Author: Philip Withnall +AuthorDate: Thu Dec 22 00:16:06 2011 +0000 +Commit: Philip Withnall +CommitDate: Wed Jan 11 20:48:29 2012 +0000 + + Bug 666700 — Add some missing (allow-none) annotations + + Add some missing (allow-none) annotations to GContentType, GIcon and + GHashTable methods. + + Closes: bgo#666700 + + gio/gcontenttype.c | 2 +- + gio/gicon.c | 4 ++-- + glib/ghash.c | 8 ++++---- + 3 files changed, 7 insertions(+), 7 deletions(-) + +commit f8843a0feb09898fea320a5a65a443bc5a70d78e +Author: Matthias Clasen +AuthorDate: Tue Jan 10 00:40:14 2012 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 10 00:40:14 2012 -0500 + + Back to odd + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4a016d82f1246b6bb58e4374f318ab47a5806672 +Author: Matthias Clasen +AuthorDate: Tue Jan 10 00:39:20 2012 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 10 00:39:20 2012 -0500 + + 2.31.8 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 93849185ca8b5bfdece2b80f21f25efd160f0019 +Author: Matthias Clasen +AuthorDate: Mon Jan 9 23:23:27 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 9 23:23:27 2012 -0500 + + Updates + + NEWS | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 56 insertions(+), 1 deletion(-) + +commit 00c00e2f3f3194202877e54a2429bd1a4f9c5526 +Author: Matthias Clasen +AuthorDate: Mon Jan 9 21:49:08 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 9 21:49:08 2012 -0500 + + Add G_FILE_ATTRIBUTE_FILESYSTEM_USED to get exact used space + + This is implemented by with statfs_buffer.f_bavail (free blocks + for unprivileged users) as a default way to retrieve real free space. + Based on a patch by Marcus Carlson, bug 625751. + + docs/reference/gio/gio-sections.txt | 1 + + gio/gfileattribute.c | 1 + + gio/gfileinfo.h | 11 +++++++++++ + gio/glocalfile.c | 19 +++++++++++++++++++ + 4 files changed, 32 insertions(+) + +commit 31960257a6f52a4ec92d70986969f3f7ce336c4c +Author: Matthias Clasen +AuthorDate: Mon Jan 9 21:35:13 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 9 21:35:13 2012 -0500 + + Make glocalfile.c more readable + + The many nested ifdefs here really deserve some annotations. + Based on a patch by Marcus Carlson, bug 625751. + + gio/glocalfile.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit fd7e44383810cd939d8e0daf880817f67ea1dce2 +Author: Ravi Sankar Guntur +AuthorDate: Fri Jan 6 22:43:19 2012 +0530 +Commit: Matthias Clasen +CommitDate: Mon Jan 9 19:27:41 2012 -0500 + + add g_queue_free_full to glib-sections.txt + + Signed-off-by: Ravi Sankar Guntur + + https://bugzilla.gnome.org/show_bug.cgi?id=667331 + + docs/reference/glib/glib-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit 0ed2cdb0d926e28188f1ac924c8216dfa9db24a6 +Author: Ravi Sankar Guntur +AuthorDate: Thu Jan 5 10:51:03 2012 +0530 +Commit: Matthias Clasen +CommitDate: Mon Jan 9 19:27:39 2012 -0500 + + Use g_queue_free_full() convenience function. + + https://bugzilla.gnome.org/show_bug.cgi?id=667331 + + Signed-off-by: Ravi Sankar Guntur + + gio/gdbusprivate.c | 12 +++--------- + glib/gmain.c | 22 +++++++++++----------- + 2 files changed, 14 insertions(+), 20 deletions(-) + +commit a76d85de50285c7f376acefd14e66764afc1321a +Author: Ihar Hrachyshka +AuthorDate: Tue Jan 10 01:00:29 2012 +0300 +Commit: Ihar Hrachyshka +CommitDate: Tue Jan 10 01:00:29 2012 +0300 + + Updated Belarusian translation. + + po/be.po | 5888 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 2960 insertions(+), 2928 deletions(-) + +commit ddf9633d95235ed783cdab42e79e99b7b0f6bee0 +Author: Matthias Clasen +AuthorDate: Mon Jan 9 15:27:07 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 9 15:27:07 2012 -0500 + + fix a compiler warning + + glib/tests/regex.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 39dc681fc7d9e336d081d0d6559e6dd3454965a0 +Author: Matthias Clasen +AuthorDate: Fri Jan 6 20:48:04 2012 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 9 15:23:25 2012 -0500 + + Realign the hash set example with added api + + Change the name of set_insert to set_add, to better match the + newly added g_hash_table_add. + + glib/ghash.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 875ffc41b72291cc0f2d3efae905cb0b380bb210 +Author: Ryan Lortie +AuthorDate: Mon Jan 9 14:28:10 2012 +0100 +Commit: Ryan Lortie +CommitDate: Mon Jan 9 14:28:25 2012 +0100 + + drop debian/ directory + + debian/README.debian | 30 ----------- + debian/build | 62 --------------------- + debian/changelog | 10 ---- + debian/control | 53 ------------------ + debian/copyright | 8 --- + debian/libglib-cvs-dev.files | 9 ---- + debian/postinst | 7 --- + debian/rules | 126 + ------------------------------------------- + 8 files changed, 305 deletions(-) + +commit 7678b10703ebe84cf869cf5929d89770f3f7f977 +Author: Dan Vrátil +AuthorDate: Mon Jan 9 09:29:20 2012 +0100 +Commit: Dan Vrátil +CommitDate: Mon Jan 9 09:29:20 2012 +0100 + + Fix GHashTable GDB pretty printing (bug #667420) + + glib/glib.py | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit 82740adc61b6d4a6174d033efe1df1303b98eaa1 +Author: Alexander Shopov +AuthorDate: Sun Jan 8 16:48:13 2012 +0200 +Commit: Alexander Shopov +CommitDate: Sun Jan 8 16:48:13 2012 +0200 + + Updated Bulgarian translation + + po/bg.po | 5874 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 2963 insertions(+), 2911 deletions(-) + +commit d141940bc67a1c101dbd893e0b5247d931515159 +Author: Jasper St. Pierre +AuthorDate: Fri Jan 6 14:29:45 2012 -0500 +Commit: Jasper St. Pierre +CommitDate: Fri Jan 6 14:41:08 2012 -0500 + + gthread-posix: Remove misleading documentation comments + + g_thread_init() has done nothing since 2.32, so while the function + still can be used if "g_thread_init() has not yet been called", + it won't do nothing in that case, it will just perform normally. + + glib/gthread-posix.c | 15 --------------- + 1 file changed, 15 deletions(-) + +commit 021e116f0525ce99cea97fb7039d6be804d4145f +Author: Jasper St. Pierre +AuthorDate: Mon Sep 12 23:14:32 2011 -0400 +Commit: Jasper St. Pierre +CommitDate: Fri Jan 6 14:41:08 2012 -0500 + + gbacktrace: g_get_prgname () isn't called for a NULL argument + + https://bugzilla.gnome.org/show_bug.cgi?id=658871 + + glib/gbacktrace.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit a44404f4ecbf9404f32313f8ee9a3fd06e5b0a47 +Author: Kjartan Maraas +AuthorDate: Fri Jan 6 20:35:34 2012 +0100 +Commit: Kjartan Maraas +CommitDate: Fri Jan 6 20:35:34 2012 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 296 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 148 insertions(+), 148 deletions(-) + +commit 20825918a3035e1569eb12f0fc8c4d482b0a27d4 +Author: Daniel Mustieles +AuthorDate: Fri Jan 6 20:31:54 2012 +0100 +Commit: Daniel Mustieles +CommitDate: Fri Jan 6 20:31:54 2012 +0100 + + Updated Spanish translation + + po/es.po | 440 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 211 insertions(+), 229 deletions(-) + +commit 21d2c49f82aa3c73ab77817a80065e747a9d154a +Author: Ryan Lortie +AuthorDate: Fri Jan 6 10:25:03 2012 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 6 10:25:03 2012 -0500 + + minor fixup to last commit + + glib/ghash.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 752f0cac159dc84c03c42f84d9d8a8c923334d43 +Author: Ryan Lortie +AuthorDate: Fri Jan 6 10:09:32 2012 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 6 10:18:41 2012 -0500 + + GHashTable: new 'add' and 'contains' APIs + + These are both convenience APIs that make it slightly nicer to use + GHashTable as a set (which is something we document as officially + supported). + + docs/reference/glib/glib-sections.txt | 2 ++ + glib/ghash.c | 48 + +++++++++++++++++++++++++++++++++++ + glib/ghash.h | 4 +++ + glib/glib.symbols | 2 ++ + 4 files changed, 56 insertions(+) + +commit b87f6f9f8cb789a645b8792cf197328fb686ba55 +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Fri Jan 6 16:58:57 2012 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Fri Jan 6 16:58:57 2012 +0700 + + gio/gsocks5proxy: typo fix + + gio/gsocks5proxy.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6e92646f218ce6d70dc932c5b444150d78928294 +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Fri Jan 6 16:58:28 2012 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Fri Jan 6 16:58:28 2012 +0700 + + Updated Vietnamese translation + + po/vi.po | 114 + +++++++++++++++++++++++++++------------------------------------ + 1 file changed, 49 insertions(+), 65 deletions(-) + +commit 74345b3383132985c04ec2f46846f89d7a51f0a0 +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Fri Jan 6 16:48:13 2012 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Fri Jan 6 16:48:13 2012 +0700 + + po/vi: import from Damned Lies + + po/vi.po | 5906 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 3027 insertions(+), 2879 deletions(-) + +commit 0da8db52cdd928809dc7e78c951ecbb19c51c0a2 +Author: Dan Winship +AuthorDate: Thu Jan 5 12:57:01 2012 -0500 +Commit: Dan Winship +CommitDate: Thu Jan 5 12:57:18 2012 -0500 + + Remove some cruft from an older version of the code + + gio/gfilterinputstream.c | 3 --- + gio/gfilteroutputstream.c | 1 - + 2 files changed, 4 deletions(-) + +commit 382341dd9934251de9e9e10dbe5ea3da00c74c59 +Author: Michael Terry +AuthorDate: Wed Jan 4 14:48:53 2012 -0500 +Commit: Michael Terry +CommitDate: Thu Jan 5 11:19:22 2012 -0500 + + gdesktopappinfo: Fix gtk-doc to mention Keywords not X-GNOME-Keywords + + https://bugzilla.gnome.org/show_bug.cgi?id=667285 + + gio/gdesktopappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2fe964eeb15843a1e21789d13751b789f520ea4b +Author: Simon McVittie +AuthorDate: Thu Jan 5 15:10:04 2012 +0000 +Commit: Simon McVittie +CommitDate: Thu Jan 5 15:47:50 2012 +0000 + + Mention g_test_undefined() when documenting assert_failed, + assert_stderr + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666116 + Signed-off-by: Simon McVittie + Reviewed-by: Colin Walters + + glib/gtestutils.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 254efaf85e0bb0748e97a3dbe68153831a96592f +Author: Simon McVittie +AuthorDate: Thu Jan 5 15:02:07 2012 +0000 +Commit: Simon McVittie +CommitDate: Thu Jan 5 15:47:26 2012 +0000 + + Skip tests of incorrect property usage under gtester -m no-undefined + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666116 + Signed-off-by: Simon McVittie + Reviewed-by: Colin Walters + + gobject/tests/param.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit e3d53d5529522a8db4e1711b47baa44250ce09fd +Author: Javier Jardón +AuthorDate: Thu Jan 5 04:31:21 2012 +0100 +Commit: Javier Jardón +CommitDate: Thu Jan 5 04:57:48 2012 +0100 + + glib/*: Use g_slist_free_full() convenience function + + glib/gshell.c | 14 ++++---------- + glib/tests/regex.c | 3 +-- + 2 files changed, 5 insertions(+), 12 deletions(-) + +commit c735b54a6384ff170ca32906ad7eae64a338e1d6 +Author: Javier Jardón +AuthorDate: Thu Jan 5 04:27:20 2012 +0100 +Commit: Javier Jardón +CommitDate: Thu Jan 5 04:57:47 2012 +0100 + + gio/*: Use g_slist_free_full() convenience function + + gio/gfilemonitor.c | 3 +-- + gio/gmemoryinputstream.c | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +commit 31c3082e19551377049742a7862dab455727844a +Author: Michael Terry +AuthorDate: Wed Jan 4 13:08:56 2012 -0500 +Commit: Michael Terry +CommitDate: Wed Jan 4 13:08:56 2012 -0500 + + gdesktopappinfo: Avoid crash by NULL-ing data.pid_envvar before launch + + https://bugzilla.gnome.org/show_bug.cgi?id=667279 + + gio/gdesktopappinfo.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 8b96fb3761bb094d7c0044114f377934b9b00c51 +Author: Claudio Saavedra +AuthorDate: Wed Jan 4 00:18:59 2012 +0200 +Commit: Claudio Saavedra +CommitDate: Wed Jan 4 18:14:00 2012 +0200 + + GSocket: fix a couple of return values + + g_socket_receive_with_blocking() and g_socket_send_with_blocking claim + to return -1 in error, their return type is gssize, and yet they + return FALSE if the initial g_return_val_if_fail() call fails. + + https://bugzilla.gnome.org/show_bug.cgi?id=667226 + + gio/gsocket.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f38a1dbca7d68eedc2d75cd7a7947c7217bbbd99 +Author: Claudio Saavedra +AuthorDate: Wed Jan 4 00:13:50 2012 +0200 +Commit: Claudio Saavedra +CommitDate: Wed Jan 4 18:13:10 2012 +0200 + + GSocket: add some more g_return_if_fail()s + + https://bugzilla.gnome.org/show_bug.cgi?id=667225 + + gio/gsocket.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 1b919d2e5643b43c27f86d4bcf2d94f7bf98e7df +Author: Matthias Clasen +AuthorDate: Wed Jan 4 00:10:11 2012 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 4 00:10:11 2012 -0500 + + Clarify g_utf8_strlen docs a bit + + glib/gutf8.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit d64b4c4887da1d4ec308c08ded094dad130a5c6d +Author: Paolo Borelli +AuthorDate: Tue Jan 3 11:49:55 2012 +0100 +Commit: Paolo Borelli +CommitDate: Tue Jan 3 21:17:48 2012 +0100 + + Add a testcase for an old regex bug. + + Add a testcase for bug #455640, which was fixed in PCRE versions newer + than 7.2. + + glib/tests/regex.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 2ae83e116bc1ce2c02548940e276c294c91c5da7 +Author: Javier Jardón +AuthorDate: Mon Jan 2 16:10:35 2012 +0100 +Commit: Javier Jardón +CommitDate: Tue Jan 3 16:53:47 2012 +0100 + + glib/*: Use g_list_free_full() + + glib/gbookmarkfile.c | 38 ++++++-------------------------------- + glib/gkeyfile.c | 10 ++-------- + glib/goption.c | 3 +-- + glib/gregex.c | 15 +++++---------- + 4 files changed, 14 insertions(+), 52 deletions(-) + +commit 928d2cea616db45a1a0d870fd73aed2570170288 +Author: Javier Jardón +AuthorDate: Mon Jan 2 16:30:11 2012 +0100 +Commit: Javier Jardón +CommitDate: Tue Jan 3 16:53:47 2012 +0100 + + gio/*: Use g_list_free_full() convenience function + + gio/gcontenttype.c | 12 ++++-------- + gio/gdbusauth.c | 3 +-- + gio/gdbusobjectmanagerclient.c | 6 ++---- + gio/gdbusobjectmanagerserver.c | 3 +-- + gio/gdbusobjectskeleton.c | 3 +-- + gio/gdbusserver.c | 3 +-- + gio/gdesktopappinfo.c | 17 +++++------------ + gio/gemblemedicon.c | 3 +-- + gio/gfileenumerator.c | 3 +-- + gio/gfilenamecompleter.c | 12 ++++-------- + gio/gunixvolumemonitor.c | 27 +++++++++------------------ + 11 files changed, 30 insertions(+), 62 deletions(-) + +commit dde3401122930355f665af25292ad1b639e98390 +Author: Javier Jardón +AuthorDate: Mon Jan 2 16:09:50 2012 +0100 +Commit: Javier Jardón +CommitDate: Tue Jan 3 16:53:47 2012 +0100 + + gio/gdbus-2.0/codegen/codegen.py: Use g_list_free_full() + + gio/gdbus-2.0/codegen/codegen.py | 12 ++++-------- + 1 file changed, 4 insertions(+), 8 deletions(-) + +commit 99c166501a6d05b2eaeb11893fab38dcf88aeeaf +Author: Matthias Clasen +AuthorDate: Tue Jan 3 10:48:50 2012 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 3 10:48:50 2012 -0500 + + Fix parameter name mismatches in GWeakRef api + + gobject/gobject.c | 46 +++++++++++++++++++++++----------------------- + 1 file changed, 23 insertions(+), 23 deletions(-) + +commit e6a5c2efb284acc557b6129e0649b9f7af807067 +Author: Matthias Clasen +AuthorDate: Tue Jan 3 08:02:49 2012 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 3 08:02:49 2012 -0500 + + Add GWeakRef to the docs + + docs/reference/gobject/gobject-sections.txt | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit ee044fd839b396655000db1662b5de0569632581 +Author: Javier Jardón +AuthorDate: Mon Jan 2 15:20:42 2012 +0100 +Commit: Javier Jardón +CommitDate: Mon Jan 2 23:18:22 2012 +0100 + + gio/tests: Use g_list_free_full() convenience function + + gio/tests/contenttype.c | 3 +-- + gio/tests/desktop-app-info.c | 9 +++------ + gio/tests/gdbus-example-objectmanager-client.c | 6 ++---- + gio/tests/gdbus-peer.c | 3 +-- + gio/tests/gdbus-test-codegen.c | 9 +++------ + gio/tests/volumemonitor.c | 12 ++++-------- + 6 files changed, 14 insertions(+), 28 deletions(-) + +commit 411259ddd3e6b5c5fbf900d7ab38d0d4da03f156 +Author: Stef Walter +AuthorDate: Mon Nov 14 18:03:47 2011 +0100 +Commit: Stef Walter +CommitDate: Mon Jan 2 18:34:08 2012 +0100 + + gvariant: Never break out of g_variant_iter_loop + + * Document how to break out of g_variant_iter_loop style loops. + + https://bugzilla.gnome.org/show_bug.cgi?id=664069 + + glib/gvariant.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 34e3881f2f02ccd7df704f54c0a31dead48ea382 +Author: Simon McVittie +AuthorDate: Wed Dec 7 15:04:59 2011 +0000 +Commit: Ryan Lortie +CommitDate: Mon Jan 2 12:29:57 2012 -0500 + + Add test for GDBusConnection singleton access racing with destruction + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=665211 + + gio/tests/gdbus-threading.c | 128 + ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 128 insertions(+) + +commit 1e09bfc77c157b7d70342188a424eadc3d14769a +Author: Simon McVittie +AuthorDate: Tue Dec 6 12:44:36 2011 +0000 +Commit: Ryan Lortie +CommitDate: Mon Jan 2 12:23:24 2012 -0500 + + GDBusConnection: use GWeakRef to make the singletons thread-safe + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=665211 + + https://bugzilla.gnome.org/show_bug.cgi?id=548954 + + gio/gdbusconnection.c | 40 ++++++++++++++++------------------------ + 1 file changed, 16 insertions(+), 24 deletions(-) + +commit 146aa7aa1777b84137fb1f3d4035b0f1d11e76c9 +Author: Simon McVittie +AuthorDate: Wed Dec 7 15:04:13 2011 +0000 +Commit: Ryan Lortie +CommitDate: Mon Jan 2 12:23:21 2012 -0500 + + Add regression test for GWeakRef used to cache a singleton + + https://bugzilla.gnome.org/show_bug.cgi?id=548954 + + gobject/tests/threadtests.c | 121 + ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 121 insertions(+) + +commit fa5ff3955957e48a0bf50bb13be53af9b5400bb6 +Author: Simon McVittie +AuthorDate: Thu Dec 8 17:35:19 2011 +0000 +Commit: Ryan Lortie +CommitDate: Mon Jan 2 12:23:18 2012 -0500 + + Add deterministic tests for the API of GWeakRef + + These don't address the thread-safety, but do address basic use. + + https://bugzilla.gnome.org/show_bug.cgi?id=548954 + + gobject/tests/reference.c | 101 + ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 101 insertions(+) + +commit 46c2f570da10c93d7b2fab790048f957bb422302 +Author: Ryan Lortie +AuthorDate: Tue Dec 6 12:27:07 2011 +0000 +Commit: Ryan Lortie +CommitDate: Mon Jan 2 12:23:15 2012 -0500 + + GWeakRef: add a weak GObject reference believed to be thread-safe + + This patch is a joint work with Simon McVittie. + + https://bugzilla.gnome.org/show_bug.cgi?id=548954 + + gobject/gobject.c | 239 + +++++++++++++++++++++++++++++++++++++++++++++++- + gobject/gobject.h | 12 +++ + gobject/gobject.symbols | 4 + + 3 files changed, 253 insertions(+), 2 deletions(-) + +commit 28c87a5594ef05a324a183d6d3271e6733abf908 +Author: Simon McVittie +AuthorDate: Tue Dec 6 11:37:45 2011 +0000 +Commit: Ryan Lortie +CommitDate: Mon Jan 2 12:23:11 2012 -0500 + + g_object_weak_ref, g_object_add_weak_pointer: document + non-thread-safety + + Transparent access to a weak pointer from the thread performing the + weak -> strong conversion is incompatible with thread-safety: that + thread will have to do something special. This is GNOME#548954. + + https://bugzilla.gnome.org/show_bug.cgi?id=548954 + + gobject/gobject.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 1425aa664d5efa56d9e2cc29f8aa1292463e1f5a +Author: Simon McVittie +AuthorDate: Tue Dec 6 11:35:02 2011 +0000 +Commit: Ryan Lortie +CommitDate: Mon Jan 2 12:23:01 2012 -0500 + + GBitLock: turn assumptions of g_futex_int_address into a static + assertion + + We'll probably never encounter a platform where these fail, but that's + what static assertions are for... + + https://bugzilla.gnome.org/show_bug.cgi?id=548954 + + glib/gbitlock.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit fc731de9291556d93e02cc4c39a8573c0a5500ea +Author: Ryan Lortie +AuthorDate: Mon Jan 2 11:38:40 2012 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 2 11:39:01 2012 -0500 + + gthread.h: avoid anonymous union + + This is a GNU extension. + + https://bugzilla.gnome.org/show_bug.cgi?id=666978 + + glib/deprecated/gthread.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a07e9a5fb22de50e7a94797cf4f0e5718f064ea1 +Author: William Hua +AuthorDate: Sun Jan 1 21:53:28 2012 -0500 +Commit: William Hua +CommitDate: Sun Jan 1 22:01:47 2012 -0500 + + nextstep gsettings backend: whitespace police + + gio/gnextstepsettingsbackend.c | 118 + +++++++++++++---------------------------- + 1 file changed, 37 insertions(+), 81 deletions(-) + +commit edd2aff575888dc6cd6570681c719bc18fe91bb2 +Author: William Hua +AuthorDate: Sun Jan 1 21:38:05 2012 -0500 +Commit: William Hua +CommitDate: Sun Jan 1 21:59:39 2012 -0500 + + thread-safe nextstep gsettings backend + + simplified key reset logic + + gio/gnextstepsettingsbackend.c | 49 + +++++++++++++++++++++++++++--------------- + 1 file changed, 32 insertions(+), 17 deletions(-) + +commit 9c1008384414a257d1f0f354d5ea897df0e24e89 +Author: William Hua +AuthorDate: Mon Dec 26 10:04:38 2011 -0500 +Commit: William Hua +CommitDate: Sun Jan 1 19:40:56 2012 -0500 + + GSettings: nextstep settings backend + + gio/Makefile.am | 11 + + gio/giomodule.c | 3 + + gio/gnextstepsettingsbackend.c | 497 + +++++++++++++++++++++++++++++++++++++++++ + gio/gsettingsbackendinternal.h | 5 + + 4 files changed, 516 insertions(+) + +commit 00f43b22e5b5d9e4afe1eda69e348e3fdaa8c262 +Author: Xan Lopez +AuthorDate: Sun Jan 1 19:01:14 2012 +0100 +Commit: Xan Lopez +CommitDate: Sun Jan 1 19:01:14 2012 +0100 + + ginetaddressmask: plug leak + + ==24706== 52 bytes in 1 blocks are definitely lost in loss record + 7,248 of 13,092 + ==24706== at 0x4A074CD: malloc (vg_replace_malloc.c:236) + ==24706== by 0x70E9F5F: standard_malloc (gmem.c:85) + ==24706== by 0x70E9FE8: g_malloc (gmem.c:159) + ==24706== by 0x71018EC: g_slice_alloc (gslice.c:1003) + ==24706== by 0x710192B: g_slice_alloc0 (gslice.c:1029) + ==24706== by 0x7068526: g_type_create_instance (gtype.c:1872) + ==24706== by 0x705067B: g_object_constructor (gobject.c:1835) + ==24706== by 0x704FE47: g_object_newv (gobject.c:1699) + ==24706== by 0x7050612: g_object_new_valist (gobject.c:1816) + ==24706== by 0x704F894: g_object_new (gobject.c:1531) + ==24706== by 0x6F0F2F0: g_inet_address_new_from_bytes + (ginetaddress.c:459) + ==24706== by 0x6F5D703: remove_network + (gnetworkmonitornetlink.c:256) + ==24706== by 0x6F5DD80: read_netlink_messages + (gnetworkmonitornetlink.c:386) + ==24706== by 0x6F2D5CA: socket_source_dispatch (gsocket.c:2505) + ==24706== by 0x70E1D45: g_main_dispatch (gmain.c:2513) + ==24706== by 0x70E2A06: g_main_context_dispatch (gmain.c:3050) + ==24706== by 0x70E2BE9: g_main_context_iterate (gmain.c:3121) + ==24706== by 0x70E2CAD: g_main_context_iteration (gmain.c:3182) + ==24706== by 0x6F60A05: g_application_run (gapplication.c:1599) + ==24706== by 0x42D011: main (ephy-main.c:472) + + https://bugzilla.gnome.org/show_bug.cgi?id=667098 + + gio/ginetaddressmask.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit 5e4188101efe6747b637ac8e1519fe67ee42495c +Author: Yaron Shahrabani +AuthorDate: Fri Dec 30 10:47:56 2011 +0200 +Commit: Yaron Shahrabani +CommitDate: Fri Dec 30 10:47:56 2011 +0200 + + Updated Hebrew translation. + + po/he.po | 240 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 122 insertions(+), 118 deletions(-) + +commit a2e1541cda3902474aa54aded959f78928fbabf6 +Author: Chun-wei Fan +AuthorDate: Fri Dec 30 15:27:31 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Dec 30 15:27:31 2011 +0800 + + config.h.win32.in: Cleanups + + -Make the contents of the preconfigured config.h.win32(.in) more + like the + contents of config.h.in + -Correct the sizing of void* on x64 platforms (which should be 8, + unlike + 4 on x86-32 platforms) + + config.h.win32.in | 106 + +++++++++++++++++++++++++++++------------------------- + 1 file changed, 57 insertions(+), 49 deletions(-) + +commit 8558ae9ad4411dfdcd76180aaa421b29fc587571 +Author: Matthias Clasen +AuthorDate: Thu Dec 29 11:57:42 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Dec 29 11:57:42 2011 -0500 + + Correct some Since tags + + As pointed out in bug 666951, g_mkdtemp and g_mkdtemp_full + were only added in 2.30. + + glib/gfileutils.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 8ca2647c7405d06231ca5e0cfa47621e5086a65a +Author: Ravi Sankar Guntur +AuthorDate: Tue Dec 20 14:49:53 2011 +0530 +Commit: Matthias Clasen +CommitDate: Tue Dec 27 21:49:19 2011 -0500 + + Fix to handle '\v' (vertical tab) by g_strescape() and + g_strcompress(). + + fix enables g_strescape() and g_strcompress() to handle '\v' along + with other + special characters - '\b', '\f', '\n', '\r', '\t', '\'. + + https://bugzilla.gnome.org/show_bug.cgi?id=664830 + + Signed-off-by: Ravi Sankar Guntur + + glib/gstrfuncs.c | 9 ++++++++- + glib/tests/strfuncs.c | 16 ++++++++-------- + 2 files changed, 16 insertions(+), 9 deletions(-) + +commit 030bf82340f1a82825ad71c4b85d664995eafde1 +Author: Matthias Clasen +AuthorDate: Tue Dec 27 18:10:42 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 27 21:49:19 2011 -0500 + + Some minor updates of building.sgml + + https://bugzilla.gnome.org/show_bug.cgi?id=664830 + + docs/reference/glib/building.sgml | 10 ---------- + 1 file changed, 10 deletions(-) + +commit a3860d8d7712eb52f8535f6517bb5641e70dd825 +Author: Matthias Clasen +AuthorDate: Tue Dec 27 18:10:26 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 27 18:10:26 2011 -0500 + + Some minor updates of HACKING + + HACKING | 20 +++++++++++--------- + 1 file changed, 11 insertions(+), 9 deletions(-) + +commit 993de34a77bdbfc37e210a85382e5f34f604efe9 +Author: Simon McVittie +AuthorDate: Wed Dec 14 17:31:23 2011 +0000 +Commit: Matthias Clasen +CommitDate: Tue Dec 27 17:51:11 2011 -0500 + + Add undefined/no-undefined mode options to GTester + + https://bugzilla.gnome.org/show_bug.cgi?id=666116 + + docs/reference/glib/gtester.xml | 33 ++++++++++++++++++++++++++++++++- + glib/gtester.c | 10 ++++++++++ + glib/gtestutils.c | 33 ++++++++++++++++++++++++++++++++- + glib/gtestutils.h | 2 ++ + 4 files changed, 76 insertions(+), 2 deletions(-) + +commit fa4792c35e42107e0ded0f499bb86415a2b1faef +Author: Simon McVittie +AuthorDate: Wed Dec 14 18:08:59 2011 +0000 +Commit: Matthias Clasen +CommitDate: Tue Dec 27 17:51:09 2011 -0500 + + various tests: do not provoke SIGTRAP with -m no-undefined + + Some of the GLib tests deliberately provoke warnings (or even fatal + errors) in a forked child. Normally, this is fine, but under valgrind + it's somewhat undesirable. We do want to follow fork(), so we + can check + for leaks in child processes that exit gracefully; but we don't + want to + be told about "leaks" in processes that are crashing, because there'd + be no point in cleaning those up anyway. + + https://bugzilla.gnome.org/show_bug.cgi?id=666116 + + gio/tests/actions.c | 83 ++++++++++++++--------- + gio/tests/gdbus-proxy.c | 30 +++++---- + gio/tests/gsettings.c | 64 ++++++++++++------ + glib/tests/error.c | 3 + + glib/tests/gvariant.c | 32 +++++---- + glib/tests/logging.c | 54 +++++++++------ + glib/tests/markup-collect.c | 3 + + glib/tests/mem-overflow.c | 13 +++- + glib/tests/option-context.c | 6 ++ + glib/tests/slice.c | 3 + + glib/tests/strfuncs.c | 146 + ++++++++++++++++++++++++---------------- + glib/tests/testing.c | 32 ++++++--- + gobject/tests/ifaceproperties.c | 3 + + 13 files changed, 304 insertions(+), 168 deletions(-) + +commit 5cb29d7909afdb41054ca47892aea4e0a79f2d7a +Author: Simon McVittie +AuthorDate: Wed Dec 14 17:32:16 2011 +0000 +Commit: Matthias Clasen +CommitDate: Tue Dec 27 17:51:04 2011 -0500 + + Clarify documentation of fast/slow/thorough and quiet/verbose tests + + It turns out that there is no middle setting between fast and + slow/thorough, but there *is* a middle setting between quiet and + verbose. + + https://bugzilla.gnome.org/show_bug.cgi?id=666116 + + glib/gtestutils.c | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +commit 643ad9f6c340fb368ccf8e09ef1f0ba88ee6dccf +Author: Matthias Clasen +AuthorDate: Tue Dec 27 17:45:40 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 27 17:45:40 2011 -0500 + + Remove another unused AC_DEFINE + + Nothing was using the HAVE_GCOV define. + + configure.ac | 2 -- + 1 file changed, 2 deletions(-) + +commit 7cc9e10cce30ebe9242c0cc0649a4badffe0123e +Author: Matthias Clasen +AuthorDate: Tue Dec 27 17:20:36 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 27 17:20:36 2011 -0500 + + Drop unused AC_SUBST + + DISABLE_MEM_POOLS is only used as define. + + configure.ac | 1 - + 1 file changed, 1 deletion(-) + +commit bc85e6ed516f23d9fed9cdad39c605721738e190 +Author: Matthias Clasen +AuthorDate: Tue Dec 27 17:15:44 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 27 17:15:44 2011 -0500 + + Remove a bashism + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a176008826a8f7dcdcbc2a35d9ac3bfcabce824c +Author: Matthias Clasen +AuthorDate: Tue Dec 27 17:12:39 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 27 17:12:39 2011 -0500 + + Drop a lot of dead configury for threads + + Much of this became obsolete by the recent rewrite of our + threading support. + + configure.ac | 179 + +++++++++-------------------------------------------------- + 1 file changed, 27 insertions(+), 152 deletions(-) + +commit 8cea99741bdc540b76b4cace996068acd78e746c +Author: Matthias Clasen +AuthorDate: Tue Dec 27 16:22:13 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 27 16:22:13 2011 -0500 + + Don't put documentation in glibconfig.h + + configure.ac | 7 ------- + glib/gmain.h | 3 +++ + 2 files changed, 3 insertions(+), 7 deletions(-) + +commit 31f0ad3f352ec8bae297983f67b18cb33c2c3e5e +Author: Matthias Clasen +AuthorDate: Tue Dec 27 16:18:19 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 27 16:18:19 2011 -0500 + + Make glibconfig.h include guards consistent + + configure.ac | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit d09800d86ec408ec27b9559fbd9ff6aebca25397 +Author: Matthias Clasen +AuthorDate: Tue Dec 27 16:16:24 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 27 16:16:24 2011 -0500 + + Remove a commented-out macro + + configure.ac | 2 -- + 1 file changed, 2 deletions(-) + +commit 4576a459fc0aebc48581d16a076bd0a0924ae988 +Author: Matthias Clasen +AuthorDate: Tue Dec 27 15:55:04 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 27 15:55:04 2011 -0500 + + Remove obsolescent AC_HEADER_STDC macro + + We only used the resulting define in one place, and really, + these headers just have to be around or its not worth trying. + + configure.ac | 3 --- + glib/tests/hash.c | 2 -- + 2 files changed, 5 deletions(-) + +commit 49a4de3ea446f21202d586a906e0aef1d4dacfed +Author: Thomas Hindoe Paaboel Andersen +AuthorDate: Sat Dec 24 15:31:55 2011 +0100 +Commit: Colin Walters +CommitDate: Tue Dec 27 10:18:41 2011 -0500 + + docs: g_atexit: do not point in a direction for where to find details + + https://bugzilla.gnome.org/show_bug.cgi?id=666804 + + glib/gutils.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 89a832250b9864c28cd0eec8db7200e00a8e9679 +Author: Åsmund Skjæveland +AuthorDate: Mon Dec 26 17:15:32 2011 +0100 +Commit: Åsmund Skjæveland +CommitDate: Mon Dec 26 17:15:32 2011 +0100 + + Updated Norwegian Nynorsk translation + + po/nn.po | 959 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 515 insertions(+), 444 deletions(-) + +commit cc03b3cdea45b3592ab8e931628f027c20586aa3 +Author: Matthias Clasen +AuthorDate: Sat Dec 24 23:01:17 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 24 23:01:17 2011 -0500 + + Don't leak references to the menus + + gio/gmenumarkup.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit f077127d0169df135d078827c1c51742c3a71901 +Author: Matthias Clasen +AuthorDate: Sat Dec 24 22:59:10 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 24 22:59:10 2011 -0500 + + Add a test for ids on submenu and section elements + + The test checks that menus which are created via + or
end up in the objects + hash table. + + gio/tests/gmenumodel.c | 41 +++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 41 insertions(+) + +commit 37efbf4354969fdbca9ed71895309fb7fb95a55a +Author: Matthias Clasen +AuthorDate: Sat Dec 24 22:58:16 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 24 22:58:16 2011 -0500 + + Menu markup: Support ids on submenu and section elements + + This was supposed to work, but didn't. + Bug 666595. + + gio/gmenumarkup.c | 54 + +++++++++++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 47 insertions(+), 7 deletions(-) + +commit c4fc2584241dadeedee7b21bd24ca5708d6318e8 +Author: Benjamin Otte +AuthorDate: Sat Dec 24 14:26:24 2011 +0100 +Commit: Benjamin Otte +CommitDate: Sat Dec 24 14:26:24 2011 +0100 + + docs: Clarify non-NUL requirement in g_utf8_validate() + + UTF8 validation is not about your character on a dating site, so don't + talk about meeting. + + https://bugzilla.gnome.org/show_bug.cgi?id=666803 + + glib/gutf8.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3f3e141ec8ffe8f40a2faced69d35cb161153107 +Author: Dan Winship +AuthorDate: Fri Aug 20 13:04:19 2010 -0400 +Commit: Dan Winship +CommitDate: Thu Dec 22 15:44:24 2011 -0500 + + Add GSocketClient::event, for tracking socket client status + + This can be used for debugging, or for progress UIs ("Connecting to + example.com..."), or to do low-level tweaking on the connection at + various points in the process. + + https://bugzilla.gnome.org/show_bug.cgi?id=665805 + + docs/reference/gio/gio-sections.txt | 3 +- + gio/gio.symbols | 1 + + gio/gioenums.h | 38 +++++++ + gio/gsocketclient.c | 194 + ++++++++++++++++++++++++++++++++++-- + gio/gsocketclient.h | 6 +- + gio/tests/send-data.c | 23 +++++ + 6 files changed, 253 insertions(+), 12 deletions(-) + +commit 57f279988cc2219a974042a29cbb12efd2422540 +Author: Dan Winship +AuthorDate: Sun Jun 12 16:29:04 2011 -0400 +Commit: Dan Winship +CommitDate: Thu Dec 22 13:22:25 2011 -0500 + + Add g_socket_connection_connect(), etc + + Previously it was more or less assumed that GSocketConnections were + always connected, although this was not enforced. Make it explicit + that they don't need to be, and add methods to connect them, and + simplify GSocketClient by using those methods. + + https://bugzilla.gnome.org/show_bug.cgi?id=665805 + + docs/reference/gio/gio-sections.txt | 5 ++ + gio/gio.symbols | 4 + + gio/gsocketclient.c | 129 +++++++++-------------------- + gio/gsocketconnection.c | 159 + ++++++++++++++++++++++++++++++++++++ + gio/gsocketconnection.h | 15 ++++ + 5 files changed, 223 insertions(+), 89 deletions(-) + +commit e121d46b251d7a695f6c56bf3de95acb51371599 +Author: Chun-wei Fan +AuthorDate: Thu Dec 22 20:18:11 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Dec 22 20:18:11 2011 +0800 + + Update GIO Visual C++ projects + + Link to zlib1.lib for release builds and zlib1d.lib for debug builds- + this is to be consistent across the board for the GTK+ stack (and many + other opensource code linking to the ZLib DLL on Windows) + + build/win32/vs10/gio.vcxprojin | 8 ++++---- + build/win32/vs9/gio.vcprojin | 8 ++++---- + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit 550fee44a9379969cb185b19b787c1d6ab35e77e +Author: Chun-wei Fan +AuthorDate: Thu Dec 22 18:49:01 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Dec 22 18:49:01 2011 +0800 + + Update Visual C++ property sheets + + "Install" the newly-introduced gremoteactiongroup.h header. + + build/win32/vs10/glib.props | 2 ++ + build/win32/vs9/glib.vsprops | 1 + + 2 files changed, 3 insertions(+) + +commit 6e7da987b443c861946a7702d64f9e50150b9320 +Author: Ryan Lortie +AuthorDate: Thu Dec 22 00:24:20 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 22 00:24:20 2011 -0500 + + GSettingsBackend: allow floating refs from read() + + Use g_variant_take_ref() to allow for backends to return floating + GVariant instances from their read() implementations. + + gio/gsettingsbackend.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 1b0337744282c7f048a31a9818b99370d97c44f3 +Author: rodrigorivascosta +AuthorDate: Thu Dec 22 10:48:09 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Dec 22 10:51:31 2011 +0800 + + Bug 666551-Fix a few dangling pointers + + When removing an item from the list, check the next one's my_owner, + and fix it accordingly. And take this case into account when last + of the list is deleted. + + Also, assign NULL to 'my_owner' in g_thread_xp_WakeConditionVariable. + + glib/gthread-win32.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 76bc1ab28084dab671fed6e9f3993014e225df2c +Author: Chun-wei Fan +AuthorDate: Wed Dec 21 11:24:09 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Dec 22 10:39:05 2011 +0800 + + glib/tests/private.c: Fix compilation on Windows + + -process.h must be included for _beginthreadex + -Use a cast to HANDLE on _beginthreadex to silence warnings on + different + types + + glib/tests/private.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit cb71b03e2f0a273d3e466831e5c2cdf0a7c43f46 +Author: Kjartan Maraas +AuthorDate: Wed Dec 21 22:22:05 2011 +0100 +Commit: Kjartan Maraas +CommitDate: Wed Dec 21 22:22:05 2011 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 276 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 140 insertions(+), 136 deletions(-) + +commit adff60ed6389cfb1e97a329c150320aa44b18be6 +Author: Cosimo Cecchi +AuthorDate: Wed Dec 21 12:36:19 2011 +0100 +Commit: Cosimo Cecchi +CommitDate: Wed Dec 21 12:36:19 2011 +0100 + + menu: documentation fixes + + g_menu_new_section() does not exist, the comment meant + g_menu_item_new_section(). + + gio/gmenu.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 557da1650707bbb67b80be0c986598eab3893071 +Author: Ryan Lortie +AuthorDate: Tue Dec 20 19:45:57 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Dec 20 19:45:57 2011 -0500 + + GObject: do checks on interface property install + + Add some checks to g_object_interface_install_property() similar to + those in g_object_class_install_property(). + + https://bugzilla.gnome.org/show_bug.cgi?id=666616 + + gobject/gobject.c | 8 +++++++- + gobject/tests/param.c | 2 +- + 2 files changed, 8 insertions(+), 2 deletions(-) + +commit b2371871097ef2b52bdb4688d702438c9e3f1787 +Author: Ryan Lortie +AuthorDate: Tue Dec 20 19:43:21 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Dec 20 19:43:21 2011 -0500 + + GObject: require READ or WRITE on property install + + g_object_class_install_property() currently lets you install + properties + that are neither readable nor writable. Add a check to prevent that. + + https://bugzilla.gnome.org/show_bug.cgi?id=666616 + + gobject/gobject.c | 1 + + gobject/tests/param.c | 3 --- + 2 files changed, 1 insertion(+), 3 deletions(-) + +commit 4e793c2eefab1a9b5b0c29b530cbe77fb53d7396 +Author: Ryan Lortie +AuthorDate: Tue Dec 20 19:33:02 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Dec 20 19:40:44 2011 -0500 + + GObject: allow G_PARAM_CONSTRUCT on any override + + We were previously preventing implementations of an interface from + specifying G_PARAM_CONSTRUCT for a property of that interface if the + interface didn't specify it itself (or was readonly). + + This is something that should only interest the implementation, so we + remove this restriction. + + This allows 6 new possible override scenarios: + + - writable -> writable/construct + - writable -> readwrite/construct + - readwrite -> readwrite/construct + - writable/construct-only -> writable/construct + - writable/construct-only -> readwrite/construct + - readwrite/construct-only -> readwrite/construct + + and we update the testcase to reflect this. + + https://bugzilla.gnome.org/show_bug.cgi?id=666616 + + gobject/gobject.c | 5 +---- + gobject/tests/param.c | 32 ++++++++++++++++++-------------- + 2 files changed, 19 insertions(+), 18 deletions(-) + +commit b3b9f82206707d6adad0d54ae9232bc826bec574 +Author: Ryan Lortie +AuthorDate: Tue Dec 20 18:44:48 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Dec 20 19:18:26 2011 -0500 + + GObject: add test for interface property overrides + + Add a testcase to check all possibilities for overriding a property + specified on an interface from an implementation of that interface, + changing the type and flags. + + https://bugzilla.gnome.org/show_bug.cgi?id=666616 + + gobject/tests/param.c | 379 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 379 insertions(+) + +commit d8d78688a8e00d1f2c338bd75fb1ce20d05e059d +Author: Ryan Lortie +AuthorDate: Tue Dec 20 18:41:03 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Dec 20 19:18:25 2011 -0500 + + GObject: change the order of property checks + + Change the order of the checks so that we hear about the 'biggest' + problem first. Also, stop reporting problems after we report + the first + one for a particular property. + + Add some comments. + + https://bugzilla.gnome.org/show_bug.cgi?id=666616 + + gobject/gobject.c | 70 + +++++++++++++++++++++++++++++++++++++++---------------- + 1 file changed, 50 insertions(+), 20 deletions(-) + +commit 5fb7a8e127bde6465a5b9e22b299ca2e439e702c +Author: Ryan Lortie +AuthorDate: Tue Dec 20 18:26:14 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Dec 20 19:18:25 2011 -0500 + + GObject: fix property override type checks + + The property override typecheck was meant to enforce the type on the + overriding property being exactly equal to the type on the interface + property. Instead, g_type_is_a() was incorrectly used. + + We could try to enforce equality, but if a property is read-only + then it + should be possible for the implementation to type the property + with any + subtype of the type specified on the interface (because returning + a more + specific type will still satisfy the interface). Likewise, if the + property is write-only then it should be possible for the + implementation + to type the property with any supertype. + + We implement the check this way. + + https://bugzilla.gnome.org/show_bug.cgi?id=666616 + + gobject/gobject.c | 73 + +++++++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 58 insertions(+), 15 deletions(-) + +commit ab0da3c2821b6e9ed89a3a2a708bbae1db2ed45f +Author: Ryan Lortie +AuthorDate: Tue Dec 20 19:12:56 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Dec 20 19:12:56 2011 -0500 + + GSimpleAction: fix some whitespace fail + + gio/gsimpleaction.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 342e2faa2996601bc44413087b3d70560dad78aa +Author: Ryan Lortie +AuthorDate: Tue Dec 20 19:11:19 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Dec 20 19:12:00 2011 -0500 + + GSimpleAction: tweak property flags + + There's no need for 'enabled' and 'state' to be marked construct-only. + These properties are writable at all times. + + gio/gsimpleaction.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +commit 958f2bac7a123bc0cf35c5afab6ac62c80b0c03b +Author: Ryan Lortie +AuthorDate: Tue Dec 20 15:29:16 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Dec 20 15:29:16 2011 -0500 + + GObject: fixup reversed logic in last commit + + Accidentally dropped a !. + + gobject/gobject.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3af050f6fc760c3bedfad4e7c0f767a2e01848be +Author: Ryan Lortie +AuthorDate: Tue Dec 20 15:12:44 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Dec 20 15:12:44 2011 -0500 + + gobject: Clean up logic in property checks + + Simplify some of the logic in this function. + + 1) Simplify flag checks as per Colin's suggestions in + https://bugzilla.gnome.org/show_bug.cgi?id=605667 + + 2) Don't repeatedly recheck if class_pspec is NULL. + + gobject/gobject.c | 50 +++++++++++++++++++++----------------------------- + 1 file changed, 21 insertions(+), 29 deletions(-) + +commit ebf572cdd81d8c0fca4641f9204dc0421ad1bf5d +Author: Ryan Lortie +AuthorDate: Tue Dec 20 14:43:15 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Dec 20 14:58:38 2011 -0500 + + GAction: back out changes to property flags + + 41e5ba86a791a17bb560dd7813ad7e849e0230dc introduced some changes + to the + property flags of GAction. These changes were not a reflection of the + actual interface of GAction but were necessary due to GObject being + overly-sensitive to flag changes on property overrides. + + Now that the GObject bug is fixed, we can restore the GAction flags to + their correct values. + + https://bugzilla.gnome.org/show_bug.cgi?id=666615 + + gio/gaction.c | 12 ++++-------- + 1 file changed, 4 insertions(+), 8 deletions(-) + +commit af24dbc12aa77aac3c82d39872878558cced7add +Author: Ryan Lortie +AuthorDate: Tue Dec 20 14:36:29 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Dec 20 14:58:38 2011 -0500 + + gobject: loosen property override flag restrictions + + GObject enforces the following restrictions on property overrides: + + - must only add abilities: if the parent class supports + readability/writability then the subclass must also support them. + Subclasses are free to add readability/writability. + + - must not add additional restrictions: if the parent class doesn't + have construct/construct-only restrictions then the subclass must + not add them. Subclasses are free to remove restrictions. + + The problem with the previous implementation is that the check against + adding construct/construct-only restrictions was being done even + if the + property was not previously writable. As an example: + + "readable" and "writable only on construct" + + was considered as being more restrictive than + + "read only". + + This patch tweaks the check to allow the addition of + construct/construct-only restrictions for properties that were + previously read-only and are now being made writable. + + https://bugzilla.gnome.org/show_bug.cgi?id=666615 + + gobject/gobject.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 68706bfa2b91d4eb33cddfca2b640fcc3ce80637 +Author: Matthias Clasen +AuthorDate: Tue Dec 20 12:15:05 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 20 12:15:05 2011 -0500 + + Add references to the dbus interface docs on the wiki + + And strip out the (now) redundant copy of that information + from the sources. + + gio/gactiongroupexporter.c | 96 + ++---------------------------------------- + gio/gapplicationimpl-dbus.c | 4 ++ + gio/gmenuexporter.c | 100 + +------------------------------------------- + 3 files changed, 9 insertions(+), 191 deletions(-) + +commit adbfa38c8e2ab859d252e566fa130a7023442d7d +Author: Ryan Lortie +AuthorDate: Mon Dec 19 22:56:05 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 19 22:56:05 2011 -0500 + + docs: remove duplicate GMenuModel from gio.types + + docs/reference/gio/gio.types | 1 - + 1 file changed, 1 deletion(-) + +commit 541693f42d462f114055fd05d1ac536e0c6f46f5 +Author: Ryan Lortie +AuthorDate: Mon Dec 19 17:35:31 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 19 17:40:08 2011 -0500 + + winxp threads: fix some condition variable races + + There are some races in the condition variable emulation code for + Windows XP with respect to timeouts while waiting. + + First, in the event of a timeout, we never remove the waiter from the + condition variable. This can cause crashes later. That problem was + found by Rodrigo Rivas Costa. + + Second, if the waiting thread times out and exits just as we were + about + to call SetEvent() on its waiter event, we could end up trying + to access + the waiter after it was closed/freed. We need to hold on to the + lock a + little bit longer to ensure that that's not possible. + + https://bugzilla.gnome.org/show_bug.cgi?id=666551 + + glib/gthread-win32.c | 32 ++++++++++++++++++++++++++------ + 1 file changed, 26 insertions(+), 6 deletions(-) + +commit f3cf8c0ca8ea952c08ef29af1e84515a8f6a2d77 +Author: Ryan Lortie +AuthorDate: Mon Dec 19 15:24:52 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 19 15:24:52 2011 -0500 + + *bump* + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8f558d80100d4de5ffc50dac37857ca1b63c1480 +Author: Dan Winship +AuthorDate: Mon Dec 19 15:19:19 2011 -0500 +Commit: Dan Winship +CommitDate: Mon Dec 19 15:20:08 2011 -0500 + + gnetworkmonitornetlink.c: Fix a gsize->gssize + + https://bugzilla.gnome.org/show_bug.cgi?id=666422 + + gio/gnetworkmonitornetlink.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fbe1fb8e4999dc9e7c30a19896e421e8a2c4103b +Author: Ryan Lortie +AuthorDate: Mon Dec 19 13:38:21 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 19 13:38:21 2011 -0500 + + glib 2.31.6 + + NEWS | 44 ++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 45 insertions(+), 1 deletion(-) + +commit 5e8a10daf15afc8fa006a3ce9877541c344a4c67 +Author: Ryan Lortie +AuthorDate: Mon Dec 19 13:37:06 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 19 13:38:09 2011 -0500 + + gitignore + + build/win32/vs10/.gitignore | 6 ++++++ + docs/reference/gio/gdbus-object-manager-example/.gitignore | 1 + + gio/tests/.gitignore | 6 ++++-- + 3 files changed, 11 insertions(+), 2 deletions(-) + +commit 0a22f63ebe7ea1abe78e4b88287aaf31eb1bdb5e +Author: Ryan Lortie +AuthorDate: Mon Dec 19 10:47:45 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 19 12:34:16 2011 -0500 + + Drop public menu APIs from GApplication + + This is moving to Gtk, but we don't want to do it all right now. + + docs/reference/gio/gio-sections.txt | 4 -- + gio/gapplication.c | 74 + ++++++------------------------------- + gio/gapplication.h | 8 ---- + gio/gapplicationimpl-dbus.c | 14 +++++-- + gio/gio.symbols | 4 -- + 5 files changed, 21 insertions(+), 83 deletions(-) + +commit 0c094d660769a00564ef33a775a387f62cf2ff41 +Author: Ryan Lortie +AuthorDate: Mon Dec 19 10:47:28 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 19 12:34:16 2011 -0500 + + Drop the GApplication menu test + + gio/tests/Makefile.am | 4 -- + gio/tests/gapplication-example-menu.c | 87 + ----------------------------------- + 2 files changed, 91 deletions(-) + +commit db7707b41a48c062b8b7595bbfc241692eed7b62 +Author: Daniel Mustieles +AuthorDate: Mon Dec 19 17:13:11 2011 +0100 +Commit: Daniel Mustieles +CommitDate: Mon Dec 19 17:13:11 2011 +0100 + + Updated Spanish translation + + po/es.po | 314 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 171 insertions(+), 143 deletions(-) + +commit 466432830c60c61fe99ac30e4914443b0f0bd979 +Author: Giovanni Campagna +AuthorDate: Sat Dec 17 20:08:50 2011 +0100 +Commit: Ryan Lortie +CommitDate: Mon Dec 19 10:33:55 2011 -0500 + + gsettings-tool: allow specifying custom schema dirs + + It happens that one wants to customize settings for plugins or + shell extensions, that installing schemas in nonstandard locations. + This patch adds the --schemadir option to gsettings, and ensure + that the appropriate schema is found. + + https://bugzilla.gnome.org/show_bug.cgi?id=666415 + + gio/gsettings-bash-completion.sh | 41 ++++++--- + gio/gsettings-tool.c | 179 + +++++++++++++++++++++++---------------- + 2 files changed, 133 insertions(+), 87 deletions(-) + +commit f59acb55c1758d5e620b4806036dbc997db24ad4 +Author: Florian Müllner +AuthorDate: Mon Dec 19 14:52:10 2011 +0100 +Commit: Florian Müllner +CommitDate: Mon Dec 19 15:26:30 2011 +0100 + + gdesktopappinfo: Use "Keywords" instead of "X-GNOME-Keywords" + + The field has now been standardized, so drop the prefix. + + gio/gdesktopappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 40413490374777c0aba8b569f5ad45ffc205cac0 +Author: Matthias Clasen +AuthorDate: Mon Dec 19 07:45:43 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 19 07:45:43 2011 -0500 + + Teach gtk-doc about G_GNUC_WARN_UNUSED_RESULT + + docs/reference/gio/Makefile.am | 3 ++- + docs/reference/glib/Makefile.am | 2 +- + docs/reference/gobject/Makefile.am | 2 +- + 3 files changed, 4 insertions(+), 3 deletions(-) + +commit 0971d36e4b8338f4f3f96d751f5275517514d3b1 +Author: Ryan Lortie +AuthorDate: Sat Dec 17 00:52:57 2011 -0500 +Commit: Ryan Lortie +CommitDate: Sat Dec 17 12:54:02 2011 -0500 + + GApplication: receiving end of GRemoteActionGroup + + Use the fact that the action group exporter now speaks to + GRemoteActionGroup to get the platform data into GApplicion without + hacks. + + https://bugzilla.gnome.org/show_bug.cgi?id=665737 + + gio/gapplication.c | 89 + ++++++++++++++++++++++++++++++++++++++++++++- + gio/gapplicationimpl-dbus.c | 6 ++- + gio/gapplicationimpl.h | 13 ++++--- + 3 files changed, 100 insertions(+), 8 deletions(-) + +commit 1807ef336a94a1d2498e2ce77686c29db1aa6aac +Author: Ryan Lortie +AuthorDate: Sat Dec 17 00:26:11 2011 -0500 +Commit: Ryan Lortie +CommitDate: Sat Dec 17 12:54:02 2011 -0500 + + action group exporter: kill GApplication hackery + + Use the GRemoteActionGroup interface, if available, instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=665737 + + gio/gactiongroupexporter.c | 38 +++++++++++++------------------------- + 1 file changed, 13 insertions(+), 25 deletions(-) + +commit eefd08996f7657488cb8afed23667030d6bd45f7 +Author: Ryan Lortie +AuthorDate: Sat Dec 17 00:17:08 2011 -0500 +Commit: Ryan Lortie +CommitDate: Sat Dec 17 12:54:02 2011 -0500 + + introduce GRemoteActionGroup + + This interfaceifies the extra functions that were on GDBusActionGroup + for dealing with platform data. + + The two main benefits of doing this: + + - no longer have to do a silly song and dance in GApplication + to avoid + calling GDBusActionGroup API from non-dbus-aware code + + - the interface can be reused by the action group exporter to avoid + ugly and unbindable hook callbacks + + https://bugzilla.gnome.org/show_bug.cgi?id=665737 + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 16 +++++ + gio/Makefile.am | 2 + + gio/gapplication.c | 19 ++--- + gio/gapplicationimpl-dbus.c | 35 +++------ + gio/gapplicationimpl.h | 14 +--- + gio/gdbusactiongroup.c | 138 + +++++++++++++----------------------- + gio/gdbusactiongroup.h | 9 --- + gio/gio.h | 1 + + gio/gio.symbols | 5 +- + gio/giotypes.h | 1 + + gio/gremoteactiongroup.c | 136 + +++++++++++++++++++++++++++++++++++ + gio/gremoteactiongroup.h | 74 +++++++++++++++++++ + 13 files changed, 303 insertions(+), 148 deletions(-) + +commit ee9f104432ee1ed0bf1e7461cf3264d0f0f1d297 +Author: Ryan Lortie +AuthorDate: Fri Dec 16 22:24:03 2011 -0500 +Commit: Ryan Lortie +CommitDate: Fri Dec 16 22:24:03 2011 -0500 + + GApplication: send platform data for actions again + + Use the _full variants of the GDBusActionGroup API to send platform + data + for action invocations once again. + + gio/gapplication.c | 16 +++++++--------- + gio/gapplicationimpl-dbus.c | 20 ++++++++++++++++++++ + gio/gapplicationimpl.h | 12 ++++++++++++ + 3 files changed, 39 insertions(+), 9 deletions(-) + +commit f58df66d4d640ea926573104be9849037a3c8522 +Author: Ryan Lortie +AuthorDate: Fri Dec 16 22:23:30 2011 -0500 +Commit: Ryan Lortie +CommitDate: Fri Dec 16 22:23:30 2011 -0500 + + GDBusActionGroup: add _full variants of activation + + This allows the platform_data to be explicitly specified. + + docs/reference/gio/gio-sections.txt | 4 ++ + gio/gdbusactiongroup.c | 93 + +++++++++++++++++++++++++++++++------ + gio/gdbusactiongroup.h | 9 ++++ + gio/gio.symbols | 2 + + 4 files changed, 95 insertions(+), 13 deletions(-) + +commit e5ed11bcf807b3e2c0a36c684e9b794ec253cd72 +Author: Ryan Lortie +AuthorDate: Fri Dec 16 21:25:57 2011 -0500 +Commit: Ryan Lortie +CommitDate: Fri Dec 16 21:25:57 2011 -0500 + + Revert "GDBusActionGroup: add static platform registration" + + This reverts commit fcc9902e98a6a6568a1150441c8680fd4615d437. + + gio/gactiongroupexporter.c | 10 ---------- + gio/gdbusactiongroup.c | 32 ++------------------------------ + gio/gdbusactiongroup.h | 14 +++----------- + gio/gio.symbols | 1 - + 4 files changed, 5 insertions(+), 52 deletions(-) + +commit e370631f46ca9b9d5b6ca1f7bbdf0ce708922ad3 +Author: Ryan Lortie +AuthorDate: Fri Dec 16 11:39:24 2011 -0500 +Commit: Ryan Lortie +CommitDate: Fri Dec 16 11:43:59 2011 -0500 + + GApplication: emit signals on action changes + + Now that we're a GActionMap the story about propagating signals + from our + (now-constant) internal action group is vastly simplified. If someone + calls g_application_set_action_group() then signals will stop + working -- + but this function is deprecated and they never worked before, so + no big + loss there. + + https://bugzilla.gnome.org/show_bug.cgi?id=643736 + + gio/gapplication.c | 17 ++++++++++++++++- + 1 file changed, 16 insertions(+), 1 deletion(-) + +commit 11015f165229ac3cb5f008a8824f8135ec45c89a +Author: Ryan Lortie +AuthorDate: Thu Dec 15 13:27:27 2011 -0500 +Commit: Ryan Lortie +CommitDate: Fri Dec 16 10:54:42 2011 -0500 + + windows XP threads: fix hilariously obvious race + + I tried to do a double-checked lock without the double check. + + Rodrigo Rivas Costa caught the problem and suggested the (obviously + correct) fix. + + https://bugzilla.gnome.org/show_bug.cgi?id=666296 + + glib/gthread-win32.c | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +commit fcc9902e98a6a6568a1150441c8680fd4615d437 +Author: Ryan Lortie +AuthorDate: Wed Dec 14 13:31:27 2011 -0500 +Commit: Ryan Lortie +CommitDate: Fri Dec 16 10:54:42 2011 -0500 + + GDBusActionGroup: add static platform registration + + We provide a mechanism by which a 'platform' (eg: Gtk) can register + some + hook functions to be called to collect platform-data at the point of + sending an outgoing action activation request and also to inform the + platform of this data on incoming requests (before and after + dispatching + the actual request). + + This can be used for forwarding timestamp and startup-notification + information (as is presently done in GApplication) but the + before/after + hook could also be used for acquiring/releasing the Gdk lock or other + similar things. + + https://bugzilla.gnome.org/show_bug.cgi?id=665737 + + gio/gactiongroupexporter.c | 10 ++++++++++ + gio/gdbusactiongroup.c | 32 ++++++++++++++++++++++++++++++-- + gio/gdbusactiongroup.h | 14 +++++++++++--- + gio/gio.symbols | 1 + + 4 files changed, 52 insertions(+), 5 deletions(-) + +commit 1d4009e6f7e1d368b3e3df2fa41b007277b600d8 +Author: Ravi Sankar Guntur +AuthorDate: Wed Dec 14 20:17:54 2011 +0530 +Commit: Matthias Clasen +CommitDate: Fri Dec 16 09:51:16 2011 -0500 + + Added API g_queue_free_full(). + + g_queue_free_full(), to free a Queue including its + dynamically-allocated elements. + On similar lines to List and Slist. + + void g_queue_free_full (GQueue *queue, GDestroyNotify + free_func); + + Test case covering g_queue_free_full() is added. + Added export symbol to glib.symbols. + + Closes Bug: https://bugzilla.gnome.org/show_bug.cgi?id=657433 + + Signed-off-by: Ravi Sankar Guntur + + glib/glib.symbols | 1 + + glib/gqueue.c | 24 ++++++++++++++++++++++++ + glib/gqueue.h | 2 ++ + glib/tests/queue.c | 50 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 77 insertions(+) + +commit 63e69b4958272c5c1525da60005cae6a974d0d48 +Author: Colin Walters +AuthorDate: Thu Dec 15 09:47:15 2011 -0500 +Commit: Colin Walters +CommitDate: Thu Dec 15 09:47:37 2011 -0500 + + GDBusActionGroup: Fix a typo in docs + + gio/gdbusactiongroup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 84df41c02c8806071d18e532432dff00a48ff369 +Author: Dan Winship +AuthorDate: Wed Dec 14 10:19:13 2011 -0500 +Commit: Dan Winship +CommitDate: Thu Dec 15 09:39:06 2011 -0500 + + configure.ac: robustify netlink.h check + + https://bugzilla.gnome.org/show_bug.cgi?id=666173 + + configure.ac | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 14fb10d14b07cef6af8952bfdd0bd4d864876607 +Author: Stef Walter +AuthorDate: Fri Dec 9 18:19:24 2011 +0100 +Commit: Stef Walter +CommitDate: Thu Dec 15 07:22:37 2011 +0100 + + GBytes: add a size argument to g_bytes_get_data + + * An out size argument so that this is more easily bindable + by gobject-introspection. + + https://bugzilla.gnome.org/show_bug.cgi?id=665879 + + glib/gbytes.c | 8 ++++++-- + glib/gbytes.h | 3 ++- + glib/gtimezone.c | 4 ++-- + glib/gvariant-core.c | 5 ++--- + glib/tests/array-test.c | 4 +++- + glib/tests/bytes.c | 41 ++++++++++++++++++++++++++--------------- + 6 files changed, 41 insertions(+), 24 deletions(-) + +commit 162bafee37ccd5d58260423a8120fdcba25ecad6 +Author: Chris Coulson +AuthorDate: Wed Dec 14 14:00:56 2011 +0000 +Commit: Matthias Clasen +CommitDate: Wed Dec 14 21:15:35 2011 -0500 + + Initialize service_loop before running the service thread + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666129 + + gio/tests/gdbus-peer.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a6eda97d8e8440ea5b04c081d444916dc51ad220 +Author: Matthias Clasen +AuthorDate: Wed Dec 14 21:05:38 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 14 21:05:38 2011 -0500 + + menu markup: tolerate not having a hash table of objects + + Various places in the code were assuming that the hash table was + always + available. Fix this, and also avoid leaking strings now that the hash + table may be NULL. + + Based on a patch by Simon McVittie, bug 666167 + + gio/gmenumarkup.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit e129deb0170c8a18e662c53db799f2ba16ebf26f +Author: Simon McVittie +AuthorDate: Wed Dec 14 16:56:15 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 18:10:31 2011 +0000 + + g_array_free, g_ptr_array_free: decrement refcount if not the last ref + + foo_free is conceptually "worth" one unref; not decrementing the + refcount here means the GArray or GPtrArray wrapper (but not its + contents) would leak in the following call sequence: + + p = g_ptr_array_new (); + g_ptr_array_ref (p); + g_ptr_array_free (p, TRUE); + g_ptr_array_unref (p); + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666113 + Reviewed-by: Emmanuele Bassi + + glib/garray.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit df9d9cc72f4d107f576322516a87e9fe0daa2539 +Author: Simon McVittie +AuthorDate: Wed Dec 14 16:53:24 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 18:10:25 2011 +0000 + + GArray, GPtrArray: factor out the actual freeing + + Depending how the array is freed, we may want to free the underlying + array (the "segment"), the struct wrapper or both. + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666113 + Reviewed-by: Emmanuele Bassi + + glib/garray.c | 57 + +++++++++++++++++++++++++++++++++++++++++++-------------- + 1 file changed, 43 insertions(+), 14 deletions(-) + +commit 6457677b7db236ab580bdf546221f1e8d2102c80 +Author: Simon McVittie +AuthorDate: Wed Dec 14 16:46:56 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 18:09:48 2011 +0000 + + g_key_file_get_string_list: don't leak the pieces on error + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666113 + Reviewed-by: Emmanuele Bassi + + glib/gkeyfile.c | 1 + + 1 file changed, 1 insertion(+) + +commit a1bd6e07172771f9a7e8006e5f1f824cc1f564ea +Author: Simon McVittie +AuthorDate: Tue Dec 13 18:18:27 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 15:59:29 2011 +0000 + + tls-interaction test: use a weak pointer instead of a deliberate + use-after-free + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666115 + Reviewed-by: Dan Winship + + gio/tests/tls-interaction.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 0a7930d04879018b5ea451ee9708f40fe93a131e +Author: Ryan Lortie +AuthorDate: Tue Dec 13 20:54:24 2011 -0500 +Commit: Ryan Lortie +CommitDate: Wed Dec 14 09:33:30 2011 -0500 + + gdbus tests: remove buggy use of GMainLoop + + g_main_loop_quit() only quits mainloops that are currently running -- + not ones that may run in the future. The way the gdbus-threading + tests + are written can possibly result in a call to g_main_loop_quit() before + g_main_loop_run() has started. + + The mainloops aren't actually used for anything other than signalling + the completion of the threads, so just use g_thread_join() for that. + + https://bugzilla.gnome.org/show_bug.cgi?id=666129 + + gio/tests/gdbus-threading.c | 25 ------------------------- + 1 file changed, 25 deletions(-) + +commit a2e9318d4a8dc1257526814b8255210acd13d406 +Author: Ryan Lortie +AuthorDate: Wed Dec 14 09:32:11 2011 -0500 +Commit: Ryan Lortie +CommitDate: Wed Dec 14 09:33:30 2011 -0500 + + two test fixes for ARM + + First, some ARM systems are not fast enough to meet the 30 second + deadline in gwakeuptest.c, so increase that to 60. + + Second, we have some signed/unsigned woes in the gparam transform + tests. + + glib/tests/gwakeuptest.c | 4 ++-- + gobject/tests/param.c | 20 ++++++++++---------- + 2 files changed, 12 insertions(+), 12 deletions(-) + +commit 995a2eb50bf7d9e46c029768691f93b31e09bdf8 +Author: Simon McVittie +AuthorDate: Tue Dec 13 18:18:07 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 12:41:15 2011 +0000 + + Plug some leaks in the GIO tests + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666115 + Reviewed-by: Matthias Clasen + + gio/tests/data-input-stream.c | 1 + + gio/tests/network-monitor.c | 8 ++++++++ + gio/tests/pollable.c | 1 + + gio/tests/socket.c | 3 +++ + gio/tests/tls-certificate.c | 1 + + 5 files changed, 14 insertions(+) + +commit f6b2847e5787a7c17a6d85f57049c5699451c246 +Author: Simon McVittie +AuthorDate: Tue Dec 13 14:46:02 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 12:40:57 2011 +0000 + + hash test: avoid leaking various keys and values + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666115 + Reviewed-by: Matthias Clasen + + glib/tests/hash.c | 82 + ++++++++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 75 insertions(+), 7 deletions(-) + +commit 5dca72fe67aec5f98bfb68257c34ff133b59d22a +Author: Simon McVittie +AuthorDate: Mon Dec 12 18:56:21 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 12:40:39 2011 +0000 + + GOptionContext test: free all arguments, not just the remaining ones + + On success, g_option_context_parse alters argv by removing options + that + it understood, so g_strfreev is insufficient. Instead, take a shallow + copy and free all of the arguments in that, then free the array argv + but not its contents. + + Also, improve the checks in error cases, by checking that argv has + not been altered in this way. + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666115 + Reviewed-by: Matthias Clasen + + glib/tests/option-context.c | 353 + +++++++++++++++++++++++++++++++++----------- + 1 file changed, 265 insertions(+), 88 deletions(-) + +commit 29f2ced8eb32d9001da8082c4530f017decb8267 +Author: Simon McVittie +AuthorDate: Tue Dec 13 19:01:42 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 12:40:16 2011 +0000 + + various GLib tests: plug memory leaks + + These don't really matter, since it's test code, but they do obscure + real leaks in the library. + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666115 + Acked-by: Matthias Clasen + + glib/tests/bookmarkfile.c | 6 ++---- + glib/tests/cache.c | 2 ++ + glib/tests/convert.c | 4 ++++ + glib/tests/fileutils.c | 4 ++++ + glib/tests/gvariant.c | 1 + + glib/tests/gwakeuptest.c | 2 +- + glib/tests/include.c | 1 + + glib/tests/keyfile.c | 1 + + glib/tests/mainloop.c | 3 +++ + glib/tests/markup-parse.c | 33 ++++++++++++++++++++++++++------- + glib/tests/mem-overflow.c | 23 +++++++++++++++++++---- + glib/tests/node.c | 2 ++ + glib/tests/option-argv0.c | 2 ++ + glib/tests/option-context.c | 3 +++ + glib/tests/protocol.c | 6 ++++++ + glib/tests/queue.c | 12 ++++++++++-- + glib/tests/sequence.c | 7 +++++++ + glib/tests/strfuncs.c | 5 ++++- + glib/tests/string.c | 4 ++++ + glib/tests/timeout.c | 2 ++ + glib/tests/tree.c | 1 + + glib/tests/unix.c | 3 +++ + glib/tests/uri.c | 15 ++++++++++++++- + gobject/tests/boxed.c | 2 ++ + gobject/tests/param.c | 1 + + tests/testglib.c | 12 ++++++++++++ + 26 files changed, 137 insertions(+), 20 deletions(-) + +commit a0f5e89aedd0fcd04164c35b1c77d194adfc698a +Author: Simon McVittie +AuthorDate: Mon Dec 12 15:55:59 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 12:40:02 2011 +0000 + + testglib: test_file_functions: don't close fd if it's -1 + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666115 + Reviewed-by: Matthias Clasen + + tests/testglib.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit fedc0cff518067c26bad698798e50069c765d1f3 +Author: Simon McVittie +AuthorDate: Wed Dec 14 12:39:06 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 12:39:06 2011 +0000 + + Revert "g_menu_markup_start_element: tolerate not having a hash + table of objects" + + This reverts commit bcdb60641196f98482b5e17fcc96a92589deba35, + accidentally pushed before it was reviewed. + + gio/gmenumarkup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bcdb60641196f98482b5e17fcc96a92589deba35 +Author: Simon McVittie +AuthorDate: Wed Dec 14 12:31:31 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 12:31:31 2011 +0000 + + g_menu_markup_start_element: tolerate not having a hash table + of objects + + I don't know whether this is the right fix, but gio/tests/gmenumodel + crashes out, which can't be right. + + gio/gmenumarkup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 93f8f8158fc086312ad1e0711d403bb7479416ee +Author: Simon McVittie +AuthorDate: Mon Dec 12 18:58:03 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 12:26:17 2011 +0000 + + g_variant_byteswap: don't leak serialised.data + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666113 + Reviewed-by: Matthias Clasen + + glib/gvariant.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a48edddc198237803474994a3c9813d3b21f4f78 +Author: Simon McVittie +AuthorDate: Tue Dec 13 18:16:55 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 12:26:17 2011 +0000 + + GDBusActionGroup: don't leak param_str + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666113 + Reviewed-by: Matthias Clasen + + gio/gdbusactiongroup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c49a4dba82ea4edb8d09619caf3dc4f65e92f9dc +Author: Simon McVittie +AuthorDate: Tue Dec 13 14:44:18 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 12:26:17 2011 +0000 + + g_data_set_internal: avoid use-after-free if datalist is in dataset + + Removing the last thing in a dataset frees the dataset, and if the + datalist was in a dataset, we can't safely unlock it after the dataset + has been freed. Unlock it sooner. + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666113 + Reviewed-by: Matthias Clasen + + glib/gdataset.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 0bf8378840ef553262fa4f8c981c867f8f6efaaf +Author: Simon McVittie +AuthorDate: Mon Dec 12 18:37:10 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 12:26:17 2011 +0000 + + g_strcompress: check that source is non-NULL rather than just crashing + + Calling this function with a NULL argument is considered to be + invalid, + but one of the regression tests does it anyway (to watch it crash), + which + seems a good indication that it's expected to be somewhat common. + Let's check it rather than segfaulting. + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666113 + Reviewed-by: Emmanuele Bassi + Reviewed-by: Matthias Clasen + + glib/gstrfuncs.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit fbab468da531c41a516024171e67c2a7088979dd +Author: Simon McVittie +AuthorDate: Tue Dec 13 18:17:13 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 12:26:16 2011 +0000 + + g_dbus_action_group_changed: don't leak iterator and its contents + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666113 + Reviewed-by: Emmanuele Bassi + + gio/gdbusactiongroup.c | 1 + + 1 file changed, 1 insertion(+) + +commit 90baa7e460c86c4c1d22f791482a2380467a190a +Author: Simon McVittie +AuthorDate: Mon Dec 12 18:35:14 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 12:26:16 2011 +0000 + + GKeyFile: free group comments when the group is removed + + These were leaked. Valgrind was sad. + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666113 + Reviewed-by: Emmanuele Bassi + + glib/gkeyfile.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 9ddb2f8091e72e2c03794e65bd35031e49559dff +Author: Simon McVittie +AuthorDate: Mon Dec 12 18:34:47 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 12:26:16 2011 +0000 + + g_hmac_get_string: don't allocate and leak an unused buffer + + Also document why we're not actually using the buffer for anything. + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666113 + Reviewed-by: Emmanuele Bassi + + glib/ghmac.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 64ca85ceaeb0375ff5931d45810015d5d2c774f1 +Author: Simon McVittie +AuthorDate: Mon Dec 12 15:54:50 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Dec 14 12:26:16 2011 +0000 + + g_hmac_copy: initialize the refcount + + In practice, the uninitialized refcount will typically mean that + the copy is + never freed, and leaks. + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666113 + Reviewed-by: Emmanuele Bassi + + glib/ghmac.c | 1 + + 1 file changed, 1 insertion(+) + +commit edfab83c07ccac635dae15f0b8ee30c662d239a3 +Author: Matthias Clasen +AuthorDate: Wed Dec 14 07:16:04 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 14 07:16:45 2011 -0500 + + Add an explicit deprecation note to g_thread_init + + https://bugzilla.gnome.org/show_bug.cgi?id=666145 + + glib/deprecated/gthread-deprecated.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit b386d9ffb70879fed888f15c8ca41957e02c280c +Author: Matthias Clasen +AuthorDate: Wed Dec 14 00:10:34 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 14 00:10:34 2011 -0500 + + Add another menu parser test + + This one concerns itself with objects. + + gio/tests/gmenumodel.c | 62 + +++++++++++++++++++++++++++++++++++++------------- + 1 file changed, 46 insertions(+), 16 deletions(-) + +commit b153e38ff0b6fc7c6532e6dfc5b0f7305a360574 +Author: Matthias Clasen +AuthorDate: Tue Dec 13 23:16:25 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 13 23:16:25 2011 -0500 + + GMenuModel: Flesh out the docs some more + + gio/gmenumodel.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit c14a3b3e9c43a32552223c05f1559717eeccec95 +Author: Matthias Clasen +AuthorDate: Tue Dec 13 23:06:16 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 13 23:06:16 2011 -0500 + + GMenu: purge references to GMenuProxy from the docs + + gio/gmenuexporter.c | 4 ++-- + gio/gmenumodel.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 7e92997539b481e31b5566b4885c8b5158488daa +Author: Stef Walter +AuthorDate: Tue Dec 13 23:00:16 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 13 23:01:51 2011 -0500 + + documentation fixes + + Fixes for gtk-doc warnings. + + http://bugzilla.gnome.org/show_bug.cgi?id=66469 + + https://bugzilla.gnome.org/show_bug.cgi?id=664699 + + docs/reference/glib/glib-sections.txt | 4 ++ + docs/reference/gobject/gobject-sections.txt | 2 + + glib/docs.c | 6 ++- + glib/garray.c | 12 +++--- + glib/gbacktrace.h | 2 +- + glib/gerror.c | 2 +- + glib/gfileutils.c | 10 ++--- + glib/ggettext.c | 2 +- + glib/ghook.c | 4 +- + glib/giochannel.c | 10 ++--- + glib/glib-init.c | 2 +- + glib/glib-unix.c | 20 +++++---- + glib/glib-unix.h | 4 +- + glib/gmain.c | 6 +-- + glib/gmain.h | 3 +- + glib/gmessages.c | 6 +-- + glib/gpoll.h | 3 ++ + glib/gscanner.c | 65 + +++++++++++++++++++---------- + glib/gscanner.h | 10 ++++- + glib/gspawn.c | 8 ++-- + glib/gspawn.h | 34 +++++++-------- + glib/gstdio.c | 2 +- + glib/gstrfuncs.c | 54 ++++++++++++------------ + glib/gtestutils.c | 12 +++--- + glib/gthread-posix.c | 2 +- + glib/gthread.c | 8 ++-- + gmodule/gmodule.c | 1 + + gobject/genums.c | 2 +- + 28 files changed, 169 insertions(+), 127 deletions(-) + +commit b0c3997fdd553eca363dfd0f3c4da9938800acf9 +Author: Matthias Clasen +AuthorDate: Tue Dec 13 12:56:20 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 13 13:21:55 2011 -0500 + + Improve GNetworkMonitor docs + + Make sure we get signal and property docs, and mention + the extension point in the overview. + + docs/reference/gio/gio.types | 1 + + docs/reference/gio/overview.xml | 25 ++++++++++++++++++++++--- + 2 files changed, 23 insertions(+), 3 deletions(-) + +commit f3dde2d4057f5dfa5cbc9f1e3f13d596608b0b3b +Author: Christophe Fergeau +AuthorDate: Mon Dec 12 15:06:41 2011 +0100 +Commit: Christophe Fergeau +CommitDate: Tue Dec 13 16:40:34 2011 +0100 + + gnetworkmonitornetlink.c: Fix compilation on RHEL 6.2 + + When trying to compile glib master on a RHEL 6.2 system, it fails + with: + + make[4]: Entering directory `/home/teuf/gnome/src/glib/gio' + CC libgio_2_0_la-gnetworkmonitornetlink.lo + In file included from gnetworkmonitornetlink.c:25: + /usr/include/linux/netlink.h:35: error: expected + specifier-qualifier-list before 'sa_family_t' + gnetworkmonitornetlink.c: In function + 'g_network_monitor_netlink_initable_init': + gnetworkmonitornetlink.c:99: error: 'struct sockaddr_nl' has no + member named 'nl_family' + gnetworkmonitornetlink.c:100: error: 'struct sockaddr_nl' has no + member named 'nl_pid' + gnetworkmonitornetlink.c:100: error: 'struct sockaddr_nl' has no + member named 'nl_pad' + gnetworkmonitornetlink.c:101: error: 'struct sockaddr_nl' has no + member named 'nl_groups' + make[4]: *** [libgio_2_0_la-gnetworkmonitornetlink.lo] Error 1 + + sa_family_t is defined in sys/socket.h, this commit makes sure this + header is included before netlink.h + + This fixes bgo bug #666001 + + gio/gnetworkmonitornetlink.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit b79d1f8619951322efcfab02df65d868fa247ac7 +Author: Ryan Lortie +AuthorDate: Tue Dec 13 09:16:51 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Dec 13 09:16:51 2011 -0500 + + bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ab15175567d11600d0293fb4028718d2dead2e76 +Author: Chun-wei Fan +AuthorDate: Tue Dec 13 12:12:48 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Dec 13 12:12:48 2011 +0800 + + Update VS property sheets + + "Install" the newly-added public headers in GLib and GIO, such as + the ones + for GMenuModel, etc. + + build/win32/vs10/glib.props | 28 ++++++++++++++++++++++++++-- + build/win32/vs9/glib.vsprops | 14 +++++++++++++- + 2 files changed, 39 insertions(+), 3 deletions(-) + +commit b6890e94fe304adc8d00f0211d3ed546841bf388 +Author: Alexandre Franke +AuthorDate: Mon Dec 12 20:36:29 2011 +0100 +Commit: Alexandre Franke +CommitDate: Mon Dec 12 20:36:29 2011 +0100 + + Fix wording + + délai épuisé has been replaced with délai dépassé + + po/fr.po | 6126 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 3123 insertions(+), 3003 deletions(-) + +commit 2f9ab64ac9dc4aeba4a6a297888986d26515d6f8 +Author: Ryan Lortie +AuthorDate: Mon Dec 12 13:28:24 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 12 13:36:40 2011 -0500 + + glib 2.31.4 + + NEWS | 17 ++++++++++++++--- + configure.ac | 2 +- + 2 files changed, 15 insertions(+), 4 deletions(-) + +commit 93f17967e4c6c5194d3c0cc4512169b6bd394bf7 +Author: Ryan Lortie +AuthorDate: Mon Dec 12 13:28:09 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 12 13:33:54 2011 -0500 + + GActionGroupExporter: stop using signal IDs + + GDBusConnection recently changed to dispatching its GDestroyNotify + calls + from an idle instead of on-the-spot. Under the previous regime, we + would destroy-notify the action group export of a GtkApplicationWindow + at the point it was removed from the application (ie: slightly before + being disposed). + + With the destroy notify now deferred to an idle, the window has + already + been disposed, so the signal handlers have already been disconnected. + + Avoid the problem by dropping our use of signal IDs and just do + g_signal_handlers_disconnect_by_func(), which doesn't complain + if there + is no connection. + + gio/gactiongroupexporter.c | 32 ++++++++++++++++---------------- + 1 file changed, 16 insertions(+), 16 deletions(-) + +commit bbae5fe94193104ea24124e284bc3cccf9bdcb73 +Author: Ryan Lortie +AuthorDate: Mon Dec 12 13:13:42 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 12 13:13:42 2011 -0500 + + GMenuMarkup parser: small typo fix in docs + + gio/gmenumarkup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b8cde0b507ed2d131a1e88d3701b62be2fb012ac +Author: Ryan Lortie +AuthorDate: Mon Dec 12 13:08:48 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 12 13:08:48 2011 -0500 + + More clearly define 'named menu' in the XML parser + + This is when menus have id='' attributes. + + gio/gmenumarkup.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +commit 60bcb367832b5e625e51d11f863a9044712de924 +Author: Ryan Lortie +AuthorDate: Mon Dec 12 13:07:04 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 12 13:07:04 2011 -0500 + + GMenu parser: use G_MARKUP_COLLECT_BOOLEAN + + ...instead of trying to parse the boolean for ourselves. + + gio/gmenumarkup.c | 41 ++++++----------------------------------- + 1 file changed, 6 insertions(+), 35 deletions(-) + +commit 5c70759482d9fe8797020590071615386831b86e +Author: Ryan Lortie +AuthorDate: Mon Dec 12 10:43:54 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 12 10:45:05 2011 -0500 + + update maintainers in glib.doap + + (at request of sysadmin team) + + glib.doap | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 4f5732f721d11545bfd2ad3a971a44b76bfa7273 +Author: Matthias Clasen +AuthorDate: Mon Dec 12 01:44:41 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 12 01:44:41 2011 -0500 + + GApplication: fix a copy-paste error + + Activating an action must not turn into a change-state request. + + gio/gapplication.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit dec7ed8abad74baa70160e0652171666d5ca461f +Author: Matthias Clasen +AuthorDate: Mon Dec 12 00:01:20 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 12 00:01:20 2011 -0500 + + Rearrange GApplication long desc a bit + + gio/gapplication.c | 53 + +++++++++++++++++++++++++++-------------------------- + 1 file changed, 27 insertions(+), 26 deletions(-) + +commit e24241384793b9d4648d00df8ac972dafcbc87a0 +Author: Matthias Clasen +AuthorDate: Mon Dec 12 00:00:16 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 12 00:00:16 2011 -0500 + + Expand actiongroup docs a bit more + + gio/gactiongroup.c | 33 +++++++++++++++++++++++++++------ + 1 file changed, 27 insertions(+), 6 deletions(-) + +commit 840482658a7cdacd012df6edba78edf7f7862036 +Author: Matthias Clasen +AuthorDate: Sun Dec 11 12:05:23 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sun Dec 11 12:05:23 2011 -0500 + + Fix an assertion when activating apps a second time + + This was causing the following critical when running bloatpad twice: + GLib-CRITICAL **: g_hash_table_insert_internal: assertion `hash_table + != NULL' failed + + gio/gdbusactiongroup.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit f40de4b15201eaf6936e7d82eeeb3c044067be7c +Author: Matthias Clasen +AuthorDate: Sat Dec 10 22:14:34 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 10 22:14:34 2011 -0500 + + Add some more since tags + + gio/gmenu.c | 8 ++++++-- + gio/gmenumodel.c | 12 +++++++++--- + 2 files changed, 15 insertions(+), 5 deletions(-) + +commit f0eb58075a9716e5eb976e160b374c23a04ec5e5 +Author: Matthias Clasen +AuthorDate: Sat Dec 10 21:55:11 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 10 21:55:11 2011 -0500 + + Add a since tag + + gio/gfile.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 042954de9f990e53e81374c1b14ad53c7e4f7018 +Author: Matthias Clasen +AuthorDate: Sat Dec 10 21:49:10 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 10 21:49:10 2011 -0500 + + Fix since tag + + glib/gunicode.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2d6d127c96de7317c6364ff7abfb29475e644df2 +Author: Matthias Clasen +AuthorDate: Sat Dec 10 21:46:13 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 10 21:46:39 2011 -0500 + + Whitespace fixes + + And add some missing since tags. + + gio/gnetworkmonitor.c | 66 +++++++------- + gio/gnetworkmonitorbase.c | 166 +++++++++++++++++----------------- + gio/gnetworkmonitornetlink.c | 210 + +++++++++++++++++++++---------------------- + 3 files changed, 223 insertions(+), 219 deletions(-) + +commit d50f77b394641fbf3d8b57e1328d4a5bbceac31e +Author: Matthias Clasen +AuthorDate: Sat Dec 10 21:42:49 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 10 21:42:49 2011 -0500 + + Add g_application_set/get_default to the docs + + docs/reference/gio/gio-sections.txt | 2 ++ + 1 file changed, 2 insertions(+) + +commit f109415d950edae973ca630046deb7aebf3c8ddd +Author: Matthias Clasen +AuthorDate: Sat Dec 10 20:47:22 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 10 20:47:22 2011 -0500 + + Add since tags + + gio/gdbusactiongroup.c | 4 +- + gio/gdbusmenumodel.c | 5 ++- + gio/gmenu.c | 102 + +++++++++++++++++++++++++++++++++++++------------ + gio/gmenuexporter.c | 4 +- + gio/gmenumarkup.c | 16 ++++++-- + gio/gmenumodel.c | 68 ++++++++++++++++++++++++--------- + 6 files changed, 150 insertions(+), 49 deletions(-) + +commit 829b4dfb43c118602d1c333a1a1fb7ec50cef7b0 +Author: Ryan Lortie +AuthorDate: Sat Dec 10 17:21:53 2011 -0500 +Commit: Ryan Lortie +CommitDate: Sat Dec 10 17:23:28 2011 -0500 + + Clean up GApplication docs + + Clean up the docs for GApplication and related classes. + + I'm no longer writing documentation for the structure type of classes + and interfaces. See https://bugzilla.gnome.org/show_bug.cgi?id=665926 + for discussin on the correct way forward on this point. + + Also: stop putting gtk-doc comments in installed headers. + + docs/reference/gio/gio-sections.txt | 4 +++- + gio/Makefile.am | 32 ++++++++++++++++++-------------- + gio/gaction.c | 17 +++++++++++++++++ + gio/gaction.h | 14 -------------- + gio/gactiongroup.c | 23 +++++++++++++++++++++++ + gio/gactiongroup.h | 20 -------------------- + gio/gactionmap.c | 15 ++++++++++++++- + gio/gapplication.c | 35 + +++++++++++++++++++++++++++++++++++ + gio/gapplication.h | 35 + ----------------------------------- + gio/gapplicationcommandline.c | 8 ++++++++ + gio/gapplicationcommandline.h | 16 ---------------- + 11 files changed, 118 insertions(+), 101 deletions(-) + +commit a8927732c9889d345fd34384b25a930ba8b76ef8 +Author: Ryan Lortie +AuthorDate: Sat Dec 10 14:06:18 2011 -0500 +Commit: Ryan Lortie +CommitDate: Sat Dec 10 14:09:54 2011 -0500 + + GDate: gtk-doc fixup + + glib/gdate.c | 18 +++++++++++------- + 1 file changed, 11 insertions(+), 7 deletions(-) + +commit 3e06a34abaa0cee15b5372d5c9ba546509c2dd87 +Author: Seong-ho, Cho +AuthorDate: Sat Dec 10 23:32:23 2011 +0900 +Commit: Changwoo Ryu +CommitDate: Sat Dec 10 23:32:23 2011 +0900 + + Updated Korean translation + + po/ko.po | 5780 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 2915 insertions(+), 2865 deletions(-) + +commit ee4b21bc8c1c00d58009e0537b815677e10f2451 +Author: Yaron Shahrabani +AuthorDate: Sat Dec 10 11:03:08 2011 +0200 +Commit: Yaron Shahrabani +CommitDate: Sat Dec 10 11:03:08 2011 +0200 + + Updated Hebrew translation. + + po/he.po | 612 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 338 insertions(+), 274 deletions(-) + +commit 4eeac41d7dd9b75d2d44f5542f70d4f795a34333 +Author: Colin Walters +AuthorDate: Fri Dec 9 11:13:23 2011 -0500 +Commit: Colin Walters +CommitDate: Fri Dec 9 11:13:23 2011 -0500 + + gfile: Don't use C++ keyword "template" as variable name + + This breaks autotestkeyword.cc from gtk+. + + gio/gfile.c | 8 ++++---- + gio/gfile.h | 2 +- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit 8fcb73b0a90e663f5b1bf6d7b2554623c6b14968 +Author: Aleksander Morgado +AuthorDate: Fri Dec 9 12:11:53 2011 +0100 +Commit: Aleksander Morgado +CommitDate: Fri Dec 9 15:18:25 2011 +0100 + + gdbus-codegen: fix typo in generated documentation + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=665858 + + gio/gdbus-2.0/codegen/codegen.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 721667399a2ebc198292ecb5bfedc8f296aef04d +Author: Thomas Hindoe Paaboel Andersen +AuthorDate: Thu Dec 8 23:17:07 2011 +0100 +Commit: Dan Winship +CommitDate: Fri Dec 9 08:58:05 2011 -0500 + + GFile: add g_file_new_temp + + A convenience function that creates a temporary file and returns + a GFile and GFileIOStream for it. + + The file is created using g_file_open_tmp. + + https://bugzilla.gnome.org/show_bug.cgi?id=657085 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gfile.c | 54 + ++++++++++++++++++++++++++++++++++++- + gio/gfile.h | 3 +++ + gio/gio.symbols | 1 + + gio/glocalfileoutputstream.c | 10 +++++++ + gio/glocalfileoutputstream.h | 1 + + 6 files changed, 69 insertions(+), 1 deletion(-) + +commit e50d8a11b273498407cd360330533bda80e1f38d +Author: Matthias Clasen +AuthorDate: Fri Dec 9 08:01:12 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Dec 9 08:01:12 2011 -0500 + + Cosmetic doc change + + gobject/gobject.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 605856adfa0cbd2a4cfed63bf013c86f09d15f04 +Author: Piotr Drąg +AuthorDate: Fri Dec 9 12:55:40 2011 +0100 +Commit: Piotr Drąg +CommitDate: Fri Dec 9 12:55:40 2011 +0100 + + Updated POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit 8d428e3cc43e4732feba2c47237b0a50c08cab92 +Author: Matthias Clasen +AuthorDate: Thu Dec 8 23:44:30 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Dec 8 23:46:32 2011 -0500 + + GApplication: Make ::startup run-first + + https://bugzilla.gnome.org/show_bug.cgi?id=665817 + + gio/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 94a2ed4bc2dad2547b4ae89aad40b4d4483e2d0d +Author: Matthias Clasen +AuthorDate: Thu Dec 8 22:00:24 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Dec 8 22:00:24 2011 -0500 + + Updates + + NEWS | 4 ++++ + 1 file changed, 4 insertions(+) + +commit a65429cf4442168981130463e2e40fc1bf136293 +Author: Ryan Lortie +AuthorDate: Thu Dec 8 17:52:10 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:07:50 2011 -0500 + + gio.symbols fixes + + gio/gio.symbols | 10 +++------- + 1 file changed, 3 insertions(+), 7 deletions(-) + +commit a6366dc2892ff476a737f36ddfb0952895e58158 +Author: Ryan Lortie +AuthorDate: Thu Dec 8 17:49:01 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:07:47 2011 -0500 + + GDBusActionGroup: make API just like GDBusMenuModel + + Have one simple _get() API that returns the group immediately, in an + empty state. The group is initialised on the first attempt to + interact + with it. + + Leave a secret 'back door' for GApplication to do a blocking + initialisation. + + docs/reference/gio/gio-sections.txt | 5 +- + gio/gapplicationimpl-dbus.c | 12 +- + gio/gdbusactiongroup.c | 430 + +++++++++++++++++------------------- + gio/gdbusactiongroup.h | 16 +- + gio/tests/actions.c | 18 +- + 5 files changed, 216 insertions(+), 265 deletions(-) + +commit 0fdd9985bb4c840d1767f1e15e2fa5c97870ed7a +Author: Ryan Lortie +AuthorDate: Thu Dec 8 16:06:01 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:15 2011 -0500 + + GDBusActionGroup: drop ability to 'inject' + + Also drop the GDBusActionGroupFlags that were only meant to facilitate + injection-based usage. + + gio/gapplicationimpl-dbus.c | 3 +- + gio/gdbusactiongroup.c | 97 + +++++++++++++-------------------------------- + gio/gdbusactiongroup.h | 8 ---- + gio/gioenums.h | 19 --------- + gio/tests/actions.c | 2 +- + 5 files changed, 29 insertions(+), 100 deletions(-) + +commit caa6287f399422677f6496412c2e009e686c42c2 +Author: Matthias Clasen +AuthorDate: Thu Dec 8 00:46:03 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:15 2011 -0500 + + More documentation fixes + + gio/gapplication.c | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +commit 04aab0cd46c1623f3dc6b4524f41c0a4cf243868 +Author: Matthias Clasen +AuthorDate: Thu Dec 8 00:31:23 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:15 2011 -0500 + + Fix up docs + + docs/reference/gio/gio-docs.xml | 2 +- + docs/reference/gio/gio-sections.txt | 14 +++++++------- + docs/reference/gio/gio.types | 2 +- + gio/gdbusactiongroup.c | 2 +- + gio/gdbusmenumodel.c | 2 +- + 5 files changed, 11 insertions(+), 11 deletions(-) + +commit 39bebbed8241d9ce5209eff2d3dd5793e4221505 +Author: Matthias Clasen +AuthorDate: Wed Dec 7 22:31:10 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:15 2011 -0500 + + Don't use deprecated GApplication api in examples + + gio/tests/gapplication-example-actions.c | 10 ++-------- + gio/tests/gapplication-example-menu.c | 14 +++----------- + 2 files changed, 5 insertions(+), 19 deletions(-) + +commit 13e084437b6d3611ccd59f18aa799c87a2bfc3fd +Author: Ryan Lortie +AuthorDate: Wed Dec 7 21:22:51 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:15 2011 -0500 + + GDBusMenuModel: become thread-aware + + Allow imports of the same menu on multiple different main contexts at + the same time by creating a separate object for each context. + + gio/gdbusmenumodel.c | 38 ++++++++++++++++++++++++++++---------- + 1 file changed, 28 insertions(+), 10 deletions(-) + +commit 25ffde957cfcaa07c44a348da61d04456865d396 +Author: Ryan Lortie +AuthorDate: Wed Dec 7 21:10:18 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:15 2011 -0500 + + menu threaded test: run the mainloop after export + + GDBusConnection now dispatches GDestroyNotify calls back to the + mainloop. Adding an idle to the mainloop is O(n) in the number + of idles + already there. We therefore need to periodically empty the + mainloop to + avoid quadratic behaviour with a very large 'n'. + + gio/tests/gmenumodel.c | 1 + + 1 file changed, 1 insertion(+) + +commit 1c036cb9f525853174c96d11e77160c315476df0 +Author: Ryan Lortie +AuthorDate: Wed Dec 7 21:05:38 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:15 2011 -0500 + + Rename GMenuProxy to GDBusMenuModel + + This improves consistency with GDBusActionGroup. + + gio/Makefile.am | 4 +- + gio/gdbusmenumodel.c | 907 + +++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gdbusmenumodel.h | 45 +++ + gio/gio.h | 2 +- + gio/gmenuproxy.c | 907 + ------------------------------------------------- + gio/gmenuproxy.h | 44 --- + gio/tests/gmenumodel.c | 8 +- + 7 files changed, 959 insertions(+), 958 deletions(-) + +commit 14900d37f46ecab99deb4fd97822f1f2ec105c40 +Author: Ryan Lortie +AuthorDate: Wed Dec 7 20:39:23 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:15 2011 -0500 + + action exporter: clarify threading situation + + Exporting can only be done relative to a particular given main context + and all interaction with the action group must be on that same + context. + + Fix up the implementation so that the user can specify that context + with + the normal (thread default) mechanism and document the limitation + on the + API. + + Adjust the testcase to adhere to the documentation limitations. It + passes now. + + gio/gactiongroupexporter.c | 16 ++++++++++++++-- + gio/tests/actions.c | 41 ++++++++++++++++++----------------------- + 2 files changed, 32 insertions(+), 25 deletions(-) + +commit 7af08e1fc06fbf0180d3e6c3b8314cda5258c0f6 +Author: Ryan Lortie +AuthorDate: Wed Dec 7 20:23:41 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:15 2011 -0500 + + action exporter: use GSource* instead of source id + + Keep track of the GSource* of our event dispatch idle instead of using + source ID. + + gio/gactiongroupexporter.c | 26 +++++++++++++++++--------- + 1 file changed, 17 insertions(+), 9 deletions(-) + +commit 64e3e10c9827ff53c8388ebfb672810a6c5fa658 +Author: Ryan Lortie +AuthorDate: Wed Dec 7 14:43:50 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:15 2011 -0500 + + action exporter: cancel pending events on unexport + + If there are events pending when we unexport the action group, + free them + and cancel the pending idle. + + gio/gactiongroupexporter.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 21aca44ee1c16bec9338fe3df1b285a9f0ffaf4a +Author: Ryan Lortie +AuthorDate: Wed Dec 7 10:35:29 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:15 2011 -0500 + + GMenuModel exporter: remove workaround + + With Bug 665733 fixed, we can remove the workaround (which was causing + thread safety problems). + + gio/gmenuexporter.c | 28 ++++------------------------ + 1 file changed, 4 insertions(+), 24 deletions(-) + +commit 328bf4616a3ffa45ffe3c1e6b1a00f658b108897 +Author: Matthias Clasen +AuthorDate: Wed Dec 7 00:58:01 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + Add testcase for threaded menu exporter use + + This currently fails + + gio/tests/gmenumodel.c | 70 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 70 insertions(+) + +commit f1a403e80983a33dbe7cebb7a60c24ecaf0f2d28 +Author: Matthias Clasen +AuthorDate: Wed Dec 7 00:43:49 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + Add a test for multithreaded action group exporter use + + gio/tests/actions.c | 74 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 74 insertions(+) + +commit 77f6e6a97f96312eac0fec06e032fc686e7fca59 +Author: Ryan Lortie +AuthorDate: Sun Dec 4 21:33:55 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + GApplication dbus: publish the menus again + + gio/gapplicationimpl-dbus.c | 150 + ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 150 insertions(+) + +commit 690596e9fbcad66f1692f92f919cd3be61ee27cb +Author: Matthias Clasen +AuthorDate: Sat Dec 3 22:26:59 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + Fully implement app-menu and menubar properties + + gio/gapplication.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit ac8bc3d40732e6b2fb759e9fdc2f11a8d0e1e885 +Author: Ryan Lortie +AuthorDate: Sat Dec 3 17:17:13 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + GApplication: make menu properties readwrite + + Otherwise the notify signals won't be emitted. + + gio/gapplication.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ef8c443092e52e5f4a934c77b1e30a06f59451d9 +Author: Ryan Lortie +AuthorDate: Fri Dec 2 17:47:34 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + menumodel test: don't get stuck in a loop + + Sometimes randa and randb end up having the same state, causing + them to + return the same stream of 'random numbers'. This is a problem for the + testcase that is looping to find unequal menus. + + If we find ourselves in this state, throw one of the random generators + away and recreate it so we have a better chance of getting some + unequal + menus. + + gio/tests/gmenumodel.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 4f2c2077457bcd59ff09b2829b9f25b45e37a515 +Author: Ryan Lortie +AuthorDate: Fri Dec 2 16:50:09 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + menu/action exporter docs fixup + + docs/reference/gio/gio-sections.txt | 10 ++++------ + gio/gactiongroupexporter.c | 36 + ++++++++++++++++++++++++----------- + gio/gactiongroupexporter.h | 2 +- + gio/gmenuexporter.c | 38 + +++++++++++++++++++++++-------------- + gio/gmenuexporter.h | 2 +- + 5 files changed, 55 insertions(+), 33 deletions(-) + +commit 46e3dca2e4c3b9c83f88894984046f6a376281c9 +Author: Ryan Lortie +AuthorDate: Fri Dec 2 16:29:28 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + gio symbol cleanups + + gio/gio.symbols | 16 ++++++++-------- + gio/gmenuproxy.c | 2 ++ + 2 files changed, 10 insertions(+), 8 deletions(-) + +commit cfbc1b5a4b0bdf6de856fc054149e8f558970dff +Author: Ryan Lortie +AuthorDate: Fri Dec 2 15:36:15 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + Menu model exporter: clean up the API + + Give it the same treatment as the exporter for GActionGroup just got. + + There is a wart here: the exporter attempt to re-enter GDBusConnection + when it is freed in order to cancel outstanding name watches. + GDBusConnection holds its own lock while calling the destroy + notify, so + the attempt at reentrancy results in a deadlock. + + We have a workaround to deal with that for now... + + gio/gmenuexporter.c | 176 + +++++++++++++------------------------------------ + gio/gmenuexporter.h | 15 ++--- + gio/tests/gmenumodel.c | 12 ++-- + 3 files changed, 58 insertions(+), 145 deletions(-) + +commit a9f03596fa6da9999f3493d1deb8771f52efea3f +Author: Ryan Lortie +AuthorDate: Fri Dec 2 15:17:56 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + GApplication: menu can change after registration + + Allow the menu to be changed after registration. This is quite useful + for setting up the menus from the ::startup handler instead of + having to + do it before registration because it lets you skip the work if you're + not the primary instance. + + gio/gapplication.c | 8 -------- + 1 file changed, 8 deletions(-) + +commit f7886d6adbef560ea9dcc2ced3f327c927899752 +Author: Ryan Lortie +AuthorDate: Fri Dec 2 15:04:53 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + Action group exporter: clean up the API + + Make it look more like a typical GDBusConnection API with integer + registration ID and corresponding unexport call. Kill the 'query' + call. + + gio/gactiongroupexporter.c | 127 + ++++++++++---------------------------------- + gio/gactiongroupexporter.h | 15 +++--- + gio/gapplicationimpl-dbus.c | 12 ++--- + gio/tests/actions.c | 10 ++-- + 4 files changed, 45 insertions(+), 119 deletions(-) + +commit 5a3276930089a801e86ddc3fef2167e4dcca5704 +Author: Ryan Lortie +AuthorDate: Fri Dec 2 14:24:17 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + GApplication: simplify dbus impl + + The error handling on register() was just totally out of hand before. + Clean that mess up. + + Take out the menu export for now as well. It will be added back again + later. + + gio/gapplicationimpl-dbus.c | 298 + ++++++++++++++++++-------------------------- + 1 file changed, 123 insertions(+), 175 deletions(-) + +commit 03d894d81fffefe837b4fa072338308a96f6f25d +Author: Ryan Lortie +AuthorDate: Fri Dec 2 11:19:18 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + GApplication dbus: use XML for introspection + + The hand-written structures are hard to read and cause quite a lot of + relocations at library load time. Avoid that. + + gio/gapplicationimpl-dbus.c | 144 + ++++++++++++++++++++------------------------ + 1 file changed, 66 insertions(+), 78 deletions(-) + +commit 088682d860b80eb843e2c15026cc5b10f00b9ed7 +Author: Ryan Lortie +AuthorDate: Fri Dec 2 10:32:28 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + GApplication: implement GActionMap + + and deprecate g_application_set_action_group(). + + gio/gapplication.c | 70 + +++++++++++++++++++++++++++++++++++++++++++++--------- + gio/gapplication.h | 1 + + 2 files changed, 60 insertions(+), 11 deletions(-) + +commit 75f1802a1c88007e2d29b5ac0cb55d9eb3b3a794 +Author: Ryan Lortie +AuthorDate: Thu Dec 1 22:53:07 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + Fix some GMenu and GMenuItem leaking + + gio/gapplication.c | 6 ++++++ + gio/gmenumarkup.c | 1 + + 2 files changed, 7 insertions(+) + +commit 38216273665bb264d5f86157191b0a9a5ab8ad1d +Author: Ryan Lortie +AuthorDate: Thu Dec 1 12:14:04 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + GApplication: make distinction about menus + + Rename g_application_set_menu to g_application_set_app_menu and make a + couple of fixups. Clarify the documentation about exactly what this + menu is meant to be. + + Add g_application_set_menubar and document that as well. + + docs/reference/gio/gio-sections.txt | 6 +- + gio/gapplication.c | 139 + +++++++++++++++++++++++++++------- + gio/gapplication.h | 10 ++- + gio/gapplicationimpl-dbus.c | 10 +-- + gio/tests/gapplication-example-menu.c | 2 +- + 5 files changed, 130 insertions(+), 37 deletions(-) + +commit 8777b08a5ac72c1c8fb54d7ab5d5aa180094f427 +Author: Colin Walters +AuthorDate: Thu Dec 1 09:38:04 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + gsimpleaction: Ensure actions are enabled + + gio/gsimpleaction.c | 1 + + 1 file changed, 1 insertion(+) + +commit a8a8633cef2472ad85dc17a50cc0433a068db7dc +Author: Matthias Clasen +AuthorDate: Wed Nov 30 23:19:35 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + Include gactionmap.h in gio.h + + gio/gio.h | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit eb09099f6502a952a933d0bcb1043a929dcee12c +Author: Matthias Clasen +AuthorDate: Wed Nov 30 19:04:08 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + Minor doc improvements + + docs/reference/gio/gio-sections.txt | 1 - + gio/gaction.c | 2 +- + gio/gmenumodel.c | 18 +++++++++--------- + 3 files changed, 10 insertions(+), 11 deletions(-) + +commit c8e76fdda2dc932ddf471d8a6c6a7ced750bfd41 +Author: Matthias Clasen +AuthorDate: Wed Nov 30 19:03:41 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + Add GActionMap to the docs + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 22 ++++++++++++- + docs/reference/gio/gio.types | 1 + + gio/gactionmap.c | 66 + +++++++++++++++++++++++++++++++++---- + gio/gsimpleactiongroup.c | 8 ++--- + 5 files changed, 87 insertions(+), 11 deletions(-) + +commit 41e5ba86a791a17bb560dd7813ad7e849e0230dc +Author: Colin Walters +AuthorDate: Wed Nov 30 17:26:59 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + GSimpleAction: Fix to comply with constructor rules + + foo_new_*() must be pure wrappers around g_object_new(), otherwise + their functionality is inaccessible to bindings. + + gio/gaction.c | 12 +++++--- + gio/gsimpleaction.c | 82 + ++++++++++++++++++++++++++++++++--------------------- + 2 files changed, 57 insertions(+), 37 deletions(-) + +commit 76527e5cd5e864f1695b3afe0d6350e7546606bb +Author: Ryan Lortie +AuthorDate: Wed Nov 30 11:36:08 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:14 2011 -0500 + + add GActionMap interface + + This is an interface to represent GSimpleActionGroup-like objects (ie: + those GActionGroups that operate by containing a number of named + GAction + instances). + + gio/Makefile.am | 2 + + gio/gactionmap.c | 211 +++++++++++++++++++++++++++++++++++++++ + gio/gactionmap.h | 94 ++++++++++++++++++ + gio/gio.symbols | 5 + + gio/giotypes.h | 1 + + gio/gsimpleactiongroup.c | 250 + +++++++++++++++-------------------------------- + gio/gsimpleactiongroup.h | 23 +---- + 7 files changed, 392 insertions(+), 194 deletions(-) + +commit 02b001f8f600b3a44883fe0337b20967c3420bde +Author: Ryan Lortie +AuthorDate: Tue Nov 29 08:18:38 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + gmenu exporter: put submenus in separate groups + + Keep sections in the same subscription group as the parent (since they + will be needed immediately) but put submenus in a separate group. + + gio/gmenuexporter.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit a0a94cd6c68e339bc36a998ea7ce9f5b5b87d586 +Author: Ryan Lortie +AuthorDate: Tue Nov 29 08:16:19 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + menu tests: keep mirror of proxy + + Create a 'mirror' model of the proxy for the testcase. In addition to + testing that the proxy model emits the proper signals this also keeps + the proxy alive (by holding references to it from the mirror). + + The previous code would create the submenu proxies and destroy them + right away (from the recursive step in the equality comparison + functions). This means that the subscription would go out over D-Bus + and the proxy would be destroyed before it returned. Keeping the + model + alive allows it to be actually updated. + + gio/tests/gmenumodel.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit d6f2281329ca6b70e63537d41b2b6cf0b9aa94ef +Author: Matthias Clasen +AuthorDate: Mon Nov 28 20:37:07 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Shorten a variable name + + gio/gmenuexporter.c | 23 ++++++++++++----------- + 1 file changed, 12 insertions(+), 11 deletions(-) + +commit ad09498fa7dd6e759236cdc9893e50c4ed6afbd3 +Author: Matthias Clasen +AuthorDate: Mon Nov 28 18:34:08 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Expand dbus action group tests + + The new tests check that activation and state changes propagate + back. + + gio/tests/actions.c | 83 + ++++++++++++++++++++++++++++++++++++++++++----------- + 1 file changed, 67 insertions(+), 16 deletions(-) + +commit 5718804e5894de7de19d9fb98ae831d60ba001d7 +Author: Matthias Clasen +AuthorDate: Mon Nov 28 18:13:16 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Some more assertions + + gio/tests/gmenumodel.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 22c9d20b7aad101d795a8034866a637b8d3bd611 +Author: Matthias Clasen +AuthorDate: Mon Nov 28 18:12:46 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Add some dbus action group tests + + gio/tests/actions.c | 214 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 214 insertions(+) + +commit 7ef3e27255d66af428f046b58281d4402a045b54 +Author: Matthias Clasen +AuthorDate: Mon Nov 28 18:12:17 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Fix the dbus action group query_action implementation + + gio/gdbusactiongroup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5002cb29358ed3161afe1395397ccd995806c281 +Author: Matthias Clasen +AuthorDate: Mon Nov 28 18:11:25 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Make stopping an action group export work + + gio/gactiongroupexporter.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 7a0faf66fe41649def3753eda09149883991da60 +Author: Ryan Lortie +AuthorDate: Mon Nov 28 11:45:20 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + rework GMenuProxy links + + Only resolve the link at the point that we pull it through the API + rather than at the point that we first are told about it. + This reduces + the lifespan of subscriptions and, more importantly, avoids a tricky + reference cycle issue. + + gio/gmenuproxy.c | 72 + ++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 41 insertions(+), 31 deletions(-) + +commit 2c4ded15e53d2c0e46aeaab2bea50320d86b4f37 +Author: Ryan Lortie +AuthorDate: Mon Nov 28 11:44:25 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + g_menu_model_get_item_link: be careful with refs + + Don't unref the hashtable until after we already take the ref on the + value that was contained in the hashtable, otherwise we may kill the + value. + + gio/gmenumodel.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 1bb0a89de65e93dc055cb6147318d3760a535a8d +Author: Matthias Clasen +AuthorDate: Mon Nov 28 10:22:25 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Add debug code + + This adds a dump method to show the entire tree of proxies. + + gio/gmenuproxy.c | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +commit 2cf4866e33127a4f1dd2dbae94583af7c6457f1c +Author: Matthias Clasen +AuthorDate: Mon Nov 28 07:51:57 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Avoid cross-talk between tests + + Each test needs to remove the sources that it attaches + to the default main context, or else things will work + fine in isolation, but go bad in a full test run. + + gio/tests/gmenumodel.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +commit 39ce59f955ad04d4689d82dd35029723f7e7f3cd +Author: Matthias Clasen +AuthorDate: Mon Nov 28 07:40:55 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Typo fix + + gio/gmenuproxy.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ff833ccac9d8c175e8879540d042d4fb76fdad10 +Author: Matthias Clasen +AuthorDate: Mon Nov 28 00:18:39 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Remove unused variable + + gio/tests/gmenumodel.c | 1 - + 1 file changed, 1 deletion(-) + +commit 500f8fbac5efda5b0970020af15b17ff14629aac +Author: Matthias Clasen +AuthorDate: Sun Nov 27 23:28:53 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Add a test for menu subscriptions + + gio/tests/gmenumodel.c | 165 + ++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 163 insertions(+), 2 deletions(-) + +commit efd23e23c68d2fa90c24870c5f89db96796fd41e +Author: Matthias Clasen +AuthorDate: Sun Nov 27 18:52:15 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Take out excessive width + + gio/gmenuproxy.h | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit 381b23fc85a4c5f94497394a68146c540cb26dab +Author: Matthias Clasen +AuthorDate: Sun Nov 27 18:50:04 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Reduce excessive width + + gio/gmenumarkup.h | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) + +commit f9f0ef19d7d163abc822e06f9e6b09c80cc8b1f7 +Author: Matthias Clasen +AuthorDate: Sun Nov 27 18:46:57 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + whitespace fix + + gio/gmenu.h | 1 + + 1 file changed, 1 insertion(+) + +commit 0f88b7af3375ab6ed43be46e51409262526f0c70 +Author: Matthias Clasen +AuthorDate: Sun Nov 27 18:12:52 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Add some tests for links + + gio/tests/gmenumodel.c | 68 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 68 insertions(+) + +commit 0760bf5850ebde4d87db035d3b38c1f1873f0d2a +Author: Matthias Clasen +AuthorDate: Sun Nov 27 16:51:13 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Add parser roundtrip tests + + gio/tests/gmenumodel.c | 160 + ++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 158 insertions(+), 2 deletions(-) + +commit a2aeea7acdd0c98b14c3b8d9519fc479748b0ca3 +Author: Matthias Clasen +AuthorDate: Sun Nov 27 16:50:17 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + GMenuMarkup: fixes uncovered by roundtrip testing + + The print function was forgetting to emit type information for + attributes, and the parser was not handling types properly either. + + gio/gmenumarkup.c | 16 +++++++--------- + 1 file changed, 7 insertions(+), 9 deletions(-) + +commit d5a1b674f5a54ed0edef8d46d8e73715b7d88cd8 +Author: Matthias Clasen +AuthorDate: Sun Nov 27 13:46:49 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + Improve docs + + Specify that g_menu_item_set_attribute_value consumes floating + @values. + + gio/gmenu.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 41c19c7df8f13101a40e7df115efbb8cd8de3f67 +Author: Matthias Clasen +AuthorDate: Sun Nov 27 02:16:51 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + GApplication: Add a menu example to the docs + + gio/gapplication.c | 8 +++ + gio/tests/Makefile.am | 4 ++ + gio/tests/gapplication-example-menu.c | 95 + +++++++++++++++++++++++++++++++++++ + 3 files changed, 107 insertions(+) + +commit 8d96e68eeb6fddff167e730492be6f33a0e543a6 +Author: Matthias Clasen +AuthorDate: Sun Nov 27 01:44:14 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:13 2011 -0500 + + GMenu: Enforce attribute name restrictions + + The code assumes in various places that ':' does not occur + in attribute names. We are a little more strict than that, + and only allow lowercase ASCII, digits and '-'. + + gio/gmenu.c | 65 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 61 insertions(+), 4 deletions(-) + +commit 9bebf15077e462f1c3e657df5d377b5ec6e806c3 +Author: Matthias Clasen +AuthorDate: Sun Nov 27 01:16:39 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Reduce excessive width of gmenu.h + + gio/gmenu.h | 198 + ++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 99 insertions(+), 99 deletions(-) + +commit 58a8c02dfb2b003d4bb104dbe622b31c816107bc +Author: Matthias Clasen +AuthorDate: Sun Nov 27 01:06:17 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Match up a parameter name + + gio/gmenu.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 60ab57c4b07edb4be50f240f07b8fbd7f73918a0 +Author: Matthias Clasen +AuthorDate: Sun Nov 27 00:54:17 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Describe the org.gtk.Menus interface + + Even though we consider the interface to be an implementation + detail, we should have internal documentation of the interface. + + gio/gmenuexporter.c | 101 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 101 insertions(+) + +commit cd22e1967d82cfd37cd018c058d7e60a3c92df6f +Author: Matthias Clasen +AuthorDate: Sun Nov 27 00:52:51 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Describe the org.gtk.Actions interface + + Even though we consider the interface to be an implementation + detail, we should have internal documentation for the interface. + + gio/gactiongroupexporter.c | 93 + ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 93 insertions(+) + +commit db34b1aebebfab110078ddea2f509fa338e7c8c7 +Author: Matthias Clasen +AuthorDate: Sat Nov 26 23:21:12 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Rename exporter APIs + + There are no public 'exporter' objects, so don't allude to them + in the function names. At the same time, we want to make it clear + that these functions are D-Bus specific. + + The new APIs are + g_action_group_dbus_export_start + g_action_group_dbus_export_query + g_action_group_dbus_export_stop + g_menu_model_dbus_export_start + g_menu_model_dbus_export_query + g_menu_model_dbus_export_stop + + docs/reference/gio/gio-sections.txt | 12 ++++++------ + gio/gactiongroupexporter.c | 30 +++++++++++++++--------------- + gio/gactiongroupexporter.h | 16 ++++++++-------- + gio/gapplicationimpl-dbus.c | 28 ++++++++++++++-------------- + gio/gdbusactiongroup.c | 2 +- + gio/gio.symbols | 12 ++++++------ + gio/gmenuexporter.c | 34 + +++++++++++++++++----------------- + gio/gmenuexporter.h | 18 ++++++++---------- + gio/gmenuproxy.c | 2 +- + gio/tests/gmenumodel.c | 4 ++-- + 10 files changed, 78 insertions(+), 80 deletions(-) + +commit 435b2418dae32a5d5e5ee750744e4061d1cf07b8 +Author: Matthias Clasen +AuthorDate: Sat Nov 26 21:44:46 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + GActionGroup: Mention GMenuModel in the docs + + gio/gactiongroup.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit ae0bd032cac1931fba13bd7a20040760edcd349c +Author: Matthias Clasen +AuthorDate: Sat Nov 26 22:17:47 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Add g_application_set_menu + + This adds ane asy way to export menu information alongside + the actions that are already exported by GApplication. + + docs/reference/gio/gio-sections.txt | 2 + + gio/gapplication.c | 73 + +++++++++++++++++++++++++++++++++++-- + gio/gapplication.h | 4 ++ + gio/gapplicationimpl-dbus.c | 39 ++++++++++++++++++++ + gio/gio.symbols | 2 + + 5 files changed, 117 insertions(+), 3 deletions(-) + +commit 6dfb9d583f264da11430acbc7c141f3955fe78ed +Author: Ryan Lortie +AuthorDate: Fri Oct 21 23:51:48 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Add GMenuModel testcases + + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 3 + + gio/tests/gmenumodel.c | 625 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 629 insertions(+) + +commit d110fd9202a1084e1fe1d8efcfbdda1d078945e4 +Author: Ryan Lortie +AuthorDate: Fri Oct 21 22:49:54 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Add GMenuProxy + + GMenuProxy can be used as a client-side wrapper + for the a menu model that has been exported on D-Bus. + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 14 + + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gio.symbols | 2 + + gio/gmenuproxy.c | 858 + ++++++++++++++++++++++++++++++++++++ + gio/gmenuproxy.h | 44 ++ + 8 files changed, 923 insertions(+) + +commit 66e089f086c0243eb43847137081bf99f2fc89dc +Author: Matthias Clasen +AuthorDate: Sat Nov 26 21:02:15 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Add GMenuModel D-Bus exporter + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 7 + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gio.symbols | 3 + + gio/gmenuexporter.c | 884 + ++++++++++++++++++++++++++++++++++++ + gio/gmenuexporter.h | 45 ++ + 7 files changed, 943 insertions(+) + +commit 6b40d4eb6bf2a974e52be34e7c25b9f9f98242db +Author: Matthias Clasen +AuthorDate: Sat Nov 26 22:00:48 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Add GMenu markup + + These functions serialize and deserialize a GMenuModel + to and from XML. + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 10 + + gio/Makefile.am | 5 + + gio/gio.h | 1 + + gio/gio.symbols | 6 + + gio/gmenumarkup.c | 717 + ++++++++++++++++++++++++++++++++++++ + gio/gmenumarkup.h | 47 +++ + gio/menumarkup.dtd | 29 ++ + gio/menumarkup.xml | 26 ++ + gio/menumarkup2.xml | 75 ++++ + 10 files changed, 917 insertions(+) + +commit 13f59777350f120dd82d1bd36e15155057b073c3 +Author: Matthias Clasen +AuthorDate: Sat Nov 26 22:48:24 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Add GMenu + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 62 +++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gio.symbols | 29 + + gio/gmenu.c | 1019 + +++++++++++++++++++++++++++++++++++ + gio/gmenu.h | 130 +++++ + 8 files changed, 1245 insertions(+) + +commit 12a39a05d3085783923a3613d6a93987732d4d0a +Author: Matthias Clasen +AuthorDate: Sat Nov 26 22:46:51 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Add GMenuModel + + docs/reference/gio/Makefile.am | 4 +- + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 76 +++ + docs/reference/gio/gio.types | 8 + + docs/reference/gio/menu-example.png | Bin 0 -> 31470 bytes + docs/reference/gio/menu-model.png | Bin 0 -> 20647 bytes + gio/Makefile.am | 8 +- + gio/gio.h | 1 + + gio/gio.symbols | 22 + + gio/giotypes.h | 2 + + gio/gmenumodel.c | 954 + ++++++++++++++++++++++++++++++++++++ + gio/gmenumodel.h | 195 ++++++++ + 12 files changed, 1268 insertions(+), 3 deletions(-) + +commit df4cd241e5fd03d539295fa428a00a584b526353 +Author: Matthias Clasen +AuthorDate: Sat Nov 26 22:30:02 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + GApplication: use GDBusActionGroup + + instead of the internal version of the same + + gio/gapplication.c | 84 +++++----------- + gio/gapplicationimpl-dbus.c | 234 + ++------------------------------------------ + gio/gapplicationimpl.h | 14 +-- + 3 files changed, 32 insertions(+), 300 deletions(-) + +commit c249e10d117c432aad540b4009c334411c77ea2d +Author: Ryan Lortie +AuthorDate: Fri Jul 1 02:41:30 2011 +0100 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Add GDBusActionGroup + + GDBusActionGroup can be used as a client-side wrapper + for the an action group that has been exported on D-Bus. + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 20 ++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gdbusactiongroup.c | 574 + ++++++++++++++++++++++++++++++++++++ + gio/gdbusactiongroup.h | 74 +++++ + gio/gio.h | 1 + + gio/gio.symbols | 6 + + gio/gioenums.h | 20 ++ + gio/giotypes.h | 1 + + 10 files changed, 700 insertions(+) + +commit bc5fe41dec00a80ee0f9e827898e75e0553ed39c +Author: Ryan Lortie +AuthorDate: Thu Jun 30 10:40:51 2011 +0100 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + GApplication: port action client to new D-Bus API + + for compatibility with GActionGroup exporter + + gio/gapplicationimpl-dbus.c | 205 + ++++++++++++++++++++++++-------------------- + 1 file changed, 110 insertions(+), 95 deletions(-) + +commit 20d1de3a1bfd0cc297dc8a5224fa274aaa6fca4a +Author: Ryan Lortie +AuthorDate: Thu Jun 30 09:52:24 2011 +0100 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + GApplication: use GActionGroup exporter + + instead of home-grown internal implementation of the same + + gio/gapplicationimpl-dbus.c | 203 + +++----------------------------------------- + 1 file changed, 12 insertions(+), 191 deletions(-) + +commit 940ec94f0a0f1c1c77deaf4eb88722f155544445 +Author: Ryan Lortie +AuthorDate: Wed Jun 29 01:02:21 2011 +0100 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Add GActionGroup D-Bus exporter + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 7 + + gio/Makefile.am | 2 + + gio/gactiongroupexporter.c | 624 + ++++++++++++++++++++++++++++++++++++ + gio/gactiongroupexporter.h | 48 +++ + gio/gio.h | 1 + + gio/gio.symbols | 3 + + 7 files changed, 686 insertions(+) + +commit 8d1cc7f4635c1ab5cb9a7963b3dfebba56d87629 +Author: Ryan Lortie +AuthorDate: Fri Dec 2 16:22:13 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Revert "Use an XML blob for gapplication interface info" + + This reverts commit 8013401f6e4edb01dd31b716c179806b55d4064b. + + gio/gapplicationimpl-dbus.c | 165 + ++++++++++++++++++++++++++++---------------- + 1 file changed, 107 insertions(+), 58 deletions(-) + +commit 45818762d398588fd36be138e9981525d98bf687 +Author: Ryan Lortie +AuthorDate: Fri Dec 2 16:22:01 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Dec 8 18:05:12 2011 -0500 + + Revert "Forgot one interface..." + + This reverts commit 30580bdca7764525a49899dd56dcdde25a300a21. + + gio/gapplicationimpl-dbus.c | 27 +++------------------------ + 1 file changed, 3 insertions(+), 24 deletions(-) + +commit 888a52034bcd06b6b5aeac98d372216d1f7b2798 +Author: Matthias Clasen +AuthorDate: Wed Dec 7 20:41:33 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 7 20:41:33 2011 -0500 + + Updates + + NEWS | 45 +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 45 insertions(+) + +commit 3d686e3d8f6af393b01fe38cd7d29517e52dea50 +Author: Matthias Clasen +AuthorDate: Wed Dec 7 14:36:56 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 7 14:38:37 2011 -0500 + + Clarify docs around main loop vfuncs + + Mention that the vfuncs are no longer used, and tweak the + wording around what g_application_run() does. + + https://bugzilla.gnome.org/show_bug.cgi?id=665391 + + gio/gapplication.c | 4 ++-- + gio/gapplication.h | 12 +++++++----- + 2 files changed, 9 insertions(+), 7 deletions(-) + +commit 70dacf83d23ed468ff60972fd166769482d7195f +Author: David Zeuthen +AuthorDate: Wed Dec 7 10:25:24 2011 -0500 +Commit: David Zeuthen +CommitDate: Wed Dec 7 10:30:42 2011 -0500 + + Bug 665733 – GDBusConnection holds lock while calling destroynotify + + Fix this problem by always running the destroynotify from an idle. + + https://bugzilla.gnome.org/show_bug.cgi?id=665733 + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 45 + +++++++++++++++++---------------------------- + gio/tests/gdbus-export.c | 4 ++++ + 2 files changed, 21 insertions(+), 28 deletions(-) + +commit 386bb0faadd98c190f171cbdd4c51dba50e85505 +Author: Philip Withnall +AuthorDate: Tue Dec 6 19:41:31 2011 +0000 +Commit: Philip Withnall +CommitDate: Tue Dec 6 19:41:31 2011 +0000 + + unicode: Fix a few issues with G_UNICHAR_MAX_DECOMPOSITION_LENGTH + + Raised by Matthias in bgo#665685 but which I didn't spot until + after pushing + commit 3ac7c35656649b1d1fcf2ccaa670b854809d4cd8. + + Renames G_UNICHAR_MAX_DECOMPOSITION_LEN to + G_UNICHAR_MAX_DECOMPOSITION_LENGTH + and fixes a few documentation issues. + + See: bgo#665685 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gunicode.h | 4 ++-- + glib/gunidecomp.c | 5 +++-- + glib/guniprop.c | 2 +- + 4 files changed, 7 insertions(+), 5 deletions(-) + +commit 3ac7c35656649b1d1fcf2ccaa670b854809d4cd8 +Author: Philip Withnall +AuthorDate: Tue Dec 6 18:30:43 2011 +0000 +Commit: Philip Withnall +CommitDate: Tue Dec 6 19:09:01 2011 +0000 + + Bug 665685 — Add a #define for the max length of a Unicode + decomposition + + Add G_UNICHAR_MAX_DECOMPOSITION_LEN for the maximum length of the + decomposition of a single Unicode character. + + Closes: bgo#665685 + + glib/gunicode.h | 12 ++++++++++++ + glib/gunidecomp.c | 4 ++-- + glib/guniprop.c | 4 ++-- + 3 files changed, 16 insertions(+), 4 deletions(-) + +commit 990af4b3725faba230abc6c2e68c112da6f13b41 +Author: David Zeuthen +AuthorDate: Tue Dec 6 13:32:12 2011 -0500 +Commit: David Zeuthen +CommitDate: Tue Dec 6 13:41:53 2011 -0500 + + GDBus: Note in docs that g_dbus_node_info_new_for_xml() is using + GMarkup + + This was discussed in bug 665634. + + https://bugzilla.gnome.org/show_bug.cgi?id=665634 + + Signed-off-by: David Zeuthen + + gio/gdbusintrospection.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 74e131551dcc347fa659183aa19558c0509f0445 +Author: David Zeuthen +AuthorDate: Tue Dec 6 13:29:01 2011 -0500 +Commit: David Zeuthen +CommitDate: Tue Dec 6 13:41:53 2011 -0500 + + GDBus: fix link to D-Bus spec + + Signed-off-by: David Zeuthen + + gio/gdbusintrospection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 10a154446c2427861656763b68f312e48f7d0bd6 +Author: Behdad Esfahbod +AuthorDate: Tue Dec 6 13:20:39 2011 -0500 +Commit: Behdad Esfahbod +CommitDate: Tue Dec 6 13:20:39 2011 -0500 + + Minor doc fix. + + glib/gunidecomp.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 91fb373d553779b7b2b535c44a3236907f0a72c8 +Author: Behdad Esfahbod +AuthorDate: Tue Dec 6 13:18:47 2011 -0500 +Commit: Behdad Esfahbod +CommitDate: Tue Dec 6 13:19:27 2011 -0500 + + Minor + + glib/guniprop.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6bb8fdaa5fad07713b189ea53e6c5afd67ad9b4e +Author: Matthias Clasen +AuthorDate: Tue Dec 6 07:43:35 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 6 07:44:55 2011 -0500 + + Make the qsort_r check cross-compile friendly + + Pointed out by Daniel Mack. + + https://bugzilla.gnome.org/show_bug.cgi?id=665607 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 482f226270efd6c0c8d336b9146376986979e1f4 +Author: Benjamin Otte +AuthorDate: Mon Dec 5 22:40:18 2011 +0100 +Commit: Benjamin Otte +CommitDate: Mon Dec 5 22:40:18 2011 +0100 + + outputstream: Clarify docs of flush() + + After questioning the semantics of flush on IRC, it seemed necessary + to + clarify what flushing is supposed to do. The Linux man page for + fflush() + seemed to cover it perfectly, so I just copied it. + + I did not add the "via the underlying write mechanism" part as that in + my opinion is not something subclasses should need to guarantee. + + gio/goutputstream.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit fd1e9938b36677587dfe9960dacb678bbd3981bf +Author: Cosimo Alfarano +AuthorDate: Wed Jan 19 19:08:15 2011 +0000 +Commit: Simon McVittie +CommitDate: Mon Dec 5 18:27:34 2011 +0000 + + Send CHANGES_DONE_HINT on file moves if no IN_CLOSE_WRITE is emitted + + This patch makes GFileMonitor to emit EVENT_CHANGES_DONE_HINT when + EVENT_CREATED is emitted but the file is not opened for writing. + + On file moves across different mounted volumes, inotify will + always emit + IN_CREATE and IN_CLOSE_WRITE (plus other events). + This translates into GIO's _EVENT_CREATED and + _EVENT_CHANGES_DONE_HINT. + + On file moves across the same mounted volumes, inotify will emit + IN_MOVED_FROM/IN_MOVED_TO which will be translated into + _EVENT_DELETED/_EVENT_CREATED GIO's side. No _EVENT_CHANGES_DONE_HINT + is + emited afterwards. + Under such circumstances a file indexer does not know when actually + the + file is ready to be indexed, either waiting too much or triggering the + indexing twice. On small devices it's not advisable. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=640077 + Bug-NB: NB#219982 + Reviewed-by: Simon McVittie + Reviewed-by: Tomas Bzatek + + gio/inotify/inotify-helper.c | 24 ++++++++++++++++++++++++ + gio/inotify/inotify-kernel.c | 4 +++- + gio/inotify/inotify-kernel.h | 8 ++++++++ + 3 files changed, 35 insertions(+), 1 deletion(-) + +commit 83d0c8a7396e8c1f70619e01f0b0c06fd22790b7 +Author: Simon McVittie +AuthorDate: Mon Nov 28 17:54:46 2011 +0000 +Commit: Simon McVittie +CommitDate: Mon Dec 5 18:15:19 2011 +0000 + + GDBusConnection: propagate error correctly if flags are inappropriate + + Previously, this would fail the assertion + "connection->initialization_error != NULL" after the label "out". + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=665067 + Signed-off-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/gdbusconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 15437a7e5a89dcb2a812f829bc8e9e1db7ce350b +Author: Sam Thursfield +AuthorDate: Thu Dec 1 15:48:27 2011 +0000 +Commit: Colin Walters +CommitDate: Fri Dec 2 14:39:17 2011 -0500 + + Link to libpcre correctly when static linking + + https://bugzilla.gnome.org/show_bug.cgi?id=665298 + + glib-2.0.pc.in | 1 + + 1 file changed, 1 insertion(+) + +commit eb315b68cf6b868e100b8171661d2e162a37bf21 +Author: Daniel Mustieles +AuthorDate: Fri Dec 2 18:27:07 2011 +0100 +Commit: Daniel Mustieles +CommitDate: Fri Dec 2 18:27:07 2011 +0100 + + Updated Spanish translation + + po/es.po | 203 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 98 insertions(+), 105 deletions(-) + +commit a00530ecb0e8576e7a023f37a97528da4d0dfce5 +Author: Tristan Van Berkom +AuthorDate: Fri Dec 2 11:20:21 2011 -0500 +Commit: David Zeuthen +CommitDate: Fri Dec 2 11:20:21 2011 -0500 + + GDBusInterfaceSkeleton: make it possible to export on multiple + connections + + This is useful in peer-to-peer connections. + + With minor changes by David Zeuthen . + + https://bugzilla.gnome.org/show_bug.cgi?id=662718 + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 3 + + gio/gdbus-2.0/codegen/codegen.py | 56 ++++-- + gio/gdbusinterfaceskeleton.c | 364 + +++++++++++++++++++++++++++++------- + gio/gdbusinterfaceskeleton.h | 6 + + gio/gio.symbols | 3 + + gio/tests/Makefile.am | 8 +- + gio/tests/gdbus-peer.c | 239 +++++++++++++++++++++++ + 7 files changed, 592 insertions(+), 87 deletions(-) + +commit 22da18fa706c685da015c9b9a786d810270b3a5f +Author: Philip Withnall +AuthorDate: Wed Nov 30 10:20:13 2011 +0000 +Commit: Philip Withnall +CommitDate: Fri Dec 2 10:23:14 2011 +0000 + + GVariant: add preconditions to ref. counting functions + + These prevent GVariants from accidentally being brought back to + life after + being freed, and should make it easier to track down ref. counting + issues. + + Closes: bgo#665184 + + glib/gvariant-core.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 190645bcc40a4dda579cb5cabd3b1778628d9ef6 +Author: Kjartan Maraas +AuthorDate: Thu Dec 1 18:01:02 2011 +0100 +Commit: Kjartan Maraas +CommitDate: Thu Dec 1 18:01:02 2011 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 76 + ++++++++++++++++++++++++++++------------------------------------ + 1 file changed, 33 insertions(+), 43 deletions(-) + +commit e79834958718725493029a61c62f3faf6a4d039c +Author: Dan Winship +AuthorDate: Thu Dec 1 13:10:25 2011 +0100 +Commit: Dan Winship +CommitDate: Thu Dec 1 13:10:25 2011 +0100 + + GMemoryInputStream/GMemoryOutputStream: fix bug in previous commit + + A g_input_stream_read_async() implementation can't call + g_input_stream_read() on itself directly because it will fail because + the pending flag is already set. So fix that by invoking the vmethod + directly rather than calling the wrapper. Likewise with + GMemoryOutputStream. + + Add a test to gio/tests/memory-input-stream.c to catch read_async + failures in the future. + + gio/gmemoryinputstream.c | 12 ++++++-- + gio/gmemoryoutputstream.c | 16 ++++++---- + gio/tests/memory-input-stream.c | 66 + +++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 86 insertions(+), 8 deletions(-) + +commit a5876e5fc1b1e192e8cde664780957798b8a2607 +Author: Dan Winship +AuthorDate: Wed Nov 30 10:32:42 2011 +0100 +Commit: Dan Winship +CommitDate: Wed Nov 30 10:34:19 2011 +0100 + + GMemoryInputStream/GMemoryOutputStream: make these properly + subclassable + + The async methods were directly invoking their own implementations of + the sync methods, making it impossible for a subclass to reimplement + them. + + https://bugzilla.gnome.org/show_bug.cgi?id=664635 + + gio/gmemoryinputstream.c | 4 ++-- + gio/gmemoryoutputstream.c | 10 +++++----- + 2 files changed, 7 insertions(+), 7 deletions(-) + +commit b13e79da62b256058e4ca1d9fdd46376d3013f16 +Author: Matthias Clasen +AuthorDate: Tue Nov 29 22:53:50 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Nov 29 22:54:45 2011 -0500 + + Don't abort if g_ascii_strtod tests fail + + https://bugzilla.gnome.org/show_bug.cgi?id=652560 + + glib/tests/strfuncs.c | 25 ++----------------------- + 1 file changed, 2 insertions(+), 23 deletions(-) + +commit 22748dbbc9c20c149ccfd4ae99e7aeea490820da +Author: Geek87 +AuthorDate: Mon Jul 25 13:08:24 2011 +0200 +Commit: Matthias Clasen +CommitDate: Tue Nov 29 22:16:53 2011 -0500 + + Remove two useless lines of code + + https://bugzilla.gnome.org/show_bug.cgi?id=648516 + + glib/gtree.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 27e70806c1e4a44d2ff753cba152446ab1762fd5 +Author: Geek87 +AuthorDate: Mon Jul 25 13:06:02 2011 +0200 +Commit: Matthias Clasen +CommitDate: Tue Nov 29 22:16:52 2011 -0500 + + Fix a little comment error in the _GTreeNode struct + + https://bugzilla.gnome.org/show_bug.cgi?id=648516 + + glib/gtree.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3aa0fc43a6811cdc4126d5678e03ab991e1f4bf6 +Author: Matthias Clasen +AuthorDate: Tue Nov 29 22:09:58 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Nov 29 22:10:37 2011 -0500 + + Clarify local_command_line docs + + https://bugzilla.gnome.org/show_bug.cgi?id=641720 + + gio/gapplication.h | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit f24d8247b3a20cc62b4be50a0515acffd7e7d277 +Author: Nicola Fontana +AuthorDate: Tue Nov 29 22:02:00 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Nov 29 22:03:25 2011 -0500 + + Do not use static GTypeInfo and GInterfaceInfo + + Either g_type_register_static_simple (used by G_DEFINE_TYPE_EXTENDED) + and G_IMPLEMENT_INTERFACE use automatic variables for GTypeInfo and + GInterfaceInfo structs, while tutorials and source code often use + static variables. This commit consistently adopts the former method. + + https://bugzilla.gnome.org/show_bug.cgi?id=600161 + + docs/reference/gobject/tut_gtype.xml | 8 ++++---- + docs/reference/gobject/tut_howto.xml | 2 +- + gobject/gboxed.c | 2 +- + gobject/genums.c | 2 +- + gobject/gobject.c | 2 +- + gobject/gparam.c | 2 +- + gobject/gtype.h | 2 +- + gobject/gtypemodule.c | 4 ++-- + gobject/gtypeplugin.c | 2 +- + gobject/gvaluetypes.c | 2 +- + gobject/testgobject.c | 6 +++--- + tests/gobject/defaultiface.c | 2 +- + tests/gobject/deftype.c | 2 +- + tests/gobject/ifacecheck.c | 2 +- + tests/gobject/ifaceinit.c | 2 +- + tests/gobject/testcommon.h | 6 +++--- + tests/refcount/objects.c | 2 +- + tests/refcount/objects2.c | 2 +- + tests/refcount/properties.c | 2 +- + tests/refcount/properties2.c | 2 +- + tests/refcount/signals.c | 2 +- + 21 files changed, 29 insertions(+), 29 deletions(-) + +commit 1f33446e1fae721cc6c8f260afe2ebfa42dd51c8 +Author: Dan Winship +AuthorDate: Tue Nov 29 21:45:37 2011 +0100 +Commit: Dan Winship +CommitDate: Tue Nov 29 21:45:37 2011 +0100 + + gnetworkmonitornetlink.c: Make the error messages less geeky + + This makes several different errors have identical messages, but + they're pretty much "can't happen" situations anyway. + + https://bugzilla.gnome.org/show_bug.cgi?id=664406 + + gio/gnetworkmonitornetlink.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 69043de3e00cbc1f661e9613000cd820ea989ba5 +Author: Dan Winship +AuthorDate: Tue Nov 29 21:42:41 2011 +0100 +Commit: Dan Winship +CommitDate: Tue Nov 29 21:43:00 2011 +0100 + + gzlibdecompressor.c: fix a comment + + gio/gzlibdecompressor.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0627759331d857a3b99eec0ed2c13e5cf7f67130 +Author: Michael Vogt +AuthorDate: Tue Nov 29 12:00:38 2011 +0100 +Commit: Martin Pitt +CommitDate: Tue Nov 29 12:01:25 2011 +0100 + + Add missing annotation to g_file_set_attribute() + + g_file_set_attribute() also permits a NULL value for value_p, and + requires it + to be NULL to unset it. Also fix the wrong variable name in the + documentation. + + Signed-off-by: Martin Pitt + + gio/gfile.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 30580bdca7764525a49899dd56dcdde25a300a21 +Author: Matthias Clasen +AuthorDate: Mon Nov 28 19:57:44 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 28 19:57:44 2011 -0500 + + Forgot one interface... + + gio/gapplicationimpl-dbus.c | 27 ++++++++++++++++++++++++--- + 1 file changed, 24 insertions(+), 3 deletions(-) + +commit 8013401f6e4edb01dd31b716c179806b55d4064b +Author: Matthias Clasen +AuthorDate: Mon Nov 28 19:33:24 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 28 19:33:24 2011 -0500 + + Use an XML blob for gapplication interface info + + This is both more readable and more efficient. Double win ! + + gio/gapplicationimpl-dbus.c | 165 + ++++++++++++++++---------------------------- + 1 file changed, 58 insertions(+), 107 deletions(-) + +commit 4ce5a11dafb0999aa26b36b32df18124e8ebd51d +Author: Carlos Garcia Campos +AuthorDate: Fri Nov 25 15:39:31 2011 +0100 +Commit: Carlos Garcia Campos +CommitDate: Sun Nov 27 14:33:47 2011 +0100 + + gtester: Add command line option to skip tests + + https://bugzilla.gnome.org/show_bug.cgi?id=664809 + + docs/reference/glib/gtester.xml | 7 +++++++ + glib/gtester.c | 18 ++++++++++++++++++ + glib/gtestutils.c | 17 +++++++++++++++++ + 3 files changed, 42 insertions(+) + +commit e4b7cfcb038c4e19d23fae19e0d68705dfef2d63 +Author: Matthias Clasen +AuthorDate: Sat Nov 26 22:38:32 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 26 22:38:32 2011 -0500 + + Rearrange GApplication docs + + Move the GApplication docs to the front of the section, + where they belong. + + docs/reference/gio/gio-docs.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 01ce06ac272aa31c5cf572d551195c45c4e65c15 +Author: Ryan Lortie +AuthorDate: Fri Oct 21 23:54:31 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Nov 26 20:28:50 2011 -0500 + + gio.symbols: add g_application_[gs]et_default() + + gio/gio.symbols | 2 ++ + 1 file changed, 2 insertions(+) + +commit c7dc66602aeee9c1c3692666998bb77ae5818a0f +Author: Matthias Clasen +AuthorDate: Sat Nov 26 01:42:21 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 26 20:12:34 2011 -0500 + + Cosmetics + + Reword the title of GSimpleAction in the docs. + + gio/gsimpleaction.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit a81cdf297ca97e375d28463556a7b838f4fb0ac1 +Author: Ryan Lortie +AuthorDate: Thu Sep 29 23:52:16 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Nov 26 20:11:40 2011 -0500 + + GApplication: add default application + + gio/gapplication.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gapplication.h | 3 +++ + 2 files changed, 52 insertions(+) + +commit 95c3796d6af8017d5b789938dc7518fd6576a65e +Author: Ryan Lortie +AuthorDate: Thu Jun 30 09:47:40 2011 +0100 +Commit: Matthias Clasen +CommitDate: Sat Nov 26 20:07:24 2011 -0500 + + GApplication: unregister action interface export + + We missed a few cases of unexporting the action group interface (in + error cases, and on GApplication teardown). + + gio/gapplicationimpl-dbus.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 2cbc6d9ae6a949818f48c20d3f4230688371e2ea +Author: Matthias Clasen +AuthorDate: Sat Nov 26 19:43:46 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 26 19:43:46 2011 -0500 + + GApplication: Implement query_action + + gio/gapplication.c | 138 + +++++++++++++---------------------------------------- + 1 file changed, 32 insertions(+), 106 deletions(-) + +commit c3a2c280c3697938f0666a737bbfb96ad20dc132 +Author: Matthias Clasen +AuthorDate: Fri Nov 25 22:35:33 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 26 19:27:30 2011 -0500 + + GSimpleActionGroup: Implement query_action + + gio/gsimpleactiongroup.c | 94 + +++++++++++------------------------------------- + 1 file changed, 20 insertions(+), 74 deletions(-) + +commit f468e9c3097cb8a797091822c52fee29d5bdca90 +Author: Ryan Lortie +AuthorDate: Thu Nov 24 19:52:48 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 26 19:25:32 2011 -0500 + + Add g_action_group_query_action() + + This new API allows requesting multiple pieces of information about a + particular action in one go and also simplifies the burden for + GActionGroup implementations -- they need not implement all the + separate + APIs now. + + docs/reference/gio/gio-sections.txt | 7 +- + gio/gactiongroup.c | 184 + +++++++++++++++++++++++++++++++++++- + gio/gactiongroup.h | 17 ++++ + gio/gio.symbols | 1 + + 4 files changed, 204 insertions(+), 5 deletions(-) + +commit fcc69fd318f55ca0edc52864b4c0488b304b8382 +Author: Stef Walter +AuthorDate: Fri Nov 11 17:08:26 2011 +0100 +Commit: Stef Walter +CommitDate: Thu Nov 24 08:58:38 2011 +0100 + + GBytes: A new type for an immutable set of bytes. + + * Represents an immutable reference counted block of memory. + * This is basically the internal glib GBuffer structure exposed, + renamed, and with some additional capabilities. + * The GBytes name comes from python3's immutable 'bytes' type + * GBytes can be safely used as keys in hash tables, and have + functions for doing so: g_bytes_hash, g_bytes_equal + * GByteArray is a mutable form of GBytes, and vice versa. There + are functions for converting from one to the other efficiently: + g_bytes_unref_to_array() and g_byte_array_free_to_bytes() + * Adds g_byte_array_new_take() to support above functions + + https://bugzilla.gnome.org/show_bug.cgi?id=663291 + + docs/reference/glib/Makefile.am | 2 +- + docs/reference/glib/glib-sections.txt | 21 +- + docs/reference/gobject/gobject-sections.txt | 1 + + glib/Makefile.am | 5 +- + glib/garray.c | 77 ++++- + glib/garray.h | 4 + + glib/gbuffer.c | 210 ------------ + glib/gbufferprivate.h | 88 ----- + glib/gbytes.c | 478 + ++++++++++++++++++++++++++++ + glib/gbytes.h | 69 ++++ + glib/glib.h | 1 + + glib/glib.symbols | 16 + + glib/gmappedfile.c | 11 - + glib/gmappedfile.h | 1 + + glib/gtimezone.c | 27 +- + glib/gvariant-core.c | 50 +-- + glib/gvariant-core.h | 6 +- + glib/gvariant.c | 26 +- + glib/tests/.gitignore | 1 + + glib/tests/Makefile.am | 3 + + glib/tests/array-test.c | 33 ++ + glib/tests/bytes.c | 331 +++++++++++++++++++ + gobject/gboxed.c | 1 + + gobject/glib-types.h | 10 + + gobject/gobject.symbols | 1 + + 25 files changed, 1102 insertions(+), 371 deletions(-) + +commit 069ec3719c65be5663c10eb98569e45e13501d97 +Author: Matthias Clasen +AuthorDate: Wed Nov 23 18:13:44 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Nov 23 18:13:44 2011 -0500 + + Fix distcheck + + Now that we have switched to template-free docs, these + hand-rolled cleanup rules get in the way. + + docs/reference/gio/Makefile.am | 2 +- + docs/reference/gio/gdbus-object-manager-example/Makefile.am | 2 +- + docs/reference/glib/Makefile.am | 2 +- + docs/reference/gobject/Makefile.am | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +commit 0104c62f3fda9016658809d79cf395d78611e35a +Author: Simon McVittie +AuthorDate: Thu Oct 20 15:01:47 2011 +0100 +Commit: Simon McVittie +CommitDate: Wed Nov 23 12:30:06 2011 +0000 + + GInitable, GAsyncInitable: not initializing gives undefined behaviour + + This is the ISO C sense of undefined behaviour, in which + works-by-coincidence, critical warning, abort, + demons-fly-out-of-your-nose + are all valid implementations. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662208 + Signed-off-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/gasyncinitable.c | 8 +++++--- + gio/ginitable.c | 31 ++++++++++++++++++++----------- + 2 files changed, 25 insertions(+), 14 deletions(-) + +commit 968ef5f5ffbe5e694bae3052bea34e9b9d1aef35 +Author: Simon McVittie +AuthorDate: Wed Nov 23 11:20:15 2011 +0000 +Commit: Simon McVittie +CommitDate: Wed Nov 23 11:20:15 2011 +0000 + + GDBusWorker: continue_writing: initialize flush_async_data if closing + + This was a regression in commit f41178c6c: flush_async_data wasn't + necessarily NULL in the "don't flush" case. + + Also move initialization of these variables up so that it's + unconditional, since that's easier to verify than checking + that each branch gets it right. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=664617 + Signed-off-by: Simon McVittie + + gio/gdbusprivate.c | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +commit 1b01109377a4780431996d617643704351a27d8f +Author: Matthias Clasen +AuthorDate: Tue Nov 22 23:57:18 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Nov 22 23:57:18 2011 -0500 + + Add some more mainloop tests + + glib/tests/mainloop.c | 178 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 178 insertions(+) + +commit d0e2865a2ed237be1867b212cba6740e7f15fbc0 +Author: Matthias Clasen +AuthorDate: Tue Nov 22 19:31:30 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Nov 22 19:31:30 2011 -0500 + + Remove unnecessary includes + + These were meant for some other test that ended up not getting + added. This fixes bug 664559. + + glib/tests/mainloop.c | 3 --- + 1 file changed, 3 deletions(-) + +commit 2da24259ab2a4da63885155460e281beb3d5998b +Author: Matthias Clasen +AuthorDate: Tue Nov 22 19:25:03 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Nov 22 19:25:03 2011 -0500 + + Fix !debug builds + + As pointed out by Chun-wei Fan in bug 664455, parts of the merged + gobjectnotifyqueue.c code ended up inside an #ifdef G_ENABLE_DEBUG + section. + + gobject/gobject.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +commit 6dde6b7f21af0d3748f142c3f718f1d4cb21739e +Author: Matthias Clasen +AuthorDate: Tue Nov 22 19:12:48 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Nov 22 19:12:48 2011 -0500 + + Add back required _XOPEN_SOURCE define + + This got lost somewhere between 2.30 and now, but it is needed + for isnan(). See bug 664354, reported by Tim Mooney. + + glib/tests/strfuncs.c | 1 + + 1 file changed, 1 insertion(+) + +commit 345688c9e9d811b2844ea573c82be63cb02996ce +Author: Ryan Lortie +AuthorDate: Tue Nov 22 17:32:04 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Nov 22 17:35:56 2011 -0500 + + GApplication: don't fail if can't get session bus + + If we can't get on the session bus, just behave like a normal + non-unique + application. + + This turns out to be remarkably easy to implement and lets us avoid + adding a 'dummy' backend. + + Add a test for this case as well. + + Idea from Zachary Dovel. + + https://bugzilla.gnome.org/show_bug.cgi?id=651997 + + gio/gapplicationimpl-dbus.c | 15 +++++++++------ + gio/tests/gapplication.c | 37 +++++++++++++++++++++++++++++++++++++ + 2 files changed, 46 insertions(+), 6 deletions(-) + +commit 1f02ef3205e810dd937f316f5a7b58ecc2893d59 +Author: Matthias Clasen +AuthorDate: Tue Nov 22 11:06:07 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Nov 22 13:59:34 2011 -0500 + + gio: Move gmodule to Requires.private + + Users of GIO are not generally expected to use gmodule API, + so don't force them all to link against it. + + gio-2.0.pc.in | 5 +++-- + gio-unix-2.0.pc.in | 2 +- + 2 files changed, 4 insertions(+), 3 deletions(-) + +commit c4a11858cfb098ccc25d35dd7f5461c51b7f6ad3 +Author: Simon McVittie +AuthorDate: Tue Nov 22 12:39:54 2011 +0000 +Commit: Simon McVittie +CommitDate: Tue Nov 22 16:08:14 2011 +0000 + + GDBusConnection: don't pass boolean > 1 to _g_dbus_worker_new + + This happens to work at the moment (because GDBusWorker.frozen is a + gboolean and not just a 1-bit bitfield), but isn't right: the gboolean + ends up with values 0 or + G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING + (which is more than 1). + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=664558 + Signed-off-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/gdbusconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 95faa44f2d04593f201a2d98210575e894d4cf01 +Author: Dan Winship +AuthorDate: Tue Nov 22 08:56:54 2011 -0500 +Commit: Dan Winship +CommitDate: Tue Nov 22 08:56:54 2011 -0500 + + GSocketInputStream/GSocketOutputStream: fix win32 build + + based on a patch from Chun-wei Fan + + https://bugzilla.gnome.org/show_bug.cgi?id=664455 + + gio/gsocketinputstream.c | 10 +++++++--- + gio/gsocketoutputstream.c | 9 +++++++-- + 2 files changed, 14 insertions(+), 5 deletions(-) + +commit 38a00cec67709e5c154398e8cbb8f15a15bed583 +Author: Rico Tzschichholz +AuthorDate: Mon Nov 21 23:06:15 2011 +0100 +Commit: Rico Tzschichholz +CommitDate: Mon Nov 21 23:06:15 2011 +0100 + + gio/tests: Fix for -Werror=format-security + + gio/tests/test-pipe-unix.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b2cb386b78203fc2e3fb540e94dc6eab10a1a0ef +Author: Ryan Lortie +AuthorDate: Mon Nov 21 15:21:23 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 21 15:21:23 2011 -0500 + + post-release bump + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 36c21d4790044683a042f8d9479ffc5798914b5b +Author: Ryan Lortie +AuthorDate: Mon Nov 21 12:18:32 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 21 14:23:17 2011 -0500 + + release glib 2.31.2 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 59623973fa1853552f0bd59c850aa9c505c42d7d +Author: Ryan Lortie +AuthorDate: Mon Nov 21 12:36:43 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 21 14:23:17 2011 -0500 + + dist gio/tests/key8.pem + + gio/tests/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 4bb411948c9ca00a534e5ec06efbf8ef22fc07f1 +Author: Simon McVittie +AuthorDate: Tue Nov 1 18:03:12 2011 +0000 +Commit: Simon McVittie +CommitDate: Mon Nov 21 18:16:51 2011 +0000 + + Add test case for #662395 + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662395 + Signed-off-by: Simon McVittie + Reviewed-by: Cosimo Alfarano + + gio/tests/Makefile.am | 10 + + gio/tests/gdbus-connection-flush.c | 384 + +++++++++++++++++++++++++++++++++++++ + 2 files changed, 394 insertions(+) + +commit 96deb40caaf82bc9c51675515971dc3d638c72a0 +Author: Simon McVittie +AuthorDate: Tue Nov 1 16:49:36 2011 +0000 +Commit: Simon McVittie +CommitDate: Mon Nov 21 18:15:26 2011 +0000 + + GDBus tests: factor out TestIOStream, test_pipe and test_bidi_pipe + + These might even make useful public API if they grew a Windows + implementation, but for now they can be Unix-only test API. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662395 + Signed-off-by: Simon McVittie + Reviewed-by: Cosimo Alfarano + + gio/tests/Makefile.am | 10 ++- + gio/tests/gdbus-non-socket.c | 143 + ++++++++++--------------------------------- + gio/tests/test-io-stream.c | 104 +++++++++++++++++++++++++++++++ + gio/tests/test-io-stream.h | 53 ++++++++++++++++ + gio/tests/test-pipe-unix.c | 130 + +++++++++++++++++++++++++++++++++++++++ + gio/tests/test-pipe-unix.h | 37 +++++++++++ + 6 files changed, 365 insertions(+), 112 deletions(-) + +commit bae9928246d5104e1d73a60dd66bfbc45740d640 +Author: Simon McVittie +AuthorDate: Mon Nov 21 17:20:52 2011 +0000 +Commit: Simon McVittie +CommitDate: Mon Nov 21 18:12:30 2011 +0000 + + _g_dbus_worker_flush_sync: always flush if we need to + + We didn't previously flush in a couple of cases where we should have + done: + + * a write is running when flush is called: we should flush after it + finishes + + * writes have been made since the last flush, but none are pending or + running right now: we should flush the underlying transport straight + away + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662395 + Signed-off-by: Simon McVittie + Reviewed-by: Cosimo Alfarano + + gio/gdbusprivate.c | 43 +++++++++++++++++++++++++++++++++++++------ + 1 file changed, 37 insertions(+), 6 deletions(-) + +commit f41178c6c79a00a1fb3a99bc3ae7c88a85c833fc +Author: Simon McVittie +AuthorDate: Mon Nov 21 17:18:01 2011 +0000 +Commit: Simon McVittie +CommitDate: Mon Nov 21 18:10:11 2011 +0000 + + GDBusWorker: move flush async op into continue_writing() + + This makes it easier to schedule a flush, by putting it on the + same code + path as writing and closing. + + Also change message_written to expect the lock to be held, since all + that's left in that function either wants to hold the lock or doesn't + care, and it's silly to release the lock immediately before calling + message_written, which just takes it again. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662395 + Signed-off-by: Simon McVittie + Reviewed-by: Cosimo Alfarano + + gio/gdbusprivate.c | 101 + ++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 68 insertions(+), 33 deletions(-) + +commit 301332168b096e8c64e26932e2a02bd24fafdbab +Author: Simon McVittie +AuthorDate: Mon Nov 21 17:16:16 2011 +0000 +Commit: Simon McVittie +CommitDate: Mon Nov 21 17:42:58 2011 +0000 + + schedule_write_in_worker_thread: require caller to lock; rename + accordingly + + When we use this function to schedule a flush, it'll be called + with the lock held. Releasing and immediately re-taking the lock would + be pointless. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662395 + Signed-off-by: Simon McVittie + Reviewed-by: Cosimo Alfarano + + gio/gdbusprivate.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 56eb16ff50cee51117db2e4979f5632a8df19e40 +Author: Simon McVittie +AuthorDate: Fri Oct 21 14:43:44 2011 +0100 +Commit: Simon McVittie +CommitDate: Mon Nov 21 17:40:51 2011 +0000 + + GDBusWorker: rename some functions + + maybe_write_next_message now also closes, and I'm about to make it + consider whether to flush as well, so its name is increasingly + inappropriate. Similarly, write_message_in_idle_cb is a wrapper around + it which could do any of those things. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662395 + Signed-off-by: Simon McVittie + Reviewed-by: Cosimo Alfarano + + gio/gdbusprivate.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 18482ab17ef5abe3b41bf0f6a076546ff1a5b28e +Author: Simon McVittie +AuthorDate: Mon Nov 21 17:14:55 2011 +0000 +Commit: Simon McVittie +CommitDate: Mon Nov 21 17:21:35 2011 +0000 + + GDBusWorker: distinguish between 3 sorts of output that might + be pending + + If the user calls flush_sync() with no messages in the queue, but an + async write call pending, then we ought to flush after that async + write + returns (although we don't currently do that). If it was an async + close + or flush that was pending, there's no need to flush (again) + afterwards. + So, we need to distinguish. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662395 + Signed-off-by: Simon McVittie + Reviewed-by: Cosimo Alfarano + + gio/gdbusprivate.c | 71 + ++++++++++++++++++++++++++++++------------------------ + 1 file changed, 39 insertions(+), 32 deletions(-) + +commit a795e563dfec28842846700d30360acaff9699e3 +Author: Ryan Lortie +AuthorDate: Mon Nov 21 12:02:02 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 21 12:02:02 2011 -0500 + + Drop last uses of @returns: + + gio/gapplication.c | 24 +++++--- + gio/gkeyfilesettingsbackend.c | 3 +- + gio/gsettings.c | 128 + ++++++++++++++++++++++++++---------------- + gio/gsettings.h | 11 ++-- + gio/gsettingsbackend.c | 18 ++++-- + 5 files changed, 118 insertions(+), 66 deletions(-) + +commit 0f1fb417bf0425fc4d5c277ffb86b881fd3f1c48 +Author: Ryan Lortie +AuthorDate: Mon Nov 21 11:39:52 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 21 11:39:52 2011 -0500 + + Missed a couple of @returns + + glib/gvariant.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 0e0554bd62e897f001aaa9388345c1d4e62614af +Author: Ryan Lortie +AuthorDate: Mon Nov 21 11:33:05 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 21 11:33:21 2011 -0500 + + GVariant: drop use of @returns + + glib/gvariant-core.c | 42 +++++--- + glib/gvariant-parser.c | 6 +- + glib/gvariant-serialiser.c | 6 +- + glib/gvariant.c | 240 + +++++++++++++++++++++++++++++---------------- + glib/gvarianttype.c | 84 ++++++++++------ + 5 files changed, 249 insertions(+), 129 deletions(-) + +commit 4527e7cbf75f5f06a3f8b3ee9c5ecb16f6a27406 +Author: Matthias Clasen +AuthorDate: Mon Nov 21 11:09:42 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 21 11:09:42 2011 -0500 + + gbitlock: Drop @returns syntax from doc comments + + glib/gbitlock.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 22d3972284df905e948143792afc8865b193700e +Author: Matthias Clasen +AuthorDate: Mon Nov 21 11:05:43 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 21 11:05:43 2011 -0500 + + GBuffer: Drop @returns syntax from doc comments + + glib/gbuffer.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +commit f62ee0a0ca29c263083f15d3dd144dc1fb01be22 +Author: Matthias Clasen +AuthorDate: Mon Nov 21 11:03:31 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 21 11:03:31 2011 -0500 + + GSocketClient: Drop @returns syntax from doc comments + + gio/gsocketclient.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit b9f0cb0f0754d5985cef5e01c2761975eacdd87b +Author: Matthias Clasen +AuthorDate: Mon Nov 21 11:02:30 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 21 11:02:30 2011 -0500 + + GSimplePermission: Drop @returns syntax in doc comments + + gio/gsimplepermission.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 2011ecd6ac9dff37aaab9a0d831b78c369375b4b +Author: Matthias Clasen +AuthorDate: Mon Nov 21 11:01:16 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 21 11:01:16 2011 -0500 + + GPermission: Drop @returns syntax from doc comments + + gio/gpermission.c | 21 ++++++++++++++------- + 1 file changed, 14 insertions(+), 7 deletions(-) + +commit ef4ae742cecf696acb0449ab08ad4dac2a91aac2 +Author: Matthias Clasen +AuthorDate: Mon Nov 21 01:53:29 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 21 01:53:29 2011 -0500 + + Improve test coverage + + glib/tests/test-printf.c | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +commit 89ad8bda233cb69608570471a18bc3c42d28db28 +Author: Matthias Clasen +AuthorDate: Mon Nov 21 01:40:51 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 21 01:40:51 2011 -0500 + + Improve mainloop test coverage slightly + + glib/tests/mainloop.c | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +commit b0fa0968705743ff81df7e22b4f5417cd22cf882 +Author: Matthias Clasen +AuthorDate: Mon Nov 21 01:02:50 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 21 01:02:50 2011 -0500 + + Improve test coverage + + glib/tests/keyfile.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +commit 0fd14b1a56085d59fcb2619dd5071d854997e4d7 +Author: Matthias Clasen +AuthorDate: Mon Nov 21 00:27:25 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 21 00:28:41 2011 -0500 + + Fix a case conversion bug + + For titlecase chars without uppercase variant, we were returning + 0, contrary to the docs. + + glib/guniprop.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5197870665c0b90f3d3e475f1cd8c64f7cfb7bd2 +Author: Matthias Clasen +AuthorDate: Mon Nov 21 00:27:12 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 21 00:28:41 2011 -0500 + + Improve test coverage + + glib/tests/unicode.c | 36 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 36 insertions(+) + +commit 4cbacb91de6010c0d852979202901e70e24de790 +Author: Matthias Clasen +AuthorDate: Sun Nov 20 23:18:20 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 21 00:28:41 2011 -0500 + + Add a test for g_unichar_isdefined + + glib/tests/unicode.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit 3aeddaa2d4d9c2eba708e24e2368536e7eeee8da +Author: Chun-wei Fan +AuthorDate: Mon Nov 21 11:53:02 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 21 11:53:02 2011 +0800 + + gio/Makefile.am + + Filter out yet another *nix only source file from the Visual C++ + project + file completion rules. + + gio/Makefile.am | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit fee6293bc9703c6c31d4a6dcb6e5b572b75a283d +Author: Chun-wei Fan +AuthorDate: Mon Nov 21 10:45:27 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 21 10:45:27 2011 +0800 + + Update GLib Visual C++ projects + + Also link to WinMM.lib since timeGetTime is used (commit 8d023c27). + + build/win32/vs10/glib.vcxprojin | 16 ++++++++-------- + build/win32/vs9/glib.vcprojin | 16 ++++++++-------- + 2 files changed, 16 insertions(+), 16 deletions(-) + +commit 928e356cdbf48d6c7967e5d3bc4135c1c1a9ed55 +Author: Fran Diéguez +AuthorDate: Mon Nov 21 01:59:07 2011 +0100 +Commit: Fran Diéguez +CommitDate: Mon Nov 21 01:59:07 2011 +0100 + + Updated Galician translations + + po/gl.po | 5966 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 3018 insertions(+), 2948 deletions(-) + +commit 0878f5ba438b153c1654d3275527442b7e4f5008 +Author: Matthias Clasen +AuthorDate: Sun Nov 20 15:12:05 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sun Nov 20 15:12:05 2011 -0500 + + GFile: Add some introspection annotations + + progress_callback in g_file_copy and g_file_copy_async may be NULL. + Annotations should reflect that. Pointed out by Carlo Teubner. + + https://bugzilla.gnome.org/show_bug.cgi?id=664415 + + gio/gfile.c | 30 ++++++++++++++++-------------- + 1 file changed, 16 insertions(+), 14 deletions(-) + +commit ff2f4a12ee673cbb020d44fca2adb81be3c99f49 +Author: Josselin Mouette +AuthorDate: Sun Nov 20 16:53:36 2011 +0100 +Commit: Josselin Mouette +CommitDate: Sun Nov 20 16:53:36 2011 +0100 + + Document that g_list_sort is a stable sort. + + This is a guarantee for the future so that applications can rely + on it. + + https://bugzilla.gnome.org/show_bug.cgi?id=531973 + + glib/glist.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit b6732da5e749b73f6386d9da87eec2aa867d89b0 +Author: Jorge González +AuthorDate: Sun Nov 20 10:10:13 2011 +0100 +Commit: Jorge González +CommitDate: Sun Nov 20 10:10:13 2011 +0100 + + Updated Spanish translation + + po/es.po | 81 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 41 insertions(+), 40 deletions(-) + +commit d920cb6bdbefc20d9dfb33b289b388a7e63415c6 +Author: Matthias Clasen +AuthorDate: Thu Nov 17 23:30:32 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 19 16:24:08 2011 -0500 + + GApplication: unregister bus name + + https://bugzilla.gnome.org/show_bug.cgi?id=647987 + + gio/gapplicationimpl-dbus.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit 6c7387f6d13d8e1db16a754d7b7c25635b2118f5 +Author: Matthias Clasen +AuthorDate: Sat Nov 19 16:23:33 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 19 16:23:33 2011 -0500 + + Trivial doc typo fix + + gio/gdbusconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b55daa7f599e77f3abedb747eb70859d8ecdeae7 +Author: Kjartan Maraas +AuthorDate: Sat Nov 19 12:02:08 2011 +0100 +Commit: Kjartan Maraas +CommitDate: Sat Nov 19 12:02:08 2011 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 5818 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 2935 insertions(+), 2883 deletions(-) + +commit 1dc8d1f93213a08d8f63bcadf31ce0e3d169b936 +Author: Dan Winship +AuthorDate: Fri Nov 18 15:05:34 2011 -0500 +Commit: Dan Winship +CommitDate: Fri Nov 18 20:26:58 2011 -0500 + + GTlsCertificate: support unencrypted PKCS#8 private keys + + PKCS#8 is the "right" way to encode private keys. Although the APIs do + not currently support encrypted keys, we should at least support + unencrypted PKCS#8 keys. + + https://bugzilla.gnome.org/show_bug.cgi?id=664321 + + gio/gtlscertificate.c | 76 + ++++++++++++++++++++++++++++++++------------- + gio/tests/key8.pem | 16 ++++++++++ + gio/tests/tls-certificate.c | 36 ++++++++++++++++++++- + 3 files changed, 105 insertions(+), 23 deletions(-) + +commit cb74c366783944057492bae1e6b9472e36e2e7f1 +Author: Nicolas Dufresne +AuthorDate: Thu Nov 17 13:04:04 2011 -0500 +Commit: Nicolas Dufresne +CommitDate: Fri Nov 18 12:32:42 2011 -0500 + + [gio] Terminate connect call when application proxy is used + + The connect_async() calls would never terminated when an application + side + proxy was being used. Note we also skip over TLS handshake in + this case, + as the application may have to do some proxy handshake before. + + gio/gsocketclient.c | 17 ++++++++++++++++- + 1 file changed, 16 insertions(+), 1 deletion(-) + +commit d2fd6dac4a794211eb2c1b034f67d6bcfc348b20 +Author: Giovanni Campagna +AuthorDate: Thu Nov 17 22:30:29 2011 +0100 +Commit: Giovanni Campagna +CommitDate: Fri Nov 18 15:21:17 2011 +0100 + + GMain: allow NULL context to g_source_attach + + Documentation says it's fine and means default context, but the + annotations + are missing (and thus bindings would complain). + + https://bugzilla.gnome.org/show_bug.cgi?id=664302 + + glib/gmain.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 71d3dad3ffc13a102689f00a8ae398c5d96577c4 +Author: Giovanni Campagna +AuthorDate: Thu Nov 17 22:29:18 2011 +0100 +Commit: Giovanni Campagna +CommitDate: Fri Nov 18 15:20:41 2011 +0100 + + GPollable*Stream: expose source methods to introspection + + GSource has been introspectable for a while, so can stop skipping + methods of GPollableInputStream/OutputStream that return it. + + https://bugzilla.gnome.org/show_bug.cgi?id=664302 + + gio/gpollableinputstream.c | 4 ++-- + gio/gpollableoutputstream.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 951827379f34e491a72473a45eb84618c8715f73 +Author: Murray Cumming +AuthorDate: Fri Nov 18 10:46:35 2011 +0100 +Commit: Murray Cumming +CommitDate: Fri Nov 18 10:46:35 2011 +0100 + + gsignal.h: Remove trailing comma + + gobject/gsignal.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f9cc0786715afa977e4fa55a684ba2e12f98a203 +Author: Ryan Lortie +AuthorDate: Fri Nov 18 09:41:07 2011 +0000 +Commit: Ryan Lortie +CommitDate: Fri Nov 18 09:41:52 2011 +0000 + + We need in gsettingsschema.c now + + for LC_TIME (since we moved a bunch of code over from gsettings.c). + + gio/gsettings.c | 1 - + gio/gsettingsschema.c | 1 + + 2 files changed, 1 insertion(+), 1 deletion(-) + +commit 4ae42ceb3c6f671d41a390aa664edd2f5f21fb4a +Author: Nicolas Dufresne +AuthorDate: Thu Nov 17 13:01:05 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 17 23:13:35 2011 -0500 + + Clear proxy address upon retry + + The proxy address was not cleared between each attempt. That + would lead + to leak or worse, trying to do the proxy handshake on the final + destination address. To make all this safer, I have regroup all + the cleanup + where the iterations starts. + + https://bugzilla.gnome.org/show_bug.cgi?id=664141 + + gio/gsocketclient.c | 36 ++++++------------------------------ + 1 file changed, 6 insertions(+), 30 deletions(-) + +commit 216fd8a82c902486ba5e5bdcf4a0a0d3d61036c4 +Author: Sjoerd Simons +AuthorDate: Mon Nov 14 22:06:07 2011 +0100 +Commit: Matthias Clasen +CommitDate: Thu Nov 17 23:12:27 2011 -0500 + + Silence compiler warnings + + Fix several warnings for format strings (-Werror=format-security) and + set but unused variables (-Wunused-but-set-variable) + + https://bugzilla.gnome.org/show_bug.cgi?id=664144 + + tests/iochannel-test.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +commit fcffe6abbb1363b4645752ef2f06c098767f2194 +Author: Jürg Billeter +AuthorDate: Fri Nov 4 22:48:56 2011 +0100 +Commit: Matthias Clasen +CommitDate: Thu Nov 17 23:11:41 2011 -0500 + + GKeyFile: Accept empty files + + It already accepts files consisting solely of whitespace. + + https://bugzilla.gnome.org/show_bug.cgi?id=663432 + + glib/gkeyfile.c | 8 -------- + 1 file changed, 8 deletions(-) + +commit a0c755710cdf3e06622b34e10088d4209189e6f9 +Author: Simon McVittie +AuthorDate: Tue Oct 18 11:14:20 2011 +0100 +Commit: Matthias Clasen +CommitDate: Thu Nov 17 23:11:01 2011 -0500 + + Document exactly what g_time_val_to_iso8601() produces + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=537637 + Signed-off-by: Simon McVittie + + glib/gtimer.c | 22 ++++++++++++++++++++-- + 1 file changed, 20 insertions(+), 2 deletions(-) + +commit dc89b51c2d71088c014ec94572629aabf143310e +Author: Alexandre Rostovtsev +AuthorDate: Wed Nov 16 15:05:46 2011 +0000 +Commit: Matthias Clasen +CommitDate: Thu Nov 17 23:09:50 2011 -0500 + + _g_dbus_get_machine_id(): check /etc/machine-id too + + machine-id can be in /etc or in /var/lib/dbus. + + [amended with slightly revised error handling -smcv] + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=663928 + + gio/gdbusprivate.c | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +commit 8d9f600aeab76277abfad0ee924954297a1c06d9 +Author: Rico Tzschichholz +AuthorDate: Thu Nov 17 19:46:54 2011 +0100 +Commit: Rico Tzschichholz +CommitDate: Thu Nov 17 19:46:54 2011 +0100 + + Remove redefinition of typedef 'GSettingsSchemaSource' + + gio/gsettingsschema.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 99718b9e221b032545674662a3ec7d959e38f813 +Author: Ryan Lortie +AuthorDate: Thu Nov 17 17:40:36 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 17:40:36 2011 +0000 + + start on the NEWS + + NEWS | 30 ++++++++++++++++++++++++++++++ + 1 file changed, 30 insertions(+) + +commit 7f285291900f0cf7892bd79a5721d95f9bcdce4e +Author: Ryan Lortie +AuthorDate: Thu Nov 17 17:33:19 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 17:33:19 2011 +0000 + + g_settings_new_full(): more docs + + gio/gsettings.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit ee31c7f4ed7317fdae06ee5d37158908dcc83ca5 +Author: Ryan Lortie +AuthorDate: Thu Nov 17 14:02:39 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + add plugin example for GSettingsSchemaSource + + gio/gsettingsschema.c | 89 + ++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 88 insertions(+), 1 deletion(-) + +commit a4421529b88a1ff2229102ab6853039007ab6bf8 +Author: Ryan Lortie +AuthorDate: Thu Nov 17 10:06:49 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + Add gtk-doc for gsettingsschema{,source} + + docs/reference/gio/Makefile.am | 2 +- + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 30 ++++++ + gio/gsettingsschema.c | 188 + +++++++++++++++++++++++++++++++++++- + 4 files changed, 219 insertions(+), 2 deletions(-) + +commit 011a71cf7167479d4006685acf6b8ac8cad3be34 +Author: Matthias Clasen +AuthorDate: Wed Nov 16 23:24:46 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + 'make dist' fixes + + gio/Makefile.am | 1 + + gio/tests/Makefile.am | 4 +++- + 2 files changed, 4 insertions(+), 1 deletion(-) + +commit 97cf2d78c58c942538ab125bd90bf23841e169b0 +Author: Matthias Clasen +AuthorDate: Wed Nov 16 22:25:16 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + settings-source test: Check returned error as well + + gio/tests/gsettings.c | 1 + + 1 file changed, 1 insertion(+) + +commit a7ce1953fa1dc5aef72814678494cb94a9668611 +Author: Matthias Clasen +AuthorDate: Wed Nov 16 22:12:21 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + Trivial typo fix + + gio/gsettingsschema.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f47264ef5c4cfdb1abb903b4d8409352c65f98b9 +Author: Jasper St. Pierre +AuthorDate: Wed Nov 16 14:51:45 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + gsettings: add annotations for _new_full() + + The path and backend arguments to g_settings_new_full are optional. + + gio/gsettings.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 6339b5fe2de6e49807938983805152bd7c94ef0a +Author: Jasper St. Pierre +AuthorDate: Wed Nov 16 14:53:03 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + schema source: avoid introspection confusion + + Any method that has its prefix'd argument as its first parameter + will be + interpreted by introspection as a method. We don't want this, so + we need + to swap the first two parameters. + + gio/gsettingsschema.c | 4 ++-- + gio/gsettingsschema.h | 4 ++-- + gio/tests/gsettings.c | 6 +++--- + 3 files changed, 7 insertions(+), 7 deletions(-) + +commit bef773408cfebd5a80475c32d96a2b14afaabf8e +Author: Jasper St. Pierre +AuthorDate: Wed Nov 16 14:51:27 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + gsettingsschema: Use the trusted parameter + + gio/gsettingsschema.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 148f731748a586ecc2d6e15afcc760a46e929a84 +Author: Ryan Lortie +AuthorDate: Wed Nov 16 10:38:04 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + Add test case and fix some bugs + + Add the first test case for the schema source functionality and fix a + couple of bugs that got uncovered by that. + + gio/gsettings.c | 3 +- + gio/gsettingsschema.c | 3 +- + gio/tests/gsettings.c | 89 + +++++++++++++++++++++++++ + gio/tests/org.gtk.schemasourcecheck.gschema.xml | 7 ++ + 4 files changed, 100 insertions(+), 2 deletions(-) + +commit fee2c87ba133cf029cb4a285cbb4d057d0d73391 +Author: Ryan Lortie +AuthorDate: Wed Nov 16 10:37:30 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + Add g_settings_schema_source_new_from_directory() + + It is now possible for plugin loading systems to do the right thing. + + gio/gio.symbols | 1 + + gio/gsettingsschema.c | 25 +++++++++++++++++++++++++ + gio/gsettingsschema.h | 23 ++++++++++++++--------- + 3 files changed, 40 insertions(+), 9 deletions(-) + +commit 446eda8c2b8656bf18b233a04c415f20821ae138 +Author: Ryan Lortie +AuthorDate: Tue Nov 15 12:42:02 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + Clarify docs/params for 'schema' vs 'schema id' + + Clean up our parameter naming and documentation to draw a clearer line + between a schema and its identifier. + + gio/gsettings.c | 45 ++++++++++++++++++++++++--------------------- + gio/gsettings.h | 8 ++++---- + 2 files changed, 28 insertions(+), 25 deletions(-) + +commit 1e700720657aa75b0ac4d2457b2ee2f216477c87 +Author: Ryan Lortie +AuthorDate: Tue Nov 15 12:38:01 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + Add g_settings_new_full() taking GSettingsSchema + + gio/gio.symbols | 1 + + gio/gsettings.c | 37 +++++++++++++++++++++++++++++++++++++ + gio/gsettings.h | 4 ++++ + 3 files changed, 42 insertions(+) + +commit 1c8ae819edf2f2be4e4ad89dee534309ff62ef75 +Author: Ryan Lortie +AuthorDate: Tue Nov 15 12:16:50 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + GSettings: add 'settings-schema' property + + Ideally we'd have called this 'schema', but it is already used. + + gio/gsettings.c | 53 + ++++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 52 insertions(+), 1 deletion(-) + +commit 269c99946345efd2bbf17a7b9778615e38ae046e +Author: Ryan Lortie +AuthorDate: Tue Nov 15 12:28:28 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + add boxed types for GSettingSchema{,Source} + + gio/gio.symbols | 2 ++ + gio/gsettingsschema.c | 3 +++ + gio/gsettingsschema.h | 8 +++++++- + 3 files changed, 12 insertions(+), 1 deletion(-) + +commit c25a36c920e2b884ef0856bb1bf6679ab38d7132 +Author: Ryan Lortie +AuthorDate: Tue Nov 15 11:56:18 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + Drop the 'schema_name' field of GSettings + + This is strictly redundant now that we can get the ID from the schema + itself. Its only other purpose was to get the schema name from the + set_property() call to the constructed() call and we can avoid that by + doing the schema lookup at the time of the property being set. + + gio/gsettings.c | 68 + +++++++++++++++++++++++++++++---------------------------- + 1 file changed, 35 insertions(+), 33 deletions(-) + +commit 48b99017de2057666d442167d9f329b0724cec02 +Author: Ryan Lortie +AuthorDate: Tue Nov 15 11:39:12 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + speak of 'schema id' rather than 'schema name' + + Schemas are identified by id='' in the xml file, so we should use the + same language on the C and GObject property APIs. + + gio/gio.symbols | 2 +- + gio/gsettings.c | 38 +++++++++++++++++++------------------- + gio/gsettingsschema.c | 25 ++++++++++++------------- + gio/gsettingsschema.h | 4 ++-- + 4 files changed, 34 insertions(+), 35 deletions(-) + +commit 736a286dce9dec2d9b331ed0df14fb984107a254 +Author: Ryan Lortie +AuthorDate: Tue Nov 15 11:31:58 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + GSettings: deprecate 'schema' property + + This should have been called 'schema-name'. + + gio/gsettings.c | 45 ++++++++++++++++++++++++++++++++++----------- + 1 file changed, 34 insertions(+), 11 deletions(-) + +commit 3bcf1137f4f9a9c84814f3a2102d06d90858daa2 +Author: Ryan Lortie +AuthorDate: Tue Nov 15 08:03:38 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + drop the now-trivial g_settings_schema_new + + Combine it into g_settings_constructed() + + gio/gsettings.c | 12 +++++++++++- + gio/gsettingsschema-internal.h | 2 -- + gio/gsettingsschema.c | 19 ------------------- + 3 files changed, 11 insertions(+), 22 deletions(-) + +commit d5fb032f726dfc712a3e863adc6707c205b69da3 +Author: Ryan Lortie +AuthorDate: Tue Nov 15 08:00:16 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + new public header: gsettingsschema.h + + Expose some GSettingsSchemaSource and GSettingsSchema APIs. + + These are mostly useless so far... + + gio/Makefile.am | 1 + + gio/gio.h | 1 + + gio/gio.symbols | 8 ++++++++ + gio/gsettingsschema-internal.h | 12 +----------- + gio/gsettingsschema.c | 1 + + gio/gsettingsschema.h | 43 + ++++++++++++++++++++++++++++++++++++++++++ + 6 files changed, 55 insertions(+), 11 deletions(-) + +commit 2633f2903ea3ec5f5019f6c3fe57b687fd2d3eb9 +Author: Ryan Lortie +AuthorDate: Tue Nov 15 07:47:56 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + Add non-aborting g_settings_schema_source_lookup() + + And rewrite g_settings_schema_new() in terms of it + + gio/gsettingsschema.c | 66 + ++++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 47 insertions(+), 19 deletions(-) + +commit bf5626ddc20f973baf92edfc3c888ef77e9de1db +Author: Ryan Lortie +AuthorDate: Tue Nov 15 07:31:20 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + GSettingSchemaSource: add refcounting + + gio/gsettingsschema.c | 27 +++++++++++++++++++++++++++ + 1 file changed, 27 insertions(+) + +commit e01a43b6216a27194fddcabe9e864ab40c052d50 +Author: Ryan Lortie +AuthorDate: Tue Nov 15 07:24:48 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:39 2011 +0000 + + GSettingsSchema: use our own linked lists + + Switch from GSList for the list of schema sources to using our own + linked list type called GSettingsSchemaSource. + + gio/gsettingsschema.c | 46 +++++++++++++++++++++++++++++++--------------- + 1 file changed, 31 insertions(+), 15 deletions(-) + +commit 5ec84e805626657d0470accfebea72ddcbadf052 +Author: Ryan Lortie +AuthorDate: Tue Nov 15 07:16:48 2011 +0000 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:38 2011 +0000 + + GSettingsSchema: alter our 'reverse' technology + + Instead of building a reversed linked list by prepending in order and + then reversing it at the end, prepend in reverse by iterating + backwards + through the directories (to get a list in-order when we're done). + + gio/gsettingsschema.c | 17 +++++++++++------ + 1 file changed, 11 insertions(+), 6 deletions(-) + +commit 104f7353a7c86a8a34b1b284d1b7d453eacb0c74 +Author: Ryan Lortie +AuthorDate: Mon Nov 14 17:15:58 2011 +0100 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:38 2011 +0000 + + move GSettingsSchemaKey to gsettingsschema.c + + These functions no longer have anything to do with GSettings + itself, so + they should not be in that file anymore. + + GSettings still wants direct access to the GSettingsSchemaKey + structure, + so put that one in gsettingsschema-internal.h. + + gio/gsettings.c | 333 + +---------------------------------------- + gio/gsettingsschema-internal.h | 50 +++++++ + gio/gsettingsschema.c | 312 + ++++++++++++++++++++++++++++++++++++++ + 3 files changed, 363 insertions(+), 332 deletions(-) + +commit 53b591854586171c05ea602795e27982faea5eaa +Author: Ryan Lortie +AuthorDate: Mon Nov 14 17:08:31 2011 +0100 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:38 2011 +0000 + + GSettingsSchemaKey: store the GSettingsSchema* + + gio/gsettings.c | 32 +++++++++++++++++--------------- + 1 file changed, 17 insertions(+), 15 deletions(-) + +commit 54964e22d481f0ebac8bd3c0fb13fd7569013b57 +Author: Ryan Lortie +AuthorDate: Mon Nov 14 17:03:57 2011 +0100 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:38 2011 +0000 + + g_settings_schema_key_init: take GSettingsSchema* + + instead of of GSettings * + + gio/gsettings.c | 28 ++++++++++++++-------------- + 1 file changed, 14 insertions(+), 14 deletions(-) + +commit 10907cafc39958fc65b8c8082cbbe08b53e96659 +Author: Ryan Lortie +AuthorDate: Mon Nov 14 17:02:04 2011 +0100 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:38 2011 +0000 + + add internal g_settings_schema_get_name() + + gio/gsettingsschema-internal.h | 2 ++ + gio/gsettingsschema.c | 6 ++++++ + 2 files changed, 8 insertions(+) + +commit e6b4074e41ae379a17768b199c5adc2a1a3e02cb +Author: Ryan Lortie +AuthorDate: Sun Nov 13 23:47:49 2011 +0100 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:38 2011 +0000 + + rename GSettingsKeyInfo to GSettingsSchemaKey + + gio/gsettings.c | 347 + +++++++++++++++++++++++++++----------------------------- + 1 file changed, 169 insertions(+), 178 deletions(-) + +commit 426b146e5f31fa4d788dfd78857499dabf64000e +Author: Ryan Lortie +AuthorDate: Sun Nov 13 23:38:47 2011 +0100 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:38 2011 +0000 + + GSettingsKeyInfo: rename field 'key' to 'name' + + gio/gsettings.c | 44 +++++++++++++++++++++----------------------- + 1 file changed, 21 insertions(+), 23 deletions(-) + +commit ca2004fe73ca853bc1f9ade6160c1b59d2865c67 +Author: Ryan Lortie +AuthorDate: Sun Nov 13 23:35:27 2011 +0100 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:38 2011 +0000 + + remove GSettings* from GSettingsKeyInfo + + This way GSettingsKeyInfo depends strictly on the information in the + schema. Pass the GSettings* around separately where we need it. + + gio/gsettings.c | 48 ++++++++++++++++++++++++------------------------ + 1 file changed, 24 insertions(+), 24 deletions(-) + +commit d6c3c2f3c2fe0f22870abb643853640dba5cc8be +Author: Ryan Lortie +AuthorDate: Sun Nov 13 23:31:39 2011 +0100 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:38 2011 +0000 + + store some extra info in GSettingsKeyInfo + + gio/gsettings.c | 27 ++++++++++++++------------- + 1 file changed, 14 insertions(+), 13 deletions(-) + +commit f60e0e724286fc85c03c7c739474390cd4c27c62 +Author: Ryan Lortie +AuthorDate: Sun Nov 13 23:24:24 2011 +0100 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:38 2011 +0000 + + GSettingsKeyInfo: drop unused variable + + gio/gsettings.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 11ef4d7981d81746d25296e3336a390f1a3330a8 +Author: Ryan Lortie +AuthorDate: Sun Nov 13 21:41:01 2011 +0100 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:38 2011 +0000 + + rename gsettingsschema.h to -internal.h + + gio/gsettings.c | 2 +- + gio/gsettingsschema-internal.h | 50 + ++++++++++++++++++++++++++++++++++++++ + gio/gsettingsschema.c | 2 +- + gio/gsettingsschema.h | 54 + ------------------------------------------ + 4 files changed, 52 insertions(+), 56 deletions(-) + +commit 577faeae5bcdff8431c298c9275bf7703d8b6a22 +Author: Ryan Lortie +AuthorDate: Sun Nov 13 21:38:31 2011 +0100 +Commit: Ryan Lortie +CommitDate: Thu Nov 17 14:03:38 2011 +0000 + + unGObjectify GSettingsSchema + + gio/gsettings.c | 2 +- + gio/gsettingsschema.c | 82 + +++++++++++++++++++++++---------------------------- + gio/gsettingsschema.h | 34 ++++----------------- + 3 files changed, 43 insertions(+), 75 deletions(-) + +commit eaaf18960f84989cfe2ac927ad5e19a0c56524de +Author: Christian Persch +AuthorDate: Thu Nov 17 14:21:24 2011 +0100 +Commit: Christian Persch +CommitDate: Thu Nov 17 14:24:09 2011 +0100 + + Fix the fix for G*_TO_POINTER casts on 32 bits + + The 'fix' from commit 16292dd753cb63f8ccb2267644aefbd2632dd52c + broke the + build on 32 bit because it was missing the parentheses around "gint" / + "guint" + in glib_gp[u]i_cast. + + https://bugzilla.gnome.org/show_bug.cgi?id=661546 + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit affbdd8206edcb89eadcae4a0453da76e8bd723f +Author: Jorge González +AuthorDate: Thu Nov 17 14:21:12 2011 +0100 +Commit: Jorge González +CommitDate: Thu Nov 17 14:21:12 2011 +0100 + + Updated Spanish translation + + po/es.po | 190 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 97 insertions(+), 93 deletions(-) + +commit 6d405f81c2778dff2df4a36748bf98647f385497 +Author: Daniel Mustieles +AuthorDate: Thu Nov 17 12:36:54 2011 +0100 +Commit: Daniel Mustieles +CommitDate: Thu Nov 17 12:36:54 2011 +0100 + + Updated Spanish translation + + po/es.po | 66 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 59 insertions(+), 7 deletions(-) + +commit 9e19b6fe0fefc5c6c26e749a56418061ce339154 +Author: Matthias Clasen +AuthorDate: Thu Nov 17 00:01:18 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Nov 17 00:01:18 2011 -0500 + + Fix doc formatting + + gmodule/gmodule.c | 1 - + 1 file changed, 1 deletion(-) + +commit 1a08591c3a953d53fb22b8da59b2023d278590d6 +Author: Matthias Clasen +AuthorDate: Wed Nov 16 21:42:28 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Nov 16 21:42:28 2011 -0500 + + Deal gracefully with NULL log domains + + glib/gmessages.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 877c0ad5b885f598006f576a5756dd7cda1ef4ee +Author: Ryan Lortie +AuthorDate: Wed Nov 16 15:46:19 2011 +0000 +Commit: Ryan Lortie +CommitDate: Wed Nov 16 17:50:13 2011 +0000 + + [notify] remove some rather bogus 'inline' use + + gobject/gobject.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 9253f38a908f4b3304e2e195c87aad7b098e8bac +Author: Ryan Lortie +AuthorDate: Wed Nov 16 15:45:31 2011 +0000 +Commit: Ryan Lortie +CommitDate: Wed Nov 16 17:50:13 2011 +0000 + + [notify] add warning to gobjectnotifyqueue.c + + Mention that this file gets installed, so people should probably not + modify it. + + gobject/gobjectnotifyqueue.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit ac0ddcf23f4f57efc2f4e6f370022586d7897f6a +Author: Ryan Lortie +AuthorDate: Wed Nov 16 13:02:23 2011 +0000 +Commit: Ryan Lortie +CommitDate: Wed Nov 16 17:50:13 2011 +0000 + + [notify] dispatch 'notify' directly if not frozen + + Avoid the notify queue in the case that we're not already frozen. + + gobject/gobject.c | 19 +++++++++++++++---- + 1 file changed, 15 insertions(+), 4 deletions(-) + +commit 39458748dd32c8745f60e8ba83bd35ad9ceebb12 +Author: Ryan Lortie +AuthorDate: Wed Nov 16 15:42:36 2011 +0000 +Commit: Ryan Lortie +CommitDate: Wed Nov 16 17:50:13 2011 +0000 + + [notify] add 'conditional' to _notify_queue_freeze + + When the 'conditional' parameter is TRUE, the queue will only + be frozen + (ie: have its freeze count increase by one) if it is already frozen. + + This will allow us to avoid a freeze-notify-thaw in the case that we + just want to notify on a single property. + + Another approach may have been to add an is_frozen() type call + and avoid + even increasing the freeze count at all in this case. Unfortunately, + I'm not totally sure what is the exact expected semantics of + simultaneous notifications in multiple threads and this may interact + badly with someone freezing or thawing in between our check and + emission. + + gobject/gobject.c | 25 ++++++++++++++++--------- + 1 file changed, 16 insertions(+), 9 deletions(-) + +commit 393d4c28b4af6aea45100edc636c116d38dca460 +Author: Ryan Lortie +AuthorDate: Wed Nov 16 15:41:06 2011 +0000 +Commit: Ryan Lortie +CommitDate: Wed Nov 16 17:50:13 2011 +0000 + + [notify] Remove GObjectNotifyContext indirection + + This silly abstraction is causing more trouble than it's worth -- just + use the relevant bits directly. + + gobject/gobject.c | 60 + +++++++++++++++++-------------------------------------- + 1 file changed, 18 insertions(+), 42 deletions(-) + +commit 8215fc5f255ae499904534042ac08e221c4f5f13 +Author: Ryan Lortie +AuthorDate: Wed Nov 16 15:38:25 2011 +0000 +Commit: Ryan Lortie +CommitDate: Wed Nov 16 17:50:12 2011 +0000 + + [notify] lift some logic out of _notify_queue_add + + Lift the check-if-READABLE and redirect-target logic from out of + g_object_notify_queue_add() into its own function, get_notify_pspec(). + + Use that function at the site of our two calls to + g_object_notify_queue_add(). + + gobject/gobject.c | 63 + ++++++++++++++++++++++++++++++++++++------------------- + 1 file changed, 42 insertions(+), 21 deletions(-) + +commit 760037ec46bb3a8af8ea98e06a624a3ebac1cb1a +Author: Ryan Lortie +AuthorDate: Wed Nov 16 15:37:17 2011 +0000 +Commit: Ryan Lortie +CommitDate: Wed Nov 16 17:50:12 2011 +0000 + + [notify] remove an obviously false comment + + gobject/gobject.c | 1 - + 1 file changed, 1 deletion(-) + +commit 45d80cf9bdd4ee3edaa64069dd16ad220d615c4e +Author: Ryan Lortie +AuthorDate: Wed Nov 16 15:36:57 2011 +0000 +Commit: Ryan Lortie +CommitDate: Wed Nov 16 17:50:12 2011 +0000 + + [notify] lift some code outside of critical region + + gobject/gobject.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 1d98f931946c45301531a576107f5f9d12d63c28 +Author: Ryan Lortie +AuthorDate: Wed Nov 16 15:35:58 2011 +0000 +Commit: Ryan Lortie +CommitDate: Wed Nov 16 17:50:12 2011 +0000 + + [notify] drop some unused code + + gobject/gobject.c | 28 ---------------------------- + 1 file changed, 28 deletions(-) + +commit 128862eafe49b5454c4b32b0866800d4aa7c53f3 +Author: Ryan Lortie +AuthorDate: Wed Nov 16 15:31:58 2011 +0000 +Commit: Ryan Lortie +CommitDate: Wed Nov 16 17:50:12 2011 +0000 + + [notify] merge gobjectnotifyqueue.c into gobject.c + + This was done as a separate file before, and #include brought it into + gobject.c. That's a bit mad, so stop doing that. + + Unfortunately, the insanity steps up a level: gobjectnotifyqueue.c is + installed in the public include dir, so we can't just get rid of it + entirely. + + gobject/gobject.c | 162 + +++++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 160 insertions(+), 2 deletions(-) + +commit 688059cb9402281f8922827dc98fe76b914f21cf +Author: Ryan Lortie +AuthorDate: Wed Nov 16 12:47:40 2011 +0000 +Commit: Ryan Lortie +CommitDate: Wed Nov 16 17:50:12 2011 +0000 + + [notify] remove some useless forward declarations + + These cause trouble in the next commit. + + gobject/gobject.c | 7 ------- + 1 file changed, 7 deletions(-) + +commit 3c66ada4358ca0a8d9c31a14d45c13cd9de0b084 +Author: Benjamin Otte +AuthorDate: Wed Nov 2 00:31:50 2011 +0100 +Commit: Benjamin Otte +CommitDate: Wed Nov 16 17:22:17 2011 +0100 + + localfileenumerator: Improve non-stat'ing code + + We now avoid the per-enumerated-file stat for type and names. We could + improve this further by moving things to the no_stat function, + but this + is what the file chooser needs for autocomplete, so I am happy. + + gio/glocalfileenumerator.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 93aea49bd7a8fa29d4ad857fd5de9f282edd8603 +Author: Benjamin Otte +AuthorDate: Tue Nov 1 23:37:35 2011 +0100 +Commit: Benjamin Otte +CommitDate: Wed Nov 16 17:22:10 2011 +0100 + + localfileinfo: Split out attributes that don't need a stat + + This will be used in the next commit. + + gio/glocalfileinfo.c | 80 + +++++++++++++++++++++++++++++----------------------- + gio/glocalfileinfo.h | 10 +++++++ + 2 files changed, 54 insertions(+), 36 deletions(-) + +commit 8863071b9d17fa37036549b8c6579736d259a9cd +Author: Benjamin Otte +AuthorDate: Tue Nov 1 23:21:42 2011 +0100 +Commit: Benjamin Otte +CommitDate: Wed Nov 16 17:22:03 2011 +0100 + + localfileenumerator: Take the type from the readdir() call + + That way, we can avoid stat() calls for all enumerated files in + various + cases. In particular in the autocompletion code in the GTK + filechooser. + + configure.ac | 2 + + gio/glocalfileenumerator.c | 96 + +++++++++++++++++++++++++++++++++++++++------- + 2 files changed, 84 insertions(+), 14 deletions(-) + +commit 6fe9791f2401c7842ed8e4b72e62296f1da1e47d +Author: Benjamin Otte +AuthorDate: Tue Nov 1 20:12:27 2011 +0100 +Commit: Benjamin Otte +CommitDate: Wed Nov 16 17:21:21 2011 +0100 + + gio: Add tests for g_file_attribute_matcher_subtract() + + gio/tests/fileattributematcher.c | 90 + ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 90 insertions(+) + +commit 1985d54bb2eee39e88e62d1b749bf85f43a55721 +Author: Benjamin Otte +AuthorDate: Tue Nov 1 20:11:47 2011 +0100 +Commit: Benjamin Otte +CommitDate: Wed Nov 16 17:19:02 2011 +0100 + + fileinfo: Add g_file_attribute_matcher_subtract() + + Added as public API so I can write tests, the use case is local. + + docs/reference/gio/gio-sections.txt | 1 + + gio/gfileinfo.c | 83 + ++++++++++++++++++++++++++++++++++++- + gio/gfileinfo.h | 2 + + gio/gio.symbols | 1 + + 4 files changed, 85 insertions(+), 2 deletions(-) + +commit 60c42f66482f0b3c7cd9353156de99e077fc73c7 +Author: Benjamin Otte +AuthorDate: Tue Nov 1 19:12:17 2011 +0100 +Commit: Benjamin Otte +CommitDate: Wed Nov 16 17:18:58 2011 +0100 + + tests: Add tests for fileattributematchers + + gio/tests/Makefile.am | 4 ++ + gio/tests/fileattributematcher.c | 88 + ++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 92 insertions(+) + +commit b400127b3eb6039ecfcada3fa398f8aecb4945bd +Author: Benjamin Otte +AuthorDate: Tue Nov 1 19:06:39 2011 +0100 +Commit: Benjamin Otte +CommitDate: Wed Nov 16 17:18:13 2011 +0100 + + fileinfo: Add g_file_attribute_matcher_to_string() + + This is to be mainly used for debugging and tests. + + docs/reference/gio/gio-sections.txt | 1 + + gio/gfileinfo.c | 40 + +++++++++++++++++++++++++++++++++++++ + gio/gfileinfo.h | 1 + + gio/gio.symbols | 1 + + 4 files changed, 43 insertions(+) + +commit 86d29e4e7302525b178ff7fb7463026243c89603 +Author: Benjamin Otte +AuthorDate: Tue Nov 1 17:50:22 2011 +0100 +Commit: Benjamin Otte +CommitDate: Wed Nov 16 17:11:52 2011 +0100 + + fileinfo: Store namespace::* as 0th attribute + + This way, we can get_attribute() namespaces. This will be important in + the next commit. + + gio/gfileinfo.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 128e0cb787dedc0bb57f7f1fbdc52aa20c20d9b6 +Author: Benjamin Otte +AuthorDate: Tue Nov 1 13:58:09 2011 +0100 +Commit: Benjamin Otte +CommitDate: Wed Nov 16 17:11:52 2011 +0100 + + fileinfo: Change the way attribute matchers are created + + We now sort the matchers and remove unnecessary duplicates (like + removing standard:type when we already match standard:*), so that + we can + do more complex operations on them easily in later commits. + + gio/gfileinfo.c | 102 + ++++++++++++++++++++++++++++++++++++++++---------------- + 1 file changed, 74 insertions(+), 28 deletions(-) + +commit 1850d23f52639a5eaf33551fad7a1936edbbfb0a +Author: Benjamin Otte +AuthorDate: Tue Nov 1 12:47:33 2011 +0100 +Commit: Benjamin Otte +CommitDate: Wed Nov 16 17:11:52 2011 +0100 + + fileinfo: Remove optimization for GFileAttributeMatcher + + It makes code more complicated, in particular the code I'm about + to add. + + gio/gfileinfo.c | 100 + ++++++++++++++++---------------------------------------- + 1 file changed, 28 insertions(+), 72 deletions(-) + +commit 16292dd753cb63f8ccb2267644aefbd2632dd52c +Author: Lucas De Marchi +AuthorDate: Thu Oct 6 11:18:03 2011 -0300 +Commit: Colin Walters +CommitDate: Wed Nov 16 10:47:21 2011 -0500 + + Fix G*_TO_POINTER casts on 32 bits + + If we don't do the cast to the proper size in 32 bits, things + like below + doesn't work: + + uint8_t u = 20; + void *p; + + p = GUINT_TO_POINTER(u); + + Signed-off-by: Colin Walters + + https://bugzilla.gnome.org/show_bug.cgi?id=661546 + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3a7960f75730fdde77652b97ad6492004c5b1ec1 +Author: Alexander Larsson +AuthorDate: Fri Nov 4 16:45:41 2011 +0100 +Commit: Alexander Larsson +CommitDate: Wed Nov 16 09:10:46 2011 +0100 + + win32: Make g_get_monotonic_clock lockless + + glib/gmain.c | 32 ++++++++++++++++++++------------ + 1 file changed, 20 insertions(+), 12 deletions(-) + +commit 8d023c2706c1aca43dd04e807dd7d78aee96f202 +Author: Alexander Larsson +AuthorDate: Fri Nov 4 15:42:38 2011 +0100 +Commit: Alexander Larsson +CommitDate: Wed Nov 16 09:10:46 2011 +0100 + + win32: Use timeGetTime as monotonic base + + This allows apps that need it to increase timer accuracy + using timeBeginPeriod + + configure.ac | 2 +- + glib/gmain.c | 69 + +++++++++++++++++++++++++++++++++++++++++++++++++--- + glib/makefile.msc.in | 2 +- + 3 files changed, 68 insertions(+), 5 deletions(-) + +commit 64dec8ad9ff3d9be7d66b11d5f2b22ce3e0954aa +Author: Alexander Larsson +AuthorDate: Fri Nov 4 11:27:00 2011 +0100 +Commit: Alexander Larsson +CommitDate: Wed Nov 16 09:10:45 2011 +0100 + + win32: Add a monotonic timer + + glib/glib-init.c | 1 + + glib/glib-init.h | 1 + + glib/gmain.c | 59 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- + 3 files changed, 59 insertions(+), 2 deletions(-) + +commit 2056906bb7504e520aae5ab3fc69fa3f80da1da0 +Author: Piotr Drąg +AuthorDate: Tue Nov 15 20:46:17 2011 +0100 +Commit: Piotr Drąg +CommitDate: Tue Nov 15 20:46:17 2011 +0100 + + Updated POTFILES.in + + po/POTFILES.in | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 8d4a141b14dda229a9074d14e9288cddc3191536 +Author: Daniel Mustieles +AuthorDate: Tue Nov 15 17:37:39 2011 +0100 +Commit: Daniel Mustieles +CommitDate: Tue Nov 15 17:37:39 2011 +0100 + + Updated Spanish translation + + po/es.po | 5989 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 2998 insertions(+), 2991 deletions(-) + +commit f08a1d126c2aba7d23c107a7c6882cf0f850b6f4 +Author: Javier Jardón +AuthorDate: Tue Nov 15 12:11:55 2011 +0000 +Commit: Javier Jardón +CommitDate: Tue Nov 15 12:11:55 2011 +0000 + + docs: Remove tmpl directory + + We use inline comments now + + docs/reference/glib/tmpl/.gitignore | 74 --- + docs/reference/glib/tmpl/glib-unused.sgml | 1015 + ----------------------------- + 2 files changed, 1089 deletions(-) + +commit 469e1a15a0eea2cf355fba245343a3ac1c29662b +Author: Sjoerd Simons +AuthorDate: Sun Nov 13 17:49:57 2011 +0100 +Commit: Sjoerd Simons +CommitDate: Tue Nov 15 09:27:00 2011 +0100 + + Fix 1bit mutex test on platforms with 32 bit aligned pointers + + The 1 bit mutex tests asserts: ((gsize) ptrs) % 8, ==, 0), which fails + when the platform only aligns porters to 32 bits (e.g. S390 and + powerpc). + + I'm not sure why this assertion was placed here, but given + that internally g_pointer_bit_trylock uses g_atomic_int_or internally + change the assertion so it only requires the alignment to be + a multiple + of sizeof(int) + + glib/tests/1bit-mutex.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 65eb65b7779e5e6ec72de9bb372568d88b1ec7bb +Author: Matthias Clasen +AuthorDate: Mon Nov 14 23:30:18 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 14 23:30:18 2011 -0500 + + Avoid unused variable warnings in g_ascii_strtod + + glib/gstrfuncs.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +commit 7c0ee79e348cfa3711ecf74f1c0e4d9a2e29864e +Author: Matthias Clasen +AuthorDate: Mon Nov 14 22:18:13 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 14 22:18:13 2011 -0500 + + GThread: handle thread names safely + + Avoid a race condition where the string may be freed before + the new thread got around to using it. Also add a test for + thread names. + + https://bugzilla.gnome.org/show_bug.cgi?id=663381 + + glib/gthread.c | 13 +++++++++---- + glib/gthreadprivate.h | 2 +- + glib/tests/thread.c | 28 ++++++++++++++++++++++++++++ + 3 files changed, 38 insertions(+), 5 deletions(-) + +commit 375015018bb16cdd02708e1df0953d91916033ca +Author: Matthias Clasen +AuthorDate: Mon Nov 14 21:18:12 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 14 21:22:46 2011 -0500 + + Switch to using template-free docs build + + All docs are finally inline, so we can do this switch. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3f0d275295d0dbf8028e77c3f7ef662c3a41cdf3 +Author: Matthias Clasen +AuthorDate: Mon Nov 14 07:44:52 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 14 21:22:46 2011 -0500 + + Move remaining docs inline + + This introduces a fake source file just for holding + docs that have no good place elsewhere. Not great, but + better than templates. + + docs/reference/glib/glib-docs.sgml | 1 - + docs/reference/glib/glib-sections.txt | 133 +- + docs/reference/glib/tmpl/.gitignore | 8 + + docs/reference/glib/tmpl/byte_order.sgml | 628 ------- + docs/reference/glib/tmpl/limits.sgml | 253 --- + docs/reference/glib/tmpl/macros.sgml | 233 --- + docs/reference/glib/tmpl/macros_misc.sgml | 743 -------- + docs/reference/glib/tmpl/numerical.sgml | 121 -- + docs/reference/glib/tmpl/type_conversion.sgml | 125 -- + docs/reference/glib/tmpl/types.sgml | 327 ---- + docs/reference/glib/tmpl/windows.sgml | 142 -- + glib/Makefile.am | 1 + + glib/docs.c | 2259 + +++++++++++++++++++++++++ + glib/gtimer.c | 11 + + 14 files changed, 2330 insertions(+), 2655 deletions(-) + +commit 127df9bd83d610cb989e63037f3e3a6b64c034e0 +Author: Matthias Clasen +AuthorDate: Mon Nov 14 21:06:30 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 14 21:22:46 2011 -0500 + + Move GModule docs inline + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/modules.sgml | 291 + ---------------------------------- + gmodule/gmodule.c | 258 + ++++++++++++++++++++++++++++-- + 3 files changed, 250 insertions(+), 300 deletions(-) + +commit 2195e20dce58ab14db40187dbcd78682e4287889 +Author: Matthias Clasen +AuthorDate: Sun Nov 13 15:37:56 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 14 21:22:46 2011 -0500 + + Move GDate docs inline + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/date.sgml | 822 + ------------------------------------ + glib/gdate.c | 638 +++++++++++++++++++++++++++- + 3 files changed, 637 insertions(+), 824 deletions(-) + +commit 18da6e6be97c838edf6ef150b196b428ff3118cf +Author: Matthias Clasen +AuthorDate: Sun Nov 13 00:43:50 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 14 21:22:46 2011 -0500 + + Move i18n docs inline + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/i18n.sgml | 252 + ------------------------------------ + glib/ggettext.c | 156 ++++++++++++++++++++++ + 3 files changed, 157 insertions(+), 252 deletions(-) + +commit c8b0617a2b9b71ca89b9fdd0e6f3b6afdd255a49 +Author: Matthias Clasen +AuthorDate: Sun Nov 13 00:26:57 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 14 21:22:37 2011 -0500 + + Move slice and hook docs inline + + docs/reference/glib/tmpl/.gitignore | 2 + + docs/reference/glib/tmpl/hooks.sgml | 470 + ---------------------------- + docs/reference/glib/tmpl/memory_slices.sgml | 256 --------------- + glib/ghook.c | 421 + ++++++++++++++++++++++++- + glib/gslice.c | 255 +++++++++++++++ + 5 files changed, 676 insertions(+), 728 deletions(-) + +commit bad6c0ad1516ab149d2917c8db9d84a235c4667c +Author: Dan Winship +AuthorDate: Mon Nov 14 19:46:02 2011 -0500 +Commit: Dan Winship +CommitDate: Mon Nov 14 19:46:02 2011 -0500 + + GSocketClient: improve error messages on connection failure + + Include the hostname (or proxy hostname if it was the connection to + the proxy server that failed) in the GError message when + g_socket_client_connect* fail. + + https://bugzilla.gnome.org/show_bug.cgi?id=661266 + + gio/gsocket.c | 7 +++---- + gio/gsocketclient.c | 55 + +++++++++++++++++++++++++++++++++++++++++++++++------ + 2 files changed, 52 insertions(+), 10 deletions(-) + +commit 74dad004d143a2d3fbe4171d20e57cc9942ad89d +Author: Dan Winship +AuthorDate: Mon Nov 14 18:27:34 2011 -0500 +Commit: Dan Winship +CommitDate: Mon Nov 14 18:31:21 2011 -0500 + + GUnixInput/OutputStream: fix blocking methods to always block + + Previously, if you created a GUnixInputStream or GUnixOutputStream + from a non-blocking file descriptor, it might sometimes return + G_IO_ERROR_WOULD_BLOCK from g_input_stream_read/g_output_stream_write, + which is wrong. Fix that. (Use the GPollableInput/OutputStream methods + if you want non-blocking I/O.) + + Also, add a test for this to gio/tests/unix-streams. + + Also, fix the GError messages to say "Error reading from file + descriptor", etc instead of "Error reading from unix" (which was + presumably from a bad search and replace job). + + https://bugzilla.gnome.org/show_bug.cgi?id=626866 + + gio/gunixinputstream.c | 48 ++++++++++++++++++++++++------------------ + gio/gunixoutputstream.c | 54 + +++++++++++++++++++++++++++--------------------- + gio/tests/unix-streams.c | 24 +++++++++++++++++++-- + 3 files changed, 81 insertions(+), 45 deletions(-) + +commit 29f786851d9fb8c8229161087e55254e379ef6e7 +Author: Dan Winship +AuthorDate: Mon Nov 14 13:55:14 2011 -0500 +Commit: Dan Winship +CommitDate: Mon Nov 14 13:55:14 2011 -0500 + + Fix glib/tests/utils for g_parse_debug_string() changes + + glib/tests/utils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fe5ba0f291c11a22fbfe812d1c8315837fa14177 +Author: Dan Winship +AuthorDate: Sun Jun 12 15:59:36 2011 -0400 +Commit: Dan Winship +CommitDate: Mon Nov 14 13:42:30 2011 -0500 + + add GNetworkMonitor, for... monitoring the network + + Add GNetworkMonitor and its associated extension point, provide a base + implementation that always claims the network is available, and a + netlink-based implementation built on top of that that actually tracks + the network state. + + https://bugzilla.gnome.org/show_bug.cgi?id=620932 + + configure.ac | 4 + + docs/reference/gio/gio-docs.xml | 5 +- + docs/reference/gio/gio-sections.txt | 20 ++ + gio/Makefile.am | 11 + + gio/gio.h | 1 + + gio/gio.symbols | 10 + + gio/giomodule.c | 11 + + gio/giotypes.h | 1 + + gio/gnetworkmonitor.c | 261 ++++++++++++++++++++ + gio/gnetworkmonitor.h | 89 +++++++ + gio/gnetworkmonitorbase.c | 412 + ++++++++++++++++++++++++++++++++ + gio/gnetworkmonitorbase.h | 66 +++++ + gio/gnetworkmonitornetlink.c | 465 + ++++++++++++++++++++++++++++++++++++ + gio/gnetworkmonitornetlink.h | 57 +++++ + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 3 + + gio/tests/network-monitor.c | 463 + +++++++++++++++++++++++++++++++++++ + 17 files changed, 1878 insertions(+), 2 deletions(-) + +commit eb9755dc9c765cd0381f8b6d897e6ff4f7582a0a +Author: Dan Winship +AuthorDate: Sat Oct 1 08:31:54 2011 -0400 +Commit: Dan Winship +CommitDate: Mon Nov 14 13:42:29 2011 -0500 + + GInetAddressMask: new type for internet address range matching + + Eg, for matching a GInetAddress to a range like "10.0.0.0/8" or + "fe80::/10" + + https://bugzilla.gnome.org/show_bug.cgi?id=620932 + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 25 ++ + gio/Makefile.am | 2 + + gio/ginetaddressmask.c | 463 + ++++++++++++++++++++++++++++++++++++ + gio/ginetaddressmask.h | 78 ++++++ + gio/gio.h | 1 + + gio/gio.symbols | 9 + + gio/giotypes.h | 1 + + 8 files changed, 580 insertions(+) + +commit fac9e8d29f3b73afb17feca1fefe51986a09327c +Author: Dan Winship +AuthorDate: Sun Nov 13 16:39:45 2011 -0500 +Commit: Dan Winship +CommitDate: Sun Nov 13 16:39:45 2011 -0500 + + gunixinput/outputstream: fix docs + + Don't try to link to the docs of undocumented private classes + + gio/gunixinputstream.c | 3 +-- + gio/gunixoutputstream.c | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +commit 9b4cc6edf4a698597c0cee9a5ef4d40ad13aa888 +Author: Dan Winship +AuthorDate: Tue Apr 27 16:54:18 2010 -0400 +Commit: Dan Winship +CommitDate: Sun Nov 13 16:28:51 2011 -0500 + + GUnixInputStream, GUnixOutputStream: support ordinary files better + + If the fd is not a pipe or socket, fall back to using threads to do + async I/O rather than poll, since poll doesn't work the way you want + for ordinary files. + + https://bugzilla.gnome.org/show_bug.cgi?id=606913 + + gio/gunixinputstream.c | 34 +++++++++++++++++++++++++++++----- + gio/gunixoutputstream.c | 34 +++++++++++++++++++++++++++++----- + 2 files changed, 58 insertions(+), 10 deletions(-) + +commit e60846dc78b9dace8d27276f7ef512e209dba7b3 +Author: Matthias Clasen +AuthorDate: Sat Nov 12 22:52:24 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 12 22:52:24 2011 -0500 + + Some more docs reshuffling + + docs/reference/glib/building.sgml | 980 + +++++++++++++++++-------------------- + docs/reference/glib/glib-docs.sgml | 132 ++--- + 2 files changed, 509 insertions(+), 603 deletions(-) + +commit 06bb6c75a2e5e6e0c3bfcb99ae829143768e1702 +Author: Matthias Clasen +AuthorDate: Sat Nov 12 21:54:42 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 12 21:54:42 2011 -0500 + + More consistent doc formatting + + Move some things around, make capitalization of short descriptions + more consistent. + + docs/reference/glib/glib-docs.sgml | 6 +- + docs/reference/glib/gvariant-text.xml | 4 + + docs/reference/glib/gvariant-varargs.xml | 7 +- + docs/reference/glib/regex-syntax.sgml | 9 +- + docs/reference/glib/running.sgml | 237 + +++++++++++++++---------------- + glib/gchecksum.c | 2 +- + glib/gconvert.c | 2 +- + glib/gdatetime.c | 2 +- + glib/ghmac.c | 2 +- + glib/glist.c | 4 +- + glib/gslist.c | 4 +- + glib/gtimezone.c | 2 +- + glib/gurifuncs.c | 7 +- + glib/gversion.c | 2 +- + 14 files changed, 148 insertions(+), 142 deletions(-) + +commit 599f254066beb3bdad1d4fb70a7afd28c45d7634 +Author: Matthias Clasen +AuthorDate: Sat Nov 12 19:13:44 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 12 19:13:44 2011 -0500 + + Cleanups to debug env var handling + + glib/glib-init.c | 6 +++--- + glib/gslice.c | 48 ++++++++++++++++++------------------------------ + gobject/gtype.c | 13 +++++-------- + 3 files changed, 26 insertions(+), 41 deletions(-) + +commit 943a18b5643443438820eae3453d3b279213547e +Author: Matthias Clasen +AuthorDate: Sat Nov 12 18:36:52 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 12 18:36:52 2011 -0500 + + Parse G_DEBUG only once + + glib/glib-init.c | 15 +++------------ + 1 file changed, 3 insertions(+), 12 deletions(-) + +commit 5d9f05eef147f17d71e38c9fba2e3f622c9ed21b +Author: Matthias Clasen +AuthorDate: Sat Nov 12 10:26:31 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 12 10:32:35 2011 -0500 + + glib-unix.h: Add G_BEGIN/END_DECLS + + The omission was pointed out in bug 663880. + + glib/glib-unix.h | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit faebf0f6536f85bfc4afd81a69d9d46383031fa6 +Author: Chun-wei Fan +AuthorDate: Sat Nov 12 10:38:31 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Sat Nov 12 10:38:31 2011 +0800 + + gstrfuncs.c: Fix variable declaration + + Declare variables at top of block to stop C89 compilers from + complaining. + + glib/gstrfuncs.c | 21 +++++++++++---------- + 1 file changed, 11 insertions(+), 10 deletions(-) + +commit 0f01bef4b458b73f2500ad8926b9c8a886215dc3 +Author: Simon McVittie +AuthorDate: Fri Nov 11 14:41:50 2011 +0000 +Commit: Simon McVittie +CommitDate: Fri Nov 11 16:05:21 2011 +0000 + + GDBusWorker: tolerate read errors while closing + + My previous fix for GNOME#662100 was incomplete: it seems that + with some + timings, the stream can be closed with an async read in-flight. This + can make the read fail immediately with G_IO_ERROR_CLOSED instead of + becoming cancelled. + + This happens reliably on an embedded device, and rarely on my laptop; + repeating the test 100 times in quick succession reliably reproduces + the bug on my laptop. + + It seems as though what we really want is to ignore read errors, once + we've established that we want to close the connection anyway - this + means that after asking to close, you're immune to exit-on-close, + which seems like a good rule. + + An additional subtlety is that continuing to read after we know we + want to close is still required, otherwise we'll never emit ::closed. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662100 + Bug-NB: NB#287088 + Signed-off-by: Simon McVittie + Reviewed-by: Colin Walters + + gio/gdbusprivate.c | 22 +++++++++++++++++++++- + 1 file changed, 21 insertions(+), 1 deletion(-) + +commit 214d249f40de028c5f76cea6ed665af5e1cf45d0 +Author: Simon McVittie +AuthorDate: Thu Nov 10 19:06:43 2011 +0000 +Commit: Simon McVittie +CommitDate: Fri Nov 11 16:05:19 2011 +0000 + + GDBusWorker: debug on read errors if transport debugging is enabled + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662100 + Bug-NB: NB#287088 + Signed-off-by: Simon McVittie + Reviewed-by: Colin Walters + + gio/gdbusprivate.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit fc21c6ced0f1d7e6c8960b2e1439d814a960e7bf +Author: Simon McVittie +AuthorDate: Thu Nov 3 18:33:08 2011 +0000 +Commit: Simon McVittie +CommitDate: Fri Nov 11 16:05:16 2011 +0000 + + gdbus-exit-on-close test: don't leak a variant + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662100 + Bug-NB: NB#287088 + Signed-off-by: Simon McVittie + Reviewed-by: Colin Walters + + gio/tests/gdbus-exit-on-close.c | 1 + + 1 file changed, 1 insertion(+) + +commit f0c383917bdae58393410f2c3052bad2a4b51d9e +Author: Simon McVittie +AuthorDate: Thu Nov 3 18:32:53 2011 +0000 +Commit: Simon McVittie +CommitDate: Fri Nov 11 16:05:04 2011 +0000 + + gdbus-exit-on-close test: optionally be more verbose for debugging + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662100 + Bug-NB: NB#287088 + Signed-off-by: Simon McVittie + Reviewed-by: Colin Walters + + gio/tests/gdbus-exit-on-close.c | 28 +++++++++++++++++++++++++++- + 1 file changed, 27 insertions(+), 1 deletion(-) + +commit 759c0e935d0d189aebbb7ff8186c397e88477c7f +Author: Dan Winship +AuthorDate: Sat Sep 3 09:03:17 2011 -0400 +Commit: Dan Winship +CommitDate: Wed Nov 9 08:27:53 2011 -0500 + + gio: more implementations of GFileDescriptorBased + + Implement GFileDescriptorBased in GSocket{Input,Output}Stream and + GUnix{Input,Output}Stream. + + https://bugzilla.gnome.org/show_bug.cgi?id=616852 + + gio/gsocketinputstream.c | 27 ++++++++++++++++++++++++++- + gio/gsocketoutputstream.c | 29 +++++++++++++++++++++++++++-- + gio/gunixinputstream.c | 12 +++++++++++- + gio/gunixoutputstream.c | 12 +++++++++++- + 4 files changed, 75 insertions(+), 5 deletions(-) + +commit f218353e04ca61dbf5e4d7a3a024fe414dbfa46a +Author: Kristian Rietveld +AuthorDate: Wed Nov 9 08:32:33 2011 +0100 +Commit: Kristian Rietveld +CommitDate: Wed Nov 9 08:32:33 2011 +0100 + + Need to include xlocale.h on Darwin for strtod_l + + This fixes the build of gstrfuncs.c on Darwin. + + configure.ac | 2 ++ + glib/gstrfuncs.c | 5 +++++ + 2 files changed, 7 insertions(+) + +commit fb95c20c965bc241fc9d519afede94d3bc7838a8 +Author: Marc-André Lureau +AuthorDate: Mon Nov 7 20:04:15 2011 +0100 +Commit: Marc-André Lureau +CommitDate: Mon Nov 7 23:12:45 2011 +0100 + + Add G_SIGNAL_DEPRECATED + + Similar to G_PARAM_DEPRECATED. It will warn only for users of the + signals, so a signal can still be emited without warning, for + compatibility reasons. + + Apparently, there is no way user flags could have been used before, + so that shouldn't break anyone. + + https://bugzilla.gnome.org/show_bug.cgi?id=663581 + + gobject/gobject.c | 2 +- + gobject/gsignal.c | 32 +++++++++++++++++++++++++++++++- + gobject/gsignal.h | 8 ++++++-- + 3 files changed, 38 insertions(+), 4 deletions(-) + +commit f09e71aff05bfa07e58c68b2dd8396ed760e4666 +Author: Dan Winship +AuthorDate: Mon Nov 7 13:50:00 2011 -0500 +Commit: Dan Winship +CommitDate: Mon Nov 7 13:50:00 2011 -0500 + + gio/tests/proxy: don't use deprecated functions + + gio/tests/proxy.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a5bf1c117b9042906763d166f396e8cccaf48f91 +Author: Dan Winship +AuthorDate: Mon Nov 7 13:48:30 2011 -0500 +Commit: Dan Winship +CommitDate: Mon Nov 7 13:48:30 2011 -0500 + + Fix g_variant_get_gtype() deprecation message + + Instead of: + + warning: ‘g_variant_get_gtype’ is deprecated (declared at + ../../gobject/glib-types.h:242): Use '((GType) ((21) << (2)))' + instead [-Wdeprecated-declarations] + + show: + + warning: ‘g_variant_get_gtype’ is deprecated (declared at + ../../gobject/glib-types.h:242): Use ''G_VARIANT_GET_TYPE'' instead + [-Wdeprecated-declarations] + + Also, document the macro-expansion problem in the + G_GNUC_DEPRECATED_FOR docs + + docs/reference/glib/tmpl/macros_misc.sgml | 7 +++++++ + gobject/glib-types.h | 2 +- + 2 files changed, 8 insertions(+), 1 deletion(-) + +commit 7d1c7af1a6ed30d4caec244ac8ebe47dc86bf04f +Author: Benjamin Otte +AuthorDate: Sun Oct 16 12:58:29 2011 -0700 +Commit: Benjamin Otte +CommitDate: Mon Nov 7 15:29:51 2011 +0100 + + docs: Improve g_variant_loop() docs + + Typo fix and changing "is not recommended" to the nice version of + "don't + do this", aka "causes undefined behavior". + + gio/glocalfileinfo.c | 5 ++++- + glib/gvariant.c | 4 ++-- + 2 files changed, 6 insertions(+), 3 deletions(-) + +commit 14677e16d8ac6b7bdb22885ef94ae889f67751ee +Author: Benjamin Otte +AuthorDate: Mon Jul 25 13:08:59 2011 +0200 +Commit: Benjamin Otte +CommitDate: Mon Nov 7 15:29:51 2011 +0100 + + docs: Tell which function to use to avoid errors. + + glib/gvarianttype.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 0e283dcb94a6be20ccc0b8446c3df70ff14d36f1 +Author: Chun-wei Fan +AuthorDate: Mon Nov 7 14:14:45 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Nov 7 14:14:45 2011 +0800 + + Update VS property sheets + + gmain.h was added into the list of deprecated headers, so "install" + that as weel. + + build/win32/vs10/glib.props | 2 ++ + build/win32/vs9/glib.vsprops | 1 + + 2 files changed, 3 insertions(+) + +commit fc0b8d4f28c1d3d24a0d92b134ebbe74966a4a73 +Author: Matthias Clasen +AuthorDate: Mon Nov 7 00:14:28 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 7 00:14:28 2011 -0500 + + Add a test for CDATA in gschema.xml files + + gio/tests/gschema-compile.c | 3 ++- + gio/tests/schema-tests/cdata.gschema.xml | 7 +++++++ + 2 files changed, 9 insertions(+), 1 deletion(-) + +commit 7ec69ecd3207abc750291231c37739d16d8d5a42 +Author: Matthias Clasen +AuthorDate: Mon Nov 7 00:13:56 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 7 00:13:56 2011 -0500 + + Accept CDATA in gschema.xml files + + gio/glib-compile-schemas.c | 1 + + 1 file changed, 1 insertion(+) + +commit 41b8ce7100fa5fa4ecb01555e52b3664bcc41b28 +Author: Alexander Larsson +AuthorDate: Thu Nov 3 17:27:08 2011 +0100 +Commit: Alexander Larsson +CommitDate: Thu Nov 3 17:27:08 2011 +0100 + + win32: Remove some debug spew on startup + + This is not needed anymore and was causing problems for pkg-config. + + glib/gthread-win32.c | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +commit d2d62ecfcd09f91ed423b66b5b21be602dce2ecd +Author: Matthias Clasen +AuthorDate: Thu Nov 3 01:48:54 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Nov 3 01:50:29 2011 -0400 + + Make the default log handler more useful + + We make the default log handler only print default and informational + messages if the log domain is explicitly requested. + + https://bugzilla.gnome.org/show_bug.cgi?id=661926 + + docs/reference/glib/running.sgml | 34 +++++++++++++++++++++++++++++++++- + glib/gmessages.c | 37 + +++++++++++++++++++++++++++++++++++++ + glib/tests/logging.c | 23 ++++++++++++++++++++++- + 3 files changed, 92 insertions(+), 2 deletions(-) + +commit 7456b43c3e31355c97c19218e1e75eb44611d12f +Author: Matthias Clasen +AuthorDate: Thu Nov 3 00:39:31 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Nov 3 00:39:31 2011 -0400 + + Move old deprecated gmain api into deprecated/ + + glib/Makefile.am | 1 + + glib/deprecated/gmain.h | 138 + ++++++++++++++++++++++++++++++++++++++++++++++++ + glib/glib.h | 1 + + glib/gmain.h | 100 ----------------------------------- + 4 files changed, 140 insertions(+), 100 deletions(-) + +commit a3c8712c4bc8c8ed4e7523ee06766436a6a84c0e +Author: Matthias Clasen +AuthorDate: Thu Nov 3 00:30:56 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Nov 3 00:31:14 2011 -0400 + + Remove single-include guards in deprecated/ + + Not allowed to include these headers single anymore, either. + + glib/deprecated/gallocator.h | 2 +- + glib/deprecated/gcompletion.h | 2 +- + glib/deprecated/grel.h | 2 +- + glib/deprecated/gthread.h | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +commit 5896808e8c6a66db34d9c0c5562a3bef00357a25 +Author: Matthias Clasen +AuthorDate: Thu Nov 3 00:16:41 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Nov 3 00:16:41 2011 -0400 + + GIO: Don't use G_DISABLE_DEPRECATED for functions + + gio/gdesktopappinfo.c | 2 -- + gio/gdesktopappinfo.h | 6 ++++-- + gio/gdrive.h | 2 -- + gio/gfile.h | 4 ---- + gio/giomodule.c | 2 -- + gio/gmount.h | 2 -- + gio/gtlsconnection.h | 5 ++--- + gio/gunixsocketaddress.h | 4 ---- + gio/gvolume.h | 2 -- + gio/gvolumemonitor.h | 3 +-- + 10 files changed, 7 insertions(+), 25 deletions(-) + +commit 328be3938ec4b65f2d19adc531148ce8c0b1803f +Author: Matthias Clasen +AuthorDate: Thu Nov 3 00:09:32 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Nov 3 00:09:32 2011 -0400 + + GObject: Don't use G_DISABLE_DEPRECATED for functions + + gobject/gboxed.h | 2 -- + gobject/glib-types.h | 3 +-- + gobject/gobject.h | 5 +---- + gobject/gparam.h | 2 -- + gobject/gvaluetypes.h | 7 ++----- + 5 files changed, 4 insertions(+), 15 deletions(-) + +commit 07bcb3f8d6451de9d44c1ff5891f7fc79d8fa524 +Author: Matthias Clasen +AuthorDate: Thu Nov 3 00:05:29 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Nov 3 00:05:29 2011 -0400 + + Update deprecation docs + + docs/reference/glib/compiling.sgml | 21 ++++++++++----------- + 1 file changed, 10 insertions(+), 11 deletions(-) + +commit 03766a1a38407fbbbf8c30874e6f8d46e2b0da43 +Author: Matthias Clasen +AuthorDate: Thu Nov 3 00:04:15 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Nov 3 00:04:15 2011 -0400 + + Don't use G_DISABLE_DEPRECATED guards around deprecated functions + + I'm leaving the old-style deprecation guards in place around + deprecated macros, enumeration values, etc, for now. + + glib/gasyncqueue.h | 2 -- + glib/gatomic.h | 2 -- + glib/gfileutils.h | 6 ++---- + glib/ghash.h | 4 +--- + glib/giochannel.c | 2 -- + glib/giochannel.h | 2 -- + glib/glib.h | 2 -- + glib/gmain.h | 3 +-- + glib/gmappedfile.h | 2 -- + glib/gmessages.h | 3 +-- + glib/gstrfuncs.h | 8 -------- + glib/gstring.h | 6 ++---- + glib/gtree.h | 2 -- + glib/gunicode.h | 3 --- + glib/gutils.h | 2 +- + 15 files changed, 8 insertions(+), 41 deletions(-) + +commit f9c2362e434b2d190296f8a41a7aa68c50474923 +Author: Dan Winship +AuthorDate: Fri Oct 28 15:38:52 2011 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 28 18:04:28 2011 -0400 + + glib-mkenums: add --identifier-prefix and --symbol-prefix args + + Allow passing --identifier-prefix and --symbol-prefix to glib-mkenums, + with the same meanings as in g-ir-scanner, to allow fixing up the enum + name parsing globally rather than needing to add a /<* *>/ override to + each enum. + + https://bugzilla.gnome.org/show_bug.cgi?id=661797 + + docs/reference/gobject/glib-mkenums.xml | 24 ++++++++++++++++++ + gobject/glib-mkenums.in | 43 + ++++++++++++++++++++++++--------- + 2 files changed, 56 insertions(+), 11 deletions(-) + +commit 78a0dbd8536f993094be30bf8f1e3b189f571325 +Author: Dan Winship +AuthorDate: Fri Oct 28 15:38:27 2011 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 28 18:04:28 2011 -0400 + + docs: don't refer to a deprecated glib-mkenums flag + + Refer to the new flag instead + + https://bugzilla.gnome.org/show_bug.cgi?id=661797 + + docs/reference/gobject/glib-mkenums.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit dd4a8d333ddab043c5a6e89c0d19e56a1bdcec3e +Author: Dan Winship +AuthorDate: Fri Oct 14 14:32:11 2011 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 28 15:44:13 2011 -0400 + + glib-mkenums.in: fix @ENUMPREFIX@ with /*< underscore_name=... >*/ + + For enums defined with an underscore_name override, @ENUMPREFIX@ + would include a trailing "_". Fix. + + https://bugzilla.gnome.org/show_bug.cgi?id=661797 + + gobject/glib-mkenums.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9782598b81ffe35f892bb510c27bc0d1afffaeee +Author: Aleksander Morgado +AuthorDate: Thu Oct 27 16:54:02 2011 +0200 +Commit: Aleksander Morgado +CommitDate: Thu Oct 27 18:34:27 2011 +0200 + + gdbus: avoid warning when finalizing a GDBusObjectManagerClient + + If the GDBusObjectManagerClient doesn't get a name owner during + its lifetime, + `on_control_proxy_g_signal' will never be connected to any signal, + so we + shouldn't dump any warning in that case. + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=662858 + + gio/gdbusobjectmanagerclient.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 1fc897352e2bd8c52f33517088213ee4b0024932 +Author: David Zeuthen +AuthorDate: Thu Oct 27 10:30:58 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu Oct 27 10:35:18 2011 -0400 + + g_bus_own_name: fix race when unowning a name immediately after + owning it + + ... and also add a test to verify that the fix works. + + https://bugzilla.gnome.org/show_bug.cgi?id=662808 + + Signed-off-by: David Zeuthen + + gio/gdbusnameowning.c | 86 + +++++++++++++++++++++++++++++++++++-------------- + gio/tests/gdbus-names.c | 29 +++++++++++++++-- + 2 files changed, 89 insertions(+), 26 deletions(-) + +commit 4c038429b10a961b59b0c4a5c7ede40fe5aee494 +Author: Ryan Lortie +AuthorDate: Wed Oct 26 15:10:33 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 26 15:10:33 2011 -0400 + + Revert "gthread: G_STATIC_MUTEX_INIT: Fix this for the non-win32 + case." + + This reverts commit 52fd106724aa79ad57ecaa7ad9d340f8c89da06d. + + glib/deprecated/gthread.h | 8 -------- + 1 file changed, 8 deletions(-) + +commit 52fd106724aa79ad57ecaa7ad9d340f8c89da06d +Author: Murray Cumming +AuthorDate: Wed Oct 26 11:38:13 2011 +0200 +Commit: Murray Cumming +CommitDate: Wed Oct 26 12:11:58 2011 +0200 + + gthread: G_STATIC_MUTEX_INIT: Fix this for the non-win32 case. + + Also initialize the unused member. This was correct before but + was broken when the ifndef was moved inside the GStaticMutex + struct: + http://git.gnome.org/browse/glib/commit/glib/gthread.h?id=24652730a9faaedb19b9e90024077eb7f75a6907 + This avoids a compiler warning. + + glib/deprecated/gthread.h | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 73d22207d166d02660d8864034b3eab855ad2f54 +Author: Damien Lespinau +AuthorDate: Mon Oct 24 22:25:59 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 24 22:26:49 2011 -0400 + + Add TAGS files to .gitignore + + "make tags" is the best way to produce tags in an automake project and + yet very few people are using it so the tags files it generates + are never + added to the .gitignore files. + + Add TAGS files to .gitignore then. + + https://bugzilla.gnome.org/show_bug.cgi?id=615424 + + .gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit ba7bf09285636a3c150a83620c6d91611aa37b05 +Author: Robert Nagy +AuthorDate: Mon Oct 24 21:18:48 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 24 21:20:14 2011 -0400 + + Fix some build issues on OpenBSD + + Adapt to some OpenBSD header quirks. + Patch by Robert Nagy. + + https://bugzilla.gnome.org/show_bug.cgi?id=661386 + + configure.ac | 17 +++++++++++++---- + 1 file changed, 13 insertions(+), 4 deletions(-) + +commit 6a81ced72d0d5dc835e53dd6ae6652a3c9de494b +Author: Sjoerd Simons +AuthorDate: Fri Oct 21 15:40:56 2011 +0200 +Commit: Matthias Clasen +CommitDate: Mon Oct 24 20:40:35 2011 -0400 + + Fix document generation in out of tree builds + + https://bugzilla.gnome.org/show_bug.cgi?id=662390 + + docs/reference/glib/Makefile.am | 2 +- + docs/reference/gobject/Makefile.am | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 5e2a2ef288abafa34213982365bf2019e882864e +Author: Will Thompson +AuthorDate: Thu Oct 20 16:07:03 2011 +0100 +Commit: Matthias Clasen +CommitDate: Mon Oct 24 20:35:30 2011 -0400 + + g_parse_debug_string: invert flags given besides "all" + + Any flags specified as well as "all" are subtracted from the result, + allowing the user to specify FOO_DEBUG="all,bar,baz" to mean "give me + debugging information for everything except bar and baz". + + https://bugzilla.gnome.org/show_bug.cgi?id=642452 + + glib/glib-init.c | 41 +++++++++++++++++++++++++++++------------ + tests/testglib.c | 18 ++++++++++++++++-- + 2 files changed, 45 insertions(+), 14 deletions(-) + +commit 73ffa9034f80ff08c30ff519984b5d00894c63c6 +Author: Will Thompson +AuthorDate: Wed Feb 16 10:48:22 2011 +0000 +Commit: Matthias Clasen +CommitDate: Mon Oct 24 20:26:22 2011 -0400 + + Test g_parse_debug_string ("all") + + https://bugzilla.gnome.org/show_bug.cgi?id=642452 + + tests/testglib.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 94a46ea410ced6904691dba16d01485b6a6283f0 +Author: Matthias Clasen +AuthorDate: Mon Oct 24 13:43:11 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 24 13:43:11 2011 -0400 + + Fix 'make check' with clang + + Patch by Elias Pipping + + https://bugzilla.gnome.org/show_bug.cgi?id=662491 + + tests/run-assert-msg-test.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 73e3c98df07ae7180922216aa3bebfb434405375 +Author: Matthias Clasen +AuthorDate: Mon Oct 24 13:25:15 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 24 13:29:17 2011 -0400 + + Fix g_hash_table_iter_replace + + When reusing an existing key 'internally', we must avoid calling + the key_destroy function on the old key. + + https://bugzilla.gnome.org/show_bug.cgi?id=662544 + + glib/ghash.c | 17 ++++++++++++----- + glib/tests/hash.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 59 insertions(+), 5 deletions(-) + +commit a124562d1bdd51de4b136725b3902b1e518d991f +Author: Simon McVittie +AuthorDate: Fri Oct 21 11:42:10 2011 +0100 +Commit: Simon McVittie +CommitDate: Mon Oct 24 10:40:29 2011 +0100 + + GDBusConnection: document that this object is (meant to be) + thread-safe + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661992 + Signed-off-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/gdbusconnection.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit a031bacaac77d5de7388203dbe1ccc67b9142482 +Author: Simon McVittie +AuthorDate: Fri Oct 21 15:46:00 2011 +0100 +Commit: Simon McVittie +CommitDate: Mon Oct 24 10:40:26 2011 +0100 + + GDBusConnection: make the closed flag atomic (but still lock to write) + + Strictly speaking, neither of the two uses that aren't under the lock + *needs* to be atomic, but it seems better to be obviously correct (and + we save another 4 bytes of struct). + + One of these uses is in g_dbus_connection_is_closed(), any use + of which + is inherently a race condition anyway. + + The other is g_dbus_connection_flush_sync, which as far as I can tell + just needs a best-effort check, to not waste effort on a connection + that + has been closed for a while (but I could be wrong). + + I removed the check for the closed flag altogether in + g_dbus_connection_send_message_with_reply_unlocked, because it + turns out + to be redundant with one in g_dbus_connection_send_message_unlocked, + which is called immediately after. + + g_dbus_connection_close_sync held the lock to check the closed flag, + which is no longer needed. + + As far as I can tell, the only reason why the lock is still desirable + when setting the closed flag is so that remove_match_rule can't fail + by racing with close notification from the worker thread - but + on_worker_closed needs to hold the lock anyway, to deal with other + data structures, so there's no point in trying to eliminate the + requirement to hold the lock. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661992 + Signed-off-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/gdbusconnection.c | 163 + +++++++++++++++++++++++++++++--------------------- + 1 file changed, 96 insertions(+), 67 deletions(-) + +commit 9857cf8c46511b0fb1ed60ea96da8f4a310263e5 +Author: Simon McVittie +AuthorDate: Fri Oct 21 16:24:29 2011 +0100 +Commit: Simon McVittie +CommitDate: Mon Oct 24 10:40:23 2011 +0100 + + GDBusConnection: document which properties are protected by @lock + + Also, a few that don't need to be. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661992 + Signed-off-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/gdbusconnection.c | 25 ++++++++++++++++--------- + 1 file changed, 16 insertions(+), 9 deletions(-) + +commit 8df114f5975ac8819a5a16cb4c5492a179cdfa2e +Author: Simon McVittie +AuthorDate: Mon Oct 17 19:27:23 2011 +0100 +Commit: Simon McVittie +CommitDate: Mon Oct 24 10:40:20 2011 +0100 + + GDBusConnection: access the exit-on-close flag atomically + + This isn't strictly necessary, because in every location where it's + checked, if the reading thread misses an update from another thread, + it's indistinguishable from the reading thread having been scheduled + before the writing thread, which is an unavoidable race condition that + callers need to cope with anyway. On the other hand, merging + exit_on_close + into atomic_flags gives the least astonishing semantics to library + users + and saves 4 bytes of struct, and if you're accessing exit-on-close + often + enough for it to be a performance concern, you're probably doing + it wrong. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661992 + Signed-off-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/gdbusconnection.c | 24 +++++++++++++++++------- + 1 file changed, 17 insertions(+), 7 deletions(-) + +commit 3a0b60647d8fd3b7ecffd5f79641a1daa9d79299 +Author: Simon McVittie +AuthorDate: Mon Oct 17 13:27:03 2011 +0100 +Commit: Simon McVittie +CommitDate: Mon Oct 24 10:40:06 2011 +0100 + + Annotate GDBusConnection private functions with thread/lock status + + The thread shared between all GDBusWorker instances was variously + called + the "worker thread" or "message handler thread", which I mostly + changed to + "the GDBusWorker thread" to avoid ambiguity. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661992 + Signed-off-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/gdbusconnection.c | 89 + ++++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 63 insertions(+), 26 deletions(-) + +commit a886c2b3b8396bfacf546c9c52911fabb58acc57 +Author: Yaron Shahrabani +AuthorDate: Sat Oct 22 12:39:15 2011 +0200 +Commit: Yaron Shahrabani +CommitDate: Sat Oct 22 12:39:15 2011 +0200 + + Updated Hebrew translation. + + po/he.po | 5798 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 2916 insertions(+), 2882 deletions(-) + +commit c75ee5ed17c865072c7ee7c48fbea96ea8c09a62 +Author: Matej Urbančič +AuthorDate: Fri Oct 21 21:24:06 2011 +0200 +Commit: Matej Urbančič +CommitDate: Fri Oct 21 21:24:06 2011 +0200 + + Updated Slovenian translation + + po/sl.po | 5811 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 2908 insertions(+), 2903 deletions(-) + +commit 9c07e7dc90b1331dab9f0e960d119d0889c7d585 +Author: Ryan Lortie +AuthorDate: Fri Oct 21 14:05:10 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 21 15:18:20 2011 -0400 + + GDBusMessage: fix leak of GError + + As part of the deserialisation process of a zero-length array in the + DBus wire format, parse_value_from_blob() recursively calls itself + with + the expectation of failing (as can be seen by the assert immediately + following). + + It passes &local_error to this always-failing call and then fails to + free it (indeed, to use it at all). The result is that the GError is + leaked. + + Fix it by passing in NULL instead, so that the GError is never created + in the first place. + + https://bugzilla.gnome.org/show_bug.cgi?id=662411 + + gio/gdbusmessage.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3d13ee1b5ff2a2ad5f32704cc5f071167a8852a6 +Author: Ryan Lortie +AuthorDate: Fri Oct 21 15:00:24 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 21 15:04:37 2011 -0400 + + GVariant format string docs: fix maybe types + + The documentation for maybe types failed to mention 'a' as one of the + types that was handled with a single pointer for which NULL means + "nothing". Correct that omission. + + Problem caught by Shaun McCance. + + docs/reference/glib/gvariant-varargs.xml | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit e52437982c4dd1c88459f3eed0d8ad1dc167c0eb +Author: Matthias Clasen +AuthorDate: Fri Oct 21 14:57:47 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Oct 21 15:00:14 2011 -0400 + + Make g_ascii_strtod behave as documented + + The docs explicitly state that we reset errno, so lets do that, + even if we just wrap strtod_l. Also move the argument check + out of the ifdef. + + https://bugzilla.gnome.org/show_bug.cgi?id=662398 + + glib/gstrfuncs.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 848df03e16e190eddf1ee63733d85f687b65bdf9 +Author: Simon McVittie +AuthorDate: Wed Oct 19 17:23:30 2011 +0100 +Commit: Simon McVittie +CommitDate: Fri Oct 21 16:02:33 2011 +0100 + + GDBusConnection: check for initializedness in most public API + + The only exceptions are those of the trivial getters/setters that + don't + already need the initialization check for its secondary role as + a memory + barrier (this is consistent with GSocket, where trivial + getters/setters + don't check): + + * g_dbus_connection_set_exit_on_close + * g_dbus_connection_get_exit_on_close + * g_dbus_connection_is_closed + + g_dbus_connection_set_exit_on_close needs to be safe for + use before initialization anyway, so it can be set at construct-time. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661689 + Signed-off-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/gdbusconnection.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit 3958a9fc1ef99b474373415d5d46d596293764f6 +Author: Simon McVittie +AuthorDate: Thu Oct 20 20:02:02 2011 +0100 +Commit: Simon McVittie +CommitDate: Fri Oct 21 16:02:31 2011 +0100 + + GDBusConnection: document use while uninitialized as undefined + behaviour + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661689 + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662208 + Signed-off-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/gdbusconnection.c | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit a7ea94929420cafe5189b477f24da4903bec9e49 +Author: Simon McVittie +AuthorDate: Thu Oct 20 13:12:26 2011 +0100 +Commit: Simon McVittie +CommitDate: Fri Oct 21 16:02:27 2011 +0100 + + GDBusConnection: check for initialization where needed for + thread-safety + + Also document which fields require such a check in order to have + correct + threading semantics. + + This usage doesn't matches the GInitable documentation, which suggests + use of a GError - but using an uninitialized GDBusConnection is + programming error, and not usefully recoverable. (The GInitable + documentation may have been a mistake - GNOME#662208.) Also, not + all of + the places where we need it can raise a GError. + + The check serves a dual purpose: it turns a non-deterministic + crash into + a deterministic critical warning, and is also a memory barrier for + thread-safety. All of these functions dereference or return fields + that + are meant to be protected by FLAG_INITIALIZED, so they could crash or + return an undefined value to their caller without this, if called + from a + thread that isn't the one that called initable_init() (although + I can't + think of any way to do that without encountering a memory barrier, + undefined behaviour, or a race condition that leads to undefined + behaviour if the non-initializing thread wins the race). + + One exception is that initable_init() itself makes a synchronous call. + We deal with that by passing new internal flags up the call stack, to + reassure g_dbus_connection_send_message_unlocked() that it can + go ahead. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661689 + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661992 + Signed-off-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/gdbusconnection.c | 139 + +++++++++++++++++++++++++++++++++++++++++++++++--- + gio/gioenums.h | 2 + + 2 files changed, 133 insertions(+), 8 deletions(-) + +commit 245d68be6ff0104783ce0b2d4bc0a139f09e0c34 +Author: Simon McVittie +AuthorDate: Fri Oct 21 16:02:22 2011 +0100 +Commit: Simon McVittie +CommitDate: Fri Oct 21 16:02:22 2011 +0100 + + GDBusConnection: replace is_initialized with an atomic flag + + The comment implied that even failed initialization would set + is_initialized = TRUE, but this wasn't the case - failed + initialization + would only set initialization_error, and it was necessary to check + both. + + It turns out the documented semantics are nicer than the implemented + semantics, since this lets us use atomic operations, which are also + memory barriers, to avoid needing separate memory barriers or locks + for initialization_error (and other members that are read-only after + construction). + + I expect to need more than one atomically-accessed flag to fix thread + safety, so instead of a minimal implementation I've turned + is_initialized + into a flags word. + + Signed-off-by: Simon McVittie + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661689 + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661992 + Reviewed-by: David Zeuthen + + gio/gdbusconnection.c | 44 +++++++++++++++++++++++++++++--------------- + 1 file changed, 29 insertions(+), 15 deletions(-) + +commit e1a481ec0ab4b727632e9ef5d74e001318ab84a2 +Author: Chun-wei Fan +AuthorDate: Thu Oct 20 14:42:51 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Oct 20 14:42:51 2011 +0800 + + Fix VS 2008 property sheet + + Missed a required ';'-sorry about this. DOH! :| + + build/win32/vs9/glib.vsprops | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 269acbe7032cbc02b0c0edead054824ba111a5f1 +Author: Matthias Clasen +AuthorDate: Wed Oct 19 21:03:43 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 19 21:03:43 2011 -0400 + + Deprecate g_atexit + + This function was just not a good idea to begin with. + Its documentation gives plenty of reason not to use it. + + glib/gutils.c | 3 +++ + glib/gutils.h | 4 +++- + 2 files changed, 6 insertions(+), 1 deletion(-) + +commit 3569af4af10b2ae65d4d93bfb3de929e1d1e2308 +Author: Cosimo Cecchi +AuthorDate: Tue Oct 18 10:48:31 2011 -0400 +Commit: Cosimo Cecchi +CommitDate: Wed Oct 19 17:27:21 2011 -0400 + + desktop-app-info: annotate g_desktop_app_info_get_keywords() + + https://bugzilla.gnome.org/show_bug.cgi?id=662096 + + gio/gdesktopappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9da3dc292c1a0e3e0418eec2b909163ff2b68be8 +Author: Ryan Lortie +AuthorDate: Wed Oct 19 15:26:25 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 19 15:26:25 2011 -0400 + + more NEWS + + NEWS | 27 ++++++++++++++++++++++++++- + 1 file changed, 26 insertions(+), 1 deletion(-) + +commit 2a98cc635e03e57623268045cb0d6761b1619fea +Author: Ryan Lortie +AuthorDate: Wed Oct 19 15:07:22 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 19 15:07:22 2011 -0400 + + The usual docs unbreaking... + + docs/reference/glib/Makefile.am | 1 + + docs/reference/glib/building.sgml | 2 +- + docs/reference/glib/glib-sections.txt | 4 +--- + glib/giochannel.c | 10 +++++++++- + glib/gmessages.c | 2 +- + 5 files changed, 13 insertions(+), 6 deletions(-) + +commit 3fd412549fa50e06f92fb279d54a5d5b668600bc +Author: Ryan Lortie +AuthorDate: Wed Oct 19 10:11:54 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 19 10:11:54 2011 -0400 + + configure.ac: join the cargo-cult of _cv_ + + For some reason, the setting of g_atomic_lock_free wasn't making + it down + to the lower part of the configure script where glibconfig.h was being + generated when building using mingw32-configure. + + If we prefix glib_cv_ to the start of the variable name (like everyone + else is doing) then it magically starts working. + + I love you, automake. + + configure.ac | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 612d2384670378d23e46046ab42ca98d618aba43 +Author: Simon McVittie +AuthorDate: Tue Oct 18 16:19:43 2011 +0100 +Commit: Simon McVittie +CommitDate: Wed Oct 19 10:50:02 2011 +0100 + + gdbus-non-socket test: avoid use of a GMainContext across a fork + + See https://bugzilla.gnome.org/show_bug.cgi?id=658999 for why + this would + be bad. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662100 + Signed-off-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/tests/gdbus-non-socket.c | 51 + +++++++++++++++++++++++++++++++++----------- + 1 file changed, 38 insertions(+), 13 deletions(-) + +commit be89f052c2f578a812d7bba4bbd02be04a4fdc03 +Author: Simon McVittie +AuthorDate: Tue Oct 18 16:18:21 2011 +0100 +Commit: Simon McVittie +CommitDate: Wed Oct 19 10:50:02 2011 +0100 + + gdbus-exit-on-close test: cover more possibilities + + We didn't previously test anything except the implicit default + of TRUE. + Now we test implicit TRUE, explicit TRUE, explicit FALSE, and + disconnecting at the local end (which regressed while fixing Bug + #651268). + + Also avoid some questionable use of a main context, which fell foul of + Bug #658999 and caused this test to be disabled in master. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662100 + Bug-NB: NB#287088 + Signed-off-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/tests/gdbus-exit-on-close.c | 141 + +++++++++++++++++++++++++++++++++++----- + 1 file changed, 125 insertions(+), 16 deletions(-) + +commit 5e0492da509aad12b93b732c449dae1a016367c1 +Author: Simon McVittie +AuthorDate: Wed Oct 19 10:49:56 2011 +0100 +Commit: Simon McVittie +CommitDate: Wed Oct 19 10:49:56 2011 +0100 + + GDBusWorker: if a read was cancelled it means we closed the connection + + This was a regression caused by my previous work on GDBusWorker + thread-safety + (Bug #651268). The symptom is that if you disconnect a GDBusConnection + locally, the default implementation of GDBusConnection::closed + terminates your process, even though it shouldn't do that for + locally-closed connections; this is because GDBusWorker didn't think a + cancelled read was a local close. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662100 + Bug-NB: NB#287088 + Signed-off-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/gdbusprivate.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit 6c33e1cd9d9e247b8b2aa95e9617904a317b78c6 +Author: Simon McVittie +AuthorDate: Tue Oct 18 16:27:21 2011 +0100 +Commit: Simon McVittie +CommitDate: Wed Oct 19 10:37:27 2011 +0100 + + Revert "Disable two GDBus tests" + + This reverts commit 05ef173466e32d8b3d212803e4a72239913a362d. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=662100 + Signed-off-by: Simon McVittie + Reviewed-by: David Zeuthen + + gio/tests/gdbus-exit-on-close.c | 3 +-- + gio/tests/gdbus-non-socket.c | 3 +-- + 2 files changed, 2 insertions(+), 4 deletions(-) + +commit 99f0eaa4c5a86f6fa721044bb6841f6bda4c689b +Author: Ryan Lortie +AuthorDate: Tue Oct 18 23:26:00 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 18 23:26:00 2011 -0400 + + Fix bug in g_static_rec_mutex_unlock_full() + + pthreads doesn't implement the _lock_full() and _unlock_full() + calls on + recursive mutexes so we don't have it on GRecMutex either. Now that + we're using GRecMutex to implement GStaticRecMutex, we have to fake it + by keeping an internal counter of the number of locks and calling + g_rec_mutex_unlock() the appropriate number of times. + + The code to do this looked like: + + depth = mutex->depth; + while (mutex->depth--) + g_rec_mutex_unlock (rm); + return depth; + + which unfortunately did one last decrement after mutex->depth was + already zero (leaving it equal to -1). + + When locked the next time, the count would then increase from -1 to 0 + and then the next _unlock_full() call would not do any calls to + g_rec_mutex_unlock(), leading to a deadlock. + + https://bugzilla.gnome.org/show_bug.cgi?id=661914 + + glib/deprecated/gthread-deprecated.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit aba0f0c38bbfa11ad48b5410ebdbed2a99e68c58 +Author: Ryan Lortie +AuthorDate: Tue Oct 18 16:21:50 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 18 16:45:28 2011 -0400 + + gatomic: introduce G_ATOMIC_LOCK_FREE + + We clean up the detection of if we should do 'real' atomic + operations or + mutex-emulated ones with the introduction of a new (public) macro: + G_ATOMIC_LOCK_FREE. If defined, our atomic operations are + guaranteed to + be done in hardware. + + We need to use __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 to determine if our + compiler supports GCC-style atomic operations from the gatomic.h + header + because we might be building a program against GLib using a different + set of compiler options (or a different compiler) than was used + to build + GLib itself. + + Unfortunately, this macro is not available on clang, so it has + currently + regressed to using the mutex emulation. A bug about that has been + opened here: + + http://llvm.org/bugs/show_bug.cgi?id=11174 + + configure.ac | 85 + +++++++++++++++++++++------------- + docs/reference/glib/glib-overrides.txt | 5 ++ + docs/reference/glib/glib-sections.txt | 3 ++ + glib/gatomic.c | 48 ++++++++++--------- + glib/gatomic.h | 4 +- + glib/glibconfig.h.win32.in | 2 + + 6 files changed, 93 insertions(+), 54 deletions(-) + +commit c9b6c3c85ac8f870ff193ae75b2bd19a7a310ec9 +Author: Ryan Lortie +AuthorDate: Tue Oct 18 16:21:17 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 18 16:45:28 2011 -0400 + + gatomic: cast to the correct pointer sign + + In the fallback case of the g_atomic_int_ macros we had some (gint*) + casts that should have been (guint*) casts. + + glib/gatomic.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 4641d13770d4591ce85c5d8ffaf0484703666cc4 +Author: Mario Blättermann +AuthorDate: Tue Oct 18 22:28:23 2011 +0200 +Commit: Mario Blättermann +CommitDate: Tue Oct 18 22:28:23 2011 +0200 + + [l10n] Updated German translation + + po/de.po | 5958 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 2981 insertions(+), 2977 deletions(-) + +commit 915e2238c478737def2f8919204ee10d06ecb98a +Author: David Zeuthen +AuthorDate: Thu Oct 13 16:53:44 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Oct 18 14:29:18 2011 -0400 + + gio: Introduce get_sort_key() methods on GDrive, GVolume and GMount + + This is needed to implement efficient and predictable proxy volume + monitors, see + + https://bugzilla.gnome.org/show_bug.cgi?id=661711 + + for details. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 3 +++ + gio/gdrive.c | 25 +++++++++++++++++++++++++ + gio/gdrive.h | 5 +++++ + gio/gio.symbols | 3 +++ + gio/gmount.c | 25 +++++++++++++++++++++++++ + gio/gmount.h | 5 +++++ + gio/gvolume.c | 25 +++++++++++++++++++++++++ + gio/gvolume.h | 5 +++++ + 8 files changed, 96 insertions(+) + +commit 4a25d21bd08b7dcf38f781bf678ee8fffe817203 +Author: Javier Jardón +AuthorDate: Sun Oct 2 17:58:16 2011 +0100 +Commit: Javier Jardón +CommitDate: Tue Oct 18 17:12:33 2011 +0100 + + tests/gobject: Use G_VALUE_INIT + + tests/gobject/override.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 108480b7baad8d02b7b0f9729146a04ad09219de +Author: Javier Jardón +AuthorDate: Fri Sep 30 17:19:50 2011 +0100 +Commit: Javier Jardón +CommitDate: Tue Oct 18 17:12:33 2011 +0100 + + gobject: Use G_VALUE_INIT + + gobject/gbinding.c | 16 ++++++++-------- + gobject/gobject.c | 8 ++++---- + gobject/gparam.c | 4 ++-- + gobject/gsignal.c | 6 +++--- + gobject/gsourceclosure.c | 6 +++--- + gobject/gvaluetypes.c | 2 +- + gobject/tests/boxed.c | 26 +++++++++++++------------- + gobject/tests/enums.c | 4 ++-- + gobject/tests/ifaceproperties.c | 4 ++-- + gobject/tests/param.c | 12 ++++++------ + gobject/tests/reference.c | 2 +- + gobject/tests/valuearray.c | 2 +- + 12 files changed, 46 insertions(+), 46 deletions(-) + +commit 8d3250016dac9d43b2a2de6dacb670a9fbc88808 +Author: Javier Jardón +AuthorDate: Fri Sep 30 17:08:15 2011 +0100 +Commit: Javier Jardón +CommitDate: Tue Oct 18 17:12:33 2011 +0100 + + gio: Use G_VALUE_INIT + + gio/gasynchelper.c | 4 ++-- + gio/gcancellable.c | 4 ++-- + gio/gdbus-2.0/codegen/codegen.py | 6 +++--- + gio/gdbusnameowning.c | 6 +++--- + gio/gdbusnamewatching.c | 4 ++-- + gio/gpollableinputstream.c | 4 ++-- + gio/gsettings.c | 4 ++-- + gio/gsocket.c | 4 ++-- + 8 files changed, 18 insertions(+), 18 deletions(-) + +commit f07201c314e891354f236d7ec49a11700ce02da0 +Author: Sjoerd Simons +AuthorDate: Sun Oct 16 10:57:29 2011 +0100 +Commit: Simon McVittie +CommitDate: Tue Oct 18 13:18:09 2011 +0100 + + GDBusConnection: Fix race in /gdbus/connection/life-cycle + + GDBusConnection sets the closed flag in the worker thread, then + adds an + idle callback (which refs the Connection) to signal this in the main + thread. The tests session_bus_down doesn't spin the mainloop, so the + "closed" signal will always fire if iterating the mainloop later (and + drops the ref when doing so). But _is_closed can return TRUE even + before + signalling this, in which case the "closed" signal isn't fired and the + ref isn't dropped, causing the test to fail. + + Instead simply always wait for the closed signal, which is a good + thing + to check anyway and ensures the ref is closed. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661896 + Reviewed-by: Matthias Clasen + + gio/tests/gdbus-connection.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit cf3f1b026b13fe377057f6e1102eefaad1e24c72 +Author: Alexander Larsson +AuthorDate: Tue Oct 18 14:15:07 2011 +0200 +Commit: Alexander Larsson +CommitDate: Tue Oct 18 14:15:07 2011 +0200 + + Actually Don't define GLIB_COMPILATION in libgthread + + Last commit was wrong, fixing it up + + glib/gthread-win32.c | 9 +++++++-- + gthread/Makefile.am | 1 - + gthread/gthread-impl.c | 4 ++++ + 3 files changed, 11 insertions(+), 3 deletions(-) + +commit be770969e93f989d7165b240c4e7e5e6ac9c0587 +Author: Alexander Larsson +AuthorDate: Tue Oct 18 13:34:06 2011 +0200 +Commit: Alexander Larsson +CommitDate: Tue Oct 18 13:34:06 2011 +0200 + + Don't define GLIB_COMPILATION in libgthread + + This was turning all the GLIB_VARs in the glib headers into + dllexports on windows, causing all sort of nastiness. libgthread is + mostly empty now anyway, so we don't need any GLIB_COMPILATION like + flag. + + glib/gthread-win32.c | 9 ++------- + gthread/gthread-impl.c | 4 ---- + 2 files changed, 2 insertions(+), 11 deletions(-) + +commit 735420e54690d5971a0e258e12fff6ee79ae34a6 +Author: Matthias Clasen +AuthorDate: Mon Oct 17 17:01:36 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 17 17:01:36 2011 -0400 + + Fix an include guard mismatch + + Spotted by Colin Walters. + + glib/gcharset.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 52389bd01067284565b007bc156643d534282842 +Author: Alexander Larsson +AuthorDate: Mon Oct 17 23:00:29 2011 +0200 +Commit: Alexander Larsson +CommitDate: Mon Oct 17 23:00:29 2011 +0200 + + Fix up testcase broken due to g_thread_new API change + + gio/tests/win32-streams.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f3ac581713f7297b0bf33c77c47e9bf32961775f +Author: Chun-wei Fan +AuthorDate: Tue Oct 18 00:15:37 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Oct 18 01:01:02 2011 +0800 + + Move _glib_get_locale_dir to ggettext.c + + -Move _glib_get_locale_dir to ggettext.c, as Matthias suggested + -Made up for the headers that needed to be included in ggettext.c + to avoid + C4013 (implicit declaration of ...) errors/warnings + + glib/ggettext.c | 56 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/gutils.c | 50 -------------------------------------------------- + 2 files changed, 56 insertions(+), 50 deletions(-) + +commit 9973383bd05236272f28909db8f422f7a56b11ea +Author: Piotr Drąg +AuthorDate: Mon Oct 17 18:31:48 2011 +0200 +Commit: Piotr Drąg +CommitDate: Mon Oct 17 18:31:48 2011 +0200 + + Updated POTFILES.in + + po/POTFILES.in | 41 +++++++++++++++++++++-------------------- + 1 file changed, 21 insertions(+), 20 deletions(-) + +commit 32214583c361e1b0406a3e6c77c66d907f3f1126 +Author: Chun-wei Fan +AuthorDate: Mon Oct 17 14:54:50 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Oct 17 23:54:17 2011 +0800 + + Fix gio.symbols + + g_simple_action_get_parameter_type is now static, so this symbol + needs to + be removed from here... + + gio/gio.symbols | 1 - + 1 file changed, 1 deletion(-) + +commit b25177fc4f1aaa1daf27791982ecc5e001845d2c +Author: Chun-wei Fan +AuthorDate: Mon Oct 17 14:53:58 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Oct 17 23:54:05 2011 +0800 + + GLib: Add forgotten includes and build fixes + + -gcharset.c, genviron.c, gunicollate.c: Some headers were missed + in those + files that triggered C4013 warnings/errors (aka. implicit declaration + of ... in GCC). Make up for them here. + -gwin32.h: Only define g_win32_get_package_installation_directory/ + g_win32_get_package_installation_subdirectory as macros + (alias of g_win32_get_package_installation_directory_utf8/ + g_win32_get_package_installation_subdirectory_utf8) on Win64 (x64) as + g_win32_get_package_installation_directory/ + g_win32_get_package_installation_subdirectory have seperate existing + implmentations for Win32-this is a long-standing problem but was + covered- + up by G_DISABLE_DEPRECATED, which we are stopping to use as of + 2.31.0. + + glib/gcharset.c | 3 +++ + glib/genviron.c | 6 ++++++ + glib/gunicollate.c | 1 + + glib/gwin32.h | 2 ++ + 4 files changed, 12 insertions(+) + +commit e5fd0f5df6043887a985f922ee4a35b73585ca3e +Author: Ryan Lortie +AuthorDate: Mon Oct 17 10:54:50 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 17 10:55:02 2011 -0400 + + Revert "Bug 652827 - glib-2.29.8 no longer builds with mingw.org's + toolchain" + + This reverts commit 349212211247781e7bec43b95cb57dddc1d0e5b1. + + configure.ac | 12 +----------- + glib/gatomic.c | 2 +- + 2 files changed, 2 insertions(+), 12 deletions(-) + +commit 3a04f8796855777aa503f1be9ee90107d978cd76 +Author: Chun-wei Fan +AuthorDate: Mon Oct 17 17:47:00 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Oct 17 17:47:00 2011 +0800 + + Update VS property sheets + + Some new headers were added... + + build/win32/vs10/glib.props | 10 ++++++++++ + build/win32/vs9/glib.vsprops | 5 +++++ + 2 files changed, 15 insertions(+) + +commit e192f45a932b62edcd1d3e2315a5dff20747a346 +Author: Chun-wei Fan +AuthorDate: Mon Oct 17 17:18:20 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Oct 17 17:18:20 2011 +0800 + + glib/tests/thread.c: Add config guards + + Not all systems come with unistd.h and sys/time.h, so use config + guards + on them so that they are only included when available. + + glib/tests/thread.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 1bfa7e7e860feb9e825ad0a4ae340aca7afe51a6 +Author: Chun-wei Fan +AuthorDate: Mon Oct 17 16:40:44 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Oct 17 16:40:44 2011 +0800 + + Update VS property sheets + + gcache.h is now a deprecated header, so up the "install" part for it. + + build/win32/vs10/glib.props | 4 ++-- + build/win32/vs9/glib.vsprops | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 2f71118e785be41953765d048a7d03718a94e619 +Author: Matthias Clasen +AuthorDate: Mon Oct 17 02:14:18 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 17 02:14:39 2011 -0400 + + More include cleanups + + glib/gconvert.c | 2 -- + glib/grand.c | 1 - + glib/gstrfuncs.c | 1 - + glib/gthread-win32.c | 4 +--- + 4 files changed, 1 insertion(+), 7 deletions(-) + +commit eb125665d8ad11c22457b4ec5062ede6594b8d89 +Author: Chun-wei Fan +AuthorDate: Mon Oct 17 14:17:53 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Oct 17 14:18:35 2011 +0800 + + Update VS property sheets + + Stop using G_DISABLE_DEPRECATED as there are now warnings for usage of + deprecated APIs/items in GLib + + build/win32/vs10/glib.props | 2 +- + build/win32/vs9/glib.vsprops | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 0ec3c744c4f90d99b46658b39cab36a530904ab8 +Author: Matthias Clasen +AuthorDate: Mon Oct 17 01:59:35 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 17 01:59:35 2011 -0400 + + include cleanup + + glib/gutils.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit d9053e026c5b56a0aab2ca684de0929024181d10 +Author: Matthias Clasen +AuthorDate: Mon Oct 17 01:52:10 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 17 01:52:10 2011 -0400 + + Make things compile again + + glib/Makefile.am | 2 + + glib/glib.h | 1 + + glib/gstrfuncs.c | 308 + +------------------------------------------------------ + glib/gstrfuncs.h | 19 ---- + glib/gutils.c | 63 +----------- + 5 files changed, 5 insertions(+), 388 deletions(-) + +commit 08933846e49d14e48dded58b6237cbc0a7a9c371 +Author: Matthias Clasen +AuthorDate: Mon Oct 17 01:50:00 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 17 01:50:00 2011 -0400 + + Move gettext variations into their own files + + glib/ggettext.c | 402 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/ggettext.h | 59 +++++++++ + 2 files changed, 461 insertions(+) + +commit 67bf0083db329d02ad2e99a8f4586ebfdcba1dd2 +Author: Matthias Clasen +AuthorDate: Mon Oct 17 01:30:31 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 17 01:30:31 2011 -0400 + + Reshuffle some functions between gutils and gfileutils + + Move filename-related functions to gfileutils, and move + size formatting functions to gutils. + + glib/gfileutils.c | 709 + ++++++++++++++++++++++++++++++++++-------------------- + glib/gfileutils.h | 101 +++++--- + glib/gutils.c | 679 + +++++++++++++++++++-------------------------------- + glib/gutils.h | 60 +---- + 4 files changed, 779 insertions(+), 770 deletions(-) + +commit 23afdb119e05741e90d048b0d54077842de25720 +Author: Matthias Clasen +AuthorDate: Mon Oct 17 01:30:09 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 17 01:30:09 2011 -0400 + + include cleanup + + glib/gconvert.c | 1 + + 1 file changed, 1 insertion(+) + +commit f8a747130887ee1b48d31fe2a5b3480b121379d7 +Author: Matthias Clasen +AuthorDate: Mon Oct 17 01:11:56 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 17 01:11:56 2011 -0400 + + Trivial + + glib/genviron.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit fbe24cab21fbf85c5f52b3cb5967efe614194756 +Author: Matthias Clasen +AuthorDate: Mon Oct 17 00:33:54 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 17 00:39:43 2011 -0400 + + Reshuffle genviron.c + + Split win32 functions off into their own section, instead + of having large and unwieldy ifdef sections inside each function. + + Also move the compat versions of env functions over from gutils.c + + glib/genviron.c | 727 + ++++++++++++++++++++++++++++++-------------------------- + glib/gutils.c | 49 ---- + 2 files changed, 396 insertions(+), 380 deletions(-) + +commit b0ab7aba6bf2d70e0546f85091d76d9f83174ce8 +Author: Ryan Lortie +AuthorDate: Sun Oct 16 21:59:55 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 21:59:55 2011 -0400 + + push G_THREADS_MANDATORY over the cliff + + This was used as an optimisation for the macro hackery that used + to live + in gthread.h. If a particular library or program knew that it could + rely on thread support being enabled, it would allow for static + evaluation of conditionals in some of those macros. + + Since the macros are dead and thread support is now always-on, we can + get rid of this bit of legacy. + + gio/Makefile.am | 2 -- + glib/Makefile.am | 1 - + glib/deprecated/gthread.h | 6 +----- + gobject/Makefile.am | 2 -- + 4 files changed, 1 insertion(+), 10 deletions(-) + +commit b0760207197cb32dcc89190f6329a043670ecbd7 +Author: Ryan Lortie +AuthorDate: Sun Oct 16 21:53:03 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 21:53:03 2011 -0400 + + gobject/gio: some last missed statics/inclues + + gio/glib-compile-schemas.c | 2 +- + gobject/gparam.c | 2 +- + gobject/gvalue.c | 1 + + gobject/testgobject.c | 2 +- + 4 files changed, 4 insertions(+), 3 deletions(-) + +commit a6d9cf3380a3be9ea518227cba3c571726bb99c6 +Author: Ryan Lortie +AuthorDate: Sun Oct 16 21:50:26 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 21:50:26 2011 -0400 + + gthread/: fix up declarations + + g_thread_init() is now a deprecated API, so drop G_DISABLE_DEPRECATED + from the CFLAGS for gthread/. Add the missing declaration for + g_thread_init_with_errorcheck_mutexes() back to deprecated/gthread.h. + + glib/deprecated/gthread.h | 2 ++ + gthread/Makefile.am | 3 +-- + gthread/gthread-impl.c | 2 +- + 3 files changed, 4 insertions(+), 3 deletions(-) + +commit 3eec796b18e56351638cc6c0c03ab481618d0e29 +Author: Ryan Lortie +AuthorDate: Sun Oct 16 20:58:02 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 21:41:15 2011 -0400 + + Add private prototype for g_thread_init_glib() + + This function was never put in a header and was only used internally + from libgthread, but we should keep the symbol around to avoid + triggering any false-positives on ABI checkers. + + For -Wmissing-prototypes compatibility with this unusual case, + we should + add a private prototype in the .c file just before. + + glib/deprecated/gthread-deprecated.c | 1 + + 1 file changed, 1 insertion(+) + +commit 09429e2c820118918e6132d32884eb02203136d4 +Author: Ryan Lortie +AuthorDate: Sun Oct 16 21:24:45 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 21:41:15 2011 -0400 + + gio static fixups + + gio/gapplicationimpl-dbus.c | 2 +- + gio/giomodule.c | 2 +- + gio/gkeyfilesettingsbackend.c | 2 +- + gio/gnetworkaddress.c | 1 + + gio/gnetworkservice.c | 1 + + gio/gsettingsschema.c | 2 ++ + gio/gsimpleaction.c | 2 +- + gio/gsocketaddress.c | 1 + + gio/gsocketclient.c | 2 +- + gio/gsrvtarget.c | 2 +- + gio/gtlscertificate.c | 4 ++-- + 11 files changed, 13 insertions(+), 8 deletions(-) + +commit 740eacbfcacb4acdc09a5ef93cb2840d1648ce28 +Author: Ryan Lortie +AuthorDate: Sun Oct 16 21:17:10 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 21:41:15 2011 -0400 + + static and #include fixups in glib/ + + glib/gfileutils.c | 2 +- + glib/gmain.c | 2 +- + glib/gvariant-parser.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit 1b018a8bb2c4c508fe8e3996a31210d655b70d30 +Author: Ryan Lortie +AuthorDate: Sun Oct 16 21:13:22 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 21:41:15 2011 -0400 + + genviron: #include fixups + + glib/genviron.c | 2 ++ + glib/genviron.h | 2 ++ + 2 files changed, 4 insertions(+) + +commit 38e8ecd62a4e9dfcdf37bc31d8de6fb1fd39d6b5 +Author: Ryan Lortie +AuthorDate: Sun Oct 16 21:11:11 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 21:41:15 2011 -0400 + + more 'static' adding in testcases + + No dead code found this time... + + gio/tests/gapplication-example-cmdline2.c | 3 ++- + gio/tests/gdbus-example-export.c | 3 ++- + gio/tests/gsettings.c | 7 ++++--- + gio/tests/gtlsconsoleinteraction.c | 4 ++-- + gio/tests/io-stream.c | 1 + + gio/tests/socket-common.c | 2 +- + gio/tests/tls-interaction.c | 1 + + gobject/tests/binding.c | 2 ++ + gobject/tests/boxed.c | 1 + + gobject/tests/dynamictests.c | 5 ++++- + gobject/tests/ifaceproperties.c | 7 ++++--- + gobject/tests/properties.c | 1 + + gobject/tests/reference.c | 1 + + gobject/tests/signals.c | 4 ++-- + gobject/tests/threadtests.c | 7 +++++++ + 15 files changed, 35 insertions(+), 14 deletions(-) + +commit b264fccd23cfb678fbaba9fc7459220f5eef7e14 +Author: Ryan Lortie +AuthorDate: Sun Oct 16 21:10:23 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 21:41:15 2011 -0400 + + contexts test: don't use deprecated GCond wait API + + gio/tests/contexts.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit 3d93c44374964b5846aea61f32ecb294efe148db +Author: Ryan Lortie +AuthorDate: Sun Oct 16 20:57:40 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 21:41:15 2011 -0400 + + Mark some functions 'static' in glib/tests + + This has uncovered two unused testcases in option-context.c. They are + currently broken and require more investigation (which is probably why + they are unused). + + glib/tests/642026.c | 2 +- + glib/tests/collate.c | 4 +- + glib/tests/cond.c | 2 +- + glib/tests/logging.c | 8 ++-- + glib/tests/markup-subparser.c | 2 +- + glib/tests/option-context.c | 91 + ++++++++++++++++++++++--------------------- + glib/tests/sequence.c | 2 +- + glib/tests/slice.c | 2 +- + glib/tests/strfuncs.c | 2 +- + glib/tests/string.c | 2 +- + 10 files changed, 59 insertions(+), 58 deletions(-) + +commit 5f79db145d5caf5c16d254cba80cccfdb82e1abc +Author: OKANO Takayoshi +AuthorDate: Mon Oct 17 09:25:08 2011 +0900 +Commit: Jiro Matsuzawa +CommitDate: Mon Oct 17 09:26:01 2011 +0900 + + Updated Japanese translation + + po/ja.po | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit c3a1d832b8f783308f038bf2b821359c87fedcaf +Author: Ryan Lortie +AuthorDate: Sun Oct 16 19:21:35 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 19:23:28 2011 -0400 + + README: Add note about gobject->gthread situation + + README.in | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit 086d577b3dc7aa1509e95a875984682d9048aabc +Author: Ryan Lortie +AuthorDate: Sun Oct 16 19:17:52 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 19:17:52 2011 -0400 + + gobject.pc: remove dependency on gthread + + GObject no longer uses gthread, so libgthread should no longer be + included in the linker flags of programs built against GObject. + + gobject-2.0.pc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 306aa62ea5fa4d3a57bca419afcc159f9509b476 +Author: Ryan Lortie +AuthorDate: Sun Oct 16 19:14:18 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 19:14:18 2011 -0400 + + drop -uninstalled.pc files + + These were meant to provide the ability to use GLib directly out + of its + build tree but have a couple of rather serious limitations that + prevent + their serious use: + + - these files only worked with programs built using libtool + + - for non-trivial uses, other environment variables will need to be + setup to allow GLib to function properly + + - the system doesn't stack well when attempting to use multiple + libraries all uninstalled + + The jhbuild --prefix= style system works much better in every way, + so we + remove this old hack. + + Makefile.am | 9 +-------- + README.in | 2 ++ + configure.ac | 7 ------- + gio-2.0-uninstalled.pc.in | 6 ------ + gio-unix-2.0-uninstalled.pc.in | 6 ------ + glib-2.0-uninstalled.pc.in | 9 --------- + gmodule-2.0-uninstalled.pc.in | 8 -------- + gmodule-no-export-2.0-uninstalled.pc.in | 14 -------------- + gobject-2.0-uninstalled.pc.in | 7 ------- + gthread-2.0-uninstalled.pc.in | 6 ------ + 10 files changed, 3 insertions(+), 71 deletions(-) + +commit c5aa8390b27c6cb535251187f8d4f86da59730e9 +Author: Ryan Lortie +AuthorDate: Sun Oct 16 19:11:00 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 19:11:00 2011 -0400 + + gitignore + + gio/tests/.gitignore | 14 ++++++++------ + glib/tests/.gitignore | 13 +++++++++++++ + 2 files changed, 21 insertions(+), 6 deletions(-) + +commit a9a1c97904aeed96bcb248e16cb495e6907b7126 +Author: Ryan Lortie +AuthorDate: Sun Oct 16 19:08:59 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 19:08:59 2011 -0400 + + gthread: move test cases to glib/ + + configure.ac | 1 - + glib/tests/1bit-mutex.c | 157 +++++++++++++++++++++ + glib/tests/642026.c | 91 ++++++++++++ + glib/tests/Makefile.am | 46 +++++- + glib/tests/gwakeuptest.c | 272 + ++++++++++++++++++++++++++++++++++++ + glib/tests/spawn-multithreaded.c | 236 +++++++++++++++++++++++++++++++ + glib/tests/spawn-singlethread.c | 190 +++++++++++++++++++++++++ + glib/tests/test-spawn-echo.c | 39 ++++++ + gthread/Makefile.am | 3 - + gthread/tests/.gitignore | 11 -- + gthread/tests/1bit-mutex.c | 157 --------------------- + gthread/tests/642026.c | 91 ------------ + gthread/tests/Makefile.am | 52 ------- + gthread/tests/gwakeuptest.c | 272 + ------------------------------------ + gthread/tests/spawn-multithreaded.c | 236 ------------------------------- + gthread/tests/spawn-singlethread.c | 190 ------------------------- + gthread/tests/test-spawn-echo.c | 39 ------ + 17 files changed, 1029 insertions(+), 1054 deletions(-) + +commit fb4e120d88777affc4a8fbeb73312b1e810e2431 +Author: Ryan Lortie +AuthorDate: Sun Oct 16 19:04:19 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 19:04:19 2011 -0400 + + tests: merge gthread/ and glib/ atomic tests + + glib/tests/atomic.c | 60 +++++++++++++++++++++++++++++++++++++++- + gthread/tests/Makefile.am | 4 --- + gthread/tests/atomic.c | 70 + ----------------------------------------------- + 3 files changed, 59 insertions(+), 75 deletions(-) + +commit f5e869478221387f915bb619892d68d10744ff65 +Author: Ryan Lortie +AuthorDate: Sun Oct 16 19:01:55 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 16 19:01:55 2011 -0400 + + glib/tests/atomic: convert to proper gtester test + + glib/tests/atomic.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +commit 6c1d768f7bb4ced7d0f484fe9fe8ee2daef489e2 +Author: Matthias Clasen +AuthorDate: Sun Oct 16 18:43:22 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 16 18:43:22 2011 -0400 + + Also clean up includes + + glib/gconvert.c | 1 + + glib/gmessages.c | 3 ++- + glib/gunicode.h | 3 --- + glib/gutils.h | 4 ---- + 4 files changed, 3 insertions(+), 8 deletions(-) + +commit 0589f715e5462b6bfcadc044fe4bcf9bbaf62ccb +Author: Matthias Clasen +AuthorDate: Sun Oct 16 18:40:58 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 16 18:40:58 2011 -0400 + + Move charset and locale name functions to their own files + + They did not really belong into either gutils or gutf8. + + glib/Makefile.am | 6 +- + glib/gcharset.c | 589 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/gcharset.h | 40 ++++ + glib/glib.h | 1 + + glib/gutf8.c | 193 ------------------ + glib/gutils.c | 363 ---------------------------------- + 6 files changed, 634 insertions(+), 558 deletions(-) + +commit 86cc4b246da0896d7842d121bf5bc019741ba99b +Author: Matthias Clasen +AuthorDate: Sun Oct 16 17:37:29 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 16 17:37:29 2011 -0400 + + Add deprecation annotations to mem chunk apis + + glib/deprecated/gallocator.h | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +commit e7b4319d61495d742915770a7b6f4fc14c29db02 +Author: Matthias Clasen +AuthorDate: Sun Oct 16 17:01:26 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 16 17:01:26 2011 -0400 + + Move version APIs out of gutils + + Just another cleanup. + + glib/Makefile.am | 2 + + glib/glib.h | 1 + + glib/gutils.c | 93 ----------------------------------- + glib/gutils.h | 42 ---------------- + glib/gversion.c | 145 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/gversion.h | 78 ++++++++++++++++++++++++++++++ + 6 files changed, 226 insertions(+), 135 deletions(-) + +commit 45f221c32f7c88e487fe260eefb3be8d1c2443af +Author: Matthias Clasen +AuthorDate: Sun Oct 16 16:52:24 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 16 16:52:24 2011 -0400 + + Move GTrashStack out of gutils.[hc] + + Reducing the mess in gutils, and moving docs inline + at the same time. Double win. + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/trash_stack.sgml | 77 ---------------------- + glib/Makefile.am | 2 + + glib/glib.h | 1 + + glib/gslice.c | 1 + + glib/gtrashstack.c | 94 + +++++++++++++++++++++++++++ + glib/gtrashstack.h | 103 + ++++++++++++++++++++++++++++++ + glib/gutils.h | 61 ------------------ + 8 files changed, 202 insertions(+), 138 deletions(-) + +commit 6ab1c772705560f62b3f302ee0d396eed06eefb4 +Author: Matthias Clasen +AuthorDate: Sun Oct 16 16:23:18 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 16 16:24:20 2011 -0400 + + Pass correct data to fatal log handlers + + This was pointed out by John Ralls in bug 653052. + He also provided the test case. + + glib/gmessages.c | 2 +- + glib/tests/logging.c | 58 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 59 insertions(+), 1 deletion(-) + +commit 1435db48baff185660650d46992f1a290a803b9d +Author: Martin Pitt +AuthorDate: Wed Aug 17 08:57:15 2011 +0200 +Commit: Matthias Clasen +CommitDate: Sun Oct 16 16:09:33 2011 -0400 + + Clarify g_spawn_*() behaviour without full path + + Document the previously uncovered case of calling + g_spawn_async_with_pipes() + without a full path but no G_SPAWN_SEARCH_PATH. This runs programs + from the + current directory, which might be unexpected and even dangerous in + some corner + cases. + + https://bugzilla.gnome.org/show_bug.cgi?id=656621 + + glib/gspawn.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 8ff94df6325b54264cd2ea7b7b6701665b1014a9 +Author: Matthias Clasen +AuthorDate: Sun Oct 16 14:34:16 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 16 16:09:33 2011 -0400 + + Add a tests of some GVfs functions + + https://bugzilla.gnome.org/show_bug.cgi?id=656621 + + gio/tests/Makefile.am | 7 +++++-- + gio/tests/vfs.c | 55 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 60 insertions(+), 2 deletions(-) + +commit c41f6a0b7c90a51f7e195669083754e96c794d6a +Author: Jiro Matsuzawa +AuthorDate: Mon Oct 17 01:54:33 2011 +0900 +Commit: Jiro Matsuzawa +CommitDate: Mon Oct 17 01:55:37 2011 +0900 + + Updated Japanese translation + + po/ja.po | 218 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 122 insertions(+), 96 deletions(-) + +commit 0e68a7d06d5ca68253d1992a8147afc3ecd90460 +Author: Jiro Matsuzawa +AuthorDate: Sat Sep 17 11:30:01 2011 +0900 +Commit: Jiro Matsuzawa +CommitDate: Mon Oct 17 01:51:00 2011 +0900 + + Updated Japanese translation + + po/ja.po | 195 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 98 insertions(+), 97 deletions(-) + +commit 448be24cf38e90c0ba415cb37cbc0bae09666593 +Author: Matthias Clasen +AuthorDate: Sun Oct 16 00:08:42 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 16 00:08:42 2011 -0400 + + Add app lauch environment test + + gio/tests/appinfo.c | 31 +++++++++++++++++++++++++++++++ + 1 file changed, 31 insertions(+) + +commit cbb0b2a0ed4e5e219902fd0dbbff408ff0324381 +Author: Matthias Clasen +AuthorDate: Sat Oct 15 23:58:30 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 23:58:30 2011 -0400 + + Add g_get_codeset test + + glib/tests/utils.c | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +commit 1493285f1d4693b54020dd77bbbfd8a5086af6ae +Author: Matthias Clasen +AuthorDate: Sat Oct 15 23:58:18 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 23:58:18 2011 -0400 + + Add GAsyncQueue unit test + + glib/tests/Makefile.am | 3 + + glib/tests/asyncqueue.c | 182 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 185 insertions(+) + +commit d0bb1e0b0a3237f982a0ec234e7be877d4e223f2 +Author: Matthias Clasen +AuthorDate: Sat Oct 15 23:27:28 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 23:27:28 2011 -0400 + + Move g_get_codeset next to g_get_charset + + g_get_codeset is a close relatove to g_get_charset, and up to now + it lived a shadowy existence without any header presence. + + docs/reference/glib/glib-sections.txt | 1 + + glib/gunicode.h | 13 ++++--------- + glib/gutf8.c | 28 +++++++++++++++++++++++----- + glib/gutils.c | 18 ------------------ + 4 files changed, 28 insertions(+), 32 deletions(-) + +commit 976b0b72a477d64c9d4382de11b6db900ed9405f +Author: Matthias Clasen +AuthorDate: Sat Oct 15 20:06:32 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 20:06:32 2011 -0400 + + Include genviron.h where necessary + + glib/gasyncqueue.c | 1 + + glib/grand.c | 1 + + glib/gspawn.c | 1 + + 3 files changed, 3 insertions(+) + +commit 327e72f9fb9a44e9756dd037c2562701925a6a81 +Author: Matthias Clasen +AuthorDate: Sat Oct 15 19:39:14 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 19:39:14 2011 -0400 + + And fix the syntax, too + + glib/genviron.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit 7df9637f0f09a2eefaddb1a76f171dc3f20e3430 +Author: Matthias Clasen +AuthorDate: Sat Oct 15 19:38:10 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 19:38:10 2011 -0400 + + Forgotten file + + glib/genviron.h | 61 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 61 insertions(+) + +commit d4dfca21bb01c98fcf415f974edc63297a38b59c +Author: Matthias Clasen +AuthorDate: Sat Oct 15 18:23:07 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 18:23:07 2011 -0400 + + Drop unused copy of _g_getenv_nomalloc + + glib/genviron.c | 610 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 610 insertions(+) + +commit a7143a0e9f597916e3cfb7e3b59674f571e9cba6 +Author: Simon McVittie +AuthorDate: Thu Oct 13 17:39:03 2011 +0100 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 18:03:19 2011 -0400 + + GDBusConnection: warn that direct access to the stream is a bad idea + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=661679 + Signed-off-by: Simon McVittie + + gio/gdbusconnection.c | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit 70eff50f218e9bf34dafb97f50f0bc5da9356256 +Author: Torsten Schönfeld +AuthorDate: Tue Aug 16 19:11:43 2011 +0200 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 18:02:32 2011 -0400 + + Add two annotations to gio + + https://bugzilla.gnome.org/show_bug.cgi?id=656679 + + gio/gfile.c | 2 +- + gio/gfileinfo.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 5dcc502f914db3b57599e6740345b46292a979a4 +Author: Simon McVittie +AuthorDate: Tue Oct 4 10:14:35 2011 +0100 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 17:59:35 2011 -0400 + + Document that types are limited to 64 KiB + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=659916 + Signed-off-by: Simon McVittie + + gobject/gtype.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit 33a86fce6a157ec7a69fe21a157b27748cb286eb +Author: Kean Johnston +AuthorDate: Sat Oct 15 17:57:23 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 17:58:39 2011 -0400 + + GIOModule: Use G_SEARCHPATH_SEPARATOR_S instead of ":" + + https://bugzilla.gnome.org/show_bug.cgi?id=661257 + + gio/giomodule.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 94accc2d7891c8147ea5468828a346c716b06045 +Author: Giovanni Campagna +AuthorDate: Sat Oct 15 17:54:41 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 17:54:41 2011 -0400 + + GKeyFile: improve introspection annotations + + Ensure that all methods that take or return arrays are annotated + (including length). Mark ref, unref and free methods as (skip). + + https://bugzilla.gnome.org/show_bug.cgi?id=590808 + + glib/gkeyfile.c | 60 + ++++++++++++++++++++++++++++----------------------------- + 1 file changed, 30 insertions(+), 30 deletions(-) + +commit 96817746d999ce34b4fd3471b3c58d3a6be2dcbd +Author: Giovanni Campagna +AuthorDate: Sat Oct 15 17:51:25 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 17:51:25 2011 -0400 + + Turn GKeyFile into a boxed for introspection + + Using the new refcounting API, introduce a boxed type wrapping + GKeyFile and expose it introspection bindings in glib-types.h. + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gboxed.c | 2 ++ + gobject/glib-types.h | 10 ++++++++++ + gobject/gobject.symbols | 1 + + 4 files changed, 14 insertions(+) + +commit a57c9148cf6dde67c967b837d74faf92a12c3ca6 +Author: Christian Persch +AuthorDate: Mon May 25 15:07:27 2009 +0200 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 17:44:45 2011 -0400 + + GKeyFile: Add refcounting API + + Adds g_key_file_ref and g_key_file_unref, to be used by a future + GKeyFile boxed type for language bindings. + + Based on the patch by Christian Persch and Emmanuele Bassi. + + Author: Christian Persch + Signed-off-by: Johan Dahlin + Signed-off-by: Giovanni Campagna + + https://bugzilla.gnome.org/show_bug.cgi?id=590808 + + docs/reference/glib/glib-sections.txt | 2 ++ + glib/gkeyfile.c | 59 + ++++++++++++++++++++++++++++++++--- + glib/gkeyfile.h | 2 ++ + glib/glib.symbols | 2 ++ + 4 files changed, 60 insertions(+), 5 deletions(-) + +commit dfd75d2ead8c41f307f0daeb84aaa9e4bd923119 +Author: Matthias Clasen +AuthorDate: Sat Oct 15 17:31:47 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 17:31:47 2011 -0400 + + Add 'Since 2.32' indexes to gio and gobject docs + + docs/reference/gio/gio-docs.xml | 4 ++++ + docs/reference/gobject/gobject-docs.sgml | 4 ++++ + 2 files changed, 8 insertions(+) + +commit de834bed306565c0652050665eafff4dfcdf0d8b +Author: Dan Winship +AuthorDate: Sat Oct 15 16:59:59 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 17:30:55 2011 -0400 + + GAppLaunchContext: add environment-manipulating functions + + Add functions for manipulating the environment under which a + GAppLaunchContext will launch its children, to avoid thread-related + bugs with using setenv() directly. + + FIXME: win32 side isn't implemented yet + + https://bugzilla.gnome.org/show_bug.cgi?id=659326 + + docs/reference/gio/gio-sections.txt | 3 + + gio/gappinfo.c | 99 +++++++++++++++++++++++- + gio/gappinfo.h | 66 ++++++++-------- + gio/gdesktopappinfo.c | 145 + +++++++++++++++++++++--------------- + gio/gio.symbols | 3 + + gio/gwin32appinfo.c | 9 +++ + 6 files changed, 232 insertions(+), 93 deletions(-) + +commit 117e534091d7cf21ab48c56141a3340a15c74390 +Author: Matthias Clasen +AuthorDate: Sat Oct 15 16:50:23 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 17:00:56 2011 -0400 + + Misc doc formatting fixes + + docs/reference/glib/glib-sections.txt | 1 - + glib/gscanner.c | 9 ++++----- + glib/gthread.c | 16 +++++++--------- + glib/gthread.h | 2 +- + glib/gthreadpool.c | 4 ++-- + 5 files changed, 14 insertions(+), 18 deletions(-) + +commit 94c246e8e3816d05971e9a825cf15769b04e8098 +Author: Matthias Clasen +AuthorDate: Sat Oct 15 16:28:07 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 16:28:07 2011 -0400 + + Add tests for new g_environ_ functions + + glib/tests/environment.c | 62 + ++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 60 insertions(+), 2 deletions(-) + +commit 7a9987d35d568707df2c7c12e851623b46e9e63d +Author: Matthias Clasen +AuthorDate: Sat Oct 15 16:13:08 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 16:13:08 2011 -0400 + + Move environment-related functions into their own files + + gutils.[hc] is a bit of a grab bag, so lets start cleaning + things up by moving all the environment-related functions + into separate genviron.[hc] files. + + The private _g_getenv_nomalloc has been moved to its sole caller. + + glib/Makefile.am | 4 +- + glib/glib.h | 1 + + glib/gslice.c | 20 +- + glib/gutils.c | 591 + +------------------------------------------------------ + glib/gutils.h | 38 +--- + 5 files changed, 30 insertions(+), 624 deletions(-) + +commit 409d93148f2d95c2966f75fe0901edd1e06c99a9 +Author: Dan Winship +AuthorDate: Sat Oct 15 15:52:28 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 15:54:45 2011 -0400 + + gutils: Add functions for working with environment arrays + + When spawning a child process, it is not safe to call setenv() before + the fork() (because setenv() isn't thread-safe), but it's also not + safe to call it after the fork() (because it's not async-signal-safe). + So the only safe way to alter the environment for a child process from + a threaded program is to pass a fully-formed envp array to + exec*/g_spawn*/etc. + + So, add g_environ_getenv(), g_environ_setenv(), and + g_environ_unsetenv(), which act like their namesakes, but work on + arbitrary arrays rather than working directly on the environment. + + http://bugzilla.gnome.org/show_bug.cgi?id=659326 + + docs/reference/glib/glib-sections.txt | 3 + + glib/glib.symbols | 3 + + glib/gspawn.h | 36 ++++-- + glib/gutils.c | 204 + +++++++++++++++++++++++++++++----- + glib/gutils.h | 27 +++-- + 5 files changed, 225 insertions(+), 48 deletions(-) + +commit 5ff803d91f252bfeb4a9cfaf2f94ecdea6e6a687 +Author: Ryan Lortie +AuthorDate: Sat Oct 15 13:27:46 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sat Oct 15 13:27:46 2011 -0400 + + Add to the pitfalls: fork() and daemon() + + glib/gthread.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit ef6371ff746e618eabd301b237b4e4a620ca5e47 +Author: Ryan Lortie +AuthorDate: Sat Oct 15 11:03:07 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sat Oct 15 13:13:13 2011 -0400 + + tests/Makefile.am: remove unused LDFLAGS variable + + tests/Makefile.am | 1 - + 1 file changed, 1 deletion(-) + +commit 6651bd221e4d9316884b4fad3c3e9943695ab639 +Author: Matthias Clasen +AuthorDate: Sat Oct 15 13:04:20 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 13:04:20 2011 -0400 + + Expand thread docs a bit + + Add some discussion of pitfalls of threaded programming. + + glib/gthread.c | 43 ++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 38 insertions(+), 5 deletions(-) + +commit e4699af8eb384cac336a36db6b97722d021e1cbf +Author: Matthias Clasen +AuthorDate: Sat Oct 15 11:37:03 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 11:37:03 2011 -0400 + + Documentation tweaks + + glib/gthread.c | 66 + ++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 41 insertions(+), 25 deletions(-) + +commit 55654fc8adb1cb2f907aa0228631951860dc6dda +Author: Fran Dieguez +AuthorDate: Sat Oct 15 16:29:50 2011 +0200 +Commit: Fran Dieguez +CommitDate: Sat Oct 15 16:29:50 2011 +0200 + + Updaged Galician translations + + po/gl.po | 824 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 422 insertions(+), 402 deletions(-) + +commit 3fe3fdd75abb313fc43b58ebd4a71dcfe8bab32f +Author: Ryan Lortie +AuthorDate: Sat Oct 15 09:48:42 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sat Oct 15 09:48:42 2011 -0400 + + Check for "our" threads in some places + + Don't allow g_thread_join() to be called on or g_thread_exit() to be + called from within threads that were not created by GLib. Document + this. + + glib/gthread.c | 20 +++++++++++++++++--- + 1 file changed, 17 insertions(+), 3 deletions(-) + +commit 11f3684b715ef35dd97ad108c7116260c7c4cdc2 +Author: Ryan Lortie +AuthorDate: Sat Oct 15 09:48:22 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sat Oct 15 09:48:22 2011 -0400 + + gtk-doc g_thread_ref() and g_thread_unref() + + glib/gthread.c | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +commit e75e9c30446157b52013644fdc5fd406733027b9 +Author: Ryan Lortie +AuthorDate: Sat Oct 15 09:48:10 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sat Oct 15 09:48:10 2011 -0400 + + Rename g_thread_try to g_thread_try_new + + docs/reference/glib/glib-sections.txt | 2 +- + glib/glib.symbols | 2 +- + glib/gthread.c | 18 +++++++++--------- + glib/gthread.h | 2 +- + glib/gthreadpool.c | 2 +- + glib/tests/thread.c | 4 ++-- + 6 files changed, 15 insertions(+), 15 deletions(-) + +commit 4417e77f17902e8a4d782979b187f23f6b86bf9e +Author: Matthias Clasen +AuthorDate: Sat Oct 15 00:56:08 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 00:56:08 2011 -0400 + + Add atomic test to TEST_PROGS + + glib/tests/Makefile.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 482bb387484c3febb6f7b01326cb6ab66d900f91 +Author: Matthias Clasen +AuthorDate: Sat Oct 15 00:26:02 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 00:26:02 2011 -0400 + + Documentation additions + + glib/deprecated/gthread-deprecated.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 8bc8cd7aa05900dcfad943b91c3720caa7b611ee +Author: Matthias Clasen +AuthorDate: Sat Oct 15 00:09:20 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 15 00:09:20 2011 -0400 + + Improve test coverage + + glib/tests/Makefile.am | 3 +++ + glib/tests/mainloop.c | 58 + ++++++++++++++++++++++++++++++++++++++++++++++++-- + glib/tests/strfuncs.c | 15 +++++++++++++ + 3 files changed, 74 insertions(+), 2 deletions(-) + +commit 52321def8f187eb1586c8989c407b473e19cf2e6 +Author: Matthias Clasen +AuthorDate: Fri Oct 14 23:20:06 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Oct 14 23:20:06 2011 -0400 + + Add a test involving g_thread_ref/unref + + Also, fix the resource-limit test to properly unset RLIMIT_NPROC. + + glib/tests/thread.c | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +commit 81431fa5b8093ea15533a41cd46c5569941fe99a +Author: Matthias Clasen +AuthorDate: Fri Oct 14 23:12:06 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Oct 14 23:12:06 2011 -0400 + + Add g_thread_try to the docs + + docs/reference/glib/glib-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit d000bf67f70f83bd37ae078b38cf83ee7d3c6447 +Author: Matthias Clasen +AuthorDate: Fri Oct 14 23:01:05 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Oct 14 23:01:05 2011 -0400 + + Update doc lists + + docs/reference/glib/glib-sections.txt | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 5ddcc284e801a84a455bfecca18dbc68dd91439b +Author: Matthias Clasen +AuthorDate: Fri Oct 14 23:00:17 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Oct 14 23:00:17 2011 -0400 + + Minor doc clarifications + + glib/gthread.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +commit a6da2b9ff91f0b8782a243e342e17a0ace415c11 +Author: Ryan Lortie +AuthorDate: Fri Oct 14 21:52:36 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 14 21:52:36 2011 -0400 + + Mention thread API changes in README + + README.in | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +commit 4359cbd810e29f964aae16fb186d2ad2fe331189 +Author: Ryan Lortie +AuthorDate: Fri Oct 14 21:43:51 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 14 21:48:20 2011 -0400 + + I read the news today, oh boy... + + NEWS | 201 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 201 insertions(+) + +commit 7ab25865f229ad8d98a067b590319bfdd988e50e +Author: Ryan Lortie +AuthorDate: Fri Oct 14 19:41:08 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 14 20:01:22 2011 -0400 + + Stop checking for fork() across GMainContext + + 01ed78d525cf2f8769022e27cc2573ec7ba123b3 introduced assertion + checks for + creating a main context, forking, and attempting to use the main + context + from the child side of the fork. + + Some code (such as gnome-keyring-daemon) daemonise after calling + GMainContext. That's probably still mostly safe since we still only + have one side of the fork touching the context afterwards. + + This use case is still troubling, however, since if any worker threads + have been created at the time of the fork(), we could end up in the + classic situation of leaving some mutexes in a locked state when the + other threads disappear from the copy of the image that the child + gets. + + This will require some deeper thinking... + + glib/gmain.c | 14 -------------- + 1 file changed, 14 deletions(-) + +commit 51773c6c64431c03242a6f3d12d44f99282c815c +Author: Ryan Lortie +AuthorDate: Fri Oct 14 13:02:58 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 14 20:01:22 2011 -0400 + + Mask all signals in GLib worker thread + + Some code using GLib (gnome-keyring-daemon, for example) assumes that + they can catch signals by masking them out in the main thread and + calling sigwait() from a worker. + + The problem is that our new worker thread catches the signals before + sigwait() has a chance and the default action occurs (typically + resulting in program termination). + + If we mask all the signals in our worker, then this can't happen. + + docs/reference/glib/tmpl/macros_misc.sgml | 15 +++++++++++++++ + glib/gmain.c | 11 +++++++++++ + 2 files changed, 26 insertions(+) + +commit 1ed88f0615d1be4d629f3f1933ec5b249cb6429e +Author: Florian Müllner +AuthorDate: Thu Oct 13 22:33:21 2011 +0200 +Commit: Florian Müllner +CommitDate: Fri Oct 14 23:30:21 2011 +0200 + + desktop-app-info: Add support for X-GNOME-Keywords + + With search gaining traction as being the preferred way to locate + applications, the existing .desktop file fields meant for browsing + often produce insufficient results. + gnome-control-center introduced a custom X-GNOME-Keywords field for + that purpose, which we plan to support in gnome-shell as well. + + https://bugzilla.gnome.org/show_bug.cgi?id=661763 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdesktopappinfo.c | 21 +++++++++++++++++++++ + gio/gdesktopappinfo.h | 1 + + gio/gio.symbols | 1 + + 4 files changed, 24 insertions(+) + +commit 14e3b128237279d895128e4d611cd12c604a67d4 +Author: Ryan Lortie +AuthorDate: Fri Oct 14 00:00:14 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 14 00:00:14 2011 -0400 + + g_cond_timed_wait: support NULL time parameter + + It was undocumented, but this used to mean "wait forever". Looks like + we have some uses of this internally and there may be others in the + wild... + + glib/deprecated/gthread-deprecated.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 4033c616ff23eb1e647a0b0cd13ac54f28e1242b +Author: Ryan Lortie +AuthorDate: Thu Oct 13 23:24:23 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 13 23:44:17 2011 -0400 + + GCond: use monotonic time for timed waits + + Switch GCond to using monotonic time for timed waits by introducing a + new API based on monotonic time in a gint64: g_cond_wait_until(). + + Deprecate the old API based on wallclock time in a GTimeVal. + + Fix up the gtk-doc for GCond while we're at it: update the examples to + use static-allocated GCond and GMutex and clarify some things a bit. + Also explain the rationale behind using an absolute time instead of a + relative time. + + docs/reference/glib/glib-sections.txt | 2 +- + glib/deprecated/gthread-deprecated.c | 46 +++++++++++ + glib/deprecated/gthread.h | 12 ++- + glib/glib.symbols | 2 +- + glib/gthread-posix.c | 148 + ++++++++++++++++++---------------- + glib/gthread-win32.c | 30 +------ + glib/gthread.c | 42 ++++++---- + glib/gthread.h | 5 +- + 8 files changed, 167 insertions(+), 120 deletions(-) + +commit fd382156b80a0ba848d6de7e009337fdb32221d9 +Author: Ryan Lortie +AuthorDate: Thu Oct 13 10:51:35 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 13 10:51:35 2011 -0400 + + tests: disable deprecation warnings for tests + + We need to test deprecated functions, so don't warn us for doing so. + + tests/Makefile.am | 5 +++-- + tests/gobject/Makefile.am | 1 + + tests/refcount/Makefile.am | 1 + + 3 files changed, 5 insertions(+), 2 deletions(-) + +commit 3ebdb4d46a97790e0d93db3e2411b44e46da0159 +Author: Ryan Lortie +AuthorDate: Thu Oct 13 09:14:57 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 13 09:14:57 2011 -0400 + + gutils: stop using GStaticPrivate + + This was our last internal use. + + glib/gutils.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 62fe0532685a592c760d98c791379dea4d79fbe1 +Author: Ryan Lortie +AuthorDate: Thu Oct 13 09:00:54 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 13 09:00:54 2011 -0400 + + Revert "make struct _GThread private" + + This reverts commit d904612100120d12126f1a6623a106d8a5b02fa6. + + glibmm touches the contents of GThread, so this broke their build. + + glib/deprecated/gthread.h | 9 +++++++++ + glib/gthreadprivate.h | 9 --------- + 2 files changed, 9 insertions(+), 9 deletions(-) + +commit d904612100120d12126f1a6623a106d8a5b02fa6 +Author: Ryan Lortie +AuthorDate: Thu Oct 13 01:24:16 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 13 01:34:08 2011 -0400 + + make struct _GThread private + + Hide the definition of struct _GThread in gthreadprivate.h for now. + + This is possibly an API break -- although the structure contents were + undocumented and it was not safe to access them in a meaningful way, + someone may have tried to do it anyway. We'll leave it here for + a while + to see if it causes any problems. + + Avoid merging its contents with GRealThread for now, just incase + we need + to expose it again. + + glib/deprecated/gthread.h | 9 --------- + glib/gthreadprivate.h | 9 +++++++++ + 2 files changed, 9 insertions(+), 9 deletions(-) + +commit b1cc2579c199c6568e1bf5cef1aab7633f99824f +Author: Ryan Lortie +AuthorDate: Thu Oct 13 01:22:51 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 13 01:22:51 2011 -0400 + + tidy up gthreadprivate.h + + Remove some unused includes, too. + + glib/deprecated/gthread-deprecated.c | 1 + + glib/gthreadprivate.h | 40 + +++++++++++++++--------------------- + 2 files changed, 18 insertions(+), 23 deletions(-) + +commit 332f74a2fc40da5d8f9313020468ed27e56b2b14 +Author: Ryan Lortie +AuthorDate: Thu Oct 13 01:17:36 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 13 01:17:36 2011 -0400 + + drop g_thread_new_full() + + We'll hold out on this until someone has a really convincing + reason for + why they need to control the stack size. + + If we do decide to add it back, it should probably have a name like + _new_with_stack_size(), not _full(). + + glib/deprecated/gthread-deprecated.c | 2 +- + glib/deprecated/gthread.h | 2 +- + glib/glib.symbols | 1 - + glib/gthread.c | 51 + ++++-------------------------------- + glib/gthread.h | 5 ---- + glib/tests/thread.c | 6 ++--- + 6 files changed, 10 insertions(+), 57 deletions(-) + +commit 430c5635f245ca485f09035f1b6c3a59dd69758c +Author: Ryan Lortie +AuthorDate: Thu Oct 13 01:00:57 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 13 01:00:57 2011 -0400 + + g_thread_new: never fail + + Remove the GError argument from g_thread_new() and abort on failure. + Introduce g_thread_try() for those who want to handle failure. + + gio/gdbusprivate.c | 5 +---- + gio/tests/contexts.c | 2 +- + gio/tests/gdbus-export.c | 7 +------ + gio/tests/gdbus-peer.c | 14 ++++--------- + gio/tests/gdbus-proxy-threads.c | 4 +--- + gio/tests/gdbus-test-codegen.c | 3 +-- + gio/tests/gdbus-threading.c | 24 ++++------------------ + gio/tests/resolver.c | 4 +--- + gio/tests/send-data.c | 4 +--- + gio/tests/socket-client.c | 4 +--- + gio/tests/socket-server.c | 4 +--- + gio/tests/socket.c | 3 +-- + gio/tests/tls-interaction.c | 3 +-- + gio/tests/unix-streams.c | 4 ++-- + glib/glib.symbols | 1 + + glib/gmain.c | 6 +----- + glib/gthread.c | 40 + +++++++++++++++++++++++++++++++++---- + glib/gthread.h | 3 +++ + glib/gthreadpool.c | 2 +- + glib/tests/once.c | 2 +- + glib/tests/thread.c | 6 +++--- + gobject/tests/dynamictests.c | 2 +- + gthread/tests/1bit-mutex.c | 3 +-- + gthread/tests/atomic.c | 2 +- + gthread/tests/gwakeuptest.c | 2 +- + gthread/tests/spawn-multithreaded.c | 6 ++---- + 26 files changed, 73 insertions(+), 87 deletions(-) + +commit 015f4b4513279c4be40c03121473ffcea347ed84 +Author: Ryan Lortie +AuthorDate: Thu Oct 13 00:43:33 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 13 00:43:33 2011 -0400 + + thread: nuke the concept of 'joinable' + + And remove the 'joinable' argument from g_thread_new() and + g_thread_new_full(). + + Change the wording in the docs. Clarify expectations for + (deprecated) g_thread_create(). + + gio/gdbusprivate.c | 1 - + gio/tests/contexts.c | 2 +- + gio/tests/gdbus-export.c | 1 - + gio/tests/gdbus-peer.c | 4 --- + gio/tests/gdbus-proxy-threads.c | 2 +- + gio/tests/gdbus-test-codegen.c | 1 - + gio/tests/gdbus-threading.c | 4 --- + gio/tests/resolver.c | 8 +++++- + gio/tests/send-data.c | 6 ++++- + gio/tests/socket-client.c | 6 ++++- + gio/tests/socket-server.c | 6 ++++- + gio/tests/socket.c | 2 +- + gio/tests/tls-interaction.c | 2 +- + gio/tests/unix-streams.c | 4 +-- + glib/deprecated/gthread-deprecated.c | 24 ++++++++++++------ + glib/gmain.c | 2 +- + glib/gthread.c | 48 + +++++++++++------------------------- + glib/gthread.h | 2 -- + glib/gthreadpool.c | 13 +++++----- + glib/gthreadprivate.h | 14 +++++------ + glib/tests/once.c | 2 +- + glib/tests/thread.c | 12 ++++----- + gobject/tests/dynamictests.c | 2 +- + gthread/tests/1bit-mutex.c | 4 +-- + gthread/tests/atomic.c | 2 +- + gthread/tests/gwakeuptest.c | 2 +- + gthread/tests/spawn-multithreaded.c | 3 +-- + 27 files changed, 87 insertions(+), 92 deletions(-) + +commit b0e73ca390d0f22baccc3636dd4d2e8e9cb0f58f +Author: Ryan Lortie +AuthorDate: Thu Oct 13 00:29:04 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 13 00:29:04 2011 -0400 + + GThread: make refcounting public + + glib/glib.symbols | 2 ++ + glib/gthread.c | 12 +++++++++++- + glib/gthread.h | 2 ++ + 3 files changed, 15 insertions(+), 1 deletion(-) + +commit 62be9365d9641073185c28c8f0a8fe06fb9a92e0 +Author: Ryan Lortie +AuthorDate: Thu Oct 13 00:18:17 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 13 00:18:17 2011 -0400 + + thread: simplify 'free' process + + GThread is freed using some very slightly confusing logic: if + the thread + was created 'joinable', then the structure is freed after the join() + call succeeds (since we know the thread has exited). If the + thread was + not created 'joinable' then the free is when the thread quits + (since we + know 'join' will not be called later). + + Move to a straight ref-counting system: 1 ref owned by the thread + and 1 + extra ref if the thread is joinable. Both thread quit and joining + will + decrease the refcount by 1. + + glib/gthread.c | 40 ++++++++++++++++++---------------------- + glib/gthreadprivate.h | 1 + + 2 files changed, 19 insertions(+), 22 deletions(-) + +commit becb4b820f84badac9eaee4e123c8a0ef41a9ba3 +Author: Ryan Lortie +AuthorDate: Thu Oct 13 00:01:28 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 13 00:01:28 2011 -0400 + + remove 'joinable' parameter to backends + + Both backends are now oblivious to the concept of joinability, + so don't + bother passing the parameter. + + glib/gthread-posix.c | 1 - + glib/gthread-win32.c | 1 - + glib/gthread.c | 2 +- + glib/gthreadprivate.h | 1 - + 4 files changed, 1 insertion(+), 4 deletions(-) + +commit dbf20d585fd53c612a1dd8ef07275d2affcf7fc0 +Author: Ryan Lortie +AuthorDate: Wed Oct 12 23:40:02 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 23:40:02 2011 -0400 + + posix threads: joinable tweaks + + Make the POSIX backend a little bit more like the win32 one in + terms of + how we deal with joinability. + + Calling g_system_thread_join() is now optional, and + g_system_thread_wait() can be safely called by multiple threads. + + There is no longer any internal concept of joinability. + + glib/gthread-posix.c | 24 +++++++++++++++++++----- + 1 file changed, 19 insertions(+), 5 deletions(-) + +commit f970dfc73471f2108bc21c10e4714eafea70315c +Author: Ryan Lortie +AuthorDate: Wed Oct 12 23:25:12 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 23:25:12 2011 -0400 + + tests: don't #include on win32 + + glib/tests/thread.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 45736d33bb0a855cfa1aa07453c7af0d26996e9b +Author: Ryan Lortie +AuthorDate: Wed Oct 12 23:22:31 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 23:22:31 2011 -0400 + + win32 threads: simplify + + Merge the GThreadData with the GThreadWin32 struct. Drop the + extra TLS + variable. + + Close the handle on _free(), which means that there is no leak if + g_system_thread_join() isn't called. + + Remove all internal concept of joinability. + + glib/gthread-win32.c | 57 + +++++++++------------------------------------------- + 1 file changed, 9 insertions(+), 48 deletions(-) + +commit dfd466979be8ab93d7c569c3e5199a02d03671e8 +Author: Ryan Lortie +AuthorDate: Wed Oct 12 23:16:49 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 23:19:06 2011 -0400 + + Only g_system_thread_free() our own threads + + Keep track of if we created a thread for ourselves or if the GThread* + was allocated in response to g_thread_self() on a previously-unknown + thread. + + Only call g_system_thread_free() in the first case. + + glib/gthread.c | 21 +++++++++++++-------- + glib/gthreadprivate.h | 2 ++ + 2 files changed, 15 insertions(+), 8 deletions(-) + +commit a5800ef336661e51db019d7bc4b98b184b06ba86 +Author: Ryan Lortie +AuthorDate: Wed Oct 12 23:04:15 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 23:04:15 2011 -0400 + + Finish killing off GSystemThread + + configure.ac | 14 -------------- + glib/deprecated/gthread.h | 13 +++++++++++-- + glib/glibconfig.h.win32.in | 16 ---------------- + glib/gthreadprivate.h | 1 - + 4 files changed, 11 insertions(+), 33 deletions(-) + +commit e0c9757b9b0d7074923f96716adb3bff07b32349 +Author: Ryan Lortie +AuthorDate: Wed Oct 12 22:53:52 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 22:53:52 2011 -0400 + + win32 threads: use our own data, not system_thread + + Stop using the generic system_thread field in GRealThread. + Use our own + pointer instead. + + glib/gthread-win32.c | 24 +++++++++++++++++------- + 1 file changed, 17 insertions(+), 7 deletions(-) + +commit 67e28068e14428afe8335a1503ea7d734419326d +Author: Ryan Lortie +AuthorDate: Wed Oct 12 22:49:39 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 22:49:39 2011 -0400 + + win32: fix function name clash + + glib/gthread-win32.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2010f7f95554df5654e6ee626f76189a0712dbfe +Author: Ryan Lortie +AuthorDate: Wed Oct 12 22:40:37 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 22:43:22 2011 -0400 + + posix threads: use our own system_thread + + Wrap GRealThread in a GThreadPosix that includes its own pthread_t + field + called "system_thread" and use that instead of the generic field in + GRealThread. + + glib/gthread-posix.c | 24 +++++++++++++++++------- + 1 file changed, 17 insertions(+), 7 deletions(-) + +commit 2f5486f02040b0d5cfc67eb97bd037a0ffd86635 +Author: Ryan Lortie +AuthorDate: Wed Oct 12 22:35:35 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 22:43:22 2011 -0400 + + thread creation: Simplify error handling + + Instead of always returning non-NULL and finding out about errors via + the GError*, return NULL from the backend in the event of an error. + + glib/gthread-posix.c | 5 +++-- + glib/gthread-win32.c | 3 ++- + glib/gthread.c | 23 +++++++++-------------- + 3 files changed, 14 insertions(+), 17 deletions(-) + +commit e14a3746db8c9979b3d9840602be5f79af501605 +Author: Ryan Lortie +AuthorDate: Wed Oct 12 22:29:13 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 22:43:22 2011 -0400 + + Combine g_sytem_thread_{new,create}() + + glib/gthread-posix.c | 24 ++++++++++-------------- + glib/gthread-win32.c | 25 ++++++++++--------------- + glib/gthread.c | 11 ++++------- + glib/gthreadprivate.h | 12 +++++------- + 4 files changed, 29 insertions(+), 43 deletions(-) + +commit a3f82c847f8f9dc7931bc9c81f95205e2178ab49 +Author: Ryan Lortie +AuthorDate: Wed Oct 12 22:23:12 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 22:43:22 2011 -0400 + + g_system_thread_create: drop 'data' arg + + Since it's now always the same as the 'thread' arg. + + glib/gthread-posix.c | 3 +-- + glib/gthread-win32.c | 3 +-- + glib/gthread.c | 2 +- + glib/gthreadprivate.h | 1 - + 4 files changed, 3 insertions(+), 6 deletions(-) + +commit 3237eaf5d527ecccae51b490d9cfbbf7e6b8538c +Author: Ryan Lortie +AuthorDate: Wed Oct 12 22:19:28 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 22:43:22 2011 -0400 + + g_system_thread_create: SystemThread -> RealThread + + Just like g_system_thread_wait(). + + glib/gthread-posix.c | 4 ++-- + glib/gthread-win32.c | 4 ++-- + glib/gthread.c | 2 +- + glib/gthreadprivate.h | 2 +- + 4 files changed, 6 insertions(+), 6 deletions(-) + +commit 6613b2f8fdc9d7422b124b69231c3f4b93c744c3 +Author: Matthias Clasen +AuthorDate: Wed Oct 12 22:29:18 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 12 22:29:53 2011 -0400 + + Move more docs inline + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/messages.sgml | 300 + --------------------------------- + glib/gmessages.c | 268 + +++++++++++++++++++++++++++++ + 3 files changed, 269 insertions(+), 300 deletions(-) + +commit dc3727cc5f4f4c9939e010722ea28e152cf9b324 +Author: Ryan Lortie +AuthorDate: Wed Oct 12 22:15:46 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 22:15:46 2011 -0400 + + g_system_thread_join: rename to _wait() + + glib/gthread-posix.c | 2 +- + glib/gthread-win32.c | 2 +- + glib/gthread.c | 2 +- + glib/gthreadprivate.h | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +commit 4bb968e3358db98a4ad41ce7e72cf62f4458053d +Author: Ryan Lortie +AuthorDate: Wed Oct 12 22:14:38 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 22:14:38 2011 -0400 + + g_system_thread_join: take GRealThread * + + Make g_system_thread_join take the GRealThread* instead of a + GSystemThread. + + glib/gthread-posix.c | 4 ++-- + glib/gthread-win32.c | 4 ++-- + glib/gthread.c | 2 +- + glib/gthreadprivate.h | 3 ++- + 4 files changed, 7 insertions(+), 6 deletions(-) + +commit e064c9bfeca33b59627e7e1ee43d805713fde280 +Author: Ryan Lortie +AuthorDate: Wed Oct 12 22:03:14 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 22:04:39 2011 -0400 + + thread: delegate allocation of GThread to backends + + Add g_system_thread_new() and g_system_thread_free(), implemented with + GSlice. Use those instead of g_new() and g_free(). + + Presently, the backends are both doing the same thing. This will + change + soon. + + glib/gthread-posix.c | 12 ++++++++++++ + glib/gthread-win32.c | 12 ++++++++++++ + glib/gthread.c | 8 ++++---- + glib/gthreadprivate.h | 5 +++++ + 4 files changed, 33 insertions(+), 4 deletions(-) + +commit 75ea14e885322ea1241315e070b2cdd68645e267 +Author: Matthias Clasen +AuthorDate: Wed Oct 12 21:48:34 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 12 21:49:44 2011 -0400 + + Move GScanner docs inline + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/scanner.sgml | 607 + ---------------------------------- + glib/gscanner.c | 472 +++++++++++++++++++++++++- + 3 files changed, 471 insertions(+), 609 deletions(-) + +commit d537726ded76eb470a78d41418579b8652c4ae8b +Author: Ryan Lortie +AuthorDate: Wed Oct 12 21:47:25 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 21:48:02 2011 -0400 + + thread: stop sharing g_once_mutex + + Unrelated code shouldn't be sharing the same mutex for no good + reason -- + particularly not across a file boundary. + + glib/deprecated/gthread-deprecated.c | 9 +++++---- + glib/gthread.c | 2 +- + glib/gthreadprivate.h | 2 -- + 3 files changed, 6 insertions(+), 7 deletions(-) + +commit 8cff9c57b1cbb443aa4063d8624af8a7bb392b75 +Author: Ryan Lortie +AuthorDate: Wed Oct 12 21:44:07 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 21:48:02 2011 -0400 + + thread: drop thread setup function hackery + + Use a custom proxy function for the deprecated case instead. + + Now GRealThread has strictly zero members dedicated to deprecated + functionality. + + glib/deprecated/gthread-deprecated.c | 15 +++++++++++++-- + glib/gthread.c | 17 ++++++----------- + glib/gthreadprivate.h | 7 ++++--- + 3 files changed, 23 insertions(+), 16 deletions(-) + +commit 2da83bbd36efd4adb1f4c036fe4793befbb8d120 +Author: Matthias Clasen +AuthorDate: Wed Oct 12 19:55:02 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 12 19:55:02 2011 -0400 + + Deprecate GCache + + Ryan said it would be 'deprecated soon in GLib', when he removed + the use of this in GTK+. That was a year ago, so its about time + we act on it. + + docs/reference/glib/glib-docs.sgml | 2 +- + glib/Makefile.am | 4 +- + glib/deprecated/gcache.c | 345 + +++++++++++++++++++++++++++++++++++++ + glib/deprecated/gcache.h | 73 ++++++++ + glib/gcache.c | 331 + ----------------------------------- + glib/gcache.h | 70 -------- + glib/glib.h | 2 +- + 7 files changed, 422 insertions(+), 405 deletions(-) + +commit 39ae59c47e2fbed30da725041b4cad552bea82c7 +Author: Ryan Lortie +AuthorDate: Wed Oct 12 18:35:45 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 18:35:45 2011 -0400 + + thread: Delete g_system_thread_self() + + It's no longer used for anything at all. + + glib/gthread-posix.c | 6 ------ + glib/gthread-win32.c | 23 ----------------------- + glib/gthreadprivate.h | 1 - + 3 files changed, 30 deletions(-) + +commit a90a4b967fde1c2d7c7d6d978a797731adb25057 +Author: Ryan Lortie +AuthorDate: Wed Oct 12 18:33:07 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 18:33:07 2011 -0400 + + thread: reduce use of system_thread + + The use of system_thread is now limited to joining. We don't do that + for threads that we didn't create for ourselves, so we don't need to + call g_system_thread_self() to fill in system_thread for those. + + glib/gthread.c | 2 -- + 1 file changed, 2 deletions(-) + +commit b7f05063710ff5bfd0e7f3722687eb63c0709ac3 +Author: Ryan Lortie +AuthorDate: Wed Oct 12 18:27:06 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 18:27:06 2011 -0400 + + thread: hide g_static_rec_mutex_get_rec_mutex_impl + + Unlike with GStaticMutex, this function was never part of the pre-2.32 + ABI, so we should keep it tucked in. + + glib/deprecated/gthread-deprecated.c | 2 +- + glib/gconvert.c | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 1f34ef4117559f268257d902dd48ea91b3d4993e +Author: Ryan Lortie +AuthorDate: Wed Oct 12 18:25:40 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 18:25:40 2011 -0400 + + missed from last commit + + glib/gthreadprivate.h | 2 -- + 1 file changed, 2 deletions(-) + +commit 47e20ed3ac5206c8aa83f7d307d9802328eed05f +Author: Ryan Lortie +AuthorDate: Wed Oct 12 18:24:48 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 18:24:48 2011 -0400 + + thread: remove GSystemThread assign/equal + + These are no longer in use. + + glib/gthread-posix.c | 7 ------- + glib/gthread-win32.c | 7 ------- + glib/gthreadprivate.h | 9 --------- + 3 files changed, 23 deletions(-) + +commit 903705edf2e33384914688ee30ea118486cb537c +Author: Ryan Lortie +AuthorDate: Wed Oct 12 18:23:20 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 18:23:20 2011 -0400 + + thread: remove dead decl from gthreadprivate.h + + This function hasn't existed for a while... + + glib/gthreadprivate.h | 3 --- + 1 file changed, 3 deletions(-) + +commit ed35d2719ba60fe36032db6eae5e07cd45b4fe1c +Author: Ryan Lortie +AuthorDate: Wed Oct 12 18:22:31 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 18:22:31 2011 -0400 + + thread: Remove the zero_thread + + This was only used for redundant assertion checks. + + glib/deprecated/gthread-deprecated.c | 2 -- + glib/gthread.c | 8 +------- + glib/gthreadprivate.h | 1 - + 3 files changed, 1 insertion(+), 10 deletions(-) + +commit 2b281e40f32b7916d856dcc95e6f8fe625fcff03 +Author: Ryan Lortie +AuthorDate: Tue Oct 11 11:08:48 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 18:18:16 2011 -0400 + + GStaticRecMutex: implement via GRecMutex + + Instead of doing our own hacked-up version. + + This also reduces use of GSystemThread. + + glib/deprecated/gthread-deprecated.c | 128 + ++++++++++++++++------------------- + 1 file changed, 57 insertions(+), 71 deletions(-) + +commit 96904b679061d78da65bf0dd0b331f4a3c754b3d +Author: Ryan Lortie +AuthorDate: Wed Oct 12 17:01:33 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 17:05:50 2011 -0400 + + thread: use GSList for g_thread_foreach list + + ...instead of having a 'next' pointer in the GThread struct. + + Now GThread contains no fields used only by deprecated code + (except for + the rather generic setup function field). + + glib/deprecated/gthread-deprecated.c | 28 ++++++++-------------------- + glib/gthreadprivate.h | 1 - + 2 files changed, 8 insertions(+), 21 deletions(-) + +commit 9ca4f142641e6c756e48555c7dc0ea8780000359 +Author: Ryan Lortie +AuthorDate: Wed Oct 12 16:50:43 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 17:05:50 2011 -0400 + + thread: call g_enumerable_thread_add via callback + + There are no longer any functions defined in gthread-deprecated.c + called + from gthread.c. + + glib/deprecated/gthread-deprecated.c | 123 + ++++++++++++++++++----------------- + glib/gthread.c | 21 +++--- + glib/gthreadprivate.h | 22 +++---- + 3 files changed, 83 insertions(+), 83 deletions(-) + +commit f788a2e5e1f7c9898675d3876367e2cf7d55f386 +Author: Ryan Lortie +AuthorDate: Wed Oct 12 16:26:39 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 17:05:50 2011 -0400 + + thread: use GPrivate for enumerable threads + + Use a GPrivate to track the destruction of enumerable threads + and remove + them from the list. + + glib/deprecated/gthread-deprecated.c | 27 ++++++++++++++++----------- + glib/gthread.c | 11 +++-------- + glib/gthreadprivate.h | 1 - + 3 files changed, 19 insertions(+), 20 deletions(-) + +commit 1368533dc2c117202d11acdde27724a0301ad301 +Author: Colin Walters +AuthorDate: Wed Oct 12 15:25:12 2011 -0400 +Commit: Colin Walters +CommitDate: Wed Oct 12 15:25:12 2011 -0400 + + gvariant: Doc typo fix + + glib/gvariant.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 15b9f64004e7377dabad7b9a03dae094df51a0e4 +Author: Colin Walters +AuthorDate: Wed Oct 12 15:22:09 2011 -0400 +Commit: Colin Walters +CommitDate: Wed Oct 12 15:23:39 2011 -0400 + + gvariant: Briefly mention limits + + glib/gvariant.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 0af48a5d7b9504dd190d497963a14d8f7a4942ed +Author: Dan Winship +AuthorDate: Wed Oct 12 13:59:33 2011 -0400 +Commit: Dan Winship +CommitDate: Wed Oct 12 13:59:33 2011 -0400 + + gthread-deprecated: add a mising "static" to a method + + glib/deprecated/gthread-deprecated.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 95cab96515d84a9bc5dd731ea6eee08d7e786f50 +Author: Dan Winship +AuthorDate: Wed Oct 12 13:57:44 2011 -0400 +Commit: Dan Winship +CommitDate: Wed Oct 12 13:57:44 2011 -0400 + + giomodule: make the default_modules mutex recursive + + It is possible for _g_io_module_get_default() to be called recursively + (eg, if a module of one type is loaded that tries to look up gsettings + from its init() method and ends up causing the gsettings module to be + loaded). So use a recursive mutex. + + gio/giomodule.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 71cf70b39cd3859ac4cb4954c369bda731a61171 +Author: Dan Winship +AuthorDate: Tue Oct 11 15:38:37 2011 -0400 +Commit: Dan Winship +CommitDate: Wed Oct 12 08:59:35 2011 -0400 + + Simplify checks for CLOCK_MONOTONIC + + Remove the complicated configure-time and runtime checks, and just use + CLOCK_MONOTONIC if it's defined. + + https://bugzilla.gnome.org/show_bug.cgi?id=661421 + + configure.ac | 15 ----------- + glib/gmain.c | 84 + ++++++++++++++++++++++++------------------------------------ + 2 files changed, 34 insertions(+), 65 deletions(-) + +commit daede1dc27bbf28d2cbefc2fac22e0f917a23952 +Author: Matthias Clasen +AuthorDate: Wed Oct 12 00:37:02 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 12 00:48:18 2011 -0400 + + Disable deprecations where appropriate in tests + + glib/tests/unix.c | 4 ---- + gobject/tests/boxed.c | 2 ++ + gobject/tests/dynamictests.c | 3 +-- + gobject/tests/param.c | 1 + + gobject/tests/threadtests.c | 2 +- + gthread/tests/1bit-mutex.c | 4 +--- + gthread/tests/642026.c | 8 ++------ + gthread/tests/atomic.c | 4 +--- + gthread/tests/gwakeuptest.c | 4 +--- + gthread/tests/spawn-multithreaded.c | 6 ++---- + gthread/tests/spawn-singlethread.c | 2 -- + 11 files changed, 12 insertions(+), 28 deletions(-) + +commit bcdb865c597b9201b717f0d4b420e73a2393e5ff +Author: Matthias Clasen +AuthorDate: Wed Oct 12 00:37:02 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 12 00:37:02 2011 -0400 + + Disable deprecations where appropriate in tests + + glib/tests/cache.c | 3 +++ + glib/tests/cond.c | 3 +++ + glib/tests/date.c | 3 +++ + glib/tests/fileutils.c | 4 ++++ + glib/tests/mainloop.c | 38 ++++++++++++++++++++++++++++++++++++++ + glib/tests/mappedfile.c | 2 ++ + glib/tests/mutex.c | 3 +++ + glib/tests/once.c | 2 +- + glib/tests/private.c | 5 +++-- + glib/tests/rec-mutex.c | 3 +++ + glib/tests/rwlock.c | 3 +++ + glib/tests/strfuncs.c | 6 +++--- + glib/tests/string.c | 3 +++ + glib/tests/thread.c | 2 -- + glib/tests/tree.c | 3 +++ + glib/tests/unicode.c | 3 +++ + 16 files changed, 78 insertions(+), 8 deletions(-) + +commit 7455dd370eb37ce3b0b409ff6120501f37b50569 +Author: Matthias Clasen +AuthorDate: Wed Oct 12 00:24:46 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 12 00:25:38 2011 -0400 + + Make single includes mandatory + + This has been the official line since 2.17, which seems plenty + long enough for a transition phase. + + README.in | 3 +++ + configure.ac | 2 -- + docs/reference/glib/compiling.sgml | 8 ++------ + glib/galloca.h | 2 +- + glib/garray.h | 2 +- + glib/gasyncqueue.h | 2 +- + glib/gatomic.h | 2 +- + glib/gbacktrace.h | 2 +- + glib/gbase64.h | 2 +- + glib/gbitlock.h | 2 +- + glib/gbookmarkfile.h | 2 +- + glib/gcache.h | 2 +- + glib/gchecksum.h | 2 +- + glib/gconvert.h | 2 +- + glib/gdataset.h | 2 +- + glib/gdate.h | 2 +- + glib/gdatetime.h | 2 +- + glib/gdir.h | 2 +- + glib/gerror.h | 2 +- + glib/gfileutils.h | 2 +- + glib/ghash.h | 2 +- + glib/ghmac.h | 2 +- + glib/ghook.h | 2 +- + glib/giochannel.h | 2 +- + glib/gkeyfile.h | 2 +- + glib/glist.h | 2 +- + glib/gmacros.h | 2 +- + glib/gmain.h | 2 +- + glib/gmappedfile.h | 2 +- + glib/gmarkup.h | 2 +- + glib/gmem.h | 2 +- + glib/gmessages.h | 2 +- + glib/gnode.h | 2 +- + glib/goption.h | 2 +- + glib/gpattern.h | 2 +- + glib/gprimes.h | 2 +- + glib/gqsort.h | 2 +- + glib/gquark.h | 2 +- + glib/gqueue.h | 2 +- + glib/grand.h | 2 +- + glib/gregex.h | 2 +- + glib/gscanner.h | 2 +- + glib/gsequence.h | 2 +- + glib/gshell.h | 2 +- + glib/gslice.h | 2 +- + glib/gslist.h | 2 +- + glib/gspawn.h | 2 +- + glib/gstrfuncs.h | 2 +- + glib/gstring.h | 2 +- + glib/gstringchunk.h | 2 +- + glib/gtestutils.h | 2 +- + glib/gthread.h | 2 +- + glib/gthreadpool.h | 2 +- + glib/gtimer.h | 2 +- + glib/gtimezone.h | 2 +- + glib/gtree.h | 2 +- + glib/gtypes.h | 2 +- + glib/gunicode.h | 2 +- + glib/gurifuncs.h | 2 +- + glib/gutils.h | 2 +- + glib/gvariant.h | 2 +- + glib/gvarianttype.h | 2 +- + glib/gwin32.h | 2 +- + 63 files changed, 65 insertions(+), 68 deletions(-) + +commit 9bb5a55bda83c58ddbd0381693d98c7a2f701d01 +Author: Ryan Lortie +AuthorDate: Tue Oct 11 23:13:22 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 12 00:17:49 2011 -0400 + + GStaticPrivate: implement via GPrivate + + Thanks to the modifications in + 3d4846d92309d001697c2827660fa41b5c63dbc4, + GStaticPrivate is not so directly tied in with GThread anymore. It is + now a simple matter to cut it out completely by using a GPrivate to + store the GArray instead of storing it in the GThread. + + glib/deprecated/gthread-deprecated.c | 49 + ++++++++++++++++-------------------- + glib/gthread.c | 4 --- + glib/gthreadprivate.h | 2 -- + 3 files changed, 22 insertions(+), 33 deletions(-) + +commit c6016458ba2a981ccd72f02208f8140abde6c9d1 +Author: Matthias Clasen +AuthorDate: Tue Oct 11 23:50:34 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Oct 11 23:50:34 2011 -0400 + + Update deprecation docs + + docs/reference/glib/compiling.sgml | 17 ++++++++++++++--- + 1 file changed, 14 insertions(+), 3 deletions(-) + +commit 3d282dcc2ef1dba36e67f91d8a6c5f589ce249ea +Author: Matthias Clasen +AuthorDate: Tue Oct 11 23:44:43 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Oct 11 23:44:43 2011 -0400 + + Silence deprecations in deprecated/ (again) + + glib/deprecated/gallocator.c | 5 +++++ + glib/deprecated/gcompletion.c | 3 +++ + glib/deprecated/grel.c | 3 +++ + glib/deprecated/gthread-deprecated.c | 7 +------ + 4 files changed, 12 insertions(+), 6 deletions(-) + +commit f5f242caf80d96a6ec057fc746e5d53a34de7077 +Author: Chun-wei Fan +AuthorDate: Wed Oct 12 11:23:49 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Oct 12 11:23:49 2011 +0800 + + Update VS projects + + Get rid of _CRT_SECURE_NO_WARNINGS and _CRT_NONSTDC_NO_WARNINGS + from the preprocessor definitions as those two macros are now defined + in msvc_recommended_pragmas.h, which is force-included in these + projects + via the property sheets. This will silence C4005 warnings on macro + redefinition. + + build/win32/vs10/glib-compile-schemas.vcxproj | 8 ++++---- + build/win32/vs10/gsettings.vcxproj | 8 ++++---- + build/win32/vs10/gspawn-win32-helper-console.vcxproj | 8 ++++---- + build/win32/vs10/gspawn-win32-helper.vcxproj | 8 ++++---- + build/win32/vs10/testglib.vcxproj | 8 ++++---- + build/win32/vs9/glib-compile-schemas.vcproj | 8 ++++---- + build/win32/vs9/gsettings.vcproj | 8 ++++---- + build/win32/vs9/gspawn-win32-helper-console.vcproj | 8 ++++---- + build/win32/vs9/gspawn-win32-helper.vcproj | 8 ++++---- + build/win32/vs9/testglib.vcproj | 8 ++++---- + 10 files changed, 40 insertions(+), 40 deletions(-) + +commit b93d6ab83a0cddce0a3847984a91a2819df61130 +Author: Chun-wei Fan +AuthorDate: Wed Oct 12 10:53:30 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Oct 12 10:53:30 2011 +0800 + + Bug 661438: Update msvc_recommended_pragmas.h + + Don't disable warning C4996 as that is the Visual C++ warning + triggered by + __declspec(deprecated) and __declspec(deprecated('..."))-disabling + that + warning will defeat the purpose of G_DPRECATED/G_DEPRECATED_FOR. + + For people who don't want to see the GLib deprecation warnings + during GLib + compilation, define GLIB_DISABLE_DEPRECATION_WARNINGS in the + projects or + property sheet. + + msvc_recommended_pragmas.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 36ccdab760003fc1efd2f49e77932cb253f006f4 +Author: Chun-wei Fan +AuthorDate: Wed Oct 12 10:38:47 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Oct 12 10:38:47 2011 +0800 + + Bug 661438: Fix up gmacros.h a bit + + The macro here should be G_DEPRECATED, not G_GNUC_DEPRECATED. + + glib/gmacros.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 17c713d3f6322e2e968e1f7774f1009bac6881c2 +Author: Chun-wei Fan +AuthorDate: Wed Oct 12 10:37:24 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Oct 12 10:37:24 2011 +0800 + + Update VS property sheets + + Missed the new glib/gstringchunk.h header that needed to be + installed as + well. + + build/win32/vs10/glib.props | 2 ++ + build/win32/vs9/glib.vsprops | 1 + + 2 files changed, 3 insertions(+) + +commit 380ec80d07218123b8274ace506274f36af7c445 +Author: Dan Winship +AuthorDate: Tue Oct 11 19:28:59 2011 -0400 +Commit: Dan Winship +CommitDate: Tue Oct 11 19:28:59 2011 -0400 + + g_time_val_from_iso8601: clarify the docs a bit + + glib/gtimer.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit baa394910b23bfa7162c2571d83d1c196522c636 +Author: Ryan Lortie +AuthorDate: Tue Oct 11 18:39:57 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 11 18:42:03 2011 -0400 + + gmain: use GPrivate instead of GStaticPrivate + + glib/gmain.c | 25 +++++++++++++------------ + 1 file changed, 13 insertions(+), 12 deletions(-) + +commit b3e39140621228788cedd2f6ce7fa03b0fef4664 +Author: Dan Winship +AuthorDate: Tue Oct 11 15:36:42 2011 -0400 +Commit: Dan Winship +CommitDate: Tue Oct 11 15:36:42 2011 -0400 + + Fix two tests for G_DEBUG=gc-friendly + + glib/tests/array-test.c | 9 ++++----- + glib/tests/protocol.c | 6 +++++- + 2 files changed, 9 insertions(+), 6 deletions(-) + +commit 08d6e1147d2e6e3abf85ae7a399c689609a7b761 +Author: Chun-wei Fan +AuthorDate: Tue Oct 11 14:34:59 2011 +0800 +Commit: Matthias Clasen +CommitDate: Tue Oct 11 13:42:59 2011 -0400 + + Use GLIB_DEPRECATED instead of G_GNUC_DEPRECATED in our headers + + This will let others opt out of seeing GLib deprecation warnings + by defining GLIB_DISABLE_DEPRECATION_WARNINGS. + + https://bugzilla.gnome.org/show_bug.cgi?id=661438 + + gio/gdrive.h | 7 +- + gio/gfile.h | 14 ++-- + gio/gmount.h | 14 ++-- + gio/gtlsconnection.h | 5 +- + gio/gunixsocketaddress.h | 6 +- + gio/gvolume.h | 7 +- + glib/deprecated/gcompletion.h | 22 +++++-- + glib/deprecated/grel.h | 32 +++++---- + glib/deprecated/gthread.h | 149 + ++++++++++++++++++++++++++++-------------- + glib/gasyncqueue.h | 7 +- + glib/gatomic.h | 3 +- + glib/gcache.h | 3 +- + glib/gdate.h | 3 +- + glib/gfileutils.h | 3 +- + glib/giochannel.h | 15 +++-- + glib/gmain.h | 3 +- + glib/gmappedfile.h | 3 +- + glib/gstrfuncs.h | 13 ++-- + glib/gstring.h | 6 +- + glib/gtree.h | 3 +- + glib/gunicode.h | 3 +- + glib/gutils.h | 3 +- + gobject/gboxed.h | 3 +- + gobject/gobject.h | 3 +- + gobject/gparam.h | 3 +- + gobject/gvaluetypes.h | 8 ++- + 26 files changed, 231 insertions(+), 110 deletions(-) + +commit a1acf35653ac5d437bdd8dce1b2b56333b005c0c +Author: Matthias Clasen +AuthorDate: Tue Oct 11 13:33:07 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Oct 11 13:42:58 2011 -0400 + + Add our own deprecation macros + + This will allow to suppress deprecation warnings on a per-module + basis, if needed. They are on by default now, though. + + docs/reference/glib/glib-sections.txt | 2 ++ + glib/gmacros.h | 14 ++++++++++++++ + 2 files changed, 16 insertions(+) + +commit 0da0411a4a2f9efde4f8fc3d6bf504ee488c2e4a +Author: Matthias Clasen +AuthorDate: Tue Oct 11 13:06:58 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Oct 11 13:13:27 2011 -0400 + + Add better deprecation macros + + Unlike G_GNUC_... macros, the new G_DEPRECATED[_FOR] are + meant as abstractions that work with different compilers. + Using a new name also lets us restrict it to 'must be placed + before the declaration', which works with more compilers. + + https://bugzilla.gnome.org/show_bug.cgi?id=661438 + + docs/reference/glib/glib-sections.txt | 4 ++++ + glib/gmacros.h | 17 +++++++++++++++++ + 2 files changed, 21 insertions(+) + +commit a73113908f310c8ccc532d04f4cf4b4625860962 +Author: Chun-wei Fan +AuthorDate: Tue Oct 11 18:04:07 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Oct 11 18:04:07 2011 +0800 + + Update VS property sheets + + Copy the deprecated headers in their appropriate places. + + build/win32/vs10/glib.props | 15 +++++++++++---- + build/win32/vs9/glib.vsprops | 8 ++++++-- + 2 files changed, 17 insertions(+), 6 deletions(-) + +commit 0e71214bef4038316f96a12dfcf7b2635c94e5b1 +Author: Chun-wei Fan +AuthorDate: Tue Oct 11 14:19:02 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Oct 11 15:55:55 2011 +0800 + + glibconfig.win32(.in): Cleanup cruft + + The definitions of _GMutex* and G_STATIC_MUTEX_INIT is now found in + glib/deprecated/gthread.h, and should no longer be in the mainline + code, so remove them from here. + + glib/glibconfig.h.win32.in | 2 -- + 1 file changed, 2 deletions(-) + +commit 3e5a30fc17ee071254d7c2a70e1713d554e4a1ad +Author: Ryan Lortie +AuthorDate: Mon Oct 10 13:13:31 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 10 19:44:23 2011 -0400 + + GStaticMutex: ABI fixup + + Everything was OK as long as GMutex was backed by pthread_mutex_t on + POSIX. Since this is no longer the case, the ABI of GStaticMutex was + broken. + + Fix that up by using pthread_mutex_t directly in the structure. Since + that's potentially incompatible with our GMutex implementation, set + g_thread_use_default_impl to FALSE to cause the fallback code (which + manually allocates a GMutex) to run, even in the case of + already-existing code (without the need for a recompile). This will + cause the pthread_mutex_t part of the struct to be completely ignored. + + glib/deprecated/gthread-deprecated.c | 13 ++++++++----- + glib/deprecated/gthread.h | 25 +++++++++++++------------ + 2 files changed, 21 insertions(+), 17 deletions(-) + +commit 2c1cbde21e24be0e0ae1e20ad772b03255e96c53 +Author: Matthias Clasen +AuthorDate: Mon Oct 10 11:10:20 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 10 11:11:29 2011 -0400 + + Compile private test with -pthread on UNIX + + We are using explicit pthread calls here, so we should + use the right linker flags for that. + + https://bugzilla.gnome.org/show_bug.cgi?id=661318 + + glib/tests/Makefile.am | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 93e49aea1b5563c90f1c5152ab9cb65f19329891 +Author: Matthias Clasen +AuthorDate: Mon Oct 10 09:49:50 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 10 09:49:50 2011 -0400 + + Don't use deprecated GThread API in gio tests + + gio/tests/async-close-output-stream.c | 1 - + gio/tests/contexts.c | 3 +-- + gio/tests/echo-server.c | 1 - + gio/tests/gdbus-connection-loss.c | 1 - + gio/tests/gdbus-export.c | 9 +++++---- + gio/tests/gdbus-non-socket.c | 1 - + gio/tests/gdbus-peer.c | 37 + +++++++++++++++++++---------------- + gio/tests/gdbus-proxy-threads.c | 5 +++-- + gio/tests/gdbus-test-codegen.c | 9 +++++---- + gio/tests/gdbus-threading.c | 37 + +++++++++++++++++++---------------- + gio/tests/httpd.c | 1 - + gio/tests/resolver.c | 2 +- + gio/tests/send-data.c | 3 +-- + gio/tests/socket-client.c | 4 +--- + gio/tests/socket-server.c | 4 +--- + gio/tests/socket.c | 2 +- + gio/tests/tls-interaction.c | 3 +-- + gio/tests/unix-streams.c | 5 ++--- + gio/tests/win32-streams.c | 5 ++--- + 19 files changed, 64 insertions(+), 69 deletions(-) + +commit 5662619f22073e8d7ceec5429c36aae7bb9cf8ea +Author: Kjartan Maraas +AuthorDate: Mon Oct 10 07:53:16 2011 +0200 +Commit: Kjartan Maraas +CommitDate: Mon Oct 10 07:55:29 2011 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 765 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 382 insertions(+), 383 deletions(-) + +commit 918954e089c9c1aea0019e4dc8a73f994d8bdf83 +Author: Algimantas Margevičius +AuthorDate: Sun Oct 9 22:00:49 2011 +0300 +Commit: Aurimas Černius +CommitDate: Sun Oct 9 22:00:49 2011 +0300 + + Updated Lithuanian translation + + po/lt.po | 1777 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 879 insertions(+), 898 deletions(-) + +commit 5e2764d70cbd9f556fe4d873897e2d4a174a98a7 +Author: Matthias Clasen +AuthorDate: Sun Oct 9 09:57:13 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 9 09:57:13 2011 -0400 + + Silence deprecation warnings in deprecated/ + + We know we are all deprecated here... + + glib/deprecated/gthread-deprecated.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit ff2dafb20999d0b00ee599f998ef00ea514e4482 +Author: Matthias Clasen +AuthorDate: Sat Oct 8 23:49:04 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 8 23:49:04 2011 -0400 + + Add G_GNUC_DEPRECATED to deprecated functions in gio + + gio/gdesktopappinfo.h | 3 ++- + gio/gdrive.h | 12 ++++++------ + gio/gfile.h | 24 ++++++++++++------------ + gio/gmount.h | 8 ++++---- + gio/gtlsconnection.h | 4 ++-- + gio/gunixsocketaddress.h | 8 ++++---- + gio/gvolume.h | 12 ++++++------ + 7 files changed, 36 insertions(+), 35 deletions(-) + +commit 93b3f6477e1670536d9d208e1d51d682a81d3d65 +Author: Matthias Clasen +AuthorDate: Sat Oct 8 23:23:43 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 8 23:23:43 2011 -0400 + + Add G_GNUC_DEPRECATED to deprecated functions in gobject + + gobject/gboxed.h | 2 +- + gobject/gobject.h | 2 +- + gobject/gparam.h | 2 +- + gobject/gvaluetypes.h | 10 +++++----- + 4 files changed, 8 insertions(+), 8 deletions(-) + +commit f9b29ca0343a23d8eaa0aa41034169b95405383e +Author: Matthias Clasen +AuthorDate: Sat Oct 8 23:16:01 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 8 23:16:01 2011 -0400 + + Add G_GNUC_DEPRECATED to deprecated APIs in glib + + glib/deprecated/gcompletion.h | 20 ++++++------- + glib/deprecated/grel.h | 20 ++++++------- + glib/deprecated/gthread.h | 66 + +++++++++++++++++++++---------------------- + glib/gasyncqueue.h | 4 +-- + glib/gatomic.h | 2 +- + glib/gcache.h | 2 +- + glib/gdate.h | 2 +- + glib/gfileutils.h | 2 +- + glib/giochannel.h | 22 +++++++-------- + glib/gmain.h | 2 +- + glib/gmappedfile.h | 2 +- + glib/gstrfuncs.h | 14 ++++----- + glib/gstring.h | 4 +-- + glib/gtree.h | 2 +- + glib/gunicode.h | 2 +- + glib/gutils.h | 2 +- + 16 files changed, 84 insertions(+), 84 deletions(-) + +commit 30b320b61c34f953bf7b7bbc27d978c321fe1c4d +Author: Matthias Clasen +AuthorDate: Sat Oct 8 12:43:12 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 8 19:02:06 2011 -0400 + + Add some GHookList tests + + glib/tests/Makefile.am | 3 ++ + glib/tests/hook.c | 95 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 98 insertions(+) + +commit 6109db27aec99f456c5bbda27bd4afe851b5bcff +Author: Matthias Clasen +AuthorDate: Sat Oct 8 12:42:41 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 8 19:02:06 2011 -0400 + + Test a few more GIOChannel functions + + glib/tests/protocol.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit d33f625444c28cd1c6313410d639360141dfd16b +Author: Matthias Clasen +AuthorDate: Sat Oct 8 12:42:06 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 8 19:02:06 2011 -0400 + + Remove a bit of dead code + + glib/gmarkup.c | 3 --- + 1 file changed, 3 deletions(-) + +commit b3ead3c998931b11d6d413474bba4866d6afd29d +Author: Matthias Clasen +AuthorDate: Sat Oct 8 12:41:38 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 8 19:02:06 2011 -0400 + + Pass G_DEBUG=g-gc-friendly when running the tests + + Makefile.decl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d5a1ca8fd751c6f0a28ad3990259976f23954a34 +Author: Matthias Clasen +AuthorDate: Thu Oct 6 09:01:24 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 8 19:02:06 2011 -0400 + + Add some more GMarkup tests + + glib/tests/markups/fail-41.expected | 1 + + glib/tests/markups/fail-41.gmarkup | 3 +++ + glib/tests/markups/fail-42.expected | 1 + + glib/tests/markups/fail-42.gmarkup | 5 +++++ + glib/tests/markups/fail-43.expected | 1 + + glib/tests/markups/fail-43.gmarkup | 1 + + glib/tests/markups/fail-44.expected | 3 +++ + glib/tests/markups/fail-44.gmarkup | 1 + + glib/tests/markups/fail-45.expected | 3 +++ + glib/tests/markups/fail-45.gmarkup | 1 + + glib/tests/markups/fail-46.expected | 2 ++ + glib/tests/markups/fail-46.gmarkup | 2 ++ + glib/tests/markups/fail-47.expected | 1 + + glib/tests/markups/fail-47.gmarkup | 1 + + glib/tests/markups/fail-48.expected | 1 + + glib/tests/markups/fail-48.gmarkup | 2 ++ + glib/tests/markups/fail-49.expected | 3 +++ + glib/tests/markups/fail-49.gmarkup | 1 + + glib/tests/markups/valid-12.expected | 5 +++++ + glib/tests/markups/valid-12.gmarkup | 3 +++ + glib/tests/markups/valid-13.expected | 4 ++++ + glib/tests/markups/valid-13.gmarkup | 3 +++ + glib/tests/markups/valid-14.expected | 30 ++++++++++++++++++++++++++++++ + glib/tests/markups/valid-14.gmarkup | 24 ++++++++++++++++++++++++ + 24 files changed, 102 insertions(+) + +commit 08e17ae51b6336d059b0cc85071cc26772ab2f0c +Author: Matthias Clasen +AuthorDate: Thu Oct 6 08:59:51 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 8 19:02:06 2011 -0400 + + Call setlocale in markup-parse test + + This is necessary to make utf-8 text come out properly. + + glib/tests/markup-parse.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 87cb246f4627a7644d0291e1ae131fa2e628fde9 +Author: Matthias Clasen +AuthorDate: Wed Oct 5 23:36:35 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 8 19:02:05 2011 -0400 + + Improve GNode test coverage + + glib/tests/node.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit dca6a601c13798dde689cab7f9ac67db2765ae2d +Author: Matthias Clasen +AuthorDate: Wed Oct 5 23:31:14 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 8 19:02:05 2011 -0400 + + Improve GCache test coverage + + glib/tests/cache.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +commit eeedaac3e8306403c9359edd8e4baea6a22153ed +Author: Matthias Clasen +AuthorDate: Wed Oct 5 23:24:27 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 8 19:02:05 2011 -0400 + + Improve coverage of string function tests + + glib/tests/strfuncs.c | 30 ++++++++++++++++++++++++++++++ + 1 file changed, 30 insertions(+) + +commit 944f66f38fa24c657c192e7d72ca2508020f68dd +Author: Matthias Clasen +AuthorDate: Wed Oct 5 23:24:08 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 8 19:02:05 2011 -0400 + + Improve coverage of GHmac tests + + glib/tests/hmac.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 50 insertions(+) + +commit d9e9239a4659c972279955e77d0351e664613e70 +Author: Matthias Clasen +AuthorDate: Wed Oct 5 23:00:09 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 8 19:02:05 2011 -0400 + + Add a test for g_date_time_new_from_timeval_utc + + glib/tests/gdatetime.c | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +commit c739a5df14ff5ee8cf262ce6e1cebdd0096aff5a +Author: Antoine Jacoutot +AuthorDate: Sat Oct 8 11:47:20 2011 +0200 +Commit: Antoine Jacoutot +CommitDate: Sat Oct 8 17:11:39 2011 +0200 + + gio: enable test_peer regression test for OpenBSD + + https://bugzilla.gnome.org/show_bug.cgi?id=661255 + + gio/tests/gdbus-peer.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 3c4d3dec092609bb8e8bf77dcaea5ad9ddfb4ed3 +Author: David Zeuthen +AuthorDate: Fri Oct 7 14:20:03 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Oct 7 14:23:03 2011 -0400 + + GDBusConnection: Make pending calls error when the connection is lost + + If the connection to the bus is lost while a method call is ongoing, + the method call does not get cancelled. Instead it just sits around + until it times out. + + This is visible here on XO laptops when stopping the display manager + during shutdown. imsettings starts sending a sync message to give up + its bus name (via g_bus_unown_name()), then systemd terminates the + session bus at approximately the same time. imsettings then hangs for + about 20 seconds before timing out the message. + + http://lists.freedesktop.org/archives/dbus/2011-September/014717.html + + imsettings behaviour could be improved as described in that thread, + but I think this is a glib bug. I've also come up with the attached + patch which fixes it. + + Credits for the bug-fix goes to Daniel Drake . The + test + case was written by David Zeuthen . + + https://bugzilla.gnome.org/show_bug.cgi?id=660637 + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 42 +++++++++-- + gio/tests/Makefile.am | 4 + + gio/tests/gdbus-connection-loss.c | 155 + ++++++++++++++++++++++++++++++++++++++ + 3 files changed, 194 insertions(+), 7 deletions(-) + +commit edcac1ee419116327aee73435f7442f2201752e6 +Author: John Ralls +AuthorDate: Fri Oct 7 09:51:04 2011 -0700 +Commit: John Ralls +CommitDate: Fri Oct 7 09:51:12 2011 -0700 + + Bug 661129: Duplicate symbols zero_thread and g_once_mutex on OSX + + glib/gthreadprivate.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 59f1f5465571bac403357b59cf7bfe2723356a37 +Author: Dan Winship +AuthorDate: Wed Oct 5 10:46:57 2011 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 7 10:14:34 2011 -0400 + + Add g_main_context_ref_thread_default() + + Add g_main_context_ref_thread_default(), which always returns a + reffed GMainContext, rather than sometimes returning a (non-reffed) + GMainContext, and sometimes returning NULL. This simplifies the + bookkeeping in any code that needs to keep a reference to the + thread-default context for a while. + + https://bugzilla.gnome.org/show_bug.cgi?id=660994 + + docs/reference/glib/glib-sections.txt | 1 + + gio/gdbus-2.0/codegen/codegen.py | 7 ++---- + gio/gdbusconnection.c | 46 + +++++++++++++---------------------- + gio/gdbusinterfaceskeleton.c | 7 ++---- + gio/gdbusnameowning.c | 17 ++++++------- + gio/gdbusnamewatching.c | 17 ++++++------- + gio/gdbusserver.c | 9 +++---- + gio/gfilemonitor.c | 5 ++-- + gio/gioscheduler.c | 7 ++---- + gio/gsettings.c | 7 +----- + gio/gsimpleasyncresult.c | 9 ++----- + gio/gtlsinteraction.c | 7 ++---- + glib/glib.symbols | 1 + + glib/gmain.c | 34 ++++++++++++++++++++++++-- + glib/gmain.h | 1 + + 15 files changed, 84 insertions(+), 91 deletions(-) + +commit d91769b64160353b4f9861cb68a97a0171b323ad +Author: Daniel Mustieles +AuthorDate: Fri Oct 7 10:14:10 2011 +0200 +Commit: Daniel Mustieles +CommitDate: Fri Oct 7 10:14:10 2011 +0200 + + Updated Spanish translation + + po/es.po | 936 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 481 insertions(+), 455 deletions(-) + +commit 97b0b36ae39d5eb087315259ff56c799271b28c3 +Author: Matthias Clasen +AuthorDate: Fri Oct 7 01:19:15 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Oct 7 01:19:15 2011 -0400 + + USE __COUNTER__ instead of __LINE__ when available + + I've seen builds fail with + + nm-connection.c:119:691: error: declaration of + '_GStaticAssertCompileTimeAssertion_119' shadows a previous local + [-Werror=shadow] + + because several compile-time assertions ended up on the same + line. __COUNTER__ is meant specifically for the purpose of + constructing identifiers, so use it when available. + + glib/gmacros.h | 4 ++++ + 1 file changed, 4 insertions(+) + +commit c51fa1852dc7c661dc5d46355303d97a521e0a0c +Author: Matthias Clasen +AuthorDate: Fri Oct 7 00:42:52 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Oct 7 00:42:52 2011 -0400 + + Don't redundantly redeclare + + It makes gcc throw an error: + + redundant redeclaration of 'g_static_mutex_get_mutex_impl' + [-Werror=redundant-decls] + + glib/deprecated/gthread.h | 3 --- + 1 file changed, 3 deletions(-) + +commit e76927006a6886b92e73eb25b5ed559485a83af0 +Author: Ryan Lortie +AuthorDate: Thu Oct 6 12:24:21 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 6 12:24:21 2011 -0400 + + Move G_LOCK below GMutex in the docs + + The flow is currently a bit wrong since G_LOCK makes reference + to GMutex + which was not yet defined, so switch things around. + + docs/reference/glib/glib-sections.txt | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 761e75f84966e58f9a40ddae6ca3bc497c45afbe +Author: Ryan Lortie +AuthorDate: Thu Oct 6 12:21:33 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 6 12:21:33 2011 -0400 + + .gitignore + + docs/reference/glib/tmpl/.gitignore | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +commit 083812f8546230deef08a63f2064c293438b3802 +Author: Ryan Lortie +AuthorDate: Thu Oct 6 12:19:58 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 6 12:19:58 2011 -0400 + + Several docs cleanups + + docs/reference/glib/glib-sections.txt | 8 ++++++++ + glib/deprecated/gthread-deprecated.c | 11 +++++++++++ + glib/gthread.h | 1 + + glib/gvariant.h | 2 +- + 4 files changed, 21 insertions(+), 1 deletion(-) + +commit 94b7d2ee6cb9f1e0416c82e2bf0615fd2d0c848a +Author: Ryan Lortie +AuthorDate: Thu Oct 6 12:01:53 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 6 12:01:53 2011 -0400 + + Cleanup thread documentation + + docs/reference/glib/Makefile.am | 3 + + docs/reference/glib/glib-docs.sgml | 9 ++- + docs/reference/glib/glib-overrides.txt | 2 +- + docs/reference/glib/glib-sections.txt | 92 + +++++++++++++++--------------- + glib/deprecated/gthread-deprecated.c | 18 ++++++ + glib/gthread-posix.c | 40 ++++++------- + glib/gthread.c | 101 + ++++++--------------------------- + 7 files changed, 114 insertions(+), 151 deletions(-) + +commit 49b93a0bba1d2a837e5ea8f299464aa7ecd02321 +Author: Chun-wei Fan +AuthorDate: Thu Oct 6 16:02:18 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Oct 6 16:02:18 2011 +0800 + + gobjet/gclosure.c: Fix styling issues + + ...so that it looks more consistent with the rest. + + gobject/gclosure.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e80d8f0c2304ca471e6643dec846153307eee0fa +Author: Chun-wei Fan +AuthorDate: Thu Oct 6 15:37:52 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Oct 6 15:37:52 2011 +0800 + + gobject/gclosure.c: Add type cast for int_val = value + + This will silence compiler warnings on Visual C++. + + (Sorry for the bad fix just now.) + + gobject/gclosure.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d77f65d24dbdff40052e2346861eb420af9718ad +Author: Chun-wei Fan +AuthorDate: Thu Oct 6 15:33:34 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Oct 6 15:33:34 2011 +0800 + + Revert "gobject/gclosure.c: Made up for missed pointer deref" + + This reverts commit d792a1ebe445cfab942ee9e079daa3b87bd60304. + + gobject/gclosure.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d792a1ebe445cfab942ee9e079daa3b87bd60304 +Author: Chun-wei Fan +AuthorDate: Thu Oct 6 15:24:08 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Oct 6 15:24:08 2011 +0800 + + gobject/gclosure.c: Made up for missed pointer deref + + The value parameter is a gpointer * (void **), but ffi_arg itself + is not a + pointer type, so make up for dereference here. + + gobject/gclosure.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ed03047a5be48995be01e217d3f942619dedc030 +Author: Chun-wei Fan +AuthorDate: Thu Oct 6 15:12:22 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Oct 6 15:12:22 2011 +0800 + + gthread-deprecated.c: Include gutils.h + + This is needed for declaration of inline. + + glib/deprecated/gthread-deprecated.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit eb17516a6731acf7347e9f72ee81651c59087232 +Author: Chun-wei Fan +AuthorDate: Thu Oct 6 15:02:54 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Oct 6 15:03:30 2011 +0800 + + config.h.win32(.in): Update for strcasecmp + + Visual C++ uses _stricmp, which is identical to strcasecmp on gcc. + + config.h.win32.in | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit 3636cf2c640ab0b6a7c3b9d2358332bb52f4dc6e +Author: Matthias Clasen +AuthorDate: Wed Oct 5 22:43:22 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 5 22:43:22 2011 -0400 + + Update threads docs for the demise of g_thread_init() + + glib/gthread.c | 37 +++++++++++++++++-------------------- + 1 file changed, 17 insertions(+), 20 deletions(-) + +commit 47c7fa2ccd9baad00da95fcc9a3dc6c2ef222747 +Author: Matthias Clasen +AuthorDate: Wed Oct 5 22:31:17 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 5 22:31:17 2011 -0400 + + Remove mention of gthread-2.0.pc from 'Compiling' section + + At the same time, add one or two other corrections. + + docs/reference/glib/compiling.sgml | 55 + ++++++++++++++++++++++---------------- + 1 file changed, 32 insertions(+), 23 deletions(-) + +commit 749758ec78b84ca577947fecca0ea54b790fd529 +Author: Matthias Clasen +AuthorDate: Wed Oct 5 22:23:25 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 5 22:23:25 2011 -0400 + + Add a warning to g_thread_init_with_errorcheck_mutexes + + Should anybody try to use this, we should at least tell them that + its gone. + + gthread/gthread-impl.c | 1 + + 1 file changed, 1 insertion(+) + +commit 8e82225aedf81ea8a33deb3eb27a8878cd606521 +Author: Dan Williams +AuthorDate: Fri Sep 23 12:32:23 2011 -0500 +Commit: Dan Williams +CommitDate: Wed Oct 5 14:08:22 2011 -0500 + + closure: fix handling of ENUMs and integral return types on 64-bit + BE platforms + + enums are stored in v_long but need to be marshalled as signed + integers. On platforms where int is 32 bits, taking the + address of v_long resulted in the wrong 32 bits being marshalled. + So we need to stuff the enum's int-sized value to a temporary + int-sized variable and marshall that instead. + + Second, on return, libffi actually returns a pointer to a value + that's sized according to platform conventions, not according to + what the caller requested. ie if ffi_type_sint was requested, the + value can still be a 64-bit sign-extended long on a 64-bit + architecture like PPC64, thus the caller cannot simply cast + the return value as a pointer to the desired type, but must cast + as a pointer to an integral type and then cast to the desired + type to remove any sign extension complications. + + For more information on how to correctly handle libffi return + values, see the following bug, specifically comment 35: + + https://bugzilla.redhat.com/show_bug.cgi?id=736489 + + "For 64-bit ABIs that extend integral returns types to 64-bits, + libffi always + returns full 64-bit values that you can truncate in the calling code. + It's + just the way it is has always been. Please don't change libffi. + I'll document + this clearly for the next version (perhaps there is a mention of + this, I + haven't looked yet). + + The same is true for returning 8-bit values, for instance, on + 32-bit systems. + All ABIs extend those results to the full 32-bits so you need to + provide a + properly aligned buffer that's big enough to hold the result." + + https://bugzilla.gnome.org/show_bug.cgi?id=659881 + + gobject/gclosure.c | 76 + ++++++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 59 insertions(+), 17 deletions(-) + +commit c3133affcd55023a5e9cfbd87ec96e04a13c8e86 +Author: Colin Walters +AuthorDate: Wed Oct 5 11:27:45 2011 -0400 +Commit: Colin Walters +CommitDate: Wed Oct 5 13:39:30 2011 -0400 + + gmacros: Hide G_STATIC_ASSERT from g-ir-scanner + + The C syntax here is twisted and confuses the scanner. We don't + need to see it, so let's just skip it. + + https://bugzilla.gnome.org/show_bug.cgi?id=660413 + + glib/gmacros.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit 9560423a6ea05d6f34b5ee8533974b8f41ab03fc +Author: Ryan Lortie +AuthorDate: Wed Oct 5 13:16:05 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 5 13:17:07 2011 -0400 + + Be sure to #include "gutils.h" in gbacktrace.c + + 0e3f530185d494dbb9db1b47f72f10f3ae598564 introduced a compiler warning + about implicit declaration of g_get_prgname(). Fix that. + + Problem caught and fix suggested by Rico Tzschichholz. + + glib/gbacktrace.c | 1 + + 1 file changed, 1 insertion(+) + +commit f34908ef1555c8c579b0154e17932b84af04b81f +Author: David Zeuthen +AuthorDate: Wed Oct 5 12:33:55 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed Oct 5 12:42:06 2011 -0400 + + GDBus: Regenerate code when the codegen or options passed to it + changes + + https://bugzilla.gnome.org/show_bug.cgi?id=660498 + + Signed-off-by: David Zeuthen + + gio/gdbus-2.0/codegen/Makefile.am | 2 +- + gio/tests/Makefile.am | 2 +- + gio/tests/gdbus-object-manager-example/Makefile.am | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit 7ca83c6c9f369a88df98a86810596bb9efc73736 +Author: Dan Winship +AuthorDate: Wed Oct 5 11:45:51 2011 -0400 +Commit: Dan Winship +CommitDate: Wed Oct 5 11:54:36 2011 -0400 + + Fix up some doc comments that referred to threads not being enabled + + (and a few other unrelated comment fixes) + + gio/gasyncresult.c | 6 ------ + gio/gioscheduler.c | 2 +- + gio/giotypes.h | 6 +----- + gio/gresolver.c | 3 +-- + gio/gsimpleasyncresult.c | 2 +- + gio/gsocketservice.c | 12 +++++++----- + glib/glib-unix.c | 6 ------ + glib/gmain.c | 2 +- + glib/gthreadpool.c | 2 +- + 9 files changed, 13 insertions(+), 28 deletions(-) + +commit af55ff5a2b604399aa216bd731df97cba4474ad0 +Author: David Zeuthen +AuthorDate: Wed Oct 5 10:56:11 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed Oct 5 10:56:11 2011 -0400 + + GDBus: disable two more GDBus tests using fork() + + Signed-off-by: David Zeuthen + + gio/tests/gdbus-proxy.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 2b963266b68a3b14afcaa237ed41319c99949e43 +Author: David Zeuthen +AuthorDate: Tue Oct 4 11:37:16 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed Oct 5 10:45:22 2011 -0400 + + GDBusProxy: Correctly handle unknown members when having an expected + interface + + Since it is valid for a D-Bus interface / service to add new methods, + signals or properties we must NEVER warn about unknown properties or + drop unknown signals or disallow unknown method invocations when we + have an expected interface. + + So this means that the expected_interface machinery is only useful for + checking that the service didn't break ABI. + + Also update the docs so it is clear exactly what it means to have an + expected interface. + + https://bugzilla.gnome.org/show_bug.cgi?id=660886 + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 165 + ++++++++++++++++++++++++++---------------- + gio/tests/gdbus-proxy.c | 147 +++++++++++++++++++++++++++++++++++-- + gio/tests/gdbus-testserver.py | 12 +++ + 3 files changed, 253 insertions(+), 71 deletions(-) + +commit 2f48b4b7fb4d2d1f758ce5a8064ab51ac3d17a12 +Author: Dan Winship +AuthorDate: Wed Oct 5 08:36:03 2011 -0400 +Commit: Dan Winship +CommitDate: Wed Oct 5 08:36:03 2011 -0400 + + gthreadedresolver: remove a bit of cruft + + Remove a test that only made sense when GThreadedResolver was the base + class for the two non-threaded resolver classes that no longer exist. + + gio/gthreadedresolver.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0e3f530185d494dbb9db1b47f72f10f3ae598564 +Author: Matthias Clasen +AuthorDate: Tue Oct 4 01:25:26 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 5 01:12:53 2011 -0400 + + Remove cruft from g_strerror and g_strsignal + + We can just assume that strerror/strsignal are available + nowadays. At the same time, drop use of thread-private storage. + Instead, always return interned strings. + + https://bugzilla.gnome.org/show_bug.cgi?id=660849 + + configure.ac | 33 --- + glib/gstrfuncs.c | 627 + +++---------------------------------------------------- + 2 files changed, 29 insertions(+), 631 deletions(-) + +commit 5fef796126e2c74ccc619528414339cfb5dfcf9c +Author: Matthias Clasen +AuthorDate: Wed Oct 5 01:04:42 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 5 01:12:52 2011 -0400 + + Misc test coverage improvements + + https://bugzilla.gnome.org/show_bug.cgi?id=660849 + + glib/tests/array-test.c | 6 +++++- + glib/tests/fileutils.c | 3 +++ + glib/tests/strfuncs.c | 2 ++ + 3 files changed, 10 insertions(+), 1 deletion(-) + +commit ddbd4acdfbfd6766aaba2de5a3ff4c599dbf1b74 +Author: Matthias Clasen +AuthorDate: Wed Oct 5 01:04:02 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 5 01:04:02 2011 -0400 + + Need to check for prlimit + + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +commit ea4bc6008f3acdd90a7da490a0cbc15f62ba608b +Author: Matthias Clasen +AuthorDate: Wed Oct 5 00:28:53 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 5 00:28:53 2011 -0400 + + Add a test for thread creation failure + + glib/tests/thread.c | 36 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 36 insertions(+) + +commit 08a6d812312c6d164844bb77dad203d7781139e5 +Author: Ryan Lortie +AuthorDate: Tue Oct 4 20:31:33 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 20:33:58 2011 -0400 + + gthread.h: a bunch of pointless whitespace changes + + Make it look pretty. + + glib/gthread.h | 223 + +++++++++++++++++++++++++++------------------------------ + 1 file changed, 107 insertions(+), 116 deletions(-) + +commit 674543d091d0561f3b6a28b4326d21ac56f093c1 +Author: Ryan Lortie +AuthorDate: Tue Oct 4 20:23:20 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 20:33:58 2011 -0400 + + Move typedef GStaticPrivate to deprecated/ + + This was missed in the earlier move. + + glib/deprecated/gthread.h | 1 + + glib/gthread.h | 1 - + 2 files changed, 1 insertion(+), 1 deletion(-) + +commit 69c0b4440eabd5898066b36caccac9a34d783a78 +Author: Ryan Lortie +AuthorDate: Tue Oct 4 19:09:43 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 20:08:14 2011 -0400 + + Deprecate g_{mutex,cond}_{new,free}() + + Now that we have _init() and _clear(), these old calls are no longer + useful. + + https://bugzilla.gnome.org/show_bug.cgi?id=660739 + + glib/deprecated/gthread-deprecated.c | 84 + ++++++++++++++++++++++++++++++++++++ + glib/deprecated/gthread.h | 4 ++ + glib/gthread.c | 72 ------------------------------- + glib/gthread.h | 4 -- + 4 files changed, 88 insertions(+), 76 deletions(-) + +commit 26a6b3c6ff4ee086f72612930d3134df90980211 +Author: Ryan Lortie +AuthorDate: Tue Oct 4 20:07:31 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 20:08:14 2011 -0400 + + gdbusprivate: fix a missed g_mutex_free() + + This should have been changed to g_mutex_clear() + + gio/gdbusprivate.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6f343ca548af912e7ea6b0a35f5e12c8cb820126 +Author: Ryan Lortie +AuthorDate: Tue Oct 4 19:04:41 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 19:35:27 2011 -0400 + + Remove g_mutex_new()/g_cond_new() in testcases + + These were the last users of the dynamic allocation API. + + Keep the uses in glib/tests/mutex.c since this is actually meant + to test + the API (which has to continue working, even if it is deprecated). + + https://bugzilla.gnome.org/show_bug.cgi?id=660739 + + gio/tests/contexts.c | 30 +++++++++++++++--------------- + gio/tests/tls-interaction.c | 28 ++++++++++++++++------------ + gobject/tests/dynamictests.c | 12 +++++------- + gobject/tests/threadtests.c | 27 ++++++++++++--------------- + tests/mainloop-test.c | 30 ++++++++++++++---------------- + tests/memchunks.c | 25 +++++++++---------------- + tests/onceinit.c | 31 +++++++++++++++---------------- + tests/slice-concurrent.c | 13 +++++-------- + tests/slice-test.c | 2 -- + tests/thread-test.c | 14 ++++++-------- + 10 files changed, 97 insertions(+), 115 deletions(-) + +commit 9793708931640df4d89f87d16678508d417fd1e6 +Author: Ryan Lortie +AuthorDate: Tue Oct 4 18:52:55 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 18:52:55 2011 -0400 + + drop errorcheck mutex test + + We don't support errorchecking mutexes in GLib anymore. + + tests/.gitignore | 1 - + tests/Makefile.am | 1 - + tests/errorcheck-mutex-test.c | 131 + ------------------------------------------ + 3 files changed, 133 deletions(-) + +commit 4d5fe2704834e5038aa7a05a54445336cff831b6 +Author: Ryan Lortie +AuthorDate: Tue Oct 4 17:27:27 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 17:32:53 2011 -0400 + + GVariant: add a clarification to the docs + + Add a note to the doc for g_viarnat_get_child_value() that the return + value is non-floating and must be freed with g_variant_unref(). + + https://bugzilla.gnome.org/show_bug.cgi?id=654412 + + glib/gvariant-core.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 6b566e1d0b672e156c0cb80ceddc21b2f01deeaf +Author: Ryan Lortie +AuthorDate: Tue Oct 4 17:17:01 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 17:32:53 2011 -0400 + + gtimer: remove warnings about threads + + GTimer no longer uses the thread system for time information and + g_thread_init() no longer does anything, so remove the doubly-untrue + warning about these topics. + + https://bugzilla.gnome.org/show_bug.cgi?id=527214 + + glib/gtimer.c | 5 ----- + 1 file changed, 5 deletions(-) + +commit e3be556728831b03b448819741f2c1c69f939294 +Author: Ryan Lortie +AuthorDate: Tue Oct 4 16:52:03 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 17:32:53 2011 -0400 + + end the glib-ctor experiment + + This was a bad approach. We attempt to handle initailisation in + a more + centralised way now. + + glib/Makefile.am | 1 - + glib/glib-ctor.h | 25 ------------------------- + glib/gmem.c | 2 -- + 3 files changed, 28 deletions(-) + +commit bb5d90a76806788c26a6a3ed2c8453b35cb8c86e +Author: Ryan Lortie +AuthorDate: Tue Oct 4 16:36:53 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 17:32:53 2011 -0400 + + Test that g_slice_set_config() works + + For a while it didn't work, due to the ctor-based initialisation of + gslice. + + https://bugzilla.gnome.org/show_bug.cgi?id=660887 + + glib/tests/.gitignore | 1 + + glib/tests/Makefile.am | 3 +++ + glib/tests/slice.c | 28 ++++++++++++++++++++++++++++ + 3 files changed, 32 insertions(+) + +commit 5bfb64d50704f334ae6692184e53de6dbb2e6be4 +Author: Ryan Lortie +AuthorDate: Tue Oct 4 16:38:28 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 17:32:41 2011 -0400 + + gslice: stop using ctors + + We can't initialise gslice from a ctor because g_slice_set_config() + must + be called before gslice initialisation. + + Instead, do the initialisation in a threadsafe way from the + initialisation function for the thread private data. This will + only be + called once per thread so the synchronisation doesn't pose a + significant + overhead here. + + Ensure that we try to grab the thread private data directly on + entrance + to g_slice_alloc() so that we force the initialisation to occur. + Grabbing the private data is the common case anyway. + + https://bugzilla.gnome.org/show_bug.cgi?id=660887 + + glib/gslice.c | 27 +++++++++++++++++++++------ + 1 file changed, 21 insertions(+), 6 deletions(-) + +commit f1512917e6e46e30000bcca2ebf06ef9d15b751d +Author: Ryan Lortie +AuthorDate: Tue Oct 4 16:08:27 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 16:08:27 2011 -0400 + + win32: stop leaking GPrivate data + + Instead of running the GPrivate destructors from our thread proxy + code, + run it from the DllMain handler for the DLL_THREAD_DETACH case. + + This should ensure that thread-local data is free at the exit of all + threads -- not just the ones we created for ourselves. + + https://bugzilla.gnome.org/show_bug.cgi?id=660745 + + glib/glib-init.c | 4 +++ + glib/glib-init.h | 1 + + glib/gthread-win32.c | 95 + +++++++++++++++++++++++++++------------------------- + 3 files changed, 54 insertions(+), 46 deletions(-) + +commit dd09a95543dd9e2156a635e81892d2c583177f08 +Author: Ryan Lortie +AuthorDate: Tue Oct 4 16:02:16 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 16:02:16 2011 -0400 + + Add GPrivate destroy notify testcase + + Ensure that GPrivate destroy notifies are properly called. + + This test currently fails on win32 (where we are leaking). + + https://bugzilla.gnome.org/show_bug.cgi?id=660745 + + glib/tests/private.c | 52 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 52 insertions(+) + +commit 2e5cb6f52242a235f09d0b72954ed06591c01c06 +Author: Ryan Lortie +AuthorDate: Tue Oct 4 15:44:48 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 15:44:48 2011 -0400 + + win32 fixes from g_thread_init() deprecation + + I can't even begin to imagine how these fell through the cracks... + + glib/gmessages.c | 4 ---- + glib/gthread-win32.c | 2 +- + glib/gutils.c | 23 +---------------------- + 3 files changed, 2 insertions(+), 27 deletions(-) + +commit 1bf01efb9f41a3b261e480f4cee0c3385ce3cfcb +Author: Ryan Lortie +AuthorDate: Tue Oct 4 15:34:15 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 15:34:15 2011 -0400 + + gitignore + + glib/tests/.gitignore | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit 47444dacc069be5984df4064ae382d45a9ae8c9e +Author: Ryan Lortie +AuthorDate: Tue Oct 4 15:30:39 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 15:31:49 2011 -0400 + + Deprecate g_thread_init() + + Move the last few things that needed thread-safe initialisation to a + global ctor. + + https://bugzilla.gnome.org/show_bug.cgi?id=660744 + + glib/Makefile.am | 2 + + glib/deprecated/gthread-deprecated.c | 49 +++++++ + glib/deprecated/gthread.h | 15 +++ + glib/glib-init.c | 246 + +++++++++++++++++++++++++++++++++++ + glib/glib-init.h | 38 ++++++ + glib/gmain.c | 4 - + glib/gmem.c | 54 +------- + glib/gmessages.c | 87 +------------ + glib/grand.c | 2 - + glib/gslice.c | 3 - + glib/gstrfuncs.c | 2 - + glib/gthread.c | 71 ---------- + glib/gthread.h | 14 -- + glib/gthreadpool.c | 1 - + glib/gthreadprivate.h | 3 - + glib/gutils.c | 95 -------------- + glib/gwin32.c | 2 - + gobject/gtype.c | 3 - + gthread/gthread-impl.c | 13 -- + 19 files changed, 353 insertions(+), 351 deletions(-) + +commit 310c3ed4cc733f47b88b44fb03757bd7213a4f9a +Author: Ryan Lortie +AuthorDate: Wed Sep 21 21:20:07 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 15:31:49 2011 -0400 + + Clean up process of calling g_debug_init() + + Make sure that it calls absolutely nothing that may ever recurse back + into GLib again: + + - g_ascii_strcasecmp() is unsafe because it has g_return_if_fail() + at + the top. As far as I know, the only ASCII character letter that + would get special treatment here is "i" and that appears in + neither + "help" nor "all". + + - g_getenv() is very complicated on Windows, so use a simple version + that is sufficient for our purposes. + + Now that it's completely safe, we can just call it from g_logv() + in the + usual way without all of the hacks. + + https://bugzilla.gnome.org/show_bug.cgi?id=660744 + + glib/gmessages.c | 83 + ++++++++++++++++++++++---------------------------------- + glib/gutils.c | 16 +++++++---- + 2 files changed, 43 insertions(+), 56 deletions(-) + +commit 1481b7bca3c24149a2970758bc8762e1318f361e +Author: Dan Winship +AuthorDate: Tue Jun 21 18:21:27 2011 -0400 +Commit: Dan Winship +CommitDate: Tue Oct 4 13:20:34 2011 -0400 + + Add _g_io_module_get_default(), use to simplify other *_get_default()s + + Add _g_io_module_get_default(), which implements the + figure-out-the-best-available-module-that-is-actually-usable logic, + and use that to simplify g_proxy_resolver_get_default(), + g_settings_backend_get_default(), g_tls_backend_get_default(), and + g_vfs_get_default(). + + https://bugzilla.gnome.org/show_bug.cgi?id=620932 + + gio/giomodule-priv.h | 5 ++ + gio/giomodule.c | 127 + +++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gproxyresolver.c | 52 ++------------------ + gio/gsettingsbackend.c | 63 ++++++++---------------- + gio/gtlsbackend.c | 35 +------------- + gio/gvfs.c | 53 ++------------------- + 6 files changed, 161 insertions(+), 174 deletions(-) + +commit 38d21f6d8a761cf211c0e0ca21c394b4824d13f2 +Author: Dan Winship +AuthorDate: Thu Sep 22 11:52:53 2011 -0400 +Commit: Dan Winship +CommitDate: Tue Oct 4 13:20:28 2011 -0400 + + gsettingsbackend: remove useless check + + GMemorySettingsBackend is always present, so there's no need to check + for "no backends available" + + https://bugzilla.gnome.org/show_bug.cgi?id=620932 + + gio/gsettingsbackend.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit afa604f88179b4c95bdfe4e1819a93318f7b1d3f +Author: Dan Winship +AuthorDate: Tue Oct 4 13:19:21 2011 -0400 +Commit: Dan Winship +CommitDate: Tue Oct 4 13:19:21 2011 -0400 + + gio/tests/socket-client: fix a crash (and some indentation) + + gio/tests/socket-client.c | 23 ++++++++++++++++------- + 1 file changed, 16 insertions(+), 7 deletions(-) + +commit 53fb4e986777ccad3b382151a23765c162a645c4 +Author: Chun-wei Fan +AuthorDate: Tue Oct 4 23:52:38 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Oct 5 00:57:34 2011 +0800 + + Bug 660851: Update GIO for changes in GThread API + + gsocket.c: Use intern string instead of GStaticPrivate/ + g_static_private_set, as Dan suggested. + + gio/gsocket.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 82fae72ae9d68bcce23c47c9f7046a50bb226105 +Author: Bastien Nocera +AuthorDate: Mon Oct 3 15:27:15 2011 +0100 +Commit: Bastien Nocera +CommitDate: Tue Oct 4 17:10:39 2011 +0100 + + [gio] Improve doc for g_file_make_directory_with_parents() + + g_file_make_directory_with_parents() will fail for already + existing directories, unlike g_mkdir_with_parents(), so mention + this clearly in the docs. + + https://bugzilla.gnome.org/show_bug.cgi?id=660791 + + gio/gfile.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 449a1e8bfd0ea7e8db1e3a436cf182b5cc71aa75 +Author: Ryan Lortie +AuthorDate: Tue Oct 4 11:07:15 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 11:57:35 2011 -0400 + + Fix an invalid non-looping use of GCond + + The GIOScheduler was using a GCond in a way that didn't deal with the + possibility of spurious wakeups. Add an explicit predicate and + a loop. + + Problem caught by Matthias Clasen. + + https://bugzilla.gnome.org/show_bug.cgi?id=660739 + + gio/gioscheduler.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit c474cd71ba3fe205865966c4a1467916597d43c4 +Author: Ryan Lortie +AuthorDate: Mon Oct 3 23:44:37 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 11:57:34 2011 -0400 + + GIO: switch a couple more GMutex users to _init() + + Move a couple more GIO users off of _new()/_free() to + _init()/_clear(). + + https://bugzilla.gnome.org/show_bug.cgi?id=660739 + + gio/gioscheduler.c | 41 ++++++++++++++++++----------------------- + gio/gtlsinteraction.c | 38 +++++++++++++++++++------------------- + 2 files changed, 37 insertions(+), 42 deletions(-) + +commit e517fb6cb030c678918932aad5c0e63b4e0b1beb +Author: Ryan Lortie +AuthorDate: Tue Oct 4 11:52:47 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 11:52:47 2011 -0400 + + Make G_ASSERT_STATIC work with clang + + A simplified variant of an approach proposed by Behdad. + + https://bugzilla.gnome.org/show_bug.cgi?id=660413 + + glib/gmacros.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7d4dea748d74a648989fe5d62361c1b151725f61 +Author: Ryan Lortie +AuthorDate: Tue Oct 4 00:09:53 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 11:13:47 2011 -0400 + + GDBus codegen: generate code with embedded GMutex + + Modify GDBus code generator to emit code that uses GMutex embedded + into + the structure of the skeleton instead of a pointer. + + https://bugzilla.gnome.org/show_bug.cgi?id=660739 + + gio/gdbus-2.0/codegen/codegen.py | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) + +commit 8bcdabf25a16bfcbc14696849ecf34689022469b +Author: Ryan Lortie +AuthorDate: Tue Oct 4 00:02:36 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 11:13:46 2011 -0400 + + GThreadedResolver: port to embedded GMutex/GCond + + This is the only case that was non trivial to port, due to some of the + logic being based on checking the GCond* for being non-%NULL. + + https://bugzilla.gnome.org/show_bug.cgi?id=660739 + + gio/gthreadedresolver.c | 41 ++++++++++++++++++++--------------------- + 1 file changed, 20 insertions(+), 21 deletions(-) + +commit 518feb45eb1522f3e80125372d78b225b4e2e6e1 +Author: Ryan Lortie +AuthorDate: Mon Oct 3 23:52:13 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 11:13:46 2011 -0400 + + GMain, ThreadPool: embed GCond in struct + + Use an embedded GCond and g_cond_init()/clear() instead of a pointer + with g_cond_new() and _free(). + + https://bugzilla.gnome.org/show_bug.cgi?id=660739 + + glib/gmain.c | 24 ++++++++---------------- + glib/gthreadpool.c | 14 +++++--------- + 2 files changed, 13 insertions(+), 25 deletions(-) + +commit 19cd57d4f3d1da19b3792f6294d354c2b3c70b85 +Author: Ryan Lortie +AuthorDate: Mon Oct 3 23:33:57 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 11:13:46 2011 -0400 + + GCancellable: use GCond and GMutex directly + + Use a statically-allocated GCond and directly use GMutex instead of + making use of the undocumented G_LOCK_NAME() macro. + + https://bugzilla.gnome.org/show_bug.cgi?id=660739 + + gio/gcancellable.c | 51 + +++++++++++++++++++++++++++------------------------ + 1 file changed, 27 insertions(+), 24 deletions(-) + +commit 5f48e2cde5cb2871abb4e07b16140f52244d36ff +Author: Ryan Lortie +AuthorDate: Mon Oct 3 23:26:55 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 11:13:46 2011 -0400 + + GDBus: switch to struct-embedded GMutex and GCond + + Now that we have those, we should use them. + + https://bugzilla.gnome.org/show_bug.cgi?id=660739 + + gio/gdbusconnection.c | 22 ++++++------ + gio/gdbusinterfaceskeleton.c | 44 +++++++++++------------ + gio/gdbusobjectmanagerclient.c | 58 +++++++++++++++--------------- + gio/gdbusobjectmanagerserver.c | 52 +++++++++++++-------------- + gio/gdbusobjectproxy.c | 44 +++++++++++------------ + gio/gdbusobjectskeleton.c | 50 +++++++++++++------------- + gio/gdbusprivate.c | 80 + +++++++++++++++++++++--------------------- + 7 files changed, 175 insertions(+), 175 deletions(-) + +commit e03db42792220e75fe7587f6c37493fd071e2b65 +Author: Chun-wei Fan +AuthorDate: Tue Oct 4 13:56:30 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Oct 4 23:08:12 2011 +0800 + + gstringchunk.c: Include gutils.h + + This is due to usage of the inline keyword which may not be + universally + defined unless guils.h is included. + + glib/gstringchunk.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 13bd399d0a369cd62590777f8da6f3c3e7e21172 +Author: Ryan Lortie +AuthorDate: Tue Oct 4 10:59:29 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 11:00:31 2011 -0400 + + Add README notes about recent changes + + README.in | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 794c1a30bc27b4c8d77537813acb1213d5ac80f2 +Author: Ryan Lortie +AuthorDate: Mon Oct 3 14:40:00 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 11:00:31 2011 -0400 + + macro wrappers for g_once_init_enter/leave + + Give the macro wrapper treatment to g_once_init_enter() and leave() in + the same style that we did for gatomic. + + It is now possible to use these macros with any pointer-sized object, + and not just gsize. The leave() macro ensures that the initialisation + result is a compatible type with the pointer that it is being written + to. + + Just like with gatomic, there could be problems caused by use of + (void*) + casts. We'll see how that goes, and reevaluate if necessary. + + https://bugzilla.gnome.org/show_bug.cgi?id=660743 + + glib/deprecated/gthread-deprecated.c | 7 +++++++ + glib/deprecated/gthread.h | 2 ++ + glib/gthread.c | 15 ++++++++------ + glib/gthread.h | 40 + ++++++++++++++++++++++-------------- + glib/tests/once.c | 12 +++++++++++ + 5 files changed, 55 insertions(+), 21 deletions(-) + +commit 8f58c2c0c43fadc19463aec214b27bc41c6a1651 +Author: Antoine Jacoutot +AuthorDate: Tue Oct 4 07:52:10 2011 +0200 +Commit: Antoine Jacoutot +CommitDate: Tue Oct 4 16:30:18 2011 +0200 + + Fix DATADIRNAME on OpenBSD. + + On OpenBSD translation files are always installed under + PREFIX/share/locale, + there is no such thing as PREFIX/lib/locale; according to that, set + DATADIRNAME to "share". + + m4macros/glib-gettext.m4 | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 037c91f845246b692acf5ff99c233b46514504ac +Author: Ryan Lortie +AuthorDate: Sun Oct 2 12:08:56 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 4 09:45:36 2011 -0400 + + rec-mutex testcase: add a performance test + + Add a reasonable performance test for uncontended and contended + cases at + different levels of recursion depth. + + glib/tests/rec-mutex.c | 88 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 88 insertions(+) + +commit 7973d9f8bac34fa090e330dec136b251f305d06c +Author: Simon McVittie +AuthorDate: Mon Oct 3 14:27:15 2011 +0100 +Commit: Simon McVittie +CommitDate: Tue Oct 4 12:39:24 2011 +0100 + + In the GVariant intro, mention lack of built-in endianness, and + rationale + + Presumably, the rationale for not storing the endianness is that + GVariant is a recursive type system, and in a sane format, endianness + only needs to be stored once per blob of data (once per D-Bus message, + once per file on disk, etc.). + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=632049 + Signed-off-by: Simon McVittie + Reviewed-by: Ryan Lortie + + glib/gvariant.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit ebb544f549c77d0e98431ee38c55824ff4de81ab +Author: Simon McVittie +AuthorDate: Mon Oct 3 14:20:51 2011 +0100 +Commit: Simon McVittie +CommitDate: Tue Oct 4 12:39:22 2011 +0100 + + g_variant_get_data: mention what you need to know to deserialise + + Also include a shorter version in the docs for g_variant_store, with a + pointer to g_variant_get_data. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=632049 + Signed-off-by: Simon McVittie + Reviewed-by: Ryan Lortie + + glib/gvariant-core.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit 3869e40ac339a9395e47a9aa81b017dbaf8ad925 +Author: Simon McVittie +AuthorDate: Mon Oct 3 14:19:58 2011 +0100 +Commit: Simon McVittie +CommitDate: Tue Oct 4 12:39:15 2011 +0100 + + g_variant_new_from_data: mention that the caller might need to + byteswap + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=632049 + Signed-off-by: Simon McVittie + Reviewed-by: Ryan Lortie + + glib/gvariant.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 3d7264ce703f7dd55b6deac91562d64db69059ef +Author: Simon McVittie +AuthorDate: Tue Oct 4 12:39:08 2011 +0100 +Commit: Simon McVittie +CommitDate: Tue Oct 4 12:39:08 2011 +0100 + + Fix a typo in describing GVariant serialisation functions + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=632049 + Signed-off-by: Simon McVittie + Reviewed-by: Ryan Lortie + + glib/gvariant.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 83afcc0a29202f7171e185c93ab0183dbf80cb39 +Author: Simon McVittie +AuthorDate: Tue Oct 4 10:46:13 2011 +0100 +Commit: Simon McVittie +CommitDate: Tue Oct 4 12:38:32 2011 +0100 + + Escape percent sign in g_variant_new_parsed documentation + + Strings matching /%[a-z]/ are special syntax for gtk-doc. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=632049 + Signed-off-by: Simon McVittie + Reviewed-by: Ryan Lortie + + glib/gvariant-parser.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d34c9bc6f335b22260df25d849cb3f26d3998349 +Author: Simon McVittie +AuthorDate: Wed Oct 13 12:22:41 2010 +0100 +Commit: Simon McVittie +CommitDate: Tue Oct 4 12:38:30 2011 +0100 + + g_variant_get_fixed_array: document which types are appropriate + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=632049 + Signed-off-by: Simon McVittie + Reviewed-by: Ryan Lortie + + glib/gvariant.c | 33 ++++++++++++++++++++++++++++----- + 1 file changed, 28 insertions(+), 5 deletions(-) + +commit 9e827ab6152cf1c83c27bbffa2686390c78fe46e +Author: Simon McVittie +AuthorDate: Wed Oct 13 12:21:22 2010 +0100 +Commit: Simon McVittie +CommitDate: Tue Oct 4 12:38:20 2011 +0100 + + GVariant docs: be clear that the serialisation format isn't the same + as D-Bus + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=632049 + Signed-off-by: Simon McVittie + Reviewed-by: Ryan Lortie + + glib/gvariant.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit f778564ba2c389856904de3cc80126d7cfb988c2 +Author: Simon McVittie +AuthorDate: Tue Oct 4 09:48:35 2011 +0100 +Commit: Simon McVittie +CommitDate: Tue Oct 4 09:48:35 2011 +0100 + + Be clear that g_str_hash etc. don't accept NULL + + This covers the str, double, int, int64 hash and equal functions, + but not + anything that takes an "object", since the convention is that "object + methods" never accept NULL anyway. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=592715 + Signed-off-by: Simon McVittie + Reviewed-by: Colin Walters + + glib/ghash.c | 23 +++++++++++++++-------- + 1 file changed, 15 insertions(+), 8 deletions(-) + +commit 34a122454966546fed0ccbb73338b28021e76481 +Author: Simon McVittie +AuthorDate: Tue Oct 4 09:44:27 2011 +0100 +Commit: Simon McVittie +CommitDate: Tue Oct 4 09:44:27 2011 +0100 + + Be completely clear about what g_direct_hash, g_direct_equal do + + Also annotate them as (allow-none), more for the benefit of gtk-doc + readers than introspection. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=592715 + Signed-off-by: Simon McVittie + Reviewed-by: Colin Walters + + glib/ghash.c | 20 ++++++++++++++------ + 1 file changed, 14 insertions(+), 6 deletions(-) + +commit 06c96ab1e59dead8a920433498624b946abdb9ab +Author: Simon McVittie +AuthorDate: Tue Oct 4 09:42:28 2011 +0100 +Commit: Simon McVittie +CommitDate: Tue Oct 4 09:42:28 2011 +0100 + + GHashTable: be more clear what g_int_hash wants + + Using g_int_hash, g_int_equal with keys like GINT_TO_POINTER (n) + seems to + be a reasonably common GLib-novice mistake. It doesn't help that the + documentation for GHashFunc was ambiguous about this. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=592715 + Signed-off-by: Simon McVittie + Reviewed-by: Colin Walters + + glib/ghash.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +commit 5bed8317ea0dc615b02f34bde9b5dfa7374c5600 +Author: Simon McVittie +AuthorDate: Mon Oct 3 18:48:15 2011 +0100 +Commit: Simon McVittie +CommitDate: Tue Oct 4 09:35:54 2011 +0100 + + Warn when classes/instances exceed the allowed size, if possible + + It's impossible to check this if the library user is using + g_type_register_static, but in that case their compiler should + hopefully + warn about the truncation. This fixes it for G_DEFINE_TYPE and + friends, + at least. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=659916 + Signed-off-by: Simon McVittie + Reviewed-by: Colin Walters + + gobject/gtype.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 29a71915d87aa3053ed60efbe30bd7cc63ae2114 +Author: Chun-wei Fan +AuthorDate: Tue Oct 4 14:06:10 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Oct 4 14:06:10 2011 +0800 + + Update glibconfig.h.win32(.in) + + Update typedef of GStaticMutex here to match the typedef of GMutex + in glib/gthread.h (due to commit c5634df6) + + glib/glibconfig.h.win32.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ca6a9850395ede6f8de8a1a34096eb32de3ba94d +Author: Matthias Clasen +AuthorDate: Tue Oct 4 00:46:10 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Oct 4 00:46:10 2011 -0400 + + Improve test coverage in the thread tests + + Use g_thread_new_full() in some places. + + glib/tests/thread.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit e6fa27a5f80f05a6661b803620639e6f0ae96852 +Author: Matthias Clasen +AuthorDate: Tue Oct 4 00:45:42 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Oct 4 00:45:42 2011 -0400 + + Improve test coverage in the GString tests + + glib/tests/string.c | 51 + ++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 50 insertions(+), 1 deletion(-) + +commit fc3248065813557c37e1f5ec3442b652d4b0d404 +Author: Matthias Clasen +AuthorDate: Tue Oct 4 00:44:58 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Oct 4 00:44:58 2011 -0400 + + Improve testcoverage in the rec-mutex test + + Test g_rec_mutex_trylock() in both locked and unlocked cases. + + glib/tests/rec-mutex.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 823e32655e2fc4810dee34ba1bdd5553bb383a42 +Author: Matthias Clasen +AuthorDate: Mon Oct 3 23:55:02 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 3 23:55:02 2011 -0400 + + Add a few more tests + + This brings test coverage for glist.c and glist.c to the + coveted 100% lines mark. + + glib/tests/list.c | 69 + ++++++++++++++++++++++++++++++++++++++++++++++++++++-- + glib/tests/slist.c | 53 ++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 119 insertions(+), 3 deletions(-) + +commit 1fe4429318b147f275e730ef5a69cb94a0a25062 +Author: Matthias Clasen +AuthorDate: Mon Oct 3 23:54:08 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 3 23:54:08 2011 -0400 + + Remove bits of dead code identified by coverage tests + + These lines could were not hit by our tests, and examination + of the code reveals that they can't ever be hit. + + glib/glist.c | 16 ++++++---------- + glib/gslist.c | 12 ++---------- + 2 files changed, 8 insertions(+), 20 deletions(-) + +commit b74f46db6b585abe7fb665651e51888aea88b356 +Author: Matthias Clasen +AuthorDate: Mon Oct 3 22:22:55 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 3 22:25:47 2011 -0400 + + Add some more thread tests + + glib/tests/Makefile.am | 3 ++ + glib/tests/thread.c | 119 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 122 insertions(+) + +commit 070aefcf59b0238f4cf644cb9ec75cc0b2d4ffaf +Author: Ryan Lortie +AuthorDate: Mon Oct 3 22:18:01 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 3 22:18:01 2011 -0400 + + GAsyncQueue: properly set free function + + The copying of code from g_async_queue_new() to + g_async_queue_new_full() + in ef08aa786bca87c520ef319b97df4b3ed0782233 copied the setting of the + free function to NULL (instead of the one passed in by the user). + + Fix that up so that the test passes again. + + https://bugzilla.gnome.org/show_bug.cgi?id=660843 + + glib/gasyncqueue.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3f982cb9ab1dc9a435c5bba2f0438f165eba25dc +Author: David Zeuthen +AuthorDate: Thu Sep 29 23:46:28 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Oct 3 14:06:47 2011 -0400 + + GUnixMountPoint: expose options + + Make the options from an /etc/fstab entry available as public API - + this can be used to support options such as + + comment=gvfs.name=Foo\040Bar + + to e.g. set the name of an fstab mount in the UI to "Foo Bar". + + https://bugzilla.gnome.org/show_bug.cgi?id=660536 + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 1 + + gio/gunixmounts.c | 28 ++++++++++++++++++++++++++++ + gio/gunixmounts.h | 1 + + 4 files changed, 31 insertions(+) + +commit 3106391694408877ebf6e8451146c5ac5d7bb017 +Author: Ryan Lortie +AuthorDate: Mon Oct 3 10:19:14 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 3 10:19:38 2011 -0400 + + Revert "GSettings: don't abort on missing schemas" + + This reverts commit c841c2ce3fda6f754c88ae2c9099f36dff2f0814. + + This approach has been an unmitigated disaster. We're getting + all sorts + of crashes due to functions that are returning NULL because they can't + find the schema for the default value. The people who get these + crashes + are then confused about the root cause of the problem and waste a + lot of + time trying to figure it out. + + Until we find a better solution, we should go back to what we had + before. + + https://bugzilla.gnome.org/show_bug.cgi?id=655366 + + gio/gsettings.c | 77 + +++++++++++---------------------------------------- + gio/gsettingsschema.c | 5 +--- + gio/tests/gsettings.c | 26 ----------------- + 3 files changed, 17 insertions(+), 91 deletions(-) + +commit 9d989c7b8aebda0e56aaadb843def0f48f909156 +Author: Matthias Clasen +AuthorDate: Sun Oct 2 23:53:56 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 23:53:56 2011 -0400 + + Cosmetics + + glib/gthread.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit fa6710ab6f365b512281049276413747b311821d +Author: Matthias Clasen +AuthorDate: Sun Oct 2 23:43:17 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 23:43:45 2011 -0400 + + Documentation fixes + + docs/reference/glib/glib-sections.txt | 113 +++++++++++++++-------------- + glib/deprecated/gthread-deprecated.c | 9 +-- + glib/gthread-posix.c | 3 +- + glib/gthread.c | 133 + ++++++++++++++++++---------------- + 4 files changed, 135 insertions(+), 123 deletions(-) + +commit 65b84bb7d0e429a30f344ebc149dc3d8d79bddda +Author: Matthias Clasen +AuthorDate: Sun Oct 2 22:38:49 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 23:43:45 2011 -0400 + + Fix doc build + + The markup here was not only broken, it was also unnecessary, + since gtk-doc knows to apply tags to things + that end with () already. + + glib/gthread-posix.c | 14 ++++++-------- + 1 file changed, 6 insertions(+), 8 deletions(-) + +commit 65056180dd2fee9187426354e8ef5161bf980578 +Author: Ryan Lortie +AuthorDate: Sun Oct 2 23:37:20 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 2 23:37:20 2011 -0400 + + locks: Add initialisation notes + + For each of the 4, mention that static storage or _init() is needed. + + glib/gthread.c | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit c5634df6d3ffe2da013a246880b183140b8f1260 +Author: Ryan Lortie +AuthorDate: Sun Oct 2 20:59:15 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 2 22:33:11 2011 -0400 + + locks: change the ABI just a bit + + Add a little bit more room in the ABI for our synchronisation + primatives + since we're going to need it when we add native implementations on + Linux. + + Also: rename the pointer field and add /*< private >*/ annotations. + + glib/deprecated/gthread.h | 2 +- + glib/gthread-posix.c | 42 +++++++++++++++++++++--------------------- + glib/gthread-win32.c | 15 +++++++-------- + glib/gthread.h | 20 ++++++++++++++------ + 4 files changed, 43 insertions(+), 36 deletions(-) + +commit 2a677d1370a1983c2c5e1a4a6dd5f0d9fa9868b3 +Author: Ryan Lortie +AuthorDate: Sun Oct 2 20:51:38 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 2 22:33:10 2011 -0400 + + locks: drop _INIT macros + + All locks are now zero-initialised, so we can drop the G_*_INIT macros + for them. + + Adjust various users around GLib accordingly and change the docs. + + https://bugzilla.gnome.org/show_bug.cgi?id=659866 + + docs/reference/glib/glib-sections.txt | 4 --- + gio/gunionvolumemonitor.c | 2 +- + glib/deprecated/gthread.h | 2 +- + glib/gbitlock.c | 2 +- + glib/glib-ctor.h | 2 +- + glib/gmem.c | 2 +- + glib/gmessages.c | 2 +- + glib/gslice.c | 2 +- + glib/gthread-posix.c | 17 ++++----- + glib/gthread-win32.c | 9 ++--- + glib/gthread.c | 67 + ++++------------------------------- + glib/gthread.h | 7 +--- + glib/gvarianttypeinfo.c | 2 +- + glib/tests/cond.c | 4 +-- + glib/tests/mutex.c | 8 ++--- + glib/tests/private.c | 6 ++-- + glib/tests/rec-mutex.c | 6 ++-- + glib/tests/rwlock.c | 18 +++------- + gmodule/gmodule.c | 2 +- + gobject/gparam.c | 2 +- + gobject/gtype.c | 4 +-- + tests/thread-test.c | 2 +- + 22 files changed, 44 insertions(+), 128 deletions(-) + +commit 3315aee70915deb12374ab1d6134e4414114bec3 +Author: Ryan Lortie +AuthorDate: Sun Oct 2 21:03:49 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 2 22:33:10 2011 -0400 + + Re-enable 'include' testcase + + The bug is fixed now. + + https://bugzilla.gnome.org/show_bug.cgi?id=659866 + + glib/tests/Makefile.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit e081eadda598bc708fbf9dd53a190fc3b0e7fa76 +Author: Ryan Lortie +AuthorDate: Sun Oct 2 20:43:28 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 2 22:33:10 2011 -0400 + + GThread posix: switch to Windows ABI + + Modify the POSIX implementation of the synchronisation primatives + to use + the same ABI as Windows: one pointer for each type. + + This frees us from having to #include and avoids the + problem + with pthread_rwlock_t not being defined under certain compiler + defines. + + A few more changes are expected to the ABI -- they will be committed + separately. + + https://bugzilla.gnome.org/show_bug.cgi?id=659866 + + glib/gthread-posix.c | 198 + +++++++++++++++++++++++++++++++++++++++------------ + glib/gthread.h | 29 -------- + 2 files changed, 152 insertions(+), 75 deletions(-) + +commit 151756631dcac8e74df37c02bf0cf13d9df2e18b +Author: Matthias Clasen +AuthorDate: Sun Oct 2 22:31:45 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 22:31:45 2011 -0400 + + Don't use g_thread_foreach in tests + + tests/threadpool-test.c | 30 +++--------------------------- + 1 file changed, 3 insertions(+), 27 deletions(-) + +commit 3d4846d92309d001697c2827660fa41b5c63dbc4 +Author: Matthias Clasen +AuthorDate: Sun Oct 2 01:29:08 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 22:11:59 2011 -0400 + + Deprecate GStaticPrivate and g_thread_foreach + + This commit moves GStaticPrivate, g_thread_foreach and all + related functions and variables to gthread-deprecated.c. We + introduce some internal API to make this possible. + + g_thread_foreach is not a very useful function, since there is + virtually nothing you can do with a GThread*, and implementing + it requires us to keep a list of threads around. + + GStaticPrivate has been made redundant by adding comparable + capabilities to GPrivate. + + https://bugzilla.gnome.org/show_bug.cgi?id=660635 + + glib/deprecated/gthread-deprecated.c | 324 + +++++++++++++++++++++++++++++++- + glib/deprecated/gthread.h | 18 +- + glib/gthread.c | 348 + ++--------------------------------- + glib/gthread.h | 16 -- + glib/gthreadprivate.h | 20 ++ + 5 files changed, 371 insertions(+), 355 deletions(-) + +commit 12287c8cc70fc65bc7bbeb4f7079b262337fce09 +Author: Matthias Clasen +AuthorDate: Sun Oct 2 09:51:13 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 22:11:58 2011 -0400 + + Don't put threads created with g_thread_new() on the list + + This lets us avoid the overhead of maintaining the global + list in the non-deprecated case. + + https://bugzilla.gnome.org/show_bug.cgi?id=660635 + + glib/deprecated/gthread-deprecated.c | 4 +- + glib/gthread.c | 76 + ++++++++++++++++++++++-------------- + glib/gthreadprivate.h | 8 ++++ + 3 files changed, 56 insertions(+), 32 deletions(-) + +commit 1909d2398ad299b86fb708104d82ce5ab7415d36 +Author: Matthias Clasen +AuthorDate: Sun Oct 2 09:27:08 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 22:11:58 2011 -0400 + + Make thread names useful in a debugger + + Associate the name with the system thread, so that debuggers + can see it. This is currently only implemented for Linux, using + prctl. + + https://bugzilla.gnome.org/show_bug.cgi?id=660635 + + configure.ac | 1 + + glib/gthread-posix.c | 12 +++++++++++- + glib/gthread-win32.c | 6 ++++++ + glib/gthread.c | 3 +++ + glib/gthreadprivate.h | 1 + + 5 files changed, 22 insertions(+), 1 deletion(-) + +commit 0d1a92ca3d234a4291ef3ecbf7df2d57442a63e5 +Author: Matthias Clasen +AuthorDate: Sun Oct 2 10:01:57 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 22:11:58 2011 -0400 + + Add new thread creation API + + Deprecate both g_thread_create functions and add + g_thread_new() and g_thread_new_full(). The new functions + expect a name for the thread. + + Change GThreadPool, GMainContext and GDBus to create named threads. + + https://bugzilla.gnome.org/show_bug.cgi?id=660635 + + gio/gdbusprivate.c | 9 +++--- + glib/deprecated/gthread-deprecated.c | 36 ++++++++++++++++++++-- + glib/deprecated/gthread.h | 4 +++ + glib/glib.symbols | 9 +++--- + glib/gmain.c | 2 +- + glib/gthread.c | 59 + ++++++++++++++++++++++-------------- + glib/gthread.h | 6 ++-- + glib/gthreadpool.c | 2 +- + 8 files changed, 91 insertions(+), 36 deletions(-) + +commit bc67c23bf939d3ad719e860362bdda0737c512a1 +Author: Matthias Clasen +AuthorDate: Sun Oct 2 21:57:06 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 22:11:34 2011 -0400 + + Define GLIB_COMPILATION when building libgthread.so + + This is necessary, because gthreadprivate.h can only be + included inside GLib, otherwise single-include guards trigger. + + gthread/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 34ce4dd0324acd02ceb51d43fdaed5640041d8c1 +Author: Matthias Clasen +AuthorDate: Sun Oct 2 21:57:40 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 22:11:33 2011 -0400 + + Replace static privates by privates + + GStaticPrivate is heading for deprecation soon, and GPrivate + can replace these uses now. + + gio/gcancellable.c | 12 ++++++------ + glib/gutf8.c | 10 +++++----- + gmodule/gmodule.c | 6 +++--- + 3 files changed, 14 insertions(+), 14 deletions(-) + +commit 6f711518230cbb2e09c56a7853e191eb6269faef +Author: Ryan Lortie +AuthorDate: Sun Oct 2 21:13:14 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 2 21:31:45 2011 -0400 + + win32: fix GPrivate fallout + + Fix minor mistake in win32 GPrivate code. + + glib/gthread-win32.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cdd43d43c9be3914bfeca4b1548885b9b44dcabb +Author: Ryan Lortie +AuthorDate: Sun Oct 2 20:24:18 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 2 20:24:18 2011 -0400 + + locks: rename a bunch of parameters + + glib/gthread-posix.c | 84 + ++++++++++++++++++++++++++-------------------------- + glib/gthread.h | 16 +++++----- + 2 files changed, 50 insertions(+), 50 deletions(-) + +commit 8e43470c3827f5980f39bf9da0bc510858daf2be +Author: Ryan Lortie +AuthorDate: Fri Sep 30 14:22:04 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 2 20:04:03 2011 -0400 + + Stop dithering over GPrivate + + Take out the half-private g_private_init() stuff and replace it with a + G_PRIVATE_INIT macro that allows specifying a GDestroyNotify. + + Expose the GPrivate structure in a public header. + + Add a g_private_replace() to (sort of) match the functionality of + g_static_mutex_set(). + + Improve the documentation. + + Deprecate g_private_new(). + + docs/reference/glib/glib-overrides.txt | 22 +--- + docs/reference/glib/glib-sections.txt | 6 +- + glib/deprecated/gthread-deprecated.c | 26 ++++- + glib/deprecated/gthread.h | 3 + + glib/glib.symbols | 1 + + glib/gmessages.c | 7 -- + glib/gslice.c | 4 +- + glib/gthread-posix.c | 197 + +++++++++++++++++++++++++++------ + glib/gthread-win32.c | 83 +++++++++----- + glib/gthread.c | 100 +---------------- + glib/gthread.h | 11 +- + glib/gthreadprivate.h | 14 --- + 12 files changed, 273 insertions(+), 201 deletions(-) + +commit 7a75f56aa16ac13607a13f4e455a4fa4248ff750 +Author: Matthias Clasen +AuthorDate: Sun Oct 2 19:10:16 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 19:10:16 2011 -0400 + + Add a few comments + + glib/gthread.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +commit 7df7c535574fc634461ed17750fdf5bb1e777d2f +Author: Matthias Clasen +AuthorDate: Sun Oct 2 19:09:24 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 19:09:24 2011 -0400 + + Add another GCond test + + This test shows how to implement a barrier using a GCond. + + glib/tests/cond.c | 95 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 95 insertions(+) + +commit 1a5cc98ca2f1474c300a13247533bf0b0b05f1df +Author: Matthias Clasen +AuthorDate: Sun Oct 2 01:21:46 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 18:32:41 2011 -0400 + + Rework the way GStaticPrivate data is freed + + To avoid iterating threads in g_static_private_free(), defer freeing + the per-thread data to thread exit. The one complication here is + that it is possible for the static private index to be reused while + 'old' data is still around. To deal with that case, store the 'owner' + with each per-thread data node, and free old data in + g_static_private_get() if the owner doesn't match. The remaining + possibility that a private index could be reused by a GStaticPrivate + with the same address is sufficiently unlikely that we can probably + ignore it. + + With this change, per-thread data is now truly private again, + and we can drop the lock for it as well. + + https://bugzilla.gnome.org/show_bug.cgi?id=660635 + + glib/gthread.c | 169 + +++++++++++++++++---------------------------------------- + 1 file changed, 50 insertions(+), 119 deletions(-) + +commit 6a31cc66cde646aee5efdd2ba8cc8a203e29f1ed +Author: Matthias Clasen +AuthorDate: Sun Oct 2 09:59:26 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 17:11:42 2011 -0400 + + Whitespace fixes + + glib/gthread.c | 50 +++++++++++++++++++++++++------------------------- + 1 file changed, 25 insertions(+), 25 deletions(-) + +commit 3c02c64474351a2decdab3348b4e9f7ab473bff8 +Author: Matthias Clasen +AuthorDate: Sun Oct 2 17:05:03 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 17:05:14 2011 -0400 + + Clean up includes + + glib/gthread.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +commit 6d2b2ccaa0dea75b848bcff6d83ab03db547b0fe +Author: Matthias Clasen +AuthorDate: Sun Oct 2 16:48:17 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 16:51:32 2011 -0400 + + Add tests for GPrivate and GStaticPrivate + + glib/tests/Makefile.am | 3 + + glib/tests/private.c | 337 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 340 insertions(+) + +commit 3659ca99f5ae2058b53a2fefe052926fe2e1858f +Author: Javier Jardón +AuthorDate: Fri Sep 30 17:21:52 2011 +0100 +Commit: Javier Jardón +CommitDate: Sun Oct 2 17:22:57 2011 +0100 + + tests: Use G_VALUE_INIT + + tests/gobject/gvalue-test.c | 12 ++++++------ + tests/gobject/paramspec-test.c | 10 +++++----- + 2 files changed, 11 insertions(+), 11 deletions(-) + +commit 91713e950ff20b6330ca66fe51c32beb1453e87e +Author: Javier Jardón +AuthorDate: Fri Sep 30 17:04:23 2011 +0100 +Commit: Javier Jardón +CommitDate: Sun Oct 2 17:22:18 2011 +0100 + + docs: Use G_VALUE_INIT + + docs/reference/gobject/tut_gobject.xml | 2 +- + docs/reference/gobject/tut_gtype.xml | 8 ++++---- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit 406f7d2b39dab16cd38ccdbd4c978490eb1a2ba1 +Author: Ryan Lortie +AuthorDate: Fri Sep 30 23:05:27 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 2 00:13:18 2011 -0400 + + mutex testcase: add a performance test + + Add a reasonable performance test for uncontended and contended cases. + + glib/tests/mutex.c | 68 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 68 insertions(+) + +commit 6ef022bbb3b6dbe6f0f34858d7521a7b0ab331e3 +Author: Matthias Clasen +AuthorDate: Sun Oct 2 00:08:54 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 00:08:54 2011 -0400 + + Move all hash functions to ghash.c + + This matches their location in the headers. + + glib/ghash.c | 204 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/gstring.c | 95 ++++++--------------------- + glib/gutils.c | 153 +------------------------------------------ + 3 files changed, 226 insertions(+), 226 deletions(-) + +commit e7ca67f20c9f44478cdaf5832a91dc39086f4c38 +Author: Matthias Clasen +AuthorDate: Sun Oct 2 00:08:13 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 2 00:08:13 2011 -0400 + + GHash: Cosmetic changes + + glib/ghash.c | 424 + +++++++++++++++++++++++++++++++---------------------------- + glib/ghash.h | 134 ++++++++----------- + 2 files changed, 281 insertions(+), 277 deletions(-) + +commit ed325b18798f29ce1efbc5377056c0e07cfe4175 +Author: Matthias Clasen +AuthorDate: Sat Oct 1 23:38:52 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 23:38:52 2011 -0400 + + One forgotten moved doc + + glib/gmessages.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit 10d86cda0266d7467cab449892e5fbb9258c607f +Author: Matthias Clasen +AuthorDate: Sat Oct 1 23:38:23 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 23:38:23 2011 -0400 + + Move GStringChunk into its own files + + glib/Makefile.am | 2 + + glib/glib.h | 1 + + glib/gstring.c | 271 ------------------------------------------- + glib/gstring.h | 17 --- + glib/gstringchunk.c | 325 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/gstringchunk.h | 53 +++++++++ + 6 files changed, 381 insertions(+), 288 deletions(-) + +commit 0e8bcc3ed7121c672af6ce52d8985a4d60f8545b +Author: Matthias Clasen +AuthorDate: Sat Oct 1 23:27:45 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 23:27:45 2011 -0400 + + Move GString docs inline + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/strings.sgml | 369 + ---------------------------------- + glib/gstring.c | 29 +++ + glib/gstring.h | 12 -- + 4 files changed, 30 insertions(+), 381 deletions(-) + +commit 459b14d89ae1065041d55089b82c170ec8e0f631 +Author: Matthias Clasen +AuthorDate: Sat Oct 1 23:23:40 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 23:23:40 2011 -0400 + + GString: cosmetic cleanups + + glib/gstring.c | 535 + +++++++++++++++++++++++++++++---------------------------- + glib/gstring.h | 180 ++++++++++--------- + 2 files changed, 357 insertions(+), 358 deletions(-) + +commit 7154d44c5c5a23e0a631f571bc689ff43995ee82 +Author: Matthias Clasen +AuthorDate: Sat Oct 1 23:03:09 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 23:03:09 2011 -0400 + + Move file utility docs inline + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/fileutils.sgml | 536 + -------------------------------- + glib/gdir.c | 6 + + glib/gfileutils.c | 135 ++++++++ + glib/gmappedfile.c | 10 +- + 5 files changed, 151 insertions(+), 537 deletions(-) + +commit ca77b0e252aa783ff25db7a247986a5ec45ea84f +Author: Matthias Clasen +AuthorDate: Sat Oct 1 22:48:27 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 22:48:27 2011 -0400 + + Move string utility docs inline + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/string_utils.sgml | 903 + ----------------------------- + glib/gstrfuncs.c | 427 ++++++++++++-- + 3 files changed, 378 insertions(+), 953 deletions(-) + +commit 793ff83527bd6be8117b483d4b8dde55f1d6f3b9 +Author: Matthias Clasen +AuthorDate: Sat Oct 1 22:00:41 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 22:00:41 2011 -0400 + + Move test docs inline + + docs/reference/glib/tmpl/.gitignore | 2 + + docs/reference/glib/tmpl/testing.sgml | 691 + ---------------------------------- + glib/gtestutils.c | 369 +++++++++++++++++- + 3 files changed, 370 insertions(+), 692 deletions(-) + +commit 9d3b37ac3fa7d5ea25a897e5baa7c7a66da0873f +Author: Matthias Clasen +AuthorDate: Sat Oct 1 21:03:14 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 21:03:14 2011 -0400 + + Move keyfile docs inline + + docs/reference/glib/tmpl/keyfile.sgml | 939 + ---------------------------------- + glib/gkeyfile.c | 364 ++++++++++++- + 2 files changed, 361 insertions(+), 942 deletions(-) + +commit 3d814e7a2ae80f422889c5f830af7e26c1f88a02 +Author: Matthias Clasen +AuthorDate: Sat Oct 1 20:16:32 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 20:22:47 2011 -0400 + + GAsyncQueue: simplify an internal function + + g_cond_timed_wait() behaves like g_cond_wait() when given + NULL, so no need have different branches for that in + g_async_queue_pop_intern_unlocked(). + + glib/gasyncqueue.c | 27 +++++++-------------------- + 1 file changed, 7 insertions(+), 20 deletions(-) + +commit 8c5400ff45b28a68cd97965abe16ce45dca2548c +Author: Matthias Clasen +AuthorDate: Sat Oct 1 20:11:38 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 20:22:47 2011 -0400 + + GAsyncQueue: internal cleanup + + Turn the 'try' parameter of g_async_queue_pop_intern_unlocked + into a 'wait', for better alignment with the GCond api. + + glib/gasyncqueue.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 793cf54275dea80d15e724d803273e79195308d0 +Author: Matthias Clasen +AuthorDate: Sat Oct 1 20:09:35 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 20:22:46 2011 -0400 + + GAsyncQueue: embed the GCond + + Use g_cond_init/clear, now that we have them. + + glib/gasyncqueue.c | 18 +++++++----------- + 1 file changed, 7 insertions(+), 11 deletions(-) + +commit ef08aa786bca87c520ef319b97df4b3ed0782233 +Author: Matthias Clasen +AuthorDate: Sat Oct 1 19:24:24 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 20:22:46 2011 -0400 + + GAsyncQueue: Cosmetic fixes + + Mostly doc formatting and whitespace fixes. + + glib/gasyncqueue.c | 496 + ++++++++++++++++++++++++++++------------------------- + glib/gasyncqueue.h | 70 ++------ + 2 files changed, 281 insertions(+), 285 deletions(-) + +commit 93abf20d3bc17fcf14cfb605b2142113dc1fd8e9 +Author: Matthias Clasen +AuthorDate: Sat Oct 1 18:42:48 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 20:22:46 2011 -0400 + + GAsyncQueue: Move private API to a private header + + glib/Makefile.am | 5 +++-- + glib/gasyncqueue.c | 1 + + glib/gasyncqueue.h | 3 --- + glib/gasyncqueueprivate.h | 31 +++++++++++++++++++++++++++++++ + glib/gthreadpool.c | 23 +++++++++++++---------- + 5 files changed, 48 insertions(+), 15 deletions(-) + +commit b17b02da796628afe7829f5e8929c7666eb54f31 +Author: Matthias Clasen +AuthorDate: Sat Oct 1 18:20:27 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 20:22:46 2011 -0400 + + GThreadPool: cosmetic cleanups + + Mostly documentation and formatting trivial, but also add + boolean return types to GError taking functions. + + glib/gthreadpool.c | 809 + +++++++++++++++++++++++++++-------------------------- + glib/gthreadpool.h | 49 ++-- + 2 files changed, 444 insertions(+), 414 deletions(-) + +commit 81e161edf261b4a8943f256531c57f440bcea2a4 +Author: Matthias Clasen +AuthorDate: Sat Oct 1 18:43:15 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 20:22:45 2011 -0400 + + GThread: cosmetic fix + + Explicitly include gthread.h, don't rely on gthreadprivate.h + to pull it in. + + glib/gthread.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 5135241633cd13fa2ff6bee9b15f763c4c5d90e4 +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Sun Oct 2 11:21:18 2011 +1100 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Sun Oct 2 11:21:29 2011 +1100 + + Updated Vietnamese translation + + po/vi.po | 152 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 75 insertions(+), 77 deletions(-) + +commit 98818afa0859dac68f57d07d6fec0b72d2b45ff7 +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Sun Oct 2 11:08:49 2011 +1100 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Sun Oct 2 11:21:28 2011 +1100 + + po/vi: import from Damned Lies + + po/vi.po | 75 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 38 insertions(+), 37 deletions(-) + +commit 1af5ac0179cfc98c8f7c0c2ed700e56ba072ec35 +Author: Matthias Clasen +AuthorDate: Sat Oct 1 13:47:54 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 13:47:54 2011 -0400 + + Add an index for 2.32 api additions + + docs/reference/glib/glib-docs.sgml | 4 ++++ + 1 file changed, 4 insertions(+) + +commit b4dc4902c6b7099266985421b775084b68e5d44e +Author: Matthias Clasen +AuthorDate: Sat Oct 1 13:47:09 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 13:47:09 2011 -0400 + + Mark g_thread_create_with_stack_size as new API + + glib/gthread.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 65b7a20c67406f9309b2b8e1e7d7aaef98b81d02 +Author: Ryan Lortie +AuthorDate: Mon Sep 26 11:21:55 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 1 09:34:44 2011 -0400 + + GSettings schemas: allow for zero items in schema + + GVDB deals with empty lists by returning NULL for the list instead + of a + zero-length (non-NULL) strv. We can work around that in + GSettingsSchema + by checking for the NULL case and treating it like a zero-length list. + + https://bugzilla.gnome.org/show_bug.cgi?id=660147 + + gio/gsettingsschema.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e147d7aa2f1e4aba555df32b80763e2bc8199798 +Author: Jasper Lievisse Adriaanse +AuthorDate: Sat Oct 1 10:46:52 2011 +0200 +Commit: Jasper Lievisse Adriaanse +CommitDate: Sat Oct 1 10:46:52 2011 +0200 + + Fix URL to strlcpy(3) manpage in comment. + + glib/gstrfuncs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c48a0d881313676f2c215b30ba2f8674673071ad +Author: Simon McVittie +AuthorDate: Thu Sep 29 15:42:47 2011 +0100 +Commit: Simon McVittie +CommitDate: Fri Sep 30 13:17:27 2011 +0100 + + markup-subparser test: use a real GError domain + + Signed-off-by: Simon McVittie + Reviewed-by: Matthias Clasen + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=660371 + + glib/tests/markup-subparser.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 7aad93c5b43faa383ccb609852209d480548dd64 +Author: Simon McVittie +AuthorDate: Thu Sep 29 15:42:33 2011 +0100 +Commit: Simon McVittie +CommitDate: Fri Sep 30 13:17:27 2011 +0100 + + sleepy-stream test: use a real GError domain + + Signed-off-by: Simon McVittie + Reviewed-by: Matthias Clasen + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=660371 + + gio/tests/sleepy-stream.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e60e4999b9d4904b74e1a38bd5c24b9fd047f95d +Author: Simon McVittie +AuthorDate: Thu Sep 29 13:57:09 2011 +0100 +Commit: Simon McVittie +CommitDate: Fri Sep 30 13:17:27 2011 +0100 + + g_dbus_error_encode_gerror: don't segfault on bad domains + + Signed-off-by: Simon McVittie + Reviewed-by: Matthias Clasen + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=660371 + + gio/gdbuserror.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 5156d1b2d42d89d7ad916ca3c53db517a2674f31 +Author: Matthias Clasen +AuthorDate: Thu Sep 29 23:32:20 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Sep 29 23:42:58 2011 -0400 + + Prevent data loss in gdesktopappinfo.c + + Don't loose the content of mimeapps.list when it doesn't contain + a [Added Associations] group. Pointed out by Alexander Larsson. + + https://bugzilla.gnome.org/show_bug.cgi?id=660130 + + gio/gdesktopappinfo.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +commit e6c76d9fd44a5e7c42f10a4833a03cbb44edeb5d +Author: Matthias Clasen +AuthorDate: Thu Sep 29 23:13:49 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Sep 29 23:20:09 2011 -0400 + + Clean up atomic cruft + + Nothing is using these defines anymore, and the messages + are misleading. Based on a patch by Kean Johnston. + + https://bugzilla.gnome.org/show_bug.cgi?id=660013 + + config.h.win32.in | 32 -------------------- + configure.ac | 90 + ++----------------------------------------------------- + 2 files changed, 2 insertions(+), 120 deletions(-) + +commit cde8cf16faa14df3c688adc39f26a45aa0d88d38 +Author: Matthias Clasen +AuthorDate: Sun Sep 25 01:51:33 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Sep 29 20:23:19 2011 -0400 + + Some more gthread reshuffling + + glib/gthread.c | 49 +++++++++++++++++++++++++++---------------------- + 1 file changed, 27 insertions(+), 22 deletions(-) + +commit 934e0a7470fbcfccfd7c4d3e589d59e8778fa973 +Author: David Zeuthen +AuthorDate: Thu Sep 29 15:49:09 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 29 15:49:09 2011 -0400 + + GUnixFileMonitor: Clean up /proc/mounts monitoring + + Most suggestions from Colin Walters . + + https://bugzilla.gnome.org/show_bug.cgi?id=660511 + + Signed-off-by: David Zeuthen + + gio/gunixmounts.c | 45 +++++++++++++++++++++++++++------------------ + 1 file changed, 27 insertions(+), 18 deletions(-) + +commit 55065461bfc5ace53e736dfa8181909e918c161b +Author: David Zeuthen +AuthorDate: Thu Sep 29 15:09:43 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 29 15:16:51 2011 -0400 + + GUnixFileMonitor: Use /proc/mounts for monitoring mount changes + + On recent Linux distros /etc/mtab is just a symlink to /proc/mounts + and GFileMonitor does not work there because of how the kernel conveys + that the file changes. + + https://bugzilla.gnome.org/show_bug.cgi?id=660511 + + Signed-off-by: David Zeuthen + + gio/gunixmounts.c | 53 + ++++++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 48 insertions(+), 5 deletions(-) + +commit 6d05f684eb0193f7b272cbbe42cd7e72eb0f5174 +Author: Javier Jardón +AuthorDate: Thu Sep 29 20:00:16 2011 +0100 +Commit: Javier Jardón +CommitDate: Thu Sep 29 20:04:28 2011 +0100 + + gfile: Be clear about freeing GFile objects + + gio/gfile.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit f992c240e86986dbede0124d1038e0223d8491dd +Author: Dan Winship +AuthorDate: Thu Sep 29 09:58:57 2011 -0400 +Commit: Dan Winship +CommitDate: Thu Sep 29 09:59:15 2011 -0400 + + gthread: remove a stray reference to GStaticMutex + + glib/gthread.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 76d2f7fa6a6835058d29381b50f763b12e97a861 +Author: Tiffany Antopolski +AuthorDate: Thu Sep 29 06:24:55 2011 +0200 +Commit: Kristjan SCHMIDT +CommitDate: Thu Sep 29 06:24:55 2011 +0200 + + Updated Esperanto translation + + po/eo.po | 1878 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 1014 insertions(+), 864 deletions(-) + +commit 0f4b278a4b35c54b4a5e887b35dc100c068fd52f +Author: Dan Winship +AuthorDate: Wed Sep 28 12:18:10 2011 -0400 +Commit: Dan Winship +CommitDate: Wed Sep 28 12:20:09 2011 -0400 + + update .gitignores + + gio/tests/.gitignore | 4 ++++ + glib/tests/.gitignore | 5 +++++ + 2 files changed, 9 insertions(+) + +commit 6feff14f197f7e24d128d7f24ad5a15be5769016 +Author: Dan Williams +AuthorDate: Mon Sep 26 19:51:42 2011 -0500 +Commit: Dan Williams +CommitDate: Wed Sep 28 11:01:53 2011 -0500 + + tests: add signal marshalling return tests for int/uint + + https://bugzilla.gnome.org/show_bug.cgi?id=659881 + + gobject/tests/signals.c | 104 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 104 insertions(+) + +commit a343904596a68458682da5707cc35fcc3ee7fa47 +Author: Dan Williams +AuthorDate: Mon Sep 26 13:07:51 2011 -0500 +Commit: Dan Williams +CommitDate: Wed Sep 28 11:01:39 2011 -0500 + + tests: fix generic closure marshalling tests + + We're testing enums here, not flags, so we need to make sure + we're trying to send enums through the marshalling. + + https://bugzilla.gnome.org/show_bug.cgi?id=659881 + + gobject/tests/signals.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit adf7e0740c6bb7ec31c7acb32d7ea28951ec1027 +Author: Dan Williams +AuthorDate: Fri Sep 23 11:36:35 2011 -0500 +Commit: Dan Williams +CommitDate: Wed Sep 28 11:01:14 2011 -0500 + + tests: Add some return value torture testcases for the generic + marshaller + + Ensure that ENUM types are properly marshalled back from libffi types + to glib types, which was failing on ppc64. + + https://bugzilla.gnome.org/show_bug.cgi?id=659881 + + gobject/tests/signals.c | 106 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 106 insertions(+) + +commit 51166d0127d6d77ae7e4782887a76462858fdd91 +Author: Dan Winship +AuthorDate: Mon Sep 26 14:17:43 2011 -0400 +Commit: Dan Winship +CommitDate: Tue Sep 27 10:30:39 2011 -0400 + + Add thread-safety warnings to the g_setenv() and g_unsetenv() docs + + https://bugzilla.gnome.org/show_bug.cgi?id=659326 + + glib/gutils.c | 22 ++++++++++++++++++++-- + 1 file changed, 20 insertions(+), 2 deletions(-) + +commit 104ea17125aa70f926bddb3889d594b6f5642a21 +Author: Ryan Lortie +AuthorDate: Mon Sep 26 03:56:22 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 26 16:54:24 2011 -0400 + + GDesktopAppInfo: simplify how defaults work + + Previously, we took the default application for a particular mimetype + from the system and copied it into the user's configuration as the + default there. + + Instead of doing that we leave the user's default unset, and at + time of + use, if the user has no explicitly-set default value, we use the + system + default. + + This avoids complicated situations where inappropriate applications + were + being set as the default in the user's configuration. + + https://bugzilla.gnome.org/show_bug.cgi?id=658188 + + gio/gdesktopappinfo.c | 66 + +++++++++++++++++++++------------------------------ + 1 file changed, 27 insertions(+), 39 deletions(-) + +commit 5b2c809dda6ae04bcf3205702b2cc91b1b47cc64 +Author: Edward Sheldrake +AuthorDate: Wed Sep 21 19:14:50 2011 +0100 +Commit: Ryan Lortie +CommitDate: Mon Sep 26 16:54:23 2011 -0400 + + Add another mimeapps test + + This tests the interaction between mimeinfo.cache, defaults.list and + mimeapps.list to ensure g_app_info_set_as_last_used_for_type doesn't + incorrectly change the default. + + https://bugzilla.gnome.org/show_bug.cgi?id=658188 + + gio/tests/mimeapps.c | 142 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 142 insertions(+) + +commit eba49a4f7fb5b8c85a84e28a31ff0b3ba7bc82ea +Author: Dan Winship +AuthorDate: Mon Sep 26 12:42:23 2011 -0400 +Commit: Dan Winship +CommitDate: Mon Sep 26 12:43:08 2011 -0400 + + g_simple_async_result_complete_in_idle: add a minor doc clarification + + gio/gsimpleasyncresult.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 6bd959b7276c557ec70a363497d2c4e432ec294f +Author: Ryan Lortie +AuthorDate: Mon Sep 26 09:05:53 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 26 09:05:53 2011 -0400 + + glib tests: Compile new thread tests on win32 + + They accidentally got added inside of a 'if OS_UNIX'. Move them out. + + glib/tests/Makefile.am | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit fdc594e963b52b1b554fbbc522b91937a39bb5dc +Author: Ryan Lortie +AuthorDate: Mon Sep 26 04:44:41 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 26 08:54:51 2011 -0400 + + winxp threads: detect SRWLock emulation reentrancy + + We lack SRWLock on Windows XP, so we use CRITICAL_SECTION to + emulate it + there. SRWLock is non-recursive, but CRITICAL_SECTION will happily + allow itself to be acquired multiple times by the same thread. + + We need to detect if our second acquire succeeded because of the + recursive nature of CRITICAL_SECTION. In the case of a _lock() + operation, we would normally have deadlocked, so abort. In the + case of + a _trylock() operation, we need to ensure that FALSE is properly + returned. + + Problem caught by Matthias Clasen and Chun-wei Fan. + + https://bugzilla.gnome.org/show_bug.cgi?id=660096 + + glib/gthread-win32.c | 31 +++++++++++++++++++++++++++++++ + 1 file changed, 31 insertions(+) + +commit 5ef7b964e5d7022c9ecc6b75b2a670e407c18698 +Author: Carles Ferrando +AuthorDate: Mon Sep 26 14:40:23 2011 +0200 +Commit: Gil Forcada +CommitDate: Mon Sep 26 14:40:23 2011 +0200 + + [l10n]Updated Catalan (Valencian) translation + + po/ca@valencia.po | 809 + ++++++++++++++++++++++++++++-------------------------- + 1 file changed, 418 insertions(+), 391 deletions(-) + +commit f032536416c08a14bd42ea8833f81b2c91a63fe2 +Author: Petr Kovar +AuthorDate: Sun Sep 25 23:35:27 2011 +0200 +Commit: Petr Kovar +CommitDate: Sun Sep 25 23:36:13 2011 +0200 + + Update Czech translation + + po/cs.po | 260 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 130 insertions(+), 130 deletions(-) + +commit 31ddbd688a8551aa00a082dafb92ad82b5ec744a +Author: Gil Forcada +AuthorDate: Sun Sep 25 23:12:36 2011 +0200 +Commit: Gil Forcada +CommitDate: Sun Sep 25 23:12:53 2011 +0200 + + [l10n]Updated Catalan translation + + po/ca.po | 267 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 133 insertions(+), 134 deletions(-) + +commit 5a95e19a462712010fece9c71079d5c311c77304 +Author: Stef Walter +AuthorDate: Fri Sep 23 10:57:55 2011 +0200 +Commit: Stef Walter +CommitDate: Sun Sep 25 07:57:26 2011 +0200 + + gvariant: Add g_variant_get_fixed_array() + + Using g_variant_new_from_data() for creating new byte arrays is + non-obvious. + This patch adds a g_variant_new_fixed_array() function. + + https://bugzilla.gnome.org/show_bug.cgi?id=659923 + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gvariant.c | 65 + +++++++++++++++++++++++++++++++++++ + glib/gvariant.h | 5 ++- + glib/tests/gvariant.c | 16 ++++++++- + 5 files changed, 86 insertions(+), 2 deletions(-) + +commit 81e395b00b4270e5af16b572e5d2c82daa845374 +Author: Matthias Clasen +AuthorDate: Sun Sep 25 01:32:41 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 25 01:32:41 2011 -0400 + + More GThread docs tweaks + + docs/reference/glib/glib-sections.txt | 2 +- + glib/gthread.c | 256 + ++++++++++++++++------------------ + glib/gthread.h | 18 +-- + 3 files changed, 123 insertions(+), 153 deletions(-) + +commit 900c467fd0f5f375acabad78246ed320d1f208a1 +Author: Matthias Clasen +AuthorDate: Sun Sep 25 00:53:47 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 25 01:01:00 2011 -0400 + + Move GThread docs around + + glib/gthread-posix.c | 138 ------------------------------------------ + glib/gthread.c | 165 + +++++++++++++++++++++++++++++++++++++++++++++++---- + 2 files changed, 152 insertions(+), 151 deletions(-) + +commit db04f59780a40ada3c7abb77ca39652c35cfa9e4 +Author: Matthias Clasen +AuthorDate: Sun Sep 25 00:42:37 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 25 01:01:00 2011 -0400 + + Move includes to the top of the file + + glib/gthread-posix.c | 37 ++++++++++++++++--------------------- + 1 file changed, 16 insertions(+), 21 deletions(-) + +commit 0ea89987e237ed30dad40ae589728d744b249fca +Author: Matthias Clasen +AuthorDate: Sun Sep 25 00:37:31 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 25 01:01:00 2011 -0400 + + Move deprecated GThread functions to a separate file + + glib/Makefile.am | 3 +- + glib/deprecated/gthread-deprecated.c | 977 + ++++++++++++++++++++++++++++++ + glib/gthread.c | 1089 + ++-------------------------------- + glib/gthreadprivate.h | 3 + + 4 files changed, 1047 insertions(+), 1025 deletions(-) + +commit e34861da087aed7417b82efeb2621aad9ee0df61 +Author: Matthias Clasen +AuthorDate: Sat Sep 24 23:40:18 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 25 01:01:00 2011 -0400 + + GThread: more doc updates + + glib/gthread.c | 42 +++++++++++++++--------------------------- + 1 file changed, 15 insertions(+), 27 deletions(-) + +commit 4e44e235172f63c78f5dcd8d8cb55208e204a60a +Author: Matthias Clasen +AuthorDate: Sat Sep 24 23:13:55 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 25 01:00:59 2011 -0400 + + Drop G_THREADS_IMPL_NONE from the docs + + GLib can no longer be built without thread support. + + docs/reference/glib/glib-sections.txt | 1 - + glib/gthread.c | 8 -------- + 2 files changed, 9 deletions(-) + +commit 8f340e2d75020991931d867b569137cb984ee233 +Author: Chun-wei Fan +AuthorDate: Fri Sep 23 11:27:45 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Sun Sep 25 09:07:59 2011 +0800 + + Fix warning/error C4013 (implicit declarations) + + -Include gthread.h in gregex.c as g_once_init_enter and + g_once_init_leave + are used. + -Define prototype for g_thread_DllMain in gthreadprivate.h for Windows + + glib/gregex.c | 1 + + glib/gthreadprivate.h | 4 ++++ + 2 files changed, 5 insertions(+) + +commit 2b391940c090b050c6a4ec30fabb4a1c49207046 +Author: Chun-wei Fan +AuthorDate: Fri Sep 23 13:37:08 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Sun Sep 25 09:07:37 2011 +0800 + + gthread.c: Declare variable at start of block + + This is so that C89 compilers will not complain. + + glib/gthread.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit a485a0e56504437ba88cfac2309ab4d18f7a32fc +Author: Matthias Clasen +AuthorDate: Sat Sep 24 19:04:46 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 24 19:04:46 2011 -0400 + + Document G_THREADS_IMPL_WIN32 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gthread.c | 8 +++++++- + 2 files changed, 8 insertions(+), 1 deletion(-) + +commit d6b0af99d711584ca4e44f218a4cd2151a9ccef4 +Author: Matthias Clasen +AuthorDate: Sat Sep 24 19:00:19 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 24 19:01:02 2011 -0400 + + GThread doc additions + + docs/reference/glib/glib-sections.txt | 41 +++- + glib/deprecated/gthread.h | 3 + + glib/gthread-posix.c | 406 + +++++++++++++++++++++++++++++++--- + glib/gthread.c | 66 ++++-- + 4 files changed, 458 insertions(+), 58 deletions(-) + +commit df9e5c2435d6e57f868d75b474ef1d047fd7ee36 +Author: Matthias Clasen +AuthorDate: Sat Sep 24 16:38:51 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 24 19:01:02 2011 -0400 + + Fix an uninialized variable warning + + glib/tests/cond.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit ef883fd0dcc7bec8c7b7b883635bca168b889988 +Author: Peter Mráz +AuthorDate: Sat Sep 24 21:52:10 2011 +0200 +Commit: Pavol Šimo +CommitDate: Sat Sep 24 21:52:10 2011 +0200 + + Updated Slovak translation + + po/sk.po | 2105 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 1124 insertions(+), 981 deletions(-) + +commit aeee16e4a396b2f19bc2d6602c2e9266245226f6 +Author: Kenneth Nielsen +AuthorDate: Sat Sep 24 14:42:07 2011 +0200 +Commit: Kenneth Nielsen +CommitDate: Sat Sep 24 14:42:07 2011 +0200 + + Updated Danish translation + + po/da.po | 642 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 333 insertions(+), 309 deletions(-) + +commit cf9623767a721607cb972d300440e91dc8a57861 +Author: Matthias Clasen +AuthorDate: Sat Sep 24 00:39:59 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 24 00:39:59 2011 -0400 + + Add a testcase for bug 659866 + + Mere inclusion of glib headers should not require you to define + any XYZ_SOURCE macros. + + glib/tests/Makefile.am | 6 ++++++ + glib/tests/include.c | 17 +++++++++++++++++ + 2 files changed, 23 insertions(+) + +commit e1f68c129233f79b244692f35d4bba4792c0e4ad +Author: Matthias Clasen +AuthorDate: Fri Sep 23 23:38:26 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 23 23:38:26 2011 -0400 + + Add a test for GCond + + glib/tests/cond.c | 134 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 134 insertions(+) + +commit a11831359992dc9be6ca0f9a80d97d8f241ad3ea +Author: Matthias Clasen +AuthorDate: Fri Sep 23 22:07:32 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 23 22:07:32 2011 -0400 + + Add a nontrivial read-write lock test + + glib/tests/rwlock.c | 88 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 88 insertions(+) + +commit 158a0366be6ea2af574f13208068104adb7ea2e7 +Author: Matthias Clasen +AuthorDate: Fri Sep 23 21:10:40 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 23 21:19:53 2011 -0400 + + Add GOnce tests + + glib/tests/Makefile.am | 3 ++ + glib/tests/once.c | 125 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 128 insertions(+) + +commit dd002113f1ce4114f6f39b562f895aab6b47c8dc +Author: Matthias Clasen +AuthorDate: Fri Sep 23 07:26:33 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 23 21:11:10 2011 -0400 + + Make the rec mutex test a little more verbose + + glib/tests/rec-mutex.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit bec571dc790f67a9ee13683b13011ae45ffd393c +Author: Dan Winship +AuthorDate: Fri Sep 23 08:53:47 2011 -0400 +Commit: Dan Winship +CommitDate: Fri Sep 23 08:53:47 2011 -0400 + + giostream: "closed" property should not be marked writable + + https://bugzilla.gnome.org/show_bug.cgi?id=659920 + + gio/giostream.c | 16 +--------------- + 1 file changed, 1 insertion(+), 15 deletions(-) + +commit 7aa824da6ea3600ae72dc5a7f4c999719ffdacb4 +Author: Dan Winship +AuthorDate: Fri Sep 23 07:46:55 2011 -0400 +Commit: Dan Winship +CommitDate: Fri Sep 23 07:50:11 2011 -0400 + + gio-2.0.pc.in: drop stray reference to libasyncns + + gio-2.0.pc's Libs.private was still using @LIBASYNCNS_LIBADD@, which + was no longer being substituted to anything and so broke "pkg-config + --static". Fix it to be @NETWORK_LIBS@ instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=659889 + + gio-2.0.pc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cf020d8250c04abf52b5cde68076c09c02f6655d +Author: Matthias Clasen +AuthorDate: Fri Sep 23 07:21:53 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 23 07:25:07 2011 -0400 + + Add a non-trivial GRWLock test + + This one tests that the writer lock behaves like a mutex. + Adapted from the corresponding test in GMutex. + + glib/tests/rwlock.c | 77 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 77 insertions(+) + +commit 0a9885ebd84b9e7762346be3153c2428bc95ec50 +Author: Matthias Clasen +AuthorDate: Fri Sep 23 07:14:13 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 23 07:25:07 2011 -0400 + + Add a non-trivial GRecMutex test + + Adapted from the corresponding GMutex test. + + glib/tests/rec-mutex.c | 86 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 86 insertions(+) + +commit de39df9dc1fee88d9d21dcfd40e70d61678508d9 +Author: Matthias Clasen +AuthorDate: Fri Sep 23 07:13:47 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 23 07:25:06 2011 -0400 + + Remove an unused variable + + glib/tests/mutex.c | 1 - + 1 file changed, 1 deletion(-) + +commit 16086900af6ec72cf6c83ca4dae87a3c1a9a410f +Author: Manoj Kumar Giri +AuthorDate: Fri Sep 23 16:23:44 2011 +0530 +Commit: Manoj Kumar Giri +CommitDate: Fri Sep 23 16:23:44 2011 +0530 + + Updated Oriya Translation + + po/or.po | 240 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 126 insertions(+), 114 deletions(-) + +commit 798a7d5abee46eb8b1ddb1c72ffa17a9cefc4ab0 +Author: Matthias Clasen +AuthorDate: Fri Sep 23 06:31:12 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 23 06:31:59 2011 -0400 + + Add some more rw lock tests + + These test some simple mixed reader/writer api usage. + + glib/tests/rwlock.c | 50 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 50 insertions(+) + +commit 81b37081848c7638e6edc42a5c61e791320d23af +Author: Matthias Clasen +AuthorDate: Fri Sep 23 06:29:36 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 23 06:31:59 2011 -0400 + + Add a mutex test + + This tests that mutexes do what they are supposed to do. + Copied from a similar test for bitlocks in gthread/tests/bitlock.c. + + glib/tests/mutex.c | 77 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 77 insertions(+) + +commit bcd02d7a755154ec8760cae1a8c4a4dd085ac410 +Author: Yaron Shahrabani +AuthorDate: Fri Sep 23 08:23:25 2011 +0300 +Commit: Yaron Shahrabani +CommitDate: Fri Sep 23 08:23:25 2011 +0300 + + Updated Hebrew translation + + po/he.po | 34 +++++++++++++++++++--------------- + 1 file changed, 19 insertions(+), 15 deletions(-) + +commit 4f3026ea230aeb73e5d24e9b8c72852c097e4354 +Author: Matthias Clasen +AuthorDate: Thu Sep 22 22:44:53 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Sep 22 22:45:47 2011 -0400 + + Add headers + + glib/tests/mutex.c | 31 ++++++++++++++++++++++++++++++- + glib/tests/rec-mutex.c | 28 +++++++++++++++++++++++++++- + 2 files changed, 57 insertions(+), 2 deletions(-) + +commit d4d203e3cb320a80f61231f5834b289e03667846 +Author: Matthias Clasen +AuthorDate: Thu Sep 22 22:44:05 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Sep 22 22:45:47 2011 -0400 + + Fix g_rwlock_{writer,reader}_trylock + + glib/gthread-posix.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit ff139135372cb9d8d88fba19d553f6b68b3ffa37 +Author: Matthias Clasen +AuthorDate: Thu Sep 22 22:43:29 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Sep 22 22:45:47 2011 -0400 + + Add basic tests for GRWLock + + Just basic api usage, no functional test cases yet. + + glib/tests/Makefile.am | 3 ++ + glib/tests/rwlock.c | 77 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 80 insertions(+) + +commit b2717740a23ee37d057cc293ee4f92d91993c648 +Author: Chun-wei Fan +AuthorDate: Fri Sep 23 10:41:19 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Sep 23 10:48:25 2011 +0800 + + VS support updates + + -Fix GLib project/filter files generation as some source items + are under + the "deprecated" subfolder, and filter out the gthread-*.c + -Explicitly specify gthread-win32.c in the GLib project/filter file + templates, since tarballs are done on Linux. + -Don't define g_static_mutex_get_mutex in the pregenerated + glibconfig.h.win32(.in) as it is defined in deprecated/gthread.h + for Windows + + build/win32/vs10/glib.vcxproj.filtersin | 3 ++ + build/win32/vs10/glib.vcxprojin | 1 + + build/win32/vs9/glib.vcprojin | 77 + +++++---------------------------- + glib/Makefile.am | 12 ++--- + glib/glibconfig.h.win32.in | 2 - + 5 files changed, 20 insertions(+), 75 deletions(-) + +commit 9de564bf1f0f0c874ea311479f1561158e0d55e8 +Author: Matthias Clasen +AuthorDate: Thu Sep 22 21:58:28 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Sep 22 21:58:55 2011 -0400 + + Fix g_rec_mutex_trylock + + glib/gthread-posix.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 295af777e4c251559f15502e6082f540a7a0f325 +Author: Matthias Clasen +AuthorDate: Thu Sep 22 21:55:43 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Sep 22 21:58:54 2011 -0400 + + Add trivial tests for GMutex and GRecMutex + + Not testing any mutual exclusion with threads yet, just + basic api use. This is already enough to reveal g_rec_mutex_trylock + as broken... + + glib/tests/Makefile.am | 6 +++++ + glib/tests/mutex.c | 63 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/tests/rec-mutex.c | 52 +++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 121 insertions(+) + +commit 9958909fb2cf818a24737dc3a90e98e6f2f02910 +Author: Chun-wei Fan +AuthorDate: Thu Sep 22 22:10:23 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Sep 23 09:36:37 2011 +0800 + + gmappedfile.c: Define S_IFREG on Win32 when it's not available + + Make a workaround for S_IFREG in gmappedfile.c on Windows as it may + not be + available for a given compiler on that platform + + glib/gmappedfile.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit f42fe6cdc056b77f74ff6e332389d444c50ae7dc +Author: Colin Walters +AuthorDate: Thu Sep 22 16:08:35 2011 -0400 +Commit: Colin Walters +CommitDate: Thu Sep 22 20:05:38 2011 -0400 + + gvalue: Add explicitly signed g_value_get_schar() and + g_value_set_schar() + + The documentation for G_TYPE_CHAR says: + + "The type designated by G_TYPE_CHAR is unconditionally an 8-bit signed + integer." + + However the return value for g_value_get_char() was just "char" which + in C has an unspecified signedness; on e.g. x86 it's signed (which + matches the GType), but on e.g. PowerPC or ARM, it's not. + + We can't break the old API, so we need to suck it up and add new API. + Port most internal users, but keep some tests of the old API too. + + https://bugzilla.gnome.org/show_bug.cgi?id=659870 + + gio/gsettings-mapping.c | 4 ++-- + gio/tests/gsettings.c | 6 +++--- + gobject/gclosure.c | 2 +- + gobject/glib-genmarshal.c | 2 +- + gobject/gmarshal.c | 2 +- + gobject/gobject.symbols | 2 ++ + gobject/gvaluetypes.c | 42 + +++++++++++++++++++++++++++++++++++++++++- + gobject/gvaluetypes.h | 5 +++++ + gobject/tests/param.c | 13 ++++++++++--- + tests/gobject/gvalue-test.c | 1 + + tests/gobject/paramspec-test.c | 16 ++++++++++++++++ + 11 files changed, 83 insertions(+), 12 deletions(-) + +commit 1df8160fa675b225809eed2f86d2489133e5e54d +Author: Colin Walters +AuthorDate: Thu Sep 22 17:52:08 2011 -0400 +Commit: Colin Walters +CommitDate: Thu Sep 22 18:51:43 2011 -0400 + + tests: Add a some torture test cases for the generic marshaller + + In particular this has a test case for a G_TYPE_ENUM which we were + running into a failure on ppc64. + + https://bugzilla.gnome.org/show_bug.cgi?id=659881 + + gobject/tests/signals.c | 136 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 136 insertions(+) + +commit c59846086bdc464b8bff97a83c09d91e8c860369 +Author: Ryan Lortie +AuthorDate: Thu Sep 22 13:47:25 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Sep 22 13:48:00 2011 -0400 + + Add gthread.h to deprecated headers + + ...not deprecated sources + + glib/Makefile.am | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 8e716cbb497ba0cee11a86410c6faff805ea7d90 +Author: Emmanuele Bassi +AuthorDate: Thu Sep 22 17:16:55 2011 +0100 +Commit: Emmanuele Bassi +CommitDate: Thu Sep 22 17:17:54 2011 +0100 + + Fix annotations for source/target in g_object_bind_property_* + + We use gpointer for convience of the C API users, but introspection + users will not like it. + + https://bugzilla.gnome.org/show_bug.cgi?id=659838 + + gobject/gbinding.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 35829d28b9f731e2443d48d868ec6b49cb202e5c +Author: Manoj Kumar Giri +AuthorDate: Thu Sep 22 19:46:01 2011 +0530 +Commit: Manoj Kumar Giri +CommitDate: Thu Sep 22 19:46:01 2011 +0530 + + Updated Oriya Translation + + po/or.po | 277 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 156 insertions(+), 121 deletions(-) + +commit 558955dd85ffaa8435c95eacca27db7134ab4c11 +Author: Matthias Clasen +AuthorDate: Thu Sep 22 01:16:41 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Sep 22 01:16:41 2011 -0400 + + Some gthread doc updates + + Marking things as deprecated, mostly. + + glib/gthread.c | 169 + ++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 100 insertions(+), 69 deletions(-) + +commit cedc82290f860683d695d0c5326db153893eec21 +Author: Matthias Clasen +AuthorDate: Thu Sep 22 00:52:18 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Sep 22 00:54:34 2011 -0400 + + Use adaptive mutexes when available + + These are supposedly better on multi-cpu systems - and who doesn't + have multiple cpus nowadays. One single-processor systems, they + are identical to normal mutexes. + See e.g. http://bugzilla.mozilla.org/show_bug.cgi?id=132089 + + https://bugzilla.gnome.org/show_bug.cgi?id=659423 + + glib/gthread-posix.c | 13 ++++++++++++- + glib/gthread.h | 4 ++++ + 2 files changed, 16 insertions(+), 1 deletion(-) + +commit 19e7026fe728678c33e4cf38290ea88f0941d648 +Author: Ryan Lortie +AuthorDate: Wed Sep 21 20:19:32 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 20:23:03 2011 -0400 + + GDateTime test: fix a race + + We have a GDateTime test that compares the time now (as per the + libc) to + the time now (as per GDateTime). The problem is that the time could + change between those two "now"s. + + glib/tests/gdatetime.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit af9e40dc5def1352e01368de56577addb2c7bbc1 +Author: Ryan Lortie +AuthorDate: Wed Sep 21 20:13:57 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 20:23:02 2011 -0400 + + gslice: remove single-threaded case + + GPrivate always works, so use it normally at all times. + + glib/gslice.c | 35 ++++------------------------------- + 1 file changed, 4 insertions(+), 31 deletions(-) + +commit ca154c399b879ad17804af5d9a81e607e049861e +Author: Philip Van Hoof +AuthorDate: Wed Sep 21 19:59:03 2011 +0200 +Commit: Philip Van Hoof +CommitDate: Thu Sep 22 00:01:56 2011 +0200 + + GMappedFile: Add API to create from an existing file descriptor + + At Tracker we want to mmap files using O_NOATIME. With GMappedFile + this is at + the moment impossible. For that reason I added the constructor + new_from_fd to + the GMappedFile type. + + https://bugzilla.gnome.org/show_bug.cgi?id=659754 + + glib/glib.symbols | 1 + + glib/gmappedfile.c | 174 + +++++++++++++++++++++++++++++++----------------- + glib/gmappedfile.h | 3 + + glib/tests/mappedfile.c | 48 +++++++++++++ + 4 files changed, 164 insertions(+), 62 deletions(-) + +commit 24652730a9faaedb19b9e90024077eb7f75a6907 +Author: Ryan Lortie +AuthorDate: Wed Sep 21 14:57:22 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:09:05 2011 -0400 + + Deprecate GStatic{,Rec,RW}Mutex + + The new versions use the primatives of the OS directly and don't + have an + annoying ABI. + + glib/deprecated/gthread.h | 65 + +++++++++++++++++++++++++++++++++++++++++++++++ + glib/gthread.h | 65 + ----------------------------------------------- + 2 files changed, 65 insertions(+), 65 deletions(-) + +commit aecec33c4949e022abe6b335f83223495004c09f +Author: Ryan Lortie +AuthorDate: Wed Sep 21 14:39:59 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:09:05 2011 -0400 + + gtype: port from GStaticRWLock to GRWLock + + gobject/gtype.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit b6140c2f89e3d9a613623b7eacad631360837df3 +Author: Ryan Lortie +AuthorDate: Wed Sep 21 14:37:34 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:09:04 2011 -0400 + + Port internal GStaticRecMutex users to GRecMutex + + gio/gunionvolumemonitor.c | 38 +++++++++++++++++++------------------- + glib/gvarianttypeinfo.c | 12 ++++++------ + gmodule/gmodule.c | 20 ++++++++++---------- + gobject/gtype.c | 22 +++++++++++----------- + 4 files changed, 46 insertions(+), 46 deletions(-) + +commit ad187e3a9b2efff3c773d361e78ec3acda36136e +Author: Ryan Lortie +AuthorDate: Wed Sep 21 14:36:53 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:09:04 2011 -0400 + + Add a new recursive mutex type, GRecMutex + + This is implemented using the native facilities of each platform + instead + of manually. + + glib/glib.symbols | 5 ++++ + glib/gthread-posix.c | 72 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/gthread-win32.c | 68 + +++++++++++++++++++++++++++++++++++++++++++++++++ + glib/gthread.h | 13 ++++++++++ + 4 files changed, 158 insertions(+) + +commit 3d4102776e59e748ee8b6e4d456a06a33593f308 +Author: Ryan Lortie +AuthorDate: Wed Sep 21 10:19:36 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:09:03 2011 -0400 + + Add GRWLock + + glib/glib.symbols | 8 ++++++++ + glib/gthread-posix.c | 50 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/gthread-win32.c | 51 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/gthread.h | 26 ++++++++++++++++++++++++-- + glib/tests/strfuncs.c | 1 - + 5 files changed, 133 insertions(+), 3 deletions(-) + +commit 42af8eb39d2744af68a470bcd9f7aae3c8f43602 +Author: Ryan Lortie +AuthorDate: Wed Sep 21 00:33:16 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:56 2011 -0400 + + gthread: remove impl init functions + + glib/gthread-posix.c | 14 +++----------- + glib/gthread-win32.c | 20 +++----------------- + glib/gthread.c | 2 -- + glib/gthreadprivate.h | 3 --- + 4 files changed, 6 insertions(+), 33 deletions(-) + +commit 2539bd007d34c7e75788c34f8d9a1e0d5f225ea0 +Author: Ryan Lortie +AuthorDate: Tue Sep 20 10:06:57 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:56 2011 -0400 + + win32: Add 'shared' support to SRWLock emulation + + glib/gthread-win32.c | 108 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 108 insertions(+) + +commit 9f42e3be1b7b9e7588eb84e21c321dfbde0a6f9a +Author: Ryan Lortie +AuthorDate: Tue Sep 20 00:05:34 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:56 2011 -0400 + + gthread-win32: trivial condition change + + Make another do-nothing change to the SRWLock emulation. + + glib/gthread-win32.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 391aea32f31506cd07b251385450a84d705cc798 +Author: Ryan Lortie +AuthorDate: Tue Sep 20 00:04:43 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:56 2011 -0400 + + gthread-win32: rename a struct member + + Our SRWLock is about to become a real reader/writer lock, so rename an + instance variable to prepare for that. + + glib/gthread-win32.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit d7aeae97effab17a0562023497ed8baf46dcc09a +Author: Ryan Lortie +AuthorDate: Mon Sep 19 13:58:36 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:56 2011 -0400 + + gthread.h: remove some bogus decl/comments + + These are no longer relevent since the possibility of a + thread-disabled + GLib disappeared. + + glib/gthread.h | 10 ---------- + 1 file changed, 10 deletions(-) + +commit 894dd4f62b5df008e9372394c0fb4ef2fd1dc527 +Author: Ryan Lortie +AuthorDate: Mon Sep 19 13:51:07 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:56 2011 -0400 + + Revert "Drop an unused variable" + + This reverts commit c7f9cd17d446938aaf4126e0753302676f66fd22. + + The old macros in gthread.h used this variable, so it must remain in + place to keep ABI compatibility. + + glib/gthread.c | 1 + + 1 file changed, 1 insertion(+) + +commit 8ef30eb3da2e371bf6cbaa4d102b89b948fc04bb +Author: Matthias Clasen +AuthorDate: Mon Sep 19 07:19:17 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:56 2011 -0400 + + Drop an unused variable + + glib/gthread.c | 1 - + 1 file changed, 1 deletion(-) + +commit 7d859fb67f42a88368f8c5d404cf7ade07dbf27d +Author: Matthias Clasen +AuthorDate: Mon Sep 19 07:16:30 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:56 2011 -0400 + + More header cosmetics + + glib/gthread.h | 36 ++++++++++++++++++------------------ + 1 file changed, 18 insertions(+), 18 deletions(-) + +commit c291259c659a2dd48f1202863852f61a34290a84 +Author: Matthias Clasen +AuthorDate: Mon Sep 19 00:29:53 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:56 2011 -0400 + + trivial: small header reordering + + glib/gthread.h | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit ae2ac9e809a91635c6ff9751145cd09b6de8dab9 +Author: Ryan Lortie +AuthorDate: Mon Sep 19 01:11:11 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:56 2011 -0400 + + Move some things to deprecated/gthread.h + + glib/Makefile.am | 3 +- + glib/deprecated/gthread.h | 112 + ++++++++++++++++++++++++++++++++++++++++++++++ + glib/glib.h | 1 + + glib/gthread.c | 2 +- + glib/gthread.h | 83 +--------------------------------- + 5 files changed, 118 insertions(+), 83 deletions(-) + +commit 97972fbb3a1d9234fbb5753802afd0c13db45f25 +Author: Ryan Lortie +AuthorDate: Mon Sep 19 01:02:44 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:56 2011 -0400 + + g_thread_init: take a gpointer as the arg + + GThreadFunctions is about to disappear. + + glib/gthread.h | 2 +- + gthread/gthread-impl.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit abba53e39630fd9df7249e239db06b391ba1f47a +Author: Ryan Lortie +AuthorDate: Mon Sep 19 00:55:16 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:55 2011 -0400 + + disable glib-ctor on win32 + + glib/glib-ctor.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 14e6377a603abd03a3c9d7130da1c1113cec4d7b +Author: Ryan Lortie +AuthorDate: Mon Sep 19 00:45:19 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:55 2011 -0400 + + Deprecate g_thread_create_full() + + Replace it with g_thread_create_with_stack_size() and a real function + implementation of g_thread_create(). + + Modify a testcase that was calling g_thread_create_full() + inappropriately (it was using the default values anyway). + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 2 ++ + glib/gthread.c | 64 + +++++++++++++++++++++++++++-------- + glib/gthread.h | 17 ++++++++-- + tests/slice-test.c | 4 +-- + 5 files changed, 68 insertions(+), 20 deletions(-) + +commit 9621b1093e7b745e6f8184012bc3c18ab1d261b1 +Author: Ryan Lortie +AuthorDate: Mon Sep 19 00:31:33 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:55 2011 -0400 + + Drop g_thread_fail() + + This is now unused. + + glib/gthread.c | 7 ------- + 1 file changed, 7 deletions(-) + +commit b2c1364ab29f82d863990c9b1b17abce798f9a84 +Author: Ryan Lortie +AuthorDate: Mon Sep 19 00:30:30 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:55 2011 -0400 + + g_system_thread_create: drop unused args + + The 'bound' and 'priority' arguments are no longer in use, so + drop them. + + glib/gthread-posix.c | 2 -- + glib/gthread-win32.c | 2 -- + glib/gthread.c | 2 +- + glib/gthreadprivate.h | 2 -- + 4 files changed, 1 insertion(+), 7 deletions(-) + +commit 2b4c303d61d614af90a92de4c85532fcc245118e +Author: Ryan Lortie +AuthorDate: Mon Sep 19 00:27:56 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:55 2011 -0400 + + Remove the concept of 'bound' + + This was ignored on Windows. On POSIX, where supported, it controlled + if we ended up with a proper system thread or a user-mode thread. + Linux + did not support this. + + glib/gthread-posix.c | 7 ------- + glib/gthread.c | 10 +++------- + 2 files changed, 3 insertions(+), 14 deletions(-) + +commit cebcfed78347e7f0e5853cdc192319168cd811a6 +Author: Matthias Clasen +AuthorDate: Mon Sep 19 00:25:12 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:55 2011 -0400 + + Remove a leftover from errorcheck mutexes + + glib/gthread.h | 3 --- + 1 file changed, 3 deletions(-) + +commit cffed9a03a54f92f04cf9648253a907573752975 +Author: Ryan Lortie +AuthorDate: Mon Sep 19 00:11:46 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:55 2011 -0400 + + Remove g_thread_functions_for_glib_use_old + + This has been unused for a while and it should definitely go away now + that g_thread_functions_for_glib_use is back in gthread.c. + + glib/gthread.c | 39 --------------------------------------- + 1 file changed, 39 deletions(-) + +commit 6972ed340b702a2b2674cab4338207e2a74a19f0 +Author: Ryan Lortie +AuthorDate: Mon Sep 19 00:03:40 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:55 2011 -0400 + + Merge g_thread_functions_for_glib_use + + Move the now-identical copies of g_thread_functions_for_glib_use from + gthread-{posix,win32}.c back into gthread.c. + + glib/gthread-posix.c | 25 ------------------------- + glib/gthread-win32.c | 25 ------------------------- + glib/gthread.c | 25 +++++++++++++++++++++++++ + 3 files changed, 25 insertions(+), 50 deletions(-) + +commit 6ea1721191efc27cef0236bf10174dd0a81125bb +Author: Ryan Lortie +AuthorDate: Mon Sep 19 00:01:29 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:55 2011 -0400 + + gthread.h: drop the vtable access macros + + We're finally free of these. Drop them. + + glib/gthread.h | 14 -------------- + 1 file changed, 14 deletions(-) + +commit 3422dcfd28c2e33b5dffbcc0f59cfa507b89a468 +Author: Ryan Lortie +AuthorDate: Mon Sep 19 00:00:12 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:55 2011 -0400 + + NULL g_system_thread_{exit,equal} in the vtable + + These were never used from gthread.h and are no longer used from + gthread.c. + + glib/gthread-posix.c | 4 ++-- + glib/gthread-win32.c | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 7a69d46dc562188a8673c6057919b4d65798491d +Author: Ryan Lortie +AuthorDate: Sun Sep 18 23:58:12 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:55 2011 -0400 + + GSystemThread: port 'self' 'join' and 'create' + + Switch 'self' 'join' and 'create' from using the vtable to being + called + via normal g_system_thread_* internal API (implemented in each of + gthread-{posix,win32}.c). + + Again, we can put NULL in the vtable since these were never used from + gthread.h. + + glib/gthread-posix.c | 32 ++++++++++++++++---------------- + glib/gthread-win32.c | 32 ++++++++++++++++---------------- + glib/gthread.c | 18 +++++++++--------- + glib/gthreadprivate.h | 10 ++++++++++ + 4 files changed, 51 insertions(+), 41 deletions(-) + +commit 51d92adeee67d1df30d13fe41e97af9e563f62ec +Author: Ryan Lortie +AuthorDate: Sun Sep 18 23:43:27 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:54 2011 -0400 + + GThread: deprecate thread priorities + + Thread priorities were already documented as not working on Solaris, + and + they are meaningless on Linux unless the process separately requests + realtime scheduling (and even then, it appears only to work as root). + + We can safely put a NULL into the vtable for set_priority since + nothing + outside of gthread.c ever calls this (and that call is gone). + + glib/gthread-posix.c | 106 + +-------------------------------------------------- + glib/gthread-win32.c | 38 +----------------- + glib/gthread.c | 59 +++++++--------------------- + glib/gthread.h | 10 +++-- + 4 files changed, 22 insertions(+), 191 deletions(-) + +commit a10306060c409c45b2ae7dc38813918ce5d611d4 +Author: Matthias Clasen +AuthorDate: Sun Sep 18 23:18:17 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:54 2011 -0400 + + Don't use the thread_exit vfunc + + Instead, just have the backends implement an internal function + named g_system_thread_exit. + + glib/gthread-posix.c | 6 +++--- + glib/gthread-win32.c | 10 +++++----- + glib/gthread.c | 9 ++++----- + glib/gthreadprivate.h | 2 ++ + 4 files changed, 14 insertions(+), 13 deletions(-) + +commit cc7631cd197756a1f804342a39f6ab10a28bc4f5 +Author: Matthias Clasen +AuthorDate: Sun Sep 18 23:10:25 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:54 2011 -0400 + + Don't use the thread_equal vfunc anymore + + Just move the g_system_thread_equal implementation into + the posix and win32 implementations, and drop some micro macro + optimization. + + glib/gthread-posix.c | 7 ++++--- + glib/gthread-win32.c | 7 +++++++ + glib/gthread.c | 11 +++++------ + glib/gthreadprivate.h | 10 ++-------- + 4 files changed, 18 insertions(+), 17 deletions(-) + +commit e00bcfcdecbc25bf6e34492a328a855771ff08ef +Author: Ryan Lortie +AuthorDate: Sun Sep 18 23:07:24 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:54 2011 -0400 + + gthread-win32: use __stdcall markers where needed + + The "unknown reason" that the native thread implementation was + broken is + because functions in kernel32.dll are (obviously) following + Microsoft's + __stdcall ABI, not the GCC ABI. + + Change our function pointers to be __stdcall pointers and change our + emulated implementation to match. + + glib/gthread-win32.c | 61 + +++++++++++++++++++++++++--------------------------- + 1 file changed, 29 insertions(+), 32 deletions(-) + +commit 835c9b75c8adb20f8a095a2bea486d59f16e72cc +Author: Ryan Lortie +AuthorDate: Sun Sep 18 22:48:53 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:54 2011 -0400 + + g_private_new: use GSlice + + We no longer call g_private_new() from anywhere in GLib, so we can use + gslice instead of malloc(). + + glib/gthread.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0ebd842d240f74cee6654e02beb15966b058c603 +Author: Matthias Clasen +AuthorDate: Sun Sep 18 22:11:12 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:54 2011 -0400 + + And move the g_thread_yield() docs too + + glib/gthread-posix.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 71df02658053cab2b18a15f02323a139f1de2092 +Author: Matthias Clasen +AuthorDate: Sun Sep 18 21:39:35 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:54 2011 -0400 + + Don't use the thread vtable for g_thread_yield() + + glib/gthread-posix.c | 6 +++--- + glib/gthread-win32.c | 6 +++--- + glib/gthread.c | 15 --------------- + 3 files changed, 6 insertions(+), 21 deletions(-) + +commit 862e086b79aa285c22f53b6351f6b8816adf2ed5 +Author: Matthias Clasen +AuthorDate: Sun Sep 18 21:24:25 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:54 2011 -0400 + + Move g_private_new() to common code + + The implementations for posix and win32 were identical, so + move it to gthread.c, to go with g_mutex_new() and g_cond_new(). + + glib/gthread-posix.c | 39 --------------------------------------- + glib/gthread-win32.c | 13 ------------- + glib/gthread.c | 37 +++++++++++++++++++++++++++++++++++++ + 3 files changed, 37 insertions(+), 52 deletions(-) + +commit dffca808469f372352a2f6cfe58f8ad026ce3a5e +Author: Matthias Clasen +AuthorDate: Sun Sep 18 21:17:33 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:54 2011 -0400 + + Move docs around + + Move the docs of functions to the actual functions. Also add + docs for some new apis. + + glib/gthread-posix.c | 237 ++++++++++++++++++++++++++++++++++++++++++++ + glib/gthread.c | 275 + ++++++++++----------------------------------------- + 2 files changed, 290 insertions(+), 222 deletions(-) + +commit 0044763a715ac5cec27fab5a7f247d3a1045d9aa +Author: Matthias Clasen +AuthorDate: Sun Sep 18 20:04:28 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:54 2011 -0400 + + Clean up g_thread_yield implementation + + This was the last macro wrapper that was directly accessing the + vtable. Make it a regular function, like the rest. + + glib/glib.symbols | 1 + + glib/gthread-posix.c | 2 +- + glib/gthread.c | 27 ++++++++++++++++----------- + glib/gthread.h | 2 +- + 4 files changed, 19 insertions(+), 13 deletions(-) + +commit c4a69e784ebd5c19a79463c2593f8b9316aeb7b2 +Author: Ryan Lortie +AuthorDate: Sun Sep 18 02:27:03 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:54 2011 -0400 + + gmem: move to glib-ctor + + glib/gmem.c | 114 + +++++++++++++++++++++----------------------------- + glib/gthread.c | 3 -- + glib/gthreadprivate.h | 2 - + 3 files changed, 47 insertions(+), 72 deletions(-) + +commit ae4419610cf920acc2ada9df0e5320a500e9965c +Author: Ryan Lortie +AuthorDate: Sun Sep 18 02:17:17 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:53 2011 -0400 + + gslice: move initialisation to glib-ctor + + glib/gslice.c | 28 +++++----------------------- + glib/gthread.c | 3 --- + glib/gthreadprivate.h | 1 - + 3 files changed, 5 insertions(+), 27 deletions(-) + +commit 8f74c927f609139c51b0a0c067ad63c60ac9139b +Author: Ryan Lortie +AuthorDate: Sun Sep 18 02:16:07 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:53 2011 -0400 + + Add glib-ctor functionality + + A pair of macros to define a constructor function (on compilers that + support such a concept) and to ensure that the function is run exactly + once (on compilers that lack such support). + + Presently only GCC is implemented. + + glib/Makefile.am | 1 + + glib/glib-ctor.h | 25 +++++++++++++++++++++++++ + 2 files changed, 26 insertions(+) + +commit 0e604ef0b527129f947637bc3ae742e9e2c30c90 +Author: Ryan Lortie +AuthorDate: Sun Sep 18 01:24:27 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:53 2011 -0400 + + GThread: always initialise the system thread + + It's always safe to call the thread implementation 'self' function. + + glib/gthread.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 4596dfbc7587c20261b56b58a0a3e5fdeb7ff79a +Author: Ryan Lortie +AuthorDate: Sun Sep 18 01:21:01 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:53 2011 -0400 + + gmessages: do implicit GPrivate initialisation + + Initialise the GPrivate implicitly at the site of first use rather + than + explicitly from the thread initialisation function. + + glib/gmessages.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 90679997ec7439ae520c97eb37b5ae36e0da6bba +Author: Ryan Lortie +AuthorDate: Sun Sep 18 01:10:07 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:53 2011 -0400 + + Continue GPrivate rework + + We remove the macros while at the same time switching all libglib + users + from g_private_new() to g_private_init(). We deal with the strange + expectations of the libglib code that g_private_* should work + before the + GPrivate has been initialised with a temporary shim. + + glib/gmessages.c | 10 +++++----- + glib/gslice.c | 8 ++++---- + glib/gthread-posix.c | 18 ++++++++++++++---- + glib/gthread-win32.c | 17 ++++++++++++++--- + glib/gthread.c | 12 ++++++------ + glib/gthread.h | 14 +++----------- + glib/gthreadprivate.h | 2 ++ + 7 files changed, 48 insertions(+), 33 deletions(-) + +commit b0d83576e26191505ce450cd3eae596be9aff1e1 +Author: Ryan Lortie +AuthorDate: Sat Sep 17 22:00:27 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:53 2011 -0400 + + Rework GPrivate + + - expose the structure types for GLib internal use only + + - avoid infinite recursion hazards by ensuring that GPrivate never + calls back into any other part of GLib + + - substantially rework the Windows implementation so that it never + holds locks, contains no arbitrary limits and doesn't waste + 100*sizeof(void*) per thread + + We have to keep the macro hacks for the time being since some code + inside libglib depends on it. + + glib/glib.symbols | 3 + + glib/gthread-posix.c | 81 +++++++++++---------- + glib/gthread-win32.c | 192 + +++++++++++++++++++++++--------------------------- + glib/gthread.h | 5 ++ + glib/gthreadprivate.h | 12 ++++ + 5 files changed, 155 insertions(+), 138 deletions(-) + +commit 4ec6d47806dbb4934aeeb748196d24f7cd0eb10c +Author: Ryan Lortie +AuthorDate: Sat Sep 17 20:15:07 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:53 2011 -0400 + + GStaticMutex: remove ./configure checks + + Now that GMutex is exposed we can avoid the dance we did in + ./configure + to allocate the correct amount of space for it within the + GStaticMutex. + + Remove the checks and move the definitions to gthread.h, trying very + hard to keep ABI-stable (even though we will be deprecating this + soon). + + configure.ac | 63 + +--------------------------------------------------------- + glib/gthread.h | 22 +++++++++++--------- + 2 files changed, 14 insertions(+), 71 deletions(-) + +commit c33cd007398cfc81a9405b95280e99a231f58ff8 +Author: Ryan Lortie +AuthorDate: Sat Sep 17 19:33:30 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:53 2011 -0400 + + Stop using GStaticMutex in two testcases + + gthread/tests/gwakeuptest.c | 14 ++++++-------- + tests/thread-test.c | 14 +++++++------- + 2 files changed, 13 insertions(+), 15 deletions(-) + +commit 1da913a7a3f120d7097a7474f7cccbeeb1a8383c +Author: Ryan Lortie +AuthorDate: Sat Sep 17 19:32:57 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:53 2011 -0400 + + GParamSpecPool: port from GStaticMutex to GMutex + + gobject/gparam.c | 35 ++++++++++++++++------------------- + 1 file changed, 16 insertions(+), 19 deletions(-) + +commit 806de91cd55c7ba2599a637346dbecd3bb3a5562 +Author: Ryan Lortie +AuthorDate: Sat Sep 17 19:26:41 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:53 2011 -0400 + + GSettings: port from GStaticMutex to GMutex + + gio/gdelayedsettingsbackend.c | 46 + +++++++++++++++++++++---------------------- + gio/gsettingsbackend.c | 18 ++++++++--------- + 2 files changed, 32 insertions(+), 32 deletions(-) + +commit 646de11ae789fb19a878091491fa645788d89368 +Author: Ryan Lortie +AuthorDate: Sat Sep 17 18:30:07 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:53 2011 -0400 + + Remove "temporary until GLib is fixed" code + + The original GMutex/GCond rework patch introduced some temporary + code to + cope with GLib's old approach to thread initialisation. These are no + longer required. + + glib/gthread-posix.c | 20 -------------------- + glib/gthread-win32.c | 20 -------------------- + 2 files changed, 40 deletions(-) + +commit e996a836e854934c0c45e17cfa26b22a8a1bc8bb +Author: Ryan Lortie +AuthorDate: Sat Sep 17 18:07:39 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:53 2011 -0400 + + Port g_cond_new to use GSlice + + Now that nothing inside of GLib is using g_cond_new(), we can + implement + it using GSlice. Since the implementations for POSIX and Windows are + now the same, move it to gthread.c. + + glib/gthread-posix.c | 23 ----------------------- + glib/gthread-win32.c | 22 ---------------------- + glib/gthread.c | 18 ++++++++++++++++++ + 3 files changed, 18 insertions(+), 45 deletions(-) + +commit f1d34d0187cd658a95fba64473942b55d27bfcea +Author: Ryan Lortie +AuthorDate: Sat Sep 17 18:05:24 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:52 2011 -0400 + + libglib: stop using g_cond_new in some places + + Port a couple of low-level users of g_cond_new to use G_COND_INIT or + g_cond_init() as appropriate. + + glib/gbitlock.c | 13 ++++++------- + glib/gthread.c | 13 +++++-------- + 2 files changed, 11 insertions(+), 15 deletions(-) + +commit 22b3e26034017f19c81a3f2bfa7e9c8ec5a690a8 +Author: Ryan Lortie +AuthorDate: Sat Sep 17 17:59:03 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 16:06:49 2011 -0400 + + Port g_mutex_new to use GSlice + + Now that nothing inside of GLib is using g_mutex_new, we can implement + it using GSlice. Since the implementations for POSIX and Windows are + now the same, move it to gthread.c. + + glib/gthread-posix.c | 21 --------------------- + glib/gthread-win32.c | 21 --------------------- + glib/gthread.c | 19 +++++++++++++++++++ + 3 files changed, 19 insertions(+), 42 deletions(-) + +commit cf26a6fc32e32bd71d4652245257477ae34d9a15 +Author: Ryan Lortie +AuthorDate: Sat Sep 17 18:33:25 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 15:55:36 2011 -0400 + + G_LOCK: port from GStaticMutex to GMutex + + GCancellable made use of the undocumented G_LOCK_NAME macro in an + invalid way. Fix that up while we're at it. + + gio/gcancellable.c | 6 ++---- + glib/gthread.h | 16 ++++++++-------- + 2 files changed, 10 insertions(+), 12 deletions(-) + +commit 2c7388c19a3f7895ee49a5bc7219822a50b5b514 +Author: Ryan Lortie +AuthorDate: Sat Sep 17 17:56:33 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 15:55:36 2011 -0400 + + libglib: stop using g_mutex_new + + Use G_MUTEX_INIT or g_mutex_init() as appropriate. + + glib/gasyncqueue.c | 46 ++++++++++++++++++------------------ + glib/gmem.c | 17 ++++++-------- + glib/gmessages.c | 53 +++++++++++++++++++++--------------------- + glib/gslice.c | 68 + +++++++++++++++++++++++++----------------------------- + glib/gthread.c | 29 +++++++++++------------ + 5 files changed, 101 insertions(+), 112 deletions(-) + +commit f35362f3ae4a4bcc6c0d03b129758b2989e8cd79 +Author: Ryan Lortie +AuthorDate: Sat Sep 17 17:47:46 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 15:55:36 2011 -0400 + + libglib: drop use of GStaticMutex + + Use GMutex directly instead. + + glib/gbitlock.c | 12 ++++++------ + glib/gmain.c | 19 +++++++++---------- + 2 files changed, 15 insertions(+), 16 deletions(-) + +commit 80730bc75ca8b0ad71f1372c9652bee39391244e +Author: Ryan Lortie +AuthorDate: Fri Sep 16 18:05:23 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 15:55:36 2011 -0400 + + Rework GMutex and GCond APIs + + Do a substantial rework of the GMutex and GCond APIs. + + - remove all of the macro indirection hackery which is no longer + needed + since we dropped support for switchable thread implementations + + - expose the structure types and add G_MUTEX_INIT and G_COND_INIT + static initialiser macros + + - add g_mutex_init() and g_mutex_clear() for use when embedding + GMutex + into another structure type and do the same for GCond as well + + - avoid infinite recursion hazards by ensuring that neither GCond or + GMutex ever calls back into any other part of GLib + + - substantially rework the Windows implementation of GCond and GMutex + to use the SRWLock and CONDITION_VARIABLE APIs present on Windows + 2008/Vista and later, emulating these APIs on XP + + glib/glib.symbols | 16 ++ + glib/gthread-posix.c | 363 ++++++++++++++++-------- + glib/gthread-win32.c | 759 + ++++++++++++++++++++++++++++++++++++++------------- + glib/gthread.h | 96 ++++--- + glib/gutils.c | 3 + + 5 files changed, 907 insertions(+), 330 deletions(-) + +commit c6f84faa17227da437eeceb58ce79334ffdfdb57 +Author: Matthias Clasen +AuthorDate: Wed Sep 21 15:46:24 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Sep 21 15:47:26 2011 -0400 + + Forgotten part of an earlier mismerge + + This is making gmappedfile.c identical to the glib-2-30 branch again. + + glib/gmappedfile.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 43254e8c4c60f102be1212a1919953ad7ddf31db +Author: Ryan Lortie +AuthorDate: Wed Sep 21 15:27:37 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 15:27:47 2011 -0400 + + gmessage.c: mark a private function static + + glib/gmessages.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit aabdb7e190fc4db595484e05e40315985c6c4645 +Author: David Zeuthen +AuthorDate: Wed Sep 21 08:16:43 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed Sep 21 12:35:40 2011 -0400 + + GDBusObject{Proxy,Skeleton}: Prefix properties with g- to avoid + collisions + + Otherwise we might collide with an interface called Connection. + + https://bugzilla.gnome.org/show_bug.cgi?id=659699 + + This is for the same reason that GDBusProxy has its properties + prefixed with g-. + + Signed-off-by: David Zeuthen + + gio/gdbus-2.0/codegen/codegen.py | 4 ++-- + gio/gdbusobjectmanagerclient.c | 4 ++-- + gio/gdbusobjectmanagerserver.c | 2 +- + gio/gdbusobjectproxy.c | 28 ++++++++++++++-------------- + gio/gdbusobjectskeleton.c | 16 ++++++++-------- + 5 files changed, 27 insertions(+), 27 deletions(-) + +commit 1f5262d2c96f888c21bd113d43528cf3964f163d +Author: Ryan Lortie +AuthorDate: Tue Sep 20 10:07:35 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 21 10:20:08 2011 -0400 + + gunixmounts: exempt entries with "none" mountpoint + + We ignore entries with mountpoint of "swap" and "ignore". Add "none" + to + that list, since Debian uses it. + + Probably we should move to using our already-existing internal list of + things to ignore, but this patch is more minimally intrusive for now. + + https://bugzilla.gnome.org/show_bug.cgi?id=654563 + + gio/gunixmounts.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 6b39085016110dc92d0b17d605ee80b0a0e80eb6 +Author: Xavier Claessens +AuthorDate: Wed Sep 21 13:41:10 2011 +0200 +Commit: David Zeuthen +CommitDate: Wed Sep 21 07:45:50 2011 -0400 + + gdbus-codegen: prepend arg_ to method/signal arg names + + This is to avoid shadow declaration warning in the case an arg name + is "time" for example. + + https://bugzilla.gnome.org/show_bug.cgi?id=659690 + + Signed-off-by: David Zeuthen + + gio/gdbus-2.0/codegen/codegen.py | 36 + ++++++++++++++++++------------------ + 1 file changed, 18 insertions(+), 18 deletions(-) + +commit 933ad70c32f146d324b8fc1e9b79711e83472909 +Author: David Zeuthen +AuthorDate: Wed Sep 21 07:12:32 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed Sep 21 07:14:28 2011 -0400 + + gdbus-codegen: Clarify how naming and Ugly_Case handling works + + Basically, move some paragraphs around. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 92 + ++++++++++++++++++------------------ + 1 file changed, 47 insertions(+), 45 deletions(-) + +commit 30537b84de1b41e1813d2624968bb99271d45763 +Author: David Zeuthen +AuthorDate: Wed Sep 21 06:57:29 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed Sep 21 07:14:28 2011 -0400 + + gdbus-codegen: Update man page to reflect how --annotate actually + works + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 32 + ++++++++++++++------------------ + 1 file changed, 14 insertions(+), 18 deletions(-) + +commit 70515ffe928fa4dc2cadeddfa68a67a7cd727cfe +Author: Xavier Claessens +AuthorDate: Tue Sep 20 23:46:23 2011 +0200 +Commit: Xavier Claessens +CommitDate: Wed Sep 21 10:22:24 2011 +0200 + + gdbus-codegen: Fix build errors in generated code + + https://bugzilla.gnome.org/show_bug.cgi?id=659646 + + gio/gdbus-2.0/codegen/codegen.py | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit 447eb0395623112ebf583988f7aa95b4a2be7c2f +Author: Sweta Kothari +AuthorDate: Wed Sep 21 12:20:30 2011 +0530 +Commit: Sweta Kothari +CommitDate: Wed Sep 21 12:20:40 2011 +0530 + + Removed the glib.glib-2-30.gu.po file that was wrongly committed + + po/glib.glib-2-30.gu.po | 3739 + ----------------------------------------------- + 1 file changed, 3739 deletions(-) + +commit 45dd6801cf368997b707a9cb0af5b6bba432dd49 +Author: Sweta Kothari +AuthorDate: Wed Sep 21 12:17:29 2011 +0530 +Commit: Sweta Kothari +CommitDate: Wed Sep 21 12:20:40 2011 +0530 + + Updated Gujarati Translations + + po/gu.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 06560292c665b463ce948eb36e23acf11edfbfda +Author: Sweta Kothari +AuthorDate: Wed Sep 21 12:14:29 2011 +0530 +Commit: Sweta Kothari +CommitDate: Wed Sep 21 12:20:40 2011 +0530 + + Updated Gujarati Translations + + po/gu.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a7057f5c6ee78c8822090bbcc957a5db670fb2fb +Author: Sweta Kothari +AuthorDate: Wed Sep 21 12:11:20 2011 +0530 +Commit: Sweta Kothari +CommitDate: Wed Sep 21 12:20:40 2011 +0530 + + Updated Gujarati Translations + + po/gu.po | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 0c1dba064383154759d497568f8f3f95835fd6ea +Author: Sweta Kothari +AuthorDate: Wed Sep 21 12:07:00 2011 +0530 +Commit: Sweta Kothari +CommitDate: Wed Sep 21 12:20:40 2011 +0530 + + Updated Gujarati Translations + + po/gu.po | 355 + +++++++++++++++++++++++++++++---------------------------------- + 1 file changed, 166 insertions(+), 189 deletions(-) + +commit 855e13cc0acadd9d87baf55a2dd9a50e721ec6b1 +Author: Dan Winship +AuthorDate: Tue Sep 20 16:58:34 2011 -0400 +Commit: Dan Winship +CommitDate: Tue Sep 20 17:00:58 2011 -0400 + + GThreadedResolver: don't overwrite errors + + If a dns op was cancelled and then the abandoned op failed, it would + try to overwrite the original error. Fix that. + + https://bugzilla.gnome.org/show_bug.cgi?id=658769 + + gio/gthreadedresolver.c | 19 +++++++++++-------- + 1 file changed, 11 insertions(+), 8 deletions(-) + +commit 88b3f6b866749d273247ccccf6dbfd6ddb6b647d +Author: Cosimo Cecchi +AuthorDate: Sat Sep 10 00:35:09 2011 -0400 +Commit: Cosimo Cecchi +CommitDate: Tue Sep 20 13:04:50 2011 -0400 + + timeval: add introspection annotations to g_time_val_from_iso8601() + + The GTimeVal argument is missing an (out) annotations. + + https://bugzilla.gnome.org/show_bug.cgi?id=658692 + + glib/gtimer.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0db338bdb0e9a0216681b6db7286ffb0f1711db1 +Author: Antoine Jacoutot +AuthorDate: Tue Sep 20 01:18:45 2011 +0200 +Commit: Antoine Jacoutot +CommitDate: Tue Sep 20 16:58:00 2011 +0200 + + gunixmounts: Fix compilation on BSD + + Commit afa82ae805f9c8bb875a3f863a7b4669953f159f introduced a + compilation + regression on BSD systems that use the sysctl(3) interface; we need to + declare the buffer len in _g_get_unix_mount_points() + BZ #659528 + + gio/gunixmounts.c | 1 + + 1 file changed, 1 insertion(+) + +commit 11217edaaf3386c8504a6ed6f8f0fb69092ddfca +Author: Matej Urbančič +AuthorDate: Tue Sep 20 15:40:29 2011 +0200 +Commit: Matej Urbančič +CommitDate: Tue Sep 20 15:40:29 2011 +0200 + + Updated Slovenian translation + + po/sl.po | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 9365bc57611f21621c4ef88e302ae07611c2c6d3 +Author: Matej Urbančič +AuthorDate: Tue Sep 20 15:35:31 2011 +0200 +Commit: Matej Urbančič +CommitDate: Tue Sep 20 15:35:31 2011 +0200 + + Updated Slovenian translation + + po/sl.po | 1897 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 911 insertions(+), 986 deletions(-) + +commit f8dda0955ecddd02a4e300fba2714ea8cfa093ae +Author: Sweta Kothari +AuthorDate: Tue Sep 20 13:31:07 2011 +0530 +Commit: Sweta Kothari +CommitDate: Tue Sep 20 13:31:07 2011 +0530 + + Updated Gujarati Translations + + po/glib.glib-2-30.gu.po | 3739 + +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 3739 insertions(+) + +commit 88f2b32eb00311da9799d2a71a55dedd92ff60bb +Author: David Zeuthen +AuthorDate: Mon Sep 19 17:31:21 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Sep 19 17:31:21 2011 -0400 + + GDBusObjectManagerServer: Add test for export_uniquely() method + + Signed-off-by: David Zeuthen + + gio/tests/gdbus-test-codegen.c | 27 +++++++++++++++++++++++++++ + 1 file changed, 27 insertions(+) + +commit b1c08ca41981da9ad62841b1a0cb7095ccc111f4 +Author: Matthew Barnes +AuthorDate: Mon Sep 19 16:45:05 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Sep 19 16:45:05 2011 -0400 + + GDBusObjectManagerServer: Use correct object path in export_uniquely() + method + + In registration_data_export_interface(), the object_path is obtained + using: + + object_path = g_dbus_object_get_object_path (G_DBUS_OBJECT + (data->object)); + + But when exporting an object uniquely, the object_path is not assigned + to the GDBusObject until after all the interfaces are exported. + Therefore, registration_data_export_interface() is trying to export + the interface on the non-unique object path, which can lead to + run-time errors if an object already exists on that path. + + Instead, registration_data_export_interface() should be passed the + object_path explicitly, as is done in + g_dbus_object_manager_server_export_unlocked(). + + Signed-off-by: David Zeuthen + + gio/gdbusobjectmanagerserver.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit fe27bf003764e453cd15cab67e8a99fcda84db1d +Author: Philip Withnall +AuthorDate: Mon Sep 19 10:13:52 2011 +0200 +Commit: Alexander Larsson +CommitDate: Mon Sep 19 10:13:52 2011 +0200 + + Don't close stream twice when splicing + + Ensure that the output/target stream in a + g_output_stream_splice_async() + operation is marked as closed if G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET + is + passed to g_output_stream_splice_async(). This removes the + possibility of + local FDs being closed twice because the stream's not marked as + closed. + + This is implemented by calling g_output_stream_close() from within + g_output_stream_splice_async() instead of calling the stream's + close_fn() + directly. + + Closes: bgo#659324 + + gio/goutputstream.c | 88 + ++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 53 insertions(+), 35 deletions(-) + +commit 808035666ac2f730b8819232f86cd3fac9de0d44 +Author: Ryan Lortie +AuthorDate: Sun Sep 18 22:20:08 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Sep 18 22:21:19 2011 -0400 + + gbitlock: #include "gslice.h" + + This is needed if we're doing emulated futexes. + + glib/gbitlock.c | 1 + + 1 file changed, 1 insertion(+) + +commit bb1ada779161b0c552573c33a10cd2251d5cdea0 +Author: Matthias Clasen +AuthorDate: Sun Sep 18 22:14:19 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 18 22:14:44 2011 -0400 + + Fix a merge accident + + glib/tests/mappedfile.c | 1 + + 1 file changed, 1 insertion(+) + +commit 8b03fed0cfdd07b367d4deb66980980d44f115ce +Author: Ryan Lortie +AuthorDate: Sun Sep 18 14:22:07 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Sep 18 22:08:05 2011 -0400 + + Remove unused header gdebug.h + + This was only included from gmessages.c. Nuke the unused parts and + merge the rest into gmessages.c. + + glib/Makefile.am | 1 - + glib/gdebug.h | 59 ------------------------------------- + glib/gmessages.c | 89 + ++++++++++++++++++++++++++++++-------------------------- + 3 files changed, 47 insertions(+), 102 deletions(-) + +commit 37c740d50946e59c5a5767e4b7aee5f34fcab268 +Author: Ryan Lortie +AuthorDate: Sun Sep 18 18:59:20 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Sep 18 22:07:18 2011 -0400 + + Don't #include from gmem.h + + It looks like this was done just to help people port from gmem to + gslice, but nothing in this header actually requires gslice.h to be + included. + + glib/garray.c | 1 + + glib/gbuffer.c | 2 +- + glib/gcache.c | 1 + + glib/gchecksum.c | 1 + + glib/gdataset.c | 1 + + glib/gdatetime.c | 1 + + glib/gerror.c | 1 + + glib/ghash.c | 1 + + glib/ghmac.c | 1 + + glib/ghook.c | 1 + + glib/glist.c | 1 + + glib/gmarkup.c | 1 + + glib/gmem.c | 1 + + glib/gmem.h | 1 - + glib/gnode.c | 2 ++ + glib/gqueue.c | 1 + + glib/gsequence.c | 1 + + glib/gslist.c | 2 ++ + glib/gtestutils.c | 1 + + glib/gtimezone.c | 1 + + glib/gtree.c | 1 + + glib/gvariant-parser.c | 1 + + glib/gvariant.c | 1 + + glib/gvarianttypeinfo.c | 2 +- + 24 files changed, 25 insertions(+), 3 deletions(-) + +commit e88a12caa0a4852a505911b12fe7ed93cd0068dc +Author: Ryan Lortie +AuthorDate: Sun Sep 18 20:36:30 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Sep 18 22:01:45 2011 -0400 + + Move deprecated GCompletion to deprecated/ + + Keep the docs for now, though. We'll remove them after a few more + cycles. + + https://bugzilla.gnome.org/show_bug.cgi?id=659427 + + glib/Makefile.am | 4 +- + glib/deprecated/gcompletion.c | 489 + +++++++++++++++++++++++++++++++++++++++++ + glib/deprecated/gcompletion.h | 77 +++++++ + glib/gcompletion.c | 491 + ------------------------------------------ + glib/gcompletion.h | 81 ------- + glib/glib.h | 2 +- + 6 files changed, 569 insertions(+), 575 deletions(-) + +commit c3fc0c285f001b3463eda4a63654d645594df08b +Author: Ryan Lortie +AuthorDate: Sun Sep 18 20:31:09 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Sep 18 22:01:37 2011 -0400 + + Move deprecated GRel to deprecated/ + + Keep the docs for now, though. We'll remove them after a few more + cycles. + + https://bugzilla.gnome.org/show_bug.cgi?id=659427 + + glib/Makefile.am | 8 +- + glib/deprecated/grel.c | 674 + ++++++++++++++++++++++++++++++++++++++++++++++++ + glib/deprecated/grel.h | 97 +++++++ + glib/glib.h | 2 +- + glib/grel.c | 675 + ------------------------------------------------- + glib/grel.h | 101 -------- + 6 files changed, 776 insertions(+), 781 deletions(-) + +commit a2ea02d01ee7b0fe8f2be7f9a34decb17ec8193b +Author: Ryan Lortie +AuthorDate: Sun Sep 18 20:17:59 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Sep 18 22:00:58 2011 -0400 + + Move GAllocator/GMemChunk to separate file + + Create a deprecated/ directory that we can start moving ancient chunks + of code to. Start with GAllocator, GMemChunk and related APIs. + + Also drop all mention of them from the docs. + + https://bugzilla.gnome.org/show_bug.cgi?id=659427 + + docs/reference/glib/glib-docs.sgml | 2 - + docs/reference/glib/glib-sections.txt | 56 ----- + glib/Makefile.am | 7 + + glib/deprecated/gallocator.c | 99 ++++++++ + glib/deprecated/gallocator.h | 72 ++++++ + glib/glib.h | 4 + + glib/glist.c | 33 --- + glib/glist.h | 5 - + glib/gmem.c | 442 + ---------------------------------- + glib/gmem.h | 44 ---- + glib/gnode.c | 31 --- + glib/gnode.h | 5 - + glib/gslist.c | 32 --- + glib/gslist.h | 5 - + 14 files changed, 182 insertions(+), 655 deletions(-) + +commit 45d2ba8683b730d556bfbf71341fe2c3ff9248eb +Author: Мирослав Николић + +AuthorDate: Mon Sep 19 03:07:41 2011 +0200 +Commit: Miloš Popović +CommitDate: Mon Sep 19 03:07:41 2011 +0200 + + Updated Serbian translation + + po/sr.po | 7956 + ++++++++++++++++++++++---------------------------------- + po/sr@latin.po | 7956 + ++++++++++++++++++++++---------------------------------- + 2 files changed, 6294 insertions(+), 9618 deletions(-) + +commit 1e82f73f8b26393403e126916e9348e5dc8169d9 +Author: Matthias Clasen +AuthorDate: Sun Sep 18 14:50:31 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 18 14:51:30 2011 -0400 + + Fix g_ascii_formatd tests + + The test was not changing to the locales it was looping over. + + glib/tests/strfuncs.c | 1 + + 1 file changed, 1 insertion(+) + +commit eb45a590fa1c41d5c04cae98313d82146d03051a +Author: Dan Winship +AuthorDate: Sun Sep 18 10:49:58 2011 -0400 +Commit: Dan Winship +CommitDate: Sun Sep 18 10:49:58 2011 -0400 + + gsocks5proxy, gsocks4aproxy: simplify some error messages + + There's no need to include the exact max length in the error messages, + and it makes it look like the strings need to use ngettext() if + you do. + + https://bugzilla.gnome.org/show_bug.cgi?id=658206 + + gio/gsocks4aproxy.c | 9 ++++----- + gio/gsocks5proxy.c | 12 +++++------- + 2 files changed, 9 insertions(+), 12 deletions(-) + +commit feafdad228bb35264b2b3a169ff1785461275289 +Author: Alexander Shopov +AuthorDate: Sun Sep 18 08:04:58 2011 +0300 +Commit: Alexander Shopov +CommitDate: Sun Sep 18 08:38:01 2011 +0300 + + Updated Bulgarian translation + + po/bg.po | 339 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 162 insertions(+), 177 deletions(-) + +commit e02b062635a5b41f997a169eb8b48de902116d5a +Author: Matthias Clasen +AuthorDate: Sat Sep 17 22:44:28 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 17 22:48:39 2011 -0400 + + Use xlocale functions where available + + Implement g_ascii_strto{d,ll,ull} and g_ascii_formatd using + xlocale functions where available. This is slightly faster + and a lot less icky than our homegrown code. + + https://bugzilla.gnome.org/show_bug.cgi?id=640293 + + configure.ac | 2 ++ + glib/gstrfuncs.c | 61 + +++++++++++++++++++++++++++++++++++++++++++++++++------- + 2 files changed, 56 insertions(+), 7 deletions(-) + +commit 7b9571e4dd8ff9f8a123542c56c146d365368f98 +Author: Matthias Clasen +AuthorDate: Sat Sep 17 20:27:16 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 17 20:28:17 2011 -0400 + + Remove redundant checks + + g_set_error() handles error == NULL, so no need to check. + Patch by Ignacio Casal Quinteiro. + + https://bugzilla.gnome.org/show_bug.cgi?id=640975 + + glib/gconvert.c | 25 +++++++++++-------------- + 1 file changed, 11 insertions(+), 14 deletions(-) + +commit f18eab2ac75ee457a4ff76a30bc4b727887be8da +Author: Matthias Clasen +AuthorDate: Sat Sep 17 19:58:28 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 17 20:03:00 2011 -0400 + + GMappedFile: return an error when trying to map a device + + Previously, we were returning an empty buffer for all filenames + where fstat() gives a size of 0. But this is only appropriate + for regular files. + + Also improve the documentation around this issue. Based on a + patch by Ryan Lortie. + + Conflicts: + + glib/tests/mappedfile.c + + https://bugzilla.gnome.org/show_bug.cgi?id=659212 + + docs/reference/glib/tmpl/fileutils.sgml | 4 ++-- + glib/gmappedfile.c | 13 +++++++++---- + glib/tests/mappedfile.c | 12 ++++++++++++ + 3 files changed, 23 insertions(+), 6 deletions(-) + +commit b83e0a39fbab49430767484a3af1a35dd21404e0 +Author: Ryan Lortie +AuthorDate: Sat Sep 17 19:11:10 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sat Sep 17 19:11:10 2011 -0400 + + glib-compile-schemas: remove --uninstall option + + This option does nothing as has been documented as "will be removed + soon" for the vast majority of its life. + + gio/glib-compile-schemas.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 2c9c72dc8cf180ae3a819f18eaf8cc140b49f4cd +Author: Ryan Lortie +AuthorDate: Sat Sep 17 17:32:42 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sat Sep 17 17:33:48 2011 -0400 + + GVariant: avoid 'ARRAY_INFO' as function name + + Turns out that ARRAY_INFO isn't such a great name for a function since + Windows appears to declare this symbol these days. Use a different + name. + + glib/gvarianttypeinfo.c | 32 ++++++++++++++++---------------- + 1 file changed, 16 insertions(+), 16 deletions(-) + +commit f20294614616a4ae4fdfb34f1360354e6b2fbf27 +Author: Ryan Lortie +AuthorDate: Sat Sep 17 17:32:18 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sat Sep 17 17:33:48 2011 -0400 + + gmain: fix some win32 build errors + + glib/gmain.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +commit 928ce3e5efad6befb9f8d3ad97da576ceb6be9ca +Author: Aron Xu +AuthorDate: Sat Sep 17 16:18:03 2011 +0000 +Commit: Aron Xu +CommitDate: Sat Sep 17 16:18:03 2011 +0000 + + Update Simplified Chinese translation. + + po/zh_CN.po | 215 + +++++++++++++++++++++++++++++------------------------------- + 1 file changed, 105 insertions(+), 110 deletions(-) + +commit a0eefd65bc66b4520ba91008ef39f5b67c493efc +Author: Мирослав Николић + +AuthorDate: Sat Sep 17 00:03:56 2011 +0200 +Commit: Miloš Popović +CommitDate: Sat Sep 17 00:03:56 2011 +0200 + + Updated Serbian translation + + po/sr.po | 7958 + +++++++++++++++++++++++++++++++++---------------------- + po/sr@latin.po | 7963 + ++++++++++++++++++++++++++++++++++---------------------- + 2 files changed, 9624 insertions(+), 6297 deletions(-) + +commit e2ae75ad4be9107ee172c644c096e5949598c4a8 +Author: Ryan Lortie +AuthorDate: Fri Sep 16 17:50:13 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 16 17:51:27 2011 -0400 + + gatomic: use pthread mutexes instead of GMutex + + GStaticMutex makes use of atomic operations to initialise itself. We + were using GStaticMutex from the emulated case of gatomic. + Use pthreads + directly to avoid unbounded recursion in this case. + + glib/gatomic.c | 85 + +++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 51 insertions(+), 34 deletions(-) + +commit 48494dd55244fc95357a88fc1f01944d950b7b7b +Author: David Zeuthen +AuthorDate: Fri Sep 16 16:01:13 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Sep 16 16:01:13 2011 -0400 + + gdbus-codegen: Support Ugly_Case for given C namespace + + https://bugzilla.gnome.org/show_bug.cgi?id=658976 + + Signed-off-by: David Zeuthen + + gio/gdbus-2.0/codegen/codegen.py | 9 +- + gio/gdbus-2.0/codegen/dbustypes.py | 57 ++-- + gio/tests/Makefile.am | 2 +- + gio/tests/gdbus-test-codegen.c | 572 + ++++++++++++++++++------------------- + 4 files changed, 325 insertions(+), 315 deletions(-) + +commit c6c2c109467f61b324f9261c4c0b7eb27214360c +Author: David Zeuthen +AuthorDate: Fri Sep 16 15:20:00 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Sep 16 15:20:00 2011 -0400 + + gdbus-codegen: Single letter namespaces get dropped from symbol names + + https://bugzilla.gnome.org/show_bug.cgi?id=659082 + + Signed-off-by: David Zeuthen + + gio/gdbus-2.0/codegen/codegen.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e34e8a25a04f31e7436af297fced96bbfc4b4f79 +Author: Simon McVittie +AuthorDate: Mon Sep 12 18:42:36 2011 +0100 +Commit: David Zeuthen +CommitDate: Fri Sep 16 12:00:22 2011 -0400 + + _g_dbus_worker_new: hold a ref until we have done the initial read + + Otherwise, we could use-after-free the GDBusWorker, if its last-unref + is immediately after _g_dbus_worker_new returns (before the worker + thread + does its initial read). + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=651268 + Bug-NB: NB#271520 + Signed-off-by: Simon McVittie + Signed-off-by: David Zeuthen + + gio/gdbusprivate.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 698eeb3ef6992d551b310bba474d8a38c22ea9b7 +Author: Simon McVittie +AuthorDate: Mon Sep 12 18:26:45 2011 +0100 +Commit: David Zeuthen +CommitDate: Fri Sep 16 12:00:22 2011 -0400 + + GDBusWorker: as a precaution, access 'stopped' boolean atomically + + This member is written in _g_dbus_worker_stop from arbitrary + threads, and + read by the worker thread, so it should be accessed atomically. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=651268 + Bug-NB: NB#271520 + Signed-off-by: Simon McVittie + Signed-off-by: David Zeuthen + + gio/gdbusprivate.c | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +commit 20497f7af908697f958e43c06e38eca256bb58bf +Author: Simon McVittie +AuthorDate: Mon Sep 12 18:24:24 2011 +0100 +Commit: David Zeuthen +CommitDate: Fri Sep 16 12:00:22 2011 -0400 + + Regression test for closing a stream, slowly, while a message + is queued + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=651268 + Bug-NB: NB#271520 + Signed-off-by: Simon McVittie + Signed-off-by: David Zeuthen + + gio/tests/Makefile.am | 5 + + gio/tests/gdbus-close-pending.c | 396 + ++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 401 insertions(+) + +commit c180ea13ae29db3e06411a149b9487328aea29e0 +Author: Simon McVittie +AuthorDate: Thu Sep 8 17:21:02 2011 +0100 +Commit: David Zeuthen +CommitDate: Fri Sep 16 12:00:22 2011 -0400 + + GDBusWorker: annotate more functions with lock/pending state + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=651268 + Bug-NB: NB#271520 + Signed-off-by: Simon McVittie + Signed-off-by: David Zeuthen + + gio/gdbusprivate.c | 71 + +++++++++++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 60 insertions(+), 11 deletions(-) + +commit 8097e2de85e03667c2b8646326c007b213b55870 +Author: Simon McVittie +AuthorDate: Tue Sep 13 17:31:27 2011 +0100 +Commit: David Zeuthen +CommitDate: Fri Sep 16 12:00:22 2011 -0400 + + GDBusConnection: delegate to the worker to close the stream + + We can't safely close the output part of the I/O stream until any + pending write or flush has been completed. In the worst case, + this could + lead to an assertion failure in the worker (when the close wins the + race) or not closing the stream at all (when the write wins the race). + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=651268 + Bug-NB: NB#271520 + Signed-off-by: Simon McVittie + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 64 +++++++------ + gio/gdbusprivate.c | 247 + ++++++++++++++++++++++++++++++++++++++++---------- + gio/gdbusprivate.h | 5 + + 3 files changed, 240 insertions(+), 76 deletions(-) + +commit a8f75f21b4b2264b385022496c597573ecb709da +Author: Simon McVittie +AuthorDate: Tue Sep 13 17:37:33 2011 +0100 +Commit: David Zeuthen +CommitDate: Fri Sep 16 12:00:22 2011 -0400 + + GDBusWorker: combine num_writes_pending with flush_pending + + num_writes_pending was a counter, but it only took values 0 or 1, + so make + it a boolean: it would never make sense to be trying to write out two + messages at the same time (they'd get interleaved). + + Similarly, we can never be writing and flushing at the same time + (that'd + mean we were flushing halfway through a message, which would be + pointless) + so combine it with flush_pending too, calling the result + output_pending. + + Also assert that it takes the expected value whenever we change it, + and document the locking discipline used for it, including a subtle + case in write_message_in_idle_cb where it's not obvious at first + glance + why we don't need the lock. + + (Having the combined boolean at the top of the block of write-related + struct members improves struct packing on 64-bit platforms, by packing + read_num_ancillary_messages and output_pending into one word.) + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=651268 + Bug-NB: NB#271520 + Signed-off-by: Simon McVittie + Signed-off-by: David Zeuthen + + gio/gdbusprivate.c | 36 +++++++++++++++++++++++++----------- + 1 file changed, 25 insertions(+), 11 deletions(-) + +commit 05ef173466e32d8b3d212803e4a72239913a362d +Author: Ryan Lortie +AuthorDate: Fri Sep 16 11:06:50 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 16 11:18:26 2011 -0400 + + Disable two GDBus tests + + These tests try to use GMainContext across fork() which now fails + a lot + more violently than it used to. + + See https://bugzilla.gnome.org/show_bug.cgi?id=658999 for information. + + gio/tests/gdbus-exit-on-close.c | 3 ++- + gio/tests/gdbus-non-socket.c | 3 ++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit 0bb01a150f131b409218e9710b0f75d7d1ec09bc +Author: Murray Cumming +AuthorDate: Fri Sep 16 16:09:56 2011 +0200 +Commit: Murray Cumming +CommitDate: Fri Sep 16 16:09:56 2011 +0200 + + Revert "Add g_memory_input_stream_new_from_data_full/add_data_full() + apis" + + I'm not sure that this API is right now that I try to use it. + + This reverts commit 42738469d15585791bd5613356c47bcc2c413c20. + + gio/gmemoryinputstream.c | 70 + ++---------------------------------------------- + gio/gmemoryinputstream.h | 29 +++++++------------- + 2 files changed, 11 insertions(+), 88 deletions(-) + +commit 42738469d15585791bd5613356c47bcc2c413c20 +Author: Tristan Van Berkom +AuthorDate: Fri Sep 16 13:46:01 2011 +0200 +Commit: Murray Cumming +CommitDate: Fri Sep 16 15:37:06 2011 +0200 + + Add g_memory_input_stream_new_from_data_full/add_data_full() apis + + Add an extra state pointer and an extra GDestroyNotify function + to the 'Chunk' definition... allowing bindings to attach some extra + state to memory chunks (to get memory management correctly from + language bindings). + Bug #589887 + + gio/gmemoryinputstream.c | 70 + ++++++++++++++++++++++++++++++++++++++++++++++-- + gio/gmemoryinputstream.h | 29 +++++++++++++------- + 2 files changed, 88 insertions(+), 11 deletions(-) + +commit b7051e8da82d955ca8f431c65079294747de0e1c +Author: Behdad Esfahbod +AuthorDate: Thu Sep 15 16:51:22 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Thu Sep 15 16:51:51 2011 -0400 + + Fix docs + + glib/gunidecomp.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 43007aa2d2f0d1fe3e63f7c61abb927dccaf799b +Author: Ryan Lortie +AuthorDate: Tue Sep 13 21:57:30 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 14 14:09:12 2011 -0400 + + GApplication: don't create a mainloop + + Just iterate the main context directly. Also: avoid calling the + virtual + functions for mainloops. + + https://bugzilla.gnome.org/show_bug.cgi?id=658805 + + gio/gapplication.c | 45 ++++++--------------------------------------- + 1 file changed, 6 insertions(+), 39 deletions(-) + +commit 39294664a679dbfa89d0d23ebfea2a44c1dee42b +Author: Ryan Lortie +AuthorDate: Wed Sep 14 11:06:02 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 14 14:09:12 2011 -0400 + + GApplication test: fix testcase to avoid fork() + + The GApplication test case tried to fork() while using GMainLoop, + causing problems. Avoid doing that by splitting the child process + into + a separate program and spawning it in the usual way. + + https://bugzilla.gnome.org/show_bug.cgi?id=658999 + + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 3 + + gio/tests/basic-application.c | 81 +++++++++++++++++++++ + gio/tests/gapplication.c | 160 + +++++++----------------------------------- + 4 files changed, 111 insertions(+), 134 deletions(-) + +commit 01ed78d525cf2f8769022e27cc2573ec7ba123b3 +Author: Ryan Lortie +AuthorDate: Tue Sep 13 19:56:22 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 14 14:09:07 2011 -0400 + + mainloop: detect fork() and abort + + Abort if the child process returns to the mainloop after a fork(). + + https://bugzilla.gnome.org/show_bug.cgi?id=658999 + + glib/gmain.c | 39 ++++++++++++++++++++++++++++----------- + 1 file changed, 28 insertions(+), 11 deletions(-) + +commit 01f9479438694d0e1f4ddd738ddf046f179cbd0e +Author: Ryan Lortie +AuthorDate: Wed Sep 14 14:00:08 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 14 14:00:08 2011 -0400 + + GApplication: add chain-up checks + + Make sure ::startup and ::shutdown are being chained up. + + gio/gapplication.c | 26 ++++++++++++++++++++++---- + 1 file changed, 22 insertions(+), 4 deletions(-) + +commit 15b1c1bf4f782189cf881a44b9116460a066c5da +Author: Brian Koning +AuthorDate: Wed Sep 14 13:42:35 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 14 13:45:44 2011 -0400 + + GApplication: introduce ::shutdown + + Introduce ::shutdown as a dual to ::startup. + + https://bugzilla.gnome.org/show_bug.cgi?id=643934 + + gio/gapplication.c | 22 ++++++++++++++++++++++ + gio/gapplication.h | 5 ++++- + 2 files changed, 26 insertions(+), 1 deletion(-) + +commit 8d52bdfd97843ec0ad4a8086423cdf7c63afb467 +Author: Yuri Myasoedov +AuthorDate: Wed Sep 14 21:26:49 2011 +0400 +Commit: Yuri Myasoedov +CommitDate: Wed Sep 14 21:28:00 2011 +0400 + + Updated Russian translation + + po/ru.po | 1224 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 577 insertions(+), 647 deletions(-) + +commit 659b287a92d951d7121584587cb7aefa28e88416 +Author: Tomas Bzatek +AuthorDate: Wed Sep 14 19:02:01 2011 +0200 +Commit: Tomas Bzatek +CommitDate: Wed Sep 14 19:02:01 2011 +0200 + + gdbus-codegen: Fix segfault when remote property is invalidated + + The 'key' variable is no longer valid outside the cycle, owned and + probably already freed by GVariant. This causes apps to segfault + when proxy is constructed and a property on remote d-bus service + changes (actually is invalidated). Looks like a typo anyway. + + https://bugzilla.gnome.org/show_bug.cgi?id=659070 + + gio/gdbus-2.0/codegen/codegen.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 53e52d9f72e8c367b177852d1bbc40235bab6d2d +Author: Og B. Maciel +AuthorDate: Wed Sep 14 09:14:02 2011 -0400 +Commit: Og B. Maciel +CommitDate: Wed Sep 14 09:14:02 2011 -0400 + + Updated Brazilian Portuguese translation. + + po/pt_BR.po | 192 + +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 99 insertions(+), 93 deletions(-) + +commit 8152e3f54e8f7fd309d19ae35dd8f036067db754 +Author: Richard Hughes +AuthorDate: Tue Sep 13 16:38:40 2011 +0100 +Commit: Richard Hughes +CommitDate: Tue Sep 13 16:38:40 2011 +0100 + + Fix the description for g_app_info_get_icon() + + It can return NULL when there is no default icon. + + gio/gappinfo.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 2dd32d24f34ed12da74b9714feb3dfadd8aec021 +Author: I Felix +AuthorDate: Tue Sep 13 15:40:27 2011 +0530 +Commit: I Felix +CommitDate: Tue Sep 13 15:40:27 2011 +0530 + + Updated Tamil Translations + + po/ta.po | 17 ++++++++--------- + 1 file changed, 8 insertions(+), 9 deletions(-) + +commit d1bcb0032d52709e5b208f76c6303cd5040cd8a1 +Author: I Felix +AuthorDate: Tue Sep 13 15:34:22 2011 +0530 +Commit: I Felix +CommitDate: Tue Sep 13 15:34:22 2011 +0530 + + Updated Tamil Translations + + po/ta.po | 909 + +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 535 insertions(+), 374 deletions(-) + +commit 1b033919845cef366842373da9f1cfb56f522d01 +Merge: 2d44a45 92652ac +Author: Ryan Lortie +AuthorDate: Mon Sep 12 08:12:57 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 12 08:12:57 2011 -0400 + + Merge remote-tracking branch 'gvdb/master' + +commit 92652ac79177bcdced5f01122debb50eabdb3e2c +Author: Ryan Lortie +AuthorDate: Mon Sep 12 08:06:13 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 12 08:12:44 2011 -0400 + + hashing: always use signed chars + + Our hashing of non-ASCII strings was undefined due to the fact that + 'char' is signed on some platforms, unsigned on others. Always use a + signed char. + + Discovered by Alexander Larsson. + + https://bugzilla.gnome.org/show_bug.cgi?id=658806 + + gvdb-builder.c | 2 +- + gvdb-reader.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 2d44a45b6ba2cf8de2ba1468013cad501e9858d8 +Author: Matthias Clasen +AuthorDate: Mon Sep 12 01:56:45 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 12 01:56:45 2011 -0400 + + GDesktopAppInfo: Improve docs + + gio/gdesktopappinfo.c | 32 ++++++++++++++++++-------------- + 1 file changed, 18 insertions(+), 14 deletions(-) + +commit 05342d0a930054647989c7d9bc5d248eb566f99d +Author: Matthias Clasen +AuthorDate: Mon Sep 12 01:49:01 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 12 01:49:01 2011 -0400 + + Fix formatting in a doc comment + + gio/gdesktopappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 73c427fab9c61f523c57dff2107c959cb5d86751 +Author: Matthias Clasen +AuthorDate: Mon Sep 12 01:46:48 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 12 01:46:48 2011 -0400 + + Expand mimeapps test + + This adds a test involving both defaults.list and mimeapps.list. + + gio/tests/Makefile.am | 2 +- + gio/tests/mimeapps.c | 359 + +++++++++++++++++++++++++++++++++++++------------- + 2 files changed, 267 insertions(+), 94 deletions(-) + +commit 2ba5a79a706d472a3040ac2956ae65a21d56b71a +Author: Matthias Clasen +AuthorDate: Sun Sep 11 23:39:29 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 11 23:39:29 2011 -0400 + + Also check api results + + In addition to looking at mimeapps.list, check that the default + and recommended apps returned by g_app_info api are as expected. + + gio/tests/mimeapps.c | 52 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 52 insertions(+) + +commit 75c989b9ab7e5f4b55ec21c82184904557d86759 +Author: Matthias Clasen +AuthorDate: Sun Sep 11 23:28:06 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 11 23:28:45 2011 -0400 + + Revert "Fix default setting generation in + g_desktop_app_info_set_as_last_used" + + This reverts commit a13f5ca4da05c3a7edaed9a70c508f63772897cb. + + gio/gdesktopappinfo.c | 17 +++-------------- + 1 file changed, 3 insertions(+), 14 deletions(-) + +commit 938e57dd4b403c3fe494c8c63b50abfb3673c6f6 +Author: Matthias Clasen +AuthorDate: Sun Sep 11 23:25:20 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 11 23:28:44 2011 -0400 + + Adapt tests to string changes + + gio/tests/gschema-compile.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit cab5b8abd3407bc9a7a32a6fd9b8873799507c74 +Author: Ryan Lortie +AuthorDate: Sun Sep 11 15:44:39 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Sep 11 15:48:47 2011 -0400 + + GType tutorial: clarify class struct initialisation + + Make the information on how the class structure is initialised less + confusing to first-time readers. + + docs/reference/gobject/tut_gtype.xml | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 61b51555ec83413397b85916bd9e9e1eb61b2cab +Author: Matthias Clasen +AuthorDate: Sun Sep 11 13:08:14 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 11 13:15:29 2011 -0400 + + Cosmetics + + Make configure --help output a little more regular, by using + AC_HELP_STRING() more consistently. + + configure.ac | 33 ++++++++++++++++++--------------- + 1 file changed, 18 insertions(+), 15 deletions(-) + +commit 5b8623125133c16ebd51856a5da2db9e439c3527 +Author: Jorge González +AuthorDate: Sun Sep 11 11:05:50 2011 +0200 +Commit: Jorge González +CommitDate: Sun Sep 11 11:05:50 2011 +0200 + + Updated Spanish translation + + po/es.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0db179e75e332de3bdecb1309ffe8018ab567484 +Author: Matthias Clasen +AuthorDate: Sat Sep 10 16:09:39 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 10 16:10:49 2011 -0400 + + GKeyFile: Unify error messsages a bit + + This marks a few forgotten error messages for translation, and + makes some other strings more uniform. String change! + + https://bugzilla.gnome.org/show_bug.cgi?id=658715 + + glib/gkeyfile.c | 26 ++++++++++++++------------ + 1 file changed, 14 insertions(+), 12 deletions(-) + +commit ec3653be00725556625072e39e032e8b9e7c7e34 +Author: Matthias Clasen +AuthorDate: Sat Sep 10 10:36:00 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Sep 10 10:36:56 2011 -0400 + + glib-compile-schemas: Pedantic string fixes + + Replace 'can not' by 'cannot' in several places. String change! + + https://bugzilla.gnome.org/show_bug.cgi?id=658207 + + gio/glib-compile-schemas.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit b1e04b2986cadc6fbb8c966eb7bffa73ff848316 +Author: Gabor Kelemen +AuthorDate: Sat Sep 10 14:39:43 2011 +0200 +Commit: Gabor Kelemen +CommitDate: Sat Sep 10 14:39:43 2011 +0200 + + Updated Hungarian translation + + po/hu.po | 173 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 87 insertions(+), 86 deletions(-) + +commit a13f5ca4da05c3a7edaed9a70c508f63772897cb +Author: Josselin Mouette +AuthorDate: Sat Sep 10 08:26:12 2011 +0200 +Commit: Josselin Mouette +CommitDate: Sat Sep 10 08:26:12 2011 +0200 + + Fix default setting generation in g_desktop_app_info_set_as_last_used + + * Do not ignore the system default + * Do not exclude the last used being set from the default list + + This fixes the default applications dialog in control-center. + + https://bugzilla.gnome.org/show_bug.cgi?id=658188 + + gio/gdesktopappinfo.c | 17 ++++++++++++++--- + 1 file changed, 14 insertions(+), 3 deletions(-) + +commit 011c0b488f0b2461e079a58cc4eacb4b92f23990 +Author: Matthias Clasen +AuthorDate: Fri Sep 9 23:43:02 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 9 23:44:41 2011 -0400 + + Add some tests for mimeapps.list handling + + These tests directly look at mimeapps.list to verify that + we make the expected changes to the database. + + gio/tests/Makefile.am | 7 ++ + gio/tests/mimeapps.c | 212 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 219 insertions(+) + +commit 66a1dfc84facad7e233b8cfeb4772bb243ea5923 +Author: Matthias Clasen +AuthorDate: Fri Sep 9 23:42:47 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 9 23:44:41 2011 -0400 + + Avoid some compiler warnings + + gio/tests/socket-client.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 644ab6a7d3f3462b782258e5bb8bac35d46064a0 +Author: Ryan Lortie +AuthorDate: Fri Sep 9 22:33:33 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 22:33:33 2011 -0400 + + Nix inaccurately named g_main_context_init_pipe() + + ...and fold its contents into g_main_context_new() + + glib/gmain.c | 12 +++--------- + 1 file changed, 3 insertions(+), 9 deletions(-) + +commit 1c8c408c51c85230356cc95c06f2e1bd3f376624 +Author: Ryan Lortie +AuthorDate: Fri Sep 9 21:40:05 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 22:32:06 2011 -0400 + + gmain: get rid of poll_waiting + + This variable, which is the cause of much grief, exists for two + reasons: + + - ensuring the the wakeup pipe doesn't fill up + + - preventing the first poll() after adding a source from waking up + immediately + + The first point is no longer an issue with GWakeup. + + The second point is addressed by using different logic: we only + signal a + wakeup in the case that the context is currently acquired by a thread + that is not us. + + As an added bonus, we can now implement g_main_context_wakeup() + without + taking a lock. + + https://bugzilla.gnome.org/show_bug.cgi?id=583511 + https://bugzilla.gnome.org/show_bug.cgi?id=320888 + + glib/gmain.c | 44 ++++++++++---------------------------------- + 1 file changed, 10 insertions(+), 34 deletions(-) + +commit e15d5313af8bc1fd4f68e7ddc59cd73a3a2c9502 +Author: Emmanuele Bassi +AuthorDate: Tue Oct 5 14:01:05 2010 +0100 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 22:08:58 2011 -0400 + + Add macros for GSourceFunc return values + + The boolean values to be returned by a GSourceFunc are always + ambiguous, + and even in case of experienced developers then can lead to confusion. + + The Perl bindings for GLib have two simple constants, mapping to TRUE + and FALSE, that make the return values less confusing: + G_SOURCE_CONTINUE + and G_SOURCE_REMOVE respectively. + + https://bugzilla.gnome.org/show_bug.cgi?id=631413 + + docs/reference/glib/glib-sections.txt | 4 ++++ + glib/gmain.h | 20 ++++++++++++++++++++ + 2 files changed, 24 insertions(+) + +commit e5653c0050e232e1834a31c85672319873f7612b +Author: Matthias Clasen +AuthorDate: Fri Sep 9 20:35:01 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 9 20:37:09 2011 -0400 + + Keep up with the standards + + More choices, always better. + + gio/gdesktopappinfo.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 066c7b81211fe203d2f7a4c7556c05bd53293097 +Author: Ryan Lortie +AuthorDate: Fri Sep 9 19:54:06 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 19:54:06 2011 -0400 + + GRegex: fix thread-unsafe initialiser code + + glib/gregex.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit f1494c156dcbbe125807ef2a1b5ab0ca4b2acc66 +Author: Ryan Lortie +AuthorDate: Fri Sep 9 19:48:14 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 19:50:55 2011 -0400 + + Clean up l10n threading stuff + + Remove the explicit thread initialisation functions for + g_get_charset(), + g_get_filename_charsets() and g_get_language_names(). + + Add a lock around one remaining case of access to libcharset + (the other + 2 cases already have the lock). + + Do a proper g_once_init_enter() style initialisation for the GLib + gettext functions. + + https://bugzilla.gnome.org/show_bug.cgi?id=658683 + + glib/gconvert.c | 10 ---------- + glib/gthread.c | 4 ---- + glib/gthreadprivate.h | 2 -- + glib/gutf8.c | 2 ++ + glib/gutils.c | 19 ++++++------------- + 5 files changed, 8 insertions(+), 29 deletions(-) + +commit bceaf3a7194ecd5303b6cbc9797586ba4849b1bc +Author: Ryan Lortie +AuthorDate: Fri Sep 9 16:05:55 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 16:05:55 2011 -0400 + + glib-private: #include + + This is really our only choice if we don't want to annoy the + single-include checking when we use this from inside of gio. + + glib/glib-private.h | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +commit e27b5a2ea7f117028fb5b645033085866a804fb7 +Author: Ryan Lortie +AuthorDate: Fri Sep 9 15:47:01 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 15:47:01 2011 -0400 + + Drop long-removed atomic thread init from header + + glib/gthreadprivate.h | 1 - + 1 file changed, 1 deletion(-) + +commit 9e1d4aa257843849872abdf78326f5a29877c322 +Author: Ryan Lortie +AuthorDate: Fri Sep 9 15:21:07 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 15:21:07 2011 -0400 + + Remove now-useless glibprivate.h + + The only symbol in glibprivate.h was moved to glib-private.h. + + glib/Makefile.am | 1 - + glib/glibprivate.h | 6 ------ + 2 files changed, 7 deletions(-) + +commit d86386159d3fe1e592d813c6d8d6e293c2599231 +Author: Ryan Lortie +AuthorDate: Fri Sep 9 14:30:25 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 14:32:00 2011 -0400 + + glib worker: move to glib-private framework + + Remove the private glib_get_worker_context() symbol and move it + over to + using the glib-private stuff like GWakeup is doing. + + https://bugzilla.gnome.org/show_bug.cgi?id=657992 + + glib/glib-private.c | 7 ++++--- + glib/glib-private.h | 24 ++++++++++++++---------- + glib/glib.symbols | 1 - + glib/gmain.c | 6 +++--- + 4 files changed, 21 insertions(+), 17 deletions(-) + +commit 3022ef47313648e10fd415ef132d746ee2db88e1 +Author: Ryan Lortie +AuthorDate: Fri Sep 9 14:30:01 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 14:30:01 2011 -0400 + + gwakeup.h: add missing header for GPollFD + + glib/gwakeup.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit 9bf59d4a14b3fc4bb62f10c3665e99f9d8788bdc +Author: Colin Walters +AuthorDate: Thu Sep 1 14:32:11 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 14:17:08 2011 -0400 + + Add glib__private__() API to share between glib,gio; port GWakeup + to it + + Historically we've added random symbols to the public API with + warnings + that they're private; examples are: + + glib_gettext(), glib_pgettext() + g_thread_functions_for_glib_use, g_thread_use_default_impl, etc. + + And we almost added "GWakeup" to public API just to share between + glib and + gio. + + This new glib__private__() API exports a hidden vtable, and adds + a macro + GLIB_PRIVATE_CALL() that makes it generally convenient to use. + + This adds an extremely tiny cost for the double indirection; but + it has + the benefit that we don't need to either: + + 1) compile the code into both glib and gio (like GWakeup), with the + inefficiency that implies. + 2) Export a "do not use this" symbol; the serious problem with this is + that someone CAN use it pretty easily. Particularly if we document + it. It's far, far harder to peek into a structure without a public + header file. + + https://bugzilla.gnome.org/show_bug.cgi?id=657992 + + gio/Makefile.am | 1 - + gio/gcancellable.c | 16 ++++++++-------- + glib/Makefile.am | 2 ++ + glib/glib-private.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ + glib/glib-private.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ + glib/glib.symbols | 1 + + 6 files changed, 104 insertions(+), 9 deletions(-) + +commit b891b3616fa1c2af542cd188c00e074295bad4fe +Author: Ryan Lortie +AuthorDate: Tue Aug 30 13:32:58 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 13:41:36 2011 -0400 + + GMainLoop: remove wall clock time cache + + Since GMainLoop is now purely monotonic, it really doesn't make + sense to + cache the wallclock time just for the sake of making a deprecated call + more efficient. + + glib/gmain.c | 37 +++++-------------------------------- + 1 file changed, 5 insertions(+), 32 deletions(-) + +commit 940a728fdabca90ce7f5769de97f12a81c264cc5 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 23:02:03 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 13:41:27 2011 -0400 + + gtester: Remove SIGCHLD race workarounds + + With the GMainLoop changes, gtester should now be race-free. + + glib/gtester.c | 23 ----------------------- + 1 file changed, 23 deletions(-) + +commit ba7019e19e83ef46184e39e1d546ba08500dbfd7 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 22:58:26 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 13:41:27 2011 -0400 + + Modify child and signal sources to use worker + + glib/gmain.c | 370 + ++++++++++++++++++++++++----------------------------------- + 1 file changed, 151 insertions(+), 219 deletions(-) + +commit 7eae486179e2799c369ed9ffcea663bf9161ce79 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 22:07:02 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 13:41:27 2011 -0400 + + GMain: simplify logic for g_wakeup_acknowledge() + + Instead of messing around with context->poll_waiting, just look at the + GPollFD to see if the GWakeup needs to be acknowledged. + + glib/gmain.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit 87880dfa571926678bf671bce7ce5e56adcf07a2 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 18:33:32 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 13:41:27 2011 -0400 + + GMainLoop: remove single-threaded case + + Since we now always have thread support in libglib, we can remove the + buggy single-threaded codepath for GMainContext. + + glib/gmain.c | 207 + +++++++++++--------------------------------------- + glib/gthread.c | 1 - + glib/gthreadprivate.h | 1 - + 3 files changed, 43 insertions(+), 166 deletions(-) + +commit 1facd36d00fc5fc18fa9d690979f9e73c0f1d312 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 18:20:24 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 13:40:50 2011 -0400 + + Add private glib_get_worker_context() API + + The first time this is called, this creates a GMainContext * and a + thread to run it. Future calls return the same. There are a lot of + places that we could use this in GLib. + + glib/Makefile.am | 1 + + glib/glib.symbols | 1 + + glib/glibprivate.h | 6 ++++++ + glib/gmain.c | 36 ++++++++++++++++++++++++++++++++++++ + 4 files changed, 44 insertions(+) + +commit b6a2f502f28b112d791c8834b4ff7e5c8aa0fcd5 +Author: Ryan Lortie +AuthorDate: Fri Sep 9 13:39:22 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 13:39:22 2011 -0400 + + GRand: Make sure to g_thread_init_glib() + + The last commit should g_thread_init_glib() before attempting to use + GOnce. + + glib/grand.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 71c72d5e13748c2a7e0fd52c5693240aed808238 +Author: Ryan Lortie +AuthorDate: Fri Sep 9 13:31:21 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 13:31:21 2011 -0400 + + GRand: remove setup from g_thread_init_glib + + Use g_once_init_enter instead. + + glib/grand.c | 17 ++++------------- + glib/gthread.c | 1 - + glib/gthreadprivate.h | 1 - + 3 files changed, 4 insertions(+), 15 deletions(-) + +commit 413186a962973cff5dfbee66ef920016f4cb5c2d +Author: Ryan Lortie +AuthorDate: Fri Sep 9 13:20:40 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 13:23:48 2011 -0400 + + emufutex: remove init from g_thread_init_glib + + Use a GStaticMutex instead. + + glib/gbitlock.c | 19 ++++++------------- + glib/gthread.c | 1 - + glib/gthreadprivate.h | 1 - + gthread/tests/1bit-mutex.c | 6 ++---- + 4 files changed, 8 insertions(+), 19 deletions(-) + +commit 80109acef586a5a1d34f604414a36e7e18b0cede +Author: Ryan Lortie +AuthorDate: Fri Sep 9 13:15:17 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 13:17:42 2011 -0400 + + win32: remove version init from g_thread_init_glib + + Instead, make this use g_once_init_enter() in the usual way. + + glib/gthread.c | 3 --- + glib/gthreadprivate.h | 4 ---- + glib/gwin32.c | 33 ++++++++------------------------- + 3 files changed, 8 insertions(+), 32 deletions(-) + +commit 6c0dda8265a547d89b4c546298d0a29519f68749 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 18:07:55 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:47:40 2011 -0400 + + make g_thread_init_glib() idempotent + + glib/gthread.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit cfa1d0540e4aaf83641f3876a2589a1e8f2b1242 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 18:00:03 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:47:40 2011 -0400 + + Move the GThread implementations to glib/ + + We can now get threads initialised from inside of libglib by calling + g_thread_init_glib(). + + glib/Makefile.am | 10 +- + glib/gthread-posix.c | 407 ++++++++++++++++++++++++++++++++++ + glib/gthread-win32.c | 558 + +++++++++++++++++++++++++++++++++++++++++++++++ + glib/gthread.c | 4 +- + glib/gthreadprivate.h | 1 + + gthread/Makefile.am | 8 +- + gthread/gthread-impl.c | 6 +- + gthread/gthread-posix.c | 409 ----------------------------------- + gthread/gthread-win32.c | 563 + ------------------------------------------------ + 9 files changed, 982 insertions(+), 984 deletions(-) + +commit 96e489680423f87428c74b1f6ec8a6b8a9c99645 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 17:40:01 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:47:40 2011 -0400 + + invert gthread-impl includes + + configure.ac defined G_THREAD_SOURCE and gthread-impl would + #include it. + + Instead, since we only have two thread implementations now, and + since we + always use the Windows one only on Windows, move the logic to the + Makefile, predicated on 'if OS_WIN32'. Then have the chosen + backend do + the #include "gthread-impl.c" from there. + + Remove the G_THREAD_SOURCE define from configure.ac. + + configure.ac | 2 -- + gthread/Makefile.am | 6 +++++- + gthread/gthread-impl.c | 7 ------- + gthread/gthread-posix.c | 5 +++++ + gthread/gthread-win32.c | 3 +++ + 5 files changed, 13 insertions(+), 10 deletions(-) + +commit fc6a9275a4c1e14edb0b9948672ec77af980bc23 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 17:18:43 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:47:40 2011 -0400 + + win32 threads: assume TryEnterCriticalSection + + Remove the dynamic lookup for TryEnterCriticalSection, which has + existed + since Windows 2000. + + gthread/gthread-win32.c | 90 + ++++--------------------------------------------- + 1 file changed, 7 insertions(+), 83 deletions(-) + +commit 7cf89847e26af7817827a47cc2f4857d1742f4d0 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 17:02:21 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:47:40 2011 -0400 + + Stop using HAVE_G_THREAD_IMPL_INIT + + Just always call the init function. + + gthread/gthread-impl.c | 5 +---- + gthread/gthread-posix.c | 3 --- + gthread/gthread-win32.c | 1 - + 3 files changed, 1 insertion(+), 8 deletions(-) + +commit 46af418e05de82cfd6174575ef3f376aecfe8795 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 16:30:04 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:47:40 2011 -0400 + + Move thread priority translation into the backends + + The translation of GLib priorities into the thread priorities of + different operating systems belongs in the implementation -- not + half-way in the front end. + + gthread/gthread-impl.c | 26 -------------------------- + gthread/gthread-posix.c | 30 ++++++++++++++++++++++++++++-- + gthread/gthread-win32.c | 32 +++++++++++++++++++++++--------- + 3 files changed, 51 insertions(+), 37 deletions(-) + +commit a4777122c84bfa33f710dceccf9e05087b89a301 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 16:46:32 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:47:40 2011 -0400 + + Remove useless macros from when we supported DCE + + These are non-ops now, and easily replaced. + + gthread/gthread-posix.c | 23 ++++++++--------------- + 1 file changed, 8 insertions(+), 15 deletions(-) + +commit 715f94e95147097d6caf86b0be230e52a64ed738 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 16:41:24 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:47:40 2011 -0400 + + Remove support for DCE threads + + configure.ac | 25 +++------------- + docs/reference/glib/building.sgml | 2 +- + gthread/gthread-posix.c | 60 + +++------------------------------------ + 3 files changed, 9 insertions(+), 78 deletions(-) + +commit 7d885253fa72e0a529a5a262082e6347c30198ee +Author: Ryan Lortie +AuthorDate: Wed Aug 31 16:10:55 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:47:39 2011 -0400 + + Remove support for custom thread implementations + + gthread/gthread-impl.c | 64 + ++++++++------------------------------------------ + 1 file changed, 10 insertions(+), 54 deletions(-) + +commit cef0acb945271a85d1e2283af7785f3b3f93ac41 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 16:03:22 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:47:39 2011 -0400 + + Remove the dead 'none' thread implementation + + gthread/Makefile.am | 1 - + gthread/gthread-none.c | 37 ------------------------------------- + 2 files changed, 38 deletions(-) + +commit 3f931412434083a69f3fb794f01d82a3de8224ee +Author: Ryan Lortie +AuthorDate: Wed Aug 31 16:01:09 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:47:39 2011 -0400 + + GThread: remove errorcheck mutex support + + This can only possibly work if we call g_thread_init(), which we are + moving away from. + + glib/gthread.h | 13 --- + gthread/gthread-impl.c | 228 + ++----------------------------------------------- + 2 files changed, 8 insertions(+), 233 deletions(-) + +commit 41cbb40dca659799f05567bca0477f630eeeda16 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 15:53:36 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:47:39 2011 -0400 + + gthread: remove some unused forward declarations + + gthread/gthread-impl.c | 7 ------- + 1 file changed, 7 deletions(-) + +commit e48573c402326a9428b032b0d33dd06644316990 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 15:49:35 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:47:39 2011 -0400 + + Deprecated (undocumented) g_thread_gettime + + g_thread_gettime() is an undocumented public function pointer that + points to a function that returns the monotonic time in nanoseconds. + g_get_monotonic_time() does the same in microseconds, so it can + be used + instead. + + GLib had one internal user in GFileMonitor that only cared about + millisecond accuracy; it has been ported to g_get_monotonic_time(). + + gio/gfilemonitor.c | 2 +- + glib/gthread.c | 21 ++------------------- + glib/gthread.h | 2 ++ + gthread/gthread-impl.c | 2 -- + gthread/gthread-none.c | 2 -- + gthread/gthread-posix.c | 29 +---------------------------- + gthread/gthread-win32.c | 16 ---------------- + 7 files changed, 6 insertions(+), 68 deletions(-) + +commit 3534ff418c85481d245631abb06e89b8898790f4 +Author: Ryan Lortie +AuthorDate: Wed Aug 31 16:43:15 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:47:39 2011 -0400 + + Update building docs to mention mandatory threads + + The docs used to say thread support was optional -- it's mandatory + now. + + docs/reference/glib/building.sgml | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit 5a30712dc7e4adc36b0e8fd82cf5ccec19bbbdc5 +Author: Dan Winship +AuthorDate: Wed Aug 31 14:33:33 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:47:39 2011 -0400 + + Remove !g_thread_supported() codepaths in gio + + In particular, remove the libasyncns import, which was only used by + GUnixResolver, which is only used when threads are not available. + Likewise remove GWin32Resolver, and the hacky broken non-threaded + parts of GIOScheduler. + + https://bugzilla.gnome.org/show_bug.cgi?id=616754 + + configure.ac | 5 - + gio/Makefile.am | 10 +- + gio/gcancellable.c | 2 +- + gio/gio.symbols | 6 - + gio/gioscheduler.c | 60 +- + gio/gresolver.c | 18 +- + gio/gthreadedresolver.c | 8 +- + gio/gunixresolver.c | 516 --------------- + gio/gunixresolver.h | 53 -- + gio/gwin32resolver.c | 483 -------------- + gio/gwin32resolver.h | 49 -- + gio/libasyncns/Makefile.am | 15 - + gio/libasyncns/README | 7 - + gio/libasyncns/asyncns.c | 1533 + -------------------------------------------- + gio/libasyncns/asyncns.h | 163 ----- + gio/libasyncns/g-asyncns.h | 33 - + gio/libasyncns/update.sh | 20 - + gio/tests/resolver.c | 41 +- + 18 files changed, 23 insertions(+), 2999 deletions(-) + +commit aa586f63543fd584b782dbc1f90bcfae2c96502e +Author: Ryan Lortie +AuthorDate: Wed Aug 31 14:30:11 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:41:56 2011 -0400 + + Revert "GIOSchedulerJob: Improve struct packing" + + This reverts commit a2094d5e564433ed3a4398afeacce80519bbda44. + + https://bugzilla.gnome.org/show_bug.cgi?id=616754 + + gio/gioscheduler.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 5bc7729d16b641022f5eb8a4022515a163063ce9 +Author: Dan Winship +AuthorDate: Wed Aug 31 14:01:45 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 9 12:41:55 2011 -0400 + + Make threads mandatory + + G_THREADS_ENABLED still exists, but is always defined. It is still + possible to use libglib without threads, but gobject (and everything + above it) is now guaranteed to be using threads (as, in fact, it was + before, since it was accidentally impossible to compile with + --disable-threads). + + https://bugzilla.gnome.org/show_bug.cgi?id=616754 + + configure.ac | 440 + ++++++++++++++++++++++-------------------------- + gio/Makefile.am | 6 +- + glib/gmain.c | 60 ------- + glib/gthread.c | 11 +- + glib/gthread.h | 71 ++++---- + gobject/Makefile.am | 6 +- + gobject/gtype.c | 2 - + gthread/gthread-impl.c | 18 -- + tests/asyncqueue-test.c | 2 - + tests/child-test.c | 6 +- + tests/mainloop-test.c | 4 - + tests/thread-test.c | 4 - + tests/threadpool-test.c | 5 - + 13 files changed, 240 insertions(+), 395 deletions(-) + +commit 0d1a2eb4bfcd733e0c015c76fb0ca0308b8a61f0 +Author: David Schleef +AuthorDate: Sun Aug 21 14:54:39 2011 -0700 +Commit: Ryan Lortie +CommitDate: Thu Sep 8 20:22:42 2011 -0400 + + Fix spelling of G_IO_FLAG_IS_WRITEABLE + + Fixes #657045. + + glib/giochannel.c | 7 ++++--- + glib/giochannel.h | 5 ++++- + glib/giowin32.c | 4 ++-- + 3 files changed, 10 insertions(+), 6 deletions(-) + +commit 7a45dde4fe64b4f6c6d3ebc54dfb54d106290e9d +Author: Kushal Das +AuthorDate: Fri Sep 2 12:15:21 2011 +0530 +Commit: Ryan Lortie +CommitDate: Thu Sep 8 20:20:02 2011 -0400 + + g_key_file_parse_value_as_integer: Integers can have trailing + whitespaces or tabs + + Now it can parse integer values with trailing whitespaces or tabs + before CR. + Using g_ascii_isspace() as suggested. + + https://bugzilla.gnome.org/show_bug.cgi?id=653987 + + glib/gkeyfile.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 4a1d79842a177e45210736c71bf0c7d277d73179 +Author: Piotr Drąg +AuthorDate: Thu Sep 8 21:07:54 2011 +0200 +Commit: Piotr Drąg +CommitDate: Thu Sep 8 21:08:09 2011 +0200 + + Updated Polish translation + + po/pl.po | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 687144edc7c11fb7a1aff5860b95ab5616320f1f +Author: Piotr Drąg +AuthorDate: Thu Sep 8 20:44:03 2011 +0200 +Commit: Piotr Drąg +CommitDate: Thu Sep 8 20:44:19 2011 +0200 + + Updated Polish translation + + po/pl.po | 188 + +++++++++++++++++++++++++++++---------------------------------- + 1 file changed, 85 insertions(+), 103 deletions(-) + +commit c8ef5b7d6c08c2e455527d42e1a1845261d30f09 +Author: Damien Lespiau +AuthorDate: Thu Sep 8 14:25:41 2011 +0100 +Commit: Damien Lespiau +CommitDate: Thu Sep 8 17:07:56 2011 +0100 + + simpleaction: Fix documentation of :enabled + + An over-zealous sed, most likely, transformed g_action_.*() into + g_simple_action.*(). + + https://bugzilla.gnome.org/show_bug.cgi?id=658558 + + gio/gsimpleaction.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit e03b70c4a2e8e44b8084de7f8a25b166727316e1 +Author: Alexandre Franke +AuthorDate: Wed Sep 7 11:43:36 2011 +0200 +Commit: Alexandre Franke +CommitDate: Thu Sep 8 17:32:18 2011 +0200 + + Update French translation + + po/fr.po | 189 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 89 insertions(+), 100 deletions(-) + +commit 571185f0f6054c8bdb0927809c0b08c6fd86b012 +Author: Federico Mena Quintero +AuthorDate: Thu Sep 8 09:11:56 2011 -0500 +Commit: Federico Mena Quintero +CommitDate: Thu Sep 8 09:11:56 2011 -0500 + + bgo#640212 - Replace "error stating file" with friendlier messages + + Non-technical users won't know that "stating" refers to stat(2), so we + just use "error when getting information" now. + + Signed-off-by: Federico Mena Quintero + + gio/gdbusauthmechanismsha1.c | 2 +- + gio/glocalfileinfo.c | 4 ++-- + gio/glocalfileoutputstream.c | 2 +- + 3 files changed, 4 insertions(+), 4 deletions(-) + +commit 62a648953b5985456d34a563e519ce8059d97998 +Author: Bruce Cowan +AuthorDate: Wed Sep 7 16:58:57 2011 +0100 +Commit: Bruce Cowan +CommitDate: Wed Sep 7 17:00:06 2011 +0100 + + Updated British English translation + + po/en_GB.po | 171 + ++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 86 insertions(+), 85 deletions(-) + +commit b95237ba53b3454996790042312e4f9a3447a2a7 +Author: Luca Ferretti +AuthorDate: Wed Sep 7 00:33:39 2011 +0200 +Commit: Luca Ferretti +CommitDate: Wed Sep 7 00:34:02 2011 +0200 + + Updated Italian translation + + po/it.po | 85 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 43 insertions(+), 42 deletions(-) + +commit ef0f90a0171aa73b4516483ffa49742b6abf3df5 +Author: Ihar Hrachyshka +AuthorDate: Wed Sep 7 01:29:04 2011 +0300 +Commit: Ihar Hrachyshka +CommitDate: Wed Sep 7 01:29:04 2011 +0300 + + Updated Belarusian translation. + + po/be.po | 32 +++++++++++++++++--------------- + 1 file changed, 17 insertions(+), 15 deletions(-) + +commit cfe04105f4b95f00c2bd52f0759736aa5197fd2a +Author: Kjartan Maraas +AuthorDate: Tue Sep 6 21:49:06 2011 +0200 +Commit: Kjartan Maraas +CommitDate: Tue Sep 6 21:49:06 2011 +0200 + + Added Norwegian bokmål translation + + po/nb.po | 26 ++++++++++++-------------- + 1 file changed, 12 insertions(+), 14 deletions(-) + +commit 27fbaf371278e792c79a3478c2282e43f12472f5 +Author: Ryan Lortie +AuthorDate: Tue Sep 6 14:01:52 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 6 14:07:16 2011 -0400 + + GSettingsBackend: emit changes to correct thread + + When g_settings_apply() is called on a delayed settings backend and + there is a D-Bus error when communicating with dconf-service, recent + versions of the dconf GSettingsBackend call a function in GLib that + improperly delivered the signal directly instead of using + g_main_context_invoke(). + + This patch fixes this function to route in the same way as the + others so + that the signal is dispatched in the proper GMainContext. + + gio/gsettingsbackend.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +commit 8060a7a207192297e62d29b4e5e1b551eab48622 +Author: Ryan Lortie +AuthorDate: Tue Sep 6 10:55:09 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 6 10:55:09 2011 -0400 + + 'master' is now glib 2.31.0 + + configure.ac | 4 ++-- + docs/reference/glib/tmpl/date.sgml | 16 +++++++++++++--- + docs/reference/glib/tmpl/fileutils.sgml | 29 + +++++++++++++++++++++++++++++ + docs/reference/glib/tmpl/glib-unused.sgml | 8 ++++++++ + docs/reference/glib/tmpl/macros.sgml | 2 ++ + docs/reference/glib/tmpl/messages.sgml | 27 + ++++++--------------------- + docs/reference/glib/tmpl/modules.sgml | 10 ++++++---- + docs/reference/glib/tmpl/testing.sgml | 8 ++++++++ + 8 files changed, 74 insertions(+), 30 deletions(-) + +commit 9d6b55499f92a1d846f822d2f1aded2137b86999 +Author: Ryan Lortie +AuthorDate: Mon Sep 5 10:28:54 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 6 10:08:34 2011 -0400 + + glib 2.29.90 + + NEWS | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 50 insertions(+), 1 deletion(-) + +commit 6f6c924b08915c93e411370ea670b6e8af37ac5d +Author: Andika Triwidada +AuthorDate: Tue Sep 6 16:50:11 2011 +0700 +Commit: Andika Triwidada +CommitDate: Tue Sep 6 16:50:11 2011 +0700 + + Updated Indonesian translation + + po/id.po | 533 + +++++++++++++++++---------------------------------------------- + 1 file changed, 146 insertions(+), 387 deletions(-) + +commit 8a7d33024a377c99ca17b37ff5f02854bb71463b +Author: Ryan Lortie +AuthorDate: Tue Sep 6 00:12:12 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 6 00:31:49 2011 -0400 + + gio docs: lots more fixes + + docs/reference/gio/Makefile.am | 2 +- + docs/reference/gio/gdbus-codegen.xml | 2 +- + docs/reference/gio/gio-sections.txt | 20 -------------------- + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 +- + gio/gappinfo.h | 1 + + gio/gapplication.c | 2 -- + gio/gasynchelper.c | 2 +- + 8 files changed, 6 insertions(+), 26 deletions(-) + +commit e88d735787b4cbd3ddacef024a03135a32bab6ac +Author: Ryan Lortie +AuthorDate: Tue Sep 6 00:01:29 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 6 00:01:29 2011 -0400 + + gio docs: only include GTlsInteraction once + + It was included twice in the gio-docs.xml file. + + docs/reference/gio/gio-docs.xml | 1 - + 1 file changed, 1 deletion(-) + +commit f333aeb29771babd1b8d12a26c3d0d21c6410301 +Author: Ryan Lortie +AuthorDate: Mon Sep 5 23:56:33 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 23:56:33 2011 -0400 + + gio docs: drop GTimeZoneMonitor from docs + + docs/reference/gio/gio-docs.xml | 1 - + 1 file changed, 1 deletion(-) + +commit a44b225ae7f01f124e7d54f25a98cde300923b5f +Author: Ryan Lortie +AuthorDate: Mon Sep 5 23:54:42 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 23:54:42 2011 -0400 + + Remove enums from gio.types + + Only objects and interfaces should go in here. If enums are in here + then gtk-doc responds by outputting two anchors for the same name + (which + results in many warnings being printed). + + docs/reference/gio/gio.types | 33 --------------------------------- + 1 file changed, 33 deletions(-) + +commit fb700d7ea3d79be927918b4638cc705b280bbf8b +Author: Ryan Lortie +AuthorDate: Mon Sep 5 19:41:16 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 19:41:16 2011 -0400 + + GDBus object manager example: update -sections.txt + + .../gdbus-object-manager-example-sections.txt | + 4 ---- + 1 file changed, 4 deletions(-) + +commit c2e7ef17ac8da3ef911a5b6f86cd369b46b196bb +Author: Ryan Lortie +AuthorDate: Mon Sep 5 19:35:16 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 19:35:16 2011 -0400 + + gio docs: ignore private .h files + + docs/reference/gio/Makefile.am | 66 + ++++++++++++++++++++++++++++++++++++------ + 1 file changed, 57 insertions(+), 9 deletions(-) + +commit 1f9c189e2095ed0372fa1960da5cce2d6774af65 +Author: Ryan Lortie +AuthorDate: Mon Sep 5 19:10:04 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 19:10:04 2011 -0400 + + gio docs: don't scan subdirectories + + This clears up >50% of the huge warning spew from building GIO docs. + + docs/reference/gio/Makefile.am | 11 +++++++++++ + docs/reference/gio/gio-sections.txt | 3 +-- + 2 files changed, 12 insertions(+), 2 deletions(-) + +commit c14a971f32d87a85d68137ba2dea5afe8ca5fea2 +Author: Ryan Lortie +AuthorDate: Mon Sep 5 19:00:11 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 19:00:11 2011 -0400 + + docs fixups for glib/ + + docs/reference/glib/glib-sections.txt | 2 +- + glib/gwakeup.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 9829d04be86fde5741340ed20b5bc0ae876c95e9 +Author: Ryan Lortie +AuthorDate: Mon Sep 5 18:46:59 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 18:46:59 2011 -0400 + + GObject docs: resolve broken links + + Some links were broken due to typos, because functionality was removed + in GLib 2.0 or for various other reasons. Fix up as many of them + as is + reasonable. + + docs/reference/gobject/tut_gobject.xml | 8 +++----- + docs/reference/gobject/tut_gsignal.xml | 7 ++++--- + docs/reference/gobject/tut_gtype.xml | 2 +- + docs/reference/gobject/tut_howto.xml | 4 ++-- + gobject/gobject.c | 4 ++-- + gobject/gparam.h | 4 ++-- + gobject/gparamspecs.c | 2 +- + gobject/gsignal.h | 4 ++-- + gobject/gtype.c | 6 +++--- + gobject/gtype.h | 9 +++++---- + gobject/gvalue.h | 2 +- + gobject/gvaluecollector.h | 1 - + 12 files changed, 26 insertions(+), 27 deletions(-) + +commit b402c3f014096dfa9e5cce47bcf60ca33aceb5ca +Author: Ryan Lortie +AuthorDate: Mon Sep 5 18:05:05 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 18:05:05 2011 -0400 + + gobject docs: add symbols from GMainLoop boxing + + docs/reference/gobject/gobject-sections.txt | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit b407086b3807fd691c4de7e3e80ac1cc71362ed0 +Author: Ryan Lortie +AuthorDate: Mon Sep 5 17:54:52 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 18:01:39 2011 -0400 + + Back out some changes to docs Makefiles + + Commit ab0e9dbfa76e056f875e969c0d7b6e133ec75431 introduced some + changes + to the documentation Makefiles designed to clean-up the process of + deciding which headers get scanned for the docs. + + Unfortunately, the gtk-doc Makefile doesn't use HFILE_GLOB for + actually + generating the docs -- only for knowing when it needs to redo the + generation. Because of this, we need to use IGNORE_HFILES or + otherwise + we get hundreds of symbols in the *-unused.txt files. + + Revert the changes that that commit made to the docs Makefiles (but + leave the generation of the *-public-headers.txt files in place). + + docs/reference/gio/Makefile.am | 2 +- + docs/reference/glib/Makefile.am | 28 ++++++++++++++++++++++++++-- + docs/reference/gobject/Makefile.am | 9 ++++++++- + 3 files changed, 35 insertions(+), 4 deletions(-) + +commit c54bffb9e6cd9bec13b676c3e8e6ab596c58fa49 +Author: Duarte Loreto +AuthorDate: Mon Sep 5 22:30:09 2011 +0100 +Commit: Duarte Loreto +CommitDate: Mon Sep 5 22:30:09 2011 +0100 + + Updated Portuguese translation + + po/pt.po | 156 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 77 insertions(+), 79 deletions(-) + +commit 88c118aab3382824cbef245c2687d4b3c6326ff9 +Author: Ryan Lortie +AuthorDate: Mon Sep 5 11:39:04 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 11:39:04 2011 -0400 + + one missed docs fix + + glib/gbookmarkfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ba6d70a99e735161fb34cf67aef81b29c45e2a5c +Author: Ryan Lortie +AuthorDate: Mon Sep 5 11:36:48 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 11:36:48 2011 -0400 + + include 'hmac' in the docs + + It wasn't added to glib-docs.sgml, so it wasn't being included in + the html. + + docs/reference/glib/glib-docs.sgml | 1 + + 1 file changed, 1 insertion(+) + +commit 3b25e975b3272f73e9e3d61ffd67ce89b6edfc8a +Author: Ryan Lortie +AuthorDate: Mon Sep 5 11:30:58 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 11:30:58 2011 -0400 + + gtk-doc fixups for glib/ + + docs/reference/glib/tmpl/date.sgml | 2 +- + glib/gbookmarkfile.c | 4 +- + glib/gdatetime.c | 100 + ++++++++++++++++++------------------- + glib/glib-unix.c | 2 +- + glib/glib-unix.h | 10 ++-- + glib/gmain.c | 2 +- + glib/gtestutils.c | 2 +- + glib/gunicode.h | 4 +- + glib/guniprop.c | 2 +- + 9 files changed, 64 insertions(+), 64 deletions(-) + +commit 118fa5d5022e570834d518ba03ae36bc20ed7a18 +Author: Ryan Lortie +AuthorDate: Mon Sep 5 10:29:09 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 10:32:51 2011 -0400 + + doc: Remove reference to non-existent #GChildWatch + + The g_spawn_ documentation was talking about #GChildWatch, which + doesn't + exist. Refer to g_child_watch_add() instead. + + glib/gspawn.c | 19 +++++++++---------- + 1 file changed, 9 insertions(+), 10 deletions(-) + +commit c32c9526ad2507ca9f4bcbc117cf7dc057ad047e +Author: Alexandre Franke +AuthorDate: Mon Sep 5 13:22:37 2011 +0200 +Commit: Alexandre Franke +CommitDate: Mon Sep 5 13:22:37 2011 +0200 + + Fix missing semi-colon after struct definition + + docs/reference/gobject/tut_howto.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2fce869f10d5534d339421c1646468e996707fe7 +Author: Fran Dieguez +AuthorDate: Mon Sep 5 11:55:50 2011 +0200 +Commit: Fran Dieguez +CommitDate: Mon Sep 5 11:55:50 2011 +0200 + + Updated galician translations + + po/gl.po | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +commit 66e124005563f345a904a526896a01e545cfcf30 +Author: Jorge González +AuthorDate: Mon Sep 5 08:24:30 2011 +0200 +Commit: Jorge González +CommitDate: Mon Sep 5 08:24:30 2011 +0200 + + Updated Spanish translation + + po/es.po | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit 041a086256d90f6316c7cf23d8d6c6187a460296 +Author: Ryan Lortie +AuthorDate: Mon Sep 5 00:38:14 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 00:38:14 2011 -0400 + + pa.po: prefer pa_IN date/time formats + + It's clear that the other GDateTime formats in this file correspond + with + those in pa_IN, not pa_PK, so prefer those for the newly-added strings + as well. + + po/pa.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 76c49589064c38ce9fe4789677f65e3e09021b40 +Author: Ryan Lortie +AuthorDate: Mon Sep 5 00:03:39 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 00:08:47 2011 -0400 + + Populate missing GDateTime format strings + + Use the glibc locale database to add GDateTime strings only for + those locales + that had not specifically added them for themselves. + + Some locales have different translations from what is in the C + library and we + leave those alone with this commit. + + po/af.po | 2 +- + po/am.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/as.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/ast.po | 62 +++++++++++++++++++++++++------------------------- + po/az.po | 62 +++++++++++++++++++++++++------------------------- + po/be.po | 2 +- + po/be@latin.po | 62 +++++++++++++++++++++++++------------------------- + po/bg.po | 5 ++-- + po/bn.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/bn_IN.po | 5 ++-- + po/bs.po | 62 +++++++++++++++++++++++++------------------------- + po/ca.po | 2 +- + po/ca@valencia.po | 2 +- + po/cs.po | 6 ++--- + po/cy.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/da.po | 2 +- + po/de.po | 2 +- + po/dz.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/el.po | 5 ++-- + po/en_CA.po | 3 +-- + po/en_GB.po | 5 ++-- + po/et.po | 2 +- + po/eu.po | 5 ++-- + po/fa.po | 62 +++++++++++++++++++++++++------------------------- + po/fi.po | 2 +- + po/fr.po | 2 +- + po/ga.po | 2 +- + po/gu.po | 5 ++-- + po/he.po | 5 ++-- + po/hi.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/hr.po | 62 +++++++++++++++++++++++++------------------------- + po/hu.po | 5 ++-- + po/hy.po | 62 +++++++++++++++++++++++++------------------------- + po/id.po | 2 +- + po/is.po | 66 + ++++++++++++++++++++++++++--------------------------- + po/it.po | 2 +- + po/ja.po | 5 ++-- + po/ka.po | 62 +++++++++++++++++++++++++------------------------- + po/kk.po | 62 +++++++++++++++++++++++++------------------------- + po/kn.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/ko.po | 3 +-- + po/ku.po | 62 +++++++++++++++++++++++++------------------------- + po/lv.po | 2 +- + po/mai.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/mg.po | 62 +++++++++++++++++++++++++------------------------- + po/mk.po | 62 +++++++++++++++++++++++++------------------------- + po/ml.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/mn.po | 62 +++++++++++++++++++++++++------------------------- + po/mr.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/ms.po | 64 + +++++++++++++++++++++++++-------------------------- + po/nds.po | 62 +++++++++++++++++++++++++------------------------- + po/ne.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/nl.po | 2 +- + po/nn.po | 62 +++++++++++++++++++++++++------------------------- + po/oc.po | 62 +++++++++++++++++++++++++------------------------- + po/or.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/pa.po | 5 ++-- + po/pl.po | 2 +- + po/ps.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/pt.po | 2 +- + po/ro.po | 2 +- + po/ru.po | 2 +- + po/rw.po | 62 +++++++++++++++++++++++++------------------------- + po/si.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/sk.po | 64 + +++++++++++++++++++++++++-------------------------- + po/sl.po | 2 +- + po/sq.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/sr.po | 5 ++-- + po/sr@ije.po | 64 + +++++++++++++++++++++++++-------------------------- + po/sr@latin.po | 5 ++-- + po/sv.po | 2 +- + po/ta.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/te.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/th.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/tl.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/tr.po | 5 ++-- + po/tt.po | 62 +++++++++++++++++++++++++------------------------- + po/ug.po | 2 +- + po/uk.po | 62 +++++++++++++++++++++++++------------------------- + po/vi.po | 5 ++-- + po/wa.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/xh.po | 62 +++++++++++++++++++++++++------------------------- + po/yi.po | 68 + +++++++++++++++++++++++++++---------------------------- + po/zh_CN.po | 5 ++-- + po/zh_HK.po | 5 ++-- + po/zh_TW.po | 5 ++-- + 86 files changed, 1522 insertions(+), 1543 deletions(-) + +commit 2752f8668e74fc080bda22994fdbddc3cc77cd6b +Author: Ryan Lortie +AuthorDate: Mon Sep 5 00:01:02 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 5 00:01:02 2011 -0400 + + po/: update all .po files with 'make update-po' + + This should get the proper Report-Msgid-Bugs-To: into each file. + + po/af.po | 1431 ++++++++++++++++------------- + po/am.po | 2373 +++++++++++++++++++++++++++++++++--------------- + po/ar.po | 1899 ++++++++++++++++++++------------------ + po/as.po | 2400 +++++++++++++++++++++++++++++++++--------------- + po/ast.po | 2438 + ++++++++++++++++++++++++++++++++++--------------- + po/az.po | 2375 +++++++++++++++++++++++++++++++++--------------- + po/be.po | 204 +++-- + po/be@latin.po | 2465 + +++++++++++++++++++++++++++++++++++--------------- + po/bg.po | 389 ++++---- + po/bn.po | 2395 +++++++++++++++++++++++++++++++++--------------- + po/bn_IN.po | 1523 +++++++++++++++++-------------- + po/bs.po | 2383 +++++++++++++++++++++++++++++++++--------------- + po/ca.po | 1467 +++++++++++++++++------------- + po/ca@valencia.po | 960 +++++++++++--------- + po/cs.po | 1434 ++++++++++++++++------------- + po/cy.po | 2401 + ++++++++++++++++++++++++++++++++++--------------- + po/da.po | 1441 ++++++++++++++++------------- + po/de.po | 555 +++++++----- + po/dz.po | 2385 +++++++++++++++++++++++++++++++++--------------- + po/el.po | 1502 +++++++++++++++++-------------- + po/en@shaw.po | 2496 + +++++++++++++++++++++++++++++++++++--------------- + po/en_CA.po | 95 +- + po/en_GB.po | 1457 +++++++++++++++++------------- + po/eo.po | 1049 ++++++++++++--------- + po/es.po | 250 ++--- + po/et.po | 1096 ++++++++++++++++++++-- + po/eu.po | 1816 +++++++++++++++++++++---------------- + po/fa.po | 2403 + ++++++++++++++++++++++++++++++++++--------------- + po/fi.po | 808 ++++++++++++++++- + po/fr.po | 553 +++++++----- + po/ga.po | 1046 ++++++++++++--------- + po/gl.po | 204 +++-- + po/gu.po | 1507 +++++++++++++++++-------------- + po/he.po | 420 +++++---- + po/hi.po | 2394 +++++++++++++++++++++++++++++++++--------------- + po/hr.po | 2393 +++++++++++++++++++++++++++++++++--------------- + po/hu.po | 1658 +++++++++++++++++++--------------- + po/hy.po | 2299 +++++++++++++++++++++++++++++----------------- + po/id.po | 957 ++++++++++++-------- + po/is.po | 2375 +++++++++++++++++++++++++++++++++--------------- + po/it.po | 482 +++++----- + po/ja.po | 1442 ++++++++++++++++------------- + po/ka.po | 2389 +++++++++++++++++++++++++++++++++--------------- + po/kk.po | 2226 +++++++++++++++++++++++++++++++-------------- + po/kn.po | 2411 + ++++++++++++++++++++++++++++++++++--------------- + po/ko.po | 266 +++--- + po/ku.po | 2379 +++++++++++++++++++++++++++++++++--------------- + po/lt.po | 1347 +++++++++++++-------------- + po/lv.po | 588 +++++++----- + po/mai.po | 2401 + ++++++++++++++++++++++++++++++++++--------------- + po/mg.po | 2385 +++++++++++++++++++++++++++++++++--------------- + po/mk.po | 2407 + ++++++++++++++++++++++++++++++++++--------------- + po/ml.po | 2394 +++++++++++++++++++++++++++++++++--------------- + po/mn.po | 2406 + ++++++++++++++++++++++++++++++++++--------------- + po/mr.po | 2394 +++++++++++++++++++++++++++++++++--------------- + po/ms.po | 2375 +++++++++++++++++++++++++++++++++--------------- + po/nb.po | 252 +++--- + po/nds.po | 2379 +++++++++++++++++++++++++++++++++--------------- + po/ne.po | 2381 +++++++++++++++++++++++++++++++++--------------- + po/nl.po | 1459 +++++++++++++++++------------- + po/nn.po | 2422 + ++++++++++++++++++++++++++++++++++--------------- + po/oc.po | 2379 +++++++++++++++++++++++++++++++++--------------- + po/or.po | 2394 +++++++++++++++++++++++++++++++++--------------- + po/pa.po | 615 ++++++------- + po/pl.po | 1452 +++++++++++++++++------------- + po/ps.po | 2386 +++++++++++++++++++++++++++++++++--------------- + po/pt.po | 1443 ++++++++++++++++------------- + po/pt_BR.po | 285 +++--- + po/ro.po | 1503 +++++++++++++++++-------------- + po/ru.po | 1414 +++++++++++++++-------------- + po/rw.po | 2389 +++++++++++++++++++++++++++++++++--------------- + po/si.po | 2381 +++++++++++++++++++++++++++++++++--------------- + po/sk.po | 2391 +++++++++++++++++++++++++++++++++--------------- + po/sl.po | 2601 + +++++++++++++++++++++++++++++++---------------------- + po/sq.po | 2460 + +++++++++++++++++++++++++++++++++++--------------- + po/sr.po | 380 ++++---- + po/sr@ije.po | 2375 +++++++++++++++++++++++++++++++++--------------- + po/sr@latin.po | 419 +++++---- + po/sv.po | 256 +++--- + po/ta.po | 2394 +++++++++++++++++++++++++++++++++--------------- + po/te.po | 2394 +++++++++++++++++++++++++++++++++--------------- + po/th.po | 2402 + ++++++++++++++++++++++++++++++++++--------------- + po/tl.po | 2393 +++++++++++++++++++++++++++++++++--------------- + po/tr.po | 555 +++++++----- + po/tt.po | 2379 +++++++++++++++++++++++++++++++++--------------- + po/ug.po | 398 ++++---- + po/uk.po | 2413 + ++++++++++++++++++++++++++++++++++--------------- + po/vi.po | 1490 ++++++++++++++++-------------- + po/wa.po | 2379 +++++++++++++++++++++++++++++++++--------------- + po/xh.po | 2387 +++++++++++++++++++++++++++++++++--------------- + po/yi.po | 2394 +++++++++++++++++++++++++++++++++--------------- + po/zh_CN.po | 1448 ++++++++++++++++------------- + po/zh_HK.po | 327 ++++--- + po/zh_TW.po | 270 +++--- + 94 files changed, 103729 insertions(+), 52698 deletions(-) + +commit b6fdbb8e448be794fd9d098dc5f2bd327b2f23f0 +Author: Ryan Lortie +AuthorDate: Sun Sep 4 18:01:55 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Sep 4 23:55:58 2011 -0400 + + g_date_time_format: honour T_FMT_AMPM for '%r' + + We had the 12 hour time format hard-coded to "%02d:%02d:%02d %s" + but it + actually changes depending on the locale. Just with the other + formats, + use nl_langinfo() if we have it, otherwise fall back on gettext(). + + configure.ac | 2 ++ + glib/gdatetime.c | 17 +++++++---------- + 2 files changed, 9 insertions(+), 10 deletions(-) + +commit 9ddd25c18b59c443945ff9dcb19675e00caeca63 +Author: Ryan Lortie +AuthorDate: Sun Sep 4 20:35:31 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Sep 4 23:52:50 2011 -0400 + + GDateTime: translate "AM"/"PM", not "am"/"pm" + + "AM" and "PM" are the POSIX locale values. + + Modify the 14 translations that have been updated since then to save a + headache to those translators. + + glib/gdatetime.c | 4 ++-- + po/be.po | 8 ++++---- + po/en_CA.po | 8 ++++---- + po/es.po | 16 ++++++++-------- + po/gl.po | 16 ++++++++-------- + po/ko.po | 4 ++-- + po/lt.po | 16 ++++++++-------- + po/nb.po | 8 ++++---- + po/pt_BR.po | 16 ++++++++-------- + po/ru.po | 4 ++-- + po/sr.po | 16 ++++++++-------- + po/sr@latin.po | 16 ++++++++-------- + po/sv.po | 16 ++++++++-------- + po/zh_HK.po | 8 ++++---- + po/zh_TW.po | 8 ++++---- + 15 files changed, 82 insertions(+), 82 deletions(-) + +commit e39a03e14d2f22ca6acbb772df908faa78a7d73e +Author: Ryan Lortie +AuthorDate: Sun Sep 4 21:00:54 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Sep 4 22:09:00 2011 -0400 + + Update en_CA.po (Canadian English translation) + + po/en_CA.po | 3047 + +++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 2042 insertions(+), 1005 deletions(-) + +commit a2b350d9c3bcc979f1ce4dd6efc7ca79c07624b3 +Author: Ryan Lortie +AuthorDate: Sun Sep 4 21:31:13 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Sep 4 22:03:53 2011 -0400 + + po/Makefile.in.in: intltool compatibility fixes + + Our infrastructure for updating the glib20.pot file was incompatible + with intltool in a couple of ways: + + - we didn't set the Report-Msgid-Bugs-To to + + - we used paths relative to the $(top_srcdir), rather than po/ + + This resulted in spamming of pointless changes to the .po files + whenever + 'make update-po' was run (since all of the translators are using + intltool-based tools). + + po/Makefile.in.in | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 6274386e52efd7c951d5e40ed2eacd5d0a843b83 +Author: Matthias Clasen +AuthorDate: Sun Sep 4 20:06:53 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 4 20:06:53 2011 -0400 + + Only use gcc-specific options when the compiler is gcc + + The -Wstrict-aliasing option that we use to compile atomic + tests does not exist with compilers other than gcc, so + don't pass it to those. + https://bugzilla.gnome.org/show_bug.cgi?id=652272 + https://bugzilla.gnome.org/show_bug.cgi?id=656152 + + configure.ac | 2 ++ + glib/tests/Makefile.am | 5 ++++- + 2 files changed, 6 insertions(+), 1 deletion(-) + +commit 350a1cda0a4ef7ad29f0c041239a96ea1ea1c8c5 +Author: Dan Winship +AuthorDate: Sun Sep 4 17:33:21 2011 -0400 +Commit: Dan Winship +CommitDate: Sun Sep 4 17:50:41 2011 -0400 + + update .gitignore + + tests/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit 749fa587bc081e0f5b9c4af1ed8bdf90bd0856d2 +Author: Dan Winship +AuthorDate: Sun Sep 4 17:17:11 2011 -0400 +Commit: Dan Winship +CommitDate: Sun Sep 4 17:50:41 2011 -0400 + + fix a few warnings on non-Linux + + mostly #ifdeffing functions that are only called by #ifdeffed code + + gio/gsocketaddress.c | 1 + + gio/xdgmime/xdgmimemagic.c | 2 ++ + glib/gfileutils.c | 3 +++ + glib/tests/option-argv0.c | 2 ++ + 4 files changed, 8 insertions(+) + +commit afa82ae805f9c8bb875a3f863a7b4669953f159f +Author: Patrick Welche +AuthorDate: Thu Sep 1 10:10:38 2011 +0100 +Commit: Dan Winship +CommitDate: Sun Sep 4 17:50:41 2011 -0400 + + Avoid getmntinfo + + - getmntinfo can take struct statfs or statvfs depending on the + OS. Use getvfsstat and if not found getfsstat instead. Idea from + Dan Winship. + - g_local_file_query_filesystem_info(): use statvfs.f_fstypename + if available + + https://bugzilla.gnome.org/show_bug.cgi?id=617949 + + configure.ac | 5 +++-- + gio/glocalfile.c | 12 ++++++++---- + gio/gunixmounts.c | 54 + ++++++++++++++++++++++++++++++++++++------------------ + 3 files changed, 47 insertions(+), 24 deletions(-) + +commit 5cea24fc88ec1fa9ce0d37e368d6041ea4e8bc7e +Author: Fran Dieguez +AuthorDate: Sun Sep 4 18:37:11 2011 +0200 +Commit: Fran Dieguez +CommitDate: Sun Sep 4 18:37:11 2011 +0200 + + Updated galician translations + + po/gl.po | 166 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 88 insertions(+), 78 deletions(-) + +commit a78ffde652d1a9c6a2004519a8385d3df2c0d668 +Author: Ihar Hrachyshka +AuthorDate: Sun Sep 4 18:52:29 2011 +0300 +Commit: Ihar Hrachyshka +CommitDate: Sun Sep 4 18:52:29 2011 +0300 + + Updated Belarusian translation. + + po/be.po | 196 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 101 insertions(+), 95 deletions(-) + +commit e74ca39dae4f90a365f9d83fb216e5b2f0de6113 +Author: Aurimas Černius +AuthorDate: Sun Sep 4 18:31:33 2011 +0300 +Commit: Aurimas Černius +CommitDate: Sun Sep 4 18:31:33 2011 +0300 + + Updated Lithuanian translation + + po/lt.po | 621 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 343 insertions(+), 278 deletions(-) + +commit 15f1ba47219be9cf92b1a6a1b615c090afde836d +Author: Dan Winship +AuthorDate: Sun Sep 4 10:33:37 2011 -0400 +Commit: Dan Winship +CommitDate: Sun Sep 4 10:33:37 2011 -0400 + + gio/tests/tls-interaction: fix two sporadic errors + + The threaded tests are using the default main context in the worker + thread, but were not g_main_context_acquire()ing it first, which meant + that g_tls_interaction_invoke_ask_password() in the main thread would + sometimes succeed in acquiring it itself and thus performing the + operation in the wrong thread. Fix that. + + Also, we can't unref the loop from the worker thread, because the main + thread isn't holding a reference on it, and so it might end up being + destroyed while that thread is still inside g_main_loop_quit(). + + gio/tests/tls-interaction.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 655c9f5753e5a2a6be863632149459d0952d208b +Author: Dan Winship +AuthorDate: Sun Sep 4 08:42:31 2011 -0400 +Commit: Dan Winship +CommitDate: Sun Sep 4 08:42:31 2011 -0400 + + gsocket: fix win32 build + + https://bugzilla.gnome.org/show_bug.cgi?id=658157 + + gio/gsocket.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit e943366de5cd4da4bdaf625f709b66ff9101ee3b +Author: Dan Winship +AuthorDate: Sun Sep 4 08:42:03 2011 -0400 +Commit: Dan Winship +CommitDate: Sun Sep 4 08:42:03 2011 -0400 + + configure: fix win32 build + + Only require -lresolv on unix, like before + + https://bugzilla.gnome.org/show_bug.cgi?id=645336 + + configure.ac | 68 + +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 35 insertions(+), 33 deletions(-) + +commit 2d7051e3a33a70a01d5ee06c1f10c347f6c08baf +Author: Ryan Lortie +AuthorDate: Sat Sep 3 20:12:53 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sat Sep 3 23:06:18 2011 -0400 + + g_date_time_format: improve support for alt digits + + Improve a few situations where g_date_time_format() was getting the + padding wrong when displaying alt digits (eg: Arabic numerals) for + formatting time. + + We now depend on nl_langinfo (_NL_CTYPE_OUTDIGITn_WC) to do the + conversion, which is very likely glibc-specific, but our previous + method + relied on a glibc-specific printf() feature, so no harm done there. + + Add a configure check for nl_langinfo (_NL_CTYPE_OUTDIGITn_WC). + + Uncomment a few testcases that were failing previously. + + https://bugzilla.gnome.org/show_bug.cgi?id=658107 + + configure.ac | 20 ++++++ + glib/gdatetime.c | 167 + +++++++++++++++++++++++++------------------------ + glib/tests/gdatetime.c | 19 +++--- + 3 files changed, 114 insertions(+), 92 deletions(-) + +commit 4a371c2ce5262cdecc48ab998e9b66ce7b46ee4b +Author: Dan Winship +AuthorDate: Sat Sep 3 19:49:19 2011 -0400 +Commit: Dan Winship +CommitDate: Sat Sep 3 19:58:40 2011 -0400 + + g_network_address_parse: deprecate symbolic port names + + (which shouldn't ever have been part of the API. Grr.) + + Solaris /etc/services doesn't even have "http", which was causing + tests/network-address to fail... + + gio/gnetworkaddress.c | 8 ++++++-- + gio/tests/network-address.c | 1 - + 2 files changed, 6 insertions(+), 3 deletions(-) + +commit af2a905e5480bc7eb82e7a43ef7fead7b3b90dd7 +Author: Dan Winship +AuthorDate: Sat Sep 3 19:14:16 2011 -0400 +Commit: Dan Winship +CommitDate: Sat Sep 3 19:58:40 2011 -0400 + + gsocket: fix g_socket_details_from_fd() on Solaris + + On Solaris, getsockname() on an unconnected socket gives an addrlen of + 0 and doesn't set the sockaddr. So use the SO_DOMAIN sockopt to find + the socket family in that case. (SO_DOMAIN doesn't exist everywhere, + so we can't use it unconditionally. Also, we have to only use it if + getsockname() fails, since SO_DOMAIN returns a bogus value for + accept()ed sockets on both Linux and Solaris...) + + gio/gsocket.c | 30 ++++++++++++++++++++++++++---- + 1 file changed, 26 insertions(+), 4 deletions(-) + +commit 0d637931299f254e1b9a2cdb2d4e050b157ec8d9 +Author: Dan Winship +AuthorDate: Sat Sep 3 18:37:43 2011 -0400 +Commit: Dan Winship +CommitDate: Sat Sep 3 19:58:40 2011 -0400 + + configure: check if -lsocket is needed (for Solaris) + + Also, link libgio to -lresolv explicitly, rather than depending on + getting it implicitly via the libasyncns build (which should + eventually be going away). + + https://bugzilla.gnome.org/show_bug.cgi?id=645336 + + configure.ac | 66 + ++++++++++++++++++++++++---------------------- + gio/Makefile.am | 1 + + gio/libasyncns/Makefile.am | 2 +- + 3 files changed, 37 insertions(+), 32 deletions(-) + +commit a636dfd7fbe5757384773460dc01e2727d7ede75 +Author: Ryan Lortie +AuthorDate: Sat Sep 3 19:44:13 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sat Sep 3 19:44:43 2011 -0400 + + Revert "g_date_time_format: support %D" + + This reverts commit 46ce7907720074089040275280bb20208bafeb6a. + + git-bz mishap (I think?) + + glib/gdatetime.c | 10 ---------- + 1 file changed, 10 deletions(-) + +commit 4d382a5a1c23f33b9c21b4ad8314787cbc5347af +Author: Og B. Maciel +AuthorDate: Sat Sep 3 18:39:01 2011 -0400 +Commit: Og B. Maciel +CommitDate: Sat Sep 3 18:39:01 2011 -0400 + + Merged improvements from 2-28 branch Brazilian Translations from + Adorilson Bezerra . + + po/pt_BR.po | 234 + +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 119 insertions(+), 115 deletions(-) + +commit 793dae876d43420f9d80112735d65ab1f03ffe07 +Author: Og B. Maciel +AuthorDate: Sat Sep 3 17:50:36 2011 -0400 +Commit: Og B. Maciel +CommitDate: Sat Sep 3 17:50:36 2011 -0400 + + Updated Brazilian Portuguese translation. + + po/pt_BR.po | 192 + ++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 108 insertions(+), 84 deletions(-) + +commit 46511fd2ca0bbe660040a4aa8a995d456d4cb4c4 +Author: Changwoo Ryu +AuthorDate: Sat Sep 3 21:15:43 2011 +0900 +Commit: Changwoo Ryu +CommitDate: Sat Sep 3 21:15:43 2011 +0900 + + Update Korean translation + + po/ko.po | 473 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 266 insertions(+), 207 deletions(-) + +commit c2b385c5c23d5f553add320f223282e96fd1c88a +Author: Kjartan Maraas +AuthorDate: Sat Sep 3 13:47:44 2011 +0200 +Commit: Kjartan Maraas +CommitDate: Sat Sep 3 13:48:01 2011 +0200 + + Added Norwegian bokmål translation + + po/nb.po | 94 + ++++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 50 insertions(+), 44 deletions(-) + +commit 8e7112a2d37323c29a8072a7ffe3fc6f44c17bb0 +Author: Jorge González +AuthorDate: Sat Sep 3 13:38:38 2011 +0200 +Commit: Jorge González +CommitDate: Sat Sep 3 13:38:38 2011 +0200 + + Updated Spanish translation + + po/es.po | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +commit f091c6a99b1c9e23e8e60a9e5ef35290e0ab4853 +Author: Matthias Clasen +AuthorDate: Fri Sep 2 23:36:03 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 2 23:37:12 2011 -0400 + + gdatetime: Fix locale-changing code + + As pointed out by Ryan Lortie, the code didn't actually ever + switch back to the old locale. + + https://bugzilla.gnome.org/show_bug.cgi?id=658104 + + glib/tests/gdatetime.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 9860c83ad63ec664a25cf1719ceaeeed70b059d9 +Author: Ryan Lortie +AuthorDate: Fri Sep 2 21:12:16 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 2 21:17:50 2011 -0400 + + g_date_time_format: add standards notes to the doc + + Explicitly mention C99's strftime() in the documentation for + g_date_time_format() as the one that we aim for compatibility with. + Specifically list the formats we do not support as well as the extra + ones that we borrow from glibc. + + glib/gdatetime.c | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +commit bdb34e3217e46236cafa61991a15b9aa2e80ba61 +Author: Ryan Lortie +AuthorDate: Fri Sep 2 21:04:02 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 2 21:08:35 2011 -0400 + + GDateTime: test _format against strftime() + + Test g_date_time_format() against strftime(). This test found quite a + few cases of incorrect behaviour on our part (fixes already committed + for those). + + glib/tests/gdatetime.c | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +commit dcbfeb579a0890c3e3251f4c1ce0c16dc46f7c72 +Author: Ryan Lortie +AuthorDate: Fri Sep 2 21:03:33 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 2 21:05:53 2011 -0400 + + GDateTime test: plug a couple of leaks + + glib/tests/gdatetime.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 1b04f0d9730e94c80db35f3dbd21cdfbb7e2c9da +Author: Ryan Lortie +AuthorDate: Fri Sep 2 20:54:51 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 2 21:05:40 2011 -0400 + + g_date_time_format: rip out non-working %W format + + Our implementation of %W is incorrect. Nobody should want to use this + format anyway and the implementation is non-trivial, so rip it out + rather than fixing it. + + Remove the testcase for %W as well. + + glib/gdatetime.c | 9 --------- + glib/tests/gdatetime.c | 1 - + 2 files changed, 10 deletions(-) + +commit b8c2fd7e05e18cb45eb83c751df394e0e3174084 +Author: Ryan Lortie +AuthorDate: Fri Sep 2 20:53:02 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 2 21:05:40 2011 -0400 + + g_date_time_format: clarify documentation + + Add some clarification to the documentation for %g, %G, %V and %u + formats (which all concern themselves with ISO 8601 week dates). + + glib/gdatetime.c | 20 ++++++++++++-------- + 1 file changed, 12 insertions(+), 8 deletions(-) + +commit 46ce7907720074089040275280bb20208bafeb6a +Author: Ryan Lortie +AuthorDate: Fri Sep 2 19:38:45 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 2 21:05:40 2011 -0400 + + g_date_time_format: support %D + + %D represents the date in mm/dd/yy format. + + https://bugzilla.gnome.org/show_bug.cgi?id=658061 + + glib/gdatetime.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 4b35f12552ebd9d064c7e6dc97e0e1e9c57b6215 +Author: Ryan Lortie +AuthorDate: Fri Sep 2 19:34:33 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 2 21:05:40 2011 -0400 + + g_date_time_format: small fixups + + Add missing 'break;' from the case: block for %c. Reorder the + cases so + that %F comes before %g/%G and %n comes in its correct alphabetical + order. + + glib/gdatetime.c | 19 ++++++++++--------- + 1 file changed, 10 insertions(+), 9 deletions(-) + +commit 65fe8b73c50b89358732e0c0d093587b62a1cea0 +Author: Ryan Lortie +AuthorDate: Fri Sep 2 19:33:32 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 2 21:05:23 2011 -0400 + + g_date_time_format: fix padding for some formats + + %e is supposed to be space-padded and %W is supposed to be 0-padded + + Adjust the testcase accordingly since it expects the wrong behaviour. + + glib/gdatetime.c | 4 ++-- + glib/tests/gdatetime.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit b4591aa3dc5689de4e3520f803ed6cf13ef570a0 +Author: Ryan Lortie +AuthorDate: Fri Sep 2 21:02:27 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 2 21:05:23 2011 -0400 + + GDateTime test: don't test removed %N + + glib/tests/gdatetime.c | 1 - + 1 file changed, 1 deletion(-) + +commit a1b665c1112912152c45b68dfe73c0da027ebdea +Author: Ryan Lortie +AuthorDate: Fri Sep 2 14:53:21 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 2 18:10:54 2011 -0400 + + g_date_time_format: support %g and %G + + These are the 2-digit and 4-digit ISO week-numbering years. + + https://bugzilla.gnome.org/show_bug.cgi?id=658061 + + glib/gdatetime.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit 034952ead64842b95b75a9ebaed45741edd0c7aa +Author: Ryan Lortie +AuthorDate: Fri Sep 2 13:38:03 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 2 18:10:38 2011 -0400 + + g_date_time_format: drop %N format + + %N is not specified in any standards document, but we use it to + display + the number of microseconds. + + The fact that our our current implementation of it is nearly useless + (since it does not zero-pad) coupled with the high chance that + a future + version of the C standard may specify it with another meaning + means that + we should drop it. + + https://bugzilla.gnome.org/show_bug.cgi?id=658061 + + glib/gdatetime.c | 8 -------- + 1 file changed, 8 deletions(-) + +commit f421f0b88323b2a07d3cf18bf2aa3e2acf509738 +Author: Javier Jardón +AuthorDate: Fri Sep 2 17:22:14 2011 +0100 +Commit: Ryan Lortie +CommitDate: Fri Sep 2 18:07:56 2011 -0400 + + g_date_time_format: support %w + + %w represents the day of the week as a decimal, range 0 to 6, + Sunday being 0. + + https://bugzilla.gnome.org/show_bug.cgi?id=658061 + + glib/gdatetime.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit e975b5b75c6e61ae417ad6a56cf9b9a86ec7d61a +Author: Javier Jardón +AuthorDate: Fri Sep 2 17:09:07 2011 +0100 +Commit: Ryan Lortie +CommitDate: Fri Sep 2 18:07:51 2011 -0400 + + g_date_time_format: support %C + + %C represents the century number (year/100) as a 2-digit integer + + https://bugzilla.gnome.org/show_bug.cgi?id=658061 + + glib/gdatetime.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 6f80dc60429e7310300a5df75a03a093c3fd4767 +Author: Javier Jardón +AuthorDate: Fri Sep 2 16:32:21 2011 +0100 +Commit: Ryan Lortie +CommitDate: Fri Sep 2 18:07:19 2011 -0400 + + g_date_time_format: support %c + + %c represents the preferred date and time representation for the + current locale. + + https://bugzilla.gnome.org/show_bug.cgi?id=658061 + + glib/gdatetime.c | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit b42d15490b88f5e1fdd6385143a4fd58040260db +Author: Javier Jardón +AuthorDate: Fri Sep 2 14:52:37 2011 +0100 +Commit: Ryan Lortie +CommitDate: Fri Sep 2 18:05:45 2011 -0400 + + g_date_time_format: support %V + + %V represents the ISO 8601 week number of the current year as a + decimal number, range 01 to 53, where week 1 is the first week + that has at least 4 days in the new year + + https://bugzilla.gnome.org/show_bug.cgi?id=658061 + + glib/gdatetime.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit 0ea581b80a703f181dc10e5c5fbf9c3a4643d20b +Author: Ihar Hrachyshka +AuthorDate: Fri Sep 2 20:56:39 2011 +0300 +Commit: Ihar Hrachyshka +CommitDate: Fri Sep 2 20:56:39 2011 +0300 + + Updated Belarusian translation. + + po/be.po | 506 + +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 296 insertions(+), 210 deletions(-) + +commit 275f1864d836e76ff36ff3f4473370e981679698 +Author: Chun-wei Fan +AuthorDate: Fri Sep 2 08:39:54 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Sep 2 08:41:01 2011 +0800 + + Update Visual C++ README.txt's a bit + + LibFFI 3.0.10 is now out officially... + + build/win32/vs10/README.txt | 4 ++-- + build/win32/vs9/README.txt | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 8beda5806ae6fb5ad994edecda89ea1df6473ba6 +Author: Daniel Nylander +AuthorDate: Thu Sep 1 22:24:07 2011 +0200 +Commit: Daniel Nylander +CommitDate: Thu Sep 1 22:24:38 2011 +0200 + + Updated Swedish translation + + po/sv.po | 1156 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 619 insertions(+), 537 deletions(-) + +commit b0048bb44413af26a4941f36aac0f904773c4822 +Author: Daniel Nylander +AuthorDate: Thu Sep 1 22:22:32 2011 +0200 +Commit: Daniel Nylander +CommitDate: Thu Sep 1 22:24:38 2011 +0200 + + Updated Swedish translation + + po/sv.po | 161 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 86 insertions(+), 75 deletions(-) + +commit a020fbf8f6cd345c0e7cbd5eb0dae194c5dc6650 +Author: Will Thompson +AuthorDate: Thu Sep 1 14:28:57 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 1 14:28:57 2011 -0400 + + gdbus-codegen: post-process all interfaces when parsing >1 file + + This also fixes a crash when you run gdbus-codegen with no arguments. + + https://bugzilla.gnome.org/show_bug.cgi?id=656323 + + Signed-off-by: David Zeuthen + + gio/gdbus-2.0/codegen/codegen_main.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dbfb56bda94c76366026f0ea738f5472fb7cd0c1 +Author: Kjartan Maraas +AuthorDate: Wed Aug 31 21:17:10 2011 +0200 +Commit: Kjartan Maraas +CommitDate: Wed Aug 31 21:17:10 2011 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 27 ++++++++++++++++++--------- + 1 file changed, 18 insertions(+), 9 deletions(-) + +commit ab8938c64da8f9cf68faca2b8afb3bfa49ff4fa0 +Author: Ryan Lortie +AuthorDate: Tue Aug 30 21:31:40 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Aug 31 12:56:28 2011 -0400 + + Revert "gdatetime: Add g_date_time_source_new()" + + This reverts three commits: + + - 1feb752996b404965a2f58b29a569a273d4374fa + - 5763c631473539746646697e6a775f6eacaa08e2 + - 21a538934091e1449e0479daf066fa20df2dc2ef + + https://bugzilla.gnome.org/show_bug.cgi?id=655129 + + configure.ac | 17 --- + docs/reference/glib/glib-sections.txt | 3 - + glib/gdatetime.c | 232 + ---------------------------------- + glib/gdatetime.h | 3 - + glib/glib.symbols | 1 - + glib/gmain.h | 1 - + glib/tests/Makefile.am | 4 - + glib/tests/glib-clock.c | 38 ------ + glib/tests/timeout.c | 70 ---------- + 9 files changed, 369 deletions(-) + +commit fe4fc3e8b5a5ad8d4113c4df1fe8e0e9f295035e +Author: Pavel Holejsovsky +AuthorDate: Tue Aug 30 16:20:55 2011 +0200 +Commit: Pavel Holejsovsky +CommitDate: Wed Aug 31 09:37:51 2011 +0200 + + Make GMainLoop, GMainContext and GSource boxed types + + Also add some annotations for better usage of these types in bindings. + + https://bugzilla.gnome.org/show_bug.cgi?id=657725 + + glib/gmain.c | 35 ++++++++++++++++++----------------- + glib/gmain.h | 8 ++++---- + gobject/gboxed.c | 3 +++ + gobject/glib-types.h | 30 ++++++++++++++++++++++++++++++ + gobject/gobject.symbols | 3 +++ + 5 files changed, 58 insertions(+), 21 deletions(-) + +commit 3354b02ccdb5bdc714cdfbe9bbe9a10589c84153 +Author: Chun-wei Fan +AuthorDate: Wed Aug 31 13:01:04 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Aug 31 13:01:04 2011 +0800 + + Update Win32 and VS Readme files + + Tell people about the GNOME Live! page that outlines building + GLib and its dependencies with Visual C++. + + README.win32 | 5 +++++ + build/win32/vs10/README.txt | 5 +++++ + build/win32/vs9/README.txt | 5 +++++ + 3 files changed, 15 insertions(+) + +commit dab38147aec8bd415a6816422baa59863c941ead +Author: Ryan Lortie +AuthorDate: Tue Aug 30 21:13:08 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Aug 30 21:18:24 2011 -0400 + + es.po: stop translating "kB" to "KiB", etc. + + "kB" is used by GLib to mean 1000 bytes exactly -- not 1024. It is + therefore incorrect to translate this to KiB. Same for the other + units. + + The original commit ef3e5917ca1239b39db2cb433c4306d0152f18f5 + fixing this + problem was reverted, so I'm applying it again. + + See http://mail.gnome.org/archives/gnome-i18n/2011-July/msg00078.html + for more information. + + po/es.po | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 2955981569808304399d16847712f0ef97c6355b +Author: Dan Winship +AuthorDate: Tue Aug 16 19:12:59 2011 -0400 +Commit: Dan Winship +CommitDate: Tue Aug 30 21:16:03 2011 -0400 + + g_get_monotonic_time: fix race condition + + Since there was nothing guaranteeing synchronization of the + assignments to checked and clockid, it would be possible for one + thread to set clockid = CLOCK_MONOTONIC, and for another thread to see + checked = TRUE but still clockid = CLOCK_REALTIME. + + https://bugzilla.gnome.org/show_bug.cgi?id=655129 + + glib/gmain.c | 29 ++++++++++++++--------------- + 1 file changed, 14 insertions(+), 15 deletions(-) + +commit c0eb77bfc8be7c30c271f2415c08f8f3186113c3 +Author: Ryan Lortie +AuthorDate: Tue Aug 30 09:45:52 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Aug 30 19:22:54 2011 -0400 + + unix signal watch: make API match other sources + + Change the unix signal watch API to match other sources in both + available functions, names of those functions and order of the + parameters to the _full function. + + https://bugzilla.gnome.org/show_bug.cgi?id=657705 + + docs/reference/glib/glib-sections.txt | 3 ++- + glib/glib-unix.c | 36 + ++++++++++++++++++++++++++++------- + glib/glib-unix.h | 16 ++++++++++------ + glib/glib.symbols | 3 ++- + glib/tests/unix.c | 12 ++---------- + 5 files changed, 45 insertions(+), 25 deletions(-) + +commit 1292ffc7805773312f42409eeee7a7ce6b5837fc +Author: Javier Jardón +AuthorDate: Tue Aug 30 22:52:59 2011 +0100 +Commit: Javier Jardón +CommitDate: Tue Aug 30 22:52:59 2011 +0100 + + glib.doap: Add glib to "platform" category + + glib.doap | 1 + + 1 file changed, 1 insertion(+) + +commit ae8dcf429d0e16f944f0f8e8ceab5569408ae410 +Author: Jorge González +AuthorDate: Tue Aug 30 19:14:04 2011 +0200 +Commit: Jorge González +CommitDate: Tue Aug 30 19:14:04 2011 +0200 + + Updated Spanish translation + + po/es.po | 125 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 66 insertions(+), 59 deletions(-) + +commit c6bd78f31c29a06d948b675da7f5682fe1c3c218 +Author: Jorge González +AuthorDate: Tue Aug 30 19:00:15 2011 +0200 +Commit: Jorge González +CommitDate: Tue Aug 30 19:00:15 2011 +0200 + + Updated Spanish translation + + po/es.po | 225 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 109 insertions(+), 116 deletions(-) + +commit 49bb7cff4b2f238453363b032f2c401055158026 +Author: Stef Walter +AuthorDate: Sun Aug 28 20:24:56 2011 +0200 +Commit: Stef Walter +CommitDate: Tue Aug 30 18:30:02 2011 +0200 + + gio: Add GTlsInteraction interaction method invocation guarantees + + * Add 'invoke' style method, which can be used to call an interaction + from any thread. The interaction will be run in the appropriate + #GMainContext + * Sync methods can be called whether main loop is running or not. + * Derived classes can choose to implement only sync or async + interaction method, and the invoke method will fill in the blanks. + * Documentation for the above. + * Tests for the above. + + https://bugzilla.gnome.org/show_bug.cgi?id=657567 + + .gitignore | 1 + + gio/gio.symbols | 1 + + gio/gtlsinteraction.c | 423 +++++++++++++++++++++++----- + gio/gtlsinteraction.h | 12 +- + gio/tests/Makefile.am | 3 + + gio/tests/tls-interaction.c | 661 + ++++++++++++++++++++++++++++++++++++++++++++ + 6 files changed, 1036 insertions(+), 65 deletions(-) + +commit 116b2932abfa7727cd0486e6e74624aaf4012ab7 +Author: Tomas Bzatek +AuthorDate: Tue Aug 30 18:00:49 2011 +0200 +Commit: Tomas Bzatek +CommitDate: Tue Aug 30 18:00:49 2011 +0200 + + glocalfile: Fix the grammar + + gio/glocalfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 780591b542dbd15f6165eb011e2e38b0c10bfe47 +Author: Matthias Clasen +AuthorDate: Tue Aug 30 11:44:57 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 30 11:44:57 2011 -0400 + + Post-release version bump + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c6850add98dd0dde66217c47e632a121fee88e80 +Author: Matthias Clasen +AuthorDate: Tue Aug 30 11:10:40 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 30 11:14:37 2011 -0400 + + 2.29.18 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 229234111c418c2186868c47bfdd6684be8ee1cf +Author: Bastien Nocera +AuthorDate: Fri Aug 26 16:36:12 2011 +0100 +Commit: Bastien Nocera +CommitDate: Tue Aug 30 15:55:02 2011 +0100 + + gio: Error out when we cannot modify a GAppInfo + + g_desktop_app_info_set_as_default_for_type() and + g_desktop_app_info_set_as_last_used_for_type () require the + application's ID, but depending on how the GAppInfo was created, + we might not be have one, and would thus silently fail to set + the default application, or last used application. + + https://bugzilla.gnome.org/show_bug.cgi?id=657445 + + gio/gdesktopappinfo.c | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +commit 619b77319619d84523866fd11e2cc484b470ed80 +Author: Matthias Clasen +AuthorDate: Tue Aug 30 10:25:42 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 30 10:28:57 2011 -0400 + + More updates + + NEWS | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 302a5072c915fc95e187e733acab139bca692e0b +Author: Dan Winship +AuthorDate: Sat Aug 27 11:33:43 2011 -0400 +Commit: Dan Winship +CommitDate: Tue Aug 30 09:52:46 2011 -0400 + + gio/tests/gdbus-peer: make this work on non-Linux unixes + + The test was using a socket in a temporary directory, but not actually + creating that temporary directory. This worked fine on Linux since it + actually ended up using an abstract socket instead, but failed on + unixes without abstract sockets. + + https://bugzilla.gnome.org/show_bug.cgi?id=657517 + + gio/tests/gdbus-peer.c | 26 ++++++++++++++++++++++++-- + 1 file changed, 24 insertions(+), 2 deletions(-) + +commit d156492c8333097d969e933abbde2cab6011b321 +Author: Matthias Clasen +AuthorDate: Tue Aug 30 00:00:37 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 30 00:09:51 2011 -0400 + + Add a forgotten section + + docs/reference/gio/gio-docs.xml | 1 + + 1 file changed, 1 insertion(+) + +commit 258ecdfbe643c76ac6c30d008541e17df27cfb47 +Author: Matthias Clasen +AuthorDate: Tue Aug 30 00:00:21 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 30 00:09:51 2011 -0400 + + More doc additions + + docs/reference/gio/gio-sections.txt | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit 08208e3ce22ef5f42697fc9b015df7bff61e2859 +Author: Matthias Clasen +AuthorDate: Mon Aug 29 23:55:48 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 30 00:09:51 2011 -0400 + + Fix a doc comment + + gio/giomodule.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit b57f2e9327c572c2823cebd53afb1e79589c476f +Author: Matthias Clasen +AuthorDate: Mon Aug 29 23:42:24 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 30 00:09:51 2011 -0400 + + Clean up gobject docs + + docs/reference/gobject/gobject-sections.txt | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 0196fcc9ce0492235f681584037de2f61557f3ac +Author: Matthias Clasen +AuthorDate: Mon Aug 29 23:36:27 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 30 00:09:51 2011 -0400 + + Correct a doc typo + + glib/ghmac.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a8b128a01cb0798481c56c4c4a1f84625415d904 +Author: Matthias Clasen +AuthorDate: Mon Aug 29 23:33:48 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 30 00:09:51 2011 -0400 + + Remove no-longer existing api + + docs/reference/glib/glib-sections.txt | 1 - + 1 file changed, 1 deletion(-) + +commit fb74f6e303ee89ab8b37708556a24b5e219c1db1 +Author: Dan Winship +AuthorDate: Sat Aug 27 19:46:51 2011 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 29 23:42:39 2011 -0400 + + GSocketAddress: create IPv4 addresses for IPv6 mapped-IPv4 addresses + + IPv6-mapped-IPv4 addresses are annoying. Just translate them to real + IPv4 addresses. + + based on a patch from Jonny Lamb + https://bugzilla.gnome.org/show_bug.cgi?id=646082 + + gio/gsocketaddress.c | 15 +++++++- + gio/tests/socket.c | 107 + ++++++++++++++++++++++++++++++++++++++++++++++++--- + 2 files changed, 116 insertions(+), 6 deletions(-) + +commit c938250c3335cac58cca8e6747ba8359534989c5 +Author: Matthias Clasen +AuthorDate: Mon Aug 29 21:43:50 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 29 21:43:50 2011 -0400 + + Add a 'since 2.30' index to gobject docs + + docs/reference/gobject/gobject-docs.sgml | 4 ++++ + 1 file changed, 4 insertions(+) + +commit a21ee644c83b4a6cfabdc9b34d6f829277fe9253 +Author: Matthias Clasen +AuthorDate: Mon Aug 29 19:02:33 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 29 19:02:33 2011 -0400 + + Don't distribute MAINTAINERS + + ...it does not exist anymore. + + Makefile.am | 1 - + 1 file changed, 1 deletion(-) + +commit 4fb921439b2b4aa874d0e88cb7cf800c4178bda4 +Author: Matthias Clasen +AuthorDate: Mon Aug 29 18:29:16 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 29 18:29:16 2011 -0400 + + First round of NEWS updates for 2.29.18 + + NEWS | 42 ++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 42 insertions(+) + +commit 027b63ab96f2c978f6670f42c27fe7c8dcdfd4aa +Author: David Zeuthen +AuthorDate: Mon Aug 29 16:46:45 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Aug 29 16:46:45 2011 -0400 + + GDBusObjectManagerServer: Add locking + + Signed-off-by: David Zeuthen + + gio/gdbusobjectmanagerserver.c | 157 + +++++++++++++++++++++++++++++------------ + 1 file changed, 110 insertions(+), 47 deletions(-) + +commit 4e7ef619ebe025bd97d2a3ef8dd8c1b7baa903b2 +Author: David Zeuthen +AuthorDate: Mon Aug 29 16:20:50 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Aug 29 16:20:50 2011 -0400 + + GDBusObjectManagerClient: Add locking + + Signed-off-by: David Zeuthen + + gio/gdbusobjectmanagerclient.c | 107 + +++++++++++++++++++++++++++++++++-------- + 1 file changed, 88 insertions(+), 19 deletions(-) + +commit fcefc71d5932f2828a27c4064d8a64a0382891a9 +Author: David Zeuthen +AuthorDate: Mon Aug 29 15:29:27 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Aug 29 15:29:40 2011 -0400 + + GDBusObjectProxy: Add locking + + Signed-off-by: David Zeuthen + + gio/gdbusobjectproxy.c | 62 + +++++++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 54 insertions(+), 8 deletions(-) + +commit dc38967fd35286f9489a8cdcb3d811d34113ceca +Author: Matthias Clasen +AuthorDate: Mon Aug 29 15:18:29 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 29 15:21:15 2011 -0400 + + Don't call close on invalid fds + + If an fd is -1, don't call close() on it, since that leads to + EBDAF and complaints from valgrind. + + https://bugzilla.gnome.org/show_bug.cgi?id=657593 + + glib/gtestutils.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit fb94a0299bbe23e8531556002cb7e2f895d736e0 +Author: David Zeuthen +AuthorDate: Mon Aug 29 15:19:42 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Aug 29 15:20:02 2011 -0400 + + GDBusObjectSkeleton: Add locking + + Signed-off-by: David Zeuthen + + gio/gdbusobjectskeleton.c | 84 + ++++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 69 insertions(+), 15 deletions(-) + +commit faec5d6b5cebd1075cc75c8be75b8e7f225d4595 +Author: David Zeuthen +AuthorDate: Mon Aug 29 14:23:02 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Aug 29 15:20:02 2011 -0400 + + GDBusInterfaceSkeleton: Add locking + + Signed-off-by: David Zeuthen + + gio/gdbusinterfaceskeleton.c | 75 + ++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 66 insertions(+), 9 deletions(-) + +commit 4e4505b8deaad39d5a6dd598ad49f5cb5dd72480 +Author: Stef Walter +AuthorDate: Sun Aug 28 06:58:29 2011 +0200 +Commit: Matthias Clasen +CommitDate: Mon Aug 29 15:14:38 2011 -0400 + + Print out URL to HTML coverage report after 'make lcov' + + * For easy clicking + + https://bugzilla.gnome.org/show_bug.cgi?id=657540 + + Makefile.decl | 1 + + 1 file changed, 1 insertion(+) + +commit 21a538934091e1449e0479daf066fa20df2dc2ef +Author: Colin Walters +AuthorDate: Mon Aug 29 15:05:34 2011 -0400 +Commit: Colin Walters +CommitDate: Mon Aug 29 15:06:14 2011 -0400 + + gdatetime: Tweak g_date_time_source_new() documentation + + glib/gdatetime.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 1b28408b8bfe282f671716a39bba3208d3fef39a +Author: Matthias Clasen +AuthorDate: Mon Aug 29 14:49:32 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 29 14:49:32 2011 -0400 + + Spelling fixes + + Spelling fixes in comments and docs, provided by + Kjartan Maraas in bug 657336. + + gio/gapplicationcommandline.c | 2 +- + gio/gasyncinitable.c | 2 +- + gio/gbufferedinputstream.c | 4 ++-- + gio/gcancellable.c | 2 +- + gio/gconverter.c | 4 ++-- + gio/gdatainputstream.c | 2 +- + gio/gdbusconnection.c | 6 +++--- + gio/gdbusserver.c | 2 +- + gio/gdesktopappinfo.c | 2 +- + gio/gdrive.c | 2 +- + gio/gfile.c | 4 ++-- + gio/gfileattribute.c | 2 +- + gio/gfileenumerator.c | 8 ++++---- + gio/gfileinputstream.c | 4 ++-- + gio/gfilemonitor.c | 4 ++-- + gio/ginitable.c | 8 ++++---- + gio/ginputstream.c | 16 ++++++++-------- + gio/giomodule.h | 2 +- + gio/giostream.c | 12 ++++++------ + gio/giotypes.h | 2 +- + gio/gloadableicon.c | 4 ++-- + gio/glocalfile.c | 2 +- + gio/gmount.c | 16 ++++++++-------- + gio/goutputstream.c | 22 +++++++++++----------- + gio/gproxyaddressenumerator.c | 2 +- + gio/gregistrysettingsbackend.c | 4 ++-- + gio/gseekable.c | 4 ++-- + gio/gsettings.c | 6 +++--- + gio/gsettingsbackend.c | 4 ++-- + gio/gsimplepermission.c | 2 +- + gio/gsocket.c | 2 +- + gio/gsocketaddress.c | 2 +- + gio/gsocks5proxy.c | 4 ++-- + gio/gunionvolumemonitor.c | 2 +- + gio/gvolume.c | 6 +++--- + gio/gwin32mount.c | 2 +- + gio/strinfo.c | 4 ++-- + glib/gbsearcharray.h | 2 +- + glib/gconvert.c | 18 +++++++++--------- + glib/gdataset.c | 2 +- + glib/gdatetime.c | 10 +++++----- + glib/gfileutils.c | 2 +- + glib/gmain.c | 2 +- + glib/gregex.c | 16 ++++++++-------- + glib/gregex.h | 2 +- + glib/gslice.c | 6 +++--- + glib/gstdio.h | 2 +- + glib/gstrfuncs.c | 2 +- + glib/gthread.c | 6 +++--- + glib/gthreadpool.c | 4 ++-- + glib/gthreadprivate.h | 2 +- + glib/gtimezone.c | 2 +- + glib/gutf8.c | 12 ++++++------ + glib/gutils.c | 2 +- + glib/gvariant-parser.c | 2 +- + glib/gvariant-serialiser.c | 4 ++-- + glib/gvariant.c | 2 +- + glib/gvarianttypeinfo.c | 2 +- + glib/gvarianttypeinfo.h | 6 +++--- + glib/gwin32.c | 2 +- + gmodule/gmodule.c | 2 +- + gmodule/gmodule.h | 2 +- + gobject/gboxed.c | 4 ++-- + gobject/gclosure.c | 4 ++-- + gobject/glib-genmarshal.c | 2 +- + gobject/gobject.c | 2 +- + gobject/gobject.h | 6 +++--- + gobject/gparam.c | 4 ++-- + gobject/gparam.h | 2 +- + gobject/gsignal.c | 4 ++-- + gobject/gtype.c | 4 ++-- + gobject/gvaluearray.c | 4 ++-- + tests/memchunks.c | 2 +- + tests/threadpool-test.c | 4 ++-- + 74 files changed, 167 insertions(+), 167 deletions(-) + +commit 5763c631473539746646697e6a775f6eacaa08e2 +Author: Colin Walters +AuthorDate: Wed Aug 17 13:09:27 2011 -0400 +Commit: Colin Walters +CommitDate: Mon Aug 29 10:24:37 2011 -0400 + + Add Linux timerfd_create() backend for g_date_time_source_new() + + This makes the source efficient on Linux. + + Tested on Fedora 15 x86_64 + updates, kernel-2.6.40-4.fc15.x86_64 + Also tested fallback code for unsupported flag TFD_TIMER_CANCEL_ON_SET + on kernel 2.6.38. + + https://bugzilla.gnome.org/show_bug.cgi?id=655129 + + configure.ac | 17 ++++++++++++ + glib/gdatetime.c | 79 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- + 2 files changed, 94 insertions(+), 2 deletions(-) + +commit 1feb752996b404965a2f58b29a569a273d4374fa +Author: Colin Walters +AuthorDate: Sat Aug 13 08:55:20 2011 -0400 +Commit: Colin Walters +CommitDate: Mon Aug 29 10:24:08 2011 -0400 + + gdatetime: Add g_date_time_source_new() + + Several different codebases in GNOME want to implement wall clocks. + While we could pretty easily share a private library, it's not a + substantial amount of code, and GLib already has a lot of the + necessary system-specific detection and handling infrastructure. + + Note this initial implementation just wakes up once a second in the + cancel_on_set case; we'll add the Linux-specific handling in a + subsequent commit. + + https://bugzilla.gnome.org/show_bug.cgi?id=655129 + + docs/reference/glib/glib-sections.txt | 3 + + glib/gdatetime.c | 156 + ++++++++++++++++++++++++++++++++++ + glib/gdatetime.h | 3 + + glib/glib.symbols | 1 + + glib/gmain.h | 1 + + glib/tests/Makefile.am | 4 + + glib/tests/glib-clock.c | 38 +++++++++ + glib/tests/timeout.c | 70 +++++++++++++++ + 8 files changed, 276 insertions(+) + +commit 1dfe332e4505d9de9d5819087a60a591b40dde28 +Author: Chao-Hsiung Liao +AuthorDate: Mon Aug 29 19:18:28 2011 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Mon Aug 29 19:18:28 2011 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 1410 + +++++++++++++++++++++++++++++++--------------------------- + po/zh_TW.po | 1412 + ++++++++++++++++++++++++++++++++--------------------------- + 2 files changed, 1551 insertions(+), 1271 deletions(-) + +commit 67613478ebeda4c8bcc4aff154ef38cc07387cbf +Author: Yuri Myasoedov +AuthorDate: Sun Aug 28 22:24:49 2011 +0400 +Commit: Yuri Myasoedov +CommitDate: Sun Aug 28 22:24:49 2011 +0400 + + Updated Russian translation + + po/ru.po | 160 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 89 insertions(+), 71 deletions(-) + +commit 965232049f66a53005166e6c17d509ed92ec4b72 +Author: Kjartan Maraas +AuthorDate: Sun Aug 28 19:07:09 2011 +0200 +Commit: Kjartan Maraas +CommitDate: Sun Aug 28 19:07:09 2011 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 141 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 75 insertions(+), 66 deletions(-) + +commit b2b2f443ef3effd993de6ba3ba0883c9f81ef06f +Author: Fran Dieguez +AuthorDate: Sun Aug 28 16:01:03 2011 +0200 +Commit: Fran Dieguez +CommitDate: Sun Aug 28 16:01:03 2011 +0200 + + Updated galician translations + + po/gl.po | 97 + +++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 56 insertions(+), 41 deletions(-) + +commit 41e4db80768e0155fdc5eaa71c59a7f4011e624a +Author: Kalev Lember +AuthorDate: Mon Aug 15 16:09:18 2011 +0300 +Commit: Kalev Lember +CommitDate: Sun Aug 28 16:45:53 2011 +0300 + + gio/tests/gtlsconsoleinteraction: Work around missing getpass() + on win32 + + Loosely based on a patch by Sam Thursfield . + https://bugzilla.gnome.org/show_bug.cgi?id=656341 + + gio/tests/gtlsconsoleinteraction.c | 31 +++++++++++++++++++++++++++++++ + 1 file changed, 31 insertions(+) + +commit a0029515caa2cce46fdd865d90043003bb6cd9b0 +Author: Jorge González +AuthorDate: Sun Aug 28 10:14:54 2011 +0200 +Commit: Jorge González +CommitDate: Sun Aug 28 10:14:54 2011 +0200 + + Updated Spanish translation + + po/es.po | 141 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 75 insertions(+), 66 deletions(-) + +commit 4d08b2094e6b657e4427e8ea5cc266010aa92987 +Author: Jorge González +AuthorDate: Sun Aug 28 10:08:05 2011 +0200 +Commit: Jorge González +CommitDate: Sun Aug 28 10:08:05 2011 +0200 + + Updated Spanish translation + + po/es.po | 174 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 97 insertions(+), 77 deletions(-) + +commit be555ed2d035759236db20d0f4b4ef9644350779 +Author: Matthias Clasen +AuthorDate: Sat Aug 27 23:30:43 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 27 23:30:43 2011 -0400 + + Fix symbol lists + + gio/gio.symbols | 1 + + 1 file changed, 1 insertion(+) + +commit 6e80885c8d4efe20b5fe507af81ddaa7f408e8c5 +Author: Matthias Clasen +AuthorDate: Sat Aug 27 13:18:45 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 27 13:18:45 2011 -0400 + + Spell out file descriptors in a message + + Translators don't necessarily know what 'fds' are. + Pointed out in bug 657454. + + gio/gdbusmessage.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1a2265889b174c069a58beb16dc57fc13a009263 +Author: Matthias Clasen +AuthorDate: Sat Aug 27 13:15:42 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 27 13:17:07 2011 -0400 + + GDBusMessage: Use ngettext() where appropriate + + Pointed out in bug 657452. + + gio/gdbusmessage.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +commit 06b23e2b5416e994d29560436587a04b762e21cd +Author: Dan Winship +AuthorDate: Sat Aug 27 12:08:32 2011 -0400 +Commit: Dan Winship +CommitDate: Sat Aug 27 12:28:03 2011 -0400 + + gsocketaddress: don't return ABSTRACT if the OS doesn't support it + + FreeBSD apparently has non-0-length (but nameless) ANONYMOUS sockets. + Fix the heuristics here. + + gio/gsocketaddress.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit aa10574dc37982457765783781f5e0e67015d4ae +Author: Dan Winship +AuthorDate: Sat Aug 27 11:36:05 2011 -0400 +Commit: Dan Winship +CommitDate: Sat Aug 27 12:28:03 2011 -0400 + + gunixcredentialsmessage: fix this on FreeBSD + + pointed out by Henry Hu + https://bugzilla.gnome.org/show_bug.cgi?id=628904 + + gio/gunixcredentialsmessage.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cef679d004b9fe89ae08519861e235818dd57b46 +Author: Dan Winship +AuthorDate: Sat Aug 27 09:59:02 2011 -0400 +Commit: Dan Winship +CommitDate: Sat Aug 27 12:28:03 2011 -0400 + + GSocket: fix GIOCondition on timed-out socket operation + + The docs for g_socket_set_timeout() claimed that if an async operation + timed out, the GIOCondition passed to the source callback would be + G_IO_IN or G_IO_OUT (thus prompting the caller to call + g_socket_receive/send and get a G_IO_ERROR_TIMED_OUT), but in fact it + ended up being 0, and gio/tests/socket.c was erroneously testing for + that instead of the correct value. Fix this. + + gio/gsocket.c | 3 ++- + gio/tests/socket.c | 4 ++-- + 2 files changed, 4 insertions(+), 3 deletions(-) + +commit 60f23ecbbc7d65eb5188875dc2c50a5f793a82a4 +Author: Og B. Maciel +AuthorDate: Fri Aug 26 11:07:57 2011 -0400 +Commit: Og B. Maciel +CommitDate: Fri Aug 26 11:07:57 2011 -0400 + + Updated Brazilian Portuguese translation. + + po/pt_BR.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c04496d98d05edf3fa77db8d0a2c61634471f46b +Author: Og B. Maciel +AuthorDate: Fri Aug 26 11:07:32 2011 -0400 +Commit: Og B. Maciel +CommitDate: Fri Aug 26 11:07:32 2011 -0400 + + Fixed typo: s/ether/enter. + + gio/gtlspassword.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 54b34bd4e41f5cfaeee6eff1aeb925c80ced699b +Author: Og B. Maciel +AuthorDate: Fri Aug 26 11:06:13 2011 -0400 +Commit: Og B. Maciel +CommitDate: Fri Aug 26 11:06:13 2011 -0400 + + Updated Brazilian Portuguese translation. + + po/pt_BR.po | 27 ++++++++++++++------------- + 1 file changed, 14 insertions(+), 13 deletions(-) + +commit d789e78dff26d787b5a55c4b7f5858a7219d5a96 +Author: Stef Walter +AuthorDate: Fri Aug 26 15:27:19 2011 +0200 +Commit: Stef Walter +CommitDate: Fri Aug 26 15:27:19 2011 +0200 + + giomodule: When loading GIO_EXTRA_MODULES skip duplicates + + * Load modules from paths listed in GIO_EXTRA_MODULES environment + variable first. + * Ignore duplicate modules based on module basename. + * Add the concept of GIOModuleScope which allows other callers to + skip duplicate loaded modules, or block specific modules based on + basename. + * Document behavior. + + https://bugzilla.gnome.org/show_bug.cgi?id=656914 + + docs/reference/gio/gio-sections.txt | 5 + + gio/gio.symbols | 5 + + gio/gioenums.h | 16 +++ + gio/giomodule.c | 202 + +++++++++++++++++++++++++++++++++--- + gio/giomodule.h | 12 +++ + 5 files changed, 224 insertions(+), 16 deletions(-) + +commit 78ec02647e1b85596732e99beb31ac4d2285af34 +Author: Og B. Maciel +AuthorDate: Fri Aug 26 09:04:41 2011 -0400 +Commit: Og B. Maciel +CommitDate: Fri Aug 26 09:04:52 2011 -0400 + + Updated Brazilian Portuguese translation. + + po/pt_BR.po | 1805 + ++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 1093 insertions(+), 712 deletions(-) + +commit 41432cb375eb04729c8fe506c40ce79fc803028b +Author: Stef Walter +AuthorDate: Sat Aug 13 14:03:53 2011 +0200 +Commit: Stef Walter +CommitDate: Fri Aug 26 07:34:31 2011 +0200 + + Make GTlsInteraction virtual methods cancellable + + * Add cancellable argument to g_tls_interaction_ask_password + and g_tls_interaction_ask_password_async. + * This is API breakage, but this API has not yet been released + in a stable release (and very unlikely used yet). + * Since we're breaking unreleased API, expand amount of padding + on GTlsInteractionClass because we're going to need it. + + https://bugzilla.gnome.org/show_bug.cgi?id=656443 + + gio/gioenums.h | 12 ++++---- + gio/gtlsinteraction.c | 57 + ++++++++++++++++++++++++++++++++------ + gio/gtlsinteraction.h | 18 ++++++++---- + gio/tests/gtlsconsoleinteraction.c | 25 +++++++++++++---- + 4 files changed, 87 insertions(+), 25 deletions(-) + +commit 7d679717f0007dac2f86f05edc763f373135aeee +Author: Dieter Verfaillie +AuthorDate: Tue Aug 23 07:37:05 2011 +0200 +Commit: Colin Walters +CommitDate: Thu Aug 25 17:23:00 2011 -0400 + + Add gdbus-codegen to glib-zip.in + + https://bugzilla.gnome.org/show_bug.cgi?id=650763 + + glib-zip.in | 3 +++ + 1 file changed, 3 insertions(+) + +commit a2614efd145eb4e20b0d7643c6f53c50a4d09296 +Author: Dieter Verfaillie +AuthorDate: Tue Aug 23 06:36:47 2011 +0100 +Commit: Colin Walters +CommitDate: Thu Aug 25 17:23:00 2011 -0400 + + Make gdbus-codegen 'relocatable' at runtime on Windows. + + https://bugzilla.gnome.org/show_bug.cgi?id=650763 + + gio/gdbus-2.0/codegen/gdbus-codegen.in | 3 +++ + 1 file changed, 3 insertions(+) + +commit acb5b852c1175675d0edd2f05f76aefdaa29e1c7 +Author: Dieter Verfaillie +AuthorDate: Thu Aug 25 10:45:40 2011 +0100 +Commit: Colin Walters +CommitDate: Thu Aug 25 17:19:27 2011 -0400 + + gdbus-codegen: Revert to using /usr/bin/env for Python + + After a lot of discussion, we decided /usr/bin/env is the most + flexible for now. + + https://bugzilla.gnome.org/show_bug.cgi?id=650763 + + gio/gdbus-2.0/codegen/Makefile.am | 2 +- + gio/gdbus-2.0/codegen/gdbus-codegen.in | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit cd0cd950785515d826abbe55d6b5948c411e1490 +Author: Dieter Verfaillie +AuthorDate: Tue Aug 23 16:38:36 2011 +0100 +Commit: Colin Walters +CommitDate: Thu Aug 25 16:55:49 2011 -0400 + + Introduce the UNINSTALLED_GLIB_SRCDIR environment variable + + This makes it possible to avoid setting PYTHONPATH in + Makefile.am files. + + https://bugzilla.gnome.org/show_bug.cgi?id=650763 + + gio/gdbus-2.0/codegen/gdbus-codegen.in | 13 +++++++++---- + gio/tests/Makefile.am | 4 ++-- + gio/tests/gdbus-object-manager-example/Makefile.am | 4 ++-- + 3 files changed, 13 insertions(+), 8 deletions(-) + +commit 5391aae0093c8046208ed1c7e3ae32ce9186057f +Author: Dieter Verfaillie +AuthorDate: Tue Aug 23 17:37:35 2011 +0200 +Commit: Colin Walters +CommitDate: Thu Aug 25 16:55:49 2011 -0400 + + Introduce the UNINSTALLED_GLIB_BUILDDIR environment variable + + This makes it possible to also use relative imports for + gdbus-codegen's config module. + + https://bugzilla.gnome.org/show_bug.cgi?id=650763 + + gio/gdbus-2.0/codegen/__init__.py | 29 + ++++++++++++++++++++ + gio/gdbus-2.0/codegen/codegen.py | 2 +- + gio/gdbus-2.0/codegen/codegen_docbook.py | 2 +- + gio/gdbus-2.0/codegen/codegen_main.py | 2 +- + gio/tests/Makefile.am | 32 + ++++++++++++---------- + gio/tests/gdbus-object-manager-example/Makefile.am | 16 ++++++----- + 6 files changed, 58 insertions(+), 25 deletions(-) + +commit 5dc3c2efc89ef57fe159736ab52aae8ff25a745c +Author: Dieter Verfaillie +AuthorDate: Tue Aug 23 07:35:01 2011 +0200 +Commit: Colin Walters +CommitDate: Thu Aug 25 16:55:47 2011 -0400 + + Use relative imports for the gdbus/codegen package + + But not yet for the config module (but is taken care + of in a followup patch). + + https://bugzilla.gnome.org/show_bug.cgi?id=650763 + + gio/gdbus-2.0/codegen/codegen.py | 4 ++-- + gio/gdbus-2.0/codegen/codegen_docbook.py | 6 +++--- + gio/gdbus-2.0/codegen/codegen_main.py | 10 +++++----- + gio/gdbus-2.0/codegen/dbustypes.py | 2 +- + gio/gdbus-2.0/codegen/parser.py | 4 ++-- + 5 files changed, 13 insertions(+), 13 deletions(-) + +commit 0eaec4e59a9a9662f82d9ceb0c00c15a396adc3f +Author: Dieter Verfaillie +AuthorDate: Tue Aug 23 07:32:18 2011 +0200 +Commit: Colin Walters +CommitDate: Thu Aug 25 16:55:46 2011 -0400 + + Avoid using - (hyphen) in gdbus-codegen directory name + + It's an invalid character in Python module names and prevents us from + being able to import it. + + https://bugzilla.gnome.org/show_bug.cgi?id=650763 + + configure.ac | 4 +- + gio/Makefile.am | 2 +- + gio/gdbus-2.0/codegen/.gitignore | 2 + + gio/gdbus-2.0/codegen/Makefile.am | 30 + + gio/gdbus-2.0/codegen/__init__.py | 0 + gio/gdbus-2.0/codegen/codegen.py | 3351 + ++++++++++++++++++++++++++++++ + gio/gdbus-2.0/codegen/codegen_docbook.py | 325 +++ + gio/gdbus-2.0/codegen/codegen_main.py | 200 ++ + gio/gdbus-2.0/codegen/config.py.in | 27 + + gio/gdbus-2.0/codegen/dbustypes.py | 414 ++++ + gio/gdbus-2.0/codegen/gdbus-codegen.in | 33 + + gio/gdbus-2.0/codegen/parser.py | 290 +++ + gio/gdbus-2.0/codegen/utils.py | 104 + + gio/gdbus-codegen/.gitignore | 2 - + gio/gdbus-codegen/Makefile.am | 30 - + gio/gdbus-codegen/__init__.py | 0 + gio/gdbus-codegen/codegen.py | 3351 + ------------------------------ + gio/gdbus-codegen/codegen_docbook.py | 325 --- + gio/gdbus-codegen/codegen_main.py | 200 -- + gio/gdbus-codegen/config.py.in | 27 - + gio/gdbus-codegen/dbustypes.py | 414 ---- + gio/gdbus-codegen/gdbus-codegen.in | 33 - + gio/gdbus-codegen/parser.py | 290 --- + gio/gdbus-codegen/utils.py | 104 - + 24 files changed, 4779 insertions(+), 4779 deletions(-) + +commit 33831bda2465c8f1e5d4a3fd2bf4e3618a812282 +Author: Ionut Biru +AuthorDate: Wed Aug 24 19:09:53 2011 +0000 +Commit: Colin Walters +CommitDate: Thu Aug 25 13:35:35 2011 -0400 + + Use detected PYTHON shebang in gdbus-codegen + + Change the hardcoded /usr/bin/python shebag from gdbus-codegen.in into + @PYTHON@. Is used in Makefile.am to use detected python binary. + + $(AM_V_GEN) sed -e 's,@libdir\@,$(libdir),' -e + 's,@PYTHON\@,$(PYTHON),' + $< > $@.tmp && mv $@.tmp $@ + + Signed-off-by: Ionut Biru + + https://bugzilla.gnome.org/show_bug.cgi?id=657274 + + gio/gdbus-codegen/gdbus-codegen.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fe8ca95882a88877ff8a7eac817a4d33149767c1 +Author: Yuri Myasoedov +AuthorDate: Thu Aug 25 18:59:56 2011 +0400 +Commit: Yuri Myasoedov +CommitDate: Thu Aug 25 18:59:56 2011 +0400 + + Updated Russian translation + + po/ru.po | 1302 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 632 insertions(+), 670 deletions(-) + +commit 2e05470e3a8928e960dd093a89bb325a21e64df9 +Author: Javier Jardón +AuthorDate: Thu Aug 25 12:26:27 2011 +0100 +Commit: Javier Jardón +CommitDate: Thu Aug 25 12:27:12 2011 +0100 + + glib.doap: Fix download location + + glib.doap | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 471593ebf0e133f97c08b27f357bc16ece5f81ec +Author: Matthias Clasen +AuthorDate: Wed Aug 24 21:23:36 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Aug 24 21:25:31 2011 -0400 + + GCancellable: Small annotation additions + + https://bugzilla.gnome.org/show_bug.cgi?id=657243 + + gio/gcancellable.c | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +commit 3cb189c1ce5cc99c3c872becf38c4be95a0ed6e9 +Author: Fran Dieguez +AuthorDate: Wed Aug 24 20:59:50 2011 +0200 +Commit: Fran Dieguez +CommitDate: Wed Aug 24 20:59:50 2011 +0200 + + Updated Galician translations + + po/gl.po | 210 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 113 insertions(+), 97 deletions(-) + +commit 28e6ad2dbcc9a7fb1ae3850ac7d1a10b17215e78 +Author: Daniel Mustieles +AuthorDate: Wed Aug 24 19:57:14 2011 +0200 +Commit: Daniel Mustieles +CommitDate: Wed Aug 24 19:57:14 2011 +0200 + + Updated Spanish translation + + po/es.po | 214 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 115 insertions(+), 99 deletions(-) + +commit 2cd3c200687751c9cc26774f650b7651bffcc598 +Author: Dan Winship +AuthorDate: Mon Aug 22 11:37:48 2011 -0400 +Commit: Jasper St. Pierre +CommitDate: Wed Aug 24 13:23:46 2011 -0400 + + gfileutils: fix docs/annotations for temp file methods + + https://bugzilla.gnome.org/show_bug.cgi?id=657084 + + glib/gfileutils.c | 40 ++++++++++++++++++++++------------------ + 1 file changed, 22 insertions(+), 18 deletions(-) + +commit 24e03ed409570cd026c459436db1b1a3e4bf3789 +Author: Emmanuele Bassi +AuthorDate: Wed Aug 24 18:20:32 2011 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Aug 24 18:22:03 2011 +0100 + + Add DOAP file and remove MAINTAINERS + + MAINTAINERS | 12 ------------ + glib.doap | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 46 insertions(+), 12 deletions(-) + +commit b11eb65c67d2bc29fbcb52f3d14bb0e121f22201 +Author: Kjartan Maraas +AuthorDate: Wed Aug 24 15:38:46 2011 +0200 +Commit: Kjartan Maraas +CommitDate: Wed Aug 24 15:38:46 2011 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 166 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 85 insertions(+), 81 deletions(-) + +commit 4d544b51a47c6d0172229c60c3e2ac59d0c12a66 +Author: Daniel Nylander +AuthorDate: Wed Aug 24 09:19:20 2011 +0200 +Commit: Daniel Nylander +CommitDate: Wed Aug 24 09:19:20 2011 +0200 + + Updated Swedish translation + + po/sv.po | 274 + +++++++++++++++++++++++++++------------------------------------ + 1 file changed, 117 insertions(+), 157 deletions(-) + +commit ff0cf7b681a2aac3b0f4b5608c8500db969ad4b7 +Author: Philip Withnall +AuthorDate: Tue Aug 23 23:47:54 2011 +0100 +Commit: Philip Withnall +CommitDate: Wed Aug 24 07:54:29 2011 +0100 + + Bug 657206 — GInputStream leaked in g_file_icon_load_async() + + Add a missing unref to g_file_icon_load_async(). + + Closes: bgo#657206 + + gio/gfileicon.c | 1 + + 1 file changed, 1 insertion(+) + +commit 30d9636df24000812179f6910cf5c4c3de23cdcd +Author: Eduardo Lima Mitev +AuthorDate: Thu Jul 29 13:59:42 2010 +0200 +Commit: Dan Winship +CommitDate: Tue Aug 23 19:56:36 2011 -0400 + + GIO: Add more missing GI annotations + + - g_io_extension_point_register() + - g_io_extension_point_lookup() + - g_io_extension_point_implement() + + https://bugzilla.gnome.org/show_bug.cgi?id=625383 + + gio/giomodule.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 47987eaf1411bd2fb197524d204b43af9a4a41ac +Author: Мирослав Николић + +AuthorDate: Tue Aug 23 19:02:55 2011 +0200 +Commit: Miloš Popović +CommitDate: Tue Aug 23 19:02:55 2011 +0200 + + Updated Serbian translation + + po/sr.po | 1408 + +++++++++++++++++++++++++++++++------------------------- + po/sr@latin.po | 1408 + +++++++++++++++++++++++++++++++------------------------- + 2 files changed, 1554 insertions(+), 1262 deletions(-) + +commit e604b2d0aff562c364b22cb7074a9261774c491f +Author: David Zeuthen +AuthorDate: Tue Aug 23 12:57:14 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Aug 23 12:57:14 2011 -0400 + + gdbus-codegen: update comment in code to reflect reality + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 4 ---- + 1 file changed, 4 deletions(-) + +commit 05448a6befddb83eefa1214ca699efed248c32e5 +Author: David Zeuthen +AuthorDate: Tue Aug 23 12:46:32 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Aug 23 12:54:27 2011 -0400 + + gdbus-codegen: Rework C property getters + + Rework property getters to use a vfunc so we can take the fast path + and avoid allocating memory for both the skeleton and the proxy + cases. This requires some special case because of how GVariant expects + you to free memory in some cases, see #657100. Add test cases for + this. + + Document the _get_ functions as not being thread-safe and also + generate _dup_ C getters (which are thread-safe). + + Mark all the generated _get_, _dup_ and _set_ as (skip) as non-C + languages should just use GObject properties and not the (socalled) + "C binding". + + Signed-off-by: David Zeuthen + + .../gdbus-object-manager-example-sections.txt | 2 + + gio/gdbus-codegen/codegen.py | 267 + ++++++++++++++++----- + gio/gdbus-codegen/dbustypes.py | 42 ++++ + gio/tests/gdbus-test-codegen.c | 23 ++ + 4 files changed, 274 insertions(+), 60 deletions(-) + +commit a9e2305dce176fdeedc5f1b049a2f740005df539 +Author: Dan Winship +AuthorDate: Tue Aug 23 08:28:15 2011 -0400 +Commit: Dan Winship +CommitDate: Tue Aug 23 08:28:15 2011 -0400 + + po: add missing gtls files to POTFILES.in + + Pointed out by Daniel Mustieles + https://bugzilla.gnome.org/show_bug.cgi?id=657138 + + po/POTFILES.in | 2 ++ + 1 file changed, 2 insertions(+) + +commit d617091d8005279cb055e3de125f41898b427e24 +Author: Matthias Clasen +AuthorDate: Mon Aug 22 22:01:39 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 22 22:02:03 2011 -0400 + + gdatetime: Don't include langinfo.h unconditionally + + It doesn't exist on Windows. + + https://bugzilla.gnome.org/show_bug.cgi?id=657083 + + glib/gdatetime.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit d51e0615f9a6c1aa1898c46f2cf3135ca5ccd463 +Author: Chun-wei Fan +AuthorDate: Tue Aug 23 00:22:06 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Aug 23 00:22:06 2011 +0800 + + Update VS property sheets + + Stop the "installation" of gio/gtimezonemonitor.h as it has been + removed + from GIO (commit 5b68b49b2072) + + build/win32/vs10/glib.props | 2 -- + build/win32/vs9/glib.vsprops | 1 - + 2 files changed, 3 deletions(-) + +commit 7e5874dd174e3761e1fec4d15ca7c2a66013f4b1 +Author: Chun-wei Fan +AuthorDate: Tue Aug 23 00:08:24 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Aug 23 00:09:05 2011 +0800 + + Update GLib Visual C++ Projects + + Define USE_SYSTEM_PCRE for all configurations which uses the PCRE that + was already built and "installed" beforehand (i.e. the *_ExtPCRE + configurations) so that the compilation will not pick up the + GLib-bundled pcre.h when one wants to use the PCRE "installation" on + his/her system. + + build/win32/vs10/glib.vcxprojin | 8 ++++---- + build/win32/vs9/glib.vcprojin | 8 ++++---- + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit 09a322c8e4822327130b91e16fa827c410996bce +Author: Chun-wei Fan +AuthorDate: Tue Aug 23 00:03:51 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Aug 23 00:09:03 2011 +0800 + + Update config.h.win32.in + + Make the pre-configured config.h(.win32.in) for Windows more like the + config.h that would be produced during ./configure on Windows systems. + + config.h.win32.in | 25 +++++++++++++++++-------- + 1 file changed, 17 insertions(+), 8 deletions(-) + +commit 5b68b49b2072c371c72ee96175e3d6a727eb5e8b +Author: Colin Walters +AuthorDate: Fri Aug 19 03:27:16 2011 -0400 +Commit: Colin Walters +CommitDate: Mon Aug 22 11:12:37 2011 -0400 + + GTimeZoneMonitor: Revert addition of this class + + The main rationale for adding it was to avoid having gnome-shell + mmap'ing /etc/localtime once a second. However, we can just as easily + run inotify there, and given no one else was clamoring for a way to + detect when the time zone changes, I don't see a need for public API + here - at least not yet. + + In the bigger picture, I just don't believe that the vast majority of + applications are going to go out of their way to instantiate and keep + around a random GTimeZoneMonitor class. And if they do, it's has the + side effect that for other bits of code in the process, local + GDateTime + instances may start varying again! + + So, if code can't rely on local GDateTime instances being in a + consistent state anyways, let's just do that always. The + documentation now says that this is the case. Applications have + always been able to work in a consistent local time zone by + instantiating a zone and then using it for GDateTime constructors. + + We fix the "gnome-shell stats /etc/localtime once a second" issue by + using timerfd (in glib) and inotify (in gnome-shell). + + https://bugzilla.gnome.org/show_bug.cgi?id=655129 + + docs/reference/gio/gio-sections.txt | 13 --- + docs/reference/gio/gio.types | 1 - + docs/reference/glib/glib-sections.txt | 2 - + gio/Makefile.am | 2 - + gio/gio.h | 1 - + gio/gio.symbols | 2 - + gio/gtimezonemonitor.c | 156 + ---------------------------------- + gio/gtimezonemonitor.h | 47 ---------- + glib/glib.symbols | 1 - + glib/gtimezone.c | 66 ++------------ + glib/gtimezone.h | 2 - + glib/tests/gdatetime.c | 17 ---- + 12 files changed, 5 insertions(+), 305 deletions(-) + +commit 5fbf3c93b236970e1c68be05c08322099a51e6bf +Author: Chun-wei Fan +AuthorDate: Mon Aug 22 22:35:31 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Aug 22 22:35:31 2011 +0800 + + Update VS property sheets + + -Added glib/ghmac.h to the list of files to copy during the "install" + stage + -Cleaned up a bit (glib-2.0->glib-$(ApiVersion), where $(ApiVersion) + is + 2.0) + + build/win32/vs10/glib.props | 8 +- + build/win32/vs9/glib.vsprops | 443 + ++++++++++++++++++++++--------------------- + 2 files changed, 229 insertions(+), 222 deletions(-) + +commit f0db0d22cc2e22a9033947f5139b359962a3f81e +Author: Colin Walters +AuthorDate: Sat Aug 13 06:03:18 2011 -0400 +Commit: Colin Walters +CommitDate: Mon Aug 22 07:15:16 2011 -0400 + + gmain: Clarify that timeouts are in terms of monotonic time + + Also note that monotonic time does not include time spent while + suspended (at least on Linux). + + https://bugzilla.gnome.org/show_bug.cgi?id=655129 + + glib/gmain.c | 29 +++++++++++++++++++++++++---- + 1 file changed, 25 insertions(+), 4 deletions(-) + +commit 527dc867225ae815356d2d1a72213abe981bd067 +Author: Matthias Clasen +AuthorDate: Sun Aug 21 23:48:07 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 21 23:48:07 2011 -0400 + + GDateTime: use nl_langinfo() when available + + This makes g_date_time_format() react to LC_TIME, which is + what people expect. + + Translators: this change means that the GDateTime strings + are only used when the C library does not already provide + suitable translated strings for these (month names, etc). + + configure.ac | 17 +++++++++++++++++ + glib/gdatetime.c | 38 ++++++++++++++++++++++++++++++++++---- + 2 files changed, 51 insertions(+), 4 deletions(-) + +commit 040dcc8a7882a6e99fe80a712c3c9804b23b16f4 +Author: Matthias Clasen +AuthorDate: Sun Aug 21 23:36:31 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 21 23:36:31 2011 -0400 + + GDateTime: cosmetics + + Shuffle things around a bit, to move locale-dependent + things together. + + glib/gdatetime.c | 44 ++++++++++++++++++++++---------------------- + 1 file changed, 22 insertions(+), 22 deletions(-) + +commit 6fae33b10aa46f1b1bde7f8b0c871f2f13add6e0 +Author: Matthias Clasen +AuthorDate: Sun Aug 21 23:32:28 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 21 23:32:28 2011 -0400 + + GDateTime: cosmetics + + Don't hide the recursion in g_date_time_format() behind + a macro, make it explicit. + + glib/gdatetime.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 76856241d0e845b3fc05812348af004a75bd1c50 +Author: Matthias Clasen +AuthorDate: Sun Aug 21 21:33:30 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 21 21:33:30 2011 -0400 + + Add a quick utility to test datetime formatting + + tests/Makefile.am | 4 +++- + tests/datetime.c | 43 +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 46 insertions(+), 1 deletion(-) + +commit 2282036b5df46741e33441033dac466b3614b4f9 +Author: Matthias Clasen +AuthorDate: Sun Aug 21 20:45:57 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 21 20:45:57 2011 -0400 + + GDateTime: don't use separate strings for upper/lowercase am/pm + + We can just as well change the case ourselves. + + glib/gdatetime.c | 23 +++++++++++++---------- + 1 file changed, 13 insertions(+), 10 deletions(-) + +commit 414c8ce532c19fe65deb8dfb80222d0164be5cbe +Author: Matthias Clasen +AuthorDate: Sun Aug 21 19:51:45 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 21 19:51:45 2011 -0400 + + g_date_time_format: support %T + + strftime supports it, and there is no reason not to do the same. + + glib/gdatetime.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit fd1a12ca4dd164be612fbcd7ab8874b91193cdac +Author: Pavel Holejsovsky +AuthorDate: Sun Aug 21 17:15:52 2011 +0200 +Commit: Pavel Holejsovsky +CommitDate: Sun Aug 21 17:17:07 2011 +0200 + + [gi] Add signal annotations + + gobject/gsignal.c | 41 +++++++++++++++++++++-------------------- + gobject/gsignal.h | 4 ++-- + 2 files changed, 23 insertions(+), 22 deletions(-) + +commit e7a9b3196becd11482abf854b250ef06d6904fe1 +Author: Pavel Holejsovsky +AuthorDate: Sun Aug 21 17:12:18 2011 +0200 +Commit: Pavel Holejsovsky +CommitDate: Sun Aug 21 17:17:05 2011 +0200 + + [gi] Add annotations to g_quark functions + + glib/gdataset.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit af210cd0eed755eb461da0ccce38fe99545ffd08 +Author: Pavel Holejsovsky +AuthorDate: Fri Aug 19 10:34:02 2011 +0200 +Commit: Pavel Holejsovsky +CommitDate: Fri Aug 19 11:44:44 2011 +0200 + + Add missing GClosure annotations + + gobject/gclosure.c | 7 ++++--- + gobject/gclosure.h | 19 +++++++++++-------- + 2 files changed, 15 insertions(+), 11 deletions(-) + +commit de6566b07d54dcfefff4d1e18239e7e865fd4a51 +Author: Pavel Holejsovsky +AuthorDate: Fri Aug 19 10:34:37 2011 +0200 +Commit: Pavel Holejsovsky +CommitDate: Fri Aug 19 11:44:41 2011 +0200 + + Add missing (allow-none) annotations to g_value_set_string functions + + gobject/gvaluetypes.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 26548e05bbb9bc2278fabeee07f6601f39d1a4dc +Merge: f07b854 54579bf +Author: Stef Walter +AuthorDate: Fri Aug 19 11:21:11 2011 +0200 +Commit: Stef Walter +CommitDate: Fri Aug 19 11:21:11 2011 +0200 + + Merge branch 'concurrent-cancellable' + +commit 54579bf88f2af4056fd19e539cc336bd17baea18 +Author: Stef Walter +AuthorDate: Fri Aug 12 11:49:31 2011 +0200 +Commit: Stef Walter +CommitDate: Fri Aug 19 11:13:37 2011 +0200 + + gio: GCancellable can be used concurrently + + * Update documentation to note that GCancellable can be used + concurrently by multiple operations. + * Add documentation to g_cancellable_reset that behavior is + undefined if called from within cancelled handler. + * Add test for multiple concurrent operations using the same + cancellable. + + https://bugzilla.gnome.org/show_bug.cgi?id=656387 + + gio/gcancellable.c | 7 +- + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 3 + + gio/tests/cancellable.c | 224 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 233 insertions(+), 2 deletions(-) + +commit f07b854a2b28dde75b3b0eb4746e674b2a220a42 +Author: A S Alam +AuthorDate: Fri Aug 19 08:26:25 2011 +0530 +Commit: A S Alam +CommitDate: Fri Aug 19 08:26:25 2011 +0530 + + update translation for Punjabi + + po/pa.po | 1369 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 772 insertions(+), 597 deletions(-) + +commit 931196a4d87a55aa4835cfaaf01db9888a52fca3 +Author: Abduxukur Abdurixit +AuthorDate: Fri Aug 19 19:42:26 2011 +0200 +Commit: Abduxukur Abdurixit +CommitDate: Fri Aug 19 19:42:26 2011 +0200 + + Added UG translation + + po/ug.po | 264 + +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 156 insertions(+), 108 deletions(-) + +commit 654b349c30432ac03d48e6e9a8aae7fb543a78bb +Author: Christian Dywan +AuthorDate: Thu Aug 18 01:38:34 2011 +0200 +Commit: Christian Dywan +CommitDate: Thu Aug 18 01:38:34 2011 +0200 + + Use actual uint64 values to compare uint64 variants + + Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=656772 + + glib/gvariant.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d4c5e3b1566616bf65b2d92b625c712dab961052 +Author: Pavel Holejsovsky +AuthorDate: Wed Aug 17 07:37:36 2011 +0200 +Commit: Pavel Holejsovsky +CommitDate: Wed Aug 17 12:55:12 2011 +0200 + + Add (allow-none) annotation for GValue setters. + + Assorted g_value_set_xxx() and g_value_take_xxx() functions actually + allow NULL in source parameter. + + gobject/gboxed.c | 8 ++++---- + gobject/gobject.c | 6 +++--- + gobject/gparam.c | 6 +++--- + gobject/gvalue.c | 2 +- + gobject/gvaluetypes.c | 4 ++-- + 5 files changed, 13 insertions(+), 13 deletions(-) + +commit e3219c8425e9417ee888dd2aa8b5c826da62edc1 +Author: Behdad Esfahbod +AuthorDate: Wed Aug 17 12:13:17 2011 +0200 +Commit: Behdad Esfahbod +CommitDate: Wed Aug 17 12:14:07 2011 +0200 + + Fixup max decomposition len guarantee + + Unicode Technical Committee agreed to limit decomposition length to + 18 in both cases. Reflect that. + + glib/gunidecomp.c | 9 ++++++--- + glib/guniprop.c | 2 +- + 2 files changed, 7 insertions(+), 4 deletions(-) + +commit b5f1ea4bb1070f1fbf6fc5170136254192c9bff0 +Author: Brian Cameron +AuthorDate: Wed Aug 17 03:01:14 2011 -0500 +Commit: Brian Cameron +CommitDate: Wed Aug 17 03:01:14 2011 -0500 + + void functions should not return. Fixes bug #656675. + + gio/gdbusconnection.c | 4 ++-- + gio/gdbusmethodinvocation.c | 4 ++-- + gio/gdbusproxy.c | 4 ++-- + gio/gtlsdatabase.c | 2 +- + 4 files changed, 7 insertions(+), 7 deletions(-) + +commit b18ca488aef461295c0a728d0111e401cc482b57 +Author: Ryan Lortie +AuthorDate: Mon Aug 15 21:01:52 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 15 21:01:52 2011 -0400 + + post-release bump + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e17ce3594e9d6d9ed6c9d2fd48a82ddcbb1ffcbc +Author: Ryan Lortie +AuthorDate: Mon Aug 15 21:01:28 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 15 21:01:28 2011 -0400 + + glib 2.29.16 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0a4663343f81902f16cf43cd4a5bfc3ccf510200 +Author: Ryan Lortie +AuthorDate: Mon Aug 15 21:01:23 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 15 21:01:23 2011 -0400 + + distcheck fixes + + gio/tests/Makefile.am | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 4cd5762cccae21fe8c24b0679022974043c19114 +Author: Matthias Clasen +AuthorDate: Mon Aug 15 18:51:42 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 15 18:55:58 2011 -0400 + + More NEWS updates + + NEWS | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 472bd4d8a14977ed35c5948b6ed7cafde9a85b05 +Author: Ryan Lortie +AuthorDate: Mon Aug 15 13:33:27 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 15 13:35:35 2011 -0400 + + Updated Esperanto translation + + Esperanto weekdays and month days are written in lowercase (as in + French). + + po/eo.po | 76 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 38 insertions(+), 38 deletions(-) + +commit 67cf3ea3682a0bd5b94e7b546675ec685a686a5a +Author: Simon McVittie +AuthorDate: Mon Aug 15 16:00:51 2011 +0100 +Commit: David Zeuthen +CommitDate: Mon Aug 15 12:50:04 2011 -0400 + + Add a stress-test for GDBusProxy in threads with no default main + context + + Destroying a GDBusProxy in a thread used to race with NameOwnerChanged + being delivered to the main context's thread (GNOME #651133). + + Also, g_dbus_proxy_call_sync in a thread would race with + NameOwnerChanged + being delivered to the main context's thread and rewriting the + name_owner + (GNOME #656039). + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=656039 + Bug-NB: NB#259760 + Signed-off-by: Simon McVittie + Signed-off-by: David Zeuthen + + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 5 + + gio/tests/gdbus-proxy-threads.c | 253 + ++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 259 insertions(+) + +commit 85214d1e7f1c1e065b2e05dae9d6cae29887e3d3 +Author: Simon McVittie +AuthorDate: Mon Aug 15 15:59:45 2011 +0100 +Commit: David Zeuthen +CommitDate: Mon Aug 15 12:50:03 2011 -0400 + + GDBusProxy: hold properties_lock while using any mutable property + + This changes the meaning of "properties_lock" from "lock for D-Bus + properties" to "lock for GObject properties". + + The most common problem, and the only one I've reproduced in a + regression + test, is name_owner, which can be updated by the thread that owns + the GDBusProxy's main context (i.e. the thread-default main context of + the thread that constructed it) at the same time that a blocking call + is made. When a GDBusProxy is constructed in a thread-pool thread for + short-term use, the main context will typically be the global default + main context (which is actively running in the main thread!), making + this extremely problematic. + + The interface info is perhaps a theoretical concern - one thread could + conceivably set it at the same time that another thread uses it, + but only + in relatively pathological situations. The current API for this + does have + the problem that it returns a borrowed ref, but interface info is + hopefully permanent anyway. + + The default timeout is probably only a theoretical concern - it's + just an + int, so writes are indivisible, and there's no worry about whether + something has been freed - but to be safe, let's hold the lock + for that + too. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=656039 + Bug-NB: NB#259760 + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 132 + +++++++++++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 109 insertions(+), 23 deletions(-) + +commit 5909cb10315ca0f331ccb97225f008c11ca0d9d7 +Author: Simon McVittie +AuthorDate: Mon Aug 8 18:29:20 2011 +0100 +Commit: David Zeuthen +CommitDate: Mon Aug 15 12:50:01 2011 -0400 + + GDBusProxy: factor out async_init_data_set_name_owner + + This removes the need for async_init_get_name_owner_cb to cope + with being + called without a real GAsyncResult, and will simplify the addition of + correct thread-locking. + + In async_init_data_set_name_owner, use the name_owner parameter + instead + of the corresponding member of GDBusProxyPrivate, partly to reduce + pointer-chasing but mainly to avoid needing to hold the lock. + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 90 + +++++++++++++++++++++++++++++--------------------------- + 1 file changed, 47 insertions(+), 43 deletions(-) + +commit 03ae974f7cc992450907401f45e7de645caff141 +Author: Simon McVittie +AuthorDate: Mon Aug 8 18:22:42 2011 +0100 +Commit: David Zeuthen +CommitDate: Mon Aug 15 12:50:00 2011 -0400 + + g_dbus_proxy_get_property: use accessors for all mutable state + + These ought to have thread-locking, and having it in the accessor + seems + better than duplicating it here. + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 20387d262ff104f9de3defc264c5c2010d272857 +Author: Simon McVittie +AuthorDate: Mon Aug 15 15:57:59 2011 +0100 +Commit: David Zeuthen +CommitDate: Mon Aug 15 12:49:58 2011 -0400 + + GDBusProxy: if a well-known name is not owned, don't GetAll from + the dbus-daemon + + If you run: + + ( cd gio/tests && G_DBUS_DEBUG=all ./gdbus-proxy-well-known-name ) + + you can see that in the case where the name com.example.TestService + isn't + owned yet, the GDBusProxy calls GetAll() with no destination, + resulting + in an error reply from the peer (the dbus-daemon itself). That's + clearly + not right! + + However, if priv->name is NULL, that indicates the special case + where we + really do want to talk directly to a peer, instead of via the + bus daemon + (most likely to be used on peer-to-peer connections); in that special + case, do call GetAll(). + + Signed-off-by: Simon McVittie + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 21 ++++++++++++++++++++- + 1 file changed, 20 insertions(+), 1 deletion(-) + +commit 2b0171a8080c233f85c1d66fa6df6d75640b37e5 +Author: Ryan Lortie +AuthorDate: Mon Aug 15 10:42:35 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Aug 15 10:43:32 2011 -0400 + + g_settings_bind: add some g_return checks + + https://bugzilla.gnome.org/show_bug.cgi?id=636405 + + gio/gsettings.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit e1b41dcb9118b6e182119cb85fd05b45f07c059c +Author: Ryan Lortie +AuthorDate: Wed Aug 10 12:25:57 2011 +0200 +Commit: Ryan Lortie +CommitDate: Mon Aug 15 10:43:25 2011 -0400 + + ghash: fix error in "as a set" documentation + + glib/ghash.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 20a4f2578fe74e80f58c442356bd2b91d790d7f8 +Author: David Zeuthen +AuthorDate: Mon Aug 15 05:43:24 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Aug 15 05:43:24 2011 -0400 + + GDBusObjectManagerClient: Emit signals on proxy before emitting + on manager + + This is needed because the proxy may need to update its internal state + which a signal handler connected to the manager may rely on. + + Signed-off-by: David Zeuthen + + gio/gdbusobjectmanagerclient.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit 230efe70f418017e809e99710e0519f716edebe3 +Author: Antoine Jacoutot +AuthorDate: Sun Aug 14 01:23:36 2011 +0200 +Commit: Colin Walters +CommitDate: Mon Aug 15 03:54:35 2011 -0400 + + open(2): POSIX compatibility. + + Posix allows for open(2) to fail with errno = EINTR. + Normal this isn't seen when opening files. However in some case we are + opening a fifo for write which will block until another process + opens it + for read. If a signal is received while blocked, open(2) fails with + errno = EINTR. + + https://bugzilla.gnome.org/show_bug.cgi?id=656492 + + glib/giounix.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit b76bb6713ba12a88fbccdaaf063d916ecd3af0b2 +Author: Matthias Clasen +AuthorDate: Sun Aug 14 14:09:58 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 14 14:09:58 2011 -0400 + + Add g_mkdtemp in the spirit of g_mkstemp + + At the same time, also add g_mkdtemp_full and g_dir_make_tmp + variants. The patch also unifies the unique-name-generating + code for all variants of mkstemp and mkdtemp and adds tests + for the new functions. + + Based on patches by Paolo Bonzini, + http://bugzilla.gnome.org/show_bug.cgi?id=118563 + + docs/reference/glib/glib-sections.txt | 3 + + glib/gfileutils.c | 398 + +++++++++++++++++++++------------- + glib/gfileutils.h | 17 +- + glib/glib.symbols | 3 + + tests/file-test.c | 52 +++++ + 5 files changed, 313 insertions(+), 160 deletions(-) + +commit 8377a886857396854069fb7a8309baeb77f144c2 +Author: Matthias Clasen +AuthorDate: Sun Aug 14 12:03:36 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 14 12:03:36 2011 -0400 + + GHmac: pedantic doc fixes + + Add a link to an explanation of what HMAC is, and tweak + some formatting. + + glib/ghmac.c | 44 +++++++++++++++++++++++++------------------- + 1 file changed, 25 insertions(+), 19 deletions(-) + +commit 1cb8640ccc2fbd7ef301e6526ee2043ed5061359 +Author: Matthias Clasen +AuthorDate: Sun Aug 14 00:47:04 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 14 11:57:57 2011 -0400 + + News for 2.29.16 + + NEWS | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 55 insertions(+) + +commit acbcb8f7e37b1c0ff872fdbb74df7de690bc2c6f +Author: Stef Walter +AuthorDate: Sun Aug 14 09:27:45 2011 +0200 +Commit: Stef Walter +CommitDate: Sun Aug 14 09:27:45 2011 +0200 + + hmac: Implementation of HMAC in glib + + This implements g_hmac_xxx() functionality using the standard checksum + functions supported by glib. + + HMAC is a secure way to hash a key and a password. Many other + approaches fraught with append and prepend issues. + + Includes test cases defined in relevant RFCs + + https://bugzilla.gnome.org/show_bug.cgi?id=652480 + + docs/reference/glib/glib-sections.txt | 16 ++ + glib/Makefile.am | 2 + + glib/ghmac.c | 388 + ++++++++++++++++++++++++++++++++++ + glib/ghmac.h | 71 +++++++ + glib/glib.h | 1 + + glib/glib.symbols | 9 + + glib/tests/.gitignore | 1 + + glib/tests/Makefile.am | 3 + + glib/tests/hmac.c | 268 +++++++++++++++++++++++ + 9 files changed, 759 insertions(+) + +commit d2ca14c270a8a0c01d8a897fad4ea2a9c2e31105 +Author: Marc-André Lureau +AuthorDate: Sun Jul 17 21:18:04 2011 +0200 +Commit: Matthias Clasen +CommitDate: Sat Aug 13 18:16:44 2011 -0400 + + Add G_VALUE_INIT + + The implementation of GValue is not public or documented. When + allocated on the stack, initializing a GValue is usually done as + documented with: + + GValue value = { 0, }; + + There is lot code around (including WebKit) that added all the missing + fields, resulting in this ugly and non-obvious: + + GValue value = { 0, { { 0 } } }; + + However, this doesn't play nice with -Wmissing-field-initializers for + example. Thus, G_VALUE_INIT. + + http://bugzilla.gnome.org/show_bug.cgi?id=654793 + http://bugzilla.gnome.org/show_bug.cgi?id=577231 + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gvalue.c | 6 +++--- + gobject/gvalue.h | 16 ++++++++++++++++ + 3 files changed, 20 insertions(+), 3 deletions(-) + +commit a9ca74efb11bda0a90f482a44bb2ec214744ecc6 +Author: Sjoerd Simons +AuthorDate: Wed Aug 10 15:56:13 2011 +0200 +Commit: Matthias Clasen +CommitDate: Sat Aug 13 16:15:11 2011 -0400 + + Don't finish gtls connection if the handshake failed + + https://bugzilla.gnome.org/show_bug.cgi?id=656283 + + gio/gsocketclient.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ae496a52a92c137b624eee3f5cf54e7756143086 +Author: Matthias Clasen +AuthorDate: Sat Aug 13 16:09:41 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 13 16:09:41 2011 -0400 + + GDBusProxy: on_properties_changed initialize some variables + + This avoids calling g_variant_unref and g_free on uninitialized memory + if PropertiesChanged is received in the creating thread's + thread-default + main context's thread, at the same time as releasing the last ref in + another thread. This would result in "goto out" before the variables + freed after that label had been initialized to NULL. + + Based on a patch by Simon McVittie, bug 656282 + + gio/gdbusproxy.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 655299a0579b8c9b418eab2301201c1fd25d89ae +Author: Matthias Clasen +AuthorDate: Sat Aug 13 15:48:47 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 13 15:48:47 2011 -0400 + + gdatetime: Add a test for %OM + + glib/tests/gdatetime.c | 1 + + 1 file changed, 1 insertion(+) + +commit be933706059a8d92fb8858219f5936f332b68f4a +Author: Matthias Clasen +AuthorDate: Sat Aug 13 15:29:29 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 13 15:29:29 2011 -0400 + + Remove a gccism + + Pointed out in bug 656152. + + glib/tests/checksum.c | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +commit 3c504e47656e7d26c0c24465f492b92f673a5cec +Author: Matthias Clasen +AuthorDate: Sat Aug 13 15:07:38 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 13 15:07:38 2011 -0400 + + Fix statfs/statvfs decision + + We want to force use of statvfs when statfs is deficient. + This does not make any difference on Linux. + + https://bugzilla.gnome.org/show_bug.cgi?id=656151 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f5472ed2325cac108f9faefaff5c86ec5d9e829b +Author: Matthias Clasen +AuthorDate: Sat Aug 13 13:53:34 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 13 13:53:48 2011 -0400 + + Trivial typo fix + + gobject/gsignal.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 428f49b9c8d56ae18398d4bb33c70c80eda1d21d +Author: David Zeuthen +AuthorDate: Fri Aug 12 11:10:22 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Aug 12 11:10:22 2011 -0400 + + In addition to /media and $HOME, also show mounts in $XDG_USER_DIR + + Prepare for the future where udisks will use $XDG_USER_DIR/Volumes + instead of /media when mounting filesystems on behalf of the user. + + Signed-off-by: David Zeuthen + + gio/gunixmounts.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 9fafa343456ec7c6c6f5fce8b6a1116c149d7949 +Author: Andika Triwidada +AuthorDate: Fri Aug 12 15:48:34 2011 +0700 +Commit: Andika Triwidada +CommitDate: Fri Aug 12 15:50:08 2011 +0700 + + Updated Indonesian translation + + po/id.po | 1803 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 869 insertions(+), 934 deletions(-) + +commit ebc74835e09754c8a784e6f4f4eece3715ef03ea +Author: Chun-wei Fan +AuthorDate: Fri Aug 12 11:43:40 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Aug 12 11:43:40 2011 +0800 + + Update VS property sheets ("install" phase) + + Copy the new GioTLS headers that were introduced into the GIO + library in commit 0f99cfa8822514dc6b7ccbc59efbe68f27aeb172 + during the + "install" stage. + + build/win32/vs10/glib.props | 8 ++++++++ + build/win32/vs9/glib.vsprops | 4 ++++ + 2 files changed, 12 insertions(+) + +commit 2f8664306d20772f47a46af26637615a54fdfc39 +Author: Alexander Shopov +AuthorDate: Thu Aug 11 20:55:20 2011 +0300 +Commit: Alexander Shopov +CommitDate: Thu Aug 11 20:55:41 2011 +0300 + + Updated Bulgarian translation + + po/bg.po | 632 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 345 insertions(+), 287 deletions(-) + +commit ea6e2968bfdee766c8d3d5fd5b5bac34bcaaaf3e +Author: Behdad Esfahbod +AuthorDate: Thu Aug 11 19:02:14 2011 +0200 +Commit: Behdad Esfahbod +CommitDate: Thu Aug 11 19:03:02 2011 +0200 + + [gobject] Fix G_DEFINE_BOXED_TYPE compilation with C++ + + gobject/gtype.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c3fd789bb759aefb6fda144b953c2d09fc0dc20d +Author: Martin Pitt +AuthorDate: Thu Aug 11 14:08:33 2011 +0200 +Commit: Martin Pitt +CommitDate: Thu Aug 11 14:09:23 2011 +0200 + + [gi] Add missing (out) annotation to + g_dbus_{node,interface}_info_generate_xml() + + gio/gdbusintrospection.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 782f83938395c0ac57198ec081e9566c170ef8ef +Author: Martin Pitt +AuthorDate: Thu Aug 11 11:36:22 2011 +0200 +Commit: Martin Pitt +CommitDate: Thu Aug 11 11:38:20 2011 +0200 + + [gi] Add missing Gio transfer annotations + + gio/gdbusproxy.c | 5 +++-- + gio/gtimezonemonitor.c | 2 +- + gio/gtlsbackend.c | 3 ++- + gio/gtlsclientconnection.c | 2 +- + gio/gtlsconnection.c | 2 +- + gio/gtlsfiledatabase.c | 2 +- + gio/gtlsserverconnection.c | 2 +- + 7 files changed, 10 insertions(+), 8 deletions(-) + +commit 0e548251201db63eb0c80091877f44df14f4a0fe +Author: Martin Pitt +AuthorDate: Thu Aug 11 11:05:31 2011 +0200 +Commit: Martin Pitt +CommitDate: Thu Aug 11 11:38:19 2011 +0200 + + [gi] Fix parameter name typos in Gio docstrings + + Found by GIR compiler when building gobject-introspection: + + gir/gio-2.0.c:33525: Warning: Gio: g_tls_password_set_description: + unknown + parameter 'flags' in documentation comment, should be one of + 'password', + 'description' + gir/gio-2.0.c:14568: Warning: Gio: + g_action_group_action_state_changed: unknown + parameter 'state' in documentation comment, should be one of + 'action_group', + 'action_name', 'value' + + gio/gactiongroup.h | 2 +- + gio/gtlspassword.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 77a10feafa4f77f1fcadb2ed1fd5da41dced3553 +Author: Chun-wei Fan +AuthorDate: Thu Aug 11 15:30:48 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Aug 11 15:30:48 2011 +0800 + + Bug 652827: Update config.h.win32.in + + Add check macro for HAVE_WIN32_BUILTINS_FOR_ATOMIC_OPERATIONS, + as it is + now required for MSVC builds of glib/gatomic.c GLib 2.29.15+. + + It is true that the MinGW cross-compiler on Linux systems will have + HAVE_GCC_BUILTINS_FOR_ATOMIC_OPERATIONS and + HAVE_WIN32_BUILTINS_FOR_ATOMIC_OPERATIONS defined during the + completion + of ./configure, but since this file is primarily meant for people + compiling -on- Windows (and that the "native" Windows MinGW would + neither + ./configure to define HAVE_GCC_BUILTINS_FOR_ATOMIC_OPERATIONS and + HAVE_WIN32_BUILTINS_FOR_ATOMIC_OPERATIONS), this file will be + updated as + it is for now at least until the situation for "native" Windows MinGW + change. (please see Bug 652827 regarding this paragraph) + + config.h.win32.in | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 349212211247781e7bec43b95cb57dddc1d0e5b1 +Author: Behdad Esfahbod +AuthorDate: Tue Aug 9 19:43:34 2011 +0200 +Commit: Behdad Esfahbod +CommitDate: Thu Aug 11 08:40:43 2011 +0200 + + Bug 652827 - glib-2.29.8 no longer builds with mingw.org's toolchain + + Check for Win32 atomic intrinsics. + + configure.ac | 12 +++++++++++- + glib/gatomic.c | 2 +- + 2 files changed, 12 insertions(+), 2 deletions(-) + +commit fc442bdbe6d8113caf25a4dd4b0e8e4dc8d3913a +Author: Behdad Esfahbod +AuthorDate: Thu Aug 11 08:33:23 2011 +0200 +Commit: Behdad Esfahbod +CommitDate: Thu Aug 11 08:40:42 2011 +0200 + + Cleanup gatomic checks + + configure.ac | 39 +++++++++++++++++---------------------- + 1 file changed, 17 insertions(+), 22 deletions(-) + +commit 21e682388dafb1de5308ac403c7ebdfe09e1030b +Author: Behdad Esfahbod +AuthorDate: Thu Aug 11 08:11:06 2011 +0200 +Commit: Behdad Esfahbod +CommitDate: Thu Aug 11 08:40:42 2011 +0200 + + Fix typo + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit b2c6b801bc12429305f022c332b693a142098177 +Author: Martin Pitt +AuthorDate: Wed Aug 10 22:50:26 2011 +0200 +Commit: Martin Pitt +CommitDate: Wed Aug 10 22:51:32 2011 +0200 + + [gi] Add missing transfer annotation to + g_dbus_node_info_lookup_interface() + + gio/gdbusintrospection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 27599d671e0f0c13f102f6d7ffc58e23825eba67 +Author: Kjartan Maraas +AuthorDate: Wed Aug 10 15:12:54 2011 +0200 +Commit: Kjartan Maraas +CommitDate: Wed Aug 10 15:14:00 2011 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 391 + ++++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 249 insertions(+), 142 deletions(-) + +commit c783bfd4e7ebbfa258bce49e5381e2c2afe0110f +Author: Martin Pitt +AuthorDate: Tue Aug 9 14:51:34 2011 +0200 +Commit: Martin Pitt +CommitDate: Tue Aug 9 14:52:53 2011 +0200 + + [gi] Add missing (allow-none) annotations to + g_dbus_connection_register_object() + + gio/gdbusconnection.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 3a631aa863ec8337bd7ea4ab55eed3a2fd3ef1b4 +Author: Simon McVittie +AuthorDate: Mon Aug 8 17:18:08 2011 +0100 +Commit: Simon McVittie +CommitDate: Tue Aug 9 10:36:43 2011 +0100 + + Ignore lcov-produced files in top-level .gitignore + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=656162 + Signed-off-by: Simon McVittie + + .gitignore | 2 ++ + 1 file changed, 2 insertions(+) + +commit 8f503548701eb8c14ac37c0b84629da5d4493495 +Author: Simon McVittie +AuthorDate: Mon Aug 8 15:48:27 2011 +0100 +Commit: Simon McVittie +CommitDate: Tue Aug 9 10:36:40 2011 +0100 + + Allow current lcov (version 1.9) to be used for coverage + + It seems to work fine with the same invocation already used. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=656162 + Signed-off-by: Simon McVittie + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9bcf89cd70946be7c724cbeac9cd1c028f74ea6e +Author: Matthias Clasen +AuthorDate: Mon Aug 8 23:16:07 2011 +0200 +Commit: Matthias Clasen +CommitDate: Mon Aug 8 23:16:07 2011 +0200 + + Document libffi as new dependency + + INSTALL.in | 1 + + README.in | 8 ++++++++ + gobject/gsignal.c | 2 +- + 3 files changed, 10 insertions(+), 1 deletion(-) + +commit 5f9e5c1124c6362fe463b5295c7a2b00afcec135 +Author: Fran Dieguez +AuthorDate: Sat Aug 6 22:33:00 2011 +0200 +Commit: Fran Dieguez +CommitDate: Sat Aug 6 22:33:00 2011 +0200 + + Updated Galician translations + + po/gl.po | 467 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 258 insertions(+), 209 deletions(-) + +commit 2512341fa6b1842adc5b403ce9eb22b9f3478ee3 +Author: Colin Walters +AuthorDate: Sat Aug 6 09:36:49 2011 -0400 +Commit: Colin Walters +CommitDate: Sat Aug 6 09:36:49 2011 -0400 + + Require Python 2.5 explicitly + + Without someone to regularly test 2.4, and since the code in reality + requires 2.5, switch to that for now. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b3111f87e2f340f45106f24b640ba2ac68b9086b +Author: Colin Walters +AuthorDate: Sat Aug 6 09:22:44 2011 -0400 +Commit: Colin Walters +CommitDate: Sat Aug 6 09:22:44 2011 -0400 + + configure: Fix statvfs/statfs detection + + Add missing 'x' as pointed out by declanw@is.bbc.co.uk + + https://bugzilla.gnome.org/show_bug.cgi?id=656048 + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 871da75ca38b4b931c4fbcd500856b71596c1332 +Author: Yaron Shahrabani +AuthorDate: Sat Aug 6 16:02:50 2011 +0300 +Commit: Yaron Shahrabani +CommitDate: Sat Aug 6 16:02:50 2011 +0300 + + Updated Hebrew translation. + + po/he.po | 580 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 315 insertions(+), 265 deletions(-) + +commit 85d12096e4fdef6451033cbecc03de2cd4066eb1 +Author: Pavel Holejsovsky +AuthorDate: Fri Aug 5 16:31:06 2011 +0200 +Commit: Pavel Holejsovsky +CommitDate: Sat Aug 6 11:32:18 2011 +0200 + + Add missing GVariant annotations + + https://bugzilla.gnome.org/show_bug.cgi?id=656031 + + glib/gvariant-core.c | 2 +- + glib/gvariant.c | 12 ++++++++---- + glib/gvarianttype.c | 4 ++-- + 3 files changed, 11 insertions(+), 7 deletions(-) + +commit cfa90b8fc1c2b74bc309f0efe6c122e72be7d11a +Author: Dan Winship +AuthorDate: Fri Aug 5 19:43:47 2011 -0400 +Commit: Dan Winship +CommitDate: Fri Aug 5 19:43:47 2011 -0400 + + gio/tests/.gitignore: fix + + gio/tests/.gitignore | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 27b5dab0d6ebc7717243bd736bc10859713b0f73 +Author: Claude Paroz +AuthorDate: Fri Aug 5 17:04:50 2011 +0200 +Commit: Claude Paroz +CommitDate: Fri Aug 5 17:04:50 2011 +0200 + + Updated French translation + + po/fr.po | 1287 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 705 insertions(+), 582 deletions(-) + +commit 6c8a61bc1bdea6c3434350d5c7c0fa0e7053664b +Author: Mario Blättermann +AuthorDate: Fri Aug 5 12:11:02 2011 +0200 +Commit: Mario Blättermann +CommitDate: Fri Aug 5 12:11:02 2011 +0200 + + [l10n] Updated German translation + + po/de.po | 1245 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 686 insertions(+), 559 deletions(-) + +commit d728c00a0488fb2bfbe69e95aba360a552a73d84 +Author: Murray Cumming +AuthorDate: Thu Aug 4 21:47:07 2011 +0200 +Commit: Murray Cumming +CommitDate: Thu Aug 4 21:47:07 2011 +0200 + + gio enums: Remove trailing commas + + gio/gioenums.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 29aae440fb64e8811508e1a803ee524c752b3565 +Author: Stef Walter +AuthorDate: Thu Aug 4 09:43:45 2011 +0200 +Commit: Stef Walter +CommitDate: Thu Aug 4 09:43:45 2011 +0200 + + Fix up ABI symbols after GTlsDatabase merge. + + https://bugzilla.gnome.org/show_bug.cgi?id=636572 + + gio/gio.symbols | 28 ++++++++++++++++++++++++---- + gio/gtlsinteraction.c | 6 +++--- + 2 files changed, 27 insertions(+), 7 deletions(-) + +commit 0f99cfa8822514dc6b7ccbc59efbe68f27aeb172 +Author: Stef Walter +AuthorDate: Thu Aug 4 08:54:55 2011 +0200 +Commit: Stef Walter +CommitDate: Thu Aug 4 08:54:55 2011 +0200 + + GTlsDatabase and related objects + + The database is an abstract object implemented by the various TLS + backends, which is used by GTlsConnection to lookup certificates + and keys, as well as verify certificate chains. + + Also add GTlsInteraction, which can be used to prompt the user + for a password or PIN (used with the database). + + https://bugzilla.gnome.org/show_bug.cgi?id=636572 + + docs/reference/gio/gio-docs.xml | 4 + + docs/reference/gio/gio-sections.txt | 117 +++++ + docs/reference/gio/gio.types | 2 + + gio/Makefile.am | 8 + + gio/gdummytlsbackend.c | 105 +++- + gio/gio.h | 4 + + gio/gio.symbols | 21 + + gio/gioenums.h | 70 +++ + gio/giotypes.h | 4 + + gio/gtlsbackend.c | 44 ++ + gio/gtlsbackend.h | 28 +- + gio/gtlsconnection.c | 146 +++++- + gio/gtlsconnection.h | 12 +- + gio/gtlsdatabase.c | 967 + ++++++++++++++++++++++++++++++++++++ + gio/gtlsdatabase.h | 235 +++++++++ + gio/gtlsfiledatabase.c | 104 ++++ + gio/gtlsfiledatabase.h | 56 +++ + gio/gtlsinteraction.c | 197 ++++++++ + gio/gtlsinteraction.h | 88 ++++ + gio/gtlspassword.c | 436 ++++++++++++++++ + gio/gtlspassword.h | 101 ++++ + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 4 +- + gio/tests/gtlsconsoleinteraction.c | 107 ++++ + gio/tests/gtlsconsoleinteraction.h | 56 +++ + gio/tests/socket-client.c | 291 +++++++---- + 26 files changed, 3082 insertions(+), 126 deletions(-) + +commit a187199efd7eb16f500cef31c950d4eafbfe3a4b +Author: kotarou +AuthorDate: Wed Aug 3 08:46:04 2011 -0400 +Commit: Colin Walters +CommitDate: Wed Aug 3 08:47:01 2011 -0400 + + build: Pass ZLIB_CFLAGS for gio build + + Otherwise we will fail if zlib is in an alternative prefix. + + Commit message written by Colin Walters + + https://bugzilla.gnome.org/show_bug.cgi?id=655769 + + gio/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit ee63179b71f6a4153f08bc5c84c24a0d0ac76263 +Author: Owen W. Taylor +AuthorDate: Fri Jul 29 15:38:54 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Aug 1 16:24:34 2011 -0400 + + g_cancellable_get_fd: silently return -1 for NULL cancellable + + This keeps compatibility with previous behavior. + + https://bugzilla.gnome.org/show_bug.cgi?id=655598 + + Signed-off-by: David Zeuthen + + gio/gcancellable.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 659ba3d0b3eca1ee3af13d277ac8c847651b0a6a +Author: David Zeuthen +AuthorDate: Mon Aug 1 11:54:47 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Aug 1 11:58:05 2011 -0400 + + GDBusConnection: Only apply exit-on-closed semantics if properly + initialized + + Otherwise there is no point in gracefully handling the error... + + https://bugzilla.gnome.org/show_bug.cgi?id=655664 + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fcc415b16cb9e618acabb921231dc2e49637f14c +Author: Yuri Kozlov +AuthorDate: Mon Aug 1 00:10:59 2011 +0400 +Commit: Yuri Myasoedov +CommitDate: Mon Aug 1 00:10:59 2011 +0400 + + Updated Russian translation + + po/ru.po | 134 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 69 insertions(+), 65 deletions(-) + +commit bf21a693fa47cd0c4300822f24909b35892311df +Author: Daniel Mustieles +AuthorDate: Fri Jul 29 19:59:58 2011 +0200 +Commit: Daniel Mustieles +CommitDate: Fri Jul 29 19:59:58 2011 +0200 + + Updated Spanish translation + + po/es.po | 301 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 145 insertions(+), 156 deletions(-) + +commit c3af3d8d2c191fe3b5b654e3925effa32b3d0daa +Author: Daniel Nylander +AuthorDate: Fri Jul 29 09:50:43 2011 +0200 +Commit: Daniel Nylander +CommitDate: Fri Jul 29 09:50:43 2011 +0200 + + Updated Swedish translation + + po/sv.po | 2100 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 1101 insertions(+), 999 deletions(-) + +commit d15f8682c006c8f5c3d4a93db0f211f687fb656e +Author: Matthias Clasen +AuthorDate: Wed Jul 27 23:27:24 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jul 27 23:27:24 2011 -0400 + + Revert "Optimize g_[s]list_free_full a bit" + + This reverts commit 98b667d052b1274f80b8898a32d0753e9e2e5c1a. + + The commit was not actually an optimization, since g_list_free is + pretty smart. + + glib/glist.c | 11 +++-------- + glib/gslist.c | 17 ++++++----------- + 2 files changed, 9 insertions(+), 19 deletions(-) + +commit dbb78fe57de0792d409b1baf88661844384c2762 +Author: Nicolas Dufresne +AuthorDate: Mon Jul 25 15:59:58 2011 -0400 +Commit: Nicolas Dufresne +CommitDate: Wed Jul 27 16:23:33 2011 -0400 + + Added TLS PEM parser unit test + + gio/tests/Makefile.am | 4 + + gio/tests/cert-key.pem | 32 +++++ + gio/tests/cert-list.pem | 52 ++++++++ + gio/tests/cert1.pem | 17 +++ + gio/tests/cert2.pem | 17 +++ + gio/tests/cert3.pem | 17 +++ + gio/tests/gtesttlsbackend.c | 312 + ++++++++++++++++++++++++++++++++++++++++++++ + gio/tests/gtesttlsbackend.h | 49 +++++++ + gio/tests/key-cert.pem | 32 +++++ + gio/tests/key.pem | 15 +++ + gio/tests/nothing.pem | 0 + gio/tests/tls-certificate.c | 279 +++++++++++++++++++++++++++++++++++++++ + 12 files changed, 826 insertions(+) + +commit fdfb42b9f2bdbed44ad4f469bf2794b2057587c1 +Author: Nicolas Dufresne +AuthorDate: Mon Jun 20 18:49:39 2011 -0400 +Commit: Nicolas Dufresne +CommitDate: Wed Jul 27 16:23:33 2011 -0400 + + Rework PEM parsing to not be order dependent + + Some valid PEM file would not work because the private key was put + before the certificate. + + gio/gtlscertificate.c | 149 + ++++++++++++++++++++++++++++++++------------------ + 1 file changed, 95 insertions(+), 54 deletions(-) + +commit fb45baaf8cc62278c71030c284d4ed3d5f4f849d +Author: Tomas Bzatek +AuthorDate: Tue Jul 26 17:32:53 2011 +0200 +Commit: Tomas Bzatek +CommitDate: Tue Jul 26 17:32:53 2011 +0200 + + Docs: Correct the namespace for g_file_query_filesystem_info() + + gio/gfile.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ac5dd614aa796223dc49a100b016abb7996fd418 +Author: Chun-wei Fan +AuthorDate: Tue Jul 26 23:23:31 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jul 26 23:23:31 2011 +0800 + + Updated glib-zip.in a bit further + + Missed the bin/gsettings.exe part (corrected from bin/gsettings.) + + glib-zip.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 82a0733751b2dc3306e7dcf76358621eaea02bcb +Author: Cosimo Cecchi +AuthorDate: Tue Jul 26 16:44:18 2011 +0200 +Commit: Cosimo Cecchi +CommitDate: Tue Jul 26 16:44:18 2011 +0200 + + utf8: annotate the end pointer in g_utf8_validate as out + allow-none + + glib/gutf8.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b7f3638e5c3917d6007040747eb3ef1ccc338a0b +Author: David Zeuthen +AuthorDate: Tue Jul 26 10:05:57 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Jul 26 10:05:57 2011 -0400 + + More gdbus-codegen fixed to build on non-Unix + + https://bugzilla.gnome.org/show_bug.cgi?id=655148#c6 + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 12 ++++++++---- + gio/tests/Makefile.am | 22 +++++++++++++++++----- + 2 files changed, 25 insertions(+), 9 deletions(-) + +commit 494db61c1946f0b06cc2d68a1194e8812871540e +Author: Ryan Lortie +AuthorDate: Tue Jul 26 13:49:20 2011 +0200 +Commit: Ryan Lortie +CommitDate: Tue Jul 26 13:53:58 2011 +0200 + + gtester: small Windows fix + + This code was unconditionally present in the gtester Makefile: + + test-nonrecursive: ${TEST_PROGS} + + On Windows, our testcases are compiled with a .exe suffix. That means + that if we had 'foo' in TEST_PROGS, running "make check" would + depend on + 'foo' (not foo.exe) being compiled. + + We could bring the EXEEXT in here to fix that up, but gtester doesn't + work on Windows at all, so better to just disable it in that case. + + Makefile.decl | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 44e85f73643ca24656aa89906d33a1385dcc87a5 +Author: Ryan Lortie +AuthorDate: Tue Jul 26 13:38:04 2011 +0200 +Commit: Ryan Lortie +CommitDate: Tue Jul 26 13:38:04 2011 +0200 + + GDateTime test: 1970 doesn't exist on Windows + + It is not safe to call the system library mktime() function on Windows + with a date in the 70s. Use 1990 instead. + + glib/tests/gdatetime.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d62d0336b8fb2d3369f02758c20c6ea38bee9464 +Author: Ryan Lortie +AuthorDate: Tue Jul 26 13:29:01 2011 +0200 +Commit: Ryan Lortie +CommitDate: Tue Jul 26 13:30:35 2011 +0200 + + g_format_size: fix on Windows + + The long format that displays the exact number of bytes with + separators + (ie: "123,456,789 bytes") uses the ' format modifier, which is + unsupported on Windows. Disable that for now, until we come up with a + better solution. + + glib/gfileutils.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 01744c2d69fb11a8dfde62666540da91adafd6a8 +Author: Ryan Lortie +AuthorDate: Tue Jul 26 13:26:10 2011 +0200 +Commit: Ryan Lortie +CommitDate: Tue Jul 26 13:30:35 2011 +0200 + + g_format_size: avoid silly GString use + + We were using a GString for the purpose of doing a single printf(). + Do + g_strdup_printf() instead. + + glib/gfileutils.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit 81d0b28a4de87805c6f8c6661a8c2e0de3893267 +Author: Dieter Verfaillie +AuthorDate: Mon Jul 18 14:20:18 2011 +0200 +Commit: Dieter Verfaillie +CommitDate: Tue Jul 26 12:58:04 2011 +0200 + + Update glib-zip.in + + glib-zip.in | 48 +++++++++++++++++++++++++++++++----------------- + 1 file changed, 31 insertions(+), 17 deletions(-) + +commit 633fd86815fafa0ffb9cd0d8e5b958b0d3abe141 +Author: Ryan Lortie +AuthorDate: Tue Jul 26 11:20:12 2011 +0200 +Commit: Ryan Lortie +CommitDate: Tue Jul 26 11:20:12 2011 +0200 + + glocalfile: don't bother with fstype on win32 + + Fixes the broken build on Windows. + + gio/glocalfile.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 12f516b44cb3b91d99a9ea0f0c51aaeeb3562688 +Merge: 32b1349 39b72a1 +Author: Ryan Lortie +AuthorDate: Tue Jul 26 10:50:25 2011 +0200 +Commit: Ryan Lortie +CommitDate: Tue Jul 26 10:50:25 2011 +0200 + + Merge branch 'gwakeup' + +commit 39b72a166e72ebbafbb7e85383db954a31b929c2 +Author: Ryan Lortie +AuthorDate: Mon Jul 25 18:59:27 2011 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jul 25 18:59:27 2011 +0200 + + GWakeup: fix Windows build breakage + + ...from the attempt to make it private. + + glib/gwakeup.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit d87eddbb130bbc35ea17c5d4f0c3ee724b1c6d61 +Author: Ryan Lortie +AuthorDate: Mon Jul 25 18:52:36 2011 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jul 25 18:52:36 2011 +0200 + + .gitignore the gwakeup-fallback testcase + + gthread/tests/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit 6615349ffb1335ca506fd476d65dd864eb2ee494 +Author: Ryan Lortie +AuthorDate: Mon Jul 25 18:52:18 2011 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jul 25 18:52:18 2011 +0200 + + Remove g_wakeup_* from glib.symbols + + glib/glib.symbols | 5 ----- + 1 file changed, 5 deletions(-) + +commit c81eb121a1a29c7068b775d0f7665d05c0dd4dad +Author: Ryan Lortie +AuthorDate: Mon Jul 25 18:50:45 2011 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jul 25 18:51:03 2011 +0200 + + GWakeup: make it private API + + Colin requests that we keep this one private for now. + + Include it at each point of use (libglib, libgio, tests). + + docs/reference/glib/Makefile.am | 3 + + docs/reference/glib/glib-docs.sgml | 1 - + docs/reference/glib/glib-sections.txt | 10 -- + gio/Makefile.am | 1 + + gio/gcancellable.c | 1 + + glib/Makefile.am | 2 +- + glib/glib.h | 1 - + glib/gwakeup.c | 17 ++ + glib/gwakeup.h | 15 +- + gthread/tests/Makefile.am | 3 +- + gthread/tests/gwakeup.c | 303 + ---------------------------------- + gthread/tests/gwakeuptest.c | 276 + +++++++++++++++++++++++++++++++ + 12 files changed, 307 insertions(+), 326 deletions(-) + +commit 0584f0c50495e4c1d6691f30d9f598799a5d54ce +Author: Ryan Lortie +AuthorDate: Mon Jul 25 17:43:28 2011 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jul 25 17:43:28 2011 +0200 + + GWakeup: test fallback case + + We need to test the case of eventfd in the libc but no kernel support. + + In order to do that, we add a separate compile of the GWakeup testcase + that interposes an 'eventfd' symbol that always returns -1 with errno + set. That will trigger the fallback case. + + configure.ac | 1 + + gthread/tests/Makefile.am | 7 +++++++ + gthread/tests/gwakeup.c | 39 +++++++++++++++++++++++++++++++++++++-- + 3 files changed, 45 insertions(+), 2 deletions(-) + +commit 7f15910e7907e17606ba9e149cc3b04be4887bbf +Author: Ryan Lortie +AuthorDate: Mon Jul 25 16:35:08 2011 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jul 25 16:35:08 2011 +0200 + + GWakeup: add signal safety note + + Note that g_wakeup_signal() is safe to call from a UNIX signal handler + (since this is a likely place to want to call it from). + + glib/gwakeup.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 32b1349a23ff050b8026ede150a25cae56799901 +Author: David Zeuthen +AuthorDate: Mon Jul 25 10:31:17 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Jul 25 10:31:17 2011 -0400 + + More fixes for non-Unix builds + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 8 ++++++++ + gio/gdbusproxy.c | 8 ++++++++ + 2 files changed, 16 insertions(+) + +commit f8b98841ad44d4603c60fdbad6f3e58a64eb9043 +Author: David Zeuthen +AuthorDate: Mon Jul 25 09:56:01 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Jul 25 09:56:01 2011 -0400 + + Fix the build on non-Unix + + https://bugzilla.gnome.org/show_bug.cgi?id=655148 + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit 3c25f9f609cfa6c1a180c46f267e73bbd87dd542 +Author: Ryan Lortie +AuthorDate: Mon Jul 25 15:08:47 2011 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jul 25 15:30:36 2011 +0200 + + GWakeup .gitignore fixes + + docs/reference/glib/tmpl/.gitignore | 1 + + gthread/tests/.gitignore | 1 + + 2 files changed, 2 insertions(+) + +commit 452b6277d4badf7d471c73555277a5afd3393602 +Author: Ryan Lortie +AuthorDate: Mon Jul 25 14:37:18 2011 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jul 25 15:30:35 2011 +0200 + + gtk-doc GWakeup + + docs/reference/glib/glib-docs.sgml | 1 + + docs/reference/glib/glib-sections.txt | 10 ++++ + glib/gwakeup.c | 93 + ++++++++++++++++++++++++++++++++--- + glib/gwakeup.h | 2 +- + 4 files changed, 99 insertions(+), 7 deletions(-) + +commit 0a971e46bf4158b7f58ac283db40d212b6f2d274 +Author: Ryan Lortie +AuthorDate: Mon Jul 25 15:02:28 2011 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jul 25 15:30:35 2011 +0200 + + GCancellable: port to GWakeup + + gio/gcancellable.c | 235 + ++++++++--------------------------------------------- + 1 file changed, 32 insertions(+), 203 deletions(-) + +commit 777e40989e66e583e6636e7b80ab8770cf15ff8c +Author: Ryan Lortie +AuthorDate: Mon Jul 25 15:07:33 2011 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jul 25 15:30:35 2011 +0200 + + port GMainContext to GWakeup + + glib/gmain.c | 113 + +++++++---------------------------------------------------- + 1 file changed, 13 insertions(+), 100 deletions(-) + +commit 4026b3317425ea7880930787faeedbe526588b11 +Author: Ryan Lortie +AuthorDate: Mon Jul 25 15:07:16 2011 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jul 25 15:30:35 2011 +0200 + + add a couple of testcases for GWakeup + + gthread/tests/Makefile.am | 3 + + gthread/tests/gwakeup.c | 268 + ++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 271 insertions(+) + +commit 78545a641cb93811640e95792eb7f87f810e7aea +Author: Ryan Lortie +AuthorDate: Mon Jul 25 15:05:03 2011 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jul 25 15:30:29 2011 +0200 + + Add GWakeup + + GWakeup is a utility class to handle the cross-thread signalling needs + of GMainContext and GCancellable. It may find some other users + as well. + + The desire here is to properly hide the implementation details in a + module which can be properly unit tested and used in GMainContext and + GCancellable without a rats nest of #ifdef. + + glib/Makefile.am | 2 + + glib/glib.h | 1 + + glib/glib.symbols | 5 ++ + glib/gwakeup.c | 157 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/gwakeup.h | 38 +++++++++++++ + 5 files changed, 203 insertions(+) + +commit 15a1cf804974c3fa526bab8a6b80eb27518313f3 +Author: Ryan Lortie +AuthorDate: Mon Jul 25 15:25:13 2011 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jul 25 15:26:28 2011 +0200 + + g_unix_open_pipe: fix some bugs + + Fix some bugs in the fallback case of g_unix_open_pipe: + + - close both halves of the pipe on error (not just one) + + - set the cloexec flag on both halves of the pipe (instead of + settings + it twice on one half) + + glib/glib-unix.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit aa4d704e632df68be9843074ea8197c30ebc52ed +Author: Ryan Lortie +AuthorDate: Mon Jul 25 15:09:57 2011 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jul 25 15:10:24 2011 +0200 + + Windows (mingw32) .gitignore additions + + .gitignore | 2 ++ + 1 file changed, 2 insertions(+) + +commit 3769c1e1732a7f3889b5d819552c79512571e169 +Author: Murray Cumming +AuthorDate: Mon Jul 25 09:23:51 2011 +0200 +Commit: Murray Cumming +CommitDate: Mon Jul 25 09:24:43 2011 +0200 + + Docs: Fix tiny typo. + + gio/gfileattribute.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e6f37ca472860535606ef0f898f85f3ad6a7167c +Author: Chun-wei Fan +AuthorDate: Mon Jul 25 11:42:17 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Jul 25 11:42:17 2011 +0800 + + Update Windows READMEs + + -Tell people about that libFFI is now needed. + -Tell people not to compile GLib in paths containing spaces. + + README.win32 | 16 +++++++++++----- + build/win32/vs10/README.txt | 4 +++- + build/win32/vs9/README.txt | 4 +++- + 3 files changed, 17 insertions(+), 7 deletions(-) + +commit eac8d47e373bd57e3cb117508c0812b53963a732 +Author: Dan Winship +AuthorDate: Sun Jul 24 14:55:05 2011 -0400 +Commit: Dan Winship +CommitDate: Sun Jul 24 14:55:05 2011 -0400 + + gio/tests/socket: add some basic IPv4 and IPv6 tests + + gio/tests/socket.c | 381 + ++++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 378 insertions(+), 3 deletions(-) + +commit aefda965f650c6713ef895a9156dd1297793f1ff +Author: Dan Winship +AuthorDate: Sun Jul 24 14:52:03 2011 -0400 +Commit: Dan Winship +CommitDate: Sun Jul 24 14:54:45 2011 -0400 + + GSocket: fix connected state after async connect + + socket->priv->connected was only being set if g_socket_connect() + succeeded right away; in the case where it returns G_IO_ERROR_PENDING, + it never got set. Fix that by having g_socket_check_connect_result() + set it on success. + + gio/gsocket.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit b8a0475e7a2ef6d49e61e7be684bff017ee22fa9 +Author: Dan Winship +AuthorDate: Sun Jul 24 12:41:11 2011 -0400 +Commit: Dan Winship +CommitDate: Sun Jul 24 12:41:11 2011 -0400 + + update .gitignore + + glib/tests/.gitignore | 2 ++ + 1 file changed, 2 insertions(+) + +commit 4cb33b158b43b54108b20cb9c3f1143acbef9124 +Author: Matthias Clasen +AuthorDate: Sat Jul 23 21:59:49 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 23 21:59:49 2011 -0400 + + Explicitly unset the session bus address for the peer tests + + Otherwise, we may run into trouble as opening a peer-to-peer + connection uses a socket client, which uses a proxy resolver + which may end up using gsettings, whose dconf backend may end + up using the session bus to talk to dconfd... + + gio/tests/gdbus-peer.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit d344e69dc291df5e5da15d6e1c1b0ef897fdeea3 +Author: Matthias Clasen +AuthorDate: Sat Jul 23 21:16:28 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 23 21:16:28 2011 -0400 + + Properly bring up a session bus for application tests + + As pointed out in bug 644601, session_bus_up() requires + us to set up environment variables for things to work. + + gio/tests/gapplication.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 1f9e84896bb1621e54fc5d0cb45006400e121043 +Author: Matthias Clasen +AuthorDate: Sat Jul 23 21:07:39 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 23 21:07:48 2011 -0400 + + Fix a typo + + gio/gdbusconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e488cbd24b611e6648cc36049e503aa8d18b9fd6 +Author: Yuri Kozlov +AuthorDate: Sat Jul 23 18:54:03 2011 +0400 +Commit: Yuri Myasoedov +CommitDate: Sat Jul 23 18:54:03 2011 +0400 + + Updated Russian translation + + po/ru.po | 428 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 236 insertions(+), 192 deletions(-) + +commit 9c46740afdb5cf545fbc69bc55be274b8758fecb +Author: Luca Ferretti +AuthorDate: Sat Jul 23 14:52:13 2011 +0200 +Commit: Luca Ferretti +CommitDate: Sat Jul 23 14:52:27 2011 +0200 + + [l10n] Updated Italian translation + + po/it.po | 1311 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 705 insertions(+), 606 deletions(-) + +commit ae7c48b955cd6979a799574bb92e654081769c62 +Author: Vincent Untz +AuthorDate: Thu Jul 21 15:23:00 2011 +0200 +Commit: Vincent Untz +CommitDate: Sat Jul 23 10:05:12 2011 +0200 + + GDesktopAppInfo: Add g_desktop_app_info_get_show_in() + + Necessary for rebasing gnome-menus on top of GDesktopAppInfo. + + https://bugzilla.gnome.org/show_bug.cgi?id=655044 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdesktopappinfo.c | 111 + +++++++++++++++++++++++------------- + gio/gdesktopappinfo.h | 2 + + gio/gio.symbols | 1 + + 4 files changed, 76 insertions(+), 39 deletions(-) + +commit 8ef050f9675e2ee097663c6a436a7b7f7abbe816 +Author: Colin Walters +AuthorDate: Fri Jul 22 13:39:21 2011 -0400 +Commit: Colin Walters +CommitDate: Fri Jul 22 13:39:21 2011 -0400 + + glib.symbols: Update for expected ABI changes + + glib/glib.symbols | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b79eae5c197aeec8d57f39c0f7bf5d5114068bea +Author: Colin Walters +AuthorDate: Fri Jul 22 12:41:41 2011 -0400 +Commit: Colin Walters +CommitDate: Fri Jul 22 12:41:41 2011 -0400 + + glib-2.0.pc: Add -lrt to private libraries to assist static linking + + https://bugzilla.gnome.org/show_bug.cgi?id=654078 + + glib-2.0.pc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8b061e023ce97171d817e07ea7068f567129ae8a +Author: Colin Walters +AuthorDate: Fri Jul 22 10:31:27 2011 -0400 +Commit: Colin Walters +CommitDate: Fri Jul 22 10:56:54 2011 -0400 + + Revert addition of g_key_file_has_key_full + + Per IRC discussion, we can just ask bindings to use + g_key_file_get_value() to test for the existence of a key. + + I left the "fixed" code in the source tree as static because it makes + more sense to me. + + glib/gkeyfile.c | 90 + ++++++++++++++++++++++------------------------------ + glib/gkeyfile.h | 5 --- + glib/tests/keyfile.c | 16 ---------- + 3 files changed, 38 insertions(+), 73 deletions(-) + +commit 753948316915e834801347af08b773c24078a3bd +Author: Behdad Esfahbod +AuthorDate: Fri Jul 22 10:33:47 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Fri Jul 22 10:33:47 2011 -0400 + + Don't use deprecated G_UNICODE_COMBINING_MARK + + glib/gen-unicode-tables.pl | 2 +- + glib/gunichartables.h | 388 + ++++++++++++++++++++++----------------------- + glib/guniprop.c | 2 +- + 3 files changed, 196 insertions(+), 196 deletions(-) + +commit 804e3ba4dddbcb00279ba0ab1a148606bc10a414 +Author: Ryan Lortie +AuthorDate: Fri Jul 22 15:47:11 2011 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jul 22 15:47:24 2011 +0200 + + gitignore tweaks + + docs/reference/glib/tmpl/.gitignore | 1 + + gobject/tests/.gitignore | 1 + + gthread/tests/.gitignore | 2 ++ + 3 files changed, 4 insertions(+) + +commit a14f2fa1a0ea2b453be35373f9d4c5d80b842d7d +Author: Ryan Lortie +AuthorDate: Fri Jul 22 13:44:31 2011 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jul 22 15:47:24 2011 +0200 + + Rename a few arguments + + To fix header/function/doc-string mismatches. + + glib/gdataset.c | 4 ++-- + glib/gunicode.h | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 6492548b6f4d1805f7817911207648f0b1eeae19 +Author: Ryan Lortie +AuthorDate: Fri Jul 22 13:41:13 2011 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jul 22 15:47:24 2011 +0200 + + Have gtk-doc ignore some #defines + + We prefer to have gtk-doc pick up the function rather than the macro. + + glib/gstdio.h | 2 ++ + glib/gwin32.h | 2 ++ + 2 files changed, 4 insertions(+) + +commit 5dbc12e9f1477eb699a92b1ef7363b62bdca68eb +Author: Ryan Lortie +AuthorDate: Fri Jul 22 13:25:32 2011 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jul 22 15:47:24 2011 +0200 + + Replace @Varargs with @... + + to make gtk-doc happy. + + glib/gerror.c | 4 ++-- + glib/gfileutils.c | 4 ++-- + glib/gmarkup.c | 2 +- + glib/gmessages.c | 4 ++-- + glib/gprintf.c | 8 ++++---- + glib/grel.c | 10 +++++----- + glib/gstrfuncs.c | 6 +++--- + glib/gstring.c | 8 ++++---- + glib/gtestutils.c | 6 +++--- + 9 files changed, 26 insertions(+), 26 deletions(-) + +commit ea63f16c59b661d080c54c44147cedb4ad27e102 +Author: Ryan Lortie +AuthorDate: Fri Jul 22 12:59:44 2011 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jul 22 15:47:24 2011 +0200 + + Remove duplicate 'struct real_pcre' declaration + + The redundant forward declaration of 'struct real_pcre' before the + typedef was tripping up gtk-doc. Remove it. + + glib/pcre/pcre.h | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 668c399077b48ef49d2fdb6eb808226c9f127e70 +Author: Ryan Lortie +AuthorDate: Fri Jul 22 12:59:11 2011 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jul 22 15:47:24 2011 +0200 + + Add deprecation guard to G_UNICODE_COMBINING_MARK + + ...since it's deprecated now and documented as such. + + glib/gunicode.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit 4f36eb0f6d1eed7b720a53114e60c8d334782fab +Author: Ryan Lortie +AuthorDate: Fri Jul 22 12:57:59 2011 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jul 22 15:47:24 2011 +0200 + + Reword some docs comments to avoid 'Returns ...' + + If gtk-doc sees 'Returns ...' written in the text of the documentation + for a macro, it thinks that you are talking about the return value. + + Avoid doing that and use 'Returns:' explicitly if we mean to. + + glib/gmessages.h | 21 +++++++++++++-------- + glib/gutils.h | 10 +++++++--- + 2 files changed, 20 insertions(+), 11 deletions(-) + +commit a0ed2537184f35e9cdde9ac2771f32667db570e1 +Author: Ryan Lortie +AuthorDate: Fri Jul 22 12:57:06 2011 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jul 22 15:47:24 2011 +0200 + + move 'Since:' tags down + + gtk-doc wants the Since: tag to be the absolute last thing in the docs + comment. + + glib/gkeyfile.c | 3 +-- + glib/gmain.c | 4 ++-- + 2 files changed, 3 insertions(+), 4 deletions(-) + +commit eec69a75eeddc9e298f218e5b3e4bb5084adfe6f +Author: Xavier Claessens +AuthorDate: Thu Jul 14 10:51:06 2011 +0200 +Commit: Xavier Claessens +CommitDate: Fri Jul 22 10:19:48 2011 +0200 + + Add g_ptr_array_new_full + + Fixes bug #654450 + + docs/reference/glib/glib-sections.txt | 1 + + glib/garray.c | 28 ++++++++++++++++++++++++++++ + glib/garray.h | 2 ++ + 3 files changed, 31 insertions(+) + +commit 7df304a2d8c325726a13e072bcd1b647943928eb +Author: Ryan Lortie +AuthorDate: Fri Jul 22 09:48:34 2011 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jul 22 09:48:34 2011 +0200 + + Bump the version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a6c936c45fd959117e24a4e7b6f01f124963bf72 +Author: Ryan Lortie +AuthorDate: Fri Jul 22 08:55:35 2011 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jul 22 08:55:35 2011 +0200 + + Release 2.29.14 + + NEWS | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 50 insertions(+), 1 deletion(-) + +commit b30ca6e5a57fd40cf8f94ef2869e742498bc0577 +Author: Behdad Esfahbod +AuthorDate: Thu Jul 21 16:05:43 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Thu Jul 21 16:07:18 2011 -0400 + + Bug 655076 - Our normalization code misses some + Full_Composition_Exclusion=True. + + glib/gen-unicode-tables.pl | 4 ++++ + glib/tests/unicode.c | 16 ++++++++++++++++ + 2 files changed, 20 insertions(+) + +commit c404dbed11bc8bf4212d15719ef3a87ebf76efff +Author: David Zeuthen +AuthorDate: Thu Jul 21 16:03:27 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu Jul 21 16:06:18 2011 -0400 + + gdbus-codegen: Add support for new org.gtk.GDBus.C.UnixFD annotation + + Also add convenience _with_unix_fd_list variants to GDBusConnection, + GDBusProxy and GDBusMethodInvocation types to easily support this. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 21 +- + docs/reference/gio/gio-sections.txt | 7 + + gio/gdbus-codegen/codegen.py | 148 ++++++++-- + gio/gdbusconnection.c | 557 + ++++++++++++++++++++++++----------- + gio/gdbusconnection.h | 30 ++ + gio/gdbusmethodinvocation.c | 76 +++-- + gio/gdbusmethodinvocation.h | 3 + + gio/gdbusproxy.c | 495 + ++++++++++++++++++++++--------- + gio/gdbusproxy.h | 23 ++ + gio/gio.symbols | 7 + + gio/tests/test-codegen.xml | 8 + + 11 files changed, 1012 insertions(+), 363 deletions(-) + +commit 7b22a8308f2a914b704051cd772edfa15e9a3b04 +Author: Dan Williams +AuthorDate: Wed Jul 20 17:28:20 2011 -0500 +Commit: Dan Williams +CommitDate: Thu Jul 21 11:03:32 2011 -0500 + + Document how to free return values from g_key_file_get_*_list + + Makes the docs consistent with the string list getters. Add + GOI annotations while we're at it. + + glib/gkeyfile.c | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +commit 3af40c204dab8fbd3bec0dceb7cbed0896178a4b +Author: Behdad Esfahbod +AuthorDate: Thu Jul 21 10:30:36 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Thu Jul 21 10:33:00 2011 -0400 + + Bug 655025 - #define G_UNICODE_SPACING_MARK G_UNICODE_COMBINING_MARK + + glib/gunicode.h | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +commit 03f673abc20693b907d5e4f1deb775737774d7ae +Author: David Zeuthen +AuthorDate: Thu Jul 21 09:43:59 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu Jul 21 09:43:59 2011 -0400 + + GDBus: Don't convert GVariant type 'h' to gint + + The code-generator already uses GVariant* so generated code didn't + really work at all. We want that instead of gint to avoid confusion + because a 'h' instance is an _index_ into a GUnixFDList, not a file + descriptor. + + Signed-off-by: David Zeuthen + + gio/gdbusutils.c | 16 ++-------------- + 1 file changed, 2 insertions(+), 14 deletions(-) + +commit 419bfe325c40604268dbb7fa050e355c9681577e +Author: David Zeuthen +AuthorDate: Thu Jul 21 09:32:38 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu Jul 21 09:32:38 2011 -0400 + + gdbus-codegen: Use G_TYPE_STRV/gchar** for GVariant type 'ao' + + This is possible now that we have better support for object path + arrays, see + + http://git.gnome.org/browse/glib/commit/?id=19878998bc386db78614f1c92ff8524a81479c7b + + Note that this breaks the ABI of generated code but since + gdbus-codegen(1) has never yet been in a stable GLib release, this is + fine. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 3 ++- + gio/gdbus-codegen/codegen.py | 2 ++ + gio/gdbus-codegen/dbustypes.py | 8 ++++++++ + gio/gdbusutils.c | 15 ++++++++++++++- + gio/tests/gdbus-test-codegen.c | 24 +++++++++++++----------- + 5 files changed, 39 insertions(+), 13 deletions(-) + +commit b34eac204f54cefaf8a702a96dc537144f8c2d92 +Author: Simon McVittie +AuthorDate: Thu Jul 21 10:22:01 2011 +0100 +Commit: Simon McVittie +CommitDate: Thu Jul 21 10:22:01 2011 +0100 + + g_atomic_int_add: document that the return value is new + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=654988 + Reviewed-by: Matthias Clasen + + glib/gatomic.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 79b80579282b2749a9eafe8b95845f434db95969 +Author: Ryan Lortie +AuthorDate: Thu Jul 21 09:21:18 2011 +0200 +Commit: Ryan Lortie +CommitDate: Thu Jul 21 09:21:18 2011 +0200 + + Advise against using GPrivate + + GStaticPrivate is really a lot better in almost every way. + + glib/gthread.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 706b2751166bb8590e41800d0b3c3056ba529daa +Author: Ryan Lortie +AuthorDate: Thu Jul 21 08:33:50 2011 +0200 +Commit: Ryan Lortie +CommitDate: Thu Jul 21 08:37:27 2011 +0200 + + GParam: try to avoid further invalid uses + + In an attempt to avoid some potential future abuses of the GParamSpec + API, qualify the 'name' field of the structure as 'const' and add a + comment noting that it is an interned string. + + This is a theoretical API break, but it will only ever result in + warnings -- and even then, only if you were already doing something + questionable. + + Clean up some of the warnings that were caused internally in gparam.c + from these changes. + + gobject/gparam.c | 39 ++++++++++++++++++++++----------------- + gobject/gparam.h | 2 +- + 2 files changed, 23 insertions(+), 18 deletions(-) + +commit 9bcb3d74572cf99a17ff5a1fd4becb1a1136291c +Author: Behdad Esfahbod +AuthorDate: Wed Jul 20 22:11:08 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Wed Jul 20 22:12:03 2011 -0400 + + Add g_unicode_script_from_iso15924() + + And adjust g_unicode_script_to_iso1592(). + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gunicode.h | 1 + + glib/guniprop.c | 43 + +++++++++++++++++++++++++++++++++-- + glib/tests/unicode.c | 9 ++++++-- + 5 files changed, 51 insertions(+), 4 deletions(-) + +commit a5e94cbd36304ac48e20599ad39fd4bfbd6a5cbe +Author: Benjamin Otte +AuthorDate: Thu Jul 21 02:56:05 2011 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jul 21 02:58:15 2011 +0200 + + glocalfile: Fix compilation without USE_STATFS and USE_STATVFS + + gio/glocalfile.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit 7e03b28870a514e655f31298d31158a69f11de40 +Author: Behdad Esfahbod +AuthorDate: Wed Jul 20 19:04:29 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Wed Jul 20 19:13:19 2011 -0400 + + Bug 648271 - Add g_unicode_script_to_iso15924() + + Add g_unicode_script_to_iso15924() and tests. + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gunicode.h | 2 + + glib/guniprop.c | 146 + +++++++++++++++++++++++++++++++++- + glib/tests/unicode.c | 8 ++ + 5 files changed, 157 insertions(+), 1 deletion(-) + +commit d8d67d1596ed9fd394bb0427e9154bfad9b4b504 +Author: Daniel Mustieles +AuthorDate: Wed Jul 20 22:32:38 2011 +0200 +Commit: Daniel Mustieles +CommitDate: Wed Jul 20 22:32:38 2011 +0200 + + Updated Spanish translation + + po/es.po | 207 + ++++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 133 insertions(+), 74 deletions(-) + +commit e43a2969114e91332b127a479bcb078be6649353 +Author: Daniel Mustieles +AuthorDate: Wed Jul 20 22:26:59 2011 +0200 +Commit: Daniel Mustieles +CommitDate: Wed Jul 20 22:26:59 2011 +0200 + + Updated Spanish translation + + po/es.po | 637 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 316 insertions(+), 321 deletions(-) + +commit 8cadef1a88abf77569da2e65894a855b0f1376d4 +Author: Ryan Lortie +AuthorDate: Wed Jul 20 21:49:16 2011 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jul 20 21:50:52 2011 +0200 + + Change order of GFormatSizeFlags + + David requested that I change the order of the flags. + + Also, assign numerical values to the flags in the usual way. This + wasn't a bug yet, but only by chance. + + glib/gfileutils.c | 6 +++--- + glib/gfileutils.h | 6 +++--- + 2 files changed, 6 insertions(+), 6 deletions(-) + +commit c26462ab98e47fd629177d52984b69055f8fe37a +Author: Ryan Lortie +AuthorDate: Wed Jul 20 21:47:00 2011 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jul 20 21:47:53 2011 +0200 + + g_format_size: just use GString + + Matthias wasn't too impressed by the homebrew stack-allocated string + building I + was doing. + + Switch to GString. + + glib/gfileutils.c | 81 + +++++++++++++++++++++++-------------------------------- + 1 file changed, 34 insertions(+), 47 deletions(-) + +commit 4aff6119812bb1dac40a6fca4833dab0520148d9 +Author: Ryan Lortie +AuthorDate: Wed Jul 20 21:30:03 2011 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jul 20 21:30:03 2011 +0200 + + g_format_size: Return 'gchar' instead of 'char' + + I meant to do that in the first place. + + glib/gfileutils.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ef3e5917ca1239b39db2cb433c4306d0152f18f5 +Author: Ryan Lortie +AuthorDate: Wed Jul 20 19:58:43 2011 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jul 20 20:06:35 2011 +0200 + + [ast, es, fr, nn] Update byte unit translations + + The Asturian, French, Norwegian Nynorsk and Spanish translations + incorrectly translated "MB" and friends to "MiB" (french: "Mio"), etc. + + This was in response to the incorrect use of "MB" in the (now + deprecated) g_format_size_for_display() function. + + These strings are now used (correctly) in g_format_size(), so I have + updated the translations accordingly. + + Additionally, the Norwegian Nynorsk translation was incorrectly + translating several larger units to "KiB", so that has been + corrected as + well. + + po/ast.po | 6 +++--- + po/es.po | 12 ++++++------ + po/fr.po | 12 ++++++------ + po/nn.po | 12 ++++++------ + 4 files changed, 21 insertions(+), 21 deletions(-) + +commit afd1e3697065c1bd23fe9a1cacf43d8744d0bc9b +Author: Ryan Lortie +AuthorDate: Wed Jul 20 19:44:39 2011 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jul 20 20:06:35 2011 +0200 + + Change GLib size units policy + + This commit changes GLib size units policy. We now prefer SI + units and + allow for use of proper IEC units where desired. + + g_format_size_for_display() which incorrectly mixed IEC units with SI + suffixes is left unmodified, but has been deprecated. + + g_format_size() has been introduced which uses SI units and suffixes. + + g_format_size_full() has also been added which takes a flags + argument to + allow for use of IEC units (with correct suffixes). It also + allows for + a "long format" output which includes the total number of bytes. For + example: "238.5 MB (238,472,938 bytes)". + + docs/reference/glib/glib-sections.txt | 5 + + glib/gfileutils.c | 193 + ++++++++++++++++++++++++++++++++++ + glib/gfileutils.h | 13 +++ + glib/glib.symbols | 2 + + glib/tests/fileutils.c | 12 +++ + 5 files changed, 225 insertions(+) + +commit 90cccf14b2b1dfea574d35c605669c4773d6eba6 +Author: Ryan Lortie +AuthorDate: Wed Jul 20 17:30:56 2011 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jul 20 20:06:35 2011 +0200 + + g_format_size_for_display: some internal renames + + Rename the size constants from KILOBYTE to KIBIBYTE (etc.) since + that's + what they really are. + + This is a strictly internal change with no externally-visible + effect in + terms of API or functionality. + + glib/gfileutils.c | 36 ++++++++++++++++++------------------ + 1 file changed, 18 insertions(+), 18 deletions(-) + +commit 4e015d36a06a896c8f5ec575c1b02fedefe47397 +Author: Giovanni Campagna +AuthorDate: Fri Jul 1 01:59:13 2011 +0200 +Commit: Colin Walters +CommitDate: Wed Jul 20 13:50:20 2011 -0400 + + gdbusintrospection: fix introspection annotations + + g_dbus_interface_info_lookup_* were incorrectly considered + (transfer full) by introspected bindings, and this caused memory + corruptions. + + https://bugzilla.gnome.org/show_bug.cgi?id=622921 + + gio/gdbusintrospection.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 4e213f385b45d8ce5d2fdb612d3706e214a7b368 +Author: Vincent Untz +AuthorDate: Wed Jul 20 09:22:12 2011 +0200 +Commit: Vincent Untz +CommitDate: Wed Jul 20 19:42:06 2011 +0200 + + Stop using deprecated g_unicode_canonical_decomposition() + + https://bugzilla.gnome.org/show_bug.cgi?id=654948 + + glib/guniprop.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit 33c977917c1dbcfec56168083dc05837da8ea57c +Author: Ryan Lortie +AuthorDate: Wed Jul 20 16:34:55 2011 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jul 20 16:34:55 2011 +0200 + + GVariant: document avoiding g_variant_iter_loop + + The choice between g_variant_iter_next() and g_variant_iter_loop() + is a + bit confusing for some people. Add a note to the documentation of + g_variant_iter_loop() to clarify that it should be avoided except in a + few specific cases. + + glib/gvariant.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +commit 19878998bc386db78614f1c92ff8524a81479c7b +Author: Ryan Lortie +AuthorDate: Wed Jul 20 13:11:19 2011 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jul 20 16:27:30 2011 +0200 + + GVariant: better support for object path arrays + + Add G_VARIANT_TYPE_OBJECT_PATH_ARRAY along with accessor functions + g_variant_new_objv, g_variant_get_objv and g_variant_dup_objv. + Also add + support for '^ao' and '^a&o' format strings for g_variant_new() and + g_variant_get(). + + https://bugzilla.gnome.org/show_bug.cgi?id=654955 + + docs/reference/glib/glib-sections.txt | 4 + + docs/reference/glib/gvariant-varargs.xml | 39 ++++++- + glib/glib.symbols | 3 + + glib/gvariant.c | 168 + +++++++++++++++++++++++++++++-- + glib/gvariant.h | 6 ++ + glib/gvarianttype.h | 7 ++ + glib/tests/gvariant.c | 53 ++++++++++ + 7 files changed, 270 insertions(+), 10 deletions(-) + +commit c841c2ce3fda6f754c88ae2c9099f36dff2f0814 +Author: Ryan Lortie +AuthorDate: Wed Jul 20 14:04:52 2011 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jul 20 14:06:36 2011 +0200 + + GSettings: don't abort on missing schemas + + Give a g_critical instead. + + gio/gsettings.c | 77 + ++++++++++++++++++++++++++++++++++++++++----------- + gio/gsettingsschema.c | 5 +++- + gio/tests/gsettings.c | 26 +++++++++++++++++ + 3 files changed, 91 insertions(+), 17 deletions(-) + +commit 06941419e347a8a37711e65873b6c59729873ddc +Author: Ryan Lortie +AuthorDate: Wed Jul 20 10:52:07 2011 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jul 20 10:52:07 2011 +0200 + + Add some blacklisted mount directories + + Another long-carried Debian patch. No reason that we should not have + these few extra items in the (already long) upstream list. + + gio/gunixmounts.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit dbd0d63b6b45036c2b485b8e1993edf97970afd2 +Author: Ryan Lortie +AuthorDate: Wed Jul 20 10:49:48 2011 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jul 20 10:51:16 2011 +0200 + + wait longer in threadpool test case + + If we are going to fail an assert, wait for a bit longer before + doing so + (up to 5 seconds, if needed). + + This is a long-standing Debian patch to fix build failures on really + slow machines. + + tests/threadpool-test.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +commit 265f245376a3af5a006854ee96a484cf30fbc170 +Author: Matthias Clasen +AuthorDate: Tue Jul 19 23:04:04 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 19 23:04:04 2011 -0400 + + post-release bump + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c073ce3a3b8fb8282b244dd8e8dbb6fa8676e84e +Author: Matthias Clasen +AuthorDate: Tue Jul 19 23:02:05 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 19 23:02:05 2011 -0400 + + 2.29.12 + + NEWS | 35 +++++++++++++++++++++++++++++++++++ + configure.ac | 2 +- + 2 files changed, 36 insertions(+), 1 deletion(-) + +commit 4c64e75ec59317cf36d2bb9765c56477acf2acd7 +Author: Matthias Clasen +AuthorDate: Tue Jul 19 20:40:28 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 19 20:40:28 2011 -0400 + + Drop the warnings.sgml template + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/warnings.sgml | 236 + --------------------------------- + glib/gbacktrace.c | 63 +++++++++ + glib/gbacktrace.h | 18 +-- + glib/gmessages.c | 124 +++++++++++++---- + glib/gmessages.h | 81 +++++++++-- + 6 files changed, 238 insertions(+), 285 deletions(-) + +commit d1e5161ab0206adc6f17325152e337d44ae6ec73 +Author: Holger Berndt +AuthorDate: Thu Jun 3 03:22:36 2010 +0200 +Commit: Holger Berndt +CommitDate: Tue Jul 19 22:52:56 2011 +0200 + + Document how to unset attributes + + Unsetting won't work on all attributes. Currently, only + metadata attributes are supported. + + https://bugzilla.gnome.org/show_bug.cgi?id=620423 + + gio/gfile.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit ec98953e42a20061427b20681d1e31501907e2fa +Author: Johan Dahlin +AuthorDate: Tue Jul 19 14:18:10 2011 -0300 +Commit: Johan Dahlin +CommitDate: Tue Jul 19 14:38:34 2011 -0300 + + Pass in NULL instead of g_cclosure_marshal_generic + + NULL is now a shortcut for g_cclosure_marshal_generic, so avoid + referencing it directly. + + https://bugzilla.gnome.org/show_bug.cgi?id=654917 + + gio/gactiongroup.c | 4 ++-- + gio/gapplication.c | 4 ++-- + gio/gdbusauthobserver.c | 2 +- + gio/gdbusconnection.c | 2 +- + gio/gdbusinterfaceskeleton.c | 2 +- + gio/gdbusobjectmanager.c | 4 ++-- + gio/gdbusobjectmanagerclient.c | 4 ++-- + gio/gdbusobjectskeleton.c | 2 +- + gio/gdbusproxy.c | 4 ++-- + gio/gdbusserver.c | 2 +- + gio/gfilemonitor.c | 2 +- + gio/gmountoperation.c | 6 +++--- + gio/gsettings.c | 4 ++-- + gio/gsocketservice.c | 2 +- + gio/gthreadedsocketservice.c | 2 +- + gio/gtlsconnection.c | 2 +- + 16 files changed, 24 insertions(+), 24 deletions(-) + +commit fa2861e3b6109e002b68aa105b5ecbcba88724c1 +Author: Johan Dahlin +AuthorDate: Tue Jul 12 13:39:45 2011 -0300 +Commit: Johan Dahlin +CommitDate: Tue Jul 19 14:38:34 2011 -0300 + + Use a generic marshaller if one is not specified + + Since g_cclosure_marshal_generic is always enabled, it makes + sense to always use that instead of using generated ones. + + https://bugzilla.gnome.org/show_bug.cgi?id=654917 + + gobject/gsignal.c | 31 +++++++++++++++++++++++-------- + 1 file changed, 23 insertions(+), 8 deletions(-) + +commit fe6dad271b06e6243d17137c2e0991f56a256cca +Author: Ryan Lortie +AuthorDate: Tue Jul 19 16:12:30 2011 +0200 +Commit: Ryan Lortie +CommitDate: Tue Jul 19 16:12:30 2011 +0200 + + GSettings: remove key length restrictions + + The key length now stands effectively unlimited at 1024 characters. + + https://bugzilla.gnome.org/show_bug.cgi?id=654536 + + gio/glib-compile-schemas.c | 4 ++-- + gio/gsettings.c | 3 +-- + 2 files changed, 3 insertions(+), 4 deletions(-) + +commit 9fd0f6c8e23e8cd8353039c99fa73583a7892b4f +Author: Matthias Clasen +AuthorDate: Tue Jul 19 00:02:57 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 19 00:02:57 2011 -0400 + + Fix doc formatting errors + + glib/gunicode.h | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit c9379bcfe1423c43b09ea7e979242a3621dab2b2 +Author: Matthias Clasen +AuthorDate: Mon Jul 18 23:58:32 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 18 23:58:32 2011 -0400 + + Move GError docs inline and ditch template + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/error_reporting.sgml | 531 + -------------------------- + glib/gerror.c | 324 ++++++++++++++++ + glib/gerror.h | 9 + + 4 files changed, 334 insertions(+), 531 deletions(-) + +commit 09e2d2a61c3e9f93f61f5d94b3976bbc4a16839a +Author: Matthias Clasen +AuthorDate: Mon Jul 18 23:23:17 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 18 23:23:17 2011 -0400 + + Move Unicode docs inline, ditch template + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/unicode.sgml | 908 + ---------------------------------- + glib/gunicode.h | 424 +++++++++++++--- + glib/gunidecomp.c | 23 + + 4 files changed, 372 insertions(+), 984 deletions(-) + +commit 2358616d6ad5c4db4fb037550eb40aeb8886e7ec +Author: Matthias Clasen +AuthorDate: Mon Jul 18 23:00:09 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 18 23:00:09 2011 -0400 + + Remove queue.sgml + + docs/reference/glib/tmpl/queue.sgml | 438 + ------------------------------------ + 1 file changed, 438 deletions(-) + +commit 615977d337c7ba776ac2eda6c688bf6f69316c4d +Author: Behdad Esfahbod +AuthorDate: Mon Jul 18 18:00:40 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Mon Jul 18 18:12:35 2011 -0400 + + Simplify Hangul Jamo decomposition + + The algorithm is not copy/paste from Unicode anymore, but it's easy + enough to follow the logic. + + glib/gunidecomp.c | 62 + +++++++++++++++++-------------------------------------- + 1 file changed, 19 insertions(+), 43 deletions(-) + +commit 0584fe33de86f9fd8effe006d911cf5948b4ad05 +Author: Behdad Esfahbod +AuthorDate: Mon Jul 18 17:52:40 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Mon Jul 18 18:12:35 2011 -0400 + + Bug 654651 - Better g_unicode_canonical_decomposition() + + Add g_unichar_fully_decompose(). + Deprecate g_unicode_canonical_decomposition(). + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 3 +- + glib/gunicode.h | 9 ++-- + glib/gunidecomp.c | 78 + ++++++++++++++++++++++++++++++++--- + glib/tests/unicode.c | 66 ++++++++++++++++++++++++++++- + 5 files changed, 147 insertions(+), 10 deletions(-) + +commit 7f289c924bdc78bff9b5a96cf9e7c0ed943d64c6 +Author: Patrick Welche +AuthorDate: Mon Jul 18 17:58:01 2011 +0100 +Commit: Colin Walters +CommitDate: Mon Jul 18 14:17:28 2011 -0400 + + Avoid failing arguments to statfs() test on systems which use statvfs. + + - move choice of statfs vs statvfs from gio/glocalfile.c to + configure.ac + - if statvfs is the choice, then don't check number of arguments + to statfs() + - use choice in gio/gunixmounts.c as well + + https://bugzilla.gnome.org/show_bug.cgi?id=617949 + + configure.ac | 30 +++++++++++++++++++++++++++++- + gio/glocalfile.c | 22 ---------------------- + gio/gunixmounts.c | 32 +++++++++++++++++++++++++++++--- + 3 files changed, 58 insertions(+), 26 deletions(-) + +commit 75b30dc51c3926392483094a6228a3646a43e798 +Author: Benjamin Otte +AuthorDate: Mon Jul 18 14:10:35 2011 +0200 +Commit: Benjamin Otte +CommitDate: Mon Jul 18 14:10:35 2011 +0200 + + gtester: Count inability to run a test in a binary as a failure + + Previously, when a binary did not run a single test - for whatever + reason, from the binary not existing to the binary not using the + gtester + framework - no failures were recorded. Now we record a non-successful + run of a binary that did not start any tests as a failure, too. + + Note that this does not change the behavior of any binaries that exit + successfully or that report the start of any gtester test. + + glib/gtester.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 4a25d6002341df796e13643695478a4ecb4c7a49 +Author: Benjamin Otte +AuthorDate: Mon Jul 18 13:39:36 2011 +0200 +Commit: Benjamin Otte +CommitDate: Mon Jul 18 13:41:26 2011 +0200 + + gtester: Return a failure exit code when a test fails + + Previously, gtester used the testcase_fail_count as the number + of tests + that failed in the latest run testcase, but then use that as the + return + value of main(). + + Now we count the failed testcases of the whole run. + + glib/gtester.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit dd1316ba92eba170bcba0425ec1b55faeb2bceed +Author: Kjartan Maraas +AuthorDate: Mon Jul 18 13:13:11 2011 +0200 +Commit: Kjartan Maraas +CommitDate: Mon Jul 18 13:13:11 2011 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 693 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 362 insertions(+), 331 deletions(-) + +commit adc325fac0b1b8b0a8c21384f50fc759d2800572 +Author: Matthias Clasen +AuthorDate: Sun Jul 17 23:50:31 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 17 23:50:31 2011 -0400 + + Move version docs inline + + docs/reference/glib/tmpl/.gitignore | 2 + + docs/reference/glib/tmpl/version.sgml | 115 + ---------------------------------- + glib/gutils.c | 40 ++++++++++++ + glib/gutils.h | 18 ++++++ + 4 files changed, 60 insertions(+), 115 deletions(-) + +commit 20cd4936b9d16ee8121d7082d359a76af65081db +Author: Matthias Clasen +AuthorDate: Sun Jul 17 23:38:58 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 17 23:38:58 2011 -0400 + + Move GQueue docs inline + + glib/gqueue.c | 25 ++++++++++++++++ + glib/gqueue.h | 91 + +++++++++++++++++++++++++++++++++++++---------------------- + 2 files changed, 82 insertions(+), 34 deletions(-) + +commit d3b09eee75f0f433779b0b6a6d9222453bc9df16 +Author: Tommi Vainikainen +AuthorDate: Mon Jul 18 00:45:45 2011 +0300 +Commit: Tommi Vainikainen +CommitDate: Mon Jul 18 00:45:45 2011 +0300 + + Updated Finnish translation + + po/fi.po | 1485 + +++++++++++++++++++++++++------------------------------------- + 1 file changed, 603 insertions(+), 882 deletions(-) + +commit d6c30e1766c975dd79e6f252d73c6c0581b64b01 +Author: Ryan Lortie +AuthorDate: Thu Jul 14 18:08:25 2011 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jul 15 10:23:11 2011 +0200 + + GParamSpec: intern property names + + Make it so that the ->name property on all GParamSpec objects is an + interned string. + + https://bugzilla.gnome.org/show_bug.cgi?id=654627 + + gobject/gparam.c | 18 ++++++++++++------ + gobject/gparam.h | 2 +- + 2 files changed, 13 insertions(+), 7 deletions(-) + +commit 7041b701dd9fd4f617ca762860447d8fc015a2ab +Author: Behdad Esfahbod +AuthorDate: Thu Jul 14 16:53:12 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Thu Jul 14 16:55:35 2011 -0400 + + Remove comp_step_table table + + Reuse the pre-existing composition data. + + glib/gen-unicode-tables.pl | 15 +- + glib/gunidecomp.c | 66 +-- + glib/gunidecomp.h | 1020 + -------------------------------------------- + 3 files changed, 3 insertions(+), 1098 deletions(-) + +commit 89a5d17d58c795f835642483bfbd9af6cf09f9fe +Author: Behdad Esfahbod +AuthorDate: Thu Jul 14 16:26:58 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Thu Jul 14 16:55:35 2011 -0400 + + Document, that the second part of a decompose() wouldn't decompose() + + This is not directly documented in Unicode, or I couldn't find it, + but the test I just added confirms that it is currently the case. + + glib/gunidecomp.c | 7 +++++++ + glib/tests/unicode.c | 16 ++++++++++++++++ + 2 files changed, 23 insertions(+) + +commit f4cf6c3db03440bb42771cf4b43f6c0f3b688e5f +Author: Behdad Esfahbod +AuthorDate: Thu Jul 14 16:22:16 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Thu Jul 14 16:55:35 2011 -0400 + + [test] Move non-utf8 tests into unicode.c + + glib/tests/Makefile.am | 3 + + glib/tests/unicode.c | 548 + +++++++++++++++++++++++++++++++++++++++++++++++++ + glib/tests/utf8-misc.c | 513 + --------------------------------------------- + 3 files changed, 551 insertions(+), 513 deletions(-) + +commit cff4b5b3a3bceeccd63a895ed795c31f7a20fcf0 +Author: Behdad Esfahbod +AuthorDate: Thu Jul 14 16:19:46 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Thu Jul 14 16:55:35 2011 -0400 + + Remove stale comment + + Unicode guarantees that. + + glib/gunidecomp.c | 3 --- + 1 file changed, 3 deletions(-) + +commit a73c66b1344c852c18279ba43e951cc71c5839a3 +Author: Behdad Esfahbod +AuthorDate: Thu Jul 14 16:18:30 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Thu Jul 14 16:55:35 2011 -0400 + + Add tests for Unicode canonical composition/decomposition + + Also update compose()/decompose() API corner cases and docs. + + glib/gunidecomp.c | 25 ++++++++++-- + glib/tests/utf8-misc.c | 107 + ++++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 128 insertions(+), 4 deletions(-) + +commit 7ad2f0eb803dee72beb49dc9a22d2b9578d2e8b8 +Author: Behdad Esfahbod +AuthorDate: Wed Jul 13 23:18:53 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Thu Jul 14 16:55:35 2011 -0400 + + Move declarations around + + So g_unichar API comes before g_utf8. + + glib/gunicode.h | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 761a1841eebedefeb7dc3675e442a56309f347c9 +Author: Matthias Clasen +AuthorDate: Wed Jul 13 22:07:11 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Thu Jul 14 16:55:34 2011 -0400 + + Bug 654195 - Add g_unichar_compose() and g_unichar_decompose() + + docs/reference/glib/glib-sections.txt | 2 + + glib/gen-unicode-tables.pl | 40 + + glib/glib.symbols | 2 + + glib/gunicode.h | 9 + + glib/gunidecomp.c | 189 +- + glib/gunidecomp.h | 3080 + +++++++++++++++++++++++++++++++++ + 6 files changed, 3321 insertions(+), 1 deletion(-) + +commit 8c7de592ff961410de0e8507d2334b4f18bc9a58 +Author: Ihar Hrachyshka +AuthorDate: Wed Jul 13 23:36:37 2011 +0300 +Commit: Ihar Hrachyshka +CommitDate: Wed Jul 13 23:36:37 2011 +0300 + + Updated Belarusian translation. + + po/be.po | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit f45631bebc62b60dec1e1021923a0dc27d9e2be3 +Author: Ihar Hrachyshka +AuthorDate: Wed Jul 13 23:30:49 2011 +0300 +Commit: Ihar Hrachyshka +CommitDate: Wed Jul 13 23:34:21 2011 +0300 + + Updated Belarusian translation. + + po/be.po | 44 +++++++++++++++++++++----------------------- + 1 file changed, 21 insertions(+), 23 deletions(-) + +commit 09bba9fc60eb5d8c3156a0e907856a12037fe36a +Author: Aurimas Černius +AuthorDate: Tue Jul 12 23:21:25 2011 +0300 +Commit: Aurimas Černius +CommitDate: Tue Jul 12 23:21:25 2011 +0300 + + Updated Lithuanian translation + + po/lt.po | 2113 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 1095 insertions(+), 1018 deletions(-) + +commit 8926b612c8fce41db5bf72f87cce54f16079cd09 +Author: Changwoo Ryu +AuthorDate: Wed Jul 13 02:51:03 2011 +0900 +Commit: Changwoo Ryu +CommitDate: Wed Jul 13 02:51:40 2011 +0900 + + Updated Korean translation + + po/ko.po | 1172 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 626 insertions(+), 546 deletions(-) + +commit 8f5e0cd24016cdf852a809dfb7b1356328542201 +Author: Ryan Lortie +AuthorDate: Tue Jul 12 02:56:57 2011 +0200 +Commit: Ryan Lortie +CommitDate: Tue Jul 12 19:44:21 2011 +0200 + + GDBusInterfaceSkeleton: fix odd use of floating refs + + The get_properties() function was documented as returning a floating + + Switch it over to returning a normal reference and patch a couple of + uses. + + https://bugzilla.gnome.org/show_bug.cgi?id=654394 + + gio/gdbusinterfaceskeleton.c | 5 ++--- + gio/gdbusinterfaceskeleton.h | 2 +- + gio/gdbusobjectmanagerserver.c | 18 ++++++++++-------- + 3 files changed, 13 insertions(+), 12 deletions(-) + +commit 58c247e51bfc7d7ff4ed3b351ba4fdab0f012bac +Author: Ryan Lortie +AuthorDate: Mon Jul 11 14:27:53 2011 +0200 +Commit: Ryan Lortie +CommitDate: Tue Jul 12 19:44:21 2011 +0200 + + GVariant: add g_variant_take_ref() + + This function implements the following logic: + + if (g_variant_is_floating (value)) + g_variant_ref_sink (value); + + which is used for consuming the return value of callbacks that may or + may not return floating references. + + This patch also replaces a few instances of the above code with + the new + function (GSettings, GDBus) and lifts a long-standing restriction + on the + use of floating values as the return value for signal handlers by + improving g_value_take_variant(). + + https://bugzilla.gnome.org/show_bug.cgi?id=627974 + + docs/reference/glib/glib-sections.txt | 1 + + gio/gdbus-codegen/codegen.py | 3 +-- + gio/gdbusconnection.c | 6 ++--- + gio/gsettings.c | 3 +-- + glib/glib.symbols | 1 + + glib/gvariant-core.c | 51 + ++++++++++++++++++++++++++++++++++- + glib/gvariant.h | 1 + + gobject/gvaluetypes.c | 14 +++++----- + 8 files changed, 64 insertions(+), 16 deletions(-) + +commit 2121e56ea7399091f6ef169a1da8a11aaa64b5c3 +Author: Rudolfs Mazurs +AuthorDate: Tue Jul 12 16:29:33 2011 +0300 +Commit: Peteris Krisjanis +CommitDate: Tue Jul 12 16:29:33 2011 +0300 + + Updated Latvian translation. + + po/lv.po | 3578 + ++++++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 2288 insertions(+), 1290 deletions(-) + +commit bbe7eb09ec71b519adf50ef35bee28d5a1a8e1bd +Author: Murray Cumming +AuthorDate: Tue Jul 12 12:09:31 2011 +0200 +Commit: Murray Cumming +CommitDate: Tue Jul 12 12:09:31 2011 +0200 + + Docs: Fixed a typo. + + gio/gappinfo.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 7654a848e2b575eaf278fafe05aa5be1b3afdc26 +Author: Tim-Philipp Müller +AuthorDate: Tue Jul 5 14:30:31 2011 +0100 +Commit: Matthias Clasen +CommitDate: Mon Jul 11 00:08:14 2011 -0400 + + tests: fix glib_translations_work() + + If setlocale() to our test locale fails, translations + won't work either. + + https://bugzilla.gnome.org/show_bug.cgi?id=654017 + + gio/tests/gsettings.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit 5eee90fbbc76ee129d7f846633a667889149ab03 +Author: Paolo Bonzini +AuthorDate: Thu Apr 15 08:23:00 2010 +0200 +Commit: Matthias Clasen +CommitDate: Mon Jul 11 00:02:22 2011 -0400 + + add g_regex_escape_nul + + The function can be used to let regex compile non-NUL-terminated + strings without redesigning the way the pattern is stored in GRegex + objects and retrieved with g_regex_get_pattern. + + https://bugzilla.gnome.org/show_bug.cgi?id=615895 + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gregex.c | 68 + +++++++++++++++++++++++++++++++++++ + glib/gregex.h | 2 ++ + glib/tests/regex.c | 42 ++++++++++++++++++++++ + 5 files changed, 114 insertions(+) + +commit 653c2f701a3e0a07a808f4e4fca7b846c50c93fa +Author: Matthias Clasen +AuthorDate: Sun Jul 10 23:55:52 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 10 23:55:52 2011 -0400 + + Fix gtk-doc cross-linking among glib/gobject/gio + + Patch by Daniel Macks, bug 644687. + + docs/reference/gio/Makefile.am | 3 +++ + docs/reference/glib/Makefile.am | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) + +commit 2caddda5341a9a89ccaff4fdb04d638d54a8c635 +Author: Matthias Clasen +AuthorDate: Sun Jul 10 23:11:30 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 10 23:11:30 2011 -0400 + + Take out the timeout from the large-message test + + This is an attempt to make the test not fail on build slaves, + which currently getting a timeout error here. + + gio/tests/gdbus-connection-slow.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 436dbe77444f54bb8fcf7e55085dc60e1fc627a3 +Author: Matthias Clasen +AuthorDate: Sun Jul 10 21:57:45 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 10 21:57:45 2011 -0400 + + Don't test negative values in ulong conversions + + This is failing on 32bit build slaves. + + gobject/tests/param.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 7c517bf3501ae68c4a87c8a126955281ad2393b2 +Author: Martin Storsjo +AuthorDate: Wed Jul 6 16:41:44 2011 +0300 +Commit: Matthias Clasen +CommitDate: Sun Jul 10 20:47:02 2011 -0400 + + Don't needlessly use "echo -e" + + The -e parameter to echo isn't recognized by echo in POSIX sh, + but isn't needed when no escaped characters need to be + interpreted. + + This fixes building glib with a mingw cross compiler on Mac OS X. + + https://bugzilla.gnome.org/show_bug.cgi?id=654085 + + gio/Makefile.am | 2 +- + glib/Makefile.am | 2 +- + gmodule/Makefile.am | 2 +- + gobject/Makefile.am | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +commit 98b667d052b1274f80b8898a32d0753e9e2e5c1a +Author: Matthias Clasen +AuthorDate: Sun Jul 10 20:42:58 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 10 20:42:58 2011 -0400 + + Optimize g_[s]list_free_full a bit + + No need to iterate the list twice. + Proposed by Luiz Augusto von Dentz, + http://bugzilla.gnome.org/show_bug.cgi?id=653935 + + glib/glist.c | 11 ++++++++--- + glib/gslist.c | 17 +++++++++++------ + 2 files changed, 19 insertions(+), 9 deletions(-) + +commit 182ed958618a098895eb07959c0fb77eb5dcd13c +Author: Colin Walters +AuthorDate: Sun Jul 10 12:19:15 2011 -0400 +Commit: Colin Walters +CommitDate: Sun Jul 10 12:19:15 2011 -0400 + + GCancellable: Make eventfd() fall back to pipes on EINVAL too + + https://bugzilla.gnome.org/show_bug.cgi?id=654232 + + gio/gcancellable.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 6079443b4871040b40271d078311500e51f5ec69 +Author: Javier Jardón +AuthorDate: Fri Jul 8 16:15:52 2011 +0100 +Commit: Javier Jardón +CommitDate: Fri Jul 8 16:16:27 2011 +0100 + + docs: G_GNUC_DEPRECATED_FOR was added in Glib 2.26 + + docs/reference/glib/tmpl/macros_misc.sgml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a3557577ef15054a062b0a42363f9b1eaf50ae68 +Author: Muhammet Kara +AuthorDate: Fri Jul 8 01:09:03 2011 +0300 +Commit: Muhammet Kara +CommitDate: Fri Jul 8 01:09:03 2011 +0300 + + [l10n]Updated Turkish translation + + po/tr.po | 1274 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 654 insertions(+), 620 deletions(-) + +commit 7e855ef4616c22210354b3ac1d2d48808fa02b16 +Author: Abduxukur Abdurixit +AuthorDate: Thu Jul 7 16:31:17 2011 +0200 +Commit: Abduxukur Abdurixit +CommitDate: Thu Jul 7 16:31:17 2011 +0200 + + Added UG translation + + po/ug.po | 439 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 218 insertions(+), 221 deletions(-) + +commit c2dc66ccf2719df9813b0ab97f22af166770f944 +Author: Javier Jardón +AuthorDate: Wed Jul 6 22:13:05 2011 +0100 +Commit: Javier Jardón +CommitDate: Wed Jul 6 22:13:05 2011 +0100 + + Move documentation to inline comments: spawn + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/spawn.sgml | 198 + ------------------------------------ + glib/gspawn.c | 9 ++ + glib/gspawn.h | 82 +++++++++++++++ + glib/gstring.h | 12 +++ + 5 files changed, 104 insertions(+), 198 deletions(-) + +commit 0e27a71899e7e08075e65cfdfa8b73fd3cb00197 +Author: Javier Jardón +AuthorDate: Wed Jul 6 21:49:55 2011 +0100 +Commit: Javier Jardón +CommitDate: Wed Jul 6 21:49:55 2011 +0100 + + Move documentation to inline comments: conversions + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/conversions.sgml | 218 + ------------------------------ + 2 files changed, 1 insertion(+), 218 deletions(-) + +commit 37ab5ced317342137c60c90feab26e1ac69b6285 +Author: Dan Winship +AuthorDate: Tue Jun 7 17:15:17 2011 -0400 +Commit: Dan Winship +CommitDate: Wed Jul 6 08:39:38 2011 -0400 + + g_output_stream_splice: deal with overflow + + On 32-bit machines in particular, bytes_written may overflow a gssize. + Notice when that happens and just return G_MAXSSIZE instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=649246 + + gio/goutputstream.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +commit 3b4a42d631b987714c1062c0c879da30fd40c4c7 +Author: Chun-wei Fan +AuthorDate: Wed Jul 6 09:58:37 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Jul 6 09:58:37 2011 +0800 + + Revert distribution of build/win32/setup.py + + Revert commit on distribution of this file as it is meant to be + used in + a GIT checkout only. + + build/win32/Makefile.am | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit f18ba785cad59cbcae640d30b4cc40af9f020310 +Author: Chun-wei Fan +AuthorDate: Wed Jul 6 08:28:57 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Jul 6 08:28:57 2011 +0800 + + Add build/win32/setup.py to distribution + + build/win32/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit c83c91a57486fc684ca3d884d6e288972e8b82a7 +Author: Chun-wei Fan +AuthorDate: Wed Jul 6 08:25:41 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Jul 6 08:25:41 2011 +0800 + + Bug 653841: Update README.win32 and VS README.txt's + + This relates to my previous commit titled "add a script to generator + files for building" on behalf of Shixin Zeng. + + Tell people about the availability of a python script to create the + necessary files for a Visual C++ build from a GIT checkout. + + This is done with the courtesy of Shixin Zeng's python script + which does + the job and eliminates the troubles of getting a suitable shell + environment + to do the "make dist" job (which is especially not easy on Windows + itself!) + + README.win32 | 705 + ++++++++++++++++++++++---------------------- + build/win32/vs10/README.txt | 11 +- + build/win32/vs9/README.txt | 11 +- + 3 files changed, 372 insertions(+), 355 deletions(-) + +commit 004e2f060fa1865c8c14fdd399c5f8b3d7048289 +Author: Shixin Zeng +AuthorDate: Wed Jun 29 00:04:14 2011 -0500 +Commit: Chun-wei Fan +CommitDate: Wed Jul 6 08:04:08 2011 +0800 + + add a script to generator files for building + + Signed-off-by: Chun-wei Fan + + build/win32/setup.py | 366 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 366 insertions(+) + +commit 65c6ebddee9f913778c1484b9319229486bf5134 +Author: Matthias Clasen +AuthorDate: Tue Jul 5 11:22:11 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 5 11:22:11 2011 -0400 + + Post-release version bump + + Up to 2.29.11 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 89df070c1f0893e4a973aa563213dab2d192d83d +Author: Matthias Clasen +AuthorDate: Tue Jul 5 11:21:40 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 5 11:21:40 2011 -0400 + + 2.29.10 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5f7be6c67d2bda1f6bac2e53c696b90a5a0c8353 +Author: Colin Walters +AuthorDate: Tue Jul 5 10:20:48 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jul 5 10:20:48 2011 -0400 + + build: Use --disable-maintainer-mode for distcheck + + Otherwise due to weird things like gtk-doc.make copying files back + into the source directory, we may run into the maintainer mode + bits mistakenly attempting to rerun. + + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e9d0c82252dab878ea3e631c48c40e97aa4f42ea +Author: Colin Walters +AuthorDate: Tue Jul 5 09:42:39 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jul 5 09:44:13 2011 -0400 + + gio: Fix srcdir != builddir build for docs + + docs/reference/gio/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 0f9c4590d8bb226dad4d93a9a3181ee42ccc8c7a +Author: Matthias Clasen +AuthorDate: Tue Jul 5 09:17:02 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 5 09:17:02 2011 -0400 + + Update NEWS for 2.29.10 + + NEWS | 41 +++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 41 insertions(+) + +commit 9c09a48f57c36ce1ceb458bc7708f9b589239d8a +Author: Matthias Clasen +AuthorDate: Mon Jul 4 16:03:33 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 4 16:04:15 2011 -0400 + + Fix the build + + When renaming a variable from _SCRIPTS to _DATA, it helps to + also rename all references. + + gio/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 34e571c46611a0b07bf3f81cd417b9bca2b7d833 +Author: Matthias Clasen +AuthorDate: Mon Jul 4 13:09:54 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 4 13:11:42 2011 -0400 + + Disable a failing test + + glib/tests/gdatetime.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit c06e91bcaf32db7ea89abc18c0975d761093edc7 +Author: Chun-wei Fan +AuthorDate: Mon Jul 4 22:21:05 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Jul 4 22:21:05 2011 +0800 + + Update GIO VS 2010 project templates + + Revert EOL of these files to Unix style as they are to be processed + during "make dist" + + build/win32/vs10/gio.vcxproj.filtersin | 58 ++--- + build/win32/vs10/gio.vcxprojin | 428 + ++++++++++++++++----------------- + 2 files changed, 243 insertions(+), 243 deletions(-) + +commit fabbf82ae169af0b2ae2da5f45b3e8bc798027a0 +Author: Chun-wei Fan +AuthorDate: Mon Jul 4 21:47:59 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Jul 4 21:47:59 2011 +0800 + + Updated GIO Visual Studio Projects + + -In gio/Makefile.am, the name for one of the filters for capturing the + sources for the GIO VS Project Files is corrected. + -Remove the GIO source file items in the VS project files templates as + a result for this change, and move the entry of the "new" + gregistrysettingsbackend.c into the filter in gio/Makefile.am + + build/win32/vs10/gio.vcxproj.filtersin | 79 +++--- + build/win32/vs10/gio.vcxprojin | 435 + +++++++++++++++---------------- + build/win32/vs9/gio.vcprojin | 457 + ++++++++++++++++----------------- + gio/Makefile.am | 7 +- + 4 files changed, 472 insertions(+), 506 deletions(-) + +commit 7ba753b002ca9888a46137b65f347a2f5f408e9e +Author: Murray Cumming +AuthorDate: Mon Jul 4 08:58:00 2011 +0200 +Commit: Murray Cumming +CommitDate: Mon Jul 4 08:58:00 2011 +0200 + + G_STATIC_REC_MUTEX_INIT: Fix missing initialization. + + Add the third struct field, zeroed, to avoid a compiler warning. + + glib/gthread.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8fdfa8bf3322c9ab3a1619750de47db978f8a32e +Author: Ryan Lortie +AuthorDate: Sun Jul 3 17:37:35 2011 +0200 +Commit: Ryan Lortie +CommitDate: Sun Jul 3 17:37:35 2011 +0200 + + Install completion scripts as DATA, not SCRIPTS + + They are sourced by the shell and don't include a #!/bin/sh, so + they shouldn't + be marked as executable. + + gio/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2080bb1dc0bd6e7fb137df0e28796cdb2024645c +Author: Dan Winship +AuthorDate: Wed Jun 29 08:29:16 2011 -0400 +Commit: Dan Winship +CommitDate: Fri Jul 1 11:28:12 2011 -0400 + + gasyncresult: document that NULL GAsyncReadyCallback is allowed + + https://bugzilla.gnome.org/show_bug.cgi?id=653484 + + gio/gasyncresult.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 2456db2c004d19cae0bca07a7de82feadc119b94 +Author: Dieter Verfaillie +AuthorDate: Thu Jun 30 09:32:32 2011 -0400 +Commit: Colin Walters +CommitDate: Thu Jun 30 09:32:32 2011 -0400 + + GCancellable: Fix build on Win32 + + https://bugzilla.gnome.org/show_bug.cgi?id=653522 + + gio/gcancellable.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 847a8eb911553a76df0fd2ce124cf77dbc7c8877 +Author: Emmanuele Bassi +AuthorDate: Wed Jun 29 18:07:29 2011 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Jun 29 18:07:29 2011 +0100 + + gio: Some more build fixes + + gio/gsimpleaction.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 87a542bc960ff230d1478d089436793fdde83db0 +Author: Emmanuele Bassi +AuthorDate: Wed Jun 29 18:00:53 2011 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Jun 29 18:00:53 2011 +0100 + + Fix build + + The g_return_val_if_fail() macro takes a return value. + + gio/gsimpleaction.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b73e53f5776507427e1475ae184daf2ab969e3c2 +Author: Ryan Lortie +AuthorDate: Wed Jun 29 17:19:38 2011 +0100 +Commit: Robert Ancell +CommitDate: Wed Jun 29 17:32:21 2011 +0100 + + parameter guards for GSimpleAction constructors + + gio/gsimpleaction.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit bde41dacf7e52262df69f70ce00fa33272ea3afa +Author: Ryan Lortie +AuthorDate: Wed Jun 29 17:13:58 2011 +0100 +Commit: Robert Ancell +CommitDate: Wed Jun 29 17:32:21 2011 +0100 + + GAction: make GObject properties read-only + + GAction is a read-only interface (as is visible by the lack of _set() + functions + on its API). The properties on the interface currently force + implementors to + support writing of the properties at construct time, however. + + Lift that restriction. + + Take advantage of this from GSimpleAction by nuking the set_property + function and setting the fields directly in the constructor. + + gio/gaction.c | 9 +++---- + gio/gsimpleaction.c | 68 + +++++++++++++++++------------------------------------ + 2 files changed, 25 insertions(+), 52 deletions(-) + +commit e6a25caa82410038e635c30deefbe3d0812aa9d3 +Author: Ryan Lortie +AuthorDate: Wed Jun 29 16:10:38 2011 +0100 +Commit: Javier Jardon +CommitDate: Wed Jun 29 16:20:52 2011 +0100 + + actions: merge testcases change_state and entries + + Since we have support for change_state in GActionEntry now. + + gio/tests/actions.c | 67 + ++++++++++++++++++++++------------------------------- + 1 file changed, 28 insertions(+), 39 deletions(-) + +commit 276750aa7aba853535a9f751429ef51aa9dcc924 +Author: Ryan Lortie +AuthorDate: Wed Jun 29 16:04:09 2011 +0100 +Commit: Javier Jardon +CommitDate: Wed Jun 29 16:20:52 2011 +0100 + + Add 'change_state' callback to GActionEntry + + gio/gsimpleactiongroup.c | 6 ++++++ + gio/gsimpleactiongroup.h | 6 +++++- + 2 files changed, 11 insertions(+), 1 deletion(-) + +commit 535dcf4f22ba7621c6078f3fe96db6d3e64f0132 +Author: Ryan Lortie +AuthorDate: Wed Jun 29 14:53:24 2011 +0100 +Commit: Javier Jardon +CommitDate: Wed Jun 29 16:20:52 2011 +0100 + + Add example for 'change-state' signal + + Pulled from the testcase. + + gio/gsimpleaction.c | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +commit d5915a4be3e790daf99c306c2d6651328b8dbb66 +Author: Ryan Lortie +AuthorDate: Wed Jun 29 14:44:58 2011 +0100 +Commit: Javier Jardon +CommitDate: Wed Jun 29 16:20:52 2011 +0100 + + Add testcase for GSimpleAction::change-state + + gio/tests/actions.c | 73 + +++++++++++++++++++++++++++++++---------------------- + 1 file changed, 43 insertions(+), 30 deletions(-) + +commit 9a23ef6c2da48cd7f5c513f24ff478d6c5fab4d6 +Author: Ryan Lortie +AuthorDate: Wed Jun 29 14:35:12 2011 +0100 +Commit: Javier Jardon +CommitDate: Wed Jun 29 16:20:52 2011 +0100 + + Add 'change-state' signal to GSimpleAction + + If connected, allows the user to control the result of + g_action_change_state(). + + gio/gsimpleaction.c | 39 ++++++++++++++++++++++++++++++++++++++- + 1 file changed, 38 insertions(+), 1 deletion(-) + +commit 6383b3e7095790372982c6fe68c7e770a6f44a5e +Author: Ryan Lortie +AuthorDate: Wed Jun 29 13:55:59 2011 +0100 +Commit: Javier Jardon +CommitDate: Wed Jun 29 16:20:52 2011 +0100 + + Add example to docs for using GActionEntry + + gio/gsimpleactiongroup.c | 38 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 38 insertions(+) + +commit 5978a6edb59d39ef430a5b7b99ae1109de8e63f7 +Author: Ryan Lortie +AuthorDate: Wed Jun 29 13:02:30 2011 +0100 +Commit: Javier Jardon +CommitDate: Wed Jun 29 16:20:52 2011 +0100 + + Add a test case for GActionEntry + + gio/tests/actions.c | 107 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 107 insertions(+) + +commit 7dd25022eeb1ef3f92b6352ba9ac9204dbb10305 +Author: Ryan Lortie +AuthorDate: Wed Jun 29 13:00:30 2011 +0100 +Commit: Javier Jardon +CommitDate: Wed Jun 29 16:20:52 2011 +0100 + + Add g_simple_action_group_add_entries() + + A convenience API for creating lots of actions quickly. + + docs/reference/gio/gio-sections.txt | 4 ++ + gio/gio.symbols | 1 + + gio/gsimpleactiongroup.c | 111 + ++++++++++++++++++++++++++++++++++++ + gio/gsimpleactiongroup.h | 23 ++++++++ + 4 files changed, 139 insertions(+) + +commit 695a9a799355713dc6df089801b7f67a010e3b13 +Author: Ryan Lortie +AuthorDate: Wed Jun 29 12:28:15 2011 +0100 +Commit: Javier Jardon +CommitDate: Wed Jun 29 16:20:52 2011 +0100 + + allow NULL state in g_simple_action_new_stateful + + as an undocumented feature + + gio/gsimpleaction.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 5ff65d869543587d10d78c123698e47effc5fb8c +Author: Ryan Lortie +AuthorDate: Wed Jun 29 10:11:59 2011 +0100 +Commit: Sebastien Bacher +CommitDate: Wed Jun 29 11:38:21 2011 +0100 + + Make 4 incompatible changes to the GAction API + + This commit represents an API break to GAction in the following ways: + + - the 'set_state' entry in the GActionInterface vtable has been + renamed to 'change_state'. The number and order of vtable + items has + not otherwise changed. + + - g_action_set_state() has been renamed to g_action_change_state() + to + match the updated vtable entry. + + - the "state" property of the GAction interface has been changed to + read-only to reflect the fact that g_action_set_state() no longer + exists. + + - GSimpleActionClass has been hidden. GSimpleAction can no + longer be + subclassed. + + >> Rationale + + g_action_set_state() has never been a true setter in the sense that + calling it will update the value of the "state" property. It has + always + been closer to "request 'state' to be changed to this value" with + semantics defined by the implementor of the interface. This is + why the + equivalent method in GActionGroup had its name changed from 'set' to + 'change'. This change makes the two interfaces more consistent and + removes any implication about the effect that calling set_state() + should + have on the 'state' property. + + >> Impact + + This incompatible API break was undertaken only because I strongly + suspect that it will go entirely unnoticed. If the break actually + affects anybody, then we will accommodate them (possibly going as + far as + to revert this commit entirely). + + The virtual table change only impacts implementors of GAction. I + strongly suspect that this is nobody (except for GSimpleAction). + + The hiding of GSimpleActionClass only impacts impacts subclasses of + GSimpleAction. I strongly suspect that none of these exist. + + The changing of the property to be read-only only affects people who + were trying to change the state by using GObject properties. + I strongly + suspect that this is nobody at all. + + The removal of the g_action_set_state() call is the most dangerous, + but + I still suspect that it will impact nobody outside of GLib. + If anybody + is impacted by this change then, at their request, I will reintroduce + the API as a deprecated alias for g_action_change_state(). + + docs/reference/gio/gio-sections.txt | 3 +- + gio/gaction.c | 25 +++-- + gio/gaction.h | 10 +- + gio/gio.symbols | 3 +- + gio/gsimpleaction.c | 158 + +++++++++++++++---------------- + gio/gsimpleaction.h | 45 +-------- + gio/gsimpleactiongroup.c | 10 +- + gio/tests/actions.c | 6 +- + gio/tests/gapplication-example-actions.c | 12 +-- + 9 files changed, 117 insertions(+), 155 deletions(-) + +commit d1e26c51c8298db782d253e0a5ff794b197270bf +Author: Chun-wei Fan +AuthorDate: Wed Jun 29 14:07:38 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Jun 29 14:07:38 2011 +0800 + + Update Visual Studio README.txt's + + -The VS2010 README.txt should have Windows CRLF EOL. + -Tell people about the added dependency on LibFFI + + build/win32/vs10/README.txt | 123 + ++++++++++++++++++++++++-------------------- + build/win32/vs9/README.txt | 11 ++++ + 2 files changed, 78 insertions(+), 56 deletions(-) + +commit 1777614600bf844687a9f16cc57d68a87f212dce +Author: Chun-wei Fan +AuthorDate: Wed Jun 29 12:36:24 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Jun 29 12:36:24 2011 +0800 + + Re-attempt to correct EOL on VS2010 solution + + This time I realized that I needed to set autocrlf=false on my + Windows side + ... ugh... + + This is one of those files that must have CRLF line endings to work + orrectly :| + + build/win32/vs10/glib.sln | 470 + +++++++++++++++++++++++----------------------- + 1 file changed, 235 insertions(+), 235 deletions(-) + +commit 315210ecdb98bc8effe6524ee24baba39cd48056 +Author: Colin Walters +AuthorDate: Tue Jun 28 12:52:58 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 28 12:52:58 2011 -0400 + + GCancellable: Fix build on Win32 + + https://bugzilla.gnome.org/show_bug.cgi?id=653522 + + gio/gcancellable.c | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +commit 1b0e5e7683148f769189fc82ab731ee25d06c04c +Author: Colin Walters +AuthorDate: Tue Jun 28 10:03:15 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 28 10:03:15 2011 -0400 + + gmain: Fall back to pipes if kernel doesn't support EFD_CLOEXEC + for eventfd() + + Also remove the caching of checking for eventfd; just try it every + time, it's + cheap enough to do so. + + https://bugzilla.gnome.org/show_bug.cgi?id=653570 + + glib/gmain.c | 46 +++++++++++++++++----------------------------- + 1 file changed, 17 insertions(+), 29 deletions(-) + +commit 8b1a0764f98fe1ce0880e684fb4310089e8327e7 +Author: Ihar Hrachyshka +AuthorDate: Tue Jun 28 02:02:34 2011 +0300 +Commit: Ihar Hrachyshka +CommitDate: Tue Jun 28 02:02:34 2011 +0300 + + Updated Belarusian translation. + + po/be.po | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 62d695f52d746112f50684399d0db2d58e499b57 +Author: Ihar Hrachyshka +AuthorDate: Tue Jun 28 01:27:27 2011 +0300 +Commit: Ihar Hrachyshka +CommitDate: Tue Jun 28 01:28:08 2011 +0300 + + Updated Belarusian translation. + + po/be.po | 56 ++++++++++++++++++++++++++++---------------------------- + 1 file changed, 28 insertions(+), 28 deletions(-) + +commit b07f2833c0d2ab8282fae0c19ef065a38721a985 +Author: Ryan Lortie +AuthorDate: Mon Jun 27 11:28:55 2011 +0100 +Commit: Javier Jardon +CommitDate: Mon Jun 27 11:31:26 2011 +0100 + + Change to AM_MAINTAINER_MODE([enable]) + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=653429 + + configure.ac | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 4d0279dfd879224ac8228c349f26840eb9e6531f +Author: Ihar Hrachyshka +AuthorDate: Sat Jun 25 19:14:09 2011 +0300 +Commit: Ihar Hrachyshka +CommitDate: Sat Jun 25 19:14:09 2011 +0300 + + Updated Belarusian translation. + + po/be.po | 3203 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 1530 insertions(+), 1673 deletions(-) + +commit 3cbd5565ae32515e59e129e835b79b211b51d5d4 +Author: Claudio Saavedra +AuthorDate: Fri Jun 24 16:04:54 2011 +0300 +Commit: Claudio Saavedra +CommitDate: Fri Jun 24 16:04:54 2011 +0300 + + GSimpleAction: fix typo + + gio/gsimpleaction.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cacbdf0ea8792d6c11ab224f9ecc38c920f84e37 +Author: Krzesimir Nowak +AuthorDate: Fri Jun 24 13:20:06 2011 +0200 +Commit: Krzesimir Nowak +CommitDate: Fri Jun 24 13:20:06 2011 +0200 + + Typo fix. + + Fixes jhbuilding gobject-introspection. + + gobject/glib-types.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 088b08bdfc8e6b3a7cc4d884e2186fe1a156fadb +Author: Chun-wei Fan +AuthorDate: Fri Jun 24 11:22:47 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Jun 24 11:22:47 2011 +0800 + + Refine Visual Studio Projects + + -Reinstate build/win32/vs10/glib.sln with the correct EOL + (DOS/Windows) so + that the file can be correctly recognized by Windows, rather + than having + the "Unrecognized Visual Studio Version". + + -Update the main GLib projects to output the DLL/LIB file into + \\bin for all configurations. + + -Update/simplify the property sheets to copy all DLL and LIB + files from + \\bin for all configurations. + + -Update the VS 2008 property sheet to seperate the intermediate + directories + for all projects as well to avoid errors/warnings of being unable to + write/access the PDB files as they are in use. + + build/win32/vs10/glib.props | 5 +- + build/win32/vs10/glib.sln | 235 + ++++++++++++++++++++++++++++++++++++++++ + build/win32/vs10/glib.vcxprojin | 4 + + build/win32/vs9/glib.vcprojin | 4 + + build/win32/vs9/glib.vsprops | 4 +- + 5 files changed, 245 insertions(+), 7 deletions(-) + +commit 92365b05c4075302920eab75cc7053b130032468 +Author: Chun-wei Fan +AuthorDate: Fri Jun 24 11:13:33 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Fri Jun 24 11:13:33 2011 +0800 + + Temporarily remove build/win32/vs10/glib.sln + + To fix up for the line endings (this needs to be in the DOS/Windows + format) + + build/win32/vs10/glib.sln | 235 + ---------------------------------------------- + 1 file changed, 235 deletions(-) + +commit 9eb65dd3ed5e1a9638595cbe10699c7606376511 +Author: Matthias Clasen +AuthorDate: Thu Jun 23 21:31:40 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 23 21:31:40 2011 -0400 + + Unicode: add a g_utf8_substring convenience api + + This function is useful in the GTK+ accessibility implementations, + and seems like a nice thing to have around in general. + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 25 +++++++++++++------------ + glib/gunicode.h | 8 ++++++-- + glib/gutf8.c | 32 + ++++++++++++++++++++++++++++++++ + glib/tests/utf8-misc.c | 21 +++++++++++++++++++++ + 5 files changed, 73 insertions(+), 14 deletions(-) + +commit c2b112bc56184e5ffdaf99df5aeaf8e06f84af21 +Author: Christian Persch +AuthorDate: Fri Jun 24 01:07:18 2011 +0200 +Commit: Christian Persch +CommitDate: Fri Jun 24 01:07:18 2011 +0200 + + Typo fix + + glib/gregex.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b1b8c95d3539d111632e5de88cadb0b547179a59 +Author: Christian Persch +AuthorDate: Thu Jun 23 18:35:40 2011 +0200 +Commit: Christian Persch +CommitDate: Fri Jun 24 01:03:52 2011 +0200 + + Plug a mem leak in the regex test + + glib/tests/regex.c | 1 + + 1 file changed, 1 insertion(+) + +commit 316efa1b5d88f91df9d3384bfb1b0dd37134405d +Author: Christian Persch +AuthorDate: Thu Jun 23 18:31:29 2011 +0200 +Commit: Christian Persch +CommitDate: Fri Jun 24 01:03:50 2011 +0200 + + Add boxed GType for GMatchInfo + + docs/reference/gobject/gobject-sections.txt | 2 ++ + gobject/gboxed.c | 2 ++ + gobject/glib-types.h | 10 ++++++++++ + gobject/gobject.symbols | 1 + + 4 files changed, 15 insertions(+) + +commit 00afe3fed340cb87b638aaafa01a2829cb60efba +Author: Christian Persch +AuthorDate: Thu Jun 23 18:27:29 2011 +0200 +Commit: Christian Persch +CommitDate: Fri Jun 24 01:03:46 2011 +0200 + + Make GMatchInfo refcounted + + docs/reference/glib/glib-sections.txt | 2 ++ + glib/glib.symbols | 2 ++ + glib/gregex.c | 49 + +++++++++++++++++++++++++++++++---- + glib/gregex.h | 2 ++ + 4 files changed, 50 insertions(+), 5 deletions(-) + +commit 3393711f426f101d851697e1af4105ec1d22b402 +Author: Patrick Welche +AuthorDate: Thu Jun 23 15:08:46 2011 +0100 +Commit: Colin Walters +CommitDate: Thu Jun 23 12:52:13 2011 -0400 + + build: fix gtk-doc when srcdir != builddir + + https://bugzilla.gnome.org/show_bug.cgi?id=653250 + + docs/reference/gio/Makefile.am | 2 +- + docs/reference/glib/Makefile.am | 2 +- + docs/reference/gobject/Makefile.am | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit 1e58d11a443e3c1b6228ff6e148ccbf244da9d84 +Author: Sebastian Dröge +AuthorDate: Thu Jun 23 09:34:59 2011 +0200 +Commit: Sebastian Dröge +CommitDate: Thu Jun 23 09:34:59 2011 +0200 + + Fix typo in GTime docs + + deprected -> deprecated + + docs/reference/glib/tmpl/date.sgml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5db5a46c3d8f5beb7f3b6d40b0c727125a626f6f +Author: Matthias Clasen +AuthorDate: Tue Jun 21 00:54:00 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 23 00:05:18 2011 -0400 + + Add tests for GValueArray + + gobject/tests/valuearray.c | 65 + ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 65 insertions(+) + +commit f4da19daa67b3a021563c8185fd094a6e4b907d5 +Author: Matthias Clasen +AuthorDate: Tue Jun 21 00:52:43 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 23 00:05:18 2011 -0400 + + Improve test coverage for GValue transformations + + gobject/tests/Makefile.am | 3 +- + gobject/tests/param.c | 152 + +++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 153 insertions(+), 2 deletions(-) + +commit 6dfd21caef93b31c6a42025d7af928db37bca75c +Author: Matthias Clasen +AuthorDate: Tue Jun 21 00:51:57 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 23 00:05:18 2011 -0400 + + Run some tests with errorcheck mutexes too + + All in the name of better test coverage. + + gthread/tests/642026.c | 4 ++++ + gthread/tests/Makefile.am | 5 +++++ + 2 files changed, 9 insertions(+) + +commit d8d25d8c96f1f2f9c0f110812e477c1a8e2e1edf +Author: Yuri Kozlov +AuthorDate: Wed Jun 22 20:10:43 2011 +0400 +Commit: Yuri Myasoedov +CommitDate: Wed Jun 22 20:10:43 2011 +0400 + + Updated Russian translation + + po/ru.po | 1025 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 549 insertions(+), 476 deletions(-) + +commit 0e4507a296bbf15b9ba4799c9081c8efaab7f34f +Author: Chun-wei Fan +AuthorDate: Wed Jun 22 15:22:55 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Jun 22 15:22:55 2011 +0800 + + Update config.h.win32(.in) + + Make file contents more like the config.h(.in) contents + + config.h.win32.in | 3 +++ + 1 file changed, 3 insertions(+) + +commit fdca8060aa8dad34cd32a52553d831ef57f3f363 +Author: Colin Walters +AuthorDate: Tue Jun 21 23:24:07 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 21 23:28:52 2011 -0400 + + build: Cache check for futex() and eventfd() + + configure.ac | 28 ++++++++++------------------ + 1 file changed, 10 insertions(+), 18 deletions(-) + +commit fa873992800c64722a56782a9d288c05ce0df21f +Author: Colin Walters +AuthorDate: Tue Jun 21 21:43:19 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 21 23:28:52 2011 -0400 + + GCancellable: Use Linux eventfd() instead of pipe + + See commit f626dd2b4311bd82137c5b208ab2de288c3e6fae for rationale; + basically it's cheaper than a pipe. + + https://bugzilla.gnome.org/show_bug.cgi?id=653140 + + gio/gcancellable.c | 88 + +++++++++++++++++++++++++++++++++++++++++------------- + 1 file changed, 68 insertions(+), 20 deletions(-) + +commit 3904c8761a60dbadbdfaf98fe23ff19cbdcc4a9a +Author: Colin Walters +AuthorDate: Tue Jun 21 19:01:10 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 21 23:28:52 2011 -0400 + + gmain: use Linux eventfd() for main context wake up + + The Linux eventfd() call is basically tailor made for the main loop + wake up pipe - all we want is a threadsafe way to write to a file + descriptor, and wake up the context on the other end; we don't care + about the content at all. + + The eventfd manual page basically explains the benefits: + + Applications can use an eventfd file descriptor instead of a + pipe (see pipe(2)) in all cases where a pipe is used simply to + signal events. The kernel overhead of an eventfd file + descriptor is much lower than that of a pipe, and only one file + descriptor is required (versus the two required for a pipe). + + When writing my multithreaded spawn test case I actually hit the 1024 + file descriptor limit quickly, because we used 2 fds per main context. + This brings that down to 1. + + https://bugzilla.gnome.org/show_bug.cgi?id=653140 + + configure.ac | 20 ++++++++++++++++++ + glib/gmain.c | 69 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++------ + 2 files changed, 83 insertions(+), 6 deletions(-) + +commit 29bb7638a56cd692d82ad87956822070b0877ead +Author: Dan Winship +AuthorDate: Tue Jun 21 16:14:50 2011 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 21 16:14:50 2011 -0400 + + gio/Makefile.am: Remove stray references to $(marshal_sources) + + gio/Makefile.am | 9 +-------- + 1 file changed, 1 insertion(+), 8 deletions(-) + +commit 9053ad07ba7210a5a2f8e7ca36f686fd9f96abe0 +Author: Colin Walters +AuthorDate: Tue Jun 21 10:26:58 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 21 10:30:07 2011 -0400 + + Fix a srcdir!=builddir issue, and export that we support it + + Future jhbuild versions will consume the BUILD API and automatically + use a builddir, so mark us as supporting it. + + Makefile.am | 3 +++ + gio/tests/Makefile.am | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) + +commit 3655178b14d3eaff59e8295906db84f414172507 +Author: Fran Diéguez +AuthorDate: Tue Jun 21 13:55:31 2011 +0200 +Commit: Fran Diéguez +CommitDate: Tue Jun 21 13:55:31 2011 +0200 + + Updated Galician translations + + po/gl.po | 353 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 181 insertions(+), 172 deletions(-) + +commit f6ed3571017e7ace55c78491ef4e79bfc914c07b +Author: Philip Van Hoof +AuthorDate: Sat Jun 18 19:40:34 2011 +0200 +Commit: Matthias Clasen +CommitDate: Mon Jun 20 23:05:59 2011 -0400 + + Add iter_replace API to GHashTableIter + + https://bugzilla.gnome.org/show_bug.cgi?id=652822 + + docs/reference/glib/glib-sections.txt | 1 + + glib/ghash.c | 152 + ++++++++++++++++++++++++---------- + glib/ghash.h | 2 + + glib/glib.symbols | 1 + + glib/tests/hash.c | 23 +++++ + 5 files changed, 135 insertions(+), 44 deletions(-) + +commit 8f05da99cb88dfa6c79fb5ccdc640c775dcd631c +Author: Matthias Clasen +AuthorDate: Mon Jun 20 22:49:34 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 20 22:49:34 2011 -0400 + + Make gmarshal.c actually compile standalone + + It was lacking the necessary includes; in the past it has been + included towards the bottom of gsignal.c, and gained its includes + that way. + + gobject/gmarshal.c | 597 + ++++++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 550 insertions(+), 47 deletions(-) + +commit b74e2a720a09fcb5ceb1cd3b38e3ce32d14c2234 +Author: Colin Walters +AuthorDate: Mon Jun 20 09:06:07 2011 -0400 +Commit: Colin Walters +CommitDate: Mon Jun 20 17:24:07 2011 -0400 + + Stop using glib-genmarshal at build time + + To help cross compilation, don't use glib-genmarshal in our + build. This is easy now that we have g_cclosure_marshal_generic(). + + In gobject/, add gmarshal.[ch] to git (making the existing entry + points stubs). + + In gio/, simply switch to using g_cclosure_marshal_generic(). + + https://bugzilla.gnome.org/show_bug.cgi?id=652168 + + gio/Makefile.am | 23 --- + gio/gactiongroup.c | 5 +- + gio/gapplication.c | 5 +- + gio/gcancellable.c | 3 +- + gio/gdbusauthobserver.c | 3 +- + gio/gdbusconnection.c | 3 +- + gio/gdbusinterface.c | 1 - + gio/gdbusinterfaceskeleton.c | 3 +- + gio/gdbusnameowning.c | 7 +- + gio/gdbusnamewatching.c | 5 +- + gio/gdbusobject.c | 1 - + gio/gdbusobjectmanager.c | 5 +- + gio/gdbusobjectmanagerclient.c | 5 +- + gio/gdbusobjectskeleton.c | 3 +- + gio/gdbusproxy.c | 5 +- + gio/gdbusserver.c | 3 +- + gio/gfilemonitor.c | 3 +- + gio/gio-marshal.list | 34 ----- + gio/gmountoperation.c | 7 +- + gio/gpollableinputstream.c | 3 +- + gio/gpollableoutputstream.c | 1 - + gio/gsettings.c | 5 +- + gio/gsettingsbackend.c | 1 - + gio/gsocket.c | 3 +- + gio/gsocketservice.c | 3 +- + gio/gthreadedsocketservice.c | 4 +- + gio/gtlsclientconnection.c | 1 - + gio/gtlsconnection.c | 3 +- + gio/gtlsserverconnection.c | 1 - + gobject/.gitignore | 1 - + gobject/Makefile.am | 37 +---- + gobject/gmarshal.c | 338 + +++++++++++++++++++++++++++++++++++++++++ + gobject/gmarshal.h | 187 +++++++++++++++++++++++ + gobject/gmarshal.list | 27 +--- + gobject/gsignal.c | 4 - + 35 files changed, 565 insertions(+), 178 deletions(-) + +commit 322e25b535a63a631f2f53439a876a4d7d9c1f87 +Author: David Zeuthen +AuthorDate: Mon Jun 20 16:32:03 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Jun 20 16:32:03 2011 -0400 + + GDBus: Unref worker from worker-thread to avoid race + + ... otherwise we might end up using the worker after it has been + freed. Reported by Dan Winship and Colin Walters. + + This fix uncovered a bug in the /gdbus/nonce-tcp test case so "fix" + that as well to use a better way of having one thread wait for another + (using quotes for the word "fix" since it's pretty hackish to + busy-wait in one thread to wait for another). + + Signed-off-by: David Zeuthen + + gio/gdbusprivate.c | 21 ++++++++++++++++++++- + gio/tests/gdbus-peer.c | 2 +- + 2 files changed, 21 insertions(+), 2 deletions(-) + +commit 4344838781ee4fcd1c459ec0761e531d20baacfb +Author: Colin Walters +AuthorDate: Mon Jun 20 14:09:31 2011 -0400 +Commit: Colin Walters +CommitDate: Mon Jun 20 14:09:50 2011 -0400 + + gthread tests: Remove spurious return; + + gthread/tests/spawn-singlethread.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 5e64717a5ffb61c51ca936d51d0d38e5abc08c3a +Author: Colin Walters +AuthorDate: Mon Jun 20 11:15:27 2011 -0400 +Commit: Colin Walters +CommitDate: Mon Jun 20 14:03:05 2011 -0400 + + gclosure: Add G_TYPE_ENUM and G_TYPE_PARAM for + g_cclosure_marshal_generic() + + These are fundamental types missed in the original commit. + + gobject/gclosure.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit d54c65448cf7426d132f11c645a1cd9eec034c03 +Author: Colin Walters +AuthorDate: Mon Jun 20 13:41:52 2011 -0400 +Commit: Colin Walters +CommitDate: Mon Jun 20 14:03:05 2011 -0400 + + gdbus-test-codegen: Allocate full integer space for uint16 properties + + Because there is no G_TYPE_[U]INT16, we need to use integer types, + otherwise we'll end up overwriting memory (in this case on the stack). + + gio/tests/gdbus-test-codegen.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 49fac943f37d16ade1b3fdd0f5b0ee479a74e440 +Author: Javier Jardón +AuthorDate: Mon Jun 20 11:48:25 2011 +0100 +Commit: Javier Jardón +CommitDate: Mon Jun 20 11:49:40 2011 +0100 + + configure.ac: Generate xz tarballs by default + + configure.ac | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit c68683f780d4960d0fc0e659c86d8a1efaa4da19 +Author: Chun-wei Fan +AuthorDate: Mon Jun 20 11:50:57 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Jun 20 11:50:57 2011 +0800 + + Visual C++ 2010 project files update + + Consolidate my previous commit into property file... should have + realized + this sooner... + + build/win32/vs10/gio.vcxprojin | 8 -------- + build/win32/vs10/glib-compile-schemas.vcxproj | 8 -------- + build/win32/vs10/glib-genmarshal.vcxproj | 8 -------- + build/win32/vs10/glib.props | 2 +- + build/win32/vs10/glib.vcxprojin | 16 + ---------------- + build/win32/vs10/gmodule.vcxproj | 8 -------- + build/win32/vs10/gobject.vcxprojin | 8 -------- + build/win32/vs10/gsettings.vcxproj | 8 -------- + build/win32/vs10/gspawn-win32-helper-console.vcxproj | 8 -------- + build/win32/vs10/gspawn-win32-helper.vcxproj | 8 -------- + build/win32/vs10/gthread.vcxproj | 8 -------- + build/win32/vs10/testglib.vcxproj | 8 -------- + 12 files changed, 1 insertion(+), 97 deletions(-) + +commit 801e52f8099f6ae6dba61f0f54bc1c7a60f52681 +Author: Chun-wei Fan +AuthorDate: Mon Jun 20 11:34:15 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Jun 20 11:34:15 2011 +0800 + + Update Visual C++ 2010 Projects + + -Seperate intermediate directories for each project to avoid + intermittent + MSBuild errors that a build log cannot be written while in use, and + update the property sheet as necessary. + -Minor cleanups of uneeded tags in the projects/properties + + build/win32/vs10/gio.vcxprojin | 9 ++++++++- + build/win32/vs10/glib-compile-schemas.vcxproj | 9 ++++++++- + build/win32/vs10/glib-genmarshal.vcxproj | 9 ++++++++- + build/win32/vs10/glib.props | 3 +-- + build/win32/vs10/glib.vcxprojin | 17 + ++++++++++++++++- + build/win32/vs10/gmodule.vcxproj | 9 ++++++++- + build/win32/vs10/gobject.vcxprojin | 9 ++++++++- + build/win32/vs10/gsettings.vcxproj | 9 ++++++++- + build/win32/vs10/gspawn-win32-helper-console.vcxproj | 9 ++++++++- + build/win32/vs10/gspawn-win32-helper.vcxproj | 9 ++++++++- + build/win32/vs10/gthread.vcxproj | 9 ++++++++- + build/win32/vs10/testglib.vcxproj | 9 ++++++++- + 12 files changed, 97 insertions(+), 13 deletions(-) + +commit f9cec26968fad4ddecae9b13077f63bc11b66f86 +Author: Christian Persch +AuthorDate: Sat Jun 18 16:22:53 2011 +0200 +Commit: Christian Persch +CommitDate: Sun Jun 19 13:14:39 2011 +0200 + + Clarify nul-termination of g_utf8_to_ucs4[_fast] result + + The docs for g_utf8_to_ucs4_fast didn't mention that the resulting + string is terminated by a 0 character. + + Bug #652897. + + glib/gutf8.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 580e177dccce98e4f8490b9463321d01343cac2d +Author: Matthias Clasen +AuthorDate: Sun Jun 19 01:42:48 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 19 01:42:48 2011 -0400 + + Add tests for GCache + + glib/tests/Makefile.am | 3 + + glib/tests/cache.c | 147 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 150 insertions(+) + +commit 9fa5b8e5c7701d9ea40577a9a317d02c79b17d18 +Author: Matthias Clasen +AuthorDate: Sun Jun 19 01:05:26 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 19 01:05:26 2011 -0400 + + asyncqueue: improve test coverage + + tests/asyncqueue-test.c | 57 + ++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 54 insertions(+), 3 deletions(-) + +commit 63fa44251a24d01854b86c82ce7e625c0553b88d +Author: Matthias Clasen +AuthorDate: Sun Jun 19 01:05:05 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 19 01:05:05 2011 -0400 + + utils: silence tests unless verbose + + glib/tests/utils.c | 77 + +++++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 74 insertions(+), 3 deletions(-) + +commit e1d4e06ab3dc9be6e239eb27f2f168e277ae273c +Author: Matthias Clasen +AuthorDate: Sun Jun 19 01:04:48 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 19 01:04:48 2011 -0400 + + logging: improve test coverage + + glib/tests/logging.c | 39 +++++++++++++++++++++++++++++++++++++++ + 1 file changed, 39 insertions(+) + +commit ed3ac87afe51de67b631abf5f8dc50622b141a8b +Author: Matthias Clasen +AuthorDate: Sun Jun 19 01:04:30 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 19 01:04:30 2011 -0400 + + hash: Improve test coverage + + glib/tests/hash.c | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +commit c4796a4d7a9bbbfbcf9ec82d0cdc442cdccb8113 +Author: Chun-wei Fan +AuthorDate: Sat Jun 18 17:55:58 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Sat Jun 18 17:55:58 2011 +0800 + + Update gsettings/glib-compile-schemas VS Projects + + These tools require the use of GModule headers also, so update + the include + directories so that the correct gmodule.h will be included instead + of the + system-installed version. + + build/win32/vs10/glib-compile-schemas.vcxproj | 4 ++++ + build/win32/vs10/gsettings.vcxproj | 4 ++++ + build/win32/vs9/glib-compile-schemas.vcproj | 4 ++++ + build/win32/vs9/gsettings.vcproj | 4 ++++ + 4 files changed, 16 insertions(+) + +commit 4476e22a14af93d375d3a9d8cd2ab8deedf669ad +Author: Colin Walters +AuthorDate: Fri Jun 17 09:39:48 2011 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 17 09:39:48 2011 -0400 + + gvariant: Mark g_variant_new_variant as constructor + + https://bugzilla.gnome.org/show_bug.cgi?id=647796 + + glib/gvariant.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 19610184c40b37c48ddf8006db26e14d563c7eda +Author: Colin Walters +AuthorDate: Fri Jun 17 08:52:05 2011 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 17 08:52:23 2011 -0400 + + gdatainputstream: Add Since: tags and update gio-sections.txt + + https://bugzilla.gnome.org/show_bug.cgi?id=652758 + + docs/reference/gio/gio-sections.txt | 2 ++ + gio/gdatainputstream.c | 4 +++- + 2 files changed, 5 insertions(+), 1 deletion(-) + +commit 28254a38a7f077d5fc03939ea7c03260aabe5188 +Author: Colin Walters +AuthorDate: Thu Jun 16 14:00:36 2011 -0400 +Commit: Colin Walters +CommitDate: Thu Jun 16 20:03:02 2011 -0400 + + GDataInputStream: Add _utf8() variants of _read_line + + These will validate the resulting line, and throw a conversion error. + In practice these will likely be used by bindings, but it's good + for even C apps too that don't want to explode if that text file + they're reading into Pango actually has invalid UTF-8. + + https://bugzilla.gnome.org/show_bug.cgi?id=652758 + + gio/gdatainputstream.c | 82 + +++++++++++++++++++++++++++++++++++++++++++ + gio/gdatainputstream.h | 8 +++++ + gio/gio.symbols | 2 ++ + gio/tests/data-input-stream.c | 74 ++++++++++++++++++++++++++++++++++++++ + 4 files changed, 166 insertions(+) + +commit ff2f46a7f42d5c0d0b8af0d4328f960605420790 +Author: Colin Walters +AuthorDate: Thu Jun 16 13:14:44 2011 -0400 +Commit: Colin Walters +CommitDate: Thu Jun 16 20:00:02 2011 -0400 + + GDataInputStream: Clarify read_line() docs, mark as byte array + + g_data_input_stream_read_line() and + g_data_input_stream_read_line_finish() don't do any encoding checks, + so we shouldn't call the returned value a "string" (which I'd like to + mean UTF-8). Annotate them as byte arrays and add encoding warnings + to the docstrings. + + https://bugzilla.gnome.org/show_bug.cgi?id=652758 + + gio/gdatainputstream.c | 30 ++++++++++++++++++------------ + 1 file changed, 18 insertions(+), 12 deletions(-) + +commit de0519581ab7aedcfc8b6b5a46139a8c9728c596 +Author: Patrick Welche +AuthorDate: Tue Jun 14 09:43:33 2011 +0100 +Commit: Colin Walters +CommitDate: Thu Jun 16 13:09:42 2011 -0400 + + Fix build due to trivial typos in ab0e9dbf. + + https://bugzilla.gnome.org/show_bug.cgi?id=652750 + + docs/reference/gio/Makefile.am | 101 + ------------------------------------- + docs/reference/gobject/Makefile.am | 2 +- + 2 files changed, 1 insertion(+), 102 deletions(-) + +commit 34b7126a4e0b743b07b9d55309fce0d15802b69c +Author: Murray Cumming +AuthorDate: Wed Jun 15 10:47:13 2011 +0200 +Commit: Murray Cumming +CommitDate: Wed Jun 15 10:47:13 2011 +0200 + + G_STATIC_REC_MUTEX_INIT: Add a 0 to the initialization. + + This avoids a compiler warning about an incomplete initialization + when using this. + + glib/gthread.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 23f684454f6f0151cb7181c527bf254f6b97ed35 +Author: Ryan Lortie +AuthorDate: Tue Jun 14 22:44:10 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jun 14 22:45:06 2011 -0400 + + Drop dead code in GVariant parser + + There is no chance that an unsigned integer value will be negative + after + we do the bounds check that enforces its non-negativity. + + Caught by Matthias running Coverity. + + glib/gvariant-parser.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit a6b9db6907117639b2493e96f8dee9e54bdba788 +Author: Matthias Clasen +AuthorDate: Tue Jun 14 20:44:15 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 21:06:17 2011 -0400 + + Eliminate some dead code + + glib/gspawn.c | 13 +++++-------- + 1 file changed, 5 insertions(+), 8 deletions(-) + +commit 9b68d9892a125e00958ff019d5edcf4f6b409cf8 +Author: Matthias Clasen +AuthorDate: Tue Jun 14 20:36:37 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 21:06:17 2011 -0400 + + Remove a redundant NULL check + + gmodule/gmodule.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit 28008138c3ef88ad7f44055580f2b19796b9c29f +Author: Matthias Clasen +AuthorDate: Tue Jun 14 20:15:04 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 21:06:17 2011 -0400 + + Silence a compiler warning + + gio/gdbusaddress.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f966a0af9ac5524b26917b266abcbbac890c58e0 +Author: Matthias Clasen +AuthorDate: Tue Jun 14 19:52:19 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 21:06:16 2011 -0400 + + Add some argument checks to filename conversion functions + + glib/gconvert.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit c9f883f133bc83942484cb8a1349b58ada46b4bc +Author: Colin Walters +AuthorDate: Tue Jun 14 18:46:06 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 14 19:23:36 2011 -0400 + + gmain: Close race condition in _g_main_wake_up_all_contexts() + + Running gthread/tests/spawn-multithreaded in a loop, I very easily + hit: + + GLib-CRITICAL **: g_main_context_wakeup: assertion `g_atomic_int_get + (&context->ref_count) > 0' failed + + Testing the refcount still left a window where we would fall into the + assertion. Fix this by just locking the context. + + glib/gmain.c | 17 +++++------------ + 1 file changed, 5 insertions(+), 12 deletions(-) + +commit 211d7adf6e452c30dc0b76225e7bdcddee7c5f8f +Author: Colin Walters +AuthorDate: Wed Jun 8 11:31:14 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 14 19:23:36 2011 -0400 + + gmain: Only run through signal delivery once per read() + + This is what I intended to do before. + + https://bugzilla.gnome.org/show_bug.cgi?id=652072 + + glib/gmain.c | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +commit ed827deb7756bde270eb015eb4263324a313be14 +Author: Colin Walters +AuthorDate: Sat Jun 11 12:10:57 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 14 19:23:36 2011 -0400 + + gmain: Use sigset_t for keeping track of installed signals + + Minor code cleanup. + + https://bugzilla.gnome.org/show_bug.cgi?id=652072 + + glib/gmain.c | 37 ++++++++++--------------------------- + 1 file changed, 10 insertions(+), 27 deletions(-) + +commit 1874ad97d809950901246c940a2b80ba3a6d9390 +Author: Colin Walters +AuthorDate: Fri Jun 10 10:48:07 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 14 19:23:36 2011 -0400 + + gspawn: Reset signal handlers for synchronous spawning + + We should by default reset signal handlers; particularly with the + ability to install them via g_unix_signal_source_new(), we don't + want to call a user callback inside a fork()ed helper process. + + https://bugzilla.gnome.org/show_bug.cgi?id=652072 + + glib/gspawn.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit b9c67b43690bfc3b9a869a285f542a420f5b0067 +Author: Colin Walters +AuthorDate: Sat Jun 11 17:25:13 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 14 19:23:36 2011 -0400 + + glib/tests/unix.c: Also test SIGTERM + + We expect this to not kill the process, so it'd be a good one to test. + + https://bugzilla.gnome.org/show_bug.cgi?id=652072 + + glib/tests/unix.c | 50 ++++++++++++++++++++++++++++++++------------------ + 1 file changed, 32 insertions(+), 18 deletions(-) + +commit c2364ce9a4e59ca0276c02b2b9a1356327f2cffb +Author: Colin Walters +AuthorDate: Fri Jun 10 10:35:27 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 14 19:23:36 2011 -0400 + + spawn-multithreaded: Clean up IO channel code + + I modeled the new bits after how gunixmount.c handles GIOChannel; + it's apparently easier not to look at the condition. + + https://bugzilla.gnome.org/show_bug.cgi?id=652072 + + gthread/tests/spawn-multithreaded.c | 27 ++++++++++++++++----------- + 1 file changed, 16 insertions(+), 11 deletions(-) + +commit 7e1886ba72a36f73296781c5ca5525ae5e8288aa +Author: Colin Walters +AuthorDate: Fri Jun 10 10:14:25 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 14 19:23:35 2011 -0400 + + gspawn: Handle EINTR in a few more cases + + I was debugging gthread/tests/spawn-multithreaded.c, and while I + don't think I actually hit EINTR in any of these cases, it'd be + good to fix them anyways. + + https://bugzilla.gnome.org/show_bug.cgi?id=652072 + + glib/gspawn.c | 25 ++++++++++++++++++++++--- + 1 file changed, 22 insertions(+), 3 deletions(-) + +commit 922f6aa496b3907634b45efe7c95fe9e5ebc5107 +Author: Colin Walters +AuthorDate: Fri Jun 10 07:29:28 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 14 19:23:35 2011 -0400 + + spawn-singlethread.c: New test + + https://bugzilla.gnome.org/show_bug.cgi?id=652072 + + gthread/tests/Makefile.am | 4 + + gthread/tests/spawn-singlethread.c | 194 + +++++++++++++++++++++++++++++++++++++ + 2 files changed, 198 insertions(+) + +commit 01ee9449e34d22c5527d30b70169f6ca2b778626 +Author: Colin Walters +AuthorDate: Fri Jun 10 07:27:29 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 14 19:23:35 2011 -0400 + + spawn-multithreaded: Also look for lt-test-echo + + I hate libtool =( + + https://bugzilla.gnome.org/show_bug.cgi?id=652072 + + gthread/tests/spawn-multithreaded.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit b6a829c314a837824c63afec35bcf56742c4b71d +Author: Matthias Clasen +AuthorDate: Tue Jun 14 16:32:55 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 18:51:57 2011 -0400 + + If dup fails don't call close() + + gio/gunixfdlist.c | 1 - + 1 file changed, 1 deletion(-) + +commit 6e7a7052e01ef8e44891e9290c5275c3b3d6e07d +Author: Matthias Clasen +AuthorDate: Tue Jun 14 16:20:26 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 18:51:57 2011 -0400 + + Remove a redundant assertion + + A gsize is never going below 0. + + gobject/gatomicarray.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit ba6e66bff1684c0ef0af603f18b0ca53ed7c45fd +Author: Matthias Clasen +AuthorDate: Tue Jun 14 16:18:45 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 18:51:57 2011 -0400 + + Don't compare unsigned numbers with 0 + + It does not work. + + gio/gdbusaddress.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a6d33d3a28071957e81d63ba389bdf759d29dc45 +Author: David Zeuthen +AuthorDate: Tue Jun 14 18:11:09 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Jun 14 18:12:04 2011 -0400 + + GDBusMessage: Optimize serializer and deserializer + + ... by using a switch instead of if-then-else. + + Signed-off-by: David Zeuthen + + gio/gdbusmessage.c | 763 + +++++++++++++++++++++++++++-------------------------- + 1 file changed, 390 insertions(+), 373 deletions(-) + +commit 7963a4cf95293cbf368a0ff891ba661e4ea3cc63 +Author: Colin Walters +AuthorDate: Tue Jun 14 12:28:57 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 14 12:28:57 2011 -0400 + + gclosure: Add missing include + + gobject/gclosure.c | 1 + + 1 file changed, 1 insertion(+) + +commit 01e6cf1360deffe49c7bb4d1fa3cbd3d904c6b30 +Author: Matthias Clasen +AuthorDate: Tue Jun 14 11:40:32 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 11:40:32 2011 -0400 + + Don't do < 0 on an unsigned value + + It won't work. read() returns a signed value, anyway. + + gio/tests/gdbus-sessionbus.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 25a797fa25e17607a7b3618d3d098004b2be1cc8 +Author: Matthias Clasen +AuthorDate: Tue Jun 14 10:16:35 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 10:16:35 2011 -0400 + + Silence a compiler warning + + Even though we are confident the filename will always + end in .gmarkup, the compiler doesn't know that... + + glib/tests/markup-parse.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 6ac8e6108cf15884e28fe1ecd3042dfce0e11dfd +Author: Matthias Clasen +AuthorDate: Tue Jun 14 10:12:46 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 10:12:46 2011 -0400 + + Don't leak resources in error cases + + glib/gfileutils.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 83d34f630939aa13539e03895bef87da738c4127 +Author: Matthias Clasen +AuthorDate: Tue Jun 14 10:07:22 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 10:07:22 2011 -0400 + + Don't forget to free resources in an early return + + gio/xdgmime/xdgmimemagic.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 3dc34de0fffca527e9a9e75f00ef913dec14da08 +Author: Matthias Clasen +AuthorDate: Tue Jun 14 10:04:06 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 10:04:06 2011 -0400 + + Avoid a deref-before-NULL-check warning + + gio/gdbusaddress.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 339cac8fc71f9409f97a4bfc3f42f912c262c06d +Author: Matthias Clasen +AuthorDate: Tue Jun 14 09:53:26 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 09:53:26 2011 -0400 + + Remove unneeded NULL check + + We ensure 10 lines up that parameters is not NULL. + + gio/gdbusconnection.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit cf7f50b28ee84eb4f490540d0ebe84a9d5cf8375 +Author: Matthias Clasen +AuthorDate: Tue Jun 14 09:50:55 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 09:50:55 2011 -0400 + + Remove an unneeded NULL check + + data->proxy cannot be NULL here, or we'd have crashed 10 lines up. + + gio/gdbusproxy.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 4c63303f9fa1ea2737c6890a5e51188eaa534836 +Author: Matthias Clasen +AuthorDate: Tue Jun 14 09:44:45 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 09:44:45 2011 -0400 + + Silence an uninitialize variable warning + + gio/xdgmime/xdgmimeparent.c | 1 + + 1 file changed, 1 insertion(+) + +commit 114b9b2504d6f093daadef6fe0b5b734ca78ec6e +Author: Matthias Clasen +AuthorDate: Tue Jun 14 07:17:06 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 14 07:17:06 2011 -0400 + + Fix up symbol lists and docs + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 1 + + 2 files changed, 2 insertions(+) + +commit 42c2e42a39bb04aae8fae3b691e22b290d1da48a +Author: Xan Lopez +AuthorDate: Thu Jun 9 23:50:22 2011 +0200 +Commit: Xan Lopez +CommitDate: Tue Jun 14 12:50:51 2011 +0200 + + gclosure: add missing fundamental types to generic marshaler + + for GObject type the ffi->gvalue conversion was not handled. The + GFlags type was completely missing. + + gobject/gclosure.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit b87d9405be375ac5a5a690f10f6ec13fccd8e3bd +Author: Vincent Untz +AuthorDate: Tue Jun 14 09:01:25 2011 +0200 +Commit: Vincent Untz +CommitDate: Tue Jun 14 09:01:25 2011 +0200 + + GDesktopAppInfo: Fix declaration of g_desktop_app_info_get_nodisplay + + gio/gdesktopappinfo.c | 2 +- + gio/gdesktopappinfo.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 86ffdf55705ef0f76159707576174227df0c2c3a +Author: Vincent Untz +AuthorDate: Sun Jun 12 12:22:59 2011 +0200 +Commit: Vincent Untz +CommitDate: Tue Jun 14 08:53:48 2011 +0200 + + GDesktopAppInfo: Add g_desktop_app_info_get_nodisplay + + Necessary for rebasing gnome-menus on top of GDesktopAppInfo. + + https://bugzilla.gnome.org/show_bug.cgi?id=652385 + + gio/gdesktopappinfo.c | 21 +++++++++++++++++++++ + gio/gdesktopappinfo.h | 1 + + 2 files changed, 22 insertions(+) + +commit 9a9cca97641cbfdbb7f0ceac73b4317b66b63685 +Author: Matthias Clasen +AuthorDate: Mon Jun 13 23:54:59 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 13 23:54:59 2011 -0400 + + bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9f11f054eb3f38dd507dadd61706a7390ebf2d0d +Author: Matthias Clasen +AuthorDate: Mon Jun 13 21:58:33 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 13 23:20:32 2011 -0400 + + 2.29.8 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a0361ec04928be564e08189b6d40e67e4f0ff39e +Author: Matthias Clasen +AuthorDate: Mon Jun 13 23:19:45 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 13 23:20:32 2011 -0400 + + Fix doc generation + + It helps to use the same file name on both ends... + + docs/reference/gio/Makefile.am | 2 +- + docs/reference/glib/Makefile.am | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 4dc3d3e9996a3ab260385f9452eec1edaeb614d5 +Author: Matthias Clasen +AuthorDate: Mon Jun 13 22:48:54 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 13 22:50:02 2011 -0400 + + Use a realistic timeout in a test + + Who knew that g_test_trap_fork() takes a timeout in microseconds... + + glib/tests/dataset.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bc403e63614b87e3cf485441d267997978b89351 +Author: Matthias Clasen +AuthorDate: Mon Jun 13 20:48:20 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 13 20:48:20 2011 -0400 + + Update NEWS + + NEWS | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +commit 5ec6eafb0ea79d21a13fea42628119197476bb3f +Author: Colin Walters +AuthorDate: Mon Jun 13 14:17:44 2011 -0400 +Commit: Colin Walters +CommitDate: Mon Jun 13 14:17:44 2011 -0400 + + gdbus-codegen tests: Fix usage of top_srcddir + + Based on a patch from Rico Tzschichholz. + + gio/tests/Makefile.am | 2 +- + gio/tests/gdbus-object-manager-example/Makefile.am | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit fd772fbe95fd70a7f34401c85b048ed1460af898 +Author: Ryan Lortie +AuthorDate: Mon Jun 13 09:27:41 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 13 09:27:41 2011 -0400 + + Formally deprecate G_CONST_RETURN + + glib/gmacros.h | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit ce9681b87e64a53a35a3db25cdbc406f46e91602 +Author: Ryan Lortie +AuthorDate: Mon Jun 13 09:27:28 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 13 09:27:28 2011 -0400 + + Drop a few more G_CONST_RETURN + + gobject/gvaluetypes.c | 2 +- + tests/testglib.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 7412e073d195d9c9b0fd83fd81962f3364f5d2be +Author: Dan Winship +AuthorDate: Sun Jun 12 16:17:30 2011 -0400 +Commit: Dan Winship +CommitDate: Sun Jun 12 16:17:30 2011 -0400 + + update .gitignores + + gio/.gitignore | 1 + + glib/.gitignore | 1 + + glib/tests/.gitignore | 4 +++- + gobject/.gitignore | 1 + + gthread/tests/.gitignore | 6 +++++- + 5 files changed, 11 insertions(+), 2 deletions(-) + +commit 9d53e2bc4e806f8b0e142a1ed73c5f25e0dd2347 +Author: Colin Walters +AuthorDate: Fri Jun 10 12:58:49 2011 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 10 12:58:49 2011 -0400 + + gspawn: Fix annotations + + g-ir-scanner wants guint8. + + glib/gspawn.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 28a9e91b136be5dc133651ae0ea2e70be3d99ba5 +Author: Christophe Fergeau +AuthorDate: Thu Jun 9 13:36:19 2011 +0200 +Commit: Christophe Fergeau +CommitDate: Fri Jun 10 15:18:58 2011 +0200 + + Fix regression in qsort_r BSD detection + + We can use AC_CHECK_FUNCS to detect if qsort_r is available on + the system or not since it will unconditionnally define + HAVE_QSORT_R, which we don't want since on BSD, qsort_r isn't usable + for us, so we don't want to have HAVE_QSORT_R defined on such + platforms. + By using AC_CHECK_FUNC instead, we can defer defining HAVE_QSORT_R + until + we have actually tested it's usable. + + https://bugzilla.gnome.org/show_bug.cgi?id=651920 + + configure.ac | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 73905434a4c32fc0c1a1024a66856cddc77b18db +Author: Yaron Shahrabani +AuthorDate: Fri Jun 10 12:54:51 2011 +0300 +Commit: Yaron Shahrabani +CommitDate: Fri Jun 10 12:54:51 2011 +0300 + + Updated Hebrew translation. + + po/he.po | 176 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 92 insertions(+), 84 deletions(-) + +commit 6a088820c287d2ffa0276e366e4623f89ca028d3 +Author: Mario Blättermann +AuthorDate: Fri Jun 10 11:17:15 2011 +0200 +Commit: Mario Blättermann +CommitDate: Fri Jun 10 11:17:15 2011 +0200 + + [l10n] Updated German translation + + po/de.po | 331 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 171 insertions(+), 160 deletions(-) + +commit 486c48fafba363bb6e0a2286bfc8a90467f6af3e +Author: Abduxukur Abdurixit +AuthorDate: Fri Jun 10 10:19:12 2011 +0200 +Commit: Abduxukur Abdurixit +CommitDate: Fri Jun 10 10:19:12 2011 +0200 + + Added UG translation + + po/ug.po | 965 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 520 insertions(+), 445 deletions(-) + +commit b5cadd8bb5bcae3d2fde60adada4461a03a1e257 +Author: Jorge González +AuthorDate: Thu Jun 9 23:00:04 2011 +0200 +Commit: Jorge González +CommitDate: Thu Jun 9 23:00:04 2011 +0200 + + Updated Spanish translation + + po/es.po | 192 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 92 insertions(+), 100 deletions(-) + +commit 4db88bd6e2957893b9f232527cc46bda799f2027 +Author: Murray Cumming +AuthorDate: Thu Jun 9 20:17:52 2011 +0200 +Commit: Murray Cumming +CommitDate: Thu Jun 9 20:17:52 2011 +0200 + + gioenums.h: Remove trailing commas + + gio/gioenums.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 7ff248e822af910e95b68a352793b34db0cd8f8b +Author: David Zeuthen +AuthorDate: Thu Jun 9 13:29:58 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu Jun 9 13:29:58 2011 -0400 + + gdbus: Don't pass an unintialized GError pointer + + Signed-off-by: David Zeuthen + + gio/gdbus-tool.c | 1 + + 1 file changed, 1 insertion(+) + +commit 30dfc353920df56e31555d9e58a690d9d552058f +Author: David Zeuthen +AuthorDate: Thu Jun 9 13:22:18 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu Jun 9 13:22:18 2011 -0400 + + gdbus: Add --recurse and --only-properties options + + These options are useful when debugging D-Bus services and working + with bug reports. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus.xml | 47 ++++++++++- + gio/gdbus-tool.c | 185 + ++++++++++++++++++++++++++++++------------- + 2 files changed, 178 insertions(+), 54 deletions(-) + +commit c672b73602e1cec90cf60e464de5c9a26d0dacd5 +Author: David Zeuthen +AuthorDate: Thu Jun 9 12:25:04 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu Jun 9 12:25:27 2011 -0400 + + gdbus: Clarify the --xml option in the man page + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus.xml | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 13b93f0c48a39c3502f55e011362bcb4d40a5a7d +Author: David Zeuthen +AuthorDate: Thu Jun 9 12:02:30 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu Jun 9 12:02:30 2011 -0400 + + Bug 652197 – Improper handling of double values in GDBusMessage + + Matthew Bucknall pointed out + + GDBusMessage does not serialize/deserialize double values correctly + on platforms with strict alignment constraints (in my particular + case, ARM926EJ-S). + + This was reported in + + https://bugzilla.gnome.org/show_bug.cgi?id=652197 + + Signed-off-by: David Zeuthen + + gio/gdbusmessage.c | 21 ++++++++++++--------- + 1 file changed, 12 insertions(+), 9 deletions(-) + +commit f819aa5f1715bb67fd4e269a6e8021144ecf91a6 +Author: David Zeuthen +AuthorDate: Thu Jun 9 11:51:47 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu Jun 9 11:53:08 2011 -0400 + + gdbus-codegen: Fix build + + See https://bugzilla.gnome.org/show_bug.cgi?id=651998 for details. + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen_main.py | 0 + gio/tests/Makefile.am | 2 +- + gio/tests/gdbus-object-manager-example/Makefile.am | 2 +- + 3 files changed, 2 insertions(+), 2 deletions(-) + +commit caa8d2ae18b16b200c7d401713733785fa818f5f +Author: Ryan Lortie +AuthorDate: Sat Mar 12 22:04:53 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jun 9 11:42:35 2011 -0400 + + Document the deprecatation of G_CONST_RETURN + + ...but don't actually deprecate it yet. + + docs/reference/glib/tmpl/macros.sgml | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 8073759f8cad2033169730c1b95af5b763e3c126 +Author: Ryan Lortie +AuthorDate: Sat Mar 12 21:50:45 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jun 9 11:15:40 2011 -0400 + + Remove all uses of G_CONST_RETURN + + Just use 'const'. + + https://bugzilla.gnome.org/show_bug.cgi?id=644611 + + glib/gchecksum.c | 2 +- + glib/gchecksum.h | 2 +- + glib/gconvert.c | 4 ++-- + glib/gconvert.h | 2 +- + glib/gdataset.c | 6 +++--- + glib/gdir.c | 4 ++-- + glib/gdir.h | 2 +- + glib/giochannel.c | 4 ++-- + glib/giochannel.h | 4 ++-- + glib/glibintl.h | 6 +++--- + glib/gmain.c | 2 +- + glib/gmain.h | 2 +- + glib/gmarkup.c | 4 ++-- + glib/gmarkup.h | 4 ++-- + glib/goption.c | 4 ++-- + glib/goption.h | 4 ++-- + glib/gquark.h | 6 +++--- + glib/gstrfuncs.c | 16 +++++++-------- + glib/gstrfuncs.h | 18 ++++++++--------- + glib/gunicode.h | 2 +- + glib/gutf8.c | 2 +- + glib/gutils.c | 56 + +++++++++++++++++++++++++-------------------------- + glib/gutils.h | 40 ++++++++++++++++++------------------ + gmodule/gmodule.c | 6 +++--- + gmodule/gmodule.h | 4 ++-- + gobject/gbinding.c | 4 ++-- + gobject/gbinding.h | 4 ++-- + gobject/gparam.c | 6 +++--- + gobject/gparam.h | 6 +++--- + gobject/gsignal.c | 2 +- + gobject/gsignal.h | 2 +- + gobject/gtype.c | 6 +++--- + gobject/gtype.h | 6 +++--- + gobject/gvaluetypes.h | 2 +- + 34 files changed, 122 insertions(+), 122 deletions(-) + +commit 8f21e8145cf084ecd66c30cd868f56f7dcd87334 +Author: Ryan Lortie +AuthorDate: Thu Jun 9 11:11:30 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 9 11:11:30 2011 -0400 + + gobject: remove -DG_DISABLE_CONST_RETURNS + + GObject had a few cases of depending on G_CONST_RETURN not being + defined + to 'const'. Remove those in preparation for deprecation of + G_CONST_RETURN. + + gobject/Makefile.am | 3 +-- + gobject/gbinding.c | 4 ++-- + gobject/gobject.c | 2 +- + gobject/gparam.c | 3 ++- + gobject/gtype.c | 2 +- + gobject/testgobject.c | 4 ++-- + 6 files changed, 9 insertions(+), 9 deletions(-) + +commit 5794393c6fc6d63f4f1c9dd6fdd72946728f4246 +Author: Alexander Shopov +AuthorDate: Thu Jun 9 07:00:57 2011 +0300 +Commit: Alexander Shopov +CommitDate: Thu Jun 9 07:01:40 2011 +0300 + + Updated Bulgarian translation + + po/bg.po | 902 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 479 insertions(+), 423 deletions(-) + +commit b04f6dbca02e9f15e07fb82cb52287c5ce15e861 +Author: Matthias Clasen +AuthorDate: Wed Jun 8 23:48:55 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 8 23:48:55 2011 -0400 + + Move gmain docs inline + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/main.sgml | 906 + ------------------------------------ + glib/gmain.h | 16 + + 3 files changed, 17 insertions(+), 906 deletions(-) + +commit 7648415a5012ee595b07490f818f940e2bea2f7c +Author: Matthias Clasen +AuthorDate: Wed Jun 8 23:44:39 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 8 23:44:39 2011 -0400 + + Move gutils docs inline + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/misc_utils.sgml | 458 + ------------------------------- + glib/gprimes.c | 20 +- + glib/gtypes.h | 9 + + glib/gutils.c | 59 ++++ + glib/gutils.h | 27 +- + 6 files changed, 102 insertions(+), 472 deletions(-) + +commit e89f183cf66e6a0846f267853cf9bb44ff52fb8a +Author: Matthias Clasen +AuthorDate: Wed Jun 8 23:29:21 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 8 23:29:21 2011 -0400 + + Remove unused template + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/gregex.sgml | 521 + ----------------------------------- + 2 files changed, 1 insertion(+), 521 deletions(-) + +commit 602f8baa0b572ef8693a6ec6711ecca0399a6b3f +Author: Christophe Fergeau +AuthorDate: Wed Jun 8 11:18:26 2011 +0200 +Commit: Matthias Clasen +CommitDate: Wed Jun 8 22:39:35 2011 -0400 + + bitlock: don't use asm goto on older gcc + + asm goto was addded in gcc 4.5 so don't try to use it on gcc versions + older than this one. This is achieved by explicitly checking gcc + version, an alternative would be to try to compile a program using + asm volatile in configure. + + https://bugzilla.gnome.org/show_bug.cgi?id=651959 + + glib/gbitlock.c | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +commit d6b341c38c94bf684e84a5d2f0af1a5bc3c5ae1c +Author: Matthias Clasen +AuthorDate: Wed Jun 8 22:38:11 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 8 22:38:11 2011 -0400 + + Test the previous fix + + Just make one of the existing GApplication test cases use + a dash in the id. + + gio/tests/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f44cd4129356dd569fd90e3ea83e386bce0602a7 +Author: Ryan Lortie +AuthorDate: Wed Jun 8 22:21:15 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jun 8 22:21:15 2011 -0400 + + GApplication: allow '-' in application ID + + By converting it to _ before trying to shove it into an object path. + + https://bugzilla.gnome.org/show_bug.cgi?id=652025 + + gio/gapplicationimpl-dbus.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 6418769e4cf5657104e5842c3f60d67863c70560 +Author: Colomban Wendling +AuthorDate: Tue Jun 7 21:59:15 2011 +0200 +Commit: Matthias Clasen +CommitDate: Wed Jun 8 16:56:40 2011 -0400 + + Fix a typo in GBinding + + https://bugzilla.gnome.org/show_bug.cgi?id=652081 + + gobject/gbinding.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 20d56289b97f9e8fd290f5ff41e9bfb69329423c +Author: Javier Jardón +AuthorDate: Wed Jun 8 16:26:08 2011 +0100 +Commit: Javier Jardón +CommitDate: Wed Jun 8 16:28:16 2011 +0100 + + gconverter: Improve cross-references + + gio/gconverter.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit adf70f4596c18982b984639c1b697cd4cabad13f +Author: Dan Winship +AuthorDate: Tue Jun 7 17:22:58 2011 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 7 17:22:58 2011 -0400 + + Fix export_symbols variable in gio/Makefile.am + + https://bugzilla.gnome.org/show_bug.cgi?id=646608 + + gio/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 686f32fcc24a380400846c20c824fa5ef6484772 +Author: Dan Winship +AuthorDate: Tue Jun 7 17:19:24 2011 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 7 17:19:24 2011 -0400 + + Fix "Since" tags on g_data_input_stream_read_upto{,_async} + + https://bugzilla.gnome.org/show_bug.cgi?id=647930 + + gio/gdatainputstream.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 37c9775b82021045042ea98e8617210c1cc459ee +Author: Giovanni Campagna +AuthorDate: Sun Apr 3 18:53:04 2011 +0200 +Commit: Colin Walters +CommitDate: Tue Jun 7 17:13:15 2011 -0400 + + gutils, gspawn: fix introspection annotations + + Fix various (out) arguments, (allow-none) and (array + zero-terminated=1) + for g_spawn_*() and some others. + + Some additional fixes by Colin Walters + + https://bugzilla.gnome.org/show_bug.cgi?id=646635 + + glib/gspawn.c | 54 +++++++++++++++++++++++++++--------------------------- + glib/gutils.c | 6 +++--- + 2 files changed, 30 insertions(+), 30 deletions(-) + +commit f0620902b2991577fbf0f69d2564535e7306ce20 +Author: Colin Walters +AuthorDate: Tue Jun 7 17:07:46 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 7 17:07:46 2011 -0400 + + Update annotations from gobject-introspection/gir/glib-2.0.c + + This covers most of them. + + glib/gcompletion.c | 2 +- + glib/gconvert.c | 6 +++--- + glib/gfileutils.c | 2 +- + glib/giochannel.c | 1 + + glib/gkeyfile.c | 15 ++++++++------- + glib/gmain.c | 6 +++++- + glib/goption.c | 4 ++-- + 7 files changed, 21 insertions(+), 15 deletions(-) + +commit dad374b1a05bc98a5b8c90e2de51ce87dc4fbd8f +Author: Colin Walters +AuthorDate: Tue Jun 7 16:26:43 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 7 16:26:43 2011 -0400 + + glib-types.h: Include glib.h, since we use G_BEGIN_DECLS + + This header is included individually by g-ir-scanner. + + gobject/glib-types.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit ab0e9dbfa76e056f875e969c0d7b6e133ec75431 +Author: Colin Walters +AuthorDate: Fri Jun 3 14:53:27 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 7 14:18:36 2011 -0400 + + Generate $module-public-headers.txt file, feed it to gtk-doc + + Rather than having the gtk-doc build machinery have a list of header + files to exclude, change the GLib build to dump a list of public + header files generated from the maintained Makefile.am files for + each of glib/, gobject/, gio/. + + Also, for glib, always install glib-unix.h, even on non-Unix + platforms, for the same reason we install gwin32.h even on Unix. + + https://bugzilla.gnome.org/show_bug.cgi?id=651745 + + docs/reference/gio/Makefile.am | 2 +- + docs/reference/glib/Makefile.am | 28 +--------------------------- + docs/reference/gobject/Makefile.am | 7 +------ + gio/Makefile.am | 10 +++++++++- + glib/Makefile.am | 12 +++++++++--- + gobject/Makefile.am | 8 ++++++++ + 6 files changed, 29 insertions(+), 38 deletions(-) + +commit 003e05244259aeb8e221065a7f41137cc523aefb +Author: Colin Walters +AuthorDate: Tue Jun 7 14:17:11 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 7 14:17:11 2011 -0400 + + gdbus-codegen: Clean config.pyc to make distcheck happy + + gio/gdbus-codegen/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit de57755dbcfdea7e7233c6fd53ecca8a41ea4aa5 +Author: Colin Walters +AuthorDate: Tue Jun 7 13:02:41 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 7 13:02:41 2011 -0400 + + g_get_user_data_dir(): Don't warn if XDG_RUNTIME_DIR isn't set + + We have a meaningful fallback, and warning causes the tests to break. + + glib/gutils.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit 5f35cb9db42ba8faf6f545afa4ac78f84e3a8155 +Author: Kjartan Maraas +AuthorDate: Tue Jun 7 10:02:40 2011 +0200 +Commit: Kjartan Maraas +CommitDate: Tue Jun 7 10:02:40 2011 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 390 + +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 227 insertions(+), 163 deletions(-) + +commit 63dc9730ff31af7c830f1ce51c0f98c3829564b7 +Author: Marek Černocký +AuthorDate: Tue Jun 7 08:08:16 2011 +0200 +Commit: Marek Černocký +CommitDate: Tue Jun 7 08:08:16 2011 +0200 + + Updated Czech translation + + po/cs.po | 757 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 376 insertions(+), 381 deletions(-) + +commit d4be2925e43a521649c465ba35b15cc228613b95 +Author: Matthias Clasen +AuthorDate: Mon Jun 6 23:24:36 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 6 23:25:42 2011 -0400 + + Add a testcase for the previous fix + + glib/tests/dataset.c | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +commit c91720255261222d7be685f3a8f039706f04cce5 +Author: Matthias Clasen +AuthorDate: Mon Jun 6 23:23:29 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 6 23:25:42 2011 -0400 + + GDataList: don't hold the bitlock over callbacks + + g_datalist_id_clear_i was dropping the dataset lock around + the destroy notifies, but kept the bitlock. This was causing + deadlocks when finalizing widgets. + + glib/gdataset.c | 45 +++++++++++++++++++++++++++++---------------- + 1 file changed, 29 insertions(+), 16 deletions(-) + +commit 7f6a8d3484827e77b4ce2f046660e54c1fe3fa29 +Author: Chun-wei Fan +AuthorDate: Tue Jun 7 10:58:54 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jun 7 10:58:54 2011 +0800 + + Update VS 2008/2010 property sheets + + "Install" the new gobject/glib-types.h as well... it is needed. + + build/win32/vs10/glib.props | 2 ++ + build/win32/vs9/glib.vsprops | 1 + + 2 files changed, 3 insertions(+) + +commit 09c98f18fcfdaa58864ef127788cbf6332728a94 +Author: Chun-wei Fan +AuthorDate: Tue Jun 7 10:49:29 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jun 7 10:49:29 2011 +0800 + + Update gsettings utilities in GIO + + Avoid C99-style variable declaration + + gio/glib-compile-schemas.c | 9 +++++++-- + gio/gsettings-tool.c | 7 ++++++- + 2 files changed, 13 insertions(+), 3 deletions(-) + +commit 1d1f44ca64c671e5e8853279ffb70260ac22a5ba +Author: Chun-wei Fan +AuthorDate: Tue Jun 7 10:32:47 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jun 7 10:32:47 2011 +0800 + + Update config.h.win32.in + + -Make contents more like the current config.h(.in) + -vsnprintf is included in VS 2008+ + + config.h.win32.in | 66 + ++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 46 insertions(+), 20 deletions(-) + +commit 405b4ff4f4efda5777a7d521255b9143cdae59d7 +Author: Chun-wei Fan +AuthorDate: Tue Jun 7 08:55:31 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jun 7 08:55:31 2011 +0800 + + Update the year in the *.rc.in files + + Sorry this change came a bit late... + + gio/gio.rc.in | 2 +- + glib/glib.rc.in | 2 +- + gmodule/gmodule.rc.in | 2 +- + gobject/gobject.rc.in | 2 +- + gthread/gthread.rc.in | 2 +- + 5 files changed, 5 insertions(+), 5 deletions(-) + +commit e154e3325eb7274b8164f8d7a5e0f335646c2bb7 +Author: Chun-wei Fan +AuthorDate: Tue Jun 7 08:25:07 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jun 7 08:25:07 2011 +0800 + + Clean up gobject/gvaluetransform.c a bit + + The check for _MSC_VER here is not necessary here because: + -One cannot compile GLib out-of-the-box with VS 2003 (let alone VS6 + or earlier) since GLib 2.22.4 or so. + -This code compiles fine with the currently-supported VS versions + (2008/2010) without the error mentioned in the comments. + + This will close Bug 652002. + + gobject/gvaluetransform.c | 8 -------- + 1 file changed, 8 deletions(-) + +commit fba436f2cb894646d758cc32e3a1ae839591a11f +Author: Chun-wei Fan +AuthorDate: Tue Jun 7 08:20:15 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jun 7 08:20:15 2011 +0800 + + Fix gatomic.c compilation on Windows (MSVC) + + -windows.h must be included for the functions[1] to be found during + compilation + -For Win32(x86), the InterlockedAnd, InterlockedOr and InterlockedXor + functions need to be preceded with an underscore. This is mandated + by the "For the x86 architecture..." clause under "Remarks"[2] + -This will close Bug 652000 + + [1]:http://msdn.microsoft.com/en-us/library/ms684122(v=vs.85).aspx + [2]:http://msdn.microsoft.com/en-us/library/ms683516(v=vs.85).aspx + http://msdn.microsoft.com/en-us/library/ms683626(v=vs.85).aspx + http://msdn.microsoft.com/en-us/library/ms684021(v=vs.85).aspx + + glib/gatomic.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 62072b2a043ab872e45c89b6f7f9073cd7035bf5 +Author: Colin Walters +AuthorDate: Mon Jun 6 17:14:45 2011 -0400 +Commit: Colin Walters +CommitDate: Mon Jun 6 17:14:45 2011 -0400 + + gdbus codegen: Ensure PYTHONPATH is set correctly for srcdir != + builddir + + We need to pick up the Python files from the source directory, so set + PYTHONPATH. + + gio/tests/Makefile.am | 2 +- + gio/tests/gdbus-object-manager-example/Makefile.am | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit c08fc65edf1eb4c68208b7621f8af762aeb02dc4 +Author: Chun-wei Fan +AuthorDate: Tue Jun 7 00:37:38 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Jun 7 00:37:38 2011 +0800 + + Update GLib VS9/10 projects + + There is no longer need to distinguish between gatomic.c and + gatomic-gcc.c. + This will avoid gatomic.c from being included in the projects twice. + + build/win32/vs10/glib.vcxproj.filtersin | 3 --- + build/win32/vs10/glib.vcxprojin | 1 - + build/win32/vs9/glib.vcprojin | 1 - + 3 files changed, 5 deletions(-) + +commit 1eb7efce8e0f9c28de0bbd5c922cb2ee52f88108 +Author: Dan Winship +AuthorDate: Mon Jun 6 10:22:40 2011 -0400 +Commit: Dan Winship +CommitDate: Mon Jun 6 10:23:34 2011 -0400 + + Fix some socket docs issues, remove unused typedefs + + pointed out by Matthias + + gio/gioenums.h | 2 +- + gio/giotypes.h | 3 --- + gio/gproxyresolver.c | 2 +- + gio/gthreadedsocketservice.c | 2 +- + 4 files changed, 3 insertions(+), 6 deletions(-) + +commit a6f09e104c2b96f08c7c58a8db15059d17a8fd84 +Author: Colin Walters +AuthorDate: Fri Jun 3 13:18:44 2011 -0400 +Commit: Colin Walters +CommitDate: Mon Jun 6 09:58:21 2011 -0400 + + GBuffer: Suffix header with private.h + + This makes it clearer it's not public API yet. + + https://bugzilla.gnome.org/show_bug.cgi?id=651745 + + docs/reference/glib/Makefile.am | 2 +- + glib/Makefile.am | 2 +- + glib/gbuffer.c | 2 +- + glib/gbuffer.h | 88 + ----------------------------------------- + glib/gbufferprivate.h | 88 + +++++++++++++++++++++++++++++++++++++++++ + glib/gmappedfile.c | 2 +- + glib/gtimezone.c | 2 +- + glib/gvariant-core.c | 2 +- + glib/gvariant-core.h | 2 +- + 9 files changed, 95 insertions(+), 95 deletions(-) + +commit 782cf86f12a54065fedd6c232cb52c76dce32538 +Author: Matthias Clasen +AuthorDate: Mon Jun 6 01:14:23 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 6 01:14:23 2011 -0400 + + GMappedFile: improve test coverage + + glib/tests/mappedfile.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit 698bb5d962d8eebfe5315ca550870727b5c93117 +Author: Matthias Clasen +AuthorDate: Mon Jun 6 01:14:00 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 6 01:14:00 2011 -0400 + + GKeyFile: improve test coverage + + glib/tests/keyfile.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 7cf16c3094d33c07960e2d563dd50ed56e525846 +Author: Matthias Clasen +AuthorDate: Mon Jun 6 01:13:46 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 6 01:13:46 2011 -0400 + + GConvert: improve test coverage + + glib/tests/convert.c | 33 +++++++++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +commit e02d8165d9e249e16328e1a9db9a8ad633a02d0f +Author: Matthias Clasen +AuthorDate: Mon Jun 6 01:13:26 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 6 01:13:26 2011 -0400 + + Improve GChecksum test coverage + + glib/tests/checksum.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 4971c43da8b2c76e5fd26ef23e47a1301d31f078 +Author: Matthias Clasen +AuthorDate: Mon Jun 6 01:04:19 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 6 01:04:19 2011 -0400 + + GMappedFile: remove nonatomic accesses to ref_count + + glib/gmappedfile.c | 2 -- + 1 file changed, 2 deletions(-) + +commit ae9611839555a6aae975f12cd1103df9014d0579 +Author: Matthias Clasen +AuthorDate: Mon Jun 6 00:31:52 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 6 00:31:52 2011 -0400 + + Improve test coverage of gtimezone.c + + glib/tests/gdatetime.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit f0b14653f8d049c033071e1bcaf33ae87ca2edff +Author: Matthias Clasen +AuthorDate: Mon Jun 6 00:31:40 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 6 00:31:40 2011 -0400 + + Improve test coverage of GVariant + + glib/tests/gvariant.c | 36 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 36 insertions(+) + +commit 70c082127f12e1758087ae9dd61cfbbd5f397830 +Author: Matthias Clasen +AuthorDate: Mon Jun 6 00:31:24 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 6 00:31:24 2011 -0400 + + Improve test coverage of glist.c + + glib/tests/list.c | 43 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 43 insertions(+) + +commit 3e93fa7a2556ed5b3dbb53c60837a132e0a71772 +Author: Matthias Clasen +AuthorDate: Mon Jun 6 00:31:06 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 6 00:31:06 2011 -0400 + + Improve test coverage of glib-unix.c + + glib/tests/unix.c | 21 ++++++++++++++++++--- + 1 file changed, 18 insertions(+), 3 deletions(-) + +commit bb0cbc2ae121c444f13520e73a30ad47ba2ccc0a +Author: Matthias Clasen +AuthorDate: Mon Jun 6 00:30:50 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 6 00:30:50 2011 -0400 + + Improve test coverage of gurifuncs.c + + glib/tests/uri.c | 32 ++++++++++++++++++++++++++++++++ + 1 file changed, 32 insertions(+) + +commit abf4a0200fb9d8bf42e1bfd64c297e7cfe5367f8 +Author: Matthias Clasen +AuthorDate: Mon Jun 6 00:30:30 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 6 00:30:30 2011 -0400 + + Test runtime dir getter + + tests/testglib.c | 21 +++++++++++++++++---- + 1 file changed, 17 insertions(+), 4 deletions(-) + +commit 1f022a88d4e46c1297d78a73c9331cd2ce2af53b +Author: Matthias Clasen +AuthorDate: Mon Jun 6 00:30:02 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 6 00:30:02 2011 -0400 + + Remove deprecated atomic functions from tests + + tests/atomic-test.c | 4 ++-- + tests/onceinit.c | 10 +++++----- + 2 files changed, 7 insertions(+), 7 deletions(-) + +commit 059fa31ad1e4b5a262f34bb8122fc5080b33fc97 +Author: Matthias Clasen +AuthorDate: Mon Jun 6 00:28:38 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 6 00:28:38 2011 -0400 + + Improve test coverage + + Duplicate the atomic tests for the functions, and + test the new atomic operations as well. + + glib/tests/atomic.c | 184 + +++++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 167 insertions(+), 17 deletions(-) + +commit a79a5a6202054de5d9b8d7aa3506818c8e33ec27 +Author: Matthias Clasen +AuthorDate: Sun Jun 5 22:20:18 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 5 22:20:18 2011 -0400 + + No need to have two variants of errno-to-GError + + glib/glib-unix.c | 30 +++++++++--------------------- + 1 file changed, 9 insertions(+), 21 deletions(-) + +commit d811f0cdc9fadc60628c85e4473c4458e755c8b3 +Author: Matthias Clasen +AuthorDate: Sun Jun 5 19:07:06 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 5 19:07:06 2011 -0400 + + Fix a typo + + And reword some docs. + + gobject/gobject.c | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +commit 16731b60db541c928338e8aaea0a930b6a508f5f +Author: Fran Diéguez +AuthorDate: Sun Jun 5 23:30:42 2011 +0200 +Commit: Fran Diéguez +CommitDate: Sun Jun 5 23:30:42 2011 +0200 + + Updated Galician translations + + po/gl.po | 925 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 502 insertions(+), 423 deletions(-) + +commit 03441e406c65cdf8fe56e75aa386b5a04235e203 +Author: Kalev Lember +AuthorDate: Sun Jun 5 14:34:33 2011 +0300 +Commit: Kalev Lember +CommitDate: Sun Jun 5 19:38:47 2011 +0300 + + configure.ac: Check for qsort_r function before running the test + program + + When cross compiling, test programs cannot be run. In order to make it + easier to cross compile for targets that do not have qsort_r(), check + for the function before trying to run the test program. + + This avoid having to populate cache with glib_cv_have_qsort_r=no with + e.g. mingw cross compiler. + + https://bugzilla.gnome.org/show_bug.cgi?id=651920 + + configure.ac | 63 + +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 33 insertions(+), 30 deletions(-) + +commit 886a3499e1c886d4320617f6272e03d6d77efdbc +Author: Kalev Lember +AuthorDate: Sun Jun 5 14:26:12 2011 +0300 +Commit: Kalev Lember +CommitDate: Sun Jun 5 19:37:49 2011 +0300 + + configure.ac: Print qsort_r result only once + + AC_CACHE_CHECK that was introduced in 70a19815 prints the result, + so the + following AC_MSG_RESULT is no longer needed. + + configure.ac | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +commit f3f5c410f03b71790a985d21ef3c92f138d2a44c +Author: Jorge González +AuthorDate: Sun Jun 5 16:59:31 2011 +0200 +Commit: Jorge González +CommitDate: Sun Jun 5 16:59:31 2011 +0200 + + Updated Spanish translation + + po/es.po | 325 + ++++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 199 insertions(+), 126 deletions(-) + +commit 3b242bc5e9cf96188e61002e175ed33777a82e5d +Author: Matthias Clasen +AuthorDate: Sat Jun 4 23:43:05 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 4 23:43:05 2011 -0400 + + Use g_param_spec_ref_sink instead of separate ref, sink + + gobject/gobject.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 9eda9d919584179ec1889d5b7e6162cd1ae21052 +Author: Matthias Clasen +AuthorDate: Sat Jun 4 23:42:07 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 4 23:42:07 2011 -0400 + + GParamSpec: avoid unnecessary double initialization of qdata + + gobject/gparam.c | 25 +++++++++---------------- + 1 file changed, 9 insertions(+), 16 deletions(-) + +commit 38dc7955e46cf52ac4fce907ace6b354eaa8c0c6 +Author: Matthias Clasen +AuthorDate: Sat Jun 4 23:13:55 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 4 23:14:32 2011 -0400 + + No necessary to init qdata atomically + + gobject/gobject.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f1e5af4e120439d5c26ac4f277cbc315d0ce2504 +Author: David Zeuthen +AuthorDate: Sat Jun 4 21:37:37 2011 -0400 +Commit: David Zeuthen +CommitDate: Sat Jun 4 21:37:37 2011 -0400 + + GDBusObject: Remove comment non-existant virtual functions + + These were nuked a while ago. + + Signed-off-by: David Zeuthen + + gio/gdbusobject.h | 4 ---- + 1 file changed, 4 deletions(-) + +commit b3effbf6833f9514dd3e4a57c35b28e6cd4aefae +Author: Matthias Clasen +AuthorDate: Sat Jun 4 20:06:44 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 4 20:06:44 2011 -0400 + + bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3e6dc0d8fa256a93623b3614a6bfc0e605f8efcb +Author: Matthias Clasen +AuthorDate: Sat Jun 4 18:48:54 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 4 19:05:51 2011 -0400 + + 2.29.6 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9a6529442c3e82bb8151f7ed72edd72559c4fc63 +Author: Matthias Clasen +AuthorDate: Sat Jun 4 19:05:19 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 4 19:05:51 2011 -0400 + + Fix doc syntax + + gio/gcontenttype.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 01f63b19f9f0ddfff3ccfbb1a15ba6e3d68d9c67 +Author: Matthias Clasen +AuthorDate: Sat Jun 4 18:44:44 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 4 18:48:19 2011 -0400 + + Fix links in gio docs + + docs/reference/gio/migrating-gconf.xml | 7 +++---- + gio/gaction.c | 18 +++++++++--------- + gio/gactiongroup.c | 34 + ++++++++++++++++++---------------- + gio/gactiongroup.h | 22 +++++++++++----------- + gio/gappinfo.c | 10 +++++----- + gio/gasyncinitable.c | 19 +++++++++---------- + gio/gdbusconnection.c | 8 +++----- + gio/gfileinfo.c | 2 +- + gio/gicon.c | 2 +- + gio/gproxy.c | 2 +- + gio/gsocketclient.c | 6 +++--- + gio/gsocketservice.c | 22 +++++++++++----------- + gio/gthreadedsocketservice.c | 6 +++--- + gio/gtlsconnection.c | 6 +++--- + gio/gunixcredentialsmessage.c | 2 +- + gio/gunixmounts.c | 2 +- + 16 files changed, 83 insertions(+), 85 deletions(-) + +commit cb9c92cdb4e4141adab4c43825ad114f16e1b473 +Author: Yaron Shahrabani +AuthorDate: Sun Jun 5 01:05:03 2011 +0300 +Commit: Yaron Shahrabani +CommitDate: Sun Jun 5 01:05:03 2011 +0300 + + Updated Hebrew translation. + + po/he.po | 141 + +++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 96 insertions(+), 45 deletions(-) + +commit 594bf7460a321a6a65743dff960d017b086e3aba +Author: Matthias Clasen +AuthorDate: Sat Jun 4 14:40:23 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 4 14:43:52 2011 -0400 + + Fix parameter documentation for many functions + + Use the opt-out mechanism introduced in gtk-doc 1.16 to work + around problems with the _utf8 renaming games that the win32 + port is playing in our headers. + + https://bugzilla.gnome.org/show_bug.cgi?id=638449 + + glib/gconvert.h | 2 ++ + glib/gdir.h | 2 ++ + glib/gfileutils.h | 2 ++ + glib/gspawn.h | 2 ++ + glib/gutils.h | 8 ++++++-- + 5 files changed, 14 insertions(+), 2 deletions(-) + +commit 75f7eef9cd1f4bdbae6c75c53ed340ea8b5ba4c5 +Author: Matthias Clasen +AuthorDate: Sat Jun 4 11:57:10 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 4 14:43:52 2011 -0400 + + Fix doc typos + + Now with fewer broken links... + + docs/reference/glib/building.sgml | 2 +- + docs/reference/glib/running.sgml | 2 +- + docs/reference/glib/tmpl/macros_misc.sgml | 7 +- + docs/reference/glib/tmpl/queue.sgml | 4 +- + glib/garray.c | 3 +- + glib/gdataset.c | 4 +- + glib/gdatetime.c | 4 +- + glib/giochannel.c | 2 +- + glib/glib-unix.c | 2 +- + glib/gmain.c | 8 +-- + glib/gmarkup.c | 2 +- + glib/gqueue.c | 2 +- + glib/gsequence.c | 107 + +++++++++++++++++------------- + glib/gtree.c | 28 ++++---- + 14 files changed, 97 insertions(+), 80 deletions(-) + +commit 3b9c8962dc470a451fa639067faa39fb8fc85f95 +Author: Matthias Clasen +AuthorDate: Sat Jun 4 11:46:10 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 4 14:43:20 2011 -0400 + + configure.in: Use tar-ustar to avoid name length limitations + + Also use dist-bzip2. + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 635f5373c238bdb4cba6781b705319f869404e94 +Author: David Zeuthen +AuthorDate: Sat Jun 4 12:43:00 2011 -0400 +Commit: David Zeuthen +CommitDate: Sat Jun 4 12:43:00 2011 -0400 + + Fix up gdbus invocation in example + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 0b41002474abd7a95c53b76fba937a922aa0ea86 +Author: David Zeuthen +AuthorDate: Sat Jun 4 12:33:39 2011 -0400 +Commit: David Zeuthen +CommitDate: Sat Jun 4 12:36:38 2011 -0400 + + gdbus: Add a way to emit a signal + + See https://bugs.freedesktop.org/show_bug.cgi?id=37890#c6 where it was + discovered that dbus-send(1) actually doesn't work (either libdbus-1's + flush implementation or dbus-send(1)'s usage of it is broken) so it's + useful to have here. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus.xml | 43 ++++++++- + gio/gdbus-tool.c | 203 + ++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 242 insertions(+), 4 deletions(-) + +commit 0c8bb8d479d0c6992bc82508aff69d61a340c694 +Author: David Zeuthen +AuthorDate: Sat Jun 4 11:52:08 2011 -0400 +Commit: David Zeuthen +CommitDate: Sat Jun 4 11:52:59 2011 -0400 + + Fix typos in "Migrating to GDBus" docs + + It's Skeleton now, not Stub. + + Signed-off-by: David Zeuthen + + docs/reference/gio/migrating-gdbus.xml | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 87dc08ee4d7e5dac7db80a5642cb85e1f40e1ce8 +Author: Matthias Clasen +AuthorDate: Sat Jun 4 10:46:38 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 4 10:46:38 2011 -0400 + + Distcheck fixes + + Fix VPATH builds. + + gio/tests/gdbus-object-manager-example/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1aa348c14c349d73ded8c9165c532feb463bc187 +Author: Matthias Clasen +AuthorDate: Sat Jun 4 10:45:30 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 4 10:45:54 2011 -0400 + + Distcheck fixes + + Accidentally committed debug leftover. + + gio/abicheck.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c40199b450f1abef30d9514e3ec34b52669add9a +Author: Matthias Clasen +AuthorDate: Sat Jun 4 08:13:48 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 4 08:13:48 2011 -0400 + + Update NEWS + + NEWS | 77 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 71 insertions(+), 6 deletions(-) + +commit e32a9406b1b3089e551cd8baa0824874c0de64cc +Author: Yaron Shahrabani +AuthorDate: Sat Jun 4 13:44:19 2011 +0300 +Commit: Yaron Shahrabani +CommitDate: Sat Jun 4 13:44:19 2011 +0300 + + Updated Hebrew translation. + + po/he.po | 186 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 97 insertions(+), 89 deletions(-) + +commit c5d9a46394a147c8a6c8708046e7459c55d477e4 +Author: Paolo Bonzini +AuthorDate: Tue Jan 25 11:31:41 2011 +0100 +Commit: Matthias Clasen +CommitDate: Sat Jun 4 00:00:24 2011 -0400 + + avoid quadratic behavior of GMainLoop when all fd's have the same + priority + + https://bugzilla.gnome.org/show_bug.cgi?id=640518 + + glib/gmain.c | 49 +++++++++++++++++++++++++++++++------------------ + 1 file changed, 31 insertions(+), 18 deletions(-) + +commit 1e88c5321c1fede65e150898f3e298052add241c +Author: Matthias Clasen +AuthorDate: Fri Jun 3 23:38:46 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 3 23:38:46 2011 -0400 + + Add a test for the previous fix + + glib/tests/rand.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +commit 77be95cdce7f875a10576ac72624024b04b86a65 +Author: Matthias Clasen +AuthorDate: Fri Jun 3 23:37:23 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 3 23:37:23 2011 -0400 + + GRand: avoid overflow + + Otherwise, g_random_double_range (-G_MAXDOUBLE, G_MAXDOUBLE) + doesn't work as expected. + + https://bugzilla.gnome.org/show_bug.cgi?id=502560 + + glib/grand.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit deed4dd36b3d0f4913a1350536dce0cd010b0549 +Author: Matthias Clasen +AuthorDate: Fri Jun 3 22:45:51 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 3 22:45:51 2011 -0400 + + g_mkdir_with_parents: cope with dirs popping into existence + + Don't bail out if a directory suddenly turns out to exist + after all. Proposed in bug 612729. + + glib/gfileutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 69efeee287f752befdcaae94f5ec981b33be6377 +Author: Mikhail Zabaluev +AuthorDate: Wed Mar 17 02:34:51 2010 +0200 +Commit: Matthias Clasen +CommitDate: Fri Jun 3 22:31:39 2011 -0400 + + Made g_utf8_to_ucs4_fast() even faster + + https://bugzilla.gnome.org/show_bug.cgi?id=619435 + + glib/gutf8.c | 45 ++++++++++++++++----------------------------- + 1 file changed, 16 insertions(+), 29 deletions(-) + +commit 1b101a38730f151b70f0ada607dbd8e43778f980 +Author: Mikhail Zabaluev +AuthorDate: Mon Mar 15 03:37:11 2010 +0200 +Commit: Matthias Clasen +CommitDate: Fri Jun 3 22:28:34 2011 -0400 + + Added performance tests for UTF-8 decoding functions + + https://bugzilla.gnome.org/show_bug.cgi?id=619418 + + glib/tests/Makefile.am | 4 + + glib/tests/utf8-performance.c | 202 + ++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 206 insertions(+) + +commit f065d7d60e2b6110705b1b32f050ccad0bcde62f +Author: Matthew Barnes +AuthorDate: Sat Oct 16 07:40:44 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 3 22:04:31 2011 -0400 + + Have g_queue_remove() return a boolean + + g_queue_remove() should return a boolean so callers can verify that an + element was found and removed, as in the following example: + + if (g_queue_remove (queue, referenced_object)) + g_object_unref (referenced_object); + + Similarly, g_queue_remove_all() should return the number of elements + found and removed. + + https://bugzilla.gnome.org/show_bug.cgi?id=632294 + + glib/gqueue.c | 19 +++++++++++++++---- + glib/gqueue.h | 4 ++-- + 2 files changed, 17 insertions(+), 6 deletions(-) + +commit 496157ffd3350799198e32e1002a19fc8be3ea83 +Author: Wim Taymans +AuthorDate: Wed Sep 16 17:39:48 2009 +0200 +Commit: Matthias Clasen +CommitDate: Fri Jun 3 21:42:51 2011 -0400 + + gthread: avoid locking in _get_mutex_impl + + When getting the mutex implementation of a static mutex, avoid taking + the global + lock every time but only take the lock when there was no mutex and + we need to + create one. + + https://bugzilla.gnome.org/show_bug.cgi?id=599954 + + glib/gthread.c | 23 +++++++++++++++++------ + 1 file changed, 17 insertions(+), 6 deletions(-) + +commit fca330dafa9a77edc58a30b6128eaf466d4a2ba7 +Author: Alexander Larsson +AuthorDate: Wed May 25 11:56:51 2011 +0200 +Commit: Matthias Clasen +CommitDate: Fri Jun 3 21:11:26 2011 -0400 + + Use g_atomic_pointer_or/and to set datalist flags + + https://bugzilla.gnome.org/show_bug.cgi?id=650458 + + glib/gdataset.c | 20 ++++---------------- + 1 file changed, 4 insertions(+), 16 deletions(-) + +commit 0a918c0d2a9af992fd100f5608783cffa1a752fc +Author: Alexander Larsson +AuthorDate: Thu May 19 21:55:16 2011 +0200 +Commit: Matthias Clasen +CommitDate: Fri Jun 3 21:11:26 2011 -0400 + + Make g_object_get_data use the new faster g_datalist_get_data + + https://bugzilla.gnome.org/show_bug.cgi?id=650458 + + gobject/gobject.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +commit 1cceda49b60bfd9b326e11996a5c77b10987e57a +Author: Alexander Larsson +AuthorDate: Thu May 19 21:51:49 2011 +0200 +Commit: Matthias Clasen +CommitDate: Fri Jun 3 21:11:26 2011 -0400 + + Make g_datalist_get_data not look up the quark + + Instead of converting the string to a quark and comparing quarks we + use the new lockless g_quark_to_string and just compare the quarks + in the datalist with the given string. + + This means we avoid the global lock for string to quark. Additionally + most of the time the data list will be quite short, so the cost of + doing the sting comparisons is likely similar to that of the quark + hashtable lookup (which does at least one string comparison for a + successfull lookup). + + https://bugzilla.gnome.org/show_bug.cgi?id=650458 + + glib/gdataset.c | 52 + ++++++++++++++++++++++++++++++++++++++++++---------- + glib/gdataset.h | 4 ++-- + glib/glib.symbols | 1 + + 3 files changed, 45 insertions(+), 12 deletions(-) + +commit 7ae5e9c2487dc23d6b584d1508f38f5e89700181 +Author: Alexander Larsson +AuthorDate: Thu May 19 21:30:38 2011 +0200 +Commit: Matthias Clasen +CommitDate: Fri Jun 3 21:11:26 2011 -0400 + + Make quark to string lockless + + We do this by assigning to g_quarks atomically and leaking it when + replacing it atomically. Then its safe to consume the array + on the reader side (atomically). + + Also, since we're leaking quarks on growing, bump the block size + so that we're not leaking as much. gtk3-demo allocates > 1500 quarks, + and gnome apps > 3000. I'm setting the block to 2048 which means no + leaks for small gtk3 apps and just one leak for gnome apps. + + https://bugzilla.gnome.org/show_bug.cgi?id=650458 + + glib/gdataset.c | 37 ++++++++++++++++++++++++++----------- + 1 file changed, 26 insertions(+), 11 deletions(-) + +commit 3f8638ce9335511f12207f2fcbc81847c18d4b49 +Author: Alexander Larsson +AuthorDate: Thu May 19 14:48:50 2011 +0200 +Commit: Matthias Clasen +CommitDate: Fri Jun 3 21:11:19 2011 -0400 + + Make g_datalist not use a global lock and perform better + + This implementation uses a per-list bitlock for user data, and a + simple array rather than a linked list which uses less memory and less + allocations. It also gets better cache behaviour since related things + are stored close to each other. + + https://bugzilla.gnome.org/show_bug.cgi?id=650458 + + glib/gdataset.c | 404 + ++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 244 insertions(+), 160 deletions(-) + +commit 4cd0b86103c987a41ce1ebeb1eee8ad6cf9eac30 +Author: Matthias Clasen +AuthorDate: Fri Jun 3 20:54:32 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 3 20:54:32 2011 -0400 + + Add pointer bitlocks to the docs + + docs/reference/glib/glib-sections.txt | 3 +++ + 1 file changed, 3 insertions(+) + +commit df0b208831a797f402d9f86263e6fa5378da47cc +Author: Ryan Lortie +AuthorDate: Wed May 25 11:08:20 2011 +0200 +Commit: Matthias Clasen +CommitDate: Fri Jun 3 20:50:18 2011 -0400 + + Implement pointer sized bitlocks + + Based on a patch from Alexander Larsson. + + https://bugzilla.gnome.org/show_bug.cgi?id=651467 + + glib/gbitlock.c | 193 + +++++++++++++++++++++++++++++++++++++++++++++ + glib/gbitlock.h | 29 +++++++ + glib/glib.symbols | 3 + + gthread/tests/1bit-mutex.c | 50 +++++++++--- + 4 files changed, 265 insertions(+), 10 deletions(-) + +commit 1a80405a36eae6777cf8dc809da5883ba666f41c +Author: Ryan Lortie +AuthorDate: Fri Jun 3 20:29:41 2011 +0200 +Commit: Matthias Clasen +CommitDate: Fri Jun 3 17:33:39 2011 -0400 + + bitlock: hand-code assembly version for x86 + + The __sync_fetch_and_or() operation on x86 is a bit suboptimal + when the + result isn't ignored. Normally we could use the 'lock or' assembly + instruction to accomplish this, but this instruction discards the + previous value. + + In order to work around this issue, GCC is forced to emit a + compare-and-exchange loop. + + We can easily use the 'lock bts' instruction, though. It can't + be used + in the general case for __sync_fetch_and_or() but it works great + for our + case (test and set a single bit). + + I filed a bug against GCC[1] to get this exposed as a new intrinsic + (or + have the optimiser detect the case) but until then we'll hand-code + it on + x86 and amd64. + + The uncontended case sees a 31% improvement on my test machine. + + [1] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49244 + + https://bugzilla.gnome.org/show_bug.cgi?id=651467 + + glib/gbitlock.c | 57 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 54 insertions(+), 3 deletions(-) + +commit f2bd54d0c5e3093ad141de6142277a27b82147e1 +Author: Giovanni Campagna +AuthorDate: Wed Jun 1 16:45:43 2011 +0200 +Commit: Colin Walters +CommitDate: Fri Jun 3 16:39:43 2011 -0400 + + gvariant: fix introspection annotations + + g_variant_get_strv and g_variant_get_bytestring return arrays that + are null terminated and have an explicit length. Since gjs doesn't + support (out) arrays with length, mark them also null-terminated + (but leave the length annotation, so pygobject can remove the + argument) + + https://bugzilla.gnome.org/show_bug.cgi?id=646635 + + glib/gvariant.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 53ced63c6d4e0df502c6396133dfe67e15f1712b +Author: David Zeuthen +AuthorDate: Fri Jun 3 14:45:29 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Jun 3 14:45:29 2011 -0400 + + Fix include path for gdbus-codegen example XML + + Signed-off-by: David Zeuthen + + docs/reference/gio/migrating-gdbus.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6d54505b2d0e873fa69f1e2fdba1e23c5136f7f3 +Author: David Zeuthen +AuthorDate: Fri Jun 3 14:39:04 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Jun 3 14:39:04 2011 -0400 + + Fix docs for D-Bus introspection data structures + + Mark structs as boxed types and use /*< public >*/ so the struct + members are properly shown. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio.types | 7 +++++++ + gio/gdbusintrospection.h | 7 +++++++ + 2 files changed, 14 insertions(+) + +commit 723adbc2feb72b980b6a62579eaa993b190ca1d3 +Author: David Zeuthen +AuthorDate: Fri Jun 3 13:22:31 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Jun 3 14:18:56 2011 -0400 + + Move gdbus-codegen example code and docs into separate directories + + This avoids the generated types (e.g. ExampleAnimal, ExampleCat, + ExampleObject and ExampleObjectManagerClient) being referenced in the + core gio docs. This was requested by Matthias. + + Signed-off-by: David Zeuthen + + configure.ac | 2 + + docs/reference/gio/Makefile.am | 3 +- + .../gio/gdbus-object-manager-example/Makefile.am | 68 +++++++++ + .../gdbus-object-manager-example-docs.xml | 17 +++ + .../gdbus-object-manager-example-sections.txt | 157 + ++++++++++++++++++++ + .../gdbus-object-manager-example.types | 10 ++ + docs/reference/gio/gio-sections.txt | 158 + --------------------- + docs/reference/gio/gio.types | 10 -- + docs/reference/gio/migrating-gdbus.xml | 12 +- + gio/Makefile.am | 28 ---- + gio/gdbus-example-objectmanager.xml | 65 --------- + gio/tests/Makefile.am | 8 +- + gio/tests/gdbus-object-manager-example/Makefile.am | 48 +++++++ + .../gdbus-example-objectmanager.xml | 65 +++++++++ + 14 files changed, 381 insertions(+), 270 deletions(-) + +commit 3bd3067ffc1617b2fe96498b18b68aa7f2644487 +Author: Colin Walters +AuthorDate: Thu Jun 2 17:14:58 2011 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 3 12:40:01 2011 -0400 + + gobject: Use _ prefixing in private headers over G_GNUC_INTERNAL in + public headers + + This helps out gtk-doc and g-ir-scanner, and also makes much clearer + what's private versus public. + + https://bugzilla.gnome.org/show_bug.cgi?id=651745 + + docs/reference/gobject/gobject-sections.txt | 10 ---------- + docs/reference/gobject/tut_gtype.xml | 2 +- + gobject/gboxed.c | 2 +- + gobject/genums.c | 3 ++- + gobject/gobject.c | 3 ++- + gobject/gparam.c | 2 +- + gobject/gparamspecs.c | 3 ++- + gobject/gsignal.c | 4 ++-- + gobject/gtype-private.h | 10 ++++++++++ + gobject/gtype.c | 18 +++++++++--------- + gobject/gtype.h | 12 ------------ + gobject/gvalue.c | 2 +- + gobject/gvaluetransform.c | 3 ++- + gobject/gvaluetypes.c | 3 ++- + 14 files changed, 35 insertions(+), 42 deletions(-) + +commit d51198baad17f88e046300a9375619b4bffcd881 +Author: Colin Walters +AuthorDate: Thu Jun 2 11:53:25 2011 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 3 11:43:26 2011 -0400 + + spawn-multithreaded: New test case + + We didn't have any coverage of threads spawning processes, which we + should definitely support. + + https://bugzilla.gnome.org/show_bug.cgi?id=651725 + + gthread/tests/Makefile.am | 9 +- + gthread/tests/spawn-multithreaded.c | 231 + ++++++++++++++++++++++++++++++++++++ + gthread/tests/test-spawn-echo.c | 39 ++++++ + 3 files changed, 278 insertions(+), 1 deletion(-) + +commit c34a6a66e7b918983b561ee8ff1cf7abd3f4b347 +Author: Colin Walters +AuthorDate: Thu Jun 2 09:10:36 2011 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 3 11:38:18 2011 -0400 + + gmain: Consolidate UNIX signal init state handling + + For a future signalfd() patch, it will be easier to handle if + we don't separate initialization from watching for a particular + signal. + + https://bugzilla.gnome.org/show_bug.cgi?id=651725 + + glib/gmain.c | 61 + +++++++++++++++++++++++++++--------------------------------- + 1 file changed, 27 insertions(+), 34 deletions(-) + +commit 6ea274bca41de8fc6de11d0a5eda22c0efc69ac9 +Author: Colin Walters +AuthorDate: Thu Jun 2 08:56:25 2011 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 3 11:38:18 2011 -0400 + + gmain: Clean up SIGCHLD handling + + Unify it more with the rest of the signal handling code. There's + no reason not to specify SA_RESTART and SA_NOCLDSTOP for flags + always, so just do it. + + Remove unnecessary initialization, and push the internal API + towards just ensure_unix_signal_handler_installed_unlocked(). + + https://bugzilla.gnome.org/show_bug.cgi?id=651725 + + glib/gmain.c | 31 ++++++------------------------- + 1 file changed, 6 insertions(+), 25 deletions(-) + +commit 16bdb12e6dcb690d56baf52a34ba674052d39b6e +Author: Hanro +AuthorDate: Thu Jun 2 15:44:19 2011 -0400 +Commit: Colin Walters +CommitDate: Thu Jun 2 15:44:19 2011 -0400 + + gkeyfile: Only test file descriptors against -1 + + Windows CE at least will return other (valid) negative values. + + glib/gkeyfile.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 7ed328aaf01acdc2537498c9617129e4c3004608 +Author: Colin Walters +AuthorDate: Wed Jun 1 15:11:02 2011 -0400 +Commit: Colin Walters +CommitDate: Wed Jun 1 16:43:34 2011 -0400 + + gdbus: Avoid blocking on worker thread in connection initialization + + I can't see a reason to spin until the worker thread runs, so don't. + This avoids ugly sched_yield() calls that show up in strace and + annoy me; the code is cleaner now too. + + We now grab the types needed for the WebKit workaround in the + thread creation area, but only release them when the thread itself + exits. + + https://bugzilla.gnome.org/show_bug.cgi?id=651650 + + gio/gdbusprivate.c | 182 + +++++++++++++++++++---------------------------------- + 1 file changed, 65 insertions(+), 117 deletions(-) + +commit a588974561532ba5d10971ee95065b4db33a1e1f +Author: Matthias Clasen +AuthorDate: Tue May 31 19:23:14 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 31 19:27:04 2011 -0400 + + Expand content type docs slighly + + gio/gcontenttype.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 151016922d59facc158fddb51a6ed444fe65569c +Author: Matthias Clasen +AuthorDate: Tue May 31 14:53:30 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 31 14:53:30 2011 -0400 + + Add a note about atomic changes + + NEWS | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit a06863de605fec0b8a8ba33cd663988256352964 +Author: Colin Walters +AuthorDate: Tue May 31 13:36:16 2011 -0400 +Commit: Colin Walters +CommitDate: Tue May 31 13:37:14 2011 -0400 + + Add a boxed type for GVariantBuilder, mark GVariantIter as (skip) + + Based on a patch by Giovanni Campagna + + From discussion, GVariantIter is not useful for bindings, but + GVariantBuilder may be. + + https://bugzilla.gnome.org/show_bug.cgi?id=646635 + + glib/gvariant.c | 2 +- + gobject/gboxed.c | 2 ++ + gobject/glib-types.h | 10 ++++++++++ + gobject/gobject.symbols | 1 + + 4 files changed, 14 insertions(+), 1 deletion(-) + +commit 6af9dd51358c9a3b77872aa2ee9c055994f13835 +Author: Colin Walters +AuthorDate: Tue May 31 13:25:09 2011 -0400 +Commit: Colin Walters +CommitDate: Tue May 31 13:25:09 2011 -0400 + + gutils.c: Annotation fixes + + glib/gutils.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 581ed51f0d0179c61155a324b51cc6f974143016 +Author: Colin Walters +AuthorDate: Tue May 31 13:10:12 2011 -0400 +Commit: Colin Walters +CommitDate: Tue May 31 13:10:28 2011 -0400 + + g_shell_parse_argv: Annotate + + glib/gshell.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 98ebc596cffcd4d9bb7e48ac124c6311c739ae81 +Author: Colin Walters +AuthorDate: Tue May 31 12:00:41 2011 -0400 +Commit: Colin Walters +CommitDate: Tue May 31 12:00:41 2011 -0400 + + gfileutils: Annotations for g_file_{get,set}_contents + + These are actually byte arrays. + + glib/gfileutils.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 2300be5be38e091aeac55720cf51bc98e7f89790 +Author: Colin Walters +AuthorDate: Tue May 31 10:35:38 2011 -0400 +Commit: Colin Walters +CommitDate: Tue May 31 10:35:38 2011 -0400 + + Consistently use G_GNUC_EXTENSION instead of __extension__ + + g-ir-scanner doesn't like __extension__, and while I can add it, since + we have this macro, we should be using it consistently. + + glib/gatomic.h | 32 ++++++++++++++++---------------- + glib/gmacros.h | 2 +- + glib/gmem.h | 4 ++-- + glib/gtypes.h | 18 +++++++++--------- + 4 files changed, 28 insertions(+), 28 deletions(-) + +commit a84e6f982f465b31aec7365dadfe2c1ad6664e11 +Author: muralis +AuthorDate: Wed May 25 13:42:59 2011 +0530 +Commit: Dan Winship +CommitDate: Tue May 31 08:56:50 2011 -0400 + + gthreadedresolver: fix hang on g_thread_pool_push() failure + + In resolve_sync function in gthreadedresolver.c, if g_thread_pool_push + fails due to thread creation failure, we are just simply appending the + data to the queue of work to do. After the failure, we might wait + indefinitely in g_cond_wait. In case of g_thread_pool_push failure, + propagate the error so that this function does not blocks forever in + case of failure. + + https://bugzilla.gnome.org/show_bug.cgi?id=651034 + + gio/gthreadedresolver.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit fb34889871c40a50c2bde0c5e6fe64acdd121c37 +Author: Carles Ferrando +AuthorDate: Sun May 29 14:04:16 2011 +0200 +Commit: Gil Forcada +CommitDate: Sun May 29 14:04:16 2011 +0200 + + [l10n]Updated Catalan (Valencian) translation + + po/ca@valencia.po | 2169 + +++++++++++++++++++++++++++++++---------------------- + 1 file changed, 1275 insertions(+), 894 deletions(-) + +commit 59098fcc9b923bca79c091a4fc7980700617efaa +Author: Jorge González +AuthorDate: Sun May 29 09:47:30 2011 +0200 +Commit: Jorge González +CommitDate: Sun May 29 09:47:30 2011 +0200 + + Updated Spanish translation + + po/es.po | 124 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 61 insertions(+), 63 deletions(-) + +commit 807d41b89bcc8d22931dda62b17a6d1a2c8e22ec +Author: Matthias Clasen +AuthorDate: Sun May 29 00:05:07 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 29 00:05:07 2011 -0400 + + Documentation fixups + + docs/reference/glib/glib-sections.txt | 7 ++++++ + docs/reference/glib/tmpl/macros.sgml | 3 +-- + glib/gdatetime.c | 4 ++-- + glib/gkeyfile.c | 3 ++- + glib/glist.c | 2 +- + glib/gmarkup.c | 4 ++-- + glib/gmem.h | 2 +- + glib/gsequence.c | 45 + +++++++++++++++++++---------------- + glib/gslist.c | 2 +- + 9 files changed, 41 insertions(+), 31 deletions(-) + +commit 85ab379ac655a82573251b2598d5ed5b6629168b +Author: Matthias Clasen +AuthorDate: Sat May 28 23:27:24 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 23:27:24 2011 -0400 + + Clean up includes + + glib/gatomic.h | 2 +- + glib/glib-object.h | 28 ++++++++++++++-------------- + 2 files changed, 15 insertions(+), 15 deletions(-) + +commit 23b6691428a96c38689a75b1d96ca884fa7dc926 +Author: Matthias Clasen +AuthorDate: Sat May 28 23:15:07 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 23:15:07 2011 -0400 + + Reduce excessive whitespace + + glib/gatomic.h | 66 + +++++++++++++++++++++++++++++----------------------------- + 1 file changed, 33 insertions(+), 33 deletions(-) + +commit a3c3aaa499e69764fcc295c5c9acd55d0cf26c9b +Author: Matthias Clasen +AuthorDate: Sat May 28 22:49:59 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 22:49:59 2011 -0400 + + Remove redundant comments + + The comments in gthreadpool.h were duplicating the + doc comments in the sources. + + glib/gthreadpool.h | 35 ----------------------------------- + 1 file changed, 35 deletions(-) + +commit 666adc2dc0c9958fc25fd17d8954e40a5602a019 +Author: Matthias Clasen +AuthorDate: Sat May 28 22:33:37 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 22:33:37 2011 -0400 + + Volatile not necessary after all + + I was temporarily confused. + + glib/garray.c | 4 ++-- + glib/gasyncqueue.c | 2 +- + glib/ghash.c | 2 +- + glib/gtree.c | 2 +- + 4 files changed, 5 insertions(+), 5 deletions(-) + +commit 53f93aacf3c091322d2674224e75e0d5454dc370 +Author: Matthias Clasen +AuthorDate: Sat May 28 22:03:05 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 22:03:05 2011 -0400 + + GTree: Declare ref_count as volatile + + glib/gtree.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a4f00f39daad6892d3d3368b8d05101c7af8d65d +Author: Matthias Clasen +AuthorDate: Sat May 28 22:02:13 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 22:02:13 2011 -0400 + + GAsyncQueue: Make ref_count a volatile gint + + glib/gasyncqueue.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a33abe9c21c3c749c787619e6a661ca2a12f9b45 +Author: Matthias Clasen +AuthorDate: Sat May 28 21:43:45 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 21:43:45 2011 -0400 + + GAsyncQueue: Remove excessive atomic operations + + Almost every function was double-checking the ref count, + unnecessarily. + + glib/gasyncqueue.c | 17 ----------------- + 1 file changed, 17 deletions(-) + +commit edc7fde495aaf9819eeeb051a2bcd4f145c055ab +Author: Matthias Clasen +AuthorDate: Sat May 28 21:41:08 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 21:41:08 2011 -0400 + + GArray: Avoid unncessary atomic accesses to refcounts + + Not really necessary to double-check the ref-count. + + glib/garray.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit abf719362a5c17854557542cc21fe93ae04419d7 +Author: Matthias Clasen +AuthorDate: Sat May 28 21:40:12 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 21:40:12 2011 -0400 + + GHash: Avoid nonatomic access to the reference count + + Not really necessary to constantly double-check the ref + count, anyway. + + glib/ghash.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit f12650392bcf0ae134c3cd46d4bf0e11468b94d8 +Author: Matthias Clasen +AuthorDate: Sat May 28 21:14:36 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 21:14:36 2011 -0400 + + Fix a typo + + glib/glib-unix.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit d35e83d3372ca484a765dfca2ded8ed5adb61e5a +Author: Matthias Clasen +AuthorDate: Sat May 28 21:12:52 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 21:12:52 2011 -0400 + + Documentation tweaks + + Add Since tags, etc. + + docs/reference/glib/glib-sections.txt | 1 + + glib/gatomic.c | 62 + +++++++++++++++++++++++++++-------- + glib/glib-unix.c | 53 +++++++++++++++++------------- + glib/glib-unix.h | 20 +++++------ + 4 files changed, 90 insertions(+), 46 deletions(-) + +commit 2df4750aceec5f774a413f3f8ee7ccaabc5c8880 +Author: Neil Roberts +AuthorDate: Sat May 28 15:13:11 2011 +0100 +Commit: Matthias Clasen +CommitDate: Sat May 28 19:46:15 2011 -0400 + + gsocket: Fix some cases of returning error without setting *error + + g_socket_shutdown and g_socket_close were calling check_socket with a + NULL error parameter so any errors wouldn't get propagated up. + + https://bugzilla.gnome.org/show_bug.cgi?id=651327 + + gio/gsocket.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 0703dbc21f83122ff2d093632549dbbacf192c54 +Author: Neil Roberts +AuthorDate: Sat May 28 15:06:45 2011 +0100 +Commit: Matthias Clasen +CommitDate: Sat May 28 19:46:14 2011 -0400 + + gsocket: Fix the error message for a failed g_socket_shutdown + + The GError message for g_socket_shutdown was reporting that it was + "Unable to create socket" which is presumably a cut-and-paste bug. + + https://bugzilla.gnome.org/show_bug.cgi?id=651327 + + gio/gsocket.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 56c0d0f384ee8033c99a0d6db7fa4ff11d7fe689 +Author: Antoine Jacoutot +AuthorDate: Fri May 27 11:08:13 2011 +0200 +Commit: Matthias Clasen +CommitDate: Sat May 28 18:59:38 2011 -0400 + + Fix compile warnings on OpenBSD. + + https://bugzilla.gnome.org/show_bug.cgi?id=651223 + + gio/gnetworkingprivate.h | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 05c7dcab37af27fc3fb7b64d0aca51fafc0eefe2 +Author: Matthias Clasen +AuthorDate: Sat May 28 18:42:09 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 18:42:09 2011 -0400 + + Remove unnecessary casts + + The new atomic implementations don't need these anymore to + avoid warnings. + + glib/gthread.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit d09443fe20753fc44afd6ac25463ac52861701cb +Author: Ryan Lortie +AuthorDate: Sat May 28 16:41:59 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sat May 28 17:39:12 2011 -0400 + + optimise bitlocks with new atomic operations + + Add a performance test for bitlocks. + + Make use of the new g_atomic_int_{and,or} to avoid having to do the + usual compare-and-exchange loop. + + On a test machine, the change increases performance from approximately + 20 million uncontended acquire/releases per second to 31 million. + + glib/gbitlock.c | 27 ++++++++------------------- + glib/tests/Makefile.am | 3 +++ + glib/tests/bitlock.c | 39 +++++++++++++++++++++++++++++++++++++++ + 3 files changed, 50 insertions(+), 19 deletions(-) + +commit 858a32879291ebb5612c7500fc195c30fb6e8496 +Author: Ryan Lortie +AuthorDate: Sat May 28 17:27:12 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sat May 28 17:27:12 2011 -0400 + + Fix futex(2) detection and use + + Commit 22e7fc34c44c5ef95abf4fed429f2345410cc82c introduced a + regression: + futexes were always disabled and the emulated codepath was always + being + used. That commit was in response to an originally buggy + implementationt hat wrote junk into config.h (but happened to + be working + properly). + + Fix up the mess and while we're at it, close bug #631231 by including + syscall.h from the correct location and using __NR_futex instead of + SYS_futex. + + Closes #631231. + + configure.ac | 8 +++----- + glib/gbitlock.c | 6 +++--- + 2 files changed, 6 insertions(+), 8 deletions(-) + +commit 83821352657a9481dbff6ab04e8ae60566c17d5e +Author: Ryan Lortie +AuthorDate: Sat May 28 15:59:18 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sat May 28 16:10:44 2011 -0400 + + glib: Rewrite gatomic.[ch] + + - remove all inline assembly versions + + - implement the atomic operations using either GCC intrinsics, the + Windows interlocked API or a mutex-based fallback + + - drop gatomic-gcc.c since these are now defined in the header file. + Adjust Makefile.am accordingly. + + - expand the set of operations: support 'get', 'set', 'compare and + exchange', 'add', 'or', and 'xor' for both integers and pointers + + - deprecate g_atomic_int_exchange_and_add since g_atomic_int_add (as + with all the new arithmetic operations) now returns the prior value + + - unify the use of macros: all functions are now wrapped in + macros that + perform the proper casts and checks + + - remove G_GNUC_MAY_ALIAS use; it was never required for the integer + operations (since casting between pointers that only vary in + signedness of the target is explicitly permitted) and we avoid the + need for the pointer operations by using simple 'void *' instead of + 'gpointer *' (which caused the 'type-punned pointer' warning) + + - provide function implementations of g_atomic_int_inc and + g_atomic_int_dec_and_test: these were strictly macros before + + - improve the documentation to make it very clear exactly which types + of pointers these operations may be used with + + - remove a few uses of the now-deprecated + g_atomic_int_exchange_and_add + + - drop initialisation of gatomic from gthread (by using a + GStaticMutex + instead of a GMutex) + + - update glib.symbols and documentation sections files + + Closes #650823 and #650935 + + docs/reference/glib/glib-sections.txt | 21 +- + glib/Makefile.am | 8 +- + glib/gatomic-gcc.c | 104 --- + glib/gatomic.c | 1608 + +++++++++++++-------------------- + glib/gatomic.h | 312 ++++--- + glib/glib.symbols | 13 +- + glib/gthread.c | 1 - + glib/gthreadpool.c | 2 +- + glib/tests/atomic.c | 2 - + gobject/gobject.c | 4 +- + 10 files changed, 830 insertions(+), 1245 deletions(-) + +commit 2fb57ff46f32316e991ab9f99daa5fce4885f097 +Author: Matthias Clasen +AuthorDate: Sat May 28 14:29:08 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 14:29:08 2011 -0400 + + Quiet down the build a bit + + gio/Makefile.am | 2 +- + gio/tests/Makefile.am | 6 +++--- + glib/Makefile.am | 6 +++--- + glib/libcharset/Makefile.am | 8 ++++---- + gobject/Makefile.am | 10 +++++----- + po/Makefile.in.in | 2 +- + 6 files changed, 17 insertions(+), 17 deletions(-) + +commit ae85e3b7b69f9c069cdcc090832802bc772c9822 +Author: Matthias Clasen +AuthorDate: Sat May 28 13:59:20 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 13:59:20 2011 -0400 + + Quell warnings from g_once_init_enter_impl + + glib/gthread.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f5bc2e00c730866c72ab143375320a29897552a6 +Author: Matthias Clasen +AuthorDate: Sat May 28 13:57:47 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 13:57:47 2011 -0400 + + Trivial: fix a variable name + + It is indices, not indeces. + + glib/gthread.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 22cc6ce67959af79d317229225aaf252bd5234da +Author: Simon McVittie +AuthorDate: Tue May 24 11:04:42 2011 +0100 +Commit: Matthias Clasen +CommitDate: Sat May 28 10:00:42 2011 -0400 + + Add a regression test for GNOME#642026 + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=642026 + Bug-NB: NB#257512 + + gthread/tests/642026.c | 91 + +++++++++++++++++++++++++++++++++++++++++++++++ + gthread/tests/Makefile.am | 3 ++ + 2 files changed, 94 insertions(+) + +commit e83210425fb407e6fa7be2dcc7ac53d4d30e9a7c +Author: Simon McVittie +AuthorDate: Tue May 24 16:23:38 2011 +0100 +Commit: Matthias Clasen +CommitDate: Sat May 28 10:00:41 2011 -0400 + + GStaticPrivate: protect GRealThread.private_data with a bit-lock + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=642026 + Bug-NB: NB#257512 + + glib/gthread.c | 23 +++++++++++++++++++++-- + 1 file changed, 21 insertions(+), 2 deletions(-) + +commit 83f1b12388fc36128dac84729f433eff8183ff45 +Author: Simon McVittie +AuthorDate: Tue May 24 16:23:02 2011 +0100 +Commit: Matthias Clasen +CommitDate: Sat May 28 10:00:40 2011 -0400 + + Refactor GStaticPrivate accessors to facilitate protecting them + with locks + + * g_static_private_get: have a single entry and exit + + * g_static_private_set: delay creation of GArray so the whole tail of + the function can be under the private_data lock without risking + deadlock with the g_thread lock; call the destructor last, after + we could have unlocked + + * g_static_private_free: choose next thread in list before accessing + private_data, to keep all accesses together + + * g_thread_cleanup: steal private_data first, then work exclusively + with + the stolen array (which doesn't need to be under a lock any more) + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=642026 + Bug-NB: NB#257512 + + glib/gthread.c | 71 + +++++++++++++++++++++++++++++----------------------------- + 1 file changed, 36 insertions(+), 35 deletions(-) + +commit b05f0b351c46a8f97bf7e9d62f5dd4074ca78486 +Author: Simon McVittie +AuthorDate: Tue May 24 16:02:33 2011 +0100 +Commit: Matthias Clasen +CommitDate: Sat May 28 10:00:40 2011 -0400 + + g_static_private_free: defer non-trivial destruction til after + we unlock + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=642026 + Bug-NB: NB#257512 + + glib/gthread.c | 31 ++++++++++++++++++++++++++++--- + 1 file changed, 28 insertions(+), 3 deletions(-) + +commit d5f0ec1e8eb4523684e06efa306f54bafee3a117 +Author: Simon McVittie +AuthorDate: Tue May 24 15:59:33 2011 +0100 +Commit: Matthias Clasen +CommitDate: Sat May 28 10:00:39 2011 -0400 + + GRealThread: remove obsolete comment about gmain.c, which no longer + has a copy + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=642026 + Bug-NB: NB#257512 + + glib/gthread.c | 1 - + 1 file changed, 1 deletion(-) + +commit b6fd3c3dac9cbffc0f45162b289f625e61eb1319 +Author: Daniel Mustieles +AuthorDate: Sat May 28 10:27:31 2011 +0200 +Commit: Daniel Mustieles +CommitDate: Sat May 28 10:27:31 2011 +0200 + + Updated Spanish translation + + po/es.po | 201 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 102 insertions(+), 99 deletions(-) + +commit 00734ef99f2c10bcd25fd85a453712a46d3cf806 +Author: Matthias Clasen +AuthorDate: Sat May 28 00:16:39 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 00:16:39 2011 -0400 + + Add macro version for all atomic operations + + Better to be consistent about this. + + glib/gatomic.h | 20 ++++++++++++++++---- + 1 file changed, 16 insertions(+), 4 deletions(-) + +commit 7cf112225399ffa262082727bf4f434d57568e30 +Author: Matthias Clasen +AuthorDate: Sat May 28 00:04:10 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 28 00:04:10 2011 -0400 + + Use G_STATIC_ASSERT_EXPR for size checks in atomic macros + + Also add the same size checks to the macros wrapping + gcc builtins. + + glib/gatomic.h | 50 +++++++++++++++++++++++++++++--------------------- + 1 file changed, 29 insertions(+), 21 deletions(-) + +commit edd65baa6d9f6b951f093a15b6fcb5771e3397e0 +Author: Ryan Lortie +AuthorDate: Tue May 24 02:07:55 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 27 23:00:14 2011 -0400 + + Add a test case for atomic ops + + Make sure that the macros work properly with the range of types that + they are documented to work with and ensure that no strict aliasing + warnings are issued (even at the highest warning level). + + https://bugzilla.gnome.org/show_bug.cgi?id=650935 + + glib/tests/.gitignore | 1 + + glib/tests/Makefile.am | 4 ++++ + glib/tests/atomic.c | 41 +++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 46 insertions(+) + +commit c00ef0a17aba057698eab4d4a769b358511370cd +Author: Ryan Lortie +AuthorDate: Sun May 22 12:44:12 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 27 22:36:16 2011 -0400 + + Add G_STATIC_ASSERT_EXPR macro + + https://bugzilla.gnome.org/show_bug.cgi?id=626549 + + docs/reference/glib/tmpl/macros_misc.sgml | 18 ++++++++++++++++++ + glib/gmacros.h | 1 + + 2 files changed, 19 insertions(+) + +commit 64d5a0404adc1658711631b773e29a5d43f9a1c6 +Author: Matthias Clasen +AuthorDate: Fri May 27 20:22:20 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 27 20:22:20 2011 -0400 + + GThread: expand the docs + + Mention newer addition to the thread support in the introduction: + bit locks and one-time initialization. + + glib/gthread.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 7d0eac03e9cd88b33f68a7a451992d1f222573a2 +Author: Matthias Clasen +AuthorDate: Fri May 27 18:30:45 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 27 18:30:45 2011 -0400 + + glib-compile-schemas: write informational messages to stdout + + The fact that we return 0 here makes it clear that this + is not considered an error, so it makes sense to not + write these messages to stderr. + Proposed by Antoine Jacoutot, + https://bugzilla.gnome.org/show_bug.cgi?id=650882 + + gio/glib-compile-schemas.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit dfcac7b23e7cfbefc02f2d8772970340d7dd7fb5 +Author: Colin Walters +AuthorDate: Fri May 27 16:10:21 2011 -0400 +Commit: Colin Walters +CommitDate: Fri May 27 16:12:58 2011 -0400 + + g_variant_new_dict_entry: Fix documentation and annotations + + Move @key to not be at the start of a line, otherwise g-ir-scanner + gets confused. + + Also two annotation fixes. + + glib/gvariant.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +commit 5345d21150848d9865f8bd2cd562a2484849db9b +Author: Matthias Clasen +AuthorDate: Fri May 27 16:08:57 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 27 16:09:34 2011 -0400 + + forgotten test + + glib/tests/hash.c | 133 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 133 insertions(+) + +commit 39ba9c8e49a23c6f8a65e68af64ad5a52c26db08 +Author: Giovanni Campagna +AuthorDate: Fri May 27 16:03:04 2011 -0400 +Commit: Colin Walters +CommitDate: Fri May 27 16:05:56 2011 -0400 + + g_variant_get_child_value: Add a precondition on length + + Ensure callers get a warning if they pass a bad length. + + Split into a separate commit and changed to order index before + n_children by Colin Walters + + glib/gvariant-core.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit e61fa51fd5acd6f448a2200e737b7bea033066f9 +Author: Giovanni Campagna +AuthorDate: Sun Apr 3 17:18:44 2011 +0200 +Commit: Colin Walters +CommitDate: Fri May 27 15:56:50 2011 -0400 + + GVariant: fix introspection annotations + + Add transfer annotations for most functions, as well as some (array) + and (skip) for functions that use varargs. + + https://bugzilla.gnome.org/show_bug.cgi?id=646635 + + glib/gvariant-core.c | 2 +- + glib/gvariant.c | 137 + ++++++++++++++++++++++++++------------------------- + glib/gvarianttype.c | 38 +++++++------- + 3 files changed, 92 insertions(+), 85 deletions(-) + +commit 77f4f5aa02458e6c7f909dc6087a39d9b75d0ba6 +Author: Antoine Jacoutot +AuthorDate: Fri May 27 15:51:08 2011 +0200 +Commit: Dan Winship +CommitDate: Fri May 27 14:22:56 2011 -0400 + + Add glib credentials support to OpenBSD. + + https://bugzilla.gnome.org/show_bug.cgi?id=650885 + + gio/gcredentials.c | 54 ++++++++++++++++++++++++++++++++++++++ + gio/gdbusauth.c | 6 ++--- + gio/gioenums.h | 4 ++- + gio/gsocket.c | 13 ++++++++-- + gio/gunixconnection.c | 72 + +++++++++++++++++++++++++++++++++++++-------------- + 5 files changed, 123 insertions(+), 26 deletions(-) + +commit 2ee470a71fdc3707cf4e093b22ab0f46ffab82e2 +Author: Antoine Jacoutot +AuthorDate: Fri May 27 17:39:38 2011 +0200 +Commit: Matthias Clasen +CommitDate: Fri May 27 12:00:41 2011 -0400 + + Don't hardcode path to true(1). + + true(1) is not always installed under /bin so leave system() find + it in the PATH. + + https://bugzilla.gnome.org/show_bug.cgi?id=651219 + + tests/child-test.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5d7b67a6c361f747c8ac32d18248cc0923fe73aa +Author: Matthias Clasen +AuthorDate: Thu May 26 21:52:50 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 26 21:52:50 2011 -0400 + + Preserve consistency when removing all nodes from a hash table + + During the recent refactorings of GHashTable a bug was introduced + where removing all nodes from a hash table would leave tombstones + behind, but make the counts appear like there are none. + + Reported and tracked down by Carlos Garnacho, + https://bugzilla.gnome.org/show_bug.cgi?id=651141 + + This commit also adds a test that checks the internal consistency + of GHashTable over several insert/remove/remove-all operations. + + glib/ghash.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +commit b92861b5a0fd4be7b5b5e494c424b0e8d48a6b7f +Author: David Schleef +AuthorDate: Tue May 24 14:35:20 2011 -0700 +Commit: Matthias Clasen +CommitDate: Thu May 26 20:56:51 2011 -0400 + + main: Use public function in documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=651009 + + glib/gmain.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 25440ce014dd555cbb60b3964f8a19b5674523da +Author: David Zeuthen +AuthorDate: Thu May 26 10:18:44 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu May 26 10:18:44 2011 -0400 + + GDBusProxy: Mention gdbus-codegen in docs + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +commit 06f5de77f04f16480e642f7efee9dc4bdfba6778 +Author: David Zeuthen +AuthorDate: Thu May 26 10:07:38 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu May 26 10:07:38 2011 -0400 + + GDBusProxy: Fix incorrect locking + + Pointed out by mclasen. + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 36 +++++++++++++++++++++++++++--------- + 1 file changed, 27 insertions(+), 9 deletions(-) + +commit c0f4a63c89332ee18c1ddf1fe48fe04b16b27fa3 +Author: David Zeuthen +AuthorDate: Thu May 26 09:54:47 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu May 26 09:56:14 2011 -0400 + + GDBusProxy: Add locking and notes/guarantees about MT safety + + This was discussed in + + https://bugzilla.gnome.org/show_bug.cgi?id=651133 + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 48 ++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 44 insertions(+), 4 deletions(-) + +commit 7e0f890e3811c23d331079c3e878d0c1df4ae282 +Author: David Zeuthen +AuthorDate: Thu May 26 09:26:29 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu May 26 09:26:29 2011 -0400 + + GDBusProxy: Fix race condition when unsubscribing from signals + + This was reported in bug 651133. + + https://bugzilla.gnome.org/show_bug.cgi?id=651133 + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 116 + ++++++++++++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 97 insertions(+), 19 deletions(-) + +commit 9936f961ba0f71e6097436264a79ba801cebbbf5 +Author: Richard Hughes +AuthorDate: Thu May 26 12:37:24 2011 +0100 +Commit: Richard Hughes +CommitDate: Thu May 26 12:37:36 2011 +0100 + + Correct the annotation for g_file_enumerator_get_container() + + We don't ref the returned object, and alex has verified the gvfs + implementation. + + gio/gfileenumerator.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 30672af7ff881ceaf9834385afd6138a969147c8 +Author: Marc-André Lureau +AuthorDate: Wed May 11 16:42:14 2011 +0200 +Commit: Marc-André Lureau +CommitDate: Thu May 26 11:19:20 2011 +0200 + + gthread: build unix tests only on unix + + The build fails when compiling with mingw32. Correct the build of a + unix tests on unix only. + + https://bugzilla.gnome.org/show_bug.cgi?id=649973 + + gthread/tests/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit 3f569d2b5b00d5f65c8332bb54588d701937d1e2 +Author: David Zeuthen +AuthorDate: Tue May 24 07:34:30 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue May 24 07:34:30 2011 -0400 + + gdbus-codegen: Fix up example to not use non-existant method + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 19 +++++++++++-------- + 1 file changed, 11 insertions(+), 8 deletions(-) + +commit ab18737eade8626ca7e3ed6e1eec7dca34a42b0b +Author: David Zeuthen +AuthorDate: Tue May 24 00:27:43 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue May 24 00:27:43 2011 -0400 + + gdbus-codegen: Properly render @param and %TRUE in generated Docbook + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 3 ++ + gio/gdbus-codegen/codegen.py | 100 + +++++++++++++++++------------------ + gio/gdbus-codegen/codegen_docbook.py | 22 +++++--- + 3 files changed, 67 insertions(+), 58 deletions(-) + +commit 263ce3042ccf596f5cd59b1defa546df2602597d +Author: David Zeuthen +AuthorDate: Mon May 23 23:22:04 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon May 23 23:23:10 2011 -0400 + + gdbus-codegen: Handle unexpected XML tags + + This was reported in bug 650874. Add tests. + + https://bugzilla.gnome.org/show_bug.cgi?id=650874 + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/parser.py | 26 ++++++++++++++++---------- + gio/tests/test-codegen.xml | 23 +++++++++++++++++++++++ + 2 files changed, 39 insertions(+), 10 deletions(-) + +commit 0aae977ac13966120f3efc1bcdac4d5be1d97aa3 +Author: Giovanni Campagna +AuthorDate: Thu Apr 21 23:45:59 2011 +0200 +Commit: Giovanni Campagna +CommitDate: Mon May 23 22:15:56 2011 +0200 + + gdbusintrospection: fix introspection of DBus Introspection structures + + Correctly mark fields as arrays (requires changing + gobject-introspection + to pick those). + + https://bugzilla.gnome.org/show_bug.cgi?id=646635 + + gio/gdbusintrospection.h | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) + +commit eabad1923e7b0f133f8f38e57601a97521e38cfe +Author: Ray Strode +AuthorDate: Mon May 23 13:39:09 2011 -0400 +Commit: Ray Strode +CommitDate: Mon May 23 13:40:02 2011 -0400 + + Revert "gsettings-tool: warn if setting a value fails" + + This reverts commit ea57feff96f13bbd4d03a76040a4ddfad2677310. + + It makes the gsettings tool fail any time it tries to set a + key to a value, that the key already has. + + https://bugzilla.gnome.org/show_bug.cgi?id=641768 + + gio/gsettings-tool.c | 14 +++----------- + 1 file changed, 3 insertions(+), 11 deletions(-) + +commit ce0f7cafa1746a94f90b74860c2890b6c18ca385 +Author: Antoine Jacoutot +AuthorDate: Mon May 23 19:11:10 2011 +0200 +Commit: Colin Walters +CommitDate: Mon May 23 13:05:49 2011 -0400 + + Fix build with gcc-2.*. + + https://bugzilla.gnome.org/show_bug.cgi?id=650884 + + gio/tests/gdbus-connection.c | 4 ++-- + gio/tests/memory-output-stream.c | 10 ++++++---- + 2 files changed, 8 insertions(+), 6 deletions(-) + +commit c61fd66e77b6db4a6e73acaf5cdaf8bc74b3d914 +Author: Seán de Búrca +AuthorDate: Mon May 23 00:35:46 2011 -0600 +Commit: Seán de Búrca +CommitDate: Mon May 23 00:38:11 2011 -0600 + + Updated Irish translation. + + po/ga.po | 2227 + ++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 1522 insertions(+), 705 deletions(-) + +commit 77110304cc3e01f60235286b61082ea6dd602d06 +Author: Matthias Clasen +AuthorDate: Mon May 23 00:48:10 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 23 00:48:10 2011 -0400 + + Cosmetic changes + + Use inc/dec for refcounting. + + glib/gregex.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 88f23fb1d9aa0f84cbeebe086db022864a7eb3be +Author: Matthias Clasen +AuthorDate: Mon May 23 00:40:33 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 23 00:40:33 2011 -0400 + + Cosmetics + + Use g_atomic_int_inc/dec instead of add(...,1/-1), since + this is the way refcounting is done elsewhere. Some other + cosmetic changes. + + glib/ghash.c | 21 +++++++++++---------- + 1 file changed, 11 insertions(+), 10 deletions(-) + +commit b5056fbaf90829e2190458447d9c0f31e0179dc3 +Author: Matthias Clasen +AuthorDate: Mon May 23 00:21:06 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 23 00:21:06 2011 -0400 + + Simply symbols files + + The grouping in files/headers is not used anymore, and + the function attributes neither. Adapt abicheck scripts + and .def file generation rules accordingly. + + gio/abicheck.sh | 4 +- + gio/gio.symbols | 1013 + ++++++++--------------------------------------- + glib/Makefile.am | 2 +- + glib/abicheck.sh | 2 +- + glib/glib.symbols | 781 ++++++++---------------------------- + gobject/abicheck.sh | 2 +- + gobject/gobject.symbols | 147 ++----- + 7 files changed, 353 insertions(+), 1598 deletions(-) + +commit dec7d41275b025e94beb16f656ce0db70286469f +Author: Matthias Clasen +AuthorDate: Sun May 22 16:31:43 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 22 16:31:43 2011 -0400 + + Improve atomic ops implementation + + When using gcc builtins for atomic operations, provide them + as macros, so gcc can see the builtins and do optimizations. + This change gives considerable speedups in bitlocks, which + use atomic operations heavily, see bug 650458. + + Also, don't define G_ATOMIC_OP_MEMORY_BARRIER_NEEDED unconditionally + when using gcc builtins. + + https://bugzilla.gnome.org/show_bug.cgi?id=617491 + + configure.ac | 12 ++++++------ + glib/gatomic-gcc.c | 40 ++++++++++++++++++++++++++++------------ + glib/gatomic.h | 32 +++++++++++++++++++++++++++++++- + 3 files changed, 65 insertions(+), 19 deletions(-) + +commit 9255350a70ea53f719b395d200b9e35a5dcb6d3c +Author: Matthias Clasen +AuthorDate: Sun May 22 01:29:22 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 22 01:29:22 2011 -0400 + + Add some atomic ops tests + + gthread/tests/Makefile.am | 4 +++ + gthread/tests/atomic.c | 72 + +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 76 insertions(+) + +commit 22e7fc34c44c5ef95abf4fed429f2345410cc82c +Author: Matthias Clasen +AuthorDate: Sun May 22 00:33:05 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 22 00:33:05 2011 -0400 + + Fix HAVE_FUTEX definition + + configure.ac | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit f92438463464c827a1f28d7a1c42bc74a75bdb72 +Author: Matthias Clasen +AuthorDate: Sat May 21 20:56:04 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 21 20:56:04 2011 -0400 + + Trivial: fix a typo + + glib/ghash.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c38b7d769e57e8be6f8c43c4f306396740559306 +Author: Matthias Clasen +AuthorDate: Sat May 21 11:14:05 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 21 11:14:05 2011 -0400 + + Revert "g_key_file_has_key_full: Clarify the docs" + + This reverts commit 4ddb84999d47816624f9ae7dcba181cbccd5c4d9. + + glib/gkeyfile.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit 4ddb84999d47816624f9ae7dcba181cbccd5c4d9 +Author: Matthias Clasen +AuthorDate: Sat May 21 11:12:08 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 21 11:12:08 2011 -0400 + + g_key_file_has_key_full: Clarify the docs + + glib/gkeyfile.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 120b85a31b061f17608a3b691d412ef17ca93681 +Author: Matthias Clasen +AuthorDate: Fri May 20 15:07:08 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 20 15:07:08 2011 -0400 + + Enforce rules about modifying hash tables in callbacks + + We have the infrastructure to do this, so lets do it. + Also add tests for find and foreach to the testsuite. + Bug 650688 + + glib/ghash.c | 44 +++++++++++++++++++++++------- + glib/tests/hash.c | 81 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 116 insertions(+), 9 deletions(-) + +commit afc5319a273d2154cb725110f170a7e7c6b87076 +Author: Matthias Clasen +AuthorDate: Thu May 19 23:50:03 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 19 23:51:43 2011 -0400 + + Be more careful when calling destroy notifies + + If we are, we can allow modification of the hash table + from destroy notifies. + + https://bugzilla.gnome.org/show_bug.cgi?id=650459 + + glib/ghash.c | 110 + ++++++++++++++++++++++++++++++------------------------ + glib/tests/hash.c | 29 ++++++++++++++ + 2 files changed, 91 insertions(+), 48 deletions(-) + +commit 7c63370e3a81c9d6138924e88d868005414c08aa +Author: Giovanni Campagna +AuthorDate: Sun Apr 3 15:51:04 2011 +0200 +Commit: Colin Walters +CommitDate: Thu May 19 17:39:33 2011 -0400 + + GObject: move GLib type definitions to a separate header + + This way it is possible to pull them into the GLib GIR file. + + Some cleanups by Colin Walters + + https://bugzilla.gnome.org/show_bug.cgi?id=646635 + + gobject/Makefile.am | 7 +- + gobject/gboxed.h | 152 ++----------------------------------- + gobject/glib-types.h | 192 + +++++++++++++++++++++++++++++++++++++++++++++++ + gobject/gsourceclosure.h | 17 +---- + 4 files changed, 205 insertions(+), 163 deletions(-) + +commit 9793919d7b6a1469f1d7b43a500cd4ec99234621 +Author: Ryan Lortie +AuthorDate: Wed May 18 17:56:50 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 18 17:56:50 2011 -0400 + + Whitespace fixes + + gio/gapplication.c | 10 +++++----- + gio/gapplicationcommandline.c | 4 ++-- + gio/gapplicationimpl-dbus.c | 2 +- + gio/gsettings-tool.c | 18 +++++++++--------- + 4 files changed, 17 insertions(+), 17 deletions(-) + +commit 0e63b57eea5b1785a9831864aa2fac5ec29d26a1 +Author: Ryan Lortie +AuthorDate: Wed May 18 17:53:07 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 18 17:53:07 2011 -0400 + + GApplication: fix remote action states + + Fix up remote_action_info_new_from_iter() to do its job better and use + it from all places that it's appropriate. + + Closes #650236. + + gio/gapplicationimpl-dbus.c | 55 + +++++++++++++++++++++++++-------------------- + 1 file changed, 31 insertions(+), 24 deletions(-) + +commit 0e10116b3b2c26a30722317ebf4347f1c2d964a9 +Author: Ryan Lortie +AuthorDate: Wed May 18 16:12:04 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 18 16:13:03 2011 -0400 + + Add debug output to GApplication actions example + + Enough to clearly demonstrate bug #650236. + + gio/tests/gapplication-example-actions.c | 43 + ++++++++++++++++++++++++++++++-- + 1 file changed, 41 insertions(+), 2 deletions(-) + +commit 3f3b2bd82b9674d22cd64d76af68ddbc9cf80115 +Author: Jasper Lievisse Adriaanse +AuthorDate: Wed May 18 12:01:44 2011 -0400 +Commit: Colin Walters +CommitDate: Wed May 18 12:08:09 2011 -0400 + + gatomic: #include gthread.h to fix compilation on nonoptimized + architectures + + The fallback case of implementing atomic integers with mutexes needs + gthread.h. + + Commit message written by Colin Walters + + https://bugzilla.gnome.org/show_bug.cgi?id=631153 + + glib/gatomic.c | 1 + + 1 file changed, 1 insertion(+) + +commit 5645c7aa41c25de39943db2099699ea66e2cad6e +Author: Colin Walters +AuthorDate: Wed May 18 11:57:21 2011 -0400 +Commit: Colin Walters +CommitDate: Wed May 18 11:57:21 2011 -0400 + + gtype: Remove unused variable + + gobject/gtype.c | 1 - + 1 file changed, 1 deletion(-) + +commit 9966fe4493455dcdfe64483a50676891a878c72b +Author: Colin Walters +AuthorDate: Mon May 16 15:30:31 2011 -0400 +Commit: Colin Walters +CommitDate: Wed May 18 11:53:21 2011 -0400 + + g_key_file_has_key_full: New function to fix g_key_file_has_key()'s + GError semantics + + See https://bugzilla.gnome.org/show_bug.cgi?id=649657 for discussion + of why it's bad for bindings for gerror return values to both signal + errors and carry meaning. + + https://bugzilla.gnome.org/show_bug.cgi?id=650345 + + docs/reference/glib/glib-sections.txt | 1 + + glib/gkeyfile.c | 54 + +++++++++++++++++++++++++++++++++-- + glib/gkeyfile.h | 5 ++++ + glib/glib.symbols | 1 + + glib/tests/keyfile.c | 16 +++++++++++ + 5 files changed, 74 insertions(+), 3 deletions(-) + +commit b539004d1327a787940a98d6d249225e574eb338 +Author: Gabor Kelemen +AuthorDate: Wed May 18 12:39:31 2011 +0200 +Commit: Gabor Kelemen +CommitDate: Wed May 18 12:39:56 2011 +0200 + + Fix short day names in Hungarian translation + + po/hu.po | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit f529dc0e086f604a52ddb72f1a5baf48a9b78a29 +Author: Chun-wei Fan +AuthorDate: Wed May 18 11:14:00 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed May 18 11:14:00 2011 +0800 + + Update Visual C++ README.txt + + Correct the unpacking path of GLib... + + build/win32/vs10/README.txt | 4 ++-- + build/win32/vs9/README.txt | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 8148a3c396a76012da6fc2241128a2b428c818ff +Author: Ryan Lortie +AuthorDate: Tue May 17 11:58:46 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue May 17 11:58:46 2011 -0400 + + Fix gsettings tool string handling + + There are some bugs caused by the way that gsettings-tool currently + attempts to help the user when they leave the quotes off of a string + value that they are setting. + + Simplify the code to make it more robust and add some comments + about why + it should be done this way. + + https://bugzilla.gnome.org/show_bug.cgi?id=649915 + + gio/gsettings-tool.c | 36 ++++++++++++++++++++++++------------ + 1 file changed, 24 insertions(+), 12 deletions(-) + +commit d9440687ff13bd36b8c5696ce84327999589d04e +Author: Benjamin Otte +AuthorDate: Tue May 17 14:58:39 2011 +0200 +Commit: Benjamin Otte +CommitDate: Tue May 17 15:01:36 2011 +0200 + + gobject: Speed up g_type_from_name() + + The hash table used exclusively for looking up types by name used + to map + quarks => types. But we can easily make it map strings => types, which + avoids the quark lookup. And that in trun avoids taking a lock and + consulting another hash table. So this change should make + g_type_from_name() roughly twice as fast. + + gobject/gtype.c | 18 +++++------------- + 1 file changed, 5 insertions(+), 13 deletions(-) + +commit aeac5de2f8eeaadcdc7e021694d92470834fece8 +Author: John Lindgren +AuthorDate: Mon May 16 23:03:30 2011 -0400 +Commit: Ray Strode +CommitDate: Mon May 16 23:41:55 2011 -0400 + + keyfile: fill parse buffer in line sized chunks + + When loading a keyfile the incoming bytes are fed + to a line buffer to get parsed each time a new line + is encountered. + + The code that fills the line buffer does it inefficiently, + one byte at a time. + + This commit changes that code to look ahead at the incoming + bytes for the next '\n' character and then fill the line buffer + all at once. + + https://bugzilla.gnome.org/show_bug.cgi?id=650211 + + glib/gkeyfile.c | 21 +++++++++++++++++++-- + 1 file changed, 19 insertions(+), 2 deletions(-) + +commit 9c1a44cf32ebeee00a0e2303832b9cea26c93b76 +Author: John Lindgren +AuthorDate: Mon May 16 22:27:11 2011 -0400 +Commit: Ray Strode +CommitDate: Mon May 16 23:36:39 2011 -0400 + + keyfile: avoid needless allocations on file load + + When loading a key file, the keys and values of individual lines + are allocated once when copied and trimmed from the parse buffer + and allocated/copied again when added to the lookup map. + + This commit avoids the second pair of allocations by introducing + a new function g_key_file_add_key_value_pair that gives the + lookup map direct ownership of the key and value copied from the + parse buffer. + + https://bugzilla.gnome.org/show_bug.cgi?id=650211 + + glib/gkeyfile.c | 36 +++++++++++++++++++++++++++++------- + 1 file changed, 29 insertions(+), 7 deletions(-) + +commit f96dc555d5b56aa56ad1d77bb3fde685ca612e68 +Author: Matthias Clasen +AuthorDate: Mon May 16 14:38:45 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 16 14:39:53 2011 -0400 + + Rename a problematic test binary + + Having a binary called printf is apparently asking for trouble, + so lets not do that. + + http://bugzilla.gnome.org/show_bug.cgi?id=650078 + + glib/tests/Makefile.am | 6 +- + glib/tests/printf.c | 945 + ----------------------------------------------- + glib/tests/test-printf.c | 945 + +++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 948 insertions(+), 948 deletions(-) + +commit b5934de4562e073a0777d07eabe3e1cf327e7a66 +Author: Emmanuele Bassi +AuthorDate: Mon May 16 16:10:06 2011 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon May 16 16:10:06 2011 +0100 + + Add gdbus autogenerated xml files to the ignore file + + gio/.gitignore | 2 ++ + 1 file changed, 2 insertions(+) + +commit 014b4b5ae9a14d3697c158908b01786496d539f1 +Author: Javier Jardón +AuthorDate: Mon May 16 12:51:59 2011 +0100 +Commit: Javier Jardón +CommitDate: Mon May 16 12:51:59 2011 +0100 + + m4macros/gsettings.m4: Use AS_HELP_STRING instead the deprecated + AC_HELP_STRING + + m4macros/gsettings.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d2d3449a8ef4e3ad7236ed83a5ed0ce6a2b0e69f +Author: Javier Jardón +AuthorDate: Mon May 16 11:51:29 2011 +0100 +Commit: Javier Jardón +CommitDate: Mon May 16 12:03:24 2011 +0100 + + autogen.sh: Use autoreconf instead custom script + + autogen.sh | 109 + +++++++++---------------------------------------------------- + 1 file changed, 15 insertions(+), 94 deletions(-) + +commit 11e01802abcf006caa8e3c2ecf6cfd195db98fd9 +Author: David Zeuthen +AuthorDate: Sun May 15 11:45:37 2011 -0400 +Commit: David Zeuthen +CommitDate: Sun May 15 12:38:24 2011 -0400 + + gdbus-codegen: Ensure that generated skeletons are MT-safe + + For example, if setting a property on a skeleton from another thread + than where it was constructed, the idle handler responsible for + emitting the PropertiesChanged() signal could run immediately and + clear skeleton->priv->changed_properties_idle_source causing + g_source_unref() to be called with a NULL pointer. This race was + easily be fixed by adding a lock to the skeleton object. + + In addition to fixing this race, also move the code for setting up the + idle handler to a class handler for the GObject::notify signal. This + change allows use of g_object_freeze_notify() and + g_object_thaw_notify() + to perform atomic property changes from another thread than the one + that the skeleton was created in. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 11 +++-- + gio/gdbus-codegen/codegen.py | 93 + +++++++++++++++++++++++++----------- + 2 files changed, 74 insertions(+), 30 deletions(-) + +commit 2122191595fc7059ff4838b967ea0beb19b18d47 +Author: Philip Withnall +AuthorDate: Sun May 15 15:31:16 2011 +0100 +Commit: Philip Withnall +CommitDate: Sun May 15 15:31:16 2011 +0100 + + docs: Improve punctuation in some of the GArray method documentation + + glib/garray.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit cb7a5a8e94a3317961ef98b839e4cfce9abccb42 +Author: Benjamin Otte +AuthorDate: Sun May 15 16:16:30 2011 +0200 +Commit: Benjamin Otte +CommitDate: Sun May 15 16:16:30 2011 +0200 + + docs: Add the cute trick comment to all sort functions + + Thanks to Sebastian Dröge for pointing out there's more than + g_array_sort() and I hadn't in fact added the comment to + g_array_sort() + in 80928ea403cfff5ffaa4bc73e84e3d4ebcb09123 + + glib/garray.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 80928ea403cfff5ffaa4bc73e84e3d4ebcb09123 +Author: Benjamin Otte +AuthorDate: Sun May 15 16:11:51 2011 +0200 +Commit: Benjamin Otte +CommitDate: Sun May 15 16:13:55 2011 +0200 + + docs: Add a cute trick for achieving a stable sort + + This trick is inspired by + http://www.gnu.org/s/hello/manual/libc/Array-Sort-Function.html + http://jeffreystedfast.blogspot.com/2011/04/optimizing-merge-sort.html + + glib/garray.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 125b896a4ed21c54047a368247f76c0b36e1554b +Author: Kristjan SCHMIDT +AuthorDate: Sun May 15 10:16:59 2011 +0200 +Commit: Kristjan SCHMIDT +CommitDate: Sun May 15 10:16:59 2011 +0200 + + Updated Esperanto translation + + po/eo.po | 2372 + ++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 1597 insertions(+), 775 deletions(-) + +commit ae10eca1162310b615db3bdce6791efcfc337c29 +Author: David Zeuthen +AuthorDate: Fri May 13 14:23:14 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri May 13 14:24:22 2011 -0400 + + gdbus-codegen: Use (skip) annotation on return values + + This was discussed in bug 649657. + + https://bugzilla.gnome.org/show_bug.cgi?id=649657 + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 4a7a1bc4372995eaaac33c170c90e5441cb85c8c +Author: Yaron Shahrabani +AuthorDate: Fri May 13 08:38:35 2011 +0300 +Commit: Yaron Shahrabani +CommitDate: Fri May 13 08:38:35 2011 +0300 + + Updated Hebrew translation. + + po/he.po | 747 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 381 insertions(+), 366 deletions(-) + +commit b9e3e03767585e52771fd1faea42176138f25aa5 +Author: David Zeuthen +AuthorDate: Thu May 12 15:36:34 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu May 12 15:36:34 2011 -0400 + + GDBusConnection: Document that sockets are frobbed into non-blocking + mode + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +commit ce77614142e20c8cfcb5de24a468c743ac0ff381 +Author: David Zeuthen +AuthorDate: Wed May 11 21:16:41 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed May 11 21:16:41 2011 -0400 + + gdbus-codegen: Mark members in generated class instance structs + as private + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 5a811135f73057b81ef7080022d313bb58ee8419 +Author: David Zeuthen +AuthorDate: Wed May 11 20:57:54 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed May 11 20:57:54 2011 -0400 + + Add g_dbus_method_invocation_take_error() convenience method + + Similar in spirit to g_simple_async_result_take_error(). + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdbusmethodinvocation.c | 22 ++++++++++++++++++++++ + gio/gdbusmethodinvocation.h | 2 ++ + gio/gio.symbols | 1 + + 4 files changed, 26 insertions(+) + +commit d39731724a4a7c1d63953f41207e01e98ca5d9a3 +Author: Colin Walters +AuthorDate: Wed May 11 17:13:57 2011 -0400 +Commit: Colin Walters +CommitDate: Wed May 11 17:13:57 2011 -0400 + + gdbus-codegen: Fix annotation parsing + + It takes 3 options. + + gio/gdbus-codegen/codegen_main.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 97cd6fa2e3ea9318b8af65b4623057c4f5600fc2 +Author: Maarten Bosmans +AuthorDate: Wed May 11 15:47:00 2011 -0400 +Commit: Colin Walters +CommitDate: Wed May 11 15:47:00 2011 -0400 + + gdbus-codegen: Quote substitution variables + + Avoids failure if they contain spaces. + + Commit message written by Colin Walters + + https://bugzilla.gnome.org/show_bug.cgi?id=649775 + + gio/gdbus-codegen/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 61295f87c966f5f0aa35797831ae5e71ba8cd7b1 +Author: Colin Walters +AuthorDate: Wed May 11 15:02:23 2011 -0400 +Commit: Colin Walters +CommitDate: Wed May 11 15:39:34 2011 -0400 + + gdbus-codegen: Drop dependency on argparse + + This is only in Python 2.7 or as a separate module. Use optparse + which exists since 2.3. + + https://bugzilla.gnome.org/show_bug.cgi?id=649988 + + gio/gdbus-codegen/codegen.py | 1 - + gio/gdbus-codegen/codegen_docbook.py | 1 - + gio/gdbus-codegen/codegen_main.py | 47 + ++++++++++++++++++------------------ + 3 files changed, 24 insertions(+), 25 deletions(-) + +commit eebb3647a1cab8deec8b97d666f6bd0c006438ea +Author: Giovanni Campagna +AuthorDate: Sun Apr 3 17:19:48 2011 +0200 +Commit: Giovanni Campagna +CommitDate: Wed May 11 20:10:25 2011 +0200 + + gbase64: fix introspection annotations + + Makes the g_base64_* functions usable from introspection GLib bindings + (gjs, currently, as both vala and pygobject use manual bindings for + GLib) + + https://bugzilla.gnome.org/show_bug.cgi?id=646635 + + glib/gbase64.c | 40 +++++++++++++++++++++------------------- + 1 file changed, 21 insertions(+), 19 deletions(-) + +commit c026cf56a178ef786b8a372d4c1cd01e2ab2a3c9 +Author: Colin Walters +AuthorDate: Wed May 11 13:19:05 2011 -0400 +Commit: Colin Walters +CommitDate: Wed May 11 13:19:05 2011 -0400 + + gdatetime: Quiet GCC warning about possibly-uninitialized + + glib/gdatetime.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit c2a2350cc1905fb29167c0ee29d0c1f3c61a2865 +Author: Ryan Lortie +AuthorDate: Tue May 10 15:25:54 2011 +0200 +Commit: Ryan Lortie +CommitDate: Tue May 10 15:25:54 2011 +0200 + + GSettings: fix example in the docs + + gio/gsettings.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 53dc341b0d769905ffdde5f631942b20dfe09bf6 +Author: Giovanni Campagna +AuthorDate: Tue May 3 18:54:45 2011 +0200 +Commit: Giovanni Campagna +CommitDate: Mon May 9 19:04:25 2011 +0200 + + GDBusMethodInvocation: fix introspection annotations + + In particular (transfer full), to avoid a refcounting bug and a + segmentation fault. + + https://bugzilla.gnome.org/show_bug.cgi?id=646635 + + gio/gdbusmethodinvocation.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 21c22914966ee4e114ee207036fc6e5640d0bda4 +Author: Martin Pitt +AuthorDate: Sun May 8 14:12:23 2011 +0200 +Commit: Martin Pitt +CommitDate: Sun May 8 23:07:40 2011 +0200 + + [gi] Add missing allow-none annotations to GDBusConnection + + gio/gdbusconnection.c | 72 + ++++++++++++++++++++++++++++++--------------------- + 1 file changed, 42 insertions(+), 30 deletions(-) + +commit 3495f57d6bdfad164654541bc5d75dbb0caaae3f +Author: Yuri Kozlov +AuthorDate: Sun Mar 20 10:50:35 2011 +0300 +Commit: Yuri Myasoedov +CommitDate: Sun May 8 12:05:09 2011 +0400 + + Updated Russian translation + + po/ru.po | 2584 + ++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 1757 insertions(+), 827 deletions(-) + +commit 13211c5b60fb12c338af33c70aece6b76218647b +Author: Daniel Mustieles +AuthorDate: Sat May 7 12:38:56 2011 +0200 +Commit: Daniel Mustieles +CommitDate: Sat May 7 12:38:56 2011 +0200 + + Updated Spanish translation + + po/es.po | 509 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 248 insertions(+), 261 deletions(-) + +commit 1361ec78cd4c4c97fba8276552f2188e74f676b5 +Author: Ryan Lortie +AuthorDate: Sat May 7 11:42:46 2011 +0200 +Commit: Ryan Lortie +CommitDate: Sat May 7 11:45:44 2011 +0200 + + GSettings: keep resets on loss of writability + + Don't drop resets from a GDelayedSettingsBackend when the writability + changes. Resets will always succeed, even against non-writable + keys and + some people (gnome-screensaver) are using them in a way that they + would + want them not to be forgotten. + + gio/gdelayedsettingsbackend.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +commit a38c97af519caa928a7d61af79c323a4ee2d8dfe +Author: Ryan Lortie +AuthorDate: Sat May 7 11:41:19 2011 +0200 +Commit: Ryan Lortie +CommitDate: Sat May 7 11:45:44 2011 +0200 + + Allow NULL to be stored into GSettings trees + + This is used for resets (in theory) and currently it crashes when + freeing the tree. + + gio/gsettingsbackend.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit 720d6ec8e42d1067d32556d9b50e8b83cf6ca4b9 +Author: David Zeuthen +AuthorDate: Fri May 6 15:25:49 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri May 6 15:27:52 2011 -0400 + + gdbus: Add a --timeout option + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus.xml | 3 +++ + gio/gdbus-tool.c | 4 +++- + 2 files changed, 6 insertions(+), 1 deletion(-) + +commit 7bcede9301b0beacdc2fcb71e652f87fdc1908e9 +Author: Ray Strode +AuthorDate: Fri May 6 13:00:38 2011 -0400 +Commit: Ray Strode +CommitDate: Fri May 6 13:00:38 2011 -0400 + + gdbus-codegen: fix typo in man page + + s/on_handle_hello-world/on_handle_hello_world/ + + docs/reference/gio/gdbus-codegen.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f773bd8b764232d6c691de1329a2defc66c0e51f +Author: David Zeuthen +AuthorDate: Fri May 6 10:32:42 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri May 6 10:32:42 2011 -0400 + + gdbus-codegen: gracefully handle property get on proxy with no + cached property + + This can easily happen if the owner of the remote object vanishes. Of + course, when that happens, user code is already notified (by e.g. the + notify::g-name-owner signal) so it can avoid using the proxy but + requiring that is a bit harsh. IOW, before this patch this critical + error was printed + + GLib-GIO-CRITICAL **: g_dbus_gvariant_to_gvalue: assertion `value != + NULL' failed + + when that happened. With this patch, we just avoid setting the GValue + so the user will get the default value for its type instead. So, for + example, if the user code is getting a GVariant property on such a + defunct proxy, then he gets a NULL back. So unless said user code + checks the return value, criticals will still be printed if the NULL + GVariant is used for anything interesting. + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +commit 3d3659c1b6b5cd65595e8b28b77f00ef58456dbd +Author: Matthias Clasen +AuthorDate: Fri May 6 07:14:48 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 6 07:14:48 2011 -0400 + + Documentation additions + + Add Since tags to recently introduced test function typedefs. + https://bugzilla.gnome.org/show_bug.cgi?id=649506 + + glib/gtestutils.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +commit 914d10055cb15456c01b0b59cfa2ac167a065f77 +Author: Dan Winship +AuthorDate: Thu May 5 15:18:22 2011 -0400 +Commit: Dan Winship +CommitDate: Thu May 5 15:18:22 2011 -0400 + + Add two annotations for g-i + + gio/gtlsbackend.c | 2 +- + gio/gtlsclientconnection.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 17d8d2cc44af8b6b656cc971e68d71115acb7e8c +Author: Matthias Clasen +AuthorDate: Thu May 5 14:52:19 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 5 14:57:09 2011 -0400 + + Add tests for new GDateTime functionality + + glib/tests/gdatetime.c | 68 + +++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 67 insertions(+), 1 deletion(-) + +commit e15ecab0486aa851dcc15e6e4023354a4b8b481f +Author: Matthias Clasen +AuthorDate: Thu May 5 13:40:51 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 5 14:57:09 2011 -0400 + + Expand the g_date_time_format documentation + + Mention strftime, and explain supported modifiers. + + glib/gdatetime.c | 41 +++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 41 insertions(+) + +commit d23c33a04bd1d16f30efb1511cd8b698dc9c84b1 +Author: Matthias Clasen +AuthorDate: Thu May 5 13:16:30 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 5 14:57:09 2011 -0400 + + GDateTime: enhance g_date_time_format() + + Make g_date_time_format() support some useful format modifiers from + strftime(). This commit adds support for the POSIX 'O' modifier + (alternative digits), as well as the -/_/0 padding modifiers, which + are a GNU strftime() extension. + https://bugzilla.gnome.org/show_bug.cgi?id=648678 + + glib/gdatetime.c | 120 + +++++++++++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 100 insertions(+), 20 deletions(-) + +commit 8932a1a7a3bf1bb68c2f2762f3674a149742b1fa +Author: Colin Walters +AuthorDate: Thu May 5 13:16:54 2011 -0400 +Commit: Colin Walters +CommitDate: Thu May 5 14:09:11 2011 -0400 + + GSocket: Use MSG_CMSG_CLOEXEC + + This ensures received file descriptors don't leak to child processes. + + https://bugzilla.gnome.org/show_bug.cgi?id=649480 + + gio/gsocket.c | 16 ++++++++++++++++ + gio/gunixfdmessage.c | 4 ++++ + 2 files changed, 20 insertions(+) + +commit 7ca8691a934ac571ed034d5c01882ac8de19769c +Author: Chun-wei Fan +AuthorDate: Thu May 5 15:09:51 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu May 5 15:09:51 2011 +0800 + + Update VS2010 "install" project + + The dependencies on gsettings and glib-compile-schemas were + missed-made + up for them here. + + build/win32/vs10/install.vcxproj | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 9f90408e976a4e2c1bdc7debfe10601885a78402 +Author: Chun-wei Fan +AuthorDate: Thu May 5 13:40:38 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu May 5 13:40:38 2011 +0800 + + Update gcancellable.c for Win32 + + errno.h is still required for Windows in this file... + + gio/gcancellable.c | 1 + + 1 file changed, 1 insertion(+) + +commit 8f484c482d452f89a9d9542f76014c2b2957e294 +Author: Chun-wei Fan +AuthorDate: Thu May 5 13:36:34 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu May 5 13:36:34 2011 +0800 + + Update VS property sheets + + There are some new public headers added for GIO. Make up for + them here + in the install phase + + build/win32/vs10/glib.props | 18 ++++++++++++++++++ + build/win32/vs9/glib.vsprops | 9 +++++++++ + 2 files changed, 27 insertions(+) + +commit 58c5973a00c1f9708bc397ecaae64f040a5f65d0 +Author: Chun-wei Fan +AuthorDate: Thu May 5 12:42:44 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu May 5 12:42:44 2011 +0800 + + MSVC support update for GObject + + Apparently GObject now depends on libffi. Add it to the dependencies + list. + + For MSVC, use the libffi-3.0.10(rcx) versions. + + build/win32/vs10/gobject.vcxprojin | 4 ++++ + build/win32/vs9/gobject.vcprojin | 4 ++++ + 2 files changed, 8 insertions(+) + +commit 5b5299e1c49570caa85704f5225fde498015aee3 +Author: Chun-wei Fan +AuthorDate: Thu May 5 12:35:45 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu May 5 12:35:45 2011 +0800 + + GLib MSVC Support updates (autotools) + + Filter out *-unix.c from the source file list, as it is obviously not + usable (nor used) under VS 2008/2010 + + glib/Makefile.am | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 6c4b84d5ff10afdb9e86ce718a3fa7f6c54078ce +Author: Matthias Clasen +AuthorDate: Wed May 4 21:26:11 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 4 21:26:11 2011 -0400 + + Post-release bump + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5b4da74bc75b91a1eac7c9b7eac39bf543ab7b6b +Author: Matthias Clasen +AuthorDate: Wed May 4 20:45:46 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 4 20:45:46 2011 -0400 + + More distcheck fixes + + gio/gdbus-codegen/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit d5d4659a60ed682d67bbfba853bfa62f221e1e3b +Author: Matthias Clasen +AuthorDate: Wed May 4 19:44:05 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 4 19:44:05 2011 -0400 + + Try to fix distcheck + + gio/tests/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 6ea2291573a554eb15e1653c0dd8f0503edec9b7 +Author: Matthias Clasen +AuthorDate: Wed May 4 14:53:08 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 4 14:53:08 2011 -0400 + + Pre-release bump + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5b45c39b4b02f4f5c4665b505fb1cf3e84d0b6e8 +Author: Matthias Clasen +AuthorDate: Wed May 4 14:33:03 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 4 14:33:03 2011 -0400 + + Updates + + NEWS | 68 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 68 insertions(+) + +commit c0623501592eb484da46e76a1e1b0370c527f61b +Author: Ray Strode +AuthorDate: Wed May 4 12:45:22 2011 -0400 +Commit: Ray Strode +CommitDate: Wed May 4 12:45:22 2011 -0400 + + gdbus-codegen: don't assert non-negativity for unsigned values + + The code generator sprinkles a few asserts in its output of the form: + + g_assert (prop_id - 1 >= 0 && prop_id - 1 < %d);\n + + prop_id is unsigned, though, so this generates a compiler warning for + me. + + This commit changes the code to merely check for prop_id != 0 + instead of + prop_id - 1 >= 0 + + gio/gdbus-codegen/codegen.py | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit e823ba10d3babd5ae61c69d96379ff34e9e978f8 +Author: Ryan Lortie +AuthorDate: Wed May 4 18:12:31 2011 +0200 +Commit: Ryan Lortie +CommitDate: Wed May 4 18:20:23 2011 +0200 + + GVariant: Better handling of invalid UTF-8 + + g_variant_new_string() hits a g_return_if_fail() when given invalid + UTF-8. That's certainly the right thing to do, but + g_variant_builder_add() uses this function internally and crashes when + it returns NULL due to the user passing a non-utf8 string. + + We can protect the internal code by returning "[Invalid UTF-8]" + in this + case while also making the problem easier to debug (and less fatal). + + Closes #632631. + + glib/gvariant.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +commit d97cbc6731deab137770bc0fe9c69b06f689f5b4 +Author: Alexander Larsson +AuthorDate: Wed May 4 13:54:34 2011 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 4 13:54:34 2011 +0200 + + gdbus-codegen: Make sure we pass -Werror + + _g_value_equal might not always be used, so mark it G_GNUC_UNUSED + to make sure we're -Werror clean. + + gio/gdbus-codegen/codegen.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 985fd99e06469e7f64b2bbcf37b03ea14c4a30dc +Author: Kjartan Maraas +AuthorDate: Wed May 4 11:06:44 2011 +0200 +Commit: Kjartan Maraas +CommitDate: Wed May 4 11:07:32 2011 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 833 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 422 insertions(+), 411 deletions(-) + +commit 1ab29b6c4a2ddf5a60b4cc353422d605197b7696 +Author: David Zeuthen +AuthorDate: Wed May 4 03:37:46 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed May 4 03:43:52 2011 -0400 + + GDBusObjectManagerServer: Allow setting :connection property + + .. and add a C setter to do this. Also make the C getter return a + reference since the property may be set from another thread. Also + change the constructor to _not_ take a GDBusConnection since this is + something you almost always want to do _after_ creating it. The + API/ABI break is fine as there has never been a GLib release with this + type. + + https://bugzilla.gnome.org/show_bug.cgi?id=648959 + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdbusobjectmanagerserver.c | 266 + ++++++++++++++++++------- + gio/gdbusobjectmanagerserver.h | 5 +- + gio/gio.symbols | 1 + + gio/tests/gdbus-example-objectmanager-server.c | 5 +- + gio/tests/gdbus-test-codegen.c | 14 +- + 6 files changed, 217 insertions(+), 75 deletions(-) + +commit 542215b78ac52ffb96386ef63ee782981a1b8e49 +Author: Colin Walters +AuthorDate: Tue May 3 16:31:34 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 3 23:34:17 2011 -0400 + + Rename g_unix_pipe_flags to g_unix_open_pipe + + From IRC discussion, people liked this name more. + + https://bugzilla.gnome.org/show_bug.cgi?id=649322 + + docs/reference/glib/glib-sections.txt | 2 +- + gio/gcancellable.c | 2 +- + glib/glib-unix.c | 8 ++++---- + glib/glib-unix.h | 6 +++--- + glib/glib.symbols | 2 +- + glib/gmain.c | 4 ++-- + glib/tests/unix.c | 2 +- + 7 files changed, 13 insertions(+), 13 deletions(-) + +commit ba5c9bd39f070acabee81c630ae2cbe678f1a99e +Author: Matthias Clasen +AuthorDate: Tue May 3 19:15:46 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 3 19:15:46 2011 -0400 + + Remove extraneous decorations + + Since in a doc comment takes no leading '@'. + + glib/gtestutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 511070fb2803c799b953ac938b81c79c5e1036f8 +Author: Colin Walters +AuthorDate: Tue May 3 16:22:13 2011 -0400 +Commit: Colin Walters +CommitDate: Tue May 3 16:22:13 2011 -0400 + + glib-unix.c: Don't leak FDs if pipe2() succeeds + + glib/glib-unix.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit e5c986cbcf34f15397ab2032453cc4220ce480e4 +Author: Matthias Clasen +AuthorDate: Tue May 3 12:41:11 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 3 12:41:11 2011 -0400 + + Only remove the lines that are no longer needed + + tests/Makefile.am | 3 --- + 1 file changed, 3 deletions(-) + +commit 5d1aba24648adf7432391f725599d4a19727ece9 +Author: Matthias Clasen +AuthorDate: Tue May 3 12:37:45 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 3 12:37:45 2011 -0400 + + Revert "[build] Remove stale LDADD lines from tests/Makefile.am to + allow build" + + This reverts commit b0874ce28e910121fb2d94f6f9183bfdc08e8eaf. + + tests/Makefile.am | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + +commit 11bb78105dc2effcfe9c48365fa2e295fb48ee38 +Author: Colin Walters +AuthorDate: Tue May 3 10:57:22 2011 -0400 +Commit: Colin Walters +CommitDate: Tue May 3 10:57:22 2011 -0400 + + Use g types in public API for consistency + + glib/glib-unix.h | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit c078223b388939f3f7cb77bdaa8b60aad0713756 +Author: Colin Walters +AuthorDate: Mon May 2 15:42:51 2011 -0400 +Commit: Colin Walters +CommitDate: Tue May 3 10:14:48 2011 -0400 + + GCancellable: Use g_unix_pipe_flags with FD_CLOEXEC + + The old code was creating a pipe and setting FD_CLOEXEC + non-atomically. + + https://bugzilla.gnome.org/show_bug.cgi?id=649225 + + gio/gcancellable.c | 18 +----------------- + 1 file changed, 1 insertion(+), 17 deletions(-) + +commit ed37970a0405b5681bcd6449d4dc1b4f9080c4fa +Author: Colin Walters +AuthorDate: Tue May 3 09:52:10 2011 -0400 +Commit: Colin Walters +CommitDate: Tue May 3 10:14:48 2011 -0400 + + g_unix_set_fd_nonblocking: New API to control file descriptor + blocking state + + And use it in relevant places in GLib. + + https://bugzilla.gnome.org/show_bug.cgi?id=649225 + + gio/gcancellable.c | 27 +++++---------------------- + gio/gsocket.c | 17 ++++++++--------- + glib/glib-unix.c | 50 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/glib-unix.h | 4 ++++ + glib/glib.symbols | 1 + + glib/gmain.c | 2 +- + 6 files changed, 69 insertions(+), 32 deletions(-) + +commit e08e70e08d65e2fce142491a6c8fc6068c8008d2 +Author: Colin Walters +AuthorDate: Mon May 2 17:02:16 2011 -0400 +Commit: Colin Walters +CommitDate: Tue May 3 08:37:27 2011 -0400 + + glib-unix.h: Unconditionally include unistd.h + + danw points out it's part of POSIX. + + https://bugzilla.gnome.org/show_bug.cgi?id=649201 + + glib/glib-unix.h | 2 -- + 1 file changed, 2 deletions(-) + +commit e56498ee0b1bdac0ad3c18a1f7bff83d4a5b1323 +Author: Dan Winship +AuthorDate: Sun May 1 11:17:14 2011 -0400 +Commit: Dan Winship +CommitDate: Tue May 3 07:07:41 2011 -0400 + + Fix usage of _GNU_SOURCE + + _GNU_SOURCE must be defined before including any other (system) + header, so defining it in glib-unix.h (and hoping no one has included + anything else before that) is wrong. And the "#define _USE_GNU" + workaround for this problem in gnetworkingprivate.h is even wronger + (and still prone to failure anyway due to single-include guards). + + Fix this by defining _GNU_SOURCE in config.h when building against + glibc. In theory this is bad because new releases of glibc may include + symbols that conflict with glib symbols, which could then cause + compile failures. However, most people only see new releases of glibc + when they upgrade their distro, at which point they also generally get + new releases of gcc, which have new warnings/errors to clean up + anyway. + + https://bugzilla.gnome.org/show_bug.cgi?id=649201 + + configure.ac | 6 ++++-- + gio/gfile.c | 1 - + gio/glib-compile-schemas.c | 1 - + gio/glocalfileinfo.c | 1 - + gio/gnetworkingprivate.h | 22 ++++------------------ + gio/gsettings.c | 1 - + gio/gunixcredentialsmessage.c | 2 -- + gio/gunixfdlist.c | 2 -- + gio/libasyncns/g-asyncns.h | 2 -- + gio/tests/gdbus-peer.c | 2 ++ + glib/glib-unix.h | 8 -------- + glib/gmain.c | 15 --------------- + glib/gprintf.c | 4 ---- + glib/gqsort.c | 1 - + glib/gslice.c | 2 +- + glib/gstrfuncs.c | 2 -- + 16 files changed, 11 insertions(+), 61 deletions(-) + +commit 33c0877adc681cb7cf8cf12afd94a9de8c869bf2 +Author: Dan Winship +AuthorDate: Mon May 2 17:06:37 2011 -0400 +Commit: Dan Winship +CommitDate: Mon May 2 17:06:37 2011 -0400 + + Add back an erroneously-removed line to tests/Makefile.am + + tests/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit e71fdf6b5a88cc1f47f4cc12bab10c6e8953efae +Author: Colin Walters +AuthorDate: Fri Apr 29 10:59:42 2011 -0400 +Commit: Colin Walters +CommitDate: Mon May 2 14:44:25 2011 -0400 + + Drop translated g_warning/g_error + + http://mail.gnome.org/archives/desktop-devel-list/2011-March/msg00069.html + + gio/gdbusmethodinvocation.c | 6 +++--- + gio/gdbusproxy.c | 4 ++-- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit 597ede957a4783b72a7037497f6f2e775285df3a +Author: Ray Strode +AuthorDate: Mon May 2 12:33:36 2011 -0400 +Commit: Ray Strode +CommitDate: Mon May 2 14:31:59 2011 -0400 + + glib/Makefile.am: add gmain-internal.h to sources + + It's a new private header. + + This commit adds it to the Makefile so it's properly distributed + with the sources. + + glib/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 02877e29020c2a0f34283435ecf544b1f6793077 +Author: Benjamin Otte +AuthorDate: Mon May 2 19:22:25 2011 +0200 +Commit: Benjamin Otte +CommitDate: Mon May 2 19:33:51 2011 +0200 + + gobject: Warn if someone uses the wrong property in g_object_get/set + + "Interface::property" was not detected before and led to a crash. + + gobject/gobject.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit 331e15b1284cd6fd5804a7495d2882ee97148c0a +Author: Abduxukur Abdurixit +AuthorDate: Mon May 2 18:29:59 2011 +0200 +Commit: Abduxukur Abdurixit +CommitDate: Mon May 2 18:29:59 2011 +0200 + + Added UG translation + + po/ug.po | 7552 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 3765 insertions(+), 3787 deletions(-) + +commit bdc23c44e8fbb507e14056a05e38b92982df7a5f +Author: Dan Winship +AuthorDate: Mon May 2 11:45:52 2011 -0400 +Commit: Dan Winship +CommitDate: Mon May 2 11:50:23 2011 -0400 + + Fix compiler warnings + + glib/gdate.c | 2 +- + glib/ghash.c | 2 +- + glib/gutf8.c | 4 ---- + glib/tests/gvariant.c | 1 + + gobject/gclosure.c | 2 ++ + gobject/gobject.c | 52 + +++++++++++++++++++++----------------------- + gobject/testgobject.c | 2 ++ + gobject/tests/dynamictests.c | 3 +++ + gobject/tests/threadtests.c | 7 +++--- + tests/refcount/objects.c | 2 +- + tests/refcount/objects2.c | 2 +- + tests/refcount/properties.c | 4 ---- + tests/refcount/properties2.c | 2 +- + tests/refcount/signals.c | 2 +- + 14 files changed, 42 insertions(+), 45 deletions(-) + +commit 6f711a76cdd7eac3914542232526111a7b6bb053 +Author: Dan Winship +AuthorDate: Mon May 2 11:44:46 2011 -0400 +Commit: Dan Winship +CommitDate: Mon May 2 11:50:23 2011 -0400 + + Fix autoconf 2.68 warnings + + autoconf 2.68 is very insistent that AC_LANG_SOURCE/AC_LANG_PROGRAM + must be used in certain places, to avoid quoting/lack-of-quoting + problems, or something. Fix. + + configure.ac | 60 + ++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 30 insertions(+), 30 deletions(-) + +commit c1d61f197137a0dda6b1894984114ed2ed4171ea +Author: Behdad Esfahbod +AuthorDate: Mon May 2 11:43:02 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Mon May 2 11:43:18 2011 -0400 + + Bug 648966 - Update g_unichar_iswide and g_unichar_iswide_cjk + + Add tests. + + glib/tests/utf8-misc.c | 91 + +++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 87 insertions(+), 4 deletions(-) + +commit b0874ce28e910121fb2d94f6f9183bfdc08e8eaf +Author: Behdad Esfahbod +AuthorDate: Mon May 2 11:26:01 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Mon May 2 11:43:18 2011 -0400 + + [build] Remove stale LDADD lines from tests/Makefile.am to allow build + + Automake 1.11 wasn't happy. + + tests/Makefile.am | 35 ----------------------------------- + 1 file changed, 35 deletions(-) + +commit 181763438a6be7791ef87c63fa119f74b44aeede +Author: Dan Winship +AuthorDate: Mon May 2 09:53:59 2011 -0400 +Commit: Dan Winship +CommitDate: Mon May 2 09:54:15 2011 -0400 + + Update .gitignores + + .gitignore | 1 + + gio/.gitignore | 1 + + gio/gdbus-codegen/.gitignore | 2 ++ + gio/tests/.gitignore | 4 ++++ + glib/.gitignore | 1 + + glib/tests/.gitignore | 3 +++ + gobject/.gitignore | 1 + + gthread/tests/.gitignore | 1 + + 8 files changed, 14 insertions(+) + +commit f4cff2b923dd4df811327c9f199614dbfcbfe436 +Author: Matthias Clasen +AuthorDate: Sun May 1 23:02:53 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 1 23:02:53 2011 -0400 + + Some documentation additions + + docs/reference/gio/gio-sections.txt | 4 ++++ + gio/gdbusobjectproxy.c | 16 ++++++++++++++-- + gio/gdesktopappinfo.c | 18 ++++++++++++------ + 3 files changed, 30 insertions(+), 8 deletions(-) + +commit ddcb095fb22b6b3c865bbe3a86af6cadca4c8131 +Author: Matthias Clasen +AuthorDate: Sun May 1 20:43:04 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 1 20:43:04 2011 -0400 + + Avoid an unused variable warning + + Also, clean up some whitespace + + glib/tests/keyfile.c | 355 + ++++++++++++++++++++++++++------------------------- + 1 file changed, 179 insertions(+), 176 deletions(-) + +commit ef5d4d55fe76b71edaf83999ca7408121a5439fa +Author: Matthias Clasen +AuthorDate: Sun May 1 17:07:46 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 1 17:10:04 2011 -0400 + + Fix make check + + g_thread_init() causes a hash table to be allocated (in read_aliases). + Since hash tables are now a bit larger, we need to bump one of the + probe sizes to avoid our probe slice being used for the aliases + hash table. + + tests/slice-threadinit.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a84637377ca81fe53bff1f694c7364eda21b88c9 +Author: Abduxukur Abdurixit +AuthorDate: Sun May 1 20:04:51 2011 +0200 +Commit: Abduxukur Abdurixit +CommitDate: Sun May 1 20:04:51 2011 +0200 + + Added UG translation + + po/ug.po | 7381 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 3793 insertions(+), 3588 deletions(-) + +commit d09df426ba3788174b5bcc974831651208a13ea2 +Author: Matthias Clasen +AuthorDate: Sun May 1 10:55:24 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 1 10:55:24 2011 -0400 + + GHash: make sets with refcounted keys work correctly + + When keys == values, we have to be careful about the order in + which we replace their elements. + + glib/ghash.c | 6 ++-- + glib/tests/hash.c | 93 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 96 insertions(+), 3 deletions(-) + +commit be991170fa99185b7cf1dbf3f9bc62c9d656a08a +Author: Matthias Clasen +AuthorDate: Sat Apr 30 22:28:34 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 30 23:11:18 2011 -0400 + + GHash: introduce a "set" mode + + Make hash tables start out in a mode in which they don't store + values at all, until the first insertion of a non-identical + key-value pair. + + This reduces memory requirements by 1/3 when using hash tables + to store sets. + + Based on a patch by Morten Welinder, + https://bugzilla.gnome.org/show_bug.cgi?id=644437 + + glib/ghash.c | 67 + ++++++++++++++++++++++++++++++++++++++++++++++++++----- + glib/tests/hash.c | 42 ++++++++++++++++++++++++++++++++++ + 2 files changed, 103 insertions(+), 6 deletions(-) + +commit 0ae6bc3aaa57eb15826d81d2db466c166d0b75bf +Author: Morten Welinder +AuthorDate: Wed Apr 27 10:46:00 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 30 23:11:18 2011 -0400 + + GHash: eliminate one of the lookup_nodes functions. + + Kill g_hash_table_lookup_node and rename + g_hash_table_lookup_node_for_insertion + to g_hash_table_lookup_node. Since at this point we already check for + toombstones in all callers of g_hash_table_lookup_node this doesn't + make + a difference. + + https://bugzilla.gnome.org/show_bug.cgi?id=644437 + + glib/ghash.c | 83 + +++++++++--------------------------------------------------- + 1 file changed, 12 insertions(+), 71 deletions(-) + +commit 6e45153ef78e1dbc59592104f0675ac8e81c6648 +Author: Morten Welinder +AuthorDate: Wed Apr 27 10:39:56 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 30 23:11:18 2011 -0400 + + GHash: split nodes array into seperate arrays. + + This reduces memory requirements by 1/6 on 64-bit machines since + no padding is needed. It also puts less strain on the memory + allocator since we no longer need one giant slab of memory. + + https://bugzilla.gnome.org/show_bug.cgi?id=644437 + + glib/ghash.c | 207 + +++++++++++++++++++++++++++++------------------------------ + 1 file changed, 102 insertions(+), 105 deletions(-) + +commit 4d8e64e6e83dcbd8c82de45ca5a517213bfd5a1a +Author: Morten Welinder +AuthorDate: Wed Apr 27 09:53:39 2011 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 30 23:11:18 2011 -0400 + + GHash: use macros to check for magic hash values. + + https://bugzilla.gnome.org/show_bug.cgi?id=644437 + + glib/ghash.c | 51 +++++++++++++++++++++++++-------------------------- + 1 file changed, 25 insertions(+), 26 deletions(-) + +commit 707e011061fa7dcdaddca686a351ba3bdde5ffe9 +Author: Chun-wei Fan +AuthorDate: Sun May 1 09:42:22 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Sun May 1 09:42:22 2011 +0800 + + Update VS2008/2010 README.txt + + Tell people about the usage of ZLib to avoid the + problem such as the one mentioned in Bug 633977 + + build/win32/vs10/README.txt | 6 +++++- + build/win32/vs9/README.txt | 4 ++++ + 2 files changed, 9 insertions(+), 1 deletion(-) + +commit acda716d2d955ba2107a06a11df2e7938d0dfd4d +Author: Behdad Esfahbod +AuthorDate: Fri Apr 29 16:14:49 2011 -0400 +Commit: Behdad Esfahbod +CommitDate: Fri Apr 29 18:03:24 2011 -0400 + + Bug 648966 - Update g_unichar_iswide and g_unichar_iswide_cjk + + Update to Unicode 6.0. Also attach Python script that generates + the tables. + + glib/Makefile.am | 1 + + glib/gen-iswide-table.py | 58 ++++++++++++++++++++++++++++++++++ + glib/guniprop.c | 81 + ++++++++++++++++++++++++++++-------------------- + 3 files changed, 107 insertions(+), 33 deletions(-) + +commit 426e1b61595f0c822b4a4f62f0d9152a6558232d +Author: Ryan Lortie +AuthorDate: Fri Apr 29 17:06:26 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 29 17:07:28 2011 -0400 + + Remove duplicate GDBusInterface declaration + + It was in gdbusinterface.h but also in giotypes.h. Remove it from the + former. + + gio/gdbusinterface.h | 1 - + 1 file changed, 1 deletion(-) + +commit 92aed13eb8926cb35d1f2e8978c152f2e4398830 +Author: David Zeuthen +AuthorDate: Fri Apr 29 13:11:22 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 29 13:11:22 2011 -0400 + + Update docs to take comments/suggestions from Matthias into account + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 74 + ++++++++++++++++++++++++---------- + docs/reference/gio/migrating-gdbus.xml | 5 +++ + gio/gdbusobjectmanagerserver.c | 6 ++- + 3 files changed, 62 insertions(+), 23 deletions(-) + +commit 0e352fdb182e63ff163b0feda198cb3b6b20aa3a +Merge: 0377fe7 9eba49a +Author: David Zeuthen +AuthorDate: Fri Apr 29 12:01:35 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 29 12:01:35 2011 -0400 + + Merge branch 'master' into gdbus-codegen + +commit 9eba49a982e94196f90c79c5eac4a00cc437b12e +Author: Alexander Larsson +AuthorDate: Fri Apr 29 16:14:17 2011 +0200 +Commit: Alexander Larsson +CommitDate: Fri Apr 29 16:14:17 2011 +0200 + + GFilterInputStream: close-base-stream should not be construct-only + + This is a runtime changable property (by the methods for it), must + be a cut and paste error. + + gio/gfilterinputstream.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a04efe6afb63d54e12ff8f329cbaf458a2e31b26 +Author: Colin Walters +AuthorDate: Tue Apr 26 13:04:25 2011 -0400 +Commit: Colin Walters +CommitDate: Thu Apr 28 14:48:48 2011 -0400 + + Use SIGTRAP (via G_BREAKPOINT()) if G_DEBUG=fatal-warnings + + On Linux with gdb, it's much more convenient to debug programs using + G_DEBUG=fatal-warnings if we send SIGTRAP instead of abort() by + default. The default handler for both is to terminate the process. + + In particular this makes it more easily possible to debug a warning + that's not the first in a program; you can skip past it and + go to the warning you care about. + + The "aborting..." message is removed since it's no longer accurate, + and anyways was never very useful; crashes should show up in + ABRT/apport + type crash catching systems. + + https://bugzilla.gnome.org/show_bug.cgi?id=648423 + + glib/gmessages.c | 15 +-------------- + 1 file changed, 1 insertion(+), 14 deletions(-) + +commit 1763c2a575a959efa96795fc8d9d2cff60dd70cc +Author: Daniel Mustieles +AuthorDate: Thu Apr 28 20:45:34 2011 +0200 +Commit: Daniel Mustieles +CommitDate: Thu Apr 28 20:45:34 2011 +0200 + + Updated Spanish translation + + po/es.po | 458 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 241 insertions(+), 217 deletions(-) + +commit e585059514714b7bc191fa3467cb15e86dcc7e09 +Author: Shaun McCance +AuthorDate: Thu Apr 28 12:41:41 2011 -0400 +Commit: Shaun McCance +CommitDate: Thu Apr 28 12:41:41 2011 -0400 + + glib/gvariant.c: Fix variable name in example code + + glib/gvariant.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a1fbe7ae8402c18fc5ebae1d07a90342f79621f3 +Author: Colin Walters +AuthorDate: Wed Apr 27 19:09:38 2011 -0400 +Commit: Colin Walters +CommitDate: Wed Apr 27 19:09:38 2011 -0400 + + Drop stray reference to gthread.la + + We now build this test multithreaded in gthread/tests. + + glib/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7b04bbc8e05f8d22309990599820eeb2438b3cbd +Author: Colin Walters +AuthorDate: Wed Apr 27 18:42:29 2011 -0400 +Commit: Colin Walters +CommitDate: Wed Apr 27 18:42:29 2011 -0400 + + glib/Makefile.am: Remove stray tab + + glib/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 549d895fa4e9c4b5a35c5d9da4db39ca11dc71cc +Author: Colin Walters +AuthorDate: Thu Mar 17 10:11:41 2011 -0400 +Commit: Colin Walters +CommitDate: Wed Apr 27 16:01:39 2011 -0400 + + glib-unix: New API to watch some Unix signals + + This new API allows watching a few select Unix signals; + looking through the list on my system, I didn't see anything + else that I think it'd reasonable to watch. + + We build on the previous patch to make the child watch helper thread + that existed on Unix handle these signals in the threaded case. + In the non-threaded case, they're just global variables. + + https://bugzilla.gnome.org/show_bug.cgi?id=644941 + + docs/reference/glib/glib-docs.sgml | 1 + + docs/reference/glib/glib-sections.txt | 4 +- + glib/glib-unix.c | 88 +++++++- + glib/glib-unix.h | 22 +- + glib/glib.symbols | 2 + + glib/gmain-internal.h | 35 ++++ + glib/gmain.c | 371 + ++++++++++++++++++++++++++++------ + glib/tests/Makefile.am | 6 +- + glib/tests/unix.c | 81 ++++++++ + gthread/tests/Makefile.am | 5 + + 10 files changed, 544 insertions(+), 71 deletions(-) + +commit 920899d78fbed7f014dc1549f1b54a3bd708eb4b +Author: Colin Walters +AuthorDate: Wed Mar 16 19:02:15 2011 -0400 +Commit: Colin Walters +CommitDate: Wed Apr 27 14:58:36 2011 -0400 + + gmain: Prepare child watch handling for more generic signal handling + + In preparation for supporting more Unix signals such as SIGHUP, + SIGTERM etc., + + https://bugzilla.gnome.org/show_bug.cgi?id=644941 + + glib/glib-unix.c | 19 ++++---- + glib/gmain.c | 134 + +++++++++++++++++++++++++++++++++++++++++++------------ + 2 files changed, 114 insertions(+), 39 deletions(-) + +commit 0ff211f520c18550454289e7265061d7e8ac41c0 +Author: Colin Walters +AuthorDate: Wed Mar 16 13:54:28 2011 -0400 +Commit: Colin Walters +CommitDate: Wed Apr 27 13:29:38 2011 -0400 + + glib-unix: New Unix-specific API + + GLib historically has been designed to be "mostly" portable; there + are some functions only available on Unix like + g_io_channel_unix_new(), + but these are typically paired with obvious counterparts for Win32. + + However, as GLib is used not only by portable software, but components + targeting Unix (or even just Linux), there are a few cases where it + would be very convenient if GLib shipped built-in functionality. + + This initial patch is a basic wrapper around pipe2(), including + fallbacks for older kernels. This pairs well with the + existing g_spawn_*() API and its child_setup functionality. + + However, in the future, I want to add a signal() wrapper here, + complete with proxying the signal to a mainloop. I have initial code + for this, but doing it sanely (including factoring out gmain.c's + private worker thread), is a complex task, and I don't want to block + on that. + + See also gwin32.h for Win32 specific functionality. + + https://bugzilla.gnome.org/show_bug.cgi?id=644941 + + docs/reference/glib/glib-sections.txt | 8 ++ + glib/Makefile.am | 7 ++ + glib/glib-unix.c | 135 + ++++++++++++++++++++++++++++++++++ + glib/glib-unix.h | 70 ++++++++++++++++++ + glib/glib.symbols | 9 +++ + glib/gmain.c | 30 +++----- + glib/tests/Makefile.am | 3 + + glib/tests/unix.c | 60 +++++++++++++++ + 8 files changed, 302 insertions(+), 20 deletions(-) + +commit 27246c615df66ee869c2174aa6609601ff9d1f64 +Author: Colin Walters +AuthorDate: Wed Apr 27 13:29:07 2011 -0400 +Commit: Colin Walters +CommitDate: Wed Apr 27 13:29:07 2011 -0400 + + Update gio.symbols for previous two commits + + gio/gio.symbols | 2 ++ + 1 file changed, 2 insertions(+) + +commit 4098ddcb066f40bf9563973753bbb7867a553700 +Author: Colin Walters +AuthorDate: Wed Apr 27 11:34:23 2011 -0400 +Commit: Colin Walters +CommitDate: Wed Apr 27 11:34:43 2011 -0400 + + GDesktopAppInfo: Add g_desktop_app_info_get_generic_name + + Necessary for rebasing gnome-menus on top of GDesktopAppInfo. + + https://bugzilla.gnome.org/show_bug.cgi?id=647967 + + gio/gdesktopappinfo.c | 22 +++++++++++++++++++++- + gio/gdesktopappinfo.h | 1 + + 2 files changed, 22 insertions(+), 1 deletion(-) + +commit 276e6a7be8a2d31bd67cac7c571f65dfd8b2fd88 +Author: Colin Walters +AuthorDate: Fri Apr 15 15:52:33 2011 -0400 +Commit: Colin Walters +CommitDate: Wed Apr 27 11:24:37 2011 -0400 + + GDesktopAppInfo: Add g_desktop_app_info_get_categories() + + This is needed to rebase gnome-menus on top of GDesktopAppInfo. + + https://bugzilla.gnome.org/show_bug.cgi?id=647903 + + gio/gdesktopappinfo.c | 16 ++++++++++++++++ + gio/gdesktopappinfo.h | 2 ++ + 2 files changed, 18 insertions(+) + +commit 0dc5d456926257bd68702a4a1c989d132324d460 +Author: David Schleef +AuthorDate: Mon Feb 21 18:58:09 2011 -0800 +Commit: Matthias Clasen +CommitDate: Wed Apr 27 02:36:12 2011 -0400 + + Fix %z in g_date_time_format() + + https://bugzilla.gnome.org/show_bug.cgi?id=642935 + + glib/gdatetime.c | 5 ++--- + glib/tests/gdatetime.c | 19 +++++++++++++++++++ + 2 files changed, 21 insertions(+), 3 deletions(-) + +commit d3b80c49ea257d02838099e05e315a2407e664b9 +Author: Matthias Clasen +AuthorDate: Wed Apr 27 00:03:59 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 27 00:03:59 2011 -0400 + + GHashTable: Small optimization of remove-all + + Don't enter the loop if we are not going to notify anyway. + Pointed out in bug 646013. + + glib/ghash.c | 24 +++++++++++++++--------- + 1 file changed, 15 insertions(+), 9 deletions(-) + +commit fc7403b675d29574568a79401c864298e8730413 +Author: Matthias Clasen +AuthorDate: Wed Apr 27 00:03:28 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 27 00:03:28 2011 -0400 + + GHashTable: Add a test for remove-all functionality + + glib/tests/hash.c | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +commit 4832289bc0c2a40a9dbc7259db9be914195ea5f4 +Author: Matthias Clasen +AuthorDate: Tue Apr 26 23:57:17 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 26 23:57:17 2011 -0400 + + Whitespace cleanup + + glib/tests/hash.c | 426 + +++++++++++++++++++++++++++--------------------------- + 1 file changed, 217 insertions(+), 209 deletions(-) + +commit 70a19815326d7e76657848aeaa58ee61db34df58 +Author: Maciej Piechotka +AuthorDate: Thu Mar 31 09:00:27 2011 +0200 +Commit: Matthias Clasen +CommitDate: Tue Apr 26 23:41:51 2011 -0400 + + Allow caching have_qsort_r which re-enables cross-compiling + + https://bugzilla.gnome.org/show_bug.cgi?id=646309 + + configure.ac | 6 +++--- + docs/reference/glib/cross.sgml | 9 +++++++++ + 2 files changed, 12 insertions(+), 3 deletions(-) + +commit fdf83b5108f03aed1b1fa0f5e6b23a5a83c149cd +Author: Matthias Clasen +AuthorDate: Tue Apr 26 23:26:58 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 26 23:26:58 2011 -0400 + + Fix mailing list link in README + + Patch by Thomas Andersen, bug 647594 + + README.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6dcf505346adcfaac639f0be074b5aec7f67f3f8 +Author: Murray Cumming +AuthorDate: Mon Apr 4 10:01:51 2011 +0200 +Commit: Matthias Clasen +CommitDate: Tue Apr 26 23:21:02 2011 -0400 + + GDBusServer: Documentation: Improvements. + + Provide a fuller description and lead people away if they arrived + here just looking for a way to provide a regular D-Bus service. + + https://bugzilla.gnome.org/show_bug.cgi?id=646425 + + gio/gdbusserver.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 71c7e49058c226cd3b34e85c1b25428c1eb80b84 +Author: Christian Persch +AuthorDate: Fri Mar 4 18:21:51 2011 +0100 +Commit: Matthias Clasen +CommitDate: Tue Apr 26 22:58:02 2011 -0400 + + Use G_SIGNAL_MUST_COLLECT for VARIANT signals + + Bug #643624. + + gio/gactiongroup.c | 4 +++- + gio/gdbusproxy.c | 10 ++++------ + gio/gsimpleaction.c | 2 +- + 3 files changed, 8 insertions(+), 8 deletions(-) + +commit 122a53a9bc546e4705d20b15c703b8ba354e967b +Author: Matthias Clasen +AuthorDate: Tue Apr 26 22:51:54 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 26 22:51:54 2011 -0400 + + Fix up some harmless FALSE <> NULL confusions + + Reported in bug 643134. + + gio/gdbusconnection.c | 2 +- + gio/gdbusmessage.c | 7 +++---- + 2 files changed, 4 insertions(+), 5 deletions(-) + +commit 440bd2a97574e63c39f0c1e2dbf8a17c2635b0e9 +Author: Matthias Clasen +AuthorDate: Tue Apr 26 22:08:24 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 26 22:08:24 2011 -0400 + + GSequence: Make g_sequence_iter_move behave as documented + + As pointed out in bug 658313, moving before the begin iter is + supposed to return the begin iter, not the end iter. Also add + a test for this behaviour. + + glib/gsequence.c | 8 +++++++- + glib/tests/sequence.c | 32 ++++++++++++++++++++++++++++++++ + 2 files changed, 39 insertions(+), 1 deletion(-) + +commit 2a3f7f49b46abdaf2d82e704a3ee044ed57fb61f +Author: Colin Walters +AuthorDate: Tue Apr 26 15:08:54 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Apr 26 15:08:54 2011 -0400 + + GDesktopAppInfo: Add "filename" property for bindings + + GDesktopAppInfo violates the GObject rule that your C constructors + should just be thin wrappers around g_object_new(). While GKeyFile + isn't introspctable, this patch allows from JavaScript: + + var app = new Gio.DesktopAppInfo({ filename: '/path/to/foo.desktop' + }); + + https://bugzilla.gnome.org/show_bug.cgi?id=648425 + + gio/gdesktopappinfo.c | 150 + ++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 116 insertions(+), 34 deletions(-) + +commit 1056f2240c46081d8f55fe6f121ddee6a0370d96 +Author: Colin Walters +AuthorDate: Tue Apr 26 13:28:17 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Apr 26 13:29:05 2011 -0400 + + Squash some uninitialized variable compiler warnings + + From GCC 4.6. + + gio/glocalfileinfo.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit df45856bba14b93fedcb876fe04e0bbf0d159909 +Author: Dan Winship +AuthorDate: Wed Apr 20 11:41:47 2011 -0400 +Commit: Dan Winship +CommitDate: Tue Apr 26 11:32:11 2011 -0400 + + GSimpleAsyncResult: push thread context around callback + + When an old pre-thread-default-context API that takes an explicit + GMainContext wants to call a gio API, it must call + g_main_context_push_thread_default() before, and + g_main_context_pop_thread_default() after the gio call, so that the + gio method will return its result to the desired GMainContext. + + But this fails for methods like g_socket_client_connect_async() that + make a chain of multiple async calls, since the pushed/popped context + will only affect the initial call. + + Fix this by having GSimpleAsyncResult itself push/pop the context + around the callback invocation, so that if the callback queues another + async request, it will stay in the same context as the original one. + + https://bugzilla.gnome.org/show_bug.cgi?id=646957 + + gio/gsimpleasyncresult.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit b27f2e051ecf877d7e209b273c0281a7f7f216cb +Author: Muhammet Kara +AuthorDate: Tue Apr 26 03:04:20 2011 +0300 +Commit: Muhammet Kara +CommitDate: Tue Apr 26 03:04:20 2011 +0300 + + Updated Turkish translation + + po/tr.po | 2809 + ++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 1916 insertions(+), 893 deletions(-) + +commit 0377fe7005d95afcbefd067d566fe558030485ab +Author: David Zeuthen +AuthorDate: Mon Apr 25 10:42:50 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Apr 25 10:42:50 2011 -0400 + + gdbus-codegen: Fix typo in generated docs + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit bbe945183be11dafc037fdf5f92cea49202b6401 +Author: David Zeuthen +AuthorDate: Mon Apr 25 09:29:18 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Apr 25 09:29:18 2011 -0400 + + gdbus-codegen: Generate GDBusObject{,Proxy,Skeleton} subtypes + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 6 +- + docs/reference/gio/gio-sections.txt | 42 ++ + docs/reference/gio/gio.types | 3 + + docs/reference/gio/migrating-gdbus.xml | 5 +- + gio/gdbus-codegen/codegen.py | 582 + ++++++++++++++++++++++--- + gio/gdbus-codegen/dbustypes.py | 2 + + gio/gdbusobject.c | 57 --- + gio/gdbusobject.h | 17 - + gio/gdbusobjectmanagerclient.c | 18 +- + gio/gdbusobjectproxy.c | 75 ++-- + gio/gdbusobjectproxy.h | 6 +- + gio/gdbusobjectskeleton.c | 31 -- + gio/gdbusprivate.h | 2 - + gio/gio.symbols | 3 +- + gio/giotypes.h | 8 +- + gio/tests/gdbus-example-objectmanager-client.c | 6 +- + gio/tests/gdbus-example-objectmanager-server.c | 10 +- + gio/tests/gdbus-test-codegen.c | 165 ++----- + gio/tests/test-codegen.xml | 6 + + 19 files changed, 685 insertions(+), 359 deletions(-) + +commit a330c2f19f5086986940e57bdf1e7db651db725c +Author: Michael Terry +AuthorDate: Mon Apr 25 08:29:35 2011 -0400 +Commit: Michael Terry +CommitDate: Mon Apr 25 08:34:13 2011 -0400 + + Don't ignore SUPPORTS_STARTUP_NOTIFICATION for commandline GAppInfos + + https://bugzilla.gnome.org/show_bug.cgi?id=648416 + + gio/gdesktopappinfo.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit d8de88e541180edef5a80b8107a383c3bd8522b5 +Author: Chun-wei Fan +AuthorDate: Mon Apr 25 13:47:07 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Apr 25 13:47:07 2011 +0800 + + Add VS 2008 compilation support for some utilities + + -Added projects to compile the glib-compile-schemas and gsettings + utilities + -Update .vsprops to install these in "install" phase + -Distribute these projects also + + build/win32/vs9/Makefile.am | 2 + + build/win32/vs9/glib-compile-schemas.vcproj | 152 + ++++++++++++++++++++++++++++ + build/win32/vs9/glib.sln | 48 +++++++++ + build/win32/vs9/glib.vsprops | 5 + + build/win32/vs9/gsettings.vcproj | 152 + ++++++++++++++++++++++++++++ + 5 files changed, 359 insertions(+) + +commit dc7e9a54e5957178ecd5ec250d3fe44064fab58b +Author: Chun-wei Fan +AuthorDate: Mon Apr 25 13:32:18 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Mon Apr 25 13:32:18 2011 +0800 + + Add VS 2010 compilation support for some utilities + + -Added projects to compile the glib-compile-schemas and gsettings + utilities + -Update .vsprops to install these in "install" phase + -Distribute these projects also + + build/win32/vs10/Makefile.am | 4 + + build/win32/vs10/glib-compile-schemas.vcxproj | 174 + +++++++++++++++++++++ + .../vs10/glib-compile-schemas.vcxproj.filters | 17 ++ + build/win32/vs10/glib.props | 8 + + build/win32/vs10/glib.sln | 36 +++++ + build/win32/vs10/gsettings.vcxproj | 174 + +++++++++++++++++++++ + build/win32/vs10/gsettings.vcxproj.filters | 14 ++ + 7 files changed, 427 insertions(+) + +commit 58eb4da5c52f0847846368b5df4583080459a798 +Author: David Zeuthen +AuthorDate: Sat Apr 23 19:26:56 2011 -0400 +Commit: David Zeuthen +CommitDate: Sat Apr 23 19:26:56 2011 -0400 + + Fix build broken by previous commit + + Signed-off-by: David Zeuthen + + gio/tests/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit b5b34fa2f2711bea9b98a7b14882d8bda06c580b +Author: David Zeuthen +AuthorDate: Sat Apr 23 17:43:03 2011 -0400 +Commit: David Zeuthen +CommitDate: Sat Apr 23 17:43:03 2011 -0400 + + gdbus-codegen: Include docs for generated code in the GIO docs + + Signed-off-by: David Zeuthen + + docs/reference/gio/Makefile.am | 1 + + docs/reference/gio/gio-sections.txt | 117 + ++++++++++++++++++++++++++++++ + docs/reference/gio/gio.types | 7 ++ + docs/reference/gio/migrating-gdbus.xml | 16 ++-- + gio/Makefile.am | 28 +++++++ + gio/gdbus-example-objectmanager.xml | 65 +++++++++++++++++ + gio/tests/Makefile.am | 21 +----- + gio/tests/gdbus-example-objectmanager.xml | 65 ----------------- + 8 files changed, 232 insertions(+), 88 deletions(-) + +commit f42d97b88b092e9cb3d0c769cb9f41fe2ce43b16 +Author: Thomas Hindoe Paaboel Andersen +AuthorDate: Wed Apr 20 19:08:06 2011 +0200 +Commit: Thomas Hindoe Paaboel Andersen +CommitDate: Wed Apr 20 21:08:15 2011 +0200 + + docs: fix typos in networking classes + + gio/gsocketclient.c | 22 +++++++++++----------- + gio/gsocketconnection.c | 6 +++--- + gio/gsocketlistener.c | 12 ++++++------ + gio/gsocketservice.c | 4 ++-- + gio/gtcpconnection.c | 2 +- + gio/gthreadedsocketservice.c | 4 ++-- + gio/gunixconnection.c | 6 +++--- + 7 files changed, 28 insertions(+), 28 deletions(-) + +commit f0eeadf30672ba60e3aae8964c1c0d3ef9fef733 +Author: David Zeuthen +AuthorDate: Wed Apr 20 11:54:24 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed Apr 20 11:54:24 2011 -0400 + + GDBusObjectManagerServer: make export() return whether the object + was removed + + This is useful in conjunction with g_warn_if_fail(). + + Signed-off-by: David Zeuthen + + gio/gdbusobjectmanagerserver.c | 18 +++++++++++++----- + gio/gdbusobjectmanagerserver.h | 2 +- + 2 files changed, 14 insertions(+), 6 deletions(-) + +commit c2f670ef492eac0ed8574fc4df1e561ff0b1c89a +Author: Dan Winship +AuthorDate: Wed Apr 20 11:24:46 2011 -0400 +Commit: Dan Winship +CommitDate: Wed Apr 20 11:24:46 2011 -0400 + + GSocketService: clarify transfer semantics of incoming connections + + The @connection parameter to the ::incoming signal is (transfer none), + so you need to ref it if you want to keep it. + + https://bugzilla.gnome.org/show_bug.cgi?id=647746 + + gio/gsocketservice.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 35b6c762444a2e7dd5c2658fbc0bd79444929ecf +Author: David Zeuthen +AuthorDate: Wed Apr 20 09:00:16 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed Apr 20 09:00:16 2011 -0400 + + gdbus-codegen: Document the generated FOO_PEEK_BAR() and FOO_GET_BAR() + macros + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 30 ++++++++++++++++++++++++++++++ + 1 file changed, 30 insertions(+) + +commit bd5da131a2f38a281729729fc4849f309be31b2a +Author: David Zeuthen +AuthorDate: Tue Apr 19 14:39:47 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Apr 19 14:40:34 2011 -0400 + + gdbus-codegen: Generate gtk-doc section docs + + This is nice to have if using gtk-doc on the generated code. We could + also generate -sections.txt and .types files but we don't do that + right now... + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 35 ++++++++++++++++++++++++++++++----- + 1 file changed, 30 insertions(+), 5 deletions(-) + +commit 7a1d42088939f863fbdf4620c186a8bce8b04a33 +Author: David Zeuthen +AuthorDate: Tue Apr 19 13:42:28 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Apr 19 13:42:28 2011 -0400 + + gdbus-codegen: Set nick+blurb for properties to shut up gtk-doc + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 32 ++++++++++++++++---------------- + 1 file changed, 16 insertions(+), 16 deletions(-) + +commit 271af675eb81589adcc6a8eabcde454c4c9d12de +Author: David Zeuthen +AuthorDate: Tue Apr 19 13:39:12 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Apr 19 13:39:12 2011 -0400 + + gdbus-codegen: It's GDBusProxyTypeFunc, not GDBusProxyFunc + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 1ea370a1b1f27ed7c9c73224251c07175aa14487 +Author: David Zeuthen +AuthorDate: Tue Apr 19 13:16:10 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Apr 19 13:16:10 2011 -0400 + + gdbus-codegen: Document the generated ObjectManagerClient structs + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +commit 3238a6ffe77284ed881c552016f93a531c54bd75 +Author: David Zeuthen +AuthorDate: Tue Apr 19 13:10:25 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Apr 19 13:10:25 2011 -0400 + + gdbus-codegen: Add "Returns:" blurb for generated get_proxy_type() + + This was forgotten. + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 2 ++ + 1 file changed, 2 insertions(+) + +commit 68ba1bf074f9168a1997d674bf1d78b5e707dbf6 +Author: David Zeuthen +AuthorDate: Mon Apr 18 14:23:19 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Apr 18 14:23:19 2011 -0400 + + gdbus-codegen: Generate docs when generating C code + + This is handy for both gtk-doc and gobject-introspection. + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 659 + +++++++++++++++++++++++++---------- + gio/gdbus-codegen/codegen_docbook.py | 2 +- + gio/gdbus-codegen/codegen_main.py | 11 +- + gio/gdbus-codegen/utils.py | 15 + + 4 files changed, 504 insertions(+), 183 deletions(-) + +commit d5dc79c0b066895ad41e84db35568d5a30235186 +Author: Benjamin Otte +AuthorDate: Fri Apr 15 03:23:12 2011 +0200 +Commit: Benjamin Otte +CommitDate: Mon Apr 18 14:52:29 2011 +0200 + + API: testutils: Add g_test_fail() + + This allows tests to fail in a nonfatal way and the test runner can + continue if invoked with -k. + + https://bugzilla.gnome.org/show_bug.cgi?id=647826 + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gtestutils.c | 34 + ++++++++++++++++++++++++++++++++-- + glib/gtestutils.h | 2 ++ + 4 files changed, 36 insertions(+), 2 deletions(-) + +commit 9a121032599ec90c883937017f49af2ba1fc6071 +Author: Benjamin Otte +AuthorDate: Mon Apr 18 14:45:53 2011 +0200 +Commit: Benjamin Otte +CommitDate: Mon Apr 18 14:49:51 2011 +0200 + + testutils: Sprinkle code with newlines + + Readable code ftw! + + glib/gtestutils.c | 31 ++++++++++++++++++++++++++++++- + 1 file changed, 30 insertions(+), 1 deletion(-) + +commit d259d50afd7b1f0f063e9ad95f5784540bd0378c +Author: Benjamin Otte +AuthorDate: Mon Apr 18 14:41:51 2011 +0200 +Commit: Benjamin Otte +CommitDate: Mon Apr 18 14:49:51 2011 +0200 + + testutils: Return number of bad tests from g_test_run_suite_internal() + + In particular do not return a boolean disguised as an int. + + glib/gtestutils.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 62e68ceec8cfad06fffb00fd23ccaad3fc0f476e +Author: Benjamin Otte +AuthorDate: Mon Apr 18 14:37:24 2011 +0200 +Commit: Benjamin Otte +CommitDate: Mon Apr 18 14:49:51 2011 +0200 + + testutils: Remove unused variable + + glib/gtestutils.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 19fdb18ef8794bde6b29e400a6d868a7974b73e2 +Author: Benjamin Otte +AuthorDate: Mon Apr 18 14:35:58 2011 +0200 +Commit: Benjamin Otte +CommitDate: Mon Apr 18 14:49:51 2011 +0200 + + testutils: Return a boolean from g_test_case_run() + + Return value is intened to be TRUE for success, FALSE for failure. + Currently we return TRUE all the time. + Previously the test returned 0 all the time. + + glib/gtestutils.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit affc6f747587f5b86d5ec34cf22e7f666d7d09a9 +Author: David Zeuthen +AuthorDate: Sat Apr 16 15:24:42 2011 -0400 +Commit: David Zeuthen +CommitDate: Sat Apr 16 15:24:42 2011 -0400 + + GDBusObjectManagerClient: Add a GDestroyNotify to the user_data + + For bindings, obviously. + + Signed-off-by: David Zeuthen + + gio/gdbusobjectmanagerclient.c | 40 + +++++++++++++++++++++++++++++++++++++++- + gio/gdbusobjectmanagerclient.h | 4 ++++ + gio/tests/gdbus-test-codegen.c | 18 ++++++++++-------- + 3 files changed, 53 insertions(+), 9 deletions(-) + +commit ea742e88e30fc398b8f86cc017161e6dcbb61e08 +Author: David Zeuthen +AuthorDate: Sat Apr 16 14:42:21 2011 -0400 +Commit: David Zeuthen +CommitDate: Sat Apr 16 14:42:21 2011 -0400 + + GDBus: Add some gobject-introspection annotations for new code + + Signed-off-by: David Zeuthen + + gio/gdbusinterfaceskeleton.c | 2 +- + gio/gdbusobject.c | 14 +++++++------- + gio/gdbusobjectmanager.c | 6 ++++-- + gio/gdbusobjectmanagerclient.c | 24 ++++++++++++++---------- + gio/gdbusobjectmanagerserver.c | 4 ++-- + gio/gdbusobjectproxy.c | 3 ++- + 6 files changed, 30 insertions(+), 23 deletions(-) + +commit 3cef28a2f0d45c4255263dae6a1dc3987bbc3f0c +Author: David Zeuthen +AuthorDate: Sat Apr 16 14:07:23 2011 -0400 +Commit: David Zeuthen +CommitDate: Sat Apr 16 14:08:47 2011 -0400 + + gdbus-codegen: Make generated code introspectable + + Specific changes + + - Use get_type(), not get_gtype() for the GType function + - so we need to use the lower-case name type_ for properties + called type + - Don't return a function pointer, just make the function returned + available instead + - Add (type) annotations in constructors so g-ir-scanner detects + them as such + - Add (transfer none) annotations to property getters + - Add (out) annotations to D-Bus method call functions + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 227 + ++++++++++++++++++++++++++++++++++++----- + gio/gdbus-codegen/dbustypes.py | 2 + + gio/tests/gdbus-test-codegen.c | 2 +- + 3 files changed, 202 insertions(+), 29 deletions(-) + +commit 2e358e12f95601e7d00c7a4b0c272c0cd00c2e7d +Author: David Zeuthen +AuthorDate: Fri Apr 15 16:36:54 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 15 16:36:54 2011 -0400 + + gdbus-codegen: Nuke debug spew + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen_main.py | 1 - + 1 file changed, 1 deletion(-) + +commit a3fa748e54ec077a764a3045c92df59d00ba0edb +Author: David Zeuthen +AuthorDate: Fri Apr 15 16:11:43 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 15 16:11:43 2011 -0400 + + gdbus-codegen: Never emit empty PropertiesChanged signals + + It's not that it's actually a bug to do so per se, strictly speaking, + it's just pointless and wasteful. + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 28 +++++++++++++++++++--------- + 1 file changed, 19 insertions(+), 9 deletions(-) + +commit 6bccc46d152079d69cf8aebef08433b1ec6055c7 +Author: David Zeuthen +AuthorDate: Fri Apr 15 15:53:28 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 15 15:53:28 2011 -0400 + + gdbus-codegen: Don't send out PropertiesChanged if value ends up + not changing + + A fairly typical pattern is to have code that does + + foo_set_bar (object, ""); + if (some_condition) + { + foo_set_bar (object, "yes"); + } + + where some_condition is often true every time @object is updated. + + With this code, bar is essentially always "yes" but because of how + gdbus-codegen works, useless PropertiesChanged events got scheduled + and sent out. With this patch, we avoid that by always keeping the + original value around and comparing it only when we deem it's time to + send out the ::PropertiesChanged signal (typically in an idle but can + be forced by the user via flush()). + + Also add a test case for this. + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 49 +++++++++++++++++++++++------------ + gio/tests/gdbus-test-codegen.c | 59 + +++++++++++++++++++++++++++++++++++++++++- + gio/tests/test-codegen.xml | 2 ++ + 3 files changed, 93 insertions(+), 17 deletions(-) + +commit 01602e16955fb7ca60799d4e142c7392ad91237d +Author: Colin Walters +AuthorDate: Fri Apr 15 15:51:25 2011 -0400 +Commit: Colin Walters +CommitDate: Fri Apr 15 15:51:25 2011 -0400 + + Fix some compiler warnings from gcc 4.6 + + gio/gdbusauthmechanismsha1.c | 1 + + gio/tests/gdbus-serialization.c | 1 - + gio/tests/proxy.c | 2 +- + 3 files changed, 2 insertions(+), 2 deletions(-) + +commit 78203f369977b797116c9fc3b2c72a56c55db656 +Author: Colin Walters +AuthorDate: Thu Apr 14 16:03:18 2011 -0400 +Commit: Colin Walters +CommitDate: Fri Apr 15 14:58:30 2011 -0400 + + gapplication: Fix typo in property + + gio/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cade3cb1dab58ee0ab291efbab03e5b047b2a5be +Author: David Zeuthen +AuthorDate: Fri Apr 15 13:51:10 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 15 13:51:10 2011 -0400 + + gdbus-codegen: Fix obvious bug in _g_variant_equal0() implementation + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit e19734d6c3f24076d25ac7f290b97df76cad5056 +Author: David Zeuthen +AuthorDate: Fri Apr 15 12:56:07 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 15 12:56:07 2011 -0400 + + gdbus-codegen: Add support for the org.freedesktop.DBus.Deprecated + annotation + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 124 + ++++++++++++++++++++++------------- + gio/gdbus-codegen/codegen.py | 28 ++++++++ + gio/gdbus-codegen/codegen_docbook.py | 8 +++ + gio/gdbus-codegen/dbustypes.py | 16 +++++ + gio/tests/test-codegen.xml | 22 +++++++ + 5 files changed, 151 insertions(+), 47 deletions(-) + +commit 0f9b83dd36a252552e4644257c0fa8272f6ba847 +Author: Ryan Lortie +AuthorDate: Fri Apr 15 09:30:24 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 15 09:30:24 2011 -0400 + + GApplication: #include "gsettings.h" + + Since we call g_settings_sync() from there now... + + gio/gapplication.c | 1 + + 1 file changed, 1 insertion(+) + +commit 631d0c3534661e549f7df18fbb9832bdf19c5eaf +Merge: 2553511 a5dd6fc +Author: Ryan Lortie +AuthorDate: Fri Apr 15 09:29:47 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 15 09:29:47 2011 -0400 + + Merge remote-tracking branch 'gvdb/master' + +commit a5dd6fcc4f46a322cc547a5fcfa1b52cbc5ec6d6 +Author: Ryan Lortie +AuthorDate: Fri Apr 15 09:27:38 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 15 09:27:38 2011 -0400 + + builder: do not include on win32 + + Spotted by Kean Johnston . + + https://mail.gnome.org/archives/gtk-devel-list/2011-April/msg00010.html + + gvdb-builder.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 98e6d4b0a934b9fd67a38121958fccec879bf1ac +Author: David Zeuthen +AuthorDate: Fri Apr 15 08:48:21 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 15 08:48:21 2011 -0400 + + gdbus-codegen: Include a blurb about the license of the generated code + + More precisely, include this line + + The license of this code is the same as for the source it was + derived from. + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 5f31671da05c000224a227ce3548074dc2942086 +Author: David Zeuthen +AuthorDate: Fri Apr 15 08:44:05 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 15 08:44:05 2011 -0400 + + gdbus-codegen: Use the right program name in introductory comment + (again) + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c76a1f99054134fafec1d47d523c4aca219ab83c +Author: David Zeuthen +AuthorDate: Fri Apr 15 08:40:52 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 15 08:40:52 2011 -0400 + + gdbus-codegen: Use the right program name in introductory comment + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/codegen.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9e9535b45c1a09a4c86e03d1c0250d7d8703dc08 +Author: David Zeuthen +AuthorDate: Fri Apr 15 08:33:30 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 15 08:33:30 2011 -0400 + + gdbus-codegen: Add copyright / license headers + + Signed-off-by: David Zeuthen + + gio/gdbus-codegen/__init__.py | 1 - + gio/gdbus-codegen/codegen.py | 21 +++++++++++++++++++++ + gio/gdbus-codegen/codegen_docbook.py | 21 +++++++++++++++++++++ + gio/gdbus-codegen/codegen_main.py | 21 +++++++++++++++++++++ + gio/gdbus-codegen/config.py.in | 21 +++++++++++++++++++++ + gio/gdbus-codegen/dbustypes.py | 21 +++++++++++++++++++++ + gio/gdbus-codegen/gdbus-codegen.in | 22 ++++++++++++++++++++++ + gio/gdbus-codegen/parser.py | 21 +++++++++++++++++++++ + gio/gdbus-codegen/utils.py | 21 +++++++++++++++++++++ + 9 files changed, 169 insertions(+), 1 deletion(-) + +commit febfc45fbeaf9f1df3de2310e32c6bce3ea9bbf3 +Author: David Zeuthen +AuthorDate: Fri Apr 15 08:24:40 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 15 08:24:40 2011 -0400 + + GDBus: Support Ugly_Case and use org.gtk.GDBus.C.Name since it's + C-only + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 60 +++++++++++++++++-------- + gio/gdbus-codegen/dbustypes.py | 86 + ++++++++++++++++++++++-------------- + gio/gdbus-codegen/utils.py | 5 +++ + gio/tests/gdbus-test-codegen.c | 6 +++ + gio/tests/test-codegen.xml | 24 ++++++++-- + 5 files changed, 125 insertions(+), 56 deletions(-) + +commit 2553511f4eaf4af8e48f21f4a3a0ac7c58defc8a +Author: Michael Kuhn +AuthorDate: Wed Dec 22 10:11:11 2010 +0100 +Commit: David Zeuthen +CommitDate: Fri Apr 15 06:05:24 2011 -0400 + + Bug 637561 - Crash when using G_DBUS_SERVER_FLAGS_RUN_IN_THREAD + + https://bugzilla.gnome.org/show_bug.cgi?id=637561 + + Signed-off-by: David Zeuthen + + gio/gdbusserver.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit c2387ddff164becd90654b459d8c6031c3656577 +Author: Simon McVittie +AuthorDate: Thu Mar 31 13:58:55 2011 +0100 +Commit: David Zeuthen +CommitDate: Fri Apr 15 06:00:16 2011 -0400 + + /gdbus/message-serialize-invalid test: be compatible with D-Bus 1.4.8 + + Older versions of libdbus would let you construct an invalid + DBusMessage, but that's a bug, which will be fixed in 1.4.8/1.5.0. + Instead, construct a valid message of the same length, then replace + substrings in the serialized blob with their invalid counterparts. + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=646326 + + Signed-off-by: David Zeuthen + + gio/tests/gdbus-serialization.c | 43 + ++++++++++++++++++++++++++++++++--------- + 1 file changed, 34 insertions(+), 9 deletions(-) + +commit 8b50e2f5475f9817baa358e2f638d0853e50ffb1 +Author: Kean Johnston +AuthorDate: Fri Apr 15 10:15:04 2011 +0200 +Commit: Alexander Larsson +CommitDate: Fri Apr 15 10:15:04 2011 +0200 + + GLocalFile: Use _fstati64 rather than stat on Win32 + + We want this to get 64bit timestamps and file lenghts. + + gio/glocalfile.c | 12 +++++++++--- + gio/glocalfileoutputstream.c | 12 +++++++++--- + 2 files changed, 18 insertions(+), 6 deletions(-) + +commit a3722d0408fd3746a30180e0c37f1713673a1fcc +Author: Matthias Clasen +AuthorDate: Thu Apr 14 20:41:54 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 14 20:41:54 2011 -0400 + + Slight docs rewording + + Proposed by Thomas Andersen, + https://bugzilla.gnome.org/show_bug.cgi?id=647700 + + gio/gsettings.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 4da18247592f1159ee03e414990d2a744aa0a8c7 +Author: David Zeuthen +AuthorDate: Thu Apr 14 11:27:57 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu Apr 14 12:46:54 2011 -0400 + + GResolver: Don't return duplicate addresses + + ... this was causing a GDBus test-case to fail so now that it is + fixed, also reenable the test case. + + https://bugzilla.gnome.org/show_bug.cgi?id=631379 + + Signed-off-by: David Zeuthen + + gio/gresolver.c | 49 + +++++++++++++++++++++++++++++++++++++++++++++---- + gio/tests/gdbus-peer.c | 6 ------ + 2 files changed, 45 insertions(+), 10 deletions(-) + +commit 33515d4eb4175fac70ab42151020336c34bc2083 +Author: David Zeuthen +AuthorDate: Thu Apr 14 11:27:57 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu Apr 14 12:46:46 2011 -0400 + + GInetAddress: add equal() method + + This is needed in the fix for + + https://bugzilla.gnome.org/show_bug.cgi?id=631379 + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 1 + + gio/ginetaddress.c | 29 +++++++++++++++++++++++++++++ + gio/ginetaddress.h | 3 +++ + gio/gio.symbols | 1 + + 4 files changed, 34 insertions(+) + +commit 8b03077a44092ce2b510ef3246da063cacc8d951 +Author: Ryan Lortie +AuthorDate: Thu Apr 14 09:54:17 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 14 09:56:00 2011 -0400 + + GTimeZone: fix non-threadsafe refcounting + + In the previous code, if the timezone was pulled out of the cache + again + just as the last reference was being dropped, the cache code will + increase its refcount and return it while the unref code was + freeing it. + + Protect against that. + + Closes #646435. + + glib/gtimezone.c | 25 +++++++++++++++++++++---- + 1 file changed, 21 insertions(+), 4 deletions(-) + +commit e38ef14e8b8d2fed909d92514b665bb8c3c99e6c +Author: David Zeuthen +AuthorDate: Wed Apr 13 18:40:47 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed Apr 13 18:40:47 2011 -0400 + + GDBus: If an authentication method fail, don't give up, just try + the next one + + This problem was reported in bug 647602. + + https://bugzilla.gnome.org/show_bug.cgi?id=647602 + + Signed-off-by: David Zeuthen + + gio/gdbusauth.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +commit 3b997d92c13217db78fcc774bff6d6c0fcd919e6 +Author: David Zeuthen +AuthorDate: Wed Apr 13 18:21:16 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed Apr 13 18:21:16 2011 -0400 + + GDBus: Add test case for the ANONYMOUS authentication method + + Signed-off-by: David Zeuthen + + gio/tests/gdbus-peer.c | 92 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 92 insertions(+) + +commit befb60d8268ad2296fe94cebbeadf749314c7a70 +Author: David Zeuthen +AuthorDate: Wed Apr 13 18:19:57 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed Apr 13 18:20:34 2011 -0400 + + GDBus: Nuke debug spew from the ANONYMOUS authentication method + + Signed-off-by: David Zeuthen + + gio/gdbusauthmechanismanon.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 25c57d31c5f8bb36f17328bbeacce4796490b241 +Author: David Zeuthen +AuthorDate: Wed Apr 13 17:49:19 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed Apr 13 17:49:19 2011 -0400 + + GDBus: Allow tcp: and nonce-tcp: addresses without any arguments + + This was broken in this commit + + http://git.gnome.org/browse/glib/commit/?id=0729260141bb585943ad1c6efa8ab7ee9058b0aa + + The test case for catching this is unfortunately commented out (so it + didn't catch it) due to this bug + + https://bugzilla.gnome.org/show_bug.cgi?id=631379 + + still being unresolved. + + Signed-off-by: David Zeuthen + + gio/gdbusaddress.c | 29 ++++++----------------------- + 1 file changed, 6 insertions(+), 23 deletions(-) + +commit 8826ad046d3dfa1a0fbaca1cab1086d12f31d0a5 +Author: David Zeuthen +AuthorDate: Wed Apr 13 16:39:50 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed Apr 13 16:39:50 2011 -0400 + + GDBusInterfaceStub: Clarify ::g-authorize-method docs + + As suggested by Simon in + https://bugzilla.gnome.org/show_bug.cgi?id=647577#c11 + + Signed-off-by: David Zeuthen + + gio/gdbusinterfaceskeleton.c | 2 +- + gio/gdbusobjectskeleton.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 6ccca55752c41001f3af3430d3d93f587fd42383 +Author: David Zeuthen +AuthorDate: Wed Apr 13 16:33:51 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed Apr 13 16:33:51 2011 -0400 + + GDBus: Use Skeleton instead of Stub + + After some brainstorming with Simon, see + + https://bugzilla.gnome.org/show_bug.cgi?id=647577#c8 + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 18 +- + docs/reference/gio/gio-docs.xml | 4 +- + docs/reference/gio/gio-sections.txt | 90 ++-- + docs/reference/gio/gio.types | 4 +- + gio/Makefile.am | 8 +- + gio/gdbus-codegen/codegen.py | 224 ++++---- + gio/gdbusinterface.c | 4 +- + gio/gdbusinterfaceskeleton.c | 717 + +++++++++++++++++++++++++ + gio/gdbusinterfaceskeleton.h | 109 ++++ + gio/gdbusinterfacestub.c | 717 + ------------------------- + gio/gdbusinterfacestub.h | 109 ---- + gio/gdbusobject.c | 4 +- + gio/gdbusobjectmanagerserver.c | 66 +-- + gio/gdbusobjectmanagerserver.h | 4 +- + gio/gdbusobjectskeleton.c | 491 +++++++++++++++++ + gio/gdbusobjectskeleton.h | 91 ++++ + gio/gdbusobjectstub.c | 491 ----------------- + gio/gdbusobjectstub.h | 91 ---- + gio/gdbusprivate.h | 2 +- + gio/gio.h | 4 +- + gio/gio.symbols | 46 +- + gio/gioenums.h | 14 +- + gio/giotypes.h | 4 +- + gio/tests/gdbus-example-objectmanager-server.c | 12 +- + gio/tests/gdbus-test-codegen.c | 154 +++--- + 25 files changed, 1739 insertions(+), 1739 deletions(-) + +commit 68b16deb1f4ec739f80291156f2e0e2eed87d225 +Author: Colin Walters +AuthorDate: Wed Apr 13 14:03:58 2011 -0400 +Commit: Colin Walters +CommitDate: Wed Apr 13 15:01:28 2011 -0400 + + gdbusconnection: Avoid tripping assertion if we fail to authenticate + twice + + If g_bus_get_sync() fails in authentication (because e.g. the process + uid, doesn't match the expected in EXTERNAL), a secondary call to + g_bus_get_sync() would notice we aren't initialized, and try + to initialize. + + The assertion here is just wrong; we now explicitly and clearly handle + both cases where we already have an error, or we already succeeded. + + https://bugzilla.gnome.org/show_bug.cgi?id=635694 + + gio/gdbusconnection.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +commit 4d15ba90c04e474f996777c9931d50eae712816e +Author: Ryan Lortie +AuthorDate: Wed Apr 13 11:46:33 2011 -0400 +Commit: Ryan Lortie +CommitDate: Wed Apr 13 11:46:33 2011 -0400 + + G_VARIANT_TYPE_VARDICT: Add 'Since:' tag + + glib/gvarianttype.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit 683943b40e20d7cd4eda688d4410012b62b45a20 +Author: David Zeuthen +AuthorDate: Wed Apr 13 11:35:06 2011 -0400 +Commit: David Zeuthen +CommitDate: Wed Apr 13 11:35:06 2011 -0400 + + GDBusInterfaceStub: Use G_VARIANT_TYPE_VARDICT when referring to + type a{sv} + + Signed-off-by: David Zeuthen + + gio/gdbusinterfacestub.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +commit 76492d7741c7c6f48d2d7301c872020e42b025ff +Author: Matthias Clasen +AuthorDate: Wed Apr 13 08:48:10 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 13 08:48:10 2011 -0400 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0e55346420e74a562b42d14a136c07a4bbd9d955 +Author: Matthias Clasen +AuthorDate: Wed Apr 13 08:19:35 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 13 08:19:35 2011 -0400 + + Skip the writable test if the file is not writable + + Since make distcheck operates on a readonly source tree. + + glib/tests/mappedfile.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 67b8c7ea8adeef5e2db5e2ed65a15db1e6c91f74 +Author: Matthias Clasen +AuthorDate: Wed Apr 13 01:31:19 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 13 01:31:19 2011 -0400 + + Fix non-srcdir builds + + glib/tests/mappedfile.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 5f90baafb5210a551289900a160928dfd698037e +Author: Matthias Clasen +AuthorDate: Wed Apr 13 00:42:51 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 13 00:42:51 2011 -0400 + + More updates + + NEWS | 2 ++ + 1 file changed, 2 insertions(+) + +commit c1a7599568ba953db6d5f6c840a9c4fb121a9bac +Author: Matthias Clasen +AuthorDate: Wed Apr 13 00:39:01 2011 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 13 00:39:01 2011 -0400 + + Fix a typo in the GSettings docs + + Pointed out by Thomas Andersen + https://bugzilla.gnome.org/show_bug.cgi?id=647600 + + gio/gsettings.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e356c7ca0bcb461491a90f6cfb2907bb4ffa10e8 +Author: David Zeuthen +AuthorDate: Tue Apr 12 20:40:25 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Apr 12 20:40:25 2011 -0400 + + gdbus-codegen: Shorten man page title + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 29bf848d92b3f4a64d32b104638e87bffcfdb5b3 +Author: David Zeuthen +AuthorDate: Tue Apr 12 20:28:06 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Apr 12 20:28:06 2011 -0400 + + gdbus-codegen: Use CDATA to make gtk-doc avoid expanding certain + strings + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 6a4ab7c5d3d98318c38816a64b3c444a2c99ea9b +Author: David Zeuthen +AuthorDate: Tue Apr 12 20:15:48 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Apr 12 20:15:48 2011 -0400 + + GDBus: Minor renames and doc fixes + + As requested by Simon in + https://bugzilla.gnome.org/show_bug.cgi?id=647577 + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 2 +- + gio/gdbusinterfacestub.c | 8 ++++++-- + gio/gdbusobjectmanagerserver.c | 6 +++--- + gio/gdbusobjectmanagerserver.h | 2 +- + gio/gio.symbols | 2 +- + 5 files changed, 12 insertions(+), 8 deletions(-) + +commit 6bf978f35e9688e48942bbb9b4f28187fae29f73 +Author: David Zeuthen +AuthorDate: Tue Apr 12 17:12:26 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Apr 12 17:12:26 2011 -0400 + + gdbus-codegen: Mention that @since can be used + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +commit 34a28f2f062281d9fb75fcd02c4df238def6396e +Author: David Zeuthen +AuthorDate: Tue Apr 12 16:17:28 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Apr 12 16:17:28 2011 -0400 + + Add support for org.gtk.GDBus.Since annotation + + And use this for a) documentation purposes; and b) to preserve C ABI + when an interface is extended. See + + https://bugzilla.gnome.org/show_bug.cgi?id=647577#c5 + + for more details. Also add test cases for this. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 22 ++++++++++++ + gio/gdbus-codegen/codegen.py | 60 + ++++++++++++++++++++++++------- + gio/gdbus-codegen/codegen_docbook.py | 8 +++++ + gio/gdbus-codegen/dbustypes.py | 15 ++++++++ + gio/gdbus-codegen/parser.py | 8 +++++ + gio/gdbus-codegen/utils.py | 7 ++++ + gio/tests/gdbus-example-objectmanager.xml | 4 +++ + gio/tests/gdbus-test-codegen.c | 22 ++++++++++++ + gio/tests/test-codegen.xml | 60 + +++++++++++++++++++++++++++++++ + 9 files changed, 193 insertions(+), 13 deletions(-) + +commit bf087aabbf3811ccb0abce532122c190673356e5 +Author: Colin Walters +AuthorDate: Tue Apr 12 12:56:33 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Apr 12 12:56:33 2011 -0400 + + gsettings-tool fixes: Add missing _apply(), add unset-recursively + to man page + + docs/reference/gio/gsettings.xml | 12 ++++++++++++ + gio/gsettings-tool.c | 1 + + 2 files changed, 13 insertions(+) + +commit 3fd9f2e8f98d59c614a04be8b4a052027e025a64 +Author: Colin Walters +AuthorDate: Tue Apr 12 11:00:54 2011 -0400 +Commit: Colin Walters +CommitDate: Tue Apr 12 12:13:43 2011 -0400 + + gsettings: Implement reset-recursively + + Motivation was the ability to: + $ gsettings reset-recursively org.gnome.gnome-panel + + https://bugzilla.gnome.org/show_bug.cgi?id=647579 + + gio/gsettings-tool.c | 57 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 57 insertions(+) + +commit 76d365372197e9ce9729402ae2fa4fac490f8dd0 +Author: David Zeuthen +AuthorDate: Tue Apr 12 11:50:34 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Apr 12 11:50:34 2011 -0400 + + gdbus-codegen: Add --c-generate-object-manager option + doc + improvements + + Signed-off-by: David Zeuthen + + docs/reference/gio/Makefile.am | 4 +- + docs/reference/gio/gdbus-codegen.xml | 159 + +++++++++++++++++++----------- + docs/reference/gio/gio-docs.xml | 2 +- + docs/reference/gio/migrating-gdbus.xml | 7 +- + gio/gdbus-codegen/codegen.py | 153 + ++++++++++++++-------------- + gio/gdbus-codegen/codegen_main.py | 9 +- + gio/tests/Makefile.am | 6 +- + gio/tests/gdbus-example-objectmanager.xml | 2 +- + 8 files changed, 200 insertions(+), 142 deletions(-) + +commit 3f7912f142088cd27f53ba74fb69037c45223678 +Author: Matthias Clasen +AuthorDate: Tue Apr 12 10:02:31 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 12 10:02:31 2011 -0400 + + GLocalDirectoryMonitor: Improve struct packing + + gio/glocaldirectorymonitor.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a2094d5e564433ed3a4398afeacce80519bbda44 +Author: Matthias Clasen +AuthorDate: Tue Apr 12 10:02:12 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 12 10:02:12 2011 -0400 + + GIOSchedulerJob: Improve struct packing + + gio/gioscheduler.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit bfe7548fe14ec3b49c96264c1e6d1650357fa41a +Author: Matthias Clasen +AuthorDate: Tue Apr 12 10:01:37 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 12 10:01:37 2011 -0400 + + GFilenameCompleter: Improve struct packing + + gio/gfilenamecompleter.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3e4f3673d8a54b3e1924d00a4a3a6048426f0b10 +Author: Matthias Clasen +AuthorDate: Tue Apr 12 10:01:05 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 12 10:01:05 2011 -0400 + + GFileAttributeMatcher: Improve struct packing + + gio/gfileinfo.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 8903ec808bb02847d80a26c6224b319b2b2be059 +Author: Matthias Clasen +AuthorDate: Tue Apr 12 10:00:37 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 12 10:00:37 2011 -0400 + + GDBusProxy: Improve struct packing + + gio/gdbusproxy.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 53e3e111fd5a891e7b3668e1ca7eab4b987c855e +Author: Matthias Clasen +AuthorDate: Tue Apr 12 10:00:03 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 12 10:00:03 2011 -0400 + + GDBusWorker: Improve struct packing + + gio/gdbusprivate.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 9890c03579754ecf145575f6f77af6e34aa9b05c +Author: Matthias Clasen +AuthorDate: Tue Apr 12 09:58:13 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 12 09:58:13 2011 -0400 + + GMarkupParseContext: Improve struct packing + + glib/gmarkup.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit f8b154f53a30930b6e3213c8b85bbb3dea4f68d7 +Author: Matthias Clasen +AuthorDate: Tue Apr 12 09:55:59 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 12 09:55:59 2011 -0400 + + GMatchInfo: improve struct packing + + glib/gregex.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8276d0e557259154beaf3f2997276ba32ee9c1ee +Author: David Zeuthen +AuthorDate: Tue Apr 12 09:28:09 2011 -0400 +Commit: David Zeuthen +CommitDate: Tue Apr 12 09:28:09 2011 -0400 + + Spiff up the "Migrating to GDBus" docs a bit + + Signed-off-by: David Zeuthen + + docs/reference/gio/migrating-gdbus.xml | 17 ++++--- + gio/tests/Makefile.am | 2 +- + gio/tests/gdbus-example-objectmanager-client.c | 65 + ++++++++++++++++++++------ + gio/tests/gdbus-example-objectmanager-server.c | 34 ++++++++++---- + gio/tests/gdbus-example-objectmanager.xml | 18 ++++++- + 5 files changed, 106 insertions(+), 30 deletions(-) + +commit fc59b9d8436f295713d68e3f2a5af86b93013180 +Author: David Zeuthen +AuthorDate: Mon Apr 11 18:32:11 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Apr 11 18:32:11 2011 -0400 + + Update "Migrating to GDBus" chapter to take gdbus-codegen(1) + into account + + Signed-off-by: David Zeuthen + + docs/reference/gio/gdbus-codegen.xml | 2 +- + docs/reference/gio/migrating-gdbus.xml | 223 + ++++++++++++------------------ + gio/tests/gdbus-example-objectmanager.xml | 26 +++- + 3 files changed, 105 insertions(+), 146 deletions(-) + +commit ff6ecc61c992e27cc018b0716a3910efb4c0656a +Author: Matthias Clasen +AuthorDate: Mon Apr 11 13:26:40 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 11 17:08:04 2011 -0400 + + Add forgotten apis + + g_desktop_app_info_launch_uris_as_manager was not listed in + the docs. + + NEWS | 30 +++++++++++++++++++++++++++++- + 1 file changed, 29 insertions(+), 1 deletion(-) + +commit e5525f1010825bc5dfbed39f593999d6a115a972 +Author: David Zeuthen +AuthorDate: Mon Apr 11 16:35:14 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Apr 11 16:35:14 2011 -0400 + + GDBus: Add ObjectManager example + + Signed-off-by: David Zeuthen + + gio/tests/Makefile.am | 29 +++++ + gio/tests/gdbus-example-objectmanager-client.c | 135 + +++++++++++++++++++++++ + gio/tests/gdbus-example-objectmanager-server.c | 141 + +++++++++++++++++++++++++ + gio/tests/gdbus-example-objectmanager.xml | 33 ++++++ + 4 files changed, 338 insertions(+) + +commit 24533f261900b3234abc4182ffea6bbd1cb1a29e +Author: David Zeuthen +AuthorDate: Mon Apr 11 15:34:38 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Apr 11 15:34:38 2011 -0400 + + Also use interface_ instead of interface in C files + + This is because gtk-doc scans the function in the H file but reads the + docs from the C file. Annoying. + + Signed-off-by: David Zeuthen + + gio/gdbusinterface.c | 34 +++++----- + gio/gdbusinterfacestub.c | 170 + +++++++++++++++++++++++------------------------ + gio/gdbusobjectstub.c | 44 ++++++------ + 3 files changed, 124 insertions(+), 124 deletions(-) + +commit 6cc4dc5b9bb88aff4ec04f115facecef56b7374c +Author: David Zeuthen +AuthorDate: Mon Apr 11 15:22:37 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Apr 11 15:25:37 2011 -0400 + + GDBusInterfaceStub: Rename stub parameter to interface + + Signed-off-by: David Zeuthen + + gio/gdbusinterfacestub.c | 256 + +++++++++++++++++++++++------------------------ + gio/gdbusinterfacestub.h | 30 +++--- + 2 files changed, 143 insertions(+), 143 deletions(-) + +commit 48090287367bf4c57f375faaca8d65bd9cce0d11 +Author: David Zeuthen +AuthorDate: Mon Apr 11 15:13:25 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Apr 11 15:24:52 2011 -0400 + + GDBus: Avoid using the word interface in public C headers + + Same deal as with e.g. index since some libraries may do crazy stuff + such as "#define interface xyz". + + Signed-off-by: David Zeuthen + + gio/gdbusinterface.h | 12 ++++++------ + gio/gdbusobject.h | 4 ++-- + gio/gdbusobjectmanager.h | 4 ++-- + gio/gdbusobjectstub.h | 4 ++-- + 4 files changed, 12 insertions(+), 12 deletions(-) + +commit 5ec05ebfd48ab6bac396f8cd30b47d61b93c7884 +Author: Daniel Mustieles +AuthorDate: Mon Apr 11 21:06:01 2011 +0200 +Commit: Daniel Mustieles +CommitDate: Mon Apr 11 21:06:01 2011 +0200 + + Updated Spanish translation + + po/es.po | 530 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 272 insertions(+), 258 deletions(-) + +commit 4dffec890631acc926b6e66da4d318e3587f7d38 +Author: David Zeuthen +AuthorDate: Mon Apr 11 14:59:19 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Apr 11 14:59:19 2011 -0400 + + Dist test-codegen.xml + + Signed-off-by: David Zeuthen + + gio/tests/Makefile.am | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit eaef2a8f3f54354af50e0089a578f83656756d8d +Author: Matthias Clasen +AuthorDate: Mon Apr 11 13:26:40 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 11 13:26:40 2011 -0400 + + Add forgotten apis + + g_desktop_app_info_launch_uris_as_manager was not listed in + the docs. + + docs/reference/gio/gio-sections.txt | 2 ++ + 1 file changed, 2 insertions(+) + +commit c36aa59bf05b972ae1c1e0b9e273064914ca3447 +Author: Matthias Clasen +AuthorDate: Mon Apr 11 13:21:12 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 11 13:21:12 2011 -0400 + + Fix duplicate private subsection + + gtk-doc doesn't understand duplicate Private subsections in + the obvious way, it seems. + + docs/reference/glib/glib-sections.txt | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +commit 1a6dd8c7fabdb79bcce7dc04f0e6044a343169f4 +Author: Matthias Clasen +AuthorDate: Mon Apr 11 13:20:55 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 11 13:20:55 2011 -0400 + + Fix a few parameter mismatches in the docs + + glib/gtimezone.c | 20 ++++++++++---------- + glib/gtimezone.h | 4 ++-- + 2 files changed, 12 insertions(+), 12 deletions(-) + +commit 3c94299b0ff1c8e1b0b06bedd73b1b725e631d8a +Author: Matthias Clasen +AuthorDate: Mon Apr 11 12:57:19 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 11 12:57:19 2011 -0400 + + Don't include unistd.h unconditionally + + It doesn't exist on all platforms. Partial fix for bug 647341. + + gio/glib-compile-schemas.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 9d048615da794e265256ad29c27daf147675f239 +Author: Matthias Clasen +AuthorDate: Mon Apr 11 12:53:25 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 11 12:53:25 2011 -0400 + + Add 2.30 index to GLib docs + + docs/reference/glib/glib-docs.sgml | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 8f2a6d3e5a6208953c4e1691826597b2cd6ea2b2 +Author: Matthias Clasen +AuthorDate: Mon Apr 11 12:26:15 2011 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 11 12:30:38 2011 -0400 + + Updates + + NEWS | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 53 insertions(+), 5 deletions(-) + +commit 9c1941c07fba7626ba1a40a7009615c88a645539 +Author: David Zeuthen +AuthorDate: Mon Apr 11 10:54:52 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Apr 11 10:54:52 2011 -0400 + + GDBus: Add test-suite for new ObjectManager and gdbus-codegen(1) code + + Signed-off-by: David Zeuthen + + gio/tests/Makefile.am | 24 + + gio/tests/gdbus-test-codegen.c | 2178 + ++++++++++++++++++++++++++++++++++++++++ + gio/tests/test-codegen.xml | 341 +++++++ + 3 files changed, 2543 insertions(+) + +commit 982195b61c4996e1dd8045dcdb818ff7ee45d5b4 +Author: David Zeuthen +AuthorDate: Mon Apr 11 10:51:37 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Apr 11 10:51:37 2011 -0400 + + GDBus: Use thread-default GMainContext in _g_assert_property_notify + + friends + + Signed-off-by: David Zeuthen + + gio/tests/gdbus-tests.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ff57ed5d6a67f91ef35ae947f3fea7ecce12ee7b +Author: Ryan Lortie +AuthorDate: Mon Apr 11 03:30:24 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 11 03:41:10 2011 -0400 + + GApplication: g_settings_sync() on exit + + Call g_settings_sync() just before g_applcation_run() returns. + This is + really the correct thing to do in every case that you're using + GSettings + and it prevents every single application from having to do it for + themselves. + + Closes bug #647419. + + gio/gapplication.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 68aef334041c7da2c67e43b743b8e93114d84e54 +Author: Ryan Lortie +AuthorDate: Mon Apr 11 03:37:47 2011 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 11 03:39:27 2011 -0400 + + GSettings: make _sync() a no-op if uninitialised + + If GSettings is uninitialised then g_settings_sync() should very + obviously just return right away (rather than attempting to initialise + GSettings first). + + gio/gsettingsbackend.c | 23 +++++++++++++++++------ + 1 file changed, 17 insertions(+), 6 deletions(-) + +commit 6a45180c95baaddedafacf1780de2670c5a6a44a +Author: David Zeuthen +AuthorDate: Sun Apr 10 11:19:45 2011 -0400 +Commit: David Zeuthen +CommitDate: Sun Apr 10 11:19:45 2011 -0400 + + Clarify docs for g_dbus_gvalue_to_gvariant() and + g_dbus_gvariant_to_gvalue() + + Signed-off-by: David Zeuthen + + gio/gdbusutils.c | 77 + +++++++++++++++++++++++++++++--------------------------- + gio/gdbusutils.h | 2 +- + 2 files changed, 41 insertions(+), 38 deletions(-) + +commit 45377252db37ed46b4fd4c17ae88d8804c8c0923 +Author: Ryan Lortie +AuthorDate: Sun Apr 10 07:55:03 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Apr 10 07:56:06 2011 -0400 + + Add test case for G_APPLICATION_NON_UNIQUE + + gio/tests/gapplication.c | 74 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 74 insertions(+) + +commit 9d204338f3e2a0eb7fb53eb7287040eb8d0f8589 +Author: Ryan Lortie +AuthorDate: Sun Apr 10 07:51:55 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Apr 10 07:55:33 2011 -0400 + + GApplication: add G_APPLICATION_NON_UNIQUE + + Add a flag to essentially short-circuit g_application_register(). The + application makes no attempt to acquire the bus name or check for + existing instances with that name. The application is never + considered + as being 'remote' and all requests are handled locally. + + Closes #646985. + + gio/gapplication.c | 19 +++++++++++-------- + gio/gioenums.h | 9 ++++++++- + 2 files changed, 19 insertions(+), 9 deletions(-) + +commit 53389d963d1271d0c36862e2b4866ff5231b9b9e +Author: Ryan Lortie +AuthorDate: Sun Apr 10 07:50:26 2011 -0400 +Commit: Ryan Lortie +CommitDate: Sun Apr 10 07:50:26 2011 -0400 + + GApplication: fix leaked object path + + In the case that we fail to become the primary instance we should + unregister *both* object paths that we registered during our attempt. + + gio/gapplicationimpl-dbus.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 01a5f19e049618fc4665c809ef85958cca1ee2ae +Author: David Zeuthen +AuthorDate: Sat Apr 9 17:51:59 2011 -0400 +Commit: David Zeuthen +CommitDate: Sat Apr 9 17:51:59 2011 -0400 + + Improve g_dbus_gvalue_to_gvariant() docs + + Signed-off-by: David Zeuthen + + gio/gdbusutils.c | 30 +++++++++++------------------- + 1 file changed, 11 insertions(+), 19 deletions(-) + +commit 61704dbca5a0004ab9b1172cd96b8d81b1697d61 +Author: Dan Winship +AuthorDate: Sat Apr 9 12:47:32 2011 -0400 +Commit: Dan Winship +CommitDate: Sat Apr 9 12:54:15 2011 -0400 + + GSocket: clarify g_socket_receive documentation + + g_socket_receive* return 0 if the connection is closed. + + https://bugzilla.gnome.org/show_bug.cgi?id=643074 + + gio/gsocket.c | 30 ++++++++++++++++++------------ + 1 file changed, 18 insertions(+), 12 deletions(-) + +commit ea57feff96f13bbd4d03a76040a4ddfad2677310 +Author: Dan Winship +AuthorDate: Thu Mar 10 22:09:31 2011 -0500 +Commit: Dan Winship +CommitDate: Sat Apr 9 12:45:16 2011 -0400 + + gsettings-tool: warn if setting a value fails + + eg, if the dconf backend cannot connect to dbus + + https://bugzilla.gnome.org/show_bug.cgi?id=641768 + + gio/gsettings-tool.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +commit 1d781ba3bec741475eaa745aec2c060e9b1114f4 +Author: David Zeuthen +AuthorDate: Sat Apr 9 11:46:19 2011 -0400 +Commit: David Zeuthen +CommitDate: Sat Apr 9 11:47:34 2011 -0400 + + GDBus: Document GVariant/GValue conversion routines and move to them + to utils + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 4 +- + gio/gdbusinterface.c | 315 ----------------------------- + gio/gdbusinterface.h | 7 - + gio/gdbusutils.c | 385 + ++++++++++++++++++++++++++++++++++++ + gio/gdbusutils.h | 5 + + gio/gio.symbols | 4 +- + 6 files changed, 394 insertions(+), 326 deletions(-) + +commit 9c8341f1aaf01148ee2ca7f634478cdfaf4a0303 +Author: David Zeuthen +AuthorDate: Sat Apr 9 11:39:32 2011 -0400 +Commit: David Zeuthen +CommitDate: Sat Apr 9 11:39:32 2011 -0400 + + Forgot to add autofoo for libffi + + Signed-off-by: David Zeuthen + + configure.ac | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 88ab35f3cb6127036361e421987a127bddb989c8 +Author: David Zeuthen +AuthorDate: Fri Apr 8 17:34:44 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 8 17:34:44 2011 -0400 + + Add a generic libffi based marshaller to libgobject + + This code is from https://bugzilla.gnome.org/show_bug.cgi?id=567087 + and was adapted by myself to also support the GVariant fundamental + type. + + Signed-off-by: David Zeuthen + + docs/reference/gobject/gobject-sections.txt | 1 + + gio/gdbus-codegen/codegen.py | 189 + +-------------------------- + gobject-2.0.pc.in | 1 + + gobject/Makefile.am | 4 +- + gobject/gclosure.c | 194 + ++++++++++++++++++++++++++++ + gobject/gclosure.h | 7 + + gobject/gobject.symbols | 1 + + 7 files changed, 209 insertions(+), 188 deletions(-) + +commit 0b9229beca5379b638e9d9a879bca30560042023 +Author: David Zeuthen +AuthorDate: Fri Apr 8 16:57:31 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 8 17:11:38 2011 -0400 + + Add gdbus-codegen(1) command + + It doesn't work yet without the user manually adding ffi bits. That's + the topic of the next commit. + + Signed-off-by: David Zeuthen + + configure.ac | 2 + + docs/reference/gio/Makefile.am | 6 +- + docs/reference/gio/gdbus-codegen.xml | 674 +++++++++++ + docs/reference/gio/gio-docs.xml | 1 + + gio/Makefile.am | 2 +- + gio/gdbus-codegen/Makefile.am | 27 + + gio/gdbus-codegen/__init__.py | 1 + + gio/gdbus-codegen/codegen.py | 2104 + ++++++++++++++++++++++++++++++++++ + gio/gdbus-codegen/codegen_docbook.py | 283 +++++ + gio/gdbus-codegen/codegen_main.py | 171 +++ + gio/gdbus-codegen/config.py.in | 6 + + gio/gdbus-codegen/dbustypes.py | 288 +++++ + gio/gdbus-codegen/gdbus-codegen.in | 11 + + gio/gdbus-codegen/parser.py | 255 ++++ + gio/gdbus-codegen/utils.py | 56 + + 15 files changed, 3884 insertions(+), 3 deletions(-) + +commit 1a0424b7ff4550ae90ff730bb98d40bface512f3 +Author: Matthias Clasen +AuthorDate: Fri Apr 8 17:02:01 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 8 17:02:01 2011 -0400 + + Fix another faulty GApplicationCommandline example + + Several flaws were pointed out by Shaun McCance. We were + leaking handled arguments, and we were mishandling the last + argument, and we were actually skipping arguments too. + + https://bugzilla.gnome.org/show_bug.cgi?id=647031 + + gio/tests/gapplication-example-cmdline2.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +commit ac93a6af88901840b3324c086221c9153608df0a +Author: David Zeuthen +AuthorDate: Fri Apr 8 16:29:48 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 8 16:29:48 2011 -0400 + + Add "Since: 2.30" for new D-Bus routines + + Signed-off-by: David Zeuthen + + gio/gdbusinterface.c | 10 ++++++++++ + gio/gdbusinterface.h | 4 ++++ + gio/gdbusinterfacestub.c | 24 ++++++++++++++++++++++++ + gio/gdbusinterfacestub.h | 4 ++++ + gio/gdbusobject.c | 14 ++++++++++++++ + gio/gdbusobject.h | 2 ++ + gio/gdbusobjectmanager.c | 22 ++++++++++++++++------ + gio/gdbusobjectmanager.h | 2 ++ + gio/gdbusobjectmanagerclient.c | 40 + ++++++++++++++++++++++++++++++++++++++++ + gio/gdbusobjectmanagerclient.h | 4 ++++ + gio/gdbusobjectmanagerserver.c | 14 ++++++++++++++ + gio/gdbusobjectmanagerserver.h | 6 +++++- + gio/gdbusobjectproxy.c | 8 ++++++++ + gio/gdbusobjectproxy.h | 4 ++++ + gio/gdbusobjectstub.c | 16 ++++++++++++++++ + gio/gdbusobjectstub.h | 6 +++++- + 16 files changed, 172 insertions(+), 8 deletions(-) + +commit bf6e10fe5231e892e9f64b0887b6a432047be07a +Author: David Zeuthen +AuthorDate: Fri Apr 8 16:29:30 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 8 16:29:30 2011 -0400 + + Add docs for new high-level D-Bus types + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-docs.xml | 8 ++ + docs/reference/gio/gio-sections.txt | 179 + ++++++++++++++++++++++++++++++++++++ + docs/reference/gio/gio.types | 8 ++ + 3 files changed, 195 insertions(+) + +commit 1e2e58705c0dbda29a6bbe9fb890b7700fee428e +Author: David Zeuthen +AuthorDate: Fri Apr 8 16:12:33 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 8 16:12:33 2011 -0400 + + GDBusProxy: Store GDBusObject in private struct instead of qdata + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 18 +++++++++++++----- + 1 file changed, 13 insertions(+), 5 deletions(-) + +commit b41cf76350c144379c012f6a959dd30152e17780 +Author: David Zeuthen +AuthorDate: Fri Apr 8 16:12:09 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 8 16:12:09 2011 -0400 + + GDBusProxy: Update description to match GDBusInterface + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 94b907134426e26393a86630dae5ce53baee6ae6 +Author: David Zeuthen +AuthorDate: Fri Apr 8 15:14:47 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 8 15:48:28 2011 -0400 + + Start merging gdbus-codegen code + + Signed-off-by: David Zeuthen + + gio/Makefile.am | 16 + + gio/gdbusauthobserver.c | 17 +- + gio/gdbusinterface.c | 410 +++++++++++ + gio/gdbusinterface.h | 79 ++ + gio/gdbusinterfacestub.c | 693 ++++++++++++++++++ + gio/gdbusinterfacestub.h | 105 +++ + gio/gdbusobject.c | 191 +++++ + gio/gdbusobject.h | 95 +++ + gio/gdbusobjectmanager.c | 216 ++++++ + gio/gdbusobjectmanager.h | 89 +++ + gio/gdbusobjectmanagerclient.c | 1575 + ++++++++++++++++++++++++++++++++++++++++ + gio/gdbusobjectmanagerclient.h | 129 ++++ + gio/gdbusobjectmanagerserver.c | 898 +++++++++++++++++++++++ + gio/gdbusobjectmanagerserver.h | 80 ++ + gio/gdbusobjectproxy.c | 315 ++++++++ + gio/gdbusobjectproxy.h | 72 ++ + gio/gdbusobjectstub.c | 475 ++++++++++++ + gio/gdbusobjectstub.h | 87 +++ + gio/gdbusprivate.c | 18 + + gio/gdbusprivate.h | 20 +- + gio/gdbusproxy.c | 36 + + gio/gio-marshal.list | 3 + + gio/gio.h | 8 + + gio/gio.symbols | 96 +++ + gio/gioenums.h | 36 + + gio/giotypes.h | 33 + + 26 files changed, 5774 insertions(+), 18 deletions(-) + +commit 0729260141bb585943ad1c6efa8ab7ee9058b0aa +Author: David Zeuthen +AuthorDate: Fri Apr 8 15:44:25 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 8 15:44:25 2011 -0400 + + Silence a bunch of -Wunused-but-set-variable warnings + + Signed-off-by: David Zeuthen + + gio/gdbusaddress.c | 29 +++++++++++++++++++++++++++++ + gio/gdbusauth.c | 1 + + gio/gdbusauthmechanismsha1.c | 4 ++++ + gio/gdbusconnection.c | 17 ----------------- + gio/gdbusmessage.c | 5 ++--- + gio/gdbusprivate.c | 1 + + gio/gdbusproxy.c | 5 +---- + gio/gdbusserver.c | 5 +---- + gio/gdbusutils.c | 4 ---- + gio/gicon.c | 4 +--- + gio/ginetaddress.c | 1 + + gio/glib-compile-schemas.c | 3 --- + gio/gresolver.c | 2 ++ + gio/gsocket.c | 6 +----- + gio/gsocketconnection.c | 1 + + gio/gsocketcontrolmessage.c | 1 + + gio/gunixconnection.c | 1 + + gio/gvdb/gvdb-reader.c | 2 -- + gio/tests/converter-stream.c | 6 ------ + gio/tests/file.c | 9 +++------ + gio/tests/httpd.c | 1 + + gio/tests/live-g-file.c | 3 +-- + gio/tests/sleepy-stream.c | 3 --- + 23 files changed, 52 insertions(+), 62 deletions(-) + +commit 23818d1e61bdf33e5f19ba1c0993bacfcdc113db +Author: Ryan Lortie +AuthorDate: Fri Apr 8 09:14:50 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 8 09:15:19 2011 -0400 + + GSettings: remove more asserts + + Same logic as the last commit on this topic, applied to the other + functions too. + + gio/gsettings.c | 8 -------- + 1 file changed, 8 deletions(-) + +commit edaf99be8662bf19a67ef5e62b8402764197d0c6 +Author: Matthias Clasen +AuthorDate: Fri Apr 8 07:13:54 2011 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 8 07:19:38 2011 -0400 + + Avoid an interaction between GApplication and GOption + + When using GOption to handle commandlines, we need to disable + the builtin help handling, since it calls exit(). Also mention + this particular pitfall in the docs. + + gio/gapplicationcommandline.c | 5 ++++- + gio/tests/gapplication-example-cmdline3.c | 11 +++++++++++ + 2 files changed, 15 insertions(+), 1 deletion(-) + +commit 3498d58289ed833aeae59bfc76db0f5fa5840481 +Author: Ryan Lortie +AuthorDate: Fri Apr 8 01:47:52 2011 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 8 01:47:52 2011 -0400 + + glib-compile-schemas: check for undefined refs + + For child schemas, verify that the named schema actually exists and + issue a warning if not. This error in schema files will cause runtime + errors when iterating over the list of child schemas and attempting to + instantiate each one. + + This will move from being merely a warning to a hard error in the + future. + + Bug #646039. + + gio/glib-compile-schemas.c | 28 ++++++++++++++++++++++------ + 1 file changed, 22 insertions(+), 6 deletions(-) + +commit 4ece333afeb046b60eaa5fd512694e5c8f1587a6 +Author: Ryan Lortie +AuthorDate: Thu Apr 7 21:25:01 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 7 21:25:01 2011 -0400 + + Don't assert on backend == settings->priv->backend + + They could be different if a notification is queued for delivery and + someone calls g_settings_delay(). + + Bug #646843. + + gio/gsettings.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit a2e3a4d150b59213694b5166d0fda60d2b17970a +Author: Matthias Clasen +AuthorDate: Thu Apr 7 17:14:36 2011 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 7 17:15:41 2011 -0400 + + Add a warning to the g_dbus_connection_set_exit_on_close docs + + Tell people to not leak their apps out of the session. + + gio/gdbusconnection.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit 784619bc3aeb0e4f4d0dcf1c6feb934eaa586841 +Author: Dan Winship +AuthorDate: Mon Apr 4 11:10:50 2011 -0400 +Commit: Dan Winship +CommitDate: Thu Apr 7 08:32:06 2011 -0400 + + Fix two leaks seen when using TLS connections + + g_tls_certificate_list_new_from_file() was leaking the file contents, + and GSource was leaking the GSourcePrivate structure that got + created when using child sources. + + gio/gtlscertificate.c | 1 + + glib/gmain.c | 7 +++++++ + 2 files changed, 8 insertions(+) + +commit 9fdc8d976a06d892e3718b417759aacf83167616 +Author: Jordi Serratosa +AuthorDate: Mon Apr 4 21:16:35 2011 +0200 +Commit: Gil Forcada +CommitDate: Mon Apr 4 21:45:39 2011 +0200 + + [l10n]Fixes on Catalan translation + + po/ca.po | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 418358f452a858205c1236c9826b40de92aca430 +Author: OKANO Takayoshi +AuthorDate: Mon Apr 4 21:27:35 2011 +0900 +Commit: Takayuki KUSANO +CommitDate: Mon Apr 4 21:27:48 2011 +0900 + + Updated Japanese translation + + po/ja.po | 1192 + ++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 696 insertions(+), 496 deletions(-) + +commit 3ac7e0a7fe0156605237916d7388cb8894b93b72 +Author: Murray Cumming +AuthorDate: Thu Mar 24 09:37:21 2011 +0100 +Commit: Murray Cumming +CommitDate: Mon Apr 4 09:22:06 2011 +0200 + + Docs: Change DBus to D-Bus + + gio/gioenums.h | 2 +- + glib/gvariant-serialiser.c | 12 ++++++------ + glib/gvariant.c | 38 +++++++++++++++++++------------------- + glib/gvarianttype.c | 20 ++++++++++---------- + glib/gvarianttype.h | 18 +++++++++--------- + 5 files changed, 45 insertions(+), 45 deletions(-) + +commit 27a067a3c860271b62f009382444d5d728932e47 +Author: Petr Kovar +AuthorDate: Mon Apr 4 04:10:42 2011 +0200 +Commit: Petr Kovar +CommitDate: Mon Apr 4 04:11:17 2011 +0200 + + Update Czech translation + + po/cs.po | 1139 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 639 insertions(+), 500 deletions(-) + +commit 88a6723bf4453d20d467dad7f1400a14e1248545 +Author: Gabor Kelemen +AuthorDate: Sun Apr 3 10:13:57 2011 +0200 +Commit: Gabor Kelemen +CommitDate: Sun Apr 3 10:14:26 2011 +0200 + + Updated Hungarian translation + + po/hu.po | 44 ++++++++++++++++++++++---------------------- + 1 file changed, 22 insertions(+), 22 deletions(-) + +commit 32e26cf17936e0ad26252acb24530a7e2811e3eb +Author: Murray Cumming +AuthorDate: Sat Apr 2 15:42:11 2011 +0200 +Commit: Murray Cumming +CommitDate: Sun Apr 3 09:13:15 2011 +0200 + + GDBusMethodInvocation: Improve get_parameters() documentation. + + Note that the returned GVariant is always a tuple. + See bug #646420. + + gio/gdbusmethodinvocation.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 98365dff73d8ecc8a02b7dfedce87e6fc28f4e39 +Author: Colin Walters +AuthorDate: Thu Mar 31 17:07:07 2011 -0400 +Commit: Colin Walters +CommitDate: Thu Mar 31 17:07:07 2011 -0400 + + gqsort: Quiet a compiler warning for qsort_r + + glib/gqsort.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 14bb138d581b40bbd850c85ae63c8391a1671696 +Author: Colin Walters +AuthorDate: Fri Mar 25 11:59:33 2011 -0400 +Commit: Colin Walters +CommitDate: Thu Mar 31 15:29:42 2011 -0400 + + goption: [linux] Look in /proc/self/cmdline for argv0 if not specified + + We really shouldn't use when we can perfectly easily + get argv0 out of /proc. This avoids people having to pass argv + down into gtk_init/g_option_context_parse etc., which is important + because GTK+ uses it to initialize the WM_CLASS, which in turn + GNOME Shell consumes for application tracking. + + https://bugzilla.gnome.org/show_bug.cgi?id=644309 + + glib/goption.c | 50 ++++++++++++++++++++++++++++++----- + glib/tests/Makefile.am | 4 +++ + glib/tests/option-argv0.c | 63 + +++++++++++++++++++++++++++++++++++++++++++++ + glib/tests/option-context.c | 25 +++--------------- + 4 files changed, 113 insertions(+), 29 deletions(-) + +commit 131b9f98ea6ec1cc7b8dce539199d181ab1dac19 +Author: Ryan Lortie +AuthorDate: Thu Mar 31 15:55:21 2011 +0530 +Commit: Ryan Lortie +CommitDate: Thu Mar 31 15:55:21 2011 +0530 + + gio.symbols updates + + gio/gio.symbols | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 7a752e0817986d535717ceee2d502f00e3c0f747 +Author: Ryan Lortie +AuthorDate: Thu Mar 31 15:51:01 2011 +0530 +Commit: Ryan Lortie +CommitDate: Thu Mar 31 15:51:01 2011 +0530 + + Improve .gitignore + + gio/tests/.gitignore | 1 + + glib/tests/.gitignore | 4 ++++ + gobject/tests/.gitignore | 5 +++++ + m4macros/.gitignore | 1 + + 4 files changed, 11 insertions(+) + +commit 0cadce7e93b0246ad57ab26b9bc851facbb54416 +Author: Ryan Lortie +AuthorDate: Thu Mar 31 15:47:54 2011 +0530 +Commit: Ryan Lortie +CommitDate: Thu Mar 31 15:47:54 2011 +0530 + + glib.symbols: add some missing symbols + + glib/glib.symbols | 2 ++ + 1 file changed, 2 insertions(+) + +commit d95b750a1d936d962b4c00be2d65ea1606f143cb +Author: Ryan Lortie +AuthorDate: Thu Mar 31 15:12:34 2011 +0530 +Commit: Ryan Lortie +CommitDate: Thu Mar 31 15:15:09 2011 +0530 + + compile schemas test: open ranges for all types + + We need to make sure that every value in the table actually parses + with + GVariant. + + gio/tests/gschema-compile.c | 3 +- + gio/tests/schema-tests/range-type-test.gschema.xml | 76 + ++++++++++++++++++++++ + 2 files changed, 78 insertions(+), 1 deletion(-) + +commit d2af82e8203323e1b7fad4460c6b48411ef81711 +Author: Ryan Lortie +AuthorDate: Thu Mar 31 15:11:30 2011 +0530 +Commit: Ryan Lortie +CommitDate: Thu Mar 31 15:15:09 2011 +0530 + + gschema-test: invert expectation for min/max omit + + It is now completely valid. + + Fix up what is now a legitimate range error in the schema used in + one of + the tests. + + gio/tests/gschema-compile.c | 4 ++-- + gio/tests/schema-tests/range-missing-max.gschema.xml | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit cde83c8ccd5d56a72d2e3f0d36e9a902f9375482 +Author: Ryan Lortie +AuthorDate: Thu Mar 31 15:10:25 2011 +0530 +Commit: Ryan Lortie +CommitDate: Thu Mar 31 15:14:46 2011 +0530 + + glib-compile-schemas: min and max are now optional + + Will be taken to be the minimum and maximum value for the type of the + key if they are left out. + + Bug #646310. + + gio/glib-compile-schemas.c | 31 +++++++++++++++++++++++++++++-- + 1 file changed, 29 insertions(+), 2 deletions(-) + +commit cd35e2e64341c7d8186f448e990e6589f0b21d64 +Author: Ryan Lortie +AuthorDate: Thu Mar 31 15:09:55 2011 +0530 +Commit: Ryan Lortie +CommitDate: Thu Mar 31 15:09:55 2011 +0530 + + GVariant test: test parsing of "inf" and "nan" + + glib/tests/gvariant.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit 85633f11824bc806bef3d18b8c8a0bdb96af6a16 +Author: Ryan Lortie +AuthorDate: Thu Mar 31 14:48:10 2011 +0530 +Commit: Ryan Lortie +CommitDate: Thu Mar 31 15:09:26 2011 +0530 + + GVariant parser: parse "inf", "-inf" and "nan" + + glib/gvariant-parser.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +commit 24ed841d6a65e3beff64b2252d132be9e57ede9a +Author: Ryan Lortie +AuthorDate: Thu Mar 31 14:45:50 2011 +0530 +Commit: Ryan Lortie +CommitDate: Thu Mar 31 14:45:50 2011 +0530 + + GVariant parser: match strings without consuming + + Add a new function that allows the parser to check that the current + token is equal to a given string without consuming the token. + Reimplement the 'consume' function in terms of the new function. + + glib/gvariant-parser.c | 25 ++++++++++++++----------- + 1 file changed, 14 insertions(+), 11 deletions(-) + +commit f6dff49136bd2202fd7a4b928b9dcd8fb625f8a4 +Author: Ryan Lortie +AuthorDate: Thu Mar 31 14:07:59 2011 +0530 +Commit: Ryan Lortie +CommitDate: Thu Mar 31 14:14:59 2011 +0530 + + GVariant parser: fix memory error + + In some cases it was possible for the GVariant parser to access + past the + 'limit' parameter. This should fix that. + + glib/gvariant-parser.c | 26 +++++++++++++++++--------- + 1 file changed, 17 insertions(+), 9 deletions(-) + +commit 49fa69e05eb6d2a29fc1de8af93e65c4dd45ad72 +Author: Ryan Lortie +AuthorDate: Thu Mar 31 12:44:40 2011 +0530 +Commit: Ryan Lortie +CommitDate: Thu Mar 31 12:47:03 2011 +0530 + + Add 'uint' convenience functions for GSettings + + Without getting into a debate about the reasons why you may or may not + want to use unsigned integers, it's sufficient to note that people + have + been using them and requesting this functionality. + + Bug #641755. + + docs/reference/gio/gio-sections.txt | 2 ++ + gio/gio.symbols | 2 ++ + gio/gsettings.c | 56 + +++++++++++++++++++++++++++++++++++++ + gio/gsettings.h | 5 ++++ + 4 files changed, 65 insertions(+) + +commit e9ce8f23748c28e19393cb225aeb6f7deac2fa62 +Author: Ryan Lortie +AuthorDate: Fri Mar 18 22:00:14 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Mar 31 12:47:03 2011 +0530 + + Add GTimeZoneMonitor + + Monitors /etc/localtime for changes and instructs GTimeZone to + drop its + cache. Also has a signal for interested 3rd parties. + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 13 +++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gtimezonemonitor.c | 156 + ++++++++++++++++++++++++++++++++++++ + gio/gtimezonemonitor.h | 47 +++++++++++ + glib/gtimezone.c | 3 + + 8 files changed, 224 insertions(+) + +commit de3a3b181a97d43acd29bcdcdbd7406233b7ee9f +Author: Ryan Lortie +AuthorDate: Fri Mar 18 23:09:52 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Mar 31 12:47:02 2011 +0530 + + g_time_zone_new_local: cache the result + + Add a function to drop the cache. + + docs/reference/glib/glib-sections.txt | 2 ++ + glib/gtimezone.c | 57 + ++++++++++++++++++++++++++++++++++- + glib/gtimezone.h | 2 ++ + 3 files changed, 60 insertions(+), 1 deletion(-) + +commit 29a074b87e60be0d3f5508fa71ceb61937777c6d +Author: Ryan Lortie +AuthorDate: Fri Mar 18 23:09:17 2011 -0400 +Commit: Ryan Lortie +CommitDate: Thu Mar 31 12:47:02 2011 +0530 + + GTimeZone: don't add /etc/localtime to the cache + + It may change. + + glib/gtimezone.c | 40 ++++++++++++++-------------------------- + 1 file changed, 14 insertions(+), 26 deletions(-) + +commit 3d46c848c538b53e9d8b986803742bb4ee125e40 +Author: Miroslav Nikolić +AuthorDate: Thu Mar 31 00:47:41 2011 +0200 +Commit: Милош Поповић +CommitDate: Thu Mar 31 00:47:41 2011 +0200 + + Updated Serbian translation + + po/sr.po | 1774 + ++++++++++++++++++++++++++++++++------------------------ + po/sr@latin.po | 1774 + ++++++++++++++++++++++++++++++++------------------------ + 2 files changed, 2030 insertions(+), 1518 deletions(-) + +commit d306d0019be47c6fc6600210c5c9acbf222729b5 +Author: Gil Forcada +AuthorDate: Wed Mar 30 23:17:29 2011 +0200 +Commit: Gil Forcada +CommitDate: Wed Mar 30 23:18:09 2011 +0200 + + [l10n]Updated Catalan translation + + po/ca.po | 344 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 180 insertions(+), 164 deletions(-) + +commit 04969571bb9dd0f9415ca9cd2c3fd360e3f7f159 +Author: Martin Pitt +AuthorDate: Wed Mar 30 19:52:31 2011 +0200 +Commit: Martin Pitt +CommitDate: Wed Mar 30 19:52:31 2011 +0200 + + [gi] Add missing allow-none annotations to Gio + + gio/gdbusproxy.c | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +commit abe57505407fa3a8f95e41972e3c8deb79ec8f7d +Author: Friedel Wolff +AuthorDate: Wed Mar 30 18:53:38 2011 +0200 +Commit: Friedel Wolff +CommitDate: Wed Mar 30 18:53:38 2011 +0200 + + Update translation for Afrikaans (af) + + po/af.po | 2200 + ++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 1510 insertions(+), 690 deletions(-) + +commit 92977a221760eba19a5a7186f5ccc90f21262279 +Author: Bruce Cowan +AuthorDate: Wed Mar 30 15:22:38 2011 +0100 +Commit: Bruce Cowan +CommitDate: Wed Mar 30 15:22:54 2011 +0100 + + Updated British English translation + + po/en_GB.po | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +commit 5f71bb583be44a4e7cacd36d5a21c27c9048e8ed +Author: Chao-Hsiung Liao +AuthorDate: Wed Mar 30 21:17:26 2011 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Wed Mar 30 21:17:26 2011 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 336 + +++++++++++++++++++++++++++++++----------------------------- + po/zh_TW.po | 336 + +++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 350 insertions(+), 322 deletions(-) + +commit c9bc758e8d638f2dd37b38249ae0a9a1034d0854 +Author: Gintautas Miliauskas +AuthorDate: Tue Mar 29 14:12:25 2011 +0200 +Commit: Gintautas Miliauskas +CommitDate: Tue Mar 29 14:14:32 2011 +0200 + + Updated Lithuanian translation. + + po/lt.po | 1342 + ++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 773 insertions(+), 569 deletions(-) + +commit 95e7aa0e07d7d31d3459910fed014f7aa611f957 +Author: Jonathan Matthew +AuthorDate: Sun Mar 27 10:44:31 2011 +1000 +Commit: Jonathan Matthew +CommitDate: Tue Mar 29 19:40:26 2011 +1000 + + introspection: add annotations for g_file_load_contents and friends + + https://bugzilla.gnome.org/show_bug.cgi?id=645789 + + gio/gfile.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit abe058a599a8b9a064ab6cbf8fe2416f6ecd08bc +Author: Gil Forcada +AuthorDate: Tue Mar 29 00:58:25 2011 +0200 +Commit: Gil Forcada +CommitDate: Tue Mar 29 00:58:25 2011 +0200 + + [l10n]Updated Catalan translation + + po/ca.po | 2798 + ++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 1920 insertions(+), 878 deletions(-) + +commit f516ebc57b8e075744fd1c653fba47191dfd3fba +Author: David Zeuthen +AuthorDate: Mon Mar 28 13:04:34 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Mar 28 13:04:34 2011 -0400 + + GDBusProxy: Also check signature when checking if signal is expected + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit caf993df6f9dbf2cd01ae16f5d757187c44683e3 +Author: David Zeuthen +AuthorDate: Mon Mar 28 12:10:25 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Mar 28 12:10:25 2011 -0400 + + GDBusProxy: Drop unexpected signals + + If we have an expected interface and receive a signal not mentioned in + the interface, simply drop it. This way, the application won't have to + check for the signal itself. + + This was pointed out in + + https://bugzilla.gnome.org/show_bug.cgi?id=642724#c5 + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit aa59fb9dd1a20004a5ba5f4d97c271eb5abe01e9 +Author: Olivier Crête +AuthorDate: Fri Feb 18 20:34:06 2011 -0500 +Commit: David Zeuthen +CommitDate: Mon Mar 28 11:59:47 2011 -0400 + + GDBusProxy: Validate properties received from service if possible + + If the proxy has an GInterfaceInfo set, validate properties against it + so the application doesn't have to do it. + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 42 ++++++++++++++++++++++++++++++++++++------ + 1 file changed, 36 insertions(+), 6 deletions(-) + +commit 2809964c289ce278cc7477b7af908de7845c5c61 +Author: David Zeuthen +AuthorDate: Mon Mar 28 11:35:14 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Mar 28 11:39:22 2011 -0400 + + docs: Add a "Index of new symbols in 2.30" section + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-docs.xml | 4 ++++ + 1 file changed, 4 insertions(+) + +commit b845c62c7feb06f3d16921b5c08065fb13a1030b +Author: David Zeuthen +AuthorDate: Mon Mar 28 11:34:48 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Mar 28 11:39:22 2011 -0400 + + GDBusProxy: Make interface lookups O(1) + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +commit 91f97ebbaad602115b3b26e36592a3b3a22cf9e6 +Author: David Zeuthen +AuthorDate: Mon Mar 28 11:33:36 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Mar 28 11:39:22 2011 -0400 + + GDBusConnection: Make interface lookups O(1) + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 5bcf54b29cfe65f07d362b48a7fce7ac7c9a6dc3 +Author: David Zeuthen +AuthorDate: Mon Mar 28 11:31:05 2011 -0400 +Commit: David Zeuthen +CommitDate: Mon Mar 28 11:39:22 2011 -0400 + + GDBus: Add mechanism to make lookup on interfaces constant-time + + This is used both on the service- and client-side and is currently + O(n). + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 2 + + gio/gdbusintrospection.c | 171 + +++++++++++++++++++++++++++++++++++- + gio/gdbusintrospection.h | 3 + + gio/gio.symbols | 2 + + 4 files changed, 175 insertions(+), 3 deletions(-) + +commit 5aa8f135c782e080b1be62e1f1fc5f1c9f12e959 +Author: Aron Xu +AuthorDate: Mon Mar 28 10:21:57 2011 +0000 +Commit: Aron Xu +CommitDate: Mon Mar 28 10:21:57 2011 +0000 + + Update Simplified Chinese translation. + + po/zh_CN.po | 180 + ++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 90 insertions(+), 90 deletions(-) + +commit 13e2328117452af86097c18d873abd0c7d996c19 +Author: Aron Xu +AuthorDate: Mon Mar 28 10:18:03 2011 +0000 +Commit: Aron Xu +CommitDate: Mon Mar 28 10:18:03 2011 +0000 + + Update Simplified Chinese translation. + + po/zh_CN.po | 570 + +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 298 insertions(+), 272 deletions(-) + +commit 6477c58ce477fc6ac7ac98ab3895175db44eef2e +Author: Wouter Bolsterlee +AuthorDate: Sun Mar 27 23:49:55 2011 +0200 +Commit: Wouter Bolsterlee +CommitDate: Sun Mar 27 23:51:24 2011 +0200 + + Updated Dutch translation by Wouter Bolsterlee + + po/nl.po | 1198 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 675 insertions(+), 523 deletions(-) + +commit cd7f028cc0962dad80901603baaa4ba9e9283825 +Author: Abduxukur Abdurixit +AuthorDate: Sun Mar 27 19:38:45 2011 +0200 +Commit: Abduxukur Abdurixit +CommitDate: Sun Mar 27 19:38:45 2011 +0200 + + Added UG translation + + po/ug.po | 1649 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 851 insertions(+), 798 deletions(-) + +commit 77f30fc3d3f8bee9970df58051d8934223982fd3 +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Sun Mar 27 00:38:07 2011 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Sun Mar 27 00:38:28 2011 +0700 + + Updated Vietnamese translation + + po/vi.po | 41 +++++++++++++++-------------------------- + 1 file changed, 15 insertions(+), 26 deletions(-) + +commit 0e9d328bbee4c4a75c155b6943ee70da27c73025 +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Sun Mar 27 00:34:44 2011 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Sun Mar 27 00:38:27 2011 +0700 + + po/vi.po: import from Damned Lies + + po/vi.po | 769 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 409 insertions(+), 360 deletions(-) + +commit ead00ab55d8492a3fce81916da7ffd154b4272a9 +Author: Ask H. Larsen +AuthorDate: Sat Mar 26 14:17:39 2011 +0100 +Commit: Kenneth Nielsen +CommitDate: Sat Mar 26 14:17:39 2011 +0100 + + Updated Danish translation + + po/da.po | 1302 + +++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 771 insertions(+), 531 deletions(-) + +commit 1618ca572fec292f0771202bd8b218dacc959060 +Author: David Zeuthen +AuthorDate: Fri Mar 25 17:56:59 2011 -0400 +Commit: David Zeuthen +CommitDate: Fri Mar 25 17:56:59 2011 -0400 + + Fix test suite breakage caused by Murray's commit + + See https://bugzilla.gnome.org/show_bug.cgi?id=645682 + + Signed-off-by: David Zeuthen + + gio/tests/gschema-compile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 222b0276f552c2bf3ca40dc75101f737d82f7991 +Author: Alexander Shopov +AuthorDate: Fri Mar 25 22:13:47 2011 +0200 +Commit: Alexander Shopov +CommitDate: Fri Mar 25 22:13:47 2011 +0200 + + Updated Bulgarian translation + + po/bg.po | 30 +++++++++++++++++------------- + 1 file changed, 17 insertions(+), 13 deletions(-) + +commit c926c099594be2fdc211032fd31b59cdffeebc58 +Author: Daniel Nylander +AuthorDate: Fri Mar 25 18:22:51 2011 +0100 +Commit: Daniel Nylander +CommitDate: Fri Mar 25 18:22:51 2011 +0100 + + Updated Swedish translation + + po/sv.po | 1257 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 670 insertions(+), 587 deletions(-) + +commit 0760e239d3156421f222ab638f96222fe7083a6e +Author: Daniel Nylander +AuthorDate: Fri Mar 25 18:22:13 2011 +0100 +Commit: Daniel Nylander +CommitDate: Fri Mar 25 18:22:13 2011 +0100 + + Updated Swedish translation + + po/sv.po | 1318 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 663 insertions(+), 655 deletions(-) + +commit a8bc1436f1106f92b9dad803787278323c2041fc +Author: Tristan Van Berkom +AuthorDate: Thu Mar 24 10:07:18 2011 -0400 +Commit: David Zeuthen +CommitDate: Thu Mar 24 10:08:18 2011 -0400 + + GDBusServer: move business logic from _new() function to + initable_init() + + https://bugzilla.gnome.org/show_bug.cgi?id=639478 + + Signed-off-by: David Zeuthen + + gio/gdbusserver.c | 19 +++++++------------ + 1 file changed, 7 insertions(+), 12 deletions(-) + +commit 30fdc1a79938540af7bad0af68d0a3b8af14f117 +Author: Murray Cumming +AuthorDate: Thu Mar 24 09:33:55 2011 +0100 +Commit: Murray Cumming +CommitDate: Thu Mar 24 09:33:55 2011 +0100 + + Docs: Changed can not to cannot. + + gio/gapplication.c | 4 ++-- + gio/gsettings.h | 2 +- + gio/gvdb/gvdb-reader.c | 2 +- + gio/tests/gschema-compile.c | 2 +- + glib/gconvert.c | 4 ++-- + glib/giochannel.c | 6 +++--- + glib/gmessages.c | 2 +- + glib/gthread.c | 4 ++-- + glib/gthreadpool.c | 2 +- + glib/gvariant.c | 4 ++-- + glib/gvarianttype.c | 2 +- + gobject/gtype.h | 2 +- + gobject/gtypemodule.c | 2 +- + gobject/gvalue.h | 2 +- + 14 files changed, 20 insertions(+), 20 deletions(-) + +commit 16358f76f6cef6865660e00952fa4d1a35437bce +Author: Daniel Nylander +AuthorDate: Tue Mar 22 15:12:41 2011 +0100 +Commit: Daniel Nylander +CommitDate: Tue Mar 22 15:12:58 2011 +0100 + + Updated Swedish translation + + po/sv.po | 977 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 495 insertions(+), 482 deletions(-) + +commit 78e075f369c589ca8cbbd9c34f8aa7c8be9cf1bd +Author: Daniel Nylander +AuthorDate: Tue Mar 22 15:12:10 2011 +0100 +Commit: Daniel Nylander +CommitDate: Tue Mar 22 15:12:58 2011 +0100 + + Updated Swedish translation + + po/sv.po | 829 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 427 insertions(+), 402 deletions(-) + +commit 57b1142beed7f84dc3e6e13cdd1ee0253bc37f88 +Author: Luca Ferretti +AuthorDate: Tue Mar 22 14:42:32 2011 +0100 +Commit: Luca Ferretti +CommitDate: Tue Mar 22 14:42:32 2011 +0100 + + Updated Italian translation + + po/it.po | 285 + +++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 170 insertions(+), 115 deletions(-) + +commit 175f5292e4806a2ca1bc2db675c8adffb5c8693d +Author: Sweta Kothari +AuthorDate: Mon Mar 21 16:41:46 2011 +0530 +Commit: Sweta Kothari +CommitDate: Mon Mar 21 16:41:46 2011 +0530 + + Updated Gujarati Translations + + po/gu.po | 111 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 56 insertions(+), 55 deletions(-) + +commit 432180d02fd595e95f36d732feac26dcd2b811d2 +Author: Piotr Drąg +AuthorDate: Sat Mar 19 16:31:42 2011 +0100 +Commit: Piotr Drąg +CommitDate: Sat Mar 19 16:31:42 2011 +0100 + + Updated Polish translation + + po/pl.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a5999d317a15cbf173d89f8f73861b43bcd9ffa9 +Author: Piotr Drąg +AuthorDate: Sat Mar 19 16:30:22 2011 +0100 +Commit: Piotr Drąg +CommitDate: Sat Mar 19 16:30:22 2011 +0100 + + Updated Polish translation + + po/pl.po | 22 +++++++++++++--------- + 1 file changed, 13 insertions(+), 9 deletions(-) + +commit dc4a95ed978e51d03a792e07ca291388fed8c789 +Author: Gabor Kelemen +AuthorDate: Fri Mar 18 17:11:24 2011 +0100 +Commit: Gabor Kelemen +CommitDate: Fri Mar 18 17:11:53 2011 +0100 + + Updated Hungarian translation + + po/hu.po | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 029b8fa06952d9e6ce65fd3ca9ee6823c20236e9 +Author: Bruno Brouard +AuthorDate: Thu Mar 17 21:40:03 2011 +0100 +Commit: Bruno Brouard +CommitDate: Thu Mar 17 21:40:33 2011 +0100 + + Updated French translation + + po/fr.po | 350 + +++++++++++++++++++++++++-------------------------------------- + 1 file changed, 141 insertions(+), 209 deletions(-) + +commit 545faa8d2cf03bb16ef09428d80253db91689870 +Author: Daniel Mustieles +AuthorDate: Thu Mar 17 20:35:31 2011 +0100 +Commit: Daniel Mustieles +CommitDate: Thu Mar 17 20:35:31 2011 +0100 + + Updated Spanish translation + + po/es.po | 137 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 73 insertions(+), 64 deletions(-) + +commit e2ed78417a102291763881d40560064cb101ada9 +Author: Mario Blättermann +AuthorDate: Thu Mar 17 12:53:06 2011 +0100 +Commit: Mario Blättermann +CommitDate: Thu Mar 17 12:53:06 2011 +0100 + + [l10n] Updated German translation + + po/de.po | 1168 + ++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 677 insertions(+), 491 deletions(-) + +commit 89194fb415f26f10f18800cd84095a0a505e52a8 +Author: Sweta Kothari +AuthorDate: Thu Mar 17 16:09:40 2011 +0530 +Commit: Sweta Kothari +CommitDate: Thu Mar 17 16:09:40 2011 +0530 + + Updated Gujarati Translations + + po/gu.po | 2276 + ++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 1538 insertions(+), 738 deletions(-) + +commit 098aa5639cc13e5a8cda38e81b05058ca8ff5463 +Author: Matthias Clasen +AuthorDate: Tue Mar 15 11:28:03 2011 -0400 +Commit: Matthias Clasen +CommitDate: Tue Mar 15 11:30:38 2011 -0400 + + Document which files glib-compile-schemas looks at + + Otherwise, your vendor override files are silently ignored... + + docs/reference/gio/glib-compile-schemas.xml | 2 ++ + gio/gsettings.c | 6 ++++++ + 2 files changed, 8 insertions(+) + +commit 0fbdd5c1d26cc85385d0b0889a8f1f4d04df38a9 +Author: Lucian Adrian Grijincu +AuthorDate: Tue Mar 15 14:08:09 2011 +0100 +Commit: Lucian Adrian Grijincu +CommitDate: Tue Mar 15 14:08:09 2011 +0100 + + Updated Romanian translation + + po/ro.po | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 1518592045cef352b90386fefb4509a5b2a727b8 +Author: Lucian Adrian Grijincu +AuthorDate: Tue Mar 15 14:06:59 2011 +0100 +Commit: Lucian Adrian Grijincu +CommitDate: Tue Mar 15 14:06:59 2011 +0100 + + Updated Romanian translation + + po/ro.po | 44 +++++++++++++++++--------------------------- + 1 file changed, 17 insertions(+), 27 deletions(-) + +commit 8f0e371cbf004c26561b2194b753c71f25c5ea93 +Author: Lucian Adrian Grijincu +AuthorDate: Tue Mar 15 14:03:51 2011 +0100 +Commit: Lucian Adrian Grijincu +CommitDate: Tue Mar 15 14:03:51 2011 +0100 + + Updated Romanian translation + + po/ro.po | 34 +++++++++++++++++----------------- + 1 file changed, 17 insertions(+), 17 deletions(-) + +commit 1732e891661712d661d59254936a120da6a526bd +Author: Lupescu Mircea +AuthorDate: Tue Mar 15 14:00:11 2011 +0100 +Commit: Lucian Adrian Grijincu +CommitDate: Tue Mar 15 14:00:11 2011 +0100 + + Updated Romanian translation + + po/ro.po | 208 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 118 insertions(+), 90 deletions(-) + +commit e16547e79f56e65d247f4db8025772af355079a8 +Author: Lucian Adrian Grijincu +AuthorDate: Tue Mar 15 13:34:46 2011 +0100 +Commit: Lucian Adrian Grijincu +CommitDate: Tue Mar 15 13:34:46 2011 +0100 + + Updated Romanian translation + + po/ro.po | 1268 + +++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 754 insertions(+), 514 deletions(-) + +commit 08f0a312895e0dd457f5f4d5bcdf282a6d5a793f +Author: Emmanuele Bassi +AuthorDate: Tue Mar 15 09:03:28 2011 +0000 +Commit: Emmanuele Bassi +CommitDate: Tue Mar 15 09:03:28 2011 +0000 + + Revert "Remove all uses of G_CONST_RETURN" + + This reverts commit 36741245cca56e979fe85e3de676fb3912058f2c. + + The removal has not been discussed, except on Bugzilla: + + https://bugzilla.gnome.org/show_bug.cgi?id=644611 + + glib/gchecksum.c | 2 +- + glib/gchecksum.h | 2 +- + glib/gconvert.c | 4 ++-- + glib/gconvert.h | 2 +- + glib/gdataset.c | 6 +++--- + glib/gdir.c | 4 ++-- + glib/gdir.h | 2 +- + glib/giochannel.c | 4 ++-- + glib/giochannel.h | 4 ++-- + glib/glibintl.h | 6 +++--- + glib/gmain.c | 2 +- + glib/gmain.h | 2 +- + glib/gmarkup.c | 4 ++-- + glib/gmarkup.h | 4 ++-- + glib/goption.c | 4 ++-- + glib/goption.h | 4 ++-- + glib/gquark.h | 6 +++--- + glib/gstrfuncs.c | 16 +++++++-------- + glib/gstrfuncs.h | 18 ++++++++--------- + glib/gunicode.h | 2 +- + glib/gutf8.c | 2 +- + glib/gutils.c | 56 + +++++++++++++++++++++++++-------------------------- + glib/gutils.h | 38 +++++++++++++++++----------------- + gmodule/gmodule.c | 6 +++--- + gmodule/gmodule.h | 4 ++-- + gobject/gbinding.c | 4 ++-- + gobject/gbinding.h | 4 ++-- + gobject/gparam.c | 6 +++--- + gobject/gparam.h | 6 +++--- + gobject/gsignal.c | 2 +- + gobject/gsignal.h | 2 +- + gobject/gtype.c | 6 +++--- + gobject/gtype.h | 6 +++--- + gobject/gvaluetypes.c | 2 +- + gobject/gvaluetypes.h | 2 +- + 35 files changed, 122 insertions(+), 122 deletions(-) + +commit 0c1acc7e741a01bf37d4c5f7a97ba1661f25d36a +Author: Emmanuele Bassi +AuthorDate: Tue Mar 15 09:02:08 2011 +0000 +Commit: Emmanuele Bassi +CommitDate: Tue Mar 15 09:02:08 2011 +0000 + + Revert "Deprecate G_CONST_RETURN" + + This reverts commit a7fc7909dad9b88e8b2d1c6cde801e8888bdfc36. + + The deprecations was not discussed except on Bugzilla: + + https://bugzilla.gnome.org/show_bug.cgi?id=644611 + + docs/reference/glib/tmpl/macros.sgml | 5 ++--- + glib/gmacros.h | 2 -- + 2 files changed, 2 insertions(+), 5 deletions(-) + +commit d679a7659ff8c4948e7bdff5fb80f52dee8f6a09 +Author: Ryan Lortie +AuthorDate: Tue Mar 15 01:29:52 2011 -0400 +Commit: Ryan Lortie +CommitDate: Tue Mar 15 01:32:22 2011 -0400 + + GVariant parser: fix tuple type checking + + Robert Ancell discovered that the GVariant parser messes up pretty + badly + when the type of a tuple is specified and the tuple in the text being + parsed has a different number of elements (but otherwise matching + child + types). + + Check that we have the expected number of elements. + + Closes #644786. + + glib/gvariant-parser.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit a7fc7909dad9b88e8b2d1c6cde801e8888bdfc36 +Author: Ryan Lortie +AuthorDate: Sat Mar 12 22:04:53 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Mar 15 01:32:22 2011 -0400 + + Deprecate G_CONST_RETURN + + docs/reference/glib/tmpl/macros.sgml | 5 +++-- + glib/gmacros.h | 2 ++ + 2 files changed, 5 insertions(+), 2 deletions(-) + +commit 36741245cca56e979fe85e3de676fb3912058f2c +Author: Ryan Lortie +AuthorDate: Sat Mar 12 21:50:45 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Mar 15 01:32:22 2011 -0400 + + Remove all uses of G_CONST_RETURN + + Just use 'const'. + + glib/gchecksum.c | 2 +- + glib/gchecksum.h | 2 +- + glib/gconvert.c | 4 ++-- + glib/gconvert.h | 2 +- + glib/gdataset.c | 6 +++--- + glib/gdir.c | 4 ++-- + glib/gdir.h | 2 +- + glib/giochannel.c | 4 ++-- + glib/giochannel.h | 4 ++-- + glib/glibintl.h | 6 +++--- + glib/gmain.c | 2 +- + glib/gmain.h | 2 +- + glib/gmarkup.c | 4 ++-- + glib/gmarkup.h | 4 ++-- + glib/goption.c | 4 ++-- + glib/goption.h | 4 ++-- + glib/gquark.h | 6 +++--- + glib/gstrfuncs.c | 16 +++++++-------- + glib/gstrfuncs.h | 18 ++++++++--------- + glib/gunicode.h | 2 +- + glib/gutf8.c | 2 +- + glib/gutils.c | 56 + +++++++++++++++++++++++++-------------------------- + glib/gutils.h | 38 +++++++++++++++++----------------- + gmodule/gmodule.c | 6 +++--- + gmodule/gmodule.h | 4 ++-- + gobject/gbinding.c | 4 ++-- + gobject/gbinding.h | 4 ++-- + gobject/gparam.c | 6 +++--- + gobject/gparam.h | 6 +++--- + gobject/gsignal.c | 2 +- + gobject/gsignal.h | 2 +- + gobject/gtype.c | 6 +++--- + gobject/gtype.h | 6 +++--- + gobject/gvaluetypes.c | 2 +- + gobject/gvaluetypes.h | 2 +- + 35 files changed, 122 insertions(+), 122 deletions(-) + +commit 61b0e1c8d49b6b42d3b6f27f0663ead75967f81a +Author: Christian Persch +AuthorDate: Wed Mar 2 15:48:40 2011 +0100 +Commit: Ryan Lortie +CommitDate: Tue Mar 15 01:32:22 2011 -0400 + + Add G_SIGNAL_MUST_COLLECT + + In some cases, signal arguments have to be collected, even if there + are i + no signal handlers connected (e.g. for GVariant parameters, where + collection + consumes a floating variant). + + Based on a patch by Christian Persch. + + Bug #643624. + + gobject/gsignal.c | 10 ++++-- + gobject/gsignal.h | 7 ++-- + gobject/tests/Makefile.am | 1 + + gobject/tests/signals.c | 91 + +++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 104 insertions(+), 5 deletions(-) + +commit c95ff4de046d583fe2e8189522214069b708d32f +Author: Olivier Crête +AuthorDate: Mon Mar 14 14:54:46 2011 -0400 +Commit: Olivier Crête +CommitDate: Mon Mar 14 15:49:02 2011 -0400 + + GDBusProxy: Check if connection is NULL before unreffing + + If no connection can be established with the bus, it is possible that + the GDBusPRoxy will be finalized without having a connection object. + + gio/gdbusproxy.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 789b341eff1553232b61b2e3ce3c4c918bf661e3 +Author: Owen W. Taylor +AuthorDate: Sat Mar 12 20:48:31 2011 -0500 +Commit: Owen W. Taylor +CommitDate: Sat Mar 12 21:10:06 2011 -0500 + + Correct internal definition of C_() + + * Since the GLib translations are lazily initialized, we need an + internal wrapper for g_dpgettext() that does the initialization + in the same way as glib_gettext() + * We need to use the glib domain defined by GETTEXT_PACKAGE + rather than than the application's domain. + + https://bugzilla.gnome.org/show_bug.cgi?id=644607 + + glib/glibintl.h | 6 ++++-- + glib/gutils.c | 56 + +++++++++++++++++++++++++++++++++++++++++++------------- + 2 files changed, 47 insertions(+), 15 deletions(-) + +commit 88d23f02850faf4346a314e54abf4d71842dabed +Author: Gabor Kelemen +AuthorDate: Sun Mar 13 02:21:55 2011 +0100 +Commit: Gabor Kelemen +CommitDate: Sun Mar 13 02:22:08 2011 +0100 + + Updated Hungarian translation + + po/hu.po | 1158 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 647 insertions(+), 511 deletions(-) + +commit 89ca0f729665f812b142b9a107515c945237082a +Author: Emilio Pozuelo Monfort +AuthorDate: Sat Mar 12 10:08:52 2011 +0000 +Commit: Emilio Pozuelo Monfort +CommitDate: Sat Mar 12 15:51:44 2011 +0000 + + Document g_timeout_add_seconds first call latency + + And fix /timeout/rounding to not fail if the first call + happens after 2 seconds. + + https://bugzilla.gnome.org/show_bug.cgi?id=644552 + + glib/gmain.c | 6 +++++- + glib/tests/timeout.c | 8 +++++++- + 2 files changed, 12 insertions(+), 2 deletions(-) + +commit 1a2f1d3458e1e5ffe48e2a44fdf04c645b8b55c0 +Author: Duarte Loreto +AuthorDate: Sat Mar 12 01:09:49 2011 +0000 +Commit: Duarte Loreto +CommitDate: Sat Mar 12 01:09:49 2011 +0000 + + Updated Portuguese translation + + po/pt.po | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit c1a75ca783f602d3edf465c28918dac7ea57a1e7 +Author: Murray Cumming +AuthorDate: Fri Mar 11 09:59:09 2011 +0100 +Commit: Murray Cumming +CommitDate: Fri Mar 11 09:59:09 2011 +0100 + + g_file_info_get/set_attribute_string*(): Document the UTF-8ness. + + * gio/gfileattribute.c: (_g_file_attribute_value_get_string, + _g_file_attribute_value_set_string): These use + G_FILE_ATTRIBUTE_TYPE_STRING, which is documented as UTF-8, so + document these private functions as using UTF-8. + * gio/gfileinfo.c: (g_file_info_get_attribute_string, + g_file_info_set_attribute_string, and stringv versions): + Document that the strings are UTF-8 because the implementation uses + those private functions, that use UTF-8. + + This helps language bindings (such as glibmm) whose API + distinguishes between known and unknown encodings. + + gio/gfileattribute.c | 112 +++++----- + gio/gfileinfo.c | 574 + +++++++++++++++++++++++++-------------------------- + 2 files changed, 343 insertions(+), 343 deletions(-) + +commit 9505ad05eedefff2030bb20c587f168bb4dedeb7 +Author: Tor Lillqvist +AuthorDate: Fri Mar 11 10:19:42 2011 +0200 +Commit: Tor Lillqvist +CommitDate: Fri Mar 11 10:19:42 2011 +0200 + + Use g_usleep() for portability, bug #644465 + + glib/tests/timeout.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a6615ba859e8723888e108e2af390e5645dfa761 +Author: Matthias Clasen +AuthorDate: Thu Mar 10 23:27:49 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Mar 10 23:27:49 2011 -0500 + + Fix cleanup in g_markup_collect + + Patch by Matt Barnes, + https://bugzilla.gnome.org/show_bug.cgi?id=644428 + + glib/gmarkup.c | 35 ++++++++++++++++------------------- + 1 file changed, 16 insertions(+), 19 deletions(-) + +commit 949b7c34283f1efa08aa7d7d2266f6e2ef7d6fdb +Author: Matthias Clasen +AuthorDate: Thu Mar 10 23:25:22 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Mar 10 23:25:22 2011 -0500 + + Add a testcase for g_markup_collect cleanup + + Taken from https://bugzilla.gnome.org/show_bug.cgi?id=644428. + The test is currently failing. + + glib/tests/markup-collect.c | 45 + +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 45 insertions(+) + +commit fccaadcdabad22141a171f92a79efc97c9ba8ebc +Author: Andre Klapper +AuthorDate: Thu Mar 10 12:33:58 2011 +0100 +Commit: Andre Klapper +CommitDate: Thu Mar 10 12:33:58 2011 +0100 + + Add missing files to POTFILES.in + + po/POTFILES.in | 3 +++ + 1 file changed, 3 insertions(+) + +commit b2ebf0526ddc6ae46e4bcd5e0a5ab55376061013 +Author: Chun-wei Fan +AuthorDate: Thu Mar 10 12:40:57 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Mar 10 12:40:57 2011 +0800 + + Update config.h.win32.in for VS 2010 + + VS2010 ships with stdint.h by default, so update config.h.win32.in + to reflect that + + config.h.win32.in | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit b1813f7c9f63c2b3e50d1e0546511b7cd2b86c14 +Author: Michael Kotsarinis +AuthorDate: Thu Mar 10 01:36:54 2011 +0200 +Commit: Simos Xenitellis +CommitDate: Thu Mar 10 01:36:54 2011 +0200 + + l10n: Updated Greek translation for glib + + po/el.po | 661 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 342 insertions(+), 319 deletions(-) + +commit 37858f7f5ef842c606f99e4808a591c4773550c0 +Author: Martin Nordholts +AuthorDate: Tue Mar 8 07:36:15 2011 +0100 +Commit: Martin Nordholts +CommitDate: Tue Mar 8 19:13:57 2011 +0100 + + Check availability of linux/magic.h + + Check availability of linux/magic.h. It isn't available in Linux + versions before 2.6.19. + + configure.ac | 1 + + glib/gfileutils.c | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +commit fc75b2597dcbb44214ebf40d8c15b741299ddaab +Author: Matthias Clasen +AuthorDate: Sun Mar 6 23:08:46 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sun Mar 6 23:08:46 2011 -0500 + + Improve preconditions in action-related GApplication api + + https://bugzilla.gnome.org/show_bug.cgi?id=643780 + + gio/gapplication.c | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +commit 121ce56fe1741151faffb2c96c4ee7aa5352c314 +Author: Matthias Clasen +AuthorDate: Sun Mar 6 22:37:01 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sun Mar 6 22:38:17 2011 -0500 + + Go back to the old logic in set_expiration + + It was more complicated, but also more correct... + Also add a test to ensure that our rounding works as expected. + https://bugzilla.gnome.org/show_bug.cgi?id=643795 + + glib/gmain.c | 10 +++++++--- + glib/tests/timeout.c | 41 +++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 48 insertions(+), 3 deletions(-) + +commit d377367b2cd1bb102bce9b47c47b4a488af24238 +Author: Matthias Clasen +AuthorDate: Sun Feb 27 21:26:42 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sun Mar 6 22:38:17 2011 -0500 + + Forgotten file + + gio/tests/gapplication.c | 32 ++++++++++++++++++++++++++++++++ + 1 file changed, 32 insertions(+) + +commit 90ad3c9962e335bb135cae71f746e2922c312943 +Author: Murray Cumming +AuthorDate: Sat Mar 5 14:51:55 2011 +0100 +Commit: Murray Cumming +CommitDate: Sat Mar 5 14:51:55 2011 +0100 + + g_application_run(): Add (allow-none) introspection annotation. + + gio/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3aac417fefeec178fad390c028b8b1ebfc0f9192 +Author: Matthias Clasen +AuthorDate: Fri Mar 4 12:10:06 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Mar 4 12:10:06 2011 -0500 + + Some more details about GApplicationFlags + + gio/gioenums.h | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +commit 34ac69e688455adbde677ea96b2ec6456bbc5617 +Author: Matthias Clasen +AuthorDate: Fri Mar 4 12:03:15 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Mar 4 12:03:15 2011 -0500 + + Add more GApplication docs + + Add more details about ::command-line to the g_application_run docs. + + gio/gapplication.c | 11 ++++++++++- + 1 file changed, 10 insertions(+), 1 deletion(-) + +commit 91614bb5fe18a980283755522279767a22da7c5c +Author: Murray Cumming +AuthorDate: Mon Feb 28 11:15:13 2011 +0100 +Commit: Murray Cumming +CommitDate: Fri Mar 4 15:16:39 2011 +0100 + + GApplication: Check more before warning about a missing signal + handler. + + * gio/application.c (g_application_real_command_line): Check that the + default signal handler is not the current one before complaining, + because + it is not unusual for overloads to call the base class implementation + as + a matter of habit. + g_application_real_open() and g_application_real_activate() already + do this + extra check. + + gio/gapplication.c | 22 ++++++++++++++-------- + 1 file changed, 14 insertions(+), 8 deletions(-) + +commit 1485871ed5e8e9ce70b088cfedae4012032e5dca +Author: Matthias Clasen +AuthorDate: Fri Mar 4 01:53:56 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Mar 4 01:55:19 2011 -0500 + + GApplication: More documentation tweaks + + gio/gapplication.c | 22 +++++++++++++++++----- + gio/gapplicationcommandline.c | 36 +++++++++++++++++++++--------------- + 2 files changed, 38 insertions(+), 20 deletions(-) + +commit 54e474931e4013cf0088df479018d9b7b156e637 +Author: Matthias Clasen +AuthorDate: Fri Mar 4 01:36:51 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Mar 4 01:55:18 2011 -0500 + + Fix a typo + + gio/gapplicationcommandline.c | 9 ++++++ + gio/gioenums.h | 2 +- + gio/tests/gapplication-example-cmdline3.c | 54 + ++++++++++++++++++++++++------- + 3 files changed, 52 insertions(+), 13 deletions(-) + +commit d2a2fe96a3e9ddf5516bb138f365afec3e68a400 +Author: Ryan Lortie +AuthorDate: Fri Mar 4 00:57:51 2011 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 4 00:57:51 2011 -0500 + + GVariant docs cleanups + + Fix some gtk-doc warnings + + docs/reference/glib/gvariant-varargs.xml | 42 + ++++++++++++++++---------------- + glib/gvariant.c | 6 ++--- + glib/gvarianttype.c | 11 +++++---- + glib/gvarianttype.h | 2 +- + 4 files changed, 31 insertions(+), 30 deletions(-) + +commit be04e514c05082e338b2f53f6c28687f6aa6c982 +Author: Ryan Lortie +AuthorDate: Wed Mar 2 06:15:21 2011 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 4 00:45:14 2011 -0500 + + GVariant: add G_VARIANT_TYPE_VARDICT for a{sv} + + docs/reference/glib/glib-sections.txt | 1 + + glib/gvarianttype.h | 8 ++++++++ + 2 files changed, 9 insertions(+) + +commit 6dd692d8580655639ee7bd3ecd453f9d03009bab +Author: Matthias Clasen +AuthorDate: Fri Mar 4 00:27:23 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Mar 4 00:27:23 2011 -0500 + + Small doc correction + + We don't actually pass @argc to local_command_line(). + + gio/gapplication.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit 3c7203cf1ac0841e4613f40020f721f9c71ec0a4 +Author: Matthias Clasen +AuthorDate: Fri Mar 4 00:12:34 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Mar 4 00:12:34 2011 -0500 + + GApplication: Clarify docs for @argv + + Clearly state that @argv may be NULL. + https://bugzilla.gnome.org/show_bug.cgi?id=643649 + + gio/gapplication.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 1a6455b7858ea16f314949ceed9a128ad46267b2 +Author: Matthias Clasen +AuthorDate: Fri Mar 4 00:03:13 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Mar 4 00:03:13 2011 -0500 + + GApplication: Beef up the local_command_line() docs + + This adds some details, such as the meaning of @argc, @argv and + @status, + even though gtk-doc does not make it easy to document vfunc arguments. + Requested in + https://bugzilla.gnome.org/show_bug.cgi?id=643478 + + gio/gapplication.c | 20 ++++++++++++++++---- + 1 file changed, 16 insertions(+), 4 deletions(-) + +commit f05bce027e49ba3ba4dee042ed52837d0145a7bf +Author: Matthias Clasen +AuthorDate: Thu Mar 3 23:34:49 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Mar 3 23:34:49 2011 -0500 + + GApplication: Improve documentation + + This commit adds some details regarding platform data. + + gio/gapplication.c | 28 +++++++++++++++++++++++----- + gio/gapplication.h | 20 +++++++++++++------- + gio/gioenums.h | 12 ++++++++---- + 3 files changed, 44 insertions(+), 16 deletions(-) + +commit 321682871b6547c73d6b8df61643bcc73a0555f7 +Author: Matthias Clasen +AuthorDate: Thu Mar 3 22:40:48 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Mar 3 22:40:48 2011 -0500 + + Try harder to explain GApplicationCommandline + + Trying to answer some of the questions in + https://bugzilla.gnome.org/show_bug.cgi?id=643468 + + gio/gapplication.c | 9 +++-- + gio/gapplicationcommandline.c | 38 +++++++++++++++++- + gio/tests/Makefile.am | 4 ++ + gio/tests/gapplication-example-cmdline3.c | 65 + +++++++++++++++++++++++++++++++ + 4 files changed, 112 insertions(+), 4 deletions(-) + +commit 72016418d38e51f1fb4f60f4b37fa1a8e5c282fb +Author: Will Thompson +AuthorDate: Thu Mar 3 14:51:41 2011 +0000 +Commit: Will Thompson +CommitDate: Thu Mar 3 14:51:41 2011 +0000 + + g_value_array_remove(): clarify docstring formatting + + gobject/gvaluearray.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 0f59af82d5fa39551f221c461b89dca56a022576 +Author: Duarte Loreto +AuthorDate: Wed Mar 2 01:11:04 2011 +0000 +Commit: Duarte Loreto +CommitDate: Wed Mar 2 01:11:04 2011 +0000 + + Updated Portuguese translation + + po/pt.po | 1314 + +++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 777 insertions(+), 537 deletions(-) + +commit 084c3c43045e242724e2fbd9d485b4762dc8af48 +Author: Yaron Shahrabani +AuthorDate: Sun Feb 27 22:56:31 2011 +0200 +Commit: Yaron Shahrabani +CommitDate: Sun Feb 27 22:56:31 2011 +0200 + + Updated Hebrew translation. + + po/he.po | 119 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 63 insertions(+), 56 deletions(-) + +commit 2b964d890aae6efd04bd75477a5481aa8abeb873 +Author: Luca Ferretti +AuthorDate: Sun Feb 27 21:47:44 2011 +0100 +Commit: Luca Ferretti +CommitDate: Sun Feb 27 21:48:07 2011 +0100 + + Updated Italian translation + + po/it.po | 204 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 112 insertions(+), 92 deletions(-) + +commit c193b49eeebfd83e3bb39b89499df5c5c8016914 +Author: Changwoo Ryu +AuthorDate: Sun Feb 27 14:43:34 2011 +0900 +Commit: Changwoo Ryu +CommitDate: Sun Feb 27 14:43:34 2011 +0900 + + Updated Korean translation + + po/ko.po | 127 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 67 insertions(+), 60 deletions(-) + +commit 60e0dab3e6682c0e09fa81b8907636202394a073 +Author: Bruno Brouard +AuthorDate: Fri Feb 25 23:53:52 2011 +0100 +Commit: Bruno Brouard +CommitDate: Fri Feb 25 23:53:52 2011 +0100 + + Updated French translation + + po/fr.po | 1373 + ++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 789 insertions(+), 584 deletions(-) + +commit e3cff93408163009dbc2dd3b6d90cd620385fc28 +Author: Matthias Clasen +AuthorDate: Fri Feb 25 11:13:55 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 25 11:13:55 2011 -0500 + + GApplications: Tighten up application-id validity checks + + Also add tests for these conditions. + https://bugzilla.gnome.org/show_bug.cgi?id=643197 + + gio/gapplication.c | 32 ++++++++++++++++++++++++-------- + 1 file changed, 24 insertions(+), 8 deletions(-) + +commit c430ad0b1be1b32be442299e47a3b09f54d3d8de +Author: Matthias Clasen +AuthorDate: Fri Feb 25 10:41:29 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 25 10:41:29 2011 -0500 + + Add some tests for g_hash_table_lookup_extended + + glib/tests/hash.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 45 insertions(+) + +commit d2d756439f1c6e434a3a8b348c17d63b6a452e9e +Author: Matthias Clasen +AuthorDate: Fri Feb 25 10:40:39 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 25 10:40:39 2011 -0500 + + GHashTable: Clarify g_hash_table_lookup_extended docs + + Passing NULL as a key is only ok if your hash and equal functions + can deal with it. + https://bugzilla.gnome.org/show_bug.cgi?id=642944 + + glib/ghash.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit 52ef73ac8c40ea2a8ca80cf96d52a836bcaf76c2 +Author: Matthias Clasen +AuthorDate: Fri Feb 25 10:10:37 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 25 10:10:37 2011 -0500 + + GOptionContext: Warn about invalid arg/flag combinations + + This was proposed by Kjell Ahlstedt in bug 642825. + Also adding a few tests for this new behaviour. + + glib/goption.c | 25 +++++++-- + glib/tests/option-context.c | 132 + ++++++++++++++++++++++++++++++++++++++++++-- + 2 files changed, 147 insertions(+), 10 deletions(-) + +commit ee9e38ef6850ef1ce8da683425621898a35d5b5f +Author: Matthias Clasen +AuthorDate: Fri Feb 25 08:45:28 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 25 08:45:28 2011 -0500 + + Treat optional arguments the same for long and short options + + This was noticed in bug 642825 and the change was proposed + by Kjell Ahlstedt. + + glib/goption.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit c68c05a420e6c42af681e165393130a2a39ea7b9 +Author: Daniel Mustieles +AuthorDate: Thu Feb 24 20:36:04 2011 +0100 +Commit: Daniel Mustieles +CommitDate: Thu Feb 24 20:36:04 2011 +0100 + + Updated Spanish translation + + po/es.po | 118 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 63 insertions(+), 55 deletions(-) + +commit 701ac3cb3d7a603697570f085457af7e68d089fd +Author: Chun-wei Fan +AuthorDate: Thu Feb 24 12:38:51 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Thu Feb 24 12:38:51 2011 +0800 + + Fix the VS2010 project generation for GLib + + The scripts accently pick up gcc-only source files... this fixes that. + + glib/Makefile.am | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 74d4fca53accff301058e8d4798d0412d9eeeca3 +Author: Piotr Drąg +AuthorDate: Wed Feb 23 22:03:34 2011 +0100 +Commit: Piotr Drąg +CommitDate: Wed Feb 23 22:03:34 2011 +0100 + + Updated Polish translation + + po/pl.po | 115 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 61 insertions(+), 54 deletions(-) + +commit abfef39da9a11f59051dfa23a50bc374c0b8ad6e +Author: Chun-wei Fan +AuthorDate: Wed Feb 23 14:22:36 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Feb 23 14:22:36 2011 +0800 + + Remove uneeded item form VS10 folder + + There is no install.vcxproj.filters...oops + + build/win32/vs10/Makefile.am | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 1c764f41ccb8e0cf887de827af3bc034aa6cfc28 +Author: Alexander Shopov +AuthorDate: Wed Feb 23 08:02:23 2011 +0200 +Commit: Alexander Shopov +CommitDate: Wed Feb 23 08:02:23 2011 +0200 + + Updated Bulgarian translation + + po/bg.po | 85 + +++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 46 insertions(+), 39 deletions(-) + +commit 766d70729b8671a3ac7b2139b635ac5555d858fa +Author: Matthias Clasen +AuthorDate: Wed Feb 23 00:13:39 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Feb 23 00:18:37 2011 -0500 + + Allow to list keys in all schemas + + Make the schema argument to gsettings list-recursively optional. + This allows to search for not exactly known keys by going + + gsettings list-recursively | grep 'font' + + docs/reference/gio/gsettings.xml | 10 +++++--- + gio/gsettings-tool.c | 54 + ++++++++++++++++++++++++++-------------- + 2 files changed, 41 insertions(+), 23 deletions(-) + +commit 51dd7c5e4a1cf10177725a8c471731f0c4947159 +Author: Cosimo Cecchi +AuthorDate: Tue Feb 22 22:02:05 2011 -0500 +Commit: Cosimo Cecchi +CommitDate: Tue Feb 22 22:02:05 2011 -0500 + + application: fix a typo in the docs annotation + + gio/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fdfb09a79397589b3b86c059e97b4f0ce8d4df26 +Author: Andreas Rottmann +AuthorDate: Tue Feb 22 15:12:30 2011 +0100 +Commit: Andreas Rottmann +CommitDate: Tue Feb 22 15:12:30 2011 +0100 + + Bug 638185 - GIOCondition should be annotated as "flags" + + Add a gtk-doc annotation to GIOCondition marking it as a flags type. + + glib/giochannel.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cd23ae7134bd25500272bd3ec24c3b39502cfc3d +Author: Chun-wei Fan +AuthorDate: Tue Feb 22 20:08:36 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Feb 22 20:08:36 2011 +0800 + + Visual C++ 2010 Project Files + + These are the actual GLib VS2010 project files (*.vcxproj, + *.vcxproj.filters) and property sheet file (*.props) that are used + to compile the GLib, GModule, GObject, GThread, GIO DLLs, along with + the gspawn-win32-helper* programs, glib-genmarshal utility and + testglib test program. A readme.txt file is also enclosed for + references for building GLib under VS2010. + + Note that the project files for GLib, GIO and GObject are templates + that makes use of the autotools items of my last commit so that + maintenance + of those files are simplified as new source files are added to + these rather + frequently. + + Suggestions are welcome for these-please let me know via BugZilla. + + Thank you! + + build/win32/vs10/Makefile.am | 30 ++ + build/win32/vs10/README.txt | 52 ++ + build/win32/vs10/gio.vcxproj.filtersin | 51 ++ + build/win32/vs10/gio.vcxprojin | 223 +++++++++ + build/win32/vs10/glib-genmarshal.vcxproj | 170 +++++++ + build/win32/vs10/glib-genmarshal.vcxproj.filters | 22 + + build/win32/vs10/glib.props | 538 + +++++++++++++++++++++ + build/win32/vs10/glib.sln | 199 ++++++++ + build/win32/vs10/glib.vcxproj.filtersin | 114 +++++ + build/win32/vs10/glib.vcxprojin | 476 + ++++++++++++++++++ + build/win32/vs10/gmodule.vcxproj | 201 ++++++++ + build/win32/vs10/gmodule.vcxproj.filters | 32 ++ + build/win32/vs10/gobject.vcxproj.filtersin | 30 ++ + build/win32/vs10/gobject.vcxprojin | 207 ++++++++ + .../win32/vs10/gspawn-win32-helper-console.vcxproj | 172 +++++++ + .../gspawn-win32-helper-console.vcxproj.filters | 22 + + build/win32/vs10/gspawn-win32-helper.vcxproj | 172 +++++++ + .../win32/vs10/gspawn-win32-helper.vcxproj.filters | 22 + + build/win32/vs10/gthread.vcxproj | 188 +++++++ + build/win32/vs10/gthread.vcxproj.filters | 32 ++ + build/win32/vs10/install.vcxproj | 137 ++++++ + build/win32/vs10/testglib.vcxproj | 170 +++++++ + build/win32/vs10/testglib.vcxproj.filters | 22 + + 23 files changed, 3282 insertions(+) + +commit 7b118b0c4121a6ae5b5b0adb1e2c45d7f5b941f5 +Author: Chun-wei Fan +AuthorDate: Tue Feb 22 19:58:18 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Feb 22 19:58:18 2011 +0800 + + Visual C++ 2010 Project Files: autotools files + + These are the updates to the autotools files to + ensure the expansion of the GIO, GLib and GObject + project files (*.vcxproj, *.vcxproj.filters) and to + enable the distribution of the VS2010 project files + + The actual VS2010 project files will follow shortly + + build/win32/Makefile.am | 3 ++- + configure.ac | 1 + + gio/Makefile.am | 24 +++++++++++++++++++++++- + glib/Makefile.am | 23 ++++++++++++++++++++++- + gobject/Makefile.am | 23 ++++++++++++++++++++++- + 5 files changed, 70 insertions(+), 4 deletions(-) + +commit aa2ed1dbfbe66c2f4e3165559b1f707ba8b0aada +Author: Bruce Cowan +AuthorDate: Sun Feb 20 16:47:56 2011 +0000 +Commit: Bruce Cowan +CommitDate: Sun Feb 20 16:48:48 2011 +0000 + + Updated British English translation + + po/en_GB.po | 1167 + ++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 675 insertions(+), 492 deletions(-) + +commit f909469e31caacd9ec26569cc377dcc367e1f571 +Author: Vincent Untz +AuthorDate: Sun Feb 20 10:41:17 2011 +0100 +Commit: Vincent Untz +CommitDate: Sun Feb 20 16:06:40 2011 +0100 + + appinfo: Do not override system default handler with less specific one + + We were considering explicitly configured defaults for parent types + after we already got results for the specific type we're interested + in. + + This resulted in the explicit default for text/plain to override all + system defaults for subtypes of text/plain, for example. The explicit + default should not apply to subtypes that have a system default. + + https://bugzilla.gnome.org/show_bug.cgi?id=642797 + + gio/gdesktopappinfo.c | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +commit 1158f9c171682e2ce30c1e790fe809dbb9926277 +Author: Tor Lillqvist +AuthorDate: Sun Feb 20 01:23:48 2011 +0200 +Commit: Tor Lillqvist +CommitDate: Sun Feb 20 01:30:51 2011 +0200 + + Export _glib_get_locale_dir() as it is now used in gio, too + + gio/gdbus-tool.c | 1 + + gio/glib-compile-schemas.c | 3 ++- + glib/glib.symbols | 3 +++ + glib/gutils.c | 2 +- + 4 files changed, 7 insertions(+), 2 deletions(-) + +commit 73af5ab4cf14d33495ba098af3b53f7d7f257256 +Author: Matthias Clasen +AuthorDate: Sat Feb 19 16:27:51 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 19 16:27:51 2011 -0500 + + Be more forgiving when parsing introspection xml + + Accept (and silently ignore) version attributes on + and elements - these occur in the wild, and ignoring + them does not cost us anything. + + gio/gdbusintrospection.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 2c0a8ff4dcd581096dad2a6ced2409b0cdf708a6 +Author: Matthias Clasen +AuthorDate: Fri Feb 18 23:46:09 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 18 23:46:09 2011 -0500 + + Add a testcase for bug 637738 + + gobject/tests/dynamictests.c | 127 + +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 127 insertions(+) + +commit 9dd1f75a414637e8fed50eae0577e33d6b4aab8f +Author: Matthias Clasen +AuthorDate: Fri Feb 18 22:42:24 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 18 22:42:24 2011 -0500 + + Document G_VALUE_NOCOPY_CONTENTS + + https://bugzilla.gnome.org/show_bug.cgi?id=624943 + + gobject/gtype.h | 2 +- + gobject/gvalue.h | 10 +++++++++- + 2 files changed, 10 insertions(+), 2 deletions(-) + +commit 2a1eed20b40c2ad4211ed0adb0d17983e5dcaec6 +Author: Matthias Clasen +AuthorDate: Fri Feb 18 22:35:49 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Feb 18 22:35:49 2011 -0500 + + Expand the documentation of g_type_get_qdata() + + https://bugzilla.gnome.org/show_bug.cgi?id=613269 + + gobject/gtype.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit bb4d6fd1b14c7152cb0bf163f761b7d148b30b80 +Author: Matthias Clasen +AuthorDate: Thu Feb 17 23:30:45 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Feb 17 23:30:45 2011 -0500 + + Updates + + NEWS | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +commit 82388ef3cdd4d1df664a82ab9f5c8c8a9ec6dfa0 +Author: Matthias Clasen +AuthorDate: Thu Feb 17 23:30:29 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Feb 17 23:30:29 2011 -0500 + + Bump micro to .2 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 237df47c5f6f82021faef495afcbd2a8ad932a3c +Author: Lin Ma +AuthorDate: Thu Feb 17 14:57:37 2011 +0800 +Commit: Lin Ma +CommitDate: Thu Feb 17 15:07:52 2011 +0800 + + Fixed bugster 7007407. Do not clear stat info until a node is really + deleted. + + gio/fen/fen-helper.c | 3 +-- + gio/fen/fen-kernel.c | 3 +-- + gio/fen/fen-node.c | 7 +++---- + 3 files changed, 5 insertions(+), 8 deletions(-) + +commit 48dbfb425d684e00620ccd1fc8fe683e69d3f40a +Author: Alexander Shopov +AuthorDate: Wed Feb 16 22:28:00 2011 +0200 +Commit: Alexander Shopov +CommitDate: Wed Feb 16 22:28:00 2011 +0200 + + Updated Bulgarian translation + + po/bg.po | 228 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 114 insertions(+), 114 deletions(-) + +commit a7faf0b16ee7cb32e8e0206a5fa5b10069a79e89 +Author: Colin Walters +AuthorDate: Wed Feb 16 13:49:20 2011 -0500 +Commit: Colin Walters +CommitDate: Wed Feb 16 13:49:20 2011 -0500 + + gdesktopappinfo: Handle g_get_prgname() being NULL + + Reported-By: Sebastien Bacher + + https://bugzilla.gnome.org/show_bug.cgi?id=642490 + + gio/gdesktopappinfo.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 4cda703d8e925fc34f9fc3303f96ed20765a816d +Author: Matthias Clasen +AuthorDate: Wed Feb 16 01:28:27 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Feb 16 01:28:27 2011 -0500 + + Use glibc qsort_r() for g_qsort_with_data() + + No point in using an outdated copy that claims to + 'work best on a Sun 4/260' when we can just wrap qsort_r... + + configure.ac | 40 +++++++++++++++++++++++++++++++++ + glib/gqsort.c | 40 +++++++++++++++++++++++---------- + glib/tests/Makefile.am | 3 +++ + glib/tests/sort.c | 60 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 131 insertions(+), 12 deletions(-) + +commit 6cd08472b20004d6ef06c6063fed817fdb9bc1f5 +Author: Stef Walter +AuthorDate: Tue Feb 15 19:54:53 2011 +0100 +Commit: Matthias Clasen +CommitDate: Wed Feb 16 00:21:27 2011 -0500 + + Better documentation for g_value_dup_object(). + + State that NULL is returned when value is NULL. + + gobject/gobject.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 59cbb3a8a3171f59035b4cabebdc63f8832fffed +Author: Damien Lespiau +AuthorDate: Thu Sep 30 17:27:19 2010 +0100 +Commit: Matthias Clasen +CommitDate: Tue Feb 15 21:55:38 2011 -0500 + + gtimezone: Rename shadowing variable 'time' to 'time_' + + glib/gtimezone.c | 78 + ++++++++++++++++++++++++++++---------------------------- + 1 file changed, 39 insertions(+), 39 deletions(-) + +commit 5df049706ff10cded918b31243ee33f7b7a4e64e +Author: Matthias Clasen +AuthorDate: Tue Feb 15 19:50:55 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 15 19:50:55 2011 -0500 + + Don't report standard interfaces more than once + + If they have a custom implementation, don't add the canned + introspection XML, just rely on the generated XML. Fixes + https://bugzilla.gnome.org/show_bug.cgi?id=642042 + + gio/gdbusconnection.c | 40 +++++++++++++++++++++++++++++----------- + 1 file changed, 29 insertions(+), 11 deletions(-) + +commit 6f87ecc14e5286773b8b34eee443f5b61c3b03fd +Author: Matthias Clasen +AuthorDate: Tue Feb 15 19:49:24 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 15 19:49:24 2011 -0500 + + Add a (currently failing) testcase + + This testcase check that we don't report the standard interfaces + more than one in the introspection XML, see + https://bugzilla.gnome.org/show_bug.cgi?id=642042 + + gio/tests/gdbus-export.c | 140 + +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 140 insertions(+) + +commit 470a8dfa1ceee28929bf34662732287f2831e71c +Author: Daniel Mustieles +AuthorDate: Tue Feb 15 21:32:56 2011 +0100 +Commit: Daniel Mustieles +CommitDate: Tue Feb 15 21:32:56 2011 +0100 + + Updated Spanish translation + + po/es.po | 338 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 160 insertions(+), 178 deletions(-) + +commit 25b2e3cbffacf8ec733e199489d5a640d390feff +Author: Luca Ferretti +AuthorDate: Tue Feb 15 13:02:30 2011 +0100 +Commit: Luca Ferretti +CommitDate: Tue Feb 15 13:02:30 2011 +0100 + + Updated Italian translation + + po/it.po | 788 + ++++++++++++++++++++++++++------------------------------------- + 1 file changed, 326 insertions(+), 462 deletions(-) + +commit f9ad7baf3122445784c1766b0475ee6519a4ad24 +Author: Matthias Clasen +AuthorDate: Tue Feb 15 02:27:54 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 15 02:29:15 2011 -0500 + + Fix memory leaks in the gdbus introspection parser + + We were getting our length zero, yet NULL-terminated arrays in + a twist in some places. Stop passing around ignored length arguments + at the same time. + https://bugzilla.gnome.org/show_bug.cgi?id=635099 + + gio/gdbusintrospection.c | 178 + +++++++++++++++------------------------- + gio/tests/gdbus-introspection.c | 3 +- + 2 files changed, 68 insertions(+), 113 deletions(-) + +commit b21b3a01c776275197f0d31538c2c36ace8860ea +Author: Matthias Clasen +AuthorDate: Tue Feb 15 00:02:42 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 15 00:03:19 2011 -0500 + + Fix bug base in array-test + + glib/tests/array-test.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a46885242b3566a7f6afa4ca5cf5d3ffcf3d977d +Author: Matthias Clasen +AuthorDate: Tue Feb 15 00:02:13 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 15 00:03:19 2011 -0500 + + Add a testcase for bug 640489 + + glib/tests/regex.c | 27 +++++++++++++++++++++++++++ + 1 file changed, 27 insertions(+) + +commit c2fbef4125977d0c1aa1a9859491e694c9c71b05 +Author: Ryan Lortie +AuthorDate: Mon Feb 14 23:21:14 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 14 23:23:33 2011 -0500 + + Bug 642052 - g_timeout_add(_seconds) overflow + + Fix integer overflow error. + + glib/gmain.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 10154d21f012ae4fc3d94cbdbb12ed32df4837ce +Author: Ryan Lortie +AuthorDate: Mon Feb 14 23:20:38 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 14 23:23:33 2011 -0500 + + Bug 642052: add currently-broken test case + + The test case fails for now. It will be fixed by the next commit. + + glib/tests/Makefile.am | 4 ++++ + glib/tests/timeout.c | 53 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 57 insertions(+) + +commit f1a88e7e4283cfa706382a06a0cec46e33f48ed1 +Author: Matthias Clasen +AuthorDate: Mon Feb 14 19:15:41 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 14 19:20:44 2011 -0500 + + More GValue conversion tests + + gobject/tests/param.c | 31 ++++++++++++++++++++++++++++++- + 1 file changed, 30 insertions(+), 1 deletion(-) + +commit cfe8ec429ac48302d631bea18ffc37a1ed69095b +Author: Matthias Clasen +AuthorDate: Mon Feb 14 19:14:44 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 14 19:20:44 2011 -0500 + + Vary the order of unreffing dest and src + + For slightly better test coverage. + + gobject/tests/binding.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b2919e558bfb49b519eac59b657f2c7efb33241c +Author: Matthias Clasen +AuthorDate: Mon Feb 14 19:13:09 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 14 19:20:44 2011 -0500 + + Add schema name in error message + + Why not be helpful if it doesn't cost anything... + + gio/gsettingsschema.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit a6f0249d589292ef9eabd31a7f174b327ce4d3ce +Author: Yaron Shahrabani +AuthorDate: Mon Feb 14 07:53:06 2011 +0200 +Commit: Yaron Shahrabani +CommitDate: Mon Feb 14 07:53:06 2011 +0200 + + Updated Hebrew translation + + po/he.po | 208 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 104 insertions(+), 104 deletions(-) + +commit 309f5f978bc1378449fea2a81f4d47e749ae7ceb +Author: Matthias Clasen +AuthorDate: Sun Feb 13 23:47:42 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 13 23:49:19 2011 -0500 + + Improve test coverage + + Various test additions, mainly in GObject + + gio/tests/gapplication.c | 32 ++++ + gio/tests/gsettings.c | 4 +- + glib/tests/Makefile.am | 9 +- + glib/tests/dataset.c | 187 ++++++++++++++++++++++ + glib/tests/empty | 0 + glib/tests/gdatetime.c | 26 ++++ + glib/tests/mappedfile.c | 73 +++++++++ + glib/tests/utils.c | 53 +++++++ + gobject/tests/Makefile.am | 12 +- + gobject/tests/binding.c | 52 ++++++- + gobject/tests/boxed.c | 386 + ++++++++++++++++++++++++++++++++++++++++++++++ + gobject/tests/enums.c | 113 ++++++++++++++ + gobject/tests/param.c | 223 ++++++++++++++++++++++++++ + gobject/tests/reference.c | 213 +++++++++++++++++++++++++ + 14 files changed, 1376 insertions(+), 7 deletions(-) + +commit 1e48bff207a85564297c2e7d15f72aba00048213 +Author: Matthias Clasen +AuthorDate: Sun Feb 13 17:37:06 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 13 23:49:19 2011 -0500 + + Cosmetic rearrangement + + gobject/gboxed.h | 174 + +++++++++++++++++++++++++++++-------------------------- + 1 file changed, 93 insertions(+), 81 deletions(-) + +commit 498508852745d0e3b743b065d78ba560d753d24e +Author: Matthias Clasen +AuthorDate: Sat Feb 12 22:23:04 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 13 23:49:19 2011 -0500 + + Fix the tm.tm_gmtoff check + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 147139d968ff052a516e8b2b0fb9bb8474a5986a +Author: Matthias Clasen +AuthorDate: Sat Feb 12 21:08:57 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 13 23:49:18 2011 -0500 + + Use g_assert_no_error + + The option-context test had its own version. + + glib/tests/option-context.c | 72 + +++++++++++++++++++-------------------------- + 1 file changed, 31 insertions(+), 41 deletions(-) + +commit cf3ad6e293490a910f90637ce6cc93a02cfc8f61 +Author: Fran Diéguez +AuthorDate: Sun Feb 13 13:58:18 2011 +0100 +Commit: Fran Diéguez +CommitDate: Sun Feb 13 13:58:18 2011 +0100 + + Updated Galician translations + + po/gl.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d8a1eac483f7a6c0a600b4784aff233c74b82b51 +Author: Fran Diéguez +AuthorDate: Sun Feb 13 13:55:47 2011 +0100 +Commit: Fran Diéguez +CommitDate: Sun Feb 13 13:55:47 2011 +0100 + + Updated Galician translations + + po/gl.po | 120 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 60 insertions(+), 60 deletions(-) + +commit 18c6e46fd1bc91d32d0d994235382d6e3610168d +Author: Piotr Drąg +AuthorDate: Sun Feb 13 01:18:41 2011 +0100 +Commit: Piotr Drąg +CommitDate: Sun Feb 13 01:18:41 2011 +0100 + + Updated Polish translation + + po/pl.po | 91 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 45 insertions(+), 46 deletions(-) + +commit 61fec7e821c2deed09b6b77c2b92e185814a9380 +Author: Changwoo Ryu +AuthorDate: Sun Feb 13 07:02:24 2011 +0900 +Commit: Changwoo Ryu +CommitDate: Sun Feb 13 07:02:24 2011 +0900 + + Update Korean translation + + po/ko.po | 100 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 51 insertions(+), 49 deletions(-) + +commit ef6db8f94b6c7a4a1c922631e3c5cfec32cf1353 +Author: Matthias Clasen +AuthorDate: Sat Feb 12 12:43:15 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 12 12:45:25 2011 -0500 + + Fix a few string mismatches in the Italian translations + + Noticed these while testing gsettings translations. + + po/it.po | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit c3334490c7b97ac561f7c7f1be407d17fbbb22ba +Author: Matthias Clasen +AuthorDate: Sat Feb 12 12:42:18 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 12 12:45:25 2011 -0500 + + Fix some problems with message handling + + g_printerr() doesn't append a newline, so we have to consistently + do it everywhere. Also, we cannot call gettext on "", ever. + + gio/gsettings-tool.c | 19 ++++++++++++++++--- + 1 file changed, 16 insertions(+), 3 deletions(-) + +commit a536a1f2d751c89296f63f9863f3df90d8d2dfea +Author: Matthias Clasen +AuthorDate: Sat Feb 12 12:30:35 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 12 12:45:25 2011 -0500 + + Complete the translation setup for glib-compile-schemas + + gio/glib-compile-schemas.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 7efc12e0d55e582cdb689e40dbe3500c06f35196 +Author: Matthias Clasen +AuthorDate: Sat Feb 12 12:26:26 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 12 12:45:25 2011 -0500 + + Set up message translation for gdbus + + This was only halfway done before and not working. + + gio/gdbus-tool.c | 24 +++++++++++++++++++++--- + 1 file changed, 21 insertions(+), 3 deletions(-) + +commit deab10645794e8ca8fce544729710dac4a74bc03 +Author: Matthias Clasen +AuthorDate: Sat Feb 12 12:09:39 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Feb 12 12:45:25 2011 -0500 + + Docs: Mention gettext setup requirements in i18n section + + docs/reference/glib/tmpl/i18n.sgml | 17 +++++++++++++++-- + 1 file changed, 15 insertions(+), 2 deletions(-) + +commit 562f29afdce05d63d98c8952d1d91d2f379634dc +Author: Benjamin Otte +AuthorDate: Sat Feb 12 18:05:54 2011 +0100 +Commit: Benjamin Otte +CommitDate: Sat Feb 12 18:05:54 2011 +0100 + + doc: Fix typo in previous commit + + Yuck. I blame it on the weekend. + + glib/gdatetime.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 17eea8fa60915c5711a99eebe5025eadb04c3f3f +Author: Benjamin Otte +AuthorDate: Sat Feb 12 17:56:34 2011 +0100 +Commit: Benjamin Otte +CommitDate: Sat Feb 12 17:56:34 2011 +0100 + + docs: Fix return value for g_datetime_compare() + + Previous code confused dt1 and dt2. The new formulation is stolen from + man strcmp() and g_strcmp0(). + + glib/gdatetime.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit dfeb02ee86c02a2bb665b8b8457003d56baa474d +Author: Will Thompson +AuthorDate: Fri Feb 11 19:09:48 2011 +0000 +Commit: Will Thompson +CommitDate: Fri Feb 11 19:10:18 2011 +0000 + + GVariant: titlecase ‘Unicode’ in text format docs + + docs/reference/glib/gvariant-text.xml | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit c3fe071813447f837eb7a8e73906753db00bc98b +Author: Will Thompson +AuthorDate: Fri Feb 11 19:07:45 2011 +0000 +Commit: Will Thompson +CommitDate: Fri Feb 11 19:07:45 2011 +0000 + + GVariant: Correct uint32/64 thinko in text format docs + + docs/reference/glib/gvariant-text.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ea4e3ea1cb7d3264cb4c84d0b257e886a2be88e8 +Author: Ryan Lortie +AuthorDate: Fri Feb 11 10:27:44 2011 -0500 +Commit: Ryan Lortie +CommitDate: Fri Feb 11 13:53:10 2011 -0500 + + GVariant: doc the format of g_variant_parse/print + + docs/reference/glib/Makefile.am | 3 +- + docs/reference/glib/glib-docs.sgml | 1 + + docs/reference/glib/gvariant-text.xml | 615 + ++++++++++++++++++++++++++++++++++ + glib/gvariant-parser.c | 2 + + glib/gvariant.c | 2 + + 5 files changed, 622 insertions(+), 1 deletion(-) + +commit 2409c69d5b484c50b8f01ae742c339f4e511df5f +Author: Ryan Lortie +AuthorDate: Fri Feb 11 10:27:44 2011 -0500 +Commit: Ryan Lortie +CommitDate: Fri Feb 11 10:28:55 2011 -0500 + + Branch away from stable, bump to 2.29.0 + + This is now the unstable branch. + + Stable release is on the glib-2-28 branch. + + configure.ac | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +commit c2d98c56092db1f7bcf79cbbbb494abfd1255b52 +Author: Will Thompson +AuthorDate: Fri Feb 11 15:18:02 2011 +0000 +Commit: Will Thompson +CommitDate: Fri Feb 11 15:21:12 2011 +0000 + + GObject: correct documentation typos + + gobject/gobject.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit b1d02f9323d4eb157dc99e0b7a79d06a2e510500 +Author: Ryan Lortie +AuthorDate: Fri Feb 11 10:14:29 2011 -0500 +Commit: Ryan Lortie +CommitDate: Fri Feb 11 10:14:29 2011 -0500 + + GVariant: support NULL for empty arrays in varargs + + g_variant_new("as", NULL); now gives an empty array of strings, for + example. + + This was documented as working already, but was never actually + implemented (due to the fact that it muddies the water when + considering + maybe types). It's being implemented now because its convenience to + programmers exceeds any damage done to the conceptual purity of + the API. + + docs/reference/glib/gvariant-varargs.xml | 5 +++ + glib/gvariant.c | 52 + +++++++++++++++++++++----------- + glib/tests/gvariant.c | 16 ++++++++++ + 3 files changed, 55 insertions(+), 18 deletions(-) + +commit d25dca2d74cddd66644890760f4d56e619528e14 +Author: Runa Bhattacharjee +AuthorDate: Fri Feb 11 19:01:05 2011 +0530 +Commit: Runa Bhattacharjee +CommitDate: Fri Feb 11 19:01:05 2011 +0530 + + Updated Bengali India Translation + + po/bn_IN.po | 2276 + ++++++++++++++++++++++++++++++++++++++++------------------- + 1 file changed, 1536 insertions(+), 740 deletions(-) + +commit 4196dfbc4a764a2342c1107bcd9339210c0ee332 +Author: Colin Walters +AuthorDate: Thu Feb 10 23:42:34 2011 -0500 +Commit: Colin Walters +CommitDate: Thu Feb 10 23:42:34 2011 -0500 + + gsettings: Minor typo in previous commit + + gio/gsettings.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 0f8d1933ad59d83bebe7e4f9d115fec71f915688 +Author: Ryan Lortie +AuthorDate: Wed Feb 9 11:55:35 2011 -0500 +Commit: Ryan Lortie +CommitDate: Wed Feb 9 11:55:35 2011 -0500 + + GSettings: add paragraph with performance notes + + summary: reads are very fast. writes are fast for you, but expensive + for the system, so don't do them except in response to explicit user + action. + + gio/gsettings.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit 214d1bdd20c940be1e1cd38e071a3898c19aa3f7 +Author: Matthias Clasen +AuthorDate: Tue Feb 8 13:21:37 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 8 13:21:37 2011 -0500 + + Bump version + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 939d5131dd7c0fad6204aa976139a3bb730e1a07 +Author: Piotr Drąg +AuthorDate: Tue Feb 8 18:22:44 2011 +0100 +Commit: Tomasz Dominikowski +CommitDate: Tue Feb 8 18:22:44 2011 +0100 + + Updated Polish translation + + po/pl.po | 2170 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 1203 insertions(+), 967 deletions(-) + +commit a6caaebea7261601fb4f9f57bb8aeadf38e5e499 +Author: Matthias Clasen +AuthorDate: Tue Feb 8 10:05:00 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 8 10:05:00 2011 -0500 + + Document new API + + gio/gmemorysettingsbackend.c | 13 +++++++++++++ + gio/gnullsettingsbackend.c | 13 +++++++++++++ + 2 files changed, 26 insertions(+) + +commit 78dcafc5cb2b8c05fed719ed1add0849f9938595 +Author: Matthias Clasen +AuthorDate: Tue Feb 8 10:04:36 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 8 10:04:36 2011 -0500 + + Fix some parameter mismatches in GVariant docs + + glib/gvariant.c | 2 +- + glib/gvariant.h | 20 ++++++++++---------- + 2 files changed, 11 insertions(+), 11 deletions(-) + +commit 4368a07e02b7008b3ab7c56b7637f7bbec505ea5 +Author: Matthias Clasen +AuthorDate: Tue Feb 8 07:41:49 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 8 07:41:49 2011 -0500 + + Avoid more compiler warnings + + glib/giochannel.c | 12 ++++++------ + glib/gmessages.c | 2 +- + 2 files changed, 7 insertions(+), 7 deletions(-) + +commit 8d572f5d22c07580936067e91e669220cfc801cc +Author: Matthias Clasen +AuthorDate: Tue Feb 8 07:35:54 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 8 07:35:54 2011 -0500 + + g_date_time_format: drop an unused variable + + glib/gdatetime.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit ab2112a77b16cb36785088bb5975ef62f075102a +Author: Matthias Clasen +AuthorDate: Tue Feb 8 07:33:02 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 8 07:33:02 2011 -0500 + + Add release note about GApplication + + README.in | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit f93d2f1b0898d6f7fde696ab42a86c63a71ec4d5 +Author: Matthias Clasen +AuthorDate: Tue Feb 8 00:00:08 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 8 00:00:08 2011 -0500 + + Update NEWS + + NEWS | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +commit 7839c46897d730d9db5eff2c7a7a9f18876370df +Author: Matthias Clasen +AuthorDate: Mon Feb 7 23:53:29 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 7 23:53:29 2011 -0500 + + Bump version to 2.28.0 + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 126beeee3338c94de9d01b9e99b99e8413282045 +Author: Matthias Clasen +AuthorDate: Mon Feb 7 23:46:02 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 7 23:46:02 2011 -0500 + + Fix a typo + + gobject/glib-mkenums.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d43b2d52b4129bf3eb36af6083063cba8f40cbed +Author: Michal Hruby +AuthorDate: Mon Feb 7 21:25:33 2011 +0100 +Commit: Matthias Clasen +CommitDate: Mon Feb 7 23:39:07 2011 -0500 + + Add more data about origin application to the "Launched" signal. + + This will help applications such as zeitgeist's datahub to collect + more complete information about application launches, as the "actor" + of a launch is important for zeitgeist's magic to work properly. + + gio/gdesktopappinfo.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit d6954c785d635be875b896ac9f4812e400b39455 +Author: Colin Walters +AuthorDate: Fri Feb 4 15:37:51 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 7 23:37:14 2011 -0500 + + gdesktopappinfo: Asynchronously flush after sending notification + + If we were the initial connection owner, unref will destroy the + connection immediately, and we may lose messages. Asynchronously + flush to avoid that. + + https://bugzilla.gnome.org/show_bug.cgi?id=641411 + + gio/gdesktopappinfo.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit 626f197ee328c9b8ce11439e99b66fef14c5f9da +Author: Matthias Clasen +AuthorDate: Mon Feb 7 23:35:21 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 7 23:35:21 2011 -0500 + + Clarify GInitable docs + + Mention explicitly that the object is unrefed on error. + Pointed out by Philip Van Hoof, + https://bugzilla.gnome.org/show_bug.cgi?id=641363 + + gio/ginitable.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 761fc9a8e722baf6175eb33a6ffb7deacc504c20 +Author: Matthias Clasen +AuthorDate: Mon Feb 7 23:30:56 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 7 23:30:56 2011 -0500 + + Append .exe to glib-compile-schemas in .pc file + + This makes the binary name correct on Windows. + Pointed out by David Schleef, + https://bugzilla.gnome.org/show_bug.cgi?id=641572 + + gio-2.0.pc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fb2d30b9ffc3d698cc38a5c16d1a136f1439dbb0 +Author: Matthias Clasen +AuthorDate: Mon Feb 7 23:28:26 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 7 23:28:26 2011 -0500 + + Change the id of the gsettings section + + This tricks gtk-doc into generating a html file with a different + name, avoiding the case-only GSettings.html vs gsettings.html. + https://bugzilla.gnome.org/show_bug.cgi?id=641688 + + docs/reference/gio/gsettings.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 25ab13fd3c834a022175a5c8a6cc85fbb090968a +Author: Matthias Clasen +AuthorDate: Mon Feb 7 23:27:19 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Feb 7 23:27:19 2011 -0500 + + Don't use -w in shebang line + + This can cause warnings when PERL_PATH gets expanded to /usr/bin/env. + Patch by Adam Sampson, + https://bugzilla.gnome.org/show_bug.cgi?id=641477 + + gobject/glib-mkenums.in | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit a0554a9f76f70589506e2aa98cb387fcd10ef184 +Author: Javier Jardón +AuthorDate: Tue Feb 8 01:04:20 2011 +0000 +Commit: Javier Jardón +CommitDate: Tue Feb 8 02:27:44 2011 +0000 + + docs: Document Since properly, 2.26 -> 2.28 + + gio/gaction.h | 2 +- + gio/gactiongroup.h | 2 +- + gio/gioenums.h | 2 +- + gio/gsimpleaction.h | 4 ++-- + gio/gsimpleactiongroup.h | 2 +- + glib/gsequence.c | 4 ++-- + 6 files changed, 8 insertions(+), 8 deletions(-) + +commit db12eb5ca47247a5e580d2db2dc1942a7f4971f0 +Author: Rui Matos +AuthorDate: Mon Feb 7 22:53:29 2011 +0000 +Commit: Javier Jardón +CommitDate: Tue Feb 8 01:00:04 2011 +0000 + + GApplication: document Since properly in header files, 2.26 -> 2.28 + + https://bugzilla.gnome.org/show_bug.cgi?id=641783 + + gio/gapplication.h | 4 ++-- + gio/gapplicationcommandline.h | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 3812559659e645be223e34f12040c2d58fdc875c +Author: Ryan Lortie +AuthorDate: Thu Feb 3 17:26:51 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 3 17:26:51 2011 -0500 + + Remove unused variable in gvdb-reader + + As originally committed against dconf by Owen. + + Newer GCC flags this. + + gvdb-reader.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 9823ff1d203166f33302dce2a26e1dee86c4d569 +Author: Johan Dahlin +AuthorDate: Tue Feb 1 17:27:04 2011 -0200 +Commit: Johan Dahlin +CommitDate: Wed Feb 2 13:09:22 2011 -0200 + + Use ; instead of: to not confuse g-ir-scanner + + gio/gioenums.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 59973526ea8b9883bf78567c88deaef9b3da9b2c +Author: Changwoo Ryu +AuthorDate: Wed Feb 2 21:59:38 2011 +0900 +Commit: Changwoo Ryu +CommitDate: Wed Feb 2 21:59:38 2011 +0900 + + Updated Korean translation + + po/ko.po | 2708 + ++++++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 1742 insertions(+), 966 deletions(-) + +commit fdaaa22b58b20c285bc0c328cd6a97bb6c0f0258 +Author: Johan Dahlin +AuthorDate: Tue Feb 1 16:17:23 2011 -0200 +Commit: Johan Dahlin +CommitDate: Tue Feb 1 16:18:02 2011 -0200 + + Correct gtk-doc SECTION: syntax + + g-ir-scanner does not allow a space between the : and the + section name. + + gio/gapplication.c | 2 +- + gio/gsocketcontrolmessage.c | 2 +- + gio/gsocketlistener.c | 2 +- + gio/gsocketservice.c | 2 +- + gio/gtcpconnection.c | 2 +- + gio/gtcpwrapperconnection.c | 2 +- + gio/gthreadedsocketservice.c | 2 +- + gio/gtlscertificate.c | 2 +- + gio/gunixconnection.c | 2 +- + gio/gunixcredentialsmessage.c | 2 +- + gio/gunixfdlist.c | 2 +- + gio/gunixfdmessage.c | 2 +- + glib/garray.c | 6 +++--- + glib/gasyncqueue.c | 2 +- + glib/gcache.c | 2 +- + glib/gchecksum.c | 2 +- + glib/gcompletion.c | 2 +- + glib/gdataset.c | 6 +++--- + glib/ghash.c | 2 +- + glib/giochannel.c | 2 +- + glib/glist.c | 2 +- + glib/gmem.c | 4 ++-- + glib/gnode.c | 2 +- + glib/gpattern.c | 2 +- + glib/grand.c | 2 +- + glib/grel.c | 2 +- + glib/gsequence.c | 2 +- + glib/gshell.c | 2 +- + glib/gslist.c | 2 +- + glib/gstring.c | 2 +- + glib/gthread.c | 2 +- + glib/gthreadpool.c | 2 +- + glib/gtimer.c | 2 +- + glib/gtree.c | 2 +- + glib/gvariant.c | 2 +- + glib/gvarianttype.c | 2 +- + 36 files changed, 41 insertions(+), 41 deletions(-) + +commit ad1f882a1c8b4a20daba877d3504280e512b104e +Author: Javier Jardón +AuthorDate: Tue Feb 1 13:15:55 2011 +0000 +Commit: Javier Jardón +CommitDate: Tue Feb 1 13:20:33 2011 +0000 + + docs: Remove some unneeded template files + + async_queues, atomic_operations and bookmarkfile are already ported + to inline comments + + docs/reference/glib/tmpl/.gitignore | 3 + + docs/reference/glib/tmpl/async_queues.sgml | 195 ---------- + docs/reference/glib/tmpl/atomic_operations.sgml | 116 ------ + docs/reference/glib/tmpl/bookmarkfile.sgml | 480 + ------------------------ + 4 files changed, 3 insertions(+), 791 deletions(-) + +commit 9f8798170dba82b8d46de02ab46105cf61b41f87 +Author: Ryan Lortie +AuthorDate: Mon Jan 31 13:19:59 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 31 13:19:59 2011 -0500 + + GApplication: add notes about GDBus architecture + + Some people are trying to write code that calls + g_application_register() + then checks to see if we became the primary name owner before + exporting + objects. This sort of approach worked with libdbus-1 because method + calls to the freshly-acquired name would not be dispatched until the + application returned to the mainloop. With GDBus, however, dispatches + can occur at any time (including in the brief space between acquiring + the name and actually registering the object). + + Add documentation to make it clear that you should not expect this to + work. + + gio/gapplication.c | 25 ++++++++++++++++++++++++- + 1 file changed, 24 insertions(+), 1 deletion(-) + +commit 401a4233e492e3a2f83e86300b0004d524280e87 +Author: Ignacio Casal Quinteiro +AuthorDate: Mon Jan 31 13:34:26 2011 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Mon Jan 31 13:34:26 2011 +0100 + + Check that error exists before trying to set it. Fixes bug #640975. + + glib/gconvert.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +commit 72a8282231c9a56c93b08c04561e77f730047998 +Author: Fran Diéguez +AuthorDate: Sun Jan 30 03:31:06 2011 +0100 +Commit: Fran Diéguez +CommitDate: Sun Jan 30 03:31:06 2011 +0100 + + Updated Galician translations + + po/gl.po | 314 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 159 insertions(+), 155 deletions(-) + +commit 49428369a71f560fe2f4a4c33ba3ebf0a3765761 +Author: Luca Ferretti +AuthorDate: Sat Jan 29 14:00:25 2011 +0100 +Commit: Luca Ferretti +CommitDate: Sat Jan 29 14:00:25 2011 +0100 + + Updated Italian translation + + po/it.po | 883 + ++++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 539 insertions(+), 344 deletions(-) + +commit 5d9f5cdc5a9d45b80e728b2609966af1d5f70c52 +Author: A S Alam +AuthorDate: Sat Jan 29 07:54:24 2011 +0530 +Commit: A S Alam +CommitDate: Sat Jan 29 07:54:24 2011 +0530 + + update Punjabi Translation by A S Alam + + po/pa.po | 997 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 550 insertions(+), 447 deletions(-) + +commit 75098c297c46945af7c9cf9224951495a82f04a6 +Author: Matthias Clasen +AuthorDate: Fri Jan 28 23:47:36 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 28 23:47:36 2011 -0500 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 83661af46a23a046a87f8d3e4464f5a70676a839 +Author: Matthias Clasen +AuthorDate: Fri Jan 28 21:09:52 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 28 21:09:52 2011 -0500 + + Enable silent rules by default + + configure.ac | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 2b6064760796e01d40fc41a605ba65826196f67a +Author: Matthias Clasen +AuthorDate: Fri Jan 28 21:06:03 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 28 21:06:03 2011 -0500 + + Update NEWS + + NEWS | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit a33aaad00c5e0ce135e34a3280f2560546fe7738 +Author: Matthias Clasen +AuthorDate: Fri Jan 28 20:50:43 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 28 20:50:43 2011 -0500 + + Fix GIO build on Solaris + + Major and minor are defined in sys/mkdev.h on Solaris + + Patch by Fabian Groffen + https://bugzilla.gnome.org/show_bug.cgi?id=637013 + + configure.ac | 2 +- + gio/gdbusmessage.c | 3 +++ + 2 files changed, 4 insertions(+), 1 deletion(-) + +commit 6fe2f5f11b5dee144658e25c2b152fa2f0edd7eb +Author: Matthias Clasen +AuthorDate: Fri Jan 28 12:26:23 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 28 12:26:23 2011 -0500 + + Prevent unused variable warnings from G_DEFINE_DYNAMIC_TYPE + + gobject/gtypemodule.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3c59c38404894b09f1f67add89f7fbbbcb4f4ace +Author: Dan Winship +AuthorDate: Fri Jan 28 10:17:54 2011 -0500 +Commit: Dan Winship +CommitDate: Fri Jan 28 10:18:42 2011 -0500 + + Fix g_source_add_child_source docs + + https://bugzilla.gnome.org/show_bug.cgi?id=640823 + + glib/gmain.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d4209c1c415766c8735eb08500cd7de450c7c09a +Author: Ryan Lortie +AuthorDate: Fri Jan 28 08:23:11 2011 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 28 08:25:05 2011 -0500 + + GVariant: clear memory before releasing it + + Bug #640807 makes a reasonable case for why it's better to have your + program crash outright in the case of memory errors. With this + modification, GVariant is far more likely to do that in the case + that a + GVariant pointer is used shortly after being freed. + + glib/gvariant-core.c | 1 + + 1 file changed, 1 insertion(+) + +commit 8602a3a68212b54773f31e57bbe48189dacfcfd3 +Author: Tobias Mueller +AuthorDate: Thu Jan 27 15:14:31 2011 +0100 +Commit: Matthias Clasen +CommitDate: Thu Jan 27 23:10:02 2011 -0500 + + Fixed format string issue in a test, fixes bug 640725 + + glib/tests/markup-parse.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 069daa69f62c89c7957f22d3b5ccbe0420e51e8b +Author: Matthias Clasen +AuthorDate: Thu Jan 27 23:07:53 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Jan 27 23:07:53 2011 -0500 + + Add testcase for bug 640695 + + glib/tests/Makefile.am | 1 + + glib/tests/keyfile.c | 38 ++++++++++++++++++++- + glib/tests/pages.ini | 92 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 130 insertions(+), 1 deletion(-) + +commit 440e6f4a61e27ee95994cd6a57c9d977a4376755 +Author: Benjamin Gilbert +AuthorDate: Thu Jan 27 02:04:00 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Jan 27 23:06:15 2011 -0500 + + Ensure g_key_file_load_from_file() strips a \r on a 4 KB boundary + + When g_key_file_parse_data() encountered \n, it was checking the + previous + character in the current input buffer for a \r to erase, rather + than the + previous character in the parse buffer. If + g_key_file_load_from_file() + was given a file with a \r\n sequence straddling a 4 KB boundary, + the \n + would be the first character in the input buffer, so the \r would + not be + properly stripped. + + Bug #640695. + + Found-by: Jan Harkes + + glib/gkeyfile.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit e644b29190aaec2cb2239d2541144e313e293020 +Author: Matthias Clasen +AuthorDate: Thu Jan 27 22:54:32 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Jan 27 22:54:32 2011 -0500 + + Use g_set_error_literal where appropriate + + gio/gpollableinputstream.c | 4 ++-- + gio/gpollableoutputstream.c | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit cc5578fbd73ac3845daaa098601640a41cc8586a +Author: Matthias Clasen +AuthorDate: Thu Jan 27 21:57:57 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Jan 27 21:57:57 2011 -0500 + + Make load_user_special_dirs() resistant to nonexistent dirs + + glib/gutils.c | 26 ++++++++++++++++++-------- + 1 file changed, 18 insertions(+), 8 deletions(-) + +commit 4f8a4f171ec3ad2d922ab890ac875dae4a1c49b8 +Author: Matthias Clasen +AuthorDate: Thu Jan 27 20:31:14 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Jan 27 20:31:14 2011 -0500 + + Remove redundant definitions + + https://bugzilla.gnome.org/show_bug.cgi?id=640262 + + gio/gactiongroup.h | 7 ------- + 1 file changed, 7 deletions(-) + +commit 4a8d9b68e38c8b2d09e426eb009ca6fadff5af86 +Author: Matthias Clasen +AuthorDate: Thu Jan 27 20:29:22 2011 -0500 +Commit: Matthias Clasen +CommitDate: Thu Jan 27 20:29:22 2011 -0500 + + Fail in a clean way if schema name is missing + + https://bugzilla.gnome.org/show_bug.cgi?id=640192 + + gio/gsettingsschema.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit d8ca6404229e5b64d2bf2e1a3660ad9fe7feefdd +Merge: 73410f1 03b6b9f +Author: Ryan Lortie +AuthorDate: Thu Jan 27 11:45:04 2011 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 27 11:45:04 2011 -0500 + + Merge remote branch 'gvdb/master' + +commit 73410f1176c276e244c172fd36037ada8db12a3d +Author: Chao-Hsiung Liao +AuthorDate: Thu Jan 27 18:51:55 2011 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Thu Jan 27 18:51:55 2011 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 604 + +++++++++++++++++++++++++++++++----------------------------- + po/zh_TW.po | 604 + +++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 620 insertions(+), 588 deletions(-) + +commit bdbfbd5ea314cf90168db3737ef64d5399ecd591 +Author: Kjartan Maraas +AuthorDate: Thu Jan 27 11:13:12 2011 +0100 +Commit: Kjartan Maraas +CommitDate: Thu Jan 27 11:13:12 2011 +0100 + + Updated Norwegian bokmål translation. + + po/nb.po | 597 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 314 insertions(+), 283 deletions(-) + +commit cddf27de94be3fa3f0ec7b52640c52b2e5479064 +Author: Fran Diéguez +AuthorDate: Thu Jan 27 00:37:03 2011 +0100 +Commit: Fran Diéguez +CommitDate: Thu Jan 27 00:37:29 2011 +0100 + + QA of Galician translations + + po/gl.po | 198 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 103 insertions(+), 95 deletions(-) + +commit 03b6b9fb9775387c3ec5eedb9e5d2152d6468147 +Author: Ryan Lortie +AuthorDate: Tue Jan 25 18:26:21 2011 -0500 +Commit: Ryan Lortie +CommitDate: Tue Jan 25 18:26:21 2011 -0500 + + Mark a symbol as G_GNUC_INTERNAL + + gvdb-reader.h | 1 + + 1 file changed, 1 insertion(+) + +commit 1e5916ffae7bfaf041df454677562aec4557e21c +Author: Yaron Shahrabani +AuthorDate: Sun Jan 23 02:44:15 2011 +0200 +Commit: Yaron Shahrabani +CommitDate: Sun Jan 23 02:44:15 2011 +0200 + + Updated Hebrew translation. + + po/he.po | 448 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 232 insertions(+), 216 deletions(-) + +commit 816e6541d6680028a19865e68db0aa0cafc20f8c +Author: Alexander Shopov +AuthorDate: Sat Jan 22 22:43:52 2011 +0200 +Commit: Alexander Shopov +CommitDate: Sat Jan 22 22:49:35 2011 +0200 + + Updated Bulgarian translation + + po/bg.po | 1020 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 577 insertions(+), 443 deletions(-) + +commit 59fd6f184a5ccd2002a0043bbe13c06cb59515fd +Author: Jorge González +AuthorDate: Sat Jan 22 16:50:48 2011 +0100 +Commit: Jorge González +CommitDate: Sat Jan 22 16:50:48 2011 +0100 + + Updated Spanish translation + + po/es.po | 582 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 308 insertions(+), 274 deletions(-) + +commit 9f0c592b9c5f9ac57d3454f02ffa92e98001ceaf +Author: Emilio Pozuelo Monfort +AuthorDate: Sat Jan 22 15:36:13 2011 +0000 +Commit: Emilio Pozuelo Monfort +CommitDate: Sat Jan 22 15:36:13 2011 +0000 + + Bump PCRE minimum version + + https://bugzilla.gnome.org/show_bug.cgi?id=640261 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit acc295e292406e15e35bdab08b97c9f4409c16fc +Author: Matthias Clasen +AuthorDate: Sat Jan 22 09:52:33 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Jan 22 09:52:33 2011 -0500 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bd8b245f574497755265ec0cee15ebe17bd00a7d +Author: Matthias Clasen +AuthorDate: Sat Jan 22 00:02:08 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Jan 22 00:02:08 2011 -0500 + + Update Unicode tests to 6.0 + + tests/casefold.txt | 17 ++++++++++++++++- + tests/casemap.txt | 40 +++++++++++++++++++++++++++++++++------- + 2 files changed, 49 insertions(+), 8 deletions(-) + +commit fb2809ec996e9e12d06f4bc7239a98718f5f06d7 +Author: Matthias Clasen +AuthorDate: Sat Jan 22 00:01:54 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sat Jan 22 00:01:54 2011 -0500 + + Forgotten files + + glib/pcre/pcre.h | 81 +-- + glib/pcre/pcre_chartables.c | 2 +- + glib/pcre/pcre_compile.c | 899 +++++++++++++++++++++++---------- + glib/pcre/pcre_dfa_exec.c | 257 +++++++--- + glib/pcre/pcre_exec.c | 1155 + ++++++++++++++++++++++++++++++------------- + glib/pcre/pcre_internal.h | 286 ++++++----- + glib/pcre/pcre_study.c | 277 ++++++++--- + glib/pcre/pcre_tables.c | 271 +++++----- + glib/pcre/pcre_xclass.c | 37 +- + glib/pcre/ucp.h | 5 +- + 10 files changed, 2271 insertions(+), 999 deletions(-) + +commit 3f059a6a123dd62257f224b9af7701078783060e +Author: Matthias Clasen +AuthorDate: Fri Jan 21 23:41:12 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 21 23:41:12 2011 -0500 + + Remove a test that seems to fail depending on time of day + + glib/tests/gdatetime.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 37e221b5aee3a0d1b1a3988c69e5694b7722c0fb +Author: Matthias Clasen +AuthorDate: Fri Jan 21 23:12:16 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 21 23:12:16 2011 -0500 + + Update NEWS + + NEWS | 4 ++++ + 1 file changed, 4 insertions(+) + +commit c03dc6bf7dfc6e326e7249e9e377676db885d99e +Author: Matthias Clasen +AuthorDate: Fri Jan 21 23:10:01 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 21 23:10:01 2011 -0500 + + Update the included copy of PCRE + + Update PCRE to version 8.12. + At the same time, also add Unicode 6.0 script support. + + glib/gregex.c | 16 ++++++++++++++++ + glib/tests/regex.c | 5 ++--- + 2 files changed, 18 insertions(+), 3 deletions(-) + +commit 51c87f680991760940da65b0c182016350e211a6 +Author: Matthias Clasen +AuthorDate: Fri Jan 21 18:02:05 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 21 18:02:05 2011 -0500 + + Update help and docs for gsettings cmdline tool + + The man page had gotten quite out of sync. + + docs/reference/gio/gsettings.xml | 135 + +++++++++++++++++++++++++++++---------- + gio/gsettings-tool.c | 28 +++++--- + 2 files changed, 120 insertions(+), 43 deletions(-) + +commit 0a5708654080232dd404d089b5b790de79f11032 +Author: Behdad Esfahbod +AuthorDate: Fri Jan 21 16:30:19 2011 -0500 +Commit: Behdad Esfahbod +CommitDate: Fri Jan 21 16:30:19 2011 -0500 + + Update to Unicode 6.0 + + One new GUnicodeBreak enum member. Three new GUnicodeScript members, + and one member renamed to fix a typo. + + Tests, docs, and scripts are updated. PCRE update still needed. + + docs/reference/glib/tmpl/unicode.sgml | 6 +- + glib/gen-unicode-tables.pl | 79 +- + glib/gscripttable.h | 516 +- + glib/gunibreak.h | 5372 +++++++++----- + glib/gunichartables.h | 4727 +++++++++---- + glib/gunicode.h | 38 +- + glib/gunicomp.h | 288 +- + glib/gunidecomp.h | 11955 + +++++++++++++++++--------------- + glib/pcre/ucp.h | 2 +- + glib/tests/utf8-misc.c | 20 +- + 10 files changed, 13730 insertions(+), 9273 deletions(-) + +commit b50f4a1a52eeaec2ff14a0ac44b0b42ebb6cca30 +Author: Matthias Clasen +AuthorDate: Fri Jan 21 11:24:14 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 21 11:24:14 2011 -0500 + + Updates for 2.27.92 + + NEWS | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit 654ab34e3a7ea03dd7e86d16deae90df8e153d4c +Author: Matthias Clasen +AuthorDate: Fri Jan 21 10:52:48 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 21 10:52:48 2011 -0500 + + Don't warn in GApplication if class handlers have been overridden + + https://bugzilla.gnome.org/show_bug.cgi?id=640042 + + gio/gapplication.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit b31d80eff3352de556e630cdc117a735bc4925e5 +Author: Khaled Hosny +AuthorDate: Thu Jan 20 21:57:05 2011 +0200 +Commit: Khaled Hosny +CommitDate: Thu Jan 20 21:57:05 2011 +0200 + + Updated Arabic translation + + po/ar.po | 1827 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 992 insertions(+), 835 deletions(-) + +commit da36756f3f907ce7d9d4484e29ef7c08c838b351 +Author: Michael Kotsarinis +AuthorDate: Wed Jan 19 19:08:15 2011 +0200 +Commit: Kostas Papadimas +CommitDate: Wed Jan 19 19:08:15 2011 +0200 + + Updated Greek translation + + po/el.po | 1010 + ++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 590 insertions(+), 420 deletions(-) + +commit c7f38cd277f0bfa9c303fcd30dd17e1320e5c162 +Author: Matthias Clasen +AuthorDate: Tue Jan 18 00:06:55 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 18 00:06:55 2011 -0500 + + Mark another function as static + + glib/gtimezone.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 67e112cce6bc7a9e841354d2c760a017a2c01527 +Author: Matthias Clasen +AuthorDate: Tue Jan 18 00:06:05 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 18 00:06:05 2011 -0500 + + Mark a function as static + + glib/gtimezone.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d2347f34fded2651e47a60814f600c173b8ca5e7 +Author: Matthias Clasen +AuthorDate: Mon Jan 17 23:46:20 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 17 23:46:20 2011 -0500 + + Move GMarkup docs inline + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/markup.sgml | 327 --------- + glib/gmarkup.c | 1331 + ++++++++++++++++++---------------- + glib/gmarkup.h | 85 ++- + 4 files changed, 768 insertions(+), 976 deletions(-) + +commit dc8b03027d905bf22527aeaa7e31ad072231197a +Author: Ray Strode +AuthorDate: Mon Jan 17 17:13:44 2011 -0500 +Commit: Ray Strode +CommitDate: Mon Jan 17 17:31:14 2011 -0500 + + gsettings: Update documentation on schema naming convention + + The existing docs are a bit inconsistent in that they say to follow + the dbus convention, but then give an example that doesn't. + + This commit changes things to be how Ryan says they should be. + + docs/reference/gio/migrating-gconf.xml | 10 ++++++---- + gio/gsettings.c | 10 +++++++--- + 2 files changed, 13 insertions(+), 7 deletions(-) + +commit a2918d6c3e676e2656a87b5a5ee974dc5777eb59 +Author: Ryan Lortie +AuthorDate: Mon Jan 17 15:17:34 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 17 15:19:14 2011 -0500 + + Fix some harmless sign compare warnings + + gvdb-reader.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ba5619ba7f69025f40bf5e77d667a2a84b61d1a7 +Author: Ryan Lortie +AuthorDate: Mon Jan 17 15:15:46 2011 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 17 15:15:46 2011 -0500 + + C++ify the reader header + + gvdb-reader.h | 3 +++ + 1 file changed, 3 insertions(+) + +commit e8120dc4ce75b0cff6d45632e5d9037853ad51ae +Author: Ray Strode +AuthorDate: Mon Jan 17 14:15:18 2011 -0500 +Commit: Ray Strode +CommitDate: Mon Jan 17 14:31:34 2011 -0500 + + datetime: Show 12 instead of 0 for 12h hour format + + The 12h mode hour format is computed by taking the + 24h mode hour format modulo 12. + + The conversion results in 12 noon getting erroneously + converted to 0. + + This commit makes noon get the same special handling + as midnight. + + glib/gdatetime.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a437c5e768b9a62b550e174b25413ce9149fcdbe +Author: Ray Strode +AuthorDate: Mon Jan 17 14:30:43 2011 -0500 +Commit: Ray Strode +CommitDate: Mon Jan 17 14:31:34 2011 -0500 + + tests: add format test case for noon hour in 12h mode + + It currently displays it as "0" instead of "12", so this + test case demonstrates the bug. + + glib/tests/gdatetime.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 8728949e0db56159485e5d214e581e5f46911d0b +Author: Christian Persch +AuthorDate: Thu Jan 6 23:30:09 2011 +0100 +Commit: Christian Persch +CommitDate: Fri Jan 14 20:19:24 2011 +0100 + + Don't leak variants in the null settings backend + + Even though the write fails, the variant still needs to be consumed. + + Bug #638872. + + gio/gnullsettingsbackend.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit a583405f66758e320eaf2025b757ddc081186686 +Author: Javier Jardón +AuthorDate: Fri Jan 14 17:54:04 2011 +0000 +Commit: Javier Jardón +CommitDate: Fri Jan 14 17:54:04 2011 +0000 + + docs: gvariant-core: g_variant_normalise -> + g_variant_get_normal_form() + + glib/gvariant-core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6c0491841e40aba4b479285e473f267f623b4a57 +Author: Javier Jardón +AuthorDate: Fri Jan 14 17:24:45 2011 +0000 +Commit: Javier Jardón +CommitDate: Fri Jan 14 17:25:07 2011 +0000 + + gvariant-core: Fix typo + + g_variant_create_from_data -> g_variant_new_from_data + + glib/gvariant-core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c7041e221fcf165ae16603ba4a2d5579cc02826a +Author: Javier Jardón +AuthorDate: Fri Jan 14 00:49:35 2011 +0000 +Commit: Javier Jardón +CommitDate: Fri Jan 14 00:50:44 2011 +0000 + + docs: gvariant-varargs: Fix typo + + docs/reference/glib/gvariant-varargs.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 060e516ede200990d09a259f5f48e939fc001f89 +Author: Ivar Smolin +AuthorDate: Thu Jan 13 12:41:06 2011 +0200 +Commit: Priit Laes +CommitDate: Thu Jan 13 12:41:06 2011 +0200 + + [l10n] Updated Estonian translation + + po/et.po | 40 ++++++++++++++++++++-------------------- + 1 file changed, 20 insertions(+), 20 deletions(-) + +commit a86eb8785b9b93ee0fb2a52e714ef6431268ccf2 +Author: Inaki Larranaga Murgoitio +AuthorDate: Wed Jan 12 22:29:53 2011 +0100 +Commit: dooteo +CommitDate: Wed Jan 12 22:29:53 2011 +0100 + + Updated Basque language + + po/eu.po | 910 + +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 563 insertions(+), 347 deletions(-) + +commit c0208940c569b2d2a7e0e86f93d97cfbaf2b3fc7 +Author: Daiki Ueno +AuthorDate: Tue Jan 11 11:33:21 2011 +0900 +Commit: Dan Winship +CommitDate: Wed Jan 12 16:01:32 2011 -0500 + + Make g_unix_connection_send_fd() work as expected. + + https://bugzilla.gnome.org/show_bug.cgi?id=637696 + + gio/gunixfdmessage.c | 2 +- + gio/tests/socket.c | 105 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 106 insertions(+), 1 deletion(-) + +commit 634e9e43cfb8b0d88d0a6b4899d0e33c62c07458 +Author: Michael Natterer +AuthorDate: Wed Jan 12 19:45:40 2011 +0100 +Commit: Michael Natterer +CommitDate: Wed Jan 12 19:45:40 2011 +0100 + + gobject: add an empty default impl of GObject::constructed() + + to allow unconditional upchaining. + + gobject/gobject.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +commit 19c73918ec7faf6e32d100493772a1dccf43b110 +Author: Chun-wei Fan +AuthorDate: Wed Jan 12 11:08:54 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Jan 12 11:08:54 2011 +0800 + + Added symbols for GIO/Win32 + + There are now fallback functions in the Win32 portion of + g_app_info that were previously only available under UNIX, + so add them here so that they can be exported as well. + + The symbols are as follows: + g_app_info_get_fallback_for_type + g_app_info_get_recommended_for_type + + gio/gio.symbols | 2 ++ + 1 file changed, 2 insertions(+) + +commit 1df31f00140bfba941db65e2374ff2700f55a295 +Author: Matthias Clasen +AuthorDate: Tue Jan 11 16:13:42 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 11 16:13:42 2011 -0500 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dd6baef46fcb7abd561383f2af7bb1b8e3579f5c +Author: Matthias Clasen +AuthorDate: Tue Jan 11 11:27:45 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 11 11:27:45 2011 -0500 + + Update NEWS + + NEWS | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit fabf506b8d5baf8f59fca563e6f1a62be5148112 +Author: Ivar Smolin +AuthorDate: Tue Jan 11 11:04:56 2011 +0200 +Commit: Priit Laes +CommitDate: Tue Jan 11 11:04:56 2011 +0200 + + [l10n] Updated Estonian translation + + po/et.po | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) + +commit eec2cb1af873f38091671486b5adc5d444e306b7 +Author: Matthias Clasen +AuthorDate: Mon Jan 10 20:28:17 2011 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 10 20:29:29 2011 -0500 + + Avoid a segfault in g_application_register() + + Patch by Mikkel Kamstrup Erlandsen + https://bugzilla.gnome.org/show_bug.cgi?id=639177 + + gio/gapplicationimpl-dbus.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 48f27317607fe117fe9aed0c2fe24ff6ef10a5d5 +Author: Javier Jardón +AuthorDate: Mon Jan 10 23:36:00 2011 +0000 +Commit: Javier Jardón +CommitDate: Mon Jan 10 23:41:13 2011 +0000 + + mkinstalldirs: Update to latest version + + mkinstalldirs | 93 + +++++++++++++++++++++++++++++++++++++++++++++-------------- + 1 file changed, 72 insertions(+), 21 deletions(-) + +commit 42d71c0ef952a2a3b9bd685ad3bb4294f0706947 +Author: Ivar Smolin +AuthorDate: Mon Jan 10 19:44:11 2011 +0200 +Commit: Priit Laes +CommitDate: Mon Jan 10 19:44:11 2011 +0200 + + [l10n] Updated Estonian translation + + po/et.po | 101 + +++++++++++++++++---------------------------------------------- + 1 file changed, 27 insertions(+), 74 deletions(-) + +commit a57c4c90662077163316d1d53ee18a5a0fbec393 +Author: Matthias Clasen +AuthorDate: Sun Jan 9 16:43:28 2011 -0500 +Commit: Matthias Clasen +CommitDate: Sun Jan 9 16:43:28 2011 -0500 + + GSettings: Fix a copy-paste error + + https://bugzilla.gnome.org/show_bug.cgi?id=639084 + + gio/gsettings.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b0b37bcb06723ede07cc9c5c4573f12c3acb1643 +Author: Christian Persch +AuthorDate: Sun Jan 9 15:03:31 2011 +0100 +Commit: Christian Persch +CommitDate: Sun Jan 9 21:45:20 2011 +0100 + + Update gschema.dtd + + Bug #639064. + + gio/gschema.dtd | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +commit eafa3443d39f36a3ade11154243495a77d5b089d +Author: Fran Diéguez +AuthorDate: Sun Jan 9 16:35:32 2011 +0100 +Commit: Fran Diéguez +CommitDate: Sun Jan 9 16:35:32 2011 +0100 + + Updated Galician translations + + po/gl.po | 386 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 193 insertions(+), 193 deletions(-) + +commit 33c7a9d8ecaa75b41dbdd2a3a31ac8c62394a8b5 +Author: Javier Jardón +AuthorDate: Fri Jan 7 18:55:20 2011 +0100 +Commit: Javier Jardón +CommitDate: Fri Jan 7 19:07:57 2011 +0100 + + configure: Use AC_CONFIG_MACRO_DIR + + To keep the correct macros in-tree. + + configure.ac | 1 + + 1 file changed, 1 insertion(+) + +commit b67d9cb7eef036b76955a75e6e9cd6b8ae1fb8e4 +Author: Matthias Clasen +AuthorDate: Fri Jan 7 12:07:19 2011 -0500 +Commit: Matthias Clasen +CommitDate: Fri Jan 7 12:07:19 2011 -0500 + + Add regex test cases + + These come from https://bugzilla.gnome.org/show_bug.cgi?id=638894 + + glib/tests/regex.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit f6b52322a2049dfb3873922a8f1417d8c44363b0 +Author: Pavel Holejsovsky +AuthorDate: Fri Jan 7 14:52:29 2011 +0100 +Commit: Pavel Holejsovsky +CommitDate: Fri Jan 7 15:06:07 2011 +0100 + + Fix and update GI annotations for 'Volumes and Drives' + + Volumes and Drives GIO category contains: GVolumeMonitor, GVolume, + GMount, GDrive, Unix Mounts. + + gio/gdrive.c | 34 +++++++++++++++++++--------------- + gio/gmount.c | 33 ++++++++++++++++++--------------- + gio/gunixmounts.c | 20 +++++++++++--------- + gio/gvolume.c | 13 +++++++------ + 4 files changed, 55 insertions(+), 45 deletions(-) + +commit f85909fb65635b8321d1abf60c073ae854acae5e +Author: Pavel Holejsovsky +AuthorDate: Fri Jan 7 09:38:35 2011 +0100 +Commit: Pavel Holejsovsky +CommitDate: Fri Jan 7 15:05:55 2011 +0100 + + Add and update GI annotations in 'Settings' + + 'Settings' GIO group contains GSettings and GSettingsBackend. + + gio/gsettings.c | 18 +++++++++--------- + gio/gsettings.h | 5 +++-- + gio/gsettingsbackend.c | 12 +++++++----- + 3 files changed, 19 insertions(+), 16 deletions(-) + +commit 99c740fdb58e2a7bf18fa1213c03b0be186f3581 +Author: Andika Triwidada +AuthorDate: Fri Jan 7 11:37:39 2011 +0700 +Commit: Andika Triwidada +CommitDate: Fri Jan 7 11:37:39 2011 +0700 + + Updated Indonesian translation + + po/id.po | 1531 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 858 insertions(+), 673 deletions(-) + +commit e738a8dd8ca3d3dd327bc5a3bbfd151858738609 +Author: Colin Walters +AuthorDate: Thu Jan 6 11:47:58 2011 -0500 +Commit: Colin Walters +CommitDate: Thu Jan 6 13:32:56 2011 -0500 + + gdesktopappinfo: Don't crash if we don't have a desktop filename + + If code creates a GDesktopAppInfo via + g_desktop_app_info_new_from_keyfile(), + we'd try to send a NULL pointer down into GVariant. + + Since in this case we don't have a filename, just send the empty + string. In the future we should either: + + 1) Change panel to use g_desktop_app_info_new_from_filename(), and + take the hit of parsing the file twice. + 2) Add a g_key_file_get_origin_filename() + 3) Add g_desktop_app_info_new_from_keyfile_and_name() + + https://bugzilla.gnome.org/show_bug.cgi?id=638838 + + gio/gdesktopappinfo.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +commit 26b65a3abda5ad0930b1cd0d0652417feb50c274 +Author: Serkan Kaba +AuthorDate: Thu Jan 6 14:08:02 2011 +0100 +Commit: Tomas Bzatek +CommitDate: Thu Jan 6 14:08:02 2011 +0100 + + gio: Recognize reiser4 in g_file_query_filesystem_info() + + Signed-off-by: Serkan Kaba + Signed-off-by: Tomas Bzatek + + gio/glocalfile.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 48f8c07c530973a0b32ed6cd3251cc82851e20b0 +Author: Matthias Clasen +AuthorDate: Wed Jan 5 20:43:46 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 5 20:43:46 2011 -0500 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0b3412b419a322426ae04ca5177546ba68def3d8 +Author: Matthias Clasen +AuthorDate: Wed Jan 5 19:51:44 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 5 19:51:44 2011 -0500 + + Add anothre bug ref + + NEWS | 1 + + 1 file changed, 1 insertion(+) + +commit 51ac0c6c85c5bf993ff2de0282c569884b79027a +Author: Matthias Clasen +AuthorDate: Wed Jan 5 19:42:13 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 5 19:42:13 2011 -0500 + + Avoid possible parameter name clashes in GVariant + + https://bugzilla.gnome.org/show_bug.cgi?id=638349 + + glib/gvariant.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit 31db1f9688274b245ba7f47b7a837f609715331c +Author: Matthias Clasen +AuthorDate: Wed Jan 5 19:07:01 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 5 19:07:01 2011 -0500 + + Add new symbol + + gio/gio.symbols | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit f4773faa9f669ff3a705946f5b4ddcc83d3c6931 +Author: Matthias Clasen +AuthorDate: Wed Jan 5 17:46:28 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 5 17:46:28 2011 -0500 + + Drop annotation that break the documentation build + + gio/gtlsclientconnection.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit 87068c0fcd08dd968679e68bd71a2a7355361522 +Author: Matthias Clasen +AuthorDate: Wed Jan 5 17:16:36 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 5 17:16:36 2011 -0500 + + Update NEWS + + NEWS | 43 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 43 insertions(+) + +commit 98a0dfe1da9f3b8919f0bb73b1cb99333a31975f +Author: Matthias Clasen +AuthorDate: Wed Jan 5 17:01:42 2011 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 5 17:01:42 2011 -0500 + + Bump version to 2.27.90 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3d824065b847f2702aa312c51734328fc414af5a +Author: Christian Persch +AuthorDate: Sun Nov 28 18:49:04 2010 +0100 +Commit: Christian Persch +CommitDate: Wed Jan 5 22:57:20 2011 +0100 + + Add g_get_locale_variants() + + Make _g_compute_locale_variants() public as g_get_locale_variants(). + + Bug #635998. + + docs/reference/glib/glib-sections.txt | 1 + + glib/gkeyfile.c | 5 ++--- + glib/glib.symbols | 1 + + glib/gutils.c | 23 ++++++++++++++++++++++- + glib/gutils.h | 2 ++ + glib/tests/utils.c | 15 +++++++++++++++ + 6 files changed, 43 insertions(+), 4 deletions(-) + +commit be8899bfe66d460b3eda33ff7512778788c07974 +Author: Christian Persch +AuthorDate: Mon Mar 1 16:32:09 2010 +0100 +Commit: Christian Persch +CommitDate: Wed Jan 5 22:49:21 2011 +0100 + + Make _g_compute_locale_variants return a char** directly + + Bug #635998. + + glib/gkeyfile.c | 13 ++--------- + glib/gutils.c | 72 + ++++++++++++++++++++++++++++++++------------------------- + 2 files changed, 42 insertions(+), 43 deletions(-) + +commit b497220e486e66433b44251a53ec3be25fa9acdb +Author: Pavel Holejsovsky +AuthorDate: Wed Jan 5 20:30:10 2011 +0100 +Commit: Pavel Holejsovsky +CommitDate: Wed Jan 5 20:35:50 2011 +0100 + + Fix GI annotation for g_desktop_app_info_launch_uris_as_manager + + gio/gdesktopappinfo.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 8d74c96b76b459a63492bfce466a304383e94d09 +Author: Christian Persch +AuthorDate: Sun Dec 5 15:34:26 2010 +0100 +Commit: Christian Persch +CommitDate: Wed Jan 5 20:31:50 2011 +0100 + + Make the memory and null settings backends public + + Bug #636806. + + docs/reference/gio/gio-sections.txt | 3 +++ + gio/Makefile.am | 2 -- + gio/gio.symbols | 11 +++++++++-- + gio/giomodule.c | 3 ++- + gio/gmemorysettingsbackend.c | 9 +++++++-- + gio/gmemorysettingsbackend.h | 30 ------------------------------ + gio/gnullsettingsbackend.c | 12 +++++++----- + gio/gnullsettingsbackend.h | 30 ------------------------------ + gio/gsettingsbackend.c | 5 +++-- + gio/gsettingsbackend.h | 6 ++++++ + gio/gsettingsbackendinternal.h | 8 ++++++-- + 11 files changed, 43 insertions(+), 76 deletions(-) + +commit 0b59cf65669fae077a7e607d0c61567be5f5a30a +Author: Colin Walters +AuthorDate: Wed Jan 5 13:49:20 2011 -0500 +Commit: Colin Walters +CommitDate: Wed Jan 5 13:49:20 2011 -0500 + + g_desktop_app_info_launch_uris_as_manager: Fix parameter naming + + This makes introspection happier. + + gio/gdesktopappinfo.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 9be6da9448a1a59eae11d588729bf4316fbadada +Author: Colin Walters +AuthorDate: Wed Jan 5 13:00:50 2011 -0500 +Commit: Colin Walters +CommitDate: Wed Jan 5 13:02:28 2011 -0500 + + Add missing indirection from previous commit + + This follows the rest of GLib style, and fixes g-i scanning the + headers. + + gio/gdesktopappinfo.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit a36cb498d974b11c00829adfdaa9638fbd9b66eb +Author: Nicolas Dufresne +AuthorDate: Wed Dec 22 16:52:40 2010 -0500 +Commit: Nicolas Dufresne +CommitDate: Wed Jan 5 12:41:51 2011 -0500 + + [GDummyTLS] Add missing properties and namespace + + Add missing properties in the GDummyTlsConnection class. Also add + namespaces to property enumerations to avoid conflicts between + classes. + + Reviewed-by: Dan Winship + + gio/gdummytlsbackend.c | 62 + +++++++++++++++++++++++++++----------------------- + 1 file changed, 34 insertions(+), 28 deletions(-) + +commit 4e33967a002fd14d7106ef2ff88122344f2e4983 +Author: Stef Walter +AuthorDate: Fri Dec 24 10:50:14 2010 -0600 +Commit: Stef Walter +CommitDate: Wed Jan 5 09:35:06 2011 -0800 + + Change GTlsClientConnection::accepted-cas to contain DER DNs + + This property is now a GList of GByteArray values. Each + GByteArray contains the raw DER DN of the certificate authority. + This is far more useful for looking up a certificate (with the + relevant issuer) than a string encoded DN. + + https://bugzilla.gnome.org/show_bug.cgi?id=637262 + + gio/gtlsclientconnection.c | 28 ++++++++++++++++++---------- + gio/gtlsclientconnection.h | 2 +- + 2 files changed, 19 insertions(+), 11 deletions(-) + +commit e6546debd61d32b41b37c20b62d4e47cd3e53e25 +Author: Colin Walters +AuthorDate: Mon Dec 20 14:48:53 2010 -0500 +Commit: Colin Walters +CommitDate: Wed Jan 5 11:58:07 2011 -0500 + + gdesktopappinfo: Add g_desktop_app_info_launch_uris_as_manager() + + A new GDesktopAppInfo specific function which provides more control + over launched processes. Intended basically only for use in GNOME + Shell, where we want: + + *) To directly know the GPid for each launched program, without + having to listen to a DBus signal emitted in our own process + *) Possibly control over the process environment; for example, + we may want to call setsid() or redirect file descriptors. + + And in the future: + *) To avoid recursively calling ourself via DBus, when a later + patch causes g_app_info_launch() to indirect via the shell. + + https://bugzilla.gnome.org/show_bug.cgi?id=606960 + + gio/gdesktopappinfo.c | 89 + ++++++++++++++++++++++++++++++++++++++++++++++++--- + gio/gdesktopappinfo.h | 24 ++++++++++++++ + 2 files changed, 108 insertions(+), 5 deletions(-) + +commit bb6c44b9d3fd94835044ffda38ca2f211deb5b7b +Author: Colin Walters +AuthorDate: Mon Dec 20 13:12:28 2010 -0500 +Commit: Colin Walters +CommitDate: Wed Jan 5 11:58:03 2011 -0500 + + gdesktopappinfo: Send out a session bus signal when launching + .desktop file + + This signal contains the full path of the .desktop file, along with + the process id, which allows multiple interested components (like + GNOME Shell) to better know the state of the system (which processes + correspond to which .desktop files). + + https://bugzilla.gnome.org/show_bug.cgi?id=606960 + + gio/gdesktopappinfo.c | 87 + +++++++++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 78 insertions(+), 9 deletions(-) + +commit 9de42602c47262d49e4419f8bf7987dc2b488a98 +Author: Chun-wei Fan +AuthorDate: Wed Jan 5 22:57:48 2011 +0800 +Commit: Chun-wei Fan +CommitDate: Wed Jan 5 22:57:48 2011 +0800 + + Bug 637852 - Updates to glib.vsprops + + Due to changes in the GIO APIs/headers, the glib.vsprops + is updated to reflect that in the "install" phase, namely: + -removal of the gperiodic.h header + -addition of GPollable I/O Stream, GTCP Connection and + GTLS headers + + build/win32/vs9/glib.vsprops | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit 9686d82daf9c2082fa5d3055ac5b777490a95dc0 +Author: Matthias Clasen +AuthorDate: Tue Jan 4 09:38:14 2011 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 4 09:38:14 2011 -0500 + + Fix build on old kernels + + Cope with BTRFS_SUPER_MAGIC not being defined. + + glib/gfileutils.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1e5f11875b65712195e4d0c8d160cdc9f9bbd99f +Author: Thomas Kristensen +AuthorDate: Mon Jan 3 15:20:12 2011 +0200 +Commit: Tor Lillqvist +CommitDate: Mon Jan 3 15:20:12 2011 +0200 + + revents may have been cleared by GMain before dispatch(). + + See bug #587898. + + gio/gsocket.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit b583f802e39e2415c626ad19d54adc1bc08151d0 +Author: Kjartan Maraas +AuthorDate: Sun Jan 2 18:54:17 2011 +0100 +Commit: Kjartan Maraas +CommitDate: Sun Jan 2 18:54:17 2011 +0100 + + Updated Norwegian bokmål translation from Torstein Adolf Winterseth + + po/nb.po | 216 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 104 insertions(+), 112 deletions(-) + +commit 4144c04c475c58df1da8ff062de1d50865c10169 +Author: Daniel Nylander +AuthorDate: Fri Dec 31 15:23:27 2010 +0100 +Commit: Daniel Nylander +CommitDate: Fri Dec 31 15:23:27 2010 +0100 + + Updated Swedish translation + + po/sv.po | 1405 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 785 insertions(+), 620 deletions(-) + +commit 929e8db9f436f0644a300c7253c9452145cbb7db +Author: Pavel Holejsovsky +AuthorDate: Wed Dec 29 16:21:22 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Wed Dec 29 16:21:22 2010 +0100 + + Add GI annotation: skip g_cancellable_source_new(). + + It is not bindable, because GSource is not boxed and thus cannot be + returned as caller-owned. + + gio/gcancellable.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 53364788e9f52dd3cf9781d08004ed5f0db0941f +Author: Pavel Holejsovsky +AuthorDate: Wed Dec 29 15:26:21 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Wed Dec 29 16:02:35 2010 +0100 + + Add GI annotations to Gio DNS resolution classes + + gio/gproxyresolver.c | 18 ++++++++++-------- + gio/gresolver.c | 24 ++++++++++++------------ + 2 files changed, 22 insertions(+), 20 deletions(-) + +commit add8cf9c09255e497545c67ca81e8f8bf28f3f85 +Author: Pavel Holejsovsky +AuthorDate: Wed Dec 29 16:01:12 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Wed Dec 29 16:02:26 2010 +0100 + + Add GI annotations to Gio highlevel network functionality + + gio/gsocketclient.c | 32 ++++++++++++++++---------------- + gio/gsocketlistener.c | 28 ++++++++++++++-------------- + gio/gunixconnection.c | 4 ++-- + 3 files changed, 32 insertions(+), 32 deletions(-) + +commit 975b0d4487809270100efce56270314d816e3073 +Author: Pavel Holejsovsky +AuthorDate: Wed Dec 29 13:51:44 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Wed Dec 29 16:02:23 2010 +0100 + + Add GI annotations to Gio lowlevel network support classes + + gio/ginetaddress.c | 2 +- + gio/ginetsocketaddress.c | 2 +- + gio/gproxy.c | 11 ++++++----- + gio/gproxyaddress.c | 6 ++++-- + gio/gsocket.c | 44 + +++++++++++++++++++++--------------------- + gio/gsocketaddressenumerator.c | 9 +++++---- + gio/gsocketcontrolmessage.c | 2 +- + gio/gunixfdlist.c | 14 +++++++++----- + gio/gunixfdmessage.c | 6 ++++-- + gio/gunixsocketaddress.c | 4 ++-- + 10 files changed, 55 insertions(+), 45 deletions(-) + +commit 571104bcc384c30054b507cab8e9d9a5f1166c45 +Author: Pavel Holejsovsky +AuthorDate: Tue Dec 28 16:53:48 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Wed Dec 29 16:02:12 2010 +0100 + + Add GI annotations to GPollable{Input|Output}Stream + + gio/gpollableinputstream.c | 13 +++++++------ + gio/gpollableoutputstream.c | 12 +++++++----- + 2 files changed, 14 insertions(+), 11 deletions(-) + +commit 79fd5ff80dcf086749e942ea3be9e4fa88317b09 +Author: Pavel Holejsovsky +AuthorDate: Tue Dec 28 15:46:01 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Wed Dec 29 16:02:04 2010 +0100 + + Add missing GI annotation to g_content_type_guess_for_tree + + gio/gcontenttype.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 422a76b3cd02f6075736da8b4203d83ff52ba096 +Author: Pavel Holejsovsky +AuthorDate: Tue Dec 28 14:28:52 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Wed Dec 29 11:42:14 2010 +0100 + + Fix typo in GI annotation + + gobject/gtype.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 500061f67567477c70b7950a60b0d5620a74131a +Author: Emmanuele Bassi +AuthorDate: Tue Oct 12 16:05:26 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Tue Dec 28 16:35:14 2010 +0000 + + test: Add a node to the report XML + + Use `git describe` to fill out the node, if we're using a + git checkout; otherwise, for tests ran from a released tarball, use + the version. + + https://bugzilla.gnome.org/show_bug.cgi?id=631980 + + Makefile.decl | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +commit 52c831099e5fed55482c3d8cf43b457e37843bd6 +Author: Emmanuele Bassi +AuthorDate: Tue Oct 12 16:03:56 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Tue Dec 28 16:35:12 2010 +0000 + + gtester-report: Add an optional 'revision' node + + In order to distinguish reports generated from a specific revision + of a + projects it would be good if gtester-report handled a + node in + the XML. + + The payload is free-form, just like for the other nodes under . + + https://bugzilla.gnome.org/show_bug.cgi?id=631980 + + glib/gtester-report | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 408a9fcbcc175435bdf62354102e919dc4e4b4e7 +Author: Cosimo Cecchi +AuthorDate: Tue Dec 28 12:24:39 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Tue Dec 28 12:24:39 2010 +0100 + + gaction: update property flags to match needs of GSimpleAction + + Commit 068d53358bd366c26cff604a3de53b3cf734b08f uncovered this + mismatch + between properties on the interface and those on the implementation. + Update them so they match. + + gio/gaction.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit f248ab1b60a64df88a1578db81a3e263199d584c +Author: Cosimo Cecchi +AuthorDate: Tue Dec 28 12:17:10 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Tue Dec 28 12:18:51 2010 +0100 + + tests: unbreak desktop-app-info test for jhbuild + + If we have a jhbuilt version of gedit installed, this will fail, as it + will succeed in deleting its desktop file. + + gio/tests/desktop-app-info.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 562a83432849280651ada9ac59e53358878cb2df +Author: Pavel Holejsovsky +AuthorDate: Tue Dec 28 11:59:58 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Tue Dec 28 11:59:58 2010 +0100 + + Fix typo in function annotation. + + gobject/gtype.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b27ecf79e89db9ba26aa3dedc1a3ae1e6255cf40 +Author: Matthias Clasen +AuthorDate: Tue Dec 28 00:19:45 2010 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 28 00:19:45 2010 -0500 + + Document that g_variant_builder_add_value consumes a floating ref + + Patch by Mikkel Kamstrup Erlandsen, bug + https://bugzilla.gnome.org/show_bug.cgi?id=634569 + + glib/gvariant.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 316be2748fce21c922291990e1d9a2479f13a464 +Author: Matthias Clasen +AuthorDate: Tue Dec 28 00:12:19 2010 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 28 00:12:19 2010 -0500 + + Adapt testglib.c to GRelation deprecation + + Patch by Chun-wei Fan, bug + https://bugzilla.gnome.org/show_bug.cgi?id=637858 + + tests/testglib.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 702a96c28146f683c58281133056bf70d7b0313e +Author: Matthias Clasen +AuthorDate: Tue Dec 28 00:08:56 2010 -0500 +Commit: Matthias Clasen +CommitDate: Tue Dec 28 00:08:56 2010 -0500 + + Fix a possible crash in g_io_channel_read_chars + + Patch by Rui Matos, https://bugzilla.gnome.org/show_bug.cgi?id=637759 + + glib/giochannel.c | 37 ++++++++++++++++++------------------- + 1 file changed, 18 insertions(+), 19 deletions(-) + +commit bf1027f8269dd365097dd84c0c6d5abd7a61599e +Author: Matthias Clasen +AuthorDate: Mon Dec 27 23:49:12 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 27 23:49:12 2010 -0500 + + Move ifaceproperties test to gobject/tests/ + + gobject/tests/Makefile.am | 14 +- + gobject/tests/ifaceproperties.c | 648 + ++++++++++++++++++++++++++++++++++++++++ + gobject/tests/testcommon.h | 100 +++++++ + tests/gobject/Makefile.am | 1 - + tests/gobject/ifaceproperties.c | 648 + ---------------------------------------- + 5 files changed, 751 insertions(+), 660 deletions(-) + +commit 068d53358bd366c26cff604a3de53b3cf734b08f +Author: Matthias Clasen +AuthorDate: Mon Dec 27 23:41:10 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 27 23:41:10 2010 -0500 + + Make object_interface_check_properties work + + As pointed out in bug 637738, it does not currently work, since + g_type_class_peek always returns NULL. + + gobject/gobject.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +commit 2a5e0cf9e0d67ea35b2f5fdf8bb2297354bcb7e6 +Author: Matthias Clasen +AuthorDate: Mon Dec 27 23:37:21 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 27 23:40:28 2010 -0500 + + Convert ifaceproperties.c to test framework + + Also add a test that checks warnings for failure to implement + interface properties. + + See https://bugzilla.gnome.org/show_bug.cgi?id=637738 + + tests/gobject/ifaceproperties.c | 379 + +++++++++++++++++++++++++++------------- + 1 file changed, 260 insertions(+), 119 deletions(-) + +commit 58e36daf29aa1cf042a1141b9bbb91b4e794bfc7 +Author: Pavel Holejsovsky +AuthorDate: Mon Dec 27 22:07:08 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Mon Dec 27 22:08:15 2010 +0100 + + Add GI annotations to GObject + + gobject/gobject.c | 100 + ++++++++++++++++++++++++++++-------------------------- + 1 file changed, 52 insertions(+), 48 deletions(-) + +commit 282366c32626325ebb9257e500d3d2783e5d3d12 +Author: Pavel Holejsovsky +AuthorDate: Wed Dec 22 22:09:21 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Mon Dec 27 22:08:07 2010 +0100 + + Add GI annotations to GParamSpec + + gobject/gparam.c | 39 +++++++++++++++++++++------------------ + gobject/gparamspecs.c | 46 +++++++++++++++++++++++----------------------- + 2 files changed, 44 insertions(+), 41 deletions(-) + +commit 3955bbfde0080bd15fff07906d011b93a2be2665 +Author: Pavel Holejsovsky +AuthorDate: Mon Dec 27 20:56:06 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Mon Dec 27 20:56:58 2010 +0100 + + Add GI annotations to GType + + gobject/gtype.c | 110 + ++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 63 insertions(+), 47 deletions(-) + +commit ed5790913e8de1a787f5cd6286542478f21c1afa +Author: Pavel Holejsovsky +AuthorDate: Mon Dec 27 16:47:26 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Mon Dec 27 16:47:26 2010 +0100 + + Add GI annotations to GMemory{Input|Output}Stream + + gio/gmemoryinputstream.c | 8 ++++---- + gio/gmemoryoutputstream.c | 12 ++++++------ + 2 files changed, 10 insertions(+), 10 deletions(-) + +commit 53fee54b4f70d209a93f77effa2e9d2b1c8465e8 +Author: Pavel Holejsovsky +AuthorDate: Mon Dec 27 16:29:20 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Mon Dec 27 16:29:20 2010 +0100 + + Add GI annotations to GConverter + + gio/gconverter.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit c8fd3e31caae45988a16442bd39ac4038cc4c510 +Author: Pavel Holejsovsky +AuthorDate: Mon Dec 27 16:24:21 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Mon Dec 27 16:24:21 2010 +0100 + + Add GI annotations to GSeekable + + gio/gseekable.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5a8d012d296ab6eba4e26c59cfe06d3f8d582e70 +Author: Pavel Holejsovsky +AuthorDate: Mon Dec 27 16:08:46 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Mon Dec 27 16:08:46 2010 +0100 + + Add GI annotations to GIcon and related classes and interfaces + + gio/gemblem.c | 6 +++--- + gio/gemblemedicon.c | 4 ++-- + gio/gicon.c | 4 ++-- + gio/gloadableicon.c | 12 +++++++----- + gio/gthemedicon.c | 2 +- + 5 files changed, 15 insertions(+), 13 deletions(-) + +commit 7a1fbcd959ab22d356dbbaa807169089636cac99 +Author: Pavel Holejsovsky +AuthorDate: Mon Dec 27 15:48:31 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Mon Dec 27 15:48:31 2010 +0100 + + Add GI annotations to GFileEnumerator + + gio/gfileenumerator.c | 16 ++++++++-------- + gio/gfileenumerator.h | 4 ++-- + 2 files changed, 10 insertions(+), 10 deletions(-) + +commit 1f84c5b72f7e5bd096b0f9458ccc9eed7f64ace5 +Author: Pavel Holejsovsky +AuthorDate: Mon Dec 27 15:40:07 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Mon Dec 27 15:40:07 2010 +0100 + + Add GI annotations to GAppInfo and GDesktopAppInfo + + gio/gappinfo.c | 4 ++-- + gio/gappinfo.h | 2 +- + gio/gdesktopappinfo.c | 5 +++-- + 3 files changed, 6 insertions(+), 5 deletions(-) + +commit e2b185f97aeba30c8c0f051da2f988b7e45c6a93 +Author: Aron Xu +AuthorDate: Sat Dec 25 16:50:40 2010 +0000 +Commit: Aron Xu +CommitDate: Sat Dec 25 16:50:40 2010 +0000 + + Update Simplified Chinese translation. + + po/zh_CN.po | 251 + ++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 126 insertions(+), 125 deletions(-) + +commit ec6a9e71dbcd5a7a413247738eb8e40f020622ae +Author: Jorge Gonzalez +AuthorDate: Thu Dec 23 19:57:19 2010 +0100 +Commit: Daniel Mustieles +CommitDate: Thu Dec 23 19:57:19 2010 +0100 + + Updated Spanish translation + + po/es.po | 355 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 175 insertions(+), 180 deletions(-) + +commit bb1d3fe1d3fbc022f541cbadb2caa969ff5efeba +Author: Gheyret T.Kenji +AuthorDate: Thu Dec 23 18:51:06 2010 +0100 +Commit: Abduxukur Abdurixit +CommitDate: Thu Dec 23 18:51:06 2010 +0100 + + Added UG translation + + po/ug.po | 547 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 280 insertions(+), 267 deletions(-) + +commit efd2bf9de4dbb31974fedb5ac4a5f033c7bd092a +Author: Yaron Shahrabani +AuthorDate: Thu Dec 23 17:20:21 2010 +0200 +Commit: Yaron Shahrabani +CommitDate: Thu Dec 23 17:20:21 2010 +0200 + + Updated Hebrew translation. + + po/he.po | 240 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 120 insertions(+), 120 deletions(-) + +commit 37ef8cbba5f8fae5c3f56a16925f68346944548d +Author: Brian Cameron +AuthorDate: Wed Dec 22 01:37:21 2010 -0600 +Commit: Brian Cameron +CommitDate: Wed Dec 22 01:37:21 2010 -0600 + + Fix for bug #637720. void functions should not return a value. + + gio/gsimpleactiongroup.c | 4 ++-- + gio/gtlsconnection.c | 6 +++--- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit 86b250019afaa572b7badee0f477401251d89ee1 +Author: Pavel Holejsovsky +AuthorDate: Tue Dec 21 18:19:16 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Tue Dec 21 18:21:33 2010 +0100 + + Add GI annotations to GBufferedInputStream + + gio/gbufferedinputstream.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +commit 5ea4fa75bd16a255786a37502cd09489055cc22d +Author: Pavel Holejsovsky +AuthorDate: Tue Dec 21 18:00:48 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Tue Dec 21 18:21:33 2010 +0100 + + Add GI annotations to GData{Input|Output}Stream + + gio/gdatainputstream.c | 96 + ++++++++++++++++++++++++++----------------------- + gio/gdataoutputstream.c | 16 ++++----- + 2 files changed, 59 insertions(+), 53 deletions(-) + +commit e78c27256a73dcb0651340b9b3481a3fb8df303c +Author: Pavel Holejsovsky +AuthorDate: Tue Dec 21 17:35:11 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Tue Dec 21 18:21:33 2010 +0100 + + Add GI annotations to GSimpleAsyncResult + + gio/gasyncresult.h | 4 ++-- + gio/gsimpleasyncresult.c | 40 ++++++++++++++++++++-------------------- + 2 files changed, 22 insertions(+), 22 deletions(-) + +commit 0165efd6034d1b065be755a01e829028f1329b2c +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Tue Dec 21 19:51:54 2010 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Tue Dec 21 19:53:00 2010 +0700 + + Updated Vietnamese translation + + po/vi.po | 445 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 228 insertions(+), 217 deletions(-) + +commit 56de8a1ce059adaa5a050d9dc75646c12340f838 +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Mon Dec 20 17:39:39 2010 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Tue Dec 21 19:53:00 2010 +0700 + + po/vi.po: import from Damned Lies + + po/vi.po | 2400 + +++++++++++++++++++++++++++++++++++++++++++------------------- + 1 file changed, 1658 insertions(+), 742 deletions(-) + +commit 12cf4af5bbdfaf5abde1e3eaaba6df85edc7419b +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Tue Dec 21 19:50:33 2010 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Tue Dec 21 19:53:00 2010 +0700 + + gio: typo fix + + gio/gsocks5proxy.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 99fe4b1da7560e1df2d9352ddbd845a5d9a62429 +Author: Ryan Lortie +AuthorDate: Sat Dec 18 18:52:32 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Dec 20 20:50:19 2010 -0500 + + Bug 637544 - Skip fsync() on btrfs + + For g_file_set_contents() we fsync() before renaming the file over the + original in order to ensure that we don't end up with an invalid file. + btrfs provides this guarantee for us without the fsync() so skip it + there. + + glib/gfileutils.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +commit dce0c1c56388033b37a25f4d065383655ae8d9c9 +Author: Matthias Clasen +AuthorDate: Mon Dec 20 16:47:10 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 20 16:47:10 2010 -0500 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8f5904ccbcd45d30a7ed6da4f0b8b8f0c221bb99 +Author: Matthias Clasen +AuthorDate: Mon Dec 20 14:03:45 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 20 14:03:45 2010 -0500 + + Update NEWS + + NEWS | 45 +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 45 insertions(+) + +commit 30587a3a602fb0de2540ea220c1484763a18ff47 +Author: Xavier Claessens +AuthorDate: Mon Dec 20 18:52:44 2010 +0100 +Commit: Xavier Claessens +CommitDate: Mon Dec 20 18:52:44 2010 +0100 + + Add io-stream in gitignore + + gio/tests/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit 8d272eb662180fe60cfa566b669797a0b57cbf0d +Author: Xavier Claessens +AuthorDate: Mon Dec 20 18:44:49 2010 +0100 +Commit: Xavier Claessens +CommitDate: Mon Dec 20 18:50:33 2010 +0100 + + Add g_sequence_lookup{_iter} into symbols + + glib/glib.symbols | 2 ++ + 1 file changed, 2 insertions(+) + +commit 6a10591573a56c5dfe1ac5b8315447f63d29dd39 +Author: Cosimo Cecchi +AuthorDate: Mon Dec 20 17:44:51 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Mon Dec 20 18:19:13 2010 +0100 + + appinfo: avoid overriding the system defaults when adding support + + We want to be compatible with the following situation: + - there's no explicit default set in mimeapps.list + - we add support for a content type to a specific application, + and that + list is empty + - the default should be picked from the system list, not overridden by + the user-added application. + + So we make the default explicit in this case, by adding it to the + relevant section in mimeapps.list. + + https://bugzilla.gnome.org/show_bug.cgi?id=637675 + + gio/gdesktopappinfo.c | 47 + ++++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 38 insertions(+), 9 deletions(-) + +commit e666a2ed696a9545a23371b53c4a07471b635d5c +Author: Xavier Claessens +AuthorDate: Fri Dec 10 10:17:44 2010 +0100 +Commit: Xavier Claessens +CommitDate: Mon Dec 20 17:30:58 2010 +0100 + + Add note in g_sequence_search() doc about g_sequence_lookup() + + glib/gsequence.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 50f96ae79b329154e55ac63b1ab8b0ff650bf871 +Author: Xavier Claessens +AuthorDate: Fri Dec 10 10:14:06 2010 +0100 +Commit: Xavier Claessens +CommitDate: Mon Dec 20 17:30:58 2010 +0100 + + Add unit test for g_sequence_lookup() and g_sequence_lookup_iter(). + + glib/tests/sequence.c | 76 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 76 insertions(+) + +commit 4e309043311487d66157383991373107eac1f7b9 +Author: Xavier Claessens +AuthorDate: Fri Apr 30 13:55:53 2010 +0200 +Commit: Xavier Claessens +CommitDate: Mon Dec 20 17:30:58 2010 +0100 + + New API: g_sequence_lookup() and g_sequence_lookup_iter() + + Fixes bug #617254 + + docs/reference/glib/glib-sections.txt | 2 + + glib/gsequence.c | 132 + +++++++++++++++++++++++++++++++++- + glib/gsequence.h | 8 +++ + 3 files changed, 141 insertions(+), 1 deletion(-) + +commit 1f9e34cab7b474a2b98c52d111a61f596ae33b58 +Author: Christian Dywan +AuthorDate: Mon Dec 20 17:15:15 2010 +0100 +Commit: Christian Dywan +CommitDate: Mon Dec 20 17:22:19 2010 +0100 + + Allow null object in g_simple_async_report_gerror_in_idle + + Follow-up on bug 636673. + + gio/gsimpleasyncresult.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 678bcad92c2a6350cd5dbf4ea3a567d99cf4c29d +Author: Cosimo Cecchi +AuthorDate: Wed Dec 15 17:56:22 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Mon Dec 20 15:43:58 2010 +0100 + + appinfo: add g_app_info_set_as_last_used_for_type() + + This commit also changes (maintaining compatibility) the way + user-specified default applications are stored (as in, those for which + g_app_info_set_as_default_for_type() has been called. + + We now store the default application for a content type in a new group + in the mimeapps.list keyfile, and "Added Associations" tracks only the + applications that have been added by the user, following a + most-recently-used first order. + + This is useful in GtkAppChooser-like widgets to pre-select the + last used + application when constructing a widget. + + https://bugzilla.gnome.org/show_bug.cgi?id=636311 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gappinfo.c | 27 ++++ + gio/gappinfo.h | 7 + + gio/gdesktopappinfo.c | 291 + ++++++++++++++++++++++++++++-------- + gio/gio.symbols | 1 + + gio/tests/desktop-app-info.c | 51 +++++++ + 6 files changed, 314 insertions(+), 64 deletions(-) + +commit 01ba7bd8e8984609d411b70a8ac9db4e8b64fb06 +Author: Cosimo Cecchi +AuthorDate: Thu Dec 9 18:31:19 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Mon Dec 20 15:39:00 2010 +0100 + + emblemedicon: make GEmblemedIcon subclassable + + Hiding the object/class structs in the source file makes this + class not + subclassable. + + Move them to the public header, and add a property for the icon, + so that + subclasses can just use + + g_object_new (DERIVED_TYPE, + "gicon", icon, + NULL); + + to create an emblemed icon. + + https://bugzilla.gnome.org/show_bug.cgi?id=636892 + + gio/gemblemedicon.c | 119 + ++++++++++++++++++++++++++++++++++++++-------------- + gio/gemblemedicon.h | 14 +++++++ + 2 files changed, 101 insertions(+), 32 deletions(-) + +commit bc4e1fc622d0bc61f8978a6c3df98d6c0ab12226 +Author: Matthias Clasen +AuthorDate: Mon Dec 20 09:16:05 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 20 09:16:05 2010 -0500 + + Add a delay-apply property to GSettings + + Bug 637147, patch by Matt Barnes. + + gio/gsettings.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit 21c764cd9fca4d0568258d84cbb82b858d06292a +Author: Mattias Põldaru +AuthorDate: Mon Dec 20 13:55:19 2010 +0200 +Commit: Priit Laes +CommitDate: Mon Dec 20 13:55:19 2010 +0200 + + [l10n] Updated Estonian translation + + po/et.po | 565 + +++++++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 373 insertions(+), 192 deletions(-) + +commit fef417575c1cac47f9d9a2b386ad386ec4272d45 +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Mon Dec 20 17:26:00 2010 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Mon Dec 20 17:26:00 2010 +0700 + + Updated Vietnamese translation + + po/vi.po | 621 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 319 insertions(+), 302 deletions(-) + +commit 3264d8d1598916a59775ed07969ff0d20b8790e0 +Author: Pavel Holejsovsky +AuthorDate: Sun Dec 19 22:15:42 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Sun Dec 19 22:20:21 2010 +0100 + + Add GI annotations to GClosure and friends. + + gobject/gclosure.c | 29 +++++++++++++++-------------- + gobject/gobject.c | 2 +- + 2 files changed, 16 insertions(+), 15 deletions(-) + +commit ea577d60d451bc7102695046fb1c3f80fb3e1769 +Author: Pavel Holejsovsky +AuthorDate: Sun Dec 19 10:39:36 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Sun Dec 19 10:39:36 2010 +0100 + + Add GI annotations to GValue and GValueArray. + + gobject/gboxed.c | 4 ++-- + gobject/gobject.c | 6 +++--- + gobject/gparam.c | 4 ++-- + gobject/gvalue.c | 13 ++++++------- + gobject/gvaluearray.c | 29 +++++++++++++++-------------- + gobject/gvaluetypes.c | 2 +- + 6 files changed, 29 insertions(+), 29 deletions(-) + +commit ddc126cf2cbbdbc3a98e7bd397f19fb0ac8c27c4 +Author: Christian Dywan +AuthorDate: Fri Dec 10 15:07:04 2010 +0100 +Commit: Christian Dywan +CommitDate: Fri Dec 17 17:38:04 2010 +0100 + + g_simple_async_report_error_in_idle with no object + + Document and allow passing of NULL for the object consistently to + _take_error and _report_error functions. + + Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=636673 + + gio/gsimpleasyncresult.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +commit f0354ff0590f0350ebdb1ee8eb84e7b6cdd1e850 +Author: Javier Jardón +AuthorDate: Fri Dec 17 16:12:16 2010 +0000 +Commit: Javier Jardón +CommitDate: Fri Dec 17 16:12:16 2010 +0000 + + grand: Fix URLs for info on the Mersenne Twister + + Reported by Allin Cottrell here: + http://mail.gnome.org/archives/gtk-devel-list/2010-December/msg00134.html + + glib/grand.c | 4 ++-- + glib/grand.h | 2 +- + glib/tests/rand.c | 3 ++- + 3 files changed, 5 insertions(+), 4 deletions(-) + +commit 89b558077f97c630c5b26b3527a6c7d0515f1f2c +Author: Pavel Holejsovsky +AuthorDate: Fri Dec 17 16:24:33 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Fri Dec 17 16:29:05 2010 +0100 + + [gi] Add annotations for GFile, G[File]{Input|Output|IO}Stream. + + Also make parameter names in virtual function declarations consistent + to silent g-ir-scanner. + + gio/gfile.c | 183 + ++++++++++++++++++++++++------------------------ + gio/gfileinputstream.c | 8 +-- + gio/gfileinputstream.h | 2 +- + gio/gfileiostream.c | 8 +-- + gio/gfileiostream.h | 2 +- + gio/gfileoutputstream.h | 2 +- + gio/ginputstream.c | 28 ++++---- + gio/giostream.c | 14 ++-- + gio/goutputstream.c | 36 +++++----- + gio/goutputstream.h | 2 +- + 10 files changed, 143 insertions(+), 142 deletions(-) + +commit 101dcecb1f1c53041c228cd4f5c4580743a7362a +Author: Matthias Clasen +AuthorDate: Fri Dec 17 08:35:54 2010 -0500 +Commit: Matthias Clasen +CommitDate: Fri Dec 17 08:37:21 2010 -0500 + + Update symbols list for recent changes + + gio/gio.symbols | 18 +++--------------- + 1 file changed, 3 insertions(+), 15 deletions(-) + +commit ac4722df1c9802b0c78bba31aa9004348eb1813d +Author: Will Thompson +AuthorDate: Fri Dec 17 12:34:28 2010 +0000 +Commit: Will Thompson +CommitDate: Fri Dec 17 13:21:07 2010 +0000 + + g_object_get_property: document that value must be initialized + + I couldn't tell from reading the documentation whether I had to + pass in + an uninitialized value, or a value initialized to the exact type, or + something else. It turns out (from reading the source) that you + have to + pass in an initialized value, but you can use any type to which the + property's actual type can be transformed. + + So, let's document this. + + gobject/gobject.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit d3ce12571cf8dc9f925ffa344887c26b16bcbf1e +Author: Kjartan Maraas +AuthorDate: Fri Dec 17 13:03:18 2010 +0100 +Commit: Kjartan Maraas +CommitDate: Fri Dec 17 13:04:25 2010 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 275 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 144 insertions(+), 131 deletions(-) + +commit f33ccd4b41aa4d3bfde71adefef74bb22c6bffcb +Author: Pavel Holejsovsky +AuthorDate: Thu Dec 16 21:06:51 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Thu Dec 16 21:06:51 2010 +0100 + + [gi] Fix GObject.Object annotations. + + gio/gsettings.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 6f215e477dd91446f64d3ae4a05e47d0138a5d0d +Author: John (J5) Palmieri +AuthorDate: Thu Dec 16 13:44:56 2010 -0500 +Commit: John (J5) Palmieri +CommitDate: Thu Dec 16 13:48:31 2010 -0500 + + [gi] add annotations for methods which take a gpointer which are + really GObjects + + * bindings need to know how to marshal the pointer otherwise they + send in + the raw wrapped pointer causing crashes + + gio/gsettings.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 2b6c801d10b5ee1ab11cf0612e34db74c6985fbd +Author: Murray Cumming +AuthorDate: Thu Dec 16 10:57:18 2010 +0100 +Commit: Murray Cumming +CommitDate: Thu Dec 16 10:57:39 2010 +0100 + + gioenums.h: Remove a trailing comma. + + gio/gioenums.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 274ef35fd44ca272d80966a9f1fd17ecce1bc46f +Author: Cosimo Cecchi +AuthorDate: Tue Dec 14 18:33:17 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Wed Dec 15 18:03:13 2010 +0100 + + tests: remove a bogus assumption + + gio/tests/desktop-app-info.c | 3 --- + 1 file changed, 3 deletions(-) + +commit 683a5632c89b311111503a03290ff75ad705ac46 +Author: Matthias Clasen +AuthorDate: Wed Dec 15 11:56:44 2010 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 15 11:56:44 2010 -0500 + + Remove GPeriodic for now + + The necessary review and integration work has not happened, and + we don't want to enshrine it in this unproven state. + It will be back when the world is ready for it. + + docs/reference/gio/gio-docs.xml | 4 - + docs/reference/gio/gio-sections.txt | 26 -- + docs/reference/gio/gio.types | 1 - + gio/Makefile.am | 2 - + gio/gio.h | 1 - + gio/gperiodic.c | 765 + ------------------------------------ + gio/gperiodic.h | 88 ----- + 7 files changed, 887 deletions(-) + +commit 1bbf4cb87c2a0b028de4b65377d0b21cbb49d8f2 +Author: Matthias Clasen +AuthorDate: Wed Dec 15 11:41:05 2010 -0500 +Commit: Matthias Clasen +CommitDate: Wed Dec 15 11:41:05 2010 -0500 + + Remove the dead --disable-visiblity configure option + + At the same time, document --disable-Bsymbolic. + + configure.ac | 8 -------- + docs/reference/glib/building.sgml | 25 ++++++++++++------------- + gthread/tests/1bit-mutex.c | 3 --- + 3 files changed, 12 insertions(+), 24 deletions(-) + +commit 92c22e7ca78670e35df9150169f6837c1dc1d99b +Author: Ryan Lortie +AuthorDate: Wed Dec 15 11:36:14 2010 -0500 +Commit: Ryan Lortie +CommitDate: Wed Dec 15 11:36:14 2010 -0500 + + Fix some leaks in the GVDB builder + + gvdb-builder.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 9411d0c108d6c5b122f82666467ad9cb42eeccd1 +Author: Cosimo Cecchi +AuthorDate: Wed Dec 15 12:50:59 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Wed Dec 15 12:50:59 2010 +0100 + + docs: fix a typo + + gio/gemblemedicon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bfee021cfb24a97b99612f6314e9309f3a70f6db +Author: Cosimo Cecchi +AuthorDate: Wed Dec 15 12:49:22 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Wed Dec 15 12:49:22 2010 +0100 + + emblemedicon: add docs for _clear_emblems() + + docs/reference/gio/gio-sections.txt | 1 + + gio/gemblemedicon.c | 8 ++++++++ + gio/gio.symbols | 1 + + 3 files changed, 10 insertions(+) + +commit f53d518a3de99eb8418a35b8f1e163026130687b +Author: Cosimo Cecchi +AuthorDate: Thu Dec 9 18:16:17 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Wed Dec 15 11:45:20 2010 +0100 + + emblemedicon: add g_emblemed_icon_clear_emblems() + + https://bugzilla.gnome.org/show_bug.cgi?id=637171 + + gio/gemblemedicon.c | 12 ++++++++++++ + gio/gemblemedicon.h | 1 + + 2 files changed, 13 insertions(+) + +commit 056a5d753d14b505c3250ccb4a5de92dbdc67a58 +Author: Cosimo Cecchi +AuthorDate: Tue Dec 14 17:16:31 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Wed Dec 15 11:43:14 2010 +0100 + + gapplication: plug a memory leak + + https://bugzilla.gnome.org/show_bug.cgi?id=637237 + + gio/gapplicationimpl-dbus.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 8c742aea720d491fc62eac24dbdab8986a849c2d +Author: Pavel Holejsovsky +AuthorDate: Wed Dec 15 11:17:00 2010 +0100 +Commit: Pavel Holejsovsky +CommitDate: Wed Dec 15 11:26:59 2010 +0100 + + Add missing annotations to GApplication and GApplicationCommandLine. + + gio/gapplication.c | 8 ++++---- + gio/gapplicationcommandline.c | 8 +++++--- + 2 files changed, 9 insertions(+), 7 deletions(-) + +commit 7ee902a3d05cc74a4edaf0197e076611401c029c +Author: Dan Winship +AuthorDate: Fri Dec 10 11:42:56 2010 +0100 +Commit: Dan Winship +CommitDate: Wed Dec 15 03:56:35 2010 -0500 + + ghostutils: Convert non-ASCII dots to '.' when converting hostnames + + Also add some test cases to test/hostutils for that and a few other + things, and make the test program just act as an ASCII/unicode + hostname converter rather than a test program if it's run with an + argument. + + https://bugzilla.gnome.org/show_bug.cgi?id=633350 + + glib/ghostutils.c | 53 ++++++++++++++++++++++++++++++++++--------- + glib/tests/hostutils.c | 61 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 103 insertions(+), 11 deletions(-) + +commit 09ce9dc542b26e133bc798f9a0382b642aea4470 +Author: Ted Gould +AuthorDate: Mon Dec 13 13:33:15 2010 -0500 +Commit: David Zeuthen +CommitDate: Mon Dec 13 13:33:15 2010 -0500 + + Bug 635626 – GDBus message idle can execute while flushes are + pending + + https://bugzilla.gnome.org/show_bug.cgi?id=635626 + + Signed-off-by: David Zeuthen + + gio/gdbusprivate.c | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +commit 735fcf918e70035874b50785524d25eda557d51f +Author: Peng Huang +AuthorDate: Mon Dec 13 13:09:38 2010 -0500 +Commit: David Zeuthen +CommitDate: Mon Dec 13 13:09:38 2010 -0500 + + Bug 632544 – Cannot send a locked message with PRESERVE_SERIAL flag + + https://bugzilla.gnome.org/show_bug.cgi?id=632544 + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 3 ++- + gio/tests/gdbus-connection.c | 18 +++++++++++++++--- + 2 files changed, 17 insertions(+), 4 deletions(-) + +commit a855f7270066a9268d52e97ad301315d27a6edb7 +Author: Xavier Claessens +AuthorDate: Mon Dec 13 17:59:47 2010 +0100 +Commit: Xavier Claessens +CommitDate: Mon Dec 13 17:59:47 2010 +0100 + + Add GIOStreamSpliceFlags to doc + + docs/reference/gio/gio-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit e4f25c0fed49acc46de2519837b78db6c12b2df4 +Author: Xavier Claessens +AuthorDate: Mon Dec 13 17:42:11 2010 +0100 +Commit: Xavier Claessens +CommitDate: Mon Dec 13 17:42:11 2010 +0100 + + Add Since 2.28 in g_io_stream_splice doc + + gio/gioenums.h | 2 ++ + gio/giostream.c | 4 ++++ + 2 files changed, 6 insertions(+) + +commit 0a2d47b626d130b0b795f76147c68132ede73b08 +Author: Xavier Claessens +AuthorDate: Fri Aug 13 10:10:48 2010 +0200 +Commit: Xavier Claessens +CommitDate: Mon Dec 13 17:36:12 2010 +0100 + + Add g_io_stream_splice_async/finish() + + That function splice the output stream of both GIOStreams to the + input stream + of the other GIOStream. + + docs/reference/gio/gio-sections.txt | 2 + + gio/gioenums.h | 19 +++ + gio/giostream.c | 248 + ++++++++++++++++++++++++++++++++++++ + gio/giostream.h | 11 ++ + gio/tests/Makefile.am | 4 + + gio/tests/io-stream.c | 185 +++++++++++++++++++++++++++ + 6 files changed, 469 insertions(+) + +commit 69c6e41b54085a7febc769f3b0582abf7c650a5f +Author: Matthias Clasen +AuthorDate: Mon Dec 13 09:04:28 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 13 09:19:35 2010 -0500 + + Document the GIO_USE_TLS environment variable + + docs/reference/gio/overview.xml | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit 78c34bb34f6035e01ee41a57ab4b3f2c2f91cc4d +Author: Christian Persch +AuthorDate: Tue Nov 16 19:22:10 2010 +0100 +Commit: Christian Persch +CommitDate: Sun Dec 12 13:26:02 2010 +0100 + + Fix gsettings enum rule to work with non-srcdir builds + + Bug #635007. + + m4macros/gsettings.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ce50df7e0e744a5a6f3d9e41d2b2f872f6174792 +Author: Christian Persch +AuthorDate: Tue Nov 9 22:56:28 2010 +0100 +Commit: Christian Persch +CommitDate: Sun Dec 12 13:25:34 2010 +0100 + + Better error reporting for g_variant_parse() + + Add error codes, and use them when setting the GError. + + Bug #634583. + + gio/gsettings-tool.c | 4 ++- + glib/gvariant-parser.c | 83 + +++++++++++++++++++++++++++++++++++++++++--------- + glib/gvariant.h | 19 +++++++++++- + 3 files changed, 89 insertions(+), 17 deletions(-) + +commit ad56426bc784ab0979264058444781246e42661f +Author: Dan Winship +AuthorDate: Fri Dec 10 10:01:01 2010 +0100 +Commit: Dan Winship +CommitDate: Fri Dec 10 10:01:22 2010 +0100 + + Add missing property to GDummyTlsCertificate + + gio/gdummytlsbackend.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit ca38bddd6e5dc18db8fd8695d88c4de5183c7fe9 +Author: Benjamin Otte +AuthorDate: Tue Dec 7 17:55:03 2010 +0100 +Commit: Benjamin Otte +CommitDate: Tue Dec 7 19:39:24 2010 +0100 + + gio: Add a count to the resolver test for number of enumerators + + This adds the nice stress-test feature of having 5 enumerators running + at the same time. Yay! + + gio/tests/resolver.c | 40 ++++++++++++++++++++++++++-------------- + 1 file changed, 26 insertions(+), 14 deletions(-) + +commit bd227f52195f28460bc96d719d1ff70c28966d26 +Author: Benjamin Otte +AuthorDate: Tue Dec 7 17:25:01 2010 +0100 +Commit: Benjamin Otte +CommitDate: Tue Dec 7 19:39:24 2010 +0100 + + gio: Make enumerating a GNetworkAddress work more than once + + Previously, the code only initialized the enumerator if the address + hadn't had cached addresses. But creating an enumerator cached the + addresses, so the second one failed to work. + + gio/gnetworkaddress.c | 94 + +++++++++++++++++++++++++++------------------------ + 1 file changed, 50 insertions(+), 44 deletions(-) + +commit 07fd29c3236e479a217a5ad9875075537dfb3173 +Author: Benjamin Otte +AuthorDate: Tue Dec 7 16:06:38 2010 +0100 +Commit: Benjamin Otte +CommitDate: Tue Dec 7 19:39:24 2010 +0100 + + tls: Make g_tls_{client|server}_connection_new() return a GIOStream + + The main use case for these objects is as an IO stream, so it makes + sense to return them that way from the start. + + gio/gsocketclient.c | 12 +++++++----- + gio/gtlsclientconnection.c | 4 ++-- + gio/gtlsclientconnection.h | 2 +- + gio/gtlsserverconnection.c | 4 ++-- + gio/gtlsserverconnection.h | 2 +- + gio/tests/socket-client.c | 2 +- + gio/tests/socket-server.c | 4 ++-- + 7 files changed, 16 insertions(+), 14 deletions(-) + +commit c59ba60fbe0ad4d45b2d84608bece5bb032c3aa9 +Author: Benjamin Otte +AuthorDate: Tue Dec 7 15:42:10 2010 +0100 +Commit: Benjamin Otte +CommitDate: Tue Dec 7 19:39:23 2010 +0100 + + tls: Clarify docs for g_tls_client_connection_set_validation_flags() + + And fix a typo in there. + + gio/gtlsclientconnection.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 85adbc99bfa079df777ca148884e52fead3bfe7b +Author: Emilio Pozuelo Monfort +AuthorDate: Tue Dec 7 17:45:06 2010 +0100 +Commit: Emilio Pozuelo Monfort +CommitDate: Tue Dec 7 17:46:21 2010 +0100 + + Fix error in GSimpleAsyncResult example + + gio/gsimpleasyncresult.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f5c3e0d3d5aeed065fd09293dae6574b4a31568c +Author: Dan Winship +AuthorDate: Tue Dec 7 14:58:42 2010 +0100 +Commit: Dan Winship +CommitDate: Tue Dec 7 14:58:42 2010 +0100 + + Change the handling of the peer certificate in GTlsConnection + + Make the certificate and peer-certificate properties virtual, and add + peer-certificate-errors as well. Change the documentation on + peer-certificate to say that it's not set until after the handshake + succeeds (which means notify::peer-certificate can be used to tell + when a handshake has completed). + + docs/reference/gio/gio-sections.txt | 2 +- + gio/gio.symbols | 2 +- + gio/gtlsconnection.c | 162 + ++++++++++++++++-------------------- + gio/gtlsconnection.h | 60 +++++++------ + 4 files changed, 105 insertions(+), 121 deletions(-) + +commit b5a707ec90f75aac499c9804592ebb14257cf751 +Author: Dan Winship +AuthorDate: Mon Dec 6 17:21:16 2010 +0100 +Commit: Dan Winship +CommitDate: Tue Dec 7 10:41:06 2010 +0100 + + Clarify that g_socket_client_connect_to_uri() doesn't know about TLS + + gio/gsocketclient.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 4f6efb681d7a85d9d04ffdba9a5f692e3d53e41e +Author: Dan Winship +AuthorDate: Mon Dec 6 13:10:09 2010 +0100 +Commit: Dan Winship +CommitDate: Tue Dec 7 10:41:06 2010 +0100 + + Change the semantics of GTlsConnection:require-close-notify + + We were combining "allow un-notified closes" and "close without + notifying" into a single property, which meant that it was impossible + to "be liberal in what you accept and conservative in what you send". + Change require-close-notify to only be about the peer behavior, and + make our connections always close-notify properly when closing (while + noting that you can just close the base-io-stream directly if you want + to do an unclean close). + + gio/gtlsconnection.c | 32 ++++++++++++++++++++------------ + 1 file changed, 20 insertions(+), 12 deletions(-) + +commit 68a3d6b27fec3bdbba27b414c0ed10396c79d3c6 +Author: Dan Winship +AuthorDate: Mon Dec 6 12:43:59 2010 +0100 +Commit: Dan Winship +CommitDate: Tue Dec 7 10:41:06 2010 +0100 + + add G_TLS_ERROR_UNAVAILABLE + + gio/gdummytlsbackend.c | 4 ++-- + gio/gioenums.h | 2 ++ + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit 95cba183494a78ff16924e820c344e8c3fa0e7a6 +Author: Dan Winship +AuthorDate: Mon Dec 6 11:04:13 2010 +0100 +Commit: Dan Winship +CommitDate: Tue Dec 7 10:41:05 2010 +0100 + + Remove GTlsConnection::need-certificate + + Trying to do this as a signal won't work well with either + GTlsCertificateDB (in which case looking up a certificate in the db is + a blocking/asynchronous act) or session resumption support (in which + case the certificate or lack thereof is part of the session definition + and so needs to be known immediately). Make the caller use + g_tls_connection_set_certificate() ahead of time (or when retrying) + instead. + + docs/reference/gio/gio-sections.txt | 1 - + gio/gio.symbols | 1 - + gio/gioenums.h | 2 +- + gio/gtlsclientconnection.c | 3 +- + gio/gtlsconnection.c | 131 + +++++++++--------------------------- + gio/gtlsconnection.h | 3 - + 6 files changed, 35 insertions(+), 106 deletions(-) + +commit d6e94070ddb015e73573a620234a8929f8aaac16 +Author: Dan Winship +AuthorDate: Wed Dec 1 13:49:39 2010 -0500 +Commit: Dan Winship +CommitDate: Tue Dec 7 10:41:05 2010 +0100 + + Add GTlsConnection:use-system-certdb + + This can be set FALSE if you don't want to validate certificates + against the system database. + + docs/reference/gio/gio-sections.txt | 2 ++ + gio/gdummytlsbackend.c | 3 +- + gio/gio.symbols | 2 ++ + gio/gtlsconnection.c | 70 + +++++++++++++++++++++++++++++++++++++ + gio/gtlsconnection.h | 4 +++ + 5 files changed, 80 insertions(+), 1 deletion(-) + +commit 73d6bd8a45429f03706ac96e5d6e045ecee18500 +Author: Dan Winship +AuthorDate: Tue Nov 30 19:57:16 2010 -0500 +Commit: Dan Winship +CommitDate: Tue Dec 7 10:41:05 2010 +0100 + + Add g_tls_certificate_verify() + + Add a method to verify a certificate against a CA; this can be used + for apps that need to test against non-default CAs. + + Also make the GTlsCertificate::issuer property virtual + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 1 + + gio/gtlscertificate.c | 92 + +++++++++++++++++++------------------ + gio/gtlscertificate.h | 32 ++++++++----- + 4 files changed, 69 insertions(+), 57 deletions(-) + +commit 814c0fcaafd42c622634c7b6a34c126210b17fc2 +Author: Ryan Lortie +AuthorDate: Tue Dec 7 01:06:33 2010 -0500 +Commit: Ryan Lortie +CommitDate: Tue Dec 7 01:36:09 2010 -0500 + + Pass name_length to walk close function + + For efficiency and safety. This way we don't need to scan backwards + for + the path separator (trusting that we will find it properly). + + gvdb-reader.c | 29 ++++++++++++++++++++++++++++- + gvdb-reader.h | 3 ++- + 2 files changed, 30 insertions(+), 2 deletions(-) + +commit 6b631fa106e833c265a4bdc6c021777e2a219f12 +Author: Aron Xu +AuthorDate: Mon Dec 6 12:44:18 2010 +0000 +Commit: Aron Xu +CommitDate: Mon Dec 6 12:44:18 2010 +0000 + + Complete Simplified Chinese translation. + + po/zh_CN.po | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 67ab5579ba3c9c6a66e82313a61de8fdc9731b15 +Author: Aron Xu +AuthorDate: Mon Dec 6 12:40:03 2010 +0000 +Commit: Aron Xu +CommitDate: Mon Dec 6 12:40:03 2010 +0000 + + Update Simplified Chinese translation. + + po/zh_CN.po | 672 + +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 348 insertions(+), 324 deletions(-) + +commit 8530a3b029b7f691284d74e6e0c7883ba4a14725 +Author: Chris Kühl +AuthorDate: Mon Dec 6 00:34:43 2010 +0100 +Commit: Chris Kühl +CommitDate: Mon Dec 6 00:34:59 2010 +0100 + + Added note in g_slist_free about using *free_full to mirror GList docs + + glib/gslist.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 1a638926ff183ddb9afec8c364a58c191457e237 +Author: Yaron Shahrabani +AuthorDate: Sun Dec 5 13:19:55 2010 +0200 +Commit: Yaron Shahrabani +CommitDate: Sun Dec 5 13:19:55 2010 +0200 + + Updated Hebrew translation + + po/he.po | 258 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 136 insertions(+), 122 deletions(-) + +commit b52294d14ce7097c34538d4646f298461fb8d36e +Author: Matthias Clasen +AuthorDate: Sat Dec 4 14:12:07 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sat Dec 4 14:12:07 2010 -0500 + + Try to fix the version test on builders + + glib/tests/utils.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit 5b43de29327e1f829036ba9629835d2245f15cd3 +Author: Chao-Hsiung Liao +AuthorDate: Sat Dec 4 20:01:37 2010 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Sat Dec 4 20:01:37 2010 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 1472 + +++++++++++++++++++++++++++++++++------------------------- + po/zh_TW.po | 1491 + ++++++++++++++++++++++++++++++++++------------------------- + 2 files changed, 1720 insertions(+), 1243 deletions(-) + +commit 4b28e6a0084118c78c177da3f66c8005498b9873 +Author: Matthias Clasen +AuthorDate: Fri Dec 3 14:48:35 2010 -0500 +Commit: Matthias Clasen +CommitDate: Fri Dec 3 14:49:07 2010 -0500 + + Add missing Since: tag + + g_simple_async_result_is_valid was added in 2.20. + + Bug 636351 + + gio/gsimpleasyncresult.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 658572978b18cd11ba9d93c02d41969e1d7438eb +Author: Matthias Clasen +AuthorDate: Fri Dec 3 14:45:09 2010 -0500 +Commit: Matthias Clasen +CommitDate: Fri Dec 3 14:45:09 2010 -0500 + + Reword awkward sentence in the docs + + Pointed out in bug 636305, the docs for g_queue_remove_all() had + several grammatical errors and sounded awkward. + + glib/gqueue.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 99332dd27c8a62b6d72c70fe284c0477c99d2c61 +Author: Matthias Clasen +AuthorDate: Fri Dec 3 14:39:59 2010 -0500 +Commit: Matthias Clasen +CommitDate: Fri Dec 3 14:41:06 2010 -0500 + + Avoid shadowing dir builtin + + This is the same change that was already applied to the other gdb + script we ship. I had forgotten there was a second one. + + glib/libglib-gdb.py.in | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit d11f413345f8ae3da92f4aebcf828ed133cbafbb +Author: Colin Walters +AuthorDate: Fri Dec 3 14:25:51 2010 -0500 +Commit: Colin Walters +CommitDate: Fri Dec 3 14:26:28 2010 -0500 + + introspection: Remove spurious trailing : + + This isn't valid syntax. + + gio/gsimpleasyncresult.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 807101272893f27469bb5c507c7967334a5a0b8e +Author: Matthias Clasen +AuthorDate: Fri Dec 3 14:08:36 2010 -0500 +Commit: Matthias Clasen +CommitDate: Fri Dec 3 14:08:36 2010 -0500 + + Avoid shadowing the dir builtin + + Proposed by David Malcolm, + + https://bugzilla.gnome.org/show_bug.cgi?id=636387 + + gobject/libgobject-gdb.py.in | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 05428e3c1ac4888b841fca3aeb9c7c9b299d2280 +Author: Colin Walters +AuthorDate: Fri Dec 3 10:36:16 2010 -0500 +Commit: Colin Walters +CommitDate: Fri Dec 3 10:37:28 2010 -0500 + + glib: Document g_string_free semantics better in the FALSE case + + glib/gstring.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 426f90e3cf9f21c6b020cecb05116b331546fe58 +Author: Christian Dywan +AuthorDate: Fri Dec 3 16:33:24 2010 +0100 +Commit: Christian Dywan +CommitDate: Fri Dec 3 16:33:24 2010 +0100 + + Resolve warnings about istream and ostream in socket test + + gio/tests/socket-client.c | 6 +++++- + gio/tests/socket-server.c | 6 ++++++ + 2 files changed, 11 insertions(+), 1 deletion(-) + +commit 8f19d06ed932b8fa8b1d58c7a5676aa5590be1e4 +Author: Thomas Hindoe Paaboel Andersen +AuthorDate: Tue Nov 30 02:12:16 2010 +0100 +Commit: Thomas Hindoe Paaboel Andersen +CommitDate: Thu Dec 2 22:51:07 2010 +0100 + + Fix typo in docs for extension point + + Introduced in fcd3e3422749ddbbf29809fcc90ffe8df9d5f696 + + docs/reference/gio/overview.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 889889a296bfe58fc42a778d792d7f83f816145b +Author: Benjamin Otte +AuthorDate: Thu Dec 2 20:10:23 2010 +0100 +Commit: Benjamin Otte +CommitDate: Thu Dec 2 20:11:28 2010 +0100 + + glib: Fix enumeration warnings from gcc 4.5 + + Just introduce more values for our private enum for the cases + that were + missing. + + glib/giounix.c | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +commit 67740263e9a3de840e527dd45ba3d6feff512839 +Author: Benjamin Otte +AuthorDate: Thu Dec 2 20:09:59 2010 +0100 +Commit: Benjamin Otte +CommitDate: Thu Dec 2 20:11:28 2010 +0100 + + gobject: Cast token type to guint to avoid gcc warning + + The usual fix for all things GScanner... + + gobject/glib-genmarshal.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b9a98a81dad104058a11a4b788a64b21b235c62d +Author: Benjamin Otte +AuthorDate: Thu Dec 2 20:09:08 2010 +0100 +Commit: Benjamin Otte +CommitDate: Thu Dec 2 20:11:28 2010 +0100 + + gio: Comment out a whole test + + ... instead of just commenting out the registration and leaving + "unused + function" warnings for gcc. + + gio/tests/gdbus-peer.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit b92e2cd8f8d88a62f14c49e8255802512c156152 +Author: Benjamin Otte +AuthorDate: Thu Dec 2 20:08:34 2010 +0100 +Commit: Benjamin Otte +CommitDate: Thu Dec 2 20:11:28 2010 +0100 + + gio: Remove unused variables from test + + gio/tests/gapplication-example-actions.c | 3 --- + 1 file changed, 3 deletions(-) + +commit 3e61cb2fcc7648254192d0f174b437336b21c89b +Author: Bastien Nocera +AuthorDate: Thu Dec 2 16:59:22 2010 +0000 +Commit: Bastien Nocera +CommitDate: Thu Dec 2 16:59:22 2010 +0000 + + Fix typo in API docs for GDateTime + + s/monty/month/ + + glib/gdatetime.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9fe7fd9120940a2d50ff660f1a3cf7efd08ac01b +Author: Matthew Barnes +AuthorDate: Tue Nov 30 18:19:12 2010 -0600 +Commit: Matthew Barnes +CommitDate: Tue Nov 30 18:21:10 2010 -0600 + + Bug 636100 - Can't read GSettings:backend property + + The PROP_BACKEND case was missing from the switch statement in + g_settings_get_property(). + + gio/gsettings.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit beec9743eba6013229befafdfe120cd7701d5214 +Author: Damien Lespiau +AuthorDate: Tue Nov 30 23:04:17 2010 +0000 +Commit: Javier Jardón +CommitDate: Wed Dec 1 01:12:32 2010 +0100 + + gmain: Add Since: 2.28 tag to g_source_{add,remove}_child_source + + New API should have gtk-doc tags to document the version it was + introduced. + + Signed-off-by: Javier Jardón + + glib/gmain.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit c541d234855dc7466c57ebfc3dc44b1829d9a900 +Author: Jorge González +AuthorDate: Tue Nov 30 23:42:08 2010 +0100 +Commit: Jorge González +CommitDate: Tue Nov 30 23:42:08 2010 +0100 + + Updated Spanish translation + + po/es.po | 329 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 163 insertions(+), 166 deletions(-) + +commit fdc6c5fbc171187c6c2d7fdf94d0eea7992d11f4 +Author: Fran Diéguez +AuthorDate: Mon Nov 29 17:35:51 2010 +0100 +Commit: Fran Diéguez +CommitDate: Mon Nov 29 17:35:51 2010 +0100 + + Updated Galician translations + + po/gl.po | 159 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 86 insertions(+), 73 deletions(-) + +commit c897dea8c164bc081623c13ac4474bcbd66b908d +Author: Matthias Clasen +AuthorDate: Mon Nov 29 10:36:43 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 29 10:49:28 2010 -0500 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ff8817b631ab11f00c98ed372746b464a440e7c0 +Author: Matthias Clasen +AuthorDate: Mon Nov 29 09:30:07 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 29 10:49:28 2010 -0500 + + Update POTFILES.in + + po/POTFILES.in | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 50a8b039a4323faf0fac68bece1be151f7fd2986 +Author: Dan Winship +AuthorDate: Mon Nov 29 09:36:07 2010 -0500 +Commit: Dan Winship +CommitDate: Mon Nov 29 09:37:41 2010 -0500 + + tiny fix to g_io_modules_scan_all_in_directory() docs + + gio/giomodule.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 78103b2f1feb5ccbdc97e47d857133826f22820d +Author: Xan Lopez +AuthorDate: Mon Nov 29 15:29:12 2010 +0100 +Commit: Xan Lopez +CommitDate: Mon Nov 29 15:29:56 2010 +0100 + + gsettingsschema: plug leak + + gio/gsettingsschema.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit d7a83d2f590a3568c12a50f31ed5fdc9fc691a47 +Author: Matthias Clasen +AuthorDate: Mon Nov 29 08:10:11 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 29 08:10:11 2010 -0500 + + Add another bug + + NEWS | 1 + + 1 file changed, 1 insertion(+) + +commit 98bfc8afdaabffe4b63215727a580a139b7f07db +Author: Aleksander Morgado +AuthorDate: Thu Nov 18 18:00:57 2010 +0100 +Commit: Matthias Clasen +CommitDate: Mon Nov 29 08:06:31 2010 -0500 + + Fixes GB#635187: Always unbox GVariant parameter received via dbus + for an action + + gio/gapplicationimpl-dbus.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit fcd3e3422749ddbbf29809fcc90ffe8df9d5f696 +Author: Matthias Clasen +AuthorDate: Mon Nov 29 01:39:06 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 29 01:39:06 2010 -0500 + + Add new extension point to the list + + docs/reference/gio/overview.xml | 24 ++++++++++++++++++++++-- + 1 file changed, 22 insertions(+), 2 deletions(-) + +commit db83a96648944bd71ff9c1bd36c7ae898fc06664 +Author: Matthias Clasen +AuthorDate: Mon Nov 29 01:20:58 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 29 01:20:58 2010 -0500 + + Documentation tweak + + docs/reference/gobject/gobject-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit 02978fff17bcff0bf0135859114d6a06463f4e8d +Author: Matthias Clasen +AuthorDate: Mon Nov 29 01:16:02 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 29 01:16:02 2010 -0500 + + Update NEWS + + NEWS | 39 +++++++++++++++++++++++++++++++++++++++ + glib/gutils.c | 8 +++++--- + 2 files changed, 44 insertions(+), 3 deletions(-) + +commit eed36d38d155898a13961ef9fbb98d09049f331f +Author: Matthias Clasen +AuthorDate: Sun Nov 28 23:55:43 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Nov 28 23:55:43 2010 -0500 + + Various doc tweaks + + docs/reference/gio/gio-docs.xml | 8 ++-- + docs/reference/gio/gio-sections.txt | 3 +- + gio/gaction.c | 2 +- + gio/gactiongroup.c | 2 +- + gio/gapplicationcommandline.c | 3 +- + gio/gdesktopappinfo.c | 1 + + gio/gperiodic.c | 91 + +++++++++++++++++++++++-------------- + gio/gpermission.c | 2 +- + gio/gpollableinputstream.c | 9 ++-- + gio/gpollableinputstream.h | 2 +- + gio/gpollableoutputstream.c | 9 ++-- + gio/gsettings.c | 2 +- + gio/gsettingsbackend.c | 2 +- + gio/gsimpleaction.c | 2 +- + gio/gsimpleactiongroup.c | 2 +- + gio/gsimplepermission.c | 2 +- + gio/gtcpconnection.c | 2 +- + gio/gtcpwrapperconnection.c | 3 +- + gio/gtlsbackend.c | 2 +- + gio/gtlscertificate.c | 2 +- + gio/gtlsconnection.c | 7 +++ + 21 files changed, 91 insertions(+), 67 deletions(-) + +commit 1f044a503a9b1b021da970ab1bdfe203547798c1 +Author: Matthias Clasen +AuthorDate: Sun Nov 28 22:11:57 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Nov 28 22:11:57 2010 -0500 + + Remove nonexisting type + + docs/reference/gio/gio.types | 1 - + 1 file changed, 1 deletion(-) + +commit 4817dae0bb2dfe9d0b575356ddf43b2f3ecd41f5 +Author: Matt Rajca +AuthorDate: Sat Nov 13 10:01:34 2010 -0600 +Commit: Matthias Clasen +CommitDate: Sun Nov 28 18:35:03 2010 -0500 + + Removed mention of inexistent GNOME 2.0 porting guide + + docs/reference/glib/changes.sgml | 8 -------- + 1 file changed, 8 deletions(-) + +commit 577ddbf30baf53d8e74cd81f0a2babf590e91c26 +Author: Matt Rajca +AuthorDate: Sat Nov 13 13:01:11 2010 -0600 +Commit: Matthias Clasen +CommitDate: Sun Nov 28 18:29:50 2010 -0500 + + Fixed typo in public string in gsocks (630559) + + gio/gsocks5proxy.c | 2 +- + po/ar.po | 2 +- + po/be.po | 2 +- + po/bg.po | 2 +- + po/ca@valencia.po | 2 +- + po/cs.po | 2 +- + po/da.po | 2 +- + po/de.po | 2 +- + po/el.po | 2 +- + po/en_GB.po | 2 +- + po/es.po | 2 +- + po/et.po | 2 +- + po/eu.po | 2 +- + po/fi.po | 2 +- + po/fr.po | 2 +- + po/gl.po | 2 +- + po/he.po | 4 ++-- + po/hu.po | 2 +- + po/hy.po | 2 +- + po/id.po | 2 +- + po/it.po | 2 +- + po/ja.po | 2 +- + po/lt.po | 2 +- + po/nb.po | 2 +- + po/nl.po | 2 +- + po/pa.po | 2 +- + po/pl.po | 2 +- + po/pt.po | 2 +- + po/pt_BR.po | 2 +- + po/ro.po | 2 +- + po/sl.po | 2 +- + po/sr.po | 2 +- + po/sr@latin.po | 2 +- + po/sv.po | 2 +- + po/zh_CN.po | 2 +- + po/zh_HK.po | 2 +- + po/zh_TW.po | 2 +- + 37 files changed, 38 insertions(+), 38 deletions(-) + +commit dec8323b4b301bb5aff006706b5739bb9c930fd8 +Author: Jonas Holmberg +AuthorDate: Wed Sep 22 23:02:05 2010 +0200 +Commit: Matthias Clasen +CommitDate: Sun Nov 28 18:27:47 2010 -0500 + + gobject: added property test + + Added test for setting properties with g_object_new. + + gobject/tests/properties.c | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +commit 349f54756168b76913828136bc646c518c4f475f +Author: Jonas Holmberg +AuthorDate: Fri Sep 24 01:20:50 2010 +0200 +Commit: Matthias Clasen +CommitDate: Sun Nov 28 18:27:30 2010 -0500 + + gobject: initialize memory in g_object_new_valist + + memset parameters array in g_object_new_valist to zeroes when + expanding + the array to avoid acces to uninitialized memory. + + gobject/gobject.c | 1 + + 1 file changed, 1 insertion(+) + +commit 51894b7dd06a3b50654f9ce1fadff418d917aca1 +Author: Aleksander Morgado +AuthorDate: Thu Nov 25 18:38:33 2010 +0100 +Commit: Matthias Clasen +CommitDate: Sun Nov 28 18:20:59 2010 -0500 + + Fixes GB#530786: GFileMonitor 'changed' signal underdocumented + + gio/gfilemonitor.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +commit b4632e1c98e361cf4700f3e5dcc229a09a6237e4 +Author: Christian Persch +AuthorDate: Fri Nov 26 22:46:51 2010 +0100 +Commit: Matthias Clasen +CommitDate: Sun Nov 28 17:26:30 2010 -0500 + + Fix the wrong-category schema test + + It's supposed to test a with a non-existent + category, so make it actually check this! + + Bug #635882. + + gio/tests/gschema-compile.c | 2 +- + gio/tests/schema-tests/wrong-category.gschema.xml | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit bfbd7169a258ac9561f2d01755651046e13f462b +Author: Matthias Clasen +AuthorDate: Sun Nov 28 17:14:49 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Nov 28 17:14:49 2010 -0500 + + GFileMonitor: Don't accept negative values for rate-limit + + Patch by Alksander Morgado, + https://bugzilla.gnome.org/show_bug.cgi?id=635768 + + gio/gfilemonitor.c | 16 ++++++++-------- + gio/gfilemonitor.h | 2 +- + 2 files changed, 9 insertions(+), 9 deletions(-) + +commit 57143e311d600d3d7bd1f3c901d257918fcdb381 +Author: Christian Persch +AuthorDate: Fri Nov 26 21:05:20 2010 +0100 +Commit: Christian Persch +CommitDate: Sun Nov 28 19:01:21 2010 +0100 + + Inherit gettext-domain from + + When the doesn't have a 'gettext-domain' attribute, but + the does, use that one. + + Bug #635640. + + gio/glib-compile-schemas.c | 4 +++- + gio/tests/Makefile.am | 1 + + gio/tests/gschema-compile.c | 4 +++- + gio/tests/schema-tests/inherit-gettext-domain.gschema.xml | 8 ++++++++ + 4 files changed, 15 insertions(+), 2 deletions(-) + +commit 69129e806532796e44522775656c7800c389e5f8 +Author: Dan Winship +AuthorDate: Sat Nov 27 16:56:44 2010 -0500 +Commit: Dan Winship +CommitDate: Sat Nov 27 16:56:44 2010 -0500 + + Make gio/tests/g-icon pass again + + It got broken in two different ways by the g_str_hash() change + (354d655b) + + gio/tests/g-icon.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 17979707207ca004cd78991e1c04df60cb3b1cb6 +Author: Christian Persch +AuthorDate: Mon Nov 15 19:55:57 2010 +0100 +Commit: Christian Persch +CommitDate: Sat Nov 27 13:10:48 2010 +0100 + + Typo fix + + gio/gsettings.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d19e1a2c3c3da29e6f6c653dda9e4538e55c1838 +Author: Christian Persch +AuthorDate: Sat Nov 27 12:45:45 2010 +0100 +Commit: Christian Persch +CommitDate: Sat Nov 27 12:47:36 2010 +0100 + + Use same variable names in .h and .c + + glib/gvariant.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 59d62726de8efdd478ca1c940134df1112a006f2 +Author: Dan Winship +AuthorDate: Mon Dec 21 20:50:32 2009 +0100 +Commit: Dan Winship +CommitDate: Fri Nov 26 15:57:11 2010 -0500 + + Add initial TLS (SSL) support to gio + + This adds an extension point for TLS connections to gio, with a + gnutls-based implementation in glib-networking. + + Full TLS support is still a work in progress; the current API is + missing some features, and parts of it may still be changed before + 2.28. + + https://bugzilla.gnome.org/show_bug.cgi?id=588189 + + docs/reference/gio/gio-docs.xml | 9 + + docs/reference/gio/gio-sections.txt | 129 ++++++- + docs/reference/gio/gio.types | 5 + + gio/Makefile.am | 13 +- + gio/gdummytlsbackend.c | 274 ++++++++++++++ + gio/gdummytlsbackend.h | 46 +++ + gio/gio-marshal.list | 2 + + gio/gio.h | 5 + + gio/gio.symbols | 77 +++- + gio/gioenums.h | 100 +++++ + gio/giomodule.c | 6 + + gio/giotypes.h | 8 + + gio/gsocketclient.c | 310 +++++++++++++--- + gio/gsocketclient.h | 7 + + gio/gtlsbackend.c | 201 ++++++++++ + gio/gtlsbackend.h | 92 +++++ + gio/gtlscertificate.c | 486 ++++++++++++++++++++++++ + gio/gtlscertificate.h | 75 ++++ + gio/gtlsclientconnection.c | 333 +++++++++++++++++ + gio/gtlsclientconnection.h | 72 ++++ + gio/gtlsconnection.c | 720 + ++++++++++++++++++++++++++++++++++++ + gio/gtlsconnection.h | 137 +++++++ + gio/gtlsserverconnection.c | 96 +++++ + gio/gtlsserverconnection.h | 61 +++ + gio/tests/socket-client.c | 195 ++++++---- + gio/tests/socket-common.c | 61 +++ + gio/tests/socket-server.c | 164 ++++---- + 27 files changed, 3473 insertions(+), 211 deletions(-) + +commit a1690339c731cf037d3ed97eda864159f2ba9308 +Author: Dan Winship +AuthorDate: Mon Nov 1 20:22:24 2010 -0400 +Commit: Dan Winship +CommitDate: Fri Nov 26 15:08:31 2010 -0500 + + make GProxyConnection public, as GTcpWrapperConnection + + GProxyConnection is a class that was added for proxy support; + g_socket_client_connect() returns a GSocketConnection, but in some + cases (eg, encrypted SOCKS), GProxy might return a GIOStream that is + not a GSocketConnection. In that case, GSocketClient would wrap the + stream up in a GProxyConnection, which is a subclass of + GSocketConnection but uses the input/output streams of the wrapped + connection. + + GTlsConnection is not a GSocketConnection, so it has the same problem, + so it will need the same treatment. Rename the class to + GTcpWrapperStream, and make it public, so people can extract the base + stream from it when necessary. + + (This is not ideal and GSocketClient will need to be revisited as an + API at some point...) + + https://bugzilla.gnome.org/show_bug.cgi?id=588189 + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 19 ++++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 4 +- + gio/gio.h | 1 + + gio/gio.symbols | 8 ++ + gio/giotypes.h | 1 + + gio/gproxyconnection.c | 155 ---------------------------- + gio/gproxyconnection.h | 69 ------------- + gio/gsocketclient.c | 56 +++++----- + gio/gtcpwrapperconnection.c | 200 + ++++++++++++++++++++++++++++++++++++ + gio/gtcpwrapperconnection.h | 68 ++++++++++++ + 12 files changed, 332 insertions(+), 251 deletions(-) + +commit c20c2c0abd3bdb1b30b85a586ee6095ed75a7bc2 +Author: Dan Winship +AuthorDate: Sat Sep 18 13:05:25 2010 -0400 +Commit: Dan Winship +CommitDate: Fri Nov 26 15:08:08 2010 -0500 + + Add pollable input/output streams + + When interfacing with APIs that expect unix-style async I/O, it is + useful to be able to tell in advance whether a read/write is going to + block. This adds new interfaces GPollableInputStream and + GPollableOutputStream that can be implemented by a GInputStream or + GOutputStream to add _is_readable/_is_writable, _create_source, and + _read_nonblocking/_write_nonblocking methods. + + Also, implement for GUnixInput/OutputStream and + GSocketInput/OutputStream + + https://bugzilla.gnome.org/show_bug.cgi?id=634241 + + docs/reference/gio/gio-docs.xml | 2 + + docs/reference/gio/gio-sections.txt | 41 +++++ + docs/reference/gio/gio.types | 3 + + gio/Makefile.am | 4 + + gio/gio.h | 2 + + gio/gio.symbols | 21 +++ + gio/giotypes.h | 18 +++ + gio/gpollableinputstream.c | 304 + ++++++++++++++++++++++++++++++++++++ + gio/gpollableinputstream.h | 101 ++++++++++++ + gio/gpollableoutputstream.c | 201 ++++++++++++++++++++++++ + gio/gpollableoutputstream.h | 98 ++++++++++++ + gio/gsocketconnection.c | 3 +- + gio/gsocketinputstream.c | 59 ++++++- + gio/gsocketoutputstream.c | 60 ++++++- + gio/gunixinputstream.c | 51 +++++- + gio/gunixoutputstream.c | 50 +++++- + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 4 + + gio/tests/pollable.c | 240 ++++++++++++++++++++++++++++ + 19 files changed, 1251 insertions(+), 12 deletions(-) + +commit 6181c7de36771d4d3bb55785912a934e078b16df +Author: Dan Winship +AuthorDate: Sat Nov 6 15:49:55 2010 -0400 +Commit: Dan Winship +CommitDate: Fri Nov 26 15:07:28 2010 -0500 + + GCancellable: add g_cancellable_create_source() + + g_cancellable_create_source() returns a GSource that triggers when its + corresponding GCancellable is cancelled. This can be used with + g_source_add_child_source() to add cancellability to a source. + + Port gasynchelper's FDSource to use this rather than doing its own + cancellable handling, and also fix up its callback argument order to + be more normal. + + https://bugzilla.gnome.org/show_bug.cgi?id=634239 + + docs/reference/gio/gio-sections.txt | 2 + + gio/gasynchelper.c | 47 ++++----------- + gio/gcancellable.c | 116 + ++++++++++++++++++++++++++++++++++++ + gio/gcancellable.h | 2 + + gio/gio.symbols | 1 + + gio/giotypes.h | 15 +++++ + 6 files changed, 146 insertions(+), 37 deletions(-) + +commit d15cdbefecc235cfa431ee7de9c35af174bd1552 +Author: Dan Winship +AuthorDate: Sat Nov 6 10:11:15 2010 -0400 +Commit: Dan Winship +CommitDate: Fri Nov 26 15:07:28 2010 -0500 + + gmain: add g_source_add_child_source and g_source_remove_child_source + + This adds "child source" support to GSource. A child source behaves + basically like a GPollFD; when you add a source to a context, all of + its child sources are added with the same priority; when you destroy a + source, all of its child sources are destroyed; and when a child + source triggers, its parent source's dispatch function is run. + + Use cases include: + + - adding a GTimeoutSource to another source to cause the source to + automatically trigger after a certain timeout. + + - wrapping an existing source type with a new type that has + a different callback signature + + - creating a source that triggers based on different conditions + at different times. + + https://bugzilla.gnome.org/show_bug.cgi?id=634239 + + docs/reference/glib/glib-sections.txt | 2 + + glib/glib.symbols | 2 + + glib/gmain.c | 266 + ++++++++++++++++++++++++++++------ + glib/gmain.h | 17 ++- + 4 files changed, 239 insertions(+), 48 deletions(-) + +commit e910205557b2461eaf1b2ce94176c6525cc716d1 +Author: Dan Winship +AuthorDate: Sun Nov 7 11:49:40 2010 -0500 +Commit: Dan Winship +CommitDate: Fri Nov 26 15:07:28 2010 -0500 + + Add g_source_set_dummy_callback() + + Use g_source_set_closure() and g_close_set_meta_marshal() to allow + setting a do-nothing callback on any source. + + https://bugzilla.gnome.org/show_bug.cgi?id=634239 + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gobject.symbols | 1 + + gobject/gsourceclosure.c | 39 + ++++++++++++++++++++++++++++- + gobject/gsourceclosure.h | 6 +++-- + 4 files changed, 44 insertions(+), 3 deletions(-) + +commit 73d823ac1ee0716568130407a4c164f6c145a75f +Author: Dan Winship +AuthorDate: Sun Nov 7 11:05:26 2010 -0500 +Commit: Dan Winship +CommitDate: Fri Nov 26 15:07:28 2010 -0500 + + Implement closure-related methods for gio GSource types + + Also, fix up the argument ordering on GFDSourceFunc + + https://bugzilla.gnome.org/show_bug.cgi?id=634239 + + gio/gasynchelper.c | 59 + +++++++++++++++++++++++++++++++++++++++++++++++-- + gio/gasynchelper.h | 4 ++-- + gio/gio-marshal.list | 2 ++ + gio/gsocket.c | 33 ++++++++++++++++++++++++++- + gio/gunixinputstream.c | 4 ++-- + gio/gunixoutputstream.c | 4 ++-- + 6 files changed, 97 insertions(+), 9 deletions(-) + +commit ece936e84dd64af12cb609a8d25f3711a288cc57 +Author: Dan Winship +AuthorDate: Sat Nov 6 09:45:20 2010 -0400 +Commit: Dan Winship +CommitDate: Fri Nov 26 15:07:28 2010 -0500 + + gmain: fix some silly code in a programmer-error case + + Previously if a source got finalized while still attached to a + context, it would warn and re-ref the source. But then it just freed + it anyway... So keep the warning but drop the re-ref. + + https://bugzilla.gnome.org/show_bug.cgi?id=634239 + + glib/gmain.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit b358202856682e5cdefb0b4b8aaed3a45d9a85fa +Author: Dan Winship +AuthorDate: Sat Nov 6 09:35:25 2010 -0400 +Commit: Dan Winship +CommitDate: Fri Nov 26 15:07:28 2010 -0500 + + gmain: move finalization of GSource outside of context lock + + This avoids ugly deadlock situations such as in + https://bugzilla.gnome.org/show_bug.cgi?id=586432 + + https://bugzilla.gnome.org/show_bug.cgi?id=626702 + + https://bugzilla.gnome.org/show_bug.cgi?id=634239 + + glib/gmain.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 3570c4a00ef25908172d4d51e30810dddcea1ee8 +Author: Matthias Clasen +AuthorDate: Wed Nov 24 16:00:32 2010 -0500 +Commit: Matthias Clasen +CommitDate: Wed Nov 24 16:00:32 2010 -0500 + + Add indices for new symbols in 2.28 + + docs/reference/gio/gio-docs.xml | 4 ++++ + docs/reference/glib/glib-docs.sgml | 4 ++++ + docs/reference/gobject/gobject-docs.sgml | 4 ++++ + 3 files changed, 12 insertions(+) + +commit e5dd266c33509fe214dfa3a0b66f66e9f166ebc6 +Author: Matthias Clasen +AuthorDate: Wed Nov 24 15:57:40 2010 -0500 +Commit: Matthias Clasen +CommitDate: Wed Nov 24 15:57:40 2010 -0500 + + Add Since: tags for new api + + Also, remove from things like #GAppInfos. + gtk-doc learned to deal with this a while ago. + + gio/gdesktopappinfo.c | 30 +++++++++++++++++------------- + 1 file changed, 17 insertions(+), 13 deletions(-) + +commit ee94915d0b78da7a016b4df29f0dce6236c1acfc +Author: Javier Jardón +AuthorDate: Wed Nov 24 18:06:17 2010 +0100 +Commit: Javier Jardón +CommitDate: Wed Nov 24 18:47:09 2010 +0100 + + docs: gappinfo: Fix typo -> + + gio/gappinfo.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5f958e4623df830f89241b158b14ef7d994cf2c2 +Author: Cosimo Cecchi +AuthorDate: Fri Nov 19 11:37:44 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Tue Nov 23 10:29:10 2010 +0100 + + tests: add a test for recommended and fallback GAppInfos + + gio/tests/desktop-app-info.c | 72 + ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 72 insertions(+) + +commit b3bf7a648453e59daa83f745faf9102a90cdfbac +Author: Cosimo Cecchi +AuthorDate: Fri Nov 19 10:39:33 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Tue Nov 23 10:29:09 2010 +0100 + + appinfo: add win32 fallback implementation + + gio/gwin32appinfo.c | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +commit 30c378032fe43975dc3ea1014b5b873ef6e3d017 +Author: Cosimo Cecchi +AuthorDate: Fri Nov 19 10:39:16 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Tue Nov 23 10:29:09 2010 +0100 + + appinfo: update docs for API addition + + docs/reference/gio/gio-sections.txt | 2 ++ + gio/gdesktopappinfo.c | 22 ++++++++++++++++++++++ + gio/gio.symbols | 2 ++ + 3 files changed, 26 insertions(+) + +commit 182fcff2ea2b8f183570d8c026a9ef4d2ec2afdf +Author: Cosimo Cecchi +AuthorDate: Thu Nov 18 18:49:32 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Tue Nov 23 10:29:09 2010 +0100 + + appinfo: only rewrite recommended applications when adding non-default + + Otherwise you break the fallback + recommended distinction for + a content + type, as you end up adding support for a given content type to + *all* of + the applications claiming to support the supertype. + + gio/gdesktopappinfo.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 94c67d8420889e950c2f093abdd893ffe3780a97 +Author: Cosimo Cecchi +AuthorDate: Thu Nov 18 18:45:56 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Tue Nov 23 10:29:09 2010 +0100 + + appinfo: add API to get fallback and recommended GAppInfos for a ctype + + This ways UIs can differentiate between them, and show them in + different + section. + - a recommended app is an application that claims to support a content + type directly, not by a supertype derivation. + - a fallback app is an application that claims to support a + supertype of + a given content type. + + gio/gappinfo.h | 3 ++ + gio/gdesktopappinfo.c | 127 + ++++++++++++++++++++++++++++++++++++++++---------- + 2 files changed, 105 insertions(+), 25 deletions(-) + +commit a70ba9c8b15451a8722aebfb64232bd18abf0a79 +Author: Owen W. Taylor +AuthorDate: Sun Nov 21 21:59:57 2010 -0500 +Commit: Owen W. Taylor +CommitDate: Sun Nov 21 22:01:52 2010 -0500 + + Fix off-by-1000 for GTimer + + Divide monotonic time by 1e6 not 1e9 to get seconds. + + glib/gtimer.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ab3a79e2c9be13aea5b2ce0980f3a641c5ed081d +Author: Ignacio Casal Quinteiro +AuthorDate: Sun Nov 21 21:20:44 2010 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Sun Nov 21 21:21:22 2010 +0100 + + Check for (GIConv)-1 instead of NULL. + + gio/gcharsetconverter.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit bcbf9153d5933476d267ba5da18dd72e99fac20a +Author: Gheyret T.Kenji +AuthorDate: Sat Nov 20 11:26:41 2010 +0100 +Commit: Abduxukur Abdurixit +CommitDate: Sat Nov 20 11:26:41 2010 +0100 + + Added UG translation + + po/ug.po | 72 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 36 insertions(+), 36 deletions(-) + +commit 96e9677fd7433cfbf27d18f66d55635195fcc44d +Author: Kjartan Maraas +AuthorDate: Thu Nov 18 14:08:34 2010 +0100 +Commit: Kjartan Maraas +CommitDate: Thu Nov 18 14:08:34 2010 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 1412 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 780 insertions(+), 632 deletions(-) + +commit 260d005616b7150c3e560a9fc29734a19ab8e24e +Author: Colin Walters +AuthorDate: Wed Nov 17 20:06:07 2010 -0500 +Commit: Colin Walters +CommitDate: Wed Nov 17 20:07:39 2010 -0500 + + introspection: Add annotations for g_file_copy, g_file_move + + gio/gfile.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 354d655ba8a54b754cb5a3efb42767327775696c +Author: Ryan Lortie +AuthorDate: Wed Nov 17 12:19:54 2010 -0500 +Commit: Ryan Lortie +CommitDate: Wed Nov 17 12:24:53 2010 -0500 + + g_str_hash: switch to using DJB hash + + This is the same as what we were already doing with 2 changes: + + - use an initial value of 5381 instead of 0 + + - multiply by 33 in each round instead of 31 + + glib/gstring.c | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +commit f50a99e7827f4b906cfe9ced27096b047f65ac80 +Author: Ryan Lortie +AuthorDate: Wed Nov 17 11:57:48 2010 -0500 +Commit: Ryan Lortie +CommitDate: Wed Nov 17 12:24:53 2010 -0500 + + g_str_hash: clean up code + + Un-unroll the first iteration. + + No functional changes here. + + glib/gstring.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit 2bfcffde9ae5b14e78a4279bf48c71897c5f19d8 +Author: Tomas Bzatek +AuthorDate: Tue Nov 16 14:20:07 2010 +0100 +Commit: Tomas Bzatek +CommitDate: Tue Nov 16 14:20:07 2010 +0100 + + GIO: Hide mounts having a path element starting with dot + + When a mount is mounted to a directory whose path contains an element + starting with dot, let's treat it as hidden, just like the usual Unix + approach. + + gio/gunixmounts.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 010913c8ab3f161ac8e9c676bc89d3a30db092ce +Author: Javier Jardón +AuthorDate: Sun Nov 14 02:08:51 2010 +0100 +Commit: Javier Jardón +CommitDate: Sun Nov 14 02:09:05 2010 +0100 + + docs: Update the URL of some documentation links + + http://developer.gnome.org -> http://library.gnome.org + + INSTALL.in | 2 +- + docs/reference/gobject/tut_tools.xml | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit f4142b321b2cdc2bb5a74716b29f35a141c9a8d2 +Author: Gheyret T.Kenji +AuthorDate: Sun Nov 14 00:05:02 2010 +0100 +Commit: Abduxukur Abdurixit +CommitDate: Sun Nov 14 00:05:02 2010 +0100 + + Added UG translation + + po/LINGUAS | 1 + + 1 file changed, 1 insertion(+) + +commit a0e0f25de687f5d748ae23421572b1fc60b248c2 +Author: Gheyret T.Kenji +AuthorDate: Sat Nov 13 22:10:03 2010 +0100 +Commit: Abduxukur Abdurixit +CommitDate: Sat Nov 13 22:10:03 2010 +0100 + + Added UG translation + + po/ug.po | 3522 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 3522 insertions(+) + +commit b53b61a000fdd72c76b96f58e3835f50ad8335f1 +Author: Luca Ferretti +AuthorDate: Sat Nov 13 14:01:29 2010 +0100 +Commit: Luca Ferretti +CommitDate: Sat Nov 13 14:01:48 2010 +0100 + + [l10n] Updated Italian translation + + po/it.po | 2353 + +++++++++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 1556 insertions(+), 797 deletions(-) + +commit 9faed56eda38ed35dd9841d2de1ac659d8db5a36 +Author: Fran Diéguez +AuthorDate: Sat Nov 13 00:59:45 2010 +0100 +Commit: Fran Diéguez +CommitDate: Sat Nov 13 00:59:45 2010 +0100 + + Updated Galician translations + + po/gl.po | 144 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 72 insertions(+), 72 deletions(-) + +commit 48ca3add143896fa5664860a94947907cfe5daa2 +Author: Ryan Lortie +AuthorDate: Thu Nov 11 21:47:13 2010 -0500 +Commit: Ryan Lortie +CommitDate: Thu Nov 11 21:49:21 2010 -0500 + + G_STATIC_ASSERT: clarify when use is valid + + Clarify when the use of G_STATIC_ASSERT is valid and fix up an invalid + use of it in GDBus. + + docs/reference/glib/tmpl/macros_misc.sgml | 6 ++++++ + gio/gdbusmessage.c | 2 +- + 2 files changed, 7 insertions(+), 1 deletion(-) + +commit 6bc20651ecf8e8b5d9ffea89ae76083ededa3c0b +Author: Ryan Lortie +AuthorDate: Thu Nov 11 21:30:03 2010 -0500 +Commit: Ryan Lortie +CommitDate: Thu Nov 11 21:49:21 2010 -0500 + + Partial revert of last commit + + Revert incorrect changes to gdbusmessage.c + + gio/gdbusmessage.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +commit d28bce02dc62ac863ddafce8d525e6bc929db873 +Author: Cosimo Cecchi +AuthorDate: Wed Nov 10 12:03:11 2010 +0100 +Commit: Cosimo Cecchi +CommitDate: Wed Nov 10 19:08:52 2010 +0100 + + emblemed-icon: allow passing a NULL emblem to g_emblemed_icon_new() + + So that if we already have a list of emblems we know we want to add to + the icon, we can use e.g. a for loop to add them all, without picking + the first and looping from the second. + + https://bugzilla.gnome.org/show_bug.cgi?id=634504 + + gio/gemblemedicon.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit fb94859e84c0b7859a0a5425d461b18e67ea9ac7 +Author: Benjamin Otte +AuthorDate: Tue Nov 9 07:19:19 2010 -0500 +Commit: Benjamin Otte +CommitDate: Tue Nov 9 21:13:04 2010 -0500 + + API: Reinstate "gio-desktop-app-info-lookup" extension point + + Removing an extension point is an API and ABI break. In particular, it + causes (older) gvfs versions to fail loading with a linkage error from + ld which in turn makes the desktop unusable. + So this reinstate the extension point and API provided by it, but + deprecates and does not use it. So no functionality is changed. + + This reverts parts of commit 9b262f1c5fe5a6fd879f17cd7b80d8c54e33d80c. + + Complaints-Also-To: Ryan Lortie + + gio/gdesktopappinfo.c | 42 ++++++++++++++++++++++++++++++++++++++++++ + gio/gdesktopappinfo.h | 40 ++++++++++++++++++++++++++++++++++++++++ + gio/gio.symbols | 2 ++ + gio/giomodule.c | 16 +++++++++++++--- + 4 files changed, 97 insertions(+), 3 deletions(-) + +commit 9f02ee790b03b4c9e73490734ddb4740219b1d36 +Author: Chun-wei Fan +AuthorDate: Tue Nov 9 20:36:53 2010 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Nov 9 20:36:53 2010 +0800 + + gio: Fix C99 style variable declarations (bug #633075) + + -gdbusmessage.c and gregistrysettingsbackend.c is updated to fix + C99-style declarations + -also fixed typo for displaying registry entry in + gregistrysettingsbackend.c (\% -> \\%) + + gio/gdbusmessage.c | 5 ++++- + gio/gregistrysettingsbackend.c | 21 ++++++++++++++------- + 2 files changed, 18 insertions(+), 8 deletions(-) + +commit 029f3070e7334daf8241dfe0db8288f80110f839 +Author: Chun-wei Fan +AuthorDate: Tue Nov 9 20:32:39 2010 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Nov 9 20:32:39 2010 +0800 + + gtimer.c: Revert accidental overwrite + + Revert accidental overwrite as timing API was changed from 2.27.2 + to 2.27.3 + + glib/gtimer.c | 73 + ++++++++--------------------------------------------------- + 1 file changed, 9 insertions(+), 64 deletions(-) + +commit db7ea5e5584f768e978bb101000bf8a602384f6d +Author: Matthias Clasen +AuthorDate: Mon Nov 8 23:06:53 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 8 23:06:53 2010 -0500 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f023d8b9bc6d86482fc020acf46ce965ff94c37b +Author: Matthias Clasen +AuthorDate: Mon Nov 8 21:40:17 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 8 21:40:17 2010 -0500 + + Update NEWS + + NEWS | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 49 insertions(+) + +commit 9806040455d6d482db3908f2d56ddfe455bae660 +Author: Chun-wei Fan +AuthorDate: Tue Nov 9 09:53:12 2010 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Nov 9 09:53:12 2010 +0800 + + Added and Moved checks for includes + + Moved checks for G_OS_WIN32 after GLib header includes and added + other checks + required for Windows/MSVC builds + + glib/gdatetime.c | 10 ++++---- + glib/gmessages.c | 18 ++++++------- + glib/gscanner.c | 8 +++--- + glib/gtimer.c | 77 + ++++++++++++++++++++++++++++++++++++++++++++++++-------- + 4 files changed, 85 insertions(+), 28 deletions(-) + +commit 4a012a9754d51a36914c626b41ad757a89e57f86 +Author: Chun-wei Fan +AuthorDate: Tue Nov 9 09:50:11 2010 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Nov 9 09:50:11 2010 +0800 + + Updated README.txt for VS9 + + build/win32/vs9/README.txt | 20 +++++++++++++++++--- + 1 file changed, 17 insertions(+), 3 deletions(-) + +commit 0af6343fedaf95d3710af8a1535da4d32cfccff9 +Author: Chun-wei Fan +AuthorDate: Tue Nov 9 09:27:27 2010 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Nov 9 09:27:27 2010 +0800 + + Updated .def generation for x64 + + Some symbols need to be excluded from the .def file as they are set + to be so on Win64 + + build/win32/vs9/gmodule.vcproj | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 9d4423c15d8684be27496f1905e063ec7e18cc21 +Author: Chun-wei Fan +AuthorDate: Tue Nov 9 09:26:05 2010 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Nov 9 09:26:05 2010 +0800 + + Various updates... + + -Made up for missed header files in glib and gio during "install" + -Added macro necessary for GLib/GModule .def generation under Win64 + -updated location of getting glibconfig.h.win32 for building + + build/win32/vs9/glib.vsprops | 30 +++++++++++++++++++++++++++--- + 1 file changed, 27 insertions(+), 3 deletions(-) + +commit e655a849e3cd7357dcef873163712df13889353f +Author: Chun-wei Fan +AuthorDate: Tue Nov 9 09:23:47 2010 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Nov 9 09:23:47 2010 +0800 + + Some enhancements for Win64 and using existing PCRE installtions + + Added option for people to use an existing PCRE build and updated + .def generation for x64 systems (some symbols are set to be excluded + from Win64 builds) + Also fixed the filter "PCRE" for the bundled PCRE as file layout + changed + + build/win32/vs9/glib.vcprojin | 314 + +++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 292 insertions(+), 22 deletions(-) + +commit 50ca3571041881d7728f9a6fb0e924681113fb5e +Author: Chun-wei Fan +AuthorDate: Tue Nov 9 09:11:48 2010 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Nov 9 09:11:48 2010 +0800 + + Added option to use existing installation of PCRE + + Allow the person compiling GLib to use his/her own copy of PCRE, + bug#633075 + + build/win32/vs9/glib.sln | 85 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 85 insertions(+) + +commit 8c4a96c6ff389aa319993857d79e0afcdf24d7c9 +Author: Chun-wei Fan +AuthorDate: Tue Nov 9 09:08:45 2010 +0800 +Commit: Chun-wei Fan +CommitDate: Tue Nov 9 09:08:45 2010 +0800 + + Made up for missed source files + + Made up for missing required source files in gio.vcproj(in) for + Windows builds + + build/win32/vs9/gio.vcprojin | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 587c9d09e25b0a0e3779e6a19493c9264696a46f +Author: Ryan Lortie +AuthorDate: Mon Nov 8 18:15:32 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 8 18:22:18 2010 -0500 + + GPeriodic: enable subclassing + + Move GPeriodic struct and class struct to the header. Do ->priv. + + gio/gperiodic.c | 138 + ++++++++++++++++++++++++++++---------------------------- + gio/gperiodic.h | 21 +++++++++ + 2 files changed, 89 insertions(+), 70 deletions(-) + +commit 9fbfac6abb45aad97349f68aef29410e3bef4cfd +Author: Ryan Lortie +AuthorDate: Mon Nov 8 16:59:29 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 8 18:22:18 2010 -0500 + + GPeriodic: remove repair functions + + Replace it with a single repair signal that either fires or does not. + + docs/reference/gio/gio-sections.txt | 1 - + gio/gio-marshal.list | 2 +- + gio/gperiodic.c | 134 + ++++++++++++++++-------------------- + gio/gperiodic.h | 9 +-- + 4 files changed, 63 insertions(+), 83 deletions(-) + +commit 1a1fc130ece13a442dcacaba1db9108089cead38 +Author: Ryan Lortie +AuthorDate: Mon Nov 8 16:42:32 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 8 18:21:51 2010 -0500 + + New function: g_clear_object() + + By analogy to g_clear_error, takes a pass-by-reference GObject + reference + and, if non-%NULL, unrefs it and sets it equal to %NULL. + + Bug #620263. + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gobject.c | 38 + +++++++++++++++++++++++++++++ + gobject/gobject.h | 15 ++++++++++++ + gobject/gobject.symbols | 1 + + gobject/tests/.gitignore | 1 + + gobject/tests/Makefile.am | 3 ++- + gobject/tests/reference.c | 35 + ++++++++++++++++++++++++++ + 7 files changed, 93 insertions(+), 1 deletion(-) + +commit 78bc8bec4f44a48e5e538f1f9ac9b9e43a9fc833 +Author: Dan Winship +AuthorDate: Sun Nov 7 12:56:44 2010 -0500 +Commit: Dan Winship +CommitDate: Sun Nov 7 12:56:44 2010 -0500 + + fix .gitignore + + gio/tests/.gitignore | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 791d91a957f8fc243b6629a015132c22675399ab +Author: Dan Winship +AuthorDate: Sun Nov 7 12:56:08 2010 -0500 +Commit: Dan Winship +CommitDate: Sun Nov 7 12:56:08 2010 -0500 + + fix make check + + gio/gsettings.c | 2 +- + gio/tests/gsettings.c | 10 +++++----- + glib/glib.symbols | 1 + + 3 files changed, 7 insertions(+), 6 deletions(-) + +commit ba9fccf71e667c1d05d05fab794ab41b2c387a81 +Author: Ryan Lortie +AuthorDate: Sat Nov 6 17:34:40 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Nov 6 17:35:10 2010 -0400 + + g_get_user_runtime_dir(): New function + + Get the value of the XDG_RUNTIME_DIR environment variable. + + docs/reference/glib/glib-sections.txt | 1 + + glib/gutils.c | 49 + +++++++++++++++++++++++++++++++++++ + glib/gutils.h | 2 ++ + 3 files changed, 52 insertions(+) + +commit 71088701af6ff0658313069219565923d5a03280 +Author: Ryan Lortie +AuthorDate: Fri Nov 5 22:07:07 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Nov 6 17:35:10 2010 -0400 + + Add G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE + + If specified, the signal subscription is setup client-side but + the match + rule is not sent to the server. This allows the caller to manually + register more detailed match rules. + + gio/gdbusconnection.c | 22 ++++++++++++++++++++-- + gio/gioenums.h | 6 +++++- + 2 files changed, 25 insertions(+), 3 deletions(-) + +commit fa774618fcbd1afaa30507c9d75a46f9fa7bc288 +Author: Christian Persch +AuthorDate: Sat Nov 6 12:27:01 2010 +0100 +Commit: Christian Persch +CommitDate: Sat Nov 6 12:27:01 2010 +0100 + + Fix docs comment typo + + glib/gvariant.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8464db88adf36964c0898b74e1d122136fa0696b +Author: A S Alam +AuthorDate: Sat Nov 6 10:48:55 2010 +0530 +Commit: A S Alam +CommitDate: Sat Nov 6 10:48:55 2010 +0530 + + update Punjabi Translation by A S Alam + + po/pa.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 79a29a10362019b3ec5e361c7dbbadf084355f9c +Author: A S Alam +AuthorDate: Sat Nov 6 10:47:54 2010 +0530 +Commit: A S Alam +CommitDate: Sat Nov 6 10:47:54 2010 +0530 + + update Punjabi Translation by A S Alam + + po/pa.po | 901 + +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 557 insertions(+), 344 deletions(-) + +commit 7fc6f8a1596b18a23e1570fc6716b34a137b76c6 +Author: Ryan Lortie +AuthorDate: Fri Nov 5 21:33:06 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Nov 5 21:33:43 2010 -0400 + + Add g_variant_lookup() and tests + + Convenience API for doing lookups in dictionaries where the key is a + string or object path. + + docs/reference/glib/glib-sections.txt | 2 + + glib/glib.symbols | 2 + + glib/gvariant.c | 144 + ++++++++++++++++++++++++++++++++++ + glib/gvariant.h | 7 ++ + glib/tests/gvariant.c | 74 +++++++++++++++++ + 5 files changed, 229 insertions(+) + +commit 57b4b7099f6e6918210d5d99a24f42b33021bab0 +Author: Matthias Clasen +AuthorDate: Fri Nov 5 14:50:01 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Nov 5 14:50:01 2010 -0400 + + Fix markup + + gio/gsettings.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 38bc42d18edcfdc47cad018dbd6e562f21541f9b +Author: Matthias Clasen +AuthorDate: Fri Nov 5 14:29:15 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Nov 5 14:29:15 2010 -0400 + + Fix up gapplication example + + gio/tests/gapplication-example-cmdline2.c | 1 + + 1 file changed, 1 insertion(+) + +commit 67c03fee2a90079b75bbbb71c004ef00af750f21 +Author: Matthias Clasen +AuthorDate: Fri Nov 5 14:28:44 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Nov 5 14:28:44 2010 -0400 + + Describe enum and flags types a bit + + gio/gsettings.c | 22 ++++++++++++++++++++-- + 1 file changed, 20 insertions(+), 2 deletions(-) + +commit d1b00fe23df265f6cf8a288a34db8fdeb31d9900 +Author: Matthias Clasen +AuthorDate: Fri Nov 5 13:56:42 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Nov 5 13:56:42 2010 -0400 + + Update the gschema dtd to include flags + + gio/gschema.dtd | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +commit bc793255bc75300bfa96bfd842343c26af8b0744 +Author: Matthias Clasen +AuthorDate: Fri Nov 5 09:31:36 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Nov 5 09:31:36 2010 -0400 + + Report more useful errors from g_settings_set_value + + gio/gsettings.c | 24 ++++++++++++++++++++++-- + 1 file changed, 22 insertions(+), 2 deletions(-) + +commit 393834ac6f32633a31e52441b051dc7d3969a530 +Author: Dan Winship +AuthorDate: Thu Nov 4 15:23:22 2010 -0400 +Commit: Dan Winship +CommitDate: Thu Nov 4 17:21:09 2010 -0400 + + gsettings.m4: Fix rules to work when there are no schemas + + If there are no schemas, don't try to install "" at install time. + (In particular, automake conditionals don't work properly with + @-expanded rules, so if you conditionally build a schema, you'll + still unconditionally get the install rule.) + + https://bugzilla.gnome.org/show_bug.cgi?id=633381 + + m4macros/gsettings.m4 | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 094082841877b8b70a0d793ff091bb74793210b6 +Author: Tor Lillqvist +AuthorDate: Tue Oct 26 12:20:22 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Thu Nov 4 22:18:42 2010 +0200 + + Clarify docs for g_path_is_absolute() semantics on Windows + + glib/gutils.c | 31 ++++++++++++++++++++++++++----- + 1 file changed, 26 insertions(+), 5 deletions(-) + +commit 954e7d149359152a9b6dccf2322399f87ed5bd1f +Author: Ihar Hrachyshka +AuthorDate: Sun Oct 31 20:12:26 2010 +0200 +Commit: Ihar Hrachyshka +CommitDate: Thu Nov 4 01:28:40 2010 +0200 + + Updated Belarusian translation + + po/be.po | 3412 + +++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 2137 insertions(+), 1275 deletions(-) + +commit ba45e36932206f30bb439f27c49529d934207fd1 +Author: Christian Persch +AuthorDate: Thu Sep 23 13:47:13 2010 +0200 +Commit: Christian Persch +CommitDate: Wed Nov 3 14:38:08 2010 +0100 + + Add g_simple_async_report_take_gerror_in_idle + + ... and use it where appropriate. Saves an extra GError copy. + + Bug #633686. + + docs/reference/gio/gio-sections.txt | 1 + + gio/gbufferedinputstream.c | 3 +-- + gio/gfileinputstream.c | 3 +-- + gio/gfileiostream.c | 3 +-- + gio/gfileoutputstream.c | 3 +-- + gio/ginputstream.c | 9 +++------ + gio/gio.symbols | 1 + + gio/giostream.c | 3 +-- + gio/goutputstream.c | 12 ++++-------- + gio/gsimpleasyncresult.c | 34 + +++++++++++++++++++++++++++++++++- + gio/gsimpleasyncresult.h | 6 +++++- + gio/gsocketclient.c | 6 ++---- + gio/gsocketconnection.c | 3 +-- + gio/gsocketlistener.c | 3 +-- + 14 files changed, 56 insertions(+), 34 deletions(-) + +commit 9e0c07870af1dac84c033031cf301671779c8328 +Author: Christian Persch +AuthorDate: Thu Sep 23 13:02:50 2010 +0200 +Commit: Christian Persch +CommitDate: Wed Nov 3 14:25:35 2010 +0100 + + Use g_simple_async_result_{new_,}take_error + + Bug #633685. + + gio/gasyncinitable.c | 5 +-- + gio/gbufferedinputstream.c | 32 +++++++---------- + gio/gbufferedoutputstream.c | 5 +-- + gio/gdatainputstream.c | 3 +- + gio/gdbusaddress.c | 5 +-- + gio/gdbusconnection.c | 23 ++++-------- + gio/gdbusprivate.c | 9 ++--- + gio/gdbusproxy.c | 13 +++---- + gio/gdummyproxyresolver.c | 3 +- + gio/gfile.c | 80 + ++++++++++-------------------------------- + gio/gfileenumerator.c | 5 +-- + gio/gfileicon.c | 3 +- + gio/gfileinputstream.c | 5 +-- + gio/gfileoutputstream.c | 5 +-- + gio/ginputstream.c | 26 +++++--------- + gio/giostream.c | 5 +-- + gio/gloadableicon.c | 3 +- + gio/gnetworkaddress.c | 3 +- + gio/gnetworkservice.c | 6 ++-- + gio/goutputstream.c | 23 ++++-------- + gio/gproxyaddressenumerator.c | 17 +++------ + gio/gsocketaddressenumerator.c | 6 ++-- + gio/gsocketclient.c | 3 +- + gio/gsocketinputstream.c | 5 +-- + gio/gsocketlistener.c | 3 +- + gio/gsocketoutputstream.c | 5 +-- + gio/gsocks4aproxy.c | 8 ++--- + gio/gsocks5proxy.c | 4 +-- + gio/gtcpconnection.c | 11 ++---- + gio/gunixinputstream.c | 10 ++---- + gio/gunixmount.c | 3 +- + gio/gunixoutputstream.c | 10 ++---- + gio/gunixresolver.c | 18 +++------- + gio/gunixvolume.c | 3 +- + 34 files changed, 98 insertions(+), 270 deletions(-) + +commit 63b87b2c26bf983823f83943b8d752bd053ce539 +Author: Ryan Lortie +AuthorDate: Wed Nov 3 00:16:16 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Nov 3 00:16:16 2010 -0400 + + Add simple dynamic scheduling to GPeriodic + + GPeriodic will now try not to use more than 50% of the CPU for its own + purposes unless there are no other tasks attempting to run. + + docs/reference/gio/gio-sections.txt | 3 +- + gio/gio.symbols | 3 +- + gio/gperiodic.c | 155 + +++++++++++++++++++++++++++++++++--- + gio/gperiodic.h | 6 +- + 4 files changed, 151 insertions(+), 16 deletions(-) + +commit 8c7e284116085058fa8b2600e02502aa6acb3f9e +Author: Matthias Clasen +AuthorDate: Tue Nov 2 22:39:58 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Nov 2 23:02:05 2010 -0400 + + Tweak GApplication docs + + gio/gapplication.c | 9 +++++++++ + gio/tests/gapplication-example-actions.c | 7 ------- + gio/tests/gapplication-example-cmdline.c | 4 ---- + gio/tests/gapplication-example-cmdline2.c | 4 ---- + gio/tests/gapplication-example-open.c | 16 +++++++++++----- + 5 files changed, 20 insertions(+), 20 deletions(-) + +commit 1cf14de82f3ad4beceeeb9ba555763ef8d70ed24 +Author: Ryan Lortie +AuthorDate: Tue Nov 2 22:12:55 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Nov 2 22:39:09 2010 -0400 + + docs: Recommend against using GTimeVal + + docs/reference/glib/tmpl/date.sgml | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +commit e4ad3442c042431918de178c5dc29ce6abb31ff2 +Author: Ryan Lortie +AuthorDate: Tue Nov 2 22:03:08 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Nov 2 22:39:09 2010 -0400 + + GMainContext: store real time as int64 + + glib/gmain.c | 19 ++++++++++--------- + 1 file changed, 10 insertions(+), 9 deletions(-) + +commit d22681feb44daa0209cf55c8e45cc8f0c13d4ded +Author: Ryan Lortie +AuthorDate: Mon Nov 1 17:04:31 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Nov 2 22:39:09 2010 -0400 + + glocalfileinfo: remove non-use of GTimeVal + + gio/glocalfileinfo.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +commit 5dab4727ee604d3a7a2be3aa7dde739b71d7f5df +Author: Ryan Lortie +AuthorDate: Mon Nov 1 16:40:36 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Nov 2 22:39:09 2010 -0400 + + Add g_get_real_time() for wall-clock int64 micros + + Similar in spirit to g_get_monotonic_time(). + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gmain.c | 31 + ++++++++++++++++++++++++++++++- + glib/gmain.h | 1 + + 4 files changed, 33 insertions(+), 1 deletion(-) + +commit 38e7aa9855a3e18d5350733ee4177ab00cee15df +Author: Ryan Lortie +AuthorDate: Mon Nov 1 16:35:10 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Nov 2 22:39:09 2010 -0400 + + Clean up g_usleep() + + Remove some code that was written in 2000 to support OSes that do not + have nanosleep(). nanosleep() has been specified (in POSIX-1.2001) + for + almost a decade now, so assume we have it (except on Windows). + + Remove the checks for nanosleep and nsleep from configure.ac. + + We're removing this code because we honestly believe that nobody + will be + affected. If this change negatively impacts you, please file a bug. + + configure.ac | 1 - + glib/gtimer.c | 48 ++---------------------------------------------- + 2 files changed, 2 insertions(+), 47 deletions(-) + +commit a48faa0aed1c422ba04301a4786419de44ea65e8 +Author: Ryan Lortie +AuthorDate: Mon Nov 1 16:06:39 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Nov 2 22:39:09 2010 -0400 + + GTimer: switch to monotonic time + + and remove docs notes about threads having to be initialised. + + glib/gtimer.c | 27 ++++++++------------------- + 1 file changed, 8 insertions(+), 19 deletions(-) + +commit 92df8a1d7766dbb51d84c0373daa77eb1cce3a18 +Author: Ryan Lortie +AuthorDate: Mon Nov 1 15:47:29 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Nov 2 22:39:09 2010 -0400 + + Drop GTimeSpec type + + docs/reference/glib/glib-sections.txt | 1 - + glib/gmain.c | 10 ---------- + glib/gtypes.h | 8 -------- + 3 files changed, 19 deletions(-) + +commit c3a0d32ef1413f942890796aa20f7b1a54254eff +Author: Ryan Lortie +AuthorDate: Mon Nov 1 15:46:35 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Nov 2 22:39:09 2010 -0400 + + Switch GTimeSpec users to int64 microseconds + + glib is trying to move toward using microseconds-in-gint64 as its + universal time format. + + No real API breaks here since GTimeSpec is new this unstable release + series. + + gio/gperiodic.c | 33 ++-------- + gio/gperiodic.h | 2 +- + gio/gsocket.c | 35 +++++------ + glib/gmain.c | 183 + +++++++++++++++++++++++--------------------------------- + glib/gmain.h | 7 +-- + 5 files changed, 101 insertions(+), 159 deletions(-) + +commit d9f5ab56c3b79fb12b4ee4f19a8b6307445cc403 +Author: Ryan Lortie +AuthorDate: Mon Nov 1 13:31:37 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Nov 2 22:39:09 2010 -0400 + + GTimeout: simplify math for 'seconds' case + + The code was designed to deal with any granularity of timer and due to + the use of GTimeVal/GTimeSpec, the math for this gets extremely + confusing. + + From a practical standpoint, we only ever have a granularity of + seconds. + + Take advantage of that fact in the code and vastly simplify the math. + + glib/gmain.c | 74 + ++++++++++++++++++++++-------------------------------------- + 1 file changed, 27 insertions(+), 47 deletions(-) + +commit b6854efdb94b74f791cbcc622942825dc042eefc +Author: Jorge González +AuthorDate: Tue Nov 2 10:46:10 2010 +0100 +Commit: Jorge González +CommitDate: Tue Nov 2 10:46:10 2010 +0100 + + Updated Spanish translation + + po/es.po | 90 + +++++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 55 insertions(+), 35 deletions(-) + +commit 00e09af412f8d30c5980f549341cf28a2d6a8847 +Author: Jorge González +AuthorDate: Mon Nov 1 18:50:46 2010 +0100 +Commit: Jorge González +CommitDate: Mon Nov 1 18:50:46 2010 +0100 + + Updated Spanish translation + + po/es.po | 494 + +++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 337 insertions(+), 157 deletions(-) + +commit b2d0260b85c6eb47f9ac0263f26657cbc9fe9909 +Author: Fran Diéguez +AuthorDate: Mon Nov 1 17:15:38 2010 +0100 +Commit: Fran Diéguez +CommitDate: Mon Nov 1 17:15:38 2010 +0100 + + Updated Galician translations + + po/gl.po | 620 + +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 386 insertions(+), 234 deletions(-) + +commit 361afb3a62c7940c0f303eac99d84ac21e4dcb37 +Author: Paolo Borelli +AuthorDate: Mon Nov 1 14:36:57 2010 +0100 +Commit: Paolo Borelli +CommitDate: Mon Nov 1 14:37:23 2010 +0100 + + Fix gtk-doc typo + + gio/gmount.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7434c1725dc7a5f44a9f2d9787eaa7c1c9027906 +Author: Christian Persch +AuthorDate: Mon Nov 1 11:06:26 2010 +0100 +Commit: Christian Persch +CommitDate: Mon Nov 1 11:06:26 2010 +0100 + + Fix Since: for new functions + + g_simple_async_result_new_from_error/take_error are Since: 2.28. + + gio/gsimpleasyncresult.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5327db4c2f83acf9cda3e7cc3ddca8f3eaeb570f +Author: Yaron Shahrabani +AuthorDate: Mon Nov 1 08:17:02 2010 +0200 +Commit: Yaron Shahrabani +CommitDate: Mon Nov 1 08:17:02 2010 +0200 + + Updated Hebrew translation. + + po/he.po | 406 + +++++++++++++++++++++++++++++++++++++++++++++------------------ + 1 file changed, 292 insertions(+), 114 deletions(-) + +commit 81f93eb29c76c941e6bfe6c20510f8cb04edfa0a +Author: Matthias Clasen +AuthorDate: Mon Nov 1 00:32:47 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Nov 1 00:32:47 2010 -0400 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a50c0ca69961ef4d1a372cc31483de65266f1a52 +Author: Matthias Clasen +AuthorDate: Sun Oct 31 23:32:48 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 31 23:32:48 2010 -0400 + + NEWS for 2.27.2 + + NEWS | 36 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 36 insertions(+) + +commit b4248cb5da7751a2b1d16c48ea0acc5f3e7c4348 +Author: Matthias Clasen +AuthorDate: Sun Oct 31 23:19:04 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 31 23:19:04 2010 -0400 + + Remove nonexisting type from giotypes.h + + GDBusActionGroup does not exist yet. + + gio/giotypes.h | 1 - + 1 file changed, 1 deletion(-) + +commit d2612ad955c67a6b6791e9db4496087754c20228 +Author: Matthias Clasen +AuthorDate: Sun Oct 31 23:13:36 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 31 23:13:36 2010 -0400 + + Fix a doc typo + + glib/gdatetime.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 71dcc5ce80e33ac2f5cfd2de7acc392de2cb5d45 +Author: Matthias Clasen +AuthorDate: Sun Oct 31 23:10:41 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 31 23:10:41 2010 -0400 + + Remove leftover definition from gactiongroup.h + + GContextActionGroupInterface is not currently used anywhere. + + gio/gactiongroup.h | 15 --------------- + 1 file changed, 15 deletions(-) + +commit b49ae1646197e90d273d3ffd5d884d93109c2df7 +Author: Matthias Clasen +AuthorDate: Sun Oct 31 22:41:00 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 31 22:41:00 2010 -0400 + + Various documentation fixes + + docs/reference/gio/gio-sections.txt | 10 +++++----- + gio/gactiongroup.c | 12 ++++++------ + gio/gappinfo.c | 10 +++++----- + gio/gapplicationcommandline.c | 1 + + 4 files changed, 17 insertions(+), 16 deletions(-) + +commit 85ba8596e235f5f7f351447d20a3bc1baa8402b8 +Author: Matthias Clasen +AuthorDate: Sun Oct 31 22:38:38 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 31 22:38:38 2010 -0400 + + GSimpleAsyncResult: add error-taking variants + + Add g_simple_async_result_new_take_error and + g_simple_async_result_take_error, which take over ownership of the + given error. Based on a patch by Christian Persch. + + https://bugzilla.gnome.org/show_bug.cgi?id=629247 + + gio/gio.symbols | 2 ++ + gio/gsimpleasyncresult.c | 62 + +++++++++++++++++++++++++++++++++++++++++++++--- + gio/gsimpleasyncresult.h | 6 +++++ + 3 files changed, 67 insertions(+), 3 deletions(-) + +commit 7887103193de4230a1ccb8dc7100816e523e5b9c +Author: Matthias Clasen +AuthorDate: Sun Oct 31 22:05:20 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 31 22:05:20 2010 -0400 + + Add an example of invoking actions + + gio/tests/gapplication-example-actions.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit d967b5ed17ae23f8694c5828c5574393bf9df076 +Author: Matthias Clasen +AuthorDate: Sun Oct 31 21:08:25 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 31 21:08:25 2010 -0400 + + Fix g_action_group_activate_action() docs + + gio/gactiongroup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9574dbd2282e1fcf7bb5836c85cfff536bf4a7cf +Author: Matthias Clasen +AuthorDate: Sun Oct 31 20:58:15 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 31 20:58:15 2010 -0400 + + Be more careful about overwriting errors + + When trying to parse again, we don't want to overwrite the exiting + error. + + gio/gsettings-tool.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 78407a00983d2fb70a94e00639408c80a58772b7 +Author: Matthias Clasen +AuthorDate: Sun Oct 31 20:49:53 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 31 20:49:53 2010 -0400 + + GApplication: Add an action example + + gio/gapplication.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit cb8d29a55897b65c5d60077db19f39d1c01b2f86 +Author: Matthias Clasen +AuthorDate: Sun Oct 31 20:33:02 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 31 20:33:02 2010 -0400 + + Don't leak references in the actions example + + These are not initially unowned... + + gio/tests/gapplication-example-actions.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 09426632796b31a4f978e1c6c5666cc660e14a71 +Author: Takayuki KUSANO +AuthorDate: Mon Nov 1 01:28:13 2010 +0900 +Commit: Takayuki KUSANO +CommitDate: Mon Nov 1 01:28:13 2010 +0900 + + Fix error in Japanese translation + + po/ja.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c34bcefa78faacbda4528de9aeea2e13519c27e0 +Author: Matthias Clasen +AuthorDate: Sat Oct 30 22:19:02 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 30 22:19:02 2010 -0400 + + Add an example of using GApplication with actions + + gio/tests/Makefile.am | 4 ++ + gio/tests/gapplication-example-actions.c | 82 + ++++++++++++++++++++++++++++++++ + 2 files changed, 86 insertions(+) + +commit ab02965c50b8b80a2a676888f5aa4c36cbc7c3df +Author: Christian Persch +AuthorDate: Sat Oct 30 21:40:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 30 21:40:28 2010 -0400 + + Use G_GINT64_CONSTANT here + + Bug #631482. + + glib/gdatetime.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e24dfacd5b81ee0b6b596df3739df4448e5bbf04 +Author: Matthias Clasen +AuthorDate: Sat Oct 30 01:13:42 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 30 01:13:42 2010 -0400 + + gsettings-tool: Support completion for enum values + + https://bugzilla.gnome.org/show_bug.cgi?id=631264 + + gio/gsettings-bash-completion.sh | 18 ++++++++++++++++++ + gio/gsettings-tool.c | 17 +++++++++++++++++ + 2 files changed, 35 insertions(+) + +commit 6298e88538fb5799432774574713af259701c735 +Author: Matthias Clasen +AuthorDate: Sat Oct 30 00:00:06 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 30 00:00:06 2010 -0400 + + Add a command to list keys and values recursively + + This is similar to gconftool-2 -R, which is very handy + for collecting information for bug reports, etc. It is now + possible to say gsettings list-recursively org.foo.bar, and + this will produce a list of schemas, keys and values for + org.foo.bar and all its child and grandchild schemata, + recursively. + + https://bugzilla.gnome.org/show_bug.cgi?id=632571 + + gio/gsettings-bash-completion.sh | 6 ++-- + gio/gsettings-tool.c | 66 + ++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 69 insertions(+), 3 deletions(-) + +commit d6192166862c6cad3914ddf397b798205263b564 +Author: Matthias Clasen +AuthorDate: Fri Oct 29 23:12:07 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Oct 29 23:12:07 2010 -0400 + + Make gsettings-tool translatable again + + This regression was caused by the recent rewrite. + + gio/gsettings-tool.c | 92 + ++++++++++++++++++++++++++++------------------------ + 1 file changed, 49 insertions(+), 43 deletions(-) + +commit cb647730029d5da388637e2a532f7f54a0d86f47 +Author: Ryan Lortie +AuthorDate: Fri Oct 29 16:33:47 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 29 16:33:47 2010 -0400 + + Use 'aay' instead of 'as' for environ + + It might contain non-utf8 characters. + + gio/gapplication.c | 10 +++++++--- + gio/gapplicationcommandline.c | 3 ++- + 2 files changed, 9 insertions(+), 4 deletions(-) + +commit 641f622bfe72866baa52dbd1044b7be2b6271999 +Author: Ryan Lortie +AuthorDate: Thu Oct 28 23:06:53 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 28 23:06:53 2010 -0400 + + GApplication: emit a signal when starting up + + Send a signal to the bus when registration is successful and we + are the + primary instance. + + gio/gapplicationimpl-dbus.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 7aa2e5026260a51e089d10dd18017b8f129b7adf +Author: Ryan Lortie +AuthorDate: Thu Oct 28 22:49:12 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 28 22:50:00 2010 -0400 + + GApplication: support environment passing + + Add support for passing the full contents of the environment to the + primary instance (by storing it in the platform_data) when + G_APPLICATION_SEND_ENVIRONMENT is in the flags. + + docs/reference/gio/gio-sections.txt | 2 ++ + gio/gapplication.c | 8 +++++ + gio/gapplicationcommandline.c | 71 + +++++++++++++++++++++++++++++++++++++ + gio/gapplicationcommandline.h | 5 +++ + gio/gio.symbols | 2 ++ + gio/gioenums.h | 5 ++- + 6 files changed, 92 insertions(+), 1 deletion(-) + +commit 99d2c2eef580c6ee4cbcf18b656e574331d6ad08 +Author: Ryan Lortie +AuthorDate: Thu Oct 28 22:20:25 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 28 22:20:56 2010 -0400 + + Add testcase for environment functions + + glib/tests/.gitignore | 1 + + glib/tests/Makefile.am | 3 +++ + glib/tests/environment.c | 51 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 55 insertions(+) + +commit 29ce7385bb631ac04dc8b965dd0c6fab488c770d +Author: Ryan Lortie +AuthorDate: Thu Oct 28 21:26:09 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 28 22:20:56 2010 -0400 + + Add g_get_environ(): portable access to 'environ' + + Return a copy of 'environ' on platforms where that is possible, or do + something else on other platforms. + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gutils.c | 39 + +++++++++++++++++++++++++++++++++++ + glib/gutils.h | 1 + + 4 files changed, 42 insertions(+) + +commit b4d3b6e0de4fe2f239f414c6a62be35018d05a4c +Author: Carles Ferrando +AuthorDate: Fri Oct 29 00:48:48 2010 +0100 +Commit: Gil Forcada +CommitDate: Fri Oct 29 00:49:05 2010 +0100 + + Updated Catalan (Valencian) translation + + po/ca@valencia.po | 2095 + +++++++++++++++++++++++++++++++++++------------------ + 1 file changed, 1396 insertions(+), 699 deletions(-) + +commit bf7ba2fbdc6fdbb38fe35f71dfdf74dd8fcbf414 +Author: Ryan Lortie +AuthorDate: Thu Oct 28 16:46:18 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 28 16:47:13 2010 -0400 + + GApplication: use infinite timeout for CommandLine + + Use an infinite DBus timeout for sending a CommandLine request to the + primary instance. + + This resolves a bit of bug #633339. + + gio/gapplicationimpl-dbus.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fac2a8278e6bc83b281cd85f783e9ae4b05371be +Author: Ryan Lortie +AuthorDate: Thu Oct 28 16:14:24 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Oct 28 16:47:13 2010 -0400 + + Bug 633356 - (GDBus) Make G_MAXINT mean no timeout + + Don't register a timeout function in the case that G_MAXINT is + given for + the timeout length. + + gio/gdbusconnection.c | 31 +++++++++++++++++++------------ + gio/gdbusproxy.c | 6 ++++-- + 2 files changed, 23 insertions(+), 14 deletions(-) + +commit cd4f818b301bfc6855b27feba5a0dfdca60027c1 +Author: Dan Winship +AuthorDate: Thu Oct 28 15:17:17 2010 -0400 +Commit: Dan Winship +CommitDate: Thu Oct 28 15:17:17 2010 -0400 + + GNetworkService: fix a small bug + + Fix a small bug in the synchronous lookup code introduced in the fix + for bug 629274 + + gio/gnetworkservice.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dd9f8b8cc6d873517dedd83935ed0d994bbbd6c9 +Author: Emilio Pozuelo Monfort +AuthorDate: Tue Sep 28 11:53:03 2010 +0200 +Commit: Ryan Lortie +CommitDate: Thu Oct 28 11:23:03 2010 -0400 + + Don't enable dtrace support when dtrace isn't available + + Fixes FTBFS when dtrace isn't available but is. + + configure.ac | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 7c184df292f7552423fa7931c843b2f1949c1455 +Author: Ryan Lortie +AuthorDate: Fri Oct 16 12:19:06 2009 +0200 +Commit: Ryan Lortie +CommitDate: Thu Oct 28 11:20:57 2010 -0400 + + Bug 158725 - free linked list with data + + Add some helpers for freeing a linked list along with its elements by + providing a GDestroyNotify to call on each of them. + + Add a test. + + Based on a patch from Cosimo Cecchi. + + docs/reference/glib/glib-sections.txt | 2 ++ + glib/glib.symbols | 2 ++ + glib/glist.c | 21 +++++++++++- + glib/glist.h | 2 ++ + glib/gslist.c | 18 ++++++++++ + glib/gslist.h | 2 ++ + glib/tests/list.c | 63 + +++++++++++++++++++++++++++++++++++ + 7 files changed, 109 insertions(+), 1 deletion(-) + +commit 4baad1acbff936284c5367afdb4494cf081ee394 +Author: Ryan Lortie +AuthorDate: Wed Oct 27 09:26:01 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 27 09:26:01 2010 -0400 + + GApplication: exit_status unset in one branch + + Closes #633206 + + gio/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f7a918dcb9fac00c7904b63452a59496594369aa +Author: Ryan Lortie +AuthorDate: Fri Oct 22 19:43:11 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Oct 27 09:22:13 2010 -0400 + + GPeriodic: allow unblock time to be passed in + + gio/gperiodic.c | 22 ++++++++++++++++++++-- + gio/gperiodic.h | 3 ++- + 2 files changed, 22 insertions(+), 3 deletions(-) + +commit 2af4b6e5440c22f4b56923ac9a749af06b3188d9 +Author: Ryan Lortie +AuthorDate: Fri Oct 22 19:20:14 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Oct 27 09:22:13 2010 -0400 + + Deprecate g_source_get_current_time() + + glib/glib.symbols | 2 ++ + glib/gmain.c | 2 ++ + glib/gmain.h | 2 ++ + 3 files changed, 6 insertions(+) + +commit 83472b34ef0bd3b53ff0a38b7f8691c3bd6fa0a9 +Author: Ryan Lortie +AuthorDate: Fri Oct 22 19:16:57 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Oct 27 09:22:13 2010 -0400 + + switch GSocket to monotonic time for timeouts + + gio/gsocket.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit d3fe2efb83b690507eb5513d96c27d06e9206da1 +Author: Ryan Lortie +AuthorDate: Fri Oct 22 19:13:01 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Oct 27 09:22:13 2010 -0400 + + switch GPeriodic to use monotonic time + + gio/gperiodic.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 91113a8aeea40cc2d7dda65b09537980bb602a06 +Author: Ryan Lortie +AuthorDate: Fri Oct 22 19:10:39 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Oct 27 09:22:12 2010 -0400 + + switch GTimeoutSource to use monotonic time + + glib/gmain.c | 72 + ++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 36 insertions(+), 36 deletions(-) + +commit b7d8363fbec421d1e3e8b1a198fd7efb2ec9d2bc +Author: Ryan Lortie +AuthorDate: Fri Oct 22 18:40:08 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Oct 27 09:22:12 2010 -0400 + + Add g_source_get_time() + + Cached version of g_get_monotonic_time() that does similar to what + g_source_get_current_time() does for g_get_current_time(). + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gmain.c | 47 + ++++++++++++++++++++++++++++++++++- + glib/gmain.h | 2 ++ + 4 files changed, 50 insertions(+), 1 deletion(-) + +commit bf941f200c9784eb363d3b07b9d828dfc31a3ce2 +Author: Ryan Lortie +AuthorDate: Fri Oct 22 18:47:06 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Oct 27 09:22:12 2010 -0400 + + Rename time_is_current to current_time_is_fresh + + Internal structure field; no semantic changes. + + glib/gmain.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit ab548d240a9c2862ea7f7685c68b6013a68bf0c8 +Author: Ryan Lortie +AuthorDate: Fri Oct 22 18:42:32 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Oct 27 09:22:12 2010 -0400 + + Add g_get_monotonic_time() + + Gets the system monotonic time on systems that have it. Otherwise, + call + g_get_current_time(). + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gmain.c | 70 + ++++++++++++++++++++++++++++++++++- + glib/gmain.h | 1 + + 4 files changed, 72 insertions(+), 1 deletion(-) + +commit ac82e74895f5a094e07506e48b908188e03006d3 +Author: Ryan Lortie +AuthorDate: Fri Oct 22 17:28:46 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Oct 27 09:22:12 2010 -0400 + + Add 'GTimeSpec' as 'struct timespec' equivalent + + docs/reference/glib/glib-sections.txt | 3 +++ + docs/reference/glib/tmpl/date.sgml | 8 ++++++++ + glib/gmain.c | 9 +++++++++ + glib/gtypes.h | 9 +++++++++ + 4 files changed, 29 insertions(+) + +commit 817b322ca781009617c40c4a05250ce412ecd0e8 +Author: Ryan Lortie +AuthorDate: Fri Oct 22 17:16:47 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Oct 27 09:22:12 2010 -0400 + + Link libglib against -lrt if we have clock_gettime + + configure.ac | 2 ++ + glib/Makefile.am | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +commit dfb0577ef4947afb32d91a72769bd22d6c1edfaa +Author: Ryan Lortie +AuthorDate: Wed Oct 27 09:08:32 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Oct 27 09:08:32 2010 -0400 + + Bug 632169 - manual use of gsettings-data-convert + + Add some words and example code to the documentation about why + you might + want to manually invoke gsettings-data-convert and how you should go + about doing that. + + docs/reference/gio/migrating-gconf.xml | 64 + ++++++++++++++++++++++++++++++++++ + 1 file changed, 64 insertions(+) + +commit 9126f1afae922339949d0b76e282411618bcb565 +Author: Ryan Lortie +AuthorDate: Tue Oct 26 12:02:12 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 26 12:02:12 2010 -0400 + + gsettings m4: Use --strict for checking + + A while ago we allowed glib-compile-schemas to return a 'success' + status + in the case that just one schema file contained errors. Of course, + this + is the exact opposite of what we want in the case that we are checking + schema validity at compile time. + + Use the --strict flag for that case. + + This closes #633115. + + m4macros/gsettings.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 181982c47cde49b3aff2293729f5aee5987db8af +Author: Ryan Lortie +AuthorDate: Tue Oct 26 11:49:32 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 26 11:49:32 2010 -0400 + + GVariant: avoid locking in a common case + + Avoid acquiring the lock on the instance on the case of deserialising + a + child. We know that it is safe to do this unlocked because a + serialised + child will never become unserialised. + + Closes #626320 + + glib/gvariant-core.c | 69 + +++++++++++++++++++++++++++++----------------------- + 1 file changed, 39 insertions(+), 30 deletions(-) + +commit e0caf4fd5ee82cc25806e7e86af14a8bf881c513 +Author: Ryan Lortie +AuthorDate: Mon Oct 25 14:45:19 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 25 14:45:19 2010 -0400 + + GApplicationCommandLine: add printf annotations + + to g_application_command_line_print{,err} + + gio/gapplicationcommandline.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d8d2513710c5663dc7387d79e443edeb5c75598f +Author: Ryan Lortie +AuthorDate: Mon Oct 25 14:32:07 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 25 14:32:07 2010 -0400 + + Implement (untested) GApplication actions support + + gio/gactiongroup.h | 29 ++- + gio/gapplication.c | 118 +++++++--- + gio/gapplicationimpl-dbus.c | 517 + +++++++++++++++++++++++++++++++++++++++----- + gio/gapplicationimpl.h | 23 +- + gio/giotypes.h | 1 + + 5 files changed, 607 insertions(+), 81 deletions(-) + +commit 196cd41f742730950a567c64381e2e8afadfa88c +Author: Andika Triwidada +AuthorDate: Mon Oct 25 22:10:32 2010 +0700 +Commit: Andika Triwidada +CommitDate: Mon Oct 25 22:10:32 2010 +0700 + + Updated Indonesian translation + + po/id.po | 695 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 360 insertions(+), 335 deletions(-) + +commit 66ec8b949ead5593ccb2ce54426fdf7d50ec4077 +Author: Matthias Clasen +AuthorDate: Mon Oct 25 09:55:38 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 25 09:55:38 2010 -0400 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 11a59404d5623d65e0d09c555ef2d4be50e4023b +Author: Matthias Clasen +AuthorDate: Mon Oct 25 08:42:36 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 25 08:42:36 2010 -0400 + + More documentation fixups + + docs/reference/gio/gio-sections.txt | 14 ++------------ + gio/gapplication.h | 2 +- + gio/gdatainputstream.c | 2 ++ + 3 files changed, 5 insertions(+), 13 deletions(-) + +commit d10a04b5330c6c4ef23a4e7871c8ced0c8343250 +Author: Matthias Clasen +AuthorDate: Mon Oct 25 08:34:00 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 25 08:34:00 2010 -0400 + + Remove nonexisting API from the headers + + I couldn't find any trace of g_application_run_with_arguments. + + gio/gapplication.h | 2 -- + 1 file changed, 2 deletions(-) + +commit 727c2a58c2468dd2faa442d2be7777b20b7b089b +Author: Matthias Clasen +AuthorDate: Mon Oct 25 08:30:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 25 08:30:28 2010 -0400 + + Add new gmain api to the docs + + docs/reference/glib/glib-sections.txt | 2 ++ + 1 file changed, 2 insertions(+) + +commit 7bb731d6136a9975b501757836762b91ad6ac416 +Author: Matthias Clasen +AuthorDate: Mon Oct 25 08:19:34 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Oct 25 08:19:34 2010 -0400 + + Update NEWS for 2.27.1 + + NEWS | 88 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 88 insertions(+) + +commit f67d16c52a244c1db2cf40340700c6dc90ab866a +Author: Yinghua Wang +AuthorDate: Sun Oct 24 03:51:46 2010 +0000 +Commit: Aron Xu +CommitDate: Sun Oct 24 03:51:46 2010 +0000 + + Update Simplified Chinese translation. + + po/zh_CN.po | 778 + +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 398 insertions(+), 380 deletions(-) + +commit 00366f440d6322b2742eb1cd35835902269c0e37 +Author: Matthias Clasen +AuthorDate: Sat Oct 23 20:43:36 2010 +0200 +Commit: Matthias Clasen +CommitDate: Sat Oct 23 21:01:15 2010 +0200 + + Some more GApplication doc tweaks + + gio/gapplication.c | 54 + +++++++++++++++++++++++++------------------ + gio/gapplicationcommandline.c | 18 ++++++++++++--- + gio/gioenums.h | 9 ++++---- + 3 files changed, 51 insertions(+), 30 deletions(-) + +commit 013f862a03d11708bb08f2ec98c8612f245a8937 +Author: Matthias Clasen +AuthorDate: Sat Oct 23 14:04:28 2010 +0200 +Commit: Matthias Clasen +CommitDate: Sat Oct 23 14:05:04 2010 +0200 + + Properly register the inactivity-timeout property + + It is a uint, not a boolean, so register it as such. + Also, only install the service timeout if we are actually registered + as the primary instance. + + gio/gapplication.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit 7c735b05f7a00c728e23a366128ffb56fee58b4e +Author: Matthias Clasen +AuthorDate: Sat Oct 23 12:01:51 2010 +0200 +Commit: Matthias Clasen +CommitDate: Sat Oct 23 12:01:51 2010 +0200 + + Move a confusing comment to the right place + + gio/gapplication.c | 6 ------ + gio/gapplicationimpl-dbus.c | 3 +++ + 2 files changed, 3 insertions(+), 6 deletions(-) + +commit b0e45c97992499929f1393743935438e07e88326 +Author: Matthias Clasen +AuthorDate: Sat Oct 23 11:54:50 2010 +0200 +Commit: Matthias Clasen +CommitDate: Sat Oct 23 11:59:29 2010 +0200 + + Add another example for commandline handling + + Also, clarify some aspects in the documentation. + + gio/gapplication.c | 10 +-- + gio/gapplication.h | 7 +- + gio/gapplicationcommandline.c | 4 +- + gio/tests/Makefile.am | 4 ++ + gio/tests/gapplication-example-cmdline2.c | 106 + ++++++++++++++++++++++++++++++ + 5 files changed, 123 insertions(+), 8 deletions(-) + +commit 499d9ba8b8fec44282fac09426b61d027c166459 +Author: Matthias Clasen +AuthorDate: Sat Oct 23 02:27:39 2010 +0200 +Commit: Matthias Clasen +CommitDate: Sat Oct 23 02:31:16 2010 +0200 + + Add some examples to the GApplication docs + + gio/gapplication.c | 9 +++++- + gio/gapplicationcommandline.c | 2 ++ + gio/tests/Makefile.am | 8 +++++ + gio/tests/gapplication-example-cmdline.c | 47 + ++++++++++++++++++++++++++++++ + gio/tests/gapplication-example-open.c | 50 + ++++++++++++++++++++++++++++++++ + 5 files changed, 115 insertions(+), 1 deletion(-) + +commit 79790b927840b1c2d389753c7237820d2f16899e +Author: Matthias Clasen +AuthorDate: Sat Oct 23 00:40:13 2010 +0200 +Commit: Matthias Clasen +CommitDate: Sat Oct 23 02:31:16 2010 +0200 + + Brush up the GApplication docs + + Also, fix up inclusions, mark properties for translation, etc. + + gio/gapplication.c | 124 + +++++++++++++++++++++++++++++++++++------- + gio/gapplication.h | 2 + + gio/gapplicationcommandline.c | 40 +++++++++----- + gio/gdbuserror.c | 2 +- + gio/gioenums.h | 8 ++- + gio/gsimpleaction.c | 2 +- + gio/gsimpleactiongroup.c | 2 +- + 7 files changed, 141 insertions(+), 39 deletions(-) + +commit 210a77a07ebf51156bb7fbc1482ce71fd56cbcd2 +Author: Matthias Clasen +AuthorDate: Sat Oct 23 00:32:45 2010 +0200 +Commit: Matthias Clasen +CommitDate: Sat Oct 23 02:31:16 2010 +0200 + + Fix a typo + + gio/gapplication.c | 16 ++++++++++------ + 1 file changed, 10 insertions(+), 6 deletions(-) + +commit e410131021036532e6e9622e8b977222389b44e9 +Author: Dan Winship +AuthorDate: Wed Sep 15 10:05:03 2010 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 22 14:59:35 2010 -0400 + + GNetworkService: fall back when there is no valid SRV record + + RFC 2782 says that if there is no SRV record for + _SERVICE._PROTOCOL.DOMAIN, you should fall back to trying just DOMAIN, + with the default port for SERVICE. Do that. + + https://bugzilla.gnome.org/show_bug.cgi?id=629274 + + gio/gnetworkservice.c | 50 + +++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 45 insertions(+), 5 deletions(-) + +commit 19243c247d8a89c6467bd21109b7f0d4b1cb081a +Author: Dan Winship +AuthorDate: Wed Sep 15 10:22:13 2010 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 22 14:59:35 2010 -0400 + + GNetworkService: fix iteration of multiple addresses + + Previously if there were multiple SRV records, only the first would + be iterated by the GSocketConnectable interface + + gio/gnetworkservice.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 87d06109ab325a4a68e151015381e7e1b33bdf7d +Author: Dan Winship +AuthorDate: Tue Aug 17 18:34:13 2010 -0400 +Commit: Dan Winship +CommitDate: Fri Oct 22 14:42:41 2010 -0400 + + GSocket: set protocol when using g_socket_new_from_fd() + + Otherwise, attempting to create a GSocketConnection from the socket + will likely return the wrong type, since the protocol won't match any + of the registered subtypes. + + Also add the start of a GSocket test program (from davidz). + + https://bugzilla.gnome.org/show_bug.cgi?id=627171 + + gio/gsocket.c | 29 ++++++++++++++--- + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 6 +++- + gio/tests/socket.c | 86 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 117 insertions(+), 5 deletions(-) + +commit a62b43fd9cea5455bead9a5bd12a27f01c4fadf4 +Author: Florian Müllner +AuthorDate: Fri Oct 22 13:20:54 2010 +0200 +Commit: Ryan Lortie +CommitDate: Fri Oct 22 14:52:41 2010 +0200 + + Fix deadlock in g_object_remove_toggle_ref() + + The code section guarded with toggle_refs_mutex includes a call to + g_object_unref(), which may call toggle_refs_notify(). As the latter + tries to acquire the same mutex, glib locks up. + + https://bugzilla.gnome.org/show_bug.cgi?id=632884 + + gobject/gobject.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit b7616114c6c1884c3a183a4d83156bdf2151b731 +Author: Alberto Garcia +AuthorDate: Fri Mar 26 16:19:13 2010 +0100 +Commit: Javier Jardón +CommitDate: Thu Oct 21 15:20:55 2010 +0200 + + Protect access to closure, weak refs and toggle refs arrays + + This fixes https://bugzilla.gnome.org/show_bug.cgi?id=613822 + + gobject/gobject.c | 30 ++++++++++++++++++++++++++---- + 1 file changed, 26 insertions(+), 4 deletions(-) + +commit dd6e15dd24a1f1910cfd71c2e21078261936c98d +Author: Ryan Lortie +AuthorDate: Thu Oct 21 14:02:41 2010 +0200 +Commit: Ryan Lortie +CommitDate: Thu Oct 21 14:02:41 2010 +0200 + + GApplication: create local commandline properly + + Don't pass a gchar** to g_object_new() when a GVariant* is expected. + + gio/gapplication.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 8690984ceadc35dc4251277ea1ca759d180a8fd6 +Author: Ryan Lortie +AuthorDate: Thu Oct 21 01:37:23 2010 +0200 +Commit: Ryan Lortie +CommitDate: Thu Oct 21 01:37:23 2010 +0200 + + GPeriodic: pass microseconds to the tick functions + + ...instead of milliticks, which nobody really cares to understand. + + gio/gperiodic.c | 29 ++++++++++++++++------------- + 1 file changed, 16 insertions(+), 13 deletions(-) + +commit 5400b0b38c513c829a4f0b0fc59188f820435d79 +Author: Ryan Lortie +AuthorDate: Wed Oct 20 03:20:34 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Oct 20 11:47:31 2010 +0200 + + GPeriodic: a periodic event clock + + Add a new class, GPeriodic. + + We hope to use this as a paint clock that can be shared by GTK and + Clutter. Many changes are still expected to the API. + + docs/reference/gio/gio-docs.xml | 4 + + docs/reference/gio/gio-sections.txt | 26 ++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gio-marshal.list | 1 + + gio/gio.h | 1 + + gio/gio.symbols | 14 + + gio/gperiodic.c | 631 + ++++++++++++++++++++++++++++++++++++ + gio/gperiodic.h | 69 ++++ + 9 files changed, 749 insertions(+) + +commit e33deea16ce3af7b91386d5debffd284a0109dfc +Author: Ryan Lortie +AuthorDate: Tue Oct 19 19:38:00 2010 +0200 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 19:38:00 2010 +0200 + + GApplication: reduce GVariant abuse + + Don't use GVariant* as the representation for the argument array. + + docs/reference/gio/gio-sections.txt | 1 - + gio/gapplication.c | 53 + +++++++++++-------------------------- + gio/gapplication.h | 40 ++++++++++++++-------------- + gio/gapplicationimpl-dbus.c | 8 +++--- + gio/gapplicationimpl.h | 2 +- + gio/gio.symbols | 3 --- + 6 files changed, 40 insertions(+), 67 deletions(-) + +commit a327bc51fc3090ed32d7e250dedadb8c35e84aeb +Author: Ryan Lortie +AuthorDate: Tue Oct 19 18:18:13 2010 +0200 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 18:29:58 2010 +0200 + + Cleanup and doc GApplicationCommandLine + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 2 - + gio/gapplicationcommandline.c | 406 + +++++++++++++++++++++++++----------- + gio/gapplicationcommandline.h | 29 +-- + gio/tests/gapplication.c | 2 +- + 5 files changed, 301 insertions(+), 139 deletions(-) + +commit eac4c385f0e34b012d49a09fb48712fdd0e46646 +Author: Ryan Lortie +AuthorDate: Tue Oct 19 16:56:18 2010 +0200 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 16:56:18 2010 +0200 + + GIO reference doc cleanups (re: GApplication) + + docs/reference/gio/Makefile.am | 2 + + docs/reference/gio/gio-sections.txt | 84 + +++++++++++++++++++++++++++---------- + 2 files changed, 65 insertions(+), 21 deletions(-) + +commit a2ac9c2515dcf227ed7c4e062b326bb0ac21c5ad +Author: Ryan Lortie +AuthorDate: Tue Oct 19 13:45:20 2010 +0200 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 13:45:20 2010 +0200 + + GDBus: disable test to work around bug #631379 + + This test consistently prevents 'make distcheck' from passing + on Ubuntu. + + gio/tests/gdbus-peer.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 0ce1462d1a4d4510bcac1b6fb9cf4d9f38b44de9 +Author: Ryan Lortie +AuthorDate: Tue Oct 19 13:44:30 2010 +0200 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 13:44:30 2010 +0200 + + GApplication: merge DBus interface into C source + + instead of having it in a separate file that causes problems to the + build system (I want to avoid using EXTRA_DIST here). + + gio/Makefile.am | 1 + + gio/gapplicationimpl-dbus-interface.c | 93 + ----------------------------------- + gio/gapplicationimpl-dbus.c | 84 + +++++++++++++++++++++++++++++-- + 3 files changed, 82 insertions(+), 96 deletions(-) + +commit 8ff9150e4422db000289a282b23aadac4dd5ba2c +Author: Ryan Lortie +AuthorDate: Tue Oct 19 12:38:40 2010 +0200 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 12:38:40 2010 +0200 + + gio: update symbols + + gio/gio.symbols | 1 + + 1 file changed, 1 insertion(+) + +commit 34f31fdfda549de717bb0ef02f6acfdb6de8ca29 +Author: Ryan Lortie +AuthorDate: Tue Oct 19 12:38:01 2010 +0200 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 12:38:01 2010 +0200 + + Don't try to dist old GApplication implementations + + One of them was deleted already, even. + + gio/Makefile.am | 2 +- + gio/gnullapplication.c | 74 + -------------------------------------------------- + 2 files changed, 1 insertion(+), 75 deletions(-) + +commit a6b8a3113bfd5fe9b28d3377865fed1ab1849ce0 +Author: Ryan Lortie +AuthorDate: Tue Oct 12 21:42:59 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 01:16:46 2010 +0200 + + GApplication: use g_signal_accumulator_first_wins + + ...instead of our homebrew version. + + gio/gapplication.c | 14 ++------------ + 1 file changed, 2 insertions(+), 12 deletions(-) + +commit 04b58a3e270c7de520c65cb213f95048db4503c8 +Author: Ryan Lortie +AuthorDate: Mon Oct 11 15:57:09 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 01:16:46 2010 +0200 + + Change 'Since:' to 2.28 for action classes + + gio/gaction.c | 26 +++++++++++++------------- + gio/gactiongroup.c | 34 +++++++++++++++++----------------- + gio/gsimpleaction.c | 18 +++++++++--------- + gio/gsimpleactiongroup.c | 8 ++++---- + 4 files changed, 43 insertions(+), 43 deletions(-) + +commit 3fe94ca9e904a5b85eb4beba978c68e2e01d4a59 +Author: Ryan Lortie +AuthorDate: Mon Oct 11 11:54:51 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 01:16:46 2010 +0200 + + GApplication: fill in action group implementation + + gio/gapplication.c | 119 + ++++++++++++++++++++++++++++++++++++++++++++++++----- + gio/gapplication.h | 3 ++ + 2 files changed, 112 insertions(+), 10 deletions(-) + +commit 491641cf017eff245dc13f7bea6011c7462c51f1 +Author: Ryan Lortie +AuthorDate: Mon Oct 11 10:50:41 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 01:16:46 2010 +0200 + + gio: app info symbol file fixup + + gio/gio.symbols | 1 - + 1 file changed, 1 deletion(-) + +commit 52b7fcf4093ac49860108c52cef58f62491cf1e4 +Author: Ryan Lortie +AuthorDate: Mon Oct 11 10:49:20 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 01:16:46 2010 +0200 + + gio: symbol file updates (actions, command line) + + gio/gio.symbols | 30 +++++++++++++++++++++++------- + 1 file changed, 23 insertions(+), 7 deletions(-) + +commit d6ac6c1850a8cd73775d6e95a20bb13f1f7f9527 +Author: Ryan Lortie +AuthorDate: Mon Oct 11 10:45:51 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 01:16:46 2010 +0200 + + Rename methods on GActionGroup to include 'action' + + Makes explicit the fact that you are interacting with the individual + action rather than the group and removes potential namespace conflicts + with classes implementing the interface (like g_application_activate() + vs g_application_activate_action()). + + gio/gactiongroup.c | 46 ++++++++++++++++----------------- + gio/gactiongroup.h | 66 + ++++++++++++++++++++++++------------------------ + gio/gapplication.c | 14 +++++----- + gio/gsimpleactiongroup.c | 14 +++++----- + gio/tests/actions.c | 28 ++++++++++---------- + 5 files changed, 84 insertions(+), 84 deletions(-) + +commit b2f942c142a84aa88b44600250bd93418ed14db3 +Author: Ryan Lortie +AuthorDate: Sun Oct 10 20:05:13 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 01:16:46 2010 +0200 + + GApplication: stub-in GActionGroup implementation + + gio/gapplication.c | 83 + +++++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 82 insertions(+), 1 deletion(-) + +commit 582638d7add3cd17b720c6a95bd18e9913c729a6 +Author: Ryan Lortie +AuthorDate: Sat Oct 9 17:25:07 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 01:16:46 2010 +0200 + + GApplication test: test remote commandline + + Also, a few small fixes/tweaks to other places in the test. + + gio/tests/gapplication.c | 68 + +++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 62 insertions(+), 6 deletions(-) + +commit 3e6eee806cdddd651bc15da9117adae1c3f97e6a +Author: Ryan Lortie +AuthorDate: Sat Oct 9 17:24:09 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 01:16:46 2010 +0200 + + GApplication: add remote commandline support + + gio/Makefile.am | 2 + + gio/gapplication.c | 88 +++++++++-- + gio/gapplication.h | 5 +- + gio/gapplicationcommandline.c | 273 + ++++++++++++++++++++++++++++++++++ + gio/gapplicationcommandline.h | 120 +++++++++++++++ + gio/gapplicationimpl-dbus-interface.c | 36 ++++- + gio/gapplicationimpl-dbus.c | 234 ++++++++++++++++++++++++++++- + gio/gapplicationimpl.h | 5 + + gio/gio-marshal.list | 1 + + gio/gio.h | 1 + + gio/gioenums.h | 7 +- + 11 files changed, 748 insertions(+), 24 deletions(-) + +commit 2854c373e140e63d6bd1a9f2ac01851c5b6418b1 +Author: Ryan Lortie +AuthorDate: Wed Oct 6 14:06:26 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 01:16:46 2010 +0200 + + GApplication test case + + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 5 +- + gio/tests/gapplication.c | 177 + +++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 182 insertions(+), 1 deletion(-) + +commit 72ce1c7eb6ece6353abaf3882ff4d50a39992efe +Author: Ryan Lortie +AuthorDate: Wed Oct 6 14:05:40 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 01:16:46 2010 +0200 + + GApplication: fix inactivity-timeout + + Create the gobject property for it. + + Tweak the logic of having a pending timeout at the time that the + application starts -- run the mainloop with a use count of zero + if there + is a timeout active. + + gio/gapplication.c | 20 ++++++++++++++------ + 1 file changed, 14 insertions(+), 6 deletions(-) + +commit a7923a4aa3ff6d67672c6c69cd1b7d70fba9c57d +Author: Ryan Lortie +AuthorDate: Wed Oct 6 13:08:26 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 19 01:16:46 2010 +0200 + + new GApplication implementation + + gio/Makefile.am | 9 +- + gio/gapplication.c | 1790 + ++++++++++++++------------------- + gio/gapplication.h | 175 ++-- + gio/gapplicationimpl-dbus-interface.c | 59 ++ + gio/gapplicationimpl-dbus.c | 304 ++++++ + gio/gapplicationimpl.h | 28 + + gio/gdbusapplication.c | 424 -------- + gio/gio-marshal.list | 3 +- + gio/gio.symbols | 30 +- + gio/gioenums.h | 18 + + gio/giotypes.h | 2 + + gio/tests/.gitignore | 3 - + gio/tests/Makefile.am | 12 - + gio/tests/application.c | 222 ---- + gio/tests/testapp.c | 107 -- + gio/tests/testapps.c | 604 ----------- + 16 files changed, 1258 insertions(+), 2532 deletions(-) + +commit 9d80c361418f94c609840ec9f83741aede7e482c +Author: Tor Lillqvist +AuthorDate: Thu Oct 14 22:47:25 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Mon Oct 18 14:43:21 2010 +0300 + + Use CSIDL_LOCAL_APPDATA on Windows + + Make g_get_user_data_dir() return the CSIDL_LOCAL_APPDATA folder on + Windows, and not CSIDL_PERSONAL. On Windows 7, that corresponds to the + subfolders AppData\Local vs. Documents under the profile ("home") + folder. This matches what Qt does, for instance, and has been widely + requested. + + Also make g_get_user_config_dir() return this and not the (roaming) + CSIDL_APPDATA folder. The reason for this change is that it would be + surprising and hard to justify if g_get_user_data_dir() returned the + local application data folder while g_get_user_config_dir() would + return the roaming one. Nothing in the function names or the XDG specs + suggests that any roaming vs. local dichotomy would be involved. + + Document the new semantics and the fact that these two functions now + return the same directory on Windows. + + Note that in reality, code that really truly wants to support Windows + as well as possible probably will not use these GLib functions anyway, + but Win32 APIs directly to be sure what it is doing... + + Should hopefully satisfy complaints in bug #620710 and related bugs. + + glib/gutils.c | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +commit 9040eac4ebfbe14141d6501f44a501bfe5e61b9c +Author: Matthias Clasen +AuthorDate: Sat Oct 16 23:30:30 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Oct 16 23:31:30 2010 -0400 + + Prevent error pileup + + gio/glib-compile-schemas.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3c808dc87471d25a7b06c7f41d1b8341c2ca1e7d +Author: Ryan Lortie +AuthorDate: Tue Oct 12 21:34:26 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 12 21:34:26 2010 -0400 + + GSignal: fix trivial docs typo + + gobject/gsignal.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 15d87c2cc48c8c1af3ad06ff8aaef766aa21fd6b +Author: Ryan Lortie +AuthorDate: Tue Oct 12 20:58:43 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 12 21:34:17 2010 -0400 + + GObject: add g_signal_accumulator_first_wins + + Deals with the case where we want exactly one signal handler to run. + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gobject.symbols | 1 + + gobject/gsignal.c | 33 + +++++++++++++++++++++++++++++ + gobject/gsignal.h | 5 +++++ + 4 files changed, 40 insertions(+) + +commit 0c21689ed83de2fb7bfb6dc31efa5d687cb7c6f8 +Author: Colin Walters +AuthorDate: Tue Oct 12 12:54:36 2010 -0400 +Commit: Colin Walters +CommitDate: Tue Oct 12 12:54:36 2010 -0400 + + gthemedicon: Fix annotation for g_themed_icon_get_names + + gio/gthemedicon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cdd58347d1ddc282e55f91d0a991b268547d78d9 +Author: Jorge González +AuthorDate: Sat Oct 9 14:38:08 2010 +0200 +Commit: Jorge González +CommitDate: Sat Oct 9 14:38:08 2010 +0200 + + Updated Spanish translation + + po/es.po | 700 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 361 insertions(+), 339 deletions(-) + +commit 5fa7a1e9cedb33d32049c54f13adc3504d723573 +Author: Javier Jardón +AuthorDate: Fri Oct 8 17:21:53 2010 +0200 +Commit: Javier Jardón +CommitDate: Fri Oct 8 17:22:19 2010 +0200 + + gtypemodule: Mention g_object_run_dispose correctly in a warning + + https://bugzilla.gnome.org/show_bug.cgi?id=630797 + + gobject/gtypemodule.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 44a8ff2f8f607f725c478793b876742b09f350ef +Author: Emmanuele Bassi +AuthorDate: Fri Oct 8 16:09:10 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Fri Oct 8 16:10:18 2010 +0100 + + gobject: Improve install_properties() + + Cache the parent type outside of the loop, and fix a typo in the + documentation. + + gobject/gobject.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 3035bf40d0d75632b36fa703c3ac2becc98769d8 +Author: Christian Dywan +AuthorDate: Fri Oct 8 16:33:33 2010 +0200 +Commit: Christian Dywan +CommitDate: Fri Oct 8 16:34:51 2010 +0200 + + Initialise lengths in GvdbReader to silence warnings + + gio/gvdb/gvdb-reader.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ad363d9aac5a6167121631a1ee8d3cec2784b5c2 +Author: Christian Dywan +AuthorDate: Fri Oct 8 16:33:04 2010 +0200 +Commit: Christian Dywan +CommitDate: Fri Oct 8 16:33:04 2010 +0200 + + Initialise lengths in GDbusAuth to silence warnings + + gio/gdbusauth.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 53f398f52aa07c4ae8c788fcc002f70eac941844 +Author: Christian Dywan +AuthorDate: Fri Oct 8 15:17:31 2010 +0200 +Commit: Christian Dywan +CommitDate: Fri Oct 8 15:25:31 2010 +0200 + + Mention g_object_run_dispose correctly in tutorial + + Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=630797 + + docs/reference/gobject/tut_gobject.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 0e3a39c016c75523efb30531942cfd87976413c8 +Author: Bruce Cowan +AuthorDate: Thu Oct 7 21:27:17 2010 +0100 +Commit: Bruce Cowan +CommitDate: Thu Oct 7 21:27:53 2010 +0100 + + Updated British English translation + + po/en_GB.po | 469 + +++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 258 insertions(+), 211 deletions(-) + +commit 7bafb3be95026055b4c9142ea1a82895c9e393bc +Author: William Jon McCann +AuthorDate: Thu Oct 7 13:51:21 2010 -0400 +Commit: William Jon McCann +CommitDate: Thu Oct 7 13:51:21 2010 -0400 + + Remove g_desktop_app_info_lookup_get_type symbol from gio.types + + It was removed in 9b262f1c5fe5a6fd879f17cd7b80d8c54e33d80c + + docs/reference/gio/gio.types | 1 - + 1 file changed, 1 deletion(-) + +commit 46390c9d107b6df55de458b3ffe47a5428d7f287 +Author: Tor Lillqvist +AuthorDate: Thu Oct 7 12:04:52 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Thu Oct 7 12:06:48 2010 +0300 + + Don't call close() on -1 + + Of course, a proper implementation of close() will just ignore an + invalid parameter silently, and set errno. But apparently the "debug" + version of the Microsoft C library generates some noise in this + case. So avoid that. Thanks to John Emmas for reporting. + + tests/testglib.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 200e3d7307df75803c03a2aebcbba0dc5eaa9161 +Author: Yaron Shahrabani +AuthorDate: Wed Oct 6 02:18:30 2010 +0200 +Commit: Yaron Shahrabani +CommitDate: Wed Oct 6 02:18:30 2010 +0200 + + Updated Hebrew translation. + + po/he.po | 449 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 236 insertions(+), 213 deletions(-) + +commit 9b262f1c5fe5a6fd879f17cd7b80d8c54e33d80c +Author: Bastien Nocera +AuthorDate: Tue Oct 5 15:02:37 2010 +0100 +Commit: Bastien Nocera +CommitDate: Tue Oct 5 17:15:37 2010 +0100 + + Replace "gio-desktop-app-info-lookup" extension point + + With a native version, that looks for desktop items supporting + x-scheme-handler/foo, when looking for a handler for the "foo" + URI scheme handler. + + https://bugzilla.gnome.org/show_bug.cgi?id=631410 + + gio/gdesktopappinfo.c | 93 + +++++---------------------------------------------- + gio/gdesktopappinfo.h | 36 -------------------- + gio/gio.symbols | 1 - + gio/giomodule.c | 5 --- + 4 files changed, 8 insertions(+), 127 deletions(-) + +commit 1612a4d5065e3505cf45585ffb7e890a06ff27d6 +Author: Ryan Lortie +AuthorDate: Tue Oct 5 02:29:47 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 5 02:29:47 2010 -0400 + + volume monitor: don't unref NULL + + Fix a couple more cases of blindly calling g_object_unref() on the + result of a function that is documented as sometimes returning NULL. + + gio/tests/volumemonitor.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit a7662ef315d7f369cbbc438dec76e3b9db3cd5ba +Author: Ryan Lortie +AuthorDate: Tue Oct 5 02:11:22 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Oct 5 02:11:22 2010 -0400 + + GVariant tests: fix bad allignment assumption + + One of the GVariant test cases allocates a pair of character arrays on + the stack and then passes them to functions that assume that they will + be aligned to a multiple of two. + + This is not the case for some versions of GCC (4.0.3 on PowerPC). + + glib/tests/gvariant.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +commit 3c5b50c4243025c9f42caac9a429291194b77be5 +Author: Ryan Lortie +AuthorDate: Mon Oct 4 21:07:50 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 4 21:07:50 2010 -0400 + + GSettings test: fix error match strings + + The name of the internal function that appears in an assertion message + has changed. Update the tests. + + gio/tests/gsettings.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit c4037230d4afcc0b634dede843a94b3836bb0c39 +Author: Ryan Lortie +AuthorDate: Mon Oct 4 03:41:03 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 4 03:42:57 2010 -0400 + + gsettings-tool: Add 'range' subcommand + + Provides access to the g_settings_get_range() functionality, + converting + its return value to something that's reasonable for printing at the + console and potentially parseable. The format may change. + + Bug #631264. + + gio/gsettings-bash-completion.sh | 8 ++--- + gio/gsettings-tool.c | 63 + ++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 67 insertions(+), 4 deletions(-) + +commit 59bdba3cbb50274b906740d483f049cdc91eb928 +Author: Ryan Lortie +AuthorDate: Mon Oct 4 03:40:22 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 4 03:42:43 2010 -0400 + + gsettings-tool: implement range-checking + + Prevent assertion messages from spewing forth and also ensure that we + exit with an error status in the event that the value was out + of range. + + Bug #631264. + + gio/gsettings-tool.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit e740c5b4cdcdf8e5f60cd2500451499c499d4ec2 +Author: Ryan Lortie +AuthorDate: Mon Oct 4 03:36:09 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 4 03:36:09 2010 -0400 + + Update symbols and docs sections + + docs/reference/gio/gio-sections.txt | 6 +++++- + gio/gio.symbols | 2 ++ + 2 files changed, 7 insertions(+), 1 deletion(-) + +commit e81d85615991e40a9c72f4f4319c358a4e1479cd +Author: Ryan Lortie +AuthorDate: Mon Oct 4 03:33:06 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 4 03:33:06 2010 -0400 + + GSettings: add g_settings_range_check() API + + Checks if a given value is within the correct range for a key. + + gio/gsettings.c | 51 +++++++++++++++++++++++++++++++++++++++++++-------- + gio/gsettings.h | 3 +++ + 2 files changed, 46 insertions(+), 8 deletions(-) + +commit d6d76783ae9fc473d7fe38683d729d6c2c8e80c4 +Author: Ryan Lortie +AuthorDate: Mon Oct 4 02:58:46 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 4 02:58:46 2010 -0400 + + Bug 631263 - GSettings needs range/choice APIs + + Add g_settings_get_range() to describe the possible values that may be + provided to g_settings_set_value() without causing an error. + + Add a test case. + + gio/gsettings.c | 84 + ++++++++++++++++++++++++++++++++++++++++++++++++++- + gio/gsettings.h | 2 ++ + gio/strinfo.c | 31 +++++++++++++++++++ + gio/tests/gsettings.c | 43 ++++++++++++++++++++++++++ + 4 files changed, 159 insertions(+), 1 deletion(-) + +commit 833e389516b5e5b2271ed84c7b2036801c3100f1 +Author: Ryan Lortie +AuthorDate: Mon Oct 4 02:57:06 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 4 02:57:06 2010 -0400 + + schema compiler: Don't store zero-valued flags + + Don't store the "none" value for flags into the compiled schema file. + "none" should never appear as a value -- no flags set is indicated + by an + empty array. + + gio/glib-compile-schemas.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 136e705e8383ff8848e425ac01278102d7badc52 +Author: Ryan Lortie +AuthorDate: Mon Oct 4 01:51:11 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Oct 4 01:51:11 2010 -0400 + + Bug 627126 - gsettings schemas on FreeBSD + + Rewrite the install rule for GSettings schemas to not depend on an + obscure chunk of non-portable sed that nobody understands the purpose + of. + + Instead, use make's VPATH feature to resolve the paths of the + files that + need to be installed. No need to depend on the .valid targets here + since automake already ensures that 'make all' is complete before + 'make + install' is permitted to run. + + m4macros/gsettings.m4 | 16 ++-------------- + 1 file changed, 2 insertions(+), 14 deletions(-) + +commit 8efcc0d8c86b588eb0ee0e60d3c60d8c107734b5 +Author: Ryan Lortie +AuthorDate: Sun Oct 3 23:26:18 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 3 23:26:18 2010 -0400 + + glib-compile-schemas: write strinfo little endian + + Ensure that the strinfo is output in little-endian byte order on big + endian machines. + + GSettings is now passing all of its tests on PowerPC. + + Bug #630968 is closed. + + gio/glib-compile-schemas.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 61563d5f555f697824cd2ecc17a6687773e6e70e +Author: Ryan Lortie +AuthorDate: Sun Oct 3 23:25:29 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 3 23:25:29 2010 -0400 + + GSettings strinfo: byteswap integers + + strinfo is always strictly little endian, so ensure that we + byteswap to + native when comparing and returning. + + gio/strinfo.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 9211d2b00c82057864631a78b1f4ba1d36ee7b5c +Author: Ryan Lortie +AuthorDate: Sun Oct 3 23:15:27 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 3 23:15:27 2010 -0400 + + GSettings endian: missed a spot + + Missed an instance of get_value -> get_raw_value search/replace. + + gio/gsettingsschema.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c84441fbb3b2eb14775e8467a07cda4eff4502e1 +Author: Ryan Lortie +AuthorDate: Sun Oct 3 23:04:00 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 3 23:04:00 2010 -0400 + + GSettings big endian tweaks + + GSettings relies on parts of the schema infromation remaining + unbyteswapped (the strinfo database, for example) while requiring + other + parts to be in native order (the default value, constraints, etc.). + + Lift the byteswapping into a place where we can do it selectively. + + gio/gsettings.c | 15 +++++++++++++++ + gio/gsettingsschema.c | 12 +----------- + 2 files changed, 16 insertions(+), 11 deletions(-) + +commit 73ca8b47540d005d5227c03aac143d6780da654c +Merge: 9082232 e5e491c +Author: Ryan Lortie +AuthorDate: Sun Oct 3 23:03:12 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 3 23:03:12 2010 -0400 + + Merge remote branch 'gvdb/master' + +commit e5e491c96946ec6ff6809e4b2b757b1f2d497867 +Author: Ryan Lortie +AuthorDate: Sun Oct 3 22:54:03 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 3 23:02:45 2010 -0400 + + Add gvdb_table_get_raw_value() API for GSettings + + gvdb-reader.c | 23 +++++++++++++++++++++++ + gvdb-reader.h | 3 +++ + 2 files changed, 26 insertions(+) + +commit 90822327acdcc0a10f0de41c591e4cee234811db +Author: Ryan Lortie +AuthorDate: Sun Oct 3 22:53:49 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 3 22:55:53 2010 -0400 + + GSettings test: fix unsafe GObject properties use + + The test case was passing a guint16 to g_object_get() for a guint + property. That's invalid on all systems, although it works (more or + less) on little endian ones. On big endian it's a total no-go. + + gio/tests/gsettings.c | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +commit 2ce2d587edbeb98b355c4038c218d75a8c8f9c99 +Author: Ryan Lortie +AuthorDate: Sun Oct 3 22:39:47 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 3 22:55:39 2010 -0400 + + GVariant: avoid byteswapping in some cases + + Make g_variant_byteswap() merely return a new reference on the given + value in the event that we know that byteswapping will have no effect + (ie: types which have no alignment requirement). + + This fixes a somewhat complicated interaction between GVariant, + GSettings and GVDB on big endian machines: GSettings assumes that it + can unref values returned from GVDB without losing access to the + underlying data. This only works if the underlying data is in the + mapped file -- not a freshly-allocated buffer that GVariant + byteswapped + into. + + glib/gvariant.c | 40 +++++++++++++++++++++++++++------------- + 1 file changed, 27 insertions(+), 13 deletions(-) + +commit 63adeda0861a26b38ec0adc76255666554c18951 +Merge: cdab385 a35852b +Author: Ryan Lortie +AuthorDate: Sun Oct 3 21:11:17 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 3 21:11:17 2010 -0400 + + Merge remote branch 'gvdb/master' + +commit a35852bda37400bb4f7c6ee3a3184dde65fadb1f +Author: Ryan Lortie +AuthorDate: Sun Oct 3 21:10:35 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 3 21:10:35 2010 -0400 + + Fix reader on big endian + + Some of the hashtable code was failing to byteswap properly. + + gvdb-reader.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit cdab385ad9fcda469c3fae107adc4abc1082c27a +Author: Ryan Lortie +AuthorDate: Sun Oct 3 20:47:26 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 3 20:47:26 2010 -0400 + + allow libtool 2.4 + + It's released now and it seems to work OK. + + autogen.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0bd50b39eb8223f2eeffe8dc5fe096b2c7695529 +Author: Ryan Lortie +AuthorDate: Sun Oct 3 17:30:10 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 3 17:34:16 2010 -0400 + + Bug 623400 - acquire context before dispatching + + For GSettings. + + Use the functionality introduced in the last commit to simplify our + notify dispatching and increase the safety of doing so (by ensuring + that + the context is acquired in the current thread for the duration of the + dispatch). + + This closes bugs #623400 and #629849. + + gio/gdelayedsettingsbackend.c | 16 +------- + gio/gsettingsbackend.c | 87 + ++++++++++++++++-------------------------- + gio/gsettingsbackendinternal.h | 2 - + 3 files changed, 33 insertions(+), 72 deletions(-) + +commit 92974b80fc10f494b33ed6760b5417bbbbb83473 +Author: Ryan Lortie +AuthorDate: Sun Oct 3 17:26:37 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 3 17:34:16 2010 -0400 + + Bug 618737 - "dispatch to context" functionality + + Adds a new function g_main_context_invoke() (and _full() variant). + + This function takes a main context, a function and a user_data. + If the + main context is already acquired in the current thread, the + function is + invoked directly. If the main context is the default main context of + the current thread and it can be acquired then the function is invoked + directly while the context is owned. Otherwise, the function is + scheduled as an idle on the context. + + glib/glib.symbols | 2 + + glib/gmain.c | 110 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/gmain.h | 9 +++++ + 3 files changed, 121 insertions(+) + +commit 63fb3ff774146a44dcf980bd4cfbca68770a3d93 +Author: Žygimantas Beručka +AuthorDate: Sun Oct 3 15:45:33 2010 +0200 +Commit: Žygimantas Beručka +CommitDate: Sun Oct 3 15:45:33 2010 +0200 + + Updated Lithuanian translation by Aurimas Černius + + po/lt.po | 278 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 158 insertions(+), 120 deletions(-) + +commit 2d6f8a8ea4a0c86c40da60db2d948306f4c2f5c9 +Author: Ryan Lortie +AuthorDate: Sun Oct 3 02:40:48 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 3 02:48:07 2010 -0400 + + gsettings-tool: Rewrite + + Rewrite the GSettings tool. + + Improvements/changes: + + - simplify the code by performing common actions (like creating a + schema) in only one place instead of one per-command + + - new features (list schemas, list keys, monitor multiple, etc) + + - factor-out bash completion and implement in shellscript + + - input validation: should never abort due to invalid inputs + + Still to do: + + - proper error checking for ranges/choices + + - support for querying range/choice information + + - bash completion support for enums + + Closes bug #629289, possibly among others. + + gio/gsettings-bash-completion.sh | 58 ++- + gio/gsettings-tool.c | 1047 + ++++++++++++++------------------------ + 2 files changed, 405 insertions(+), 700 deletions(-) + +commit ed9db23f9a056ae253be25c2262f19047a62fe76 +Author: Ryan Lortie +AuthorDate: Sun Oct 3 01:53:09 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Oct 3 01:53:09 2010 -0400 + + GSettings: implement .property_get('path') + + This was unimplemented in g_settings_get_property(), leading to + a failed + 'g_assert_not_reached()'. + + gio/gsettings.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 5af11ae4bc74104502da537b5a89e92223f697dc +Author: Ryan Lortie +AuthorDate: Sat Oct 2 22:46:53 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Oct 2 22:46:53 2010 -0400 + + Add 'Since:' tags for schema listing APIs + + gio/gsettingsschema.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit d2c06994402ee30e989efb9e912d3abd16ca0e10 +Author: Ryan Lortie +AuthorDate: Sat Oct 2 22:42:02 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Oct 2 22:42:02 2010 -0400 + + Clean up g_settings_list_schemas() + + In its previous form, g_settings_list_schemas() was not useful as + a tool + to prevent aborts due to using g_settings_new() with an invalid schema + name. This is because g_settings_list_scheams() also listed + relocatable + schemas, and calling g_settings_new() for those would abort just the + same as if you called it for a non-existent schema. + + Modify g_settings_list_schemas() so that it only returns schemas for + which it is safe to call g_settings_new(). Add another call for + sake of + completeness: g_settings_list_relocatable_schemas(). + + gio/gio.symbols | 1 + + gio/gsettings.h | 1 + + gio/gsettingsschema.c | 126 + +++++++++++++++++++++++++++++++++++++------------- + gio/tests/gsettings.c | 7 ++- + 4 files changed, 103 insertions(+), 32 deletions(-) + +commit 1fee36f72bdbf87d585222e864cb8494e7156ee0 +Author: Damyan Ivanov +AuthorDate: Sat Oct 2 08:57:09 2010 +0300 +Commit: Alexander Shopov +CommitDate: Sat Oct 2 08:57:09 2010 +0300 + + Updated Bulgarian translation + + po/bg.po | 143 + ++++++++++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 95 insertions(+), 48 deletions(-) + +commit ba0e608478367cdb7ee550b9efaefba8bd418720 +Author: Ryan Lortie +AuthorDate: Mon Sep 27 11:14:08 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 1 11:21:17 2010 -0400 + + Improve .gitignore + + gio/tests/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit 3e771509b487fbc671e9217f8dcbd20daa44c116 +Author: Ryan Lortie +AuthorDate: Mon Sep 27 11:10:11 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 1 11:21:13 2010 -0400 + + Bug 628937 - gracefully handle broken schemas + + Implement the second feature requested in the bug: silently ignore + override files that attempt to override schemas that are not currently + installed. + + Also, support 'strictness' being optional for other errors when + parsing + override files (ie: inability to open the file, unknown key name, + parse + errors, out of range). We don't completely back out the file in this + case — as that is difficult with the current implementation — + but just + ignore the override for the single key. + + gio/glib-compile-schemas.c | 121 + +++++++++++++++++++++++++++++++-------------- + 1 file changed, 83 insertions(+), 38 deletions(-) + +commit bd290081ff8c7951c6509d0aee23246739a928a2 +Author: Ryan Lortie +AuthorDate: Mon Sep 27 10:36:11 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 1 11:21:07 2010 -0400 + + glib-compile-schemas: improve error accuracy + + We wrote " must contain at least one " for empty . + Fix that. + + gio/glib-compile-schemas.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit e40f3932dd9d924c3197e98f44950561248297ae +Author: Ryan Lortie +AuthorDate: Mon Sep 27 10:27:11 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 1 11:21:02 2010 -0400 + + Bug 628937 - gracefully handle broken schemas + + Implement the first of two features requested in the bug: when + encountering a broken .xml schema file, back out the changes in that + file and continue to parse other files. + + This prevents a single broken .xml file from messing up GSettings for + everyone else. + + Add a --strict option to get the old behaviour. Use this from + the test + cases. + + gio/glib-compile-schemas.c | 89 + ++++++++++++++++++++++++++++++++++++--------- + gio/tests/gschema-compile.c | 1 + + 2 files changed, 72 insertions(+), 18 deletions(-) + +commit fff6814973356ac23b1022113632441110825283 +Author: Ryan Lortie +AuthorDate: Mon Sep 27 09:06:24 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Oct 1 11:20:55 2010 -0400 + + Bug 630077 - GDateTime week number support + + Fully implement support for ISO 8601 week dates in GDateTime and + document that this is the case. + + Add an exhaustive test case to ensure correctness. + + docs/reference/glib/glib-sections.txt | 1 + + glib/gdatetime.c | 96 ++++++++++++++++- + glib/gdatetime.h | 1 + + glib/glib.symbols | 1 + + glib/tests/gdatetime.c | 188 + ++++++++++++++++++++++++++-------- + 5 files changed, 239 insertions(+), 48 deletions(-) + +commit fe1186a842458dcc647c5f9ab03f17c762354e95 +Author: Matthias Clasen +AuthorDate: Thu Sep 30 14:40:50 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Sep 30 14:40:50 2010 -0400 + + message_to_write_data_free: Don't unref data->message if it is NULL + + After the recent changes to message filtering, it can happen that + data->message is NULL when we get here. + + gio/gdbusprivate.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit faaa8a9f8af9548e2d6052d1ba465285cb314cee +Author: Giannis Katsampirhs +AuthorDate: Thu Sep 30 14:47:58 2010 +0300 +Commit: Simos Xenitellis +CommitDate: Thu Sep 30 14:48:06 2010 +0300 + + l10n: Updated Greek translation for glib + + po/el.po | 7535 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 3835 insertions(+), 3700 deletions(-) + +commit 98a0ce64a379a60cfaf9b37f52b300c9297ea44c +Author: Piotr Drąg +AuthorDate: Wed Sep 29 18:46:10 2010 +0200 +Commit: Tomasz Dominikowski +CommitDate: Wed Sep 29 18:46:10 2010 +0200 + + Updated Polish translation + + po/pl.po | 1642 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 794 insertions(+), 848 deletions(-) + +commit 755c2dad72650f11397fc5a91ac42af15eafd530 +Author: Colin Walters +AuthorDate: Wed Sep 29 10:38:25 2010 -0400 +Commit: Colin Walters +CommitDate: Wed Sep 29 10:38:59 2010 -0400 + + introspection: Fix one annotation syntax + + gio/gsettings.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 01735d6cc09b7d24c2af07f91e1e96fe3cf785d1 +Author: Gabor Kelemen +AuthorDate: Wed Sep 29 14:07:05 2010 +0200 +Commit: Gabor Kelemen +CommitDate: Wed Sep 29 14:07:17 2010 +0200 + + Updated Hungarian translation + + po/hu.po | 632 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 310 insertions(+), 322 deletions(-) + +commit 38e476ac7da339cec868cabf21beed6a91254935 +Author: Bruno Brouard +AuthorDate: Wed Sep 29 09:02:51 2010 +0200 +Commit: Bruno Brouard +CommitDate: Wed Sep 29 09:07:12 2010 +0200 + + Updated French translation + + po/fr.po | 190 + ++++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 116 insertions(+), 74 deletions(-) + +commit 36ba8ffb87a9cf23d37c91d716e3a1512fcc7707 +Author: Petr Kovar +AuthorDate: Wed Sep 29 04:41:25 2010 +0200 +Commit: Petr Kovar +CommitDate: Wed Sep 29 04:41:25 2010 +0200 + + Update Czech translation + + po/cs.po | 994 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 563 insertions(+), 431 deletions(-) + +commit e458687fac24770f368f9caf498c84400b749f6b +Author: Peter Kragelj +AuthorDate: Tue Sep 28 21:21:38 2010 +0200 +Commit: Matej Urbančič +CommitDate: Tue Sep 28 21:21:38 2010 +0200 + + Updated Slovenian translation + + po/sl.po | 218 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 109 insertions(+), 109 deletions(-) + +commit afb6e1b4589a5308c3e9d7b2b77fdb8d47419929 +Author: Fran Diéguez +AuthorDate: Tue Sep 28 17:35:23 2010 +0200 +Commit: Fran Diéguez +CommitDate: Tue Sep 28 17:35:23 2010 +0200 + + Updated Galician translations + + po/gl.po | 555 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 305 insertions(+), 250 deletions(-) + +commit 339182f575521ede0e380a3cf502f2ff974621b4 +Author: Peter Kragelj +AuthorDate: Tue Sep 28 15:12:00 2010 +0200 +Commit: Matej Urbančič +CommitDate: Tue Sep 28 15:12:00 2010 +0200 + + Updated Slovenian translation + + po/sl.po | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 974ab9cfa016e0f6c0b6c58b203fd1b1f891c3a2 +Author: Peter Kragelj +AuthorDate: Tue Sep 28 15:10:33 2010 +0200 +Commit: Matej Urbančič +CommitDate: Tue Sep 28 15:10:33 2010 +0200 + + Updated Slovenian translation + + po/sl.po | 623 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 308 insertions(+), 315 deletions(-) + +commit e44f695f64d1baba9cc2f1eb2cdacbe68837dbfd +Author: Gintautas Miliauskas +AuthorDate: Tue Sep 28 00:12:42 2010 +0300 +Commit: Gintautas Miliauskas +CommitDate: Tue Sep 28 00:12:42 2010 +0300 + + Updated Lithuanian translation (thanks Aurimas Cernius). + + po/lt.po | 569 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 307 insertions(+), 262 deletions(-) + +commit c4f2bd25934cb322c9910ef46148cea1beae2cca +Author: Mario Blättermann +AuthorDate: Mon Sep 27 20:19:46 2010 +0200 +Commit: Mario Blättermann +CommitDate: Mon Sep 27 20:19:46 2010 +0200 + + [i18n] Updated German translation + + po/de.po | 582 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 311 insertions(+), 271 deletions(-) + +commit 973174e5cc56cd4f273c9d3b54a36f803e0b59dd +Author: Fabrício Godoy +AuthorDate: Mon Sep 27 08:49:51 2010 -0300 +Commit: Jonh Wendell +CommitDate: Mon Sep 27 08:50:48 2010 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 2487 + ++++++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 1588 insertions(+), 899 deletions(-) + +commit e2ea3eb5867b25465ef3ea540a541611aa7fef18 +Author: Damyan Ivanov +AuthorDate: Mon Sep 27 13:31:09 2010 +0300 +Commit: Alexander Shopov +CommitDate: Mon Sep 27 13:33:21 2010 +0300 + + Updated Bulgarian translation + + po/bg.po | 2388 + +++++++++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 1570 insertions(+), 818 deletions(-) + +commit 1a0dbff2365cc956ed0675a790dc09ea40f04fd1 +Author: Ryan Lortie +AuthorDate: Sun Sep 26 18:51:23 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Sep 26 18:53:28 2010 -0400 + + clean up g_date_time_get_week_day() + + No functionality changes here. + + Vastly simplify the algorithm for calculating the day of the week. + + Fix the documentation (which is incorrectly stating that 1 means + Sunday) and clarify that the number we return is in line with ISO 8601 + week day numbering. + + glib/gdatetime.c | 24 +++--------------------- + 1 file changed, 3 insertions(+), 21 deletions(-) + +commit e77faeb9209518f422fa6b035b8f4dd4401bf0e1 +Author: Wouter Bolsterlee +AuthorDate: Sun Sep 26 22:59:38 2010 +0200 +Commit: Wouter Bolsterlee +CommitDate: Sun Sep 26 23:00:07 2010 +0200 + + Updated Dutch translation by Wouter Bolsterlee + + po/nl.po | 326 + +++++++++++++++++++++++---------------------------------------- + 1 file changed, 119 insertions(+), 207 deletions(-) + +commit 4e091e8647175063d4684cfc6717e70d27f4d625 +Author: Lucian Adrian Grijincu +AuthorDate: Sun Sep 26 22:39:14 2010 +0300 +Commit: Lucian Adrian Grijincu +CommitDate: Sun Sep 26 22:39:14 2010 +0300 + + Updated Romanian translation + + po/ro.po | 2508 + +++++++++++++++++++++++++++++++++++++++++++++++++------------- + 1 file changed, 2003 insertions(+), 505 deletions(-) + +commit 30132c44c18d9a08e4c6a9b4834366bd8628ecfa +Author: Johan Dahlin +AuthorDate: Fri Sep 24 18:24:41 2010 -0300 +Commit: Johan Dahlin +CommitDate: Fri Sep 24 18:24:41 2010 -0300 + + Add a lot of missing annotations + + gio/gaction.h | 2 +- + gio/gappinfo.c | 3 +- + gio/gasyncresult.c | 4 +-- + gio/gcancellable.c | 2 +- + gio/gcontenttype.c | 4 +-- + gio/gconverterinputstream.c | 2 +- + gio/gconverteroutputstream.c | 2 +- + gio/gcredentials.c | 2 +- + gio/gdbusaddress.c | 4 +-- + gio/gdbusconnection.c | 12 ++++---- + gio/gdbusmessage.c | 12 ++++---- + gio/gdbusmethodinvocation.c | 6 ++-- + gio/gdbusproxy.c | 2 +- + gio/gdesktopappinfo.c | 2 +- + gio/gdrive.c | 4 +-- + gio/gemblem.c | 2 +- + gio/gemblemedicon.c | 4 +-- + gio/gfile.c | 67 + +++++++++++++++++++++++------------------- + gio/gfileenumerator.c | 2 +- + gio/gfileicon.c | 4 +-- + gio/gfileinfo.c | 4 +-- + gio/gfileinputstream.c | 4 +-- + gio/gfileiostream.c | 4 +-- + gio/gfileoutputstream.c | 4 +-- + gio/gicon.c | 4 ++- + gio/ginetsocketaddress.c | 2 +- + gio/ginitable.c | 6 ++-- + gio/giomodule.c | 4 +-- + gio/giomodule.h | 2 +- + gio/gkeyfilesettingsbackend.c | 2 +- + gio/gloadableicon.c | 4 +-- + gio/gmemoryoutputstream.c | 2 +- + gio/gmount.c | 6 ++-- + gio/gnetworkaddress.c | 8 ++--- + gio/gnetworkservice.c | 2 +- + gio/goutputstream.c | 6 ++-- + gio/gproxy.c | 4 +-- + gio/gproxyresolver.c | 6 ++-- + gio/gresolver.c | 2 +- + gio/gseekable.c | 3 +- + gio/gsettings.c | 8 ++--- + gio/gsettingsbackend.c | 6 ++-- + gio/gsettingsschema.c | 2 +- + gio/gsimpleasyncresult.c | 4 +-- + gio/gsocket.c | 10 +++---- + gio/gsocketaddressenumerator.c | 4 +-- + gio/gsocketclient.c | 18 ++++++------ + gio/gsocketconnectable.c | 4 +-- + gio/gsocketconnection.c | 6 ++-- + gio/gsocketcontrolmessage.c | 2 +- + gio/gsocketlistener.c | 8 ++--- + gio/gsrvtarget.c | 2 +- + gio/gthemedicon.c | 8 ++--- + gio/gunionvolumemonitor.c | 2 +- + gio/gunixconnection.c | 2 +- + gio/gunixcredentialsmessage.c | 2 +- + gio/gunixfdmessage.c | 2 +- + gio/gunixmounts.c | 6 ++-- + gio/gvfs.c | 12 ++++---- + gio/gvolume.c | 2 ++ + gio/gvolumemonitor.c | 2 +- + 61 files changed, 172 insertions(+), 161 deletions(-) + +commit 701ce5d2011ee4408212461f6e191eaca2290d0a +Author: Johan Dahlin +AuthorDate: Fri Sep 24 16:23:31 2010 -0300 +Commit: Johan Dahlin +CommitDate: Fri Sep 24 16:23:31 2010 -0300 + + [introspection] Add GObject annotations + + These were moved in from gobject-introspection + + gobject/gobject.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 835f9cb310b988b07d1822c3f12093b9b01bc496 +Author: Johan Dahlin +AuthorDate: Fri Sep 24 15:51:26 2010 -0300 +Commit: Johan Dahlin +CommitDate: Fri Sep 24 15:52:38 2010 -0300 + + [introspection] Move over annotations + + Move all the annotations over from gobject-introspection. + + They will not be used directly by the introspection scanner for now, + instead they will be extracted by a script and updated manually + until introspection is properly integrated into the glib build + + gio/gaction.c | 4 ++-- + gio/gactiongroup.c | 7 ++++--- + gio/gappinfo.c | 6 +++--- + gio/gasyncinitable.c | 2 +- + gio/gcontenttype.c | 2 +- + gio/gdesktopappinfo.c | 2 +- + gio/gemblemedicon.c | 3 ++- + gio/gfile.c | 22 +++++++++++----------- + gio/gfileenumerator.c | 4 ++-- + gio/giomodule.c | 3 ++- + gio/gmount.c | 8 ++++---- + gio/gresolver.c | 22 ++++++++++++---------- + gio/gsettings.c | 7 ++++--- + gio/gsrvtarget.c | 2 +- + gio/gunionvolumemonitor.c | 2 +- + gio/gunixmounts.c | 4 ++-- + gio/gvolume.c | 6 +++--- + gio/gvolumemonitor.c | 2 +- + 18 files changed, 57 insertions(+), 51 deletions(-) + +commit 0927dda8ad29cb4e6b3d19977be1fb747b1d4950 +Author: Christian Dywan +AuthorDate: Fri Sep 24 13:56:35 2010 +0200 +Commit: Christian Dywan +CommitDate: Fri Sep 24 13:56:35 2010 +0200 + + Correct error message when GUnixOutputStream fails to write + + Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=628876 + + gio/gunixoutputstream.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 80de3ca7ccc4bca1beeaf18459ecf4f703c6a2de +Author: Andre Klapper +AuthorDate: Fri Sep 24 13:15:23 2010 +0200 +Commit: Andre Klapper +CommitDate: Fri Sep 24 13:15:23 2010 +0200 + + Add missing file to POTFILES.in + + po/POTFILES.in | 1 + + 1 file changed, 1 insertion(+) + +commit 4d9ae95ae05669f329381898c38e6a98ae7f0cd5 +Author: David Zeuthen +AuthorDate: Thu Sep 23 19:16:25 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 23 19:16:25 2010 -0400 + + GDBus: Don't use abstract sockets in test code + + It doesn't really work right now because of a dbus-daemon(1) bug - see + the comment added in the TODO section of gdbusconnection.c. So revert + to old behavior. The downside is a lot of files in /tmp but right now + that's better than not being able to run tests in a loop. + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 9 +++++++++ + gio/tests/gdbus-sessionbus.c | 6 ++---- + 2 files changed, 11 insertions(+), 4 deletions(-) + +commit a35eb7047116d0614d9d8dc9d1e435d45659d0d6 +Author: David Zeuthen +AuthorDate: Thu Sep 23 18:57:35 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 23 18:57:35 2010 -0400 + + GDBus: Use abstract namespace in test cases to avoid littering all + over /tmp + + Signed-off-by: David Zeuthen + + gio/tests/gdbus-sessionbus.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 7036415cc1a32bbd9cc08e516196dbd704f8b5eb +Author: David Zeuthen +AuthorDate: Thu Sep 23 17:23:30 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 23 17:36:07 2010 -0400 + + GDBusConnection: Use correct GMainContext when invoking free functions + + Without this fix, the ./gdbus-connection test case occasionally + fails, see + + https://bugzilla.gnome.org/show_bug.cgi?id=629945#c5 + + like this + + /gdbus/connection/basic: OK + /gdbus/connection/life-cycle: ** + ERROR:gdbus-connection.c:223:test_connection_life_cycle: assertion + failed: + (!quit_mainloop_fired) + cleaning up bus with pid 21794 + Aborted (core dumped) + + because the callback didn't happen on the same thread as where we are + running the loop. + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 93 + +++++++++++++++++++++++++++++++++++++++----- + gio/tests/gdbus-connection.c | 57 +++++++++++++++++++++------ + 2 files changed, 129 insertions(+), 21 deletions(-) + +commit 919f64acab8a0bfb1262f3df1cdda4383054e0f1 +Author: Stefan Kost +AuthorDate: Thu Sep 23 18:41:57 2010 +0300 +Commit: Stefan Kost +CommitDate: Thu Sep 23 23:38:05 2010 +0300 + + build: fix out of srcdir build + + The gtk-doc makefile rules do cd srcdir && cp $(HTML_IMAGES) target/ + and this + breaks for "srcdir" != ".". + + docs/reference/gobject/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 643e5526c515f0ee6e681b806fda36eaaa3f263c +Author: David Zeuthen +AuthorDate: Thu Sep 23 16:27:52 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 23 16:28:59 2010 -0400 + + GDBus: fix name test cases + + Since we make message buses come and go, we need to ensure that the + singleton connection instance goes away before attempting to call + g_bus_get_sync() or similar. + + Signed-off-by: David Zeuthen + + gio/tests/gdbus-names.c | 1 + + 1 file changed, 1 insertion(+) + +commit 71b1d738e2c0fe900b6bb6672aa464ce74b489b3 +Author: David Zeuthen +AuthorDate: Thu Sep 23 16:09:25 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 23 16:14:42 2010 -0400 + + GDBus: bump timeout for some tests + + When under load, a one second timeout is just not enough. This can be + observed by e.g. restarting a CPU- and IO-intensive application like a + web browser with many tabs while running the test cases. Therefore, + bump the timeouts to 30 seconds. + + Signed-off-by: David Zeuthen + + gio/tests/gdbus-connection.c | 8 ++++---- + gio/tests/gdbus-tests.c | 8 ++++---- + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit 1f6a9f1e2d2ebc5f37e7c526344d7aa26cee148d +Author: David Zeuthen +AuthorDate: Thu Sep 23 15:47:46 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 23 15:49:04 2010 -0400 + + GDBus: Move "slow" connection test cases into separate test program + + Signed-off-by: David Zeuthen + + gio/tests/Makefile.am | 4 + + gio/tests/gdbus-connection-slow.c | 214 + ++++++++++++++++++++++++++++++++++++++ + gio/tests/gdbus-connection.c | 160 ---------------------------- + 3 files changed, 218 insertions(+), 160 deletions(-) + +commit f0b04acfd31b768151a88db3f8d3347f55b2a7b3 +Author: David Zeuthen +AuthorDate: Thu Sep 23 15:10:50 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 23 15:16:56 2010 -0400 + + GDBusConnection: Avoid callbacks on finalized connection + + Turns out that GDBusWorker will issue callbacks (in its own thread) + even after g_dbus_worker_stop() has been called. This would rarely + happen (and unreffing a connection is even rarer) so only saw this bug + occasionally when running the gdbus-connection test case in a loop. + + Fix up this issue by maintaining a set of GDBusConnection objects that + are currently "alive" and do nothing in the callbacks if the passed + user_data pointer is not in this set. + + Also attempted to fix up a race condition with + _g_object_wait_for_single_ref_do() and its use of GObject toggle + references - for now, just resort to busy waiting, thereby + sidestepping the toggle reference mess altogether. + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 65 + ++++++++++++++++++++++++++++++++++++++++---- + gio/gdbusprivate.c | 14 ++-------- + gio/tests/gdbus-connection.c | 8 ++++-- + gio/tests/gdbus-tests.c | 50 ++++++++++++++++++++++++++++++++-- + 4 files changed, 115 insertions(+), 22 deletions(-) + +commit c3c0e4d11d0682d832d199de31b35457f6078d5c +Author: Takayuki KUSANO +AuthorDate: Fri Sep 24 02:09:10 2010 +0900 +Commit: Takayuki KUSANO +CommitDate: Fri Sep 24 02:09:10 2010 +0900 + + Updated Japanese translation (symbolic link related) + + po/ja.po | 58 ++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 30 insertions(+), 28 deletions(-) + +commit e7df1a4157cc95e658a31de55e8374c4364a2238 +Author: Nicolas Dufresne +AuthorDate: Wed Sep 22 13:11:59 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Sep 23 12:02:51 2010 -0400 + + Fix memory leak in SOCKSv5 implementation + + gio/gsocks5proxy.c | 1 + + 1 file changed, 1 insertion(+) + +commit 99d57b5ce952b7f43ff52b41362035bfa193eb5f +Author: Benjamin Otte +AuthorDate: Thu Sep 23 13:57:22 2010 +0200 +Commit: Benjamin Otte +CommitDate: Thu Sep 23 13:57:22 2010 +0200 + + glib-2.0.m4: Use unsigned variables for version numbers + + When using signed, we get complaints from gcc about comparing + signed to + unsigned with -Wsign-compare. And combined with -Werror in users' + CFLAGS + it breaks configure runs. + + m4macros/glib-2.0.m4 | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 24a706404ded0578b029b2fb65e6418bda84d32f +Author: Bruno Brouard +AuthorDate: Thu Sep 23 08:47:54 2010 +0200 +Commit: Bruno Brouard +CommitDate: Thu Sep 23 08:47:54 2010 +0200 + + Updated French translation + + po/fr.po | 1706 + ++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 1044 insertions(+), 662 deletions(-) + +commit 61453216803d745b1d563710f8ec3aa918d2e819 +Author: Ryan Lortie +AuthorDate: Wed Sep 22 06:45:02 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 22 06:47:34 2010 -0400 + + GSocketControlMessage: clean up confusing code + + It looks like the deserialisation function in GSocketControlMessage + can + potentially leak a reference to the class structure of a + GSocketControlMessage subclass (although the particular code path is + probably never hit). + + Clean up the code a bit. + + Also, make sure that the GUnixCredentialsMessage type is registered + before attempting deserialisation. + + Closes bug #629687. + + gio/gsocketcontrolmessage.c | 15 +++++++-------- + 1 file changed, 7 insertions(+), 8 deletions(-) + +commit 02451227ec8bafae48af4c519c9e0441176d1978 +Author: Ryan Lortie +AuthorDate: Wed Sep 22 06:28:49 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 22 06:30:54 2010 -0400 + + fix argument order for g_date_time_difference() + + The names of the arguments in the header file was reversed. + + Closes bug #630000 + + glib/gdatetime.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 86d3342f854f11c1a35f02ec4f54c7aec345bae5 +Author: Claude Paroz +AuthorDate: Wed Sep 22 10:42:55 2010 +0200 +Commit: Claude Paroz +CommitDate: Wed Sep 22 10:42:55 2010 +0200 + + Add translator comments for command parameter translation + + gio/gsettings-tool.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 0a68f09494dea14d90ab802862eaa04d1ac54169 +Author: Mattias Põldaru +AuthorDate: Tue Sep 21 19:18:38 2010 +0300 +Commit: Priit Laes +CommitDate: Tue Sep 21 19:18:38 2010 +0300 + + [l10n] Updated Estonian translation + + po/et.po | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 33216f3d07d21bb5a8af62cfffeb18c8352cf114 +Author: Inaki Larranaga Murgoitio +AuthorDate: Tue Sep 21 14:42:23 2010 +0200 +Commit: dooteo +CommitDate: Tue Sep 21 14:42:23 2010 +0200 + + Updated Basque language + + po/eu.po | 1435 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 699 insertions(+), 736 deletions(-) + +commit 60def049d95e82c836cfc8b2f13a4ed8472f7865 +Author: Philip Withnall +AuthorDate: Mon Sep 20 17:56:30 2010 +0100 +Commit: Philip Withnall +CommitDate: Tue Sep 21 10:35:36 2010 +0100 + + Bug 630185 — Allow NULL strings in g_quark_try_string() + + Allow NULL strings to be passed to g_quark_try_string(), returning + a 0 quark + in that case, as per the existing documentation. Closes: bgo#630185 + + glib/gdataset.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit f1f7e771d7b3d9f8b7c656c6d9a9d8112f32732d +Author: Behdad Esfahbod +AuthorDate: Mon Sep 20 22:51:26 2010 -0400 +Commit: Behdad Esfahbod +CommitDate: Mon Sep 20 22:51:26 2010 -0400 + + Fix typo + + glib/giochannel.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 291545b6eee306249529652a2d1422d0e7a460c8 +Author: Colin Walters +AuthorDate: Mon Sep 20 13:20:04 2010 -0400 +Commit: Colin Walters +CommitDate: Mon Sep 20 13:25:24 2010 -0400 + + gdir: Clarify in documentation that ordering is not defined + + glib/gdir.c | 16 ++++++++++++---- + 1 file changed, 12 insertions(+), 4 deletions(-) + +commit 909fad7583ae9459fc3301e6de184b56a963464c +Author: Michael Kotsarinis +AuthorDate: Mon Sep 20 19:40:53 2010 +0300 +Commit: Simos Xenitellis +CommitDate: Mon Sep 20 19:41:02 2010 +0300 + + l10n: Updated Greek translation for glib + + po/el.po | 6698 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 3700 insertions(+), 2998 deletions(-) + +commit 05e185728a9b7decfd13f4bffaad9f240253e83f +Author: Yaron Shahrabani +AuthorDate: Mon Sep 20 15:15:46 2010 +0200 +Commit: Yaron Shahrabani +CommitDate: Mon Sep 20 15:15:46 2010 +0200 + + Updated Hebrew translation. + + po/he.po | 1134 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 579 insertions(+), 555 deletions(-) + +commit de432280a0e93aa1ebde4512fc1dd248af88bb32 +Author: Stefan Kost +AuthorDate: Sun Sep 19 22:06:10 2010 +0300 +Commit: Stefan Kost +CommitDate: Sun Sep 19 22:06:10 2010 +0300 + + docs: shorten var name in example + + We use 'pspec' instead of 'maman_param_spec' elsewhere too. + + docs/reference/gobject/tut_howto.xml | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit aa8c8df44fc1e2b852bb6a0cfb516f976f841de5 +Author: Stefan Kost +AuthorDate: Sun Sep 19 22:03:40 2010 +0300 +Commit: Stefan Kost +CommitDate: Sun Sep 19 22:03:40 2010 +0300 + + docs: fix iface type naming + + docs/reference/gobject/tut_gtype.xml | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 58e5b01fbc208a8cd374b60951c70e3d5c4355de +Author: Stefan Kost +AuthorDate: Sun Sep 19 21:50:31 2010 +0300 +Commit: Stefan Kost +CommitDate: Sun Sep 19 21:50:31 2010 +0300 + + docs: fix docbook validity + + 'type' must be inside of 'link'. + + docs/reference/gobject/tut_gobject.xml | 19 ++++++------ + docs/reference/gobject/tut_gsignal.xml | 12 ++++---- + docs/reference/gobject/tut_gtype.xml | 56 + +++++++++++++++++----------------- + docs/reference/gobject/tut_howto.xml | 10 +++--- + 4 files changed, 49 insertions(+), 48 deletions(-) + +commit 409f7db894bcfc6574d86aec34af6851dacc1666 +Author: Stefan Kost +AuthorDate: Sun Sep 19 21:37:19 2010 +0300 +Commit: Stefan Kost +CommitDate: Sun Sep 19 21:37:19 2010 +0300 + + docs: cleanup constructor example + + Remove unused var and chain-up the sane way we do elsewhere. + + docs/reference/gobject/tut_gobject.xml | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +commit a6ad0fbec23d78611bafd217ea56fcd58aea1405 +Author: Stefan Kost +AuthorDate: Sun Sep 19 21:33:52 2010 +0300 +Commit: Stefan Kost +CommitDate: Sun Sep 19 21:33:52 2010 +0300 + + docs: use passive voice. + + docs/reference/gobject/tut_howto.xml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 062e7f7848eb0577e4745b3e8c6a4e8312e360c3 +Author: Takayuki KUSANO +AuthorDate: Mon Sep 20 02:02:32 2010 +0900 +Commit: Takayuki KUSANO +CommitDate: Mon Sep 20 02:02:47 2010 +0900 + + Updated Japanese translation + + po/ja.po | 802 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 413 insertions(+), 389 deletions(-) + +commit 5bb2da9b999b414ea65a7d89168101ddf87856f1 +Author: Ask H. Larsen +AuthorDate: Sun Sep 19 18:07:57 2010 +0200 +Commit: Kenneth Nielsen +CommitDate: Sun Sep 19 18:07:57 2010 +0200 + + Updated Danish translation + + po/da.po | 1305 + +++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 772 insertions(+), 533 deletions(-) + +commit 29393abf05b7322b1b1d267c5a929136ed8a7c70 +Author: Wouter Bolsterlee +AuthorDate: Sun Sep 19 17:08:25 2010 +0200 +Commit: Wouter Bolsterlee +CommitDate: Sun Sep 19 17:08:54 2010 +0200 + + Updated Dutch translation by Wouter Bolsterlee + + po/nl.po | 2089 + +++++++++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 1372 insertions(+), 717 deletions(-) + +commit abfa91e655254180ce134012cbbcffa8e150a00b +Author: Mattias Põldaru +AuthorDate: Sun Sep 19 11:52:30 2010 +0300 +Commit: Priit Laes +CommitDate: Sun Sep 19 11:52:30 2010 +0300 + + [l10n] Updated Estonian translation + + po/et.po | 1189 + ++++++++++++++++++++++++++++---------------------------------- + 1 file changed, 531 insertions(+), 658 deletions(-) + +commit cec629972b2a599cb28eb9d61cc000c4dc97f534 +Author: Ryan Lortie +AuthorDate: Sat Sep 18 16:31:00 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Sep 18 16:31:00 2010 -0400 + + GDateTime: G_GNUC_WARN_UNUSED_RESULT for modifiers + + Emmanuele suggested adding G_GNUC_WARN_UNUSED_RESULT to all of the + g_date_time_add_* functions to help deal with the situation where + people + may mistakenly believe that these functions are inplace modifiers. + + glib/gdatetime.h | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit ac05f990db211a27a950d61ef4bf47335ced7cc4 +Author: Ryan Lortie +AuthorDate: Sat Sep 18 12:52:58 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Sep 18 12:52:58 2010 -0400 + + Fix header cleaup fallout when using system pcre + + Using the internal pcre has the side effect of exposing gregex.c to + glib.h. When we use the system one, we lose that, so we need to + explicitly include the things we use (glist, gatomic, etc..) + + glib/gregex.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 1bc08279b907529627677c9191664862c063de49 +Author: Duarte Loreto +AuthorDate: Sat Sep 18 12:30:00 2010 +0100 +Commit: Duarte Loreto +CommitDate: Sat Sep 18 12:30:00 2010 +0100 + + Updated Portuguese translation + + po/pt.po | 770 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 397 insertions(+), 373 deletions(-) + +commit c1b7697a8ba4cf016f1efef86369376917acccdb +Author: Ryan Lortie +AuthorDate: Fri Sep 17 20:48:25 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 17 20:48:25 2010 -0400 + + bump version to 2.27.1 + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dda9707377f43c827860dbce8bf09c7b98e2ad14 +Author: Ryan Lortie +AuthorDate: Fri Sep 17 17:57:19 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 17 18:32:35 2010 -0400 + + release 2.27.0 + + NEWS | 104 + ++++++++++++++++++++++++++++++ + docs/reference/glib/tmpl/glib-unused.sgml | 40 ------------ + docs/reference/glib/tmpl/messages.sgml | 27 ++++++-- + docs/reference/glib/tmpl/version.sgml | 41 ++++++++++++ + 4 files changed, 166 insertions(+), 46 deletions(-) + +commit 6393ffa3a6ac50b4b2cc1ed92760544caf9bb90a +Author: Ryan Lortie +AuthorDate: Sat Sep 18 01:18:13 2010 +0300 +Commit: Ryan Lortie +CommitDate: Sat Sep 18 01:20:22 2010 +0300 + + GDateTime: fix a test that fails from time to time + + The test fails if it's a different date in the time zone of the + machine + running the test than it currently is in UTC. + + glib/tests/gdatetime.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7be2ba4d945682c30a91ff35dac255e0f4a0b038 +Author: Ryan Lortie +AuthorDate: Fri Sep 17 13:27:38 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 17 13:27:38 2010 -0400 + + Bump to version 2.27.0 after branching glib-2-26 + + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit b4ee303ed6bc35b5dbb73bfa4b3a27eaba23a83c +Author: Ryan Lortie +AuthorDate: Fri Sep 17 13:26:50 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 17 13:26:50 2010 -0400 + + .gitignore some test cases + + gio/tests/.gitignore | 2 ++ + 1 file changed, 2 insertions(+) + +commit 5109778e939265087d1b1257daf6ba5f454ff346 +Author: Ryan Lortie +AuthorDate: Fri Sep 17 13:20:17 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 17 13:20:17 2010 -0400 + + .gitignore some sgml + + docs/reference/glib/tmpl/.gitignore | 2 ++ + 1 file changed, 2 insertions(+) + +commit cf73ba47f14a5793b9575ce542edf558fe5abee8 +Author: Ryan Lortie +AuthorDate: Fri Sep 17 13:14:59 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 17 13:14:59 2010 -0400 + + Deal with gtk-doc's insane sensitivty to spaces + + ...by inserting a few of them. + + glib/goption.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 6b0e31ce4891883b3923c40c68347dcf5fe54165 +Author: Ryan Lortie +AuthorDate: Thu Sep 16 04:44:59 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Sep 17 11:40:10 2010 -0400 + + Clean-up/tweaking of GDateTime and GTimeZone + + docs/reference/glib/glib-docs.sgml | 1 + + docs/reference/glib/glib-sections.txt | 99 +- + glib/Makefile.am | 2 + + glib/gdatetime.c | 2681 + +++++++++++++++------------------ + glib/gdatetime.h | 247 ++- + glib/glib.h | 1 + + glib/glib.symbols | 49 +- + glib/gtimezone.c | 790 ++++++++++ + glib/gtimezone.h | 81 + + glib/tests/gdatetime.c | 314 ++-- + 10 files changed, 2373 insertions(+), 1892 deletions(-) + +commit 909289c76330f66b87a51fbfc645fb4d474f1301 +Author: Emmanuele Bassi +AuthorDate: Wed Sep 15 14:47:15 2010 +0100 +Commit: Ryan Lortie +CommitDate: Fri Sep 17 11:40:10 2010 -0400 + + datetime: Fix hashing + + Convert to the epoch, just like we do when checking for equality, so + that timezones are correctly handled. + + https://bugzilla.gnome.org/show_bug.cgi?id=50076 + + glib/gdatetime.c | 83 + ++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 45 insertions(+), 38 deletions(-) + +commit 3e9fb52214da793ef1320775f1ab8226bdca6ae2 +Author: Emmanuele Bassi +AuthorDate: Wed Sep 15 14:39:26 2010 +0100 +Commit: Ryan Lortie +CommitDate: Fri Sep 17 11:40:10 2010 -0400 + + datetime: Rename g_date_time_printf() to g_date_time_format() + + The function does not use any printf() modifiers, so using printf() + is a + misnomer. + + Prior art: strftime, g_ascii_formatd + + https://bugzilla.gnome.org/show_bug.cgi?id=50076 + + glib/gdatetime.c | 8 ++++---- + glib/gdatetime.h | 2 +- + glib/tests/gdatetime.c | 6 +++--- + 3 files changed, 8 insertions(+), 8 deletions(-) + +commit 4bac6613cfca4b0676a51e1df0848fa2e4d35120 +Author: Emmanuele Bassi +AuthorDate: Wed Sep 15 13:55:36 2010 +0100 +Commit: Ryan Lortie +CommitDate: Fri Sep 17 11:40:10 2010 -0400 + + datetime: Update modifiers for DST changes + + If a DateTime gets modified to cross the DST state from its previous + state then we want to update the DateTime to compensate for the new + offset. + + In other words, if we have a DateTime defined as: + + DateTime({ y: 2009, m: 8, d: 15, hh: 3, mm: 0, tz: 'Europe/London' + }); + + and we add six months to it, the hour must be changed to 60 minutes + behind, as the DST comes into effect. + + https://bugzilla.gnome.org/show_bug.cgi?id=50076 + + glib/gdatetime.c | 270 + ++++++++++++++++++++++++++++++------------------- + glib/tests/gdatetime.c | 67 +++++++++--- + 2 files changed, 220 insertions(+), 117 deletions(-) + +commit 0746f7403638a6f17c61ec04beb4f692914ce9a0 +Author: Emmanuele Bassi +AuthorDate: Wed Sep 15 10:05:41 2010 +0100 +Commit: Ryan Lortie +CommitDate: Fri Sep 17 11:40:10 2010 -0400 + + datetime: Allow setting fractionary seconds in new_full() + + Otherwise we'll have to do: + + dt = g_date_time_new_full (Y, M, D, h, m, s, tz); + tmp = g_date_time_add_usec (dt, usec); + g_date_time_unref (dt); + dt = tmp; + + With its additional allocations. + + https://bugzilla.gnome.org/show_bug.cgi?id=50076 + + glib/gdatetime.c | 6 +++--- + glib/gdatetime.h | 2 +- + glib/tests/gdatetime.c | 6 +++++- + 3 files changed, 9 insertions(+), 5 deletions(-) + +commit 67f1e52ce2a1372e4f8ffc5fdf292b33120264ab +Author: Emmanuele Bassi +AuthorDate: Tue Sep 14 08:00:40 2010 +0100 +Commit: Ryan Lortie +CommitDate: Fri Sep 17 11:40:10 2010 -0400 + + datetime: Rework time zone support in constructors + + Timezone handling is complicated. Really complicated. + + In order to simplify it a little bit, we need to expose the GTimeZone + structure. + + First of all, we allow creating time zone information directly + from the + offset and the DST state, and then pass it to the + g_date_time_new_full() + constructor. We also need to clean up the mess that is + UTC-vs.-localtime + for the other constructors. + + We also allow creating a GTimeZone from the Olson zoneinfo database + names; a time zone created like this will be "floating": it will just + reference the zoneinfo file - which are mmap()'ed, kept in a cache and + refcounted. Once the GTimeZone has been associated with a GDateTime, + it + will be "anchored" to it: the offset will be resolved, as well as the + DST state. + + https://bugzilla.gnome.org/show_bug.cgi?id=50076 + + docs/reference/glib/glib-sections.txt | 1 - + glib/gdatetime.c | 812 + +++++++++++++++++++++++----------- + glib/gdatetime.h | 39 +- + glib/glib.symbols | 11 +- + glib/tests/gdatetime.c | 51 ++- + 5 files changed, 630 insertions(+), 284 deletions(-) + +commit bff4ac15d09a3f80551fda41f8ff2e2c1ae30d91 +Author: Dan Winship +AuthorDate: Fri Sep 17 10:21:57 2010 -0400 +Commit: Dan Winship +CommitDate: Fri Sep 17 10:21:57 2010 -0400 + + g_output_stream_write: fix misleadingly ungrammatical documentation + + pointed out in https://bugzilla.gnome.org/show_bug.cgi?id=626866 + + gio/goutputstream.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit 8a7365d892c23573ef659d7a93ce1518ddf58763 +Author: Žygimantas Beručka +AuthorDate: Fri Sep 17 03:48:23 2010 +0300 +Commit: Žygimantas Beručka +CommitDate: Fri Sep 17 03:48:23 2010 +0300 + + Updated Lithuanian translation + + po/lt.po | 128 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 63 insertions(+), 65 deletions(-) + +commit d6af283f4e76163abd6b4e740cb95861080f1014 +Author: Gintautas Miliauskas +AuthorDate: Thu Sep 16 22:13:54 2010 +0300 +Commit: Gintautas Miliauskas +CommitDate: Thu Sep 16 22:13:54 2010 +0300 + + Updated Lithuanian translation by Aurimas Cernius. + + po/lt.po | 2338 + ++++++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 1530 insertions(+), 808 deletions(-) + +commit 1c658c9c692643463c3f215ef73f8b72b046f2b7 +Author: Petr Kovar +AuthorDate: Thu Sep 16 01:56:26 2010 +0200 +Commit: Petr Kovar +CommitDate: Thu Sep 16 01:56:26 2010 +0200 + + Update Czech translation + + po/cs.po | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +commit 0469782af5bda7fe9e9be9dfc2eda68a98c7ca49 +Author: Petr Kovar +AuthorDate: Wed Sep 15 21:43:18 2010 +0200 +Commit: Petr Kovar +CommitDate: Wed Sep 15 21:43:18 2010 +0200 + + Update Czech translation + + po/cs.po | 2006 + +++++++++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 1327 insertions(+), 679 deletions(-) + +commit 11f06115a4cc6972aedb810848e4a0f06165eb83 +Author: Ryan Lortie +AuthorDate: Wed Sep 15 11:20:51 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Sep 15 11:21:44 2010 -0400 + + Bug 629709 - Empty variants + + Fix some GVariant bugs uncovered by calling g_variant_new_from_data + with + invalid data (which it should be immune to). + + glib/gvariant-core.c | 26 ++++++++++++++++++++++++-- + glib/gvariant-serialiser.c | 3 +++ + 2 files changed, 27 insertions(+), 2 deletions(-) + +commit 1c5b96e92b9a5923be4686802025b455fb353429 +Author: Jorge González +AuthorDate: Wed Sep 15 09:10:32 2010 +0200 +Commit: Jorge González +CommitDate: Wed Sep 15 09:12:24 2010 +0200 + + Updated Spanish translation + + po/es.po | 1002 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 510 insertions(+), 492 deletions(-) + +commit 780b76bd3ae9c13ae065fc4bdf84dc10ca69f23d +Author: Andika Triwidada +AuthorDate: Wed Sep 15 07:44:48 2010 +0700 +Commit: Andika Triwidada +CommitDate: Wed Sep 15 07:44:48 2010 +0700 + + Updated Indonesian translation + + po/id.po | 968 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 496 insertions(+), 472 deletions(-) + +commit 1220501ec86b87e6cfe8ab3eac4a1fc6ea7a8acc +Author: Christian Persch +AuthorDate: Tue Sep 14 19:38:14 2010 +0200 +Commit: Christian Persch +CommitDate: Tue Sep 14 22:22:35 2010 +0200 + + GDBusConnection leaks its GCredentials + + ==7269== 144 bytes in 6 blocks are definitely lost in loss record + 1,282 of 1,325 + ==7269== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==7269== by 0x4056B74: g_malloc (gmem.c:164) + ==7269== by 0x406EDB6: g_slice_alloc (gslice.c:842) + ==7269== by 0x406EDFB: g_slice_alloc0 (gslice.c:854) + ==7269== by 0x413C627: g_type_create_instance (gtype.c:1867) + ==7269== by 0x412276A: g_object_constructor (gobject.c:1480) + ==7269== by 0x4121E5D: g_object_newv (gobject.c:1264) + ==7269== by 0x4121BD3: g_object_new (gobject.c:1176) + ==7269== by 0x417CFB9: g_credentials_new (gcredentials.c:156) + ==7269== by 0x41D9DBC: g_unix_credentials_message_deserialize + (gunixcredentialsmessage.c:149) + ==7269== by 0x41C422C: g_socket_control_message_deserialize + (gsocketcontrolmessage.c:198) + ==7269== by 0x41BFCE3: g_socket_receive_message (gsocket.c:3289) + ==7269== by 0x41D99CE: g_unix_connection_receive_credentials + (gunixconnection.c:476) + ==7269== by 0x41FA829: _g_dbus_auth_run_server (gdbusauth.c:987) + ==7269== by 0x4205DDB: initable_init (gdbusconnection.c:2196) + + Bug #629689. + + gio/gdbusconnection.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 235820d0ef817d549844fa898349e31f28fb833d +Author: Ryan Lortie +AuthorDate: Tue Sep 14 14:55:38 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 14 14:56:38 2010 -0400 + + GVariant: Check for size == 0 in get_bytestring + + And add a test from David that shows the problem. + + Closes #629698 + + glib/gvariant.c | 2 +- + glib/tests/gvariant.c | 8 ++++++++ + 2 files changed, 9 insertions(+), 1 deletion(-) + +commit 2211ab1240d9bbab2a17197f6d97fafc9373ff46 +Author: Piotr Drąg +AuthorDate: Tue Sep 14 19:10:35 2010 +0200 +Commit: Tomasz Dominikowski +CommitDate: Tue Sep 14 19:10:35 2010 +0200 + + Updated Polish translation + + po/pl.po | 2082 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 1101 insertions(+), 981 deletions(-) + +commit f497f3b7aee06cc2d1f04b9f9adf3555353f2579 +Author: Ryan Lortie +AuthorDate: Tue Sep 14 11:25:57 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Sep 14 11:25:57 2010 -0400 + + GSettings: reverse accidental addition to .h file + + A couple of extra function prototypes snuck into commit + 77e3badcf3f15c7ac235904160d775febfcebcb5. Take those out. + + gio/gsettings.h | 3 --- + 1 file changed, 3 deletions(-) + +commit 7d143d420b0e3d02e1103a0c9decccd18b6024c9 +Author: Gabor Kelemen +AuthorDate: Tue Sep 14 14:10:17 2010 +0200 +Commit: Gabor Kelemen +CommitDate: Tue Sep 14 14:10:17 2010 +0200 + + Updated Hungarian translation + + po/hu.po | 836 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 430 insertions(+), 406 deletions(-) + +commit 152f0dd3dbc9237f24830eeea76a84332d4f14a4 +Author: Christian.Kirbach +AuthorDate: Tue Sep 14 11:18:20 2010 +0200 +Commit: Christian.Kirbach +CommitDate: Tue Sep 14 11:18:20 2010 +0200 + + [l10n] Updated German translation + + po/de.po | 627 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 325 insertions(+), 302 deletions(-) + +commit 3d1c463b48a6d54b671d7c8f39a7b4efba636d2b +Author: Aron Xu +AuthorDate: Tue Sep 14 16:35:31 2010 +0800 +Commit: Aron Xu +CommitDate: Tue Sep 14 16:36:12 2010 +0800 + + Update Simplified Chinese translation. + + po/zh_CN.po | 1307 + +++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 827 insertions(+), 480 deletions(-) + +commit 5ec302deceeb0c5f5f34be41b775fd295784c012 +Author: Timo Jyrinki +AuthorDate: Tue Sep 14 09:37:45 2010 +0300 +Commit: Timo Jyrinki +CommitDate: Tue Sep 14 09:37:45 2010 +0300 + + (slightly) updated Finnish translation. + + po/fi.po | 1999 + +++++++++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 1323 insertions(+), 676 deletions(-) + +commit 8fbfcd90adce11c95d9a89c2f79f61a2d72f01ab +Author: Philip Withnall +AuthorDate: Mon Sep 13 23:22:02 2010 +0100 +Commit: Philip Withnall +CommitDate: Mon Sep 13 23:22:02 2010 +0100 + + Update British English translation + + po/en_GB.po | 966 + +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 495 insertions(+), 471 deletions(-) + +commit f5edeea0e5791de8d0f0936fa821ecd22fcd30b5 +Author: Fran Diéguez +AuthorDate: Mon Sep 13 23:46:03 2010 +0200 +Commit: Fran Diéguez +CommitDate: Mon Sep 13 23:46:03 2010 +0200 + + Updated Galician translations + + po/gl.po | 984 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 504 insertions(+), 480 deletions(-) + +commit f3770593f8691ce4cc1d597482d9b0f457066848 +Author: Matej Urbančič +AuthorDate: Mon Sep 13 21:54:45 2010 +0200 +Commit: Matej Urbančič +CommitDate: Mon Sep 13 21:54:45 2010 +0200 + + Updated Slovenian translation + + po/sl.po | 2534 + +++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 1579 insertions(+), 955 deletions(-) + +commit ba17efc3961b094cc853b66d66e09a3d8b0444a1 +Author: Will Thompson +AuthorDate: Thu Sep 9 17:24:00 2010 +0100 +Commit: Will Thompson +CommitDate: Mon Sep 13 19:19:46 2010 +0100 + + g_strdup_value_contents(): dump GStrv more usefully + + Previously, dumping a GValue holding a GStrv just yielded "((GStrv *) + 0xDEADBEEF)". I think it'd be more useful to dump a Python list-style + representation of the GStrv's contents, if it's not NULL. + + Fixes: + + gobject/gvaluetypes.c | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +commit cb2ddac7a29f534350f07afdbe5631b2f9df176f +Author: A S Alam +AuthorDate: Mon Sep 13 23:09:33 2010 +0530 +Commit: A S Alam +CommitDate: Mon Sep 13 23:09:33 2010 +0530 + + update for Punjabi + + po/pa.po | 977 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 497 insertions(+), 480 deletions(-) + +commit 2e78d07f86d70de274f126a3ff00bd4af90a5c90 +Author: Ryan Lortie +AuthorDate: Tue Mar 23 01:12:01 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Sep 13 13:14:25 2010 -0400 + + Add g_data_input_stream_read_upto{,async,finish} + + These functions are meant to replace the read_until() flavour, + with the + following improvements: + + - consistency between the synchronous and asynchronous versions + as to + if the separator character is read (it never is). + + - support for using a nul byte as a separator character by way of + addition of a length parameter which allows stop_chars to + be treated + as a byte array rather than a nul-terminated string. + + The read_until() functions are not yet formally deprecated, but a note + has been added to the documentation warning not to use them as + they will + be in the future. + + This is bug #584284. + + docs/reference/gio/gio-sections.txt | 3 + + gio/gdatainputstream.c | 257 + +++++++++++++++++++++++++++++------- + gio/gdatainputstream.h | 66 +++++---- + gio/gio.symbols | 3 + + gio/tests/data-input-stream.c | 61 ++++++++- + 5 files changed, 312 insertions(+), 78 deletions(-) + +commit 0ecfc6e1f9fa3439f733fc75cc462218a0a1974e +Author: Matthias Clasen +AuthorDate: Mon Sep 13 12:02:13 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 13 12:27:04 2010 -0400 + + Better msgctxt for month and weekday names + + The current msgctxt string 'GDateTime" lead to the unability to + differentiate between the full and abbreviated name for May. + Therefore, the msgctxt strings have been changed to + 'full month name' + 'abbreviated month name' + 'full weekday name' + 'abbreviated weekday name' + This is a string change, but all translations have been updated + using an sed script. + + Bug 629429 + + glib/gdatetime.c | 86 + ++++++++++++++++++++++++++++++-------------------------- + po/ar.po | 74 ++++++++++++++++++++++++------------------------ + po/de.po | 74 ++++++++++++++++++++++++------------------------ + po/en_GB.po | 74 ++++++++++++++++++++++++------------------------ + po/es.po | 74 ++++++++++++++++++++++++------------------------ + po/eu.po | 74 ++++++++++++++++++++++++------------------------ + po/gl.po | 74 ++++++++++++++++++++++++------------------------ + po/he.po | 74 ++++++++++++++++++++++++------------------------ + po/hu.po | 74 ++++++++++++++++++++++++------------------------ + po/id.po | 74 ++++++++++++++++++++++++------------------------ + po/ja.po | 74 ++++++++++++++++++++++++------------------------ + po/nb.po | 74 ++++++++++++++++++++++++------------------------ + po/pa.po | 74 ++++++++++++++++++++++++------------------------ + po/pl.po | 74 ++++++++++++++++++++++++------------------------ + po/pt.po | 74 ++++++++++++++++++++++++------------------------ + po/sr.po | 74 ++++++++++++++++++++++++------------------------ + po/sr@latin.po | 74 ++++++++++++++++++++++++------------------------ + po/sv.po | 74 ++++++++++++++++++++++++------------------------ + po/zh_HK.po | 74 ++++++++++++++++++++++++------------------------ + po/zh_TW.po | 74 ++++++++++++++++++++++++------------------------ + 20 files changed, 749 insertions(+), 743 deletions(-) + +commit bd569dc3c97fb23447951388cc57ff23844f96e3 +Author: Matthias Clasen +AuthorDate: Mon Sep 13 11:58:56 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 13 12:27:04 2010 -0400 + + Adapt POTFILES.in to source file renaming + + po/POTFILES.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 445f708b8ff93b96ff1e440fe9c26bf8b19ff706 +Author: Ryan Lortie +AuthorDate: Mon Sep 13 12:07:51 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Sep 13 12:14:08 2010 -0400 + + Const 'parser' arg to g_markup_parse_context_push + + This is a vtable structure and very likely the user has allocated + it in + static storage and wants it to be const. Since we never modify it, no + harm is done to us to have it const. + + Closes bug #629328. + + glib/gmarkup.c | 2 +- + glib/gmarkup.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 124023b06d39c5b94605368abd8f9576ece45ca4 +Author: Tomeu Vizoso +AuthorDate: Mon Sep 13 17:53:54 2010 +0200 +Commit: Tomeu Vizoso +CommitDate: Mon Sep 13 17:55:18 2010 +0200 + + Make g_variant_builder_end's return to be (allow none) because callers + need to add a ref to it in addition to sinking it. + + glib/gvariant.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8466ba8dc120c7e95df8a147ade9d5b449727c0e +Author: Kristian Rietveld +AuthorDate: Mon Sep 13 16:52:51 2010 +0200 +Commit: Kristian Rietveld +CommitDate: Mon Sep 13 16:52:51 2010 +0200 + + Include giochannel.c for G_IO_IN, etc. + + Fixes build on OS X. + + glib/gpoll.c | 1 + + 1 file changed, 1 insertion(+) + +commit 9cd43d7a4c5d3a50187c2eaba7ab903cf6456d7d +Author: Emmanuele Bassi +AuthorDate: Wed Aug 18 15:32:27 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Sep 13 12:34:53 2010 +0100 + + gobject: Add install_properties() + + Since we added g_object_notify_by_pspec(), an efficient way to install + and notify properties relies on storing the GParamSpec pointers inside + a static arrays, like we do for signal identifiers. + + Instead of multiple calls to g_object_class_install_property(), we + should have a single function to take the static array of GParamSpecs + and iterate it. + + https://bugzilla.gnome.org/show_bug.cgi?id=626919 + + Signed-off-by: Emmanuele Bassi + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gobject.c | 121 ++++++++++++++- + gobject/gobject.h | 3 + + gobject/gobject.symbols | 1 + + gobject/tests/.gitignore | 1 + + gobject/tests/Makefile.am | 4 +- + gobject/tests/properties.c | 222 + ++++++++++++++++++++++++++++ + 7 files changed, 350 insertions(+), 3 deletions(-) + +commit 58a40904af47fbc838bea29cc6ab068b26eb74c5 +Author: Daniel Nylander +AuthorDate: Sun Sep 12 20:25:57 2010 +0200 +Commit: Daniel Nylander +CommitDate: Sun Sep 12 20:25:57 2010 +0200 + + Updated Swedish translation + + po/sv.po | 700 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 361 insertions(+), 339 deletions(-) + +commit 681a72ea9923a3b37d8258b2b25e8f734d92bf21 +Author: Ryan Lortie +AuthorDate: Sun Sep 12 13:35:30 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Sep 12 13:37:04 2010 -0400 + + GSettings: no writability->value change assumption + + GSettings internally assumed that a change in key writability + implied a + change in value. That may be true for some backends. Let those + backends deal with the situation for themselves. + + gio/gsettings.c | 10 ++-------- + 1 file changed, 2 insertions(+), 8 deletions(-) + +commit 8a8cdd1d328df0f2429e2c49050dae1aec4abf36 +Author: Tor Lillqvist +AuthorDate: Sun Sep 12 13:58:13 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Sun Sep 12 14:05:49 2010 +0300 + + Add some more individual own header includes where required + + gio/gdbusprivate.c | 1 + + glib/gunicollate.c | 3 +++ + glib/guniprop.c | 3 +++ + 3 files changed, 7 insertions(+) + +commit fc3abfffcf63a12f766f86bca29bd71544aa0416 +Author: Mario Blättermann +AuthorDate: Sun Sep 12 11:02:47 2010 +0200 +Commit: Mario Blättermann +CommitDate: Sun Sep 12 11:02:47 2010 +0200 + + [i18n] Updated German translation + + po/de.po | 2092 + +++++++++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 1382 insertions(+), 710 deletions(-) + +commit 825576322ab491d79fc272c5d536b241b8dad352 +Author: Takayuki KUSANO +AuthorDate: Sun Sep 12 03:02:24 2010 +0900 +Commit: Takayuki KUSANO +CommitDate: Sun Sep 12 03:02:24 2010 +0900 + + Updatede Japanese translation. + + po/ja.po | 2420 + ++++++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 1568 insertions(+), 852 deletions(-) + +commit 38a3b1730de7ec40627c2f6f75320e9e432ce12c +Author: Tomeu Vizoso +AuthorDate: Sat Sep 11 17:01:10 2010 +0200 +Commit: Tomeu Vizoso +CommitDate: Sat Sep 11 17:01:10 2010 +0200 + + Add annotation for g_variant_get_string + + glib/gvariant.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e7f04bf29af35e606920abb2e04a277ccb6de2bd +Author: Andika Triwidada +AuthorDate: Sat Sep 11 16:29:06 2010 +0700 +Commit: Andika Triwidada +CommitDate: Sat Sep 11 16:29:06 2010 +0700 + + Updated Indonesian translation + + po/id.po | 46 +++++++++++++++++++++++----------------------- + 1 file changed, 23 insertions(+), 23 deletions(-) + +commit dc8dc56ddd5da7d9e4a10891ba917e424cb6b7d8 +Author: Tor Lillqvist +AuthorDate: Sat Sep 11 12:08:32 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Sat Sep 11 12:08:32 2010 +0300 + + dos2unix glib/win_iconv.c + + glib/win_iconv.c | 3930 + +++++++++++++++++++++++++++--------------------------- + 1 file changed, 1965 insertions(+), 1965 deletions(-) + +commit 1254104cea92c02f3d0e9cf10b99382dd7e71439 +Author: Benjamin Otte +AuthorDate: Sat Sep 11 00:12:13 2010 +0200 +Commit: Benjamin Otte +CommitDate: Sat Sep 11 00:13:36 2010 +0200 + + docs: Clarify string encoding for GFile constructors + + The encoding was deduced from looking at the source code, feel free to + fix if it's wrong (the docs _and_ the source code). + + gio/gfile.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 0b74058fa3144f85b5fefd4c81129b971010452a +Author: David Zeuthen +AuthorDate: Fri Sep 10 16:21:37 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri Sep 10 16:23:14 2010 -0400 + + Add work-around for Bug 627724 + + The root problem is with GObject - for now, just work around it in + GDBus. Also include a test-case. See + + https://bugzilla.gnome.org/show_bug.cgi?id=627724 + + for more information. + + Signed-off-by: David Zeuthen + + gio/gdbusprivate.c | 44 +++++++++++++++++++++- + gio/tests/Makefile.am | 4 ++ + gio/tests/gdbus-bz627724.c | 94 + ++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 140 insertions(+), 2 deletions(-) + +commit 12029eeb6a54f2445bde0af314116844122b535b +Author: David Zeuthen +AuthorDate: Fri Sep 10 13:27:48 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri Sep 10 13:27:48 2010 -0400 + + Remove g_dbus_message_filter_result_get_type() from gio.symbols + + Pointed out by danw on IRC. + + Signed-off-by: David Zeuthen + + gio/gio.symbols | 1 - + 1 file changed, 1 deletion(-) + +commit bc29aa9b0956dec53c0b957ce879b41329307058 +Author: Dan Winship +AuthorDate: Fri Sep 10 09:12:17 2010 -0400 +Commit: Dan Winship +CommitDate: Fri Sep 10 13:07:00 2010 -0400 + + g_socket_client_connect_async: fix when g_socket_connect succeeds + immediately + + https://bugzilla.gnome.org/show_bug.cgi?id=629251 + + gio/gsocketclient.c | 31 ++++++++++++++++++------------- + 1 file changed, 18 insertions(+), 13 deletions(-) + +commit 59383c8bea00b8f4bf50cf82ae9f3e7ce1df1a03 +Author: Dan Winship +AuthorDate: Fri Sep 10 08:51:21 2010 -0400 +Commit: Dan Winship +CommitDate: Fri Sep 10 13:07:00 2010 -0400 + + Fix IPv6 parsing in _g_uri_parse_authority, add _g_uri_from_authority + + Fixes connections to IPv6 address literals. + + https://bugzilla.gnome.org/show_bug.cgi?id=629259 + + gio/gnetworkaddress.c | 49 + +++++++++++++++++++++++++++++++++++++++++++++--- + gio/gnetworkingprivate.h | 4 ++++ + gio/gnetworkservice.c | 9 +++++---- + gio/gsocketaddress.c | 2 +- + 4 files changed, 56 insertions(+), 8 deletions(-) + +commit f8cb2a60b9fb79f4d3719f842d71245d844ee9c0 +Author: Ryan Lortie +AuthorDate: Thu Sep 9 16:28:18 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Sep 9 16:43:03 2010 -0400 + + Add 3 new restrictions to the schema compiler + + - can not extend schemas that already have paths + - can not form list of schemas that already have paths + - the path of a list schema, if given, must end with ':/' + + gio/glib-compile-schemas.c | 25 ++++++++++++++++++++++++- + 1 file changed, 24 insertions(+), 1 deletion(-) + +commit 7777dd2c3951e14fadb56a01b5c31b6404253cd3 +Author: Ryan Lortie +AuthorDate: Thu Sep 9 16:12:45 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Sep 9 16:42:55 2010 -0400 + + Rename gschema-compile.c -> glib-compile-schemas.c + + gio/Makefile.am | 2 +- + gio/glib-compile-schemas.c | 1880 + ++++++++++++++++++++++++++++++++++++++++++++ + gio/gschema-compile.c | 1880 + -------------------------------------------- + 3 files changed, 1881 insertions(+), 1881 deletions(-) + +commit 77e3badcf3f15c7ac235904160d775febfcebcb5 +Author: Ryan Lortie +AuthorDate: Mon Sep 6 12:47:37 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Sep 9 16:42:55 2010 -0400 + + split GSettings.list_items => list_{children,keys} + + This is an incompatible public API/ABI change. + + gio/gio.symbols | 3 +- + gio/gsettings-tool.c | 18 +++++------ + gio/gsettings.c | 88 + +++++++++++++++++++++++++++++++++++++++++---------- + gio/gsettings.h | 6 +++- + gio/tests/gsettings.c | 18 +++++++---- + 5 files changed, 97 insertions(+), 36 deletions(-) + +commit 7b4cbbb7b21c9d53922a79aa499892b3de5642dc +Author: Ryan Lortie +AuthorDate: Thu Sep 9 15:45:53 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Sep 9 16:42:55 2010 -0400 + + Create GSettingsListenerVTable + + ...instead of passing a whole whack of function pointers around + + This is an internal API. + + gio/gdelayedsettingsbackend.c | 35 +++++++------ + gio/gsettings.c | 48 +++++++++--------- + gio/gsettingsbackend.c | 54 ++++++++------------- + gio/gsettingsbackendinternal.h | 108 + +++++++++++++++++++---------------------- + 4 files changed, 115 insertions(+), 130 deletions(-) + +commit 7c6606854400ba2a4d0c5b5a0eb96ba90845f82e +Author: David Zeuthen +AuthorDate: Thu Sep 9 15:15:13 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 9 15:15:13 2010 -0400 + + GDBusMessage: Don't reset serial number when copying + + Ryan pointed out that it's safe to do this because we have the + G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag and that it simplifies + how filter functions work. + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.h | 12 ++++++------ + gio/gdbusmessage.c | 3 ++- + gio/gdbusprivate.c | 6 ------ + gio/tests/gdbus-message.c | 2 +- + 4 files changed, 9 insertions(+), 14 deletions(-) + +commit a51df8cefb17cdaea61a468076e0b67868439b4d +Author: David Zeuthen +AuthorDate: Thu Sep 9 14:14:45 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 9 14:17:52 2010 -0400 + + GUnixConnection: Remove comment about Linux + + Since the previous commit, the g_unix_connection_send_credentials() / + g_unix_connection_receive_credentials() functions now also works on + FreeBSD since GUnixCredentialsMessage now works there. + + The main idea is that the g_unix_connection_send_credentials() / + g_unix_connection_receive_credentials() functions are the "main" API + for getting credentials (one way or the other). So it's better to + avoid advertising where it is currently implemented. + + Signed-off-by: David Zeuthen + + gio/gunixconnection.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 964eb62343b53cf9172d409adacbb58d78896092 +Author: Joe Marcus Clarke +AuthorDate: Thu Sep 9 14:10:01 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 9 14:10:01 2010 -0400 + + Bug 628904 – Add credential support for FreeBSD and fix a socket + issue + + Signed-off-by: David Zeuthen + + gio/gcredentials.c | 53 + +++++++++++++++++++++++++++++++++++++++++++ + gio/gioenums.h | 4 +++- + gio/gsocket.c | 9 ++++++-- + gio/gunixcredentialsmessage.c | 46 +++++++++++++++++++++++++++++++++++++ + 4 files changed, 109 insertions(+), 3 deletions(-) + +commit ee945d8f621609086a8777ca4226cb93308c12e4 +Author: David Zeuthen +AuthorDate: Thu Sep 9 14:00:46 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 9 14:02:31 2010 -0400 + + GDBusServer: Make ::new-connection return whether the connection + was claimed + + Otherwise things probably won't work in a garbage-collected world + (consider the trivial GC that never collects garbage). + + This commit breaks GDBusServer ABI. No known released software is + using this code. + + Signed-off-by: David Zeuthen + + gio/gdbusserver.c | 34 ++++++++++++++++++++++------------ + gio/gio-marshal.list | 1 + + gio/tests/gdbus-example-peer.c | 4 +++- + gio/tests/gdbus-peer.c | 12 +++++++++--- + 4 files changed, 35 insertions(+), 16 deletions(-) + +commit c3371efcaa47b03941c6c8148687b0a21d18dfbe +Author: David Zeuthen +AuthorDate: Thu Sep 9 13:21:35 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 9 13:21:35 2010 -0400 + + Bug 624546 – Modification of GDBusMessage in filter function + + Rework filter functions as per + + https://bugzilla.gnome.org/show_bug.cgi?id=624546#c8 + + This commit breaks ABI. However, this ABI break affects only + applications using filter functions. The only known user of is dconf. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 1 - + gio/gdbusconnection.c | 95 + +++++++++++++++---------------------- + gio/gdbusconnection.h | 81 +++++++++++++++++++++++++------ + gio/gdbusprivate.c | 37 +++++++++------ + gio/gdbusprivate.h | 6 +-- + gio/gioenums.h | 25 ---------- + gio/tests/gdbus-connection.c | 69 +++++++++++++++++---------- + gio/tests/gdbus-peer.c | 4 +- + 8 files changed, 175 insertions(+), 143 deletions(-) + +commit 3d8095588a149826872d97151db6370e9772c42e +Author: David Zeuthen +AuthorDate: Thu Sep 9 12:00:00 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 9 12:00:39 2010 -0400 + + Fix tmpl files + + Signed-off-by: David Zeuthen + + docs/reference/glib/tmpl/conversions.sgml | 12 +-- + docs/reference/glib/tmpl/glib-unused.sgml | 40 +++++++++ + docs/reference/glib/tmpl/gregex.sgml | 142 + +++++++++++++++--------------- + docs/reference/glib/tmpl/messages.sgml | 27 ++---- + docs/reference/glib/tmpl/version.sgml | 41 --------- + 5 files changed, 122 insertions(+), 140 deletions(-) + +commit 67a00658eadfd99ffd1be8cb5a7387e3d77e63a7 +Author: David Zeuthen +AuthorDate: Thu Sep 9 11:37:14 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Sep 9 12:00:32 2010 -0400 + + GDBusMessage: Make it possible to lock and copy messages + + Don't actually use this yet as that will require a couple of + modifications to the filter function signature. This is part of the + bug-fix for + + https://bugzilla.gnome.org/show_bug.cgi?id=624546#c8 + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 3 + + gio/gdbusmessage.c | 210 + +++++++++++++++++++++++++++++++++++- + gio/gdbusmessage.h | 5 +- + gio/gio.symbols | 3 + + gio/tests/Makefile.am | 4 + + gio/tests/gdbus-message.c | 153 ++++++++++++++++++++++++++ + 6 files changed, 375 insertions(+), 3 deletions(-) + +commit 016cecb179de46defe84d674c277add5c2a1bd3f +Author: Emmanuele Bassi +AuthorDate: Wed Sep 8 11:58:42 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Wed Sep 8 12:06:49 2010 +0300 + + Revert hack that broke things badly on Windows + + This should fix bug #628952. + + Don't include glib/gdatasetprivate.h directly. Especially don't define + GLIB_COMPILATION when doing that, as that causes breakage on Windows + because of the variable dllimport/dllexport stuff in gtypes.h that + checks GLIB_COMPILATION. That macro really should be defined only when + compiling code that goes into the libglib DLL. Otherwise the compiler + thinks that variables that should be imported from libglib are + actually defined in the code being compiled. + + Just call g_atomic_pointer_get() as such, don't bother with + G_DATALIST_GET_FLAGS. + + Signed-off-by: Tor Lillqvist + + gobject/gobject.c | 9 +-------- + 1 file changed, 1 insertion(+), 8 deletions(-) + +commit 349322622a46cafbda7d4d16c0fa9b245467d720 +Author: Inaki Larranaga Murgoitio +AuthorDate: Tue Sep 7 18:03:19 2010 +0200 +Commit: dooteo +CommitDate: Tue Sep 7 18:03:33 2010 +0200 + + Updated Basque language + + po/eu.po | 2300 + +++++++++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 1526 insertions(+), 774 deletions(-) + +commit e96bbfe63a3d6f1a16a417ce0d1f839b77cf4f93 +Author: Piotr Drąg +AuthorDate: Tue Sep 7 17:43:37 2010 +0200 +Commit: Tomasz Dominikowski +CommitDate: Tue Sep 7 17:43:37 2010 +0200 + + Updated Polish translation + + po/pl.po | 1791 + +++++++++++++++++++++++++------------------------------------- + 1 file changed, 713 insertions(+), 1078 deletions(-) + +commit c3a7e51edfadbd9fb53db5c9443aa64d82dd763d +Author: Piotr Drąg +AuthorDate: Tue Sep 7 17:42:19 2010 +0200 +Commit: Tomasz Dominikowski +CommitDate: Tue Sep 7 17:42:19 2010 +0200 + + Updated Polish translation + + po/pl.po | 2578 + +++++++++++++++++++++++++++++++++++++++++++------------------- + 1 file changed, 1800 insertions(+), 778 deletions(-) + +commit c406b272a6b9d89f3061632507d7fc2538011b34 +Author: Duarte Loreto +AuthorDate: Tue Sep 7 00:33:02 2010 +0100 +Commit: Duarte Loreto +CommitDate: Tue Sep 7 00:33:31 2010 +0100 + + Updated Portuguese translation + + po/pt.po | 276 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 153 insertions(+), 123 deletions(-) + +commit 5a0ba0f7fc056ec800454f4977d3307c879335d4 +Author: Duarte Loreto +AuthorDate: Tue Sep 7 00:29:36 2010 +0100 +Commit: Duarte Loreto +CommitDate: Tue Sep 7 00:33:31 2010 +0100 + + Updated Portuguese translation + + po/pt.po | 2291 + ++++++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 1494 insertions(+), 797 deletions(-) + +commit d0a4fae95f46e9b6a67057f241d7b904b5a7dbd3 +Author: Daniel Nylander +AuthorDate: Mon Sep 6 23:10:09 2010 +0200 +Commit: Daniel Nylander +CommitDate: Mon Sep 6 23:10:09 2010 +0200 + + Updated Swedish translation + + po/sv.po | 849 + +++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 582 insertions(+), 267 deletions(-) + +commit 3b9055265fd30a215cbd230dc61f77ef02337193 +Author: Gabor Kelemen +AuthorDate: Mon Sep 6 15:07:02 2010 +0200 +Commit: Gabor Kelemen +CommitDate: Mon Sep 6 15:07:35 2010 +0200 + + Updated Hungarian translation + + po/hu.po | 2287 + +++++++++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 1503 insertions(+), 784 deletions(-) + +commit 548ddd5fe92fd9e14e217e68930bd036bffadc5f +Author: Tor Lillqvist +AuthorDate: Mon Sep 6 15:56:16 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Mon Sep 6 15:57:32 2010 +0300 + + Fix build on Windows and possibly other non-Linux platforms + + Include glibconfig.h in files that test G_OS_WIN32. Include headers + for GLib APIs used conditionally where needed. + + glib/gbacktrace.c | 1 + + glib/gconvert.c | 6 ++++++ + glib/gdate.c | 5 +++++ + glib/gfileutils.c | 1 + + glib/gmain.c | 18 ++++++++++++++++++ + glib/gpoll.c | 4 ++++ + glib/gslice.c | 1 + + glib/gstdio.c | 1 + + glib/gtimer.c | 2 +- + glib/gutils.c | 6 ++++++ + 10 files changed, 44 insertions(+), 1 deletion(-) + +commit 2aa135ee3d7b0a3e3140ce994ef0f554cadf9ab4 +Author: Emmanuele Bassi +AuthorDate: Mon Sep 6 12:26:40 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Sep 6 12:26:40 2010 +0100 + + Whitespace fixes + + glib/gdatetime.c | 20 +++++++++++--------- + 1 file changed, 11 insertions(+), 9 deletions(-) + +commit 43098d0038ce1273844e2fba34cfa2408cd6e3bd +Author: Damien Lespiau +AuthorDate: Sun Sep 5 21:47:44 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Sep 6 11:51:11 2010 +0100 + + datetime: Rename shadowing variables + + timezone and tzname shadow variables declared in time.h. Let's rename + them to time_zone and tz_name then. + + https://bugzilla.gnome.org/show_bug.cgi?id=628839 + + glib/gdatetime.c | 46 +++++++++++++++++++++++----------------------- + glib/gdatetime.h | 2 +- + 2 files changed, 24 insertions(+), 24 deletions(-) + +commit 875ad12345e22b3189e524d9bede58f6e7b5cf88 +Author: Thiago Santos +AuthorDate: Fri Sep 3 14:43:11 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Sep 6 11:50:30 2010 +0100 + + gdatetime: Use proleptic gregorian + + Use Proleptic Gregorian calendar instead of the Julian calendar + as the internal representation. + + https://bugzilla.gnome.org/show_bug.cgi?id=50076 + + Signed-off-by: Emmanuele Bassi + + glib/gdatetime.c | 225 + ++++++++++++++++++++++++++++--------------------- + glib/tests/gdatetime.c | 32 +++++++ + 2 files changed, 161 insertions(+), 96 deletions(-) + +commit 6bb89501cf7bfb5e4365d8dd3ef045a0c096af0c +Author: Christian Hergert +AuthorDate: Tue Aug 31 09:27:58 2010 -0700 +Commit: Emmanuele Bassi +CommitDate: Mon Sep 6 11:50:30 2010 +0100 + + datetime: use g_utf8_next_char() to walk utf8 string + + Previously, the format string was iterated many times by + walking to the given offset in the string repeatedly. + This patch instead walks the string using g_utf8_next_char(). + + Additionally, the character for lookups was a char and could + loose content. This uses gunichar instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=50076 + + glib/gdatetime.c | 29 +++++++++++++---------------- + 1 file changed, 13 insertions(+), 16 deletions(-) + +commit 52e44ddec27cca394e7aa047d994530783b7026a +Author: Christian Hergert +AuthorDate: Tue Aug 31 09:10:16 2010 -0700 +Commit: Emmanuele Bassi +CommitDate: Mon Sep 6 11:50:30 2010 +0100 + + datetime: avoid using __year + + These were left over from when the inline functions where implemented + as macros. They are no longer needed and where clashing with the + global __year anyway. + + https://bugzilla.gnome.org/show_bug.cgi?id=50076 + + glib/gdatetime.c | 54 + +++++++++++++++++++++++++++--------------------------- + 1 file changed, 27 insertions(+), 27 deletions(-) + +commit 64300c0cc44b206db3f4dd206cced56ddda33038 +Author: Emmanuele Bassi +AuthorDate: Thu Aug 26 15:23:13 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Sep 6 11:50:30 2010 +0100 + + datetime: Add get_week_of_year() + + https://bugzilla.gnome.org/show_bug.cgi?id=628029 + + Based on a patch by: Joseph Pingenot + + Signed-off-by: Emmanuele Bassi + + docs/reference/glib/glib-sections.txt | 25 +++++++++++++------------ + glib/gdatetime.c | 21 +++++++++++++++++++++ + glib/gdatetime.h | 1 + + glib/glib.symbols | 1 + + 4 files changed, 36 insertions(+), 12 deletions(-) + +commit 70ef2e3bf64b4bfe85d2cf60daf95c50aa292039 +Author: Emmanuele Bassi +AuthorDate: Thu Aug 26 13:11:46 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Sep 6 11:50:30 2010 +0100 + + datetime: Rename internal method + + Use add_ymd(), to reflect the order of the arguments. + + glib/gdatetime.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 959886d95e0f4caafbfd300320dc8055e8bbbac7 +Author: Emmanuele Bassi +AuthorDate: Mon Sep 6 11:43:04 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Mon Sep 6 11:43:04 2010 +0100 + + build: Fix warnings caused by missing includes + + glib/giounix.c | 1 + + glib/gslice.c | 2 ++ + glib/gspawn.c | 2 ++ + 3 files changed, 5 insertions(+) + +commit 438d195d19f627dc9da9d72ca153f5caba5db151 +Author: Khaled Hosny +AuthorDate: Sun Sep 5 16:23:00 2010 +0200 +Commit: Khaled Hosny +CommitDate: Sun Sep 5 16:23:00 2010 +0200 + + Updated Arabic translation + + po/ar.po | 1982 + ++++++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 1297 insertions(+), 685 deletions(-) + +commit f4c84a59f89f3f22958cf5b263963e801d76065d +Author: Chao-Hsiung Liao +AuthorDate: Sun Sep 5 19:24:01 2010 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Sun Sep 5 19:24:01 2010 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 546 + +++++++++++++++++++++++++++++++++++++++++------------------- + po/zh_TW.po | 546 + +++++++++++++++++++++++++++++++++++++++++------------------- + 2 files changed, 758 insertions(+), 334 deletions(-) + +commit f13d5612116de1e968764721fbc60b8e1d378430 +Author: Matthias Clasen +AuthorDate: Sun Sep 5 00:23:03 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Sep 5 00:23:03 2010 -0400 + + More header inclusion cleanup + + glib/gatomic-gcc.c | 2 +- + glib/gatomic.c | 2 +- + glib/gerror.c | 4 +++- + glib/giounix.c | 10 +++++++--- + glib/gprintf.c | 1 - + glib/gslice.c | 15 +++++++++------ + glib/gspawn.c | 7 ++++++- + glib/gunidecomp.c | 3 ++- + glib/gutils.c | 10 +++++++++- + 9 files changed, 38 insertions(+), 16 deletions(-) + +commit 19972a1b57ef092067f001bb8d870fa552cc20a2 +Author: Emmanuele Bassi +AuthorDate: Sat Sep 4 18:24:50 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Sat Sep 4 18:24:50 2010 +0100 + + build: Quench the compiler's thirst for warnings + + gio/gdbusauthmechanismsha1.c | 1 + + gio/gdbusmessage.c | 1 + + gio/gdbusproxy.c | 1 + + gio/gdbusserver.c | 1 + + gio/tests/gdbus-introspection.c | 5 ++++- + gio/tests/gdbus-peer.c | 1 + + 6 files changed, 9 insertions(+), 1 deletion(-) + +commit 581e68b7d3f57654d881cea6de7bdfabae62e368 +Author: Emmanuele Bassi +AuthorDate: Sat Sep 4 18:15:15 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Sat Sep 4 18:15:15 2010 +0100 + + gmain: Define _GNU_SOURCE before including glibconfig.h + + As it pulls in unistd.h from something else. + + glib/gmain.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit ca7dee5949185cd43a1f71c4e2b15987a0cc3160 +Author: Emmanuele Bassi +AuthorDate: Sat Sep 4 18:04:34 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Sat Sep 4 18:04:34 2010 +0100 + + Build fixes for the fall-out of the inclusion changes + + glib/gbacktrace.c | 3 +++ + glib/gchecksum.c | 1 + + glib/gdataset.c | 1 + + glib/gdatetime.c | 3 +++ + glib/gdatetime.h | 2 +- + glib/gdir.c | 1 + + glib/ghash.c | 1 + + glib/ghostutils.c | 1 + + glib/giochannel.c | 1 + + glib/gpoll.c | 1 + + glib/grand.c | 1 + + glib/gscanner.c | 1 + + glib/gshell.c | 1 + + 13 files changed, 17 insertions(+), 1 deletion(-) + +commit b1dbcc40237f77f3648b8f5fd654ce30d260f7ba +Author: Emmanuele Bassi +AuthorDate: Sat Sep 4 18:03:33 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Sat Sep 4 18:03:33 2010 +0100 + + gtimer: Fix a compilation warning + + glib/gtimer.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 01a46e5c652ec8030226a9cf54025e175f56caac +Author: Emmanuele Bassi +AuthorDate: Sat Sep 4 17:22:39 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Sat Sep 4 17:25:37 2010 +0100 + + Hack to include glib/gdatasetprivate.h directly + + The gdatasetprivate.h header includes gatomic.h directly. It all works + well in GLib, but inside GObject it will trigger the single inclusion + guard. + + Since this is a private header, and it's kind of a special case, + one way + to fix it is to declare GLIB_COMPILATION around it and fool the single + inclusion guard in gatomic.h into thinking we're compiling GLib + and not + GObject. + + gobject/gobject.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 82db1446b39a4579b342b89fd0eba50c4f93441b +Author: Emmanuele Bassi +AuthorDate: Sat Sep 4 17:22:18 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Sat Sep 4 17:22:18 2010 +0100 + + Add missing gstrfuncs.h include + + For g_strdup() and friends. + + glib/gutf8.c | 1 + + 1 file changed, 1 insertion(+) + +commit 04077ff5c5f57dd8c55c47bfb80d551e594a525c +Author: Matthias Clasen +AuthorDate: Fri Sep 3 23:03:14 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 23:03:14 2010 -0400 + + More include cleanups + + glib/gconvert.c | 16 +- + glib/gdataset.c | 11 +- + glib/gdate.c | 10 +- + glib/gdir.c | 4 +- + glib/gfileutils.c | 4 +- + glib/ghash.c | 5 +- + glib/ghook.c | 8 +- + glib/ghostutils.c | 11 +- + glib/giochannel.c | 3 +- + glib/gmain.c | 17 +- + glib/gpoll.c | 2 +- + glib/gqsort.c | 4 +- + glib/gscanner.c | 27 +- + glib/gshell.c | 9 +- + glib/gstdio.c | 2 - + glib/gstrfuncs.c | 1128 + ++++++++++++++++++++++++++-------------------------- + glib/gthreadpool.c | 7 +- + glib/gtimer.c | 10 +- + glib/gunicollate.c | 7 +- + glib/guniprop.c | 6 +- + 20 files changed, 672 insertions(+), 619 deletions(-) + +commit dc2e46b2aa5b57883379807421eb1d0493ae343e +Author: Matthias Clasen +AuthorDate: Fri Sep 3 21:24:40 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 21:24:40 2010 -0400 + + Don't include glib.h in other headers + + glib/gdatasetprivate.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2effb8d0eaf8041615dda14e4cc82ed764255859 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 21:20:07 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 21:20:07 2010 -0400 + + Remove excessive header includes + + glib/goption.c | 1898 + ++++++++++++++++++++++++++++---------------------------- + 1 file changed, 951 insertions(+), 947 deletions(-) + +commit 7c68050451b0480673bb389c70f238fcd871790b +Author: Matthias Clasen +AuthorDate: Fri Sep 3 21:15:45 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 21:15:45 2010 -0400 + + Remove excessive header includes + + glib/gdatetime.c | 8 ++++---- + glib/gdatetime.h | 2 +- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit aad19216518126306a385dd5b6fb2448bc1d3b22 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 21:12:03 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 21:12:03 2010 -0400 + + Don't include glib.h in other headers + + glib/gunicodeprivate.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 349aec676c01d72c42ce186b258fdde52acd6611 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 20:57:05 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 20:57:05 2010 -0400 + + Remove excessive header inclusions + + glib/glist.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 633f438300ab08b97f8f4ea8ff1b06bd8413cf24 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 20:55:17 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 20:55:17 2010 -0400 + + Remove excessive header inclusions + + glib/gqueue.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 7ddd2100c36215b8806569933d046b96d7eea09a +Author: Matthias Clasen +AuthorDate: Fri Sep 3 20:53:37 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 20:53:37 2010 -0400 + + Remove excessive header inclusions + + glib/gmarkup.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 56818094485fdfb26ee57b86afe1526704158a73 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 20:51:08 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 20:51:08 2010 -0400 + + Remove excessive header inclusions + + glib/gmessages.c | 23 ++++++++++++++++------- + 1 file changed, 16 insertions(+), 7 deletions(-) + +commit a376d9f4c85bdac832f404175b4e65e0a81825a1 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 20:46:40 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 20:46:40 2010 -0400 + + Remove some unneeded headers + + glib/gnode.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 92c577eeff6c42247a4eb3a74eb3f4894a143f9d +Author: Matthias Clasen +AuthorDate: Fri Sep 3 20:44:59 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 20:44:59 2010 -0400 + + Remove eexcessive header inclusions + + glib/grand.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit 0a9eb80798274cb4faffcf8bd6fee829d767b336 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 20:41:52 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 20:41:52 2010 -0400 + + Remove redundant header inclusions + + glib/gprimes.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 6e3b14e155d08e7fee722c282f2b0c42c4bb7bbe +Author: Matthias Clasen +AuthorDate: Fri Sep 3 20:38:30 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 20:38:30 2010 -0400 + + Remove redundant header inclusions + + glib/gunibreak.c | 1 - + glib/gunibreak.h | 3 +++ + 2 files changed, 3 insertions(+), 1 deletion(-) + +commit c5049d86f94cc7f943ee63c93bb01100e759769b +Author: Matthias Clasen +AuthorDate: Fri Sep 3 20:34:15 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 20:34:15 2010 -0400 + + Remove redundant header inclusions + + glib/gstring.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 96d87da379879f20e2c162b468525aaa1a0a82dd +Author: Matthias Clasen +AuthorDate: Fri Sep 3 20:30:54 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 20:30:54 2010 -0400 + + Remove redundant header inclusions + + glib/gregex.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 3e2f1e38255d8157a2ecf244d6a5f6515b8c2d6b +Author: Matthias Clasen +AuthorDate: Fri Sep 3 20:27:45 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 20:27:45 2010 -0400 + + Remove redundant header inclusions + + and some whitespace cleanup. + + glib/gsequence.c | 638 + ++++++++++++++++++++++++++++--------------------------- + 1 file changed, 320 insertions(+), 318 deletions(-) + +commit 8f81ee86ee307448d9a687c01d4958914e5ebc90 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 20:15:16 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 20:15:16 2010 -0400 + + Remove redundant header inclusions + + glib/gslist.c | 345 + +++++++++++++++++++++++++++++----------------------------- + 1 file changed, 173 insertions(+), 172 deletions(-) + +commit d95c6b88348a7c6480c3368d7762137a40a490ba +Author: Matthias Clasen +AuthorDate: Fri Sep 3 20:12:09 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 20:12:09 2010 -0400 + + Remove redundant header inclusions + + glib/gvariant-parser.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit 1409bbab674d935dd3e8072a17719be1e0ba9d66 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 20:05:27 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 20:05:27 2010 -0400 + + Remove redundant header inclusions + + glib/gtree.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 9471902d4d386328f248e2db2e3be895c4ecd5f1 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 20:01:55 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 20:01:55 2010 -0400 + + Remove redundant header inclusions + + glib/gutf8.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit ebcdbd9555b7a1a06ad666d1fef187779f085ea1 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 19:49:34 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 19:49:34 2010 -0400 + + Remove redundant header inclusions + + and clean up some whitespace + + glib/gchecksum.c | 50 ++++++++++++++++++++++++++------------------------ + glib/gchecksum.h | 40 ++++++++++++++++++++-------------------- + 2 files changed, 46 insertions(+), 44 deletions(-) + +commit 9b3fb41a5e4fd9d87c606dcea0fd1cd505b54311 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 19:41:49 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 19:41:49 2010 -0400 + + Remove redundant header inclusions + + and clean up some whitespace + + glib/gbacktrace.c | 58 + ++++++++++++++++++++++++++++--------------------------- + glib/gbacktrace.h | 14 +++++++------- + 2 files changed, 37 insertions(+), 35 deletions(-) + +commit 156a3f71952e37aef199ab381f552a5fe014decb +Author: Matthias Clasen +AuthorDate: Fri Sep 3 19:38:56 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 19:38:56 2010 -0400 + + Whitespace cleanup + + glib/gcache.c | 28 ++++++++++++++-------------- + glib/gcache.h | 2 +- + 2 files changed, 15 insertions(+), 15 deletions(-) + +commit 8300820f7bacd8eb85446be5a5edd7829bd640a6 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 19:37:54 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 19:37:54 2010 -0400 + + Remove redundant header inclusions + + glib/gcache.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 5d4ef36f91074a4477bca67e2519e2ca13f3ae2c +Author: Matthias Clasen +AuthorDate: Fri Sep 3 19:33:11 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 19:34:28 2010 -0400 + + Whitespace cleanup + + glib/gbase64.c | 196 + ++++++++++++++++++++++++++++----------------------------- + glib/gbase64.h | 44 ++++++------- + 2 files changed, 120 insertions(+), 120 deletions(-) + +commit 489b780bb95d9941617ab21160823e0ad268f1b7 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 19:32:02 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 19:32:02 2010 -0400 + + Remove redundant header inclusions + + glib/gbase64.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4e5532ec51e7091656f2853895cee3dc69f8ad5e +Author: Matthias Clasen +AuthorDate: Fri Sep 3 19:03:34 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 19:03:34 2010 -0400 + + Sort extensions properly + + Just taking the difference of the priorities has overflow issues, + as pointed out in bug 623069. + + gio/giomodule.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 42080449d078c27f2098419b27d0f63269ee2d70 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 18:11:08 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 18:11:08 2010 -0400 + + Add a note about size limits of private structures + + Also add some assertions to check these limits, instead of + failing silently. Bug 604479. + + gobject/gtype.c | 21 ++++++++++++++++----- + 1 file changed, 16 insertions(+), 5 deletions(-) + +commit db4fb1b115b2cd4142454db64da2b0abfedcd31b +Author: Christian Persch +AuthorDate: Fri Sep 3 16:05:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 16:05:28 2010 -0400 + + Plug a mem leak in the gdbus-proxy test + + ==23341== 65 bytes in 3 blocks are definitely lost in loss record + 927 of 1,020 + ==23341== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==23341== by 0x4057094: g_malloc (gmem.c:134) + ==23341== by 0x40573DB: g_malloc_n (gmem.c:281) + ==23341== by 0x40717FC: g_strdup (gstrfuncs.c:101) + ==23341== by 0x4147F56: value_lcopy_string (gvaluetypes.c:313) + ==23341== by 0x4123F0B: g_object_get_valist (gobject.c:1643) + ==23341== by 0x41240FF: g_object_get (gobject.c:1731) + ==23341== by 0x804C39E: test_basic (gdbus-proxy.c:522) + + Bug #628331. + + gio/tests/gdbus-proxy.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 5de1bf4a91f405ed5bca4768961e830c8b95e48c +Author: Christian Persch +AuthorDate: Fri Sep 3 16:04:29 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 16:04:29 2010 -0400 + + Plug a mem leak in the gdbus-proxy test + + ==23341== 85 (24 direct, 61 indirect) bytes in 1 blocks are definitely + lost in loss record 900 of 971 + ==23341== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==23341== by 0x4057094: g_malloc (gmem.c:134) + ==23341== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==23341== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==23341== by 0x403A751: g_error_new_valist (gerror.c:54) + ==23341== by 0x403AAD4: g_set_error (gerror.c:240) + ==23341== by 0x420B807: decode_method_reply + (gdbusconnection.c:4774) + ==23341== by 0x420C2BA: g_dbus_connection_call_sync + (gdbusconnection.c:5188) + ==23341== by 0x421B7C9: g_dbus_proxy_call_sync (gdbusproxy.c:2477) + ==23341== by 0x804BD89: test_bogus_method_return + (gdbus-proxy.c:430) + + Bug #628331. + + gio/tests/gdbus-proxy.c | 1 + + 1 file changed, 1 insertion(+) + +commit be33ef85d0a89c2ded655785a4b930926e403e64 +Author: Christian Persch +AuthorDate: Fri Sep 3 16:03:48 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 16:03:48 2010 -0400 + + Plug some mem leaks in gdbus-peer test + + ==29535== 56 (24 direct, 32 indirect) bytes in 1 blocks are definitely + lost in loss record 1,112 of 1,264 + ==29535== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==29535== by 0x4057094: g_malloc (gmem.c:134) + ==29535== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==29535== by 0x406F364: g_slice_copy (gslice.c:858) + ==29535== by 0x403A9B2: g_error_copy (gerror.c:160) + ==29535== by 0x42066D3: initable_init (gdbusconnection.c:2314) + ==29535== by 0x41A73E5: g_initable_init (ginitable.c:105) + ==29535== by 0x41A7587: g_initable_new_valist (ginitable.c:218) + ==29535== by 0x41A742A: g_initable_new (ginitable.c:138) + ==29535== by 0x4206DCC: g_dbus_connection_new_for_address_sync + (gdbusconnection.c:2585) + ==29535== by 0x804D63A: test_nonce_tcp (gdbus-peer.c:1229) + + ==29535== 107 (24 direct, 83 indirect) bytes in 1 blocks are + definitely lost in loss record 1,188 of 1,264 + ==29535== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==29535== by 0x4057094: g_malloc (gmem.c:134) + ==29535== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==29535== by 0x406F364: g_slice_copy (gslice.c:858) + ==29535== by 0x403A9B2: g_error_copy (gerror.c:160) + ==29535== by 0x42066D3: initable_init (gdbusconnection.c:2314) + ==29535== by 0x41A73E5: g_initable_init (ginitable.c:105) + ==29535== by 0x41A7587: g_initable_new_valist (ginitable.c:218) + ==29535== by 0x41A742A: g_initable_new (ginitable.c:138) + ==29535== by 0x4206DCC: g_dbus_connection_new_for_address_sync + (gdbusconnection.c:2585) + ==29535== by 0x804D8E8: test_nonce_tcp (gdbus-peer.c:1259) + + ==29535== 112 (24 direct, 88 indirect) bytes in 1 blocks are + definitely lost in loss record 1,193 of 1,264 + ==29535== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==29535== by 0x4057094: g_malloc (gmem.c:134) + ==29535== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==29535== by 0x406F364: g_slice_copy (gslice.c:858) + ==29535== by 0x403A9B2: g_error_copy (gerror.c:160) + ==29535== by 0x42066D3: initable_init (gdbusconnection.c:2314) + ==29535== by 0x41A73E5: g_initable_init (ginitable.c:105) + ==29535== by 0x41A7587: g_initable_new_valist (ginitable.c:218) + ==29535== by 0x41A742A: g_initable_new (ginitable.c:138) + ==29535== by 0x4206DCC: g_dbus_connection_new_for_address_sync + (gdbusconnection.c:2585) + ==29535== by 0x804D79A: test_nonce_tcp (gdbus-peer.c:1248) + + ==29535== 73 (24 direct, 49 indirect) bytes in 1 blocks are definitely + lost in loss record 1,152 of 1,264 + ==29535== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==29535== by 0x4057094: g_malloc (gmem.c:134) + ==29535== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==29535== by 0x406F364: g_slice_copy (gslice.c:858) + ==29535== by 0x403A9B2: g_error_copy (gerror.c:160) + ==29535== by 0x42066D3: initable_init (gdbusconnection.c:2314) + ==29535== by 0x41A73E5: g_initable_init (ginitable.c:105) + ==29535== by 0x41A7587: g_initable_new_valist (ginitable.c:218) + ==29535== by 0x41A742A: g_initable_new (ginitable.c:138) + ==29535== by 0x4206DCC: g_dbus_connection_new_for_address_sync + (gdbusconnection.c:2585) + ==29535== by 0x804C6CE: test_peer (gdbus-peer.c:803) + + Bug #628331. + + gio/tests/gdbus-peer.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 3df586613916b44cb23edb296f5f468ac6bd80f2 +Author: Christian Persch +AuthorDate: Fri Sep 3 16:02:11 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 16:02:11 2010 -0400 + + Plug a mem leak in the gdbus-peer test + + ==6793== 32 (24 direct, 8 indirect) bytes in 1 blocks are definitely + lost in loss record 779 of 1,423 + ==6793== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==6793== by 0x4057094: g_malloc (gmem.c:134) + ==6793== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==6793== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==6793== by 0x413D5BB: g_type_create_instance (gtype.c:1867) + ==6793== by 0x412372A: g_object_constructor (gobject.c:1482) + ==6793== by 0x4122E1D: g_object_newv (gobject.c:1266) + ==6793== by 0x4122B93: g_object_new (gobject.c:1178) + ==6793== by 0x41DB4F9: g_unix_fd_list_new (gunixfdlist.c:159) + ==6793== by 0x804AADD: test_interface_method_call + (gdbus-peer.c:172) + + Bug #628331. + + gio/tests/gdbus-peer.c | 1 + + 1 file changed, 1 insertion(+) + +commit bd2faedefdbbfa0cbe5c0ee2b3e50eed91617990 +Author: Christian Persch +AuthorDate: Fri Sep 3 16:01:10 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 16:01:10 2010 -0400 + + Plug a mem leak in network-address test + + ==4616== 46 (32 direct, 14 indirect) bytes in 1 blocks are definitely + lost in loss record 193 of 305 + ==4616== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==4616== by 0x4057094: g_malloc (gmem.c:134) + ==4616== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==4616== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==4616== by 0x413D5BB: g_type_create_instance (gtype.c:1867) + ==4616== by 0x412372A: g_object_constructor (gobject.c:1482) + ==4616== by 0x4123147: g_object_newv (gobject.c:1347) + ==4616== by 0x41236BB: g_object_new_valist (gobject.c:1463) + ==4616== by 0x4122BB4: g_object_new (gobject.c:1181) + ==4616== by 0x41B2D0F: g_network_address_new + (gnetworkaddress.c:262) + ==4616== by 0x8048A70: test_basic (network-address.c:10) + + Bug #628331. + + gio/tests/network-address.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit fa6937603c098e8c6e83c8e3bd35ed7bab56ca38 +Author: Christian Persch +AuthorDate: Fri Sep 3 16:00:15 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 16:00:15 2010 -0400 + + Plug a mem leak in contexts test + + ==14059== 96 bytes in 2 blocks are definitely lost in loss record + 520 of 543 + ==14059== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==14059== by 0x4057094: g_malloc (gmem.c:134) + ==14059== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==14059== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==14059== by 0x41385BB: g_type_create_instance (gtype.c:1867) + ==14059== by 0x411E72A: g_object_constructor (gobject.c:1482) + ==14059== by 0x411DE1D: g_object_newv (gobject.c:1266) + ==14059== by 0x411DB93: g_object_new (gobject.c:1178) + ==14059== by 0x42296AF: _g_local_file_input_stream_new + (glocalfileinputstream.c:152) + ==14059== by 0x422281F: g_local_file_read (glocalfile.c:1322) + ==14059== by 0x418A8A9: open_read_async_thread (gfile.c:5050) + ==14059== by 0x41B71BB: run_in_thread (gsimpleasyncresult.c:853) + ==14059== by 0x41A5FBC: io_job_thread (gioscheduler.c:181) + ==14059== by 0x407DCDE: g_thread_pool_thread_proxy + (gthreadpool.c:314) + ==14059== by 0x407C6B0: g_thread_create_proxy (gthread.c:1897) + ==14059== by 0x57D918: start_thread (pthread_create.c:301) + ==14059== by 0x4C6CBD: clone (clone.S:133) + + Bug #628331. + + gio/tests/contexts.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 60349ecc4d41c57d9461355a137316aef224b3c2 +Author: Christian Persch +AuthorDate: Fri Sep 3 15:58:51 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:58:51 2010 -0400 + + Plug mem leaks in contexts test + + ==2464== 80 (16 direct, 64 indirect) bytes in 1 blocks are definitely + lost in loss record 515 of 547 + ==2464== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2464== by 0x4057094: g_malloc (gmem.c:134) + ==2464== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==2464== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==2464== by 0x41385BB: g_type_create_instance (gtype.c:1867) + ==2464== by 0x411E72A: g_object_constructor (gobject.c:1482) + ==2464== by 0x411DE1D: g_object_newv (gobject.c:1266) + ==2464== by 0x411DB93: g_object_new (gobject.c:1178) + ==2464== by 0x4220D74: _g_local_file_new (glocalfile.c:310) + ==2464== by 0x422C897: g_local_vfs_get_file_for_path + (glocalvfs.c:84) + ==2464== by 0x41CA91C: g_vfs_get_file_for_path (gvfs.c:94) + ==2464== by 0x418C1B6: g_file_new_for_path (gfile.c:5898) + ==2464== by 0x8049509: test1_thread (contexts.c:110) + + ==2464== 80 (16 direct, 64 indirect) bytes in 1 blocks are definitely + lost in loss record 516 of 547 + ==2464== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2464== by 0x4057094: g_malloc (gmem.c:134) + ==2464== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==2464== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==2464== by 0x41385BB: g_type_create_instance (gtype.c:1867) + ==2464== by 0x411E72A: g_object_constructor (gobject.c:1482) + ==2464== by 0x411DE1D: g_object_newv (gobject.c:1266) + ==2464== by 0x411DB93: g_object_new (gobject.c:1178) + ==2464== by 0x4220D74: _g_local_file_new (glocalfile.c:310) + ==2464== by 0x422C897: g_local_vfs_get_file_for_path + (glocalvfs.c:84) + ==2464== by 0x41CA91C: g_vfs_get_file_for_path (gvfs.c:94) + ==2464== by 0x418C1B6: g_file_new_for_path (gfile.c:5898) + ==2464== by 0x804964D: test_context_independence (contexts.c:144) + + Bug #628331. + + gio/tests/contexts.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit e4a6b1dcdc9bbe0b5d06228a662d8f3d0ce50e9c +Author: Christian Persch +AuthorDate: Fri Sep 3 15:57:26 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:57:26 2010 -0400 + + Plug a mem leak in buffered-input-stream test + + ==2429== 49 (24 direct, 25 indirect) bytes in 1 blocks are definitely + lost in loss record 276 of 355 + ==2429== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2429== by 0x4057094: g_malloc (gmem.c:134) + ==2429== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==2429== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==2429== by 0x403A8A6: g_error_new_literal (gerror.c:117) + ==2429== by 0x403AC31: g_set_error_literal (gerror.c:314) + ==2429== by 0x4175525: g_buffered_input_stream_read_byte + (gbufferedinputstream.c:880) + ==2429== by 0x804A21A: test_read_byte (buffered-input-stream.c:153) + + Bug #628331. + + gio/tests/buffered-input-stream.c | 1 + + 1 file changed, 1 insertion(+) + +commit 01a19dee6855d3caede22ef8dc28606ee89cf60e +Author: Christian Persch +AuthorDate: Fri Sep 3 15:56:23 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:56:23 2010 -0400 + + Plug a mem leak in g-icon test + + ==2428== 256 bytes in 1 blocks are definitely lost in loss record + 591 of 604 + ==2428== at 0x4005CD2: realloc (vg_replace_malloc.c:476) + ==2428== by 0x40571A5: g_realloc (gmem.c:181) + ==2428== by 0x4075287: g_string_maybe_expand (gstring.c:395) + ==2428== by 0x40760D8: g_string_insert_c (gstring.c:1049) + ==2428== by 0x4074D41: g_string_append_c_inline (gstring.h:153) + ==2428== by 0x4075B3C: g_string_append_uri_escaped (gstring.c:822) + ==2428== by 0x41A46AC: g_icon_to_string_tokenized (gicon.c:164) + ==2428== by 0x41A498F: g_icon_to_string (gicon.c:252) + ==2428== by 0x8049E1A: test_g_icon_serialize (g-icon.c:222) + + Bug #628331. + + gio/tests/g-icon.c | 1 + + 1 file changed, 1 insertion(+) + +commit e8bdd2cb7af29ca20a02f4ebef1c6301e22d1856 +Author: Christian Persch +AuthorDate: Fri Sep 3 15:55:10 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:55:10 2010 -0400 + + Plug a huge mem leak in data-output-stream test + + ==12763== 16,777,215 bytes in 1 blocks are possibly lost in loss + record 357 of 357 + ==12763== at 0x4004F1B: calloc (vg_replace_malloc.c:418) + ==12763== by 0x405711D: g_malloc0 (gmem.c:157) + ==12763== by 0x8048ED6: test_basic (data-output-stream.c:40) + + Bug #628331. + + gio/tests/data-output-stream.c | 1 + + 1 file changed, 1 insertion(+) + +commit 05d6fcf88cee64e168e978800fb66523c36a94fc +Author: Christian Persch +AuthorDate: Fri Sep 3 15:53:56 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:53:56 2010 -0400 + + Plug a mem leak in data-output-stream test + + ==2426== 45,034 bytes in 4,094 blocks are definitely lost in loss + record 358 of 361 + ==2426== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2426== by 0x4057094: g_malloc (gmem.c:134) + ==2426== by 0x40573DB: g_malloc_n (gmem.c:281) + ==2426== by 0x4071ABD: g_strconcat (gstrfuncs.c:315) + ==2426== by 0x804916A: test_read_lines (data-output-stream.c:83) + + Bug #628331. + + gio/tests/data-output-stream.c | 1 + + 1 file changed, 1 insertion(+) + +commit 45331a46408777fc6a888302bad216cedbb16635 +Author: Christian Persch +AuthorDate: Fri Sep 3 15:53:05 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:53:05 2010 -0400 + + Plug a mem leak in data-input-stream test + + ==12351== 45,045 bytes in 4,095 blocks are definitely lost in loss + record 377 of 380 + ==12351== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==12351== by 0x4057094: g_malloc (gmem.c:134) + ==12351== by 0x40573DB: g_malloc_n (gmem.c:281) + ==12351== by 0x4071ABD: g_strconcat (gstrfuncs.c:315) + ==12351== by 0x8049811: test_read_lines (data-input-stream.c:99) + + Bug #628331. + + gio/tests/data-input-stream.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 36c7d95c9c18e36468755dc8a7cfced32170c6ca +Author: Christian Persch +AuthorDate: Fri Sep 3 15:47:38 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:47:38 2010 -0400 + + Plug a mem leak in data-input-stream test + + ==2415== 45,045 bytes in 4,095 blocks are definitely lost in loss + record 393 of 399 + ==2415== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2415== by 0x4057094: g_malloc (gmem.c:134) + ==2415== by 0x417FC29: g_data_input_stream_read_line + (gdatainputstream.c:797) + ==2415== by 0x8049874: test_read_lines (data-input-stream.c:111) + + ==12088== 360 bytes in 40 blocks are definitely lost in loss record + 368 of 381 + ==12088== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==12088== by 0x4057094: g_malloc (gmem.c:134) + ==12088== by 0x417FF4C: g_data_input_stream_read_until + (gdatainputstream.c:914) + ==12088== by 0x8049B6F: test_read_until (data-input-stream.c:182) + + Bug #628331. + + gio/tests/data-input-stream.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 91e380359604dfabf5c98fab8e317c655d32f98b +Author: Christian Persch +AuthorDate: Fri Sep 3 15:45:48 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:45:48 2010 -0400 + + Plug a mem leak in data-input-stream test + + ==2415== 165 (72 direct, 93 indirect) bytes in 3 blocks are definitely + lost in loss record 373 of 399 + ==2415== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2415== by 0x4057094: g_malloc (gmem.c:134) + ==2415== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==2415== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==2415== by 0x403A8A6: g_error_new_literal (gerror.c:117) + ==2415== by 0x403AC31: g_set_error_literal (gerror.c:314) + ==2415== by 0x417ED29: read_data (gdatainputstream.c:309) + ==2415== by 0x417EE9D: g_data_input_stream_read_byte + (gdatainputstream.c:344) + ==2415== by 0x8049DEC: test_data_array (data-input-stream.c:263) + + Bug #628331. + + gio/tests/data-input-stream.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 31b15451cf657499c15c1d08ccee0062a3486a9f +Author: Christian Persch +AuthorDate: Fri Sep 3 15:44:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:44:28 2010 -0400 + + Plug a mem leak in readwrite test + + ==10395== 80 (24 direct, 56 indirect) bytes in 1 blocks are definitely + lost in loss record 529 of 561 + ==10395== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==10395== by 0x4057094: g_malloc (gmem.c:134) + ==10395== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==10395== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==10395== by 0x403A751: g_error_new_valist (gerror.c:54) + ==10395== by 0x403AAD4: g_set_error (gerror.c:240) + ==10395== by 0x4230328: _g_local_file_output_stream_create + (glocalfileoutputstream.c:628) + ==10395== by 0x4227A04: g_local_file_create_readwrite + (glocalfile.c:1388) + ==10395== by 0x418974C: g_file_create_readwrite (gfile.c:1784) + ==10395== by 0x8049FCD: test_g_file_create_readwrite + (readwrite.c:187) + + Bug #628331. + + gio/tests/readwrite.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 94102a40f733dc86e61aaaee0822b8ecc2e9927b +Author: Christian Persch +AuthorDate: Fri Sep 3 15:43:03 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:43:03 2010 -0400 + + Plug some huge mem leaks in converter-stream test + + ==8564== 24,000,000 bytes in 6 blocks are possibly lost in loss + record 592 of 594 + ==8564== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==8564== by 0x4057094: g_malloc (gmem.c:134) + ==8564== by 0x804AA37: test_corruption (converter-stream.c:589) + ==8564== by 0x804B05B: test_roundtrip (converter-stream.c:652) + + ==9459== 25,165,824 bytes in 6 blocks are possibly lost in loss + record 593 of 594 + ==9459== at 0x4005CD2: realloc (vg_replace_malloc.c:476) + ==9459== by 0x40571A5: g_realloc (gmem.c:181) + ==9459== by 0x41B08A3: array_resize (gmemoryoutputstream.c:501) + ==9459== by 0x41B0A5D: g_memory_output_stream_write + (gmemoryoutputstream.c:578) + ==9459== by 0x41B57EF: g_output_stream_write (goutputstream.c:216) + ==9459== by 0x41B591B: g_output_stream_write_all + (goutputstream.c:268) + ==9459== by 0x417D617: flush_buffer (gconverteroutputstream.c:359) + ==9459== by 0x417D958: g_converter_output_stream_write + (gconverteroutputstream.c:502) + ==9459== by 0x41B5D7F: g_output_stream_real_splice + (goutputstream.c:428) + ==9459== by 0x41B5C6C: g_output_stream_splice (goutputstream.c:380) + ==9459== by 0x804AB10: test_corruption (converter-stream.c:600) + + ==9785== 25,165,824 bytes in 6 blocks are possibly lost in loss + record 592 of 592 + ==9785== at 0x4005CD2: realloc (vg_replace_malloc.c:476) + ==9785== by 0x40571A5: g_realloc (gmem.c:181) + ==9785== by 0x41B08A3: array_resize (gmemoryoutputstream.c:501) + ==9785== by 0x41B0A5D: g_memory_output_stream_write + (gmemoryoutputstream.c:578) + ==9785== by 0x41B5D7F: g_output_stream_real_splice + (goutputstream.c:428) + ==9785== by 0x41B5C6C: g_output_stream_splice (goutputstream.c:380) + ==9785== by 0x804ADF1: test_corruption (converter-stream.c:622) + ==9785== by 0x804B06C: test_roundtrip (converter-stream.c:652) + + Bug #628331. + + gio/tests/converter-stream.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 24bee1a130152dece7f7ae470b81bd6ed69a9a4f +Author: Christian Persch +AuthorDate: Fri Sep 3 15:40:55 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:40:55 2010 -0400 + + Plug a mem leak in convert-stream test + + ==7540== 487 (64 direct, 423 indirect) bytes in 2 blocks are + definitely lost in loss record 597 of 615 + ==7540== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==7540== by 0x4057094: g_malloc (gmem.c:134) + ==7540== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==7540== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==7540== by 0x413D5BB: g_type_create_instance (gtype.c:1867) + ==7540== by 0x412372A: g_object_constructor (gobject.c:1482) + ==7540== by 0x4123147: g_object_newv (gobject.c:1347) + ==7540== by 0x41236BB: g_object_new_valist (gobject.c:1463) + ==7540== by 0x41A756E: g_initable_new_valist (ginitable.c:214) + ==7540== by 0x41A743E: g_initable_new (ginitable.c:138) + ==7540== by 0x417B67A: g_charset_converter_new + (gcharsetconverter.c:215) + ==7540== by 0x804B043: test_charset (converter-stream.c:675) + + Bug #628331. + + gio/tests/converter-stream.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit ac8600a14b7e79c6eb19dd779be3b2c8a492d934 +Author: Christian Persch +AuthorDate: Fri Sep 3 15:39:58 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:39:58 2010 -0400 + + Plug a mem leak in converter-stream test + + ==2396== 168 (92 direct, 76 indirect) bytes in 1 blocks are definitely + lost in loss record 598 of 625 + ==2396== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2396== by 0x4057094: g_malloc (gmem.c:134) + ==2396== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==2396== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==2396== by 0x413D5BB: g_type_create_instance (gtype.c:1867) + ==2396== by 0x412372A: g_object_constructor (gobject.c:1482) + ==2396== by 0x4123147: g_object_newv (gobject.c:1347) + ==2396== by 0x41236BB: g_object_new_valist (gobject.c:1463) + ==2396== by 0x4122BB4: g_object_new (gobject.c:1181) + ==2396== by 0x417C54D: g_converter_input_stream_new + (gconverterinputstream.c:204) + ==2396== by 0x804A53E: test_compressor (converter-stream.c:484) + + Bug #628331. + + gio/tests/converter-stream.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 85179745ac72280746da101a5232f7843f2426d3 +Author: Christian Persch +AuthorDate: Fri Sep 3 15:39:07 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:39:07 2010 -0400 + + Plug a mem leak in converter-stream test + + ==2396== 66 (24 direct, 42 indirect) bytes in 1 blocks are definitely + lost in loss record 565 of 625 + ==2396== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2396== by 0x4057094: g_malloc (gmem.c:134) + ==2396== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==2396== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==2396== by 0x403A8A6: g_error_new_literal (gerror.c:117) + ==2396== by 0x403AC31: g_set_error_literal (gerror.c:314) + ==2396== by 0x417BA38: g_charset_converter_convert + (gcharsetconverter.c:344) + ==2396== by 0x417BF67: g_converter_convert (gconverter.c:174) + ==2396== by 0x417C9EB: g_converter_input_stream_read + (gconverterinputstream.c:403) + ==2396== by 0x41A7A17: g_input_stream_read (ginputstream.c:204) + ==2396== by 0x41A7B43: g_input_stream_read_all (ginputstream.c:256) + ==2396== by 0x804B0E4: test_charset (converter-stream.c:682) + + Bug #628331. + + gio/tests/converter-stream.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 7ec414229b8d42a5ce4f5519d18af59a3098f544 +Author: Christian Persch +AuthorDate: Fri Sep 3 15:37:56 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:37:56 2010 -0400 + + Plug a mem leak in converter-stream test + + ==2396== 39 (24 direct, 15 indirect) bytes in 1 blocks are definitely + lost in loss record 398 of 625 + ==2396== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2396== by 0x4057094: g_malloc (gmem.c:134) + ==2396== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==2396== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==2396== by 0x403A8A6: g_error_new_literal (gerror.c:117) + ==2396== by 0x403AC31: g_set_error_literal (gerror.c:314) + ==2396== by 0x80498F7: g_compressor_converter_convert + (converter-stream.c:244) + ==2396== by 0x417BF67: g_converter_convert (gconverter.c:174) + ==2396== by 0x417CBDE: g_converter_input_stream_read + (gconverterinputstream.c:460) + ==2396== by 0x41A7A17: g_input_stream_read (ginputstream.c:204) + ==2396== by 0x804A832: test_compressor (converter-stream.c:545) + + Bug #628331. + + gio/tests/converter-stream.c | 1 + + 1 file changed, 1 insertion(+) + +commit d5d277dccf3637518b3a34af1609ffd60ce1e308 +Author: Christian Persch +AuthorDate: Fri Sep 3 15:37:08 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:37:08 2010 -0400 + + Plug a mem leak in g-file-info test + + ==2395== 64 bytes in 1 blocks are definitely lost in loss record + 381 of 407 + ==2395== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2395== by 0x4005C66: realloc (vg_replace_malloc.c:476) + ==2395== by 0x40571A5: g_realloc (gmem.c:181) + ==2395== by 0x401D670: g_ptr_array_maybe_expand (garray.c:968) + ==2395== by 0x401DD0B: g_ptr_array_add (garray.c:1225) + ==2395== by 0x4199AA9: g_file_info_list_attributes + (gfileinfo.c:646) + ==2395== by 0x80491CE: test_g_file_info (g-file-info.c:76) + + ==2395== 132 (64 direct, 68 indirect) bytes in 1 blocks are definitely + lost in loss record 396 of 407 + ==2395== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2395== by 0x4005C66: realloc (vg_replace_malloc.c:476) + ==2395== by 0x40571A5: g_realloc (gmem.c:181) + ==2395== by 0x401D670: g_ptr_array_maybe_expand (garray.c:968) + ==2395== by 0x401DD0B: g_ptr_array_add (garray.c:1225) + ==2395== by 0x4199A82: g_file_info_list_attributes + (gfileinfo.c:642) + ==2395== by 0x80492B7: test_g_file_info (g-file-info.c:86) + + Bug #628331. + + gio/tests/g-file-info.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 35e101fa0a96fb03db4f503a4b24f4818ada114f +Author: Christian Persch +AuthorDate: Fri Sep 3 15:35:44 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:35:44 2010 -0400 + + Plug a mem leak in the readwrite test + + And use g_assert_[no_]error(). + + ==2392== 49 (24 direct, 25 indirect) bytes in 1 blocks are definitely + lost in loss record 451 of 573 + ==2392== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2392== by 0x4057094: g_malloc (gmem.c:134) + ==2392== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==2392== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==2392== by 0x403A8A6: g_error_new_literal (gerror.c:117) + ==2392== by 0x403AC31: g_set_error_literal (gerror.c:314) + ==2392== by 0x41B7619: g_output_stream_set_pending + (goutputstream.c:1198) + ==2392== by 0x41B5799: g_output_stream_write (goutputstream.c:210) + ==2392== by 0x41B590B: g_output_stream_write_all + (goutputstream.c:268) + ==2392== by 0x8049B54: verify_iostream (readwrite.c:110) + + Bug #628331. + + gio/tests/readwrite.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 93d85ade571b87d1c71ac6ef3fb5e40eaceb68d7 +Author: Christian Persch +AuthorDate: Fri Sep 3 15:34:12 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:34:12 2010 -0400 + + Plug a mem leak in the readwrite test + + ==2392== 38 (16 direct, 22 indirect) bytes in 1 blocks are definitely + lost in loss record 369 of 573 + ==2392== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2392== by 0x4057094: g_malloc (gmem.c:134) + ==2392== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==2392== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==2392== by 0x413D5BB: g_type_create_instance (gtype.c:1867) + ==2392== by 0x412372A: g_object_constructor (gobject.c:1482) + ==2392== by 0x4122E1D: g_object_newv (gobject.c:1266) + ==2392== by 0x4122B93: g_object_new (gobject.c:1178) + ==2392== by 0x4225D74: _g_local_file_new (glocalfile.c:310) + ==2392== by 0x4231897: g_local_vfs_get_file_for_path + (glocalvfs.c:84) + ==2392== by 0x41CF91C: g_vfs_get_file_for_path (gvfs.c:94) + ==2392== by 0x41911B6: g_file_new_for_path (gfile.c:5898) + ==2392== by 0x804A2B9: test_g_file_replace_readwrite + (readwrite.c:235) + + Bug #628331. + + gio/tests/readwrite.c | 1 + + 1 file changed, 1 insertion(+) + +commit 9fba7a43be2481d59ae887f23d831947f27537d3 +Author: Christian Persch +AuthorDate: Fri Sep 3 15:33:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:33:28 2010 -0400 + + Plug a mem leak in the readwrite test + + ==2392== 38 (16 direct, 22 indirect) bytes in 1 blocks are definitely + lost in loss record 368 of 573 + ==2392== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2392== by 0x4057094: g_malloc (gmem.c:134) + ==2392== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==2392== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==2392== by 0x413D5BB: g_type_create_instance (gtype.c:1867) + ==2392== by 0x412372A: g_object_constructor (gobject.c:1482) + ==2392== by 0x4122E1D: g_object_newv (gobject.c:1266) + ==2392== by 0x4122B93: g_object_new (gobject.c:1178) + ==2392== by 0x4225D74: _g_local_file_new (glocalfile.c:310) + ==2392== by 0x4231897: g_local_vfs_get_file_for_path + (glocalvfs.c:84) + ==2392== by 0x41CF91C: g_vfs_get_file_for_path (gvfs.c:94) + ==2392== by 0x41911B6: g_file_new_for_path (gfile.c:5898) + ==2392== by 0x8049F23: test_g_file_create_readwrite + (readwrite.c:183) + + Bug #628331. + + gio/tests/readwrite.c | 1 + + 1 file changed, 1 insertion(+) + +commit e481bf8bf68f46e82fa5624cd941f7880321e945 +Author: Christian Persch +AuthorDate: Fri Sep 3 15:32:32 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:32:32 2010 -0400 + + Plug a mem leak in the readwrite test + + ==2392== 38 (16 direct, 22 indirect) bytes in 1 blocks are definitely + lost in loss record 367 of 573 + ==2392== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2392== by 0x4057094: g_malloc (gmem.c:134) + ==2392== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==2392== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==2392== by 0x413D5BB: g_type_create_instance (gtype.c:1867) + ==2392== by 0x412372A: g_object_constructor (gobject.c:1482) + ==2392== by 0x4122E1D: g_object_newv (gobject.c:1266) + ==2392== by 0x4122B93: g_object_new (gobject.c:1178) + ==2392== by 0x4225D74: _g_local_file_new (glocalfile.c:310) + ==2392== by 0x4231897: g_local_vfs_get_file_for_path + (glocalvfs.c:84) + ==2392== by 0x41CF91C: g_vfs_get_file_for_path (gvfs.c:94) + ==2392== by 0x41911B6: g_file_new_for_path (gfile.c:5898) + ==2392== by 0x8049E30: test_g_file_open_readwrite (readwrite.c:153) + + Bug #628331. + + gio/tests/readwrite.c | 1 + + 1 file changed, 1 insertion(+) + +commit 689b054b6e176c2f1b4bb90ca2a0e514de5e2a0e +Author: Christian Persch +AuthorDate: Fri Sep 3 15:31:37 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:31:37 2010 -0400 + + Plug a mem leak in the memory-input-stream test + + ==2389== 84 (44 direct, 40 indirect) bytes in 1 blocks are definitely + lost in loss record 299 of 315 + ==2389== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2389== by 0x4057094: g_malloc (gmem.c:134) + ==2389== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==2389== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==2389== by 0x413D5BB: g_type_create_instance (gtype.c:1867) + ==2389== by 0x412372A: g_object_constructor (gobject.c:1482) + ==2389== by 0x4122E1D: g_object_newv (gobject.c:1266) + ==2389== by 0x4122B93: g_object_new (gobject.c:1178) + ==2389== by 0x41AF54C: g_memory_input_stream_new + (gmemoryinputstream.c:199) + ==2389== by 0x8048BD1: test_read_chunks (memory-input-stream.c:40) + + Bug #628331. + + gio/tests/memory-input-stream.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 53ae72b926e34b22f36fbc162cd12fc4d0bd7028 +Author: Christian Persch +AuthorDate: Fri Sep 3 15:30:47 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:30:47 2010 -0400 + + Plug a mem leak in the memory-input-stream test + + ==2389== 59 (24 direct, 35 indirect) bytes in 1 blocks are definitely + lost in loss record 290 of 315 + ==2389== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2389== by 0x4057094: g_malloc (gmem.c:134) + ==2389== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==2389== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==2389== by 0x403A8A6: g_error_new_literal (gerror.c:117) + ==2389== by 0x403AC31: g_set_error_literal (gerror.c:314) + ==2389== by 0x41AFD15: g_memory_input_stream_truncate + (gmemoryinputstream.c:517) + ==2389== by 0x41BAC0F: g_seekable_truncate (gseekable.c:174) + ==2389== by 0x8049595: test_truncate (memory-input-stream.c:123) + + Bug #628331. + + gio/tests/memory-input-stream.c | 1 + + 1 file changed, 1 insertion(+) + +commit 6320b04fe97bcdb16e6ca4235db6c85eb91d2bab +Author: Christian Persch +AuthorDate: Fri Sep 3 15:29:51 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:29:51 2010 -0400 + + Plug a mem leak in gsettings test + + ==2530== 13 bytes in 1 blocks are definitely lost in loss record + 373 of 681 + ==2530== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==2530== by 0x4057094: g_malloc (gmem.c:134) + ==2530== by 0x40573DB: g_malloc_n (gmem.c:281) + ==2530== by 0x40717FC: g_strdup (gstrfuncs.c:101) + ==2530== by 0x4147F56: value_lcopy_string (gvaluetypes.c:313) + ==2530== by 0x4123F0B: g_object_get_valist (gobject.c:1643) + ==2530== by 0x41240FF: g_object_get (gobject.c:1731) + ==2530== by 0x804A4BA: test_basic (gsettings.c:28) + + Bug #628331. + + gio/tests/gsettings.c | 1 + + 1 file changed, 1 insertion(+) + +commit e8fc3ba3d0dbb4e8d0592fddcbdc189c9d20056a +Author: Christian Persch +AuthorDate: Tue Aug 31 19:42:32 2010 +0200 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:19:22 2010 -0400 + + Plug a mem leak + + Don't leak the ptr arrays in the + map_sender_unique_name_to_signal_data_array + hash table. + + ==23440== 84 (20 direct, 64 indirect) bytes in 1 blocks are definitely + lost in loss record 920 of 993 + ==23440== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==23440== by 0x4057094: g_malloc (gmem.c:134) + ==23440== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==23440== by 0x401D2D0: g_ptr_array_sized_new (garray.c:799) + ==23440== by 0x401D2AC: g_ptr_array_new (garray.c:783) + ==23440== by 0x420834A: g_dbus_connection_signal_subscribe + (gdbusconnection.c:3084) + + Bug #628436. + + gio/gdbusconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8795f52aae10add70929cd0fad1ccf6d0c8db4af +Author: Christian Persch +AuthorDate: Mon Aug 30 19:31:09 2010 +0200 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:16:47 2010 -0400 + + Plug a mem leak + + ==31063== 98 (24 direct, 74 indirect) bytes in 1 blocks are definitely + lost in loss record 946 of 1,136 + ==31063== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==31063== by 0x4057094: g_malloc (gmem.c:134) + ==31063== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==31063== by 0x4092383: g_variant_get_child_value + (gvariant-core.c:847) + ==31063== by 0x408BE9E: g_variant_get_variant (gvariant.c:709) + ==31063== by 0x40903F5: g_variant_valist_get_nnp (gvariant.c:3767) + ==31063== by 0x40907A9: g_variant_valist_get_leaf (gvariant.c:3884) + ==31063== by 0x4090D10: g_variant_valist_get (gvariant.c:4065) + ==31063== by 0x4090E59: g_variant_valist_get (gvariant.c:4100) + ==31063== by 0x40911B6: g_variant_get_va (gvariant.c:4296) + ==31063== by 0x40910BC: g_variant_get (gvariant.c:4248) + ==31063== by 0x4208DAF: invoke_set_property_in_idle_cb + (gdbusconnection.c:3676) + + Bug #628346. + + gio/gdbusconnection.c | 1 + + 1 file changed, 1 insertion(+) + +commit 1f49f3fa349a49bf17f6cb58d060173b7a448bf5 +Author: Christian Persch +AuthorDate: Mon Aug 30 19:00:05 2010 +0200 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 15:03:24 2010 -0400 + + Plug a mem leak + + ... and use g_error_matches(). + + ==29535== 1,360 (408 direct, 952 indirect) bytes in 17 blocks are + definitely lost in loss record 1,252 of 1,264 + ==29535== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==29535== by 0x4057094: g_malloc (gmem.c:134) + ==29535== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==29535== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==29535== by 0x403A751: g_error_new_valist (gerror.c:54) + ==29535== by 0x403AAD4: g_set_error (gerror.c:240) + ==29535== by 0x41C06C8: g_socket_send_message (gsocket.c:2967) + ==29535== by 0x421CB64: write_message_continue_writing + (gdbusprivate.c:958) + ==29535== by 0x421CE2A: write_message_async (gdbusprivate.c:1049) + ==29535== by 0x421D4DD: maybe_write_next_message + (gdbusprivate.c:1291) + ==29535== by 0x421D26B: message_written (gdbusprivate.c:1187) + ==29535== by 0x421D322: write_message_cb (gdbusprivate.c:1216) + + Bug #628345. + + gio/gdbusprivate.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit c75429d0a0564c3620c6f72afea9838f661c4e88 +Author: Matthias Clasen +AuthorDate: Fri Sep 3 14:52:16 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 3 14:54:22 2010 -0400 + + Make ordering for overridden interface properties consistent + + g_object_class_list_properties tries to sort the returned list of + paramspecs by 'type depth' and param_id. But all the overridden + interface properties have a param_id of 0, so they come out in + a random order. + + Bug 628253. + + gobject/gparam.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 6ddef375c8eb41da3160ac6984f707a19f1da63b +Author: Tor Lillqvist +AuthorDate: Thu Sep 2 21:56:02 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Thu Sep 2 22:36:47 2010 +0300 + + Recuce DLL hijack risk on Windows + + Don't call LoadLibrary() on shell32.dll or kernel32.dll. kernel32.dll + is always loaded. Shell32.dll is also already loaded as glib links to + functions in it. So just call GetModuleHandle() on them. + + For mlang.dll in win_iconv.c and winhttp.dll in gwinhttpvfs.c, always + try loading them from a complete path, from the Windows system + directory. + + Use the "tool help" API to enumerate modules in gmodule-win32.c. It is + present in all Windows versions since Windows 2000, which is all we + support anyway. Thus no need to look that API up dynamically. Just + link to it normally. We can bin the fallback code that attempts to use + the psapi API. + + gio/win32/gwinhttpvfs.c | 15 +++++++-- + glib/gutils.c | 6 ++-- + glib/win_iconv.c | 14 +++++++-- + gmodule/gmodule-win32.c | 82 + +++---------------------------------------------- + 4 files changed, 33 insertions(+), 84 deletions(-) + +commit 54c51c73c60008868f6718a23b4b00a5db61c167 +Author: Kjartan Maraas +AuthorDate: Thu Sep 2 11:56:09 2010 +0200 +Commit: Kjartan Maraas +CommitDate: Thu Sep 2 11:56:09 2010 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 708 + ++++++++++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 515 insertions(+), 193 deletions(-) + +commit b4d3acf9be3aeaf60326e44b0ad706c45e68f590 +Author: noch +AuthorDate: Thu Sep 2 12:35:02 2010 +0500 +Commit: noch +CommitDate: Thu Sep 2 12:35:41 2010 +0500 + + Modified Armenian translation - po file + + po/hy.po | 1139 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 576 insertions(+), 563 deletions(-) + +commit db0eaa299c66d82552645fa42f20d13a791bc53c +Author: Christian Persch +AuthorDate: Wed Sep 1 15:05:59 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Sep 1 15:09:51 2010 +0200 + + Fix building with zlib < 1.2.4 on win32 + + The gzip header processing functions were only exported + since 1.2.4 on win32, so #ifdef this code accordingly. + + Bug #628505. + + gio/gzlibcompressor.c | 3 +++ + gio/gzlibdecompressor.c | 5 +++++ + 2 files changed, 8 insertions(+) + +commit ed72dcdd4507865780ebc14567bf582721a6bce4 +Author: Ryan Lortie +AuthorDate: Wed Sep 1 15:04:41 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Sep 1 15:05:42 2010 +0200 + + Fix small bug in registry backend + + 'n' and 'q' types had their signed/unsigned meaning inverted. + + gio/gregistrysettingsbackend.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 3209024c3ba730df9551074819672756477bd5aa +Author: Sam Thursfield +AuthorDate: Thu Aug 12 16:10:23 2010 +0100 +Commit: Ryan Lortie +CommitDate: Wed Sep 1 15:05:42 2010 +0200 + + Add GSettings Windows Registry backend + + gio/Makefile.am | 7 +- + gio/giomodule.c | 4 + + gio/gregistrysettingsbackend.c | 1966 + ++++++++++++++++++++++++++++++++++++++++ + gio/gregistrysettingsbackend.h | 31 + + 4 files changed, 2007 insertions(+), 1 deletion(-) + +commit fb15dde6c171acb445da5e51ce17e241bf9c52fb +Author: Jon Nordby +AuthorDate: Thu Aug 26 16:51:33 2010 +0200 +Commit: Murray Cumming +CommitDate: Wed Sep 1 09:48:16 2010 +0200 + + docs: Inline docs from tmpl/memory.smgl + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/memory.sgml | 428 + ----------------------------------- + glib/galloca.h | 47 ++++ + glib/gmem.c | 201 +++++++++++++++- + glib/gmem.h | 106 +++++++++ + glib/gstrfuncs.c | 11 + + 6 files changed, 365 insertions(+), 429 deletions(-) + +commit 4497e84215e37f1d7dc55432ab50825652f9fe80 +Author: Andika Triwidada +AuthorDate: Wed Sep 1 09:54:52 2010 +0700 +Commit: Andika Triwidada +CommitDate: Wed Sep 1 09:54:52 2010 +0700 + + Updated Indonesian translation + + po/id.po | 2301 + ++++++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 1479 insertions(+), 822 deletions(-) + +commit 94e34d8a12e94c6aa2d2fcc8440439de5671f6f2 +Author: noch +AuthorDate: Tue Aug 31 16:49:31 2010 +0500 +Commit: noch +CommitDate: Tue Aug 31 16:49:31 2010 +0500 + + Modified hy.po + + po/hy.po | 1776 + +++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 1061 insertions(+), 715 deletions(-) + +commit b10d3a73bc39763ed528baaf93b1143157115690 +Author: noch +AuthorDate: Tue Aug 31 12:34:36 2010 +0500 +Commit: noch +CommitDate: Tue Aug 31 12:36:12 2010 +0500 + + Modified hy.po + + po/hy.po | 971 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 470 insertions(+), 501 deletions(-) + +commit e57884041bf17d851915994370f480f554b49c6a +Author: Matthias Clasen +AuthorDate: Mon Aug 30 20:47:40 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 30 20:47:40 2010 -0400 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 31a72dd719940ca5b97da9eb36ce5467458ed7f5 +Author: Matthias Clasen +AuthorDate: Mon Aug 30 19:29:09 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 30 19:31:45 2010 -0400 + + Update symbol list + + gio/gio.symbols | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +commit ee2c6f4554661ed449dda0076bc4d7627ed05e80 +Author: Branko Kokanović +AuthorDate: Tue Aug 31 02:33:26 2010 +0200 +Commit: Милош Поповић +CommitDate: Tue Aug 31 02:33:26 2010 +0200 + + Updated Serbian translation + + po/sr.po | 125 + ++++++++++++++++++++++++++------------------------------- + po/sr@latin.po | 125 + ++++++++++++++++++++++++++------------------------------- + 2 files changed, 116 insertions(+), 134 deletions(-) + +commit 1d2229129cd5a6ac09cd94b5f9751a8f32d81e05 +Author: Philip Withnall +AuthorDate: Mon Aug 30 22:13:18 2010 +0100 +Commit: Philip Withnall +CommitDate: Mon Aug 30 22:13:18 2010 +0100 + + Update British English translation + + po/en_GB.po | 35 ++++++++++++++++++----------------- + 1 file changed, 18 insertions(+), 17 deletions(-) + +commit 6f327315dcd617f93a59ba235f48f9125a0ee593 +Author: Matthias Clasen +AuthorDate: Mon Aug 30 16:08:25 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 30 16:08:25 2010 -0400 + + Add one more bug ref + + NEWS | 1 + + 1 file changed, 1 insertion(+) + +commit f4f45e980ba222f749e533b445d88996ed66ebe0 +Author: David Zeuthen +AuthorDate: Mon Aug 30 13:58:41 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon Aug 30 13:58:41 2010 -0400 + + GDBusProxy: remove superfluous -gdbus-proxy-method-name qdata + + Looks like we're not using this anymore. + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit 52348e15874869cb02052253847358361f10ec7f +Author: David Zeuthen +AuthorDate: Mon Aug 30 13:45:46 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon Aug 30 13:51:43 2010 -0400 + + Bug 628324 – Invalid reads in gdbus-export test + + Looks like we forgot to ref the returned GVariant in + g_dbus_proxy_call_finish(). + + It's a good question why code using g_dbus_proxy_call() and + g_dbus_proxy_call_finish() worked in the first place - probably the + answer is that no-one really used these APIs. + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 72ea8b1df744ef8a11e67d1b7df121849c0298fb +Author: Matthias Clasen +AuthorDate: Mon Aug 30 13:28:06 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 30 13:28:06 2010 -0400 + + Tweak the wording + + NEWS | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 846b0b34660279871bbafb476adf5b5c597eb08d +Author: Ryan Lortie +AuthorDate: Mon Aug 30 18:58:49 2010 +0200 +Commit: Ryan Lortie +CommitDate: Mon Aug 30 19:26:37 2010 +0200 + + GAction is now an interface + + the new class GSimpleAction is the implementation half + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 40 ++- + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gaction.c | 416 +++++------------------------- + gio/gaction.h | 69 ++--- + gio/gactiongroup.c | 2 +- + gio/gio.h | 1 + + gio/giotypes.h | 1 + + gio/gsimpleaction.c | 498 + ++++++++++++++++++++++++++++++++++++ + gio/gsimpleaction.h | 95 +++++++ + gio/tests/actions.c | 83 +++--- + 12 files changed, 754 insertions(+), 455 deletions(-) + +commit 6cd62920bbb8ed42c7381bb56deca820515500f9 +Author: Ryan Lortie +AuthorDate: Mon Aug 30 17:31:06 2010 +0200 +Commit: Ryan Lortie +CommitDate: Mon Aug 30 19:26:37 2010 +0200 + + GActionGroup is now an interface + + - make GAction.get_state() return a reference + - fix some leaks/warnings in the tests + - fix signal propagation in GSimpleActionGroup + + gio/gaction.c | 9 +++-- + gio/gactiongroup.c | 46 ++++++++++++++----------- + gio/gactiongroup.h | 43 +++++------------------ + gio/gsimpleactiongroup.c | 89 + ++++++++++++++++++------------------------------ + gio/gsimpleactiongroup.h | 8 ++--- + gio/tests/actions.c | 21 ++++++++---- + 6 files changed, 90 insertions(+), 126 deletions(-) + +commit 75891001bc5ed5a99c9a9af17407b0a797f79df4 +Author: Matthias Clasen +AuthorDate: Mon Aug 30 13:11:52 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 30 13:11:52 2010 -0400 + + Update NEWS for 2.25.15 + + NEWS | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit 949392585402916d86920c652d182e92ad109a6d +Author: Christian Persch +AuthorDate: Mon Aug 30 16:12:42 2010 +0200 +Commit: Christian Persch +CommitDate: Mon Aug 30 18:34:14 2010 +0200 + + Make g_emblemed_icon_add_emblem() keep the list sorted + + Fixes bug #628317. + + gio/gemblemedicon.c | 37 +++++++++++++++++-------------------- + 1 file changed, 17 insertions(+), 20 deletions(-) + +commit 7a6f8bd3c34e5f5e20f6770d54406b7abc5a396d +Author: Christian Persch +AuthorDate: Mon Aug 30 15:53:49 2010 +0200 +Commit: Christian Persch +CommitDate: Mon Aug 30 18:33:47 2010 +0200 + + Don't leak the FD list + + ==6793== 32 (24 direct, 8 indirect) bytes in 1 blocks are definitely + lost in loss record 780 of 1,423 + ==6793== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==6793== by 0x4057094: g_malloc (gmem.c:134) + ==6793== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==6793== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==6793== by 0x413D5BB: g_type_create_instance (gtype.c:1867) + ==6793== by 0x412372A: g_object_constructor (gobject.c:1482) + ==6793== by 0x4122E1D: g_object_newv (gobject.c:1266) + ==6793== by 0x4122B93: g_object_new (gobject.c:1178) + ==6793== by 0x41DB582: g_unix_fd_list_new_from_array + (gunixfdlist.c:191) + ==6793== by 0x421BFD6: _g_dbus_worker_do_read_cb + (gdbusprivate.c:590) + + Bug #628329. + + gio/gdbusprivate.c | 1 + + 1 file changed, 1 insertion(+) + +commit fa671dc5e28369c50aaef525c6980803a9946471 +Author: Christian Persch +AuthorDate: Mon Aug 30 10:21:43 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 30 10:21:43 2010 -0400 + + Fix invalid reads + + Don't use a guint16* when getting a guint property via g_object_get()! + + Bug #628323. + + gio/gproxyaddressenumerator.c | 5 ++++- + gio/tests/network-address.c | 2 +- + 2 files changed, 5 insertions(+), 2 deletions(-) + +commit 08924ad1472a17cd6c144ae25a350af0b2d9afe7 +Author: Christian Persch +AuthorDate: Mon Aug 30 10:18:30 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 30 10:18:30 2010 -0400 + + Plug a mem leak in GConverterOutputStream + + ==8221== 1,047 (672 direct, 375 indirect) bytes in 28 blocks are + definitely lost in loss record 589 of 603 + ==8221== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==8221== by 0x4057094: g_malloc (gmem.c:134) + ==8221== by 0x406F2D6: g_slice_alloc (gslice.c:836) + ==8221== by 0x406F31B: g_slice_alloc0 (gslice.c:848) + ==8221== by 0x403A8A6: g_error_new_literal (gerror.c:117) + ==8221== by 0x403AC31: g_set_error_literal (gerror.c:314) + ==8221== by 0x80499DC: g_compressor_converter_convert + (converter-stream.c:267) + ==8221== by 0x417BF67: g_converter_convert (gconverter.c:174) + ==8221== by 0x417D7F0: g_converter_output_stream_write + (gconverteroutputstream.c:428) + ==8221== by 0x41B57DF: g_output_stream_write (goutputstream.c:216) + ==8221== by 0x804A367: test_compressor (converter-stream.c:456) + + Bug #628309. + + gio/gconverteroutputstream.c | 1 + + 1 file changed, 1 insertion(+) + +commit 802c25832cb34976308a8a2b356ad3273108761f +Author: Christian Persch +AuthorDate: Mon Aug 30 10:16:31 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 30 10:16:31 2010 -0400 + + Plug a mem leak + + ==6793== 19 (8 direct, 11 indirect) bytes in 1 blocks are definitely + lost in loss record 640 of 1,423 + ==6793== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==6793== by 0x4057094: g_malloc (gmem.c:134) + ==6793== by 0x40573DB: g_malloc_n (gmem.c:281) + ==6793== by 0x4073D1B: g_strsplit (gstrfuncs.c:2436) + ==6793== by 0x4224A89: initable_init (gdbusserver.c:1040) + ==6793== by 0x41A73F9: g_initable_init (ginitable.c:105) + ==6793== by 0x41A759B: g_initable_new_valist (ginitable.c:218) + ==6793== by 0x41A743E: g_initable_new (ginitable.c:138) + ==6793== by 0x42238F5: g_dbus_server_new_sync (gdbusserver.c:484) + + Bug #628328. + + gio/gdbusserver.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 6879256f360ed46c2238b273a239f99d08a62915 +Author: Christian Persch +AuthorDate: Mon Aug 30 10:14:39 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 30 10:14:39 2010 -0400 + + Plug a mem leak + + ==6793== 16 bytes in 1 blocks are definitely lost in loss record + 632 of 1,423 + ==6793== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==6793== by 0x4057094: g_malloc (gmem.c:134) + ==6793== by 0x417FC29: g_data_input_stream_read_line + (gdatainputstream.c:797) + ==6793== by 0x41F99C1: _my_g_data_input_stream_read_line + (gdbusauth.c:279) + ==6793== by 0x41FA728: _g_dbus_auth_run_client (gdbusauth.c:759) + + Bug #628327. + + gio/gdbusauth.c | 1 + + 1 file changed, 1 insertion(+) + +commit bb221b68df5de89fce4cb70b789df6173d9c2c92 +Author: Matthias Clasen +AuthorDate: Mon Aug 30 10:02:32 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 30 10:02:32 2010 -0400 + + Add an annotation + + gio/gdbusmessage.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a3cc274fc681f5266b621f730d3d8eef811e41cf +Author: Dan Winship +AuthorDate: Mon Aug 30 09:23:09 2010 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 30 09:31:47 2010 -0400 + + GSocketClient: fix a crash on cancellation + + some code rearrangement when adding proxy support resulted in + trying to + use a GSocket that wasn't there. + + https://bugzilla.gnome.org/show_bug.cgi?id=628296 + + gio/gsocketclient.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit b8ff287167f668d0c10c2b98c13661042633163e +Author: Matthias Clasen +AuthorDate: Mon Aug 30 08:58:31 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 30 08:58:31 2010 -0400 + + Disable the 'extra data' test for now + + gio/tests/gdbus-introspection.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit b4a61235da4e604eca92d3f38a391a1e76a63d1c +Author: Matthias Clasen +AuthorDate: Mon Aug 30 08:50:09 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 30 08:50:09 2010 -0400 + + Introspection: make 'direction' default to 'in' for methods + + gio/gdbusintrospection.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit c3135d1d39cbbbb1947843d3937984887764137e +Author: Matthias Clasen +AuthorDate: Mon Aug 30 08:49:41 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 30 08:49:41 2010 -0400 + + Add some more gdbus introspection tests (currently failing) + + gio/tests/gdbus-introspection.c | 90 + ++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 85 insertions(+), 5 deletions(-) + +commit 1ce14a88d6b2ff7007163bef929c88daed0183e5 +Author: Branko Kokanović +AuthorDate: Sun Aug 29 19:07:46 2010 +0200 +Commit: Милош Поповић +CommitDate: Sun Aug 29 19:07:46 2010 +0200 + + Updated Serbian translation + + po/sr.po | 801 + ++++++++++++++++++++++++++++++++++++++++----------------- + po/sr@latin.po | 801 + ++++++++++++++++++++++++++++++++++++++++----------------- + 2 files changed, 1118 insertions(+), 484 deletions(-) + +commit 0e93b0f5c0dfb0bd3a828c5c8a7295c4085598f5 +Author: Yaron Shahrabani +AuthorDate: Sun Aug 29 15:57:41 2010 +0300 +Commit: Yaron Shahrabani +CommitDate: Sun Aug 29 15:57:41 2010 +0300 + + Updated Hebrew translation. + + po/he.po | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) + +commit b09a01c6264c08abc2e5eda54fe30d56f06802dd +Author: Jorge González +AuthorDate: Sun Aug 29 11:33:56 2010 +0200 +Commit: Jorge González +CommitDate: Sun Aug 29 11:33:56 2010 +0200 + + Updated Spanish translation + + po/es.po | 26 +++++++++++++++++--------- + 1 file changed, 17 insertions(+), 9 deletions(-) + +commit 2286d1d669ac3bcef1faa709290831df9197ba02 +Author: A S Alam +AuthorDate: Sun Aug 29 09:32:03 2010 +0530 +Commit: A S Alam +CommitDate: Sun Aug 29 09:32:03 2010 +0530 + + update translation for Punjabi + + po/pa.po | 360 + +++++++++++++++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 291 insertions(+), 69 deletions(-) + +commit 849dbc12056b72f4284bcb6e4b466ec3fcea13f4 +Author: Fran Diéguez +AuthorDate: Sun Aug 29 04:19:12 2010 +0200 +Commit: Fran Diéguez +CommitDate: Sun Aug 29 04:19:12 2010 +0200 + + Added Galician help translations + + po/gl.po | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit 1399913f31b60ffebb84e08d8901e82aab2bb075 +Author: Philip Withnall +AuthorDate: Sat Aug 28 12:18:37 2010 +0100 +Commit: Philip Withnall +CommitDate: Sun Aug 29 00:38:18 2010 +0100 + + Change "type-string" to "type string" in translatable strings + + Helps: bgo#628193 + + gio/gdbusmessage.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ea9f5f025188731f4347f5be1248e84dc3710c7b +Author: Philip Withnall +AuthorDate: Sat Aug 28 12:17:45 2010 +0100 +Commit: Philip Withnall +CommitDate: Sun Aug 29 00:38:06 2010 +0100 + + Change "lock-file" to "lock file" in translatable strings + + Helps: bgo#628193 + + gio/gdbusauthmechanismsha1.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 61e53e0d196d12d7ea612794ce2ff3550927f9d0 +Author: Philip Withnall +AuthorDate: Sat Aug 28 11:54:01 2010 +0100 +Commit: Philip Withnall +CommitDate: Sat Aug 28 15:50:33 2010 +0100 + + Update British English translation + + po/en_GB.po | 2289 + ++++++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 1493 insertions(+), 796 deletions(-) + +commit 62788fdf66f321edb15671cb895aa9072df38149 +Author: Jorge González +AuthorDate: Sat Aug 28 10:08:04 2010 +0200 +Commit: Jorge González +CommitDate: Sat Aug 28 10:08:04 2010 +0200 + + Updated Spanish translation + + po/es.po | 287 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++--------- + 1 file changed, 249 insertions(+), 38 deletions(-) + +commit 5a76228e458ccd9846f7dbe2ad35f9e874a07be4 +Author: Yaron Shahrabani +AuthorDate: Sat Aug 28 10:46:19 2010 +0300 +Commit: Yaron Shahrabani +CommitDate: Sat Aug 28 10:46:19 2010 +0300 + + Updated Hebrew translation. + + po/he.po | 230 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 223 insertions(+), 7 deletions(-) + +commit e0aa877e64b5d2de27c9d6c00119a33b735f5b58 +Author: Fran Diéguez +AuthorDate: Fri Aug 27 23:15:49 2010 +0200 +Commit: Fran Diéguez +CommitDate: Fri Aug 27 23:15:49 2010 +0200 + + Update Galician translations + + po/gl.po | 279 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 248 insertions(+), 31 deletions(-) + +commit 52a41b81bd6770434a62aa4a4b7bef100e27da44 +Author: Claude Paroz +AuthorDate: Fri Aug 27 20:04:38 2010 +0200 +Commit: Claude Paroz +CommitDate: Fri Aug 27 20:04:38 2010 +0200 + + Added missing files in POTFILES.in + + po/POTFILES.in | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 1e7243ad7b48d833ef6eec8fa305f25487f640b0 +Author: David Zeuthen +AuthorDate: Fri Aug 27 10:50:03 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri Aug 27 10:50:03 2010 -0400 + + Bug 628084 – gdbus-peer fails with assertion + + Make it work on systems where /etc/hosts is bigger than 1024 bytes. + + https://bugzilla.gnome.org/show_bug.cgi?id=628084 + + Signed-off-by: David Zeuthen + + gio/tests/gdbus-peer.c | 67 + ++++++++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 60 insertions(+), 7 deletions(-) + +commit 95107e0ab69fdcc9e7f27832dd492582c4e3fb3e +Author: Yaron Shahrabani +AuthorDate: Fri Aug 27 14:53:57 2010 +0300 +Commit: Yaron Shahrabani +CommitDate: Fri Aug 27 14:53:57 2010 +0300 + + Updated Hebrew translation. + + po/he.po | 72 + +++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 35 insertions(+), 37 deletions(-) + +commit db7ddcc19529a101b820347e8cca419fb37f6a02 +Author: Jens Georg +AuthorDate: Wed Aug 25 00:18:23 2010 +0300 +Commit: Jens Georg +CommitDate: Thu Aug 26 18:18:52 2010 +0300 + + Improve parsing of date-only iso8601 strings + + glib/gtimer.c | 15 +++++++++++++-- + tests/testglib.c | 4 ++++ + 2 files changed, 17 insertions(+), 2 deletions(-) + +commit 9a61fb2c640708070a32c18bd06ae94ee71c925f +Author: Emmanuele Bassi +AuthorDate: Thu Aug 26 12:58:19 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Thu Aug 26 12:58:19 2010 +0100 + + datetime: Re-use add_dmy() + + Avoid code duplication. + + glib/gdatetime.c | 55 + ++++++-------------------------------------------- + glib/tests/gdatetime.c | 5 ++++- + 2 files changed, 10 insertions(+), 50 deletions(-) + +commit 3c86a77ae5efa57a6f62c2eeec9c67aa66246496 +Author: Tor Lillqvist +AuthorDate: Thu Aug 26 12:41:46 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Thu Aug 26 12:41:46 2010 +0300 + + Fix Win32 build + + configure.ac | 1 + + glib/gdatetime.c | 2 +- + glib/tests/gdatetime.c | 26 +++++++++++++++++++++++--- + 3 files changed, 25 insertions(+), 4 deletions(-) + +commit ca26f9a5029cfd97f92c81f3993628068d60c4a9 +Author: Matthias Clasen +AuthorDate: Thu Aug 26 00:16:30 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 26 00:16:30 2010 -0400 + + Make this thing work + + glib/gtester-report | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b52cdaf2f01411df86b418f45a7dc04f1499fabe +Author: Matthias Clasen +AuthorDate: Thu Aug 26 00:00:56 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 26 00:00:56 2010 -0400 + + Improve g_file_set_contents docs + + Mention that the temporary filename is longer than the passed-in + filename, so people can avoid passing a name that is already + NAME_MAX long. + + glib/gfileutils.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 925b4231dc7af90fa9ec2c442e640ebe20aedb5c +Author: Matthias Clasen +AuthorDate: Wed Aug 25 22:07:59 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Aug 25 22:09:07 2010 -0400 + + Point out that g_type_init() is required + + docs/reference/gio/overview.xml | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 1681f7410a90f8408fd9dbd5b7e58a6e38c06fe7 +Author: A S Alam +AuthorDate: Wed Aug 25 22:00:53 2010 +0530 +Commit: A S Alam +CommitDate: Thu Aug 26 07:01:51 2010 +0530 + + update translation for Punjabi + + po/pa.po | 658 + ++++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 402 insertions(+), 256 deletions(-) + +commit 8803182f4a1d0d3aa51407bad633dfa1c3f71890 +Author: Matthias Clasen +AuthorDate: Wed Aug 25 20:04:45 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Aug 25 20:04:45 2010 -0400 + + Guarantee that g_get_tmp_dir () doesn't return an empty string + + If it does, g_file_open_tmp() would be in trouble. Pointed + out by Morten Welinder in bug 627969. + + glib/gutils.c | 12 ++++++------ + glib/tests/utils.c | 14 ++++++++++++++ + 2 files changed, 20 insertions(+), 6 deletions(-) + +commit 8e16bf2fb61bf38c9b634c18d9d7ca48e3623169 +Author: Matthias Clasen +AuthorDate: Wed Aug 25 18:44:59 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Aug 25 18:48:20 2010 -0400 + + NEWS for 2.25.15 + + NEWS | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 52 insertions(+) + +commit 08877ee0dc61b73978d6e7f46216c9405498dbf8 +Author: Emmanuele Bassi +AuthorDate: Wed Aug 25 23:08:18 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Aug 25 23:08:18 2010 +0100 + + datetime: Fix a thinko + + We need to check if a year is a leap one *after* we increased it with + the given value, not before. + + glib/gdatetime.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 026375b395fcdc2336666546afd2f21e7ee8bc67 +Author: Emmanuele Bassi +AuthorDate: Wed Aug 25 23:00:31 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Aug 25 23:04:42 2010 +0100 + + datetime: Avoid excessive copies in add_full() + + The current implementation of g_date_time_add_full() creates multiple + GDateTime temporary objects and unrefs them immediately; even with the + slice allocator this could result in a performance bottleneck, + especially if the atomic integer operations fall back to slow paths. + + We can isolate the components of the add_full() operation and create + internal modifiers that operate on an existing GDateTime; this brings + down the number of GDateTime copies created from six to one. + + While at it, the test suite for add_full() should have more checks for + roll-over of months and days. + + Signed-off-by: Emmanuele Bassi + + glib/gdatetime.c | 133 + ++++++++++++++++++++++++++++++++++--------------- + glib/tests/gdatetime.c | 24 +++++---- + 2 files changed, 108 insertions(+), 49 deletions(-) + +commit 0d0a9bb4485069a56caf139346e6a6aad81c4efd +Author: David Zeuthen +AuthorDate: Wed Aug 25 14:45:28 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Aug 25 14:49:05 2010 -0400 + + GDBusConnection: Document memory management semantics for + get_property() + + Turns out we are leaking non-floating GVariant instances returned by + get_property() functions. + + Also avoid imprecise language such as "newly-allocated GVariant" as + this doesn't specify whether the variant can be floating or not. + + Also see https://bugzilla.gnome.org/show_bug.cgi?id=627974 as it is + very related to this change. + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 6 +++++- + gio/gdbusconnection.h | 4 +++- + 2 files changed, 8 insertions(+), 2 deletions(-) + +commit d31c1c863a357e94b87529dfdfb6abad3fcef84b +Author: Emmanuele Bassi +AuthorDate: Wed Aug 25 16:24:46 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Aug 25 16:24:46 2010 +0100 + + docs: Fix up GDateTime for the GObject reference + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gboxed.h | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +commit 99621efbd559afe9c3833befab90daf6d00fc8a9 +Author: Emmanuele Bassi +AuthorDate: Wed Aug 25 16:23:34 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Aug 25 16:23:34 2010 +0100 + + docs: Reword the datetime short description + + glib/gdatetime.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 250b1d576b71f2bafd6cf7abbe679dc2a21fbd65 +Author: Emmanuele Bassi +AuthorDate: Wed Aug 25 16:13:24 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Aug 25 16:13:24 2010 +0100 + + docs: Fix the section name for GDateTime + + docs/reference/glib/glib-sections.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5e65ed4e4458d0a359259298c33b222e16441e5e +Author: Emmanuele Bassi +AuthorDate: Wed Aug 25 12:30:09 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Aug 25 13:42:48 2010 +0100 + + datetime: Fix leap year check + + Remove a FIXME and an approximation when computing the seconds from + the Unix epoch. + + glib/gdatetime.c | 23 +++++++++++++++-------- + 1 file changed, 15 insertions(+), 8 deletions(-) + +commit 2952e908e4a67929a72c5ad9a26db95f1dde2d29 +Author: Emmanuele Bassi +AuthorDate: Wed Aug 25 12:24:54 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Aug 25 12:24:54 2010 +0100 + + datetime: Fix coding style + + glib/gdatetime.c | 310 + ++++++++++++++++++++++++++----------------------------- + 1 file changed, 148 insertions(+), 162 deletions(-) + +commit 0a59ab6e8594f0f2f9203390052364bef9212697 +Author: Emmanuele Bassi +AuthorDate: Wed Aug 25 12:14:04 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Aug 25 12:14:04 2010 +0100 + + datetime: Use %Z for the timezone name + + We should try and follow strftime(3) for the format control characters + as much as possible. + + glib/gdatetime.c | 4 ++-- + glib/tests/gdatetime.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit b4c0b958af875bcba830ee734cd50df30a88236a +Author: Emmanuele Bassi +AuthorDate: Wed Aug 25 12:09:16 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Aug 25 12:09:16 2010 +0100 + + datetime: Fix the format documentation + + The %x format is for the preferred date, and the %X format is for the + preferred time. + + glib/gdatetime.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 9a39b1d7051bd5a8f725aacf621649619067857b +Author: Emmanuele Bassi +AuthorDate: Wed Aug 25 12:06:47 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Aug 25 12:06:47 2010 +0100 + + datetime: Clean up macros and unused variables + + The most complex macros should be converted to inlined functions, + instead, to guarantee some type safety. + + glib/gdatetime.c | 147 + +++++++++++++++++++++++++++---------------------------- + 1 file changed, 73 insertions(+), 74 deletions(-) + +commit 0f87f09397ef9a796258ec3200e0e987a761e505 +Author: Emmanuele Bassi +AuthorDate: Wed Aug 25 00:27:49 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Aug 25 00:27:49 2010 +0100 + + datetime: Remove the translation marker for a warning message + + glib/gdatetime.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 96dc06e6e06ec0347ecb4e44b15acf8ce7e31af0 +Author: Emmanuele Bassi +AuthorDate: Tue Aug 24 23:30:30 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Tue Aug 24 23:41:21 2010 +0100 + + docs: Add GDateTime to the GLib API reference + + docs/reference/glib/glib-docs.sgml | 1 + + docs/reference/glib/glib-sections.txt | 62 + +++++++++++++++++++++++++++++++++++ + 2 files changed, 63 insertions(+) + +commit d62eb80c5489bbd4590c10f218b9eb71393bdfaf +Author: Emmanuele Bassi +AuthorDate: Tue Aug 24 21:37:43 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Tue Aug 24 23:41:21 2010 +0100 + + docs: Mention TZDIR + + The timezone code in GDateTime honours the TZDIR environment variable, + so it should be mentioned in the list of variables GLib checks at + runtime. + + docs/reference/glib/running.sgml | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit e35ed21f43f94443e5b137d85120b87542261c5b +Author: Thiago Santos +AuthorDate: Fri May 28 08:19:29 2010 -0300 +Commit: Emmanuele Bassi +CommitDate: Tue Aug 24 23:41:21 2010 +0100 + + datetime: Add GDateTime to the GType system + + As with other GLib data types, use a GBoxed. + + gobject/gboxed.c | 2 ++ + gobject/gboxed.h | 10 +++++++++- + gobject/gobject.symbols | 1 + + 3 files changed, 12 insertions(+), 1 deletion(-) + +commit e1f13ee9ed38d4f14bf927b6fa3f28530afc3640 +Author: Thiago Santos +AuthorDate: Fri May 28 08:19:29 2010 -0300 +Commit: Emmanuele Bassi +CommitDate: Tue Aug 24 23:41:21 2010 +0100 + + Add GDateTime to GLib + + GDateTime is an opaque data type containing a date and time + representation. It's immutable once created and reference + counted. + + https://bugzilla.gnome.org/show_bug.cgi?id=50076 + + Based on the code by: Christian Hergert + + Signed-off-by: Emmanuele Bassi + + glib/Makefile.am | 16 +- + glib/gdatetime.c | 2227 + ++++++++++++++++++++++++++++++++++++++++++++++++ + glib/gdatetime.h | 190 +++++ + glib/glib.h | 1 + + glib/glib.symbols | 51 ++ + glib/tests/.gitignore | 1 + + glib/tests/Makefile.am | 5 +- + glib/tests/gdatetime.c | 962 +++++++++++++++++++++ + 8 files changed, 3445 insertions(+), 8 deletions(-) + +commit 3cee971db55da9b3bdd1c05e5be68152cd6fd165 +Author: Emmanuele Bassi +AuthorDate: Tue Aug 24 22:47:02 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Tue Aug 24 22:48:15 2010 +0100 + + Add C_() to glibintl.h + + glib/glibintl.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit 0a9bfa1c7d1d30a926c20cb45f935d05e2d2752a +Author: Cody Russell +AuthorDate: Mon Aug 23 12:34:53 2010 -0500 +Commit: Cody Russell +CommitDate: Mon Aug 23 12:34:53 2010 -0500 + + Add const to _pcre_ucp_othercase() definition in pcre_internal.h + + glib/pcre/pcre_internal.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5ff83633744db6f07fa990deab20b17c583b40e9 +Author: Jorge González +AuthorDate: Mon Aug 23 17:40:02 2010 +0200 +Commit: Jorge González +CommitDate: Mon Aug 23 17:40:02 2010 +0200 + + Updated Spanish translation + + po/es.po | 67 + ++++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 38 insertions(+), 29 deletions(-) + +commit 6c24062880b19a239b57435694a9daed1c90edca +Author: Tor Lillqvist +AuthorDate: Mon Aug 23 14:31:20 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Mon Aug 23 14:31:20 2010 +0300 + + Include gproxyaddress.h explicitly + + gio/gsocketaddress.c | 1 + + 1 file changed, 1 insertion(+) + +commit 780d6bfa88900fa5a01375467b0cbb686f7b1d1f +Author: Matthias Clasen +AuthorDate: Mon Aug 23 00:37:52 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 23 00:38:19 2010 -0400 + + Improve testutils test coverage + + glib/tests/testing.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit fa6926e5d4ff7fc7efde46222ff70f2a75298ac4 +Author: Matthias Clasen +AuthorDate: Mon Aug 23 00:37:37 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 23 00:38:19 2010 -0400 + + Improve printf test coverage + + glib/tests/printf.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit 7d970fadbc4bad8635f2e5e109517bc015e0e14a +Author: Matthias Clasen +AuthorDate: Mon Aug 23 00:37:21 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 23 00:38:19 2010 -0400 + + Improve GDate test coverate + + glib/tests/date.c | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +commit 8f40c0e45a158440edb7f4e4fcc95471c028a2e3 +Author: Matthias Clasen +AuthorDate: Mon Aug 23 00:36:36 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 23 00:38:19 2010 -0400 + + Improve GDBus introspection test coverage + + gio/tests/gdbus-introspection.c | 81 + +++++++++++++++++++++++++++++++++++++++++ + gio/tests/gdbus-peer.c | 4 ++ + 2 files changed, 85 insertions(+) + +commit 847e4dfe7d2ff84c23fba332381e5121ab54aa39 +Author: David Zeuthen +AuthorDate: Sun Aug 22 22:56:49 2010 -0400 +Commit: David Zeuthen +CommitDate: Sun Aug 22 22:58:29 2010 -0400 + + GDBusMethodInvocation: nuke constructor + + ... that is, make it private. This makes sense because users are never + expected to create such objects themselves - only the GDBus core will + need this. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 1 - + gio/gdbusconnection.c | 18 +++++++++--------- + gio/gdbusmethodinvocation.c | 22 +++++++++++----------- + gio/gdbusmethodinvocation.h | 9 --------- + gio/gdbusprivate.h | 12 ++++++++++++ + gio/gio.symbols | 1 - + 6 files changed, 32 insertions(+), 31 deletions(-) + +commit 5668d52babfd40ac502463006f964665f3561008 +Author: Fran Diéguez +AuthorDate: Mon Aug 23 02:24:25 2010 +0200 +Commit: Fran Diéguez +CommitDate: Mon Aug 23 02:24:25 2010 +0200 + + Updated galician translations + + po/gl.po | 47 +++++++++++++++++++++++------------------------ + 1 file changed, 23 insertions(+), 24 deletions(-) + +commit ff59b66ebaaf580cb355f187e83ce36b198ee880 +Author: Jorge González +AuthorDate: Sun Aug 22 21:17:53 2010 +0200 +Commit: Jorge González +CommitDate: Sun Aug 22 21:17:53 2010 +0200 + + Updated Spanish translation + + po/es.po | 160 + +++++++++++++++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 130 insertions(+), 30 deletions(-) + +commit 3ff9894826215790fdd6c8b53584f94a7172c39f +Author: David Zeuthen +AuthorDate: Thu Aug 5 20:37:27 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Aug 5 20:37:27 2010 -0400 + + Bug 624546 – Modification of GDBusMessage in filter function + + Allow modifying a GDBusMessage in a filter function and also add tests + for this. This breaks API but leaves ABI (almost) intact - at least + dconf's GSettings backend (the only big user I know of) will keep + working. + + https://bugzilla.gnome.org/show_bug.cgi?id=624546 + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdbusconnection.c | 85 +++++++++++++++------ + gio/gdbusconnection.h | 18 +++-- + gio/gdbusprivate.c | 59 +++++++++++---- + gio/gdbusprivate.h | 6 +- + gio/gio.symbols | 1 + + gio/gioenums.h | 25 ++++++ + gio/tests/gdbus-connection.c | 147 + +++++++++++++++++++++++++++++++++++- + gio/tests/gdbus-peer.c | 4 +- + 9 files changed, 298 insertions(+), 48 deletions(-) + +commit 6d359d60290f5651b868d326e1e9514f68dfaa32 +Author: Ask H. Larsen +AuthorDate: Sun Aug 22 13:17:24 2010 +0200 +Commit: Kenneth Nielsen +CommitDate: Sun Aug 22 13:17:24 2010 +0200 + + Updated Danish translation + + po/da.po | 2102 + +++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 1310 insertions(+), 792 deletions(-) + +commit ef16ea4616b6d47b533474dd163ae23add7037bc +Author: Matthias Clasen +AuthorDate: Sat Aug 21 22:22:25 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 21 22:22:25 2010 -0400 + + Add proxy extension point to overview docs + + The 'Extending GIO' section is supposed to list all extension + points, so add the proxy extension point here. + + docs/reference/gio/overview.xml | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit 040bffed38529f18d71713fce994b8ea705dbfb6 +Author: Matthias Clasen +AuthorDate: Sat Aug 21 22:14:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 21 22:14:28 2010 -0400 + + Fix build on !unix + + There was one code block still referring to fd_list outside of + the ifdef G_OS_UNIX. Pointed out by Sam Thursfield in bug 627392. + + gio/gdbusprivate.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 41ce91d0579aa05b89e357c9fd59d9530ad7bf76 +Author: Matthias Clasen +AuthorDate: Sat Aug 21 22:09:32 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 21 22:09:32 2010 -0400 + + Better fix for the build problem + + Use gnetworkingprivate.h instead, patch by Emilio Pozuelo Monfort, + bug 627407. + + gio/tests/gdbus-peer.c | 11 +---------- + 1 file changed, 1 insertion(+), 10 deletions(-) + +commit 3d01283f6908000e0a989ba22769c869461be398 +Author: Matthias Clasen +AuthorDate: Sat Aug 21 22:06:56 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 21 22:06:56 2010 -0400 + + Make gdbus-peer build on !linux + + Based on a patch by Koop Mast, bug 627088. + + gio/tests/gdbus-peer.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 61de05e774829f1687244b014732490005cf4b48 +Author: Matthias Clasen +AuthorDate: Sat Aug 21 21:58:51 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 21 21:58:51 2010 -0400 + + Fix a duplicate word + + Pointed out in bug 627604. + + gio/gdbusmessage.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a54e2c4fb302ebbeae3e28c70f2342a57edb7521 +Author: Matthias Clasen +AuthorDate: Sat Aug 21 19:27:11 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 21 19:27:11 2010 -0400 + + Add some more annotations + + gio/gactiongroup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 892f9b64584b7a05c517f19f8a9a22d8533a6413 +Author: Matthias Clasen +AuthorDate: Sat Aug 21 19:18:40 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 21 19:18:40 2010 -0400 + + Improve test coverage for actions and action groups + + gio/tests/actions.c | 116 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 116 insertions(+) + +commit 33b775308bd97c02ecdd6de4f91a619c8fcdc282 +Author: Matthias Clasen +AuthorDate: Sat Aug 21 19:18:17 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 21 19:18:17 2010 -0400 + + Document behaviour wrt. to floating variants + + gio/gaction.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 9581b33ca5c2cc56d0e6f1fef5d437f856928494 +Author: Matthias Clasen +AuthorDate: Sat Aug 21 19:11:03 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 21 19:11:03 2010 -0400 + + Document behaviour wrt to floating variants + + gio/gactiongroup.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit e8ffb1ae83cf63837254ee5979798b2ada18c38a +Author: Matthias Clasen +AuthorDate: Sat Aug 21 16:30:50 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 21 18:12:18 2010 -0400 + + Add some annotations + + gio/gaction.c | 18 +++++++++++------- + 1 file changed, 11 insertions(+), 7 deletions(-) + +commit 5b38bc5ad5181bb4900c1da898b2e4fcdcec1757 +Author: Ryan Lortie +AuthorDate: Sat Aug 21 17:35:32 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Aug 21 17:35:32 2010 -0400 + + Simplify/fix state logic in GAction, test it. + + gio/gaction.c | 55 + ++++++++++++++++++++++++++++++++++------------------- + gio/tests/actions.c | 35 ++++++++++++++++++++++++++++++++++ + 2 files changed, 70 insertions(+), 20 deletions(-) + +commit 3c5388d9f41b39c939cb67c5fa28cf38ec832cd0 +Author: Matthias Clasen +AuthorDate: Sat Aug 21 15:40:46 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 21 15:40:46 2010 -0400 + + Add some forgotten symbols + + docs/reference/gio/gio-sections.txt | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit bff2af486827499c2da507f17e61fc88c96b43ba +Author: Matthias Clasen +AuthorDate: Sat Aug 21 15:40:32 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 21 15:40:32 2010 -0400 + + Ignore some more private headers + + docs/reference/gio/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit b876e47e3b623b50dcced6c1c8f6f953c1113753 +Author: Matthias Clasen +AuthorDate: Sat Aug 21 15:34:40 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 21 15:34:40 2010 -0400 + + Fix documentation issues + + Gtk-doc is unhappy if the parameter names don't match between header + and source. + + gio/gnetworkservice.c | 4 +++- + gio/gproxy.c | 18 +++++++++--------- + 2 files changed, 12 insertions(+), 10 deletions(-) + +commit 4831a102e51825b79d39686983326bcf82490ede +Author: Matthias Clasen +AuthorDate: Sat Aug 21 15:34:18 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 21 15:34:18 2010 -0400 + + Fix GActionGroup docs + + gio/gactiongroup.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit fceea19be5a7744904f793e38e090b627b8c0ed8 +Author: Милош Поповић +AuthorDate: Sat Aug 21 20:05:14 2010 +0200 +Commit: Милош Поповић +CommitDate: Sat Aug 21 20:05:14 2010 +0200 + + Updated Serbian translation + + po/sr.po | 1756 + ++++++++++++++++++++++++++++++++++--------------------- + po/sr@latin.po | 1767 + +++++++++++++++++++++++++++++++++++--------------------- + 2 files changed, 2185 insertions(+), 1338 deletions(-) + +commit de07279709d35aeb28dfb60ea836cd043eb4cfc2 +Author: Chao-Hsiung Liao +AuthorDate: Sat Aug 21 19:43:37 2010 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Sat Aug 21 19:43:37 2010 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 951 + ++++++++++++++++++++++++++++++++++++++++------------------- + po/zh_TW.po | 964 + +++++++++++++++++++++++++++++++++++++++++------------------- + 2 files changed, 1305 insertions(+), 610 deletions(-) + +commit 276a9ba385a2cde538c7d5176ea5ee761c21e9ed +Author: Yaron Shahrabani +AuthorDate: Sat Aug 21 02:35:07 2010 +0300 +Commit: Yaron Shahrabani +CommitDate: Sat Aug 21 02:35:07 2010 +0300 + + Updated Hebrew translation. + + po/he.po | 157 + +++++++++++++++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 127 insertions(+), 30 deletions(-) + +commit 8524f0dc0d0c2742a90a3fee6dbb7fe290dfb8dd +Author: Fran Diéguez +AuthorDate: Fri Aug 20 13:23:11 2010 +0200 +Commit: Fran Diéguez +CommitDate: Fri Aug 20 13:23:11 2010 +0200 + + Updated galician translations + + po/gl.po | 396 + ++++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 254 insertions(+), 142 deletions(-) + +commit 8f5ec0dad328cbb498fe2f60bd465f0e4c5d4cad +Author: Dan Winship +AuthorDate: Thu Aug 19 18:24:53 2010 -0400 +Commit: Dan Winship +CommitDate: Thu Aug 19 18:24:53 2010 -0400 + + Fix misc compiler warnings in (mostly) test programs + + gio/gdbusmessage.c | 2 +- + gio/gio.symbols | 1 - + gio/tests/file.c | 17 +++++++++++++++-- + gio/tests/g-icon.c | 2 +- + glib/tests/date.c | 2 +- + glib/tests/node.c | 2 +- + glib/tests/shell.c | 4 ++-- + tests/gobject/ifaceproperties.c | 2 +- + 8 files changed, 22 insertions(+), 10 deletions(-) + +commit 22b3f0d4b26d0b729c1850f45670a9050dc10772 +Author: Dan Winship +AuthorDate: Thu Aug 19 17:51:24 2010 -0400 +Commit: Dan Winship +CommitDate: Thu Aug 19 17:51:24 2010 -0400 + + gio.symbols: add missing g_simple_action_group stuff + + gio/gio.symbols | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit ab778737aa6d145a0d19d0775270959a72716260 +Author: Dan Winship +AuthorDate: Thu Aug 19 17:51:01 2010 -0400 +Commit: Dan Winship +CommitDate: Thu Aug 19 17:51:01 2010 -0400 + + gproxyaddressenumerator.h: add missing G_END_DECLS + + gio/gproxyaddressenumerator.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit de1598a34d920882991d6b5166bce815ca4aa428 +Author: Nicolas Dufresne +AuthorDate: Thu Aug 19 17:31:42 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 17:31:42 2010 -0400 + + gio/proxy: Fixed compilation warnings + + * Wrong return type (NULL instead of FALSE) + * Unused static function declaration + + gio/gproxy.c | 2 +- + gio/gsocks4proxy.c | 2 -- + 2 files changed, 1 insertion(+), 3 deletions(-) + +commit 0958e663175fe51361aa1e6a87a3f3c5de08bebf +Author: Nicolas Dufresne +AuthorDate: Thu Aug 19 16:23:50 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:38 2010 -0400 + + Add support for g_socket_client_add_application_proxy() + + This allow application to take control over certain proxy protocol + handling. When a proxy protocol must be used and is found in the + application proxies, GSocketClient will simply TCP connect to + the proxy + server and return the connection. + + Reviewed-by: Dan Winship + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 1 + + gio/gsocketclient.c | 41 + +++++++++++++++++++++++++++++++++++-- + gio/gsocketclient.h | 2 ++ + 4 files changed, 43 insertions(+), 2 deletions(-) + +commit ced1d0e2e7d164873d8b7e335a00cfac13785760 +Author: Nicolas Dufresne +AuthorDate: Tue May 25 16:02:42 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:38 2010 -0400 + + Implemented SOCKSv4 and SOCKSv4a + + gio/Makefile.am | 4 + + gio/giomodule.c | 4 + + gio/gsocks4aproxy.c | 495 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gsocks4aproxy.h | 55 ++++++ + gio/gsocks4proxy.c | 73 ++++++++ + gio/gsocks4proxy.h | 44 +++++ + po/POTFILES.in | 1 + + 7 files changed, 676 insertions(+) + +commit e2a90bcb5fc50f099cbf8df01a09697f7e48522d +Author: Nicolas Dufresne +AuthorDate: Fri May 7 16:35:04 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:38 2010 -0400 + + Implemented proxy sample code that connect to proxy + + gio/tests/proxy.c | 83 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 83 insertions(+) + +commit 0ebb79a7488121ae4a18cc84ac92e25ddb2b9544 +Author: Nicolas Dufresne +AuthorDate: Thu Apr 29 18:51:42 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:37 2010 -0400 + + Implemented g_socket_client_connect_to_uri() method + + Using this rather than g_socket_client_connect() or + g_socket_client_connect_to_host() allows #GSocketClient to + determine when to use application-specific proxy protocols. + + Reviewed-by: Dan Winship + + docs/reference/gio/gio-sections.txt | 3 + + gio/gio.symbols | 3 + + gio/gsocketclient.c | 122 + +++++++++++++++++++++++++++++++++++- + gio/gsocketclient.h | 14 +++++ + 4 files changed, 141 insertions(+), 1 deletion(-) + +commit a6c3820f46b9caabc45ab19aaf2669b4cb04c5d5 +Author: Nicolas Dufresne +AuthorDate: Tue Aug 10 16:48:45 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:37 2010 -0400 + + Hooked proxy enumeration into GSocketClient + + This functionnallity can be disabled using property enable-proxy. It + enumerates addresses using GSocketConnectable::proxy_enumerate() + instead of + enumerate(). When the returned address is of type GProxyAddress + (a type + based on GInetSocketAddress), it gets the proxy protocol handler using + g_proxy_get_default_for_protocol() and call connect() on it. + + Reviewed-by: Dan Winship + + docs/reference/gio/gio-sections.txt | 2 + + gio/gio.symbols | 2 + + gio/gsocketclient.c | 307 + ++++++++++++++++++++++++++++++++---- + gio/gsocketclient.h | 3 + + 4 files changed, 282 insertions(+), 32 deletions(-) + +commit ee3dbf747e48a41c916674f111906f57996fd626 +Author: Nicolas Dufresne +AuthorDate: Thu Jul 22 20:51:23 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:37 2010 -0400 + + Implement GProxyConnection a GIOStream+GTcpConn wrapper + + This class inherit from GTcpConnection by refing the socket of + an existing GTcpConnection and wraps a custom GIOStream into + itself. This + is to allow implementing proxies that alters data stream, like + when using + GSSAPI privacy inside SOCKS5. + + gio/Makefile.am | 2 + + gio/gproxyconnection.c | 155 + +++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gproxyconnection.h | 69 ++++++++++++++++++++++ + 3 files changed, 226 insertions(+) + +commit 6fa113660057e0e6592b180d1a2aead617e71dec +Author: Nicolas Dufresne +AuthorDate: Thu Apr 29 15:22:55 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:37 2010 -0400 + + Implemented SOCKSv5 proxy support + + gio/Makefile.am | 2 + + gio/giomodule.c | 2 + + gio/gsocks5proxy.c | 1053 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gsocks5proxy.h | 48 +++ + po/POTFILES.in | 1 + + 5 files changed, 1106 insertions(+) + +commit c32ef1d85e0b7cca02677bbe50fef2ef79a98002 +Author: Dan Winship +AuthorDate: Fri Jun 25 14:28:02 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:37 2010 -0400 + + GSocket: store the remote_address when connecting + + This way, if g_socket_connect() is called with a GProxyAddress, + g_socket_get_remote_address() will later return that same address. + + Reviewed-by: Nicolas Dufresne + + gio/gsocket.c | 51 +++++++++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 43 insertions(+), 8 deletions(-) + +commit b304a23af73374857e6bb18fc636d83fe9ed58ea +Author: Nicolas Dufresne +AuthorDate: Wed Apr 28 15:39:56 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:37 2010 -0400 + + Extend IO_ERROR enum for Proxy support + + gio/gioenums.h | 17 ++++++++++++++++- + gio/gioerror.c | 18 ++++++++++++++++++ + 2 files changed, 34 insertions(+), 1 deletion(-) + +commit 1094c84238e05304e4175990c5e0e018cdf97e28 +Author: Nicolas Dufresne +AuthorDate: Fri May 7 16:32:05 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:37 2010 -0400 + + Implemented proxy sample for all Connectables + + gio/tests/proxy.c | 309 + ++++++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 290 insertions(+), 19 deletions(-) + +commit fc03ecce831cd94639df1a355f5dd8c9b8eebfae +Author: Nicolas Dufresne +AuthorDate: Tue Aug 10 15:45:32 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:37 2010 -0400 + + Implemented proxy_enumerate() for all Connectables + + This patch implements method proxy_enumerate from GSocketConnectable + for + all connectables (GNetworkAddress, GNetworkService, GInetSocketAddress + and GUnixSocketAddress). + + Reviewed-by: Dan Winship + + docs/reference/gio/gio-sections.txt | 2 + + gio/gio.symbols | 2 + + gio/gnetworkaddress.c | 28 ++- + gio/gnetworkservice.c | 441 + +++++++++++++++++++++--------------- + gio/gnetworkservice.h | 2 + + gio/gsocketaddress.c | 42 +++- + 6 files changed, 329 insertions(+), 188 deletions(-) + +commit f82f484b8ffa18aab10e79baa96bcfa438f8dc5b +Author: Nicolas Dufresne +AuthorDate: Tue Aug 10 16:53:25 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:37 2010 -0400 + + Added proxy_enumerate method to GSocketConnectable + + Reviewed-by: Dan Winship + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 3 ++- + gio/gnetworkaddress.c | 2 +- + gio/gnetworkingprivate.h | 5 +++++ + gio/gsocketconnectable.c | 31 +++++++++++++++++++++++++++++++ + gio/gsocketconnectable.h | 8 +++++++- + 6 files changed, 47 insertions(+), 3 deletions(-) + +commit 6749ffce594b146ef49c8fe014bfa8b0272b6b9f +Author: Nicolas Dufresne +AuthorDate: Fri May 7 16:27:34 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:37 2010 -0400 + + Added GProxyAddressEnumerator to proxy sample code + + gio/tests/proxy.c | 133 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 133 insertions(+) + +commit a7e0e8fc0852255d430daa90e7345db67a2a9594 +Author: Nicolas Dufresne +AuthorDate: Tue Aug 10 15:25:11 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:37 2010 -0400 + + Adding GProxyAddressEnumerator class + + An implementation of GSocketAddressEnumerator that handles proxy + enumeration. This class is mainly usefull for Connectables + implementation + such as NetworkService, NetworkAddress and SocketAddress to handle + proxies. + + Reviewed-by: Dan Winship + + docs/reference/gio/gio-sections.txt | 13 +- + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gio.symbols | 6 + + gio/giotypes.h | 1 + + gio/gproxyaddressenumerator.c | 728 + ++++++++++++++++++++++++++++++++++++ + gio/gproxyaddressenumerator.h | 73 ++++ + 8 files changed, 824 insertions(+), 1 deletion(-) + +commit d76de5e3591431c03a5812acd7682f2ff68fba69 +Author: Nicolas Dufresne +AuthorDate: Tue Aug 10 15:24:37 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:37 2010 -0400 + + Added GProxy interface for proxy extension point + + Implement an extension point for proxy protocol implementation. This + is mainly useful for socket-based proxy where it is possible to + use the + proxied socket the same way it would for other stream based socket. + + Reviewed-by: Dan Winship + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 19 ++++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gio.symbols | 11 ++ + gio/giomodule.c | 4 + + gio/giotypes.h | 1 + + gio/gproxy.c | 208 + ++++++++++++++++++++++++++++++++++++ + gio/gproxy.h | 123 +++++++++++++++++++++ + 10 files changed, 371 insertions(+) + +commit 63105d1074ce54fdda9c81bb0353abc9b0a24d62 +Author: Nicolas Dufresne +AuthorDate: Tue Aug 10 15:23:37 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:37 2010 -0400 + + Added method g_network_address_parse_uri() + + This method allow creating a network address from a URI. If no port is + found in the URI, the default_port parameter will be used. Note + that new + property scheme is there for future TLS implementation. + + Reviewed-by: Dan Winship + + docs/reference/gio/gio-sections.txt | 2 + + gio/gio.symbols | 2 + + gio/gnetworkaddress.c | 296 + ++++++++++++++++++++++++++++++++++++ + gio/gnetworkaddress.h | 4 + + 4 files changed, 304 insertions(+) + +commit 466111c9605ace99389d56ace213621db01e18d9 +Author: Nicolas Dufresne +AuthorDate: Mon Apr 26 17:27:33 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:37 2010 -0400 + + Implement GProxyAddress + + A GSocketInetAddress representing the proxy server address with + additional + properties proxy type, destination address and port, username and + password. + + Reviewed-by: Dan Winship + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 23 +++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gio.symbols | 12 ++ + gio/giotypes.h | 1 + + gio/gproxyaddress.c | 345 + ++++++++++++++++++++++++++++++++++++ + gio/gproxyaddress.h | 76 ++++++++ + 9 files changed, 462 insertions(+) + +commit 6b1d851cc5ba8ce4276f2e3236da7554b763cf0c +Author: Nicolas Dufresne +AuthorDate: Fri May 7 16:23:45 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:36 2010 -0400 + + Implemented proxy sample code + + Reviewed-by: Dan Winship + + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 5 ++ + gio/tests/proxy.c | 175 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 181 insertions(+) + +commit f3debedfd2a3197230ac6f09f56741c3eda61e29 +Author: Nicolas Dufresne +AuthorDate: Fri May 7 15:55:54 2010 -0400 +Commit: Nicolas Dufresne +CommitDate: Thu Aug 19 16:32:36 2010 -0400 + + Implemented proxy-resolver extension point + + This extension point allow extending GLib with library like LibProxy + that + interprets system proxy settings and finds the appropriate + configuration + based on the type of connection being made. + + Reviewed-by: Dan Winship + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 20 +++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 4 + + gio/gdummyproxyresolver.c | 156 +++++++++++++++++++++++ + gio/gdummyproxyresolver.h | 54 ++++++++ + gio/gio.h | 1 + + gio/gio.symbols | 11 ++ + gio/giomodule.c | 7 ++ + gio/giotypes.h | 9 ++ + gio/gproxyresolver.c | 241 + ++++++++++++++++++++++++++++++++++++ + gio/gproxyresolver.h | 96 ++++++++++++++ + 12 files changed, 601 insertions(+) + +commit f82740f7beeac91398fc152a3efef0918540cd7b +Author: Jorge González +AuthorDate: Thu Aug 19 21:17:09 2010 +0200 +Commit: Jorge González +CommitDate: Thu Aug 19 21:17:09 2010 +0200 + + Updated Spanish translation + + po/es.po | 295 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 150 insertions(+), 145 deletions(-) + +commit b4b5ca4fd89a469c423df9d917af0c523196aab5 +Author: Yaron Shahrabani +AuthorDate: Thu Aug 19 09:31:02 2010 +0300 +Commit: Yaron Shahrabani +CommitDate: Thu Aug 19 09:31:02 2010 +0300 + + Updated Hebrew translation. + + po/he.po | 285 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 146 insertions(+), 139 deletions(-) + +commit 7d6a6ca57b5a5dc1ad55a785dfd79fa98d7e4093 +Author: David Zeuthen +AuthorDate: Wed Aug 18 13:07:25 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Aug 18 13:09:04 2010 -0400 + + Bug 627188 – gdbus-non-socket test occasionally fails + + Fix logical bug in test case to avoid race condition between the + client and the server. + + Signed-off-by: David Zeuthen + + gio/tests/gdbus-non-socket.c | 19 +++++++++++++++---- + 1 file changed, 15 insertions(+), 4 deletions(-) + +commit 6c340c0b0312fc12f01ba1887e559fd36fcf28cb +Author: Matthias Clasen +AuthorDate: Wed Aug 18 12:07:01 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Aug 18 12:07:38 2010 -0400 + + Make gunixcredentialsmessage.h standalone includable + + gio/gunixcredentialsmessage.h | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 81b91a8852c0840d907c8192c67b2e65b29d41c6 +Author: Emmanuele Bassi +AuthorDate: Wed Aug 18 16:54:36 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Aug 18 16:55:40 2010 +0100 + + action: Minor fixes + + • Argument validation. + + • Since: annotations. + + • Remove (allow-none) annotations from return values. + + • Coding style fixes. + + gio/gaction.c | 89 +++++++++++++++++++++---------- + gio/gactiongroup.c | 154 + ++++++++++++++++++++++++++++++++++++----------------- + 2 files changed, 166 insertions(+), 77 deletions(-) + +commit 504117e284682bff973ad73646fa67103978d016 +Author: Emmanuele Bassi +AuthorDate: Wed Aug 18 16:54:11 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Aug 18 16:55:40 2010 +0100 + + action-group: Check aginst the correct GType macro + + G_TYPE_ACTION_GROUP is not a G_TYPE_ACTION. + + gio/gactiongroup.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5bb94348f4760352f6ae974002db48cb130343a4 +Author: David Zeuthen +AuthorDate: Wed Aug 18 11:35:25 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Aug 18 11:35:25 2010 -0400 + + GDBusProxy: Call into well-known name if no name owner currently + exists + + This is really what (API) users expect from GDBusProxy - in + particular, mclasen and I ran into this problem while debugging a + upower issue, see + + https://bugzilla.redhat.com/show_bug.cgi?id=624125 + + In a nutshell, the problem is that polkitd crashes while upower holds + a PolkitAuthority object (which in turns contains a GDBusProxy for the + well-known name org.freedesktop.PolicyKit1). This means that + subsequent calls on the PolkitAuthority (which is translated into + calls into the GDBusProxy) fails since :g-name-owner is NULL. + + With this fix, we'll be requesting the bus daemon to launch polkitd + since we will start calling into org.freedesktop.PolicyKit1 as soon as + we notice that there is no owner for this name. + + Unfortunately our test suite doesn't cover service activation so there + is no way to reliably test this. I will file a bug about this. + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 108 + ++++++++++++++++++++++++++++++++++++++++--------------- + 1 file changed, 80 insertions(+), 28 deletions(-) + +commit c2945808acc09562fad0ecd1247fcc3e53eeb913 +Author: David Zeuthen +AuthorDate: Wed Aug 18 10:52:28 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Aug 18 10:52:28 2010 -0400 + + GDBusProxy: Use %, not #, for referencing enum constants in gtk-doc + comments + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit a35efb0939c05d572b3a601fb3de62c599d2cf9c +Author: Christian Persch +AuthorDate: Wed Aug 18 01:02:22 2010 +0200 +Commit: Christian Persch +CommitDate: Wed Aug 18 15:32:07 2010 +0200 + + G_OPTION_FLAG_NO_ARG is only for callback options + + Bug #627252. + + glib/tests/option-context.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit 5db9e5ad58040b5ccdba73c59a76522f9c35aa34 +Author: Ryan Lortie +AuthorDate: Wed Aug 18 02:15:09 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Aug 18 02:18:54 2010 -0400 + + add GSimpleActionGroup + + and a simple test + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 28 +++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/giotypes.h | 1 + + gio/gsimpleactiongroup.c | 401 + ++++++++++++++++++++++++++++++++++++ + gio/gsimpleactiongroup.h | 91 ++++++++ + gio/tests/actions.c | 28 +++ + 9 files changed, 554 insertions(+) + +commit 972c563f2328e5d1e176d99dd8abaf490b5db324 +Author: Ryan Lortie +AuthorDate: Wed Aug 18 02:14:37 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Aug 18 02:14:37 2010 -0400 + + add some missed bits in the docs + + docs/reference/gio/gio-sections.txt | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit e1ded9f900349a64d25f659b0515e61956325557 +Author: Ryan Lortie +AuthorDate: Wed Aug 18 01:56:34 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Aug 18 01:56:34 2010 -0400 + + add gaction.h to gio.h + + gio/gio.h | 1 + + 1 file changed, 1 insertion(+) + +commit 8014e9c6e67958103ef490e1bc753e4426751751 +Author: Ryan Lortie +AuthorDate: Wed Aug 18 01:55:48 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Aug 18 01:55:48 2010 -0400 + + add testcase for GAction + + fix some small bugs it found + + gio/gaction.c | 9 ++++-- + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 3 ++ + gio/tests/actions.c | 81 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 91 insertions(+), 3 deletions(-) + +commit 8475d6d7d05f00e6fd43ffe882b47025330caa6f +Author: Ryan Lortie +AuthorDate: Wed Aug 18 01:45:15 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Aug 18 01:45:15 2010 -0400 + + add GAction base class + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 31 ++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gaction.c | 597 + ++++++++++++++++++++++++++++++++++++ + gio/gaction.h | 120 ++++++++ + gio/gio.symbols | 17 + + gio/giotypes.h | 1 + + 8 files changed, 770 insertions(+) + +commit a3f4ff52ca7e8cea8db6374d55d44729936da243 +Author: Ryan Lortie +AuthorDate: Wed Aug 18 01:07:07 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Aug 18 01:07:07 2010 -0400 + + gio.symbols: Fix missed symbol name tweak + + gio/gio.symbols | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6e04125e3543fd59a067abefc72011433a7db915 +Author: Ryan Lortie +AuthorDate: Wed Aug 18 00:37:50 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Aug 18 00:37:50 2010 -0400 + + pad the GActionGroup vtable + + gio/gactiongroup.h | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 6fe74a4c6ab9895f77e889253ad9a369a0f9d1cc +Author: Ryan Lortie +AuthorDate: Wed Aug 18 00:33:17 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Aug 18 00:33:17 2010 -0400 + + Add gactiongroup.h to gio.h + + gio/gio.h | 1 + + 1 file changed, 1 insertion(+) + +commit e71dbb97326f767881142cb24cf0850ee8c40008 +Author: Ryan Lortie +AuthorDate: Wed Aug 18 00:30:44 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Aug 18 00:31:33 2010 -0400 + + add GActionGroup base class + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 38 +++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 14 +- + gio/gactiongroup.c | 453 + ++++++++++++++++++++++++++++++++++++ + gio/gactiongroup.h | 173 ++++++++++++++ + gio/gio-marshal.list | 1 + + gio/gio.symbols | 20 ++ + gio/giotypes.h | 1 + + 9 files changed, 699 insertions(+), 3 deletions(-) + +commit ddad707b85bf2075c0ca37b4a2267c6eac60a358 +Author: Dan Winship +AuthorDate: Tue Aug 17 18:38:34 2010 -0400 +Commit: Dan Winship +CommitDate: Tue Aug 17 18:38:34 2010 -0400 + + update gio/tests/.gitignore + + gio/tests/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit c56379264dd8714bdf08675927a5e59debaa7fc3 +Author: Christian Persch +AuthorDate: Tue Aug 17 18:38:46 2010 +0200 +Commit: Christian Persch +CommitDate: Wed Aug 18 00:13:41 2010 +0200 + + Plug a mem leak in GDBusWorker + + Free the read buffer. + + ==26538== 4,096 bytes in 1 blocks are definitely lost in loss record + 781 of 781 + ==26538== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==26538== by 0x4005C66: realloc (vg_replace_malloc.c:476) + ==26538== by 0x405244D: g_realloc (gmem.c:181) + ==26538== by 0x420E066: _g_dbus_worker_do_read_unlocked + (gdbusprivate.c:780) + ==26538== by 0x420E1D1: _g_dbus_worker_do_read (gdbusprivate.c:812) + ==26538== by 0x420F14A: _g_dbus_worker_thread_begin_func + (gdbusprivate.c:1318) + ==26538== by 0x420D2ED: invoke_caller (gdbusprivate.c:266) + ==26538== by 0x404DA7C: g_idle_dispatch (gmain.c:4224) + ==26538== by 0x4049FCD: g_main_dispatch (gmain.c:2119) + ==26538== by 0x404B2C1: g_main_context_dispatch (gmain.c:2672) + ==26538== by 0x404B716: g_main_context_iterate (gmain.c:2750) + ==26538== by 0x404BE7F: g_main_loop_run (gmain.c:2958) + ==26538== by 0x420D2B5: shared_thread_func (gdbusprivate.c:248) + ==26538== by 0x4077958: g_thread_create_proxy (gthread.c:1897) + ==26538== by 0x57D918: start_thread (pthread_create.c:301) + ==26538== by 0x4C6CBD: clone (clone.S:133) + + Bug #627187. + + gio/gdbusprivate.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit a91a4a420e8ba6428e7db13bd9c308256cfbb323 +Author: Christian Persch +AuthorDate: Tue Aug 17 18:29:14 2010 +0200 +Commit: Christian Persch +CommitDate: Wed Aug 18 00:13:41 2010 +0200 + + Plug a mem leak in gdbus-connection test + + ==26538== 145 (24 direct, 121 indirect) bytes in 1 blocks are + definitely lost in loss record 765 of 790 + ==26538== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==26538== by 0x405233C: g_malloc (gmem.c:134) + ==26538== by 0x406A57E: g_slice_alloc (gslice.c:836) + ==26538== by 0x406A60C: g_slice_copy (gslice.c:858) + ==26538== by 0x4035C5A: g_error_copy (gerror.c:160) + ==26538== by 0x41B6387: g_simple_async_result_set_from_error + (gsimpleasyncresult.c:638) + ==26538== by 0x41FCDEB: g_dbus_connection_call_done + (gdbusconnection.c:4808) + ==26538== by 0x41B682E: g_simple_async_result_complete + (gsimpleasyncresult.c:762) + ==26538== by 0x41B686A: complete_in_idle_cb + (gsimpleasyncresult.c:772) + ==26538== by 0x404DA7C: g_idle_dispatch (gmain.c:4224) + ==26538== by 0x4049FCD: g_main_dispatch (gmain.c:2119) + ==26538== by 0x404B2C1: g_main_context_dispatch (gmain.c:2672) + ==26538== by 0x404B716: g_main_context_iterate (gmain.c:2750) + ==26538== by 0x404BE7F: g_main_loop_run (gmain.c:2958) + ==26538== by 0x804B5CC: test_connection_send + (gdbus-connection.c:407) + ==26538== by 0x4073D04: test_case_run (gtestutils.c:1174) + + Bug #627187. + + gio/tests/gdbus-connection.c | 1 + + 1 file changed, 1 insertion(+) + +commit 75563e81c2b6bab345e08daafd3206cec699f2ea +Author: Christian Persch +AuthorDate: Tue Aug 17 18:20:23 2010 +0200 +Commit: Christian Persch +CommitDate: Wed Aug 18 00:13:41 2010 +0200 + + Plug a mem leak in gdbus-connection test + + ==25403== 49 (24 direct, 25 indirect) bytes in 1 blocks are definitely + lost in loss record 603 of 787 + ==25403== at 0x4005BDC: malloc (vg_replace_malloc.c:195) + ==25403== by 0x405233C: g_malloc (gmem.c:134) + ==25403== by 0x406A57E: g_slice_alloc (gslice.c:836) + ==25403== by 0x406A5C3: g_slice_alloc0 (gslice.c:848) + ==25403== by 0x4035B4E: g_error_new_literal (gerror.c:117) + ==25403== by 0x4035ED9: g_set_error_literal (gerror.c:314) + ==25403== by 0x41F6434: g_dbus_connection_close_sync + (gdbusconnection.c:1284) + ==25403== by 0x804A861: test_connection_life_cycle + (gdbus-connection.c:158) + ==25403== by 0x4073D04: test_case_run (gtestutils.c:1174) + ==25403== by 0x4073FC2: g_test_run_suite_internal + (gtestutils.c:1223) + ==25403== by 0x4074077: g_test_run_suite_internal + (gtestutils.c:1233) + ==25403== by 0x4074077: g_test_run_suite_internal + (gtestutils.c:1233) + ==25403== by 0x40741FB: g_test_run_suite (gtestutils.c:1274) + ==25403== by 0x40733E5: g_test_run (gtestutils.c:877) + ==25403== by 0x804DC92: main (gdbus-connection.c:1024) + + Bug #627187. + + gio/tests/gdbus-connection.c | 1 + + 1 file changed, 1 insertion(+) + +commit a62a2fd8edc0ca771ca1c1df1889766f3c73b0e4 +Author: Christian Persch +AuthorDate: Tue Aug 17 18:08:07 2010 +0200 +Commit: Christian Persch +CommitDate: Wed Aug 18 00:13:41 2010 +0200 + + Plug a mem leak in the gdbus-connection test + + Bug #627182. + + gio/tests/gdbus-connection.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 7191fc3f17d39a3fa27e990a3723403066d34826 +Author: Christian Persch +AuthorDate: Sun Jun 20 14:33:27 2010 +0200 +Commit: Christian Persch +CommitDate: Wed Aug 18 00:13:27 2010 +0200 + + Use g_memory_output_stream_steal_data here + + ... instead of one extra g_memdup(). + + Bug #627181. + + gio/gdbusmessage.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 71e73ffdfbd7a33f4e233cfe1353adf143a2c14c +Author: Christian Persch +AuthorDate: Sat May 24 16:08:28 2008 +0200 +Commit: Christian Persch +CommitDate: Wed Aug 18 00:12:28 2010 +0200 + + Use G_DEFINE_[BOXED|POINTER]_TYPE instead of handwritten code + + Now that we have convenience macros to implement boxed and pointer + types, use them. + + gio/gdbusintrospection.c | 17 +--- + gio/gfileattribute.c | 20 +---- + gio/gfileinfo.c | 20 +---- + gio/gsrvtarget.c | 17 +--- + gobject/gboxed.c | 215 + +++++++++-------------------------------------- + gobject/gsourceclosure.c | 14 +-- + gobject/gvaluetypes.c | 10 +-- + 7 files changed, 50 insertions(+), 263 deletions(-) + +commit dc1999316da0409c5bc15e37a0a568a8309bb5a3 +Author: Christian Persch +AuthorDate: Sat May 24 16:08:04 2008 +0200 +Commit: Christian Persch +CommitDate: Wed Aug 18 00:12:22 2010 +0200 + + Add G_DEFINE_{BOXED,POINTER}_TYPE[_WITH_CODE] + + Add convenience type definition macros for boxed and pointer types + similar to G_DEFINE_TYPE for object types. Bug #449565. + + docs/reference/gobject/gobject-sections.txt | 4 + + gobject/gtype.h | 110 + ++++++++++++++++++++++++++++ + 2 files changed, 114 insertions(+) + +commit cae86073eaf932b85836e98df8d87c65d90f5842 +Author: Christian Persch +AuthorDate: Thu May 13 19:57:41 2010 +0200 +Commit: Christian Persch +CommitDate: Tue Aug 17 17:37:32 2010 +0200 + + Add GZIP header processing to GZlibCompressor/GZlibDecompressor + + Add GZlibCompressor:file-info property. If it contains a non-NULL + GFileInfo, and the compressor is in GZIP mode, the filename and + modification time from the file info are written to the GZIP header + in the output data. + + Add GZlibDeompressor:file-info property. If the decompressor is + in GZIP + mode, and the GZIP data contains a GZIP header, the filename and + modification time are read from it, stored in a GFileInfo, and the + file-info property is notified. + + Bug #617691. + + docs/reference/gio/gio-sections.txt | 3 + + gio/gio.symbols | 3 + + gio/gzlibcompressor.c | 117 ++++++++++++++++++++++++++++++- + gio/gzlibcompressor.h | 5 ++ + gio/gzlibdecompressor.c | 134 + +++++++++++++++++++++++++++++++++--- + gio/gzlibdecompressor.h | 3 + + gio/tests/filter-cat.c | 38 +++++++++- + 7 files changed, 293 insertions(+), 10 deletions(-) + +commit b196cd74473cbc812359ee3b484a3986604e9aba +Author: Christian Persch +AuthorDate: Sun Jun 20 14:32:52 2010 +0200 +Commit: Christian Persch +CommitDate: Tue Aug 17 17:33:01 2010 +0200 + + Add g_memory_output_stream_steal_data + + Bug #622184. + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 1 + + gio/gmemoryoutputstream.c | 29 +++++++++++++++++++++++++++++ + gio/gmemoryoutputstream.h | 1 + + 4 files changed, 32 insertions(+) + +commit 322ac7ff68205daf52a2d0bcecc098edd6b413b9 +Author: Matthias Clasen +AuthorDate: Mon Aug 16 16:36:38 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 16 16:36:38 2010 -0400 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 503b0744744517ecf1c29eaa83e8e69537ae3547 +Author: Matthias Clasen +AuthorDate: Mon Aug 16 15:44:40 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 16 15:44:40 2010 -0400 + + Fix a typo + + NEWS | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e21e44fc2e96d86c9cdeb6b904b29fed70acec18 +Author: David Zeuthen +AuthorDate: Mon Aug 16 15:42:23 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon Aug 16 15:42:23 2010 -0400 + + Add NEWS item for bug 627071 + + Signed-off-by: David Zeuthen + + NEWS | 1 + + 1 file changed, 1 insertion(+) + +commit b8e7ef6e90512999be0340a6ef3f20e1783647c4 +Author: David Zeuthen +AuthorDate: Mon Aug 16 15:37:01 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon Aug 16 15:38:02 2010 -0400 + + Bug 627071 – g_output_stream_write() clarification + + This patch guarantees that g_output_stream_write() can never fail with + G_IO_ERROR_WOULD_BLOCK. Without such a guarantee, we would need some + kind of GIOPollable interface or some way to get an event when the + stream is writable again. Which is mostly useless considering that + this method is asynchronous anyway. + + Note: this patch just codifies existing behavior - GUnixOutputStream, + GSocketOutputStream and other implementations already work this way. + + See also bug 626748 comment 5 for how the GDBus code relies on this + guarantee. + + https://bugzilla.gnome.org/show_bug.cgi?id=627071 + + Signed-off-by: David Zeuthen + + gio/goutputstream.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 285170637de0df2011b9b667cab5c68640832580 +Author: Matthias Clasen +AuthorDate: Mon Aug 16 15:32:13 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 16 15:32:13 2010 -0400 + + More NEWS + + NEWS | 1 + + 1 file changed, 1 insertion(+) + +commit 789c0cc877a41a65417b0ee1d6eed5803c48c238 +Author: Matthias Clasen +AuthorDate: Mon Aug 16 15:28:36 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 16 15:30:04 2010 -0400 + + Fix a doc format issue + + glib/gregex.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d848a5eade18ba4567899601d5e34e381a636817 +Author: Matthias Clasen +AuthorDate: Mon Aug 16 15:16:16 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 16 15:30:04 2010 -0400 + + Update NEWS for 2.25.14 + + NEWS | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 8a3a4596e2e3a718d77bf214c6e2d16c21856da2 +Author: David Zeuthen +AuthorDate: Mon Aug 16 13:43:35 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon Aug 16 13:54:13 2010 -0400 + + Bug 626748 – Use async methods for writing and handle EAGAIN + + If sending a lot of data and/or the other peer is not reading it, then + socket buffers can overflow. This is communicated from the kernel by + returning EAGAIN. In GIO, it is modelled by g_output_stream_write() + and g_socket_send_message() returning G_IO_ERROR_WOULD_BLOCK. + + It is also problematic that that we're using synchronous IO in the + shared GDBus IO thread. It means that one GDBusConnection can lock up + others. + + It turns out that by porting from g_output_stream_write() to + g_output_stream_write_async() we fix the EAGAIN issue. For GSocket, we + still need to handle things manually (by creating a GSource) as + g_socket_send_message() is used. + + We check the new behavior in Michael's producer/consumer test case (at + /gdbus/overflow in gdbus-peer.c) added in the last commit. + + Also add a test case that sends and receives a 20 MiB message. + + Also add a new `transport' G_DBUS_DEBUG option so it is easy to + inspect partial writes: + + $ G_DBUS_DEBUG=transport ./gdbus-connection -p + /gdbus/connection/large_message + [...] + ======================================================================== + GDBus-debug:Transport: + >>>> WROTE 128000 bytes of message with serial 4 and + size 20971669 from offset 0 on a GSocketOutputStream + ======================================================================== + GDBus-debug:Transport: + >>>> WROTE 128000 bytes of message with serial 4 and + size 20971669 from offset 128000 on a GSocketOutputStream + ======================================================================== + GDBus-debug:Transport: + >>>> WROTE 128000 bytes of message with serial 4 and + size 20971669 from offset 256000 on a GSocketOutputStream + [...] + ======================================================================== + GDBus-debug:Transport: + >>>> WROTE 43669 bytes of message with serial 4 and + size 20971669 from offset 20928000 on a GSocketOutputStream + [...] + ======================================================================== + GDBus-debug:Transport: + <<<< READ 16 bytes of message with serial 3 and + size 20971620 to offset 0 from a GSocketInputStream + ======================================================================== + GDBus-debug:Transport: + <<<< READ 15984 bytes of message with serial 3 and + size 20971620 to offset 16 from a GSocketInputStream + ======================================================================== + GDBus-debug:Transport: + <<<< READ 16000 bytes of message with serial 3 and + size 20971620 to offset 16000 from a GSocketInputStream + [...] + ======================================================================== + GDBus-debug:Transport: + <<<< READ 144000 bytes of message with serial 3 and + size 20971620 to offset 20720000 from a GSocketInputStream + ======================================================================== + GDBus-debug:Transport: + <<<< READ 107620 bytes of message with serial 3 and + size 20971620 to offset 20864000 from a GSocketInputStream + OK + + https://bugzilla.gnome.org/show_bug.cgi?id=626748 + + Signed-off-by: David Zeuthen + + docs/reference/gio/overview.xml | 4 + + gio/gdbusprivate.c | 589 + +++++++++++++++++++++++++++++++--------- + gio/gdbusprivate.h | 1 + + gio/tests/gdbus-connection.c | 80 ++++++ + gio/tests/gdbus-peer.c | 76 ++++-- + 5 files changed, 596 insertions(+), 154 deletions(-) + +commit a6264a3a19c29fc7c4fe0719a8c2ff1554924b12 +Author: David Zeuthen +AuthorDate: Mon Aug 16 12:30:25 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon Aug 16 12:30:25 2010 -0400 + + GSocket: Properly initialize msg.msg_control + + This patch fixes this problem + + Syscall param socketcall.sendmsg(msg.msg_control) points to + uninitialised byte(s) + at 0x3D5B00EA60: __sendmsg_nocancel (syscall-template.S:82) + by 0x53F9790: g_socket_send_message (gsocket.c:2918) + by 0x540FDD0: g_unix_connection_send_credentials + (gunixconnection.c:351) + by 0x542B93F: _g_dbus_auth_run_client (gdbusauth.c:618) + by 0x5438001: initable_init (gdbusconnection.c:2191) + by 0x53E09CC: g_initable_init (ginitable.c:105) + by 0x543F6E9: g_bus_get_sync (gdbusconnection.c:6091) + by 0x402C7E: test_connection_life_cycle (gdbus-connection.c:126) + by 0x4C7CABB: test_case_run (gtestutils.c:1174) + by 0x4C7CD84: g_test_run_suite_internal (gtestutils.c:1223) + by 0x4C7CE49: g_test_run_suite_internal (gtestutils.c:1233) + by 0x4C7CE49: g_test_run_suite_internal (gtestutils.c:1233) + Address 0x7fefff9fc is on thread 1's stack + + Signed-off-by: David Zeuthen + + gio/gsocket.c | 1 + + 1 file changed, 1 insertion(+) + +commit 4bc4590c7bb5d8e7c248347e4b702ab8b506d937 +Author: Matthias Clasen +AuthorDate: Mon Aug 16 10:21:38 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 16 10:21:38 2010 -0400 + + Declare stream base classes as abstract + + gio/gfilterinputstream.c | 2 +- + gio/gfilteroutputstream.c | 2 +- + gio/ginputstream.c | 2 +- + gio/giostream.c | 2 +- + gio/goutputstream.c | 2 +- + 5 files changed, 5 insertions(+), 5 deletions(-) + +commit 547311bfd8661e25e588e1f434f15c5f2f32c3a7 +Author: Dan Winship +AuthorDate: Thu Jun 24 13:09:14 2010 -0400 +Commit: Dan Winship +CommitDate: Sun Aug 15 15:34:29 2010 -0400 + + Always do async vs sync correctly in GSocketConnection streams + + Previously if a GSocketConnection had a blocking GSocket, it would + sometimes block during asynchonous I/O, and if it had a non-blocking + socket, it would sometimes return G_IO_ERROR_WOULD_BLOCK from + synchronous I/O. This fixes the connection to not depend on the socket + state. + + https://bugzilla.gnome.org/show_bug.cgi?id=616458 + + docs/reference/gio/gio-sections.txt | 2 ++ + gio/gio.symbols | 2 ++ + gio/gsocket.c | 70 + ++++++++++++++++++++++++++++++++++--- + gio/gsocket.h | 13 +++++++ + gio/gsocketinputstream.c | 16 +++++---- + gio/gsocketoutputstream.c | 16 +++++---- + 6 files changed, 101 insertions(+), 18 deletions(-) + +commit 17fea2f749a407a15a82977b3488530cd5305266 +Author: Dan Winship +AuthorDate: Sun Aug 15 07:57:37 2010 -0400 +Commit: Dan Winship +CommitDate: Sun Aug 15 13:11:49 2010 -0400 + + Belatedly add g_socket_client_get/set_timeout to docs and symbols + + docs/reference/gio/gio-sections.txt | 2 ++ + gio/gio.symbols | 2 ++ + 2 files changed, 4 insertions(+) + +commit b76b24f1b3f82c2400cce8948b44ae32aa0e23ee +Author: Dan Winship +AuthorDate: Sat Aug 14 16:15:39 2010 -0400 +Commit: Dan Winship +CommitDate: Sat Aug 14 16:15:39 2010 -0400 + + GSocketClient: plug two leaks + + g_socket_client_connect_async() was always leaking its GCancellable, + and would also leak any GSocket that eventually failed to connect + after returning G_IO_ERROR_PENDING. + + gio/gsocketclient.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 16bafb479995e69417b86b5b26682ec7c2ceb5a0 +Author: Dan Winship +AuthorDate: Sat Aug 14 15:04:24 2010 -0400 +Commit: Dan Winship +CommitDate: Sat Aug 14 15:26:16 2010 -0400 + + GSocketClient: add a timeout property + + GSocket has a timeout flag now, but when using GSocketClient there was + no way to set the timeout until after connecting (or failing). Fix + that by adding a timeout property to GSocketClient. + + gio/gsocketclient.c | 69 + ++++++++++++++++++++++++++++++++++++++++++++++++++- + gio/gsocketclient.h | 3 +++ + gio/tests/send-data.c | 5 ++++ + 3 files changed, 76 insertions(+), 1 deletion(-) + +commit 28a4fff7ec63000238c7e20ff965238027922c47 +Author: Will Thompson +AuthorDate: Fri Aug 13 23:34:44 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 23:34:44 2010 -0400 + + Add examples for GAsyncInitiable and GSimpleAsyncResult + + Bug 602417 + + gio/gasyncinitable.c | 94 ++++++++++++++++++++++++++++++++++++++++++ + gio/gsimpleasyncresult.c | 104 + ++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 197 insertions(+), 1 deletion(-) + +commit 7a32e34f7c46a4e1e2fe6f35490b1f8469ed08b7 +Author: Will Thompson +AuthorDate: Fri Aug 13 23:20:06 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 23:20:06 2010 -0400 + + Document that _complete() et al. ref the GSimpleAsyncResult + + gio/gsimpleasyncresult.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit ec31612ea00e2babd5d6b02d65966164594a03f8 +Author: Will Thompson +AuthorDate: Fri Aug 13 23:15:27 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 23:15:27 2010 -0400 + + _simple_async_result_is_valid: allow tag to be NULL + + Because g_simple_async_report_[g]error_in_idle() don't take a + source tag + parameter, code that uses them can't currently use + g_simple_async_result_is_valid() (at least, not for the error case). + + Bug 602417 + + gio/gsimpleasyncresult.c | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +commit c29d800d84d446d3762329815824a8be269c969b +Author: Simon McVittie +AuthorDate: Fri Aug 13 22:42:24 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 22:42:24 2010 -0400 + + GVariant: be more explicit about adopting and returning floating refs + + Bug: https://bugzilla.gnome.org/show_bug.cgi?id=622770 + + docs/reference/glib/gvariant-varargs.xml | 4 ++- + glib/gvariant.c | 53 + ++++++++++++++++++++------------ + 2 files changed, 37 insertions(+), 20 deletions(-) + +commit e02571e93bb4c1986ec1190fb6c7d02eba0c746a +Author: Matthias Clasen +AuthorDate: Fri Aug 13 21:22:45 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 21:23:23 2010 -0400 + + Add bug references to some tests + + gio/tests/async-close-output-stream.c | 8 ++++++++ + gio/tests/converter-stream.c | 4 ++++ + glib/tests/mem-overflow.c | 29 +++++++++++++++++++++++++++++ + gobject/tests/binding.c | 4 ++++ + 4 files changed, 45 insertions(+) + +commit ea8a963936655ee3c13c5552cce96c309f8a384f +Author: Matthias Clasen +AuthorDate: Fri Aug 13 21:21:43 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 21:23:22 2010 -0400 + + Document vendor override files + + Features without documentation, tsk tsk. + + docs/reference/gio/glib-compile-schemas.xml | 6 ++++ + gio/gsettings.c | 48 + ++++++++++++++++++++--------- + 2 files changed, 40 insertions(+), 14 deletions(-) + +commit 63d19f065690b77059c335c0378a93f1a18b09c9 +Author: Matthias Clasen +AuthorDate: Fri Aug 13 21:05:05 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 21:11:19 2010 -0400 + + Fix doc format errors + + glib/gconvert.c | 4 ++-- + glib/gregex.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 4160c5c74a06404037462dde572ec49663d685ea +Author: Matthias Clasen +AuthorDate: Fri Aug 13 19:40:48 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 19:40:48 2010 -0400 + + Add tests for async file replace and load + + gio/tests/file.c | 151 + ++++++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 143 insertions(+), 8 deletions(-) + +commit c003468296642dccdca230e5fbec22ceab0a9959 +Author: Matthias Clasen +AuthorDate: Fri Aug 13 17:22:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 17:23:44 2010 -0400 + + Correct a comment + + gio/inotify/inotify-kernel.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 93bd5298c7f78fd7cb12734b6f3df5aa93f2c82b +Author: Matthias Clasen +AuthorDate: Fri Aug 13 17:21:22 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 17:23:44 2010 -0400 + + Add an async file create/write/read/delete test + + gio/tests/file.c | 163 + ++++++++++++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 144 insertions(+), 19 deletions(-) + +commit 7ed4762190afca85424903a0977300585169b510 +Author: Matthias Clasen +AuthorDate: Fri Aug 13 17:19:01 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 17:23:44 2010 -0400 + + Fix a typo, and some doc reformatting + + gio/ginputstream.c | 32 ++++++++++++++++---------------- + 1 file changed, 16 insertions(+), 16 deletions(-) + +commit effdb785fd941daf5fdec7df434242de25e5127e +Author: Matthias Clasen +AuthorDate: Fri Aug 13 16:04:04 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 17:23:44 2010 -0400 + + Add some long descriptions for filter streams + + gio/gfilterinputstream.c | 4 ++++ + gio/gfilteroutputstream.c | 6 +++++- + 2 files changed, 9 insertions(+), 1 deletion(-) + +commit 13e55b84ebb1aa148260a7d21da6a592d1e1dadb +Author: Matthias Clasen +AuthorDate: Fri Aug 13 15:15:21 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 17:23:44 2010 -0400 + + Run volumemonitor test with local vfs + + This is an attempt to stop the test from hanging on some build bots + in build.gnome.org. + + gio/tests/volumemonitor.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit d344ff9d67a7e723a1c2163e7d9254dd6ef049d2 +Author: David Zeuthen +AuthorDate: Fri Aug 13 13:58:27 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri Aug 13 14:01:36 2010 -0400 + + Bug 626841 – Add test-case for non-socket GIOStream + + Also fix a couple of bugs so it actually works. + + https://bugzilla.gnome.org/show_bug.cgi?id=626841 + + Signed-off-by: David Zeuthen + + gio/gdbusprivate.c | 140 ++++++++--------- + gio/tests/Makefile.am | 6 +- + gio/tests/gdbus-non-socket.c | 346 + +++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 424 insertions(+), 68 deletions(-) + +commit 9be94e88999b5f10347b5c1b8542b88a35d3f93a +Author: Michael Meeks +AuthorDate: Fri Aug 13 17:56:19 2010 +0100 +Commit: Michael Meeks +CommitDate: Fri Aug 13 17:56:19 2010 +0100 + + Add test for EAGAIN overflow in gdbusconnection based on David's test. + + gio/tests/gdbus-peer.c | 110 + ++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 109 insertions(+), 1 deletion(-) + +commit 5d9d3f03182d732ad732370dffc7d268c9d65e9d +Author: Matthias Clasen +AuthorDate: Fri Aug 13 12:04:21 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 12:04:21 2010 -0400 + + Add some async file tests + + gio/tests/file.c | 237 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 237 insertions(+) + +commit ee38c03582df8b757c2fe64b3b5a6be9b6083135 +Author: Matthias Clasen +AuthorDate: Fri Aug 13 00:47:02 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 00:47:02 2010 -0400 + + Collect NEWS for 2.25.14 + + NEWS | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit ef4b0afc0b3217ce65e12c0606855af52659490b +Author: Matthias Clasen +AuthorDate: Fri Aug 13 00:30:58 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 00:33:04 2010 -0400 + + Bump version + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 106bde0a8fa34a72f66f037b0428a3105cb953bc +Author: Havoc Pennington +AuthorDate: Thu Aug 12 23:57:26 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Aug 13 00:33:04 2010 -0400 + + GAsyncQueue: use g_queue_init() not g_queue_new() + + By using g_queue_init() instead of g_queue_new(), we can avoid + a separate memory allocation. + + Bug 626704 + + glib/gasyncqueue.c | 28 ++++++++++++++-------------- + 1 file changed, 14 insertions(+), 14 deletions(-) + +commit f424aa9581ff4fedb9205f360112b6b17518edeb +Author: Daniel Nylander +AuthorDate: Thu Aug 12 13:19:50 2010 +0200 +Commit: Daniel Nylander +CommitDate: Thu Aug 12 13:19:50 2010 +0200 + + Updated Swedish translation + + po/sv.po | 2135 + ++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 1226 insertions(+), 909 deletions(-) + +commit 398f9841eddc10e0e6b1ccee4823e2ea3650bd9a +Author: Tor Lillqvist +AuthorDate: Tue Aug 10 16:01:39 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Tue Aug 10 16:01:39 2010 +0300 + + Fix gio/win32 build after -I flag changes + + gio/win32/gwin32directorymonitor.c | 1 - + gio/win32/gwin32directorymonitor.h | 4 ++-- + gio/win32/gwinhttpfile.c | 8 ++++---- + gio/win32/gwinhttpfileinputstream.c | 4 ++-- + gio/win32/gwinhttpfileoutputstream.c | 4 ++-- + gio/win32/gwinhttpvfs.c | 6 +++--- + gio/win32/gwinhttpvfs.h | 3 +-- + 7 files changed, 14 insertions(+), 16 deletions(-) + +commit 304c0c4746fb8df993a3e6429414d6cf1ba287b8 +Author: Aron Xu +AuthorDate: Mon Aug 9 14:26:38 2010 +0800 +Commit: Aron Xu +CommitDate: Mon Aug 9 14:27:55 2010 +0800 + + Update Simplified Chinese translation. + + po/zh_CN.po | 594 + +++++++++++++++++++++++++++++++++++++++++------------------- + 1 file changed, 405 insertions(+), 189 deletions(-) + +commit 43c0aa9ebe16cf17009678732decc9e852701f15 +Author: Matthias Clasen +AuthorDate: Sun Aug 8 23:53:52 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 23:55:12 2010 -0400 + + Replace the explicit list of character categories by a reference + to the GUnicodeType docs. + + docs/reference/glib/regex-syntax.sgml | 124 + +--------------------------------- + 1 file changed, 3 insertions(+), 121 deletions(-) + +commit 4e42893369c8b8092de7feedb447ca538f8dccf2 +Author: Matthias Clasen +AuthorDate: Sun Aug 8 23:43:29 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 23:55:11 2010 -0400 + + Refer to GUnicodeScript docs instead of listing scripts explicitly + + docs/reference/glib/regex-syntax.sgml | 80 + +++++------------------------------ + 1 file changed, 10 insertions(+), 70 deletions(-) + +commit 733d209b14f1b88288e08241a64ef77284108505 +Author: Matthias Clasen +AuthorDate: Sun Aug 8 23:21:54 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 23:55:11 2010 -0400 + + Move GRegex docs inline + + docs/reference/glib/tmpl/gregex.sgml | 302 + ++++++++++------------------------- + glib/gregex.c | 60 +++++++ + glib/gregex.h | 225 ++++++++++++++++++++++++++ + 3 files changed, 371 insertions(+), 216 deletions(-) + +commit c3e5b3cca883546a40a5d7aa219c74cb6574bcd6 +Author: Matthias Clasen +AuthorDate: Sun Aug 8 22:19:10 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 23:55:11 2010 -0400 + + Whitespace cleanup + + glib/gregex.c | 1067 + ++++++++++++++++++++++++++++----------------------------- + 1 file changed, 533 insertions(+), 534 deletions(-) + +commit de3c6efa222389ef253fbe1b7b868b95a37aedb1 +Author: Matthias Clasen +AuthorDate: Sun Aug 8 22:15:16 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 23:55:11 2010 -0400 + + Remove two redundant comments + + glib/garray.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit b5bda64a730876205ce5aae069f11161d6b94cc4 +Author: Matthias Clasen +AuthorDate: Sun Aug 8 22:14:56 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 23:55:11 2010 -0400 + + Fix up a doc typo + + glib/gbase64.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit f5a58639759af5333990a24ef6c8275c8f5afcde +Author: Matthias Clasen +AuthorDate: Sun Aug 8 22:12:40 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 23:55:11 2010 -0400 + + Minor cleanup + + The definition is now present in pcre.h + + glib/gregex.c | 5 ----- + 1 file changed, 5 deletions(-) + +commit def0dc01f74e9b8b0904c6b8866835f9efb640a8 +Author: Matthias Clasen +AuthorDate: Sun Aug 8 22:11:38 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 23:55:11 2010 -0400 + + Move GConvert docs inline + + docs/reference/glib/tmpl/conversions.sgml | 174 + ++---------------------------- + glib/gconvert.c | 121 +++++++++++++++++++++ + glib/gconvert.h | 28 ++++- + 3 files changed, 157 insertions(+), 166 deletions(-) + +commit f837e15972d7cd93ac8bddbaeed60289c7263c1a +Author: A S Alam +AuthorDate: Tue Aug 10 06:24:02 2010 +0530 +Commit: A S Alam +CommitDate: Tue Aug 10 06:24:02 2010 +0530 + + update translation for master + + po/pa.po | 1808 + ++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 1048 insertions(+), 760 deletions(-) + +commit f9a4b4ecc7a0f838897797dc5b478520c9f05168 +Author: Matthias Clasen +AuthorDate: Sun Aug 8 21:29:26 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 21:32:04 2010 -0400 + + Add introspection annotations in gregex.c + + Also, make the new getters follow the style of other GRegex getters, + and take a const GRegex *. + + glib/gregex.c | 192 + ++++++++++++++++++++++++++++++---------------------------- + glib/gregex.h | 4 +- + 2 files changed, 100 insertions(+), 96 deletions(-) + +commit 14e0ad7c5379e14f31a0e54bc2bf73f3c2d07d0d +Author: Matthias Clasen +AuthorDate: Sun Aug 8 20:49:59 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 21:32:04 2010 -0400 + + Don't compile some unused functions in gio/xdgmime/ + + gio/xdgmime/xdgmime.c | 22 +++++++++++++++++++++- + gio/xdgmime/xdgmime.h | 14 ++++++++++++-- + gio/xdgmime/xdgmimealias.c | 4 +++- + gio/xdgmime/xdgmimealias.h | 3 ++- + gio/xdgmime/xdgmimecache.c | 8 +++++++- + gio/xdgmime/xdgmimecache.h | 6 ++++++ + gio/xdgmime/xdgmimeglob.c | 7 +++++++ + gio/xdgmime/xdgmimeglob.h | 2 ++ + gio/xdgmime/xdgmimeicon.c | 2 ++ + gio/xdgmime/xdgmimeicon.h | 2 ++ + gio/xdgmime/xdgmimeparent.c | 2 ++ + gio/xdgmime/xdgmimeparent.h | 2 ++ + glib/pcre/pcre_compile.c | 4 +++- + glib/pcre/pcre_get.c | 2 +- + glib/pcre/pcre_ucp_searchfuncs.c | 4 +++- + 15 files changed, 75 insertions(+), 9 deletions(-) + +commit 7acdaf6f1db90c17985b81033050e1814723d6ae +Author: Matthias Clasen +AuthorDate: Sun Aug 8 18:35:12 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 21:32:04 2010 -0400 + + Don't compile an unused function + + glib/pcre/pcre_compile.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 3fd1fc4f9a8511587637efc9b0942e4919fab031 +Author: Matthias Clasen +AuthorDate: Sun Aug 8 18:34:59 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 21:32:04 2010 -0400 + + Trivial typo fix + + glib/gregex.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c9916d64b1cf996a4cdb9f8887972038b492426d +Author: Matthias Clasen +AuthorDate: Sun Aug 8 18:34:38 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 21:32:03 2010 -0400 + + Improve regex test coverage + + glib/tests/regex.c | 559 + ++++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 558 insertions(+), 1 deletion(-) + +commit 584787f580cf6e36c020b7d7ee0a01baea8896aa +Author: Matthias Clasen +AuthorDate: Sun Aug 8 11:32:50 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 21:32:03 2010 -0400 + + Improve the async result test coverage + + gio/tests/simple-async-result.c | 1 + + 1 file changed, 1 insertion(+) + +commit 7c129c901121b2ca8374d64c716828101ce79cb9 +Author: Matthias Clasen +AuthorDate: Sun Aug 8 11:31:53 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 21:32:03 2010 -0400 + + Improve dbus address test coverage + + gio/tests/gdbus-addresses.c | 32 ++++++++++++++++++++++++++++++++ + 1 file changed, 32 insertions(+) + +commit ae8b375f0ffe4c26c366728a33b04167d3f1fd1b +Author: Fran Diéguez +AuthorDate: Mon Aug 9 01:11:59 2010 +0200 +Commit: Fran Diéguez +CommitDate: Mon Aug 9 01:11:59 2010 +0200 + + Updated galician translations + + po/gl.po | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +commit bbd1d2a72429929d15c0764853addcf3a6a8bead +Author: Matthias Clasen +AuthorDate: Sun Aug 8 01:09:18 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 01:12:05 2010 -0400 + + Improve regex test coverage + + glib/tests/regex.c | 66 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 66 insertions(+) + +commit 6ada7532b5e8d3c613e26144afbf4c38367afd90 +Author: Matthias Clasen +AuthorDate: Sun Aug 8 01:08:34 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 01:12:05 2010 -0400 + + Drop some unused code + + Some functions in pcre_get.c are not used. + + glib/pcre/pcre_get.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 8804d6a98ffabc83bea2a35d4aaf26617fa062f0 +Author: Matthias Clasen +AuthorDate: Sun Aug 8 01:07:53 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Aug 8 01:12:04 2010 -0400 + + Simplify gcov generation + + lcov seems to handle .libs just fine on its own. + + Makefile.decl | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit 01cae84e47ff749e475d7931106c8b00829021e5 +Author: Ryan Lortie +AuthorDate: Sat Aug 7 19:58:12 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Aug 7 19:59:36 2010 -0400 + + Bug 578295 - gtester has a race condition + + Deal with the race in GMainLoop by installing a do-nothing timeout. + + glib/gtester.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 51ad83f7119bcf43d5e9b6b89fd3f33bd9ab1e3d +Author: Matthias Clasen +AuthorDate: Sat Aug 7 18:56:12 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 7 18:56:12 2010 -0400 + + Make g_dbus_error_unregister_error work + + gio/gdbuserror.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 8e236f7ec1e0f620a516255a6b8ed7ae169bc87e +Author: Matthias Clasen +AuthorDate: Sat Aug 7 18:55:21 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 7 18:55:21 2010 -0400 + + Add some more test about gdbus_error apis + + gio/tests/gdbus-error.c | 71 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 71 insertions(+) + +commit 7de6658f74a43065fa9a27db6cb4d26b6a946a32 +Author: Matthias Clasen +AuthorDate: Sat Aug 7 17:08:54 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 7 17:10:17 2010 -0400 + + Make g_simple_async_result_is_valid work without source + + The problem was pointed out by Xavier Claessens in bug 626208. + + gio/gsimpleasyncresult.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 402ad1958ccdb4586da9614ec4276396fd4c0faf +Author: Matthias Clasen +AuthorDate: Sat Aug 7 16:27:38 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 7 17:10:17 2010 -0400 + + Make the closure variants of name owning and watching actually work + + The GClosure API is a bit funky (and badly documented), and requires + you to set a marshaller on the closure, and the marshaller has an + implicit 'this' argument, and the caller is reponsible for unsetting + the values after invoking the closure. + + I've added some calls of the _with_closures variants to the + gdbus-names test now. + + gio/gdbusnameowning.c | 92 + ++++++++++++++++++++++++++++--------------------- + gio/gdbusnamewatching.c | 76 ++++++++++++++++++++-------------------- + gio/gio-marshal.list | 2 ++ + gio/tests/gdbus-names.c | 57 ++++++++++++++++++------------ + 4 files changed, 128 insertions(+), 99 deletions(-) + +commit c15d20e53a9fdccd4fbe17c6a51c57e6b34410fd +Author: Kjartan Maraas +AuthorDate: Sat Aug 7 18:43:01 2010 +0200 +Commit: Kjartan Maraas +CommitDate: Sat Aug 7 18:43:01 2010 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 179 + ++++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 115 insertions(+), 64 deletions(-) + +commit 4ac7f8f08433c37cf0a69cdea601514a0c06c1b6 +Author: Benjamin Otte +AuthorDate: Fri Aug 6 23:15:28 2010 +0200 +Commit: Benjamin Otte +CommitDate: Fri Aug 6 23:35:24 2010 +0200 + + notifyqueue: Dedup pspecs when adding + + The previous code dedup'd when thawing and threw nasty warnings + your way + if you notified too often. This can now easily be avoided. + + Performance should be roughly identical, as both are O(n²). + + gobject/gobjectnotifyqueue.c | 23 +++++++---------------- + 1 file changed, 7 insertions(+), 16 deletions(-) + +commit e88eb048659be2e09081a27ddaef0e261667b6b8 +Author: Ryan Lortie +AuthorDate: Fri Aug 6 16:48:03 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Aug 6 16:48:19 2010 -0400 + + Prepare to release glib 2.25.13 + + NEWS | 67 + +++++++++++++++++++++++++++++++ + docs/reference/glib/tmpl/glib-unused.sgml | 40 ------------------ + docs/reference/glib/tmpl/messages.sgml | 27 ++++++++++--- + docs/reference/glib/tmpl/version.sgml | 41 +++++++++++++++++++ + 4 files changed, 129 insertions(+), 46 deletions(-) + +commit 80046f36e0ed2fe3d12c3128145033043f46734d +Author: Ryan Lortie +AuthorDate: Fri Aug 6 16:42:36 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Aug 6 16:42:36 2010 -0400 + + gitignore update + + glib/tests/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit d96b7c5c8aacc2b8516c03a2801db731d4171570 +Author: Ryan Lortie +AuthorDate: Fri Aug 6 15:28:58 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Aug 6 15:28:58 2010 -0400 + + gtester: Run tests only once on 'make check' + + The gtester makefile runs 'make test' on 'make check' and also + recurses + on 'make test'. automake recurses on 'make check'. + + This means that every level of recursive make that we go through + results + in the tests running twice as many times. If you type 'make check' at + the toplevel, for example, tests in gio/tests/ run 4 times. + + Fix that by introducing a 'test-nonrecursive' target and using + that one + from 'make check'. 'make test', 'make test-report', etc. are still + recursive. + + Makefile.decl | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +commit b91f9274d9de1e9f0a1b407913ab893cfe1d5b25 +Author: Ryan Lortie +AuthorDate: Fri Aug 6 13:12:20 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Aug 6 13:12:20 2010 -0400 + + Fix volumemonitor test case + + Don't blindly g_object_unref() that which may be NULL. + + gio/tests/volumemonitor.c | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +commit 889a7f81dd808d35a17baa53a87255ef588d27da +Author: Ryan Lortie +AuthorDate: Fri Aug 6 13:11:38 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Aug 6 13:11:38 2010 -0400 + + gio.symbols: add g_dbus_message_[gs]et_byte_order + + gio/gio.symbols | 2 ++ + 1 file changed, 2 insertions(+) + +commit 5e044a943c96967841c3c341ac5975c36064d640 +Author: Ryan Lortie +AuthorDate: Fri Aug 6 13:11:20 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Aug 6 13:11:20 2010 -0400 + + typo fix: Dist the data for the test cases + + change 'dist_hook:' to 'dist-hook:' + + glib/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b3b7ea8e227035ae27d6ac62595478d27b8152e8 +Author: Ryan Lortie +AuthorDate: Fri Aug 6 13:09:26 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Aug 6 13:10:34 2010 -0400 + + Replace -I with $(glib_INCLUDES) and friends + + Stop using ad hoc -I in all of our Makefile.am. Use the new variables + instead. + + docs/reference/gio/Makefile.am | 10 +--------- + docs/reference/gobject/Makefile.am | 5 +---- + gio/Makefile.am | 6 +----- + gio/fam/Makefile.am | 5 +---- + gio/fen/Makefile.am | 6 +----- + gio/inotify/Makefile.am | 6 +----- + gio/libasyncns/Makefile.am | 2 +- + gio/tests/Makefile.am | 7 +------ + gio/win32/Makefile.am | 6 +----- + glib/Makefile.am | 2 +- + glib/gnulib/Makefile.am | 3 +-- + glib/libcharset/Makefile.am | 2 +- + glib/pcre/Makefile.am | 5 +---- + glib/tests/Makefile.am | 4 +--- + glib/update-pcre/Makefile.am-1 | 4 +--- + gmodule/Makefile.am | 5 +---- + gobject/Makefile.am | 5 +---- + gobject/tests/Makefile.am | 2 +- + gthread/Makefile.am | 5 +---- + gthread/tests/Makefile.am | 2 +- + tests/Makefile.am | 5 +---- + tests/gobject/Makefile.am | 5 +---- + tests/refcount/Makefile.am | 5 +---- + 23 files changed, 23 insertions(+), 84 deletions(-) + +commit 8ad9d9dbe35973951faaf595b1fe847b6b180159 +Author: Ryan Lortie +AuthorDate: Fri Aug 6 13:07:31 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Aug 6 13:07:31 2010 -0400 + + configure.ac: define glib_INCLUDES and friends + + These macros should be used instead of -I for things in the tree that + depend on various bits of glib. + + also gobject_INCLUDES, gthread_INCLUDES, gmodule_INCLUDES, + gio_INCLUDES + + configure.ac | 39 +++++++++++++++++++++++++++++++++++++++ + 1 file changed, 39 insertions(+) + +commit ba0208b3a8076f8c3c545ba5716347ad446525f7 +Author: Ryan Lortie +AuthorDate: Fri Aug 6 13:05:18 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Aug 6 13:05:18 2010 -0400 + + Clean up improper #includes + + We have a lot of broken #including going on around the tree. This has + gone unnoticed due to our sloppy use of -I. + + gio/fam/fam-helper.c | 2 +- + gio/fam/fam-module.c | 2 +- + gio/fam/gfamdirectorymonitor.c | 2 +- + gio/fam/gfamdirectorymonitor.h | 4 ++-- + gio/fam/gfamfilemonitor.c | 2 +- + gio/fam/gfamfilemonitor.h | 4 ++-- + gio/fen/fen-helper.c | 2 +- + gio/fen/fen-node.c | 2 +- + gio/fen/gfendirectorymonitor.c | 2 +- + gio/fen/gfendirectorymonitor.h | 4 ++-- + gio/inotify/ginotifydirectorymonitor.c | 2 +- + gio/inotify/ginotifydirectorymonitor.h | 4 ++-- + gio/tests/application.c | 2 +- + gio/tests/gschema-compile.c | 2 +- + gio/tests/testapp.c | 2 +- + 15 files changed, 19 insertions(+), 19 deletions(-) + +commit 78f7f14b34b4c04742fc848eec536ffdb8c8ab01 +Author: Ryan Lortie +AuthorDate: Fri Aug 6 10:53:07 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Aug 6 10:53:07 2010 -0400 + + Don't dist 'glibconfig.h' + + This is causing very serious problems when doing out-of-tree + builds from + tarballs on architectures that are different from the architecture + that + the tarball was created on. + + This commit breaks the build in those cases, but I'll fix that in the + next commits. + + https://bugzilla.gnome.org/show_bug.cgi?id=626107 + + glib/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 25c6bdc22add2f306c24e5200de2899f39f86c48 +Author: Ryan Lortie +AuthorDate: Fri Aug 6 10:29:32 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Aug 6 10:29:32 2010 -0400 + + error test case: don't double-free the source + + g_propagate_prefixed_error() frees the source already, don't + g_error_free() it. + + glib/tests/error.c | 1 - + 1 file changed, 1 deletion(-) + +commit a1b015f7b70b3851d5a6e45fd4114c7723b4f1ea +Author: Hannes Müller +AuthorDate: Thu Aug 5 23:11:03 2010 +0200 +Commit: Benjamin Otte +CommitDate: Thu Aug 5 23:18:45 2010 +0200 + + avoid warning in gutils.h when using gcc with -Wconversion + + https://bugzilla.gnome.org/show_bug.cgi?id=619026 + + glib/gutils.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 970d0634e9ade050158bdb529a6f8a7deb8fb319 +Author: Fran Diéguez +AuthorDate: Thu Aug 5 15:36:39 2010 +0200 +Commit: Fran Diéguez +CommitDate: Thu Aug 5 15:36:39 2010 +0200 + + Updated Galician translations + + po/gl.po | 234 + ++++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 149 insertions(+), 85 deletions(-) + +commit c789f72f9dfb6dcb86c536dfa6f65e5a7e5c72f4 +Author: Claude Paroz +AuthorDate: Thu Aug 5 15:17:40 2010 +0200 +Commit: Claude Paroz +CommitDate: Thu Aug 5 15:18:30 2010 +0200 + + Updated French translation + + Contributed by Gérard Baylard and Claude Paroz + + po/fr.po | 2016 + +++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 1220 insertions(+), 796 deletions(-) + +commit 9f6faaffb6491a8de5508b7678ab48fee4f59efa +Author: paul +AuthorDate: Thu Aug 5 09:08:34 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Aug 5 09:08:34 2010 -0400 + + Add $(top_builddir)/glib to includes + + This is required to find glibconfig.h during srcdir != builddir builds + + gio/Makefile.am | 1 + + gio/tests/Makefile.am | 1 + + glib/gnulib/Makefile.am | 3 ++- + glib/tests/Makefile.am | 1 + + gmodule/Makefile.am | 1 + + gobject/Makefile.am | 1 + + gobject/tests/Makefile.am | 2 +- + gthread/Makefile.am | 1 + + tests/Makefile.am | 1 + + tests/gobject/Makefile.am | 1 + + tests/refcount/Makefile.am | 1 + + 11 files changed, 12 insertions(+), 2 deletions(-) + +commit 38c3f9964c2c0b7243cf5033ffc1d197c292b337 +Author: Jorge González +AuthorDate: Thu Aug 5 12:11:05 2010 +0200 +Commit: Jorge González +CommitDate: Thu Aug 5 12:11:05 2010 +0200 + + Updated Spanish translation + + po/es.po | 238 + +++++++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 156 insertions(+), 82 deletions(-) + +commit abe820e0d935f41744292146c71ccc4cf479751e +Author: Philip Withnall +AuthorDate: Mon Aug 2 14:14:11 2010 +0100 +Commit: Philip Withnall +CommitDate: Thu Aug 5 08:49:54 2010 +0100 + + Expand documentation about error quark naming + + Closes: bgo#625827 + + docs/reference/glib/tmpl/error_reporting.sgml | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 008615f9999641158a89e3e6163b1580cac53dd0 +Author: Matthias Clasen +AuthorDate: Thu Aug 5 02:23:42 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 5 02:24:26 2010 -0400 + + Test an option handling corner-case + + glib/tests/option-context.c | 59 + ++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 58 insertions(+), 1 deletion(-) + +commit e2657d8dce32e10869ec2b18edc7dbf489dd2941 +Author: Matthias Clasen +AuthorDate: Thu Aug 5 02:01:58 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 5 02:24:25 2010 -0400 + + Add a not about arguments beginning with dashes + + glib/goption.c | 28 +++++++++++++++------------- + 1 file changed, 15 insertions(+), 13 deletions(-) + +commit e4994cb0a10c35f373b17ef970e2f8e4034d387c +Author: Yaron Shahrabani +AuthorDate: Thu Aug 5 09:14:40 2010 +0300 +Commit: Yaron Shahrabani +CommitDate: Thu Aug 5 09:14:40 2010 +0300 + + Updated Hebrew translation. + + po/he.po | 205 + +++++++++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 133 insertions(+), 72 deletions(-) + +commit 84d3aa652f4e5853d5612bd4b189c2146168f038 +Author: Matthias Clasen +AuthorDate: Thu Aug 5 01:53:15 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 5 01:53:15 2010 -0400 + + Beautify configure output + + Checking for cpp before using it avoids somewhat ugly + nested output. Pointed out in bug 593544. + + configure.ac | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 530f67384ea656ef9a5d8c05df5c35a9bf2a5ec0 +Author: Matthias Clasen +AuthorDate: Thu Aug 5 01:45:26 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 5 01:45:26 2010 -0400 + + Modernize pkg-config check + + As pointed out in bug 599590, our hand-rolled check fails to find + cross-complication variants of pkg-config like + i686-pc-mingw32-pkg-config. + + configure.ac | 14 +------------- + 1 file changed, 1 insertion(+), 13 deletions(-) + +commit 3e8a9c7b52211ad1991711e02d682dc6e03439c6 +Author: Matthias Clasen +AuthorDate: Thu Aug 5 01:39:02 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 5 01:39:58 2010 -0400 + + Add missing files + + Reported in bug 624739 + + po/POTFILES.in | 2 ++ + 1 file changed, 2 insertions(+) + +commit d52e1c33f71a28908dac3658a8d5394e333324fc +Author: David Zeuthen +AuthorDate: Wed Aug 4 16:59:26 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Aug 4 16:59:26 2010 -0400 + + GDBus: Add `return' debug option + + This prints all GDBusMethodInvocation API usage and is normally used + with the `incoming' option. Example: + + # G_DBUS_DEBUG=incoming,return ./polkitd --replace + Entering main event loop + Connected to the system bus + Registering null backend at priority -10 + [...] + Acquired the name org.freedesktop.PolicyKit1 + [...] + + ======================================================================== + GDBus-debug:Incoming: + <<<< METHOD INVOCATION + org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent() + on object /org/freedesktop/PolicyKit1/Authority + invoked by name :1.26 + serial 299 + ======================================================================== + GDBus-debug:Return: + >>>> METHOD ERROR org.freedesktop.PolicyKit1.Error.Failed + message `Cannot determine session the caller is in' + in response to + org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent() + on object /org/freedesktop/PolicyKit1/Authority + to name :1.26 + reply-serial 299 + + [...] + + ======================================================================== + GDBus-debug:Incoming: + <<<< METHOD INVOCATION + org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent() + on object /org/freedesktop/PolicyKit1/Authority + invoked by name :1.2402 + serial 25 + ======================================================================== + GDBus-debug:Return: + >>>> METHOD RETURN + in response to + org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent() + on object /org/freedesktop/PolicyKit1/Authority + to name :1.2402 + reply-serial 25 + + Signed-off-by: David Zeuthen + + docs/reference/gio/overview.xml | 10 ++++++++-- + gio/gdbusconnection.c | 6 ++++-- + gio/gdbusmethodinvocation.c | 37 + +++++++++++++++++++++++++++++++++++++ + gio/gdbusprivate.c | 13 +++++++++++-- + gio/gdbusprivate.h | 1 + + 5 files changed, 61 insertions(+), 6 deletions(-) + +commit 89a1b571adde644664093dd4763fb9aa077dfafc +Author: David Zeuthen +AuthorDate: Wed Aug 4 14:38:51 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Aug 4 14:38:51 2010 -0400 + + GDBusMessage: Validate header fields when serializing/deserializing + + The D-Bus spec mentions exactly what header fields are required for + various message types. Add tests for this as well. + + Also disallow empty interfaces for signals since the D-Bus spec says + this is Verboten already. + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 5 -- + gio/gdbusmessage.c | 119 ++++++++++++++++++++++++++++-- + gio/tests/gdbus-serialization.c | 155 + ++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 268 insertions(+), 11 deletions(-) + +commit 6f070be65bb4bb665cb8a4c1f48cac59c1f4fba3 +Author: David Zeuthen +AuthorDate: Wed Aug 4 13:32:19 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Aug 4 13:34:14 2010 -0400 + + GDBusMessage: Add a way to get/set byte order of a message + + Also use this in the test cases to check that serialization to and + from both big and little endian works. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 3 + + gio/gdbusmessage.c | 85 +++++++++++++++++----- + gio/gdbusmessage.h | 4 ++ + gio/gio.symbols | 1 + + gio/gioenums.h | 15 ++++ + gio/tests/gdbus-serialization.c | 139 + ++++++++++++++++++++++-------------- + 6 files changed, 175 insertions(+), 72 deletions(-) + +commit 6e723e8b3e5f138f8e0b4fe45c5872a92510d5d3 +Author: David Zeuthen +AuthorDate: Wed Aug 4 12:24:22 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Aug 4 12:24:22 2010 -0400 + + GDBusMessage: Assert various things when serializing to a blob + + We use g_assert() instead of setting the GError because it is a + programming error if the GVariant contains invalid data - see commit + 5e6f762d61db1a5c64bd1d33e5ba112755106581 for where the last hole in + GVariant was closed. + + So if we can trust GVariant to only contain valid data (ignoring the + case where unsafe API such as g_variant_new_from_data() is used), why + g_assert() at all with costly g_utf8_validate() checks? Because a) it + is relatively inexpensive; and b) it helps find bugs such as the one + fixed in commit 5e6f762d61db1a5c64bd1d33e5ba112755106581. + + If performance is a concern we can play games like introducing + environment variables or other machinery to avoid such "costly" + checks. I doubt it will ever be an issue. + + Also replace two "Hmm" TODO item with a static assert - the code that + serializes a gdouble into the D-Bus wire format by treating it as a + guint64 is indeed correct - endianess needs to be taken into account + (see the D-Bus reference implementation for similar code). But we want + to make sure that we're indeed using an architecture/compiler where a + gdouble takes up 8 bytes - hence the assertion. + + Signed-off-by: David Zeuthen + + gio/gdbusmessage.c | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +commit 5bd34a820eb79f0765e312215e0a3e0a339ace78 +Author: David Zeuthen +AuthorDate: Wed Aug 4 11:26:48 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Aug 4 11:26:48 2010 -0400 + + GDBusMessage: Validate UTF-8 strings when serializing from blob + + Signed-off-by: David Zeuthen + + gio/gdbusmessage.c | 24 +++++++++-- + gio/tests/gdbus-serialization.c | 88 + +++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 109 insertions(+), 3 deletions(-) + +commit e62bc8e8f66c096829b282a53a769fbb55ab6b4d +Author: Dan Winship +AuthorDate: Wed Aug 4 07:36:04 2010 -0400 +Commit: Dan Winship +CommitDate: Wed Aug 4 07:36:34 2010 -0400 + + remove a junk line + + gio/tests/.gitignore | 1 - + 1 file changed, 1 deletion(-) + +commit 27bc1d60ebcbd1b6e887fde138840a9ddda7fc3b +Author: Kjartan Maraas +AuthorDate: Wed Aug 4 13:23:02 2010 +0200 +Commit: Kjartan Maraas +CommitDate: Wed Aug 4 13:23:46 2010 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 554 + +++++++++++++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 376 insertions(+), 178 deletions(-) + +commit 4bc9654c63feee596de5aa214d7cbd8fc293cd9d +Author: Emmanuele Bassi +AuthorDate: Wed Aug 4 00:57:52 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Aug 4 01:09:28 2010 +0100 + + binding: Add a default marshaller for the closure API + + The g_object_bind_property_with_closures() function should set a + marshaller if the two GClosures don't have one already. This + simplifies + the caller code and avoids duplication. + + We need to add a new marshaller to the gmarshal.list matching the + signature of the GBindingTransformFunc function. + + gobject/gbinding.c | 7 +++++++ + gobject/gclosure.c | 15 +++++++++++++++ + gobject/gmarshal.list | 1 + + gobject/gobject.symbols | 1 + + gobject/tests/binding.c | 39 --------------------------------------- + 5 files changed, 24 insertions(+), 39 deletions(-) + +commit f5cd8ddeaac7e6df484629b7ae54a86ffa155a05 +Author: David Zeuthen +AuthorDate: Tue Aug 3 15:36:16 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue Aug 3 15:36:16 2010 -0400 + + GDBusConnection: Debug messages when receiving signals and method + invocations + + Spell out "RECEIVED SIGNAL" instead of "SIGNAL" to emphasize this is + about receiving a signal, not emitting one (which is "SIGNAL + EMISSION"). Also make the "arrows" point in the "right" direction + ("<<<<" vs ">>>>") - like this: + + ======================================================================== + GDBus-debug:Signal: + <<<< RECEIVED SIGNAL org.freedesktop.DBus.NameOwnerChanged + on object /org/freedesktop/DBus + sent by name org.freedesktop.DBus + + and + + ======================================================================== + GDBus-debug:Incoming: + <<<< METHOD INVOCATION + org.freedesktop.PolicyKit1.Authority.EnumerateTemporaryAuthorizations() + on object /org/freedesktop/PolicyKit1/Authority + invoked by name :1.2176 + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 69341e2ba9a864ed2848527570988afc3e1c9df4 +Author: David Zeuthen +AuthorDate: Tue Aug 3 14:32:29 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue Aug 3 14:32:29 2010 -0400 + + glib-compile-schemas: Pass a C string, not a GString wrapper + + Commit 5e6f762d61db1a5c64bd1d33e5ba112755106581 (introducing UTF-8 + validity checks for GVariant instances containing strsings) actually + uncovered a bug in glib-compile-schemas - a GString was passed when a + C string was expected. + + Signed-off-by: David Zeuthen + + gio/gschema-compile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5e6f762d61db1a5c64bd1d33e5ba112755106581 +Author: David Zeuthen +AuthorDate: Tue Aug 3 13:33:03 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue Aug 3 13:38:50 2010 -0400 + + GVariant: validate that passed string is UTF-8 + + As discussed with Ryan on IRC. + + This check is crucial because it guarantees that + g_variant_get_string() will _always_ return valid UTF-8. Except in + cases where the programmer used unsafe API such as + g_variant_new_from_data() and setting @trusted to TRUE. + + In fact, this check revealed a flaw in my polkit gdbus port + + (lt-polkitd:11632): GLib-CRITICAL **: g_variant_new_string: assertion + `g_utf8_validate (string, len, NULL)' failed + + and with this I could easily find the problem by using gdb(1) and + G_DBUS=fatal-warnings. + + Without this check we'd pass the non-UTF8 string all the way to the + message bus and the bus would then disconnect us. So instead I was + seeing + + g_dbus_connection_real_closed: Remote peer vanished with error: + Underlying GIOStream returned 0 bytes on an async read + (g-io-error-quark, 0). Exiting. + + and then SIGTERM as raised by g_dbus_connection_real_closed() and my + polkitd process would exit. This behavior is much harder to debug than + failing early (as this patch implements). + + Signed-off-by: David Zeuthen + + glib/gvariant.c | 1 + + 1 file changed, 1 insertion(+) + +commit 86d947f01fba4b79aa9f0bdcea9d510f5411ea4b +Author: David Zeuthen +AuthorDate: Tue Aug 3 12:47:07 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue Aug 3 12:47:07 2010 -0400 + + Fix gdbus-exit-on-close test case + + Forgot to update the test case after last commit. + + Signed-off-by: David Zeuthen + + gio/tests/gdbus-exit-on-close.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6a492a45191335ac97f54785db543f21dfce379c +Author: David Zeuthen +AuthorDate: Tue Aug 3 12:24:48 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue Aug 3 12:24:48 2010 -0400 + + GDBus: If exiting b/c remote peer disconnected and error is set, + print it + + This should make things easier to debug: + + g_dbus_connection_real_closed: Remote peer vanished with error: + Underlying GIOStream returned 0 bytes on an async read + (g-io-error-quark, 0). Exiting. + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit 3940cc9a11fde063bb9f83cc362e575e5f378609 +Author: David Zeuthen +AuthorDate: Tue Aug 3 11:14:21 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue Aug 3 11:14:21 2010 -0400 + + GDBusProxy: Don't leak a GSimpleAsyncResult when doing async calls + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 1 + + 1 file changed, 1 insertion(+) + +commit b2715bbc5eaa1454df879964f58e36dbed65dc77 +Author: Matthias Clasen +AuthorDate: Tue Aug 3 10:41:21 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 3 10:41:21 2010 -0400 + + Fix a possible deadlock + + the FdSource was calling g_cancellable_disconnect while holding the + main context lock, which is bad news if the ::cancelled handler is + trying to get that lock to wake up the mainloop... + + Bug 586432 + + gio/gasynchelper.c | 8 ++++++-- + gio/tests/unix-streams.c | 22 +--------------------- + 2 files changed, 7 insertions(+), 23 deletions(-) + +commit 5179d92e9ce8f5b88db73613ef0485c82656801e +Author: Matthias Clasen +AuthorDate: Sun Aug 1 02:36:27 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 3 10:25:54 2010 -0400 + + fix the completion test + + tests/completion-test.c | 1 - + 1 file changed, 1 deletion(-) + +commit 21d98dbc4b57783bc98f612ca459562bcd25bd5b +Author: Matthias Clasen +AuthorDate: Sun Aug 1 02:11:15 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 3 10:25:54 2010 -0400 + + improve completion test coverage + + tests/completion-test.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 9b96e31968383619ff0a76212c5200022d62b23c +Author: Matthias Clasen +AuthorDate: Sun Aug 1 02:07:50 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 3 10:25:54 2010 -0400 + + Don't assert too much + + glib/gbookmarkfile.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit e4b5104003e9281e5737a9611517c4878522df5c +Author: Matthias Clasen +AuthorDate: Sun Aug 1 02:07:21 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Aug 3 10:25:54 2010 -0400 + + Move bookmarkfile tests to the test framework + + glib/tests/Makefile.am | 7 + + glib/tests/bookmarkfile.c | 298 + +++++++++++++++++++++++++++++++++++++ + glib/tests/bookmarks/fail-01.xbel | 0 + glib/tests/bookmarks/fail-02.xbel | 2 + + glib/tests/bookmarks/fail-03.xbel | 18 +++ + glib/tests/bookmarks/fail-04.xbel | 21 +++ + glib/tests/bookmarks/fail-05.xbel | 21 +++ + glib/tests/bookmarks/fail-06.xbel | 19 +++ + glib/tests/bookmarks/fail-07.xbel | 21 +++ + glib/tests/bookmarks/fail-08.xbel | 18 +++ + glib/tests/bookmarks/fail-09.xbel | 20 +++ + glib/tests/bookmarks/fail-10.xbel | 21 +++ + glib/tests/bookmarks/fail-11.xbel | 22 +++ + glib/tests/bookmarks/fail-12.xbel | 22 +++ + glib/tests/bookmarks/fail-13.xbel | 22 +++ + glib/tests/bookmarks/fail-14.xbel | 24 +++ + glib/tests/bookmarks/fail-15.xbel | 23 +++ + glib/tests/bookmarks/fail-16.xbel | 24 +++ + glib/tests/bookmarks/fail-17.xbel | 22 +++ + glib/tests/bookmarks/valid-01.xbel | 21 +++ + glib/tests/bookmarks/valid-02.xbel | 15 ++ + glib/tests/bookmarks/valid-03.xbel | 21 +++ + tests/Makefile.am | 8 +- + tests/bookmarkfile-test.c | 188 ----------------------- + tests/bookmarks/fail-01.xbel | 0 + tests/bookmarks/fail-02.xbel | 2 - + tests/bookmarks/fail-03.xbel | 18 --- + tests/bookmarks/fail-04.xbel | 21 --- + tests/bookmarks/fail-05.xbel | 21 --- + tests/bookmarks/fail-06.xbel | 19 --- + tests/bookmarks/fail-07.xbel | 21 --- + tests/bookmarks/fail-08.xbel | 18 --- + tests/bookmarks/fail-09.xbel | 20 --- + tests/bookmarks/fail-10.xbel | 21 --- + tests/bookmarks/fail-11.xbel | 22 --- + tests/bookmarks/fail-12.xbel | 22 --- + tests/bookmarks/fail-13.xbel | 22 --- + tests/bookmarks/fail-14.xbel | 24 --- + tests/bookmarks/fail-15.xbel | 23 --- + tests/bookmarks/fail-16.xbel | 24 --- + tests/bookmarks/fail-17.xbel | 22 --- + tests/bookmarks/valid-01.xbel | 21 --- + tests/bookmarks/valid-02.xbel | 15 -- + tests/bookmarks/valid-03.xbel | 21 --- + tests/run-bookmark-test.sh | 34 ----- + 45 files changed, 684 insertions(+), 605 deletions(-) + +commit b3de028a43873913106c31fa2c4b6e31d14b9fc1 +Author: Emmanuele Bassi +AuthorDate: Tue Aug 3 14:21:02 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Tue Aug 3 14:21:02 2010 +0100 + + Update the Git ignore files + + gio/tests/.gitignore | 2 ++ + glib/tests/.gitignore | 8 ++++++++ + m4macros/.gitignore | 5 +++++ + 3 files changed, 15 insertions(+) + +commit f8ec75620d5e7c2d139cc523729a1223875f1fa0 +Author: Mark Wielaard +AuthorDate: Mon Aug 2 23:28:50 2010 +0200 +Commit: Colin Walters +CommitDate: Tue Aug 3 08:04:58 2010 -0400 + + Don't add (extra) DESTDIR to tapsetdir for tapset_DATA. + + https://bugzilla.gnome.org/show_bug.cgi?id=625876 + + glib/Makefile.am | 2 +- + gobject/Makefile.am | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 5e1c4b18a806cd8a0f259b314f64f3d99e824773 +Author: Emmanuele Bassi +AuthorDate: Tue Aug 3 10:34:59 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Tue Aug 3 10:34:59 2010 +0100 + + docs: Clarify user_data behavior for bind_property_full() + + gobject/gbinding.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 90f7f171e621c296526b3978a75433c30c088b46 +Author: Emmanuele Bassi +AuthorDate: Tue Aug 3 10:29:50 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Tue Aug 3 10:29:50 2010 +0100 + + binding: Add G_BINDING_INVERT_BOOLEAN + + Since GSettings got the same functionality and flag in commit + ca3b7b75b + GBinding should also have the ability to automatically invert + a boolean + value without requiring a custom transformation function. + + gobject/gbinding.c | 61 + ++++++++++++++++++++++++++++++++++++++++++++-- + gobject/gbinding.h | 18 +++++++++----- + gobject/tests/binding.c | 64 + +++++++++++++++++++++++++++++++++++++++++++++---- + 3 files changed, 130 insertions(+), 13 deletions(-) + +commit 3be3ad61d142ca5bbd5659809af749ea5bf441ac +Author: Emmanuele Bassi +AuthorDate: Tue Jul 13 06:03:03 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Tue Aug 3 09:51:49 2010 +0100 + + binding: Add a closure-based variant of bind_property_full() + + Since using the function pointer version muddles the memory management + requirements of language bindings, we should implement a + GClosure-based + variant on top of g_object_bind_property_full(). + + https://bugzilla.gnome.org/show_bug.cgi?id=622278 + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gbinding.c | 183 + ++++++++++++++++++++++++++-- + gobject/gbinding.h | 35 +++--- + gobject/gobject.symbols | 1 + + gobject/tests/binding.c | 76 +++++++++++- + 5 files changed, 271 insertions(+), 25 deletions(-) + +commit ca3b7b75bff00ea05c967eea06e2c3397da17e41 +Author: Ryan Lortie +AuthorDate: Tue Aug 3 02:08:03 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Aug 3 02:09:10 2010 -0400 + + GSettings: add G_SETTINGS_BIND_INVERT_BOOLEAN flag + + When binding a boolean setting to a boolean property, invert the + values. + This avoids the requirement for writing a pair of mapping functions + for + this extremely common case. + + Add a test. + + https://bugzilla.gnome.org/show_bug.cgi?id=625833 + + gio/gsettings.c | 71 + ++++++++++++++++++++++++++++++++++---- + gio/gsettings.h | 6 +++- + gio/tests/gsettings.c | 21 ++++++++++- + gio/tests/org.gtk.test.gschema.xml | 3 ++ + 4 files changed, 93 insertions(+), 8 deletions(-) + +commit dd2bbc95330355d5ff044dc76649e41ee5063894 +Author: Fridrich Štrba +AuthorDate: Mon Aug 2 10:16:29 2010 +0200 +Commit: Fridrich Štrba +CommitDate: Mon Aug 2 10:16:29 2010 +0200 + + On windows, export also symbols defined in gio/gwin32appinfo.c + + gio/gio.symbols | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit 9c399b10b8da98e87d12c1fbd8f8e6a44256f68b +Author: Fran Diéguez +AuthorDate: Sun Aug 1 23:18:31 2010 +0200 +Commit: Fran Diéguez +CommitDate: Sun Aug 1 23:18:31 2010 +0200 + + Updated Galician translations + + po/gl.po | 259 + +++++++++++++++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 212 insertions(+), 47 deletions(-) + +commit 892012b951a5222a3e47afc18179b064420ff98b +Author: Carlos Garcia Campos +AuthorDate: Sun Aug 1 12:56:06 2010 +0200 +Commit: Carlos Garcia Campos +CommitDate: Sun Aug 1 17:27:58 2010 +0200 + + GDBusConnection: fix message flags in g_dbus_connection_call_sync() + + GDBusCallFlags were used instead of GDBusSendMessageFlags for + g_dbus_connection_send_message_with_reply_sync(). Fixes bug #625753. + + gio/gdbusconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e7c7e46cf20cbca1684cecd1ba45e5555797844e +Author: Stef Walter +AuthorDate: Sun Aug 1 07:14:43 2010 +0200 +Commit: Stef Walter +CommitDate: Sun Aug 1 07:22:11 2010 +0200 + + Add comment to g_date_set_time_val about local timezone. + + Local time zone is used in conversion during g_date_set_time_val(). + We now mention this in the documentation. + + Fixes bug #625500 + + glib/gdate.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit d01a4374901af59a9b80fed1372a1366c9c9705d +Author: Milan Crha +AuthorDate: Sat Jul 31 23:51:45 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 31 23:51:45 2010 -0400 + + Silence valgrind + + Initialize all fields of struct msghdr. Bug 625472. + + gio/gsocket.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit b6c42d05c07479c49f5dd36ad74caae518568381 +Author: Jorge González +AuthorDate: Sat Jul 31 15:11:48 2010 +0200 +Commit: Jorge González +CommitDate: Sat Jul 31 15:11:48 2010 +0200 + + Updated Spanish translation + + po/es.po | 206 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 182 insertions(+), 24 deletions(-) + +commit 7e33c4977c1772a741d9beb1f5ceca2009a0cea5 +Author: Yaron Shahrabani +AuthorDate: Sat Jul 31 10:05:05 2010 +0300 +Commit: Yaron Shahrabani +CommitDate: Sat Jul 31 10:05:05 2010 +0300 + + Updated Hebrew translation. + + po/he.po | 253 + +++++++++++++++++++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 213 insertions(+), 40 deletions(-) + +commit 917456973643cfe303017f1bb3266d41bba7cfd2 +Author: Matthias Clasen +AuthorDate: Sat Jul 31 02:40:16 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 31 02:40:16 2010 -0400 + + Also use trylock in the bitlock tests + + gthread/tests/1bit-mutex.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit ce7463a87b8f039490be075ba0505fa2986509b6 +Author: Matthias Clasen +AuthorDate: Sat Jul 31 02:39:53 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 31 02:39:53 2010 -0400 + + improve scanner api test coverage + + glib/tests/scannerapi.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 6d41af0f724fad717b2cba4dc0001cd53564a9eb +Author: Matthias Clasen +AuthorDate: Sat Jul 31 02:15:03 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 31 02:15:03 2010 -0400 + + Improve tree test coverage + + glib/tests/tree.c | 42 ++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 42 insertions(+) + +commit a94657782680312592f860d5d867a446b8beda85 +Author: Matthias Clasen +AuthorDate: Sat Jul 31 02:14:51 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 31 02:14:51 2010 -0400 + + Improve keyfile test coverage + + glib/tests/keyfile.c | 48 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 48 insertions(+) + +commit ef4690c6c96824a2099a5feca11a1785329ec5ca +Author: Matthias Clasen +AuthorDate: Sat Jul 31 02:14:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 31 02:14:28 2010 -0400 + + Test some GError functionality explicitly + + glib/tests/Makefile.am | 3 +++ + glib/tests/error.c | 73 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 76 insertions(+) + +commit a4d0038c288587bd2d8b50a7b5b442e6ba0f59a7 +Author: Matthias Clasen +AuthorDate: Sat Jul 31 02:14:01 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 31 02:14:01 2010 -0400 + + Add a test for g_variant_builder_add_parsed + + glib/tests/gvariant.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3c0f77a499f01f42c70313568870681f00e4cc82 +Author: Matthias Clasen +AuthorDate: Sat Jul 31 02:07:38 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 31 02:07:38 2010 -0400 + + Fix a typo + + glib/gvariant-parser.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 12e47411c3ad3d04619036a1001801382ea9e9da +Author: Matthias Clasen +AuthorDate: Sat Jul 31 00:56:11 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 31 00:56:11 2010 -0400 + + Improve string test coverage + + glib/tests/string.c | 29 ++++++++++++++++++++++++++++- + 1 file changed, 28 insertions(+), 1 deletion(-) + +commit dd25bdeff14ebad9c0ffc5231032ede0c761c47e +Author: Matthias Clasen +AuthorDate: Sat Jul 31 00:55:57 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 31 00:55:57 2010 -0400 + + Improve byte array test coverage + + glib/tests/array-test.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 8246bf4bdebb1a12e40111b483e7d6a474ec6b58 +Author: Matthias Clasen +AuthorDate: Sat Jul 31 00:13:02 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 31 00:13:02 2010 -0400 + + Improve gdbus test coverage + + gio/tests/gdbus-connection.c | 61 ++++++++++++++++++++-- + gio/tests/gdbus-proxy.c | 118 + +++++++++++++++++++++++++++++++++++++++++-- + 2 files changed, 171 insertions(+), 8 deletions(-) + +commit 116b945c944a8dcfeb21e9b9ea7781a492a81101 +Author: Matthias Clasen +AuthorDate: Fri Jul 30 23:44:30 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 23:44:30 2010 -0400 + + Fix a typo + + Its credentials, not crendentials + + gio/gdbusconnection.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit eb3e926b09538f22ac115ce0f18ac7530dc2dc87 +Author: Matthias Clasen +AuthorDate: Fri Jul 30 16:44:25 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:53:29 2010 -0400 + + Fix an off-by-one error + + gio/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5033be80d15cfb6c0a89f4ab0bc5e76cc2cd0a71 +Author: Matthias Clasen +AuthorDate: Fri Jul 30 16:21:49 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:22 2010 -0400 + + Add a test for g_dbus_proxy_get_cached_property_names + + gio/tests/gdbus-proxy.c | 65 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 65 insertions(+) + +commit 5f89498f071a100d3e159dd0d967477047249d73 +Author: Matthias Clasen +AuthorDate: Fri Jul 30 15:36:15 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:21 2010 -0400 + + improve printf tests coverage + + glib/tests/printf.c | 241 + +++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 227 insertions(+), 14 deletions(-) + +commit 9100828185316503e2da366a8e0de8e361944301 +Author: Matthias Clasen +AuthorDate: Fri Jul 30 15:35:47 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:21 2010 -0400 + + Improve option context test coverage + + glib/tests/option-context.c | 65 + +++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 65 insertions(+) + +commit 027905c27aca3cdedca59a3d084e9a9279e03b19 +Author: Matthias Clasen +AuthorDate: Thu Jul 29 23:08:07 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:21 2010 -0400 + + Improve array test coverage + + glib/tests/array-test.c | 461 + +++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 455 insertions(+), 6 deletions(-) + +commit 03be0d7237c7f250e01b785af4e4e4e8724a3e8f +Author: Matthias Clasen +AuthorDate: Thu Jul 29 20:52:31 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:21 2010 -0400 + + Move markup parse tests to the test framework + + glib/tests/Makefile.am | 20 ++- + glib/tests/markup-parse.c | 290 + +++++++++++++++++++++++++++++++++++ + glib/tests/markups/fail-1.expected | 1 + + glib/tests/markups/fail-1.gmarkup | 0 + glib/tests/markups/fail-10.expected | 4 + + glib/tests/markups/fail-10.gmarkup | 2 + + glib/tests/markups/fail-11.expected | 7 + + glib/tests/markups/fail-11.gmarkup | 4 + + glib/tests/markups/fail-12.expected | 1 + + glib/tests/markups/fail-12.gmarkup | 1 + + glib/tests/markups/fail-13.expected | 1 + + glib/tests/markups/fail-13.gmarkup | 1 + + glib/tests/markups/fail-14.expected | 4 + + glib/tests/markups/fail-14.gmarkup | 2 + + glib/tests/markups/fail-15.expected | 8 + + glib/tests/markups/fail-15.gmarkup | 3 + + glib/tests/markups/fail-16.expected | 2 + + glib/tests/markups/fail-16.gmarkup | 1 + + glib/tests/markups/fail-17.expected | 1 + + glib/tests/markups/fail-17.gmarkup | 1 + + glib/tests/markups/fail-18.expected | 1 + + glib/tests/markups/fail-18.gmarkup | 1 + + glib/tests/markups/fail-19.expected | 1 + + glib/tests/markups/fail-19.gmarkup | 1 + + glib/tests/markups/fail-2.expected | 1 + + glib/tests/markups/fail-2.gmarkup | 1 + + glib/tests/markups/fail-20.expected | 1 + + glib/tests/markups/fail-20.gmarkup | 1 + + glib/tests/markups/fail-21.expected | 1 + + glib/tests/markups/fail-21.gmarkup | 1 + + glib/tests/markups/fail-22.expected | 2 + + glib/tests/markups/fail-22.gmarkup | 1 + + glib/tests/markups/fail-23.expected | 4 + + glib/tests/markups/fail-23.gmarkup | 2 + + glib/tests/markups/fail-24.expected | 1 + + glib/tests/markups/fail-24.gmarkup | 1 + + glib/tests/markups/fail-25.expected | 1 + + glib/tests/markups/fail-25.gmarkup | 1 + + glib/tests/markups/fail-26.expected | 2 + + glib/tests/markups/fail-26.gmarkup | 1 + + glib/tests/markups/fail-27.expected | 2 + + glib/tests/markups/fail-27.gmarkup | 1 + + glib/tests/markups/fail-28.expected | 2 + + glib/tests/markups/fail-28.gmarkup | 1 + + glib/tests/markups/fail-29.expected | 2 + + glib/tests/markups/fail-29.gmarkup | 1 + + glib/tests/markups/fail-3.gmarkup | 49 ++++++ + glib/tests/markups/fail-30.expected | 2 + + glib/tests/markups/fail-30.gmarkup | 1 + + glib/tests/markups/fail-31.expected | 2 + + glib/tests/markups/fail-31.gmarkup | 1 + + glib/tests/markups/fail-32.expected | 2 + + glib/tests/markups/fail-32.gmarkup | 1 + + glib/tests/markups/fail-33.expected | 2 + + glib/tests/markups/fail-33.gmarkup | 1 + + glib/tests/markups/fail-34.expected | 2 + + glib/tests/markups/fail-34.gmarkup | 1 + + glib/tests/markups/fail-35.expected | 2 + + glib/tests/markups/fail-35.gmarkup | 1 + + glib/tests/markups/fail-36.gmarkup | 1 + + glib/tests/markups/fail-37.expected | 1 + + glib/tests/markups/fail-37.gmarkup | 1 + + glib/tests/markups/fail-38.expected | 3 + + glib/tests/markups/fail-38.gmarkup | 1 + + glib/tests/markups/fail-39.expected | 3 + + glib/tests/markups/fail-39.gmarkup | 1 + + glib/tests/markups/fail-4.expected | 1 + + glib/tests/markups/fail-4.gmarkup | 1 + + glib/tests/markups/fail-40.expected | 2 + + glib/tests/markups/fail-40.gmarkup | 1 + + glib/tests/markups/fail-5.expected | 1 + + glib/tests/markups/fail-5.gmarkup | 2 + + glib/tests/markups/fail-6.expected | 1 + + glib/tests/markups/fail-6.gmarkup | 2 + + glib/tests/markups/fail-7.expected | 1 + + glib/tests/markups/fail-7.gmarkup | 2 + + glib/tests/markups/fail-8.expected | 3 + + glib/tests/markups/fail-8.gmarkup | 2 + + glib/tests/markups/fail-9.expected | 1 + + glib/tests/markups/fail-9.gmarkup | 2 + + glib/tests/markups/valid-1.expected | 37 +++++ + glib/tests/markups/valid-1.gmarkup | 9 ++ + glib/tests/markups/valid-10.expected | 6 + + glib/tests/markups/valid-10.gmarkup | 6 + + glib/tests/markups/valid-11.expected | 3 + + glib/tests/markups/valid-11.gmarkup | 2 + + glib/tests/markups/valid-2.expected | 51 ++++++ + glib/tests/markups/valid-2.gmarkup | 49 ++++++ + glib/tests/markups/valid-3.expected | 61 ++++++++ + glib/tests/markups/valid-3.gmarkup | 10 ++ + glib/tests/markups/valid-4.expected | 29 ++++ + glib/tests/markups/valid-4.gmarkup | 8 + + glib/tests/markups/valid-5.expected | 4 + + glib/tests/markups/valid-5.gmarkup | 2 + + glib/tests/markups/valid-6.expected | 6 + + glib/tests/markups/valid-6.gmarkup | 4 + + glib/tests/markups/valid-7.expected | 4 + + glib/tests/markups/valid-7.gmarkup | 2 + + glib/tests/markups/valid-8.expected | 5 + + glib/tests/markups/valid-8.gmarkup | 1 + + glib/tests/markups/valid-9.expected | 3 + + glib/tests/markups/valid-9.gmarkup | 2 + + tests/Makefile.am | 8 +- + tests/markup-test.c | 214 -------------------------- + tests/markups/expected-1 | 37 ----- + tests/markups/expected-10 | 6 - + tests/markups/expected-11 | 3 - + tests/markups/expected-2 | 51 ------ + tests/markups/expected-3 | 61 -------- + tests/markups/expected-4 | 29 ---- + tests/markups/expected-5 | 4 - + tests/markups/expected-6 | 6 - + tests/markups/expected-7 | 4 - + tests/markups/expected-8 | 5 - + tests/markups/expected-9 | 3 - + tests/markups/fail-1.gmarkup | 0 + tests/markups/fail-10.gmarkup | 2 - + tests/markups/fail-11.gmarkup | 4 - + tests/markups/fail-12.gmarkup | 1 - + tests/markups/fail-13.gmarkup | 1 - + tests/markups/fail-14.gmarkup | 2 - + tests/markups/fail-15.gmarkup | 3 - + tests/markups/fail-16.gmarkup | 1 - + tests/markups/fail-17.gmarkup | 1 - + tests/markups/fail-18.gmarkup | 1 - + tests/markups/fail-19.gmarkup | 1 - + tests/markups/fail-2.gmarkup | 1 - + tests/markups/fail-20.gmarkup | 1 - + tests/markups/fail-21.gmarkup | 1 - + tests/markups/fail-22.gmarkup | 1 - + tests/markups/fail-23.gmarkup | 2 - + tests/markups/fail-24.gmarkup | 1 - + tests/markups/fail-25.gmarkup | 1 - + tests/markups/fail-26.gmarkup | 1 - + tests/markups/fail-27.gmarkup | 1 - + tests/markups/fail-28.gmarkup | 1 - + tests/markups/fail-29.gmarkup | 1 - + tests/markups/fail-3.gmarkup | 49 ------ + tests/markups/fail-30.gmarkup | 1 - + tests/markups/fail-31.gmarkup | 1 - + tests/markups/fail-32.gmarkup | 1 - + tests/markups/fail-33.gmarkup | 1 - + tests/markups/fail-34.gmarkup | 1 - + tests/markups/fail-35.gmarkup | 1 - + tests/markups/fail-36.gmarkup | 1 - + tests/markups/fail-37.gmarkup | 1 - + tests/markups/fail-38.gmarkup | 1 - + tests/markups/fail-39.gmarkup | 1 - + tests/markups/fail-4.gmarkup | 1 - + tests/markups/fail-40.gmarkup | 1 - + tests/markups/fail-5.gmarkup | 2 - + tests/markups/fail-6.gmarkup | 2 - + tests/markups/fail-7.gmarkup | 2 - + tests/markups/fail-8.gmarkup | 2 - + tests/markups/fail-9.gmarkup | 2 - + tests/markups/valid-1.gmarkup | 9 -- + tests/markups/valid-10.gmarkup | 6 - + tests/markups/valid-11.gmarkup | 2 - + tests/markups/valid-2.gmarkup | 49 ------ + tests/markups/valid-3.gmarkup | 10 -- + tests/markups/valid-4.gmarkup | 8 - + tests/markups/valid-5.gmarkup | 2 - + tests/markups/valid-6.gmarkup | 4 - + tests/markups/valid-7.gmarkup | 2 - + tests/markups/valid-8.gmarkup | 1 - + tests/markups/valid-9.gmarkup | 2 - + tests/run-markup-tests.sh | 41 ----- + 167 files changed, 789 insertions(+), 671 deletions(-) + +commit aa196c60df8bbe6f8e998780579b12863098107f +Author: Matthias Clasen +AuthorDate: Thu Jul 29 02:20:43 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:21 2010 -0400 + + Improve coverage of buffered output stream tests + + gio/tests/buffered-output-stream.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit ffa938fc652543c70c8bada3f65f1626e127731b +Author: Matthias Clasen +AuthorDate: Thu Jul 29 02:20:29 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:21 2010 -0400 + + Improve coverage of credentials tests + + gio/tests/gdbus-peer.c | 27 +++++++++++++++++++++++++++ + 1 file changed, 27 insertions(+) + +commit 670528c187b0ae59a8fca1b6921722461992a9fb +Author: Matthias Clasen +AuthorDate: Thu Jul 29 02:20:15 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:21 2010 -0400 + + Improve coverage of converter stream tests + + gio/tests/converter-stream.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 9794a648a9af25a9d409ce6aef97ac95f94c5cfb +Author: Matthias Clasen +AuthorDate: Thu Jul 29 02:19:46 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:21 2010 -0400 + + Improve coverage of memory stream tests + + gio/tests/memory-input-stream.c | 63 + ++++++++++++++++++++++++++++++++++++++++ + gio/tests/memory-output-stream.c | 29 +++++++++++++++++- + 2 files changed, 91 insertions(+), 1 deletion(-) + +commit 620582e59c9caf355c12b072258ea74ad1aadc1e +Author: Matthias Clasen +AuthorDate: Thu Jul 29 02:19:27 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:20 2010 -0400 + + Remove redundant include + + gio/tests/unix-streams.c | 1 - + 1 file changed, 1 deletion(-) + +commit 17d4898d75fc41038a1d13740bfe1279ca902235 +Author: Matthias Clasen +AuthorDate: Thu Jul 29 02:19:01 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:20 2010 -0400 + + Improve coverage of icon tests + + gio/tests/g-icon.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 7710c50fb22d44bc8554ad811418141490e09f78 +Author: Matthias Clasen +AuthorDate: Thu Jul 29 02:18:45 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:20 2010 -0400 + + Improve coverage of application tests + + gio/tests/application.c | 36 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 36 insertions(+) + +commit 758c3216cddf35721b3c1fc244f93f6169d9a84b +Author: Matthias Clasen +AuthorDate: Thu Jul 29 00:54:23 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:20 2010 -0400 + + Improve coverage of stream tests + + gio/tests/buffered-input-stream.c | 2 ++ + gio/tests/converter-stream.c | 4 ++++ + gio/tests/data-input-stream.c | 31 +++++++++++++++++++++++++++++++ + gio/tests/data-output-stream.c | 32 ++++++++++++++++++++++++++++---- + 4 files changed, 65 insertions(+), 4 deletions(-) + +commit c6b050716717529a4b31f4eb2bae3fef06277bb3 +Author: Matthias Clasen +AuthorDate: Thu Jul 29 00:53:30 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:20 2010 -0400 + + Reenable unix-streams test + + gio/tests/Makefile.am | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 04c7abba11abb54fe8f43b027ed42ed4ff46aa82 +Author: Matthias Clasen +AuthorDate: Thu Jul 29 00:52:34 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:20 2010 -0400 + + Work around deadlock in unix-streams test + + gio/tests/unix-streams.c | 23 ++++++++++++++++++++++- + 1 file changed, 22 insertions(+), 1 deletion(-) + +commit b463b2ea25d214c9ba3fc2c5a77b3d321eb842d1 +Author: Matthias Clasen +AuthorDate: Wed Jul 28 16:59:11 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:20 2010 -0400 + + Add tests about file associations + + gio/tests/appinfo.c | 62 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 62 insertions(+) + +commit 60932b2f3deeb612a7e6c097973f2fb17f557202 +Author: Matthias Clasen +AuthorDate: Wed Jul 28 16:05:19 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:20 2010 -0400 + + Improve regex test coverage + + glib/tests/regex.c | 106 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 106 insertions(+) + +commit 154880b2ad9064ac78c8e1d55a2ae96bf48d159a +Author: Matthias Clasen +AuthorDate: Tue Jul 27 18:21:15 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:19 2010 -0400 + + Remove duplicate utf8 strreverse test + + Also add some tests for find next/prev char. + + glib/tests/utf8-misc.c | 18 ++++++++++++++++++ + glib/tests/utf8-pointer.c | 41 ++++++++++++++++++++++++++++++++--------- + 2 files changed, 50 insertions(+), 9 deletions(-) + +commit 0e48b7ea7c436dde8e1e3d432a4c0dd6da7055fa +Author: Matthias Clasen +AuthorDate: Tue Jul 27 16:52:36 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:19 2010 -0400 + + Improve strfuncs test coverage a bit + + glib/tests/strfuncs.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit c617e94cf111b435cc2765b9ffcb219fec7b4016 +Author: Matthias Clasen +AuthorDate: Tue Jul 27 16:25:13 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:19 2010 -0400 + + Improve option context test coverage a bit + + glib/tests/option-context.c | 116 + ++++++++++++++++++++++++++++---------------- + 1 file changed, 74 insertions(+), 42 deletions(-) + +commit c4dd9fa41b9ec8387e765d9463e181d0be33c5ae +Author: Matthias Clasen +AuthorDate: Tue Jul 27 16:24:56 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:19 2010 -0400 + + Move markup collect tests to the test framework + + glib/tests/Makefile.am | 3 ++ + glib/tests/markup-collect.c | 113 + ++++++++++++++++---------------------------- + 2 files changed, 43 insertions(+), 73 deletions(-) + +commit 13ac9f94fdc1fcbf2be15e65af57c362a1c71f5d +Author: Matthias Clasen +AuthorDate: Tue Jul 27 16:24:08 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:19 2010 -0400 + + Add some more GFile tests + + gio/tests/file.c | 38 ++++++++ + glib/tests/markup-collect.c | 221 + ++++++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 1 - + tests/markup-collect.c | 221 + -------------------------------------------- + 4 files changed, 259 insertions(+), 222 deletions(-) + +commit 8263d691cb0cf5d2c80d1c949a3c693d333510c0 +Author: Matthias Clasen +AuthorDate: Tue Jul 27 14:01:48 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:19 2010 -0400 + + Improve compressor test coverage a bit + + gio/tests/converter-stream.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit b77a19f238e34cd2ba7ecf204beacc7252477605 +Author: Matthias Clasen +AuthorDate: Tue Jul 27 01:00:55 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:19 2010 -0400 + + Test g_settings_list_schemas + + gio/tests/gsettings.c | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit b4ed2af52fbe195aab3771066dac71172f8716ed +Author: Matthias Clasen +AuthorDate: Tue Jul 27 00:17:20 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:19 2010 -0400 + + Improve GNode test coverage a bit + + glib/tests/node.c | 117 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 117 insertions(+) + +commit 568eeeafe1636bba440dc18cd34c4fce551ddd15 +Author: Matthias Clasen +AuthorDate: Mon Jul 26 23:24:31 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:18 2010 -0400 + + Add some logging tests + + glib/tests/Makefile.am | 3 + + glib/tests/logging.c | 147 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 150 insertions(+) + +commit 2b113e4a9ad375691d72347d31999fd5654f5361 +Author: Matthias Clasen +AuthorDate: Mon Jul 26 23:06:33 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:18 2010 -0400 + + Silence log handler tests + + glib/tests/testing.c | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +commit b91cde61408bfe58c849b44ca3100ba4c5f8a3fc +Author: Matthias Clasen +AuthorDate: Mon Jul 26 22:13:25 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:18 2010 -0400 + + Improve tree test coverage + + glib/tests/tree.c | 24 +++++++++++++++++++++++- + 1 file changed, 23 insertions(+), 1 deletion(-) + +commit c972d4df64299b335012b7af2b902589d191f8e0 +Author: Matthias Clasen +AuthorDate: Mon Jul 26 22:12:59 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:18 2010 -0400 + + Move markup escape tests to test framework + + glib/tests/Makefile.am | 4 ++ + glib/tests/markup-escape.c | 159 + +++++++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 3 - + tests/markup-escape-test.c | 132 ------------------------------------- + 4 files changed, 163 insertions(+), 135 deletions(-) + +commit a804e22ed047514d7f267a8e991eca82bc5eaf57 +Author: Matthias Clasen +AuthorDate: Mon Jul 26 21:19:04 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:18 2010 -0400 + + More pattern tests + + glib/tests/pattern.c | 400 + ++++++++++++++++++++++----------------------------- + 1 file changed, 168 insertions(+), 232 deletions(-) + +commit d3f00313617c3e646d5a236f1f06a84a07279c2a +Author: Matthias Clasen +AuthorDate: Mon Jul 26 21:18:22 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:18 2010 -0400 + + Add tests for g_utf8_strreverse + + glib/tests/utf8-misc.c | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +commit caa9453b72ca3a7b7bafb8cafac84934f7036682 +Author: Matthias Clasen +AuthorDate: Mon Jul 26 21:17:56 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:18 2010 -0400 + + Fix a warning + + gio/tests/network-address.c | 3 ++- + glib/pcre/Makefile.am | 5 ----- + glib/pcre/pcre_internal.h | 2 +- + 3 files changed, 3 insertions(+), 7 deletions(-) + +commit d0750c9d6e2b0479a47f93c545607ac43da0b1dd +Author: Matthias Clasen +AuthorDate: Mon Jul 26 21:16:03 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:18 2010 -0400 + + Don't leak in converter test + + gio/tests/converter-stream.c | 4 + + glib/tests/Makefile.am | 2 + + glib/tests/pattern.c | 308 + +++++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 2 - + tests/patterntest.c | 308 + ------------------------------------------- + 5 files changed, 314 insertions(+), 310 deletions(-) + +commit 63bdeb0dab81a4aed4a2e215cae4669de7f583c3 +Author: Matthias Clasen +AuthorDate: Mon Jul 26 20:22:33 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:17 2010 -0400 + + Fix an icon test + + gio/tests/g-icon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a8f83ea8340459e22a2f2d18f4aa410ccf1cde34 +Author: Matthias Clasen +AuthorDate: Mon Jul 26 19:07:16 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:17 2010 -0400 + + Add tests for GNetworkAddress + + gio/tests/Makefile.am | 8 ++-- + gio/tests/network-address.c | 91 + +++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 95 insertions(+), 4 deletions(-) + +commit e103b93694be98b5b7bfcfbb22ef0be014079f1a +Author: Matthias Clasen +AuthorDate: Mon Jul 26 18:40:17 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:17 2010 -0400 + + Drop an unneeded if + + gio/gnetworkaddress.c | 3 +- + gio/tests/g-icon.c | 112 ++++++++++++++++++++++++++++++++++++++++++++- + gio/tests/icons.c | 122 + -------------------------------------------------- + 3 files changed, 112 insertions(+), 125 deletions(-) + +commit 9d93dc5554b7b7da4a724d6b9d464cb8be1e0475 +Author: Matthias Clasen +AuthorDate: Mon Jul 26 18:15:24 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:17 2010 -0400 + + Remove some unused pcre code + + glib/pcre/pcre_info.c | 93 ---------------------------- + glib/pcre/pcre_maketables.c | 143 + -------------------------------------------- + glib/pcre/pcre_refcount.c | 82 ------------------------- + glib/pcre/pcre_valid_utf8.c | 14 ----- + glib/pcre/pcre_version.c | 90 ---------------------------- + 5 files changed, 422 deletions(-) + +commit 9fc3c980ccbaa6772f9b97b60c786546b67ae8b4 +Author: Matthias Clasen +AuthorDate: Mon Jul 26 17:59:18 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:17 2010 -0400 + + Add some volume monitor tests + + Although not much of this is easily testable. + + gio/tests/Makefile.am | 4 + + gio/tests/volumemonitor.c | 178 +++++++++++++++++++++++++++ + glib/tests/Makefile.am | 3 + + glib/tests/shell.c | 229 +++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 2 - + tests/shell-test.c | 297 + ---------------------------------------------- + 6 files changed, 414 insertions(+), 299 deletions(-) + +commit e5a72ae3c415ae6e8437a0714f48311b534684c9 +Author: Matthias Clasen +AuthorDate: Sun Jul 25 19:12:51 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 30 19:51:17 2010 -0400 + + Move queue tests to the test framework + + glib/tests/Makefile.am | 3 + + glib/tests/queue.c | 1043 + ++++++++++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 2 - + tests/queue-test.c | 962 + -------------------------------------------- + 4 files changed, 1046 insertions(+), 964 deletions(-) + +commit dbf230991bab03e64b5bc1a2bb5ab618de2f9212 +Author: David Zeuthen +AuthorDate: Fri Jul 30 16:33:29 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri Jul 30 16:34:13 2010 -0400 + + Bug 625628 – GDBusProxy: wrong property name sorting + + https://bugzilla.gnome.org/show_bug.cgi?id=625628 + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit aefc6df6bbf318c01eff32e631cc796aabcbf31f +Author: David Zeuthen +AuthorDate: Fri Jul 30 16:30:34 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri Jul 30 16:30:34 2010 -0400 + + Fix gschema-compile test + + This was broken by commit 1b5b87bfa0f5435dd6e973a4e36076db083dc5c7 + + Signed-off-by: David Zeuthen + + gio/tests/gschema-compile.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d2d97a214d1d9e96f09955212e669c3c9447ff73 +Author: David Zeuthen +AuthorDate: Fri Jul 30 16:01:03 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri Jul 30 16:06:18 2010 -0400 + + Bug 625584 – Crashes application on unref with signal subscription + + Don't do too much work in the finalizer - in particular, there's no + need to send RemoveMatch() messages to the bus daemon since we're + going to sever the connection and the bus will garbage collect + anyway. In this case it crashed the process. + + Also add a test case that checks that the appropriate GDestroyNotify + callbacks are called when unreffing a connection with either 1) + exported objects; 2) signal subscriptions or 3) filter functions + .. yes, ideally apps would unregister such callbacks before giving up + their ref but that's not how things work :-) + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 19 ++++--- + gio/tests/gdbus-connection.c | 132 + +++++++++++++++++++++++++++++++++++++++---- + 2 files changed, 134 insertions(+), 17 deletions(-) + +commit 1b5b87bfa0f5435dd6e973a4e36076db083dc5c7 +Author: Ryan Lortie +AuthorDate: Fri Jul 30 21:10:53 2010 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jul 30 21:13:05 2010 +0200 + + GSettings: Mark some strings for cat translation + + *miaou* + + gio/gschema-compile.c | 105 + +++++++++++++++++++++++++------------------------- + 1 file changed, 52 insertions(+), 53 deletions(-) + +commit 14f17c13889215adbc9c56e4ea4f46662fa68ee5 +Author: David Zeuthen +AuthorDate: Fri Jul 30 11:40:00 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri Jul 30 11:40:00 2010 -0400 + + GDBusConnection: Fix up debug output when completing calls + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 173977a7015c45e5dc3c43534cd3deb81159ad1f +Author: David Zeuthen +AuthorDate: Fri Jul 30 11:26:43 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri Jul 30 11:26:43 2010 -0400 + + GCredentials: use effective uid/gid + + Otherwise e.g. setuid root processes can't connect to the system + bus. This was discovered when porting PolicyKit's pkexec(1) command to + a PolicyKit library using GDBus. + + Signed-off-by: David Zeuthen + + docs/reference/glib/tmpl/glib-unused.sgml | 40 + ++++++++++++++++++++++++++++++ + docs/reference/glib/tmpl/messages.sgml | 27 +++++--------------- + docs/reference/glib/tmpl/version.sgml | 41 + ------------------------------- + gio/gcredentials.c | 4 +-- + 4 files changed, 48 insertions(+), 64 deletions(-) + +commit f9845bcbece022e9ec55c18b0a855b718155a1d1 +Author: Ryan Lortie +AuthorDate: Thu Jul 29 22:04:43 2010 +0200 +Commit: Ryan Lortie +CommitDate: Thu Jul 29 22:04:43 2010 +0200 + + *bump* + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1fd1543bdcc6ee897b1ebd566cbcbfd9d76e386c +Author: Ryan Lortie +AuthorDate: Thu Jul 29 16:52:34 2010 +0200 +Commit: Ryan Lortie +CommitDate: Thu Jul 29 16:52:34 2010 +0200 + + add one more NEWS item + + NEWS | 36 +++++++++++++++++++----------------- + 1 file changed, 19 insertions(+), 17 deletions(-) + +commit 8673f0b06c255e36189950b671911c38e91affd5 +Author: Eduardo Lima Mitev +AuthorDate: Mon Jul 26 17:21:14 2010 +0200 +Commit: Eduardo Lima Mitev +CommitDate: Thu Jul 29 14:06:00 2010 +0200 + + GIO: Add G-I annotations for several methods + + Specifically: + - g_io_stream_get_input/output_stream() + - g_socket_client_get_local_address() + - g_socket_connection_get_socket() + - g_socket_listener_add_address() + - g_socket_listener_accept_socket() + - g_socket_listener_accept() + - g_io_extension_point_get_extensions() + + gio/giomodule.c | 7 ++++--- + gio/giostream.c | 6 ++++-- + gio/gsocketclient.c | 2 +- + gio/gsocketconnection.c | 2 +- + gio/gsocketlistener.c | 6 +++--- + 5 files changed, 13 insertions(+), 10 deletions(-) + +commit e4f90c82624a623098c53c7158a46bf702ff5fc9 +Author: Ryan Lortie +AuthorDate: Thu Jul 29 12:01:46 2010 +0200 +Commit: Ryan Lortie +CommitDate: Thu Jul 29 12:01:46 2010 +0200 + + get a start on the NEWS + + NEWS | 67 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 67 insertions(+) + +commit 015df7e369cf37929acfebec0a705d5531ac355a +Author: Owen Taylor +AuthorDate: Wed Jul 28 15:15:57 2010 -0400 +Commit: Colin Walters +CommitDate: Wed Jul 28 15:15:57 2010 -0400 + + [gschema-compile] fix segfault + + If files are passed on the command line and we don't set + override_files + at all, don't try to read from the array. + + gio/gschema-compile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 19ef26c9c5e088817e2a392f79f343021f2259c8 +Author: David Zeuthen +AuthorDate: Wed Jul 28 12:58:04 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jul 28 12:58:04 2010 -0400 + + Use correct type for GDBusServer:active property + + It's a boolean, not a string. + + Signed-off-by: David Zeuthen + + gio/gdbusserver.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit 133e87ca87cc86e6410bb9e19eacd8ddb11eadfc +Author: David Zeuthen +AuthorDate: Wed Jul 28 12:48:17 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jul 28 12:51:09 2010 -0400 + + GDBusConnection: Pass the GObject to g_simple_async_result_new() + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a6f1bb4e177750ef9c50a3813eb3be867a927fbe +Author: Ryan Lortie +AuthorDate: Tue Jul 27 22:56:30 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jul 28 13:47:34 2010 +0200 + + Add support for vendor override files + + You can drop a key-file in the schema directory that looks like: + + [org.gtk.Example] + key='value' + + to override the default value of 'key' in schema 'org.gtk.Example'. + + gio/gschema-compile.c | 154 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 154 insertions(+) + +commit 723692dfb91a2de8c5337e9e1b50c2cf3abfb374 +Author: Fran Diéguez +AuthorDate: Tue Jul 27 17:47:22 2010 +0200 +Commit: Fran Diéguez +CommitDate: Tue Jul 27 17:47:22 2010 +0200 + + Updated Galician translations + + po/gl.po | 54 +++++++++++++++++++++++++++++++----------------------- + 1 file changed, 31 insertions(+), 23 deletions(-) + +commit 12d0cbdac555db479e4c6631bfd15d3c8a5dc2ed +Author: Jorge González +AuthorDate: Mon Jul 26 20:58:59 2010 +0200 +Commit: Jorge González +CommitDate: Mon Jul 26 20:58:59 2010 +0200 + + Updated Spanish translation + + po/es.po | 176 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 99 insertions(+), 77 deletions(-) + +commit e8923ff232bb34f27dfda8ba19df1af379da892c +Author: Yaron Shahrabani +AuthorDate: Sat Jul 24 13:31:31 2010 +0300 +Commit: Yaron Shahrabani +CommitDate: Sat Jul 24 13:31:31 2010 +0300 + + Updated Hebrew translation. + + po/he.po | 44 ++++++++++++++++++++++++++------------------ + 1 file changed, 26 insertions(+), 18 deletions(-) + +commit 633d9efc62eca490b489e05d571681f8b15d8aca +Author: Murray Cumming +AuthorDate: Fri Jul 23 13:24:43 2010 +0200 +Commit: Murray Cumming +CommitDate: Fri Jul 23 13:25:18 2010 +0200 + + [gio]: gioenums.h: Remove trailing comma again. + + gio/gioenums.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 86040bb2eb11ad9501cc0c94754e8d8f29ba8f17 +Author: Benjamin Otte +AuthorDate: Fri Jul 23 10:51:14 2010 +0200 +Commit: Benjamin Otte +CommitDate: Fri Jul 23 10:52:51 2010 +0200 + + Revert "notify: Remove unused g_object_notify_queue_clear()" + + This reverts commit 0201a81f04ae5fd46c6db25859e90dde1fc35d4b and adds + locks in the right place. + + As this file is a public header (see last commit), we cannot just + remove + functions from it. + + gobject/gobjectnotifyqueue.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +commit 2819dd60b7b2feaa0609c1017e20105852ca92e4 +Author: Benjamin Otte +AuthorDate: Fri Jul 23 10:49:26 2010 +0200 +Commit: Benjamin Otte +CommitDate: Fri Jul 23 10:52:51 2010 +0200 + + notify: Readd g_object_notify_queue_from_object() + + gobjectnotifyqueue.c is a public header, so we cannot remove + files from + it. (Yes you read that right, this .c file is a public header. See + your + installation directory.) + + gobject/gobjectnotifyqueue.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit 4a83ee208fe08533a43a51c8fd2bd83794a1cd27 +Author: Tao Wang +AuthorDate: Fri Jul 23 13:18:43 2010 +0800 +Commit: Aron Xu +CommitDate: Fri Jul 23 13:18:43 2010 +0800 + + Complete Simplified Chinese translation. + + po/zh_CN.po | 24 +++++++----------------- + 1 file changed, 7 insertions(+), 17 deletions(-) + +commit fd0a2b27891ec38e0190916af761c3daf4daa78f +Author: Tao Wang +AuthorDate: Fri Jul 23 13:05:37 2010 +0800 +Commit: Aron Xu +CommitDate: Fri Jul 23 13:05:37 2010 +0800 + + Update Simplified Chinese translation. + + po/zh_CN.po | 359 + +++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 198 insertions(+), 161 deletions(-) + +commit d5bd531d96a48ba2dac84e0ac7bffa4cf5481738 +Author: Ryan Lortie +AuthorDate: Thu Jul 22 18:39:50 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 22 18:39:50 2010 -0400 + + Cleanup the GSettingsBackend API + + This is a substantial ABI break. Rebuild dconf. + + gio/gdelayedsettingsbackend.c | 15 ++---- + gio/gkeyfilesettingsbackend.c | 18 +------- + gio/gmemorysettingsbackend.c | 4 +- + gio/gnullsettingsbackend.c | 12 +---- + gio/gsettings-tool.c | 102 + ++++++++++++++++++++++++++++++++++++++++- + gio/gsettingsbackend.c | 22 +-------- + gio/gsettingsbackend.h | 19 +++----- + gio/gsettingsbackendinternal.h | 2 +- + gio/tests/gsettings.c | 5 ++ + 9 files changed, 125 insertions(+), 74 deletions(-) + +commit aed440815ec5c87f2439d723b60b8255578afdff +Author: Ryan Lortie +AuthorDate: Thu Jul 22 17:49:40 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 22 17:50:05 2010 -0400 + + GSettings: add g_settings_reset() + + Resets a key to its default value. + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdelayedsettingsbackend.c | 37 + ++++++++++++++++++++++++++++++------- + gio/gio.symbols | 1 + + gio/gmemorysettingsbackend.c | 20 +++++++++++++++++++- + gio/gsettings.c | 24 +++++++++++++++++++++++- + gio/gsettings.h | 2 ++ + 6 files changed, 76 insertions(+), 9 deletions(-) + +commit f6d3e224dfa9e8b69403a8c79a27a58b5c9f66b7 +Author: Olivier Crête +AuthorDate: Thu Jul 22 21:52:54 2010 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jul 22 21:56:21 2010 +0200 + + notify: Add tests for threadsafe object notifies + + https://bugzilla.gnome.org/show_bug.cgi?id=166020 + + tests/.gitignore | 2 + + tests/refcount/Makefile.am | 2 + + tests/refcount/properties3.c | 204 + +++++++++++++++++++++++++++++++++++++++++++ + tests/refcount/properties4.c | 169 +++++++++++++++++++++++++++++++++++ + 4 files changed, 377 insertions(+) + +commit 0483ef000ae323415bb0c7b762dd587f1384b1f3 +Author: Benjamin Otte +AuthorDate: Thu Jul 22 21:51:28 2010 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jul 22 21:56:21 2010 +0200 + + notify: Make dedup code clearer + + A for loops seems easier to understand to me than gotos. + + gobject/gobjectnotifyqueue.c | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +commit 9026b11e380a9b6479c0fcb852a5aba297ed9dd4 +Author: Olivier Crête +AuthorDate: Thu Jul 22 21:26:32 2010 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jul 22 21:56:20 2010 +0200 + + notify: Make GObject property change notifications thread safe + + Adds locking around object property change notification handling. The + notifications are only emitted after all threads have called + g_object_thaw_notify(). + + https://bugzilla.gnome.org/show_bug.cgi?id=166020 + + gobject/gobjectnotifyqueue.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit 65797f7e54061a21866261d00a1c5533cd6a4f81 +Author: Olivier Crête +AuthorDate: Thu Jul 22 21:20:35 2010 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jul 22 21:56:20 2010 +0200 + + notify: Remove g_object_notify_queue_from_object() + + The function will not be safe with object locking in place, so + we remove + it. The workaround is somewhat ugly, but it works. + + https://bugzilla.gnome.org/show_bug.cgi?id=166020 + + gobject/gobject.c | 14 ++++++++------ + gobject/gobjectnotifyqueue.c | 7 ------- + 2 files changed, 8 insertions(+), 13 deletions(-) + +commit 83026092eba98c2e6e0a96112555f980382a99e7 +Author: Olivier Crête +AuthorDate: Thu Jul 22 20:25:00 2010 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jul 22 21:56:20 2010 +0200 + + notify: Refactor g_object_notify_queue_thaw() + + This adds better error reporting and simplifies the code for adding + thread safety. + + https://bugzilla.gnome.org/show_bug.cgi?id=166020 + + gobject/gobjectnotifyqueue.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +commit 0201a81f04ae5fd46c6db25859e90dde1fc35d4b +Author: Olivier Crête +AuthorDate: Thu Jul 22 09:02:18 2010 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jul 22 21:56:20 2010 +0200 + + notify: Remove unused g_object_notify_queue_clear() + + https://bugzilla.gnome.org/show_bug.cgi?id=166020 + + gobject/gobjectnotifyqueue.c | 11 ----------- + 1 file changed, 11 deletions(-) + +commit a2c5bba31d19dcd7f3726c99280ff794cbf744a9 +Author: Benjamin Otte +AuthorDate: Thu Jul 22 08:52:25 2010 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jul 22 21:56:20 2010 +0200 + + notify: Emit a g_critical() instead g_return_if_fail()ing + + This does not change the code semantically in any way but avoids a + return in the middle of the code. + + https://bugzilla.gnome.org/show_bug.cgi?id=166020 + + gobject/gobjectnotifyqueue.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 24161d9c4621ef0a674c31146e9fd0d2e9ad8d0f +Author: Benjamin Otte +AuthorDate: Thu Jul 22 20:24:29 2010 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jul 22 21:56:20 2010 +0200 + + binding: Cast to avoid compiler warning + + gobject/tests/binding.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit dd1d1b3510536d4156eb79bb7161023c464e721f +Author: Benjamin Otte +AuthorDate: Thu Jul 22 20:23:28 2010 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jul 22 21:56:20 2010 +0200 + + tests: Use GPOINTER_TO_SIZE() instead of just casting to guint + + a) gcc doesn't like this ("Cast to pointer of different size) + b) It compares only half of the pointer + + gio/tests/memory-output-stream.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 284ea16b9d94b28b632063333140b99e419d6b0a +Author: Benjamin Otte +AuthorDate: Thu Jul 22 20:23:04 2010 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jul 22 21:56:20 2010 +0200 + + inotify: Constify function argument + + gcc complained... + + gio/inotify/inotify-helper.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dc7348b305c72c757f8ed1d8ba2cae2a19a3c684 +Author: Ryan Lortie +AuthorDate: Thu Jul 22 11:49:30 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 22 11:49:30 2010 -0400 + + Fix very small leak in the GSettings test + + gio/tests/gsettings.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 23a904fc1520b06aefa1e51e690d2e7b2fcc3ead +Author: Ryan Lortie +AuthorDate: Wed Jul 21 20:10:31 2010 -0700 +Commit: Ryan Lortie +CommitDate: Thu Jul 22 11:34:57 2010 -0400 + + Bug 624991 - GSettings mapping for G_TYPE_STRV + + Added default mapping for G_TYPE_STRV based on a patch from Garrett + Regier. + + Add a test case. + + gio/gsettings-mapping.c | 18 +++++++++++++++++- + gio/tests/gsettings.c | 31 +++++++++++++++++++++++++++++++ + gio/tests/org.gtk.test.gschema.xml | 3 +++ + 3 files changed, 51 insertions(+), 1 deletion(-) + +commit 76aef137c8ba8410bd2b5bc31873db5d60dad961 +Author: Fran Diéguez +AuthorDate: Thu Jul 22 16:23:18 2010 +0200 +Commit: Fran Diéguez +CommitDate: Thu Jul 22 16:23:18 2010 +0200 + + Updated Galician translations + + po/gl.po | 132 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 70 insertions(+), 62 deletions(-) + +commit 8f80ff02af2fabd22d5aac1d1b853d1ac7865e85 +Author: Behdad Esfahbod +AuthorDate: Wed Jul 21 16:08:19 2010 -0400 +Commit: Behdad Esfahbod +CommitDate: Wed Jul 21 16:11:35 2010 -0400 + + Bug 624968 - div by zero in g_malloc_n family + + glib/gmem.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5063d78baac684a1c53a6a1620ff94789026ae26 +Author: Yaron Shahrabani +AuthorDate: Wed Jul 21 19:11:53 2010 +0300 +Commit: Yaron Shahrabani +CommitDate: Wed Jul 21 19:11:53 2010 +0300 + + Updated Hebrew translation. + + po/he.po | 124 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 64 insertions(+), 60 deletions(-) + +commit 9b0a08449fd966aff7a6c164c9913b01106a37cc +Author: David Zeuthen +AuthorDate: Tue Jul 20 15:02:36 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue Jul 20 16:34:28 2010 -0400 + + GDBusAuthObserver: Fix docs + + Signed-off-by: David Zeuthen + + gio/gdbusauthobserver.c | 53 + ++++++++++--------------------------------------- + 1 file changed, 11 insertions(+), 42 deletions(-) + +commit 7eba41346e014649d8f9cf8ab675d1f091f7cf38 +Author: David Zeuthen +AuthorDate: Tue Jul 20 14:02:14 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue Jul 20 16:34:18 2010 -0400 + + Bug 617483 – Credentials passing + + - Make GCredentials instance and class structures private so it can't + be subclassed and we don't have to worry about ABI compat + issues. This also allows us to get rid of the GCredentialsPrivate + struct. + + - Add a GCredentialsType enumeration that is used whenever exchanging + pointers with the user. This allows us to support OSes with + multiple native credential types. In particular, it allows + supporting OSes where the native credential evolves or even changes + over time. + + - Add g_socket_get_credentials() method. + + - Add tests for g_socket_get_credentials(). Right now this is in the + GDBus peer-to-peer test case but we can change that later. + + - Move GTcpConnection into a separate gtk-doc page as was already + half-done with GUnixConnection. Also finish the GUnixConnection + move and ensure send_credentials() and receive_credentials() + methods are in the docs. Also nuke comment about GTcpConnection + being empty compared to its superclass. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 43 ++++++------ + gio/gcredentials.c | 135 + ++++++++++++++++++++++++------------ + gio/gcredentials.h | 44 ++---------- + gio/gio.symbols | 2 + + gio/gioenums.h | 15 ++++ + gio/gnetworkingprivate.h | 8 +++ + gio/gsocket.c | 72 ++++++++++++++++++- + gio/gsocket.h | 2 + + gio/gtcpconnection.c | 7 +- + gio/gunixconnection.c | 6 ++ + gio/gunixcredentialsmessage.c | 18 +++-- + gio/tests/gdbus-peer.c | 36 ++++++++++ + 13 files changed, 273 insertions(+), 116 deletions(-) + +commit b3cf5cbd0bfcfe53f82a72d276683aebd15d3828 +Author: David Zeuthen +AuthorDate: Tue Jul 20 12:14:30 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue Jul 20 12:14:30 2010 -0400 + + GDBusServer: Avoid handling incoming connections after stop() has + been called + + Without this fix, we'd sometimes run code after stop() and finalize() + to handle incoming requests. This was observed in the gdbus-peer test + case occasionally crashing: + + $ ./gdbus-peer + /gdbus/peer-to-peer: OK + /gdbus/delayed-message-processing: OK + /gdbus/nonce-tcp: + GLib-GObject-WARNING **: invalid uninstantiatable type `(null)' + in cast to `GDBusServer' + aborting... + + Signed-off-by: David Zeuthen + + gio/gdbusserver.c | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +commit 2be167f57c2b59d427aa54e2204bfaa906391b3e +Author: David Zeuthen +AuthorDate: Tue Jul 20 11:38:23 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue Jul 20 11:38:23 2010 -0400 + + GDBus: Add support for D-Bus type 'h' (ie. G_VARIANT_TYPE_HANDLE) + + This allows sending and receiving D-Bus messages with instances of the + 'h' D-Bus type. Unlike libdbus-1's dbus_message_iter_get_basic() + method, g_variant_get_handle() does not return a duplicated unix file + descriptor (that must be closed with close(2)) - instead, it returns + an index that can be used to get/dup the file descriptor from a + GUnixFDList object that can be obtained from the GDBusMessage object. + + Signed-off-by: David Zeuthen + + gio/gdbusmessage.c | 22 ++++++++++++++++++++++ + gio/tests/gdbus-serialization.c | 28 ++++++++++++++++++++++++++++ + 2 files changed, 50 insertions(+) + +commit 66388120d23a2fcec345874cc1a6259c08a6ef38 +Author: Ryan Lortie +AuthorDate: Tue Jul 20 10:45:52 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jul 20 10:49:30 2010 -0400 + + Move #include down + + Until after we include the glib stuff, so that we have G_OS_UNIX + defined. + + For some reason pulls in on Fedora so this + wasn't a problem, but many others have reported the issue. + + gio/gdbusaddress.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 2f5056755763e4628ed0e64954229e0a7dd9dbfb +Author: Jorge González +AuthorDate: Tue Jul 20 08:57:35 2010 +0200 +Commit: Jorge González +CommitDate: Tue Jul 20 08:57:35 2010 +0200 + + Updated Spanish translation + + po/es.po | 19 +++++++------------ + 1 file changed, 7 insertions(+), 12 deletions(-) + +commit c3737739aeeeac27e68d50d8c48dfa0ae7d23ee9 +Author: noch +AuthorDate: Tue Jul 20 10:33:32 2010 +0500 +Commit: noch +CommitDate: Tue Jul 20 10:33:32 2010 +0500 + + Corrected and updated the new version of the Armenian translation - + po file. + + po/hy.po | 3004 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 1617 insertions(+), 1387 deletions(-) + +commit 493d8cb2926c0d54a45fd1fdb7f383c730321aa8 +Author: David Zeuthen +AuthorDate: Mon Jul 19 17:03:07 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon Jul 19 17:05:28 2010 -0400 + + GDBus: Introduce G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL + + This is preferable to the current magical solution whereby the serial + is only rewritten if non-zero. In particular, it makes it easier to + send the same message on multiple connections without having to reset + the serial number. + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 45 ++++++++++++++++++++++----------------------- + gio/gioenums.h | 6 +++++- + 2 files changed, 27 insertions(+), 24 deletions(-) + +commit 9d7b00638fa6d0701ca8f883edf9e218c3a54412 +Author: David Zeuthen +AuthorDate: Mon Jul 19 16:10:50 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon Jul 19 16:11:20 2010 -0400 + + GDBus: Forgot to add g_dbus_send_message_flags_get_type() to + gio.symbols + + Signed-off-by: David Zeuthen + + gio/gio.symbols | 1 + + 1 file changed, 1 insertion(+) + +commit 0b2b4deac549623beb90228a0ad36f8c2c315710 +Author: David Zeuthen +AuthorDate: Mon Jul 19 16:07:57 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon Jul 19 16:07:57 2010 -0400 + + GDBus: Add GDBusSendMessageFlags + + This is currently unused but might be useful in the future. For + example, it might be nice with a way to bypass the current queue of + outgoing messages - having a flag enumeration allows us to add a + G_DBUS_SEND_MESSAGE_FLAGS_BYPASS_QUEUE etc. etc. + + This commit breaks ABI and API. Users of the (rarely used) API to send + messages will have to port to this new API. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdbusconnection.c | 64 + +++++++++++++++++++------------- + gio/gdbusconnection.h | 3 ++ + gio/gdbusmethodinvocation.c | 4 +- + gio/gioenums.h | 13 +++++++ + gio/tests/gdbus-connection.c | 6 ++- + gio/tests/gdbus-example-server.c | 1 + + gio/tests/gdbus-example-unix-fd-client.c | 1 + + gio/tests/gdbus-peer.c | 4 +- + 9 files changed, 67 insertions(+), 30 deletions(-) + +commit 7190af4394541c1adbe87769f7bd6db030e33605 +Author: David Zeuthen +AuthorDate: Mon Jul 19 15:45:27 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon Jul 19 15:45:27 2010 -0400 + + GDBus: Remove constness from introspection data structures + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 15 ++++----- + gio/gdbus-tool.c | 4 +-- + gio/gdbusapplication.c | 2 +- + gio/gdbusconnection.c | 16 ++++----- + gio/gdbusconnection.h | 2 +- + gio/gdbusintrospection.c | 60 + +++++++++++++++++----------------- + gio/gdbusintrospection.h | 65 + ++++++++++++++++++------------------- + gio/tests/gdbus-export.c | 26 +++++++-------- + gio/tests/gdbus-introspection.c | 6 ++-- + gio/tests/gdbus-peer.c | 2 +- + 10 files changed, 98 insertions(+), 100 deletions(-) + +commit 4a1c5a1b98aed12308361d7adb6089a9fb171583 +Author: David Zeuthen +AuthorDate: Mon Jul 19 15:03:00 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon Jul 19 15:05:10 2010 -0400 + + GDBus: Add GDBusSignalFlags and use it in + g_dbus_connection_signal_subscribe() + + This is currently unused but will probably be useful in the + future. For example, we could have a _ARG0_IS_PATH to specify that + arg0 should be used for arg0path. + + This commit breaks API and ABI. Users of + g_dbus_connection_signal_subscribe() will need to port to this new + version. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdbus-tool.c | 1 + + gio/gdbusconnection.c | 2 ++ + gio/gdbusconnection.h | 1 + + gio/gdbusnameowning.c | 2 ++ + gio/gdbusnamewatching.c | 1 + + gio/gdbusproxy.c | 3 +++ + gio/gio.symbols | 1 + + gio/gioenums.h | 13 +++++++++++++ + gio/tests/gdbus-connection.c | 21 +++++++++++++-------- + gio/tests/gdbus-threading.c | 1 + + gio/tests/testapps.c | 1 + + 12 files changed, 40 insertions(+), 8 deletions(-) + +commit 1a06bd8d3f8ccf040901b4aa4b1197d189b8ab4e +Author: Ryan Lortie +AuthorDate: Mon Jul 19 15:03:54 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 19 15:03:54 2010 -0400 + + Update the GDBus subtree example for the new API + + docs/reference/glib/tmpl/messages.sgml | 27 +++++++++++++++++++++------ + gio/tests/gdbus-example-subtree.c | 21 ++++++++++++--------- + 2 files changed, 33 insertions(+), 15 deletions(-) + +commit c7c573afb6eef461bfe70bb848c90b1d58b3d4d9 +Author: David Hoyt +AuthorDate: Mon Jul 19 13:52:17 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon Jul 19 13:53:17 2010 -0400 + + Bug 624754 – gdbusaddress.c missing sys/wait.h + + https://bugzilla.gnome.org/show_bug.cgi?id=624754 + + Signed-off-by: David Zeuthen + + gio/gdbusaddress.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit d63f199d921b2444e25bc9f39cc12a84ad9695b5 +Author: Ryan Lortie +AuthorDate: Sun Jul 18 21:43:18 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Jul 18 21:43:18 2010 -0400 + + Fix is_valid() API + + Actually dereference the pointer instead of just checking for NULL + + gvdb-reader.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit df40747190a0fff4582c84b101f74e5da91f8f72 +Author: Ryan Lortie +AuthorDate: Sun Jul 18 20:45:37 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Jul 18 20:45:37 2010 -0400 + + Add gvdb_table_is_valid() API + + Checks that the on-disk file is still valid. + + gvdb-reader.c | 17 +++++++++++++++++ + gvdb-reader.h | 3 +++ + 2 files changed, 20 insertions(+) + +commit f81601f735c3b5be0cb21031979071b2dff1ceb2 +Author: Jorge González +AuthorDate: Sun Jul 18 20:29:41 2010 +0200 +Commit: Jorge González +CommitDate: Sun Jul 18 20:29:41 2010 +0200 + + Updated Spanish translation + + po/es.po | 282 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 154 insertions(+), 128 deletions(-) + +commit 8ab26d42e97c5e751f78d2b08d71cddcc5a37031 +Author: Fran Diéguez +AuthorDate: Sun Jul 18 19:58:33 2010 +0200 +Commit: Fran Diéguez +CommitDate: Sun Jul 18 19:58:33 2010 +0200 + + Fixed headers in galician translation file + + po/gl.po | 1181 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 600 insertions(+), 581 deletions(-) + +commit 5fb9c9f7de9700fe1639deb381bab7e3b2785689 +Author: Yaron Shahrabani +AuthorDate: Sat Jul 17 13:11:08 2010 +0300 +Commit: Yaron Shahrabani +CommitDate: Sat Jul 17 13:11:08 2010 +0300 + + Updated Hebrew translation. + + po/he.po | 85 + ++++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 51 insertions(+), 34 deletions(-) + +commit f30aef9a105a2cb44bac1bbe3b8bb93387a41d9a +Author: David Zeuthen +AuthorDate: Fri Jul 16 13:19:48 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri Jul 16 13:22:45 2010 -0400 + + GDBus: Add nonce-tcp: test case + + Also fix a couple of TODO items in gdbusaddress.c + + Signed-off-by: David Zeuthen + + gio/gdbusaddress.c | 85 ++++++++++++++------- + gio/tests/gdbus-peer.c | 203 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 259 insertions(+), 29 deletions(-) + +commit 27cee11b6c1558f44cc89cd46576e11413370abf +Author: Yaron Shahrabani +AuthorDate: Fri Jul 16 17:20:42 2010 +0300 +Commit: Yaron Shahrabani +CommitDate: Fri Jul 16 17:20:42 2010 +0300 + + Updated Hebrew translation. + + po/he.po | 1221 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 633 insertions(+), 588 deletions(-) + +commit fe6338f446f52deeb64aa10fab1c72fa64953472 +Author: Ryan Lortie +AuthorDate: Thu Jul 15 19:37:26 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 15 19:38:45 2010 -0400 + + g_warning on inconsistent subtree behaviour + + If the subtree introspection function indicates that an interface + exists + but then the dispatch function returns a NULL vtable for that + interface, + issue a g_warning pointing programmers in the right direction. + + gio/gdbusconnection.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 732ff1b27cc6f7bbbb1133bf8e7cb3de8475f72a +Author: Julien Cristau +AuthorDate: Thu Jul 15 15:26:02 2010 +0100 +Commit: Dan Winship +CommitDate: Thu Jul 15 18:06:05 2010 -0400 + + gio: don't assume that SOCK_CLOEXEC is supported whenever it's defined + + Just because SOCK_CLOEXEC was defined at build time doesn't mean the + kernel we're running on supports it. So if socket() fails with + EINVAL, + try again without the flag. + + https://bugzilla.gnome.org/show_bug.cgi?id=624463 + + gio/gsocket.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 8a2d157d49c3dceda029bd0e14f8c7367daa2a36 +Author: Ryan Lortie +AuthorDate: Thu Jul 15 16:53:43 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 15 17:32:04 2010 -0400 + + Bug 624484: GDBusSubtreeDispatchFunc clarification + + Pass NULL rather than "/" for the toplevel of a subtree. + + Add clarification to the docs about how trees are flat. + + gio/gdbusconnection.c | 4 ++-- + gio/gdbusconnection.h | 10 ++++++++-- + gio/tests/gdbus-export.c | 10 +++++----- + 3 files changed, 15 insertions(+), 9 deletions(-) + +commit ca14ab7ac0d93b2ccd0977d905b19094e7317490 +Author: Ryan Lortie +AuthorDate: Thu Jul 15 16:47:32 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 15 17:32:04 2010 -0400 + + Bug 624483: GDBusSubtreeEnumerateFunc clarification + + Clarify a couple of things in the docs: + + 1) you must return flat names (no slashes) + + 2) g_strfreev() will be called on the result + + 3) a benefit of using the DISPATCH_TO_UNENUMERATED flag + + gio/gdbusconnection.h | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit e6b5546cf573e6594b33b2ce19ad839c1c694909 +Author: Ryan Lortie +AuthorDate: Thu Jul 15 16:26:42 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 15 17:31:59 2010 -0400 + + Bug 624473: GDBusSubtreeIntrospectFunc return type + + Return a NULL terminated C array instead of a GPtrArray + + Also, document that %NULL is a permitted return value and clarify its + meaning. + + Finally, avoid calling the enumeration function during dispatch + when the + G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES flag was given. + + gio/gdbusconnection.c | 76 + +++++++++++++++++++++++++++--------------------- + gio/gdbusconnection.h | 27 ++++++++++++----- + gio/tests/gdbus-export.c | 25 +++++++--------- + 3 files changed, 74 insertions(+), 54 deletions(-) + +commit 48b1fe948c4424cbc7e68ecca32b0ddac0f7410b +Author: David Zeuthen +AuthorDate: Thu Jul 15 12:19:24 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Jul 15 12:20:30 2010 -0400 + + Bug 623810 – Message serialization bug + + https://bugzilla.gnome.org/show_bug.cgi?id=623810 + + Signed-off-by: David Zeuthen + + gio/gdbusmessage.c | 2 +- + gio/tests/gdbus-serialization.c | 40 + ++++++++++++++++++++++++++++------------ + 2 files changed, 29 insertions(+), 13 deletions(-) + +commit 44cf10adceb673deefebe348350268d9436f3fab +Author: Tomeu Vizoso +AuthorDate: Thu Jul 15 17:05:00 2010 +0200 +Commit: Tomeu Vizoso +CommitDate: Thu Jul 15 17:05:00 2010 +0200 + + Add annotations for g_variant_new_strv and g_variant_get_strv + + glib/gvariant.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 58f1977151a78bd48e0277cefe6a767595ecb095 +Author: Tomeu Vizoso +AuthorDate: Thu Jul 15 15:32:45 2010 +0200 +Commit: Tomeu Vizoso +CommitDate: Thu Jul 15 15:33:16 2010 +0200 + + Add annotations to g_dbus_proxy_new_sync + + gio/gdbusproxy.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 63938335703ea3608f7b0901d1cdcec4855e8880 +Author: Aron Xu +AuthorDate: Thu Jul 15 17:56:14 2010 +0800 +Commit: Aron Xu +CommitDate: Thu Jul 15 17:56:14 2010 +0800 + + Update Simplified Chinese translation. + + po/zh_CN.po | 1418 + +++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 738 insertions(+), 680 deletions(-) + +commit 2bd201c8b21a5daa666169701b1c12dd3b151a26 +Author: Lucian Adrian Grijincu +AuthorDate: Thu Jul 15 02:10:43 2010 +0300 +Commit: Lucian Adrian Grijincu +CommitDate: Thu Jul 15 02:10:43 2010 +0300 + + po: Updated Romanian translation + + po/ro.po | 1796 + +++++++++++++++++--------------------------------------------- + 1 file changed, 490 insertions(+), 1306 deletions(-) + +commit d581a7faf1080e67fd6c731cd04beefbc77cf41a +Author: Mario Blättermann +AuthorDate: Wed Jul 14 23:06:18 2010 +0200 +Commit: Mario Blättermann +CommitDate: Wed Jul 14 23:06:18 2010 +0200 + + [i18n] Updated German translation + + po/de.po | 1567 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 822 insertions(+), 745 deletions(-) + +commit baf383d1b14ebcd217a587fe8c78202fc5e9193b +Author: David Zeuthen +AuthorDate: Wed Jul 14 14:46:12 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jul 14 14:46:12 2010 -0400 + + GDBusConnection: copy object and subtree virtual tables + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 58 + +++++++++++++++++++++++++++++++++++++++++++-------- + gio/gdbusconnection.h | 19 ++++++++--------- + 2 files changed, 58 insertions(+), 19 deletions(-) + +commit 914b046226c762bae578e17f7ed9a0fdf058045a +Author: David Zeuthen +AuthorDate: Wed Jul 14 12:37:32 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jul 14 12:37:32 2010 -0400 + + GDBusConnection: Fix up g_dbus_connection_close() + + ... so it is async, cancelable and returns an error. Also provide a + synchronous version. + + This is an API/ABI break but it is expected that only very few + applications use this API. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 2 + + gio/gdbusconnection.c | 151 + ++++++++++++++++++++++++++++++++---- + gio/gdbusconnection.h | 14 +++- + gio/gio.symbols | 2 + + gio/tests/gdbus-connection.c | 8 +- + 5 files changed, 158 insertions(+), 19 deletions(-) + +commit 14e37ef7967a2da594faaab24fe2c9c117cf099f +Author: David Zeuthen +AuthorDate: Wed Jul 14 11:39:22 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jul 14 11:41:09 2010 -0400 + + GDBusMessage: Make endianness for D-Bus messages match host byte order + + Signed-off-by: David Zeuthen + + gio/gdbusmessage.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit 497edd8b40edfbf85e029a9300e0d99ac6f08630 +Author: David Zeuthen +AuthorDate: Wed Jul 14 11:14:58 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jul 14 11:19:24 2010 -0400 + + Bug 623815 – Don't check sender for GDBusProxy objects where name + is not set + + Based on a patch from Peng Huang , thanks! + + https://bugzilla.gnome.org/show_bug.cgi?id=623815 + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 4 +-- + gio/tests/gdbus-peer.c | 72 + ++++++++++++++++++++++++++++++++++++++++++++++---- + 2 files changed, 69 insertions(+), 7 deletions(-) + +commit 8a2e7d371fdf55c23c61be908761431509cd3a7c +Author: Colin Walters +AuthorDate: Fri Jun 18 14:19:57 2010 -0400 +Commit: Colin Walters +CommitDate: Wed Jul 14 09:39:47 2010 -0400 + + Make default-quit not apply if register=FALSE + + Callers who are using g_application_unregistered_try_new are + likely wanting to continue doing something else if _register() + fails. Change the semantics so that passing register=FALSE + unsets default-quit as well. This means that a later _register() + call will send Activate but continue the process. + + https://bugzilla.gnome.org/show_bug.cgi?id=622005 + + gio/gapplication.c | 23 ++++++++++++++++++----- + gio/gdbusapplication.c | 9 +++++++-- + 2 files changed, 25 insertions(+), 7 deletions(-) + +commit 7e0121dfe0a9377cd35c9d4b90c477b96d56c43f +Author: Chao-Hsiung Liao +AuthorDate: Wed Jul 14 19:28:34 2010 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Wed Jul 14 19:28:34 2010 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 1717 + +++++++++++++++++++++++++++++++---------------------------- + po/zh_TW.po | 1700 + ++++++++++++++++++++++++++++++---------------------------- + 2 files changed, 1803 insertions(+), 1614 deletions(-) + +commit 463edcb045b287cd0df8f44322e133ae32fe5e87 +Author: Stefan Kost +AuthorDate: Wed Jul 14 11:56:41 2010 +0300 +Commit: Stefan Kost +CommitDate: Wed Jul 14 11:57:36 2010 +0300 + + docs: xi:include the annotation glossary to kill warnings and make + them work + + docs/reference/gio/gio-docs.xml | 3 +++ + docs/reference/glib/glib-docs.sgml | 2 ++ + docs/reference/gobject/gobject-docs.sgml | 2 ++ + 3 files changed, 7 insertions(+) + +commit de56aca0b5cf2eaf99ba501dd3d55b750c752433 +Author: Javier Jardón +AuthorDate: Tue Jul 13 05:05:48 2010 +0200 +Commit: Javier Jardón +CommitDate: Tue Jul 13 19:36:37 2010 +0200 + + Clean autotools config a bit + + New requirements: + autoconf >= 2.62 + automake >= 1.10 + libtool >= 2.2 + + Makefile.am | 4 +--- + autogen.sh | 10 +++------- + configure.ac | 14 +++++--------- + 3 files changed, 9 insertions(+), 19 deletions(-) + +commit 3a8ab85d967c3b0fa1b7d702d640df61020d92a0 +Author: Ryan Lortie +AuthorDate: Tue Jul 13 11:59:16 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jul 13 11:59:16 2010 -0400 + + rename configure.in to configure.ac + + README.win32 | 2 +- + config.h.win32.in | 2 +- + configure.ac | 3756 + ++++++++++++++++++++++++++++++++++++++++++++++ + configure.in | 3756 + ---------------------------------------------- + glib/gmem.c | 2 +- + glib/gthread.c | 4 +- + m4macros/glib-gettext.m4 | 4 +- + 7 files changed, 3763 insertions(+), 3763 deletions(-) + +commit 0bb7cc3fceb9223845d2032c9d381f2e15c5285d +Author: Ryan Lortie +AuthorDate: Tue Jul 13 09:24:16 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jul 13 09:24:16 2010 -0400 + + Remove GUnixVolumeMonitor, GUnixMount from docs + + David says that they're supposed to be private. + + docs/reference/gio/Makefile.am | 3 +++ + docs/reference/gio/gio-sections.txt | 15 ----------- + docs/reference/glib/tmpl/glib-unused.sgml | 40 + ------------------------------ + docs/reference/glib/tmpl/version.sgml | 41 + +++++++++++++++++++++++++++++++ + 4 files changed, 44 insertions(+), 55 deletions(-) + +commit 5344c22810c01a0cd708562be563f81f15f517f3 +Author: Ryan Lortie +AuthorDate: Mon Jul 12 18:30:14 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 12 18:30:14 2010 -0400 + + gio/ docs fixup + + docs/reference/gio/Makefile.am | 5 +++ + docs/reference/gio/gio-sections.txt | 32 ++--------------- + docs/reference/glib/tmpl/glib-unused.sgml | 59 + ++++++++++++++++--------------- + gio/fen/fen-kernel.c | 6 ++-- + gio/fen/fen-node.c | 8 ++--- + gio/fen/libfen_la-fen-dump.loT | 7 ---- + gio/gappinfo.h | 1 - + gio/gbufferedoutputstream.h | 1 - + gio/gconverterinputstream.h | 1 - + gio/gconverteroutputstream.h | 1 - + gio/gdatainputstream.h | 1 - + gio/gdataoutputstream.h | 1 - + gio/gfileenumerator.h | 1 - + gio/gkeyfilesettingsbackend.c | 2 +- + gio/gsettings.c | 8 ++--- + gio/gsettings.h | 2 +- + gio/gsettingsschema.c | 2 +- + gio/gunixconnection.c | 2 +- + gio/gvolumemonitor.h | 1 - + 19 files changed, 53 insertions(+), 88 deletions(-) + +commit adde752ec5a600a71f8c9acf1be032ab5f5de46c +Author: Ryan Lortie +AuthorDate: Mon Jul 12 17:46:17 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 12 17:46:17 2010 -0400 + + More docs fixes + + Remove the g*alias.h from the ignore lists + + Remove other old files from ignore lists + + Clean up gobject docs + + docs/reference/gio/Makefile.am | 2 -- + docs/reference/glib/Makefile.am | 6 ------ + docs/reference/gobject/Makefile.am | 2 +- + gobject/gparamspecs.h | 2 ++ + gobject/gvaluecollector.h | 7 ++++++- + 5 files changed, 9 insertions(+), 10 deletions(-) + +commit de5afbc7cc262b677e00704e1bf3562f45dbede0 +Author: Ryan Lortie +AuthorDate: Mon Jul 12 17:32:44 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 12 17:32:44 2010 -0400 + + More gtk-doc cleanups for glib/ + + docs/reference/glib/Makefile.am | 2 ++ + docs/reference/glib/glib-sections.txt | 6 ++++++ + docs/reference/glib/tmpl/glib-unused.sgml | 9 --------- + docs/reference/glib/tmpl/i18n.sgml | 10 ++++++++++ + 4 files changed, 18 insertions(+), 9 deletions(-) + +commit 92df91590fd4b1ca4921cc3f89421928b857e75c +Author: Ryan Lortie +AuthorDate: Mon Jul 12 17:31:03 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 12 17:31:03 2010 -0400 + + trivial whitespace fix + + glib/gmem.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7791fce38a1a7d292e94d3bb5a0ffb8d6da9333d +Author: Ryan Lortie +AuthorDate: Mon Jul 12 16:37:56 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 12 16:56:52 2010 -0400 + + Fix some glib docs warnings + + Remove some symbols from glib-sections.txt that gtk-doc has no idea + about. + + Add proper callback typedefs for GTester (gtk-doc dislikes inline + function types). + + Fix some other minor issues. + + docs/reference/glib/glib-sections.txt | 9 +++-- + docs/reference/glib/tmpl/fileutils.sgml | 6 ++++ + docs/reference/glib/tmpl/testing.sgml | 35 ++++++++++++++++--- + glib/gstdio.c | 8 +++++ + glib/gstrfuncs.c | 10 +++--- + glib/gtestutils.c | 62 + ++++++++++++++++++++++++--------- + glib/gtestutils.h | 30 +++++++++------- + glib/gutf8.c | 2 +- + glib/gvariant.c | 2 +- + 9 files changed, 121 insertions(+), 43 deletions(-) + +commit dc8cf867c805095b7acd7842b731c6eff32ee18f +Author: Matthias Clasen +AuthorDate: Mon Jul 12 07:50:36 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 12 16:35:18 2010 -0400 + + Don't return FALSE when a pointer is expected + + Pointed out in bug 623956 + + glib/gvariant-parser.c | 8 ++++---- + glib/tests/markup-subparser.c | 2 +- + 2 files changed, 5 insertions(+), 5 deletions(-) + +commit 90285b0643d23059bdf28aff4afd337f91a556a6 +Author: Ryan Lortie +AuthorDate: Mon Jul 12 15:30:26 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 12 15:33:05 2010 -0400 + + Bump gtk-doc dependency to 1.15 + + Use the multiple source-directory support contained therein. + + configure.in | 2 +- + docs/reference/glib/Makefile.am | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 83d67bf2e79e1cb984e398b218cedd0b1e50bd1f +Author: Ryan Lortie +AuthorDate: Sun Jul 11 21:08:42 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 12 15:33:05 2010 -0400 + + move glibconfig.h to glib/ + + .gitignore | 2 - + Makefile.am | 18 +-- + configure.in | 14 +-- + gio/abicheck.sh | 2 +- + glib/.gitignore | 4 + + glib/Makefile.am | 29 ++++- + glib/abicheck.sh | 2 +- + glib/glibconfig.h.win32.in | 284 + +++++++++++++++++++++++++++++++++++++++++++++ + glibconfig.h.win32.in | 284 + --------------------------------------------- + gobject/abicheck.sh | 2 +- + 10 files changed, 325 insertions(+), 316 deletions(-) + +commit 29a6fb68b7d73648992ea55d17cc54fc1261fe29 +Author: Colin Walters +AuthorDate: Fri Jun 25 09:37:06 2010 -0400 +Commit: Colin Walters +CommitDate: Mon Jul 12 10:00:35 2010 -0400 + + Don't attempt to build dtrace support on OS X + + Apparently the OS X "dtrace" command is different from the Sun one, + which is what Linux supports. Since I don't have access to an OS X + machine to test build patches on, simply disable dtrace on OS X + for now. + + https://bugzilla.gnome.org/show_bug.cgi?id=622697 + + configure.in | 22 +++++++++++++--------- + 1 file changed, 13 insertions(+), 9 deletions(-) + +commit e5834637eb4a336393989dc68d7615abf153335f +Author: Baurzhan Muftakhidinov +AuthorDate: Mon Jul 12 16:19:45 2010 +0300 +Commit: Simos Xenitellis +CommitDate: Mon Jul 12 16:19:45 2010 +0300 + + Added Kazakh translation for Kazakh + + po/LINGUAS | 1 + + po/kk.po | 2813 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 2814 insertions(+) + +commit 82318fbda3441615e11fe5fa25144d27096286fe +Author: Ryan Lortie +AuthorDate: Sun Jul 11 12:51:54 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Jul 11 12:51:54 2010 -0400 + + bump the version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit be247c24c6b532b2acfe52424ffdcc79bdc48bf4 +Author: Ryan Lortie +AuthorDate: Sun Jul 11 12:51:33 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Jul 11 12:51:33 2010 -0400 + + This is glib 2.25.11 + + NEWS | 1 + + docs/reference/glib/tmpl/atomic_operations.sgml | 42 + ++++++++++++++----------- + docs/reference/glib/tmpl/bookmarkfile.sgml | 16 +++++----- + docs/reference/glib/tmpl/conversions.sgml | 22 ------------- + docs/reference/glib/tmpl/numerical.sgml | 10 ++++++ + 5 files changed, 43 insertions(+), 48 deletions(-) + +commit 8c36b1ad2bf03141cd1aacbb0fa9d19ba7c72c17 +Author: Kjartan Maraas +AuthorDate: Sun Jul 11 15:51:04 2010 +0200 +Commit: Kjartan Maraas +CommitDate: Sun Jul 11 15:51:04 2010 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 1387 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 732 insertions(+), 655 deletions(-) + +commit 358b9d6ac750c3d35b259df2b59353d004a32ace +Author: Matthias Clasen +AuthorDate: Sat Jul 10 23:53:36 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 10 23:56:45 2010 -0400 + + Move main loop docs inline + + docs/reference/glib/tmpl/main.sgml | 288 +++++----------------------- + glib/gmain.c | 76 ++++++++ + glib/gmain.h | 374 + +++++++++++++++++++++++++++++-------- + glib/gpoll.h | 30 ++- + 4 files changed, 448 insertions(+), 320 deletions(-) + +commit ab8cb652c83d77471b2e0f56b270d4ef8704dae9 +Author: Matthias Clasen +AuthorDate: Sat Jul 10 22:30:04 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 10 23:56:45 2010 -0400 + + Fix a typo + + docs/reference/glib/tmpl/bookmarkfile.sgml | 102 + ++++------------------------- + glib/gatomic.c | 2 +- + glib/gbookmarkfile.c | 44 +++++++++++++ + glib/gbookmarkfile.h | 30 ++++++++- + glib/tests/Makefile.am | 3 +- + glib/tests/bookmarks.xbel | 23 +++++++ + 6 files changed, 110 insertions(+), 94 deletions(-) + +commit e57291efdc53a2f7732e39730ef91dab266ade83 +Author: Matthias Clasen +AuthorDate: Sat Jul 10 21:51:34 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 10 23:56:45 2010 -0400 + + Move docs for atomic operations inline + + docs/reference/glib/tmpl/atomic_operations.sgml | 136 + ++++++------------------ + glib/gatomic.c | 133 + ++++++++++++++++++++++- + glib/gatomic.h | 22 +++- + 3 files changed, 183 insertions(+), 108 deletions(-) + +commit e8503fddee2c5426a98d066c5a24afd9ae7ade50 +Author: Matthias Clasen +AuthorDate: Sat Jul 10 21:26:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 10 23:56:45 2010 -0400 + + Move GAsyncQueue docs inline + + docs/reference/glib/tmpl/async_queues.sgml | 55 + ++---------------------------- + glib/gasyncqueue.c | 53 + ++++++++++++++++++++++++++++ + 2 files changed, 55 insertions(+), 53 deletions(-) + +commit db0c58062dd208982521dfc99b0da59a5bd4327b +Author: Ryan Lortie +AuthorDate: Sat Jul 10 23:28:30 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jul 10 23:28:30 2010 -0400 + + NEWS for the pending release + + NEWS | 152 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 152 insertions(+) + +commit d2fe46b476a183168d57581c41b763b9e8f03c7c +Author: Colin Walters +AuthorDate: Sat Jul 10 20:09:34 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 10 20:09:34 2010 -0400 + + Annotate all custom GIO GSource using g_source_set_name + + Naming the sources allows easier debugging with e.g. SystemTap + probes. + + https://bugzilla.gnome.org/show_bug.cgi?id=620536 + + gio/gsocket.c | 1 + + gio/gunixinputstream.c | 1 + + gio/gunixoutputstream.c | 1 + + gio/inotify/inotify-kernel.c | 1 + + glib/giounix.c | 1 + + glib/giowin32.c | 1 + + 6 files changed, 6 insertions(+) + +commit 7568bb66f996bdf94da6963399333236f73adb1b +Author: Matthias Clasen +AuthorDate: Sat Jul 10 20:00:49 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 10 20:02:48 2010 -0400 + + use proper feature test macros for isnan + + Problem pointed out in bug 581354 + + glib/tests/strfuncs.c | 1 + + 1 file changed, 1 insertion(+) + +commit d9dc570c593a29be62b3d85cef43f92f52dcce8e +Author: Matthias Clasen +AuthorDate: Sat Jul 10 19:46:40 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 10 20:02:48 2010 -0400 + + Add ACLOCAL_AMFLAGS to Makefile.am + + Patch by Vincent Untz, bug 570036 + + Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit 3dca4ce434f30a5c72f773c5c0437d4ac92413ab +Author: Matthias Clasen +AuthorDate: Sat Jul 10 19:16:27 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 10 20:02:47 2010 -0400 + + One more dubious return + + gio/gsocketlistener.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d44ae96cb1566447ce44034b8b9290badacb6fe4 +Author: Ryan Lortie +AuthorDate: Sat Jul 10 17:54:08 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jul 10 19:15:59 2010 -0400 + + GVariant: fix some more leaks in error cases + + glib/gvariant-parser.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 90c49a0654f4aa556f3d2ccb7c91b6e480eef1ae +Author: Ryan Lortie +AuthorDate: Sat Jul 10 17:45:51 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jul 10 19:15:59 2010 -0400 + + move the g_free() from the last commit down + + It is needed for the error message... + + glib/gvariant-parser.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 29babb9fc8baf2327b2e0781fbf07bed76a4cbde +Author: Matthias Clasen +AuthorDate: Sat Jul 10 18:04:22 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 10 18:04:22 2010 -0400 + + Minor cleanup + + gio/glocalfileenumerator.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit f8e22856c643bfccaf03db6f84738126cff374d0 +Author: Matthias Clasen +AuthorDate: Sat Jul 10 17:57:45 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 10 17:57:45 2010 -0400 + + Add a GAppInfoCreate flag for startup-notification + + Using this flag, it will be possible to launch apps without a + desktop file, in the same way that gdk_spawn_... lets you do. + + Requested in bug 599223. + + gio/gdesktopappinfo.c | 2 +- + gio/gioenums.h | 8 +++++--- + 2 files changed, 6 insertions(+), 4 deletions(-) + +commit 5f1490e94aa0fcfe72b92377dc7efae4b3300a6c +Author: Matthias Clasen +AuthorDate: Sat Jul 10 17:21:32 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 10 17:21:32 2010 -0400 + + Fix sparse warnings + + These were listed in bug 623955 + + gio/gconverteroutputstream.c | 2 +- + gio/gdbusauthmechanismsha1.c | 4 ++-- + gio/gdbusconnection.c | 2 +- + gio/gfileinfo.c | 4 ++-- + gio/ginetsocketaddress.c | 2 +- + gio/gmount.c | 6 +++--- + gio/gschema-compile.c | 6 +++--- + gio/gunixfdmessage.c | 2 +- + gio/gunixresolver.c | 9 ++++++--- + 9 files changed, 20 insertions(+), 17 deletions(-) + +commit 41f4aba2d22ceec7f8dd0916aae99fb3eea5699f +Author: Matthias Clasen +AuthorDate: Sat Jul 10 17:12:31 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 10 17:12:31 2010 -0400 + + Chain up in g_settings_finalize + + Requested in bug 623954 + + gio/gsettings.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 61027a8b5ce75c68f2a6e84134ea88af1f8a5556 +Author: Matthias Clasen +AuthorDate: Sat Jul 10 17:06:41 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 10 17:10:31 2010 -0400 + + Turn on glibc malloc checking features for make check + + Makefile.decl | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 48a04f9303294304db5693acb1e4421cfdd4464a +Author: Ryan Lortie +AuthorDate: Sat Jul 10 16:56:51 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jul 10 16:56:51 2010 -0400 + + GVariant: don't leak during type inferencing + + glib/gvariant-parser.c | 1 + + 1 file changed, 1 insertion(+) + +commit b1c4dec264eeff92fc9afd112c6b6fc4fd74c087 +Author: Jorge González +AuthorDate: Sat Jul 10 11:03:52 2010 +0200 +Commit: Jorge González +CommitDate: Sat Jul 10 11:03:52 2010 +0200 + + Updated Spanish translation + + po/es.po | 1179 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 588 insertions(+), 591 deletions(-) + +commit 551461b23a52f4c49633352e538184cd8cb250ad +Author: Matthias Clasen +AuthorDate: Fri Jul 9 08:33:27 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 9 08:33:27 2010 -0400 + + Fix some leaks in the inotify code + + Also avoid creating some unused objects. Patch by Carlos Garnacho, + bug 613057 + + gio/inotify/inotify-helper.c | 11 ++--------- + 1 file changed, 2 insertions(+), 9 deletions(-) + +commit c24a29e13bcf2c36140c5d8467a9258402c347aa +Author: Matthias Clasen +AuthorDate: Fri Jul 9 07:24:08 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 9 07:24:08 2010 -0400 + + Adapt to recent MLS changes + + g_file_query_info returns non-NULL more often now. + + gio/gfile.c | 7 ++++--- + gio/tests/live-g-file.c | 5 +---- + 2 files changed, 5 insertions(+), 7 deletions(-) + +commit e302e919e5c8329ae293f0ba5921c6dfce289beb +Author: Matthias Clasen +AuthorDate: Thu Jul 8 19:52:36 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 19:52:36 2010 -0400 + + Remove dead links from the IEEE float documentation + + docs/reference/glib/tmpl/numerical.sgml | 46 + ++++++++++++--------------------- + 1 file changed, 16 insertions(+), 30 deletions(-) + +commit 0c357a2d149080c4e4fefb29436c03e7879ce437 +Author: Matthias Clasen +AuthorDate: Thu Jul 8 19:37:31 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 19:37:31 2010 -0400 + + Improve the long description of GString + + It is more similar to a Java StringBuffer than to a C string. + See bug 612439. + + docs/reference/glib/tmpl/strings.sgml | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 2504ec988e0288b8616907b43e489c74d49a08f0 +Author: Will Thompson +AuthorDate: Thu Jul 8 19:30:53 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 19:30:53 2010 -0400 + + Document NULL shortcut to g_value_array_insert etc. + + You can pass a NULL GValue * to any of g_value_array_insert, + _prepend or + _append to add a new, uninitialized value. This is a very useful + shortcut, and it should be documented rather than left languishing + in a + comment in the implementation. + + Fixes Gnome bug #552363. + + gobject/gvaluearray.c | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +commit cc44ef148c578ec87f71c155549a5d352a30bb3a +Author: Matthias Clasen +AuthorDate: Thu Jul 8 19:26:25 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 19:26:25 2010 -0400 + + Improve some GNode docs + + See bug 561248 + + glib/gnode.h | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit ac342a8d0c4e50b5983631808ca6b7dc7508e17d +Author: Matthias Clasen +AuthorDate: Thu Jul 8 19:23:42 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 19:23:42 2010 -0400 + + Expand the g_sprintf docs + + As requested in bug 576833. + + glib/gprintf.c | 31 ++++++++++++++++++------------- + 1 file changed, 18 insertions(+), 13 deletions(-) + +commit 7cfa23b17785218463274854753494b5e49584c8 +Author: Matthias Clasen +AuthorDate: Thu Jul 8 19:03:18 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 19:03:18 2010 -0400 + + Add a note about l10n to the g_strconcat docs + + As requested in bug 576854 + + glib/gstrfuncs.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit e0017f24c58ba756c186026e42d59ed3015e80ce +Author: Matthias Clasen +AuthorDate: Thu Jul 8 17:38:47 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 17:40:13 2010 -0400 + + Move uri conversion functions to a better place in the docs + + g_filename_from/to_uri are better off in the section called + "URI functions". Requested in bug 582227. + + docs/reference/glib/glib-sections.txt | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3c6304a332c8da9275569c9820660e859b4ac160 +Author: Jorge González +AuthorDate: Thu Jul 8 23:25:01 2010 +0200 +Commit: Jorge González +CommitDate: Thu Jul 8 23:25:01 2010 +0200 + + Updated Spanish translation + + po/es.po | 176 + +++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 109 insertions(+), 67 deletions(-) + +commit e0f2d0f28e3074ba839f997a15997a2d878d2f76 +Author: Matthias Clasen +AuthorDate: Thu Jul 8 16:32:08 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 16:32:08 2010 -0400 + + Comment out an unused function + + it is causing warnings, so it needs to die...bug 622600 + + glib/pcre/pcre_ucp_searchfuncs.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 448ac22e80bcd947d255616a9147dbce5c85e120 +Author: Matthias Clasen +AuthorDate: Thu Jul 8 16:24:44 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 16:24:44 2010 -0400 + + Fix an oversight in the previous commit + + gio/gdesktopappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 33f7f6a7485189ef15c953c74dac276e762b3bb9 +Author: Matthias Clasen +AuthorDate: Thu Jul 8 16:22:16 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 16:22:16 2010 -0400 + + Use glib infrastructure to parse debug flags + + Proposed in bug 623319 + + gio/gdbusprivate.c | 41 +++++++++++++++-------------------------- + 1 file changed, 15 insertions(+), 26 deletions(-) + +commit 29850d03e8456ff7b05d7bd6fc9eba9895b50ff6 +Author: Matthias Clasen +AuthorDate: Thu Jul 8 15:18:05 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 15:18:05 2010 -0400 + + Be a bit more picky when deciding if mounts are internal + + Complained about in bug 623780. + + gio/gunixmounts.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit 349aab2bd4cb221b99d98802339bde8d0adc178d +Author: Matthias Clasen +AuthorDate: Thu Jul 8 15:11:24 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 15:11:24 2010 -0400 + + A little more correctness in formatting pids + + Requested in bug 623772 + + gio/gdesktopappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fcddf9c2a1e0c76843af91d6d530194bcb7d8791 +Author: Matthias Clasen +AuthorDate: Thu Jul 8 14:58:33 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 14:58:33 2010 -0400 + + Escape arguments when putting together a cmdline + + See bug 623770 + + gio/gdesktopappinfo.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +commit 607fec50e65eef943bc5dd6254bf0b331b682cca +Author: Matthias Clasen +AuthorDate: Thu Jul 8 14:38:55 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 14:38:55 2010 -0400 + + xinclude the dtd + + Keeping two copies in sync manually gets tiresome. + + gio/gsettings.c | 65 + +-------------------------------------------------------- + 1 file changed, 1 insertion(+), 64 deletions(-) + +commit c7816005f99c5293b608c70d4b341d410cb5aea4 +Author: Matthias Clasen +AuthorDate: Thu Jul 8 14:29:17 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 14:29:17 2010 -0400 + + Update the dtd to match the implementation + + See bug 623720 + + gio/gschema.dtd | 30 +++++++++++++++++++++++++----- + 1 file changed, 25 insertions(+), 5 deletions(-) + +commit 71e7b5800a310ae7424f3eec4ebcdcc1becaa6e7 +Author: Matthias Clasen +AuthorDate: Thu Jul 8 14:19:08 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 14:19:08 2010 -0400 + + Handle MLS selinux policy better + + Following the behaviour of ls here, we should return at least the + file name, if we can't get any other information about a file. To + do this, handle EACCESS on stat() calls. + + Patch by Tomas Bzatek, see bug 623692 + + gio/glocalfileinfo.c | 76 + +++++++++++++++++++++++++++++++++------------------- + 1 file changed, 48 insertions(+), 28 deletions(-) + +commit 1e8656fe24e846f3bb0533e96afb1e0b46a37b49 +Author: Matthias Clasen +AuthorDate: Thu Jul 8 14:12:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 14:12:28 2010 -0400 + + Check for zlib using pkg-config + + Based on a patch by Felipe Contreras, see bug 623473. + + configure.in | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +commit 5adf506d5bb8b0d13ded7fd8480d17d27e7ae31e +Author: Matthias Clasen +AuthorDate: Thu Jul 8 11:33:21 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jul 8 11:33:21 2010 -0400 + + Use proper variables + + And also make sure we don't read garbage. + + gio/tests/gsettings.c | 35 ++++++++++++++++++++++++++--------- + 1 file changed, 26 insertions(+), 9 deletions(-) + +commit a00fa340cb776976b14fd1b9476d1488a75d8377 +Author: Ryan Lortie +AuthorDate: Wed Jul 7 22:00:43 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jul 7 22:18:47 2010 -0400 + + base64: remove unnecessary assertions + + Allow base64 encoding/decoding of empty strings. + + glib/gbase64.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +commit ddb919245c33f23c45d69b9e2aea85458d8d67f2 +Author: Matthias Clasen +AuthorDate: Wed Jul 7 20:36:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jul 7 22:03:02 2010 -0400 + + forgotten file + + glib/tests/keyfiletest.ini | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 5b946e0504952a472cea1ef95df0967e8a4a7b47 +Author: Ryan Lortie +AuthorDate: Wed Jul 7 19:53:22 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jul 7 19:53:22 2010 -0400 + + gio/: fully remove gioalias hacks + + gio/.gitignore | 2 - + gio/Makefile.am | 16 +--- + gio/fen/fen-dump.c | 1 - + gio/fen/fen-helper.c | 1 - + gio/fen/fen-kernel.c | 1 - + gio/fen/fen-node.c | 1 - + gio/fen/gfendirectorymonitor.c | 3 - + gio/fen/gfenfilemonitor.c | 3 - + gio/gappinfo.c | 5 -- + gio/gapplication.c | 4 - + gio/gasynchelper.c | 1 - + gio/gasyncinitable.c | 4 - + gio/gasyncresult.c | 4 - + gio/gbufferedinputstream.c | 5 -- + gio/gbufferedoutputstream.c | 5 -- + gio/gcancellable.c | 4 - + gio/gcharsetconverter.c | 4 - + gio/gcontenttype.c | 4 - + gio/gconverter.c | 4 - + gio/gconverterinputstream.c | 4 - + gio/gconverteroutputstream.c | 4 - + gio/gcredentials.c | 4 - + gio/gdatainputstream.c | 5 -- + gio/gdataoutputstream.c | 6 +- + gio/gdbusaddress.c | 4 - + gio/gdbusapplication.c | 1 - + gio/gdbusauth.c | 4 - + gio/gdbusauthmechanism.c | 4 - + gio/gdbusauthmechanismanon.c | 4 - + gio/gdbusauthmechanismexternal.c | 4 - + gio/gdbusauthmechanismsha1.c | 4 - + gio/gdbusauthobserver.c | 6 -- + gio/gdbusconnection.c | 4 - + gio/gdbuserror.c | 4 - + gio/gdbusintrospection.c | 4 - + gio/gdbusmessage.c | 5 -- + gio/gdbusmethodinvocation.c | 4 - + gio/gdbusnameowning.c | 4 - + gio/gdbusnamewatching.c | 4 - + gio/gdbusprivate.c | 4 - + gio/gdbusproxy.c | 4 - + gio/gdbusserver.c | 4 - + gio/gdbusutils.c | 4 - + gio/gdelayedsettingsbackend.c | 1 - + gio/gdesktopappinfo.c | 4 - + gio/gdrive.c | 4 - + gio/gdummyfile.c | 1 - + gio/gemblem.c | 4 - + gio/gemblemedicon.c | 4 - + gio/gfile.c | 4 - + gio/gfileattribute.c | 4 - + gio/gfiledescriptorbased.c | 5 -- + gio/gfileenumerator.c | 4 - + gio/gfileicon.c | 4 - + gio/gfileinfo.c | 4 - + gio/gfileinputstream.c | 5 -- + gio/gfileiostream.c | 4 - + gio/gfilemonitor.c | 4 - + gio/gfilenamecompleter.c | 4 - + gio/gfileoutputstream.c | 4 - + gio/gfilterinputstream.c | 4 - + gio/gfilteroutputstream.c | 4 - + gio/gicon.c | 5 -- + gio/ginetaddress.c | 4 - + gio/ginetsocketaddress.c | 4 - + gio/ginitable.c | 4 - + gio/ginputstream.c | 4 - + gio/gio.symbols | 4 +- + gio/gioenumtypes.c.template | 6 -- + gio/gioerror.c | 4 - + gio/giomodule.c | 4 - + gio/gioscheduler.c | 5 -- + gio/giostream.c | 4 - + gio/gkeyfilesettingsbackend.c | 4 - + gio/gloadableicon.c | 4 - + gio/glocaldirectorymonitor.c | 4 - + gio/glocalfile.c | 1 - + gio/glocalfileenumerator.c | 3 - + gio/glocalfileinfo.c | 1 - + gio/glocalfileinputstream.c | 1 - + gio/glocalfileiostream.c | 1 - + gio/glocalfilemonitor.c | 4 - + gio/glocalfileoutputstream.c | 1 - + gio/glocalvfs.c | 1 - + gio/gmemoryinputstream.c | 4 - + gio/gmemoryoutputstream.c | 4 - + gio/gmemorysettingsbackend.c | 1 - + gio/gmount.c | 4 - + gio/gmountoperation.c | 4 - + gio/gnativevolumemonitor.c | 4 - + gio/gnetworkaddress.c | 4 - + gio/gnetworkservice.c | 4 - + gio/gnullapplication.c | 1 - + gio/gnullsettingsbackend.c | 1 - + gio/goutputstream.c | 4 - + gio/gpermission.c | 4 - + gio/gpollfilemonitor.c | 1 - + gio/gresolver.c | 4 - + gio/gseekable.c | 4 - + gio/gsettings.c | 3 - + gio/gsettingsbackend.c | 4 - + gio/gsimpleasyncresult.c | 4 - + gio/gsimplepermission.c | 4 - + gio/gsocket.c | 4 - + gio/gsocketaddress.c | 4 - + gio/gsocketaddressenumerator.c | 4 - + gio/gsocketclient.c | 4 - + gio/gsocketconnectable.c | 4 - + gio/gsocketconnection.c | 4 - + gio/gsocketcontrolmessage.c | 4 - + gio/gsocketinputstream.c | 4 - + gio/gsocketlistener.c | 4 - + gio/gsocketoutputstream.c | 4 - + gio/gsocketservice.c | 4 - + gio/gsrvtarget.c | 4 - + gio/gtcpconnection.c | 5 -- + gio/gthemedicon.c | 4 - + gio/gthreadedresolver.c | 4 - + gio/gthreadedsocketservice.c | 4 - + gio/gunionvolumemonitor.c | 5 -- + gio/gunixconnection.c | 4 - + gio/gunixcredentialsmessage.c | 5 -- + gio/gunixfdlist.c | 4 - + gio/gunixfdmessage.c | 4 - + gio/gunixinputstream.c | 4 - + gio/gunixmount.c | 1 - + gio/gunixmounts.c | 4 - + gio/gunixoutputstream.c | 4 - + gio/gunixresolver.c | 4 - + gio/gunixsocketaddress.c | 4 - + gio/gunixvolume.c | 1 - + gio/gunixvolumemonitor.c | 1 - + gio/gvfs.c | 4 - + gio/gvolume.c | 6 -- + gio/gvolumemonitor.c | 5 -- + gio/gwin32appinfo.c | 1 - + gio/gwin32inputstream.c | 4 - + gio/gwin32mount.c | 1 - + gio/gwin32outputstream.c | 4 - + gio/gwin32resolver.c | 4 - + gio/gwin32volumemonitor.c | 1 - + gio/gzlibcompressor.c | 4 - + gio/gzlibdecompressor.c | 4 - + gio/inotify/ginotifydirectorymonitor.c | 3 - + gio/inotify/ginotifyfilemonitor.c | 3 - + gio/inotify/inotify-helper.c | 3 - + gio/makefile.msc | 8 -- + gio/makegioalias.pl | 139 + --------------------------------- + gio/pltcheck.sh | 21 ----- + gio/win32/gwinhttpfile.c | 2 - + gio/win32/gwinhttpfileinputstream.c | 2 - + gio/win32/gwinhttpfileoutputstream.c | 2 - + gio/win32/gwinhttpvfs.c | 2 - + 153 files changed, 3 insertions(+), 709 deletions(-) + +commit 0fc50fa5f7424d21ff43a79838fe76ff73ad869b +Author: Ryan Lortie +AuthorDate: Wed Jul 7 19:40:48 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jul 7 19:40:48 2010 -0400 + + gobject/: fully remove gobjectalias hacks + + gobject/.gitignore | 2 - + gobject/Makefile.am | 18 ++---- + gobject/gbinding.c | 4 -- + gobject/gboxed.c | 4 -- + gobject/gclosure.c | 4 -- + gobject/genums.c | 4 -- + gobject/gobject.c | 6 -- + gobject/gobject.symbols | 4 +- + gobject/gparam.c | 4 -- + gobject/gparamspecs.c | 4 -- + gobject/gsignal.c | 4 -- + gobject/gsourceclosure.c | 4 -- + gobject/gtype.c | 4 -- + gobject/gtypemodule.c | 5 -- + gobject/gtypeplugin.c | 4 -- + gobject/gvalue.c | 4 -- + gobject/gvaluearray.c | 4 -- + gobject/gvaluetransform.c | 1 - + gobject/gvaluetypes.c | 4 -- + gobject/makefile.msc.in | 8 --- + gobject/makegobjectalias.pl | 139 + -------------------------------------------- + gobject/pltcheck.sh | 19 ------ + 22 files changed, 5 insertions(+), 249 deletions(-) + +commit 2e53e50244b85d7e0b5358d617fabc15e8ec8bd7 +Author: Ryan Lortie +AuthorDate: Wed Jul 7 19:34:03 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jul 7 19:34:35 2010 -0400 + + glib/: fully remove galias hacks + + glib/.gitignore | 2 - + glib/Makefile.am | 18 +----- + glib/garray.c | 4 -- + glib/gasyncqueue.c | 4 -- + glib/gatomic-gcc.c | 4 -- + glib/gatomic.c | 4 -- + glib/gbacktrace.c | 4 -- + glib/gbase64.c | 5 -- + glib/gbitlock.c | 4 -- + glib/gbookmarkfile.c | 4 -- + glib/gbuffer.c | 1 - + glib/gcache.c | 4 -- + glib/gchecksum.c | 4 -- + glib/gcompletion.c | 4 -- + glib/gconvert.c | 4 -- + glib/gdataset.c | 4 -- + glib/gdate.c | 5 -- + glib/gdir.c | 4 -- + glib/gerror.c | 4 -- + glib/gfileutils.c | 4 -- + glib/ghash.c | 4 -- + glib/ghook.c | 4 -- + glib/ghostutils.c | 4 -- + glib/giochannel.c | 4 -- + glib/giounix.c | 4 -- + glib/giowin32.c | 4 -- + glib/gkeyfile.c | 4 -- + glib/glib.py | 5 +- + glib/glib.symbols | 4 +- + glib/glist.c | 4 -- + glib/gmain.c | 4 -- + glib/gmappedfile.c | 4 -- + glib/gmarkup.c | 4 -- + glib/gmem.c | 4 -- + glib/gmessages.c | 16 ----- + glib/gnode.c | 4 -- + glib/gnulib/g-gnulib.h | 1 - + glib/goption.c | 5 -- + glib/gpattern.c | 4 -- + glib/gpoll.c | 4 -- + glib/gprimes.c | 4 -- + glib/gprintf.c | 4 -- + glib/gqsort.c | 4 -- + glib/gqueue.c | 4 -- + glib/grand.c | 5 -- + glib/gregex.c | 4 -- + glib/grel.c | 4 -- + glib/gscanner.c | 4 -- + glib/gsequence.c | 5 -- + glib/gshell.c | 4 -- + glib/gslice.c | 4 -- + glib/gslist.c | 4 -- + glib/gspawn-win32.c | 4 -- + glib/gspawn.c | 4 -- + glib/gstdio.c | 4 -- + glib/gstrfuncs.c | 5 -- + glib/gstring.c | 4 -- + glib/gtestutils.c | 4 -- + glib/gthread.c | 5 -- + glib/gthreadpool.c | 4 -- + glib/gtimer.c | 4 -- + glib/gtree.c | 6 -- + glib/gunibreak.c | 4 -- + glib/gunicollate.c | 5 -- + glib/gunidecomp.c | 4 -- + glib/guniprop.c | 5 -- + glib/gurifuncs.c | 4 -- + glib/gutf8.c | 5 -- + glib/gutils.c | 4 -- + glib/gvariant-core.c | 4 -- + glib/gvariant-parser.c | 5 -- + glib/gvariant-serialiser.c | 4 -- + glib/gvariant.c | 4 -- + glib/gvarianttype.c | 4 -- + glib/gvarianttypeinfo.c | 4 -- + glib/gwin32.c | 4 -- + glib/makefile.msc.in | 8 --- + glib/makegalias.pl | 138 + ------------------------------------------ + glib/pcre/pcre.h | 1 - + glib/pltcheck.sh | 27 --------- + glib/update-pcre/memory.patch | 3 +- + glib/win_iconv.c | 1 - + 82 files changed, 6 insertions(+), 508 deletions(-) + +commit c243905c95e012eb295ee5487087043ce4a4027b +Author: Ryan Lortie +AuthorDate: Wed Jul 7 16:52:23 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jul 7 16:52:41 2010 -0400 + + .gitignore updates + + gio/tests/.gitignore | 17 +++++++++++------ + glib/tests/.gitignore | 6 ++++++ + 2 files changed, 17 insertions(+), 6 deletions(-) + +commit abc65b233ccb14366fbd07bbed3ee3cacd5e79ea +Author: David Zeuthen +AuthorDate: Wed Jul 7 16:35:17 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jul 7 16:36:51 2010 -0400 + + GDBus: Hide instance structures for classes we don't want to be + subclassed + + This also allows us to nuke the priv-> pointers and save a couple of + indirections. + + Signed-off-by: David Zeuthen + + gio/gdbusauthobserver.c | 21 ++- + gio/gdbusauthobserver.h | 20 -- + gio/gdbusconnection.c | 435 + ++++++++++++++++++++++---------------------- + gio/gdbusconnection.h | 21 --- + gio/gdbusmessage.c | 166 +++++++++-------- + gio/gdbusmessage.h | 21 --- + gio/gdbusmethodinvocation.c | 81 +++++---- + gio/gdbusmethodinvocation.h | 21 --- + gio/gdbusserver.c | 186 ++++++++++--------- + gio/gdbusserver.h | 21 --- + 10 files changed, 461 insertions(+), 532 deletions(-) + +commit 32ce3e051af4260a65478acf738e82dec6a864bd +Author: Ryan Lortie +AuthorDate: Wed Jul 7 16:32:46 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jul 7 16:32:46 2010 -0400 + + fix trivial copy/paste error in bytestring docs + + glib/gvariant.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d9e90c3894739bdfa642e35bdea866c6d0ab7ef2 +Author: Ryan Lortie +AuthorDate: Wed Jul 7 10:37:16 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jul 7 16:25:48 2010 -0400 + + GVariant: improve bytestring support + + - add G_VARIANT_TYPE_BYTESTRING, _BYTESTRING_ARRAY, _STRING_ARRAY + + - remove g_variant_{new,get}_byte_array functions + + - add g_variant_{new,get,dup}_bytestring{,_array} functions + + - remove undocumented support for deserialising arrays of objectpaths + or signature strngs using g_variant_get_strv() + + - add and document new format strings '^ay', '^&ay', '^aay' and + '^a&ay' + + - update GApplication to use the new API + + - update GSettings binding code to use the new API + + - add tests + + docs/reference/glib/glib-sections.txt | 9 +- + docs/reference/glib/gvariant-varargs.xml | 184 +++++++++--- + docs/reference/glib/tmpl/glib-unused.sgml | 40 +-- + gio/gapplication.c | 32 +- + gio/gsettings-mapping.c | 8 +- + gio/tests/gsettings.c | 2 +- + gio/tests/testapp.c | 4 +- + glib/glib.symbols | 8 +- + glib/gvariant-parser.c | 179 ++++++++++- + glib/gvariant.c | 477 + ++++++++++++++++++++++-------- + glib/gvariant.h | 14 +- + glib/gvarianttype.h | 25 ++ + glib/tests/gvariant.c | 129 ++++++-- + 13 files changed, 836 insertions(+), 275 deletions(-) + +commit 2d2a321a4b5943d408cabe54e3da48360ae7e4ac +Author: David Zeuthen +AuthorDate: Wed Jul 7 15:57:37 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jul 7 15:57:37 2010 -0400 + + GDBus: Hide class structures for classes we don't want to be + subclassed + + E.g. move these C structures out of public header files and into their + respective C files. Also nuke padding since this is no longer needed. + + This leaves only GDBusProxy as an extendable type. + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 9 ++------- + gio/gdbusauth.h | 4 ---- + gio/gdbusauthmechanism.h | 4 ---- + gio/gdbusauthmechanismanon.h | 4 ---- + gio/gdbusauthmechanismexternal.h | 4 ---- + gio/gdbusauthmechanismsha1.h | 4 ---- + gio/gdbusauthobserver.c | 21 +++++++++++++++++++++ + gio/gdbusauthobserver.h | 27 --------------------------- + gio/gdbusconnection.c | 20 ++++++++++++++++++++ + gio/gdbusconnection.h | 24 ------------------------ + gio/gdbusmessage.c | 14 ++++++++++++++ + gio/gdbusmessage.h | 17 ----------------- + gio/gdbusmethodinvocation.c | 13 +++++++++++++ + gio/gdbusmethodinvocation.h | 17 ----------------- + gio/gdbusserver.c | 19 +++++++++++++++++++ + gio/gdbusserver.h | 23 ----------------------- + 16 files changed, 89 insertions(+), 135 deletions(-) + +commit 62a1ccf526e7b23ac39cdf7251eac5706eef3f57 +Author: David Zeuthen +AuthorDate: Wed Jul 7 15:00:23 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jul 7 15:03:03 2010 -0400 + + Bug 618882 – No way to ensure that a message is sent + + Add g_dbus_connection_flush{_finish,sync}(). + + https://bugzilla.gnome.org/show_bug.cgi?id=618882 + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 3 + + gio/gdbusconnection.c | 157 + +++++++++++++++++++++++++++++- + gio/gdbusconnection.h | 14 +++ + gio/gdbusprivate.c | 81 +++++++++++++++ + gio/gdbusprivate.h | 5 + + gio/gio.symbols | 3 + + gio/tests/Makefile.am | 4 + + gio/tests/gdbus-connection-flush-helper.c | 60 ++++++++++++ + gio/tests/gdbus-connection.c | 82 ++++++++++++++++ + 9 files changed, 406 insertions(+), 3 deletions(-) + +commit d4f35ae9ed230ccc04b8f50067a0d0dda95b7d5f +Author: Fran Diéguez +AuthorDate: Wed Jul 7 18:25:19 2010 +0200 +Commit: Fran Diéguez +CommitDate: Wed Jul 7 18:25:19 2010 +0200 + + Updated Galician translations + + po/gl.po | 386 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 218 insertions(+), 168 deletions(-) + +commit acc9bb24033cdb93be6b9c00012f86ac56904cc9 +Author: David Zeuthen +AuthorDate: Wed Jul 7 11:02:08 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jul 7 11:06:23 2010 -0400 + + GDBus: Only rewrite serial number if g_dbus_message_get_serial() + returns 0 + + While this a dangerous thing to allow (collissions, reply_serial not + matching up etc.), the added flexibility makes this a good trade-off - + for example, with this feature, it's now a lot easier to build message + routers. + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 27 ++++++++++++++++++++------- + gio/tests/gdbus-connection.c | 3 +++ + 2 files changed, 23 insertions(+), 7 deletions(-) + +commit 746721293b8963fbefd98bdba7ef0645b6940052 +Author: Ryan Lortie +AuthorDate: Wed Jul 7 10:56:57 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jul 7 10:56:57 2010 -0400 + + GSettings: warn if use the 'memory' backend + + but only if it was not explicitly selected. + + gio/gsettingsbackend.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 6ae4d31e75b123bcf4caf867f36cc59570a37a57 +Author: Ryan Lortie +AuthorDate: Wed Jul 7 10:46:13 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jul 7 10:46:13 2010 -0400 + + trivial GSettings docs fix + + docs/reference/glib/tmpl/glib-unused.sgml | 52 + +++++++++++++++++++++++++++++++ + gio/gsettings.c | 8 ++--- + 2 files changed, 56 insertions(+), 4 deletions(-) + +commit a38fed1b43cb688001c6343cc30022013c0ea25b +Author: David Zeuthen +AuthorDate: Wed Jul 7 09:50:44 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jul 7 09:50:44 2010 -0400 + + Bug 623538 – GDBusProxy::g-properties-changed emission for corner + cases + + Also emit GDBusProxy::g-properties-changed when dropping (when the + name owner vanishes) or populating (when loading properties) the + property cache. + + https://bugzilla.gnome.org/show_bug.cgi?id=623538 + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 52 + ++++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 48 insertions(+), 4 deletions(-) + +commit ea0607438bfb1fb2ae7cd22757ecdb53946a00b0 +Author: David Zeuthen +AuthorDate: Wed Jul 7 09:05:42 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jul 7 09:07:23 2010 -0400 + + Bug 623537 – GDBusProxy has weird checking on NameOwnerChanged + + Remove misleading (and always true) check on the name that the + NameOwnerChanged signal is for. + + https://bugzilla.gnome.org/show_bug.cgi?id=623537 + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +commit 99670eaccc05a4d5e9725614550e1da75cda45c0 +Author: Matthias Clasen +AuthorDate: Wed Jul 7 07:37:42 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jul 7 07:37:42 2010 -0400 + + Fix some errors in translated strings + + gettext can't handle macros, so we have to use literal format + specifiers, unfortunately. + + gio/gdbusaddress.c | 3 ++- + gio/gdbusmessage.c | 9 ++++++--- + 2 files changed, 8 insertions(+), 4 deletions(-) + +commit bad9a3718e84549de23b56eed980f97a0b9c8b7e +Author: Matthias Clasen +AuthorDate: Wed Jul 7 01:00:58 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jul 7 01:00:58 2010 -0400 + + Clear the buffer initially + + gio/tests/converter-stream.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 46a80b38c394619300c6ff95fffb1b56115e610b +Author: Matthias Clasen +AuthorDate: Wed Jul 7 00:38:27 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jul 7 00:59:44 2010 -0400 + + Don't forget to dist keyfiletest.ini + + glib/tests/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit be247379f003bbb619a71f351e53fba14eec7a15 +Author: Danielle Madeley +AuthorDate: Wed Jul 7 12:47:54 2010 +1000 +Commit: Danielle Madeley +CommitDate: Wed Jul 7 12:47:54 2010 +1000 + + Include sys/wait.h for WEXITSTATUS() + + gio/gdbusaddress.c | 1 + + 1 file changed, 1 insertion(+) + +commit aab6d9ed1c54f215838da7939a97e33d46d94036 +Author: David Zeuthen +AuthorDate: Tue Jul 6 16:57:28 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue Jul 6 17:03:36 2010 -0400 + + GDBus: Handle autolaunching on UNIX/Freedesktop OSes + + Also add a 'address' G_DBUS_DEBUG option that will print out useful + debug information such as + + GDBus-debug:Address: In g_dbus_address_get_for_bus_sync() for bus + type `session' + GDBus-debug:Address: env var DBUS_SESSION_BUS_ADDRESS is not set + GDBus-debug:Address: env var DBUS_SYSTEM_BUS_ADDRESS is not set + GDBus-debug:Address: env var DBUS_STARTER_BUS_TYPE is not set + GDBus-debug:Address: Running `dbus-launch + --autolaunch=05e508961149264c9b750a4c494aa6f7 --binary-syntax + --close-stderr' to get bus address (possibly autolaunching) + GDBus-debug:Address: dbus-launch output: + 0000: 75 6e 69 78 3a 61 62 73 74 72 61 63 74 3d 2f 74 + unix:abstract=/t + 0010: 6d 70 2f 64 62 75 73 2d 77 42 41 6f 4b 59 49 52 + mp/dbus-wBAoKYIR + 0020: 7a 75 2c 67 75 69 64 3d 30 34 30 64 31 33 66 33 + zu,guid=040d13f3 + 0030: 30 61 30 62 35 32 63 32 30 66 36 32 63 34 31 63 + 0a0b52c20f62c41c + 0040: 30 30 30 30 35 30 38 64 00 d2 38 00 00 01 00 40 + 0000508d..8....@ + 0050: 05 00 00 00 00 ..... + GDBus-debug:Address: dbus-launch stderr output: + 14542: Autolaunch enabled (using X11). + 14542: --exit-with-session automatically enabled + 14542: Connected to X11 display ':0.0' + 14542: === Parent dbus-launch continues + 14542: Waiting for babysitter's intermediate parent + 14542: Reading address from bus + 14542: Reading PID from daemon + 14542: Saving x11 address + 14542: Created window 88080385 + 14542: session file: + /root/.dbus/session-bus/05e508961149264c9b750a4c494aa6f7-0 + 14542: dbus-launch exiting + GDBus-debug:Address: Returning address + `unix:abstract=/tmp/dbus-wBAoKYIRzu,guid=040d13f30a0b52c20f62c41c0000508d' + for bus type `session' + + and + + GDBus-debug:Address: In g_dbus_address_get_for_bus_sync() for bus + type `session' + GDBus-debug:Address: env var DBUS_SESSION_BUS_ADDRESS is not set + GDBus-debug:Address: env var DBUS_SYSTEM_BUS_ADDRESS is not set + GDBus-debug:Address: env var DBUS_STARTER_BUS_TYPE is not set + GDBus-debug:Address: Running `dbus-launch + --autolaunch=05e508961149264c9b750a4c494aa6f7 --binary-syntax + --close-stderr' to get bus address (possibly autolaunching) + GDBus-debug:Address: dbus-launch output: + 0000: 75 6e 69 78 3a 61 62 73 74 72 61 63 74 3d 2f 74 + unix:abstract=/t + 0010: 6d 70 2f 64 62 75 73 2d 77 42 41 6f 4b 59 49 52 + mp/dbus-wBAoKYIR + 0020: 7a 75 2c 67 75 69 64 3d 30 34 30 64 31 33 66 33 + zu,guid=040d13f3 + 0030: 30 61 30 62 35 32 63 32 30 66 36 32 63 34 31 63 + 0a0b52c20f62c41c + 0040: 30 30 30 30 35 30 38 64 00 d2 38 00 00 01 00 40 + 0000508d..8....@ + 0050: 05 00 00 00 00 ..... + GDBus-debug:Address: dbus-launch stderr output: + 14549: Autolaunch enabled (using X11). + 14549: --exit-with-session automatically enabled + 14549: Connected to X11 display ':0.0' + 14549: dbus-daemon is already running. Returning existing + parameters. + 14549: dbus-launch exiting + GDBus-debug:Address: Returning address + `unix:abstract=/tmp/dbus-wBAoKYIRzu,guid=040d13f30a0b52c20f62c41c0000508d' + for bus type `session' + + Note that things work exactly like libdbus, e.g. from the + dbus-launch(1) man page: + + Whenever an autolaunch occurs, the application that had to start a + new bus will be in its own little world; it can effectively end up + starting a whole new session if it tries to use a lot of bus + services. This can be suboptimal or even totally broken, depending + on the app and what it tries to do. + + [...] + + You can always avoid autolaunch by manually setting + DBUS_SESSION_BUS_ADDRESS. Autolaunch happens because the default + address if none is set is "autolaunch:", so if any other address is + set there will be no autolaunch. You can however include autolaunch + in an explicit session bus address as a fallback, for example + DBUS_SESSION_BUS_ADDRESS="something:,autolaunch:" - in that case if + the first address doesn't work, processes will autolaunch. (The bus + address variable contains a comma-separated list of addresses to + try.) + + Signed-off-by: David Zeuthen + + docs/reference/gio/overview.xml | 4 + + gio/gdbusaddress.c | 255 + +++++++++++++++++++++++++++++++++++++--- + gio/gdbusconnection.c | 20 +--- + gio/gdbusmessage.c | 21 +--- + gio/gdbusprivate.c | 52 ++++++++ + gio/gdbusprivate.h | 6 + + 6 files changed, 310 insertions(+), 48 deletions(-) + +commit ef296440630ca01a8bc0a9dc58722bf1d6dc1ab7 +Author: David Zeuthen +AuthorDate: Tue Jul 6 13:56:35 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue Jul 6 17:03:36 2010 -0400 + + GDBus: Properly handle empty address strings + + Changes this error + + DBUS_SESSION_BUS_ADDRESS= \ + gdbus introspect --session \ + --dest org.freedesktop.DBus \ + --object-path /org/freedesktop/DBus + ** + GLib-GIO:ERROR:gdbusaddress.c:913:g_dbus_address_get_stream_sync: + assertion failed: (last_error != NULL) + Aborted (core dumped) + + to + + DBUS_SESSION_BUS_ADDRESS= \ + gdbus introspect --session \ + --dest org.freedesktop.DBus \ + --object-path /org/freedesktop/DBus + Error connecting: The given address is empty + + which is much more preferable. + + Signed-off-by: David Zeuthen + + gio/gdbusaddress.c | 13 ++++++++++++- + gio/tests/gdbus-addresses.c | 14 ++++++++++++++ + 2 files changed, 26 insertions(+), 1 deletion(-) + +commit f0b6cbb13951549b9e17ee0366fc5be3e4b69f2f +Author: Matthias Clasen +AuthorDate: Tue Jul 6 07:43:19 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 6 07:43:19 2010 -0400 + + Fix problems with the keyfile test + + We must set XDG_DATA_HOME early on, and we must clear error + before using it. + + glib/tests/keyfile.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit eea9d343ccd059b8d53009d64197ff343338c05f +Author: Matthias Clasen +AuthorDate: Tue Jul 6 00:01:40 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 6 00:01:40 2010 -0400 + + Improve keyfile test coverage + + glib/tests/keyfile.c | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +commit ee89ed241c5b386bf8d846f4496e46059d0a686b +Author: Matthias Clasen +AuthorDate: Tue Jul 6 00:01:15 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jul 6 00:01:15 2010 -0400 + + Define SRCDIR + + glib/tests/Makefile.am | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit a3bda1acfc5f3e8f4f672cc81f388ffabf1e7b58 +Author: Matthias Clasen +AuthorDate: Mon Jul 5 23:43:47 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:43:47 2010 -0400 + + Add some GDir tests + + glib/tests/Makefile.am | 3 +++ + glib/tests/dir.c | 53 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 56 insertions(+) + +commit c5fcd21e33282676f9bfbaa71ca5fb7d54e30057 +Author: Matthias Clasen +AuthorDate: Mon Jul 5 23:30:10 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:30:10 2010 -0400 + + Improve uri test coverage + + glib/tests/uri.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit b720732059eec5d87d86d784f25c57a2132475a2 +Author: Matthias Clasen +AuthorDate: Mon Jul 5 23:06:50 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:18 2010 -0400 + + Move uri tests to the test framework + + glib/tests/Makefile.am | 3 + + glib/tests/uri.c | 333 ++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 4 +- + tests/uri-test.c | 477 + ------------------------------------------------- + 4 files changed, 337 insertions(+), 480 deletions(-) + +commit 123ba622d3511509f7cce9459ab48db8a0d28c3d +Author: Matthias Clasen +AuthorDate: Mon Jul 5 22:40:46 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:18 2010 -0400 + + Add more list tests + + glib/tests/list.c | 142 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/tests/slist.c | 122 +++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 264 insertions(+) + +commit 953962d783e46c8aa17301ec733fa54483e3fab7 +Author: Matthias Clasen +AuthorDate: Mon Jul 5 22:40:26 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:18 2010 -0400 + + Move tree tests to the test framework + + glib/tests/Makefile.am | 3 + + glib/tests/tree.c | 286 + +++++++++++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 2 - + tests/tree-test.c | 246 ------------------------------------------ + 4 files changed, 289 insertions(+), 248 deletions(-) + +commit 5123bc69e75418c9192a94d802fca76b18444233 +Author: Matthias Clasen +AuthorDate: Mon Jul 5 21:06:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:18 2010 -0400 + + Move slist tests to the test framework + + glib/tests/Makefile.am | 3 + + glib/tests/slist.c | 179 +++++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 3 - + tests/slist-test.c | 204 + ------------------------------------------------- + 4 files changed, 182 insertions(+), 207 deletions(-) + +commit b61fd45ac3305ec20b156bbeeed5494b9a445c8a +Author: Matthias Clasen +AuthorDate: Mon Jul 5 20:51:29 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:18 2010 -0400 + + Move list tests to the test framework + + glib/tests/Makefile.am | 3 + + glib/tests/list.c | 179 +++++++++++++++++++++++++++++++++++++++++ + tests/list-test.c | 212 + ------------------------------------------------- + 3 files changed, 182 insertions(+), 212 deletions(-) + +commit c2997efb6688255c885f4bf1f4248bee2c8f6e11 +Author: Matthias Clasen +AuthorDate: Mon Jul 5 19:49:03 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:18 2010 -0400 + + Add some more checks to the binding tests + + gobject/tests/binding.c | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) + +commit 4e97c96654d2c0f637ea20b22f0d70aa12c7cfab +Author: Matthias Clasen +AuthorDate: Mon Jul 5 19:48:04 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:18 2010 -0400 + + Remove a redundant branch + + Since the name has been interned already at pspec creation time, + we can just call g_intern_string(). + + gobject/gbinding.c | 10 ++-------- + 1 file changed, 2 insertions(+), 8 deletions(-) + +commit af299df44e067b949a039c56b5081558288f41aa +Author: Matthias Clasen +AuthorDate: Mon Jul 5 19:45:55 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:17 2010 -0400 + + Remove cases of ;; + + gio/gdbusauthobserver.c | 2 +- + gio/gdbusmessage.c | 2 +- + glib/gshell.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit fb0242240495772bbb1a8ef2b88cacb60b090242 +Author: Matthias Clasen +AuthorDate: Mon Jul 5 19:33:05 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:17 2010 -0400 + + Test charset conversion with fallbacks + + gio/tests/converter-stream.c | 51 + ++++++++++++++++++++++++++++++++++++++------ + 1 file changed, 44 insertions(+), 7 deletions(-) + +commit 05a865344ba1f9a14524d87e2ab2a1cb4fdbc9cb +Author: Matthias Clasen +AuthorDate: Mon Jul 5 15:54:11 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:17 2010 -0400 + + Fix the get_property implementation for GSettings::schema + + gio/gsettings.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 20dca5935c186654e8e13904d2c5c67a9622ec8e +Author: Matthias Clasen +AuthorDate: Mon Jul 5 15:53:58 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:17 2010 -0400 + + Add several more settings tests + + gio/tests/gsettings.c | 234 + ++++++++++++++++++++++++++++++++++++- + gio/tests/org.gtk.test.gschema.xml | 23 ++++ + 2 files changed, 255 insertions(+), 2 deletions(-) + +commit 958f15013c29e0f8313a9eb7e2e75efa324c484c +Author: Matthias Clasen +AuthorDate: Mon Jul 5 15:53:21 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:17 2010 -0400 + + Small documentation addition + + gio/gsettingsbackend.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c6e8d0ada84185f807b8101cada91030bd91e48a +Author: Matthias Clasen +AuthorDate: Mon Jul 5 12:08:29 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:17 2010 -0400 + + Fix icons test to compile + + gio/tests/icons.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 81a0a268133ba5cb58a4e7893d4eaf039bc21b4c +Author: Matthias Clasen +AuthorDate: Mon Jul 5 12:08:17 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:17 2010 -0400 + + Test enum mapping + + gio/tests/gsettings.c | 47 + +++++++++++++++++++++++++++++++++++++- + gio/tests/org.gtk.test.gschema.xml | 3 +++ + 2 files changed, 49 insertions(+), 1 deletion(-) + +commit 2764b75d5373d03b46d04fdfa3cc64becf274294 +Author: Matthias Clasen +AuthorDate: Mon Jul 5 11:38:31 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:17 2010 -0400 + + More stream tests + + gio/tests/buffered-input-stream.c | 35 + +++++++++++++++++++++++++++++++++++ + gio/tests/buffered-output-stream.c | 35 + +++++++++++++++++++++++++++++++++++ + gio/tests/converter-stream.c | 2 ++ + 3 files changed, 72 insertions(+) + +commit 10b2606af5c350c30bbd52977b688d8a2dd106b4 +Author: Matthias Clasen +AuthorDate: Mon Jul 5 11:13:36 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:16 2010 -0400 + + Add more checks + + gio/tests/buffered-input-stream.c | 105 + +++++++++++++++++++++++++++++--------- + 1 file changed, 82 insertions(+), 23 deletions(-) + +commit aec652677bed2d82201b0234e04e95f164e20770 +Author: Matthias Clasen +AuthorDate: Mon Jul 5 11:12:49 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:16 2010 -0400 + + Add some buffered output tests + + gio/tests/Makefile.am | 4 ++ + gio/tests/buffered-output-stream.c | 86 + ++++++++++++++++++++++++++++++++++++++ + 2 files changed, 90 insertions(+) + +commit 4ab9b708c0d8c901a2e4137c9ac03fc2414336af +Author: Matthias Clasen +AuthorDate: Mon Jul 5 08:28:54 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:16 2010 -0400 + + Add some more tests for the buffered read code + + gio/tests/buffered-input-stream.c | 46 + ++++++++++++++++++++++++++++++++++++++- + 1 file changed, 45 insertions(+), 1 deletion(-) + +commit 1ba87d1a0e8a6377d3f49731e8412fedfc7a8725 +Author: Matthias Clasen +AuthorDate: Mon Jul 5 07:40:38 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 23:13:16 2010 -0400 + + Trivial cleanups + + gio/gbufferedinputstream.c | 585 + +++++++++++++++++++++++---------------------- + 1 file changed, 299 insertions(+), 286 deletions(-) + +commit 48881bad99807381afcb55137eced4d7c50ac5a7 +Author: Ryan Lortie +AuthorDate: Mon Jul 5 13:10:28 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jul 5 13:10:28 2010 -0400 + + Add --disable-Bsymbolic flag + + configure.in | 27 ++++++++++++++++++--------- + 1 file changed, 18 insertions(+), 9 deletions(-) + +commit dea042b85514f997df0f77006cdcca063486097b +Author: Matthias Clasen +AuthorDate: Mon Jul 5 03:09:36 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 03:09:36 2010 -0400 + + Misc test additions + + gio/tests/Makefile.am | 7 +++++ + gio/tests/appinfo.c | 27 ++++++++++++++-- + gio/tests/contenttype.c | 4 +++ + gio/tests/file.c | 64 + ++++++++++++++++++++++++++++++++++++++ + gio/tests/gsettings.c | 56 +++++++++++++++++++++++++++++++++ + gio/tests/live-g-file.c | 9 ++++++ + gio/tests/org.gtk.test.gschema.xml | 3 ++ + 7 files changed, 168 insertions(+), 2 deletions(-) + +commit 211210c1ce15e19e424d12b14ab79f8dfb0379d4 +Author: Matthias Clasen +AuthorDate: Mon Jul 5 02:36:48 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 02:36:48 2010 -0400 + + Fix a typo + + gio/gappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c53c701e53afcd15cadc7d727ceea303b915dd44 +Author: Matthias Clasen +AuthorDate: Mon Jul 5 00:56:12 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 5 00:56:12 2010 -0400 + + Cleanups + + gio/gcontenttype.c | 674 + ++++++++++++++++++++-------------------- + gio/gcontenttype.h | 36 +-- + gio/tests/appinfo-test2.desktop | 11 + + 3 files changed, 372 insertions(+), 349 deletions(-) + +commit f90eb144d404c76180ba7facf32b4c9751aed4b5 +Author: Matthias Clasen +AuthorDate: Sun Jul 4 23:42:07 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 4 23:42:07 2010 -0400 + + Add some more tests + + gio/tests/contenttype.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +commit 74fbd3296d259b04e4fe17e4ebd358827ae07e1f +Author: Matthias Clasen +AuthorDate: Sun Jul 4 23:41:40 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 4 23:41:40 2010 -0400 + + Add some GAppLaunchContext tests + + gio/tests/appinfo.c | 26 +++++++++++++++++++++++++- + 1 file changed, 25 insertions(+), 1 deletion(-) + +commit c915c68b6be1cdd21ec79b4a1f715d38976cdd86 +Author: Matthias Clasen +AuthorDate: Sun Jul 4 23:40:42 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 4 23:40:42 2010 -0400 + + Add the new tests to the correct variable + + gio/tests/Makefile.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 14db75381ee7f21f6b62401177cfaa9d6891ddf4 +Author: Matthias Clasen +AuthorDate: Sun Jul 4 22:27:01 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 4 22:27:01 2010 -0400 + + Add some contenttype tests + + gio/tests/Makefile.am | 4 ++ + gio/tests/contenttype.c | 113 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 117 insertions(+) + +commit fb120b5d8717f9798be28cdc7bab768f7ca0309a +Author: Matthias Clasen +AuthorDate: Sun Jul 4 20:50:50 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 4 20:51:06 2010 -0400 + + Add a test for skipping + + gio/tests/buffered-input-stream.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit 9788c4c7e6a9eaa8f7d7a999d201767470a75d85 +Author: Matthias Clasen +AuthorDate: Sun Jul 4 20:49:29 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 4 20:51:06 2010 -0400 + + Add some CharsetConverter tests + + gio/tests/converter-stream.c | 56 + ++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 52 insertions(+), 4 deletions(-) + +commit 26e29cb360e81e4530c218a6ddea339759f078bd +Author: Matthias Clasen +AuthorDate: Sat Jul 3 13:43:25 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 4 20:51:06 2010 -0400 + + Move charset conversion tests to the test framework + + glib/tests/Makefile.am | 23 +- + glib/tests/convert.c | 664 + +++++++++++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 2 - + tests/convert-test.c | 662 + ------------------------------------------------ + 4 files changed, 677 insertions(+), 674 deletions(-) + +commit 401fa10445e092e4f1d7e29dd2af128012d32981 +Author: Matthias Clasen +AuthorDate: Sat Jul 3 12:49:46 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 4 20:51:06 2010 -0400 + + Add some more appinfo tests + + gio/tests/appinfo-test-gnome.desktop | 6 ++ + gio/tests/appinfo-test-notgnome.desktop | 6 ++ + gio/tests/appinfo-test.desktop | 8 +- + gio/tests/appinfo.c | 129 + ++++++++++++++++++++++++++++++++ + 4 files changed, 148 insertions(+), 1 deletion(-) + +commit 7a5df4265d444f0a4b0687bed63d6adf3b143953 +Author: Jorge González +AuthorDate: Sun Jul 4 13:49:55 2010 +0200 +Commit: Jorge González +CommitDate: Sun Jul 4 13:49:55 2010 +0200 + + Updated Spanish translation + + po/es.po | 60 + +++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 31 insertions(+), 29 deletions(-) + +commit 7cc15910bec9b652ef9610a8c9cc9d96c2185936 +Author: Jorge González +AuthorDate: Sat Jul 3 13:48:56 2010 +0200 +Commit: Jorge González +CommitDate: Sat Jul 3 13:48:56 2010 +0200 + + Updated Spanish translation + + po/es.po | 133 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 74 insertions(+), 59 deletions(-) + +commit 9fd133946059c315eeb4a445c1f46dd636b33106 +Author: Matthias Clasen +AuthorDate: Sat Jul 3 03:31:24 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 3 03:31:24 2010 -0400 + + Move GZlibConverter tests + + gio/tests/converter-stream.c | 33 +++++++++++++++++++++++++++------ + 1 file changed, 27 insertions(+), 6 deletions(-) + +commit aaba9276f7cceca9f6493b5a4a7f81e4f9fa75a5 +Author: Matthias Clasen +AuthorDate: Sat Jul 3 03:31:07 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jul 3 03:31:07 2010 -0400 + + Add tests for GIcon + + gio/tests/Makefile.am | 4 ++ + gio/tests/icons.c | 121 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 125 insertions(+) + +commit 37c4fcb36abedfd7896ef70eaec75bba33a0331f +Author: David Zeuthen +AuthorDate: Fri Jul 2 17:09:55 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri Jul 2 17:09:55 2010 -0400 + + GDBus: Rename "Introspection XML" section to "D-Bus Introspection + Data" + + Signed-off-by: David Zeuthen + + gio/gdbusintrospection.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a16128655fed37a3975fdb8ea0d31ef0fa29e882 +Author: Ryan Lortie +AuthorDate: Fri Jul 2 11:35:43 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jul 2 11:35:43 2010 -0400 + + Bug 623407 - g_keyfile_settings_backend_new crash + + The keyfile backend forms paths like this: + + prefix + group_name + '/' + keyname + + If the prefix is '/apps/yelp/' and the group name is '/' then + this means + that we end up with a key name of (for example): + + '/apps/yelp/' + '/' + '/' + 'font-adjustment' + + = '/apps/yelp///font-adjustment' + + which is obviously not a valid key name. + + This patch rejects group names starting or ending with '/' or + containing + '//' and also rejects keys containing '/'. This should make it + impossible for invalid keys to be formed. + + gio/gkeyfilesettingsbackend.c | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit a941660873ad4db42f1799e444d46d95721af840 +Author: Ryan Lortie +AuthorDate: Fri Jul 2 11:14:28 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jul 2 11:14:28 2010 -0400 + + Bug 623402 - schema compiler reports wrong line + + Don't reuse the GMarkupParseContext in order to avoid inaccurate line + number reports. Fix a memory leak, too. + + gio/gschema-compile.c | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +commit 7a44a2d223f3ad8c6e142b94725ab55cf3f84173 +Author: Ryan Lortie +AuthorDate: Fri Jul 2 11:11:45 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jul 2 11:11:45 2010 -0400 + + Bug 623401 - schema compiler: process enums first + + Process *.enum.xml before any *.gschema.xml files to ensure that all + enums have been defined. + + gio/gschema-compile.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +commit 1ca6a4687a9b66e0060f16583ac21ef94f24a38e +Author: David Zeuthen +AuthorDate: Fri Jul 2 09:40:59 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri Jul 2 09:40:59 2010 -0400 + + GDBus: Hold lock when printing debug messages + + Signed-off-by: David Zeuthen + + gio/gdbusauth.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit c29ad239284608c2a03043f9dc16f3ca1a28542e +Author: David Zeuthen +AuthorDate: Fri Jul 2 09:34:03 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri Jul 2 09:35:13 2010 -0400 + + GDBus: make G_DBUS_DEBUG=authentication work again + + This was inadvertently removed in this commit + + http://git.gnome.org/browse/glib/commit/?id=1d22b64843c83631bcd0e5255930f3a4e990961e + + Signed-off-by: David Zeuthen + + docs/reference/gio/overview.xml | 2 +- + gio/gdbusauth.c | 4 ---- + 2 files changed, 1 insertion(+), 5 deletions(-) + +commit cd8361f4ddd0e88fb7e3941a0d0fd12fe538c093 +Author: Tor Lillqvist +AuthorDate: Fri Jul 2 15:31:24 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Fri Jul 2 15:31:24 2010 +0300 + + Update headers being installed in the Visual Studio project + + It sucks to have the lists of public headers duplicated in the + Makefile.am files and the glib.vsprops file. But it isn't exactly easy + to work around all the weirdness in autotools, Visual Studio, and bat + files either to do it another way. + + build/win32/vs9/glib.vsprops | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +commit 5383c7110f793bfa749370cec9d708a6a5018751 +Author: Ryan Lortie +AuthorDate: Thu Jul 1 18:58:56 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 1 19:06:02 2010 -0400 + + Bug 622124 - implement flags for GSettings + + Add a tag to the schema file format and a flags='' + attribute to + go along with. Add some extra test cases for those. + + Add new g_settings_{get,set}_flags() calls and support binding to + GParamSpecFlags properties. Add test cases. + + docs/reference/gio/gio-sections.txt | 2 + + gio/gio.symbols | 2 + + gio/gschema-compile.c | 161 + +++++++++++++---- + gio/gsettings-mapping.c | 65 ++++++- + gio/gsettings.c | 194 + ++++++++++++++++++++- + gio/gsettings.h | 5 + + gio/strinfo.c | 8 + + gio/tests/Makefile.am | 7 + + gio/tests/gschema-compile.c | 11 +- + gio/tests/gsettings.c | 80 ++++++++- + gio/tests/org.gtk.test.gschema.xml | 9 + + .../enum-with-repeated-nick.gschema.xml | 10 ++ + .../enum-with-repeated-value.gschema.xml | 10 ++ + .../schema-tests/flags-aliased-default.gschema.xml | 19 ++ + .../schema-tests/flags-bad-default.gschema.xml | 16 ++ + .../flags-more-than-one-bit.gschema.xml | 10 ++ + .../schema-tests/flags-with-enum-attr.gschema.xml | 14 ++ + .../schema-tests/flags-with-enum-tag.gschema.xml | 14 ++ + gio/tests/testenum.h | 9 + + 19 files changed, 594 insertions(+), 52 deletions(-) + +commit 69fe50c116541afbfeaf9ad78b030f53e9906604 +Author: Jorge González +AuthorDate: Thu Jul 1 21:39:37 2010 +0200 +Commit: Jorge González +CommitDate: Thu Jul 1 21:39:37 2010 +0200 + + Updated Spanish translation + + po/es.po | 42 +++++++++++++++++++++++++----------------- + 1 file changed, 25 insertions(+), 17 deletions(-) + +commit bd8d837f573a784a234740bd49f9103cdf70c268 +Author: David Zeuthen +AuthorDate: Thu Jul 1 14:37:16 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Jul 1 14:37:16 2010 -0400 + + Bug 620913 – More control with G_DBUS_DEBUG + + This commit adds the following G_DBUS_DEBUG flags + + - emission + - incoming + - call + - signal + - payload + + https://bugzilla.gnome.org/show_bug.cgi?id=620913 + + Signed-off-by: David Zeuthen + + docs/reference/gio/overview.xml | 20 ++++++ + gio/gdbusconnection.c | 141 + ++++++++++++++++++++++++++++++++++++++-- + gio/gdbusprivate.c | 86 ++++++++++++++++++++++-- + gio/gdbusprivate.h | 7 ++ + 4 files changed, 242 insertions(+), 12 deletions(-) + +commit 51ed44e7add7ca1d3b764f13df2cf80ebe32c3f9 +Author: David Zeuthen +AuthorDate: Thu Jul 1 13:06:56 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Jul 1 13:07:58 2010 -0400 + + GDBus: Fix bug in child enumeration + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 3 +-- + gio/tests/gdbus-export.c | 28 +++++++++++++++++++++++++++- + 2 files changed, 28 insertions(+), 3 deletions(-) + +commit 93bf09a9e7a7d35d50802faf4b271ca4267e49cb +Author: Ryan Lortie +AuthorDate: Thu Jul 1 12:55:04 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jul 1 12:55:04 2010 -0400 + + Use "unix:" instead of tcp in test for now... + + Temporarily avoids the issue reported in bug #623306. + + gio/tests/gdbus-peer.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 21d7ce97c38bafa1fdbedc19fe9634bc3333e7c6 +Author: David Zeuthen +AuthorDate: Wed Jun 30 16:36:47 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jun 30 16:39:32 2010 -0400 + + GDBus: plug some memory leaks + + These fixes makes udisks-daemon from udisks' gdbus-port branch, see + + http://cgit.freedesktop.org/udisks/log/?h=gdbus-port + + handle 200 add/remove uevents generated by e.g. + + #!/bin/bash + DEV=mmcblk0p1 + for n in `seq 200` ; do + udevadm trigger --sysname-match=$DEV --action=remove + udevadm trigger --sysname-match=$DEV --action=add + echo foo $n + done + + without any substantial leaks. + + Signed-off-by: David Zeuthen + + gio/gdbusauth.c | 14 +++++++++----- + gio/gdbusmessage.c | 52 + +++++++++++++++++++++++++++++++++++++--------------- + gio/gdbusprivate.c | 1 + + 3 files changed, 47 insertions(+), 20 deletions(-) + +commit 40d5da99d6d07bdbb6267f6b5625ac2ca93e85ea +Author: Ryan Lortie +AuthorDate: Wed Jun 30 13:27:38 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jun 30 13:27:38 2010 -0400 + + GSettings: accept as an alias for + + until we have proper support for flags... + + gio/gschema-compile.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit e73b631f6eb8d2f1ff9c65fe2c258dc2b6083c73 +Author: Ryan Lortie +AuthorDate: Wed Jun 30 13:12:19 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jun 30 13:12:57 2010 -0400 + + gsettings.m4: add support for enums + + m4macros/gsettings.m4 | 18 ++++++++++++------ + 1 file changed, 12 insertions(+), 6 deletions(-) + +commit 87fa3a6e75132f68edfbd457632332c52c2048ba +Author: David Zeuthen +AuthorDate: Wed Jun 30 12:19:28 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jun 30 12:19:28 2010 -0400 + + GDBus: Take a reference to the GDBusInterfaceInfo object + + Things will still work fine if the GDBusInterfaceInfo is allocated + statically because if so the ref_count will be -1. + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 4 +++- + gio/tests/gdbus-peer.c | 2 +- + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit 5ac272297584d2c1f73815e842108b6704f862a9 +Author: David Zeuthen +AuthorDate: Wed Jun 30 12:10:00 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jun 30 12:18:49 2010 -0400 + + GDBus: Rename `introspection_data' parameter to `interface_info' + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 64 + +++++++++++++++++++++++++-------------------------- + gio/gdbusconnection.h | 2 +- + 2 files changed, 33 insertions(+), 33 deletions(-) + +commit 038d03cd08bdb42e6f83f6041ec01732476e900b +Author: David Zeuthen +AuthorDate: Wed Jun 30 11:43:42 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jun 30 11:51:40 2010 -0400 + + Bug 623142 – Ensure ::new-connection runs before processing D-Bus + messages + + Without this guarantee, peer-to-peer connections are not very + useful. However, with this guarantee it's possible to export objects + in a handler for the GDBusServer::new-connection signal. + + There are two caveats with this patch + + - it won't work on message bus connections + - we don't queue up messages to be written + + that can be addresses later if needed. + + https://bugzilla.gnome.org/show_bug.cgi?id=623142 + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdbusconnection.c | 30 +++++- + gio/gdbusconnection.h | 1 + + gio/gdbusprivate.c | 84 +++++++++++++++- + gio/gdbusprivate.h | 4 + + gio/gdbusserver.c | 11 ++- + gio/gio.symbols | 1 + + gio/gioenums.h | 5 +- + gio/tests/gdbus-peer.c | 187 + ++++++++++++++++++++++++++++++++++++ + 9 files changed, 316 insertions(+), 8 deletions(-) + +commit 137ae2413c9d25edd3f886fd25b6353c8170f7ba +Author: Ryan Lortie +AuthorDate: Wed Jun 30 10:02:45 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jun 30 10:02:45 2010 -0400 + + g_settings_list_keys() -> _list_items() + + This function returns children as well. + + docs/reference/gio/gio-sections.txt | 2 +- + gio/gio.symbols | 2 +- + gio/gsettings-tool.c | 4 ++-- + gio/gsettings.c | 12 ++++++++---- + gio/gsettings.h | 2 +- + 5 files changed, 13 insertions(+), 9 deletions(-) + +commit 3628b0b4992e9d1c915c38f8844eab9ba7a7112f +Author: Ryan Lortie +AuthorDate: Tue Jun 29 20:24:39 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jun 29 20:24:39 2010 -0400 + + GSettings: add , tests, modify output + + Add tag, more tests, and actually output the results + of these + new tags to the gschemas.compiled file. + + gio/gschema-compile.c | 149 + +++++++++++++++++++-- + gio/tests/Makefile.am | 8 ++ + gio/tests/gschema-compile.c | 10 +- + .../extend-and-shadow-indirect.gschema.xml | 17 +++ + .../schema-tests/extend-and-shadow.gschema.xml | 17 +++ + .../schema-tests/override-missing.gschema.xml | 11 ++ + .../schema-tests/override-range-error.gschema.xml | 12 ++ + .../schema-tests/override-then-key.gschema.xml | 15 +++ + gio/tests/schema-tests/override-twice.gschema.xml | 12 ++ + .../schema-tests/override-type-error.gschema.xml | 11 ++ + gio/tests/schema-tests/override.gschema.xml | 34 +++++ + 11 files changed, 284 insertions(+), 12 deletions(-) + +commit 900a756e8fb70bcd6e725f0696d8094a7208f905 +Author: Ryan Lortie +AuthorDate: Tue Jun 29 14:41:04 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jun 29 15:58:35 2010 -0400 + + GSettings: new tags 'extends', 'list-of' + + Add support for extends='' and list-of='' tags to the + element. + The attributes are parsed and some sanity-checking is done but + currently + nothing happens as a result. + + Add some tests. + + gio/gschema-compile.c | 124 + +++++++++++++++++++-- + gio/tests/Makefile.am | 10 +- + gio/tests/gschema-compile.c | 11 +- + gio/tests/schema-tests/extend-missing.gschema.xml | 3 + + gio/tests/schema-tests/extend-nonlist.gschema.xml | 4 + + gio/tests/schema-tests/extend-self.gschema.xml | 3 + + .../extend-wrong-list-indirect.gschema.xml | 6 + + .../schema-tests/extend-wrong-list.gschema.xml | 5 + + gio/tests/schema-tests/extending.gschema.xml | 21 ++++ + .../schema-tests/key-in-list-indirect.gschema.xml | 8 ++ + gio/tests/schema-tests/key-in-list.gschema.xml | 6 + + gio/tests/schema-tests/list-of-missing.gschema.xml | 3 + + 12 files changed, 192 insertions(+), 12 deletions(-) + +commit 101bfec676feb2c3d414fff11a31541318d87896 +Author: Ryan Lortie +AuthorDate: Tue Jun 29 14:40:44 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jun 29 15:58:35 2010 -0400 + + glib-compile-schemas: fix small leak + + gio/gschema-compile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6d4ade4cf0d6ed64ce59f3db4f270be08a4478fd +Author: David Zeuthen +AuthorDate: Tue Jun 29 15:19:56 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue Jun 29 15:21:11 2010 -0400 + + Bug 623143 – Never require non-closed connections + + There's a couple of places in GDBus where it's a programming error + (e.g. we'll assert or spew via e.g. g_warning()) to use the API on a + closed connection. This approach can never work since a + GDBusConnection can be closed at any point in time outside of + programmer control. + + Just change the code to return a run-time error (e.g. return + G_IO_ERROR_CLOSED when sending messages, invoking methods) or silently + accept the request (e.g. exporting objects, registering for signals) + without doing anything. + + Note that a GDBusConnection object is always useless after being + closed - e.g. there's no way to "reopen" a connection - the user will + have to create a new object and use that instead. + + https://bugzilla.gnome.org/show_bug.cgi?id=623143 + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 5 ----- + gio/gdbusnameowning.c | 5 ++--- + gio/gdbusnamewatching.c | 4 ++-- + 3 files changed, 4 insertions(+), 10 deletions(-) + +commit ab6b6c68c5b060057fd2953435c090b4d53fe93c +Author: Milan Bouchet-Valat +AuthorDate: Mon Jun 21 17:09:07 2010 +0200 +Commit: Milan Bouchet-Valat +CommitDate: Tue Jun 29 19:35:39 2010 +0200 + + Bug 622294 - More annotations for GVariant + + This adds annotations to all functions in gvariant.c. A few docs + were also fixed (wrong parameter names, missing mention that NULL + is allowed). + + glib/gvariant.c | 69 + ++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 39 insertions(+), 30 deletions(-) + +commit 0a2c9d67da311d8e276dd3835db56c59d8be2cab +Author: Colin Walters +AuthorDate: Mon Jun 28 17:16:44 2010 -0400 +Commit: Colin Walters +CommitDate: Mon Jun 28 17:19:39 2010 -0400 + + [autogen.sh] Support NOCONFIGURE (from gnome-common) + + gnome-common's autogen.sh uses NOCONFIGURE to skip running configure. + Support that in addition to the current AUTOGEN_SUBDIR_MODE. + + autogen.sh | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit c649615f17dc9d9644d742c48bf34c9000aa41b7 +Author: Jorge González +AuthorDate: Mon Jun 28 20:57:31 2010 +0200 +Commit: Jorge González +CommitDate: Mon Jun 28 20:57:31 2010 +0200 + + Updated Spanish translation + + po/es.po | 220 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 120 insertions(+), 100 deletions(-) + +commit 8a7d9906983c23c9bafa8b10c1fd089fcd7989f8 +Author: Ryan Lortie +AuthorDate: Mon Jun 28 14:06:32 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 28 14:06:32 2010 -0400 + + Bug 622565 - compile-schemas fails when no schemas + + Neutralise and deprecate the --uninstall option in the schema compiler + and remove it from gsettings.m4. + + Make the new default behaviour a compromise between the old default + behaviour and the previous --uninstall option: + + - never return a failure code if no schema files are found + + - issue a warning instead + + - remove the gschemas.compiled file if it exists + + gio/gschema-compile.c | 19 +++++++++---------- + m4macros/gsettings.m4 | 2 +- + 2 files changed, 10 insertions(+), 11 deletions(-) + +commit ab1111b8bbb7a6057248658013eb23d80f4721cf +Author: Ryan Lortie +AuthorDate: Mon Jun 28 13:58:25 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 28 13:58:25 2010 -0400 + + GSettings: peek instead of ref/unref enum class + + We only ever do the enum mapping for the property binding in the case + that a GParamSpecEnum exists and in that case the class is already + referenced by the GParamSpec. Use peek instead of ref/unref and add a + clarifying note. + + gio/gsettings-mapping.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 168cfc592283c992d6a6803a91528f87cec2d902 +Author: Ryan Lortie +AuthorDate: Mon Jun 28 10:18:45 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 28 10:20:50 2010 -0400 + + Bug 622127 - GSettings extended key validation + + First shot at attempting to implement this in a reasonable way. See + the bug for more information about why this is needed. + + docs/reference/gio/gio-sections.txt | 4 ++ + gio/gio.symbols | 1 + + gio/gsettings.c | 83 + ++++++++++++++++++++++++++++++++++++- + gio/gsettings.h | 27 ++++++++++++ + 4 files changed, 114 insertions(+), 1 deletion(-) + +commit aad7176c622b78dbdef5c8d1e0fa51b9612198ad +Author: Yaron Shahrabani +AuthorDate: Mon Jun 28 12:28:47 2010 +0300 +Commit: Yaron Shahrabani +CommitDate: Mon Jun 28 12:28:47 2010 +0300 + + Updated Hebrew translation. + + po/he.po | 1280 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 657 insertions(+), 623 deletions(-) + +commit eb454a1cb4d8ea16f6b5575c69e58c2877ea350e +Author: Matthias Clasen +AuthorDate: Sun Jun 27 19:27:04 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 27 19:27:04 2010 -0400 + + Fix a alloc/free mismatch + + Pointed out in http://bugzilla.redhat.com/show_bug.cgi?id=608453 + by David Tardon. + + glib/gbuffer.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d20969e07b8cc0233536cf929db0107b2c21c53e +Author: Matthias Clasen +AuthorDate: Sun Jun 27 16:31:53 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 27 16:31:53 2010 -0400 + + Filter out child schema entries when listing keys + + gio/gsettings-tool.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit 025435329a7159a906a66f6b15facc2d611be4fb +Author: Matthias Clasen +AuthorDate: Sun Jun 27 16:00:20 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 27 16:00:20 2010 -0400 + + Implement bash completion for gsettings + + gio/Makefile.am | 4 +- + gio/gsettings-bash-completion.sh | 33 +++ + gio/gsettings-tool.c | 498 + ++++++++++++++++++++++++++++++++------- + 3 files changed, 455 insertions(+), 80 deletions(-) + +commit 795d2bf8cf13d03214af3eb857d235c2917f9945 +Author: Ryan Lortie +AuthorDate: Sun Jun 27 10:11:45 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Jun 27 10:12:59 2010 -0400 + + GSettings: Don't free value before using its type + + Fix a bug where the type from g_variant_get_type() was used after + freeing the variant. This works for base types (since they are cached + and live forever) but not for arrays (where the bug was first seen). + + gio/gsettings-tool.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 87fd38bc4dd095d598ec375dbecb40d1393c3f8b +Author: Kristian Rietveld +AuthorDate: Sat Jun 26 22:55:47 2010 +0200 +Commit: Kristian Rietveld +CommitDate: Sat Jun 26 22:55:47 2010 +0200 + + Add PCRE_EXP_DECL to pcre_callout declaration + + Fixes build on Mac OS X. + + glib/pcre/pcre.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 840c5dd0da885fc42e498f165d59a5d0b4b97af2 +Author: Jorge González +AuthorDate: Sat Jun 26 10:14:52 2010 +0200 +Commit: Jorge González +CommitDate: Sat Jun 26 10:14:52 2010 +0200 + + Updated Spanish translation + + po/es.po | 1297 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 670 insertions(+), 627 deletions(-) + +commit 7cdc592ae478b71a66aa1541b81588b5b200e5f2 +Author: Ryan Lortie +AuthorDate: Fri Jun 25 10:52:32 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jun 25 10:56:41 2010 -0400 + + Bug 622128 - retry with default for failed mapping + + Hold the GSettingsKeyInfo as part of the binding structure to + save work + on each get/set. Use our copy of this structure to call the internal + get/set APIs. Give more descriptive error messages in the case of + invalid data on sets and retry using the translated default then + schema + default value in case of failure to map on reads. + + gio/gsettings.c | 137 + +++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 85 insertions(+), 52 deletions(-) + +commit 499ece9b52ec18e7a0ab5c9cda6b0b82946a8c7e +Author: Colin Walters +AuthorDate: Wed Jun 16 22:44:58 2010 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 25 09:26:23 2010 -0400 + + [gbinding] Move argument reference out of first column + + It makes gobject-introspection complain. + + gobject/gbinding.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 1ad08a6a9fc5bf700de31c928d4fc7031bd8fd19 +Author: Dan Winship +AuthorDate: Thu Jun 24 14:23:37 2010 -0400 +Commit: Dan Winship +CommitDate: Thu Jun 24 16:02:39 2010 -0400 + + Hack up glib/tests/array-test to not actually malloc 2G + + Fixes the test on machines where that allocation takes very long. + + https://bugzilla.gnome.org/show_bug.cgi?id=610784 + + glib/tests/array-test.c | 28 ++++++++++++++++++++-------- + 1 file changed, 20 insertions(+), 8 deletions(-) + +commit 48f3f262639b473c9be168d0491bedd357bcbca7 +Author: Ryan Lortie +AuthorDate: Thu Jun 24 13:32:26 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 24 13:32:26 2010 -0400 + + version.bump() + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cc295f09768d10576deba929ab8b7bc766cd207f +Author: Ryan Lortie +AuthorDate: Thu Jun 24 13:18:44 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 24 13:18:44 2010 -0400 + + Release glib 2.25.10 + + NEWS | 73 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 73 insertions(+) + +commit de0464cf891c386b0166066ac797255cd973b6e2 +Author: Ryan Lortie +AuthorDate: Thu Jun 24 12:25:48 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 24 12:25:48 2010 -0400 + + Tweak GSettings key/schema listing APIs + + docs/reference/gio/gio-sections.txt | 4 +- + gio/gio.symbols | 2 +- + gio/gsettings.c | 12 ++--- + gio/gsettings.h | 4 +- + gio/gsettingsschema.c | 89 + ++++++++++++++++++++++++++----------- + 5 files changed, 75 insertions(+), 36 deletions(-) + +commit e3d0d07b043334890deaf30d5b1e5072c9c7e742 +Author: Ryan Lortie +AuthorDate: Thu Jun 24 02:28:01 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 24 02:28:01 2010 -0400 + + Clarify GSettings documentation wrt errors + + Make it clear about exactly what "@key is valid" means. + + gio/gsettings.c | 73 + +++++++++++++++++++++++++++++---------------------------- + 1 file changed, 37 insertions(+), 36 deletions(-) + +commit 887d9d83aa232058b8446eafb7f0681db4219a77 +Author: Ryan Lortie +AuthorDate: Thu Jun 24 02:21:58 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 24 02:21:58 2010 -0400 + + g_keyfile_settings_backend_new doc improvement + + gio/gkeyfilesettingsbackend.c | 17 +++++++++++------ + 1 file changed, 11 insertions(+), 6 deletions(-) + +commit 123699465d2d07c18823f41dfc6a48dd7cefc603 +Author: Ryan Lortie +AuthorDate: Thu Jun 24 02:15:15 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 24 02:17:34 2010 -0400 + + GSettings: add g_settings_list_keys() + + Second half of bug #622554. + + docs/reference/gio/gio-sections.txt | 2 ++ + gio/gio.symbols | 1 + + gio/gsettings.c | 33 + ++++++++++++++++++++++++++++++++- + gio/gsettings.h | 1 + + 4 files changed, 36 insertions(+), 1 deletion(-) + +commit 6218d8047a9f073dc9e6eab009d70dc7933c5fd7 +Author: Ryan Lortie +AuthorDate: Thu Jun 24 01:49:27 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 24 02:17:28 2010 -0400 + + Add g_settings_schema_exists + + Solves half of #622554. + + gio/gio.symbols | 4 ++++ + gio/gsettings.h | 1 + + gio/gsettingsschema.c | 25 +++++++++++++++++++++++++ + 3 files changed, 30 insertions(+) + +commit 726e4dd6e7e12800db90a5159f5cb6fc3509e9e7 +Author: Ryan Lortie +AuthorDate: Thu Jun 24 01:49:00 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 24 02:17:22 2010 -0400 + + KeyfileSettingsBackend: fix symbol visibility leak + + gio/gkeyfilesettingsbackend.c | 1 + + 1 file changed, 1 insertion(+) + +commit 65fc931fb9df391a8a7ff8e279820fd2fed04bc0 +Author: Ryan Lortie +AuthorDate: Tue Jun 22 08:12:04 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 24 01:39:12 2010 -0400 + + Rework the GSettings keyfile backend + + docs/reference/gio/gio-sections.txt | 1 + + gio/Makefile.am | 1 - + gio/gkeyfilesettingsbackend.c | 811 + +++++++++++++++++++++--------------- + gio/gkeyfilesettingsbackend.h | 71 ---- + gio/gsettingsbackend.h | 4 +- + gio/tests/gsettings.c | 6 +- + 6 files changed, 475 insertions(+), 419 deletions(-) + +commit 6d828dae3804af311ffa8387a4e74bc28024351b +Author: Ryan Lortie +AuthorDate: Thu Jun 24 00:55:14 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 24 00:55:30 2010 -0400 + + GSettingsBackend: some debug code + + gio/gsettingsbackend.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit b638a675a8dae242347a721837c0b6c24e953665 +Author: Ryan Lortie +AuthorDate: Thu Jun 24 00:41:05 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 24 00:41:18 2010 -0400 + + Ignore more glib test cases + + glib/tests/.gitignore | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 519edcc2b3fd23fc29b38b581480adf39dd93451 +Author: Ryan Lortie +AuthorDate: Thu Jun 24 00:36:42 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 24 00:39:38 2010 -0400 + + fix leaks in the GSettings test case + + gio/tests/gsettings.c | 27 +++++++++++++++++++++++---- + 1 file changed, 23 insertions(+), 4 deletions(-) + +commit fb94e65a640d21b2e1a5c6e79eb3d755ba34c0e6 +Author: Ryan Lortie +AuthorDate: Thu Jun 24 00:35:10 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 24 00:39:38 2010 -0400 + + GChecksum: accept NULL pointer with length 0 + + Several GChecksum functions were incorrectly aborting when passed + a NULL + data pointer, even if the length parameter was equal to zero. + + glib/gchecksum.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit f76c4d062966afdcdf5306f4c769a7ab0934e843 +Author: Ryan Lortie +AuthorDate: Thu Jun 24 00:38:01 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 24 00:39:38 2010 -0400 + + GSettings "delayed": don't leak unapplied keys + + GDelayedSettingsBackend was leaking the GTree holding the list of + unapplied keys on finalize. + + gio/gdelayedsettingsbackend.c | 1 + + 1 file changed, 1 insertion(+) + +commit 17bc9bf94f2a11ce553d784e55649b43f3ed0130 +Author: Matthias Clasen +AuthorDate: Wed Jun 23 22:32:35 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 23 22:32:35 2010 -0400 + + Deprecate some rarely-used APIS + + GRelation and GCompletion are almost never used, and not very actively + maintained. Mark them as deprecated to make this clear. Bug #551271. + + glib/gcompletion.c | 25 ++++++++++++++++++++++++- + glib/gcompletion.h | 4 ++++ + glib/grel.c | 35 ++++++++++++++++++++++++++++++++++- + glib/grel.h | 4 ++++ + 4 files changed, 66 insertions(+), 2 deletions(-) + +commit 272836936e76a9bf0a0237e6489ce0508fa85534 +Author: Christian Dywan +AuthorDate: Fri Jun 18 16:14:27 2010 +0200 +Commit: Christian Dywan +CommitDate: Wed Jun 23 16:45:12 2010 +0200 + + Introduce G_PARAM_DEPRECATED and G_ENABLE_DIAGNOSTIC + + See https://bugzilla.gnome.org/show_bug.cgi?id=601686 + + gobject/gobject.c | 16 ++++++++++++++++ + gobject/gparam.h | 11 ++++++++--- + 2 files changed, 24 insertions(+), 3 deletions(-) + +commit f587cb57f249a8f4b869231ca20f5f19602a20ec +Author: Emmanuele Bassi +AuthorDate: Mon Jun 21 12:26:42 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Jun 23 15:19:24 2010 +0100 + + binding: Add SYNC_CREATE to the flags + + When creating a binding between two object properties we might want to + automatically synchronize the two values at the moment of the binding + creation, instead of waiting for the next change. + + The G_BINDING_SYNC_CREATE flag does exactly what it says on the tin. + + https://bugzilla.gnome.org/show_bug.cgi?id=622281 + + gobject/gbinding.c | 9 +++++++++ + gobject/gbinding.h | 6 +++++- + gobject/tests/binding.c | 36 ++++++++++++++++++++++++++++++++++++ + 3 files changed, 50 insertions(+), 1 deletion(-) + +commit d3af9c0ec59465e4076791881bc89fe51539f3fd +Author: Ryan Lortie +AuthorDate: Wed Jun 23 10:12:14 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jun 23 10:12:14 2010 -0400 + + neutralise pltcheck.sh + + gio/pltcheck.sh | 2 ++ + glib/pltcheck.sh | 2 ++ + gobject/pltcheck.sh | 2 ++ + 3 files changed, 6 insertions(+) + +commit 13ac216ca386715a915ec8acd8178c528774273a +Author: Matthias Clasen +AuthorDate: Wed Jun 23 09:03:51 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 23 09:25:30 2010 -0400 + + GIO doc cleanups + + docs/reference/gio/Makefile.am | 18 ++++++++++++++++++ + docs/reference/gio/gio-sections.txt | 28 +++++++++++++++++++++++++++- + gio/gsettings.c | 2 +- + 3 files changed, 46 insertions(+), 2 deletions(-) + +commit fadac4bd0f008dae058bcbc56b3073c6c38092a6 +Author: Matthias Clasen +AuthorDate: Wed Jun 23 07:32:24 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 23 09:25:30 2010 -0400 + + Document g_cclosure_marshal_VOID__VARIANT + + gobject/gclosure.c | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +commit 3549e06f81768453b8c389331705615ae3529041 +Author: Matthias Clasen +AuthorDate: Wed Jun 23 07:22:49 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 23 09:25:30 2010 -0400 + + Ignore gatomicarray.h + + Otherwise gtk-doc picks up declarations from that header and is + disappointed when they are not documented. + + docs/reference/gobject/Makefile.am | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 9c6130cdde846cee4e8ad93504a6cb4745a35cea +Author: Matthias Clasen +AuthorDate: Wed Jun 23 07:21:50 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 23 09:25:29 2010 -0400 + + silence gtk-doc + + Add g_error_get_type to a private section in gobject-sections.txt + so gtk-doc doesn't complain about it. + + docs/reference/gobject/gobject-sections.txt | 2 ++ + 1 file changed, 2 insertions(+) + +commit 8eb755e78e56036b93a7b11d3d6fe4237ab708be +Author: Matthias Clasen +AuthorDate: Wed Jun 23 00:20:11 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 23 09:25:29 2010 -0400 + + Add some more unicode property tests + + glib/tests/utf8-misc.c | 32 +++++++++++++++++++++++++++++++- + 1 file changed, 31 insertions(+), 1 deletion(-) + +commit e26b92b94775c8b1b6e94ca29a6d3a4404db449b +Author: Matthias Clasen +AuthorDate: Tue Jun 22 23:39:51 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 23 09:25:29 2010 -0400 + + Move node tests to the test framework + + glib/tests/node.c | 70 + ++++++++++++++++++++++++++++++++++++++----------------- + tests/.gitignore | 1 - + tests/Makefile.am | 2 -- + 3 files changed, 49 insertions(+), 24 deletions(-) + +commit 464b5ff3570fd43fa52b6ec5571a02bd705f9e9c +Author: Matthias Clasen +AuthorDate: Tue Jun 22 22:25:02 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 23 09:25:29 2010 -0400 + + Some more hash, utils and checksum tests + + glib/tests/checksum.c | 18 ++++++++- + glib/tests/hash.c | 102 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/tests/utils.c | 31 +++++++++++++++ + 3 files changed, 149 insertions(+), 2 deletions(-) + +commit 01abbc4bd37649bf75642ba98f8f6109065a7333 +Author: Matthias Clasen +AuthorDate: Tue Jun 22 22:24:29 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 23 09:25:29 2010 -0400 + + Move node test to the test framework + + glib/tests/Makefile.am | 3 + + glib/tests/node.c | 264 + +++++++++++++++++++++++++++++++++++++++++++++++++ + tests/node-test.c | 223 ----------------------------------------- + 3 files changed, 267 insertions(+), 223 deletions(-) + +commit 5c1b3a02637c8ed767c94f30df994fed9b3bddfc +Author: Matthias Clasen +AuthorDate: Tue Jun 22 19:50:35 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 23 09:25:29 2010 -0400 + + Move date tests to the test framework + + glib/tests/Makefile.am | 3 + + glib/tests/date.c | 287 ++++++++++++++++++++++++++++ + tests/.gitignore | 1 - + tests/Makefile.am | 1 - + tests/date-test.c | 499 + ------------------------------------------------- + 5 files changed, 290 insertions(+), 501 deletions(-) + +commit 7d81e99c4bfea343ce653668b6d2d00e79324688 +Author: Matthias Clasen +AuthorDate: Tue Jun 22 17:42:30 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 23 09:25:29 2010 -0400 + + Add an index for 2.26 api additions + + docs/reference/gobject/gobject-docs.sgml | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit b116838da31dc212c60f13821dfe87187731dc78 +Author: Milan Bouchet-Valat +AuthorDate: Wed Jun 23 12:17:29 2010 +0200 +Commit: Christian Dywan +CommitDate: Wed Jun 23 14:35:42 2010 +0200 + + Improve documentation for g_strcmp0() + + Be more explicit about the handling of two NULL pointers. + + https://bugzilla.gnome.org/show_bug.cgi?id=622480 + + glib/gtestutils.c | 1 + + 1 file changed, 1 insertion(+) + +commit 6920e503e637e70a44f7baf899de4bd171534d39 +Author: David Zeuthen +AuthorDate: Tue Jun 22 17:48:35 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue Jun 22 17:48:35 2010 -0400 + + GDBusProxy: Don't warn when calling methods on other interfaces + + If we know the expected interface (e.g. :g-interface-info is set), + then we always warned when calling a method on a different + interface. Don't do that, there's no way the expected interface can + know anything about this method. + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit d68f8012b2d8b9b86b47ed1f091f29d70016cf73 +Author: Dan Winship +AuthorDate: Tue Jun 22 15:31:55 2010 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 22 15:37:42 2010 -0400 + + gio/tests/testapps: Fix source refcounting + + Either child_watch_source or timeout_source will already have been + destroyed after we finish the loop, and it's not safe to call + g_source_destroy() on it a second time unless we're still holding a + ref on it. + + gio/tests/testapps.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a0e1b226a21ca498b301981b0c89e89ad9a31eb1 +Author: Dan Winship +AuthorDate: Fri Apr 23 08:47:18 2010 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 22 15:25:28 2010 -0400 + + GSocketConnection: don't close the socket if it's still reffed + + When disposing a GSocketConnection, don't explicitly close the + underlying GSocket. The GSocket will close itself if it gets + destroyed, and if it doesn't get destroyed, that presumably means the + app still wants to use it. Eg, this lets you use GSocketClient to + create a GSocketConnection, and then take the GSocket and destroy the + GSocketConnection. + + https://bugzilla.gnome.org/show_bug.cgi?id=616855 + + gio/gsocketconnection.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +commit e0ff84e68817d12ebf4cde9433c4e1ed703d1eb4 +Author: Dan Winship +AuthorDate: Fri Apr 23 08:21:41 2010 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 22 15:20:29 2010 -0400 + + GSocketInput/OutputStream: fix non-blocking on Windows + + The GSocket docs point out that g_socket_send/g_socket_receive may + return G_IO_ERROR_WOULD_BLOCK even if g_socket_condition_check claimed + that they wouldn't. Fix the socket streams to check for that. + + https://bugzilla.gnome.org/show_bug.cgi?id=603309 + + gio/gsocket.c | 8 ++++++++ + gio/gsocketinputstream.c | 46 + ++++++++++++++++++---------------------------- + gio/gsocketoutputstream.c | 46 + ++++++++++++++++++---------------------------- + 3 files changed, 44 insertions(+), 56 deletions(-) + +commit 2be38f6926d8bf2738c3898e831dcb3928925f90 +Author: David Zeuthen +AuthorDate: Tue Jun 22 12:12:16 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue Jun 22 12:14:31 2010 -0400 + + GDBus: update padding + + Add lots of padding for public class structures. Notably, we seemed to + lack any padding whatsoever in the GDBusMessageClass struct (spotted + by Dan Winship). Also switch to using + + gpointer padding[N]; + + instead of + + void (*_g_reserved1) (void); + ... + void (*_g_reservedN) (void); + + Signed-off-by: David Zeuthen + + gio/gdbusauth.h | 4 ++++ + gio/gdbusauthmechanism.h | 18 +----------------- + gio/gdbusauthmechanismanon.h | 17 +---------------- + gio/gdbusauthmechanismexternal.h | 17 +---------------- + gio/gdbusauthmechanismsha1.h | 17 +---------------- + gio/gdbusauthobserver.h | 17 +---------------- + gio/gdbusconnection.h | 18 ++---------------- + gio/gdbusmessage.h | 4 ++++ + gio/gdbusmethodinvocation.h | 9 +-------- + gio/gdbusproxy.h | 9 +-------- + gio/gdbusserver.h | 9 +-------- + 11 files changed, 18 insertions(+), 121 deletions(-) + +commit d19380c809525559f55ba5f3304c0e787c2ebfac +Author: Matthias Clasen +AuthorDate: Tue Jun 22 08:24:30 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 22 08:24:30 2010 -0400 + + Improve g_application_new documentation + + Patch by Saleem Abdulrasool, bug 622154. + + gio/gapplication.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 16c2f080497d1ed663237e725192c4f411f92f8f +Author: Ryan Lortie +AuthorDate: Tue Jun 22 08:09:27 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Jun 22 08:10:05 2010 -0400 + + Add single include guards to gvariant[type].h + + glib/gvariant.h | 4 ++++ + glib/gvarianttype.h | 4 ++++ + 2 files changed, 8 insertions(+) + +commit 05354cefc54a0f42e5d7dee1798d2b56c135c12c +Author: Tor Lillqvist +AuthorDate: Tue Jun 22 12:41:01 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Tue Jun 22 12:41:01 2010 +0300 + + Make the protocol.c test program compile on Windows + + Note that it does not actually work, though. Maybe because + g_io_channel_set_flags() is not implemented for file descriptor based + GIOChannels on Windows. + + glib/tests/protocol.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit efb1a054b0858b4475941892f53bbc5186065df9 +Author: Tor Lillqvist +AuthorDate: Tue Jun 22 12:13:21 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Tue Jun 22 12:22:46 2010 +0300 + + Fix build with the Microsoft compiler + + Correct a few gccisms and C99isms. Ensure the Windows-specific gio + source files are listed in the generated gio VS project file. + + gio/Makefile.am | 12 +++++++----- + gio/gcredentials.c | 2 ++ + gio/gdbusauthmechanismexternal.c | 2 ++ + gio/gdbusauthmechanismsha1.c | 5 +++++ + gio/gdbusconnection.c | 2 +- + gio/gdbuserror.c | 2 +- + gio/gdbusintrospection.c | 2 +- + gio/gdbusserver.c | 3 +++ + gio/gio.symbols | 2 ++ + gio/glocalfileinputstream.c | 6 ++++-- + gio/glocalfileoutputstream.c | 6 ++++-- + 11 files changed, 32 insertions(+), 12 deletions(-) + +commit 2e842490826644210bc5d2df2df8092597b3f708 +Author: Tor Lillqvist +AuthorDate: Tue Jun 22 12:10:34 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Tue Jun 22 12:16:14 2010 +0300 + + Bypass a few functions not used on Windows when compiling for Windows + + gio/glocalfile.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 045c96b71a7755927e258c2b116c7c0ee8326bd1 +Author: Matthias Clasen +AuthorDate: Mon Jun 21 23:07:46 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 21 23:08:01 2010 -0400 + + Add a test for g_strip_prefix + + glib/tests/strfuncs.c | 27 +++++++++++++++++++++++++++ + 1 file changed, 27 insertions(+) + +commit 2f438f18ae8794747dadf5018616d1dcc52a0924 +Author: Matthias Clasen +AuthorDate: Mon Jun 21 23:06:17 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 21 23:08:01 2010 -0400 + + Move hash tests to the test framework + + glib/tests/Makefile.am | 3 + + glib/tests/hash.c | 525 + +++++++++++++++++++++++++++++++++++++++++++++++++ + tests/.gitignore | 1 - + tests/Makefile.am | 2 - + tests/hash-test.c | 459 ------------------------------------------ + 5 files changed, 528 insertions(+), 462 deletions(-) + +commit 7d14b5fbf1fcda2068dc01f9a0a2e4b9796daea6 +Author: Matthias Clasen +AuthorDate: Mon Jun 21 22:25:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 21 23:08:01 2010 -0400 + + Some more tests + + glib/tests/checksum.c | 72 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 72 insertions(+) + +commit 5629366c3d245b78ad148576f2dccabed83baa71 +Author: Matthias Clasen +AuthorDate: Mon Jun 21 21:22:09 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 21 23:08:01 2010 -0400 + + Move checksum tests to the test framework + + glib/tests/Makefile.am | 3 + + glib/tests/checksum.c | 679 + +++++++++++++++++++++++++++++++++++++++++++++++++ + tests/.gitignore | 1 - + tests/Makefile.am | 2 - + tests/checksum-test.c | 676 + ------------------------------------------------ + 5 files changed, 682 insertions(+), 679 deletions(-) + +commit 839078ea63f697f1066a040425e1d2070f3c81a2 +Author: Matthias Clasen +AuthorDate: Mon Jun 21 20:07:26 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 21 23:08:01 2010 -0400 + + Add some more Unicode tests + + glib/tests/utf8-misc.c | 263 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 263 insertions(+) + +commit 45411ccbe3c9d1b08332942d1e7b594330688126 +Author: David Zeuthen +AuthorDate: Mon Jun 21 16:08:53 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon Jun 21 16:12:23 2010 -0400 + + Bug 621945 – Filter outgoing messages in GDBusConnection + + This patch breaks some rarely-used public API (only known user is + dconf). + + This patch is based on work from Peng Huang . + + See https://bugzilla.gnome.org/show_bug.cgi?id=621945 + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 66 + ++++++++++++++++++++++++++++++++++++++---- + gio/gdbusconnection.h | 3 ++ + gio/gdbusprivate.c | 69 + ++++++++++++++++++++++++++++++-------------- + gio/gdbusprivate.h | 5 ++++ + gio/tests/gdbus-connection.c | 16 ++++++++-- + 5 files changed, 129 insertions(+), 30 deletions(-) + +commit a4cd39e74122c9376954204cb45c6be4926e5ee9 +Author: Ryan Lortie +AuthorDate: Mon Jun 21 14:01:50 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 21 14:01:50 2010 -0400 + + gobject docs: ignore some sgml files + + docs/reference/gobject/tmpl/.gitignore | 2 ++ + 1 file changed, 2 insertions(+) + +commit a4b42d3a751bcbe22bb41ddfced68eebcce0e386 +Author: Ryan Lortie +AuthorDate: Mon Jun 21 13:57:54 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 21 13:57:54 2010 -0400 + + .gitignore the moved tests + + glib/tests/.gitignore | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit c9553af68f543113be41e6ae8dcdd9ee5e2267bc +Author: Ryan Lortie +AuthorDate: Mon Jun 21 13:55:28 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 21 13:55:28 2010 -0400 + + Use -Bsymbolic-functions, drop g*alias PLT hackery + + This is a minimal patch-out of the galias functionality. We will do a + release like this so that we can easily back it out if there are + reported problems. + + A more substantial cleanup (mostly removing #includes from every file) + will follow if there are no issues. + + configure.in | 2 +- + gio/Makefile.am | 6 +++--- + gio/makegioalias.pl | 2 ++ + glib/Makefile.am | 2 +- + glib/makegalias.pl | 2 ++ + gmodule/Makefile.am | 2 +- + gobject/Makefile.am | 6 +++--- + gobject/makegobjectalias.pl | 2 ++ + gthread/Makefile.am | 2 +- + 9 files changed, 16 insertions(+), 10 deletions(-) + +commit e549bbf66406fc483cd43ce860ba88e7d83d3c80 +Author: Ryan Lortie +AuthorDate: Mon Jun 21 13:25:51 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 21 13:25:51 2010 -0400 + + distcheck fix + + gio/tests/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit d5dc656d35887780008c95c5ed496f628948813c +Author: Ryan Lortie +AuthorDate: Mon Jun 21 13:25:44 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 21 13:25:44 2010 -0400 + + Add check for -Bsymbolic-functions linker flag + + configure.in | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +commit 7556f660b551d0713100af6672287393350d9a19 +Author: Ryan Lortie +AuthorDate: Mon Jun 21 11:30:26 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Jun 21 13:24:40 2010 -0400 + + Remove gsettings-schema-convert tool + + Having this tool in GLib is a bad idea for a number of reasons: + + - experience has shown that the simple file format was a bad idea + + - the tool is currently implemented with a hack that would require a + dependency inversion to solve (the tool needs to depend on Python + GVariant bindings) + + - the tool itself is unmaintained + + It will be moved to the GConf git repository so people can continue to + use it for the purpose of converting GConf schemas. + + docs/reference/gio/Makefile.am | 2 - + docs/reference/gio/gio-docs.xml | 1 - + docs/reference/gio/glib-compile-schemas.xml | 6 - + docs/reference/gio/gsettings-schema-convert.xml | 113 --- + docs/reference/gio/migrating-gconf.xml | 2 +- + gio/Makefile.am | 1 - + gio/gsettings-schema-convert | 1076 + ----------------------- + 7 files changed, 1 insertion(+), 1200 deletions(-) + +commit 95c4ec1056468764dd6c71971ad06370c0f1b99b +Author: Javier Jardón +AuthorDate: Mon Jun 21 17:28:15 2010 +0200 +Commit: Javier Jardón +CommitDate: Mon Jun 21 17:28:15 2010 +0200 + + [docs] Fix typo + + docs/reference/glib/building.sgml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6c02c99df0cb1c3b9bdb20c8fd56eddc7ae8bf2a +Author: Sven Herzberg +AuthorDate: Tue Apr 20 15:01:17 2010 +0200 +Commit: Sven Herzberg +CommitDate: Mon Jun 21 12:34:44 2010 +0200 + + don't treat debug/info/message as fatal messages by default + + * glib/gtestutils.c: don't treat non-fatal messages as errors + * glib/tests/.gitignore: silence + * glib/tests/Makefile.am: updated + * glib/tests/protocol.c: add a test for the message treatment + + glib/gtestutils.c | 8 +- + glib/tests/.gitignore | 1 + + glib/tests/Makefile.am | 10 +- + glib/tests/protocol.c | 334 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 348 insertions(+), 5 deletions(-) + +commit 60a5b197991aae58de4a85c9020a49edc5003457 +Author: Matthias Clasen +AuthorDate: Mon Jun 21 00:00:51 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 21 00:00:51 2010 -0400 + + Add a test for g_unichar_validate + + glib/tests/utf8-misc.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit f13618623b191c539cc151d19f7f5b54e24b3607 +Author: Matthias Clasen +AuthorDate: Sun Jun 20 23:46:01 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 23:46:01 2010 -0400 + + Test inplace decoding + + glib/tests/base64.c | 36 +++++++++++++++++++++++++++++++++++- + 1 file changed, 35 insertions(+), 1 deletion(-) + +commit db5bd7b90b78508b8be448b8cd5de7735b3ca520 +Author: Matthias Clasen +AuthorDate: Sun Jun 20 23:35:31 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 23:35:31 2010 -0400 + + Some more utf8 tests + + glib/tests/Makefile.am | 3 ++ + glib/tests/utf8-misc.c | 99 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 102 insertions(+) + +commit a2f4564fd9bee001e6b4d60df257ab6b2110f22f +Author: Matthias Clasen +AuthorDate: Sun Jun 20 23:07:39 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 23:07:39 2010 -0400 + + Test glib_check_version + + glib/tests/utils.c | 24 ++++++++++++++++++++++++ + 1 file changed, 24 insertions(+) + +commit cca48bd5b9de1d4902b12acc86778def3ae00cbe +Author: Matthias Clasen +AuthorDate: Sun Jun 20 22:46:47 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 22:46:47 2010 -0400 + + Add support for coverage reports with lcov + + Patch by Patrick Hulin, bug #501057. + + Makefile.am | 2 +- + Makefile.decl | 22 +++++++++++++ + configure.in | 69 + +++++++++++++++++++++++++++++++++++++++ + docs/reference/glib/building.sgml | 19 ++++++++++- + 4 files changed, 110 insertions(+), 2 deletions(-) + +commit bad7f1e54f03284cfd6235d345270ecada4379b5 +Author: Matthias Clasen +AuthorDate: Sun Jun 20 22:18:30 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 22:18:30 2010 -0400 + + Some fixes + + glib/tests/collate.c | 2 ++ + glib/tests/utf8-pointer.c | 39 ++++++++++++++------------ + glib/tests/utf8-validate.c | 68 + ++++++++++++++++++---------------------------- + 3 files changed, 50 insertions(+), 59 deletions(-) + +commit 7bea2a7a4fec3dda19d08474c73f56a0f7cf2741 +Author: Matthias Clasen +AuthorDate: Sun Jun 20 21:16:24 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 21:16:24 2010 -0400 + + Move utf8 validation tests to the test framework + + glib/tests/Makefile.am | 3 + + glib/tests/utf8-validate.c | 319 + +++++++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 3 - + tests/utf8-validate.c | 319 + --------------------------------------------- + 4 files changed, 322 insertions(+), 322 deletions(-) + +commit 5b08ef84e4132db8f3e873f52c4bc929949dff4d +Author: Matthias Clasen +AuthorDate: Sun Jun 20 21:04:47 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 21:04:47 2010 -0400 + + Move utf8 pointer tests to test framework + + glib/tests/Makefile.am | 6 ++ + glib/tests/collate.c | 215 + ++++++++++++++++++++++++++++++++++++++++++++++ + glib/tests/utf8-pointer.c | 112 ++++++++++++++++++++++++ + tests/Makefile.am | 1 - + tests/utf8-pointer.c | 112 ------------------------ + 5 files changed, 333 insertions(+), 113 deletions(-) + +commit 0ed575213b0be6553f08c7e3b35e49faae09f7ad +Author: Matthias Clasen +AuthorDate: Sun Jun 20 16:24:56 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 16:53:39 2010 -0400 + + Consolide base64 tests in a single file + + glib/tests/base64.c | 197 +++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 3 - + tests/testingbase64.c | 236 + -------------------------------------------------- + 3 files changed, 197 insertions(+), 239 deletions(-) + +commit 08d6e535be868b04fe83d02cb8a99a8db96d2192 +Author: Matthias Clasen +AuthorDate: Sun Jun 20 12:29:17 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 16:53:38 2010 -0400 + + Move scanner tests to glib/tests + + glib/tests/Makefile.am | 3 ++ + glib/tests/scannerapi.c | 139 + ++++++++++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 7 --- + tests/scannerapi.c | 139 + ------------------------------------------------ + 4 files changed, 142 insertions(+), 146 deletions(-) + +commit 87df095de3246142c9407f088b300c3a18846a94 +Author: Ryan Lortie +AuthorDate: Sun Jun 20 12:32:00 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Jun 20 12:32:00 2010 -0400 + + GVariant: fix doc copy/paste error + + glib/gvariant.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ede159ec452aa27d7ea0058833ea39baed14756e +Author: Ryan Lortie +AuthorDate: Sun Jun 20 12:30:27 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Jun 20 12:31:37 2010 -0400 + + Add enum type for GVariantParseError + + docs/reference/glib/glib-sections.txt | 1 + + glib/gvariant-parser.c | 7 +++++++ + glib/gvariant.h | 5 +++++ + 3 files changed, 13 insertions(+) + +commit 09aa2e79ab9b39b92c1cc911b95b49872a417382 +Author: Matthias Clasen +AuthorDate: Sun Jun 20 12:23:13 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 12:23:13 2010 -0400 + + Move sequence tests to the test framework + + glib/tests/Makefile.am | 3 + + glib/tests/sequence.c | 1286 + +++++++++++++++++++++++++++++++++++++++++++++++ + tests/sequence-test.c | 1301 + ------------------------------------------------ + 3 files changed, 1289 insertions(+), 1301 deletions(-) + +commit bf8ce25216c14c8f6f3267b0af107c03390e63bf +Author: Matthias Clasen +AuthorDate: Sun Jun 20 11:34:31 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 11:34:31 2010 -0400 + + Move base64 tests of to test framework + + glib/tests/Makefile.am | 3 ++ + glib/tests/base64.c | 139 + +++++++++++++++++++++++++++++++++++++++++++++++++ + tests/base64-test.c | 138 + ------------------------------------------------ + 3 files changed, 142 insertions(+), 138 deletions(-) + +commit 9a85f654c77dab88f625169a0128d890acf50b0b +Author: Matthias Clasen +AuthorDate: Sun Jun 20 11:20:41 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 11:20:54 2010 -0400 + + Add new scripts to docs + + docs/reference/glib/tmpl/unicode.sgml | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +commit f849dbac05bad8e60b00707823f5c6d935ff36c1 +Author: Matthias Clasen +AuthorDate: Sun Jun 20 11:07:49 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 11:20:54 2010 -0400 + + Move regex tests to the g_test framework + + glib/tests/Makefile.am | 3 + + glib/tests/regex.c | 1870 ++++++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 4 +- + tests/regex-test.c | 2122 + ------------------------------------------------ + 4 files changed, 1874 insertions(+), 2125 deletions(-) + +commit fc5f3a96be53ceb8b431dffa675e622ec8a48186 +Author: Christian Persch +AuthorDate: Sun Jun 20 02:32:35 2010 +0200 +Commit: Christian Persch +CommitDate: Sun Jun 20 13:35:41 2010 +0200 + + Docs fix + + gio/gdatainputstream.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 85621f1a0f4d77cde71e37ed8212e707f4af441d +Author: Matthias Clasen +AuthorDate: Sun Jun 20 01:46:35 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 01:46:35 2010 -0400 + + Update the include pcre to 8.02 + + glib/pcre/Makefile.am | 1 - + glib/pcre/pcre.h | 21 +- + glib/pcre/pcre_compile.c | 1329 ++++++++++++++++++++++---------- + glib/pcre/pcre_config.c | 6 +- + glib/pcre/pcre_dfa_exec.c | 514 +++++++++---- + glib/pcre/pcre_exec.c | 1563 + +++++++++++++++++++++++++++++--------- + glib/pcre/pcre_fullinfo.c | 15 +- + glib/pcre/pcre_globals.c | 23 +- + glib/pcre/pcre_info.c | 4 +- + glib/pcre/pcre_internal.h | 759 ++++++++++++++++-- + glib/pcre/pcre_newline.c | 8 +- + glib/pcre/pcre_study.c | 448 ++++++++++- + glib/pcre/pcre_tables.c | 631 +++++++++------ + glib/pcre/pcre_try_flipped.c | 6 +- + glib/pcre/pcre_ucp_searchfuncs.c | 46 +- + glib/pcre/pcre_xclass.c | 7 +- + glib/pcre/ucp.h | 53 +- + glib/pcre/ucpinternal.h | 92 --- + 18 files changed, 4133 insertions(+), 1393 deletions(-) + +commit b0b7aeffc063981c32ff99da0385841ba18f5847 +Author: Matthias Clasen +AuthorDate: Sun Jun 20 01:14:55 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 01:14:55 2010 -0400 + + Add Unicode 5.2 scripts + + glib/gunicode.h | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) + +commit 5fffa39b6ae8f8faf1036fbf07de02ffe84ef099 +Author: Matthias Clasen +AuthorDate: Sun Jun 20 00:09:00 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 20 00:15:31 2010 -0400 + + Fix a memory leak in g_ptr_array_remove_index_fast + + We need to call the element_free_func even if we remove the + last element. Bug #618866. + + glib/garray.c | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +commit ea6470e31a6884a7243e9cd4df9734f1dc4828b9 +Author: Ryan Lortie +AuthorDate: Sat Jun 19 16:13:58 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jun 19 16:14:23 2010 -0400 + + GSettings: complete support for enum binding + + gio/gsettings-mapping.c | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +commit dbe68f7c834c152c111afba41ffffd70a8e6997c +Author: Johan Dahlin +AuthorDate: Sat Jun 19 15:23:35 2010 -0300 +Commit: Johan Dahlin +CommitDate: Sat Jun 19 15:24:18 2010 -0300 + + [configure] Require dbus 1.2.14 + + dbus_message_set_serial requires dbus 1.2.14, make the dependency + explicit instead of failing to compile a test. + + configure.in | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 2d4e48b73c3efe74c3818616de6fcc332f2e640a +Author: Christian Persch +AuthorDate: Sat Jun 19 20:04:20 2010 +0200 +Commit: Christian Persch +CommitDate: Sat Jun 19 20:04:20 2010 +0200 + + Tiny docs fix + + gobject/gvaluetypes.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit db68f8203ab9b81e70dbada99faaf69c727f793c +Author: Christian Persch +AuthorDate: Fri Jun 18 01:08:13 2010 +0200 +Commit: Christian Persch +CommitDate: Sat Jun 19 19:07:36 2010 +0200 + + Add g_value_take_variant + + Turns out we do need g_value_take_variant(), so we can correctly + implement VARIANT:* marshalers. + + Bug #621947. + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/glib-genmarshal.c | 2 +- + gobject/gobject.symbols | 1 + + gobject/gtype.h | 7 +++ + gobject/gvaluetypes.c | 39 ++++++++++++++ + gobject/gvaluetypes.h | 2 + + tests/gobject/accumulator.c | 81 + +++++++++++++++++++++++++++++ + tests/gobject/testmarshal.list | 2 +- + 8 files changed, 133 insertions(+), 2 deletions(-) + +commit 052ef2614af7a8706035982d8211fff64241e83f +Author: Christian Persch +AuthorDate: Sat Jun 19 16:42:11 2010 +0200 +Commit: Christian Persch +CommitDate: Sat Jun 19 19:07:36 2010 +0200 + + Add g_variant_is_floating + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gvariant-core.c | 24 ++++++++++++++++++++++++ + glib/gvariant.h | 1 + + glib/tests/gvariant.c | 13 +++++++++++++ + 5 files changed, 40 insertions(+) + +commit 7bb00fd0e8a18b3e20d30053579f002e587dfbbb +Author: Christian Persch +AuthorDate: Sat Jun 19 16:41:25 2010 +0200 +Commit: Christian Persch +CommitDate: Sat Jun 19 19:07:36 2010 +0200 + + Fix a preprocessor warning with --disable-visibility + + Don't redefine DISABLE_VISIBILITY when already building with + --disable-visibility. + + gthread/tests/1bit-mutex.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit a558e460a2f493670932faa4c947ffc42ea8bc70 +Author: Milan Bouchet-Valat +AuthorDate: Sat Jun 19 19:00:13 2010 +0200 +Commit: Milan Bouchet-Valat +CommitDate: Sat Jun 19 19:00:13 2010 +0200 + + Fix gsettings tool crash, part 2 + + Same as previous commit, but for two other functions it missed. + + gio/gsettings-tool.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 62939f5e45cd102313285ec13f90c3b4763e6ca8 +Author: Milan Bouchet-Valat +AuthorDate: Sat Jun 19 18:33:26 2010 +0200 +Commit: Milan Bouchet-Valat +CommitDate: Sat Jun 19 18:33:26 2010 +0200 + + Fix gsettings tool crash + + When no path is provided for the schema, we have call + g_settings_new() instead of g_settings_new_with_path() + passing a NULL path. + + This was crashing the tool on start since an assertion was + recently added to g_settings_new_with_path() to refuse NULL. + + gio/gsettings-tool.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit a7689537605ade51b19be76baa3fba303527483d +Author: Ryan Lortie +AuthorDate: Sat Jun 19 11:38:57 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Jun 19 11:41:30 2010 -0400 + + Fix bug in strinfo + + We can't search for a larger needle inside of a smaller haystack, and + unsigned integer subtraction tends to result in very large numbers + rather than small ones. + + Add a check for this case and abort out immediately. + + Also add a test case (lifted directly from the docs) that demonstrates + the problem. + + Issue discovered and tracked down by Milan Bouchet-Valat + + gio/strinfo.c | 3 +++ + gio/tests/gschema-compile.c | 3 ++- + gio/tests/schema-tests/from-docs.gschema.xml | 34 + ++++++++++++++++++++++++++++ + 3 files changed, 39 insertions(+), 1 deletion(-) + +commit e91541bf8c2e915b330c6dfee46a7709949da3a9 +Author: Fran Diéguez +AuthorDate: Sat Jun 19 15:13:41 2010 +0200 +Commit: Fran Diéguez +CommitDate: Sat Jun 19 15:13:41 2010 +0200 + + Updated Galician translations + + po/gl.po | 104 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 58 insertions(+), 46 deletions(-) + +commit a2888fbbf0f1a61436e036ff81a14f19fe45d5d0 +Author: Ryan Lortie +AuthorDate: Fri Jun 18 23:14:46 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jun 18 23:14:46 2010 -0400 + + Add a note to docs about paragraphs in schemas + + docs/reference/gio/migrating-gconf.xml | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 6217c9b41eb369cac48149639369f51b85763986 +Author: Ryan Lortie +AuthorDate: Fri Jun 18 22:59:43 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jun 18 23:02:32 2010 -0400 + + Conditional gsettings.m4 support, AC_PATH_PROG + + Add new support for conditional enabling of GSettings (as per + bug #616718) and use AC_PATH_PROG instead of AC_PATH_TOOL (as per + bug #621172). + + configure.in | 2 +- + m4macros/gsettings.m4 | 6 ++++-- + 2 files changed, 5 insertions(+), 3 deletions(-) + +commit 1ed105b19b31bd5265de7d62156732b343c086e3 +Author: Jürg Billeter +AuthorDate: Fri Jun 18 23:48:28 2010 +0200 +Commit: David Zeuthen +CommitDate: Fri Jun 18 19:28:31 2010 -0400 + + GDBus: Sink closures in _with_closures functions + + See https://bugzilla.gnome.org/show_bug.cgi?id=621092#c12 + + Signed-off-by: David Zeuthen + + gio/gdbusnameowning.c | 25 ++++++++++++++++++++----- + gio/gdbusnamewatching.c | 20 ++++++++++++++++---- + 2 files changed, 36 insertions(+), 9 deletions(-) + +commit 8f5bde679e7cf5b519988b0fa36c300ecce3f19f +Author: Colin Walters +AuthorDate: Wed Jun 16 14:17:26 2010 -0400 +Commit: Colin Walters +CommitDate: Fri Jun 18 16:05:00 2010 -0400 + + [GApplication] Add working directory to platform data + + https://bugzilla.gnome.org/show_bug.cgi?id=621838 + + gio/gapplication.c | 51 + ++++++++++++++++++++++++++++++++++++++++++++------ + gio/gdbusapplication.c | 12 ++---------- + gio/tests/testapp.c | 20 ++++++++++++++++++++ + 3 files changed, 67 insertions(+), 16 deletions(-) + +commit 6ff13071ae4729b0a0e2ba9404fef5e5dd6c14b2 +Author: Tor Lillqvist +AuthorDate: Fri Jun 18 10:56:25 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Fri Jun 18 10:57:00 2010 +0300 + + Fix build on non-Unix + + gio/gnullapplication.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 4edfc34e5bae34f69d6771e2732f54821a4f7307 +Author: Matthias Clasen +AuthorDate: Thu Jun 17 19:42:46 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 17 19:42:46 2010 -0400 + + 2.25.9 + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7b1f45c2e8b5f3ba3595c5cf74fbfc70f03b61c0 +Author: Matthias Clasen +AuthorDate: Thu Jun 17 19:08:13 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 17 19:08:52 2010 -0400 + + Fix a mismerge + + docs/reference/gio/gio-sections.txt | 1 - + 1 file changed, 1 deletion(-) + +commit 9b59059d9e85d10406393cef08e432626dcc78da +Author: Matthias Clasen +AuthorDate: Thu Jun 17 19:04:03 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 17 19:08:52 2010 -0400 + + Fix distcheck + + gio/gio.symbols | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit bdd8fef4c05b41f534f138b0cf2f252e6ebd379f +Author: Christian Persch +AuthorDate: Fri Jun 18 00:38:46 2010 +0200 +Commit: Christian Persch +CommitDate: Fri Jun 18 00:38:46 2010 +0200 + + Fix VARIANT out args + + Use g_value_set_variant(), not the nonexistent g_value_take_variant(). + + gobject/glib-genmarshal.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 30df71e382f76626f8abcdd16b800392be183b42 +Author: Christian Persch +AuthorDate: Fri Jun 18 00:10:17 2010 +0200 +Commit: Christian Persch +CommitDate: Fri Jun 18 00:10:54 2010 +0200 + + Add VARIANT to glib-genmarshal docs + + docs/reference/gobject/glib-genmarshal.xml | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 79d32c2fc18dcd62e9e12ca871676d35697c9d41 +Author: David Zeuthen +AuthorDate: Thu Jun 17 17:58:25 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Jun 17 18:01:32 2010 -0400 + + GDBusMessage: Fix bug when deserializing a message + + See https://bugzilla.gnome.org/show_bug.cgi?id=621838 for the whole + story. The problem was that we ended up reading data from arrays of + arrays when we were just supposed to be aligning the buffers. + + Also add a host of debug infrastructure that was needed to find the + root cause. For now it can be turned on only via defining + DEBUG_SERIALIZER. In the future we might want to make it work via + G_DBUS_DEBUG. In a nutshell, the added debug info looks like this + + Parsing blob (blob_len = 0x0084 bytes) + 0000: 6c 01 00 01 3c 00 00 00 41 00 00 00 37 00 00 00 + l...<...A...7... + 0010: 08 01 67 00 08 61 61 79 61 7b 73 76 7d 00 00 00 + ..g..aaya{sv}... + 0020: 01 01 6f 00 08 00 00 00 2f 66 6f 6f 2f 62 61 72 + ..o...../foo/bar + 0030: 00 00 00 00 00 00 00 00 03 01 73 00 06 00 00 00 + ..........s..... + 0040: 4d 65 6d 62 65 72 00 00 00 00 00 00 34 00 00 00 + Member......4... + 0050: 03 00 00 00 63 77 64 00 01 73 00 00 23 00 00 00 + ....cwd..s..#... + 0060: 2f 68 6f 6d 65 2f 64 61 76 69 64 7a 2f 48 61 63 + /home/davidz/Hac + 0070: 6b 69 6e 67 2f 67 6c 69 62 2f 67 69 6f 2f 74 65 + king/glib/gio/te + 0080: 73 74 73 00 sts. + + Parsing headers (blob_len = 0x0084 bytes) + Reading type a{yv} from offset 0x000c: array spans 0x0037 bytes + Reading type {yv} from offset 0x0010 + Reading type y from offset 0x0010: 0x08 ' + Reading type v from offset 0x0011 + Reading type g from offset 0x0014: 'aaya{sv}' + Reading type {yv} from offset 0x001e + Reading type y from offset 0x0020: 0x01 '' + Reading type v from offset 0x0021 + Reading type o from offset 0x0024: '/foo/bar' + Reading type {yv} from offset 0x0031 + Reading type y from offset 0x0038: 0x03 '' + Reading type v from offset 0x0039 + Reading type s from offset 0x003c: 'Member' + Parsing body (blob_len = 0x0084 bytes) + Reading type (aaya{sv}) from offset 0x0047 + Reading type aay from offset 0x0048: array spans 0x0000 bytes + Reading type a{sv} from offset 0x004c: array spans 0x0034 bytes + Reading type {sv} from offset 0x0050 + Reading type s from offset 0x0050: 'cwd' + Reading type v from offset 0x0058 + Reading type s from offset 0x005b: + '/home/davidz/Hacking/glib/gio/tests' + OK + + Signed-off-by: David Zeuthen + + gio/gdbusmessage.c | 132 + +++++++++++++++++++++++++++++++++++----- + gio/gdbusprivate.c | 10 +-- + gio/gdbusprivate.h | 2 + + gio/tests/gdbus-serialization.c | 9 +++ + 4 files changed, 134 insertions(+), 19 deletions(-) + +commit 86d681ba3eb0df135b9ac592594c397021455425 +Author: Christian Persch +AuthorDate: Thu Jun 17 23:44:25 2010 +0200 +Commit: Christian Persch +CommitDate: Thu Jun 17 23:50:10 2010 +0200 + + Distcheck fix + + Add a missing symbol to gobject.symbols. + + gobject/gobject.symbols | 1 + + 1 file changed, 1 insertion(+) + +commit 0766981a1e634b850bec602d0bea6bc255377edb +Author: Ryan Lortie +AuthorDate: Thu Jun 17 16:56:09 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 17 16:56:53 2010 -0400 + + Make g_settings_sync() a proper prototype. + + gio/gsettings-tool.c | 2 +- + gio/gsettings.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 408daaa29445264073da1ac296dba5697ed4883c +Author: Matthias Clasen +AuthorDate: Thu Jun 17 16:36:58 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 17 16:36:58 2010 -0400 + + Fix the build + + gio/gapplication.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit df81e3f33e710ce64060a87b8ecf0aab1360bd5a +Author: Matthias Clasen +AuthorDate: Thu Jun 17 16:13:29 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 17 16:14:22 2010 -0400 + + Updates + + NEWS | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +commit 0c506f200a60124197e8c20507a86516bb950ec4 +Author: David Zeuthen +AuthorDate: Thu Jun 17 16:09:12 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Jun 17 16:12:46 2010 -0400 + + GDBus: Complain via g_warning() if an invalid message is received + + While we are already propagating the error to the user via the + GDBusConnection::disconnected signal (because the only safe thing is + to disconnect the other peer), changes are the user is simply not + listening to this signal. + + This should never ever happen unless there's a bug in the + serializaer/deserializer so it's fine to complain via g_warning() + here. + + Bug 621838, see + + https://bugzilla.gnome.org/show_bug.cgi?id=621838 + + is related to this. + + Signed-off-by: David Zeuthen + + gio/gdbusprivate.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 57dff1e06011347cc11492a36dc187cbcf5eece8 +Author: David Zeuthen +AuthorDate: Thu Jun 17 16:02:24 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Jun 17 16:12:46 2010 -0400 + + GDBusMessage: Properly check error and bail if set + + Otherwise we may set a GError on top of it. + + Signed-off-by: David Zeuthen + + gio/gdbusmessage.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 8a105625b0261e2e3f45241e2892475fa7b45b88 +Author: Matthias Clasen +AuthorDate: Thu Jun 17 16:07:52 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 17 16:07:52 2010 -0400 + + Documentation fixups + + docs/reference/gio/gio-sections.txt | 10 +++++----- + gio/gapplication.c | 10 ++++++---- + gio/gapplication.h | 6 +++--- + gio/gunixconnection.c | 8 ++++---- + 4 files changed, 18 insertions(+), 16 deletions(-) + +commit 19a752a5f4b39ce43e6e3a26a478c1594b0627ca +Author: Matthias Clasen +AuthorDate: Thu Jun 17 15:51:37 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 17 15:53:08 2010 -0400 + + fix a typo + + gobject/gvaluetypes.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 10e430bcc09d82cf9b3634242981296e0d47693b +Author: Christian Persch +AuthorDate: Thu Jun 17 21:40:47 2010 +0200 +Commit: Christian Persch +CommitDate: Thu Jun 17 21:41:09 2010 +0200 + + Fix GApplication for the G_TYPE_VARIANT change + + gio/gapplication.c | 54 + ++++++++++++++++++++++------------------------------ + gio/gio-marshal.list | 5 +++-- + 2 files changed, 26 insertions(+), 33 deletions(-) + +commit daee48a0af26105175db5768f770ddb8f1a4a7b1 +Author: Matthias Clasen +AuthorDate: Thu Jun 17 15:29:45 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 17 15:30:06 2010 -0400 + + Update api docs to current api + + docs/reference/gio/gio-sections.txt | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +commit 0a7e6255b37efd2005bb86a5843921d4adc3bdf8 +Author: David Zeuthen +AuthorDate: Thu Jun 17 15:27:18 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu Jun 17 15:27:18 2010 -0400 + + Catch up with G_TYPE_VARIANT changes + + The GType for a GVariant is now a fundamental GType instead of a boxed + one so use the right marshaller. + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 4 ++-- + gio/gio-marshal.list | 2 ++ + 2 files changed, 4 insertions(+), 2 deletions(-) + +commit 2c5e1d51934a7983acea9e392de5741c47b8be14 +Author: Matthias Clasen +AuthorDate: Thu Jun 17 15:07:08 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 17 15:08:37 2010 -0400 + + Fix a typo + + gio/gsettings.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0010e86572092ba00eaf01796c863e7584e29611 +Author: Ryan Lortie +AuthorDate: Thu Jun 17 15:06:33 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 17 15:06:33 2010 -0400 + + GSettings: remove "context" from backend too. + + Note: this is a GSettingsBackend API/ABI change. + + gio/gsettingsbackend.c | 73 + +------------------------------------------------- + gio/gsettingsbackend.h | 2 -- + 2 files changed, 1 insertion(+), 74 deletions(-) + +commit 4708b8ecc3f00e49aa98cb5989b5474a3257906c +Author: Christian Persch +AuthorDate: Thu Jun 17 18:03:51 2010 +0200 +Commit: Christian Persch +CommitDate: Thu Jun 17 21:00:54 2010 +0200 + + Add fundamental type and pspec for GVariant + + Make G_TYPE_VARIANT a fundamental type instead of boxed, and add + g_variant_{set,get,dup}_variant. + + Add GParamSpecVariant. + + Bug #610863. + + NEWS | 4 + + docs/reference/gobject/gobject-sections.txt | 13 ++- + gobject/gboxed.c | 15 ++- + gobject/gboxed.h | 13 +-- + gobject/glib-genmarshal.c | 4 + + gobject/gmarshal.list | 2 + + gobject/gobject.symbols | 6 +- + gobject/gparamspecs.c | 127 + +++++++++++++++++++++++- + gobject/gparamspecs.h | 52 ++++++++++ + gobject/gtype.h | 13 ++- + gobject/gvaluetypes.c | 148 + ++++++++++++++++++++++++++++ + gobject/gvaluetypes.h | 15 +++ + tests/gobject/gvalue-test.c | 38 +++++-- + tests/gobject/paramspec-test.c | 46 +++++++-- + 14 files changed, 461 insertions(+), 35 deletions(-) + +commit f2ae6217771b1014efb86eab0f5346d3b297024e +Author: Ryan Lortie +AuthorDate: Thu Jun 17 14:58:46 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 17 14:58:46 2010 -0400 + + Revert "GVariant: add g_variant_default_value()" + + This reverts commit b205dc77cb14f67818eaac23d0eb3f5d1b867921. + + We decided to go the other route with the GParamSpec. + + docs/reference/glib/glib-sections.txt | 1 - + glib/glib.symbols | 1 - + glib/gvariant.c | 32 + ++------------------------------ + glib/gvariant.h | 1 - + 4 files changed, 2 insertions(+), 33 deletions(-) + +commit 58e000d30127b70f147f5f615fddea5358992029 +Author: Ryan Lortie +AuthorDate: Thu Jun 17 14:33:50 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 17 14:33:50 2010 -0400 + + Only run the schema compiler from the test cases + + gio/tests/Makefile.am | 6 ------ + 1 file changed, 6 deletions(-) + +commit 6c3ae976e61a9c680c7e18ff89d41d0808a066c4 +Author: Ryan Lortie +AuthorDate: Thu Jun 17 14:05:40 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 17 14:05:40 2010 -0400 + + Bug 621266 - GSettings "context" clarification + + Remove the concept of "context" in favour of dealing with + GSettingsBackend directly. + + gio/gio.symbols | 9 +- + gio/gkeyfilesettingsbackend.c | 39 +-------- + gio/gsettings.c | 80 ++++++++--------- + gio/gsettings.h | 11 ++- + gio/gsettingsbackend.c | 192 + +++++++++-------------------------------- + gio/gsettingsbackend.h | 23 +++-- + gio/gsettingsbackendinternal.h | 30 +++---- + gio/tests/Makefile.am | 11 +-- + gio/tests/gsettings.c | 9 +- + 9 files changed, 120 insertions(+), 284 deletions(-) + +commit b3cc28bc34bd0b341f1786dc478cff259ce5d1da +Author: Cosimo Cecchi +AuthorDate: Thu Jun 17 18:26:15 2010 +0200 +Commit: Cosimo Cecchi +CommitDate: Thu Jun 17 18:49:55 2010 +0200 + + Bug 621905 – Assume a ref when doing async work + + When asynchronously acquiring the DBus connection, assume a + reference to + the proxy object, to avoid destroying it in the middle of the + operation. + + See https://bugzilla.gnome.org/show_bug.cgi?id=621905 + + gio/gdbusproxy.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit d352ec2bf383754f352fc7cbfb7a48918cc0d9ea +Author: Ryan Lortie +AuthorDate: Thu Jun 17 10:50:47 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 17 10:50:47 2010 -0400 + + GSettings-related distcheck fixups + + gio/tests/Makefile.am | 92 + +++++++++++++++++++++++++++++++-------------------- + gio/tests/gsettings.c | 6 ++-- + 2 files changed, 61 insertions(+), 37 deletions(-) + +commit fcbddd746b73bc2c4ab2754f66355bd8b59d9a6b +Author: Ryan Lortie +AuthorDate: Thu Jun 17 09:38:39 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 17 09:38:39 2010 -0400 + + Add 'if' that was absorbed by $(AM_V_GEN) + + From commit 1b8ee5196eb8ed684b0ee0d2f0d26e6bd82656af + + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e7cd94a481065806eff1f330c2b4fe0cf8c913fb +Author: Ryan Lortie +AuthorDate: Thu Jun 17 08:57:19 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 17 08:57:19 2010 -0400 + + More GSettings doc fixups + + gio/gsettings.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 92375a8c8e14517fd7b6d2321e73b4acf15f1442 +Author: Ryan Lortie +AuthorDate: Thu Jun 17 08:08:28 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 17 08:08:28 2010 -0400 + + takes mandatory target='' arg + + gio/gsettings.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit d405ad8a09806361637b0abed76e62bc64b66cbe +Author: Ryan Lortie +AuthorDate: Thu Jun 17 08:06:52 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 17 08:06:52 2010 -0400 + + GSettings: Fix comment formatting, whitespace. + + gio/gsettings.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 24f1fa12c148141b8be39083f0ba7106fd97590f +Author: Matthias Clasen +AuthorDate: Thu Jun 17 01:51:23 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 17 01:51:23 2010 -0400 + + Add new api + + docs/reference/gio/gio-sections.txt | 2 ++ + 1 file changed, 2 insertions(+) + +commit 61af83c5b6a632448e9330eedebf7f8aa225f2e3 +Author: Matthias Clasen +AuthorDate: Thu Jun 17 01:38:14 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 17 01:38:14 2010 -0400 + + Add some schema examples + + gio/gsettings.c | 82 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 80 insertions(+), 2 deletions(-) + +commit fbf93c371a8e9c8f5593ba34917e112b9759a801 +Author: Matthias Clasen +AuthorDate: Thu Jun 17 00:45:43 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 17 00:45:43 2010 -0400 + + Typo fix + + gio/gsettings.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 345a1ee31c9d8783670ca3ad3c7d6e526b0c039c +Author: Matthias Clasen +AuthorDate: Thu Jun 17 00:37:12 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 17 00:37:49 2010 -0400 + + Update the dtd to match the schema parser + + The aliases element was not mentioned here. + + gio/gsettings.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 3fbac9940263def7a741570ca71e07962fe365c3 +Author: Matthias Clasen +AuthorDate: Wed Jun 16 22:42:16 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 17 00:37:49 2010 -0400 + + Updates + + NEWS | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 61 insertions(+) + +commit fc538894d38780be8fb46735a07e2d36c34eaacb +Author: Ryan Lortie +AuthorDate: Thu Jun 17 00:03:44 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 17 00:03:44 2010 -0400 + + GSettings: enum/choices/aliases/range test cases + + Fix a small bug that one of the tests uncovered. + + gio/gschema-compile.c | 10 ++++---- + gio/strinfo.c | 2 +- + gio/tests/.gitignore | 1 + + gio/tests/gschema-compile.c | 27 + +++++++++++++++++++++- + gio/tests/schema-tests/bad-choice.gschema.xml | 14 +++++++++++ + gio/tests/schema-tests/bare-alias.gschema.xml | 7 ++++++ + gio/tests/schema-tests/choice-alias.gschema.xml | 15 ++++++++++++ + gio/tests/schema-tests/choice-bad.gschema.xml | 14 +++++++++++ + gio/tests/schema-tests/choice-badtype.gschema.xml | 7 ++++++ + .../schema-tests/choice-invalid-alias.gschema.xml | 15 ++++++++++++ + .../schema-tests/choice-shadowed-alias.gschema.xml | 14 +++++++++++ + .../schema-tests/choice-upside-down.gschema.xml | 14 +++++++++++ + gio/tests/schema-tests/choice.gschema.xml | 14 +++++++++++ + .../schema-tests/default-in-aliases.gschema.xml | 15 ++++++++++++ + .../schema-tests/enum-with-aliases.gschema.xml | 20 ++++++++++++++++ + .../schema-tests/enum-with-bad-default.gschema.xml | 16 +++++++++++++ + .../enum-with-chained-alias.gschema.xml | 21 +++++++++++++++++ + .../schema-tests/enum-with-choice.gschema.xml | 17 ++++++++++++++ + .../enum-with-invalid-alias.gschema.xml | 20 ++++++++++++++++ + .../enum-with-repeated-alias.gschema.xml | 21 +++++++++++++++++ + .../enum-with-shadow-alias.gschema.xml | 20 ++++++++++++++++ + gio/tests/schema-tests/enum.gschema.xml | 16 +++++++++++++ + gio/tests/schema-tests/range-badtype.gschema.xml | 7 ++++++ + .../schema-tests/range-default-high.gschema.xml | 8 +++++++ + .../schema-tests/range-default-low.gschema.xml | 8 +++++++ + .../schema-tests/range-high-default.gschema.xml | 8 +++++++ + .../schema-tests/range-low-default.gschema.xml | 8 +++++++ + .../schema-tests/range-parse-error.gschema.xml | 8 +++++++ + gio/tests/schema-tests/range.gschema.xml | 8 +++++++ + 29 files changed, 368 insertions(+), 7 deletions(-) + +commit be8f938b6309afccd85e8f79d5e8c42a1ab11131 +Author: Ryan Lortie +AuthorDate: Wed Jun 16 18:49:20 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jun 16 18:49:20 2010 -0400 + + move GSettings(Backend) to giotypes.h + + gio/giotypes.h | 5 ++++- + gio/gsettings.h | 3 +-- + gio/gsettingsbackend.h | 2 -- + 3 files changed, 5 insertions(+), 5 deletions(-) + +commit f0d30e0c0c645b585478dcae58a4e8d4cdd80fd8 +Author: Ryan Lortie +AuthorDate: Wed Jun 16 18:36:24 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jun 16 18:36:24 2010 -0400 + + Bug 621319 - more leaked GVariants in GSettings + + Caught by Felix Riemann. + + gio/gsettings.c | 1 + + 1 file changed, 1 insertion(+) + +commit 4275c68c30bc372b4aa5d9f5a5ee7f2817d49d4e +Author: Ryan Lortie +AuthorDate: Wed Jun 16 18:22:48 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jun 16 18:22:48 2010 -0400 + + GVariant serialiser: fix small type error + + glib/gvariant-serialiser.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 597290d5c81bf889a694e286ea2434655b82a404 +Author: Ryan Lortie +AuthorDate: Mon Jun 14 17:29:41 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jun 16 18:17:53 2010 -0400 + + GSettings: major refactor. Add enums, range. + + gio/Makefile.am | 2 +- + gio/gio.symbols | 2 + + gio/gschema-compile.c | 1326 +++++++++++++++------ + gio/gsettings-mapping.c | 24 +- + gio/gsettings.c | 2287 + +++++++++++++++++++++--------------- + gio/gsettings.h | 6 +- + gio/gsettingsbackend.c | 27 +- + gio/gsettingsschema.c | 45 +- + gio/gsettingsschema.h | 5 +- + gio/strinfo.c | 308 +++++ + gio/tests/enums.xml.template | 18 + + gio/tests/gsettings.c | 148 ++- + gio/tests/org.gtk.test.gschema.xml | 28 + + gio/tests/testenum.h | 7 + + 14 files changed, 2893 insertions(+), 1340 deletions(-) + +commit b205dc77cb14f67818eaac23d0eb3f5d1b867921 +Author: Ryan Lortie +AuthorDate: Wed Jun 16 15:56:51 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jun 16 15:58:53 2010 -0400 + + GVariant: add g_variant_default_value() + + Returns various kinds of false, zero, empty arrays, etc. + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gvariant.c | 32 + ++++++++++++++++++++++++++++++-- + glib/gvariant.h | 1 + + 4 files changed, 33 insertions(+), 2 deletions(-) + +commit 6a1cb9f697c0cd69d717b2a1457dd696702f4e48 +Author: Christian Persch +AuthorDate: Wed Jun 16 18:47:20 2010 +0200 +Commit: Christian Persch +CommitDate: Wed Jun 16 18:47:20 2010 +0200 + + Typo fix + + gobject/gparam.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b90f11ff970a39ea6d9d7abbe01b07043c70de6b +Author: Christian Persch +AuthorDate: Wed Jun 16 17:48:02 2010 +0200 +Commit: Christian Persch +CommitDate: Wed Jun 16 17:48:02 2010 +0200 + + Typo fix + + gio/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 102c5f6a7d13ec099a8c89db0651172fd3230268 +Author: Colin Walters +AuthorDate: Wed Jun 16 00:18:09 2010 -0400 +Commit: Colin Walters +CommitDate: Wed Jun 16 11:13:43 2010 -0400 + + Rework GApplication API to use GInitable + + https://bugzilla.gnome.org/show_bug.cgi?id=620952 + + gio/gapplication.c | 407 + ++++++++++++++++++++++++++++++++++++------------ + gio/gapplication.h | 21 ++- + gio/gdbusapplication.c | 119 ++++++-------- + gio/gio.symbols | 5 +- + gio/gnullapplication.c | 13 +- + gio/tests/application.c | 2 +- + gio/tests/testapp.c | 8 +- + 7 files changed, 388 insertions(+), 187 deletions(-) + +commit 25ba90ffdd744d4c3c59cc550cdf08f3de11d542 +Author: Emmanuele Bassi +AuthorDate: Wed Jun 16 15:09:33 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Jun 16 15:09:33 2010 +0100 + + Add gdbus-proxy-well-known-name to the ignore file + + gio/tests/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit 33aa4b4c662f18433ed27cd319ab5c97e5a9d9da +Author: Emmanuele Bassi +AuthorDate: Wed Jun 16 15:08:10 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Jun 16 15:08:10 2010 +0100 + + binding: Use a hash table + + Since an object instance might have a lot of bindings, using a list + might become a performance issue when removing them. Using a simple + hash table guarantees constant time lookup, which is the most common + operation. + + gobject/gbinding.c | 31 ++++++++++++++++++++++++------- + 1 file changed, 24 insertions(+), 7 deletions(-) + +commit f72f65643fb1d832e8296b26cff77dedbdac310f +Author: Emmanuele Bassi +AuthorDate: Wed Jun 16 14:47:06 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Wed Jun 16 14:56:59 2010 +0100 + + tests: Add a chain binding + + Test the case with a chain like A → B, B → C, and what happens + when + switching to a direct A → C link. + + https://bugzilla.gnome.org/show_bug.cgi?id=621782 + + gobject/tests/binding.c | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + +commit 48e3b31042c9a86d06740f2c73cbb6ffa140ba54 +Author: Matthias Clasen +AuthorDate: Tue Jun 15 22:06:56 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 15 22:06:56 2010 -0400 + + Properly initialize GError + + Pointed out by Florian Müllner in bug #621702 + + gio/gdbusproxy.c | 1 + + 1 file changed, 1 insertion(+) + +commit 1b8ee5196eb8ed684b0ee0d2f0d26e6bd82656af +Author: Christian Persch +AuthorDate: Tue Jun 15 22:01:02 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 15 22:01:02 2010 -0400 + + Sprinkle some $(AM_V_GEN) around to make the build more silent. + + Makefile.am | 5 ++--- + gio/Makefile.am | 14 +++++++------- + glib/Makefile.am | 8 ++++---- + gmodule/Makefile.am | 4 ++-- + gobject/Makefile.am | 16 ++++++++-------- + gthread/Makefile.am | 2 +- + tests/gobject/Makefile.am | 4 ++-- + 7 files changed, 26 insertions(+), 27 deletions(-) + +commit 062148ae9a4176a28c055a6e3505f4e5c9ff6313 +Author: Matthias Clasen +AuthorDate: Tue Jun 15 21:57:57 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 15 21:57:57 2010 -0400 + + Correct some documentation mistakes in gunixmounts.c + + Pointed out by Ross Burton in bug #618904 + + gio/gunixmounts.c | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +commit 6d1d9cf1b551845a159a6b822500bb40e33fda74 +Author: Emmanuele Bassi +AuthorDate: Fri Jun 4 16:17:15 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Tue Jun 15 16:06:18 2010 +0100 + + gobject: Add GBinding + + GBinding is a simple, opaque object that represents a binding + between a + property on a GObject instance (source) and property on another + GObject + instance (target). + + https://bugzilla.gnome.org/show_bug.cgi?id=348080 + + docs/reference/gobject/gobject-docs.sgml | 1 + + docs/reference/gobject/gobject-sections.txt | 23 + + docs/reference/gobject/gobject.types | 1 + + glib/glib-object.h | 1 + + gobject/Makefile.am | 5 +- + gobject/gbinding.c | 937 + ++++++++++++++++++++++++++++ + gobject/gbinding.h | 119 ++++ + gobject/gobject.symbols | 15 + + gobject/tests/.gitignore | 1 + + gobject/tests/Makefile.am | 4 +- + gobject/tests/binding.c | 326 ++++++++++ + 11 files changed, 1430 insertions(+), 3 deletions(-) + +commit f3879a4bdca2ff1cf6c6b016d67a7e5d40c0e86b +Author: Damien Lespiau +AuthorDate: Sat Apr 10 15:50:40 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Tue Jun 15 10:51:36 2010 +0100 + + Introduce g_object_notify_by_pspec() + + g_object_notify_by_pspec() will emit the "notify" signal on the given + pspec, short-circuiting the hash table lookup needed by + g_object_notify(). The suggested and documented way of using + g_object_notify_by_pspec() is similar to the way of emitting signals + with their ID. + + Emission tests (with no handler attached to the notify signal) show a + 10-15% speedup over using g_object_notify(). + + https://bugzilla.gnome.org/show_bug.cgi?id=615425 + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gobject.c | 82 + ++++++++++++++++++++++++++--- + gobject/gobject.h | 2 + + gobject/gobject.symbols | 1 + + 4 files changed, 79 insertions(+), 7 deletions(-) + +commit 08f473ffeff7524e619dc0459c07a981a3b4285c +Author: Matthias Clasen +AuthorDate: Tue Jun 15 02:01:16 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 15 02:01:16 2010 -0400 + + Prevent division by zero if no tests + + glib/gtester-report | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 53f70ac43b0a4d2de109a73b0ea3724aefe95d5d +Author: Matthias Clasen +AuthorDate: Tue Jun 15 01:50:15 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 15 01:50:15 2010 -0400 + + Forgotten file + + glib/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit f9e8b5d9d47859c7bb62430753ce77e981e4ee65 +Author: Robert Collins +AuthorDate: Tue Jun 15 01:49:44 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 15 01:49:44 2010 -0400 + + Add subunit support to gtester-report + + This patch adds subunit support to gtester-report via a -s + switch. Subunit + (https://launchpad.net/subunit) is a language neutral test activity + protocol. + This can be used to integrate gtester tests with the Hudson CI + tool amongst + other things. + + Bug #611869. + + glib/gtester-report | 141 + +++++++++++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 129 insertions(+), 12 deletions(-) + +commit 8de6d03c4417a16cad2d089805f93da4b4160602 +Author: Robert Collins +AuthorDate: Tue Jun 15 01:37:14 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 15 01:37:27 2010 -0400 + + Use optparse to parse gtester-report commandline options + + See bug #611778. + + glib/gtester-report | 54 + +++++++++++++++++++++++------------------------------ + 1 file changed, 23 insertions(+), 31 deletions(-) + +commit ddb9a2f26490b45f9cbda51b79ebcafb38b6ca81 +Author: Emmanuele Bassi +AuthorDate: Tue Jun 15 01:31:18 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 15 01:31:18 2010 -0400 + + Add package and version to the test report XML + + Makefile.decl | 8 ++++++-- + glib/gtester-report | 16 ++++++++++++++-- + 2 files changed, 20 insertions(+), 4 deletions(-) + +commit 9971686b7e0d3a3f8416534a55e246bbfd901d0a +Author: Matthias Clasen +AuthorDate: Tue Jun 15 00:50:36 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 15 00:50:36 2010 -0400 + + Reword a doc comment + + To take out some awkward wording. + + glib/gmarkup.c | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +commit a500de820260915c6b4d4724d6029ee5b8552ae7 +Author: Hib Eris +AuthorDate: Tue Jun 15 00:39:46 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 15 00:39:46 2010 -0400 + + Let GLIB_SETTINGS macro use glib-compile-schemas from PATH when + cross compiling + + See bug #621172 + + m4macros/gsettings.m4 | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit b079d6a54616514e80b552ebe0a42f45e379b0e8 +Author: Hib Eris +AuthorDate: Tue Jun 15 00:38:35 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 15 00:38:35 2010 -0400 + + Use native glib-compile-schemas when cross compiling + + configure.in | 8 +++++++- + gio/tests/Makefile.am | 8 +++++++- + 2 files changed, 14 insertions(+), 2 deletions(-) + +commit 85210bcf9b7f597aa2ad2a7087709c6091638805 +Author: Colin Walters +AuthorDate: Tue Jun 8 16:25:33 2010 -0400 +Commit: Colin Walters +CommitDate: Mon Jun 14 16:36:23 2010 -0400 + + Switch to using variants for timestamps, split out signals + + Like how we're handling activation, use GVariant for timestamps. To + avoid polluting the GtkApplication API with GVariants, we rename the + GApplication signals to "quit-with-data" and "action-with-data". + GtkApplication will then wrap those as just "quit" and "action". + + https://bugzilla.gnome.org/show_bug.cgi?id=621002 + + gio/gapplication.c | 94 + ++++++++++++++++++++++++++----------------------- + gio/gapplication.h | 27 ++++++-------- + gio/gdbusapplication.c | 47 ++++++++++++++++--------- + gio/gio-marshal.list | 2 ++ + gio/gio.symbols | 2 +- + gio/tests/application.c | 63 ++++++++++++++++++++++++++------- + gio/tests/testapp.c | 4 +-- + gio/tests/testapps.c | 17 ++++++--- + 8 files changed, 159 insertions(+), 97 deletions(-) + +commit 8c4e1fa0afd97ae211260e4990585629d3c010a1 +Author: Christian Persch +AuthorDate: Sun Jun 13 15:16:33 2010 +0200 +Commit: Christian Persch +CommitDate: Mon Jun 14 00:02:57 2010 +0200 + + Add --xml to gdbus-tool to print raw introspected XML + + Bug #621442. + + docs/reference/gio/gdbus.xml | 1 + + gio/gdbus-tool.c | 23 ++++++++++++++++------- + 2 files changed, 17 insertions(+), 7 deletions(-) + +commit fdb15058a4625e0f2eb56c56d945e032d8a833ca +Author: Matthias Clasen +AuthorDate: Sat Jun 12 18:40:45 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 13 01:03:10 2010 -0400 + + Avoid a race in application registration + + We need to register the object before taking the name. + Remove the workarounds for this race from the test suite. + + gio/gdbusapplication.c | 45 ++++++++++++++++++++++++++------------------- + gio/tests/testapps.c | 7 +------ + 2 files changed, 27 insertions(+), 25 deletions(-) + +commit 5e03f273be30d0f5756102d49b20bbabc5743113 +Author: Fran Diéguez +AuthorDate: Sat Jun 12 17:47:40 2010 +0200 +Commit: Fran Diéguez +CommitDate: Sat Jun 12 17:47:40 2010 +0200 + + Updated Galician translations + + po/gl.po | 1290 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 663 insertions(+), 627 deletions(-) + +commit 19012ada573221aeedaa982336f2f7b945860bb3 +Author: Matthias Clasen +AuthorDate: Sat Jun 12 01:55:25 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Jun 12 01:55:25 2010 -0400 + + Accept no-reply errors + + This can happen if the app quits before the dbus reply can be + sent out. + + gio/tests/testapps.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit 330cdfbdf1959af90506aa24cc276a20b00878b8 +Author: Matthias Clasen +AuthorDate: Fri Jun 11 23:21:49 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 11 23:21:49 2010 -0400 + + Make the tests not fall over every other time + + gio/tests/testapps.c | 80 + ++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 50 insertions(+), 30 deletions(-) + +commit 32f2e9a85beedeea36ac7623f68f6eb878465d44 +Author: David Zeuthen +AuthorDate: Fri Jun 11 15:45:18 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri Jun 11 18:21:27 2010 -0400 + + Bug 621213 – GDBusProxy and well-known names + + Allow constructing a GDBusProxy for well-known names as discussed here + http://mail.gnome.org/archives/gtk-devel-list/2009-October/msg00075.html + including test cases. + + Make it possible to create a GDBusProxy for a GBusType instead of a + GDBusConnection. This requires G_BUS_TYPE_NONE so add that too. + + Nuke g_bus_watch_proxy() since one can now more or less use GDBusProxy + for this. + + Port gdbus-example-watch-proxy to this new API and include this + example in the GDBusProxy doc page. + + Also nuke the GType parameter from the GDBusProxy constructors as + requested here: https://bugzilla.gnome.org/show_bug.cgi?id=621229 + + Also update the porting guide and other API docs for this change. + + Also fix a bug in the signal dispatching code so each subscriber only + get notified once, not N times, for the same signal. Also add a test + case for this. + + https://bugzilla.gnome.org/show_bug.cgi?id=621213 + + Signed-off-by: David Zeuthen + + docs/reference/gio/gio-docs.xml | 1 - + docs/reference/gio/gio-sections.txt | 17 +- + docs/reference/gio/migrating-gdbus.xml | 62 +- + gio/Makefile.am | 2 - + gio/gdbusconnection.c | 152 +++-- + gio/gdbusproxy.c | 1071 + ++++++++++++++++++++++++------ + gio/gdbusproxy.h | 28 +- + gio/gdbusproxywatching.c | 666 ------------------- + gio/gdbusproxywatching.h | 115 ---- + gio/gio.h | 1 - + gio/gio.symbols | 16 +- + gio/gioenums.h | 14 +- + gio/tests/Makefile.am | 4 + + gio/tests/gdbus-connection.c | 22 +- + gio/tests/gdbus-example-proxy-subclass.c | 83 --- + gio/tests/gdbus-example-watch-proxy.c | 149 +++-- + gio/tests/gdbus-export.c | 5 - + gio/tests/gdbus-introspection.c | 55 +- + gio/tests/gdbus-peer.c | 1 - + gio/tests/gdbus-proxy-well-known-name.c | 283 ++++++++ + gio/tests/gdbus-proxy.c | 84 +-- + gio/tests/gdbus-threading.c | 55 +- + 22 files changed, 1508 insertions(+), 1378 deletions(-) + +commit e0f8d30dea3d9509867f29289835ea3d58b32730 +Author: Ryan Lortie +AuthorDate: Fri Jun 11 14:52:17 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jun 11 14:52:34 2010 -0400 + + gitignore GApplication test-cases + + gio/tests/.gitignore | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 0fc60514fcf9b0d38292ca3a9c416943f722227a +Author: Felix Riemann +AuthorDate: Fri Jun 11 00:10:05 2010 +0200 +Commit: Felix Riemann +CommitDate: Fri Jun 11 20:38:48 2010 +0200 + + Close memory leak in GSettings + + Fixes bug #621252. + + gio/gsettings.c | 1 + + 1 file changed, 1 insertion(+) + +commit aeb41b56e123a4946fd76e89b2cf47a46e6411f6 +Author: Alexander Larsson +AuthorDate: Fri Jun 11 09:59:56 2010 +0200 +Commit: Alexander Larsson +CommitDate: Fri Jun 11 09:59:56 2010 +0200 + + converter streams: make code more readable + + The name buffer_availabile was kinda confusing, so its been renamed + to buffer_data_size() to match buffer_data(). + + Also I added a comment to buffer_ensure_space because its behaviour + wasn't obvious. + + gio/gconverterinputstream.c | 26 ++++++++++++++------------ + gio/gconverteroutputstream.c | 26 ++++++++++++++------------ + 2 files changed, 28 insertions(+), 24 deletions(-) + +commit 6858ab20330ec31322dacbbdfaf66838fdcbfb78 +Author: Jürg Billeter +AuthorDate: Fri May 28 11:00:37 2010 +0200 +Commit: Alexander Larsson +CommitDate: Fri Jun 11 09:55:31 2010 +0200 + + Use correct offset for buffer data in GConverterOutputStream + + Otherwise we overwrite already converted data in the case that more + than one call to g_converter_convert is necessary in write() or + flush(). + + https://bugzilla.gnome.org/show_bug.cgi?id=619945 + + gio/gconverteroutputstream.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 86592d675ff8f1bf0f647fe926ea6085e7b1f2bc +Author: Jürg Billeter +AuthorDate: Thu May 27 16:55:53 2010 +0200 +Commit: Alexander Larsson +CommitDate: Fri Jun 11 09:55:23 2010 +0200 + + Ensure we always have some target space in GConverterOutputStream + + When the converter fills the whole buffer without reading all input, + we need to enlarge the buffer. Otherwise we get an assertion failure + for `outbuf_size > 0' in g_converter_convert. + + https://bugzilla.gnome.org/show_bug.cgi?id=619945 + + gio/gconverteroutputstream.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 85ea72c0c5716b6ebd62272e17e8e4e3b9014f65 +Author: Christian Dywan +AuthorDate: Fri Jun 11 09:46:47 2010 +0200 +Commit: Alexander Larsson +CommitDate: Fri Jun 11 09:46:47 2010 +0200 + + Add a regression test for GConverterOutputStream corruption + + See bug #619945 for background + + gio/tests/converter-stream.c | 54 + ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 54 insertions(+) + +commit ceee4c21a31e01009960af1be331154f47548291 +Author: Ryan Lortie +AuthorDate: Thu Jun 10 22:35:31 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 10 22:35:31 2010 -0400 + + GSettings test case fixes + + - call g_settings_sync() + - fix bug #618715 by not forking if a backend is specified via + environment variable + + gio/tests/gsettings.c | 53 + +++++++++++++++++++++++++++++++++++++-------------- + 1 file changed, 39 insertions(+), 14 deletions(-) + +commit a8b5353b1480edbb6a28afe39056bf6a64a1e42d +Author: Ryan Lortie +AuthorDate: Thu Jun 10 22:30:44 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 10 22:30:44 2010 -0400 + + Add g_settings_sync() and use it + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 1 + + gio/gsettings-tool.c | 19 +------------------ + gio/gsettings.c | 28 ++++++++++++++++++++++++++++ + gio/gsettings.h | 1 + + gio/gsettingsbackend.c | 15 +++++++++++++++ + gio/gsettingsbackendinternal.h | 2 ++ + 7 files changed, 49 insertions(+), 18 deletions(-) + +commit afea703422001cbbe8bbd2e13842008a482cd9ae +Author: Ryan Lortie +AuthorDate: Thu Jun 10 15:27:46 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 10 15:27:46 2010 -0400 + + Implement byteswapping in the reader + + gvdb-reader.c | 23 ++++++++++++++++++++++- + 1 file changed, 22 insertions(+), 1 deletion(-) + +commit 7c36619d269284597d5df4f366b6389df9bcf617 +Author: Colin Walters +AuthorDate: Thu Jun 10 14:02:15 2010 -0400 +Commit: Colin Walters +CommitDate: Thu Jun 10 14:03:02 2010 -0400 + + [Gio] Merge in introspection annotations from gobject-introspection + gio-2.0.c + + This is not an exhaustive set, but covers everything we have so far. + + gio/gappinfo.c | 10 +++++----- + gio/gdesktopappinfo.c | 6 +++--- + gio/gdrive.c | 2 +- + gio/gfile.c | 34 +++++++++++++++++----------------- + gio/gfileenumerator.c | 2 +- + gio/gfileinfo.c | 14 +++++++------- + gio/gfilenamecompleter.c | 2 +- + gio/gfilterinputstream.c | 2 +- + gio/gfilteroutputstream.c | 2 +- + gio/goutputstream.c | 6 +++--- + gio/gvolume.c | 8 ++++---- + gio/gvolumemonitor.c | 6 +++--- + 12 files changed, 47 insertions(+), 47 deletions(-) + +commit 3a062d2e33aa1d54dd460a1a2cb297009d94d4d6 +Author: Ryan Lortie +AuthorDate: Thu Jun 10 13:49:57 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 10 13:49:57 2010 -0400 + + GSettings: store (default, options) in gvdb + + gvdb just dropped the ability to have a separate "options" field. We + now store the options into a GVariant along with the default value. + + For now, we use a small shim in GSettingsSchema in order not to touch + too much code. A more complete rewrite will follow. + + This represents a change to the schema file format with another likely + to follow. glib-compile-schemas needs to be re-run after installing + this change. + + gio/gschema-compile.c | 7 +++---- + gio/gsettings.c | 12 +++++------- + gio/gsettingsschema.c | 25 ++++++++++++++++--------- + gio/gsettingsschema.h | 3 +++ + 4 files changed, 27 insertions(+), 20 deletions(-) + +commit 73007021796f33d7ccec4e5f2bb2b2f8660347f2 +Merge: 45e604d 9a8cba9 +Author: Ryan Lortie +AuthorDate: Thu Jun 10 13:35:25 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 10 13:35:25 2010 -0400 + + Merge remote branch 'gvdb/master' + +commit 9a8cba9eb53f105b752aac7bb16c7c83c6617caf +Author: Ryan Lortie +AuthorDate: Thu Jun 10 13:34:56 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 10 13:34:56 2010 -0400 + + drop "options" support + + gvdb-builder.c | 41 ----------------------------------------- + gvdb-builder.h | 3 --- + gvdb-format.h | 2 -- + gvdb-reader.c | 32 ++------------------------------ + gvdb-reader.h | 3 +-- + 5 files changed, 3 insertions(+), 78 deletions(-) + +commit 45e604d029980f90a7304b6311fc43cc0cc2ab69 +Author: Tomeu Vizoso +AuthorDate: Thu Jun 10 18:29:23 2010 +0200 +Commit: Tomeu Vizoso +CommitDate: Thu Jun 10 18:29:23 2010 +0200 + + Add _with_closures alternative functions for those in GDBus that + accept more than one callback. + + g_bus_own_name_with_closures + g_bus_own_name_on_connection_with_closures + g_bus_watch_name_with_closures + g_bus_watch_name_on_connection_with_closures + g_bus_watch_proxy_with_closures + g_bus_watch_proxy_on_connection_with_closures + + https://bugzilla.gnome.org/show_bug.cgi?id=621092 + + docs/reference/gio/gio-sections.txt | 6 ++ + gio/gdbusnameowning.c | 173 + +++++++++++++++++++++++++++++++++++ + gio/gdbusnameowning.h | 14 +++ + gio/gdbusnamewatching.c | 149 ++++++++++++++++++++++++++++++ + gio/gdbusnamewatching.h | 11 +++ + gio/gdbusproxywatching.c | 177 + ++++++++++++++++++++++++++++++++++++ + gio/gdbusproxywatching.h | 19 ++++ + gio/gio.symbols | 6 ++ + gio/pltcheck.sh | 2 +- + 9 files changed, 556 insertions(+), 1 deletion(-) + +commit 8cab5e46934554d899274dd96e6a1d5fbbbc9ea6 +Author: Colin Walters +AuthorDate: Wed Jun 9 17:17:14 2010 -0400 +Commit: Colin Walters +CommitDate: Thu Jun 10 13:14:29 2010 -0400 + + [GApplication] Tweak docs a bit + + gio/gapplication.c | 34 ++++++++++++++++++++++++---------- + 1 file changed, 24 insertions(+), 10 deletions(-) + +commit cc19922183b18683da192cc7371a510cf648ec64 +Author: Colin Walters +AuthorDate: Tue Jun 8 21:43:16 2010 -0400 +Commit: Colin Walters +CommitDate: Thu Jun 10 13:14:29 2010 -0400 + + Rewrite apps test to ensure children are killed + + Create a function run_with_application that both ensures the + app is running exactly while the test is running, which most + of the tests use. We start it beforehand, and kill it after. + This avoids having any interdependence between the tests (and + there definitely was before, because we didn't wait for + the process to actually terminate after a kill() call). + + Also, open a pipe between the two, and have the child app + monitor that pipe. If it gets closed (e.g. because the parent + died), the child exits. This is the most reliable way to + avoid stale children; before, if we failed an assertion, the + parent would abort, and not run kill(). + + https://bugzilla.gnome.org/show_bug.cgi?id=621034 + + gio/tests/testapp.c | 50 ++--- + gio/tests/testapps.c | 512 + +++++++++++++++++++++++++++------------------------ + 2 files changed, 298 insertions(+), 264 deletions(-) + +commit 8d3fea9cff848d1b45c0a6371ef448c11d992757 +Author: Ryan Lortie +AuthorDate: Thu Jun 10 08:06:32 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 10 08:07:34 2010 -0400 + + Mention GVariant format string docs from iter docs + + It's not entirely clear what @format_string in iter_next() and + iter_loop() should be. Include a link to the GVariant format string + docs as a hint. + + glib/gvariant.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 507c266c3bdf03d9d75ad11bb346f013172f5ad5 +Author: Tor Lillqvist +AuthorDate: Thu Jun 10 11:52:25 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Thu Jun 10 11:54:35 2010 +0300 + + Plug memory leak on Windows + + Intern the string returned from g_win32_getlocale() and then free it. + Fixes bug #621168. + + glib/gutils.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit 6720596544112a40e8133aea86672197edb46eed +Author: Matthias Clasen +AuthorDate: Wed Jun 9 23:44:13 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 9 23:44:13 2010 -0400 + + Fix GApplication tests to run without a session bus + + We reuse code from the GDBus tests here to launch a session bus. + + gio/tests/Makefile.am | 4 ++-- + gio/tests/application.c | 15 ++++++++++++++- + gio/tests/testapps.c | 15 ++++++++++++++- + 3 files changed, 30 insertions(+), 4 deletions(-) + +commit db0c55608f0500e8ab47a222a644ea3085b80151 +Author: David Zeuthen +AuthorDate: Wed Jun 9 17:57:04 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jun 9 17:57:04 2010 -0400 + + GDBusConnection: Do not dispatch calls to unregistered objects + or subtrees + + There was a slight race where we ended up calling into user code if + the user managed to unregister an object (or subtree) in the window + between + + - processing the remote call on the worker thread; and + - continuing handling it on the user code thread (via an idle + handler) + + This patch fixes the problem. + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 123 + +++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 117 insertions(+), 6 deletions(-) + +commit ed7f59770e01623fa411530c81cbb04f73555a4c +Author: David Zeuthen +AuthorDate: Wed Jun 9 17:08:34 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jun 9 17:09:10 2010 -0400 + + GDBusProxy: Fix error handling in synchronous initialization codepath + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 653921e17a00d161a25b21d61ff12b8d03208202 +Author: Ryan Lortie +AuthorDate: Wed Jun 9 12:43:13 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Jun 9 12:43:45 2010 -0400 + + g_variant_builder_add_parsed: fix type error + + Problem caught by Juan A. Suarez Romero + + glib/gvariant-parser.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f265319b59239f7ad74283b79a62e28afe4ff111 +Author: Richard Hughes +AuthorDate: Wed Jun 9 09:36:47 2010 +0100 +Commit: Richard Hughes +CommitDate: Wed Jun 9 17:10:57 2010 +0100 + + Do not do update-po at distcheck time to avoid touching files checked + into version control + + po/Makefile.in.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1951c39c44afad8273e2978b4c1420e975882934 +Author: David Zeuthen +AuthorDate: Wed Jun 9 10:56:35 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed Jun 9 10:59:02 2010 -0400 + + Bug 621119 – GDBusProxy and objects with no properties + + Fix proxy construction for objects with no properties in the case + where G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES isn't set. + + The unfortunate side-effect here is that GDBusProxy can no longer be + used to test for "object existence", e.g. creating a GDBusProxy for + any path and interface will not fail. But that's not really a big + deal, if apps rely on that they are doing something very wrong. + + https://bugzilla.gnome.org/show_bug.cgi?id=621119 + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 42 +++++++++++++++++++++++++++++++----------- + 1 file changed, 31 insertions(+), 11 deletions(-) + +commit 67193f55c3201e32405c5a15621d49f703b83f8f +Author: Juan A. Suarez Romero +AuthorDate: Wed Jun 9 10:27:39 2010 +0200 +Commit: Juan A. Suarez Romero +CommitDate: Wed Jun 9 10:32:36 2010 +0200 + + Fix warning + + Disable functions defined but not used. + + gio/tests/filter-streams.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 992e07c8b2e8f75bcc87c30e1ac2aca1ccf432e3 +Author: Juan A. Suarez Romero +AuthorDate: Wed Jun 9 10:23:39 2010 +0200 +Commit: Juan A. Suarez Romero +CommitDate: Wed Jun 9 10:32:12 2010 +0200 + + Fix warnings + + Do explicit casts to avoid warnings. + + gio/inotify/inotify-helper.c | 2 +- + gio/tests/memory-output-stream.c | 2 +- + tests/testglib.c | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit 2b72587bedfe293964529aa9f6d6034e7976209b +Author: blue dark +AuthorDate: Wed Jun 9 15:13:14 2010 +0800 +Commit: Funda Wang +CommitDate: Wed Jun 9 15:13:14 2010 +0800 + + Updated zh_CN translation. + + po/ChangeLog | 4 + + po/zh_CN.po | 1682 + +++++++++++++++++++++++++++++----------------------------- + 2 files changed, 859 insertions(+), 827 deletions(-) + +commit d8dca11733e483670f47fa5c4d8f4a5cb97f6b5b +Author: Christian Persch +AuthorDate: Tue Jun 8 19:40:58 2010 +0200 +Commit: Christian Persch +CommitDate: Tue Jun 8 19:43:30 2010 +0200 + + Fix thinko + + When replacing strcmp() with g_variant_is_of_type(), remove the "== 0" + part! Found by Colin Walters. + + gio/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0ed183b572db48d0091f9c6ee5e3e005a382c66a +Author: Colin Walters +AuthorDate: Tue Jun 8 11:21:48 2010 -0400 +Commit: Colin Walters +CommitDate: Tue Jun 8 13:44:19 2010 -0400 + + [GDBusConnection] Use Gio's default async implementation again + + The fix was committed in git. + + https://bugzilla.gnome.org/show_bug.cgi?id=620990 + + gio/gdbusconnection.c | 46 +--------------------------------------------- + 1 file changed, 1 insertion(+), 45 deletions(-) + +commit 06e74ca96928550a31fc05991df01e68300d8a45 +Author: Christian Persch +AuthorDate: Tue Jun 8 13:40:38 2010 +0200 +Commit: Christian Persch +CommitDate: Tue Jun 8 17:41:47 2010 +0200 + + g_dbus_method_invocation_return_value consumes the floating variant + + Bug #620953. + + gio/gdbusmethodinvocation.c | 1 + + 1 file changed, 1 insertion(+) + +commit 2ab9a07ec79b7dd979253340cf7a471048be0c8f +Author: Christian Persch +AuthorDate: Tue Jun 8 13:36:58 2010 +0200 +Commit: Christian Persch +CommitDate: Tue Jun 8 17:41:47 2010 +0200 + + Simplify variant builder + + Build the full return value with one builder, and don't unref the + unowned return value! + + Bug #620954. + + gio/gdbusapplication.c | 13 +++++-------- + 1 file changed, 5 insertions(+), 8 deletions(-) + +commit d3b091f63abde2f7de587986a65004ddf2c4ed2a +Author: Christian Persch +AuthorDate: Tue Jun 8 13:36:00 2010 +0200 +Commit: Christian Persch +CommitDate: Tue Jun 8 17:41:46 2010 +0200 + + Use g_variant_is_of_type() + + ... instead of strcmp()'ing the type strings. + + Bug #620954. + + gio/gapplication.c | 2 +- + gio/gdbusapplication.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit b75e7eb95d4782160a88ea7c4dc714368807408c +Author: Christian Persch +AuthorDate: Tue Jun 8 13:35:22 2010 +0200 +Commit: Christian Persch +CommitDate: Tue Jun 8 17:41:46 2010 +0200 + + Plug a mem leak + + Bug #620954. + + gio/gdbusapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 471c4e413c91e0bae040de4e048a9846a1447515 +Author: Javier Jardón +AuthorDate: Tue Jun 8 16:25:38 2010 +0200 +Commit: Javier Jardón +CommitDate: Tue Jun 8 16:27:45 2010 +0200 + + [docs] Fix typos in some g_file_* functions + + Reported by Alexander Saprykin in bug + https://bugzilla.gnome.org/show_bug.cgi?id=620947 + + gio/gfile.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit b482eab3fa14edabb9f237d4a2cf1e6b2ad6e388 +Author: Matthias Clasen +AuthorDate: Tue Jun 8 01:10:17 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 8 01:10:17 2010 -0400 + + Bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1a963c659cad268a6689d941bd5a06ab5a12abf1 +Author: Matthias Clasen +AuthorDate: Tue Jun 8 01:09:06 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Jun 8 01:09:06 2010 -0400 + + 2.25.8 + + po/af.po | 74 +-- + po/am.po | 74 +-- + po/ar.po | 74 +-- + po/as.po | 74 +-- + po/ast.po | 74 +-- + po/az.po | 74 +-- + po/be.po | 74 +-- + po/be@latin.po | 74 +-- + po/bg.po | 74 +-- + po/bn.po | 74 +-- + po/bn_IN.po | 74 +-- + po/bs.po | 74 +-- + po/ca.po | 74 +-- + po/ca@valencia.po | 74 +-- + po/cs.po | 74 +-- + po/cy.po | 74 +-- + po/da.po | 74 +-- + po/de.po | 74 +-- + po/dz.po | 74 +-- + po/el.po | 74 +-- + po/en@shaw.po | 74 +-- + po/en_CA.po | 74 +-- + po/en_GB.po | 74 +-- + po/eo.po | 805 +++++++++++++++++++++++-- + po/es.po | 1268 +++++++++++++++++++-------------------- + po/et.po | 74 +-- + po/eu.po | 74 +-- + po/fa.po | 74 +-- + po/fi.po | 74 +-- + po/fr.po | 74 +-- + po/ga.po | 74 +-- + po/gl.po | 1249 +++++++++++++++++++------------------- + po/gu.po | 74 +-- + po/he.po | 76 +-- + po/hi.po | 74 +-- + po/hr.po | 74 +-- + po/hu.po | 74 +-- + po/hy.po | 74 +-- + po/id.po | 1252 +++++++++++++++++++------------------- + po/is.po | 74 +-- + po/it.po | 74 +-- + po/ja.po | 74 +-- + po/ka.po | 74 +-- + po/kn.po | 74 +-- + po/ko.po | 74 +-- + po/ku.po | 74 +-- + po/lt.po | 74 +-- + po/lv.po | 74 +-- + po/mai.po | 74 +-- + po/mg.po | 74 +-- + po/mk.po | 74 +-- + po/ml.po | 74 +-- + po/mn.po | 74 +-- + po/mr.po | 74 +-- + po/ms.po | 74 +-- + po/nb.po | 1249 +++++++++++++++++++------------------- + po/nds.po | 74 +-- + po/ne.po | 74 +-- + po/nl.po | 74 +-- + po/nn.po | 74 +-- + po/oc.po | 74 +-- + po/or.po | 74 +-- + po/pa.po | 74 +-- + po/pl.po | 74 +-- + po/ps.po | 74 +-- + po/pt.po | 74 +-- + po/pt_BR.po | 74 +-- + po/ro.po | 74 +-- + po/ru.po | 74 +-- + po/rw.po | 74 +-- + po/si.po | 74 +-- + po/sk.po | 74 +-- + po/sl.po | 1731 + +++++++++++++++++++++++++---------------------------- + po/sq.po | 74 +-- + po/sr.po | 74 +-- + po/sr@ije.po | 74 +-- + po/sr@latin.po | 74 +-- + po/sv.po | 74 +-- + po/ta.po | 74 +-- + po/te.po | 74 +-- + po/th.po | 74 +-- + po/tl.po | 74 +-- + po/tr.po | 74 +-- + po/tt.po | 74 +-- + po/uk.po | 74 +-- + po/vi.po | 74 +-- + po/wa.po | 74 +-- + po/xh.po | 74 +-- + po/yi.po | 74 +-- + po/zh_CN.po | 74 +-- + po/zh_HK.po | 74 +-- + po/zh_TW.po | 74 +-- + 92 files changed, 7255 insertions(+), 6665 deletions(-) + +commit 795ddeb421eb01bbadf98e05657b92877cd93d96 +Author: Matthias Clasen +AuthorDate: Mon Jun 7 23:41:06 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 7 23:41:06 2010 -0400 + + Add missing marshaler + + gio/gio-marshal.list | 1 + + 1 file changed, 1 insertion(+) + +commit e300c7e622d3e5a5e3eaa339c875484b0e4534eb +Author: Matthias Clasen +AuthorDate: Mon Jun 7 23:28:30 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 7 23:28:30 2010 -0400 + + Fix a missing parameter in a doc comment + + Pointed out by David Zeuthen. + + gio/gapplication.c | 1 + + 1 file changed, 1 insertion(+) + +commit a89b10c1dc587cd6806954dc04c3f3e36ee393a5 +Author: Matthias Clasen +AuthorDate: Mon Jun 7 23:27:21 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 7 23:27:21 2010 -0400 + + Fix a signal signature + + GApplication::action was erroneously declaring the timestamp parameter + as int instead of uint. + + gio/gapplication.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +commit 063470ea0d1a97f964d3901b7873fddcbadc4c0d +Author: Matthias Clasen +AuthorDate: Mon Jun 7 22:34:07 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 7 22:34:07 2010 -0400 + + Fix a misspelt doc comment + + gio/gapplication.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3b11a7d3f20df2f44b3a97db58bb0ffd02a5f0c0 +Author: Matthias Clasen +AuthorDate: Mon Jun 7 22:22:39 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 7 22:22:39 2010 -0400 + + Add a lost
+ + docs/reference/gio/gio-sections.txt | 2 ++ + 1 file changed, 2 insertions(+) + +commit 32b7fbb8907757d8c19c50b48f5917bbad18e43d +Author: Matthias Clasen +AuthorDate: Mon Jun 7 22:21:47 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 7 22:21:47 2010 -0400 + + Rename GApplication::appid to GApplication::application-id + + gio/gapplication.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +commit c59cc943188753e0f72a8e554f8142351970aa20 +Author: Matthias Clasen +AuthorDate: Mon Jun 7 21:53:32 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 7 22:10:27 2010 -0400 + + Fix !srcdir checks + + gio/tests/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit 14c62ff722d74af3baca7cc527f316e4ab095dae +Author: Matthias Clasen +AuthorDate: Mon Jun 7 21:23:37 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 7 21:23:42 2010 -0400 + + Updates + + NEWS | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 51 insertions(+) + +commit fdc99873eeffc36ea2bb0423b586cc3115c76ed2 +Author: Matthias Clasen +AuthorDate: Mon Jun 7 18:27:33 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 7 21:23:42 2010 -0400 + + Document signals + + gio/gapplication.c | 28 +++++++++++++++++++++++++++- + 1 file changed, 27 insertions(+), 1 deletion(-) + +commit d68100afccc9260309e573bbcb9f0bb387044340 +Author: Javier Jardón +AuthorDate: Mon Jun 7 23:55:34 2010 +0200 +Commit: Javier Jardón +CommitDate: Tue Jun 8 00:00:39 2010 +0200 + + [docs] GApplication is available since Gio 2.26 + + gio/gapplication.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit c2a539eff05f1afd43e1c3c0feb9c98ccfdd0a85 +Author: Matthias Clasen +AuthorDate: Mon Jun 7 17:48:09 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 7 17:48:09 2010 -0400 + + Use g types for consistency + + gio/gapplication.c | 26 +++++++++++++------------- + gio/gapplication.h | 26 +++++++++++++------------- + gio/gdbusapplication.c | 8 ++++---- + gio/gnullapplication.c | 2 +- + 4 files changed, 31 insertions(+), 31 deletions(-) + +commit 6427e93757dbc38cc53ffeb87ed814cdb9df0ed4 +Author: Matthias Clasen +AuthorDate: Mon Jun 7 13:25:39 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 7 13:48:42 2010 -0400 + + Merge the wip/gapplication branch + + This adds a GApplication object to GIO, which is the core of + an application support class, supporting + - uniqueness + - exporting actions (simple scripting) + - standard actions (quit, activate) + + The implementation for Linux uses D-Bus, takes a name on the + session bus, and exports a org.gtk.Application interface. + + Implementations for Win32 and OS X are still missing. + + docs/reference/gio/gio-docs.xml | 4 + + docs/reference/gio/gio-sections.txt | 32 ++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 5 + + gio/gappinfo.c | 42 +- + gio/gapplication.c | 1058 + +++++++++++++++++++++++++++++++++++ + gio/gapplication.h | 151 +++++ + gio/gdbusapplication.c | 426 ++++++++++++++ + gio/gdbusconnection.h | 2 +- + gio/gdesktopappinfo.c | 12 + + gio/gio-marshal.list | 3 + + gio/gio.h | 1 + + gio/gio.symbols | 21 + + gio/gnullapplication.c | 70 +++ + gio/tests/Makefile.am | 20 + + gio/tests/appinfo-test.c | 20 + + gio/tests/appinfo-test.desktop | 4 + + gio/tests/appinfo.c | 25 + + gio/tests/application.c | 134 +++++ + gio/tests/testapp.c | 79 +++ + gio/tests/testapps.c | 533 ++++++++++++++++++ + 21 files changed, 2626 insertions(+), 17 deletions(-) + +commit af78f6d418788fa76a2c78298896f9c656d8eb85 +Author: Ryan Lortie +AuthorDate: Mon Jun 7 12:58:57 2010 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jun 7 13:04:39 2010 +0200 + + Bug 620767 - Typo in GSettings documentation + + Use the correct variable name and work around the escaping of '@'. + Expand/clarify the section on how translation of is handled. + + docs/reference/gio/migrating-gconf.xml | 25 ++++++++++++++++++++----- + 1 file changed, 20 insertions(+), 5 deletions(-) + +commit 486c46b9459f7b28528d9144296da9e4a32023d3 +Author: Matthias Clasen +AuthorDate: Mon Jun 7 06:23:24 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 7 06:24:28 2010 -0400 + + Include the right header + + docs/reference/gio/migrating-gconf.xml | 2 +- + gio/tests/gsettings.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 71c5e3f899bf15c9dee09b36f146c5e72652d72b +Author: Ryan Lortie +AuthorDate: Mon Jun 7 10:18:43 2010 +0200 +Commit: Ryan Lortie +CommitDate: Mon Jun 7 10:18:43 2010 +0200 + + Bug 620496 - schema compiler: reject invalid paths + + The GSettings schema compiler was accepting any string as a path. + It is + probably quite a common mistake to suspect that '/apps/foo' is a valid + path name when this will cause all sorts of trouble later. Check for + this case and report the error. + + gio/gschema-compile.c | 16 ++++++++++++++-- + gio/tests/gschema-compile.c | 1 + + gio/tests/schema-tests/invalid-path.gschema.xml | 3 +++ + 3 files changed, 18 insertions(+), 2 deletions(-) + +commit a0c044b5c65500080c15e2c5e315bf87487e63b7 +Author: Matthias Clasen +AuthorDate: Sun Jun 6 16:42:06 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 6 16:42:06 2010 -0400 + + Make g_assertion_message_error take a const GError* + + This was requested in bug 620265. + + glib/gtestutils.c | 2 +- + glib/gtestutils.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 87ee5f36413ba421c58bd4e5cbf1d11a681c2abe +Author: Christian Persch +AuthorDate: Sun Jun 6 16:32:04 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 6 16:32:04 2010 -0400 + + Don't do an extra strlen when g_variant_get_string() returns it + already + + gio/gdbusmessage.c | 12 ++++-------- + 1 file changed, 4 insertions(+), 8 deletions(-) + +commit 2aca3b506a2405927a621bb37447dc96b2aa6174 +Author: Matthias Clasen +AuthorDate: Sun Jun 6 16:20:21 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 6 16:20:21 2010 -0400 + + Add single-include guards to new headers + + As pointed out by Christian Persch in bug 620173, all the new + gdbus and gsettings headers were missing these. + + gio/gcredentials.h | 4 ++++ + gio/gdbusaddress.h | 4 ++++ + gio/gdbusauthobserver.h | 4 ++++ + gio/gdbusconnection.h | 4 ++++ + gio/gdbuserror.h | 4 ++++ + gio/gdbusintrospection.h | 4 ++++ + gio/gdbusmessage.h | 4 ++++ + gio/gdbusmethodinvocation.h | 4 ++++ + gio/gdbusnameowning.h | 4 ++++ + gio/gdbusnamewatching.h | 4 ++++ + gio/gdbusproxy.h | 4 ++++ + gio/gdbusproxywatching.h | 4 ++++ + gio/gdbusserver.h | 4 ++++ + gio/gdbusutils.h | 4 ++++ + gio/gsettings.h | 4 ++++ + 15 files changed, 60 insertions(+) + +commit 9371ca0cc27573174dfc0419e121f8ac718fe061 +Author: Matthias Clasen +AuthorDate: Sun Jun 6 16:15:44 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 6 16:15:44 2010 -0400 + + Sort gio.h includes alphabetically + + gio/gio.h | 49 +++++++++++++++++++++++++------------------------ + 1 file changed, 25 insertions(+), 24 deletions(-) + +commit 3944a63fed37e86515178c362b478eafd80199c0 +Author: Michael Natterer +AuthorDate: Sun Jun 6 21:15:42 2010 +0200 +Commit: Michael Natterer +CommitDate: Sun Jun 6 21:15:42 2010 +0200 + + gio: fix the build + + gio/gpermission.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 92fab483875c2d78ae2cb4749ae283cd26afa451 +Author: Matthias Clasen +AuthorDate: Sun Jun 6 14:22:48 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 6 14:24:14 2010 -0400 + + Some cleanups + + Always include config.h, make property strings for translation, + add since tags. + + gio/gpermission.c | 49 + +++++++++++++++++++++++++++++++++++++++---------- + gio/gsimplepermission.c | 6 +++++- + po/POTFILES.in | 1 + + 3 files changed, 45 insertions(+), 11 deletions(-) + +commit 40e10764b343b7cdcf270107d9a5b56e8fa142ec +Author: Will Thompson +AuthorDate: Thu Jun 3 15:09:09 2010 +0100 +Commit: Will Thompson +CommitDate: Sun Jun 6 17:49:56 2010 +0100 + + Add some symbols to glib-sections.txt + + Most of these are private; the few that aren't were already documented + but not included in the gtkdoc output. + + docs/reference/glib/glib-sections.txt | 12 ++++++++++++ + docs/reference/glib/tmpl/main.sgml | 27 +++++++++++++++++++++++++++ + 2 files changed, 39 insertions(+) + +commit f291d3bb3ce1245981363395ac576d74e918cb0a +Author: Will Thompson +AuthorDate: Thu Jun 3 15:08:58 2010 +0100 +Commit: Will Thompson +CommitDate: Sun Jun 6 17:49:56 2010 +0100 + + Document G_GNUC_DEPRECATED_FOR + + docs/reference/glib/glib-sections.txt | 1 + + docs/reference/glib/tmpl/macros_misc.sgml | 13 +++++++++++++ + 2 files changed, 14 insertions(+) + +commit 157116b8dd58429335a16c4d0d2c8ee4ef287302 +Author: Will Thompson +AuthorDate: Thu Jun 3 14:50:19 2010 +0100 +Commit: Will Thompson +CommitDate: Sun Jun 6 17:49:56 2010 +0100 + + Add examples for G_STRINGIFY and G_PASTE + + docs/reference/glib/tmpl/macros_misc.sgml | 37 + ++++++++++++++++++++++++++++--- + 1 file changed, 34 insertions(+), 3 deletions(-) + +commit 28f9f03a3b7dc015ff1b0c6865a952e2ee0f17f3 +Author: Will Thompson +AuthorDate: Thu Jun 3 14:43:30 2010 +0100 +Commit: Will Thompson +CommitDate: Sun Jun 6 17:49:56 2010 +0100 + + Hide G_PASTE_ARGS in gtkdocs. + + docs/reference/glib/glib-sections.txt | 2 +- + docs/reference/glib/tmpl/macros_misc.sgml | 9 --------- + 2 files changed, 1 insertion(+), 10 deletions(-) + +commit a131beda54a15b071b6571b12f2f2ad8cb342c04 +Author: Javier Jardón +AuthorDate: Sun Jun 6 05:25:59 2010 +0200 +Commit: Javier Jardón +CommitDate: Sun Jun 6 05:26:38 2010 +0200 + + [docs] Improve the g_get_system_config_dirs() docs. + + The retrieved list of directories is XDG_CONFIG_DIRS, + Also mention the retrieved directory on Windows: CSIDL_COMMON_APPDATA + + glib/gutils.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +commit e08c7b86c43f3eb8c230355be5fa92b504e3fff9 +Author: Javier Jardón +AuthorDate: Sun Jun 6 05:13:06 2010 +0200 +Commit: Javier Jardón +CommitDate: Sun Jun 6 05:15:22 2010 +0200 + + [docs] Improve the g_get_system_data_dirs() docs. + + The retrieved list of directories is XDG_DATA_DIRS + + glib/gutils.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 07777db60d82c8f81feb407ec453f244ba10787c +Author: Javier Jardón +AuthorDate: Sun Jun 6 05:05:15 2010 +0200 +Commit: Javier Jardón +CommitDate: Sun Jun 6 05:05:15 2010 +0200 + + [docs] Improve the g_get_user_cache_dir() docs + + The retrieved directory is XDG_CACHE_HOME on UNIX platforms. + Also mention the retrieved directory on Windows: CSIDL_INTERNET_CACHE. + + glib/gutils.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit e40b5ae3ef6a637f1469557b8d7be94a9cf59f6e +Author: Javier Jardón +AuthorDate: Sun Jun 6 04:57:46 2010 +0200 +Commit: Javier Jardón +CommitDate: Sun Jun 6 04:57:46 2010 +0200 + + [docs] Improve the g_get_user_data_dir() docs + + The retrieved directory is XDG_DATA_HOME on UNIX platforms. + Also mention the retrieved directory on Windows: CSIDL_PERSONAL. + + glib/gutils.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit b2718ee71ad85f2536e5e127239a5a438648de0c +Author: Javier Jardón +AuthorDate: Sat Jun 5 18:34:38 2010 +0200 +Commit: Javier Jardón +CommitDate: Sat Jun 5 18:40:07 2010 +0200 + + [docs] Improve the g_get_user_config_dir() docs a bit + + The retrieved directory is XDG_CONFIG_HOME on UNIX platforms. + Also mention the retrieved directory on Windows: CSIDL_APPDATA. + + glib/gutils.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 61f3f45cb95f022d99689e0fee9b0cb97c5112a3 +Author: Ryan Lortie +AuthorDate: Fri Jun 4 23:07:40 2010 +0200 +Commit: Ryan Lortie +CommitDate: Sat Jun 5 00:10:05 2010 +0200 + + add get_permission API to GSettingsBackend + + implement it in the various in-tree backends + + also, lots of whitespace changes to realign the vtable members + + gio/gdelayedsettingsbackend.c | 11 +++++++ + gio/gkeyfilesettingsbackend.c | 9 ++++++ + gio/gmemorysettingsbackend.c | 9 ++++++ + gio/gnullsettingsbackend.c | 11 ++++++- + gio/gsettingsbackend.c | 25 +++++++++++++++ + gio/gsettingsbackend.h | 69 + ++++++++++++++++++++++-------------------- + gio/gsettingsbackendinternal.h | 3 ++ + 7 files changed, 103 insertions(+), 34 deletions(-) + +commit 95c564cabe2837be56f2cf3901a4d6d9d84ab6c9 +Author: Ryan Lortie +AuthorDate: Fri Jun 4 23:02:44 2010 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jun 4 23:02:44 2010 +0200 + + gsettingsbackend.h: pretend to be gio.h + + Since #include is a perfectly valid thing for + applications to do, and since we want to include gio headers from + gsettingsbackend.h, we need to effectively disable the #error we would + get from those headers (because we're not coming via gio.h). + + We don't want to #include here because this would cause + needless rebuilding of GSettingsBackend, GSettings, + GDelayedSettingsBackend, etc... every time someone changed anything in + any public header. + + gio/gsettingsbackend.h | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 473348817809f7aed492245469092901d28de91d +Author: Ryan Lortie +AuthorDate: Fri Jun 4 22:32:01 2010 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jun 4 22:35:14 2010 +0200 + + Bug 620582 - a simple GPermission implementation + + add GSimplePermission, a trivial const implementation of GPermission + + can-request and can-release are always false for this implementation + and + the value of 'allowed' is decided at construction. + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 8 ++++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gio.symbols | 7 ++++ + gio/giotypes.h | 1 + + gio/gsimplepermission.c | 84 + +++++++++++++++++++++++++++++++++++++ + gio/gsimplepermission.h | 45 ++++++++++++++++++++ + 8 files changed, 149 insertions(+) + +commit 0957f76878046d848ea42bab09d9b129a60476a5 +Author: Matej Urbančič +AuthorDate: Fri Jun 4 20:03:41 2010 +0200 +Commit: Matej Urbančič +CommitDate: Fri Jun 4 20:03:41 2010 +0200 + + Updated Slovenian translation + + po/sl.po | 1979 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 1039 insertions(+), 940 deletions(-) + +commit 7a4860d69ad7b6daf6cce0063cbc52070d21bd7b +Author: Ryan Lortie +AuthorDate: Thu Jun 3 22:58:52 2010 +0200 +Commit: Ryan Lortie +CommitDate: Fri Jun 4 19:03:38 2010 +0200 + + Bug 620519 - GPermission + + Add an abstract interface representing the permission to perform an + action. + + docs/reference/gio/gio-docs.xml | 4 + + docs/reference/gio/gio-sections.txt | 21 ++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gio.symbols | 16 ++ + gio/giotypes.h | 1 + + gio/gpermission.c | 390 + ++++++++++++++++++++++++++++++++++++ + gio/gpermission.h | 118 +++++++++++ + 9 files changed, 554 insertions(+) + +commit 07b5cee2a8273d7fdd20371b5494ecd320c3cd1c +Author: Murray Cumming +AuthorDate: Fri Jun 4 17:07:05 2010 +0200 +Commit: Murray Cumming +CommitDate: Fri Jun 4 17:07:05 2010 +0200 + + Gio: gioenums.h: Remove trailing commas to avoid C++ warnings. + + gio/gioenums.h | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit af3f4cbe77584acabf289f4c3f9beccd6bfcfd21 +Author: Javier Jardón +AuthorDate: Sun May 30 14:56:55 2010 +0200 +Commit: Javier Jardón +CommitDate: Fri Jun 4 01:35:23 2010 +0200 + + gdbusaddress: Fix typo + + gio/gdbusaddress.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 644584e7e6bcff65e5bd819a4756dc7597526961 +Author: Kristjan Schmidt +AuthorDate: Thu Jun 3 18:19:31 2010 +0200 +Commit: Kristjan Schmidt +CommitDate: Thu Jun 3 18:19:31 2010 +0200 + + Updated Esperanto translation + + po/eo.po | 1661 + +++++++++++++++++--------------------------------------------- + 1 file changed, 437 insertions(+), 1224 deletions(-) + +commit e608b1f067c76db196a63723b50167a00ab39921 +Author: Matthias Clasen +AuthorDate: Thu Jun 3 11:40:02 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 3 11:42:59 2010 -0400 + + Don't spew a g_warning if inotify setup fails + + We use is_supported when we are trying to find a local file monitor + implementation that works, and having the g_warning in there trips + the test suite. + + gio/inotify/inotify-helper.c | 1 - + 1 file changed, 1 deletion(-) + +commit 9562726f35b3e19d5d50d4e2e01bd8c37c7727ab +Author: Ryan Lortie +AuthorDate: Thu Jun 3 11:24:31 2010 +0200 +Commit: Ryan Lortie +CommitDate: Thu Jun 3 11:24:31 2010 +0200 + + Bug 620350 - add g_variant_builder_add_parsed() + + A delicious blend of g_variant_new_parsed() and + g_variant_builder_add_value(). Now available in a GLib near you. + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gvariant-parser.c | 44 + +++++++++++++++++++++++++++++++++++ + glib/gvariant.h | 3 +++ + 4 files changed, 49 insertions(+) + +commit 44db2b6b7447680fa3f8d3bce6f2bda26a6b498e +Author: Ryan Lortie +AuthorDate: Thu Jun 3 09:41:33 2010 +0200 +Commit: Ryan Lortie +CommitDate: Thu Jun 3 09:41:33 2010 +0200 + + Bug 620349 – utf8ify GVariant printer + + Take advantage of our knowledge that GVariant strings are always valid + utf8 when printing and parsing: + + - allow valid printing unicode characters to pass through unescaped + + - escape non-printing characters using \uxxxx or \Uxxxxxxxx format + + - do the same in the parser + + - update existing test cases to use utf8, add a new test case + + glib/gvariant-parser.c | 64 + +++++++++++++++++++++++++++++++++++++++---------- + glib/gvariant.c | 65 + ++++++++++++++++++++++++++++++++++++++++++++------ + glib/tests/gvariant.c | 26 +++++++++++++++++--- + 3 files changed, 132 insertions(+), 23 deletions(-) + +commit 36826661401f1912eef8c710609f4bd6454720ad +Author: Milan Bouchet-Valat +AuthorDate: Wed Jun 2 16:05:13 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jun 2 19:37:30 2010 +0200 + + Annotate GVariant and GSettings _strv() functions + + Add GObject introspection annotations so that the length parameter is + correctly detected for g_variant_new_strv(), g_variant_get_strv() and + g_variant_dup_strv(). Also specify that it can be a NULL pointer in + g_variant_get_strv() and g_variant_dup_strv(). + + For g_settings_set_strv(), detect that a NULL value is allowed, + meaning + empty array. + + Closes bug #620384. + + Signed-off-by: Ryan Lortie + + gio/gsettings.c | 2 +- + glib/gvariant.c | 10 +++++----- + 2 files changed, 6 insertions(+), 6 deletions(-) + +commit 0e691f27ecfe1d7f86214f16c00f91fc55f95e9c +Author: Ryan Lortie +AuthorDate: Wed Jun 2 19:34:45 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jun 2 19:37:30 2010 +0200 + + improve gitignore (systemtap) + + .gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit 20ab1e667308741de01fa9d1afc106dcd8b313d9 +Author: Kjartan Maraas +AuthorDate: Wed Jun 2 15:41:01 2010 +0200 +Commit: Kjartan Maraas +CommitDate: Wed Jun 2 15:41:33 2010 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 1305 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 659 insertions(+), 646 deletions(-) + +commit b5c8496b4c06fc7be5672e29a771064d3247d0cc +Author: Ryan Lortie +AuthorDate: Wed Jun 2 04:00:58 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jun 2 04:00:58 2010 +0200 + + Support NULL value for g_settings_set_strv() + + Allow easy setting of the empty array that we lost with the last + patch. + + gio/gsettings.c | 14 +++++++++++--- + 1 file changed, 11 insertions(+), 3 deletions(-) + +commit bf9edb5cd5a75a4bc9946f0ef106c3d541fdb89f +Author: Milan Bouchet-Valat +AuthorDate: Tue Jun 1 23:16:19 2010 +0200 +Commit: Ryan Lortie +CommitDate: Wed Jun 2 03:54:23 2010 +0200 + + Remove length parameter for g_settings_[gs]et_strv + + Length of the array is redundant since it's NULL-terminated. This + is not + consistent with many GLib and GTK+ functions, and adds complexity with + no real gain, while these convenience functions should be kept simple. + + Closes bug #620312 + + gio/gsettings.c | 12 ++++-------- + gio/gsettings.h | 6 ++---- + 2 files changed, 6 insertions(+), 12 deletions(-) + +commit dc7b1c5b42175cd3e52b57c427545d6c4d9b1cee +Author: Jorge González +AuthorDate: Sun May 30 18:23:21 2010 +0200 +Commit: Jorge González +CommitDate: Sun May 30 18:23:21 2010 +0200 + + Updated Spanish translation + + po/es.po | 19 ++++++++----------- + 1 file changed, 8 insertions(+), 11 deletions(-) + +commit 7d04f0a915f290b47382d8f2cc989cb6de91e781 +Author: Fran Diéguez +AuthorDate: Sun May 30 17:43:57 2010 +0200 +Commit: Fran Diéguez +CommitDate: Sun May 30 17:43:57 2010 +0200 + + Updated Galician translations + + po/gl.po | 83 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 41 insertions(+), 42 deletions(-) + +commit 1afaeb9976334ebdcba53ab258aa3922a872bfb9 +Author: Andika Triwidada +AuthorDate: Sun May 30 17:10:51 2010 +0700 +Commit: Andika Triwidada +CommitDate: Sun May 30 17:10:51 2010 +0700 + + Updated Indonesian translation + + po/id.po | 1590 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 826 insertions(+), 764 deletions(-) + +commit be94532e634772115e5fabefb69c803a5c5e4672 +Author: Jorge González +AuthorDate: Sat May 29 12:06:16 2010 +0200 +Commit: Jorge González +CommitDate: Sat May 29 12:06:16 2010 +0200 + + Updated Spanish translation + + po/es.po | 69 + ++++++++++++++++++++++++++++++---------------------------------- + 1 file changed, 32 insertions(+), 37 deletions(-) + +commit b208c2d75654ee3cf6cadf0a796976426c7b3df0 +Author: Jorge González +AuthorDate: Fri May 28 20:21:02 2010 +0200 +Commit: Jorge González +CommitDate: Fri May 28 20:21:02 2010 +0200 + + Updated Spanish translation + + po/es.po | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +commit e7c1aaf9259b64bc40d2851df9b988627e783421 +Author: Jorge González +AuthorDate: Fri May 28 19:45:51 2010 +0200 +Commit: Jorge González +CommitDate: Fri May 28 19:45:51 2010 +0200 + + Updated Spanish translation + + po/es.po | 28 ++++++++++++++-------------- + 1 file changed, 14 insertions(+), 14 deletions(-) + +commit 5451cd0804f196f30a8cc58eee029c8b4acc54e0 +Author: Yaron Shahrabani +AuthorDate: Fri May 28 16:57:56 2010 +0300 +Commit: Yaron Shahrabani +CommitDate: Fri May 28 16:57:56 2010 +0300 + + Updated Hebrew translation. + + po/he.po | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +commit ecc5fbb479e529d17885e3b746f78c05758c1bb0 +Author: Yaron Shahrabani +AuthorDate: Fri May 28 16:54:58 2010 +0300 +Commit: Yaron Shahrabani +CommitDate: Fri May 28 16:54:58 2010 +0300 + + Updated Hebrew translation. + + po/he.po | 356 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 200 insertions(+), 156 deletions(-) + +commit c874a76a8bf4f3b31e480a9184983cd5e85aeb4c +Author: Lin Ma +AuthorDate: Fri May 28 16:57:10 2010 +0800 +Commit: Lin Ma +CommitDate: Fri May 28 16:58:56 2010 +0800 + + After talk with FEN dev, we dicide simply disable monitor function if + the current filesystem doesn't suport FEN. + + gio/fen/fen-kernel.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 8e41be13efe06a0bbd89beefc6e7ae7279b56834 +Author: Alexander Larsson +AuthorDate: Fri Jan 1 21:39:52 2010 +0100 +Commit: Colin Walters +CommitDate: Thu May 27 14:51:41 2010 -0400 + + Add dtrace and systemtap support for gobject + + This adds static markers and systemtap tapsets for: + + * type creation + * object lifetimes (creation, ref, unref, dispose, finalize) + * signal creation and emission + + Signal emissions and finalization marker have a corresponding + *_end (or *-end in dtrace) version that is when the corresponding + operation is finished. + + https://bugzilla.gnome.org/show_bug.cgi?id=606044 + + configure.in | 1 + + gobject/Makefile.am | 22 ++++++ + gobject/gobject.c | 28 +++++-- + gobject/gobject.stp.in | 199 + +++++++++++++++++++++++++++++++++++++++++++++++ + gobject/gobject_probes.d | 13 ++++ + gobject/gobject_trace.h | 43 ++++++++++ + gobject/gsignal.c | 11 ++- + gobject/gtype.c | 9 ++- + 8 files changed, 316 insertions(+), 10 deletions(-) + +commit bef9efd0a99a9a3bd6a2d713423edc37d6a38f21 +Author: Alexander Larsson +AuthorDate: Fri Dec 18 21:25:47 2009 +0100 +Commit: Colin Walters +CommitDate: Thu May 27 14:51:41 2010 -0400 + + Initial support for dtrace and systemtap + + This adds static markers for dtrace, which are also usable + by systemtap. Additionally it adds a tapset for systemtap + that makes it easier to use the static markers. + + These are enabled by default. + + This initial set of probes is rather limited: + + * allocation and free using g_malloc & co + * allocation and free using g_slice + * gquark name tracking (useful for converting quarks to strings + in probes) + + Notes on naming: + + Its traditional with dtrace to use probe names with dashes as + delimiter (slice-alloc). Since dashes are not usable in identifiers + the C code uses double underscores (slice__alloc) which is converted + to dashes in the UI. We follow this for the shared lowlevel probe + names. + + Additionally dtrace supports putting a "provider" part in the probe + names which is essentially a namespacing thing. On systemtap this + field is currently ignored (but may be implemented in the future), but + this is not really a problem since in systemtap the probes are + specified by combining the solib file and the marker name, so there + can't really be name conflicts. + + For the systemtap tapset highlevel probes we instead use names that + are systemtapish with single dashes as separators. + + https://bugzilla.gnome.org/show_bug.cgi?id=606044 + + configure.in | 53 ++++++++++++++++++++++++ + docs/reference/glib/building.sgml | 42 ++++++++++++++++++++ + docs/reference/glib/running.sgml | 13 ++++++ + glib/Makefile.am | 23 +++++++++++ + glib/gdataset.c | 6 ++- + glib/glib.stp.in | 84 + +++++++++++++++++++++++++++++++++++++++ + glib/glib_probes.d | 8 ++++ + glib/glib_trace.h | 43 ++++++++++++++++++++ + glib/gmem.c | 52 +++++++++++++++++++----- + glib/gslice.c | 5 +++ + 10 files changed, 317 insertions(+), 12 deletions(-) + +commit c3bc0f4f8fc5125a732f383671ee5bff939423d2 +Author: Mikhail Zabaluev +AuthorDate: Thu May 27 14:00:12 2010 -0400 +Commit: Behdad Esfahbod +CommitDate: Thu May 27 14:00:12 2010 -0400 + + Optimized the overlong sequence check in g_utf8_get_char_extended() + + Rather make it branch to get the due sequence length for the resulting + character code, we can as well get the minimum code value in the + initial + branching. + + glib/gutf8.c | 26 +++++++++++++++++--------- + 1 file changed, 17 insertions(+), 9 deletions(-) + +commit 30a856294613ab1119c0972b35bac5bbf3294692 +Author: Ryan Lortie +AuthorDate: Thu May 27 13:11:49 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu May 27 13:11:49 2010 -0400 + + GSettings schema docs: mention need for EXTRA_DIST + + Mention that you will need to use EXTRA_DIST for your schema file + if it + is distributed with your project. + + docs/reference/gio/migrating-gconf.xml | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit f2687f588e3a2b338242d73b6898eb93689b264b +Author: Ryan Lortie +AuthorDate: Thu May 27 13:07:54 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu May 27 13:07:54 2010 -0400 + + Remove duplicate copies of migration docs + + Fixup for commit 133f66538dbf266be3c99b34f1eeee0a5e6068ac which + duplicated the contents of most of the migration documentation by + splitting it out into separate files but keeping the original file + intact (with a rename). + + This removes the duplicated content from the renamed file. + + docs/reference/gio/migrating-posix.xml | 554 + --------------------------------- + 1 file changed, 554 deletions(-) + +commit b3593693d918f0ae97094f6712d817180b8eea6a +Author: Ryan Lortie +AuthorDate: Thu May 27 11:58:54 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu May 27 11:58:54 2010 -0400 + + gsettings m4: check for .xml in src/builddir + + This checks for the .gschema.xml file in the srcdir and builddir and + runs the schema validation on which one it finds. This handles + non-srcdir builds in both cases: .gschema.xml is in the tarball and + .gschema.xml is generated. + + m4macros/gsettings.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e7927faf1792ad4c3c8a5b599240a7ee94b1a0cc +Author: Ryan Lortie +AuthorDate: Thu May 27 11:32:34 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu May 27 11:32:34 2010 -0400 + + GVariant: One more FreeBSD fix + + FreeBSD's malloc() sometimes returns unaligned memory if you are + requesting small sizes. This can get GVariant into trouble. For + example, consider the type "mmi" containing the value "just nothing". + According to the type signature, the memory containing this should be + aligned to a boundary of 4 since it might contain an int. The + serialised size of this value is 1 byte, however, and when you ask + FreeBSD to allocate memory of that size, it knows you can't put an int + into it so it doesn't bother aligning it. + + This patch modifies the GVariant serialiser to not assert the + alignment + constraint in the case that the size of the serialised data is smaller + than its own alignment requirement. + + glib/gvariant-serialiser.c | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) + +commit 271997deb56cc17af5fa7b59b3a67f4ee347be6c +Author: Ryan Lortie +AuthorDate: Wed May 26 23:34:31 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu May 27 11:07:19 2010 -0400 + + More alignment-related fixes. + + Partial-backout 8a21d8d23317ecebe46007f1fd5f7459bf182415. The + assertions should have remained relaxed since these functions are used + with non-posix_memalign()ed data. + + glib/tests/gvariant.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 866e3dda60d7de45ae7f6c962a0bb4167abd8147 +Author: Lin Ma +AuthorDate: Thu May 27 10:24:58 2010 +0800 +Commit: Lin Ma +CommitDate: Thu May 27 10:24:58 2010 +0800 + + Remove unused code. + + gio/fen/fen-node.c | 13 ------------- + 1 file changed, 13 deletions(-) + +commit 91ec834456b419c0270072d52d28b365aa160dfb +Author: Ryan Lortie +AuthorDate: Wed May 26 17:35:18 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 26 17:35:18 2010 -0400 + + include "config.h" for HAVE_POSIX_MEMALIGN + + glib/tests/gvariant.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 8a21d8d23317ecebe46007f1fd5f7459bf182415 +Author: Ryan Lortie +AuthorDate: Wed May 26 17:31:52 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 26 17:31:52 2010 -0400 + + Use aligned memory in GVariant test cases. + + The GVariant serialiser works well with non-8-aligned memory, but the + comparison serialiser in the test case depends on memory being + 8-aligned. Use posix_memalign() to get the memory used by this + serialiser. + + glib/tests/gvariant.c | 47 + ++++++++++++++++++++++++++++++++++++----------- + 1 file changed, 36 insertions(+), 11 deletions(-) + +commit 183102104a3762bab4c50fc54cd11979ca085859 +Author: Colin Walters +AuthorDate: Wed May 26 16:21:15 2010 -0400 +Commit: Colin Walters +CommitDate: Wed May 26 16:21:15 2010 -0400 + + [mainloop-test] Fix compilation errors + + tests/mainloop-test.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ba1163a33cdfb7f67cbd311ae2b74ae40831cd05 +Author: Colin Walters +AuthorDate: Wed May 26 15:59:36 2010 -0400 +Commit: Colin Walters +CommitDate: Wed May 26 15:59:36 2010 -0400 + + [tests/gvariant] Handle flavored_free(NULL), since flavored_malloc + can return NULL + + glib/tests/gvariant.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 88a1e6c1021644f9ae42c558b23e3c6a1e4055a6 +Author: Jorge González +AuthorDate: Wed May 26 18:12:22 2010 +0200 +Commit: Jorge González +CommitDate: Wed May 26 18:12:22 2010 +0200 + + Updated Spanish translation + + po/es.po | 389 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 201 insertions(+), 188 deletions(-) + +commit 39123880387b19f034ae0bed9492d5a1b4f026ab +Author: Jorge González +AuthorDate: Wed May 26 18:09:46 2010 +0200 +Commit: Jorge González +CommitDate: Wed May 26 18:09:46 2010 +0200 + + Updated Spanish translation + + po/es.po | 1361 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 696 insertions(+), 665 deletions(-) + +commit 798eed43a2ee756b32651559f95ce55f0a448e7b +Author: Lin Ma +AuthorDate: Wed May 26 14:32:37 2010 +0800 +Commit: Lin Ma +CommitDate: Wed May 26 14:32:37 2010 +0800 + + bugster#6955199, on hsfs portfs will fail, and FEN backend will fail + to run lstat and port_associate on root node. + + gio/fen/fen-node.c | 21 ++++++++++++++++++--- + 1 file changed, 18 insertions(+), 3 deletions(-) + +commit 6b53e4826fba3827ac7273a344b46f854ee81d0b +Author: Havoc Pennington +AuthorDate: Tue Apr 20 17:47:44 2010 -0400 +Commit: Colin Walters +CommitDate: Tue May 25 16:59:22 2010 -0400 + + GSource: add g_source_set_name, g_source_get_name, + g_source_set_name_by_id + + These allow applications to give meaningful names to their sources. + Source names can then be used for debugging and profiling, for + example with systemtap or gdb. + + https://bugzilla.gnome.org/show_bug.cgi?id=606044 + + glib/gmain.c | 5 ++++- + tests/mainloop-test.c | 6 +++++- + 2 files changed, 9 insertions(+), 2 deletions(-) + +commit e5696c282e2c48ac0f822c4e6d33c8507a77e998 +Author: Havoc Pennington +AuthorDate: Tue Apr 20 17:47:44 2010 -0400 +Commit: Colin Walters +CommitDate: Tue May 25 13:45:28 2010 -0400 + + GSource: add g_source_set_name, g_source_get_name, + g_source_set_name_by_id + + These allow applications to give meaningful names to their sources. + Source names can then be used for debugging and profiling, for + example with systemtap or gdb. + + https://bugzilla.gnome.org/show_bug.cgi?id=606044 + + glib/glib.symbols | 3 ++ + glib/gmain.c | 83 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++- + glib/gmain.h | 9 +++++- + 3 files changed, 93 insertions(+), 2 deletions(-) + +commit eec66b2f9424dd6db25867ee0a32e0341def15b8 +Author: David Zeuthen +AuthorDate: Tue May 25 11:59:57 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue May 25 12:03:27 2010 -0400 + + GDBus: Big-endian fixes + + Tested this on my Powerbook G4 12", 867MHz PowerPC G4 running Fedora + 11ish. + + Signed-off-by: David Zeuthen + + gio/gdbusmessage.c | 8 ++++++-- + gio/tests/gdbus-threading.c | 2 +- + 2 files changed, 7 insertions(+), 3 deletions(-) + +commit a81c2f2c7ad260bc3033648bb274a3b321df8b49 +Author: Ryan Lortie +AuthorDate: Tue May 25 11:25:34 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue May 25 11:26:18 2010 -0400 + + GVariant: deal with non-8-aligned malloc() + + Closes bug #619585. + + glib/gvariant-serialiser.c | 18 ++++++++++++ + glib/tests/gvariant.c | 72 + +++++++++++++++++++++++++++++----------------- + 2 files changed, 64 insertions(+), 26 deletions(-) + +commit 9e25ec592ba32797230650b2236935deb2022960 +Author: Matthias Clasen +AuthorDate: Tue May 25 10:43:29 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 25 10:44:19 2010 -0400 + + Document that vtable is not copied + + gio/gdbusconnection.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 857a40fafb98934c954649e712bc35633438ebcf +Author: Fran Diéguez +AuthorDate: Tue May 25 09:56:33 2010 +0200 +Commit: Fran Diéguez +CommitDate: Tue May 25 09:56:33 2010 +0200 + + Updated Galician translations + + po/gl.po | 1270 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 646 insertions(+), 624 deletions(-) + +commit 32c84552f6dfb05f990e8740a75c8b1fed753ea8 +Author: Ryan Lortie +AuthorDate: Mon May 24 23:21:01 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon May 24 23:21:01 2010 -0400 + + .gitignore manpages (*.1) + + docs/reference/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit dcd13e39be34ec4b396bab4dbaa976d2917cf7b5 +Author: Ryan Lortie +AuthorDate: Mon May 24 23:03:36 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon May 24 23:03:36 2010 -0400 + + post-release version bump. + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2db2d13fdbfe80d89cb4d5fecfa13619909f4ac5 +Author: Ryan Lortie +AuthorDate: Mon May 24 23:02:18 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon May 24 23:02:18 2010 -0400 + + Release 2.25.7. + + NEWS | 34 + + docs/reference/glib/tmpl/i18n.sgml | 11 + + po/af.po | 297 +++++---- + po/am.po | 293 ++++---- + po/ar.po | 297 +++++---- + po/as.po | 297 +++++---- + po/ast.po | 297 +++++---- + po/az.po | 293 ++++---- + po/be.po | 296 +++++---- + po/be@latin.po | 300 +++++---- + po/bg.po | 297 +++++---- + po/bn.po | 297 +++++---- + po/bn_IN.po | 297 +++++---- + po/bs.po | 293 ++++---- + po/ca.po | 297 +++++---- + po/ca@valencia.po | 297 +++++---- + po/cs.po | 297 +++++---- + po/cy.po | 297 +++++---- + po/da.po | 297 +++++---- + po/de.po | 297 +++++---- + po/dz.po | 293 ++++---- + po/el.po | 297 +++++---- + po/en@shaw.po | 297 +++++---- + po/en_CA.po | 297 +++++---- + po/en_GB.po | 297 +++++---- + po/eo.po | 293 ++++---- + po/es.po | 297 +++++---- + po/et.po | 672 ++++++++++++++++++- + po/eu.po | 297 +++++---- + po/fa.po | 293 ++++---- + po/fi.po | 297 +++++---- + po/fr.po | 297 +++++---- + po/ga.po | 297 +++++---- + po/gl.po | 1287 + ++++++++++++++++++------------------ + po/gu.po | 297 +++++---- + po/he.po | 297 +++++---- + po/hi.po | 297 +++++---- + po/hr.po | 293 ++++---- + po/hu.po | 297 +++++---- + po/hy.po | 293 ++++---- + po/id.po | 297 +++++---- + po/is.po | 293 ++++---- + po/it.po | 297 +++++---- + po/ja.po | 297 +++++---- + po/ka.po | 293 ++++---- + po/kn.po | 297 +++++---- + po/ko.po | 297 +++++---- + po/ku.po | 293 ++++---- + po/lt.po | 297 +++++---- + po/lv.po | 293 ++++---- + po/mai.po | 297 +++++---- + po/mg.po | 293 ++++---- + po/mk.po | 297 +++++---- + po/ml.po | 297 +++++---- + po/mn.po | 293 ++++---- + po/mr.po | 297 +++++---- + po/ms.po | 293 ++++---- + po/nb.po | 1274 + ++++++++++++++++++----------------- + po/nds.po | 297 +++++---- + po/ne.po | 293 ++++---- + po/nl.po | 297 +++++---- + po/nn.po | 297 +++++---- + po/oc.po | 293 ++++---- + po/or.po | 297 +++++---- + po/pa.po | 297 +++++---- + po/pl.po | 297 +++++---- + po/ps.po | 297 +++++---- + po/pt.po | 297 +++++---- + po/pt_BR.po | 297 +++++---- + po/ro.po | 297 +++++---- + po/ru.po | 297 +++++---- + po/rw.po | 296 +++++---- + po/si.po | 293 ++++---- + po/sk.po | 297 +++++---- + po/sl.po | 297 +++++---- + po/sq.po | 311 +++++---- + po/sr.po | 297 +++++---- + po/sr@ije.po | 293 ++++---- + po/sr@latin.po | 297 +++++---- + po/sv.po | 297 +++++---- + po/ta.po | 297 +++++---- + po/te.po | 297 +++++---- + po/th.po | 297 +++++---- + po/tl.po | 293 ++++---- + po/tr.po | 297 +++++---- + po/tt.po | 293 ++++---- + po/uk.po | 297 +++++---- + po/vi.po | 297 +++++---- + po/wa.po | 293 ++++---- + po/xh.po | 293 ++++---- + po/yi.po | 293 ++++---- + po/zh_CN.po | 297 +++++---- + po/zh_HK.po | 297 +++++---- + po/zh_TW.po | 297 +++++---- + 94 files changed, 15547 insertions(+), 14083 deletions(-) + +commit 47e07f9f78e7fc9e4d7e8fb96420009560662519 +Author: Ryan Lortie +AuthorDate: Mon May 24 22:37:43 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon May 24 22:37:43 2010 -0400 + + another occurrence of the last fix (@XSLTPROC@) + + docs/reference/gobject/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b295e6a28a590ada8f8d3c3a50fb5250dd339eed +Author: Ryan Lortie +AuthorDate: Mon May 24 22:35:33 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon May 24 22:35:33 2010 -0400 + + man pages: fix broken @XSLTPROC@ substitution + + docs/reference/glib/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 84a0605342368c2edad99abd364791bf3b2ebc14 +Author: Ryan Lortie +AuthorDate: Mon May 24 22:20:47 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon May 24 22:20:47 2010 -0400 + + change GSettingsBackend.list() API + + gio/gsettingsbackend.c | 2 +- + gio/gsettingsbackend.h | 60 + ++++++++++++++++++++++++++------------------------ + 2 files changed, 32 insertions(+), 30 deletions(-) + +commit 1b7f64549258c971fcc7c15ebfb532e4bc0b4174 +Author: Matthias Clasen +AuthorDate: Mon May 24 21:09:55 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 24 21:09:55 2010 -0400 + + Improve the g_file_make_symbolic_link docs + + Following a proposal by Neil Williams in bug 619527. + + gio/gfile.c | 17 +++++++++-------- + 1 file changed, 9 insertions(+), 8 deletions(-) + +commit 77b9a4646179daae04590ab1f62d575be93e1f89 +Author: Ryan Lortie +AuthorDate: Mon May 24 17:03:26 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon May 24 17:03:26 2010 -0400 + + GIO: Add g_d{,c}gettext to PLT check exceptions + + gio/pltcheck.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3160bcad6a0cf3c1f1042b85f38492a5674324a3 +Author: Ryan Lortie +AuthorDate: Mon May 24 16:46:24 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon May 24 17:00:04 2010 -0400 + + GDBusConnection.call(): add 'reply_type' argument + + This allows the caller to specify the reply type that they are + expecting + for this call. If the reply comes back with the wrong type, + GDBus will + generate an appropriate error internally. + + - add a GVariantType * argument to g_dbus_connection_call() and + _call_sync(). + + - move the internal API for computing message types from + introspection + data to be based on GVariantType instead of strings. Update users + of this code. + + - have GDBusProxy pass this calculated GVariantType into + g_dbus_connection_call(). Remove the checks done in GDBusProxy. + + - Update other users of the code (test cases, gdbus-tool, GSettings + tool, etc). In some cases, remove redundant checks; in some other + cases, we are fixing bugs because no checking was done where it + should have been. + + Closes bug #619391. + + gio/gdbus-tool.c | 49 ++------- + gio/gdbusconnection.c | 236 + ++++++++++++++++++++++++++++------------- + gio/gdbusconnection.h | 2 + + gio/gdbusmethodinvocation.c | 28 +++-- + gio/gdbusnameowning.c | 2 + + gio/gdbusnamewatching.c | 2 + + gio/gdbusprivate.c | 30 +++--- + gio/gdbusprivate.h | 3 +- + gio/gdbusproxy.c | 78 ++++---------- + gio/gsettings-tool.c | 2 +- + gio/tests/gdbus-connection.c | 11 +- + gio/tests/gdbus-example-peer.c | 1 + + gio/tests/gdbus-export.c | 2 +- + gio/tests/gdbus-names.c | 2 + + gio/tests/gdbus-threading.c | 6 +- + 15 files changed, 246 insertions(+), 208 deletions(-) + +commit 100df5287d51fd005d64f2c06f4fe4276da1c4d8 +Author: Richard Hughes +AuthorDate: Mon May 24 17:22:38 2010 +0100 +Commit: Richard Hughes +CommitDate: Mon May 24 17:22:38 2010 +0100 + + Fix up a typo in the g_variant_builder_add() docs + + glib/gvariant.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit a83a9a43ed2f461fea7a652470a3ef376aebd1f2 +Author: Tor Lillqvist +AuthorDate: Mon May 24 11:22:41 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Mon May 24 11:22:41 2010 +0300 + + Most of the gdbus test programs build only on Unix + + gio/tests/Makefile.am | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit d7b077dc84b22c4502e27252d32303d9985f9aeb +Author: Kjartan Maraas +AuthorDate: Sun May 23 16:27:17 2010 +0200 +Commit: Kjartan Maraas +CommitDate: Sun May 23 16:28:06 2010 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 1381 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 704 insertions(+), 677 deletions(-) + +commit b1bf5a5bb9725b1468ae82b636e35288fd3cf3ad +Author: Kjartan Maraas +AuthorDate: Sun May 23 16:27:08 2010 +0200 +Commit: Kjartan Maraas +CommitDate: Sun May 23 16:27:08 2010 +0200 + + Add two missing files + + po/POTFILES.in | 2 ++ + 1 file changed, 2 insertions(+) + +commit 3caef4eef0c6ae946333633c1e27f4548a1ce42b +Author: Fran Diéguez +AuthorDate: Sun May 23 00:22:48 2010 +0200 +Commit: Fran Diéguez +CommitDate: Sun May 23 00:23:19 2010 +0200 + + Updated Galician translations + + po/gl.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 925a6f29114769d575ecdfbaaf5c236517edb98f +Author: Fran Diéguez +AuthorDate: Sun May 23 00:20:26 2010 +0200 +Commit: Fran Diéguez +CommitDate: Sun May 23 00:23:19 2010 +0200 + + Updated Galician translations + + po/gl.po | 64 + +++++++++++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 41 insertions(+), 23 deletions(-) + +commit c17bb8f44514027c36825c1ca16ce67ae291c3ad +Author: Fran Diéguez +AuthorDate: Thu May 20 21:52:11 2010 +0200 +Commit: Fran Diéguez +CommitDate: Sun May 23 00:23:19 2010 +0200 + + Updated Galician translations + + po/gl.po | 290 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 148 insertions(+), 142 deletions(-) + +commit 8db946fdfb71167dd8b740b4ba20213303a0f2bf +Author: Matthias Clasen +AuthorDate: Fri May 21 22:28:42 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 21 22:28:42 2010 -0400 + + Clean up man page handling + + Remove all formatted man pages from git, and use the same + Makefile fragment in all doc dirs. + + docs/reference/glib/Makefile.am | 30 ++- + docs/reference/glib/glib-gettextize.1 | 71 ------- + docs/reference/glib/gtester-report.1 | 44 ----- + docs/reference/glib/gtester.1 | 101 ---------- + docs/reference/gobject/Makefile.am | 35 +++- + docs/reference/gobject/glib-genmarshal.1 | 307 + ------------------------------- + docs/reference/gobject/glib-mkenums.1 | 246 ------------------------- + docs/reference/gobject/gobject-query.1 | 83 --------- + gobject/Makefile.am | 2 - + gobject/glib-genmarshal.1 | 212 --------------------- + gobject/glib-mkenums.1 | 169 ----------------- + 11 files changed, 48 insertions(+), 1252 deletions(-) + +commit d818bebf4949617fdf5ffc7833c8f87ccca5c1a1 +Author: Ryan Lortie +AuthorDate: Fri May 21 20:08:49 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri May 21 20:10:02 2010 -0400 + + add .SECONDARY: rule to preserve generated schemas + + If the .gschema.xml file was generated as the result of an implicit + make + rule then make would 'rm' it after creating the validity stamp. This + would cause 'make install' to fail. + + m4macros/gsettings.m4 | 2 ++ + 1 file changed, 2 insertions(+) + +commit bf24dff88eb3c794ae846cb7b8397510407ad9f5 +Author: David Zeuthen +AuthorDate: Fri May 21 12:09:27 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri May 21 12:11:04 2010 -0400 + + Return an error for calls into unknown interfaces or unknown objects + + Ryan pointed out on IRC that we didn't do anything here. Looking at + the code, it's painfully obvious that we should be returning an error + here since a comment already says that we've exhausted all possible + options. + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 10 +++++++++- + gio/tests/gdbus-export.c | 12 ++++++++++++ + 2 files changed, 21 insertions(+), 1 deletion(-) + +commit c7f0f2c4377c5fd242c52d30a09df74e6d6e9828 +Author: Christian Persch +AuthorDate: Fri May 14 14:00:24 2010 +0200 +Commit: Christian Persch +CommitDate: Thu May 20 21:17:14 2010 +0200 + + Use stack-allocated GVariantBuilders + + This saves a few allocations. + Also simplify the code a bit in gdbusconnection. + + Bug #618616. + + gio/gdbusconnection.c | 19 ++++++------------- + gio/gdbusmessage.c | 30 +++++++++++++++--------------- + 2 files changed, 21 insertions(+), 28 deletions(-) + +commit 41b3f6885d26908627c8a132f63aab4ba1d83582 +Author: Christian Persch +AuthorDate: Thu May 20 00:54:51 2010 +0200 +Commit: Christian Persch +CommitDate: Thu May 20 21:16:29 2010 +0200 + + Add g_dc[p]gettext, and use it in gsettings + + Avoid using LC_MESSAGES, and just call g_d[c]gettext directly. + + Bug #617004. + + docs/reference/glib/glib-sections.txt | 1 + + gio/gsettings.c | 7 ++----- + glib/glib.symbols | 1 + + glib/gstrfuncs.c | 27 +++++++++++++++++++++++++++ + glib/gstrfuncs.h | 4 +++- + po/Makefile.in.in | 2 ++ + 6 files changed, 36 insertions(+), 6 deletions(-) + +commit e8f723245a4b1667949dc9715bc5bc2f263317a4 +Author: Fran Diéguez +AuthorDate: Thu May 20 19:30:39 2010 +0200 +Commit: Fran Diéguez +CommitDate: Thu May 20 19:30:39 2010 +0200 + + Updated Galician translations + + po/gl.po | 1274 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 644 insertions(+), 630 deletions(-) + +commit 366b3ffcde4f19cabf8685efdc1ccd20dcade0ca +Author: David Zeuthen +AuthorDate: Thu May 20 10:51:00 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 20 10:53:08 2010 -0400 + + Bug 619142 – Build fixes + + - Fix various #include issues + + - Change #error to #warning for the EXTERNAL authentication + mechanism. + It is not clear if this should work on Win32 at all. + + - Call close() before unlink() for the SHA1 keyring + + - Change #error to #warning so we don't forget to do + permission checking of the .dbus-keyrings directory + + - Use Win32 SID for the SHA1 auth mech + + - Apparently we can't use word 'interface' as an identifier + + - Implement a _g_dbus_win32_get_user_sid() function. For now it's + private. Don't know if it should be public somewhere. Maybe in + a future GCredentials support for Win32? I don't know. + + - GFileDescriptorBased is not available on Win32. So avoid using + it in GLocalFile stuff. Now, Win32 still uses GLocalFile + friends + (which works with file descriptors) so expose a private function + to get the fd for an OutputStream so things still work. + + - Fixup gio.symbols + + - Fixup tests/gdbus-peer.c so it builds + + With this, at least things compile and the gdbus-peer.exe test case + passes. Which is a great start. I've tested this by cross-compiling on + a x86_64 Fedora 13 host using mingw32 and running the code on a 32-bit + Windows 7 box. + + https://bugzilla.gnome.org/show_bug.cgi?id=619142 + + Signed-off-by: David Zeuthen + + gio/gdbusaddress.c | 6 ++++ + gio/gdbusauth.c | 8 +++-- + gio/gdbusauthmechanismexternal.c | 4 +-- + gio/gdbusauthmechanismsha1.c | 27 +++++++------- + gio/gdbusconnection.c | 2 ++ + gio/gdbusmessage.c | 20 +++++------ + gio/gdbusmessage.h | 4 +-- + gio/gdbusprivate.c | 76 + ++++++++++++++++++++++++++++++++++++++++ + gio/gdbusprivate.h | 4 +++ + gio/gdbusserver.c | 7 ++++ + gio/gio.symbols | 12 +++++-- + gio/glocalfileinputstream.c | 20 +++++++++-- + gio/glocalfileiostream.c | 8 +++-- + gio/glocalfileoutputstream.c | 30 +++++++++++++--- + gio/glocalfileoutputstream.h | 6 ++++ + gio/tests/Makefile.am | 2 +- + gio/tests/gdbus-peer.c | 18 ++++++++++ + 17 files changed, 208 insertions(+), 46 deletions(-) + +commit 152448cb299cd1b22da585dcd7e86ee6e27e1169 +Author: Ivar Smolin +AuthorDate: Thu May 20 14:56:46 2010 +0300 +Commit: Priit Laes +CommitDate: Thu May 20 14:56:46 2010 +0300 + + Estonian translation updated + + po/et.po | 704 + ++++----------------------------------------------------------- + 1 file changed, 41 insertions(+), 663 deletions(-) + +commit 3b8d0a4ac2df7d055168dff2ca360489adbea563 +Author: Javier Jardón +AuthorDate: Thu May 20 01:55:58 2010 +0200 +Commit: Javier Jardón +CommitDate: Thu May 20 01:59:17 2010 +0200 + + Add G_TYPE_CLASS_GET_PRIVATE macro to docs + + docs/reference/gobject/gobject-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit 2dfc7b0294542954539940955bef1b93a95513e0 +Author: Ryan Lortie +AuthorDate: Wed May 19 17:38:17 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 19 17:38:17 2010 -0400 + + Version bump. + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d4648965e4dee14955ade5eb94221ad5da5f45b8 +Author: Ryan Lortie +AuthorDate: Wed May 19 17:32:42 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 19 17:32:42 2010 -0400 + + Release 2.25.6 + + NEWS | 27 + + po/af.po | 633 ++++++++++++++++++++- + po/am.po | 631 ++++++++++++++++++++- + po/ar.po | 635 ++++++++++++++++++++- + po/as.po | 637 ++++++++++++++++++++- + po/ast.po | 637 ++++++++++++++++++++- + po/az.po | 632 ++++++++++++++++++++- + po/be.po | 652 +++++++++++++++++++++- + po/be@latin.po | 655 +++++++++++++++++++++- + po/bg.po | 637 ++++++++++++++++++++- + po/bn.po | 637 ++++++++++++++++++++- + po/bn_IN.po | 637 ++++++++++++++++++++- + po/bs.po | 632 ++++++++++++++++++++- + po/ca.po | 637 ++++++++++++++++++++- + po/ca@valencia.po | 637 ++++++++++++++++++++- + po/cs.po | 637 ++++++++++++++++++++- + po/cy.po | 634 ++++++++++++++++++++- + po/da.po | 639 ++++++++++++++++++++- + po/de.po | 637 ++++++++++++++++++++- + po/dz.po | 632 ++++++++++++++++++++- + po/el.po | 648 ++++++++++++++++++++- + po/en@shaw.po | 645 ++++++++++++++++++++- + po/en_CA.po | 635 ++++++++++++++++++++- + po/en_GB.po | 637 ++++++++++++++++++++- + po/eo.po | 631 ++++++++++++++++++++- + po/es.po | 1290 +++++++++++++++++++++--------------------- + po/et.po | 637 ++++++++++++++++++++- + po/eu.po | 637 ++++++++++++++++++++- + po/fa.po | 632 ++++++++++++++++++++- + po/fi.po | 637 ++++++++++++++++++++- + po/fr.po | 637 ++++++++++++++++++++- + po/ga.po | 633 ++++++++++++++++++++- + po/gl.po | 1249 +++++++++++++++++++++-------------------- + po/gu.po | 637 ++++++++++++++++++++- + po/he.po | 637 ++++++++++++++++++++- + po/hi.po | 637 ++++++++++++++++++++- + po/hr.po | 632 ++++++++++++++++++++- + po/hu.po | 637 ++++++++++++++++++++- + po/hy.po | 632 ++++++++++++++++++++- + po/id.po | 1608 + ++++++++++++++++++++++++++++++++++++----------------- + po/is.po | 632 ++++++++++++++++++++- + po/it.po | 641 ++++++++++++++++++++- + po/ja.po | 637 ++++++++++++++++++++- + po/ka.po | 633 ++++++++++++++++++++- + po/kn.po | 637 ++++++++++++++++++++- + po/ko.po | 637 ++++++++++++++++++++- + po/ku.po | 631 ++++++++++++++++++++- + po/lt.po | 637 ++++++++++++++++++++- + po/lv.po | 631 ++++++++++++++++++++- + po/mai.po | 634 ++++++++++++++++++++- + po/mg.po | 632 ++++++++++++++++++++- + po/mk.po | 635 ++++++++++++++++++++- + po/ml.po | 637 ++++++++++++++++++++- + po/mn.po | 632 ++++++++++++++++++++- + po/mr.po | 637 ++++++++++++++++++++- + po/ms.po | 632 ++++++++++++++++++++- + po/nb.po | 637 ++++++++++++++++++++- + po/nds.po | 632 ++++++++++++++++++++- + po/ne.po | 632 ++++++++++++++++++++- + po/nl.po | 646 ++++++++++++++++++++- + po/nn.po | 635 ++++++++++++++++++++- + po/oc.po | 631 ++++++++++++++++++++- + po/or.po | 637 ++++++++++++++++++++- + po/pa.po | 637 ++++++++++++++++++++- + po/pl.po | 637 ++++++++++++++++++++- + po/ps.po | 634 ++++++++++++++++++++- + po/pt.po | 637 ++++++++++++++++++++- + po/pt_BR.po | 637 ++++++++++++++++++++- + po/ro.po | 637 ++++++++++++++++++++- + po/ru.po | 637 ++++++++++++++++++++- + po/rw.po | 644 ++++++++++++++++++++- + po/si.po | 633 ++++++++++++++++++++- + po/sk.po | 632 ++++++++++++++++++++- + po/sl.po | 637 ++++++++++++++++++++- + po/sq.po | 669 ++++++++++++++++++++-- + po/sr.po | 637 ++++++++++++++++++++- + po/sr@ije.po | 632 ++++++++++++++++++++- + po/sr@latin.po | 637 ++++++++++++++++++++- + po/sv.po | 637 ++++++++++++++++++++- + po/ta.po | 637 ++++++++++++++++++++- + po/te.po | 637 ++++++++++++++++++++- + po/th.po | 637 ++++++++++++++++++++- + po/tl.po | 632 ++++++++++++++++++++- + po/tr.po | 637 ++++++++++++++++++++- + po/tt.po | 631 ++++++++++++++++++++- + po/uk.po | 637 ++++++++++++++++++++- + po/vi.po | 637 ++++++++++++++++++++- + po/wa.po | 632 ++++++++++++++++++++- + po/xh.po | 632 ++++++++++++++++++++- + po/yi.po | 631 ++++++++++++++++++++- + po/zh_CN.po | 637 ++++++++++++++++++++- + po/zh_HK.po | 637 ++++++++++++++++++++- + po/zh_TW.po | 637 ++++++++++++++++++++- + 93 files changed, 56499 insertions(+), 4314 deletions(-) + +commit caae8ac57a2d24a5de21d1ac6d6122897a418e72 +Author: Ryan Lortie +AuthorDate: Wed May 19 16:02:05 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 19 16:02:05 2010 -0400 + + Add --uninstall option to glib-compile-schemas + + If --uninstall is given then don't give an error if the schema + directory + is empty. Instead, erase the gschemas.compiled file, if it exists. + This is the right thing to do in the 'make uninstall' rule, where the + schema directory could very well be left empty as a result. + + Modify gsettings.m4 to use this option. + + gio/gschema-compile.c | 15 +++++++++++++-- + m4macros/gsettings.m4 | 2 +- + 2 files changed, 14 insertions(+), 3 deletions(-) + +commit b59a5551ecd448187d752d93a06c2298db121ace +Author: Ryan Lortie +AuthorDate: Tue May 18 18:28:39 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed May 19 08:55:57 2010 -0400 + + Bug 619038 - increase gsettings.m4 power + + handle schema checking, installation, uninstallation, cleaning + + docs/reference/gio/migrating-gconf.xml | 21 +++++----- + m4macros/gsettings.m4 | 71 + ++++++++++++++++++++++++---------- + 2 files changed, 61 insertions(+), 31 deletions(-) + +commit 3e3779b7d0edbdfbea38655e353d0723a1b918d5 +Author: Tor Lillqvist +AuthorDate: Wed May 19 10:47:02 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Wed May 19 10:47:02 2010 +0300 + + Make config.h.win32.in match what configure produces + + No semantic changes. + + config.h.win32.in | 20 +++++++++++++++++--- + 1 file changed, 17 insertions(+), 3 deletions(-) + +commit 8eb377b6f6661022a1917b8cd465ed3e52fecf88 +Author: Ryan Lortie +AuthorDate: Tue May 18 18:24:04 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue May 18 18:24:04 2010 -0400 + + glib-compile-schemas rename missed in docs + + change a mention of gschema_compile in the docs + + docs/reference/gio/migrating-gconf.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 257c519ba2ed91f7dfc94d5a07a0cc6c7a3644f1 +Author: Javier Jardón +AuthorDate: Tue May 18 23:45:54 2010 +0200 +Commit: Javier Jardón +CommitDate: Tue May 18 23:45:54 2010 +0200 + + Fix trivial typo in GCredentials code + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=618839 + + gio/gcredentials.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 719e2dcb3b35dbab9cfaa7d0f711b0949b57ad35 +Author: Ryan Lortie +AuthorDate: Tue May 18 17:25:43 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue May 18 17:25:43 2010 -0400 + + Bug 619031 - method-calls-in-thread test failing + + The test was assuming that g_timeout_add() waited for at least the + amount of + time given to it before running the function. This is not the case + -- the + function can be run as much as 1ms early. Make the lower time + bound asserted + in the test more permissive to account for this. + + gio/tests/gdbus-threading.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 6067f9f794954b8545776e14d059a7bb15d99e99 +Author: Ryan Lortie +AuthorDate: Tue May 18 16:43:36 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue May 18 16:43:36 2010 -0400 + + Bug 618839 - Typo at translation message + + Fix trivial typo in GCredentials code + + gio/gcredentials.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 12a8c0f50d72829af4cc436a455396bf5190b40e +Author: Ryan Lortie +AuthorDate: Tue May 18 16:13:58 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue May 18 16:14:50 2010 -0400 + + Add sync method to GSettingsBackend, and pad + + gio/gsettingsbackend.h | 3 +++ + 1 file changed, 3 insertions(+) + +commit 7fcf353325a41b75701688364a497d5790ea83a0 +Author: Ryan Lortie +AuthorDate: Tue May 18 13:43:42 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue May 18 16:14:50 2010 -0400 + + whitespace fix + + gio/gsettingsbackend.h | 56 + +++++++++++++++++++++++++------------------------- + 1 file changed, 28 insertions(+), 28 deletions(-) + +commit 587bdf3f0acfdc46e708214c5201336d81e3307c +Author: Robert Ancell +AuthorDate: Tue May 18 12:01:25 2010 +1000 +Commit: Robert Ancell +CommitDate: Tue May 18 12:01:25 2010 +1000 + + Add missing gunixfdlist.h include in gdbus-example-server.c + + gio/tests/gdbus-example-server.c | 1 + + 1 file changed, 1 insertion(+) + +commit a977f032358325c8ad558f675530569add68daaf +Author: David Zeuthen +AuthorDate: Mon May 17 19:51:49 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon May 17 19:52:09 2010 -0400 + + GDBus: Fix obvious crasher when looking up annotations + + Signed-off-by: David Zeuthen + + gio/gdbusintrospection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 74cafe871c42c21e7485ee7d80257ef987819979 +Author: Fran Diéguez +AuthorDate: Mon May 17 23:59:42 2010 +0200 +Commit: Fran Diéguez +CommitDate: Mon May 17 23:59:42 2010 +0200 + + Updated Galician translations + + po/gl.po | 629 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 607 insertions(+), 22 deletions(-) + +commit a621e0ed10eb8a7c5b89ee1d96ae877908e4d74b +Author: David Zeuthen +AuthorDate: Mon May 17 11:08:53 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon May 17 11:08:53 2010 -0400 + + gdbus(1): Don't fetch props if introspection data indicates none + are available + + Signed-off-by: David Zeuthen + + gio/gdbus-tool.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 98e4f7f6fbd1b8ac889327559a50e4369d064a74 +Author: David Zeuthen +AuthorDate: Mon May 17 11:07:53 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon May 17 11:08:40 2010 -0400 + + GDBus: Fix introspection of objects registered at / + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 799e0242ae31dd66b102342927583f1f34806c54 +Author: Ryan Lortie +AuthorDate: Sun May 16 16:56:36 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon May 17 07:16:37 2010 -0400 + + improve thread safety in GDelayedSettingsBackend + + - hold a lock while accessing the tree of delayed values + - use weak reference counts with the owner object to avoid doing + g_object_notify on a dead object + - dispatch the "has-unapplied" notify to the proper main context + + gio/gdelayedsettingsbackend.c | 128 + +++++++++++++++++++++++++++++++++++------ + gio/gdelayedsettingsbackend.h | 5 +- + gio/gsettings.c | 4 +- + gio/gsettingsbackend.c | 6 +- + gio/gsettingsbackendinternal.h | 2 + + 5 files changed, 121 insertions(+), 24 deletions(-) + +commit 61219e264083184eada5c5ef2795b7c531470704 +Author: Ryan Lortie +AuthorDate: Sun May 16 14:17:34 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon May 17 07:16:37 2010 -0400 + + GSettingsBackend: make signal dispatch threadsafe + + This commit fixes up a few race conditions in the GSettingsBackend, + mostly with + respect to change notifications occuring at the same time as the + last reference + count on a GSettings is dropped. With GDBus feeding us our incoming + signals in + a separate thread, this is something that could easily happen. + + gio/gdelayedsettingsbackend.c | 40 ++-- + gio/gsettings.c | 43 ++--- + gio/gsettingsbackend.c | 410 + +++++++++++++++++++++++++---------------- + gio/gsettingsbackendinternal.h | 26 +-- + 4 files changed, 301 insertions(+), 218 deletions(-) + +commit 4967b6d2ab5a0a83609a825ea113bc75f61bfdb1 +Author: Ryan Lortie +AuthorDate: Sun May 16 18:14:46 2010 +0200 +Commit: Ryan Lortie +CommitDate: Mon May 17 07:16:37 2010 -0400 + + gitignore additions for gdbus, new test cases + + gio/.gitignore | 1 + + gio/tests/.gitignore | 23 ++++++++++++++++++++++- + glib/tests/.gitignore | 1 + + 3 files changed, 24 insertions(+), 1 deletion(-) + +commit 984258c662d3f571fcd0ea415923aec7a3746826 +Author: Ryan Lortie +AuthorDate: Sun May 16 13:02:23 2010 +0200 +Commit: Ryan Lortie +CommitDate: Mon May 17 07:16:37 2010 -0400 + + GSettings: support emitting signals in threads + + The thread-default context that was in effect at the time that the + GSettings was created will be used for emitting signals on that + GSettings. + + gio/gdelayedsettingsbackend.c | 2 +- + gio/gsettings.c | 18 ++++++ + gio/gsettingsbackend.c | 139 + ++++++++++++++++++++++++++++++++++++++++- + gio/gsettingsbackendinternal.h | 2 + + 4 files changed, 159 insertions(+), 2 deletions(-) + +commit 849684e540bb714bc60c2bce3a086e5ffb8933c0 +Author: Ryan Lortie +AuthorDate: Sun May 16 13:03:34 2010 +0200 +Commit: Ryan Lortie +CommitDate: Mon May 17 07:16:37 2010 -0400 + + GSettings tool: work-around GDBus issue + + There is currently no way (near as I can tell) to ensure that + a message + has been sent when using GDBus. If we exit() before we are sure, then + it is very possible that the message isn't sent at all. + This behaviour + was observed when using the GSettings commandline tool with dconf. + + A quick and dirty workaround for now. + + gio/gsettings-tool.c | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +commit 8e060adb2cecb7a801d54e3cbdb0c6eb12f56c12 +Author: Ryan Lortie +AuthorDate: Sun May 16 10:19:46 2010 +0200 +Commit: Ryan Lortie +CommitDate: Mon May 17 07:16:37 2010 -0400 + + intern a key name instead of using strdup() + + gio/gsettings.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit e5440f865d79795061cf5e64d8ed7300222c4a79 +Author: Lin Ma +AuthorDate: Mon May 17 14:42:52 2010 +0800 +Commit: Lin Ma +CommitDate: Mon May 17 14:42:52 2010 +0800 + + Reworked Solaris file event notification for GIO. See + https://defect.opensolaris.org/bz/show_bug.cgi?id=10194 + + Updated copyright. + + gio/fen/Makefile.am | 6 - + gio/fen/fen-data.c | 718 + -------------------------------------- + gio/fen/fen-data.h | 89 ----- + gio/fen/fen-dump.c | 43 +-- + gio/fen/fen-dump.h | 4 +- + gio/fen/fen-helper.c | 326 +++++------------ + gio/fen/fen-helper.h | 13 +- + gio/fen/fen-kernel.c | 775 + +++++++++++++++++++++-------------------- + gio/fen/fen-kernel.h | 35 +- + gio/fen/fen-missing.c | 121 ------- + gio/fen/fen-missing.h | 38 -- + gio/fen/fen-node.c | 762 + ++++++++++++++++++++++++---------------- + gio/fen/fen-node.h | 97 ++++-- + gio/fen/fen-sub.c | 42 --- + gio/fen/fen-sub.h | 39 --- + gio/fen/gfendirectorymonitor.c | 95 +++-- + gio/fen/gfendirectorymonitor.h | 3 + + gio/fen/gfenfilemonitor.c | 32 +- + gio/fen/gfenfilemonitor.h | 3 + + 19 files changed, 1114 insertions(+), 2127 deletions(-) + +commit 794a4a8dbda6b63b15705d689c9785fc07ff7a40 +Author: Jorge González +AuthorDate: Mon May 17 07:41:48 2010 +0200 +Commit: Jorge González +CommitDate: Mon May 17 07:41:48 2010 +0200 + + Updated Spanish translation + + po/es.po | 1648 + +++++++++++++++++++++++++++++++++++++++++++------------------- + 1 file changed, 1142 insertions(+), 506 deletions(-) + +commit 2ec41fad532c046b04b55e0a2b7883b344727c64 +Author: Matthias Clasen +AuthorDate: Sun May 16 13:07:25 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 16 13:08:01 2010 -0400 + + Add GDBus files to POTFILES.in + + po/POTFILES.in | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit d899c57a819685f2a9e66927f040cbdfea8ae572 +Author: Fran Diéguez +AuthorDate: Sun May 16 16:31:25 2010 +0200 +Commit: Fran Diéguez +CommitDate: Sun May 16 16:31:25 2010 +0200 + + Updated Galician translations + + po/gl.po | 1022 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 518 insertions(+), 504 deletions(-) + +commit b298c9430e197ca7f31ecfa0089f51e410bced36 +Author: Andika Triwidada +AuthorDate: Sun May 16 16:30:38 2010 +0700 +Commit: Andika Triwidada +CommitDate: Sun May 16 16:39:01 2010 +0700 + + Updated Indonesian translation + + po/id.po | 1966 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 945 insertions(+), 1021 deletions(-) + +commit 5d379f1c37ee8b5eb7020ebf7165290f5258045e +Author: Sebastian Dröge +AuthorDate: Sat May 15 10:17:35 2010 +0200 +Commit: Sebastian Dröge +CommitDate: Sun May 16 10:22:10 2010 +0200 + + Fix gio tests linking with binutils gold linker + + gio/tests/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit e6c08a458c6b6b6eb12b39593bc356dd2d215aec +Author: Sebastian Dröge +AuthorDate: Sat May 15 10:13:28 2010 +0200 +Commit: Sebastian Dröge +CommitDate: Sun May 16 10:22:10 2010 +0200 + + Fix build of gdbus tool with binutils gold linker + + gio/Makefile.am | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 4b0fd52e52968723ee2a415f0d2fae965aa96867 +Author: Matthias Clasen +AuthorDate: Sat May 15 18:23:23 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 15 18:25:46 2010 -0400 + + Expand information about schema translation + + I have added some hints on how to use intltool for translation + of summary and description elements, taken from comments in bug + #618523. + + docs/reference/gio/migrating-gconf.xml | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +commit 2ad4b2d716220f0ef45bbeb56fb90a7438afa21a +Author: Matthias Clasen +AuthorDate: Sat May 15 18:15:30 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 15 18:16:51 2010 -0400 + + Fix build on !linux + + Don't define __USE_GNU, thats a glibc-internal macro, and + don't use SOL_SOCKET when not including sys/socket.h. + Maybe this file should be called glinuxcredentialsmessage.c... + + Bug #618730 + + gio/gunixcredentialsmessage.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 63d74caabe6f7b85ad13cad922fff239911fb5a0 +Author: Christian Persch +AuthorDate: Sat May 15 11:56:21 2010 +0200 +Commit: Christian Persch +CommitDate: Sat May 15 12:00:38 2010 +0200 + + Use the new option name + + It's --schema-file now, not --schema-files. + Bug #616864. + + m4macros/gsettings.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 50f422b5fd10fd4b709d2c5babce7fdc4987ff36 +Author: Matthias Clasen +AuthorDate: Fri May 14 22:30:19 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 14 22:30:19 2010 -0400 + + Bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5810cce252cc3d42377a0dca9a6d8c0a68eaf031 +Author: Matthias Clasen +AuthorDate: Fri May 14 22:28:46 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 14 22:28:46 2010 -0400 + + 2.25.5 + + po/af.po | 2 +- + po/am.po | 2 +- + po/ar.po | 2 +- + po/as.po | 2 +- + po/ast.po | 2 +- + po/az.po | 2 +- + po/be.po | 2 +- + po/be@latin.po | 2 +- + po/bg.po | 2 +- + po/bn.po | 2 +- + po/bn_IN.po | 2 +- + po/bs.po | 2 +- + po/ca.po | 2 +- + po/ca@valencia.po | 2 +- + po/cs.po | 2 +- + po/cy.po | 2 +- + po/da.po | 2 +- + po/de.po | 2 +- + po/dz.po | 2 +- + po/el.po | 2 +- + po/en@shaw.po | 2 +- + po/en_CA.po | 2 +- + po/en_GB.po | 2 +- + po/eo.po | 2 +- + po/es.po | 1009 + ++++++++++++++++++++++++++--------------------------- + po/et.po | 2 +- + po/eu.po | 2 +- + po/fa.po | 2 +- + po/fi.po | 2 +- + po/fr.po | 2 +- + po/ga.po | 2 +- + po/gl.po | 2 +- + po/gu.po | 2 +- + po/he.po | 2 +- + po/hi.po | 2 +- + po/hr.po | 2 +- + po/hu.po | 2 +- + po/hy.po | 2 +- + po/id.po | 2 +- + po/is.po | 2 +- + po/it.po | 2 +- + po/ja.po | 2 +- + po/ka.po | 2 +- + po/kn.po | 2 +- + po/ko.po | 2 +- + po/ku.po | 2 +- + po/lt.po | 2 +- + po/lv.po | 2 +- + po/mai.po | 2 +- + po/mg.po | 2 +- + po/mk.po | 2 +- + po/ml.po | 2 +- + po/mn.po | 2 +- + po/mr.po | 2 +- + po/ms.po | 2 +- + po/nb.po | 2 +- + po/nds.po | 2 +- + po/ne.po | 2 +- + po/nl.po | 2 +- + po/nn.po | 2 +- + po/oc.po | 2 +- + po/or.po | 2 +- + po/pa.po | 2 +- + po/pl.po | 2 +- + po/ps.po | 2 +- + po/pt.po | 2 +- + po/pt_BR.po | 2 +- + po/ro.po | 2 +- + po/ru.po | 2 +- + po/rw.po | 2 +- + po/si.po | 2 +- + po/sk.po | 2 +- + po/sl.po | 2 +- + po/sq.po | 2 +- + po/sr.po | 2 +- + po/sr@ije.po | 2 +- + po/sr@latin.po | 2 +- + po/sv.po | 2 +- + po/ta.po | 2 +- + po/te.po | 2 +- + po/th.po | 2 +- + po/tl.po | 2 +- + po/tr.po | 2 +- + po/tt.po | 2 +- + po/uk.po | 2 +- + po/vi.po | 2 +- + po/wa.po | 2 +- + po/xh.po | 2 +- + po/yi.po | 2 +- + po/zh_CN.po | 2 +- + po/zh_HK.po | 2 +- + po/zh_TW.po | 2 +- + 92 files changed, 589 insertions(+), 602 deletions(-) + +commit 34020f9dd4f497066ff79c0ab7cc534e21abc66b +Author: Matthias Clasen +AuthorDate: Fri May 14 22:03:03 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 14 22:03:03 2010 -0400 + + Updates + + NEWS | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit 2ed13de1533a1fafaac97be0fdc4154eb84ac35c +Author: Matthias Clasen +AuthorDate: Fri May 14 21:58:08 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 14 21:58:08 2010 -0400 + + Fix issues with GSETTINGS_CHECK_RULE + + Rename the --schema-files option to --schema-file, since it only + accepts one file at a time. Change the GSETTINGS_CHECK_RULE to + use it that way, too. And also make it work better with !srcdir + builds. + + Bugs #616731 and #616864 + + gio/gschema-compile.c | 2 +- + gio/tests/gschema-compile.c | 2 +- + m4macros/gsettings.m4 | 5 ++--- + 3 files changed, 4 insertions(+), 5 deletions(-) + +commit 763c1dab1f2c92526330425d77211b704668a3a3 +Author: David Zeuthen +AuthorDate: Fri May 14 21:08:01 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri May 14 21:08:01 2010 -0400 + + GDBus: Use specific variant type in GetAll() + + Without this fix, we segfault if the exported object returned an error + on all get_property() calls (in reality, this never happens). + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4baf104f0a369348185a2e2c9fdebc1423ec7f8e +Author: David Zeuthen +AuthorDate: Fri May 14 20:52:15 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri May 14 20:52:15 2010 -0400 + + GDBus: Fix a double free + + Fix an unintentional double free introduced in commit + 4ad4c306c3b80620185cf975b402e17a6174aea9. + + This bug manifested itself when trying to complete this + + $ gdbus introspect --system --dest + + gio/gdbus-tool.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 661e5ea69f2d370af6e4e9c73242cf158414dd5d +Author: Christian Persch +AuthorDate: Fri May 14 20:07:15 2010 +0200 +Commit: Christian Persch +CommitDate: Sat May 15 00:12:18 2010 +0200 + + Plug mem leaks in gdbus tests & examples + + Use "&s" instead of "s", and free the variant iters after use. + + Bug #618663. + + gio/tests/gdbus-example-peer.c | 4 ++-- + gio/tests/gdbus-example-proxy-subclass.c | 12 +++--------- + gio/tests/gdbus-example-server.c | 2 +- + gio/tests/gdbus-example-subtree.c | 6 +++--- + gio/tests/gdbus-example-watch-proxy.c | 12 ++++-------- + gio/tests/gdbus-export.c | 8 +++----- + gio/tests/gdbus-introspection.c | 2 +- + gio/tests/gdbus-peer.c | 8 ++++---- + gio/tests/gdbus-proxy.c | 2 +- + 9 files changed, 22 insertions(+), 34 deletions(-) + +commit 60c53fef4788d4773704cb1affd2fb0f4d1d8830 +Author: Christian Persch +AuthorDate: Fri May 14 18:21:01 2010 +0200 +Commit: Christian Persch +CommitDate: Sat May 15 00:12:18 2010 +0200 + + Plug a mem leak in gdbusauth + + From valgrind running gdbus-peer test: + + ==20513== 32 bytes in 1 blocks are definitely lost in loss record + 1 of 15 + ==20513== at 0x4024E4C: realloc (vg_replace_malloc.c:429) + ==20513== by 0x4079BB1: g_realloc (gmem.c:174) + ==20513== by 0x4099472: g_string_maybe_expand (gstring.c:396) + ==20513== by 0x409A42A: g_string_insert_c (gstring.c:1050) + ==20513== by 0x42169AC: g_string_append_c_inline (gstring.h:153) + ==20513== by 0x421682C: _my_g_input_stream_read_line_safe + (gdbusauth.c:336) + ==20513== by 0x421843E: _g_dbus_auth_run_server (gdbusauth.c:1265) + ==20513== by 0x4222B94: initable_init (gdbusconnection.c:1783) + ==20513== by 0x41CF8D5: g_initable_init (ginitable.c:106) + ==20513== by 0x41CFA8D: g_initable_new_valist (ginitable.c:219) + ==20513== by 0x41CF920: g_initable_new (ginitable.c:139) + ==20513== by 0x4223479: g_dbus_connection_new_sync + (gdbusconnection.c:2046) + + Bug #618650. + + gio/gdbusauth.c | 1 + + 1 file changed, 1 insertion(+) + +commit 5bc9d43288d4991b9c3ef1fc38d231113b633ec7 +Author: Christian Persch +AuthorDate: Fri May 14 14:27:08 2010 +0200 +Commit: Christian Persch +CommitDate: Sat May 15 00:12:17 2010 +0200 + + Plug mem leak in g_dbus_address_get_stream_sync + + ==6279== 21,615 (4,708 direct, 16,907 indirect) bytes in 169 + blocks are + definitely lost in loss record 12 of 13 + ==6279== at 0x4024D2E: malloc (vg_replace_malloc.c:207) + ==6279== by 0x4079A90: g_malloc (gmem.c:135) + ==6279== by 0x4079DC8: g_malloc_n (gmem.c:252) + ==6279== by 0x4097E66: g_strsplit (gstrfuncs.c:2434) + ==6279== by 0x42169A2: g_dbus_address_get_stream_sync + (gdbusaddress.c:875) + + Bug #618622. + + gio/gdbusaddress.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit dc39825aa3b1556e57460df1cca0b764a5741a66 +Author: Christian Persch +AuthorDate: Fri May 14 14:22:45 2010 +0200 +Commit: Christian Persch +CommitDate: Sat May 15 00:12:17 2010 +0200 + + Plug a mem leak in get_uninitialized_connection + + Free the bus address after creating the singleton. + + ==26308== 39,736 (10,517 direct, 29,219 indirect) bytes in 388 blocks + are definitely lost in loss record 14 of 15 + ==26308== at 0x4024D2E: malloc (vg_replace_malloc.c:207) + ==26308== by 0x4079A90: g_malloc (gmem.c:135) + ==26308== by 0x4079DC8: g_malloc_n (gmem.c:252) + ==26308== by 0x4095607: g_strdup (gstrfuncs.c:102) + ==26308== by 0x4216B9A: g_dbus_address_get_for_bus_sync + (gdbusaddress.c:961) + ==26308== by 0x422A7AE: get_uninitialized_connection + (gdbusconnection.c:5241) + + Bug #618622. + + gio/gdbusconnection.c | 1 + + 1 file changed, 1 insertion(+) + +commit 5b2c7f10bd5a42d2956b53b13f3aabb947f901dd +Author: Christian Persch +AuthorDate: Fri May 14 14:15:42 2010 +0200 +Commit: Christian Persch +CommitDate: Sat May 15 00:12:17 2010 +0200 + + Plug mem leaks in parse_value_from_blob + + The result of read_string() was leaked. + + Bug #618615. + + gio/gdbusmessage.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 0a7c0ac74bd55d06265e9441c5728119adc254ab +Author: Christian Persch +AuthorDate: Fri May 14 18:08:29 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 14 18:08:29 2010 -0400 + + Plug a mem leak + + This code leaked the return value of g_variant_get_child_value(); + use g_variant_get() instead and free the iter when done. + + gio/gdbusproxy.c | 22 +++++++++------------- + 1 file changed, 9 insertions(+), 13 deletions(-) + +commit ddc94bd0a65a17471e50d0c659d9c59a1804c3f1 +Author: David Zeuthen +AuthorDate: Fri May 14 12:55:25 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri May 14 12:56:09 2010 -0400 + + GDBus: Remove cached value if a property is invalidated + + Also add a test case to catch this. + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 6 ++++++ + gio/tests/gdbus-proxy.c | 36 ++++++++++++++++++++++++++++++++++++ + gio/tests/gdbus-testserver.py | 16 ++++++++++++++++ + 3 files changed, 58 insertions(+) + +commit bb6530eb34a16cbf34ce130c21071a25666a704b +Author: David Zeuthen +AuthorDate: Fri May 14 12:49:51 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri May 14 12:56:09 2010 -0400 + + GDBus: Fix serialization of empty arrays + + It turns out that we didn't observe padding (neither when reading nor + writing) for empty arrays which (apparently) is needed according to + the D-Bus spec and reference implementation. A simple test case to + provoke this behavior is as follows (notice the lack of 4 bytes worth + of padding at position 0x0064): + + Error calling dbus_message_demarshal() on this blob: + org.freedesktop.DBus.Error.InvalidArgs: Message is corrupted + (Alignment padding not null) + 0000: 6c 01 00 01 2e 00 00 00 41 00 00 00 37 00 00 00 + l.......A...7... + 0010: 08 01 67 00 08 73 61 7b 73 76 7d 61 73 00 00 00 + ..g..sa{sv}as... + 0020: 01 01 6f 00 08 00 00 00 2f 66 6f 6f 2f 62 61 72 + ..o...../foo/bar + 0030: 00 00 00 00 00 00 00 00 03 01 73 00 06 00 00 00 + ..........s..... + 0040: 4d 65 6d 62 65 72 00 00 11 00 00 00 30 31 32 33 + Member......0123 + 0050: 34 35 36 37 38 39 30 31 32 33 34 35 36 00 00 00 + 4567890123456... + 0060: 00 00 00 00 0e 00 00 00 09 00 00 00 53 6f 6d 65 + ............Some + 0070: 74 68 69 6e 67 00 thing. + + The blob was generated from the following GVariant value: + ('01234567890123456', @a{sv} {}, ['Something']) + + If the blob was encoded using DBusMessageIter, the payload would + have been: + + 0000: 6c 01 00 01 32 00 00 00 41 00 00 00 36 00 00 00 + l...2...A...6... + 0010: 01 01 6f 00 08 00 00 00 2f 66 6f 6f 2f 62 61 72 + ..o...../foo/bar + 0020: 00 00 00 00 00 00 00 00 03 01 73 00 06 00 00 00 + ..........s..... + 0030: 4d 65 6d 62 65 72 00 00 08 01 67 00 08 73 61 7b + Member....g..sa{ + 0040: 73 76 7d 61 73 00 00 00 11 00 00 00 30 31 32 33 + sv}as.......0123 + 0050: 34 35 36 37 38 39 30 31 32 33 34 35 36 00 00 00 + 4567890123456... + 0060: 00 00 00 00 00 00 00 00 0e 00 00 00 09 00 00 00 + ................ + 0070: 53 6f 6d 65 74 68 69 6e 67 00 + Something. + ** ERROR:gdbus-serialization.c:547:check_serialization: code should + not be reached + Aborted + + and this is now in the libdbus-1-using serialization test case. + + Signed-off-by: David Zeuthen + + gio/gdbusmessage.c | 680 + +++++++++++++++++++++++++--------------- + gio/tests/gdbus-serialization.c | 12 + + 2 files changed, 439 insertions(+), 253 deletions(-) + +commit 285a124608b28ca62db7350632a48bd9257038c0 +Author: Jorge González +AuthorDate: Fri May 14 17:55:37 2010 +0200 +Commit: Jorge González +CommitDate: Fri May 14 17:55:37 2010 +0200 + + Updated Spanish translation + + po/es.po | 1026 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 521 insertions(+), 505 deletions(-) + +commit 02af71c7ff9689a75069b0a7bc84349dac0b13b4 +Author: Matthias Clasen +AuthorDate: Fri May 14 11:49:15 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 14 11:49:15 2010 -0400 + + bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cff9d83f75b90301909f2c7d46a16e5f618e3e0b +Author: Matthias Clasen +AuthorDate: Fri May 14 11:25:11 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 14 11:47:00 2010 -0400 + + 2.25.4 + + po/af.po | 184 +++++---- + po/am.po | 184 +++++---- + po/ar.po | 184 +++++---- + po/as.po | 184 +++++---- + po/ast.po | 184 +++++---- + po/az.po | 184 +++++---- + po/be.po | 186 +++++---- + po/be@latin.po | 186 +++++---- + po/bg.po | 184 +++++---- + po/bn.po | 184 +++++---- + po/bn_IN.po | 184 +++++---- + po/bs.po | 184 +++++---- + po/ca.po | 184 +++++---- + po/ca@valencia.po | 184 +++++---- + po/cs.po | 184 +++++---- + po/cy.po | 184 +++++---- + po/da.po | 184 +++++---- + po/de.po | 184 +++++---- + po/dz.po | 184 +++++---- + po/el.po | 184 +++++---- + po/en@shaw.po | 1121 + +++++++++++++++++++++++++++-------------------------- + po/en_CA.po | 184 +++++---- + po/en_GB.po | 184 +++++---- + po/eo.po | 184 +++++---- + po/es.po | 1027 ++++++++++++++++++++++++------------------------ + po/et.po | 184 +++++---- + po/eu.po | 184 +++++---- + po/fa.po | 184 +++++---- + po/fi.po | 184 +++++---- + po/fr.po | 184 +++++---- + po/ga.po | 184 +++++---- + po/gl.po | 1024 ++++++++++++++++++++++++------------------------ + po/gu.po | 184 +++++---- + po/he.po | 184 +++++---- + po/hi.po | 184 +++++---- + po/hr.po | 184 +++++---- + po/hu.po | 184 +++++---- + po/hy.po | 184 +++++---- + po/id.po | 184 +++++---- + po/is.po | 184 +++++---- + po/it.po | 184 +++++---- + po/ja.po | 184 +++++---- + po/ka.po | 184 +++++---- + po/kn.po | 184 +++++---- + po/ko.po | 184 +++++---- + po/ku.po | 184 +++++---- + po/lt.po | 184 +++++---- + po/lv.po | 184 +++++---- + po/mai.po | 184 +++++---- + po/mg.po | 184 +++++---- + po/mk.po | 184 +++++---- + po/ml.po | 184 +++++---- + po/mn.po | 184 +++++---- + po/mr.po | 184 +++++---- + po/ms.po | 184 +++++---- + po/nb.po | 1024 ++++++++++++++++++++++++------------------------ + po/nds.po | 184 +++++---- + po/ne.po | 184 +++++---- + po/nl.po | 185 +++++---- + po/nn.po | 184 +++++---- + po/oc.po | 184 +++++---- + po/or.po | 184 +++++---- + po/pa.po | 184 +++++---- + po/pl.po | 184 +++++---- + po/ps.po | 184 +++++---- + po/pt.po | 184 +++++---- + po/pt_BR.po | 184 +++++---- + po/ro.po | 184 +++++---- + po/ru.po | 184 +++++---- + po/rw.po | 186 +++++---- + po/si.po | 184 +++++---- + po/sk.po | 184 +++++---- + po/sl.po | 184 +++++---- + po/sq.po | 192 +++++---- + po/sr.po | 184 +++++---- + po/sr@ije.po | 184 +++++---- + po/sr@latin.po | 184 +++++---- + po/sv.po | 184 +++++---- + po/ta.po | 184 +++++---- + po/te.po | 184 +++++---- + po/th.po | 184 +++++---- + po/tl.po | 184 +++++---- + po/tr.po | 184 +++++---- + po/tt.po | 184 +++++---- + po/uk.po | 184 +++++---- + po/vi.po | 184 +++++---- + po/wa.po | 184 +++++---- + po/xh.po | 184 +++++---- + po/yi.po | 184 +++++---- + po/zh_CN.po | 184 +++++---- + po/zh_HK.po | 184 +++++---- + po/zh_TW.po | 184 +++++---- + 92 files changed, 11669 insertions(+), 8734 deletions(-) + +commit c57c61c930896f278de61de170e57affc243e427 +Author: Ryan Lortie +AuthorDate: Fri May 14 17:06:24 2010 +0200 +Commit: Ryan Lortie +CommitDate: Fri May 14 17:08:01 2010 +0200 + + fix glaring inaccuracy in GVariant docs + + glib/gvariant.c | 12 ++++-------- + 1 file changed, 4 insertions(+), 8 deletions(-) + +commit ee9b16242c2f1e5e29170a8885fd146d44f83197 +Author: Matthias Clasen +AuthorDate: Fri May 14 10:49:03 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 14 10:49:03 2010 -0400 + + another !srcdir build fix + + gio/tests/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 159f533abf9e653fa31dba5b3c12f024165c29db +Author: Matthias Clasen +AuthorDate: Fri May 14 10:25:31 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 14 10:25:31 2010 -0400 + + More !srcdir build fixes + + gio/tests/gdbus-introspection.c | 2 +- + gio/tests/gdbus-threading.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit d8d1a02c556ed9fc4c436888c965bc8dee62ad81 +Author: Ryan Lortie +AuthorDate: Fri May 14 15:30:33 2010 +0200 +Commit: Ryan Lortie +CommitDate: Fri May 14 15:31:14 2010 +0200 + + include gunixcredentialsmessage from unixsocket + + fixes a build issue + + gio/gunixconnection.c | 1 + + 1 file changed, 1 insertion(+) + +commit 1d22b64843c83631bcd0e5255930f3a4e990961e +Author: Matthias Clasen +AuthorDate: Fri May 14 08:38:07 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 14 08:38:07 2010 -0400 + + Cleanups + + Sort #includes a bit better, and don't include platform-specific + headers in gio.h. + + gio/gcredentials.c | 9 +++++---- + gio/gdbus-tool.c | 4 ++-- + gio/gdbusauth.c | 11 ++++++----- + gio/gdbusauthmechanismexternal.c | 9 ++++----- + gio/gdbusauthmechanismsha1.c | 18 ++++++++---------- + gio/gdbusconnection.c | 10 ++++++---- + gio/gdbusmessage.c | 11 ++++++----- + gio/gdbusprivate.c | 8 ++------ + gio/gdbusproxywatching.c | 1 - + gio/gdbusserver.c | 4 +++- + gio/gio.h | 1 - + 11 files changed, 42 insertions(+), 44 deletions(-) + +commit 054079899128cfc4a9e50a3750d927724604eedb +Author: Matthias Clasen +AuthorDate: Fri May 14 01:36:25 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 14 01:36:25 2010 -0400 + + Fix !srcdir build + + Thankfully we already had a SRCDIR define. + + gio/tests/gdbus-proxy.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c6f01b329c0d6488d15223c0d8bf286d8ff444a5 +Author: Matthias Clasen +AuthorDate: Fri May 14 00:59:42 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 14 00:59:42 2010 -0400 + + Fix a typo + + docs/reference/gio/gio-sections.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 45cad58b4611aa6678f50a4545cb3b14b24b9c39 +Author: Matthias Clasen +AuthorDate: Fri May 14 00:51:51 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 14 00:51:51 2010 -0400 + + Updates + + NEWS | 34 ++++++++++++++++++++++++++++++++++ + 1 file changed, 34 insertions(+) + +commit 4e7764fb2d843fbc89847036a3d8fcb47edf9c4d +Author: Matthias Clasen +AuthorDate: Fri May 14 00:21:39 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri May 14 00:21:39 2010 -0400 + + Documentation cleanups + + docs/reference/gio/Makefile.am | 7 +++++ + docs/reference/gio/gio-sections.txt | 61 + ++++++++++++++++++++++++++++--------- + gio/giotypes.h | 1 - + gio/gunixcredentialsmessage.c | 1 + + 4 files changed, 54 insertions(+), 16 deletions(-) + +commit 6223341cacc7dfa34a8d60ec1b4828382dee6d07 +Merge: a7c4c7d 6e8637e +Author: Matthias Clasen +AuthorDate: Thu May 13 23:08:34 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 13 23:08:34 2010 -0400 + + Merge branch 'gdbus-merge' + + Conflicts: + docs/reference/gio/gio-docs.xml + docs/reference/gio/gio-sections.txt + gio/tests/Makefile.am + +commit a7c4c7de58a48c179e4dc3336814f63c33ad07ff +Author: Matthias Clasen +AuthorDate: Tue May 11 12:48:22 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 13 22:34:32 2010 -0400 + + Remove a reference to Pango + + docs/reference/gio/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6e8637e4783ae4e573f6784f005920930d9fca87 +Author: Matthias Clasen +AuthorDate: Thu May 13 22:15:47 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 13 22:15:47 2010 -0400 + + The default timeout is 25s + + gio/gdbusconnection.c | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +commit bdc29f82d39619747ac564918e041181b26449ee +Author: Matthias Clasen +AuthorDate: Thu May 13 21:53:51 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 13 21:53:51 2010 -0400 + + Document more floating variant details. + + gio/gdbusconnection.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit e72f7f52de9e482eb9d5dd1c47eb0d1bea5f4631 +Author: Matthias Clasen +AuthorDate: Thu May 13 21:45:18 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 13 21:45:18 2010 -0400 + + Add some more details to the long description + + gio/gdbusproxy.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit 8f89b63930181696a3f4a9c441ffd97230577d64 +Author: Matthias Clasen +AuthorDate: Thu May 13 20:29:04 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 13 20:29:04 2010 -0400 + + Clean up platform-specific includes + + The problem was pointed out in bug 618029. To solve it, we moved + the GUnixFDList typedef to giotypes.h. + + gio/gdbusmessage.c | 2 ++ + gio/gdbusmessage.h | 6 ------ + gio/giotypes.h | 1 + + gio/gunixfdlist.h | 3 +-- + gio/gunixfdmessage.c | 1 + + gio/gunixfdmessage.h | 2 +- + gio/tests/gdbus-example-unix-fd-client.c | 1 + + gio/tests/gdbus-peer.c | 1 + + 8 files changed, 8 insertions(+), 9 deletions(-) + +commit 62c0454b34191b56d439521e537915b0514f8dbb +Author: Ryan Lortie +AuthorDate: Fri May 14 01:54:30 2010 +0200 +Commit: Ryan Lortie +CommitDate: Fri May 14 01:55:46 2010 +0200 + + documentation for glib-mkenums @valuenum@ + + docs/reference/gobject/glib-mkenums.1 | 24 ++++++++++++++++++++++-- + docs/reference/gobject/glib-mkenums.xml | 12 ++++++++++++ + 2 files changed, 34 insertions(+), 2 deletions(-) + +commit e1fb92551f7be3dbaad9d9a5c80dc30ed7b83048 +Author: Ryan Lortie +AuthorDate: Tue May 11 19:48:19 2010 +0200 +Commit: Ryan Lortie +CommitDate: Fri May 14 01:01:40 2010 +0200 + + check for working gettext() before running tests + + gio/tests/gsettings.c | 31 +++++++++++++++++++++++-------- + 1 file changed, 23 insertions(+), 8 deletions(-) + +commit 1165007023bf34c5624574703acd2d183b1d14f5 +Author: Ryan Lortie +AuthorDate: Fri May 14 00:53:42 2010 +0200 +Commit: Ryan Lortie +CommitDate: Fri May 14 00:53:59 2010 +0200 + + Add configure check for memmem() + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dd3551e7c3ae5e6e8b21dd77ce09d72b799e7b1d +Author: David Zeuthen +AuthorDate: Thu May 13 18:19:16 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 13 18:19:16 2010 -0400 + + GDBus: update gdbus(1) man page + + docs/reference/gio/gdbus.xml | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +commit 68078ed648eec314507ff997e89b053a1d9a6891 +Author: David Zeuthen +AuthorDate: Thu May 13 18:04:48 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 13 18:04:48 2010 -0400 + + GDBus: Nuke G_BUS_TYPE_NONE + + gio/gdbusnameowning.c | 1 - + gio/gdbusnamewatching.c | 1 - + gio/gdbusproxywatching.c | 3 +-- + gio/gioenums.h | 12 +++++------- + gio/tests/gdbus-peer.c | 1 - + 5 files changed, 6 insertions(+), 12 deletions(-) + +commit 1fd55b8bbfe58adb749d4eee68ca5a71e56e6f82 +Author: David Zeuthen +AuthorDate: Thu May 13 17:44:42 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 13 17:44:42 2010 -0400 + + GDBus: Remove g_dbus_is_activated() + + It's generally hard to get this right so don't attempt to do so. + + docs/reference/gio/gio-sections.txt | 1 - + gio/gdbusutils.c | 20 -------------------- + gio/gdbusutils.h | 2 -- + gio/gio.symbols | 1 - + 4 files changed, 24 deletions(-) + +commit 51446baa52e8cebea57124eb99a32e77a13b1551 +Author: David Zeuthen +AuthorDate: Thu May 13 17:20:39 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 13 17:20:39 2010 -0400 + + GDBus: subscribe to PropertiesChanged() before calling GetAll() + + Otherwise there's a slight chance of a race. + + gio/gdbusproxy.c | 35 ++++++++++++++++++++--------------- + 1 file changed, 20 insertions(+), 15 deletions(-) + +commit 0e2c708bb298c98c136d507427e7b731b5cbd962 +Author: David Zeuthen +AuthorDate: Thu May 13 17:10:15 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 13 17:10:15 2010 -0400 + + GDBus: Don't take a GError for + g_dbus_proxy_get_cached_property_names() + + We stopped doing this for get_cached_property() so no reason to do it + here. + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 29 +++++++++-------------------- + gio/gdbusproxy.h | 3 +-- + gio/tests/gdbus-example-watch-proxy.c | 2 +- + 3 files changed, 11 insertions(+), 23 deletions(-) + +commit 3ca28ef718d402bd65cd9f291c67b299f1ef74cf +Author: David Zeuthen +AuthorDate: Thu May 13 16:57:29 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 13 16:57:29 2010 -0400 + + GDBus: Update docs for GDBusProxy::g-properties-changed signal + + Also update the example. See + + https://bugzilla.gnome.org/show_bug.cgi?id=618559 + + for more details. + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 10 +++++----- + gio/tests/gdbus-example-watch-proxy.c | 7 +++++-- + 2 files changed, 10 insertions(+), 7 deletions(-) + +commit e3f5d3c00595ca017d83015fa2b9832d1c87828f +Author: Christian Persch +AuthorDate: Thu May 13 19:01:04 2010 +0200 +Commit: David Zeuthen +CommitDate: Thu May 13 16:46:18 2010 -0400 + + Make GVariant handling in PropertiesChanged more efficient + + There's no need to re-build the a{sv} array, just get it right out of + the parameters. Also avoid some string copies. + + Signed-off-by: David Zeuthen + + gio/gdbusproxy.c | 82 + +++++++++++--------------------------------------------- + 1 file changed, 16 insertions(+), 66 deletions(-) + +commit 4ad4c306c3b80620185cf975b402e17a6174aea9 +Author: Christian Persch +AuthorDate: Thu May 13 19:20:26 2010 +0200 +Commit: David Zeuthen +CommitDate: Thu May 13 16:43:41 2010 -0400 + + Plug some mem leaks + + g_variant_get (v, "s", &str) returns a string copy; use "&s" instead. + + Signed-off-by: David Zeuthen + + gio/gdbus-tool.c | 20 ++++++++++---------- + gio/gdbusconnection.c | 22 ++++++++++------------ + gio/gdbusmessage.c | 2 +- + gio/gdbusnameowning.c | 4 ++-- + gio/gdbusnamewatching.c | 4 ++-- + gio/gdbusproxy.c | 4 ++-- + 6 files changed, 27 insertions(+), 29 deletions(-) + +commit 60e7ae26af2fc31d59e36f8798d383fa9d87db92 +Author: David Zeuthen +AuthorDate: Thu May 13 16:32:11 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 13 16:32:11 2010 -0400 + + GDBus: Add GDBusAuthObserver param in + g_dbus_connection_new_for_address() + + This is to match g_dbus_connection_new(). This extension allows us to + extend GDBusAuthObserver to also be used in client-side authentication + in the future (right now it's only used on the server-side). + + gio/gdbus-tool.c | 1 + + gio/gdbusconnection.c | 18 ++++++++++++++---- + gio/gdbusconnection.h | 2 ++ + gio/tests/gdbus-example-peer.c | 1 + + gio/tests/gdbus-peer.c | 4 ++++ + gio/tests/gdbus-tests.c | 1 + + 6 files changed, 23 insertions(+), 4 deletions(-) + +commit cb753dfd496ae70b069c1698da8211c454953f08 +Author: David Zeuthen +AuthorDate: Thu May 13 16:20:31 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 13 16:20:31 2010 -0400 + + GDBus: Rename ::deny-authentication-peer to + ::authorize-authenticated-peer + + docs/reference/gio/gio-sections.txt | 2 +- + gio/gdbusauth.c | 8 ++-- + gio/gdbusauthobserver.c | 74 + ++++++++++++++++++++++--------------- + gio/gdbusauthobserver.h | 18 ++++----- + gio/gdbusconnection.c | 2 - + gio/gio.symbols | 2 +- + gio/tests/gdbus-peer.c | 20 +++++----- + 7 files changed, 70 insertions(+), 56 deletions(-) + +commit 9e90b381f58c4a06f49e622a07ee0b56fb52b3f1 +Author: Matthias Clasen +AuthorDate: Thu May 13 14:25:29 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 13 14:29:39 2010 -0400 + + Remove the credentials argument from g_unix_connect_send_credentials() + + Instead, make it always send the current credentials. + + gio/gdbusauth.c | 3 +-- + gio/gunixconnection.c | 16 +++++++--------- + gio/gunixconnection.h | 1 - + 3 files changed, 8 insertions(+), 12 deletions(-) + +commit 33952347ff9bc2875e7e1a2709566b38fc391bda +Author: David Zeuthen +AuthorDate: Thu May 13 14:01:41 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 13 14:03:58 2010 -0400 + + GDBus: Make message serialization routines take capabilities param + + This is needed to e.g. allow encoding maybe types (once we add + G_DBUS_CAPABILITY_FLAGS_MAYBE_TYPES) if, and only if, that capability + has been negotiated with the peer (via authentication). + + gio/gdbusconnection.c | 1 + + gio/gdbusmessage.c | 26 +++++++++++++++++--------- + gio/gdbusmessage.h | 2 ++ + gio/gdbusprivate.c | 1 + + gio/tests/gdbus-serialization.c | 6 +++++- + 5 files changed, 26 insertions(+), 10 deletions(-) + +commit 107b4d4bae7dba4281bfaa0bef827f7b2376946a +Author: Matthias Clasen +AuthorDate: Thu May 13 13:09:58 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 13 13:09:58 2010 -0400 + + remove the redundant interface_name parameter + + gio/gdbusconnection.c | 12 +++++------- + gio/gdbusconnection.h | 1 - + gio/tests/gdbus-example-export.c | 1 - + gio/tests/gdbus-example-peer.c | 1 - + gio/tests/gdbus-example-server.c | 1 - + gio/tests/gdbus-export.c | 12 ------------ + gio/tests/gdbus-peer.c | 2 -- + 7 files changed, 5 insertions(+), 25 deletions(-) + +commit 82158afdadd10e6ffd1540f695931f64957b59f6 +Author: David Zeuthen +AuthorDate: Thu May 13 11:56:15 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 13 11:56:15 2010 -0400 + + GDBus: Catch up with new PropertiesChanged signal + + After a long discussion, this has finally been standardized in the + D-Bus spec. See + + http://lists.freedesktop.org/archives/dbus/2010-May/012667.html + http://lists.freedesktop.org/archives/dbus/2010-May/012712.html + + Signed-off-by: David Zeuthen + + gio/gdbusconnection.c | 1 + + gio/gdbusproxy.c | 74 + ++++++++++++++++++++++++++------ + gio/gdbusproxy.h | 13 +++--- + gio/gio-marshal.list | 1 + + gio/tests/gdbus-example-export.c | 7 ++- + gio/tests/gdbus-example-proxy-subclass.c | 34 ++++++++------- + gio/tests/gdbus-example-server.c | 12 ++++-- + gio/tests/gdbus-example-watch-proxy.c | 57 ++++++++++++++---------- + gio/tests/gdbus-testserver.py | 1 + + 9 files changed, 137 insertions(+), 63 deletions(-) + +commit 2d75583fb2a8fdb71b9ee880dc0cf4605ab7bc6c +Author: Matthias Clasen +AuthorDate: Thu May 13 01:04:29 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 13 01:04:29 2010 -0400 + + Fill out the export section of the migration guide + + docs/reference/gio/migrating-gdbus.xml | 66 + ++++++++++++++++++++++++++++++++++ + gio/tests/gdbus-example-export.c | 6 ++-- + 2 files changed, 70 insertions(+), 2 deletions(-) + +commit 195cdcfabf962989f2bcc8c225a287517d7eacd9 +Author: Thomas Thurman +AuthorDate: Thu May 13 00:51:30 2010 -0400 +Commit: Thomas Thurman +CommitDate: Thu May 13 00:51:30 2010 -0400 + + Update Shavian transliteration + + po/en@shaw.po | 128 + +++++++++++++++++++++------------------------------------- + 1 file changed, 47 insertions(+), 81 deletions(-) + +commit 9a065edf6f51be2ad189cfb02ddd2c806b656303 +Author: Matthias Clasen +AuthorDate: Thu May 13 00:39:26 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 13 00:40:41 2010 -0400 + + Add an example of exporting a GObject + + This is more manual work than dbus-glib. + + gio/gdbusconnection.c | 2 + + gio/tests/Makefile.am | 4 + + gio/tests/gdbus-example-export.c | 331 + +++++++++++++++++++++++++++++++++++++++ + 3 files changed, 337 insertions(+) + +commit ea1e0496b0329147b932d5a1486f5a81b4121651 +Author: David Zeuthen +AuthorDate: Wed May 12 23:12:14 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed May 12 23:12:14 2010 -0400 + + GDBus: add 'monitor' verb to gdbus(1) + + This uncovered a bug in name watching if the name wasn't activatable. + + Also provoked the need for on_connection variants of g_bus_watch_name + (added g_bus_watch_proxy's variant as well). + + docs/reference/gio/gdbus.xml | 43 ++++++ + docs/reference/gio/gio-sections.txt | 2 + + gio/gdbus-tool.c | 253 + +++++++++++++++++++++++++++++++++++- + gio/gdbusnamewatching.c | 69 +++++++++- + gio/gdbusnamewatching.h | 23 ++-- + gio/gdbusproxywatching.c | 86 ++++++++++++ + gio/gdbusproxywatching.h | 35 +++-- + gio/gio.symbols | 2 + + 8 files changed, 489 insertions(+), 24 deletions(-) + +commit 9695c23d4c29e79afbe14e3584b6c42e98e8f0d9 +Author: David Zeuthen +AuthorDate: Wed May 12 22:09:18 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed May 12 22:11:18 2010 -0400 + + GDBus: Make gdbus(1) print annotations when introspecting data + + Also make the gdbus-example-server include some example + annotations. The output looks like this: + + $ gdbus introspect --session --dest org.gtk.GDBus.TestServer + --object-path /org/gtk/GDBus/TestObject + node /org/gtk/GDBus/TestObject { + interface org.freedesktop.DBus.Properties { + methods: + Get(in s interface_name, + in s property_name, + out v value); + GetAll(in s interface_name, + out a{sv} properties); + Set(in s interface_name, + in s property_name, + in v value); + signals: + PropertiesChanged(s interface_name, + a{sv} changed_properties); + }; + interface org.freedesktop.DBus.Introspectable { + methods: + Introspect(out s xml_data); + }; + interface org.freedesktop.DBus.Peer { + methods: + Ping(); + GetMachineId(out s machine_uuid); + }; + @org.gtk.GDBus.Annotation("OnInterface") + @org.gtk.GDBus.Annotation("AlsoOnInterface") + interface org.gtk.GDBus.TestInterface { + methods: + @org.gtk.GDBus.Annotation("OnMethod") + HelloWorld(in s greeting, + out s response); + EmitSignal(@org.gtk.GDBus.Annotation.("OnArg") + in d speed_in_mph); + GimmeStdout(); + signals: + @org.gtk.GDBus.Annotation("Onsignal") + VelocityChanged(d speed_in_mph, + @org.gtk.GDBus.Annotation.("OnArg_NonFirst") + s speed_as_string); + properties: + @org.gtk.GDBus.Annotation("OnProperty") + @org.gtk.GDBus.Annotation("OnAnnotation_YesThisIsCrazy") + readonly s FluxCapicitorName = 'DeLorean'; + readwrite s Title = 'Back To C!'; + readonly s ReadingAlwaysThrowsError; + readwrite s WritingAlwaysThrowsError = "There's no home + like home"; + writeonly s OnlyWritable; + readonly s Foo = 'Tick'; + readonly s Bar = 'Tock'; + }; + }; + + gio/gdbus-tool.c | 43 + ++++++++++++++++++++++++++++++++++++++++ + gio/tests/gdbus-example-server.c | 18 ++++++++++++++--- + 2 files changed, 58 insertions(+), 3 deletions(-) + +commit cce08f197313bad1516924b3eb7305e7e6818971 +Author: Matthias Clasen +AuthorDate: Wed May 12 21:51:06 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 12 21:55:09 2010 -0400 + + Add a note about implemented standard interfaces + + gio/gdbusconnection.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit f909cb5b2713c8cd5f587c7a70e468d29bdcd429 +Author: David Zeuthen +AuthorDate: Wed May 12 20:43:40 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed May 12 20:51:06 2010 -0400 + + GDBusProxy: Remove error in get_cached_property() and add + set_cached_property() + + This makes it possible to use the cached properties mechanism even if + constructing the proxy with the DO_NOT_LOAD_PROPERTIES flag. + + This is useful for cases where you obtain the and track object + properties out-of-band. For example, in udisks, the plan is to have + something like this + + Manager.GetObjects (out ao paths, out aa{sa{sv}} all_properties); + Manager.ObjectAdded (o path, a{sa{sv}} all_properties); + Manager.ObjectChanged (o path, a{sa{sv}} all_properties); + Manager.ObjectRemoved (o path, a{sa{sv}} all_properties); + + E.g. the first GetObjects() call will return *all* data about *all* + exported objects. Further, this way a client will only need to listen + these three signals (three AddMatch) on the Manager object and it will + never need to do GetAll() etc (e.g. can use DO_NOT_LOAD_PROPERTIES). + + (Of course this only works if the client is interested in all + objects... while this is true for udisks it is generally not true for + other D-Bus services). + + Also use expected_interface to check for programming errors. + + docs/reference/gio/gio-sections.txt | 3 +- + gio/gdbusproxy.c | 162 + ++++++++++++++++++++++++------- + gio/gdbusproxy.h | 4 +- + gio/gio.symbols | 1 + + gio/tests/gdbus-example-proxy-subclass.c | 6 +- + gio/tests/gdbus-example-watch-proxy.c | 2 +- + gio/tests/gdbus-peer.c | 3 +- + gio/tests/gdbus-proxy.c | 44 +++++++-- + 8 files changed, 174 insertions(+), 51 deletions(-) + +commit 72731fb6ad99da076605ca7d8b1bee232b38e734 +Author: Thomas Thurman +AuthorDate: Wed May 12 18:41:27 2010 -0400 +Commit: Thomas Thurman +CommitDate: Wed May 12 18:41:27 2010 -0400 + + Updated Shavian transliteration + + po/en@shaw.po | 1176 + +++++++++++++++++++++++++++++---------------------------- + 1 file changed, 602 insertions(+), 574 deletions(-) + +commit b690e637d46057f6914a6b6f20b2688cd03f0ac5 +Author: Matthias Clasen +AuthorDate: Wed May 12 17:56:56 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 12 17:56:56 2010 -0400 + + Add some more verbiage + + docs/reference/gio/migrating-gdbus.xml | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit d40767fc62972f9cc85ebfb23e113068cc316f3a +Author: David Zeuthen +AuthorDate: Wed May 12 15:49:48 2010 -0400 +Commit: David Zeuthen +CommitDate: Wed May 12 15:52:08 2010 -0400 + + GDBus: Add an example of a GDBusProxy subclass + + docs/reference/gio/migrating-gdbus.xml | 55 ++++ + gio/gdbusconnection.c | 2 - + gio/tests/Makefile.am | 4 + + gio/tests/gdbus-example-proxy-subclass.c | 443 + +++++++++++++++++++++++++++++++ + 4 files changed, 502 insertions(+), 2 deletions(-) + +commit 7c0196f0267aa77c80fb85320ef9583c7fc64ad7 +Author: Matthias Clasen +AuthorDate: Wed May 12 13:01:40 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 12 13:01:40 2010 -0400 + + Update an example to the latest auth observer api + + gio/gdbusauthobserver.c | 17 ++++++++++------- + gio/gdbusconnection.c | 2 +- + 2 files changed, 11 insertions(+), 8 deletions(-) + +commit 371a3373bbf190054076896ed32d28d546f23930 +Author: Matthias Clasen +AuthorDate: Wed May 12 13:01:02 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 12 13:01:02 2010 -0400 + + Correct env var names + + and add a note about priority + + docs/reference/gio/overview.xml | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +commit af3afc804064ec17e89a6cdef4cc3e63015c8a77 +Author: Matthias Clasen +AuthorDate: Wed May 12 12:13:57 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 12 12:13:57 2010 -0400 + + placeholder for more migration docs + + docs/reference/gio/migrating-gdbus.xml | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 246db9bfdb5919a77ce5ae0d2f426f163f7702c1 +Author: Jesse van den Kieboom +AuthorDate: Fri May 7 11:55:40 2010 +0200 +Commit: Jesse van den Kieboom +CommitDate: Wed May 12 09:21:12 2010 +0200 + + Added test cases for g_output_stream_close_async + + https://bugzilla.gnome.org/show_bug.cgi?id=617937 + + gio/tests/Makefile.am | 6 +- + gio/tests/async-close-output-stream.c | 278 + ++++++++++++++++++++++++++++++++++ + 2 files changed, 283 insertions(+), 1 deletion(-) + +commit adc5162b742c702f37f385dcffba3802f0e55095 +Author: Jesse van den Kieboom +AuthorDate: Mon May 10 23:49:41 2010 +0200 +Commit: Jesse van den Kieboom +CommitDate: Wed May 12 09:21:06 2010 +0200 + + Flush when closing output stream async + + https://bugzilla.gnome.org/show_bug.cgi?id=617937 + + gio/goutputstream.c | 117 + ++++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 110 insertions(+), 7 deletions(-) + +commit e2b9d077659df82f9603352e6ce4ff1ceb4b1b8a +Author: Matthias Clasen +AuthorDate: Tue May 11 23:26:51 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 23:26:51 2010 -0400 + + Update TODO list + + gio/gdbusconnection.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit a63d3bb868b0ee17404cf85520e48d441abbcdf3 +Author: Matthias Clasen +AuthorDate: Tue May 11 23:18:48 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 23:18:48 2010 -0400 + + mention inline use of floating variants + + gio/gdbusconnection.c | 37 ++++++++++++++++++++++++++++++++++++- + gio/gdbusproxy.c | 42 ++++++++++++++++++++++++++++++++++++------ + 2 files changed, 72 insertions(+), 7 deletions(-) + +commit ab2ff1a307f6bf7825e02b0d09e25b8ea7570c07 +Author: Matthias Clasen +AuthorDate: Tue May 11 22:51:14 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 22:51:14 2010 -0400 + + Remove properties from GDBusMethodInvocation class + + gio/gdbusconnection.c | 3 - + gio/gdbusmethodinvocation.c | 330 + +++----------------------------------------- + 2 files changed, 18 insertions(+), 315 deletions(-) + +commit c4cf88c22f731878cbc740e4721e07215385201b +Author: Matthias Clasen +AuthorDate: Tue May 11 22:50:40 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 22:50:40 2010 -0400 + + Document remove_filter + + gio/gdbusconnection.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +commit d7095dd4700b38c202a43b7c21f93db20a9ede44 +Author: Matthias Clasen +AuthorDate: Tue May 11 22:35:59 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 22:35:59 2010 -0400 + + Document DBUS address env vars + + docs/reference/gio/overview.xml | 28 ++++++++++++++++++++++++++++ + gio/gdbusintrospection.c | 2 +- + 2 files changed, 29 insertions(+), 1 deletion(-) + +commit 84a6475b6e52fd481bf0e7191a6ea16168d35a3f +Author: Matthias Clasen +AuthorDate: Tue May 11 22:03:40 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 22:03:40 2010 -0400 + + Trivial: tweak section heading + + docs/reference/gio/migrating-gdbus.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9c128ca83536b6c6c823bb83606b09193d814738 +Author: Matthias Clasen +AuthorDate: Tue May 11 22:00:54 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 22:00:54 2010 -0400 + + Trivial formatting fix + + docs/reference/gio/migrating-gdbus.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit fdfd3d5e7536313dde1fc02b45ca04a6e4704b50 +Author: Matthias Clasen +AuthorDate: Tue May 11 22:00:06 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 22:00:06 2010 -0400 + + Fill out the proxy section of the migration guide + + docs/reference/gio/migrating-gdbus.xml | 53 + ++++++++++++++++++++++++++++++++++ + 1 file changed, 53 insertions(+) + +commit 26f65d83c5078e48e414a1cbe593bf349d96a033 +Author: Matthias Clasen +AuthorDate: Tue May 11 21:59:42 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 21:59:42 2010 -0400 + + Don't refer to nonexisting API. + + gio/gdbusconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1af277f16779f072bc0c326aa8024747ad8c13e9 +Author: Matthias Clasen +AuthorDate: Tue May 11 21:32:29 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 21:32:29 2010 -0400 + + Fix a typo + + docs/reference/gio/migrating-gdbus.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9b05e0bc3e88f9e54710aabb2ad29908739e6345 +Author: Matthias Clasen +AuthorDate: Tue May 11 21:30:53 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 21:30:53 2010 -0400 + + Complete the name owning section of the migration guide + + docs/reference/gio/migrating-gdbus.xml | 136 + ++++++++++++++++++--------------- + 1 file changed, 76 insertions(+), 60 deletions(-) + +commit e4b1e48fca9d1d2ca7e0ec54ebc9ea421aebff71 +Author: Matthias Clasen +AuthorDate: Tue May 11 20:57:44 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 20:57:44 2010 -0400 + + Match up parameter names + + and similar cleanups to make gtk-doc happy. + + docs/reference/gio/gio-sections.txt | 1 - + gio/gdbusconnection.c | 17 +++--- + gio/gdbusconnection.h | 4 +- + gio/gdbusintrospection.c | 102 + +++++++++++++++++++++--------------- + gio/gunixcredentialsmessage.c | 2 +- + 5 files changed, 71 insertions(+), 55 deletions(-) + +commit 1d43e4140b9c890eca50f3845bff3d800d66b6f9 +Author: Matthias Clasen +AuthorDate: Tue May 11 20:03:44 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 20:03:44 2010 -0400 + + Line up prototypes + + gio/gdbusproxy.c | 34 +++++++++++++++++----------------- + 1 file changed, 17 insertions(+), 17 deletions(-) + +commit 8d66ede1abbc4b84bcf13c4420719cb06fbe3b96 +Author: Matthias Clasen +AuthorDate: Tue May 11 17:15:11 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 17:15:11 2010 -0400 + + More gdbus migration stuff + + docs/reference/gio/migrating-gdbus.xml | 89 + ++++++++++++++++++++++++++++++++-- + 1 file changed, 86 insertions(+), 3 deletions(-) + +commit 54a57bb894d3c098bf972ecec71823b2822128b6 +Author: Matthias Clasen +AuthorDate: Tue May 11 15:50:19 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 15:50:19 2010 -0400 + + Strip copyright headers from examples + + These are included wholesale in the docs, and the copyright + headers make them even more overwhelming. Plus, we don't have + copyright headers on examples anywhere else. + + gio/tests/gdbus-example-own-name.c | 13 ------------- + gio/tests/gdbus-example-peer.c | 13 ------------- + gio/tests/gdbus-example-server.c | 13 ------------- + gio/tests/gdbus-example-subtree.c | 13 ------------- + gio/tests/gdbus-example-unix-fd-client.c | 13 ------------- + gio/tests/gdbus-example-watch-name.c | 13 ------------- + gio/tests/gdbus-example-watch-proxy.c | 13 ------------- + 7 files changed, 91 deletions(-) + +commit 9a2422b216263dd7bc4f27a98bc89d5ea6dfe791 +Author: Matthias Clasen +AuthorDate: Tue May 11 15:42:15 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 11 15:42:15 2010 -0400 + + Trivial: rename a file + + docs/reference/gio/Makefile.am | 4 +- + docs/reference/gio/gio-docs.xml | 2 +- + docs/reference/gio/migrating-dbus-glib.xml | 70 + ------------------------------ + docs/reference/gio/migrating-gdbus.xml | 70 + ++++++++++++++++++++++++++++++ + 4 files changed, 73 insertions(+), 73 deletions(-) + +commit 0e98557753ad5f5f9b74fd135dcdbe18055dc11a +Author: Kjartan Maraas +AuthorDate: Tue May 11 19:54:06 2010 +0200 +Commit: Kjartan Maraas +CommitDate: Tue May 11 19:54:06 2010 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 92 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 46 insertions(+), 46 deletions(-) + +commit 8c523c069b79a746c2dcdfe7e253513ff489cd39 +Author: David Zeuthen +AuthorDate: Tue May 11 12:04:37 2010 -0400 +Commit: David Zeuthen +CommitDate: Tue May 11 12:04:37 2010 -0400 + + GDBus: Update TODO list + + gio/gdbusconnection.c | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +commit 6d5ac8163b962803fedcf57b9ccad8a2c1205c82 +Author: Sebastian Dröge +AuthorDate: Mon May 10 09:48:49 2010 +0200 +Commit: Sebastian Dröge +CommitDate: Tue May 11 06:17:25 2010 +0200 + + gio: Fix gsettings build with binutils gold linker + + gio/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 936ff022f21a43f39552799dc1b3988379563959 +Author: Sebastian Dröge +AuthorDate: Mon May 10 09:51:49 2010 +0200 +Commit: Sebastian Dröge +CommitDate: Tue May 11 06:17:25 2010 +0200 + + Don't include __bss_start, _edata and _end symbols in the abichecks + + They are added by the binutils gold linker. + + gio/abicheck.sh | 2 +- + glib/abicheck.sh | 2 +- + gobject/abicheck.sh | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +commit 2d208c9d364369d68a54cfd0682e17f2ce771db5 +Author: David Zeuthen +AuthorDate: Mon May 10 16:20:59 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon May 10 16:20:59 2010 -0400 + + GDBus: In gdbus(1), try Get() if GetAll() fails + + This fixes a problem with services that doesn't implement GetAll() for + one reason or another. + + $ gdbus introspect --session --dest + org.freedesktop.ReserveDevice1.Audio0 --object-path + /org/freedesktop/ReserveDevice1/Audio0 + node /org/freedesktop/ReserveDevice1/Audio0 { + interface org.freedesktop.ReserveDevice1 { + methods: + RequestRelease(in i priority, + out b result); + properties: + readonly i Priority = 0; + readonly s ApplicationName = 'PulseAudio Sound Server'; + readonly s ApplicationDeviceName = 'Internal Audio Analog + Stereo'; + }; + interface org.freedesktop.DBus.Properties { + methods: + Get(in s interface, + in s property, + out v value); + }; + interface org.freedesktop.DBus.Introspectable { + methods: + Introspect(out s data); + }; + }; + + gio/gdbus-tool.c | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +commit 6e23b0b7850c170405aa25d9441a9cd8cc05a38b +Author: David Zeuthen +AuthorDate: Mon May 10 14:43:08 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon May 10 14:43:08 2010 -0400 + + GDBus: Add TODO item about a need to validate data / messages + + gio/gdbusconnection.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit adf50912ddb29c8c6b36702df1162e6211765dea +Author: David Zeuthen +AuthorDate: Mon May 10 14:07:13 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon May 10 14:07:13 2010 -0400 + + GDBus Add TODO items about finding and launching bus instances + + gio/gdbusconnection.c | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +commit 5800a1f91162ec5a0e96fae12857be2ebe404d3a +Author: Jorge González +AuthorDate: Mon May 10 19:38:57 2010 +0200 +Commit: Jorge González +CommitDate: Mon May 10 19:38:57 2010 +0200 + + Updated Spanish translation + + po/es.po | 91 + ++++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 49 insertions(+), 42 deletions(-) + +commit 7e8b07ae3be5ce63ba17183a410ac8512a29cb13 +Author: David Zeuthen +AuthorDate: Mon May 10 13:31:54 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon May 10 13:31:54 2010 -0400 + + GDBus: Use GVariant instead of GHashTable for + GDBusProxy::g-properties-changed + + gio/gdbusconnection.c | 13 ------------- + gio/gdbusproxy.c | 24 +++++++++++------------- + gio/gdbusproxy.h | 2 +- + gio/tests/gdbus-example-watch-proxy.c | 21 +++++++++++++++------ + 4 files changed, 27 insertions(+), 33 deletions(-) + +commit 869b4c68332f36377bbdfd186e37f6194ae5ed5a +Author: David Zeuthen +AuthorDate: Mon May 10 11:47:08 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon May 10 11:47:08 2010 -0400 + + GDBus: Use call() instead of invoke_method() + + Lots of people been suggesting this. We still use MethodInvocation / + method_invocation for handling incoming method calls so use call() + instead of invoke_method() helps to separate the client and server + facilities. Which is a good thing(tm). + + docs/reference/gio/gio-sections.txt | 14 +- + docs/reference/gio/migrating-dbus-glib.xml | 6 +- + gio/gdbus-tool.c | 160 +++++++++--------- + gio/gdbusauthmechanismexternal.c | 2 +- + gio/gdbusconnection.c | 104 ++++++------ + gio/gdbusconnection.h | 10 +- + gio/gdbuserror.c | 13 +- + gio/gdbusnameowning.c | 52 +++--- + gio/gdbusnamewatching.c | 56 +++---- + gio/gdbusproxy.c | 142 ++++++++-------- + gio/gdbusproxy.h | 10 +- + gio/gio.symbols | 14 +- + gio/gioenums.h | 14 +- + gio/tests/gdbus-connection.c | 160 +++++++++--------- + gio/tests/gdbus-example-peer.c | 20 +-- + gio/tests/gdbus-export.c | 252 + ++++++++++++++--------------- + gio/tests/gdbus-introspection.c | 14 +- + gio/tests/gdbus-names.c | 40 ++--- + gio/tests/gdbus-peer.c | 44 ++--- + gio/tests/gdbus-proxy.c | 146 ++++++++--------- + gio/tests/gdbus-threading.c | 114 ++++++------- + 21 files changed, 694 insertions(+), 693 deletions(-) + +commit 728c4e38e72055080c148f9cebca85a08d16a445 +Author: Matthias Clasen +AuthorDate: Mon May 10 08:07:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 10 08:07:28 2010 -0400 + + More copyright year updates + + gio/tests/gdbus-addresses.c | 2 +- + gio/tests/gdbus-connection.c | 2 +- + gio/tests/gdbus-error.c | 2 +- + gio/tests/gdbus-exit-on-close.c | 2 +- + gio/tests/gdbus-export.c | 2 +- + gio/tests/gdbus-introspection.c | 2 +- + gio/tests/gdbus-names.c | 2 +- + gio/tests/gdbus-peer.c | 2 +- + gio/tests/gdbus-proxy.c | 2 +- + gio/tests/gdbus-serialization.c | 2 +- + gio/tests/gdbus-sessionbus.c | 2 +- + gio/tests/gdbus-tests.c | 2 +- + gio/tests/gdbus-threading.c | 2 +- + 13 files changed, 13 insertions(+), 13 deletions(-) + +commit 5d1135618e6ec5c6a6c41bed602cec643f9d8b8f +Author: Matthias Clasen +AuthorDate: Mon May 10 08:07:07 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon May 10 08:07:07 2010 -0400 + + Trivia + + gio/gdbusaddress.c | 34 +++++++++++++++++----------------- + gio/gdbusconnection.c | 34 +++++++++++++++++++++------------- + 2 files changed, 38 insertions(+), 30 deletions(-) + +commit 25a8aa5d88d3d4b8ebcf8be42a2adc233dbb104c +Author: Matthias Clasen +AuthorDate: Sun May 9 22:13:18 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 9 22:13:18 2010 -0400 + + Cosmetic fixes + + Use P_() for properties, fix up indentation, etc. + + gio/gdbusauth.c | 4 +- + gio/gdbusauthmechanism.c | 71 +++--- + gio/gdbusconnection.c | 514 + +++++++++++++++++++----------------------- + gio/gdbusmethodinvocation.c | 69 +++--- + gio/gdbusproxy.c | 145 ++++++------ + gio/gdbusserver.c | 81 +++---- + gio/gunixcredentialsmessage.c | 7 +- + 7 files changed, 407 insertions(+), 484 deletions(-) + +commit 0cf467c2ca92ece9625dbc54ad3065ad5298f735 +Author: Matthias Clasen +AuthorDate: Sun May 9 13:14:55 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 9 13:14:55 2010 -0400 + + Update copyright years to include 2010 + + gio/gcredentials.c | 2 +- + gio/gcredentials.h | 2 +- + gio/gdbus-tool.c | 2 +- + gio/gdbusaddress.c | 2 +- + gio/gdbusaddress.h | 2 +- + gio/gdbusauth.c | 2 +- + gio/gdbusauth.h | 2 +- + gio/gdbusauthmechanism.c | 2 +- + gio/gdbusauthmechanism.h | 2 +- + gio/gdbusauthmechanismanon.c | 2 +- + gio/gdbusauthmechanismanon.h | 2 +- + gio/gdbusauthmechanismexternal.c | 2 +- + gio/gdbusauthmechanismexternal.h | 2 +- + gio/gdbusauthmechanismsha1.c | 2 +- + gio/gdbusauthmechanismsha1.h | 2 +- + gio/gdbusauthobserver.c | 2 +- + gio/gdbusauthobserver.h | 2 +- + gio/gdbusconnection.c | 2 +- + gio/gdbusconnection.h | 2 +- + gio/gdbuserror.c | 2 +- + gio/gdbuserror.h | 2 +- + gio/gdbusintrospection.c | 2 +- + gio/gdbusintrospection.h | 2 +- + gio/gdbusmessage.c | 2 +- + gio/gdbusmessage.h | 2 +- + gio/gdbusmethodinvocation.c | 2 +- + gio/gdbusmethodinvocation.h | 2 +- + gio/gdbusnameowning.c | 2 +- + gio/gdbusnameowning.h | 2 +- + gio/gdbusnamewatching.c | 2 +- + gio/gdbusnamewatching.h | 2 +- + gio/gdbusprivate.c | 2 +- + gio/gdbusprivate.h | 2 +- + gio/gdbusproxy.c | 2 +- + gio/gdbusproxy.h | 2 +- + gio/gdbusproxywatching.c | 2 +- + gio/gdbusproxywatching.h | 2 +- + gio/gdbusserver.c | 2 +- + gio/gdbusserver.h | 2 +- + gio/gdbusutils.c | 2 +- + gio/gdbusutils.h | 2 +- + 41 files changed, 41 insertions(+), 41 deletions(-) + +commit e82eea6fdae1a24b58bbd9a440c6c37bd2980afd +Author: Matthias Clasen +AuthorDate: Sun May 9 13:09:54 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 9 13:09:54 2010 -0400 + + Microoptimize string reallocations + + gio/gdbusconnection.c | 86 + ++++++++++++++++++++++++++++----------------------- + 1 file changed, 48 insertions(+), 38 deletions(-) + +commit b87dd96a8a418f4f5915e4a1cb59737a009efdd8 +Author: Matthias Clasen +AuthorDate: Sun May 9 12:41:02 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 9 12:41:02 2010 -0400 + + Move some platform sources around + + gunixcredentialsmessage.h ought to live with other UNIX headers, + and the credentials are moved from dbus-specific to just GIO sources. + Also move gfiledescriptorbased.c to the UNIX sources. + + gio/Makefile.am | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +commit b96c3b6d60a87f31a46ff5499c133571f0470940 +Author: Matthias Clasen +AuthorDate: Sun May 9 12:24:56 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 9 12:24:56 2010 -0400 + + Mention multithreading as a reason for not using libdbus + + docs/reference/gio/migrating-dbus-glib.xml | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 03b5db44779c54947c3801609a42b2d2801b5a97 +Author: Robert Bragg +AuthorDate: Thu May 6 15:46:00 2010 +0100 +Commit: Robert Bragg +CommitDate: Sun May 9 16:28:32 2010 +0100 + + gtester-report: cope with binaries with no test cases + + It's possible that a given binary may conditionally decided not to run + any test cases (e.g. since they are all slow but -m=quick is currently + in use) In this case the xml may contain nodes with no + children. This was resulting in a divide by zero when + calculating the green → red color interpolation. + + https://bugzilla.gnome.org/show_bug.cgi?id=617914 + + glib/gtester-report | 25 +++++++++++++++---------- + 1 file changed, 15 insertions(+), 10 deletions(-) + +commit c148cafdd16f8bfed46cf5b0af05af3cbdc550c7 +Author: David Zeuthen +AuthorDate: Sun May 9 10:02:56 2010 -0400 +Commit: David Zeuthen +CommitDate: Sun May 9 10:03:56 2010 -0400 + + GDBus: Rework GCredentials type + + These changes are is related to + + https://bugzilla.gnome.org/show_bug.cgi?id=617483 + + and IRC discussions with danw. + + docs/reference/gio/gio-sections.txt | 15 +- + gio/gcredentials.c | 435 + +++++++++++++----------------------- + gio/gcredentials.h | 44 ++-- + gio/gdbusauth.c | 2 +- + gio/gdbusauthmechanismexternal.c | 19 +- + gio/gio.symbols | 15 +- + gio/gunixcredentialsmessage.c | 13 +- + 7 files changed, 193 insertions(+), 350 deletions(-) + +commit bb7106c5dfce5597bcc4a0682200fb50f5201c29 +Author: Matthias Clasen +AuthorDate: Sun May 9 02:27:09 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 9 02:27:09 2010 -0400 + + Add some conceptual changes + + docs/reference/gio/migrating-dbus-glib.xml | 95 + ++++++++++++++++++++---------- + gio/gdbusaddress.c | 2 +- + gio/gdbusintrospection.c | 2 +- + 3 files changed, 66 insertions(+), 33 deletions(-) + +commit 8315eb77d57de73b950d152edbc7a104d378642c +Author: Matthias Clasen +AuthorDate: Sun May 9 01:44:11 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 9 01:44:11 2010 -0400 + + Some documentation tweaks + + Add links to the D-Bus docs in some places, and various + other additions. + + docs/reference/gio/overview.xml | 6 +++--- + gio/gdbusaddress.c | 4 +++- + gio/gdbusconnection.c | 14 +++++++------- + gio/gdbusintrospection.c | 6 +++++- + gio/gdbusmethodinvocation.c | 4 ++++ + gio/gdbusnameowning.c | 18 ++++++++++-------- + gio/gdbusproxywatching.c | 2 +- + 7 files changed, 33 insertions(+), 21 deletions(-) + +commit 7ca2e000546733446f737ec8fe425dd17218eada +Author: Matthias Clasen +AuthorDate: Sat May 8 23:28:17 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 8 23:28:17 2010 -0400 + + Doc improvements + + Make sure all unix-specific apis are marked as such. + + docs/reference/gio/gio-docs.xml | 19 ++++++++++--------- + docs/reference/gio/gio-sections.txt | 22 ++++++++++++++-------- + gio/gdesktopappinfo.c | 16 ++++++++-------- + gio/gfiledescriptorbased.c | 6 +++++- + gio/gunixconnection.c | 11 ++++++++--- + gio/gunixfdlist.c | 7 ++++++- + gio/gunixfdmessage.c | 13 +++++++++---- + gio/gunixinputstream.c | 4 ++-- + gio/gunixmounts.c | 8 ++++---- + gio/gunixoutputstream.c | 6 +++--- + gio/gunixsocketaddress.c | 14 +++++++++----- + 11 files changed, 78 insertions(+), 48 deletions(-) + +commit 6bea235c8b3bb79b508491985dd38c2074ee6843 +Author: Simon McVittie +AuthorDate: Sat May 8 21:30:27 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 8 21:30:27 2010 -0400 + + Support 64bit integers in GKeyFile + + docs/reference/glib/glib-sections.txt | 4 + + glib/gkeyfile.c | 152 + ++++++++++++++++++++++++++++++++++ + glib/gkeyfile.h | 16 ++++ + glib/glib.symbols | 4 + + glib/tests/keyfile.c | 46 ++++++++++ + 5 files changed, 222 insertions(+) + +commit 08b5f866971eb2f44e572390f8e9f322fa8a2840 +Author: Matthias Clasen +AuthorDate: Sat May 8 21:18:48 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 8 21:18:48 2010 -0400 + + Make GSETTINGS_CHECK_RULE work in !srcdir builds + + This problem was reported in bug 617823. + + m4macros/gsettings.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c13c36e3b9db500e30055e616ffa52672281fc49 +Author: Matthias Clasen +AuthorDate: Sat May 8 20:58:10 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 8 20:58:10 2010 -0400 + + Add test for g_get_language_names + + glib/tests/Makefile.am | 3 ++ + glib/tests/utils.c | 84 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 87 insertions(+) + +commit e8bc8c6cbf86ee07a56f3eaa9fdb44b97ad12c6d +Author: Matthias Clasen +AuthorDate: Sat May 8 20:10:57 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 8 20:14:41 2010 -0400 + + Document length parameter of g_settings_get/set_strv + + This parameter was not mentioned in the doc comment, as pointed + out in bug 617767. + + gio/gsettings.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 9164fd02c9043baee99199a3ba33c98e2309dc00 +Author: Matthias Clasen +AuthorDate: Sat May 8 20:10:57 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 8 20:10:57 2010 -0400 + + Document length parameter of g_settings_get/set_strv + + This parameter was not mentioned in the doc comment, as pointed + out in bug 617767. + + gio/gsettings.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit af263a3a10ff9f3ae41d30e8cb9753b8b9f1ad43 +Author: Dan Winship +AuthorDate: Fri May 7 19:08:13 2010 -0400 +Commit: Dan Winship +CommitDate: Fri May 7 19:08:13 2010 -0400 + + remove broken useless initialization in socket-client/socket-server + + https://bugzilla.gnome.org/show_bug.cgi?id=618051 + + gio/tests/socket-client.c | 2 +- + gio/tests/socket-server.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit f1855c2f77fb76347c332b21865e5513f89b15b9 +Author: David Zeuthen +AuthorDate: Fri May 7 15:02:37 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri May 7 15:02:37 2010 -0400 + + GDBus: add TODO item about maybe having to rework + ::g-properties-changed + + gio/gdbusconnection.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit 85c85ae63a95f4004020db56da6242b26ce073c0 +Author: David Zeuthen +AuthorDate: Fri May 7 14:57:20 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri May 7 14:57:20 2010 -0400 + + GDBus: add TODO item about the need to rewrite private GDBusAuth* + classes + + gio/gdbusconnection.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 5bd876bef0235ec5c745ac948e906bf51adf2fef +Author: David Zeuthen +AuthorDate: Fri May 7 14:56:01 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri May 7 14:56:01 2010 -0400 + + Add TODO item about wanting G_DBUS_NONCE_TCP_TMPDIR + + gio/gdbusconnection.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 5134a1d151f14cfadfa72c23d0660f3928bda821 +Author: David Zeuthen +AuthorDate: Fri May 7 14:36:07 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri May 7 14:36:07 2010 -0400 + + GDBus: Document environment variables in "Running GIO applications" + + docs/reference/gio/overview.xml | 45 + +++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 45 insertions(+) + +commit 1ddda12d646f67fcb558399dce20ecff2405bf20 +Author: Matthias Clasen +AuthorDate: Thu May 6 20:54:04 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 6 20:54:04 2010 -0400 + + A quick cheat sheet + + docs/reference/gio/migrating-dbus-glib.xml | 30 + +++++++++++++++++++++++++++++- + 1 file changed, 29 insertions(+), 1 deletion(-) + +commit f309334bc629b9b148d9ce2887489930d4eedd3f +Author: David Zeuthen +AuthorDate: Thu May 6 19:39:16 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 6 19:42:46 2010 -0400 + + GDBus: add a man page for gdbus(1) + + docs/reference/gio/Makefile.am | 7 +- + docs/reference/gio/gdbus.xml | 221 + ++++++++++++++++++++++++++++++++++++++++ + docs/reference/gio/gio-docs.xml | 1 + + 3 files changed, 227 insertions(+), 2 deletions(-) + +commit f14e30818c7d355f0c3d61bab2f2a702dc747952 +Author: Matthias Clasen +AuthorDate: Thu May 6 18:15:00 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 6 18:15:00 2010 -0400 + + Mention D-Bus functionality in the overview + + docs/reference/gio/overview.xml | 39 + +++++++++++++++++++++++++++------------ + 1 file changed, 27 insertions(+), 12 deletions(-) + +commit 133f66538dbf266be3c99b34f1eeee0a5e6068ac +Author: Matthias Clasen +AuthorDate: Thu May 6 17:52:54 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 6 17:58:29 2010 -0400 + + Add a migration chapter for dbus bits + + Also split migration.xml into separate files per chapter, it was + getting unwieldy. + + docs/reference/gio/Makefile.am | 10 +- + docs/reference/gio/gio-docs.xml | 8 +- + docs/reference/gio/migrating-dbus-glib.xml | 7 + + docs/reference/gio/migrating-gconf.xml | 418 +++++++++++++++++++++ + docs/reference/gio/migrating-gnome-vfs.xml | 133 +++++++ + docs/reference/gio/migrating-posix.xml | 581 + +++++++++++++++++++++++++++++ + docs/reference/gio/migrating.xml | 581 + ----------------------------- + 7 files changed, 1154 insertions(+), 584 deletions(-) + +commit 44fd23b649ebe2f8f6d31e78400d3230b2c38366 +Author: David Zeuthen +AuthorDate: Thu May 6 17:41:31 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 6 17:41:31 2010 -0400 + + GDBus: Add more symbols to pltcheck.sh's SKIP variable + + In particular, add these symbols + + g_memdup + g_print + g_random_int + g_propagate_prefixed_e + g_thread_create_full + g_int_hash + g_file_open_tmp + g_thread_self + g_usleep + + gio/pltcheck.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 46ce134d516f4a246996328c980efe16195ab429 +Author: David Zeuthen +AuthorDate: Thu May 6 17:31:51 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 6 17:31:51 2010 -0400 + + GDBus: Add new symbols to gio.symbols + + docs/reference/gio/gio-sections.txt | 6 +- + docs/reference/gio/gio.types | 2 +- + gio/gcredentials.c | 4 + + gio/gdbusaddress.c | 4 + + gio/gdbusauth.c | 4 + + gio/gdbusauthmechanism.c | 4 + + gio/gdbusauthmechanismanon.c | 4 + + gio/gdbusauthmechanismexternal.c | 4 + + gio/gdbusauthmechanismsha1.c | 4 + + gio/gdbusauthobserver.c | 4 + + gio/gdbusconnection.c | 10 +- + gio/gdbuserror.c | 4 + + gio/gdbusintrospection.c | 5 + + gio/gdbusmessage.c | 20 ++- + gio/gdbusmessage.h | 8 +- + gio/gdbusmethodinvocation.c | 4 + + gio/gdbusnameowning.c | 4 + + gio/gdbusnamewatching.c | 4 + + gio/gdbusprivate.c | 4 + + gio/gdbusproxy.c | 4 + + gio/gdbusproxywatching.c | 4 + + gio/gdbusserver.c | 4 + + gio/gdbusutils.c | 4 + + gio/gio.symbols | 299 + +++++++++++++++++++++++++++++++ + gio/gunixcredentialsmessage.c | 4 + + gio/tests/gdbus-example-unix-fd-client.c | 2 +- + gio/tests/gdbus-peer.c | 2 +- + gio/tests/gdbus-serialization.c | 2 +- + 28 files changed, 405 insertions(+), 23 deletions(-) + +commit fb1b4599a0effe728f42da8748b469a62f91ed8d +Author: David Zeuthen +AuthorDate: Thu May 6 16:34:23 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 6 16:34:23 2010 -0400 + + GDBus: Fix up i18n + + gio/gcredentials.c | 3 ++- + gio/gdbus-tool.c | 4 +++- + gio/gdbusaddress.c | 5 +++-- + gio/gdbusauth.c | 4 ++-- + gio/gdbusauthmechanism.c | 4 ++-- + gio/gdbusauthmechanismanon.c | 4 ++-- + gio/gdbusauthmechanismexternal.c | 4 +++- + gio/gdbusauthmechanismsha1.c | 4 +++- + gio/gdbusauthobserver.c | 4 ++-- + gio/gdbusconnection.c | 27 +++++++++++++++------------ + gio/gdbuserror.c | 5 +++-- + gio/gdbusintrospection.c | 5 +++-- + gio/gdbusmessage.c | 3 ++- + gio/gdbusmethodinvocation.c | 3 ++- + gio/gdbusnameowning.c | 4 ++-- + gio/gdbusnamewatching.c | 5 +++-- + gio/gdbusprivate.c | 16 ++++++++++++++-- + gio/gdbusproxy.c | 5 ++++- + gio/gdbusproxywatching.c | 4 ++-- + gio/gdbusserver.c | 16 ++++++++++------ + gio/gdbusutils.c | 4 ++-- + gio/gunixcredentialsmessage.c | 4 ++-- + 22 files changed, 86 insertions(+), 51 deletions(-) + +commit 0fd6498cd89888023fb2161bfdde9339a4346986 +Author: David Zeuthen +AuthorDate: Thu May 6 16:02:08 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 6 16:02:08 2010 -0400 + + Add "Since: 2.26" to all new GDBus API + + docs/reference/gio/gio-docs.xml | 2 +- + gio/gcredentials.c | 32 ++++++++++++++ + gio/gcredentials.h | 4 ++ + gio/gdbusaddress.c | 12 ++++++ + gio/gdbusauthobserver.c | 6 +++ + gio/gdbusauthobserver.h | 4 ++ + gio/gdbusconnection.c | 94 + ++++++++++++++++++++++++++++++++++++++--- + gio/gdbusconnection.h | 24 +++++++++++ + gio/gdbuserror.c | 20 +++++++++ + gio/gdbuserror.h | 4 ++ + gio/gdbusintrospection.c | 52 +++++++++++++++++++++-- + gio/gdbusintrospection.h | 28 ++++++++++++ + gio/gdbusmessage.c | 88 + ++++++++++++++++++++++++++++++++++++++ + gio/gdbusmessage.h | 4 ++ + gio/gdbusmethodinvocation.c | 50 ++++++++++++++++++++++ + gio/gdbusmethodinvocation.h | 4 ++ + gio/gdbusnameowning.c | 10 ++++- + gio/gdbusnameowning.h | 6 +++ + gio/gdbusnamewatching.c | 8 +++- + gio/gdbusnamewatching.h | 4 ++ + gio/gdbusprivate.c | 2 +- + gio/gdbusproxy.c | 70 ++++++++++++++++++++++++++---- + gio/gdbusproxy.h | 4 ++ + gio/gdbusproxywatching.c | 6 ++- + gio/gdbusproxywatching.h | 4 ++ + gio/gdbusserver.c | 28 ++++++++++++ + gio/gdbusserver.h | 4 ++ + gio/gdbusutils.c | 15 ++++++- + gio/gioenums.h | 30 ++++++++++++- + gio/gunixcredentialsmessage.c | 4 ++ + gio/gunixcredentialsmessage.h | 15 +++++++ + 31 files changed, 611 insertions(+), 27 deletions(-) + +commit c490c14f4e3fbbe8c74b26e6cacac31b0e744c92 +Author: David Zeuthen +AuthorDate: Thu May 6 15:31:45 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 6 15:31:45 2010 -0400 + + Set up gtk-doc for GDBus + + Also move send_credentials() and receive_credentials() to + GUnixConnection. This code might change, discussion is still ongoing + in + + https://bugzilla.gnome.org/show_bug.cgi?id=617483. + + docs/reference/gio/gio-docs.xml | 21 ++ + docs/reference/gio/gio-sections.txt | 390 + ++++++++++++++++++++++++++++++++++++ + docs/reference/gio/gio.types | 11 + + gio/gcredentials.c | 4 +- + gio/gdbusaddress.c | 2 +- + gio/gdbusauth.c | 189 ----------------- + gio/gdbusauthobserver.c | 2 +- + gio/gdbusconnection.c | 8 +- + gio/gdbuserror.c | 2 +- + gio/gdbusintrospection.c | 2 +- + gio/gdbusmessage.c | 2 +- + gio/gdbusmethodinvocation.c | 2 +- + gio/gdbusnameowning.c | 4 +- + gio/gdbusnamewatching.c | 4 +- + gio/gdbusproxy.c | 2 +- + gio/gdbusproxywatching.c | 4 +- + gio/gdbusserver.c | 4 +- + gio/gdbusutils.c | 2 +- + gio/gunixconnection.c | 258 ++++++++++++++++++++++++ + gio/gunixconnection.h | 10 + + 20 files changed, 712 insertions(+), 211 deletions(-) + +commit 47805f4e0cadf35bd6882d7e54374fead25637d2 +Author: Ryan Lortie +AuthorDate: Thu May 6 14:19:58 2010 -0500 +Commit: Ryan Lortie +CommitDate: Thu May 6 14:21:39 2010 -0500 + + Bug 617947 - glib-mkenums: add @valuenum@ support + + Add a @valuenum@ substitution that outputs the integer value of a + particular enum value. The value is determined by using (sandboxed) + perl to evaluate C expression. If evaluation fails then glib-mkenums + dies loudly. Evaluation is only enabled if '@valuenum@' appears + in the + template file, so existing users will not be affected. + + gobject/glib-mkenums.in | 36 ++++++++++++++++++++++++++++++------ + 1 file changed, 30 insertions(+), 6 deletions(-) + +commit 7aa71527e592d3c46d08a784cf061c79e61d11d8 +Author: Ryan Lortie +AuthorDate: Thu May 6 12:36:10 2010 -0500 +Commit: Ryan Lortie +CommitDate: Thu May 6 13:27:26 2010 -0500 + + glib-mkenums: Fix support for comment templates + + Currently, specifying a comment template in the template file + results in + the given template being appended to the default (C-style) one rather + than replacing it. + + This causes it to be replaced outright. + + Bug 617940. + + gobject/glib-mkenums.in | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit d0a14469d09d5fe23de219ba293fd4a266b02ced +Author: David Zeuthen +AuthorDate: Thu May 6 14:13:59 2010 -0400 +Commit: David Zeuthen +CommitDate: Thu May 6 14:21:32 2010 -0400 + + Initial GDBus code-drop from GDBus-standalone repo + + Things compile and the test-suite passes. Still need to hook up + gio.symbols and docs. There are still a bunch of TODOs left in the + sources that needs to be addressed. + + Signed-off-by: David Zeuthen + + configure.in | 10 + + gio/Makefile.am | 58 +- + gio/gcredentials.c | 427 +++ + gio/gcredentials.h | 104 + + gio/gdbus-bash-completion.sh | 33 + + gio/gdbus-tool.c | 1491 +++++++++ + gio/gdbusaddress.c | 1004 ++++++ + gio/gdbusaddress.h | 54 + + gio/gdbusauth.c | 1538 +++++++++ + gio/gdbusauth.h | 86 + + gio/gdbusauthmechanism.c | 342 ++ + gio/gdbusauthmechanism.h | 174 + + gio/gdbusauthmechanismanon.c | 327 ++ + gio/gdbusauthmechanismanon.h | 82 + + gio/gdbusauthmechanismexternal.c | 416 +++ + gio/gdbusauthmechanismexternal.h | 82 + + gio/gdbusauthmechanismsha1.c | 1216 +++++++ + gio/gdbusauthmechanismsha1.h | 82 + + gio/gdbusauthobserver.c | 218 ++ + gio/gdbusauthobserver.h | 100 + + gio/gdbusconnection.c | 5280 + ++++++++++++++++++++++++++++++ + gio/gdbusconnection.h | 467 +++ + gio/gdbuserror.c | 847 +++++ + gio/gdbuserror.h | 92 + + gio/gdbusintrospection.c | 2009 ++++++++++++ + gio/gdbusintrospection.h | 255 ++ + gio/gdbusmessage.c | 2421 ++++++++++++++ + gio/gdbusmessage.h | 172 + + gio/gdbusmethodinvocation.c | 795 +++++ + gio/gdbusmethodinvocation.h | 119 + + gio/gdbusnameowning.c | 713 ++++ + gio/gdbusnameowning.h | 88 + + gio/gdbusnamewatching.c | 620 ++++ + gio/gdbusnamewatching.h | 68 + + gio/gdbusprivate.c | 1040 ++++++ + gio/gdbusprivate.h | 83 + + gio/gdbusproxy.c | 1542 +++++++++ + gio/gdbusproxy.h | 146 + + gio/gdbusproxywatching.c | 397 +++ + gio/gdbusproxywatching.h | 77 + + gio/gdbusserver.c | 1043 ++++++ + gio/gdbusserver.h | 97 + + gio/gdbusutils.c | 364 ++ + gio/gdbusutils.h | 42 + + gio/gio-marshal.list | 2 + + gio/gio.h | 16 + + gio/gioenums.h | 372 ++- + gio/giotypes.h | 19 + + gio/gunixcredentialsmessage.c | 341 ++ + gio/gunixcredentialsmessage.h | 68 + + gio/tests/Makefile.am | 98 +- + gio/tests/gdbus-addresses.c | 77 + + gio/tests/gdbus-connection.c | 653 ++++ + gio/tests/gdbus-error.c | 198 ++ + gio/tests/gdbus-example-own-name.c | 99 + + gio/tests/gdbus-example-peer.c | 318 ++ + gio/tests/gdbus-example-server.c | 388 +++ + gio/tests/gdbus-example-subtree.c | 410 +++ + gio/tests/gdbus-example-unix-fd-client.c | 145 + + gio/tests/gdbus-example-watch-name.c | 101 + + gio/tests/gdbus-example-watch-proxy.c | 205 ++ + gio/tests/gdbus-exit-on-close.c | 82 + + gio/tests/gdbus-export.c | 1410 ++++++++ + gio/tests/gdbus-introspection.c | 169 + + gio/tests/gdbus-names.c | 749 +++++ + gio/tests/gdbus-peer.c | 746 +++++ + gio/tests/gdbus-proxy.c | 455 +++ + gio/tests/gdbus-serialization.c | 650 ++++ + gio/tests/gdbus-sessionbus.c | 342 ++ + gio/tests/gdbus-sessionbus.h | 38 + + gio/tests/gdbus-tests.c | 218 ++ + gio/tests/gdbus-tests.h | 146 + + gio/tests/gdbus-testserver.py | 270 ++ + gio/tests/gdbus-threading.c | 532 +++ + 74 files changed, 35927 insertions(+), 11 deletions(-) + +commit 5b4189fc42afa697b7f13c38d9d6b441d731ed11 +Author: Vincent Untz +AuthorDate: Thu May 6 12:45:37 2010 +0200 +Commit: Ryan Lortie +CommitDate: Thu May 6 11:15:24 2010 -0500 + + Fix binding between writability of key and sensitivity of a widget + + We were not setting the key correctly, result in usage of invalid + keys. + + Bug 617788. + + gio/gsettings.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 81e98c399e11d7621c91ff2911ef4f92c7a382e5 +Author: Javier Jardón +AuthorDate: Thu May 6 06:28:54 2010 +0200 +Commit: Javier Jardón +CommitDate: Thu May 6 17:42:09 2010 +0200 + + Clean Glib header #include issues: gthread + + glib/gthread.c | 7 ++++++- + glib/gthread.h | 1 - + 2 files changed, 6 insertions(+), 2 deletions(-) + +commit c7940d81802194abe1d4497d3daa2f9c59addb5e +Author: Javier Jardón +AuthorDate: Wed May 5 18:32:03 2010 +0200 +Commit: Javier Jardón +CommitDate: Thu May 6 17:42:09 2010 +0200 + + Clean Glib header #include issues: gmem + + glib/gmem.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit 21302a741cbb3d6373a368df148f6267a0705366 +Author: Javier Jardón +AuthorDate: Wed May 5 18:24:33 2010 +0200 +Commit: Javier Jardón +CommitDate: Thu May 6 17:42:09 2010 +0200 + + Clean Glib header #include issues: gtestutils + + glib/gtestutils.c | 13 +++++++++++-- + glib/gtestutils.h | 1 - + 2 files changed, 11 insertions(+), 3 deletions(-) + +commit d1642386c96b4a2a4479cd7c2b5cd8ddadae99e4 +Author: Javier Jardón +AuthorDate: Wed May 5 18:12:04 2010 +0200 +Commit: Javier Jardón +CommitDate: Thu May 6 17:42:09 2010 +0200 + + Clean Glib header #include issues: gasyncqueue + + glib/gasyncqueue.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 434a4e1d250157b13d7036592f097c18fb8376b1 +Author: Javier Jardón +AuthorDate: Wed May 5 17:32:12 2010 +0200 +Commit: Javier Jardón +CommitDate: Thu May 6 17:42:09 2010 +0200 + + Do not include "glib.h" in gio files + + gio/gcharsetconverter.c | 4 ++-- + gio/gsocket.c | 4 ++-- + gio/gzlibcompressor.c | 6 +++--- + gio/gzlibdecompressor.c | 6 +++--- + 4 files changed, 10 insertions(+), 10 deletions(-) + +commit cbbc99d972a7c8ef4a37b29c19f46cfc11628e97 +Author: Tor Lillqvist +AuthorDate: Wed May 5 09:43:30 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Wed May 5 09:44:10 2010 +0300 + + Minor updates to README.win32. + + README.win32 | 57 + ++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 32 insertions(+), 25 deletions(-) + +commit b3c9c17956a2e2640c1846879d930fd706eaf966 +Author: Xan Lopez +AuthorDate: Tue May 4 18:09:01 2010 +0200 +Commit: Xan Lopez +CommitDate: Tue May 4 18:10:56 2010 +0200 + + Fix typo in limits documentation + + docs/reference/glib/tmpl/limits.sgml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f39a49b03610a1cd54b9feb18528f5c74539d5c9 +Author: Torsten Schönfeld +AuthorDate: Mon Apr 26 23:38:41 2010 +0200 +Commit: Torsten Schönfeld +CommitDate: Mon May 3 20:13:35 2010 +0200 + + gio: Add a boxed type for GFileAttributeMatcher + + https://bugzilla.gnome.org/show_bug.cgi?id=616892 + + docs/reference/gio/gio.types | 1 + + gio/gfileinfo.c | 18 ++++++++++++++++++ + gio/gfileinfo.h | 1 + + gio/gio.symbols | 1 + + 4 files changed, 21 insertions(+) + +commit 4487b326d781d4359fd76ce51ce4002c9db5d6d5 +Author: Tor Lillqvist +AuthorDate: Mon May 3 19:56:46 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Mon May 3 19:56:46 2010 +0300 + + Fix list of sources in the gio Visual Studio project + + List the additional sources needed in gio/Makefile.am, not in + gio.vcprojin. Fix broken usage of sort. Filter out Unix-only source + files. + + build/win32/vs9/gio.vcprojin | 9 --------- + gio/Makefile.am | 14 ++++++++++++-- + 2 files changed, 12 insertions(+), 11 deletions(-) + +commit 0f795345d68be2af96cc030972786f2989ffd8c0 +Author: Tor Lillqvist +AuthorDate: Mon May 3 19:24:35 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Mon May 3 19:24:35 2010 +0300 + + Fix misspelled identifier in the Win32 code + + gio/gsocket.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 622916b731354c2dcd4178abf3ada08ca51dd38c +Author: Dan Winship +AuthorDate: Sun Apr 25 22:54:12 2010 -0400 +Commit: Dan Winship +CommitDate: Mon May 3 12:08:14 2010 -0400 + + g_cancellable_release_fd: allow NULL cancellable + + Almost all GCancellable methods silently do nothing if passed NULL for + the cancellable. Make g_cancellable_release_fd() do that as well. + + gio/gcancellable.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 644dfbd704d103df3a7ac13f31cfb87aa03f377d +Author: Ryan Lortie +AuthorDate: Sun May 2 14:14:30 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun May 2 14:15:33 2010 -0500 + + GSettings: fix mixed use of a pointer + + - used in some places as a move-along-as-we-go pointer + - used in other places as a pointer to the fixed base of an array + + Switch all users to the first style to avoid a crasher. + + gio/gsettingsbackend.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit 5821b7f099feaa58e9e476187d22a0a917cb099e +Author: Kjartan Maraas +AuthorDate: Sat May 1 14:25:22 2010 +0200 +Commit: Kjartan Maraas +CommitDate: Sat May 1 14:26:10 2010 +0200 + + Updated Norwegian bokmål translation + + po/nb.po | 1024 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 517 insertions(+), 507 deletions(-) + +commit 4c10cad66175c9a4a79b764c2f807482811c5dcc +Author: Christian Persch +AuthorDate: Wed Apr 28 12:36:30 2010 +0200 +Commit: Christian Persch +CommitDate: Sat May 1 13:57:11 2010 +0200 + + Add API to get the compile and match flags from a GRegex + + Bug #616967. + + docs/reference/glib/glib-sections.txt | 2 ++ + docs/reference/glib/tmpl/gregex.sgml | 18 ++++++++++++++++++ + glib/glib.symbols | 2 ++ + glib/gregex.c | 36 + +++++++++++++++++++++++++++++++++++ + glib/gregex.h | 3 +++ + 5 files changed, 61 insertions(+) + +commit 3d5ce40624561dc2f4779c5f9fc7f8b7d745aecd +Author: Shaun McCance +AuthorDate: Thu Apr 29 19:27:56 2010 -0500 +Commit: Shaun McCance +CommitDate: Thu Apr 29 19:27:56 2010 -0500 + + [gvariant-varargs.xml] Fix some outdated documentation + + docs/reference/glib/gvariant-varargs.xml | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +commit 8dddf6499e9e8a052a5673fe8771aeaac08cccae +Author: Ryan Lortie +AuthorDate: Sun Apr 25 22:00:28 2010 -0500 +Commit: Ryan Lortie +CommitDate: Wed Apr 28 14:41:42 2010 -0500 + + GSettingsBackend API/ABI change + + - add list() virtual method + - add 'default_value' flag to read() call + + gio/gdelayedsettingsbackend.c | 8 ++-- + gio/gio.symbols | 1 + + gio/gkeyfilesettingsbackend.c | 6 ++- + gio/gmemorysettingsbackend.c | 7 +++- + gio/gnullsettingsbackend.c | 3 +- + gio/gsettings.c | 2 +- + gio/gsettingsbackend.c | 91 + ++++++++++++++++++++++++++++++------------ + gio/gsettingsbackend.h | 10 ++++- + gio/gsettingsbackendinternal.h | 3 +- + 9 files changed, 96 insertions(+), 35 deletions(-) + +commit 5215d4b6d316c9357b832c84aae4c4d756224b5d +Author: Ryan Lortie +AuthorDate: Wed Apr 28 12:39:02 2010 -0500 +Commit: Ryan Lortie +CommitDate: Wed Apr 28 12:39:02 2010 -0500 + + Add API for dconf's sake. + + gvdb-builder.c | 6 +-- + gvdb-reader.c | 155 + ++++++++++++++++++++++++++++++++++++++++++++++++--------- + gvdb-reader.h | 16 ++++++ + 3 files changed, 150 insertions(+), 27 deletions(-) + +commit 9ba690b386ebb8dc35665ff07b43c9a5874fda4b +Author: Dan Winship +AuthorDate: Tue Apr 27 09:25:45 2010 -0400 +Commit: Dan Winship +CommitDate: Tue Apr 27 17:04:57 2010 -0400 + + .gitignore updates for gsettings stuff + + docs/reference/gio/.gitignore | 1 + + gio/.gitignore | 2 ++ + gio/tests/.gitignore | 5 +++++ + 3 files changed, 8 insertions(+) + +commit 9e40529e040e715ca65df735013969e20b05a150 +Author: Jorge González +AuthorDate: Tue Apr 27 21:05:13 2010 +0200 +Commit: Jorge González +CommitDate: Tue Apr 27 21:05:13 2010 +0200 + + Updated Spanish translation + + po/es.po | 76 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 38 insertions(+), 38 deletions(-) + +commit 9ca75da1210bb88dc64b768db219f19de2b57573 +Author: Jorge González +AuthorDate: Tue Apr 27 20:59:07 2010 +0200 +Commit: Jorge González +CommitDate: Tue Apr 27 20:59:07 2010 +0200 + + Updated Spanish translation + + po/es.po | 1041 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 530 insertions(+), 511 deletions(-) + +commit 5046dfc85d7df95d7f8c87e3b41d9152bc50549a +Author: Dan Winship +AuthorDate: Mon Apr 12 10:21:20 2010 -0400 +Commit: Dan Winship +CommitDate: Tue Apr 27 09:02:20 2010 -0400 + + GSocket: fix garbled error messages on windows + + socket_strerror() was assuming all "strerror" messages are shorter + than 128 bytes, which is certainly true on Linux, but apparently not + on Windows. + + https://bugzilla.gnome.org/show_bug.cgi?id=615494 + + gio/gsocket.c | 17 +++++------------ + 1 file changed, 5 insertions(+), 12 deletions(-) + +commit 270a954b54521ce0eca6d408b8e8c081c70c3455 +Author: Alexander Larsson +AuthorDate: Tue Apr 27 09:23:07 2010 +0200 +Commit: Alexander Larsson +CommitDate: Tue Apr 27 10:12:25 2010 +0200 + + Allocate quarks in chunks to avoid overhead and fragmentation + + See bug 616720 for some measurements. + + glib/gdataset.c | 36 ++++++++++++++++++++++++++++++++++-- + 1 file changed, 34 insertions(+), 2 deletions(-) + +commit 3ceddd74bb4304e4e9b2e8955b80212108703632 +Author: David Zeuthen +AuthorDate: Mon Apr 26 16:37:02 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon Apr 26 19:19:17 2010 -0400 + + Bug 616877 – Several issues with g_socket_receive_message + + The messages array was not reallocated correctly because it was using + malloc instead of realloc. Also, if the user requested messages but + none were received we would segfault. Rewrite the code to fix this + and, for better readability, use GPtrArray instead of rolling our own. + + Also make the docs mention that the user need to free the returned + GSocketControlMessage objects using g_object_unref(). + + Clarify that *messages may be set to %NULL if there are no messages + (this will save pointless allocs of arrays). + + Finally, the Win32 version didn't set messages to the expected value. + + https://bugzilla.gnome.org/show_bug.cgi?id=616877 + + Signed-off-by: David Zeuthen + + gio/gsocket.c | 63 + ++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 36 insertions(+), 27 deletions(-) + +commit cd062e841fecd51845b4a66473c7636706021dff +Author: Ryan Lortie +AuthorDate: Sun Apr 25 20:08:59 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Apr 25 20:08:59 2010 -0500 + + docs and glib.symbols update + + docs/reference/glib/glib-sections.txt | 2 ++ + glib/glib.symbols | 2 ++ + 2 files changed, 4 insertions(+) + +commit 6f7fb3744bbb4d1ee04d4e526d2ff7225c56c426 +Author: Christian Persch +AuthorDate: Sun Apr 25 20:07:26 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Apr 25 20:07:26 2010 -0500 + + Add testcases for and + + Bug #616102. + + gio/tests/Makefile.am | 48 + ++++++++++++++-------- + gio/tests/gschema-compile.c | 40 + ++++++++++-------- + .../array-default-not-in-choices.gschema.xml | 11 +++++ + .../schema-tests/choice-missing-value.gschema.xml | 10 +++++ + .../schema-tests/choices-wrong-type.gschema.xml | 8 ++++ + .../default-not-in-choices.gschema.xml | 11 +++++ + .../schema-tests/default-out-of-range.gschema.xml | 8 ++++ + .../schema-tests/range-missing-max.gschema.xml | 8 ++++ + .../schema-tests/range-missing-min.gschema.xml | 8 ++++ + .../schema-tests/range-wrong-type.gschema.xml | 8 ++++ + 10 files changed, 127 insertions(+), 33 deletions(-) + +commit 22ce6ed82d9d1de823fab071d6dc288abedc1735 +Author: Ryan Lortie +AuthorDate: Sun Apr 25 19:59:59 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Apr 25 20:06:13 2010 -0500 + + Add range restriction to gschema-compiler + + Patch from Christian Persch, with minor modifications. + + Bug #616102 + + gio/gschema-compile.c | 174 + +++++++++++++++++++++++++++++++++++++++++++++----- + gio/gschema.dtd | 6 +- + gio/gsettings.c | 6 +- + 3 files changed, 163 insertions(+), 23 deletions(-) + +commit 5e6e7cbadf2ee48c0e439a416e5fb74e8e5d8dee +Author: Ryan Lortie +AuthorDate: Sun Apr 25 19:10:44 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Apr 25 19:12:14 2010 -0500 + + GVariant: add bind map for strings to byte arrays + + gio/gsettings-mapping.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit a52b6f7df2f91d4aae7f240038ab193a70052db5 +Author: Ryan Lortie +AuthorDate: Sun Apr 25 19:09:35 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Apr 25 19:12:14 2010 -0500 + + Add g_variant_{new,get}_byte_array() + + Now that strings are strictly utf8 this provides a convenient API for + storing non-utf8 string data. + + glib/gvariant.c | 79 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/gvariant.h | 4 +++ + 2 files changed, 83 insertions(+) + +commit 4c189ba6b0ff81e13725029a00f2c4c7ab6a3b00 +Author: Shaun McCance +AuthorDate: Fri Apr 23 21:08:27 2010 -0500 +Commit: Shaun McCance +CommitDate: Sun Apr 25 17:02:55 2010 -0500 + + Make glib_compile_schemas point to a binary that exists + + gio-2.0.pc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9eeab5868f0d8633f63e40f61263cd731ad99d0e +Author: Ryan Lortie +AuthorDate: Sun Apr 25 13:36:36 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Apr 25 13:39:20 2010 -0500 + + GVariant: strings are now utf8 + + - modify serialiser validation function to enforce utf8 encoding + - add documentation to g_variant_new_string(), + g_variant_get_string(), + g_variant_dup_string() + - add 2 new test cases to check that it works + + glib/gvariant-serialiser.c | 10 +++------- + glib/gvariant.c | 12 +++++++++--- + glib/tests/gvariant.c | 33 +++++++++++++++++++++++++++++++++ + 3 files changed, 45 insertions(+), 10 deletions(-) + +commit da306296cf1eb2ce7346e253c3ca46f784a04f8f +Author: Tor Lillqvist +AuthorDate: Sun Apr 25 17:26:41 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Sun Apr 25 17:26:41 2010 +0300 + + Can't use stderr as a field name + + gio/tests/gschema-compile.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 93d300742d6047f121c614df412717e09bc8def0 +Author: Fran Diéguez +AuthorDate: Sat Apr 24 03:46:59 2010 +0200 +Commit: Fran Diéguez +CommitDate: Sat Apr 24 03:46:59 2010 +0200 + + Updated Galician translation + + po/gl.po | 1002 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 506 insertions(+), 496 deletions(-) + +commit c50754c7c9286ba145a52885d65bb6ad50c8a2ef +Author: Matthias Clasen +AuthorDate: Fri Apr 23 20:50:27 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 23 20:50:27 2010 -0400 + + bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit afe3aef7b02e94e1d2b926e131beea2de5f5c96d +Author: Matthias Clasen +AuthorDate: Fri Apr 23 20:49:02 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 23 20:49:02 2010 -0400 + + 2.25.3 + + po/af.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/am.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ar.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/as.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ast.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/az.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/be.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/be@latin.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/bg.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/bn.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/bn_IN.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/bs.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ca.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ca@valencia.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/cs.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/cy.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/da.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/de.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/dz.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/el.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/en@shaw.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/en_CA.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/en_GB.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/eo.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/es.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/et.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/eu.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/fa.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/fi.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/fr.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ga.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/gl.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/gu.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/he.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/hi.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/hr.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/hu.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/hy.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/id.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/is.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/it.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ja.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ka.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/kn.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ko.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ku.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/lt.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/lv.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/mai.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/mg.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/mk.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ml.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/mn.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/mr.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ms.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/nb.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/nds.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ne.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/nl.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/nn.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/oc.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/or.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/pa.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/pl.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ps.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/pt.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/pt_BR.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ro.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ru.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/rw.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/si.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/sk.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/sl.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/sq.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/sr.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/sr@ije.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/sr@latin.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/sv.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/ta.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/te.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/th.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/tl.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/tr.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/tt.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/uk.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/vi.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/wa.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/xh.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/yi.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/zh_CN.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/zh_HK.po | 52 + ++++++++++++++++++++++++++++------------------------ + po/zh_TW.po | 52 + ++++++++++++++++++++++++++++------------------------ + 92 files changed, 2576 insertions(+), 2208 deletions(-) + +commit daa405c191c5efa8ad364414470b8fbdb0673401 +Author: Matthias Clasen +AuthorDate: Fri Apr 23 19:57:14 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 23 20:05:27 2010 -0400 + + Rename in more places + + gio/tests/Makefile.am | 2 +- + gio/tests/gsettings.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 72b80c5bdd6105ea06a55a4dba1c3350a459bb01 +Author: Matthias Clasen +AuthorDate: Fri Apr 23 19:18:41 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 23 19:18:41 2010 -0400 + + Updates + + NEWS | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +commit ec664445a9cf1769e440a25ffb4e17e9e644f6d0 +Author: Matthias Clasen +AuthorDate: Fri Apr 23 17:27:26 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 23 17:27:26 2010 -0400 + + Rename gschema-compile to glib-compile-schemas + + And clean up the autofoo a bit: use an uppercase variable, + check for pkg-config, check for presence of glib-compile-schemas. + + docs/reference/gio/Makefile.am | 4 +- + docs/reference/gio/gio-docs.xml | 2 +- + docs/reference/gio/glib-compile-schemas.xml | 85 + +++++++++++++++++++++++++ + docs/reference/gio/gschema-compile.xml | 85 + ------------------------- + docs/reference/gio/gsettings-schema-convert.xml | 2 +- + docs/reference/gio/migrating.xml | 6 +- + gio-2.0.pc.in | 2 +- + gio/Makefile.am | 6 +- + gio/gsettings.c | 5 +- + gio/tests/gschema-compile.c | 2 +- + m4macros/gsettings.m4 | 13 ++-- + 11 files changed, 109 insertions(+), 103 deletions(-) + +commit e6e7015bbd253b01b51186a931cdd58dfb4390f2 +Author: Matthias Clasen +AuthorDate: Fri Apr 23 14:52:26 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 23 15:03:35 2010 -0400 + + Fix up man page handling + + Turns out the formatted man pages did not end up in the tarballs. Doh. + + docs/reference/gio/Makefile.am | 32 +++++++++++++++++++++----------- + 1 file changed, 21 insertions(+), 11 deletions(-) + +commit 172c229c8f7965d2b40da56ec7147a250dfdee83 +Author: Ryan Lortie +AuthorDate: Fri Apr 23 13:54:02 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 23 13:54:02 2010 -0400 + + add missing #endif from last patch + + gio/gnetworkingprivate.h | 1 + + 1 file changed, 1 insertion(+) + +commit 1504a77655ec5291b8bccb321bc7e349dd2d53d3 +Author: Dan Winship +AuthorDate: Thu Feb 25 11:40:31 2010 -0500 +Commit: Dan Winship +CommitDate: Fri Apr 23 12:38:33 2010 -0400 + + GSocket: define CMSG_LEN and CMSG_SPACE if the system doesn't + + https://bugzilla.gnome.org/show_bug.cgi?id=589989 + + gio/gnetworkingprivate.h | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +commit 29f3e3f7663606872361079b6475b441df1f4a63 +Author: Dan Winship +AuthorDate: Thu Dec 31 10:29:23 2009 -0500 +Commit: Dan Winship +CommitDate: Fri Apr 23 12:31:31 2010 -0400 + + GSocket: add support for timeouts + + Also add options for testing timeouts to socket test programs + + https://bugzilla.gnome.org/show_bug.cgi?id=587898 + + docs/reference/gio/gio-sections.txt | 2 + + gio/gio.symbols | 2 + + gio/gsocket.c | 184 + +++++++++++++++++++++++++++++++++--- + gio/gsocket.h | 3 + + gio/tests/socket-client.c | 6 ++ + gio/tests/socket-server.c | 15 +++ + 6 files changed, 200 insertions(+), 12 deletions(-) + +commit 2c4a79c810a3fde1e30989b0c35677bf6e1337fc +Author: Dan Winship +AuthorDate: Thu Jul 9 09:55:00 2009 -0400 +Commit: Dan Winship +CommitDate: Fri Apr 23 12:25:56 2010 -0400 + + GSocket: Merge the unix and windows socket sources together + + And remove the bits that were added to gasynchelper.c to support the + previous unix socket source. + + part of https://bugzilla.gnome.org/show_bug.cgi?id=587898 + + gio/gasynchelper.c | 38 ++++---------- + gio/gasynchelper.h | 27 ++-------- + gio/gsocket.c | 144 + ++++++++++++++++++++++++----------------------------- + 3 files changed, 77 insertions(+), 132 deletions(-) + +commit 5b329c506a8de5d21c3cd251be05a8d6b1f7fdba +Author: Dan Winship +AuthorDate: Fri Apr 23 12:21:38 2010 -0400 +Commit: Dan Winship +CommitDate: Fri Apr 23 12:24:30 2010 -0400 + + gio/tests/socket-client, socket-server: fix for win32 + + The addition of unix socket support broke these on win32 + + gio/tests/socket-client.c | 2 ++ + gio/tests/socket-common.c | 6 +++++- + gio/tests/socket-server.c | 2 ++ + 3 files changed, 9 insertions(+), 1 deletion(-) + +commit 3baff96b37060d5f771337e797343e507a79baf1 +Author: David Zeuthen +AuthorDate: Fri Apr 23 12:14:37 2010 -0400 +Commit: David Zeuthen +CommitDate: Fri Apr 23 12:14:37 2010 -0400 + + Make sure G_TYPE_ERROR shows up in the docs + + This is related to bug 614541. + + Signed-off-by: David Zeuthen + + docs/reference/gobject/gobject-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit f68dc4d97d7aeaa8588a4ea0d36f057cd5aaf42e +Author: Javier Jardón +AuthorDate: Fri Apr 23 15:39:44 2010 +0200 +Commit: Javier Jardón +CommitDate: Fri Apr 23 17:36:35 2010 +0200 + + [gsettings] Change AM_GSETTINGS macro to GLIB_GSETTINGS + + So we don't use Automake's macro namespace + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=616648 + + docs/reference/gio/migrating.xml | 4 ++-- + m4macros/gsettings.m4 | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 38e2273207783e4396aabd47bdab5f28155ad6ae +Author: Emmanuele Bassi +AuthorDate: Tue Apr 6 16:17:18 2010 +0100 +Commit: Emmanuele Bassi +CommitDate: Fri Apr 23 15:26:49 2010 +0100 + + Add G_GNUC_DEPRECATED_FOR macro + + It would be good, error reporting-wise, to be able to signal which + function should be used instead of a deprecated one. GCC 4.5 added an + optional "message" payload to the deprecated attribute, so that: + + void f1 (void) __attribute__((deprecated("Use f2 instead"))); + + Will expand to: + + warning: f1 is deprecated: Use f2 instead + + Instead of just printing: + + warning: f1 is deprecated + + Since we already have a G_GNUC_DEPRECATED macro we should provide a + G_GNUC_DEPRECATED_FOR macro defined as: + + G_GNUC_DEPRECATED_FOR(bar) + + Which would expand the deprecation message to "Use bar instead" + automatically. The deprecation message should probably be similar + to what we use in gtk-doc to match up with the documentation. + + https://bugzilla.gnome.org/show_bug.cgi?id=614965 + + glib/gmacros.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 8f82b994c9963ad23a32f302dc2166f5ca4c2564 +Author: Matthias Clasen +AuthorDate: Thu Apr 22 22:24:38 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 22 22:24:38 2010 -0400 + + bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7c5849abc06a04c0dbaf2902b8104dcec90fa9b6 +Author: Matthias Clasen +AuthorDate: Thu Apr 22 22:23:09 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 22 22:23:09 2010 -0400 + + 2.25.2 + + po/af.po | 117 +++++- + po/am.po | 117 +++++- + po/ar.po | 117 +++++- + po/as.po | 117 +++++- + po/ast.po | 117 +++++- + po/az.po | 117 +++++- + po/be.po | 117 +++++- + po/be@latin.po | 117 +++++- + po/bg.po | 117 +++++- + po/bn.po | 117 +++++- + po/bn_IN.po | 117 +++++- + po/bs.po | 117 +++++- + po/ca.po | 117 +++++- + po/ca@valencia.po | 990 ++++++++++++++++++++++++------------------------ + po/cs.po | 117 +++++- + po/cy.po | 117 +++++- + po/da.po | 117 +++++- + po/de.po | 117 +++++- + po/dz.po | 117 +++++- + po/el.po | 117 +++++- + po/en@shaw.po | 117 +++++- + po/en_CA.po | 117 +++++- + po/en_GB.po | 117 +++++- + po/eo.po | 117 +++++- + po/es.po | 1078 + ++++++++++++++++++++++++++++------------------------- + po/et.po | 117 +++++- + po/eu.po | 117 +++++- + po/fa.po | 117 +++++- + po/fi.po | 117 +++++- + po/fr.po | 117 +++++- + po/ga.po | 117 +++++- + po/gl.po | 990 ++++++++++++++++++++++++------------------------ + po/gu.po | 117 +++++- + po/he.po | 117 +++++- + po/hi.po | 117 +++++- + po/hr.po | 117 +++++- + po/hu.po | 117 +++++- + po/hy.po | 117 +++++- + po/id.po | 117 +++++- + po/is.po | 117 +++++- + po/it.po | 118 +++++- + po/ja.po | 117 +++++- + po/ka.po | 117 +++++- + po/kn.po | 1011 + +++++++++++++++++++++++++------------------------ + po/ko.po | 117 +++++- + po/ku.po | 117 +++++- + po/lt.po | 117 +++++- + po/lv.po | 117 +++++- + po/mai.po | 117 +++++- + po/mg.po | 117 +++++- + po/mk.po | 117 +++++- + po/ml.po | 117 +++++- + po/mn.po | 117 +++++- + po/mr.po | 117 +++++- + po/ms.po | 117 +++++- + po/nb.po | 117 +++++- + po/nds.po | 117 +++++- + po/ne.po | 117 +++++- + po/nl.po | 118 +++++- + po/nn.po | 117 +++++- + po/oc.po | 117 +++++- + po/or.po | 117 +++++- + po/pa.po | 117 +++++- + po/pl.po | 117 +++++- + po/ps.po | 117 +++++- + po/pt.po | 117 +++++- + po/pt_BR.po | 117 +++++- + po/ro.po | 117 +++++- + po/ru.po | 117 +++++- + po/rw.po | 117 +++++- + po/si.po | 117 +++++- + po/sk.po | 117 +++++- + po/sl.po | 117 +++++- + po/sq.po | 117 +++++- + po/sr.po | 117 +++++- + po/sr@ije.po | 117 +++++- + po/sr@latin.po | 117 +++++- + po/sv.po | 117 +++++- + po/ta.po | 117 +++++- + po/te.po | 117 +++++- + po/th.po | 117 +++++- + po/tl.po | 117 +++++- + po/tr.po | 117 +++++- + po/tt.po | 117 +++++- + po/uk.po | 117 +++++- + po/vi.po | 117 +++++- + po/wa.po | 117 +++++- + po/xh.po | 117 +++++- + po/yi.po | 117 +++++- + po/zh_CN.po | 117 +++++- + po/zh_HK.po | 117 +++++- + po/zh_TW.po | 117 +++++- + 92 files changed, 12078 insertions(+), 2289 deletions(-) + +commit 25725345fbb184ecbdc62c7ac418cd01f0fc8b0f +Author: Matthias Clasen +AuthorDate: Thu Apr 22 22:01:19 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 22 22:01:19 2010 -0400 + + Fix up distcheck + + docs/reference/gio/Makefile.am | 2 +- + docs/reference/gio/gio.types | 1 + + gio/gio.symbols | 1 + + 3 files changed, 3 insertions(+), 1 deletion(-) + +commit b2ee97d00db227c042158951467495baf68529e4 +Author: Matthias Clasen +AuthorDate: Thu Apr 22 20:48:24 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 22 20:49:20 2010 -0400 + + Fix up g_variant_compare addition + + docs/reference/glib/glib-sections.txt | 1 + + glib/glib.symbols | 1 + + glib/gvariant.c | 2 ++ + glib/gvariant.h | 3 ++- + 4 files changed, 6 insertions(+), 1 deletion(-) + +commit 8f7122433f69180533b15584ae5abf0e50007207 +Author: Matthias Clasen +AuthorDate: Thu Apr 22 20:15:29 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 22 20:15:29 2010 -0400 + + More updates + + NEWS | 30 ++++++++++++++++++++++++++++-- + 1 file changed, 28 insertions(+), 2 deletions(-) + +commit b440cc154669b492b5301e221d85bf6b8586a994 +Author: Matthias Clasen +AuthorDate: Thu Apr 22 20:10:56 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 22 20:10:56 2010 -0400 + + Add a boxed type for GError + + Patch by Sebastian Dröge, bug 614541 + + gobject/gboxed.c | 13 +++++++++++++ + gobject/gboxed.h | 9 +++++++++ + gobject/gobject.symbols | 1 + + 3 files changed, 23 insertions(+) + +commit 4a62a00c4c52634062caaaa1de9c48246f393967 +Author: Matthias Clasen +AuthorDate: Thu Apr 22 20:02:49 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 22 20:03:53 2010 -0400 + + Document --dry-run option of gschema-compile + + docs/reference/gio/gschema-compile.xml | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 00a7c2e635a4fa95257779c271f0eaa5992e2b37 +Author: Behdad Esfahbod +AuthorDate: Thu Apr 22 19:48:13 2010 -0400 +Commit: Behdad Esfahbod +CommitDate: Thu Apr 22 19:48:45 2010 -0400 + + Bug 615379 - g_new macros crash if sizeof(struct_type) == 0 + + glib/gmem.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 7b43d2d299ef58f5d174b1b5bf4704488981259b +Author: Matthias Clasen +AuthorDate: Thu Apr 22 19:31:39 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 22 19:31:39 2010 -0400 + + Fix !srcdir build + + Bug 616216 + + gthread/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 708d540a6f364b254f001b863be837ca9a0e1797 +Author: Matthias Clasen +AuthorDate: Thu Apr 22 01:29:53 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 22 19:24:03 2010 -0400 + + Updates + + NEWS | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 626e90403e8b77ebd77e75e7239defbfe06eb941 +Author: Carles Ferrando +AuthorDate: Fri Apr 23 00:45:49 2010 +0200 +Commit: Gil Forcada +CommitDate: Fri Apr 23 00:45:49 2010 +0200 + + Updated Catalan (Valencian) translation + + po/ca@valencia.po | 1363 + +++++++++++++++++++++++++++++------------------------ + 1 file changed, 748 insertions(+), 615 deletions(-) + +commit daa1a73c752e66d53de6016a9baa2be14d59af61 +Author: Ryan Lortie +AuthorDate: Thu Apr 22 15:44:54 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 22 15:45:47 2010 -0400 + + Add a missing 'static' on internal functions + + gvdb-builder.c | 2 +- + gvdb-reader.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 19d8cc33759e38a7cfcf7ddaa2e80e7c4ddc2d3c +Author: Dan Winship +AuthorDate: Tue Apr 20 17:23:49 2010 -0400 +Commit: Dan Winship +CommitDate: Thu Apr 22 11:54:41 2010 -0400 + + GUnixSocketAddress: handle abstract sockets with non-0-padded names + + There are apparently two incompatible ways of naming abstract sockets: + pad the sockaddr with 0s and use the entire thing as the name, or else + don't, and just pass a shorter length value to the relevant functions. + We previously only supported the former method. Add support for the + latter. + + Also correctly handle "anonymous" unix sockaddrs (eg, the client side + of a connection, or a socketpair() socket), and add unix domain socket + support to the socket-client and socket-server test programs to make + sure this all works. + + https://bugzilla.gnome.org/show_bug.cgi?id=615960 + + docs/reference/gio/gio-sections.txt | 3 + + gio/gio.symbols | 10 +- + gio/gioenums.h | 34 ++++++ + gio/gsocketaddress.c | 41 +++++-- + gio/gunixsocketaddress.c | 209 + +++++++++++++++++++++++++++++------- + gio/gunixsocketaddress.h | 10 +- + gio/tests/Makefile.am | 1 + + gio/tests/socket-client.c | 54 ++++++---- + gio/tests/socket-common.c | 56 ++++++++++ + gio/tests/socket-server.c | 68 ++++++++---- + gio/tests/unix-fd.c | 61 ++++++++--- + 11 files changed, 438 insertions(+), 109 deletions(-) + +commit 5e892de8afaf564838910f11bdc383ab441417ca +Author: Fran Diéguez +AuthorDate: Thu Apr 22 16:29:06 2010 +0200 +Commit: Fran Diéguez +CommitDate: Thu Apr 22 16:29:06 2010 +0200 + + Updated Galician translations + + po/gl.po | 1079 + +++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 611 insertions(+), 468 deletions(-) + +commit 3e9a296b29c613b8f09c735ad2dabd9048e9025b +Author: Shankar Prasad +AuthorDate: Thu Apr 22 16:09:58 2010 +0530 +Commit: Shankar Prasad +CommitDate: Thu Apr 22 16:09:58 2010 +0530 + + Updated Kannada translations + + po/kn.po | 1122 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 614 insertions(+), 508 deletions(-) + +commit f3e04973e7977841dc946089967c397490f4fd57 +Author: Matthias Clasen +AuthorDate: Thu Apr 22 01:15:54 2010 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 22 01:17:02 2010 -0400 + + Rename gsettings-tool to gsettings + + And make it verb-based. + + docs/reference/gio/Makefile.am | 10 +- + docs/reference/gio/gio-docs.xml | 8 +- + docs/reference/gio/gschema-compile.xml | 7 +- + docs/reference/gio/gsettings-tool.xml | 93 -------- + docs/reference/gio/gsettings.xml | 137 +++++++++++ + gio/Makefile.am | 6 +- + gio/gsettings-tool.c | 410 + +++++++++++++++++++++++++-------- + 7 files changed, 464 insertions(+), 207 deletions(-) + +commit bf0f8ad8ee800b9a1f76a57684b45f79e2e6e5d8 +Author: Javier Jardón +AuthorDate: Thu Apr 22 03:20:17 2010 +0200 +Commit: Javier Jardón +CommitDate: Thu Apr 22 03:20:17 2010 +0200 + + [gsettings] Add g_return_*_if_fail() guards in GSettingsBackend + + gio/gsettingsbackend.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 0fa791b29d4b3aa2154f322dda5a7c0d2caa1ede +Author: Javier Jardón +AuthorDate: Thu Apr 22 03:07:49 2010 +0200 +Commit: Javier Jardón +CommitDate: Thu Apr 22 03:10:42 2010 +0200 + + [gsettings] Add g_return_*_if_fail() guards + + Reported by Christian Persch here: + https://bugzilla.gnome.org/show_bug.cgi?id=616405 + + gio/gsettings.c | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit 78ed401a5146ac1d2f83f19b6a6fcfe789d847cb +Author: Matthias Clasen +AuthorDate: Wed Apr 21 21:03:53 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 21 21:03:53 2010 -0400 + + Add a test for g_settings_get_child + + gio/tests/gsettings.c | 30 ++++++++++++++++++++++++++++++ + 1 file changed, 30 insertions(+) + +commit 88ff21ee92237858b65560d20f255506f2125a55 +Author: Matthias Clasen +AuthorDate: Wed Apr 21 18:08:05 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 21 18:08:05 2010 -0400 + + Be more careful about memory management + + This was leading to crashes, e.g. bug 616432. + + gio/gschema-compile.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit 89b718f7d396c165a023e46c5111549a2a1e2d1c +Author: Matthias Clasen +AuthorDate: Wed Apr 21 17:44:47 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 21 17:45:29 2010 -0400 + + Pedantic terminology fix + + Elements are not function calls and attributes are not arguments... + + gio/gschema-compile.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 0d9a40b8943ec3b9926efad93a28687708cc2038 +Author: Colin Walters +AuthorDate: Wed Apr 21 16:44:26 2010 -0400 +Commit: Colin Walters +CommitDate: Wed Apr 21 16:47:22 2010 -0400 + + Fix typo in GMutex error message + + gthread/gthread-impl.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 585a37f37455e1b91029db6c40b3a0e2932e0604 +Author: Matthias Clasen +AuthorDate: Wed Apr 21 14:47:32 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 21 14:49:05 2010 -0400 + + Handle NULL string properties in bindings + + Admittely, we just handle them by failing the conversion... + + gio/gsettings-mapping.c | 4 +++- + gio/gsettings.c | 6 +++--- + gio/tests/gsettings.c | 1 - + 3 files changed, 6 insertions(+), 5 deletions(-) + +commit 3814868b7a1950286f875b193dd10aa20b482fe6 +Author: Dan Winship +AuthorDate: Wed Apr 21 13:37:59 2010 -0400 +Commit: Dan Winship +CommitDate: Wed Apr 21 13:42:15 2010 -0400 + + gio.symbols: add two missing G_GNUC_CONSTs + + gio/gio.symbols | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 887dd88ac2615d8837e06ce9b18cddeeb04f4494 +Author: Jorge González +AuthorDate: Wed Apr 21 18:46:19 2010 +0200 +Commit: Jorge González +CommitDate: Wed Apr 21 18:46:19 2010 +0200 + + Updated Spanish translation + + po/es.po | 1044 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 569 insertions(+), 475 deletions(-) + +commit 03a0f05058a1156edaab463da03f58b0f4988625 +Author: Matthias Clasen +AuthorDate: Wed Apr 21 12:37:38 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 21 12:37:38 2010 -0400 + + Add a note about requiring a new enough GConf + + docs/reference/gio/migrating.xml | 5 +++++ + 1 file changed, 5 insertions(+) + +commit ccf9361490fa3684b22e52655e3236b2cd28a517 +Author: Matthias Clasen +AuthorDate: Wed Apr 21 12:31:33 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 21 12:33:55 2010 -0400 + + Handle non-readable/-writable properties when binding + + And document readability/writability requirements for binding flags. + + gio/gsettings.c | 31 ++++++++++++++++++++++++++++++- + gio/gsettings.h | 6 ++++-- + 2 files changed, 34 insertions(+), 3 deletions(-) + +commit 8a988e8e88f0b3463c7dd6fc5145174035d4e815 +Author: Matthias Clasen +AuthorDate: Wed Apr 21 12:31:10 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 21 12:31:10 2010 -0400 + + Test binding non-readable/writable properties + + gio/tests/gsettings.c | 88 + ++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 87 insertions(+), 1 deletion(-) + +commit 3bfd739154b09c42b29bfcc38b03ff9b98ed4c4f +Author: Matthias Clasen +AuthorDate: Wed Apr 21 11:50:21 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 21 11:55:00 2010 -0400 + + Rename gsettingsschemaupdatecache to the more sane gschema_compile + + To follow existing glib pc variables for binaries. + + docs/reference/gio/migrating.xml | 7 ++++--- + gio-2.0.pc.in | 2 +- + m4macros/gsettings.m4 | 4 ++-- + 3 files changed, 7 insertions(+), 6 deletions(-) + +commit 662f97fefbdb26eff4283757912350c3c15adf49 +Author: Bastien Nocera +AuthorDate: Wed Apr 21 16:49:00 2010 +0100 +Commit: Bastien Nocera +CommitDate: Wed Apr 21 16:49:00 2010 +0100 + + Update GSettings porting guide for new m4 macro + + docs/reference/gio/migrating.xml | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit 0d322e77a55c3b457361ede40c391a6a0b825c78 +Author: Bastien Nocera +AuthorDate: Wed Apr 21 12:25:23 2010 +0100 +Commit: Bastien Nocera +CommitDate: Wed Apr 21 16:19:09 2010 +0100 + + Add GSettings m4 macros helper + + https://bugzilla.gnome.org/show_bug.cgi?id=616312 + + m4macros/Makefile.am | 2 +- + m4macros/gsettings.m4 | 43 +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 44 insertions(+), 1 deletion(-) + +commit 12b801cab4d639f3ac86f1009e6bfb3f589729c5 +Author: Matthias Clasen +AuthorDate: Wed Apr 21 10:58:05 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 21 10:59:17 2010 -0400 + + Nuke the gsettingsschemadir pc variable + + Not really useful, just use $(prefix)/glib-2.0/schemas. We are getting + m4 sugar to coat this over, anyway. + + docs/reference/gio/migrating.xml | 21 ++++++++++++++------- + gio-2.0.pc.in | 1 - + 2 files changed, 14 insertions(+), 8 deletions(-) + +commit e63a1a3d6e6ce4aa8dd7fb65ccaac0b989de12d9 +Author: Bastien Nocera +AuthorDate: Wed Apr 21 15:02:50 2010 +0100 +Commit: Bastien Nocera +CommitDate: Wed Apr 21 15:04:28 2010 +0100 + + Fix gschema-compile tests for --schema-files changes + + gio/tests/gschema-compile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1c2aea7854e468651807994ad168564c626ae58b +Author: Matthias Clasen +AuthorDate: Wed Apr 21 09:50:17 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 21 09:50:42 2010 -0400 + + Add tests for --allow-any-name + + gio/tests/gschema-compile.c | 40 + +++++++++++++++++++---------- + gio/tests/schema-tests/bad-key.gschema.xml | 2 +- + gio/tests/schema-tests/bad-key2.gschema.xml | 2 +- + gio/tests/schema-tests/bad-key3.gschema.xml | 2 +- + gio/tests/schema-tests/bad-key4.gschema.xml | 2 +- + 5 files changed, 30 insertions(+), 18 deletions(-) + +commit 0b61a87c29f27f988538f92d676a04adfd65b0fd +Author: Bastien Nocera +AuthorDate: Wed Apr 21 12:14:40 2010 +0100 +Commit: Bastien Nocera +CommitDate: Wed Apr 21 14:38:08 2010 +0100 + + Allow passing multiple schemas to gschema-compile + + To make test suites easier to implement + + https://bugzilla.gnome.org/show_bug.cgi?id=616312 + + gio/gschema-compile.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit 9176175fc878bde7143d22f5671b58836985bf44 +Author: Bastien Nocera +AuthorDate: Wed Apr 21 11:15:30 2010 +0100 +Commit: Bastien Nocera +CommitDate: Wed Apr 21 14:37:16 2010 +0100 + + Add mention of GConfBridge in conversion docs + + https://bugzilla.gnome.org/show_bug.cgi?id=616384 + + docs/reference/gio/migrating.xml | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 97084317883ea13f5e9ddc3b496cf1f756d85e4f +Author: Matthias Clasen +AuthorDate: Wed Apr 21 09:34:57 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 21 09:34:57 2010 -0400 + + Remove leftover test data + + gio/tests/schema-tests/bad-type/test.gschema.xml | 7 ------- + gio/tests/schema-tests/incomplete-list/test.gschema.xml | 7 ------- + gio/tests/schema-tests/missing-quotes/test.gschema.xml | 7 ------- + gio/tests/schema-tests/no-default/test.gschema.xml | 6 ------ + gio/tests/schema-tests/overflow/test.gschema.xml | 7 ------- + gio/tests/schema-tests/wrong-category/test.gschema.xml | 7 ------- + 6 files changed, 41 deletions(-) + +commit 64cc81f769ef6ac97b8b9ff4d2693066ffcac63f +Author: Matthias Clasen +AuthorDate: Wed Apr 21 09:33:57 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 21 09:33:57 2010 -0400 + + Add an --allow-any-name option + + This will make it easier for people to keep their GConf key names + in the transition period. + + Conflicts: + + gio/gschema-compile.c + + gio/gschema-compile.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit c83a9762453ea996c5619b8a681d3d1fd2cf473f +Author: Matthias Clasen +AuthorDate: Wed Apr 21 00:43:55 2010 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 21 00:43:55 2010 -0400 + + Add some more schema compiler tests + + gio/tests/Makefile.am | 7 +- + gio/tests/gschema-compile.c | 143 + +++++++-------------------- + gio/tests/schema-tests/bad-key.gschema.xml | 7 ++ + gio/tests/schema-tests/bad-key2.gschema.xml | 7 ++ + gio/tests/schema-tests/bad-key3.gschema.xml | 7 ++ + gio/tests/schema-tests/bad-key4.gschema.xml | 7 ++ + gio/tests/schema-tests/empty-key.gschema.xml | 7 ++ + 7 files changed, 75 insertions(+), 110 deletions(-) + +commit 564714bc95a11fdb06206e91f46a713b67be30ae +Author: Matthias Clasen +AuthorDate: Tue Apr 20 23:40:22 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 20 23:40:22 2010 -0400 + + Fix type mapping for float in gsettings-schema-convert + + Bug 616331. + + gio/gsettings-schema-convert | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit afff087785e1206c4a112367aaf3445dd5cf0c08 +Author: Matthias Clasen +AuthorDate: Tue Apr 20 23:28:49 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 20 23:28:49 2010 -0400 + + Simplify gschema-compile test suite + + Add --one-schema-file option to gschema-compile to allow easier test + setup. Simplify the test setup. + + Bug #616276. + + gio/gschema-compile.c | 52 + ++++++++++++++-------- + gio/tests/Makefile.am | 20 ++++----- + gio/tests/schema-tests/bad-type.gschema.xml | 7 +++ + gio/tests/schema-tests/incomplete-list.gschema.xml | 7 +++ + gio/tests/schema-tests/missing-quotes.gschema.xml | 7 +++ + gio/tests/schema-tests/no-default.gschema.xml | 6 +++ + gio/tests/schema-tests/overflow.gschema.xml | 7 +++ + gio/tests/schema-tests/wrong-category.gschema.xml | 7 +++ + 8 files changed, 85 insertions(+), 28 deletions(-) + +commit 463203ee0aa75e727df3b756fcf589fefc8a99cc +Author: Matthias Clasen +AuthorDate: Tue Apr 20 22:49:32 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 20 22:55:15 2010 -0400 + + Add gettext-domain when required, and allow to specify it on the + cmdline + + Bug 616309 + + docs/reference/gio/gsettings-schema-convert.xml | 8 ++++++++ + gio/gsettings-schema-convert | 16 +++++++++++++--- + 2 files changed, 21 insertions(+), 3 deletions(-) + +commit bedf4c3259756caec97d5aa4cd32d501de2be82e +Author: Matthias Clasen +AuthorDate: Tue Apr 20 22:41:12 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 20 22:55:15 2010 -0400 + + Add documentation and translation for gsettings-tool + + docs/reference/gio/Makefile.am | 3 ++ + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gsettings-tool.xml | 93 + +++++++++++++++++++++++++++++++++++ + gio/gschema-compile.c | 27 ++++++---- + gio/gsettings-tool.c | 33 +++++++------ + po/POTFILES.in | 4 ++ + 6 files changed, 135 insertions(+), 26 deletions(-) + +commit 1dbe06c30a766171d4f018539a92cee237cb63c7 +Author: Matthias Clasen +AuthorDate: Tue Apr 20 20:54:53 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 20 22:55:15 2010 -0400 + + Add a minimal commandline utility to poke GSettings + + gio/Makefile.am | 8 ++- + gio/gsettings-tool.c | 169 + +++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 176 insertions(+), 1 deletion(-) + +commit 3569de342e415c887537d811a0df373cfdb85bc6 +Author: Javier Jardón +AuthorDate: Tue Apr 20 05:38:02 2010 +0200 +Commit: Javier Jardón +CommitDate: Wed Apr 21 02:32:43 2010 +0200 + + [gio] Use G_DEFINE_INTERFACE macro + + Use this macro in gasyncinitable, gconverter, ginitable and + gsocketconnectable + + https://bugzilla.gnome.org/show_bug.cgi?id=616245 + + gio/gasyncinitable.c | 35 +++-------------------------------- + gio/gconverter.c | 35 +++-------------------------------- + gio/ginitable.c | 33 +++++---------------------------- + gio/gsocketconnectable.c | 32 +++++--------------------------- + 4 files changed, 16 insertions(+), 119 deletions(-) + +commit 3585e64be81a6846b23ca0c0c2969a83080a460d +Author: Tor Lillqvist +AuthorDate: Wed Apr 21 03:22:59 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Wed Apr 21 03:22:59 2010 +0300 + + Tweak the generation of the file list in gio.vcproj + + Visual Studio doesn't like slash as directory separator, so use + backslash. While at it, sort the list of files put in the project file + just for clarity. + + gio/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8b6d2c1fc15c91ec174a6b346257a228d3db08e2 +Author: Ryan Lortie +AuthorDate: Tue Apr 20 20:14:50 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 20 20:14:50 2010 -0400 + + remove empty initialisers { } for MSVC's sake + + gio/gsettings.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a4e38786750d538b334b8a7a7cc9f5a3ff48bc33 +Merge: 31a5342 291a5c9 +Author: Ryan Lortie +AuthorDate: Tue Apr 20 20:13:56 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 20 20:13:56 2010 -0400 + + Merge remote branch 'gvdb/master' + +commit 291a5c9ed98cf5456c8d6af0c3113610646de7b3 +Author: Ryan Lortie +AuthorDate: Tue Apr 20 20:12:41 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 20 20:12:41 2010 -0400 + + __value -> value to avoid stomping the C compiler + + gvdb-format.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 31a534278405b77fe8ea4aaa85ba5ae80c92d80e +Author: Matthias Clasen +AuthorDate: Tue Apr 20 19:51:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 20 19:51:28 2010 -0400 + + Refer to the right directory + + docs/reference/gio/migrating.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9488d18a87bdba2b4180280d8109ab5381acf9c8 +Author: Christian Persch +AuthorDate: Tue Apr 20 19:39:03 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 20 19:40:26 2010 -0400 + + Fix gsettings mapping for uint64 + + Bug #616295. + + gio/gsettings-mapping.c | 4 ++-- + gio/tests/gsettings.c | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +commit 1b61680abbf8ba10a24aff52397364c844f368bb +Author: Matthias Clasen +AuthorDate: Tue Apr 20 19:23:52 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 20 19:40:26 2010 -0400 + + Flesh out the porting guide some more + + docs/reference/gio/migrating.xml | 154 + +++++++++++++++++++++++++++++++-------- + gio/gsettings.c | 17 +++-- + 2 files changed, 135 insertions(+), 36 deletions(-) + +commit 3277b77769def1aabfa850858197d02b0afca364 +Author: Matthias Clasen +AuthorDate: Tue Apr 20 15:13:07 2010 -0400 +Commit: Matthias Clasen +CommitDate: Tue Apr 20 19:40:26 2010 -0400 + + Document g_settings_bind_writable + + docs/reference/gio/gio-sections.txt | 1 + + gio/gsettings.c | 36 + +++++++++++++++++++++++++++++++++++- + 2 files changed, 36 insertions(+), 1 deletion(-) + +commit 9717833e8200929f908fa682262fcfda8f964653 +Author: Richard Hughes +AuthorDate: Tue Apr 20 22:25:23 2010 +0100 +Commit: Richard Hughes +CommitDate: Tue Apr 20 22:30:01 2010 +0100 + + Don't crash gsettings-schema-convert for GConf schemas that contain + empty elements + + This can be observed in gnome-power-manager with one of the entries + that + contains + + gio/gsettings-schema-convert | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit f82839b8fe6e112b9cc02637e7544e800524c179 +Author: Ryan Lortie +AuthorDate: Tue Apr 20 17:27:17 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 20 17:27:17 2010 -0400 + + gschema-compile: output to srcdir by default + + If the target directory is not explicitly set then output to the + source + directory. Closes bug #616311 reported by Bastien Nocera. + + gio/gschema-compile.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +commit f5990c1aefe364cfdd8c6d4bcdcc5dce60ced003 +Author: Ryan Lortie +AuthorDate: Tue Apr 20 12:30:12 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 20 12:30:40 2010 -0400 + + GSettings: bind to writablity of a key + + gio/gio.symbols | 1 + + gio/gsettings.c | 103 + +++++++++++++++++++++++++++++++++++++++----------------- + gio/gsettings.h | 5 +++ + 3 files changed, 78 insertions(+), 31 deletions(-) + +commit 890a842b2692292d207e1c473718c57ee1e51c32 +Author: Richard Hughes +AuthorDate: Tue Apr 20 16:14:11 2010 +0100 +Commit: Richard Hughes +CommitDate: Tue Apr 20 16:14:11 2010 +0100 + + Fix up the gtk-doc comment for the GSettings::changed signal + + gio/gsettings.c | 1 + + 1 file changed, 1 insertion(+) + +commit 5445ae78c21a71b3d8eea393bfe70d2ab1c24766 +Author: Ryan Lortie +AuthorDate: Mon Apr 19 14:16:06 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 20 10:37:58 2010 -0400 + + Add g_variant_compare() for like basic types + + glib/gvariant.c | 105 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 104 insertions(+), 1 deletion(-) + +commit 3c54cc074dc783ab4944e1cc15d690b467a09684 +Author: Ryan Lortie +AuthorDate: Mon Apr 19 11:05:04 2010 -0400 +Commit: Ryan Lortie +CommitDate: Tue Apr 20 10:37:33 2010 -0400 + + gschema-compile: return quickly on parse error + + Suggested by Christian Persch in #616102 + + gio/gschema-compile.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit bed462046afd33356b0b0554d0ee8ed31d4a2de0 +Author: Javier Jardón +AuthorDate: Tue Apr 20 01:04:31 2010 +0200 +Commit: Javier Jardón +CommitDate: Tue Apr 20 02:12:02 2010 +0200 + + [docs] Fix G_VALUE_COLLECT_INIT documentation + + Add the documentation to the corresponding section + + This macro was introduced in + commit 546fc0ca331c8d1b3393fe218a697b6a1a1c1072 + + docs/reference/gobject/gobject-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit 4c276d05aa010d54e921ca1de7bdafe262dd278e +Author: Matthias Clasen +AuthorDate: Mon Apr 19 19:01:46 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 19:09:15 2010 -0400 + + Bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f8fa527bfd73833ec1fcdaa13c6b8b5701fb65ae +Author: Matthias Clasen +AuthorDate: Mon Apr 19 19:00:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 19:09:15 2010 -0400 + + 2.25.1 + + po/af.po | 2 +- + po/am.po | 2 +- + po/ar.po | 2 +- + po/as.po | 2 +- + po/ast.po | 2 +- + po/az.po | 2 +- + po/be.po | 2 +- + po/be@latin.po | 2 +- + po/bg.po | 2 +- + po/bn.po | 2 +- + po/bn_IN.po | 2 +- + po/bs.po | 2 +- + po/ca.po | 2 +- + po/ca@valencia.po | 2 +- + po/cs.po | 2 +- + po/cy.po | 2 +- + po/da.po | 2 +- + po/de.po | 2 +- + po/dz.po | 2 +- + po/el.po | 2 +- + po/en@shaw.po | 2 +- + po/en_CA.po | 2 +- + po/en_GB.po | 2 +- + po/eo.po | 2 +- + po/es.po | 2 +- + po/et.po | 2 +- + po/eu.po | 2 +- + po/fa.po | 2 +- + po/fi.po | 2 +- + po/fr.po | 2 +- + po/ga.po | 2 +- + po/gl.po | 2 +- + po/gu.po | 2 +- + po/he.po | 2 +- + po/hi.po | 2 +- + po/hr.po | 2 +- + po/hu.po | 2 +- + po/hy.po | 2 +- + po/id.po | 2 +- + po/is.po | 2 +- + po/it.po | 2 +- + po/ja.po | 2 +- + po/ka.po | 2 +- + po/kn.po | 2 +- + po/ko.po | 2 +- + po/ku.po | 2 +- + po/lt.po | 2 +- + po/lv.po | 2 +- + po/mai.po | 2 +- + po/mg.po | 2 +- + po/mk.po | 2 +- + po/ml.po | 2 +- + po/mn.po | 2 +- + po/mr.po | 2 +- + po/ms.po | 2 +- + po/nb.po | 2 +- + po/nds.po | 2 +- + po/ne.po | 2 +- + po/nl.po | 2 +- + po/nn.po | 2 +- + po/oc.po | 2 +- + po/or.po | 2 +- + po/pa.po | 2 +- + po/pl.po | 2 +- + po/ps.po | 2 +- + po/pt.po | 2 +- + po/pt_BR.po | 2 +- + po/ro.po | 2 +- + po/ru.po | 2 +- + po/rw.po | 2 +- + po/si.po | 2 +- + po/sk.po | 2 +- + po/sl.po | 2 +- + po/sq.po | 2 +- + po/sr.po | 2 +- + po/sr@ije.po | 2 +- + po/sr@latin.po | 2 +- + po/sv.po | 2 +- + po/ta.po | 2 +- + po/te.po | 2 +- + po/th.po | 2 +- + po/tl.po | 2 +- + po/tr.po | 2 +- + po/tt.po | 2 +- + po/uk.po | 2 +- + po/vi.po | 2 +- + po/wa.po | 2 +- + po/xh.po | 2 +- + po/yi.po | 2 +- + po/zh_CN.po | 2 +- + po/zh_HK.po | 2 +- + po/zh_TW.po | 2 +- + 92 files changed, 92 insertions(+), 92 deletions(-) + +commit 3b9de5f10a15086dd4c95e6260a20b8f5e917281 +Author: Matthias Clasen +AuthorDate: Mon Apr 19 18:26:41 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 19:09:15 2010 -0400 + + Don't forget to install and distribute gsettings-schema-convert + + gio/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7d330078e77c51ede181ceda10260fb79a7e2425 +Author: Matthias Clasen +AuthorDate: Mon Apr 19 18:26:41 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 18:26:41 2010 -0400 + + Don't forget to install and distribute gsettings-schema-convert + + gio/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit ca4f0a3d6d99ee1eb4f21aa753b2cc29ac5e2d36 +Author: Matthias Clasen +AuthorDate: Mon Apr 19 17:33:03 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 17:33:03 2010 -0400 + + Bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cd9b8b563f3dc094b72ebc0c7f55e35f4782aab1 +Author: Matthias Clasen +AuthorDate: Mon Apr 19 17:30:42 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 17:30:42 2010 -0400 + + 2.25.0 + + docs/reference/glib/glib-gettextize.1 | 80 +- + docs/reference/glib/gtester-report.1 | 10 +- + docs/reference/glib/gtester.1 | 12 +- + docs/reference/glib/tmpl/async_queues.sgml | 4 + + docs/reference/glib/tmpl/atomic_operations.sgml | 33 +- + docs/reference/glib/tmpl/bookmarkfile.sgml | 4 + + docs/reference/glib/tmpl/byte_order.sgml | 3 + + docs/reference/glib/tmpl/conversions.sgml | 3 + + docs/reference/glib/tmpl/date.sgml | 4 + + docs/reference/glib/tmpl/error_reporting.sgml | 3 + + docs/reference/glib/tmpl/fileutils.sgml | 3 + + docs/reference/glib/tmpl/gregex.sgml | 3 + + docs/reference/glib/tmpl/hooks.sgml | 3 + + docs/reference/glib/tmpl/i18n.sgml | 4 + + docs/reference/glib/tmpl/keyfile.sgml | 4 + + docs/reference/glib/tmpl/limits.sgml | 3 + + docs/reference/glib/tmpl/macros.sgml | 3 + + docs/reference/glib/tmpl/macros_misc.sgml | 3 + + docs/reference/glib/tmpl/main.sgml | 10 + + docs/reference/glib/tmpl/markup.sgml | 3 + + docs/reference/glib/tmpl/memory.sgml | 5 + + docs/reference/glib/tmpl/memory_slices.sgml | 3 + + docs/reference/glib/tmpl/messages.sgml | 3 + + docs/reference/glib/tmpl/misc_utils.sgml | 19 + + docs/reference/glib/tmpl/modules.sgml | 5 + + docs/reference/glib/tmpl/numerical.sgml | 3 + + docs/reference/glib/tmpl/queue.sgml | 4 + + docs/reference/glib/tmpl/scanner.sgml | 3 + + docs/reference/glib/tmpl/spawn.sgml | 3 + + docs/reference/glib/tmpl/string_utils.sgml | 3 + + docs/reference/glib/tmpl/strings.sgml | 3 + + docs/reference/glib/tmpl/testing.sgml | 22 +- + docs/reference/glib/tmpl/trash_stack.sgml | 3 + + docs/reference/glib/tmpl/type_conversion.sgml | 3 + + docs/reference/glib/tmpl/types.sgml | 3 + + docs/reference/glib/tmpl/unicode.sgml | 3 + + docs/reference/glib/tmpl/version.sgml | 3 + + docs/reference/glib/tmpl/warnings.sgml | 3 + + docs/reference/glib/tmpl/windows.sgml | 5 + + docs/reference/gobject/glib-genmarshal.1 | 10 +- + docs/reference/gobject/glib-mkenums.1 | 13 +- + docs/reference/gobject/gobject-query.1 | 10 +- + gio/tests/Makefile.am | 8 +- + gio/tests/gschema-compile.c | 78 +- + gio/tests/gsettings.c | 6 +- + po/af.po | 108 +-- + po/am.po | 108 +-- + po/ar.po | 108 +-- + po/as.po | 108 +-- + po/ast.po | 108 +-- + po/az.po | 108 +-- + po/be.po | 108 +-- + po/be@latin.po | 108 +-- + po/bg.po | 108 +-- + po/bn.po | 978 + ++++++++++++------------ + po/bn_IN.po | 108 +-- + po/bs.po | 108 +-- + po/ca.po | 952 + ++++++++++++----------- + po/ca@valencia.po | 108 +-- + po/cs.po | 108 +-- + po/cy.po | 108 +-- + po/da.po | 942 + +++++++++++------------ + po/de.po | 108 +-- + po/dz.po | 108 +-- + po/el.po | 108 +-- + po/en@shaw.po | 108 +-- + po/en_CA.po | 108 +-- + po/en_GB.po | 108 +-- + po/eo.po | 108 +-- + po/es.po | 108 +-- + po/et.po | 108 +-- + po/eu.po | 108 +-- + po/fa.po | 108 +-- + po/fi.po | 108 +-- + po/fr.po | 108 +-- + po/ga.po | 108 +-- + po/gl.po | 108 +-- + po/gu.po | 974 + +++++++++++------------ + po/he.po | 108 +-- + po/hi.po | 108 +-- + po/hr.po | 108 +-- + po/hu.po | 108 +-- + po/hy.po | 108 +-- + po/id.po | 108 +-- + po/is.po | 108 +-- + po/it.po | 108 +-- + po/ja.po | 108 +-- + po/ka.po | 108 +-- + po/kn.po | 108 +-- + po/ko.po | 108 +-- + po/ku.po | 108 +-- + po/lt.po | 108 +-- + po/lv.po | 108 +-- + po/mai.po | 108 +-- + po/mg.po | 108 +-- + po/mk.po | 108 +-- + po/ml.po | 108 +-- + po/mn.po | 108 +-- + po/mr.po | 974 + +++++++++++------------ + po/ms.po | 108 +-- + po/nb.po | 108 +-- + po/nds.po | 108 +-- + po/ne.po | 108 +-- + po/nl.po | 108 +-- + po/nn.po | 108 +-- + po/oc.po | 108 +-- + po/or.po | 108 +-- + po/pa.po | 108 +-- + po/pl.po | 108 +-- + po/ps.po | 108 +-- + po/pt.po | 108 +-- + po/pt_BR.po | 108 +-- + po/ro.po | 108 +-- + po/ru.po | 108 +-- + po/rw.po | 108 +-- + po/si.po | 108 +-- + po/sk.po | 108 +-- + po/sl.po | 108 +-- + po/sq.po | 108 +-- + po/sr.po | 108 +-- + po/sr@ije.po | 108 +-- + po/sr@latin.po | 108 +-- + po/sv.po | 108 +-- + po/ta.po | 108 +-- + po/te.po | 108 +-- + po/th.po | 108 +-- + po/tl.po | 108 +-- + po/tr.po | 108 +-- + po/tt.po | 108 +-- + po/uk.po | 108 +-- + po/vi.po | 108 +-- + po/wa.po | 108 +-- + po/xh.po | 108 +-- + po/yi.po | 108 +-- + po/zh_CN.po | 108 +-- + po/zh_HK.po | 957 + ++++++++++++----------- + po/zh_TW.po | 942 + +++++++++++------------ + 137 files changed, 8245 insertions(+), 8073 deletions(-) + +commit 80ac5df96b2a5b6c1436e597487526a77b8130fb +Author: Matthias Clasen +AuthorDate: Mon Apr 19 15:07:52 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 15:07:52 2010 -0400 + + Reset interface age to 0 + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 27d2dbacd4d4833c9846a2872cb04f7bced3a3c3 +Author: Christian Persch +AuthorDate: Mon Apr 19 14:18:59 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 14:18:59 2010 -0400 + + Use g_set_error_literal where appropriate + + gio/gschema-compile.c | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit 40869e9544c27bc2d7f3b53aa1f1dda1edf47a8d +Author: Matthias Clasen +AuthorDate: Mon Apr 19 14:04:42 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 14:04:42 2010 -0400 + + Install a dtd in /usr/share/glib-2.0/schemas/gschema.dtd + + gio/Makefile.am | 4 ++++ + gio/gschema.dtd | 40 ++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 44 insertions(+) + +commit 2d38da0746d15e20e832d8573af106a1e83267eb +Author: Matthias Clasen +AuthorDate: Mon Apr 19 13:25:52 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 13:28:00 2010 -0400 + + Remove misnamed files + + gio/tests/schema-tests/no-default/no-default.gschema.xml | 6 ------ + 1 file changed, 6 deletions(-) + +commit 0e48b0638dd54fda1d567c294db0feeb52b324af +Author: Matthias Clasen +AuthorDate: Mon Apr 19 13:14:30 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 13:28:00 2010 -0400 + + Some tests for gschema-compile + + Mostly making sure that we produce reasonable error messages for + typical mistakes. + + gio/tests/Makefile.am | 26 ++++--- + gio/tests/gschema-compile.c | 81 + +++++++++++++++++++++- + gio/tests/schema-tests/bad-type/test.gschema.xml | 7 ++ + .../schema-tests/incomplete-list/test.gschema.xml | 7 ++ + .../schema-tests/missing-quotes/test.gschema.xml | 7 ++ + gio/tests/schema-tests/no-default/test.gschema.xml | 6 ++ + gio/tests/schema-tests/overflow/test.gschema.xml | 7 ++ + .../schema-tests/wrong-category/test.gschema.xml | 7 ++ + 8 files changed, 139 insertions(+), 9 deletions(-) + +commit a64625a134ac2d028e7288a640dc7b01e36edcf5 +Author: Javier Jardón +AuthorDate: Mon Apr 19 17:58:37 2010 +0200 +Commit: Javier Jardón +CommitDate: Mon Apr 19 17:59:23 2010 +0200 + + Little fix in gio/test/Makefile.am + + This was introduced in + commit 4a605693fce718a81f809245be2ebad9978031ac + + gio/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 32477d4fbff400a235f501967492349ae44a475d +Author: Matthias Clasen +AuthorDate: Mon Apr 19 11:40:23 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 11:49:12 2010 -0400 + + Another shadowed variable fix + + See bug 616154. + + gio/gsettings.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 4a605693fce718a81f809245be2ebad9978031ac +Author: Matthias Clasen +AuthorDate: Mon Apr 19 11:31:21 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 11:49:12 2010 -0400 + + Don't segfault when is missing + + Also add a framework for schema compiler tests. + + Fixes bug 616086. + + gio/gschema-compile.c | 10 ++++++- + gio/tests/Makefile.am | 20 +++++++++++-- + gio/tests/gschema-compile.c | 35 + ++++++++++++++++++++++ + .../schema-tests/no-default/no-default.gschema.xml | 6 ++++ + 4 files changed, 67 insertions(+), 4 deletions(-) + +commit ccbafd0f14cca899c07cd6a630096125988be8a9 +Author: David Zeuthen +AuthorDate: Mon Apr 19 10:42:42 2010 -0400 +Commit: David Zeuthen +CommitDate: Mon Apr 19 10:43:48 2010 -0400 + + Bug 615111 – GAsyncInitable's default implementation is broken + + Signed-off-by: David Zeuthen + + gio/gasyncinitable.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 40fdc929f86243a936609a4008e9fb013c9f4f7d +Author: Ryan Lortie +AuthorDate: Mon Apr 19 10:28:44 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 19 10:39:54 2010 -0400 + + Don't write out zero-byte sections in builder + + This and the previous issue caught by Christian Persch in bug #616156 + + gio/gvdb/gvdb-builder.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 646dc7de87a90a833fb86f88c01c0131cabebb22 +Author: Ryan Lortie +AuthorDate: Mon Apr 19 10:18:44 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 19 10:39:54 2010 -0400 + + Whitespace fixups + + gio/gvdb/gvdb-builder.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 33104067d485fdc7596df7da57d43ba123d64927 +Author: Ryan Lortie +AuthorDate: Mon Apr 19 10:17:31 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 19 10:39:54 2010 -0400 + + Fix logic error for missing options in reader + + gio/gvdb/gvdb-reader.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3f354af402b466b194b313d280adaab07123d9e8 +Author: Matthias Clasen +AuthorDate: Mon Apr 19 10:34:42 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 10:34:42 2010 -0400 + + Handle int64 and double types correctly + + gio/gsettings-mapping.c | 146 + ++++++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 122 insertions(+), 24 deletions(-) + +commit a072c1fc293ab7b5e81fd5e5ea29b15941af17fe +Author: Matthias Clasen +AuthorDate: Mon Apr 19 10:34:22 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 10:34:22 2010 -0400 + + Fix up some typos in the new tests + + gio/tests/gsettings.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +commit 2d9811ebdaee294ac9a1826db5be891b2b90d67f +Author: Ryan Lortie +AuthorDate: Mon Apr 19 10:28:44 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 19 10:28:44 2010 -0400 + + Don't write out zero-byte sections in builder + + This and the previous issue caught by Christian Persch in bug #616156 + + gvdb-builder.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 6713b3dbaaabf9bbf196e6bc45d200b092239b59 +Author: Ryan Lortie +AuthorDate: Mon Apr 19 10:18:44 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 19 10:18:44 2010 -0400 + + Whitespace fixups + + gvdb-builder.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dc2b43b3e7bebe5c1fb9dedcb8630c4d45a99266 +Author: Ryan Lortie +AuthorDate: Mon Apr 19 10:17:31 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Apr 19 10:17:31 2010 -0400 + + Fix logic error for missing options in reader + + gvdb-reader.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 230038f684282372f2e9843a7c92273c916ffd49 +Author: Christian Persch +AuthorDate: Mon Apr 19 10:00:03 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 10:00:03 2010 -0400 + + Add testcase for g_settings_bind with [u]int64 properties + + And use different values for the doubles test. + + All of these fail currently since g_settings_bind default mapping + truncate to glong (eek!). + + Bug #616119 + + gio/tests/gsettings.c | 50 + +++++++++++++++++++++++++++++++++++--- + gio/tests/org.gtk.test.gschema.xml | 6 +++++ + 2 files changed, 52 insertions(+), 4 deletions(-) + +commit fac8b91eafb7658ced725265d5df20a5b784698b +Author: Matthias Clasen +AuthorDate: Mon Apr 19 09:49:22 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 09:49:22 2010 -0400 + + Add gsettings-related variables + + gio-2.0.pc.in | 2 ++ + 1 file changed, 2 insertions(+) + +commit dd98785e85b3f8f030b1fc6ebe1610ddf0bf971f +Author: Christian Persch +AuthorDate: Mon Apr 19 09:46:32 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 09:46:32 2010 -0400 + + Rename shadowed variables + + Bug #616154. + + gio/gsettings.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 69bd033e11f63d50f551754dc9e98906d28e3561 +Author: Matthias Clasen +AuthorDate: Mon Apr 19 09:30:22 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 09:31:31 2010 -0400 + + Call setlocale initially + + That seems to be required to make bindtextdomain work in the + l10n tests. See bug 616152. + + gio/tests/gsettings.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 4523b2b9cdb2fecdcfe197a73e645282d2d9b8ae +Author: Tor Lillqvist +AuthorDate: Mon Apr 19 16:13:13 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Mon Apr 19 16:14:45 2010 +0300 + + Bypass l10n tests for now on Windows + + gio/tests/gsettings.c | 25 +++++++++++++++++++++++++ + 1 file changed, 25 insertions(+) + +commit 1064097504c180ad5ed8fd8ce80500da0aca9266 +Author: Matthias Clasen +AuthorDate: Mon Apr 19 08:54:01 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 08:57:19 2010 -0400 + + Add a bit about autofoo for schemas + + Always a good idea to have copiable snipplets in a porting guide... + + docs/reference/gio/migrating.xml | 37 + ++++++++++++++++++++++++++++++------- + 1 file changed, 30 insertions(+), 7 deletions(-) + +commit a96360ad68405304f60636f6048aa2bdf268066d +Author: Tor Lillqvist +AuthorDate: Mon Apr 19 15:48:30 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Mon Apr 19 15:48:30 2010 +0300 + + Avoid non-portable API + + And thus we can build gschema-compile on all platforms, and run it in + tests. + + gio/Makefile.am | 6 +----- + gio/gschema-compile.c | 34 +++++++++++++++++----------------- + gio/tests/Makefile.am | 6 +----- + 3 files changed, 19 insertions(+), 27 deletions(-) + +commit c279b5b999c4a8fea934184eb36d2a994dc07868 +Author: Matthias Clasen +AuthorDate: Mon Apr 19 08:04:57 2010 -0400 +Commit: Matthias Clasen +CommitDate: Mon Apr 19 08:04:57 2010 -0400 + + Add a schema convertion script + + gio/gsettings-schema-convert | 1064 + ++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 1064 insertions(+) + +commit df8800e59a88c011ed84e7a05c6ddeb2a9b38921 +Author: Tor Lillqvist +AuthorDate: Mon Apr 19 12:25:22 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Mon Apr 19 12:28:44 2010 +0300 + + Portability improvements + + Gschema-compile uses glob which is available on Unix only. Thus can't + run the gschema-compile test except on Unix either. + + To avoid an Automake error, comment out the SOURCES and LDADD of + unix-streams which for some reason has been commented out from + TEST_PROGS. + + Can't use a Makefile.am target called foo_PROGRAMS for random files + that aren't actually programs, as Automake assumes EXEEXT should be + appended to the file names. + + gio/Makefile.am | 7 ++++++- + gio/tests/Makefile.am | 18 +++++++++++------- + 2 files changed, 17 insertions(+), 8 deletions(-) + +commit 9af8b8321146cddbe5bee09e972507f023e58ce0 +Author: Tor Lillqvist +AuthorDate: Mon Apr 19 11:32:05 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Mon Apr 19 11:54:56 2010 +0300 + + Add GWin32InputStream and GWin32OutputStream classes + + Correspond to GUnixInputStream and GUnixOutputStream. No true async + support though. But that is how the Win32 API is, for files not + explicitly opened for so-called overlapped IO. + + The API to create these streams takes Win32 HANDLEs. Not file + descriptors, because file descriptors are specific to the C library + used. The user code and GLib might be using different C libraries. + + Also add a test program for the new classes, and a gio-windows-2.0.pc + file. + + Makefile.am | 5 + + build/win32/vs9/glib.vsprops | 4 + + configure.in | 1 + + gio-windows-2.0.pc.in | 11 ++ + gio/Makefile.am | 11 +- + gio/gio.symbols | 27 ++++ + gio/gioerror.c | 27 ++++ + gio/gioerror.h | 4 + + gio/gwin32inputstream.c | 359 + +++++++++++++++++++++++++++++++++++++++++++ + gio/gwin32inputstream.h | 79 ++++++++++ + gio/gwin32outputstream.c | 359 + +++++++++++++++++++++++++++++++++++++++++++ + gio/gwin32outputstream.h | 78 ++++++++++ + gio/tests/Makefile.am | 8 + + gio/tests/win32-streams.c | 292 +++++++++++++++++++++++++++++++++++ + glib-zip.in | 1 + + 15 files changed, 1265 insertions(+), 1 deletion(-) + +commit 48cd4cbba5e580a30aef7b0073e647bcc7118c67 +Author: Matthias Clasen +AuthorDate: Sun Apr 18 23:53:31 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 18 23:53:31 2010 -0400 + + Silence a warning + + g_string_insert_len (s, pos, NULL, 0) is a harmless nop, don't + spew warnings in this case. + + glib/gstring.c | 41 ++++++++++++++++++++++------------------- + 1 file changed, 22 insertions(+), 19 deletions(-) + +commit 32de7d6905d9e26b1de8e030cb275381fde00f03 +Author: Matthias Clasen +AuthorDate: Sun Apr 18 15:57:11 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 18 15:57:11 2010 -0400 + + Fix up docs for backend setup functions + + docs/reference/gio/gio-sections.txt | 4 ++++ + gio/gkeyfilesettingsbackend.c | 2 ++ + gio/gsettingsbackend.c | 2 ++ + 3 files changed, 8 insertions(+) + +commit fd8cdb83e1b5a4b71aa84ca26a000e2fbd7a3d37 +Author: Matthias Clasen +AuthorDate: Sun Apr 18 15:55:14 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 18 15:55:14 2010 -0400 + + Refer to gio-querymodules in the extension point docs + + gio/giomodule.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit b7afff0033a43c10012491ab44d2abd4b06bd039 +Author: Matthias Clasen +AuthorDate: Sun Apr 18 15:54:54 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 18 15:54:54 2010 -0400 + + Add a man page for gio-querymodules + + docs/reference/gio/Makefile.am | 3 +++ + docs/reference/gio/gio-docs.xml | 5 +++++ + docs/reference/gio/gio-querymodules.xml | 33 + +++++++++++++++++++++++++++++++++ + 3 files changed, 41 insertions(+) + +commit e0850b56e2eb13280aa692cb3275640470f59d0d +Author: Matthias Clasen +AuthorDate: Sun Apr 18 15:37:55 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 18 15:37:55 2010 -0400 + + Correct filename extension in help output. + + gio/gschema-compile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit eaae8f6578b4d08146e5599f5b3022485bec629f +Author: Matthias Clasen +AuthorDate: Sun Apr 18 15:35:22 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 18 15:35:22 2010 -0400 + + Whitespace fix + + docs/reference/gio/gschema-compile.xml | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit a6bd74a08d6f9e3fe930ddcb9e93bf19ae4e240a +Author: Matthias Clasen +AuthorDate: Sun Apr 18 14:58:50 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sun Apr 18 14:58:50 2010 -0400 + + Update the gschema-compile docs + + Correct the schema file extension, mention the usual locations + for schemas and add a reference to gsettings-schema-convert. + + docs/reference/gio/gschema-compile.xml | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +commit 9023ac09345d9569d11bc55d66adcfaa92d8811a +Author: David King +AuthorDate: Fri Jul 17 23:06:03 2009 +0200 +Commit: Javier Jardón +CommitDate: Sun Apr 18 20:21:10 2010 +0200 + + [docs] Remove unused sgml template from GObject documentation + + https://bugzilla.gnome.org/show_bug.cgi?id=589351 + + Signed-off-by: Javier Jardón + + docs/reference/gobject/tmpl/gobject-unused.sgml | 87 + ------------------------- + 1 file changed, 87 deletions(-) + +commit 626d8ac9e1f806363160634502ff008a71d7f507 +Author: Matthias Clasen +AuthorDate: Sat Apr 17 21:31:30 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 17 21:31:30 2010 -0400 + + More distcheck fixes + + gio/tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 187883dc586c4b5545d4e58e8c8af176da690ef6 +Author: Matthias Clasen +AuthorDate: Sat Apr 17 21:19:45 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 17 21:20:33 2010 -0400 + + add a keyfile test + + gio/tests/Makefile.am | 2 +- + gio/tests/gsettings.c | 32 ++++++++++++++++++++++++++++++++ + 2 files changed, 33 insertions(+), 1 deletion(-) + +commit f07613997c345224df702076e793dabaada58ec3 +Author: Matthias Clasen +AuthorDate: Sat Apr 17 20:54:53 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 17 20:54:53 2010 -0400 + + More distcheck fix attempts + + gio/tests/Makefile.am | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +commit 87e68c75bc874c94f6152e069f904673243f4fb0 +Author: Matthias Clasen +AuthorDate: Sat Apr 17 20:13:59 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 17 20:13:59 2010 -0400 + + Distcheck fixes + + docs/reference/gio/Makefile.am | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 3db0f554e41496b07c82db96457b8df98947aa0e +Author: Matthias Clasen +AuthorDate: Sat Apr 17 16:57:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 17 16:57:28 2010 -0400 + + Some build fixes + + docs/reference/gio/Makefile.am | 3 ++- + gio/tests/Makefile.am | 2 +- + 2 files changed, 3 insertions(+), 2 deletions(-) + +commit 137cee425f4b5b29ac47ce433e02f6f2734eca47 +Author: Matthias Clasen +AuthorDate: Sat Apr 17 16:48:10 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 17 16:48:10 2010 -0400 + + Correct the sense of an assertion + + gio/tests/gsettings.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d2b837df5d230f6658bafe3bd980f87c590f2b78 +Author: Matthias Clasen +AuthorDate: Sat Apr 17 16:13:22 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 17 16:13:22 2010 -0400 + + Document the tests + + Add a short note for each test that explains what it tries to test. + + gio/tests/gsettings.c | 73 + ++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 72 insertions(+), 1 deletion(-) + +commit 118ae129bc24597d937f30998e643ba83db908f4 +Author: Ryan Lortie +AuthorDate: Sat Apr 17 11:58:52 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Apr 17 11:58:52 2010 -0400 + + GDelayedSettingsBackend: another mandatory fixup + + - emit the "has-unapplied" property notify if dropping the last key + from the changeset due to a mandatory key + + gio/gdelayedsettingsbackend.c | 37 ++++++++++++++++++++++++++----------- + 1 file changed, 26 insertions(+), 11 deletions(-) + +commit e06e441ac23f3752f252e86e1d930678de53c778 +Author: Ryan Lortie +AuthorDate: Sat Apr 17 11:39:04 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Apr 17 11:49:22 2010 -0400 + + GSettings delayed: fix handling of mandatory keys + + - if a key becomes mandatory, drop it from the changeset + + - if we still get failing writes (ie: because of a race) then + drop the + entire changeset and signal that it happened + + gio/gdelayedsettingsbackend.c | 61 + +++++++++++++++++++++++++++++++++++++------ + 1 file changed, 53 insertions(+), 8 deletions(-) + +commit eaaa4d14aa8166b72b4dd7b703b1cca143d725cc +Author: Ryan Lortie +AuthorDate: Sat Apr 17 10:26:10 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Apr 17 10:26:51 2010 -0400 + + add backend setup APIs + + gio/gio.symbols | 5 ++ + gio/gkeyfilesettingsbackend.c | 116 + +++++++++++++++++++++++------------------- + gio/gsettingsbackend.c | 46 +++++++++++++++-- + gio/gsettingsbackend.h | 5 ++ + 4 files changed, 114 insertions(+), 58 deletions(-) + +commit 21f064486c0bf7e338acebcc90b3f21aa57ee7b9 +Author: Matthias Clasen +AuthorDate: Sat Apr 17 01:55:55 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 17 01:55:55 2010 -0400 + + Updates + + NEWS | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +commit c8a7bb6ccd6e56623e549676f826c7a714093cf6 +Author: Matthias Clasen +AuthorDate: Sat Apr 17 01:43:58 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 17 01:48:05 2010 -0400 + + Merge GSettings tests + + gio/tests/Makefile.am | 19 +- + gio/tests/de.po | 17 + + gio/tests/gsettings.c | 917 + +++++++++++++++++++++++++++++++++++++ + gio/tests/org.gtk.test.gschema | 39 ++ + gio/tests/org.gtk.test.gschema.xml | 89 ++++ + 5 files changed, 1079 insertions(+), 2 deletions(-) + +commit 265ca3db9d3fa74ec0035ab70db2b907fade6d26 +Author: Ryan Lortie +AuthorDate: Sat Apr 17 01:27:00 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Apr 17 01:27:00 2010 -0400 + + let binding functions return a floating GVariant + + gio/gsettings.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c8e264b6d0e258241420800978745ca6dcd95137 +Author: Ryan Lortie +AuthorDate: Sat Apr 17 01:02:57 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Apr 17 01:26:34 2010 -0400 + + add GMemorySettingsBackend + + gio/Makefile.am | 2 + + gio/giomodule.c | 2 + + gio/gmemorysettingsbackend.c | 147 + +++++++++++++++++++++++++++++++++++++++++++ + gio/gmemorysettingsbackend.h | 30 +++++++++ + 4 files changed, 181 insertions(+) + +commit 77ab3c28b9ea692476695243b91931cb3c01b24e +Author: Ryan Lortie +AuthorDate: Sat Apr 17 01:02:05 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Apr 17 01:02:05 2010 -0400 + + add pltcheck.sh exception for GChecksum + + gio/pltcheck.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 79bc511d95650231fad8b4a3184ab55dbcc327ff +Author: Ryan Lortie +AuthorDate: Sat Apr 17 00:03:48 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Apr 17 00:40:09 2010 -0400 + + XML schemas are now *.gschema.xml + + gio/gschema-compile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0d7fbae04c616fcce2dec57787b1f0266763735e +Author: Matthias Clasen +AuthorDate: Sat Apr 17 00:36:14 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 17 00:36:14 2010 -0400 + + Remove garbage + + docs/reference/gio/#gio-unused.txt# | 100 + ------------------------------------ + 1 file changed, 100 deletions(-) + +commit bd273f9e09b42969eacbf3fc62a5dee187d96346 +Author: Matthias Clasen +AuthorDate: Sat Apr 17 00:31:41 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 17 00:31:41 2010 -0400 + + Merge the GSettings docs + + docs/reference/gio/Makefile.am | 28 ++- + docs/reference/gio/gio-docs.xml | 76 ++++--- + docs/reference/gio/gio-sections.txt | 82 +++++++ + docs/reference/gio/gio.types | 2 + + docs/reference/gio/gschema-compile.xml | 61 +++++ + docs/reference/gio/gsettings-schema-convert.xml | 105 +++++++++ + docs/reference/gio/migrating.xml | 287 + +++++++++++++++++++++++- + docs/reference/gio/overview.xml | 128 +++++++---- + 8 files changed, 691 insertions(+), 78 deletions(-) + +commit 16637a16873124cd2837502c662c89834786cea5 +Author: Matthias Clasen +AuthorDate: Sat Apr 17 00:16:01 2010 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 17 00:16:01 2010 -0400 + + Document G_SETTINGS_BIND_GET_NO_CHANGES + + gio/gsettings.h | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit a2716ad02085b7d5d19732c187a8b89debf4fc8f +Author: Matthias Clasen +AuthorDate: Fri Apr 16 23:57:26 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 16 23:57:26 2010 -0400 + + Merge the keyfile settings backend. + + gio/Makefile.am | 2 + + gio/gkeyfilesettingsbackend.c | 553 + ++++++++++++++++++++++++++++++++++++++++++ + gio/gkeyfilesettingsbackend.h | 71 ++++++ + 3 files changed, 626 insertions(+) + +commit a187634b29b87c25ea0525d01ee2deffea0fb719 +Author: Ryan Lortie +AuthorDate: Fri Apr 16 23:17:01 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 16 23:23:40 2010 -0400 + + merge GSettings + + gio/Makefile.am | 30 +- + gio/gio-marshal.list | 2 + + gio/gio.h | 1 + + gio/gio.symbols | 34 + + gio/gsettings-mapping.c | 367 ++++++++++ + gio/gsettings-mapping.h | 39 ++ + gio/gsettings.c | 1715 + +++++++++++++++++++++++++++++++++++++++++++++++ + gio/gsettings.h | 203 ++++++ + gio/pltcheck.sh | 2 +- + 9 files changed, 2379 insertions(+), 14 deletions(-) + +commit 43a72ce1bea72a581faf34a505004cac941690c3 +Author: Ryan Lortie +AuthorDate: Fri Apr 16 23:20:48 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 16 23:21:08 2010 -0400 + + GSettingsSchema: add call to get list of keys + + gio/gsettingsschema.c | 32 ++++++++++++++++++++++++++++++++ + gio/gsettingsschema.h | 3 +++ + 2 files changed, 35 insertions(+) + +commit 61a5692fa15156ea33f8353e62c0357c46c22f77 +Author: Matthias Clasen +AuthorDate: Fri Apr 16 20:43:53 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 16 20:43:53 2010 -0400 + + Man page tweaks + + Add enough info to keep the docbook stylesheets from embedding + FIXMEs in the formatted output. + + docs/reference/gobject/glib-genmarshal.xml | 3 ++- + docs/reference/gobject/glib-mkenums.xml | 9 +++++++-- + docs/reference/gobject/gobject-query.xml | 3 ++- + 3 files changed, 11 insertions(+), 4 deletions(-) + +commit 51d40405de0df498e003ffd24399e11cf63f0ef9 +Author: Matthias Clasen +AuthorDate: Fri Apr 16 20:40:02 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 16 20:40:02 2010 -0400 + + Man page tweaks + + docs/reference/glib/glib-gettextize.xml | 5 +++-- + docs/reference/glib/gtester-report.xml | 6 +++++- + docs/reference/glib/gtester.xml | 6 +++++- + 3 files changed, 13 insertions(+), 4 deletions(-) + +commit a922596e549eb26fac6119457bc019c851f69148 +Author: Matthias Clasen +AuthorDate: Fri Apr 16 19:30:58 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 16 19:30:58 2010 -0400 + + Some doc tweaks + + gio/gsettingsbackend.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit 4c90d4cd45768be45c1dcea74703bfda00849ef4 +Author: Matthias Clasen +AuthorDate: Fri Apr 16 19:13:51 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 16 19:13:51 2010 -0400 + + Add indices for 2.26 api additions + + docs/reference/gio/gio-docs.xml | 4 ++++ + docs/reference/glib/glib-docs.sgml | 4 ++++ + 2 files changed, 8 insertions(+) + +commit ac5c1e2db6203cf3fa78233886529711c6282ea2 +Author: Ryan Lortie +AuthorDate: Fri Apr 16 14:30:12 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 16 14:30:12 2010 -0400 + + set version to 2.25.0 + + configure.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d4a4a4ccdb30456ba2486f8b2196cfbcb30bd312 +Author: Ryan Lortie +AuthorDate: Fri Apr 16 12:02:44 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 16 12:02:44 2010 -0400 + + GSettings: import delayed backend to master + + gio/Makefile.am | 2 + + gio/gdelayedsettingsbackend.c | 317 + ++++++++++++++++++++++++++++++++++++++++++ + gio/gdelayedsettingsbackend.h | 73 ++++++++++ + 3 files changed, 392 insertions(+) + +commit 04c1eadfff5b382f4f54877d62b4703b6f1620f4 +Author: Ryan Lortie +AuthorDate: Fri Apr 16 12:02:29 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 16 12:02:29 2010 -0400 + + GSettings: more PLT/visibility fixups + + gio/gnullsettingsbackend.c | 3 +++ + gio/gsettingsbackendinternal.h | 5 ----- + gio/gsettingsschema.h | 6 ++++++ + gio/pltcheck.sh | 2 +- + 4 files changed, 10 insertions(+), 6 deletions(-) + +commit 149224664f639efaf5cc2a928ed9ffb525ec8591 +Author: Ryan Lortie +AuthorDate: Fri Apr 16 11:58:04 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 16 12:01:56 2010 -0400 + + gio.symbols: remove pointless whitespace + + gio/gio.symbols | 2 -- + 1 file changed, 2 deletions(-) + +commit 2474ebf15eccb9fd8513a7dc40789d3a7f0bbb9c +Author: Ryan Lortie +AuthorDate: Fri Apr 16 12:01:40 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 16 12:01:56 2010 -0400 + + GSettingsBackend: fix type in g_return_val_if_fail + + gio/gsettingsbackend.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 69801f8dc84c0c9403df6802eccc5d03328cd3ae +Merge: 897bd9f caad55d +Author: Ryan Lortie +AuthorDate: Fri Apr 16 11:05:22 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 16 11:05:22 2010 -0400 + + Merge remote branch 'gvdb/master' + +commit caad55d7266c2658f823ea734c4381f19b4c5827 +Author: Ryan Lortie +AuthorDate: Fri Apr 16 11:04:15 2010 -0400 +Commit: Ryan Lortie +CommitDate: Fri Apr 16 11:04:15 2010 -0400 + + Fix uninitialised header in the builder. + + gvdb-builder.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 897bd9f3843aabcf9c0d4367c341b04d964bcf0c +Author: Ryan Lortie +AuthorDate: Thu Apr 15 23:35:49 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 15 23:35:49 2010 -0400 + + GSettings: merge the schema compiler + + gio/.gitignore | 1 + + gio/Makefile.am | 9 +- + gio/gschema-compile.c | 544 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 553 insertions(+), 1 deletion(-) + +commit 2bc81577350ad479c6e261b998269bcbde489b5d +Author: Ryan Lortie +AuthorDate: Thu Apr 15 22:30:11 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 15 22:30:11 2010 -0400 + + merge GSettingsSchema + + gio/Makefile.am | 7 +- + gio/gsettingsschema.c | 205 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gsettingsschema.h | 67 +++++++++++++++++ + 3 files changed, 278 insertions(+), 1 deletion(-) + +commit 45a1c41e8cfdeb4edeb7a671b95e599a49c6c281 +Merge: defd75f 3c10369 +Author: Ryan Lortie +AuthorDate: Thu Apr 15 22:14:18 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 15 22:14:39 2010 -0400 + + Merge remote branch 'gvdb/master' + +commit 3c10369bf6df1bad9d25a83b48d6256e5c8ce8f6 +Author: Ryan Lortie +AuthorDate: Thu Apr 15 22:09:42 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 15 22:12:45 2010 -0400 + + Recommend git-merge(1) over git-submodule(1). + + gvdb.doap | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3938c735470a3164f1cf21d9e30652d46323b9a9 +Author: Ryan Lortie +AuthorDate: Thu Apr 15 21:32:54 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 15 21:32:54 2010 -0400 + + Add a brief description to the .doap + + gvdb.doap | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +commit 0fec2048f0b0296fad7a2c7e5db5011d2ecdd323 +Author: Ryan Lortie +AuthorDate: Thu Apr 15 21:26:34 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 15 21:26:34 2010 -0400 + + Initial commit + + gvdb-builder.c | 540 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + gvdb-builder.h | 60 +++++++ + gvdb-format.h | 89 ++++++++++ + gvdb-reader.c | 510 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + gvdb-reader.h | 54 ++++++ + gvdb.doap | 19 ++ + 6 files changed, 1272 insertions(+) + +commit defd75fbc53511e27d178373ba6caa226c1ab3cf +Author: Ryan Lortie +AuthorDate: Thu Apr 15 18:30:06 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 15 18:30:06 2010 -0400 + + GSettingsBackend: fix NULL vs "" context issues + + gio/gsettingsbackend.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 3e36ee34269273df6a8d56fee7e7ee10eb913379 +Author: Ryan Lortie +AuthorDate: Thu Apr 15 18:22:14 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 15 18:22:14 2010 -0400 + + add 'null' GSettings backend + + gio/Makefile.am | 2 + + gio/gnullsettingsbackend.c | 107 + +++++++++++++++++++++++++++++++++++++++++++++ + gio/gnullsettingsbackend.h | 30 +++++++++++++ + 3 files changed, 139 insertions(+) + +commit c2675af4d7d54676745d2c36821ce085cce12111 +Author: Ryan Lortie +AuthorDate: Thu Apr 15 18:21:49 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 15 18:22:04 2010 -0400 + + GSettings: Modify backend API + + gio/gsettingsbackend.c | 54 + ++++++++++++++++++++++++++---------------- + gio/gsettingsbackend.h | 11 +++++---- + gio/gsettingsbackendinternal.h | 14 +++++++---- + 3 files changed, 50 insertions(+), 29 deletions(-) + +commit 18ba085d0ad28e7edbe575addacbaa2bb13d9f1c +Author: Ryan Lortie +AuthorDate: Thu Apr 15 14:59:41 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 15 14:59:41 2010 -0400 + + merge GSettingsBackend + + docs/reference/gio/Makefile.am | 1 + + gio/Makefile.am | 9 + + gio/gio.symbols | 14 + + gio/gsettingsbackend.c | 877 + +++++++++++++++++++++++++++++++++++++++++ + gio/gsettingsbackend.h | 122 ++++++ + gio/gsettingsbackendinternal.h | 100 +++++ + gio/pltcheck.sh | 2 +- + 7 files changed, 1124 insertions(+), 1 deletion(-) + +commit 8d6492ed153fa30b9edaa839a2d93f2651e7aa46 +Author: Ryan Lortie +AuthorDate: Thu Apr 15 14:44:59 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 15 14:44:59 2010 -0400 + + Remove accidental checkins + + docs/reference/gio/aa | 74 + ------------------------------------------------- + docs/reference/gio/b | 77 + --------------------------------------------------- + docs/reference/gio/bb | 77 + --------------------------------------------------- + 3 files changed, 228 deletions(-) + +commit bf2719c815d719d1899b4bdb1b81ff6798471094 +Author: Lars Ellenberg +AuthorDate: Thu Apr 15 19:03:05 2010 +0200 +Commit: Benjamin Otte +CommitDate: Thu Apr 15 19:03:05 2010 +0200 + + Cast to volatile to avoid warnings from -Wcast-qual + + https://bugzilla.gnome.org/show_bug.cgi?id=457641 + + glib/gatomic.h | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 056326c1e96db2c2101fa320062e0c9146f0d73f +Author: Ryan Lortie +AuthorDate: Thu Apr 15 10:11:30 2010 -0400 +Commit: Ryan Lortie +CommitDate: Thu Apr 15 10:11:30 2010 -0400 + + g_string_append_len() accept NULL with length == 0 + + glib/gstring.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 066df8d867f78ac40368c0d37f20fae400fc03b3 +Author: Sweta Kothari +AuthorDate: Thu Apr 15 16:43:36 2010 +0530 +Commit: Sweta Kothari +CommitDate: Thu Apr 15 16:43:36 2010 +0530 + + Updated gujarati translations + + po/gu.po | 1059 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 513 insertions(+), 546 deletions(-) + +commit ddc6136e1f8f64c97744c4b725cad8cbac5ef8a3 +Author: Sandeep Shedmake +AuthorDate: Thu Apr 15 15:47:39 2010 +0530 +Commit: Sandeep Shedmake +CommitDate: Thu Apr 15 15:47:39 2010 +0530 + + Updated Marathi Translations + + po/mr.po | 1061 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 514 insertions(+), 547 deletions(-) + +commit d17f4bee175cd9149d5f2b1ed1ae6d262d6a1394 +Author: Ryan Lortie +AuthorDate: Wed Apr 14 23:35:56 2010 -0400 +Commit: Ryan Lortie +CommitDate: Wed Apr 14 23:36:23 2010 -0400 + + GVariant: fix for g_variant_iter_loop() + + glib/gvariant.c | 14 +++++++++----- + 1 file changed, 9 insertions(+), 5 deletions(-) + +commit 3349bab02259bc66dbc128ce088ec6415d3e30f0 +Author: Ryan Lortie +AuthorDate: Sat Apr 10 22:01:02 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sat Apr 10 22:01:02 2010 -0400 + + Add g_return_if_fail()s to g_variant_new_from_data() + + also, document that @type must be definite + + glib/gvariant.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit a3dc7f8006e24a14a314ffbffa564d3d76f9cc95 +Author: Theppitak Karoonboonyanan +AuthorDate: Tue Apr 6 14:53:20 2010 +0700 +Commit: Theppitak Karoonboonyanan +CommitDate: Tue Apr 6 14:53:20 2010 +0700 + + Updated Thai translation. + + po/th.po | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit 34b9e9bdd24c8a19c235af58a7c90707fc179f87 +Author: Jordi Serratosa +AuthorDate: Fri Apr 2 14:03:16 2010 +0200 +Commit: Gil Forcada +CommitDate: Fri Apr 2 14:03:16 2010 +0200 + + Fixes to Catalan translation + + po/ca.po | 958 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 482 insertions(+), 476 deletions(-) + +commit 93ea4ab6106327e2f417df1d9b00a5ec597e4a48 +Author: Behdad Esfahbod +AuthorDate: Wed Mar 31 10:50:08 2010 -0400 +Commit: Behdad Esfahbod +CommitDate: Wed Mar 31 10:55:00 2010 -0400 + + Improve docs + + glib/gstring.c | 2 +- + glib/gurifuncs.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit f8470ed55ad3bf29cdc8c151b76c4f14b6be928a +Author: Tor Lillqvist +AuthorDate: Tue Mar 30 20:46:46 2010 +0300 +Commit: Tor Lillqvist +CommitDate: Tue Mar 30 20:46:46 2010 +0300 + + Fix build breakage on Unix + + glib/gstdio.h | 50 +++++++++++++++++++++++++------------------------- + 1 file changed, 25 insertions(+), 25 deletions(-) + +commit 1229281d95802c4c190284c7d331f67194a2553e +Author: Tor Lillqvist +AuthorDate: Sun Mar 21 20:04:18 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Tue Mar 30 19:22:39 2010 +0300 + + Define a public documented type for the struct stat used by g_stat() + + Define GStatBuf as the type used by g_stat() and g_lstat(). Replaces + the non-public struct tag _g_stat_struct. Mostly relevant for Windows + where there are several variants of stat-style structs. On POSIX, is + just another name for struct stat. + + Actually, also on many POSIX systems there are in fact several + variants of struct stat and corresponding stat() and lstat() + functions, but as g_stat and g_lstat are normally on POSIX just macros + that expand to stat and lstat, this should not cause a problem. It's + only when it's the actual g_stat() or g_lstat() implementation inside + GLib that gets called that one needs to be sure the passed struct is + the same as what GLib expects.) + + gio/giomodule.c | 6 +----- + gio/glocalfile.c | 23 +++++++++-------------- + gio/glocalfileinfo.c | 7 +------ + glib/gstdio.c | 32 ++++++++++++++++++-------------- + glib/gstdio.h | 38 +++++++++++++------------------------- + 5 files changed, 42 insertions(+), 64 deletions(-) + +commit e7763678b56e3be073cc55d707a6e92fc2055ee0 +Author: Benjamin Otte +AuthorDate: Fri Mar 26 20:37:09 2010 +0100 +Commit: Ryan Lortie +CommitDate: Mon Mar 29 12:57:35 2010 -0500 + + Fix race in g_cancellable_cancel() + + We need to check priv->cancelled after taking the lock. Previously we + only checked it just before taking the lock, which left a small chance + for a race. + + gio/gcancellable.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 5527a2ac2ce2b5bea10867fb2e39d2f1914cfbe6 +Author: Benjamin Otte +AuthorDate: Fri Mar 26 20:36:10 2010 +0100 +Commit: Ryan Lortie +CommitDate: Mon Mar 29 12:57:35 2010 -0500 + + Remove unneccessary variable from g_cancellable_cancel() + + The variable makes a complicated function even more complicated. + + gio/gcancellable.c | 25 ++++++++++--------------- + 1 file changed, 10 insertions(+), 15 deletions(-) + +commit c3f1025c33ab295eedcf41beeea276171ae2dc27 +Author: Javier Jardón +AuthorDate: Mon Mar 29 18:20:03 2010 +0200 +Commit: Javier Jardón +CommitDate: Mon Mar 29 18:23:48 2010 +0200 + + Remove g_type_class_get_private() public documentation + + This is a internal function needed for the documented + G_TYPE_CLASS_GET_PRIVATE() macro + + This was introduced by error in + commit 81e2aa941bbfd02bf1b6235da12834d282ceda0c + + docs/reference/gobject/tmpl/gobject-unused.sgml | 9 --------- + 1 file changed, 9 deletions(-) + +commit 0f51e995658a50dbecb74b006f05a1ea69f43558 +Author: Javier Jardón +AuthorDate: Sun Mar 28 17:43:33 2010 +0200 +Commit: Javier Jardón +CommitDate: Mon Mar 29 18:17:40 2010 +0200 + + Fix g_type_class_add_private() documentation + + This fixes commit 81e2aa941bbfd02bf1b6235da12834d282ceda0c + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=614185 + + gobject/gtype.c | 48 ++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 44 insertions(+), 4 deletions(-) + +commit 461a4097d1a0a10106254a8fe917fc4e78ccff92 +Author: Ask H. Larsen +AuthorDate: Sun Mar 28 00:13:28 2010 +0100 +Commit: Kenneth Nielsen +CommitDate: Sun Mar 28 00:13:28 2010 +0100 + + Updated Danish translation + + po/da.po | 951 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 479 insertions(+), 472 deletions(-) + +commit 2e27703a815e221052dd4db3e9e848e2401c3b8b +Author: Chao-Hsiung Liao +AuthorDate: Sat Mar 27 20:50:57 2010 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Sat Mar 27 20:50:57 2010 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 966 + ++++++++++++++++++++++++++++++------------------------------ + po/zh_TW.po | 951 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 962 insertions(+), 955 deletions(-) + +commit 0e3c6ef848259051e4c8c8996a71c0d2d8c9b9f0 +Author: Jamil Ahmed +AuthorDate: Sat Mar 27 17:44:03 2010 +0600 +Commit: Jamil Ahmed +CommitDate: Sat Mar 27 17:44:03 2010 +0600 + + Updated Bengali translation + + po/bn.po | 1181 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 594 insertions(+), 587 deletions(-) + +commit 22dc3dd6487e2c794376a5c6850c3a3e7c2beea9 +Author: Matthias Clasen +AuthorDate: Fri Mar 26 15:09:13 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Mar 26 15:09:13 2010 -0400 + + Bump version + + configure.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ca631653acc1e1db0c3ebb05759d05f8bdc35ba6 +Author: Matthias Clasen +AuthorDate: Fri Mar 26 15:08:00 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Mar 26 15:08:00 2010 -0400 + + 2.24.0 + + po/af.po | 24 +- + po/am.po | 24 +- + po/ar.po | 24 +- + po/as.po | 24 +- + po/ast.po | 24 +- + po/az.po | 24 +- + po/be.po | 24 +- + po/be@latin.po | 24 +- + po/bg.po | 24 +- + po/bn.po | 24 +- + po/bn_IN.po | 24 +- + po/bs.po | 24 +- + po/ca.po | 24 +- + po/ca@valencia.po | 24 +- + po/cs.po | 24 +- + po/cy.po | 24 +- + po/da.po | 24 +- + po/de.po | 24 +- + po/dz.po | 24 +- + po/el.po | 24 +- + po/en@shaw.po | 24 +- + po/en_CA.po | 24 +- + po/en_GB.po | 24 +- + po/eo.po | 24 +- + po/es.po | 24 +- + po/et.po | 24 +- + po/eu.po | 82 ++-- + po/fa.po | 24 +- + po/fi.po | 24 +- + po/fr.po | 24 +- + po/ga.po | 24 +- + po/gl.po | 24 +- + po/gu.po | 24 +- + po/he.po | 24 +- + po/hi.po | 24 +- + po/hr.po | 24 +- + po/hu.po | 24 +- + po/hy.po | 24 +- + po/id.po | 24 +- + po/is.po | 24 +- + po/it.po | 24 +- + po/ja.po | 24 +- + po/ka.po | 24 +- + po/kn.po | 24 +- + po/ko.po | 24 +- + po/ku.po | 24 +- + po/lt.po | 24 +- + po/lv.po | 24 +- + po/mai.po | 24 +- + po/mg.po | 24 +- + po/mk.po | 24 +- + po/ml.po | 24 +- + po/mn.po | 24 +- + po/mr.po | 24 +- + po/ms.po | 24 +- + po/nb.po | 24 +- + po/nds.po | 24 +- + po/ne.po | 24 +- + po/nl.po | 24 +- + po/nn.po | 24 +- + po/oc.po | 24 +- + po/or.po | 24 +- + po/pa.po | 24 +- + po/pl.po | 24 +- + po/ps.po | 24 +- + po/pt.po | 24 +- + po/pt_BR.po | 24 +- + po/ro.po | 24 +- + po/ru.po | 24 +- + po/rw.po | 24 +- + po/si.po | 24 +- + po/sk.po | 24 +- + po/sl.po | 24 +- + po/sq.po | 24 +- + po/sr.po | 24 +- + po/sr@ije.po | 24 +- + po/sr@latin.po | 24 +- + po/sv.po | 24 +- + po/ta.po | 24 +- + po/te.po | 24 +- + po/th.po | 24 +- + po/tl.po | 24 +- + po/tr.po | 24 +- + po/tt.po | 24 +- + po/uk.po | 946 +++++++++++++++++++------------------- + po/vi.po | 1311 + +++++++++++++++++++++++++---------------------------- + po/wa.po | 24 +- + po/xh.po | 24 +- + po/yi.po | 24 +- + po/zh_CN.po | 24 +- + po/zh_HK.po | 24 +- + po/zh_TW.po | 24 +- + 92 files changed, 2209 insertions(+), 2266 deletions(-) + +commit 5ba8043f1217b338e220f0c6b427e58e28c241e8 +Author: Matthias Clasen +AuthorDate: Fri Mar 26 11:15:49 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Mar 26 11:15:49 2010 -0400 + + Third try to get this right... + + docs/reference/gio/gio-sections.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f6532620bc2439641b31a5df1d15489121fe918d +Author: Matthias Clasen +AuthorDate: Fri Mar 26 11:05:28 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Mar 26 11:05:28 2010 -0400 + + And another one... + + NEWS | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7c8a1081651d4d17823ac8c6a35d3a60c85c81ac +Author: Matthias Clasen +AuthorDate: Fri Mar 26 11:05:02 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Mar 26 11:05:02 2010 -0400 + + Fix a typo + + gio/giomodule.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 55e44a67e6bc4bf09d4de85ad64627a02595d07f +Author: Matthias Clasen +AuthorDate: Fri Mar 26 10:39:56 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Mar 26 10:39:56 2010 -0400 + + Bump version to 2.24.0 + + configure.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 8ee5ded1e9098adb54005851c09e38cf24bb6a32 +Author: Matthias Clasen +AuthorDate: Fri Mar 26 10:39:33 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Mar 26 10:39:33 2010 -0400 + + Updates + + NEWS | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit 6cce575a25abc8157873d070bb317d66a225485a +Author: Matthias Clasen +AuthorDate: Fri Mar 26 10:24:06 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Mar 26 10:24:06 2010 -0400 + + Fix a typo + + docs/reference/gio/gio-sections.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 78b764f325c12a518e5bcc06771347da06d5ea68 +Author: Matthias Clasen +AuthorDate: Fri Mar 26 10:19:57 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Mar 26 10:19:57 2010 -0400 + + More doc fixups + + gio/giomodule.h | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit 81e2aa941bbfd02bf1b6235da12834d282ceda0c +Author: Matthias Clasen +AuthorDate: Fri Mar 26 10:11:46 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Mar 26 10:11:46 2010 -0400 + + Some more doc cleanups + + docs/reference/gio/gio-sections.txt | 2 ++ + docs/reference/gobject/gobject-sections.txt | 2 +- + docs/reference/gobject/tmpl/gobject-unused.sgml | 9 ++++++ + gobject/gtype.c | 37 + ++++--------------------- + 4 files changed, 17 insertions(+), 33 deletions(-) + +commit c4ea7d58f78ca946fe84718386f9f888b5f93520 +Author: Matthias Clasen +AuthorDate: Fri Mar 26 09:30:25 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Mar 26 09:30:25 2010 -0400 + + Small doc addition + + gio/gconverter.h | 1 + + 1 file changed, 1 insertion(+) + +commit 431840a44e1ec799c974c7ea626c3164ec9dc2bb +Author: Matthias Clasen +AuthorDate: Fri Mar 26 09:22:58 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Mar 26 09:22:58 2010 -0400 + + Add g_io_module_query to docs + + docs/reference/gio/gio-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit 6e77ee097100dc3fd695a6dad8811253cea23436 +Author: Matthias Clasen +AuthorDate: Fri Mar 26 09:01:48 2010 -0400 +Commit: Matthias Clasen +CommitDate: Fri Mar 26 09:03:22 2010 -0400 + + Correct the error handling in splice_stream_with_progress + + We need to get out of both loops, so a simple 'break' doesn't cut it. + Bugs 613748 and 613923 + + gio/gfile.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 409a3a61ece7bbdacbf2469eb7b86c3aa3c44653 +Author: Ryan Lortie +AuthorDate: Fri Mar 26 08:01:51 2010 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 26 08:02:17 2010 -0500 + + GVariant: Stop lexing format strings at : + + Lets us parse this successfully: {%s: %s}. + + glib/gvariant-parser.c | 7 ++++--- + glib/tests/gvariant.c | 1 + + 2 files changed, 5 insertions(+), 3 deletions(-) + +commit df67a0662b0c20ab58f992fc114a48039e7fb9e0 +Author: Maxim V. Dziumanenko +AuthorDate: Fri Mar 26 11:42:19 2010 +0200 +Commit: Maxim V. Dziumanenko +CommitDate: Fri Mar 26 11:42:19 2010 +0200 + + Updated Ukrainian translation + + po/uk.po | 992 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 490 insertions(+), 502 deletions(-) + +commit fd448dd7ceeb4be93f2cfea54a78e0564a3718f0 +Author: Ryan Lortie +AuthorDate: Tue Mar 23 10:01:53 2010 -0500 +Commit: Ryan Lortie +CommitDate: Tue Mar 23 10:01:53 2010 -0500 + + Add doc note about read_until() inconsistency. + + See bug 584284 for more information. + + gio/gdatainputstream.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit a6c57591c0928fee3d3f026289972024bd2b00ec +Author: Ryan Lortie +AuthorDate: Tue Mar 23 09:17:15 2010 -0500 +Commit: Ryan Lortie +CommitDate: Tue Mar 23 09:18:28 2010 -0500 + + Support &s as key of dict entry in format string + + Partial fix for bug 613618. + + glib/gvariant.c | 26 ++++++++++++++++++-------- + glib/tests/gvariant.c | 7 +++++++ + 2 files changed, 25 insertions(+), 8 deletions(-) + +commit 816990a0118f33ae280846ac040803ce58979162 +Author: Ryan Lortie +AuthorDate: Tue Mar 23 09:06:52 2010 -0500 +Commit: Ryan Lortie +CommitDate: Tue Mar 23 09:18:14 2010 -0500 + + GVariant: Removing mentions of &a from docs + + This isn't supported anymore (for the time being...) + + Partial fix for bug 613618. + + docs/reference/glib/gvariant-varargs.xml | 19 +------------------ + 1 file changed, 1 insertion(+), 18 deletions(-) + +commit 35059f2c0415fbd521632d29ecb91e8c93545e0e +Author: Christian Dywan +AuthorDate: Tue Mar 23 11:59:43 2010 +0100 +Commit: Christian Dywan +CommitDate: Tue Mar 23 11:59:43 2010 +0100 + + Correct typo of libray/ library in GObject tutorial + + Fixes bug #613667 + + docs/reference/gobject/tut_gtype.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ace9a25fb39781a01a78c8e9aa1c58a51224e8b8 +Author: Ryan Lortie +AuthorDate: Mon Mar 22 11:59:08 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 22 12:03:24 2010 -0500 + + Bug 613601 - buglet in dup_close_on_exec_fd() + + Fix copy/paste error and 'or' FD_CLOEXEC into the existing flags + instead + of just setting it outright. + + gio/gunixfdlist.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +commit 440713e393cf99e29f716f5f634d4bc4ce0e281c +Author: Tor Lillqvist +AuthorDate: Mon Mar 22 15:53:47 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Mon Mar 22 15:55:11 2010 +0200 + + Filter out gatomic-gcc.c from the VS project sources + + Instead, explicitly include gatomic.c. + + build/win32/vs9/glib.vcprojin | 1 + + glib/Makefile.am | 6 ++++-- + 2 files changed, 5 insertions(+), 2 deletions(-) + +commit 365fd70f263b99646cef7a5335282fd3f1efb520 +Author: Tor Lillqvist +AuthorDate: Mon Mar 22 15:33:38 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Mon Mar 22 15:33:38 2010 +0200 + + Make config.h.win32 match what the configure script produces + + config.h.win32.in | 76 + ++++++++++++++++++++++++++++++++++++++++++++++++++++--- + 1 file changed, 73 insertions(+), 3 deletions(-) + +commit 580ecb32d9af4a7c8a00076a23d82d9729131361 +Author: Inaki Larranaga Murgoitio +AuthorDate: Mon Mar 22 12:34:25 2010 +0100 +Commit: dooteo +CommitDate: Mon Mar 22 12:34:25 2010 +0100 + + Updated Basque language + + po/eu.po | 92 + ++++++++++++++++++++++++++-------------------------------------- + 1 file changed, 37 insertions(+), 55 deletions(-) + +commit e2434fd2d659f976febc3abe08abe82149447d46 +Author: Clytie +AuthorDate: Mon Mar 22 21:33:36 2010 +1030 +Commit: Clytie +CommitDate: Mon Mar 22 21:33:36 2010 +1030 + + Updated Vietnamese translation + + po/vi.po | 1454 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 715 insertions(+), 739 deletions(-) + +commit db83dd27c571e34e2974a4cff560fdfb255c2bf2 +Author: Ryan Lortie +AuthorDate: Sun Mar 21 20:12:18 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Mar 21 20:12:18 2010 -0500 + + Drop { } for favour of { 0, }. + + glib/gvariant-parser.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 468bbbfce1736259ae75bd27847b5b25332ada5c +Author: Ryan Lortie +AuthorDate: Sun Mar 21 20:07:45 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Mar 21 20:07:45 2010 -0500 + + Bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0afc140712a7c6b7cf2179626370b33ca930dea2 +Author: Ryan Lortie +AuthorDate: Sun Mar 21 20:06:39 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Mar 21 20:06:39 2010 -0500 + + 2.23.6 + + NEWS | 41 + + docs/reference/glib/tmpl/glib-unused.sgml | 67 ++ + docs/reference/glib/tmpl/macros_misc.sgml | 5 +- + docs/reference/glib/tmpl/version.sgml | 68 -- + po/af.po | 951 ++++++++++++----------- + po/am.po | 80 +- + po/ar.po | 80 +- + po/as.po | 80 +- + po/ast.po | 80 +- + po/az.po | 80 +- + po/be.po | 80 +- + po/be@latin.po | 80 +- + po/bg.po | 80 +- + po/bn.po | 80 +- + po/bn_IN.po | 80 +- + po/bs.po | 80 +- + po/ca.po | 80 +- + po/ca@valencia.po | 80 +- + po/cs.po | 942 ++++++++++++----------- + po/cy.po | 80 +- + po/da.po | 80 +- + po/de.po | 80 +- + po/dz.po | 80 +- + po/el.po | 942 ++++++++++++----------- + po/en@shaw.po | 80 +- + po/en_CA.po | 80 +- + po/en_GB.po | 80 +- + po/eo.po | 80 +- + po/es.po | 80 +- + po/et.po | 80 +- + po/eu.po | 80 +- + po/fa.po | 80 +- + po/fi.po | 952 ++++++++++++----------- + po/fr.po | 80 +- + po/ga.po | 80 +- + po/gl.po | 951 ++++++++++++----------- + po/gu.po | 80 +- + po/he.po | 80 +- + po/hi.po | 80 +- + po/hr.po | 80 +- + po/hu.po | 80 +- + po/hy.po | 80 +- + po/id.po | 80 +- + po/is.po | 80 +- + po/it.po | 80 +- + po/ja.po | 80 +- + po/ka.po | 80 +- + po/kn.po | 80 +- + po/ko.po | 80 +- + po/ku.po | 80 +- + po/lt.po | 80 +- + po/lv.po | 80 +- + po/mai.po | 80 +- + po/mg.po | 80 +- + po/mk.po | 80 +- + po/ml.po | 80 +- + po/mn.po | 80 +- + po/mr.po | 80 +- + po/ms.po | 80 +- + po/nb.po | 80 +- + po/nds.po | 1187 + +++++++++++++---------------- + po/ne.po | 80 +- + po/nl.po | 80 +- + po/nn.po | 80 +- + po/oc.po | 80 +- + po/or.po | 80 +- + po/pa.po | 970 +++++++++++------------ + po/pl.po | 80 +- + po/ps.po | 80 +- + po/pt.po | 80 +- + po/pt_BR.po | 80 +- + po/ro.po | 948 +++++++++++------------ + po/ru.po | 80 +- + po/rw.po | 80 +- + po/si.po | 80 +- + po/sk.po | 80 +- + po/sl.po | 80 +- + po/sq.po | 80 +- + po/sr.po | 950 ++++++++++++----------- + po/sr@ije.po | 80 +- + po/sr@latin.po | 961 ++++++++++++----------- + po/sv.po | 80 +- + po/ta.po | 80 +- + po/te.po | 80 +- + po/th.po | 80 +- + po/tl.po | 80 +- + po/tr.po | 80 +- + po/tt.po | 80 +- + po/uk.po | 80 +- + po/vi.po | 80 +- + po/wa.po | 80 +- + po/xh.po | 80 +- + po/yi.po | 80 +- + po/zh_CN.po | 80 +- + po/zh_HK.po | 80 +- + po/zh_TW.po | 80 +- + 96 files changed, 8192 insertions(+), 8303 deletions(-) + +commit 5620f96305ee276ac758de989589a93de89ed40a +Author: Ryan Lortie +AuthorDate: Sun Mar 21 14:17:21 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Mar 21 14:17:21 2010 -0500 + + silence some false-alarm uninitialised warnings + + glib/gvariant-parser.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 6f330383974bb235d7050ebef61426541823c33a +Author: Ryan Lortie +AuthorDate: Sun Mar 21 14:04:07 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Mar 21 14:12:48 2010 -0500 + + gtk-doc fixups + + docs/reference/glib/glib-sections.txt | 2 +- + docs/reference/gobject/gobject-sections.txt | 2 ++ + glib/ghash.c | 4 ++-- + glib/gvariant-parser.c | 7 +++++++ + 4 files changed, 12 insertions(+), 3 deletions(-) + +commit c5a1c95b1f991db6700a204e5d41c8cc650c7d42 +Author: Ryan Lortie +AuthorDate: Sun Mar 21 13:46:09 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Mar 21 13:46:09 2010 -0500 + + GVariant docs fixes + + glib/gvariant-parser.c | 16 +++++++++++++++- + glib/gvariant.h | 6 +++--- + 2 files changed, 18 insertions(+), 4 deletions(-) + +commit 5c419c300b43b4e3ac462761dda4360ed1c5de9b +Author: Ryan Lortie +AuthorDate: Sun Mar 21 13:07:36 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Mar 21 13:07:36 2010 -0500 + + gitignore for win32 build stuff + + .gitignore | 1 + + build/win32/vs9/.gitignore | 3 +++ + 2 files changed, 4 insertions(+) + +commit bf4dbdbf0e1a3ac4349980942b9e91056ce7e448 +Author: Ryan Lortie +AuthorDate: Sun Mar 21 12:31:46 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Mar 21 12:55:30 2010 -0500 + + merge GVariant parser + + docs/reference/glib/glib-sections.txt | 7 + + glib/Makefile.am | 1 + + glib/glib.symbols | 7 + + glib/gvariant-parser.c | 2185 + +++++++++++++++++++++++++++++++++ + glib/gvariant.c | 28 +- + glib/gvariant.h | 13 + + glib/tests/gvariant.c | 249 +++- + 7 files changed, 2473 insertions(+), 17 deletions(-) + +commit 2a209cb2516999c4d2f08368c720f7506acde9a5 +Author: Ryan Lortie +AuthorDate: Sun Mar 21 12:54:36 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Mar 21 12:54:36 2010 -0500 + + make check / makedistcheck fixes + + configure.in | 1 - + gobject/gobject.symbols | 2 ++ + 2 files changed, 2 insertions(+), 1 deletion(-) + +commit 3369548130bdd02534f2a6c6e7baa1f29375a41d +Author: Tor Lillqvist +AuthorDate: Sun Mar 21 16:54:11 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Sun Mar 21 16:54:49 2010 +0200 + + Add new headers to be installed the VS "install" project + + Yeah, we should generate the list of headers to install from the + corresponding Makefile.am files, like the lists of source files to + compile. + + build/win32/vs9/glib.vsprops | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit 226cc663e40606e9749a368e9d2b2e61d9a9d532 +Author: Tor Lillqvist +AuthorDate: Sun Mar 21 16:11:49 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Sun Mar 21 16:15:02 2010 +0200 + + Avoid much of duplication in lists of source files + + Don't keep the lists of source files for libglib, libgobject and + libgio in the VS project files in addition to the canonical location, + the corresponding Makefile.am files. + + Instead, generate the corresponding .vcproj files at make dist time + using the C preprocessor, from template files called .vcprojin. We + still list explicitly in the .vcprojin files some of the + Windows-specific source files, and the sources files of gnulib and + pcre. + + build/win32/vs9/Makefile.am | 3 + + build/win32/vs9/README.txt | 3 +- + build/win32/vs9/gio.vcproj | 608 + --------------------------------------- + build/win32/vs9/gio.vcprojin | 234 +++++++++++++++ + build/win32/vs9/glib.vcproj | 570 + ------------------------------------ + build/win32/vs9/glib.vcprojin | 298 +++++++++++++++++++ + build/win32/vs9/gobject.vcproj | 281 ------------------ + build/win32/vs9/gobject.vcprojin | 218 ++++++++++++++ + gio/Makefile.am | 11 +- + glib/Makefile.am | 11 +- + gobject/Makefile.am | 11 +- + 11 files changed, 785 insertions(+), 1463 deletions(-) + +commit 504b8b8f0125dcba530d4f34c4beaaa129cc5d85 +Author: Tor Lillqvist +AuthorDate: Sun Mar 21 14:50:45 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Sun Mar 21 14:50:45 2010 +0200 + + Avoid struct stat issues with MSVC + + gio/giomodule.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 28b025de962a798fa7a9fb9adbfdfcc4852fddec +Author: Tor Lillqvist +AuthorDate: Sun Mar 21 13:33:44 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Sun Mar 21 13:33:44 2010 +0200 + + Drop empty Tool elements from the project files for clarity + + Makes the files appear a bit simpler when edited manually. + + build/win32/vs9/gio.vcproj | 12 ------------ + build/win32/vs9/glib-genmarshal.vcproj | 12 ------------ + build/win32/vs9/glib.vcproj | 12 ------------ + build/win32/vs9/gmodule.vcproj | 12 ------------ + build/win32/vs9/gobject.vcproj | 12 ------------ + build/win32/vs9/gspawn-win32-helper-console.vcproj | 12 ------------ + build/win32/vs9/gspawn-win32-helper.vcproj | 12 ------------ + build/win32/vs9/gthread.vcproj | 12 ------------ + build/win32/vs9/testglib.vcproj | 12 ------------ + 9 files changed, 108 deletions(-) + +commit 2ab76c5b3610faa20dfae2550688ab0d6620b29b +Author: Tor Lillqvist +AuthorDate: Sun Mar 21 11:22:06 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Sun Mar 21 11:22:06 2010 +0200 + + Make the GVariant code compile with a non-gcc compiler + + In particular, tested with Microsoft Visual C 2008. + + glib/gvariant-core.c | 2 +- + glib/gvariant-serialiser.c | 28 ++++++++++++++-------------- + glib/gvariant.c | 8 ++++++-- + glib/gvarianttypeinfo.c | 22 ++++++++++++---------- + 4 files changed, 33 insertions(+), 27 deletions(-) + +commit dc51eff2a9ca234fbb09c7b94c4643ea3750d80d +Author: Tor Lillqvist +AuthorDate: Sat Mar 20 13:32:37 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Sat Mar 20 13:32:37 2010 +0200 + + Update with new source files and dependencies + + build/win32/vs9/gio.vcproj | 36 ++++++++++++++++++++++++++++++++---- + build/win32/vs9/glib.sln | 1 + + build/win32/vs9/glib.vcproj | 21 +++++++++++++++++++++ + build/win32/vs9/gobject.vcproj | 4 ++++ + 4 files changed, 58 insertions(+), 4 deletions(-) + +commit 782de94c587cc3eed53653443439b62aaee19200 +Author: Tor Lillqvist +AuthorDate: Sat Mar 20 13:31:55 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Sat Mar 20 13:31:55 2010 +0200 + + Drop the unmaintained vs8 project files from dist + + build/win32/Makefile.am | 1 - + 1 file changed, 1 deletion(-) + +commit 77cc740243e9f55603d833f129e999f8824a18f1 +Author: Tommi Vainikainen +AuthorDate: Sat Mar 20 00:01:00 2010 +0200 +Commit: Tommi Vainikainen +CommitDate: Sat Mar 20 00:01:00 2010 +0200 + + Updated Finnish translation + + po/fi.po | 1052 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 512 insertions(+), 540 deletions(-) + +commit 34d0db361ea514c026c54f14853120d601e1d0b5 +Author: A S Alam +AuthorDate: Fri Mar 19 08:18:41 2010 +0530 +Commit: A S Alam +CommitDate: Fri Mar 19 08:18:41 2010 +0530 + + update Punjabi Translation + + po/pa.po | 1041 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 512 insertions(+), 529 deletions(-) + +commit bedaa8027537378c8b7fec68acb422eac44f240e +Author: Nikos Bakaoukas +AuthorDate: Fri Mar 19 00:10:07 2010 +0200 +Commit: Simos Xenitellis +CommitDate: Fri Mar 19 00:10:07 2010 +0200 + + Updated Greek translation for glib + + po/el.po | 1117 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 559 insertions(+), 558 deletions(-) + +commit 6243b1eb5f8f55abc8c05a18d7dfbdd7968fab50 +Author: Dumitru Mișu Moldovan +AuthorDate: Thu Mar 18 22:47:55 2010 +0200 +Commit: Dumitru Mișu Moldovan +CommitDate: Thu Mar 18 22:47:55 2010 +0200 + + Updated Romanian translation + + po/ro.po | 964 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 482 insertions(+), 482 deletions(-) + +commit 3628f7815d13d8b495cd27ce49f3c15372f23cfb +Author: Nils-Christoph Fiedler +AuthorDate: Thu Mar 18 13:54:17 2010 +0100 +Commit: Nils-Christoph Fiedler +CommitDate: Thu Mar 18 13:54:54 2010 +0100 + + Updated LowGerman translation + + po/nds.po | 98 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 49 insertions(+), 49 deletions(-) + +commit 41383b303c0bb54da68bbf5500b5e2d9e552ab69 +Author: Sebastian Dröge +AuthorDate: Wed Mar 17 15:11:00 2010 +0100 +Commit: Sebastian Dröge +CommitDate: Wed Mar 17 15:11:00 2010 +0100 + + Bug 612502 - Add support for class private data + + This adds the two new functions g_type_add_class_private() + and g_type_class_get_private() and a convenience macro + for the getter G_TYPE_CLASS_GET_PRIVATE(). + + gobject/gtype.c | 118 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++- + gobject/gtype.h | 21 ++++++++++ + 2 files changed, 137 insertions(+), 2 deletions(-) + +commit 2295ba857f09fa58c6e61ec4147536021055bbf6 +Author: Benjamin Otte +AuthorDate: Tue Mar 16 16:34:50 2010 +0100 +Commit: Benjamin Otte +CommitDate: Tue Mar 16 16:40:04 2010 +0100 + + The fallback parameter to g_convert_with_fallback() should be const + + This patch makes it so. + + glib/gconvert.c | 2 +- + glib/gconvert.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 751feb916ab2f0cd74839233101fc0b9d2fb994c +Author: Ryan Lortie +AuthorDate: Mon Mar 15 17:45:02 2010 -0400 +Commit: Ryan Lortie +CommitDate: Mon Mar 15 17:45:02 2010 -0400 + + Bug 612502 - build fails on glib/tests/gvariant.c + + Fix two problems caught by Tim Rice. + + - non-constant expression used as array size + - arithmetic on void * + + glib/tests/gvariant.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit 1953b4087f2852e43c0a4dd46bfbd6228135cf70 +Author: Christian Persch +AuthorDate: Sun Feb 7 13:39:10 2010 +0100 +Commit: Ryan Lortie +CommitDate: Mon Mar 15 15:49:03 2010 -0400 + + Use static assert over runtime assert if possible + + We can test the these at compile time. Bug #609231. + + glib/gmappedfile.c | 19 ++++++++++--------- + glib/gvariant.c | 13 ++++++++----- + 2 files changed, 18 insertions(+), 14 deletions(-) + +commit 24aeaebc48a5636c2f5391de646225d1e471f7ba +Author: Nils-Christoph Fiedler +AuthorDate: Mon Mar 15 14:18:48 2010 +0100 +Commit: Nils-Christoph Fiedler +CommitDate: Mon Mar 15 14:18:48 2010 +0100 + + Added LowGerman translation + + po/nds.po | 2135 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 2135 insertions(+) + +commit 2b1b1563a0119de94d2ec0d05f1db493872852dc +Author: Nils-Christoph Fiedler +AuthorDate: Mon Mar 15 14:18:43 2010 +0100 +Commit: Nils-Christoph Fiedler +CommitDate: Mon Mar 15 14:18:43 2010 +0100 + + Added LowGerman translation + + po/LINGUAS | 1 + + 1 file changed, 1 insertion(+) + +commit 7e4d88b290589a2a91d90b084751002c246564d6 +Author: Ryan Lortie +AuthorDate: Sun Mar 14 22:27:06 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Mar 14 22:27:39 2010 -0400 + + gvariant test: Remove unused variable + + glib/tests/gvariant.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9f16c70c16ec90be209fdaa120d2810f4128f2f0 +Author: Petr Kovar +AuthorDate: Mon Mar 15 02:30:27 2010 +0100 +Commit: Petr Kovar +CommitDate: Mon Mar 15 02:30:27 2010 +0100 + + Update Czech translation + + po/cs.po | 948 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 478 insertions(+), 470 deletions(-) + +commit 9dea0253a3ded0e32daa33f11850797109018326 +Author: Ryan Lortie +AuthorDate: Sun Mar 14 15:55:48 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Mar 14 15:56:18 2010 -0400 + + GVariant: add loading, byteswapping, normalisation + + docs/reference/glib/glib-sections.txt | 4 + + glib/glib.symbols | 5 + + glib/gvariant-core.c | 61 +++++++++- + glib/gvariant.c | 207 + ++++++++++++++++++++++++++++++++++ + glib/gvariant.h | 10 ++ + glib/tests/gvariant.c | 72 ++++++++++++ + 6 files changed, 355 insertions(+), 4 deletions(-) + +commit 1ac590b7f728d4a029a354be9aad24863badba02 +Author: Ryan Lortie +AuthorDate: Sun Mar 14 13:04:43 2010 -0400 +Commit: Ryan Lortie +CommitDate: Sun Mar 14 15:56:18 2010 -0400 + + GBuffer: very small cosmetic fix to header file + + glib/gbuffer.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 056feef60b79e867190697f2d26e3ac7edf903a5 +Author: Ryan Lortie +AuthorDate: Sat Mar 13 19:55:56 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Mar 14 15:56:17 2010 -0400 + + GVariantIter: expand the size of the dummy struct + + Will allow for some nice tricks in the future. + + glib/gvariant.c | 4 ++-- + glib/gvariant.h | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit f552689058c27ccebaf4271c4a5afc4197b74a8f +Author: Colin Walters +AuthorDate: Sat Mar 13 18:11:31 2010 -0500 +Commit: Colin Walters +CommitDate: Sun Mar 14 15:45:46 2010 -0400 + + [GDesktopAppInfo] New function g_desktop_app_info_get_filename + + This allows access to the full file path, where possible. + + https://bugzilla.gnome.org/show_bug.cgi?id=612832 + + docs/reference/gio/gio-sections.txt | 1 + + gio/gdesktopappinfo.c | 17 +++++++++++++++++ + gio/gdesktopappinfo.h | 2 ++ + gio/gio.symbols | 1 + + 4 files changed, 21 insertions(+) + +commit 1be8ad35144d34de99b6153cbbfa8f9add46888b +Author: Thomas Kristensen +AuthorDate: Sun Mar 14 11:47:17 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Sun Mar 14 11:51:24 2010 +0200 + + Close the socket event in finalizer instead of in close method + + There might be a GSource attached to a GMainContext, about to be + removed by a + pending cancellation. Deleting the handle too early will trigger a + g_warning in + the "select()" call in GMainContext. Attached patch fixes this + by deferring + destruction of WSAEVENT object until GSocket's finalize(). + + Patch from bug #612702. + + Signed-off-by: Tor Lillqvist + + gio/gsocket.c | 14 ++++++-------- + 1 file changed, 6 insertions(+), 8 deletions(-) + +commit 6c5d2798f600a0536306e1c67b2e26e2c6eff006 +Author: Fran Diéguez +AuthorDate: Sat Mar 13 21:00:44 2010 +0100 +Commit: Andre Klapper +CommitDate: Sat Mar 13 21:00:44 2010 +0100 + + Update Galician translation + + po/gl.po | 974 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 480 insertions(+), 494 deletions(-) + +commit 31cf766e647b46cd28cc6d2405c729d06063680d +Author: Friedel Wolff +AuthorDate: Sat Mar 13 20:48:05 2010 +0100 +Commit: Andre Klapper +CommitDate: Sat Mar 13 20:48:05 2010 +0100 + + Add Afrikaans translation + + po/LINGUAS | 1 + + po/af.po | 2015 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 2016 insertions(+) + +commit 62a133f55dcd5626e9583aabc2d95926936a8475 +Author: Javier Jardón +AuthorDate: Fri Mar 12 20:37:04 2010 +0100 +Commit: Javier Jardón +CommitDate: Sat Mar 13 01:33:09 2010 +0100 + + Improve the documentation about single include exceptions + + Also, reenable the compiling Glib application section + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=612736 + + docs/reference/glib/compiling.sgml | 9 +++++++++ + docs/reference/glib/glib-docs.sgml | 1 + + 2 files changed, 10 insertions(+) + +commit 5b19345246aa179788b09b7a82702e79f9d815d8 +Author: Ryan Lortie +AuthorDate: Fri Mar 12 15:38:47 2010 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 12 15:42:22 2010 -0500 + + Bug 610858 - gvariant test fails sometimes + + NaN floating point values get mangled when passing across the function + call ABI on x86 so avoid using them to get rid of spurious failures. + + Reported by Christian Persch and reliably reproduced by Emilio Pozuelo + Monfort. + + glib/tests/gvariant.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit a57522deae75264bade35eae8826cda2771530c6 +Author: Tor Lillqvist +AuthorDate: Fri Mar 12 10:42:43 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Fri Mar 12 10:45:52 2010 +0200 + + The SO_KEEPALIVE value seems to actually be a char on Windows + + Do still use a BOOL variable, but initialize it to FALSE before the + getsockopt(), and drop the assertion on Windows. Should fix bug + + gio/gsocket.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +commit 1caaa4f591ead74f0a146d73155f9cfb65899bed +Author: Javier Jardón +AuthorDate: Wed Mar 10 05:06:50 2010 +0100 +Commit: Javier Jardón +CommitDate: Wed Mar 10 05:06:50 2010 +0100 + + [docs] Don't reference deprecated functions + + Use g_io_add_watch(), g_io_add_watch_full() and + g_source_remove() instead the deprecated gtk_input_add_full(), + gtk_input_remove(), gdk_input_add(), gdk_input_add_full() and + gdk_input_remove() + + glib/giochannel.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit 95d42761a9fff5813db46a41bc2ec6c86a2eb947 +Author: Miloš Popović +AuthorDate: Tue Mar 9 20:29:43 2010 +0100 +Commit: Miloš Popović +CommitDate: Tue Mar 9 20:29:43 2010 +0100 + + Updated Serbian translations + + po/sr.po | 1017 + +++++++++++++++++++++++++++---------------------------- + po/sr@latin.po | 1028 + ++++++++++++++++++++++++++++---------------------------- + 2 files changed, 1013 insertions(+), 1032 deletions(-) + +commit a85b9c4badf22777b1b099befcd9e033afa45dbf +Author: Ryan Lortie +AuthorDate: Tue Mar 9 13:34:00 2010 -0500 +Commit: Ryan Lortie +CommitDate: Tue Mar 9 13:34:00 2010 -0500 + + 'default: g_assert_not_reached();' to silence GCC + + Closes bug #612327 reported by Claudio Saavedra. + + glib/gvariant-serialiser.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 89fa967ba1c72081a1698d35e6c10c99190b612d +Author: Dagobert Michelsen +AuthorDate: Tue Mar 9 15:02:57 2010 +0100 +Commit: Ryan Lortie +CommitDate: Tue Mar 9 10:30:06 2010 -0500 + + Use G_STRFUNC instead of explicit gcc-only __PRETTY_FUNC__ + + glib/gvariant.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c69e6fd837cb92d0c7050d8ea2d0f98b6f70fbe8 +Author: Behdad Esfahbod +AuthorDate: Mon Mar 8 14:28:23 2010 -0500 +Commit: Behdad Esfahbod +CommitDate: Mon Mar 8 14:33:38 2010 -0500 + + Cosmetic + + glib/gmem.h | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +commit f6166be24d6c43ccbaf80439aefe8eff83e7843d +Author: Ryan Lortie +AuthorDate: Mon Mar 8 11:53:36 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 8 11:53:36 2010 -0500 + + Bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c58ce0e60c1a243df6326c26cf7d255d3af4ab2d +Author: Ryan Lortie +AuthorDate: Mon Mar 8 11:48:14 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 8 11:48:14 2010 -0500 + + 2.23.5 + + NEWS | 50 ++ + po/am.po | 93 ++-- + po/ar.po | 98 ++-- + po/as.po | 98 ++-- + po/ast.po | 98 ++-- + po/az.po | 98 ++-- + po/be.po | 102 ++-- + po/be@latin.po | 102 ++-- + po/bg.po | 942 ++++++++++++++++++------------------- + po/bn.po | 98 ++-- + po/bn_IN.po | 98 ++-- + po/bs.po | 98 ++-- + po/ca.po | 952 +++++++++++++++++++------------------ + po/ca@valencia.po | 98 ++-- + po/cs.po | 97 ++-- + po/cy.po | 98 ++-- + po/da.po | 953 +++++++++++++++++++------------------ + po/de.po | 955 +++++++++++++++++++------------------ + po/dz.po | 98 ++-- + po/el.po | 98 ++-- + po/en@shaw.po | 98 ++-- + po/en_CA.po | 98 ++-- + po/en_GB.po | 942 ++++++++++++++++++------------------- + po/eo.po | 97 ++-- + po/es.po | 951 +++++++++++++++++++------------------ + po/et.po | 477 ++++++++++++++++++- + po/eu.po | 1005 ++++++++++++++++++++------------------- + po/fa.po | 98 ++-- + po/fi.po | 98 ++-- + po/fr.po | 950 +++++++++++++++++++------------------ + po/ga.po | 94 ++-- + po/gl.po | 97 ++-- + po/gu.po | 98 ++-- + po/he.po | 98 ++-- + po/hi.po | 98 ++-- + po/hr.po | 98 ++-- + po/hu.po | 1021 ++++++++++++++++++++-------------------- + po/hy.po | 94 ++-- + po/id.po | 98 ++-- + po/is.po | 98 ++-- + po/it.po | 955 +++++++++++++++++++------------------ + po/ja.po | 98 ++-- + po/ka.po | 98 ++-- + po/kn.po | 98 ++-- + po/ko.po | 97 ++-- + po/ku.po | 93 ++-- + po/lt.po | 942 ++++++++++++++++++------------------- + po/lv.po | 97 ++-- + po/mai.po | 98 ++-- + po/mg.po | 98 ++-- + po/mk.po | 98 ++-- + po/ml.po | 98 ++-- + po/mn.po | 98 ++-- + po/mr.po | 98 ++-- + po/ms.po | 98 ++-- + po/nb.po | 942 ++++++++++++++++++------------------- + po/ne.po | 98 ++-- + po/nl.po | 98 ++-- + po/nn.po | 98 ++-- + po/oc.po | 93 ++-- + po/or.po | 98 ++-- + po/pa.po | 98 ++-- + po/pl.po | 942 ++++++++++++++++++------------------- + po/ps.po | 94 ++-- + po/pt.po | 952 +++++++++++++++++++------------------ + po/pt_BR.po | 942 ++++++++++++++++++------------------- + po/ro.po | 97 ++-- + po/ru.po | 942 ++++++++++++++++++------------------- + po/rw.po | 98 ++-- + po/si.po | 98 ++-- + po/sk.po | 98 ++-- + po/sl.po | 1324 + +++++++++++++++++++++++++-------------------------- + po/sq.po | 98 ++-- + po/sr.po | 98 ++-- + po/sr@ije.po | 98 ++-- + po/sr@latin.po | 98 ++-- + po/sv.po | 1353 + ++++++++++++++++++++++++++--------------------------- + po/ta.po | 98 ++-- + po/te.po | 98 ++-- + po/th.po | 97 ++-- + po/tl.po | 98 ++-- + po/tr.po | 98 ++-- + po/tt.po | 93 ++-- + po/uk.po | 98 ++-- + po/vi.po | 98 ++-- + po/wa.po | 98 ++-- + po/xh.po | 98 ++-- + po/yi.po | 97 ++-- + po/zh_CN.po | 98 ++-- + po/zh_HK.po | 968 +++++++++++++++++++------------------- + po/zh_TW.po | 953 +++++++++++++++++++------------------ + 91 files changed, 13883 insertions(+), 13260 deletions(-) + +commit f9d8d70396978ae201ce79708f7cd69cf6f93399 +Author: Ryan Lortie +AuthorDate: Mon Mar 8 11:29:27 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 8 11:29:27 2010 -0500 + + gtk-doc: ignore gvariant-internal.h + + docs/reference/glib/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 929a2e1ae10083d647a77dd36c17071e7fac1593 +Author: Ryan Lortie +AuthorDate: Mon Mar 8 11:25:37 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 8 11:25:37 2010 -0500 + + Add gvariant-varargs.xml to the distribution + + docs/reference/glib/Makefile.am | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 6393ca443af7f588275aa6ee8b051bb1d41394e8 +Author: Ryan Lortie +AuthorDate: Mon Mar 8 10:54:23 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 8 10:54:23 2010 -0500 + + distcheck: add gvariant-internal.h to SOURCES + + glib/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 75f761bcaa66c82d132c9e3d8cdfcb8ee0971eb6 +Author: Ryan Lortie +AuthorDate: Mon Mar 8 10:30:59 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Mar 8 10:31:19 2010 -0500 + + GVariant variable arguments, tests, cleanups + + Merge GVariant variable arguments support and put it under tests. + + Also, remove the hack of the test case directly '#include'ing .c files + from glib/. Instead, create a non-installed gvariant-internal.h that + the tests can include and make the symbols in it visible on the symbol + table of the shared library. These symbols (as they are present in no + installed header files) are not part of the API of GLib. + + Increase test coverage in a few other areas. + + docs/reference/glib/glib-docs.sgml | 1 + + docs/reference/glib/glib-sections.txt | 11 + + docs/reference/glib/gvariant-varargs.xml | 987 +++++++++++++++++++++ + glib/glib.symbols | 48 +- + glib/gvariant-internal.h | 49 ++ + glib/gvariant-serialiser.c | 4 + + glib/gvariant-serialiser.h | 9 - + glib/gvariant.c | 1397 + ++++++++++++++++++++++++++---- + glib/gvariant.h | 18 + + glib/gvarianttypeinfo.c | 11 +- + glib/gvarianttypeinfo.h | 10 +- + glib/tests/gvariant.c | 773 ++++++++++++++++- + 12 files changed, 3110 insertions(+), 208 deletions(-) + +commit 8cd5c94f42fb362e1620368e805d50e3804e7bc2 +Author: Alexander Larsson +AuthorDate: Mon Mar 8 12:03:40 2010 +0100 +Commit: Alexander Larsson +CommitDate: Mon Mar 8 12:03:40 2010 +0100 + + Add pregenerated ids for TRASH_ORIG_PATH and TRASH_DELETION_DATE + + This fixes the build for me + + gio/gfileinfo-priv.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit fe4839dbb8358b65d19370114dc9d43cc71e6773 +Author: Piotr Drąg +AuthorDate: Mon Mar 8 10:51:11 2010 +0100 +Commit: Tomasz Dominikowski +CommitDate: Mon Mar 8 10:51:11 2010 +0100 + + Updated Polish translation + + po/pl.po | 951 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 479 insertions(+), 472 deletions(-) + +commit 826abbefcee6c7f64ed8c21d9a2671f9cd0be089 +Author: Matthias Clasen +AuthorDate: Mon Mar 8 00:36:00 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Mar 8 00:36:00 2010 -0500 + + Add defines for trash::orig-path and trash::deletion-date + + See bug 612107. + + gio/gfileinfo.c | 30 ++++++++++++++++-------------- + gio/gfileinfo.h | 24 ++++++++++++++++++++++++ + 2 files changed, 40 insertions(+), 14 deletions(-) + +commit 96d105906ef267b687ee6fbe085a791f3b17afc6 +Author: Priit Laes +AuthorDate: Mon Mar 8 00:16:23 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Mar 8 00:16:23 2010 -0500 + + Fix run-assert-msg-test to work with libtool-2.2.x. + + tests/run-assert-msg-test.sh | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 0a51b58e0776f2d5a82a5346ab81fb50ee75f9f4 +Author: Matthias Clasen +AuthorDate: Mon Mar 8 00:12:33 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Mar 8 00:12:33 2010 -0500 + + Minor doc clarification + + Mention g_realloc() as a possible function to use with + g_memory_output_stream_new(). Bug 612041. + + gio/gmemoryoutputstream.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit 42f042d5fb381151a999e38740720e9244caa6da +Author: Matthias Clasen +AuthorDate: Mon Mar 8 00:04:11 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Mar 8 00:05:07 2010 -0500 + + Minor doc clarification + + Spell out that g_utf8_strlen() behaves like strlen() wrt. to + termination. Bug 612040. + + glib/gutf8.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +commit 485077e9ce78ad2b55bdb471b57dc9fe21259922 +Author: Duarte Loreto +AuthorDate: Mon Mar 8 02:31:12 2010 +0000 +Commit: Duarte Loreto +CommitDate: Mon Mar 8 02:31:12 2010 +0000 + + Updated Portuguese translation + + po/pt.po | 29 +++++++++++++++++------------ + 1 file changed, 17 insertions(+), 12 deletions(-) + +commit 9dd6c60fbfc742eb08a5b5b27986395ed439fbc1 +Author: Matthias Clasen +AuthorDate: Sun Mar 7 17:42:25 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Mar 7 17:44:23 2010 -0500 + + Plug a memleak in g_io_modules_scan_all_in_directory + + ...and at the same time, fix a malloc<>g_free mismatch. + Patch by Caolan McNamara, bug 611897 + + gio/giomodule.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 5f424088f5bdf041d5653f5f2aa310150155f58c +Author: Jorge González +AuthorDate: Sun Mar 7 11:49:58 2010 +0100 +Commit: Jorge González +CommitDate: Sun Mar 7 11:49:58 2010 +0100 + + Updated Spanish translation + + po/es.po | 963 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 484 insertions(+), 479 deletions(-) + +commit a9d57e990b878d2b602b247dba676cd257426e23 +Author: Ryan Lortie +AuthorDate: Sun Mar 7 03:02:08 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Mar 7 03:02:08 2010 -0500 + + .gitignore mem-overflow test + + glib/tests/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit dfcee5865b7c677db722640dec5e34a8e89b4d07 +Author: Ryan Lortie +AuthorDate: Sun Mar 7 02:15:37 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Mar 7 02:15:37 2010 -0500 + + gtk-doc: ignore GBuffer + + docs/reference/glib/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit a1b9743e1816c5269029e8ae2e21e8950c411f5c +Author: Ryan Lortie +AuthorDate: Sat Mar 6 23:21:27 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Mar 6 23:21:27 2010 -0500 + + Bug 608196 - Overflow-safe g_new family + + Remove the macros for the g_malloc_n family -- calls directly to those + functions now always go directly to those functions. + + Reimplement the macros for g_new and friends. + + Remove the branch that checked for calling g_new() with a constant + n_structs == 1. With the struct size always known this case will + now be + caught under the case that does the inline multiplication and the + multiplication by 1 will be optimised away. + + glib/gmem.c | 8 ------ + glib/gmem.h | 83 + ++++++++++++++++++++++++++----------------------------------- + 2 files changed, 35 insertions(+), 56 deletions(-) + +commit 01ef92178b9978b7491bbb3397de9ee08e38af20 +Author: Alexander Shopov +AuthorDate: Sat Mar 6 20:22:49 2010 +0200 +Commit: Alexander Shopov +CommitDate: Sat Mar 6 20:22:49 2010 +0200 + + Updated Bulgarian translation + + po/bg.po | 13 ++++++------- + 1 file changed, 6 insertions(+), 7 deletions(-) + +commit 7fa6d67bdb3b4d467931d88e7c5ba38481df8bab +Author: Gil Forcada +AuthorDate: Sat Mar 6 13:34:27 2010 +0100 +Commit: Gil Forcada +CommitDate: Sat Mar 6 13:35:00 2010 +0100 + + Updated Catalan translation + + po/ca.po | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +commit 3d98c449b1638a4dc242279737c36fa3e37cb8ce +Author: Stefan Kost +AuthorDate: Sat Mar 6 14:15:25 2010 +0200 +Commit: Stefan Kost +CommitDate: Sat Mar 6 14:15:25 2010 +0200 + + gsignal: improve g_signal_new docs. + + Using 0 for class_offset is only a means to be able to add signal + when running + out of slots in the lass structure. + + gobject/gsignal.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit fa32ee56109e295f3dae95c8bbdf98a99f1bc66e +Author: Stefan Kost +AuthorDate: Sat Mar 6 13:36:38 2010 +0200 +Commit: Stefan Kost +CommitDate: Sat Mar 6 13:36:38 2010 +0200 + + docs: exchange "Subversion" with "source code repository" + + Fixes the outdated reference. + + docs/reference/gobject/tut_gsignal.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ada60fd83fdd4fa694d8d872ea7cbe14b09cbfcc +Author: Luca Ferretti +AuthorDate: Sat Mar 6 01:05:40 2010 +0100 +Commit: Luca Ferretti +CommitDate: Sat Mar 6 01:05:40 2010 +0100 + + Updated Italian translation + + po/it.po | 1036 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 518 insertions(+), 518 deletions(-) + +commit bed0e3f14020bce9ea4eabfe846abb2b4cdfc83e +Author: Daniel Nylander +AuthorDate: Sat Mar 6 00:28:38 2010 +0100 +Commit: Daniel Nylander +CommitDate: Sat Mar 6 00:28:38 2010 +0100 + + Updated Swedish translation + + po/sv.po | 1391 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 707 insertions(+), 684 deletions(-) + +commit 54e830100de02d49d11842e9464511f160c8fbbc +Author: Fridrich Strba +AuthorDate: Fri Mar 5 23:15:45 2010 +0100 +Commit: Fridrich Strba +CommitDate: Fri Mar 5 23:15:45 2010 +0100 + + Adding new defines first appeared in 2.22 into glibconfig.h.win32.in + + glibconfig.h.win32.in | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 0772298b9bc43af10ddb53f63e2c6faca6371a82 +Author: Claude Paroz +AuthorDate: Fri Mar 5 22:32:07 2010 +0100 +Commit: Claude Paroz +CommitDate: Fri Mar 5 22:32:07 2010 +0100 + + Updated French translation + + po/fr.po | 964 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 483 insertions(+), 481 deletions(-) + +commit 6949099124ddd6bed660c146a42800402b5807ea +Author: Gabor Kelemen +AuthorDate: Fri Mar 5 22:03:27 2010 +0100 +Commit: Gabor Kelemen +CommitDate: Fri Mar 5 22:03:27 2010 +0100 + + Updated Hungarian translation + + po/hu.po | 87 + ++++++++++++++++++++++++---------------------------------------- + 1 file changed, 33 insertions(+), 54 deletions(-) + +commit 0edd7cb8a10388e22cd6b3a37295a6ffddf7e693 +Author: Ryan Lortie +AuthorDate: Fri Mar 5 15:52:38 2010 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 5 15:53:42 2010 -0500 + + undef the proper macros to avoid warning message + + glib/tests/mem-overflow.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a3420d8713d6b5425b80f30e5cb61e88bb9d46e2 +Author: Behdad Esfahbod +AuthorDate: Fri Mar 5 15:48:08 2010 -0500 +Commit: Behdad Esfahbod +CommitDate: Fri Mar 5 15:48:48 2010 -0500 + + Add makegalias.pl dep on galias.h and co + + glib/Makefile.am | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 4882be674326f85aaef479ba2aa6b63565f818b3 +Author: Leonid Kanter +AuthorDate: Fri Mar 5 15:49:12 2010 +0200 +Commit: Leonid Kanter +CommitDate: Fri Mar 5 15:49:12 2010 +0200 + + update Russian translation + + po/ru.po | 81 + ++++++++++++++++++++++++++++++++++++++++------------------------ + 1 file changed, 51 insertions(+), 30 deletions(-) + +commit 24768ebd8f3a792a091f5583ab301424f84d77d3 +Author: Matej Urbančič +AuthorDate: Fri Mar 5 14:32:01 2010 +0100 +Commit: Matej Urbančič +CommitDate: Fri Mar 5 14:32:01 2010 +0100 + + Updated Slovenian translation + + po/sl.po | 1338 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 697 insertions(+), 641 deletions(-) + +commit 7026365db22a12b7606bf1e2defac803b359cf68 +Author: Ryan Lortie +AuthorDate: Fri Mar 5 06:10:01 2010 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 5 06:14:36 2010 -0500 + + g_variant_get_strv: support objects and signatures + + glib/gvariant.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 118d59ba15324b49ab9f8b61332364148102d3fd +Author: Ryan Lortie +AuthorDate: Fri Mar 5 06:09:38 2010 -0500 +Commit: Ryan Lortie +CommitDate: Fri Mar 5 06:14:26 2010 -0500 + + GVariant: fix some refcounting issues + + glib/gvariant.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit 3297185f3962bd73714c376c101c891897b999b4 +Author: Ivar Smolin +AuthorDate: Fri Mar 5 13:08:05 2010 +0200 +Commit: Priit Laes +CommitDate: Fri Mar 5 13:08:05 2010 +0200 + + Estonian translation updated + + po/et.po | 489 + ++------------------------------------------------------------- + 1 file changed, 10 insertions(+), 479 deletions(-) + +commit 6c58d5f8aeb420bd95caaf6ec62be60b47c819b7 +Author: Gintautas Miliauskas +AuthorDate: Fri Mar 5 11:16:33 2010 +0200 +Commit: Gintautas Miliauskas +CommitDate: Fri Mar 5 11:16:33 2010 +0200 + + Updated Lithuanian translation. + + po/lt.po | 22 ++++++++++++---------- + 1 file changed, 12 insertions(+), 10 deletions(-) + +commit e0fff9a057dffc795146d5baa9a9e186587344b5 +Author: Philip Withnall +AuthorDate: Thu Mar 4 23:54:07 2010 +0000 +Commit: Philip Withnall +CommitDate: Thu Mar 4 23:54:07 2010 +0000 + + Updated British English translation + + po/en_GB.po | 19 +++++++++++-------- + 1 file changed, 11 insertions(+), 8 deletions(-) + +commit e583d05374fc26de0e52ea20722254cdb081b23c +Author: Kjartan Maraas +AuthorDate: Thu Mar 4 22:57:03 2010 +0100 +Commit: Kjartan Maraas +CommitDate: Thu Mar 4 22:57:03 2010 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1b1af2fa240f96fda5361784d1d80a94fae5752c +Author: Kjartan Maraas +AuthorDate: Thu Mar 4 22:56:37 2010 +0100 +Commit: Kjartan Maraas +CommitDate: Thu Mar 4 22:56:37 2010 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +commit fe3c945a3fe15b6d4b1177c20f88ac7441d5dca9 +Author: Mario Blättermann +AuthorDate: Thu Mar 4 22:02:43 2010 +0100 +Commit: Mario Blättermann +CommitDate: Thu Mar 4 22:02:57 2010 +0100 + + Updated German translation + + po/de.po | 128 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 70 insertions(+), 58 deletions(-) + +commit 983fd35c7c38ab54b2e39e25102990184377fbb3 +Author: Inaki Larranaga Murgoitio +AuthorDate: Thu Mar 4 21:31:54 2010 +0100 +Commit: dooteo +CommitDate: Thu Mar 4 21:31:54 2010 +0100 + + Updated Basque language + + po/eu.po | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 976cce06fc863496a595240ceb6af07b90d41313 +Author: Jonh Wendell +AuthorDate: Thu Mar 4 17:13:56 2010 -0300 +Commit: Jonh Wendell +CommitDate: Thu Mar 4 17:13:56 2010 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 958 + ++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 484 insertions(+), 474 deletions(-) + +commit 7504095de09756efec4bc39225986c5db10d6ace +Author: Jonh Wendell +AuthorDate: Thu Mar 4 17:03:13 2010 -0300 +Commit: Jonh Wendell +CommitDate: Thu Mar 4 17:03:13 2010 -0300 + + Mark a string for translation + + gio/gfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 766183c079192d8fb71044770456c8c9662bd5db +Author: Claudio Saavedra +AuthorDate: Thu Mar 4 19:18:12 2010 +0200 +Commit: Claudio Saavedra +CommitDate: Thu Mar 4 19:18:12 2010 +0200 + + Remove GUtf8InputStream leftover in docs + + Fixes build. + + docs/reference/gio/gio.types | 1 - + 1 file changed, 1 deletion(-) + +commit f3425cc38dae31b815db1038dcaac29848840409 +Author: Behdad Esfahbod +AuthorDate: Thu Mar 4 10:38:31 2010 -0500 +Commit: Behdad Esfahbod +CommitDate: Thu Mar 4 10:39:15 2010 -0500 + + Fix galias build breakage with g_malloc_n macros + + glib/gmem.c | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +commit c423c3a9c951a64b2c3d3eea67e15fce752a2bd0 +Author: Christian Dywan +AuthorDate: Thu Mar 4 11:02:31 2010 +0100 +Commit: Christian Dywan +CommitDate: Thu Mar 4 11:02:31 2010 +0100 + + Add licence headers to gnativevolumemonitor.c/h + + Fixes bug #609531 + + gio/gnativevolumemonitor.c | 22 ++++++++++++++++++++++ + gio/gnativevolumemonitor.h | 22 ++++++++++++++++++++++ + 2 files changed, 44 insertions(+) + +commit 343cbf25c7104f782b9d0070cb623c7605dab646 +Author: Behdad Esfahbod +AuthorDate: Tue Feb 2 23:48:42 2010 -0500 +Commit: Behdad Esfahbod +CommitDate: Wed Mar 3 17:54:49 2010 -0500 + + Bug 608196 - Overflow-safe g_new family + + New public API: + + g_malloc_n + g_malloc0_n + g_realloc_n + g_try_malloc_n + g_try_malloc0_n + g_try_realloc_n + + docs/reference/glib/glib-sections.txt | 6 ++ + docs/reference/glib/tmpl/memory.sgml | 82 +++++++++++++++++++++++++- + glib/glib.symbols | 6 ++ + glib/gmem.c | 95 + +++++++++++++++++++++++++++++- + glib/gmem.h | 92 ++++++++++++++++++++++++----- + glib/tests/Makefile.am | 3 + + glib/tests/mem-overflow.c | 108 + ++++++++++++++++++++++++++++++++++ + glib/tests/printf.c | 2 +- + glib/tests/rand.c | 2 +- + 9 files changed, 375 insertions(+), 21 deletions(-) + +commit 373f3d8b52ca8b08de0af6062eb284c2a7a856d9 +Author: Felix Riemann +AuthorDate: Wed Feb 24 12:54:17 2010 +0100 +Commit: Felix Riemann +CommitDate: Wed Mar 3 17:44:28 2010 +0100 + + Fix API docs for GZlibCompressor and GZlibDecompressor + + Corrects the general descriptions and makes the signals and + implemented + interfaces appear. + + docs/reference/gio/gio-sections.txt | 4 ++-- + gio/gzlibcompressor.c | 4 ++-- + gio/gzlibdecompressor.c | 2 +- + 3 files changed, 5 insertions(+), 5 deletions(-) + +commit 560f5187432fc890725c5bb5c74a0997affb888c +Author: Ryan Lortie +AuthorDate: Wed Mar 3 11:36:52 2010 -0500 +Commit: Ryan Lortie +CommitDate: Wed Mar 3 11:38:14 2010 -0500 + + GVariantBuilder: loosen assertion check + + Don't check that a GVariantBuilder is fully-valid for use when + performing refcounting operations, as these operations may be occuring + after the builder has already been cleared. + + glib/gvariant.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 9a886135c80233a5a40071189df7693151201954 +Author: Dan Winship +AuthorDate: Wed Mar 3 08:35:32 2010 -0500 +Commit: Dan Winship +CommitDate: Wed Mar 3 08:35:32 2010 -0500 + + GResolver: fix Windows 2000 workaround + + Move the include from gwin32resolver.c to + gnetworkingprivate.h, since gthreadedresolver.c needs it too. + + https://bugzilla.gnome.org/show_bug.cgi?id=611696 + + gio/gnetworkingprivate.h | 8 ++++++++ + gio/gwin32resolver.c | 8 -------- + 2 files changed, 8 insertions(+), 8 deletions(-) + +commit 67ba99f7abfba0d24719950b55e88024acfc91ae +Author: Kjartan Maraas +AuthorDate: Wed Mar 3 13:49:10 2010 +0100 +Commit: Kjartan Maraas +CommitDate: Wed Mar 3 13:49:10 2010 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 955 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 479 insertions(+), 476 deletions(-) + +commit fe6e278a870c7b2a3e76ba9ef17a9b99a4c0c474 +Author: Ryan Lortie +AuthorDate: Wed Mar 3 03:37:37 2010 -0500 +Commit: Ryan Lortie +CommitDate: Wed Mar 3 03:38:02 2010 -0500 + + GVariantBuilder: allow for stack allocation + + docs/reference/glib/glib-sections.txt | 2 + + glib/glib.symbols | 6 +- + glib/gvariant.c | 553 + ++++++++++++++++++++-------------- + glib/gvariant.h | 13 +- + glib/tests/gvariant.c | 13 +- + 5 files changed, 352 insertions(+), 235 deletions(-) + +commit bb0808638c5b4bac11355bc94434d35e76b53364 +Author: Gabor Kelemen +AuthorDate: Tue Mar 2 17:18:52 2010 +0100 +Commit: Gabor Kelemen +CommitDate: Tue Mar 2 17:18:52 2010 +0100 + + Updated Hungarian translation + + po/hu.po | 1030 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 507 insertions(+), 523 deletions(-) + +commit 2927c5e0c628dfe97f2649661db703a30dbebd8b +Author: Inaki Larranaga Murgoitio +AuthorDate: Tue Mar 2 12:39:33 2010 +0100 +Commit: dooteo +CommitDate: Tue Mar 2 12:39:33 2010 +0100 + + Updated Basque language + + po/eu.po | 1035 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 504 insertions(+), 531 deletions(-) + +commit 277b9717da6261d089772684669bc55c5a0e911b +Author: Paolo Borelli +AuthorDate: Mon Mar 1 10:24:43 2010 +0100 +Commit: Paolo Borelli +CommitDate: Mon Mar 1 10:24:43 2010 +0100 + + Remove utf8inputstream leftovers in a few other places + + docs/reference/gio/gio-docs.xml | 1 - + docs/reference/gio/gio-sections.txt | 18 ------------------ + gio/giotypes.h | 1 - + po/POTFILES.in | 1 - + 4 files changed, 21 deletions(-) + +commit 2bfddf162e686c750beb2af2e4cb2e8d8d523440 +Author: Alexander Larsson +AuthorDate: Mon Mar 1 09:56:02 2010 +0100 +Commit: Alexander Larsson +CommitDate: Mon Mar 1 09:56:02 2010 +0100 + + Remove GUtf8InputStream for now + + It turns out that the way this worked did not work out for the current + main usecase (gedit) due to issues with how this is best integrated + with GtkTextView. So, in order to not have to support an unused + non-ideal + API forever we remove this before its been in a stable release. + + The basic feature seems to have some utility though, so we hope for it + to eventually return in a better form. + + gio/Makefile.am | 2 - + gio/gio.h | 1 - + gio/gio.symbols | 7 - + gio/gutf8inputstream.c | 327 + ------------------------------------------ + gio/gutf8inputstream.h | 80 ----------- + gio/tests/Makefile.am | 4 - + gio/tests/utf8-input-stream.c | 252 -------------------------------- + 7 files changed, 673 deletions(-) + +commit c47e1949e215126c70503843ebb7759449160212 +Author: Gil Forcada +AuthorDate: Sun Feb 28 18:55:54 2010 +0100 +Commit: Gil Forcada +CommitDate: Sun Feb 28 18:55:54 2010 +0100 + + Updated Catalan translation + + po/ca.po | 1009 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 506 insertions(+), 503 deletions(-) + +commit 92d4cfbd1584847ea689146c57f3c79282813ae3 +Author: Chao-Hsiung Liao +AuthorDate: Sat Feb 27 20:40:04 2010 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Sat Feb 27 20:40:04 2010 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 965 + ++++++++++++++++++++++++++++++------------------------------ + po/zh_TW.po | 950 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 962 insertions(+), 953 deletions(-) + +commit a3c7406cce2af55aea4ffdf1ceb8b828f5ef3219 +Author: Ryan Lortie +AuthorDate: Thu Feb 25 18:09:23 2010 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 25 18:13:59 2010 -0500 + + GVariantTypeInfo: fix thread safety bug + + Issue caught by Michael Meeks. This patch based on his. + + GVariantTypeInfo was dropping the reference count on the TypeInfo + structure before removing it from the hash table. This means that + another thread could come along and grab the value from the hash table + in the meantime. + + Solve this by holding the lock on the table before dropping the + reference. + + Also: move the hash table initialisation inside of the lock to remove + the standard double-initialisation race plus a more insidious issue + caused by the fact that we free the hash table once it becomes empty. + + glib/gvarianttypeinfo.c | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +commit 43b6c2b8f5a9000373b448eca7edea2e3dad4248 +Author: Duarte Loreto +AuthorDate: Thu Feb 25 02:03:17 2010 +0000 +Commit: Duarte Loreto +CommitDate: Thu Feb 25 02:03:17 2010 +0000 + + Updated Portuguese translation + + po/pt.po | 1030 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 514 insertions(+), 516 deletions(-) + +commit 24decf7658368ebcae012d82224627668485137a +Author: Bruce Cowan +AuthorDate: Wed Feb 24 15:28:15 2010 +0000 +Commit: Bruce Cowan +CommitDate: Wed Feb 24 15:28:15 2010 +0000 + + Updated British English translation + + po/en_GB.po | 1014 + ++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 508 insertions(+), 506 deletions(-) + +commit cf07bb353433234268b599d11afc0b0245fdddae +Author: Leonid Kanter +AuthorDate: Wed Feb 24 10:49:16 2010 +0200 +Commit: Leonid Kanter +CommitDate: Wed Feb 24 10:49:16 2010 +0200 + + Update Russian translation by Yuri Kozlov + + po/ru.po | 1188 + ++++++++++++++++++++++++++++---------------------------------- + 1 file changed, 538 insertions(+), 650 deletions(-) + +commit a495a2122d404fdf2c6cf5e3aa0524cf0437ec30 +Author: Saleem Abdulrasool +AuthorDate: Tue Feb 23 15:28:51 2010 -0800 +Commit: Saleem Abdulrasool +CommitDate: Tue Feb 23 16:23:07 2010 -0800 + + include gio.h, not giotypes.h + + Including giotypes.h in gfiledescriptor.h causes a compilation + failure for users + of the header as giotypes.h may not be included directly. + + gio/gfiledescriptorbased.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 8413dfda9b71ff671a92df2c1d3451fb7c0b2085 +Author: Gintautas Miliauskas +AuthorDate: Tue Feb 23 23:45:09 2010 +0200 +Commit: Gintautas Miliauskas +CommitDate: Tue Feb 23 23:45:09 2010 +0200 + + Updated Lithuanian translation. + + po/lt.po | 1179 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 587 insertions(+), 592 deletions(-) + +commit ec0e3089c0e80219ad6e7806b27363ac9c990462 +Author: Ask H. Larsen +AuthorDate: Tue Feb 23 22:25:51 2010 +0100 +Commit: Kenneth Nielsen +CommitDate: Tue Feb 23 22:25:51 2010 +0100 + + Updated Danish translation + + po/da.po | 1018 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 510 insertions(+), 508 deletions(-) + +commit 1903c229a267611a2624409371390a472d97ad4c +Author: Mario Blättermann +AuthorDate: Tue Feb 23 22:23:36 2010 +0100 +Commit: Mario Blättermann +CommitDate: Tue Feb 23 22:23:36 2010 +0100 + + Updated German translation + + po/de.po | 1013 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 505 insertions(+), 508 deletions(-) + +commit 2940285002c3504fb49fb7388d2265b464c92dcc +Author: Ryan Lortie +AuthorDate: Tue Feb 23 12:49:08 2010 -0500 +Commit: Ryan Lortie +CommitDate: Tue Feb 23 12:49:08 2010 -0500 + + .gitignore gcov output (*.gcov, *.gcno, *.gcda) + + .gitignore | 3 +++ + 1 file changed, 3 insertions(+) + +commit cecf61d1c3e8ff07b1595641bad85fb9f9b03ddf +Author: Edward Hervey +AuthorDate: Mon Dec 7 11:23:55 2009 +0100 +Commit: Edward Hervey +CommitDate: Tue Feb 23 18:42:03 2010 +0100 + + gobject: Don't use G_PARAM_SPEC_VALUE_TYPE when we know the pspec + is valid + + https://bugzilla.gnome.org/show_bug.cgi?id=605667 + + gobject/gobject.c | 26 +++++++++++++------------- + 1 file changed, 13 insertions(+), 13 deletions(-) + +commit a7cc500d3829db1a8757ae940db09869b78bdca8 +Author: Emilio Pozuelo Monfort +AuthorDate: Tue Feb 23 18:19:16 2010 +0100 +Commit: Emilio Pozuelo Monfort +CommitDate: Tue Feb 23 18:37:39 2010 +0100 + + Test for unexisting files in $TMP and not in $HOME + + Some buildd environments have an unwritable $HOME, which makes the + test that looks for an unexisting file there fail. Use $TMP instead, + which should be more reliable. + + https://bugzilla.gnome.org/show_bug.cgi?id=610860 + + gio/tests/readwrite.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 355246579ee08753e80bef5d31816a6ef52da73b +Author: Alexander Shopov +AuthorDate: Tue Feb 23 09:30:39 2010 +0200 +Commit: Alexander Shopov +CommitDate: Tue Feb 23 09:31:03 2010 +0200 + + Updated Bulgarian translation + + po/bg.po | 973 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 488 insertions(+), 485 deletions(-) + +commit 1f66523ad325c301d9caf7130b99d3fd74940338 +Author: Ryan Lortie +AuthorDate: Tue Feb 23 02:00:11 2010 -0500 +Commit: Ryan Lortie +CommitDate: Tue Feb 23 02:00:11 2010 -0500 + + Fix backward logic in g_return_if_fail(). + + glib/gvariant.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 360b9b540ee5e88de01a4c8aaf16c84f6cf23dc8 +Author: Ryan Lortie +AuthorDate: Tue Feb 23 01:59:57 2010 -0500 +Commit: Ryan Lortie +CommitDate: Tue Feb 23 01:59:57 2010 -0500 + + GVariant: Improve test coverage. + + glib/tests/gvariant.c | 253 + ++++++++++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 245 insertions(+), 8 deletions(-) + +commit 202d7d37d6ce066291504276810c350c9a3feb7a +Author: Emilio Pozuelo Monfort +AuthorDate: Fri Feb 19 19:00:02 2010 +0100 +Commit: Alexander Larsson +CommitDate: Mon Feb 22 19:54:38 2010 +0100 + + Don't fail a couple of tests when running as root + + root can access and write to a directory when it doesn't have + exec and write permissions respectively. So expect the tests that + check that to succeed rather than to fail when running as root. + + https://bugzilla.gnome.org/show_bug.cgi?id=552912 + + gio/tests/live-g-file.c | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +commit 4535683b3f42b6840e01bd94fe6ea792b0ebeecf +Author: Alexander Larsson +AuthorDate: Mon Feb 22 12:37:16 2010 +0100 +Commit: Alexander Larsson +CommitDate: Mon Feb 22 12:37:16 2010 +0100 + + Keep metadata when files are renamed and trashed + + This fixes https://bugzilla.gnome.org/show_bug.cgi?id=609813 + + gio/glocalfile.c | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +commit 515434bdcb63073d62b424c4b352a9d509cee5e6 +Author: Ryan Lortie +AuthorDate: Mon Feb 22 00:39:01 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 22 00:39:01 2010 -0500 + + GVariantIter, GVariantBuilder + + docs/reference/glib/glib-sections.txt | 22 + + docs/reference/glib/tmpl/glib-unused.sgml | 67 -- + docs/reference/glib/tmpl/macros_misc.sgml | 5 +- + docs/reference/glib/tmpl/version.sgml | 68 ++ + glib/glib.symbols | 18 + + glib/gvariant.c | 1531 + ++++++++++++++++++++++------- + glib/gvariant.h | 36 + + glib/gvarianttype.c | 17 + + glib/gvarianttype.h | 1 + + 9 files changed, 1367 insertions(+), 398 deletions(-) + +commit b9d728474ebc51c0d4ff46cb44d97134730174fc +Author: Ryan Lortie +AuthorDate: Sun Feb 21 19:39:33 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 22 00:35:45 2010 -0500 + + Remove redudant check for direct #include gslice.h + + This was added before we had a standardised header check and not + removed + when the standard check was added. + + glib/gslice.c | 2 ++ + glib/gslice.h | 4 ---- + 2 files changed, 2 insertions(+), 4 deletions(-) + +commit 0a1ce31b6e8d3a7683ae5164d51e325d3669f53f +Author: Matthias Clasen +AuthorDate: Sun Feb 21 21:38:33 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 21:38:33 2010 -0500 + + Bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7fea53a4a290f1cd2c052320b21ee3405e1ed605 +Author: Matthias Clasen +AuthorDate: Sun Feb 21 21:37:33 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 21:37:33 2010 -0500 + + 2.23.4 + + po/am.po | 115 ++--- + po/ar.po | 115 ++--- + po/as.po | 115 ++--- + po/ast.po | 115 ++--- + po/az.po | 115 ++--- + po/be.po | 116 ++--- + po/be@latin.po | 116 ++--- + po/bg.po | 115 ++--- + po/bn.po | 115 ++--- + po/bn_IN.po | 115 ++--- + po/bs.po | 115 ++--- + po/ca.po | 115 ++--- + po/ca@valencia.po | 115 ++--- + po/cs.po | 942 +++++++++++++++++++------------------- + po/cy.po | 115 ++--- + po/da.po | 115 ++--- + po/de.po | 956 +++++++++++++++++++------------------- + po/dz.po | 115 ++--- + po/el.po | 115 ++--- + po/en@shaw.po | 115 ++--- + po/en_CA.po | 115 ++--- + po/en_GB.po | 115 ++--- + po/eo.po | 115 ++--- + po/es.po | 951 +++++++++++++++++++------------------- + po/et.po | 477 ++++++++++++++++++- + po/eu.po | 115 ++--- + po/fa.po | 115 ++--- + po/fi.po | 115 ++--- + po/fr.po | 115 ++--- + po/ga.po | 115 ++--- + po/gl.po | 942 +++++++++++++++++++------------------- + po/gu.po | 115 ++--- + po/he.po | 115 ++--- + po/hi.po | 115 ++--- + po/hr.po | 115 ++--- + po/hu.po | 115 ++--- + po/hy.po | 115 ++--- + po/id.po | 115 ++--- + po/is.po | 115 ++--- + po/it.po | 115 ++--- + po/ja.po | 115 ++--- + po/ka.po | 115 ++--- + po/kn.po | 115 ++--- + po/ko.po | 952 +++++++++++++++++++------------------- + po/ku.po | 115 ++--- + po/lt.po | 115 ++--- + po/lv.po | 115 ++--- + po/mai.po | 115 ++--- + po/mg.po | 115 ++--- + po/mk.po | 115 ++--- + po/ml.po | 115 ++--- + po/mn.po | 115 ++--- + po/mr.po | 115 ++--- + po/ms.po | 115 ++--- + po/nb.po | 115 ++--- + po/ne.po | 115 ++--- + po/nl.po | 116 ++--- + po/nn.po | 115 ++--- + po/oc.po | 115 ++--- + po/or.po | 115 ++--- + po/pa.po | 115 ++--- + po/pl.po | 942 +++++++++++++++++++------------------- + po/ps.po | 115 ++--- + po/pt.po | 115 ++--- + po/pt_BR.po | 115 ++--- + po/ro.po | 954 +++++++++++++++++++------------------- + po/ru.po | 115 ++--- + po/rw.po | 116 ++--- + po/si.po | 115 ++--- + po/sk.po | 115 ++--- + po/sl.po | 1323 + +++++++++++++++++++++++++---------------------------- + po/sq.po | 119 ++--- + po/sr.po | 115 ++--- + po/sr@ije.po | 115 ++--- + po/sr@latin.po | 115 ++--- + po/sv.po | 115 ++--- + po/ta.po | 115 ++--- + po/te.po | 115 ++--- + po/th.po | 115 ++--- + po/tl.po | 115 ++--- + po/tr.po | 115 ++--- + po/tt.po | 115 ++--- + po/uk.po | 115 ++--- + po/vi.po | 115 ++--- + po/wa.po | 115 ++--- + po/xh.po | 115 ++--- + po/yi.po | 115 ++--- + po/zh_CN.po | 115 ++--- + po/zh_HK.po | 960 +++++++++++++++++++------------------- + po/zh_TW.po | 945 +++++++++++++++++++------------------- + 90 files changed, 10110 insertions(+), 9327 deletions(-) + +commit 9a08cd5b042a1550cd446724e1ce71ff5379ed2b +Author: Matthias Clasen +AuthorDate: Sun Feb 21 20:28:34 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 20:28:34 2010 -0500 + + More distcheck fixes + + glib/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit ef497e8e64100f672509b8398a9805677ce80bcb +Author: Matthias Clasen +AuthorDate: Sun Feb 21 20:11:33 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 20:11:33 2010 -0500 + + Fix some distcheck issues + + glib/Makefile.am | 1 - + 1 file changed, 1 deletion(-) + +commit 3983418c25037dd01fea4b7a52eecdc703535d78 +Author: Matthias Clasen +AuthorDate: Sun Feb 21 19:55:02 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 19:55:02 2010 -0500 + + Fix up GFileDescriptorBased docs + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 13 +++++++++++++ + docs/reference/gio/gio.types | 1 + + gio/gfiledescriptorbased.c | 4 ++-- + 4 files changed, 17 insertions(+), 2 deletions(-) + +commit 03fc92784d0ba995883fa2cbae96531ff3db8672 +Author: Matthias Clasen +AuthorDate: Sun Feb 21 19:48:22 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 19:48:22 2010 -0500 + + Add indices for 2.24 additions + + docs/reference/glib/glib-docs.sgml | 4 ++++ + docs/reference/gobject/gobject-docs.sgml | 4 ++++ + 2 files changed, 8 insertions(+) + +commit 80a160c7c6c1028febfda3d5bf3b557406a9555c +Author: Matthias Clasen +AuthorDate: Sun Feb 21 19:46:57 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 19:46:57 2010 -0500 + + Small doc fixes + + docs/reference/glib/glib-sections.txt | 5 +++++ + docs/reference/gobject/gobject-sections.txt | 2 ++ + 2 files changed, 7 insertions(+) + +commit 2de84d65943c29b86c24f2da9c9e7ca094e9c3a6 +Author: Matthias Clasen +AuthorDate: Sun Feb 21 19:42:37 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 19:42:37 2010 -0500 + + Fix up make check + + gio/gfiledescriptorbased.c | 2 ++ + gio/gio.symbols | 13 ++++++++++--- + 2 files changed, 12 insertions(+), 3 deletions(-) + +commit fd751cc2a2906bf4fd19cadacf202de9819247c4 +Author: Matthias Clasen +AuthorDate: Sun Feb 21 19:17:50 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 19:17:50 2010 -0500 + + More updates + + NEWS | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit e0e57fd97d156e860f1211887b6f302c68c86202 +Author: Matthias Clasen +AuthorDate: Sun Feb 21 17:59:15 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 17:59:15 2010 -0500 + + Fix a doc typo. + + Reported in bug 608063 by Дилян Палаузов. + + glib/goption.h | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit dcdc409cd88f6d47eb54a7eee528be6c8667d394 +Author: Matthias Clasen +AuthorDate: Sun Feb 21 16:29:15 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 16:29:15 2010 -0500 + + Fix the large array test to work + + Fix by Sven Herzberg, bug 568760 + + glib/tests/array-test.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 21080a33e12e87144e0534cd18b3699a9dbc2f36 +Author: Matthias Clasen +AuthorDate: Sun Feb 21 16:12:35 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 16:12:35 2010 -0500 + + Add missign single include guards + + Reported in bug 609530. patch by Christian Dywan. + + gio/gcharsetconverter.h | 4 ++++ + gio/gnativevolumemonitor.h | 4 ++++ + gio/gzlibcompressor.h | 4 ++++ + gio/gzlibdecompressor.h | 4 ++++ + 4 files changed, 16 insertions(+) + +commit dd7bd61c5301f92408ccb420a5bbd094faa863c3 +Author: Matthias Clasen +AuthorDate: Sun Feb 21 16:04:21 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 16:04:21 2010 -0500 + + Documentation improvement + + Document the size requirements on output buffer in + g_base64_encode_close. + Patch by Christian Persch, bug 609564. + + glib/gbase64.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 6c1a914d511b9a94fbeb3e30d93608c3f537c0a7 +Author: Matthias Clasen +AuthorDate: Sun Feb 21 15:55:10 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 15:55:10 2010 -0500 + + Fix build on Solaris 8 + + System header fun. See bug 610131. + + configure.in | 2 +- + gio/libasyncns/asyncns.c | 5 +++++ + 2 files changed, 6 insertions(+), 1 deletion(-) + +commit de6914a46a0af720de3df34539e61973e9d4446b +Author: Matthias Clasen +AuthorDate: Sun Feb 21 15:32:08 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 15:32:08 2010 -0500 + + Add a pointer to G_DEFINE_INTERFACE + + docs/reference/gobject/tut_gtype.xml | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit ecb45f43824cdae003cf1280eb0c13039619d6b5 +Author: Matthias Clasen +AuthorDate: Sun Feb 21 15:28:04 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 15:28:04 2010 -0500 + + Fix an oversight + + _Always_ explicitly compare strcmp to 0... this was pointed out in + bug 610484 by Christian Persch. + + glib/gvariant.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 19e438556cd0d958b34cd9a63bd528d680d77c45 +Author: Matthias Clasen +AuthorDate: Sun Feb 21 15:19:06 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Feb 21 15:19:06 2010 -0500 + + Updates + + NEWS | 30 ++++++++++++++++++++++++++++++ + 1 file changed, 30 insertions(+) + +commit e377a6f4816ceef23a730c6e431d9ccbb052e7f0 +Author: Fran Diéguez +AuthorDate: Sat Feb 20 22:22:04 2010 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Sat Feb 20 22:22:04 2010 +0100 + + Updated Galician Translation + + po/gl.po | 119 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 62 insertions(+), 57 deletions(-) + +commit af22e5739ba89a9795f046ddaf00a506b77c5a8e +Author: Piotr Drąg +AuthorDate: Sat Feb 20 22:20:04 2010 +0100 +Commit: Tomasz Dominikowski +CommitDate: Sat Feb 20 22:20:04 2010 +0100 + + Updated Polish translation + + po/pl.po | 1097 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 552 insertions(+), 545 deletions(-) + +commit 5047fd7f688dc0a3e4c148864f63961389bc83f9 +Author: Colin Walters +AuthorDate: Fri Feb 19 16:06:22 2010 -0500 +Commit: Colin Walters +CommitDate: Fri Feb 19 16:39:26 2010 -0500 + + [gutf8.c] Add a bit of documentation to UNICODE_VALID + + glib/gutf8.c | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +commit ed3c914cdbdd02d1af6d2f6a3a3f3a9fdc8dc1c2 +Author: Ryan Lortie +AuthorDate: Fri Feb 19 10:42:53 2010 -0500 +Commit: Ryan Lortie +CommitDate: Fri Feb 19 10:52:03 2010 -0500 + + Merge the main public API of GVariant + + docs/reference/glib/glib-sections.txt | 60 +- + glib/Makefile.am | 1 + + glib/glib.symbols | 56 + + glib/gvariant-core.c | 18 + + glib/gvariant.c | 1858 + +++++++++++++++++++++++++++++++++ + glib/gvariant.h | 95 +- + glib/tests/gvariant.c | 179 +++- + 7 files changed, 2259 insertions(+), 8 deletions(-) + +commit afa5dc0c6d9e1aa9b6e057d93562e6ee5796bf46 +Author: Petr Kovar +AuthorDate: Thu Feb 18 20:07:56 2010 +0100 +Commit: Petr Kovar +CommitDate: Thu Feb 18 20:07:56 2010 +0100 + + Update Czech translation + + po/cs.po | 947 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 480 insertions(+), 467 deletions(-) + +commit 48f74cab395044a07e1220440cdc816db01b9984 +Author: Christian Kellner +AuthorDate: Thu Feb 18 15:49:58 2010 +0100 +Commit: Christian Kellner +CommitDate: Thu Feb 18 15:50:26 2010 +0100 + + Move event support in the inotify backend + + This adds support for G_FILE_MONITOR_SEND_MOVED events when + requested by + the user to the inotify backend. Last part to fix bug #547890. + Based heavily on a patch by Martyn Russel . + + gio/inotify/ginotifydirectorymonitor.c | 7 +++-- + gio/inotify/ginotifyfilemonitor.c | 9 ++++++- + gio/inotify/inotify-helper.c | 49 + +++++++++++++++++++++++++++++----- + gio/inotify/inotify-kernel.c | 4 +-- + gio/inotify/inotify-path.c | 18 +++++++++++++ + gio/inotify/inotify-path.h | 8 +++--- + gio/inotify/inotify-sub.c | 6 +++-- + gio/inotify/inotify-sub.h | 3 ++- + 8 files changed, 86 insertions(+), 18 deletions(-) + +commit 239af977126a4a4b6c68cb43e0876847c7ce2211 +Author: Christian Kellner +AuthorDate: Thu Feb 18 15:43:45 2010 +0100 +Commit: Christian Kellner +CommitDate: Thu Feb 18 15:50:26 2010 +0100 + + GLocalFileMonitor: Support for GFileMonitorFlags + + Evaluate and remember GFileMonitorFlags. This is a part of move + event support for fs-monitoring (bug #547890). + + gio/glocalfilemonitor.c | 28 +++++++++++++++++++++++++--- + gio/glocalfilemonitor.h | 1 + + 2 files changed, 26 insertions(+), 3 deletions(-) + +commit 41956b237601a1c5ded0ba5e8821b9f5d09278be +Author: Christian Kellner +AuthorDate: Thu Feb 18 15:40:13 2010 +0100 +Commit: Christian Kellner +CommitDate: Thu Feb 18 15:50:26 2010 +0100 + + Move event support for fs-monitoring: Event & flag + + Add a G_FILE_MONITOR_SEND_MOVED flag indicating the API user + wants to receive the new G_FILE_MOINOTR_EVENT_MOVED event + instead of single CREATED/DELETED events. + First part of bug #547890. + + gio/gioenums.h | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +commit a5dc1af0a230ecfca2dac7fa0dcdf8359537a9f6 +Author: Ivar Smolin +AuthorDate: Thu Feb 18 11:46:06 2010 +0200 +Commit: Priit Laes +CommitDate: Thu Feb 18 11:46:06 2010 +0200 + + Estonian translation updated + + po/et.po | 511 + +++------------------------------------------------------------ + 1 file changed, 21 insertions(+), 490 deletions(-) + +commit e1cc5a5fecc1847a6080435fc8a40f2d8d534bbb +Author: Mario Blättermann +AuthorDate: Wed Feb 17 09:00:04 2010 +0100 +Commit: Mario Blättermann +CommitDate: Wed Feb 17 09:00:04 2010 +0100 + + Updated German translation + + po/de.po | 1022 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 515 insertions(+), 507 deletions(-) + +commit 63a6666ab7a54c9584b6579e323301f3528e86b3 +Author: Benjamin Otte +AuthorDate: Wed Feb 17 08:45:28 2010 +0100 +Commit: Benjamin Otte +CommitDate: Wed Feb 17 08:55:14 2010 +0100 + + Make g_type_interface_prerequisites() only return one instantiable + type + + Previously, the code had a heisenbug and could potentially return + superclasses, too. In fact, it was based on the behavior of malloc. + + https://bugzilla.redhat.com/show_bug.cgi?id=554678 + + gobject/gtype.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 9fdbae9344a04479ccb601ebd4ae2c709e7856d9 +Author: Matej Urbančič +AuthorDate: Tue Feb 16 12:38:11 2010 +0100 +Commit: Matej Urbančič +CommitDate: Tue Feb 16 12:38:11 2010 +0100 + + Updated Slovenian translation + + po/sl.po | 163 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 84 insertions(+), 79 deletions(-) + +commit b899bfc7415ec76ef563de3fc945b84675357464 +Author: Ryan Lortie +AuthorDate: Mon Feb 15 19:11:58 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 15 19:38:00 2010 -0500 + + GVariant: create child instance from its own data + + also: white-space fix in the serialiser + + glib/gvariant-core.c | 8 ++++++-- + glib/gvariant-serialiser.c | 1 - + 2 files changed, 6 insertions(+), 3 deletions(-) + +commit 7fb9d536c0c89800f745ea2c05380efd8f371bf1 +Author: Changwoo Ryu +AuthorDate: Tue Feb 16 03:42:19 2010 +0900 +Commit: Changwoo Ryu +CommitDate: Tue Feb 16 03:42:19 2010 +0900 + + Updated Korean translation + + po/ko.po | 1032 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 517 insertions(+), 515 deletions(-) + +commit 68505d5a9f0b2cbacee4eafa3ba754612f052a5f +Author: Jorge González +AuthorDate: Mon Feb 15 17:54:26 2010 +0100 +Commit: Jorge González +CommitDate: Mon Feb 15 17:54:26 2010 +0100 + + Updated Spanish translation + + po/es.po | 958 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 483 insertions(+), 475 deletions(-) + +commit 36d29e06f9459ce28206d212667aee3adc1fd780 +Author: Fran Diéguez +AuthorDate: Mon Feb 15 17:10:21 2010 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Mon Feb 15 17:11:14 2010 +0100 + + Updated Galician Translation + + po/gl.po | 1259 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 641 insertions(+), 618 deletions(-) + +commit bb4f63d6390fe5efd183f259e5bd891f89de9e24 +Author: Christian Kellner +AuthorDate: Sun Feb 7 17:23:38 2010 +0100 +Commit: Christian Kellner +CommitDate: Mon Feb 15 13:25:50 2010 +0100 + + GFile: Support for splice(2) in copy_fallback + + The (linux specific) system call splice can be + used to transfer data between file descriptors + whitout copying them into user space. + See bug #604086 for additional details. + + configure.in | 1 + + gio/gfile.c | 187 + +++++++++++++++++++++++++++++++++++++++++++++++++++++------ + 2 files changed, 170 insertions(+), 18 deletions(-) + +commit 28f90db1edf938c04f0b5c8a2f54f8add50db234 +Author: Christian Kellner +AuthorDate: Sun Feb 7 17:18:06 2010 +0100 +Commit: Christian Kellner +CommitDate: Mon Feb 15 13:25:50 2010 +0100 + + GLocalFileOutputStream: Implement GFileDescriptorBased + + Also convert GLocalFileIOStream to use the new interface to obtain + the file descriptor. + + gio/glocalfileiostream.c | 3 ++- + gio/glocalfileoutputstream.c | 30 +++++++++++++++++++++++------- + gio/glocalfileoutputstream.h | 1 - + 3 files changed, 25 insertions(+), 9 deletions(-) + +commit 670f6210ced672eb9c8a500b3dd6cfd22346472b +Author: Christian Kellner +AuthorDate: Sun Feb 7 17:17:44 2010 +0100 +Commit: Christian Kellner +CommitDate: Mon Feb 15 13:25:50 2010 +0100 + + GLocalFileInputStream: Implement GFileDescriptorBased + + gio/glocalfileinputstream.c | 22 +++++++++++++++++++++- + 1 file changed, 21 insertions(+), 1 deletion(-) + +commit 4536a4adbc290f56f3686dec0c8e05c15049a602 +Author: Christian Kellner +AuthorDate: Sun Feb 7 14:51:01 2010 +0100 +Commit: Christian Kellner +CommitDate: Mon Feb 15 13:25:50 2010 +0100 + + GFileDescriptorBased: New interface + + New interface for file descriptor based io object. The interface + is only exported on unix based systems. See bug 604086. + + gio/Makefile.am | 3 ++ + gio/gfiledescriptorbased.c | 72 + ++++++++++++++++++++++++++++++++++++++++++++++ + gio/gfiledescriptorbased.h | 63 ++++++++++++++++++++++++++++++++++++++++ + gio/giotypes.h | 1 + + 4 files changed, 139 insertions(+) + +commit 3840151012b6ed01bfa9aada2914cce974398d0d +Author: Chao-Hsiung Liao +AuthorDate: Mon Feb 15 19:15:38 2010 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Mon Feb 15 19:15:38 2010 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 1028 + +++++++++++++++++++++++++++++------------------------------ + po/zh_TW.po | 1015 + +++++++++++++++++++++++++++++----------------------------- + 2 files changed, 1015 insertions(+), 1028 deletions(-) + +commit b37da7134b127e6c92e7002150077515dc7d42b4 +Author: Alexander Larsson +AuthorDate: Mon Feb 15 10:13:10 2010 +0100 +Commit: Alexander Larsson +CommitDate: Mon Feb 15 10:13:10 2010 +0100 + + Set result_uncertain in win32 g_content_type_guess implementation + + Fixes bug #609143 + + gio/gcontenttype.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 83c6087dcc2168cc41db3a328bbd30341ac3955b +Author: Lucian Grijincu +AuthorDate: Sat Feb 13 19:35:42 2010 +0200 +Commit: Dumitru Mișu Moldovan +CommitDate: Sat Feb 13 19:35:42 2010 +0200 + + Updated Romanian translation + + po/ro.po | 1025 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 510 insertions(+), 515 deletions(-) + +commit e66d66c5559f4f0423d015a4d006f170dcb5d582 +Author: Ryan Lortie +AuthorDate: Thu Feb 11 16:52:20 2010 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 11 16:53:56 2010 -0500 + + GVariant: lock before freeing, to avoid assert + + glib/gvariant-core.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit fd3923aba2f827b47c54edc9728c953b9520fa52 +Author: Benjamin Otte +AuthorDate: Thu Feb 11 21:08:57 2010 +0100 +Commit: Benjamin Otte +CommitDate: Thu Feb 11 21:10:19 2010 +0100 + + Move offsets array from interface data member to TypeNode + + We need to assign offsets when the interface is not yet instantiated. + + gobject/gtype.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 61b649cffd26c3feafe4158da01ebb1394a1b574 +Author: Benjamin Otte +AuthorDate: Thu Feb 11 21:05:41 2010 +0100 +Commit: Benjamin Otte +CommitDate: Thu Feb 11 21:10:19 2010 +0100 + + Move prerequisites out of _prot struct + + Also fix the naming (including typo) + + gobject/gtype.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 1e6b18422563bc428e17e8a4e3c84dac8ed02ab2 +Author: Ryan Lortie +AuthorDate: Wed Feb 10 13:59:14 2010 -0500 +Commit: Ryan Lortie +CommitDate: Wed Feb 10 13:59:35 2010 -0500 + + add performance tests to gitignore + + tests/gobject/.gitignore | 2 ++ + 1 file changed, 2 insertions(+) + +commit 3e30e8a87e18952e9c26c0d05f5c336a110f2bed +Author: Ryan Lortie +AuthorDate: Wed Feb 10 11:29:12 2010 -0500 +Commit: Ryan Lortie +CommitDate: Wed Feb 10 11:35:01 2010 -0500 + + make tests not dynamic link against /lib/libglib + + For some reason, even though the tests are linked against + libgobject.la + and libgobject.la mentions libglib.la as a dependency, the tests are + running against the system glib instead of the in-tree one. + + Adding the libglib.la file as an explicit LDFLAG fixes it. + + tests/gobject/Makefile.am | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +commit 1e655eb02c6cadee45a28df359327ce9fb41c6a5 +Author: Ryan Lortie +AuthorDate: Wed Feb 10 11:13:06 2010 -0500 +Commit: Ryan Lortie +CommitDate: Wed Feb 10 11:35:01 2010 -0500 + + merge GVariant + + docs/reference/glib/Makefile.am | 7 +- + docs/reference/glib/glib-docs.sgml | 1 + + docs/reference/glib/glib-sections.txt | 18 + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/gobject/gobject-sections.txt | 2 + + glib/Makefile.am | 4 + + glib/glib.h | 1 + + glib/glib.symbols | 13 + + glib/gvariant-core.c | 855 + ++++++++++++++++++++++++++++ + glib/gvariant-core.h | 46 ++ + glib/gvariant.h | 47 ++ + gobject/gboxed.c | 27 + + gobject/gboxed.h | 18 + + gobject/gobject.symbols | 2 + + 14 files changed, 1039 insertions(+), 3 deletions(-) + +commit 2afe2325c4c9e42dab8ebfed11b86d24715837e0 +Author: Matej Urbančič +AuthorDate: Wed Feb 10 16:34:53 2010 +0100 +Commit: Matej Urbančič +CommitDate: Wed Feb 10 16:34:53 2010 +0100 + + Updated Slovenian translation + + po/sl.po | 1352 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 701 insertions(+), 651 deletions(-) + +commit 243e340d6edde4d7ae1c45b3041489332f83a6d5 +Author: Matthias Clasen +AuthorDate: Tue Feb 9 10:35:01 2010 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 9 10:35:01 2010 -0500 + + bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1831ff2d30ee837179d9d79d9dbf36016564e0f0 +Author: Matthias Clasen +AuthorDate: Tue Feb 9 10:20:37 2010 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 9 10:20:37 2010 -0500 + + 2.23.3 + + po/am.po | 250 +++++----- + po/ar.po | 254 +++++----- + po/as.po | 254 +++++----- + po/ast.po | 254 +++++----- + po/az.po | 253 +++++----- + po/be.po | 263 ++++++----- + po/be@latin.po | 260 ++++++----- + po/bg.po | 254 +++++----- + po/bn.po | 254 +++++----- + po/bn_IN.po | 254 +++++----- + po/bs.po | 253 +++++----- + po/ca.po | 254 +++++----- + po/ca@valencia.po | 254 +++++----- + po/cs.po | 940 +++++++++++++++++++------------------ + po/cy.po | 254 +++++----- + po/da.po | 254 +++++----- + po/de.po | 254 +++++----- + po/dz.po | 253 +++++----- + po/el.po | 254 +++++----- + po/en@shaw.po | 254 +++++----- + po/en_CA.po | 254 +++++----- + po/en_GB.po | 254 +++++----- + po/eo.po | 251 +++++----- + po/es.po | 955 +++++++++++++++++++------------------- + po/et.po | 254 +++++----- + po/eu.po | 255 +++++----- + po/fa.po | 253 +++++----- + po/fi.po | 254 +++++----- + po/fr.po | 950 ++++++++++++++++++------------------- + po/ga.po | 251 +++++----- + po/gl.po | 254 +++++----- + po/gu.po | 254 +++++----- + po/he.po | 254 +++++----- + po/hi.po | 254 +++++----- + po/hr.po | 253 +++++----- + po/hu.po | 254 +++++----- + po/hy.po | 251 +++++----- + po/id.po | 253 +++++----- + po/is.po | 253 +++++----- + po/it.po | 254 +++++----- + po/ja.po | 254 +++++----- + po/ka.po | 254 +++++----- + po/kn.po | 254 +++++----- + po/ko.po | 254 +++++----- + po/ku.po | 250 +++++----- + po/lt.po | 254 +++++----- + po/lv.po | 251 +++++----- + po/mai.po | 254 +++++----- + po/mg.po | 253 +++++----- + po/mk.po | 254 +++++----- + po/ml.po | 254 +++++----- + po/mn.po | 253 +++++----- + po/mr.po | 254 +++++----- + po/ms.po | 253 +++++----- + po/nb.po | 940 +++++++++++++++++++------------------ + po/ne.po | 253 +++++----- + po/nl.po | 256 +++++----- + po/nn.po | 254 +++++----- + po/oc.po | 249 +++++----- + po/or.po | 254 +++++----- + po/pa.po | 254 +++++----- + po/pl.po | 254 +++++----- + po/ps.po | 253 +++++----- + po/pt.po | 254 +++++----- + po/pt_BR.po | 940 +++++++++++++++++++------------------ + po/ro.po | 254 +++++----- + po/ru.po | 258 ++++++----- + po/rw.po | 253 +++++----- + po/si.po | 254 +++++----- + po/sk.po | 253 +++++----- + po/sl.po | 1340 + ++++++++++++++++++++++++++--------------------------- + po/sq.po | 256 +++++----- + po/sr.po | 254 +++++----- + po/sr@ije.po | 253 +++++----- + po/sr@latin.po | 254 +++++----- + po/sv.po | 254 +++++----- + po/ta.po | 254 +++++----- + po/te.po | 254 +++++----- + po/th.po | 21 +- + po/tl.po | 253 +++++----- + po/tr.po | 254 +++++----- + po/tt.po | 250 +++++----- + po/uk.po | 254 +++++----- + po/vi.po | 254 +++++----- + po/wa.po | 253 +++++----- + po/xh.po | 253 +++++----- + po/yi.po | 251 +++++----- + po/zh_CN.po | 254 +++++----- + po/zh_HK.po | 254 +++++----- + po/zh_TW.po | 254 +++++----- + 90 files changed, 15161 insertions(+), 11981 deletions(-) + +commit f570cf99b32d65633082f451a41d3336de0ec005 +Author: Matthias Clasen +AuthorDate: Tue Feb 9 09:16:23 2010 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 9 09:16:23 2010 -0500 + + Doc cleanups + + docs/reference/glib/Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +commit a68c0cde8f3b3ca7aa581843a65e43fcc2b11409 +Author: Matthias Clasen +AuthorDate: Tue Feb 9 08:46:50 2010 -0500 +Commit: Matthias Clasen +CommitDate: Tue Feb 9 08:46:50 2010 -0500 + + Updates + + NEWS | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +commit bd6a88aef70cb93d79580c00dae420c4a4729f1e +Author: Ryan Lortie +AuthorDate: Mon Feb 8 00:43:17 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 8 00:44:32 2010 -0500 + + gstrfuncs.h: needs gmacros.h for G_BEGIN_DECLS + + glib/gstrfuncs.h | 1 + + 1 file changed, 1 insertion(+) + +commit 0be1a4fb973e6a10c12ad9d67344281ccee5ce7e +Author: Theppitak Karoonboonyanan +AuthorDate: Mon Feb 8 09:57:37 2010 +0700 +Commit: Theppitak Karoonboonyanan +CommitDate: Mon Feb 8 09:57:37 2010 +0700 + + Updated Thai translation. + + po/th.po | 276 + +++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 155 insertions(+), 121 deletions(-) + +commit e04c9c699c1ca181419d3d325aade70cf3e14763 +Author: Ryan Lortie +AuthorDate: Sun Feb 7 15:41:21 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Feb 7 15:43:06 2010 -0500 + + add missing #include "config.h" + + glib/gbuffer.c | 2 ++ + glib/gurifuncs.c | 2 ++ + glib/gvariant-serialiser.c | 2 ++ + glib/gvarianttype.c | 2 ++ + glib/gvarianttypeinfo.c | 2 ++ + 5 files changed, 10 insertions(+) + +commit 218c691ca33f556033535fa43a39b65cd2276282 +Author: Ryan Lortie +AuthorDate: Sun Feb 7 03:14:28 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Feb 7 03:14:28 2010 -0500 + + remove #include from some .c files + + include individual headers instead + + glib/gurifuncs.c | 9 +++++++-- + glib/gvarianttypeinfo.c | 5 ++++- + 2 files changed, 11 insertions(+), 3 deletions(-) + +commit ea2917b01f045d8e7ede4824039d462203af3290 +Author: Ryan Lortie +AuthorDate: Sun Feb 7 03:08:08 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Feb 7 03:08:08 2010 -0500 + + gurifuncs.c: #include "string.h" -> + + glib/gurifuncs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9f303375736edbb6c7d39f339b89be14d621fd8e +Author: Ryan Lortie +AuthorDate: Sun Feb 7 02:52:07 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sun Feb 7 02:52:07 2010 -0500 + + GVariantTypeInfo: free hash table when not in use + + glib/gvarianttypeinfo.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +commit 80538aba7ea8f9a05ea1a6a66eb202a4ccfe4b5f +Author: Ryan Lortie +AuthorDate: Thu Feb 4 21:18:53 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Feb 6 10:26:02 2010 -0500 + + merge the GVariant serialiser + + glib/Makefile.am | 2 + + glib/gvariant-serialiser.c | 1656 + ++++++++++++++++++++++++++++++++++++++++++++ + glib/gvariant-serialiser.h | 75 ++ + glib/tests/gvariant.c | 1245 +++++++++++++++++++++++++++++++++ + 4 files changed, 2978 insertions(+) + +commit eea6042f5f4db2f123763097ac2fd4738cef24ee +Author: Ryan Lortie +AuthorDate: Fri Feb 5 12:37:43 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Feb 6 10:19:29 2010 -0500 + + GMappedFile: minimal changes to support GBuffer + + Just reorganise the GMappedFile struct to be binary compatible with + GBuffer. If GBuffer becomes public later then we can revisit this. + + glib/gmappedfile.c | 46 +++++++++++++++++++++++++++++++--------------- + 1 file changed, 31 insertions(+), 15 deletions(-) + +commit 3f4b7f6d37cd0036f65c31eeee033d650072561e +Author: Ryan Lortie +AuthorDate: Sat Feb 6 10:18:07 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Feb 6 10:18:08 2010 -0500 + + add private GBuffer type + + glib/Makefile.am | 2 + + glib/gbuffer.c | 205 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/gbuffer.h | 88 ++++++++++++++++++++++++ + 3 files changed, 295 insertions(+) + +commit 813d0d17a65be2ecb5961a96630d11a195ce6a67 +Author: Tim-Philipp Müller +AuthorDate: Fri Feb 5 01:14:20 2010 +0000 +Commit: Tim-Philipp Müller +CommitDate: Sat Feb 6 13:37:04 2010 +0100 + + Don't leak filename in g_io_modules_scan_all_in_directory + + https://bugzilla.gnome.org/show_bug.cgi?id=608159 + + gio/giomodule.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 4adde81771f5a4471a568a409a38fd9162d49418 +Author: Hans Breuer +AuthorDate: Sat Feb 6 13:22:39 2010 +0100 +Commit: Hans Breuer +CommitDate: Sat Feb 6 13:22:39 2010 +0100 + + Fix inconsistent line-endings + + Apparently CRLF (windows format) was checked in from Linux + causing modified by checkout under windows. See: + http://help.github.com/dealing-with-lineendings/ + http://mail.gnome.org/archives/gtk-devel-list/2009-July/msg00041.html + + po/be.po | 400 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 200 insertions(+), 200 deletions(-) + +commit 00b55e2bc7cb7f4ff7adb3b40e1b41becce6cba1 +Author: Tor Lillqvist +AuthorDate: Sat Feb 6 10:40:03 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Sat Feb 6 10:42:28 2010 +0200 + + Drop empty elements from the VS9 vcproj files + + Dunno if this makes sense, if one lets VS edit the it will put them + back anyway. But it's more pleasing to the eye. + + build/win32/vs9/gio.vcproj | 50 ----- + build/win32/vs9/glib-genmarshal.vcproj | 50 ----- + build/win32/vs9/glib.vcproj | 230 + ++++++--------------- + build/win32/vs9/gmodule.vcproj | 50 ----- + build/win32/vs9/gobject.vcproj | 50 ----- + build/win32/vs9/gspawn-win32-helper-console.vcproj | 50 ----- + build/win32/vs9/gspawn-win32-helper.vcproj | 50 ----- + build/win32/vs9/gthread.vcproj | 50 ----- + build/win32/vs9/testglib.vcproj | 50 ----- + 9 files changed, 60 insertions(+), 570 deletions(-) + +commit 10cd6df4a8b947b3b2b68891c779f5318b46e8de +Author: Jonh Wendell +AuthorDate: Fri Feb 5 11:09:26 2010 -0300 +Commit: Jonh Wendell +CommitDate: Fri Feb 5 11:09:26 2010 -0300 + + Updated Brazilian Portuguese translation + + po/pt_BR.po | 1005 + +++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 523 insertions(+), 482 deletions(-) + +commit 5e753d6abcad6040a6fd25f5ac34d5dab4f7ae22 +Author: Ryan Lortie +AuthorDate: Thu Feb 4 20:27:11 2010 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 4 20:32:39 2010 -0500 + + rename test: gvarianttype -> gvariant + + More test cases will be added to this file. + + glib/tests/.gitignore | 2 +- + glib/tests/Makefile.am | 4 +- + glib/tests/gvariant.c | 1041 + +++++++++++++++++++++++++++++++++++++++++++++ + glib/tests/gvarianttype.c | 1041 + --------------------------------------------- + 4 files changed, 1044 insertions(+), 1044 deletions(-) + +commit 9a990cea0cfc7357000e30f3c24030fed2ff4708 +Author: Petr Kovar +AuthorDate: Thu Feb 4 23:54:15 2010 +0100 +Commit: Petr Kovar +CommitDate: Thu Feb 4 23:54:15 2010 +0100 + + Update Czech translation + + po/cs.po | 1012 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 521 insertions(+), 491 deletions(-) + +commit 762e18d8cebf907e51aed14298525048f7c9e015 +Author: Tor Lillqvist +AuthorDate: Thu Feb 4 19:57:38 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Thu Feb 4 19:59:12 2010 +0200 + + Further work on VS9 project files + + build/win32/vs9/README.txt | 16 ++++++++++++---- + build/win32/vs9/glib.vsprops | 32 ++++++++++++++++++++++++++++++-- + build/win32/vs9/install.vcproj | 8 ++++---- + 3 files changed, 46 insertions(+), 10 deletions(-) + +commit 021643cda4f9b13fd72e898165744e9aefb346cd +Author: Tor Lillqvist +AuthorDate: Thu Feb 4 19:54:50 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Thu Feb 4 19:59:05 2010 +0200 + + Clarify use of struct stat on Windows + + gio/glocalfile.c | 23 ++++++++++++++--------- + gio/glocalfileinfo.c | 10 ++++++---- + glib/gstdio.c | 24 +++++++++++++++++++----- + glib/gstdio.h | 37 +++++++++++++++++++++++++++++++++++++ + 4 files changed, 76 insertions(+), 18 deletions(-) + +commit 5589d2b45567a0b35e8d8f55f20b1e381c53ca04 +Author: Tor Lillqvist +AuthorDate: Thu Feb 4 19:20:08 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Thu Feb 4 19:58:55 2010 +0200 + + Internally use the _stati64 API explicitly on Windows + + Avoids warnings and confusion when compiling with MSVC. + + glib/giowin32.c | 24 ++++++++++-------------- + glib/gkeyfile.c | 5 ++--- + glib/gmappedfile.c | 5 ++--- + 3 files changed, 14 insertions(+), 20 deletions(-) + +commit 05291c0d11f269dedacde62e767b75976c27bd33 +Author: Tor Lillqvist +AuthorDate: Thu Feb 4 15:24:56 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Thu Feb 4 19:58:21 2010 +0200 + + Enable libtool compatible DLL naming in the VS9 projects + + build/win32/vs9/gio.vcproj | 8 ++++---- + build/win32/vs9/glib.vcproj | 8 ++++---- + build/win32/vs9/glib.vsprops | 28 +++++++++++++++++++++++++++- + build/win32/vs9/gmodule.vcproj | 8 ++++---- + build/win32/vs9/gobject.vcproj | 8 ++++---- + build/win32/vs9/gthread.vcproj | 8 ++++---- + 6 files changed, 47 insertions(+), 21 deletions(-) + +commit bfd60d8835149ede901b52f42d2a56c8ec6e7f77 +Author: Ryan Lortie +AuthorDate: Thu Feb 4 09:06:56 2010 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 4 09:08:51 2010 -0500 + + GVariantType test case: assert all memory freed + + Make sure we've freed all TypeInfos at the end of the test. + + glib/tests/gvarianttype.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 6d6d7a8bb2c58b4cce7031e68d31978b2f83e6ff +Author: Ryan Lortie +AuthorDate: Thu Feb 4 09:04:32 2010 -0500 +Commit: Ryan Lortie +CommitDate: Thu Feb 4 09:08:51 2010 -0500 + + GVariantTypeInfo tweaks + + 1) always emit ending type FIXED for fixed sized items + + The serialiser needs to know if it dealing with a fixed sized item + in case the serialised data is corrupt and the item has the wrong + size. + + 2) add a macro that will be used by test cases to check that all + memory has been freed. + + glib/gvarianttypeinfo.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit cb7dfdc1943c016fe05c67ccedf653bfb7bc3891 +Author: Tor Lillqvist +AuthorDate: Thu Feb 4 15:00:15 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Thu Feb 4 15:04:22 2010 +0200 + + Use inherited properties in all configurations in gmodule, too + + build/win32/vs9/gmodule.vcproj | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +commit 79eb03aa4f6f75c7049a3c5b11cb83fea0685b88 +Author: Tor Lillqvist +AuthorDate: Thu Feb 4 14:51:56 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Thu Feb 4 14:54:28 2010 +0200 + + Use README.txt instead of README for Windows developer friendliness + + build/win32/vs9/Makefile.am | 2 +- + build/win32/vs9/README | 29 ----------------------------- + build/win32/vs9/README.txt | 29 +++++++++++++++++++++++++++++ + 3 files changed, 30 insertions(+), 30 deletions(-) + +commit ec1944781589fdb15d61b2b251d51bd7e4617832 +Author: Tor Lillqvist +AuthorDate: Thu Feb 4 14:50:36 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Thu Feb 4 14:54:20 2010 +0200 + + Update README for VS9 build + + build/win32/vs9/README | 33 +++++++++++++++++++++++++++++---- + 1 file changed, 29 insertions(+), 4 deletions(-) + +commit 9d444f7b12fff6b7f9e6ba4a2667ab293af793eb +Author: Tor Lillqvist +AuthorDate: Thu Feb 4 14:36:23 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Thu Feb 4 14:53:44 2010 +0200 + + Refactor VS9 project files + + Factor out common parts into a vsprops file. Drop empty elements for + tools that aren't used. + + build/win32/vs9/Makefile.am | 9 +- + build/win32/vs9/gio.vcproj | 184 + +++---------------- + build/win32/vs9/glib-genmarshal.vcproj | 138 +-------------- + build/win32/vs9/glib.vcproj | 194 + +++----------------- + build/win32/vs9/glib.vsprops | 196 + +++++++++++++++++++++ + build/win32/vs9/gmodule.vcproj | 173 + ++---------------- + build/win32/vs9/gobject.vcproj | 178 + +++---------------- + build/win32/vs9/gspawn-win32-helper-console.vcproj | 142 +-------------- + build/win32/vs9/gspawn-win32-helper.vcproj | 142 +-------------- + build/win32/vs9/gthread.vcproj | 150 +--------------- + build/win32/vs9/install.vcproj | 164 + +---------------- + build/win32/vs9/testglib.vcproj | 142 +-------------- + 12 files changed, 319 insertions(+), 1493 deletions(-) + +commit 241c7f476d8867d4d380c655d15a8963152a1fa0 +Author: Tor Lillqvist +AuthorDate: Thu Feb 4 14:35:04 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Thu Feb 4 14:53:20 2010 +0200 + + Don't use deprecated g_win32 API + + tests/testglib.c | 24 ------------------------ + 1 file changed, 24 deletions(-) + +commit 3f3c163aa2ddbfb756b556b70901d2a58b1313d9 +Author: Tor Lillqvist +AuthorDate: Thu Feb 4 00:37:13 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Thu Feb 4 00:37:13 2010 +0200 + + Put a version info resource also in the gio DLL + + Also, distribute gio/gio.rc(.in). + + configure.in | 1 + + gio/Makefile.am | 18 +++++++++++++++++- + gio/gio.rc.in | 2 +- + 3 files changed, 19 insertions(+), 2 deletions(-) + +commit 154a5314be98b22cb3171721d40cb9c4e6d5f102 +Author: Tor Lillqvist +AuthorDate: Thu Feb 4 00:11:44 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Thu Feb 4 00:12:50 2010 +0200 + + Update copyright years + + glib/glib.rc.in | 2 +- + gmodule/gmodule.rc.in | 2 +- + gobject/gobject.rc.in | 2 +- + gthread/gthread.rc.in | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +commit 33b011ce7d9415d60493595bbfe14dbc02c2d201 +Author: Krzesimir Nowak +AuthorDate: Wed Jan 13 18:40:17 2010 +0100 +Commit: Krzesimir Nowak +CommitDate: Wed Feb 3 21:48:39 2010 +0100 + + Add checks for NULL pointer in arrays. + + Fixes: Bug 599197 - array ref and unref functions crash on NULL + array. + + * garray.c: Added safety guards to all public functions, which did + not have them earlier. Now when NULL is passed to them, they will + issue a warning and return, instead of segfaulting. + + glib/garray.c | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit 2b121c02efc13f4b8c6c771b33a2363a21e7757f +Author: River Tarnell +AuthorDate: Wed Feb 3 17:31:02 2010 +0100 +Commit: Sven Herzberg +CommitDate: Wed Feb 3 17:31:02 2010 +0100 + + properly guard the includes + + Fixes: Bug 604967 - 2.22.3 libasyncns build fails on HP-UX 11.11 + + * gio/libasyncns/asyncns.c: properly guard the includes of + sys/select.h + and sys/time.h + + gio/libasyncns/asyncns.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit e62e7227bf6d97215b697fd9a1d7b4a5addd70cb +Author: Tor Lillqvist +AuthorDate: Wed Feb 3 18:09:28 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Wed Feb 3 18:12:32 2010 +0200 + + Fix the "install" VS9 project + + Install also ghostutils.h. Don't bother mentioning any pointless + PreprocessorDefinitions for the "install" project, as all it does is + copy files. + + build/win32/vs9/install.vcproj | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 0ac2277b490dae967b7a5083966610cffe8582e1 +Author: Ryan Lortie +AuthorDate: Tue Feb 2 23:38:20 2010 -0500 +Commit: Ryan Lortie +CommitDate: Tue Feb 2 23:39:21 2010 -0500 + + GVariantTypeInfo changes + + - rename 'type' in MemberInfo to 'type_info' + - add 'ending_type' field to MemberInfo + - document how to find the ending + + glib/gvarianttypeinfo.c | 23 ++++++++++++++++------- + glib/gvarianttypeinfo.h | 21 ++++++++++++++++++++- + glib/tests/gvarianttype.c | 6 +++--- + 3 files changed, 39 insertions(+), 11 deletions(-) + +commit 1de58ef708fb1972445a65e184e1579f0d0bbaaf +Author: Tor Lillqvist +AuthorDate: Tue Feb 2 21:24:45 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Tue Feb 2 21:26:12 2010 +0200 + + Link with dnsapi.lib also in 32-bit builds + + build/win32/vs9/gio.vcproj | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 57d3e4cba3a0a273d93a25356801080d710d926e +Author: Tor Lillqvist +AuthorDate: Tue Feb 2 21:23:27 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Tue Feb 2 21:26:01 2010 +0200 + + Include also testglib.vcproj in tarball + + build/win32/vs9/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit cf0e4c33fa8a7efdc62d52cad0d7dc9135dccdf8 +Author: Philip Withnall +AuthorDate: Tue Feb 2 10:41:00 2010 +0000 +Commit: Philip Withnall +CommitDate: Tue Feb 2 10:41:00 2010 +0000 + + Don't use a compiler keyword as a variable name + + Appease the MS C++ compiler by using _val instead of __value as + a variable + name in G_VALUE_COLLECT_INIT. + + Problem found by Haakon Sporsheim . + Re-closes: bgo#608602 + + gobject/gvaluecollector.h | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit e2bc5c21122b0a0703524a37df6cef43577a46f7 +Author: Ryan Lortie +AuthorDate: Mon Feb 1 18:30:57 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 1 18:32:34 2010 -0500 + + g_bit_lock: remove double variable declarations + + Remove double declaration of local static variables used for futex + emulation. + + Problem found by Haakon Sporsheim . + + glib/gbitlock.c | 3 --- + 1 file changed, 3 deletions(-) + +commit 27a080537efdb8660c62445427b53fc29735f304 +Author: Dan Winship +AuthorDate: Mon Feb 1 18:11:43 2010 -0500 +Commit: Dan Winship +CommitDate: Mon Feb 1 18:12:39 2010 -0500 + + ghostutils: Fix a crash and add some tests + + https://bugzilla.gnome.org/show_bug.cgi?id=608743 + + glib/ghostutils.c | 13 ++++++++++++- + glib/tests/hostutils.c | 19 +++++++++++++++++++ + 2 files changed, 31 insertions(+), 1 deletion(-) + +commit 3443f47ddf520b044997d5b09b95dec692e34ae5 +Author: Ryan Lortie +AuthorDate: Sun Jan 31 14:30:08 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 1 12:39:29 2010 -0500 + + G{Byte,Ptr,}Array: move docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 3 + + docs/reference/glib/tmpl/arrays.sgml | 339 --------------- + docs/reference/glib/tmpl/arrays_byte.sgml | 211 --------- + docs/reference/glib/tmpl/arrays_pointer.sgml | 308 ------------- + glib/garray.c | 629 + +++++++++++++++++++++++++++ + 5 files changed, 632 insertions(+), 858 deletions(-) + +commit 501a2906d3208440a74bebe8736ea39b3f5b5947 +Author: Ryan Lortie +AuthorDate: Sun Jan 31 13:07:16 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 1 12:39:24 2010 -0500 + + GList, GSList: move docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 2 + + docs/reference/glib/tmpl/linked_lists_double.sgml | 467 + ---------------------- + docs/reference/glib/tmpl/linked_lists_single.sgml | 394 + ------------------ + glib/glist.c | 154 +++++++ + glib/gslist.c | 113 ++++++ + 5 files changed, 269 insertions(+), 861 deletions(-) + +commit c8c5c5a991b384964d0650d7fec02663dddc9035 +Author: Ryan Lortie +AuthorDate: Sun Jan 31 01:26:49 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 1 10:28:39 2010 -0500 + + remove trailing whitespace breaking .gitignore + + docs/reference/glib/tmpl/.gitignore | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4bdf7d12a8ef7e027dced8d0da46986c2009180e +Author: Ryan Lortie +AuthorDate: Sun Jan 31 00:39:40 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 1 10:28:39 2010 -0500 + + GIOChannel: move docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/iochannels.sgml | 666 + ------------------------------- + glib/giochannel.c | 196 +++++++++ + glib/giounix.c | 36 ++ + glib/giowin32.c | 52 +++ + 5 files changed, 285 insertions(+), 666 deletions(-) + +commit 4353151449fedf8e018c07ae4d196652a39f0528 +Author: Ryan Lortie +AuthorDate: Sun Jan 31 00:27:28 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 1 10:28:39 2010 -0500 + + GTree, GNode: move docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 2 + + docs/reference/glib/tmpl/trees-binary.sgml | 250 -------------- + docs/reference/glib/tmpl/trees-nary.sgml | 501 + ----------------------------- + glib/gnode.c | 116 +++++++ + glib/gtree.c | 67 ++++ + 5 files changed, 185 insertions(+), 751 deletions(-) + +commit d81506a154ba387e339dfb5ff6acddac1e4866c5 +Author: Ryan Lortie +AuthorDate: Sun Jan 31 00:18:09 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 1 10:28:39 2010 -0500 + + GThreadPool: move docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/thread_pools.sgml | 202 + ----------------------------- + glib/gthreadpool.c | 50 +++++++ + 3 files changed, 51 insertions(+), 202 deletions(-) + +commit c471468ca477b44c1c14038951f720fd1ca26070 +Author: Ryan Lortie +AuthorDate: Sun Jan 31 00:16:14 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 1 10:28:39 2010 -0500 + + GRelation: move docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/relations.sgml | 204 + -------------------------------- + glib/grel.c | 162 +++++++++++++++++++++++++ + 3 files changed, 163 insertions(+), 204 deletions(-) + +commit 21a6b69f4fe85948e6e97650ccdd6e280098a790 +Author: Ryan Lortie +AuthorDate: Sun Jan 31 00:10:58 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 1 10:28:39 2010 -0500 + + GCache: move docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/caches.sgml | 162 + ----------------------------------- + glib/gcache.c | 134 +++++++++++++++++++++++++++++ + 3 files changed, 135 insertions(+), 162 deletions(-) + +commit fa7cafae5cfea880a1d6cfc82b000eecd34534e1 +Author: Ryan Lortie +AuthorDate: Sun Jan 31 00:05:48 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 1 10:28:39 2010 -0500 + + GChecksum: move docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/checksum.sgml | 145 + --------------------------------- + glib/gchecksum.c | 22 +++++ + 3 files changed, 23 insertions(+), 145 deletions(-) + +commit 5ee096636b3e603863e0935c2e7ff107b4d72f63 +Author: Ryan Lortie +AuthorDate: Sun Jan 31 00:03:33 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Feb 1 10:28:39 2010 -0500 + + GCompletion: move docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/completion.sgml | 158 + ------------------------------- + glib/gcompletion.c | 122 ++++++++++++++++++++++++ + 3 files changed, 123 insertions(+), 158 deletions(-) + +commit 75b3bd99e1a219fdd8d8f0be5a9fdddfda120ace +Author: Christian Dywan +AuthorDate: Mon Feb 1 12:37:23 2010 +0100 +Commit: Christian Dywan +CommitDate: Mon Feb 1 12:37:23 2010 +0100 + + Fix typo in introduction to threads in Glib + + glib/gthread.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f25e756ab65fef3bd793aaf234a82b4a82d19d67 +Author: Kjartan Maraas +AuthorDate: Sun Jan 31 19:57:59 2010 +0100 +Commit: Kjartan Maraas +CommitDate: Sun Jan 31 19:57:59 2010 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 965 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 504 insertions(+), 461 deletions(-) + +commit aa67c725e1bde15c900b65c1971771ec084cef20 +Author: Philip Withnall +AuthorDate: Sun Jan 31 16:15:32 2010 +0000 +Commit: Philip Withnall +CommitDate: Sun Jan 31 17:45:54 2010 +0000 + + Fix shadowing of G_VALUE_COLLECT variables in G_VALUE_COLLECT_INIT + + Closes: bgo#608602 + + gobject/gvaluecollector.h | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 6d52d34dff51676bdfa42d09c26c683304275c39 +Author: Ryan Lortie +AuthorDate: Sat Jan 30 23:34:19 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 23:34:19 2010 -0500 + + data{list,sets}, quarks: move docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 3 + + docs/reference/glib/tmpl/datalist.sgml | 244 ------------------- + docs/reference/glib/tmpl/datasets.sgml | 212 ---------------- + docs/reference/glib/tmpl/quarks.sgml | 124 ---------- + glib/gdataset.c | 428 + ++++++++++++++++++++++++++++++++- + 5 files changed, 429 insertions(+), 582 deletions(-) + +commit c7000fcfecca109a9f35c8c2e4e56d3a63cf5bd6 +Author: Ryan Lortie +AuthorDate: Sat Jan 30 23:10:34 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 23:10:34 2010 -0500 + + GPattern: move docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/patterns.sgml | 124 + --------------------------------- + glib/gpattern.c | 103 +++++++++++++++++++++++++++ + 3 files changed, 104 insertions(+), 124 deletions(-) + +commit 84572f81bfc2696390625e814d0200cbb26220cb +Author: Ryan Lortie +AuthorDate: Sat Jan 30 23:04:52 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 23:04:52 2010 -0500 + + String chunks: move docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/string_chunks.sgml | 108 + ---------------------------- + glib/gstring.c | 35 +++++++++ + 3 files changed, 36 insertions(+), 108 deletions(-) + +commit 4431ac5dda5a3f130c9eb8f41445c883d960fe4c +Author: Ryan Lortie +AuthorDate: Sat Jan 30 22:58:43 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 22:58:43 2010 -0500 + + Move allocator and memchunk docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 2 + + docs/reference/glib/tmpl/allocators.sgml | 57 ----- + docs/reference/glib/tmpl/memory_chunks.sgml | 331 + -------------------------- + glib/gmem.c | 353 + ++++++++++++++++++++++++++++ + glib/gtimer.c | 3 +- + 5 files changed, 357 insertions(+), 389 deletions(-) + +commit 3a161ee8f34f8c5861075a4b0d52730f7ba5bec0 +Author: Ryan Lortie +AuthorDate: Sat Jan 30 22:19:29 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 22:19:29 2010 -0500 + + GSequence: move docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/sequence.sgml | 432 + --------------------------------- + glib/gsequence.c | 69 ++++++ + 3 files changed, 70 insertions(+), 432 deletions(-) + +commit 0ab7bb4b18908813b484514b8d2f597d962dd3c7 +Author: Ryan Lortie +AuthorDate: Sat Jan 30 22:15:35 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 22:15:50 2010 -0500 + + GShell: move docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/shell.sgml | 68 + ------------------------------------- + glib/gshell.c | 22 ++++++++++++ + 3 files changed, 23 insertions(+), 68 deletions(-) + +commit f6482a1eaa10f6e21536776ca667980ccd9e5f77 +Author: Ryan Lortie +AuthorDate: Sat Jan 30 22:12:22 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 22:12:22 2010 -0500 + + GTimer: move docs from tmpl to .c + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/timers.sgml | 110 + ----------------------------------- + glib/gtimer.c | 91 ++++++++++++++++++++++++++++- + 3 files changed, 91 insertions(+), 111 deletions(-) + +commit d87712d3e6d3975b2c0a5fb436b8b8d3e009a3e1 +Author: Ryan Lortie +AuthorDate: Sat Jan 30 21:55:03 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 21:55:03 2010 -0500 + + Fix up gthread.c documentation + + The last incomplete commit got pushed accidentally. This finishes + it up. + + glib/gthread.c | 214 + ++++++++++++++++++++++++++++++++++++++++----------------- + 1 file changed, 151 insertions(+), 63 deletions(-) + +commit 0f246e28ca6651b7b40a5a5668b45729226ca177 +Author: Ryan Lortie +AuthorDate: Sat Jan 30 20:15:25 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 20:15:25 2010 -0500 + + merge GVariantTypeInfo + + glib/Makefile.am | 2 + + glib/gvarianttypeinfo.c | 841 + ++++++++++++++++++++++++++++++++++++++++++++++ + glib/gvarianttypeinfo.h | 140 ++++++++ + glib/tests/gvarianttype.c | 429 +++++++++++++++++++++-- + 4 files changed, 1392 insertions(+), 20 deletions(-) + +commit 4c58a85dd1eb89fe45b8fc5730291238c057d63e +Author: Ryan Lortie +AuthorDate: Sat Jan 30 16:00:51 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 16:00:51 2010 -0500 + + Revert accidental commit "dirt" + + This reverts commit c46bc6ba1fc8c5045c9a93b95e78e81936e2d954. + + docs/reference/glib/Makefile.am | 1 - + docs/reference/glib/glib-sections.txt | 2 + + docs/reference/glib/tmpl/glib-unused.sgml | 847 + ++---------------------------- + docs/reference/glib/tmpl/macros_misc.sgml | 5 +- + docs/reference/glib/tmpl/version.sgml | 68 --- + 5 files changed, 44 insertions(+), 879 deletions(-) + +commit f411e23043a5f97010ee12895f78a779df43b3dd +Author: Ryan Lortie +AuthorDate: Sat Jan 30 14:06:12 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 14:06:12 2010 -0500 + + GIO: Remove trailing "." from Since: tags in docs + + Typing "Since: 2.22." results in the creation of an + api-index-2.22..xml + file (ie: the last '.' is taken to be part of the version number). + + gio/gfileinfo.h | 4 ++-- + gio/gsocket.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit c46bc6ba1fc8c5045c9a93b95e78e81936e2d954 +Author: Ryan Lortie +AuthorDate: Sat Jan 30 13:00:01 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 13:30:00 2010 -0500 + + dirt + + docs/reference/glib/Makefile.am | 1 + + docs/reference/glib/glib-sections.txt | 2 - + docs/reference/glib/tmpl/glib-unused.sgml | 847 + ++++++++++++++++++++++++++++-- + docs/reference/glib/tmpl/macros_misc.sgml | 5 +- + docs/reference/glib/tmpl/version.sgml | 68 +++ + 5 files changed, 879 insertions(+), 44 deletions(-) + +commit 6857767b8600a361188f75e62c086ed7d7c06d7c +Author: Ryan Lortie +AuthorDate: Sat Jan 30 12:32:09 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 13:30:00 2010 -0500 + + move threads docs to .c + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/threads.sgml | 1801 + --------------------------------- + glib/gthread.c | 1492 ++++++++++++++++++++++++++- + 3 files changed, 1475 insertions(+), 1819 deletions(-) + +commit 4234481855b8bef92d594421977a2aa130ac3ad6 +Author: Ryan Lortie +AuthorDate: Sat Jan 30 13:29:23 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 13:30:00 2010 -0500 + + GIOChannel: fill in missing docs + + docs/reference/glib/tmpl/iochannels.sgml | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit 7b6c8a56059657073f56dbc2a9d04acde2588349 +Author: Ryan Lortie +AuthorDate: Sat Jan 30 12:30:53 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 12:32:37 2010 -0500 + + g_strlcpy doc: small fixup + + prevent the from getting sucked in as part of the Returns: + + glib/gstrfuncs.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 522dafe126ed814a1699238142fbc12b7f55b0b6 +Author: Ryan Lortie +AuthorDate: Sat Jan 30 12:13:50 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 12:32:37 2010 -0500 + + gbitlock: fix gtkdoc brokenness + + glib/gbitlock.c | 1 + + glib/gbitlock.h | 6 +++--- + 2 files changed, 4 insertions(+), 3 deletions(-) + +commit d51b6c471ab13348077630e8f7a3a480b3d266f0 +Author: Ryan Lortie +AuthorDate: Sat Jan 30 01:00:50 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 12:32:37 2010 -0500 + + GRand: move docs from tmpl to inline comments + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/random_numbers.sgml | 206 + --------------------------- + glib/grand.c | 64 +++++++++ + 3 files changed, 65 insertions(+), 206 deletions(-) + +commit 3de141b8d5d410a87481a2dec1bb3227464d97c8 +Author: Jorge González +AuthorDate: Sat Jan 30 12:37:00 2010 +0100 +Commit: Jorge González +CommitDate: Sat Jan 30 12:37:00 2010 +0100 + + Updated Spanish translation + + po/es.po | 984 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 514 insertions(+), 470 deletions(-) + +commit 2f4bc34b324505cc6b196a9793b71e8455fe8540 +Author: Ryan Lortie +AuthorDate: Sat Jan 30 00:00:48 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 00:01:26 2010 -0500 + + gvarianttype: fix a trivial missing const + + glib/gvarianttype.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1d55cfb51e03f4ba23191df4625ca62d3624652e +Author: Ryan Lortie +AuthorDate: Fri Jan 29 23:56:04 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 30 00:01:26 2010 -0500 + + don't #include from other public headers + + fix up some problems that were hidden by that + + glib/glib.symbols | 6 ++++-- + glib/gtestutils.c | 1 + + glib/gtestutils.h | 6 +++++- + glib/gurifuncs.c | 1 + + glib/gurifuncs.h | 2 +- + glib/gvarianttype.c | 1 + + 6 files changed, 13 insertions(+), 4 deletions(-) + +commit 71b14dedd8fa7b141e1496ba0b727996f6808579 +Author: Claude Paroz +AuthorDate: Fri Jan 29 22:52:58 2010 +0100 +Commit: Claude Paroz +CommitDate: Fri Jan 29 22:52:58 2010 +0100 + + Updated French translation + + po/fr.po | 1008 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 514 insertions(+), 494 deletions(-) + +commit a4f5a3705b7df850cac0313853f8f95b5cfe24df +Author: Andre Klapper +AuthorDate: Fri Jan 29 22:33:06 2010 +0100 +Commit: Andre Klapper +CommitDate: Fri Jan 29 22:33:06 2010 +0100 + + Update POTFILES.in to make l10n.gnome.org happy + + po/POTFILES.in | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 6aa73f03eb14188b71b91c647442488e776a4952 +Author: Ryan Lortie +AuthorDate: Thu Jan 28 22:43:51 2010 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 28 22:43:51 2010 -0500 + + improve gitignore + + .gitignore | 3 +++ + glib/.gitignore | 4 ++++ + gmodule/.gitignore | 1 + + gobject/.gitignore | 1 + + gthread/.gitignore | 1 + + po/.gitignore | 1 + + tests/.gitignore | 2 ++ + 7 files changed, 13 insertions(+) + +commit c73d2818432956aaedb12886ea0011847b7d030e +Author: Ryan Lortie +AuthorDate: Thu Jan 28 22:36:48 2010 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 28 22:36:48 2010 -0500 + + GHash: move docs from tmpl to inline comments + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/hash_tables.sgml | 489 + ------------------------------ + glib/ghash.c | 114 +++++++ + glib/ghash.h | 17 +- + 4 files changed, 130 insertions(+), 491 deletions(-) + +commit fe89b2ea293cbcd02de2cba1834e03eee0190cdc +Author: Ryan Lortie +AuthorDate: Thu Jan 28 19:12:55 2010 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 28 19:12:55 2010 -0500 + + Since: markers for g_bit_*lock() + + glib/gbitlock.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 40eae351b1a95626f49ea042e5f5e9824c171c50 +Author: Ryan Lortie +AuthorDate: Thu Jan 28 18:41:19 2010 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 28 18:41:20 2010 -0500 + + Bug 548967 - 1 bit mutex lock: add tests + + Add a test case for the new API. + + Always check the emulated futex(2) implementation, even on systems + with + futex support. + + configure.in | 1 + + glib/gbitlock.c | 4 ++ + gthread/Makefile.am | 3 ++ + gthread/tests/.gitignore | 2 + + gthread/tests/1bit-mutex.c | 127 + +++++++++++++++++++++++++++++++++++++++++++++ + gthread/tests/Makefile.am | 15 ++++++ + 6 files changed, 152 insertions(+) + +commit 669b0f2d6b5ef3a4924a1402d569c4e38e4fb41c +Author: Ryan Lortie +AuthorDate: Thu Jan 28 11:32:07 2010 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 28 12:40:46 2010 -0500 + + Bug 548967 - 1 bit mutex lock + + Add support for a mutex lock that consumes only one bit of storage + inside of an integer on systems that support futexes. Futex is + emulated + (at a higher cost) on systems that don't have it -- but only in the + contended case. + + configure.in | 26 +++ + docs/reference/glib/glib-sections.txt | 5 + + glib/Makefile.am | 2 + + glib/gbitlock.c | 292 + ++++++++++++++++++++++++++++++++++ + glib/gbitlock.h | 43 +++++ + glib/glib.h | 1 + + glib/glib.symbols | 8 + + glib/gthread.c | 1 + + glib/gthreadprivate.h | 1 + + 9 files changed, 379 insertions(+) + +commit 595cad2531ac8bb4a4954337931134cb304088df +Author: Ryan Lortie +AuthorDate: Thu Jan 28 12:39:46 2010 -0500 +Commit: Ryan Lortie +CommitDate: Thu Jan 28 12:40:45 2010 -0500 + + glib docs: Delete and ignore empty .tmpl files + + docs/reference/glib/tmpl/.gitignore | 4 ++ + docs/reference/glib/tmpl/ghostutils.sgml | 64 ------------------- + docs/reference/glib/tmpl/gurifuncs.sgml | 104 + ------------------------------- + 3 files changed, 4 insertions(+), 168 deletions(-) + +commit b0a0ac51cb7e628f90b8293c098a6a1a26425301 +Author: Ryan Lortie +AuthorDate: Wed Jan 27 21:30:26 2010 -0500 +Commit: Ryan Lortie +CommitDate: Wed Jan 27 21:33:35 2010 -0500 + + Return NULL from g_mapped_file_get_contents() + + In the case of an empty file, return NULL instead of "". This means + that the return result of g_mapped_file_get_contents() will always be + page-aligned. + + README.in | 5 +++++ + glib/gmappedfile.c | 6 ++++-- + 2 files changed, 9 insertions(+), 2 deletions(-) + +commit 2a19bb7699c13e6d7cc5761d9285617e6b2b51f7 +Author: Matej Urbančič +AuthorDate: Wed Jan 27 13:16:13 2010 +0100 +Commit: Matej Urbančič +CommitDate: Wed Jan 27 13:16:13 2010 +0100 + + Updated Slovenian translation + + po/sl.po | 1315 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 682 insertions(+), 633 deletions(-) + +commit 082ff883b64ca39a197b7fccb520f0b5fa707e8a +Author: Behdad Esfahbod +AuthorDate: Tue Jan 26 16:12:20 2010 -0500 +Commit: Behdad Esfahbod +CommitDate: Tue Jan 26 16:12:20 2010 -0500 + + Improve type documentation + + docs/reference/glib/tmpl/types.sgml | 31 +++++++++++++++++++------------ + 1 file changed, 19 insertions(+), 12 deletions(-) + +commit 7d6af08777d4762ec17bfe8a4fa6eb83ba8d6f36 +Author: Christian Dywan +AuthorDate: Tue Jan 26 20:45:40 2010 +0100 +Commit: Christian Dywan +CommitDate: Tue Jan 26 20:46:53 2010 +0100 + + Add gtk-doc comments with Since tags to GMemoryOutputStream properties + + gio/gmemoryoutputstream.c | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + +commit b0d2f344a68abcc14558c0363ffbe5bfdcba2a66 +Author: Javier Jardón +AuthorDate: Tue Jan 26 19:15:48 2010 +0100 +Commit: Javier Jardón +CommitDate: Tue Jan 26 20:35:24 2010 +0100 + + [glib/gvarianttype] Move some documentation to header file + + Also, change G_VARIANT_TYPE(str) for G_VARIANT_TYPE(type_string) + so It's correctly documented now. + + glib/gvarianttype.c | 23 ----------------------- + glib/gvarianttype.h | 30 ++++++++++++++++++++++++++---- + 2 files changed, 26 insertions(+), 27 deletions(-) + +commit 3c66490503534eccdd9d3082684ca5c9abf89c0c +Author: Javier Jardón +AuthorDate: Tue Jan 26 19:00:41 2010 +0100 +Commit: Javier Jardón +CommitDate: Tue Jan 26 19:00:41 2010 +0100 + + [glib/gvariantype] Added missing "Since: 2.24" tag + + glib/gvarianttype.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 3658727cfa0eca8c66bc2cdff46992099caf0acd +Author: Martin Pitt +AuthorDate: Tue Jan 26 11:22:31 2010 +0100 +Commit: Martin Pitt +CommitDate: Tue Jan 26 11:22:31 2010 +0100 + + always use our own internal assertion message symbol + + Re-using glibc's __abort_msg symbol causes linking problems, since + the symbol + is declared private. Always use our own__glib_abort_msg symbol + to store + assertion messages, to avoid compatibility and linking problems. + + Also fix the test case to work with out of tree builds (such as "make + distcheck"), and re-enable it. + + https://bugzilla.gnome.org/show_bug.cgi?id=594872 + + configure.in | 14 -------------- + glib/gtestutils.c | 26 +++++++++----------------- + tests/Makefile.am | 2 +- + tests/run-assert-msg-test.sh | 17 +++++------------ + 4 files changed, 15 insertions(+), 44 deletions(-) + +commit e84a3f824855419c361ebc9f2e04768f96c6f3b9 +Author: Matthias Clasen +AuthorDate: Mon Jan 25 14:16:09 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 25 14:16:09 2010 -0500 + + Bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 079c980ecabf42ee9d0a061f9a11b078c6394225 +Author: Matthias Clasen +AuthorDate: Mon Jan 25 14:14:14 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 25 14:14:14 2010 -0500 + + 2.23.2 + + po/am.po | 42 +- + po/ar.po | 45 +- + po/as.po | 45 +- + po/ast.po | 1355 + ++++++++++++++++++++++++++--------------------------- + po/az.po | 42 +- + po/be.po | 42 +- + po/be@latin.po | 45 +- + po/bg.po | 921 ++++++++++++++++++------------------ + po/bn.po | 1256 + +++++++++++++++++++++++-------------------------- + po/bn_IN.po | 45 +- + po/bs.po | 42 +- + po/ca.po | 45 +- + po/ca@valencia.po | 45 +- + po/cs.po | 45 +- + po/cy.po | 42 +- + po/da.po | 45 +- + po/de.po | 45 +- + po/dz.po | 42 +- + po/el.po | 45 +- + po/en@shaw.po | 45 +- + po/en_CA.po | 45 +- + po/en_GB.po | 45 +- + po/eo.po | 42 +- + po/es.po | 929 ++++++++++++++++++------------------ + po/et.po | 484 ++++++++++++++++++- + po/eu.po | 996 ++++++++++++++++++++------------------- + po/fa.po | 42 +- + po/fi.po | 45 +- + po/fr.po | 45 +- + po/ga.po | 42 +- + po/gl.po | 45 +- + po/gu.po | 45 +- + po/he.po | 45 +- + po/hi.po | 45 +- + po/hr.po | 42 +- + po/hu.po | 45 +- + po/hy.po | 42 +- + po/id.po | 42 +- + po/is.po | 42 +- + po/it.po | 45 +- + po/ja.po | 45 +- + po/ka.po | 42 +- + po/kn.po | 45 +- + po/ko.po | 45 +- + po/ku.po | 42 +- + po/lt.po | 45 +- + po/lv.po | 42 +- + po/mai.po | 45 +- + po/mg.po | 42 +- + po/mk.po | 45 +- + po/ml.po | 45 +- + po/mn.po | 42 +- + po/mr.po | 45 +- + po/ms.po | 42 +- + po/nb.po | 925 ++++++++++++++++++------------------ + po/ne.po | 42 +- + po/nl.po | 45 +- + po/nn.po | 45 +- + po/oc.po | 42 +- + po/or.po | 45 +- + po/pa.po | 45 +- + po/pl.po | 45 +- + po/ps.po | 42 +- + po/pt.po | 45 +- + po/pt_BR.po | 45 +- + po/ro.po | 45 +- + po/ru.po | 45 +- + po/rw.po | 42 +- + po/si.po | 42 +- + po/sk.po | 42 +- + po/sl.po | 45 +- + po/sq.po | 47 +- + po/sr.po | 45 +- + po/sr@ije.po | 42 +- + po/sr@latin.po | 45 +- + po/sv.po | 1323 + ++++++++++++++++++++++++++------------------------- + po/ta.po | 45 +- + po/te.po | 45 +- + po/th.po | 45 +- + po/tl.po | 42 +- + po/tr.po | 45 +- + po/tt.po | 42 +- + po/uk.po | 939 +++++++++++++++++++------------------ + po/vi.po | 45 +- + po/wa.po | 42 +- + po/xh.po | 42 +- + po/yi.po | 42 +- + po/zh_CN.po | 45 +- + po/zh_HK.po | 45 +- + po/zh_TW.po | 45 +- + 90 files changed, 7008 insertions(+), 5674 deletions(-) + +commit 975aea7bce39a2909607c6c40c2c0c945169b0c6 +Author: Matthias Clasen +AuthorDate: Mon Jan 25 14:13:48 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 25 14:13:48 2010 -0500 + + Disable yet another failing test that was recently added... + + tests/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f13804f68e37c597533644e671d38229e80b917a +Author: Matthias Clasen +AuthorDate: Mon Jan 25 12:46:35 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 25 12:46:35 2010 -0500 + + Minor docs update + + docs/reference/gio/gio-sections.txt | 1 + + 1 file changed, 1 insertion(+) + +commit bc4f3904f27652b844f9786ba2b243a5ea3368b5 +Author: Matthias Clasen +AuthorDate: Mon Jan 25 12:43:10 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 25 12:43:10 2010 -0500 + + Another few failing tests disabled + + gio/tests/filter-streams.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 305c9c6de5436b35fc3929d4c4ff3f29c00d8678 +Author: Matthias Clasen +AuthorDate: Mon Jan 25 12:29:09 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 25 12:29:09 2010 -0500 + + Disable a failing test, tsk, tsk. + + glib/tests/array-test.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 81f186d1e55621622fc3a29f43522a8d5494edde +Author: Matthias Clasen +AuthorDate: Mon Jan 25 12:00:06 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 25 12:00:06 2010 -0500 + + Mention GVariant + + NEWS | 4 ++++ + 1 file changed, 4 insertions(+) + +commit e0d1124bd9bc516daaa84c94fee39decf9acc1d8 +Author: Matthias Clasen +AuthorDate: Mon Jan 25 11:57:47 2010 -0500 +Commit: Matthias Clasen +CommitDate: Mon Jan 25 11:58:38 2010 -0500 + + Updates + + NEWS | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 53 insertions(+) + +commit b4c0b10658bb77f14005a117d5abdb620fec4068 +Author: Ryan Lortie +AuthorDate: Mon Jan 25 11:31:56 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 25 11:31:56 2010 -0500 + + add testcase for GVariantType + + glib/tests/.gitignore | 1 + + glib/tests/Makefile.am | 3 + + glib/tests/gvarianttype.c | 650 + ++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 654 insertions(+) + +commit 0ccb288da103890dcf89ceda75fb8b488077a1de +Author: Ryan Lortie +AuthorDate: Mon Jan 25 11:26:27 2010 -0500 +Commit: Ryan Lortie +CommitDate: Mon Jan 25 11:27:28 2010 -0500 + + merge GVariantType + + GVariantType is the type system for GVariant + + docs/reference/glib/glib-docs.sgml | 1 + + docs/reference/glib/glib-sections.txt | 68 ++ + glib/Makefile.am | 2 + + glib/glib.h | 1 + + glib/glib.symbols | 34 + + glib/gvarianttype.c | 1495 + +++++++++++++++++++++++++++++++++ + glib/gvarianttype.h | 282 +++++++ + 7 files changed, 1883 insertions(+) + +commit 11d4e59712b5a19c9847facf6da79946c9bd24aa +Author: Benjamin Otte +AuthorDate: Wed Jan 20 21:06:30 2010 +0100 +Commit: Benjamin Otte +CommitDate: Mon Jan 25 15:30:38 2010 +0100 + + Move the boxed private type data to TypeNode + + This way we don't need to keep a custom array that we bsearch on (and + that isn't threadsafe) but can use the gtype.c machinery that is + threadsafe. And fast, too! + + https://bugzilla.gnome.org/show_bug.cgi?id=554887 + + gobject/Makefile.am | 5 +++- + gobject/gboxed.c | 72 + ++++--------------------------------------------- + gobject/gtype-private.h | 41 ++++++++++++++++++++++++++++ + gobject/gtype.c | 45 +++++++++++++++++++++++++++++++ + 4 files changed, 95 insertions(+), 68 deletions(-) + +commit ac666d2ae35b86c0d92ae70a0fb77b9df91035d1 +Author: Benjamin Otte +AuthorDate: Wed Jan 20 20:02:24 2010 +0100 +Commit: Benjamin Otte +CommitDate: Mon Jan 25 15:30:38 2010 +0100 + + Put calls to registered copy/free functions into separate functions + + This eases cleaning up these functions. + + One optimization in value_set_internal() was lost in the process. It + shouldn't cause too many issues when all is said and done. + + https://bugzilla.gnome.org/show_bug.cgi?id=554887 + + gobject/gboxed.c | 97 + ++++++++++++++++++-------------------------------------- + 1 file changed, 31 insertions(+), 66 deletions(-) + +commit 4ecf8655b315f9da3d108356c8f39394300deae3 +Author: Alexander Shopov +AuthorDate: Mon Jan 25 11:58:18 2010 +0200 +Commit: Alexander Shopov +CommitDate: Mon Jan 25 11:58:18 2010 +0200 + + Updated Bulgarian translation + + po/bg.po | 974 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 490 insertions(+), 484 deletions(-) + +commit d819c8e486c9aaa2602d93fdd5cd1743d5a46624 +Author: Matthias Clasen +AuthorDate: Sun Jan 24 20:50:51 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sun Jan 24 20:50:51 2010 -0500 + + Typo fixes + + gio/gsimpleasyncresult.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit cd59feff775e3cf9b15190dd6d75c4e6b98336e8 +Author: Jamil Ahmed +AuthorDate: Sun Jan 24 22:54:12 2010 +0600 +Commit: Jamil Ahmed +CommitDate: Sun Jan 24 22:54:12 2010 +0600 + + Updated Bengali translation + + po/bn.po | 1295 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 691 insertions(+), 604 deletions(-) + +commit e71dcb204e3be3c0129c0782f3b5420be47fb2ef +Author: Ryan Lortie +AuthorDate: Sat Jan 23 01:07:46 2010 -0500 +Commit: Ryan Lortie +CommitDate: Sat Jan 23 01:07:46 2010 -0500 + + gio: .gitignore gio-querymodules + + gio/.gitignore | 1 + + 1 file changed, 1 insertion(+) + +commit c8fc3112f910b544ace0e1cb14d47555b38be6d8 +Author: Ryan Lortie +AuthorDate: Fri Jan 22 20:18:58 2010 -0500 +Commit: Ryan Lortie +CommitDate: Fri Jan 22 20:18:58 2010 -0500 + + Bug 448888 - don't init g_slice for always-malloc + + glib/gslice.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +commit 7693b0af445645f09e55ed7cebe0051c3d1fdd8d +Author: Alberto Garcia +AuthorDate: Wed Jan 20 18:53:08 2010 +0100 +Commit: Javier Jardón +CommitDate: Wed Jan 20 18:58:32 2010 +0100 + + [tests] Remove C++ style comments + + It makes the IBM XL C Compiler (the 'native' non-free compiler + on the AIX 5.3 and 6.1 platform) stop compiling with syntax error. + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=581300 + + Signed-off-by: Javier Jardón + + gobject/tests/threadtests.c | 8 ++++---- + tests/slice-concurrent.c | 2 +- + tests/slice-test.c | 2 +- + 3 files changed, 6 insertions(+), 6 deletions(-) + +commit 6c3551fedb7bfde716fa00cfcbba00ca987c2a79 +Author: Dan Winship +AuthorDate: Mon Jan 18 09:46:19 2010 -0500 +Commit: Dan Winship +CommitDate: Mon Jan 18 12:53:11 2010 -0500 + + [configure] More -lresolv-checking-fixing + + https://bugzilla.gnome.org/show_bug.cgi?id=586150 + + configure.in | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 914120b9701650ccf7bede1907b69b521ca43236 +Author: Benjamin Otte +AuthorDate: Mon Jan 18 14:03:16 2010 +0100 +Commit: Benjamin Otte +CommitDate: Mon Jan 18 14:46:55 2010 +0100 + + Ensure values are memset to 0 when calling G_VALUE_COLLECT_INIT() + + The reason we need to enforce this is that the GTypeValueTable + documentation explicitly states that memory is memset to 0 when the + value_init function is called. + + https://bugzilla.gnome.org/show_bug.cgi?id=603590 + + gobject/gobject.c | 2 +- + gobject/gsignal.c | 4 ++-- + gobject/gvaluecollector.h | 3 +-- + 3 files changed, 4 insertions(+), 5 deletions(-) + +commit 956b3b507d03b6d10f8bef34b3775a409c5ba9ee +Author: Dan Winship +AuthorDate: Wed Jan 13 11:24:28 2010 -0500 +Commit: Dan Winship +CommitDate: Wed Jan 13 12:02:39 2010 -0500 + + [configure] Fix res_query check for OS X + + https://bugzilla.gnome.org/show_bug.cgi?id=586150 + + configure.in | 36 +++++++++++++++++++----------------- + gio-2.0.pc.in | 2 +- + 2 files changed, 20 insertions(+), 18 deletions(-) + +commit a6ab4b78725f6376c04f7fb2eb6cbf9a56387253 +Author: Javier Jardón +AuthorDate: Tue Nov 17 21:15:15 2009 +0100 +Commit: Dan Winship +CommitDate: Wed Jan 13 12:02:39 2010 -0500 + + Upgrade to version 0.8 of libasyncns + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=602240 + + gio/libasyncns/asyncns.c | 94 + ++++++++++++++++++++++++++++------------------ + gio/libasyncns/g-asyncns.h | 16 ++------ + 2 files changed, 61 insertions(+), 49 deletions(-) + +commit fe23567c436612e7a167c1681d6cb69392769fb7 +Author: Inaki Larranaga Murgoitio +AuthorDate: Wed Jan 13 17:29:39 2010 +0100 +Commit: dooteo +CommitDate: Wed Jan 13 17:29:39 2010 +0100 + + Updated Basque language + + po/eu.po | 1044 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 512 insertions(+), 532 deletions(-) + +commit b577c207a5279667801c44d8f1d9469ca431478b +Author: Kjartan Maraas +AuthorDate: Wed Jan 13 16:20:56 2010 +0100 +Commit: Kjartan Maraas +CommitDate: Wed Jan 13 16:20:56 2010 +0100 + + Updated Norwegian bokmål translation + + po/nb.po | 937 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 477 insertions(+), 460 deletions(-) + +commit 7448eb71c3ac85a08c8f0fceaf9747e6298ae5c9 +Author: Sven Herzberg +AuthorDate: Wed Jan 13 14:47:58 2010 +0100 +Commit: Sven Herzberg +CommitDate: Wed Jan 13 15:01:00 2010 +0100 + + properly abort instead of looping infinitely + + Fixes: Bug 568760 - nautilus freezes due to a bug in garray.c:322 + + * glib/garray.c: increase the size of potential return values by + using an unsigned result; properly check if we still handle + valid size + proposals, return the original request if there's no usable + size left + * tests/array-test.c: reproduce the error condition of the bug report + + glib/garray.c | 18 ++++++++++-------- + glib/tests/array-test.c | 24 ++++++++++++++++++++++++ + 2 files changed, 34 insertions(+), 8 deletions(-) + +commit 820181a5de46da070d7792128fe148b51fc79a20 +Author: Alexander Larsson +AuthorDate: Wed Jan 13 10:25:52 2010 +0100 +Commit: Alexander Larsson +CommitDate: Wed Jan 13 10:25:52 2010 +0100 + + Fix docs in previous commit + + gobject/gvaluecollector.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3c5e1fd903ce18efe51672074e01d1637c4bc0b2 +Author: Alexander Larsson +AuthorDate: Wed Jan 13 10:24:09 2010 +0100 +Commit: Alexander Larsson +CommitDate: Wed Jan 13 10:24:09 2010 +0100 + + Remove additional thread support in performance test + + We're always enabling threads now so this is not needed. + + tests/gobject/performance.c | 6 ------ + tests/gobject/run-performance.sh | 3 +-- + 2 files changed, 1 insertion(+), 8 deletions(-) + +commit 40bf3aa5d2fd9d2aa6244ce8023ad1eed3bf0383 +Author: Edward Hervey +AuthorDate: Wed Dec 2 11:50:02 2009 +0100 +Commit: Alexander Larsson +CommitDate: Wed Jan 13 10:16:49 2010 +0100 + + gobject: Use new G_VALUE_COLLECT_INIT variant + + Makes g_object_new_valist 20% to 30% faster (against 2321e5a). + + Profiled against the pan newsreader which uses a variant of simple + and complex object creation. + + https://bugzilla.gnome.org/show_bug.cgi?id=603590 + + gobject/gobject.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +commit 0f25115ffc887110993f6947f9907a85374933d3 +Author: Edward Hervey +AuthorDate: Wed Dec 2 11:49:49 2009 +0100 +Commit: Alexander Larsson +CommitDate: Wed Jan 13 10:16:48 2010 +0100 + + gsignal: Use new G_VALUE_COLLECT_INIT variant + + Makes g_signal_emit_valist from 15% to 20% faster. + + Results reported from profiling the pan newsreader which uses + a variant + of simple and complex signal emissions (i.e no args or various args) + + https://bugzilla.gnome.org/show_bug.cgi?id=603590 + + gobject/gsignal.c | 20 ++++++++------------ + 1 file changed, 8 insertions(+), 12 deletions(-) + +commit 546fc0ca331c8d1b3393fe218a697b6a1a1c1072 +Author: Edward Hervey +AuthorDate: Wed Dec 2 11:48:18 2009 +0100 +Commit: Alexander Larsson +CommitDate: Wed Jan 13 10:16:46 2010 +0100 + + gvaluecollector: Add variant of G_VALUE_COLLECT for most used cases. + + Most callers of G_VALUE_COLLECT previously had to initialize the + GValue + and then G_VALUE_COLLECT would still go through a cleanup phase. + + The new variant allows passing a unitialized GValue along with a GType + and speedup the initialization/collection process. + + https://bugzilla.gnome.org/show_bug.cgi?id=603590 + + gobject/gvaluecollector.h | 44 + ++++++++++++++++++++++++++++++++++++-------- + 1 file changed, 36 insertions(+), 8 deletions(-) + +commit 3bb404f13329dbd6c67f777e5a6d9228716ab440 +Author: Alexander Larsson +AuthorDate: Tue Jan 12 21:55:15 2010 +0100 +Commit: Alexander Larsson +CommitDate: Tue Jan 12 21:55:15 2010 +0100 + + Mention thread changes in NEWS + + README.in | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit 94b8613b5ffefadb5c82424bd1f3083ff11fa811 +Author: Alexander Larsson +AuthorDate: Tue Jan 12 21:28:23 2010 +0100 +Commit: Alexander Larsson +CommitDate: Tue Jan 12 21:37:50 2010 +0100 + + Use unconditional thread calls in gio and gobject + + If threads are available we always enable threads in gobject, which + means all gio/gobject code can enable the unconditional thread calls. + + This is a minor optimization since we avoid a bunch of unnecessary + is-threads-enabled checks. + + https://bugzilla.gnome.org/show_bug.cgi?id=606775 + + configure.in | 1 + + gio/Makefile.am | 5 +++++ + gobject/Makefile.am | 5 +++++ + 3 files changed, 11 insertions(+) + +commit de5c708e0b3d257388d3a5d09c80806d27069c88 +Author: Alexander Larsson +AuthorDate: Tue Jan 12 21:26:52 2010 +0100 +Commit: Alexander Larsson +CommitDate: Tue Jan 12 21:37:41 2010 +0100 + + Make thread calls unconditional if G_THREADS_MANDATORY is set + + Since gobject now initialized threads unconditionally if threads are + available it makes no sense to have each thread operation + conditionally check if threads are enables, so allow this to be + avoided. + + https://bugzilla.gnome.org/show_bug.cgi?id=606775 + + glib/gthread.h | 4 ++++ + 1 file changed, 4 insertions(+) + +commit fa2bced1f30f93443ef43ce8b5b1e437cd07168c +Author: Alexander Larsson +AuthorDate: Tue Jan 12 21:22:45 2010 +0100 +Commit: Alexander Larsson +CommitDate: Tue Jan 12 21:37:29 2010 +0100 + + Enable threads in g_type_init() + + This means threads will be supported for all gobject + libraries/applications + and initialized early enough to not cause any problems. + + This solves the problem of libraries needing threadsafety. Previosly + they just called g_threads_init() anyway, which often works but + sometimes + breaks in unexpected ways. + + See this thread for more details: + http://mail.gnome.org/archives/gtk-devel-list/2009-November/msg00208.html + + https://bugzilla.gnome.org/show_bug.cgi?id=606775 + + docs/reference/glib/tmpl/threads.sgml | 8 ++++++++ + gobject-2.0-uninstalled.pc.in | 2 +- + gobject-2.0.pc.in | 2 +- + gobject/Makefile.am | 2 +- + gobject/gtype.c | 9 ++++++++- + 5 files changed, 19 insertions(+), 4 deletions(-) + +commit 0df3ca8f9bbb624b219ecdb25d3fe8aa4a51d953 +Author: Alexander Larsson +AuthorDate: Tue Jan 12 21:16:59 2010 +0100 +Commit: Alexander Larsson +CommitDate: Tue Jan 12 21:37:20 2010 +0100 + + Relax g_thread_init() requirements + + We now allow g_thread_init(NULL) to be called after other glib calls + (with + some minor limitations). This is mainly a documentation change as this + really was already possible. + + We also allow g_thread_init() to be called multiple times. Only the + first call actually initializes the threading system, further calls + are ignored (but print a warning if the argument is not NULL). + + https://bugzilla.gnome.org/show_bug.cgi?id=606775 + + docs/reference/glib/tmpl/threads.sgml | 55 + ++++++++++++----------------------- + gthread/gthread-impl.c | 7 ++++- + 2 files changed, 25 insertions(+), 37 deletions(-) + +commit 74ad124cfba3278c385d177a527f19574fda9670 +Author: Alexander Larsson +AuthorDate: Tue Jan 12 13:09:10 2010 +0100 +Commit: Alexander Larsson +CommitDate: Tue Jan 12 16:34:23 2010 +0100 + + Implement lazy loading of fam plugin + + gio/fam/Makefile.am | 15 ++++++++++++++- + gio/fam/fam-module.c | 11 +++++++++++ + 2 files changed, 25 insertions(+), 1 deletion(-) + +commit 57b771235e8e548ba3bb68a49ae4f016072ee89f +Author: Alexander Larsson +AuthorDate: Tue Jan 12 13:11:22 2010 +0100 +Commit: Alexander Larsson +CommitDate: Tue Jan 12 16:34:18 2010 +0100 + + Add gio-querymodule program + + This can be used to update the giomodule.cache file in directories + with + giomodules in order to support lazy module loading. + + gio/Makefile.am | 10 ++++ + gio/gio-querymodules.c | 133 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 143 insertions(+) + +commit 682b3da99b1766b3dda0ee5978040e11108e063c +Author: Alexander Larsson +AuthorDate: Tue Jan 12 11:57:17 2010 +0100 +Commit: Alexander Larsson +CommitDate: Tue Jan 12 16:31:29 2010 +0100 + + Use the new lazy loading of modules for gio modules + + gio/giomodule.c | 30 +++++++++++------------------- + 1 file changed, 11 insertions(+), 19 deletions(-) + +commit 488bede191081f035f24f7c3e55a86bc8ee2d7ae +Author: Alexander Larsson +AuthorDate: Tue Jan 12 11:36:12 2010 +0100 +Commit: Alexander Larsson +CommitDate: Tue Jan 12 16:31:29 2010 +0100 + + Add support for lazy loading of giomodules + + Adds an optional query method to giomodules which should return all + possible extension points the module may implement. + + Then we add a new call g_io_modules_scan_all_in_directory() similar to + g_io_modules_load_all_in_directory() that doesn't return all loaded + modules, thus allowing lazy loading. + + In g_io_modules_scan_all_in_directory we look for an optional + giomodule.cache file and use the information in that to avoid + loading modules until they are needed for an extension point. + + gio/gio.symbols | 1 + + gio/giomodule.c | 211 + ++++++++++++++++++++++++++++++++++++++++++++++++++------ + gio/giomodule.h | 31 +++++++++ + 3 files changed, 222 insertions(+), 21 deletions(-) + +commit 6aa1aef5562b2db9777ad17183427dbbb88599b2 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Jan 12 12:54:49 2010 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Jan 12 12:56:54 2010 +0100 + + Flush gcharsetconverter when needed. + + This patch fixes bug #605686. + + gio/gcharsetconverter.c | 53 + +++++++++++++++++++++++++++++-------------------- + 1 file changed, 31 insertions(+), 22 deletions(-) + +commit f4ccd96ea1a137eb0c533f177ff87290a84ee0d5 +Author: Kamal Mostafa +AuthorDate: Fri Jan 1 20:36:28 2010 -0800 +Commit: Benjamin Otte +CommitDate: Mon Jan 11 15:34:41 2010 +0100 + + g_object_new(): skip varargs for simple calls + + g_object_new() avoids useless varargs processing for simple calls + with no + properties. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=605883 + + gobject/gobject.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 8c293b0ae0f3d7a404b3249872a1591313467b4f +Author: Daniel Nylander +AuthorDate: Sat Jan 9 16:43:35 2010 +0100 +Commit: Daniel Nylander +CommitDate: Sat Jan 9 16:43:35 2010 +0100 + + Updated Swedish translation + + po/sv.po | 1354 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 691 insertions(+), 663 deletions(-) + +commit e61fed47b39265056dc2f9f5c3c5a6fc14bc0bf2 +Author: Jorge González +AuthorDate: Thu Jan 7 20:26:48 2010 +0100 +Commit: Jorge González +CommitDate: Thu Jan 7 20:26:48 2010 +0100 + + Updated Spanish translation + + po/es.po | 950 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 483 insertions(+), 467 deletions(-) + +commit 37716bd00a7911de545ebca3dc7a248503eaf46e +Author: Hiroyuki Ikezoe +AuthorDate: Thu Jan 7 19:33:39 2010 +0900 +Commit: Hiroyuki Ikezoe +CommitDate: Thu Jan 7 19:33:39 2010 +0900 + + Use GCC atomic builtin operations. + + Fix for bug #531902. + + configure.in | 211 + +++++++++++++++++++++++++++++------------------------ + glib/Makefile.am | 8 +- + glib/gatomic-gcc.c | 92 +++++++++++++++++++++++ + 3 files changed, 214 insertions(+), 97 deletions(-) + +commit 7211f7f8eb6845b010f45dd9084f67f80af40412 +Author: Stefan Kost +AuthorDate: Thu Jan 7 10:47:20 2010 +0200 +Commit: Stefan Kost +CommitDate: Thu Jan 7 11:34:01 2010 +0200 + + docs: switch to xi:inbclude for the content to save some more seconds + + docs/reference/gobject/gobject-docs.sgml | 77 ++++------- + docs/reference/gobject/tut_gobject.xml | 3 + + docs/reference/gobject/tut_gsignal.xml | 3 + + docs/reference/gobject/tut_gtype.xml | 5 +- + docs/reference/gobject/tut_howto.xml | 21 +-- + docs/reference/gobject/tut_intro.xml | 3 + + docs/reference/gobject/tut_tools.xml | 221 + ++++++++++++++++--------------- + 7 files changed, 163 insertions(+), 170 deletions(-) + +commit 00db5238d9cdd1034f39749cac2d7b18df4b231c +Author: Stefan Kost +AuthorDate: Thu Jan 7 11:31:24 2010 +0200 +Commit: Stefan Kost +CommitDate: Thu Jan 7 11:34:00 2010 +0200 + + docs: switch to xi:inbclude for the content to save some more seconds + + docs/reference/glib/building.sgml | 4 + + docs/reference/glib/changes.sgml | 4 + + docs/reference/glib/compiling.sgml | 4 + + docs/reference/glib/cross.sgml | 4 + + docs/reference/glib/glib-docs.sgml | 231 + +++++++++++----------------------- + docs/reference/glib/regex-syntax.sgml | 4 + + docs/reference/glib/resources.sgml | 4 + + docs/reference/glib/running.sgml | 4 + + 8 files changed, 103 insertions(+), 156 deletions(-) + +commit d01e2527ce59b5daac2b63a6ac0074cbec8bebe5 +Author: Stefan Kost +AuthorDate: Thu Jan 7 10:22:14 2010 +0200 +Commit: Stefan Kost +CommitDate: Thu Jan 7 11:34:00 2010 +0200 + + docs: use xi:include to use the generated indexes if available. + + This works transparantly for people with new enough gtk-doc + (>=1.11) and + significantly improves the build time. + + docs/reference/gio/gio-docs.xml | 19 ++++++---- + docs/reference/glib/glib-docs.sgml | 62 + +++++++++++++++++++------------- + docs/reference/gobject/gobject-docs.sgml | 54 + +++++++++++++++++----------- + 3 files changed, 84 insertions(+), 51 deletions(-) + +commit 4c55b45162a3a76ca6c1d1c450ea667eeb7bae44 +Author: Haakon Sporsheim +AuthorDate: Thu Jan 7 10:12:13 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Thu Jan 7 10:14:24 2010 +0200 + + Don't do pointer arithmetics on void* + + For instance MSVC doesn't like that. + + Signed-off-by: Tor Lillqvist + + gobject/gatomicarray.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 759fbac7b765e3ef3df4e64e534c99d45526bdd3 +Author: Matthias Clasen +AuthorDate: Wed Jan 6 17:37:11 2010 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 6 17:37:11 2010 -0500 + + Add properties to GMemoryOutputStream + + This helps bindings. Patch by Krzysztof Kosiński. See bug 605733. + + gio/gmemoryoutputstream.c | 308 + ++++++++++++++++++++++++++++----------- + gio/gmemoryoutputstream.h | 6 +- + gio/tests/memory-output-stream.c | 37 +++++ + 3 files changed, 260 insertions(+), 91 deletions(-) + +commit f2d8f6287d6e3fcb9e58402c2051d557f7e41632 +Author: Matthias Clasen +AuthorDate: Wed Jan 6 13:23:48 2010 -0500 +Commit: Matthias Clasen +CommitDate: Wed Jan 6 13:27:19 2010 -0500 + + Fix the filename roundtrip check + + The check was always failing because the code was comparing + the wrong strings. Reported in bug 605977. + + gio/glocalfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit baf20e09842a97c2d7925dff5ff9c6d35e36b27d +Author: Ryan Lortie +AuthorDate: Tue Jan 5 18:49:23 2010 -0500 +Commit: Ryan Lortie +CommitDate: Tue Jan 5 18:52:33 2010 -0500 + + GUnixFDMessage: fix a small typo in an extra check + + In the deserialise function, GUnixFDMessage was comparing 'level' to + both SOL_SOCKET and SCM_RIGHTS. It is correct to compare 'type' to + SCM_RIGHTS. The code passed tests only because: + + 1) it's a "should always be OK" double-check + + 2) SOL_SOCKET and SCM_RIGHTS, by chance, both have the value '1' on + Linux systems. + + gio/gunixfdmessage.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b00c6d7fb5798b4e528554e1221a553ab95506ed +Author: Matthias Clasen +AuthorDate: Tue Jan 5 18:18:55 2010 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 5 18:18:55 2010 -0500 + + Fix a memleak + + An early exit in expand_application_parameters forgot to free + a GString. Reported by Steve Grubb. + + gio/gdesktopappinfo.c | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +commit 6cee86a3efc98333282218f8eb1e0149a7cd703d +Author: Matthias Clasen +AuthorDate: Tue Jan 5 18:16:37 2010 -0500 +Commit: Matthias Clasen +CommitDate: Tue Jan 5 18:16:37 2010 -0500 + + Fix an off-by-one error + + Reported by Steve Grubb. + + gio/gcontenttype.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 95889d19275fd0f8f47f6c7f0e5b37861aa28497 +Author: Maxim V. Dziumanenko +AuthorDate: Tue Jan 5 16:53:01 2010 +0200 +Commit: Maxim V. Dziumanenko +CommitDate: Tue Jan 5 16:53:01 2010 +0200 + + Update Ukrainian translation + + po/uk.po | 948 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 474 insertions(+), 474 deletions(-) + +commit e8ccfd1bb2e17037d54440290b718bd19567a2e4 +Author: Haakon Sporsheim +AuthorDate: Tue Jan 5 11:28:43 2010 +0200 +Commit: Tor Lillqvist +CommitDate: Tue Jan 5 11:32:59 2010 +0200 + + Avoid compilation warning from MSVC + + Signed-off-by: Tor Lillqvist + + glib/gutils.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d13c552dafe93e819e9c17bb68f46c33c9e97b10 +Author: Piotr Eljasiak +AuthorDate: Tue Jan 5 00:48:02 2010 +0100 +Commit: Piotr Eljasiak +CommitDate: Tue Jan 5 00:48:02 2010 +0100 + + Fix a typo in the docs + + glib/gmarkup.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c4600066a60e4ade006eeba196e560232f26116a +Author: Xandru Armesto Fernandez +AuthorDate: Mon Jan 4 22:10:47 2010 +0100 +Commit: Xandru Armesto Fernandez +CommitDate: Mon Jan 4 22:10:47 2010 +0100 + + Added asturian language + + po/LINGUAS | 1 + + 1 file changed, 1 insertion(+) + +commit 4655e85081f1fe62a0dd01342dab2109d2979b16 +Author: Xandru Armesto Fernandez +AuthorDate: Mon Jan 4 22:10:29 2010 +0100 +Commit: Xandru Armesto Fernandez +CommitDate: Mon Jan 4 22:10:29 2010 +0100 + + Updated asturian translations + + po/ast.po | 2084 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 2084 insertions(+) + +commit 3f5fb1ee9c2e3c09bc21913f02c1797550acdcea +Author: Javier Jardón +AuthorDate: Sun Jan 3 23:34:26 2010 +0100 +Commit: Javier Jardón +CommitDate: Sun Jan 3 23:36:44 2010 +0100 + + [docs] Fix @title usage in "Enumeration and flags types" section + + gobject/genums.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +commit a91514ba1946ee048d9b2ddb049bc7dff5998940 +Author: Matthias Clasen +AuthorDate: Sat Jan 2 19:50:55 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sat Jan 2 19:53:02 2010 -0500 + + Document that various functions ref GSimpleAsyncResult + + Patch by Will Thompson, see bug 602417. + + gio/gsimpleasyncresult.c | 220 + ++++++++++++++++++++++++----------------------- + 1 file changed, 113 insertions(+), 107 deletions(-) + +commit f58fa6934315bc83d57a6d63ae1f9ca08dd9731b +Author: Matthias Clasen +AuthorDate: Sat Jan 2 19:44:26 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sat Jan 2 19:53:02 2010 -0500 + + Document that _finish() must be called at most once. + + The patch was provided by Will Thompson in bug 602417. + + gio/gasyncresult.c | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit 74af99b860db66d6e32ed12c54016246e60be99a +Author: Matthias Clasen +AuthorDate: Sat Jan 2 19:35:08 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sat Jan 2 19:53:02 2010 -0500 + + Fix a typo + + ...and some whitespace fixes. Pointed out by Will Thompson in + bug 602417. + + gio/gasyncresult.c | 69 + +++++++++++++++++++++++++++--------------------------- + 1 file changed, 35 insertions(+), 34 deletions(-) + +commit 0542e6dbf9b817a3ad4f0dbf4b85177536e11277 +Author: Pablo Castellano +AuthorDate: Sun Jan 3 01:23:53 2010 +0100 +Commit: Pablo Castellano +CommitDate: Sun Jan 3 01:24:44 2010 +0100 + + Updated .gitignore files + + glib/.gitignore | 1 + + gobject/.gitignore | 1 + + 2 files changed, 2 insertions(+) + +commit ab799115defeab7771f3cb5cd0c88eba0d73558a +Author: Matthias Clasen +AuthorDate: Sat Jan 2 19:17:37 2010 -0500 +Commit: Matthias Clasen +CommitDate: Sat Jan 2 19:17:37 2010 -0500 + + Don't return anything from a void function + + Sun C doesn't like it. Reported in bug 604824. + + gio/gconverter.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 05af612943b4f34b63e4bfcb7dc7bbab6725417b +Author: Ivar Smolin +AuthorDate: Sat Jan 2 22:42:01 2010 +0200 +Commit: Priit Laes +CommitDate: Sat Jan 2 22:42:01 2010 +0200 + + Updating Estonian translation + + po/et.po | 490 + ++------------------------------------------------------------- + 1 file changed, 15 insertions(+), 475 deletions(-) + +commit 32f79f55ef287bf505ff434f13d79d89f3630bb2 +Author: Paolo Borelli +AuthorDate: Thu Dec 31 12:42:41 2009 +0100 +Commit: Paolo Borelli +CommitDate: Thu Dec 31 12:42:41 2009 +0100 + + Bug 604457 - gutf8inputstream.c: increasing unknown size pointer + + gio/gutf8inputstream.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 73ca6f70199353c22bf2d6aa99d5cd1eaea76702 +Author: Javier Jardón +AuthorDate: Mon Dec 28 02:04:01 2009 +0100 +Commit: Javier Jardón +CommitDate: Mon Dec 28 02:04:01 2009 +0100 + + [docs] Fix 'Deprecated' tag on some win32 functions + + Fix g_win32_get_package_installation_directory() and + g_win32_get_package_installation_subdirectory_utf8() + + glib/gwin32.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 85e00d3a9433a5f83f9897c832fa00e4e0540e2c +Author: Javier Jardón +AuthorDate: Thu Dec 24 05:05:21 2009 +0100 +Commit: Javier Jardón +CommitDate: Thu Dec 24 05:05:21 2009 +0100 + + [docs] Fix 'Deprecated' tag in g_date_set_time() + + glib/gdate.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit da66897950431870390f8dc3f798e24f23ffb8c8 +Author: Martin Pitt +AuthorDate: Tue Dec 22 11:09:20 2009 +0100 +Commit: Chris Coulson +CommitDate: Wed Dec 23 15:51:11 2009 +0000 + + Support storing assertion messages into core dump + + Crash interception/debugging systems like Apport or ABRT capture + core dumps for + later crash analysis. However, if a program exits with an assertion + failure, + the core dump is not useful since the assertion message is only + printed to + stderr. + + glibc recently got a patch which stores the message of assert() + into the + __abort_msg global variable. + (http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=48dcd0ba) + That works fine for programs which actually use the standard C + assert() macro. + + This patch adds the same functionality for glib's assertion tests. If + we are + building against a glibc which already has __abort_msg (2.11 and + later, or + backported above git commit), use that, otherwise put it into our + own field + __glib_assert_msg. + + Usage: + + $ cat test.c + #include + + int main() { + g_assert(1 < 0); + return 0; + } + + $ ./test + **ERROR:test.c:5:main: assertion failed: (1 < 0) + Aborted (Core dumped) + + $ gdb --batch --ex 'print (char*) __abort_msg' ./test core + [...] + $1 = 0x93bf028 "ERROR:test.c:5:main: assertion failed: (1 < 0)" + + https://bugzilla.gnome.org/show_bug.cgi?id=594872 + + configure.in | 14 +++++++++++++ + glib/gtestutils.c | 23 +++++++++++++++++++++ + tests/.gitignore | 1 + + tests/Makefile.am | 6 ++++-- + tests/assert-msg-test.c | 8 ++++++++ + tests/run-assert-msg-test.sh | 48 + ++++++++++++++++++++++++++++++++++++++++++++ + 6 files changed, 98 insertions(+), 2 deletions(-) + +commit e9ab9eaff66b62c9653b90cca2eaf1d142f716a1 +Author: Theppitak Karoonboonyanan +AuthorDate: Tue Dec 22 23:39:21 2009 +0700 +Commit: Theppitak Karoonboonyanan +CommitDate: Tue Dec 22 23:39:21 2009 +0700 + + Updated Thai translation. + + po/th.po | 35 +++++++++++++++-------------------- + 1 file changed, 15 insertions(+), 20 deletions(-) + +commit 8202728f067c5d418f4fcc5172a990aa1c68312b +Author: Tor Lillqvist +AuthorDate: Tue Dec 22 00:46:12 2009 +0200 +Commit: Tor Lillqvist +CommitDate: Tue Dec 22 00:48:34 2009 +0200 + + Install gio-unix-2.0.pc only on Unix + + The gio-unix-2.0 headers are installed only on Unix anyway. + + Makefile.am | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit dba6cef3c9c29314c20a122647c23b12329025dc +Author: Javier Jardón +AuthorDate: Mon Dec 21 23:04:43 2009 +0100 +Commit: Javier Jardón +CommitDate: Mon Dec 21 23:07:13 2009 +0100 + + [docs] Fix G_DEFINE_INTERFACE "Since" tag + + This symbol is available since Glib 2.24, not 2.20. + + gobject/gtype.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit e7488ca85721b05181f699f4e8b12098077ce210 +Author: Behdad Esfahbod +AuthorDate: Fri Jun 5 23:28:17 2009 -0400 +Commit: Behdad Esfahbod +CommitDate: Mon Dec 21 17:12:17 2009 +0100 + + [gobject] Grow gvalue transform array exponentially + + Bug 589176 - Grow gvalue transform array exponentially + + Reduces about 180 realloc calls during g_type_init(). + + gobject/gvalue.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 88261680f518c3c701154504011f778866d6dc2a +Author: Matthias Clasen +AuthorDate: Mon Dec 21 10:56:03 2009 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 21 10:56:03 2009 -0500 + + Bump version + + configure.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit d7bdc48c2618cbc6b99c161592fd59c92d28d1c8 +Author: Matthias Clasen +AuthorDate: Mon Dec 21 10:54:11 2009 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 21 10:54:11 2009 -0500 + + 2.23.1 + + po/am.po | 80 ++--- + po/ar.po | 80 ++--- + po/as.po | 80 ++--- + po/az.po | 80 ++--- + po/be.po | 80 ++--- + po/be@latin.po | 80 ++--- + po/bg.po | 80 ++--- + po/bn.po | 80 ++--- + po/bn_IN.po | 80 ++--- + po/bs.po | 80 ++--- + po/ca.po | 80 ++--- + po/ca@valencia.po | 80 ++--- + po/cs.po | 80 ++--- + po/cy.po | 917 + ++++++++++++++++++++++++++--------------------------- + po/da.po | 80 ++--- + po/de.po | 80 ++--- + po/dz.po | 80 ++--- + po/el.po | 80 ++--- + po/en@shaw.po | 80 ++--- + po/en_CA.po | 80 ++--- + po/en_GB.po | 80 ++--- + po/eo.po | 80 ++--- + po/es.po | 80 ++--- + po/et.po | 465 ++++++++++++++++++++++++++- + po/eu.po | 80 ++--- + po/fa.po | 80 ++--- + po/fi.po | 80 ++--- + po/fr.po | 80 ++--- + po/ga.po | 80 ++--- + po/gl.po | 80 ++--- + po/gu.po | 80 ++--- + po/he.po | 930 + +++++++++++++++++++++++++++--------------------------- + po/hi.po | 80 ++--- + po/hr.po | 80 ++--- + po/hu.po | 80 ++--- + po/hy.po | 80 ++--- + po/id.po | 80 ++--- + po/is.po | 80 ++--- + po/it.po | 80 ++--- + po/ja.po | 80 ++--- + po/ka.po | 80 ++--- + po/kn.po | 80 ++--- + po/ko.po | 80 ++--- + po/ku.po | 80 ++--- + po/lt.po | 80 ++--- + po/lv.po | 80 ++--- + po/mai.po | 80 ++--- + po/mg.po | 80 ++--- + po/mk.po | 80 ++--- + po/ml.po | 80 ++--- + po/mn.po | 80 ++--- + po/mr.po | 80 ++--- + po/ms.po | 80 ++--- + po/nb.po | 917 + ++++++++++++++++++++++++++--------------------------- + po/ne.po | 80 ++--- + po/nl.po | 80 ++--- + po/nn.po | 80 ++--- + po/oc.po | 80 ++--- + po/or.po | 80 ++--- + po/pa.po | 80 ++--- + po/pl.po | 80 ++--- + po/ps.po | 80 ++--- + po/pt.po | 80 ++--- + po/pt_BR.po | 80 ++--- + po/ro.po | 80 ++--- + po/ru.po | 80 ++--- + po/rw.po | 80 ++--- + po/si.po | 80 ++--- + po/sk.po | 80 ++--- + po/sl.po | 80 ++--- + po/sq.po | 80 ++--- + po/sr.po | 80 ++--- + po/sr@ije.po | 80 ++--- + po/sr@latin.po | 80 ++--- + po/sv.po | 80 ++--- + po/ta.po | 80 ++--- + po/te.po | 80 ++--- + po/th.po | 80 ++--- + po/tl.po | 80 ++--- + po/tr.po | 80 ++--- + po/tt.po | 80 ++--- + po/uk.po | 80 ++--- + po/vi.po | 127 ++++---- + po/wa.po | 80 ++--- + po/xh.po | 80 ++--- + po/yi.po | 80 ++--- + po/zh_CN.po | 80 ++--- + po/zh_HK.po | 80 ++--- + po/zh_TW.po | 80 ++--- + 89 files changed, 5260 insertions(+), 4816 deletions(-) + +commit ad1580e516fd481eaa1c6bb9134c1c11a517e824 +Author: Matthias Clasen +AuthorDate: Mon Dec 21 10:02:07 2009 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 21 10:06:59 2009 -0500 + + Update release notes + + README.in | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 7af2609a44f26b8a6e65601fc2fa6f7453ff73c5 +Author: Matthias Clasen +AuthorDate: Mon Dec 21 09:59:24 2009 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 21 10:06:59 2009 -0500 + + Updates + + NEWS | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +commit 52405a6b5dcaa1e8e6268192760ee6e11939a3b5 +Author: Iestyn Pryce +AuthorDate: Mon Dec 21 14:57:15 2009 +0000 +Commit: Iestyn Pryce +CommitDate: Mon Dec 21 14:57:15 2009 +0000 + + Updated Welsh translation + + po/cy.po | 99 + ++++++++++++++++++++++++++++++---------------------------------- + 1 file changed, 47 insertions(+), 52 deletions(-) + +commit 71d508776efc69e2ee97b424bbeb25d3ced38ac8 +Author: Matthias Clasen +AuthorDate: Mon Dec 21 09:21:54 2009 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 21 09:21:54 2009 -0500 + + Remove comment as well + + glib/tests/option-context.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit 7db8b92b979b2f95268d42eecf9dc7a361e6f5d1 +Author: Matthias Clasen +AuthorDate: Mon Dec 21 09:11:23 2009 -0500 +Commit: Matthias Clasen +CommitDate: Mon Dec 21 09:16:32 2009 -0500 + + Revert the g_set_prgname change + + This change breaks our API and causes warnings from essentially + all applications. + See bug 563627. + + glib/gutils.c | 11 ++--------- + glib/tests/option-context.c | 2 -- + 2 files changed, 2 insertions(+), 11 deletions(-) + +commit 473fd041324931cc1267e354408475058611d740 +Author: Iestyn Pryce +AuthorDate: Sun Dec 20 12:03:19 2009 +0000 +Commit: Iestyn Pryce +CommitDate: Sun Dec 20 12:05:05 2009 +0000 + + Updated Welsh translation + + po/cy.po | 1114 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 561 insertions(+), 553 deletions(-) + +commit ccd33a4043008f2927df6988bfe623341afb91f9 +Author: Behdad Esfahbod +AuthorDate: Sat Dec 19 11:46:19 2009 +0100 +Commit: Behdad Esfahbod +CommitDate: Sat Dec 19 11:46:19 2009 +0100 + + Bug 501166 - Warning message says IA__g_type_init instead of + g_type_init + + gobject/gtype.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit 991702494946bdfcea958c6bd421b51867ea7545 +Author: Javier Jardón +AuthorDate: Tue Dec 15 21:15:41 2009 +0100 +Commit: Javier Jardón +CommitDate: Sat Dec 19 02:17:33 2009 +0100 + + G_DEFINE_INTERFACE_* documentation is not generated + + Fix the documentation: Replace "@Since:" with "Since:" + + https://bugzilla.gnome.org/show_bug.cgi?id=604645 + + gobject/gtype.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 046e521b4f08a88c889620225faea7284356eb23 +Author: Kamal Mostafa +AuthorDate: Fri Dec 18 10:34:05 2009 -0800 +Commit: Javier Jardón +CommitDate: Sat Dec 19 01:57:03 2009 +0100 + + Fix typo "Performace" in gtester-report Details pop-up window + + glib/gtester-report | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f74c0e257fef1b6304294d34130e74b591b14acf +Author: Dan Winship +AuthorDate: Fri Dec 18 12:27:36 2009 +0100 +Commit: Dan Winship +CommitDate: Fri Dec 18 12:27:36 2009 +0100 + + update .gitignores + + gio/tests/.gitignore | 26 +++++++++++++++----------- + gobject/tests/.gitignore | 1 + + 2 files changed, 16 insertions(+), 11 deletions(-) + +commit 28d91b5bb6f0543c259976d8338a7b4d95054dd3 +Author: Dan Winship +AuthorDate: Fri Dec 18 10:26:09 2009 +0100 +Commit: Dan Winship +CommitDate: Fri Dec 18 10:26:09 2009 +0100 + + Fix UnixWare build by not using "sa_len" as a variable name + + https://bugzilla.gnome.org/show_bug.cgi?id=604875 + + gio/gnetworkingprivate.h | 2 +- + gio/gresolver.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 50741f2fb2db13ef236974e676d1b6472c3aef5c +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Fri Dec 18 15:00:54 2009 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Fri Dec 18 15:00:54 2009 +0700 + + vi.po: updated Vietnamese translation + + po/vi.po | 412 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 197 insertions(+), 215 deletions(-) + +commit 3f41e31bf974f6abaeb28264654d6b46b87b7428 +Author: Gian Mario Tagliaretti +AuthorDate: Tue Dec 15 23:49:18 2009 +0100 +Commit: Gian Mario Tagliaretti +CommitDate: Wed Dec 16 23:18:17 2009 +0100 + + Remove wrong file imports, only gio/gio.h should be included + + gio/gunixconnection.h | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit a0bcd63304c683d54e1d55203922a58de672b8f6 +Author: Tor Lillqvist +AuthorDate: Mon Dec 14 03:16:55 2009 +0200 +Commit: Tor Lillqvist +CommitDate: Mon Dec 14 03:16:55 2009 +0200 + + Don't check for headers we include unconditionally + + Don't bother checking for winsock2.h and mswsock.h in the configure + script as we include these unconditionally when building for Windows + anyway. + + config.h.win32.in | 3 --- + configure.in | 2 +- + 2 files changed, 1 insertion(+), 4 deletions(-) + +commit 8dc200db043fb7251baed6e346a7c5542a24a7b9 +Author: Tor Lillqvist +AuthorDate: Mon Dec 14 03:09:46 2009 +0200 +Commit: Tor Lillqvist +CommitDate: Mon Dec 14 03:09:46 2009 +0200 + + Check for and use it if present + + Should help bug #603527 if glib is built in an environment that has + . + + config.h.win32.in | 7 +++++++ + configure.in | 2 +- + gio/gwin32resolver.c | 8 ++++++++ + 3 files changed, 16 insertions(+), 1 deletion(-) + +commit cdf00a6a9b98574dd4a06779de43612b9c8fa42a +Author: Paolo Borelli +AuthorDate: Tue Dec 8 17:05:09 2009 +0100 +Commit: Paolo Borelli +CommitDate: Tue Dec 8 17:05:09 2009 +0100 + + Add unit tests for some more methods + + gio/tests/buffered-input-stream.c | 83 + ++++++++++++++++++++++++++++++++++++++- + 1 file changed, 82 insertions(+), 1 deletion(-) + +commit 4fbbe190b7cbfd271bbb18428bc103ebffa41112 +Author: Alexander Larsson +AuthorDate: Mon Dec 7 22:00:51 2009 +0100 +Commit: Alexander Larsson +CommitDate: Mon Dec 7 22:14:10 2009 +0100 + + Remove default implementation of async filter steam ops + + Not only is the default implementation broken (it causes infinite + recursion + as seen in bug #603982), but its also worthless. If we just fall + back on the + default stream operations we automatically get async version based on + the sync filter stream operations, which is what we want. + + gio/gfilterinputstream.c | 185 + +--------------------------------------------- + gio/gfilteroutputstream.c | 173 + ------------------------------------------- + 2 files changed, 2 insertions(+), 356 deletions(-) + +commit 8a6d5e203eb22dad7e197f33b8c7d96f72be4bea +Author: Paolo Borelli +AuthorDate: Sun Dec 6 15:45:37 2009 +0100 +Commit: Paolo Borelli +CommitDate: Sun Dec 6 15:45:37 2009 +0100 + + Fix makefile typo + + gio/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 568cd48365a8c8ffa6fc25d5282ec92de6e2ff31 +Author: Paolo Borelli +AuthorDate: Sat Nov 28 23:39:48 2009 +0100 +Commit: Paolo Borelli +CommitDate: Sun Dec 6 15:23:33 2009 +0100 + + Add GUtf8InputStream - Bug #603270 + + Add a filter input stream that performs utf8 validation. + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 18 ++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gio.symbols | 7 + + gio/giotypes.h | 1 + + gio/gutf8inputstream.c | 327 + ++++++++++++++++++++++++++++++++++++ + gio/gutf8inputstream.h | 80 +++++++++ + gio/tests/Makefile.am | 4 + + gio/tests/utf8-input-stream.c | 252 +++++++++++++++++++++++++++ + 11 files changed, 694 insertions(+) + +commit c20280b41bc084793e2baa094dc03dc9d1d75f8b +Author: Yair Hershkovitz +AuthorDate: Sun Dec 6 08:41:49 2009 +0200 +Commit: Yair Hershkovitz +CommitDate: Sun Dec 6 08:41:49 2009 +0200 + + Updated Hebrew translation + + po/he.po | 961 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 481 insertions(+), 480 deletions(-) + +commit efb594b7d49e5058de621f1253671ec192eae695 +Author: Kjartan Maraas +AuthorDate: Fri Dec 4 21:18:32 2009 +0100 +Commit: Kjartan Maraas +CommitDate: Fri Dec 4 21:18:32 2009 +0100 + + Updated Norwegian bokmål translation. + + po/nb.po | 951 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 476 insertions(+), 475 deletions(-) + +commit 2321e5aed07154761223bb124770beba56700e41 +Author: Matthew W. S. Bell +AuthorDate: Wed Dec 2 01:48:30 2009 +0100 +Commit: Javier Jardón +CommitDate: Wed Dec 2 01:48:30 2009 +0100 + + Initialise variable in g_time_val_from_iso8601() + + The function does not initialise the struct tm, + giving it improper values of tm_isdst making the result + an hour out. + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=603540 + + glib/gtimer.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit 3d8035f799f632f196d914fde02dc052b7944581 +Author: Jeroen Nijhof +AuthorDate: Tue Dec 1 19:42:09 2009 +0100 +Commit: Javier Jardón +CommitDate: Tue Dec 1 19:48:04 2009 +0100 + + [gio] Remove some commas at end of enumerator list + + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=603476 + + gio/gioenums.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 39cd766e8ef6901c097fdf2d3148fdc952f06b0e +Author: Dan Winship +AuthorDate: Tue Dec 1 10:42:58 2009 +0100 +Commit: Alexander Larsson +CommitDate: Tue Dec 1 10:44:42 2009 +0100 + + Use G_DEFINE_INTERFACE in gio + + Note: Since we export types with Iface in the name rather than + Interface we have to use some typedefs to make this work. New + interfaces should probably use Interface as the public name. + + gio/gappinfo.c | 45 +------------ + gio/gasyncresult.c | 44 +------------ + gio/gdesktopappinfo.c | 44 +------------ + gio/gdrive.c | 175 + +++++++++++++++++++------------------------------- + gio/gfile.c | 46 +------------ + gio/gicon.c | 44 +------------ + gio/gloadableicon.c | 45 +------------ + gio/gmount.c | 143 ++++++++++++++--------------------------- + gio/gseekable.c | 38 +---------- + gio/gvolume.c | 105 +++++++++--------------------- + 10 files changed, 165 insertions(+), 564 deletions(-) + +commit 91d96350a7eed2e2acfc0c254b6dfc4e6fe81a8b +Author: Dan Winship +AuthorDate: Tue Dec 1 10:33:12 2009 +0100 +Commit: Alexander Larsson +CommitDate: Tue Dec 1 10:44:42 2009 +0100 + + Add G_DEFINE_INTERFACE + + This is a macro similar to G_DEFINE_TYPE but it lets you define + interfaces rather than classes. + + For discussion, see bug #320482 + + docs/reference/gobject/gobject-sections.txt | 2 + + gobject/gtype.h | 70 + ++++++++++++++++++++++++++++- + gobject/tests/threadtests.c | 30 ------------- + 3 files changed, 70 insertions(+), 32 deletions(-) + +commit 74a970f754bbffcc9f0a3fa6dd9977a8640544c8 +Author: Ryan Lortie +AuthorDate: Mon Nov 30 19:50:21 2009 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 30 19:53:30 2009 -0500 + + Add byteswap macros for gsize/gssize. + + configure.in | 5 +++ + docs/reference/glib/glib-sections.txt | 12 ++++++ + docs/reference/glib/tmpl/byte_order.sgml | 72 + ++++++++++++++++++++++++++++++++ + glib/gtypes.h | 5 +++ + glibconfig.h.win32.in | 4 ++ + 5 files changed, 98 insertions(+) + +commit 2a78adc5e3f5b33e92cc55570397da24e062aa24 +Author: Benjamin Otte +AuthorDate: Thu Oct 8 20:01:15 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:52:33 2009 +0100 + + Only add object to list new objects when it has a custom constructor + + This works around the need to take a custom mutex twice and add the + object to a GSList of objects that are currently in construction + for the + common case. Only when the constructor is overwritten do we use the + previous behavior and allow things like singleton objects. + + The only slightly incompatible change is that previously, it was ok to + call g_object_set() on construct-only properties while the object was + initialized. This will now fail. If that behavior is needed, setting a + custom constructor that just chains up will reenable this + functionality. + + https://bugzilla.gnome.org/show_bug.cgi?id=557151 + + gobject/gobject.c | 26 ++++++++++++++++++-------- + 1 file changed, 18 insertions(+), 8 deletions(-) + +commit f0f32a7ef0f7ae8cdd2aa2992d2e116dd7b602fe +Author: Benjamin Otte +AuthorDate: Thu Sep 24 15:04:20 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:52:33 2009 +0100 + + Remove more read locks usage + + g_type_default_interface_peek() and g_type_value_table_peek() + don't need + to acquire read locks anymore when they test the refcount instead of + node->data. + + gobject/gtype.c | 15 ++++----------- + 1 file changed, 4 insertions(+), 11 deletions(-) + +commit 5cac5c828b9d56ed0b1932deb7364d6ba926eb96 +Author: Benjamin Otte +AuthorDate: Thu Sep 24 14:57:19 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:52:33 2009 +0100 + + Make g_type_class_peek[_static]() not take any locks + + By replacing a check for node->data with a check for + NODE_REFCOUNT(node) + these functions don't require a read lock anymore. + + gobject/gtype.c | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +commit 83ee0d947d7c103e975be0fc4e62415ad7d57571 +Author: Edward Hervey +AuthorDate: Thu Sep 24 13:19:46 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:52:33 2009 +0100 + + gobject/tests: New test for dynamic class creation/destruction + + Starts 100 threads which ref/unref a dynamic class to test the recent + changes to class init/uninit. + + gobject/tests/Makefile.am | 4 +- + gobject/tests/dynamictests.c | 235 + +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 238 insertions(+), 1 deletion(-) + +commit 35c376a8a6be94f6fd5c22164a5e0968f4d3e26e +Author: Edward Hervey +AuthorDate: Thu Sep 24 12:42:49 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:52:33 2009 +0100 + + Add type_data_ref_U() and use it in g_type_class_ref() + + The function returns TRUE if the type was previously initialized + and can + be easily reused. It returns FALSE and does not take a reference + if the + type is not referenced yet. + + g_type_class_ref() uses this to avoid taking locks in the common path, + which speeds up object creation a lot - in particular in multithreaded + applications. + + https://bugzilla.gnome.org/show_bug.cgi?id=585375 + + gobject/gtype.c | 62 + ++++++++++++++++++++++++++++++++++++++------------------- + 1 file changed, 42 insertions(+), 20 deletions(-) + +commit 5160175656797fde6b301b0d832b692052b96e3e +Author: Edward Hervey +AuthorDate: Thu Sep 24 12:29:25 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:52:33 2009 +0100 + + Reorganize g_type_class_ref() + + Moves the first check out of the lock, as it's not required. + + https://bugzilla.gnome.org/show_bug.cgi?id=585375 + + gobject/gtype.c | 19 ++++++++----------- + 1 file changed, 8 insertions(+), 11 deletions(-) + +commit 00a4470ad07551f3629029892b819c18d8902f2f +Author: Benjamin Otte +AuthorDate: Thu Sep 24 12:26:53 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:52:33 2009 +0100 + + Make ClassData->init_state atomic + + This is necessary to make g_type_class_ref() lockless. + + https://bugzilla.gnome.org/show_bug.cgi?id=585375 + + Also includes fix for: + + https://bugzilla.gnome.org/show_bug.cgi?id=587892 + + gobject/gtype.c | 24 +++++++++++++----------- + 1 file changed, 13 insertions(+), 11 deletions(-) + +commit 4c243b1cba6e94658e68c3e4b188d0d784ed7463 +Author: Edward Hervey +AuthorDate: Thu Sep 24 11:45:13 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:52:32 2009 +0100 + + Make type_data_unref_U not take locks in the common case + + https://bugzilla.gnome.org/show_bug.cgi?id=585375 + + gobject/gtype.c | 19 ++++++++++++------- + 1 file changed, 12 insertions(+), 7 deletions(-) + +commit 5e7dba0501f4af4ac5427bbf1227ba5cb026cffa +Author: Edward Hervey +AuthorDate: Thu Sep 24 11:38:49 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:52:32 2009 +0100 + + Make all accesses of Node->ref_count atomic + + This does not change any locking behavior at all, it just replaces + simple getters/setters of the variable with atomic versions. + + The ref_count variable was kept as unsigned, even though that requires + casting for all operations, to mirror GObject->refcount. + + https://bugzilla.gnome.org/show_bug.cgi?id=585375 + + gobject/gtype.c | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +commit 2ec989902b2800d150bbb2cf6c3b6924f43ed736 +Author: Edward Hervey +AuthorDate: Thu Sep 24 11:19:58 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:52:32 2009 +0100 + + type_data_unref_Wm => type_data_unref_U + + Make the type unref function not hold any locks when called. This + makes it easier to optimize it to be atomic later. + + https://bugzilla.gnome.org/show_bug.cgi?id=585375 + + gobject/gtype.c | 37 ++++++++++++++----------------------- + 1 file changed, 14 insertions(+), 23 deletions(-) + +commit b163759320ddfce0276b20bb453de70919aeeff3 +Author: Benjamin Otte +AuthorDate: Thu Sep 24 11:16:10 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:52:32 2009 +0100 + + Add a NODE_REFCOUNT getter + + This is useful when moving the code to be atomic. + It also will make that patch smaller. + + https://bugzilla.gnome.org/show_bug.cgi?id=585375 + + gobject/gtype.c | 39 +++++++++++++++++++-------------------- + 1 file changed, 19 insertions(+), 20 deletions(-) + +commit 170423f924950728cec21a784787aa43b0be71bc +Author: Edward Hervey +AuthorDate: Thu Sep 24 10:44:17 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:52:32 2009 +0100 + + Move setting the refcount to the end of the function + + This is a safety feature for when making it atomic later. + + https://bugzilla.gnome.org/show_bug.cgi?id=585375 + + gobject/gtype.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit f8d24e849533e0e43cd7c9cf9a9692e4779c0472 +Author: Edward Hervey +AuthorDate: Thu Sep 24 10:16:48 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:52:32 2009 +0100 + + Pass the TypeNode to type_data_last_unref_Wm() + + Previously the GType was looked up just for calling the function + Also moves the unref functions together in the code. + + https://bugzilla.gnome.org/show_bug.cgi?id=585375 + + gobject/gtype.c | 57 + +++++++++++++++++++++++++++------------------------------ + 1 file changed, 27 insertions(+), 30 deletions(-) + +commit 718b476c4474e5c9e973046ef555ffcb9bfd38a1 +Author: Edward Hervey +AuthorDate: Thu Sep 24 10:03:14 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:52:32 2009 +0100 + + Move ref_count from TypeNode->data to TypeNode + + https://bugzilla.gnome.org/show_bug.cgi?id=585375 + + gobject/gtype.c | 48 ++++++++++++++++++++++++------------------------ + 1 file changed, 24 insertions(+), 24 deletions(-) + +commit 69961d27a13b2083d864884b40c861c5e97a5c12 +Author: Alexander Larsson +AuthorDate: Wed Sep 9 16:42:32 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:52:29 2009 +0100 + + Implement O(1) interface lookups + + Currently interface lookups are do a binary search over all the + interfaces + an object implements. Its possible to do this lookup in constant + time using for + instance the gcj algorighm described at: + http://gcc.gnu.org/ml/java/1999-q3/msg00377.html + + This is an implementation of that based on GAtomicArray. + + gobject/gtype.c | 185 + +++++++++++++++++++++++++++++++++++++++++++++----------- + 1 file changed, 151 insertions(+), 34 deletions(-) + +commit 8f27a5e62129672f5c17b140ca854fd2307a9734 +Author: Alexander Larsson +AuthorDate: Wed Sep 9 16:51:28 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:50:21 2009 +0100 + + Implement lock free interface lookup + + We implement lock free interface lookup by moving the n_ifaces + counter into memory pointed to by TypeNode->iface_entries, and + then updating this in RCU-style by always copying it, modifying + the copy and then when the modification is done replace the old + pointer with g_atomic_pointer_set. + + There is one additional complexity when freeing the old memory, + since the old memory region can be in use. To handle this we + don't free such memory, but put it on a free list and reuse it + later. This means that lock-free lookups must be able to + handle the memory being modified in random ways without crashing, + and at the end we verify that the memory didn't change and the + transaction is ok. + + With this infrastructure the patch then implements a lock-free + version of type_lookup_iface_entry_L called type_lookup_iface_vtable_I + and use it in: g_type_interface_peek, g_type_interface_peek_parent + and type_node_check_conformities_UorL. + + Using the performance tests from bug 557100 shows that the general + performance difference is negligible, but the lack of a lock for each + type check and interface vfunc call should greatly enhance threaded + scalability. + + gobject/gtype.c | 329 + +++++++++++++++++++++++++++++++++++--------------------- + 1 file changed, 204 insertions(+), 125 deletions(-) + +commit 75ce4741f9a7a26098a77407de9b4cc2b985a254 +Author: Alexander Larsson +AuthorDate: Wed Sep 9 16:47:44 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 30 20:48:50 2009 +0100 + + Add GAtomicArray for RCU-style lockless updates + + This adds supports for a lock-less a non-shrinking growable array. + You can use it to do reads using no locks, as long as your read-code + can handle that during the read transaction the object can be modified + by another writer (but it will not change size or be freed), and you + can only trust the result once the transaction has finished + successfully. + + This doesn't free things like RCU normally does, instead it pushes the + memory on a free list that is reused for other atomic arrays. + + gobject/Makefile.am | 3 +- + gobject/gatomicarray.c | 169 + +++++++++++++++++++++++++++++++++++++++++++++++++ + gobject/gatomicarray.h | 60 ++++++++++++++++++ + 3 files changed, 231 insertions(+), 1 deletion(-) + +commit f55752b10cc29090550005e16e9e7f72c5c060fa +Author: Ivar Smolin +AuthorDate: Mon Nov 30 13:08:18 2009 +0200 +Commit: Priit Laes +CommitDate: Mon Nov 30 13:08:18 2009 +0200 + + Updating Estonian translation + + po/et.po | 479 + ++------------------------------------------------------------- + 1 file changed, 10 insertions(+), 469 deletions(-) + +commit 8df6191a322d6b412448aa5618daf68c4e0ab3da +Author: Matthias Clasen +AuthorDate: Mon Nov 30 00:11:10 2009 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 30 00:11:10 2009 -0500 + + Bump version + + configure.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2532707ce420623acaf7f1fc0bd3670bb3a8a86b +Author: Matthias Clasen +AuthorDate: Mon Nov 30 00:09:36 2009 -0500 +Commit: Matthias Clasen +CommitDate: Mon Nov 30 00:09:36 2009 -0500 + + 2.23.0 + + docs/reference/glib/tmpl/glib-unused.sgml | 67 ++ + docs/reference/glib/tmpl/macros_misc.sgml | 5 +- + docs/reference/glib/tmpl/version.sgml | 68 -- + po/am.po | 282 +++--- + po/ar.po | 285 +++--- + po/as.po | 287 ++++--- + po/az.po | 282 +++--- + po/be.po | 283 +++--- + po/be@latin.po | 286 ++++--- + po/bg.po | 287 ++++--- + po/bn.po | 287 ++++--- + po/bn_IN.po | 287 ++++--- + po/bs.po | 282 +++--- + po/ca.po | 917 ++++++++++---------- + po/ca@valencia.po | 285 +++--- + po/cs.po | 287 ++++--- + po/cy.po | 282 +++--- + po/da.po | 287 ++++--- + po/de.po | 287 ++++--- + po/dz.po | 282 +++--- + po/el.po | 286 ++++--- + po/en@shaw.po | 966 +++++++++++---------- + po/en_CA.po | 285 +++--- + po/en_GB.po | 287 ++++--- + po/eo.po | 282 +++--- + po/es.po | 930 ++++++++++---------- + po/et.po | 492 ++++++++++- + po/eu.po | 287 ++++--- + po/fa.po | 282 +++--- + po/fi.po | 287 ++++--- + po/fr.po | 287 ++++--- + po/ga.po | 282 +++--- + po/gl.po | 941 ++++++++++---------- + po/gu.po | 287 ++++--- + po/he.po | 287 ++++--- + po/hi.po | 287 ++++--- + po/hr.po | 282 +++--- + po/hu.po | 287 ++++--- + po/hy.po | 282 +++--- + po/id.po | 282 +++--- + po/is.po | 282 +++--- + po/it.po | 287 ++++--- + po/ja.po | 287 ++++--- + po/ka.po | 282 +++--- + po/kn.po | 287 ++++--- + po/ko.po | 287 ++++--- + po/ku.po | 282 +++--- + po/lt.po | 285 +++--- + po/lv.po | 282 +++--- + po/mai.po | 285 +++--- + po/mg.po | 282 +++--- + po/mk.po | 285 +++--- + po/ml.po | 287 ++++--- + po/mn.po | 282 +++--- + po/mr.po | 287 ++++--- + po/ms.po | 282 +++--- + po/nb.po | 943 ++++++++++---------- + po/ne.po | 282 +++--- + po/nl.po | 285 +++--- + po/nn.po | 285 +++--- + po/oc.po | 282 +++--- + po/or.po | 287 ++++--- + po/pa.po | 287 ++++--- + po/pl.po | 287 ++++--- + po/ps.po | 282 +++--- + po/pt.po | 287 ++++--- + po/pt_BR.po | 951 ++++++++++---------- + po/ro.po | 287 ++++--- + po/ru.po | 287 ++++--- + po/rw.po | 282 +++--- + po/si.po | 282 +++--- + po/sk.po | 285 +++--- + po/sl.po | 1282 + +++++++++++++-------------- + po/sq.po | 288 ++++--- + po/sr.po | 287 ++++--- + po/sr@ije.po | 282 +++--- + po/sr@latin.po | 287 ++++--- + po/sv.po | 1332 + ++++++++++++++--------------- + po/ta.po | 287 ++++--- + po/te.po | 287 ++++--- + po/th.po | 287 ++++--- + po/tl.po | 282 +++--- + po/tr.po | 287 ++++--- + po/tt.po | 282 +++--- + po/uk.po | 287 ++++--- + po/vi.po | 285 +++--- + po/wa.po | 282 +++--- + po/xh.po | 282 +++--- + po/yi.po | 282 +++--- + po/zh_CN.po | 285 +++--- + po/zh_HK.po | 287 ++++--- + po/zh_TW.po | 287 ++++--- + 92 files changed, 16991 insertions(+), 14691 deletions(-) + +commit 310e2e7291ba716755e538a6fe286a0072b39ef1 +Author: Matthias Clasen +AuthorDate: Sun Nov 29 22:57:00 2009 -0500 +Commit: Matthias Clasen +CommitDate: Sun Nov 29 22:57:00 2009 -0500 + + More updates + + NEWS | 1 + + 1 file changed, 1 insertion(+) + +commit 8907bfee863e969bc68de749a45f34d7f7f21699 +Author: Matthias Clasen +AuthorDate: Sun Nov 29 22:54:16 2009 -0500 +Commit: Matthias Clasen +CommitDate: Sun Nov 29 22:54:16 2009 -0500 + + Fix up GIO docs + + docs/reference/gio/gio-docs.xml | 31 ++++----- + docs/reference/gio/gio-sections.txt | 113 + +++++++++++++++++++++++++++++++++ + docs/reference/gio/gio.types | 9 +++ + gio/fen/fen-data.c | 4 -- + gio/gappinfo.h | 1 + + gio/gcharsetconverter.c | 31 ++++++++- + gio/gconverterinputstream.c | 13 +++- + gio/gconverterinputstream.h | 2 +- + gio/gconverteroutputstream.c | 13 +++- + gio/gconverteroutputstream.h | 2 +- + gio/gdummyfile.c | 6 -- + gio/gioenums.h | 6 +- + gio/glocaldirectorymonitor.c | 7 -- + gio/glocalfile.c | 6 -- + gio/glocalfileinputstream.c | 6 -- + gio/glocalfilemonitor.c | 7 -- + gio/gunionvolumemonitor.c | 9 +-- + gio/gunixvolume.c | 120 + +++++++++++++++-------------------- + gio/gunixvolumemonitor.c | 12 ---- + gio/gwin32mount.c | 2 +- + gio/gwin32volumemonitor.c | 6 +- + gio/win32/gwinhttpfile.c | 4 +- + gio/win32/gwinhttpfileinputstream.c | 4 +- + gio/win32/gwinhttpfileoutputstream.c | 4 +- + gio/win32/gwinhttpvfs.c | 2 +- + 25 files changed, 261 insertions(+), 159 deletions(-) + +commit 80bda52b57440b66752df6aa4078e3a723b3a990 +Author: Matthias Clasen +AuthorDate: Sun Nov 29 21:19:10 2009 -0500 +Commit: Matthias Clasen +CommitDate: Sun Nov 29 21:19:10 2009 -0500 + + Fix dynamictype test to build + + tests/gobject/dynamictype.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 06c71ba399adc22c4f327876bac50bbd1a6dfcf4 +Author: Matthias Clasen +AuthorDate: Sun Nov 29 20:55:25 2009 -0500 +Commit: Matthias Clasen +CommitDate: Sun Nov 29 20:55:25 2009 -0500 + + Fix 'make check' in gio + + gio/gio.symbols | 430 + +++++++++++++++++++++++++++++--------------------------- + gio/pltcheck.sh | 2 +- + 2 files changed, 225 insertions(+), 207 deletions(-) + +commit a4a69df105e57a37fbb2b14275f262613aff1071 +Author: Matthias Clasen +AuthorDate: Sun Nov 29 20:48:52 2009 -0500 +Commit: Matthias Clasen +CommitDate: Sun Nov 29 20:48:52 2009 -0500 + + Remove filter-cat from TEST_PROGS + + Since it is not intended to be run as part of make check. + + gio/tests/Makefile.am | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit 12939c54f93ddc61c02b592ced931fb30d797fe8 +Author: Matthias Clasen +AuthorDate: Sun Nov 29 20:47:51 2009 -0500 +Commit: Matthias Clasen +CommitDate: Sun Nov 29 20:47:51 2009 -0500 + + Disable a broken test + + One of the option context tests relied on the ability to + call g_set_pgrname() more than once. Thats no longer possible + (without incurring a warning that wrecks the test). + + glib/tests/option-context.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 31be5a93402ca596bb1bc5d872ef437c51ac6d12 +Author: David Planella +AuthorDate: Sun Nov 29 19:27:45 2009 +0100 +Commit: David Planella +CommitDate: Sun Nov 29 19:49:01 2009 +0100 + + Updated Catalan translations, with some corrections from Carles + Ferrando + + po/ca.po | 964 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 497 insertions(+), 467 deletions(-) + +commit e7992b7b06df986bd36dd745a4cca2661e77f497 +Author: Paolo Borelli +AuthorDate: Sun Nov 29 15:14:10 2009 +0100 +Commit: Paolo Borelli +CommitDate: Sun Nov 29 15:14:10 2009 +0100 + + Fix return type of g_converter_[in|out]put_stream. + + Fixes bug #603265 + + gio/gconverterinputstream.c | 8 ++++---- + gio/gconverterinputstream.h | 4 ++-- + gio/gconverteroutputstream.c | 10 +++++----- + gio/gconverteroutputstream.h | 4 ++-- + gio/tests/converter-stream.c | 30 +++++++++++++----------------- + 5 files changed, 26 insertions(+), 30 deletions(-) + +commit bd2a9f7ebb12fde7ea4dcf38d252bfea519970e4 +Author: Jorge González +AuthorDate: Sat Nov 28 13:26:38 2009 +0100 +Commit: Jorge González +CommitDate: Sat Nov 28 13:26:38 2009 +0100 + + Updated Spanish translation + + po/es.po | 24 +++++++++--------------- + 1 file changed, 9 insertions(+), 15 deletions(-) + +commit 35d440535fecaacce228089b91873afc6c5e069a +Author: Matthias Clasen +AuthorDate: Sat Nov 28 01:59:12 2009 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 28 01:59:12 2009 -0500 + + Updates + + NEWS | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 60 insertions(+) + +commit 43149aafe04027bf7f91abb05df64afafc5ed4c4 +Author: Matthias Clasen +AuthorDate: Sat Nov 28 01:30:27 2009 -0500 +Commit: Matthias Clasen +CommitDate: Sat Nov 28 01:30:27 2009 -0500 + + Bump version to 2.23.0 + + configure.in | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 92a766c74380f7511b0f0c2ea04059133ff8fd73 +Author: Matej Urbančič +AuthorDate: Fri Nov 27 13:33:16 2009 +0100 +Commit: Matej Urbančič +CommitDate: Fri Nov 27 13:33:16 2009 +0100 + + Updated Slovenian translation + + po/sl.po | 213 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 114 insertions(+), 99 deletions(-) + +commit 56653e930feebd36cf36523669f3bcad59ad3dc2 +Author: Jorge González +AuthorDate: Fri Nov 27 01:37:49 2009 +0100 +Commit: Jorge González +CommitDate: Fri Nov 27 01:37:49 2009 +0100 + + Updated Spanish translation + + po/es.po | 171 + ++++++++++++++++++++++++++++++++++++--------------------------- + 1 file changed, 99 insertions(+), 72 deletions(-) + +commit 8586b636c7a0162f7b06e00c6a563eeaf24cab46 +Author: Ryan Lortie +AuthorDate: Thu Nov 26 12:15:04 2009 -0500 +Commit: Ryan Lortie +CommitDate: Thu Nov 26 12:15:04 2009 -0500 + + Bug 589631 - enclose literals with double quotes + + Improve strings for purpose of translation. + + Based on a patch from Leonardo Ferreira Fontenelle. + + gio/gmount.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit 09b1b6414b6aa001733fa7897f48970cb3cf258a +Author: Christian Kellner +AuthorDate: Fri Oct 9 15:06:44 2009 +0200 +Commit: Alexander Larsson +CommitDate: Thu Nov 26 16:12:18 2009 +0100 + + Add "default location" support to GMount + + The "default location" of the given mount is a path that reflects + the main entry point for the user (e.g. the home directory, or the + root of the volume). + + https://bugzilla.gnome.org/show_bug.cgi?id=561998 + + gio/gmount.c | 31 +++++++++++++++++++++++++++++++ + gio/gmount.h | 3 +++ + 2 files changed, 34 insertions(+) + +commit 2b2195bf68bf68837dc9f6b4765d3716694f42b3 +Author: Alexander Larsson +AuthorDate: Thu Nov 26 16:05:07 2009 +0100 +Commit: Alexander Larsson +CommitDate: Thu Nov 26 16:05:07 2009 +0100 + + Pass in the right device to vfs->local_file_add_info for symlinks + + We used to pass the path for the symlink, but the device of the target + which is wrong and breaks metadata access. + + https://bugzilla.gnome.org/show_bug.cgi?id=593809 + + gio/glocalfileinfo.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit 96f41b62836810563c4f69ba6d053e91c638728a +Author: Mures Andone +AuthorDate: Tue Nov 10 14:59:31 2009 +0200 +Commit: Alexander Larsson +CommitDate: Thu Nov 26 15:40:01 2009 +0100 + + Fixed bug 91 (GIO monitoring not working due to bad assert) + + https://bugzilla.gnome.org/show_bug.cgi?id=593856 + + gio/inotify/ginotifydirectorymonitor.c | 10 ++++++++-- + gio/inotify/ginotifyfilemonitor.c | 10 ++++++++-- + 2 files changed, 16 insertions(+), 4 deletions(-) + +commit 97db31fa14d2556a649d1d66a0dfc1792c5908d7 +Author: Will Thompson +AuthorDate: Fri Nov 20 13:01:17 2009 +0000 +Commit: Alexander Larsson +CommitDate: Thu Nov 26 15:14:46 2009 +0100 + + Apply English pedantry to GAsyncInitable's docs + + • "asynchronous" was misspelled as "asyncronous" in various places; + • punctuation was missing; + • g_async_initable_new_async() had a stray "and"; + • references to g_async_initable_new_finish() were missing a "the". + + https://bugzilla.gnome.org/show_bug.cgi?id=602417 + + gio/gasyncinitable.c | 38 +++++++++++++++++++------------------- + 1 file changed, 19 insertions(+), 19 deletions(-) + +commit 08d33b81ee4addefa6c5fac6894111d09f90951b +Author: Alexander Larsson +AuthorDate: Thu Nov 26 13:15:11 2009 +0100 +Commit: Alexander Larsson +CommitDate: Thu Nov 26 13:15:11 2009 +0100 + + Remove unused variable + + gio/gzlibdecompressor.c | 1 - + 1 file changed, 1 deletion(-) + +commit b35fa1994d6607376136716c133dd88433706ee8 +Author: Alexander Larsson +AuthorDate: Thu Nov 26 12:30:14 2009 +0100 +Commit: Alexander Larsson +CommitDate: Thu Nov 26 12:32:36 2009 +0100 + + Cast iface_init to GInterfaceInitFunc + + This is in line with what all other type define macros do. + + https://bugzilla.gnome.org/show_bug.cgi?id=508157 + + gobject/gtypemodule.h | 2 +- + tests/gobject/dynamictype.c | 3 +-- + 2 files changed, 2 insertions(+), 3 deletions(-) + +commit 36646f46ab07dec3d5a2ce0c9ba1932587528ca8 +Author: Alexander Larsson +AuthorDate: Thu Nov 26 11:54:44 2009 +0100 +Commit: Alexander Larsson +CommitDate: Thu Nov 26 11:54:44 2009 +0100 + + Add test for G_IMPLEMENT_INTERFACE_DYNAMIC + + tests/gobject/dynamictype.c | 53 + +++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 49 insertions(+), 4 deletions(-) + +commit 7d51c96e5e39e8f3b403884f286ef781f0c952d6 +Author: Alexander Larsson +AuthorDate: Tue Nov 24 09:53:15 2009 +0100 +Commit: Alexander Larsson +CommitDate: Thu Nov 26 11:20:18 2009 +0100 + + Add G_IMPLEMENT_INTERFACE_DYNAMIC + + Convenience macro to easy interface addition for dynamic types. + + https://bugzilla.gnome.org/show_bug.cgi?id=508157 + + docs/reference/gobject/gobject-sections.txt | 1 + + gobject/gtypemodule.h | 27 + ++++++++++++++++++++++++--- + 2 files changed, 25 insertions(+), 3 deletions(-) + +commit b3156508c49f5274805de1d0d9bc5a69f43de1e9 +Author: Christian Persch +AuthorDate: Sat May 24 21:00:11 2008 +0200 +Commit: Alexander Larsson +CommitDate: Thu Nov 26 10:20:12 2009 +0100 + + Add TB and PB cases to g_format_size_for_display + + glib/gfileutils.c | 32 +++++++++++++++++++++++++------- + 1 file changed, 25 insertions(+), 7 deletions(-) + +commit 1ffedec41f01b2cac9ecd9664cec1867e5d1ebb0 +Author: Tor Lillqvist +AuthorDate: Wed Nov 25 12:57:10 2009 +0200 +Commit: Tor Lillqvist +CommitDate: Wed Nov 25 12:57:10 2009 +0200 + + Remove fuzzy marker from header, which crashed my msgfmt + + po/en@shaw.po | 1 - + 1 file changed, 1 deletion(-) + +commit 3d7edc137e447456b7cd6b9df8b6257454c43a5d +Author: Ryan Lortie +AuthorDate: Wed Nov 11 22:40:28 2009 -0500 +Commit: Ryan Lortie +CommitDate: Tue Nov 24 17:55:57 2009 -0500 + + Bug 601637 - add GUnixFDList + + change GUnixFDMessage to contain a GUnixFDList. + + add test case for GUnixFDMessage and GUnixFDList. + + update docs. + + docs/reference/gio/gio-docs.xml | 1 + + docs/reference/gio/gio-sections.txt | 23 +++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 2 + + gio/gunixfdlist.c | 391 + ++++++++++++++++++++++++++++++++++++ + gio/gunixfdlist.h | 89 ++++++++ + gio/gunixfdmessage.c | 193 +++++++++++------- + gio/gunixfdmessage.h | 7 +- + gio/tests/Makefile.am | 5 +- + gio/tests/unix-fd.c | 197 ++++++++++++++++++ + 10 files changed, 835 insertions(+), 74 deletions(-) + +commit e5a98502be13e9f9561106577ecbc736211ca692 +Author: Alexander Larsson +AuthorDate: Tue Nov 24 13:31:33 2009 +0100 +Commit: Alexander Larsson +CommitDate: Tue Nov 24 13:31:33 2009 +0100 + + Update gio.symbols with new functions + + gio/gio.symbols | 53 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 53 insertions(+) + +commit b7c4aa61523adfe79991051edf2d0128fd0e5222 +Author: Alexander Larsson +AuthorDate: Tue Nov 24 13:31:10 2009 +0100 +Commit: Alexander Larsson +CommitDate: Tue Nov 24 13:31:10 2009 +0100 + + Export g_charset_converter_get_num_fallbacks in header + + gio/gcharsetconverter.h | 1 + + 1 file changed, 1 insertion(+) + +commit 2af69f4135253573ccc3a14f0cb9555bdba6ac3b +Author: Alexander Larsson +AuthorDate: Tue Nov 24 13:02:05 2009 +0100 +Commit: Alexander Larsson +CommitDate: Tue Nov 24 13:02:05 2009 +0100 + + Fix GZlibCompressorFormat names + + What used to be called RAW is really the zlib header format. + There is a real "raw" format, so rename the default and add a + RAW type. + + gio/gioenums.h | 8 +++++--- + gio/gzlibcompressor.c | 12 ++++++++++-- + gio/gzlibdecompressor.c | 9 +++++++-- + gio/tests/filter-cat.c | 4 ++-- + 4 files changed, 24 insertions(+), 9 deletions(-) + +commit 85501f5ffabe59ac38daf4d29990a7d5cd949c31 +Author: Ryan Lortie +AuthorDate: Wed Nov 11 23:31:12 2009 -0500 +Commit: Ryan Lortie +CommitDate: Mon Nov 23 13:53:39 2009 -0500 + + Bug 591214 - Warnings building gcancellable.o + + - check for EINTR on read() and write() calls + - remove unused 'priv' variable + + gio/gcancellable.c | 33 ++++++++++++++++++++++++++------- + 1 file changed, 26 insertions(+), 7 deletions(-) + +commit 48e2a570439373882cf755567e1d147bc5dd50e5 +Author: Ryan Lortie +AuthorDate: Fri Nov 20 12:54:35 2009 -0600 +Commit: Ryan Lortie +CommitDate: Mon Nov 23 13:47:16 2009 -0500 + + Bug 598712 - can't detect text file with backspace + + looks_like_text(): Allow '\b' to appear in text files. + + gio/gcontenttype.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit 230745a350fea524f899c6319a7c529fd82bd377 +Author: Alexander Larsson +AuthorDate: Wed Nov 18 16:07:16 2009 +0100 +Commit: Alexander Larsson +CommitDate: Mon Nov 23 16:22:53 2009 +0100 + + Add filter-cat test for GConverter streams + + gio/tests/Makefile.am | 4 + + gio/tests/filter-cat.c | 227 + +++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 231 insertions(+) + +commit 92b9218cbf8cbc594c3a067b2dc09730416df85f +Author: Alexander Larsson +AuthorDate: Fri Nov 20 12:04:31 2009 +0100 +Commit: Alexander Larsson +CommitDate: Mon Nov 23 16:22:53 2009 +0100 + + Add GZlibCompressor + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/giotypes.h | 1 + + gio/gzlibcompressor.c | 316 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gzlibcompressor.h | 51 ++++++++ + 5 files changed, 371 insertions(+) + +commit 38c3eb14e42da8ca2d55918be048cf1729591486 +Author: Alexander Larsson +AuthorDate: Thu Nov 19 17:20:20 2009 +0100 +Commit: Alexander Larsson +CommitDate: Mon Nov 23 16:22:53 2009 +0100 + + Add GZlibDecompressor for zlib decompression + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gioenums.h | 15 +++ + gio/giotypes.h | 1 + + gio/gzlibdecompressor.c | 292 + ++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gzlibdecompressor.h | 50 +++++++++ + 6 files changed, 361 insertions(+) + +commit 8cb1252d92e5cfea3804ef27edc01cac5b044ff3 +Author: Alexander Larsson +AuthorDate: Thu Nov 19 17:16:29 2009 +0100 +Commit: Alexander Larsson +CommitDate: Mon Nov 23 16:22:52 2009 +0100 + + Add zlib dependency to gio + + Will be used by compression APIs + + configure.in | 11 +++++++++++ + gio-2.0.pc.in | 1 + + gio/Makefile.am | 1 + + 3 files changed, 13 insertions(+) + +commit fce2873641ffe20834722ad33894c91b2e4b6c32 +Author: Alexander Larsson +AuthorDate: Fri Oct 23 19:59:03 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 23 16:22:52 2009 +0100 + + Add test for converter streams + + gio/tests/Makefile.am | 4 + + gio/tests/converter-stream.c | 576 + +++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 580 insertions(+) + +commit 7f8991596be1f17bd71c367bef630423f0a83c35 +Author: Alexander Larsson +AuthorDate: Mon Nov 23 15:03:57 2009 +0100 +Commit: Alexander Larsson +CommitDate: Mon Nov 23 16:22:52 2009 +0100 + + Add GConverterOutputStream + + This allows for conversion when saving + + gio/Makefile.am | 2 + + gio/gconverteroutputstream.c | 595 + +++++++++++++++++++++++++++++++++++++++++++ + gio/gconverteroutputstream.h | 80 ++++++ + gio/gio.h | 1 + + gio/giotypes.h | 1 + + 5 files changed, 679 insertions(+) + +commit afe3324fcac8ea2a6b6007c938d7974aa923c0d3 +Author: Alexander Larsson +AuthorDate: Mon Nov 23 15:02:50 2009 +0100 +Commit: Alexander Larsson +CommitDate: Mon Nov 23 16:22:52 2009 +0100 + + Add g_output_stream_is_closing + + Need this to check how we're flushing when closing a converter + output stream. + + gio/goutputstream.c | 29 ++++++++++++++++++++++++++++- + gio/goutputstream.h | 1 + + 2 files changed, 29 insertions(+), 1 deletion(-) + +commit 848e0bf760ea7326420669e90ef6675786dea702 +Author: Alexander Larsson +AuthorDate: Thu Oct 22 22:50:52 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 23 16:22:52 2009 +0100 + + Add GConverterInputStream + + Read and convert data from an input stream + + gio/Makefile.am | 2 + + gio/gconverterinputstream.c | 544 + ++++++++++++++++++++++++++++++++++++++++++++ + gio/gconverterinputstream.h | 80 +++++++ + gio/gio.h | 1 + + gio/giotypes.h | 1 + + 5 files changed, 628 insertions(+) + +commit 134e9bd84f6311e8b18fe69ce8df030561aa12d9 +Author: Alexander Larsson +AuthorDate: Mon Nov 23 16:19:08 2009 +0100 +Commit: Alexander Larsson +CommitDate: Mon Nov 23 16:22:52 2009 +0100 + + Add fallback mode to GCharsetConverter + + gio/gcharsetconverter.c | 75 + ++++++++++++++++++++++++++++++++++++++++++++++--- + gio/gcharsetconverter.h | 3 ++ + 2 files changed, 74 insertions(+), 4 deletions(-) + +commit 4b8382823e0f03b59d07473f708f1892dcd743dc +Author: Alexander Larsson +AuthorDate: Wed Oct 21 21:25:36 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 23 16:22:52 2009 +0100 + + Add GCharsetConverter + + gio/Makefile.am | 2 + + gio/gcharsetconverter.c | 373 + ++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gcharsetconverter.h | 52 +++++++ + gio/gio.h | 1 + + gio/giotypes.h | 1 + + 5 files changed, 429 insertions(+) + +commit 0d86b25f91aeff168474280f4f5e03df779afc6d +Author: Alexander Larsson +AuthorDate: Wed Nov 18 13:14:13 2009 +0100 +Commit: Alexander Larsson +CommitDate: Mon Nov 23 16:22:52 2009 +0100 + + Add GConverter interface + + This is an interface for stateful conversions of data. Its a generic + interface suitable for things like IConv, compression, decompression, + and regexp replacement. + + gio/Makefile.am | 2 + + gio/gconverter.c | 234 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gconverter.h | 94 ++++++++++++++++++++++ + gio/gio.h | 1 + + gio/gioenums.h | 34 ++++++++ + gio/giotypes.h | 1 + + 6 files changed, 366 insertions(+) + +commit 110133135dabfb2ac829abe7bf84d95baf92a61a +Author: Alexander Larsson +AuthorDate: Tue Oct 20 14:12:31 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Nov 23 16:22:52 2009 +0100 + + Add G_IO_ERROR_PARTIAL_INPUT and G_IO_ERROR_INVALID_DATA errors + + These are needed for GConverter + + gio/gioenums.h | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit 04d83e8e503a07e7b4279227c8f992ddf7c6ef4e +Author: Cody Russell +AuthorDate: Mon Nov 23 07:48:14 2009 -0600 +Commit: Cody Russell +CommitDate: Mon Nov 23 07:48:14 2009 -0600 + + gtester should fail even if -k is passed + + glib/gtester.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 874efeb8ea7b822cfba254421e76b331815782cb +Author: Vladimir Melo +AuthorDate: Mon Nov 23 08:36:06 2009 -0500 +Commit: Og B. Maciel +CommitDate: Mon Nov 23 08:36:06 2009 -0500 + + Updated Brazilian Portuguese translation. + + po/pt_BR.po | 928 + ++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 469 insertions(+), 459 deletions(-) + +commit 56eee6759ba04ad970d2bb356a27de13d79ea575 +Author: Ryan Lortie +AuthorDate: Fri Nov 20 14:40:58 2009 -0600 +Commit: Ryan Lortie +CommitDate: Fri Nov 20 14:42:38 2009 -0600 + + Remove #include "glocalfile.h" from GFile + + It might give somebody the wrong idea. =) + + gio/gfile.c | 1 - + 1 file changed, 1 deletion(-) + +commit ec79146572aece95c7bc032b486e6a57015ee6e4 +Author: Benjamin Otte +AuthorDate: Fri Nov 20 16:47:09 2009 +0100 +Commit: Benjamin Otte +CommitDate: Fri Nov 20 16:49:47 2009 +0100 + + Fix thread-safety + + The n_children variable can be written when locked, while the n_supers + variable is read at any time. As they both share the same bytes, + accessing them is not threadsafe. + This patch puts them into different bytes. + + Thanks to Xan Lopez and valgrind for noticing this. + + gobject/gtype.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit ba2b2bbca2b747d704ae62e99fc7d216f82111ff +Author: Juan A. Suarez Romero +AuthorDate: Fri Nov 20 16:46:41 2009 +0100 +Commit: Benjamin Otte +CommitDate: Fri Nov 20 16:49:47 2009 +0100 + + priv variable should only be used in win32 code + + gio/gcancellable.c | 44 +++++++++++++++++++++++--------------------- + 1 file changed, 23 insertions(+), 21 deletions(-) + +commit 8e2fa44953f1f92afdb198bb3ff8b98bb4cf6699 +Author: Ryan Lortie +AuthorDate: Thu Nov 19 10:19:01 2009 -0600 +Commit: Ryan Lortie +CommitDate: Thu Nov 19 10:19:01 2009 -0600 + + g_socket_listener_add_any_inet_port is Since 2.24 + + accidentally committed an old patch without updating. + + gio/gsocketlistener.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c005878ae7e429dd51f6be3d9a22b430c8155221 +Author: Ryan Lortie +AuthorDate: Mon Jun 15 14:07:13 2009 -0400 +Commit: Ryan Lortie +CommitDate: Thu Nov 19 10:04:27 2009 -0600 + + Bug 585566 - GSocketListener API issues + + Add a new function, g_socket_listener_add_any_inet_port(), to + deal with + the desired use case. + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 1 + + gio/gsocketlistener.c | 225 + ++++++++++++++++++++++++++++++++++++ + gio/gsocketlistener.h | 3 + + 4 files changed, 230 insertions(+) + +commit 77baa70eda24be0049d09123e4b81b1f03817110 +Author: Christian Dywan +AuthorDate: Thu Nov 19 09:58:43 2009 -0600 +Commit: Ryan Lortie +CommitDate: Thu Nov 19 10:00:38 2009 -0600 + + Bug 600550 - (...) doesn't treat arguments properly + + Add some additional checking to g_app_info_create_from_commandline to + make it handle strange inputs more elegantly. + + gio/gdesktopappinfo.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 3257e8ebe470fce6b2eb935589f18d509336a227 +Author: Vincent Untz +AuthorDate: Wed Nov 18 16:37:47 2009 -0600 +Commit: Ryan Lortie +CommitDate: Thu Nov 19 09:47:46 2009 -0600 + + Bug 600620 - Add g_app_info_get_display_name() + + This new API can make use of X-GNOME-FullName in .desktop files, + to have + the full name of applications. + + gio/gappinfo.c | 27 +++++++++++++++++++++++++++ + gio/gappinfo.h | 2 ++ + gio/gdesktopappinfo.c | 20 ++++++++++++++++++++ + 3 files changed, 49 insertions(+) + +commit 9681d7e75f2d1296a890bfa64b3478ea7025df62 +Author: Ryan Lortie +AuthorDate: Wed Nov 18 18:43:30 2009 -0600 +Commit: Ryan Lortie +CommitDate: Thu Nov 19 09:45:53 2009 -0600 + + Bug 595138 - GFile not robust with invalid input + + Improve handling of g_file_query_default_handler() when called on an + invalid GFile (ie: one created with an invalid URI). + + gio/gfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5d97ea298672880ee80964c07b9cf31d604c3df9 +Author: Ryan Lortie +AuthorDate: Tue Nov 17 20:41:48 2009 -0600 +Commit: Ryan Lortie +CommitDate: Tue Nov 17 20:41:48 2009 -0600 + + Bug 600141 - Add -pthread to gmodule pkg-config + + It is not generally permissible to dlopen() libpthread into a program + that is not already linked with threading support. The most + common case + of this happening is when GIO opens Gvfs (which includes DBus, which + links against libpthread). + + Since gmodule is the way that most users cause this problem for + themselves and since the easiest workaround is to link the program + with + -pthread, the best fix for the issue is to add -pthread to the gmodule + pkg-config. + + gmodule-2.0-uninstalled.pc.in | 4 ++-- + gmodule-2.0.pc.in | 4 ++-- + gmodule-export-2.0.pc.in | 4 ++-- + gmodule-no-export-2.0-uninstalled.pc.in | 4 ++-- + gmodule-no-export-2.0.pc.in | 4 ++-- + 5 files changed, 10 insertions(+), 10 deletions(-) + +commit 983a717fa6431d67ce9d765c1714f77ecb0b02fa +Author: Ryan Lortie +AuthorDate: Thu Nov 12 01:37:27 2009 -0500 +Commit: Ryan Lortie +CommitDate: Tue Nov 17 20:27:38 2009 -0600 + + Bug 535159 - g_file_has_parent + + - add a g_file_has_parent() function as a wrapper around + g_file_get_parent() + + docs/reference/gio/gio-sections.txt | 1 + + gio/gfile.c | 43 + +++++++++++++++++++++++++++++++++++++ + gio/gfile.h | 2 ++ + gio/gio.symbols | 1 + + 4 files changed, 47 insertions(+) + +commit ba0a6e1911ee581f1d651a7a05bab789c760ef3c +Author: Javier Jardón +AuthorDate: Mon Nov 16 00:29:39 2009 +0100 +Commit: Javier Jardón +CommitDate: Tue Nov 17 20:44:16 2009 +0100 + + Fix compilation warning: Initialize the variable + + gio/tests/unix-streams.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c6243026ed61698a797ce1b731760e4f0497ad97 +Author: Javier Jardón +AuthorDate: Mon Nov 16 00:33:07 2009 +0100 +Commit: Javier Jardón +CommitDate: Tue Nov 17 20:44:10 2009 +0100 + + Fix compilation warning: Remove unused function + + gio/xdgmime/xdgmimecache.c | 1 - + 1 file changed, 1 deletion(-) + +commit 00a331f970dfd49e1f9dc5ed3b42a9dd41d530ce +Author: Javier Jardón +AuthorDate: Mon Nov 16 00:22:03 2009 +0100 +Commit: Javier Jardón +CommitDate: Tue Nov 17 20:44:01 2009 +0100 + + Fix compilation warning: cast to (GCompareFunc) + + gio/gdesktopappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 18b3ff33afad10dfac7dfdf3025313490f8313cc +Author: Javier Jardón +AuthorDate: Sun Nov 15 05:51:45 2009 +0100 +Commit: Javier Jardón +CommitDate: Mon Nov 16 00:09:16 2009 +0100 + + Don't mention g_utf32_to_utf8() and g_utf8_to_utf32() + + These functions doesn't exist. + Suggest to use g_ucs4_to_utf8/g_utf8_to_ucs4 to produce the UTF-8 + representation of a gunichar + + This fix bug: https://bugzilla.gnome.org/show_bug.cgi?id=601874 + + docs/reference/glib/tmpl/unicode.sgml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 96bf69d4cc4077a986c9b2c398356e9d543d88bd +Author: Javier Jardón +AuthorDate: Sun Nov 15 23:58:23 2009 +0100 +Commit: Javier Jardón +CommitDate: Sun Nov 15 23:58:23 2009 +0100 + + Suggest the use of G_STRFUNC + + Suggest G_STRFUNC in the documentation of the deprecated functions + G_GNUC_PRETTY_FUNCTION and G_GNUC_FUNCTION + + docs/reference/glib/tmpl/macros_misc.sgml | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 6b7b7a76020e76370e416d794eceb99937b9ed33 +Author: Ryan Lortie +AuthorDate: Wed Nov 11 23:48:06 2009 -0500 +Commit: Ryan Lortie +CommitDate: Wed Nov 11 23:54:18 2009 -0500 + + Bug 587300 - g_cancellable_disconnect deadlock + + add documentation to clarify that a deadlock is the expected case for + calling this function from a signal handler + + gio/gcancellable.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +commit 3d09b8e09c07ebb3bae4074f946c5da8d643d247 +Author: Ryan Lortie +AuthorDate: Wed Nov 11 23:21:48 2009 -0500 +Commit: Ryan Lortie +CommitDate: Wed Nov 11 23:21:48 2009 -0500 + + Bug 591216 - Warning building resolver.o + + check result of write system call to quiet compiler warning + + gio/tests/resolver.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 78e8b39b49ce47a80e70319ffaf548cda177a746 +Author: Ryan Lortie +AuthorDate: Wed Nov 11 22:20:11 2009 -0500 +Commit: Ryan Lortie +CommitDate: Wed Nov 11 22:22:41 2009 -0500 + + GSocket.receive_message: fix bogus allocation math + + gio/gsocket.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 409cdb8d13225125c12f7b56293b6dd397086c29 +Author: Kjartan Maraas +AuthorDate: Wed Nov 11 20:09:53 2009 +0100 +Commit: Kjartan Maraas +CommitDate: Wed Nov 11 20:09:53 2009 +0100 + + Updated Norwegian bokmål translation. + + po/nb.po | 929 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 466 insertions(+), 463 deletions(-) + +commit e5b20a3364b831a19b6cf99f67f803da3a6b6e6b +Author: Tor Lillqvist +AuthorDate: Tue Nov 10 14:19:59 2009 +0200 +Commit: Tor Lillqvist +CommitDate: Tue Nov 10 14:22:29 2009 +0200 + + Include all of share/gtk-doc/html to get also the gio docs + + Also add -D switches to not pointlessly include entries for + directories + in the zip files. + + glib-zip.in | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit 6e86c9a6aa977331c6bd47b726aaf34398a5ad37 +Author: Tor Lillqvist +AuthorDate: Tue Nov 10 01:37:13 2009 +0200 +Commit: Tor Lillqvist +CommitDate: Tue Nov 10 01:40:01 2009 +0200 + + Avoid gcc warning about redeclaration of atexit() on MinGW + + glib/gutils.h | 2 ++ + 1 file changed, 2 insertions(+) + +commit a9c4320e813aa80343ed5826c51be456a5683f5f +Author: Daniel Nylander +AuthorDate: Sun Nov 8 22:04:51 2009 +0100 +Commit: Daniel Nylander +CommitDate: Sun Nov 8 22:04:51 2009 +0100 + + Updated Swedish translation + + po/sv.po | 1307 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 668 insertions(+), 639 deletions(-) + +commit e9915ee7bdde49a7c6c2c0592b96f60cf31b8383 +Author: Fran Diéguez +AuthorDate: Sat Nov 7 14:40:58 2009 +0100 +Commit: Ignacio Casal Quinteiro +CommitDate: Sat Nov 7 14:40:58 2009 +0100 + + Updated Galician Translation + + po/gl.po | 918 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 465 insertions(+), 453 deletions(-) + +commit ee116a6b1c60343aafd5b10e11798adbeed0d555 +Author: Jorge González +AuthorDate: Fri Nov 6 21:51:28 2009 +0100 +Commit: Jorge González +CommitDate: Fri Nov 6 21:51:28 2009 +0100 + + Updated Spanish translation + + po/es.po | 927 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 467 insertions(+), 460 deletions(-) + +commit 6c315c77895e7e64c5dfb08cc223ff442f924e00 +Author: Ivar Smolin +AuthorDate: Fri Nov 6 18:15:29 2009 +0200 +Commit: Priit Laes +CommitDate: Fri Nov 6 18:15:29 2009 +0200 + + Updating Estonian translation + + po/et.po | 21 ++++++++------------- + 1 file changed, 8 insertions(+), 13 deletions(-) + +commit fc0b5d735ed06fd09f6f6169965ea427d43c241b +Author: Matej Urbančič +AuthorDate: Fri Nov 6 14:58:44 2009 +0100 +Commit: Matej Urbančič +CommitDate: Fri Nov 6 14:58:44 2009 +0100 + + Updated Slovenian translation + + po/sl.po | 1316 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 686 insertions(+), 630 deletions(-) + +commit ef6117f78d036b956d3fe91f6a3748f64499f4c1 +Author: Stéphane Démurget +AuthorDate: Sun Oct 25 11:14:36 2009 +0100 +Commit: Alexander Larsson +CommitDate: Thu Nov 5 14:31:14 2009 +0100 + + Bug 324930 - Nicer message for EPERM on symlink + + Introduced a more precise error message for EPERM when symlinking to + a local filesystem. + + EPERM on symlink means symlinking is not supported by the underlying + fs so it is not the general meaning of EPERM which roughly translates + to 'Operation not permitted'. + + gio/glocalfile.c | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 3c57a6c7ccb38efb8fb3ecf12e9f66f113ffde19 +Author: Tor Lillqvist +AuthorDate: Wed Nov 4 23:59:18 2009 +0200 +Commit: Tor Lillqvist +CommitDate: Thu Nov 5 00:04:33 2009 +0200 + + Don't call WSAEventSelect() on -1 + + If g_io_win32_sock_close() has been called on a socket channel, don't + later in g_io_win32_free() call WSAEventSelect() on its fd which has + been set to -1. + + glib/giowin32.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 0d6b1ab42a6a9026743f197f03264afdbac7fb7b +Author: Paolo Bonzini +AuthorDate: Tue Nov 3 18:38:58 2009 +0200 +Commit: Tor Lillqvist +CommitDate: Tue Nov 3 18:43:30 2009 +0200 + + Don't run system("touch conf.glibtest)" in the AM_PATH_GLIB_2_0 macro + + Just use the C library instead to create the file. Helps building + using Wine. Not that I think we want to endorse that, but accepting + this minimal patch doesn't hurt. From bug #590016. + + Signed-off-by: Tor Lillqvist + + m4macros/glib-2.0.m4 | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit f6276add355388738f856201c400d1c43cedcaf2 +Author: Tor Lillqvist +AuthorDate: Tue Nov 3 18:21:19 2009 +0200 +Commit: Tor Lillqvist +CommitDate: Tue Nov 3 18:21:19 2009 +0200 + + Improve descriptive comment text + + glibconfig.h.win32.in | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit 9c292a831fac91dfe17158e3379d6ef4ad351c76 +Author: Hib Eris +AuthorDate: Tue Nov 3 15:06:29 2009 +0200 +Commit: Tor Lillqvist +CommitDate: Tue Nov 3 15:06:29 2009 +0200 + + Fix check for C++ compiler when cross-compiling + + Use AC_CHECK_TOOLS instead of AC_CHECK_PROGS. Patch from bug #577711. + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit b64ee1f02098d229ff16df9dfebdc3e3f3d76687 +Author: Carlo Bramini +AuthorDate: Tue Nov 3 14:26:25 2009 +0200 +Commit: Tor Lillqvist +CommitDate: Tue Nov 3 14:30:16 2009 +0200 + + Make g_file_test() behave on Windows more like as on POSIX + + Patch from bug #572252. + + glib/gfileutils.c | 19 +++++++++++++------ + 1 file changed, 13 insertions(+), 6 deletions(-) + +commit 22d026d34492b27a531bc60e6edc10eec1aa61be +Author: Thomas Thurman +AuthorDate: Sat Oct 31 02:49:31 2009 -0400 +Commit: Thomas Thurman +CommitDate: Sat Oct 31 02:49:31 2009 -0400 + + Shavian translation + + po/LINGUAS | 1 + + po/en@shaw.po | 1968 + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 1969 insertions(+) + +commit 4288ad76922da01d1f452c6c257e97008b16aaf0 +Author: Benjamin Otte +AuthorDate: Wed Oct 28 19:18:20 2009 +0100 +Commit: Benjamin Otte +CommitDate: Wed Oct 28 19:26:17 2009 +0100 + + Properly nul-terminate return values from g_convert() + + The patch ensures that multibyte character sets are properly + nul-terminated. This is an issue because the documentation claims to + return a "nul-terminated" string and users of the API assume that + means + a proper nul-termination in the resulting character set. + + I looked at Pidgin and GStreamer code and found at least 3 cases where + this was happening. + + This patch also reverts the documentation change from + 5a633f82dbbce067c56fba0ee372fd341b76368d as that is now no longer + necessary. + + glib/gconvert.c | 44 ++++++++++++++++++++------------------------ + 1 file changed, 20 insertions(+), 24 deletions(-) + +commit 5a633f82dbbce067c56fba0ee372fd341b76368d +Author: Benjamin Otte +AuthorDate: Tue Oct 27 21:07:13 2009 +0100 +Commit: Benjamin Otte +CommitDate: Tue Oct 27 21:31:25 2009 +0100 + + Clarify documentation about g_convert() nul-terminated returns + + THere is effectively no nul-termination for multibyte characters. + + glib/gconvert.c | 22 ++++++++++++++++------ + 1 file changed, 16 insertions(+), 6 deletions(-) + +commit f3fbf37dd899de5d7bd61d86bed8aada479f564a +Author: Matthias Clasen +AuthorDate: Sun Oct 25 02:56:13 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 25 02:56:13 2009 -0400 + + Avoid a warning + + gio/gfile.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +commit e63262d49d40a36060613fb1d0ed468ca5dddc19 +Author: Matthias Clasen +AuthorDate: Sun Oct 25 02:55:46 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun Oct 25 02:55:46 2009 -0400 + + Don't give up too early when collecting mime types + + Since returning exactly one match has special significance, don't + give up matching before we've found at least 2 types. Also, make + sure that we don't return the same mime type more than once. + Bug 541236. + + gio/xdgmime/xdgmimecache.c | 67 + +++++++++++++++++++++++++++++++++------------- + gio/xdgmime/xdgmimeglob.c | 43 +++++++++++++++++++++++++---- + 2 files changed, 87 insertions(+), 23 deletions(-) + +commit 3dab24828edd8ebfd6d6c8bb20c181fc0d5650a1 +Author: Sven Herzberg +AuthorDate: Fri Oct 23 14:49:38 2009 +0200 +Commit: Sven Herzberg +CommitDate: Fri Oct 23 16:23:46 2009 +0200 + + make sure g_set_prgname() gets called only once + + * glib/gutils.c: copy the call-once statement from + g_set_application_name(); + Fixes Bug #563627: g_get_prgname() threadsafety + + glib/gutils.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +commit d105f431b0b684ed47e1c23ca283e38e522ce545 +Author: Tor Lillqvist +AuthorDate: Fri Oct 23 00:46:50 2009 +0300 +Commit: Tor Lillqvist +CommitDate: Fri Oct 23 00:46:50 2009 +0300 + + Fix GWin32DirectoryMonitor + + GWin32DirectoryMonitor was quite broken, but nobody had apparently + noticed, or at least not filed any bug. Only now with a bleeding edge + GTK+ file chooser does the code get exercised in common programs like + gtk-demo or GIMP, apparently. Bug #598899. + + gio/win32/gwin32directorymonitor.c | 67 + ++++++++++++++++++++++++++++---------- + 1 file changed, 50 insertions(+), 17 deletions(-) + +commit 8eebc189440693922e23298a761189cfbe71f796 +Author: Cody Russell +AuthorDate: Wed Oct 14 21:24:30 2009 -0500 +Commit: Cody Russell +CommitDate: Wed Oct 14 21:24:30 2009 -0500 + + GTypeModule derived class unref does not unload plugin + + Correctly unref the pclass. Patch by Chris Wilson and Tim Janik. + + https://bugzilla.gnome.org/show_bug.cgi?id=350200 + + gobject/gtype.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit e95a3b0576fc9426441956e4053791e197d4f421 +Author: Tomas Bzatek +AuthorDate: Tue Oct 13 16:21:42 2009 +0200 +Commit: Tomas Bzatek +CommitDate: Tue Oct 13 16:21:42 2009 +0200 + + Documentation fixes + + docs/reference/gio/gio-sections.txt | 1 + + gio/gfileattribute.c | 1 + + gio/gfileinfo.h | 5 +++-- + 3 files changed, 5 insertions(+), 2 deletions(-) + +commit 443674faaa0c6c79492732fd56360faeca06e9ab +Author: Tor Lillqvist +AuthorDate: Mon Oct 12 00:18:48 2009 +0300 +Commit: Tor Lillqvist +CommitDate: Mon Oct 12 00:20:28 2009 +0300 + + Construct the gio module directory pathname at run-time on Windows + + gio/giomodule.c | 33 +++++++++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +commit 2a3710872f8bfc1c95dc8044c92c9ce020adad40 +Author: Alexander Larsson +AuthorDate: Thu Oct 8 11:59:23 2009 +0200 +Commit: Alexander Larsson +CommitDate: Thu Oct 8 12:02:52 2009 +0200 + + xdgmime: sort glob hits with larger weight first + + Higher weight is more important, so return these first meaning + they will be used as the default. + + gio/xdgmime/xdgmimecache.c | 2 +- + gio/xdgmime/xdgmimeglob.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit d9b87676fa8f0340a9baa2001ae912192e12d4c6 +Author: Ivar Smolin +AuthorDate: Thu Oct 8 09:56:25 2009 +0300 +Commit: Priit Laes +CommitDate: Thu Oct 8 09:56:25 2009 +0300 + + Updating Estonian translation + + po/et.po | 477 + ++------------------------------------------------------------- + 1 file changed, 11 insertions(+), 466 deletions(-) + +commit 3daaa459e332c62972c8792453e0a841157ecf11 +Author: Matthias Clasen +AuthorDate: Wed Oct 7 10:31:19 2009 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 7 10:31:19 2009 -0400 + + Bump version + + configure.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f814174371cbc61404012720c49485bc4d66feba +Author: Matthias Clasen +AuthorDate: Wed Oct 7 10:29:32 2009 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 7 10:29:32 2009 -0400 + + 2.22.2 + + NEWS | 6 +- + build/win32/Makefile.am | 9 +- + po/am.po | 2 +- + po/ar.po | 2 +- + po/as.po | 2 +- + po/az.po | 2 +- + po/be.po | 2 +- + po/be@latin.po | 2 +- + po/bg.po | 2 +- + po/bn.po | 2 +- + po/bn_IN.po | 2 +- + po/bs.po | 2 +- + po/ca.po | 2 +- + po/ca@valencia.po | 2 +- + po/cs.po | 2 +- + po/cy.po | 2 +- + po/da.po | 2 +- + po/de.po | 2 +- + po/dz.po | 2 +- + po/el.po | 2 +- + po/en_CA.po | 2 +- + po/en_GB.po | 2 +- + po/eo.po | 2 +- + po/es.po | 2 +- + po/et.po | 2 +- + po/eu.po | 2 +- + po/fa.po | 2 +- + po/fi.po | 2 +- + po/fr.po | 2 +- + po/ga.po | 2 +- + po/gl.po | 2 +- + po/gu.po | 2 +- + po/he.po | 2 +- + po/hi.po | 2 +- + po/hr.po | 2 +- + po/hu.po | 2 +- + po/hy.po | 2 +- + po/id.po | 2 +- + po/is.po | 2 +- + po/it.po | 2 +- + po/ja.po | 2 +- + po/ka.po | 2 +- + po/kn.po | 2 +- + po/ko.po | 2 +- + po/ku.po | 2 +- + po/lt.po | 2 +- + po/lv.po | 2 +- + po/mai.po | 2 +- + po/mg.po | 2 +- + po/mk.po | 2 +- + po/ml.po | 2 +- + po/mn.po | 2 +- + po/mr.po | 2 +- + po/ms.po | 2 +- + po/nb.po | 2 +- + po/ne.po | 2 +- + po/nl.po | 2 +- + po/nn.po | 2 +- + po/oc.po | 2 +- + po/or.po | 2 +- + po/pa.po | 2 +- + po/pl.po | 2 +- + po/ps.po | 2 +- + po/pt.po | 2 +- + po/pt_BR.po | 2 +- + po/ro.po | 2 +- + po/ru.po | 909 + ++++++++++++++++++++++++------------------------ + po/rw.po | 2 +- + po/si.po | 2 +- + po/sk.po | 2 +- + po/sl.po | 2 +- + po/sq.po | 2 +- + po/sr.po | 6 +- + po/sr@ije.po | 2 +- + po/sr@latin.po | 17 +- + po/sv.po | 2 +- + po/ta.po | 2 +- + po/te.po | 2 +- + po/th.po | 2 +- + po/tl.po | 2 +- + po/tr.po | 2 +- + po/tt.po | 2 +- + po/uk.po | 2 +- + po/vi.po | 2 +- + po/wa.po | 2 +- + po/xh.po | 2 +- + po/yi.po | 2 +- + po/zh_CN.po | 2 +- + po/zh_HK.po | 2 +- + po/zh_TW.po | 2 +- + 90 files changed, 553 insertions(+), 564 deletions(-) + +commit 3d76112aed79b590b79899e46610ce7b2ecffc53 +Author: Matthias Clasen +AuthorDate: Wed Oct 7 09:28:19 2009 -0400 +Commit: Matthias Clasen +CommitDate: Wed Oct 7 09:28:19 2009 -0400 + + Updates + + NEWS | 19 ++++++++++++++++++- + 1 file changed, 18 insertions(+), 1 deletion(-) + +commit 855deaa5780bfef3f6e8b3a41d00d6c7e40ca406 +Author: Cody Russell +AuthorDate: Tue Oct 6 12:27:12 2009 -0400 +Commit: Cody Russell +CommitDate: Tue Oct 6 12:27:12 2009 -0400 + + g_object_unref racy condition can lead to crash + + Store whether the object has a toggleref before decrementing the + refcount to prevent race condition when two threads simultaneously + try to unref an object with a refcount of 2. + Patch by Antoine Tremblay. + + https://bugzilla.gnome.org/show_bug.cgi?id=551706 + + gobject/gobject.c | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +commit afa0db59df9b28d9ae8da9539f629165cc8490f3 +Author: Leonid Kanter +AuthorDate: Tue Oct 6 11:52:48 2009 +0300 +Commit: Leonid Kanter +CommitDate: Tue Oct 6 11:52:48 2009 +0300 + + Updated Russian translation by + + po/ru.po | 1072 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 533 insertions(+), 539 deletions(-) + +commit 68b1ca04433846b68141a72029ed67ae117a7e94 +Author: Edward Hervey +AuthorDate: Sat Oct 3 12:37:36 2009 +0200 +Commit: Edward Hervey +CommitDate: Sat Oct 3 16:17:17 2009 +0200 + + gobject/gtype.h: Fix _G_TYPE_CVH macro. Fixes #597194 + + If __val doesn't exist, we shouldn't do any other checks. + + gobject/gtype.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1937765f9f9052a870cfd924b18e08aa8901a8f2 +Author: Alexander Larsson +AuthorDate: Wed Aug 19 17:24:16 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri Oct 2 21:02:48 2009 +0200 + + Add fast path for construction with no params + + This avoids a bunch of code and makes construction of simple objects + faster. + + Object construction performance improvement: + Non-Threaded Threaded + Simple: 14% 5% + Complex: -1.1% -2.2% + + Other tests stable. + + https://bugzilla.gnome.org/show_bug.cgi?id=557100 + + gobject/gobject.c | 14 +++++++++++++- + 1 file changed, 13 insertions(+), 1 deletion(-) + +commit ffc625ec9bcc4b2d34921940c07b28d244f2257a +Author: Alexander Larsson +AuthorDate: Wed Aug 19 17:22:32 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri Oct 2 21:02:48 2009 +0200 + + Don't freeze/thaw notification during construction if no properties + + If the class has no properties there could be no notification anyway. + This is an important optimization for construction of simple objects. + + Object construction performance improvement: + Non-Threaded Threaded + Simple: 84% 91% + Complex: -1.4% -0.6% + + Other tests stable. + + https://bugzilla.gnome.org/show_bug.cgi?id=557100 + + gobject/gobject.c | 37 +++++++++++++++++++++++++------------ + 1 file changed, 25 insertions(+), 12 deletions(-) + +commit 302d13a757c164346883841ce040208906894b71 +Author: Alexander Larsson +AuthorDate: Fri Oct 2 19:27:48 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri Oct 2 21:02:48 2009 +0200 + + Add a check that no properties are added after a class is derived + + We can't support that, because that would cause the + CLASS_HAS_PROPS_FLAG + class flag to not be correct. + + gobject/gobject.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +commit 39a1fe5782c15873ab18b8d3d76adfcbd70dc6dd +Author: Alexander Larsson +AuthorDate: Wed Aug 19 17:21:18 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri Oct 2 21:02:48 2009 +0200 + + Add GObjectClass flag CLASS_HAS_PROPS_FLAG + + This is set if a class or any of its parents have installed any + properties. + + https://bugzilla.gnome.org/show_bug.cgi?id=557100 + + gobject/gobject.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 301d52d858b8e7d4b804b893dc2f740aaa0d5aa5 +Author: Alexander Larsson +AuthorDate: Wed Aug 19 17:17:41 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri Oct 2 21:02:48 2009 +0200 + + Add flags member for GObjectClass + + https://bugzilla.gnome.org/show_bug.cgi?id=557100 + + gobject/gobject.h | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit af017accc55aff3d6f28df0a41724e93fca71ff4 +Author: Alexander Larsson +AuthorDate: Wed Aug 19 15:48:19 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri Oct 2 21:02:48 2009 +0200 + + Allocate GObjectNotifyQueue with g_slice instead of abusing g_list + + This is both cleaner and faster (it avoids function calls and + zeroing the memory twice). + + Object construction performance improvement: + Non-Threaded Threaded + Simple: 11% 1.3% + Complex: 8% 6% + + Other tests stable. + + https://bugzilla.gnome.org/show_bug.cgi?id=557100 + + gobject/gobjectnotifyqueue.c | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +commit f4d9789fcfc4c9be497414d6c65476adb9d20236 +Author: Alexander Larsson +AuthorDate: Wed Sep 9 17:08:57 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri Oct 2 21:02:48 2009 +0200 + + Add gobject performance tests for threaded code + + This measures how much things like lock contention affects the gobject + code. + + tests/gobject/Makefile.am | 2 + + tests/gobject/performance-threaded.c | 381 + +++++++++++++++++++++++++++++++++++ + 2 files changed, 383 insertions(+) + +commit b1f94af095bde6a9a695ce7b19425a62288ee0ee +Author: Alexander Larsson +AuthorDate: Thu Aug 20 14:34:51 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri Oct 2 21:02:23 2009 +0200 + + Add performance tests for GObject primitives + + These are basic performance test for a couple of basic gobject + primitives: + + * construction of simple objects. Simple is a bare gobject derived + class with no properties, signals or interfaces. + + * construction of complex objects. Complex is a gobject subclass + with construct properties, normal properties, signals, and + implements an interface. + + * run-time type check of complex objects + + * signal emissions + + Lots of care is taken to try to make the results reproducible. Each + test is run for multible "rounds", where we try to make each round be + "not too short" in order to be significant wrt timer accuracy, but + also "not to long" to make the probability of some other random event + happening on the system (interrupts, other process scheduled, etc) + during the round less likely. + The current target round time is 4 msecs, which was picked without + rigour, but seems small wrt e.g. scheduler time. + + For each test we then run the calculated round size for 60 seconds, + and then report the performance based on the minimal time of one + round. The model here is that any random stuff that happens during a + round can only slow it down, there is nothing that can make it go + faster, so the minimal time is the best estimate of how fast one round + goes. + + The result is not ideal, even on a "idle" system the results vary + from round to round, but the variation seems to be less than 1%. + So, any performance difference reported by this test over 1% is + probably statistically significant. + + Additionally the tests can be run with or without threads being + initialized. The script tests/gobject/run-performance.sh makes + it easy to produce a performance report for the current checkout. + + https://bugzilla.gnome.org/show_bug.cgi?id=557100 + + tests/gobject/Makefile.am | 2 + + tests/gobject/performance.c | 735 + +++++++++++++++++++++++++++++++++++++++ + tests/gobject/run-performance.sh | 7 + + 3 files changed, 744 insertions(+) + +commit 07ad638adff596ccd4bc2ec003be692059210357 +Author: Alexander Larsson +AuthorDate: Fri Oct 2 12:54:18 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri Oct 2 12:55:54 2009 +0200 + + remove xdgmime test + + This is getting diverged from the xdgmime copy and we don't need + it here. + + gio/xdgmime/Makefile.am | 5 -- + gio/xdgmime/test-mime.c | 196 + ------------------------------------------------ + 2 files changed, 201 deletions(-) + +commit c7c0bcef893ca99609b102b42be5f871b9524a92 +Author: Alexander Larsson +AuthorDate: Fri Oct 2 12:06:25 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri Oct 2 12:55:54 2009 +0200 + + xdgmime - Correct the range checks for magic matching + + gio/xdgmime/xdgmimecache.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2624e7d6c6ddc5ad93caa7ce609092b6b54cb6d2 +Author: Alexander Larsson +AuthorDate: Fri Oct 2 12:06:15 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri Oct 2 12:55:54 2009 +0200 + + Remove unnecessary includes + + gio/xdgmime/xdgmimecache.c | 1 - + gio/xdgmime/xdgmimeglob.c | 1 - + 2 files changed, 2 deletions(-) + +commit e1643fd76daf66ccffd9e6818e4f4ec8272e2a51 +Author: Alexander Larsson +AuthorDate: Fri Oct 2 09:49:51 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri Oct 2 12:55:54 2009 +0200 + + xdgmime - support the new case sensitive flag + + gio/xdgmime/xdgmimecache.c | 84 + +++++++++++++++++++++++++++++++++---------- + gio/xdgmime/xdgmimeglob.c | 88 + +++++++++++++++++++++++++++++++++++++--------- + 2 files changed, 136 insertions(+), 36 deletions(-) + +commit 7c27df1feeea1d6ab8b927285cecc4ac34db8b06 +Author: Alexander Larsson +AuthorDate: Fri Oct 2 09:48:35 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri Oct 2 12:55:54 2009 +0200 + + xdgmime - support cache files with minor version 2 + + gio/xdgmime/xdgmimecache.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +commit ce239a010e29c91f683dae354060f6ec6213e148 +Author: Alexander Larsson +AuthorDate: Fri Oct 2 09:46:33 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri Oct 2 12:55:54 2009 +0200 + + Read the new glob2 format with case sensitive flags + + gio/xdgmime/xdgmime.c | 4 +-- + gio/xdgmime/xdgmimeglob.c | 83 + ++++++++++++++++++++++++++++++++++------------- + gio/xdgmime/xdgmimeglob.h | 6 ++-- + 3 files changed, 66 insertions(+), 27 deletions(-) + +commit 5e4a895bb37271169cb8c055d9ce1e3efe6ca525 +Author: Tor Lillqvist +AuthorDate: Fri Oct 2 12:43:21 2009 +0300 +Commit: Tor Lillqvist +CommitDate: Fri Oct 2 12:43:21 2009 +0300 + + Drop the VS8 project files from tarballs as they are unmaintained + + build/win32/Makefile.am | 1 - + 1 file changed, 1 deletion(-) + +commit e5734fb87563181ee9f1f2827cb49d81e8ea28a7 +Author: Pierre A. Joye +AuthorDate: Fri Oct 2 12:34:44 2009 +0300 +Commit: Tor Lillqvist +CommitDate: Fri Oct 2 12:34:44 2009 +0300 + + Update VS9 project files to fix build + + From bug #596784 + + build/win32/vs9/gio.vcproj | 110 + ++++++++++++++++++++++++++++- + build/win32/vs9/glib.vcproj | 10 ++- + build/win32/vs9/gmodule.vcproj | 2 +- + build/win32/vs9/gobject.vcproj | 2 +- + build/win32/vs9/gspawn-win32-helper.vcproj | 2 +- + build/win32/vs9/gthread.vcproj | 2 +- + build/win32/vs9/install.vcproj | 4 +- + 7 files changed, 122 insertions(+), 10 deletions(-) + +commit e9fe53980b0ce8480c483774961b93388f3a55fe +Author: Matthias Clasen +AuthorDate: Tue Sep 29 23:06:45 2009 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 29 23:08:03 2009 -0400 + + Fix --runtime-libdir option + + For stable releases, it needs to take LT_REVISION into account, not + hardcode 0. + + gio/Makefile.am | 4 ++-- + glib/Makefile.am | 4 ++-- + gmodule/Makefile.am | 4 ++-- + gobject/Makefile.am | 4 ++-- + gthread/Makefile.am | 4 ++-- + 5 files changed, 10 insertions(+), 10 deletions(-) + +commit eeaf8c51209cbd11573adf6f6ba0d34f85920b1f +Author: Matthias Clasen +AuthorDate: Tue Sep 29 22:07:04 2009 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 29 23:08:03 2009 -0400 + + Bump version + + configure.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit fffc3d41bd0968c37fd3edddf35a555fe91151d3 +Author: Matthias Clasen +AuthorDate: Tue Sep 29 22:05:27 2009 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 29 23:08:03 2009 -0400 + + 2.22.1 + + po/am.po | 58 ++-- + po/ar.po | 61 ++-- + po/as.po | 61 ++-- + po/az.po | 58 ++-- + po/be.po | 59 ++-- + po/be@latin.po | 61 ++-- + po/bg.po | 61 ++-- + po/bn.po | 932 + +++++++++++++++++++++++++++-------------------------- + po/bn_IN.po | 61 ++-- + po/bs.po | 58 ++-- + po/ca.po | 61 ++-- + po/ca@valencia.po | 61 ++-- + po/cs.po | 61 ++-- + po/cy.po | 59 ++-- + po/da.po | 61 ++-- + po/de.po | 61 ++-- + po/dz.po | 59 ++-- + po/el.po | 61 ++-- + po/en_CA.po | 61 ++-- + po/en_GB.po | 61 ++-- + po/eo.po | 58 ++-- + po/es.po | 61 ++-- + po/et.po | 61 ++-- + po/eu.po | 61 ++-- + po/fa.po | 59 ++-- + po/fi.po | 61 ++-- + po/fr.po | 61 ++-- + po/ga.po | 60 ++-- + po/gl.po | 61 ++-- + po/gu.po | 61 ++-- + po/he.po | 937 + +++++++++++++++++++++++++++--------------------------- + po/hi.po | 61 ++-- + po/hr.po | 58 ++-- + po/hu.po | 61 ++-- + po/hy.po | 58 ++-- + po/id.po | 59 ++-- + po/is.po | 58 ++-- + po/it.po | 61 ++-- + po/ja.po | 61 ++-- + po/ka.po | 59 ++-- + po/kn.po | 61 ++-- + po/ko.po | 61 ++-- + po/ku.po | 58 ++-- + po/lt.po | 61 ++-- + po/lv.po | 58 ++-- + po/mai.po | 61 ++-- + po/mg.po | 59 ++-- + po/mk.po | 61 ++-- + po/ml.po | 61 ++-- + po/mn.po | 59 ++-- + po/mr.po | 61 ++-- + po/ms.po | 58 ++-- + po/nb.po | 61 ++-- + po/ne.po | 59 ++-- + po/nl.po | 61 ++-- + po/nn.po | 61 ++-- + po/oc.po | 59 ++-- + po/or.po | 61 ++-- + po/pa.po | 61 ++-- + po/pl.po | 61 ++-- + po/ps.po | 61 ++-- + po/pt.po | 61 ++-- + po/pt_BR.po | 61 ++-- + po/ro.po | 61 ++-- + po/ru.po | 61 ++-- + po/rw.po | 58 ++-- + po/si.po | 59 ++-- + po/sk.po | 60 ++-- + po/sl.po | 61 ++-- + po/sq.po | 61 ++-- + po/sr.po | 61 ++-- + po/sr@ije.po | 58 ++-- + po/sr@latin.po | 61 ++-- + po/sv.po | 61 ++-- + po/ta.po | 61 ++-- + po/te.po | 61 ++-- + po/th.po | 61 ++-- + po/tl.po | 59 ++-- + po/tr.po | 61 ++-- + po/tt.po | 59 ++-- + po/uk.po | 61 ++-- + po/vi.po | 61 ++-- + po/wa.po | 58 ++-- + po/xh.po | 59 ++-- + po/yi.po | 58 ++-- + po/zh_CN.po | 61 ++-- + po/zh_HK.po | 61 ++-- + po/zh_TW.po | 61 ++-- + 88 files changed, 3278 insertions(+), 3765 deletions(-) + +commit 82c6bf7d8c6abeda6dff80e5b754411398232cc3 +Author: Matthias Clasen +AuthorDate: Tue Sep 29 21:16:53 2009 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 29 23:08:02 2009 -0400 + + Updates + + NEWS | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +commit 0c88408218050b9a239e90d6585731aeb1a1c181 +Author: Miloš Popović +AuthorDate: Wed Sep 30 03:05:31 2009 +0000 +Commit: Miloš Popović +CommitDate: Wed Sep 30 03:05:31 2009 +0000 + + Updated Serbian translation + + po/sr.po | 3 --- + po/sr@latin.po | 3 --- + 2 files changed, 6 deletions(-) + +commit b0adce8ab454c2c8e8da47019d510eac405e2452 +Author: Miloš Popović +AuthorDate: Wed Sep 30 03:04:05 2009 +0000 +Commit: Miloš Popović +CommitDate: Wed Sep 30 03:04:05 2009 +0000 + + Updated Serbian translation + + po/sr@latin.po | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +commit b38f091b99adf4326001d5218d9e52bd1df8d800 +Author: Miloš Popović +AuthorDate: Wed Sep 30 03:02:15 2009 +0000 +Commit: Miloš Popović +CommitDate: Wed Sep 30 03:02:15 2009 +0000 + + Updated Serbian translation + + po/sr.po | 279 + +++++++++++++++++++++++++++++---------------------------- + po/sr@latin.po | 273 + ++++++++++++++++++++++++++++--------------------------- + 2 files changed, 283 insertions(+), 269 deletions(-) + +commit 0c652dc66e09a358c738492e0eb857fef56c6254 +Author: Matthias Clasen +AuthorDate: Tue Sep 29 20:57:45 2009 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 29 20:57:45 2009 -0400 + + Don't mark test files for translation + + As pointed out in bug 596064 + + po/POTFILES.in | 1 - + po/POTFILES.skip | 1 + + 2 files changed, 1 insertion(+), 1 deletion(-) + +commit 6555e0171d6f9619b0f49109868fe99162ffbb72 +Author: Matthias Clasen +AuthorDate: Tue Sep 29 20:52:26 2009 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 29 20:52:26 2009 -0400 + + Fix mime_info_cache_dir_add_desktop_entries + + This function tried to avoid adding duplicate entries, but failed + due to using the wrong search function. See bug 595972. + + gio/gdesktopappinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2f93bea177a980b8ae750c07f3b269c9bea7ac25 +Author: Matthias Clasen +AuthorDate: Tue Sep 29 20:45:26 2009 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 29 20:45:26 2009 -0400 + + Avoid a C99ism + + Move a variable declaration to the beginning of the block; see + bug 596561. Also remove a pointless register declaration. + + glib/gmessages.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 442dadf3118cf3e2e9617461eb045f61483d58fc +Author: Matthias Clasen +AuthorDate: Tue Sep 29 20:39:39 2009 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 29 20:39:39 2009 -0400 + + Improve docs for g_utf16_to_utf8 + + Document that g_utf16_to_utf8 does not validate the resulting + UTF-8 string. See bug 596314. + + glib/gutf8.c | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +commit 5fdb169b72b749218766e507deab491c5f5b0d9e +Author: Matthias Clasen +AuthorDate: Tue Sep 29 20:33:39 2009 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 29 20:33:39 2009 -0400 + + Clarify docs of g_async_result_get_source_object + + It returns a new reference. Reported in bug 596748 + + gio/gasyncresult.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +commit 90e1308809805691713edf8f651e80a063f9b66f +Author: Alexander Larsson +AuthorDate: Tue Sep 29 11:25:13 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue Sep 29 11:27:15 2009 +0200 + + Avoid critical error in thread check if source is destroyed + + The source can be destroyed by the time we complete the result, and + then the g_source_get_context(current_source) call will cause + a critical error. We check for the source being destroyed and avoid + the check in that case. + + This means we miss the right-thread check in this case, but thats + merely a helper, so this is not critical. + + gio/gsimpleasyncresult.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 10c7b3a17e00283907139a19f1c6054f85a5d3a8 +Author: Jamil Ahmed +AuthorDate: Tue Sep 29 04:01:37 2009 +0700 +Commit: Jamil Ahmed +CommitDate: Tue Sep 29 04:01:37 2009 +0700 + + Updated Bengali translation + + po/bn.po | 1967 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 951 insertions(+), 1016 deletions(-) + +commit 6f1ce483eb136159f42b7dde3aa4466ba3e874c1 +Author: Alexander Larsson +AuthorDate: Mon Sep 28 15:55:44 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Sep 28 15:55:44 2009 +0200 + + Always report metadata on the path, not symlink target + + Metadata are really part of the pathname, not the target file + (as they are stored by pathname, and for many metadata like icon + position + etc make not sense using the target data). So, even if nofollow + is not specified we should not follow links for metadata. + + Ideally this should be implemented in the metadata extension in gvfs, + but the extension API does not allow this, so we do it in gio. + + See https://bugzilla.gnome.org/show_bug.cgi?id=593809 + + gio/glocalfileinfo.c | 11 +---------- + 1 file changed, 1 insertion(+), 10 deletions(-) + +commit 70027bf0928e7960c3ff78ce4a92aaad20ee899e +Author: Alexander Larsson +AuthorDate: Fri Sep 25 09:50:49 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Sep 28 15:48:17 2009 +0200 + + Fix up cast in gdb macros + + We need to actually assign the casted value somewhere. + + glib/glib.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e657dee578cc7b70c6a33fcb626e5d5aed4d82f3 +Author: Alexander Larsson +AuthorDate: Fri Sep 25 09:49:49 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Sep 28 15:48:17 2009 +0200 + + Use right soname for gdb autoloaded python files + + We need to look at LT_REVISION too to get the right filename. + This was just hardcoded to zero before which is obviously wrong. + + glib/Makefile.am | 2 +- + gobject/Makefile.am | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 660035479bc6583abc311cd4d43136fa447a95d6 +Author: Yaron Shahrabani +AuthorDate: Fri Sep 25 10:39:58 2009 +0300 +Commit: Mark Krapivner +CommitDate: Fri Sep 25 10:39:58 2009 +0300 + + Updated Hebrew translation + + po/he.po | 933 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 469 insertions(+), 464 deletions(-) + +commit cc95c60c69af5e25e9c9eae11f68ba2436a0e6b0 +Author: Matthias Clasen +AuthorDate: Thu Sep 24 10:26:46 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Sep 24 10:26:46 2009 -0400 + + Fix location of gdb macros + + These files need to be put in a location that corresponds to the + location of the libraries, so we need to take the runtime-libdir + path into account. + + configure.in | 4 +++- + glib/Makefile.am | 4 ++-- + gobject/Makefile.am | 4 ++-- + 3 files changed, 7 insertions(+), 5 deletions(-) + +commit dcee4d4a66112a357626a6e2b1f749a24e41068a +Author: Matthias Clasen +AuthorDate: Tue Sep 22 17:10:32 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Sep 24 10:25:54 2009 -0400 + + Bump version + + configure.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit cc4970cf9426ae4c929ccd859585a29fb9d243c8 +Author: Josselin Mouette +AuthorDate: Wed Sep 23 18:39:45 2009 +0200 +Commit: Josselin Mouette +CommitDate: Wed Sep 23 18:39:45 2009 +0200 + + Fall back to inotify_init if inotify_init1 does not work + + This fixes monitoring failing to work when glib is built on a 2.6.27+ + kernel but run on an older one. + + http://bugs.debian.org/544354 + https://bugzilla.gnome.org/show_bug.cgi?id=593775 + + gio/inotify/inotify-kernel.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 1a4763e6ef8e4da2a5118a00ce567e00704979cd +Author: Tor Lillqvist +AuthorDate: Wed Sep 23 09:33:48 2009 +0300 +Commit: Tor Lillqvist +CommitDate: Wed Sep 23 09:33:48 2009 +0300 + + Parse libtoolize --version more carefully + + Some recent versions of libtoolize output a version blurb like: + libtoolize (GNU libtool 1.3110 2009-07-01) 2.2.7a + Don't get confused by the numbers inside the parens. + + autogen.sh | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +commit 4c633ff0b58db039a29801d5039cc2756db90bbb +Author: Matthias Clasen +AuthorDate: Tue Sep 22 16:57:08 2009 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 22 16:57:08 2009 -0400 + + 2.22.0 + + README.in | 2 +- + docs/reference/glib/tmpl/glib-unused.sgml | 67 -- + docs/reference/glib/tmpl/macros_misc.sgml | 5 +- + docs/reference/glib/tmpl/main.sgml | 7 + + docs/reference/glib/tmpl/testing.sgml | 21 + + docs/reference/glib/tmpl/version.sgml | 68 ++ + glib/Makefile.am | 9 +- + gobject/Makefile.am | 10 +- + po/am.po | 188 ++-- + po/ar.po | 188 ++-- + po/as.po | 219 ++--- + po/az.po | 188 ++-- + po/be.po | 188 ++-- + po/be@latin.po | 188 ++-- + po/bg.po | 915 ++++++++++---------- + po/bn.po | 188 ++-- + po/bn_IN.po | 965 +++++++++++---------- + po/bs.po | 188 ++-- + po/ca.po | 925 ++++++++++---------- + po/ca@valencia.po | 188 ++-- + po/cs.po | 915 ++++++++++---------- + po/cy.po | 188 ++-- + po/da.po | 925 ++++++++++---------- + po/de.po | 188 ++-- + po/dz.po | 188 ++-- + po/el.po | 1332 + ++++++++++++++-------------- + po/en_CA.po | 188 ++-- + po/en_GB.po | 925 ++++++++++---------- + po/eo.po | 188 ++-- + po/es.po | 923 ++++++++++---------- + po/et.po | 188 ++-- + po/eu.po | 188 ++-- + po/fa.po | 188 ++-- + po/fi.po | 925 ++++++++++---------- + po/fr.po | 188 ++-- + po/ga.po | 188 ++-- + po/gl.po | 920 ++++++++++---------- + po/gu.po | 947 ++++++++++---------- + po/he.po | 188 ++-- + po/hi.po | 944 ++++++++++---------- + po/hr.po | 188 ++-- + po/hu.po | 188 ++-- + po/hy.po | 188 ++-- + po/id.po | 188 ++-- + po/is.po | 188 ++-- + po/it.po | 188 ++-- + po/ja.po | 188 ++-- + po/ka.po | 188 ++-- + po/kn.po | 968 +++++++++++---------- + po/ko.po | 188 ++-- + po/ku.po | 188 ++-- + po/lt.po | 188 ++-- + po/lv.po | 188 ++-- + po/mai.po | 188 ++-- + po/mg.po | 188 ++-- + po/mk.po | 188 ++-- + po/ml.po | 979 ++++++++++----------- + po/mn.po | 188 ++-- + po/mr.po | 947 ++++++++++---------- + po/ms.po | 188 ++-- + po/nb.po | 917 ++++++++++---------- + po/ne.po | 188 ++-- + po/nl.po | 188 ++-- + po/nn.po | 188 ++-- + po/oc.po | 188 ++-- + po/or.po | 956 ++++++++++---------- + po/pa.po | 943 ++++++++++---------- + po/pl.po | 1339 + ++++++++++++++--------------- + po/ps.po | 188 ++-- + po/pt.po | 188 ++-- + po/pt_BR.po | 188 ++-- + po/ro.po | 926 ++++++++++---------- + po/ru.po | 188 ++-- + po/rw.po | 188 ++-- + po/si.po | 188 ++-- + po/sk.po | 188 ++-- + po/sl.po | 1280 + +++++++++++++-------------- + po/sq.po | 188 ++-- + po/sr.po | 931 ++++++++++---------- + po/sr@ije.po | 188 ++-- + po/sr@latin.po | 942 ++++++++++---------- + po/sv.po | 188 ++-- + po/ta.po | 950 ++++++++++---------- + po/te.po | 956 ++++++++++---------- + po/th.po | 188 ++-- + po/tl.po | 188 ++-- + po/tr.po | 188 ++-- + po/tt.po | 188 ++-- + po/uk.po | 917 ++++++++++---------- + po/vi.po | 188 ++-- + po/wa.po | 188 ++-- + po/xh.po | 188 ++-- + po/yi.po | 188 ++-- + po/zh_CN.po | 926 ++++++++++---------- + po/zh_HK.po | 938 ++++++++++---------- + po/zh_TW.po | 923 ++++++++++---------- + 96 files changed, 19793 insertions(+), 19818 deletions(-) + +commit 9203da305b1c840ebafe7d95f2e937348be0f333 +Author: Matthias Clasen +AuthorDate: Tue Sep 22 12:36:50 2009 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 22 12:36:50 2009 -0400 + + some doc updates + + docs/reference/glib/glib-sections.txt | 3 +++ + 1 file changed, 3 insertions(+) + +commit 3413e758eb4fb15559e9da1b38efd59fcca81401 +Author: Matthias Clasen +AuthorDate: Tue Sep 22 10:37:05 2009 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 22 10:37:05 2009 -0400 + + Updates + + NEWS | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 50 insertions(+) + +commit 74326a38658ebb9dbd59c9d8899a0bbb646301e5 +Author: Matthias Clasen +AuthorDate: Tue Sep 22 09:41:04 2009 -0400 +Commit: Matthias Clasen +CommitDate: Tue Sep 22 09:41:04 2009 -0400 + + Set version to 2.22.0 + + configure.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 01ccc9e3bac498e714087b2be543442aa2eadcaa +Author: Matej Urbančič +AuthorDate: Tue Sep 22 12:21:02 2009 +0200 +Commit: Matej Urbančič +CommitDate: Tue Sep 22 12:21:02 2009 +0200 + + Updated Slovenian translation + + po/sl.po | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit 1c46514d5e072f3baee0145798e023610e895ab2 +Author: Matej Urbančič +AuthorDate: Tue Sep 22 12:15:38 2009 +0200 +Commit: Matej Urbančič +CommitDate: Tue Sep 22 12:15:38 2009 +0200 + + Updated Slovenian translation + + po/sl.po | 1439 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 740 insertions(+), 699 deletions(-) + +commit c755a7fd11ca5f865f6ccd477e0f4db3799161fa +Author: Mart Raudsepp +AuthorDate: Sun Sep 13 04:42:33 2009 +0300 +Commit: Mart Raudsepp +CommitDate: Tue Sep 22 11:22:44 2009 +0300 + + gio: Fix some typos in G*AppInfo documentation + + gio/gappinfo.c | 10 +++++----- + gio/gappinfo.h | 4 ++-- + gio/gdesktopappinfo.c | 8 ++++---- + 3 files changed, 11 insertions(+), 11 deletions(-) + +commit 924f1bc528b212aab91adf608ef32e41b67f3298 +Author: Mart Raudsepp +AuthorDate: Sun Sep 13 00:20:01 2009 +0300 +Commit: Mart Raudsepp +CommitDate: Tue Sep 22 11:22:44 2009 +0300 + + Accept -? for glib-mkenums. + + Commit 789e260638d tried to add support for -?, but there is a typo + and instead -h was added when already present instead of -? for one + of the cases. + It works without this corrections, because all unrecognized options + trigger usage showing as well, but this is more correct. + + This was bug 556706 originally. + + gobject/glib-mkenums.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 6c061da2a232d8c817d9744a234ceee7b87b3dd8 +Author: Mart Raudsepp +AuthorDate: Sat Sep 12 19:49:01 2009 +0300 +Commit: Mart Raudsepp +CommitDate: Tue Sep 22 11:22:44 2009 +0300 + + gio: Fix a Since tag to actually show up in new API of 2.20 indeces + + Typo made in e05426062 + + gio/gdatainputstream.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 7feb4c3631a0745b3696454630be3aa3365d1067 +Author: Nguyễn Thái Ngọc Duy +AuthorDate: Tue Sep 22 09:59:13 2009 +0700 +Commit: Nguyễn Thái Ngọc Duy +CommitDate: Tue Sep 22 09:59:13 2009 +0700 + + po/vi.po: fix type "thoạt" + + po/vi.po | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a830fbd62c05193982c72a375251b2202986152f +Author: Alexander Larsson +AuthorDate: Mon Sep 21 15:36:45 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Sep 21 15:39:00 2009 +0200 + + Document new gdb macros + + docs/reference/glib/running.sgml | 34 ++++++++++++++++++++++++++++++++++ + 1 file changed, 34 insertions(+) + +commit 42320706c4dd6a4517a402dc5da5c27dfc6a5356 +Author: Alexander Larsson +AuthorDate: Mon Sep 21 15:21:52 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Sep 21 15:39:00 2009 +0200 + + Add gforeach gdb command + + glib/glib.py | 84 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 84 insertions(+) + +commit 2b8943237f137f287b0b0854f80198de54fd26ea +Author: Alexander Larsson +AuthorDate: Mon Sep 21 12:26:23 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Sep 21 15:39:00 2009 +0200 + + Add pretty printer for hashtables + + glib/glib.py | 64 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 64 insertions(+) + +commit 2e8768d9a556afd2b2e6c974dcbcf24fee5ba6ff +Author: Alexander Larsson +AuthorDate: Mon Sep 21 11:06:39 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Sep 21 15:39:00 2009 +0200 + + Add pretty printing for GList and GSList + + glib/glib.py | 77 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 77 insertions(+) + +commit efe9169234e226f594b4254618f35a139338c35f +Author: Alexander Larsson +AuthorDate: Fri Sep 18 17:15:32 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Sep 21 15:39:00 2009 +0200 + + Initial support for gdb python macros + + This includes support for gobject pointer pretty printing and + signal frame compression in backtraces. + + https://bugzilla.gnome.org/show_bug.cgi?id=595619 + + glib/Makefile.am | 13 +- + glib/glib.py | 27 ++++ + glib/libglib-gdb.py.in | 10 ++ + gobject/Makefile.am | 12 +- + gobject/gobject.py | 305 + +++++++++++++++++++++++++++++++++++++++++++ + gobject/libgobject-gdb.py.in | 10 ++ + 6 files changed, 375 insertions(+), 2 deletions(-) + +commit 18af48ba9a347e2041c4986aaaac73fdd5386de3 +Author: Chao-Hsiung Liao +AuthorDate: Mon Sep 21 20:54:02 2009 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Mon Sep 21 20:54:02 2009 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 945 + ++++++++++++++++++++++++++++++------------------------------ + po/zh_TW.po | 930 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 938 insertions(+), 937 deletions(-) + +commit 652f47fd2a9544e07cd6cbc5ca0d31d21c1ccd34 +Author: Petr Kovar +AuthorDate: Sun Sep 20 22:26:17 2009 +0200 +Commit: Petr Kovar +CommitDate: Sun Sep 20 22:26:17 2009 +0200 + + Updated Czech translation + + po/cs.po | 921 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 464 insertions(+), 457 deletions(-) + +commit 5b30a46da4eadbd620f34e66e7b981f2dfe91a4f +Author: Ani +AuthorDate: Sun Sep 20 21:04:45 2009 +0530 +Commit: Ani +CommitDate: Sun Sep 20 21:04:45 2009 +0530 + + Updated Malayalam Translations + + po/ml.po | 150 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 76 insertions(+), 74 deletions(-) + +commit 7a010ac2d409fc7ea849034ca7a5bda150ee0fad +Author: Gil Forcada +AuthorDate: Sat Sep 19 18:04:56 2009 +0200 +Commit: Gil Forcada +CommitDate: Sat Sep 19 18:04:56 2009 +0200 + + Updated Catalan translation + + po/ca.po | 1088 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 540 insertions(+), 548 deletions(-) + +commit 80f66b114193d3c1b5a5c5d4f34b01cba53208ca +Author: Paolo Borelli +AuthorDate: Sat Sep 19 10:21:36 2009 +0200 +Commit: Paolo Borelli +CommitDate: Sat Sep 19 10:22:33 2009 +0200 + + Fix build with srcdir != builddir, bug #594597 + + gio/win32/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 8b3853b8a1cc94767c5391808274f931a48f6cbb +Author: Matthias Clasen +AuthorDate: Fri Sep 18 19:16:11 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 18 19:20:06 2009 -0400 + + Reduce false positives in static analysis + + Tools like clang fail to recognize that stanzas like + g_return_if_fail (GTK_IS_FOO (w)) guarantee w != NULL. By minimally + rewriting the type-checking macros, we can avoid these false + positives. + + gobject/gtype.h | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +commit 53fc10d2695f917db530c9a3f166e45be59d1d3a +Author: Matthias Clasen +AuthorDate: Wed Sep 9 00:18:23 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 18 19:20:06 2009 -0400 + + Fix a lot of clang complaints + + Mostly dead assignments. + + gio/gbufferedoutputstream.c | 9 ++------- + gio/gdatainputstream.c | 7 +------ + gio/gdummyfile.c | 5 +---- + gio/ginputstream.c | 16 +++++----------- + gio/giostream.c | 4 ---- + gio/glocalfile.c | 20 ++++++++------------ + gio/glocalfileinputstream.c | 4 ---- + gio/goutputstream.c | 34 +++++++++++++++------------------- + gio/gunixinputstream.c | 4 ---- + gio/gunixoutputstream.c | 4 ---- + glib/gfileutils.c | 3 +-- + glib/gkeyfile.c | 3 +-- + glib/gregex.c | 6 +----- + 13 files changed, 35 insertions(+), 84 deletions(-) + +commit 04d632ccf59ce0491261ff87b3867012cb56d8bf +Author: Dumitru Mișu Moldovan +AuthorDate: Fri Sep 18 00:17:32 2009 +0300 +Commit: Dumitru Mișu Moldovan +CommitDate: Fri Sep 18 00:17:32 2009 +0300 + + Updated Romanian translation + + po/ro.po | 1086 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 536 insertions(+), 550 deletions(-) + +commit 3bfba7924c94aa3a3bcc14e6eeee4fa691108dd0 +Author: Miloš Popović +AuthorDate: Thu Sep 17 17:58:52 2009 +0000 +Commit: Miloš Popović +CommitDate: Thu Sep 17 17:58:52 2009 +0000 + + Updated Serbian translation + + po/sr.po | 1381 + +++++++++++++++++++++++++++---------------------------- + po/sr@latin.po | 1392 + +++++++++++++++++++++++++++----------------------------- + 2 files changed, 1351 insertions(+), 1422 deletions(-) + +commit dd7f660fb7b059d16cea6e33550a14ca2625c813 +Author: krishnababu k +AuthorDate: Thu Sep 17 21:18:57 2009 +0530 +Commit: krishnababu k +CommitDate: Thu Sep 17 21:18:57 2009 +0530 + + Updated Telugu Translation + + po/te.po | 960 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 475 insertions(+), 485 deletions(-) + +commit 256662ddbaec90688c1725d504efc1248eacb7e1 +Author: ifelix +AuthorDate: Thu Sep 17 15:50:19 2009 +0530 +Commit: ifelix +CommitDate: Thu Sep 17 15:50:19 2009 +0530 + + Updated Tamil Translations + + po/ta.po | 961 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 477 insertions(+), 484 deletions(-) + +commit 78c548b506db0527335011ce92558bc1a9d5ebf0 +Author: Fran Diéguez +AuthorDate: Wed Sep 16 16:15:05 2009 +0200 +Commit: Ignacio Casal Quinteiro +CommitDate: Wed Sep 16 16:15:05 2009 +0200 + + UPdated Galician Translation + + po/gl.po | 946 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 472 insertions(+), 474 deletions(-) + +commit d88b6a3d60f0f84cf192c1b4093a0ae2362d7f02 +Author: Runa Bhattacharjee +AuthorDate: Tue Sep 15 18:31:49 2009 +0530 +Commit: Runa Bhattacharjee +CommitDate: Tue Sep 15 18:31:49 2009 +0530 + + Updated Bengali India Translations + + po/bn_IN.po | 1097 + +++++++++++++++++++++++++++++------------------------------ + 1 file changed, 536 insertions(+), 561 deletions(-) + +commit 011592af55d980cfb21c51f5d4bcdd09cce865ec +Author: Manoj Kumar Giri +AuthorDate: Tue Sep 15 16:22:41 2009 +0530 +Commit: Manoj Kumar Giri +CommitDate: Tue Sep 15 16:22:41 2009 +0530 + + Upadted Oriya Translation + + po/or.po | 964 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 477 insertions(+), 487 deletions(-) + +commit ddc85a8b0242407c6234bbe2ebc49b873bf02396 +Author: Theppitak Karoonboonyanan +AuthorDate: Tue Sep 15 14:29:36 2009 +0700 +Commit: Theppitak Karoonboonyanan +CommitDate: Tue Sep 15 14:29:36 2009 +0700 + + Updated Thai translation. + + po/th.po | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +commit 3a240a7f718a44724008d35123c6f7b98abc896a +Author: Amitakhya Phukan +AuthorDate: Tue Sep 15 12:48:50 2009 +0530 +Commit: Amitakhya Phukan +CommitDate: Tue Sep 15 12:48:50 2009 +0530 + + Updating Assamese translations. + + po/as.po | 42 ++++++++++++++++-------------------------- + 1 file changed, 16 insertions(+), 26 deletions(-) + +commit ef5e66c330cdc3f8d93ba33a0dfe251f98883204 +Author: Kjartan Maraas +AuthorDate: Mon Sep 14 00:16:51 2009 +0200 +Commit: Kjartan Maraas +CommitDate: Mon Sep 14 00:16:51 2009 +0200 + + Update Norwegian bokmål translation. + + po/nb.po | 924 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 465 insertions(+), 459 deletions(-) + +commit 220bde833af1bba3e535f727173b84a362374399 +Author: Aron Xu +AuthorDate: Sun Sep 13 15:09:29 2009 +0800 +Commit: Aron Xu +CommitDate: Sun Sep 13 15:09:29 2009 +0800 + + Updated Simplified Chinese translation. + + po/zh_CN.po | 1082 + +++++++++++++++++++++++++++++------------------------------ + 1 file changed, 540 insertions(+), 542 deletions(-) + +commit 7e514b6efaf6daae23c09a1e13ed65d2d8aa8008 +Author: A S Alam +AuthorDate: Sun Sep 13 08:58:57 2009 +0530 +Commit: A S Alam +CommitDate: Sun Sep 13 08:58:57 2009 +0530 + + Updating Translation for Punjabi + + po/pa.po | 956 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 474 insertions(+), 482 deletions(-) + +commit e1957bd71c999ba5189a7fe94880647e84fa6357 +Author: Ask H. Larsen +AuthorDate: Sun Sep 13 03:16:47 2009 +0200 +Commit: Kenneth Nielsen +CommitDate: Sun Sep 13 03:16:47 2009 +0200 + + Updated Danish translation + + po/da.po | 930 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 467 insertions(+), 463 deletions(-) + +commit 6366015decc608a74e2019ccb0d39dbc6e3f06ba +Author: Bruce Cowan +AuthorDate: Sat Sep 12 20:04:29 2009 +0100 +Commit: Philip Withnall +CommitDate: Sat Sep 12 20:04:29 2009 +0100 + + Updated British English translation + + po/en_GB.po | 1120 + +++++++++++++++++++++++++++++------------------------------ + 1 file changed, 556 insertions(+), 564 deletions(-) + +commit a92f10d712b6278364e02178c873a084bfbf9e19 +Author: Tommi Vainikainen +AuthorDate: Sat Sep 12 19:10:57 2009 +0300 +Commit: Tommi Vainikainen +CommitDate: Sat Sep 12 19:10:57 2009 +0300 + + Updated Finnish translation + + po/fi.po | 930 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 467 insertions(+), 463 deletions(-) + +commit 410305255d0acfa5e105a444cdf8b302b31b94a2 +Author: Tor Lillqvist +AuthorDate: Sat Sep 12 01:57:46 2009 +0300 +Commit: Tor Lillqvist +CommitDate: Sat Sep 12 01:57:46 2009 +0300 + + Remove old crap for fetching the "build" directory from svn + + autogen.sh | 17 ----------------- + 1 file changed, 17 deletions(-) + +commit 866731776651e04178a6cc1e78d244384a890d1a +Author: Sjoerd Simons +AuthorDate: Wed Sep 2 17:48:09 2009 +0100 +Commit: Sjoerd Simons +CommitDate: Fri Sep 11 15:25:34 2009 +0100 + + Fix GNetworkAddress skipping addresses when enumerating + + g_network_address_address_enumerator_next_finish takes the first + item of the + address list and moves the pointer to the next one, so we shouldn't + do the same + in g_network_address_address_enumerator_next_async function + + Fixes bug #593941 + + gio/gnetworkaddress.c | 5 ----- + 1 file changed, 5 deletions(-) + +commit cdd04f36cac838f92826cbf415868100a4007741 +Author: Richard Hughes +AuthorDate: Wed Sep 2 19:15:38 2009 +0100 +Commit: Richard Hughes +CommitDate: Fri Sep 11 15:20:34 2009 +0100 + + Make the error const for g_simple_async_result_set_from_error + + gio/gsimpleasyncresult.c | 2 +- + gio/gsimpleasyncresult.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 11477609d1f2782fd4bbb3022d2ec46983930c6a +Author: James Hunt +AuthorDate: Thu Sep 10 17:18:13 2009 +0100 +Commit: Dan Winship +CommitDate: Fri Sep 11 08:52:14 2009 -0400 + + g_socket_send_message() fails due to invalid sendmsg(2) params. + + g_socket_send_message() and g_socket_send_to() fail with ENOBUFS or + EFAULT due to the fact that if no "address" argument is specified to + g_socket_send_message, when g_socket_send_message() calls sendmsg(2), + the 2nd parameter to sendmsg ("const struct msghdr *msg") contains + uninitialized values. The fix is simple - initialize msg.msg_name to + NULL and msg.msg_msg_namelen to 0. + + https://bugzilla.gnome.org/show_bug.cgi?id=594759 + + gio/gsocket.c | 5 +++++ + 1 file changed, 5 insertions(+) + +commit 29baa5eebdce27d10c6f36ae8ad4fbc77d04f291 +Author: Rajesh Ranjan +AuthorDate: Fri Sep 11 16:00:29 2009 +0530 +Commit: Rajesh Ranjan +CommitDate: Fri Sep 11 16:00:29 2009 +0530 + + hindi update by Rajesh Ranjan + + po/hi.po | 948 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 471 insertions(+), 477 deletions(-) + +commit 9dc9b39284b78b63fad4a713ab6ea4154d4e8ff5 +Author: Ani +AuthorDate: Fri Sep 11 12:18:50 2009 +0530 +Commit: Ani +CommitDate: Fri Sep 11 12:18:50 2009 +0530 + + Updated Malayalam Translations + + po/ml.po | 976 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 480 insertions(+), 496 deletions(-) + +commit c3bbec5213d1e77253fd2cef67d6838041bb2f1f +Author: Maxim V. Dziumanenko +AuthorDate: Fri Sep 11 01:48:56 2009 +0300 +Commit: Maxim V. Dziumanenko +CommitDate: Fri Sep 11 01:48:56 2009 +0300 + + Updated Ukrainian translation + + po/uk.po | 1104 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 520 insertions(+), 584 deletions(-) + +commit 278ac0a45d2b677a0928b1c31b3e20a4c265ffb0 +Author: Christian Dywan +AuthorDate: Thu Sep 10 16:40:11 2009 +0200 +Commit: Christian Dywan +CommitDate: Thu Sep 10 16:45:49 2009 +0200 + + Bug 579050 Allow making selected critical and warning messages + non-fatal + + Implement g_test_log_set_fatal_handler which is a function similar to + g_log_set_default_handler but for use in unit tests where certain + errors have to be ignored because it is not possible to fix or avoid + them otherwise. A unit test is added. + + glib/glib.symbols | 3 +++ + glib/gmessages.c | 47 +++++++++++++++++++++++++++++++++++++++++++++-- + glib/gtestutils.c | 1 + + glib/gtestutils.h | 21 +++++++++++++++++++++ + glib/tests/testing.c | 27 +++++++++++++++++++++++++++ + 5 files changed, 97 insertions(+), 2 deletions(-) + +commit 4b1217b7e0e8d2e7e4187e8b328e10ad72066392 +Author: Shankar Prasad +AuthorDate: Thu Sep 10 12:26:13 2009 +0530 +Commit: Shankar Prasad +CommitDate: Thu Sep 10 12:26:13 2009 +0530 + + Updated Kannada(kn) translation + + po/kn.po | 973 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 479 insertions(+), 494 deletions(-) + +commit 664dd256654b5def0bd6cdd5e3918bba78fedd52 +Author: Kostas Papadimas +AuthorDate: Wed Sep 9 18:38:12 2009 +0300 +Commit: Kostas Papadimas +CommitDate: Wed Sep 9 18:38:12 2009 +0300 + + Updated Greek translation. + + po/el.po | 1391 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 708 insertions(+), 683 deletions(-) + +commit 593cd7a683c267e9e02e3d0b8bc653a253f17df5 +Author: Sweta Kothari +AuthorDate: Wed Sep 9 16:54:43 2009 +0530 +Commit: Sweta Kothari +CommitDate: Wed Sep 9 16:54:43 2009 +0530 + + Updated Gujarati Translations + + po/gu.po | 952 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 472 insertions(+), 480 deletions(-) + +commit f393e805874db16334c5c4f4aa7fa1c73964ca34 +Author: Dan Winship +AuthorDate: Tue Sep 8 11:19:13 2009 -0400 +Commit: Dan Winship +CommitDate: Tue Sep 8 11:19:13 2009 -0400 + + Clarify g_ptr_array_set_size() docs re: free_func + + docs/reference/glib/tmpl/arrays_pointer.sgml | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +commit eadd2ce7fff83f86c4803aa5e2e251f554639bb6 +Author: Alexander Shopov +AuthorDate: Tue Sep 8 07:41:28 2009 +0300 +Commit: Alexander Shopov +CommitDate: Tue Sep 8 07:41:28 2009 +0300 + + Updated Bulgarian translation + + po/bg.po | 926 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 466 insertions(+), 460 deletions(-) + +commit bc1dd5cf11dc920ff44d51051e1e695b0b8ea421 +Author: Dan Winship +AuthorDate: Sun Sep 6 13:54:50 2009 -0400 +Commit: Dan Winship +CommitDate: Mon Sep 7 12:35:51 2009 -0400 + + Call element_free_func when shrinking array with g_ptr_array_set_size + + glib/garray.c | 8 ++------ + glib/tests/array-test.c | 4 +++- + 2 files changed, 5 insertions(+), 7 deletions(-) + +commit 9a29f087e76fd01188cff73ce1dfe802bd815b15 +Author: Sandeep Shedmake +AuthorDate: Mon Sep 7 19:14:52 2009 +0530 +Commit: Sandeep Shedmake +CommitDate: Mon Sep 7 19:14:52 2009 +0530 + + Updated Marathi Translations + + po/mr.po | 952 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 472 insertions(+), 480 deletions(-) + +commit 8af494d987b7482865439f882d1375767b57732f +Author: Alexander Larsson +AuthorDate: Mon Sep 7 12:50:58 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Sep 7 12:50:58 2009 +0200 + + Avoid reading uninitialized memory + + If the statfs call fails, don't look at the result. + + gio/glocalfile.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 06de24f430d4b43733dec63ca0b840d129a716e2 +Author: Alexander Larsson +AuthorDate: Mon Sep 7 10:25:14 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Sep 7 10:25:14 2009 +0200 + + Remove warning in g_simple_async_result_complete + + This warning hits code that uses GSimpleAsyncResult outside of a + mainloop as a helper object. For instance EggDBus does this. + Since the bugs this warning would fix are pretty easy to spot + and since EggDBus is deployed already we just remove the + "called from outside main loop" warning. + + However, we need to keep the "called from wrong context" warning + as that is very helpful when debugging misuse of the new multiple + main context code. + + gio/gsimpleasyncresult.c | 2 -- + 1 file changed, 2 deletions(-) + +commit 034d516160ffacbb805ad28cfdb848134f26c1dc +Author: Matthias Clasen +AuthorDate: Mon Sep 7 03:28:35 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 03:28:35 2009 -0400 + + Another dead assignment + + gio/gmemoryoutputstream.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +commit 6cda9bfb02314fff5e994a80164be16c67d14253 +Author: Matthias Clasen +AuthorDate: Mon Sep 7 03:14:15 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 03:14:15 2009 -0400 + + Remove a dead initialization + + gio/gthemedicon.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 30645bd0a584137585d572b37f39d2904bba0a8f +Author: Matthias Clasen +AuthorDate: Mon Sep 7 03:12:06 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 03:12:06 2009 -0400 + + Remove a dead increment + + gio/glocalfileinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 0d1ffbf361503ac1f8236673f400e0f317635930 +Author: Matthias Clasen +AuthorDate: Mon Sep 7 03:10:01 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 03:10:01 2009 -0400 + + Remove another dead assignment + + gio/gdatainputstream.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit f2c8572d8490544496934612854a86fecbaf99ba +Author: Matthias Clasen +AuthorDate: Mon Sep 7 03:07:22 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 03:07:22 2009 -0400 + + Remmove a dead assignment. + + Spotted by clang. + + gio/gbufferedinputstream.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +commit 1ec32c403bac36ca9f72e82c23b14045bc323931 +Author: Matthias Clasen +AuthorDate: Mon Sep 7 03:02:58 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 03:02:58 2009 -0400 + + Move a assignment to the relevant #ifdef branch + + Dead code spotted by clang. + + gio/gcancellable.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit e67c3cf2b0251acfca74d680d9b4c2b7547c61a7 +Author: Matthias Clasen +AuthorDate: Mon Sep 7 03:01:02 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 03:01:02 2009 -0400 + + Remove dead code + + gio/gvolumemonitor.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit 80fd5ed402bf57a3c5cbd90eecc3f58f3f06bc08 +Author: Matthias Clasen +AuthorDate: Mon Sep 7 02:50:51 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Sep 7 02:50:51 2009 -0400 + + Don't evaluate an uninitialized value + + Bug found by clang. + + gio/gdesktopappinfo.c | 1 + + 1 file changed, 1 insertion(+) + +commit 7ea8a2a86326b6f5f0f62a334fdd307d6526f782 +Author: Tomasz Dominikowski +AuthorDate: Sun Sep 6 14:20:45 2009 +0200 +Commit: Tomasz Dominikowski +CommitDate: Sun Sep 6 14:20:45 2009 +0200 + + Updated Polish translation + + po/pl.po | 1346 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 687 insertions(+), 659 deletions(-) + +commit 93fbae22d4d6fddf69c2b7276f24fcc3cfcf0403 +Author: Takayuki KUSANO +AuthorDate: Sat Sep 5 22:34:58 2009 +0900 +Commit: Takayuki KUSANO +CommitDate: Sat Sep 5 22:34:58 2009 +0900 + + Update Japanese translation + + po/ja.po | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit 6b406dda7b3061bd890878823fbafe2c6ffc019a +Author: Jorge González +AuthorDate: Sat Sep 5 13:47:41 2009 +0200 +Commit: Jorge González +CommitDate: Sat Sep 5 13:47:41 2009 +0200 + + Updated Spanish translation + + po/es.po | 930 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 465 insertions(+), 465 deletions(-) + +commit e77b8278841d89f9e2c82e09b844a472496ab43e +Author: Matthias Clasen +AuthorDate: Fri Sep 4 21:20:09 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 4 21:20:09 2009 -0400 + + Bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 296d481c7e5de27175e68ff7645975442a449fc5 +Author: Matthias Clasen +AuthorDate: Fri Sep 4 21:19:02 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 4 21:19:02 2009 -0400 + + 2.21.6 + + po/am.po | 75 +-- + po/ar.po | 75 +-- + po/as.po | 957 +++++++++++++++++++------------------- + po/az.po | 75 +-- + po/be.po | 77 ++-- + po/be@latin.po | 77 ++-- + po/bg.po | 75 +-- + po/bn.po | 75 +-- + po/bn_IN.po | 75 +-- + po/bs.po | 75 +-- + po/ca.po | 75 +-- + po/ca@valencia.po | 75 +-- + po/cs.po | 918 +++++++++++++++++++------------------ + po/cy.po | 75 +-- + po/da.po | 75 +-- + po/de.po | 925 +++++++++++++++++++------------------ + po/dz.po | 75 +-- + po/el.po | 76 ++-- + po/en_CA.po | 75 +-- + po/en_GB.po | 75 +-- + po/eo.po | 75 +-- + po/es.po | 75 +-- + po/et.po | 464 ++++++++++++++++++- + po/eu.po | 978 +++++++++++++++++++-------------------- + po/fa.po | 75 +-- + po/fi.po | 75 +-- + po/fr.po | 920 ++++++++++++++++++------------------- + po/ga.po | 75 +-- + po/gl.po | 75 +-- + po/gu.po | 75 +-- + po/he.po | 75 +-- + po/hi.po | 75 +-- + po/hr.po | 75 +-- + po/hu.po | 134 +++--- + po/hy.po | 75 +-- + po/id.po | 75 +-- + po/is.po | 75 +-- + po/it.po | 923 +++++++++++++++++++------------------ + po/ja.po | 75 +-- + po/ka.po | 75 +-- + po/kn.po | 971 ++++++++++++++++++++------------------- + po/ko.po | 75 +-- + po/ku.po | 75 +-- + po/lt.po | 75 +-- + po/lv.po | 75 +-- + po/mai.po | 75 +-- + po/mg.po | 75 +-- + po/mk.po | 75 +-- + po/ml.po | 974 ++++++++++++++++++++------------------- + po/mn.po | 75 +-- + po/mr.po | 950 +++++++++++++++++++------------------- + po/ms.po | 75 +-- + po/nb.po | 918 +++++++++++++++++++------------------ + po/ne.po | 75 +-- + po/nl.po | 75 +-- + po/nn.po | 75 +-- + po/oc.po | 74 +-- + po/or.po | 109 +++-- + po/pa.po | 75 +-- + po/pl.po | 75 +-- + po/ps.po | 75 +-- + po/pt.po | 925 +++++++++++++++++++------------------ + po/pt_BR.po | 925 +++++++++++++++++++------------------ + po/ro.po | 75 +-- + po/ru.po | 75 +-- + po/rw.po | 75 +-- + po/si.po | 75 +-- + po/sk.po | 75 +-- + po/sl.po | 75 +-- + po/sq.po | 76 ++-- + po/sr.po | 75 +-- + po/sr@ije.po | 75 +-- + po/sr@latin.po | 75 +-- + po/sv.po | 1312 + ++++++++++++++++++++++++++--------------------------- + po/ta.po | 950 +++++++++++++++++++------------------- + po/te.po | 959 ++++++++++++++++++++------------------- + po/th.po | 75 +-- + po/tl.po | 75 +-- + po/tr.po | 922 ++++++++++++++++++------------------- + po/tt.po | 75 +-- + po/uk.po | 75 +-- + po/vi.po | 75 +-- + po/wa.po | 75 +-- + po/xh.po | 75 +-- + po/yi.po | 75 +-- + po/zh_CN.po | 75 +-- + po/zh_HK.po | 75 +-- + po/zh_TW.po | 75 +-- + 88 files changed, 11117 insertions(+), 10197 deletions(-) + +commit 05c2aeaf33ad1ff3447d57a361abdb238b8f822b +Author: Matthias Clasen +AuthorDate: Fri Sep 4 20:41:25 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 4 20:41:25 2009 -0400 + + Add a Since: tag + + glib/gfileutils.c | 20 +++++++++++--------- + 1 file changed, 11 insertions(+), 9 deletions(-) + +commit 2ae69f5124022d93dfc0e39964bbf68eb1f61245 +Author: Matthias Clasen +AuthorDate: Fri Sep 4 20:26:26 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Sep 4 20:39:27 2009 -0400 + + Updates + + NEWS | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + +commit 4114f1214c65f0a142678bf98b1d8e4da43bf665 +Author: Benjamin Otte +AuthorDate: Thu Sep 3 15:39:57 2009 +0200 +Commit: Benjamin Otte +CommitDate: Fri Sep 4 22:45:57 2009 +0200 + + Bug 594034 - Use g_mkstemp_full() when creating the replacement file + + Previous code used g_mkstemp(). But when using + G_FILE_CREATE_REPLACE_DESTINATION, no attempt was made to ensure + proper + mode and flags of the created temporary file. The visible issue + was that + the file was always created with mode 0600 as opposed to using 0666. + (The invisible issue was that O_RDWR was used instead of O_WRONLY.) + + docs/reference/glib/tmpl/glib-unused.sgml | 67 + ++++++++++++++++++++++++++++++ + docs/reference/glib/tmpl/macros_misc.sgml | 5 +-- + docs/reference/glib/tmpl/misc_utils.sgml | 7 ++++ + docs/reference/glib/tmpl/version.sgml | 68 + ------------------------------- + gio/glocalfileoutputstream.c | 2 +- + 5 files changed, 77 insertions(+), 72 deletions(-) + +commit 24bec5c5bd64eb829a433e4c1e8d34dc25879a64 +Author: Benjamin Otte +AuthorDate: Thu Sep 3 15:36:37 2009 +0200 +Commit: Benjamin Otte +CommitDate: Fri Sep 4 22:45:07 2009 +0200 + + Bug 594034 - Add g_mkstemp_full() + + This function exposes more variables than g_mkstemp() and therefor + allows more flexibility when creating temporary files. + The intended use is gio's code for g_file_replace() (see next patch) + + docs/reference/glib/glib-sections.txt | 1 + + docs/reference/glib/tmpl/fileutils.sgml | 11 +++++++++ + glib/gfileutils.c | 44 + +++++++++++++++++++++++++-------- + glib/gfileutils.h | 3 +++ + glib/glib.symbols | 1 + + 5 files changed, 50 insertions(+), 10 deletions(-) + +commit 16ddefea15ceeded936c53aa1b867eb53d7d97f3 +Author: Ivar Smolin +AuthorDate: Fri Sep 4 18:58:00 2009 +0300 +Commit: Priit Laes +CommitDate: Fri Sep 4 18:58:00 2009 +0300 + + Updating Estonian translation + + po/et.po | 472 + ++------------------------------------------------------------- + 1 file changed, 9 insertions(+), 463 deletions(-) + +commit c642965b234cdc9959c79d2fd3019f63a0520fad +Author: Christian Kirbach +AuthorDate: Fri Sep 4 15:16:04 2009 +0200 +Commit: Christian Kirbach +CommitDate: Fri Sep 4 15:16:04 2009 +0200 + + Updated German translation + + po/de.po | 1185 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 592 insertions(+), 593 deletions(-) + +commit c77fd0bb04f612e7d16d48379cc3ec835c8d5fa2 +Author: Daniel Nylander +AuthorDate: Fri Sep 4 06:31:34 2009 +0200 +Commit: Daniel Nylander +CommitDate: Fri Sep 4 06:31:34 2009 +0200 + + Updated Swedish translation + + po/sv.po | 1316 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 672 insertions(+), 644 deletions(-) + +commit 7628e1b4773142fc89f2365069c3e5a59ffb15ab +Author: Claude Paroz +AuthorDate: Fri Sep 4 00:07:40 2009 +0200 +Commit: Claude Paroz +CommitDate: Fri Sep 4 00:07:40 2009 +0200 + + Updated French translation + + po/fr.po | 924 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 464 insertions(+), 460 deletions(-) + +commit 5a66c4bdb76b853b05baf7b01c8e2be49022c8a6 +Author: Fábio Nogueira +AuthorDate: Wed Sep 2 12:28:59 2009 -0400 +Commit: Og B. Maciel +CommitDate: Wed Sep 2 12:29:30 2009 -0400 + + Updated Brazilian Portuguese translation. + + po/pt_BR.po | 933 + ++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 472 insertions(+), 461 deletions(-) + +commit de125e51a04a5ebdc652fb4e611a5bd1ba57c210 +Author: Inaki Larranaga Murgoitio +AuthorDate: Wed Sep 2 18:19:27 2009 +0200 +Commit: dooteo +CommitDate: Wed Sep 2 18:19:27 2009 +0200 + + Updated Basque language + + po/eu.po | 982 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 484 insertions(+), 498 deletions(-) + +commit ff9b29ce5b7d8bd20d4527e2e364b68ebce01c75 +Author: Gabor Kelemen +AuthorDate: Wed Sep 2 18:05:23 2009 +0200 +Commit: Gabor Kelemen +CommitDate: Wed Sep 2 18:05:23 2009 +0200 + + Hungarian translation updated + + po/hu.po | 335 + ++++++++++++++++++++++----------------------------------------- + 1 file changed, 115 insertions(+), 220 deletions(-) + +commit f2320a40f1d356ba7f15e592c03018ba2b42c4bd +Author: Duarte Loreto +AuthorDate: Tue Sep 1 23:34:41 2009 +0100 +Commit: Duarte Loreto +CommitDate: Tue Sep 1 23:34:41 2009 +0100 + + Updated Portuguese translation + + po/pt.po | 929 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 469 insertions(+), 460 deletions(-) + +commit f783515323963d2f9011cab5b6b2e767fe790425 +Author: Luca Ferretti +AuthorDate: Tue Sep 1 23:47:14 2009 +0200 +Commit: Luca Ferretti +CommitDate: Tue Sep 1 23:47:14 2009 +0200 + + Updated Italian translation + + po/it.po | 30 +++++++++++++++++------------- + 1 file changed, 17 insertions(+), 13 deletions(-) + +commit 3826963e65d8c4c68bcd3e4066505f63ef734b95 +Author: Benjamin Otte +AuthorDate: Tue Sep 1 21:53:35 2009 +0200 +Commit: Benjamin Otte +CommitDate: Tue Sep 1 21:53:35 2009 +0200 + + Use lchmod instead of stat + chown if available + + Fallout of the NOFLOOW_SYMLINKS fix from bug 593406 + + configure.in | 2 +- + gio/glocalfileinfo.c | 10 +++++++--- + 2 files changed, 8 insertions(+), 4 deletions(-) + +commit 48e0af0157f52ac12b904bd92540432a18b139c7 +Author: Benjamin Otte +AuthorDate: Tue Sep 1 21:26:08 2009 +0200 +Commit: Benjamin Otte +CommitDate: Tue Sep 1 21:33:11 2009 +0200 + + Bug 593406 - Permissions set to 777 after copying via Nautilus + + Only fail to set the permissions when the actual file is a symlink. + The previous fix failed for every file when NOFOLLOW_SYMLINKS was set. + + gio/glocalfileinfo.c | 21 ++++++++++++++++----- + 1 file changed, 16 insertions(+), 5 deletions(-) + +commit bb7852e34b1845e516290e1b45a960a345ee8a43 +Author: Benjamin Otte +AuthorDate: Tue Sep 1 20:36:31 2009 +0200 +Commit: Benjamin Otte +CommitDate: Tue Sep 1 21:29:43 2009 +0200 + + Only do the chmod NOFOLLOW_SYMLINK checks with HAVE_SYMLINK + + gio/glocalfileinfo.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 8212aadac79d70153d880fe1f21914a2b491dca3 +Author: Dan Winship +AuthorDate: Tue Sep 1 09:37:48 2009 -0400 +Commit: Dan Winship +CommitDate: Tue Sep 1 09:40:03 2009 -0400 + + g_time_val_from_iso8601: handle timezoneless dates + + per ISO 8601:2004 4.2.5.2 + + Based on a patch from Andy Shevchenko + http://bugzilla.gnome.org/show_bug.cgi?id=589491 + + glib/gtimer.c | 18 +++++++++++++----- + tests/testglib.c | 21 +++++++++++++++++++++ + 2 files changed, 34 insertions(+), 5 deletions(-) + +commit fc44bf40a4eff8e122b223e97ee5efcbc548be03 +Author: Benjamin Otte +AuthorDate: Tue Sep 1 12:48:55 2009 +0200 +Commit: Benjamin Otte +CommitDate: Tue Sep 1 12:48:55 2009 +0200 + + Fix gtk-doc syntax + + gio/gcancellable.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit e695c0932f5d02f3b222f0b7a3de1f8c00ba7b81 +Author: Benjamin Otte +AuthorDate: Tue Sep 1 11:54:48 2009 +0200 +Commit: Benjamin Otte +CommitDate: Tue Sep 1 12:15:31 2009 +0200 + + Bug 593406 - Permissions set to 777 after copying via Nautilus + + When doing a g_file_copy() with nofollow-symlinks (to copy a link for + example), the later copying of the file attributes copies the source + links 777 attributes to the target's attributes. As chmod affects the + symlink target, this would cause such copies to always set the + target to + 777 mode. + + This patch makes setting the mode with nofollow-symlinks fail with + NOT_SUPPORTED. + + The aforementioned g_file_copy() will still succeed, because it + ignores + errors of the attribute copy. + + gio/glocalfileinfo.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +commit e967a47117d3b8fdb3e5c786e9069872d8e787c4 +Author: Kjartan Maraas +AuthorDate: Tue Sep 1 10:52:07 2009 +0200 +Commit: Kjartan Maraas +CommitDate: Tue Sep 1 10:52:59 2009 +0200 + + Update Norwegian bokmål translation. + + po/nb.po | 920 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 464 insertions(+), 456 deletions(-) + +commit c433158e8676424ede4e396b6d4bf22d5210634b +Author: Sandeep Shedmake +AuthorDate: Mon Aug 31 20:47:13 2009 +0530 +Commit: Sandeep Shedmake +CommitDate: Mon Aug 31 20:47:13 2009 +0530 + + Updated Marathi Translations + + po/mr.po | 68 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 34 insertions(+), 34 deletions(-) + +commit c59dbb4ddfb824c022087d15d75d3f5de1c032cc +Author: Sandeep Shedmake +AuthorDate: Mon Aug 31 20:29:16 2009 +0530 +Commit: Sandeep Shedmake +CommitDate: Mon Aug 31 20:29:16 2009 +0530 + + Updated Marathi Translations + + po/mr.po | 1145 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 528 insertions(+), 617 deletions(-) + +commit ee8e145472c9b90e89d568710b9672bb20ada524 +Author: krishnababu k +AuthorDate: Mon Aug 31 19:41:54 2009 +0530 +Commit: krishnababu k +CommitDate: Mon Aug 31 19:41:54 2009 +0530 + + Updated Telugu Translations + + po/te.po | 1185 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 547 insertions(+), 638 deletions(-) + +commit 3a7560b00a8846150be4d9d2113f352ff1ebcc7a +Author: Shankar Prasad +AuthorDate: Mon Aug 31 13:34:44 2009 +0530 +Commit: Shankar Prasad +CommitDate: Mon Aug 31 13:34:44 2009 +0530 + + Updated Kannada(kn) translation + + po/kn.po | 1188 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 546 insertions(+), 642 deletions(-) + +commit 31924b19806e31f38eff86d4e43248bec989fd3a +Author: Rodrigo L. M. Flores +AuthorDate: Sun Aug 30 19:41:47 2009 -0300 +Commit: Rodrigo L. M. Flores +CommitDate: Sun Aug 30 19:41:47 2009 -0300 + + Updated Brazilian Portuguese mailing list address. + + po/pt_BR.po | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f2b8b6911235358d25b79d75f98d81b5062afe33 +Author: Petr Kovar +AuthorDate: Sat Aug 29 21:05:19 2009 +0200 +Commit: Petr Kovar +CommitDate: Sat Aug 29 21:05:19 2009 +0200 + + Updated Czech translation + + po/cs.po | 1141 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 532 insertions(+), 609 deletions(-) + +commit c47dca4cfe51b9376c364ae13a444a6529afed8f +Author: Matthias Clasen +AuthorDate: Thu Aug 27 23:40:16 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 27 23:40:16 2009 -0400 + + Re-commit 30b8774f7f3f7f329af6b041b6c86bad14717534 + + Turns out Alex had agreed to this. + + gio/giomodule.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 2889f1b8a322b0657f3c08a4f7e235e4c2c0f348 +Author: Matthias Clasen +AuthorDate: Thu Aug 27 23:02:08 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 27 23:02:08 2009 -0400 + + Use the saved errno value + + Bug 591995 + + gio/glocalfileoutputstream.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 3ba64e72cf40b81f472aa784498c3a97ef434c94 +Author: Matthias Clasen +AuthorDate: Thu Aug 27 22:59:05 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 27 22:59:05 2009 -0400 + + Read /dev/urandom unbuffered + + To avoid wasting entropy. Bug 593232. + + glib/grand.c | 1 + + 1 file changed, 1 insertion(+) + +commit 3a47f48311d44e690c381f816fd1fa71eed20189 +Author: Matthias Clasen +AuthorDate: Thu Aug 27 22:51:53 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Aug 27 22:51:53 2009 -0400 + + Revert "add a "gsettings-backend" extension point to GIO" + + This reverts commit 30b8774f7f3f7f329af6b041b6c86bad14717534. + + gio/giomodule.c | 3 --- + 1 file changed, 3 deletions(-) + +commit 30b8774f7f3f7f329af6b041b6c86bad14717534 +Author: Ryan Lortie +AuthorDate: Thu Aug 27 13:45:48 2009 -0400 +Commit: Ryan Lortie +CommitDate: Thu Aug 27 13:45:48 2009 -0400 + + add a "gsettings-backend" extension point to GIO + + gio/giomodule.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit df981f82a097f9a2f2739ec410fa928168b749f6 +Author: Luca Ferretti +AuthorDate: Wed Aug 26 22:04:58 2009 +0200 +Commit: Luca Ferretti +CommitDate: Wed Aug 26 22:04:58 2009 +0200 + + Updated Italian translation + + po/it.po | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +commit 71b684b9cfe76d522a306993dba13fbcc52d0d73 +Author: Luca Ferretti +AuthorDate: Wed Aug 26 15:32:23 2009 +0200 +Commit: Luca Ferretti +CommitDate: Wed Aug 26 15:32:23 2009 +0200 + + Updated Italian translation + + po/it.po | 963 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 482 insertions(+), 481 deletions(-) + +commit 884c789ef5e074a2241d1b813847156db1cecdb0 +Author: Amitakhya Phukan +AuthorDate: Wed Aug 26 17:34:17 2009 +0530 +Commit: Amitakhya Phukan +CommitDate: Wed Aug 26 17:34:17 2009 +0530 + + Updating Assamese translations + + po/as.po | 1105 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 542 insertions(+), 563 deletions(-) + +commit 195abb97ff019d0fe7b50a9635830835933be7ae +Author: Ani +AuthorDate: Wed Aug 26 15:18:57 2009 +0530 +Commit: Ani +CommitDate: Wed Aug 26 15:18:57 2009 +0530 + + Updated Malayalam Translations + + po/ml.po | 1196 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 550 insertions(+), 646 deletions(-) + +commit 6c1466a2d21820f2df189a258b0c124e7144ba12 +Author: ifelix +AuthorDate: Tue Aug 25 14:10:56 2009 +0530 +Commit: ifelix +CommitDate: Tue Aug 25 14:10:56 2009 +0530 + + Updated Tamil Translations + + po/ta.po | 1178 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 546 insertions(+), 632 deletions(-) + +commit 64b49c9087e8120489a0032d596c8837cbe014f9 +Author: Manoj Kumar Giri +AuthorDate: Tue Aug 25 12:14:41 2009 +0530 +Commit: Manoj Kumar Giri +CommitDate: Tue Aug 25 12:14:41 2009 +0530 + + Updated Oriya Translation + + po/or.po | 176 + ++++++++++++++++++++++++++++----------------------------------- + 1 file changed, 77 insertions(+), 99 deletions(-) + +commit 24c31a79e1af916fe195e52c79ff8be558e4e848 +Author: Baris Cicek +AuthorDate: Tue Aug 25 00:38:34 2009 +0300 +Commit: Baris Cicek +CommitDate: Tue Aug 25 00:38:34 2009 +0300 + + Updated Turkish translation. + + po/tr.po | 1151 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 534 insertions(+), 617 deletions(-) + +commit ef5aef582eb33fd29fe5ec427ef5d236656b8046 +Author: Luca Ferretti +AuthorDate: Mon Aug 24 21:28:11 2009 +0200 +Commit: Luca Ferretti +CommitDate: Mon Aug 24 21:28:11 2009 +0200 + + Fix bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 83d3242d127ca61d94846341ab491bbe988d2b95 +Author: Matthias Clasen +AuthorDate: Mon Aug 24 14:15:13 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 24 14:15:13 2009 -0400 + + Bump version + + configure.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 106cd06ff38fef0356961e1d2eaffaa022035b13 +Author: Matthias Clasen +AuthorDate: Mon Aug 24 14:13:49 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 24 14:13:49 2009 -0400 + + 2.21.5 + + po/am.po | 120 ++--- + po/ar.po | 120 ++--- + po/as.po | 120 ++--- + po/az.po | 120 ++--- + po/be.po | 120 ++--- + po/be@latin.po | 120 ++--- + po/bg.po | 918 +++++++++++++++++----------------- + po/bn.po | 120 ++--- + po/bn_IN.po | 120 ++--- + po/bs.po | 120 ++--- + po/ca.po | 120 ++--- + po/ca@valencia.po | 918 +++++++++++++++++----------------- + po/cs.po | 120 ++--- + po/cy.po | 120 ++--- + po/da.po | 923 +++++++++++++++++----------------- + po/de.po | 120 ++--- + po/dz.po | 120 ++--- + po/el.po | 120 ++--- + po/en_CA.po | 120 ++--- + po/en_GB.po | 120 ++--- + po/eo.po | 120 ++--- + po/es.po | 921 +++++++++++++++++----------------- + po/et.po | 463 ++++++++++++++++- + po/eu.po | 988 ++++++++++++++++++------------------ + po/fa.po | 120 ++--- + po/fi.po | 923 +++++++++++++++++----------------- + po/fr.po | 120 ++--- + po/ga.po | 921 +++++++++++++++++----------------- + po/gl.po | 918 +++++++++++++++++----------------- + po/gu.po | 945 ++++++++++++++++++----------------- + po/he.po | 120 ++--- + po/hi.po | 942 ++++++++++++++++++----------------- + po/hr.po | 120 ++--- + po/hu.po | 120 ++--- + po/hy.po | 120 ++--- + po/id.po | 120 ++--- + po/is.po | 120 ++--- + po/it.po | 921 +++++++++++++++++----------------- + po/ja.po | 64 +-- + po/ka.po | 120 ++--- + po/kn.po | 120 ++--- + po/ko.po | 931 +++++++++++++++++----------------- + po/ku.po | 120 ++--- + po/lt.po | 120 ++--- + po/lv.po | 120 ++--- + po/mai.po | 120 ++--- + po/mg.po | 120 ++--- + po/mk.po | 120 ++--- + po/ml.po | 120 ++--- + po/mn.po | 120 ++--- + po/mr.po | 120 ++--- + po/ms.po | 120 ++--- + po/nb.po | 920 +++++++++++++++++----------------- + po/ne.po | 120 ++--- + po/nl.po | 120 ++--- + po/nn.po | 120 ++--- + po/oc.po | 120 ++--- + po/or.po | 120 ++--- + po/pa.po | 961 ++++++++++++++++++----------------- + po/pl.po | 919 +++++++++++++++++----------------- + po/ps.po | 120 ++--- + po/pt.po | 927 +++++++++++++++++----------------- + po/pt_BR.po | 923 +++++++++++++++++----------------- + po/ro.po | 120 ++--- + po/ru.po | 120 ++--- + po/rw.po | 120 ++--- + po/si.po | 120 ++--- + po/sk.po | 120 ++--- + po/sl.po | 120 ++--- + po/sq.po | 120 ++--- + po/sr.po | 120 ++--- + po/sr@ije.po | 120 ++--- + po/sr@latin.po | 120 ++--- + po/sv.po | 1436 + ++++++++++++++++++++++++++--------------------------- + po/ta.po | 120 ++--- + po/te.po | 921 +++++++++++++++++----------------- + po/th.po | 120 ++--- + po/tl.po | 120 ++--- + po/tr.po | 120 ++--- + po/tt.po | 120 ++--- + po/uk.po | 120 ++--- + po/vi.po | 120 ++--- + po/wa.po | 120 ++--- + po/xh.po | 120 ++--- + po/yi.po | 120 ++--- + po/zh_CN.po | 120 ++--- + po/zh_HK.po | 936 +++++++++++++++++----------------- + po/zh_TW.po | 921 +++++++++++++++++----------------- + 88 files changed, 14418 insertions(+), 13942 deletions(-) + +commit eadef0325aefb68ae0747a7dbca7d6fca4130da2 +Author: Matthias Clasen +AuthorDate: Mon Aug 24 13:34:06 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 24 13:34:38 2009 -0400 + + Documentation fixes + + docs/reference/gio/gio-sections.txt | 5 +++++ + docs/reference/glib/glib-sections.txt | 1 + + gio/gfileinfo.c | 2 ++ + 3 files changed, 8 insertions(+) + +commit d1cbb96428f316b77bd31686c7d9b0b96a40bc6e +Author: Matthias Clasen +AuthorDate: Mon Aug 24 12:21:08 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Aug 24 13:34:38 2009 -0400 + + Updates + + NEWS | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 46 insertions(+) + +commit 002da02df8927e1aa5979347402a6fc378dd172f +Author: Carles Ferrando +AuthorDate: Mon Aug 24 18:38:33 2009 +0200 +Commit: Gil Forcada +CommitDate: Mon Aug 24 18:38:33 2009 +0200 + + Minor update to Catalan (Valencian) translation + + po/ca@valencia.po | 1005 + ++++++++++++++++++++++++++--------------------------- + 1 file changed, 488 insertions(+), 517 deletions(-) + +commit 2e0656063b2c2633ca0caaa9b2e119c3eaee37cf +Author: Rajesh Ranjan +AuthorDate: Mon Aug 24 16:52:25 2009 +0530 +Commit: Rajesh Ranjan +CommitDate: Mon Aug 24 16:52:25 2009 +0530 + + hindi updated by Rajesh Ranjan + + po/hi.po | 1176 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 545 insertions(+), 631 deletions(-) + +commit 4a5e71b847729341243df2f2a2cd0a8284f4b099 +Author: Sweta Kothari +AuthorDate: Mon Aug 24 14:23:56 2009 +0530 +Commit: Sweta Kothari +CommitDate: Mon Aug 24 14:23:56 2009 +0530 + + Updated Gujarati Translations + + po/gu.po | 1175 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 543 insertions(+), 632 deletions(-) + +commit 90f9eb6e40b6d8c37ca51467f915507ed6ceddc2 +Author: Duarte Loreto +AuthorDate: Sun Aug 23 14:59:14 2009 +0100 +Commit: Duarte Loreto +CommitDate: Sun Aug 23 14:59:14 2009 +0100 + + Updated Portuguese translation + + po/pt.po | 1088 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 540 insertions(+), 548 deletions(-) + +commit feedeb1d12fa490a8685fd00b492fdc054e07883 +Author: Changwoo Ryu +AuthorDate: Sun Aug 23 00:50:28 2009 +0900 +Commit: Changwoo Ryu +CommitDate: Sun Aug 23 00:50:28 2009 +0900 + + Update Korean translation + + po/ko.po | 1126 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 558 insertions(+), 568 deletions(-) + +commit 8ef30758d56b21aa20c23e5c90a78142183003ed +Author: Christian Persch +AuthorDate: Thu Aug 20 15:13:43 2009 +0200 +Commit: Christian Persch +CommitDate: Sat Aug 22 15:08:43 2009 +0200 + + Preserve errno + + When using errno in g_set_error with _(), preserve errno. Bug #592457. + + glib/gconvert.c | 22 +++++++++++++++------- + glib/gdir.c | 13 +++++++++---- + glib/gspawn-win32.c | 9 ++++++--- + glib/gspawn.c | 27 +++++++++++++++++++-------- + 4 files changed, 49 insertions(+), 22 deletions(-) + +commit feff29aefc75459bc1b39235cb0e842fbf0fa2b4 +Author: A S Alam +AuthorDate: Sat Aug 22 06:15:29 2009 +0530 +Commit: A S Alam +CommitDate: Sat Aug 22 06:15:29 2009 +0530 + + Update Punjabi after Review + + po/pa.po | 1094 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 527 insertions(+), 567 deletions(-) + +commit a568b054adf4abadfaa1bad293d484771d57f333 +Author: Tommi Vainikainen +AuthorDate: Fri Aug 21 23:43:53 2009 +0300 +Commit: Tommi Vainikainen +CommitDate: Fri Aug 21 23:43:53 2009 +0300 + + Updated Finnish translation + + po/fi.po | 1278 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 635 insertions(+), 643 deletions(-) + +commit 956996ddaa82ca5cfeb8e70191ef6b7716186a7c +Author: Takayuki KUSANO +AuthorDate: Fri Aug 21 00:15:12 2009 +0900 +Commit: Takayuki KUSANO +CommitDate: Fri Aug 21 00:15:12 2009 +0900 + + Update Japanese translation. + + po/ja.po | 233 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 115 insertions(+), 118 deletions(-) + +commit 2a880831edc4c22ed5ada05a31ab8a4f24b7d3e1 +Author: Tomasz Dominikowski +AuthorDate: Thu Aug 20 11:55:03 2009 +0200 +Commit: Tomasz Dominikowski +CommitDate: Thu Aug 20 11:55:03 2009 +0200 + + Updated Polish translation + + po/pl.po | 1421 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 659 insertions(+), 762 deletions(-) + +commit cd5bd15987b573a436e715e59b0c651e50534bc1 +Author: Dan Winship +AuthorDate: Wed Aug 19 12:12:06 2009 -0400 +Commit: Dan Winship +CommitDate: Wed Aug 19 12:12:15 2009 -0400 + + Use MSG_NOSIGNAL in GSocket if it's available + + Even though we ignore SIGPIPE, gdb will still stop when the process + receives one, which sometimes confuses people into thinking the app + has crashed (eg, bug 578984, bug 590420), and is annoying anyway. So + use MSG_NOSIGNAL if it's there. + + http://bugzilla.gnome.org/show_bug.cgi?id=591378 + + gio/gsocket.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +commit 021dd960cf9c02b0ea59cbfa1db603d3f9a467f0 +Author: Dan Winship +AuthorDate: Wed Aug 19 12:07:53 2009 -0400 +Commit: Dan Winship +CommitDate: Wed Aug 19 12:08:15 2009 -0400 + + Re-run res_init() when resolv.conf changes + + libc caches the contents of resolv.conf, so if it changes (eg, because + the network state changed), we need re-run res_init(). + + http://bugzilla.gnome.org/show_bug.cgi?id=584246 + + gio/gnetworkingprivate.h | 4 +++ + gio/gresolver.c | 68 + +++++++++++++++++++++++++++++++++++++++++++++ + gio/gresolver.h | 9 +++++- + gio/gunixresolver.c | 72 + ++++++++++++++++++++++++++++++++---------------- + gio/tests/resolver.c | 3 ++ + 5 files changed, 132 insertions(+), 24 deletions(-) + +commit 6db03d73a45bc0acae0bb96849733bf0ab7ad454 +Author: Benjamin Otte +AuthorDate: Tue Aug 11 18:50:28 2009 +0200 +Commit: Benjamin Otte +CommitDate: Wed Aug 19 11:02:06 2009 +0200 + + When creating a pipe for a cancelled cancellable, write to it + + Includes (untested) fix for win32 that calls SetEvent() in that case. + + gio/gcancellable.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +commit faae032ad0579acf756e8848ebedbfda69d5b3be +Author: Benjamin Otte +AuthorDate: Tue Aug 11 15:12:20 2009 +0200 +Commit: Benjamin Otte +CommitDate: Wed Aug 19 11:02:06 2009 +0200 + + Use g_cancellable_release_fd() + + Part of: Bug 591388 - number of GCancellables available is too + limited + + gio/gsocket.c | 10 +++++++++- + gio/gunixinputstream.c | 3 ++- + gio/gunixoutputstream.c | 1 + + 3 files changed, 12 insertions(+), 2 deletions(-) + +commit e2c97292c21dbb57d34d812cf48b331ca5cf0d60 +Author: Benjamin Otte +AuthorDate: Tue Aug 11 15:04:43 2009 +0200 +Commit: Benjamin Otte +CommitDate: Wed Aug 19 11:02:06 2009 +0200 + + Implement g_cancellable_release_fd() + + Part of: Bug 591388 - number of GCancellables available is too + limited + + gio/gcancellable.c | 77 + ++++++++++++++++++++++++++++++++++++++++-------------- + 1 file changed, 58 insertions(+), 19 deletions(-) + +commit 63426886ff4066fefbeaf2e6b08a6c04b39a7890 +Author: Benjamin Otte +AuthorDate: Tue Aug 11 14:52:56 2009 +0200 +Commit: Benjamin Otte +CommitDate: Wed Aug 19 11:02:05 2009 +0200 + + Add g_cancellable_release_fd() + + This patch only adds the function. The function is a NOP. + See the API documentation for a rationale. + + Part of: Bug 591388 - number of GCancellables available is too + limited + + docs/reference/gio/gio-sections.txt | 1 + + gio/gcancellable.c | 30 ++++++++++++++++++++++++++++++ + gio/gcancellable.h | 1 + + gio/ginputstream.c | 2 +- + gio/gio.symbols | 1 + + 5 files changed, 34 insertions(+), 1 deletion(-) + +commit bb8e4f06ab1a0ada2c8835284ec5f853378694e2 +Author: Benjamin Otte +AuthorDate: Thu Aug 13 20:19:15 2009 +0200 +Commit: Benjamin Otte +CommitDate: Wed Aug 19 11:02:05 2009 +0200 + + Bug 591714 – Figure out failure handling for + g_cancellable_make_pollfd() + + Make g_cancellable_make_pollfd() return a gboolean that indicates + its error + status. Update the code that calls this function accordingly. + + gio/gcancellable.c | 38 +++++++++++++++++++++++++------------- + gio/gcancellable.h | 2 +- + gio/gsocket.c | 19 ++++++------------- + gio/gunixinputstream.c | 3 +-- + gio/gunixoutputstream.c | 3 +-- + 5 files changed, 34 insertions(+), 31 deletions(-) + +commit a0e3b4ae8447f0831397384a54f4be276e84764b +Author: Og B. Maciel +AuthorDate: Tue Aug 18 23:09:12 2009 -0400 +Commit: Og B. Maciel +CommitDate: Tue Aug 18 23:09:12 2009 -0400 + + Updated Brazilian Portuguese translation. + + po/pt_BR.po | 19 +++++++------------ + 1 file changed, 7 insertions(+), 12 deletions(-) + +commit 981d14e85ccf8d1dc721bd44e030728eff9b2501 +Author: Benjamin Otte +AuthorDate: Thu Aug 6 18:17:32 2009 +0200 +Commit: Benjamin Otte +CommitDate: Tue Aug 18 11:35:01 2009 +0200 + + Improve documentation for g_error_matches() + + glib/gerror.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit a6ac4e90d5ab6a311aab545745ceb3e375bf65a4 +Author: Benjamin Otte +AuthorDate: Mon Jul 27 18:48:11 2009 +0200 +Commit: Benjamin Otte +CommitDate: Tue Aug 18 11:34:20 2009 +0200 + + Fix multiple returns in gtk-doc comment + + gio/gsocketservice.c | 1 - + 1 file changed, 1 deletion(-) + +commit 8f6d26e9647db4e5f2336319e1b0ae439f54b75d +Author: Dan Winship +AuthorDate: Mon Aug 17 13:20:49 2009 -0400 +Commit: Dan Winship +CommitDate: Mon Aug 17 13:20:49 2009 -0400 + + g_inet_socket_address_to_native: properly zero out sockaddr_in6 + + gio/ginetsocketaddress.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit aa5293612f2eb0a6a02fbf74eb56bbf05faba8df +Author: Ask H. Larsen +AuthorDate: Sun Aug 16 19:10:50 2009 +0200 +Commit: Kenneth Nielsen +CommitDate: Sun Aug 16 19:10:50 2009 +0200 + + Updated Danish translation + + po/da.po | 1090 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 544 insertions(+), 546 deletions(-) + +commit 2db41f3df58a3d926da2a4afa7014118db2913e2 +Author: Mattias Põldaru +AuthorDate: Sat Aug 15 08:21:01 2009 +0300 +Commit: Priit Laes +CommitDate: Sat Aug 15 08:21:01 2009 +0300 + + Updating Estonian translation + + po/et.po | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +commit 406c3aa019a6ce51534f170fd5b82108382a4c6f +Author: Shixin Zeng +AuthorDate: Fri Aug 14 23:21:12 2009 +0300 +Commit: Tor Lillqvist +CommitDate: Fri Aug 14 23:23:28 2009 +0300 + + [Win32] Avoid superfluous '/' from g_file_resolve_relative_path() + + Patch from bug #591532. + + gio/win32/gwinhttpfile.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +commit 1b298d6a1bc3b4e5c1c701f26e3981cdae4b89eb +Author: Tor Lillqvist +AuthorDate: Fri Aug 14 22:59:47 2009 +0300 +Commit: Tor Lillqvist +CommitDate: Fri Aug 14 23:04:55 2009 +0300 + + Avoid gcc warning on Windows + + Avoid "function declaration isn't a prototype" warnings from gcc 4.4 + in the Windows-specific code. + + glib/gutils.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit c24f6e55276fac68b08df34b0d350f65afe994d9 +Author: Frédéric Péters +AuthorDate: Fri Aug 14 21:00:41 2009 +0200 +Commit: Frédéric Péters +CommitDate: Fri Aug 14 21:36:42 2009 +0200 + + Update GLIB_CHECK_COMPILE_WARNINGS macro to work with Autoconf 2.64 + + Quoting its NEWS file: "The m4sh macros AS_IF and AS_CASE can now be + used in shell lists. The responsibility for supplying a trailing + newline now belongs to the call site, but since most users did not add + dnl, this generally results in fewer empty lines in configure." + + http://bugzilla.gnome.org/show_bug.cgi?id=591840 + + acglib.m4 | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit eae6bdd397ef94a6f7c1a3e42c750b948a659fd2 +Author: Priit Laes +AuthorDate: Fri Aug 14 22:09:18 2009 +0300 +Commit: Priit Laes +CommitDate: Fri Aug 14 22:09:18 2009 +0300 + + Updating Estonian translation + + po/et.po | 118 + ++++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 56 insertions(+), 62 deletions(-) + +commit 37dbffe7d8b0f0985f9c4d37d5df604d81ff0bd0 +Author: krishnababu k +AuthorDate: Fri Aug 14 16:56:09 2009 +0530 +Commit: krishnababu k +CommitDate: Fri Aug 14 16:56:09 2009 +0530 + + Updated Telugu Translations + + po/te.po | 921 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 461 insertions(+), 460 deletions(-) + +commit 8b117b225e426b73c8fb2abc2ac5e56ed739ac96 +Author: Alexander Shopov +AuthorDate: Thu Aug 13 07:12:29 2009 +0300 +Commit: Alexander Shopov +CommitDate: Thu Aug 13 07:14:39 2009 +0300 + + Updated Bulgarian translation + + po/bg.po | 1140 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 529 insertions(+), 611 deletions(-) + +commit 4f8dfc6282cc29430775e1ebd2652d67c08b1a6c +Author: Henrique P Machado +AuthorDate: Tue Aug 11 23:40:09 2009 -0300 +Commit: Leonardo Ferreira Fontenelle +CommitDate: Tue Aug 11 23:40:09 2009 -0300 + + Updated Brazilian Portuguese translation. + + po/pt_BR.po | 1087 + +++++++++++++++++++++++++++++------------------------------ + 1 file changed, 542 insertions(+), 545 deletions(-) + +commit d20a188b1250ab3cf211d684429127d99378e886 +Author: Alexander Larsson +AuthorDate: Tue Aug 11 20:22:51 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue Aug 11 20:26:12 2009 +0200 + + Only fsync if the existing file is > 0 bytes + + This means we don't sync in the case where we created an (empty) + temp file and now replace it with the data. + + This fixes (among other things) the performance of trashing files. + + glib/gfileutils.c | 49 +++++++++++++++++++++++++++---------------------- + 1 file changed, 27 insertions(+), 22 deletions(-) + +commit 79a70dc80056859f10b39c711ee43389e8c32a7f +Author: Luca Ferretti +AuthorDate: Tue Aug 11 01:27:08 2009 +0200 +Commit: Luca Ferretti +CommitDate: Tue Aug 11 01:27:08 2009 +0200 + + Updated Italian translation + + po/it.po | 1079 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 536 insertions(+), 543 deletions(-) + +commit c18bcd6e8e385628e55166eabbd93d5c87c82da0 +Author: Antón Méixome +AuthorDate: Mon Aug 10 16:26:46 2009 +0200 +Commit: Gil Forcada +CommitDate: Mon Aug 10 16:26:46 2009 +0200 + + Updated Galician translation + + po/gl.po | 129 + +++++++++++++++++++++++++++++---------------------------------- + 1 file changed, 60 insertions(+), 69 deletions(-) + +commit a465508e2d3d52b919ccbf9f2c5bd90395922904 +Author: Craig Loftus +AuthorDate: Thu Jul 23 20:24:22 2009 +0100 +Commit: David King +CommitDate: Mon Aug 10 15:40:01 2009 +0200 + + Migrate gbase64 docs from SGML template to inline comments + + Fixes bug #589649. + + Signed-off-by: David King + + docs/reference/glib/tmpl/base64.sgml | 105 + ----------------------------------- + glib/gbase64.c | 20 +++++++ + 2 files changed, 20 insertions(+), 105 deletions(-) + +commit 32c84729f5dac30170cf20aa44e6857a44e5349f +Author: Inaki Larranaga Murgoitio +AuthorDate: Mon Aug 10 13:57:21 2009 +0200 +Commit: dooteo +CommitDate: Mon Aug 10 13:57:21 2009 +0200 + + Updated Basque language + + po/eu.po | 1209 + ++++++++++++++++++++++++++++---------------------------------- + 1 file changed, 551 insertions(+), 658 deletions(-) + +commit f2d779aa0f5ba676fa8715710cebd2607cb339a3 +Author: Antón Méixome +AuthorDate: Sun Aug 9 16:35:09 2009 +0200 +Commit: Ignacio Casal Quinteiro +CommitDate: Sun Aug 9 16:35:09 2009 +0200 + + Updated Galician Translation + + po/gl.po | 1105 + +++++++++++++++++++++++++++++--------------------------------- + 1 file changed, 514 insertions(+), 591 deletions(-) + +commit f04a35e43bece5e51061dcef2ebc6dd6204a1c1b +Author: Matthias Clasen +AuthorDate: Fri Jul 17 20:34:16 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sat Aug 8 21:44:23 2009 -0400 + + Bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 5827f6674282d627efbb9c68d32577470d722192 +Author: Seán de Búrca +AuthorDate: Sat Aug 8 01:53:34 2009 -0600 +Commit: Seán de Búrca +CommitDate: Sat Aug 8 01:53:34 2009 -0600 + + Updated Irish translation + + po/ga.po | 1125 + ++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 545 insertions(+), 580 deletions(-) + +commit 93d40918c59981f863d31a10d9f66a2a9b3177ff +Author: Philip Withnall +AuthorDate: Sat Aug 1 16:46:02 2009 +0100 +Commit: Philip Withnall +CommitDate: Thu Aug 6 18:02:11 2009 +0100 + + Added clarification to mutex free functions + + Clarified that it is A Bad Idea to free a mutex when it's locked. + + docs/reference/glib/tmpl/threads.sgml | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +commit faccd7fdf3edb8416aacc0191fdb6c5b2965ac6d +Author: Ivar Smolin +AuthorDate: Wed Aug 5 13:29:26 2009 +0300 +Commit: Priit Laes +CommitDate: Wed Aug 5 13:29:26 2009 +0300 + + Updating Estonian translation + + po/et.po | 513 + ++++----------------------------------------------------------- + 1 file changed, 27 insertions(+), 486 deletions(-) + +commit 405823aeea24fb2ce8d47e0c09e46607117fd27f +Author: Kjartan Maraas +AuthorDate: Mon Aug 3 00:16:54 2009 +0200 +Commit: Kjartan Maraas +CommitDate: Mon Aug 3 00:16:54 2009 +0200 + + Updated Norwegian bokmål translation. + + po/nb.po | 54 +++++++++++++++++++++++++----------------------------- + 1 file changed, 25 insertions(+), 29 deletions(-) + +commit 882e36106d7a5d04c29af87e4e9f7aa4bc3d5e08 +Author: Dan Winship +AuthorDate: Thu Jul 30 11:18:35 2009 -0400 +Commit: Dan Winship +CommitDate: Thu Jul 30 11:18:35 2009 -0400 + + Fix a bad void return. #588901 + + gio/gtcpconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit f34b1f024feb57e6eb78728d46ff2bbf2ca19453 +Author: Dan Winship +AuthorDate: Wed Jul 29 22:35:07 2009 -0400 +Commit: Dan Winship +CommitDate: Wed Jul 29 22:35:07 2009 -0400 + + Conditionalize portability #includes in g-asyncns.h + + http://bugzilla.gnome.org/show_bug.cgi?id=589988 + + gio/libasyncns/g-asyncns.h | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 81de534cf73b63add07ff93d851824da80eb4280 +Author: Daniel Nylander +AuthorDate: Tue Jul 28 01:59:05 2009 +0200 +Commit: Daniel Nylander +CommitDate: Tue Jul 28 01:59:05 2009 +0200 + + Updated Swedish translation + + po/sv.po | 1547 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 782 insertions(+), 765 deletions(-) + +commit 45067ab9e97de0992acd4004d6e4de957d6c28f4 +Author: Dan Winship +AuthorDate: Thu Jul 23 16:27:01 2009 -0400 +Commit: Dan Winship +CommitDate: Thu Jul 23 16:27:01 2009 -0400 + + Fix leaks in GSocketClient and GThreadedResolver + + Also update gio/tests/send-data.c to test async connection, and free + more stuff in several tests to make leaks easier to see. + + gio/gsocketclient.c | 3 +++ + gio/gthreadedresolver.c | 6 +++++- + gio/tests/send-data.c | 25 +++++++++++++++++++++---- + gio/tests/socket-client.c | 2 ++ + gio/tests/socket-server.c | 1 + + 5 files changed, 32 insertions(+), 5 deletions(-) + +commit 66ff2542d32c93226a28ad1d0a60e83884b26910 +Author: Kjartan Maraas +AuthorDate: Wed Jul 22 18:58:57 2009 +0200 +Commit: Kjartan Maraas +CommitDate: Wed Jul 22 18:58:57 2009 +0200 + + Updated Norwegian bokmål translation. + + po/nb.po | 987 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 492 insertions(+), 495 deletions(-) + +commit aac978ec7240cdab768c1d66c0e9a94c714dff43 +Author: Tristan Van Berkom +AuthorDate: Tue Jul 21 12:58:39 2009 -0400 +Commit: Tristan Van Berkom +CommitDate: Tue Jul 21 12:58:39 2009 -0400 + + Added clarification to GArray->len documentation + + Clarify that GArray->len does not include the possible + terminating zero element. + + docs/reference/glib/tmpl/arrays.sgml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4654a7d593aed9ab0e131abe250e7e488283c24f +Author: Lin Ma +AuthorDate: Tue Jul 21 10:45:25 2009 +0800 +Commit: Lin Ma +CommitDate: Tue Jul 21 10:45:25 2009 +0800 + + Fixed a missing head which will cause crashes for 64bit applications + + Without that head, the returned pointer will be truncated to 32bit, + then + causes crashes for 64bit applications. + + gio/fen/fen-helper.c | 1 + + 1 file changed, 1 insertion(+) + +commit ba6be2035d9bd43b1a873492e189d0bccbd20178 +Author: Behdad Esfahbod +AuthorDate: Fri Jun 5 23:24:28 2009 -0400 +Commit: Behdad Esfahbod +CommitDate: Mon Jul 20 16:03:25 2009 -0400 + + [gbsearcharray] Use malloc() instead of realloc(NULL,...) + + glib/gbsearcharray.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit dfda26d1a980e6e096d93ecfec8f59872b80dee4 +Author: Benjamin Otte +AuthorDate: Mon Jul 20 14:29:32 2009 +0200 +Commit: Benjamin Otte +CommitDate: Mon Jul 20 14:29:51 2009 +0200 + + Propagate the right error + + gio/gsocketclient.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2cf3e2ed275f8502e1a20195290fa18ebe489216 +Author: Jorge González +AuthorDate: Sun Jul 19 13:15:06 2009 +0200 +Commit: Jorge González +CommitDate: Sun Jul 19 13:15:06 2009 +0200 + + Updated Spanish translation + + po/es.po | 1035 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 515 insertions(+), 520 deletions(-) + +commit 555aa2d28db4f72373d9cfec4045ea1d0f45bb46 +Author: Theppitak Karoonboonyanan +AuthorDate: Sun Jul 19 16:33:06 2009 +0700 +Commit: Theppitak Karoonboonyanan +CommitDate: Sun Jul 19 16:33:06 2009 +0700 + + Updated Thai translation. + + po/th.po | 169 + +++++++++++++++++++++++++++++---------------------------------- + 1 file changed, 78 insertions(+), 91 deletions(-) + +commit f8d1201248cceab59bb971f4906a73f2b0eb0b96 +Author: Chao-Hsiung Liao +AuthorDate: Sat Jul 18 21:09:14 2009 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Sat Jul 18 21:09:14 2009 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 1051 + +++++++++++++++++++++++++++++------------------------------ + po/zh_TW.po | 1036 + +++++++++++++++++++++++++++++----------------------------- + 2 files changed, 1038 insertions(+), 1049 deletions(-) + +commit 9c278ded7d9a4db91dbe96aeb13b6cbb7841525b +Author: Matthias Clasen +AuthorDate: Fri Jul 17 20:31:28 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 17 20:31:28 2009 -0400 + + 2.21.4 + + docs/reference/glib/tmpl/trees-binary.sgml | 17 + + po/am.po | 228 ++++- + po/ar.po | 234 ++++- + po/as.po | 234 ++++- + po/az.po | 233 ++++- + po/be.po | 250 ++++- + po/be@latin.po | 250 ++++- + po/bg.po | 234 ++++- + po/bn.po | 232 ++++- + po/bn_IN.po | 234 ++++- + po/bs.po | 233 ++++- + po/ca.po | 237 ++++- + po/ca@valencia.po | 237 ++++- + po/cs.po | 234 ++++- + po/cy.po | 232 ++++- + po/da.po | 237 ++++- + po/de.po | 234 ++++- + po/dz.po | 232 ++++- + po/el.po | 240 ++++- + po/en_CA.po | 234 ++++- + po/en_GB.po | 237 ++++- + po/eo.po | 232 ++++- + po/es.po | 1026 +++++++++++--------- + po/et.po | 234 ++++- + po/eu.po | 234 ++++- + po/fa.po | 233 ++++- + po/fi.po | 234 ++++- + po/fr.po | 939 ++++++++++--------- + po/ga.po | 229 ++++- + po/gl.po | 234 ++++- + po/gu.po | 234 ++++- + po/he.po | 948 +++++++++---------- + po/hi.po | 234 ++++- + po/hr.po | 229 ++++- + po/hu.po | 234 ++++- + po/hy.po | 229 ++++- + po/id.po | 232 ++++- + po/is.po | 233 ++++- + po/it.po | 234 ++++- + po/ja.po | 234 ++++- + po/ka.po | 230 ++++- + po/kn.po | 234 ++++- + po/ko.po | 234 ++++- + po/ku.po | 228 ++++- + po/lt.po | 234 ++++- + po/lv.po | 232 ++++- + po/mai.po | 233 ++++- + po/mg.po | 229 ++++- + po/mk.po | 234 ++++- + po/ml.po | 234 ++++- + po/mn.po | 233 ++++- + po/mr.po | 234 ++++- + po/ms.po | 233 ++++- + po/nb.po | 1026 +++++++++++--------- + po/ne.po | 229 ++++- + po/nl.po | 242 ++++- + po/nn.po | 234 ++++- + po/oc.po | 228 ++++- + po/or.po | 234 ++++- + po/pa.po | 234 ++++- + po/pl.po | 234 ++++- + po/ps.po | 230 ++++- + po/pt.po | 237 ++++- + po/pt_BR.po | 234 ++++- + po/ro.po | 234 ++++- + po/ru.po | 234 ++++- + po/rw.po | 245 ++++- + po/si.po | 230 ++++- + po/sk.po | 231 ++++- + po/sl.po | 234 ++++- + po/sq.po | 285 +++++- + po/sr.po | 233 ++++- + po/sr@ije.po | 235 ++++- + po/sr@latin.po | 233 ++++- + po/sv.po | 1406 + ++++++++++++++++------------ + po/ta.po | 234 ++++- + po/te.po | 234 ++++- + po/th.po | 237 ++++- + po/tl.po | 232 ++++- + po/tr.po | 234 ++++- + po/tt.po | 231 ++++- + po/uk.po | 1024 ++++++++++++-------- + po/vi.po | 234 ++++- + po/wa.po | 233 ++++- + po/xh.po | 233 ++++- + po/yi.po | 232 ++++- + po/zh_CN.po | 234 ++++- + po/zh_HK.po | 1041 +++++++++++--------- + po/zh_TW.po | 1026 +++++++++++--------- + 89 files changed, 21688 insertions(+), 5524 deletions(-) + +commit 4e273d4650621ea095dda5a5e3f1bac4ee8299ae +Author: Matthias Clasen +AuthorDate: Fri Jul 17 19:01:47 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 17 19:01:47 2009 -0400 + + Updates + + NEWS | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +commit e845e09524fb3be058688050e97f976b11a247dc +Author: Yair Hershkovitz +AuthorDate: Fri Jul 17 22:53:56 2009 +0300 +Commit: Yair Hershkovitz +CommitDate: Fri Jul 17 22:53:56 2009 +0300 + + Updated Hebrew translation + + po/he.po | 1062 + +++++++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 633 insertions(+), 429 deletions(-) + +commit e4bf2ac41d605a2bd3c858790a0fe36b86bcf7d9 +Author: Martin Nordholts +AuthorDate: Fri Jul 17 16:49:53 2009 +0200 +Commit: Martin Nordholts +CommitDate: Fri Jul 17 16:57:37 2009 +0200 + + Support silent build rules with automake 1.11 + + Support silent build rules, requires at least automake-1.11. Enable by + either passing --enable-silent-rules to configure or passing V=0 to + make. Bug #588863. + + configure.in | 4 ++++ + 1 file changed, 4 insertions(+) + +commit ad0c04c6e9e2ef16dce2e29aeba51f9a7ae8477c +Author: Claude Paroz +AuthorDate: Tue Jul 14 22:39:31 2009 +0200 +Commit: Claude Paroz +CommitDate: Tue Jul 14 22:39:31 2009 +0200 + + Updated French translation + + po/fr.po | 1134 + ++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 620 insertions(+), 514 deletions(-) + +commit 9bc208835760823f2fac4e406973d6387805416e +Author: Claude Paroz +AuthorDate: Tue Jul 14 18:54:58 2009 +0200 +Commit: Claude Paroz +CommitDate: Tue Jul 14 18:54:58 2009 +0200 + + Add missing files in POTFILES.in + + po/POTFILES.in | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +commit d439c22e0ff7cec437cdc4037f7621c762ea3181 +Author: Kjartan Maraas +AuthorDate: Mon Jul 13 11:20:09 2009 +0200 +Commit: Kjartan Maraas +CommitDate: Mon Jul 13 11:20:09 2009 +0200 + + Updated Norwegian bokmål translation. + + po/nb.po | 855 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 424 insertions(+), 431 deletions(-) + +commit e2844da68adb626f20ff9d02d51ca4259f56d55d +Author: Chao-Hsiung Liao +AuthorDate: Sun Jul 12 15:19:23 2009 +0800 +Commit: Chao-Hsiung Liao +CommitDate: Sun Jul 12 15:19:23 2009 +0800 + + Updated Traditional Chinese translation(Hong Kong and Taiwan) + + po/zh_HK.po | 917 + ++++++++++++++++++++++++++++++------------------------------ + po/zh_TW.po | 890 + +++++++++++++++++++++++++++++----------------------------- + 2 files changed, 898 insertions(+), 909 deletions(-) + +commit f7f16dc3a2da52183053c5cc0967f7fa6547f65a +Author: Matthias Clasen +AuthorDate: Fri Jul 10 22:33:03 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 10 22:33:03 2009 -0400 + + Remove outdated paragraph + + We no longer use PATCH or API keywords. + + README.in | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +commit 7ba9674d719af6eaa4e7e661be34732215bdfe38 +Author: Matthias Clasen +AuthorDate: Fri Jul 10 13:13:18 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 10 13:13:18 2009 -0400 + + Avoid some compiler warnings. + + gobject/gtype.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 91925d2cf040730f89935a39c0d7aef3b4eb59dd +Author: Matthias Clasen +AuthorDate: Fri Jul 10 13:11:28 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 10 13:11:28 2009 -0400 + + Another possible error code clash, yay + + glib/gstrfuncs.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c23536cefeacc72d03ad8a83f315758d751cb127 +Author: Matthias Clasen +AuthorDate: Fri Jul 10 11:18:31 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jul 10 11:18:31 2009 -0400 + + Improve g_str_equal docs + + Add a reference to g_strcmp0(), cf. bug 587938. + + glib/gstring.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit 6f48065958e24927c84f2983f746e39a3212998c +Author: Benjamin Otte +AuthorDate: Thu Jul 9 15:34:00 2009 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jul 9 15:35:43 2009 +0200 + + Fix a typo in GRegex documentation + + docs/reference/glib/tmpl/gregex.sgml | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit c6884a7ec9999b6041dcad8ff3f7c7d93c55c0d2 +Author: Maxim V. Dziumanenko +AuthorDate: Thu Jul 9 10:51:15 2009 +0300 +Commit: Maxim V. Dziumanenko +CommitDate: Thu Jul 9 10:51:15 2009 +0300 + + Updated Ukrainian translation + + po/uk.po | 912 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 454 insertions(+), 458 deletions(-) + +commit 4cecb335f4b1d8e39c9402788fb37b7173187dd0 +Author: Jorge González +AuthorDate: Tue Jul 7 22:34:35 2009 +0200 +Commit: Jorge González +CommitDate: Tue Jul 7 22:34:35 2009 +0200 + + Updated Spanish translation + + po/es.po | 852 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 425 insertions(+), 427 deletions(-) + +commit 593ea5f6b08c6fb297c1faffed3ada8fb2d95c66 +Author: Ryan Lortie +AuthorDate: Tue Jul 7 21:29:46 2009 +0100 +Commit: Ryan Lortie +CommitDate: Tue Jul 7 21:29:46 2009 +0100 + + Ensure GTree is consistent after _destroy() + + See comment #9 on bug 587773 + + glib/gtree.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 7d2bb5f1b1ce0289628b12d98369f3fca92cde24 +Author: Daniel Nylander +AuthorDate: Tue Jul 7 19:46:59 2009 +0200 +Commit: Daniel Nylander +CommitDate: Tue Jul 7 19:46:59 2009 +0200 + + Updated Swedish translation + + po/sv.po | 1263 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 635 insertions(+), 628 deletions(-) + +commit 474ba7dbc37e352d39c0057bd2a31504828dde36 +Author: Tor Lillqvist +AuthorDate: Tue Jul 7 14:37:45 2009 +0300 +Commit: Tor Lillqvist +CommitDate: Tue Jul 7 14:39:10 2009 +0300 + + Make it compile on Windows. + + Surround a symlink-related code snippet with ifdef S_ISLNK. + + gio/glocalfileinfo.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 10ba0c2e5c6ed069420ec926c1094331c44fb71e +Merge: eff73c9 8792d86 +Author: Ryan Lortie +AuthorDate: Tue Jul 7 09:45:31 2009 +0100 +Commit: Ryan Lortie +CommitDate: Tue Jul 7 09:45:31 2009 +0100 + + Merge branch 'tree-refcount' + +commit eff73c95e8bb971ccc134e79c15f73ea5a237d30 +Author: Matthias Clasen +AuthorDate: Mon Jul 6 00:33:49 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 6 00:33:49 2009 -0400 + + Bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 400959ddbdddaed22cfd7e898a4414730ecb3ec4 +Author: Matthias Clasen +AuthorDate: Mon Jul 6 00:31:47 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 6 00:31:47 2009 -0400 + + 2.21.3 + + docs/reference/glib/tmpl/conversions.sgml | 9 - + docs/reference/glib/tmpl/gurifuncs.sgml | 9 + + docs/reference/gobject/glib-mkenums.1 | 11 +- + po/am.po | 195 +++-- + po/ar.po | 199 +++-- + po/as.po | 199 +++-- + po/az.po | 195 +++-- + po/be.po | 195 +++-- + po/be@latin.po | 199 +++-- + po/bg.po | 199 +++-- + po/bn.po | 195 +++-- + po/bn_IN.po | 199 +++-- + po/bs.po | 195 +++-- + po/ca.po | 199 +++-- + po/ca@valencia.po | 199 +++-- + po/cs.po | 199 +++-- + po/cy.po | 195 +++-- + po/da.po | 199 +++-- + po/de.po | 199 +++-- + po/dz.po | 195 +++-- + po/el.po | 199 +++-- + po/en_CA.po | 199 +++-- + po/en_GB.po | 199 +++-- + po/eo.po | 195 +++-- + po/es.po | 859 +++++++++++---------- + po/et.po | 447 ++++++++++- + po/eu.po | 199 +++-- + po/fa.po | 195 +++-- + po/fi.po | 199 +++-- + po/fr.po | 199 +++-- + po/ga.po | 195 +++-- + po/gl.po | 199 +++-- + po/gu.po | 199 +++-- + po/he.po | 1182 + ++++++++++++++--------------- + po/hi.po | 199 +++-- + po/hr.po | 195 +++-- + po/hu.po | 199 +++-- + po/hy.po | 195 +++-- + po/id.po | 195 +++-- + po/is.po | 195 +++-- + po/it.po | 199 +++-- + po/ja.po | 199 +++-- + po/ka.po | 195 +++-- + po/kn.po | 199 +++-- + po/ko.po | 199 +++-- + po/ku.po | 195 +++-- + po/lt.po | 199 +++-- + po/lv.po | 195 +++-- + po/mai.po | 199 +++-- + po/mg.po | 195 +++-- + po/mk.po | 199 +++-- + po/ml.po | 199 +++-- + po/mn.po | 195 +++-- + po/mr.po | 199 +++-- + po/ms.po | 195 +++-- + po/nb.po | 199 +++-- + po/ne.po | 195 +++-- + po/nl.po | 204 +++-- + po/nn.po | 199 +++-- + po/oc.po | 195 +++-- + po/or.po | 199 +++-- + po/pa.po | 199 +++-- + po/pl.po | 199 +++-- + po/ps.po | 195 +++-- + po/pt.po | 199 +++-- + po/pt_BR.po | 199 +++-- + po/ro.po | 199 +++-- + po/ru.po | 199 +++-- + po/rw.po | 195 +++-- + po/si.po | 195 +++-- + po/sk.po | 199 +++-- + po/sl.po | 199 +++-- + po/sq.po | 203 +++-- + po/sr.po | 195 +++-- + po/sr@ije.po | 195 +++-- + po/sr@latin.po | 195 +++-- + po/sv.po | 199 +++-- + po/ta.po | 199 +++-- + po/te.po | 199 +++-- + po/th.po | 199 +++-- + po/tl.po | 195 +++-- + po/tr.po | 199 +++-- + po/tt.po | 195 +++-- + po/uk.po | 199 +++-- + po/vi.po | 199 +++-- + po/wa.po | 195 +++-- + po/xh.po | 195 +++-- + po/yi.po | 195 +++-- + po/zh_CN.po | 199 +++-- + po/zh_HK.po | 199 +++-- + po/zh_TW.po | 199 +++-- + 91 files changed, 11231 insertions(+), 8078 deletions(-) + +commit 3d1e8127788d8d406dd7e5d7feaae6d47110f087 +Author: Matthias Clasen +AuthorDate: Mon Jul 6 00:00:42 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jul 6 00:00:42 2009 -0400 + + Document support_thread_contexts + + gio/gfile.h | 1 + + 1 file changed, 1 insertion(+) + +commit d5a51305196ac44b1c9f9edcb93aa688821f60f2 +Author: Matthias Clasen +AuthorDate: Sun Jul 5 23:55:00 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 5 23:55:00 2009 -0400 + + Minor doc fix + + glib/gerror.c | 107 + +++++++++++++++++++++++++++++----------------------------- + 1 file changed, 53 insertions(+), 54 deletions(-) + +commit 563c55bb7176e3fad5ea39061feb8406e5968ef3 +Author: Matthias Clasen +AuthorDate: Sun Jul 5 23:38:09 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 5 23:38:09 2009 -0400 + + Fix a segfault in g_cancellable_cancel + + gio/gcancellable.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 66e9b50b2ccf7498a55f0608cca31bc8cfad741d +Author: Matthias Clasen +AuthorDate: Sun Jul 5 22:55:26 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 5 22:55:26 2009 -0400 + + Updates + + NEWS | 35 +++++++++++++++++++++++++++++++++++ + 1 file changed, 35 insertions(+) + +commit 5694ab7642c9ba6fbb85424e71d1c42c17661dd1 +Author: Matthias Clasen +AuthorDate: Sun Jul 5 22:49:24 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 5 22:49:24 2009 -0400 + + Revert "Move gio tests from gio/tests/ to tests/gio/" + + This reverts commit 2262d76b33094304ece0d0d9cd5920682599a49b. + + Move GIO tests back to where they belong. + + configure.in | 2 +- + gio/Makefile.am | 2 + + gio/tests/.gitignore | 24 + + gio/tests/Makefile.am | 119 ++++ + gio/tests/buffered-input-stream.c | 60 ++ + gio/tests/contexts.c | 190 ++++++ + gio/tests/data-input-stream.c | 336 ++++++++++ + gio/tests/data-output-stream.c | 289 +++++++++ + gio/tests/desktop-app-info.c | 259 ++++++++ + gio/tests/echo-server.c | 73 +++ + gio/tests/filter-streams.c | 239 ++++++++ + gio/tests/g-file-info.c | 125 ++++ + gio/tests/g-file.c | 538 ++++++++++++++++ + gio/tests/g-icon.c | 245 ++++++++ + gio/tests/httpd.c | 183 ++++++ + gio/tests/live-g-file.c | 1211 + +++++++++++++++++++++++++++++++++++++ + gio/tests/live-g-file.txt | 27 + + gio/tests/memory-input-stream.c | 78 +++ + gio/tests/memory-output-stream.c | 100 +++ + gio/tests/readwrite.c | 293 +++++++++ + gio/tests/resolver.c | 506 ++++++++++++++++ + gio/tests/send-data.c | 163 +++++ + gio/tests/simple-async-result.c | 130 ++++ + gio/tests/sleepy-stream.c | 296 +++++++++ + gio/tests/socket-client.c | 298 +++++++++ + gio/tests/socket-server.c | 308 ++++++++++ + gio/tests/srvtarget.c | 158 +++++ + gio/tests/unix-streams.c | 256 ++++++++ + tests/Makefile.am | 2 +- + tests/gio/.gitignore | 24 - + tests/gio/Makefile.am | 119 ---- + tests/gio/buffered-input-stream.c | 60 -- + tests/gio/contexts.c | 190 ------ + tests/gio/data-input-stream.c | 336 ---------- + tests/gio/data-output-stream.c | 289 --------- + tests/gio/desktop-app-info.c | 259 -------- + tests/gio/echo-server.c | 73 --- + tests/gio/filter-streams.c | 239 -------- + tests/gio/g-file-info.c | 125 ---- + tests/gio/g-file.c | 538 ---------------- + tests/gio/g-icon.c | 245 -------- + tests/gio/httpd.c | 183 ------ + tests/gio/live-g-file.c | 1211 + ------------------------------------- + tests/gio/live-g-file.txt | 27 - + tests/gio/memory-input-stream.c | 78 --- + tests/gio/memory-output-stream.c | 100 --- + tests/gio/readwrite.c | 293 --------- + tests/gio/resolver.c | 506 ---------------- + tests/gio/send-data.c | 163 ----- + tests/gio/simple-async-result.c | 130 ---- + tests/gio/sleepy-stream.c | 296 --------- + tests/gio/socket-client.c | 298 --------- + tests/gio/socket-server.c | 308 ---------- + tests/gio/srvtarget.c | 158 ----- + tests/gio/unix-streams.c | 256 -------- + 55 files changed, 6508 insertions(+), 6506 deletions(-) + +commit 8de4be69a9013e3bce57c0a004e1eada4155f623 +Author: Matthias Clasen +AuthorDate: Sun Jul 5 22:35:55 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 5 22:35:55 2009 -0400 + + Move comment to the right place + + gio/gvfs.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit aa065346d3230d5facd45ad1e4d50ceae206773f +Author: Matthias Clasen +AuthorDate: Sun Jul 5 22:26:11 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 5 22:26:11 2009 -0400 + + Register ids for new file attributes + + gio/gfileinfo-priv.h | 12 ++++++++---- + gio/gfileinfo.c | 4 ++++ + 2 files changed, 12 insertions(+), 4 deletions(-) + +commit f043439d7897d3f538dcb2a2d9be9fd7a34ec948 +Author: Matthias Clasen +AuthorDate: Sun Jul 5 22:24:14 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 5 22:24:14 2009 -0400 + + Ignore gfileinfo-priv.h + + docs/reference/gio/Makefile.am | 1 + + 1 file changed, 1 insertion(+) + +commit 99a1c47343d09ab0485c2377e5c8c53e847d84dd +Author: David Zeuthen +AuthorDate: Sun Jul 5 21:59:38 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jul 5 21:59:38 2009 -0400 + + Allow interaction when unmounting mounts + + For details, see bug 587482. The new api: + + - Provide new _with_operation() variants of all unmount and eject + methods + + - Add GMountOperation::show-processes signal + - this can be used to show processes blocking an unmount operation + + - Deprecate all unmount and eject methods + + - Add g_drive_can_start_degraded() method + - this is to avoid auto-starting degraded drives + + - Make g_drive_stop() resp. g_file_stop_mountable() take a + GMountOperation + - these ops were recently added and not yet public API so it's fine + to change how they work + + - Provide a way to poll mountable files, e.g. g_file_poll_mountable() + + - Add some missing file attributes for mountable files + - G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE + - needed for the GDU Nautilus extensions to format a volume + - G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED: + - mimics g_drive_can_start_degraded() + - G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL: + - mimics g_drive_can_poll_for_media() + - G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC + - mimics g_drive_is_media_check_automatic() + + docs/reference/gio/Makefile.am | 2 + + docs/reference/gio/gio-docs.xml | 5 +- + docs/reference/gio/gio-sections.txt | 19 +++ + gio/gdrive.c | 124 ++++++++++++++- + gio/gdrive.h | 32 +++- + gio/gfile.c | 305 + +++++++++++++++++++++++++++++++++++- + gio/gfile.h | 66 ++++++++ + gio/gfileinfo.h | 43 ++++- + gio/gio-marshal.list | 1 + + gio/gio.symbols | 47 ++++-- + gio/gmount.c | 186 +++++++++++++++++++++- + gio/gmount.h | 48 +++++- + gio/gmountoperation.c | 76 +++++++-- + gio/gmountoperation.h | 6 +- + gio/gvolume.c | 89 +++++++++++ + gio/gvolume.h | 23 +++ + 16 files changed, 1027 insertions(+), 45 deletions(-) + +commit c85ff0c75004736d5c8798e3b47a47e0fc67ac70 +Author: Benjamin Otte +AuthorDate: Sun Jul 5 21:34:39 2009 +0200 +Commit: Benjamin Otte +CommitDate: Sun Jul 5 21:36:03 2009 +0200 + + [gio] minor improvements to g_cancellable_cancel() + + - make this function not crash when cancellable is NULL + - avoid locking when the cancellable has already been cancelled + + gio/gcancellable.c | 24 ++++++++++++------------ + 1 file changed, 12 insertions(+), 12 deletions(-) + +commit 8a2e617e41e3f605ea0206832f0c2f346bfe008e +Author: Yaron Shahrabani +AuthorDate: Sun Jul 5 18:06:57 2009 +0300 +Commit: Mark Krapivner +CommitDate: Sun Jul 5 18:06:57 2009 +0300 + + Updated Hebrew translation + + po/he.po | 1186 + ++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 613 insertions(+), 573 deletions(-) + +commit 8792d862db4f61317a45dfe07f7b51e5ccf6741b +Author: Ryan Lortie +AuthorDate: Sun Jul 5 12:30:54 2009 +0100 +Commit: Ryan Lortie +CommitDate: Sun Jul 5 12:30:54 2009 +0100 + + GTree: switch to GSlice, add refcounts (#587773) + + docs/reference/glib/glib-sections.txt | 2 + + glib/glib.symbols | 2 + + glib/gtree.c | 88 + +++++++++++++++++++++++++++++------ + glib/gtree.h | 2 + + 4 files changed, 79 insertions(+), 15 deletions(-) + +commit 18e0bcf02f99a2d4bb35f46369cf4b9237291ef1 +Author: Christian Persch +AuthorDate: Fri Jul 3 21:20:11 2009 +0200 +Commit: Christian Persch +CommitDate: Fri Jul 3 21:20:11 2009 +0200 + + Add @basename@ substitution to glib-mkenums + + Move man page addition to the right place. Bug #587307. + + docs/reference/gobject/glib-mkenums.xml | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 6d1474e7f1f6e964d8db377fe732b9273cf17a84 +Author: Christian Persch +AuthorDate: Mon Jun 29 15:28:22 2009 +0200 +Commit: Christian Persch +CommitDate: Fri Jul 3 20:50:27 2009 +0200 + + Add @basename@ substitution to glib-mkenums + + Since @filename@ contains the full filename as given to the + glib-mkenum + command, possibly including path elements (e.g. when using a + non-srcdir + build), it is unsuitable to use in a #include statement in the + generated + file if one wants to distribute it. This patch adds @basename@ which + expands to the base name of the input filename. Bug #587307. + + gobject/glib-mkenums.1 | 3 +++ + gobject/glib-mkenums.in | 9 +++++++++ + 2 files changed, 12 insertions(+) + +commit dfd83f419c30d7d97c0e223e428c2e12c58199d3 +Author: Mattias Põldaru +AuthorDate: Thu Jul 2 05:23:26 2009 +0300 +Commit: Priit Laes +CommitDate: Thu Jul 2 05:23:26 2009 +0300 + + Updating Estonian translation + + po/et.po | 94 + ++++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 47 insertions(+), 47 deletions(-) + +commit 29e6525b1e5b51323681af156a0641d69fc9fa87 +Author: Dan Winship +AuthorDate: Wed Jul 1 13:52:49 2009 -0400 +Commit: Dan Winship +CommitDate: Wed Jul 1 13:52:49 2009 -0400 + + Two "make check" fixes for late changes to the thread-context patch + + g_simple_async_result_complete() now checks that it's being run from + the correct main loop, so tests/gio/simple-async-result was failing, + because it called it from outside any main loop. (And gio's pltcheck + was failing because I hadn't added g_main_current_source() to it.) + + gio/pltcheck.sh | 2 +- + tests/gio/simple-async-result.c | 37 + ++++++++++++++++++++++++++++++------- + 2 files changed, 31 insertions(+), 8 deletions(-) + +commit 2262d76b33094304ece0d0d9cd5920682599a49b +Author: Benjamin Otte +AuthorDate: Wed Jul 1 19:03:19 2009 +0200 +Commit: Benjamin Otte +CommitDate: Wed Jul 1 19:03:19 2009 +0200 + + Move gio tests from gio/tests/ to tests/gio/ + + This avoids getting tests built every time when working on libgio and + running make in the gio/ directory. + + configure.in | 2 +- + gio/Makefile.am | 2 - + gio/tests/.gitignore | 24 - + gio/tests/Makefile.am | 119 ---- + gio/tests/buffered-input-stream.c | 60 -- + gio/tests/contexts.c | 190 ------ + gio/tests/data-input-stream.c | 336 ---------- + gio/tests/data-output-stream.c | 289 --------- + gio/tests/desktop-app-info.c | 259 -------- + gio/tests/echo-server.c | 73 --- + gio/tests/filter-streams.c | 239 -------- + gio/tests/g-file-info.c | 125 ---- + gio/tests/g-file.c | 538 ---------------- + gio/tests/g-icon.c | 245 -------- + gio/tests/httpd.c | 183 ------ + gio/tests/live-g-file.c | 1211 + ------------------------------------- + gio/tests/live-g-file.txt | 27 - + gio/tests/memory-input-stream.c | 78 --- + gio/tests/memory-output-stream.c | 100 --- + gio/tests/readwrite.c | 293 --------- + gio/tests/resolver.c | 506 ---------------- + gio/tests/send-data.c | 163 ----- + gio/tests/simple-async-result.c | 107 ---- + gio/tests/sleepy-stream.c | 296 --------- + gio/tests/socket-client.c | 298 --------- + gio/tests/socket-server.c | 308 ---------- + gio/tests/srvtarget.c | 158 ----- + gio/tests/unix-streams.c | 256 -------- + tests/Makefile.am | 2 +- + tests/gio/.gitignore | 24 + + tests/gio/Makefile.am | 119 ++++ + tests/gio/buffered-input-stream.c | 60 ++ + tests/gio/contexts.c | 190 ++++++ + tests/gio/data-input-stream.c | 336 ++++++++++ + tests/gio/data-output-stream.c | 289 +++++++++ + tests/gio/desktop-app-info.c | 259 ++++++++ + tests/gio/echo-server.c | 73 +++ + tests/gio/filter-streams.c | 239 ++++++++ + tests/gio/g-file-info.c | 125 ++++ + tests/gio/g-file.c | 538 ++++++++++++++++ + tests/gio/g-icon.c | 245 ++++++++ + tests/gio/httpd.c | 183 ++++++ + tests/gio/live-g-file.c | 1211 + +++++++++++++++++++++++++++++++++++++ + tests/gio/live-g-file.txt | 27 + + tests/gio/memory-input-stream.c | 78 +++ + tests/gio/memory-output-stream.c | 100 +++ + tests/gio/readwrite.c | 293 +++++++++ + tests/gio/resolver.c | 506 ++++++++++++++++ + tests/gio/send-data.c | 163 +++++ + tests/gio/simple-async-result.c | 107 ++++ + tests/gio/sleepy-stream.c | 296 +++++++++ + tests/gio/socket-client.c | 298 +++++++++ + tests/gio/socket-server.c | 308 ++++++++++ + tests/gio/srvtarget.c | 158 +++++ + tests/gio/unix-streams.c | 256 ++++++++ + 55 files changed, 6483 insertions(+), 6485 deletions(-) + +commit 65cc5d895ae125b09f2403761f434fd78ef05af7 +Author: Dan Winship +AuthorDate: Tue Jun 16 20:22:58 2009 -0400 +Commit: Dan Winship +CommitDate: Wed Jul 1 09:02:46 2009 -0400 + + Support g_main_context_push_thread_default() in gio + + GFile allows for the possibility that external implementations may not + support thread-default contexts yet, via + g_file_supports_thread_contexts(). GVolumeMonitor is not yet + thread-default-context aware. + + Add a test program to verify that basic gio async ops work correctly + in non-default contexts. + + http://bugzilla.gnome.org/show_bug.cgi?id=579984 + + gio/gdummyfile.c | 2 + + gio/gfile.c | 25 ++++++ + gio/gfile.h | 3 + + gio/gfilemonitor.c | 26 ++++-- + gio/gio.symbols | 1 + + gio/gioscheduler.c | 29 ++++--- + gio/glocalfile.c | 2 + + gio/gsimpleasyncresult.c | 62 ++++++++++---- + gio/gsocketclient.c | 2 +- + gio/gsocketinputstream.c | 2 +- + gio/gsocketlistener.c | 2 +- + gio/gsocketoutputstream.c | 2 +- + gio/gtcpconnection.c | 2 +- + gio/gunixinputstream.c | 4 +- + gio/gunixmount.c | 4 +- + gio/gunixoutputstream.c | 4 +- + gio/gunixresolver.c | 207 + ++++++++++++++++++++++++++++++---------------- + gio/gunixvolume.c | 4 +- + gio/gvolumemonitor.c | 7 +- + gio/gwin32resolver.c | 4 +- + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 10 ++- + gio/tests/contexts.c | 190 + ++++++++++++++++++++++++++++++++++++++++++ + 23 files changed, 474 insertions(+), 121 deletions(-) + +commit 4363f1932f1be4474a81d5b9cf8a58c91b682868 +Author: Dan Winship +AuthorDate: Thu Jun 4 21:59:15 2009 -0400 +Commit: Dan Winship +CommitDate: Wed Jul 1 09:02:23 2009 -0400 + + Add g_main_context_push_thread_default() etc + + This allows applications to use async methods from other threads, or + in multiple independent main loops. + + http://bugzilla.gnome.org/show_bug.cgi?id=579984 + + docs/reference/glib/glib-sections.txt | 5 ++ + docs/reference/glib/tmpl/main.sgml | 24 ++++++ + glib/glib.symbols | 3 + + glib/gmain.c | 144 + +++++++++++++++++++++++++++++++++- + glib/gmain.h | 5 ++ + 5 files changed, 177 insertions(+), 4 deletions(-) + +commit 90381ecdbd73197ebdfaf58fdeccf267454d53d7 +Author: Dan Winship +AuthorDate: Fri Jun 19 10:30:14 2009 -0400 +Commit: Dan Winship +CommitDate: Wed Jul 1 09:01:48 2009 -0400 + + Use low-level GSource methods in a few more places + + (in preparation for thread-default context support) + + gio/gfilemonitor.c | 23 ++++++++++++++--------- + gio/gunixmount.c | 26 ++++++++++++++++++++++---- + gio/gunixvolume.c | 26 ++++++++++++++++++++++---- + gio/gwin32resolver.c | 18 ++++++++++++------ + gio/pltcheck.sh | 2 +- + 5 files changed, 71 insertions(+), 24 deletions(-) + +commit 28a39fab5ac720daf5927c85c3eba2e23f5ac38c +Author: Dan Winship +AuthorDate: Tue Jun 16 20:21:29 2009 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 30 19:05:44 2009 -0400 + + Remove some unused code + + gio/gasynchelper.c | 35 ----------------------------------- + 1 file changed, 35 deletions(-) + +commit 70e8eed6acfa33f74d7772f3ec54997daf102be4 +Author: Dan Winship +AuthorDate: Tue Jun 23 12:01:34 2009 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 30 18:48:36 2009 -0400 + + Fix GResolver for g_simple_async_result_set_op_res_gpointer change + + Previously, re-setting the pointer value would cause the old + GDestroyNotify to be lost; now it causes it to be run. + + http://bugzilla.gnome.org/show_bug.cgi?id=587415 + + gio/gresolver.c | 11 ++++------- + 1 file changed, 4 insertions(+), 7 deletions(-) + +commit d589da7e86947542790aa0137dc12499a4fe1a3b +Author: Benjamin Otte +AuthorDate: Tue Jun 30 20:33:19 2009 +0200 +Commit: Benjamin Otte +CommitDate: Tue Jun 30 20:42:14 2009 +0200 + + Bug 587434 – regression tests fail + + make this test not only compile, but also run successfully with mad + CFLAGS. + + gio/tests/data-output-stream.c | 138 + ++++++++++++++++++++--------------------- + 1 file changed, 67 insertions(+), 71 deletions(-) + +commit 80561f9718873bf02d5c938d92672bc20d99b82d +Author: Benjamin Otte +AuthorDate: Tue Jun 30 19:08:46 2009 +0200 +Commit: Benjamin Otte +CommitDate: Tue Jun 30 20:40:52 2009 +0200 + + Bug 587434 – regression tests fail + + I missed one s/tmpfile/tmp_file/ which caused crashes. + + gio/tests/readwrite.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 53beca955e016fb9ef4e80d223d059bc5e51dd41 +Author: Dan Winship +AuthorDate: Tue Jun 23 17:42:01 2009 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 30 11:42:17 2009 -0400 + + Add GCancellables to GSocket ops + + Currently, to implement cancellability correctly, all synchronous + calls to GSocket must be preceded by a g_socket_condition_wait() call, + (even though GSocket does this internally as well) and all + asynchronous calls must do occasional manual + g_cancellable_is_cancelled() checks. Since it's trivial to do these + checks inside GSocket instead, and we don't particularly want to + encourage people to use the APIs non-cancellably, move the + cancellation support into GSocket and simplify the existing callers. + + http://bugzilla.gnome.org/show_bug.cgi?id=586797 + + gio/gsocket.c | 74 + +++++++++++++++++++++++++++++++++-------------- + gio/gsocket.h | 8 +++++ + gio/gsocketclient.c | 4 +-- + gio/gsocketinputstream.c | 27 +++++++---------- + gio/gsocketlistener.c | 32 +++++++++----------- + gio/gsocketoutputstream.c | 27 +++++++---------- + gio/gtcpconnection.c | 21 ++------------ + gio/gunixconnection.c | 8 ++--- + gio/tests/socket-client.c | 14 +++++---- + gio/tests/socket-server.c | 13 +++++---- + 10 files changed, 119 insertions(+), 109 deletions(-) + +commit fc2b3ee560e29b4ef6e70928b0be75d833d75aec +Author: Benjamin Otte +AuthorDate: Mon Jun 29 18:32:09 2009 +0200 +Commit: Benjamin Otte +CommitDate: Mon Jun 29 18:32:09 2009 +0200 + + remove unused label + + complained about by -Wall + + gio/gtcpconnection.c | 3 --- + 1 file changed, 3 deletions(-) + +commit afd63c32814869489f812d6738de027ce113957d +Author: Benjamin Otte +AuthorDate: Mon Jun 29 18:24:08 2009 +0200 +Commit: Benjamin Otte +CommitDate: Mon Jun 29 18:25:02 2009 +0200 + + fix warnings from gcc compilation with my mad CFLAGS + + gio/tests/data-input-stream.c | 32 +++++++++++--------- + gio/tests/data-output-stream.c | 66 + +++++++++++++++++++++--------------------- + gio/tests/desktop-app-info.c | 4 +-- + gio/tests/g-file.c | 16 +++++----- + gio/tests/httpd.c | 2 +- + gio/tests/live-g-file.c | 22 ++++++++------ + gio/tests/readwrite.c | 40 ++++++++++++------------- + gio/tests/resolver.c | 6 ++-- + gio/tests/sleepy-stream.c | 24 ++++++++------- + gio/tests/socket-server.c | 6 ++-- + gio/tests/srvtarget.c | 3 +- + gio/tests/unix-streams.c | 4 +-- + 12 files changed, 119 insertions(+), 106 deletions(-) + +commit 4b8ad50fc4463d72862d29a8802b5982e66c0fc2 +Author: Benjamin Otte +AuthorDate: Mon Jun 29 15:28:08 2009 +0200 +Commit: Benjamin Otte +CommitDate: Mon Jun 29 18:25:02 2009 +0200 + + add g_file_attribute_set_*_by_id() and use them + + This patch and the previous ones fixes the performance issues noted in + Bug 587089 – lookup_attribute() takes too much CPU + It increases performance for querying attributes by ~15% in my tests. + + gio/gfileinfo-priv.h | 36 +++++++++- + gio/gfileinfo.c | 183 + +++++++++++++++++++++++++++++++++++++-------------- + gio/glocalfileinfo.c | 96 +++++++++++++-------------- + 3 files changed, 217 insertions(+), 98 deletions(-) + +commit bd198e5e45282886ea2bad14e987c7c01b163cb3 +Author: Benjamin Otte +AuthorDate: Mon Jun 29 14:13:14 2009 +0200 +Commit: Benjamin Otte +CommitDate: Mon Jun 29 18:25:02 2009 +0200 + + export and use _g_file_attribute_matcher_matches_id() + + gio/gfileinfo-priv.h | 5 +++ + gio/gfileinfo.c | 13 +++---- + gio/glocalfileinfo.c | 95 + ++++++++++++++++++++++++++-------------------------- + 3 files changed, 58 insertions(+), 55 deletions(-) + +commit ceba40c27d5166a07a0925d2e158ca1809cc1ce3 +Author: Benjamin Otte +AuthorDate: Mon Jun 29 13:55:22 2009 +0200 +Commit: Benjamin Otte +CommitDate: Mon Jun 29 18:25:02 2009 +0200 + + add private header with attribute ids + + attribute ids are generated when the attribute hash is + initialized. This + way we can guarantee that the ids match every time. + + gio/Makefile.am | 1 + + gio/gfileinfo-priv.h | 99 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gfileinfo.c | 79 ++++++++++++++++++++++++++++++++++++++++- + 3 files changed, 178 insertions(+), 1 deletion(-) + +commit 2620c23577a73fa454298014680f4de46a69e7bb +Author: Benjamin Otte +AuthorDate: Mon Jun 29 13:33:50 2009 +0200 +Commit: Benjamin Otte +CommitDate: Mon Jun 29 18:25:02 2009 +0200 + + split lookup_attribute() into two functions + + gio/gfileinfo.c | 65 + ++++++++++++++++++++++++++++++++------------------------- + 1 file changed, 37 insertions(+), 28 deletions(-) + +commit 66cebd72925406910f99c0fd826b8307c2a4814c +Author: Benjamin Otte +AuthorDate: Mon Jun 29 13:21:08 2009 +0200 +Commit: Benjamin Otte +CommitDate: Mon Jun 29 18:25:01 2009 +0200 + + split attribute hash initialization into its own function + + gio/gfileinfo.c | 22 ++++++++++++---------- + 1 file changed, 12 insertions(+), 10 deletions(-) + +commit 49172a71aacdd855918b614f3d61fa5b9248fb85 +Author: Christian Dywan +AuthorDate: Sun Jun 28 02:45:50 2009 +0200 +Commit: Christian Dywan +CommitDate: Sun Jun 28 02:45:50 2009 +0200 + + Display '-h' in --help output and accept '-h' and -?' + + '-h' is the preferred short version of '--help' now and displayed + in '--help' but for backwards compatibility '-?' is still supported. + + If existing code uses '-h' for something else, GOptionContext will + not override it. + + Fixes bug 556706. + + glib/goption.c | 49 ++++++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 42 insertions(+), 7 deletions(-) + +commit 09c3f6dd4b456adbbda6818e5bb1227af045e8d8 +Author: Jani Monoses +AuthorDate: Sat Jun 27 11:03:47 2009 +0300 +Commit: Jani Monoses +CommitDate: Sat Jun 27 11:03:47 2009 +0300 + + Fix C++ warnings in g_error() code + + Put space before ending semicolon in for(;;) ; to avoid C++ build + warnings. + Closes bug 586928. + + glib/gmessages.h | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +commit 160c39a9af8f7b6a475c1b005a807ccefc2ff7c1 +Author: Matthias Clasen +AuthorDate: Fri Jun 26 23:18:17 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 26 23:18:17 2009 -0400 + + Move some uri functions to a better place + + docs/reference/glib/glib-sections.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 35911ae00f5348ea4a60d66db25d70a1c45c9c43 +Author: Matthias Clasen +AuthorDate: Fri Jun 26 23:09:35 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 26 23:09:35 2009 -0400 + + Fix a typo + + docs/reference/glib/building.sgml | 84 + +++++++++++++++++++-------------------- + 1 file changed, 42 insertions(+), 42 deletions(-) + +commit e7a258692c7ae3d9075d9ae1926c08c7ec771f04 +Author: Tom Parker +AuthorDate: Fri Jun 26 22:43:31 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 26 22:43:31 2009 -0400 + + Add NULL to end of g_filename_complete_get_completions() return value + + g_filename_complete_get_completions() return value is meant to be a + g_strfreev-compatible array i.e. NULL-terminated. However, pointer + arrays + aren't automagically NULL-terminated. This fixes bug 586868 + + gio/gfilenamecompleter.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +commit 657d0ad9183fe4410e736d20a17a70fb7d6ad6c0 +Author: Ivar Smolin +AuthorDate: Fri Jun 26 10:39:25 2009 +0300 +Commit: Priit Laes +CommitDate: Fri Jun 26 10:39:25 2009 +0300 + + Updating Estonian translation + + po/et.po | 446 + +++------------------------------------------------------------ + 1 file changed, 17 insertions(+), 429 deletions(-) + +commit d884e509db1ab6a6d388313d28b7b07cebb3dfc0 +Author: Alexander Larsson +AuthorDate: Thu Jun 25 09:18:01 2009 +0200 +Commit: Alexander Larsson +CommitDate: Thu Jun 25 09:18:01 2009 +0200 + + Allow setting G_FILE_ATTRIBUTE_TYPE_INVALID attributes in GFileInfo + + This is used to unset an attribute in g_file_set_attributes_from_info. + + gio/gfileattribute.c | 7 +++++++ + gio/gfileinfo.c | 2 +- + 2 files changed, 8 insertions(+), 1 deletion(-) + +commit 019e8c808f48e93f81fcb8e9e8d73a43b087cc87 +Author: Matthias Clasen +AuthorDate: Wed Jun 24 23:07:15 2009 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 24 23:07:15 2009 -0400 + + Add a note about g_simple_async_result_set_op_res_pointer change + + README.in | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit b0dc7afd2ace91f5dca37af8de7b40ba45993ed0 +Author: Richard Hughes +AuthorDate: Fri Jun 19 10:16:22 2009 +0100 +Commit: Alexander Larsson +CommitDate: Wed Jun 24 10:33:24 2009 +0200 + + Allow GCancellable to be subclassed by adding a private structure + + gio/gcancellable.c | 114 + +++++++++++++++++++++++++++++++++-------------------- + gio/gcancellable.h | 9 +++++ + 2 files changed, 81 insertions(+), 42 deletions(-) + +commit 0ccd18bc83c5e6eff77940a61cc9b31a88dd1851 +Author: David Zeuthen +AuthorDate: Mon Jun 22 15:33:41 2009 -0400 +Commit: David Zeuthen +CommitDate: Tue Jun 23 12:58:35 2009 -0400 + + Bug 586675 – Runtime library location + + Introduce an option to specify the runtime location for libraries via + a relative path to libdir. + + Signed-off-by: David Zeuthen + + configure.in | 11 +++++++++++ + docs/reference/glib/building.sgml | 21 +++++++++++++++++++++ + docs/reference/glib/tmpl/fileutils.sgml | 17 +++++++++++++++++ + gio/Makefile.am | 9 +++++++++ + glib/Makefile.am | 9 +++++++++ + gmodule/Makefile.am | 9 +++++++++ + gobject/Makefile.am | 9 +++++++++ + gthread/Makefile.am | 8 ++++++++ + 8 files changed, 93 insertions(+) + +commit 7662c86611bf44175f18ec6eb66f159040ac73c5 +Author: Alexander Larsson +AuthorDate: Thu Jun 18 09:05:27 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue Jun 23 16:35:42 2009 +0200 + + Add extension point for adding metadata for local files + + This adds a local_file_add_info vfunc to GVfs that vfs implementations + can override to add metadata for local files. + + gio/glocalfile.c | 75 +++++++++++++++++++++---------- + gio/glocalfileenumerator.c | 2 + + gio/glocalfileinfo.c | 108 + ++++++++++++++++++++++++++++++++++++++++----- + gio/glocalfileinfo.h | 3 ++ + gio/gvfs.h | 26 ++++++++--- + 5 files changed, 175 insertions(+), 39 deletions(-) + +commit 9a6146f54cdc085a42095b930066853dbb4e0c67 +Author: Alexander Larsson +AuthorDate: Tue Jun 23 11:30:14 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue Jun 23 16:35:41 2009 +0200 + + Add g_file_info_set_attribute_status + + Required for gvfs implementation for set_attribures_from_info. + + gio/gfileinfo.c | 36 ++++++++++++++++++++++++++++++++++++ + gio/gfileinfo.h | 3 +++ + gio/gio.symbols | 1 + + 3 files changed, 40 insertions(+) + +commit becf4186e6289c0ab5d762f1cdf88517f4adc9f5 +Author: Alexander Larsson +AuthorDate: Tue Jun 23 11:29:16 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue Jun 23 16:35:41 2009 +0200 + + Add g_file_info_has_namespace + + Need this to quickly see if we should set attributes from + this GFileInfo in metadata extension. + + gio/gfileinfo.c | 36 ++++++++++++++++++++++++++++++++++++ + gio/gfileinfo.h | 2 ++ + gio/gio.symbols | 1 + + 3 files changed, 39 insertions(+) + +commit 0ed9201ad2051c33f5d049754bd8a1644d19ab7c +Author: Alexander Larsson +AuthorDate: Mon Jun 22 19:25:32 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue Jun 23 16:35:41 2009 +0200 + + Add string vector attribute type to GFileInfo + + This is needed for the new metadata backend since nautilus has a + string-list metadata type, and we want to use this for nautilus. + + gio/gfileattribute-priv.h | 4 ++++ + gio/gfileattribute.c | 52 + +++++++++++++++++++++++++++++++++++++++++++++++ + gio/gfileinfo.c | 51 + ++++++++++++++++++++++++++++++++++++++++++++++ + gio/gfileinfo.h | 5 +++++ + gio/gio.symbols | 2 ++ + gio/gioenums.h | 4 +++- + 6 files changed, 117 insertions(+), 1 deletion(-) + +commit c1ab6454feb4447b8ef7ce6a0eb0fb38bae186df +Author: Alexander Larsson +AuthorDate: Tue Jun 23 15:07:00 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue Jun 23 16:35:41 2009 +0200 + + Copy namespaces correctly in g_file_copy_attributes + + File attribute namespaces are delimited with "::", but + build_attribute_list_for_copy only used ":", so we didn't copy + any writable namespaces. + + gio/gfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e9b4f7a3bcfefc266fc575e401f07a2a4c2ce8f6 +Author: Jorge Gonzalez +AuthorDate: Sun Jun 21 11:13:20 2009 +0200 +Commit: Jorge Gonzalez +CommitDate: Sun Jun 21 11:13:20 2009 +0200 + + Updated Spanish translation + + po/es.po | 836 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 417 insertions(+), 419 deletions(-) + +commit 440bf5bee50a0abca990d69ce12fc2a844bda95c +Author: Matthias Clasen +AuthorDate: Fri Jun 19 23:44:29 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 19 23:44:29 2009 -0400 + + Use pipe2 when available + + This avoids a small window for races between pipe and fdset. + Reported in bug 579933 by Thiago Macieira. + + configure.in | 11 ++--------- + glib/gmain.c | 20 +++++++++++++++----- + 2 files changed, 17 insertions(+), 14 deletions(-) + +commit 854a43a3cd5cb8cc97b66d6f8f661e2a7096acda +Author: Matthias Clasen +AuthorDate: Fri Jun 19 23:18:09 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Jun 19 23:25:18 2009 -0400 + + Fix build on mingw + + Mingw does not have sys/uio.h. This was reported in bug 585937. + + Author: Matthias Clasen + + configure.in | 1 + + gio/gsocket.c | 2 ++ + 2 files changed, 3 insertions(+) + +commit 4c791f49e58688d1b8948d083c1780cab9d26e93 +Author: Ryan Lortie +AuthorDate: Thu Jun 18 15:00:01 2009 -0400 +Commit: Ryan Lortie +CommitDate: Thu Jun 18 15:01:18 2009 -0400 + + GMappedFile: add refcounting, switch to GSlice + + - add g_mapped_file_ref() and g_mapped_file_unref(). + - deprecate g_mapped_file_free(). + - move to GSlice for allocating the GMappedFile struct. + + docs/reference/glib/glib-sections.txt | 2 + + glib/glib.symbols | 4 ++ + glib/gmappedfile.c | 73 + ++++++++++++++++++++++++++++------- + glib/gmappedfile.h | 5 +++ + 4 files changed, 71 insertions(+), 13 deletions(-) + +commit 8cb481fd5ff44c7e82f59948567ad0b417297555 +Author: Alexander Larsson +AuthorDate: Thu Jun 18 19:43:46 2009 +0200 +Commit: Alexander Larsson +CommitDate: Thu Jun 18 19:43:46 2009 +0200 + + Use io_prio as mainloop prio for async-emulation (#579449) + + I'm not sure why we used the elaborate formula to convert the + io-priority + to the priority of the mainloop idle when emulating async i/o + with idles. + However, it causes the default io priority to be less than the normal + idle prio, so the i/o won't be scheduled if there is an idle + outstanding. + + There is really no great mapping to use here, doing blocking i/o in an + idle of any prio is generally bad and apps doing a lot of async + i/o should + initialize threads. However, if we use the io-priority directly we + at least + avoid the starvation problem above and make things easier to + understand. + + gio/gioscheduler.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9fba81288424cd7ef45e28565fa878c93a962c17 +Author: Benjamin Otte +AuthorDate: Thu Jun 18 15:28:41 2009 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jun 18 15:29:41 2009 +0200 + + Revert "clarify documentation" + + This reverts commit d218cf0f670e4c40acb47ab5b5761ea0c68e0594. + This has been fixed in the code, so no need to keep the updated docs. + + gio/gsocketlistener.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +commit 835c03a5c1c980490543ad5d1fe426a1e5a62af9 +Author: Benjamin Otte +AuthorDate: Thu Jun 18 15:27:12 2009 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jun 18 15:27:42 2009 +0200 + + syntax fix in documentation + + gio/gfileenumerator.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit cf95d07691ec2202400f340f1c63aca11f0790c1 +Author: Benjamin Otte +AuthorDate: Tue Jun 16 15:18:11 2009 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jun 18 15:27:42 2009 +0200 + + fix typo in documentation + + gio/gfileenumerator.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d218cf0f670e4c40acb47ab5b5761ea0c68e0594 +Author: Benjamin Otte +AuthorDate: Fri Jun 12 17:45:27 2009 +0200 +Commit: Benjamin Otte +CommitDate: Thu Jun 18 15:27:41 2009 +0200 + + clarify documentation + + gio/gsocketlistener.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit f4a64cb068cfe309e968d1db9fae4fade6d87e8a +Author: Matthias Clasen +AuthorDate: Mon Jun 15 13:27:40 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 15 13:27:40 2009 -0400 + + Bump version to 2.21.3 + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 785787fd6cd4b7c0120ae64ec839cfb0353c4af2 +Author: Matthias Clasen +AuthorDate: Mon Jun 15 13:25:43 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 15 13:25:43 2009 -0400 + + 2.21.2 + + po/am.po | 180 ++++++------ + po/ar.po | 186 ++++++------ + po/as.po | 182 ++++++------ + po/az.po | 180 ++++++------ + po/be.po | 180 ++++++------ + po/be@latin.po | 189 ++++++------ + po/bg.po | 182 ++++++------ + po/bn.po | 180 ++++++------ + po/bn_IN.po | 867 + ++++++++++++++++++++++++++++-------------------------- + po/bs.po | 180 ++++++------ + po/ca.po | 187 ++++++------ + po/ca@valencia.po | 187 ++++++------ + po/cs.po | 183 ++++++------ + po/cy.po | 180 ++++++------ + po/da.po | 187 ++++++------ + po/de.po | 187 ++++++------ + po/dz.po | 180 ++++++------ + po/el.po | 182 ++++++------ + po/en_CA.po | 187 ++++++------ + po/en_GB.po | 187 ++++++------ + po/eo.po | 180 ++++++------ + po/es.po | 182 ++++++------ + po/et.po | 182 ++++++------ + po/eu.po | 182 ++++++------ + po/fa.po | 180 ++++++------ + po/fi.po | 187 ++++++------ + po/fr.po | 182 ++++++------ + po/ga.po | 191 ++++++------ + po/gl.po | 187 ++++++------ + po/gu.po | 182 ++++++------ + po/he.po | 187 ++++++------ + po/hi.po | 182 ++++++------ + po/hr.po | 181 ++++++------ + po/hu.po | 182 ++++++------ + po/hy.po | 180 ++++++------ + po/id.po | 180 ++++++------ + po/is.po | 180 ++++++------ + po/it.po | 182 ++++++------ + po/ja.po | 182 ++++++------ + po/ka.po | 179 +++++------ + po/kn.po | 182 ++++++------ + po/ko.po | 185 ++++++------ + po/ku.po | 180 ++++++------ + po/lt.po | 189 ++++++------ + po/lv.po | 180 ++++++------ + po/mai.po | 182 ++++++------ + po/mg.po | 180 ++++++------ + po/mk.po | 189 ++++++------ + po/ml.po | 182 ++++++------ + po/mn.po | 180 ++++++------ + po/mr.po | 182 ++++++------ + po/ms.po | 180 ++++++------ + po/nb.po | 831 + +++++++++++++++++++++++++-------------------------- + po/ne.po | 180 ++++++------ + po/nl.po | 189 ++++++------ + po/nn.po | 187 ++++++------ + po/oc.po | 185 ++++++------ + po/or.po | 182 ++++++------ + po/pa.po | 182 ++++++------ + po/pl.po | 183 ++++++------ + po/ps.po | 180 ++++++------ + po/pt.po | 187 ++++++------ + po/pt_BR.po | 187 ++++++------ + po/ro.po | 183 ++++++------ + po/ru.po | 189 ++++++------ + po/rw.po | 180 ++++++------ + po/si.po | 180 ++++++------ + po/sk.po | 189 ++++++------ + po/sl.po | 191 ++++++------ + po/sq.po | 191 ++++++------ + po/sr.po | 180 ++++++------ + po/sr@ije.po | 180 ++++++------ + po/sr@latin.po | 180 ++++++------ + po/sv.po | 187 ++++++------ + po/ta.po | 182 ++++++------ + po/te.po | 182 ++++++------ + po/th.po | 185 ++++++------ + po/tl.po | 180 ++++++------ + po/tr.po | 185 ++++++------ + po/tt.po | 180 ++++++------ + po/uk.po | 183 ++++++------ + po/vi.po | 181 ++++++------ + po/wa.po | 180 ++++++------ + po/xh.po | 180 ++++++------ + po/yi.po | 180 ++++++------ + po/zh_CN.po | 185 ++++++------ + po/zh_HK.po | 185 ++++++------ + po/zh_TW.po | 185 ++++++------ + 88 files changed, 9416 insertions(+), 8034 deletions(-) + +commit 0fbeab452072cdf2dc7d1dd0356fa0d9f71fa0ac +Author: Matthias Clasen +AuthorDate: Mon Jun 15 12:57:21 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 15 12:57:21 2009 -0400 + + Add g_setenv + + gio/pltcheck.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 90229908a13c02a024a86e4eaf96a6ba8dac57af +Author: Matthias Clasen +AuthorDate: Mon Jun 15 12:26:41 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 15 12:26:41 2009 -0400 + + Update for 2.21.2 + + NEWS | 47 +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 47 insertions(+) + +commit fae755e0568472a2c37e6a9d0ad0fde809749a1f +Author: David Zeuthen +AuthorDate: Mon Jun 15 10:53:41 2009 -0400 +Commit: David Zeuthen +CommitDate: Mon Jun 15 10:59:43 2009 -0400 + + Bug 585591 – Starting/stopping drives + + Add API for starting/stopping drives. This new API will enable + GVolumeMonitor and GVfs implementations to add support for the + following features + + 1. Powering down external hard disk enclosures / drives + + 2. Starting/stopping multi-disk devices (such as RAID/btrfs/ZFS) + + 3. Connecting/disconnecting iSCSI devices + + 4. Reacting to the user pressing e.g. the "remove drive" button on + a IBM/Lenovo Ultrabay: http://www.thinkwiki.org/wiki/Ultrabay + + See the bug for the corresponding GVfs and Nautilus changes. + + docs/reference/gio/gio-sections.txt | 16 +++ + gio/gdrive.c | 259 + +++++++++++++++++++++++++++++++++++- + gio/gdrive.h | 57 ++++++++ + gio/gfile.c | 179 +++++++++++++++++++++++++ + gio/gfile.h | 41 ++++++ + gio/gfileinfo.h | 31 +++++ + gio/gio.symbols | 13 ++ + gio/gioenums.h | 39 ++++++ + gio/gunionvolumemonitor.c | 12 ++ + gio/gvolumemonitor.c | 18 +++ + gio/gvolumemonitor.h | 5 +- + 11 files changed, 666 insertions(+), 4 deletions(-) + +commit bb4f7c48f9510c1fd96de067cd8f18cd41b1a1f0 +Author: Ondrej Jirman +AuthorDate: Sat May 30 08:23:46 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Jun 15 15:56:45 2009 +0200 + + Fix incorrect freeing of thread pool in GThreadedSocketService + (#584255) + + gio/gthreadedsocketservice.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 31cb0bdcb0f334ad904e088acb3a417452a4d67f +Author: Alexander Larsson +AuthorDate: Mon Jun 15 15:43:39 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Jun 15 15:43:39 2009 +0200 + + Emit changed in g_socket_listener_add_socket, not in add_address + + This way we emit this signal when add_socket is called from another + place than add_address too. + + gio/gsocketlistener.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +commit a640695f1609805a0fe745d35c2055a984410bb5 +Author: Alexander Larsson +AuthorDate: Mon Jun 15 15:42:38 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Jun 15 15:42:38 2009 +0200 + + Ref the passed in socket in g_socket_listener_add_socket (#585599) + + gio/gsocketlistener.c | 23 ++++++++++++++++++----- + 1 file changed, 18 insertions(+), 5 deletions(-) + +commit 67de6cba508d7f2e0c310527667df2efcf4a543a +Author: Alexander Larsson +AuthorDate: Mon Jun 15 14:23:57 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Jun 15 14:23:57 2009 +0200 + + Add bound address out-argument to g_socket_listener_add_address + (#585566) + + This is very useful when binding to "any" port. + + gio/gsocketlistener.c | 20 ++++++++++++++++++++ + gio/gsocketlistener.h | 1 + + 2 files changed, 21 insertions(+) + +commit 91bdccff7544ee19d329ec73db02fd5f11c617fd +Author: Alexander Larsson +AuthorDate: Mon Jun 15 13:18:22 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Jun 15 13:18:22 2009 +0200 + + Add g_reload_user_special_dirs_cache (#541276) + + This is useful for nautilus that changes the xdg-user-dirs files. + + glib/glib.symbols | 1 + + glib/gutils.c | 53 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + glib/gutils.h | 1 + + 3 files changed, 55 insertions(+) + +commit 740ae3aa29cc50f588fb3ac47f6125acbccd20b6 +Author: Alexander Larsson +AuthorDate: Mon Jun 15 12:25:43 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Jun 15 12:26:57 2009 +0200 + + Avoid unnecessary work if mount watching not specified (#585360) + + If G_FILE_MONITOR_WATCH_MOUNTS isn't specified, don't do all the work + when the mtab changes. + + gio/glocaldirectorymonitor.c | 29 +++++++++++++++++++++++++---- + gio/glocaldirectorymonitor.h | 1 + + 2 files changed, 26 insertions(+), 4 deletions(-) + +commit 129eb074823101102611690f053ffa246bb7784d +Author: Matthias Clasen +AuthorDate: Mon Jun 15 01:45:34 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 15 01:45:34 2009 -0400 + + Support special icons for xdg user dirs + + The icon names are folder-documents, folder-download, folder-music, + folder-pictures, folder-publicshare, folder-templates, folder-videos. + See bug 541276. + + gio/glocalfileinfo.c | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +commit 50a7f530557e35c6dfc543d969c0369d53d45a87 +Author: Matthias Clasen +AuthorDate: Mon Jun 15 01:12:50 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 15 01:12:50 2009 -0400 + + Don't use deprecated GLib api + + Fixes bug 585673. + + gio/tests/resolver.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2553df615d21e68d52f1e0b45ac8b70622d2881e +Author: Matthias Clasen +AuthorDate: Mon Jun 15 01:09:25 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 15 01:09:25 2009 -0400 + + Refer to the correct gcc deprecation options + + This oversight was pointed out in bug 585520. + + docs/reference/glib/tmpl/macros_misc.sgml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2c5ac901d95f28db1edad2807f842396c594a49e +Author: Matthias Clasen +AuthorDate: Mon Jun 15 01:03:54 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 15 01:03:54 2009 -0400 + + Fix some typos in list documentation + + This fixes bug 585726. + + docs/reference/glib/tmpl/linked_lists_double.sgml | 4 ++-- + docs/reference/glib/tmpl/linked_lists_single.sgml | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit b0bba8520acd423785075ba67e6e4b644fce765f +Author: Matthias Clasen +AuthorDate: Mon Jun 15 00:52:43 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 15 00:52:43 2009 -0400 + + Extract strings from g_dngettext too + + There is one occurrence of this in glib, which we currently miss. + See bug 585717. + + po/Makefile.in.in | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit 642e9c75400cc12f0fad26e3f3df5ac6a39e0822 +Author: Matthias Clasen +AuthorDate: Mon Jun 15 00:45:55 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 15 00:45:55 2009 -0400 + + Fix the icon property implementation + + Turns out both the setter and the getter were broken... + Fixes bug 585676. + + gio/gemblem.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit b533a944ffc83ad90cd8b6fba00f4e0bebcd0741 +Author: Matthias Clasen +AuthorDate: Mon Jun 15 00:38:34 2009 -0400 +Commit: Matthias Clasen +CommitDate: Mon Jun 15 00:38:34 2009 -0400 + + Trivial formatting fixes + + gio/gemblem.c | 63 + +++++++++++++++++++++++++++++------------------------------ + 1 file changed, 31 insertions(+), 32 deletions(-) + +commit ce4aa6253eea2b24c0e4a99f9a1d7f31b9cec979 +Author: Matthias Clasen +AuthorDate: Sun Jun 14 23:55:12 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 14 23:55:12 2009 -0400 + + Include sys/uio.h for struct iovec + + This fixes the build on OS X, bug 585280. + + gio/gsocket.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 8a3a3d797e7ef3b66c917c1c0a2ec47300bbf661 +Author: Matthias Clasen +AuthorDate: Sun Jun 14 22:26:52 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun Jun 14 22:29:17 2009 -0400 + + Use inotify_init1 when available + + To avoid leaking the inotify fd. Fixes bug 585478. + + configure.in | 1 + + gio/inotify/inotify-kernel.c | 9 +++++++-- + 2 files changed, 8 insertions(+), 2 deletions(-) + +commit 4dbc2074bc857464e64549fac2b7403c4e9566c1 +Author: Ryan Lortie +AuthorDate: Sun Jun 14 13:58:35 2009 -0400 +Commit: Ryan Lortie +CommitDate: Sun Jun 14 13:58:35 2009 -0400 + + Add GNIO test cases to .gitignore + + gio/tests/.gitignore | 7 +++++++ + 1 file changed, 7 insertions(+) + +commit cb1a6092405b2f6d9b82e7c1b757951d695c5fe6 +Author: Ryan Lortie +AuthorDate: Fri Jun 12 13:01:04 2009 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jun 12 13:01:04 2009 -0400 + + Bug 585575 – g_socket_listener_add_inet_port() + + Change the logic in g_socket_listener_add_inet_port() as per the + reasoning in the bug report. + + - If the OS supports neither IPv6 or IPv4, fail. + - If the OS supports only IPv6, do that. + - If the OS supports only IPv4, do that. + - If the OS supports IPv6 and IPv6 "speaks" IPv4 then bind it + and be done. + - If the OS supports IPv6 and IPv6 doesn't "speak" IPv4 then + create an additional socket for IPv4. + - If binding any socket fails then fail the entire call. + + Also, remove the ability to call this function with port == 0. This + is a useless thing to do anyway since you have no way to know what + port number was actually allocated. We should have a separate + function to deal with this. + + gio/gsocketlistener.c | 164 + ++++++++++++++++++++++++++++++++++++++------------ + 1 file changed, 126 insertions(+), 38 deletions(-) + +commit f7d756f5b6c9975452e57ac6f41ff69d9f456739 +Author: Ryan Lortie +AuthorDate: Fri Jun 12 12:21:07 2009 -0400 +Commit: Ryan Lortie +CommitDate: Fri Jun 12 12:21:07 2009 -0400 + + add g_socket_speaks_ipv4() + + Partial fix for Bug 585575. + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 1 + + gio/gsocket.c | 48 + +++++++++++++++++++++++++++++++++++++ + gio/gsocket.h | 1 + + 4 files changed, 51 insertions(+) + +commit fd22781b184529c2a838272b76d71b4b498366ba +Author: Benjamin Otte +AuthorDate: Fri Jun 12 15:57:51 2009 +0200 +Commit: Benjamin Otte +CommitDate: Fri Jun 12 15:57:51 2009 +0200 + + make all APIs that take inet port arguments take a guint16 + + gio/gsocketclient.c | 4 ++-- + gio/gsocketclient.h | 4 ++-- + gio/gsocketlistener.c | 2 +- + gio/gsocketlistener.h | 6 +++--- + 4 files changed, 8 insertions(+), 8 deletions(-) + +commit 3e3e3c29469f03ec7f141b2522accdb7c2acd59d +Author: Benjamin Otte +AuthorDate: Fri Jun 12 15:57:12 2009 +0200 +Commit: Benjamin Otte +CommitDate: Fri Jun 12 15:57:12 2009 +0200 + + don't make strings const when they are not + + gets rid of compiler warnings + + gio/gdesktopappinfo.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit a402875de1d8956c90a940f8309733040cda5afb +Author: Matthias Clasen +AuthorDate: Thu Jun 11 12:41:16 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Jun 11 12:41:16 2009 -0400 + + Fix an oversight in the previous commit + + We don't want to unset DISPLAY etc, if none is specified in the + app launch context. + + gio/gdesktopappinfo.c | 4 ---- + 1 file changed, 4 deletions(-) + +commit 6224d3d2ecdbc3cacfdb8213de3cf53d6dfc8580 +Author: Matthias Clasen +AuthorDate: Wed Jun 10 23:50:45 2009 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 10 23:50:45 2009 -0400 + + Fix g_string_chunk_insert_len to accept nuls + + Contrary to what the documentation says, g_string_chunk_insert_len + was stopping at the first nul. Also add a test. Fixes bug 585088. + + glib/gstring.c | 54 + ++++++++++++++++++++++++++--------------------------- + glib/tests/string.c | 23 +++++++++++++++++++++++ + 2 files changed, 49 insertions(+), 28 deletions(-) + +commit 9e43937d03443d6e8f63ea2c75c0fd54aaa124b3 +Author: Matthias Clasen +AuthorDate: Wed Jun 10 23:28:32 2009 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 10 23:28:32 2009 -0400 + + Include sys/types.h in gunixfdmessage.c + + As recommended in 'man socket'. Fixes bug 585281. + + gio/gunixfdmessage.c | 1 + + 1 file changed, 1 insertion(+) + +commit d3d81f74c5c227fb17494c0388ede1e83557a7e1 +Author: Matthias Clasen +AuthorDate: Wed Jun 10 16:20:51 2009 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 10 16:20:51 2009 -0400 + + Make setting DISPLAY work + + And remove a bunch of grotty code to manipulate an environment + array at the same time. Instead, simply call setenv in the child_setup + function. + + gio/gdesktopappinfo.c | 232 + +++++++++++--------------------------------------- + 1 file changed, 49 insertions(+), 183 deletions(-) + +commit 83ae249a2efc6f6445b5655cc16841ee2f9d3f75 +Author: Matthias Clasen +AuthorDate: Wed Jun 10 16:20:38 2009 -0400 +Commit: Matthias Clasen +CommitDate: Wed Jun 10 16:20:38 2009 -0400 + + Support automake 1.11 + + autogen.sh | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +commit ff2532aead7a73ca92d0b8a964d143c69e78c6cd +Author: Kjartan Maraas +AuthorDate: Wed Jun 10 09:43:33 2009 +0200 +Commit: Kjartan Maraas +CommitDate: Wed Jun 10 09:43:33 2009 +0200 + + Updated Norwegian bokmål translation. + + po/nb.po | 903 + +++++++++++++++++++++++++++++---------------------------------- + 1 file changed, 419 insertions(+), 484 deletions(-) + +commit 74a3c71dcfb8f15692efd572670d28cb04caa868 +Author: Dan Winship +AuthorDate: Tue Jun 9 09:32:43 2009 -0400 +Commit: Dan Winship +CommitDate: Tue Jun 9 09:32:43 2009 -0400 + + Revert part of fix for old OS X that broke the compile on current OS X + + http://bugzilla.gnome.org/show_bug.cgi?id=584574 + + gio/libasyncns/g-asyncns.h | 8 +------- + 1 file changed, 1 insertion(+), 7 deletions(-) + +commit 059ec81c9e88ee5ec67aafd135714754ea5b9552 +Author: Michael Meeks +AuthorDate: Tue Jun 9 11:31:42 2009 +0100 +Commit: Michael Meeks +CommitDate: Tue Jun 9 11:32:44 2009 +0100 + + move start_element emission out into a new (inlined) function, so + the alloca'd memory is released on return, rather than slowly blowing + the stack. + + glib/gmarkup.c | 76 + ++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 42 insertions(+), 34 deletions(-) + +commit ced88fd0de4aedb537552561582875b427081eeb +Author: Benjamin Otte +AuthorDate: Tue Jun 9 10:54:22 2009 +0200 +Commit: Benjamin Otte +CommitDate: Tue Jun 9 12:19:24 2009 +0200 + + Bug 585189 – g_cancellable_reset() must be called in same thread ... + + ... as g_cancellable_cancel() + Rework a g_critical() that would (rarely) trigger when _reset() was + called in a thread different from _cancel() by making _reset() + wait for + the cancel function to be finished the same way + g_cancellable_disconnect() uses. + + gio/gcancellable.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +commit 7d4b7063057a9473491141e4d26fbcec17bb83ec +Author: Runa Bhattacharjee +AuthorDate: Tue Jun 9 11:48:53 2009 +0530 +Commit: Runa Bhattacharjee +CommitDate: Tue Jun 9 11:48:53 2009 +0530 + + Updated Bengali India Translations + + po/bn_IN.po | 982 + ++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 457 insertions(+), 525 deletions(-) + +commit 139af6f70032cad02b3cd965521c0c0cdb0dc8cf +Author: Benjamin Otte +AuthorDate: Mon Jun 8 17:29:22 2009 +0200 +Commit: Benjamin Otte +CommitDate: Mon Jun 8 17:29:22 2009 +0200 + + update the overview image of the gio docs + + The old image was confusing and after some discussions in #nautilus we + made a new one. + + docs/reference/gio/gvfs-overview.odg | Bin 10542 -> 17772 bytes + docs/reference/gio/gvfs-overview.png | Bin 49138 -> 48474 bytes + 2 files changed, 0 insertions(+), 0 deletions(-) + +commit 74fd3e734f3b6e7702ee1a859855ef6bd1c28ef9 +Author: Benjamin Otte +AuthorDate: Mon Jun 8 15:29:57 2009 +0200 +Commit: Benjamin Otte +CommitDate: Mon Jun 8 15:30:28 2009 +0200 + + typo in documentation + + gio/gsocketconnection.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 29a4a0a44dc09dabe071a989da2500b2bc143cbd +Author: Benjamin Otte +AuthorDate: Mon Jun 8 15:27:12 2009 +0200 +Commit: Benjamin Otte +CommitDate: Mon Jun 8 15:30:28 2009 +0200 + + only query file info in g_file_copy() when we need it + + The default implementation of g_file_copy() checked the size of + the file + to copy to give useful progress updates unconditionally. This + can cause + long delays on 1-connection FTP servers while it tries to open + a second + connection before it returns EBUSY. This patch makes this query only + happen when we actually send progress updates. + + gio/gfile.c | 34 +++++++++++++++++++--------------- + 1 file changed, 19 insertions(+), 15 deletions(-) + +commit 0bb5739f323396b40bbe6470c505606ea265afa0 +Author: Alexander Larsson +AuthorDate: Mon Jun 1 22:09:21 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Jun 1 22:10:41 2009 +0200 + + Reformat g_themed_icon_get_names return type to make gtk-doc work + + Seems the gtk-doc scanner needs "const gchar* const *" to work, + so switching + to that. + + gio/gthemedicon.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ce6fbd623115c88cfdf0f5ed36b01cca201ba78e +Author: Dan Winship +AuthorDate: Thu May 28 15:27:04 2009 -0400 +Commit: Dan Winship +CommitDate: Mon Jun 1 14:31:48 2009 -0400 + + Fix multiple bugs in g_srv_target_list_sort() + + In particular, targets with weight 0 should be very UNlikely to be + selected, not very likely, as they were before. However, even ignoring + that bug in the logic, there was an additional bug (swapping list + items would cause the 0-weight items to get re-ordered incorrectly + anyway), and the code contained several fencepost errors. + + This patch also adds gio/tests/srvtarget.c, which confirms that for a + sample list of targets, we now generate all possible correct random + sortings and no incorrect sortings, and the correct sortings occur in + roughly the expected proportions (though if the current code is + still wrong, those proportions may be wrong as well). + + http://bugzilla.gnome.org/show_bug.cgi?id=583398 + + gio/gsrvtarget.c | 92 ++++++++++++++--------------- + gio/tests/Makefile.am | 6 +- + gio/tests/srvtarget.c | 157 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 205 insertions(+), 50 deletions(-) + +commit 1ca91a212503e64a150c78cdb9ce0489efaa7a59 +Author: Dan Winship +AuthorDate: Sat May 23 21:49:47 2009 -0300 +Commit: Dan Winship +CommitDate: Mon Jun 1 14:24:44 2009 -0400 + + Clarify some GSocket docs + + gio/gsocket.c | 218 + ++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 120 insertions(+), 98 deletions(-) + +commit 5b3d62a7a6d4354b1588dd94f477c44bd15f1753 +Author: Dan Winship +AuthorDate: Mon Apr 27 17:35:04 2009 -0400 +Commit: Dan Winship +CommitDate: Mon Jun 1 14:21:05 2009 -0400 + + Misc networking build fixes + + http://bugzilla.gnome.org/show_bug.cgi?id=580301 + http://bugzilla.gnome.org/show_bug.cgi?id=584176 + + gio/gnetworkaddress.c | 8 +------- + gio/gnetworkingprivate.h | 8 +++++++- + gio/gresolver.c | 2 +- + gio/gsocket.c | 8 +------- + gio/gsocketcontrolmessage.c | 5 +---- + gio/gunixresolver.c | 1 - + gio/gunixsocketaddress.c | 2 -- + gio/libasyncns/g-asyncns.h | 17 +++++++++++++++++ + 8 files changed, 28 insertions(+), 23 deletions(-) + +commit 85816117e3da8c8751bb9c12f93580c9910ec8da +Author: Tor Lillqvist +AuthorDate: Mon Jun 1 14:04:49 2009 +0300 +Commit: Tor Lillqvist +CommitDate: Mon Jun 1 14:04:49 2009 +0300 + + Bump _WIN32_WINNT to 0x0501 + + Needed to get prototypes for getaddrinfo() and friends on mingw. + + gio/gnetworkingprivate.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 4a50bab276cdbde6387c0dd07666de1879e2d6c9 +Author: Hans Breuer +AuthorDate: Sat May 30 15:33:14 2009 +0200 +Commit: Hans Breuer +CommitDate: Sat May 30 15:33:14 2009 +0200 + + Define fstat() for msvc build + + glib/giowin32.c | 4 ++++ + glib/gkeyfile.c | 4 ++++ + glib/gmappedfile.c | 5 +++++ + 3 files changed, 13 insertions(+) + +commit 75ef01824803c70f42d412c19d4e61904702e461 +Author: Hans Breuer +AuthorDate: Sat May 30 15:29:23 2009 +0200 +Commit: Hans Breuer +CommitDate: Sat May 30 15:29:23 2009 +0200 + + Updated msvc build files + + README.win32 | 13 ++++-- + config.h.win32.in | 3 ++ + gio/makefile.msc | 82 +++++++++++++++++------------------ + gio/win32/makefile.msc | 35 +++++++++++++++ + glib/makefile.msc.in | 114 + +++++++++++++++++++++++++++---------------------- + glibconfig.h.win32.in | 5 +++ + tests/makefile.msc.in | 39 +++++++++-------- + 7 files changed, 172 insertions(+), 119 deletions(-) + +commit 780185449fadcbc5d79d9dea245067c16f475a92 +Author: Hans Breuer +AuthorDate: Sat May 30 15:24:06 2009 +0200 +Commit: Hans Breuer +CommitDate: Sat May 30 15:24:06 2009 +0200 + + Version resource template for gio + + gio/gio.rc.in | 30 ++++++++++++++++++++++++++++++ + 1 file changed, 30 insertions(+) + +commit 73dbe591fb9ae98aab6902cf213132e2ad99c88c +Author: Hans Breuer +AuthorDate: Sat May 30 15:18:02 2009 +0200 +Commit: Hans Breuer +CommitDate: Sat May 30 15:18:02 2009 +0200 + + Handle EAI_NODATA==EAI_NONAME in win32 SDK + + gio/gresolver.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit cbca0ac5d92df015902b3fd8a9086a29b20bc6f9 +Author: Hans Breuer +AuthorDate: Sat May 30 15:14:01 2009 +0200 +Commit: Hans Breuer +CommitDate: Sat May 30 15:14:01 2009 +0200 + + Include io.h for write() on win32 + + gio/gcancellable.c | 1 + + 1 file changed, 1 insertion(+) + +commit 136793cc5e5e808c82d21664c0ba96c95c8f7075 +Author: Hans Breuer +AuthorDate: Sat May 30 15:08:29 2009 +0200 +Commit: Hans Breuer +CommitDate: Sat May 30 15:08:29 2009 +0200 + + Simplified for pre-built package use + + build/win32/make.msc | 120 + +++++++++++++++++++++++++++++++++++------------- + build/win32/module.defs | 29 ++++++++---- + 2 files changed, 108 insertions(+), 41 deletions(-) + +commit f4e89ab87702d220babc4d18ec8450e351d3c06e +Author: Hans Breuer +AuthorDate: Sat May 30 15:02:14 2009 +0200 +Commit: Hans Breuer +CommitDate: Sat May 30 15:02:14 2009 +0200 + + Replace FIXME with proper SDK version define + + gio/gnetworkingprivate.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 661bb521d126480606e12a15f722069eeddfc306 +Author: Matthias Clasen +AuthorDate: Thu May 28 23:50:48 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 28 23:50:48 2009 -0400 + + Bump version + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 33a2f5a21212a62e96ba8f5691a51d512a8925bd +Author: Matthias Clasen +AuthorDate: Thu May 28 23:44:48 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 28 23:44:48 2009 -0400 + + Release 2.21.1 + + docs/reference/glib/tmpl/glib-unused.sgml | 67 --- + docs/reference/glib/tmpl/macros_misc.sgml | 6 +- + docs/reference/glib/tmpl/types.sgml | 2 + + docs/reference/glib/tmpl/version.sgml | 68 +++ + po/am.po | 203 ++++---- + po/ar.po | 203 ++++---- + po/as.po | 203 ++++---- + po/az.po | 203 ++++---- + po/be.po | 207 ++++---- + po/be@latin.po | 206 ++++---- + po/bg.po | 205 ++++---- + po/bn.po | 203 ++++---- + po/bn_IN.po | 203 ++++---- + po/bs.po | 203 ++++---- + po/ca.po | 204 ++++---- + po/ca@valencia.po | 815 + +++++++++++++++--------------- + po/cs.po | 204 ++++---- + po/cy.po | 204 ++++---- + po/da.po | 204 ++++---- + po/de.po | 205 ++++---- + po/dz.po | 203 ++++---- + po/el.po | 204 ++++---- + po/en_CA.po | 203 ++++---- + po/en_GB.po | 203 ++++---- + po/eo.po | 203 ++++---- + po/es.po | 815 + +++++++++++++++--------------- + po/et.po | 203 ++++---- + po/eu.po | 205 ++++---- + po/fa.po | 203 ++++---- + po/fi.po | 203 ++++---- + po/fr.po | 205 ++++---- + po/ga.po | 203 ++++---- + po/gl.po | 205 ++++---- + po/gu.po | 203 ++++---- + po/he.po | 203 ++++---- + po/hi.po | 203 ++++---- + po/hr.po | 204 ++++---- + po/hu.po | 205 ++++---- + po/hy.po | 203 ++++---- + po/id.po | 205 ++++---- + po/is.po | 203 ++++---- + po/it.po | 205 ++++---- + po/ja.po | 203 ++++---- + po/ka.po | 203 ++++---- + po/kn.po | 203 ++++---- + po/ko.po | 203 ++++---- + po/ku.po | 203 ++++---- + po/lt.po | 204 ++++---- + po/lv.po | 203 ++++---- + po/mai.po | 203 ++++---- + po/mg.po | 205 ++++---- + po/mk.po | 205 ++++---- + po/ml.po | 203 ++++---- + po/mn.po | 203 ++++---- + po/mr.po | 204 ++++---- + po/ms.po | 203 ++++---- + po/nb.po | 204 ++++---- + po/ne.po | 203 ++++---- + po/nl.po | 205 ++++---- + po/nn.po | 203 ++++---- + po/oc.po | 203 ++++---- + po/or.po | 234 +++++---- + po/pa.po | 203 ++++---- + po/pl.po | 205 ++++---- + po/ps.po | 203 ++++---- + po/pt.po | 203 ++++---- + po/pt_BR.po | 205 ++++---- + po/ro.po | 203 ++++---- + po/ru.po | 204 ++++---- + po/rw.po | 203 ++++---- + po/si.po | 203 ++++---- + po/sk.po | 205 ++++---- + po/sl.po | 205 ++++---- + po/sq.po | 204 ++++---- + po/sr.po | 203 ++++---- + po/sr@ije.po | 203 ++++---- + po/sr@latin.po | 203 ++++---- + po/sv.po | 204 ++++---- + po/ta.po | 203 ++++---- + po/te.po | 203 ++++---- + po/th.po | 203 ++++---- + po/tl.po | 204 ++++---- + po/tr.po | 203 ++++---- + po/tt.po | 203 ++++---- + po/uk.po | 204 ++++---- + po/vi.po | 204 ++++---- + po/wa.po | 203 ++++---- + po/xh.po | 204 ++++---- + po/yi.po | 203 ++++---- + po/zh_CN.po | 203 ++++---- + po/zh_HK.po | 203 ++++---- + po/zh_TW.po | 203 ++++---- + 92 files changed, 10246 insertions(+), 9069 deletions(-) + +commit 479c45564a7010dad0742912506e1dff9b61fdd5 +Author: Matthias Clasen +AuthorDate: Thu May 28 23:06:24 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 28 23:06:24 2009 -0400 + + Update NEWS once more + + NEWS | 1 + + 1 file changed, 1 insertion(+) + +commit 62abf79be2f7133d4c14aa89a04ac7261e00b9f0 +Author: Matthias Clasen +AuthorDate: Thu May 28 14:40:04 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 28 14:40:18 2009 -0400 + + Another pedantic docs fix + + gio/gsocket.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit d32226da6d4ff565aebd41b5f126d625dc42816b +Author: Alexander Larsson +AuthorDate: Thu May 28 15:34:07 2009 +0200 +Commit: Alexander Larsson +CommitDate: Thu May 28 15:34:57 2009 +0200 + + Ref the right type in g_socket_control_message_deserialize + + We were not looking at the right type at all due to a typo. + + gio/gsocketcontrolmessage.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 390549f6c4968b14ce4a141781f1131f6a09eafe +Author: Alexander Larsson +AuthorDate: Thu May 28 15:33:52 2009 +0200 +Commit: Alexander Larsson +CommitDate: Thu May 28 15:34:57 2009 +0200 + + Document g_socket_control_message_deserialize + + gio/gsocketcontrolmessage.c | 18 +++++++++++++----- + 1 file changed, 13 insertions(+), 5 deletions(-) + +commit dbe7408a5c06b4e88cf2605a24b0949adc02446c +Author: Shixin Zeng +AuthorDate: Thu May 28 12:52:23 2009 +0300 +Commit: Tor Lillqvist +CommitDate: Thu May 28 12:55:11 2009 +0300 + + Fix string length bugs in GWinHttpFile (#580347) + + gio/win32/gwinhttpfile.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +commit a859f883cf939b1010c3783ad34879b2ba897bfe +Author: Matthias Clasen +AuthorDate: Thu May 28 00:30:21 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 28 00:30:21 2009 -0400 + + Fix make check + + gio/ginetsocketaddress.c | 2 +- + gio/gnetworkaddress.c | 2 +- + gio/gnetworkservice.c | 2 +- + gio/gsocketconnectable.c | 2 +- + gio/gsocketcontrolmessage.c | 2 +- + gio/gsocketinputstream.c | 5 +++++ + gio/gsocketoutputstream.c | 7 +++++++ + gio/gthreadedsocketservice.c | 2 +- + gio/gunixfdmessage.c | 2 +- + gio/gunixsocketaddress.c | 2 +- + gio/pltcheck.sh | 2 +- + 11 files changed, 21 insertions(+), 9 deletions(-) + +commit a39670dade8d68062a9ed2a3695b68945f34c5a5 +Author: Matthias Clasen +AuthorDate: Thu May 28 00:08:42 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu May 28 00:09:10 2009 -0400 + + Update for 2.21.1 + + NEWS | 40 ++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 40 insertions(+) + +commit 576839adbe9a72903fd435d24dbbb7826c691fcc +Author: Matthias Clasen +AuthorDate: Wed May 27 22:44:31 2009 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 27 22:44:31 2009 -0400 + + Fix references to nonexisting functions + + gio/gasyncinitable.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit 06144900ec87effb99c94e2d8369ca270d024bf1 +Author: Matthias Clasen +AuthorDate: Wed May 27 18:20:08 2009 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 27 18:20:08 2009 -0400 + + Documentation and coding style fixups + + Lots of pedanic changes. + + docs/reference/gio/gio-sections.txt | 18 +-- + docs/reference/gio/gio.types | 1 + + gio/gasyncinitable.c | 165 ++++++++++++------------ + gio/gfile.c | 155 +++++++++++----------- + gio/ginetaddress.c | 165 +++++++++++++++++++----- + gio/ginetsocketaddress.c | 28 ++-- + gio/ginitable.c | 22 ++-- + gio/ginitable.h | 3 +- + gio/gioenums.h | 48 ++++--- + gio/giostream.c | 132 +++++++++---------- + gio/giotypes.h | 15 ++- + gio/gnetworkaddress.c | 44 ++++--- + gio/gnetworkaddress.h | 16 +-- + gio/gnetworkservice.c | 32 +++-- + gio/gresolver.c | 6 +- + gio/gresolver.h | 2 +- + gio/gsocket.c | 247 + +++++++++++++++++++----------------- + gio/gsocketaddress.c | 17 +-- + gio/gsocketaddressenumerator.c | 34 ++--- + gio/gsocketaddressenumerator.h | 2 +- + gio/gsocketclient.c | 106 +++++++++------- + gio/gsocketclient.h | 16 +-- + gio/gsocketconnectable.c | 4 +- + gio/gsocketconnectable.h | 4 +- + gio/gsocketconnection.c | 102 ++++++++------- + gio/gsocketconnection.h | 26 ++-- + gio/gsocketcontrolmessage.c | 39 ++++-- + gio/gsocketlistener.c | 116 ++++++++--------- + gio/gsocketservice.c | 35 ++--- + gio/gsocketservice.h | 2 +- + gio/gsrvtarget.c | 4 +- + gio/gtcpconnection.c | 30 +++-- + gio/gthreadedsocketservice.c | 24 ++-- + gio/gunixconnection.c | 20 +-- + gio/gunixconnection.h | 2 +- + gio/gunixfdmessage.c | 43 ++++--- + gio/gunixfdmessage.h | 6 +- + gio/gunixsocketaddress.c | 4 +- + 38 files changed, 964 insertions(+), 771 deletions(-) + +commit eecbbb0a20a114b4a2c6759aa108940902c8961c +Author: Matthias Clasen +AuthorDate: Wed May 27 12:07:13 2009 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 27 12:07:13 2009 -0400 + + Fix the an index title + + docs/reference/gio/gio-docs.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 00151ec0e1ea5c6b8be13c70a8808bc0ff380e3b +Author: Matthias Clasen +AuthorDate: Wed May 27 12:01:14 2009 -0400 +Commit: Matthias Clasen +CommitDate: Wed May 27 12:04:35 2009 -0400 + + Fix a locking problem in g_main_context_iterate() + + We failed to ensure that the context is locked on every exit of + the function. This fixes bug 583324. + + glib/gmain.c | 15 ++++++--------- + 1 file changed, 6 insertions(+), 9 deletions(-) + +commit 209a662c2fb664bed2bf4e26bbda784ca7c0739d +Author: Hans Breuer +AuthorDate: Wed May 27 15:12:31 2009 +0300 +Commit: Tor Lillqvist +CommitDate: Wed May 27 15:12:31 2009 +0300 + + Correct reference and implement close_fn (#578769) + + Do proper referencing and unreferencing of + GWinHttpFileInputStream::file and + GWinHttpFileInputStream::file::vfs. Implement + GWinHttpFileInputStream::close_fn. + + gio/win32/gwinhttpfile.c | 5 ++++- + gio/win32/gwinhttpfileinputstream.c | 23 ++++++++++++++++++++++- + 2 files changed, 26 insertions(+), 2 deletions(-) + +commit 623f99dc3dee7712da4ac209ba445b2199b2963c +Author: Alexander Larsson +AuthorDate: Wed May 27 11:11:37 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 27 11:11:37 2009 +0200 + + Add required defines on solaris for GSocket to build (#582856) + + Turns out that the msg_control and related things are not defined + in the + system headers unless you define some _XOPEN_SOURCE things. + + configure.in | 8 ++++++++ + 1 file changed, 8 insertions(+) + +commit f99be75ff9d62f8e8e4e8850e34fe1020e58cb8c +Author: Alexander Larsson +AuthorDate: Mon May 25 15:46:35 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon May 25 15:46:35 2009 +0200 + + Remove mention of non-existing calls from docs + + The docs mentions a separate seekable API for the various file streams + which don't actually exists. Change this to refer to the generic + GSeekable calls. + + gio/gfileinputstream.c | 10 ++++------ + gio/gfileiostream.c | 14 +++++++------- + gio/gfileoutputstream.c | 17 ++++++++--------- + 3 files changed, 19 insertions(+), 22 deletions(-) + +commit 3c0feca7f109c68e8c2a278875e576b18966d299 +Author: Alexander Larsson +AuthorDate: Mon May 25 12:47:12 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon May 25 12:47:12 2009 +0200 + + Don't end enum with comma (#583663) + + This is valid C but breaks C++, so don't put it in headers. + + gio/gioenums.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit c93c98732aefb8472c94e75fea36f4924c7c746c +Author: Alexander Larsson +AuthorDate: Mon May 25 12:46:03 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon May 25 12:46:03 2009 +0200 + + Don't return something from a void function (#583408) + + gio/gsocketcontrolmessage.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit ce171195d99c57e895bb02c7b324c811f958a91f +Author: Alexander Larsson +AuthorDate: Mon May 25 11:33:56 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon May 25 11:33:56 2009 +0200 + + Add g_inet_address_get_native_size (#583205) + + This can be used to get the size of g_inet_address_to_bytes(). + + docs/reference/gio/gio-sections.txt | 1 + + gio/ginetaddress.c | 22 +++++++++++++++++++++- + gio/ginetaddress.h | 2 ++ + gio/gio.symbols | 1 + + 4 files changed, 25 insertions(+), 1 deletion(-) + +commit fb70c6420b63a17bed11b594dd7255df08424fec +Author: Miquel Esplà +AuthorDate: Mon May 25 00:23:58 2009 +0200 +Commit: Gil Forcada +CommitDate: Mon May 25 00:24:08 2009 +0200 + + Added Valencian-Catalan translation + + po/LINGUAS | 1 + + po/ca@valencia.po | 1939 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 1940 insertions(+) + +commit bde3e9c3549bc74bdd2061945f2647fdd8aa3b77 +Author: Jorge Gonzalez +AuthorDate: Sat May 23 20:00:22 2009 +0200 +Commit: Jorge Gonzalez +CommitDate: Sat May 23 20:00:22 2009 +0200 + + Updated Spanish translation + + po/es.po | 29 +++++++++++++++++++---------- + 1 file changed, 19 insertions(+), 10 deletions(-) + +commit 37bd225d7b28e12fd78344d07e656cc2ff0d8d75 +Author: Christian Persch +AuthorDate: Tue May 27 23:45:08 2008 +0200 +Commit: Christian Persch +CommitDate: Sat May 23 18:00:06 2009 +0200 + + Fix grammar in error message + + Bug #583198. + + glib/gkeyfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 76ebe6c069b7fb1d09e6b95172185b325a3bb28e +Author: Christian Persch +AuthorDate: Sat May 24 20:51:07 2008 +0200 +Commit: Christian Persch +CommitDate: Sat May 23 17:59:54 2009 +0200 + + Plug a mem leak + + Bug #583196. + + glib/tests/keyfile.c | 1 + + 1 file changed, 1 insertion(+) + +commit fc9a888b8cb8b16f093caa5d5faf4057fad1c0ef +Author: Christian Persch +AuthorDate: Tue Jan 27 20:39:37 2009 +0100 +Commit: Christian Persch +CommitDate: Sat May 23 17:58:10 2009 +0200 + + Add G_G[U]INTPTR_FORMAT and G_GINTPTR_MODIFIER + + Add macros for printf formatting for g[u]intptr. Bug 569376. + + configure.in | 16 ++++++++++++++++ + docs/reference/glib/glib-sections.txt | 3 +++ + docs/reference/glib/tmpl/macros_misc.sgml | 26 ++++++++++++++++++++++++++ + docs/reference/glib/tmpl/types.sgml | 12 ++++++++++++ + 4 files changed, 57 insertions(+) + +commit d046bfe577f71b45b40d8b0592409c88945bb934 +Author: Christian Persch +AuthorDate: Tue Jan 27 19:54:27 2009 +0100 +Commit: Christian Persch +CommitDate: Sat May 23 17:56:10 2009 +0200 + + Document g[u]intptr + + Bug 569375. + + docs/reference/glib/glib-sections.txt | 4 ++++ + docs/reference/glib/tmpl/types.sgml | 19 ++++++++++++++++++- + 2 files changed, 22 insertions(+), 1 deletion(-) + +commit 54b43229f4d6c3bf456f7b910bc00722a4f956d8 +Author: Christian Persch +AuthorDate: Mon Apr 20 13:46:09 2009 +0200 +Commit: Christian Persch +CommitDate: Sat May 23 17:53:01 2009 +0200 + + Use g_error_new_valist instead of a private copy of it + + gio/gsimpleasyncresult.c | 19 +------------------ + 1 file changed, 1 insertion(+), 18 deletions(-) + +commit 01b79d67ef0294dd633ccb0998a6d9053772da05 +Author: Yeti +AuthorDate: Mon Apr 20 13:22:17 2009 +0200 +Commit: Christian Persch +CommitDate: Sat May 23 17:52:58 2009 +0200 + + Make g_error_new_valist public + + Bug #569024. + + docs/reference/glib/glib-sections.txt | 1 + + docs/reference/glib/tmpl/error_reporting.sgml | 12 ++++++++++++ + glib/gerror.c | 16 +++++++++++++++- + glib/gerror.h | 6 ++++++ + glib/glib.symbols | 1 + + 5 files changed, 35 insertions(+), 1 deletion(-) + +commit 14d53dcfa8a781a79bd61f50bb73c4a1b3b7857e +Author: Alexander Larsson +AuthorDate: Wed May 20 16:28:20 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 16:40:55 2009 +0200 + + Fix connect on win32 + + We should not wait before calling connect for non-blocking connect. + Also, use the right error code for the nonblocking pending case + on win32. + + gio/gsocket.c | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +commit bb66fdcce32fedb31ddba2a5aaa4cd1c8f0cdc9e +Author: Alexander Larsson +AuthorDate: Wed May 20 15:59:11 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 16:40:54 2009 +0200 + + Fix build on win32 + + gio/gsocket.c | 18 +++++++++++------- + 1 file changed, 11 insertions(+), 7 deletions(-) + +commit c897cca601fdf9a91f214a33af33a812680b983e +Author: Alexander Larsson +AuthorDate: Wed May 20 15:58:28 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 16:40:54 2009 +0200 + + Don't add unix specific APIs on win32 + + gio/gio.symbols | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 5a46e4d1406da1a319e421e908aec768760ef139 +Author: Alexander Larsson +AuthorDate: Wed May 20 14:55:14 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 14:55:14 2009 +0200 + + Clarify g_cancellable_push_current docs wrt cancellable being NULL + (#575013) + + gio/gcancellable.c | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +commit ab29e09dac547c501892cac8cd64721c3f157f00 +Author: Alexander Larsson +AuthorDate: Wed May 20 14:46:51 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 14:46:51 2009 +0200 + + Don't dereference identifier_type if it is NULL (#579558) + + gio/gunixvolume.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit d0d10e847f3ea347d651714050a8bafd5332e2cb +Author: Robert Bragg +AuthorDate: Wed May 6 09:20:43 2009 +0100 +Commit: Alexander Larsson +CommitDate: Wed May 20 14:23:53 2009 +0200 + + Take a reference on the gio file monitors while signaling pending + file changes + + It was possible for a signal handler to remove the last reference and + dispose the monitor. If there were remaining pending_file_changes + they + tried to dereference the disposed monitor. + + This patch simply calls g_object_{ref,unref} around the loop that + signals + the changes. + + gio/gfilemonitor.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 6a9df8256aaccd717aaa7582c704093d727699fe +Author: Alexander Larsson +AuthorDate: Wed May 20 14:17:27 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 14:17:27 2009 +0200 + + Use G_GSSIZE_FORMAT where needed (#577884) + + gio/tests/live-g-file.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 7498049a1683db50805b9a9a580b62bb748918f4 +Author: Sjoerd Simons +AuthorDate: Wed May 20 13:59:50 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 13:59:50 2009 +0200 + + Propagate errors from g_network_service_address_enumerator_next_async + in its _finish function + + gio/gnetworkservice.c | 3 +++ + 1 file changed, 3 insertions(+) + +commit 2be66c0458aca37fef8337692fe5b5fe20bc5ccb +Author: Jonathon Jongsma +AuthorDate: Tue May 19 00:10:57 2009 -0500 +Commit: Alexander Larsson +CommitDate: Wed May 20 13:58:13 2009 +0200 + + Typedef GResolverClass in the standard way + + It's a bit lame, but some of our C++ wrapping scripts expect objects + to be + typedefed like: + typedef struct _FooClass FooClass; + struct {} _FooClass; + + Rather than: + typedef struct {} FooClass; + + Functionally they're the same, but the former makes our lives easier + in the + short term + + gio/gresolver.h | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit cb7a300e3136c9d1ee397a4c740513b8a0f21968 +Author: Alexander Larsson +AuthorDate: Wed May 20 13:49:47 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 13:49:47 2009 +0200 + + Don't return something from void function (#583229) + + g_async_initable_init_async is void, don't return something from it. + + gio/gasyncinitable.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 1cbdd2495dcc06eb11c3ef9207aae07acb7c4ba7 +Author: Christian Persch +AuthorDate: Tue May 27 23:44:35 2008 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 13:47:55 2009 +0200 + + Preserve errno when using g_set_error with _() and g_strerror() + + gio/glocalfileoutputstream.c | 2 +- + glib/gspawn.c | 3 ++- + 2 files changed, 3 insertions(+), 2 deletions(-) + +commit 80cfd099f3c9fa23b2a21c77e3698f1c4ac94b06 +Author: Christian Persch +AuthorDate: Tue May 19 15:03:14 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 13:46:39 2009 +0200 + + Use g_set_error_literal + + Bug #583206. + + gio/gsocket.c | 20 ++++++++++---------- + gio/gsocketclient.c | 8 ++++---- + gio/gunixconnection.c | 4 ++-- + 3 files changed, 16 insertions(+), 16 deletions(-) + +commit c20b8d4d53a4e90f0e822276f6fbd94d52ff3c85 +Author: Alexander Larsson +AuthorDate: Wed May 20 13:37:55 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 13:41:25 2009 +0200 + + Check that close_fn is not %NULL before calling (#578499) + + Some streams have no close function, so this caused a crash. + + gio/ginputstream.c | 13 ++++++++----- + gio/giostream.c | 11 +++++++---- + gio/goutputstream.c | 18 +++++++++++------- + 3 files changed, 26 insertions(+), 16 deletions(-) + +commit 0a280dadec8394dd198c8cea0bc288d92c9c6ffd +Author: Stefan Kost +AuthorDate: Tue May 19 14:33:25 2009 +0300 +Commit: Stefan Kost +CommitDate: Wed May 20 14:29:49 2009 +0300 + + docs: fix typo + + glib/gsequence.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 9033b37589fcdf42d10025ea9e4d0dfc2c018bf4 +Author: Sjoerd Simons +AuthorDate: Wed May 20 12:41:50 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 12:41:50 2009 +0200 + + Add helper functions for connecting to service (#583061) + + docs/reference/gio/gio-sections.txt | 3 ++ + gio/gio.symbols | 3 ++ + gio/gsocketclient.c | 93 + +++++++++++++++++++++++++++++++++++++ + gio/gsocketclient.h | 15 ++++++ + 4 files changed, 114 insertions(+) + +commit 25800ed4a393f7edbea179aa86907079a58fd097 +Author: Dan Winship +AuthorDate: Sun May 17 20:44:54 2009 -0400 +Commit: Alexander Larsson +CommitDate: Wed May 20 12:32:58 2009 +0200 + + Ignore SIGPIPE when using GSocket + + http://bugzilla.gnome.org/show_bug.cgi?id=583001 + + gio/gsocket.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +commit 2ea22d8f46c21de6fc1eb012f258a3cfcda36752 +Author: Alexander Larsson +AuthorDate: Wed May 20 12:14:04 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 12:14:55 2009 +0200 + + Remove non-existing parameter from docs + + g_unix_socket_address_abstract_names_supported has no address argument + + gio/gunixsocketaddress.c | 1 - + 1 file changed, 1 deletion(-) + +commit 9d36c86f8a0c759625753c4a9a02e0cfbf123a4b +Author: Alexander Larsson +AuthorDate: Wed May 20 12:10:33 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 12:14:55 2009 +0200 + + Add missing symbols to gio.symbols + + gio/gio.symbols | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 9346f461f32375a34d2829d949dce8284c21654f +Author: Alexander Larsson +AuthorDate: Wed May 20 12:07:30 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 12:14:55 2009 +0200 + + Add missing types to gio.types + + docs/reference/gio/gio.types | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 5cd86fbda662defa03709a9277b25784d953541e +Author: Alexander Larsson +AuthorDate: Wed May 20 12:01:29 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 12:14:50 2009 +0200 + + Remove protocol names, instead use an enum with common protocols + + The whole protocol name thing is pretty weird. The getprotobyname + functions + seem to only specify one mapping for name <-> ids, so all + families/types + must use the same values. Plus the values used for the protocols are + standardized by IANA, so are always the same. + + So, we drop using names for protocols, intead introducing an enum with + a few commonly availible and used protocols. + + docs/reference/gio/#gio-unused.txt# | 100 ++++++++++++++++++++++++ + docs/reference/gio/aa | 74 ++++++++++++++++++ + docs/reference/gio/b | 77 +++++++++++++++++++ + docs/reference/gio/bb | 77 +++++++++++++++++++ + docs/reference/gio/gio-sections.txt | 5 +- + gio/gio.symbols | 4 +- + gio/gioenums.h | 24 ++++++ + gio/gsocket.c | 148 + +++++++----------------------------- + gio/gsocket.h | 7 +- + gio/gsocketclient.c | 40 +++++----- + gio/gsocketclient.h | 4 +- + gio/gsocketconnection.c | 2 +- + gio/gsocketlistener.c | 15 ++-- + gio/gsocketlistener.h | 2 +- + gio/gtcpconnection.c | 8 +- + gio/gunixconnection.c | 2 +- + 16 files changed, 417 insertions(+), 172 deletions(-) + +commit 6d01593b061afb52d22891a371fb29f42d4d62cc +Author: Alexander Larsson +AuthorDate: Wed May 20 11:30:43 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 11:30:43 2009 +0200 + + Clarify "current condition" in g_socket_create_source docs + + gio/gsocket.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +commit 80881826447a10b5ae3c08c9a88440eba75bcd05 +Author: Alexander Larsson +AuthorDate: Wed May 20 11:28:27 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 11:28:27 2009 +0200 + + Actually implement max_threads for GThreadedSocketService + + gio/gthreadedsocketservice.c | 73 + +++++++++++++++++++++++++++++++++++++++----- + 1 file changed, 66 insertions(+), 7 deletions(-) + +commit 053f9e72b12b9b5ab5571da9f4cd0b9b13f41e62 +Author: Alexander Larsson +AuthorDate: Wed May 20 11:19:47 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 11:19:47 2009 +0200 + + Add support for graceful disconnect to GTcpConnection + + docs/reference/gio/gio-sections.txt | 2 + + gio/gio.symbols | 2 + + gio/gtcpconnection.c | 331 + ++++++++++++++++++++++++++++++++++++ + gio/gtcpconnection.h | 6 +- + gio/tests/send-data.c | 49 +++++- + 5 files changed, 386 insertions(+), 4 deletions(-) + +commit f061765e54b81a92f4ce901016964ea4c31d77e0 +Author: Alexander Larsson +AuthorDate: Wed May 20 11:18:34 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 20 11:18:34 2009 +0200 + + Call sync close function directly in async implementation + + The g_io_stream_wrapper fails since there is already an outstanding + operation (the async close). + + gio/gsocketconnection.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +commit fdfdec36d0d0044513db25872132bd42d392f748 +Author: Alexander Larsson +AuthorDate: Tue May 19 13:44:11 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue May 19 13:44:11 2009 +0200 + + Add send-data, a g_socket_client test case + + gio/tests/Makefile.am | 6 ++- + gio/tests/send-data.c | 120 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 125 insertions(+), 1 deletion(-) + +commit 18373cfbe85dc8398ae1e66748721400a08b32a8 +Author: Alexander Larsson +AuthorDate: Tue May 19 12:06:29 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue May 19 12:06:29 2009 +0200 + + Set the listen backlog before calling listen. + + If we set it after it won't be used. + + gio/gsocketlistener.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 64383fa3d92b636e8fc977743de1c8f513d08dd2 +Author: Alexander Larsson +AuthorDate: Tue May 19 11:53:42 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue May 19 11:53:42 2009 +0200 + + Fix g_unix_socket_address_abstract_names_supported docs + + The previous description was a cut-n-paste from another function. + + gio/gunixsocketaddress.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 0ffe7221934623f60e07d3b733d170ce94d26dd5 +Author: Alexander Larsson +AuthorDate: Tue May 19 11:52:33 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue May 19 11:52:33 2009 +0200 + + Add g_socket_shutdown + + docs/reference/gio/gio-sections.txt | 1 + + gio/gio.symbols | 1 + + gio/gsocket.c | 73 + +++++++++++++++++++++++++++++++++++++ + gio/gsocket.h | 4 ++ + 4 files changed, 79 insertions(+) + +commit 03441e724a6b6d0b115fa5b2d9fbeefaa1fd2faa +Author: Alexander Larsson +AuthorDate: Tue May 19 11:27:07 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue May 19 11:27:07 2009 +0200 + + Document GOutputVector and GInputVector + + docs/reference/gio/gio-sections.txt | 2 ++ + gio/giotypes.h | 23 +++++++++++++++++------ + 2 files changed, 19 insertions(+), 6 deletions(-) + +commit e1a4389cbc549b0db39ec692f2fde5c20579362c +Author: Alexander Larsson +AuthorDate: Tue May 19 10:57:58 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue May 19 10:57:58 2009 +0200 + + Rename g_socket_check_pending_error to g_socket_check_connect_result + + This is only used for connect anyway, and this describes the operation + better. + + docs/reference/gio/gio-sections.txt | 2 +- + gio/gio.symbols | 2 +- + gio/gsocket.c | 12 ++++++------ + gio/gsocket.h | 2 +- + gio/gsocketclient.c | 2 +- + 5 files changed, 10 insertions(+), 10 deletions(-) + +commit bcba61c951c0a81326e2065ae81352ae2cbca6bb +Author: Alexander Larsson +AuthorDate: Tue May 19 10:47:55 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue May 19 10:47:55 2009 +0200 + + Update docs on listen backlog + + Mention g_socket_set_listen_backlog in g_socket_listen. + Explain that listen backlock needs to be set before calling + listen. Also verify this with a g_return_if_fail. + + gio/gsocket.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +commit 69130db81a0b174bb072f458e8c1b1cd6bc1a0c9 +Author: Alexander Larsson +AuthorDate: Tue May 19 10:40:27 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue May 19 10:40:27 2009 +0200 + + Read socket state in g_socket_get_local/remote_address + + Previously we saved the location in various places which is + unnecessary + and sometimes even wrong. For instance, we saved the address we + bound to + which may not have the final port set. + + gio/gsocket.c | 88 + +++++++++++++++-------------------------------- + gio/gsocketconnection.c | 2 ++ + gio/tests/socket-server.c | 1 + + 3 files changed, 31 insertions(+), 60 deletions(-) + +commit f8cd1c530488c0b56634fab049ac775d094e9e58 +Author: Alexander Larsson +AuthorDate: Tue May 19 10:16:32 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue May 19 10:16:32 2009 +0200 + + Clean up refereces to @protocol_id in g_socket_new docs + + This was not fully updated from the protocol to protocol_id change. + + gio/gsocket.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 3756ddb0eea8cef31e9aaad53eb6aa7d24a80fde +Author: Alexander Larsson +AuthorDate: Mon May 18 23:24:13 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon May 18 23:24:13 2009 +0200 + + Ignore error when setting SO_REUSEADDR + + The main error would be "not supported" which could happen for e.g. + unix domain sockets, we don't really care, as this is mainly something + for TCP to help out a bit. + + gio/gsocket.c | 13 ++++--------- + 1 file changed, 4 insertions(+), 9 deletions(-) + +commit f24c7fa9cbf2e0caa08a48ef64141d7ea50105aa +Author: Alexander Larsson +AuthorDate: Mon May 18 21:30:33 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon May 18 21:31:28 2009 +0200 + + Add support for abstract unix socket addresses + + docs/reference/gio/gio-sections.txt | 5 + + gio/gsocketaddress.c | 3 + + gio/gunixsocketaddress.c | 300 + +++++++++++++++++++++++++++++------- + gio/gunixsocketaddress.h | 9 +- + 4 files changed, 262 insertions(+), 55 deletions(-) + +commit d8bdc3e5678498996efe618bec32b8ae43ca8b39 +Author: Alexander Larsson +AuthorDate: Mon May 18 14:10:07 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon May 18 21:31:28 2009 +0200 + + Add GError to g_socket_address_to_native + + This is nice for some callers so they can report an error. + It is also required to support opional address types like + abstract paths for unix domain sockets. + + gio/ginetsocketaddress.c | 23 +++++++++++++++++++---- + gio/gresolver.c | 2 +- + gio/gsocket.c | 11 +++++++---- + gio/gsocketaddress.c | 13 +++++++++---- + gio/gsocketaddress.h | 6 ++++-- + gio/gunixsocketaddress.c | 9 +++++++-- + 6 files changed, 47 insertions(+), 17 deletions(-) + +commit eefd7cd8db5c7749212e7c9861a84eb3e34be1ee +Author: Jorge Gonzalez +AuthorDate: Mon May 18 20:19:05 2009 +0200 +Commit: Jorge Gonzalez +CommitDate: Mon May 18 20:19:05 2009 +0200 + + Updated Spanish translation + + po/es.po | 815 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 415 insertions(+), 400 deletions(-) + +commit 6ea86cc57f1b8b8c7acc4e08ece8baef5f28a53a +Author: Alexander Larsson +AuthorDate: Mon May 18 13:02:11 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon May 18 13:07:43 2009 +0200 + + Update the docs for the new network APIs + + This imports the network APIs into the gio reference docs, and cleans + up a bunch of gtk-doc warnings and documentation issues. + + docs/reference/gio/gio-docs.xml | 43 +++- + docs/reference/gio/gio-sections.txt | 350 + +++++++++++++++++++++++++++++- + docs/reference/gio/gio.types | 20 +- + docs/reference/gio/overview.xml | 28 +++ + docs/reference/glib/tmpl/glib-unused.sgml | 67 ++++++ + docs/reference/glib/tmpl/macros_misc.sgml | 5 +- + docs/reference/glib/tmpl/version.sgml | 68 ------ + gio/gasyncinitable.c | 7 +- + gio/gfile.c | 2 +- + gio/gfile.h | 9 + + gio/gfileenumerator.c | 2 +- + gio/gfileiostream.c | 10 +- + gio/ginetsocketaddress.c | 2 +- + gio/ginitable.c | 9 +- + gio/gioenums.h | 5 +- + gio/giostream.c | 9 +- + gio/giotypes.h | 2 + + gio/gmount.c | 2 +- + gio/gmount.h | 1 + + gio/gsocket.c | 4 +- + gio/gsocket.h | 5 - + gio/gsocketclient.c | 25 +-- + gio/gsocketclient.h | 8 +- + gio/gsocketconnection.c | 17 +- + gio/gsocketconnection.h | 2 +- + gio/gsocketlistener.c | 10 +- + gio/gsocketservice.c | 3 +- + gio/gthemedicon.c | 6 +- + gio/gunixconnection.c | 2 +- + gio/gunixsocketaddress.c | 2 +- + 30 files changed, 575 insertions(+), 150 deletions(-) + +commit e1afc6e79b9526d68eff0f218ac98a6f0e323513 +Author: Alexander Larsson +AuthorDate: Mon May 18 11:30:48 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon May 18 13:07:39 2009 +0200 + + Remove gtk-doc warnings + + Some code was using gtk-doc comment blocks for non-gtk-doc contents, + just + turn it into ordinary comments. + + gio/fen/fen-kernel.c | 2 +- + gio/inotify/inotify-helper.c | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +commit 822abda451c9999ac4e1cf3b8d5649ebebbb5ee4 +Author: Alexander Larsson +AuthorDate: Mon May 18 11:29:11 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon May 18 11:29:11 2009 +0200 + + Add more internal headers for gtk-doc to ignore + + This gives less bogus output in gio-unused.txt + + docs/reference/gio/Makefile.am | 38 + +++++++++++++++++++++++--------------- + 1 file changed, 23 insertions(+), 15 deletions(-) + +commit c3f4e0162714f4712edcf51fa1502c8187faf5c0 +Author: Alexander Larsson +AuthorDate: Mon May 18 11:27:49 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon May 18 11:27:49 2009 +0200 + + Make all non-static functions start with underscore + + We don't want to export a lot of non-namespaced internal symbols. + + gio/fen/fen-data.c | 158 + ++++++++++++++++++++--------------------- + gio/fen/fen-data.h | 28 ++++---- + gio/fen/fen-dump.c | 2 +- + gio/fen/fen-helper.c | 76 ++++++++++---------- + gio/fen/fen-helper.h | 6 +- + gio/fen/fen-kernel.c | 22 +++--- + gio/fen/fen-kernel.h | 14 ++-- + gio/fen/fen-missing.c | 10 +-- + gio/fen/fen-missing.h | 4 +- + gio/fen/fen-node.c | 38 +++++----- + gio/fen/fen-node.h | 22 +++--- + gio/fen/fen-sub.c | 4 +- + gio/fen/fen-sub.h | 4 +- + gio/fen/gfendirectorymonitor.c | 16 ++--- + gio/fen/gfenfilemonitor.c | 16 ++--- + gio/fen/libfen_la-fen-dump.loT | 7 ++ + 16 files changed, 217 insertions(+), 210 deletions(-) + +commit 66d49b8bdeed9bac71acda847d8cbe0203dd5ba4 +Author: Alexander Larsson +AuthorDate: Mon May 18 09:28:26 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon May 18 09:28:26 2009 +0200 + + Remove g_socket_set/get_reuse_address from header + + These functions have been removed. + + gio/gsocket.h | 3 --- + 1 file changed, 3 deletions(-) + +commit 13cb01176291a8baa171da8dcb9f679b274af450 +Author: Alexander Larsson +AuthorDate: Mon May 18 08:47:10 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon May 18 08:47:49 2009 +0200 + + Add max_threads argument to g_threaded_socket_service_new + + gio/gthreadedsocketservice.c | 4 +++- + gio/gthreadedsocketservice.h | 2 +- + gio/tests/echo-server.c | 2 +- + gio/tests/httpd.c | 2 +- + 4 files changed, 6 insertions(+), 4 deletions(-) + +commit 5b683af237f1c5dac62c83e11459d46799ba6ecf +Author: Paul Pogonyshev +AuthorDate: Sun May 17 15:17:57 2009 +0300 +Commit: Paul Pogonyshev +CommitDate: Sun May 17 15:17:57 2009 +0300 + + Fix error message in set_mtime_atime() + + Bug #578786. + + gio/glocalfileinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 34e74378c9fc99a3dc75eb9680bb00cb784029bb +Author: Alexander Larsson +AuthorDate: Fri May 15 21:34:14 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri May 15 21:34:14 2009 +0200 + + Add test apps for highlevel socket classes + + echo-server - simple echo server + httpd - simple http server + + gio/tests/Makefile.am | 10 ++- + gio/tests/echo-server.c | 73 +++++++++++++++++++ + gio/tests/httpd.c | 183 + ++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 265 insertions(+), 1 deletion(-) + +commit 67df7d43e926702290280578cd6b89fee7302d72 +Author: Alexander Larsson +AuthorDate: Fri May 15 21:27:54 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri May 15 21:27:54 2009 +0200 + + Add references to highlevel classes in GSocket docs + + gio/gsocket.c | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +commit ce8361217c1c9bd458eab55554a77d24210235cc +Author: Alexander Larsson +AuthorDate: Fri May 15 21:26:24 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri May 15 21:26:24 2009 +0200 + + Import all the highlevel socket classes from gnio + + gio/Makefile.am | 22 +- + gio/gio-marshal.list | 1 + + gio/gio.h | 8 +- + gio/gio.symbols | 82 ++++ + gio/giotypes.h | 50 +++ + gio/gsocketclient.c | 912 + +++++++++++++++++++++++++++++++++++++++++++ + gio/gsocketclient.h | 115 ++++++ + gio/gsocketconnection.c | 474 ++++++++++++++++++++++ + gio/gsocketconnection.h | 91 +++++ + gio/gsocketinputstream.c | 259 ++++++++++++ + gio/gsocketinputstream.h | 58 +++ + gio/gsocketlistener.c | 815 ++++++++++++++++++++++++++++++++++++++ + gio/gsocketlistener.h | 134 +++++++ + gio/gsocketoutputstream.c | 259 ++++++++++++ + gio/gsocketoutputstream.h | 58 +++ + gio/gsocketservice.c | 330 ++++++++++++++++ + gio/gsocketservice.h | 88 +++++ + gio/gtcpconnection.c | 67 ++++ + gio/gtcpconnection.h | 64 +++ + gio/gthreadedsocketservice.c | 215 ++++++++++ + gio/gthreadedsocketservice.h | 81 ++++ + gio/gunixconnection.c | 293 ++++++++++++++ + gio/gunixconnection.h | 77 ++++ + 23 files changed, 4550 insertions(+), 3 deletions(-) + +commit 2597e3adc37ce342972e995444f4417e0aa6fb5d +Author: Alexander Larsson +AuthorDate: Fri May 15 20:58:27 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri May 15 20:58:27 2009 +0200 + + Remove unused variable + + gio/glocalfileoutputstream.c | 1 - + 1 file changed, 1 deletion(-) + +commit 4ade78fc3d242b58d57d92944c16ba7ef4614b2c +Author: Alexander Larsson +AuthorDate: Fri May 15 20:43:02 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri May 15 20:43:02 2009 +0200 + + Include stdlib.h to avoid warning + + Fixes a "implicit declaration of function ‘strtol’" warning + + gio/gnetworkaddress.c | 1 + + 1 file changed, 1 insertion(+) + +commit d3a2c457cb55730181c04c8d6d1f611ee555c250 +Author: Alexander Larsson +AuthorDate: Fri May 15 20:42:04 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri May 15 20:42:04 2009 +0200 + + Forgot to return the allocated data in async_op_wrapper_new + + gio/gfileiostream.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit a48fc532519b849498c8b75dde578caf0c270b23 +Author: Alexander Larsson +AuthorDate: Fri May 15 10:42:28 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri May 15 10:42:28 2009 +0200 + + Make cancellable pipe fds close-on-exec + + GCancellable is purely an in-process thing, so ensure that no + cancellable + fds accidentally leak to child processes. + + gio/gcancellable.c | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +commit 23424e7bcb93abe805394d11e8b32beb7571e87c +Author: Alexander Larsson +AuthorDate: Fri May 15 10:28:30 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri May 15 10:28:30 2009 +0200 + + Add padding to new classes + + gio/gsocketcontrolmessage.h | 9 +++++++++ + gio/gunixfdmessage.h | 6 ++++++ + 2 files changed, 15 insertions(+) + +commit 8f67f47e05a9244d86d9661caa73e5a2fc573e55 +Author: Alexander Larsson +AuthorDate: Fri May 15 10:08:18 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri May 15 10:08:18 2009 +0200 + + Add test apps for GSocket API + + gio/tests/Makefile.am | 10 +- + gio/tests/socket-client.c | 294 + ++++++++++++++++++++++++++++++++++++++++++++ + gio/tests/socket-server.c | 304 + ++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 607 insertions(+), 1 deletion(-) + +commit a258ec3b5bf0a0b2ab1cb1dce8ce715c3895bdaa +Author: Alexander Larsson +AuthorDate: Fri May 15 10:05:55 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri May 15 10:05:55 2009 +0200 + + Fix deadlock in threaded resolver + + When you're using the threaded resolver and using a sync call + without a cancellable the resolve_sync forgot to unlock the + initial req->mutex lock, leading to a deadlock when unrefing + the request. + + gio/gthreadedresolver.c | 1 + + 1 file changed, 1 insertion(+) + +commit f662e7e86bc27102948683c0925815efefb43bbc +Author: Alexander Larsson +AuthorDate: Fri May 15 09:10:23 2009 +0200 +Commit: Alexander Larsson +CommitDate: Fri May 15 09:10:23 2009 +0200 + + Store protocol by id, add lookup function for name + + We want to use the protocol id for lookup in the GSocketConnection + code, so we expose it. We also make GSocket store the protocol + as an int for less memory use and to allow platform specific protocols + to be specified. + + Also added g_socket_protocol_id_lookup_by_name() to allow the higher + level code to specify the name by string, and + g_socket_get_protocol_name() + to get it. + + gio/gio.symbols | 4 +- + gio/gsocket.c | 178 + ++++++++++++++++++++++++++++++++++++++++++-------------- + gio/gsocket.h | 6 +- + 3 files changed, 141 insertions(+), 47 deletions(-) + +commit bd87df9e73272c72a1f45cc606d010e8c4961363 +Author: Alexander Larsson +AuthorDate: Thu May 14 16:58:47 2009 +0200 +Commit: Alexander Larsson +CommitDate: Thu May 14 18:12:40 2009 +0200 + + Make GSocketSourceFunc return the GSocket + + This is very useful when you have multiple sockets with sources. + + gio/gasynchelper.c | 38 +++++++++++++++++++++++++++++--------- + gio/gasynchelper.h | 14 +++++++++++--- + gio/giotypes.h | 8 +++++--- + gio/gsocket.c | 8 +++++--- + 4 files changed, 50 insertions(+), 18 deletions(-) + +commit 7ffdc91f513d6b91d060df6e3ad3401ef23e968d +Author: Alexander Larsson +AuthorDate: Thu May 14 16:19:07 2009 +0200 +Commit: Alexander Larsson +CommitDate: Thu May 14 16:19:07 2009 +0200 + + Set optlen before calling getsockopt + + We were sometimes failing in g_socket_check_pending_error because + we were not setting optlen on input and it was sometimes randomly + less than sizeof(int). + + gio/gsocket.c | 1 + + 1 file changed, 1 insertion(+) + +commit 145cec3c93d5ba0c22d35aaf341b3713cadc0e14 +Author: Alexander Larsson +AuthorDate: Thu May 14 15:26:37 2009 +0200 +Commit: Alexander Larsson +CommitDate: Thu May 14 15:44:36 2009 +0200 + + Import GInitable, GSocket and dependencies from gnio + + This adds: + GInitable - failable object constructor interface + GAsyncInitable - async failable object constructor interface + GSocket - Platform independent lowlevel berkely socket style object + GSocketControlMessage - For passing control messages over GSocket + GUnixFDMessage - unix fd passing socket control message + + Some changes were done during the import from gnio to make things + work in glib. For instance, types were moved to other headers, header + file boiler plate were updated to glib style and gio.symbols stuff + was added. + + configure.in | 16 + + gio/Makefile.am | 10 + + gio/gasyncinitable.c | 383 ++++++ + gio/gasyncinitable.h | 119 ++ + gio/ginitable.c | 251 ++++ + gio/ginitable.h | 95 ++ + gio/gio.h | 4 + + gio/gio.symbols | 81 ++ + gio/gioenums.h | 46 +- + gio/gioerror.c | 6 + + gio/giotypes.h | 59 + + gio/gsocket.c | 2970 + +++++++++++++++++++++++++++++++++++++++++++ + gio/gsocket.h | 172 +++ + gio/gsocketcontrolmessage.c | 200 +++ + gio/gsocketcontrolmessage.h | 96 ++ + gio/gunixfdmessage.c | 259 ++++ + gio/gunixfdmessage.h | 67 + + 17 files changed, 4833 insertions(+), 1 deletion(-) + +commit 33c00e5c33dfe612e5d8757dd07e4c3acae30acc +Author: Alexander Larsson +AuthorDate: Thu May 14 10:53:53 2009 +0200 +Commit: Alexander Larsson +CommitDate: Thu May 14 15:34:12 2009 +0200 + + Add g_network_address_parse + + This is useful if you want to allow users to specify + the hostname and optionally a port. + + configure.in | 3 + + gio/gio.symbols | 1 + + gio/gnetworkaddress.c | 164 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gnetworkaddress.h | 12 ++-- + 4 files changed, 176 insertions(+), 4 deletions(-) + +commit 80a484ad2c2495134a87a35f8ac936e8e75c311a +Author: Alexander Larsson +AuthorDate: Thu May 14 15:32:55 2009 +0200 +Commit: Alexander Larsson +CommitDate: Thu May 14 15:34:12 2009 +0200 + + Add the new GFile ops to gio.symbols + + This adds all the symbols related to GFile GIOStream support that was + recently added. + + gio/gio.symbols | 9 +++++++++ + 1 file changed, 9 insertions(+) + +commit ed0821856533e63bee4f7da54f1a9e6e0b1f12e9 +Author: Alexander Larsson +AuthorDate: Wed May 13 13:06:58 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 13 14:42:57 2009 +0200 + + Add tests for local GIOStream GFile ops + + gio/tests/Makefile.am | 4 + + gio/tests/readwrite.c | 293 + ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 297 insertions(+) + +commit 14d58d51a325797aee3b53fb4e0ba76ca0adc3f5 +Author: Alexander Larsson +AuthorDate: Wed May 13 13:03:47 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 13 14:42:57 2009 +0200 + + Local file implementation of GFileIOStream and ops + + This implements all the GIOStream file ops for local files. + We use the "fallback to output stream" for all GFileIOStream ops. + Some helpers stuff was added to the local input and output streams + so they could be reused. + + gio/Makefile.am | 2 + + gio/glocalfile.c | 67 +++++++++++++++++++++++ + gio/glocalfileinputstream.c | 12 ++++ + gio/glocalfileinputstream.h | 5 +- + gio/glocalfileiostream.c | 114 ++++++++++++++++++++++++++++++++++++++ + gio/glocalfileiostream.h | 60 ++++++++++++++++++++ + gio/glocalfileoutputstream.c | 127 + ++++++++++++++++++++++++++++++++++++++----- + gio/glocalfileoutputstream.h | 14 +++++ + 8 files changed, 385 insertions(+), 16 deletions(-) + +commit 7a2d4889b50c5edd3f483c6e037faec1e093ab13 +Author: Alexander Larsson +AuthorDate: Wed May 13 13:00:26 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 13 14:42:51 2009 +0200 + + Add GIOStream operations to GFile + + g_file_open_readwrite, g_file_create_readwrite, + g_file_replace_readwrite + and async variants, with default implementations using threads. + + gio/gfile.c | 666 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gfile.h | 83 ++++++++ + 2 files changed, 749 insertions(+) + +commit bd0b8c60c231c72588d69dfb2018d2e418517f7f +Author: Alexander Larsson +AuthorDate: Tue May 12 16:59:36 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 13 14:42:46 2009 +0200 + + Add GFileIOStream class + + This is similar to GFileInputStream and GFileOutputStream for + GIOStreams. + The default implementations chain to the Output stream. + + gio/Makefile.am | 2 + + gio/gfileiostream.c | 671 + ++++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/gfileiostream.h | 118 +++++++++ + gio/gio.h | 1 + + gio/gio.symbols | 10 + + gio/giostream.c | 3 - + gio/giotypes.h | 1 + + 7 files changed, 803 insertions(+), 3 deletions(-) + +commit 6d0bebb7df1129bb78cdd526e1b44c91b61321dd +Author: Alexander Larsson +AuthorDate: Tue May 12 19:31:19 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 13 14:42:45 2009 +0200 + + Add comment about lifecycle issues for GIOStreams + + gio/giostream.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit 05f544c59191ea7eab076fbb77a2e3648d52e167 +Author: Alexander Larsson +AuthorDate: Tue May 12 16:30:15 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 13 14:42:38 2009 +0200 + + Import GIOStream from gnio + + Based on gnio rev 84516a5f544d8d5f3da368a83844e84eca8ef771 + + gio/Makefile.am | 2 + + gio/gio.h | 1 + + gio/gio.symbols | 15 ++ + gio/giostream.c | 607 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + gio/giostream.h | 112 +++++++++++ + gio/giotypes.h | 1 + + 6 files changed, 738 insertions(+) + +commit 1ecfae6a71b10cda9b3fa1e8f38bb22db01fb0af +Author: Alexander Larsson +AuthorDate: Tue May 12 19:53:24 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 13 13:18:28 2009 +0200 + + Remove close in finalize, we do it in dispose + + This is not needed, and in fact it may be a bad idea to call + it from finalize anyway since the object isn't fully alive then. + + gio/ginputstream.c | 3 --- + 1 file changed, 3 deletions(-) + +commit 2bbb85633f30da2a7b79b518ca7821cde475cb3a +Author: Alexander Larsson +AuthorDate: Tue May 12 13:57:52 2009 +0200 +Commit: Alexander Larsson +CommitDate: Tue May 12 13:58:18 2009 +0200 + + Remove not actually used member "cancelled" + + gio/goutputstream.c | 1 - + 1 file changed, 1 deletion(-) + +commit 0030935d041f26e461aca6583927ea0cceb166bb +Author: Tor Lillqvist +AuthorDate: Tue May 12 14:54:12 2009 +0300 +Commit: Tor Lillqvist +CommitDate: Tue May 12 14:54:12 2009 +0300 + + Make glibconfig.h.win32.in match the generated one. + + Add G_GOFFSET_MODIFIER, G_GOFFSET_FORMAT and G_GOFFSET_CONSTANT. + + glibconfig.h.win32.in | 5 +++++ + 1 file changed, 5 insertions(+) + +commit b3e4b761f465a8cb0948bd6381ad832a0a47436a +Author: Alexander Larsson +AuthorDate: Wed May 6 13:26:17 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 6 13:26:17 2009 +0200 + + Fix gcancellable.c build on non-win32 + + I forgot to add #ifdef G_OS_WIN32 in one place, sorry. + + gio/gcancellable.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit e10edefff1308cad307d954b17163538a3c7f20a +Author: Alexander Larsson +AuthorDate: Wed May 6 13:10:58 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed May 6 13:14:04 2009 +0200 + + Simplify GCancellable support on win32 + + There is no need to have a GIOChannel in the GPollFD in + g_cancellable_create_pollfd. All we need is an Event object that + we signal when cancelling and reset when resetting. + + Also, supporting g_cancellable_get_fd on Windows using _pipe is + useless + as it doesn't work with any corresponding poll() function, so + just don't + support that on win32. + + I tested this with the cancellation support in GSocket from gnio. + + gio/gcancellable.c | 56 + +++++++++++++++++++++++++----------------------------- + 1 file changed, 26 insertions(+), 30 deletions(-) + +commit 2fff3026efbaf7e480d1a166c7166c44c6643567 +Author: Paul Pogonyshev +AuthorDate: Mon May 4 22:32:35 2009 +0300 +Commit: Paul Pogonyshev +CommitDate: Tue May 5 22:16:59 2009 +0300 + + Don't try to ref NULL pointer in g_desktop_app_info_dup() + + Fixes bug #573246. + + gio/gdesktopappinfo.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit d89cc0d7cbad8b6904931440e579e291ce81780d +Author: Carlos Garnacho +AuthorDate: Tue May 5 14:45:18 2009 -0400 +Commit: Matthias Clasen +CommitDate: Tue May 5 14:45:18 2009 -0400 + + Add a GMount::pre-unmount signal + + This is the per-mount analogon to GVolumeMonitor::mount-pre-unmount. + + gio/gmount.c | 16 ++++++++++++++++ + gio/gmount.h | 3 +++ + gio/gunixmount.c | 2 ++ + 3 files changed, 21 insertions(+) + +commit 4ecec3b1c2d335b1e26b209fc7e2b77013ece795 +Author: Manoj Kumar Giri +AuthorDate: Tue May 5 12:34:44 2009 +0530 +Commit: Manoj Kumar Giri +CommitDate: Tue May 5 12:34:44 2009 +0530 + + Updated Oriya Translation. + + po/or.po | 111 + ++++++++++----------------------------------------------------- + 1 file changed, 17 insertions(+), 94 deletions(-) + +commit 757f9281d7aac1254a156136440b4df4fa52e3a1 +Author: Matthias Clasen +AuthorDate: Sun May 3 18:08:01 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 3 18:08:50 2009 -0400 + + Bump version to 2.21.1 + + configure.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a28215fa909ef315e596ebd0b41132730aef909d +Author: Matthias Clasen +AuthorDate: Sun May 3 18:04:31 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 3 18:08:49 2009 -0400 + + Release 2.21.0 + + docs/reference/gio/gio-docs.xml | 3 + + docs/reference/glib/glib-docs.sgml | 3 + + docs/reference/gobject/gobject-docs.sgml | 3 + + gio/gcancellable.c | 58 +- + gio/gresolver.c | 37 +- + gio/gsrvtarget.c | 16 +- + gio/gthreadedresolver.c | 10 +- + gio/gunixresolver.c | 2 +- + po/am.po | 226 +++----- + po/ar.po | 286 +++++----- + po/as.po | 300 +++++----- + po/az.po | 276 ++++------ + po/be.po | 302 +++++----- + po/be@latin.po | 306 +++++----- + po/bg.po | 307 +++++------ + po/bn.po | 271 ++++----- + po/bn_IN.po | 291 +++++----- + po/bs.po | 276 ++++------ + po/ca.po | 915 + +++++++++++++++--------------- + po/cs.po | 801 + +++++++++++++-------------- + po/cy.po | 274 ++++----- + po/da.po | 304 +++++----- + po/de.po | 312 +++++------ + po/dz.po | 272 ++++----- + po/el.po | 306 +++++----- + po/en_CA.po | 289 +++++----- + po/en_GB.po | 300 +++++----- + po/eo.po | 270 ++++----- + po/es.po | 806 + ++++++++++++++------------- + po/et.po | 402 +++++++++++++- + po/eu.po | 310 +++++------ + po/fa.po | 276 ++++------ + po/fi.po | 304 +++++----- + po/fr.po | 312 +++++------ + po/ga.po | 244 ++++---- + po/gl.po | 306 +++++----- + po/gu.po | 296 +++++----- + po/he.po | 300 +++++----- + po/hi.po | 296 +++++----- + po/hr.po | 272 ++++----- + po/hu.po | 305 +++++----- + po/hy.po | 228 +++----- + po/id.po | 280 ++++------ + po/is.po | 273 ++++----- + po/it.po | 309 +++++------ + po/ja.po | 305 +++++----- + po/ka.po | 272 ++++----- + po/kn.po | 302 +++++----- + po/ko.po | 308 +++++------ + po/ku.po | 210 +++---- + po/lt.po | 304 +++++----- + po/lv.po | 276 ++++------ + po/mai.po | 286 +++++----- + po/mg.po | 276 ++++------ + po/mk.po | 281 ++++------ + po/ml.po | 300 +++++----- + po/mn.po | 276 ++++------ + po/mr.po | 298 +++++----- + po/ms.po | 276 ++++------ + po/nb.po | 302 +++++----- + po/ne.po | 274 ++++----- + po/nl.po | 319 ++++++----- + po/nn.po | 278 ++++------ + po/oc.po | 209 +++---- + po/or.po | 296 +++++----- + po/pa.po | 296 +++++----- + po/pl.po | 304 +++++----- + po/ps.po | 919 + ++++++++++++++----------------- + po/pt.po | 305 +++++----- + po/pt_BR.po | 304 +++++----- + po/ro.po | 307 +++++------ + po/ru.po | 312 +++++------ + po/rw.po | 276 ++++------ + po/si.po | 253 ++++----- + po/sk.po | 279 ++++------ + po/sl.po | 300 +++++----- + po/sq.po | 328 +++++------ + po/sr.po | 271 ++++----- + po/sr@ije.po | 282 ++++------ + po/sr@latin.po | 271 ++++----- + po/sv.po | 304 +++++----- + po/ta.po | 298 +++++----- + po/te.po | 296 +++++----- + po/th.po | 296 +++++----- + po/tl.po | 284 ++++------ + po/tr.po | 304 +++++----- + po/tt.po | 238 +++----- + po/uk.po | 300 +++++----- + po/vi.po | 302 +++++----- + po/wa.po | 255 ++++----- + po/xh.po | 278 ++++------ + po/yi.po | 273 ++++----- + po/zh_CN.po | 296 +++++----- + po/zh_HK.po | 296 +++++----- + po/zh_TW.po | 296 +++++----- + 95 files changed, 12758 insertions(+), 14748 deletions(-) + +commit 4e694faa332a6ef4c576176b568a7f74e142103a +Author: Paul Pogonyshev +AuthorDate: Mon May 4 00:55:35 2009 +0300 +Commit: Paul Pogonyshev +CommitDate: Mon May 4 00:55:35 2009 +0300 + + Fix g_input_stream_skip_async() documentation + + Remove mention of inexisting argument. Spotted in relation to bug + 581229. + + gio/ginputstream.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit f33a484b4a1a14902dc1789c2e023fbcd4136098 +Author: Matthias Clasen +AuthorDate: Sun May 3 17:10:16 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 3 17:10:16 2009 -0400 + + Fix up tests forgotten in Michaels commit + + When Michael cleaned up after my fumbled commit of his gmarkup + optimizations, he fumbled himself and forgot to fix up the tests... + + tests/markups/fail-36.gmarkup | Bin 13 -> 42 bytes + 1 file changed, 0 insertions(+), 0 deletions(-) + +commit 008ae16d75b2f6e908258d883d8b1c98a98bd648 +Author: Matthias Clasen +AuthorDate: Sun May 3 16:58:22 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sun May 3 17:00:37 2009 -0400 + + Add new functions + + docs/reference/gobject/gobject-sections.txt | 6 ++++++ + 1 file changed, 6 insertions(+) + +commit d1e6e194cc30744e47067378eb338f7d5a0f1e2b +Author: Petr Kovar +AuthorDate: Sun May 3 18:34:35 2009 +0200 +Commit: Petr Kovar +CommitDate: Sun May 3 18:34:35 2009 +0200 + + Updated Czech translation + + po/cs.po | 1013 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 503 insertions(+), 510 deletions(-) + +commit b3fc55cc4e5b578acc0a06e164c29fe43d060b10 +Author: Ivar Smolin +AuthorDate: Sun May 3 12:03:46 2009 +0300 +Commit: Priit Laes +CommitDate: Sun May 3 12:03:46 2009 +0300 + + Updating Estonian translation + + po/et.po | 550 + +++++---------------------------------------------------------- + 1 file changed, 37 insertions(+), 513 deletions(-) + +commit 3f06ddd8cdfa7f4ebf09ef24db7dad5270be36df +Author: Matthias Clasen +AuthorDate: Sat May 2 23:17:29 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 2 23:17:29 2009 -0400 + + Match up parameter names to help gtk-doc + + gio/gcancellable.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 2e4855ec4b611b9a17c466f4d26a694480f80ad6 +Author: Matthias Clasen +AuthorDate: Sat May 2 23:02:41 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 2 23:02:41 2009 -0400 + + Add bug references + + NEWS | 4 ++++ + 1 file changed, 4 insertions(+) + +commit 2e4b51aeb3bd5fa1fda52946e2d43fc8e7a28b4e +Author: Matthias Clasen +AuthorDate: Sat May 2 22:59:02 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 2 22:59:02 2009 -0400 + + Plug a memory leak in g_simple_async_result_set_op_res_gpointer + + Fixes bug 579272. + + gio/gsimpleasyncresult.c | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +commit 79ef3d32643519ae9c9710acf0c56b54ff540dc3 +Author: Matthias Clasen +AuthorDate: Sat May 2 22:44:52 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 2 22:44:52 2009 -0400 + + Correct g_utf8_to_utf16 docs + + As pointed out in bug 580932, len is counting bytes here. + + glib/gutf8.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +commit 2dfce324220bf7e1ea5ca465a74e58cf8146b808 +Author: Matthias Clasen +AuthorDate: Sat May 2 22:41:19 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 2 22:41:19 2009 -0400 + + Accept NULL as empty string list + + Fixes bug 580656. + + glib/gkeyfile.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit a4ac1b0552785dfb2d323eb41c6d3875b214989b +Author: Matthias Clasen +AuthorDate: Sat May 2 22:36:15 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 2 22:36:15 2009 -0400 + + Fix reference to g_strtoull + + As pointed out in bug 580546, that function does not exit. + + docs/reference/glib/tmpl/macros_misc.sgml | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +commit fab0506f5f983dcad8f4c44dbef6fbc1f8fd1b3b +Author: Matthias Clasen +AuthorDate: Sat May 2 22:30:19 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 2 22:30:19 2009 -0400 + + Update NEWS + + NEWS | 38 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 38 insertions(+) + +commit ff104337d9e95f6e933f3d77a5a24e462c4713cf +Author: Matthias Clasen +AuthorDate: Sat May 2 21:58:30 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sat May 2 21:58:30 2009 -0400 + + Bump version to 2.21.0 + + configure.in | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +commit dc02797c1e386d72ff24268cc23c19352e8cef6f +Author: Jorge Gonzalez +AuthorDate: Fri May 1 20:20:01 2009 +0200 +Commit: Jorge Gonzalez +CommitDate: Fri May 1 20:20:01 2009 +0200 + + Updated Spanish translation + + po/es.po | 1021 + +++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 509 insertions(+), 512 deletions(-) + +commit 92ac8d165eae438164cffce01fe92cdcf6488970 +Author: Dan Winship +AuthorDate: Fri May 1 10:08:52 2009 -0400 +Commit: Dan Winship +CommitDate: Fri May 1 10:37:45 2009 -0400 + + Misc warning fixes + + glib/pcre/pcre_ucp_search_funcs.c, glib/pcre/pcre_valid_utf8.c: add + back missing config.h includes, and this time add them to the copies + in glib/update-pcre/ too so they don't get lost again on the next PCRE + update. + + glib/garray.c, glib/gbase64.c: fix signed/unsigned pointer casts + + gio/xdgmime/xdgmimeglob.c: remove unused variable + + gio/tests/live-g-file.c: fix printf args on x86_64 + + tests/Makefile.am, tests/regex-test.c: remove redundant -DENABLE_REGEX + + gio/tests/live-g-file.c | 4 ++-- + gio/xdgmime/xdgmimeglob.c | 1 - + glib/garray.c | 2 +- + glib/gbase64.c | 2 +- + glib/pcre/pcre_ucp_searchfuncs.c | 4 ++++ + glib/pcre/pcre_valid_utf8.c | 1 + + glib/update-pcre/pcre_ucp_searchfuncs.c | 4 ++++ + glib/update-pcre/pcre_valid_utf8.c | 1 + + tests/Makefile.am | 9 +-------- + tests/regex-test.c | 2 ++ + 10 files changed, 17 insertions(+), 13 deletions(-) + +commit 36cb01f447b2401195e3c6b577f490e868363630 +Author: Dan Winship +AuthorDate: Fri May 1 10:08:23 2009 -0400 +Commit: Dan Winship +CommitDate: Fri May 1 10:37:45 2009 -0400 + + Add README and INSTALL to .gitignore since they are autogenerated + + .gitignore | 3 +++ + 1 file changed, 3 insertions(+) + +commit 83699774fa669abfbc5c5c3dc9265308246bd4f6 +Author: Michael Meeks +AuthorDate: Fri May 1 15:23:23 2009 +0100 +Commit: Michael Meeks +CommitDate: Fri May 1 15:23:23 2009 +0100 + + Patch originally committed only to the ChangeLog & tests ... + + Bug 572508 – gmarkup speedup ... + + * glib/gmarkup.c: Various optimizations: do less allocations + by + keeping a pool of GStrings, do in-place unescaping, avoid + redundant + utf-8 validation. + + glib/gmarkup.c | 1129 + +++++++++++++++++++++++--------------------------------- + 1 file changed, 455 insertions(+), 674 deletions(-) + +commit d8029ca9bc24bcff7f33c973ef13fae7e6fab904 +Author: Alexander Larsson +AuthorDate: Thu Apr 30 10:46:37 2009 +0200 +Commit: Alexander Larsson +CommitDate: Thu Apr 30 10:46:37 2009 +0200 + + Ensure g_inet_address_get_type() call is not optimized away + + Yet another place where the get_type call can be optimized away due + to the G_GNUC_CONST attribute. Use a volatile variable to ensure + its not. + + gio/gresolver.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +commit 97fe421518139dcb3477209d3d3c3b6744f54153 +Author: David King +AuthorDate: Wed Apr 29 15:58:35 2009 +0200 +Commit: Dan Winship +CommitDate: Wed Apr 29 14:23:17 2009 -0400 + + Fix ginetaddress.c compile on Linux + + The GType type definition belongs outside the G_OS_WIN32 typedef. + + gio/ginetaddress.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 402847c8878a6bf839facdf7a91f096769ebc609 +Author: David Zeuthen +AuthorDate: Wed Apr 29 11:15:20 2009 -0400 +Commit: David Zeuthen +CommitDate: Wed Apr 29 11:17:23 2009 -0400 + + Bug 580450 – Reference counting and boxed types for arrays + + Add reference counting and boxed types for GArray, GByteArray and + GPtrArray. + + Signed-off-by: Matthias Clasen + + docs/reference/glib/glib-sections.txt | 9 + + docs/reference/glib/tmpl/arrays.sgml | 41 ++++- + docs/reference/glib/tmpl/arrays_byte.sgml | 23 ++- + docs/reference/glib/tmpl/arrays_pointer.sgml | 64 ++++++- + glib/garray.c | 253 + +++++++++++++++++++++++++-- + glib/garray.h | 10 ++ + glib/glib.symbols | 9 + + glib/tests/array-test.c | 172 ++++++++++++++++++ + gobject/gboxed.c | 33 ++++ + gobject/gboxed.h | 27 +++ + gobject/gobject.symbols | 3 + + 11 files changed, 616 insertions(+), 28 deletions(-) + +commit d80e12104f139def9bea28a510bf1d7c103e20f9 +Author: Alexander Larsson +AuthorDate: Wed Apr 29 12:19:57 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed Apr 29 12:19:57 2009 +0200 + + Ensure we're actually initializing the winsock library + + It turns out that just calling g_inet_address_get_type() isn't + enough, since its marked G_GNUC_CONST, so the call is optimized + away. If we assign the return value to a volatile location we ensure + it is called. + + gio/ginetaddress.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 49dfb50afc9400779c0be02ea3c285780b42c928 +Author: David Zeuthen +AuthorDate: Sat Apr 25 22:41:07 2009 -0400 +Commit: David Zeuthen +CommitDate: Mon Apr 27 13:27:44 2009 -0400 + + Bug 580453 – Hash and equal functions for gint64 and gdouble + + docs/reference/glib/glib-sections.txt | 4 ++ + docs/reference/glib/tmpl/hash_tables.sgml | 38 +++++++++++++++ + glib/ghash.c | 13 +++--- + glib/ghash.h | 8 ++++ + glib/glib.symbols | 4 ++ + glib/gutils.c | 78 + +++++++++++++++++++++++++++++++ + 6 files changed, 139 insertions(+), 6 deletions(-) + +commit 5a368d469a2441d7d77d78fe104dc3560093ebac +Author: Jordi Mas i Hernandez +AuthorDate: Sun Apr 26 20:18:38 2009 +0200 +Commit: Gil Forcada +CommitDate: Sun Apr 26 20:18:38 2009 +0200 + + Minor fixes to Catalan translation + + po/ca.po | 922 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 457 insertions(+), 465 deletions(-) + +commit 61f130015bbbbc99ce0189cca1c95f7e2e735202 +Author: paul +AuthorDate: Sun Apr 26 13:16:34 2009 -0400 +Commit: Dan Winship +CommitDate: Sun Apr 26 13:22:10 2009 -0400 + + Fix socket-related configure tests on old platforms + + include in case doesn't. #580299 + + configure.in | 1 + + 1 file changed, 1 insertion(+) + +commit 7c9caecfebf7d15899fe361324c414fbfc7b1317 +Author: Dan Winship +AuthorDate: Sun Apr 26 12:18:42 2009 -0400 +Commit: Dan Winship +CommitDate: Sun Apr 26 13:21:53 2009 -0400 + + Fix the networking stuff on (current) OS X + + OS X's headers split up the current and old (BIND 4) nameserver stuff + slightly differently than Linux does, but explicitly including + arpa/nameser_compat.h does the right thing on both. Part of #580301 + + gio/ginetaddress.c | 3 +++ + gio/gnetworkingprivate.h | 6 ++++-- + 2 files changed, 7 insertions(+), 2 deletions(-) + +commit 9a15da50e4d10794c35e4b638b7ab521be671a6e +Author: Dan Winship +AuthorDate: Sun Apr 26 09:59:28 2009 -0400 +Commit: Dan Winship +CommitDate: Sun Apr 26 13:18:17 2009 -0400 + + Fix ginetaddress.c compile on Solaris + + In glibc, IN6_IS_ADDR_UNSPECIFIED() et al. cast their argument to a + uint32_t*, so it doesn't matter whether you pass them the in6_addr + itself (which is what you're supposed to do) or one of its union + members (which is what we were actually doing). Solaris's macro + accesses the in6_addr fields directly though, and so only works if you + pass the actual in6_addr. #580194. + + gio/ginetaddress.c | 20 ++++++++++---------- + 1 file changed, 10 insertions(+), 10 deletions(-) + +commit 491a036d8480f4d710ef601a27a57b559b0a46d7 +Author: Johan Bilien +AuthorDate: Wed Apr 22 19:09:34 2009 +0100 +Commit: Johan Bilien +CommitDate: Wed Apr 22 19:09:34 2009 +0100 + + Fix translation from GIO's file attr to xattr attributes + + Bug 579862 – requesting xattr::foo ends up calling getxattr(..., + user.:foo,...) + + The patch makes sure we escape xattr::, not xattr:, before adding + user. + and calling getxattr. + + gio/glocalfileinfo.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit a9c33dbd7aeeb715677d619cbddc0d621872cc43 +Author: Christian Persch +AuthorDate: Wed Apr 22 15:12:37 2009 +0200 +Commit: Christian Persch +CommitDate: Wed Apr 22 16:11:38 2009 +0200 + + Use P_ for translatable param spec strings + + Translatable param spec strings should be annotated with P_() + instead of + plain _(). Bug #579830. + + gio/gfileicon.c | 4 ++-- + gio/ginetaddress.c | 48 + ++++++++++++++++++++++++------------------------ + gio/gsocketaddress.c | 4 ++-- + gio/gthemedicon.c | 12 ++++++------ + gio/gunixinputstream.c | 8 ++++---- + gio/gunixoutputstream.c | 8 ++++---- + gio/gunixsocketaddress.c | 4 ++-- + 7 files changed, 44 insertions(+), 44 deletions(-) + +commit 9a3d18d2a652f9f1567e09bdb1055e6cb462f710 +Author: Dan Winship +AuthorDate: Mon Dec 29 13:38:28 2008 -0500 +Commit: Dan Winship +CommitDate: Wed Apr 22 08:36:38 2009 -0400 + + GResolver wrappers: GNetworkAddress, GNetworkService, + GSocketConnectable + + Higher-level wrappers around GResolver. GSocketConnectable provides an + interface for synchronously or asynchronously iterating multiple + socket addresses, with GNetworkAddress and GNetworkService providing + interfaces based on hostname and SRV record resolution. + Part of #548466. + + docs/reference/gio/gio-docs.xml | 3 + + docs/reference/gio/gio-sections.txt | 71 ++++ + docs/reference/gio/gio.types | 4 + + gio/Makefile.am | 8 + + gio/gio.h | 4 + + gio/gio.symbols | 35 ++ + gio/giotypes.h | 4 + + gio/gnetworkaddress.c | 462 +++++++++++++++++++++++++ + gio/gnetworkaddress.h | 65 ++++ + gio/gnetworkservice.c | 658 + ++++++++++++++++++++++++++++++++++++ + gio/gnetworkservice.h | 69 ++++ + gio/gresolver.c | 12 + + gio/gsocketaddress.c | 90 ++++- + gio/gsocketaddressenumerator.c | 191 +++++++++++ + gio/gsocketaddressenumerator.h | 89 +++++ + gio/gsocketconnectable.c | 148 ++++++++ + gio/gsocketconnectable.h | 68 ++++ + gio/gsrvtarget.c | 7 +- + gio/tests/.gitignore | 1 + + gio/tests/resolver.c | 141 +++++++- + 20 files changed, 2121 insertions(+), 9 deletions(-) + +commit c94d3f92885456e1dc9e2fb27b709017f29d04ce +Author: Dan Winship +AuthorDate: Mon Dec 29 12:53:47 2008 -0500 +Commit: Dan Winship +CommitDate: Wed Apr 22 08:36:32 2009 -0400 + + Add GResolver, a glib-ish interface to DNS + + GResolver provides asynchronous (and synchronous-but-cancellable) APIs + for resolving hostnames, reverse-resolving IP addresses back to + hostnames, and resolving SRV records. Part of #548466. + + configure.in | 25 + + docs/reference/gio/Makefile.am | 6 +- + docs/reference/gio/gio-docs.xml | 2 + + docs/reference/gio/gio-sections.txt | 52 ++ + docs/reference/gio/gio.types | 1 + + gio/Makefile.am | 18 +- + gio/ginetaddress.c | 7 +- + gio/gio.h | 2 + + gio/gio.symbols | 57 ++ + gio/gioenums.h | 14 + + gio/giotypes.h | 4 +- + gio/gnetworkingprivate.h | 32 + + gio/gresolver.c | 855 ++++++++++++++++++++ + gio/gresolver.h | 159 ++++ + gio/gsrvtarget.c | 334 ++++++++ + gio/gsrvtarget.h | 52 ++ + gio/gthreadedresolver.c | 617 +++++++++++++++ + gio/gthreadedresolver.h | 50 ++ + gio/gunixresolver.c | 433 ++++++++++ + gio/gunixresolver.h | 53 ++ + gio/gwin32resolver.c | 481 +++++++++++ + gio/gwin32resolver.h | 49 ++ + gio/libasyncns/Makefile.am | 15 + + gio/libasyncns/README | 7 + + gio/libasyncns/asyncns.c | 1498 + +++++++++++++++++++++++++++++++++++ + gio/libasyncns/asyncns.h | 163 ++++ + gio/libasyncns/g-asyncns.h | 28 + + gio/libasyncns/update.sh | 20 + + gio/pltcheck.sh | 2 +- + gio/tests/.gitignore | 1 + + gio/tests/Makefile.am | 8 +- + gio/tests/resolver.c | 377 +++++++++ + 32 files changed, 5412 insertions(+), 10 deletions(-) + +commit 68fc0556275edf6e63a3242841f2981a42ee11cb +Author: Dan Winship +AuthorDate: Fri Dec 12 13:13:55 2008 -0500 +Commit: Dan Winship +CommitDate: Wed Apr 22 08:36:10 2009 -0400 + + Add network address and socket types + + Types and methods for dealing with IPv4 and IPv6 addresses (and UNIX + domain socket addresses under UNIX). This does not include code for + actual socket I/O. + + Originally from "gnio". Much of the code was written by Christian + Kellner, Samuel Cormier-Iijima, and Ryan Lortie. + + Part of #548466. + + configure.in | 28 ++ + docs/reference/gio/gio-docs.xml | 7 + + docs/reference/gio/gio-sections.txt | 91 +++++ + docs/reference/gio/gio.types | 4 + + gio/Makefile.am | 11 +- + gio/ginetaddress.c | 747 + ++++++++++++++++++++++++++++++++++++ + gio/ginetaddress.h | 101 +++++ + gio/ginetsocketaddress.c | 306 +++++++++++++++ + gio/ginetsocketaddress.h | 69 ++++ + gio/gio.h | 3 + + gio/gio.symbols | 51 +++ + gio/gioenums.h | 20 + + gio/giotypes.h | 5 + + gio/gnetworkingprivate.h | 53 +++ + gio/gsocketaddress.c | 233 +++++++++++ + gio/gsocketaddress.h | 77 ++++ + gio/gunixsocketaddress.c | 206 ++++++++++ + gio/gunixsocketaddress.h | 61 +++ + glibconfig.h.win32.in | 3 + + 19 files changed, 2075 insertions(+), 1 deletion(-) + +commit 6a3b4fa05ac996566e7b8037edf80d0f06fa2a90 +Author: Dan Winship +AuthorDate: Mon Dec 29 09:00:17 2008 -0500 +Commit: Dan Winship +CommitDate: Wed Apr 22 08:36:02 2009 -0400 + + Add hostname-related utilities in glib/ghostutils.h + + Functions for converting between UTF-8 IDNs (Internationalized Domain + Names) and their ASCII-Compatible Encodings, plus a function to + recognize + IP addresses. Part of #548466. + + docs/reference/glib/glib-docs.sgml | 2 + + docs/reference/glib/glib-sections.txt | 13 + + docs/reference/glib/tmpl/ghostutils.sgml | 64 +++ + glib/Makefile.am | 2 + + glib/ghostutils.c | 758 + +++++++++++++++++++++++++++++++ + glib/ghostutils.h | 40 ++ + glib/glib.h | 1 + + glib/glib.symbols | 10 + + glib/tests/.gitignore | 1 + + glib/tests/Makefile.am | 3 + + glib/tests/hostutils.c | 267 +++++++++++ + 11 files changed, 1161 insertions(+) + +commit dda20bccbfc2a560c13532612382712c17717085 +Author: Stefan Kost +AuthorDate: Tue Apr 21 23:21:28 2009 +0300 +Commit: Stefan Kost +CommitDate: Tue Apr 21 23:21:28 2009 +0300 + + goption: format section docs according to gtk-doc rules and fixes + broken xml + + glib/goption.c | 25 +++++++++---------------- + 1 file changed, 9 insertions(+), 16 deletions(-) + +commit 57bd24dc4907e6959f953be0759b946c16c78386 +Author: Stefan Kost +AuthorDate: Tue Apr 14 11:32:59 2009 +0300 +Commit: Stefan Kost +CommitDate: Tue Apr 21 17:50:00 2009 +0300 + + goption: document that some option args need to be freed by the callee + + Option arguments where the result is stored in a string or string + array need to + be freed by the owner of the option group. Fixes #578363. + + glib/goption.c | 3 +++ + glib/goption.h | 5 +++++ + 2 files changed, 8 insertions(+) + +commit 2026c232b3437ff0f1222b6b045379ca273393e8 +Author: Stefan Kost +AuthorDate: Tue Apr 14 11:23:25 2009 +0300 +Commit: Stefan Kost +CommitDate: Tue Apr 21 16:35:26 2009 +0300 + + goption: move docs from tmpl folder to inline comments + + docs/reference/glib/tmpl/.gitignore | 1 + + docs/reference/glib/tmpl/option.sgml | 603 + ----------------------------------- + glib/goption.c | 113 +++++++ + glib/goption.h | 204 +++++++++++- + glib/gtypes.h | 13 + + 5 files changed, 330 insertions(+), 604 deletions(-) + +commit 0f48f804b665943a2fd848ab6efbe913003daa82 +Author: Alexander Larsson +AuthorDate: Mon Apr 20 13:14:32 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Apr 20 13:17:10 2009 +0200 + + Use g_cancellable_connect/disconnect + + Use the new cancellable helper functions to avoid races. (#572844) + + gio/gasynchelper.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +commit 0001014c378636e5848f4b3d8f38fc7a84c33b22 +Author: Alexander Larsson +AuthorDate: Mon Apr 20 13:12:08 2009 +0200 +Commit: Alexander Larsson +CommitDate: Mon Apr 20 13:17:03 2009 +0200 + + Add helpers for connecting/disconnecting to cancelled signal + + There are race conditions when connecting and disconnecting from the + "cancelled" signal on GCancellable which you need to do when + implementing cancellable operations. This adds helper functions that + avoid these races and mentions these races in the docs. (#572844) + + docs/reference/gio/gio-sections.txt | 2 + + gio/gcancellable.c | 214 + +++++++++++++++++++++++++++++------- + gio/gcancellable.h | 6 + + gio/gio.symbols | 2 + + 4 files changed, 183 insertions(+), 41 deletions(-) + +commit c17d4dd117db554e501a18a41de53734f7f87003 +Author: zabeeh khan +AuthorDate: Fri Apr 17 11:27:38 2009 +0530 +Commit: Runa Bhattacharjee +CommitDate: Fri Apr 17 11:27:38 2009 +0530 + + Pashto Translation committed as per the request made by Zabeeh Khan + on the gnome-i18n list + + po/ps.po | 870 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 437 insertions(+), 433 deletions(-) + +commit b85834c22369579d1bea86b392594d0b912a5858 +Author: Matthias Clasen +AuthorDate: Sat Apr 11 18:10:24 2009 -0400 +Commit: Matthias Clasen +CommitDate: Sat Apr 11 18:10:24 2009 -0400 + + Bump version + + configure.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 2c1dc529e8d9b1ab2d8ccb8abb1efed836584616 +Author: Matthias Clasen +AuthorDate: Thu Apr 9 21:34:49 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 9 21:34:49 2009 -0400 + + Add a note about handling non-hal backends + + gio/gvolume.c | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +commit 6e11246cc828217fd04a23f16b67db11333523f9 +Author: Matthias Clasen +AuthorDate: Thu Apr 9 18:47:28 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 9 18:47:28 2009 -0400 + + Release GLib 2.20.1 + + po/am.po | 154 ++++---- + po/ar.po | 839 ++++++++++++++++++++------------------- + po/as.po | 871 ++++++++++++++++++++-------------------- + po/az.po | 154 ++++---- + po/be.po | 156 ++++---- + po/be@latin.po | 156 ++++---- + po/bg.po | 836 ++++++++++++++++++++------------------- + po/bn.po | 154 ++++---- + po/bn_IN.po | 154 ++++---- + po/bs.po | 154 ++++---- + po/ca.po | 836 ++++++++++++++++++++------------------- + po/cs.po | 154 ++++---- + po/cy.po | 154 ++++---- + po/da.po | 837 ++++++++++++++++++++------------------- + po/de.po | 836 ++++++++++++++++++++------------------- + po/dz.po | 154 ++++---- + po/el.po | 863 ++++++++++++++++++++-------------------- + po/en_CA.po | 154 ++++---- + po/en_GB.po | 836 ++++++++++++++++++++------------------- + po/eo.po | 154 ++++---- + po/es.po | 841 ++++++++++++++++++++------------------- + po/et.po | 154 ++++---- + po/eu.po | 894 ++++++++++++++++++++--------------------- + po/fa.po | 154 ++++---- + po/fi.po | 154 ++++---- + po/fr.po | 836 ++++++++++++++++++++------------------- + po/ga.po | 154 ++++---- + po/gl.po | 836 ++++++++++++++++++++------------------- + po/gu.po | 154 ++++---- + po/he.po | 154 ++++---- + po/hi.po | 154 ++++---- + po/hr.po | 154 ++++---- + po/hu.po | 905 +++++++++++++++++++++--------------------- + po/hy.po | 154 ++++---- + po/id.po | 154 ++++---- + po/is.po | 154 ++++---- + po/it.po | 839 ++++++++++++++++++++------------------- + po/ja.po | 836 ++++++++++++++++++++------------------- + po/ka.po | 154 ++++---- + po/kn.po | 880 +++++++++++++++++++++-------------------- + po/ko.po | 154 ++++---- + po/ku.po | 154 ++++---- + po/lt.po | 836 ++++++++++++++++++++------------------- + po/lv.po | 154 ++++---- + po/mai.po | 154 ++++---- + po/mg.po | 154 ++++---- + po/mk.po | 154 ++++---- + po/ml.po | 886 ++++++++++++++++++++--------------------- + po/mn.po | 154 ++++---- + po/mr.po | 154 ++++---- + po/ms.po | 154 ++++---- + po/nb.po | 836 ++++++++++++++++++++------------------- + po/ne.po | 154 ++++---- + po/nl.po | 154 ++++---- + po/nn.po | 154 ++++---- + po/oc.po | 154 ++++---- + po/or.po | 871 ++++++++++++++++++++-------------------- + po/pa.po | 868 ++++++++++++++++++++-------------------- + po/pl.po | 836 ++++++++++++++++++++------------------- + po/ps.po | 154 ++++---- + po/pt.po | 154 ++++---- + po/pt_BR.po | 836 ++++++++++++++++++++------------------- + po/ro.po | 154 ++++---- + po/ru.po | 836 ++++++++++++++++++++------------------- + po/rw.po | 154 ++++---- + po/si.po | 154 ++++---- + po/sk.po | 154 ++++---- + po/sl.po | 1165 + ++++++++++++++++++++++++++---------------------------- + po/sq.po | 156 ++++---- + po/sr.po | 154 ++++---- + po/sr@ije.po | 154 ++++---- + po/sr@latin.po | 154 ++++---- + po/sv.po | 1203 + ++++++++++++++++++++++++++++---------------------------- + po/ta.po | 888 ++++++++++++++++++++--------------------- + po/te.po | 154 ++++---- + po/th.po | 154 ++++---- + po/tl.po | 154 ++++---- + po/tr.po | 154 ++++---- + po/tt.po | 154 ++++---- + po/uk.po | 154 ++++---- + po/vi.po | 154 ++++---- + po/wa.po | 154 ++++---- + po/xh.po | 154 ++++---- + po/yi.po | 154 ++++---- + po/zh_CN.po | 839 ++++++++++++++++++++------------------- + po/zh_HK.po | 154 ++++---- + po/zh_TW.po | 154 ++++---- + 87 files changed, 17103 insertions(+), 16510 deletions(-) + +commit 009689e09b0cd9cc0a322d1361940183330bada6 +Author: Matthias Clasen +AuthorDate: Thu Apr 9 17:43:59 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 9 17:43:59 2009 -0400 + + Update for 2.20.1 + + NEWS | 44 ++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 44 insertions(+) + +commit e68a35689fbcbab965b6631882381309cb0a20d8 +Author: Matthias Clasen +AuthorDate: Thu Apr 9 14:56:49 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 9 14:56:49 2009 -0400 + + Fix G_DEFINE_TYPE_EXTENDED docs + + Make the docs for G_DEFINE_TYPE_EXTENDED match the actual + definition of the macro. (#577985) + + gobject/gtype.h | 71 + +++++++++++++++++++++++++++------------------------------ + 1 file changed, 34 insertions(+), 37 deletions(-) + +commit 856632c496d15f3f273d567b521a2b06afc32721 +Author: Gian Mario Tagliaretti +AuthorDate: Thu Apr 9 14:35:36 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 9 14:35:57 2009 -0400 + + Fix a typo in GFile docs + + Fixed function name in GFile docs from g_set_display_name to + g_file_set_display_name so that gtk-doc can link correctly. (#578002) + + gio/gfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit 950de29d0e9720ce0979a84530130e27a3a59f74 +Author: Kenneth Nielsen +AuthorDate: Thu Apr 9 13:49:00 2009 +0200 +Commit: Kenneth Nielsen +CommitDate: Thu Apr 9 13:49:00 2009 +0200 + + Updated Danish translation\n\nUpdated Danish translation by Kenneth + Nielsen. + + po/da.po | 156 + ++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 84 insertions(+), 72 deletions(-) + +commit efc2cdbfc981754db361f49c30c8ee24ac0c769e +Author: Peter Kjellerstedt +AuthorDate: Wed Apr 8 10:26:11 2009 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 8 10:26:11 2009 -0400 + + Fix parsing of timezones + + Make g_time_val_from_iso8601 handle timezones with minutes correctly; + also accept comma as a fraction separator. (#578369) + + glib/gtimer.c | 6 +++--- + tests/testglib.c | 18 +++++++++++++++++- + 2 files changed, 20 insertions(+), 4 deletions(-) + +commit d0cf7b38780b0832fc904f75eb387aa61eb2f76e +Author: Alexander Larsson +AuthorDate: Wed Apr 8 09:12:02 2009 +0200 +Commit: Alexander Larsson +CommitDate: Wed Apr 8 09:12:02 2009 +0200 + + Only mark regular files as backup files + + Apps don't generally create backup directories, etc. So, if the file + ends with ~ but is not a regular file shouldn't be considered a backup + file. (#573673) + + gio/glocalfileinfo.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +commit 85a795b9bae44b973de1443f98728b21b78c68ae +Author: Funda Wang +AuthorDate: Sun Apr 5 11:05:47 2009 +0800 +Commit: Funda Wang +CommitDate: Sun Apr 5 11:05:47 2009 +0800 + + Updated Simplified Chinese translation from Ray Wang + + + po/zh_CN.po | 87 + +++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 50 insertions(+), 37 deletions(-) + +commit 7fd870830806def730341a328389f8b5df49fab4 +Author: Thanos Lefteris +AuthorDate: Fri Apr 3 20:12:27 2009 +0100 +Commit: Simos Xenitellis +CommitDate: Fri Apr 3 20:12:27 2009 +0100 + + Updated Greek translation + + Signed-off-by: Simos Xenitellis + + po/el.po | 238 + +++++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 125 insertions(+), 113 deletions(-) + +commit e6e82c51a64ca263877f730cc7531454d5430b77 +Author: Matthias Clasen +AuthorDate: Fri Apr 3 00:35:43 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 3 00:35:43 2009 -0400 + + Move hex_digits to rodata + + Turn a string into a constant array. + + gio/gfileattribute.c | 260 + +++++++++++++++++++++++++-------------------------- + 1 file changed, 126 insertions(+), 134 deletions(-) + +commit 25ff8ee7486c7bdf1612d3554fc1d7d91daedfa6 +Author: Matthias Clasen +AuthorDate: Fri Apr 3 00:23:54 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 3 00:23:54 2009 -0400 + + Don't lie about ext4 filesystems + + When returning a filesystem type id, say "ext3/ext4" instead of + "ext3", + since both use the same superblock magic, so we can't discriminate + them without more work. + + gio/glocalfile.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +commit e8a42bb81c46204a86259e44aa9698658487e64a +Author: Paolo Borelli +AuthorDate: Fri Apr 3 00:04:39 2009 -0400 +Commit: Matthias Clasen +CommitDate: Fri Apr 3 00:04:39 2009 -0400 + + Regex leak on error path + + Don't leak the GRegex struct when g_regex_new() fails. + + glib/gregex.c | 2 ++ + 1 file changed, 2 insertions(+) + +commit 82a5f787d68fd7d6ae973634694cebd43f126552 +Author: Matthias Clasen +AuthorDate: Thu Apr 2 23:57:59 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 2 23:57:59 2009 -0400 + + Update requirements + + Mention that the mimetype-functionality of GIO reqires + update-mime-database + and update-desktop-database at runtime. (#577128) + + INSTALL.in | 32 ++++++++++++++++----------- + README.in | 74 + +++++++++++++++++++++++++++++++------------------------------- + 2 files changed, 56 insertions(+), 50 deletions(-) + +commit 20774c566393af28e5123322abb8e35840ff0e5a +Author: Matthias Clasen +AuthorDate: Thu Apr 2 23:42:29 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 2 23:42:29 2009 -0400 + + Add a rule to generate ChangeLog + + We use the same rule pango uses to create a ChangeLog file with + the help of git-log. The format is somewhat different from traditional + ChangeLog, but it contains the relevant information. + + Makefile.am | 22 ++++++++++++++++++++-- + 1 file changed, 20 insertions(+), 2 deletions(-) + +commit b7f9a1ac8337c546f9db9b7ee9ff437b256c75d8 +Author: Matthias Clasen +AuthorDate: Thu Apr 2 23:14:54 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 2 23:14:54 2009 -0400 + + Rename ChangeLog to ChangeLog.pre-2-20 + + Rename ChangeLog to prevent old habits from luring me into adding + entries there. Also, this makes room for autogenerating a ChangeLog + at make dist. + + ChangeLog | 914 + ----------------------------------------------------- + ChangeLog.pre-2-20 | 914 + +++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 914 insertions(+), 914 deletions(-) + +commit b160405aa0a66f3eb771af43b6d0000d076d045b +Author: Matthias Clasen +AuthorDate: Thu Apr 2 23:13:35 2009 -0400 +Commit: Matthias Clasen +CommitDate: Thu Apr 2 23:13:35 2009 -0400 + + remove generated files + + README and INSTALL are generated files, no need to keep them + under source control. + + INSTALL | 116 ------------------------------------- + README | 199 + ---------------------------------------------------------------- + 2 files changed, 315 deletions(-) + +commit 1ce74b0dd34222b201369e5aff53b27182db7b66 +Author: Alexander Larsson +AuthorDate: Thu Apr 2 19:01:56 2009 +0200 +Commit: Alexander Larsson +CommitDate: Thu Apr 2 19:01:56 2009 +0200 + + On trash, if rename fails with EXDEV, return G_IO_ERROR_NOT_SUPPORTED + + Sometimes it seems like the trash dir and the file are on the same + filesystem but the rename fails with EXDEV anyway (can happen + e.g. with bind mounts or multiple mounts of the same device). In this + case we want to return the right error so that apps can fallback to + regular delete. + + gio/glocalfile.c | 19 ++++++++++++++----- + 1 file changed, 14 insertions(+), 5 deletions(-) + +commit 20df6b6e888a1aed596c8c60ed7427708a56a453 +Author: Tobias Mueller +AuthorDate: Wed Apr 1 21:51:00 2009 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 1 21:51:00 2009 -0400 + + Mark glib_gettext as string translation function + + Make glib_gettext with G_GNUC_FORMAT to avoid warnings with + -Wformat -Wformat-nonliteral. + Signed-off-by: Matthias Clasen + + glib/glib.symbols | 2 +- + glib/glibintl.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +commit 86aa49594feac9797ab87b83e198147aff4171fa +Author: Hagen Schink +AuthorDate: Wed Apr 1 21:30:51 2009 -0400 +Commit: Matthias Clasen +CommitDate: Wed Apr 1 21:30:51 2009 -0400 + + fix a typo in g_io_channel_flush docs + + Refer to the correct return values. + + Signed-off-by: Matthias Clasen + + glib/giochannel.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +commit 785bed2e18c18842f07ada42af2ec80cf18aca70 +Author: Matthias Clasen +AuthorDate: Tue Mar 31 19:39:16 2009 -0400 +Commit: Matthias Clasen +CommitDate: Tue Mar 31 19:39:16 2009 -0400 + + Update README files to refer to git + + Update various README files to refer to git instead of svn. + Add a README.commits that is pretty much a copy of the same file + in GTK+. Also discontinue ChangeLog files. + + ChangeLog | 6 ++++ + HACKING | 8 ++--- + Makefile.am | 1 + + README | 76 + ++++++++++++++++++++++++------------------------ + README.commits | 72 + +++++++++++++++++++++++++++++++++++++++++++++ + docs/reference/ChangeLog | 6 ++++ + gio/ChangeLog | 6 ++++ + gmodule/ChangeLog | 6 ++++ + gobject/ChangeLog | 6 ++++ + gthread/ChangeLog | 6 ++++ + po/ChangeLog | 6 ++++ + 11 files changed, 157 insertions(+), 42 deletions(-) + +commit b5ef6da3c31ad1067b88f7edd53c5d48fe7f73c1 +Author: Manoj Kumar Giri +AuthorDate: Mon Mar 30 08:53:32 2009 +0000 +Commit: Manoj Kumar Giri +CommitDate: Mon Mar 30 08:53:32 2009 +0000 + + Added entries for Oriya language Translation updation. + + svn path=/trunk/; revision=8023 + + po/ChangeLog | 4 ++++ + 1 file changed, 4 insertions(+) + +commit b6a7cd609a1d0012ff07d62e04115830c68972e0 +Author: Manoj Kumar Giri +AuthorDate: Mon Mar 30 08:52:25 2009 +0000 +Commit: Manoj Kumar Giri +CommitDate: Mon Mar 30 08:52:25 2009 +0000 + + Updated Oriya Translation. + + svn path=/trunk/; revision=8022 + + po/or.po | 876 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 443 insertions(+), 433 deletions(-) + +commit a6ebda3d690098e28319dc391fb82a281f9113e8 +Author: Matthias Clasen +AuthorDate: Sun Mar 29 19:08:57 2009 +0000 +Commit: Matthias Clasen +CommitDate: Sun Mar 29 19:08:57 2009 +0000 + + Copy a va_list when using it multiple times. Reported by Wim Lewis. + + * glib/gmessages.c (g_logv): Copy a va_list when using it + multiple times. Reported by Wim Lewis. + + + svn path=/trunk/; revision=8021 + + ChangeLog | 8 ++++++++ + glib/gmessages.c | 15 ++++++++++++--- + 2 files changed, 20 insertions(+), 3 deletions(-) + +commit dabbea65c61c402ed63fba0c36a419e4d4abdf46 +Author: Carlos Garnacho +AuthorDate: Thu Mar 26 13:59:02 2009 +0000 +Commit: Carlos Garnacho +CommitDate: Thu Mar 26 13:59:02 2009 +0000 + + Bug 575270 – GVolumeMonitor::mount-pre-unmount not being emitted + + 2009-03-26 Carlos Garnacho + + Bug 575270 – GVolumeMonitor::mount-pre-unmount not being + emitted + + * gunixmount.c (eject_unmount_cb) (eject_unmount_do_cb) + (eject_unmount_do): Emit ::mount-pre-unmount and wait + 500msec before + actually trying to unmount. + + + svn path=/trunk/; revision=8020 + + gio/ChangeLog | 8 ++++++++ + gio/gunixmount.c | 52 + ++++++++++++++++++++++++++++++++++------------------ + 2 files changed, 42 insertions(+), 18 deletions(-) + +commit 3476bfe846b663049b393e43d272a06883b3fe7d +Author: Gintautas Miliauskas +AuthorDate: Thu Mar 26 13:52:46 2009 +0000 +Commit: Gintautas Miliauskas +CommitDate: Thu Mar 26 13:52:46 2009 +0000 + + Updated Lithuanian translation. + + 2009-03-26 Gintautas Miliauskas + + * lt.po: Updated Lithuanian translation. + + + + svn path=/trunk/; revision=8019 + + po/ChangeLog | 4 + + po/lt.po | 842 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 433 insertions(+), 413 deletions(-) + +commit 618617acfcc8bbbb0b563e5744218be213660cbb +Author: Shankar Prasad +AuthorDate: Thu Mar 26 05:35:36 2009 +0000 +Commit: Shankar Prasad +CommitDate: Thu Mar 26 05:35:36 2009 +0000 + + updated kn.po + + svn path=/trunk/; revision=8018 + + po/kn.po | 90 + ++++++++++++++++++++++++++++++++++++++-------------------------- + 1 file changed, 53 insertions(+), 37 deletions(-) + +commit 32f7e122b1c80171db3ce84ff8947a24d50e0e5a +Author: Shankar Prasad +AuthorDate: Thu Mar 26 05:31:33 2009 +0000 +Commit: Shankar Prasad +CommitDate: Thu Mar 26 05:31:33 2009 +0000 + + updated kn.po + + svn path=/trunk/; revision=8017 + + po/ChangeLog | 4 ++++ + 1 file changed, 4 insertions(+) + +commit d487ef7c2f13c66d2784a2d5371021c3c3043e12 +Author: Nickolay V. Shmyrev +AuthorDate: Fri Mar 20 22:29:22 2009 +0000 +Commit: Nickolay V. Shmyrev +CommitDate: Fri Mar 20 22:29:22 2009 +0000 + + Updated Russian translation. + + 2009-03-21 Nickolay V. Shmyrev + + * ru.po: Updated Russian translation. + + + svn path=/trunk/; revision=8016 + + po/ChangeLog | 4 ++++ + po/ru.po | 77 + ++++++++++++++++++++++++++++++++++-------------------------- + 2 files changed, 48 insertions(+), 33 deletions(-) + +commit edfe4405e05d832ff2449a54bf4938d964d3ae44 +Author: Kostas Papadimas +AuthorDate: Wed Mar 18 15:49:52 2009 +0000 +Commit: Kostas Papadimas +CommitDate: Wed Mar 18 15:49:52 2009 +0000 + + Updated Greek Translation by Fotis Tsamis. + + svn path=/trunk/; revision=8015 + + po/ChangeLog | 4 ++ + po/el.po | 145 + +++++++++++++++++++++++++++++------------------------------ + 2 files changed, 75 insertions(+), 74 deletions(-) + +commit fdcaf9381e3f084d9ddf1ffd0c35873602950151 +Author: Djihed Afifi +AuthorDate: Wed Mar 18 09:20:03 2009 +0000 +Commit: Djihed Afifi +CommitDate: Wed Mar 18 09:20:03 2009 +0000 + + Updated Arabic translation + + svn path=/trunk/; revision=8014 + + po/ChangeLog | 4 + + po/ar.po | 843 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 434 insertions(+), 413 deletions(-) + +commit 11554d40ca7b0d8691a0a0d93b34bffef29276f0 +Author: Amitakhya Phukan +AuthorDate: Wed Mar 18 06:31:05 2009 +0000 +Commit: Amitakhya Phukan +CommitDate: Wed Mar 18 06:31:05 2009 +0000 + + Updated assamese translations + + svn path=/trunk/; revision=8013 + + po/ChangeLog | 4 + + po/as.po | 873 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 445 insertions(+), 432 deletions(-) + +commit 07b2a7a5ad6818a692e41e9003f2a849f7220b66 +Author: Gabor Kelemen +AuthorDate: Wed Mar 18 00:05:58 2009 +0000 +Commit: Gabor Keleman +CommitDate: Wed Mar 18 00:05:58 2009 +0000 + + Translation updated. + + 2009-03-18 Gabor Kelemen + + * hu.po: Translation updated. + + + svn path=/trunk/; revision=8012 + + po/ChangeLog | 4 + + po/hu.po | 911 + +++++++++++++++++++++++++++++------------------------------ + 2 files changed, 457 insertions(+), 458 deletions(-) + +commit 8df23d2283b56b181c4ebac9a74d9ea980efb1ba +Author: Ryan Lortie +AuthorDate: Tue Mar 17 23:03:33 2009 +0000 +Commit: Ryan Lortie +CommitDate: Tue Mar 17 23:03:33 2009 +0000 + + trivial spelling/whitespace fixes + + svn path=/trunk/; revision=8011 + + ChangeLog | 18 +++++++++--------- + glib/gmain.c | 2 +- + 2 files changed, 10 insertions(+), 10 deletions(-) + +commit 1d1fba442fd7e605288fe92809c59d58b0b8f186 +Author: Colin Walters +AuthorDate: Tue Mar 17 21:59:18 2009 +0000 +Commit: Colin Walters +CommitDate: Tue Mar 17 21:59:18 2009 +0000 + + Bug 575708 - runaway inotify madness ... + + 2009-03-17 Colin Walters + + Bug 575708 - runaway inotify madness ... + + * gfilemonitor.c: Queue up events in a local list and + fire one idle, instead of queuing lots of individual + idles which has bad performance behavior. + + + svn path=/trunk/; revision=8010 + + gio/ChangeLog | 8 ++++++ + gio/gfilemonitor.c | 78 + ++++++++++++++++++++++++++++++++++++++++-------------- + 2 files changed, 66 insertions(+), 20 deletions(-) + +commit 044733e2a0d5b3192c38b35611b9de4364c6c810 +Author: Tomasz Dominikowski +AuthorDate: Tue Mar 17 17:02:00 2009 +0000 +Commit: Tomasz Dominikowski +CommitDate: Tue Mar 17 17:02:00 2009 +0000 + + Updated Polish translation + + 2009-03-17 Tomasz Dominikowski + + * pl.po: Updated Polish translation + + svn path=/trunk/; revision=8009 + + po/ChangeLog | 4 + + po/pl.po | 844 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 434 insertions(+), 414 deletions(-) + +commit bbb1d85d7233bff2dae91a5cf06600a28e91cec0 +Author: Inaki Larranaga Murgoitio +AuthorDate: Tue Mar 17 16:49:22 2009 +0000 +Commit: Iñaki Larrañaga Murgoitio +CommitDate: Tue Mar 17 16:49:22 2009 +0000 + + Updated Basque translation. + + 2009-03-17 Inaki Larranaga Murgoitio + + * eu.po: Updated Basque translation. + + + svn path=/trunk/; revision=8008 + + po/ChangeLog | 4 + + po/eu.po | 894 + +++++++++++++++++++++++++++++------------------------------ + 2 files changed, 451 insertions(+), 447 deletions(-) + +commit 2ff422d461faec17797f498afd82d23bd3ea8f2e +Author: Ani Peter +AuthorDate: Tue Mar 17 15:41:14 2009 +0000 +Commit: Ani Peter +CommitDate: Tue Mar 17 15:41:14 2009 +0000 + + Updated Malayalam Translation + + svn path=/trunk/; revision=8007 + + po/ChangeLog | 4 ++++ + 1 file changed, 4 insertions(+) + +commit ad9afec76fa198fd2edc56d5fcb834fd2c9577bc +Author: Ani Peter +AuthorDate: Tue Mar 17 15:41:04 2009 +0000 +Commit: Ani Peter +CommitDate: Tue Mar 17 15:41:04 2009 +0000 + + Updated Malayalam Translation + + svn path=/trunk/; revision=8006 + + po/ml.po | 892 + ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 448 insertions(+), 444 deletions(-) + +commit 4ed58e576ea15bb84b4b1b461f8f8deea3a09d50 +Author: Ignacio Casal Quinteiro +AuthorDate: Tue Mar 17 14:12:26 2009 +0000 +Commit: Ignacio Casal Quinteiro +CommitDate: Tue Mar 17 14:12:26 2009 +0000 + + Updated Galician translation + + svn path=/trunk/; revision=8005 + + po/ChangeLog | 4 +++ + po/gl.po | 84 + ++++++++++++++++++++++++++++++++++-------------------------- + 2 files changed, 51 insertions(+), 37 deletions(-) + +commit ebf52321606815d09a8a25f6778eae205531a1cb +Author: Gil Forcada Codinachs +AuthorDate: Tue Mar 17 13:52:09 2009 +0000 +Commit: Gil Forcada Codinachs +CommitDate: Tue Mar 17 13:52:09 2009 +0000 + + Updated Catalan translation + + svn path=/trunk/; revision=8004 + + po/ChangeLog | 4 + + po/ca.po | 842 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 433 insertions(+), 413 deletions(-) + +commit ae38feb249df9a5dc4b9ecc85c55d13f256c7477 +Author: Takeshi AIHANA +AuthorDate: Tue Mar 17 13:20:20 2009 +0000 +Commit: Takeshi Aihana +CommitDate: Tue Mar 17 13:20:20 2009 +0000 + + Update Japanese translation. + + 2009-03-17 Takeshi AIHANA + + * ja.po: Update Japanese translation. + + svn path=/trunk/; revision=8003 + + po/ChangeLog | 4 + + po/ja.po | 842 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 433 insertions(+), 413 deletions(-) + +commit fab272e104ac536fea40501594eef457955c50b8 +Author: Hendrik Richter +AuthorDate: Tue Mar 17 12:08:42 2009 +0000 +Commit: Hendrik Richter +CommitDate: Tue Mar 17 12:08:42 2009 +0000 + + Updated German translation. + + 2009-03-17 Hendrik Richter + + * de.po: Updated German translation. + + svn path=/trunk/; revision=8002 + + po/ChangeLog | 4 +++ + po/de.po | 80 + ++++++++++++++++++++++++++++++++++-------------------------- + 2 files changed, 50 insertions(+), 34 deletions(-) + +commit b54278668e432f67cbc3ed8e167fce14cd44d3e8 +Author: Alexander Shopov +AuthorDate: Tue Mar 17 12:06:18 2009 +0000 +Commit: Alexander Alexandrov Shopov +CommitDate: Tue Mar 17 12:06:18 2009 +0000 + + Updated Bulgarian translation by Alexander Shopov + + 2009-03-17 Alexander Shopov + + * bg.po: Updated Bulgarian translation by + Alexander Shopov + + svn path=/trunk/; revision=8001 + + po/ChangeLog | 5 ++++ + po/bg.po | 79 + ++++++++++++++++++++++++++++++++++-------------------------- + 2 files changed, 50 insertions(+), 34 deletions(-) + +commit a3fe42808174f1593559cfdcd581a4791d139f72 +Author: Alexander Larsson +AuthorDate: Tue Mar 17 11:21:37 2009 +0000 +Commit: Alexander Larsson +CommitDate: Tue Mar 17 11:21:37 2009 +0000 + + fix attributes argument of query_info methods to be "const char *". + + 2009-03-17 Alexander Larsson + + * glocalfileinputstream.c: + * glocalfileoutputstream.c: + fix attributes argument of query_info methods to + be "const char *". + + + svn path=/trunk/; revision=8000 + + gio/ChangeLog | 7 +++++++ + gio/glocalfileinputstream.c | 4 ++-- + gio/glocalfileoutputstream.c | 4 ++-- + 3 files changed, 11 insertions(+), 4 deletions(-) + +commit 6cdd01bfcc10af04c05ccd90669e49551d6872a3 +Author: Claude Paroz +AuthorDate: Tue Mar 17 08:22:23 2009 +0000 +Commit: Claude Paroz +CommitDate: Tue Mar 17 08:22:23 2009 +0000 + + Updated French translation. + + 2009-03-17 Claude Paroz + + * fr.po: Updated French translation. + + svn path=/trunk/; revision=7999 + + po/ChangeLog | 4 + + po/fr.po | 844 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 435 insertions(+), 413 deletions(-) + +commit e9de4af6761a150ad1e4cf50838e034cb8d51c78 +Author: Kjartan Maraas +AuthorDate: Tue Mar 17 08:18:12 2009 +0000 +Commit: Kjartan Maraas +CommitDate: Tue Mar 17 08:18:12 2009 +0000 + + Updated Norwegian bokmål translation. + + 2009-03-17 Kjartan Maraas + + * nb.po: Updated Norwegian bokmål translation. + + svn path=/trunk/; revision=7998 + + po/ChangeLog | 4 + + po/nb.po | 844 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 434 insertions(+), 414 deletions(-) + +commit 1269ae29a1d43284894601bf090bada778bc8b4f +Author: Jorge Gonzalez Gonzalez +AuthorDate: Mon Mar 16 22:11:32 2009 +0000 +Commit: Jorge Gonzalez Gonzalez +CommitDate: Mon Mar 16 22:11:32 2009 +0000 + + Updated Spanish translation + + svn path=/trunk/; revision=7997 + + po/ChangeLog | 4 + + po/es.po | 851 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 439 insertions(+), 416 deletions(-) + +commit 2506375ebe0a72aa02f80551db2a5dfd12a4fcde +Author: miloc +AuthorDate: Mon Mar 16 21:11:22 2009 +0000 +Commit: miloc +CommitDate: Mon Mar 16 21:11:22 2009 +0000 + + Updated Italian translation + + svn path=/trunk/; revision=7996 + + po/ChangeLog | 4 + + po/it.po | 845 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 435 insertions(+), 414 deletions(-) + +commit 47500e19d2ec122f282e293c10f2ff4e64ae39bf +Author: Og B. Maciel +AuthorDate: Mon Mar 16 20:53:27 2009 +0000 +Commit: Og B. Maciel +CommitDate: Mon Mar 16 20:53:27 2009 +0000 + + Updated Brazilian Portuguese translation. + + svn path=/trunk/; revision=7995 + + po/ChangeLog | 5 + + po/pt_BR.po | 846 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 436 insertions(+), 415 deletions(-) + +commit f008bf64d078c6d94193608a5ce3d285c59f6406 +Author: Daniel Nylander +AuthorDate: Mon Mar 16 19:01:51 2009 +0000 +Commit: Daniel Nylander +CommitDate: Mon Mar 16 19:01:51 2009 +0000 + + sv.po: Updated Swedish translation + + svn path=/trunk/; revision=7994 + + po/ChangeLog | 4 + + po/sv.po | 1209 + ++++++++++++++++++++++++++++++---------------------------- + 2 files changed, 625 insertions(+), 588 deletions(-) + +commit 669cb756888d9aedaee419b9e705869a1cecffe6 +Author: Matej Urbančič +AuthorDate: Mon Mar 16 18:35:43 2009 +0000 +Commit: Matej Urbančič +CommitDate: Mon Mar 16 18:35:43 2009 +0000 + + Updated Slovenian translation + + svn path=/trunk/; revision=7993 + + po/sl.po | 1171 + +++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 618 insertions(+), 553 deletions(-) + +commit 8b96ff36f14a55d990660f33d1163eab680ff780 +Author: Philip Withnall +AuthorDate: Mon Mar 16 18:21:34 2009 +0000 +Commit: Philip Withnall +CommitDate: Mon Mar 16 18:21:34 2009 +0000 + + Updated British English translation. + + 2009-03-16 Philip Withnall + + * en_GB.po: Updated British English translation. + + + svn path=/trunk/; revision=7992 + + po/ChangeLog | 4 + + po/en_GB.po | 840 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 432 insertions(+), 412 deletions(-) + +commit 6cff88ba18b3bc0d118308f109840cb163dcea03 +Author: Alexander Larsson +AuthorDate: Mon Mar 16 16:03:13 2009 +0000 +Commit: Alexander Larsson +CommitDate: Mon Mar 16 16:03:13 2009 +0000 + + Bug 575555 – Use fsync() when replacing files to avoid data loss on + + 2009-03-16 Alexander Larsson + + Bug 575555 – Use fsync() when replacing files to avoid data + loss on crash + + * configure.in: + Look for fsync(). + + * glib/gfileutils.c: + (write_to_temp_file): + fsync temp file if destination file exists + + 2009-03-16 Alexander Larsson + + Bug 575555 – Use fsync() when replacing files to avoid data + loss on crash + + * glocalfileoutputstream.c: + (g_local_file_output_stream_close): + (_g_local_file_output_stream_replace): + fsync temp file before closing if replacing target file + + + + svn path=/trunk/; revision=7991 + + ChangeLog | 11 ++++++++++ + configure.in | 1 + + gio/ChangeLog | 9 ++++++++ + gio/glocalfileoutputstream.c | 26 ++++++++++++++++++++++ + glib/gfileutils.c | 51 + ++++++++++++++++++++++++++++++++++++++++---- + 5 files changed, 94 insertions(+), 4 deletions(-) + +commit 0b66e52e0b0fbd0101bfbf0e1ef04421d8d7d189 +Author: Kostas Papadimas +AuthorDate: Mon Mar 16 15:54:50 2009 +0000 +Commit: Kostas Papadimas +CommitDate: Mon Mar 16 15:54:50 2009 +0000 + + Updated Greek Translation by Fotis Tsamis. + + svn path=/trunk/; revision=7990 + + po/ChangeLog | 4 + + po/el.po | 931 + ++++++++++++++++++++++++++++------------------------------- + 2 files changed, 450 insertions(+), 485 deletions(-) + +commit 593718fd8cabe8e0a726d9b083ef80d6ec5e879b +Author: Alexander Shopov +AuthorDate: Mon Mar 16 10:55:58 2009 +0000 +Commit: Alexander Alexandrov Shopov +CommitDate: Mon Mar 16 10:55:58 2009 +0000 + + Updated Bulgarian translation by Alexander Shopov + + 2009-03-16 Alexander Shopov + + * bg.po: Updated Bulgarian translation by + Alexander Shopov + + svn path=/trunk/; revision=7989 + + po/ChangeLog | 5 + + po/bg.po | 838 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 426 insertions(+), 417 deletions(-) + +commit d421cf697c7c8800e070ba81de22e45b5382684b +Author: Shankar Prasad +AuthorDate: Mon Mar 16 10:31:10 2009 +0000 +Commit: Shankar Prasad +CommitDate: Mon Mar 16 10:31:10 2009 +0000 + + Updated kn.po + + svn path=/trunk/; revision=7988 + + po/ChangeLog | 4 + + po/kn.po | 1004 + ++++++++++++++++++++++++++++------------------------------ + 2 files changed, 483 insertions(+), 525 deletions(-) + +commit dada55618e7d2fe2526eb01e72ec5ce3cc071846 +Author: Amanpreet Singh Alam +AuthorDate: Mon Mar 16 02:33:40 2009 +0000 +Commit: Amanpreet Singh Alam +CommitDate: Mon Mar 16 02:33:40 2009 +0000 + + updating for Gnome Punjabi Translation by A S Alam + + svn path=/trunk/; revision=7987 + + po/pa.po | 907 + +++++++++++++++++++++++++++++++-------------------------------- + 1 file changed, 451 insertions(+), 456 deletions(-) + +commit b3e22d022950ce13cc6cb88d0044693d951572eb +Author: Hendrik Richter +AuthorDate: Sun Mar 15 18:19:44 2009 +0000 +Commit: Hendrik Richter +CommitDate: Sun Mar 15 18:19:44 2009 +0000 + + Updated German translation. + + 2009-03-15 Hendrik Richter + + * de.po: Updated German translation. + + svn path=/trunk/; revision=7986 + + po/ChangeLog | 4 + + po/de.po | 920 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 466 insertions(+), 458 deletions(-) + +commit a79594b51723b64b548ceb5b5b60666ecd080c85 +Author: Felix I +AuthorDate: Sun Mar 15 08:35:41 2009 +0000 +Commit: Felix I +CommitDate: Sun Mar 15 08:35:41 2009 +0000 + + tamil translation updated + + svn path=/trunk/; revision=7985 + + po/ChangeLog | 4 + + po/ta.po | 1327 + ++++++++++++++++++++++++++++++---------------------------- + 2 files changed, 683 insertions(+), 648 deletions(-) + +commit 98346a15946fbec3a5206153e0fc809ed1cacaf4 +Author: Nickolay V. Shmyrev +AuthorDate: Sat Mar 14 19:14:18 2009 +0000 +Commit: Nickolay V. Shmyrev +CommitDate: Sat Mar 14 19:14:18 2009 +0000 + + Updated Russian translation by Yuriy Penkin. + + 2009-03-14 Nickolay V. Shmyrev + + * ru.po: Updated Russian translation by Yuriy Penkin. + + + svn path=/trunk/; revision=7984 + + po/ChangeLog | 4 + + po/ru.po | 885 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 448 insertions(+), 441 deletions(-) + +commit 516a19767d0db4d575872832c1e51323e46edc99 +Author: Kostas Papadimas +AuthorDate: Sat Mar 14 16:12:38 2009 +0000 +Commit: Kostas Papadimas +CommitDate: Sat Mar 14 16:12:38 2009 +0000 + + Updated Greek Translation by Jennie Petoumenou. + + svn path=/trunk/; revision=7983 + + po/ChangeLog | 4 + + po/el.po | 1721 + ++++++++++++++++++++++++++++++---------------------------- + 2 files changed, 881 insertions(+), 844 deletions(-) + +commit 4175a8546e642ee041f92693536fd907a3fd79b3 +Author: Aron Xu +AuthorDate: Sat Mar 14 11:31:29 2009 +0000 +Commit: Aron Xu +CommitDate: Sat Mar 14 11:31:29 2009 +0000 + + Updated Simplified Chinese translations by Deng Xiyue + + + svn path=/trunk/; revision=7982 + + po/zh_CN.po | 853 + ++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 429 insertions(+), 424 deletions(-) + +commit 1dcdbf5974812685c1b8a03c36d6217fe44ffbca +Author: Kenneth Nielsen +AuthorDate: Sat Mar 14 03:48:26 2009 +0000 +Commit: Kenneth Nielsen +CommitDate: Sat Mar 14 03:48:26 2009 +0000 + + Updated Danish translation + + svn path=/trunk/; revision=7981 + + po/ChangeLog | 4 + + po/da.po | 884 + ++++++++++++++++++++++++++++++----------------------------- + 2 files changed, 448 insertions(+), 440 deletions(-) + +commit 4e9abf266574d854b0495c1b13d956c00019ac87 +Author: Ignacio Casal Quinteiro +AuthorDate: Fri Mar 13 18:28:21 2009 +0000 +Commit: Ignacio Casal Quinteiro +CommitDate: Fri Mar 13 18:28:21 2009 +0000 + + Updated Galician translation + + svn path=/trunk/; revision=7980 + + po/ChangeLog | 4 + + po/gl.po | 1075 + ++++++++++++++++++++++++++++++---------------------------- + 2 files changed, 551 insertions(+), 528 deletions(-) + +commit 622f01012030fcba31ee2a68920873ac06bb62e4 +Author: Kristian Rietveld +AuthorDate: Fri Mar 13 09:22:57 2009 +0000 +Commit: Kristian Rietveld +CommitDate: Fri Mar 13 09:22:57 2009 +0000 + + when defaulting to the only item in the array, check if this is + indeed the + + 2009-03-13 Kristian Rietveld + + * gsignal.c (signal_lookup_closure): when defaulting to the only + item in the array, check if this is indeed the default closure. + (patch by Tim Janik). + + + svn path=/trunk/; revision=7979 + + gobject/ChangeLog | 6 ++++++ + gobject/gsignal.c | 9 ++++++--- + 2 files changed, 12 insertions(+), 3 deletions(-) + +commit 621ef866b14af56865eb65062c271ba3d06cfe7d +Author: Matthias Clasen +AuthorDate: Fri Mar 13 05:45:53 2009 +0000 +Commit: Matthias Clasen +CommitDate: Fri Mar 13 05:45:53 2009 +0000 + + Bump version + + svn path=/trunk/; revision=7978 + + ChangeLog | 4 ++++ + configure.in | 4 ++-- + 2 files changed, 6 insertions(+), 2 deletions(-) + +commit 5a8a224ff0ca193fe797c45ef54e5ed6466bfbb7 +Author: Matthias Clasen +AuthorDate: Fri Mar 13 05:44:11 2009 +0000 +Commit: Matthias Clasen +CommitDate: Fri Mar 13 05:44:11 2009 +0000 + + 2.20.0 + + svn path=/trunk/; revision=7976 + + ChangeLog | 6 + + INSTALL | 4 +- + README | 2 +- + configure.in | 4 +- + docs/reference/ChangeLog | 4 + + docs/reference/glib/gtester-report.1 | 4 +- + docs/reference/glib/gtester.1 | 4 +- + docs/reference/gobject/glib-genmarshal.1 | 4 +- + docs/reference/gobject/glib-mkenums.1 | 4 +- + docs/reference/gobject/gobject-query.1 | 4 +- + gio/ChangeLog | 4 + + gmodule/ChangeLog | 4 + + gobject/ChangeLog | 4 + + gthread/ChangeLog | 4 + + po/ChangeLog | 4 + + po/am.po | 72 +- + po/ar.po | 72 +- + po/as.po | 997 +++++++++++++------------ + po/az.po | 72 +- + po/be.po | 72 +- + po/be@latin.po | 72 +- + po/bg.po | 72 +- + po/bn.po | 72 +- + po/bn_IN.po | 869 +++++++++++----------- + po/bs.po | 72 +- + po/ca.po | 72 +- + po/cs.po | 829 +++++++++++---------- + po/cy.po | 72 +- + po/da.po | 72 +- + po/de.po | 72 +- + po/dz.po | 72 +- + po/el.po | 72 +- + po/en_CA.po | 72 +- + po/en_GB.po | 72 +- + po/eo.po | 72 +- + po/es.po | 72 +- + po/et.po | 72 +- + po/eu.po | 72 +- + po/fa.po | 72 +- + po/fi.po | 72 +- + po/fr.po | 72 +- + po/ga.po | 72 +- + po/gl.po | 72 +- + po/gu.po | 72 +- + po/he.po | 72 +- + po/hi.po | 862 +++++++++++----------- + po/hr.po | 72 +- + po/hu.po | 72 +- + po/hy.po | 72 +- + po/id.po | 72 +- + po/is.po | 72 +- + po/it.po | 832 +++++++++++---------- + po/ja.po | 829 +++++++++++---------- + po/ka.po | 72 +- + po/kn.po | 72 +- + po/ko.po | 72 +- + po/ku.po | 72 +- + po/lt.po | 829 +++++++++++---------- + po/lv.po | 72 +- + po/mai.po | 72 +- + po/mg.po | 72 +- + po/mk.po | 72 +- + po/ml.po | 881 ++++++++++++----------- + po/mn.po | 72 +- + po/mr.po | 853 +++++++++++----------- + po/ms.po | 72 +- + po/nb.po | 72 +- + po/ne.po | 72 +- + po/nl.po | 72 +- + po/nn.po | 72 +- + po/oc.po | 72 +- + po/or.po | 864 +++++++++++----------- + po/pa.po | 72 +- + po/pl.po | 829 +++++++++++---------- + po/ps.po | 72 +- + po/pt.po | 72 +- + po/pt_BR.po | 72 +- + po/ro.po | 856 +++++++++++----------- + po/ru.po | 72 +- + po/rw.po | 72 +- + po/si.po | 72 +- + po/sk.po | 72 +- + po/sl.po | 1158 + ++++++++++++++---------------- + po/sq.po | 72 +- + po/sr.po | 72 +- + po/sr@ije.po | 72 +- + po/sr@latin.po | 72 +- + po/sv.po | 72 +- + po/ta.po | 72 +- + po/te.po | 103 +-- + po/th.po | 72 +- + po/tl.po | 72 +- + po/tr.po | 72 +- + po/tt.po | 72 +- + po/uk.po | 72 +- + po/vi.po | 72 +- + po/wa.po | 72 +- + po/xh.po | 72 +- + po/yi.po | 72 +- + po/zh_CN.po | 72 +- + po/zh_HK.po | 72 +- + po/zh_TW.po | 72 +- + 102 files changed, 8495 insertions(+), 8412 deletions(-) + +commit 3c34e435754bbe4b5d0871603408d8e1bf9f5c19 +Author: Matthias Clasen +AuthorDate: Fri Mar 13 04:09:21 2009 +0000 +Commit: Matthias Clasen +CommitDate: Fri Mar 13 04:09:21 2009 +0000 + + Updates + + svn path=/trunk/; revision=7975 + + ChangeLog | 4 ++++ + NEWS | 28 ++++++++++++++++++++++++++++ + 2 files changed, 32 insertions(+) diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..d97f2ab --- /dev/null +++ b/INSTALL @@ -0,0 +1,126 @@ +Simple install procedure +======================== + + % tar xf glib-2.48.0.tar.gz # unpack the sources + % cd glib-2.48.0 # change to the toplevel directory + % ./configure # run the `configure' script + % make # build GLIB + + [ Become root if necessary ] + % rm -rf /install-prefix/include/glib.h /install-prefix/include/gmodule.h + % make install # install GLIB + +Requirements +============ + +GLib requires a C90-compliant (but not necessarily C99-compliant) C +compiler and libc. On UNIX-like systems, it also assumes compliance +with at least the original 1990 version of POSIX. + +GLib-2.0 requires pkg-config, which is tool for tracking the +compilation flags needed for libraries. (For each library, a small .pc +text file is installed in a standard location that contains the +compilation flags needed for that library along with version number +information.) Information about pkg-config can be found at: + + http://www.freedesktop.org/software/pkgconfig/ + +GNU make (http://www.gnu.org/software/make) is also required. + +In order to implement conversions between character sets, +GLib requires an implementation of the standard iconv() routine. +Most modern systems will have a suitable implementation, however +many older systems lack an iconv() implementation. On such systems, +you must install the libiconv library. This can be found at: + + http://www.gnu.org/software/libiconv/ + +If your system has an iconv implementation but you want to use +libiconv instead, you can pass the --with-libiconv option to +configure. This forces libiconv to be used. + +Note that if you have libiconv installed in your default include +search path (for instance, in /usr/local/), but don't enable +it, you will get an error while compiling GLib because the +iconv.h that libiconv installs hides the system iconv. + +If you are using the native iconv implementation on Solaris +instead of libiconv, you'll need to make sure that you have +the converters between locale encodings and UTF-8 installed. +At a minimum you'll need the SUNWuiu8 package. You probably +should also install the SUNWciu8, SUNWhiu8, SUNWjiu8, and +SUNWkiu8 packages. + +The native iconv on Compaq Tru64 doesn't contain support for +UTF-8, so you'll need to use GNU libiconv instead. (When +using GNU libiconv for GLib, you'll need to use GNU libiconv +for GNU gettext as well.) This probably applies to related +operating systems as well. + +Finally, for message catalog handling, GLib requires an implementation +of gettext(). If your system doesn't provide this functionality, +you should use the libintl library from the GNU gettext package, +available from: + + http://www.gnu.org/software/gettext/ + +Support for extended attributes and SELinux in GIO requires +libattr and libselinux. + +Some of the mimetype-related functionality in GIO requires the +update-mime-database and update-desktop-database utilities, which +are part of shared-mime-info and desktop-file-utils, respectively. + +GObject uses libffi to implement generic marshalling functionality. + +The Nitty-Gritty +================ + +Complete information about installing GLib can be found +in the file: + + docs/reference/glib/html/glib-building.html + +Or online at: + + https://developer.gnome.org/glib/stable/glib-building.html + + +Installation directories +======================== + +The location of the installed files is determined by the --prefix +and --exec-prefix options given to configure. There are also more +detailed flags to control individual directories. However, the +use of these flags is not tested. + +One particular detail to note, is that the architecture-dependent +include file glibconfig.h is installed in: + + $exec_prefix/lib/glib/include/ + +if you have a version in $prefix/include, this is out of date +and should be deleted. + +.pc files for the various libraries are installed in +$exec_prefix/lib/pkgconfig to provide information when compiling +other packages that depend on GLib. If you set PKG_CONFIG_PATH +so that it points to this directory, then you can get the +correct include flags and library flags for compiling a GLib +application with: + + pkg-config --cflags glib-2.0 + pkg-config --libs glib-2.0 + + +Cross-compiling GLib +==================== + +Information about cross-compilation of GLib can be found +in the file: + + docs/reference/glib/html/glib-cross-compiling.html + +Or online at: + + https://developer.gnome.org/glib/stable/glib-cross-compiling.html diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..741aad9 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,1919 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) $(am__append_15) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +@OS_LINUX_TRUE@am__append_15 = check-abis.sh +@OS_UNIX_TRUE@am__append_16 = gio-unix-2.0.pc +@OS_WIN32_TRUE@am__append_17 = gio-windows-2.0.pc +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = glib-2.0.pc gmodule-2.0.pc gmodule-export-2.0.pc \ + gmodule-no-export-2.0.pc gthread-2.0.pc gobject-2.0.pc \ + gio-2.0.pc gio-unix-2.0.pc gio-windows-2.0.pc glib-zip \ + glib-gettextize INSTALL README config.h.win32 +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(pkgconfigdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES) +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +SCRIPTS = $(bin_SCRIPTS) $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) $(pkgconfig_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope check recheck distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__DIST_COMMON = $(srcdir)/INSTALL.in $(srcdir)/Makefile.in \ + $(srcdir)/README.in $(srcdir)/config.h.in \ + $(srcdir)/config.h.win32.in $(srcdir)/gio-2.0.pc.in \ + $(srcdir)/gio-unix-2.0.pc.in $(srcdir)/gio-windows-2.0.pc.in \ + $(srcdir)/glib-2.0.pc.in $(srcdir)/glib-gettextize.in \ + $(srcdir)/glib-zip.in $(srcdir)/gmodule-2.0.pc.in \ + $(srcdir)/gmodule-export-2.0.pc.in \ + $(srcdir)/gmodule-no-export-2.0.pc.in \ + $(srcdir)/gobject-2.0.pc.in $(srcdir)/gthread-2.0.pc.in \ + $(top_srcdir)/glib.mk AUTHORS COPYING ChangeLog INSTALL NEWS \ + README compile config.guess config.sub install-sh ltmain.sh \ + missing test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +GZIP_ENV = --best +DIST_ARCHIVES = $(distdir).tar.xz +DIST_TARGETS = dist-xz +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = + +# These may be in the builddir too +BUILT_EXTRA_DIST = README INSTALL ChangeLog config.h.win32 $(NULL) +CLEANFILES = *.log *.trs $(am__append_14) +DISTCLEANFILES = config.lt +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \ + ChangeLog.pre-2-20 ChangeLog.pre-2-18 ChangeLog.pre-2-16 \ + ChangeLog.pre-2-14 ChangeLog.pre-2-12 ChangeLog.pre-2-10 \ + ChangeLog.pre-2-8 ChangeLog.pre-2-6 ChangeLog.pre-2-4 \ + ChangeLog.pre-2-2 ChangeLog.pre-2-0 ChangeLog.pre-1-2 \ + glib-zip.in NEWS.pre-1-3 acglib.m4 sanity_check README.commits \ + README.in README.rationale INSTALL.in README.win32 HACKING \ + autogen.sh glib.mk glib-tap.mk tap-driver.sh tap-test \ + makefile.msc msvc_recommended_pragmas.h config.h.win32.in \ + po/po2tbl.sed.in glib-2.0.pc.in gobject-2.0.pc.in \ + gmodule-2.0.pc.in gmodule-export-2.0.pc.in \ + gmodule-no-export-2.0.pc.in gthread-2.0.pc.in gio-2.0.pc.in \ + gio-unix-2.0.pc.in gio-windows-2.0.pc.in check-abis.sh \ + gtk-doc.make $(NULL) + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +ACLOCAL_AMFLAGS = -I m4macros ${ACLOCAL_FLAGS} +SUBDIRS = . m4macros glib gmodule gthread gobject gio po docs tests +DIST_SUBDIRS = $(SUBDIRS) build +bin_SCRIPTS = glib-gettextize +AM_CPPFLAGS = \ + -DG_LOG_DOMAIN=g_log_domain_glib \ + @GLIB_DEBUG_FLAGS@ \ + -DG_DISABLE_DEPRECATED \ + -DGLIB_COMPILATION + +CONFIGURE_DEPENDENCIES = acglib.m4 +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = glib-2.0.pc gobject-2.0.pc gmodule-2.0.pc \ + gmodule-export-2.0.pc gmodule-no-export-2.0.pc gthread-2.0.pc \ + gio-2.0.pc $(am__append_16) $(am__append_17) + +# build documentation when doing distcheck +DISTCHECK_CONFIGURE_FLAGS = --enable-debug --enable-gtk-doc --enable-man --disable-maintainer-mode +all: $(BUILT_SOURCES) config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .log .test .test$(EXEEXT) .trs +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +glib-2.0.pc: $(top_builddir)/config.status $(srcdir)/glib-2.0.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +gmodule-2.0.pc: $(top_builddir)/config.status $(srcdir)/gmodule-2.0.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +gmodule-export-2.0.pc: $(top_builddir)/config.status $(srcdir)/gmodule-export-2.0.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +gmodule-no-export-2.0.pc: $(top_builddir)/config.status $(srcdir)/gmodule-no-export-2.0.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +gthread-2.0.pc: $(top_builddir)/config.status $(srcdir)/gthread-2.0.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +gobject-2.0.pc: $(top_builddir)/config.status $(srcdir)/gobject-2.0.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +gio-2.0.pc: $(top_builddir)/config.status $(srcdir)/gio-2.0.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +gio-unix-2.0.pc: $(top_builddir)/config.status $(srcdir)/gio-unix-2.0.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +gio-windows-2.0.pc: $(top_builddir)/config.status $(srcdir)/gio-windows-2.0.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +glib-zip: $(top_builddir)/config.status $(srcdir)/glib-zip.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +glib-gettextize: $(top_builddir)/config.status $(srcdir)/glib-gettextize.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +INSTALL: $(top_builddir)/config.status $(srcdir)/INSTALL.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +README: $(top_builddir)/config.status $(srcdir)/README.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +config.h.win32: $(top_builddir)/config.status $(srcdir)/config.h.win32.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +check-abis.sh.log: check-abis.sh + @p='check-abis.sh'; \ + b='check-abis.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ + config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(pkgconfigdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-recursive + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-local distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA install-pkgconfigDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binSCRIPTS + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binSCRIPTS uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA uninstall-pkgconfigDATA + +.MAKE: $(am__recursive_targets) all check check-am install install-am \ + install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-TESTS check-am check-local clean \ + clean-checkLTLIBRARIES clean-checkPROGRAMS clean-cscope \ + clean-generic clean-installed_testLTLIBRARIES \ + clean-installed_testPROGRAMS clean-libtool \ + clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscope \ + cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \ + dist-zip distcheck distclean distclean-generic distclean-hdr \ + distclean-libtool distclean-local distclean-tags \ + distcleancheck distdir distuninstallcheck dvi dvi-am html \ + html-am info info-am install install-am install-binSCRIPTS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-pkgconfigDATA install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-binSCRIPTS uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA uninstall-pkgconfigDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +# http://people.gnome.org/~walters/docs/build-api.txt +.buildapi-allow-builddir: + +ChangeLog: + $(AM_V_GEN) if test -d "$(srcdir)/.git"; then \ + (GIT_DIR=$(top_srcdir)/.git ./missing --run git log GLIB_2_20_0^^.. --stat) | fmt --split-only > $@.tmp \ + && mv -f $@.tmp $@ \ + || ($(RM) $@.tmp; \ + echo Failed to generate ChangeLog, your ChangeLog may be outdated >&2; \ + (test -f $@ || echo git-log is required to generate this file >> $@)); \ + else \ + test -f $@ || \ + (echo A git checkout and git-log is required to generate ChangeLog >&2 && \ + echo A git checkout and git-log is required to generate this file >> $@); \ + fi + +$(pkgconfig_DATA): config.status + +distclean-local: lcov-clean + if test $(srcdir) = .; then :; else \ + rm -f $(BUILT_EXTRA_DIST); \ + fi + +.PHONY: files release sanity snapshot ChangeLog + +files: + @files=`ls $(DISTFILES) 2> /dev/null `; for p in $$files; do \ + echo $$p; \ + done + +release: + rm -rf .deps */.deps + cd docs && make glib.html + $(MAKE) distcheck + +sanity: + ./sanity_check $(VERSION) + +snapshot: + $(MAKE) dist distdir=$(PACKAGE)-snap`date +"%Y%m%d"` + +snapcheck: + $(MAKE) distcheck distdir=$(PACKAGE)-snap`date +"%Y%m%d"` + +dist-hook: $(BUILT_EXTRA_DIST) + files='$(BUILT_EXTRA_DIST)'; \ + for f in $$files; do \ + if test -f $$f; then d=.; else d=$(srcdir); fi; \ + rm -f $(distdir)/$$f && cp $$d/$$f $(distdir) || exit 1; done + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/NEWS b/NEWS index 46dbea9..5b7dba3 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,617 @@ +Overview of changes in GLib 2.48.0 +================================== + + * a minor build fix in the name of determinism + + * a few coverity fixes + +Bugs fixed: + 763617 giotypefuncs.c: Sort _get_type functions in the 'C' locale + +Translations updated: + Danish + Italian + +Overview of changes in GLib 2.47.92 +=================================== + + * gdbus-codegen now supports g_autoptr() + + * g_get_user_runtime_dir() now reliably returns an existing directory + + * g_array_remove_range() can now remove 0 items from the end of an array + + * Many fixes for Windows + * build fixes + * file monitoring + * gsettings backend + * streams + * random numbers + * wide character support + + * documentation improvements + + * other small bugfixes + +Bugs fixed: + 724847 Segmentation fault on "gsettings list-recursively" + 743933 gapplication: add --app-id command line option + 756706 [PATCH] gio/gtestdbus.c: don't use non-standard %m printf modifier + 757506 gsettings: schema_list should use the passed schema's source + 760694 W32: Apps linked with -mwindows make cursor busy sometimes + 762202 g_win32_error_message improvements + 762637 build: Unconditionally dist tapset files + 762748 Undefined behavior + 762937 Mention that g_clear_error can be used with an "empty" GError + 763339 array: Support clearing an empty array with g_array_remove_range() + 763344 g_get_user_runtime_dir(): ensure directory exists + 763379 codegen: Add support for g_autoptr to gdbus-codegen–generated objects + +Translations updated: + Brazilian Portuguese + Czech + Finnish + French + Galician s + German + Greek + Hebrew + Hungarian + Italian + Kazakh + Korean + Latvian + Lithuanian + Occitan + Polish + Russian + Serbian + Slovak + Slovenian + Spanish + Swedish + +Overview of changes in GLib 2.47.6 +================================== + +* Windows usupport: + - Fixes and improvements to the GSettings registry backend + - Handle readability and writability of registry keys + - Use Unicode registry APIs + +* Bugs fixed: +760852 744772 761126 747927 761337 744570 761504 761550 761843 + 744570 GString is missing (transfer none) annotations on many of its methods + 744772 systemtap and gdb scripts install in wrong place + 747927 Documentation: various small improvements + 760852 gdbusobjectmanagerserver: Clarify recommended ObjectManager paths + 761126 winiconv: update to upstream version + 761337 Fix some annotations + 761504 W32 registry GSettings backend does not use Unicode + 761550 Cannot build with default flags under Fedora rawhide (-Werror=format-... + 761843 gmacros.h is testing attributes with __has_feature (when compiling wi... + +* Translation updates: + Brazilian Portuguese + Bulagarian + Chinese (Taiwan) + Hungarian + Polish + Slovak + Slovenian + Spanish + Swedish + + +Overview of changes in GLib 2.47.5 +================================== + +* the system copy of PCRE is now used by default to implement GRegex. + Configure with --with-pcre=internal if a system PCRE version + is unavailable or undesired. + +* interfaces for DTLS support have been added. A new version of + glib-networking will also be required. + +* GDBusMethodInvocation now drops replies if the sender set the + NO_REPLY_EXPECTED flag + +* several GApplication fixes, including fixes for commandline arguments + in interpreted languages on Windows + +Bugs fixed: + 624186 Deprecate glib-gettext macros + 734095 gtk-demo.py of PyGObject fails to run on Windows (and likely other binding scripts using g_application_run()) + 735754 Implement close on TLS GOutputStream + 748064 gnulib vfprintf returns desired (not actual) number of bytes, ignores errors + 752240 Add DTLS support to GIO + 755421 GDBus ignores NO_REPLY_EXPECTED flag in messages, leading to warnings on system bus + 756875 Include ntdef.h for NTSTATUS + 759554 g_application_run() calls g_main_context_default() repeatidly + 760199 gsettings: Install gettext ITS rules + 760215 G_LIKELY/_UNLIKELY macros need more parentheses + 760683 regex test: Check the expected PCRE exceptions at runtime + +Translations updated: + Brazilian Portuguese + Czech + German + Lithuanian + Swedish + +Overview of changes in GLib 2.47.4 +================================== + +* The GApplication documentation has been improved in several areas. + +* Bugs fixed: + 749092 gdb pretty-printers fail on Python 3 with a TypeError... + 757374 macros: clean up "inline" mess + 758641 Memory leak in g_dbus_proxy_new_for_bus_sync() + 759134 Add missing checks for gnulib vasnprintf() + 759408 Do not use uninitialized var + 756475 Stop supporting non-POSIX getpwuid_r, getgrgid_r + 757372 GApplication: destroy the impl on shutdown + 728099 macros: add G_GNUC_CHECK_VERSION() for compiler checks + 757299 glib-compile-resources: do not leak c_name + 758553 Fix gettext use + 758823 file monitors: reorder some code to avoid segfault + 756214 gsettings: Don't translate "" + 710243 Add GParamSpec object ref management annotations + 735696 xdgmime: Finer handling for cases where mmap() is not available + 752983 gapplication: Acquire the main context before running + +* Translation updates: + Swedish + + +Overview of changes in GLib 2.47.3 +================================== + +The inline cleanup in the last release accidentally removed three +symbols from libglib-2.0.so. It is unlikely that this will have caused +any problems because these symbols were only backup symbols for +definitions exported as inlines in the header files, but ABI is ABI. + +This release corrects only this problem. + +Overview of changes in GLib 2.47.2 +================================== + +* We have formalised the assumption that all compilers that are + interested in support 'static inline' and simplified the macros around + this considerably. Please watch for and report unintentional fallout. + +* New API: hardware-assisted helpers for overflow-checked integer math. + +* other fixes + +Bugs fixed: + 696324 gtester-report doesn't work with Python 3.x + 719966 glib: Add missing (nullable) and (optional) annotations + 752837 gobject and glib-compile-resources rely on .CRT$XCU section, no longer works with Win 10 UCRT (VS 2015) + 755364 make gtkdoc-check happy again + 756134 Segmentation fault on calling g_simple_action_group_add_action with bad action constructor call + 756179 gwin32.c: Replace VerifyVersionInfoW() with RtlGetVersion() due to API deprecation + 756988 GSequence should document each function's complexity + 757294 Move G_POLLFD_FORMAT to glibconfig.h + 757374 macros: clean up "inline" mess + 757451 doc: fix g_task_attach_source() example + 757628 gio tests fail to build when cross compiling 2.46.1 + 757693 Invalid free in g_local_file_trash() + 757742 Fix up annotations in ghash.c + 758181 GTask: fix wrong example code + +Translations updated: + Greek + Hebrew + Hungarian + Norwegian bokmål + Portuguese + Scottish Gaelic + Simplified Chinese + Spanish + +Overview of changes in GLib 2.47.1 +================================== + +* The Unicode support has been updated to version 8.0 of the Unicode standard + +* GDesktopAppInfo no longer sets the DISPLAY environment variable when + launching apps. This is now done in the GAppLaunchContext implementations + when appropriate + +* Bug fixes: + 664740 Key-value file parser, space after integer + 687223 cleverer GThreadPool management + 692085 stderr and stdout are not always file descriptors 1 and 2 + 697907 Add interface for socket-like things (GSocket, DTLS, etc) + 735754 Implement close on TLS GOutputStream + 737116 Add functions to print GSocketConnectables and addresses as strings + 743011 Minor additions to GError documentation + 749161 undefined reference to `__imp__stat32i64' + 749314 Cannot restore a just-trashed file + 751924 Add recvmmsg()-like API on GSocket + 752240 Add DTLS support to GIO + 752837 gobject and glib-compile-resources rely on .CRT$XCU section, no longer... + 753310 Remove `#pragma GCC system_header` from gmessages.h + 753935 Update example namespace and class names in GObject tutorial + 754855 Object instantiation documentation refers to example that no longer ex... + 754983 Wayland: g_desktop_app_info_launch_uris_with_spawn() forces DISPLAY va... + 754994 g_date_time_get_second () sometimes returns an off-by-one result + 755083 Clarify in G_ADD_PRIVATE that it is safe to call _get_instance_private... + 755351 Example still contains g_autoptr(gchar) + 755355 Move GStrv to glib.h so it can be used with g_auto() + 755374 g_variant_get_child(): flatten-first logic on '&' + 755496 glib 2.46 fails GStreamer test suite + 755609 glib 2.46.0 breaks Sun Java JVM 1.8.0.60 + 755766 gvalue: The g_auto cleanup function assert if value is G_VALUE_INIT + 755795 2.46 considers empty files as octet-stream rather than text (leads to... + 755961 Fix up annotations in gbytes.c + 756053 MSVC doesn't understand the symbol 'msghdr' + 756054 MSVC linker error due to 'g_socket_send_message_with_timeout()' + 756077 testutils: remove internal ABI comment + 756099 g_main_context_query(): Annotate @n_fds as (in) parameter + 756139 musl: ctors called in the wrong order + 756179 gwin32.c: Replace VerifyVersionInfoW() with RtlGetVersion() due to AP... + 756251 The documentation of G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START is confusing + 756255 GOutputStream swallowing errors in splice with G_OUTPUT_STREAM_SPLICE... + 756316 GSequence should provide fast api to check if empty + 756382 snprintf used on Windows with VS2015 doesn't support %n + 756477 gio/gthreadedresolver.c has outdated copy of bionic headers (for android) + 756550 gtypes.h: Make G_MININTn literals negative + 756875 Include ntdef.h for NTSTATUS + 756952 giomodule: return a copy of module name + +* Translation updates: + Basque + Czech + Serbian + Serbian Latin + Vietnamese + + +Overview of changes in GLib 2.46.0 +================================== + +* Disable runtime-deprecation warnings + +* Fix marshalling of flags on bigendian 64bit architectures + +* Translation updates + Brazilian Portuguese + Danish + German + Latvian + Russian + Turkish + + +Overview of changes in GLib 2.45.8 +================================== + +* utf8 validation and utf8-to-ucs4 conversion are faster + +* Small speedups to property change notification + +* Various other small optimizations for GQuark, GData + +* Bugs fixed: + 696426 GParamSpecTypeInfo do not need to be static + 735429 Cleanup MSVC Project Files Generation + 738504 Optimize UTF-8 decoding by unrolling branches and expressions + 742903 Add missing (transfer) annotation to GString + 748633 g_set_object order of operations + 754431 Fix build of glib/gstrfuncs.c on Windows + 754560 gioerror: Add more mappings for WinSock error codes + 754582 Glib cannot compile + 754601 Make g_strerror work with non-glibc POSIX systems + 754636 tests/unicode-encoding test fails for glib 2.45.7 on x86-64 + 754788 more g_strerror stuff + 754831 autocleanups: Add GString type + 754924 Improve test coverage of g_utf8_validate() by added known-... + 754986 Avoid unnecessary signal emission during draw + +* Translation updates: + Italian + Kazakh + Korean + Lithuanian + Slovenian + Swedish + + +Overview of changes in GLib 2.45.7 +================================== + +* Add G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE for use by non-POSIX-like + backends (e.g. cloud storage). + +* GFileMonitor: Make the inotify backend work with atomic renames again + +* GSettings: change notification is again working unconditionally + +* GListStore has a sort function now + +* Test infrastructure: + - Tests are now required to have unique names + - TAP support has been improved + - A macro for asserting that two memory regions have identical content + has been added + +* Bugs fixed: + 708525 A "g_file_query_info" on the file path "/sys/kernel/debug/hid"... + 742849 inotify: send paired events to both sides + 744060 Update GObject tutorial documentation to use G_DECLARE_FINAL_T... + 747364 Fix GError leak in g_file_query_writable_namespaces() + 749492 Support file creation time on FreeBSD and NetBSD + 752769 (g_socket_receive_message | g_socket_send_message) performance + 753745 glib-genmarshal still needed for cross-compilation + 754152 Add g_list_store_sort + 754211 Memory leak in g_file_enumerator_iterate () + 754264 GLib 2.44 certificate chain construction fails if the PEM incl... + 754283 gtestutils: add g_assert_cmpmem() + 754284 gtestutils: print the TAP test plan first, not last + 754286 misc gtestutils fixes + 754307 size of array '_GStaticAssertCompileTimeAssertion_3387' is neg... + + +* Translation updates: + Chinese (Taiwan) + French + Galician + Greek + Hebrew + Hungarian + Indonesian + Polish + Portuguese + + +Overview of changes in GLib 2.45.6 +================================== + +* Fix a test failure and a build failure + +Overview of changes in GLib 2.45.5 +================================== + +* GNetworkMonitor now provides information about metered networks + +* g_mem_set_vtable has been deprecated; it has not been working for + quite a while. The recommendation is to use valgrind, or replace + malloc itself. + +* Bugs fixed: + 656325 Make GDBusInterfaceVTable binding friendly + 741779 Documentation tweaks addressing real-world API misuses + 741822 Fails to build with VS 2015 + 742386 gdbusconnection: Don't g_printerr() when exiting + 743018 gobject: Add more cross-links between documentation pages + 750282 Add g_network_monitor_get_network_metered() to get if the connection... + 751358 GFileMonitor doesn't react to "mv some-file watched-file" + 751592 Stop using GMemVtable + 751598 Stop 'handle-local-options' propagation when callback reports an err... + 751610 g_str_hash produces collisions with strings of length 2 + 751751 Wrong docs of g_async_queue_remove + 752210 gdbus command crashes with SIGSEGV + 752656 gdbusconnection: Fix signal subscription documentation + 752767 Fix typo in g_hash_table_replace() documentation + 753278 gdbus: Don't use g_assert_no_error() GDBusObjectManagerServer + 753285 g_menu_item_set_icon fails if called with NULL icon + +* Translation updates: + Catalan + Czech + French + Indonesian + Lithuanian + Norwegian bokmål + Slovak + Spanish + Thai + Turkish + + +Overview of changes in GLib 2.45.4 +================================== + +* Bugs fixed: + 727829 win32: glibconfig.h.win32 updates + 741901 Clang cannot know that g_error don't return + 746339 GSocket kills process when fd is not a socket + 747676 gio/tests/socket fails: test_fd_roundtrip + 748610 Some tests fail with non-English locales + 749911 g_inet_address_to_string broken on XP/2003 + 749912 g_inet_address_new_from_string broken on XP/2003 + 750625 Should dismiss Software Updates Available notification after... + 750807 G_BREAKPOINT doesn't work as intended on Darwin + 751160 gtask does unnecessary work + 751672 -Wduplicate-decl-specifier in glib/tests/keyfile.c + 751731 GFile/DirectoryMonitor emit move events with other_file=NULL + 751737 gio/tests/appmonitor test fails in 2.45.3 + 751798 Wrong enum type used in some test-cases + 752089 make gsocketservice::active a property + 752293 small cleanup: use list_free_full + +* Translation updates: + Greek + Hebrew + Portuguese + + +Overview of changes in GLib 2.45.3 +================================== + +* Improve performance of g_signal_handler_disconnect for signals + with many handlers + +* GDBus has gained a new call flag to allow interactive authorization + +* GSettings: + - New API: g_settings_schema_list_keys + - Deprecated: g_settings_list_keys + +* OS X: + - Implement GNotification + - Bump the OS X requirement to 10.9 + +* Windows: + - Add registry reading API + - Reimplement GAppInfo using registry information + +* Bugs fixed: + 666831 Support URI opening on W32 + 728489 property action with inverted boolean state + 730168 Incorrect annotation on g_action_group_get_action_state_type return... + 733325 Several regex tests fail with pcre3 8.35 + 734888 GLib has no helper functions to work with W32 Registry + 737009 signal handler lookup doesn't scale + 738185 Misleading language about "file name encoding" in the docs on g_env... + 738504 Optimize UTF-8 decoding by unrolling branches and expressions + 739122 glib not handling -1 return ("no limit") from sysconf (_SC_THREAD_S... + 739424 gnome-shell crashes when files are added, deleted, or modified in $... + 739616 DBus; Add new call flag to allow interactive authorization + 740308 Add g_settings_schema_list_keys() method + 740516 RFE: please provide an introspectible version of g_log_set_handler + 741788 Document GSettings build system integration + 745013 GBinding not thread safe + 747146 Implement GNotification on OSX + 747941 try XDG_RUNTIME_DIR/bus before falling back to X11 autolaunch (dbus... + 748727 Filechooser dialog shows no icons for directories on W32 + 749693 GActionGroupExporter: flush queue on requests + 750203 GNetworkMonitorNetlink hangs in user namespace + 750322 gapplication: Make sure --help output is translated + 750344 GTlsInteractionClass is missing from doc + 750369 Various GBinding cleanups + 750386 Race condition in g_io_condition_get_type + 750399 Typo "equilalent" in glib documentation's glib-Error-Reporting.html... + 750573 GTlsDatabaseClass is not documented + 750918 genmarshal: silence register storage class warnings + 751122 gsocket: avoid unnecessary g_socket_cond_wait() in _send_messages() + 479730 The "g_key_file_set_comment" interface prepends '#' character to... + +* Translation updates: + Hungarian + Spanish + + +Overview of changes in GLib 2.45.2 +================================== + +* Improve error reporting in glib-compile-schemas. + +* Add introspection annotations to GListStore. + +* Bugs fixed: + 696749 win32 : failed to compile because of careless mistake in the code + 723394 const parameter to GtkPopover gtk_popover_set_pointing_to + 724113 gdbus-connection-loss test can fail on slow machines + 725981 tap-driver.sh: internal error getting exit status + 733325 Several regex tests fail with pcre3 8.35 + 744895 Unknown or unsupported transport 'this-should-not-be-used-and-will... + 747882 gtype: Bump allowed number of children + 748534 gtest: if a subprocess assertion fails, print its stdout and stderr + 748612 de_DE locale used in option-context test is not supported by FreeBSD + 748614 Double unref in g_socket_listener_add_inet_port + 748834 glocalfilemonitor: Emit notification on rate limit change + 749079 gdbus-peer test: TCP tests can fail with ECONNRESET due to a race... + 749080 gdatetime test: fails if close to rollover between seconds + 749180 gnetworkaddress: add return type annotation to parse methods + 749352 g_binding_unbind() fails when source is also the target + 749353 GBinding does not connect to the detailed notify signal + +* Translation updates: + Catalan + French + Slovak + Thai + + +Overview of changes in GLib 2.45.1 +================================== + +* The GSettings schema compiler, glib-compile-schemas has been changed + to reject schema xml that has duplicate or + elements. Such elements typically occur when translations are merged + into the schema, with xml:lang attributes. This is not the correct + way to translate schemas. Instead keep the translations in the .mo + file and set the gettext-domain attribute on the element. + +* The file monitoring infrastructure has been rewritten, and all backends + have seen major improvements. + + The inotify backend is reporting events with less delay (no event will + be delayed more than 10ms) and wakeups due to file monitoring have been + significantly reduced. A CHANGES_DONE event will also be sent when new + files appear. + + The poll implementation is now using the thread default main context. + + The fam implmentation is now running in the worker thread. + + The fen implementation has been removed, since it was unmaintained. + +* The GSettings schema compiler, glib-compile-schemas, is more strict + about rejecting schemas with xml:lang style merged translations. + Schema translations should be done by specifying the gettext domain + in the xml, and keeping the translations in gettext. To avoid breaking + already-installed schemas, this change is only taking effect when + you use the --strict option. + +* The hardcoded 10-thread limit of GTask's thread pool has been removed, + since it was prone to causing deadlocks. The thread pool is now allowed + to grow dynamically and will shrink back over time. + +* GSimpleAsyncResult has been deprecated in favor of GTask. + +* The algorithm used by GAppInfo to find default handlers for mime types + has been tweaked to prefer apps that handle the specific subtype over + default handlers for a generic supertype. + +* Bug fixes: + 627285 inotify file monitor hardwired delay + 631597 Segmentation fault in append_escaped_text + 661767 merge/improve various bits of run-in-thread functionality + 687223 cleverer GThreadPool management + 711547 win32: silence some build warnings + 719966 glib: Add missing (nullable) and (optional) annotations + 726447 Possibly an error in text string + 728663 W32: wrong stat struct is used when built with MinGW-w64 + 728669 W32: GLocalFile can't measure size of files larger than 2^32... + 730188 gsocket: Document FD ownership with g_socket_new_from_fd() + 733325 Several regex tests fail with pcre3 8.35 + 738207 Add a way to set SO_SENDBUF and SO_RECVBUF on listener (and... + 739850 GClosure: add valgrind hints + 741791 gmain: Save errno when handling unix signals + 744282 gvfs-open for application/x-virt-viewer changed behaviour bet... + 745255 Add support for copying sessions between GTlsClientConnections + 745745 gdbus: fix out-of-bound array access + 745821 Don't use __alloc_size__ attribute with clang + 746749 GLib-GIO:ERROR:inotify-kernel.c:327:ik_source_dispatch: ass... + 746753 Glib-compile-resources --generate-header not using ".h" as ... + 747209 glib-compile-schemas ought to reject repeated and... + 747349 Conversion of gdbus to use GTask causes deadlocks + 747363 gatomic: Add missing new line in API doc comment + 747472 Don't ignore already-installed schemas with multiple which must be included explicitly; it is not + included through . + + On current (NT-based) Windows versions, where the on-disk file names + are Unicode, these wrappers use the wide-character API in the C + library. Thus applications can handle file names containing any + Unicode characters through GLib's own API and its POSIX wrappers, + not just file names restricted to characters in the system codepage. + + To keep binary compatibility with applications compiled against + older versions of GLib, the Windows DLL still provides entry points + with the old semantics using the old names, and applications + compiled against GLib 2.6 will actually use new names for the + functions. This is transparent to the programmer. + + When compiling against GLib 2.6, applications intended to be + portable to Windows must take the UTF-8 file name encoding into + consideration, and use the gstdio wrappers to access files whose + names have been constructed from strings returned from GLib. + +* Likewise, g_get_user_name() and g_get_real_name() have been changed + to return UTF-8 on Windows, while keeping the old semantics for + applications compiled against older versions of GLib. + +* The GLib uses an '_' prefix to indicate private symbols that + must not be used by applications. On some platforms, symbols beginning + with prefixes such as _g will be exported from the library, on others not. + In no case can applications use these private symbols. In addition to that, + GLib+ 2.6 makes several symbols private which were not in any installed + header files and were never intended to be exported. + +* To reduce code size and improve efficiency, GLib, when compiled + with the GNU toolchain, has separate internal and external entry + points for exported functions. The internal names, which begin with + IA__, may be seen when debugging a GLib program. + +* On Windows, GLib no longer opens a console window when printing + warning messages if stdout or stderr are invalid, as they are in + "Windows subsystem" (GUI) applications. Simply redirect stdout or + stderr if you need to see them. + +* The child watch functionality tends to reveal a bug in many + thread implementations (in particular the older LinuxThreads + implementation on Linux) where it's not possible to call waitpid() + for a child created in a different thread. For this reason, for + maximum portability, you should structure your code to fork all + child processes that you want to wait for from the main thread. + +* A problem was recently discovered with g_signal_connect_object(); + it doesn't actually disconnect the signal handler once the object being + connected to dies, just disables it. See the API docs for the function + for further details and the correct workaround that will continue to + work with future versions of GLib. diff --git a/README.in b/README.in index 6a86f85..3e8b2e5 100644 --- a/README.in +++ b/README.in @@ -67,6 +67,31 @@ and attach the patch to that bug report. Patches should be in unified diff form. (The -up option to GNU diff.) +Notes about GLib 2.48 +===================== + +* The system copy of PCRE is now used by default to implement GRegex. + Configure with --with-pcre=internal if a system PCRE version + is unavailable or undesired. + +Notes about GLib 2.46 +===================== + +* GTask no longer imposes a fixed limit on the number of tasks that + can be run_in_thread() simultaneously, since doing this inevitably + results in deadlocks in some use cases. Instead, it now has a base + number of threads that can be used "for free", but will gradually + add more threads to the pool if too much time passes without any + tasks completing. + + The exact behavior may continue to change in the future, and it's + possible that some future version of GLib may not do any + rate-limiting at all. As a result, you should no longer assume that + GTask will rate-limit tasks itself (or, by extension, that calls to + certain async gio methods will automatically be rate-limited for + you). If you have a very large number of tasks to run, and don't + want them to all run at once, you should rate-limit them yourself. + Notes about GLib 2.40 ===================== diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..6c58677 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,1708 @@ +# generated automatically by aclocal 1.15 -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +dnl serial 11 (pkg-config-0.29) +dnl +dnl Copyright © 2004 Scott James Remnant . +dnl Copyright © 2012-2015 Dan Nicholson +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2 of the License, or +dnl (at your option) any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +dnl General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +dnl 02111-1307, USA. +dnl +dnl As a special exception to the GNU General Public License, if you +dnl distribute this file as part of a program that contains a +dnl configuration script generated by Autoconf, you may include it under +dnl the same distribution terms that you use for the rest of that +dnl program. + +dnl PKG_PREREQ(MIN-VERSION) +dnl ----------------------- +dnl Since: 0.29 +dnl +dnl Verify that the version of the pkg-config macros are at least +dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's +dnl installed version of pkg-config, this checks the developer's version +dnl of pkg.m4 when generating configure. +dnl +dnl To ensure that this macro is defined, also add: +dnl m4_ifndef([PKG_PREREQ], +dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])]) +dnl +dnl See the "Since" comment for each macro you use to see what version +dnl of the macros you require. +m4_defun([PKG_PREREQ], +[m4_define([PKG_MACROS_VERSION], [0.29]) +m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) +])dnl PKG_PREREQ + +dnl PKG_PROG_PKG_CONFIG([MIN-VERSION]) +dnl ---------------------------------- +dnl Since: 0.16 +dnl +dnl Search for the pkg-config tool and set the PKG_CONFIG variable to +dnl first found in the path. Checks that the version of pkg-config found +dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is +dnl used since that's the first version where most current features of +dnl pkg-config existed. +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])dnl PKG_PROG_PKG_CONFIG + +dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------------------------------- +dnl Since: 0.18 +dnl +dnl Check to see whether a particular set of modules exists. Similar to +dnl PKG_CHECK_MODULES(), but does not set variables or print errors. +dnl +dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +dnl only at the first occurence in configure.ac, so if the first place +dnl it's called might be skipped (such as if it is within an "if", you +dnl have to call PKG_CHECK_EXISTS manually +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +dnl --------------------------------------------- +dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting +dnl pkg_failed based on the result. +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])dnl _PKG_CONFIG + +dnl _PKG_SHORT_ERRORS_SUPPORTED +dnl --------------------------- +dnl Internal check to see if pkg-config supports short errors. +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])dnl _PKG_SHORT_ERRORS_SUPPORTED + + +dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl -------------------------------------------------------------- +dnl Since: 0.4.0 +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES might not happen, you should be sure to include an +dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])dnl PKG_CHECK_MODULES + + +dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +dnl [ACTION-IF-NOT-FOUND]) +dnl --------------------------------------------------------------------- +dnl Since: 0.29 +dnl +dnl Checks for existence of MODULES and gathers its build flags with +dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags +dnl and VARIABLE-PREFIX_LIBS from --libs. +dnl +dnl Note that if there is a possibility the first call to +dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to +dnl include an explicit call to PKG_PROG_PKG_CONFIG in your +dnl configure.ac. +AC_DEFUN([PKG_CHECK_MODULES_STATIC], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +_save_PKG_CONFIG=$PKG_CONFIG +PKG_CONFIG="$PKG_CONFIG --static" +PKG_CHECK_MODULES($@) +PKG_CONFIG=$_save_PKG_CONFIG[]dnl +])dnl PKG_CHECK_MODULES_STATIC + + +dnl PKG_INSTALLDIR([DIRECTORY]) +dnl ------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable pkgconfigdir as the location where a module +dnl should install pkg-config .pc files. By default the directory is +dnl $libdir/pkgconfig, but the default can be changed by passing +dnl DIRECTORY. The user can override through the --with-pkgconfigdir +dnl parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_INSTALLDIR + + +dnl PKG_NOARCH_INSTALLDIR([DIRECTORY]) +dnl -------------------------------- +dnl Since: 0.27 +dnl +dnl Substitutes the variable noarch_pkgconfigdir as the location where a +dnl module should install arch-independent pkg-config .pc files. By +dnl default the directory is $datadir/pkgconfig, but the default can be +dnl changed by passing DIRECTORY. The user can override through the +dnl --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +])dnl PKG_NOARCH_INSTALLDIR + + +dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl ------------------------------------------- +dnl Since: 0.28 +dnl +dnl Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])dnl PKG_CHECK_VAR + +# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.15' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.15], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.15])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each '.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAINTAINER_MODE([DEFAULT-MODE]) +# ---------------------------------- +# Control maintainer-specific portions of Makefiles. +# Default is to disable them, unless 'enable' is passed literally. +# For symmetry, 'disable' may be passed as well. Anyway, the user +# can override the default with the --enable/--disable switch. +AC_DEFUN([AM_MAINTAINER_MODE], +[m4_case(m4_default([$1], [disable]), + [enable], [m4_define([am_maintainer_other], [disable])], + [disable], [m4_define([am_maintainer_other], [enable])], + [m4_define([am_maintainer_other], [enable]) + m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode's default is 'disable' unless 'enable' is passed + AC_ARG_ENABLE([maintainer-mode], + [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], + am_maintainer_other[ make rules and dependencies not useful + (and sometimes confusing) to the casual installer])], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST([MAINT])dnl +] +) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# --------------------------------------------------------------------------- +# Adds support for distributing Python modules and packages. To +# install modules, copy them to $(pythondir), using the python_PYTHON +# automake variable. To install a package with the same name as the +# automake package, install to $(pkgpythondir), or use the +# pkgpython_PYTHON automake variable. +# +# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as +# locations to install python extension modules (shared libraries). +# Another macro is required to find the appropriate flags to compile +# extension modules. +# +# If your package is configured with a different prefix to python, +# users will have to add the install directory to the PYTHONPATH +# environment variable, or create a .pth file (see the python +# documentation for details). +# +# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will +# cause an error if the version of python installed on the system +# doesn't meet the requirement. MINIMUM-VERSION should consist of +# numbers and dots only. +AC_DEFUN([AM_PATH_PYTHON], + [ + dnl Find a Python interpreter. Python versions prior to 2.0 are not + dnl supported. (2.0 was released on October 16, 2000). + m4_define_default([_AM_PYTHON_INTERPRETER_LIST], +[python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl + python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0]) + + AC_ARG_VAR([PYTHON], [the Python interpreter]) + + m4_if([$1],[],[ + dnl No version check is needed. + # Find any Python interpreter. + if test -z "$PYTHON"; then + AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) + fi + am_display_PYTHON=python + ], [ + dnl A version check is needed. + if test -n "$PYTHON"; then + # If the user set $PYTHON, use it and don't search something else. + AC_MSG_CHECKING([whether $PYTHON version is >= $1]) + AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AC_MSG_ERROR([Python interpreter is too old])]) + am_display_PYTHON=$PYTHON + else + # Otherwise, try each interpreter until we find one that satisfies + # VERSION. + AC_CACHE_CHECK([for a Python interpreter with version >= $1], + [am_cv_pathless_PYTHON],[ + for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do + test "$am_cv_pathless_PYTHON" = none && break + AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) + done]) + # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. + if test "$am_cv_pathless_PYTHON" = none; then + PYTHON=: + else + AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) + fi + am_display_PYTHON=$am_cv_pathless_PYTHON + fi + ]) + + if test "$PYTHON" = :; then + dnl Run any user-specified action, or abort. + m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) + else + + dnl Query Python for its version number. Getting [:3] seems to be + dnl the best way to do this; it's what "site.py" does in the standard + dnl library. + + AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], + [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) + AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) + + dnl Use the values of $prefix and $exec_prefix for the corresponding + dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made + dnl distinct variables so they can be overridden if need be. However, + dnl general consensus is that you shouldn't need this ability. + + AC_SUBST([PYTHON_PREFIX], ['${prefix}']) + AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) + + dnl At times (like when building shared libraries) you may want + dnl to know which OS platform Python thinks this is. + + AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], + [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) + AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) + + # Just factor out some code duplication. + am_python_setup_sysconfig="\ +import sys +# Prefer sysconfig over distutils.sysconfig, for better compatibility +# with python 3.x. See automake bug#10227. +try: + import sysconfig +except ImportError: + can_use_sysconfig = 0 +else: + can_use_sysconfig = 1 +# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: +# +try: + from platform import python_implementation + if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7': + can_use_sysconfig = 0 +except ImportError: + pass" + + dnl Set up 4 directories: + + dnl pythondir -- where to install python scripts. This is the + dnl site-packages directory, not the python standard library + dnl directory like in previous automake betas. This behavior + dnl is more consistent with lispdir.m4 for example. + dnl Query distutils for this directory. + AC_CACHE_CHECK([for $am_display_PYTHON script directory], + [am_cv_python_pythondir], + [if test "x$prefix" = xNONE + then + am_py_prefix=$ac_default_prefix + else + am_py_prefix=$prefix + fi + am_cv_python_pythondir=`$PYTHON -c " +$am_python_setup_sysconfig +if can_use_sysconfig: + sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) +else: + from distutils import sysconfig + sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') +sys.stdout.write(sitedir)"` + case $am_cv_python_pythondir in + $am_py_prefix*) + am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` + am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` + ;; + *) + case $am_py_prefix in + /usr|/System*) ;; + *) + am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages + ;; + esac + ;; + esac + ]) + AC_SUBST([pythondir], [$am_cv_python_pythondir]) + + dnl pkgpythondir -- $PACKAGE directory under pythondir. Was + dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is + dnl more consistent with the rest of automake. + + AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) + + dnl pyexecdir -- directory for installing python extension modules + dnl (shared libraries) + dnl Query distutils for this directory. + AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], + [am_cv_python_pyexecdir], + [if test "x$exec_prefix" = xNONE + then + am_py_exec_prefix=$am_py_prefix + else + am_py_exec_prefix=$exec_prefix + fi + am_cv_python_pyexecdir=`$PYTHON -c " +$am_python_setup_sysconfig +if can_use_sysconfig: + sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) +else: + from distutils import sysconfig + sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') +sys.stdout.write(sitedir)"` + case $am_cv_python_pyexecdir in + $am_py_exec_prefix*) + am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` + am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` + ;; + *) + case $am_py_exec_prefix in + /usr|/System*) ;; + *) + am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages + ;; + esac + ;; + esac + ]) + AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) + + dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) + + AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) + + dnl Run any user-specified action. + $2 + fi + +]) + + +# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +# --------------------------------------------------------------------------- +# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. +# Run ACTION-IF-FALSE otherwise. +# This test uses sys.hexversion instead of the string equivalent (first +# word of sys.version), in order to cope with versions such as 2.2c1. +# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). +AC_DEFUN([AM_PYTHON_CHECK_VERSION], + [prog="import sys +# split strings by '.' and convert to numeric. Append some zeros +# because we need at least 4 digits for the hex conversion. +# map returns an iterator in Python 3.0 and a list in 2.x +minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] +minverhex = 0 +# xrange is not present in Python 3.0 and range returns an iterator +for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] +sys.exit(sys.hexversion < minverhex)" + AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4macros/attributes.m4]) +m4_include([m4macros/glibtests.m4]) +m4_include([m4macros/gtk-doc.m4]) +m4_include([m4macros/libtool.m4]) +m4_include([m4macros/ltoptions.m4]) +m4_include([m4macros/ltsugar.m4]) +m4_include([m4macros/ltversion.m4]) +m4_include([m4macros/lt~obsolete.m4]) +m4_include([acinclude.m4]) diff --git a/build/Makefile-newvs.am b/build/Makefile-newvs.am index e63b15f..97b2459 100644 --- a/build/Makefile-newvs.am +++ b/build/Makefile-newvs.am @@ -1,37 +1,45 @@ # Centralized autotools file -# Create the Visual Studio 2012/2013 project files +# Create the Visual Studio 2012/2013/2015 project files # from the Visual Studio 2010 project files +# This autotools file, from GLib, can be used in other projects +# that have Visual Studio build support, and is copied into +# $(srcroot)/build/. + # Author: Fan, Chun-wei # November 05, 2012 -# MSVC_SLN: name of root project - -MSVC_FORMAT_VER=$(shell echo $$(expr $(MSVC_VER) + 1)) - -$(MSVC_SLN).sln: $(top_srcdir)/build/win32/vs10/$(MSVC_SLN).sln create_vcxproj copy_filters create_props - cat $(top_srcdir)/build/win32/vs10/$(MSVC_SLN).sln | sed 's/11\.00/$(MSVC_FORMAT_VER)\.00/g' | sed 's/2010/$(MSVC_VER_LONG)/g' > $(top_builddir)/build/win32/vs$(MSVC_VER)/$(MSVC_SLN).sln - -README.txt: $(top_srcdir)/build/win32/vs10/README.txt - cat $(top_srcdir)/build/win32/vs10/README.txt | sed 's/vs10/vs$(MSVC_VER)/g' | sed 's/VS10/VS$(MSVC_VER)/g' > $(top_builddir)/build/win32/vs$(MSVC_VER)/README.txt - -create_vcxproj: - for F in `(cd $(top_builddir)/build/win32/vs10 && ls *.vcxproj)`; do \ - case $$F in \ - *) cat $(top_builddir)/build/win32/vs10/$$F | sed 's/v100/v$(MSVC_VER)0/g' > $(top_builddir)/build/win32/vs$(MSVC_VER)/$$F \ - ;; \ - esac; \ - done - -create_props: - for F in `(cd $(top_builddir)/build/win32/vs10 && ls *.props)`; do \ - case $$F in \ - *) cat $(top_builddir)/build/win32/vs10/$$F | sed 's/10<\/VSVer>/$(MSVC_VER)<\/VSVer>/g' > $(top_builddir)/build/win32/vs$(MSVC_VER)/$$F \ - ;; \ - esac; \ - done - -copy_filters: - cp $(top_srcdir)/build/win32/vs10/*.vcxproj.filters $(top_builddir)/build/win32/vs$(MSVC_VER)/ - - +# MSVC_VER_LONG: Long Version of Visual Studio (2012, 2013, 14 and so on) +# MSVC_VER: Short Version of Visual Studio (11 for 2012, 12 for 2013, 14 for 2015 and so on) +# MSVC_FORMAT_VER: Use 12 for MSVC 2012 through 2015 + +%.sln: + sed 's/11\.00/$(MSVC_FORMAT_VER)\.00/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + sed 's/2010/$(MSVC_VER_LONG)/g' < $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@ + rm $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + +%.txt: + sed 's/vs10/vs$(MSVC_VER)/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + sed 's/VS10/VS$(MSVC_VER)/g' < $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@ + rm $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + +%.vcxproj: + if test -e $(top_srcdir)/build/win32/vs10/$@; then \ + sed 's/v100/v$(MSVC_VER)0/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + else \ + sed 's/v100/v$(MSVC_VER)0/g' < $(top_builddir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + fi + +%.props: + if test -e $(top_srcdir)/build/win32/vs10/$@; then \ + sed 's/10<\/VSVer>/$(MSVC_VER)<\/VSVer>/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + else \ + sed 's/10<\/VSVer>/$(MSVC_VER)<\/VSVer>/g' < $(top_builddir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + fi + +%.vcxproj.filters: + if test -e $(top_srcdir)/build/win32/vs10/$@; then \ + cp $(top_srcdir)/build/win32/vs10/$@ $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + else \ + cp $(top_builddir)/build/win32/vs10/$@ $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + fi diff --git a/build/Makefile.in b/build/Makefile.in new file mode 100644 index 0000000..6679303 --- /dev/null +++ b/build/Makefile.in @@ -0,0 +1,758 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = build +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in ChangeLog README +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = \ + win32 + +EXTRA_DIST = \ + README \ + ChangeLog + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/build/Makefile.msvcproj b/build/Makefile.msvcproj new file mode 100644 index 0000000..9449a5b --- /dev/null +++ b/build/Makefile.msvcproj @@ -0,0 +1,107 @@ +# Author: Fan, Chun-wei +# Common Autotools file used to generate Visual Studio 2008+ +# Projects from their templates + +# This autotools file, from GLib, can be used in other projects +# that have Visual Studio build support, and is copied into +# $(srcroot)/build/. + +# * Input variables: +# +# MSVCPROJS - List of Projects that should be generated +# +# * Simple tutorial +# +# Add this to Makefile.am where your library/program is built: +# include $(top_srcdir)/build/Makefile.msvcproj +# MSVCPROJS = YourProject (can be multiple projects in a single srcdir) +# YourProject_FILES = $(libyourlib_1_0_SOURCES) +# YourProject_EXCLUDES = ... # list of sources to exclude, separated by '|', wildcards allowed; use random unsed value if none +# YourProject_HEADERS_DIR = $(libyourlibincludedir) +# YourProject_HEADERS_INST = $(libyourlib_1_0_HEADERS) +# YourProject_HEADERS_EXCLUDES = ... # +# +# dist-hook: \ # (or add to it if it is already there, note the vs9 items will also call the vs10 items in the process) +# $(top_builddir)/build/win32/vs9/YourProject.vcproj \ +# $(top_builddir)/build/win32/vs9/YourProject.headers + + +# Private functions + +## Transform the MSVC project filename (no filename extensions) to something which can reference through a variable +## without automake/make complaining, eg Gtk-2.0 -> Gtk_2_0 +_proj_name=$(subst /,_,$(subst -,_,$(subst .,_,$(1)))) +_proj_path_raw:=$(subst $(abs_top_srcdir),,$(abs_srcdir)) +_proj_path=$(subst /,\\,$(_proj_path_raw)) +_proj_subdir_int=$(subst \\\\,\\,\\$(_proj_path)\\) +_proj_subdir=$(subst \\.\\,\\,$(_proj_subdir_int)) + +_proj_files_raw=$(subst /,\\,$($(_proj_name)_FILES)) +_proj_files=$(subst $(srcdir)\\,,$(subst $(builddir)\\,,$(subst $(top_builddir)\\$(_proj_path)\\,\\,$(_proj_files_raw)))) +_proj_filters=$($(_proj_name)_EXCLUDES) + +_proj_headers_raw=$(subst /,\\,$($(_proj_name)_HEADERS_INST)) +_proj_headers=$(subst $(srcdir)\\,,$(subst $(builddir)\\,,$(subst $(top_builddir)\\$(_proj_path)\\,\\,$(_proj_headers_raw)))) +_proj_headers_excludes=$($(_proj_name)_HEADERS_EXCLUDES) + +_headers_dest_posix=$(subst $(includedir),,$($(_proj_name)_HEADERS_DIR)) +_headers_destdir=$(subst /,\\,$(_headers_dest_posix)) + +# +# Creates Visual Studio 2008/2010 projects from items passed in from autotools files +# $(1) - Base Name of the MSVC project files (outputs) +# + +define msvcproj-builder + +$(top_builddir)/build/win32/vs10/$(1).vcxproj: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(top_builddir)/build/win32/vs10/$(1).vcxproj.filters: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(1).sourcefiles: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(1).vs10.sourcefiles: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(1).vs10.sourcefiles.filters: $(top_builddir)/build/win32/vs9/$(1).vcproj + +$(top_builddir)/build/win32/vs9/$(1).vcproj: + -$(RM) $(top_builddir)/build/win32/vs9/$(1).vcproj + -$(RM) $(top_builddir)/build/win32/vs10/$(1).vcxproj + -$(RM) $(top_builddir)/build/win32/vs10/$(1).vcxproj.filters + + for F in $(_proj_files); do \ + case $$$$F in \ + $(_proj_filters)) \ + ;; \ + *.c|*.cpp|*.cc|*.cxx) \ + echo ' ' >>$(1).sourcefiles && \ + echo ' ' >>$(1).vs10.sourcefiles && \ + echo ' Source Files' >>$(1).vs10.sourcefiles.filters \ + ;; \ + esac; \ + done + + + $(CPP) -P - <$(top_srcdir)/build/win32/vs9/$(1).vcprojin >$(top_builddir)/build/win32/vs9/$(1).vcproj + $(CPP) -P - <$(top_srcdir)/build/win32/vs10/$(1).vcxprojin >$(top_builddir)/build/win32/vs10/$(1).vcxproj + $(CPP) -P - <$(top_srcdir)/build/win32/vs10/$(1).vcxproj.filtersin >$(top_builddir)/build/win32/vs10/$(1).vcxproj.filters + $(RM) $(1).sourcefiles + $(RM) $(1).vs10.sourcefiles + $(RM) $(1).vs10.sourcefiles.filters + +$(top_builddir)/build/win32/vs10/$(1).vs10.headers: $(top_builddir)/build/win32/vs9/$(1).headers + +$(top_builddir)/build/win32/vs9/$(1).headers: + -$(RM) $(top_builddir)/build/win32/vs9/$(1).headers + -$(RM) $(top_builddir)/build/win32/vs10/$(1).vs10.headers + + for F in $(_proj_headers); do \ + case $$$$F in \ + $(_proj_headers_excludes)) \ + ;; \ + *.h|*.hpp|*.hh|*.hxx) \ + echo 'copy ..\..\..'$(_proj_subdir)$$$$F' $$$$(CopyDir)\include'$(_headers_destdir)'\'$$$$F' ' >>$(top_builddir)/build/win32/vs9/$(1).headers && \ + echo 'copy ..\..\..'$(_proj_subdir)$$$$F' $$$$(CopyDir)\include'$(_headers_destdir)'\'$$$$F >>$(top_builddir)/build/win32/vs10/$(1).vs10.headers \ + ;; \ + esac; \ + done + +endef + +$(foreach proj,$(MSVCPROJS),$(eval $(call msvcproj-builder,$(proj)))) diff --git a/build/win32/Makefile.am b/build/win32/Makefile.am index e7b1e63..5c2dac8 100644 --- a/build/win32/Makefile.am +++ b/build/win32/Makefile.am @@ -3,9 +3,12 @@ SUBDIRS = \ vs9 \ vs10 \ vs11 \ - vs12 + vs12 \ + vs14 EXTRA_DIST = \ + glibpc.py \ make.msc \ module.defs \ - process_in_win32.py + pc_base.py \ + replace.py diff --git a/build/win32/Makefile.in b/build/win32/Makefile.in new file mode 100644 index 0000000..619d1c9 --- /dev/null +++ b/build/win32/Makefile.in @@ -0,0 +1,766 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = build/win32 +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = \ + dirent \ + vs9 \ + vs10 \ + vs11 \ + vs12 \ + vs14 + +EXTRA_DIST = \ + glibpc.py \ + make.msc \ + module.defs \ + pc_base.py \ + replace.py + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/win32/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/win32/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/build/win32/dirent/Makefile.in b/build/win32/dirent/Makefile.in new file mode 100644 index 0000000..fcd6d90 --- /dev/null +++ b/build/win32/dirent/Makefile.in @@ -0,0 +1,579 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = build/win32/dirent +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in README +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = \ + README \ + dirent.c \ + dirent.h \ + wdirent.c \ + makefile.msc \ + dirent-zip + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/win32/dirent/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/win32/dirent/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/build/win32/glibpc.py b/build/win32/glibpc.py new file mode 100644 index 0000000..973db1a --- /dev/null +++ b/build/win32/glibpc.py @@ -0,0 +1,88 @@ +#!/usr/bin/python +# +# Utility script to generate .pc files for GLib +# for Visual Studio builds, to be used for +# building introspection files + +# Author: Fan, Chun-wei +# Date: March 10, 2016 + +import os +import sys + +from replace import replace_multi +from pc_base import BasePCItems + +def main(argv): + base_pc = BasePCItems() + + base_pc.setup(argv) + pkg_replace_items = {'@G_THREAD_CFLAGS@': '', + '@G_THREAD_LIBS@': '', + '@CARBON_LIBS@': '', + '@COCOA_LIBS@': ''} + + glib_replace_items = {'glib-genmarshal': '${exec_prefix}/bin/glib-genmarshal', + 'glib-mkenums': 'perl ${exec_prefix}/bin/glib-mkenums', + 'gobject-query': '${exec_prefix}/bin/gobject-query', + '@PCRE_REQUIRES@': '', + '@INTLLIBS@': '-lintl', + '@G_LIBS_EXTRA@': '', + '@PCRE_LIBS@': '', + '@ICONV_LIBS@': '-liconv', + '@GLIB_EXTRA_CFLAGS@': ''} + + pkg_replace_items.update(base_pc.base_replace_items) + + glib_replace_items.update(pkg_replace_items) + + # Generate glib-2.0.pc + replace_multi(base_pc.top_srcdir + '/glib-2.0.pc.in', + base_pc.srcdir + '/glib-2.0.pc', + glib_replace_items) + + # Generate gthread-2.0.pc + replace_multi(base_pc.top_srcdir + '/gthread-2.0.pc.in', + base_pc.srcdir + '/gthread-2.0.pc', + pkg_replace_items) + + # Generate gmodule*-2.0.pc + gmodule_replace_items = {'@G_MODULE_SUPPORTED@': 'yes', + '@G_MODULE_LDFLAGS@': '', + '@G_MODULE_LIBS@': ''} + gmodule_replace_items.update(pkg_replace_items) + replace_multi(base_pc.top_srcdir + '/gmodule-2.0.pc.in', + base_pc.srcdir + '/gmodule-2.0.pc', + gmodule_replace_items) + replace_multi(base_pc.top_srcdir + '/gmodule-export-2.0.pc.in', + base_pc.srcdir + '/gmodule-export-2.0.pc', + gmodule_replace_items) + replace_multi(base_pc.top_srcdir + '/gmodule-no-export-2.0.pc.in', + base_pc.srcdir + '/gmodule-no-export-2.0.pc', + gmodule_replace_items) + + # Generate gobject-2.0.pc + gobject_replace_items = {'@LIBFFI_LIBS@': ''} + gobject_replace_items.update(pkg_replace_items) + replace_multi(base_pc.top_srcdir + '/gobject-2.0.pc.in', + base_pc.srcdir + '/gobject-2.0.pc', + gobject_replace_items) + + # Generate gio*-2.0.pc + gio_replace_items = {'@GIO_MODULE_DIR@': '${exec_prefix}/bin/gio/modules', + '@ZLIB_LIBS@': '-lzlib1', + '@NETWORK_LIBS@': '-lws2_32', + '@SELINUX_LIBS@': '', + 'glib-compile-schemas': '${exec_prefix}/bin/glib-compile-schemas', + 'glib-compile-resources': '${exec_prefix}/bin/glib-compile-resources', + 'gdbus-codegen': 'python ${exec_prefix}/bin/gdbus-codegen'} + gio_replace_items.update(pkg_replace_items) + replace_multi(base_pc.top_srcdir + '/gio-2.0.pc.in', + base_pc.srcdir + '/gio-2.0.pc', + gio_replace_items) + replace_multi(base_pc.top_srcdir + '/gio-windows-2.0.pc.in', + base_pc.srcdir + '/gio-windows-2.0.pc', + pkg_replace_items) + +if __name__ == '__main__': + sys.exit(main(sys.argv)) diff --git a/build/win32/pc_base.py b/build/win32/pc_base.py new file mode 100644 index 0000000..80f9884 --- /dev/null +++ b/build/win32/pc_base.py @@ -0,0 +1,107 @@ +#!/usr/bin/python +# +# Simple utility script to generate the basic info +# needed in a .pc (pkg-config) file, used especially +# for introspection purposes + +# This can be used in various projects where +# there is the need to generate .pc files, +# and is copied from GLib's $(srcroot)/build/win32 + +# Author: Fan, Chun-wei +# Date: March 10, 2016 + +import os +import sys +import argparse + +class BasePCItems: + def __init__(self): + self.base_replace_items = {} + self.exec_prefix = '' + self.includedir = '' + self.libdir = '' + self.prefix = '' + self.srcdir = os.path.dirname(__file__) + self.top_srcdir = self.srcdir + '\\..\\..' + self.version = '' + + def setup(self, argv): + parser = argparse.ArgumentParser(description='Setup basic .pc file info') + parser.add_argument('--prefix', help='prefix of the installed library', + required=True) + parser.add_argument('--exec-prefix', + help='prefix of the installed programs, \ + if different from the prefix') + parser.add_argument('--includedir', + help='includedir of the installed library, \ + if different from ${prefix}/include') + parser.add_argument('--libdir', + help='libdir of the installed library, \ + if different from ${prefix}/lib') + parser.add_argument('--version', help='Version of the package', + required=True) + args = parser.parse_args() + + self.version = args.version + + # check whether the prefix and exec_prefix are valid + if not os.path.exists(args.prefix): + raise SystemExit('Specified prefix \'%s\' is invalid' % args.prefix) + + # check and setup the exec_prefix + if getattr(args, 'exec_prefix', None) is None: + input_exec_prefix = args.prefix + else: + input_exec_prefix = args.exec_prefix + if not os.path.exists(input_exec_prefix): + raise SystemExit('Specified exec-prefix \'%s\' is invalid' % + input_exec_prefix) + + + # check and setup the includedir + if getattr(args, 'includedir', None) is None: + self.includedir = '${prefix}/include' + else: + if args.includedir.startswith('${prefix}'): + includedir_use_shorthand = True + input_includedir = args.prefix + args.includedir[len('${prefix}'):] + else: + includedir_use_shorthand = False + input_includedir = args.includedir + if not os.path.exists(input_includedir): + raise SystemExit('Specified includedir \'%s\' is invalid' % + args.includedir) + if includedir_use_shorthand is True: + self.includedir = args.includedir.replace('\\','/') + else: + self.includedir = os.path.abspath(input_includedir).replace('\\','/') + + # check and setup the libdir + if getattr(args, 'libdir', None) is None: + self.libdir = '${prefix}/lib' + else: + if args.libdir.startswith('${prefix}'): + libdir_use_shorthand = True + input_libdir = args.prefix + args.libdir[len('${prefix}'):] + else: + libdir_use_shorthand = False + input_libdir = args.libdir + if not os.path.exists(input_libdir): + raise SystemExit('Specified libdir \'%s\' is invalid' % + args.libdir) + if libdir_use_shorthand is True: + self.libdir = args.libdir.replace('\\','/') + else: + self.libdir = os.path.abspath(input_libdir).replace('\\','/') + + # use absolute paths for prefix and exec_prefix + self.prefix = os.path.abspath(args.prefix).replace('\\','/') + self.exec_prefix = os.path.abspath(input_exec_prefix).replace('\\','/') + + # setup dictionary for replacing items in *.pc.in + self.base_replace_items.update({'@VERSION@': self.version}) + self.base_replace_items.update({'@prefix@': self.prefix}) + self.base_replace_items.update({'@exec_prefix@': self.exec_prefix}) + self.base_replace_items.update({'@libdir@': self.libdir}) + self.base_replace_items.update({'@includedir@': self.includedir}) diff --git a/build/win32/process_in_win32.py b/build/win32/process_in_win32.py deleted file mode 100644 index 62a8e3a..0000000 --- a/build/win32/process_in_win32.py +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/python -# vim: encoding=utf-8 -#expand *.in scripts for MSVC Builds -import os -import sys -import re -import string -import argparse - -def get_version(srcroot): - ver = {} - RE_VERSION = re.compile(r'^m4_define\(\[(glib_\w+)\],\s*\[(\d+)\]\)') - with open(os.path.join(srcroot, 'configure.ac'), 'r') as ac: - for i in ac: - mo = RE_VERSION.search(i) - if mo: - ver[mo.group(1).upper()] = int(mo.group(2)) - ver['GLIB_BINARY_AGE'] = 100 * ver['GLIB_MINOR_VERSION'] + ver['GLIB_MICRO_VERSION'] - ver['GLIB_VERSION'] = '%d.%d.%d' % (ver['GLIB_MAJOR_VERSION'], - ver['GLIB_MINOR_VERSION'], - ver['GLIB_MICRO_VERSION']) - ver['LT_RELEASE'] = '%d.%d' % (ver['GLIB_MAJOR_VERSION'], ver['GLIB_MINOR_VERSION']) - ver['LT_CURRENT'] = 100 * ver['GLIB_MINOR_VERSION'] + ver['GLIB_MICRO_VERSION'] - ver['GLIB_INTERFACE_AGE'] - ver['LT_REVISION'] = ver['GLIB_INTERFACE_AGE'] - ver['LT_AGE'] = ver['GLIB_BINARY_AGE'] - ver['GLIB_INTERFACE_AGE'] - ver['LT_CURRENT_MINUS_AGE'] = ver['LT_CURRENT'] - ver['LT_AGE'] - return ver - -def process_in(src, dest, vars): - RE_VARS = re.compile(r'@(\w+?)@') - with open(src, 'r') as s: - with open(dest, 'w') as d: - for i in s: - i = RE_VARS.sub(lambda x: str(vars[x.group(1)]), i) - d.write(i) - -def get_srcroot(): - if not os.path.isabs(__file__): - path = os.path.abspath(__file__) - else: - path = __file__ - dirname = os.path.dirname(path) - return os.path.abspath(os.path.join(dirname, '..', '..')) - -def main(argv): - prog_desc = 'Create Various autogenerated Win32-specific Source Files' - parser = argparse.ArgumentParser(description=prog_desc) - parser.add_argument('--glib-mkenums', dest='mkenums', action='store_const', - const=1, - help='Generate glib-mkenums') - - parser.add_argument('--perl', dest='perl', metavar='PATH', - default='C:\\Perl\\bin\\perl.exe', - action='store', - help='path to the perl interpretor (default: C:\\Perl\\bin\\perl.exe)') - - args = parser.parse_args() - srcroot = get_srcroot() - ver = get_version(srcroot) - - no_args = True - - if args.mkenums is not None: - # Generate glib-mkenums script from glib-mkenums - ver.update({'PERL_PATH': args.perl}) - - target = os.path.join(srcroot, 'gobject', 'glib-mkenums') - process_in(target + '.in', - target, - ver) - no_args = False - - if no_args is True: - raise SystemExit('Action argument required. Please see %s --help for details.' % __file__) - -if __name__ == '__main__': - sys.exit(main(sys.argv)) diff --git a/build/win32/replace.py b/build/win32/replace.py new file mode 100644 index 0000000..a81bab9 --- /dev/null +++ b/build/win32/replace.py @@ -0,0 +1,109 @@ +#!/usr/bin/python +# +# Simple utility script to manipulate +# certain types of strings in a file + +# This can be used in various projects where +# there is the need to replace strings in files, +# and is copied from GLib's $(srcroot)/build/win32 + +# Author: Fan, Chun-wei +# Date: September 03, 2014 + +import os +import sys +import re +import string +import argparse + +valid_actions = ['remove-prefix', + 'replace-var', + 'replace-str', + 'remove-str'] + +def replace_multi(src, dest, replace_items): + with open(src, 'r') as s: + with open(dest, 'w') as d: + for line in s: + replace_dict = dict((re.escape(key), value) \ + for key, value in replace_items.items()) + replace_pattern = re.compile("|".join(replace_dict.keys())) + d.write(replace_pattern.sub(lambda m: \ + replace_dict[re.escape(m.group(0))], line)) + +def replace(src, dest, instring, outstring): + replace_item = {instring: outstring} + replace_multi(src, dest, replace_item) + +def check_required_args(args, params): + for param in params: + if getattr(args, param, None) is None: + raise SystemExit('%s: error: --%s argument is required' % (__file__, param)) + +def warn_ignored_args(args, params): + for param in params: + if getattr(args, param, None) is not None: + print('%s: warning: --%s argument is ignored' % (__file__, param)) + +def main(argv): + + parser = argparse.ArgumentParser(description='Process strings in a file.') + parser.add_argument('-a', + '--action', + help='Action to carry out. Can be one of:\n' + 'remove-prefix\n' + 'replace-var\n' + 'replace-str\n' + 'remove-str', + choices=valid_actions) + parser.add_argument('-i', '--input', help='Input file') + parser.add_argument('-o', '--output', help='Output file') + parser.add_argument('--instring', help='String to replace or remove') + parser.add_argument('--var', help='Autotools variable name to replace') + parser.add_argument('--outstring', + help='New String to replace specified string or variable') + parser.add_argument('--removeprefix', help='Prefix of string to remove') + + args = parser.parse_args() + + input_string = '' + output_string = '' + + # We must have action, input, output for all operations + check_required_args(args, ['action','input','output']) + + # Build the arguments by the operation that is to be done, + # to be fed into replace() + + # Get rid of prefixes from a string + if args.action == 'remove-prefix': + check_required_args(args, ['instring','removeprefix']) + warn_ignored_args(args, ['outstring','var']) + input_string = args.removeprefix + args.instring + output_string = args.instring + + # Replace an m4-style variable (those surrounded by @...@) + if args.action == 'replace-var': + check_required_args(args, ['var','outstring']) + warn_ignored_args(args, ['instring','removeprefix']) + input_string = '@' + args.var + '@' + output_string = args.outstring + + # Replace a string + if args.action == 'replace-str': + check_required_args(args, ['instring','outstring']) + warn_ignored_args(args, ['var','removeprefix']) + input_string = args.instring + output_string = args.outstring + + # Remove a string + if args.action == 'remove-str': + check_required_args(args, ['instring']) + warn_ignored_args(args, ['var','outstring','removeprefix']) + input_string = args.instring + output_string = '' + + replace(args.input, args.output, input_string, output_string) + +if __name__ == '__main__': + sys.exit(main(sys.argv)) diff --git a/build/win32/setup.py b/build/win32/setup.py deleted file mode 100644 index ef732c6..0000000 --- a/build/win32/setup.py +++ /dev/null @@ -1,335 +0,0 @@ -#!/usr/bin/python -# vim: encoding=utf-8 -#expand *.in files -#this script is only intended for building from git, not for building from the released tarball, which already includes all necessary files -import os -import sys -import re -import string -import subprocess -import optparse - -from process_in_win32 import get_version, process_in, get_srcroot - -def process_include(src, dest, includes): - RE_INCLUDE = re.compile(r'^\s*#include\s+"(.*)"') - with open(src, 'r') as s: - with open(dest, 'w') as d: - for i in s: - mo = RE_INCLUDE.search(i) - if mo: - target = '' - for j in includes: - #print "searching in ", j - if mo.group(1) in os.listdir(j): - target = os.path.join(j, mo.group(1)) - break - if not target: - raise Exception("Couldn't fine include file %s" % mo.group(1)) - else: - with open(target, 'r') as t: - for inc in t.readlines(): - d.write(inc) - else: - d.write(i) - -def generate_libgio_sourcefiles(srcroot, dest, stype): - vars = read_vars_from_AM(os.path.join(srcroot, 'gio', 'Makefile.am'), - vars = {'top_srcdir': srcroot}, - conds = {'OS_WIN32': True}, - filters = ['libgio_2_0_la_SOURCES', 'win32_more_sources_for_vcproj']) - - files = vars['libgio_2_0_la_SOURCES'].split() + \ - vars['win32_more_sources_for_vcproj'].split() - - sources = [i for i in files \ - if i != 'gdesktopappinfo.c' and \ - not (i.startswith('gunix') and i.endswith('.c')) \ - and i.endswith('.c') ] - if stype == '9': - with open(dest, 'w') as d: - for i in sources: - d.write('\t\t\t\n') - elif stype == '10': - with open(dest, 'w') as d: - for i in sources: - d.write('\t\t\t\n') - elif stype == '10f': - with open(dest, 'w') as d: - for i in sources: - d.write('\t\t\tSource Files\n') - else: - raise Exception("Must specify project type (9, 10 or 10f)") - -def generate_libgio_enumtypes(srcroot, perl): - vars = read_vars_from_AM(os.path.join(srcroot, 'gio', 'Makefile.am'), - vars = {'top_srcdir': srcroot}, - conds = {'OS_WIN32': True}, - filters = ['gio_headers']) - cwd = os.getcwd() - os.chdir(os.path.join(srcroot, 'gio')) - for suffix in ['.c', '.h']: - cmd = [perl, os.path.join(srcroot, 'gobject', 'glib-mkenums'), - '--template', 'gioenumtypes' + suffix + '.template'] + vars['gio_headers'].split() - with open('gioenumtypes' + suffix, 'w') as d: - subprocess.Popen(cmd, stdout = d).communicate() - os.chdir(cwd) -def generate_libglib_sourcefiles(srcroot, dest, stype): - vars = read_vars_from_AM(os.path.join(srcroot, 'glib', 'Makefile.am'), - vars = {'top_srcdir': srcroot}, - conds = {'OS_WIN32': True, - 'ENABLE_REGEX': True}, - filters = ['libglib_2_0_la_SOURCES']) - - files = vars['libglib_2_0_la_SOURCES'].split() - - sources = [i for i in files \ - if not (i.endswith('-gcc.c') or i.endswith('-unix.c')) \ - and i.endswith('.c') ] - if stype == '9': - with open(dest, 'w') as d: - for i in sources: - d.write('\t\t\t\n') - elif stype == '10': - with open(dest, 'w') as d: - for i in sources: - d.write('\t\t\t\n') - elif stype == '10f': - with open(dest, 'w') as d: - for i in sources: - d.write('\t\t\tSource Files\n') - else: - raise Exception("Must specify project type (9, 10 or 10f)") - -def generate_libgobject_sourcefiles(srcroot, dest, stype): - vars = read_vars_from_AM(os.path.join(srcroot, 'gobject', 'Makefile.am'), - vars = {'top_srcdir': srcroot}, - conds = {'OS_WIN32': True}, - filters = ['libgobject_2_0_la_SOURCES']) - - files = vars['libgobject_2_0_la_SOURCES'].split() - - sources = [i for i in files if i.endswith('.c') ] - if stype == '9': - with open(dest, 'w') as d: - for i in sources: - d.write('\t\t\t\n') - elif stype == '10': - with open(dest, 'w') as d: - for i in sources: - d.write('\t\t\t\n') - elif stype == '10f': - with open(dest, 'w') as d: - for i in sources: - d.write('\t\t\tSource Files\n') - else: - raise Exception("Must specify project type (9, 10 or 10f)") - -def read_vars_from_AM(path, vars = {}, conds = {}, filters = None): - ''' - path: path to the Makefile.am - vars: predefined variables - conds: condition variables for Makefile - filters: if None, all variables defined are returned, - otherwise, it is a list contains that variables should be returned - ''' - cur_vars = vars.copy() - RE_AM_VAR_REF = re.compile(r'\$\((\w+?)\)') - RE_AM_VAR = re.compile(r'^\s*(\w+)\s*=(.*)$') - RE_AM_INCLUDE = re.compile(r'^\s*include\s+(\w+)') - RE_AM_CONTINUING = re.compile(r'\\\s*$') - RE_AM_IF = re.compile(r'^\s*if\s+(\w+)') - RE_AM_ELSE = re.compile(r'^\s*else') - RE_AM_ENDIF = re.compile(r'^\s*endif') - def am_eval(cont): - return RE_AM_VAR_REF.sub(lambda x: cur_vars.get(x.group(1), ''), cont) - with open(path, 'r') as f: - contents = f.readlines() - #combine continuing lines - i = 0 - ncont = [] - while i < len(contents): - line = contents[i] - if RE_AM_CONTINUING.search(line): - line = RE_AM_CONTINUING.sub('', line) - j = i + 1 - while j < len(contents) and RE_AM_CONTINUING.search(contents[j]): - line += RE_AM_CONTINUING.sub('', contents[j]) - j += 1 - else: - if j < len(contents): - line += contents[j] - i = j - else: - i += 1 - ncont.append(line) - - #include, var define, var evaluation - i = -1 - skip = False - oldskip = [] - while i < len(ncont) - 1: - i += 1 - line = ncont[i] - mo = RE_AM_IF.search(line) - if mo: - oldskip.append(skip) - skip = False if mo.group(1) in conds and conds[mo.group(1)] \ - else True - continue - mo = RE_AM_ELSE.search(line) - if mo: - skip = not skip - continue - mo = RE_AM_ENDIF.search(line) - if mo: - skip = oldskip.pop() - continue - if not skip: - mo = RE_AM_INCLUDE.search(line) - if mo: - cur_vars.update(read_vars_from_AM(am_eval(mo.group(1)), cur_vars, conds, None)) - continue - mo = RE_AM_VAR.search(line) - if mo: - cur_vars[mo.group(1)] = am_eval(mo.group(2).strip()) - continue - - #filter: - if filters != None: - ret = {} - for i in filters: - ret[i] = cur_vars.get(i, '') - return ret - else: - return cur_vars - -def main(argv): - parser = optparse.OptionParser() - parser.add_option('-p', '--perl', dest='perl', metavar='PATH', default='C:\\Perl\\bin\\perl.exe', action='store', help='path to the perl interpretor (default: C:\\Perl\\bin\\perl.exe)') - opt, args = parser.parse_args(argv) - srcroot = get_srcroot() - #print 'srcroot', srcroot - ver = get_version(srcroot) - #print 'ver', ver - config_vars = ver.copy() - config_vars['GETTEXT_PACKAGE'] = 'Glib' - process_in(os.path.join(srcroot, 'config.h.win32.in'), - os.path.join(srcroot, 'config.h'), - config_vars) - glibconfig_vars = ver.copy() - glibconfig_vars['GLIB_WIN32_STATIC_COMPILATION_DEFINE'] = '' - process_in(os.path.join(srcroot, 'glib', 'glibconfig.h.win32.in'), - os.path.join(srcroot, 'glib', 'glibconfig.h'), - glibconfig_vars) - - for submodule in ['glib', 'gobject', 'gthread', 'gmodule', 'gio']: - process_in(os.path.join(srcroot, submodule, submodule + '.rc.in'), - os.path.join(srcroot, submodule, submodule + '.rc'), - ver) - - #------------ submodule gobject ------------------- - generate_libglib_sourcefiles(srcroot, - os.path.join(srcroot, 'build', 'win32', 'libglib.sourcefiles'), '9') - generate_libglib_sourcefiles(srcroot, - os.path.join(srcroot, 'build', 'win32', 'libglib.vs10.sourcefiles'), '10') - generate_libglib_sourcefiles(srcroot, - os.path.join(srcroot, 'build', 'win32', 'libglib.vs10.sourcefiles.filters'), '10f') - process_include(os.path.join(srcroot, 'build', 'win32', 'vs9', 'glib.vcprojin'), - os.path.join(srcroot, 'build', 'win32', 'vs9', 'glib.vcproj'), - includes = [os.path.join(srcroot, 'build', 'win32')]) - process_include(os.path.join(srcroot, 'build', 'win32', 'vs10', 'glib.vcxprojin'), - os.path.join(srcroot, 'build', 'win32', 'vs10', 'glib.vcxproj'), - includes = [os.path.join(srcroot, 'build', 'win32')]) - process_include(os.path.join(srcroot, 'build', 'win32', 'vs10', 'glib.vcxproj.filtersin'), - os.path.join(srcroot, 'build', 'win32', 'vs10', 'glib.vcxproj.filters'), - includes = [os.path.join(srcroot, 'build', 'win32')]) - os.unlink(os.path.join(srcroot, 'build', 'win32', 'libglib.sourcefiles')) - os.unlink(os.path.join(srcroot, 'build', 'win32', 'libglib.vs10.sourcefiles')) - os.unlink(os.path.join(srcroot, 'build', 'win32', 'libglib.vs10.sourcefiles.filters')) - with open(os.path.join(srcroot, 'glib', 'gspawn-win32-helper-console.c'), 'w') as c: - c.write('#define HELPER_CONSOLE\n') - c.write('#include "gspawn-win32-helper.c"\n') - with open(os.path.join(srcroot, 'glib', 'gspawn-win64-helper-console.c'), 'w') as c: - c.write('#define HELPER_CONSOLE\n') - c.write('#include "gspawn-win32-helper.c"\n') - with open(os.path.join(srcroot, 'glib', 'gspawn-win64-helper.c'), 'w') as c: - c.write('#include "gspawn-win32-helper.c"\n') - #------------ end of submodule glib ------------------- - - #------------ submodule gobject ------------------- - mkenums_vars = ver.copy() - mkenums_vars.update({'PERL_PATH': opt.perl}) - process_in(os.path.join(srcroot, 'gobject', 'glib-mkenums.in'), - os.path.join(srcroot, 'gobject', 'glib-mkenums'), - mkenums_vars) - - #gmarshal.strings - cwd = os.getcwd() - os.chdir(os.path.join(srcroot, 'gobject')) - with open(os.path.join(srcroot, 'gobject', 'gmarshal.strings'), 'w') as d: - with open(os.path.join(srcroot, 'gobject', 'gmarshal.list'), 'r') as s: - for i in s: - if i[0] not in string.ascii_uppercase: #^[A-Z] - continue - line = '"g_cclosure_marshal_' # s/^/"g_cclosure_marshal_/ - for c in i: - if c == ':': - line += '__' # s/:/__ - elif c == ',': - line += '_' # s/,/_ - elif c not in '\r\n': - line += c - d.write(line + '",\n') - #subprocess.Popen([opt.perl, 'marshal-genstrings.pl'], stdout=d).communicate() - os.chdir(cwd) - - generate_libgobject_sourcefiles(srcroot, - os.path.join(srcroot, 'build', 'win32', 'libgobject.sourcefiles'), '9') - generate_libgobject_sourcefiles(srcroot, - os.path.join(srcroot, 'build', 'win32', 'libgobject.vs10.sourcefiles'), '10') - generate_libgobject_sourcefiles(srcroot, - os.path.join(srcroot, 'build', 'win32', 'libgobject.vs10.sourcefiles.filters'), '10f') - process_include(os.path.join(srcroot, 'build', 'win32', 'vs9', 'gobject.vcprojin'), - os.path.join(srcroot, 'build', 'win32', 'vs9', 'gobject.vcproj'), - includes = [os.path.join(srcroot, 'build', 'win32')]) - process_include(os.path.join(srcroot, 'build', 'win32', 'vs10', 'gobject.vcxprojin'), - os.path.join(srcroot, 'build', 'win32', 'vs10', 'gobject.vcxproj'), - includes = [os.path.join(srcroot, 'build', 'win32')]) - process_include(os.path.join(srcroot, 'build', 'win32', 'vs10', 'gobject.vcxproj.filtersin'), - os.path.join(srcroot, 'build', 'win32', 'vs10', 'gobject.vcxproj.filters'), - includes = [os.path.join(srcroot, 'build', 'win32')]) - os.unlink(os.path.join(srcroot, 'build', 'win32', 'libgobject.sourcefiles')) - os.unlink(os.path.join(srcroot, 'build', 'win32', 'libgobject.vs10.sourcefiles')) - os.unlink(os.path.join(srcroot, 'build', 'win32', 'libgobject.vs10.sourcefiles.filters')) - #------------ end of submodule gobject ------------------- - - #------------ submodule gio ------------------- - #depends on glib-mkenums - generate_libgio_sourcefiles(srcroot, - os.path.join(srcroot, 'build', 'win32', 'libgio.sourcefiles'), '9') - generate_libgio_sourcefiles(srcroot, - os.path.join(srcroot, 'build', 'win32', 'libgio.vs10.sourcefiles'), '10') - generate_libgio_sourcefiles(srcroot, - os.path.join(srcroot, 'build', 'win32', 'libgio.vs10.sourcefiles.filters'), '10f') - process_include(os.path.join(srcroot, 'build', 'win32', 'vs9', 'gio.vcprojin'), - os.path.join(srcroot, 'build', 'win32', 'vs9', 'gio.vcproj'), - includes = [os.path.join(srcroot, 'build', 'win32')]) - process_include(os.path.join(srcroot, 'build', 'win32', 'vs10', 'gio.vcxprojin'), - os.path.join(srcroot, 'build', 'win32', 'vs10', 'gio.vcxproj'), - includes = [os.path.join(srcroot, 'build', 'win32')]) - process_include(os.path.join(srcroot, 'build', 'win32', 'vs10', 'gio.vcxproj.filtersin'), - os.path.join(srcroot, 'build', 'win32', 'vs10', 'gio.vcxproj.filters'), - includes = [os.path.join(srcroot, 'build', 'win32')]) - os.unlink(os.path.join(srcroot, 'build', 'win32', 'libgio.sourcefiles')) - os.unlink(os.path.join(srcroot, 'build', 'win32', 'libgio.vs10.sourcefiles')) - os.unlink(os.path.join(srcroot, 'build', 'win32', 'libgio.vs10.sourcefiles.filters')) - generate_libgio_enumtypes(srcroot, opt.perl) - #------------ end of submodule gio ------------------- - - #------------ submodule gmodule ------------------- - #------------ end of submodule gmodule ------------------- - return 0 - -if __name__ == '__main__': - sys.exit(main(sys.argv)) diff --git a/build/win32/vs10/.gitignore b/build/win32/vs10/.gitignore deleted file mode 100644 index f05d126..0000000 --- a/build/win32/vs10/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -gio.vcxproj -gio.vcxproj.filters -glib.vcxproj -glib.vcxproj.filters -gobject.vcxproj -gobject.vcxproj.filters diff --git a/build/win32/vs10/Makefile.am b/build/win32/vs10/Makefile.am index c972c03..096c9d0 100644 --- a/build/win32/vs10/Makefile.am +++ b/build/win32/vs10/Makefile.am @@ -1,42 +1,60 @@ +GENERATED_ITEMS = \ + glib.vcxproj \ + glib.vcxproj.filters \ + gobject.vcxproj \ + gobject.vcxproj.filters \ + gio.vcxproj \ + gio.vcxproj.filters \ + glib-compile-schemas.vcxproj \ + glib-compile-schemas.vcxproj.filters \ + glib-compile-resources.vcxproj \ + glib-compile-resources.vcxproj.filters \ + glib-version-paths.props \ + glib-install.props + +MSVC10_HEADERS_LIST = glib.vs10.headers gobject.vs10.headers gio.vs10.headers + EXTRA_DIST = \ - README.txt \ - glib.sln \ - glib.vcxproj \ - glib.vcxproj.filters \ - glib.vcxprojin \ - glib.vcxproj.filtersin \ - glib-genmarshal.vcxproj \ - glib-genmarshal.vcxproj.filters \ - gspawn-win32-helper-console.vcxproj \ - gspawn-win32-helper-console.vcxproj.filters \ - gspawn-win32-helper.vcxproj \ - gspawn-win32-helper.vcxproj.filters \ - gmodule.vcxproj \ - gmodule.vcxproj.filters \ - gobject.vcxproj \ - gobject.vcxproj.filters \ - gobject.vcxprojin \ - gobject.vcxproj.filtersin \ - gthread.vcxproj \ - gthread.vcxproj.filters \ - gio.vcxproj \ - gio.vcxproj.filters \ - gio.vcxprojin \ - gio.vcxproj.filtersin \ - glib-compile-schemas.vcxproj \ - glib-compile-schemas.vcxproj.filters \ - gsettings.vcxproj \ - gsettings.vcxproj.filters \ - glib-compile-resources.vcxproj \ - glib-compile-resources.vcxproj.filters \ - gresource.vcxproj \ - gresource.vcxproj.filters \ - gio-querymodules.vcxproj \ - gio-querymodules.vcxproj.filters \ - gdbus.vcxproj \ - gdbus.vcxproj.filters \ - glib-install.vcxproj \ + README.txt \ + glib.sln \ + glib.vcxprojin \ + glib.vcxproj.filtersin \ + glib-genmarshal.vcxproj \ + glib-genmarshal.vcxproj.filters \ + gspawn-win32-helper-console.vcxproj \ + gspawn-win32-helper-console.vcxproj.filters \ + gspawn-win32-helper.vcxproj \ + gspawn-win32-helper.vcxproj.filters \ + gmodule.vcxproj \ + gmodule.vcxproj.filters \ + gobject.vcxprojin \ + gobject.vcxproj.filtersin \ + gthread.vcxproj \ + gthread.vcxproj.filters \ + gio.vcxprojin \ + gio.vcxproj.filtersin \ + glib-compile-schemas.vcxprojin \ + glib-compile-schemas.vcxproj.filtersin \ + gsettings.vcxproj \ + gsettings.vcxproj.filters \ + glib-compile-resources.vcxprojin \ + glib-compile-resources.vcxproj.filtersin \ + gresource.vcxproj \ + gresource.vcxproj.filters \ + gio-querymodules.vcxproj \ + gio-querymodules.vcxproj.filters \ + gdbus.vcxproj \ + gdbus.vcxproj.filters \ + glib-install.vcxproj \ + glib-install.vcxproj.filters \ glib-build-defines.props \ - glib-install.props \ - glib-version-paths.props \ - glib-gen-srcs.props + glib-install.propsin \ + glib-version-paths.props.in \ + glib-gen-srcs.props \ + $(GENERATED_ITEMS) + +glib-install.props: $(top_srcdir)/build/win32/vs10/glib-install.propsin $(MSVC10_HEADERS_LIST) + $(CPP) -P - <$(top_srcdir)/build/win32/vs10/glib-install.propsin >$@ + rm $(MSVC10_HEADERS_LIST) + +DISTCLEANFILES = $(GENERATED_ITEMS) diff --git a/build/win32/vs10/Makefile.in b/build/win32/vs10/Makefile.in new file mode 100644 index 0000000..26c4bd6 --- /dev/null +++ b/build/win32/vs10/Makefile.in @@ -0,0 +1,634 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = build/win32/vs10 +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = glib-version-paths.props +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(srcdir)/glib-version-paths.props.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +GENERATED_ITEMS = \ + glib.vcxproj \ + glib.vcxproj.filters \ + gobject.vcxproj \ + gobject.vcxproj.filters \ + gio.vcxproj \ + gio.vcxproj.filters \ + glib-compile-schemas.vcxproj \ + glib-compile-schemas.vcxproj.filters \ + glib-compile-resources.vcxproj \ + glib-compile-resources.vcxproj.filters \ + glib-version-paths.props \ + glib-install.props + +MSVC10_HEADERS_LIST = glib.vs10.headers gobject.vs10.headers gio.vs10.headers +EXTRA_DIST = \ + README.txt \ + glib.sln \ + glib.vcxprojin \ + glib.vcxproj.filtersin \ + glib-genmarshal.vcxproj \ + glib-genmarshal.vcxproj.filters \ + gspawn-win32-helper-console.vcxproj \ + gspawn-win32-helper-console.vcxproj.filters \ + gspawn-win32-helper.vcxproj \ + gspawn-win32-helper.vcxproj.filters \ + gmodule.vcxproj \ + gmodule.vcxproj.filters \ + gobject.vcxprojin \ + gobject.vcxproj.filtersin \ + gthread.vcxproj \ + gthread.vcxproj.filters \ + gio.vcxprojin \ + gio.vcxproj.filtersin \ + glib-compile-schemas.vcxprojin \ + glib-compile-schemas.vcxproj.filtersin \ + gsettings.vcxproj \ + gsettings.vcxproj.filters \ + glib-compile-resources.vcxprojin \ + glib-compile-resources.vcxproj.filtersin \ + gresource.vcxproj \ + gresource.vcxproj.filters \ + gio-querymodules.vcxproj \ + gio-querymodules.vcxproj.filters \ + gdbus.vcxproj \ + gdbus.vcxproj.filters \ + glib-install.vcxproj \ + glib-install.vcxproj.filters \ + glib-build-defines.props \ + glib-install.propsin \ + glib-version-paths.props.in \ + glib-gen-srcs.props \ + $(GENERATED_ITEMS) + +DISTCLEANFILES = $(GENERATED_ITEMS) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/win32/vs10/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/win32/vs10/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +glib-version-paths.props: $(top_builddir)/config.status $(srcdir)/glib-version-paths.props.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +glib-install.props: $(top_srcdir)/build/win32/vs10/glib-install.propsin $(MSVC10_HEADERS_LIST) + $(CPP) -P - <$(top_srcdir)/build/win32/vs10/glib-install.propsin >$@ + rm $(MSVC10_HEADERS_LIST) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/build/win32/vs10/gio.vcxproj b/build/win32/vs10/gio.vcxproj new file mode 100644 index 0000000..0b45697 --- /dev/null +++ b/build/win32/vs10/gio.vcxproj @@ -0,0 +1,420 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {F3D1583C-5613-4809-BD98-7CC1C1276F92} + gio + + + + DynamicLibrary + MultiByte + true + v100 + + + DynamicLibrary + MultiByte + v100 + + + DynamicLibrary + MultiByte + true + v100 + + + DynamicLibrary + MultiByte + v100 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + _DEBUG;$(GioBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + $(GioBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + Disabled + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + _DEBUG;$(GioBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + $(GioBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {4214047c-f5c1-40b3-8369-5dced8c32770} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + + + + diff --git a/build/win32/vs10/gio.vcxproj.filters b/build/win32/vs10/gio.vcxproj.filters new file mode 100644 index 0000000..3d3c528 --- /dev/null +++ b/build/win32/vs10/gio.vcxproj.filters @@ -0,0 +1,229 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + + + Resource Files + + + + Resource Files + + + diff --git a/build/win32/vs10/gio.vcxproj.filtersin b/build/win32/vs10/gio.vcxproj.filtersin index 155a4d9..6c1abec 100644 --- a/build/win32/vs10/gio.vcxproj.filtersin +++ b/build/win32/vs10/gio.vcxproj.filtersin @@ -15,7 +15,7 @@ -#include "libgio.vs10.sourcefiles.filters" +#include "gio.vs10.sourcefiles.filters" Resource Files @@ -25,4 +25,4 @@ Resource Files - \ No newline at end of file + diff --git a/build/win32/vs10/gio.vcxprojin b/build/win32/vs10/gio.vcxprojin index da49045..fecd2ca 100644 --- a/build/win32/vs10/gio.vcxprojin +++ b/build/win32/vs10/gio.vcxprojin @@ -90,11 +90,11 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX86 @@ -114,13 +114,13 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows true true false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX86 @@ -143,11 +143,11 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX64 @@ -167,18 +167,18 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows true true false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX64 -#include "libgio.vs10.sourcefiles" +#include "gio.vs10.sourcefiles" @@ -216,4 +216,4 @@ - \ No newline at end of file + diff --git a/build/win32/vs10/glib-build-defines.props b/build/win32/vs10/glib-build-defines.props index 229ea8c..9634e5b 100644 --- a/build/win32/vs10/glib-build-defines.props +++ b/build/win32/vs10/glib-build-defines.props @@ -5,6 +5,7 @@ PCRE_STATIC;LINK_SIZE=2;MAX_NAME_SIZE=32;MAX_NAME_COUNT=10000;NEWLINE=-1;POSIX_MALLOC_THRESHOLD=10;MATCH_LIMIT=10000000;MATCH_LIMIT_RECURSION=10000000;SUPPORT_UCP;SUPPORT_UTF;SUPPORT_UTF8;G_LOG_DOMAIN="GLib-GRegex" + PCRE_EXP_DECL=__declspec(dllexport)extern;PCRE_EXP_DEFN= -UBSR_ANYCRLF -UEBCDIC LIBDIR="blah" DLL_EXPORT @@ -40,6 +41,9 @@ $(GLibBundledPCREDefines) + + $(GlibBundledPCREExportDefines) + $(GLibBundledPCREUndefs) @@ -77,4 +81,4 @@ $(WindowsNetworkingLibs) - \ No newline at end of file + diff --git a/build/win32/vs10/glib-compile-resources.vcxproj b/build/win32/vs10/glib-compile-resources.vcxproj index df94f43..52ba386 100644 --- a/build/win32/vs10/glib-compile-resources.vcxproj +++ b/build/win32/vs10/glib-compile-resources.vcxproj @@ -1,4 +1,4 @@ - + @@ -158,8 +158,8 @@ - - + + @@ -178,4 +178,4 @@ - \ No newline at end of file + diff --git a/build/win32/vs10/glib-compile-resources.vcxproj.filters b/build/win32/vs10/glib-compile-resources.vcxproj.filters index e3841d9..4b5a823 100644 --- a/build/win32/vs10/glib-compile-resources.vcxproj.filters +++ b/build/win32/vs10/glib-compile-resources.vcxproj.filters @@ -1,4 +1,4 @@ - + @@ -7,11 +7,7 @@ - - Source Files - - - Source Files - + Source Files + Source Files - \ No newline at end of file + diff --git a/build/win32/vs10/glib-compile-resources.vcxproj.filtersin b/build/win32/vs10/glib-compile-resources.vcxproj.filtersin new file mode 100644 index 0000000..68e8a5d --- /dev/null +++ b/build/win32/vs10/glib-compile-resources.vcxproj.filtersin @@ -0,0 +1,12 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + +#include "glib-compile-resources.vs10.sourcefiles.filters" + + diff --git a/build/win32/vs10/glib-compile-resources.vcxprojin b/build/win32/vs10/glib-compile-resources.vcxprojin new file mode 100644 index 0000000..e098347 --- /dev/null +++ b/build/win32/vs10/glib-compile-resources.vcxprojin @@ -0,0 +1,180 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A} + glibcompileresources + Win32Proj + + + + Application + MultiByte + true + v100 + + + Application + MultiByte + v100 + + + Application + MultiByte + true + v100 + + + Application + MultiByte + v100 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + _DEBUG;$(GioInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + _DEBUG;$(GioInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + $(GioInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + $(GioInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + +#include "glib-compile-resources.vs10.sourcefiles" + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + + + + diff --git a/build/win32/vs10/glib-compile-schemas.vcxproj b/build/win32/vs10/glib-compile-schemas.vcxproj index b0f8941..bcaeea1 100644 --- a/build/win32/vs10/glib-compile-schemas.vcxproj +++ b/build/win32/vs10/glib-compile-schemas.vcxproj @@ -1,4 +1,4 @@ - + @@ -158,8 +158,8 @@ - - + + @@ -178,4 +178,4 @@ - \ No newline at end of file + diff --git a/build/win32/vs10/glib-compile-schemas.vcxproj.filters b/build/win32/vs10/glib-compile-schemas.vcxproj.filters index 2f5dca9..1bd75e2 100644 --- a/build/win32/vs10/glib-compile-schemas.vcxproj.filters +++ b/build/win32/vs10/glib-compile-schemas.vcxproj.filters @@ -1,4 +1,4 @@ - + @@ -7,11 +7,7 @@ - - Source Files - - - Source Files - + Source Files + Source Files - \ No newline at end of file + diff --git a/build/win32/vs10/glib-compile-schemas.vcxproj.filtersin b/build/win32/vs10/glib-compile-schemas.vcxproj.filtersin new file mode 100644 index 0000000..645779d --- /dev/null +++ b/build/win32/vs10/glib-compile-schemas.vcxproj.filtersin @@ -0,0 +1,12 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + +#include "glib-compile-schemas.vs10.sourcefiles.filters" + + diff --git a/build/win32/vs10/glib-compile-schemas.vcxprojin b/build/win32/vs10/glib-compile-schemas.vcxprojin new file mode 100644 index 0000000..fff97fb --- /dev/null +++ b/build/win32/vs10/glib-compile-schemas.vcxprojin @@ -0,0 +1,180 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {015D69D0-8B42-438A-ADAE-052AC036E065} + glibcompileschemas + Win32Proj + + + + Application + MultiByte + true + v100 + + + Application + MultiByte + v100 + + + Application + MultiByte + true + v100 + + + Application + MultiByte + v100 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + +#include "glib-compile-schemas.vs10.sourcefiles" + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + + + + diff --git a/build/win32/vs10/glib-gen-srcs.props b/build/win32/vs10/glib-gen-srcs.props index 7707e67..64a20ea 100644 --- a/build/win32/vs10/glib-gen-srcs.props +++ b/build/win32/vs10/glib-gen-srcs.props @@ -8,7 +8,7 @@ copy ..\..\..\glib\glibconfig.h.win32 ..\..\..\glib\glibconfig.h copy ..\..\..\gmodule\gmoduleconf.h.win32 ..\..\..\gmodule\gmoduleconf.h copy ..\..\..\gio\gnetworking.h.win32 ..\..\..\gio\gnetworking.h - if exist $(PythonPath)\python.exe $(PythonPath)\python.exe ..\process_in_win32.py --glib-mkenums + if exist $(PythonPath)\python.exe $(PythonPath)\python.exe ..\replace.py --action=replace-var --input=..\..\..\gobject\glib-mkenums.in --output=..\..\..\gobject\glib-mkenums --var=GLIB_VERSION --outstring=$(GlibVersion) <_PropertySheetDisplayName>glibgensrcsprops @@ -30,4 +30,4 @@ $(GenGLibMKEnums) - \ No newline at end of file + diff --git a/build/win32/vs10/glib-install.props b/build/win32/vs10/glib-install.props index d5058bc..a3d720a 100644 --- a/build/win32/vs10/glib-install.props +++ b/build/win32/vs10/glib-install.props @@ -41,14 +41,111 @@ copy $(BinDir)\gdbus.pdb $(CopyDir)\bin copy ..\..\..\gio\gdbus-2.0\codegen\gdbus-codegen.in $(CopyDir)\bin\gdbus-codegen if exist ..\..\..\gobject\glib-mkenums copy ..\..\..\gobject\glib-mkenums $(CopyDir)\bin mkdir $(CopyDir)\include\glib-$(ApiVersion)\glib\deprecated -mkdir $(CopyDir)\include\glib-$(ApiVersion)\gobject -mkdir $(CopyDir)\include\glib-$(ApiVersion)\gio -mkdir $(CopyDir)\include\gio-win32-$(ApiVersion)\gio copy ..\..\..\msvc_recommended_pragmas.h $(CopyDir)\include\glib-$(ApiVersion) copy ..\..\..\glib\glib.h $(CopyDir)\include\glib-$(ApiVersion) copy ..\..\..\glib\glib-object.h $(CopyDir)\include\glib-$(ApiVersion) +copy ..\..\..\glib\deprecated\gallocator.h $(CopyDir)\include\glib-2.0\glib\deprecated\gallocator.h +copy ..\..\..\glib\deprecated\gcache.h $(CopyDir)\include\glib-2.0\glib\deprecated\gcache.h +copy ..\..\..\glib\deprecated\gcompletion.h $(CopyDir)\include\glib-2.0\glib\deprecated\gcompletion.h +copy ..\..\..\glib\deprecated\gmain.h $(CopyDir)\include\glib-2.0\glib\deprecated\gmain.h +copy ..\..\..\glib\deprecated\grel.h $(CopyDir)\include\glib-2.0\glib\deprecated\grel.h +copy ..\..\..\glib\deprecated\gthread.h $(CopyDir)\include\glib-2.0\glib\deprecated\gthread.h +copy ..\..\..\glib\glib-autocleanups.h $(CopyDir)\include\glib-2.0\glib\glib-autocleanups.h +copy ..\..\..\glib\galloca.h $(CopyDir)\include\glib-2.0\glib\galloca.h +copy ..\..\..\glib\garray.h $(CopyDir)\include\glib-2.0\glib\garray.h +copy ..\..\..\glib\gasyncqueue.h $(CopyDir)\include\glib-2.0\glib\gasyncqueue.h +copy ..\..\..\glib\gatomic.h $(CopyDir)\include\glib-2.0\glib\gatomic.h +copy ..\..\..\glib\gbacktrace.h $(CopyDir)\include\glib-2.0\glib\gbacktrace.h +copy ..\..\..\glib\gbase64.h $(CopyDir)\include\glib-2.0\glib\gbase64.h +copy ..\..\..\glib\gbitlock.h $(CopyDir)\include\glib-2.0\glib\gbitlock.h +copy ..\..\..\glib\gbookmarkfile.h $(CopyDir)\include\glib-2.0\glib\gbookmarkfile.h +copy ..\..\..\glib\gbytes.h $(CopyDir)\include\glib-2.0\glib\gbytes.h +copy ..\..\..\glib\gcharset.h $(CopyDir)\include\glib-2.0\glib\gcharset.h +copy ..\..\..\glib\gchecksum.h $(CopyDir)\include\glib-2.0\glib\gchecksum.h +copy ..\..\..\glib\gconvert.h $(CopyDir)\include\glib-2.0\glib\gconvert.h +copy ..\..\..\glib\gdataset.h $(CopyDir)\include\glib-2.0\glib\gdataset.h +copy ..\..\..\glib\gdate.h $(CopyDir)\include\glib-2.0\glib\gdate.h +copy ..\..\..\glib\gdatetime.h $(CopyDir)\include\glib-2.0\glib\gdatetime.h +copy ..\..\..\glib\gdir.h $(CopyDir)\include\glib-2.0\glib\gdir.h +copy ..\..\..\glib\genviron.h $(CopyDir)\include\glib-2.0\glib\genviron.h +copy ..\..\..\glib\gerror.h $(CopyDir)\include\glib-2.0\glib\gerror.h +copy ..\..\..\glib\gfileutils.h $(CopyDir)\include\glib-2.0\glib\gfileutils.h +copy ..\..\..\glib\ggettext.h $(CopyDir)\include\glib-2.0\glib\ggettext.h +copy ..\..\..\glib\ghash.h $(CopyDir)\include\glib-2.0\glib\ghash.h +copy ..\..\..\glib\ghmac.h $(CopyDir)\include\glib-2.0\glib\ghmac.h +copy ..\..\..\glib\ghook.h $(CopyDir)\include\glib-2.0\glib\ghook.h +copy ..\..\..\glib\ghostutils.h $(CopyDir)\include\glib-2.0\glib\ghostutils.h +copy ..\..\..\glib\gi18n.h $(CopyDir)\include\glib-2.0\glib\gi18n.h +copy ..\..\..\glib\gi18n-lib.h $(CopyDir)\include\glib-2.0\glib\gi18n-lib.h +copy ..\..\..\glib\giochannel.h $(CopyDir)\include\glib-2.0\glib\giochannel.h +copy ..\..\..\glib\gkeyfile.h $(CopyDir)\include\glib-2.0\glib\gkeyfile.h +copy ..\..\..\glib\glist.h $(CopyDir)\include\glib-2.0\glib\glist.h +copy ..\..\..\glib\gmacros.h $(CopyDir)\include\glib-2.0\glib\gmacros.h +copy ..\..\..\glib\gmain.h $(CopyDir)\include\glib-2.0\glib\gmain.h +copy ..\..\..\glib\gmappedfile.h $(CopyDir)\include\glib-2.0\glib\gmappedfile.h +copy ..\..\..\glib\gmarkup.h $(CopyDir)\include\glib-2.0\glib\gmarkup.h +copy ..\..\..\glib\gmem.h $(CopyDir)\include\glib-2.0\glib\gmem.h +copy ..\..\..\glib\gmessages.h $(CopyDir)\include\glib-2.0\glib\gmessages.h +copy ..\..\..\glib\gnode.h $(CopyDir)\include\glib-2.0\glib\gnode.h +copy ..\..\..\glib\goption.h $(CopyDir)\include\glib-2.0\glib\goption.h +copy ..\..\..\glib\gpattern.h $(CopyDir)\include\glib-2.0\glib\gpattern.h +copy ..\..\..\glib\gpoll.h $(CopyDir)\include\glib-2.0\glib\gpoll.h +copy ..\..\..\glib\gprimes.h $(CopyDir)\include\glib-2.0\glib\gprimes.h +copy ..\..\..\glib\gqsort.h $(CopyDir)\include\glib-2.0\glib\gqsort.h +copy ..\..\..\glib\gquark.h $(CopyDir)\include\glib-2.0\glib\gquark.h +copy ..\..\..\glib\gqueue.h $(CopyDir)\include\glib-2.0\glib\gqueue.h +copy ..\..\..\glib\grand.h $(CopyDir)\include\glib-2.0\glib\grand.h +copy ..\..\..\glib\gregex.h $(CopyDir)\include\glib-2.0\glib\gregex.h +copy ..\..\..\glib\gscanner.h $(CopyDir)\include\glib-2.0\glib\gscanner.h +copy ..\..\..\glib\gsequence.h $(CopyDir)\include\glib-2.0\glib\gsequence.h +copy ..\..\..\glib\gshell.h $(CopyDir)\include\glib-2.0\glib\gshell.h +copy ..\..\..\glib\gslice.h $(CopyDir)\include\glib-2.0\glib\gslice.h +copy ..\..\..\glib\gslist.h $(CopyDir)\include\glib-2.0\glib\gslist.h +copy ..\..\..\glib\gspawn.h $(CopyDir)\include\glib-2.0\glib\gspawn.h +copy ..\..\..\glib\gstdio.h $(CopyDir)\include\glib-2.0\glib\gstdio.h +copy ..\..\..\glib\gstrfuncs.h $(CopyDir)\include\glib-2.0\glib\gstrfuncs.h +copy ..\..\..\glib\gtestutils.h $(CopyDir)\include\glib-2.0\glib\gtestutils.h +copy ..\..\..\glib\gstring.h $(CopyDir)\include\glib-2.0\glib\gstring.h +copy ..\..\..\glib\gstringchunk.h $(CopyDir)\include\glib-2.0\glib\gstringchunk.h +copy ..\..\..\glib\gthread.h $(CopyDir)\include\glib-2.0\glib\gthread.h +copy ..\..\..\glib\gthreadpool.h $(CopyDir)\include\glib-2.0\glib\gthreadpool.h +copy ..\..\..\glib\gtimer.h $(CopyDir)\include\glib-2.0\glib\gtimer.h +copy ..\..\..\glib\gtimezone.h $(CopyDir)\include\glib-2.0\glib\gtimezone.h +copy ..\..\..\glib\gtrashstack.h $(CopyDir)\include\glib-2.0\glib\gtrashstack.h +copy ..\..\..\glib\gtree.h $(CopyDir)\include\glib-2.0\glib\gtree.h +copy ..\..\..\glib\gtypes.h $(CopyDir)\include\glib-2.0\glib\gtypes.h +copy ..\..\..\glib\gunicode.h $(CopyDir)\include\glib-2.0\glib\gunicode.h +copy ..\..\..\glib\gurifuncs.h $(CopyDir)\include\glib-2.0\glib\gurifuncs.h +copy ..\..\..\glib\gutils.h $(CopyDir)\include\glib-2.0\glib\gutils.h +copy ..\..\..\glib\gvarianttype.h $(CopyDir)\include\glib-2.0\glib\gvarianttype.h +copy ..\..\..\glib\gvariant.h $(CopyDir)\include\glib-2.0\glib\gvariant.h +copy ..\..\..\glib\gversion.h $(CopyDir)\include\glib-2.0\glib\gversion.h +copy ..\..\..\glib\gversionmacros.h $(CopyDir)\include\glib-2.0\glib\gversionmacros.h +copy ..\..\..\glib\gwin32.h $(CopyDir)\include\glib-2.0\glib\gwin32.h +copy ..\..\..\glib\gprintf.h $(CopyDir)\include\glib-2.0\glib\gprintf.h copy ..\..\..\gmodule\gmodule.h $(CopyDir)\include\glib-$(ApiVersion) -copy ..\..\..\gio\gio-autocleanups.h $(CopyDir)\include\glib-2.0\gio\gio-autocleanups.h +mkdir $(CopyDir)\include\glib-$(ApiVersion)\gobject +copy ..\..\..\gobject\gobject-autocleanups.h $(CopyDir)\include\glib-2.0\gobject\gobject-autocleanups.h +copy ..\..\..\gobject\glib-types.h $(CopyDir)\include\glib-2.0\gobject\glib-types.h +copy ..\..\..\gobject\gbinding.h $(CopyDir)\include\glib-2.0\gobject\gbinding.h +copy ..\..\..\gobject\gboxed.h $(CopyDir)\include\glib-2.0\gobject\gboxed.h +copy ..\..\..\gobject\gclosure.h $(CopyDir)\include\glib-2.0\gobject\gclosure.h +copy ..\..\..\gobject\genums.h $(CopyDir)\include\glib-2.0\gobject\genums.h +copy ..\..\..\gobject\gmarshal.h $(CopyDir)\include\glib-2.0\gobject\gmarshal.h +copy ..\..\..\gobject\gobject.h $(CopyDir)\include\glib-2.0\gobject\gobject.h +copy ..\..\..\gobject\gparam.h $(CopyDir)\include\glib-2.0\gobject\gparam.h +copy ..\..\..\gobject\gparamspecs.h $(CopyDir)\include\glib-2.0\gobject\gparamspecs.h +copy ..\..\..\gobject\gsignal.h $(CopyDir)\include\glib-2.0\gobject\gsignal.h +copy ..\..\..\gobject\gsourceclosure.h $(CopyDir)\include\glib-2.0\gobject\gsourceclosure.h +copy ..\..\..\gobject\gtype.h $(CopyDir)\include\glib-2.0\gobject\gtype.h +copy ..\..\..\gobject\gtypemodule.h $(CopyDir)\include\glib-2.0\gobject\gtypemodule.h +copy ..\..\..\gobject\gtypeplugin.h $(CopyDir)\include\glib-2.0\gobject\gtypeplugin.h +copy ..\..\..\gobject\gvalue.h $(CopyDir)\include\glib-2.0\gobject\gvalue.h +copy ..\..\..\gobject\gvaluearray.h $(CopyDir)\include\glib-2.0\gobject\gvaluearray.h +copy ..\..\..\gobject\gvaluecollector.h $(CopyDir)\include\glib-2.0\gobject\gvaluecollector.h +copy ..\..\..\gobject\gvaluetypes.h $(CopyDir)\include\glib-2.0\gobject\gvaluetypes.h +copy ..\..\..\gobject\gobjectnotifyqueue.c $(CopyDir)\include\glib-$(ApiVersion)\gobject +mkdir $(CopyDir)\include\glib-$(ApiVersion)\gio copy ..\..\..\gio\gappinfo.h $(CopyDir)\include\glib-2.0\gio\gappinfo.h copy ..\..\..\gio\gasyncinitable.h $(CopyDir)\include\glib-2.0\gio\gasyncinitable.h copy ..\..\..\gio\gasyncresult.h $(CopyDir)\include\glib-2.0\gio\gasyncresult.h @@ -61,6 +158,7 @@ copy ..\..\..\gio\gcharsetconverter.h $(CopyDir)\include\glib-2.0\gio\gcharsetco copy ..\..\..\gio\gconverter.h $(CopyDir)\include\glib-2.0\gio\gconverter.h copy ..\..\..\gio\gconverterinputstream.h $(CopyDir)\include\glib-2.0\gio\gconverterinputstream.h copy ..\..\..\gio\gconverteroutputstream.h $(CopyDir)\include\glib-2.0\gio\gconverteroutputstream.h +copy ..\..\..\gio\gdatagrambased.h $(CopyDir)\include\glib-2.0\gio\gdatagrambased.h copy ..\..\..\gio\gdatainputstream.h $(CopyDir)\include\glib-2.0\gio\gdatainputstream.h copy ..\..\..\gio\gdataoutputstream.h $(CopyDir)\include\glib-2.0\gio\gdataoutputstream.h copy ..\..\..\gio\gdrive.h $(CopyDir)\include\glib-2.0\gio\gdrive.h @@ -85,14 +183,13 @@ copy ..\..\..\gio\ginetsocketaddress.h $(CopyDir)\include\glib-2.0\gio\ginetsock copy ..\..\..\gio\ginputstream.h $(CopyDir)\include\glib-2.0\gio\ginputstream.h copy ..\..\..\gio\ginitable.h $(CopyDir)\include\glib-2.0\gio\ginitable.h copy ..\..\..\gio\gio.h $(CopyDir)\include\glib-2.0\gio\gio.h +copy ..\..\..\gio\gio-autocleanups.h $(CopyDir)\include\glib-2.0\gio\gio-autocleanups.h copy ..\..\..\gio\giotypes.h $(CopyDir)\include\glib-2.0\gio\giotypes.h copy ..\..\..\gio\gioenums.h $(CopyDir)\include\glib-2.0\gio\gioenums.h copy ..\..\..\gio\gioerror.h $(CopyDir)\include\glib-2.0\gio\gioerror.h copy ..\..\..\gio\giomodule.h $(CopyDir)\include\glib-2.0\gio\giomodule.h copy ..\..\..\gio\gioscheduler.h $(CopyDir)\include\glib-2.0\gio\gioscheduler.h copy ..\..\..\gio\giostream.h $(CopyDir)\include\glib-2.0\gio\giostream.h -copy ..\..\..\gio\glistmodel.h $(CopyDir)\include\glib-2.0\gio\glistmodel.h -copy ..\..\..\gio\gliststore.h $(CopyDir)\include\glib-2.0\gio\gliststore.h copy ..\..\..\gio\gloadableicon.h $(CopyDir)\include\glib-2.0\gio\gloadableicon.h copy ..\..\..\gio\gmount.h $(CopyDir)\include\glib-2.0\gio\gmount.h copy ..\..\..\gio\gmemoryinputstream.h $(CopyDir)\include\glib-2.0\gio\gmemoryinputstream.h @@ -114,11 +211,9 @@ copy ..\..\..\gio\gproxyresolver.h $(CopyDir)\include\glib-2.0\gio\gproxyresolve copy ..\..\..\gio\gresolver.h $(CopyDir)\include\glib-2.0\gio\gresolver.h copy ..\..\..\gio\gresource.h $(CopyDir)\include\glib-2.0\gio\gresource.h copy ..\..\..\gio\gseekable.h $(CopyDir)\include\glib-2.0\gio\gseekable.h -copy ..\..\..\gio\gsimpleactiongroup.h $(CopyDir)\include\glib-2.0\gio\gsimpleactiongroup.h copy ..\..\..\gio\gsimpleasyncresult.h $(CopyDir)\include\glib-2.0\gio\gsimpleasyncresult.h copy ..\..\..\gio\gsimpleiostream.h $(CopyDir)\include\glib-2.0\gio\gsimpleiostream.h copy ..\..\..\gio\gsimplepermission.h $(CopyDir)\include\glib-2.0\gio\gsimplepermission.h -copy ..\..\..\gio\gsimpleproxyresolver.h $(CopyDir)\include\glib-2.0\gio\gsimpleproxyresolver.h copy ..\..\..\gio\gsocket.h $(CopyDir)\include\glib-2.0\gio\gsocket.h copy ..\..\..\gio\gsocketaddress.h $(CopyDir)\include\glib-2.0\gio\gsocketaddress.h copy ..\..\..\gio\gsocketaddressenumerator.h $(CopyDir)\include\glib-2.0\gio\gsocketaddressenumerator.h @@ -129,6 +224,7 @@ copy ..\..\..\gio\gsocketcontrolmessage.h $(CopyDir)\include\glib-2.0\gio\gsocke copy ..\..\..\gio\gsocketlistener.h $(CopyDir)\include\glib-2.0\gio\gsocketlistener.h copy ..\..\..\gio\gsocketservice.h $(CopyDir)\include\glib-2.0\gio\gsocketservice.h copy ..\..\..\gio\gsrvtarget.h $(CopyDir)\include\glib-2.0\gio\gsrvtarget.h +copy ..\..\..\gio\gsimpleproxyresolver.h $(CopyDir)\include\glib-2.0\gio\gsimpleproxyresolver.h copy ..\..\..\gio\gtask.h $(CopyDir)\include\glib-2.0\gio\gtask.h copy ..\..\..\gio\gsubprocess.h $(CopyDir)\include\glib-2.0\gio\gsubprocess.h copy ..\..\..\gio\gsubprocesslauncher.h $(CopyDir)\include\glib-2.0\gio\gsubprocesslauncher.h @@ -145,15 +241,21 @@ copy ..\..\..\gio\gtlsfiledatabase.h $(CopyDir)\include\glib-2.0\gio\gtlsfiledat copy ..\..\..\gio\gtlsinteraction.h $(CopyDir)\include\glib-2.0\gio\gtlsinteraction.h copy ..\..\..\gio\gtlspassword.h $(CopyDir)\include\glib-2.0\gio\gtlspassword.h copy ..\..\..\gio\gtlsserverconnection.h $(CopyDir)\include\glib-2.0\gio\gtlsserverconnection.h +copy ..\..\..\gio\gdtlsconnection.h $(CopyDir)\include\glib-2.0\gio\gdtlsconnection.h +copy ..\..\..\gio\gdtlsclientconnection.h $(CopyDir)\include\glib-2.0\gio\gdtlsclientconnection.h +copy ..\..\..\gio\gdtlsserverconnection.h $(CopyDir)\include\glib-2.0\gio\gdtlsserverconnection.h copy ..\..\..\gio\gvfs.h $(CopyDir)\include\glib-2.0\gio\gvfs.h copy ..\..\..\gio\gvolume.h $(CopyDir)\include\glib-2.0\gio\gvolume.h copy ..\..\..\gio\gvolumemonitor.h $(CopyDir)\include\glib-2.0\gio\gvolumemonitor.h copy ..\..\..\gio\gzlibcompressor.h $(CopyDir)\include\glib-2.0\gio\gzlibcompressor.h copy ..\..\..\gio\gzlibdecompressor.h $(CopyDir)\include\glib-2.0\gio\gzlibdecompressor.h +copy ..\..\..\gio\glistmodel.h $(CopyDir)\include\glib-2.0\gio\glistmodel.h +copy ..\..\..\gio\gliststore.h $(CopyDir)\include\glib-2.0\gio\gliststore.h copy ..\..\..\gio\gapplication.h $(CopyDir)\include\glib-2.0\gio\gapplication.h copy ..\..\..\gio\gapplicationcommandline.h $(CopyDir)\include\glib-2.0\gio\gapplicationcommandline.h copy ..\..\..\gio\gactiongroup.h $(CopyDir)\include\glib-2.0\gio\gactiongroup.h copy ..\..\..\gio\gactionmap.h $(CopyDir)\include\glib-2.0\gio\gactionmap.h +copy ..\..\..\gio\gsimpleactiongroup.h $(CopyDir)\include\glib-2.0\gio\gsimpleactiongroup.h copy ..\..\..\gio\gremoteactiongroup.h $(CopyDir)\include\glib-2.0\gio\gremoteactiongroup.h copy ..\..\..\gio\gactiongroupexporter.h $(CopyDir)\include\glib-2.0\gio\gactiongroupexporter.h copy ..\..\..\gio\gdbusactiongroup.h $(CopyDir)\include\glib-2.0\gio\gdbusactiongroup.h @@ -192,105 +294,7 @@ copy ..\..\..\gio\gdbusobjectmanagerserver.h $(CopyDir)\include\glib-2.0\gio\gdb copy ..\..\..\gio\gtestdbus.h $(CopyDir)\include\glib-2.0\gio\gtestdbus.h copy ..\..\..\gio\gioenumtypes.h $(CopyDir)\include\glib-2.0\gio\gioenumtypes.h copy ..\..\..\gio\gnetworking.h $(CopyDir)\include\glib-2.0\gio\gnetworking.h -copy ..\..\..\glib\glib-autocleanups.h $(CopyDir)\include\glib-2.0\glib\glib-autocleanups.h -copy ..\..\..\glib\galloca.h $(CopyDir)\include\glib-2.0\glib\galloca.h -copy ..\..\..\glib\garray.h $(CopyDir)\include\glib-2.0\glib\garray.h -copy ..\..\..\glib\gasyncqueue.h $(CopyDir)\include\glib-2.0\glib\gasyncqueue.h -copy ..\..\..\glib\gatomic.h $(CopyDir)\include\glib-2.0\glib\gatomic.h -copy ..\..\..\glib\gbacktrace.h $(CopyDir)\include\glib-2.0\glib\gbacktrace.h -copy ..\..\..\glib\gbase64.h $(CopyDir)\include\glib-2.0\glib\gbase64.h -copy ..\..\..\glib\gbitlock.h $(CopyDir)\include\glib-2.0\glib\gbitlock.h -copy ..\..\..\glib\gbookmarkfile.h $(CopyDir)\include\glib-2.0\glib\gbookmarkfile.h -copy ..\..\..\glib\gbytes.h $(CopyDir)\include\glib-2.0\glib\gbytes.h -copy ..\..\..\glib\gcharset.h $(CopyDir)\include\glib-2.0\glib\gcharset.h -copy ..\..\..\glib\gchecksum.h $(CopyDir)\include\glib-2.0\glib\gchecksum.h -copy ..\..\..\glib\gconvert.h $(CopyDir)\include\glib-2.0\glib\gconvert.h -copy ..\..\..\glib\gdataset.h $(CopyDir)\include\glib-2.0\glib\gdataset.h -copy ..\..\..\glib\gdate.h $(CopyDir)\include\glib-2.0\glib\gdate.h -copy ..\..\..\glib\gdatetime.h $(CopyDir)\include\glib-2.0\glib\gdatetime.h -copy ..\..\..\glib\gdir.h $(CopyDir)\include\glib-2.0\glib\gdir.h -copy ..\..\..\glib\genviron.h $(CopyDir)\include\glib-2.0\glib\genviron.h -copy ..\..\..\glib\gerror.h $(CopyDir)\include\glib-2.0\glib\gerror.h -copy ..\..\..\glib\gfileutils.h $(CopyDir)\include\glib-2.0\glib\gfileutils.h -copy ..\..\..\glib\ggettext.h $(CopyDir)\include\glib-2.0\glib\ggettext.h -copy ..\..\..\glib\ghash.h $(CopyDir)\include\glib-2.0\glib\ghash.h -copy ..\..\..\glib\ghmac.h $(CopyDir)\include\glib-2.0\glib\ghmac.h -copy ..\..\..\glib\ghook.h $(CopyDir)\include\glib-2.0\glib\ghook.h -copy ..\..\..\glib\ghostutils.h $(CopyDir)\include\glib-2.0\glib\ghostutils.h -copy ..\..\..\glib\gi18n.h $(CopyDir)\include\glib-2.0\glib\gi18n.h -copy ..\..\..\glib\gi18n-lib.h $(CopyDir)\include\glib-2.0\glib\gi18n-lib.h -copy ..\..\..\glib\giochannel.h $(CopyDir)\include\glib-2.0\glib\giochannel.h -copy ..\..\..\glib\gkeyfile.h $(CopyDir)\include\glib-2.0\glib\gkeyfile.h -copy ..\..\..\glib\glist.h $(CopyDir)\include\glib-2.0\glib\glist.h -copy ..\..\..\glib\gmacros.h $(CopyDir)\include\glib-2.0\glib\gmacros.h -copy ..\..\..\glib\gmain.h $(CopyDir)\include\glib-2.0\glib\gmain.h -copy ..\..\..\glib\gmappedfile.h $(CopyDir)\include\glib-2.0\glib\gmappedfile.h -copy ..\..\..\glib\gmarkup.h $(CopyDir)\include\glib-2.0\glib\gmarkup.h -copy ..\..\..\glib\gmem.h $(CopyDir)\include\glib-2.0\glib\gmem.h -copy ..\..\..\glib\gmessages.h $(CopyDir)\include\glib-2.0\glib\gmessages.h -copy ..\..\..\glib\gnode.h $(CopyDir)\include\glib-2.0\glib\gnode.h -copy ..\..\..\glib\goption.h $(CopyDir)\include\glib-2.0\glib\goption.h -copy ..\..\..\glib\gpattern.h $(CopyDir)\include\glib-2.0\glib\gpattern.h -copy ..\..\..\glib\gpoll.h $(CopyDir)\include\glib-2.0\glib\gpoll.h -copy ..\..\..\glib\gprimes.h $(CopyDir)\include\glib-2.0\glib\gprimes.h -copy ..\..\..\glib\gqsort.h $(CopyDir)\include\glib-2.0\glib\gqsort.h -copy ..\..\..\glib\gquark.h $(CopyDir)\include\glib-2.0\glib\gquark.h -copy ..\..\..\glib\gqueue.h $(CopyDir)\include\glib-2.0\glib\gqueue.h -copy ..\..\..\glib\grand.h $(CopyDir)\include\glib-2.0\glib\grand.h -copy ..\..\..\glib\gregex.h $(CopyDir)\include\glib-2.0\glib\gregex.h -copy ..\..\..\glib\gscanner.h $(CopyDir)\include\glib-2.0\glib\gscanner.h -copy ..\..\..\glib\gsequence.h $(CopyDir)\include\glib-2.0\glib\gsequence.h -copy ..\..\..\glib\gshell.h $(CopyDir)\include\glib-2.0\glib\gshell.h -copy ..\..\..\glib\gslice.h $(CopyDir)\include\glib-2.0\glib\gslice.h -copy ..\..\..\glib\gslist.h $(CopyDir)\include\glib-2.0\glib\gslist.h -copy ..\..\..\glib\gspawn.h $(CopyDir)\include\glib-2.0\glib\gspawn.h -copy ..\..\..\glib\gstdio.h $(CopyDir)\include\glib-2.0\glib\gstdio.h -copy ..\..\..\glib\gstrfuncs.h $(CopyDir)\include\glib-2.0\glib\gstrfuncs.h -copy ..\..\..\glib\gtestutils.h $(CopyDir)\include\glib-2.0\glib\gtestutils.h -copy ..\..\..\glib\gstring.h $(CopyDir)\include\glib-2.0\glib\gstring.h -copy ..\..\..\glib\gstringchunk.h $(CopyDir)\include\glib-2.0\glib\gstringchunk.h -copy ..\..\..\glib\gthread.h $(CopyDir)\include\glib-2.0\glib\gthread.h -copy ..\..\..\glib\gthreadpool.h $(CopyDir)\include\glib-2.0\glib\gthreadpool.h -copy ..\..\..\glib\gtimer.h $(CopyDir)\include\glib-2.0\glib\gtimer.h -copy ..\..\..\glib\gtimezone.h $(CopyDir)\include\glib-2.0\glib\gtimezone.h -copy ..\..\..\glib\gtrashstack.h $(CopyDir)\include\glib-2.0\glib\gtrashstack.h -copy ..\..\..\glib\gtree.h $(CopyDir)\include\glib-2.0\glib\gtree.h -copy ..\..\..\glib\gtypes.h $(CopyDir)\include\glib-2.0\glib\gtypes.h -copy ..\..\..\glib\gunicode.h $(CopyDir)\include\glib-2.0\glib\gunicode.h -copy ..\..\..\glib\gurifuncs.h $(CopyDir)\include\glib-2.0\glib\gurifuncs.h -copy ..\..\..\glib\gutils.h $(CopyDir)\include\glib-2.0\glib\gutils.h -copy ..\..\..\glib\gvarianttype.h $(CopyDir)\include\glib-2.0\glib\gvarianttype.h -copy ..\..\..\glib\gvariant.h $(CopyDir)\include\glib-2.0\glib\gvariant.h -copy ..\..\..\glib\gversion.h $(CopyDir)\include\glib-2.0\glib\gversion.h -copy ..\..\..\glib\gversionmacros.h $(CopyDir)\include\glib-2.0\glib\gversionmacros.h -copy ..\..\..\glib\gwin32.h $(CopyDir)\include\glib-2.0\glib\gwin32.h -copy ..\..\..\glib\gprintf.h $(CopyDir)\include\glib-2.0\glib\gprintf.h -copy ..\..\..\glib\deprecated\gallocator.h $(CopyDir)\include\glib-2.0\glib\deprecated\gallocator.h -copy ..\..\..\glib\deprecated\gcache.h $(CopyDir)\include\glib-2.0\glib\deprecated\gcache.h -copy ..\..\..\glib\deprecated\gcompletion.h $(CopyDir)\include\glib-2.0\glib\deprecated\gcompletion.h -copy ..\..\..\glib\deprecated\gmain.h $(CopyDir)\include\glib-2.0\glib\deprecated\gmain.h -copy ..\..\..\glib\deprecated\grel.h $(CopyDir)\include\glib-2.0\glib\deprecated\grel.h -copy ..\..\..\glib\deprecated\gthread.h $(CopyDir)\include\glib-2.0\glib\deprecated\gthread.h -copy ..\..\..\gobject\gobject-autocleanups.h $(CopyDir)\include\glib-2.0\gobject\gobject-autocleanups.h -copy ..\..\..\gobject\glib-types.h $(CopyDir)\include\glib-2.0\gobject\glib-types.h -copy ..\..\..\gobject\gbinding.h $(CopyDir)\include\glib-2.0\gobject\gbinding.h -copy ..\..\..\gobject\gboxed.h $(CopyDir)\include\glib-2.0\gobject\gboxed.h -copy ..\..\..\gobject\gclosure.h $(CopyDir)\include\glib-2.0\gobject\gclosure.h -copy ..\..\..\gobject\genums.h $(CopyDir)\include\glib-2.0\gobject\genums.h -copy ..\..\..\gobject\gmarshal.h $(CopyDir)\include\glib-2.0\gobject\gmarshal.h -copy ..\..\..\gobject\gobject.h $(CopyDir)\include\glib-2.0\gobject\gobject.h -copy ..\..\..\gobject\gobjectnotifyqueue.c $(CopyDir)\include\glib-2.0\gobject\gobjectnotifyqueue.c -copy ..\..\..\gobject\gparam.h $(CopyDir)\include\glib-2.0\gobject\gparam.h -copy ..\..\..\gobject\gparamspecs.h $(CopyDir)\include\glib-2.0\gobject\gparamspecs.h -copy ..\..\..\gobject\gsignal.h $(CopyDir)\include\glib-2.0\gobject\gsignal.h -copy ..\..\..\gobject\gsourceclosure.h $(CopyDir)\include\glib-2.0\gobject\gsourceclosure.h -copy ..\..\..\gobject\gtype.h $(CopyDir)\include\glib-2.0\gobject\gtype.h -copy ..\..\..\gobject\gtypemodule.h $(CopyDir)\include\glib-2.0\gobject\gtypemodule.h -copy ..\..\..\gobject\gtypeplugin.h $(CopyDir)\include\glib-2.0\gobject\gtypeplugin.h -copy ..\..\..\gobject\gvalue.h $(CopyDir)\include\glib-2.0\gobject\gvalue.h -copy ..\..\..\gobject\gvaluearray.h $(CopyDir)\include\glib-2.0\gobject\gvaluearray.h -copy ..\..\..\gobject\gvaluecollector.h $(CopyDir)\include\glib-2.0\gobject\gvaluecollector.h -copy ..\..\..\gobject\gvaluetypes.h $(CopyDir)\include\glib-2.0\gobject\gvaluetypes.h +mkdir $(CopyDir)\include\gio-win32-$(ApiVersion)\gio copy ..\..\..\gio\gwin32inputstream.h $(CopyDir)\include\gio-win32-$(ApiVersion)\gio copy ..\..\..\gio\gwin32outputstream.h $(CopyDir)\include\gio-win32-$(ApiVersion)\gio mkdir $(CopyDir)\lib\glib-$(ApiVersion)\include @@ -300,11 +304,22 @@ copy $(BinDir)\gthread-$(ApiVersion).lib $(CopyDir)\lib copy $(BinDir)\gmodule-$(ApiVersion).lib $(CopyDir)\lib copy $(BinDir)\gobject-$(ApiVersion).lib $(CopyDir)\lib copy $(BinDir)\gio-$(ApiVersion).lib $(CopyDir)\lib +mkdir $(CopyDir)\lib\pkgconfig +copy ..\gio-windows-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gio-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gobject-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gmodule-no-export-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gmodule-export-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gmodule-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gthread-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\glib-2.0.pc $(CopyDir)\lib\pkgconfig mkdir $(CopyDir)\share\glib-$(ApiVersion)\schemas copy ..\..\..\gio\gschema.dtd $(CopyDir)\share\glib-$(ApiVersion)\schemas mkdir $(CopyDir)\share\glib-$(ApiVersion)\codegen copy ..\..\..\gio\gdbus-2.0\codegen\*.py $(CopyDir)\share\glib-$(ApiVersion)\codegen + ..\gio-windows-2.0.pc;..\gio-2.0.pc;..\gobject-2.0.pc;..\gmodule-no-export-2.0.pc;..\gmodule-export-2.0.pc;..\gmodule-2.0.pc;..\gthread-2.0.pc;..\glib-2.0.pc + if exist $(PythonPath)\python.exe $(PythonPath)\python.exe ..\glibpc.py --prefix=$(CopyDir) --version=$(GlibVersion) <_PropertySheetDisplayName>glibinstallprops @@ -328,5 +343,11 @@ copy ..\..\..\gio\gdbus-2.0\codegen\*.py $(CopyDir)\share\glib-$(ApiVersion)\cod $(GlibDoInstall) + + $(GlibPCFiles) + + + $(GlibGenPC) + diff --git a/build/win32/vs10/glib-install.propsin b/build/win32/vs10/glib-install.propsin new file mode 100644 index 0000000..81f5e63 --- /dev/null +++ b/build/win32/vs10/glib-install.propsin @@ -0,0 +1,120 @@ + + + + + + + $(SolutionDir)$(Configuration)\$(Platform)\bin + $(BinDir)\$(GlibDllPrefix)glib(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gthread(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gmodule(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gobject(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gio(GlibDllSuffix).dll + $(BinDir)\glib-genmarshal.exe;$(BinDir)\glib-compile-schemas.exe;$(BinDir)\gsettings.exe;$(BinDir)\glib-compile-resources.exe;$(BinDir)\gresource.exe;$(BinDir)\gio-querymodules.exe;$(BinDir)\gdbus.exe + $(BinDir)\gspawn-win32-helper.exe;$(BinDir)\gspawn-win32-helper-console.exe + $(BinDir)\gspawn-win64-helper.exe;$(BinDir)\gspawn-win64-helper-console.exe + +mkdir $(CopyDir) +mkdir $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)glib$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)glib$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gthread$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gthread$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gmodule$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gmodule$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gobject$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gobject$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gio$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gio$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\glib-genmarshal.exe $(CopyDir)\bin +copy $(BinDir)\glib-genmarshal.pdb $(CopyDir)\bin +copy $(BinDir)\gspawn-win*-helper*.exe $(CopyDir)\bin +copy $(BinDir)\gspawn-win*-helper*.pdb $(CopyDir)\bin +copy $(BinDir)\glib-compile-schemas.exe $(CopyDir)\bin +copy $(BinDir)\glib-compile-schemas.pdb $(CopyDir)\bin +copy $(BinDir)\gsettings.exe $(CopyDir)\bin +copy $(BinDir)\gsettings.pdb $(CopyDir)\bin +copy $(BinDir)\glib-compile-resources.exe $(CopyDir)\bin +copy $(BinDir)\glib-compile-resources.pdb $(CopyDir)\bin +copy $(BinDir)\gresource.exe $(CopyDir)\bin +copy $(BinDir)\gresource.pdb $(CopyDir)\bin +copy $(BinDir)\gio-querymodules.exe $(CopyDir)\bin +copy $(BinDir)\gio-querymodules.pdb $(CopyDir)\bin +copy $(BinDir)\gdbus.exe $(CopyDir)\bin +copy $(BinDir)\gdbus.pdb $(CopyDir)\bin +copy ..\..\..\gio\gdbus-2.0\codegen\gdbus-codegen.in $(CopyDir)\bin\gdbus-codegen + +if exist ..\..\..\gobject\glib-mkenums copy ..\..\..\gobject\glib-mkenums $(CopyDir)\bin + +mkdir $(CopyDir)\include\glib-$(ApiVersion)\glib\deprecated +copy ..\..\..\msvc_recommended_pragmas.h $(CopyDir)\include\glib-$(ApiVersion) +copy ..\..\..\glib\glib.h $(CopyDir)\include\glib-$(ApiVersion) +copy ..\..\..\glib\glib-object.h $(CopyDir)\include\glib-$(ApiVersion) +#include "glib.vs10.headers" + +copy ..\..\..\gmodule\gmodule.h $(CopyDir)\include\glib-$(ApiVersion) + +mkdir $(CopyDir)\include\glib-$(ApiVersion)\gobject +#include "gobject.vs10.headers" +copy ..\..\..\gobject\gobjectnotifyqueue.c $(CopyDir)\include\glib-$(ApiVersion)\gobject + +mkdir $(CopyDir)\include\glib-$(ApiVersion)\gio +#include "gio.vs10.headers" + +mkdir $(CopyDir)\include\gio-win32-$(ApiVersion)\gio +copy ..\..\..\gio\gwin32inputstream.h $(CopyDir)\include\gio-win32-$(ApiVersion)\gio +copy ..\..\..\gio\gwin32outputstream.h $(CopyDir)\include\gio-win32-$(ApiVersion)\gio + +mkdir $(CopyDir)\lib\glib-$(ApiVersion)\include +copy ..\..\..\glib\glibconfig.h $(CopyDir)\lib\glib-$(ApiVersion)\include +copy $(BinDir)\glib-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gthread-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gmodule-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gobject-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gio-$(ApiVersion).lib $(CopyDir)\lib + +mkdir $(CopyDir)\lib\pkgconfig +copy ..\gio-windows-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gio-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gobject-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gmodule-no-export-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gmodule-export-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gmodule-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gthread-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\glib-2.0.pc $(CopyDir)\lib\pkgconfig + +mkdir $(CopyDir)\share\glib-$(ApiVersion)\schemas +copy ..\..\..\gio\gschema.dtd $(CopyDir)\share\glib-$(ApiVersion)\schemas + +mkdir $(CopyDir)\share\glib-$(ApiVersion)\codegen +copy ..\..\..\gio\gdbus-2.0\codegen\*.py $(CopyDir)\share\glib-$(ApiVersion)\codegen + + ..\gio-windows-2.0.pc;..\gio-2.0.pc;..\gobject-2.0.pc;..\gmodule-no-export-2.0.pc;..\gmodule-export-2.0.pc;..\gmodule-2.0.pc;..\gthread-2.0.pc;..\glib-2.0.pc + if exist $(PythonPath)\python.exe $(PythonPath)\python.exe ..\glibpc.py --prefix=$(CopyDir) --version=$(GlibVersion) + + + <_PropertySheetDisplayName>glibinstallprops + + + + $(BinDir) + + + $(InstalledDlls) + + + $(InstalledBins) + + + $(InstalledWin32Bins) + + + $(InstalledX64Bins) + + + $(GlibDoInstall) + + + $(GlibPCFiles) + + + $(GlibGenPC) + + + diff --git a/build/win32/vs10/glib-install.vcxproj b/build/win32/vs10/glib-install.vcxproj index 2eb64e0..a298a5d 100644 --- a/build/win32/vs10/glib-install.vcxproj +++ b/build/win32/vs10/glib-install.vcxproj @@ -85,17 +85,35 @@ + + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + Installing Build Results... + $(GlibPCFiles) $(GlibDoInstall) $(InstalledDlls);$(InstalledBins);$(InstalledWin32Bins);%(Outputs) Installing Build Results... + $(GlibPCFiles) $(GlibDoInstall) $(InstalledDlls);$(InstalledBins);$(InstalledX64Bins);%(Outputs) Installing Build Results... + $(GlibPCFiles) $(GlibDoInstall) $(InstalledDlls);$(InstalledBins);$(InstalledWin32Bins);%(Outputs) Installing Build Results... + $(GlibPCFiles) $(GlibDoInstall) $(InstalledDlls);$(InstalledBins);$(InstalledX64Bins);%(Outputs) diff --git a/build/win32/vs10/glib-install.vcxproj.filters b/build/win32/vs10/glib-install.vcxproj.filters new file mode 100644 index 0000000..18ffe5f --- /dev/null +++ b/build/win32/vs10/glib-install.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Resource Files + Resource Files + + diff --git a/build/win32/vs10/glib-version-paths.props b/build/win32/vs10/glib-version-paths.props index 4663a84..30b393d 100644 --- a/build/win32/vs10/glib-version-paths.props +++ b/build/win32/vs10/glib-version-paths.props @@ -2,9 +2,10 @@ 10 + 2.48.0 + 2.0 ..\..\..\..\vs$(VSVer)\$(Platform) $(GlibEtcInstallRoot) - 2.0 lib -$(ApiVersion)-0 @@ -20,15 +21,18 @@ $(VSVer) + + $(GlibVersion) + + + $(ApiVersion) + $(GlibEtcInstallRoot) $(CopyDir) - - $(ApiVersion) - $(GlibLibtoolCompatibleDllPrefix) @@ -51,4 +55,4 @@ $(PythonPath) - \ No newline at end of file + diff --git a/build/win32/vs10/glib-version-paths.props.in b/build/win32/vs10/glib-version-paths.props.in new file mode 100644 index 0000000..6932252 --- /dev/null +++ b/build/win32/vs10/glib-version-paths.props.in @@ -0,0 +1,58 @@ + + + + 10 + @GLIB_VERSION@ + 2.0 + ..\..\..\..\vs$(VSVer)\$(Platform) + $(GlibEtcInstallRoot) + lib + -$(ApiVersion)-0 + + -2-vs$(VSVer) + $(GlibSeparateVSDllPrefix) + $(GlibSeparateVSDllSuffix) + c:\python27 + + + <_PropertySheetDisplayName>glibversionpathsprops + + + + $(VSVer) + + + $(GlibVersion) + + + $(ApiVersion) + + + $(GlibEtcInstallRoot) + + + $(CopyDir) + + + $(GlibLibtoolCompatibleDllPrefix) + + + $(GlibLibtoolCompatibleDllSuffix) + + + $(GlibSeparateVSDllPrefix) + + + $(GlibSeparateVSDllSuffix) + + + $(GlibDllPrefix) + + + $(GlibDllSuffix) + + + $(PythonPath) + + + \ No newline at end of file diff --git a/build/win32/vs10/glib.sln b/build/win32/vs10/glib.sln index 89dd8b6..12b0d64 100644 --- a/build/win32/vs10/glib.sln +++ b/build/win32/vs10/glib.sln @@ -32,256 +32,256 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gdbus", "gdbus.vcxproj", "{ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug_ExtPCRE|Win32 = Debug_ExtPCRE|Win32 - Debug_ExtPCRE|x64 = Debug_ExtPCRE|x64 Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 - Release_ExtPCRE|Win32 = Release_ExtPCRE|Win32 - Release_ExtPCRE|x64 = Release_ExtPCRE|x64 + Debug_BundledPCRE|Win32 = Debug_BundledPCRE|Win32 + Debug_BundledPCRE|x64 = Debug_BundledPCRE|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 + Release_BundledPCRE|Win32 = Release_BundledPCRE|Win32 + Release_BundledPCRE|x64 = Release_BundledPCRE|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_ExtPCRE|Win32.ActiveCfg = Debug_ExtPCRE|Win32 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_ExtPCRE|Win32.Build.0 = Debug_ExtPCRE|Win32 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_ExtPCRE|x64.ActiveCfg = Debug_ExtPCRE|x64 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_ExtPCRE|x64.Build.0 = Debug_ExtPCRE|x64 {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|Win32.ActiveCfg = Debug|Win32 {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|Win32.Build.0 = Debug|Win32 {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|x64.ActiveCfg = Debug|x64 {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|x64.Build.0 = Debug|x64 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_ExtPCRE|Win32.ActiveCfg = Release_ExtPCRE|Win32 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_ExtPCRE|Win32.Build.0 = Release_ExtPCRE|Win32 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_ExtPCRE|x64.ActiveCfg = Release_ExtPCRE|x64 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_ExtPCRE|x64.Build.0 = Release_ExtPCRE|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|Win32.ActiveCfg = Debug_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|Win32.Build.0 = Debug_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|x64.ActiveCfg = Debug_BundledPCRE|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|x64.Build.0 = Debug_BundledPCRE|x64 {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|Win32.ActiveCfg = Release|Win32 {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|Win32.Build.0 = Release|Win32 {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|x64.ActiveCfg = Release|x64 {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|x64.Build.0 = Release|x64 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|Win32.ActiveCfg = Release_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|Win32.Build.0 = Release_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|x64.ActiveCfg = Release_BundledPCRE|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|x64.Build.0 = Release_BundledPCRE|x64 {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|Win32.ActiveCfg = Debug|Win32 {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|Win32.Build.0 = Debug|Win32 {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|x64.ActiveCfg = Debug|x64 {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|x64.Build.0 = Debug|x64 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|Win32.ActiveCfg = Release|Win32 {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|Win32.Build.0 = Release|Win32 {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|x64.ActiveCfg = Release|x64 {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|x64.Build.0 = Release|x64 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|x64.Build.0 = Release|x64 {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|Win32.ActiveCfg = Debug|Win32 {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|Win32.Build.0 = Debug|Win32 {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|x64.ActiveCfg = Debug|x64 {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|x64.Build.0 = Debug|x64 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|Win32.ActiveCfg = Release|Win32 {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|Win32.Build.0 = Release|Win32 {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|x64.ActiveCfg = Release|x64 {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|x64.Build.0 = Release|x64 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|x64.Build.0 = Release|x64 {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|Win32.ActiveCfg = Debug|Win32 {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|Win32.Build.0 = Debug|Win32 {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|x64.ActiveCfg = Debug|x64 {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|x64.Build.0 = Debug|x64 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|Win32.ActiveCfg = Release|Win32 {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|Win32.Build.0 = Release|Win32 {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|x64.ActiveCfg = Release|x64 {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|x64.Build.0 = Release|x64 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|x64.Build.0 = Release|x64 {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|Win32.ActiveCfg = Debug|Win32 {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|Win32.Build.0 = Debug|Win32 {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|x64.ActiveCfg = Debug|x64 {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|x64.Build.0 = Debug|x64 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|Win32.ActiveCfg = Release|Win32 {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|Win32.Build.0 = Release|Win32 {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|x64.ActiveCfg = Release|x64 {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|x64.Build.0 = Release|x64 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|x64.Build.0 = Release|x64 {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|Win32.ActiveCfg = Debug|Win32 {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|Win32.Build.0 = Debug|Win32 {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|x64.ActiveCfg = Debug|x64 {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|x64.Build.0 = Debug|x64 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|Win32.ActiveCfg = Release|Win32 {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|Win32.Build.0 = Release|Win32 {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|x64.ActiveCfg = Release|x64 {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|x64.Build.0 = Release|x64 - {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|x64.Build.0 = Release|x64 {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|Win32.ActiveCfg = Debug|Win32 {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|Win32.Build.0 = Debug|Win32 {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|x64.ActiveCfg = Debug|x64 {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|x64.Build.0 = Debug|x64 - {289240E7-E167-47CE-A20C-58D852E520BA}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {289240E7-E167-47CE-A20C-58D852E520BA}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {289240E7-E167-47CE-A20C-58D852E520BA}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {289240E7-E167-47CE-A20C-58D852E520BA}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 {289240E7-E167-47CE-A20C-58D852E520BA}.Release|Win32.ActiveCfg = Release|Win32 {289240E7-E167-47CE-A20C-58D852E520BA}.Release|Win32.Build.0 = Release|Win32 {289240E7-E167-47CE-A20C-58D852E520BA}.Release|x64.ActiveCfg = Release|x64 {289240E7-E167-47CE-A20C-58D852E520BA}.Release|x64.Build.0 = Release|x64 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|x64.Build.0 = Release|x64 {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|Win32.ActiveCfg = Debug|Win32 {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|Win32.Build.0 = Debug|Win32 {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|x64.ActiveCfg = Debug|x64 {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|x64.Build.0 = Debug|x64 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|Win32.ActiveCfg = Release|Win32 {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|Win32.Build.0 = Release|Win32 {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|x64.ActiveCfg = Release|x64 {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|x64.Build.0 = Release|x64 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|x64.Build.0 = Release|x64 {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|Win32.ActiveCfg = Debug|Win32 {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|Win32.Build.0 = Debug|Win32 {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|x64.ActiveCfg = Debug|x64 {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|x64.Build.0 = Debug|x64 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|Win32.ActiveCfg = Release|Win32 {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|Win32.Build.0 = Release|Win32 {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|x64.ActiveCfg = Release|x64 {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|x64.Build.0 = Release|x64 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|x64.Build.0 = Release|x64 {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|Win32.ActiveCfg = Debug|Win32 {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|Win32.Build.0 = Debug|Win32 {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|x64.ActiveCfg = Debug|x64 {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|x64.Build.0 = Debug|x64 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|Win32.ActiveCfg = Release|Win32 {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|Win32.Build.0 = Release|Win32 {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|x64.ActiveCfg = Release|x64 {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|x64.Build.0 = Release|x64 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|x64.Build.0 = Release|x64 {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.ActiveCfg = Debug|Win32 {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.Build.0 = Debug|Win32 {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|x64.ActiveCfg = Debug|x64 {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|x64.Build.0 = Debug|x64 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|Win32.ActiveCfg = Release|Win32 {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|Win32.Build.0 = Release|Win32 {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|x64.ActiveCfg = Release|x64 {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|x64.Build.0 = Release|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|x64.Build.0 = Release|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|Win32.ActiveCfg = Debug|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|Win32.Build.0 = Debug|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|x64.ActiveCfg = Debug|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|x64.Build.0 = Debug|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|Win32.ActiveCfg = Release|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|Win32.Build.0 = Release|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|x64.ActiveCfg = Release|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|x64.Build.0 = Release|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|x64.Build.0 = Release|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|Win32.ActiveCfg = Debug|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|Win32.Build.0 = Debug|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|x64.ActiveCfg = Debug|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|x64.Build.0 = Debug|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|Win32.ActiveCfg = Release|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|Win32.Build.0 = Release|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|x64.ActiveCfg = Release|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|x64.Build.0 = Release|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|x64.Build.0 = Release|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|Win32.ActiveCfg = Debug|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|Win32.Build.0 = Debug|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|x64.ActiveCfg = Debug|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|x64.Build.0 = Debug|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|Win32.ActiveCfg = Release|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|Win32.Build.0 = Release|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|x64.ActiveCfg = Release|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|x64.Build.0 = Release|x64 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|x64.Build.0 = Release|x64 {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|Win32.ActiveCfg = Debug|Win32 {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|Win32.Build.0 = Debug|Win32 {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|x64.ActiveCfg = Debug|x64 {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|x64.Build.0 = Debug|x64 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|Win32.ActiveCfg = Release|Win32 {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|Win32.Build.0 = Release|Win32 {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|x64.ActiveCfg = Release|x64 {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|x64.Build.0 = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/build/win32/vs10/glib.vcxproj b/build/win32/vs10/glib.vcxproj new file mode 100644 index 0000000..1f8d1db --- /dev/null +++ b/build/win32/vs10/glib.vcxproj @@ -0,0 +1,755 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Debug_BundledPCRE + Win32 + + + Debug_BundledPCRE + x64 + + + Release + Win32 + + + Release + x64 + + + Release_BundledPCRE + Win32 + + + Release_BundledPCRE + x64 + + + + {12BCA020-EABF-429E-876A-A476BC9C10C0} + glib + Win32Proj + + + + DynamicLibrary + MultiByte + true + v100 + + + DynamicLibrary + MultiByte + true + v100 + + + DynamicLibrary + MultiByte + v100 + + + DynamicLibrary + MultiByte + v100 + + + DynamicLibrary + MultiByte + true + v100 + + + DynamicLibrary + MultiByte + true + v100 + + + DynamicLibrary + MultiByte + v100 + + + DynamicLibrary + MultiByte + v100 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + Debug\$(Platform)\bin\ + true + true + Debug\$(Platform)\bin\ + true + false + Release\$(Platform)\bin\ + false + false + Release\$(Platform)\bin\ + false + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;$(UseSystemPCREDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + ws2_32.lib;winmm.lib;pcred.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;$(UseSystemPCREDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;pcred.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + $(GLibBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + $(GLibBuildDefines);$(UseSystemPCREDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;pcre.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + $(GLibBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + $(GLibBuildDefines);$(UseSystemPCREDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;pcre.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + + + + + + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + + + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + + + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + + + + + + + + + diff --git a/build/win32/vs10/glib.vcxproj.filters b/build/win32/vs10/glib.vcxproj.filters new file mode 100644 index 0000000..f9140f0 --- /dev/null +++ b/build/win32/vs10/glib.vcxproj.filters @@ -0,0 +1,202 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {bb961775-fd45-4205-b1fd-901c3c8fd64c} + + + {f630c518-4c58-4dfa-ab43-5fa0b0eb10f1} + + + {9fef0e23-cf71-48aa-979b-7eb84df56143} + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\libcharset + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + + Resource Files + Resource Files + + + + Resource Files + + + diff --git a/build/win32/vs10/glib.vcxproj.filtersin b/build/win32/vs10/glib.vcxproj.filtersin index fc40dc9..853efb6 100644 --- a/build/win32/vs10/glib.vcxproj.filtersin +++ b/build/win32/vs10/glib.vcxproj.filtersin @@ -24,7 +24,7 @@ -#include "libglib.vs10.sourcefiles.filters" +#include "glib.vs10.sourcefiles.filters" Source Files @@ -103,6 +103,9 @@ Source Files\pcre + + Source Files\pcre + Source Files\pcre @@ -116,4 +119,4 @@ Resource Files - \ No newline at end of file + diff --git a/build/win32/vs10/glib.vcxprojin b/build/win32/vs10/glib.vcxprojin index 0aa9087..a7a9372 100644 --- a/build/win32/vs10/glib.vcxprojin +++ b/build/win32/vs10/glib.vcxprojin @@ -1,14 +1,6 @@  - - Debug_ExtPCRE - Win32 - - - Debug_ExtPCRE - x64 - Debug Win32 @@ -17,12 +9,12 @@ Debug x64 - - Release_ExtPCRE + + Debug_BundledPCRE Win32 - - Release_ExtPCRE + + Debug_BundledPCRE x64 @@ -33,6 +25,14 @@ Release x64 + + Release_BundledPCRE + Win32 + + + Release_BundledPCRE + x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0} @@ -40,46 +40,46 @@ Win32Proj - + DynamicLibrary MultiByte true v100 - + DynamicLibrary MultiByte true v100 - + DynamicLibrary MultiByte v100 - + DynamicLibrary MultiByte v100 - + DynamicLibrary MultiByte true v100 - + DynamicLibrary MultiByte true v100 - + DynamicLibrary MultiByte v100 - + DynamicLibrary MultiByte v100 @@ -87,15 +87,11 @@ - - - - - + @@ -103,7 +99,7 @@ - + @@ -111,7 +107,7 @@ - + @@ -119,22 +115,26 @@ + + + + + true + Debug\$(Platform)\bin\ true - true - Debug\$(Platform)\bin\ + true + Debug\$(Platform)\bin\ true - true - Debug\$(Platform)\bin\ + false + Release\$(Platform)\bin\ false - false - Release\$(Platform)\bin\ + false + Release\$(Platform)\bin\ false - false - Release\$(Platform)\bin\ - + Disabled _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;%(PreprocessorDefinitions) @@ -152,15 +152,15 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX86 - + Disabled _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;$(UseSystemPCREDefines);%(PreprocessorDefinitions) @@ -178,15 +178,15 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX86 - + Disabled _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;%(PreprocessorDefinitions) @@ -204,15 +204,15 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX64 - + Disabled _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;$(UseSystemPCREDefines);%(PreprocessorDefinitions) @@ -230,15 +230,15 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX64 - + $(GLibBuildDefines);%(PreprocessorDefinitions) MultiThreadedDLL @@ -253,17 +253,17 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows true true false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX86 - + $(GLibBuildDefines);$(UseSystemPCREDefines);%(PreprocessorDefinitions) MultiThreadedDLL @@ -278,17 +278,17 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows true true false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX86 - + $(GLibBuildDefines);%(PreprocessorDefinitions) MultiThreadedDLL @@ -303,17 +303,17 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows true true false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX64 - + $(GLibBuildDefines);$(UseSystemPCREDefines);%(PreprocessorDefinitions) MultiThreadedDLL @@ -328,31 +328,31 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows true true false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX64 -#include "libglib.vs10.sourcefiles" +#include "glib.vs10.sourcefiles" - $(LocalCharsetDefs);%(PreprocessorDefinitions) - $(LocalCharsetDefs);%(PreprocessorDefinitions) $(LocalCharsetDefs);%(PreprocessorDefinitions) $(LocalCharsetDefs);%(PreprocessorDefinitions) - $(LocalCharsetDefs);%(PreprocessorDefinitions) - $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) $(LocalCharsetDefs);%(PreprocessorDefinitions) $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) @@ -360,296 +360,310 @@ - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true - $(GLibBundledPCREDefines);%(PreprocessorDefinitions) - $(GLibBundledPCREUndefs) %(AdditionalOptions) - true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) Copying config.h from config.h.win32... $(GenConfigH) ..\..\..\config.h;%(Outputs) - Copying config.h from config.h.win32... - $(GenConfigH) - ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) Copying config.h from config.h.win32... $(GenConfigH) ..\..\..\config.h;%(Outputs) - Copying config.h from config.h.win32... - $(GenConfigH) - ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) Copying config.h from config.h.win32... $(GenConfigH) ..\..\..\config.h;%(Outputs) - Copying config.h from config.h.win32... - $(GenConfigH) - ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) Copying config.h from config.h.win32... $(GenConfigH) ..\..\..\config.h;%(Outputs) - Copying config.h from config.h.win32... - $(GenConfigH) - ..\..\..\config.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) Copying glibconfig.h from glibconfig.h.win32... $(GenGLibConfigH) ..\..\..\glib\glibconfig.h;%(Outputs) - Copying glibconfig.h from glibconfig.h.win32... - $(GenGLibConfigH) - ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) Copying glibconfig.h from glibconfig.h.win32... $(GenGLibConfigH) ..\..\..\glib\glibconfig.h;%(Outputs) - Copying glibconfig.h from glibconfig.h.win32... - $(GenGLibConfigH) - ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) Copying glibconfig.h from glibconfig.h.win32... $(GenGLibConfigH) ..\..\..\glib\glibconfig.h;%(Outputs) - Copying glibconfig.h from glibconfig.h.win32... - $(GenGLibConfigH) - ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) Copying glibconfig.h from glibconfig.h.win32... $(GenGLibConfigH) ..\..\..\glib\glibconfig.h;%(Outputs) - Copying glibconfig.h from glibconfig.h.win32... - $(GenGLibConfigH) - ..\..\..\glib\glibconfig.h;%(Outputs) diff --git a/build/win32/vs10/gmodule.vcxproj b/build/win32/vs10/gmodule.vcxproj index 93e7328..d4f5070 100644 --- a/build/win32/vs10/gmodule.vcxproj +++ b/build/win32/vs10/gmodule.vcxproj @@ -89,11 +89,11 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX86 @@ -111,13 +111,13 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows true true false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX86 @@ -138,11 +138,11 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX64 @@ -160,13 +160,13 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows true true false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX64 diff --git a/build/win32/vs10/gobject.vcxproj b/build/win32/vs10/gobject.vcxproj new file mode 100644 index 0000000..a3cd6c8 --- /dev/null +++ b/build/win32/vs10/gobject.vcxproj @@ -0,0 +1,225 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {F172EFFC-E30F-4593-809E-DB2024B1E753} + gobject + Win32Proj + + + + DynamicLibrary + MultiByte + true + v100 + + + DynamicLibrary + MultiByte + v100 + + + DynamicLibrary + MultiByte + true + v100 + + + DynamicLibrary + MultiByte + v100 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;$(GObjectBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + $(GObjectBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GObjectBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + $(GObjectBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {c8afb8c3-fffd-460f-bc13-9ac25d7b117c} + false + + + + + + diff --git a/build/win32/vs10/gobject.vcxproj.filters b/build/win32/vs10/gobject.vcxproj.filters new file mode 100644 index 0000000..96e6da5 --- /dev/null +++ b/build/win32/vs10/gobject.vcxproj.filters @@ -0,0 +1,45 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + + + Resource Files + + + + Resource Files + + + diff --git a/build/win32/vs10/gobject.vcxproj.filtersin b/build/win32/vs10/gobject.vcxproj.filtersin index 7c7350a..3174802 100644 --- a/build/win32/vs10/gobject.vcxproj.filtersin +++ b/build/win32/vs10/gobject.vcxproj.filtersin @@ -15,7 +15,7 @@ -#include "libgobject.vs10.sourcefiles.filters" +#include "gobject.vs10.sourcefiles.filters" Resource Files diff --git a/build/win32/vs10/gobject.vcxprojin b/build/win32/vs10/gobject.vcxprojin index 71f8a48..b08bd5b 100644 --- a/build/win32/vs10/gobject.vcxprojin +++ b/build/win32/vs10/gobject.vcxprojin @@ -89,17 +89,16 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX86 - false $(GObjectBuildDefines);%(PreprocessorDefinitions) MultiThreadedDLL @@ -112,15 +111,13 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows true true - - false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX86 @@ -141,17 +138,16 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX64 - false $(GObjectBuildDefines);%(PreprocessorDefinitions) MultiThreadedDLL @@ -164,20 +160,18 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows true true - - false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX64 -#include "libgobject.vs10.sourcefiles" +#include "gobject.vs10.sourcefiles" diff --git a/build/win32/vs10/gthread.vcxproj b/build/win32/vs10/gthread.vcxproj index 8d16faf..118bcfc 100644 --- a/build/win32/vs10/gthread.vcxproj +++ b/build/win32/vs10/gthread.vcxproj @@ -89,11 +89,11 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX86 @@ -111,13 +111,13 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows true true false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX86 @@ -138,11 +138,11 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX64 @@ -160,13 +160,13 @@ $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll true $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib Windows true true false - $(TargetDir)$(ProjectName)-$(ApiVersion).lib MachineX64 diff --git a/build/win32/vs11/.gitignore b/build/win32/vs11/.gitignore deleted file mode 100644 index a7e3d4a..0000000 --- a/build/win32/vs11/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -gio.vcxproj -gio.vcxproj.filters -glib-compile-resources.vcxproj -glib-compile-resources.vcxproj.filters -glib-compile-schemas.vcxproj -glib-compile-schemas.vcxproj.filters -glib-genmarshal.vcxproj -glib-genmarshal.vcxproj.filters -glib.vcxproj -glib.vcxproj.filters -gmodule.vcxproj -gmodule.vcxproj.filters -gobject.vcxproj -gobject.vcxproj.filters -gresource.vcxproj -gresource.vcxproj.filters -gsettings.vcxproj -gsettings.vcxproj.filters -gspawn-win32-helper-console.vcxproj -gspawn-win32-helper-console.vcxproj.filters -gspawn-win32-helper.vcxproj -gspawn-win32-helper.vcxproj.filters -gthread.vcxproj -gthread.vcxproj.filters -install.vcxproj -glib.sln -README.txt -glib-build-defines.props -glib-install.props -glib-version-paths.props -glibprepbuild.props diff --git a/build/win32/vs11/Makefile.am b/build/win32/vs11/Makefile.am index 0f4090e..7900d7e 100644 --- a/build/win32/vs11/Makefile.am +++ b/build/win32/vs11/Makefile.am @@ -30,6 +30,7 @@ EXTRA_DIST = \ gdbus.vcxproj \ gdbus.vcxproj.filters \ glib-install.vcxproj \ + glib-install.vcxproj.filters \ glib-build-defines.props \ glib-install.props \ glib-version-paths.props \ @@ -37,10 +38,8 @@ EXTRA_DIST = \ DISTCLEANFILES = $(EXTRA_DIST) -MSVC_SLN = glib - MSVC_VER = 11 - +MSVC_FORMAT_VER = 12 MSVC_VER_LONG = 2012 include $(top_srcdir)/build/Makefile-newvs.am diff --git a/build/win32/vs11/Makefile.in b/build/win32/vs11/Makefile.in new file mode 100644 index 0000000..4e0ad3d --- /dev/null +++ b/build/win32/vs11/Makefile.in @@ -0,0 +1,662 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Centralized autotools file +# Create the Visual Studio 2012/2013/2015 project files +# from the Visual Studio 2010 project files + +# This autotools file, from GLib, can be used in other projects +# that have Visual Studio build support, and is copied into +# $(srcroot)/build/. + +# Author: Fan, Chun-wei +# November 05, 2012 + +# MSVC_VER_LONG: Long Version of Visual Studio (2012, 2013, 14 and so on) +# MSVC_VER: Short Version of Visual Studio (11 for 2012, 12 for 2013, 14 for 2015 and so on) +# MSVC_FORMAT_VER: Use 12 for MSVC 2012 through 2015 +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = build/win32/vs11 +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build/Makefile-newvs.am +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = \ + README.txt \ + glib.sln \ + glib.vcxproj \ + glib.vcxproj.filters \ + glib-genmarshal.vcxproj \ + glib-genmarshal.vcxproj.filters \ + gspawn-win32-helper-console.vcxproj \ + gspawn-win32-helper-console.vcxproj.filters \ + gspawn-win32-helper.vcxproj \ + gspawn-win32-helper.vcxproj.filters \ + gmodule.vcxproj \ + gmodule.vcxproj.filters \ + gobject.vcxproj \ + gobject.vcxproj.filters \ + gthread.vcxproj \ + gthread.vcxproj.filters \ + gio.vcxproj \ + gio.vcxproj.filters \ + glib-compile-schemas.vcxproj \ + glib-compile-schemas.vcxproj.filters \ + gsettings.vcxproj \ + gsettings.vcxproj.filters \ + glib-compile-resources.vcxproj \ + glib-compile-resources.vcxproj.filters \ + gresource.vcxproj \ + gresource.vcxproj.filters \ + gio-querymodules.vcxproj \ + gio-querymodules.vcxproj.filters \ + gdbus.vcxproj \ + gdbus.vcxproj.filters \ + glib-install.vcxproj \ + glib-install.vcxproj.filters \ + glib-build-defines.props \ + glib-install.props \ + glib-version-paths.props \ + glib-gen-srcs.props + +DISTCLEANFILES = $(EXTRA_DIST) +MSVC_VER = 11 +MSVC_FORMAT_VER = 12 +MSVC_VER_LONG = 2012 +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/build/Makefile-newvs.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/win32/vs11/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/win32/vs11/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/build/Makefile-newvs.am $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +%.sln: + sed 's/11\.00/$(MSVC_FORMAT_VER)\.00/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + sed 's/2010/$(MSVC_VER_LONG)/g' < $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@ + rm $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + +%.txt: + sed 's/vs10/vs$(MSVC_VER)/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + sed 's/VS10/VS$(MSVC_VER)/g' < $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@ + rm $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + +%.vcxproj: + if test -e $(top_srcdir)/build/win32/vs10/$@; then \ + sed 's/v100/v$(MSVC_VER)0/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + else \ + sed 's/v100/v$(MSVC_VER)0/g' < $(top_builddir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + fi + +%.props: + if test -e $(top_srcdir)/build/win32/vs10/$@; then \ + sed 's/10<\/VSVer>/$(MSVC_VER)<\/VSVer>/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + else \ + sed 's/10<\/VSVer>/$(MSVC_VER)<\/VSVer>/g' < $(top_builddir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + fi + +%.vcxproj.filters: + if test -e $(top_srcdir)/build/win32/vs10/$@; then \ + cp $(top_srcdir)/build/win32/vs10/$@ $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + else \ + cp $(top_builddir)/build/win32/vs10/$@ $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + fi + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/build/win32/vs11/README.txt b/build/win32/vs11/README.txt new file mode 100644 index 0000000..6236ce0 --- /dev/null +++ b/build/win32/vs11/README.txt @@ -0,0 +1,91 @@ +Please do not compile this package (GLib) in paths that contain +spaces in them-as strange problems may occur during compilation or during +the use of the library. + +Please refer to the following GNOME Live! page for more detailed +instructions on building GLib and its dependencies with Visual C++: + +https://wiki.gnome.org/Projects/GTK%2B/Win32/MSVCCompilationOfGTKStack + +This VS11 solution and the projects it includes are intented to be used +in a GLib source tree unpacked from a tarball. In a git checkout you +first need to use some Unix-like environment or run build/win32/setup.py, +which will do the work for you: + +$python build/win32/setup.py --perl path_to_your_perl.exe + +for more usage on this script, run +$python build/win32/setup.py -h/--help + +The required dependencies are zlib, proxy-libintl and LibFFI. Fetch the latest +proxy-libintl-dev and zlib-dev zipfiles from +http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/ for 32-bit +builds, and correspondingly +http://ftp.gnome.org/pub/GNOME/binaries/win64/dependencies/ for 64-bit +builds. + +One may wish to build his/her own ZLib-It is recommended that ZLib is +built using the win32/Makefile.msc makefile with VS11 with the ASM routines +to avoid linking problems-see win32/Makefile.msc in ZLib for more details. + +For LibFFI, please get version 3.0.10 or later, as Visual C++ build support +was added in the 3.0.10 release series. Please see the README file that +comes with the LibFFI source package for more details on how to build LibFFI +on Visual C++-please note that the mozilla-build package from Mozilla is needed +in order to build LibFFI on Windows. + +Please note, although using one's own existing PCRE installation to build GLib +is possible, it is still recommended to build PCRE during the process of building +GLib (i.e. using the Debug or Release configurations), as GLib's bundled PCRE +has been patched to work optimally with GLib. If building against an existing +PCRE is desired, use the(BuildType)_ExtPCRE configurations, but one needs to ensure +that the existing PCRE is: +-Built with VS11 +-Unicode support is built in (please see the CMake options for this) +-It is built with the Multithreaded DLL (/MD, for release builds) or the + Multithreaded DLL Debug (/MDd, for debug builds) + +If using static builds of PCRE, please add PCRE_STATIC to the "Preprocessor +Definitions" of the glib project settings. + +Please be aware that the GLib's regex test program will only pass with PCRE directly +built into GLib. + +Set up the source tree as follows under some arbitrary top +folder : + +\ +\vs11\ + +*this* file you are now reading is thus located at +\\build\win32\vs11\README. + + is either Win32 or x64, as in VS11 project files. + +You should unpack the proxy-libintl-dev zip file into +\vs11\, so that for instance libintl.h end up at +\vs11\\include\libintl.h. + +For LibFFI, one should also put the generated ffi.h and ffitarget.h +into \vs11\\include\ and the compiled static libffi.lib +(or copy libffi-convenience.lib into libffi.lib) into +\vs11\\lib\. + +The "install" project will copy build results and headers into their +appropriate location under \vs11\. For instance, +built DLLs go into \vs11\\bin, built LIBs into +\vs11\\lib and GLib headers into +\vs11\\include\glib-2.0. This is then from where +project files higher in the stack are supposed to look for them, not +from a specific GLib source tree. + +Note: If you see C4819 errors and you are compiling GLib on a DBCS +(Chinese/Korean/Japanese) version of Windows, you may need to switch +to an English locale in Control Panel->Region and Languages->System-> +Change System Locale, reboot and rebuild to ensure GLib, Pango, GDK-Pixbuf, +ATK and GTK+ is built correctly. This is due to a bug in Visual C++ running +on DBCS locales, and also affects many other opensource projects which are +built with Visual C++, including but not limited to QT and the Mozilla apps. + +--Tor Lillqvist +--Updated by Chun-wei Fan diff --git a/build/win32/vs11/gdbus.vcxproj b/build/win32/vs11/gdbus.vcxproj new file mode 100644 index 0000000..217682a --- /dev/null +++ b/build/win32/vs11/gdbus.vcxproj @@ -0,0 +1,180 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {95A1571F-61BE-4C51-BE53-2F2DAB280687} + gresource + Win32Proj + + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs11/gdbus.vcxproj.filters b/build/win32/vs11/gdbus.vcxproj.filters new file mode 100644 index 0000000..ce37c1c --- /dev/null +++ b/build/win32/vs11/gdbus.vcxproj.filters @@ -0,0 +1,14 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs11/gio-querymodules.vcxproj b/build/win32/vs11/gio-querymodules.vcxproj new file mode 100644 index 0000000..0253ad3 --- /dev/null +++ b/build/win32/vs11/gio-querymodules.vcxproj @@ -0,0 +1,184 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {95A1571F-61BE-4C51-BE53-2F2DAB280686} + gresource + Win32Proj + + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;$(GioInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;$(GioInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + $(GioInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + $(GioInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + {4214047c-f5c1-40b3-8369-5dced8c32770} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs11/gio-querymodules.vcxproj.filters b/build/win32/vs11/gio-querymodules.vcxproj.filters new file mode 100644 index 0000000..79fbfa1 --- /dev/null +++ b/build/win32/vs11/gio-querymodules.vcxproj.filters @@ -0,0 +1,14 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs11/gio.vcxproj b/build/win32/vs11/gio.vcxproj new file mode 100644 index 0000000..3ef7748 --- /dev/null +++ b/build/win32/vs11/gio.vcxproj @@ -0,0 +1,420 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {F3D1583C-5613-4809-BD98-7CC1C1276F92} + gio + + + + DynamicLibrary + MultiByte + true + v110 + + + DynamicLibrary + MultiByte + v110 + + + DynamicLibrary + MultiByte + true + v110 + + + DynamicLibrary + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + _DEBUG;$(GioBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + $(GioBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + Disabled + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + _DEBUG;$(GioBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + $(GioBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {4214047c-f5c1-40b3-8369-5dced8c32770} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + + + + diff --git a/build/win32/vs11/gio.vcxproj.filters b/build/win32/vs11/gio.vcxproj.filters new file mode 100644 index 0000000..3d3c528 --- /dev/null +++ b/build/win32/vs11/gio.vcxproj.filters @@ -0,0 +1,229 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + + + Resource Files + + + + Resource Files + + + diff --git a/build/win32/vs11/glib-build-defines.props b/build/win32/vs11/glib-build-defines.props new file mode 100644 index 0000000..9634e5b --- /dev/null +++ b/build/win32/vs11/glib-build-defines.props @@ -0,0 +1,84 @@ + + + + + + + PCRE_STATIC;LINK_SIZE=2;MAX_NAME_SIZE=32;MAX_NAME_COUNT=10000;NEWLINE=-1;POSIX_MALLOC_THRESHOLD=10;MATCH_LIMIT=10000000;MATCH_LIMIT_RECURSION=10000000;SUPPORT_UCP;SUPPORT_UTF;SUPPORT_UTF8;G_LOG_DOMAIN="GLib-GRegex" + PCRE_EXP_DECL=__declspec(dllexport)extern;PCRE_EXP_DEFN= + -UBSR_ANYCRLF -UEBCDIC + LIBDIR="blah" + DLL_EXPORT + USE_SYSTEM_PCRE + GLIB_COMPILATION + GIO_COMPILATION + $(GLibInBuildMacro);$(DllExportDefines);G_LOG_DOMAIN="GLib" + G_LOG_DOMAIN="GThread" + G_LOG_DOMAIN="GModule" + GOBJECT_COMPILATION;$(DllExportDefines);G_LOG_DOMAIN="GLib-GObject";FFI_BUILDING + $(GioInBuildMacro);G_LOG_DOMAIN="GLib-GIO";$(DllExportDefines) + ws2_32.lib;shlwapi.lib;dnsapi.lib;iphlpapi.lib + + + <_PropertySheetDisplayName>glibbuilddefinesprops + $(SolutionDir)$(Configuration)\$(PlatformName)\bin\ + $(SolutionDir)$(Configuration)\$(PlatformName)\obj\$(ProjectName)\ + + + + ..\..\..;..\..\..\glib;$(GlibEtcInstallRoot)\include;%(AdditionalIncludeDirectories) + HAVE_CONFIG_H;%(PreprocessorDefinitions) + msvc_recommended_pragmas.h;%(ForcedIncludeFiles) + true + /d2Zi+ %(AdditionalOptions) + + + intl.lib;%(AdditionalDependencies) + $(GlibEtcInstallRoot)\lib;%(AdditionalLibraryDirectories) + + + + + $(GLibBundledPCREDefines) + + + $(GlibBundledPCREExportDefines) + + + $(GLibBundledPCREUndefs) + + + $(LocalCharsetDefs) + + + $(DllExportDefines) + + + $(UseSystemPCREDefines) + + + $(GLibInBuildMacro) + + + $(GioInBuildMacro) + + + $(GLibBuildDefines) + + + $(GThreadBuildDefines) + + + $(GModuleBuildDefines) + + + $(GObjectBuildDefines) + + + $(GioBuildDefines) + + + $(WindowsNetworkingLibs) + + + diff --git a/build/win32/vs11/glib-compile-resources.vcxproj b/build/win32/vs11/glib-compile-resources.vcxproj new file mode 100644 index 0000000..0870333 --- /dev/null +++ b/build/win32/vs11/glib-compile-resources.vcxproj @@ -0,0 +1,181 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A} + glibcompileresources + Win32Proj + + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + _DEBUG;$(GioInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + _DEBUG;$(GioInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + $(GioInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + $(GioInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + + + + diff --git a/build/win32/vs11/glib-compile-resources.vcxproj.filters b/build/win32/vs11/glib-compile-resources.vcxproj.filters new file mode 100644 index 0000000..4b5a823 --- /dev/null +++ b/build/win32/vs11/glib-compile-resources.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + Source Files + Source Files + + diff --git a/build/win32/vs11/glib-compile-schemas.vcxproj b/build/win32/vs11/glib-compile-schemas.vcxproj new file mode 100644 index 0000000..66bde10 --- /dev/null +++ b/build/win32/vs11/glib-compile-schemas.vcxproj @@ -0,0 +1,181 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {015D69D0-8B42-438A-ADAE-052AC036E065} + glibcompileschemas + Win32Proj + + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + + + + diff --git a/build/win32/vs11/glib-compile-schemas.vcxproj.filters b/build/win32/vs11/glib-compile-schemas.vcxproj.filters new file mode 100644 index 0000000..1bd75e2 --- /dev/null +++ b/build/win32/vs11/glib-compile-schemas.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + Source Files + Source Files + + diff --git a/build/win32/vs11/glib-gen-srcs.props b/build/win32/vs11/glib-gen-srcs.props new file mode 100644 index 0000000..64a20ea --- /dev/null +++ b/build/win32/vs11/glib-gen-srcs.props @@ -0,0 +1,33 @@ + + + + + + + copy ..\..\..\config.h.win32 ..\..\..\config.h + copy ..\..\..\glib\glibconfig.h.win32 ..\..\..\glib\glibconfig.h + copy ..\..\..\gmodule\gmoduleconf.h.win32 ..\..\..\gmodule\gmoduleconf.h + copy ..\..\..\gio\gnetworking.h.win32 ..\..\..\gio\gnetworking.h + if exist $(PythonPath)\python.exe $(PythonPath)\python.exe ..\replace.py --action=replace-var --input=..\..\..\gobject\glib-mkenums.in --output=..\..\..\gobject\glib-mkenums --var=GLIB_VERSION --outstring=$(GlibVersion) + + + <_PropertySheetDisplayName>glibgensrcsprops + + + + $(GenConfigH) + + + $(GenGLibConfigH) + + + $(GenGModuleConfH) + + + $(GenGNetworkingH) + + + $(GenGLibMKEnums) + + + diff --git a/build/win32/vs11/glib-genmarshal.vcxproj b/build/win32/vs11/glib-genmarshal.vcxproj new file mode 100644 index 0000000..861e1bf --- /dev/null +++ b/build/win32/vs11/glib-genmarshal.vcxproj @@ -0,0 +1,173 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {BD12E835-5C52-4E5D-8234-1C579F33E27A} + glibgenmarshal + Win32Proj + + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + true + Console + false + + + MachineX86 + + + + + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs11/glib-genmarshal.vcxproj.filters b/build/win32/vs11/glib-genmarshal.vcxproj.filters new file mode 100644 index 0000000..12b29af --- /dev/null +++ b/build/win32/vs11/glib-genmarshal.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs11/glib-install.props b/build/win32/vs11/glib-install.props new file mode 100644 index 0000000..a3d720a --- /dev/null +++ b/build/win32/vs11/glib-install.props @@ -0,0 +1,353 @@ + + + + + + + $(SolutionDir)$(Configuration)\$(Platform)\bin + $(BinDir)\$(GlibDllPrefix)glib(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gthread(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gmodule(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gobject(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gio(GlibDllSuffix).dll + $(BinDir)\glib-genmarshal.exe;$(BinDir)\glib-compile-schemas.exe;$(BinDir)\gsettings.exe;$(BinDir)\glib-compile-resources.exe;$(BinDir)\gresource.exe;$(BinDir)\gio-querymodules.exe;$(BinDir)\gdbus.exe + $(BinDir)\gspawn-win32-helper.exe;$(BinDir)\gspawn-win32-helper-console.exe + $(BinDir)\gspawn-win64-helper.exe;$(BinDir)\gspawn-win64-helper-console.exe + +mkdir $(CopyDir) +mkdir $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)glib$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)glib$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gthread$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gthread$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gmodule$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gmodule$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gobject$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gobject$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gio$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gio$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\glib-genmarshal.exe $(CopyDir)\bin +copy $(BinDir)\glib-genmarshal.pdb $(CopyDir)\bin +copy $(BinDir)\gspawn-win*-helper*.exe $(CopyDir)\bin +copy $(BinDir)\gspawn-win*-helper*.pdb $(CopyDir)\bin +copy $(BinDir)\glib-compile-schemas.exe $(CopyDir)\bin +copy $(BinDir)\glib-compile-schemas.pdb $(CopyDir)\bin +copy $(BinDir)\gsettings.exe $(CopyDir)\bin +copy $(BinDir)\gsettings.pdb $(CopyDir)\bin +copy $(BinDir)\glib-compile-resources.exe $(CopyDir)\bin +copy $(BinDir)\glib-compile-resources.pdb $(CopyDir)\bin +copy $(BinDir)\gresource.exe $(CopyDir)\bin +copy $(BinDir)\gresource.pdb $(CopyDir)\bin +copy $(BinDir)\gio-querymodules.exe $(CopyDir)\bin +copy $(BinDir)\gio-querymodules.pdb $(CopyDir)\bin +copy $(BinDir)\gdbus.exe $(CopyDir)\bin +copy $(BinDir)\gdbus.pdb $(CopyDir)\bin +copy ..\..\..\gio\gdbus-2.0\codegen\gdbus-codegen.in $(CopyDir)\bin\gdbus-codegen +if exist ..\..\..\gobject\glib-mkenums copy ..\..\..\gobject\glib-mkenums $(CopyDir)\bin +mkdir $(CopyDir)\include\glib-$(ApiVersion)\glib\deprecated +copy ..\..\..\msvc_recommended_pragmas.h $(CopyDir)\include\glib-$(ApiVersion) +copy ..\..\..\glib\glib.h $(CopyDir)\include\glib-$(ApiVersion) +copy ..\..\..\glib\glib-object.h $(CopyDir)\include\glib-$(ApiVersion) +copy ..\..\..\glib\deprecated\gallocator.h $(CopyDir)\include\glib-2.0\glib\deprecated\gallocator.h +copy ..\..\..\glib\deprecated\gcache.h $(CopyDir)\include\glib-2.0\glib\deprecated\gcache.h +copy ..\..\..\glib\deprecated\gcompletion.h $(CopyDir)\include\glib-2.0\glib\deprecated\gcompletion.h +copy ..\..\..\glib\deprecated\gmain.h $(CopyDir)\include\glib-2.0\glib\deprecated\gmain.h +copy ..\..\..\glib\deprecated\grel.h $(CopyDir)\include\glib-2.0\glib\deprecated\grel.h +copy ..\..\..\glib\deprecated\gthread.h $(CopyDir)\include\glib-2.0\glib\deprecated\gthread.h +copy ..\..\..\glib\glib-autocleanups.h $(CopyDir)\include\glib-2.0\glib\glib-autocleanups.h +copy ..\..\..\glib\galloca.h $(CopyDir)\include\glib-2.0\glib\galloca.h +copy ..\..\..\glib\garray.h $(CopyDir)\include\glib-2.0\glib\garray.h +copy ..\..\..\glib\gasyncqueue.h $(CopyDir)\include\glib-2.0\glib\gasyncqueue.h +copy ..\..\..\glib\gatomic.h $(CopyDir)\include\glib-2.0\glib\gatomic.h +copy ..\..\..\glib\gbacktrace.h $(CopyDir)\include\glib-2.0\glib\gbacktrace.h +copy ..\..\..\glib\gbase64.h $(CopyDir)\include\glib-2.0\glib\gbase64.h +copy ..\..\..\glib\gbitlock.h $(CopyDir)\include\glib-2.0\glib\gbitlock.h +copy ..\..\..\glib\gbookmarkfile.h $(CopyDir)\include\glib-2.0\glib\gbookmarkfile.h +copy ..\..\..\glib\gbytes.h $(CopyDir)\include\glib-2.0\glib\gbytes.h +copy ..\..\..\glib\gcharset.h $(CopyDir)\include\glib-2.0\glib\gcharset.h +copy ..\..\..\glib\gchecksum.h $(CopyDir)\include\glib-2.0\glib\gchecksum.h +copy ..\..\..\glib\gconvert.h $(CopyDir)\include\glib-2.0\glib\gconvert.h +copy ..\..\..\glib\gdataset.h $(CopyDir)\include\glib-2.0\glib\gdataset.h +copy ..\..\..\glib\gdate.h $(CopyDir)\include\glib-2.0\glib\gdate.h +copy ..\..\..\glib\gdatetime.h $(CopyDir)\include\glib-2.0\glib\gdatetime.h +copy ..\..\..\glib\gdir.h $(CopyDir)\include\glib-2.0\glib\gdir.h +copy ..\..\..\glib\genviron.h $(CopyDir)\include\glib-2.0\glib\genviron.h +copy ..\..\..\glib\gerror.h $(CopyDir)\include\glib-2.0\glib\gerror.h +copy ..\..\..\glib\gfileutils.h $(CopyDir)\include\glib-2.0\glib\gfileutils.h +copy ..\..\..\glib\ggettext.h $(CopyDir)\include\glib-2.0\glib\ggettext.h +copy ..\..\..\glib\ghash.h $(CopyDir)\include\glib-2.0\glib\ghash.h +copy ..\..\..\glib\ghmac.h $(CopyDir)\include\glib-2.0\glib\ghmac.h +copy ..\..\..\glib\ghook.h $(CopyDir)\include\glib-2.0\glib\ghook.h +copy ..\..\..\glib\ghostutils.h $(CopyDir)\include\glib-2.0\glib\ghostutils.h +copy ..\..\..\glib\gi18n.h $(CopyDir)\include\glib-2.0\glib\gi18n.h +copy ..\..\..\glib\gi18n-lib.h $(CopyDir)\include\glib-2.0\glib\gi18n-lib.h +copy ..\..\..\glib\giochannel.h $(CopyDir)\include\glib-2.0\glib\giochannel.h +copy ..\..\..\glib\gkeyfile.h $(CopyDir)\include\glib-2.0\glib\gkeyfile.h +copy ..\..\..\glib\glist.h $(CopyDir)\include\glib-2.0\glib\glist.h +copy ..\..\..\glib\gmacros.h $(CopyDir)\include\glib-2.0\glib\gmacros.h +copy ..\..\..\glib\gmain.h $(CopyDir)\include\glib-2.0\glib\gmain.h +copy ..\..\..\glib\gmappedfile.h $(CopyDir)\include\glib-2.0\glib\gmappedfile.h +copy ..\..\..\glib\gmarkup.h $(CopyDir)\include\glib-2.0\glib\gmarkup.h +copy ..\..\..\glib\gmem.h $(CopyDir)\include\glib-2.0\glib\gmem.h +copy ..\..\..\glib\gmessages.h $(CopyDir)\include\glib-2.0\glib\gmessages.h +copy ..\..\..\glib\gnode.h $(CopyDir)\include\glib-2.0\glib\gnode.h +copy ..\..\..\glib\goption.h $(CopyDir)\include\glib-2.0\glib\goption.h +copy ..\..\..\glib\gpattern.h $(CopyDir)\include\glib-2.0\glib\gpattern.h +copy ..\..\..\glib\gpoll.h $(CopyDir)\include\glib-2.0\glib\gpoll.h +copy ..\..\..\glib\gprimes.h $(CopyDir)\include\glib-2.0\glib\gprimes.h +copy ..\..\..\glib\gqsort.h $(CopyDir)\include\glib-2.0\glib\gqsort.h +copy ..\..\..\glib\gquark.h $(CopyDir)\include\glib-2.0\glib\gquark.h +copy ..\..\..\glib\gqueue.h $(CopyDir)\include\glib-2.0\glib\gqueue.h +copy ..\..\..\glib\grand.h $(CopyDir)\include\glib-2.0\glib\grand.h +copy ..\..\..\glib\gregex.h $(CopyDir)\include\glib-2.0\glib\gregex.h +copy ..\..\..\glib\gscanner.h $(CopyDir)\include\glib-2.0\glib\gscanner.h +copy ..\..\..\glib\gsequence.h $(CopyDir)\include\glib-2.0\glib\gsequence.h +copy ..\..\..\glib\gshell.h $(CopyDir)\include\glib-2.0\glib\gshell.h +copy ..\..\..\glib\gslice.h $(CopyDir)\include\glib-2.0\glib\gslice.h +copy ..\..\..\glib\gslist.h $(CopyDir)\include\glib-2.0\glib\gslist.h +copy ..\..\..\glib\gspawn.h $(CopyDir)\include\glib-2.0\glib\gspawn.h +copy ..\..\..\glib\gstdio.h $(CopyDir)\include\glib-2.0\glib\gstdio.h +copy ..\..\..\glib\gstrfuncs.h $(CopyDir)\include\glib-2.0\glib\gstrfuncs.h +copy ..\..\..\glib\gtestutils.h $(CopyDir)\include\glib-2.0\glib\gtestutils.h +copy ..\..\..\glib\gstring.h $(CopyDir)\include\glib-2.0\glib\gstring.h +copy ..\..\..\glib\gstringchunk.h $(CopyDir)\include\glib-2.0\glib\gstringchunk.h +copy ..\..\..\glib\gthread.h $(CopyDir)\include\glib-2.0\glib\gthread.h +copy ..\..\..\glib\gthreadpool.h $(CopyDir)\include\glib-2.0\glib\gthreadpool.h +copy ..\..\..\glib\gtimer.h $(CopyDir)\include\glib-2.0\glib\gtimer.h +copy ..\..\..\glib\gtimezone.h $(CopyDir)\include\glib-2.0\glib\gtimezone.h +copy ..\..\..\glib\gtrashstack.h $(CopyDir)\include\glib-2.0\glib\gtrashstack.h +copy ..\..\..\glib\gtree.h $(CopyDir)\include\glib-2.0\glib\gtree.h +copy ..\..\..\glib\gtypes.h $(CopyDir)\include\glib-2.0\glib\gtypes.h +copy ..\..\..\glib\gunicode.h $(CopyDir)\include\glib-2.0\glib\gunicode.h +copy ..\..\..\glib\gurifuncs.h $(CopyDir)\include\glib-2.0\glib\gurifuncs.h +copy ..\..\..\glib\gutils.h $(CopyDir)\include\glib-2.0\glib\gutils.h +copy ..\..\..\glib\gvarianttype.h $(CopyDir)\include\glib-2.0\glib\gvarianttype.h +copy ..\..\..\glib\gvariant.h $(CopyDir)\include\glib-2.0\glib\gvariant.h +copy ..\..\..\glib\gversion.h $(CopyDir)\include\glib-2.0\glib\gversion.h +copy ..\..\..\glib\gversionmacros.h $(CopyDir)\include\glib-2.0\glib\gversionmacros.h +copy ..\..\..\glib\gwin32.h $(CopyDir)\include\glib-2.0\glib\gwin32.h +copy ..\..\..\glib\gprintf.h $(CopyDir)\include\glib-2.0\glib\gprintf.h +copy ..\..\..\gmodule\gmodule.h $(CopyDir)\include\glib-$(ApiVersion) +mkdir $(CopyDir)\include\glib-$(ApiVersion)\gobject +copy ..\..\..\gobject\gobject-autocleanups.h $(CopyDir)\include\glib-2.0\gobject\gobject-autocleanups.h +copy ..\..\..\gobject\glib-types.h $(CopyDir)\include\glib-2.0\gobject\glib-types.h +copy ..\..\..\gobject\gbinding.h $(CopyDir)\include\glib-2.0\gobject\gbinding.h +copy ..\..\..\gobject\gboxed.h $(CopyDir)\include\glib-2.0\gobject\gboxed.h +copy ..\..\..\gobject\gclosure.h $(CopyDir)\include\glib-2.0\gobject\gclosure.h +copy ..\..\..\gobject\genums.h $(CopyDir)\include\glib-2.0\gobject\genums.h +copy ..\..\..\gobject\gmarshal.h $(CopyDir)\include\glib-2.0\gobject\gmarshal.h +copy ..\..\..\gobject\gobject.h $(CopyDir)\include\glib-2.0\gobject\gobject.h +copy ..\..\..\gobject\gparam.h $(CopyDir)\include\glib-2.0\gobject\gparam.h +copy ..\..\..\gobject\gparamspecs.h $(CopyDir)\include\glib-2.0\gobject\gparamspecs.h +copy ..\..\..\gobject\gsignal.h $(CopyDir)\include\glib-2.0\gobject\gsignal.h +copy ..\..\..\gobject\gsourceclosure.h $(CopyDir)\include\glib-2.0\gobject\gsourceclosure.h +copy ..\..\..\gobject\gtype.h $(CopyDir)\include\glib-2.0\gobject\gtype.h +copy ..\..\..\gobject\gtypemodule.h $(CopyDir)\include\glib-2.0\gobject\gtypemodule.h +copy ..\..\..\gobject\gtypeplugin.h $(CopyDir)\include\glib-2.0\gobject\gtypeplugin.h +copy ..\..\..\gobject\gvalue.h $(CopyDir)\include\glib-2.0\gobject\gvalue.h +copy ..\..\..\gobject\gvaluearray.h $(CopyDir)\include\glib-2.0\gobject\gvaluearray.h +copy ..\..\..\gobject\gvaluecollector.h $(CopyDir)\include\glib-2.0\gobject\gvaluecollector.h +copy ..\..\..\gobject\gvaluetypes.h $(CopyDir)\include\glib-2.0\gobject\gvaluetypes.h +copy ..\..\..\gobject\gobjectnotifyqueue.c $(CopyDir)\include\glib-$(ApiVersion)\gobject +mkdir $(CopyDir)\include\glib-$(ApiVersion)\gio +copy ..\..\..\gio\gappinfo.h $(CopyDir)\include\glib-2.0\gio\gappinfo.h +copy ..\..\..\gio\gasyncinitable.h $(CopyDir)\include\glib-2.0\gio\gasyncinitable.h +copy ..\..\..\gio\gasyncresult.h $(CopyDir)\include\glib-2.0\gio\gasyncresult.h +copy ..\..\..\gio\gbufferedinputstream.h $(CopyDir)\include\glib-2.0\gio\gbufferedinputstream.h +copy ..\..\..\gio\gbufferedoutputstream.h $(CopyDir)\include\glib-2.0\gio\gbufferedoutputstream.h +copy ..\..\..\gio\gbytesicon.h $(CopyDir)\include\glib-2.0\gio\gbytesicon.h +copy ..\..\..\gio\gcancellable.h $(CopyDir)\include\glib-2.0\gio\gcancellable.h +copy ..\..\..\gio\gcontenttype.h $(CopyDir)\include\glib-2.0\gio\gcontenttype.h +copy ..\..\..\gio\gcharsetconverter.h $(CopyDir)\include\glib-2.0\gio\gcharsetconverter.h +copy ..\..\..\gio\gconverter.h $(CopyDir)\include\glib-2.0\gio\gconverter.h +copy ..\..\..\gio\gconverterinputstream.h $(CopyDir)\include\glib-2.0\gio\gconverterinputstream.h +copy ..\..\..\gio\gconverteroutputstream.h $(CopyDir)\include\glib-2.0\gio\gconverteroutputstream.h +copy ..\..\..\gio\gdatagrambased.h $(CopyDir)\include\glib-2.0\gio\gdatagrambased.h +copy ..\..\..\gio\gdatainputstream.h $(CopyDir)\include\glib-2.0\gio\gdatainputstream.h +copy ..\..\..\gio\gdataoutputstream.h $(CopyDir)\include\glib-2.0\gio\gdataoutputstream.h +copy ..\..\..\gio\gdrive.h $(CopyDir)\include\glib-2.0\gio\gdrive.h +copy ..\..\..\gio\gemblem.h $(CopyDir)\include\glib-2.0\gio\gemblem.h +copy ..\..\..\gio\gemblemedicon.h $(CopyDir)\include\glib-2.0\gio\gemblemedicon.h +copy ..\..\..\gio\gfile.h $(CopyDir)\include\glib-2.0\gio\gfile.h +copy ..\..\..\gio\gfileattribute.h $(CopyDir)\include\glib-2.0\gio\gfileattribute.h +copy ..\..\..\gio\gfileenumerator.h $(CopyDir)\include\glib-2.0\gio\gfileenumerator.h +copy ..\..\..\gio\gfileicon.h $(CopyDir)\include\glib-2.0\gio\gfileicon.h +copy ..\..\..\gio\gfileinfo.h $(CopyDir)\include\glib-2.0\gio\gfileinfo.h +copy ..\..\..\gio\gfileinputstream.h $(CopyDir)\include\glib-2.0\gio\gfileinputstream.h +copy ..\..\..\gio\gfilemonitor.h $(CopyDir)\include\glib-2.0\gio\gfilemonitor.h +copy ..\..\..\gio\gfilenamecompleter.h $(CopyDir)\include\glib-2.0\gio\gfilenamecompleter.h +copy ..\..\..\gio\gfileoutputstream.h $(CopyDir)\include\glib-2.0\gio\gfileoutputstream.h +copy ..\..\..\gio\gfileiostream.h $(CopyDir)\include\glib-2.0\gio\gfileiostream.h +copy ..\..\..\gio\gfilterinputstream.h $(CopyDir)\include\glib-2.0\gio\gfilterinputstream.h +copy ..\..\..\gio\gfilteroutputstream.h $(CopyDir)\include\glib-2.0\gio\gfilteroutputstream.h +copy ..\..\..\gio\gicon.h $(CopyDir)\include\glib-2.0\gio\gicon.h +copy ..\..\..\gio\ginetaddress.h $(CopyDir)\include\glib-2.0\gio\ginetaddress.h +copy ..\..\..\gio\ginetaddressmask.h $(CopyDir)\include\glib-2.0\gio\ginetaddressmask.h +copy ..\..\..\gio\ginetsocketaddress.h $(CopyDir)\include\glib-2.0\gio\ginetsocketaddress.h +copy ..\..\..\gio\ginputstream.h $(CopyDir)\include\glib-2.0\gio\ginputstream.h +copy ..\..\..\gio\ginitable.h $(CopyDir)\include\glib-2.0\gio\ginitable.h +copy ..\..\..\gio\gio.h $(CopyDir)\include\glib-2.0\gio\gio.h +copy ..\..\..\gio\gio-autocleanups.h $(CopyDir)\include\glib-2.0\gio\gio-autocleanups.h +copy ..\..\..\gio\giotypes.h $(CopyDir)\include\glib-2.0\gio\giotypes.h +copy ..\..\..\gio\gioenums.h $(CopyDir)\include\glib-2.0\gio\gioenums.h +copy ..\..\..\gio\gioerror.h $(CopyDir)\include\glib-2.0\gio\gioerror.h +copy ..\..\..\gio\giomodule.h $(CopyDir)\include\glib-2.0\gio\giomodule.h +copy ..\..\..\gio\gioscheduler.h $(CopyDir)\include\glib-2.0\gio\gioscheduler.h +copy ..\..\..\gio\giostream.h $(CopyDir)\include\glib-2.0\gio\giostream.h +copy ..\..\..\gio\gloadableicon.h $(CopyDir)\include\glib-2.0\gio\gloadableicon.h +copy ..\..\..\gio\gmount.h $(CopyDir)\include\glib-2.0\gio\gmount.h +copy ..\..\..\gio\gmemoryinputstream.h $(CopyDir)\include\glib-2.0\gio\gmemoryinputstream.h +copy ..\..\..\gio\gmemoryoutputstream.h $(CopyDir)\include\glib-2.0\gio\gmemoryoutputstream.h +copy ..\..\..\gio\gmountoperation.h $(CopyDir)\include\glib-2.0\gio\gmountoperation.h +copy ..\..\..\gio\gnativevolumemonitor.h $(CopyDir)\include\glib-2.0\gio\gnativevolumemonitor.h +copy ..\..\..\gio\gnetworkaddress.h $(CopyDir)\include\glib-2.0\gio\gnetworkaddress.h +copy ..\..\..\gio\gnetworkmonitor.h $(CopyDir)\include\glib-2.0\gio\gnetworkmonitor.h +copy ..\..\..\gio\gnetworkservice.h $(CopyDir)\include\glib-2.0\gio\gnetworkservice.h +copy ..\..\..\gio\goutputstream.h $(CopyDir)\include\glib-2.0\gio\goutputstream.h +copy ..\..\..\gio\gpermission.h $(CopyDir)\include\glib-2.0\gio\gpermission.h +copy ..\..\..\gio\gpollableinputstream.h $(CopyDir)\include\glib-2.0\gio\gpollableinputstream.h +copy ..\..\..\gio\gpollableoutputstream.h $(CopyDir)\include\glib-2.0\gio\gpollableoutputstream.h +copy ..\..\..\gio\gpollableutils.h $(CopyDir)\include\glib-2.0\gio\gpollableutils.h +copy ..\..\..\gio\gproxyaddress.h $(CopyDir)\include\glib-2.0\gio\gproxyaddress.h +copy ..\..\..\gio\gproxy.h $(CopyDir)\include\glib-2.0\gio\gproxy.h +copy ..\..\..\gio\gproxyaddressenumerator.h $(CopyDir)\include\glib-2.0\gio\gproxyaddressenumerator.h +copy ..\..\..\gio\gproxyresolver.h $(CopyDir)\include\glib-2.0\gio\gproxyresolver.h +copy ..\..\..\gio\gresolver.h $(CopyDir)\include\glib-2.0\gio\gresolver.h +copy ..\..\..\gio\gresource.h $(CopyDir)\include\glib-2.0\gio\gresource.h +copy ..\..\..\gio\gseekable.h $(CopyDir)\include\glib-2.0\gio\gseekable.h +copy ..\..\..\gio\gsimpleasyncresult.h $(CopyDir)\include\glib-2.0\gio\gsimpleasyncresult.h +copy ..\..\..\gio\gsimpleiostream.h $(CopyDir)\include\glib-2.0\gio\gsimpleiostream.h +copy ..\..\..\gio\gsimplepermission.h $(CopyDir)\include\glib-2.0\gio\gsimplepermission.h +copy ..\..\..\gio\gsocket.h $(CopyDir)\include\glib-2.0\gio\gsocket.h +copy ..\..\..\gio\gsocketaddress.h $(CopyDir)\include\glib-2.0\gio\gsocketaddress.h +copy ..\..\..\gio\gsocketaddressenumerator.h $(CopyDir)\include\glib-2.0\gio\gsocketaddressenumerator.h +copy ..\..\..\gio\gsocketclient.h $(CopyDir)\include\glib-2.0\gio\gsocketclient.h +copy ..\..\..\gio\gsocketconnectable.h $(CopyDir)\include\glib-2.0\gio\gsocketconnectable.h +copy ..\..\..\gio\gsocketconnection.h $(CopyDir)\include\glib-2.0\gio\gsocketconnection.h +copy ..\..\..\gio\gsocketcontrolmessage.h $(CopyDir)\include\glib-2.0\gio\gsocketcontrolmessage.h +copy ..\..\..\gio\gsocketlistener.h $(CopyDir)\include\glib-2.0\gio\gsocketlistener.h +copy ..\..\..\gio\gsocketservice.h $(CopyDir)\include\glib-2.0\gio\gsocketservice.h +copy ..\..\..\gio\gsrvtarget.h $(CopyDir)\include\glib-2.0\gio\gsrvtarget.h +copy ..\..\..\gio\gsimpleproxyresolver.h $(CopyDir)\include\glib-2.0\gio\gsimpleproxyresolver.h +copy ..\..\..\gio\gtask.h $(CopyDir)\include\glib-2.0\gio\gtask.h +copy ..\..\..\gio\gsubprocess.h $(CopyDir)\include\glib-2.0\gio\gsubprocess.h +copy ..\..\..\gio\gsubprocesslauncher.h $(CopyDir)\include\glib-2.0\gio\gsubprocesslauncher.h +copy ..\..\..\gio\gtcpconnection.h $(CopyDir)\include\glib-2.0\gio\gtcpconnection.h +copy ..\..\..\gio\gtcpwrapperconnection.h $(CopyDir)\include\glib-2.0\gio\gtcpwrapperconnection.h +copy ..\..\..\gio\gthreadedsocketservice.h $(CopyDir)\include\glib-2.0\gio\gthreadedsocketservice.h +copy ..\..\..\gio\gthemedicon.h $(CopyDir)\include\glib-2.0\gio\gthemedicon.h +copy ..\..\..\gio\gtlsbackend.h $(CopyDir)\include\glib-2.0\gio\gtlsbackend.h +copy ..\..\..\gio\gtlscertificate.h $(CopyDir)\include\glib-2.0\gio\gtlscertificate.h +copy ..\..\..\gio\gtlsclientconnection.h $(CopyDir)\include\glib-2.0\gio\gtlsclientconnection.h +copy ..\..\..\gio\gtlsconnection.h $(CopyDir)\include\glib-2.0\gio\gtlsconnection.h +copy ..\..\..\gio\gtlsdatabase.h $(CopyDir)\include\glib-2.0\gio\gtlsdatabase.h +copy ..\..\..\gio\gtlsfiledatabase.h $(CopyDir)\include\glib-2.0\gio\gtlsfiledatabase.h +copy ..\..\..\gio\gtlsinteraction.h $(CopyDir)\include\glib-2.0\gio\gtlsinteraction.h +copy ..\..\..\gio\gtlspassword.h $(CopyDir)\include\glib-2.0\gio\gtlspassword.h +copy ..\..\..\gio\gtlsserverconnection.h $(CopyDir)\include\glib-2.0\gio\gtlsserverconnection.h +copy ..\..\..\gio\gdtlsconnection.h $(CopyDir)\include\glib-2.0\gio\gdtlsconnection.h +copy ..\..\..\gio\gdtlsclientconnection.h $(CopyDir)\include\glib-2.0\gio\gdtlsclientconnection.h +copy ..\..\..\gio\gdtlsserverconnection.h $(CopyDir)\include\glib-2.0\gio\gdtlsserverconnection.h +copy ..\..\..\gio\gvfs.h $(CopyDir)\include\glib-2.0\gio\gvfs.h +copy ..\..\..\gio\gvolume.h $(CopyDir)\include\glib-2.0\gio\gvolume.h +copy ..\..\..\gio\gvolumemonitor.h $(CopyDir)\include\glib-2.0\gio\gvolumemonitor.h +copy ..\..\..\gio\gzlibcompressor.h $(CopyDir)\include\glib-2.0\gio\gzlibcompressor.h +copy ..\..\..\gio\gzlibdecompressor.h $(CopyDir)\include\glib-2.0\gio\gzlibdecompressor.h +copy ..\..\..\gio\glistmodel.h $(CopyDir)\include\glib-2.0\gio\glistmodel.h +copy ..\..\..\gio\gliststore.h $(CopyDir)\include\glib-2.0\gio\gliststore.h +copy ..\..\..\gio\gapplication.h $(CopyDir)\include\glib-2.0\gio\gapplication.h +copy ..\..\..\gio\gapplicationcommandline.h $(CopyDir)\include\glib-2.0\gio\gapplicationcommandline.h +copy ..\..\..\gio\gactiongroup.h $(CopyDir)\include\glib-2.0\gio\gactiongroup.h +copy ..\..\..\gio\gactionmap.h $(CopyDir)\include\glib-2.0\gio\gactionmap.h +copy ..\..\..\gio\gsimpleactiongroup.h $(CopyDir)\include\glib-2.0\gio\gsimpleactiongroup.h +copy ..\..\..\gio\gremoteactiongroup.h $(CopyDir)\include\glib-2.0\gio\gremoteactiongroup.h +copy ..\..\..\gio\gactiongroupexporter.h $(CopyDir)\include\glib-2.0\gio\gactiongroupexporter.h +copy ..\..\..\gio\gdbusactiongroup.h $(CopyDir)\include\glib-2.0\gio\gdbusactiongroup.h +copy ..\..\..\gio\gaction.h $(CopyDir)\include\glib-2.0\gio\gaction.h +copy ..\..\..\gio\gpropertyaction.h $(CopyDir)\include\glib-2.0\gio\gpropertyaction.h +copy ..\..\..\gio\gsimpleaction.h $(CopyDir)\include\glib-2.0\gio\gsimpleaction.h +copy ..\..\..\gio\gmenumodel.h $(CopyDir)\include\glib-2.0\gio\gmenumodel.h +copy ..\..\..\gio\gmenu.h $(CopyDir)\include\glib-2.0\gio\gmenu.h +copy ..\..\..\gio\gmenuexporter.h $(CopyDir)\include\glib-2.0\gio\gmenuexporter.h +copy ..\..\..\gio\gdbusmenumodel.h $(CopyDir)\include\glib-2.0\gio\gdbusmenumodel.h +copy ..\..\..\gio\gnotification.h $(CopyDir)\include\glib-2.0\gio\gnotification.h +copy ..\..\..\gio\gsettingsbackend.h $(CopyDir)\include\glib-2.0\gio\gsettingsbackend.h +copy ..\..\..\gio\gsettingsschema.h $(CopyDir)\include\glib-2.0\gio\gsettingsschema.h +copy ..\..\..\gio\gsettings.h $(CopyDir)\include\glib-2.0\gio\gsettings.h +copy ..\..\..\gio\gdbusauthobserver.h $(CopyDir)\include\glib-2.0\gio\gdbusauthobserver.h +copy ..\..\..\gio\gcredentials.h $(CopyDir)\include\glib-2.0\gio\gcredentials.h +copy ..\..\..\gio\gdbusutils.h $(CopyDir)\include\glib-2.0\gio\gdbusutils.h +copy ..\..\..\gio\gdbuserror.h $(CopyDir)\include\glib-2.0\gio\gdbuserror.h +copy ..\..\..\gio\gdbusaddress.h $(CopyDir)\include\glib-2.0\gio\gdbusaddress.h +copy ..\..\..\gio\gdbusconnection.h $(CopyDir)\include\glib-2.0\gio\gdbusconnection.h +copy ..\..\..\gio\gdbusmessage.h $(CopyDir)\include\glib-2.0\gio\gdbusmessage.h +copy ..\..\..\gio\gdbusnameowning.h $(CopyDir)\include\glib-2.0\gio\gdbusnameowning.h +copy ..\..\..\gio\gdbusnamewatching.h $(CopyDir)\include\glib-2.0\gio\gdbusnamewatching.h +copy ..\..\..\gio\gdbusproxy.h $(CopyDir)\include\glib-2.0\gio\gdbusproxy.h +copy ..\..\..\gio\gdbusintrospection.h $(CopyDir)\include\glib-2.0\gio\gdbusintrospection.h +copy ..\..\..\gio\gdbusmethodinvocation.h $(CopyDir)\include\glib-2.0\gio\gdbusmethodinvocation.h +copy ..\..\..\gio\gdbusserver.h $(CopyDir)\include\glib-2.0\gio\gdbusserver.h +copy ..\..\..\gio\gdbusinterface.h $(CopyDir)\include\glib-2.0\gio\gdbusinterface.h +copy ..\..\..\gio\gdbusinterfaceskeleton.h $(CopyDir)\include\glib-2.0\gio\gdbusinterfaceskeleton.h +copy ..\..\..\gio\gdbusobject.h $(CopyDir)\include\glib-2.0\gio\gdbusobject.h +copy ..\..\..\gio\gdbusobjectskeleton.h $(CopyDir)\include\glib-2.0\gio\gdbusobjectskeleton.h +copy ..\..\..\gio\gdbusobjectproxy.h $(CopyDir)\include\glib-2.0\gio\gdbusobjectproxy.h +copy ..\..\..\gio\gdbusobjectmanager.h $(CopyDir)\include\glib-2.0\gio\gdbusobjectmanager.h +copy ..\..\..\gio\gdbusobjectmanagerclient.h $(CopyDir)\include\glib-2.0\gio\gdbusobjectmanagerclient.h +copy ..\..\..\gio\gdbusobjectmanagerserver.h $(CopyDir)\include\glib-2.0\gio\gdbusobjectmanagerserver.h +copy ..\..\..\gio\gtestdbus.h $(CopyDir)\include\glib-2.0\gio\gtestdbus.h +copy ..\..\..\gio\gioenumtypes.h $(CopyDir)\include\glib-2.0\gio\gioenumtypes.h +copy ..\..\..\gio\gnetworking.h $(CopyDir)\include\glib-2.0\gio\gnetworking.h +mkdir $(CopyDir)\include\gio-win32-$(ApiVersion)\gio +copy ..\..\..\gio\gwin32inputstream.h $(CopyDir)\include\gio-win32-$(ApiVersion)\gio +copy ..\..\..\gio\gwin32outputstream.h $(CopyDir)\include\gio-win32-$(ApiVersion)\gio +mkdir $(CopyDir)\lib\glib-$(ApiVersion)\include +copy ..\..\..\glib\glibconfig.h $(CopyDir)\lib\glib-$(ApiVersion)\include +copy $(BinDir)\glib-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gthread-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gmodule-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gobject-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gio-$(ApiVersion).lib $(CopyDir)\lib +mkdir $(CopyDir)\lib\pkgconfig +copy ..\gio-windows-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gio-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gobject-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gmodule-no-export-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gmodule-export-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gmodule-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gthread-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\glib-2.0.pc $(CopyDir)\lib\pkgconfig +mkdir $(CopyDir)\share\glib-$(ApiVersion)\schemas +copy ..\..\..\gio\gschema.dtd $(CopyDir)\share\glib-$(ApiVersion)\schemas +mkdir $(CopyDir)\share\glib-$(ApiVersion)\codegen +copy ..\..\..\gio\gdbus-2.0\codegen\*.py $(CopyDir)\share\glib-$(ApiVersion)\codegen + + ..\gio-windows-2.0.pc;..\gio-2.0.pc;..\gobject-2.0.pc;..\gmodule-no-export-2.0.pc;..\gmodule-export-2.0.pc;..\gmodule-2.0.pc;..\gthread-2.0.pc;..\glib-2.0.pc + if exist $(PythonPath)\python.exe $(PythonPath)\python.exe ..\glibpc.py --prefix=$(CopyDir) --version=$(GlibVersion) + + + <_PropertySheetDisplayName>glibinstallprops + + + + $(BinDir) + + + $(InstalledDlls) + + + $(InstalledBins) + + + $(InstalledWin32Bins) + + + $(InstalledX64Bins) + + + $(GlibDoInstall) + + + $(GlibPCFiles) + + + $(GlibGenPC) + + + diff --git a/build/win32/vs11/glib-install.vcxproj b/build/win32/vs11/glib-install.vcxproj new file mode 100644 index 0000000..1dddd59 --- /dev/null +++ b/build/win32/vs11/glib-install.vcxproj @@ -0,0 +1,182 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {2093D218-190E-4194-9421-3BA7CBF33B10} + glibinstall + Win32Proj + + + + Utility + MultiByte + true + v110 + + + Utility + MultiByte + v110 + + + Utility + MultiByte + true + v110 + + + Utility + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + $(GlibEtcInstallRoot)\ + + $(GlibEtcInstallRoot)\ + + $(GlibEtcInstallRoot)\ + + $(GlibEtcInstallRoot)\ + + + + + + + + + + + + + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + + + Installing Build Results... + $(GlibPCFiles) + $(GlibDoInstall) + $(InstalledDlls);$(InstalledBins);$(InstalledWin32Bins);%(Outputs) + Installing Build Results... + $(GlibPCFiles) + $(GlibDoInstall) + $(InstalledDlls);$(InstalledBins);$(InstalledX64Bins);%(Outputs) + Installing Build Results... + $(GlibPCFiles) + $(GlibDoInstall) + $(InstalledDlls);$(InstalledBins);$(InstalledWin32Bins);%(Outputs) + Installing Build Results... + $(GlibPCFiles) + $(GlibDoInstall) + $(InstalledDlls);$(InstalledBins);$(InstalledX64Bins);%(Outputs) + + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {bd12e835-5c52-4e5d-8234-1c579f33e27a} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {4214047c-f5c1-40b3-8369-5dced8c32770} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + {e40e8a7e-7cae-4659-9b8b-bc38898e3074} + false + + + {289240e7-e167-47ce-a20c-58d852e520ba} + false + + + {c8afb8c3-fffd-460f-bc13-9ac25d7b117c} + false + + + {015d69d0-8b42-438a-adae-052ac036e065} + false + + + {05041c63-f1c5-49ba-a7de-61ebb5307eaa} + false + + + {b0cdec7f-dce1-4f7e-b8a4-a3009c18fb2a} + false + + + {95a1571f-61be-4c51-be53-2f2dab280685} + false + + + {95a1571f-61be-4c51-be53-2f2dab280686} + false + + + {95a1571f-61be-4c51-be53-2f2dab280687} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs11/glib-install.vcxproj.filters b/build/win32/vs11/glib-install.vcxproj.filters new file mode 100644 index 0000000..18ffe5f --- /dev/null +++ b/build/win32/vs11/glib-install.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Resource Files + Resource Files + + diff --git a/build/win32/vs11/glib-version-paths.props b/build/win32/vs11/glib-version-paths.props new file mode 100644 index 0000000..31cb5c5 --- /dev/null +++ b/build/win32/vs11/glib-version-paths.props @@ -0,0 +1,58 @@ + + + + 11 + 2.48.0 + 2.0 + ..\..\..\..\vs$(VSVer)\$(Platform) + $(GlibEtcInstallRoot) + lib + -$(ApiVersion)-0 + + -2-vs$(VSVer) + $(GlibSeparateVSDllPrefix) + $(GlibSeparateVSDllSuffix) + c:\python27 + + + <_PropertySheetDisplayName>glibversionpathsprops + + + + $(VSVer) + + + $(GlibVersion) + + + $(ApiVersion) + + + $(GlibEtcInstallRoot) + + + $(CopyDir) + + + $(GlibLibtoolCompatibleDllPrefix) + + + $(GlibLibtoolCompatibleDllSuffix) + + + $(GlibSeparateVSDllPrefix) + + + $(GlibSeparateVSDllSuffix) + + + $(GlibDllPrefix) + + + $(GlibDllSuffix) + + + $(PythonPath) + + + diff --git a/build/win32/vs11/glib.sln b/build/win32/vs11/glib.sln new file mode 100644 index 0000000..6679ec9 --- /dev/null +++ b/build/win32/vs11/glib.sln @@ -0,0 +1,289 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib", "glib.vcxproj", "{12BCA020-EABF-429E-876A-A476BC9C10C0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmodule", "gmodule.vcxproj", "{4214047C-F5C1-40B3-8369-5DCED8C32770}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gobject", "gobject.vcxproj", "{F172EFFC-E30F-4593-809E-DB2024B1E753}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gthread", "gthread.vcxproj", "{C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-genmarshal", "glib-genmarshal.vcxproj", "{BD12E835-5C52-4E5D-8234-1C579F33E27A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gio", "gio.vcxproj", "{F3D1583C-5613-4809-BD98-7CC1C1276F92}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gspawn-win32-helper", "gspawn-win32-helper.vcxproj", "{289240E7-E167-47CE-A20C-58D852E520BA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gspawn-win32-helper-console", "gspawn-win32-helper-console.vcxproj", "{E40E8A7E-7CAE-4659-9B8B-BC38898E3074}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-compile-schemas", "glib-compile-schemas.vcxproj", "{015D69D0-8B42-438A-ADAE-052AC036E065}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsettings", "gsettings.vcxproj", "{05041C63-F1C5-49BA-A7DE-61EBB5307EAA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-install", "glib-install.vcxproj", "{2093D218-190E-4194-9421-3BA7CBF33B10}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gresource", "gresource.vcxproj", "{95A1571F-61BE-4C51-BE53-2F2DAB280685}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-compile-resources", "glib-compile-resources.vcxproj", "{B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gio-querymodules", "gio-querymodules.vcxproj", "{95A1571F-61BE-4C51-BE53-2F2DAB280686}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gdbus", "gdbus.vcxproj", "{95A1571F-61BE-4C51-BE53-2F2DAB280687}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Debug_BundledPCRE|Win32 = Debug_BundledPCRE|Win32 + Debug_BundledPCRE|x64 = Debug_BundledPCRE|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + Release_BundledPCRE|Win32 = Release_BundledPCRE|Win32 + Release_BundledPCRE|x64 = Release_BundledPCRE|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|Win32.ActiveCfg = Debug|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|Win32.Build.0 = Debug|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|x64.ActiveCfg = Debug|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|x64.Build.0 = Debug|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|Win32.ActiveCfg = Debug_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|Win32.Build.0 = Debug_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|x64.ActiveCfg = Debug_BundledPCRE|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|x64.Build.0 = Debug_BundledPCRE|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|Win32.ActiveCfg = Release|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|Win32.Build.0 = Release|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|x64.ActiveCfg = Release|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|x64.Build.0 = Release|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|Win32.ActiveCfg = Release_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|Win32.Build.0 = Release_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|x64.ActiveCfg = Release_BundledPCRE|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|x64.Build.0 = Release_BundledPCRE|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|Win32.ActiveCfg = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|Win32.Build.0 = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|x64.ActiveCfg = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|x64.Build.0 = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|Win32.ActiveCfg = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|Win32.Build.0 = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|x64.ActiveCfg = Release|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|x64.Build.0 = Release|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|Win32.ActiveCfg = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|Win32.Build.0 = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|x64.ActiveCfg = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|x64.Build.0 = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|Win32.ActiveCfg = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|Win32.Build.0 = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|x64.ActiveCfg = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|x64.Build.0 = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|Win32.ActiveCfg = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|Win32.Build.0 = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|x64.ActiveCfg = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|x64.Build.0 = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|Win32.ActiveCfg = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|Win32.Build.0 = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|x64.ActiveCfg = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|x64.Build.0 = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|Win32.ActiveCfg = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|Win32.Build.0 = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|x64.ActiveCfg = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|x64.Build.0 = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|Win32.ActiveCfg = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|Win32.Build.0 = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|x64.ActiveCfg = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|x64.Build.0 = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|Win32.ActiveCfg = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|Win32.Build.0 = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|x64.ActiveCfg = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|x64.Build.0 = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|Win32.ActiveCfg = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|Win32.Build.0 = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|x64.ActiveCfg = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|x64.Build.0 = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|Win32.ActiveCfg = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|Win32.Build.0 = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|x64.ActiveCfg = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|x64.Build.0 = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release|Win32.ActiveCfg = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release|Win32.Build.0 = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release|x64.ActiveCfg = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release|x64.Build.0 = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|Win32.ActiveCfg = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|Win32.Build.0 = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|x64.ActiveCfg = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|x64.Build.0 = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|Win32.ActiveCfg = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|Win32.Build.0 = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|x64.ActiveCfg = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|x64.Build.0 = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|Win32.ActiveCfg = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|Win32.Build.0 = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|x64.ActiveCfg = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|x64.Build.0 = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|Win32.ActiveCfg = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|Win32.Build.0 = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|x64.ActiveCfg = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|x64.Build.0 = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|Win32.ActiveCfg = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|Win32.Build.0 = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|x64.ActiveCfg = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|x64.Build.0 = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|Win32.ActiveCfg = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|Win32.Build.0 = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|x64.ActiveCfg = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|x64.Build.0 = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.ActiveCfg = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.Build.0 = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|x64.ActiveCfg = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|x64.Build.0 = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|Win32.ActiveCfg = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|Win32.Build.0 = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|x64.ActiveCfg = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|x64.Build.0 = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|Win32.ActiveCfg = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|Win32.Build.0 = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|x64.ActiveCfg = Debug|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|x64.Build.0 = Debug|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|Win32.ActiveCfg = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|Win32.Build.0 = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|x64.ActiveCfg = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|x64.Build.0 = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/build/win32/vs11/glib.vcxproj b/build/win32/vs11/glib.vcxproj new file mode 100644 index 0000000..31734cc --- /dev/null +++ b/build/win32/vs11/glib.vcxproj @@ -0,0 +1,755 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Debug_BundledPCRE + Win32 + + + Debug_BundledPCRE + x64 + + + Release + Win32 + + + Release + x64 + + + Release_BundledPCRE + Win32 + + + Release_BundledPCRE + x64 + + + + {12BCA020-EABF-429E-876A-A476BC9C10C0} + glib + Win32Proj + + + + DynamicLibrary + MultiByte + true + v110 + + + DynamicLibrary + MultiByte + true + v110 + + + DynamicLibrary + MultiByte + v110 + + + DynamicLibrary + MultiByte + v110 + + + DynamicLibrary + MultiByte + true + v110 + + + DynamicLibrary + MultiByte + true + v110 + + + DynamicLibrary + MultiByte + v110 + + + DynamicLibrary + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + Debug\$(Platform)\bin\ + true + true + Debug\$(Platform)\bin\ + true + false + Release\$(Platform)\bin\ + false + false + Release\$(Platform)\bin\ + false + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;$(UseSystemPCREDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + ws2_32.lib;winmm.lib;pcred.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;$(UseSystemPCREDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;pcred.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + $(GLibBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + $(GLibBuildDefines);$(UseSystemPCREDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;pcre.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + $(GLibBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + $(GLibBuildDefines);$(UseSystemPCREDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;pcre.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + + + + + + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + + + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + + + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + + + + + + + + + diff --git a/build/win32/vs11/glib.vcxproj.filters b/build/win32/vs11/glib.vcxproj.filters new file mode 100644 index 0000000..f9140f0 --- /dev/null +++ b/build/win32/vs11/glib.vcxproj.filters @@ -0,0 +1,202 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {bb961775-fd45-4205-b1fd-901c3c8fd64c} + + + {f630c518-4c58-4dfa-ab43-5fa0b0eb10f1} + + + {9fef0e23-cf71-48aa-979b-7eb84df56143} + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\libcharset + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + + Resource Files + Resource Files + + + + Resource Files + + + diff --git a/build/win32/vs11/gmodule.vcxproj b/build/win32/vs11/gmodule.vcxproj new file mode 100644 index 0000000..2b355cf --- /dev/null +++ b/build/win32/vs11/gmodule.vcxproj @@ -0,0 +1,204 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {4214047C-F5C1-40B3-8369-5DCED8C32770} + gmodule + Win32Proj + + + + DynamicLibrary + MultiByte + true + v110 + + + DynamicLibrary + MultiByte + v110 + + + DynamicLibrary + MultiByte + true + v110 + + + DynamicLibrary + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;$(GModuleBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + $(GModuleBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GModuleBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + $(GModuleBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + Copying gmoduleconf.h from gmoduleconf.h.win32... + $(GenGModuleConfH) + ..\..\..\gmodule\gmoduleconf.h;%(Outputs) + Copying gmoduleconf.h from gmoduleconf.h.win32... + $(GenGModuleConfH) + ..\..\..\gmodule\gmoduleconf.h;%(Outputs) + Copying gmoduleconf.h from gmoduleconf.h.win32... + $(GenGModuleConfH) + ..\..\..\gmodule\gmoduleconf.h;%(Outputs) + Copying gmoduleconf.h from gmoduleconf.h.win32... + $(GenGModuleConfH) + ..\..\..\gmodule\gmoduleconf.h;%(Outputs) + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs11/gmodule.vcxproj.filters b/build/win32/vs11/gmodule.vcxproj.filters new file mode 100644 index 0000000..968e8ac --- /dev/null +++ b/build/win32/vs11/gmodule.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + + Resource Files + + + + Resource Files + + + \ No newline at end of file diff --git a/build/win32/vs11/gobject.vcxproj b/build/win32/vs11/gobject.vcxproj new file mode 100644 index 0000000..12dae10 --- /dev/null +++ b/build/win32/vs11/gobject.vcxproj @@ -0,0 +1,225 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {F172EFFC-E30F-4593-809E-DB2024B1E753} + gobject + Win32Proj + + + + DynamicLibrary + MultiByte + true + v110 + + + DynamicLibrary + MultiByte + v110 + + + DynamicLibrary + MultiByte + true + v110 + + + DynamicLibrary + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;$(GObjectBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + $(GObjectBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GObjectBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + $(GObjectBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {c8afb8c3-fffd-460f-bc13-9ac25d7b117c} + false + + + + + + diff --git a/build/win32/vs11/gobject.vcxproj.filters b/build/win32/vs11/gobject.vcxproj.filters new file mode 100644 index 0000000..96e6da5 --- /dev/null +++ b/build/win32/vs11/gobject.vcxproj.filters @@ -0,0 +1,45 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + + + Resource Files + + + + Resource Files + + + diff --git a/build/win32/vs11/gresource.vcxproj b/build/win32/vs11/gresource.vcxproj new file mode 100644 index 0000000..8da9149 --- /dev/null +++ b/build/win32/vs11/gresource.vcxproj @@ -0,0 +1,180 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {95A1571F-61BE-4C51-BE53-2F2DAB280685} + gresource + Win32Proj + + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs11/gresource.vcxproj.filters b/build/win32/vs11/gresource.vcxproj.filters new file mode 100644 index 0000000..91dd6dc --- /dev/null +++ b/build/win32/vs11/gresource.vcxproj.filters @@ -0,0 +1,14 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs11/gsettings.vcxproj b/build/win32/vs11/gsettings.vcxproj new file mode 100644 index 0000000..a76c192 --- /dev/null +++ b/build/win32/vs11/gsettings.vcxproj @@ -0,0 +1,181 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA} + gsettings + Win32Proj + + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + %(AdditionalDependencies) + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs11/gsettings.vcxproj.filters b/build/win32/vs11/gsettings.vcxproj.filters new file mode 100644 index 0000000..0c81fc6 --- /dev/null +++ b/build/win32/vs11/gsettings.vcxproj.filters @@ -0,0 +1,14 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs11/gspawn-win32-helper-console.vcxproj b/build/win32/vs11/gspawn-win32-helper-console.vcxproj new file mode 100644 index 0000000..10d1082 --- /dev/null +++ b/build/win32/vs11/gspawn-win32-helper-console.vcxproj @@ -0,0 +1,177 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074} + gspawnwin32helperconsole + Win32Proj + + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;$(GLibInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + true + Console + false + + + MachineX86 + + + + + $(GLibInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GLibInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)gspawn-win64-helper-console.exe + true + $(OutDir)gspawn-win64-helper-console.pdb + Console + false + + + MachineX64 + + + + + $(GLibInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)gspawn-win64-helper-console.exe + true + $(OutDir)gspawn-win64-helper-console.pdb + Console + true + true + false + + + MachineX64 + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs11/gspawn-win32-helper-console.vcxproj.filters b/build/win32/vs11/gspawn-win32-helper-console.vcxproj.filters new file mode 100644 index 0000000..5b9e6ef --- /dev/null +++ b/build/win32/vs11/gspawn-win32-helper-console.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs11/gspawn-win32-helper.vcxproj b/build/win32/vs11/gspawn-win32-helper.vcxproj new file mode 100644 index 0000000..750cc27 --- /dev/null +++ b/build/win32/vs11/gspawn-win32-helper.vcxproj @@ -0,0 +1,177 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {289240E7-E167-47CE-A20C-58D852E520BA} + gspawnwin32helper + Win32Proj + + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + Application + MultiByte + true + v110 + + + Application + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + _DEBUG;$(GLibInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + true + Windows + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GLibInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)gspawn-win64-helper.exe + true + $(OutDir)gspawn-win64-helper.pdb + Windows + false + + + MachineX64 + + + + + $(GLibInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Windows + true + true + false + + + MachineX86 + + + + + $(GLibInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)gspawn-win64-helper.exe + true + $(OutDir)gspawn-win64-helper.pdb + Windows + true + true + false + + + MachineX64 + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs11/gspawn-win32-helper.vcxproj.filters b/build/win32/vs11/gspawn-win32-helper.vcxproj.filters new file mode 100644 index 0000000..0a83fa2 --- /dev/null +++ b/build/win32/vs11/gspawn-win32-helper.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs11/gthread.vcxproj b/build/win32/vs11/gthread.vcxproj new file mode 100644 index 0000000..1a20b2f --- /dev/null +++ b/build/win32/vs11/gthread.vcxproj @@ -0,0 +1,188 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C} + gthread + Win32Proj + + + + DynamicLibrary + MultiByte + true + v110 + + + DynamicLibrary + MultiByte + v110 + + + DynamicLibrary + MultiByte + true + v110 + + + DynamicLibrary + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;$(GThreadBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + $(GThreadBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GThreadBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + $(GThreadBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs11/gthread.vcxproj.filters b/build/win32/vs11/gthread.vcxproj.filters new file mode 100644 index 0000000..fb35c1f --- /dev/null +++ b/build/win32/vs11/gthread.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/build/win32/vs12/.gitignore b/build/win32/vs12/.gitignore deleted file mode 100644 index a7e3d4a..0000000 --- a/build/win32/vs12/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -gio.vcxproj -gio.vcxproj.filters -glib-compile-resources.vcxproj -glib-compile-resources.vcxproj.filters -glib-compile-schemas.vcxproj -glib-compile-schemas.vcxproj.filters -glib-genmarshal.vcxproj -glib-genmarshal.vcxproj.filters -glib.vcxproj -glib.vcxproj.filters -gmodule.vcxproj -gmodule.vcxproj.filters -gobject.vcxproj -gobject.vcxproj.filters -gresource.vcxproj -gresource.vcxproj.filters -gsettings.vcxproj -gsettings.vcxproj.filters -gspawn-win32-helper-console.vcxproj -gspawn-win32-helper-console.vcxproj.filters -gspawn-win32-helper.vcxproj -gspawn-win32-helper.vcxproj.filters -gthread.vcxproj -gthread.vcxproj.filters -install.vcxproj -glib.sln -README.txt -glib-build-defines.props -glib-install.props -glib-version-paths.props -glibprepbuild.props diff --git a/build/win32/vs12/Makefile.am b/build/win32/vs12/Makefile.am index 020a26c..b4a9f35 100644 --- a/build/win32/vs12/Makefile.am +++ b/build/win32/vs12/Makefile.am @@ -30,6 +30,7 @@ EXTRA_DIST = \ gdbus.vcxproj \ gdbus.vcxproj.filters \ glib-install.vcxproj \ + glib-install.vcxproj.filters \ glib-build-defines.props \ glib-install.props \ glib-version-paths.props \ @@ -37,10 +38,8 @@ EXTRA_DIST = \ DISTCLEANFILES = $(EXTRA_DIST) -MSVC_SLN = glib - MSVC_VER = 12 - +MSVC_FORMAT_VER = 12 MSVC_VER_LONG = 2013 include $(top_srcdir)/build/Makefile-newvs.am diff --git a/build/win32/vs12/Makefile.in b/build/win32/vs12/Makefile.in new file mode 100644 index 0000000..b162ac6 --- /dev/null +++ b/build/win32/vs12/Makefile.in @@ -0,0 +1,662 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Centralized autotools file +# Create the Visual Studio 2012/2013/2015 project files +# from the Visual Studio 2010 project files + +# This autotools file, from GLib, can be used in other projects +# that have Visual Studio build support, and is copied into +# $(srcroot)/build/. + +# Author: Fan, Chun-wei +# November 05, 2012 + +# MSVC_VER_LONG: Long Version of Visual Studio (2012, 2013, 14 and so on) +# MSVC_VER: Short Version of Visual Studio (11 for 2012, 12 for 2013, 14 for 2015 and so on) +# MSVC_FORMAT_VER: Use 12 for MSVC 2012 through 2015 +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = build/win32/vs12 +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build/Makefile-newvs.am +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = \ + README.txt \ + glib.sln \ + glib.vcxproj \ + glib.vcxproj.filters \ + glib-genmarshal.vcxproj \ + glib-genmarshal.vcxproj.filters \ + gspawn-win32-helper-console.vcxproj \ + gspawn-win32-helper-console.vcxproj.filters \ + gspawn-win32-helper.vcxproj \ + gspawn-win32-helper.vcxproj.filters \ + gmodule.vcxproj \ + gmodule.vcxproj.filters \ + gobject.vcxproj \ + gobject.vcxproj.filters \ + gthread.vcxproj \ + gthread.vcxproj.filters \ + gio.vcxproj \ + gio.vcxproj.filters \ + glib-compile-schemas.vcxproj \ + glib-compile-schemas.vcxproj.filters \ + gsettings.vcxproj \ + gsettings.vcxproj.filters \ + glib-compile-resources.vcxproj \ + glib-compile-resources.vcxproj.filters \ + gresource.vcxproj \ + gresource.vcxproj.filters \ + gio-querymodules.vcxproj \ + gio-querymodules.vcxproj.filters \ + gdbus.vcxproj \ + gdbus.vcxproj.filters \ + glib-install.vcxproj \ + glib-install.vcxproj.filters \ + glib-build-defines.props \ + glib-install.props \ + glib-version-paths.props \ + glib-gen-srcs.props + +DISTCLEANFILES = $(EXTRA_DIST) +MSVC_VER = 12 +MSVC_FORMAT_VER = 12 +MSVC_VER_LONG = 2013 +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/build/Makefile-newvs.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/win32/vs12/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/win32/vs12/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/build/Makefile-newvs.am $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +%.sln: + sed 's/11\.00/$(MSVC_FORMAT_VER)\.00/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + sed 's/2010/$(MSVC_VER_LONG)/g' < $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@ + rm $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + +%.txt: + sed 's/vs10/vs$(MSVC_VER)/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + sed 's/VS10/VS$(MSVC_VER)/g' < $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@ + rm $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + +%.vcxproj: + if test -e $(top_srcdir)/build/win32/vs10/$@; then \ + sed 's/v100/v$(MSVC_VER)0/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + else \ + sed 's/v100/v$(MSVC_VER)0/g' < $(top_builddir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + fi + +%.props: + if test -e $(top_srcdir)/build/win32/vs10/$@; then \ + sed 's/10<\/VSVer>/$(MSVC_VER)<\/VSVer>/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + else \ + sed 's/10<\/VSVer>/$(MSVC_VER)<\/VSVer>/g' < $(top_builddir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + fi + +%.vcxproj.filters: + if test -e $(top_srcdir)/build/win32/vs10/$@; then \ + cp $(top_srcdir)/build/win32/vs10/$@ $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + else \ + cp $(top_builddir)/build/win32/vs10/$@ $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + fi + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/build/win32/vs12/README.txt b/build/win32/vs12/README.txt new file mode 100644 index 0000000..3c54070 --- /dev/null +++ b/build/win32/vs12/README.txt @@ -0,0 +1,91 @@ +Please do not compile this package (GLib) in paths that contain +spaces in them-as strange problems may occur during compilation or during +the use of the library. + +Please refer to the following GNOME Live! page for more detailed +instructions on building GLib and its dependencies with Visual C++: + +https://wiki.gnome.org/Projects/GTK%2B/Win32/MSVCCompilationOfGTKStack + +This VS12 solution and the projects it includes are intented to be used +in a GLib source tree unpacked from a tarball. In a git checkout you +first need to use some Unix-like environment or run build/win32/setup.py, +which will do the work for you: + +$python build/win32/setup.py --perl path_to_your_perl.exe + +for more usage on this script, run +$python build/win32/setup.py -h/--help + +The required dependencies are zlib, proxy-libintl and LibFFI. Fetch the latest +proxy-libintl-dev and zlib-dev zipfiles from +http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/ for 32-bit +builds, and correspondingly +http://ftp.gnome.org/pub/GNOME/binaries/win64/dependencies/ for 64-bit +builds. + +One may wish to build his/her own ZLib-It is recommended that ZLib is +built using the win32/Makefile.msc makefile with VS12 with the ASM routines +to avoid linking problems-see win32/Makefile.msc in ZLib for more details. + +For LibFFI, please get version 3.0.10 or later, as Visual C++ build support +was added in the 3.0.10 release series. Please see the README file that +comes with the LibFFI source package for more details on how to build LibFFI +on Visual C++-please note that the mozilla-build package from Mozilla is needed +in order to build LibFFI on Windows. + +Please note, although using one's own existing PCRE installation to build GLib +is possible, it is still recommended to build PCRE during the process of building +GLib (i.e. using the Debug or Release configurations), as GLib's bundled PCRE +has been patched to work optimally with GLib. If building against an existing +PCRE is desired, use the(BuildType)_ExtPCRE configurations, but one needs to ensure +that the existing PCRE is: +-Built with VS12 +-Unicode support is built in (please see the CMake options for this) +-It is built with the Multithreaded DLL (/MD, for release builds) or the + Multithreaded DLL Debug (/MDd, for debug builds) + +If using static builds of PCRE, please add PCRE_STATIC to the "Preprocessor +Definitions" of the glib project settings. + +Please be aware that the GLib's regex test program will only pass with PCRE directly +built into GLib. + +Set up the source tree as follows under some arbitrary top +folder : + +\ +\vs12\ + +*this* file you are now reading is thus located at +\\build\win32\vs12\README. + + is either Win32 or x64, as in VS12 project files. + +You should unpack the proxy-libintl-dev zip file into +\vs12\, so that for instance libintl.h end up at +\vs12\\include\libintl.h. + +For LibFFI, one should also put the generated ffi.h and ffitarget.h +into \vs12\\include\ and the compiled static libffi.lib +(or copy libffi-convenience.lib into libffi.lib) into +\vs12\\lib\. + +The "install" project will copy build results and headers into their +appropriate location under \vs12\. For instance, +built DLLs go into \vs12\\bin, built LIBs into +\vs12\\lib and GLib headers into +\vs12\\include\glib-2.0. This is then from where +project files higher in the stack are supposed to look for them, not +from a specific GLib source tree. + +Note: If you see C4819 errors and you are compiling GLib on a DBCS +(Chinese/Korean/Japanese) version of Windows, you may need to switch +to an English locale in Control Panel->Region and Languages->System-> +Change System Locale, reboot and rebuild to ensure GLib, Pango, GDK-Pixbuf, +ATK and GTK+ is built correctly. This is due to a bug in Visual C++ running +on DBCS locales, and also affects many other opensource projects which are +built with Visual C++, including but not limited to QT and the Mozilla apps. + +--Tor Lillqvist +--Updated by Chun-wei Fan diff --git a/build/win32/vs12/gdbus.vcxproj b/build/win32/vs12/gdbus.vcxproj new file mode 100644 index 0000000..290af1f --- /dev/null +++ b/build/win32/vs12/gdbus.vcxproj @@ -0,0 +1,180 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {95A1571F-61BE-4C51-BE53-2F2DAB280687} + gresource + Win32Proj + + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs12/gdbus.vcxproj.filters b/build/win32/vs12/gdbus.vcxproj.filters new file mode 100644 index 0000000..ce37c1c --- /dev/null +++ b/build/win32/vs12/gdbus.vcxproj.filters @@ -0,0 +1,14 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs12/gio-querymodules.vcxproj b/build/win32/vs12/gio-querymodules.vcxproj new file mode 100644 index 0000000..51f63c7 --- /dev/null +++ b/build/win32/vs12/gio-querymodules.vcxproj @@ -0,0 +1,184 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {95A1571F-61BE-4C51-BE53-2F2DAB280686} + gresource + Win32Proj + + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;$(GioInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;$(GioInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + $(GioInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + $(GioInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + {4214047c-f5c1-40b3-8369-5dced8c32770} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs12/gio-querymodules.vcxproj.filters b/build/win32/vs12/gio-querymodules.vcxproj.filters new file mode 100644 index 0000000..79fbfa1 --- /dev/null +++ b/build/win32/vs12/gio-querymodules.vcxproj.filters @@ -0,0 +1,14 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs12/gio.vcxproj b/build/win32/vs12/gio.vcxproj new file mode 100644 index 0000000..7a19f1a --- /dev/null +++ b/build/win32/vs12/gio.vcxproj @@ -0,0 +1,420 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {F3D1583C-5613-4809-BD98-7CC1C1276F92} + gio + + + + DynamicLibrary + MultiByte + true + v120 + + + DynamicLibrary + MultiByte + v120 + + + DynamicLibrary + MultiByte + true + v120 + + + DynamicLibrary + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + _DEBUG;$(GioBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + $(GioBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + Disabled + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + _DEBUG;$(GioBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + $(GioBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {4214047c-f5c1-40b3-8369-5dced8c32770} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + + + + diff --git a/build/win32/vs12/gio.vcxproj.filters b/build/win32/vs12/gio.vcxproj.filters new file mode 100644 index 0000000..3d3c528 --- /dev/null +++ b/build/win32/vs12/gio.vcxproj.filters @@ -0,0 +1,229 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + + + Resource Files + + + + Resource Files + + + diff --git a/build/win32/vs12/glib-build-defines.props b/build/win32/vs12/glib-build-defines.props new file mode 100644 index 0000000..9634e5b --- /dev/null +++ b/build/win32/vs12/glib-build-defines.props @@ -0,0 +1,84 @@ + + + + + + + PCRE_STATIC;LINK_SIZE=2;MAX_NAME_SIZE=32;MAX_NAME_COUNT=10000;NEWLINE=-1;POSIX_MALLOC_THRESHOLD=10;MATCH_LIMIT=10000000;MATCH_LIMIT_RECURSION=10000000;SUPPORT_UCP;SUPPORT_UTF;SUPPORT_UTF8;G_LOG_DOMAIN="GLib-GRegex" + PCRE_EXP_DECL=__declspec(dllexport)extern;PCRE_EXP_DEFN= + -UBSR_ANYCRLF -UEBCDIC + LIBDIR="blah" + DLL_EXPORT + USE_SYSTEM_PCRE + GLIB_COMPILATION + GIO_COMPILATION + $(GLibInBuildMacro);$(DllExportDefines);G_LOG_DOMAIN="GLib" + G_LOG_DOMAIN="GThread" + G_LOG_DOMAIN="GModule" + GOBJECT_COMPILATION;$(DllExportDefines);G_LOG_DOMAIN="GLib-GObject";FFI_BUILDING + $(GioInBuildMacro);G_LOG_DOMAIN="GLib-GIO";$(DllExportDefines) + ws2_32.lib;shlwapi.lib;dnsapi.lib;iphlpapi.lib + + + <_PropertySheetDisplayName>glibbuilddefinesprops + $(SolutionDir)$(Configuration)\$(PlatformName)\bin\ + $(SolutionDir)$(Configuration)\$(PlatformName)\obj\$(ProjectName)\ + + + + ..\..\..;..\..\..\glib;$(GlibEtcInstallRoot)\include;%(AdditionalIncludeDirectories) + HAVE_CONFIG_H;%(PreprocessorDefinitions) + msvc_recommended_pragmas.h;%(ForcedIncludeFiles) + true + /d2Zi+ %(AdditionalOptions) + + + intl.lib;%(AdditionalDependencies) + $(GlibEtcInstallRoot)\lib;%(AdditionalLibraryDirectories) + + + + + $(GLibBundledPCREDefines) + + + $(GlibBundledPCREExportDefines) + + + $(GLibBundledPCREUndefs) + + + $(LocalCharsetDefs) + + + $(DllExportDefines) + + + $(UseSystemPCREDefines) + + + $(GLibInBuildMacro) + + + $(GioInBuildMacro) + + + $(GLibBuildDefines) + + + $(GThreadBuildDefines) + + + $(GModuleBuildDefines) + + + $(GObjectBuildDefines) + + + $(GioBuildDefines) + + + $(WindowsNetworkingLibs) + + + diff --git a/build/win32/vs12/glib-compile-resources.vcxproj b/build/win32/vs12/glib-compile-resources.vcxproj new file mode 100644 index 0000000..6bcc2f6 --- /dev/null +++ b/build/win32/vs12/glib-compile-resources.vcxproj @@ -0,0 +1,181 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A} + glibcompileresources + Win32Proj + + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + _DEBUG;$(GioInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + _DEBUG;$(GioInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + $(GioInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + $(GioInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + + + + diff --git a/build/win32/vs12/glib-compile-resources.vcxproj.filters b/build/win32/vs12/glib-compile-resources.vcxproj.filters new file mode 100644 index 0000000..4b5a823 --- /dev/null +++ b/build/win32/vs12/glib-compile-resources.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + Source Files + Source Files + + diff --git a/build/win32/vs12/glib-compile-schemas.vcxproj b/build/win32/vs12/glib-compile-schemas.vcxproj new file mode 100644 index 0000000..06a848f --- /dev/null +++ b/build/win32/vs12/glib-compile-schemas.vcxproj @@ -0,0 +1,181 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {015D69D0-8B42-438A-ADAE-052AC036E065} + glibcompileschemas + Win32Proj + + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + + + + diff --git a/build/win32/vs12/glib-compile-schemas.vcxproj.filters b/build/win32/vs12/glib-compile-schemas.vcxproj.filters new file mode 100644 index 0000000..1bd75e2 --- /dev/null +++ b/build/win32/vs12/glib-compile-schemas.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + Source Files + Source Files + + diff --git a/build/win32/vs12/glib-gen-srcs.props b/build/win32/vs12/glib-gen-srcs.props new file mode 100644 index 0000000..64a20ea --- /dev/null +++ b/build/win32/vs12/glib-gen-srcs.props @@ -0,0 +1,33 @@ + + + + + + + copy ..\..\..\config.h.win32 ..\..\..\config.h + copy ..\..\..\glib\glibconfig.h.win32 ..\..\..\glib\glibconfig.h + copy ..\..\..\gmodule\gmoduleconf.h.win32 ..\..\..\gmodule\gmoduleconf.h + copy ..\..\..\gio\gnetworking.h.win32 ..\..\..\gio\gnetworking.h + if exist $(PythonPath)\python.exe $(PythonPath)\python.exe ..\replace.py --action=replace-var --input=..\..\..\gobject\glib-mkenums.in --output=..\..\..\gobject\glib-mkenums --var=GLIB_VERSION --outstring=$(GlibVersion) + + + <_PropertySheetDisplayName>glibgensrcsprops + + + + $(GenConfigH) + + + $(GenGLibConfigH) + + + $(GenGModuleConfH) + + + $(GenGNetworkingH) + + + $(GenGLibMKEnums) + + + diff --git a/build/win32/vs12/glib-genmarshal.vcxproj b/build/win32/vs12/glib-genmarshal.vcxproj new file mode 100644 index 0000000..48cccef --- /dev/null +++ b/build/win32/vs12/glib-genmarshal.vcxproj @@ -0,0 +1,173 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {BD12E835-5C52-4E5D-8234-1C579F33E27A} + glibgenmarshal + Win32Proj + + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + true + Console + false + + + MachineX86 + + + + + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs12/glib-genmarshal.vcxproj.filters b/build/win32/vs12/glib-genmarshal.vcxproj.filters new file mode 100644 index 0000000..12b29af --- /dev/null +++ b/build/win32/vs12/glib-genmarshal.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs12/glib-install.props b/build/win32/vs12/glib-install.props new file mode 100644 index 0000000..a3d720a --- /dev/null +++ b/build/win32/vs12/glib-install.props @@ -0,0 +1,353 @@ + + + + + + + $(SolutionDir)$(Configuration)\$(Platform)\bin + $(BinDir)\$(GlibDllPrefix)glib(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gthread(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gmodule(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gobject(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gio(GlibDllSuffix).dll + $(BinDir)\glib-genmarshal.exe;$(BinDir)\glib-compile-schemas.exe;$(BinDir)\gsettings.exe;$(BinDir)\glib-compile-resources.exe;$(BinDir)\gresource.exe;$(BinDir)\gio-querymodules.exe;$(BinDir)\gdbus.exe + $(BinDir)\gspawn-win32-helper.exe;$(BinDir)\gspawn-win32-helper-console.exe + $(BinDir)\gspawn-win64-helper.exe;$(BinDir)\gspawn-win64-helper-console.exe + +mkdir $(CopyDir) +mkdir $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)glib$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)glib$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gthread$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gthread$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gmodule$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gmodule$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gobject$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gobject$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gio$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gio$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\glib-genmarshal.exe $(CopyDir)\bin +copy $(BinDir)\glib-genmarshal.pdb $(CopyDir)\bin +copy $(BinDir)\gspawn-win*-helper*.exe $(CopyDir)\bin +copy $(BinDir)\gspawn-win*-helper*.pdb $(CopyDir)\bin +copy $(BinDir)\glib-compile-schemas.exe $(CopyDir)\bin +copy $(BinDir)\glib-compile-schemas.pdb $(CopyDir)\bin +copy $(BinDir)\gsettings.exe $(CopyDir)\bin +copy $(BinDir)\gsettings.pdb $(CopyDir)\bin +copy $(BinDir)\glib-compile-resources.exe $(CopyDir)\bin +copy $(BinDir)\glib-compile-resources.pdb $(CopyDir)\bin +copy $(BinDir)\gresource.exe $(CopyDir)\bin +copy $(BinDir)\gresource.pdb $(CopyDir)\bin +copy $(BinDir)\gio-querymodules.exe $(CopyDir)\bin +copy $(BinDir)\gio-querymodules.pdb $(CopyDir)\bin +copy $(BinDir)\gdbus.exe $(CopyDir)\bin +copy $(BinDir)\gdbus.pdb $(CopyDir)\bin +copy ..\..\..\gio\gdbus-2.0\codegen\gdbus-codegen.in $(CopyDir)\bin\gdbus-codegen +if exist ..\..\..\gobject\glib-mkenums copy ..\..\..\gobject\glib-mkenums $(CopyDir)\bin +mkdir $(CopyDir)\include\glib-$(ApiVersion)\glib\deprecated +copy ..\..\..\msvc_recommended_pragmas.h $(CopyDir)\include\glib-$(ApiVersion) +copy ..\..\..\glib\glib.h $(CopyDir)\include\glib-$(ApiVersion) +copy ..\..\..\glib\glib-object.h $(CopyDir)\include\glib-$(ApiVersion) +copy ..\..\..\glib\deprecated\gallocator.h $(CopyDir)\include\glib-2.0\glib\deprecated\gallocator.h +copy ..\..\..\glib\deprecated\gcache.h $(CopyDir)\include\glib-2.0\glib\deprecated\gcache.h +copy ..\..\..\glib\deprecated\gcompletion.h $(CopyDir)\include\glib-2.0\glib\deprecated\gcompletion.h +copy ..\..\..\glib\deprecated\gmain.h $(CopyDir)\include\glib-2.0\glib\deprecated\gmain.h +copy ..\..\..\glib\deprecated\grel.h $(CopyDir)\include\glib-2.0\glib\deprecated\grel.h +copy ..\..\..\glib\deprecated\gthread.h $(CopyDir)\include\glib-2.0\glib\deprecated\gthread.h +copy ..\..\..\glib\glib-autocleanups.h $(CopyDir)\include\glib-2.0\glib\glib-autocleanups.h +copy ..\..\..\glib\galloca.h $(CopyDir)\include\glib-2.0\glib\galloca.h +copy ..\..\..\glib\garray.h $(CopyDir)\include\glib-2.0\glib\garray.h +copy ..\..\..\glib\gasyncqueue.h $(CopyDir)\include\glib-2.0\glib\gasyncqueue.h +copy ..\..\..\glib\gatomic.h $(CopyDir)\include\glib-2.0\glib\gatomic.h +copy ..\..\..\glib\gbacktrace.h $(CopyDir)\include\glib-2.0\glib\gbacktrace.h +copy ..\..\..\glib\gbase64.h $(CopyDir)\include\glib-2.0\glib\gbase64.h +copy ..\..\..\glib\gbitlock.h $(CopyDir)\include\glib-2.0\glib\gbitlock.h +copy ..\..\..\glib\gbookmarkfile.h $(CopyDir)\include\glib-2.0\glib\gbookmarkfile.h +copy ..\..\..\glib\gbytes.h $(CopyDir)\include\glib-2.0\glib\gbytes.h +copy ..\..\..\glib\gcharset.h $(CopyDir)\include\glib-2.0\glib\gcharset.h +copy ..\..\..\glib\gchecksum.h $(CopyDir)\include\glib-2.0\glib\gchecksum.h +copy ..\..\..\glib\gconvert.h $(CopyDir)\include\glib-2.0\glib\gconvert.h +copy ..\..\..\glib\gdataset.h $(CopyDir)\include\glib-2.0\glib\gdataset.h +copy ..\..\..\glib\gdate.h $(CopyDir)\include\glib-2.0\glib\gdate.h +copy ..\..\..\glib\gdatetime.h $(CopyDir)\include\glib-2.0\glib\gdatetime.h +copy ..\..\..\glib\gdir.h $(CopyDir)\include\glib-2.0\glib\gdir.h +copy ..\..\..\glib\genviron.h $(CopyDir)\include\glib-2.0\glib\genviron.h +copy ..\..\..\glib\gerror.h $(CopyDir)\include\glib-2.0\glib\gerror.h +copy ..\..\..\glib\gfileutils.h $(CopyDir)\include\glib-2.0\glib\gfileutils.h +copy ..\..\..\glib\ggettext.h $(CopyDir)\include\glib-2.0\glib\ggettext.h +copy ..\..\..\glib\ghash.h $(CopyDir)\include\glib-2.0\glib\ghash.h +copy ..\..\..\glib\ghmac.h $(CopyDir)\include\glib-2.0\glib\ghmac.h +copy ..\..\..\glib\ghook.h $(CopyDir)\include\glib-2.0\glib\ghook.h +copy ..\..\..\glib\ghostutils.h $(CopyDir)\include\glib-2.0\glib\ghostutils.h +copy ..\..\..\glib\gi18n.h $(CopyDir)\include\glib-2.0\glib\gi18n.h +copy ..\..\..\glib\gi18n-lib.h $(CopyDir)\include\glib-2.0\glib\gi18n-lib.h +copy ..\..\..\glib\giochannel.h $(CopyDir)\include\glib-2.0\glib\giochannel.h +copy ..\..\..\glib\gkeyfile.h $(CopyDir)\include\glib-2.0\glib\gkeyfile.h +copy ..\..\..\glib\glist.h $(CopyDir)\include\glib-2.0\glib\glist.h +copy ..\..\..\glib\gmacros.h $(CopyDir)\include\glib-2.0\glib\gmacros.h +copy ..\..\..\glib\gmain.h $(CopyDir)\include\glib-2.0\glib\gmain.h +copy ..\..\..\glib\gmappedfile.h $(CopyDir)\include\glib-2.0\glib\gmappedfile.h +copy ..\..\..\glib\gmarkup.h $(CopyDir)\include\glib-2.0\glib\gmarkup.h +copy ..\..\..\glib\gmem.h $(CopyDir)\include\glib-2.0\glib\gmem.h +copy ..\..\..\glib\gmessages.h $(CopyDir)\include\glib-2.0\glib\gmessages.h +copy ..\..\..\glib\gnode.h $(CopyDir)\include\glib-2.0\glib\gnode.h +copy ..\..\..\glib\goption.h $(CopyDir)\include\glib-2.0\glib\goption.h +copy ..\..\..\glib\gpattern.h $(CopyDir)\include\glib-2.0\glib\gpattern.h +copy ..\..\..\glib\gpoll.h $(CopyDir)\include\glib-2.0\glib\gpoll.h +copy ..\..\..\glib\gprimes.h $(CopyDir)\include\glib-2.0\glib\gprimes.h +copy ..\..\..\glib\gqsort.h $(CopyDir)\include\glib-2.0\glib\gqsort.h +copy ..\..\..\glib\gquark.h $(CopyDir)\include\glib-2.0\glib\gquark.h +copy ..\..\..\glib\gqueue.h $(CopyDir)\include\glib-2.0\glib\gqueue.h +copy ..\..\..\glib\grand.h $(CopyDir)\include\glib-2.0\glib\grand.h +copy ..\..\..\glib\gregex.h $(CopyDir)\include\glib-2.0\glib\gregex.h +copy ..\..\..\glib\gscanner.h $(CopyDir)\include\glib-2.0\glib\gscanner.h +copy ..\..\..\glib\gsequence.h $(CopyDir)\include\glib-2.0\glib\gsequence.h +copy ..\..\..\glib\gshell.h $(CopyDir)\include\glib-2.0\glib\gshell.h +copy ..\..\..\glib\gslice.h $(CopyDir)\include\glib-2.0\glib\gslice.h +copy ..\..\..\glib\gslist.h $(CopyDir)\include\glib-2.0\glib\gslist.h +copy ..\..\..\glib\gspawn.h $(CopyDir)\include\glib-2.0\glib\gspawn.h +copy ..\..\..\glib\gstdio.h $(CopyDir)\include\glib-2.0\glib\gstdio.h +copy ..\..\..\glib\gstrfuncs.h $(CopyDir)\include\glib-2.0\glib\gstrfuncs.h +copy ..\..\..\glib\gtestutils.h $(CopyDir)\include\glib-2.0\glib\gtestutils.h +copy ..\..\..\glib\gstring.h $(CopyDir)\include\glib-2.0\glib\gstring.h +copy ..\..\..\glib\gstringchunk.h $(CopyDir)\include\glib-2.0\glib\gstringchunk.h +copy ..\..\..\glib\gthread.h $(CopyDir)\include\glib-2.0\glib\gthread.h +copy ..\..\..\glib\gthreadpool.h $(CopyDir)\include\glib-2.0\glib\gthreadpool.h +copy ..\..\..\glib\gtimer.h $(CopyDir)\include\glib-2.0\glib\gtimer.h +copy ..\..\..\glib\gtimezone.h $(CopyDir)\include\glib-2.0\glib\gtimezone.h +copy ..\..\..\glib\gtrashstack.h $(CopyDir)\include\glib-2.0\glib\gtrashstack.h +copy ..\..\..\glib\gtree.h $(CopyDir)\include\glib-2.0\glib\gtree.h +copy ..\..\..\glib\gtypes.h $(CopyDir)\include\glib-2.0\glib\gtypes.h +copy ..\..\..\glib\gunicode.h $(CopyDir)\include\glib-2.0\glib\gunicode.h +copy ..\..\..\glib\gurifuncs.h $(CopyDir)\include\glib-2.0\glib\gurifuncs.h +copy ..\..\..\glib\gutils.h $(CopyDir)\include\glib-2.0\glib\gutils.h +copy ..\..\..\glib\gvarianttype.h $(CopyDir)\include\glib-2.0\glib\gvarianttype.h +copy ..\..\..\glib\gvariant.h $(CopyDir)\include\glib-2.0\glib\gvariant.h +copy ..\..\..\glib\gversion.h $(CopyDir)\include\glib-2.0\glib\gversion.h +copy ..\..\..\glib\gversionmacros.h $(CopyDir)\include\glib-2.0\glib\gversionmacros.h +copy ..\..\..\glib\gwin32.h $(CopyDir)\include\glib-2.0\glib\gwin32.h +copy ..\..\..\glib\gprintf.h $(CopyDir)\include\glib-2.0\glib\gprintf.h +copy ..\..\..\gmodule\gmodule.h $(CopyDir)\include\glib-$(ApiVersion) +mkdir $(CopyDir)\include\glib-$(ApiVersion)\gobject +copy ..\..\..\gobject\gobject-autocleanups.h $(CopyDir)\include\glib-2.0\gobject\gobject-autocleanups.h +copy ..\..\..\gobject\glib-types.h $(CopyDir)\include\glib-2.0\gobject\glib-types.h +copy ..\..\..\gobject\gbinding.h $(CopyDir)\include\glib-2.0\gobject\gbinding.h +copy ..\..\..\gobject\gboxed.h $(CopyDir)\include\glib-2.0\gobject\gboxed.h +copy ..\..\..\gobject\gclosure.h $(CopyDir)\include\glib-2.0\gobject\gclosure.h +copy ..\..\..\gobject\genums.h $(CopyDir)\include\glib-2.0\gobject\genums.h +copy ..\..\..\gobject\gmarshal.h $(CopyDir)\include\glib-2.0\gobject\gmarshal.h +copy ..\..\..\gobject\gobject.h $(CopyDir)\include\glib-2.0\gobject\gobject.h +copy ..\..\..\gobject\gparam.h $(CopyDir)\include\glib-2.0\gobject\gparam.h +copy ..\..\..\gobject\gparamspecs.h $(CopyDir)\include\glib-2.0\gobject\gparamspecs.h +copy ..\..\..\gobject\gsignal.h $(CopyDir)\include\glib-2.0\gobject\gsignal.h +copy ..\..\..\gobject\gsourceclosure.h $(CopyDir)\include\glib-2.0\gobject\gsourceclosure.h +copy ..\..\..\gobject\gtype.h $(CopyDir)\include\glib-2.0\gobject\gtype.h +copy ..\..\..\gobject\gtypemodule.h $(CopyDir)\include\glib-2.0\gobject\gtypemodule.h +copy ..\..\..\gobject\gtypeplugin.h $(CopyDir)\include\glib-2.0\gobject\gtypeplugin.h +copy ..\..\..\gobject\gvalue.h $(CopyDir)\include\glib-2.0\gobject\gvalue.h +copy ..\..\..\gobject\gvaluearray.h $(CopyDir)\include\glib-2.0\gobject\gvaluearray.h +copy ..\..\..\gobject\gvaluecollector.h $(CopyDir)\include\glib-2.0\gobject\gvaluecollector.h +copy ..\..\..\gobject\gvaluetypes.h $(CopyDir)\include\glib-2.0\gobject\gvaluetypes.h +copy ..\..\..\gobject\gobjectnotifyqueue.c $(CopyDir)\include\glib-$(ApiVersion)\gobject +mkdir $(CopyDir)\include\glib-$(ApiVersion)\gio +copy ..\..\..\gio\gappinfo.h $(CopyDir)\include\glib-2.0\gio\gappinfo.h +copy ..\..\..\gio\gasyncinitable.h $(CopyDir)\include\glib-2.0\gio\gasyncinitable.h +copy ..\..\..\gio\gasyncresult.h $(CopyDir)\include\glib-2.0\gio\gasyncresult.h +copy ..\..\..\gio\gbufferedinputstream.h $(CopyDir)\include\glib-2.0\gio\gbufferedinputstream.h +copy ..\..\..\gio\gbufferedoutputstream.h $(CopyDir)\include\glib-2.0\gio\gbufferedoutputstream.h +copy ..\..\..\gio\gbytesicon.h $(CopyDir)\include\glib-2.0\gio\gbytesicon.h +copy ..\..\..\gio\gcancellable.h $(CopyDir)\include\glib-2.0\gio\gcancellable.h +copy ..\..\..\gio\gcontenttype.h $(CopyDir)\include\glib-2.0\gio\gcontenttype.h +copy ..\..\..\gio\gcharsetconverter.h $(CopyDir)\include\glib-2.0\gio\gcharsetconverter.h +copy ..\..\..\gio\gconverter.h $(CopyDir)\include\glib-2.0\gio\gconverter.h +copy ..\..\..\gio\gconverterinputstream.h $(CopyDir)\include\glib-2.0\gio\gconverterinputstream.h +copy ..\..\..\gio\gconverteroutputstream.h $(CopyDir)\include\glib-2.0\gio\gconverteroutputstream.h +copy ..\..\..\gio\gdatagrambased.h $(CopyDir)\include\glib-2.0\gio\gdatagrambased.h +copy ..\..\..\gio\gdatainputstream.h $(CopyDir)\include\glib-2.0\gio\gdatainputstream.h +copy ..\..\..\gio\gdataoutputstream.h $(CopyDir)\include\glib-2.0\gio\gdataoutputstream.h +copy ..\..\..\gio\gdrive.h $(CopyDir)\include\glib-2.0\gio\gdrive.h +copy ..\..\..\gio\gemblem.h $(CopyDir)\include\glib-2.0\gio\gemblem.h +copy ..\..\..\gio\gemblemedicon.h $(CopyDir)\include\glib-2.0\gio\gemblemedicon.h +copy ..\..\..\gio\gfile.h $(CopyDir)\include\glib-2.0\gio\gfile.h +copy ..\..\..\gio\gfileattribute.h $(CopyDir)\include\glib-2.0\gio\gfileattribute.h +copy ..\..\..\gio\gfileenumerator.h $(CopyDir)\include\glib-2.0\gio\gfileenumerator.h +copy ..\..\..\gio\gfileicon.h $(CopyDir)\include\glib-2.0\gio\gfileicon.h +copy ..\..\..\gio\gfileinfo.h $(CopyDir)\include\glib-2.0\gio\gfileinfo.h +copy ..\..\..\gio\gfileinputstream.h $(CopyDir)\include\glib-2.0\gio\gfileinputstream.h +copy ..\..\..\gio\gfilemonitor.h $(CopyDir)\include\glib-2.0\gio\gfilemonitor.h +copy ..\..\..\gio\gfilenamecompleter.h $(CopyDir)\include\glib-2.0\gio\gfilenamecompleter.h +copy ..\..\..\gio\gfileoutputstream.h $(CopyDir)\include\glib-2.0\gio\gfileoutputstream.h +copy ..\..\..\gio\gfileiostream.h $(CopyDir)\include\glib-2.0\gio\gfileiostream.h +copy ..\..\..\gio\gfilterinputstream.h $(CopyDir)\include\glib-2.0\gio\gfilterinputstream.h +copy ..\..\..\gio\gfilteroutputstream.h $(CopyDir)\include\glib-2.0\gio\gfilteroutputstream.h +copy ..\..\..\gio\gicon.h $(CopyDir)\include\glib-2.0\gio\gicon.h +copy ..\..\..\gio\ginetaddress.h $(CopyDir)\include\glib-2.0\gio\ginetaddress.h +copy ..\..\..\gio\ginetaddressmask.h $(CopyDir)\include\glib-2.0\gio\ginetaddressmask.h +copy ..\..\..\gio\ginetsocketaddress.h $(CopyDir)\include\glib-2.0\gio\ginetsocketaddress.h +copy ..\..\..\gio\ginputstream.h $(CopyDir)\include\glib-2.0\gio\ginputstream.h +copy ..\..\..\gio\ginitable.h $(CopyDir)\include\glib-2.0\gio\ginitable.h +copy ..\..\..\gio\gio.h $(CopyDir)\include\glib-2.0\gio\gio.h +copy ..\..\..\gio\gio-autocleanups.h $(CopyDir)\include\glib-2.0\gio\gio-autocleanups.h +copy ..\..\..\gio\giotypes.h $(CopyDir)\include\glib-2.0\gio\giotypes.h +copy ..\..\..\gio\gioenums.h $(CopyDir)\include\glib-2.0\gio\gioenums.h +copy ..\..\..\gio\gioerror.h $(CopyDir)\include\glib-2.0\gio\gioerror.h +copy ..\..\..\gio\giomodule.h $(CopyDir)\include\glib-2.0\gio\giomodule.h +copy ..\..\..\gio\gioscheduler.h $(CopyDir)\include\glib-2.0\gio\gioscheduler.h +copy ..\..\..\gio\giostream.h $(CopyDir)\include\glib-2.0\gio\giostream.h +copy ..\..\..\gio\gloadableicon.h $(CopyDir)\include\glib-2.0\gio\gloadableicon.h +copy ..\..\..\gio\gmount.h $(CopyDir)\include\glib-2.0\gio\gmount.h +copy ..\..\..\gio\gmemoryinputstream.h $(CopyDir)\include\glib-2.0\gio\gmemoryinputstream.h +copy ..\..\..\gio\gmemoryoutputstream.h $(CopyDir)\include\glib-2.0\gio\gmemoryoutputstream.h +copy ..\..\..\gio\gmountoperation.h $(CopyDir)\include\glib-2.0\gio\gmountoperation.h +copy ..\..\..\gio\gnativevolumemonitor.h $(CopyDir)\include\glib-2.0\gio\gnativevolumemonitor.h +copy ..\..\..\gio\gnetworkaddress.h $(CopyDir)\include\glib-2.0\gio\gnetworkaddress.h +copy ..\..\..\gio\gnetworkmonitor.h $(CopyDir)\include\glib-2.0\gio\gnetworkmonitor.h +copy ..\..\..\gio\gnetworkservice.h $(CopyDir)\include\glib-2.0\gio\gnetworkservice.h +copy ..\..\..\gio\goutputstream.h $(CopyDir)\include\glib-2.0\gio\goutputstream.h +copy ..\..\..\gio\gpermission.h $(CopyDir)\include\glib-2.0\gio\gpermission.h +copy ..\..\..\gio\gpollableinputstream.h $(CopyDir)\include\glib-2.0\gio\gpollableinputstream.h +copy ..\..\..\gio\gpollableoutputstream.h $(CopyDir)\include\glib-2.0\gio\gpollableoutputstream.h +copy ..\..\..\gio\gpollableutils.h $(CopyDir)\include\glib-2.0\gio\gpollableutils.h +copy ..\..\..\gio\gproxyaddress.h $(CopyDir)\include\glib-2.0\gio\gproxyaddress.h +copy ..\..\..\gio\gproxy.h $(CopyDir)\include\glib-2.0\gio\gproxy.h +copy ..\..\..\gio\gproxyaddressenumerator.h $(CopyDir)\include\glib-2.0\gio\gproxyaddressenumerator.h +copy ..\..\..\gio\gproxyresolver.h $(CopyDir)\include\glib-2.0\gio\gproxyresolver.h +copy ..\..\..\gio\gresolver.h $(CopyDir)\include\glib-2.0\gio\gresolver.h +copy ..\..\..\gio\gresource.h $(CopyDir)\include\glib-2.0\gio\gresource.h +copy ..\..\..\gio\gseekable.h $(CopyDir)\include\glib-2.0\gio\gseekable.h +copy ..\..\..\gio\gsimpleasyncresult.h $(CopyDir)\include\glib-2.0\gio\gsimpleasyncresult.h +copy ..\..\..\gio\gsimpleiostream.h $(CopyDir)\include\glib-2.0\gio\gsimpleiostream.h +copy ..\..\..\gio\gsimplepermission.h $(CopyDir)\include\glib-2.0\gio\gsimplepermission.h +copy ..\..\..\gio\gsocket.h $(CopyDir)\include\glib-2.0\gio\gsocket.h +copy ..\..\..\gio\gsocketaddress.h $(CopyDir)\include\glib-2.0\gio\gsocketaddress.h +copy ..\..\..\gio\gsocketaddressenumerator.h $(CopyDir)\include\glib-2.0\gio\gsocketaddressenumerator.h +copy ..\..\..\gio\gsocketclient.h $(CopyDir)\include\glib-2.0\gio\gsocketclient.h +copy ..\..\..\gio\gsocketconnectable.h $(CopyDir)\include\glib-2.0\gio\gsocketconnectable.h +copy ..\..\..\gio\gsocketconnection.h $(CopyDir)\include\glib-2.0\gio\gsocketconnection.h +copy ..\..\..\gio\gsocketcontrolmessage.h $(CopyDir)\include\glib-2.0\gio\gsocketcontrolmessage.h +copy ..\..\..\gio\gsocketlistener.h $(CopyDir)\include\glib-2.0\gio\gsocketlistener.h +copy ..\..\..\gio\gsocketservice.h $(CopyDir)\include\glib-2.0\gio\gsocketservice.h +copy ..\..\..\gio\gsrvtarget.h $(CopyDir)\include\glib-2.0\gio\gsrvtarget.h +copy ..\..\..\gio\gsimpleproxyresolver.h $(CopyDir)\include\glib-2.0\gio\gsimpleproxyresolver.h +copy ..\..\..\gio\gtask.h $(CopyDir)\include\glib-2.0\gio\gtask.h +copy ..\..\..\gio\gsubprocess.h $(CopyDir)\include\glib-2.0\gio\gsubprocess.h +copy ..\..\..\gio\gsubprocesslauncher.h $(CopyDir)\include\glib-2.0\gio\gsubprocesslauncher.h +copy ..\..\..\gio\gtcpconnection.h $(CopyDir)\include\glib-2.0\gio\gtcpconnection.h +copy ..\..\..\gio\gtcpwrapperconnection.h $(CopyDir)\include\glib-2.0\gio\gtcpwrapperconnection.h +copy ..\..\..\gio\gthreadedsocketservice.h $(CopyDir)\include\glib-2.0\gio\gthreadedsocketservice.h +copy ..\..\..\gio\gthemedicon.h $(CopyDir)\include\glib-2.0\gio\gthemedicon.h +copy ..\..\..\gio\gtlsbackend.h $(CopyDir)\include\glib-2.0\gio\gtlsbackend.h +copy ..\..\..\gio\gtlscertificate.h $(CopyDir)\include\glib-2.0\gio\gtlscertificate.h +copy ..\..\..\gio\gtlsclientconnection.h $(CopyDir)\include\glib-2.0\gio\gtlsclientconnection.h +copy ..\..\..\gio\gtlsconnection.h $(CopyDir)\include\glib-2.0\gio\gtlsconnection.h +copy ..\..\..\gio\gtlsdatabase.h $(CopyDir)\include\glib-2.0\gio\gtlsdatabase.h +copy ..\..\..\gio\gtlsfiledatabase.h $(CopyDir)\include\glib-2.0\gio\gtlsfiledatabase.h +copy ..\..\..\gio\gtlsinteraction.h $(CopyDir)\include\glib-2.0\gio\gtlsinteraction.h +copy ..\..\..\gio\gtlspassword.h $(CopyDir)\include\glib-2.0\gio\gtlspassword.h +copy ..\..\..\gio\gtlsserverconnection.h $(CopyDir)\include\glib-2.0\gio\gtlsserverconnection.h +copy ..\..\..\gio\gdtlsconnection.h $(CopyDir)\include\glib-2.0\gio\gdtlsconnection.h +copy ..\..\..\gio\gdtlsclientconnection.h $(CopyDir)\include\glib-2.0\gio\gdtlsclientconnection.h +copy ..\..\..\gio\gdtlsserverconnection.h $(CopyDir)\include\glib-2.0\gio\gdtlsserverconnection.h +copy ..\..\..\gio\gvfs.h $(CopyDir)\include\glib-2.0\gio\gvfs.h +copy ..\..\..\gio\gvolume.h $(CopyDir)\include\glib-2.0\gio\gvolume.h +copy ..\..\..\gio\gvolumemonitor.h $(CopyDir)\include\glib-2.0\gio\gvolumemonitor.h +copy ..\..\..\gio\gzlibcompressor.h $(CopyDir)\include\glib-2.0\gio\gzlibcompressor.h +copy ..\..\..\gio\gzlibdecompressor.h $(CopyDir)\include\glib-2.0\gio\gzlibdecompressor.h +copy ..\..\..\gio\glistmodel.h $(CopyDir)\include\glib-2.0\gio\glistmodel.h +copy ..\..\..\gio\gliststore.h $(CopyDir)\include\glib-2.0\gio\gliststore.h +copy ..\..\..\gio\gapplication.h $(CopyDir)\include\glib-2.0\gio\gapplication.h +copy ..\..\..\gio\gapplicationcommandline.h $(CopyDir)\include\glib-2.0\gio\gapplicationcommandline.h +copy ..\..\..\gio\gactiongroup.h $(CopyDir)\include\glib-2.0\gio\gactiongroup.h +copy ..\..\..\gio\gactionmap.h $(CopyDir)\include\glib-2.0\gio\gactionmap.h +copy ..\..\..\gio\gsimpleactiongroup.h $(CopyDir)\include\glib-2.0\gio\gsimpleactiongroup.h +copy ..\..\..\gio\gremoteactiongroup.h $(CopyDir)\include\glib-2.0\gio\gremoteactiongroup.h +copy ..\..\..\gio\gactiongroupexporter.h $(CopyDir)\include\glib-2.0\gio\gactiongroupexporter.h +copy ..\..\..\gio\gdbusactiongroup.h $(CopyDir)\include\glib-2.0\gio\gdbusactiongroup.h +copy ..\..\..\gio\gaction.h $(CopyDir)\include\glib-2.0\gio\gaction.h +copy ..\..\..\gio\gpropertyaction.h $(CopyDir)\include\glib-2.0\gio\gpropertyaction.h +copy ..\..\..\gio\gsimpleaction.h $(CopyDir)\include\glib-2.0\gio\gsimpleaction.h +copy ..\..\..\gio\gmenumodel.h $(CopyDir)\include\glib-2.0\gio\gmenumodel.h +copy ..\..\..\gio\gmenu.h $(CopyDir)\include\glib-2.0\gio\gmenu.h +copy ..\..\..\gio\gmenuexporter.h $(CopyDir)\include\glib-2.0\gio\gmenuexporter.h +copy ..\..\..\gio\gdbusmenumodel.h $(CopyDir)\include\glib-2.0\gio\gdbusmenumodel.h +copy ..\..\..\gio\gnotification.h $(CopyDir)\include\glib-2.0\gio\gnotification.h +copy ..\..\..\gio\gsettingsbackend.h $(CopyDir)\include\glib-2.0\gio\gsettingsbackend.h +copy ..\..\..\gio\gsettingsschema.h $(CopyDir)\include\glib-2.0\gio\gsettingsschema.h +copy ..\..\..\gio\gsettings.h $(CopyDir)\include\glib-2.0\gio\gsettings.h +copy ..\..\..\gio\gdbusauthobserver.h $(CopyDir)\include\glib-2.0\gio\gdbusauthobserver.h +copy ..\..\..\gio\gcredentials.h $(CopyDir)\include\glib-2.0\gio\gcredentials.h +copy ..\..\..\gio\gdbusutils.h $(CopyDir)\include\glib-2.0\gio\gdbusutils.h +copy ..\..\..\gio\gdbuserror.h $(CopyDir)\include\glib-2.0\gio\gdbuserror.h +copy ..\..\..\gio\gdbusaddress.h $(CopyDir)\include\glib-2.0\gio\gdbusaddress.h +copy ..\..\..\gio\gdbusconnection.h $(CopyDir)\include\glib-2.0\gio\gdbusconnection.h +copy ..\..\..\gio\gdbusmessage.h $(CopyDir)\include\glib-2.0\gio\gdbusmessage.h +copy ..\..\..\gio\gdbusnameowning.h $(CopyDir)\include\glib-2.0\gio\gdbusnameowning.h +copy ..\..\..\gio\gdbusnamewatching.h $(CopyDir)\include\glib-2.0\gio\gdbusnamewatching.h +copy ..\..\..\gio\gdbusproxy.h $(CopyDir)\include\glib-2.0\gio\gdbusproxy.h +copy ..\..\..\gio\gdbusintrospection.h $(CopyDir)\include\glib-2.0\gio\gdbusintrospection.h +copy ..\..\..\gio\gdbusmethodinvocation.h $(CopyDir)\include\glib-2.0\gio\gdbusmethodinvocation.h +copy ..\..\..\gio\gdbusserver.h $(CopyDir)\include\glib-2.0\gio\gdbusserver.h +copy ..\..\..\gio\gdbusinterface.h $(CopyDir)\include\glib-2.0\gio\gdbusinterface.h +copy ..\..\..\gio\gdbusinterfaceskeleton.h $(CopyDir)\include\glib-2.0\gio\gdbusinterfaceskeleton.h +copy ..\..\..\gio\gdbusobject.h $(CopyDir)\include\glib-2.0\gio\gdbusobject.h +copy ..\..\..\gio\gdbusobjectskeleton.h $(CopyDir)\include\glib-2.0\gio\gdbusobjectskeleton.h +copy ..\..\..\gio\gdbusobjectproxy.h $(CopyDir)\include\glib-2.0\gio\gdbusobjectproxy.h +copy ..\..\..\gio\gdbusobjectmanager.h $(CopyDir)\include\glib-2.0\gio\gdbusobjectmanager.h +copy ..\..\..\gio\gdbusobjectmanagerclient.h $(CopyDir)\include\glib-2.0\gio\gdbusobjectmanagerclient.h +copy ..\..\..\gio\gdbusobjectmanagerserver.h $(CopyDir)\include\glib-2.0\gio\gdbusobjectmanagerserver.h +copy ..\..\..\gio\gtestdbus.h $(CopyDir)\include\glib-2.0\gio\gtestdbus.h +copy ..\..\..\gio\gioenumtypes.h $(CopyDir)\include\glib-2.0\gio\gioenumtypes.h +copy ..\..\..\gio\gnetworking.h $(CopyDir)\include\glib-2.0\gio\gnetworking.h +mkdir $(CopyDir)\include\gio-win32-$(ApiVersion)\gio +copy ..\..\..\gio\gwin32inputstream.h $(CopyDir)\include\gio-win32-$(ApiVersion)\gio +copy ..\..\..\gio\gwin32outputstream.h $(CopyDir)\include\gio-win32-$(ApiVersion)\gio +mkdir $(CopyDir)\lib\glib-$(ApiVersion)\include +copy ..\..\..\glib\glibconfig.h $(CopyDir)\lib\glib-$(ApiVersion)\include +copy $(BinDir)\glib-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gthread-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gmodule-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gobject-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gio-$(ApiVersion).lib $(CopyDir)\lib +mkdir $(CopyDir)\lib\pkgconfig +copy ..\gio-windows-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gio-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gobject-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gmodule-no-export-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gmodule-export-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gmodule-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gthread-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\glib-2.0.pc $(CopyDir)\lib\pkgconfig +mkdir $(CopyDir)\share\glib-$(ApiVersion)\schemas +copy ..\..\..\gio\gschema.dtd $(CopyDir)\share\glib-$(ApiVersion)\schemas +mkdir $(CopyDir)\share\glib-$(ApiVersion)\codegen +copy ..\..\..\gio\gdbus-2.0\codegen\*.py $(CopyDir)\share\glib-$(ApiVersion)\codegen + + ..\gio-windows-2.0.pc;..\gio-2.0.pc;..\gobject-2.0.pc;..\gmodule-no-export-2.0.pc;..\gmodule-export-2.0.pc;..\gmodule-2.0.pc;..\gthread-2.0.pc;..\glib-2.0.pc + if exist $(PythonPath)\python.exe $(PythonPath)\python.exe ..\glibpc.py --prefix=$(CopyDir) --version=$(GlibVersion) + + + <_PropertySheetDisplayName>glibinstallprops + + + + $(BinDir) + + + $(InstalledDlls) + + + $(InstalledBins) + + + $(InstalledWin32Bins) + + + $(InstalledX64Bins) + + + $(GlibDoInstall) + + + $(GlibPCFiles) + + + $(GlibGenPC) + + + diff --git a/build/win32/vs12/glib-install.vcxproj b/build/win32/vs12/glib-install.vcxproj new file mode 100644 index 0000000..56893f3 --- /dev/null +++ b/build/win32/vs12/glib-install.vcxproj @@ -0,0 +1,182 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {2093D218-190E-4194-9421-3BA7CBF33B10} + glibinstall + Win32Proj + + + + Utility + MultiByte + true + v120 + + + Utility + MultiByte + v120 + + + Utility + MultiByte + true + v120 + + + Utility + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + $(GlibEtcInstallRoot)\ + + $(GlibEtcInstallRoot)\ + + $(GlibEtcInstallRoot)\ + + $(GlibEtcInstallRoot)\ + + + + + + + + + + + + + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + + + Installing Build Results... + $(GlibPCFiles) + $(GlibDoInstall) + $(InstalledDlls);$(InstalledBins);$(InstalledWin32Bins);%(Outputs) + Installing Build Results... + $(GlibPCFiles) + $(GlibDoInstall) + $(InstalledDlls);$(InstalledBins);$(InstalledX64Bins);%(Outputs) + Installing Build Results... + $(GlibPCFiles) + $(GlibDoInstall) + $(InstalledDlls);$(InstalledBins);$(InstalledWin32Bins);%(Outputs) + Installing Build Results... + $(GlibPCFiles) + $(GlibDoInstall) + $(InstalledDlls);$(InstalledBins);$(InstalledX64Bins);%(Outputs) + + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {bd12e835-5c52-4e5d-8234-1c579f33e27a} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {4214047c-f5c1-40b3-8369-5dced8c32770} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + {e40e8a7e-7cae-4659-9b8b-bc38898e3074} + false + + + {289240e7-e167-47ce-a20c-58d852e520ba} + false + + + {c8afb8c3-fffd-460f-bc13-9ac25d7b117c} + false + + + {015d69d0-8b42-438a-adae-052ac036e065} + false + + + {05041c63-f1c5-49ba-a7de-61ebb5307eaa} + false + + + {b0cdec7f-dce1-4f7e-b8a4-a3009c18fb2a} + false + + + {95a1571f-61be-4c51-be53-2f2dab280685} + false + + + {95a1571f-61be-4c51-be53-2f2dab280686} + false + + + {95a1571f-61be-4c51-be53-2f2dab280687} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs12/glib-install.vcxproj.filters b/build/win32/vs12/glib-install.vcxproj.filters new file mode 100644 index 0000000..18ffe5f --- /dev/null +++ b/build/win32/vs12/glib-install.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Resource Files + Resource Files + + diff --git a/build/win32/vs12/glib-version-paths.props b/build/win32/vs12/glib-version-paths.props new file mode 100644 index 0000000..a0da761 --- /dev/null +++ b/build/win32/vs12/glib-version-paths.props @@ -0,0 +1,58 @@ + + + + 12 + 2.48.0 + 2.0 + ..\..\..\..\vs$(VSVer)\$(Platform) + $(GlibEtcInstallRoot) + lib + -$(ApiVersion)-0 + + -2-vs$(VSVer) + $(GlibSeparateVSDllPrefix) + $(GlibSeparateVSDllSuffix) + c:\python27 + + + <_PropertySheetDisplayName>glibversionpathsprops + + + + $(VSVer) + + + $(GlibVersion) + + + $(ApiVersion) + + + $(GlibEtcInstallRoot) + + + $(CopyDir) + + + $(GlibLibtoolCompatibleDllPrefix) + + + $(GlibLibtoolCompatibleDllSuffix) + + + $(GlibSeparateVSDllPrefix) + + + $(GlibSeparateVSDllSuffix) + + + $(GlibDllPrefix) + + + $(GlibDllSuffix) + + + $(PythonPath) + + + diff --git a/build/win32/vs12/glib.sln b/build/win32/vs12/glib.sln new file mode 100644 index 0000000..8aae8f7 --- /dev/null +++ b/build/win32/vs12/glib.sln @@ -0,0 +1,289 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib", "glib.vcxproj", "{12BCA020-EABF-429E-876A-A476BC9C10C0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmodule", "gmodule.vcxproj", "{4214047C-F5C1-40B3-8369-5DCED8C32770}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gobject", "gobject.vcxproj", "{F172EFFC-E30F-4593-809E-DB2024B1E753}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gthread", "gthread.vcxproj", "{C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-genmarshal", "glib-genmarshal.vcxproj", "{BD12E835-5C52-4E5D-8234-1C579F33E27A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gio", "gio.vcxproj", "{F3D1583C-5613-4809-BD98-7CC1C1276F92}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gspawn-win32-helper", "gspawn-win32-helper.vcxproj", "{289240E7-E167-47CE-A20C-58D852E520BA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gspawn-win32-helper-console", "gspawn-win32-helper-console.vcxproj", "{E40E8A7E-7CAE-4659-9B8B-BC38898E3074}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-compile-schemas", "glib-compile-schemas.vcxproj", "{015D69D0-8B42-438A-ADAE-052AC036E065}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsettings", "gsettings.vcxproj", "{05041C63-F1C5-49BA-A7DE-61EBB5307EAA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-install", "glib-install.vcxproj", "{2093D218-190E-4194-9421-3BA7CBF33B10}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gresource", "gresource.vcxproj", "{95A1571F-61BE-4C51-BE53-2F2DAB280685}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-compile-resources", "glib-compile-resources.vcxproj", "{B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gio-querymodules", "gio-querymodules.vcxproj", "{95A1571F-61BE-4C51-BE53-2F2DAB280686}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gdbus", "gdbus.vcxproj", "{95A1571F-61BE-4C51-BE53-2F2DAB280687}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Debug_BundledPCRE|Win32 = Debug_BundledPCRE|Win32 + Debug_BundledPCRE|x64 = Debug_BundledPCRE|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + Release_BundledPCRE|Win32 = Release_BundledPCRE|Win32 + Release_BundledPCRE|x64 = Release_BundledPCRE|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|Win32.ActiveCfg = Debug|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|Win32.Build.0 = Debug|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|x64.ActiveCfg = Debug|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|x64.Build.0 = Debug|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|Win32.ActiveCfg = Debug_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|Win32.Build.0 = Debug_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|x64.ActiveCfg = Debug_BundledPCRE|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|x64.Build.0 = Debug_BundledPCRE|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|Win32.ActiveCfg = Release|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|Win32.Build.0 = Release|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|x64.ActiveCfg = Release|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|x64.Build.0 = Release|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|Win32.ActiveCfg = Release_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|Win32.Build.0 = Release_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|x64.ActiveCfg = Release_BundledPCRE|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|x64.Build.0 = Release_BundledPCRE|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|Win32.ActiveCfg = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|Win32.Build.0 = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|x64.ActiveCfg = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|x64.Build.0 = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|Win32.ActiveCfg = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|Win32.Build.0 = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|x64.ActiveCfg = Release|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|x64.Build.0 = Release|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|Win32.ActiveCfg = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|Win32.Build.0 = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|x64.ActiveCfg = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|x64.Build.0 = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|Win32.ActiveCfg = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|Win32.Build.0 = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|x64.ActiveCfg = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|x64.Build.0 = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|Win32.ActiveCfg = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|Win32.Build.0 = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|x64.ActiveCfg = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|x64.Build.0 = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|Win32.ActiveCfg = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|Win32.Build.0 = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|x64.ActiveCfg = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|x64.Build.0 = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|Win32.ActiveCfg = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|Win32.Build.0 = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|x64.ActiveCfg = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|x64.Build.0 = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|Win32.ActiveCfg = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|Win32.Build.0 = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|x64.ActiveCfg = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|x64.Build.0 = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|Win32.ActiveCfg = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|Win32.Build.0 = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|x64.ActiveCfg = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|x64.Build.0 = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|Win32.ActiveCfg = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|Win32.Build.0 = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|x64.ActiveCfg = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|x64.Build.0 = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|Win32.ActiveCfg = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|Win32.Build.0 = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|x64.ActiveCfg = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|x64.Build.0 = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release|Win32.ActiveCfg = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release|Win32.Build.0 = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release|x64.ActiveCfg = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release|x64.Build.0 = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|Win32.ActiveCfg = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|Win32.Build.0 = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|x64.ActiveCfg = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|x64.Build.0 = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|Win32.ActiveCfg = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|Win32.Build.0 = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|x64.ActiveCfg = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|x64.Build.0 = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|Win32.ActiveCfg = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|Win32.Build.0 = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|x64.ActiveCfg = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|x64.Build.0 = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|Win32.ActiveCfg = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|Win32.Build.0 = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|x64.ActiveCfg = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|x64.Build.0 = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|Win32.ActiveCfg = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|Win32.Build.0 = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|x64.ActiveCfg = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|x64.Build.0 = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|Win32.ActiveCfg = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|Win32.Build.0 = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|x64.ActiveCfg = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|x64.Build.0 = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.ActiveCfg = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.Build.0 = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|x64.ActiveCfg = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|x64.Build.0 = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|Win32.ActiveCfg = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|Win32.Build.0 = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|x64.ActiveCfg = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|x64.Build.0 = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|Win32.ActiveCfg = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|Win32.Build.0 = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|x64.ActiveCfg = Debug|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|x64.Build.0 = Debug|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|Win32.ActiveCfg = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|Win32.Build.0 = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|x64.ActiveCfg = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|x64.Build.0 = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/build/win32/vs12/glib.vcxproj b/build/win32/vs12/glib.vcxproj new file mode 100644 index 0000000..5891fab --- /dev/null +++ b/build/win32/vs12/glib.vcxproj @@ -0,0 +1,755 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Debug_BundledPCRE + Win32 + + + Debug_BundledPCRE + x64 + + + Release + Win32 + + + Release + x64 + + + Release_BundledPCRE + Win32 + + + Release_BundledPCRE + x64 + + + + {12BCA020-EABF-429E-876A-A476BC9C10C0} + glib + Win32Proj + + + + DynamicLibrary + MultiByte + true + v120 + + + DynamicLibrary + MultiByte + true + v120 + + + DynamicLibrary + MultiByte + v120 + + + DynamicLibrary + MultiByte + v120 + + + DynamicLibrary + MultiByte + true + v120 + + + DynamicLibrary + MultiByte + true + v120 + + + DynamicLibrary + MultiByte + v120 + + + DynamicLibrary + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + Debug\$(Platform)\bin\ + true + true + Debug\$(Platform)\bin\ + true + false + Release\$(Platform)\bin\ + false + false + Release\$(Platform)\bin\ + false + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;$(UseSystemPCREDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + ws2_32.lib;winmm.lib;pcred.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;$(UseSystemPCREDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;pcred.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + $(GLibBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + $(GLibBuildDefines);$(UseSystemPCREDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;pcre.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + $(GLibBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + $(GLibBuildDefines);$(UseSystemPCREDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;pcre.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + + + + + + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + + + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + + + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + + + + + + + + + diff --git a/build/win32/vs12/glib.vcxproj.filters b/build/win32/vs12/glib.vcxproj.filters new file mode 100644 index 0000000..f9140f0 --- /dev/null +++ b/build/win32/vs12/glib.vcxproj.filters @@ -0,0 +1,202 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {bb961775-fd45-4205-b1fd-901c3c8fd64c} + + + {f630c518-4c58-4dfa-ab43-5fa0b0eb10f1} + + + {9fef0e23-cf71-48aa-979b-7eb84df56143} + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\libcharset + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + + Resource Files + Resource Files + + + + Resource Files + + + diff --git a/build/win32/vs12/gmodule.vcxproj b/build/win32/vs12/gmodule.vcxproj new file mode 100644 index 0000000..2d329a8 --- /dev/null +++ b/build/win32/vs12/gmodule.vcxproj @@ -0,0 +1,204 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {4214047C-F5C1-40B3-8369-5DCED8C32770} + gmodule + Win32Proj + + + + DynamicLibrary + MultiByte + true + v120 + + + DynamicLibrary + MultiByte + v120 + + + DynamicLibrary + MultiByte + true + v120 + + + DynamicLibrary + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;$(GModuleBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + $(GModuleBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GModuleBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + $(GModuleBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + Copying gmoduleconf.h from gmoduleconf.h.win32... + $(GenGModuleConfH) + ..\..\..\gmodule\gmoduleconf.h;%(Outputs) + Copying gmoduleconf.h from gmoduleconf.h.win32... + $(GenGModuleConfH) + ..\..\..\gmodule\gmoduleconf.h;%(Outputs) + Copying gmoduleconf.h from gmoduleconf.h.win32... + $(GenGModuleConfH) + ..\..\..\gmodule\gmoduleconf.h;%(Outputs) + Copying gmoduleconf.h from gmoduleconf.h.win32... + $(GenGModuleConfH) + ..\..\..\gmodule\gmoduleconf.h;%(Outputs) + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs12/gmodule.vcxproj.filters b/build/win32/vs12/gmodule.vcxproj.filters new file mode 100644 index 0000000..968e8ac --- /dev/null +++ b/build/win32/vs12/gmodule.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + + Resource Files + + + + Resource Files + + + \ No newline at end of file diff --git a/build/win32/vs12/gobject.vcxproj b/build/win32/vs12/gobject.vcxproj new file mode 100644 index 0000000..7321acc --- /dev/null +++ b/build/win32/vs12/gobject.vcxproj @@ -0,0 +1,225 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {F172EFFC-E30F-4593-809E-DB2024B1E753} + gobject + Win32Proj + + + + DynamicLibrary + MultiByte + true + v120 + + + DynamicLibrary + MultiByte + v120 + + + DynamicLibrary + MultiByte + true + v120 + + + DynamicLibrary + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;$(GObjectBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + $(GObjectBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GObjectBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + $(GObjectBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {c8afb8c3-fffd-460f-bc13-9ac25d7b117c} + false + + + + + + diff --git a/build/win32/vs12/gobject.vcxproj.filters b/build/win32/vs12/gobject.vcxproj.filters new file mode 100644 index 0000000..96e6da5 --- /dev/null +++ b/build/win32/vs12/gobject.vcxproj.filters @@ -0,0 +1,45 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + + + Resource Files + + + + Resource Files + + + diff --git a/build/win32/vs12/gresource.vcxproj b/build/win32/vs12/gresource.vcxproj new file mode 100644 index 0000000..4a3c9d8 --- /dev/null +++ b/build/win32/vs12/gresource.vcxproj @@ -0,0 +1,180 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {95A1571F-61BE-4C51-BE53-2F2DAB280685} + gresource + Win32Proj + + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs12/gresource.vcxproj.filters b/build/win32/vs12/gresource.vcxproj.filters new file mode 100644 index 0000000..91dd6dc --- /dev/null +++ b/build/win32/vs12/gresource.vcxproj.filters @@ -0,0 +1,14 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs12/gsettings.vcxproj b/build/win32/vs12/gsettings.vcxproj new file mode 100644 index 0000000..d1dd66a --- /dev/null +++ b/build/win32/vs12/gsettings.vcxproj @@ -0,0 +1,181 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA} + gsettings + Win32Proj + + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + %(AdditionalDependencies) + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs12/gsettings.vcxproj.filters b/build/win32/vs12/gsettings.vcxproj.filters new file mode 100644 index 0000000..0c81fc6 --- /dev/null +++ b/build/win32/vs12/gsettings.vcxproj.filters @@ -0,0 +1,14 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs12/gspawn-win32-helper-console.vcxproj b/build/win32/vs12/gspawn-win32-helper-console.vcxproj new file mode 100644 index 0000000..3c30de8 --- /dev/null +++ b/build/win32/vs12/gspawn-win32-helper-console.vcxproj @@ -0,0 +1,177 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074} + gspawnwin32helperconsole + Win32Proj + + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;$(GLibInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + true + Console + false + + + MachineX86 + + + + + $(GLibInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GLibInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)gspawn-win64-helper-console.exe + true + $(OutDir)gspawn-win64-helper-console.pdb + Console + false + + + MachineX64 + + + + + $(GLibInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)gspawn-win64-helper-console.exe + true + $(OutDir)gspawn-win64-helper-console.pdb + Console + true + true + false + + + MachineX64 + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs12/gspawn-win32-helper-console.vcxproj.filters b/build/win32/vs12/gspawn-win32-helper-console.vcxproj.filters new file mode 100644 index 0000000..5b9e6ef --- /dev/null +++ b/build/win32/vs12/gspawn-win32-helper-console.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs12/gspawn-win32-helper.vcxproj b/build/win32/vs12/gspawn-win32-helper.vcxproj new file mode 100644 index 0000000..1b6ea3d --- /dev/null +++ b/build/win32/vs12/gspawn-win32-helper.vcxproj @@ -0,0 +1,177 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {289240E7-E167-47CE-A20C-58D852E520BA} + gspawnwin32helper + Win32Proj + + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + Application + MultiByte + true + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + _DEBUG;$(GLibInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + true + Windows + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GLibInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)gspawn-win64-helper.exe + true + $(OutDir)gspawn-win64-helper.pdb + Windows + false + + + MachineX64 + + + + + $(GLibInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Windows + true + true + false + + + MachineX86 + + + + + $(GLibInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)gspawn-win64-helper.exe + true + $(OutDir)gspawn-win64-helper.pdb + Windows + true + true + false + + + MachineX64 + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs12/gspawn-win32-helper.vcxproj.filters b/build/win32/vs12/gspawn-win32-helper.vcxproj.filters new file mode 100644 index 0000000..0a83fa2 --- /dev/null +++ b/build/win32/vs12/gspawn-win32-helper.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs12/gthread.vcxproj b/build/win32/vs12/gthread.vcxproj new file mode 100644 index 0000000..604b6b6 --- /dev/null +++ b/build/win32/vs12/gthread.vcxproj @@ -0,0 +1,188 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C} + gthread + Win32Proj + + + + DynamicLibrary + MultiByte + true + v120 + + + DynamicLibrary + MultiByte + v120 + + + DynamicLibrary + MultiByte + true + v120 + + + DynamicLibrary + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;$(GThreadBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + $(GThreadBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GThreadBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + $(GThreadBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs12/gthread.vcxproj.filters b/build/win32/vs12/gthread.vcxproj.filters new file mode 100644 index 0000000..fb35c1f --- /dev/null +++ b/build/win32/vs12/gthread.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/build/win32/vs14/Makefile.am b/build/win32/vs14/Makefile.am new file mode 100644 index 0000000..56f3110 --- /dev/null +++ b/build/win32/vs14/Makefile.am @@ -0,0 +1,45 @@ +EXTRA_DIST = \ + README.txt \ + glib.sln \ + glib.vcxproj \ + glib.vcxproj.filters \ + glib-genmarshal.vcxproj \ + glib-genmarshal.vcxproj.filters \ + gspawn-win32-helper-console.vcxproj \ + gspawn-win32-helper-console.vcxproj.filters \ + gspawn-win32-helper.vcxproj \ + gspawn-win32-helper.vcxproj.filters \ + gmodule.vcxproj \ + gmodule.vcxproj.filters \ + gobject.vcxproj \ + gobject.vcxproj.filters \ + gthread.vcxproj \ + gthread.vcxproj.filters \ + gio.vcxproj \ + gio.vcxproj.filters \ + glib-compile-schemas.vcxproj \ + glib-compile-schemas.vcxproj.filters \ + gsettings.vcxproj \ + gsettings.vcxproj.filters \ + glib-compile-resources.vcxproj \ + glib-compile-resources.vcxproj.filters \ + gresource.vcxproj \ + gresource.vcxproj.filters \ + gio-querymodules.vcxproj \ + gio-querymodules.vcxproj.filters \ + gdbus.vcxproj \ + gdbus.vcxproj.filters \ + glib-install.vcxproj \ + glib-install.vcxproj.filters \ + glib-build-defines.props \ + glib-install.props \ + glib-version-paths.props \ + glib-gen-srcs.props + +DISTCLEANFILES = $(EXTRA_DIST) + +MSVC_VER = 14 +MSVC_FORMAT_VER = 12 +MSVC_VER_LONG = 14 + +include $(top_srcdir)/build/Makefile-newvs.am diff --git a/build/win32/vs14/Makefile.in b/build/win32/vs14/Makefile.in new file mode 100644 index 0000000..f0fb8a8 --- /dev/null +++ b/build/win32/vs14/Makefile.in @@ -0,0 +1,662 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Centralized autotools file +# Create the Visual Studio 2012/2013/2015 project files +# from the Visual Studio 2010 project files + +# This autotools file, from GLib, can be used in other projects +# that have Visual Studio build support, and is copied into +# $(srcroot)/build/. + +# Author: Fan, Chun-wei +# November 05, 2012 + +# MSVC_VER_LONG: Long Version of Visual Studio (2012, 2013, 14 and so on) +# MSVC_VER: Short Version of Visual Studio (11 for 2012, 12 for 2013, 14 for 2015 and so on) +# MSVC_FORMAT_VER: Use 12 for MSVC 2012 through 2015 +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = build/win32/vs14 +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build/Makefile-newvs.am +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = \ + README.txt \ + glib.sln \ + glib.vcxproj \ + glib.vcxproj.filters \ + glib-genmarshal.vcxproj \ + glib-genmarshal.vcxproj.filters \ + gspawn-win32-helper-console.vcxproj \ + gspawn-win32-helper-console.vcxproj.filters \ + gspawn-win32-helper.vcxproj \ + gspawn-win32-helper.vcxproj.filters \ + gmodule.vcxproj \ + gmodule.vcxproj.filters \ + gobject.vcxproj \ + gobject.vcxproj.filters \ + gthread.vcxproj \ + gthread.vcxproj.filters \ + gio.vcxproj \ + gio.vcxproj.filters \ + glib-compile-schemas.vcxproj \ + glib-compile-schemas.vcxproj.filters \ + gsettings.vcxproj \ + gsettings.vcxproj.filters \ + glib-compile-resources.vcxproj \ + glib-compile-resources.vcxproj.filters \ + gresource.vcxproj \ + gresource.vcxproj.filters \ + gio-querymodules.vcxproj \ + gio-querymodules.vcxproj.filters \ + gdbus.vcxproj \ + gdbus.vcxproj.filters \ + glib-install.vcxproj \ + glib-install.vcxproj.filters \ + glib-build-defines.props \ + glib-install.props \ + glib-version-paths.props \ + glib-gen-srcs.props + +DISTCLEANFILES = $(EXTRA_DIST) +MSVC_VER = 14 +MSVC_FORMAT_VER = 12 +MSVC_VER_LONG = 14 +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/build/Makefile-newvs.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/win32/vs14/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/win32/vs14/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/build/Makefile-newvs.am $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +%.sln: + sed 's/11\.00/$(MSVC_FORMAT_VER)\.00/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + sed 's/2010/$(MSVC_VER_LONG)/g' < $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@ + rm $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + +%.txt: + sed 's/vs10/vs$(MSVC_VER)/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + sed 's/VS10/VS$(MSVC_VER)/g' < $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@ + rm $(top_builddir)/build/win32/vs$(MSVC_VER)/$@.tmp + +%.vcxproj: + if test -e $(top_srcdir)/build/win32/vs10/$@; then \ + sed 's/v100/v$(MSVC_VER)0/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + else \ + sed 's/v100/v$(MSVC_VER)0/g' < $(top_builddir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + fi + +%.props: + if test -e $(top_srcdir)/build/win32/vs10/$@; then \ + sed 's/10<\/VSVer>/$(MSVC_VER)<\/VSVer>/g' < $(top_srcdir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + else \ + sed 's/10<\/VSVer>/$(MSVC_VER)<\/VSVer>/g' < $(top_builddir)/build/win32/vs10/$@ > $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + fi + +%.vcxproj.filters: + if test -e $(top_srcdir)/build/win32/vs10/$@; then \ + cp $(top_srcdir)/build/win32/vs10/$@ $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + else \ + cp $(top_builddir)/build/win32/vs10/$@ $(top_builddir)/build/win32/vs$(MSVC_VER)/$@; \ + fi + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/build/win32/vs14/README.txt b/build/win32/vs14/README.txt new file mode 100644 index 0000000..1ab2cc9 --- /dev/null +++ b/build/win32/vs14/README.txt @@ -0,0 +1,91 @@ +Please do not compile this package (GLib) in paths that contain +spaces in them-as strange problems may occur during compilation or during +the use of the library. + +Please refer to the following GNOME Live! page for more detailed +instructions on building GLib and its dependencies with Visual C++: + +https://wiki.gnome.org/Projects/GTK%2B/Win32/MSVCCompilationOfGTKStack + +This VS14 solution and the projects it includes are intented to be used +in a GLib source tree unpacked from a tarball. In a git checkout you +first need to use some Unix-like environment or run build/win32/setup.py, +which will do the work for you: + +$python build/win32/setup.py --perl path_to_your_perl.exe + +for more usage on this script, run +$python build/win32/setup.py -h/--help + +The required dependencies are zlib, proxy-libintl and LibFFI. Fetch the latest +proxy-libintl-dev and zlib-dev zipfiles from +http://ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/ for 32-bit +builds, and correspondingly +http://ftp.gnome.org/pub/GNOME/binaries/win64/dependencies/ for 64-bit +builds. + +One may wish to build his/her own ZLib-It is recommended that ZLib is +built using the win32/Makefile.msc makefile with VS14 with the ASM routines +to avoid linking problems-see win32/Makefile.msc in ZLib for more details. + +For LibFFI, please get version 3.0.10 or later, as Visual C++ build support +was added in the 3.0.10 release series. Please see the README file that +comes with the LibFFI source package for more details on how to build LibFFI +on Visual C++-please note that the mozilla-build package from Mozilla is needed +in order to build LibFFI on Windows. + +Please note, although using one's own existing PCRE installation to build GLib +is possible, it is still recommended to build PCRE during the process of building +GLib (i.e. using the Debug or Release configurations), as GLib's bundled PCRE +has been patched to work optimally with GLib. If building against an existing +PCRE is desired, use the(BuildType)_ExtPCRE configurations, but one needs to ensure +that the existing PCRE is: +-Built with VS14 +-Unicode support is built in (please see the CMake options for this) +-It is built with the Multithreaded DLL (/MD, for release builds) or the + Multithreaded DLL Debug (/MDd, for debug builds) + +If using static builds of PCRE, please add PCRE_STATIC to the "Preprocessor +Definitions" of the glib project settings. + +Please be aware that the GLib's regex test program will only pass with PCRE directly +built into GLib. + +Set up the source tree as follows under some arbitrary top +folder : + +\ +\vs14\ + +*this* file you are now reading is thus located at +\\build\win32\vs14\README. + + is either Win32 or x64, as in VS14 project files. + +You should unpack the proxy-libintl-dev zip file into +\vs14\, so that for instance libintl.h end up at +\vs14\\include\libintl.h. + +For LibFFI, one should also put the generated ffi.h and ffitarget.h +into \vs14\\include\ and the compiled static libffi.lib +(or copy libffi-convenience.lib into libffi.lib) into +\vs14\\lib\. + +The "install" project will copy build results and headers into their +appropriate location under \vs14\. For instance, +built DLLs go into \vs14\\bin, built LIBs into +\vs14\\lib and GLib headers into +\vs14\\include\glib-2.0. This is then from where +project files higher in the stack are supposed to look for them, not +from a specific GLib source tree. + +Note: If you see C4819 errors and you are compiling GLib on a DBCS +(Chinese/Korean/Japanese) version of Windows, you may need to switch +to an English locale in Control Panel->Region and Languages->System-> +Change System Locale, reboot and rebuild to ensure GLib, Pango, GDK-Pixbuf, +ATK and GTK+ is built correctly. This is due to a bug in Visual C++ running +on DBCS locales, and also affects many other opensource projects which are +built with Visual C++, including but not limited to QT and the Mozilla apps. + +--Tor Lillqvist +--Updated by Chun-wei Fan diff --git a/build/win32/vs14/gdbus.vcxproj b/build/win32/vs14/gdbus.vcxproj new file mode 100644 index 0000000..c122a7a --- /dev/null +++ b/build/win32/vs14/gdbus.vcxproj @@ -0,0 +1,180 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {95A1571F-61BE-4C51-BE53-2F2DAB280687} + gresource + Win32Proj + + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs14/gdbus.vcxproj.filters b/build/win32/vs14/gdbus.vcxproj.filters new file mode 100644 index 0000000..ce37c1c --- /dev/null +++ b/build/win32/vs14/gdbus.vcxproj.filters @@ -0,0 +1,14 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs14/gio-querymodules.vcxproj b/build/win32/vs14/gio-querymodules.vcxproj new file mode 100644 index 0000000..3643e70 --- /dev/null +++ b/build/win32/vs14/gio-querymodules.vcxproj @@ -0,0 +1,184 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {95A1571F-61BE-4C51-BE53-2F2DAB280686} + gresource + Win32Proj + + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;$(GioInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;$(GioInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + $(GioInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + $(GioInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + {4214047c-f5c1-40b3-8369-5dced8c32770} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs14/gio-querymodules.vcxproj.filters b/build/win32/vs14/gio-querymodules.vcxproj.filters new file mode 100644 index 0000000..79fbfa1 --- /dev/null +++ b/build/win32/vs14/gio-querymodules.vcxproj.filters @@ -0,0 +1,14 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs14/gio.vcxproj b/build/win32/vs14/gio.vcxproj new file mode 100644 index 0000000..3eafde3 --- /dev/null +++ b/build/win32/vs14/gio.vcxproj @@ -0,0 +1,420 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {F3D1583C-5613-4809-BD98-7CC1C1276F92} + gio + + + + DynamicLibrary + MultiByte + true + v140 + + + DynamicLibrary + MultiByte + v140 + + + DynamicLibrary + MultiByte + true + v140 + + + DynamicLibrary + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + _DEBUG;$(GioBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + $(GioBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + Disabled + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + _DEBUG;$(GioBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + ../../../gio;../../../gmodule;%(AdditionalIncludeDirectories) + $(GioBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + zlib1.lib;$(WindowsNetworkingLibs);%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + Copying gnetworking.h from gnetworking.h.win32... + $(GenGNetworkingH) + ..\..\..\gio\gnetworking.h;%(Outputs) + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {4214047c-f5c1-40b3-8369-5dced8c32770} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + + + + diff --git a/build/win32/vs14/gio.vcxproj.filters b/build/win32/vs14/gio.vcxproj.filters new file mode 100644 index 0000000..3d3c528 --- /dev/null +++ b/build/win32/vs14/gio.vcxproj.filters @@ -0,0 +1,229 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + + + Resource Files + + + + Resource Files + + + diff --git a/build/win32/vs14/glib-build-defines.props b/build/win32/vs14/glib-build-defines.props new file mode 100644 index 0000000..9634e5b --- /dev/null +++ b/build/win32/vs14/glib-build-defines.props @@ -0,0 +1,84 @@ + + + + + + + PCRE_STATIC;LINK_SIZE=2;MAX_NAME_SIZE=32;MAX_NAME_COUNT=10000;NEWLINE=-1;POSIX_MALLOC_THRESHOLD=10;MATCH_LIMIT=10000000;MATCH_LIMIT_RECURSION=10000000;SUPPORT_UCP;SUPPORT_UTF;SUPPORT_UTF8;G_LOG_DOMAIN="GLib-GRegex" + PCRE_EXP_DECL=__declspec(dllexport)extern;PCRE_EXP_DEFN= + -UBSR_ANYCRLF -UEBCDIC + LIBDIR="blah" + DLL_EXPORT + USE_SYSTEM_PCRE + GLIB_COMPILATION + GIO_COMPILATION + $(GLibInBuildMacro);$(DllExportDefines);G_LOG_DOMAIN="GLib" + G_LOG_DOMAIN="GThread" + G_LOG_DOMAIN="GModule" + GOBJECT_COMPILATION;$(DllExportDefines);G_LOG_DOMAIN="GLib-GObject";FFI_BUILDING + $(GioInBuildMacro);G_LOG_DOMAIN="GLib-GIO";$(DllExportDefines) + ws2_32.lib;shlwapi.lib;dnsapi.lib;iphlpapi.lib + + + <_PropertySheetDisplayName>glibbuilddefinesprops + $(SolutionDir)$(Configuration)\$(PlatformName)\bin\ + $(SolutionDir)$(Configuration)\$(PlatformName)\obj\$(ProjectName)\ + + + + ..\..\..;..\..\..\glib;$(GlibEtcInstallRoot)\include;%(AdditionalIncludeDirectories) + HAVE_CONFIG_H;%(PreprocessorDefinitions) + msvc_recommended_pragmas.h;%(ForcedIncludeFiles) + true + /d2Zi+ %(AdditionalOptions) + + + intl.lib;%(AdditionalDependencies) + $(GlibEtcInstallRoot)\lib;%(AdditionalLibraryDirectories) + + + + + $(GLibBundledPCREDefines) + + + $(GlibBundledPCREExportDefines) + + + $(GLibBundledPCREUndefs) + + + $(LocalCharsetDefs) + + + $(DllExportDefines) + + + $(UseSystemPCREDefines) + + + $(GLibInBuildMacro) + + + $(GioInBuildMacro) + + + $(GLibBuildDefines) + + + $(GThreadBuildDefines) + + + $(GModuleBuildDefines) + + + $(GObjectBuildDefines) + + + $(GioBuildDefines) + + + $(WindowsNetworkingLibs) + + + diff --git a/build/win32/vs14/glib-compile-resources.vcxproj b/build/win32/vs14/glib-compile-resources.vcxproj new file mode 100644 index 0000000..de88c5c --- /dev/null +++ b/build/win32/vs14/glib-compile-resources.vcxproj @@ -0,0 +1,181 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A} + glibcompileresources + Win32Proj + + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + _DEBUG;$(GioInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + _DEBUG;$(GioInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + $(GioInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;..\..\..\gio;%(AdditionalIncludeDirectories) + $(GioInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + + + + diff --git a/build/win32/vs14/glib-compile-resources.vcxproj.filters b/build/win32/vs14/glib-compile-resources.vcxproj.filters new file mode 100644 index 0000000..4b5a823 --- /dev/null +++ b/build/win32/vs14/glib-compile-resources.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + Source Files + Source Files + + diff --git a/build/win32/vs14/glib-compile-schemas.vcxproj b/build/win32/vs14/glib-compile-schemas.vcxproj new file mode 100644 index 0000000..2725a77 --- /dev/null +++ b/build/win32/vs14/glib-compile-schemas.vcxproj @@ -0,0 +1,181 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {015D69D0-8B42-438A-ADAE-052AC036E065} + glibcompileschemas + Win32Proj + + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + + + + diff --git a/build/win32/vs14/glib-compile-schemas.vcxproj.filters b/build/win32/vs14/glib-compile-schemas.vcxproj.filters new file mode 100644 index 0000000..1bd75e2 --- /dev/null +++ b/build/win32/vs14/glib-compile-schemas.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + Source Files + Source Files + + diff --git a/build/win32/vs14/glib-gen-srcs.props b/build/win32/vs14/glib-gen-srcs.props new file mode 100644 index 0000000..64a20ea --- /dev/null +++ b/build/win32/vs14/glib-gen-srcs.props @@ -0,0 +1,33 @@ + + + + + + + copy ..\..\..\config.h.win32 ..\..\..\config.h + copy ..\..\..\glib\glibconfig.h.win32 ..\..\..\glib\glibconfig.h + copy ..\..\..\gmodule\gmoduleconf.h.win32 ..\..\..\gmodule\gmoduleconf.h + copy ..\..\..\gio\gnetworking.h.win32 ..\..\..\gio\gnetworking.h + if exist $(PythonPath)\python.exe $(PythonPath)\python.exe ..\replace.py --action=replace-var --input=..\..\..\gobject\glib-mkenums.in --output=..\..\..\gobject\glib-mkenums --var=GLIB_VERSION --outstring=$(GlibVersion) + + + <_PropertySheetDisplayName>glibgensrcsprops + + + + $(GenConfigH) + + + $(GenGLibConfigH) + + + $(GenGModuleConfH) + + + $(GenGNetworkingH) + + + $(GenGLibMKEnums) + + + diff --git a/build/win32/vs14/glib-genmarshal.vcxproj b/build/win32/vs14/glib-genmarshal.vcxproj new file mode 100644 index 0000000..7dfa883 --- /dev/null +++ b/build/win32/vs14/glib-genmarshal.vcxproj @@ -0,0 +1,173 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {BD12E835-5C52-4E5D-8234-1C579F33E27A} + glibgenmarshal + Win32Proj + + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + true + Console + false + + + MachineX86 + + + + + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs14/glib-genmarshal.vcxproj.filters b/build/win32/vs14/glib-genmarshal.vcxproj.filters new file mode 100644 index 0000000..12b29af --- /dev/null +++ b/build/win32/vs14/glib-genmarshal.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs14/glib-install.props b/build/win32/vs14/glib-install.props new file mode 100644 index 0000000..a3d720a --- /dev/null +++ b/build/win32/vs14/glib-install.props @@ -0,0 +1,353 @@ + + + + + + + $(SolutionDir)$(Configuration)\$(Platform)\bin + $(BinDir)\$(GlibDllPrefix)glib(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gthread(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gmodule(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gobject(GlibDllSuffix).dll;$(BinDir)\$(GlibDllPrefix)gio(GlibDllSuffix).dll + $(BinDir)\glib-genmarshal.exe;$(BinDir)\glib-compile-schemas.exe;$(BinDir)\gsettings.exe;$(BinDir)\glib-compile-resources.exe;$(BinDir)\gresource.exe;$(BinDir)\gio-querymodules.exe;$(BinDir)\gdbus.exe + $(BinDir)\gspawn-win32-helper.exe;$(BinDir)\gspawn-win32-helper-console.exe + $(BinDir)\gspawn-win64-helper.exe;$(BinDir)\gspawn-win64-helper-console.exe + +mkdir $(CopyDir) +mkdir $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)glib$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)glib$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gthread$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gthread$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gmodule$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gmodule$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gobject$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gobject$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gio$(GlibDllSuffix).dll $(CopyDir)\bin +copy $(BinDir)\$(GlibDllPrefix)gio$(GlibDllSuffix).pdb $(CopyDir)\bin +copy $(BinDir)\glib-genmarshal.exe $(CopyDir)\bin +copy $(BinDir)\glib-genmarshal.pdb $(CopyDir)\bin +copy $(BinDir)\gspawn-win*-helper*.exe $(CopyDir)\bin +copy $(BinDir)\gspawn-win*-helper*.pdb $(CopyDir)\bin +copy $(BinDir)\glib-compile-schemas.exe $(CopyDir)\bin +copy $(BinDir)\glib-compile-schemas.pdb $(CopyDir)\bin +copy $(BinDir)\gsettings.exe $(CopyDir)\bin +copy $(BinDir)\gsettings.pdb $(CopyDir)\bin +copy $(BinDir)\glib-compile-resources.exe $(CopyDir)\bin +copy $(BinDir)\glib-compile-resources.pdb $(CopyDir)\bin +copy $(BinDir)\gresource.exe $(CopyDir)\bin +copy $(BinDir)\gresource.pdb $(CopyDir)\bin +copy $(BinDir)\gio-querymodules.exe $(CopyDir)\bin +copy $(BinDir)\gio-querymodules.pdb $(CopyDir)\bin +copy $(BinDir)\gdbus.exe $(CopyDir)\bin +copy $(BinDir)\gdbus.pdb $(CopyDir)\bin +copy ..\..\..\gio\gdbus-2.0\codegen\gdbus-codegen.in $(CopyDir)\bin\gdbus-codegen +if exist ..\..\..\gobject\glib-mkenums copy ..\..\..\gobject\glib-mkenums $(CopyDir)\bin +mkdir $(CopyDir)\include\glib-$(ApiVersion)\glib\deprecated +copy ..\..\..\msvc_recommended_pragmas.h $(CopyDir)\include\glib-$(ApiVersion) +copy ..\..\..\glib\glib.h $(CopyDir)\include\glib-$(ApiVersion) +copy ..\..\..\glib\glib-object.h $(CopyDir)\include\glib-$(ApiVersion) +copy ..\..\..\glib\deprecated\gallocator.h $(CopyDir)\include\glib-2.0\glib\deprecated\gallocator.h +copy ..\..\..\glib\deprecated\gcache.h $(CopyDir)\include\glib-2.0\glib\deprecated\gcache.h +copy ..\..\..\glib\deprecated\gcompletion.h $(CopyDir)\include\glib-2.0\glib\deprecated\gcompletion.h +copy ..\..\..\glib\deprecated\gmain.h $(CopyDir)\include\glib-2.0\glib\deprecated\gmain.h +copy ..\..\..\glib\deprecated\grel.h $(CopyDir)\include\glib-2.0\glib\deprecated\grel.h +copy ..\..\..\glib\deprecated\gthread.h $(CopyDir)\include\glib-2.0\glib\deprecated\gthread.h +copy ..\..\..\glib\glib-autocleanups.h $(CopyDir)\include\glib-2.0\glib\glib-autocleanups.h +copy ..\..\..\glib\galloca.h $(CopyDir)\include\glib-2.0\glib\galloca.h +copy ..\..\..\glib\garray.h $(CopyDir)\include\glib-2.0\glib\garray.h +copy ..\..\..\glib\gasyncqueue.h $(CopyDir)\include\glib-2.0\glib\gasyncqueue.h +copy ..\..\..\glib\gatomic.h $(CopyDir)\include\glib-2.0\glib\gatomic.h +copy ..\..\..\glib\gbacktrace.h $(CopyDir)\include\glib-2.0\glib\gbacktrace.h +copy ..\..\..\glib\gbase64.h $(CopyDir)\include\glib-2.0\glib\gbase64.h +copy ..\..\..\glib\gbitlock.h $(CopyDir)\include\glib-2.0\glib\gbitlock.h +copy ..\..\..\glib\gbookmarkfile.h $(CopyDir)\include\glib-2.0\glib\gbookmarkfile.h +copy ..\..\..\glib\gbytes.h $(CopyDir)\include\glib-2.0\glib\gbytes.h +copy ..\..\..\glib\gcharset.h $(CopyDir)\include\glib-2.0\glib\gcharset.h +copy ..\..\..\glib\gchecksum.h $(CopyDir)\include\glib-2.0\glib\gchecksum.h +copy ..\..\..\glib\gconvert.h $(CopyDir)\include\glib-2.0\glib\gconvert.h +copy ..\..\..\glib\gdataset.h $(CopyDir)\include\glib-2.0\glib\gdataset.h +copy ..\..\..\glib\gdate.h $(CopyDir)\include\glib-2.0\glib\gdate.h +copy ..\..\..\glib\gdatetime.h $(CopyDir)\include\glib-2.0\glib\gdatetime.h +copy ..\..\..\glib\gdir.h $(CopyDir)\include\glib-2.0\glib\gdir.h +copy ..\..\..\glib\genviron.h $(CopyDir)\include\glib-2.0\glib\genviron.h +copy ..\..\..\glib\gerror.h $(CopyDir)\include\glib-2.0\glib\gerror.h +copy ..\..\..\glib\gfileutils.h $(CopyDir)\include\glib-2.0\glib\gfileutils.h +copy ..\..\..\glib\ggettext.h $(CopyDir)\include\glib-2.0\glib\ggettext.h +copy ..\..\..\glib\ghash.h $(CopyDir)\include\glib-2.0\glib\ghash.h +copy ..\..\..\glib\ghmac.h $(CopyDir)\include\glib-2.0\glib\ghmac.h +copy ..\..\..\glib\ghook.h $(CopyDir)\include\glib-2.0\glib\ghook.h +copy ..\..\..\glib\ghostutils.h $(CopyDir)\include\glib-2.0\glib\ghostutils.h +copy ..\..\..\glib\gi18n.h $(CopyDir)\include\glib-2.0\glib\gi18n.h +copy ..\..\..\glib\gi18n-lib.h $(CopyDir)\include\glib-2.0\glib\gi18n-lib.h +copy ..\..\..\glib\giochannel.h $(CopyDir)\include\glib-2.0\glib\giochannel.h +copy ..\..\..\glib\gkeyfile.h $(CopyDir)\include\glib-2.0\glib\gkeyfile.h +copy ..\..\..\glib\glist.h $(CopyDir)\include\glib-2.0\glib\glist.h +copy ..\..\..\glib\gmacros.h $(CopyDir)\include\glib-2.0\glib\gmacros.h +copy ..\..\..\glib\gmain.h $(CopyDir)\include\glib-2.0\glib\gmain.h +copy ..\..\..\glib\gmappedfile.h $(CopyDir)\include\glib-2.0\glib\gmappedfile.h +copy ..\..\..\glib\gmarkup.h $(CopyDir)\include\glib-2.0\glib\gmarkup.h +copy ..\..\..\glib\gmem.h $(CopyDir)\include\glib-2.0\glib\gmem.h +copy ..\..\..\glib\gmessages.h $(CopyDir)\include\glib-2.0\glib\gmessages.h +copy ..\..\..\glib\gnode.h $(CopyDir)\include\glib-2.0\glib\gnode.h +copy ..\..\..\glib\goption.h $(CopyDir)\include\glib-2.0\glib\goption.h +copy ..\..\..\glib\gpattern.h $(CopyDir)\include\glib-2.0\glib\gpattern.h +copy ..\..\..\glib\gpoll.h $(CopyDir)\include\glib-2.0\glib\gpoll.h +copy ..\..\..\glib\gprimes.h $(CopyDir)\include\glib-2.0\glib\gprimes.h +copy ..\..\..\glib\gqsort.h $(CopyDir)\include\glib-2.0\glib\gqsort.h +copy ..\..\..\glib\gquark.h $(CopyDir)\include\glib-2.0\glib\gquark.h +copy ..\..\..\glib\gqueue.h $(CopyDir)\include\glib-2.0\glib\gqueue.h +copy ..\..\..\glib\grand.h $(CopyDir)\include\glib-2.0\glib\grand.h +copy ..\..\..\glib\gregex.h $(CopyDir)\include\glib-2.0\glib\gregex.h +copy ..\..\..\glib\gscanner.h $(CopyDir)\include\glib-2.0\glib\gscanner.h +copy ..\..\..\glib\gsequence.h $(CopyDir)\include\glib-2.0\glib\gsequence.h +copy ..\..\..\glib\gshell.h $(CopyDir)\include\glib-2.0\glib\gshell.h +copy ..\..\..\glib\gslice.h $(CopyDir)\include\glib-2.0\glib\gslice.h +copy ..\..\..\glib\gslist.h $(CopyDir)\include\glib-2.0\glib\gslist.h +copy ..\..\..\glib\gspawn.h $(CopyDir)\include\glib-2.0\glib\gspawn.h +copy ..\..\..\glib\gstdio.h $(CopyDir)\include\glib-2.0\glib\gstdio.h +copy ..\..\..\glib\gstrfuncs.h $(CopyDir)\include\glib-2.0\glib\gstrfuncs.h +copy ..\..\..\glib\gtestutils.h $(CopyDir)\include\glib-2.0\glib\gtestutils.h +copy ..\..\..\glib\gstring.h $(CopyDir)\include\glib-2.0\glib\gstring.h +copy ..\..\..\glib\gstringchunk.h $(CopyDir)\include\glib-2.0\glib\gstringchunk.h +copy ..\..\..\glib\gthread.h $(CopyDir)\include\glib-2.0\glib\gthread.h +copy ..\..\..\glib\gthreadpool.h $(CopyDir)\include\glib-2.0\glib\gthreadpool.h +copy ..\..\..\glib\gtimer.h $(CopyDir)\include\glib-2.0\glib\gtimer.h +copy ..\..\..\glib\gtimezone.h $(CopyDir)\include\glib-2.0\glib\gtimezone.h +copy ..\..\..\glib\gtrashstack.h $(CopyDir)\include\glib-2.0\glib\gtrashstack.h +copy ..\..\..\glib\gtree.h $(CopyDir)\include\glib-2.0\glib\gtree.h +copy ..\..\..\glib\gtypes.h $(CopyDir)\include\glib-2.0\glib\gtypes.h +copy ..\..\..\glib\gunicode.h $(CopyDir)\include\glib-2.0\glib\gunicode.h +copy ..\..\..\glib\gurifuncs.h $(CopyDir)\include\glib-2.0\glib\gurifuncs.h +copy ..\..\..\glib\gutils.h $(CopyDir)\include\glib-2.0\glib\gutils.h +copy ..\..\..\glib\gvarianttype.h $(CopyDir)\include\glib-2.0\glib\gvarianttype.h +copy ..\..\..\glib\gvariant.h $(CopyDir)\include\glib-2.0\glib\gvariant.h +copy ..\..\..\glib\gversion.h $(CopyDir)\include\glib-2.0\glib\gversion.h +copy ..\..\..\glib\gversionmacros.h $(CopyDir)\include\glib-2.0\glib\gversionmacros.h +copy ..\..\..\glib\gwin32.h $(CopyDir)\include\glib-2.0\glib\gwin32.h +copy ..\..\..\glib\gprintf.h $(CopyDir)\include\glib-2.0\glib\gprintf.h +copy ..\..\..\gmodule\gmodule.h $(CopyDir)\include\glib-$(ApiVersion) +mkdir $(CopyDir)\include\glib-$(ApiVersion)\gobject +copy ..\..\..\gobject\gobject-autocleanups.h $(CopyDir)\include\glib-2.0\gobject\gobject-autocleanups.h +copy ..\..\..\gobject\glib-types.h $(CopyDir)\include\glib-2.0\gobject\glib-types.h +copy ..\..\..\gobject\gbinding.h $(CopyDir)\include\glib-2.0\gobject\gbinding.h +copy ..\..\..\gobject\gboxed.h $(CopyDir)\include\glib-2.0\gobject\gboxed.h +copy ..\..\..\gobject\gclosure.h $(CopyDir)\include\glib-2.0\gobject\gclosure.h +copy ..\..\..\gobject\genums.h $(CopyDir)\include\glib-2.0\gobject\genums.h +copy ..\..\..\gobject\gmarshal.h $(CopyDir)\include\glib-2.0\gobject\gmarshal.h +copy ..\..\..\gobject\gobject.h $(CopyDir)\include\glib-2.0\gobject\gobject.h +copy ..\..\..\gobject\gparam.h $(CopyDir)\include\glib-2.0\gobject\gparam.h +copy ..\..\..\gobject\gparamspecs.h $(CopyDir)\include\glib-2.0\gobject\gparamspecs.h +copy ..\..\..\gobject\gsignal.h $(CopyDir)\include\glib-2.0\gobject\gsignal.h +copy ..\..\..\gobject\gsourceclosure.h $(CopyDir)\include\glib-2.0\gobject\gsourceclosure.h +copy ..\..\..\gobject\gtype.h $(CopyDir)\include\glib-2.0\gobject\gtype.h +copy ..\..\..\gobject\gtypemodule.h $(CopyDir)\include\glib-2.0\gobject\gtypemodule.h +copy ..\..\..\gobject\gtypeplugin.h $(CopyDir)\include\glib-2.0\gobject\gtypeplugin.h +copy ..\..\..\gobject\gvalue.h $(CopyDir)\include\glib-2.0\gobject\gvalue.h +copy ..\..\..\gobject\gvaluearray.h $(CopyDir)\include\glib-2.0\gobject\gvaluearray.h +copy ..\..\..\gobject\gvaluecollector.h $(CopyDir)\include\glib-2.0\gobject\gvaluecollector.h +copy ..\..\..\gobject\gvaluetypes.h $(CopyDir)\include\glib-2.0\gobject\gvaluetypes.h +copy ..\..\..\gobject\gobjectnotifyqueue.c $(CopyDir)\include\glib-$(ApiVersion)\gobject +mkdir $(CopyDir)\include\glib-$(ApiVersion)\gio +copy ..\..\..\gio\gappinfo.h $(CopyDir)\include\glib-2.0\gio\gappinfo.h +copy ..\..\..\gio\gasyncinitable.h $(CopyDir)\include\glib-2.0\gio\gasyncinitable.h +copy ..\..\..\gio\gasyncresult.h $(CopyDir)\include\glib-2.0\gio\gasyncresult.h +copy ..\..\..\gio\gbufferedinputstream.h $(CopyDir)\include\glib-2.0\gio\gbufferedinputstream.h +copy ..\..\..\gio\gbufferedoutputstream.h $(CopyDir)\include\glib-2.0\gio\gbufferedoutputstream.h +copy ..\..\..\gio\gbytesicon.h $(CopyDir)\include\glib-2.0\gio\gbytesicon.h +copy ..\..\..\gio\gcancellable.h $(CopyDir)\include\glib-2.0\gio\gcancellable.h +copy ..\..\..\gio\gcontenttype.h $(CopyDir)\include\glib-2.0\gio\gcontenttype.h +copy ..\..\..\gio\gcharsetconverter.h $(CopyDir)\include\glib-2.0\gio\gcharsetconverter.h +copy ..\..\..\gio\gconverter.h $(CopyDir)\include\glib-2.0\gio\gconverter.h +copy ..\..\..\gio\gconverterinputstream.h $(CopyDir)\include\glib-2.0\gio\gconverterinputstream.h +copy ..\..\..\gio\gconverteroutputstream.h $(CopyDir)\include\glib-2.0\gio\gconverteroutputstream.h +copy ..\..\..\gio\gdatagrambased.h $(CopyDir)\include\glib-2.0\gio\gdatagrambased.h +copy ..\..\..\gio\gdatainputstream.h $(CopyDir)\include\glib-2.0\gio\gdatainputstream.h +copy ..\..\..\gio\gdataoutputstream.h $(CopyDir)\include\glib-2.0\gio\gdataoutputstream.h +copy ..\..\..\gio\gdrive.h $(CopyDir)\include\glib-2.0\gio\gdrive.h +copy ..\..\..\gio\gemblem.h $(CopyDir)\include\glib-2.0\gio\gemblem.h +copy ..\..\..\gio\gemblemedicon.h $(CopyDir)\include\glib-2.0\gio\gemblemedicon.h +copy ..\..\..\gio\gfile.h $(CopyDir)\include\glib-2.0\gio\gfile.h +copy ..\..\..\gio\gfileattribute.h $(CopyDir)\include\glib-2.0\gio\gfileattribute.h +copy ..\..\..\gio\gfileenumerator.h $(CopyDir)\include\glib-2.0\gio\gfileenumerator.h +copy ..\..\..\gio\gfileicon.h $(CopyDir)\include\glib-2.0\gio\gfileicon.h +copy ..\..\..\gio\gfileinfo.h $(CopyDir)\include\glib-2.0\gio\gfileinfo.h +copy ..\..\..\gio\gfileinputstream.h $(CopyDir)\include\glib-2.0\gio\gfileinputstream.h +copy ..\..\..\gio\gfilemonitor.h $(CopyDir)\include\glib-2.0\gio\gfilemonitor.h +copy ..\..\..\gio\gfilenamecompleter.h $(CopyDir)\include\glib-2.0\gio\gfilenamecompleter.h +copy ..\..\..\gio\gfileoutputstream.h $(CopyDir)\include\glib-2.0\gio\gfileoutputstream.h +copy ..\..\..\gio\gfileiostream.h $(CopyDir)\include\glib-2.0\gio\gfileiostream.h +copy ..\..\..\gio\gfilterinputstream.h $(CopyDir)\include\glib-2.0\gio\gfilterinputstream.h +copy ..\..\..\gio\gfilteroutputstream.h $(CopyDir)\include\glib-2.0\gio\gfilteroutputstream.h +copy ..\..\..\gio\gicon.h $(CopyDir)\include\glib-2.0\gio\gicon.h +copy ..\..\..\gio\ginetaddress.h $(CopyDir)\include\glib-2.0\gio\ginetaddress.h +copy ..\..\..\gio\ginetaddressmask.h $(CopyDir)\include\glib-2.0\gio\ginetaddressmask.h +copy ..\..\..\gio\ginetsocketaddress.h $(CopyDir)\include\glib-2.0\gio\ginetsocketaddress.h +copy ..\..\..\gio\ginputstream.h $(CopyDir)\include\glib-2.0\gio\ginputstream.h +copy ..\..\..\gio\ginitable.h $(CopyDir)\include\glib-2.0\gio\ginitable.h +copy ..\..\..\gio\gio.h $(CopyDir)\include\glib-2.0\gio\gio.h +copy ..\..\..\gio\gio-autocleanups.h $(CopyDir)\include\glib-2.0\gio\gio-autocleanups.h +copy ..\..\..\gio\giotypes.h $(CopyDir)\include\glib-2.0\gio\giotypes.h +copy ..\..\..\gio\gioenums.h $(CopyDir)\include\glib-2.0\gio\gioenums.h +copy ..\..\..\gio\gioerror.h $(CopyDir)\include\glib-2.0\gio\gioerror.h +copy ..\..\..\gio\giomodule.h $(CopyDir)\include\glib-2.0\gio\giomodule.h +copy ..\..\..\gio\gioscheduler.h $(CopyDir)\include\glib-2.0\gio\gioscheduler.h +copy ..\..\..\gio\giostream.h $(CopyDir)\include\glib-2.0\gio\giostream.h +copy ..\..\..\gio\gloadableicon.h $(CopyDir)\include\glib-2.0\gio\gloadableicon.h +copy ..\..\..\gio\gmount.h $(CopyDir)\include\glib-2.0\gio\gmount.h +copy ..\..\..\gio\gmemoryinputstream.h $(CopyDir)\include\glib-2.0\gio\gmemoryinputstream.h +copy ..\..\..\gio\gmemoryoutputstream.h $(CopyDir)\include\glib-2.0\gio\gmemoryoutputstream.h +copy ..\..\..\gio\gmountoperation.h $(CopyDir)\include\glib-2.0\gio\gmountoperation.h +copy ..\..\..\gio\gnativevolumemonitor.h $(CopyDir)\include\glib-2.0\gio\gnativevolumemonitor.h +copy ..\..\..\gio\gnetworkaddress.h $(CopyDir)\include\glib-2.0\gio\gnetworkaddress.h +copy ..\..\..\gio\gnetworkmonitor.h $(CopyDir)\include\glib-2.0\gio\gnetworkmonitor.h +copy ..\..\..\gio\gnetworkservice.h $(CopyDir)\include\glib-2.0\gio\gnetworkservice.h +copy ..\..\..\gio\goutputstream.h $(CopyDir)\include\glib-2.0\gio\goutputstream.h +copy ..\..\..\gio\gpermission.h $(CopyDir)\include\glib-2.0\gio\gpermission.h +copy ..\..\..\gio\gpollableinputstream.h $(CopyDir)\include\glib-2.0\gio\gpollableinputstream.h +copy ..\..\..\gio\gpollableoutputstream.h $(CopyDir)\include\glib-2.0\gio\gpollableoutputstream.h +copy ..\..\..\gio\gpollableutils.h $(CopyDir)\include\glib-2.0\gio\gpollableutils.h +copy ..\..\..\gio\gproxyaddress.h $(CopyDir)\include\glib-2.0\gio\gproxyaddress.h +copy ..\..\..\gio\gproxy.h $(CopyDir)\include\glib-2.0\gio\gproxy.h +copy ..\..\..\gio\gproxyaddressenumerator.h $(CopyDir)\include\glib-2.0\gio\gproxyaddressenumerator.h +copy ..\..\..\gio\gproxyresolver.h $(CopyDir)\include\glib-2.0\gio\gproxyresolver.h +copy ..\..\..\gio\gresolver.h $(CopyDir)\include\glib-2.0\gio\gresolver.h +copy ..\..\..\gio\gresource.h $(CopyDir)\include\glib-2.0\gio\gresource.h +copy ..\..\..\gio\gseekable.h $(CopyDir)\include\glib-2.0\gio\gseekable.h +copy ..\..\..\gio\gsimpleasyncresult.h $(CopyDir)\include\glib-2.0\gio\gsimpleasyncresult.h +copy ..\..\..\gio\gsimpleiostream.h $(CopyDir)\include\glib-2.0\gio\gsimpleiostream.h +copy ..\..\..\gio\gsimplepermission.h $(CopyDir)\include\glib-2.0\gio\gsimplepermission.h +copy ..\..\..\gio\gsocket.h $(CopyDir)\include\glib-2.0\gio\gsocket.h +copy ..\..\..\gio\gsocketaddress.h $(CopyDir)\include\glib-2.0\gio\gsocketaddress.h +copy ..\..\..\gio\gsocketaddressenumerator.h $(CopyDir)\include\glib-2.0\gio\gsocketaddressenumerator.h +copy ..\..\..\gio\gsocketclient.h $(CopyDir)\include\glib-2.0\gio\gsocketclient.h +copy ..\..\..\gio\gsocketconnectable.h $(CopyDir)\include\glib-2.0\gio\gsocketconnectable.h +copy ..\..\..\gio\gsocketconnection.h $(CopyDir)\include\glib-2.0\gio\gsocketconnection.h +copy ..\..\..\gio\gsocketcontrolmessage.h $(CopyDir)\include\glib-2.0\gio\gsocketcontrolmessage.h +copy ..\..\..\gio\gsocketlistener.h $(CopyDir)\include\glib-2.0\gio\gsocketlistener.h +copy ..\..\..\gio\gsocketservice.h $(CopyDir)\include\glib-2.0\gio\gsocketservice.h +copy ..\..\..\gio\gsrvtarget.h $(CopyDir)\include\glib-2.0\gio\gsrvtarget.h +copy ..\..\..\gio\gsimpleproxyresolver.h $(CopyDir)\include\glib-2.0\gio\gsimpleproxyresolver.h +copy ..\..\..\gio\gtask.h $(CopyDir)\include\glib-2.0\gio\gtask.h +copy ..\..\..\gio\gsubprocess.h $(CopyDir)\include\glib-2.0\gio\gsubprocess.h +copy ..\..\..\gio\gsubprocesslauncher.h $(CopyDir)\include\glib-2.0\gio\gsubprocesslauncher.h +copy ..\..\..\gio\gtcpconnection.h $(CopyDir)\include\glib-2.0\gio\gtcpconnection.h +copy ..\..\..\gio\gtcpwrapperconnection.h $(CopyDir)\include\glib-2.0\gio\gtcpwrapperconnection.h +copy ..\..\..\gio\gthreadedsocketservice.h $(CopyDir)\include\glib-2.0\gio\gthreadedsocketservice.h +copy ..\..\..\gio\gthemedicon.h $(CopyDir)\include\glib-2.0\gio\gthemedicon.h +copy ..\..\..\gio\gtlsbackend.h $(CopyDir)\include\glib-2.0\gio\gtlsbackend.h +copy ..\..\..\gio\gtlscertificate.h $(CopyDir)\include\glib-2.0\gio\gtlscertificate.h +copy ..\..\..\gio\gtlsclientconnection.h $(CopyDir)\include\glib-2.0\gio\gtlsclientconnection.h +copy ..\..\..\gio\gtlsconnection.h $(CopyDir)\include\glib-2.0\gio\gtlsconnection.h +copy ..\..\..\gio\gtlsdatabase.h $(CopyDir)\include\glib-2.0\gio\gtlsdatabase.h +copy ..\..\..\gio\gtlsfiledatabase.h $(CopyDir)\include\glib-2.0\gio\gtlsfiledatabase.h +copy ..\..\..\gio\gtlsinteraction.h $(CopyDir)\include\glib-2.0\gio\gtlsinteraction.h +copy ..\..\..\gio\gtlspassword.h $(CopyDir)\include\glib-2.0\gio\gtlspassword.h +copy ..\..\..\gio\gtlsserverconnection.h $(CopyDir)\include\glib-2.0\gio\gtlsserverconnection.h +copy ..\..\..\gio\gdtlsconnection.h $(CopyDir)\include\glib-2.0\gio\gdtlsconnection.h +copy ..\..\..\gio\gdtlsclientconnection.h $(CopyDir)\include\glib-2.0\gio\gdtlsclientconnection.h +copy ..\..\..\gio\gdtlsserverconnection.h $(CopyDir)\include\glib-2.0\gio\gdtlsserverconnection.h +copy ..\..\..\gio\gvfs.h $(CopyDir)\include\glib-2.0\gio\gvfs.h +copy ..\..\..\gio\gvolume.h $(CopyDir)\include\glib-2.0\gio\gvolume.h +copy ..\..\..\gio\gvolumemonitor.h $(CopyDir)\include\glib-2.0\gio\gvolumemonitor.h +copy ..\..\..\gio\gzlibcompressor.h $(CopyDir)\include\glib-2.0\gio\gzlibcompressor.h +copy ..\..\..\gio\gzlibdecompressor.h $(CopyDir)\include\glib-2.0\gio\gzlibdecompressor.h +copy ..\..\..\gio\glistmodel.h $(CopyDir)\include\glib-2.0\gio\glistmodel.h +copy ..\..\..\gio\gliststore.h $(CopyDir)\include\glib-2.0\gio\gliststore.h +copy ..\..\..\gio\gapplication.h $(CopyDir)\include\glib-2.0\gio\gapplication.h +copy ..\..\..\gio\gapplicationcommandline.h $(CopyDir)\include\glib-2.0\gio\gapplicationcommandline.h +copy ..\..\..\gio\gactiongroup.h $(CopyDir)\include\glib-2.0\gio\gactiongroup.h +copy ..\..\..\gio\gactionmap.h $(CopyDir)\include\glib-2.0\gio\gactionmap.h +copy ..\..\..\gio\gsimpleactiongroup.h $(CopyDir)\include\glib-2.0\gio\gsimpleactiongroup.h +copy ..\..\..\gio\gremoteactiongroup.h $(CopyDir)\include\glib-2.0\gio\gremoteactiongroup.h +copy ..\..\..\gio\gactiongroupexporter.h $(CopyDir)\include\glib-2.0\gio\gactiongroupexporter.h +copy ..\..\..\gio\gdbusactiongroup.h $(CopyDir)\include\glib-2.0\gio\gdbusactiongroup.h +copy ..\..\..\gio\gaction.h $(CopyDir)\include\glib-2.0\gio\gaction.h +copy ..\..\..\gio\gpropertyaction.h $(CopyDir)\include\glib-2.0\gio\gpropertyaction.h +copy ..\..\..\gio\gsimpleaction.h $(CopyDir)\include\glib-2.0\gio\gsimpleaction.h +copy ..\..\..\gio\gmenumodel.h $(CopyDir)\include\glib-2.0\gio\gmenumodel.h +copy ..\..\..\gio\gmenu.h $(CopyDir)\include\glib-2.0\gio\gmenu.h +copy ..\..\..\gio\gmenuexporter.h $(CopyDir)\include\glib-2.0\gio\gmenuexporter.h +copy ..\..\..\gio\gdbusmenumodel.h $(CopyDir)\include\glib-2.0\gio\gdbusmenumodel.h +copy ..\..\..\gio\gnotification.h $(CopyDir)\include\glib-2.0\gio\gnotification.h +copy ..\..\..\gio\gsettingsbackend.h $(CopyDir)\include\glib-2.0\gio\gsettingsbackend.h +copy ..\..\..\gio\gsettingsschema.h $(CopyDir)\include\glib-2.0\gio\gsettingsschema.h +copy ..\..\..\gio\gsettings.h $(CopyDir)\include\glib-2.0\gio\gsettings.h +copy ..\..\..\gio\gdbusauthobserver.h $(CopyDir)\include\glib-2.0\gio\gdbusauthobserver.h +copy ..\..\..\gio\gcredentials.h $(CopyDir)\include\glib-2.0\gio\gcredentials.h +copy ..\..\..\gio\gdbusutils.h $(CopyDir)\include\glib-2.0\gio\gdbusutils.h +copy ..\..\..\gio\gdbuserror.h $(CopyDir)\include\glib-2.0\gio\gdbuserror.h +copy ..\..\..\gio\gdbusaddress.h $(CopyDir)\include\glib-2.0\gio\gdbusaddress.h +copy ..\..\..\gio\gdbusconnection.h $(CopyDir)\include\glib-2.0\gio\gdbusconnection.h +copy ..\..\..\gio\gdbusmessage.h $(CopyDir)\include\glib-2.0\gio\gdbusmessage.h +copy ..\..\..\gio\gdbusnameowning.h $(CopyDir)\include\glib-2.0\gio\gdbusnameowning.h +copy ..\..\..\gio\gdbusnamewatching.h $(CopyDir)\include\glib-2.0\gio\gdbusnamewatching.h +copy ..\..\..\gio\gdbusproxy.h $(CopyDir)\include\glib-2.0\gio\gdbusproxy.h +copy ..\..\..\gio\gdbusintrospection.h $(CopyDir)\include\glib-2.0\gio\gdbusintrospection.h +copy ..\..\..\gio\gdbusmethodinvocation.h $(CopyDir)\include\glib-2.0\gio\gdbusmethodinvocation.h +copy ..\..\..\gio\gdbusserver.h $(CopyDir)\include\glib-2.0\gio\gdbusserver.h +copy ..\..\..\gio\gdbusinterface.h $(CopyDir)\include\glib-2.0\gio\gdbusinterface.h +copy ..\..\..\gio\gdbusinterfaceskeleton.h $(CopyDir)\include\glib-2.0\gio\gdbusinterfaceskeleton.h +copy ..\..\..\gio\gdbusobject.h $(CopyDir)\include\glib-2.0\gio\gdbusobject.h +copy ..\..\..\gio\gdbusobjectskeleton.h $(CopyDir)\include\glib-2.0\gio\gdbusobjectskeleton.h +copy ..\..\..\gio\gdbusobjectproxy.h $(CopyDir)\include\glib-2.0\gio\gdbusobjectproxy.h +copy ..\..\..\gio\gdbusobjectmanager.h $(CopyDir)\include\glib-2.0\gio\gdbusobjectmanager.h +copy ..\..\..\gio\gdbusobjectmanagerclient.h $(CopyDir)\include\glib-2.0\gio\gdbusobjectmanagerclient.h +copy ..\..\..\gio\gdbusobjectmanagerserver.h $(CopyDir)\include\glib-2.0\gio\gdbusobjectmanagerserver.h +copy ..\..\..\gio\gtestdbus.h $(CopyDir)\include\glib-2.0\gio\gtestdbus.h +copy ..\..\..\gio\gioenumtypes.h $(CopyDir)\include\glib-2.0\gio\gioenumtypes.h +copy ..\..\..\gio\gnetworking.h $(CopyDir)\include\glib-2.0\gio\gnetworking.h +mkdir $(CopyDir)\include\gio-win32-$(ApiVersion)\gio +copy ..\..\..\gio\gwin32inputstream.h $(CopyDir)\include\gio-win32-$(ApiVersion)\gio +copy ..\..\..\gio\gwin32outputstream.h $(CopyDir)\include\gio-win32-$(ApiVersion)\gio +mkdir $(CopyDir)\lib\glib-$(ApiVersion)\include +copy ..\..\..\glib\glibconfig.h $(CopyDir)\lib\glib-$(ApiVersion)\include +copy $(BinDir)\glib-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gthread-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gmodule-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gobject-$(ApiVersion).lib $(CopyDir)\lib +copy $(BinDir)\gio-$(ApiVersion).lib $(CopyDir)\lib +mkdir $(CopyDir)\lib\pkgconfig +copy ..\gio-windows-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gio-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gobject-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gmodule-no-export-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gmodule-export-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gmodule-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\gthread-2.0.pc $(CopyDir)\lib\pkgconfig +copy ..\glib-2.0.pc $(CopyDir)\lib\pkgconfig +mkdir $(CopyDir)\share\glib-$(ApiVersion)\schemas +copy ..\..\..\gio\gschema.dtd $(CopyDir)\share\glib-$(ApiVersion)\schemas +mkdir $(CopyDir)\share\glib-$(ApiVersion)\codegen +copy ..\..\..\gio\gdbus-2.0\codegen\*.py $(CopyDir)\share\glib-$(ApiVersion)\codegen + + ..\gio-windows-2.0.pc;..\gio-2.0.pc;..\gobject-2.0.pc;..\gmodule-no-export-2.0.pc;..\gmodule-export-2.0.pc;..\gmodule-2.0.pc;..\gthread-2.0.pc;..\glib-2.0.pc + if exist $(PythonPath)\python.exe $(PythonPath)\python.exe ..\glibpc.py --prefix=$(CopyDir) --version=$(GlibVersion) + + + <_PropertySheetDisplayName>glibinstallprops + + + + $(BinDir) + + + $(InstalledDlls) + + + $(InstalledBins) + + + $(InstalledWin32Bins) + + + $(InstalledX64Bins) + + + $(GlibDoInstall) + + + $(GlibPCFiles) + + + $(GlibGenPC) + + + diff --git a/build/win32/vs14/glib-install.vcxproj b/build/win32/vs14/glib-install.vcxproj new file mode 100644 index 0000000..3e7f382 --- /dev/null +++ b/build/win32/vs14/glib-install.vcxproj @@ -0,0 +1,182 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {2093D218-190E-4194-9421-3BA7CBF33B10} + glibinstall + Win32Proj + + + + Utility + MultiByte + true + v140 + + + Utility + MultiByte + v140 + + + Utility + MultiByte + true + v140 + + + Utility + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + $(GlibEtcInstallRoot)\ + + $(GlibEtcInstallRoot)\ + + $(GlibEtcInstallRoot)\ + + $(GlibEtcInstallRoot)\ + + + + + + + + + + + + + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + Generating .pc files... + $(GlibGenPC) + $(GlibPCFiles);%(Outputs) + + + Installing Build Results... + $(GlibPCFiles) + $(GlibDoInstall) + $(InstalledDlls);$(InstalledBins);$(InstalledWin32Bins);%(Outputs) + Installing Build Results... + $(GlibPCFiles) + $(GlibDoInstall) + $(InstalledDlls);$(InstalledBins);$(InstalledX64Bins);%(Outputs) + Installing Build Results... + $(GlibPCFiles) + $(GlibDoInstall) + $(InstalledDlls);$(InstalledBins);$(InstalledWin32Bins);%(Outputs) + Installing Build Results... + $(GlibPCFiles) + $(GlibDoInstall) + $(InstalledDlls);$(InstalledBins);$(InstalledX64Bins);%(Outputs) + + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {bd12e835-5c52-4e5d-8234-1c579f33e27a} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {4214047c-f5c1-40b3-8369-5dced8c32770} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + {e40e8a7e-7cae-4659-9b8b-bc38898e3074} + false + + + {289240e7-e167-47ce-a20c-58d852e520ba} + false + + + {c8afb8c3-fffd-460f-bc13-9ac25d7b117c} + false + + + {015d69d0-8b42-438a-adae-052ac036e065} + false + + + {05041c63-f1c5-49ba-a7de-61ebb5307eaa} + false + + + {b0cdec7f-dce1-4f7e-b8a4-a3009c18fb2a} + false + + + {95a1571f-61be-4c51-be53-2f2dab280685} + false + + + {95a1571f-61be-4c51-be53-2f2dab280686} + false + + + {95a1571f-61be-4c51-be53-2f2dab280687} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs14/glib-install.vcxproj.filters b/build/win32/vs14/glib-install.vcxproj.filters new file mode 100644 index 0000000..18ffe5f --- /dev/null +++ b/build/win32/vs14/glib-install.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Resource Files + Resource Files + + diff --git a/build/win32/vs14/glib-version-paths.props b/build/win32/vs14/glib-version-paths.props new file mode 100644 index 0000000..c695592 --- /dev/null +++ b/build/win32/vs14/glib-version-paths.props @@ -0,0 +1,58 @@ + + + + 14 + 2.48.0 + 2.0 + ..\..\..\..\vs$(VSVer)\$(Platform) + $(GlibEtcInstallRoot) + lib + -$(ApiVersion)-0 + + -2-vs$(VSVer) + $(GlibSeparateVSDllPrefix) + $(GlibSeparateVSDllSuffix) + c:\python27 + + + <_PropertySheetDisplayName>glibversionpathsprops + + + + $(VSVer) + + + $(GlibVersion) + + + $(ApiVersion) + + + $(GlibEtcInstallRoot) + + + $(CopyDir) + + + $(GlibLibtoolCompatibleDllPrefix) + + + $(GlibLibtoolCompatibleDllSuffix) + + + $(GlibSeparateVSDllPrefix) + + + $(GlibSeparateVSDllSuffix) + + + $(GlibDllPrefix) + + + $(GlibDllSuffix) + + + $(PythonPath) + + + diff --git a/build/win32/vs14/glib.sln b/build/win32/vs14/glib.sln new file mode 100644 index 0000000..1a13f53 --- /dev/null +++ b/build/win32/vs14/glib.sln @@ -0,0 +1,289 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib", "glib.vcxproj", "{12BCA020-EABF-429E-876A-A476BC9C10C0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmodule", "gmodule.vcxproj", "{4214047C-F5C1-40B3-8369-5DCED8C32770}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gobject", "gobject.vcxproj", "{F172EFFC-E30F-4593-809E-DB2024B1E753}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gthread", "gthread.vcxproj", "{C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-genmarshal", "glib-genmarshal.vcxproj", "{BD12E835-5C52-4E5D-8234-1C579F33E27A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gio", "gio.vcxproj", "{F3D1583C-5613-4809-BD98-7CC1C1276F92}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gspawn-win32-helper", "gspawn-win32-helper.vcxproj", "{289240E7-E167-47CE-A20C-58D852E520BA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gspawn-win32-helper-console", "gspawn-win32-helper-console.vcxproj", "{E40E8A7E-7CAE-4659-9B8B-BC38898E3074}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-compile-schemas", "glib-compile-schemas.vcxproj", "{015D69D0-8B42-438A-ADAE-052AC036E065}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gsettings", "gsettings.vcxproj", "{05041C63-F1C5-49BA-A7DE-61EBB5307EAA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-install", "glib-install.vcxproj", "{2093D218-190E-4194-9421-3BA7CBF33B10}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gresource", "gresource.vcxproj", "{95A1571F-61BE-4C51-BE53-2F2DAB280685}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-compile-resources", "glib-compile-resources.vcxproj", "{B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gio-querymodules", "gio-querymodules.vcxproj", "{95A1571F-61BE-4C51-BE53-2F2DAB280686}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gdbus", "gdbus.vcxproj", "{95A1571F-61BE-4C51-BE53-2F2DAB280687}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Debug_BundledPCRE|Win32 = Debug_BundledPCRE|Win32 + Debug_BundledPCRE|x64 = Debug_BundledPCRE|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + Release_BundledPCRE|Win32 = Release_BundledPCRE|Win32 + Release_BundledPCRE|x64 = Release_BundledPCRE|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|Win32.ActiveCfg = Debug|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|Win32.Build.0 = Debug|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|x64.ActiveCfg = Debug|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|x64.Build.0 = Debug|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|Win32.ActiveCfg = Debug_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|Win32.Build.0 = Debug_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|x64.ActiveCfg = Debug_BundledPCRE|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|x64.Build.0 = Debug_BundledPCRE|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|Win32.ActiveCfg = Release|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|Win32.Build.0 = Release|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|x64.ActiveCfg = Release|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|x64.Build.0 = Release|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|Win32.ActiveCfg = Release_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|Win32.Build.0 = Release_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|x64.ActiveCfg = Release_BundledPCRE|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|x64.Build.0 = Release_BundledPCRE|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|Win32.ActiveCfg = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|Win32.Build.0 = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|x64.ActiveCfg = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|x64.Build.0 = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|Win32.ActiveCfg = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|Win32.Build.0 = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|x64.ActiveCfg = Release|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|x64.Build.0 = Release|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|Win32.ActiveCfg = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|Win32.Build.0 = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|x64.ActiveCfg = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|x64.Build.0 = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|Win32.ActiveCfg = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|Win32.Build.0 = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|x64.ActiveCfg = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|x64.Build.0 = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|Win32.ActiveCfg = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|Win32.Build.0 = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|x64.ActiveCfg = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|x64.Build.0 = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|Win32.ActiveCfg = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|Win32.Build.0 = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|x64.ActiveCfg = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|x64.Build.0 = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|Win32.ActiveCfg = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|Win32.Build.0 = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|x64.ActiveCfg = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|x64.Build.0 = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|Win32.ActiveCfg = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|Win32.Build.0 = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|x64.ActiveCfg = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|x64.Build.0 = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|Win32.ActiveCfg = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|Win32.Build.0 = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|x64.ActiveCfg = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|x64.Build.0 = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|Win32.ActiveCfg = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|Win32.Build.0 = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|x64.ActiveCfg = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|x64.Build.0 = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|Win32.ActiveCfg = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|Win32.Build.0 = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|x64.ActiveCfg = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|x64.Build.0 = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release|Win32.ActiveCfg = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release|Win32.Build.0 = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release|x64.ActiveCfg = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release|x64.Build.0 = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|Win32.ActiveCfg = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|Win32.Build.0 = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|x64.ActiveCfg = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|x64.Build.0 = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|Win32.ActiveCfg = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|Win32.Build.0 = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|x64.ActiveCfg = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|x64.Build.0 = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|Win32.ActiveCfg = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|Win32.Build.0 = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|x64.ActiveCfg = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|x64.Build.0 = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|Win32.ActiveCfg = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|Win32.Build.0 = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|x64.ActiveCfg = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|x64.Build.0 = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|Win32.ActiveCfg = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|Win32.Build.0 = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|x64.ActiveCfg = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|x64.Build.0 = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|Win32.ActiveCfg = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|Win32.Build.0 = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|x64.ActiveCfg = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|x64.Build.0 = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.ActiveCfg = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.Build.0 = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|x64.ActiveCfg = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|x64.Build.0 = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|Win32.ActiveCfg = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|Win32.Build.0 = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|x64.ActiveCfg = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|x64.Build.0 = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|x64.Build.0 = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|Win32.ActiveCfg = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|Win32.Build.0 = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|x64.ActiveCfg = Debug|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|x64.Build.0 = Debug|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|Win32.ActiveCfg = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|Win32.Build.0 = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|x64.ActiveCfg = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|x64.Build.0 = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/build/win32/vs14/glib.vcxproj b/build/win32/vs14/glib.vcxproj new file mode 100644 index 0000000..3824a23 --- /dev/null +++ b/build/win32/vs14/glib.vcxproj @@ -0,0 +1,755 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Debug_BundledPCRE + Win32 + + + Debug_BundledPCRE + x64 + + + Release + Win32 + + + Release + x64 + + + Release_BundledPCRE + Win32 + + + Release_BundledPCRE + x64 + + + + {12BCA020-EABF-429E-876A-A476BC9C10C0} + glib + Win32Proj + + + + DynamicLibrary + MultiByte + true + v140 + + + DynamicLibrary + MultiByte + true + v140 + + + DynamicLibrary + MultiByte + v140 + + + DynamicLibrary + MultiByte + v140 + + + DynamicLibrary + MultiByte + true + v140 + + + DynamicLibrary + MultiByte + true + v140 + + + DynamicLibrary + MultiByte + v140 + + + DynamicLibrary + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + Debug\$(Platform)\bin\ + true + true + Debug\$(Platform)\bin\ + true + false + Release\$(Platform)\bin\ + false + false + Release\$(Platform)\bin\ + false + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;$(UseSystemPCREDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + ws2_32.lib;winmm.lib;pcred.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + Disabled + _DEBUG;$(GLibBuildDefines);G_ENABLE_DEBUG;$(UseSystemPCREDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;pcred.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + $(GLibBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + $(GLibBuildDefines);$(UseSystemPCREDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;pcre.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + $(GLibBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + $(GLibBuildDefines);$(UseSystemPCREDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + ws2_32.lib;winmm.lib;pcre.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + $(LocalCharsetDefs);%(PreprocessorDefinitions) + + + + + + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);$(GlibBundledPCREExportDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + $(GLibBundledPCREDefines);%(PreprocessorDefinitions) + $(GLibBundledPCREUndefs) %(AdditionalOptions) + true + + + + + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + Copying config.h from config.h.win32... + $(GenConfigH) + ..\..\..\config.h;%(Outputs) + + + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + Copying glibconfig.h from glibconfig.h.win32... + $(GenGLibConfigH) + ..\..\..\glib\glibconfig.h;%(Outputs) + + + + + + + + + diff --git a/build/win32/vs14/glib.vcxproj.filters b/build/win32/vs14/glib.vcxproj.filters new file mode 100644 index 0000000..f9140f0 --- /dev/null +++ b/build/win32/vs14/glib.vcxproj.filters @@ -0,0 +1,202 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {bb961775-fd45-4205-b1fd-901c3c8fd64c} + + + {f630c518-4c58-4dfa-ab43-5fa0b0eb10f1} + + + {9fef0e23-cf71-48aa-979b-7eb84df56143} + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files\libcharset + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\gnulib + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + Source Files\pcre + + + + Resource Files + Resource Files + + + + Resource Files + + + diff --git a/build/win32/vs14/gmodule.vcxproj b/build/win32/vs14/gmodule.vcxproj new file mode 100644 index 0000000..e7fdc02 --- /dev/null +++ b/build/win32/vs14/gmodule.vcxproj @@ -0,0 +1,204 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {4214047C-F5C1-40B3-8369-5DCED8C32770} + gmodule + Win32Proj + + + + DynamicLibrary + MultiByte + true + v140 + + + DynamicLibrary + MultiByte + v140 + + + DynamicLibrary + MultiByte + true + v140 + + + DynamicLibrary + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;$(GModuleBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + $(GModuleBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GModuleBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + $(GModuleBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + Copying gmoduleconf.h from gmoduleconf.h.win32... + $(GenGModuleConfH) + ..\..\..\gmodule\gmoduleconf.h;%(Outputs) + Copying gmoduleconf.h from gmoduleconf.h.win32... + $(GenGModuleConfH) + ..\..\..\gmodule\gmoduleconf.h;%(Outputs) + Copying gmoduleconf.h from gmoduleconf.h.win32... + $(GenGModuleConfH) + ..\..\..\gmodule\gmoduleconf.h;%(Outputs) + Copying gmoduleconf.h from gmoduleconf.h.win32... + $(GenGModuleConfH) + ..\..\..\gmodule\gmoduleconf.h;%(Outputs) + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs14/gmodule.vcxproj.filters b/build/win32/vs14/gmodule.vcxproj.filters new file mode 100644 index 0000000..968e8ac --- /dev/null +++ b/build/win32/vs14/gmodule.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + + Resource Files + + + + Resource Files + + + \ No newline at end of file diff --git a/build/win32/vs14/gobject.vcxproj b/build/win32/vs14/gobject.vcxproj new file mode 100644 index 0000000..d7a4c1e --- /dev/null +++ b/build/win32/vs14/gobject.vcxproj @@ -0,0 +1,225 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {F172EFFC-E30F-4593-809E-DB2024B1E753} + gobject + Win32Proj + + + + DynamicLibrary + MultiByte + true + v140 + + + DynamicLibrary + MultiByte + v140 + + + DynamicLibrary + MultiByte + true + v140 + + + DynamicLibrary + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;$(GObjectBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + $(GObjectBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GObjectBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + $(GObjectBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + + + libffi.lib;%(AdditionalDependencies) + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + + + + + + + + + + + + + + + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + Generating glib-mkenums... + $(GenGLibMKEnums) + ..\..\..\gobject\glib-mkenums;%(Outputs) + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {c8afb8c3-fffd-460f-bc13-9ac25d7b117c} + false + + + + + + diff --git a/build/win32/vs14/gobject.vcxproj.filters b/build/win32/vs14/gobject.vcxproj.filters new file mode 100644 index 0000000..96e6da5 --- /dev/null +++ b/build/win32/vs14/gobject.vcxproj.filters @@ -0,0 +1,45 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + Source Files + + + Resource Files + + + + Resource Files + + + diff --git a/build/win32/vs14/gresource.vcxproj b/build/win32/vs14/gresource.vcxproj new file mode 100644 index 0000000..f4a7a98 --- /dev/null +++ b/build/win32/vs14/gresource.vcxproj @@ -0,0 +1,180 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {95A1571F-61BE-4C51-BE53-2F2DAB280685} + gresource + Win32Proj + + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs14/gresource.vcxproj.filters b/build/win32/vs14/gresource.vcxproj.filters new file mode 100644 index 0000000..91dd6dc --- /dev/null +++ b/build/win32/vs14/gresource.vcxproj.filters @@ -0,0 +1,14 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs14/gsettings.vcxproj b/build/win32/vs14/gsettings.vcxproj new file mode 100644 index 0000000..03cdb37 --- /dev/null +++ b/build/win32/vs14/gsettings.vcxproj @@ -0,0 +1,181 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA} + gsettings + Win32Proj + + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Console + MachineX86 + + + + + Disabled + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + false + + + MachineX64 + + + + + MaxSpeed + true + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + %(AdditionalDependencies) + true + Console + true + true + MachineX86 + + + + + ..\..\..\gmodule;%(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX64 + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + {f172effc-e30f-4593-809e-db2024b1e753} + false + + + {f3d1583c-5613-4809-bd98-7cc1c1276f92} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs14/gsettings.vcxproj.filters b/build/win32/vs14/gsettings.vcxproj.filters new file mode 100644 index 0000000..0c81fc6 --- /dev/null +++ b/build/win32/vs14/gsettings.vcxproj.filters @@ -0,0 +1,14 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs14/gspawn-win32-helper-console.vcxproj b/build/win32/vs14/gspawn-win32-helper-console.vcxproj new file mode 100644 index 0000000..62a80bc --- /dev/null +++ b/build/win32/vs14/gspawn-win32-helper-console.vcxproj @@ -0,0 +1,177 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074} + gspawnwin32helperconsole + Win32Proj + + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;$(GLibInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + true + Console + false + + + MachineX86 + + + + + $(GLibInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Console + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GLibInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)gspawn-win64-helper-console.exe + true + $(OutDir)gspawn-win64-helper-console.pdb + Console + false + + + MachineX64 + + + + + $(GLibInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)gspawn-win64-helper-console.exe + true + $(OutDir)gspawn-win64-helper-console.pdb + Console + true + true + false + + + MachineX64 + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs14/gspawn-win32-helper-console.vcxproj.filters b/build/win32/vs14/gspawn-win32-helper-console.vcxproj.filters new file mode 100644 index 0000000..5b9e6ef --- /dev/null +++ b/build/win32/vs14/gspawn-win32-helper-console.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs14/gspawn-win32-helper.vcxproj b/build/win32/vs14/gspawn-win32-helper.vcxproj new file mode 100644 index 0000000..80f8973 --- /dev/null +++ b/build/win32/vs14/gspawn-win32-helper.vcxproj @@ -0,0 +1,177 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {289240E7-E167-47CE-A20C-58D852E520BA} + gspawnwin32helper + Win32Proj + + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + Application + MultiByte + true + v140 + + + Application + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + true + true + false + false + + + + Disabled + _DEBUG;$(GLibInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + true + Windows + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GLibInBuildMacro);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)gspawn-win64-helper.exe + true + $(OutDir)gspawn-win64-helper.pdb + Windows + false + + + MachineX64 + + + + + $(GLibInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + true + Windows + true + true + false + + + MachineX86 + + + + + $(GLibInBuildMacro);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)gspawn-win64-helper.exe + true + $(OutDir)gspawn-win64-helper.pdb + Windows + true + true + false + + + MachineX64 + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs14/gspawn-win32-helper.vcxproj.filters b/build/win32/vs14/gspawn-win32-helper.vcxproj.filters new file mode 100644 index 0000000..0a83fa2 --- /dev/null +++ b/build/win32/vs14/gspawn-win32-helper.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + \ No newline at end of file diff --git a/build/win32/vs14/gthread.vcxproj b/build/win32/vs14/gthread.vcxproj new file mode 100644 index 0000000..57bd59f --- /dev/null +++ b/build/win32/vs14/gthread.vcxproj @@ -0,0 +1,188 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C} + gthread + Win32Proj + + + + DynamicLibrary + MultiByte + true + v140 + + + DynamicLibrary + MultiByte + v140 + + + DynamicLibrary + MultiByte + true + v140 + + + DynamicLibrary + MultiByte + v140 + + + + + + + + + + + + + + + + + + + + + + + true + false + true + false + + + + Disabled + _DEBUG;$(GThreadBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX86 + + + + + $(GThreadBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX86 + + + + + Disabled + _DEBUG;$(GThreadBuildDefines);%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + false + + + MachineX64 + + + + + $(GThreadBuildDefines);%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + CompileAsC + + + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).dll + true + $(OutDir)$(GlibDllPrefix)$(ProjectName)$(GlibDllSuffix).pdb + $(TargetDir)$(ProjectName)-$(ApiVersion).lib + Windows + true + true + false + + + MachineX64 + + + + + + + + + + + {12bca020-eabf-429e-876a-a476bc9c10c0} + false + + + + + + \ No newline at end of file diff --git a/build/win32/vs14/gthread.vcxproj.filters b/build/win32/vs14/gthread.vcxproj.filters new file mode 100644 index 0000000..fb35c1f --- /dev/null +++ b/build/win32/vs14/gthread.vcxproj.filters @@ -0,0 +1,27 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + + + Source Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/build/win32/vs8/Makefile.am b/build/win32/vs8/Makefile.am deleted file mode 100644 index 69cd83f..0000000 --- a/build/win32/vs8/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -EXTRA_DIST = \ - README \ - gio.vcproj \ - glib-genmarshal.vcproj \ - glib.sln \ - glib.vcproj \ - gmodule.vcproj \ - gobject.vcproj \ - gspawn-win32-helper-console.vcproj \ - gspawn-win32-helper.vcproj \ - gthread.vcproj diff --git a/build/win32/vs8/README b/build/win32/vs8/README deleted file mode 100644 index 4576aae..0000000 --- a/build/win32/vs8/README +++ /dev/null @@ -1,4 +0,0 @@ -Note that this is mostly experimental and not really maintained. It -seems that the OAH project at https://code.launchpad.net/oah might be -a better choice if you want to start building GLib (and more of the -GTK+ stack) with Visual Studio. diff --git a/build/win32/vs8/gio.vcproj b/build/win32/vs8/gio.vcproj deleted file mode 100644 index 13902ac..0000000 --- a/build/win32/vs8/gio.vcproj +++ /dev/null @@ -1,486 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/win32/vs8/glib-genmarshal.vcproj b/build/win32/vs8/glib-genmarshal.vcproj deleted file mode 100644 index 06cb398..0000000 --- a/build/win32/vs8/glib-genmarshal.vcproj +++ /dev/null @@ -1,199 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/win32/vs8/glib.sln b/build/win32/vs8/glib.sln deleted file mode 100644 index 544560e..0000000 --- a/build/win32/vs8/glib.sln +++ /dev/null @@ -1,84 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib", "glib.vcproj", "{12BCA020-EABF-429E-876A-A476BC9C10C0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gmodule", "gmodule.vcproj", "{4214047C-F5C1-40B3-8369-5DCED8C32770}" - ProjectSection(ProjectDependencies) = postProject - {12BCA020-EABF-429E-876A-A476BC9C10C0} = {12BCA020-EABF-429E-876A-A476BC9C10C0} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gobject", "gobject.vcproj", "{F172EFFC-E30F-4593-809E-DB2024B1E753}" - ProjectSection(ProjectDependencies) = postProject - {12BCA020-EABF-429E-876A-A476BC9C10C0} = {12BCA020-EABF-429E-876A-A476BC9C10C0} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gthread", "gthread.vcproj", "{C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}" - ProjectSection(ProjectDependencies) = postProject - {12BCA020-EABF-429E-876A-A476BC9C10C0} = {12BCA020-EABF-429E-876A-A476BC9C10C0} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-genmarshal", "glib-genmarshal.vcproj", "{BD12E835-5C52-4E5D-8234-1C579F33E27A}" - ProjectSection(ProjectDependencies) = postProject - {12BCA020-EABF-429E-876A-A476BC9C10C0} = {12BCA020-EABF-429E-876A-A476BC9C10C0} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gio", "gio.vcproj", "{F3D1583C-5613-4809-BD98-7CC1C1276F92}" - ProjectSection(ProjectDependencies) = postProject - {12BCA020-EABF-429E-876A-A476BC9C10C0} = {12BCA020-EABF-429E-876A-A476BC9C10C0} - {F172EFFC-E30F-4593-809E-DB2024B1E753} = {F172EFFC-E30F-4593-809E-DB2024B1E753} - {4214047C-F5C1-40B3-8369-5DCED8C32770} = {4214047C-F5C1-40B3-8369-5DCED8C32770} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gspawn-win32-helper", "gspawn-win32-helper.vcproj", "{289240E7-E167-47CE-A20C-58D852E520BA}" - ProjectSection(ProjectDependencies) = postProject - {12BCA020-EABF-429E-876A-A476BC9C10C0} = {12BCA020-EABF-429E-876A-A476BC9C10C0} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gspawn-win32-helper-console", "gspawn-win32-helper-console.vcproj", "{E40E8A7E-7CAE-4659-9B8B-BC38898E3074}" - ProjectSection(ProjectDependencies) = postProject - {12BCA020-EABF-429E-876A-A476BC9C10C0} = {12BCA020-EABF-429E-876A-A476BC9C10C0} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|Win32.ActiveCfg = Debug|Win32 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|Win32.Build.0 = Debug|Win32 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|Win32.ActiveCfg = Release|Win32 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|Win32.Build.0 = Release|Win32 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|Win32.ActiveCfg = Debug|Win32 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|Win32.Build.0 = Debug|Win32 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|Win32.ActiveCfg = Release|Win32 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|Win32.Build.0 = Release|Win32 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|Win32.ActiveCfg = Debug|Win32 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|Win32.Build.0 = Debug|Win32 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|Win32.ActiveCfg = Release|Win32 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|Win32.Build.0 = Release|Win32 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|Win32.ActiveCfg = Debug|Win32 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|Win32.Build.0 = Debug|Win32 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|Win32.ActiveCfg = Release|Win32 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|Win32.Build.0 = Release|Win32 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|Win32.ActiveCfg = Debug|Win32 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|Win32.Build.0 = Debug|Win32 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|Win32.ActiveCfg = Release|Win32 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|Win32.Build.0 = Release|Win32 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|Win32.ActiveCfg = Debug|Win32 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|Win32.Build.0 = Debug|Win32 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|Win32.ActiveCfg = Release|Win32 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|Win32.Build.0 = Release|Win32 - {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|Win32.ActiveCfg = Debug|Win32 - {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|Win32.Build.0 = Debug|Win32 - {289240E7-E167-47CE-A20C-58D852E520BA}.Release|Win32.ActiveCfg = Release|Win32 - {289240E7-E167-47CE-A20C-58D852E520BA}.Release|Win32.Build.0 = Release|Win32 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|Win32.ActiveCfg = Debug|Win32 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|Win32.Build.0 = Debug|Win32 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|Win32.ActiveCfg = Release|Win32 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/build/win32/vs8/glib.vcproj b/build/win32/vs8/glib.vcproj deleted file mode 100644 index 00d6eff..0000000 --- a/build/win32/vs8/glib.vcproj +++ /dev/null @@ -1,605 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/win32/vs8/gmodule.vcproj b/build/win32/vs8/gmodule.vcproj deleted file mode 100644 index b6e0e8c..0000000 --- a/build/win32/vs8/gmodule.vcproj +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/win32/vs8/gobject.vcproj b/build/win32/vs8/gobject.vcproj deleted file mode 100644 index 21c6079..0000000 --- a/build/win32/vs8/gobject.vcproj +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/win32/vs8/gspawn-win32-helper-console.vcproj b/build/win32/vs8/gspawn-win32-helper-console.vcproj deleted file mode 100644 index 5bf95af..0000000 --- a/build/win32/vs8/gspawn-win32-helper-console.vcproj +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/win32/vs8/gspawn-win32-helper.vcproj b/build/win32/vs8/gspawn-win32-helper.vcproj deleted file mode 100644 index 6e34dbc..0000000 --- a/build/win32/vs8/gspawn-win32-helper.vcproj +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/win32/vs8/gthread.vcproj b/build/win32/vs8/gthread.vcproj deleted file mode 100644 index db73a4f..0000000 --- a/build/win32/vs8/gthread.vcproj +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/win32/vs9/.gitignore b/build/win32/vs9/.gitignore deleted file mode 100644 index 3c5cef6..0000000 --- a/build/win32/vs9/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -glib.vcproj -gobject.vcproj -gio.vcproj diff --git a/build/win32/vs9/Makefile.am b/build/win32/vs9/Makefile.am index 98d797a..1cc2b21 100644 --- a/build/win32/vs9/Makefile.am +++ b/build/win32/vs9/Makefile.am @@ -1,25 +1,40 @@ +GENERATED_ITEMS = \ + glib.vcproj \ + gobject.vcproj \ + gio.vcproj \ + glib-compile-schemas.vcproj \ + glib-compile-resources.vcproj \ + glib-version-paths.vsprops \ + glib-install.vsprops + +MSVC_HEADERS_LIST = glib.headers gobject.headers gio.headers + EXTRA_DIST = \ - README.txt \ - glib.sln \ - glib.vcproj \ - glib.vcprojin \ - glib-genmarshal.vcproj \ - gspawn-win32-helper-console.vcproj \ - gspawn-win32-helper.vcproj \ - gmodule.vcproj \ - gobject.vcproj \ - gobject.vcprojin \ - gthread.vcproj \ - gio.vcproj \ - gio.vcprojin \ - glib-compile-schemas.vcproj \ - gsettings.vcproj \ - glib-compile-resources.vcproj \ - gresource.vcproj \ - gio-querymodules.vcproj \ - gdbus.vcproj \ + README.txt \ + glib.sln \ + glib.vcprojin \ + glib-genmarshal.vcproj \ + gspawn-win32-helper-console.vcproj \ + gspawn-win32-helper.vcproj \ + gmodule.vcproj \ + gobject.vcprojin \ + gthread.vcproj \ + gio.vcprojin \ + gsettings.vcproj \ + gresource.vcproj \ + gio-querymodules.vcproj \ + gdbus.vcproj \ + glib-compile-schemas.vcprojin \ + glib-compile-resources.vcprojin \ glib-install.vcproj \ glib-build-defines.vsprops \ - glib-install.vsprops \ - glib-version-paths.vsprops \ - glib-gen-srcs.vsprops + glib-version-paths.vsprops.in \ + glib-gen-srcs.vsprops \ + glib-install.vspropsin \ + $(GENERATED_ITEMS) + +glib-install.vsprops: $(top_srcdir)/build/win32/vs9/glib-install.vspropsin $(MSVC_HEADERS_LIST) + $(CPP) -P - <$(top_srcdir)/build/win32/vs9/glib-install.vspropsin >$@ + rm $(MSVC_HEADERS_LIST) + +DISTCLEANFILES = $(GENERATED_ITEMS) diff --git a/build/win32/vs9/Makefile.in b/build/win32/vs9/Makefile.in new file mode 100644 index 0000000..7df3c28 --- /dev/null +++ b/build/win32/vs9/Makefile.in @@ -0,0 +1,614 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = build/win32/vs9 +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = glib-version-paths.vsprops +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(srcdir)/glib-version-paths.vsprops.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +GENERATED_ITEMS = \ + glib.vcproj \ + gobject.vcproj \ + gio.vcproj \ + glib-compile-schemas.vcproj \ + glib-compile-resources.vcproj \ + glib-version-paths.vsprops \ + glib-install.vsprops + +MSVC_HEADERS_LIST = glib.headers gobject.headers gio.headers +EXTRA_DIST = \ + README.txt \ + glib.sln \ + glib.vcprojin \ + glib-genmarshal.vcproj \ + gspawn-win32-helper-console.vcproj \ + gspawn-win32-helper.vcproj \ + gmodule.vcproj \ + gobject.vcprojin \ + gthread.vcproj \ + gio.vcprojin \ + gsettings.vcproj \ + gresource.vcproj \ + gio-querymodules.vcproj \ + gdbus.vcproj \ + glib-compile-schemas.vcprojin \ + glib-compile-resources.vcprojin \ + glib-install.vcproj \ + glib-build-defines.vsprops \ + glib-version-paths.vsprops.in \ + glib-gen-srcs.vsprops \ + glib-install.vspropsin \ + $(GENERATED_ITEMS) + +DISTCLEANFILES = $(GENERATED_ITEMS) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build/win32/vs9/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu build/win32/vs9/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +glib-version-paths.vsprops: $(top_builddir)/config.status $(srcdir)/glib-version-paths.vsprops.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +glib-install.vsprops: $(top_srcdir)/build/win32/vs9/glib-install.vspropsin $(MSVC_HEADERS_LIST) + $(CPP) -P - <$(top_srcdir)/build/win32/vs9/glib-install.vspropsin >$@ + rm $(MSVC_HEADERS_LIST) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/build/win32/vs9/gio.vcproj b/build/win32/vs9/gio.vcproj new file mode 100644 index 0000000..5114a0b --- /dev/null +++ b/build/win32/vs9/gio.vcproj @@ -0,0 +1,409 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/win32/vs9/gio.vcprojin b/build/win32/vs9/gio.vcprojin index bb4a85b..db551e7 100644 --- a/build/win32/vs9/gio.vcprojin +++ b/build/win32/vs9/gio.vcprojin @@ -155,7 +155,7 @@ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" > -#include "libgio.sourcefiles" +#include "gio.sourcefiles" + diff --git a/build/win32/vs9/glib-compile-resources.vcproj b/build/win32/vs9/glib-compile-resources.vcproj index 960df02..e8cc69f 100644 --- a/build/win32/vs9/glib-compile-resources.vcproj +++ b/build/win32/vs9/glib-compile-resources.vcproj @@ -1,156 +1,156 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ProjectType="Visual C++" + Version="9.00" + Name="glib-compile-resources" + ProjectGUID="{B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}" + RootNamespace="glibcompileresources" + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/win32/vs9/glib-compile-resources.vcprojin b/build/win32/vs9/glib-compile-resources.vcprojin new file mode 100644 index 0000000..9050265 --- /dev/null +++ b/build/win32/vs9/glib-compile-resources.vcprojin @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include "glib-compile-resources.sourcefiles" + + + + + diff --git a/build/win32/vs9/glib-compile-schemas.vcproj b/build/win32/vs9/glib-compile-schemas.vcproj index 617a4b7..5af69e2 100644 --- a/build/win32/vs9/glib-compile-schemas.vcproj +++ b/build/win32/vs9/glib-compile-schemas.vcproj @@ -1,156 +1,156 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + ProjectType="Visual C++" + Version="9.00" + Name="glib-compile-schemas" + ProjectGUID="{015D69D0-8B42-438A-ADAE-052AC036E065}" + RootNamespace="glibcompileschemas" + Keyword="Win32Proj" + TargetFrameworkVersion="196613" + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/win32/vs9/glib-compile-schemas.vcprojin b/build/win32/vs9/glib-compile-schemas.vcprojin new file mode 100644 index 0000000..2a75095 --- /dev/null +++ b/build/win32/vs9/glib-compile-schemas.vcprojin @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include "glib-compile-schemas.sourcefiles" + + + + + diff --git a/build/win32/vs9/glib-gen-srcs.vsprops b/build/win32/vs9/glib-gen-srcs.vsprops index be94d2d..a4cf9f8 100644 --- a/build/win32/vs9/glib-gen-srcs.vsprops +++ b/build/win32/vs9/glib-gen-srcs.vsprops @@ -23,6 +23,6 @@ /> diff --git a/build/win32/vs9/glib-install.vcproj b/build/win32/vs9/glib-install.vcproj index e3a4ef6..7324f0f 100644 --- a/build/win32/vs9/glib-install.vcproj +++ b/build/win32/vs9/glib-install.vcproj @@ -28,7 +28,7 @@ DeleteExtensionsOnClean="" > @@ -41,7 +41,7 @@ DeleteExtensionsOnClean="" > @@ -55,7 +55,7 @@ DeleteExtensionsOnClean="" > @@ -69,9 +69,51 @@ DeleteExtensionsOnClean="" > + + + + + + + + + + + + + + + + + + diff --git a/build/win32/vs9/glib-install.vsprops b/build/win32/vs9/glib-install.vsprops index 30c12e1..8cb534e 100644 --- a/build/win32/vs9/glib-install.vsprops +++ b/build/win32/vs9/glib-install.vsprops @@ -1,13 +1,13 @@ - + + /> + diff --git a/build/win32/vs9/glib-install.vspropsin b/build/win32/vs9/glib-install.vspropsin new file mode 100644 index 0000000..24c9648 --- /dev/null +++ b/build/win32/vs9/glib-install.vspropsin @@ -0,0 +1,90 @@ + + + + + diff --git a/build/win32/vs9/glib-version-paths.vsprops b/build/win32/vs9/glib-version-paths.vsprops index 33b276c..eae0ebd 100644 --- a/build/win32/vs9/glib-version-paths.vsprops +++ b/build/win32/vs9/glib-version-paths.vsprops @@ -9,6 +9,14 @@ Value="9" /> + + @@ -17,10 +25,6 @@ Value="$(GlibEtcInstallRoot)" /> - diff --git a/build/win32/vs9/glib-version-paths.vsprops.in b/build/win32/vs9/glib-version-paths.vsprops.in new file mode 100644 index 0000000..f69da65 --- /dev/null +++ b/build/win32/vs9/glib-version-paths.vsprops.in @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + diff --git a/build/win32/vs9/glib.sln b/build/win32/vs9/glib.sln index 1a784f5..76c0648 100644 --- a/build/win32/vs9/glib.sln +++ b/build/win32/vs9/glib.sln @@ -103,16 +103,24 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-install", "glib-instal EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug_BundledPCRE|Win32 = Debug_BundledPCRE|Win32 + Debug_BundledPCRE|x64 = Debug_BundledPCRE|x64 + Release_BundledPCRE|Win32 = Release_BundledPCRE|Win32 + Release_BundledPCRE|x64 = Release_BundledPCRE|x64 Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 - Debug_ExtPCRE|Win32 = Debug_ExtPCRE|Win32 - Debug_ExtPCRE|x64 = Debug_ExtPCRE|x64 - Release_ExtPCRE|Win32 = Release_ExtPCRE|Win32 - Release_ExtPCRE|x64 = Release_ExtPCRE|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|Win32.ActiveCfg = Debug_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|Win32.Build.0 = Debug_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|x64.ActiveCfg = Debug_BundledPCRE|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_BundledPCRE|x64.Build.0 = Debug_BundledPCRE|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|Win32.ActiveCfg = Release_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|Win32.Build.0 = Release_BundledPCRE|Win32 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|x64.ActiveCfg = Release_BundledPCRE|x64 + {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_BundledPCRE|x64.Build.0 = Release_BundledPCRE|x64 {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|Win32.ActiveCfg = Debug|Win32 {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|Win32.Build.0 = Debug|Win32 {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug|x64.ActiveCfg = Debug|x64 @@ -121,14 +129,14 @@ Global {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|Win32.Build.0 = Release|Win32 {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|x64.ActiveCfg = Release|x64 {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release|x64.Build.0 = Release|x64 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_ExtPCRE|Win32.ActiveCfg = Debug_ExtPCRE|Win32 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_ExtPCRE|Win32.Build.0 = Debug_ExtPCRE|Win32 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_ExtPCRE|x64.ActiveCfg = Debug_ExtPCRE|x64 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Debug_ExtPCRE|x64.Build.0 = Debug_ExtPCRE|x64 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_ExtPCRE|Win32.ActiveCfg = Release_ExtPCRE|Win32 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_ExtPCRE|Win32.Build.0 = Release_ExtPCRE|Win32 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_ExtPCRE|x64.ActiveCfg = Release_ExtPCRE|x64 - {12BCA020-EABF-429E-876A-A476BC9C10C0}.Release_ExtPCRE|x64.Build.0 = Release_ExtPCRE|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_BundledPCRE|x64.Build.0 = Release|x64 {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|Win32.ActiveCfg = Debug|Win32 {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|Win32.Build.0 = Debug|Win32 {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug|x64.ActiveCfg = Debug|x64 @@ -137,14 +145,14 @@ Global {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|Win32.Build.0 = Release|Win32 {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|x64.ActiveCfg = Release|x64 {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release|x64.Build.0 = Release|x64 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {4214047C-F5C1-40B3-8369-5DCED8C32770}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_BundledPCRE|x64.Build.0 = Release|x64 {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|Win32.ActiveCfg = Debug|Win32 {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|Win32.Build.0 = Debug|Win32 {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug|x64.ActiveCfg = Debug|x64 @@ -153,14 +161,14 @@ Global {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|Win32.Build.0 = Release|Win32 {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|x64.ActiveCfg = Release|x64 {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release|x64.Build.0 = Release|x64 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {F172EFFC-E30F-4593-809E-DB2024B1E753}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_BundledPCRE|x64.Build.0 = Release|x64 {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|Win32.ActiveCfg = Debug|Win32 {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|Win32.Build.0 = Debug|Win32 {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug|x64.ActiveCfg = Debug|x64 @@ -169,14 +177,14 @@ Global {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|Win32.Build.0 = Release|Win32 {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|x64.ActiveCfg = Release|x64 {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release|x64.Build.0 = Release|x64 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {C8AFB8C3-FFFD-460F-BC13-9AC25D7B117C}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_BundledPCRE|x64.Build.0 = Release|x64 {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|Win32.ActiveCfg = Debug|Win32 {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|Win32.Build.0 = Debug|Win32 {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug|x64.ActiveCfg = Debug|x64 @@ -185,14 +193,14 @@ Global {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|Win32.Build.0 = Release|Win32 {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|x64.ActiveCfg = Release|x64 {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release|x64.Build.0 = Release|x64 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {BD12E835-5C52-4E5D-8234-1C579F33E27A}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_BundledPCRE|x64.Build.0 = Release|x64 {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|Win32.ActiveCfg = Debug|Win32 {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|Win32.Build.0 = Debug|Win32 {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug|x64.ActiveCfg = Debug|x64 @@ -201,14 +209,14 @@ Global {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|Win32.Build.0 = Release|Win32 {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|x64.ActiveCfg = Release|x64 {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release|x64.Build.0 = Release|x64 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {F3D1583C-5613-4809-BD98-7CC1C1276F92}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {289240E7-E167-47CE-A20C-58D852E520BA}.Release_BundledPCRE|x64.Build.0 = Release|x64 {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|Win32.ActiveCfg = Debug|Win32 {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|Win32.Build.0 = Debug|Win32 {289240E7-E167-47CE-A20C-58D852E520BA}.Debug|x64.ActiveCfg = Debug|x64 @@ -217,14 +225,14 @@ Global {289240E7-E167-47CE-A20C-58D852E520BA}.Release|Win32.Build.0 = Release|Win32 {289240E7-E167-47CE-A20C-58D852E520BA}.Release|x64.ActiveCfg = Release|x64 {289240E7-E167-47CE-A20C-58D852E520BA}.Release|x64.Build.0 = Release|x64 - {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {289240E7-E167-47CE-A20C-58D852E520BA}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 - {289240E7-E167-47CE-A20C-58D852E520BA}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {289240E7-E167-47CE-A20C-58D852E520BA}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {289240E7-E167-47CE-A20C-58D852E520BA}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {289240E7-E167-47CE-A20C-58D852E520BA}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_BundledPCRE|x64.Build.0 = Release|x64 {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|Win32.ActiveCfg = Debug|Win32 {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|Win32.Build.0 = Debug|Win32 {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug|x64.ActiveCfg = Debug|x64 @@ -233,14 +241,14 @@ Global {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|Win32.Build.0 = Release|Win32 {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|x64.ActiveCfg = Release|x64 {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release|x64.Build.0 = Release|x64 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {E40E8A7E-7CAE-4659-9B8B-BC38898E3074}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_BundledPCRE|x64.Build.0 = Release|x64 {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|Win32.ActiveCfg = Debug|Win32 {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|Win32.Build.0 = Debug|Win32 {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug|x64.ActiveCfg = Debug|x64 @@ -249,14 +257,14 @@ Global {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|Win32.Build.0 = Release|Win32 {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|x64.ActiveCfg = Release|x64 {015D69D0-8B42-438A-ADAE-052AC036E065}.Release|x64.Build.0 = Release|x64 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {015D69D0-8B42-438A-ADAE-052AC036E065}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_BundledPCRE|x64.Build.0 = Release|x64 {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|Win32.ActiveCfg = Debug|Win32 {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|Win32.Build.0 = Debug|Win32 {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug|x64.ActiveCfg = Debug|x64 @@ -265,14 +273,14 @@ Global {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|Win32.Build.0 = Release|Win32 {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|x64.ActiveCfg = Release|x64 {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release|x64.Build.0 = Release|x64 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {05041C63-F1C5-49BA-A7DE-61EBB5307EAA}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_BundledPCRE|x64.Build.0 = Release|x64 {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|Win32.ActiveCfg = Debug|Win32 {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|Win32.Build.0 = Debug|Win32 {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug|x64.ActiveCfg = Debug|x64 @@ -281,14 +289,14 @@ Global {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|Win32.Build.0 = Release|Win32 {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|x64.ActiveCfg = Release|x64 {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release|x64.Build.0 = Release|x64 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {B0CDEC7F-DCE1-4F7E-B8A4-A3009C18FB2A}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_BundledPCRE|x64.Build.0 = Release|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|Win32.ActiveCfg = Debug|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|Win32.Build.0 = Debug|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug|x64.ActiveCfg = Debug|x64 @@ -297,14 +305,14 @@ Global {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|Win32.Build.0 = Release|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|x64.ActiveCfg = Release|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release|x64.Build.0 = Release|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280685}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_BundledPCRE|x64.Build.0 = Release|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|Win32.ActiveCfg = Debug|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|Win32.Build.0 = Debug|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug|x64.ActiveCfg = Debug|x64 @@ -313,14 +321,14 @@ Global {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|Win32.Build.0 = Release|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|x64.ActiveCfg = Release|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release|x64.Build.0 = Release|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280686}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_BundledPCRE|x64.Build.0 = Release|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|Win32.ActiveCfg = Debug|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|Win32.Build.0 = Debug|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug|x64.ActiveCfg = Debug|x64 @@ -329,14 +337,14 @@ Global {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|Win32.Build.0 = Release|Win32 {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|x64.ActiveCfg = Release|x64 {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release|x64.Build.0 = Release|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {95A1571F-61BE-4C51-BE53-2F2DAB280687}.Release_ExtPCRE|x64.Build.0 = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|Win32.ActiveCfg = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|Win32.Build.0 = Debug|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|x64.ActiveCfg = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_BundledPCRE|x64.Build.0 = Debug|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|Win32.ActiveCfg = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|Win32.Build.0 = Release|Win32 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|x64.ActiveCfg = Release|x64 + {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_BundledPCRE|x64.Build.0 = Release|x64 {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.ActiveCfg = Debug|Win32 {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.Build.0 = Debug|Win32 {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|x64.ActiveCfg = Debug|x64 @@ -345,14 +353,6 @@ Global {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|Win32.Build.0 = Release|Win32 {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|x64.ActiveCfg = Release|x64 {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|x64.Build.0 = Release|x64 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_ExtPCRE|Win32.ActiveCfg = Debug|Win32 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_ExtPCRE|Win32.Build.0 = Debug|Win32 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_ExtPCRE|x64.ActiveCfg = Debug|x64 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug_ExtPCRE|x64.Build.0 = Debug|x64 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_ExtPCRE|Win32.ActiveCfg = Release|Win32 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_ExtPCRE|Win32.Build.0 = Release|Win32 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_ExtPCRE|x64.ActiveCfg = Release|x64 - {2093D218-190E-4194-9421-3BA7CBF33B10}.Release_ExtPCRE|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/build/win32/vs9/glib.vcproj b/build/win32/vs9/glib.vcproj new file mode 100644 index 0000000..e8c83d3 --- /dev/null +++ b/build/win32/vs9/glib.vcproj @@ -0,0 +1,722 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/win32/vs9/glib.vcprojin b/build/win32/vs9/glib.vcprojin index 7013a08..86e72e1 100644 --- a/build/win32/vs9/glib.vcprojin +++ b/build/win32/vs9/glib.vcprojin @@ -20,8 +20,9 @@ @@ -51,9 +52,8 @@ /> @@ -83,8 +83,9 @@ /> @@ -114,9 +115,8 @@ /> @@ -146,8 +146,9 @@ /> -#include "libglib.sourcefiles" +#include "glib.sourcefiles" @@ -289,14 +289,14 @@ Name="libcharset" > + - + - + - + - - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + @@ -495,7 +505,7 @@ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" > - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/build/win32/vs9/gobject.vcprojin b/build/win32/vs9/gobject.vcprojin index 92ca2aa..82609cc 100644 --- a/build/win32/vs9/gobject.vcprojin +++ b/build/win32/vs9/gobject.vcprojin @@ -58,7 +58,6 @@ > -#include "libgobject.sourcefiles" +#include "gobject.sourcefiles" . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/config.guess b/config.guess new file mode 100755 index 0000000..1659250 --- /dev/null +++ b/config.guess @@ -0,0 +1,1441 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2015 Free Software Foundation, Inc. + +timestamp='2015-08-20' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2015 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + *:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; +esac + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..80a4b6f --- /dev/null +++ b/config.h.in @@ -0,0 +1,791 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* The normal alignment of `guint32', in bytes. */ +#undef ALIGNOF_GUINT32 + +/* The normal alignment of `guint64', in bytes. */ +#undef ALIGNOF_GUINT64 + +/* The normal alignment of `unsigned long', in bytes. */ +#undef ALIGNOF_UNSIGNED_LONG + +/* poll doesn't work on devices */ +#undef BROKEN_POLL + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END + +/* Define to 1 if using `alloca.c'. */ +#undef C_ALLOCA + +/* Whether to disable memory pools */ +#undef DISABLE_MEM_POOLS + +/* Whether to enable GC friendliness by default */ +#undef ENABLE_GC_FRIENDLY_DEFAULT + +/* always defined to indicate that i18n is enabled */ +#undef ENABLE_NLS + +/* Define the gettext package to be used */ +#undef GETTEXT_PACKAGE + +/* Define to the GLIB binary age */ +#undef GLIB_BINARY_AGE + +/* Define to the GLIB interface age */ +#undef GLIB_INTERFACE_AGE + +/* Define the location where the catalogs will be installed */ +#undef GLIB_LOCALE_DIR + +/* Define to the GLIB major version */ +#undef GLIB_MAJOR_VERSION + +/* Define to the GLIB micro version */ +#undef GLIB_MICRO_VERSION + +/* Define to the GLIB minor version */ +#undef GLIB_MINOR_VERSION + +/* A 'va_copy' style function */ +#undef G_VA_COPY + +/* 'va_lists' cannot be copies as values */ +#undef G_VA_COPY_AS_ARRAY + +/* Define to 1 if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +#undef HAVE_ALLOCA_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_ATTR_XATTR_H + +/* Define to 1 if you have the `bind_textdomain_codeset' function. */ +#undef HAVE_BIND_TEXTDOMAIN_CODESET + +/* Define if you have a version of the snprintf function with semantics as + specified by the ISO C99 standard. */ +#undef HAVE_C99_SNPRINTF + +/* Define if you have a version of the vsnprintf function with semantics as + specified by the ISO C99 standard. */ +#undef HAVE_C99_VSNPRINTF + +/* define to 1 if Carbon is available */ +#undef HAVE_CARBON + +/* Define to 1 if you have the `clock_gettime' function. */ +#undef HAVE_CLOCK_GETTIME + +/* define to 1 if Cocoa is available */ +#undef HAVE_COCOA + +/* Have nl_langinfo (CODESET) */ +#undef HAVE_CODESET + +/* Define to 1 if you have the header file. */ +#undef HAVE_CRT_EXTERNS_H + +/* Define if dbus-1 is available */ +#undef HAVE_DBUS1 + +/* Define to 1 if you have the `dcgettext' function. */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_DIRENT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if using dtrace probes. */ +#undef HAVE_DTRACE + +/* Define to 1 if you have the `endmntent' function. */ +#undef HAVE_ENDMNTENT + +/* Define to 1 if you have the `endservent' function. */ +#undef HAVE_ENDSERVENT + +/* we have the eventfd(2) system call */ +#undef HAVE_EVENTFD + +/* Define to 1 if you have the `fallocate' function. */ +#undef HAVE_FALLOCATE + +/* Define if we have FAM */ +#undef HAVE_FAM + +/* Define to 1 if you have the header file. */ +#undef HAVE_FAM_H + +/* Define if we have FAMNoExists in fam */ +#undef HAVE_FAM_NO_EXISTS + +/* Define to 1 if you have the `fchmod' function. */ +#undef HAVE_FCHMOD + +/* Define to 1 if you have the `fchown' function. */ +#undef HAVE_FCHOWN + +/* Define to 1 if you have the `fdwalk' function. */ +#undef HAVE_FDWALK + +/* Define to 1 if you have the header file. */ +#undef HAVE_FSTAB_H + +/* Define to 1 if you have the `fsync' function. */ +#undef HAVE_FSYNC + +/* we have the futex(2) system call */ +#undef HAVE_FUTEX + +/* Define to 1 if you have the `getc_unlocked' function. */ +#undef HAVE_GETC_UNLOCKED + +/* Define to 1 if you have the `getfsstat' function. */ +#undef HAVE_GETFSSTAT + +/* Define to 1 if you have the `getgrgid_r' function. */ +#undef HAVE_GETGRGID_R + +/* Define to 1 if you have the `getmntent_r' function. */ +#undef HAVE_GETMNTENT_R + +/* Define to 1 if you have the `getprotobyname_r' function. */ +#undef HAVE_GETPROTOBYNAME_R + +/* Define to 1 if you have the `getpwuid_r' function. */ +#undef HAVE_GETPWUID_R + +/* Define to 1 if you have the `getresuid' function. */ +#undef HAVE_GETRESUID + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have the `getvfsstat' function. */ +#undef HAVE_GETVFSSTAT + +/* Define to 1 if you have the `gmtime_r' function. */ +#undef HAVE_GMTIME_R + +/* define to use system printf */ +#undef HAVE_GOOD_PRINTF + +/* Define to 1 if you have the `hasmntopt' function. */ +#undef HAVE_HASMNTOPT + +/* Define to 1 if you have the `if_indextoname' function. */ +#undef HAVE_IF_INDEXTONAME + +/* Define to 1 if you have the `if_nametoindex' function. */ +#undef HAVE_IF_NAMETOINDEX + +/* Define to 1 if you have the `inotify_init1' function. */ +#undef HAVE_INOTIFY_INIT1 + +/* define to support printing 64-bit integers with format I64 */ +#undef HAVE_INT64_AND_I64 + +/* Define if you have the 'intmax_t' type in or . */ +#undef HAVE_INTMAX_T + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if exists, doesn't clash with , and + declares uintmax_t. */ +#undef HAVE_INTTYPES_H_WITH_UINTMAX + +/* Define if we have struct ip_mreqn */ +#undef HAVE_IP_MREQN + +/* Define to 1 if you have the `issetugid' function. */ +#undef HAVE_ISSETUGID + +/* Define to 1 if you have the `kevent' function. */ +#undef HAVE_KEVENT + +/* Define to 1 if you have the `kqueue' function. */ +#undef HAVE_KQUEUE + +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Have nl_langinfo (_NL_CTYPE_OUTDIGITn_MB) */ +#undef HAVE_LANGINFO_OUTDIGIT + +/* Have nl_langinfo (PM_STR) */ +#undef HAVE_LANGINFO_TIME + +/* Define to 1 if you have the `lchmod' function. */ +#undef HAVE_LCHMOD + +/* Define to 1 if you have the `lchown' function. */ +#undef HAVE_LCHOWN + +/* Define if your file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES + +/* Define if you have the __libc_enable_secure variable (GNU libc, eglibc) */ +#undef HAVE_LIBC_ENABLE_SECURE + +/* Define if libelf is available */ +#undef HAVE_LIBELF + +/* Define to 1 if you have the header file. */ +#undef HAVE_LINUX_MAGIC_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define to 1 if you have the `localtime_r' function. */ +#undef HAVE_LOCALTIME_R + +/* Define if you have the 'long double' type. */ +#undef HAVE_LONG_DOUBLE + +/* Define if you have the 'long long' type. */ +#undef HAVE_LONG_LONG + +/* define if system printf can print long long */ +#undef HAVE_LONG_LONG_FORMAT + +/* Define to 1 if you have the `lstat' function. */ +#undef HAVE_LSTAT + +/* Define to 1 if you have the header file. */ +#undef HAVE_MACH_MACH_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define to 1 if you have the `mbrtowc' function. */ +#undef HAVE_MBRTOWC + +/* Define to 1 if you have the `memalign' function. */ +#undef HAVE_MEMALIGN + +/* Define to 1 if you have the `memmem' function. */ +#undef HAVE_MEMMEM + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `mmap' function. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the header file. */ +#undef HAVE_MNTENT_H + +/* Define to 1 if you have the header file, and it defines `DIR'. */ +#undef HAVE_NDIR_H + +/* We have AF_NETLINK sockets */ +#undef HAVE_NETLINK + +/* Define to 1 if you have the `newlocale' function. */ +#undef HAVE_NEWLOCALE + +/* open option O_DIRECTORY */ +#undef HAVE_OPEN_O_DIRECTORY + +/* Define to 1 if you have the `pipe2' function. */ +#undef HAVE_PIPE2 + +/* Define to 1 if you have the `poll' function. */ +#undef HAVE_POLL + +/* Define to 1 if you have the `posix_memalign' function. */ +#undef HAVE_POSIX_MEMALIGN + +/* Define to 1 if you have the `prlimit' function. */ +#undef HAVE_PRLIMIT + +/* Have function pthread_attr_setstacksize */ +#undef HAVE_PTHREAD_ATTR_SETSTACKSIZE + +/* Have function pthread_condattr_setclock */ +#undef HAVE_PTHREAD_CONDATTR_SETCLOCK + +/* Have function pthread_cond_timedwait_relative_np */ +#undef HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP + +/* Have function pthread_setname_np(const char*) */ +#undef HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID + +/* Define to 1 if the system has the type `ptrdiff_t'. */ +#undef HAVE_PTRDIFF_T + +/* Define to 1 if you have the `readlink' function. */ +#undef HAVE_READLINK + +/* Define to 1 if you have the `recvmmsg' function. */ +#undef HAVE_RECVMMSG + +/* Define to 1 if you have the 'res_init' function. */ +#undef HAVE_RES_INIT + +/* Define to 1 if you have the header file. */ +#undef HAVE_SCHED_H + +/* Define to 1 if libselinux is available */ +#undef HAVE_SELINUX + +/* Define to 1 if you have the header file. */ +#undef HAVE_SELINUX_SELINUX_H + +/* Define to 1 if you have the `sendmmsg' function. */ +#undef HAVE_SENDMMSG + +/* Define to 1 if you have the `setenv' function. */ +#undef HAVE_SETENV + +/* Define to 1 if you have the `setmntent' function. */ +#undef HAVE_SETMNTENT + +/* Define if you have the 'sig_atomic_t' type. */ +#undef HAVE_SIG_ATOMIC_T + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* Define to 1 if you have the `splice' function. */ +#undef HAVE_SPLICE + +/* Define to 1 if you have the `statfs' function. */ +#undef HAVE_STATFS + +/* Define to 1 if you have the `statvfs' function. */ +#undef HAVE_STATVFS + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define if exists, doesn't clash with , and declares + uintmax_t. */ +#undef HAVE_STDINT_H_WITH_UINTMAX + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `stpcpy' function. */ +#undef HAVE_STPCPY + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the `strerror_r' function. */ +#undef HAVE_STRERROR_R + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Have functions strlcpy and strlcat */ +#undef HAVE_STRLCPY + +/* Define to 1 if you have the `strncasecmp' function. */ +#undef HAVE_STRNCASECMP + +/* Define to 1 if you have the `strnlen' function. */ +#undef HAVE_STRNLEN + +/* Define to 1 if you have the `strsignal' function. */ +#undef HAVE_STRSIGNAL + +/* Define to 1 if you have the `strtod_l' function. */ +#undef HAVE_STRTOD_L + +/* Define to 1 if you have the `strtoll_l' function. */ +#undef HAVE_STRTOLL_L + +/* Define to 1 if you have the `strtoull_l' function. */ +#undef HAVE_STRTOULL_L + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +#undef HAVE_STRUCT_DIRENT_D_TYPE + +/* Define to 1 if `f_bavail' is a member of `struct statfs'. */ +#undef HAVE_STRUCT_STATFS_F_BAVAIL + +/* Define to 1 if `f_fstypename' is a member of `struct statfs'. */ +#undef HAVE_STRUCT_STATFS_F_FSTYPENAME + +/* Define to 1 if `f_basetype' is a member of `struct statvfs'. */ +#undef HAVE_STRUCT_STATVFS_F_BASETYPE + +/* Define to 1 if `f_fstypename' is a member of `struct statvfs'. */ +#undef HAVE_STRUCT_STATVFS_F_FSTYPENAME + +/* Define to 1 if `st_atimensec' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_ATIMENSEC + +/* Define to 1 if `st_atim.tv_nsec' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC + +/* Define to 1 if `st_birthtim' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_BIRTHTIM + +/* Define to 1 if `st_birthtime' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_BIRTHTIME + +/* Define to 1 if `st_birthtimensec' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC + +/* Define to 1 if `st_birthtim.tv_nsec' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC + +/* Define to 1 if `st_blksize' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_BLKSIZE + +/* Define to 1 if `st_blocks' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_BLOCKS + +/* Define to 1 if `st_ctimensec' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_CTIMENSEC + +/* Define to 1 if `st_ctim.tv_nsec' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC + +/* Define to 1 if `st_mtimensec' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_MTIMENSEC + +/* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC + +/* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ +#undef HAVE_STRUCT_TM_TM_GMTOFF + +/* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ +#undef HAVE_STRUCT_TM___TM_GMTOFF + +/* Define to 1 if you have the `symlink' function. */ +#undef HAVE_SYMLINK + +/* Define to 1 if you have the `sysctlbyname' function. */ +#undef HAVE_SYSCTLBYNAME + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_SYS_DIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_EVENT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_FILIO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_INOTIFY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_MNTCTL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_MNTTAB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_MOUNT_H + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_SYS_NDIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_PRCTL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_RESOURCE_H + +/* found fd_set in sys/select.h */ +#undef HAVE_SYS_SELECT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STATFS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STATVFS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SYSCTL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_VFSTAB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_VFS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_VMOUNT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_XATTR_H + +/* Define to 1 if you have the `timegm' function. */ +#undef HAVE_TIMEGM + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define if your printf function family supports positional parameters as + specified by Unix98. */ +#undef HAVE_UNIX98_PRINTF + +/* Define to 1 if you have the `unsetenv' function. */ +#undef HAVE_UNSETENV + +/* Define to 1 if you have the `uselocale' function. */ +#undef HAVE_USELOCALE + +/* Define to 1 if you have the `utimes' function. */ +#undef HAVE_UTIMES + +/* Define to 1 if you have the `valloc' function. */ +#undef HAVE_VALLOC + +/* Define to 1 if you have the header file. */ +#undef HAVE_VALUES_H + +/* Define to 1 if you have the `vasprintf' function. */ +#undef HAVE_VASPRINTF + +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF + +/* Define if you have the 'wchar_t' type. */ +#undef HAVE_WCHAR_T + +/* Define to 1 if you have the `wcrtomb' function. */ +#undef HAVE_WCRTOMB + +/* Define to 1 if you have the `wcslen' function. */ +#undef HAVE_WCSLEN + +/* Define to 1 if you have the `wcsnlen' function. */ +#undef HAVE_WCSNLEN + +/* Define if you have the 'wint_t' type. */ +#undef HAVE_WINT_T + +/* Define to 1 if xattr is available */ +#undef HAVE_XATTR + +/* Define to 1 if xattr API uses XATTR_NOFOLLOW */ +#undef HAVE_XATTR_NOFOLLOW + +/* Define to 1 if you have the header file. */ +#undef HAVE_XLOCALE_H + +/* Define to 1 if you have the `_NSGetEnviron' function. */ +#undef HAVE__NSGETENVIRON + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#undef LT_OBJDIR + +/* Define to 1 if `major', `minor', and `makedev' are declared in . + */ +#undef MAJOR_IN_MKDEV + +/* Define to 1 if `major', `minor', and `makedev' are declared in + . */ +#undef MAJOR_IN_SYSMACROS + +/* didn't find fd_set */ +#undef NO_FD_SET + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* define if posix_memalign() can allocate any size */ +#undef POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS + +/* The size of `char', as computed by sizeof. */ +#undef SIZEOF_CHAR + +/* The size of `int', as computed by sizeof. */ +#undef SIZEOF_INT + +/* The size of `long', as computed by sizeof. */ +#undef SIZEOF_LONG + +/* The size of `long long', as computed by sizeof. */ +#undef SIZEOF_LONG_LONG + +/* The size of `short', as computed by sizeof. */ +#undef SIZEOF_SHORT + +/* The size of `size_t', as computed by sizeof. */ +#undef SIZEOF_SIZE_T + +/* The size of `ssize_t', as computed by sizeof. */ +#undef SIZEOF_SSIZE_T + +/* The size of `void *', as computed by sizeof. */ +#undef SIZEOF_VOID_P + +/* The size of `__int64', as computed by sizeof. */ +#undef SIZEOF___INT64 + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Number of arguments to statfs() */ +#undef STATFS_ARGS + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Use no threads */ +#undef THREADS_NONE + +/* Use pthreads */ +#undef THREADS_POSIX + +/* Use w32 threads */ +#undef THREADS_WIN32 + +/* Using GNU libiconv */ +#undef USE_LIBICONV_GNU + +/* Using a native implementation of iconv in a separate library */ +#undef USE_LIBICONV_NATIVE + +/* Define to use statfs() */ +#undef USE_STATFS + +/* Define to use statvfs() */ +#undef USE_STATVFS + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif + + +/* using the system-supplied PCRE library */ +#undef USE_SYSTEM_PCRE + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +# undef WORDS_BIGENDIAN +# endif +#endif + +/* Enable large inode numbers on Mac OS X 10.5. */ +#ifndef _DARWIN_USE_64_BIT_INODE +# define _DARWIN_USE_64_BIT_INODE 1 +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + +/* defines how to decorate public symbols while building */ +#undef _GLIB_EXTERN + +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + +/* Define to 1 if on MINIX. */ +#undef _MINIX + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +#undef _POSIX_SOURCE + +/* Target the Windows XP API */ +#undef _WIN32_WINNT + +/* Needed to get declarations for msg_control and msg_controllen on Solaris */ +#undef _XOPEN_SOURCE + +/* Needed to get declarations for msg_control and msg_controllen on Solaris */ +#undef _XOPEN_SOURCE_EXTENDED + +/* Needed to get declarations for msg_control and msg_controllen on Solaris */ +#undef __EXTENSIONS__ + +/* compiler supports atomic operations */ +#undef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to long or long long if and don't define. */ +#undef intmax_t + +/* Define to empty if the C compiler doesn't support this keyword. */ +#undef signed + +/* Define to `unsigned int' if does not define. */ +#undef size_t diff --git a/config.h.win32 b/config.h.win32 new file mode 100644 index 0000000..e54ebd7 --- /dev/null +++ b/config.h.win32 @@ -0,0 +1,869 @@ +/* config.h.win32.in Merged from two versions generated by configure for gcc and MSVC. */ +/* config.h. Generated by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define if building universal (internal helper macro) */ +/* #undef AC_APPLE_UNIVERSAL_BUILD */ + +/* The normal alignment of `guint32', in bytes. */ +#define ALIGNOF_GUINT32 4 + +/* The normal alignment of `guint64', in bytes. */ +#define ALIGNOF_GUINT64 8 + +/* The normal alignment of `unsigned long', in bytes. */ +#define ALIGNOF_UNSIGNED_LONG 4 + +/* poll doesn't work on devices */ +#define BROKEN_POLL 1 + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +/* #undef CRAY_STACKSEG_END */ + +/* Define to 1 if using `alloca.c'. */ +/* #undef C_ALLOCA */ + +/* Whether to disable memory pools */ +/* #undef DISABLE_MEM_POOLS */ + +/* Whether to enable GC friendliness by default */ +/* #undef ENABLE_GC_FRIENDLY_DEFAULT */ + +/* always defined to indicate that i18n is enabled */ +#define ENABLE_NLS 1 + +/* Define the gettext package to be used */ +#define GETTEXT_PACKAGE "glib20" + +/* Define to the GLIB binary age */ +#define GLIB_BINARY_AGE 4800 + +/* Define to the GLIB interface age */ +#define GLIB_INTERFACE_AGE 0 + +/* Define the location where the catalogs will be installed */ +#define GLIB_LOCALE_DIR "NONE/share/locale" + +/* Define to the GLIB major version */ +#define GLIB_MAJOR_VERSION 2 + +/* Define to the GLIB micro version */ +#define GLIB_MICRO_VERSION 0 + +/* Define to the GLIB minor version */ +#define GLIB_MINOR_VERSION 48 + +/* A 'va_copy' style function */ +#ifndef _MSC_VER +#define G_VA_COPY va_copy +#else /* _MSC_VER */ +/* #undef G_VA_COPY */ +#endif /* _MSC_VER */ + +/* 'va_lists' cannot be copies as values */ +/* #undef G_VA_COPY_AS_ARRAY */ + +/* Define to 1 if you have `alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define to 1 if you have and it should be used (not on Ultrix). + */ +/* #undef HAVE_ALLOCA_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_ATTR_XATTR_H */ + +/* Define to 1 if you have the `bind_textdomain_codeset' function. */ +#define HAVE_BIND_TEXTDOMAIN_CODESET 1 + +#if (_MSC_VER >= 1900) +/* Define if you have a version of the snprintf function with semantics as + specified by the ISO C99 standard. */ +#define HAVE_C99_SNPRINTF 1 + +/* Define if you have a version of the vsnprintf function with semantics as + specified by the ISO C99 standard. */ +#define HAVE_C99_VSNPRINTF 1 +#endif + +/* define to 1 if Carbon is available */ +/* #undef HAVE_CARBON */ + +/* Define to 1 if you have the `clock_gettime' function. */ +/* #undef HAVE_CLOCK_GETTIME */ + +/* define to 1 if Cocoa is available */ +/* #undef HAVE_COCOA */ + +/* Have nl_langinfo (CODESET) */ +/* #undef HAVE_CODESET */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_CRT_EXTERNS_H */ + +/* Define if dbus-1 is available */ +/* #undef HAVE_DBUS1 */ + +/* Define to 1 if you have the `dcgettext' function. */ +#define HAVE_DCGETTEXT 1 + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#ifndef _MSC_VER +#define HAVE_DIRENT_H 1 +#else +/* #undef HAVE_DIRENT_H */ +#endif + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_DLFCN_H */ + +/* Define to 1 if using dtrace probes. */ +/* #undef HAVE_DTRACE */ + +/* Define to 1 if you have the `endmntent' function. */ +/* #undef HAVE_ENDMNTENT */ + +/* Define to 1 if you have the `endservent' function. */ +/* #undef HAVE_ENDSERVENT */ + +/* we have the eventfd(2) system call */ +/* #undef HAVE_EVENTFD */ + +/* Define to 1 if you have the `fallocate' function. */ +/* #undef HAVE_FALLOCATE */ + +/* Define if we have FAM */ +/* #undef HAVE_FAM */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_FAM_H */ + +/* Define if we have FAMNoExists in fam */ +/* #undef HAVE_FAM_NO_EXISTS */ + +/* Define to 1 if you have the `fchmod' function. */ +/* #undef HAVE_FCHMOD */ + +/* Define to 1 if you have the `fchown' function. */ +/* #undef HAVE_FCHOWN */ + +/* Define to 1 if you have the `fdwalk' function. */ +/* #undef HAVE_FDWALK */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_FSTAB_H */ + +/* Define to 1 if you have the `fsync' function. */ +/* #undef HAVE_FSYNC */ + +/* we have the futex(2) system call */ +/* #undef HAVE_FUTEX */ + +/* Define to 1 if you have the `getc_unlocked' function. */ +/* #undef HAVE_GETC_UNLOCKED */ + +/* Define to 1 if you have the `getfsstat' function. */ +/* #undef HAVE_GETFSSTAT */ + +/* Define to 1 if you have the `getmntent_r' function. */ +/* #undef HAVE_GETMNTENT_R */ + +/* Define to 1 if you have the `getprotobyname_r' function. */ +/* #undef HAVE_GETPROTOBYNAME_R */ + +/* Define to 1 if you have the `getresuid' function. */ +/* #undef HAVE_GETRESUID */ + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#define HAVE_GETTEXT 1 + +/* Define to 1 if you have the `getvfsstat' function. */ +/* #undef HAVE_GETVFSSTAT */ + +/* Define to 1 if you have the `gmtime_r' function. */ +/* #undef HAVE_GMTIME_R */ + +/* define to use system printf */ +/* #undef HAVE_GOOD_PRINTF */ + +/* Define to 1 if you have the `hasmntopt' function. */ +/* #undef HAVE_HASMNTOPT */ + +/* Target the Windows XP API */ +#ifndef _WIN32_WINNT +#define _WIN32_WINNT 0x0501 +#endif + +#if _WIN32_WINNT >= 0x0600 +/* if_indextoname() and if_nametoindex() are available on Windows Vista/Server + * 2008 or later, so we can make use of them when building agaist Vista/Server + * 2008 or later. + */ + +/* Define to 1 if you have the `if_indextoname' function. */ +#define HAVE_IF_INDEXTONAME 1 + +/* Define to 1 if you have the `if_nametoindex' function. */ +#define HAVE_IF_NAMETOINDEX 1 + +#endif + +/* Define to 1 if you have the `inotify_init1' function. */ +/* #undef HAVE_INOTIFY_INIT1 */ + +/* define to support printing 64-bit integers with format I64 */ +#define HAVE_INT64_AND_I64 1 + +/* Define if you have the 'intmax_t' type in or . */ +#if !defined (_MSC_VER) || (_MSC_VER >= 1600) +#define HAVE_INTMAX_T 1 +#else /* !_MSC_VER || _MSC_VER >= 1600 */ +/* #undef HAVE_INTMAX_T */ +#endif /* _MSC_VER < 1600 */ + +/* Define to 1 if you have the header file. */ +#if !defined (_MSC_VER) || (_MSC_VER >= 1800) +#define HAVE_INTTYPES_H 1 +#else /* !_MSC_VER || _MSC_VER >= 1800 */ +/* #undef HAVE_INTTYPES_H */ +#endif /* _MSC_VER < 1800 */ + +/* Define if exists, doesn't clash with , and + declares uintmax_t. */ +#ifndef _MSC_VER +#define HAVE_INTTYPES_H_WITH_UINTMAX 1 +#else /* !_MSC_VER */ +/* #undef HAVE_INTTYPES_H_WITH_UINTMAX */ +#endif /* _MSC_VER */ + +/* Define if we have struct ip_mreqn */ +/* #undef HAVE_IP_MREQN */ + +/* Define to 1 if you have the `issetugid' function. */ +/* #undef HAVE_ISSETUGID */ + +/* Define to 1 if you have the `kevent' function. */ +/* #undef HAVE_KEVENT */ + +/* Define to 1 if you have the `kqueue' function. */ +/* #undef HAVE_KQUEUE */ + +/* Define if you have and nl_langinfo(CODESET). */ +/* #undef HAVE_LANGINFO_CODESET */ + +/* Have nl_langinfo (_NL_CTYPE_OUTDIGITn_MB) */ +/* #undef HAVE_LANGINFO_OUTDIGIT */ + +/* Have nl_langinfo (PM_STR) */ +/* #undef HAVE_LANGINFO_TIME */ + +/* Define to 1 if you have the `lchmod' function. */ +/* #undef HAVE_LCHMOD */ + +/* Define to 1 if you have the `lchown' function. */ +/* #undef HAVE_LCHOWN */ + +/* Define if your file defines LC_MESSAGES. */ +/* #undef HAVE_LC_MESSAGES */ + +/* Define if you have the __libc_enable_secure variable (GNU libc, eglibc) */ +/* #undef HAVE_LIBC_ENABLE_SECURE */ + +/* Define if libelf is available */ +/* #undef HAVE_LIBELF */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_LINUX_MAGIC_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define to 1 if you have the `localtime_r' function. */ +/* #undef HAVE_LOCALTIME_R */ + +/* Define if you have the 'long double' type. */ +#define HAVE_LONG_DOUBLE 1 + +/* Define if you have the 'long long' type. */ +#ifndef _MSC_VER +#define HAVE_LONG_LONG 1 +#else /* _MSC_VER */ +/* #undef HAVE_LONG_LONG */ +#endif /* _MSC_VER */ + +/* define if system printf can print long long */ +#define HAVE_LONG_LONG_FORMAT 1 + +/* Define to 1 if you have the `lstat' function. */ +/* #undef HAVE_LSTAT */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MACH_MACH_TIME_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MALLOC_H 1 + +/* Define to 1 if you have the `memalign' function. */ +/* #undef HAVE_MEMALIGN */ + +/* Define to 1 if you have the `memmem' function. */ +/* #undef HAVE_MEMMEM */ + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `mmap' function. */ +/* #undef HAVE_MMAP */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_MNTENT_H */ + +/* Define to 1 if you have the header file, and it defines `DIR'. */ +/* #undef HAVE_NDIR_H */ + +/* We have AF_NETLINK sockets */ +/* #undef HAVE_NETLINK */ + +/* Define to 1 if you have the `newlocale' function. */ +/* #undef HAVE_NEWLOCALE */ + +/* Have non-POSIX function getgrgid_r */ +/* #undef HAVE_NONPOSIX_GETGRGID_R */ + +/* Have non-POSIX function getpwuid_r */ +/* #undef HAVE_NONPOSIX_GETPWUID_R */ + +/* open option O_DIRECTORY */ +/* #undef HAVE_OPEN_O_DIRECTORY */ + +/* Define to 1 if you have the `pipe2' function. */ +/* #undef HAVE_PIPE2 */ + +/* Define to 1 if you have the `poll' function. */ +/* #undef HAVE_POLL */ + +/* Have POSIX function getgrgid_r */ +/* #undef HAVE_POSIX_GETGRGID_R */ + +/* Have POSIX function getpwuid_r */ +/* #undef HAVE_POSIX_GETPWUID_R */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `prlimit' function. */ +/* #undef HAVE_PRLIMIT */ + +/* Have function pthread_attr_setstacksize */ +/* #undef HAVE_PTHREAD_ATTR_SETSTACKSIZE */ + +/* Have function pthread_condattr_setclock */ +/* #undef HAVE_PTHREAD_CONDATTR_SETCLOCK */ + +/* Have function pthread_cond_timedwait_relative_np */ +/* #undef HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP */ + +/* Define to 1 if the system has the type `ptrdiff_t'. */ +#define HAVE_PTRDIFF_T 1 + +/* Define to 1 if you have the `readlink' function. */ +/* #undef HAVE_READLINK */ + +/* Define to 1 if you have the 'res_init' function. */ +/* #undef HAVE_RES_INIT */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SCHED_H */ + +/* Define to 1 if libselinux is available */ +/* #undef HAVE_SELINUX */ + +/* Define to 1 if you have the `sendmmsg` function */ +/* #undef HAVE_SENDMMSG */ + +/* Define to 1 if you have the `recvmmsg` function */ +/* #undef HAVE_RECVMMSG */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SELINUX_SELINUX_H */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef HAVE_SETENV */ + +/* Define to 1 if you have the `setmntent' function. */ +/* #undef HAVE_SETMNTENT */ + +/* Define if you have the 'sig_atomic_t' type. */ +#define HAVE_SIG_ATOMIC_T 1 + +/* Define to 1 if you have the `snprintf' function. */ +#if !defined (_MSC_VER) || (_MSC_VER >= 1900) +#define HAVE_SNPRINTF 1 +#ifdef __DMC__ +#define snprintf _snprintf +#endif +#else /* !_MSC_VER || _MSC_VER >= 1900 */ +/* #undef HAVE_SNPRINTF */ +#endif /* _MSC_VER < 1900 */ + +/* Define to 1 if you have the `splice' function. */ +/* #undef HAVE_SPLICE */ + +/* Define to 1 if you have the `statfs' function. */ +/* #undef HAVE_STATFS */ + +/* Define to 1 if you have the `statvfs' function. */ +/* #undef HAVE_STATVFS */ + +/* Define to 1 if you have the header file. */ +#ifndef _MSC_VER +#define HAVE_STDINT_H 1 +#else /* _MSC_VER */ +#if (_MSC_VER >= 1600) /*VS 2010 ships with stdint.h*/ +#define HAVE_STDINT_H 1 +#else +/* #undef HAVE_STDINT_H */ +#endif +#endif /* _MSC_VER */ + +/* Define if exists, doesn't clash with , and declares + uintmax_t. */ +#ifndef _MSC_VER +#define HAVE_STDINT_H_WITH_UINTMAX 1 +#else /* _MSC_VER */ +#if (_MSC_VER >= 1600) +#define HAVE_STDINT_H_WITH_UINTMAX 1 +#else +/* #undef HAVE_STDINT_H_WITH_UINTMAX */ +#endif +#endif /* _MSC_VER */ + +/* Define to 1 if you have the `stpcpy' function. */ +/* #undef HAVE_STPCPY */ + +/* Define to 1 if you have the `strcasecmp' function. */ +#if defined(_MSC_VER) +#define strcasecmp _stricmp +#endif /* _MSC_VER uses _stricmp, which is identical to strcasecmp */ + +#if !defined(__DMC__) +#define HAVE_STRCASECMP 1 +#endif /* _MSC_VER or __gcc__ */ + +/* Define to 1 if you have the header file. */ +#if !defined(_MSC_VER) && !defined(__DMC__) +#define HAVE_STRINGS_H 1 +#else /* _MSC_VER or __DMC__ */ +/* #undef HAVE_STRINGS_H */ +#endif /* _MSC_VER or __DMC__ */ + +/* Have functions strlcpy and strlcat */ +/* #undef HAVE_STRLCPY */ + +/* Define to 1 if you have the `strncasecmp' function. */ +#if !defined(__DMC__) +#if defined(_MSC_VER) +#define strncasecmp _strnicmp +#endif /* _MSC_VER uses _strnicmp, which is identical to strncasecmp */ +#define HAVE_STRNCASECMP 1 +#else /* __DMC__ */ +/* #undef HAVE_STRNCASECMP */ +#endif /* __DMC__ */ + +/* Define to 1 if you have the `strsignal' function. */ +/* #undef HAVE_STRSIGNAL */ + +/* Define to 1 if you have the `strtod_l' function. */ +/* #undef HAVE_STRTOD_L */ + +/* Define to 1 if you have the `strtoll_l' function. */ +/* #undef HAVE_STRTOLL_L */ + +/* Define to 1 if you have the `strtoull_l' function. */ +/* #undef HAVE_STRTOULL_L */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define to 1 if `f_bavail' is a member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_BAVAIL */ + +/* Define to 1 if `f_fstypename' is a member of `struct statfs'. */ +/* #undef HAVE_STRUCT_STATFS_F_FSTYPENAME */ + +/* Define to 1 if `f_basetype' is a member of `struct statvfs'. */ +/* #undef HAVE_STRUCT_STATVFS_F_BASETYPE */ + +/* Define to 1 if `f_fstypename' is a member of `struct statvfs'. */ +/* #undef HAVE_STRUCT_STATVFS_F_FSTYPENAME */ + +/* Define to 1 if `st_atimensec' is a member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_ATIMENSEC */ + +/* Define to 1 if `st_atim.tv_nsec' is a member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC */ + +/* Define to 1 if `st_blksize' is a member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_BLKSIZE */ + +/* Define to 1 if `st_blocks' is a member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_BLOCKS */ + +/* Define to 1 if `st_ctimensec' is a member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_CTIMENSEC */ + +/* Define to 1 if `st_ctim.tv_nsec' is a member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC */ + +/* Define to 1 if `st_mtimensec' is a member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_MTIMENSEC */ + +/* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ +/* #undef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC */ + +/* Define to 1 if `tm_gmtoff' is a a member of `struct tm'. */ +/* #undef HAVE_STRUCT_TM_TM_GMTOFF */ + +/* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ +/* #undef HAVE_STRUCT_TM___TM_GMTOFF */ + +/* Define to 1 if you have the `symlink' function. */ +/* #undef HAVE_SYMLINK */ + +/* Define to 1 if you have the `sysctlbyname' function. */ +/* #undef HAVE_SYSCTLBYNAME */ + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +/* #undef HAVE_SYS_DIR_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_EVENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_INOTIFY_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_MNTCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_MNTTAB_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_MOUNT_H */ + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +/* #undef HAVE_SYS_NDIR_H */ + +/* Define to 1 if you have the header file. */ +#if !defined(_MSC_VER) && !defined(__DMC__) +#define HAVE_SYS_PARAM_H 1 +#else /* _MSC_VER or __DMC__ */ +/* #undef HAVE_SYS_PARAM_H */ +#endif /* _MSC_VER or __DMC__ */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_PRCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_RESOURCE_H */ + +/* found fd_set in sys/select.h */ +/* #undef HAVE_SYS_SELECT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_STATFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_SYSCTL_H */ + +/* Define to 1 if you have the header file. */ +#ifndef _MSC_VER +#define HAVE_SYS_TIME_H 1 +#else /* _MSC_VER */ +/* #undef HAVE_SYS_TIME_H */ +#endif /* _MSC_VER */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_VFSTAB_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_VFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_VMOUNT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_SYS_XATTR_H */ + +/* Define to 1 if you have the `timegm' function. */ +/* #undef HAVE_TIMEGM */ + +/* Define if your printf function family supports positional parameters as + specified by Unix98. */ +/* #undef HAVE_UNIX98_PRINTF */ + +/* Define to 1 if you have the `unsetenv' function. */ +/* #undef HAVE_UNSETENV */ + +/* Define to 1 if you have the `uselocale' function. */ +/* #undef HAVE_USELOCALE */ + +/* Define to 1 if you have the `utimes' function. */ +/* #undef HAVE_UTIMES */ + +/* Define to 1 if you have the `valloc' function. */ +/* #undef HAVE_VALLOC */ + +/* Define to 1 if you have the header file. */ +#if !defined(_MSC_VER) && !defined(__DMC__) +#define HAVE_VALUES_H 1 +#else /* _MSC_VER or __DMC__ */ +/* #undef HAVE_VALUES_H */ +#endif /* _MSC_VER or __DMC__ */ + +/* Define to 1 if you have the `vasprintf' function. */ +#define HAVE_VASPRINTF 1 + +/* Define to 1 if you have the `vsnprintf' function. */ +#if !defined (_MSC_VER) || (_MSC_VER >= 1500) +#define HAVE_VSNPRINTF 1 +#ifdef __DMC__ +#define vsnprintf _vsnprintf +#endif +#else /* !_MSC_VER || _MSC_VER >= 1500 */ +/* #undef HAVE_VSNPRINTF */ +#endif /* _MSC_VER < 1500 */ + +/* Define if you have the 'wchar_t' type. */ +#define HAVE_WCHAR_T 1 + +/* Define to 1 if you have the `wcslen' function. */ +#define HAVE_WCSLEN 1 + +/* Define if you have the 'wint_t' type. */ +#define HAVE_WINT_T 1 + +/* Define to 1 if xattr is available */ +/* #undef HAVE_XATTR */ + +/* Define to 1 if xattr API uses XATTR_NOFOLLOW */ +/* #undef HAVE_XATTR_NOFOLLOW */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_XLOCALE_H */ + +/* Define to 1 if you have the `_NSGetEnviron' function. */ +/* #undef HAVE__NSGETENVIRON */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Define to 1 if `major', `minor', and `makedev' are declared in . + */ +/* #undef MAJOR_IN_MKDEV */ + +/* Define to 1 if `major', `minor', and `makedev' are declared in + . */ +/* #undef MAJOR_IN_SYSMACROS */ + +/* didn't find fd_set */ +#define NO_FD_SET 1 + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +/* #undef NO_MINUS_C_MINUS_O */ + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "http://bugzilla.gnome.org/enter_bug.cgi?product=glib" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "glib" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "glib 2.48.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "glib" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "2.48.0" + +/* define if posix_memalign() can allocate any size */ +/* #undef POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS */ + +/* The size of `char', as computed by sizeof. */ +#define SIZEOF_CHAR 1 + +/* The size of `int', as computed by sizeof. */ +#define SIZEOF_INT 4 + +/* The size of `long', as computed by sizeof. */ +#define SIZEOF_LONG 4 + +/* The size of `long long', as computed by sizeof. */ +#ifndef _MSC_VER +#define SIZEOF_LONG_LONG 8 +#else /* _MSC_VER */ +#define SIZEOF_LONG_LONG 0 +#endif /* _MSC_VER */ + +/* The size of `short', as computed by sizeof. */ +#define SIZEOF_SHORT 2 + +/* The size of `size_t', as computed by sizeof. */ +#define SIZEOF_SIZE_T 4 + +/* The size of `void *', as computed by sizeof. */ +#ifdef _MSC_VER +#if (defined(_M_X64) || defined(_M_AMD64)) +#define SIZEOF_VOID_P 8 +#elif (defined(_M_IX86)) +#define SIZEOF_VOID_P 4 +#endif +#else +#define SIZEOF_VOID_P 4 +#endif + +/* The size of `__int64', as computed by sizeof. */ +#define SIZEOF___INT64 8 + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at runtime. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ + +/* Number of arguments to statfs() */ +/* #undef STATFS_ARGS */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Use no threads */ +/* #undef THREADS_NONE */ + +/* Use pthreads */ +/* #undef THREADS_POSIX */ + +/* Use w32 threads */ +#define THREADS_WIN32 1 + +/* Using GNU libiconv */ +/* #undef USE_LIBICONV_GNU */ + +/* Using a native implementation of iconv in a separate library */ +#define USE_LIBICONV_NATIVE 1 + +/* Define to use statfs() */ +/* #undef USE_STATFS */ + +/* Define to use statvfs() */ +/* #undef USE_STATVFS */ + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +/* # undef _ALL_SOURCE */ +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +/* # undef _GNU_SOURCE */ +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +/* # undef _POSIX_PTHREAD_SEMANTICS */ +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +/* # undef _TANDEM_SOURCE */ +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +/* # undef __EXTENSIONS__ */ +#endif + +/* using the system-supplied PCRE library */ +/* This is defined in the *_PCRE MSVC project configs */ +/* #undef USE_SYSTEM_PCRE */ + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +/* # undef WORDS_BIGENDIAN */ +# endif +#endif + +/* Enable large inode numbers on Mac OS X 10.5. */ +#ifndef _DARWIN_USE_64_BIT_INODE +/* # define _DARWIN_USE_64_BIT_INODE 1 */ +#endif + +/* Number of bits in a file offset, on hosts where this is settable. */ +/* #undef _FILE_OFFSET_BITS */ + +/* defines how to decorate public symbols while building */ +#ifdef _MSC_VER +#define _GLIB_EXTERN __declspec (dllexport) extern +#else +#define _GLIB_EXTERN __attribute__((visibility("default"))) __declspec (dllexport) extern +#endif + +/* Define for large files, on AIX-style hosts. */ +/* #undef _LARGE_FILES */ + +/* Define to 1 if on MINIX. */ +/* #undef _MINIX */ + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* Needed to get declarations for msg_control and msg_controllen on Solaris */ +/* #undef _XOPEN_SOURCE */ + +/* Needed to get declarations for msg_control and msg_controllen on Solaris */ +/* #undef _XOPEN_SOURCE_EXTENDED */ + +/* Needed to get declarations for msg_control and msg_controllen on Solaris */ +/* #undef __EXTENSIONS__ */ + +/* compiler supports atomic operations */ +/* #undef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 */ + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to long or long long if and don't define. */ +/* #undef intmax_t */ + +/* Define to empty if the C compiler doesn't support this keyword. */ +/* #undef signed */ + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ diff --git a/config.h.win32.in b/config.h.win32.in index 4349010..1da7bd3 100644 --- a/config.h.win32.in +++ b/config.h.win32.in @@ -55,23 +55,6 @@ /* Define to the GLIB minor version */ #define GLIB_MINOR_VERSION @GLIB_MINOR_VERSION@ -/* Have inline keyword */ -#ifndef _MSC_VER -#define G_HAVE_INLINE 1 -#else /* _MSC_VER */ -/* #undef G_HAVE_INLINE */ -#endif /* _MSC_VER */ - -/* Have __inline keyword */ -#define G_HAVE___INLINE 1 - -/* Have __inline__ keyword */ -#if !defined(_MSC_VER) && !defined(__DMC__) -#define G_HAVE___INLINE__ 1 -#else /* _MSC_VER or __DMC__ */ -/* #undef G_HAVE___INLINE__ */ -#endif /* _MSC_VER or __DMC__ */ - /* A 'va_copy' style function */ #ifndef _MSC_VER #define G_VA_COPY va_copy @@ -95,13 +78,15 @@ /* Define to 1 if you have the `bind_textdomain_codeset' function. */ #define HAVE_BIND_TEXTDOMAIN_CODESET 1 +#if (_MSC_VER >= 1900) /* Define if you have a version of the snprintf function with semantics as specified by the ISO C99 standard. */ -/* #undef HAVE_C99_SNPRINTF */ +#define HAVE_C99_SNPRINTF 1 /* Define if you have a version of the vsnprintf function with semantics as specified by the ISO C99 standard. */ -/* #undef HAVE_C99_VSNPRINTF */ +#define HAVE_C99_VSNPRINTF 1 +#endif /* define to 1 if Carbon is available */ /* #undef HAVE_CARBON */ @@ -233,27 +218,24 @@ #define HAVE_INT64_AND_I64 1 /* Define if you have the 'intmax_t' type in or . */ -#ifndef _MSC_VER -#define HAVE_INTMAX_T 1 -#else /* _MSC_VER */ -#if (_MSC_VER >= 1600) +#if !defined (_MSC_VER) || (_MSC_VER >= 1600) #define HAVE_INTMAX_T 1 -#endif +#else /* !_MSC_VER || _MSC_VER >= 1600 */ /* #undef HAVE_INTMAX_T */ -#endif /* _MSC_VER */ +#endif /* _MSC_VER < 1600 */ /* Define to 1 if you have the header file. */ -#ifndef _MSC_VER +#if !defined (_MSC_VER) || (_MSC_VER >= 1800) #define HAVE_INTTYPES_H 1 -#else /* _MSC_VER */ +#else /* !_MSC_VER || _MSC_VER >= 1800 */ /* #undef HAVE_INTTYPES_H */ -#endif /* _MSC_VER */ +#endif /* _MSC_VER < 1800 */ /* Define if exists, doesn't clash with , and declares uintmax_t. */ #ifndef _MSC_VER #define HAVE_INTTYPES_H_WITH_UINTMAX 1 -#else /* _MSC_VER */ +#else /* !_MSC_VER */ /* #undef HAVE_INTTYPES_H_WITH_UINTMAX */ #endif /* _MSC_VER */ @@ -402,6 +384,9 @@ /* Define to 1 if you have the `sendmmsg` function */ /* #undef HAVE_SENDMMSG */ +/* Define to 1 if you have the `recvmmsg` function */ +/* #undef HAVE_RECVMMSG */ + /* Define to 1 if you have the header file. */ /* #undef HAVE_SELINUX_SELINUX_H */ @@ -415,14 +400,14 @@ #define HAVE_SIG_ATOMIC_T 1 /* Define to 1 if you have the `snprintf' function. */ -#ifndef _MSC_VER +#if !defined (_MSC_VER) || (_MSC_VER >= 1900) #define HAVE_SNPRINTF 1 #ifdef __DMC__ #define snprintf _snprintf #endif -#else /* _MSC_VER */ +#else /* !_MSC_VER || _MSC_VER >= 1900 */ /* #undef HAVE_SNPRINTF */ -#endif /* _MSC_VER */ +#endif /* _MSC_VER < 1900 */ /* Define to 1 if you have the `splice' function. */ /* #undef HAVE_SPLICE */ @@ -654,17 +639,14 @@ #define HAVE_VASPRINTF 1 /* Define to 1 if you have the `vsnprintf' function. */ -#ifndef _MSC_VER +#if !defined (_MSC_VER) || (_MSC_VER >= 1500) #define HAVE_VSNPRINTF 1 #ifdef __DMC__ #define vsnprintf _vsnprintf #endif -#else /* _MSC_VER */ -#if (_MSC_VER >= 1500) -#define HAVE_VSNPRINTF 1 -#endif /* VS 2008+ has vsnprintf */ +#else /* !_MSC_VER || _MSC_VER >= 1500 */ /* #undef HAVE_VSNPRINTF */ -#endif /* _MSC_VER */ +#endif /* _MSC_VER < 1500 */ /* Define if you have the 'wchar_t' type. */ #define HAVE_WCHAR_T 1 diff --git a/config.sub b/config.sub new file mode 100755 index 0000000..1acc966 --- /dev/null +++ b/config.sub @@ -0,0 +1,1813 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2015 Free Software Foundation, Inc. + +timestamp='2015-08-20' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2015 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/configure b/configure new file mode 100755 index 0000000..32a6f4b --- /dev/null +++ b/configure @@ -0,0 +1,32584 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for glib 2.48.0. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: http://bugzilla.gnome.org/enter_bug.cgi?product=glib +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +as_awk_strverscmp=' + # Use only awk features that work with 7th edition Unix awk (1978). + # My, what an old awk you have, Mr. Solaris! + END { + while (length(v1) && length(v2)) { + # Set d1 to be the next thing to compare from v1, and likewise for d2. + # Normally this is a single character, but if v1 and v2 contain digits, + # compare them as integers and fractions as strverscmp does. + if (v1 ~ /^[0-9]/ && v2 ~ /^[0-9]/) { + # Split v1 and v2 into their leading digit string components d1 and d2, + # and advance v1 and v2 past the leading digit strings. + for (len1 = 1; substr(v1, len1 + 1) ~ /^[0-9]/; len1++) continue + for (len2 = 1; substr(v2, len2 + 1) ~ /^[0-9]/; len2++) continue + d1 = substr(v1, 1, len1); v1 = substr(v1, len1 + 1) + d2 = substr(v2, 1, len2); v2 = substr(v2, len2 + 1) + if (d1 ~ /^0/) { + if (d2 ~ /^0/) { + # Compare two fractions. + while (d1 ~ /^0/ && d2 ~ /^0/) { + d1 = substr(d1, 2); len1-- + d2 = substr(d2, 2); len2-- + } + if (len1 != len2 && ! (len1 && len2 && substr(d1, 1, 1) == substr(d2, 1, 1))) { + # The two components differ in length, and the common prefix + # contains only leading zeros. Consider the longer to be less. + d1 = -len1 + d2 = -len2 + } else { + # Otherwise, compare as strings. + d1 = "x" d1 + d2 = "x" d2 + } + } else { + # A fraction is less than an integer. + exit 1 + } + } else { + if (d2 ~ /^0/) { + # An integer is greater than a fraction. + exit 2 + } else { + # Compare two integers. + d1 += 0 + d2 += 0 + } + } + } else { + # The normal case, without worrying about digits. + d1 = substr(v1, 1, 1); v1 = substr(v1, 2) + d2 = substr(v2, 1, 1); v2 = substr(v2, 2) + } + if (d1 < d2) exit 1 + if (d1 > d2) exit 2 + } + # Beware Solaris /usr/xgp4/bin/awk (at least through Solaris 10), + # which mishandles some comparisons of empty strings to integers. + if (length(v2)) exit 1 + if (length(v1)) exit 2 + } +' +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='glib' +PACKAGE_TARNAME='glib' +PACKAGE_VERSION='2.48.0' +PACKAGE_STRING='glib 2.48.0' +PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=glib' +PACKAGE_URL='' + +ac_unique_file="glib/glib.h" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +gio_INCLUDES +gmodule_INCLUDES +gobject_INCLUDES +glib_INCLUDES +config_h_INCLUDES +GLIB_WARN_CFLAGS +GLIB_HIDDEN_VISIBILITY_CFLAGS +GLIB_LINK_FLAGS +HAVE_DBUS_DAEMON_FALSE +HAVE_DBUS_DAEMON_TRUE +DBUS_DAEMON +HAVE_DBUS1_FALSE +HAVE_DBUS1_TRUE +DBUS1_LIBS +DBUS1_CFLAGS +LTP_GENHTML +LTP +SHTOOL +ABS_TAPSET_DIR +ENABLE_SYSTEMTAP_FALSE +ENABLE_SYSTEMTAP_TRUE +ENABLE_DTRACE_FALSE +ENABLE_DTRACE_TRUE +DTRACE +ENABLE_MAN_FALSE +ENABLE_MAN_TRUE +XMLCATALOG +XML_CATALOG_FILE +XSLTPROC +GTK_DOC_USE_REBASE_FALSE +GTK_DOC_USE_REBASE_TRUE +GTK_DOC_USE_LIBTOOL_FALSE +GTK_DOC_USE_LIBTOOL_TRUE +GTK_DOC_BUILD_PDF_FALSE +GTK_DOC_BUILD_PDF_TRUE +GTK_DOC_BUILD_HTML_FALSE +GTK_DOC_BUILD_HTML_TRUE +ENABLE_GTK_DOC_FALSE +ENABLE_GTK_DOC_TRUE +HAVE_GTK_DOC_FALSE +HAVE_GTK_DOC_TRUE +GTKDOC_DEPS_LIBS +GTKDOC_DEPS_CFLAGS +HTML_DIR +GTKDOC_MKPDF +GTKDOC_REBASE +GTKDOC_CHECK_PATH +GTKDOC_CHECK +CROSS_COMPILING_FALSE +CROSS_COMPILING_TRUE +G_LIBS_EXTRA +PCRE_WARN_CFLAGS +PCRE_REQUIRES +PCRE_LIBS +PCRE_CFLAGS +USE_SYSTEM_PCRE_FALSE +USE_SYSTEM_PCRE_TRUE +HAVE_EVENTFD_FALSE +HAVE_EVENTFD_TRUE +G_THREAD_LIBS_EXTRA +G_THREAD_LIBS_FOR_GTHREAD +G_THREAD_LIBS +G_THREAD_CFLAGS +THREADS_NONE_FALSE +THREADS_NONE_TRUE +THREADS_WIN32_FALSE +THREADS_WIN32_TRUE +THREADS_POSIX_FALSE +THREADS_POSIX_TRUE +GTHREAD_COMPILE_IMPL_DEFINES +PLATFORM_WIN32_FALSE +PLATFORM_WIN32_TRUE +ENABLE_TIMELOOP_FALSE +ENABLE_TIMELOOP_TRUE +PLATFORMDEP +LIBELF_LIBS +LIBELF_CFLAGS +XATTR_LIBS +HAVE_FAM_FALSE +HAVE_FAM_TRUE +FAM_LIBS +HAVE_KQUEUE_FALSE +HAVE_KQUEUE_TRUE +HAVE_INOTIFY_FALSE +HAVE_INOTIFY_TRUE +SELINUX_LIBS +GIO_MODULE_DIR +GIO +GSPAWN +GLIB_DEBUG_FLAGS +G_MODULE_NEED_USCORE +G_MODULE_BROKEN_RTLD_GLOBAL +G_MODULE_HAVE_DLERROR +G_MODULE_LDFLAGS +G_MODULE_PLUGIN_LIBS +G_MODULE_LIBS_EXTRA +G_MODULE_LIBS +G_MODULE_IMPL +G_MODULE_SUPPORTED +HAVE_GOOD_PRINTF_FALSE +HAVE_GOOD_PRINTF_TRUE +HAVE_NETLINK_FALSE +HAVE_NETLINK_TRUE +NETWORK_LIBS +NAMESER_COMPAT_INCLUDE +WSPIAPI_INCLUDE +GLIBC21 +HAVE_SUNSTUDIO_VISIBILITY_FALSE +HAVE_SUNSTUDIO_VISIBILITY_TRUE +HAVE_GNUC_VISIBILITY_FALSE +HAVE_GNUC_VISIBILITY_TRUE +ALLOCA +OS_WIN32_AND_DLL_COMPILATION_FALSE +OS_WIN32_AND_DLL_COMPILATION_TRUE +GLIB_WIN32_STATIC_COMPILATION_DEFINE +CXXCPP +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +ac_ct_AR +AR +LN_S +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +SED +LIBTOOL +OBJDUMP +AS +ICONV_LIBS +GETTEXT_PACKAGE +MKINSTALLDIRS +POSUB +POFILES +PO_IN_DATADIR_FALSE +PO_IN_DATADIR_TRUE +INTLLIBS +INSTOBJEXT +GMOFILES +DATADIRNAME +CATOBJEXT +CATALOGS +XGETTEXT +GMSGFMT +MSGFMT_OPTS +MSGFMT +USE_NLS +CONFIG_STATUS_DEPENDENCIES +LIBFFI_LIBS +LIBFFI_CFLAGS +ZLIB_LIBS +ZLIB_CFLAGS +pkgpyexecdir +pyexecdir +pkgpythondir +pythondir +PYTHON_PLATFORM +PYTHON_EXEC_PREFIX +PYTHON_PREFIX +PYTHON_VERSION +PYTHON +PERL_PATH +REBUILD +INDENT +PERL +GLIB_EXTRA_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +HAVE_CXX_FALSE +HAVE_CXX_TRUE +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +CXXFLAGS +ac_ct_CXX +CXX +HAVE_GLIB_RUNTIME_LIBDIR_FALSE +HAVE_GLIB_RUNTIME_LIBDIR_TRUE +GLIB_RUNTIME_LIBDIR +installed_testdir +installed_test_metadir +ENABLE_ALWAYS_BUILD_TESTS_FALSE +ENABLE_ALWAYS_BUILD_TESTS_TRUE +ENABLE_INSTALLED_TESTS_FALSE +ENABLE_INSTALLED_TESTS_TRUE +COCOA_LIBS +CARBON_LIBS +MS_LIB_AVAILABLE_FALSE +MS_LIB_AVAILABLE_TRUE +ms_librarian +DLLTOOL +RANLIB +NM +WINDRES +OS_COCOA_FALSE +OS_COCOA_TRUE +OS_CARBON_FALSE +OS_CARBON_TRUE +OS_LINUX_FALSE +OS_LINUX_TRUE +OS_UNIX_FALSE +OS_UNIX_TRUE +OS_WIN32_X64_FALSE +OS_WIN32_X64_TRUE +OS_WIN32_FALSE +OS_WIN32_TRUE +LIB_EXE_MACHINE_FLAG +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +HAVE_GCC_FALSE +HAVE_GCC_TRUE +EGREP +GREP +CPP +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +LT_CURRENT_MINUS_AGE +LT_AGE +LT_REVISION +LT_CURRENT +LT_RELEASE +GLIB_BINARY_AGE +GLIB_INTERFACE_AGE +GLIB_VERSION +GLIB_MICRO_VERSION +GLIB_MINOR_VERSION +GLIB_MAJOR_VERSION +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_maintainer_mode +enable_dependency_tracking +enable_debug +enable_gc_friendly +enable_mem_pools +enable_rebuilds +enable_installed_tests +enable_always_build_tests +with_runtime_libdir +enable_largefile +with_python +with_libiconv +enable_static +enable_shared +with_pic +enable_fast_install +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock +enable_included_printf +with_gio_module_dir +enable_selinux +enable_fam +enable_xattr +enable_libelf +with_threads +with_pcre +with_html_dir +enable_gtk_doc +enable_gtk_doc_html +enable_gtk_doc_pdf +enable_man +with_xml_catalog +enable_dtrace +enable_systemtap +with_tapset_install_dir +enable_coverage +enable_Bsymbolic +enable_znodelete +enable_compile_warnings +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +CXX +CXXFLAGS +CCC +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +PYTHON +ZLIB_CFLAGS +ZLIB_LIBS +LIBFFI_CFLAGS +LIBFFI_LIBS +LT_SYS_LIBRARY_PATH +CXXCPP +LIBELF_CFLAGS +LIBELF_LIBS +PCRE_CFLAGS +PCRE_LIBS +GTKDOC_DEPS_CFLAGS +GTKDOC_DEPS_LIBS +DBUS1_CFLAGS +DBUS1_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures glib 2.48.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/glib] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of glib 2.48.0:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --disable-maintainer-mode + disable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-debug=[no/minimum/yes] + turn on debugging [default=minimum] + --enable-gc-friendly turn on garbage collector friendliness [default=no] + --disable-mem-pools disable all glib memory pools + --disable-rebuilds disable all source autogeneration rules + --enable-installed-tests + Enable installation of some test cases + --enable-always-build-tests + Enable always building tests during 'make all' + --disable-largefile omit support for large files + --enable-static[=PKGS] build static libraries [default=no] + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --enable-included-printf + use included printf [default=auto] + --disable-selinux build without selinux support + --disable-fam don't use fam for file system monitoring + --disable-xattr build without xattr support + --disable-libelf build without libelf support + --enable-gtk-doc use gtk-doc to build documentation [[default=no]] + --enable-gtk-doc-html build documentation in html format [[default=yes]] + --enable-gtk-doc-pdf build documentation in pdf format [[default=no]] + --enable-man generate man pages [default=auto] + --enable-dtrace include tracing support for dtrace + --enable-systemtap include tracing support for systemtap + --enable-coverage enable coverage testing with gcov + --disable-Bsymbolic avoid linking with -Bsymbolic + --disable-znodelete avoid linking with -z,nodelete + --disable-compile-warnings + Don't use builtin compiler warnings + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-runtime-libdir=RELPATH + install runtime libraries relative to libdir + --with-python=PATH Path to Python interpreter; searches $PATH if only a + program name is given; if not given, searches for a + few standard names such as "python3" or "python2" + --with-libiconv=[no/gnu/native] + use the libiconv library + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + --with-gio-module-dir=DIR + load gio modules from this directory + [LIBDIR/gio/modules] + --with-threads=[posix/win32] + specify a thread implementation to use + --with-pcre=[internal/system] + whether to use system PCRE [default=system] + --with-html-dir=PATH path to installed docs + --with-xml-catalog=CATALOG + path to xml catalog to use + --with-tapset-install-dir=DIR + path where systemtap tapsets are installed + [DATADIR/systemtap/tapset] + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + PYTHON the Python interpreter + ZLIB_CFLAGS C compiler flags for ZLIB, overriding pkg-config + ZLIB_LIBS linker flags for ZLIB, overriding pkg-config + LIBFFI_CFLAGS + C compiler flags for LIBFFI, overriding pkg-config + LIBFFI_LIBS linker flags for LIBFFI, overriding pkg-config + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + CXXCPP C++ preprocessor + LIBELF_CFLAGS + C compiler flags for LIBELF, overriding pkg-config + LIBELF_LIBS linker flags for LIBELF, overriding pkg-config + PCRE_CFLAGS C compiler flags for PCRE, overriding pkg-config + PCRE_LIBS linker flags for PCRE, overriding pkg-config + GTKDOC_DEPS_CFLAGS + C compiler flags for GTKDOC_DEPS, overriding pkg-config + GTKDOC_DEPS_LIBS + linker flags for GTKDOC_DEPS, overriding pkg-config + DBUS1_CFLAGS + C compiler flags for DBUS1, overriding pkg-config + DBUS1_LIBS linker flags for DBUS1, overriding pkg-config + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +glib configure 2.48.0 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ------------------------------------------------------------------- ## +## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=glib ## +## ------------------------------------------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES +# -------------------------------------------- +# Tries to find the compile-time value of EXPR in a program that includes +# INCLUDES, setting VAR accordingly. Returns whether the value could be +# computed +ac_fn_c_compute_int () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= 0)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=0 ac_mid=0 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid; break +else + as_fn_arith $ac_mid + 1 && ac_lo=$as_val + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) < 0)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=-1 ac_mid=-1 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=$ac_mid; break +else + as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + ac_lo= ac_hi= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid +else + as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in #(( +?*) eval "$3=\$ac_lo"; ac_retval=0 ;; +'') ac_retval=1 ;; +esac + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +static long int longval () { return $2; } +static unsigned long int ulongval () { return $2; } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (($2) < 0) + { + long int i = longval (); + if (i != ($2)) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ($2)) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + echo >>conftest.val; read $3 &5 +$as_echo_n "checking for $2.$3... " >&6; } +if eval \${$4+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main () +{ +static $2 ac_aggr; +if (ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$4=yes" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$5 +int +main () +{ +static $2 ac_aggr; +if (sizeof ac_aggr.$3) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$4=yes" +else + eval "$4=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$4 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_member +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by glib $as_me 2.48.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +ac_config_headers="$ac_config_headers config.h" + + + + +# Save this value here, since automake will set cflags later +cflags_set=${CFLAGS:+set} + +am__api_version='1.15' + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='glib' + VERSION='2.48.0' + + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +$as_echo_n "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test $am_uid -le $am_max_uid; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + _am_tools=none + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +$as_echo_n "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test $am_gid -le $am_max_gid; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + _am_tools=none + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +$as_echo_n "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if ${am_cv_prog_tar_ustar+:} false; then : + $as_echo_n "(cached) " >&6 +else + am_cv_prog_tar_ustar=$_am_tool +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +$as_echo "$am_cv_prog_tar_ustar" >&6; } + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=yes +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + +# Support silent build rules. Disable +# by either passing --disable-silent-rules to configure or passing V=1 +# to make +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=0;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + + +GLIB_MAJOR_VERSION=2 +GLIB_MINOR_VERSION=48 +GLIB_MICRO_VERSION=0 +GLIB_INTERFACE_AGE=0 +GLIB_BINARY_AGE=4800 +GLIB_VERSION=2.48.0 + + + + + + + + + +$as_echo "#define GLIB_MAJOR_VERSION 2" >>confdefs.h + + +$as_echo "#define GLIB_MINOR_VERSION 48" >>confdefs.h + + +$as_echo "#define GLIB_MICRO_VERSION 0" >>confdefs.h + + +$as_echo "#define GLIB_INTERFACE_AGE 0" >>confdefs.h + + +$as_echo "#define GLIB_BINARY_AGE 4800" >>confdefs.h + + +# libtool versioning +LT_RELEASE=2.48 +LT_CURRENT=4800 +LT_REVISION=0 +LT_AGE=4800 +LT_CURRENT_MINUS_AGE=0 + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +if test "x$ac_cv_header_minix_config_h" = xyes; then : + MINIX=yes +else + MINIX= +fi + + + if test "$MINIX" = yes; then + +$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h + + +$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h + + +$as_echo "#define _MINIX 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if ${ac_cv_safe_to_define___extensions__+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_safe_to_define___extensions__=yes +else + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } + test $ac_cv_safe_to_define___extensions__ = yes && + $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h + + $as_echo "#define _ALL_SOURCE 1" >>confdefs.h + + $as_echo "#define _GNU_SOURCE 1" >>confdefs.h + + $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h + + + + if test "$GCC" = "yes"; then + HAVE_GCC_TRUE= + HAVE_GCC_FALSE='#' +else + HAVE_GCC_TRUE='#' + HAVE_GCC_FALSE= +fi + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Win32" >&5 +$as_echo_n "checking for Win32... " >&6; } +LIB_EXE_MACHINE_FLAG=X86 +case "$host" in + *-*-mingw*) + glib_native_win32=yes + glib_pid_type='void *' + glib_pollfd_format='%#x' + glib_cv_stack_grows=no + # Unfortunately the mingw implementations of C99-style snprintf and vsnprintf + # don't seem to be quite good enough, at least not in mingw-runtime-3.14. + # (Sorry, I don't know exactly what is the problem, but it is related to + # floating point formatting and decimal point vs. comma.) + # The simple tests in AC_FUNC_VSNPRINTF_C99 and AC_FUNC_SNPRINTF_C99 aren't + # rigorous enough to notice, though. + # So preset the autoconf cache variables. + ac_cv_func_vsnprintf_c99=no + ac_cv_func_snprintf_c99=no + case "$host" in + x86_64-*-*) + LIB_EXE_MACHINE_FLAG=X64 + glib_pollfd_format='%#I64x' + ;; + esac + + +$as_echo "#define _WIN32_WINNT 0x0501" >>confdefs.h + + ;; + *) + glib_native_win32=no + glib_pid_type=int + glib_pollfd_format='%d' + ;; +esac +case $host in + *-*-linux*) + glib_os_linux=yes + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_native_win32" >&5 +$as_echo "$glib_native_win32" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the Android" >&5 +$as_echo_n "checking for the Android... " >&6; } +case $host in + *android*) + glib_native_android="yes" + ;; + *) + glib_native_android="no" + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_native_android" >&5 +$as_echo "$glib_native_android" >&6; } + + + +glib_have_carbon=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mac OS X Carbon support" >&5 +$as_echo_n "checking for Mac OS X Carbon support... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + glib_have_carbon=yes +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_have_carbon" >&5 +$as_echo "$glib_have_carbon" >&6; } + +glib_have_cocoa=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mac OS X Cocoa support" >&5 +$as_echo_n "checking for Mac OS X Cocoa support... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef GNUSTEP_BASE_VERSION +#error "Detected GNUstep, not Cocoa" +#endif + +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + glib_have_cocoa=yes +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_have_cocoa" >&5 +$as_echo "$glib_have_cocoa" >&6; } + + if test "$glib_native_win32" = "yes"; then + OS_WIN32_TRUE= + OS_WIN32_FALSE='#' +else + OS_WIN32_TRUE='#' + OS_WIN32_FALSE= +fi + + if test "$LIB_EXE_MACHINE_FLAG" = "X64"; then + OS_WIN32_X64_TRUE= + OS_WIN32_X64_FALSE='#' +else + OS_WIN32_X64_TRUE='#' + OS_WIN32_X64_FALSE= +fi + + if test "$glib_native_win32" != "yes"; then + OS_UNIX_TRUE= + OS_UNIX_FALSE='#' +else + OS_UNIX_TRUE='#' + OS_UNIX_FALSE= +fi + + if test "$glib_os_linux" = "yes"; then + OS_LINUX_TRUE= + OS_LINUX_FALSE='#' +else + OS_LINUX_TRUE='#' + OS_LINUX_FALSE= +fi + + if test "$glib_have_carbon" = "yes"; then + OS_CARBON_TRUE= + OS_CARBON_FALSE='#' +else + OS_CARBON_TRUE='#' + OS_CARBON_FALSE= +fi + + if test "$glib_have_cocoa" = "yes"; then + OS_COCOA_TRUE= + OS_COCOA_FALSE='#' +else + OS_COCOA_TRUE='#' + OS_COCOA_FALSE= +fi + + +if test "$glib_native_win32" = "yes"; then : + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args. +set dummy ${ac_tool_prefix}windres; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_WINDRES+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$WINDRES"; then + ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_WINDRES="${ac_tool_prefix}windres" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +WINDRES=$ac_cv_prog_WINDRES +if test -n "$WINDRES"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5 +$as_echo "$WINDRES" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_WINDRES"; then + ac_ct_WINDRES=$WINDRES + # Extract the first word of "windres", so it can be a program name with args. +set dummy windres; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_WINDRES+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_WINDRES"; then + ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_WINDRES="windres" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES +if test -n "$ac_ct_WINDRES"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5 +$as_echo "$ac_ct_WINDRES" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_WINDRES" = x; then + WINDRES="no" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + WINDRES=$ac_ct_WINDRES + fi +else + WINDRES="$ac_cv_prog_WINDRES" +fi + + if test "$WINDRES" = no; then + as_fn_error $? "*** Could not find an implementation of windres in your PATH." "$LINENO" 5 + fi + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args. +set dummy ${ac_tool_prefix}nm; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + ac_cv_prog_NM="$NM" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NM="${ac_tool_prefix}nm" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NM=$ac_cv_prog_NM +if test -n "$NM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5 +$as_echo "$NM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NM"; then + ac_ct_NM=$NM + # Extract the first word of "nm", so it can be a program name with args. +set dummy nm; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NM"; then + ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NM="nm" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NM=$ac_cv_prog_ac_ct_NM +if test -n "$ac_ct_NM"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5 +$as_echo "$ac_ct_NM" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NM" = x; then + NM="no" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NM=$ac_ct_NM + fi +else + NM="$ac_cv_prog_NM" +fi + + if test "$NM" = no; then + as_fn_error $? "*** Could not find an implementation of nm in your PATH." "$LINENO" 5 + fi + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + + # Extract the first word of "lib.exe", so it can be a program name with args. +set dummy lib.exe; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ms_librarian+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ms_librarian"; then + ac_cv_prog_ms_librarian="$ms_librarian" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ms_librarian="yes" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_ms_librarian" && ac_cv_prog_ms_librarian="no" +fi +fi +ms_librarian=$ac_cv_prog_ms_librarian +if test -n "$ms_librarian"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ms_librarian" >&5 +$as_echo "$ms_librarian" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + +fi + if test x$ms_librarian = xyes; then + MS_LIB_AVAILABLE_TRUE= + MS_LIB_AVAILABLE_FALSE='#' +else + MS_LIB_AVAILABLE_TRUE='#' + MS_LIB_AVAILABLE_FALSE= +fi + + +if test "x$glib_have_carbon" = "xyes"; then : + + +$as_echo "#define HAVE_CARBON 1" >>confdefs.h + + CARBON_LIBS="-Wl,-framework,Carbon" + LDFLAGS="$LDFLAGS $CARBON_LIBS" + +else + CARBON_LIBS="" +fi + + + +if test "x$glib_have_cocoa" = "xyes"; then : + + +$as_echo "#define HAVE_COCOA 1" >>confdefs.h + + COCOA_LIBS="-Wl,-framework,Foundation" + LDFLAGS="$LDFLAGS $COCOA_LIBS" + + osx_version=`sw_vers -productVersion` + osx_min_version="10.9.0" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking OSX version >= $osx_min_version" >&5 +$as_echo_n "checking OSX version >= $osx_min_version... " >&6; } + as_arg_v1=$osx_version +as_arg_v2=$osx_min_version +awk "$as_awk_strverscmp" v1="$as_arg_v1" v2="$as_arg_v2" /dev/null +case $? in #( + 1) : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "OSX version is too old!" "$LINENO" 5 + ;; #( + 0) : + ;; #( + 2) : + ;; #( + *) : + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + COCOA_LIBS="" +fi + + + +# Check whether --enable-debug was given. +if test "${enable_debug+set}" = set; then : + enableval=$enable_debug; +else + enable_debug=minimum +fi + + +# Check whether --enable-gc_friendly was given. +if test "${enable_gc_friendly+set}" = set; then : + enableval=$enable_gc_friendly; +else + enable_gc_friendly=no +fi + +# Check whether --enable-mem_pools was given. +if test "${enable_mem_pools+set}" = set; then : + enableval=$enable_mem_pools; +else + disable_mem_pools=no +fi + +# Check whether --enable-rebuilds was given. +if test "${enable_rebuilds+set}" = set; then : + enableval=$enable_rebuilds; +else + enable_rebuilds=yes +fi + + + + # Check whether --enable-installed-tests was given. +if test "${enable_installed_tests+set}" = set; then : + enableval=$enable_installed_tests; case ${enableval} in + yes) ENABLE_INSTALLED_TESTS="1" ;; + no) ENABLE_INSTALLED_TESTS="" ;; + *) as_fn_error $? "bad value ${enableval} for --enable-installed-tests" "$LINENO" 5 ;; + esac +fi + + if test "$ENABLE_INSTALLED_TESTS" = "1"; then + ENABLE_INSTALLED_TESTS_TRUE= + ENABLE_INSTALLED_TESTS_FALSE='#' +else + ENABLE_INSTALLED_TESTS_TRUE='#' + ENABLE_INSTALLED_TESTS_FALSE= +fi + + # Check whether --enable-always-build-tests was given. +if test "${enable_always_build_tests+set}" = set; then : + enableval=$enable_always_build_tests; case ${enableval} in + yes) ENABLE_ALWAYS_BUILD_TESTS="1" ;; + no) ENABLE_ALWAYS_BUILD_TESTS="" ;; + *) as_fn_error $? "bad value ${enableval} for --enable-always-build-tests" "$LINENO" 5 ;; + esac +fi + + if test "$ENABLE_ALWAYS_BUILD_TESTS" = "1"; then + ENABLE_ALWAYS_BUILD_TESTS_TRUE= + ENABLE_ALWAYS_BUILD_TESTS_FALSE='#' +else + ENABLE_ALWAYS_BUILD_TESTS_TRUE='#' + ENABLE_ALWAYS_BUILD_TESTS_FALSE= +fi + + if test "$ENABLE_INSTALLED_TESTS" = "1"; then + installed_test_metadir=${datadir}/installed-tests/glib + + installed_testdir=${libexecdir}/installed-tests/glib + + fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable garbage collector friendliness" >&5 +$as_echo_n "checking whether to enable garbage collector friendliness... " >&6; } +if test "x$enable_gc_friendly" = "xyes"; then : + + +$as_echo "#define ENABLE_GC_FRIENDLY_DEFAULT 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to disable memory pools" >&5 +$as_echo_n "checking whether to disable memory pools... " >&6; } +if test "x$disable_mem_pools" = "xno"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +else + + +$as_echo "#define DISABLE_MEM_POOLS 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi + + +# Check whether --with-runtime-libdir was given. +if test "${with_runtime_libdir+set}" = set; then : + withval=$with_runtime_libdir; +else + with_runtime_libdir="" +fi + +GLIB_RUNTIME_LIBDIR="$with_runtime_libdir" + + if test "x$with_runtime_libdir" != "x"; then + HAVE_GLIB_RUNTIME_LIBDIR_TRUE= + HAVE_GLIB_RUNTIME_LIBDIR_FALSE='#' +else + HAVE_GLIB_RUNTIME_LIBDIR_TRUE='#' + HAVE_GLIB_RUNTIME_LIBDIR_FALSE= +fi + + +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="gcc" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CXX_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +class a { int b; } c; + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + CXX= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test "$CXX" != ""; then + HAVE_CXX_TRUE= + HAVE_CXX_FALSE='#' +else + HAVE_CXX_TRUE='#' + HAVE_CXX_FALSE= +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + +# Check whether --enable-largefile was given. +if test "${enable_largefile+set}" = set; then : + enableval=$enable_largefile; +fi + +if test "$enable_largefile" != no; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +$as_echo_n "checking for special C compiler options needed for large files... " >&6; } +if ${ac_cv_sys_largefile_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + if ac_fn_c_try_compile "$LINENO"; then : + break +fi +rm -f core conftest.err conftest.$ac_objext + CC="$CC -n32" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_largefile_CC=' -n32'; break +fi +rm -f core conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +$as_echo "$ac_cv_sys_largefile_CC" >&6; } + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +if ${ac_cv_sys_file_offset_bits+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_file_offset_bits=64; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_file_offset_bits=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +case $ac_cv_sys_file_offset_bits in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF +;; +esac +rm -rf conftest* + if test $ac_cv_sys_file_offset_bits = unknown; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } +if ${ac_cv_sys_large_files+:} false; then : + $as_echo_n "(cached) " >&6 +else + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=no; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_sys_large_files=1; break +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_sys_large_files=unknown + break +done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +$as_echo "$ac_cv_sys_large_files" >&6; } +case $ac_cv_sys_large_files in #( + no | unknown) ;; + *) +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF +;; +esac +rm -rf conftest* + fi + + +fi + + + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.16 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + +if test "x$enable_debug" = "xyes"; then + if test "x$cflags_set" != "x" ; then + case " $CFLAGS " in + *[\ \ ]-g[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -g" ;; + esac + fi + GLIB_DEBUG_FLAGS="-DG_ENABLE_DEBUG" +else + GLIB_DEBUG_FLAGS="-DG_DISABLE_CAST_CHECKS" + + if test "x$enable_debug" = "xno"; then + GLIB_DEBUG_FLAGS="$GLIB_DEBUG_FLAGS -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS" + fi +fi + +# Ensure MSVC-compatible struct packing convention is used when +# compiling for Win32 with gcc. +# What flag to depends on gcc version: gcc3 uses "-mms-bitfields", while +# gcc2 uses "-fnative-struct". +if test x"$glib_native_win32" = xyes; then + if test x"$GCC" = xyes; then + msnative_struct='' + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to get MSVC-compatible struct packing" >&5 +$as_echo_n "checking how to get MSVC-compatible struct packing... " >&6; } + if test -z "$ac_cv_prog_CC"; then + our_gcc="$CC" + else + our_gcc="$ac_cv_prog_CC" + fi + case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in + 2.) + if $our_gcc -v --help 2>/dev/null | grep fnative-struct >/dev/null; then + msnative_struct='-fnative-struct' + fi + ;; + *) + if $our_gcc -v --help 2>/dev/null | grep ms-bitfields >/dev/null; then + msnative_struct='-mms-bitfields' + fi + ;; + esac + if test x"$msnative_struct" = x ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no way" >&5 +$as_echo "no way" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: produced libraries might be incompatible with MSVC-compiled code" >&5 +$as_echo "$as_me: WARNING: produced libraries might be incompatible with MSVC-compiled code" >&2;} + else + CFLAGS="$CFLAGS $msnative_struct" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${msnative_struct}" >&5 +$as_echo "${msnative_struct}" >&6; } + fi + fi +fi +GLIB_EXTRA_CFLAGS="${msnative_struct}" + + + + +# define a MAINT-like variable REBUILD which is set if Perl +# and awk are found, so autogenerated sources can be rebuilt +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +for ac_prog in perl5 perl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PERL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$PERL"; then + ac_cv_prog_PERL="$PERL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_PERL="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +PERL=$ac_cv_prog_PERL +if test -n "$PERL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +$as_echo "$PERL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$PERL" && break +done + +# We would like indent, but don't require it. +# Extract the first word of "indent", so it can be a program name with args. +set dummy indent; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_INDENT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$INDENT"; then + ac_cv_prog_INDENT="$INDENT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_INDENT="indent" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +INDENT=$ac_cv_prog_INDENT +if test -n "$INDENT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INDENT" >&5 +$as_echo "$INDENT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +REBUILD=\# +if test "x$enable_rebuilds" = "xyes" && \ + test -n "$PERL" && \ + $PERL -e 'exit !($] >= 5.002)' > /dev/null 2>&1 && \ + test -n "$AWK" ; then + REBUILD= +fi + + +# Need full path to Perl for glib-mkenums +# +if test "x$PERL" != x ; then + # Extract the first word of "$PERL", so it can be a program name with args. +set dummy $PERL; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PERL_PATH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PERL_PATH in + [\\/]* | ?:[\\/]*) + ac_cv_path_PERL_PATH="$PERL_PATH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PERL_PATH="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PERL_PATH=$ac_cv_path_PERL_PATH +if test -n "$PERL_PATH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL_PATH" >&5 +$as_echo "$PERL_PATH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test "x$PERL_PATH" = x ; then + PERL_PATH="/usr/bin/env perl" +fi + + +# option to specify python interpreter to use; this just sets $PYTHON, so that +# we will fallback to reading $PYTHON if --with-python is not given, and +# python.m4 will get the expected input + +# Check whether --with-python was given. +if test "${with_python+set}" = set; then : + withval=$with_python; PYTHON="$withval" +fi + +if test x"$PYTHON" = xyes; then + as_fn_error $? "--with-python option requires a path or program argument" "$LINENO" 5 +fi + + + + + + + if test -n "$PYTHON"; then + # If the user set $PYTHON, use it and don't search something else. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.5" >&5 +$as_echo_n "checking whether $PYTHON version is >= 2.5... " >&6; } + prog="import sys +# split strings by '.' and convert to numeric. Append some zeros +# because we need at least 4 digits for the hex conversion. +# map returns an iterator in Python 3.0 and a list in 2.x +minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0] +minverhex = 0 +# xrange is not present in Python 3.0 and range returns an iterator +for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] +sys.exit(sys.hexversion < minverhex)" + if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5 + ($PYTHON -c "$prog") >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "Python interpreter is too old" "$LINENO" 5 +fi + am_display_PYTHON=$PYTHON + else + # Otherwise, try each interpreter until we find one that satisfies + # VERSION. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.5" >&5 +$as_echo_n "checking for a Python interpreter with version >= 2.5... " >&6; } +if ${am_cv_pathless_PYTHON+:} false; then : + $as_echo_n "(cached) " >&6 +else + + for am_cv_pathless_PYTHON in python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do + test "$am_cv_pathless_PYTHON" = none && break + prog="import sys +# split strings by '.' and convert to numeric. Append some zeros +# because we need at least 4 digits for the hex conversion. +# map returns an iterator in Python 3.0 and a list in 2.x +minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0] +minverhex = 0 +# xrange is not present in Python 3.0 and range returns an iterator +for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] +sys.exit(sys.hexversion < minverhex)" + if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5 + ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then : + break +fi + done +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5 +$as_echo "$am_cv_pathless_PYTHON" >&6; } + # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. + if test "$am_cv_pathless_PYTHON" = none; then + PYTHON=: + else + # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args. +set dummy $am_cv_pathless_PYTHON; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PYTHON+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PYTHON in + [\\/]* | ?:[\\/]*) + ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PYTHON=$ac_cv_path_PYTHON +if test -n "$PYTHON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 +$as_echo "$PYTHON" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi + am_display_PYTHON=$am_cv_pathless_PYTHON + fi + + + if test "$PYTHON" = :; then + PYTHON="/usr/bin/env python2.5" + else + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5 +$as_echo_n "checking for $am_display_PYTHON version... " >&6; } +if ${am_cv_python_version+:} false; then : + $as_echo_n "(cached) " >&6 +else + am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"` +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5 +$as_echo "$am_cv_python_version" >&6; } + PYTHON_VERSION=$am_cv_python_version + + + + PYTHON_PREFIX='${prefix}' + + PYTHON_EXEC_PREFIX='${exec_prefix}' + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5 +$as_echo_n "checking for $am_display_PYTHON platform... " >&6; } +if ${am_cv_python_platform+:} false; then : + $as_echo_n "(cached) " >&6 +else + am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"` +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5 +$as_echo "$am_cv_python_platform" >&6; } + PYTHON_PLATFORM=$am_cv_python_platform + + + # Just factor out some code duplication. + am_python_setup_sysconfig="\ +import sys +# Prefer sysconfig over distutils.sysconfig, for better compatibility +# with python 3.x. See automake bug#10227. +try: + import sysconfig +except ImportError: + can_use_sysconfig = 0 +else: + can_use_sysconfig = 1 +# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: +# +try: + from platform import python_implementation + if python_implementation() == 'CPython' and sys.version[:3] == '2.7': + can_use_sysconfig = 0 +except ImportError: + pass" + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5 +$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; } +if ${am_cv_python_pythondir+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$prefix" = xNONE + then + am_py_prefix=$ac_default_prefix + else + am_py_prefix=$prefix + fi + am_cv_python_pythondir=`$PYTHON -c " +$am_python_setup_sysconfig +if can_use_sysconfig: + sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) +else: + from distutils import sysconfig + sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') +sys.stdout.write(sitedir)"` + case $am_cv_python_pythondir in + $am_py_prefix*) + am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` + am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` + ;; + *) + case $am_py_prefix in + /usr|/System*) ;; + *) + am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages + ;; + esac + ;; + esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5 +$as_echo "$am_cv_python_pythondir" >&6; } + pythondir=$am_cv_python_pythondir + + + + pkgpythondir=\${pythondir}/$PACKAGE + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5 +$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; } +if ${am_cv_python_pyexecdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$exec_prefix" = xNONE + then + am_py_exec_prefix=$am_py_prefix + else + am_py_exec_prefix=$exec_prefix + fi + am_cv_python_pyexecdir=`$PYTHON -c " +$am_python_setup_sysconfig +if can_use_sysconfig: + sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) +else: + from distutils import sysconfig + sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') +sys.stdout.write(sitedir)"` + case $am_cv_python_pyexecdir in + $am_py_exec_prefix*) + am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` + am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` + ;; + *) + case $am_py_exec_prefix in + /usr|/System*) ;; + *) + am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages + ;; + esac + ;; + esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5 +$as_echo "$am_cv_python_pyexecdir" >&6; } + pyexecdir=$am_cv_python_pyexecdir + + + + pkgpyexecdir=\${pyexecdir}/$PACKAGE + + + + fi + + + + + + +if test x"$glib_native_win32" = xyes; then : + + with_libiconv=native + +else + + +# Check whether --with-libiconv was given. +if test "${with_libiconv+set}" = set; then : + withval=$with_libiconv; +else + with_libiconv=maybe +fi + + + found_iconv=no + case $with_libiconv in + maybe) + # Check in the C library first + ac_fn_c_check_func "$LINENO" "iconv_open" "ac_cv_func_iconv_open" +if test "x$ac_cv_func_iconv_open" = xyes; then : + with_libiconv=no; found_iconv=yes +fi + + # Check if we have GNU libiconv + if test $found_iconv = "no"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libiconv_open in -liconv" >&5 +$as_echo_n "checking for libiconv_open in -liconv... " >&6; } +if ${ac_cv_lib_iconv_libiconv_open+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-liconv $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char libiconv_open (); +int +main () +{ +return libiconv_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_iconv_libiconv_open=yes +else + ac_cv_lib_iconv_libiconv_open=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iconv_libiconv_open" >&5 +$as_echo "$ac_cv_lib_iconv_libiconv_open" >&6; } +if test "x$ac_cv_lib_iconv_libiconv_open" = xyes; then : + with_libiconv=gnu; found_iconv=yes +fi + + fi + # Check if we have a iconv in -liconv, possibly from vendor + if test $found_iconv = "no"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv_open in -liconv" >&5 +$as_echo_n "checking for iconv_open in -liconv... " >&6; } +if ${ac_cv_lib_iconv_iconv_open+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-liconv $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char iconv_open (); +int +main () +{ +return iconv_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_iconv_iconv_open=yes +else + ac_cv_lib_iconv_iconv_open=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iconv_iconv_open" >&5 +$as_echo "$ac_cv_lib_iconv_iconv_open" >&6; } +if test "x$ac_cv_lib_iconv_iconv_open" = xyes; then : + with_libiconv=native; found_iconv=yes +fi + + fi + ;; + no) + ac_fn_c_check_func "$LINENO" "iconv_open" "ac_cv_func_iconv_open" +if test "x$ac_cv_func_iconv_open" = xyes; then : + with_libiconv=no; found_iconv=yes +fi + + ;; + gnu|yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libiconv_open in -liconv" >&5 +$as_echo_n "checking for libiconv_open in -liconv... " >&6; } +if ${ac_cv_lib_iconv_libiconv_open+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-liconv $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char libiconv_open (); +int +main () +{ +return libiconv_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_iconv_libiconv_open=yes +else + ac_cv_lib_iconv_libiconv_open=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iconv_libiconv_open" >&5 +$as_echo "$ac_cv_lib_iconv_libiconv_open" >&6; } +if test "x$ac_cv_lib_iconv_libiconv_open" = xyes; then : + with_libiconv=gnu; found_iconv=yes +fi + + ;; + native) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv_open in -liconv" >&5 +$as_echo_n "checking for iconv_open in -liconv... " >&6; } +if ${ac_cv_lib_iconv_iconv_open+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-liconv $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char iconv_open (); +int +main () +{ +return iconv_open (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_iconv_iconv_open=yes +else + ac_cv_lib_iconv_iconv_open=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_iconv_iconv_open" >&5 +$as_echo "$ac_cv_lib_iconv_iconv_open" >&6; } +if test "x$ac_cv_lib_iconv_iconv_open" = xyes; then : + with_libiconv=native; found_iconv=yes +fi + + ;; + esac + + if test "x$found_iconv" = "xno" ; then + as_fn_error $? "*** No iconv() implementation found in C library or libiconv" "$LINENO" 5 + fi + +fi + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZLIB" >&5 +$as_echo_n "checking for ZLIB... " >&6; } + +if test -n "$ZLIB_CFLAGS"; then + pkg_cv_ZLIB_CFLAGS="$ZLIB_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib\""; } >&5 + ($PKG_CONFIG --exists --print-errors "zlib") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "zlib" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$ZLIB_LIBS"; then + pkg_cv_ZLIB_LIBS="$ZLIB_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib\""; } >&5 + ($PKG_CONFIG --exists --print-errors "zlib") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "zlib" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + ZLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "zlib" 2>&1` + else + ZLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "zlib" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$ZLIB_PKG_ERRORS" >&5 + + found_zlib=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + found_zlib=no +else + ZLIB_CFLAGS=$pkg_cv_ZLIB_CFLAGS + ZLIB_LIBS=$pkg_cv_ZLIB_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + found_zlib=yes +fi +if test "x$found_zlib" = "xno"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflate in -lz" >&5 +$as_echo_n "checking for inflate in -lz... " >&6; } +if ${ac_cv_lib_z_inflate+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char inflate (); +int +main () +{ +return inflate (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_z_inflate=yes +else + ac_cv_lib_z_inflate=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflate" >&5 +$as_echo "$ac_cv_lib_z_inflate" >&6; } +if test "x$ac_cv_lib_z_inflate" = xyes; then : + ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" +if test "x$ac_cv_header_zlib_h" = xyes; then : + found_zlib=yes +fi + + +fi + + if test "x$found_zlib" = "xno" ; then + as_fn_error $? "*** Working zlib library and headers not found ***" "$LINENO" 5 + fi + ZLIB_LIBS='-lz' + + +fi + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBFFI" >&5 +$as_echo_n "checking for LIBFFI... " >&6; } + +if test -n "$LIBFFI_CFLAGS"; then + pkg_cv_LIBFFI_CFLAGS="$LIBFFI_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi >= 3.0.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libffi >= 3.0.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBFFI_CFLAGS=`$PKG_CONFIG --cflags "libffi >= 3.0.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBFFI_LIBS"; then + pkg_cv_LIBFFI_LIBS="$LIBFFI_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libffi >= 3.0.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libffi >= 3.0.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBFFI_LIBS=`$PKG_CONFIG --libs "libffi >= 3.0.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBFFI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libffi >= 3.0.0" 2>&1` + else + LIBFFI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libffi >= 3.0.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBFFI_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (libffi >= 3.0.0) were not met: + +$LIBFFI_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables LIBFFI_CFLAGS +and LIBFFI_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables LIBFFI_CFLAGS +and LIBFFI_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details" "$LINENO" 5; } +else + LIBFFI_CFLAGS=$pkg_cv_LIBFFI_CFLAGS + LIBFFI_LIBS=$pkg_cv_LIBFFI_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi + + + + +ALL_LINGUAS="`grep -v '^#' "$srcdir/po/LINGUAS" | tr '\n' ' '`" +CONFIG_STATUS_DEPENDENCIES='$(top_srcdir)/po/LINGUAS' + + + for ac_header in locale.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LOCALE_H 1 +_ACEOF + +fi + +done + + if test $ac_cv_header_locale_h = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5 +$as_echo_n "checking for LC_MESSAGES... " >&6; } +if ${am_cv_val_LC_MESSAGES+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +return LC_MESSAGES + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_val_LC_MESSAGES=yes +else + am_cv_val_LC_MESSAGES=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5 +$as_echo "$am_cv_val_LC_MESSAGES" >&6; } + if test $am_cv_val_LC_MESSAGES = yes; then + +$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h + + fi + fi + USE_NLS=yes + + + gt_cv_have_gettext=no + + CATOBJEXT=NONE + XGETTEXT=: + INTLLIBS= + + ac_fn_c_check_header_mongrel "$LINENO" "libintl.h" "ac_cv_header_libintl_h" "$ac_includes_default" +if test "x$ac_cv_header_libintl_h" = xyes; then : + gt_cv_func_dgettext_libintl="no" + libintl_extra_libs="" + + # + # First check in libc + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in libc" >&5 +$as_echo_n "checking for ngettext in libc... " >&6; } +if ${gt_cv_func_ngettext_libc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include + +int +main () +{ +return !ngettext ("","", 1) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_ngettext_libc=yes +else + gt_cv_func_ngettext_libc=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_ngettext_libc" >&5 +$as_echo "$gt_cv_func_ngettext_libc" >&6; } + + if test "$gt_cv_func_ngettext_libc" = "yes" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in libc" >&5 +$as_echo_n "checking for dgettext in libc... " >&6; } +if ${gt_cv_func_dgettext_libc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include + +int +main () +{ +return !dgettext ("","") + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + gt_cv_func_dgettext_libc=yes +else + gt_cv_func_dgettext_libc=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_dgettext_libc" >&5 +$as_echo "$gt_cv_func_dgettext_libc" >&6; } + fi + + if test "$gt_cv_func_ngettext_libc" = "yes" ; then + for ac_func in bind_textdomain_codeset +do : + ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" +if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_BIND_TEXTDOMAIN_CODESET 1 +_ACEOF + +fi +done + + 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 + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bindtextdomain in -lintl" >&5 +$as_echo_n "checking for bindtextdomain in -lintl... " >&6; } +if ${ac_cv_lib_intl_bindtextdomain+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char bindtextdomain (); +int +main () +{ +return bindtextdomain (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_intl_bindtextdomain=yes +else + ac_cv_lib_intl_bindtextdomain=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_bindtextdomain" >&5 +$as_echo "$ac_cv_lib_intl_bindtextdomain" >&6; } +if test "x$ac_cv_lib_intl_bindtextdomain" = xyes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 +$as_echo_n "checking for ngettext in -lintl... " >&6; } +if ${ac_cv_lib_intl_ngettext+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char ngettext (); +int +main () +{ +return ngettext (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_intl_ngettext=yes +else + ac_cv_lib_intl_ngettext=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 +$as_echo "$ac_cv_lib_intl_ngettext" >&6; } +if test "x$ac_cv_lib_intl_ngettext" = xyes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dgettext in -lintl" >&5 +$as_echo_n "checking for dgettext in -lintl... " >&6; } +if ${ac_cv_lib_intl_dgettext+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dgettext (); +int +main () +{ +return dgettext (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_intl_dgettext=yes +else + ac_cv_lib_intl_dgettext=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dgettext" >&5 +$as_echo "$ac_cv_lib_intl_dgettext" >&6; } +if test "x$ac_cv_lib_intl_dgettext" = xyes; then : + gt_cv_func_dgettext_libintl=yes +fi + +fi + +fi + + + if test "$gt_cv_func_dgettext_libintl" != "yes" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if -liconv is needed to use gettext" >&5 +$as_echo_n "checking if -liconv is needed to use gettext... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 +$as_echo "" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ngettext in -lintl" >&5 +$as_echo_n "checking for ngettext in -lintl... " >&6; } +if ${ac_cv_lib_intl_ngettext+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl -liconv $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char ngettext (); +int +main () +{ +return ngettext (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_intl_ngettext=yes +else + ac_cv_lib_intl_ngettext=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_ngettext" >&5 +$as_echo "$ac_cv_lib_intl_ngettext" >&6; } +if test "x$ac_cv_lib_intl_ngettext" = xyes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dcgettext in -lintl" >&5 +$as_echo_n "checking for dcgettext in -lintl... " >&6; } +if ${ac_cv_lib_intl_dcgettext+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl -liconv $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dcgettext (); +int +main () +{ +return dcgettext (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_intl_dcgettext=yes +else + ac_cv_lib_intl_dcgettext=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_dcgettext" >&5 +$as_echo "$ac_cv_lib_intl_dcgettext" >&6; } +if test "x$ac_cv_lib_intl_dcgettext" = xyes; then : + gt_cv_func_dgettext_libintl=yes + libintl_extra_libs=-liconv +else + : +fi + +else + : +fi + + 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 + for ac_func in bind_textdomain_codeset +do : + ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" +if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_BIND_TEXTDOMAIN_CODESET 1 +_ACEOF + +fi +done + + 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 + +$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h + + # Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_MSGFMT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case "$MSGFMT" in + /*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"; then + ac_cv_path_MSGFMT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT="no" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != "no"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 +$as_echo "$MSGFMT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + if test "$MSGFMT" != "no"; then + glib_save_LIBS="$LIBS" + LIBS="$LIBS $INTLLIBS" + for ac_func in dcgettext +do : + ac_fn_c_check_func "$LINENO" "dcgettext" "ac_cv_func_dcgettext" +if test "x$ac_cv_func_dcgettext" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DCGETTEXT 1 +_ACEOF + +fi +done + + MSGFMT_OPTS= + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if msgfmt accepts -c" >&5 +$as_echo_n "checking if msgfmt accepts -c... " >&6; } + cat >conftest.foo <<_ACEOF + +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 \n" +"Language-Team: C \n" +"MIME-Version: 1.0\n" +"Content-Transfer-Encoding: 8bit\n" + +_ACEOF +if { { $as_echo "$as_me:${as_lineno-$LINENO}: \$MSGFMT -c -o /dev/null conftest.foo"; } >&5 + ($MSGFMT -c -o /dev/null conftest.foo) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + MSGFMT_OPTS=-c; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +echo "$as_me: failed input was:" >&5 +sed 's/^/| /' conftest.foo >&5 +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GMSGFMT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GMSGFMT in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT=$ac_cv_path_GMSGFMT +if test -n "$GMSGFMT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 +$as_echo "$GMSGFMT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + # Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_XGETTEXT+:} false; then : + $as_echo_n "(cached) " >&6 +else + case "$XGETTEXT" in + /*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"; then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 +$as_echo "$XGETTEXT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +extern int _nl_msg_cat_cntr; + return _nl_msg_cat_cntr + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + CATOBJEXT=.gmo + DATADIRNAME=share +else + case $host in + *-*-solaris*) + ac_fn_c_check_func "$LINENO" "bind_textdomain_codeset" "ac_cv_func_bind_textdomain_codeset" +if test "x$ac_cv_func_bind_textdomain_codeset" = xyes; then : + CATOBJEXT=.gmo + DATADIRNAME=share +else + CATOBJEXT=.mo + DATADIRNAME=lib +fi + + ;; + *-*-openbsd*) + CATOBJEXT=.mo + DATADIRNAME=share + ;; + *) + CATOBJEXT=.mo + DATADIRNAME=lib + ;; + esac +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$glib_save_LIBS" + INSTOBJEXT=.mo + else + gt_cv_have_gettext=no + fi + fi + +fi + + + + if test "$gt_cv_have_gettext" = "yes" ; then + +$as_echo "#define ENABLE_NLS 1" >>confdefs.h + + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 +$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } + XGETTEXT=":" + fi + fi + + # We need to process the po/ directory. + POSUB=po + + ac_config_commands="$ac_config_commands default-1" + + + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + + + + + + + + + + + + + if test "$gt_cv_have_gettext" = "yes"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for catalogs to be installed" >&5 +$as_echo_n "checking for catalogs to be installed... " >&6; } + 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 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LINGUAS" >&5 +$as_echo "$LINGUAS" >&6; } + fi + + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + 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 + + +if test "$gt_cv_have_gettext" != "yes" ; then + as_fn_error $? " +*** You must have either have gettext support in your C library, or use the +*** GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html +" "$LINENO" 5 +fi + +LIBS="$INTLLIBS $LIBS" + +GETTEXT_PACKAGE=glib20 + + +cat >>confdefs.h <<_ACEOF +#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE" +_ACEOF + + +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" + +cat >>confdefs.h <<_ACEOF +#define GLIB_LOCALE_DIR "$localedir" +_ACEOF + + + + +if test x"$glib_native_win32" != xyes; then : + + if test x$with_libiconv != xno ; then + case " $INTLLIBS " in + *[\ \ ]-liconv[\ \ ]*) ;; + *) ICONV_LIBS="-liconv" ;; + esac + fi + +fi + + +case $with_libiconv in + gnu) + +$as_echo "#define USE_LIBICONV_GNU 1" >>confdefs.h + + ;; + native) + +$as_echo "#define USE_LIBICONV_NATIVE 1" >>confdefs.h + + ;; +esac + + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.6' +macro_revision='2.4.6' + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + +func_stripname_cnf () +{ + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; + esac +} # func_stripname_cnf + + + + + +# Set options +# Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_static=no +fi + + + + + + + +enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AS="${ac_tool_prefix}as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 +$as_echo "$AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. +set dummy as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AS"; then + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AS="as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AS=$ac_cv_prog_ac_ct_AS +if test -n "$ac_ct_AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 +$as_echo "$ac_ct_AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AS" = x; then + AS="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AS=$ac_ct_AS + fi +else + AS="$ac_cv_prog_AS" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + + ;; +esac + +test -z "$AS" && AS=as + + + + + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + enable_dlopen=no + + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + pic_mode=default +fi + + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + link_all_deplibs=no + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen=shl_load +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen=dlopen +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report what library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC + + if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +reload_flag_CXX=$reload_flag +reload_cmds_CXX=$reload_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + compiler_CXX=$CC + func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct_CXX=no + hardcode_direct_absolute_CXX=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec_CXX='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + no_undefined_flag_CXX='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' $wl-bernotok' + allow_undefined_flag_CXX=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + fi + archive_cmds_need_lc_CXX=yes + archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=yes + file_list_spec_CXX='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' + enable_shared_with_static_runtimes_CXX=yes + # Don't use ranlib + old_postinstall_cmds_CXX='chmod 644 $oldlib' + postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + export_dynamic_flag_spec_CXX='$wl--export-all-symbols' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec_CXX='' + fi + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + if test yes != "$lt_cv_apple_cc_single_mod"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + os2*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_minus_L_CXX=yes + allow_undefined_flag_CXX=unsupported + shrext_cmds=.dll + archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes_CXX=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + haiku*) + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs_CXX=yes + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='$wl-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5].* | *pgcpp\ [1-5].*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='$wl-E' + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + no_undefined_flag_CXX=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='$wl-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='$wl-z,text' + allow_undefined_flag_CXX='$wl-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ + '"$old_archive_cmds_CXX" + reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ + '"$reload_cmds_CXX" + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } + test no = "$ld_shlibs_CXX" && can_build_shared=no + + GCC_CXX=$GXX + LD_CXX=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX=$prev$p + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX=$prev$p + else + postdeps_CXX="${postdeps_CXX} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX=$p + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX=$p + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + + + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + lt_prog_compiler_pic_CXX='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static_CXX='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } +lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test no = "$ld_shlibs_CXX" && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test yes = "$hardcode_automatic_CXX"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct_CXX" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && + test no != "$hardcode_minus_L_CXX"; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test relink = "$hardcode_action_CXX" || + test yes = "$inherit_rpath_CXX"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + +: ${CONFIG_LT=./config.lt} +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_LT" >&5 +$as_echo "$as_me: creating $CONFIG_LT" >&6;} +as_write_fail=0 +cat >"$CONFIG_LT" <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate a libtool stub with the current configuration. +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>"$CONFIG_LT" <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## --------------------------------- ## +## Main body of "$CONFIG_LT" script. ## +## --------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x "$CONFIG_LT" + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $0 [OPTIONS] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +glib config.lt 2.48.0 +configured by $0, generated by GNU Autoconf 2.69. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test 0 != $# +do + case $1 in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) as_fn_error $? "unrecognized option: $1 +Try '$0 --help' for more information." "$LINENO" 5 ;; + + *) as_fn_error $? "unrecognized argument: $1 +Try '$0 --help' for more information." "$LINENO" 5 ;; + esac + shift +done + +if $lt_cl_silent; then + exec 6>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in AS \ +DLLTOOL \ +OBJDUMP \ +SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +reload_flag_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_separator_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path \ +reload_cmds_CXX \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + + + +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ofile" >&5 +$as_echo "$as_me: creating $ofile" >&6;} + + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 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. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='CXX ' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Assembler program. +AS=$lt_AS + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Object dumper program. +OBJDUMP=$lt_OBJDUMP + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + +as_fn_exit 0 +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec 5>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec 5>>config.log +$lt_cl_success || as_fn_exit 1 + + + +if test "$glib_native_win32" = "yes"; then : + + if test x$enable_static = xyes -a x$enable_shared = xyes; then + as_fn_error $? "Can not build both shared and static at the same time on Windows." "$LINENO" 5 + fi + if test x$enable_static = xyes; then + glib_win32_static_compilation=yes + GLIB_WIN32_STATIC_COMPILATION_DEFINE="#define GLIB_STATIC_COMPILATION 1 +#define GOBJECT_STATIC_COMPILATION 1" + + fi + +fi + if test x$glib_native_win32 = xyes -a x$glib_win32_static_compilation != xyes; then + OS_WIN32_AND_DLL_COMPILATION_TRUE= + OS_WIN32_AND_DLL_COMPILATION_FALSE='#' +else + OS_WIN32_AND_DLL_COMPILATION_TRUE='#' + OS_WIN32_AND_DLL_COMPILATION_FALSE= +fi + + +# Checks for library functions. +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working alloca.h" >&5 +$as_echo_n "checking for working alloca.h... " >&6; } +if ${ac_cv_working_alloca_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char *p = (char *) alloca (2 * sizeof (int)); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_working_alloca_h=yes +else + ac_cv_working_alloca_h=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_working_alloca_h" >&5 +$as_echo "$ac_cv_working_alloca_h" >&6; } +if test $ac_cv_working_alloca_h = yes; then + +$as_echo "#define HAVE_ALLOCA_H 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for alloca" >&5 +$as_echo_n "checking for alloca... " >&6; } +if ${ac_cv_func_alloca_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef _MSC_VER +# include +# define alloca _alloca +# else +# ifdef HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +void *alloca (size_t); +# endif +# endif +# endif +# endif +#endif + +int +main () +{ +char *p = (char *) alloca (1); + if (p) return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_func_alloca_works=yes +else + ac_cv_func_alloca_works=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_alloca_works" >&5 +$as_echo "$ac_cv_func_alloca_works" >&6; } + +if test $ac_cv_func_alloca_works = yes; then + +$as_echo "#define HAVE_ALLOCA 1" >>confdefs.h + +else + # The SVR3 libPW and SVR4 libucb both contain incompatible functions +# that cause trouble. Some versions do not even contain alloca or +# contain a buggy version. If you still want to use their alloca, +# use ar to extract alloca.o from them instead of compiling alloca.c. + +ALLOCA=\${LIBOBJDIR}alloca.$ac_objext + +$as_echo "#define C_ALLOCA 1" >>confdefs.h + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether \`alloca.c' needs Cray hooks" >&5 +$as_echo_n "checking whether \`alloca.c' needs Cray hooks... " >&6; } +if ${ac_cv_os_cray+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined CRAY && ! defined CRAY2 +webecray +#else +wenotbecray +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "webecray" >/dev/null 2>&1; then : + ac_cv_os_cray=yes +else + ac_cv_os_cray=no +fi +rm -f conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_os_cray" >&5 +$as_echo "$ac_cv_os_cray" >&6; } +if test $ac_cv_os_cray = yes; then + for ac_func in _getb67 GETB67 getb67; do + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + +cat >>confdefs.h <<_ACEOF +#define CRAY_STACKSEG_END $ac_func +_ACEOF + + break +fi + + done +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking stack direction for C alloca" >&5 +$as_echo_n "checking stack direction for C alloca... " >&6; } +if ${ac_cv_c_stack_direction+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_c_stack_direction=0 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +find_stack_direction (int *addr, int depth) +{ + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; +} + +int +main (int argc, char **argv) +{ + return find_stack_direction (0, argc + !argv + 20) < 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_stack_direction=1 +else + ac_cv_c_stack_direction=-1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_stack_direction" >&5 +$as_echo "$ac_cv_c_stack_direction" >&6; } +cat >>confdefs.h <<_ACEOF +#define STACK_DIRECTION $ac_cv_c_stack_direction +_ACEOF + + +fi + +for ac_func in mmap posix_memalign memalign valloc fsync pipe2 issetugid +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +for ac_func in timegm gmtime_r strerror_r +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __libc_enable_secure" >&5 +$as_echo_n "checking for __libc_enable_secure... " >&6; } +if ${glib_cv_have_libc_enable_secure+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + extern int __libc_enable_secure; +int +main () +{ +return __libc_enable_secure; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + glib_cv_have_libc_enable_secure=yes +else + glib_cv_have_libc_enable_secure=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_have_libc_enable_secure" >&5 +$as_echo "$glib_cv_have_libc_enable_secure" >&6; } +if test x$glib_cv_have_libc_enable_secure = xyes; then : + + +$as_echo "#define HAVE_LIBC_ENABLE_SECURE 1" >>confdefs.h + + +fi + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5 +$as_echo_n "checking size of char... " >&6; } +if ${ac_cv_sizeof_char+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_char" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (char) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_char=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5 +$as_echo "$ac_cv_sizeof_char" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_CHAR $ac_cv_sizeof_char +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 +$as_echo_n "checking size of short... " >&6; } +if ${ac_cv_sizeof_short+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_short" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (short) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_short=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 +$as_echo "$ac_cv_sizeof_short" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_SHORT $ac_cv_sizeof_short +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +$as_echo_n "checking size of long... " >&6; } +if ${ac_cv_sizeof_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (long) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +$as_echo "$ac_cv_sizeof_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 +$as_echo_n "checking size of int... " >&6; } +if ${ac_cv_sizeof_int+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_int" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (int) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_int=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 +$as_echo "$ac_cv_sizeof_int" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_INT $ac_cv_sizeof_int +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 +$as_echo_n "checking size of void *... " >&6; } +if ${ac_cv_sizeof_void_p+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_void_p" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (void *) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_void_p=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 +$as_echo "$ac_cv_sizeof_void_p" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_VOID_P $ac_cv_sizeof_void_p +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 +$as_echo_n "checking size of long long... " >&6; } +if ${ac_cv_sizeof_long_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_long_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (long long) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_long_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 +$as_echo "$ac_cv_sizeof_long_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of __int64" >&5 +$as_echo_n "checking size of __int64... " >&6; } +if ${ac_cv_sizeof___int64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (__int64))" "ac_cv_sizeof___int64" "$ac_includes_default"; then : + +else + if test "$ac_cv_type___int64" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (__int64) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof___int64=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof___int64" >&5 +$as_echo "$ac_cv_sizeof___int64" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF___INT64 $ac_cv_sizeof___int64 +_ACEOF + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sig_atomic_t" >&5 +$as_echo_n "checking for sig_atomic_t... " >&6; } +if ${ac_cv_type_sig_atomic_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + sig_atomic_t val = 42; +int +main () +{ +return val == 42 ? 0 : 1 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_type_sig_atomic_t=yes +else + ac_cv_type_sig_atomic_t=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_sig_atomic_t" >&5 +$as_echo "$ac_cv_type_sig_atomic_t" >&6; } +if test x$ac_cv_type_sig_atomic_t = xyes; then + +$as_echo "#define HAVE_SIG_ATOMIC_T 1" >>confdefs.h + +fi + +if test x$ac_cv_sizeof_long = x8 || test x$ac_cv_sizeof_long_long = x8 || test x$ac_cv_sizeof___int64 = x8 ; then + : +else + as_fn_error $? " +*** GLib requires a 64 bit type. You might want to consider +*** using the GNU C compiler. +" "$LINENO" 5 +fi + +if test x$glib_native_win32 != xyes && test x$ac_cv_sizeof_long_long = x8; then : + + # long long is a 64 bit integer. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for format to printf and scanf a guint64" >&5 +$as_echo_n "checking for format to printf and scanf a guint64... " >&6; } + if ${glib_cv_long_long_format+:} false; then : + $as_echo_n "(cached) " >&6 +else + + for format in ll q I64; do + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main() + { + long long b, a = -0x3AFAFAFAFAFAFAFALL; + char buffer[1000]; + sprintf (buffer, "%${format}u", a); + sscanf (buffer, "%${format}u", &b); + exit (b!=a); + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + glib_cv_long_long_format=${format} + break +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + done +fi + + if test -n "$glib_cv_long_long_format"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: %${glib_cv_long_long_format}u" >&5 +$as_echo "%${glib_cv_long_long_format}u" >&6; } + +$as_echo "#define HAVE_LONG_LONG_FORMAT 1" >>confdefs.h + + if test x"$glib_cv_long_long_format" = xI64; then + +$as_echo "#define HAVE_INT64_AND_I64 1" >>confdefs.h + + fi + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi + +elif test x$ac_cv_sizeof___int64 = x8; then : + + # __int64 is a 64 bit integer. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for format to printf and scanf a guint64" >&5 +$as_echo_n "checking for format to printf and scanf a guint64... " >&6; } + # We know this is MSVCRT.DLL, and what the formats are + glib_cv_long_long_format=I64 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: %${glib_cv_long_long_format}u" >&5 +$as_echo "%${glib_cv_long_long_format}u" >&6; } + +$as_echo "#define HAVE_LONG_LONG_FORMAT 1" >>confdefs.h + + +$as_echo "#define HAVE_INT64_AND_I64 1" >>confdefs.h + + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if ${ac_cv_c_const+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for growing stack pointer" >&5 +$as_echo_n "checking for growing stack pointer... " >&6; } +if ${glib_cv_stack_grows+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + volatile int *a = 0, *b = 0; + void f (int i) { volatile int x = 5; if (i == 0) b = &x; else f (i - 1); } + int main () { volatile int y = 7; a = &y; f (100); return b > a ? 0 : 1; } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + glib_cv_stack_grows=yes + +else + glib_cv_stack_grows=no + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_stack_grows" >&5 +$as_echo "$glib_cv_stack_grows" >&6; } + +# check for flavours of varargs macros +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 varargs macros in C" >&5 +$as_echo_n "checking for ISO C99 varargs macros in C... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +int a(int p1, int p2, int p3); +#define call_a(...) a(1,__VA_ARGS__) +call_a(2,3); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + g_have_iso_c_varargs=yes +else + g_have_iso_c_varargs=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $g_have_iso_c_varargs" >&5 +$as_echo "$g_have_iso_c_varargs" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ISO C99 varargs macros in C++" >&5 +$as_echo_n "checking for ISO C99 varargs macros in C++... " >&6; } +if test "$CXX" = ""; then : + + g_have_iso_cxx_varargs=no +else + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +int a(int p1, int p2, int p3); +#define call_a(...) a(1,__VA_ARGS__) +call_a(2,3); + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + g_have_iso_cxx_varargs=yes +else + g_have_iso_cxx_varargs=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $g_have_iso_cxx_varargs" >&5 +$as_echo "$g_have_iso_cxx_varargs" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNUC varargs macros" >&5 +$as_echo_n "checking for GNUC varargs macros... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +int a(int p1, int p2, int p3); +#define call_a(params...) a(1,params) +call_a(2,3); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + g_have_gnuc_varargs=yes +else + g_have_gnuc_varargs=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $g_have_gnuc_varargs" >&5 +$as_echo "$g_have_gnuc_varargs" >&6; } + +# check for GNUC visibility support +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNUC visibility attribute" >&5 +$as_echo_n "checking for GNUC visibility attribute... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +void +__attribute__ ((visibility ("hidden"))) + f_hidden (void) +{ +} +void +__attribute__ ((visibility ("internal"))) + f_internal (void) +{ +} +void +__attribute__ ((visibility ("protected"))) + f_protected (void) +{ +} +void +__attribute__ ((visibility ("default"))) + f_default (void) +{ +} +int main (void) +{ + f_hidden(); + f_internal(); + f_protected(); + f_default(); + return 0; +} + +_ACEOF +rm -f conftest.$ac_objext +glib_ac_compile_save="$ac_compile" +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext' +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && + { ac_try='(if test -s conftest.err; then false ; else true; fi)' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + g_have_gnuc_visibility=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +g_have_gnuc_visibility=no +fi +ac_compile="$glib_ac_compile_save" +rm -f conftest.$ac_objext conftest.err conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $g_have_gnuc_visibility" >&5 +$as_echo "$g_have_gnuc_visibility" >&6; } + if test x$g_have_gnuc_visibility = xyes; then + HAVE_GNUC_VISIBILITY_TRUE= + HAVE_GNUC_VISIBILITY_FALSE='#' +else + HAVE_GNUC_VISIBILITY_TRUE='#' + HAVE_GNUC_VISIBILITY_FALSE= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether using Sun Studio C compiler" >&5 +$as_echo_n "checking whether using Sun Studio C compiler... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined(__SUNPRO_C) || (__SUNPRO_C >= 0x550) +#else +# include "error: this is not Sun Studio." +#endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + g_have_sunstudio_visibility=yes +else + g_have_sunstudio_visibility=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $g_have_sunstudio_visibility" >&5 +$as_echo "$g_have_sunstudio_visibility" >&6; } + if test x$g_have_sunstudio_visibility = xyes; then + HAVE_SUNSTUDIO_VISIBILITY_TRUE= + HAVE_SUNSTUDIO_VISIBILITY_FALSE='#' +else + HAVE_SUNSTUDIO_VISIBILITY_TRUE='#' + HAVE_SUNSTUDIO_VISIBILITY_FALSE= +fi + + +# check for bytesex stuff + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +$as_echo_n "checking whether byte ordering is bigendian... " >&6; } +if ${ac_cv_c_bigendian+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_bigendian=unknown + # See if we're dealing with a universal compiler. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __APPLE_CC__ + not a universal capable compiler + #endif + typedef int dummy; + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + # Check for potential -arch flags. It is not universal unless + # there are at least two -arch flags with different values. + ac_arch= + ac_prev= + for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do + if test -n "$ac_prev"; then + case $ac_word in + i?86 | x86_64 | ppc | ppc64) + if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then + ac_arch=$ac_word + else + ac_cv_c_bigendian=universal + break + fi + ;; + esac + ac_prev= + elif test "x$ac_word" = "x-arch"; then + ac_prev=arch + fi + done +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + if test $ac_cv_c_bigendian = unknown; then + # See if sys/param.h defines the BYTE_ORDER macro. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ + && LITTLE_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + +int +main () +{ +#if BYTE_ORDER != BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) + bogus endian macros + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + # It does; now see whether it defined to _BIG_ENDIAN or not. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main () +{ +#ifndef _BIG_ENDIAN + not big endian + #endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_bigendian=yes +else + ac_cv_c_bigendian=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + if test $ac_cv_c_bigendian = unknown; then + # Compile a test program. + if test "$cross_compiling" = yes; then : + # Try to guess by grepping values from an object file. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +short int ascii_mm[] = + { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; + short int ascii_ii[] = + { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; + int use_ascii (int i) { + return ascii_mm[i] + ascii_ii[i]; + } + short int ebcdic_ii[] = + { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; + short int ebcdic_mm[] = + { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; + int use_ebcdic (int i) { + return ebcdic_mm[i] + ebcdic_ii[i]; + } + extern int foo; + +int +main () +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + ac_cv_c_bigendian=yes + fi + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if test "$ac_cv_c_bigendian" = unknown; then + ac_cv_c_bigendian=no + else + # finding both strings is unlikely to happen, but who knows? + ac_cv_c_bigendian=unknown + fi + fi +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Are we little or big endian? From Harbison&Steele. */ + union + { + long int l; + char c[sizeof (long int)]; + } u; + u.l = 1; + return u.c[sizeof (long int) - 1] == 1; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_c_bigendian=no +else + ac_cv_c_bigendian=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +$as_echo "$ac_cv_c_bigendian" >&6; } + case $ac_cv_c_bigendian in #( + yes) + $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h +;; #( + no) + ;; #( + universal) + +$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h + + ;; #( + *) + as_fn_error $? "unknown endianness + presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; + esac + +if test x$ac_cv_c_bigendian = xuniversal ; then + as_fn_error $? "Universal builds not supported: see https://bugs.gnome.org/742548" "$LINENO" 5 +fi + + +# check for header files +for ac_header in sys/param.h sys/resource.h mach/mach_time.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +for ac_header in sys/select.h stdint.h inttypes.h sched.h malloc.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +for ac_header in sys/vfs.h sys/vmount.h sys/statfs.h sys/statvfs.h sys/filio.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +for ac_header in mntent.h sys/mnttab.h sys/vfstab.h sys/mntctl.h fstab.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +for ac_header in linux/magic.h sys/prctl.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# Some versions of MSC lack these +for ac_header in dirent.h sys/time.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# We don't care about this, but we need to keep including it in +# glibconfig.h for backward compatibility +for ac_header in values.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "values.h" "ac_cv_header_values_h" "$ac_includes_default" +if test "x$ac_cv_header_values_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_VALUES_H 1 +_ACEOF + +fi + +done + + +for ac_header in sys/mount.h sys/sysctl.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#if HAVE_SYS_PARAM_H + #include + #endif + +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +for ac_func in sysctlbyname +do : + ac_fn_c_check_func "$LINENO" "sysctlbyname" "ac_cv_func_sysctlbyname" +if test "x$ac_cv_func_sysctlbyname" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYSCTLBYNAME 1 +_ACEOF + +fi +done + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/types.h defines makedev" >&5 +$as_echo_n "checking whether sys/types.h defines makedev... " >&6; } +if ${ac_cv_header_sys_types_h_makedev+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +return makedev(0, 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_header_sys_types_h_makedev=yes +else + ac_cv_header_sys_types_h_makedev=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_types_h_makedev" >&5 +$as_echo "$ac_cv_header_sys_types_h_makedev" >&6; } + +if test $ac_cv_header_sys_types_h_makedev = no; then +ac_fn_c_check_header_mongrel "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_mkdev_h" = xyes; then : + +$as_echo "#define MAJOR_IN_MKDEV 1" >>confdefs.h + +fi + + + + if test $ac_cv_header_sys_mkdev_h = no; then + ac_fn_c_check_header_mongrel "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_sysmacros_h" = xyes; then : + +$as_echo "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h + +fi + + + fi +fi + +for ac_header in xlocale.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "xlocale.h" "ac_cv_header_xlocale_h" "$ac_includes_default" +if test "x$ac_cv_header_xlocale_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_XLOCALE_H 1 +_ACEOF + +fi + +done + + +# check for structure fields +ac_fn_c_check_member "$LINENO" "struct stat" "st_mtimensec" "ac_cv_member_struct_stat_st_mtimensec" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_mtimensec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_MTIMENSEC 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct stat" "st_mtim.tv_nsec" "ac_cv_member_struct_stat_st_mtim_tv_nsec" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_mtim_tv_nsec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct stat" "st_atimensec" "ac_cv_member_struct_stat_st_atimensec" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_atimensec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_ATIMENSEC 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct stat" "st_atim.tv_nsec" "ac_cv_member_struct_stat_st_atim_tv_nsec" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_atim_tv_nsec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct stat" "st_ctimensec" "ac_cv_member_struct_stat_st_ctimensec" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_ctimensec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_CTIMENSEC 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct stat" "st_ctim.tv_nsec" "ac_cv_member_struct_stat_st_ctim_tv_nsec" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_ctim_tv_nsec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtime" "ac_cv_member_struct_stat_st_birthtime" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_birthtime" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_BIRTHTIME 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtimensec" "ac_cv_member_struct_stat_st_birthtimensec" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_birthtimensec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtim" "ac_cv_member_struct_stat_st_birthtim" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_birthtim" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_BIRTHTIM 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct stat" "st_birthtim.tv_nsec" "ac_cv_member_struct_stat_st_birthtim_tv_nsec" "$ac_includes_default" +if test "x$ac_cv_member_struct_stat_st_birthtim_tv_nsec" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC 1 +_ACEOF + + +fi + +ac_fn_c_check_member "$LINENO" "struct stat" "st_blksize" "ac_cv_member_struct_stat_st_blksize" "#include +#include +#ifdef G_OS_UNIX +#include +#endif +#ifdef HAVE_SYS_STATFS_H +#include +#endif +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif +" +if test "x$ac_cv_member_struct_stat_st_blksize" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "#include +#include +#ifdef G_OS_UNIX +#include +#endif +#ifdef HAVE_SYS_STATFS_H +#include +#endif +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif +" +if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STAT_ST_BLOCKS 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct statfs" "f_fstypename" "ac_cv_member_struct_statfs_f_fstypename" "#include +#include +#ifdef G_OS_UNIX +#include +#endif +#ifdef HAVE_SYS_STATFS_H +#include +#endif +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif +" +if test "x$ac_cv_member_struct_statfs_f_fstypename" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STATFS_F_FSTYPENAME 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct statfs" "f_bavail" "ac_cv_member_struct_statfs_f_bavail" "#include +#include +#ifdef G_OS_UNIX +#include +#endif +#ifdef HAVE_SYS_STATFS_H +#include +#endif +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif +" +if test "x$ac_cv_member_struct_statfs_f_bavail" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STATFS_F_BAVAIL 1 +_ACEOF + + +fi + +# struct statvfs.f_basetype is available on Solaris but not for Linux. +ac_fn_c_check_member "$LINENO" "struct statvfs" "f_basetype" "ac_cv_member_struct_statvfs_f_basetype" "#include +" +if test "x$ac_cv_member_struct_statvfs_f_basetype" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STATVFS_F_BASETYPE 1 +_ACEOF + + +fi + +ac_fn_c_check_member "$LINENO" "struct statvfs" "f_fstypename" "ac_cv_member_struct_statvfs_f_fstypename" "#include +" +if test "x$ac_cv_member_struct_statvfs_f_fstypename" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_STATVFS_F_FSTYPENAME 1 +_ACEOF + + +fi + +ac_fn_c_check_member "$LINENO" "struct tm" "tm_gmtoff" "ac_cv_member_struct_tm_tm_gmtoff" "#include +" +if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_TM_TM_GMTOFF 1 +_ACEOF + + +fi +ac_fn_c_check_member "$LINENO" "struct tm" "__tm_gmtoff" "ac_cv_member_struct_tm___tm_gmtoff" "#include +" +if test "x$ac_cv_member_struct_tm___tm_gmtoff" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_TM___TM_GMTOFF 1 +_ACEOF + + +fi + + +ac_header_dirent=no +for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do + as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } +if eval \${$as_ac_Header+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include <$ac_hdr> + +int +main () +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$as_ac_Header=yes" +else + eval "$as_ac_Header=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$as_ac_Header + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +_ACEOF + +ac_header_dirent=$ac_hdr; break +fi + +done +# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. +if test $ac_header_dirent = dirent.h; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +$as_echo_n "checking for library containing opendir... " >&6; } +if ${ac_cv_search_opendir+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); +int +main () +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dir; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_opendir+:} false; then : + break +fi +done +if ${ac_cv_search_opendir+:} false; then : + +else + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +$as_echo "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +$as_echo_n "checking for library containing opendir... " >&6; } +if ${ac_cv_search_opendir+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (); +int +main () +{ +return opendir (); + ; + return 0; +} +_ACEOF +for ac_lib in '' x; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_opendir=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_opendir+:} false; then : + break +fi +done +if ${ac_cv_search_opendir+:} false; then : + +else + ac_cv_search_opendir=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +$as_echo "$ac_cv_search_opendir" >&6; } +ac_res=$ac_cv_search_opendir +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + +fi + + + + ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" " +#include +#ifdef HAVE_DIRENT_H +# include +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include +# endif +# ifdef HAVE_SYS_DIR_H +# include +# endif +# ifdef HAVE_NDIR_H +# include +# endif +#endif + +" +if test "x$ac_cv_member_struct_dirent_d_type" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_STRUCT_DIRENT_D_TYPE 1 +_ACEOF + + +fi + + + +# Checks for libcharset + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5 +$as_echo_n "checking for nl_langinfo and CODESET... " >&6; } +if ${am_cv_langinfo_codeset+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char* cs = nl_langinfo(CODESET); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + am_cv_langinfo_codeset=yes +else + am_cv_langinfo_codeset=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_langinfo_codeset" >&5 +$as_echo "$am_cv_langinfo_codeset" >&6; } + if test $am_cv_langinfo_codeset = yes; then + +$as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2.1 or newer" >&5 +$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; } +if ${ac_cv_gnu_library_2_1+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "Lucky GNU user" >/dev/null 2>&1; then : + ac_cv_gnu_library_2_1=yes +else + ac_cv_gnu_library_2_1=no +fi +rm -f conftest* + + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5 +$as_echo "$ac_cv_gnu_library_2_1" >&6; } + + GLIBC21="$ac_cv_gnu_library_2_1" + + + +# check additional type sizes +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of size_t" >&5 +$as_echo_n "checking size of size_t... " >&6; } +if ${ac_cv_sizeof_size_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (size_t))" "ac_cv_sizeof_size_t" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_size_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (size_t) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_size_t=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_size_t" >&5 +$as_echo "$ac_cv_sizeof_size_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_SIZE_T $ac_cv_sizeof_size_t +_ACEOF + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the appropriate definition for size_t" >&5 +$as_echo_n "checking for the appropriate definition for size_t... " >&6; } + +case $ac_cv_sizeof_size_t in + $ac_cv_sizeof_short) + glib_size_type=short + ;; + $ac_cv_sizeof_int) + glib_size_type=int + ;; + $ac_cv_sizeof_long) + glib_size_type=long + ;; + $ac_cv_sizeof_long_long) + glib_size_type='long long' + ;; + $ac_cv_sizeof__int64) + glib_size_type='__int64' + ;; + *) as_fn_error $? "No type matching size_t in size" "$LINENO" 5 + ;; +esac + +if test $ac_cv_sizeof_size_t = $ac_cv_sizeof_int && + test $ac_cv_sizeof_size_t = $ac_cv_sizeof_long; then : + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined(_AIX) && !defined(__GNUC__) +#pragma options langlvl=stdc89 +#endif +#include +int main () +{ + size_t s = 1; + unsigned int *size_int = &s; + return (int)*size_int; +} + +_ACEOF +rm -f conftest.$ac_objext +glib_ac_compile_save="$ac_compile" +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext' +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && + { ac_try='(if test -s conftest.err; then false ; else true; fi)' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + glib_size_type=int +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined(_AIX) && !defined(__GNUC__) +#pragma options langlvl=stdc89 +#endif +#include +int main () +{ + size_t s = 1; + unsigned long *size_long = &s; + return (int)*size_long; +} + +_ACEOF +rm -f conftest.$ac_objext +glib_ac_compile_save="$ac_compile" +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext' +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && + { ac_try='(if test -s conftest.err; then false ; else true; fi)' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + glib_size_type=long +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +ac_compile="$glib_ac_compile_save" +rm -f conftest.$ac_objext conftest.err conftest.$ac_ext +fi +ac_compile="$glib_ac_compile_save" +rm -f conftest.$ac_objext conftest.err conftest.$ac_ext + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsigned $glib_size_type" >&5 +$as_echo "unsigned $glib_size_type" >&6; } + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of ssize_t" >&5 +$as_echo_n "checking size of ssize_t... " >&6; } +if ${ac_cv_sizeof_ssize_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (ssize_t))" "ac_cv_sizeof_ssize_t" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_ssize_t" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (ssize_t) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_ssize_t=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_ssize_t" >&5 +$as_echo "$ac_cv_sizeof_ssize_t" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_SSIZE_T $ac_cv_sizeof_ssize_t +_ACEOF + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the appropriate definition for ssize_t" >&5 +$as_echo_n "checking for the appropriate definition for ssize_t... " >&6; } + +case $ac_cv_sizeof_ssize_t in + $ac_cv_sizeof_short) + glib_ssize_type=short + ;; + $ac_cv_sizeof_int) + glib_ssize_type=int + ;; + $ac_cv_sizeof_long) + glib_ssize_type=long + ;; + $ac_cv_sizeof_long_long) + glib_ssize_type='long long' + ;; + $ac_cv_sizeof__int64) + glib_ssize_type='__int64' + ;; + *) as_fn_error $? "No type matching ssize_t in size" "$LINENO" 5 + ;; +esac + +if test $ac_cv_sizeof_ssize_t = $ac_cv_sizeof_int && + test $ac_cv_sizeof_ssize_t = $ac_cv_sizeof_long; then : + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined(_AIX) && !defined(__GNUC__) +#pragma options langlvl=stdc89 +#endif +#include +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#include +int main () +{ + ssize_t s = 1; + int *size_int = &s; + return (int)*size_int; +} + +_ACEOF +rm -f conftest.$ac_objext +glib_ac_compile_save="$ac_compile" +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext' +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && + { ac_try='(if test -s conftest.err; then false ; else true; fi)' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + glib_ssize_type=int +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#if defined(_AIX) && !defined(__GNUC__) +#pragma options langlvl=stdc89 +#endif +#include +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#include +int main () +{ + ssize_t s = 1; + long *size_long = &s; + return (int)*size_long; +} + +_ACEOF +rm -f conftest.$ac_objext +glib_ac_compile_save="$ac_compile" +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext' +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && + { ac_try='(if test -s conftest.err; then false ; else true; fi)' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + glib_ssize_type=long +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +ac_compile="$glib_ac_compile_save" +rm -f conftest.$ac_objext conftest.err conftest.$ac_ext +fi +ac_compile="$glib_ac_compile_save" +rm -f conftest.$ac_objext conftest.err conftest.$ac_ext + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_ssize_type" >&5 +$as_echo "$glib_ssize_type" >&6; } + +# Check for some functions +for ac_func in lstat strsignal vsnprintf stpcpy strcasecmp strncasecmp poll vasprintf setenv unsetenv getc_unlocked readlink symlink fdwalk memmem +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +for ac_func in lchmod lchown fchmod fchown utimes getresuid +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +for ac_func in getmntent_r setmntent endmntent hasmntopt getfsstat getvfsstat fallocate +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +case $host_os in aix*) ac_cv_func_splice=no ;; esac # AIX splice() is something else +for ac_func in splice +do : + ac_fn_c_check_func "$LINENO" "splice" "ac_cv_func_splice" +if test "x$ac_cv_func_splice" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SPLICE 1 +_ACEOF + +fi +done + +for ac_func in prlimit +do : + ac_fn_c_check_func "$LINENO" "prlimit" "ac_cv_func_prlimit" +if test "x$ac_cv_func_prlimit" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_PRLIMIT 1 +_ACEOF + +fi +done + + +# To avoid finding a compatibility unusable statfs, which typically +# successfully compiles, but warns to use the newer statvfs interface: +if test $ac_cv_header_sys_statvfs_h = yes; then : + for ac_func in statvfs +do : + ac_fn_c_check_func "$LINENO" "statvfs" "ac_cv_func_statvfs" +if test "x$ac_cv_func_statvfs" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STATVFS 1 +_ACEOF + +fi +done + +fi +if test $ac_cv_header_sys_statfs_h = yes -o $ac_cv_header_sys_mount_h = yes; then : + for ac_func in statfs +do : + ac_fn_c_check_func "$LINENO" "statfs" "ac_cv_func_statfs" +if test "x$ac_cv_func_statfs" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STATFS 1 +_ACEOF + +fi +done + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use statfs or statvfs" >&5 +$as_echo_n "checking whether to use statfs or statvfs... " >&6; } +# Some systems have both statfs and statvfs, pick the most "native" for these +if test x$ac_cv_func_statfs = xyes && test x$ac_cv_func_statvfs = xyes; then : + + # on solaris and irix, statfs doesn't even have the f_bavail field + if test x$ac_cv_member_struct_statfs_f_bavail = xno; then : + ac_cv_func_statfs=no +else + # else, at least on linux, statfs is the actual syscall + ac_cv_func_statvfs=no +fi + +fi + +if test x$ac_cv_func_statfs = xyes; then : + + +$as_echo "#define USE_STATFS 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: statfs" >&5 +$as_echo "statfs" >&6; } + +elif test x$ac_cv_func_statvfs = xyes; then : + + +$as_echo "#define USE_STATVFS 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: statvfs" >&5 +$as_echo "statvfs" >&6; } + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither" >&5 +$as_echo "neither" >&6; } +fi + +for ac_header in crt_externs.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "crt_externs.h" "ac_cv_header_crt_externs_h" "$ac_includes_default" +if test "x$ac_cv_header_crt_externs_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_CRT_EXTERNS_H 1 +_ACEOF + +fi + +done + +for ac_func in _NSGetEnviron +do : + ac_fn_c_check_func "$LINENO" "_NSGetEnviron" "ac_cv_func__NSGetEnviron" +if test "x$ac_cv_func__NSGetEnviron" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE__NSGETENVIRON 1 +_ACEOF + +fi +done + + +for ac_func in newlocale uselocale strtod_l strtoll_l strtoull_l +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +# Internet address families +if test $glib_native_win32 = yes; then + glib_inet_includes=" +#include + " +else + glib_inet_includes=" +#include +#include + " +fi + +glib_failed=false +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking value of AF_INET" >&5 +$as_echo_n "checking value of AF_INET... " >&6; } +if ${glib_cv_value_AF_INET+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "AF_INET" "glib_cv_value_AF_INET" "$glib_inet_includes"; then : + +else + glib_failed=true +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_value_AF_INET" >&5 +$as_echo "$glib_cv_value_AF_INET" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking value of AF_INET6" >&5 +$as_echo_n "checking value of AF_INET6... " >&6; } +if ${glib_cv_value_AF_INET6+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "AF_INET6" "glib_cv_value_AF_INET6" "$glib_inet_includes"; then : + +else + glib_failed=true +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_value_AF_INET6" >&5 +$as_echo "$glib_cv_value_AF_INET6" >&6; } + +# winsock defines this even though it doesn't support it +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking value of AF_UNIX" >&5 +$as_echo_n "checking value of AF_UNIX... " >&6; } +if ${glib_cv_value_AF_UNIX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "AF_UNIX" "glib_cv_value_AF_UNIX" "$glib_inet_includes"; then : + +else + glib_failed=true +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_value_AF_UNIX" >&5 +$as_echo "$glib_cv_value_AF_UNIX" >&6; } + +if $glib_failed ; then + as_fn_error $? "Could not determine values for AF_INET* constants" "$LINENO" 5 +fi + +glib_failed=false +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking value of MSG_PEEK" >&5 +$as_echo_n "checking value of MSG_PEEK... " >&6; } +if ${glib_cv_value_MSG_PEEK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "MSG_PEEK" "glib_cv_value_MSG_PEEK" "$glib_inet_includes"; then : + +else + glib_failed=true +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_value_MSG_PEEK" >&5 +$as_echo "$glib_cv_value_MSG_PEEK" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking value of MSG_OOB" >&5 +$as_echo_n "checking value of MSG_OOB... " >&6; } +if ${glib_cv_value_MSG_OOB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "MSG_OOB" "glib_cv_value_MSG_OOB" "$glib_inet_includes"; then : + +else + glib_failed=true +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_value_MSG_OOB" >&5 +$as_echo "$glib_cv_value_MSG_OOB" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking value of MSG_DONTROUTE" >&5 +$as_echo_n "checking value of MSG_DONTROUTE... " >&6; } +if ${glib_cv_value_MSG_DONTROUTE+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "MSG_DONTROUTE" "glib_cv_value_MSG_DONTROUTE" "$glib_inet_includes"; then : + +else + glib_failed=true +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_value_MSG_DONTROUTE" >&5 +$as_echo "$glib_cv_value_MSG_DONTROUTE" >&6; } + +if $glib_failed ; then + as_fn_error $? "Could not determine values for MSG_* constants" "$LINENO" 5 +fi + +for ac_func in getprotobyname_r endservent if_nametoindex if_indextoname sendmmsg recvmmsg +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +if test $glib_native_win32 = yes; then : + + # in the Windows SDK and in mingw-w64 has wrappers for + # inline workarounds for getaddrinfo, getnameinfo and freeaddrinfo if + # they aren't present at run-time (on Windows 2000). + ac_fn_c_check_header_mongrel "$LINENO" "wspiapi.h" "ac_cv_header_wspiapi_h" "$ac_includes_default" +if test "x$ac_cv_header_wspiapi_h" = xyes; then : + WSPIAPI_INCLUDE="#include " +fi + + + + +else + + # Android does not have C_IN in public headers, we define it wherever necessary + if test $glib_native_android != yes; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if arpa/nameser_compat.h is needed" >&5 +$as_echo_n "checking if arpa/nameser_compat.h is needed... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include +int +main () +{ +int qclass = C_IN; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include +int +main () +{ +int qclass = C_IN; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + NAMESER_COMPAT_INCLUDE="#include " +else + as_fn_error $? "could not compile test program either way" "$LINENO" 5 +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + + + # We can't just use AC_CHECK_FUNC/AC_CHECK_LIB here. Bug 586150 + NETWORK_LIBS="" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_query" >&5 +$as_echo_n "checking for res_query... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + #include + +int +main () +{ + + res_query("test", 0, 0, (void *)0, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + save_libs="$LIBS" + LIBS="-lresolv $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + #include + +int +main () +{ + + res_query("test", 0, 0, (void *)0, 0); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: in -lresolv" >&5 +$as_echo "in -lresolv" >&6; } + NETWORK_LIBS="-lresolv $NETWORK_LIBS" +else + LIBS="-lbind $save_libs" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +res_query("test", 0, 0, (void *)0, 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: in -lbind" >&5 +$as_echo "in -lbind" >&6; } + NETWORK_LIBS="-lbind $NETWORK_LIBS" +else + as_fn_error $? "not found" "$LINENO" 5 +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$save_libs" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket" +if test "x$ac_cv_func_socket" = xyes; then : + : +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +$as_echo_n "checking for socket in -lsocket... " >&6; } +if ${ac_cv_lib_socket_socket+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char socket (); +int +main () +{ +return socket (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socket_socket=yes +else + ac_cv_lib_socket_socket=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +$as_echo "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes; then : + NETWORK_LIBS="-lsocket $NETWORK_LIBS" +else + as_fn_error $? "Could not find socket()" "$LINENO" 5 +fi + +fi + + save_libs="$LIBS" + LIBS="$LIBS $NETWORK_LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for res_init" >&5 +$as_echo_n "checking for res_init... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include + #include + #include + +int +main () +{ + + res_init(); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_RES_INIT 1" >>confdefs.h + + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$save_libs" + +fi + + +ac_fn_c_check_header_compile "$LINENO" "linux/netlink.h" "ac_cv_header_linux_netlink_h" "#include +" +if test "x$ac_cv_header_linux_netlink_h" = xyes; then : + +$as_echo "#define HAVE_NETLINK 1" >>confdefs.h + +fi + + + if test "$ac_cv_header_linux_netlink_h" = "yes"; then + HAVE_NETLINK_TRUE= + HAVE_NETLINK_FALSE='#' +else + HAVE_NETLINK_TRUE='#' + HAVE_NETLINK_FALSE= +fi + + +ac_fn_c_check_type "$LINENO" "struct ip_mreqn" "ac_cv_type_struct_ip_mreqn" "#include +" +if test "x$ac_cv_type_struct_ip_mreqn" = xyes; then : + + +$as_echo "#define HAVE_IP_MREQN /**/" >>confdefs.h + +fi + + +case $host in + *-*-solaris* ) + +$as_echo "#define _XOPEN_SOURCE_EXTENDED 1" >>confdefs.h + + +$as_echo "#define _XOPEN_SOURCE 2" >>confdefs.h + + +$as_echo "#define __EXTENSIONS__ 1" >>confdefs.h + + ;; +esac + +if test "$ac_cv_func_statfs" = yes; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking number of arguments to statfs()" >&5 +$as_echo_n "checking number of arguments to statfs()... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #ifdef HAVE_SYS_PARAM_H + #include + #endif + #ifdef HAVE_SYS_VFS_H + #include + #endif + #ifdef HAVE_SYS_MOUNT_H + #include + #endif + #ifdef HAVE_SYS_STATFS_H + #include + #endif +int +main () +{ +struct statfs st; + statfs(NULL, &st); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2" >&5 +$as_echo "2" >&6; } + +$as_echo "#define STATFS_ARGS 2" >>confdefs.h + +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #ifdef HAVE_SYS_PARAM_H + #include + #endif + #ifdef HAVE_SYS_VFS_H + #include + #endif + #ifdef HAVE_SYS_MOUNT_H + #include + #endif + #ifdef HAVE_SYS_STATFS_H + #include + #endif +int +main () +{ +struct statfs st; + statfs(NULL, &st, sizeof (st), 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: 4" >&5 +$as_echo "4" >&6; } + +$as_echo "#define STATFS_ARGS 4" >>confdefs.h + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unknown" >&5 +$as_echo "unknown" >&6; } + as_fn_error $? "unable to determine number of arguments to statfs()" "$LINENO" 5 +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking open() option O_DIRECTORY" >&5 +$as_echo_n "checking open() option O_DIRECTORY... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +int +main () +{ +open(0, O_DIRECTORY, 0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_OPEN_O_DIRECTORY 1" >>confdefs.h + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +# +# Check whether to use an included printf +# +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 vsnprintf" >&5 +$as_echo_n "checking for C99 vsnprintf... " >&6; } +if ${ac_cv_func_vsnprintf_c99+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_vsnprintf_c99=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +doit(char * s, ...) +{ + char buffer[32]; + va_list args; + int r; + + va_start(args, s); + r = vsnprintf(buffer, 5, s, args); + va_end(args); + + if (r != 7) + exit(1); + + /* AIX 5.1 and Solaris seems to have a half-baked vsnprintf() + implementation. The above will return 7 but if you replace + the size of the buffer with 0, it borks! */ + va_start(args, s); + r = vsnprintf(buffer, 0, s, args); + va_end(args); + + if (r != 7) + exit(1); + + exit(0); +} + +int +main(void) +{ + doit("1234567"); + exit(1); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_vsnprintf_c99=yes +else + ac_cv_func_vsnprintf_c99=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vsnprintf_c99" >&5 +$as_echo "$ac_cv_func_vsnprintf_c99" >&6; } +if test $ac_cv_func_vsnprintf_c99 = yes; then + +$as_echo "#define HAVE_C99_VSNPRINTF 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf supports positional parameters" >&5 +$as_echo_n "checking whether printf supports positional parameters... " >&6; } +if ${ac_cv_func_printf_unix98+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_printf_unix98=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +int +main (void) +{ + char buffer[128]; + + sprintf (buffer, "%2\$d %3\$d %1\$d", 1, 2, 3); + if (strcmp ("2 3 1", buffer) == 0) + exit (0); + exit (1); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_printf_unix98=yes +else + ac_cv_func_printf_unix98=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_printf_unix98" >&5 +$as_echo "$ac_cv_func_printf_unix98" >&6; } +if test $ac_cv_func_printf_unix98 = yes; then + +$as_echo "#define HAVE_UNIX98_PRINTF 1" >>confdefs.h + +fi + + +# Check whether --enable-included-printf was given. +if test "${enable_included_printf+set}" = set; then : + enableval=$enable_included_printf; enable_included_printf="$enableval" +fi + + +need_included_printf=no +if test "x$enable_included_printf" = "xyes" ; then + need_included_printf=yes +fi +if test "$ac_cv_func_vsnprintf_c99" != "yes" ; then + need_included_printf=yes +fi +if test "$ac_cv_func_printf_unix98" != "yes" ; then + need_included_printf=yes +fi +if test "x$ac_cv_sizeof_long_long" = "x8" && + test -z "$glib_cv_long_long_format" ; then + need_included_printf=yes +fi + +if test "x$enable_included_printf" = "xno" && + test "x$need_included_printf" = "xyes" ; then + as_fn_error $? " +*** Your C library's printf doesn't appear to have the features that +*** GLib needs, but you specified --enable-included-printf=no." "$LINENO" 5 +fi + +enable_included_printf=$need_included_printf + + if test "$enable_included_printf" != "yes"; then + HAVE_GOOD_PRINTF_TRUE= + HAVE_GOOD_PRINTF_FALSE='#' +else + HAVE_GOOD_PRINTF_TRUE='#' + HAVE_GOOD_PRINTF_FALSE= +fi + +if test "$enable_included_printf" != "yes"; then : + + +$as_echo "#define HAVE_GOOD_PRINTF 1" >>confdefs.h + + +else + + if test -z "$glib_cv_long_long_format" ; then + glib_cv_long_long_format="ll" + fi + $as_echo "#define HAVE_VASPRINTF 1" >>confdefs.h + + +fi + +# Checks needed for gnulib vasnprintf + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for signed" >&5 +$as_echo_n "checking for signed... " >&6; } +if ${bh_cv_c_signed+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +signed char x; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + bh_cv_c_signed=yes +else + bh_cv_c_signed=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bh_cv_c_signed" >&5 +$as_echo "$bh_cv_c_signed" >&6; } + if test $bh_cv_c_signed = no; then + +$as_echo "#define signed /**/" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long" >&5 +$as_echo_n "checking for long long... " >&6; } +if ${ac_cv_type_long_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +long long ll = 1LL; int i = 63; +int +main () +{ +long long llmax = (long long) -1; + return ll << i | ll >> i | llmax / ll | llmax % ll; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_type_long_long=yes +else + ac_cv_type_long_long=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long" >&5 +$as_echo "$ac_cv_type_long_long" >&6; } + if test $ac_cv_type_long_long = yes; then + +$as_echo "#define HAVE_LONG_LONG 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double" >&5 +$as_echo_n "checking for long double... " >&6; } +if ${gt_cv_c_long_double+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$GCC" = yes; then + gt_cv_c_long_double=yes + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + /* The Stardent Vistra knows sizeof(long double), but does not support it. */ + long double foo = 0.0; + /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ + int array [2*(sizeof(long double) >= sizeof(double)) - 1]; + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_c_long_double=yes +else + gt_cv_c_long_double=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_long_double" >&5 +$as_echo "$gt_cv_c_long_double" >&6; } + if test $gt_cv_c_long_double = yes; then + +$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5 +$as_echo_n "checking for wchar_t... " >&6; } +if ${gt_cv_c_wchar_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + wchar_t foo = (wchar_t)'\0'; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_c_wchar_t=yes +else + gt_cv_c_wchar_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5 +$as_echo "$gt_cv_c_wchar_t" >&6; } + if test $gt_cv_c_wchar_t = yes; then + +$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5 +$as_echo_n "checking for wint_t... " >&6; } +if ${gt_cv_c_wint_t+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + wint_t foo = (wchar_t)'\0'; +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gt_cv_c_wint_t=yes +else + gt_cv_c_wint_t=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5 +$as_echo "$gt_cv_c_wint_t" >&6; } + if test $gt_cv_c_wint_t = yes; then + +$as_echo "#define HAVE_WINT_T 1" >>confdefs.h + + fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default" +if test "x$ac_cv_type_ptrdiff_t" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_PTRDIFF_T 1 +_ACEOF + + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5 +$as_echo_n "checking for inttypes.h... " >&6; } +if ${jm_ac_cv_header_inttypes_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +uintmax_t i = (uintmax_t) -1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + jm_ac_cv_header_inttypes_h=yes +else + jm_ac_cv_header_inttypes_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $jm_ac_cv_header_inttypes_h" >&5 +$as_echo "$jm_ac_cv_header_inttypes_h" >&6; } + if test $jm_ac_cv_header_inttypes_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5 +$as_echo_n "checking for stdint.h... " >&6; } +if ${jm_ac_cv_header_stdint_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int +main () +{ +uintmax_t i = (uintmax_t) -1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + jm_ac_cv_header_stdint_h=yes +else + jm_ac_cv_header_stdint_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $jm_ac_cv_header_stdint_h" >&5 +$as_echo "$jm_ac_cv_header_stdint_h" >&6; } + if test $jm_ac_cv_header_stdint_h = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H_WITH_UINTMAX 1 +_ACEOF + + fi + + + + + if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then + + test $ac_cv_type_long_long = yes \ + && ac_type='long long' \ + || ac_type='long' + +cat >>confdefs.h <<_ACEOF +#define intmax_t $ac_type +_ACEOF + + else + +$as_echo "#define HAVE_INTMAX_T 1" >>confdefs.h + + fi + +for ac_func in snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C99 snprintf" >&5 +$as_echo_n "checking for C99 snprintf... " >&6; } +if ${ac_cv_func_snprintf_c99+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_snprintf_c99=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +doit() +{ + char buffer[32]; + va_list args; + int r; + + r = snprintf(buffer, 5, "1234567"); + + if (r != 7) + exit(1); + + r = snprintf(buffer, 0, "1234567"); + + if (r != 7) + exit(1); + + r = snprintf(NULL, 0, "1234567"); + + if (r != 7) + exit(1); + + exit(0); +} + +int +main(void) +{ + doit(); + exit(1); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_snprintf_c99=yes +else + ac_cv_func_snprintf_c99=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_snprintf_c99" >&5 +$as_echo "$ac_cv_func_snprintf_c99" >&6; } +if test $ac_cv_func_snprintf_c99 = yes; then + +$as_echo "#define HAVE_C99_SNPRINTF 1" >>confdefs.h + +fi + + +# Check if needs to be included for fd_set +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fd_set" >&5 +$as_echo_n "checking for fd_set... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +fd_set readMask, writeMask; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + gtk_ok=yes +else + gtk_ok=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +if test "$gtk_ok" = "yes"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, found in sys/types.h" >&5 +$as_echo "yes, found in sys/types.h" >&6; } + +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "fd_set" >/dev/null 2>&1; then : + gtk_ok=yes +fi +rm -f conftest* + + if test "$gtk_ok" = "yes"; then + # *** FIXME: give it a different name + +$as_echo "#define HAVE_SYS_SELECT_H 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, found in sys/select.h" >&5 +$as_echo "yes, found in sys/select.h" >&6; } + else + +$as_echo "#define NO_FD_SET 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo (CODESET)" >&5 +$as_echo_n "checking for nl_langinfo (CODESET)... " >&6; } +if ${glib_cv_langinfo_codeset+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char *codeset = nl_langinfo (CODESET); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + glib_cv_langinfo_codeset=yes +else + glib_cv_langinfo_codeset=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_langinfo_codeset" >&5 +$as_echo "$glib_cv_langinfo_codeset" >&6; } +if test x$glib_cv_langinfo_codeset = xyes; then + +$as_echo "#define HAVE_CODESET 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo (PM_STR)" >&5 +$as_echo_n "checking for nl_langinfo (PM_STR)... " >&6; } +if ${glib_cv_langinfo_time+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char *str; + str = nl_langinfo (PM_STR); + str = nl_langinfo (D_T_FMT); + str = nl_langinfo (D_FMT); + str = nl_langinfo (T_FMT); + str = nl_langinfo (T_FMT_AMPM); + str = nl_langinfo (MON_1); + str = nl_langinfo (ABMON_12); + str = nl_langinfo (DAY_1); + str = nl_langinfo (ABDAY_7); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + glib_cv_langinfo_time=yes +else + glib_cv_langinfo_time=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_langinfo_time" >&5 +$as_echo "$glib_cv_langinfo_time" >&6; } +if test x$glib_cv_langinfo_time = xyes; then + +$as_echo "#define HAVE_LANGINFO_TIME 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)" >&5 +$as_echo_n "checking for nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)... " >&6; } +if ${glib_cv_langinfo_outdigit+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +char *str; + str = nl_langinfo (_NL_CTYPE_OUTDIGIT0_MB); + str = nl_langinfo (_NL_CTYPE_OUTDIGIT1_MB); + str = nl_langinfo (_NL_CTYPE_OUTDIGIT2_MB); + str = nl_langinfo (_NL_CTYPE_OUTDIGIT3_MB); + str = nl_langinfo (_NL_CTYPE_OUTDIGIT4_MB); + str = nl_langinfo (_NL_CTYPE_OUTDIGIT5_MB); + str = nl_langinfo (_NL_CTYPE_OUTDIGIT6_MB); + str = nl_langinfo (_NL_CTYPE_OUTDIGIT7_MB); + str = nl_langinfo (_NL_CTYPE_OUTDIGIT8_MB); + str = nl_langinfo (_NL_CTYPE_OUTDIGIT9_MB); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + glib_cv_langinfo_outdigit=yes +else + glib_cv_langinfo_outdigit=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_langinfo_outdigit" >&5 +$as_echo "$glib_cv_langinfo_outdigit" >&6; } +if test x$glib_cv_langinfo_outdigit = xyes; then + +$as_echo "#define HAVE_LANGINFO_OUTDIGIT 1" >>confdefs.h + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a compliant posix_memalign() implementation" >&5 +$as_echo_n "checking for a compliant posix_memalign() implementation... " >&6; } +if ${glib_cv_compliant_posix_memalign+:} false; then : + $as_echo_n "(cached) " >&6 +else + + glib_cv_compliant_posix_memalign=0 + if test "$ac_cv_func_posix_memalign" = "yes" ; then + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #define _XOPEN_SOURCE 600 + #include /* posix_memalign() should be defined here */ + /* some systems break if #include used */ + static void test_memalign (size_t boundary, size_t size) { + void *mem = 0; + if (posix_memalign (&mem, boundary, size) != 0 || !mem) + exit (1); + else + free (mem); + } + int main() { + test_memalign ( 128, 128 - 2 * sizeof (void*)); + test_memalign ( 256, 256 - 2 * sizeof (void*)); + test_memalign ( 512, 512 - 2 * sizeof (void*)); + test_memalign ( 1024, 1024 - 2 * sizeof (void*)); + test_memalign ( 2048, 2048 - 2 * sizeof (void*)); + test_memalign ( 4096, 4096 - 2 * sizeof (void*)); + test_memalign ( 8192, 8192 - 2 * sizeof (void*)); + test_memalign (16384, 16384 - 2 * sizeof (void*)); + test_memalign (32768, 32768 - 2 * sizeof (void*)); + exit (0); /* success */ + } + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + glib_cv_compliant_posix_memalign=1 +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + : + fi + +fi + +if test "$glib_cv_compliant_posix_memalign" = "1"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS 1" >>confdefs.h + + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi + + +# Check for strlcpy +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenBSD strlcpy/strlcat" >&5 +$as_echo_n "checking for OpenBSD strlcpy/strlcat... " >&6; } +if ${glib_cv_have_strlcpy+:} false; then : + $as_echo_n "(cached) " >&6 +else + +if test "$cross_compiling" = yes; then : + glib_cv_have_strlcpy=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +int main() { + char p[10]; + (void) strlcpy (p, "hi", 10); + if (strlcat (p, "bye", 0) != 3) + return 1; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + glib_cv_have_strlcpy=yes +else + glib_cv_have_strlcpy=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_have_strlcpy" >&5 +$as_echo "$glib_cv_have_strlcpy" >&6; } +if test "$glib_cv_have_strlcpy" = "yes"; then + +$as_echo "#define HAVE_STRLCPY 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an implementation of va_copy()" >&5 +$as_echo_n "checking for an implementation of va_copy()... " >&6; } +if ${glib_cv_va_copy+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + void f (int i, ...) { + va_list args1, args2; + va_start (args1, i); + va_copy (args2, args1); + if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) + exit (1); + va_end (args1); va_end (args2); + } + int main() { + f (0, 42); + return 0; + } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + glib_cv_va_copy=yes +else + glib_cv_va_copy=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_va_copy" >&5 +$as_echo "$glib_cv_va_copy" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an implementation of __va_copy()" >&5 +$as_echo_n "checking for an implementation of __va_copy()... " >&6; } +if ${glib_cv___va_copy+:} false; then : + $as_echo_n "(cached) " >&6 +else + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + void f (int i, ...) { + va_list args1, args2; + va_start (args1, i); + __va_copy (args2, args1); + if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) + exit (1); + va_end (args1); va_end (args2); + } + int main() { + f (0, 42); + return 0; + } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + glib_cv___va_copy=yes +else + glib_cv___va_copy=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv___va_copy" >&5 +$as_echo "$glib_cv___va_copy" >&6; } + +if test "x$glib_cv_va_copy" = "xyes"; then + g_va_copy_func=va_copy +else if test "x$glib_cv___va_copy" = "xyes"; then + g_va_copy_func=__va_copy +fi +fi + +if test -n "$g_va_copy_func"; then + +cat >>confdefs.h <<_ACEOF +#define G_VA_COPY $g_va_copy_func +_ACEOF + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether va_lists can be copied by value" >&5 +$as_echo_n "checking whether va_lists can be copied by value... " >&6; } +if ${glib_cv_va_val_copy+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + glib_cv_va_val_copy=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + void f (int i, ...) { + va_list args1, args2; + va_start (args1, i); + args2 = args1; + if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42) + exit (1); + va_end (args1); va_end (args2); + } + int main() { + f (0, 42); + return 0; + } +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + glib_cv_va_val_copy=yes +else + glib_cv_va_val_copy=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_va_val_copy" >&5 +$as_echo "$glib_cv_va_val_copy" >&6; } + +if test "x$glib_cv_va_val_copy" = "xno"; then : + + +$as_echo "#define G_VA_COPY_AS_ARRAY 1" >>confdefs.h + + +fi + +G_MODULE_LIBS= +G_MODULE_LIBS_EXTRA= +G_MODULE_PLUGIN_LIBS= +if test x"$glib_native_win32" = xyes; then + G_MODULE_LDFLAGS= +else + export SED + G_MODULE_LDFLAGS=`(./libtool --config; echo eval echo \\$export_dynamic_flag_spec) | sh` +fi +G_MODULE_NEED_USCORE=0 +G_MODULE_BROKEN_RTLD_GLOBAL=0 +G_MODULE_HAVE_DLERROR=0 +if test -z "$G_MODULE_IMPL"; then + case "$host" in + *-*-mingw*|*-*-cygwin*) G_MODULE_IMPL=G_MODULE_IMPL_WIN32 ;; + esac +fi +if test -z "$G_MODULE_IMPL"; then + case "$host" in + *-*-aix*) G_MODULE_IMPL=G_MODULE_IMPL_AR ;; + esac +fi +if test -z "$G_MODULE_IMPL"; then : + + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + ac_fn_c_check_func "$LINENO" "dlsym" "ac_cv_func_dlsym" +if test "x$ac_cv_func_dlsym" = xyes; then : + G_MODULE_IMPL=G_MODULE_IMPL_DL +fi + +fi + + +fi +if test -z "$G_MODULE_IMPL" ; then : + + ac_fn_c_check_func "$LINENO" "NSLinkModule" "ac_cv_func_NSLinkModule" +if test "x$ac_cv_func_NSLinkModule" = xyes; then : + G_MODULE_IMPL=G_MODULE_IMPL_DYLD + G_MODULE_NEED_USCORE=1 +fi + + +fi +if test -z "$G_MODULE_IMPL"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlsym in -ldl" >&5 +$as_echo_n "checking for dlsym in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlsym+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlsym (); +int +main () +{ +return dlsym (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlsym=yes +else + ac_cv_lib_dl_dlsym=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlsym" >&5 +$as_echo "$ac_cv_lib_dl_dlsym" >&6; } +if test "x$ac_cv_lib_dl_dlsym" = xyes; then : + G_MODULE_LIBS=-ldl + G_MODULE_IMPL=G_MODULE_IMPL_DL +fi + +fi + + +fi +if test "$G_MODULE_IMPL" = "G_MODULE_IMPL_DL" ; then : + + LIBS_orig="$LIBS" + LDFLAGS_orig="$LDFLAGS" + LIBS="$G_MODULE_LIBS $LIBS" + LDFLAGS="$LDFLAGS $G_MODULE_LDFLAGS" + echo "void glib_plugin_test(void) { }" > plugin.c + ${SHELL} ./libtool --mode=compile --tag=CC ${CC} ${CFLAGS} \ + ${CPPFLAGS} -c -o plugin.lo plugin.c >/dev/null 2>&1 + ${SHELL} ./libtool --mode=link --tag=CC ${CC} ${CFLAGS} \ + ${LDFLAGS} -module -o plugin.la -export-dynamic \ + -shrext ".o" -avoid-version plugin.lo \ + -rpath /dont/care >/dev/null 2>&1 + eval `./libtool --config | grep ^objdir` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RTLD_GLOBAL brokenness" >&5 +$as_echo_n "checking for RTLD_GLOBAL brokenness... " >&6; } +if ${glib_cv_rtldglobal_broken+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + glib_cv_rtldglobal_broken=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#ifndef RTLD_GLOBAL +# define RTLD_GLOBAL 0 +#endif +#ifndef RTLD_LAZY +# define RTLD_LAZY 0 +#endif +int glib_plugin_test; +int main () { + void *handle, *global, *local; + global = &glib_plugin_test; + handle = dlopen ("./$objdir/plugin.o", RTLD_GLOBAL | RTLD_LAZY); + if (!handle) return 0; + local = dlsym (handle, "glib_plugin_test"); + return global == local; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + glib_cv_rtldglobal_broken=no +else + glib_cv_rtldglobal_broken=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + rm -f plugin.c plugin.o plugin.lo plugin.la ${objdir}/plugin.* + rmdir ${objdir} 2>/dev/null + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_rtldglobal_broken" >&5 +$as_echo "$glib_cv_rtldglobal_broken" >&6; } + if test "x$glib_cv_rtldglobal_broken" = "xyes"; then + G_MODULE_BROKEN_RTLD_GLOBAL=1 + else + G_MODULE_BROKEN_RTLD_GLOBAL=0 + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for preceeding underscore in symbols" >&5 +$as_echo_n "checking for preceeding underscore in symbols... " >&6; } +if ${glib_cv_uscore+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int glib_underscore_test (void) { return 42; } + int main() { + void *f1 = (void*)0, *f2 = (void*)0, *handle; + handle = dlopen ((void*)0, 0); + if (handle) { + f1 = dlsym (handle, "glib_underscore_test"); + f2 = dlsym (handle, "_glib_underscore_test"); + } return (!f2 || f1); + } +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + glib_cv_uscore=yes +else + glib_cv_uscore=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + rm -f plugin.c plugin.$ac_objext plugin.lo + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_uscore" >&5 +$as_echo "$glib_cv_uscore" >&6; } + if test "x${glib_cv_uscore+set}" != "xset" ; then + as_fn_error $? "glib_cv_uscore must be set in cache file when cross-compiling." "$LINENO" 5 +fi + + if test "x$glib_cv_uscore" = "xyes"; then + G_MODULE_NEED_USCORE=1 + else + G_MODULE_NEED_USCORE=0 + fi + + LDFLAGS="$LDFLAGS_orig" + ac_fn_c_check_func "$LINENO" "dlerror" "ac_cv_func_dlerror" +if test "x$ac_cv_func_dlerror" = xyes; then : + G_MODULE_HAVE_DLERROR=1 +else + G_MODULE_HAVE_DLERROR=0 +fi + + LIBS="$LIBS_orig" + +fi +if test -z "$G_MODULE_IMPL"; then + G_MODULE_IMPL=0 + G_MODULE_SUPPORTED=false +else + G_MODULE_SUPPORTED=true +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the suffix of module shared libraries" >&5 +$as_echo_n "checking for the suffix of module shared libraries... " >&6; } +export SED +shrext_cmds=`./libtool --config | grep '^shrext_cmds='` +eval $shrext_cmds +module=yes eval std_shrext=$shrext_cmds +# chop the initial dot +glib_gmodule_suffix=`echo $std_shrext | sed 's/^\.//'` +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: .$glib_gmodule_suffix" >&5 +$as_echo ".$glib_gmodule_suffix" >&6; } +# any reason it may fail? +if test "x$glib_gmodule_suffix" = x; then + as_fn_error $? "Cannot determine shared library suffix from libtool" "$LINENO" 5 +fi + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gspawn implementation" >&5 +$as_echo_n "checking for gspawn implementation... " >&6; } +case "$host" in + *-*-mingw*) + GSPAWN=gspawn-win32.lo + ;; + *) + GSPAWN=gspawn.lo + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GSPAWN" >&5 +$as_echo "$GSPAWN" >&6; } + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GIOChannel implementation" >&5 +$as_echo_n "checking for GIOChannel implementation... " >&6; } +case "$host" in + *-*-mingw*) + GIO=giowin32.lo + ;; + *) + GIO=giounix.lo + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GIO" >&5 +$as_echo "$GIO" >&6; } + + + + +# Check whether --with-gio-module-dir was given. +if test "${with_gio_module_dir+set}" = set; then : + withval=$with_gio_module_dir; +else + with_gio_module_dir='${libdir}/gio/modules' +fi + +GIO_MODULE_DIR=$with_gio_module_dir + + +# Check whether --enable-selinux was given. +if test "${enable_selinux+set}" = set; then : + enableval=$enable_selinux; +fi + +msg_selinux=no +SELINUX_LIBS= +if test "x$enable_selinux" != "xno"; then : + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for is_selinux_enabled in -lselinux" >&5 +$as_echo_n "checking for is_selinux_enabled in -lselinux... " >&6; } +if ${ac_cv_lib_selinux_is_selinux_enabled+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lselinux $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char is_selinux_enabled (); +int +main () +{ +return is_selinux_enabled (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_selinux_is_selinux_enabled=yes +else + ac_cv_lib_selinux_is_selinux_enabled=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_is_selinux_enabled" >&5 +$as_echo "$ac_cv_lib_selinux_is_selinux_enabled" >&6; } +if test "x$ac_cv_lib_selinux_is_selinux_enabled" = xyes; then : + for ac_header in selinux/selinux.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "selinux/selinux.h" "ac_cv_header_selinux_selinux_h" "$ac_includes_default" +if test "x$ac_cv_header_selinux_selinux_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SELINUX_SELINUX_H 1 +_ACEOF + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lgetfilecon_raw in -lselinux" >&5 +$as_echo_n "checking for lgetfilecon_raw in -lselinux... " >&6; } +if ${ac_cv_lib_selinux_lgetfilecon_raw+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lselinux $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char lgetfilecon_raw (); +int +main () +{ +return lgetfilecon_raw (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_selinux_lgetfilecon_raw=yes +else + ac_cv_lib_selinux_lgetfilecon_raw=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_lgetfilecon_raw" >&5 +$as_echo "$ac_cv_lib_selinux_lgetfilecon_raw" >&6; } +if test "x$ac_cv_lib_selinux_lgetfilecon_raw" = xyes; then : + +$as_echo "#define HAVE_SELINUX 1" >>confdefs.h + + SELINUX_LIBS="-lselinux" + msg_selinux=yes +fi + + +fi + +done + + +fi + + +fi + + +inotify_support=no +for ac_header in sys/inotify.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/inotify.h" "ac_cv_header_sys_inotify_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_inotify_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_INOTIFY_H 1 +_ACEOF + + for ac_func in inotify_init1 +do : + ac_fn_c_check_func "$LINENO" "inotify_init1" "ac_cv_func_inotify_init1" +if test "x$ac_cv_func_inotify_init1" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_INOTIFY_INIT1 1 +_ACEOF + inotify_support=yes +else + inotify_support=no +fi +done + + +fi + +done + + + if test "$inotify_support" = "yes"; then + HAVE_INOTIFY_TRUE= + HAVE_INOTIFY_FALSE='#' +else + HAVE_INOTIFY_TRUE='#' + HAVE_INOTIFY_FALSE= +fi + + +kqueue_support=no +for ac_header in sys/event.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/event.h" "ac_cv_header_sys_event_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_event_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_EVENT_H 1 +_ACEOF + + for ac_func in kqueue kevent +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + kqueue_support=yes +fi +done + + +fi + +done + + + if test "$kqueue_support" = "yes"; then + HAVE_KQUEUE_TRUE= + HAVE_KQUEUE_FALSE='#' +else + HAVE_KQUEUE_TRUE='#' + HAVE_KQUEUE_FALSE= +fi + + + +should_disable_fam=no + +# Check whether --enable-fam was given. +if test "${enable_fam+set}" = set; then : + enableval=$enable_fam; + if test "x$enable_fam" = "xno"; then + should_disable_fam=yes + fi + + +fi + +fam_support=no +FAM_LIBS= +if test "x$should_disable_fam" = "xno"; then +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FAMOpen in -lfam" >&5 +$as_echo_n "checking for FAMOpen in -lfam... " >&6; } +if ${ac_cv_lib_fam_FAMOpen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lfam $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char FAMOpen (); +int +main () +{ +return FAMOpen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_fam_FAMOpen=yes +else + ac_cv_lib_fam_FAMOpen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fam_FAMOpen" >&5 +$as_echo "$ac_cv_lib_fam_FAMOpen" >&6; } +if test "x$ac_cv_lib_fam_FAMOpen" = xyes; then : + for ac_header in fam.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "fam.h" "ac_cv_header_fam_h" "$ac_includes_default" +if test "x$ac_cv_header_fam_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_FAM_H 1 +_ACEOF + +$as_echo "#define HAVE_FAM /**/" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FAMNoExists in -lfam" >&5 +$as_echo_n "checking for FAMNoExists in -lfam... " >&6; } +if ${ac_cv_lib_fam_FAMNoExists+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lfam $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char FAMNoExists (); +int +main () +{ +return FAMNoExists (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_fam_FAMNoExists=yes +else + ac_cv_lib_fam_FAMNoExists=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_fam_FAMNoExists" >&5 +$as_echo "$ac_cv_lib_fam_FAMNoExists" >&6; } +if test "x$ac_cv_lib_fam_FAMNoExists" = xyes; then : + +$as_echo "#define HAVE_FAM_NO_EXISTS /**/" >>confdefs.h + +fi + + FAM_LIBS="-lfam" + fam_support=yes +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** FAM support will not be built (header files not found) ***" >&5 +$as_echo "$as_me: WARNING: *** FAM support will not be built (header files not found) ***" >&2;} +fi + +done + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** FAM support will not be built (FAM library not found) ***" >&5 +$as_echo "$as_me: WARNING: *** FAM support will not be built (FAM library not found) ***" >&2;} +fi + + +fi + if test "$fam_support" = "yes"; then + HAVE_FAM_TRUE= + HAVE_FAM_FALSE='#' +else + HAVE_FAM_TRUE='#' + HAVE_FAM_FALSE= +fi + + + +# Check whether --enable-xattr was given. +if test "${enable_xattr+set}" = set; then : + enableval=$enable_xattr; +fi + +msg_xattr=no +XATTR_LIBS= +if test "x$enable_xattr" != "xno"; then : + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getxattr in -lc" >&5 +$as_echo_n "checking for getxattr in -lc... " >&6; } +if ${ac_cv_lib_c_getxattr+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char getxattr (); +int +main () +{ +return getxattr (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_c_getxattr=yes +else + ac_cv_lib_c_getxattr=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_getxattr" >&5 +$as_echo "$ac_cv_lib_c_getxattr" >&6; } +if test "x$ac_cv_lib_c_getxattr" = xyes; then : + for ac_header in sys/xattr.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/xattr.h" "ac_cv_header_sys_xattr_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_xattr_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_XATTR_H 1 +_ACEOF + +$as_echo "#define HAVE_XATTR 1" >>confdefs.h + + msg_xattr=yes +fi + +done + + +fi + + + if test "x$msg_xattr" != "xyes"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getxattr in -lattr" >&5 +$as_echo_n "checking for getxattr in -lattr... " >&6; } +if ${ac_cv_lib_attr_getxattr+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lattr $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char getxattr (); +int +main () +{ +return getxattr (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_attr_getxattr=yes +else + ac_cv_lib_attr_getxattr=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_attr_getxattr" >&5 +$as_echo "$ac_cv_lib_attr_getxattr" >&6; } +if test "x$ac_cv_lib_attr_getxattr" = xyes; then : + for ac_header in attr/xattr.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "attr/xattr.h" "ac_cv_header_attr_xattr_h" "$ac_includes_default" +if test "x$ac_cv_header_attr_xattr_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_ATTR_XATTR_H 1 +_ACEOF + +$as_echo "#define HAVE_XATTR 1" >>confdefs.h + + XATTR_LIBS="-lattr" + msg_xattr=yes +fi + +done + + +fi + + +fi + + if test "x$msg_xattr" = "xyes"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XATTR_NOFOLLOW" >&5 +$as_echo_n "checking for XATTR_NOFOLLOW... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #ifdef HAVE_SYS_TYPES_H + #include + #endif + #ifdef HAVE_SYS_XATTR_H + #include + #elif HAVE_ATTR_XATTR_H + #include + #endif + +int +main () +{ +ssize_t len = getxattr("", "", NULL, 0, 0, XATTR_NOFOLLOW); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + +$as_echo "#define HAVE_XATTR_NOFOLLOW 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + +fi + + +# Check whether --enable-libelf was given. +if test "${enable_libelf+set}" = set; then : + enableval=$enable_libelf; +fi + +if test "x$enable_libelf" != "xno"; then : + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBELF" >&5 +$as_echo_n "checking for LIBELF... " >&6; } + +if test -n "$LIBELF_CFLAGS"; then + pkg_cv_LIBELF_CFLAGS="$LIBELF_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libelf >= 0.8.12\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libelf >= 0.8.12") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBELF_CFLAGS=`$PKG_CONFIG --cflags "libelf >= 0.8.12" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBELF_LIBS"; then + pkg_cv_LIBELF_LIBS="$LIBELF_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libelf >= 0.8.12\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libelf >= 0.8.12") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBELF_LIBS=`$PKG_CONFIG --libs "libelf >= 0.8.12" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBELF_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libelf >= 0.8.12" 2>&1` + else + LIBELF_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libelf >= 0.8.12" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBELF_PKG_ERRORS" >&5 + + have_libelf=maybe +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_libelf=maybe +else + LIBELF_CFLAGS=$pkg_cv_LIBELF_CFLAGS + LIBELF_LIBS=$pkg_cv_LIBELF_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + have_libelf=yes +fi +if test $have_libelf = maybe ; then : + + glib_save_LIBS=$LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 +$as_echo_n "checking for elf_begin in -lelf... " >&6; } +if ${ac_cv_lib_elf_elf_begin+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char elf_begin (); +int +main () +{ +return elf_begin (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_elf_elf_begin=yes +else + ac_cv_lib_elf_elf_begin=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 +$as_echo "$ac_cv_lib_elf_elf_begin" >&6; } +if test "x$ac_cv_lib_elf_elf_begin" = xyes; then : + : +else + have_libelf=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_getshdrstrndx in -lelf" >&5 +$as_echo_n "checking for elf_getshdrstrndx in -lelf... " >&6; } +if ${ac_cv_lib_elf_elf_getshdrstrndx+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char elf_getshdrstrndx (); +int +main () +{ +return elf_getshdrstrndx (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_elf_elf_getshdrstrndx=yes +else + ac_cv_lib_elf_elf_getshdrstrndx=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_getshdrstrndx" >&5 +$as_echo "$ac_cv_lib_elf_elf_getshdrstrndx" >&6; } +if test "x$ac_cv_lib_elf_elf_getshdrstrndx" = xyes; then : + : +else + have_libelf=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_getshdrnum in -lelf" >&5 +$as_echo_n "checking for elf_getshdrnum in -lelf... " >&6; } +if ${ac_cv_lib_elf_elf_getshdrnum+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lelf $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char elf_getshdrnum (); +int +main () +{ +return elf_getshdrnum (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_elf_elf_getshdrnum=yes +else + ac_cv_lib_elf_elf_getshdrnum=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_getshdrnum" >&5 +$as_echo "$ac_cv_lib_elf_elf_getshdrnum" >&6; } +if test "x$ac_cv_lib_elf_elf_getshdrnum" = xyes; then : + : +else + have_libelf=no +fi + + ac_fn_c_check_header_mongrel "$LINENO" "libelf.h" "ac_cv_header_libelf_h" "$ac_includes_default" +if test "x$ac_cv_header_libelf_h" = xyes; then : + : +else + have_libelf=no +fi + + + LIBS=$glib_save_LIBS + + if test $have_libelf != no; then + LIBELF_LIBS=-lelf + have_libelf=yes + fi + +fi + +fi + +if test x$have_libelf = xyes; then + +$as_echo "#define HAVE_LIBELF 1" >>confdefs.h + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for platform-dependent source" >&5 +$as_echo_n "checking for platform-dependent source... " >&6; } +case "$host" in + *-*-cygwin*|*-*-mingw*) + PLATFORMDEP=gwin32.lo + ;; + *) + PLATFORMDEP= + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $PLATFORMDEP" >&5 +$as_echo "$PLATFORMDEP" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to compile timeloop" >&5 +$as_echo_n "checking whether to compile timeloop... " >&6; } +case "$host" in + *-*-cygwin*|*-*-mingw*|*-*-minix) + enable_timeloop=no + ;; + *) + enable_timeloop=yes + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_timeloop" >&5 +$as_echo "$enable_timeloop" >&6; } + if test x$enable_timeloop = xyes; then + ENABLE_TIMELOOP_TRUE= + ENABLE_TIMELOOP_FALSE='#' +else + ENABLE_TIMELOOP_TRUE='#' + ENABLE_TIMELOOP_FALSE= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if building for some Win32 platform" >&5 +$as_echo_n "checking if building for some Win32 platform... " >&6; } +case "$host" in + *-*-mingw*|*-*-cygwin*) + platform_win32=yes + ;; + *) + platform_win32=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $platform_win32" >&5 +$as_echo "$platform_win32" >&6; } + if test x$platform_win32 = xyes; then + PLATFORM_WIN32_TRUE= + PLATFORM_WIN32_FALSE='#' +else + PLATFORM_WIN32_TRUE='#' + PLATFORM_WIN32_FALSE= +fi + + + + +# Check whether --with-threads was given. +if test "${with_threads+set}" = set; then : + withval=$with_threads; +else + with_threads=yes +fi + + + +THREAD_NO_IMPLEMENTATION="No thread implementation found." + +FLAG_DOES_NOT_WORK="I can't find the MACRO to enable thread safety on your + platform (normally it's "_REENTRANT"). I'll not use any flag on + compilation now, but then your programs might not work. + Please provide information on how it is done on your system." + +LIBS_NOT_FOUND_1="I can't find the libraries for the thread implementation + " + +LIBS_NOT_FOUND_2=". Please choose another thread implementation or + provide information on your thread implementation." + +FUNC_NO_GETPWUID_R="the 'g_get_(user_name|real_name|home_dir|tmp_dir)' + functions will not be MT-safe during their first call because + there is no working 'getpwuid_r' on your system." + +FUNC_NO_LOCALTIME_R="the 'g_date_set_time' function will not be MT-safe + because there is no 'localtime_r' on your system." + +AIX_COMPILE_INFO="AIX's C compiler needs to be called by a different name, when + linking threaded applications. As GLib cannot do that + automatically, you will get an linkg error everytime you are + not using the right compiler. In that case you have to relink + with the right compiler. Ususally just '_r' is appended + to the compiler name." + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for thread implementation" >&5 +$as_echo_n "checking for thread implementation... " >&6; } + +have_threads=no +if test "x$with_threads" = xyes || test "x$with_threads" = xposix; then : + + if test "x$have_threads" = xno; then : + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + have_threads=posix +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + # Tru64Unix requires -pthread to find pthread.h. See #103020 + if test "x$have_threads" = xno; then + glib_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -pthread" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + have_threads=posix +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CPPFLAGS="$glib_save_CPPFLAGS" + fi + +fi +if test "x$with_threads" = xyes || test "x$with_threads" = xwin32; then + case $host in + *-*-mingw*) + have_threads=win32 + ;; + esac +fi + +if test "x$have_threads" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none available" >&5 +$as_echo "none available" >&6; } + as_fn_error $? "$THREAD_NO_IMPLEMENTATION" "$LINENO" 5 +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_threads" >&5 +$as_echo "$have_threads" >&6; } +fi + + + +G_THREAD_LIBS= +G_THREAD_LIBS_EXTRA= +G_THREAD_CFLAGS= + + + +if test x"$have_threads" = xposix; then : + + # First we test for posix, whether -pthread or -pthreads do the trick as + # both CPPFLAG and LIBS. + # One of them does for most gcc versions and some other platforms/compilers + # too and could be considered as the canonical way to go. + case $host in + *-*-cygwin*|*-*-darwin*) + # skip cygwin and darwin -pthread or -pthreads test + ;; + *-solaris*) + # These compiler/linker flags work with both Sun Studio and gcc + # Sun Studio expands -mt to -D_REENTRANT and -lthread + # gcc expands -pthreads to -D_REENTRANT -D_PTHREADS -lpthread + G_THREAD_CFLAGS="-D_REENTRANT -D_PTHREADS" + G_THREAD_LIBS="-lpthread -lthread" + ;; + *) + for flag in pthread pthreads mt; do + glib_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -$flag" + if test "$cross_compiling" = yes; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +int check_me = 0; +void* func(void* data) {check_me = 42; return &check_me;} +int main() + { pthread_t t; + void *ret; + pthread_create (&t, 0, func, 0); + pthread_join (t, &ret); + return (check_me != 42 || ret != &check_me); +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + glib_flag_works=yes +else + glib_flag_works=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +int check_me = 0; +void* func(void* data) {check_me = 42; return &check_me;} +int main() + { pthread_t t; + void *ret; + pthread_create (&t, 0, func, 0); + pthread_join (t, &ret); + return (check_me != 42 || ret != &check_me); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + glib_flag_works=yes +else + glib_flag_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + CFLAGS="$glib_save_CFLAGS" + if test $glib_flag_works = yes ; then + G_THREAD_CFLAGS=-$flag + G_THREAD_LIBS=-$flag + break; + fi + done + ;; + esac + +fi + +if test x"$G_THREAD_CFLAGS" = x; then : + + + # The canonical -pthread[s] does not work. Try something different. + + case $host in + *-aix*) + if test x"$GCC" = xyes; then + # GCC 3.0 and above needs -pthread. + # Should be coverd by the case above. + # GCC 2.x and below needs -mthreads + G_THREAD_CFLAGS="-mthreads" + G_THREAD_LIBS=$G_THREAD_CFLAGS + else + # We are probably using the aix compiler. Normaly a + # program would have to be compiled with the _r variant + # of the corresponding compiler, but we as GLib cannot + # do that: but the good news is that for compiling the + # only difference is the added -D_THREAD_SAFE compile + # option. This is according to the "C for AIX User's + # Guide". + G_THREAD_CFLAGS="-D_THREAD_SAFE" + fi + ;; + *-sysv5uw7*) # UnixWare 7 + # We are not using gcc with -pthread. Catched above. + G_THREAD_CFLAGS="-Kthread" + G_THREAD_LIBS=$G_THREAD_CFLAGS + ;; + *-mingw*) + # No flag needed when using MSVCRT.DLL + G_THREAD_CFLAGS="" + ;; + *) + G_THREAD_CFLAGS="-D_REENTRANT" # good default guess otherwise + ;; + esac + +fi + +# if we are not finding the localtime_r function, then we probably are +# not using the proper multithread flag + +glib_save_CPPFLAGS="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS" + +# First we test, whether localtime_r is declared in time.h +# directly. Then we test whether a macro localtime_r exists, in +# which case localtime_r in the test program is replaced and thus +# if we still find localtime_r in the output, it is not defined as +# a macro. + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]" >/dev/null 2>&1; then : + +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + localtime_r(a,b) +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "[^a-zA-Z1-9_]localtime_r[^a-zA-Z1-9_]" >/dev/null 2>&1; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $FLAG_DOES_NOT_WORK" >&5 +$as_echo "$as_me: WARNING: $FLAG_DOES_NOT_WORK" >&2;} +fi +rm -f conftest* + +fi +rm -f conftest* + + +CPPFLAGS="$glib_save_CPPFLAGS" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking thread related cflags" >&5 +$as_echo_n "checking thread related cflags... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $G_THREAD_CFLAGS" >&5 +$as_echo "$G_THREAD_CFLAGS" >&6; } +CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS" + + +if test x$have_threads = xposix; then : + + glib_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES" + if test x"$G_THREAD_LIBS" = x ; then : + + case $host in + *-aix*) + # We are not using gcc (would have set G_THREAD_LIBS) and thus + # probably using the aix compiler. + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $AIX_COMPILE_INFO" >&5 +$as_echo "$as_me: WARNING: $AIX_COMPILE_INFO" >&2;} + ;; + *) + G_THREAD_LIBS=error + glib_save_LIBS="$LIBS" + for thread_lib in "" pthread pthread32 pthreads thread; do + if test x"$thread_lib" = x; then + add_thread_lib="" + IN="" + else + add_thread_lib="-l$thread_lib" + IN=" in -l$thread_lib" + fi + if test x"$have_threads" = xposix; then + defattr=0 + else + defattr=pthread_attr_default + fi + + LIBS="$add_thread_lib $glib_save_LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create/pthread_join$IN" >&5 +$as_echo_n "checking for pthread_create/pthread_join$IN... " >&6; } + if test "$cross_compiling" = yes; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +int check_me = 0; +void* func(void* data) {check_me = 42; return &check_me;} +int main() + { pthread_t t; + void *ret; + pthread_create (&t, $defattr, func, 0); + pthread_join (t, &ret); + return (check_me != 42 || ret != &check_me); +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + glib_result=yes +else + glib_result=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +int check_me = 0; +void* func(void* data) {check_me = 42; return &check_me;} +int main() + { pthread_t t; + void *ret; + pthread_create (&t, $defattr, func, 0); + pthread_join (t, &ret); + return (check_me != 42 || ret != &check_me); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + glib_result=yes +else + glib_result=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_result" >&5 +$as_echo "$glib_result" >&6; } + + if test "$glib_result" = "yes" ; then + G_THREAD_LIBS="$add_thread_lib" + break + fi + done + if test "x$G_THREAD_LIBS" = xerror; then + as_fn_error $? "$LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2" "$LINENO" 5 + fi + LIBS="$glib_save_LIBS" + ;; + esac + +fi + + g_threads_impl="POSIX" + +$as_echo "#define THREADS_POSIX 1" >>confdefs.h + + + CPPFLAGS="$glib_save_CPPFLAGS" + +elif test x$have_threads = xwin32; then : + + +$as_echo "#define THREADS_WIN32 1" >>confdefs.h + + g_threads_impl="WIN32" + +else + + +$as_echo "#define THREADS_NONE 1" >>confdefs.h + + g_threads_impl="NONE" + G_THREAD_LIBS=error + +fi + if test "$g_threads_impl" = "POSIX"; then + THREADS_POSIX_TRUE= + THREADS_POSIX_FALSE='#' +else + THREADS_POSIX_TRUE='#' + THREADS_POSIX_FALSE= +fi + + if test "$g_threads_impl" = "WIN32"; then + THREADS_WIN32_TRUE= + THREADS_WIN32_FALSE='#' +else + THREADS_WIN32_TRUE='#' + THREADS_WIN32_FALSE= +fi + + if test "$g_threads_impl" = "NONE"; then + THREADS_NONE_TRUE= + THREADS_NONE_FALSE='#' +else + THREADS_NONE_TRUE='#' + THREADS_NONE_FALSE= +fi + + +if test "x$G_THREAD_LIBS" = xerror; then + as_fn_error $? "$LIBS_NOT_FOUND_1$have_threads$LIBS_NOT_FOUND_2" "$LINENO" 5 +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking thread related libraries" >&5 +$as_echo_n "checking thread related libraries... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $G_THREAD_LIBS" >&5 +$as_echo "$G_THREAD_LIBS" >&6; } + + +glib_save_LIBS="$LIBS" +# we are not doing the following for now, as this might require glib +# to always be linked with the thread libs on some platforms. +# LIBS="$LIBS $G_THREAD_LIBS" +for ac_func in localtime_r gmtime_r getpwuid_r getgrgid_r +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +LIBS="$G_THREAD_LIBS $LIBS" +if test x"$have_threads" = xposix; then : + + glib_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES" + # This is not AC_CHECK_FUNC to also work with function + # name mangling in header files. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_attr_setstacksize" >&5 +$as_echo_n "checking for pthread_attr_setstacksize... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_attr_t t; pthread_attr_setstacksize(&t,0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_condattr_setclock" >&5 +$as_echo_n "checking for pthread_condattr_setclock... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_condattr_t a; pthread_condattr_setclock(&a,0) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_cond_timedwait_relative_np" >&5 +$as_echo_n "checking for pthread_cond_timedwait_relative_np... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_cond_timedwait_relative_np(NULL, NULL, NULL) + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP 1" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_setname_np(const char*)" >&5 +$as_echo_n "checking for pthread_setname_np(const char*)... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_setname_np("example") + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID 1" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CPPFLAGS="$glib_save_CPPFLAGS" + +fi + +LIBS="$glib_save_LIBS" + +# now spit out all the warnings. +if test "$ac_cv_func_getpwuid_r" != "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $FUNC_NO_GETPWUID_R" >&5 +$as_echo "$as_me: WARNING: $FUNC_NO_GETPWUID_R" >&2;} +fi +if test "$ac_cv_func_localtime_r" != "yes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $FUNC_NO_LOCALTIME_R" >&5 +$as_echo "$as_me: WARNING: $FUNC_NO_LOCALTIME_R" >&2;} +fi + +# +# Hack to deal with: +# +# a) GCC < 3.3 for Linux doesn't include -lpthread when +# building shared libraries with linux. +# b) FreeBSD doesn't do this either. +# +case $host in + *android*) + G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS" + ;; + *-*-freebsd*|*-*-linux*) + G_THREAD_LIBS_FOR_GTHREAD="`echo $G_THREAD_LIBS | sed s/-pthread/-lpthread/`" + ;; + *) + G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS" + ;; +esac + + + + + + +for ac_func in clock_gettime +do : + ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime" +if test "x$ac_cv_func_clock_gettime" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_CLOCK_GETTIME 1 +_ACEOF + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5 +$as_echo_n "checking for clock_gettime in -lrt... " >&6; } +if ${ac_cv_lib_rt_clock_gettime+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lrt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char clock_gettime (); +int +main () +{ +return clock_gettime (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_rt_clock_gettime=yes +else + ac_cv_lib_rt_clock_gettime=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5 +$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; } +if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then : + + G_THREAD_LIBS="$G_THREAD_LIBS -lrt" + G_THREAD_LIBS_FOR_GTHREAD="$G_THREAD_LIBS_FOR_GTHREAD -lrt" + +fi + + +fi +done + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for lock-free atomic intrinsics" >&5 +$as_echo_n "checking for lock-free atomic intrinsics... " >&6; } +if ${glib_cv_g_atomic_lock_free+:} false; then : + $as_echo_n "(cached) " >&6 +else + + case $host in + *-*-mingw*) + glib_cv_g_atomic_lock_free=yes + ;; + *) + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +volatile int atomic = 2;\ + __sync_bool_compare_and_swap (&atomic, 2, 3); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + glib_cv_g_atomic_lock_free=yes +else + glib_cv_g_atomic_lock_free=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test "$glib_cv_g_atomic_lock_free" = "no"; then + SAVE_CFLAGS="${CFLAGS}" + CFLAGS="-march=i486" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +volatile int atomic = 2;\ + __sync_bool_compare_and_swap (&atomic, 2, 3); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + as_fn_error $? "GLib must be build with -march=i486 or later." "$LINENO" 5 +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="${SAVE_CFLAGS}" + fi + ;; + esac +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_g_atomic_lock_free" >&5 +$as_echo "$glib_cv_g_atomic_lock_free" >&6; } + + +case $host in + *-*-mingw*) + ;; + *) + # Some compilers support atomic operations but do not define + # __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4, like clang + if test x"$glib_cv_g_atomic_lock_free" = xyes; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +else + +$as_echo "#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + fi + ;; + esac + +case $host_cpu in + i?86|x86_64|s390|s390x|arm*|crisv32*|etrax*) + glib_memory_barrier_needed=no + ;; + sparc*|alpha*|powerpc*|ia64) + glib_memory_barrier_needed=yes + ;; + *) + glib_memory_barrier_needed=yes + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for futex(2) system call" >&5 +$as_echo_n "checking for futex(2) system call... " >&6; } +if ${glib_cv_futex+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include + +int +main () +{ + + syscall (__NR_futex, NULL, FUTEX_WAKE, FUTEX_WAIT); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + glib_cv_futex=yes +else + glib_cv_futex=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_futex" >&5 +$as_echo "$glib_cv_futex" >&6; } +if test x"$glib_cv_futex" = xyes; then + +$as_echo "#define HAVE_FUTEX 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for eventfd(2) system call" >&5 +$as_echo_n "checking for eventfd(2) system call... " >&6; } +if ${glib_cv_eventfd+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main () +{ + + eventfd (0, EFD_CLOEXEC); + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + glib_cv_eventfd=yes +else + glib_cv_eventfd=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_eventfd" >&5 +$as_echo "$glib_cv_eventfd" >&6; } +if test x"$glib_cv_eventfd" = x"yes"; then + +$as_echo "#define HAVE_EVENTFD 1" >>confdefs.h + +fi + if test "$glib_cv_eventfd" = "yes"; then + HAVE_EVENTFD_TRUE= + HAVE_EVENTFD_FALSE='#' +else + HAVE_EVENTFD_TRUE='#' + HAVE_EVENTFD_FALSE= +fi + + + +glib_poll_includes=" +#include +#include +" + +if test $ac_cv_header_sys_types_h = yes && + test $ac_cv_func_poll = yes ; then : + + glib_failed=false + { $as_echo "$as_me:${as_lineno-$LINENO}: checking value of POLLIN" >&5 +$as_echo_n "checking value of POLLIN... " >&6; } +if ${glib_cv_value_POLLIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "POLLIN" "glib_cv_value_POLLIN" "$glib_poll_includes"; then : + +else + glib_failed=true +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_value_POLLIN" >&5 +$as_echo "$glib_cv_value_POLLIN" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking value of POLLOUT" >&5 +$as_echo_n "checking value of POLLOUT... " >&6; } +if ${glib_cv_value_POLLOUT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "POLLOUT" "glib_cv_value_POLLOUT" "$glib_poll_includes"; then : + +else + glib_failed=true +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_value_POLLOUT" >&5 +$as_echo "$glib_cv_value_POLLOUT" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking value of POLLPRI" >&5 +$as_echo_n "checking value of POLLPRI... " >&6; } +if ${glib_cv_value_POLLPRI+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "POLLPRI" "glib_cv_value_POLLPRI" "$glib_poll_includes"; then : + +else + glib_failed=true +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_value_POLLPRI" >&5 +$as_echo "$glib_cv_value_POLLPRI" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking value of POLLERR" >&5 +$as_echo_n "checking value of POLLERR... " >&6; } +if ${glib_cv_value_POLLERR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "POLLERR" "glib_cv_value_POLLERR" "$glib_poll_includes"; then : + +else + glib_failed=true +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_value_POLLERR" >&5 +$as_echo "$glib_cv_value_POLLERR" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking value of POLLHUP" >&5 +$as_echo_n "checking value of POLLHUP... " >&6; } +if ${glib_cv_value_POLLHUP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "POLLHUP" "glib_cv_value_POLLHUP" "$glib_poll_includes"; then : + +else + glib_failed=true +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_value_POLLHUP" >&5 +$as_echo "$glib_cv_value_POLLHUP" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking value of POLLNVAL" >&5 +$as_echo_n "checking value of POLLNVAL... " >&6; } +if ${glib_cv_value_POLLNVAL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "POLLNVAL" "glib_cv_value_POLLNVAL" "$glib_poll_includes"; then : + +else + glib_failed=true +fi + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_value_POLLNVAL" >&5 +$as_echo "$glib_cv_value_POLLNVAL" >&6; } + + if $glib_failed ; then + as_fn_error $? "Could not determine values for POLL* constants" "$LINENO" 5 + fi + +else + + glib_cv_value_POLLIN=1 + glib_cv_value_POLLOUT=4 + glib_cv_value_POLLPRI=2 + glib_cv_value_POLLERR=8 + glib_cv_value_POLLHUP=16 + glib_cv_value_POLLNVAL=32 + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken poll" >&5 +$as_echo_n "checking for broken poll... " >&6; } +if test "$cross_compiling" = yes; then : + broken_poll="no (cross compiling)" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + int main(void) { + struct pollfd fds[1]; + int fd; + fd = open("/dev/null", 1); + fds[0].fd = fd; + fds[0].events = POLLIN; + fds[0].revents = 0; + if (poll(fds, 1, 0) < 0 || (fds[0].revents & POLLNVAL) != 0) { + exit(1); /* Does not work for devices -- fail */ + } + exit(0); + } +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + broken_poll=no +else + broken_poll=yes + +$as_echo "#define BROKEN_POLL 1" >>confdefs.h + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $broken_poll" >&5 +$as_echo "$broken_poll" >&6; } + + +PCRE_REQUIRED_VERSION=8.13 + +# Check if we should use the internal or the system-supplied pcre + +# Check whether --with-pcre was given. +if test "${with_pcre+set}" = set; then : + withval=$with_pcre; +else + with_pcre=system +fi + + + if test "x$with_pcre" = xsystem; then + USE_SYSTEM_PCRE_TRUE= + USE_SYSTEM_PCRE_FALSE='#' +else + USE_SYSTEM_PCRE_TRUE='#' + USE_SYSTEM_PCRE_FALSE= +fi + + +if test "x$with_pcre" = xsystem; then : + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PCRE" >&5 +$as_echo_n "checking for PCRE... " >&6; } + +if test -n "$PCRE_CFLAGS"; then + pkg_cv_PCRE_CFLAGS="$PCRE_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpcre >= \$PCRE_REQUIRED_VERSION\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libpcre >= $PCRE_REQUIRED_VERSION") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PCRE_CFLAGS=`$PKG_CONFIG --cflags "libpcre >= $PCRE_REQUIRED_VERSION" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$PCRE_LIBS"; then + pkg_cv_PCRE_LIBS="$PCRE_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libpcre >= \$PCRE_REQUIRED_VERSION\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libpcre >= $PCRE_REQUIRED_VERSION") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_PCRE_LIBS=`$PKG_CONFIG --libs "libpcre >= $PCRE_REQUIRED_VERSION" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + PCRE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libpcre >= $PCRE_REQUIRED_VERSION" 2>&1` + else + PCRE_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libpcre >= $PCRE_REQUIRED_VERSION" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$PCRE_PKG_ERRORS" >&5 + + as_fn_error $? "Package requirements (libpcre >= $PCRE_REQUIRED_VERSION) were not met: + +$PCRE_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +Alternatively, you may set the environment variables PCRE_CFLAGS +and PCRE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +Alternatively, you may set the environment variables PCRE_CFLAGS +and PCRE_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details. + +To get pkg-config, see . +See \`config.log' for more details" "$LINENO" 5; } +else + PCRE_CFLAGS=$pkg_cv_PCRE_CFLAGS + PCRE_LIBS=$pkg_cv_PCRE_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Unicode support in PCRE" >&5 +$as_echo_n "checking for Unicode support in PCRE... " >&6; } +if ${glib_cv_pcre_has_unicode+:} false; then : + $as_echo_n "(cached) " >&6 +else + + glib_save_CFLAGS="$CFLAGS" + glib_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $PCRE_CFLAGS" LIBS="$PCRE_LIBS" + if test "$cross_compiling" = yes; then : + glib_cv_pcre_has_unicode=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + int main () { + int support; + pcre_config (PCRE_CONFIG_UTF8, &support); + if (!support) + return 1; + pcre_config (PCRE_CONFIG_UNICODE_PROPERTIES, &support); + if (!support) + return 1; + return 0; + } +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + glib_cv_pcre_has_unicode=yes +else + glib_cv_pcre_has_unicode=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + CFLAGS="$glib_save_CFLAGS" + LIBS="$glib_save_LIBS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_pcre_has_unicode" >&5 +$as_echo "$glib_cv_pcre_has_unicode" >&6; } + if test "$glib_cv_pcre_has_unicode" = "no"; then + as_fn_error $? "*** The system-supplied PCRE does not support Unicode properties or UTF-8." "$LINENO" 5 + fi + + + +$as_echo "#define USE_SYSTEM_PCRE /**/" >>confdefs.h + + PCRE_REQUIRES=libpcre + + +else + + # If using gcc 4 pass -Wno-pointer-sign when compiling the internal PCRE + if test x"$GCC" = xyes; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler understands -Wno-pointer-sign" >&5 +$as_echo_n "checking whether compiler understands -Wno-pointer-sign... " >&6; } + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -Wno-pointer-sign" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + PCRE_WARN_CFLAGS="$PCRE_WARN_CFLAGS -Wno-pointer-sign" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + +fi + +fi + + + +case $host in + *-*-cygwin*) + G_LIBS_EXTRA="-luser32 -lkernel32" + ;; + *-*-mingw*) + G_LIBS_EXTRA="-lws2_32 -lole32 -lwinmm -lshlwapi" + ;; + *) + G_LIBS_EXTRA="" + ;; +esac + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EILSEQ" >&5 +$as_echo_n "checking for EILSEQ... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include + +int +main () +{ + +int error = EILSEQ; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + have_eilseq=yes +else + have_eilseq=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext; +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_eilseq" >&5 +$as_echo "$have_eilseq" >&6; } + + if test $cross_compiling = yes; then + CROSS_COMPILING_TRUE= + CROSS_COMPILING_FALSE='#' +else + CROSS_COMPILING_TRUE='#' + CROSS_COMPILING_FALSE= +fi + + +# gtkdocize greps for ^GTK_DOC_CHECK and parses it, so you need to have +# it on it's own line. + + + + + gtk_doc_requires="gtk-doc >= 1.20" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gtk-doc" >&5 +$as_echo_n "checking for gtk-doc... " >&6; } + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$gtk_doc_requires\""; } >&5 + ($PKG_CONFIG --exists --print-errors "$gtk_doc_requires") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + have_gtk_doc=yes +else + have_gtk_doc=no +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_gtk_doc" >&5 +$as_echo "$have_gtk_doc" >&6; } + + if test "$have_gtk_doc" = "no"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: + You will not be able to create source packages with 'make dist' + because $gtk_doc_requires is not found." >&5 +$as_echo "$as_me: WARNING: + You will not be able to create source packages with 'make dist' + because $gtk_doc_requires is not found." >&2;} + fi + + # Extract the first word of "gtkdoc-check", so it can be a program name with args. +set dummy gtkdoc-check; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_GTKDOC_CHECK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$GTKDOC_CHECK"; then + ac_cv_prog_GTKDOC_CHECK="$GTKDOC_CHECK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_GTKDOC_CHECK="gtkdoc-check.test" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GTKDOC_CHECK=$ac_cv_prog_GTKDOC_CHECK +if test -n "$GTKDOC_CHECK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK" >&5 +$as_echo "$GTKDOC_CHECK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + # Extract the first word of "gtkdoc-check", so it can be a program name with args. +set dummy gtkdoc-check; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GTKDOC_CHECK_PATH+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GTKDOC_CHECK_PATH in + [\\/]* | ?:[\\/]*) + ac_cv_path_GTKDOC_CHECK_PATH="$GTKDOC_CHECK_PATH" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GTKDOC_CHECK_PATH="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GTKDOC_CHECK_PATH=$ac_cv_path_GTKDOC_CHECK_PATH +if test -n "$GTKDOC_CHECK_PATH"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_CHECK_PATH" >&5 +$as_echo "$GTKDOC_CHECK_PATH" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + for ac_prog in gtkdoc-rebase +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GTKDOC_REBASE+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GTKDOC_REBASE in + [\\/]* | ?:[\\/]*) + ac_cv_path_GTKDOC_REBASE="$GTKDOC_REBASE" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GTKDOC_REBASE="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GTKDOC_REBASE=$ac_cv_path_GTKDOC_REBASE +if test -n "$GTKDOC_REBASE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_REBASE" >&5 +$as_echo "$GTKDOC_REBASE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$GTKDOC_REBASE" && break +done +test -n "$GTKDOC_REBASE" || GTKDOC_REBASE="true" + + # Extract the first word of "gtkdoc-mkpdf", so it can be a program name with args. +set dummy gtkdoc-mkpdf; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GTKDOC_MKPDF+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GTKDOC_MKPDF in + [\\/]* | ?:[\\/]*) + ac_cv_path_GTKDOC_MKPDF="$GTKDOC_MKPDF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GTKDOC_MKPDF="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GTKDOC_MKPDF=$ac_cv_path_GTKDOC_MKPDF +if test -n "$GTKDOC_MKPDF"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTKDOC_MKPDF" >&5 +$as_echo "$GTKDOC_MKPDF" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + +# Check whether --with-html-dir was given. +if test "${with_html_dir+set}" = set; then : + withval=$with_html_dir; +else + with_html_dir='${datadir}/gtk-doc/html' +fi + + HTML_DIR="$with_html_dir" + + + # Check whether --enable-gtk-doc was given. +if test "${enable_gtk_doc+set}" = set; then : + enableval=$enable_gtk_doc; +else + enable_gtk_doc=no +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build gtk-doc documentation" >&5 +$as_echo_n "checking whether to build gtk-doc documentation... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_gtk_doc" >&5 +$as_echo "$enable_gtk_doc" >&6; } + + if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then + as_fn_error $? " + You must have $gtk_doc_requires installed to build documentation for + $PACKAGE_NAME. Please install gtk-doc or disable building the + documentation by adding '--disable-gtk-doc' to '$0'." "$LINENO" 5 + fi + + if test "x$PACKAGE_NAME" != "xglib"; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTKDOC_DEPS" >&5 +$as_echo_n "checking for GTKDOC_DEPS... " >&6; } + +if test -n "$GTKDOC_DEPS_CFLAGS"; then + pkg_cv_GTKDOC_DEPS_CFLAGS="$GTKDOC_DEPS_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GTKDOC_DEPS_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$GTKDOC_DEPS_LIBS"; then + pkg_cv_GTKDOC_DEPS_LIBS="$GTKDOC_DEPS_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GTKDOC_DEPS_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` + else + GTKDOC_DEPS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$GTKDOC_DEPS_PKG_ERRORS" >&5 + + : +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + : +else + GTKDOC_DEPS_CFLAGS=$pkg_cv_GTKDOC_DEPS_CFLAGS + GTKDOC_DEPS_LIBS=$pkg_cv_GTKDOC_DEPS_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi + fi + + # Check whether --enable-gtk-doc-html was given. +if test "${enable_gtk_doc_html+set}" = set; then : + enableval=$enable_gtk_doc_html; +else + enable_gtk_doc_html=yes +fi + + # Check whether --enable-gtk-doc-pdf was given. +if test "${enable_gtk_doc_pdf+set}" = set; then : + enableval=$enable_gtk_doc_pdf; +else + enable_gtk_doc_pdf=no +fi + + + if test -z "$GTKDOC_MKPDF"; then + enable_gtk_doc_pdf=no + fi + + if test -z "$AM_DEFAULT_VERBOSITY"; then + AM_DEFAULT_VERBOSITY=1 + fi + + + if test x$have_gtk_doc = xyes; then + HAVE_GTK_DOC_TRUE= + HAVE_GTK_DOC_FALSE='#' +else + HAVE_GTK_DOC_TRUE='#' + HAVE_GTK_DOC_FALSE= +fi + + if test x$enable_gtk_doc = xyes; then + ENABLE_GTK_DOC_TRUE= + ENABLE_GTK_DOC_FALSE='#' +else + ENABLE_GTK_DOC_TRUE='#' + ENABLE_GTK_DOC_FALSE= +fi + + if test x$enable_gtk_doc_html = xyes; then + GTK_DOC_BUILD_HTML_TRUE= + GTK_DOC_BUILD_HTML_FALSE='#' +else + GTK_DOC_BUILD_HTML_TRUE='#' + GTK_DOC_BUILD_HTML_FALSE= +fi + + if test x$enable_gtk_doc_pdf = xyes; then + GTK_DOC_BUILD_PDF_TRUE= + GTK_DOC_BUILD_PDF_FALSE='#' +else + GTK_DOC_BUILD_PDF_TRUE='#' + GTK_DOC_BUILD_PDF_FALSE= +fi + + if test -n "$LIBTOOL"; then + GTK_DOC_USE_LIBTOOL_TRUE= + GTK_DOC_USE_LIBTOOL_FALSE='#' +else + GTK_DOC_USE_LIBTOOL_TRUE='#' + GTK_DOC_USE_LIBTOOL_FALSE= +fi + + if test -n "$GTKDOC_REBASE"; then + GTK_DOC_USE_REBASE_TRUE= + GTK_DOC_USE_REBASE_FALSE='#' +else + GTK_DOC_USE_REBASE_TRUE='#' + GTK_DOC_USE_REBASE_FALSE= +fi + + + + +# Check whether --enable-man was given. +if test "${enable_man+set}" = set; then : + enableval=$enable_man; +else + enable_man=maybe +fi + + +if test "$enable_man" != no; then : + + # Extract the first word of "xsltproc", so it can be a program name with args. +set dummy xsltproc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_XSLTPROC+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $XSLTPROC in + [\\/]* | ?:[\\/]*) + ac_cv_path_XSLTPROC="$XSLTPROC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_XSLTPROC="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +XSLTPROC=$ac_cv_path_XSLTPROC +if test -n "$XSLTPROC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XSLTPROC" >&5 +$as_echo "$XSLTPROC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test -z "$XSLTPROC"; then : + + if test "$enable_man" = yes; then : + + as_fn_error $? "xsltproc is required for --enable-man" "$LINENO" 5 + +fi + enable_man=no + +fi + +fi + + + # check for the presence of the XML catalog + +# Check whether --with-xml-catalog was given. +if test "${with_xml_catalog+set}" = set; then : + withval=$with_xml_catalog; +else + with_xml_catalog=/etc/xml/catalog +fi + + jh_found_xmlcatalog=true + XML_CATALOG_FILE="$with_xml_catalog" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML catalog ($XML_CATALOG_FILE)" >&5 +$as_echo_n "checking for XML catalog ($XML_CATALOG_FILE)... " >&6; } + if test -f "$XML_CATALOG_FILE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 +$as_echo "found" >&6; } + else + jh_found_xmlcatalog=false + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + fi + + # check for the xmlcatalog program + # Extract the first word of "xmlcatalog", so it can be a program name with args. +set dummy xmlcatalog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_XMLCATALOG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $XMLCATALOG in + [\\/]* | ?:[\\/]*) + ac_cv_path_XMLCATALOG="$XMLCATALOG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_XMLCATALOG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_XMLCATALOG" && ac_cv_path_XMLCATALOG="no" + ;; +esac +fi +XMLCATALOG=$ac_cv_path_XMLCATALOG +if test -n "$XMLCATALOG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XMLCATALOG" >&5 +$as_echo "$XMLCATALOG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$XMLCATALOG" = xno; then + jh_found_xmlcatalog=false + fi + + if $jh_found_xmlcatalog; then + : + else + : + fi + +if test "$enable_man" != no ; then : + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DocBook XML DTD V4.1.2 in XML catalog" >&5 +$as_echo_n "checking for DocBook XML DTD V4.1.2 in XML catalog... " >&6; } + if $jh_found_xmlcatalog && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$XMLCATALOG --noout \"\$XML_CATALOG_FILE\" \"-//OASIS//DTD DocBook XML V4.1.2//EN\" >&2"; } >&5 + ($XMLCATALOG --noout "$XML_CATALOG_FILE" "-//OASIS//DTD DocBook XML V4.1.2//EN" >&2) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 +$as_echo "found" >&6; } + have_docbook_dtd=yes + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + have_docbook_dtd=no + fi + + if test "$have_docbook_dtd" != yes; then : + + if test "$enable_man" = yes ; then : + + as_fn_error $? "DocBook DTD is required for --enable-man" "$LINENO" 5 + +fi + enable_man=no + +fi + +fi + +if test "$enable_man" != no; then : + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for DocBook XSL Stylesheets in XML catalog" >&5 +$as_echo_n "checking for DocBook XSL Stylesheets in XML catalog... " >&6; } + if $jh_found_xmlcatalog && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$XMLCATALOG --noout \"\$XML_CATALOG_FILE\" \"http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl\" >&2"; } >&5 + ($XMLCATALOG --noout "$XML_CATALOG_FILE" "http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl" >&2) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 +$as_echo "found" >&6; } + have_docbook_style=yes + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 +$as_echo "not found" >&6; } + have_docbook_style=no + fi + + if test "$have_docbook_style" != yes ; then : + + if test "$enable_man" = yes ; then : + + as_fn_error $? "DocBook XSL Stylesheets are required for --enable-man" "$LINENO" 5 + +fi + enable_man=no + +fi + +fi + + if test "$enable_man" != no; then + ENABLE_MAN_TRUE= + ENABLE_MAN_FALSE='#' +else + ENABLE_MAN_TRUE='#' + ENABLE_MAN_FALSE= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to generate man pages" >&5 +$as_echo_n "checking whether to generate man pages... " >&6; } +if test "$enable_man" != no ; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi + + +# Check whether --enable-dtrace was given. +if test "${enable_dtrace+set}" = set; then : + enableval=$enable_dtrace; +fi + +have_dtrace=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to include dtrace tracing support" >&5 +$as_echo_n "checking whether to include dtrace tracing support... " >&6; } +if test "x$enable_dtrace" != xno; then : + + if test x$glib_have_carbon = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (not yet compatible with MacOS dtrace)" >&5 +$as_echo "no (not yet compatible with MacOS dtrace)" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + for ac_prog in dtrace +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DTRACE+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DTRACE"; then + ac_cv_prog_DTRACE="$DTRACE" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DTRACE="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DTRACE=$ac_cv_prog_DTRACE +if test -n "$DTRACE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DTRACE" >&5 +$as_echo "$DTRACE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DTRACE" && break +done + + if test -z "$DTRACE"; then + if test "x$enable_dtrace" = xyes; then + as_fn_error $? "dtrace not found" "$LINENO" 5 + fi + else + ac_fn_c_check_header_mongrel "$LINENO" "sys/sdt.h" "ac_cv_header_sys_sdt_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_sdt_h" = xyes; then : + have_dtrace=yes +else + if test "x$enable_dtrace" = xyes; then + as_fn_error $? "dtrace support needs sys/sdt.h header" "$LINENO" 5 + fi +fi + + + fi + fi + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +if test "x$have_dtrace" = xyes; then + +$as_echo "#define HAVE_DTRACE 1" >>confdefs.h + +fi + if test x$have_dtrace = xyes ; then + ENABLE_DTRACE_TRUE= + ENABLE_DTRACE_FALSE='#' +else + ENABLE_DTRACE_TRUE='#' + ENABLE_DTRACE_FALSE= +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to include systemtap tracing support" >&5 +$as_echo_n "checking whether to include systemtap tracing support... " >&6; } +# Check whether --enable-systemtap was given. +if test "${enable_systemtap+set}" = set; then : + enableval=$enable_systemtap; +fi + +have_systemtap=no +if test "x$enable_systemtap" != xno -a "x$have_dtrace" = xyes; then + have_systemtap=yes +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${have_systemtap}" >&5 +$as_echo "${have_systemtap}" >&6; } + + if test x$have_systemtap = xyes; then + ENABLE_SYSTEMTAP_TRUE= + ENABLE_SYSTEMTAP_FALSE='#' +else + ENABLE_SYSTEMTAP_TRUE='#' + ENABLE_SYSTEMTAP_FALSE= +fi + + + +# Check whether --with-tapset-install-dir was given. +if test "${with_tapset_install_dir+set}" = set; then : + withval=$with_tapset_install_dir; if test "x${withval}" = x; then + ABS_TAPSET_DIR="\$(datadir)/systemtap/tapset" + else + ABS_TAPSET_DIR="${withval}" + fi +else + ABS_TAPSET_DIR="\$(datadir)/systemtap/tapset" +fi + + + + +# Check whether --enable-coverage was given. +if test "${enable_coverage+set}" = set; then : + enableval=$enable_coverage; use_gcov=$enableval +else + use_gcov=no +fi + + +if test "x$use_gcov" = "xyes"; then : + + if test "$GCC" != "yes"; then + as_fn_error $? "GCC is required for --enable-coverage" "$LINENO" 5 + fi + + # Extract the first word of "shtool", so it can be a program name with args. +set dummy shtool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_SHTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$SHTOOL"; then + ac_cv_prog_SHTOOL="$SHTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_SHTOOL="shtool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +SHTOOL=$ac_cv_prog_SHTOOL +if test -n "$SHTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHTOOL" >&5 +$as_echo "$SHTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + case `$SHTOOL path $CC` in + *ccache*) gcc_ccache=yes;; + *) gcc_ccache=no;; + esac + + if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then + as_fn_error $? "ccache must be disabled when --enable-coverage option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1." "$LINENO" 5 + fi + + ltp_version_list="1.6 1.7 1.8 1.9 1.10" + # Extract the first word of "lcov", so it can be a program name with args. +set dummy lcov; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LTP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LTP"; then + ac_cv_prog_LTP="$LTP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LTP="lcov" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LTP=$ac_cv_prog_LTP +if test -n "$LTP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LTP" >&5 +$as_echo "$LTP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + # Extract the first word of "genhtml", so it can be a program name with args. +set dummy genhtml; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LTP_GENHTML+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LTP_GENHTML"; then + ac_cv_prog_LTP_GENHTML="$LTP_GENHTML" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LTP_GENHTML="genhtml" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LTP_GENHTML=$ac_cv_prog_LTP_GENHTML +if test -n "$LTP_GENHTML"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LTP_GENHTML" >&5 +$as_echo "$LTP_GENHTML" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + if test "$LTP" ; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ltp version" >&5 +$as_echo_n "checking for ltp version... " >&6; } +if ${glib_cv_ltp_version+:} false; then : + $as_echo_n "(cached) " >&6 +else + + glib_cv_ltp_version=invalid + ltp_version=`$LTP -v 2>/dev/null | $SED -e 's/^.* //'` + for ltp_check_version in $ltp_version_list; do + if test "$ltp_version" = "$ltp_check_version"; then + glib_cv_ltp_version="$ltp_check_version (ok)" + fi + done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glib_cv_ltp_version" >&5 +$as_echo "$glib_cv_ltp_version" >&6; } + +else + + ltp_msg="To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list" + as_fn_error $? "$ltp_msg" "$LINENO" 5 + +fi + + case $glib_cv_ltp_version in + ""|invalid) + ltp_msg="You must have one of the following versions of LTP: $ltp_version_list (found: $ltp_version)." + as_fn_error $? "$ltp_msg" "$LINENO" 5 + LTP="exit 0;" + ;; + esac + + if test -z "$LTP_GENHTML"; then + as_fn_error $? "Could not find genhtml from the LTP package" "$LINENO" 5 + fi + + + CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'` + + + CFLAGS="$CFLAGS -O0 -fprofile-arcs -ftest-coverage" + LDFLAGS="$LDFLAGS -lgcov" + +fi + + +ac_config_commands="$ac_config_commands glib/glibconfig.h" + + +# Redo enough to get guint32 and guint64 for the alignment checks below +case 4 in +$ac_cv_sizeof_short) + gint32=short + ;; +$ac_cv_sizeof_int) + gint32=int + ;; +$ac_cv_sizeof_long) + gint32=long + ;; +esac +case 8 in +$ac_cv_sizeof_int) + gint64=int + ;; +$ac_cv_sizeof_long) + gint64=long + ;; +$ac_cv_sizeof_long_long) + gint64='long long' + ;; +$ac_cv_sizeof___int64) + gint64='__int64' + ;; +esac + +ac_fn_c_check_type "$LINENO" "guint32" "ac_cv_type_guint32" "typedef unsigned $gint32 guint32; +" +if test "x$ac_cv_type_guint32" = xyes; then : + +fi + +# The cast to long int works around a bug in the HP C Compiler, +# see AC_CHECK_SIZEOF for more information. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking alignment of guint32" >&5 +$as_echo_n "checking alignment of guint32... " >&6; } +if ${ac_cv_alignof_guint32+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_guint32" "$ac_includes_default +typedef unsigned $gint32 guint32; + +#ifndef offsetof +# define offsetof(type, member) ((char *) &((type *) 0)->member - (char *) 0) +#endif +typedef struct { char x; guint32 y; } ac__type_alignof_;"; then : + +else + if test "$ac_cv_type_guint32" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute alignment of guint32 +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_alignof_guint32=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_guint32" >&5 +$as_echo "$ac_cv_alignof_guint32" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define ALIGNOF_GUINT32 $ac_cv_alignof_guint32 +_ACEOF + + +ac_fn_c_check_type "$LINENO" "guint64" "ac_cv_type_guint64" "typedef unsigned $gint64 guint64; +" +if test "x$ac_cv_type_guint64" = xyes; then : + +fi + +# The cast to long int works around a bug in the HP C Compiler, +# see AC_CHECK_SIZEOF for more information. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking alignment of guint64" >&5 +$as_echo_n "checking alignment of guint64... " >&6; } +if ${ac_cv_alignof_guint64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_guint64" "$ac_includes_default +typedef unsigned $gint64 guint64; + +#ifndef offsetof +# define offsetof(type, member) ((char *) &((type *) 0)->member - (char *) 0) +#endif +typedef struct { char x; guint64 y; } ac__type_alignof_;"; then : + +else + if test "$ac_cv_type_guint64" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute alignment of guint64 +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_alignof_guint64=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_guint64" >&5 +$as_echo "$ac_cv_alignof_guint64" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define ALIGNOF_GUINT64 $ac_cv_alignof_guint64 +_ACEOF + + +ac_fn_c_check_type "$LINENO" "unsigned long" "ac_cv_type_unsigned_long" "$ac_includes_default" +if test "x$ac_cv_type_unsigned_long" = xyes; then : + +fi + +# The cast to long int works around a bug in the HP C Compiler, +# see AC_CHECK_SIZEOF for more information. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking alignment of unsigned long" >&5 +$as_echo_n "checking alignment of unsigned long... " >&6; } +if ${ac_cv_alignof_unsigned_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) offsetof (ac__type_alignof_, y)" "ac_cv_alignof_unsigned_long" "$ac_includes_default +#ifndef offsetof +# define offsetof(type, member) ((char *) &((type *) 0)->member - (char *) 0) +#endif +typedef struct { char x; unsigned long y; } ac__type_alignof_;"; then : + +else + if test "$ac_cv_type_unsigned_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute alignment of unsigned long +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_alignof_unsigned_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_alignof_unsigned_long" >&5 +$as_echo "$ac_cv_alignof_unsigned_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define ALIGNOF_UNSIGNED_LONG $ac_cv_alignof_unsigned_long +_ACEOF + + + +# Check for libdbus1 - Optional - is only used in the GDBus test cases +# +# 1.2.14 required for dbus_message_set_serial + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS1" >&5 +$as_echo_n "checking for DBUS1... " >&6; } + +if test -n "$DBUS1_CFLAGS"; then + pkg_cv_DBUS1_CFLAGS="$DBUS1_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 1.2.14\""; } >&5 + ($PKG_CONFIG --exists --print-errors "dbus-1 >= 1.2.14") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_DBUS1_CFLAGS=`$PKG_CONFIG --cflags "dbus-1 >= 1.2.14" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$DBUS1_LIBS"; then + pkg_cv_DBUS1_LIBS="$DBUS1_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"dbus-1 >= 1.2.14\""; } >&5 + ($PKG_CONFIG --exists --print-errors "dbus-1 >= 1.2.14") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_DBUS1_LIBS=`$PKG_CONFIG --libs "dbus-1 >= 1.2.14" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + DBUS1_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "dbus-1 >= 1.2.14" 2>&1` + else + DBUS1_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "dbus-1 >= 1.2.14" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$DBUS1_PKG_ERRORS" >&5 + + have_dbus1=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + have_dbus1=no +else + DBUS1_CFLAGS=$pkg_cv_DBUS1_CFLAGS + DBUS1_LIBS=$pkg_cv_DBUS1_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_DBUS1 1" >>confdefs.h + have_dbus1=yes +fi + + + if test "x$have_dbus1" = "xyes"; then + HAVE_DBUS1_TRUE= + HAVE_DBUS1_FALSE='#' +else + HAVE_DBUS1_TRUE='#' + HAVE_DBUS1_FALSE= +fi + + +for ac_prog in dbus-daemon +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DBUS_DAEMON+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DBUS_DAEMON"; then + ac_cv_prog_DBUS_DAEMON="$DBUS_DAEMON" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DBUS_DAEMON="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DBUS_DAEMON=$ac_cv_prog_DBUS_DAEMON +if test -n "$DBUS_DAEMON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DBUS_DAEMON" >&5 +$as_echo "$DBUS_DAEMON" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DBUS_DAEMON" && break +done + + if test x$DBUS_DAEMON = xdbus-daemon ; then + HAVE_DBUS_DAEMON_TRUE= + HAVE_DBUS_DAEMON_FALSE='#' +else + HAVE_DBUS_DAEMON_TRUE='#' + HAVE_DBUS_DAEMON_FALSE= +fi + + + +# Check whether --enable-Bsymbolic was given. +if test "${enable_Bsymbolic+set}" = set; then : + enableval=$enable_Bsymbolic; +else + SAVED_LDFLAGS="${LDFLAGS}" SAVED_LIBS="${LIBS}" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -Bsymbolic-functions linker flag" >&5 +$as_echo_n "checking for -Bsymbolic-functions linker flag... " >&6; } + LDFLAGS=-Wl,-Bsymbolic-functions + LIBS= + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + enable_Bsymbolic=yes +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + enable_Bsymbolic=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="${SAVED_LDFLAGS}" LIBS="${SAVED_LIBS}" +fi + + +if test "x${enable_Bsymbolic}" = "xyes"; then + GLIB_LINK_FLAGS=-Wl,-Bsymbolic-functions +fi + + +# Check whether --enable-znodelete was given. +if test "${enable_znodelete+set}" = set; then : + enableval=$enable_znodelete; +else + SAVED_LDFLAGS="${LDFLAGS}" SAVED_LIBS="${LIBS}" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --fatal-warnings linker flag" >&5 +$as_echo_n "checking for --fatal-warnings linker flag... " >&6; } + LDFLAGS=-Wl,--fatal-warnings + LIBS= + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + ldflags_fatal=-Wl,--fatal-warnings +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ldflags_fatal= +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -z,nodelete linker flag" >&5 +$as_echo_n "checking for -z,nodelete linker flag... " >&6; } + LDFLAGS="$ldflags_fatal -Wl,-z,nodelete" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + enable_znodelete=yes +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + enable_znodelete=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="${SAVED_LDFLAGS}" LIBS="${SAVED_LIBS}" +fi + + +if test "x${enable_znodelete}" = "xyes"; then + GLIB_LINK_FLAGS="$GLIB_LINK_FLAGS -Wl,-z,nodelete" +fi + + + +GLIB_HIDDEN_VISIBILITY_CFLAGS="" +case "$host" in + *-*-mingw*) + +$as_echo "#define _GLIB_EXTERN __attribute__((visibility(\"default\"))) __declspec(dllexport) extern" >>confdefs.h + + CFLAGS="${CFLAGS} -fvisibility=hidden" + ;; + *) + SAVED_CFLAGS="${CFLAGS}" + CFLAGS="-fvisibility=hidden" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fvisibility=hidden compiler flag" >&5 +$as_echo_n "checking for -fvisibility=hidden compiler flag... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +return 0 + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + enable_fvisibility_hidden=yes +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + enable_fvisibility_hidden=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="${SAVED_CFLAGS}" + + if test "${enable_fvisibility_hidden}" = "yes"; then : + + +$as_echo "#define _GLIB_EXTERN __attribute__((visibility(\"default\"))) extern" >>confdefs.h + + GLIB_HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden" + +fi + ;; +esac + + +# Check whether --enable-compile-warnings was given. +if test "${enable_compile_warnings+set}" = set; then : + enableval=$enable_compile_warnings; +else + enable_compile_warnings=yes +fi + +if test "x$enable_compile_warnings" = xyes; then : + + + for flag in \ + -Wall -Wstrict-prototypes -Werror=declaration-after-statement \ + -Werror=missing-prototypes -Werror=implicit-function-declaration \ + -Werror=pointer-arith -Werror=init-self -Werror=format-security \ + -Werror=format=2 -Werror=missing-include-dirs; do + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC supports flag $flag in envvar CFLAGS" >&5 +$as_echo_n "checking if $CC supports flag $flag in envvar CFLAGS... " >&6; } +if { as_var=`$as_echo "cc_cv_CFLAGS_$flag" | $as_tr_sh`; eval \${$as_var+:} false; }; then : + $as_echo_n "(cached) " >&6 +else + eval "cc_save_CFLAGS='${CFLAGS}'" + eval "CFLAGS='-Werror $flag'" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int a = 0; int main(void) { return a; } +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "`$as_echo "cc_cv_CFLAGS_$flag" | $as_tr_sh`='yes'" +else + eval "`$as_echo "cc_cv_CFLAGS_$flag" | $as_tr_sh`='no'" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + eval "CFLAGS='$cc_save_CFLAGS'" +fi +eval ac_res=\$`$as_echo "cc_cv_CFLAGS_$flag" | $as_tr_sh` + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + + if eval test x$`$as_echo "cc_cv_CFLAGS_$flag" | $as_tr_sh` = xyes; then : + eval "GLIB_WARN_CFLAGS='${GLIB_WARN_CFLAGS} $flag'" +fi + + done + + +fi + + +# +# Define variables corresponding to the correct include paths to use for +# in-tree building. +# + +# for config.h: +config_h_INCLUDES='-I$(top_builddir)' + + +# glib: +# config.h +# $(top_builddir)/glib: for glibconfig.h +# $(top_srcdir)/glib: for glib.h +# $(top_srcdir): for everything +glib_INCLUDES='$(config_h_INCLUDES) -I$(top_builddir)/glib -I$(top_srcdir)/glib -I$(top_srcdir)' + + +# gobject: +# same as glib +gobject_INCLUDES='$(glib_INCLUDES)' + + +# gmodule: +# glib includes +# $(top_srcdir)/gmodule: for gmodule.h +gmodule_INCLUDES='$(glib_INCLUDES) -I$(top_srcdir)/gmodule' + + +# gio: +# same as gmodule +gio_INCLUDES='$(gmodule_INCLUDES)' + + + +ac_config_files="$ac_config_files glib-2.0.pc gmodule-2.0.pc gmodule-export-2.0.pc gmodule-no-export-2.0.pc gthread-2.0.pc gobject-2.0.pc gio-2.0.pc gio-unix-2.0.pc gio-windows-2.0.pc glib-zip glib-gettextize Makefile build/Makefile build/win32/Makefile build/win32/dirent/Makefile build/win32/vs9/Makefile build/win32/vs9/glib-version-paths.vsprops build/win32/vs10/Makefile build/win32/vs10/glib-version-paths.props build/win32/vs11/Makefile build/win32/vs12/Makefile build/win32/vs14/Makefile glib/Makefile glib/libcharset/Makefile glib/gnulib/Makefile glib/pcre/Makefile glib/update-pcre/Makefile glib/tests/Makefile gmodule/Makefile gmodule/gmoduleconf.h gobject/Makefile gobject/glib-mkenums gobject/tests/Makefile gthread/Makefile gio/Makefile gio/gdbus-2.0/codegen/Makefile gio/gdbus-2.0/codegen/config.py gio/gnetworking.h gio/xdgmime/Makefile gio/inotify/Makefile gio/kqueue/Makefile gio/fam/Makefile gio/win32/Makefile gio/tests/Makefile gio/tests/gdbus-object-manager-example/Makefile gio/tests/services/Makefile gio/tests/services/org.gtk.GDBus.Examples.ObjectManager.service gio/tests/modules/Makefile po/Makefile.in docs/Makefile docs/reference/Makefile docs/reference/glib/Makefile docs/reference/glib/version.xml docs/reference/gobject/Makefile docs/reference/gobject/version.xml docs/reference/gio/Makefile docs/reference/gio/version.xml tests/Makefile tests/gobject/Makefile tests/refcount/Makefile m4macros/Makefile" + + +ac_config_commands="$ac_config_commands chmod-scripts" + + +# we want to invoke this macro solely so that the config.status script +# and automake generated makefiles know about these generated files. +# They are only needed to distcheck the package +if false; then + ac_config_files="$ac_config_files INSTALL README config.h.win32 glib/glibconfig.h.win32 glib/makefile.msc glib/glib.rc gmodule/makefile.msc gmodule/gmodule.rc gobject/makefile.msc gobject/gobject.rc gthread/makefile.msc gthread/gthread.rc gio/gio.rc tests/makefile.msc" + +fi + +cat >confcache <<\_ACEOF +# 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. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GCC_TRUE}" && test -z "${HAVE_GCC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${OS_WIN32_TRUE}" && test -z "${OS_WIN32_FALSE}"; then + as_fn_error $? "conditional \"OS_WIN32\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${OS_WIN32_X64_TRUE}" && test -z "${OS_WIN32_X64_FALSE}"; then + as_fn_error $? "conditional \"OS_WIN32_X64\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${OS_UNIX_TRUE}" && test -z "${OS_UNIX_FALSE}"; then + as_fn_error $? "conditional \"OS_UNIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${OS_LINUX_TRUE}" && test -z "${OS_LINUX_FALSE}"; then + as_fn_error $? "conditional \"OS_LINUX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${OS_CARBON_TRUE}" && test -z "${OS_CARBON_FALSE}"; then + as_fn_error $? "conditional \"OS_CARBON\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${OS_COCOA_TRUE}" && test -z "${OS_COCOA_FALSE}"; then + as_fn_error $? "conditional \"OS_COCOA\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MS_LIB_AVAILABLE_TRUE}" && test -z "${MS_LIB_AVAILABLE_FALSE}"; then + as_fn_error $? "conditional \"MS_LIB_AVAILABLE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_INSTALLED_TESTS_TRUE}" && test -z "${ENABLE_INSTALLED_TESTS_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_INSTALLED_TESTS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_ALWAYS_BUILD_TESTS_TRUE}" && test -z "${ENABLE_ALWAYS_BUILD_TESTS_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_ALWAYS_BUILD_TESTS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GLIB_RUNTIME_LIBDIR_TRUE}" && test -z "${HAVE_GLIB_RUNTIME_LIBDIR_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GLIB_RUNTIME_LIBDIR\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_CXX_TRUE}" && test -z "${HAVE_CXX_FALSE}"; then + as_fn_error $? "conditional \"HAVE_CXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${OS_WIN32_AND_DLL_COMPILATION_TRUE}" && test -z "${OS_WIN32_AND_DLL_COMPILATION_FALSE}"; then + as_fn_error $? "conditional \"OS_WIN32_AND_DLL_COMPILATION\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GNUC_VISIBILITY_TRUE}" && test -z "${HAVE_GNUC_VISIBILITY_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GNUC_VISIBILITY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_SUNSTUDIO_VISIBILITY_TRUE}" && test -z "${HAVE_SUNSTUDIO_VISIBILITY_FALSE}"; then + as_fn_error $? "conditional \"HAVE_SUNSTUDIO_VISIBILITY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +if test -z "${HAVE_NETLINK_TRUE}" && test -z "${HAVE_NETLINK_FALSE}"; then + as_fn_error $? "conditional \"HAVE_NETLINK\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GOOD_PRINTF_TRUE}" && test -z "${HAVE_GOOD_PRINTF_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GOOD_PRINTF\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_INOTIFY_TRUE}" && test -z "${HAVE_INOTIFY_FALSE}"; then + as_fn_error $? "conditional \"HAVE_INOTIFY\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_KQUEUE_TRUE}" && test -z "${HAVE_KQUEUE_FALSE}"; then + as_fn_error $? "conditional \"HAVE_KQUEUE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_FAM_TRUE}" && test -z "${HAVE_FAM_FALSE}"; then + as_fn_error $? "conditional \"HAVE_FAM\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_TIMELOOP_TRUE}" && test -z "${ENABLE_TIMELOOP_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_TIMELOOP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${PLATFORM_WIN32_TRUE}" && test -z "${PLATFORM_WIN32_FALSE}"; then + as_fn_error $? "conditional \"PLATFORM_WIN32\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${THREADS_POSIX_TRUE}" && test -z "${THREADS_POSIX_FALSE}"; then + as_fn_error $? "conditional \"THREADS_POSIX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${THREADS_WIN32_TRUE}" && test -z "${THREADS_WIN32_FALSE}"; then + as_fn_error $? "conditional \"THREADS_WIN32\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${THREADS_NONE_TRUE}" && test -z "${THREADS_NONE_FALSE}"; then + as_fn_error $? "conditional \"THREADS_NONE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_EVENTFD_TRUE}" && test -z "${HAVE_EVENTFD_FALSE}"; then + as_fn_error $? "conditional \"HAVE_EVENTFD\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_SYSTEM_PCRE_TRUE}" && test -z "${USE_SYSTEM_PCRE_FALSE}"; then + as_fn_error $? "conditional \"USE_SYSTEM_PCRE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${CROSS_COMPILING_TRUE}" && test -z "${CROSS_COMPILING_FALSE}"; then + as_fn_error $? "conditional \"CROSS_COMPILING\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_GTK_DOC_TRUE}" && test -z "${HAVE_GTK_DOC_FALSE}"; then + as_fn_error $? "conditional \"HAVE_GTK_DOC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_GTK_DOC_TRUE}" && test -z "${ENABLE_GTK_DOC_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_GTK_DOC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GTK_DOC_BUILD_HTML_TRUE}" && test -z "${GTK_DOC_BUILD_HTML_FALSE}"; then + as_fn_error $? "conditional \"GTK_DOC_BUILD_HTML\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GTK_DOC_BUILD_PDF_TRUE}" && test -z "${GTK_DOC_BUILD_PDF_FALSE}"; then + as_fn_error $? "conditional \"GTK_DOC_BUILD_PDF\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GTK_DOC_USE_LIBTOOL_TRUE}" && test -z "${GTK_DOC_USE_LIBTOOL_FALSE}"; then + as_fn_error $? "conditional \"GTK_DOC_USE_LIBTOOL\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GTK_DOC_USE_REBASE_TRUE}" && test -z "${GTK_DOC_USE_REBASE_FALSE}"; then + as_fn_error $? "conditional \"GTK_DOC_USE_REBASE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_MAN_TRUE}" && test -z "${ENABLE_MAN_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_MAN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_DTRACE_TRUE}" && test -z "${ENABLE_DTRACE_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_DTRACE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_SYSTEMTAP_TRUE}" && test -z "${ENABLE_SYSTEMTAP_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_SYSTEMTAP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_DBUS1_TRUE}" && test -z "${HAVE_DBUS1_FALSE}"; then + as_fn_error $? "conditional \"HAVE_DBUS1\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_DBUS_DAEMON_TRUE}" && test -z "${HAVE_DBUS_DAEMON_FALSE}"; then + as_fn_error $? "conditional \"HAVE_DBUS_DAEMON\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by glib $as_me 2.48.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +glib config.status 2.48.0 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in AS \ +DLLTOOL \ +OBJDUMP \ +SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +reload_flag_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_separator_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path \ +reload_cmds_CXX \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + +ac_aux_dir='$ac_aux_dir' + + + + +# Note that if two cases are the same, case goes with the first one. +# Note also that this is inside an AC_OUTPUT_COMMAND. We do not depend +# on variable expansion in case labels. Look at the generated config.status +# for a hint. + +if test "x${ac_cv_working_alloca_h+set}" = xset ; then + glib_header_alloca_h="$ac_cv_working_alloca_h" +else + glib_header_alloca_h="$ac_cv_header_alloca_h" +fi + +if test x$enable_included_printf = xyes ; then + glib_included_printf=yes +fi + +case 2 in +$ac_cv_sizeof_short) + gint16=short + gint16_modifier='"h"' + gint16_format='"hi"' + guint16_format='"hu"' + ;; +$ac_cv_sizeof_int) + gint16=int + gint16_modifier='""' + gint16_format='"i"' + guint16_format='"u"' + ;; +esac +case 4 in +$ac_cv_sizeof_short) + gint32=short + gint32_modifier='"h"' + gint32_format='"hi"' + guint32_format='"hu"' + ;; +$ac_cv_sizeof_int) + gint32=int + gint32_modifier='""' + gint32_format='"i"' + guint32_format='"u"' + ;; +$ac_cv_sizeof_long) + gint32=long + gint32_modifier='"l"' + gint32_format='"li"' + guint32_format='"lu"' + ;; +esac +case 8 in +$ac_cv_sizeof_int) + gint64=int + gint64_modifier='""' + gint64_format='"i"' + guint64_format='"u"' + glib_extension= + gint64_constant='(val)' + guint64_constant='(val)' + ;; +$ac_cv_sizeof_long) + gint64=long + gint64_modifier='"l"' + gint64_format='"li"' + guint64_format='"lu"' + glib_extension= + gint64_constant='(val##L)' + guint64_constant='(val##UL)' + ;; +$ac_cv_sizeof_long_long) + gint64='long long' + if test -n "$glib_cv_long_long_format"; then + gint64_modifier='"'$glib_cv_long_long_format'"' + gint64_format='"'$glib_cv_long_long_format'i"' + guint64_format='"'$glib_cv_long_long_format'u"' + fi + glib_extension='G_GNUC_EXTENSION ' + gint64_constant='(G_GNUC_EXTENSION (val##LL))' + guint64_constant='(G_GNUC_EXTENSION (val##ULL))' + ;; +$ac_cv_sizeof___int64) + gint64='__int64' + if test -n "$glib_cv_long_long_format"; then + gint64_modifier='"'$glib_cv_long_long_format'"' + gint64_format='"'$glib_cv_long_long_format'i"' + guint64_format='"'$glib_cv_long_long_format'u"' + fi + glib_extension= + gint64_constant='(val##i64)' + guint64_constant='(val##ui64)' + ;; +esac +glib_size_t=$ac_cv_sizeof_size_t +glib_ssize_t=$ac_cv_sizeof_ssize_t +glib_size_type_define="$glib_size_type" +glib_ssize_type_define="$glib_ssize_type" +glib_void_p=$ac_cv_sizeof_void_p +glib_long=$ac_cv_sizeof_long + +case "$glib_size_type" in +short) + gsize_modifier='"h"' + gsize_format='"hu"' + glib_msize_type='SHRT' + ;; +int) + gsize_modifier='""' + gsize_format='"u"' + glib_msize_type='INT' + ;; +long) + gsize_modifier='"l"' + gsize_format='"lu"' + glib_msize_type='LONG' + ;; +"long long"|__int64) + gsize_modifier='"I64"' + gsize_format='"I64u"' + glib_msize_type='INT64' + ;; +esac + +case "$glib_ssize_type" in +short) + gssize_modifier='"h"' + gssize_format='"hi"' + glib_mssize_type='SHRT' + ;; +int) + gssize_modifier='""' + gssize_format='"i"' + glib_mssize_type='INT' + ;; +long) + gssize_modifier='"l"' + gssize_format='"li"' + glib_mssize_type='LONG' + ;; +"long long"|__int64) + gssize_modifier='"I64"' + gssize_format='"I64i"' + glib_mssize_type='INT64' + ;; +esac + +gintbits=`expr $ac_cv_sizeof_int \* 8` +glongbits=`expr $ac_cv_sizeof_long \* 8` +gsizebits=`expr $ac_cv_sizeof_size_t \* 8` +gssizebits=`expr $ac_cv_sizeof_ssize_t \* 8` + +case $ac_cv_sizeof_void_p in +$ac_cv_sizeof_int) + glib_intptr_type_define=int + gintptr_modifier='""' + gintptr_format='"i"' + guintptr_format='"u"' + glib_gpi_cast='(gint)' + glib_gpui_cast='(guint)' + ;; +$ac_cv_sizeof_long) + glib_intptr_type_define=long + gintptr_modifier='"l"' + gintptr_format='"li"' + guintptr_format='"lu"' + glib_gpi_cast='(glong)' + glib_gpui_cast='(gulong)' + ;; +$ac_cv_sizeof_long_long) + glib_intptr_type_define='long long' + gintptr_modifier='"I64"' + gintptr_format='"I64i"' + guintptr_format='"I64u"' + glib_gpi_cast='(gint64)' + glib_gpui_cast='(guint64)' + ;; +$ac_cv_sizeof___int64) + glib_intptr_type_define=__int64 + gintptr_modifier='"I64"' + gintptr_format='"I64i"' + guintptr_format='"I64u"' + glib_gpi_cast='(gint64)' + glib_gpui_cast='(guint64)' + ;; +*) + glib_unknown_void_p=yes + ;; +esac + + +glib_defines=" +#define GLIB_MAJOR_VERSION $GLIB_MAJOR_VERSION +#define GLIB_MINOR_VERSION $GLIB_MINOR_VERSION +#define GLIB_MICRO_VERSION $GLIB_MICRO_VERSION +" + +case xyes in +x$glib_cv_va_copy) glib_vacopy='#define G_VA_COPY va_copy' ;; +x$glib_cv___va_copy) glib_vacopy='#define G_VA_COPY __va_copy' ;; +*) glib_vacopy='' +esac + +if test x$glib_cv_va_val_copy = xno; then + glib_vacopy="\$glib_vacopy +#define G_VA_COPY_AS_ARRAY 1" +fi + +g_have_gnuc_varargs=$g_have_gnuc_varargs +g_have_iso_c_varargs=$g_have_iso_c_varargs +g_have_iso_cxx_varargs=$g_have_iso_cxx_varargs + +g_have_gnuc_visibility=$g_have_gnuc_visibility +g_have_sunstudio_visibility=$g_have_sunstudio_visibility + +if test x$ac_cv_c_bigendian = xyes; then + g_byte_order=G_BIG_ENDIAN + g_bs_native=BE + g_bs_alien=LE +else + g_byte_order=G_LITTLE_ENDIAN + g_bs_native=LE + g_bs_alien=BE +fi + +g_pollin=$glib_cv_value_POLLIN +g_pollout=$glib_cv_value_POLLOUT +g_pollpri=$glib_cv_value_POLLPRI +g_pollhup=$glib_cv_value_POLLHUP +g_pollerr=$glib_cv_value_POLLERR +g_pollnval=$glib_cv_value_POLLNVAL + +# If a family is not found on the system, define that family to +# a negative value, picking a different one for each undefined +# family (-1 for AF_UNIX, -2 for the next one, -3 ...) +# This is needed because glib-mkenums doesn't handle optional +# values in enums, and thus we have to have all existing values +# defined in the enum. +if test "x$glib_cv_value_AF_UNIX" != "x"; then + g_af_unix=$glib_cv_value_AF_UNIX +else + g_af_unix=-1 +fi +g_af_inet=$glib_cv_value_AF_INET +g_af_inet6=$glib_cv_value_AF_INET6 + +g_msg_peek=$glib_cv_value_MSG_PEEK +g_msg_oob=$glib_cv_value_MSG_OOB +g_msg_dontroute=$glib_cv_value_MSG_DONTROUTE + +g_stack_grows=$glib_cv_stack_grows + +g_have_eilseq=$have_eilseq + +g_threads_impl_def=$g_threads_impl + +g_atomic_lock_free="$glib_cv_g_atomic_lock_free" +g_memory_barrier_needed="$glib_memory_barrier_needed" +g_gcc_atomic_ops="$glib_cv_gcc_has_builtin_atomic_operations" + +g_module_suffix="$glib_gmodule_suffix" +g_pid_type="$glib_pid_type" +g_pollfd_format="\"$glib_pollfd_format\"" + +case $host in + *-*-cygwin*) + glib_os="#define G_OS_UNIX +#define G_PLATFORM_WIN32 +#define G_WITH_CYGWIN" + ;; + *-*-mingw*) + glib_os="#define G_OS_WIN32 +#define G_PLATFORM_WIN32" + ;; + *) + glib_os="#define G_OS_UNIX" + ;; +esac +glib_static_compilation="" +if test x$glib_win32_static_compilation = xyes; then + glib_static_compilation="#define GLIB_STATIC_COMPILATION 1 +#define GOBJECT_STATIC_COMPILATION 1" +fi + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "glib/glibconfig.h") CONFIG_COMMANDS="$CONFIG_COMMANDS glib/glibconfig.h" ;; + "glib-2.0.pc") CONFIG_FILES="$CONFIG_FILES glib-2.0.pc" ;; + "gmodule-2.0.pc") CONFIG_FILES="$CONFIG_FILES gmodule-2.0.pc" ;; + "gmodule-export-2.0.pc") CONFIG_FILES="$CONFIG_FILES gmodule-export-2.0.pc" ;; + "gmodule-no-export-2.0.pc") CONFIG_FILES="$CONFIG_FILES gmodule-no-export-2.0.pc" ;; + "gthread-2.0.pc") CONFIG_FILES="$CONFIG_FILES gthread-2.0.pc" ;; + "gobject-2.0.pc") CONFIG_FILES="$CONFIG_FILES gobject-2.0.pc" ;; + "gio-2.0.pc") CONFIG_FILES="$CONFIG_FILES gio-2.0.pc" ;; + "gio-unix-2.0.pc") CONFIG_FILES="$CONFIG_FILES gio-unix-2.0.pc" ;; + "gio-windows-2.0.pc") CONFIG_FILES="$CONFIG_FILES gio-windows-2.0.pc" ;; + "glib-zip") CONFIG_FILES="$CONFIG_FILES glib-zip" ;; + "glib-gettextize") CONFIG_FILES="$CONFIG_FILES glib-gettextize" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "build/Makefile") CONFIG_FILES="$CONFIG_FILES build/Makefile" ;; + "build/win32/Makefile") CONFIG_FILES="$CONFIG_FILES build/win32/Makefile" ;; + "build/win32/dirent/Makefile") CONFIG_FILES="$CONFIG_FILES build/win32/dirent/Makefile" ;; + "build/win32/vs9/Makefile") CONFIG_FILES="$CONFIG_FILES build/win32/vs9/Makefile" ;; + "build/win32/vs9/glib-version-paths.vsprops") CONFIG_FILES="$CONFIG_FILES build/win32/vs9/glib-version-paths.vsprops" ;; + "build/win32/vs10/Makefile") CONFIG_FILES="$CONFIG_FILES build/win32/vs10/Makefile" ;; + "build/win32/vs10/glib-version-paths.props") CONFIG_FILES="$CONFIG_FILES build/win32/vs10/glib-version-paths.props" ;; + "build/win32/vs11/Makefile") CONFIG_FILES="$CONFIG_FILES build/win32/vs11/Makefile" ;; + "build/win32/vs12/Makefile") CONFIG_FILES="$CONFIG_FILES build/win32/vs12/Makefile" ;; + "build/win32/vs14/Makefile") CONFIG_FILES="$CONFIG_FILES build/win32/vs14/Makefile" ;; + "glib/Makefile") CONFIG_FILES="$CONFIG_FILES glib/Makefile" ;; + "glib/libcharset/Makefile") CONFIG_FILES="$CONFIG_FILES glib/libcharset/Makefile" ;; + "glib/gnulib/Makefile") CONFIG_FILES="$CONFIG_FILES glib/gnulib/Makefile" ;; + "glib/pcre/Makefile") CONFIG_FILES="$CONFIG_FILES glib/pcre/Makefile" ;; + "glib/update-pcre/Makefile") CONFIG_FILES="$CONFIG_FILES glib/update-pcre/Makefile" ;; + "glib/tests/Makefile") CONFIG_FILES="$CONFIG_FILES glib/tests/Makefile" ;; + "gmodule/Makefile") CONFIG_FILES="$CONFIG_FILES gmodule/Makefile" ;; + "gmodule/gmoduleconf.h") CONFIG_FILES="$CONFIG_FILES gmodule/gmoduleconf.h" ;; + "gobject/Makefile") CONFIG_FILES="$CONFIG_FILES gobject/Makefile" ;; + "gobject/glib-mkenums") CONFIG_FILES="$CONFIG_FILES gobject/glib-mkenums" ;; + "gobject/tests/Makefile") CONFIG_FILES="$CONFIG_FILES gobject/tests/Makefile" ;; + "gthread/Makefile") CONFIG_FILES="$CONFIG_FILES gthread/Makefile" ;; + "gio/Makefile") CONFIG_FILES="$CONFIG_FILES gio/Makefile" ;; + "gio/gdbus-2.0/codegen/Makefile") CONFIG_FILES="$CONFIG_FILES gio/gdbus-2.0/codegen/Makefile" ;; + "gio/gdbus-2.0/codegen/config.py") CONFIG_FILES="$CONFIG_FILES gio/gdbus-2.0/codegen/config.py" ;; + "gio/gnetworking.h") CONFIG_FILES="$CONFIG_FILES gio/gnetworking.h" ;; + "gio/xdgmime/Makefile") CONFIG_FILES="$CONFIG_FILES gio/xdgmime/Makefile" ;; + "gio/inotify/Makefile") CONFIG_FILES="$CONFIG_FILES gio/inotify/Makefile" ;; + "gio/kqueue/Makefile") CONFIG_FILES="$CONFIG_FILES gio/kqueue/Makefile" ;; + "gio/fam/Makefile") CONFIG_FILES="$CONFIG_FILES gio/fam/Makefile" ;; + "gio/win32/Makefile") CONFIG_FILES="$CONFIG_FILES gio/win32/Makefile" ;; + "gio/tests/Makefile") CONFIG_FILES="$CONFIG_FILES gio/tests/Makefile" ;; + "gio/tests/gdbus-object-manager-example/Makefile") CONFIG_FILES="$CONFIG_FILES gio/tests/gdbus-object-manager-example/Makefile" ;; + "gio/tests/services/Makefile") CONFIG_FILES="$CONFIG_FILES gio/tests/services/Makefile" ;; + "gio/tests/services/org.gtk.GDBus.Examples.ObjectManager.service") CONFIG_FILES="$CONFIG_FILES gio/tests/services/org.gtk.GDBus.Examples.ObjectManager.service" ;; + "gio/tests/modules/Makefile") CONFIG_FILES="$CONFIG_FILES gio/tests/modules/Makefile" ;; + "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;; + "docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;; + "docs/reference/Makefile") CONFIG_FILES="$CONFIG_FILES docs/reference/Makefile" ;; + "docs/reference/glib/Makefile") CONFIG_FILES="$CONFIG_FILES docs/reference/glib/Makefile" ;; + "docs/reference/glib/version.xml") CONFIG_FILES="$CONFIG_FILES docs/reference/glib/version.xml" ;; + "docs/reference/gobject/Makefile") CONFIG_FILES="$CONFIG_FILES docs/reference/gobject/Makefile" ;; + "docs/reference/gobject/version.xml") CONFIG_FILES="$CONFIG_FILES docs/reference/gobject/version.xml" ;; + "docs/reference/gio/Makefile") CONFIG_FILES="$CONFIG_FILES docs/reference/gio/Makefile" ;; + "docs/reference/gio/version.xml") CONFIG_FILES="$CONFIG_FILES docs/reference/gio/version.xml" ;; + "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; + "tests/gobject/Makefile") CONFIG_FILES="$CONFIG_FILES tests/gobject/Makefile" ;; + "tests/refcount/Makefile") CONFIG_FILES="$CONFIG_FILES tests/refcount/Makefile" ;; + "m4macros/Makefile") CONFIG_FILES="$CONFIG_FILES m4macros/Makefile" ;; + "chmod-scripts") CONFIG_COMMANDS="$CONFIG_COMMANDS chmod-scripts" ;; + "INSTALL") CONFIG_FILES="$CONFIG_FILES INSTALL" ;; + "README") CONFIG_FILES="$CONFIG_FILES README" ;; + "config.h.win32") CONFIG_FILES="$CONFIG_FILES config.h.win32" ;; + "glib/glibconfig.h.win32") CONFIG_FILES="$CONFIG_FILES glib/glibconfig.h.win32" ;; + "glib/makefile.msc") CONFIG_FILES="$CONFIG_FILES glib/makefile.msc" ;; + "glib/glib.rc") CONFIG_FILES="$CONFIG_FILES glib/glib.rc" ;; + "gmodule/makefile.msc") CONFIG_FILES="$CONFIG_FILES gmodule/makefile.msc" ;; + "gmodule/gmodule.rc") CONFIG_FILES="$CONFIG_FILES gmodule/gmodule.rc" ;; + "gobject/makefile.msc") CONFIG_FILES="$CONFIG_FILES gobject/makefile.msc" ;; + "gobject/gobject.rc") CONFIG_FILES="$CONFIG_FILES gobject/gobject.rc" ;; + "gthread/makefile.msc") CONFIG_FILES="$CONFIG_FILES gthread/makefile.msc" ;; + "gthread/gthread.rc") CONFIG_FILES="$CONFIG_FILES gthread/gthread.rc" ;; + "gio/gio.rc") CONFIG_FILES="$CONFIG_FILES gio/gio.rc" ;; + "tests/makefile.msc") CONFIG_FILES="$CONFIG_FILES tests/makefile.msc" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "default-1":C) case "$CONFIG_FILES" in *po/Makefile.in*) + sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile + esac ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 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. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='CXX ' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Assembler program. +AS=$lt_AS + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Object dumper program. +OBJDUMP=$lt_OBJDUMP + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + "glib/glibconfig.h":C) + outfile=glib/glibconfig.h-tmp + cat > $outfile <<\_______EOF +/* glibconfig.h + * + * This is a generated file. Please modify 'configure.ac' + */ + +#ifndef __GLIBCONFIG_H__ +#define __GLIBCONFIG_H__ + +#include + +_______EOF + + echo '#include ' >> $outfile + echo '#include ' >> $outfile + if test x$glib_values_h = xyes; then + echo '#include ' >> $outfile + fi + if test "$glib_header_alloca_h" = "yes"; then + echo '#define GLIB_HAVE_ALLOCA_H' >> $outfile + fi + if test x$glib_included_printf != xyes; then + echo " +/* Specifies that GLib's g_print*() functions wrap the + * system printf functions. This is useful to know, for example, + * when using glibc's register_printf_function(). + */" >> $outfile + echo '#define GLIB_USING_SYSTEM_PRINTF' >> $outfile + fi + + cat >> $outfile <<_______EOF + +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 + +_______EOF + + + ### this should always be true in a modern C/C++ compiler + ### and is statically asserted by glib-init.c + cat >>$outfile <<_______EOF +typedef signed char gint8; +typedef unsigned char guint8; +_______EOF + + + if test -n "$gint16"; then + cat >>$outfile <<_______EOF +typedef signed $gint16 gint16; +typedef unsigned $gint16 guint16; +#define G_GINT16_MODIFIER $gint16_modifier +#define G_GINT16_FORMAT $gint16_format +#define G_GUINT16_FORMAT $guint16_format +_______EOF + fi + + + if test -n "$gint32"; then + cat >>$outfile <<_______EOF +typedef signed $gint32 gint32; +typedef unsigned $gint32 guint32; +#define G_GINT32_MODIFIER $gint32_modifier +#define G_GINT32_FORMAT $gint32_format +#define G_GUINT32_FORMAT $guint32_format +_______EOF + fi + + cat >>$outfile <<_______EOF +#define G_HAVE_GINT64 1 /* deprecated, always true */ + +${glib_extension}typedef signed $gint64 gint64; +${glib_extension}typedef unsigned $gint64 guint64; + +#define G_GINT64_CONSTANT(val) $gint64_constant +#define G_GUINT64_CONSTANT(val) $guint64_constant +_______EOF + + if test x$gint64_format != x ; then + cat >>$outfile <<_______EOF +#define G_GINT64_MODIFIER $gint64_modifier +#define G_GINT64_FORMAT $gint64_format +#define G_GUINT64_FORMAT $guint64_format +_______EOF + else + cat >>$outfile <<_______EOF +#undef G_GINT64_MODIFIER +#undef G_GINT64_FORMAT +#undef G_GUINT64_FORMAT +_______EOF + fi + + cat >>$outfile <<_______EOF + +#define GLIB_SIZEOF_VOID_P $glib_void_p +#define GLIB_SIZEOF_LONG $glib_long +#define GLIB_SIZEOF_SIZE_T $glib_size_t +#define GLIB_SIZEOF_SSIZE_T $glib_ssize_t + +_______EOF + + cat >>$outfile <<_______EOF +typedef signed $glib_ssize_type_define gssize; +typedef unsigned $glib_size_type_define gsize; +#define G_GSIZE_MODIFIER $gsize_modifier +#define G_GSSIZE_MODIFIER $gssize_modifier +#define G_GSIZE_FORMAT $gsize_format +#define G_GSSIZE_FORMAT $gssize_format + +#define G_MAXSIZE G_MAXU$glib_msize_type +#define G_MINSSIZE G_MIN$glib_mssize_type +#define G_MAXSSIZE G_MAX$glib_mssize_type + +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 G_POLLFD_FORMAT $g_pollfd_format + +_______EOF + + if test -z "$glib_unknown_void_p"; then + cat >>$outfile <<_______EOF + +#define GPOINTER_TO_INT(p) ((gint) ${glib_gpi_cast} (p)) +#define GPOINTER_TO_UINT(p) ((guint) ${glib_gpui_cast} (p)) + +#define GINT_TO_POINTER(i) ((gpointer) ${glib_gpi_cast} (i)) +#define GUINT_TO_POINTER(u) ((gpointer) ${glib_gpui_cast} (u)) + +typedef signed $glib_intptr_type_define gintptr; +typedef unsigned $glib_intptr_type_define guintptr; + +#define G_GINTPTR_MODIFIER $gintptr_modifier +#define G_GINTPTR_FORMAT $gintptr_format +#define G_GUINTPTR_FORMAT $guintptr_format +_______EOF + else + echo '#error SIZEOF_VOID_P unknown - This should never happen' >>$outfile + fi + + + + cat >>$outfile <<_______EOF +#ifndef G_DISABLE_DEPRECATED +#define g_ATEXIT(proc) (atexit (proc)) +#define g_memmove(dest,src,len) G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END +#endif +$glib_defines +$glib_os +$glib_static_compilation + +$glib_vacopy + +_______EOF + + if test x$g_have_iso_c_varargs = xyes ; then + cat >>$outfile <<_______EOF +#ifndef __cplusplus +# define G_HAVE_ISO_VARARGS 1 +#endif +_______EOF + fi + if test x$g_have_iso_cxx_varargs = xyes ; then + cat >>$outfile <<_______EOF +#ifdef __cplusplus +# define G_HAVE_ISO_VARARGS 1 +#endif +_______EOF + fi + if test x$g_have_gnuc_varargs = xyes ; then + cat >>$outfile <<_______EOF + +/* 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 +_______EOF + fi + + case x$g_stack_grows in + xyes) echo "#define G_HAVE_GROWING_STACK 1" >>$outfile ;; + *) echo "#define G_HAVE_GROWING_STACK 0" >>$outfile ;; + esac + + + echo >>$outfile + if test x$g_have_eilseq = xno; then + cat >>$outfile <<_______EOF +#ifndef EILSEQ +/* On some pre-C99 systems, EILSEQ is not defined. + * The correspondence between this and the corresponding definition + * in libiconv is essential. + */ +# define EILSEQ ENOENT +#endif +_______EOF + + fi + + if test x$g_have_gnuc_visibility = xyes; then + cat >>$outfile <<_______EOF +#define G_HAVE_GNUC_VISIBILITY 1 +_______EOF + fi + cat >>$outfile <<_______EOF +#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 +_______EOF + + echo >>$outfile + cat >>$outfile <<_______EOF +#define G_THREADS_ENABLED +#define G_THREADS_IMPL_$g_threads_impl_def +_______EOF + + if test x"$g_memory_barrier_needed" != xno; then + echo >>$outfile + echo "#define G_ATOMIC_OP_MEMORY_BARRIER_NEEDED 1" >>$outfile + fi + if test x"$g_atomic_lock_free" = xyes; then + echo >>$outfile + echo "#define G_ATOMIC_LOCK_FREE" >>$outfile + fi + echo >>$outfile + g_bit_sizes="16 32 64" + for bits in $g_bit_sizes; do + cat >>$outfile <<_______EOF +#define GINT${bits}_TO_${g_bs_native}(val) ((gint${bits}) (val)) +#define GUINT${bits}_TO_${g_bs_native}(val) ((guint${bits}) (val)) +#define GINT${bits}_TO_${g_bs_alien}(val) ((gint${bits}) GUINT${bits}_SWAP_LE_BE (val)) +#define GUINT${bits}_TO_${g_bs_alien}(val) (GUINT${bits}_SWAP_LE_BE (val)) +_______EOF + done + + cat >>$outfile <<_______EOF +#define GLONG_TO_LE(val) ((glong) GINT${glongbits}_TO_LE (val)) +#define GULONG_TO_LE(val) ((gulong) GUINT${glongbits}_TO_LE (val)) +#define GLONG_TO_BE(val) ((glong) GINT${glongbits}_TO_BE (val)) +#define GULONG_TO_BE(val) ((gulong) GUINT${glongbits}_TO_BE (val)) +#define GINT_TO_LE(val) ((gint) GINT${gintbits}_TO_LE (val)) +#define GUINT_TO_LE(val) ((guint) GUINT${gintbits}_TO_LE (val)) +#define GINT_TO_BE(val) ((gint) GINT${gintbits}_TO_BE (val)) +#define GUINT_TO_BE(val) ((guint) GUINT${gintbits}_TO_BE (val)) +#define GSIZE_TO_LE(val) ((gsize) GUINT${gsizebits}_TO_LE (val)) +#define GSSIZE_TO_LE(val) ((gssize) GINT${gssizebits}_TO_LE (val)) +#define GSIZE_TO_BE(val) ((gsize) GUINT${gsizebits}_TO_BE (val)) +#define GSSIZE_TO_BE(val) ((gssize) GINT${gssizebits}_TO_BE (val)) +#define G_BYTE_ORDER $g_byte_order + +#define GLIB_SYSDEF_POLLIN =$g_pollin +#define GLIB_SYSDEF_POLLOUT =$g_pollout +#define GLIB_SYSDEF_POLLPRI =$g_pollpri +#define GLIB_SYSDEF_POLLHUP =$g_pollhup +#define GLIB_SYSDEF_POLLERR =$g_pollerr +#define GLIB_SYSDEF_POLLNVAL =$g_pollnval + +#define G_MODULE_SUFFIX "$g_module_suffix" + +typedef $g_pid_type GPid; + +#define GLIB_SYSDEF_AF_UNIX $g_af_unix +#define GLIB_SYSDEF_AF_INET $g_af_inet +#define GLIB_SYSDEF_AF_INET6 $g_af_inet6 + +#define GLIB_SYSDEF_MSG_OOB $g_msg_oob +#define GLIB_SYSDEF_MSG_PEEK $g_msg_peek +#define GLIB_SYSDEF_MSG_DONTROUTE $g_msg_dontroute + +G_END_DECLS + +#endif /* __GLIBCONFIG_H__ */ +_______EOF + + + if cmp -s $outfile glib/glibconfig.h; then + { $as_echo "$as_me:${as_lineno-$LINENO}: glib/glibconfig.h is unchanged" >&5 +$as_echo "$as_me: glib/glibconfig.h is unchanged" >&6;} + rm -f $outfile + else + mv $outfile glib/glibconfig.h + fi + ;; + "chmod-scripts":C) chmod 0755 glib-zip +chmod 0755 glib-gettextize +chmod 0755 gobject/glib-mkenums ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/configure.ac b/configure.ac index 7350fb5..3eca893 100644 --- a/configure.ac +++ b/configure.ac @@ -30,8 +30,8 @@ m4_define(glib_configure_ac) # on the unstable (ie master), interface age = 0 m4_define([glib_major_version], [2]) -m4_define([glib_minor_version], [43]) -m4_define([glib_micro_version], [92]) +m4_define([glib_minor_version], [48]) +m4_define([glib_micro_version], [0]) m4_define([glib_interface_age], [0]) m4_define([glib_binary_age], [m4_eval(100 * glib_minor_version + glib_micro_version)]) @@ -125,6 +125,7 @@ case "$host" in *-*-mingw*) glib_native_win32=yes glib_pid_type='void *' + glib_pollfd_format='%#x' glib_cv_stack_grows=no # Unfortunately the mingw implementations of C99-style snprintf and vsnprintf # don't seem to be quite good enough, at least not in mingw-runtime-3.14. @@ -138,6 +139,7 @@ case "$host" in case "$host" in x86_64-*-*) LIB_EXE_MACHINE_FLAG=X64 + glib_pollfd_format='%#I64x' ;; esac @@ -146,6 +148,7 @@ case "$host" in *) glib_native_win32=no glib_pid_type=int + glib_pollfd_format='%d' ;; esac case $host in @@ -223,6 +226,15 @@ AS_IF([test "x$glib_have_cocoa" = "xyes"], [ AC_DEFINE(HAVE_COCOA, 1, [define to 1 if Cocoa is available]) COCOA_LIBS="-Wl,-framework,Foundation" LDFLAGS="$LDFLAGS $COCOA_LIBS" + + osx_version=`sw_vers -productVersion` + osx_min_version="10.9.0" + AC_MSG_CHECKING([OSX version >= $osx_min_version]) + AS_VERSION_COMPARE([$osx_version], [$osx_min_version], [ + AC_MSG_RESULT([no]) + AC_MSG_ERROR([OSX version is too old!]) + ]) + AC_MSG_RESULT([yes]) ], [COCOA_LIBS=""]) AC_SUBST([COCOA_LIBS]) @@ -270,9 +282,7 @@ AC_ARG_WITH(runtime-libdir, [], [with_runtime_libdir=""]) GLIB_RUNTIME_LIBDIR="$with_runtime_libdir" -ABS_GLIB_RUNTIME_LIBDIR="`readlink -f $libdir/$with_runtime_libdir`" AC_SUBST(GLIB_RUNTIME_LIBDIR) -AC_SUBST(ABS_GLIB_RUNTIME_LIBDIR) AM_CONDITIONAL(HAVE_GLIB_RUNTIME_LIBDIR, [test "x$with_runtime_libdir" != "x"]) dnl Check for a working C++ compiler, but do not bail out, if none is found. @@ -516,7 +526,7 @@ AM_CONDITIONAL(OS_WIN32_AND_DLL_COMPILATION, [test x$glib_native_win32 = xyes -a # Checks for library functions. AC_FUNC_ALLOCA AC_CHECK_FUNCS(mmap posix_memalign memalign valloc fsync pipe2 issetugid) -AC_CHECK_FUNCS(timegm gmtime_r) +AC_CHECK_FUNCS(timegm gmtime_r strerror_r) AC_CACHE_CHECK([for __libc_enable_secure], glib_cv_have_libc_enable_secure, [AC_TRY_LINK([#include @@ -611,78 +621,6 @@ AC_CACHE_CHECK([for growing stack pointer],glib_cv_stack_grows,[ ,) ]) -dnl AC_C_INLINE is useless to us since it bails out too early, we need to -dnl truely know which ones of `inline', `__inline' and `__inline__' are -dnl actually supported. -AC_CACHE_CHECK([for __inline],glib_cv_has__inline,[ - AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ - __inline int foo () { return 0; } - int main () { return foo (); } - ]])], - glib_cv_has__inline=yes - , - glib_cv_has__inline=no - ,) -]) -case x$glib_cv_has__inline in -xyes) AC_DEFINE(G_HAVE___INLINE,1,[Have __inline keyword]) -esac -AC_CACHE_CHECK([for __inline__],glib_cv_has__inline__,[ - AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ - __inline__ int foo () { return 0; } - int main () { return foo (); } - ]])], - glib_cv_has__inline__=yes - , - glib_cv_has__inline__=no - ,) -]) -case x$glib_cv_has__inline__ in -xyes) AC_DEFINE(G_HAVE___INLINE__,1,[Have __inline__ keyword]) -esac -AC_CACHE_CHECK([for inline], glib_cv_hasinline,[ - AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ - #undef inline - inline int foo () { return 0; } - int main () { return foo (); } - ]])], - glib_cv_hasinline=yes - , - glib_cv_hasinline=no - ,) -]) -case x$glib_cv_hasinline in -xyes) AC_DEFINE(G_HAVE_INLINE,1,[Have inline keyword]) -esac - -# if we can use inline functions in headers -AC_MSG_CHECKING(if inline functions in headers work) -AC_LINK_IFELSE([AC_LANG_SOURCE([[ -#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 -# endif -#endif - -int glib_test_func2 (int); - -static inline int -glib_test_func1 (void) { - return glib_test_func2 (1); -} - -int -main (void) { - int i = 1; -}]])],[g_can_inline=yes],[g_can_inline=no]) -AC_MSG_RESULT($g_can_inline) - # check for flavours of varargs macros AC_MSG_CHECKING(for ISO C99 varargs macros in C) AC_TRY_COMPILE([],[ @@ -791,7 +729,7 @@ AC_HEADER_MAJOR AC_CHECK_HEADERS([xlocale.h]) # check for structure fields -AC_CHECK_MEMBERS([struct stat.st_mtimensec, struct stat.st_mtim.tv_nsec, struct stat.st_atimensec, struct stat.st_atim.tv_nsec, struct stat.st_ctimensec, struct stat.st_ctim.tv_nsec]) +AC_CHECK_MEMBERS([struct stat.st_mtimensec, struct stat.st_mtim.tv_nsec, struct stat.st_atimensec, struct stat.st_atim.tv_nsec, struct stat.st_ctimensec, struct stat.st_ctim.tv_nsec, struct stat.st_birthtime, struct stat.st_birthtimensec, struct stat.st_birthtim, struct stat.st_birthtim.tv_nsec]) AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_blocks, struct statfs.f_fstypename, struct statfs.f_bavail],,, [#include #include #ifdef G_OS_UNIX @@ -1020,7 +958,7 @@ if $glib_failed ; then AC_MSG_ERROR([Could not determine values for MSG_* constants]) fi -AC_CHECK_FUNCS(getprotobyname_r endservent if_nametoindex if_indextoname sendmmsg) +AC_CHECK_FUNCS(getprotobyname_r endservent if_nametoindex if_indextoname sendmmsg recvmmsg) AS_IF([test $glib_native_win32 = yes], [ # in the Windows SDK and in mingw-w64 has wrappers for @@ -1215,7 +1153,7 @@ gt_TYPE_WINT_T AC_TYPE_SIZE_T AC_CHECK_TYPES(ptrdiff_t) jm_AC_TYPE_INTMAX_T -AC_CHECK_FUNCS([snprintf wcslen]) +AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) AC_FUNC_SNPRINTF_C99 # Check if needs to be included for fd_set @@ -1677,22 +1615,6 @@ AC_CHECK_HEADERS([sys/event.h], AM_CONDITIONAL(HAVE_KQUEUE, [test "$kqueue_support" = "yes"]) -dnl ********************************* -dnl ** Check for Solaris FEN (GIO) ** -dnl ********************************* -fen_support=no -AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ -#include -#ifndef PORT_SOURCE_FILE -#error "Please upgrade to Nevada 72 or above to suppoert FEN" -#endif -int main() { return 0; } ]])], -[ - fen_support=yes -],) - -AM_CONDITIONAL(HAVE_FEN, [test "$fen_support" = "yes"]) - dnl **************************** dnl *** Checks for FAM (GIO) *** dnl **************************** @@ -2128,85 +2050,8 @@ glib_save_LIBS="$LIBS" # we are not doing the following for now, as this might require glib # to always be linked with the thread libs on some platforms. # LIBS="$LIBS $G_THREAD_LIBS" -AC_CHECK_FUNCS(localtime_r gmtime_r) -AS_IF([ test "$glib_native_win32" != "yes"], [ - AC_CACHE_CHECK([for posix getpwuid_r], - ac_cv_func_posix_getpwuid_r, - [AC_TRY_RUN([ -#include -#include -int main () { - char buffer[10000]; - struct passwd pwd, *pwptr = &pwd; - int error; - errno = 0; - error = getpwuid_r (0, &pwd, buffer, - sizeof (buffer), &pwptr); - return (error < 0 && errno == ENOSYS) - || error == ENOSYS; -} ], - [ac_cv_func_posix_getpwuid_r=yes], - [ac_cv_func_posix_getpwuid_r=no])]) - GLIB_ASSERT_SET(ac_cv_func_posix_getpwuid_r) - if test "$ac_cv_func_posix_getpwuid_r" = yes; then - AC_DEFINE(HAVE_POSIX_GETPWUID_R,1, - [Have POSIX function getpwuid_r]) - else - AC_CACHE_CHECK([for nonposix getpwuid_r], - ac_cv_func_nonposix_getpwuid_r, - [AC_TRY_LINK([#include ], - [char buffer[10000]; - struct passwd pwd; - getpwuid_r (0, &pwd, buffer, - sizeof (buffer));], - [ac_cv_func_nonposix_getpwuid_r=yes], - [ac_cv_func_nonposix_getpwuid_r=no])]) - GLIB_ASSERT_SET(ac_cv_func_nonposix_getpwuid_r) - if test "$ac_cv_func_nonposix_getpwuid_r" = yes; then - AC_DEFINE(HAVE_NONPOSIX_GETPWUID_R,1, - [Have non-POSIX function getpwuid_r]) - fi - fi -]) -AS_IF([ test "$glib_native_win32" != "yes"], [ - AC_CACHE_CHECK([for posix getgrgid_r], - ac_cv_func_posix_getgrgid_r, - [AC_TRY_RUN([ -#include -#include -int main () { - char buffer[10000]; - struct group grp, *grpptr = &grp; - int error; - errno = 0; - error = getgrgid_r (0, &grp, buffer, - sizeof (buffer), &grpptr); - return (error < 0 && errno == ENOSYS) - || error == ENOSYS; -} ], - [ac_cv_func_posix_getgrgid_r=yes], - [ac_cv_func_posix_getgrgid_r=no])]) - GLIB_ASSERT_SET(ac_cv_func_posix_getgrgid_r) - AS_IF([ test "$ac_cv_func_posix_getgrgid_r" = yes ], [ - AC_DEFINE(HAVE_POSIX_GETGRGID_R,1, - [Have POSIX function getgrgid_r]) - ], [ - AC_CACHE_CHECK([for nonposix getgrgid_r], - ac_cv_func_nonposix_getgrgid_r, - [AC_TRY_LINK([#include ], - [char buffer[10000]; - struct group grp; - getgrgid_r (0, &grp, buffer, - sizeof (buffer));], - [ac_cv_func_nonposix_getgrgid_r=yes], - [ac_cv_func_nonposix_getgrgid_r=no])]) - GLIB_ASSERT_SET(ac_cv_func_nonposix_getgrgid_r) - if test "$ac_cv_func_nonposix_getgrgid_r" = yes; then - AC_DEFINE(HAVE_NONPOSIX_GETGRGID_R,1, - [Have non-POSIX function getgrgid_r]) - fi - ]) -]) +AC_CHECK_FUNCS(localtime_r gmtime_r getpwuid_r getgrgid_r) + LIBS="$G_THREAD_LIBS $LIBS" AS_IF([ test x"$have_threads" = xposix], [ glib_save_CPPFLAGS="$CPPFLAGS" @@ -2256,8 +2101,7 @@ AS_IF([ test x"$have_threads" = xposix], [ LIBS="$glib_save_LIBS" # now spit out all the warnings. -if test "$ac_cv_func_posix_getpwuid_r" != "yes" && - test "$ac_cv_func_nonposix_getpwuid_r" != "yes"; then +if test "$ac_cv_func_getpwuid_r" != "yes"; then AC_MSG_WARN($FUNC_NO_GETPWUID_R) fi if test "$ac_cv_func_localtime_r" != "yes"; then @@ -2466,7 +2310,9 @@ PCRE_REQUIRED_VERSION=8.13 # Check if we should use the internal or the system-supplied pcre AC_ARG_WITH(pcre, [AS_HELP_STRING([--with-pcre=@<:@internal/system@:>@], - [whether to use system PCRE [default=internal]])]) + [whether to use system PCRE [default=system]])], + [], + [with_pcre=system]) AM_CONDITIONAL(USE_SYSTEM_PCRE, [test "x$with_pcre" = xsystem]) @@ -2544,30 +2390,10 @@ int error = EILSEQ; ], have_eilseq=yes, have_eilseq=no); AC_MSG_RESULT($have_eilseq) -dnl ****************************************************************** -dnl *** If we are cross-compiling, look for glib-genmarshal and *** -dnl *** glib-compile-schemas in PATH *** -dnl ****************************************************************** - +dnl Add a conditional we can use when cross-compiling, so we avoid running +dnl binaries AM_CONDITIONAL(CROSS_COMPILING, test $cross_compiling = yes) -AS_IF([ test $cross_compiling = yes ], [ - AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal, no) - if test x$GLIB_GENMARSHAL = xno; then - AC_MSG_ERROR(Could not find a glib-genmarshal in your PATH) - fi - - AC_PATH_PROG(GLIB_COMPILE_SCHEMAS, glib-compile-schemas, no) - if test x$GLIB_COMPILE_SCHEMAS = xno; then - AC_MSG_ERROR(Could not find a glib-compile-schemas in your PATH) - fi - - AC_PATH_PROG(GLIB_COMPILE_RESOURCES, glib-compile-resources, no) - if test x$GLIB_COMPILE_RESOURCES = xno; then - AC_MSG_ERROR(Could not find a glib-compile-resources in your PATH) - fi -]) - dnl ************************** dnl *** Checks for gtk-doc *** dnl ************************** @@ -2610,7 +2436,7 @@ AS_IF([test "$enable_man" != no], [ dnl check for DocBook XSL stylesheets in the local catalog JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl], [DocBook XSL Stylesheets], [have_docbook_style=yes],[have_docbook_style=no]) - AS_IF([ test "$have_docbook_dtd" != yes ], [ + AS_IF([ test "$have_docbook_style" != yes ], [ AS_IF([ test "$enable_man" = yes ], [ AC_MSG_ERROR([DocBook XSL Stylesheets are required for --enable-man]) ]) @@ -2893,6 +2719,8 @@ typedef gint64 goffset; #define G_GOFFSET_FORMAT G_GINT64_FORMAT #define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val) +#define G_POLLFD_FORMAT $g_pollfd_format + _______EOF if test -z "$glib_unknown_void_p"; then @@ -2928,26 +2756,6 @@ $glib_static_compilation $glib_vacopy -#ifdef __cplusplus -#define G_HAVE_INLINE 1 -#else /* !__cplusplus */ -$glib_inline -#endif /* !__cplusplus */ - -#ifdef __cplusplus -#define G_CAN_INLINE 1 -_______EOF - - if test x$g_can_inline = xyes ; then - cat >>$outfile <<_______EOF -#else /* !__cplusplus */ -#define G_CAN_INLINE 1 -_______EOF - fi - - cat >>$outfile <<_______EOF -#endif - _______EOF if test x$g_have_iso_c_varargs = xyes ; then @@ -3294,23 +3102,10 @@ if test x$glib_cv_va_val_copy = xno; then #define G_VA_COPY_AS_ARRAY 1" fi -if test x$glib_cv_hasinline = xyes; then - glib_inline='#define G_HAVE_INLINE 1' -fi -if test x$glib_cv_has__inline = xyes; then - glib_inline="\$glib_inline -#define G_HAVE___INLINE 1" -fi -if test x$glib_cv_has__inline__ = xyes; then - glib_inline="\$glib_inline -#define G_HAVE___INLINE__ 1" -fi - g_have_gnuc_varargs=$g_have_gnuc_varargs g_have_iso_c_varargs=$g_have_iso_c_varargs g_have_iso_cxx_varargs=$g_have_iso_cxx_varargs -g_can_inline=$g_can_inline g_have_gnuc_visibility=$g_have_gnuc_visibility g_have_sunstudio_visibility=$g_have_sunstudio_visibility @@ -3360,8 +3155,9 @@ g_memory_barrier_needed="$glib_memory_barrier_needed" g_gcc_atomic_ops="$glib_cv_gcc_has_builtin_atomic_operations" g_module_suffix="$glib_gmodule_suffix" - g_pid_type="$glib_pid_type" +g_pollfd_format="\"$glib_pollfd_format\"" + case $host in *-*-cygwin*) glib_os="#define G_OS_UNIX @@ -3456,8 +3252,6 @@ if test "x${enable_Bsymbolic}" = "xyes"; then GLIB_LINK_FLAGS=-Wl,-Bsymbolic-functions fi -AC_SUBST(GLIB_LINK_FLAGS) - dnl dnl Check for -z,nodelete linker flag: the type system assumes that dnl libgobject stays loaded for the lifetime of the process. @@ -3488,10 +3282,10 @@ AC_ARG_ENABLE([znodelete], LDFLAGS="${SAVED_LDFLAGS}" LIBS="${SAVED_LIBS}"]) if test "x${enable_znodelete}" = "xyes"; then - GOBJECT_LINK_FLAGS=-Wl,-z,nodelete + GLIB_LINK_FLAGS="$GLIB_LINK_FLAGS -Wl,-z,nodelete" fi -AC_SUBST(GOBJECT_LINK_FLAGS) +AC_SUBST(GLIB_LINK_FLAGS) dnl dnl Check for -fvisibility=hidden to determine if we can do GNU-style @@ -3592,11 +3386,13 @@ build/Makefile build/win32/Makefile build/win32/dirent/Makefile build/win32/vs9/Makefile +build/win32/vs9/glib-version-paths.vsprops build/win32/vs10/Makefile +build/win32/vs10/glib-version-paths.props build/win32/vs11/Makefile build/win32/vs12/Makefile +build/win32/vs14/Makefile glib/Makefile -glib/glib.stp glib/libcharset/Makefile glib/gnulib/Makefile glib/pcre/Makefile @@ -3605,7 +3401,6 @@ glib/tests/Makefile gmodule/Makefile gmodule/gmoduleconf.h gobject/Makefile -gobject/gobject.stp gobject/glib-mkenums gobject/tests/Makefile gthread/Makefile @@ -3616,7 +3411,6 @@ gio/gnetworking.h gio/xdgmime/Makefile gio/inotify/Makefile gio/kqueue/Makefile -gio/fen/Makefile gio/fam/Makefile gio/win32/Makefile gio/tests/Makefile @@ -3632,7 +3426,6 @@ docs/reference/glib/version.xml docs/reference/gobject/Makefile docs/reference/gobject/version.xml docs/reference/gio/Makefile -docs/reference/gio/gdbus-object-manager-example/Makefile docs/reference/gio/version.xml tests/Makefile tests/gobject/Makefile diff --git a/depcomp b/depcomp new file mode 100755 index 0000000..fc98710 --- /dev/null +++ b/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2013-05-30.07; # UTC + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/docs/Makefile.in b/docs/Makefile.in new file mode 100644 index 0000000..ab8ef06 --- /dev/null +++ b/docs/Makefile.in @@ -0,0 +1,758 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = docs +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = reference +EXTRA_DIST = debugging.txt macros.txt +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +files: + @files=`ls $(DISTFILES) 2> /dev/null `; for p in $$files; do \ + echo $$p; \ + done + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/docs/reference/.gitignore b/docs/reference/.gitignore deleted file mode 100644 index f9e370e..0000000 --- a/docs/reference/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -*-decl-list.txt -*-decl.txt -*-unused.txt -*-undocumented.txt -*-undeclared.txt -*.args -*.hierarchy -*.interfaces -*.prerequisites -*.signals -*.stamp -html -xml -*.bak -version.xml -*.1 diff --git a/docs/reference/Makefile.in b/docs/reference/Makefile.in new file mode 100644 index 0000000..d8355f4 --- /dev/null +++ b/docs/reference/Makefile.in @@ -0,0 +1,753 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = docs/reference +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in AUTHORS COPYING ChangeLog NEWS \ + README +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = glib gobject gio +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/reference/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/reference/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/docs/reference/gio/.gitignore b/docs/reference/gio/.gitignore deleted file mode 100644 index e9e522e..0000000 --- a/docs/reference/gio/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -*.1 -gio-overrides.txt -tmpl diff --git a/docs/reference/gio/Makefile.am b/docs/reference/gio/Makefile.am index 64e227a..38666b4 100644 --- a/docs/reference/gio/Makefile.am +++ b/docs/reference/gio/Makefile.am @@ -1,7 +1,5 @@ NULL = -SUBDIRS = gdbus-object-manager-example - # The name of the module. DOC_MODULE=gio @@ -13,10 +11,11 @@ SCAN_OPTIONS=--deprecated-guards="G_DISABLE_DEPRECATED" \ --ignore-decorators="G_GNUC_WARN_UNUSED_RESULT" # The directory containing the source code. Relative to $(srcdir) -DOC_SOURCE_DIR=$(top_srcdir)/gio +DOC_SOURCE_DIR =$(top_srcdir)/gio $(top_builddir)/gio -BUILT_HFILES=gioenumtypes.h -HFILE_GLOB=$(top_srcdir)/gio/*.h +HFILE_GLOB= \ + $(top_srcdir)/gio/*.h \ + $(top_builddir)/gio/gioenumtypes.h CFILE_GLOB=$(top_srcdir)/gio/*.c IGNORE_HFILES = \ diff --git a/docs/reference/gio/Makefile.in b/docs/reference/gio/Makefile.in new file mode 100644 index 0000000..f5c2d74 --- /dev/null +++ b/docs/reference/gio/Makefile.in @@ -0,0 +1,1132 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# -*- mode: makefile -*- + +#################################### +# Everything below here is generic # +#################################### +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@ENABLE_MAN_TRUE@am__append_1 = \ +@ENABLE_MAN_TRUE@ gapplication.1 \ +@ENABLE_MAN_TRUE@ gio-querymodules.1 \ +@ENABLE_MAN_TRUE@ glib-compile-schemas.1 \ +@ENABLE_MAN_TRUE@ glib-compile-resources.1 \ +@ENABLE_MAN_TRUE@ gsettings.1 \ +@ENABLE_MAN_TRUE@ gresource.1 \ +@ENABLE_MAN_TRUE@ gdbus.1 \ +@ENABLE_MAN_TRUE@ gdbus-codegen.1 + +subdir = docs/reference/gio +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = version.xml +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" +NROFF = nroff +MANS = $(man_MANS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/version.xml.in \ + $(top_srcdir)/gtk-doc.make +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +NULL = + +# The name of the module. +DOC_MODULE = gio + +# The top-level SGML file. +DOC_MAIN_SGML_FILE = gio-docs.xml + +# Extra options to supply to gtkdoc-scan +SCAN_OPTIONS = --deprecated-guards="G_DISABLE_DEPRECATED" \ + --ignore-decorators="G_GNUC_WARN_UNUSED_RESULT" + + +# The directory containing the source code. Relative to $(srcdir) +DOC_SOURCE_DIR = $(top_srcdir)/gio $(top_builddir)/gio +HFILE_GLOB = \ + $(top_srcdir)/gio/*.h \ + $(top_builddir)/gio/gioenumtypes.h + +CFILE_GLOB = $(top_srcdir)/gio/*.c +IGNORE_HFILES = \ + fam \ + fen \ + gdbus-2.0 \ + gvdb \ + inotify \ + kqueue \ + libasyncns \ + tests \ + win32 \ + xdgmime \ + gappinfoprivate.h \ + gapplicationimpl.h \ + gasynchelper.h \ + gcontenttypeprivate.h \ + gcontextspecificgroup.h \ + gcredentialsprivate.h \ + gdbus-daemon-generated.h \ + gdbusactiongroup-private.h \ + gdbusauth.h \ + gdbusauthmechanismanon.h \ + gdbusauthmechanismexternal.h \ + gdbusauthmechanism.h \ + gdbusauthmechanismsha1.h \ + gdbusdaemon.h \ + gdbusprivate.h \ + gdelayedsettingsbackend.h \ + gdummyfile.h \ + gdummyproxyresolver.h \ + gdummytlsbackend.h \ + gfileattribute-priv.h \ + gfileinfo-priv.h \ + ghttpproxy.h \ + giomodule-priv.h \ + gioprivate.h \ + giowin32-priv.h \ + glocaldirectorymonitor.h \ + glocalfileenumerator.h \ + glocalfile.h \ + glocalfileinfo.h \ + glocalfileinputstream.h \ + glocalfileiostream.h \ + glocalfilemonitor.h \ + glocalfileoutputstream.h \ + glocalvfs.h \ + gmountprivate.h \ + gnativevolumemonitor.h \ + gnetworkingprivate.h \ + gnetworkmonitorbase.h \ + gnetworkmonitornetlink.h \ + gnetworkmonitornm.h \ + gnotificationbackend.h \ + gnotification-private.h \ + gpollfilemonitor.h \ + gregistrysettingsbackend.h \ + gresourcefile.h \ + gsettingsbackendinternal.h \ + gsettings-mapping.h \ + gsettingsschema-internal.h \ + gsocketinputstream.h \ + gsocketoutputstream.h \ + gsocks4aproxy.h \ + gsocks4proxy.h \ + gsocks5proxy.h \ + gsubprocesslauncher-private.h \ + gthreadedresolver.h \ + gunionvolumemonitor.h \ + gunixmount.h \ + gunixresolver.h \ + gunixvolume.h \ + gunixvolumemonitor.h \ + gwin32appinfo.h \ + gwin32mount.h \ + gwin32resolver.h \ + gwin32volumemonitor.h \ + thumbnail-verify.h + +MKDB_IGNORE_FILES = \ + gdbus-daemon-generated.c \ + kqueue \ + libasyncns \ + tests \ + $(NULL) + + +# CFLAGS and LDFLAGS for compiling scan program. Only needed +# if $(DOC_MODULE).types is non-empty. +AM_CPPFLAGS = \ + $(gio_INCLUDES) \ + $(GLIB_DEBUG_FLAGS) + +GTKDOC_LIBS = \ + $(top_builddir)/glib/libglib-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/gio/libgio-2.0.la \ + $(NULL) + + +# Extra options to supply to gtkdoc-mkdb +MKDB_OPTIONS = --output-format=xml --name-space=g \ + --ignore-files='$(MKDB_IGNORE_FILES)' + + +# Images to copy into HTML directory +HTML_IMAGES = \ + gvfs-overview.png \ + menu-example.png \ + menu-model.png + +content_files = \ + version.xml \ + overview.xml \ + migrating-posix.xml \ + migrating-gnome-vfs.xml \ + migrating-gconf.xml \ + migrating-gdbus.xml \ + gio-querymodules.xml \ + glib-compile-schemas.xml\ + glib-compile-resources.xml \ + gapplication.xml \ + gsettings.xml \ + gresource.xml \ + gdbus.xml \ + gdbus-codegen.xml \ + $(NULL) + +expand_content_files = \ + overview.xml \ + migrating-posix.xml \ + migrating-gnome-vfs.xml \ + migrating-gconf.xml \ + migrating-gdbus.xml \ + gdbus-codegen.xml \ + $(NULL) + +extra_files = \ + version.xml.in \ + gvfs-overview.odg + + +# Extra options to supply to gtkdoc-fixref +FIXXREF_OPTIONS = --extra-dir=$(srcdir)/../glib/html --extra-dir=$(srcdir)/../gobject/html +@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = +@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute + +# We set GPATH here; this gives us semantics for GNU make +# which are more like other make's VPATH, when it comes to +# whether a source that is a target of one rule is then +# searched for in VPATH/GPATH. +# +GPATH = $(srcdir) +TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE) +SETUP_FILES = \ + $(content_files) \ + $(expand_content_files) \ + $(DOC_MAIN_SGML_FILE) \ + $(DOC_MODULE)-sections.txt \ + $(DOC_MODULE)-overrides.txt + +EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) version.xml.in $(man_MANS) +DOC_STAMPS = setup-build.stamp scan-build.stamp sgml-build.stamp \ + html-build.stamp pdf-build.stamp \ + sgml.stamp html.stamp pdf.stamp + +SCANOBJ_FILES = \ + $(DOC_MODULE).args \ + $(DOC_MODULE).hierarchy \ + $(DOC_MODULE).interfaces \ + $(DOC_MODULE).prerequisites \ + $(DOC_MODULE).signals + +REPORT_FILES = \ + $(DOC_MODULE)-undocumented.txt \ + $(DOC_MODULE)-undeclared.txt \ + $(DOC_MODULE)-unused.txt + +CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) \ + gtkdoc-check.test $(man_MANS) +@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP = +@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp +@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP = +@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp + +#### setup #### +GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V)) +GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build"; + +#### scan #### +GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V)) +GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files"; +GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_$(V)) +GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects"; + +#### xml #### +GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V)) +GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XML_0 = @echo " DOC Building XML"; + +#### html #### +GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V)) +GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_HTML_0 = @echo " DOC Building HTML"; +GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_$(V)) +GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references"; + +#### pdf #### +GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V)) +GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_PDF_0 = @echo " DOC Building PDF"; +man_MANS = $(am__append_1) +@ENABLE_MAN_TRUE@XSLTPROC_FLAGS = \ +@ENABLE_MAN_TRUE@ --nonet \ +@ENABLE_MAN_TRUE@ --stringparam man.output.quietly 1 \ +@ENABLE_MAN_TRUE@ --stringparam funcsynopsis.style ansi \ +@ENABLE_MAN_TRUE@ --stringparam man.th.extra1.suppress 1 \ +@ENABLE_MAN_TRUE@ --stringparam man.authors.section.enabled 0 \ +@ENABLE_MAN_TRUE@ --stringparam man.copyright.section.enabled 0 + +all: all-am + +.SUFFIXES: +.SUFFIXES: .1 .xml +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/reference/gio/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/reference/gio/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/gtk-doc.make $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +version.xml: $(top_builddir)/config.status $(srcdir)/version.xml.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: check-am +@ENABLE_GTK_DOC_FALSE@all-local: +all-am: Makefile $(MANS) all-local +installdirs: + for dir in "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-local + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-man + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic \ + maintainer-clean-local + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-local uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: install-am install-strip + +.PHONY: all all-am all-local check check-am clean clean-generic \ + clean-libtool clean-local cscopelist-am ctags-am dist-hook \ + distclean distclean-generic distclean-libtool distclean-local \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-data-local \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-man1 install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + maintainer-clean-local mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-local uninstall-man uninstall-man1 + +.PRECIOUS: Makefile + + +gtkdoc-check.test: Makefile + $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \ + echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \ + chmod +x $@ + +all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) +.PHONY: all-gtk-doc + +@ENABLE_GTK_DOC_TRUE@all-local: all-gtk-doc + +docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) + +$(REPORT_FILES): sgml-build.stamp + +setup-build.stamp: + -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ + files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ + if test "x$$files" != "x" ; then \ + for file in $$files ; do \ + destdir=`dirname $(abs_builddir)/$$file`; \ + test -d "$$destdir" || mkdir -p "$$destdir"; \ + test -f $(abs_srcdir)/$$file && \ + cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ + done; \ + fi; \ + fi + $(AM_V_at)touch setup-build.stamp + +scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) + $(GTK_DOC_V_SCAN)_source_dir='' ; \ + for i in $(DOC_SOURCE_DIR) ; do \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ + done ; \ + gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) + $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ + scanobj_options=""; \ + gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + scanobj_options="--verbose"; \ + fi; \ + fi; \ + CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ + gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ + else \ + for i in $(SCANOBJ_FILES) ; do \ + test -f $$i || touch $$i ; \ + done \ + fi + $(AM_V_at)touch scan-build.stamp + +$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp + @true + +sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent + $(GTK_DOC_V_XML)_source_dir='' ; \ + for i in $(DOC_SOURCE_DIR) ; do \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ + done ; \ + gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) + $(AM_V_at)touch sgml-build.stamp + +sgml.stamp: sgml-build.stamp + @true + +xml/gtkdocentities.ent: Makefile + $(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + ) > $@ + +html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) + $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ + mkhtml_options=""; \ + gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + mkhtml_options="$$mkhtml_options --verbose"; \ + fi; \ + fi; \ + gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ + if test "$$?" = "0"; then \ + mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ + fi; \ + cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) + -@test "x$(HTML_IMAGES)" = "x" || \ + for file in $(HTML_IMAGES) ; do \ + if test -f $(abs_srcdir)/$$file ; then \ + cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ + fi; \ + if test -f $(abs_builddir)/$$file ; then \ + cp $(abs_builddir)/$$file $(abs_builddir)/html; \ + fi; \ + done; + $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) + $(AM_V_at)touch html-build.stamp + +pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) + $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ + mkpdf_options=""; \ + gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + mkpdf_options="$$mkpdf_options --verbose"; \ + fi; \ + fi; \ + if test "x$(HTML_IMAGES)" != "x"; then \ + for img in $(HTML_IMAGES); do \ + part=`dirname $$img`; \ + echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ + if test $$? != 0; then \ + mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ + fi; \ + done; \ + fi; \ + gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) + $(AM_V_at)touch pdf-build.stamp + +############## + +clean-local: + @rm -f *~ *.bak + @rm -rf .libs + @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \ + rm -f $(DOC_MODULE).types; \ + fi + @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-sections" ; then \ + rm -f $(DOC_MODULE)-sections.txt; \ + fi + +distclean-local: + @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ + $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt + @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ + rm -f $(SETUP_FILES) $(DOC_MODULE).types; \ + fi + +maintainer-clean-local: + @rm -rf xml html + +install-data-local: + @installfiles=`echo $(builddir)/html/*`; \ + if test "$$installfiles" = '$(builddir)/html/*'; \ + then echo 1>&2 'Nothing to install' ; \ + else \ + if test -n "$(DOC_MODULE_VERSION)"; then \ + installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ + else \ + installdir="$(DESTDIR)$(TARGET_DIR)"; \ + fi; \ + $(mkinstalldirs) $${installdir} ; \ + for i in $$installfiles; do \ + echo ' $(INSTALL_DATA) '$$i ; \ + $(INSTALL_DATA) $$i $${installdir}; \ + done; \ + if test -n "$(DOC_MODULE_VERSION)"; then \ + mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ + $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ + fi; \ + $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ + fi + +uninstall-local: + @if test -n "$(DOC_MODULE_VERSION)"; then \ + installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ + else \ + installdir="$(DESTDIR)$(TARGET_DIR)"; \ + fi; \ + rm -rf $${installdir} + +# +# Require gtk-doc when making dist +# +@HAVE_GTK_DOC_TRUE@dist-check-gtkdoc: docs +@HAVE_GTK_DOC_FALSE@dist-check-gtkdoc: +@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc is needed to run 'make dist'. ***" +@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc was not found when 'configure' ran. ***" +@HAVE_GTK_DOC_FALSE@ @echo "*** please install gtk-doc and rerun 'configure'. ***" +@HAVE_GTK_DOC_FALSE@ @false + +dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local + @mkdir $(distdir)/html + @cp ./html/* $(distdir)/html + @-cp ./$(DOC_MODULE).pdf $(distdir)/ + @-cp ./$(DOC_MODULE).types $(distdir)/ + @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ + @cd $(distdir) && rm -f $(DISTCLEANFILES) + @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html + +.PHONY : dist-hook-local docs + +@ENABLE_MAN_TRUE@.xml.1: +@ENABLE_MAN_TRUE@ $(AM_V_GEN) $(XSLTPROC) $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $< + +CLEANFILES ?= + +dist-hook-local: all-local + +gio-docs-clean: clean + cd $(srcdir) && rm -rf xml html + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/docs/reference/gio/gapplication.1 b/docs/reference/gio/gapplication.1 new file mode 100644 index 0000000..2ba0a93 --- /dev/null +++ b/docs/reference/gio/gapplication.1 @@ -0,0 +1,293 @@ +'\" t +.\" Title: gapplication +.\" Author: Ryan Lortie +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 03/22/2016 +.\" Manual: User Commands +.\" Source: GIO +.\" Language: English +.\" +.TH "GAPPLICATION" "1" "" "GIO" "User Commands" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +gapplication \- D\-Bus application launcher +.SH "SYNOPSIS" +.HP \w'\fBgapplication\fR\ 'u +\fBgapplication\fR help [\fICOMMAND\fR] +.HP \w'\fBgapplication\fR\ 'u +\fBgapplication\fR version +.HP \w'\fBgapplication\fR\ 'u +\fBgapplication\fR list\-apps +.HP \w'\fBgapplication\fR\ 'u +\fBgapplication\fR launch \fIAPPID\fR +.HP \w'\fBgapplication\fR\ 'u +\fBgapplication\fR launch \fIAPPID\fR [\fIFILE\fR...] +.HP \w'\fBgapplication\fR\ 'u +\fBgapplication\fR list\-actions \fIAPPID\fR +.HP \w'\fBgapplication\fR\ 'u +\fBgapplication\fR action \fIAPPID\fR \fIACTION\fR [\fIPARAMETER\fR] +.SH "DESCRIPTION" +.PP +\fBgapplication\fR +is a commandline implementation of the client\-side of the +org\&.freedesktop\&.Application +interface as specified by the freedesktop\&.org Desktop Entry Specification\&. +.PP +\fBgapplication\fR +can be used to start applications that have +\fIDBusActivatable\fR +set to +true +in their +\&.desktop +files and can be used to send messages to already\-running instances of other applications\&. +.PP +It is possible for applications to refer to +\fBgapplication\fR +in the +\fIExec\fR +line of their +\&.desktop +file to maintain backwards compatibility with implementations that do not directly support +\fIDBusActivatable\fR\&. +.PP +\fBgapplication\fR +ships as part of +GLib\&. +.SH "COMMANDS" +.SS "Global commands" +.PP +\fBhelp\fR [\fICOMMAND\fR] +.RS 4 +Displays a short synopsis of the available commands or provides detailed help on a specific command\&. +.RE +.PP +\fBversion\fR +.RS 4 +Prints the GLib version whence +\fBgapplication\fR +came\&. +.RE +.PP +\fBlist\-apps\fR +.RS 4 +Prints a list of all application IDs that are known to support D\-Bus activation\&. This list is generated by scanning +\&.desktop +files as per the current +\fBXDG_DATA_DIRS\fR\&. +.RE +.PP +\fBlaunch\fR \fIAPPID\fR [\fIFILE\fR...] +.RS 4 +Launches an application\&. +.sp +The first parameter is the application ID in the familiar "reverse DNS" style (eg: \*(Aqorg\&.gnome\&.app\*(Aq) without the +\&.desktop +suffix\&. +.sp +Optionally, if additional parameters are given, they are treated as the names of files to open and may be filenames or URIs\&. If no files are given then the application is simply activated\&. +.RE +.PP +\fBlist\-actions\fR \fIAPPID\fR +.RS 4 +List the actions declared in the application\*(Aqs +\&.desktop +file\&. The parameter is the application ID, as above\&. +.RE +.PP +\fBaction\fR \fIAPPID\fR \fIACTION\fR [\fIPARAMETER\fR] +.RS 4 +Invokes the named action (in the same way as would occur when activating an action specified in the +\&.desktop +file)\&. +.sp +The application ID (as above) is the first parameter\&. The action name follows\&. +.sp +Optionally, following the action name can be one parameter, in GVariant format, given as a single argument\&. Make sure to use sufficient quoting\&. +.RE +.SH "EXAMPLES" +.SS "From the commandline" +.PP +Launching an application: +.sp +.if n \{\ +.RS 4 +.\} +.nf + gapplication launch org\&.example\&.fooview + +.fi +.if n \{\ +.RE +.\} +.PP +Opening a file with an application: +.sp +.if n \{\ +.RS 4 +.\} +.nf + gapplication launch org\&.example\&.fooview ~/file\&.foo + +.fi +.if n \{\ +.RE +.\} +.PP +Opening many files with an application: +.sp +.if n \{\ +.RS 4 +.\} +.nf + gapplication launch org\&.example\&.fooview ~/foos/*\&.foo + +.fi +.if n \{\ +.RE +.\} +.PP +Invoking an action on an application: +.sp +.if n \{\ +.RS 4 +.\} +.nf + gapplication action org\&.example\&.fooview create + +.fi +.if n \{\ +.RE +.\} +.PP +Invoking an action on an application, with an action: +.sp +.if n \{\ +.RS 4 +.\} +.nf + gapplication action org\&.example\&.fooview show\-item \*(Aq"item_id_828739"\*(Aq + +.fi +.if n \{\ +.RE +.\} +.SS "From the \fIExec\fR lines of a \&.desktop file" +.PP +The commandline interface of +\fBgapplication\fR +was designed so that it could be used directly from the +\fIExec\fR +line of a +\&.desktop +file\&. +.PP +You might want to do this to allow for backwards compatibility with implementations of the specification that do not understand how to do D\-Bus activation, without having to install a separate utility program\&. +.PP +Consider the following example: +.sp +.if n \{\ +.RS 4 +.\} +.nf + [Desktop Entry] + Version=1\&.1 + Type=Application + Name=Foo Viewer + DBusActivatable=true + MimeType=image/x\-foo; + Exec=gapplication launch org\&.example\&.fooview %F + Actions=gallery;create; + + [Desktop Action gallery] + Name=Browse Gallery + Exec=gapplication action org\&.example\&.fooview gallery + + [Desktop Action create] + Name=Create a new Foo! + Exec=gapplication action org\&.example\&.fooview create + +.fi +.if n \{\ +.RE +.\} +.SS "From a script" +.PP +If installing an application that supports D\-Bus activation you may still want to put a file in +/usr/bin +so that your program can be started from a terminal\&. +.PP +It is possible for this file to be a shell script\&. The script can handle arguments such as \-\-help and \-\-version directly\&. It can also parse other command line arguments and convert them to uses of +\fBgapplication\fR +to activate the application, open files, or invoke actions\&. +.PP +Here is a simplified example, as may be installed in +/usr/bin/fooview: +.sp +.if n \{\ +.RS 4 +.\} +.nf + #!/bin/sh + + case "$1" in + \-\-help) + echo "see \*(Aqman fooview\*(Aq for more information" + ;; + + \-\-version) + echo "fooview 1\&.2" + ;; + + \-\-gallery) + gapplication action org\&.example\&.fooview gallery + ;; + + \-\-create) + gapplication action org\&.example\&.fooview create + ;; + + \-*) + echo "unrecognised commandline argument" + exit 1 + ;; + + *) + gapplication launch org\&.example\&.fooview "$@" + ;; + esac + +.fi +.if n \{\ +.RE +.\} +.SH "SEE ALSO" +.PP +\m[blue]\fBDesktop Entry Specification\fR\m[]\&\s-2\u[1]\d\s+2, +\fBgdbus\fR(1), +\fBxdg-open\fR(1), +\fBdesktop-file-validate\fR(1) +.SH "NOTES" +.IP " 1." 4 +Desktop Entry Specification +.RS 4 +\%http://standards.freedesktop.org/desktop-entry-spec/latest/ +.RE diff --git a/docs/reference/gio/gdbus-codegen.1 b/docs/reference/gio/gdbus-codegen.1 new file mode 100644 index 0000000..11c636f --- /dev/null +++ b/docs/reference/gio/gdbus-codegen.1 @@ -0,0 +1,761 @@ +'\" t +.\" Title: gdbus-codegen +.\" Author: David Zeuthen +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 03/22/2016 +.\" Manual: User Commands +.\" Source: GIO +.\" Language: English +.\" +.TH "GDBUS\-CODEGEN" "1" "" "GIO" "User Commands" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +gdbus-codegen \- D\-Bus code and documentation generator +.SH "SYNOPSIS" +.HP \w'\fBgdbus\-codegen\fR\ 'u +\fBgdbus\-codegen\fR [\fB\-h\fR,\ \fB\-\-help\fR] [\fB\-\-interface\-prefix\fR\ \fIorg\&.project\&.Prefix\fR] [\fB\-\-generate\-c\-code\fR\ \fIOUTFILES\fR] [\fB\-\-c\-namespace\fR\ \fIYourProject\fR] [\fB\-\-c\-generate\-object\-manager\fR] [\fB\-\-generate\-docbook\fR\ \fIOUTFILES\fR] [\fB\-\-xml\-files\fR\ \fIFILE\fR] [\fB\-\-annotate\fR\ \fIELEMENT\fR\ \fIKEY\fR\ \fIVALUE\fR]... FILE [FILE...] +.SH "DESCRIPTION" +.PP +\fBgdbus\-codegen\fR +is used to generate code and/or documentation for one or more D\-Bus interfaces\&. The tool reads +\m[blue]\fBD\-Bus Introspection XML\fR\m[]\&\s-2\u[1]\d\s+2 +files and generates output files\&. The tool currently supports generating C code (via +\fB\-\-generate\-c\-code\fR) and Docbook XML (via +\fB\-\-generate\-docbook\fR)\&. +.SH "GENERATING C CODE" +.PP +When generating C code, a #GInterface +\-derived type is generated for each D\-Bus interface\&. Additionally, for every generated type, +\fBFooBar\fR, two concrete instantiable types, +\fBFooBarProxy\fR +and +\fBFooBarSkeleton\fR, implementing said interface are also generated\&. The former is derived from #GDBusProxy and intended for use on the client side while the latter is derived from the #GDBusInterfaceSkeleton type making it easy to export on a #GDBusConnection either directly or via a #GDBusObjectManagerServer instance\&. +.PP +The name of each generated C type is derived from the D\-Bus interface name stripped with the prefix given with +\fB\-\-interface\-prefix\fR +and with the dots removed and initial characters capitalized\&. For example, for the D\-Bus interface +com\&.acme\&.Coyote +the name used is +ComAcmeCoyote\&. For the D\-Bus interface +org\&.project\&.Bar\&.Frobnicator +with +\fB\-\-interface\-prefix\fR +org\&.project\&., the name used is +BarFrobnicator\&. +.PP +For methods, signals and properties, if not specified, the name defaults to the name of the method, signal or property\&. +.PP +Two forms of the name are used \- the CamelCase form and the lower\-case form\&. The CamelCase form is used for the #GType and struct name, while lower\-case form is used in function names\&. The lower\-case form is calculated by converting from CamelCase to lower\-case and inserting underscores at word boundaries (using certain heuristics)\&. +.PP +If the value given by the +org\&.gtk\&.GDBus\&.C\&.Name +annotation or the +\fB\-\-c\-namespace\fR +option contains an underscore (sometimes called +\fIUgly_Case\fR), then the camel\-case name is derived by removing all underscores, and the lower\-case name is derived by lower\-casing the string\&. This is useful in some situations where abbreviations are used\&. For example, if the annotation is used on the interface +net\&.MyCorp\&.MyApp\&.iSCSITarget +with the value +iSCSI_Target +the CamelCase form is +iSCSITarget +while the lower\-case form is +iscsi_target\&. If the annotation is used on the method +EjectTheiPod +with the value +Eject_The_iPod, the lower\-case form is +eject_the_ipod\&. +.SH "GENERATING DOCBOOK DOCUMENTATION" +.PP +Each generated Docbook XML file (see the +\fB\-\-generate\-docbook\fR +option for details) is a +\m[blue]\fBRefEntry\fR\m[]\&\s-2\u[2]\d\s+2 +article describing the D\-Bus interface\&. +.SH "OPTIONS" +.PP +The following options are supported: +.PP +\fB\-h\fR, \fB\-\-help\fR +.RS 4 +Show help and exit\&. +.RE +.PP +\fB\-\-xml\-files\fR \fIFILE\fR +.RS 4 +The D\-Bus introspection XML file\&. +.RE +.PP +\fB\-\-interface\-prefix\fR \fIorg\&.project\&.Prefix\&.\fR +.RS 4 +A prefix to strip from all D\-Bus interface names when calculating the typename for the C binding and the Docbook +\m[blue]\fBsortas attribute\fR\m[]\&\s-2\u[3]\d\s+2\&. +.RE +.PP +\fB\-\-generate\-docbook\fR \fIOUTFILES\fR +.RS 4 +Generate Docbook Documentation for each D\-Bus interface and put it in +OUTFILES\-NAME\&.xml +where +NAME +is a place\-holder for the interface name, e\&.g\&. +net\&.Corp\&.FooBar +and so on\&. +.RE +.PP +\fB\-\-generate\-c\-code\fR \fIOUTFILES\fR +.RS 4 +Generate C code for all D\-Bus interfaces and put it in +OUTFILES\&.c +and +OUTFILES\&.h\&. +.RE +.PP +\fB\-\-c\-namespace\fR \fIYourProject\fR +.RS 4 +The namespace to use for generated C code\&. This is expected to be in +\m[blue]\fBCamelCase\fR\m[]\&\s-2\u[4]\d\s+2 +or +\fIUgly_Case\fR +(see above)\&. +.RE +.PP +\fB\-\-c\-generate\-object\-manager\fR +.RS 4 +If this option is passed, suitable #GDBusObject, #GDBusObjectProxy, #GDBusObjectSkeleton and #GDBusObjectManagerClient subclasses are generated\&. +.RE +.PP +\fB\-\-annotate\fR \fIELEMENT\fR \fIKEY\fR \fIVALUE\fR +.RS 4 +Used to inject D\-Bus annotations into the given XML files\&. It can be used with interfaces, methods, signals, properties and arguments in the following way: +.sp +.if n \{\ +.RS 4 +.\} +.nf +gdbus\-codegen \-\-c\-namespace MyApp \e + \-\-generate\-c\-code myapp\-generated \e + \-\-annotate "org\&.project\&.InterfaceName" \e + org\&.gtk\&.GDBus\&.C\&.Name MyFrobnicator \e + \-\-annotate "org\&.project\&.InterfaceName:Property" \e + bar bat \e + \-\-annotate "org\&.project\&.InterfaceName\&.Method()" \e + org\&.freedesktop\&.DBus\&.Deprecated true \e + \-\-annotate "org\&.project\&.InterfaceName\&.Method()[arg_name]" \e + snake hiss \e + \-\-annotate "org\&.project\&.InterfaceName::Signal" \e + cat meow \e + \-\-annotate "org\&.project\&.InterfaceName::Signal[arg_name]" \e + dog wuff \e + myapp\-dbus\-interfaces\&.xml +.fi +.if n \{\ +.RE +.\} +Any UTF\-8 string can be used for +\fIKEY\fR +and +\fIVALUE\fR\&. +.RE +.SH "SUPPORTED D\-BUS ANNOTATIONS" +.PP +The following D\-Bus annotations are supported by +\fBgdbus\-codegen\fR: +.PP +org\&.freedesktop\&.DBus\&.Deprecated +.RS 4 +Can be used on any +, +, + +and + +element to specify that the element is deprecated if its value is +true\&. Note that this annotation is defined in the +\m[blue]\fBD\-Bus specification\fR\m[]\&\s-2\u[1]\d\s+2 +and can only assume the values +true +and +false\&. In particular, you cannot specify the version that the element was deprecated in nor any helpful deprecation message\&. Such information should be added to the element documentation instead\&. +.sp +When generating C code, this annotation is used to add #G_GNUC_DEPRECATED to generated functions for the element\&. +.sp +When generating Docbook XML, a deprecation warning will appear along the documentation for the element\&. +.RE +.PP +org\&.gtk\&.GDBus\&.Since +.RS 4 +Can be used on any +, +, + +and + +element to specify the version (any free\-form string but compared using a version\-aware sort function) the element appeared in\&. +.sp +When generating C code, this field is used to ensure function pointer order for preserving ABI/API, see +the section called \(lqSTABILITY GUARANTEES\(rq\&. +.sp +When generating Docbook XML, the value of this tag appears in the documentation\&. +.RE +.PP +org\&.gtk\&.GDBus\&.DocString +.RS 4 +A string with Docbook content for documentation\&. This annotation can be used on +, +, +, + +and + +elements\&. +.RE +.PP +org\&.gtk\&.GDBus\&.DocString\&.Short +.RS 4 +A string with Docbook content for short/brief documentation\&. This annotation can only be used on + +elements\&. +.RE +.PP +org\&.gtk\&.GDBus\&.C\&.Name +.RS 4 +Can be used on any +, +, + +and + +element to specify the name to use when generating C code\&. The value is expected to be in +\m[blue]\fBCamelCase\fR\m[]\&\s-2\u[4]\d\s+2 +or +\fIUgly_Case\fR +(see above)\&. +.RE +.PP +org\&.gtk\&.GDBus\&.C\&.ForceGVariant +.RS 4 +If set to a non\-empty string, a #GVariant instance will be used instead of the natural C type\&. This annotation can be used on any + +and + +element\&. +.RE +.PP +org\&.gtk\&.GDBus\&.C\&.UnixFD +.RS 4 +If set to a non\-empty string, the generated code will include parameters to exchange file descriptors using the #GUnixFDList type\&. This annotation can be used on + +elements\&. +.RE +.PP +As an easier alternative to using the +org\&.gtk\&.GDBus\&.DocString +annotation, note that parser used by +\fBgdbus\-codegen\fR +parses XML comments in a way similar to +\m[blue]\fBgtk\-doc\fR\m[]\&\s-2\u[5]\d\s+2: +.sp .if n \{\ .RS 4 .\} .nf longer description\&. This is a new paragraph\&. \-\-> .fi .if n \{\ .RE .\} +.PP +Note that +@since +can be used in any inline documentation bit (e\&.g\&. for interfaces, methods, signals and properties) to set the +org\&.gtk\&.GDBus\&.Since +annotation\&. For the +org\&.gtk\&.GDBus\&.DocString +annotation (and inline comments), note that substrings of the form +#net\&.Corp\&.Bar, +net\&.Corp\&.Bar\&.FooMethod(), +#net\&.Corp\&.Bar::BarSignal +and +#net\&.Corp\&.InlineDocs:BazProperty +are all expanded to links to the respective interface, method, signal and property\&. Additionally, substrings starting with +@ +and +% +characters are rendered as +\m[blue]\fBparameter\fR\m[]\&\s-2\u[6]\d\s+2 +and +\m[blue]\fBconstant\fR\m[]\&\s-2\u[7]\d\s+2 +respectively\&. +.PP +If both XML comments and +org\&.gtk\&.GDBus\&.DocString +or +org\&.gtk\&.GDBus\&.DocString\&.Short +annotations are present, the latter wins\&. +.SH "EXAMPLE" +.PP +Consider the following D\-Bus Introspection XML\&. +.sp +.if n \{\ +.RS 4 +.\} +.nf + + + + + + + + + + + + + + + + +.fi +.if n \{\ +.RE +.\} +.PP +If +\fBgdbus\-codegen\fR +is used on this file like this: +.sp +.if n \{\ +.RS 4 +.\} +.nf +gdbus\-codegen \-\-generate\-c\-code myapp\-generated \e + \-\-c\-namespace MyApp \e + \-\-interface\-prefix net\&.corp\&.MyApp\&. \e + net\&.Corp\&.MyApp\&.Frobber\&.xml +.fi +.if n \{\ +.RE +.\} +.PP +two files called +myapp\-generated\&.[ch] +are generated\&. The files provide an abstract #GTypeInterface +\-derived type called +\fBMyAppFrobber\fR +as well as two instantiable types with the same name but suffixed with +\fBProxy\fR +and +\fBSkeleton\fR\&. The generated file, roughly, contains the following facilities: +.sp +.if n \{\ +.RS 4 +.\} +.nf +/* GType macros for the three generated types */ +#define MY_APP_TYPE_FROBBER (my_app_frobber_get_type ()) +#define MY_APP_TYPE_FROBBER_SKELETON (my_app_frobber_skeleton_get_type ()) +#define MY_APP_TYPE_FROBBER_PROXY (my_app_frobber_proxy_get_type ()) + +typedef struct _MyAppFrobber MyAppFrobber; /* Dummy typedef */ + +typedef struct +{ + GTypeInterface parent_iface; + + /* Signal handler for the ::notification signal */ + void (*notification) (MyAppFrobber *proxy, + GVariant *icon_blob, + gint height, + const gchar* const *messages); + + /* Signal handler for the ::handle\-hello\-world signal */ + gboolean (*handle_hello_world) (MyAppFrobber *proxy, + GDBusMethodInvocation *invocation, + const gchar *greeting); +} MyAppFrobberIface; + +/* Asynchronously calls HelloWorld() */ +void +my_app_frobber_call_hello_world (MyAppFrobber *proxy, + const gchar *greeting, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +gboolean +my_app_frobber_call_hello_world_finish (MyAppFrobber *proxy, + gchar **out_response, + GAsyncResult *res, + GError **error); + +/* Synchronously calls HelloWorld()\&. Blocks calling thread\&. */ +gboolean +my_app_frobber_call_hello_world_sync (MyAppFrobber *proxy, + const gchar *greeting, + gchar **out_response, + GCancellable *cancellable, + GError **error); + +/* Completes handling the HelloWorld() method call */ +void +my_app_frobber_complete_hello_world (MyAppFrobber *object, + GDBusMethodInvocation *invocation, + const gchar *response); + +/* Emits the ::notification signal / Notification() D\-Bus signal */ +void +my_app_frobber_emit_notification (MyAppFrobber *object, + GVariant *icon_blob, + gint height, + const gchar* const *messages); + +/* Gets the :verbose GObject property / Verbose D\-Bus property\&. + * Does no blocking I/O\&. + */ +gboolean my_app_frobber_get_verbose (MyAppFrobber *object); + +/* Sets the :verbose GObject property / Verbose D\-Bus property\&. + * Does no blocking I/O\&. + */ +void my_app_frobber_set_verbose (MyAppFrobber *object, + gboolean value); + +/* Gets the interface info */ +GDBusInterfaceInfo *my_app_frobber_interface_info (void); + +/* Creates a new skeleton object, ready to be exported */ +MyAppFrobber *my_app_frobber_skeleton_new (void); + +/* Client\-side proxy constructors\&. + * + * Additionally, _new_for_bus(), _new_for_bus_finish() and + * _new_for_bus_sync() proxy constructors are also generated\&. + */ +void +my_app_frobber_proxy_new (GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +MyAppFrobber * +my_app_frobber_proxy_new_finish (GAsyncResult *res, + GError **error); +MyAppFrobber * +my_app_frobber_proxy_new_sync (GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error); +.fi +.if n \{\ +.RE +.\} +.PP +Thus, for every D\-Bus method, there will be three C functions for calling the method, one #GObject signal for handling an incoming call and one C function for completing an incoming call\&. For every D\-Bus signal, there\*(Aqs one #GObject signal and one C function for emitting it\&. For every D\-Bus property, two C functions are generated (one setter, one getter) and one #GObject property\&. The following table summarizes the generated facilities and where they are applicable: +.TS +allbox tab(:); +lB lB lB. +T{ +\ \& +T}:T{ +Client +T}:T{ +Server +T} +.T& +l l l +l l l +l l l +l l l +l l l. +T{ +Types +T}:T{ +Use \fBMyAppFrobberProxy\fR +T}:T{ +Any type implementing the \fBMyAppFrobber\fR interface +T} +T{ +Methods +T}:T{ +Use \fBm_a_f_hello_world()\fR to call\&. +T}:T{ +Receive via the \fBhandle_hello_world()\fR signal handler\&. Complete the call with \fBm_a_f_complete_hello_world()\fR +T} +T{ +Signals +T}:T{ +Connect to the \fB::notification\fR GObject signal\&. +T}:T{ +Use \fBm_a_f_emit_notification()\fR to emit signal\&. +T} +T{ +Properties (Reading) +T}:T{ +Use \fBm_a_f_get_verbose()\fR or \fI:verbose\fR\&. +T}:T{ +Implement #GObject\*(Aqs \fBget_property()\fR vfunc\&. +T} +T{ +Properties (writing) +T}:T{ +Use \fBm_a_f_set_verbose()\fR or \fI:verbose\fR\&. +T}:T{ +Implement #GObject\*(Aqs \fBset_property()\fR vfunc\&. +T} +.TE +.sp 1 +.SS "Client\-side usage" +.PP +You can use the generated proxy type with the generated constructors: +.sp +.if n \{\ +.RS 4 +.\} +.nf + MyAppFrobber *proxy; + GError *error; + + error = NULL; + proxy = my_app_frobber_proxy_new_for_bus_sync ( + G_BUS_TYPE_SESSION, + G_DBUS_PROXY_FLAGS_NONE, + "net\&.Corp\&.MyApp", /* bus name */ + "/net/Corp/MyApp/SomeFrobber", /* object */ + NULL, /* GCancellable* */ + &error); + /* do stuff with proxy */ + g_object_unref (proxy); +.fi +.if n \{\ +.RE +.\} +.PP +Instead of using the generic #GDBusProxy facilities, one can use the generated methods such as +\fBmy_app_frobber_call_hello_world()\fR +to invoke the +\fBnet\&.Corp\&.MyApp\&.Frobber\&.HelloWorld()\fR +D\-Bus method, connect to the the +\fB::notification\fR +GObject signal to receive the +\fBnet\&.Corp\&.MyApp\&.Frobber::Notication\fR +D\-Bus signal and get/set the +\fInet\&.Corp\&.MyApp\&.Frobber:Verbose\fR +D\-Bus Property using either the GObject property +\fI:verbose\fR +or the +\fBmy_app_get_verbose()\fR +and +\fBmy_app_set_verbose()\fR +methods\&. Use the standard #GObject::notify signal to listen to property changes\&. +.PP +Note that all property access is via #GDBusProxy +\*(Aqs property cache so no I/O is ever done when reading properties\&. Also note that setting a property will cause the +\m[blue]\fBorg\&.freedesktop\&.DBus\&.Properties\&.Set\fR\m[]\&\s-2\u[8]\d\s+2 +method to be called on the remote object\&. This call, however, is asynchronous so setting a property won\*(Aqt block\&. Further, the change is delayed and no error checking is possible\&. +.SS "Server\-side usage" +.PP +The generated +\fBMyAppFrobber\fR +interface is designed so it is easy to implement it in a #GObject subclass\&. For example, to handle +\fBHelloWorld()\fR +method invocations, set the vfunc for +\fBhandle_hello_hello_world()\fR +in the +\fBMyAppFrobberIface\fR +structure\&. Similary, to handle the +\fInet\&.Corp\&.MyApp\&.Frobber:Verbose\fR +property override the +\fI:verbose\fR +#GObject property from the subclass\&. To emit a signal, use e\&.g\&. +\fBmy_app_emit_signal()\fR +or g_signal_emit_by_name()\&. +.PP +Instead of subclassing, it is often easier to use the generated +\fBMyAppFrobberSkeleton\fR +subclass\&. To handle incoming method calls, use +\fBg_signal_connect()\fR +with the +\fB::handle\-*\fR +signals and instead of overriding #GObject +\*(Aqs +\fBget_property()\fR +and +\fBset_property()\fR +vfuncs, use g_object_get() and g_object_set() or the generated property getters and setters (the generated class has an internal property bag implementation)\&. +.sp +.if n \{\ +.RS 4 +.\} +.nf +static gboolean +on_handle_hello_world (MyAppFrobber *interface, + GDBusMethodInvocation *invocation, + const gchar *greeting, + gpointer user_data) +{ + if (g_strcmp0 (greeting, "Boo") != 0) + { + gchar *response; + response = g_strdup_printf ("Word! You said `%s\*(Aq\&.", greeting); + my_app_complete_hello_world (interface, invocation, response); + g_free (response); + } + else + { + g_dbus_method_invocation_return_error (invocation, + MY_APP_ERROR, + MY_APP_ERROR_NO_WHINING, + "Hey, %s, there will be no whining!", + g_dbus_method_invocation_get_sender (invocation)); + } + return TRUE; +} + + [\&.\&.\&.] + + interface = my_app_frobber_skeleton_new (); + my_app_frobber_set_verbose (interface, TRUE); + + g_signal_connect (interface, + "handle\-hello\-world", + G_CALLBACK (on_handle_hello_world), + some_user_data); + + [\&.\&.\&.] + + error = NULL; + if (!g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (interface), + connection, + "/path/of/dbus_object", + &error)) + { + /* handle error */ + } +.fi +.if n \{\ +.RE +.\} +.PP +To facilitate atomic changesets (multiple properties changing at the same time), #GObject::notify signals are queued up when received\&. The queue is drained in an idle handler (which is called from the +thread\-default main loop +of the thread where the skeleton object was contructed) and will cause emissions of the +\m[blue]\fBorg\&.freedesktop\&.DBus\&.Properties::PropertiesChanged\fR\m[]\&\s-2\u[8]\d\s+2 +signal with all the properties that have changed\&. Use g_dbus_interface_skeleton_flush() or g_dbus_object_skeleton_flush() to empty the queue immediately\&. Use g_object_freeze_notify() and g_object_thaw_notify() for atomic changesets if on a different thread\&. +.SH "C TYPE MAPPING" +.PP +Scalar types (type\-strings +\*(Aqb\*(Aq, +\*(Aqy\*(Aq, +\*(Aqn\*(Aq, +\*(Aqq\*(Aq, +\*(Aqi\*(Aq, +\*(Aqu\*(Aq, +\*(Aqx\*(Aq, +\*(Aqt\*(Aq +and +\*(Aqd\*(Aq) ), strings (type\-strings +\*(Aqs\*(Aq, +\*(Aqay\*(Aq, +\*(Aqo\*(Aq +and +\*(Aqg\*(Aq) and arrays of string (type\-strings +\*(Aqas\*(Aq, +\*(Aqao\*(Aq +and +\*(Aqaay\*(Aq) are mapped to the natural types, e\&.g\&. #gboolean, #gdouble, #gint, +gchar*, +gchar** +and so on\&. Everything else is mapped to the #GVariant type\&. +.PP +This automatic mapping can be turned off by using the annotation +org\&.gtk\&.GDBus\&.C\&.ForceGVariant +\- if used then a #GVariant is always exchanged instead of the corresponding native C type\&. This annotation may be convenient to use when using bytestrings (type\-string +\*(Aqay\*(Aq) for data that could have embedded NUL bytes\&. +.SH "STABILITY GUARANTEES" +.PP +The generated C functions are guaranteed to not change their ABI that is, if a method, signal or property does not change its signature in the introspection XML, the generated C functions will not change its C ABI either\&. The ABI of the generated instance and class structures will be preserved as well\&. +.PP +The ABI of the generated #GType +s will be preserved only if the +org\&.gtk\&.GDBus\&.Since +annotation is used judiciously \(em this is because the VTable for the #GInterface relies on functions pointers for signal handlers\&. Specifically, if a D\-Bus method, property or signal or is added to a D\-Bus interface, then ABI of the generated #GInterface type is preserved if, and only if, each added method, property signal is annotated with they +org\&.gtk\&.GDBus\&.Since +annotation using a greater version number than previous versions\&. +.PP +The generated C code currently happens to be annotated with +\m[blue]\fBgtk\-doc\fR\m[]\&\s-2\u[5]\d\s+2 +/ +\m[blue]\fBGObject Introspection\fR\m[]\&\s-2\u[9]\d\s+2 +comments / annotations\&. The layout and contents might change in the future so no guarantees about e\&.g\&. +SECTION +usage etc\&. is given\&. +.PP +While the generated Docbook for D\-Bus interfaces isn\*(Aqt expected to change, no guarantees are given at this point\&. +.PP +It is important to note that the generated code should not be checked into revision control systems, nor it should be included in distributed source archives\&. +.SH "BUGS" +.PP +Please send bug reports to either the distribution bug tracker or the upstream bug tracker at +\m[blue]\fBhttps://bugzilla\&.gnome\&.org/enter_bug\&.cgi?product=glib\fR\m[]\&. +.SH "SEE ALSO" +.PP +\fBgdbus\fR(1) +.SH "NOTES" +.IP " 1." 4 +D-Bus Introspection XML +.RS 4 +\%http://dbus.freedesktop.org/doc/dbus-specification.html#introspection-format +.RE +.IP " 2." 4 +RefEntry +.RS 4 +\%http://www.docbook.org/tdg/en/html/refentry.html +.RE +.IP " 3." 4 +sortas attribute +.RS 4 +\%http://www.docbook.org/tdg/en/html/primary.html +.RE +.IP " 4." 4 +CamelCase +.RS 4 +\%http://en.wikipedia.org/wiki/CamelCase +.RE +.IP " 5." 4 +gtk-doc +.RS 4 +\%http://www.gtk.org/gtk-doc/ +.RE +.IP " 6." 4 +parameter +.RS 4 +\%http://www.docbook.org/tdg/en/html/parameter.html +.RE +.IP " 7." 4 +constant +.RS 4 +\%http://www.docbook.org/tdg/en/html/constant.html +.RE +.IP " 8." 4 +org.freedesktop.DBus.Properties.Set +.RS 4 +\%http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-properties +.RE +.IP " 9." 4 +GObject Introspection +.RS 4 +\%https://wiki.gnome.org/Projects/GObjectIntrospection +.RE diff --git a/docs/reference/gio/gdbus-object-manager-example/.gitignore b/docs/reference/gio/gdbus-object-manager-example/.gitignore deleted file mode 100644 index cc8a11d..0000000 --- a/docs/reference/gio/gdbus-object-manager-example/.gitignore +++ /dev/null @@ -1 +0,0 @@ -gdbus-object-manager-example-overrides.txt diff --git a/docs/reference/gio/gdbus-object-manager-example/Makefile.am b/docs/reference/gio/gdbus-object-manager-example/Makefile.am deleted file mode 100644 index 50b0f19..0000000 --- a/docs/reference/gio/gdbus-object-manager-example/Makefile.am +++ /dev/null @@ -1,67 +0,0 @@ -NULL = - -# The name of the module. -DOC_MODULE=gdbus-object-manager-example - -# The top-level SGML file. -DOC_MAIN_SGML_FILE=gdbus-object-manager-example-docs.xml - -# Extra options to supply to gtkdoc-scan -SCAN_OPTIONS=--deprecated-guards="G_DISABLE_DEPRECATED" - -# The directory containing the source code. Relative to $(srcdir) -DOC_SOURCE_DIR=$(top_builddir)/gio/tests/gdbus-object-manager-example - -HFILE_GLOB=$(top_builddir)/gio/tests/gdbus-object-manager-example/*.h -CFILE_GLOB=$(top_builddir)/gio/tests/gdbus-object-manager-example/*.c - -# Headers to ignore -IGNORE_HFILES = \ - $(NULL) - -# CFLAGS and LDFLAGS for compiling scan program. Only needed -# if $(DOC_MODULE).types is non-empty. -AM_CPPFLAGS = \ - $(gio_INCLUDES) \ - $(GLIB_DEBUG_FLAGS) - -GTKDOC_LIBS = \ - $(top_builddir)/glib/libglib-2.0.la \ - $(top_builddir)/gobject/libgobject-2.0.la \ - $(top_builddir)/gmodule/libgmodule-2.0.la \ - $(top_builddir)/gio/libgio-2.0.la \ - $(top_builddir)/gio/tests/gdbus-object-manager-example/libgdbus-example-objectmanager.la \ - $(NULL) - -# Extra options to supply to gtkdoc-mkdb -MKDB_OPTIONS = --output-format=xml --sgml-mode --name-space=g \ - $(NULL) - -# Images to copy into HTML directory -HTML_IMAGES = \ - $(NULL) - -content_files = \ - $(NULL) - -expand_content_files = \ - $(NULL) - -extra_files = \ - $(NULL) - -include $(top_srcdir)/gtk-doc.make - -EXTRA_DIST += \ - $(NULL) - -MAINTAINERCLEANFILES = $(BUILT_SOURCES) - -dist-hook-local: all-local - -gdbus-object-manager-example-docs-clean: clean - cd $(srcdir) && rm -rf xml html - -# Nuke installed docs (don't know how to avoid installing them) -install-data-hook : - rm -rf $(DESTDIR)$(datadir)/gtk-doc/html/gdbus-object-manager-example diff --git a/docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example-docs.xml b/docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example-docs.xml deleted file mode 100644 index 7b0d1ca..0000000 --- a/docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example-docs.xml +++ /dev/null @@ -1,17 +0,0 @@ - - -]> - - - foo - - bar - - - - - - - diff --git a/docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example-sections.txt b/docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example-sections.txt deleted file mode 100644 index 1e3b8b8..0000000 --- a/docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example-sections.txt +++ /dev/null @@ -1,161 +0,0 @@ -
-ExampleAnimal -ExampleAnimal -ExampleAnimal -ExampleAnimalIface -example_animal_interface_info -example_animal_override_properties -example_animal_call_poke -example_animal_call_poke_finish -example_animal_call_poke_sync -example_animal_complete_poke -example_animal_emit_jumped -example_animal_get_mood -example_animal_get_foo -example_animal_get_bar -example_animal_dup_mood -example_animal_dup_foo -example_animal_dup_bar -example_animal_set_mood -example_animal_set_foo -example_animal_set_bar -ExampleAnimalProxy -ExampleAnimalProxyClass -example_animal_proxy_new -example_animal_proxy_new_finish -example_animal_proxy_new_sync -example_animal_proxy_new_for_bus -example_animal_proxy_new_for_bus_finish -example_animal_proxy_new_for_bus_sync -ExampleAnimalSkeleton -ExampleAnimalSkeletonClass -example_animal_skeleton_new - -example_animal_get_type -example_animal_proxy_get_type -example_animal_skeleton_get_type -ExampleAnimalSkeletonPrivate -ExampleAnimalProxyPrivate -EXAMPLE_TYPE_ANIMAL -EXAMPLE_TYPE_ANIMAL_PROXY -EXAMPLE_TYPE_ANIMAL_SKELETON -EXAMPLE_ANIMAL -EXAMPLE_ANIMAL_GET_IFACE -EXAMPLE_ANIMAL_PROXY -EXAMPLE_ANIMAL_PROXY_CLASS -EXAMPLE_ANIMAL_PROXY_GET_CLASS -EXAMPLE_ANIMAL_SKELETON -EXAMPLE_ANIMAL_SKELETON_CLASS -EXAMPLE_ANIMAL_SKELETON_GET_CLASS -EXAMPLE_IS_ANIMAL -EXAMPLE_IS_ANIMAL_PROXY -EXAMPLE_IS_ANIMAL_PROXY_CLASS -EXAMPLE_IS_ANIMAL_SKELETON -EXAMPLE_IS_ANIMAL_SKELETON_CLASS -
- -
-ExampleCat -ExampleCat -ExampleCat -ExampleCatIface -example_cat_interface_info -example_cat_override_properties -ExampleCatProxy -ExampleCatProxyClass -example_cat_proxy_new -example_cat_proxy_new_finish -example_cat_proxy_new_sync -example_cat_proxy_new_for_bus -example_cat_proxy_new_for_bus_finish -example_cat_proxy_new_for_bus_sync -ExampleCatSkeleton -ExampleCatSkeletonClass -example_cat_skeleton_new - -example_cat_get_type -example_cat_proxy_get_type -example_cat_skeleton_get_type -ExampleCatProxyPrivate -ExampleCatSkeletonPrivate -EXAMPLE_TYPE_CAT -EXAMPLE_TYPE_CAT_PROXY -EXAMPLE_TYPE_CAT_SKELETON -EXAMPLE_CAT -EXAMPLE_CAT_GET_IFACE -EXAMPLE_CAT_PROXY -EXAMPLE_CAT_PROXY_CLASS -EXAMPLE_CAT_PROXY_GET_CLASS -EXAMPLE_CAT_SKELETON -EXAMPLE_CAT_SKELETON_CLASS -EXAMPLE_CAT_SKELETON_GET_CLASS -EXAMPLE_IS_CAT -EXAMPLE_IS_CAT_PROXY -EXAMPLE_IS_CAT_PROXY_CLASS -EXAMPLE_IS_CAT_SKELETON -EXAMPLE_IS_CAT_SKELETON_CLASS -
- -
-ExampleObject -ExampleObject -ExampleObject -ExampleObjectIface -example_object_get_animal -example_object_get_cat -example_object_peek_animal -example_object_peek_cat -ExampleObjectProxy -ExampleObjectProxyClass -example_object_proxy_new -ExampleObjectSkeleton -ExampleObjectSkeletonClass -example_object_skeleton_new -example_object_skeleton_set_animal -example_object_skeleton_set_cat - -example_object_get_type -example_object_proxy_get_type -example_object_skeleton_get_type -ExampleObjectProxyPrivate -ExampleObjectSkeletonPrivate -EXAMPLE_IS_OBJECT -EXAMPLE_IS_OBJECT_PROXY -EXAMPLE_IS_OBJECT_PROXY_CLASS -EXAMPLE_IS_OBJECT_SKELETON -EXAMPLE_IS_OBJECT_SKELETON_CLASS -EXAMPLE_OBJECT -EXAMPLE_OBJECT_GET_IFACE -EXAMPLE_OBJECT_PROXY -EXAMPLE_OBJECT_PROXY_CLASS -EXAMPLE_OBJECT_PROXY_GET_CLASS -EXAMPLE_OBJECT_SKELETON -EXAMPLE_OBJECT_SKELETON_CLASS -EXAMPLE_OBJECT_SKELETON_GET_CLASS -EXAMPLE_TYPE_OBJECT -EXAMPLE_TYPE_OBJECT_PROXY -EXAMPLE_TYPE_OBJECT_SKELETON -
- -
-ExampleObjectManagerClient -ExampleObjectManagerClient -ExampleObjectManagerClient -ExampleObjectManagerClientClass -example_object_manager_client_get_proxy_type -example_object_manager_client_new -example_object_manager_client_new_finish -example_object_manager_client_new_sync -example_object_manager_client_new_for_bus -example_object_manager_client_new_for_bus_finish -example_object_manager_client_new_for_bus_sync - -example_object_manager_client_get_type -EXAMPLE_IS_OBJECT_MANAGER_CLIENT -EXAMPLE_IS_OBJECT_MANAGER_CLIENT_CLASS -EXAMPLE_OBJECT_MANAGER_CLIENT -EXAMPLE_OBJECT_MANAGER_CLIENT_CLASS -EXAMPLE_OBJECT_MANAGER_CLIENT_GET_CLASS -EXAMPLE_TYPE_OBJECT_MANAGER_CLIENT -ExampleObjectManagerClientPrivate -
diff --git a/docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example.types b/docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example.types deleted file mode 100644 index af1dfee..0000000 --- a/docs/reference/gio/gdbus-object-manager-example/gdbus-object-manager-example.types +++ /dev/null @@ -1,10 +0,0 @@ -example_object_get_type -example_object_proxy_get_type -example_object_skeleton_get_type -example_animal_get_type -example_animal_proxy_get_type -example_animal_skeleton_get_type -example_cat_get_type -example_cat_proxy_get_type -example_cat_skeleton_get_type -example_object_manager_client_get_type diff --git a/docs/reference/gio/gdbus.1 b/docs/reference/gio/gdbus.1 new file mode 100644 index 0000000..6019c63 --- /dev/null +++ b/docs/reference/gio/gdbus.1 @@ -0,0 +1,324 @@ +'\" t +.\" Title: gdbus +.\" Author: David Zeuthen +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 03/22/2016 +.\" Manual: User Commands +.\" Source: GIO +.\" Language: English +.\" +.TH "GDBUS" "1" "" "GIO" "User Commands" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +gdbus \- Tool for working with D\-Bus objects +.SH "SYNOPSIS" +.HP \w'\fBgdbus\fR\ 'u +\fBgdbus\fR introspect [\-\-system | \-\-session | \-\-address\ \fIaddress\fR] \-\-dest\ \fIbus_name\fR \-\-object\-path\ \fI/path/to/object\fR [\-\-xml] [\-\-recurse] [\-\-only\-properties] +.HP \w'\fBgdbus\fR\ 'u +\fBgdbus\fR monitor [\-\-system | \-\-session | \-\-address\ \fIaddress\fR] \-\-dest\ \fIbus_name\fR [\-\-object\-path\ \fI/path/to/object\fR] +.HP \w'\fBgdbus\fR\ 'u +\fBgdbus\fR call [\-\-system | \-\-session | \-\-address\ \fIaddress\fR] \-\-dest\ \fIbus_name\fR \-\-object\-path\ \fI/path/to/object\fR \-\-method\ \fIorg\&.project\&.InterfaceName\&.MethodName\fR [\-\-timeout\ \fIseconds\fR] ARG1 ARG2... +.HP \w'\fBgdbus\fR\ 'u +\fBgdbus\fR emit [\-\-system | \-\-session | \-\-address\ \fIaddress\fR] \-\-object\-path\ \fI/path/to/object\fR \-\-signal\ \fIorg\&.project\&.InterfaceName\&.SignalName\fR [\-\-dest\ \fIunique_bus_name\fR] ARG1 ARG2... +.HP \w'\fBgdbus\fR\ 'u +\fBgdbus\fR help +.SH "DESCRIPTION" +.PP +\fBgdbus\fR +is a simple tool for working with D\-Bus objects\&. +.SH "COMMANDS" +.PP +\fBintrospect\fR +.RS 4 +Prints out interfaces and property values for a remote object\&. For this to work, the owner of the object needs to implement the +org\&.freedesktop\&.DBus\&.Introspectable +interface\&. If the +\fB\-\-xml\fR +option is used, the returned introspection XML is printed, otherwise a parsed pretty representation is printed\&. The +\fB\-\-recurse\fR +option can be used to introspect children (and their children and so on) and the +\fB\-\-only\-properties\fR +option can be used to only print the interfaces with properties\&. +.RE +.PP +\fBmonitor\fR +.RS 4 +Monitors one or all objects owned by the owner of +\fIbus_name\fR\&. +.RE +.PP +\fBcall\fR +.RS 4 +Invokes a method on a remote object\&. Each argument to pass to the method must be specified as a serialized +\fBGVariant\fR +except that strings do not need explicit quotes\&. The return values are printed out as serialized +\fBGVariant\fR +values\&. +.RE +.PP +\fBemit\fR +.RS 4 +Emits a signal\&. Each argument to include in the signal must be specified as a serialized +\fBGVariant\fR +except that strings do not need explicit quotes\&. +.RE +.PP +\fBhelp\fR +.RS 4 +Prints help and exit\&. +.RE +.SH "BASH COMPLETION" +.PP +\fBgdbus\fR +ships with a bash completion script to complete commands, destinations, bus names, object paths and interface/method names\&. +.SH "EXAMPLES" + + This shows how to introspect an object \- note that the value of each + property is displayed: +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ gdbus introspect \-\-system \e + \-\-dest org\&.freedesktop\&.NetworkManager \e + \-\-object\-path /org/freedesktop/NetworkManager/Devices/0 +node /org/freedesktop/NetworkManager/Devices/0 { + interface org\&.freedesktop\&.DBus\&.Introspectable { + methods: + Introspect(out s data); + }; + interface org\&.freedesktop\&.DBus\&.Properties { + methods: + Get(in s interface, + in s propname, + out v value); + Set(in s interface, + in s propname, + in v value); + GetAll(in s interface, + out a{sv} props); + }; + interface org\&.freedesktop\&.NetworkManager\&.Device\&.Wired { + signals: + PropertiesChanged(a{sv} arg_0); + properties: + readonly b Carrier = false; + readonly u Speed = 0; + readonly s HwAddress = \*(Aq00:1D:72:88:BE:97\*(Aq; + }; + interface org\&.freedesktop\&.NetworkManager\&.Device { + methods: + Disconnect(); + signals: + StateChanged(u arg_0, + u arg_1, + u arg_2); + properties: + readonly u DeviceType = 1; + readonly b Managed = true; + readwrite o Ip6Config = \*(Aq/\*(Aq; + readwrite o Dhcp4Config = \*(Aq/\*(Aq; + readwrite o Ip4Config = \*(Aq/\*(Aq; + readonly u State = 2; + readwrite u Ip4Address = 0; + readonly u Capabilities = 3; + readonly s Driver = \*(Aqe1000e\*(Aq; + readwrite s Interface = \*(Aqeth0\*(Aq; + readonly s Udi = \*(Aq/sys/devices/pci0000:00/0000:00:19\&.0/net/eth0\*(Aq; + }; +}; +.fi +.if n \{\ +.RE +.\} +.PP +The +\fB\-\-recurse\fR +and +\fB\-\-only\-properties\fR +options can be useful when wanting to inspect all objects owned by a particular process: +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ gdbus introspect \-\-system \-\-dest org\&.freedesktop\&.UPower \-\-object\-path / \-\-recurse \-\-only\-properties +node / { + node /org { + node /org/freedesktop { + node /org/freedesktop/UPower { + interface org\&.freedesktop\&.UPower { + properties: + readonly b IsDocked = true; + readonly b LidForceSleep = false; + readonly b LidIsPresent = false; + readonly b LidIsClosed = false; + readonly b OnLowBattery = false; + readonly b OnBattery = false; + readonly b CanHibernate = true; + readonly b CanSuspend = true; + readonly s DaemonVersion = \*(Aq0\&.9\&.10\*(Aq; + }; + node /org/freedesktop/UPower/Policy { + }; + node /org/freedesktop/UPower/Wakeups { + interface org\&.freedesktop\&.UPower\&.Wakeups { + properties: + readonly b HasCapability = true; + }; + }; + }; + }; + }; +}; +.fi +.if n \{\ +.RE +.\} +.PP +In a similar fashion, the +\fBintrospect\fR +command can be used to learn details about the +Notify +method: +.sp +.if n \{\ +.RS 4 +.\} +.nf +[\&.\&.\&.] + interface org\&.freedesktop\&.Notifications { + methods: + GetServerInformation(out s return_name, + out s return_vendor, + out s return_version, + out s return_spec_version); + GetCapabilities(out as return_caps); + CloseNotification(in u id); + Notify(in s app_name, + in u id, + in s icon, + in s summary, + in s body, + in as actions, + in a{sv} hints, + in i timeout, + out u return_id); + }; +[\&.\&.\&.] +.fi +.if n \{\ +.RE +.\} +.PP +With this information, it\*(Aqs easy to use the +\fBcall\fR +command to display a notification +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ gdbus call \-\-session \e + \-\-dest org\&.freedesktop\&.Notifications \e + \-\-object\-path /org/freedesktop/Notifications \e + \-\-method org\&.freedesktop\&.Notifications\&.Notify \e + my_app_name \e + 42 \e + gtk\-dialog\-info \e + "The Summary" \e + "Here\*(Aqs the body of the notification" \e + [] \e + {} \e + 5000 +(uint32 12,) +.fi +.if n \{\ +.RE +.\} +.PP +Monitoring all objects on a service: +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ gdbus monitor \-\-system \-\-dest org\&.freedesktop\&.ConsoleKit +Monitoring signals from all objects owned by org\&.freedesktop\&.ConsoleKit +The name org\&.freedesktop\&.ConsoleKit is owned by :1\&.15 +/org/freedesktop/ConsoleKit/Session2: org\&.freedesktop\&.ConsoleKit\&.Session\&.ActiveChanged (false,) +/org/freedesktop/ConsoleKit/Seat1: org\&.freedesktop\&.ConsoleKit\&.Seat\&.ActiveSessionChanged (\*(Aq\*(Aq,) +/org/freedesktop/ConsoleKit/Session2: org\&.freedesktop\&.ConsoleKit\&.Session\&.ActiveChanged (true,) +/org/freedesktop/ConsoleKit/Seat1: org\&.freedesktop\&.ConsoleKit\&.Seat\&.ActiveSessionChanged (\*(Aq/org/freedesktop/ConsoleKit/Session2\*(Aq,) +.fi +.if n \{\ +.RE +.\} +.PP +Monitoring a single object on a service: +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ gdbus monitor \-\-system \-\-dest org\&.freedesktop\&.NetworkManager \-\-object\-path /org/freedesktop/NetworkManager/AccessPoint/4141 +Monitoring signals on object /org/freedesktop/NetworkManager/AccessPoint/4141 owned by org\&.freedesktop\&.NetworkManager +The name org\&.freedesktop\&.NetworkManager is owned by :1\&.5 +/org/freedesktop/NetworkManager/AccessPoint/4141: org\&.freedesktop\&.NetworkManager\&.AccessPoint\&.PropertiesChanged ({\*(AqStrength\*(Aq: },) +/org/freedesktop/NetworkManager/AccessPoint/4141: org\&.freedesktop\&.NetworkManager\&.AccessPoint\&.PropertiesChanged ({\*(AqStrength\*(Aq: },) +/org/freedesktop/NetworkManager/AccessPoint/4141: org\&.freedesktop\&.NetworkManager\&.AccessPoint\&.PropertiesChanged ({\*(AqStrength\*(Aq: },) +/org/freedesktop/NetworkManager/AccessPoint/4141: org\&.freedesktop\&.NetworkManager\&.AccessPoint\&.PropertiesChanged ({\*(AqStrength\*(Aq: },) +.fi +.if n \{\ +.RE +.\} +.PP +Emitting a signal: +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ gdbus emit \-\-session \-\-object\-path /foo \-\-signal org\&.bar\&.Foo "[\*(Aqfoo\*(Aq, \*(Aqbar\*(Aq, \*(Aqbaz\*(Aq]" +.fi +.if n \{\ +.RE +.\} +.PP +Emitting a signal to a specific process: +.sp +.if n \{\ +.RS 4 +.\} +.nf +$ gdbus emit \-\-session \-\-object\-path /bar \-\-signal org\&.bar\&.Bar someString \-\-dest :1\&.42 +.fi +.if n \{\ +.RE +.\} +.SH "BUGS" +.PP +Please send bug reports to either the distribution bug tracker or the upstream bug tracker at +\m[blue]\fB\%https://bugzilla.gnome.org/enter_bug.cgi?product=glib\fR\m[]\&. +.SH "SEE ALSO" +.PP +\fBdbus-send\fR(1) diff --git a/docs/reference/gio/gio-docs.xml b/docs/reference/gio/gio-docs.xml index 1c774e2..a2e62e0 100644 --- a/docs/reference/gio/gio-docs.xml +++ b/docs/reference/gio/gio-docs.xml @@ -118,6 +118,7 @@ Low-level network support + @@ -151,6 +152,9 @@ + + + @@ -213,6 +217,10 @@ + + Win32 registry support + + Application support @@ -332,6 +340,14 @@ Index of new symbols in 2.44 + + Index of new symbols in 2.46 + + + + Index of new symbols in 2.48 + + diff --git a/docs/reference/gio/gio-overrides.txt b/docs/reference/gio/gio-overrides.txt new file mode 100644 index 0000000..e69de29 diff --git a/docs/reference/gio/gio-querymodules.1 b/docs/reference/gio/gio-querymodules.1 new file mode 100644 index 0000000..7ed77b0 --- /dev/null +++ b/docs/reference/gio/gio-querymodules.1 @@ -0,0 +1,44 @@ +'\" t +.\" Title: gio-querymodules +.\" Author: Alexander Larsson +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 03/22/2016 +.\" Manual: User Commands +.\" Source: GIO +.\" Language: English +.\" +.TH "GIO\-QUERYMODULES" "1" "" "GIO" "User Commands" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +gio-querymodules \- GIO module cache creation +.SH "SYNOPSIS" +.HP \w'\fBgio\-querymodules\fR\ 'u +\fBgio\-querymodules\fR {DIRECTORY...} +.SH "DESCRIPTION" +.PP +\fBgio\-querymodules\fR +creates a +giomodule\&.cache +file in the listed directories\&. This file lists the implemented extension points for each module that has been found\&. It is used by GIO at runtime to avoid opening all modules just to find out which extension points they are implementing\&. +.PP +GIO modules are usually installed in the +gio/modules +subdirectory of libdir\&. diff --git a/docs/reference/gio/gio-sections.txt b/docs/reference/gio/gio-sections.txt index 39444f7..6010a0f 100644 --- a/docs/reference/gio/gio-sections.txt +++ b/docs/reference/gio/gio-sections.txt @@ -256,6 +256,7 @@ G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL +G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE G_FILE_ATTRIBUTE_STANDARD_NAME G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME @@ -1826,6 +1827,25 @@ g_unix_socket_address_get_type
+gnativesocketaddress +GNativeSocketAddress +GNativeSocketAddress +g_native_socket_address_new + +GNativeSocketAddressClass +GNativeSocketAddressPrivate +G_IS_NATIVE_SOCKET_ADDRESS +G_IS_NATIVE_SOCKET_ADDRESS_CLASS +G_TYPE_NATIVE_SOCKET_ADDRESS +G_NATIVE_SOCKET_ADDRESS +G_NATIVE_SOCKET_ADDRESS_CLASS +G_NATIVE_SOCKET_ADDRESS_GET_CLASS +G_TYPE_NATIVE_SOCKET_ADDRESS_TYPE + +g_native_socket_address_get_type +
+ +
gresolver GResolver GResolver @@ -1895,6 +1915,7 @@ GSocketConnectable GSocketConnectableIface g_socket_connectable_enumerate g_socket_connectable_proxy_enumerate +g_socket_connectable_to_string GSocketAddressEnumerator g_socket_address_enumerator_next @@ -1976,6 +1997,27 @@ g_network_service_get_type
+gdatagrambased +GDatagramBased +GDatagramBased +GDatagramBasedInterface +GDatagramBasedSourceFunc +g_datagram_based_receive_messages +g_datagram_based_send_messages +g_datagram_based_create_source +g_datagram_based_condition_check +g_datagram_based_condition_wait + +G_DATAGRAM_BASED +G_DATAGRAM_BASED_GET_IFACE +G_IS_DATAGRAM_BASED +G_TYPE_DATAGRAM_BASED +G_TYPE_IS_DATAGRAM_BASED + +g_datagram_based_get_type +
+ +
gsocket GSocket GSocket @@ -1984,6 +2026,7 @@ GSocketType GSocketProtocol GSocketMsgFlags GInputVector +GInputMessage GOutputVector GOutputMessage g_socket_new @@ -1996,6 +2039,7 @@ g_socket_check_connect_result g_socket_receive g_socket_receive_from g_socket_receive_message +g_socket_receive_messages g_socket_receive_with_blocking g_socket_send g_socket_send_to @@ -2225,6 +2269,7 @@ g_socket_control_message_get_type gsocketlistener GSocketListener GSocketListener +GSocketListenerEvent g_socket_listener_new g_socket_listener_add_socket g_socket_listener_add_address @@ -2246,6 +2291,7 @@ G_SOCKET_LISTENER G_SOCKET_LISTENER_CLASS G_SOCKET_LISTENER_GET_CLASS G_TYPE_SOCKET_LISTENER +G_TYPE_SOCKET_LISTENER_EVENT GSocketListenerPrivate g_socket_listener_get_type @@ -2507,6 +2553,7 @@ g_settings_schema_get_key g_settings_schema_key_ref g_settings_schema_key_unref g_settings_schema_list_children +g_settings_schema_list_keys g_settings_schema_key_get_value_type @@ -2854,6 +2901,7 @@ GDBusInterfaceGetPropertyFunc GDBusInterfaceSetPropertyFunc g_dbus_connection_register_object g_dbus_connection_unregister_object +g_dbus_connection_register_object_with_closures GDBusSubtreeVTable GDBusSubtreeEnumerateFunc GDBusSubtreeIntrospectFunc @@ -3530,10 +3578,13 @@ GTlsBackend GTlsBackendInterface g_tls_backend_get_default g_tls_backend_supports_tls +g_tls_backend_supports_dtls g_tls_backend_get_default_database g_tls_backend_get_certificate_type g_tls_backend_get_client_connection_type g_tls_backend_get_server_connection_type +g_tls_backend_get_dtls_client_connection_type +g_tls_backend_get_dtls_server_connection_type g_tls_backend_get_file_database_type G_IS_TLS_BACKEND @@ -3621,6 +3672,7 @@ g_tls_client_connection_get_validation_flags g_tls_client_connection_set_use_ssl3 g_tls_client_connection_get_use_ssl3 g_tls_client_connection_get_accepted_cas +g_tls_client_connection_copy_session_state G_IS_TLS_CLIENT_CONNECTION G_TLS_CLIENT_CONNECTION @@ -3634,6 +3686,7 @@ g_tls_client_connection_get_type gtlsdatabase GTlsDatabase GTlsDatabase +GTlsDatabaseClass GTlsDatabaseVerifyFlags G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER G_TLS_DATABASE_PURPOSE_AUTHENTICATE_CLIENT @@ -3733,6 +3786,7 @@ GTlsPasswordPrivate GTlsInteraction GTlsInteractionResult GTlsCertificateRequestFlags +GTlsInteractionClass g_tls_interaction_invoke_ask_password g_tls_interaction_invoke_request_certificate g_tls_interaction_ask_password @@ -3742,7 +3796,6 @@ g_tls_interaction_request_certificate g_tls_interaction_request_certificate_async g_tls_interaction_request_certificate_finish -GTlsInteractionClass G_IS_TLS_INTERACTION G_IS_TLS_INTERACTION_CLASS G_TYPE_TLS_INTERACTION @@ -3758,6 +3811,84 @@ g_tls_interaction_result_get_type
+gdtlsconnection +GDtlsConnection +GDtlsConnection +g_dtls_connection_set_certificate +g_dtls_connection_get_certificate +g_dtls_connection_get_peer_certificate +g_dtls_connection_get_peer_certificate_errors +g_dtls_connection_set_require_close_notify +g_dtls_connection_get_require_close_notify +g_dtls_connection_set_rehandshake_mode +g_dtls_connection_get_rehandshake_mode +g_dtls_connection_get_database +g_dtls_connection_set_database +g_dtls_connection_get_interaction +g_dtls_connection_set_interaction + +g_dtls_connection_handshake +g_dtls_connection_handshake_async +g_dtls_connection_handshake_finish + +g_dtls_connection_shutdown +g_dtls_connection_shutdown_async +g_dtls_connection_shutdown_finish +g_dtls_connection_close +g_dtls_connection_close_async +g_dtls_connection_close_finish + +g_dtls_connection_emit_accept_certificate + +GDtlsConnectionClass +GDtlsConnectionPrivate +G_IS_DTLS_CONNECTION +G_IS_DTLS_CONNECTION_CLASS +G_DTLS_CONNECTION +G_DTLS_CONNECTION_CLASS +G_DTLS_CONNECTION_GET_CLASS +G_TYPE_DTLS_CONNECTION +G_DTLS_CONNECTION_GET_INTERFACE + +g_dtls_connection_get_type +
+ +
+gdtlsclientconnection +GDtlsClientConnection +GDtlsClientConnection +GDtlsClientConnectionInterface +g_dtls_client_connection_new +g_dtls_client_connection_set_server_identity +g_dtls_client_connection_get_server_identity +g_dtls_client_connection_set_validation_flags +g_dtls_client_connection_get_validation_flags +g_dtls_client_connection_get_accepted_cas + +G_IS_DTLS_CLIENT_CONNECTION +G_DTLS_CLIENT_CONNECTION +G_DTLS_CLIENT_CONNECTION_GET_INTERFACE +G_TYPE_DTLS_CLIENT_CONNECTION + +g_dtls_client_connection_get_type +
+ +
+gdtlsserverconnection +GDtlsServerConnection +GDtlsServerConnection +GDtlsServerConnectionInterface +g_dtls_server_connection_new + +G_IS_DTLS_SERVER_CONNECTION +G_DTLS_SERVER_CONNECTION +G_DTLS_SERVER_CONNECTION_GET_INTERFACE +G_TYPE_DTLS_SERVER_CONNECTION + +g_dtls_server_connection_get_type +
+ +
gdbusinterface GDBusInterface GDBusInterface @@ -3946,6 +4077,7 @@ GNetworkMonitorInterface G_NETWORK_MONITOR_EXTENSION_POINT_NAME g_network_monitor_get_default g_network_monitor_get_network_available +g_network_monitor_get_network_metered g_network_monitor_can_reach g_network_monitor_can_reach_async g_network_monitor_can_reach_finish @@ -4416,8 +4548,80 @@ g_list_store_append g_list_store_remove g_list_store_remove_all g_list_store_splice +g_list_store_sort G_TYPE_LIST_STORE g_list_store_get_type
+ +
+gwin32registrykey + + +GWin32RegistrySubkeyIter +g_win32_registry_subkey_iter_copy +g_win32_registry_subkey_iter_free +g_win32_registry_subkey_iter_assign + + +GWin32RegistryValueIter +g_win32_registry_value_iter_copy +g_win32_registry_value_iter_free +g_win32_registry_value_iter_assign + + +GWin32RegistryKey +g_win32_registry_key_new +g_win32_registry_key_new_w +g_win32_registry_key_get_child +g_win32_registry_key_get_child_w + + +g_win32_registry_subkey_iter_init +g_win32_registry_subkey_iter_clear +g_win32_registry_subkey_iter_n_subkeys +g_win32_registry_subkey_iter_next +g_win32_registry_subkey_iter_get_name +g_win32_registry_subkey_iter_get_name_w + + +g_win32_registry_value_iter_init +g_win32_registry_value_iter_clear +g_win32_registry_value_iter_n_values +g_win32_registry_value_iter_next +GWin32RegistryValueType +g_win32_registry_value_iter_get_value_type +g_win32_registry_value_iter_get_name +g_win32_registry_value_iter_get_name_w +g_win32_registry_value_iter_get_data +g_win32_registry_value_iter_get_data_w + + +g_win32_registry_key_get_value +g_win32_registry_key_get_value_w +g_win32_registry_key_get_path +g_win32_registry_key_get_path_w +GWin32RegistryKeyWatchCallbackFunc +GWin32RegistryKeyWatcherFlags +g_win32_registry_key_watch +g_win32_registry_key_has_changed +g_win32_registry_key_erase_change_indicator + + +GWin32RegistryKeyClass + + +GWin32RegistryKeyPrivate +g_win32_registry_key_get_type +g_win32_registry_subkey_iter_get_type +g_win32_registry_value_iter_get_type +G_TYPE_WIN32_REGISTRY_KEY +G_WIN32_REGISTRY_KEY +G_WIN32_REGISTRY_KEY_CLASS +G_IS_WIN32_REGISTRY_KEY +G_IS_WIN32_REGISTRY_KEY_CLASS +G_WIN32_REGISTRY_KEY_GET_CLASS +G_TYPE_WIN32_REGISTRY_SUBKEY_ITER +G_TYPE_WIN32_REGISTRY_VALUE_ITER +
diff --git a/docs/reference/gio/gio.types b/docs/reference/gio/gio.types index c9be9ed..fdb7a8d 100644 --- a/docs/reference/gio/gio.types +++ b/docs/reference/gio/gio.types @@ -45,6 +45,9 @@ g_dbus_signal_info_get_type g_desktop_app_info_get_type g_desktop_app_info_lookup_get_type g_drive_get_type +g_dtls_client_connection_get_type +g_dtls_connection_get_type +g_dtls_server_connection_get_type g_emblem_get_type g_emblemed_icon_get_type g_file_attribute_info_list_get_type diff --git a/docs/reference/gio/glib-compile-resources.1 b/docs/reference/gio/glib-compile-resources.1 new file mode 100644 index 0000000..5b01f19 --- /dev/null +++ b/docs/reference/gio/glib-compile-resources.1 @@ -0,0 +1,167 @@ +'\" t +.\" Title: glib-compile-resources +.\" Author: Alexander Larsson +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 03/22/2016 +.\" Manual: User Commands +.\" Source: GIO +.\" Language: English +.\" +.TH "GLIB\-COMPILE\-RESOU" "1" "" "GIO" "User Commands" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +glib-compile-resources \- GLib resource compiler +.SH "SYNOPSIS" +.HP \w'\fBglib\-compile\-resources\fR\ 'u +\fBglib\-compile\-resources\fR [OPTION...] {FILE} +.SH "DESCRIPTION" +.PP +\fBglib\-compile\-resources\fR +reads the resource description from +\fIFILE\fR +and the files that it references and creates a binary resource bundle that is suitable for use with the +\fBGResource\fR +API\&. The resulting bundle is then written out as\-is, or as C source for linking into an application\&. +.PP +The XML resource files normally have the filename extension +\&.gresource\&.xml\&. For a detailed description of the XML file format, see the +\fBGResource\fR +documentation\&. +.SH "OPTIONS" +.PP +\fB\-h\fR, \fB\-\-help\fR +.RS 4 +Print help and exit +.RE +.PP +\fB\-\-target=\fR\fB\fITARGET\fR\fR +.RS 4 +Store the compiled resources in the file +\fITARGET\fR\&. If not specified a filename based on the +\fIFILE\fR +basename is used\&. +.RE +.PP +\fB\-\-sourcedir=\fR\fB\fIDIRECTORY\fR\fR +.RS 4 +The files referenced in +\fIFILE\fR +are loaded from this directory\&. If not specified, the current directory is used\&. +.RE +.PP +\fB\-\-generate\fR +.RS 4 +Write the output file in the format selected for by its filename extension: +.PP +\&.c +.RS 4 +C source +.RE +.PP +\&.h +.RS 4 +C header +.RE +.PP +\&.gresource +.RS 4 +resource bundle +.RE +.sp +.RE +.PP +\fB\-\-generate\-source\fR +.RS 4 +Instead of a writing the resource bundle in binary form create a C source file that contains the resource bundle\&. This can then be compiled into an application for easy access\&. +.RE +.PP +\fB\-\-generate\-header\fR +.RS 4 +Generate a header file for use with C code generated by +\fB\-\-generate\-source\fR\&. +.RE +.PP +\fB\-\-generate\-dependencies\fR +.RS 4 +Prints the list of files that the resource bundle references to standard output\&. This can be used to track dependencies in the build system\&. For example, the following make rule would mark +\fItest\&.gresource\fR +as depending on all the files that +\fItest\&.gresource\&.xml\fR +includes, so that is is automatically rebuilt if any of them change: +.sp +.if n \{\ +.RS 4 +.\} +.nf +test\&.gresource: test\&.gresource\&.xml $(shell $(GLIB_COMPILE_RESOURCES) \-\-generate\-dependencies test\&.gresource\&.xml) +.fi +.if n \{\ +.RE +.\} +.sp +Note that this may or may not be portable to non\-GNU +\fBmake\fR\&. +.RE +.PP +\fB\-\-c\-name\fR +.RS 4 +Specify the prefix used for the C identifiers in the code generated by +\fB\-\-generate\-source\fR +and +\fB\-\-generate\-header\fR\&. +.RE +.PP +\fB\-\-manual\-register\fR +.RS 4 +By default code generated by +\fB\-\-generate\-source\fR +uses automatic initialization of the resource\&. This works on most systems by using the compiler support for constructors\&. However, some (uncommon) compilers may not support this, you can then specify +\fB\-\-manual\-register\fR, which will generate custom register and unregister functions that your code can manually call at initialization and uninitialization time\&. +.RE +.PP +\fB\-\-internal\fR +.RS 4 +By default code generated by +\fB\-\-generate\-source\fR +declares all initialization functions as +\fBextern\fR\&. So they are exported unless this is prevented by a link script or other means\&. Since libraries usually want to use the functions only internally it can be more useful to declare them as +G_GNUC_INTERNAL +which is what +\fB\-\-internal\fR +does\&. +.RE +.SH "ENVIRONMENT" +.PP +\fBXMLLINT\fR +.RS 4 +The full path to the xmllint executable\&. This is used to preprocess resources with the +xml\-stripblanks +preprocessing option\&. If this environment variable is not set, xmllint is searched in the +\fBPATH\fR\&. +.RE +.PP +\fBGDK_PIXBUF_PIXDATA\fR +.RS 4 +The full path to the gdk\-pixbuf\-pixdata executable\&. This is used to preprocess resources with the +to\-pixdata +preprocessing option\&. If this environment variable is not set, gdk\-pixbuf\-pixdata is searched in the +\fBPATH\fR\&. +.RE diff --git a/docs/reference/gio/glib-compile-schemas.1 b/docs/reference/gio/glib-compile-schemas.1 new file mode 100644 index 0000000..5db0a7e --- /dev/null +++ b/docs/reference/gio/glib-compile-schemas.1 @@ -0,0 +1,96 @@ +'\" t +.\" Title: glib-compile-schemas +.\" Author: Ryan Lortie +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 03/22/2016 +.\" Manual: User Commands +.\" Source: GIO +.\" Language: English +.\" +.TH "GLIB\-COMPILE\-SCHEM" "1" "" "GIO" "User Commands" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +glib-compile-schemas \- GSettings schema compiler +.SH "SYNOPSIS" +.HP \w'\fBglib\-compile\-schemas\fR\ 'u +\fBglib\-compile\-schemas\fR [OPTION...] {DIRECTORY} +.SH "DESCRIPTION" +.PP +\fBglib\-compile\-schemas\fR +compiles all the GSettings XML schema files in +\fIDIRECTORY\fR +into a binary file with the name +gschemas\&.compiled +that can be used by +\fBGSettings\fR\&. The XML schema files must have the filename extension +\&.gschema\&.xml\&. For a detailed description of the XML file format, see the +\fBGSettings\fR +documentation\&. +.PP +At runtime, GSettings looks for schemas in the +glib\-2\&.0/schemas +subdirectories of all directories specified in the +\fBXDG_DATA_DIRS\fR +environment variable\&. The usual location to install schema files is +/usr/share/glib\-2\&.0/schemas\&. +.PP +In addition to schema files, glib\-compile\-schemas reads \*(Aqvendor override\*(Aq files, which are key files that can override default values for keys in the schemas\&. The group names in the key files are the schema id, and the values are written in serialized GVariant form\&. Vendor override files must have the filename extension +\&.gschema\&.override\&. +.PP +By convention, vendor override files begin with +nn_ +where +nn +is a number from 00 to 99\&. Higher numbered files have higher priority (eg: if the same override is made in a file numbered 10 and then again in a file numbered 20, the override from 20 will take precedence)\&. +.SH "OPTIONS" +.PP +\fB\-h\fR, \fB\-\-help\fR +.RS 4 +Print help and exit +.RE +.PP +\fB\-\-targetdir=\fR\fB\fITARGET\fR\fR +.RS 4 +Store +gschemas\&.compiled +in the +\fITARGET\fR +directory instead of +\fIDIRECTORY\fR\&. +.RE +.PP +\fB\-\-strict\fR +.RS 4 +Abort on any errors in schemas\&. Without this option, faulty schema files are simply omitted from the resulting compiled schema\&. +.RE +.PP +\fB\-\-dry\-run\fR +.RS 4 +Don\*(Aqt write +gschemas\&.compiled\&. This option can be used to check +\&.gschema\&.xml +sources for errors\&. +.RE +.PP +\fB\-\-allow\-any\-name\fR +.RS 4 +Do not enforce restrictions on key names\&. Note that this option is purely to facility the transition from GConf, and will be removed at some time in the future\&. +.RE diff --git a/docs/reference/gio/glib-compile-schemas.xml b/docs/reference/gio/glib-compile-schemas.xml index 04ed05f..24b3bf5 100644 --- a/docs/reference/gio/glib-compile-schemas.xml +++ b/docs/reference/gio/glib-compile-schemas.xml @@ -82,6 +82,14 @@ Store gschemas.compiled in the TARGET + + +Abort on any errors in schemas. Without this option, faulty schema files are +simply omitted from the resulting compiled schema. + + + + Don't write gschemas.compiled. This option can be used diff --git a/docs/reference/gio/gresource.1 b/docs/reference/gio/gresource.1 new file mode 100644 index 0000000..b9a5733 --- /dev/null +++ b/docs/reference/gio/gresource.1 @@ -0,0 +1,95 @@ +'\" t +.\" Title: gresource +.\" Author: Matthias Clasen +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 03/22/2016 +.\" Manual: User Commands +.\" Source: GIO +.\" Language: English +.\" +.TH "GRESOURCE" "1" "" "GIO" "User Commands" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +gresource \- GResource tool +.SH "SYNOPSIS" +.HP \w'\fBgresource\fR\ 'u +\fBgresource\fR [\-\-section\ \fISECTION\fR] list \fIFILE\fR [\fIPATH\fR] +.HP \w'\fBgresource\fR\ 'u +\fBgresource\fR [\-\-section\ \fISECTION\fR] details \fIFILE\fR [\fIPATH\fR] +.HP \w'\fBgresource\fR\ 'u +\fBgresource\fR [\-\-section\ \fISECTION\fR] extract \fIFILE\fR \fIPATH\fR +.HP \w'\fBgresource\fR\ 'u +\fBgresource\fR sections \fIFILE\fR +.HP \w'\fBgresource\fR\ 'u +\fBgresource\fR help [\fICOMMAND\fR] +.SH "DESCRIPTION" +.PP +\fBgresource\fR +offers a simple commandline interface to +\fBGResource\fR\&. It lets you list and extract resources that have been compiled into a resource file or included in an elf file (a binary or a shared library)\&. +.PP +The file to operate on is specified by the +\fIFILE\fR +argument\&. +.PP +If an elf file includes multiple sections with resources, it is possible to select which one to operate on with the +\-\-section +option\&. Use the +sections +command to find available sections\&. +.SH "COMMANDS" +.PP +\fBlist\fR +.RS 4 +Lists resources\&. If +\fISECTION\fR +is given, only list resourcs in this section\&. If +\fIPATH\fR +is given, only list matching resources\&. +.RE +.PP +\fBdetails\fR +.RS 4 +Lists resources with details\&. If +\fISECTION\fR +is given, only list resources in this section\&. If +\fIPATH\fR +is given, only list matching resources\&. Details include the section, size and compression of each resource\&. +.RE +.PP +\fBextract\fR +.RS 4 +Extracts the resource named by +\fIPATH\fR +to stdout\&. Note that resources may contain binary data\&. +.RE +.PP +\fBsections\fR +.RS 4 +Lists sections containing resources\&. This is only interesting if +\fIFILE\fR +is an elf file\&. +.RE +.PP +\fBhelp\fR +.RS 4 +Prints help and exits\&. +.RE diff --git a/docs/reference/gio/gsettings.1 b/docs/reference/gio/gsettings.1 new file mode 100644 index 0000000..bde9cab --- /dev/null +++ b/docs/reference/gio/gsettings.1 @@ -0,0 +1,167 @@ +'\" t +.\" Title: gsettings +.\" Author: Ryan Lortie +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 03/22/2016 +.\" Manual: User Commands +.\" Source: GIO +.\" Language: English +.\" +.TH "GSETTINGS" "1" "" "GIO" "User Commands" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +gsettings \- GSettings configuration tool +.SH "SYNOPSIS" +.HP \w'\fBgsettings\fR\ 'u +\fBgsettings\fR get \fISCHEMA\fR\ [:\fIPATH\fR] \fIKEY\fR +.HP \w'\fBgsettings\fR\ 'u +\fBgsettings\fR monitor \fISCHEMA\fR\ [:\fIPATH\fR] [\fIKEY\fR] +.HP \w'\fBgsettings\fR\ 'u +\fBgsettings\fR writable \fISCHEMA\fR\ [:\fIPATH\fR] \fIKEY\fR +.HP \w'\fBgsettings\fR\ 'u +\fBgsettings\fR range \fISCHEMA\fR\ [:\fIPATH\fR] \fIKEY\fR +.HP \w'\fBgsettings\fR\ 'u +\fBgsettings\fR set \fISCHEMA\fR\ [:\fIPATH\fR] \fIKEY\fR \fIVALUE\fR +.HP \w'\fBgsettings\fR\ 'u +\fBgsettings\fR reset \fISCHEMA\fR\ [:\fIPATH\fR] \fIKEY\fR +.HP \w'\fBgsettings\fR\ 'u +\fBgsettings\fR reset\-recursively \fISCHEMA\fR\ [:\fIPATH\fR] +.HP \w'\fBgsettings\fR\ 'u +\fBgsettings\fR list\-schemas +.HP \w'\fBgsettings\fR\ 'u +\fBgsettings\fR list\-relocatable\-schemas +.HP \w'\fBgsettings\fR\ 'u +\fBgsettings\fR list\-keys \fISCHEMA\fR\ [:\fIPATH\fR] +.HP \w'\fBgsettings\fR\ 'u +\fBgsettings\fR list\-children \fISCHEMA\fR\ [:\fIPATH\fR] +.HP \w'\fBgsettings\fR\ 'u +\fBgsettings\fR list\-recursively [\fISCHEMA\fR\ [:\fIPATH\fR]] +.HP \w'\fBgsettings\fR\ 'u +\fBgsettings\fR help [\fICOMMAND\fR] +.SH "DESCRIPTION" +.PP +\fBgsettings\fR +offers a simple commandline interface to +\fBGSettings\fR\&. It lets you get, set or monitor an individual key for changes\&. +.PP +The +\fISCHEMA\fR +and +\fIKEY\fR +arguments are required for most commands to specify the schema id and the name of the key to operate on\&. The schema id may optionally have a :\fIPATH\fR +suffix\&. Specifying the path is only needed if the schema does not have a fixed path\&. +.PP +When setting a key, you also need specify a +\fIVALUE\fR +The format for the value is that of a serialized +\fBGVariant\fR, so e\&.g\&. a string must include explicit quotes: "\*(Aqfoo\*(Aq"\&. This format is also used when printing out values\&. +.PP +Note that gsettings needs a D\-Bus session bus connection to write changes to the dconf database\&. +.SH "COMMANDS" +.PP +\fBget\fR +.RS 4 +Gets the value of +\fIKEY\fR\&. The value is printed out as a serialised +\fBGVariant\fR\&. +.RE +.PP +\fBmonitor\fR +.RS 4 +Monitors +\fIKEY\fR +for changes and prints the changed values\&. If no +\fIKEY\fR +is specified, all keys in the schema are monitored\&. Monitoring will continue until the process is terminated\&. +.RE +.PP +\fBwritable\fR +.RS 4 +Finds out whether +\fIKEY\fR +is writable\&. +.RE +.PP +\fBrange\fR +.RS 4 +Queries the range of valid values for +\fIKEY\fR\&. +.RE +.PP +\fBset\fR +.RS 4 +Sets the value of +\fIKEY\fR +to +\fIVALUE\fR\&. The value is specified as a serialised +\fBGVariant\fR\&. +.RE +.PP +\fBreset\fR +.RS 4 +Resets +\fIKEY\fR +to its default value\&. +.RE +.PP +\fBreset\-recursively\fR +.RS 4 +Reset all keys under the given +\fISCHEMA\fR\&. +.RE +.PP +\fBlist\-schemas\fR +.RS 4 +Lists the installed, non\-relocatable schemas\&. See +\fBlist\-relocatable\-schemas\fR +if you are interested in relocatable schemas\&. +.RE +.PP +\fBlist\-relocatable\-schemas\fR +.RS 4 +Lists the installed, relocatable schemas\&. See +\fBlist\-schemas\fR +if you are interested in non\-relocatable schemas\&. +.RE +.PP +\fBlist\-keys\fR +.RS 4 +Lists the keys in +\fISCHEMA\fR\&. +.RE +.PP +\fBlist\-children\fR +.RS 4 +Lists the children of +\fISCHEMA\fR\&. +.RE +.PP +\fBlist\-recursively\fR +.RS 4 +Lists keys and values, recursively\&. If no +\fISCHEMA\fR +is given, list keys in all schemas\&. +.RE +.PP +\fBhelp\fR +.RS 4 +Prints help and exits\&. +.RE diff --git a/docs/reference/gio/gvfs-overview.odg b/docs/reference/gio/gvfs-overview.odg deleted file mode 100644 index ca2bb8d66d24619fbf28e346ac6b41d772ecbb35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17772 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 + + + +GAction: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GAction

+

GAction — An action interface

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +g_action_name_is_valid () +
const gchar * + +g_action_get_name () +
const GVariantType * + +g_action_get_parameter_type () +
const GVariantType * + +g_action_get_state_type () +
+GVariant * + +g_action_get_state_hint () +
+gboolean + +g_action_get_enabled () +
+GVariant * + +g_action_get_state () +
+void + +g_action_change_state () +
+void + +g_action_activate () +
+gboolean + +g_action_parse_detailed_name () +
+gchar * + +g_action_print_detailed_name () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
gbooleanenabledRead
+gchar *nameRead
+GVariantType *parameter-typeRead
+GVariant *stateRead
+GVariantType *state-typeRead
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GAction
structGActionInterface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GAction
+
+
+
+

Prerequisites

+

+GAction requires + GObject.

+
+
+

Known Implementations

+

+GAction is implemented by + GPropertyAction and GSimpleAction.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GAction represents a single named action.

+

The main interface to an action is that it can be activated with +g_action_activate(). This results in the 'activate' signal being +emitted. An activation has a GVariant parameter (which may be +NULL). The correct type for the parameter is determined by a static +parameter type (which is given at construction time).

+

An action may optionally have a state, in which case the state may be +set with g_action_change_state(). This call takes a GVariant. The +correct type for the state is determined by a static state type +(which is given at construction time).

+

The state may have a hint associated with it, specifying its valid +range.

+

GAction is merely the interface to the concept of an action, as +described above. Various implementations of actions exist, including +GSimpleAction.

+

In all cases, the implementing class is responsible for storing the +name of the action, the parameter type, the enabled state, the +optional state type and the state and emitting the appropriate +signals when these change. The implementor is responsible for filtering +calls to g_action_activate() and g_action_change_state() for type +safety and for the state being enabled.

+

Probably the only useful thing to do with a GAction is to put it +inside of a GSimpleActionGroup.

+
+
+

Functions

+
+

g_action_name_is_valid ()

+
gboolean
+g_action_name_is_valid (const gchar *action_name);
+

Checks if action_name + is valid.

+

action_name + is valid if it consists only of alphanumeric characters, +plus '-' and '.'. The empty string is not a valid action name.

+

It is an error to call this function with a non-utf8 action_name +. +action_name + must not be NULL.

+
+

Parameters

+
+++++ + + + + + +

action_name

an potential action name

 
+
+
+

Returns

+

TRUE if action_name +is valid

+
+

Since: 2.38

+
+
+
+

g_action_get_name ()

+
const gchar *
+g_action_get_name (GAction *action);
+

Queries the name of action +.

+
+

Parameters

+
+++++ + + + + + +

action

a GAction

 
+
+
+

Returns

+

the name of the action

+
+

Since: 2.28

+
+
+
+

g_action_get_parameter_type ()

+
const GVariantType *
+g_action_get_parameter_type (GAction *action);
+

Queries the type of the parameter that must be given when activating +action +.

+

When activating the action using g_action_activate(), the GVariant +given to that function must be of the type returned by this function.

+

In the case that this function returns NULL, you must not give any +GVariant, but NULL instead.

+
+

Parameters

+
+++++ + + + + + +

action

a GAction

 
+
+
+

Returns

+

the parameter type.

+

[allow-none]

+
+

Since: 2.28

+
+
+
+

g_action_get_state_type ()

+
const GVariantType *
+g_action_get_state_type (GAction *action);
+

Queries the type of the state of action +.

+

If the action is stateful (e.g. created with +g_simple_action_new_stateful()) then this function returns the +GVariantType of the state. This is the type of the initial value +given as the state. All calls to g_action_change_state() must give a +GVariant of this type and g_action_get_state() will return a +GVariant of the same type.

+

If the action is not stateful (e.g. created with g_simple_action_new()) +then this function will return NULL. In that case, g_action_get_state() +will return NULL and you must not call g_action_change_state().

+
+

Parameters

+
+++++ + + + + + +

action

a GAction

 
+
+
+

Returns

+

the state type, if the action is stateful.

+

[allow-none]

+
+

Since: 2.28

+
+
+
+

g_action_get_state_hint ()

+
GVariant *
+g_action_get_state_hint (GAction *action);
+

Requests a hint about the valid range of values for the state of +action +.

+

If NULL is returned it either means that the action is not stateful +or that there is no hint about the valid range of values for the +state of the action.

+

If a GVariant array is returned then each item in the array is a +possible value for the state. If a GVariant pair (ie: two-tuple) is +returned then the tuple specifies the inclusive lower and upper bound +of valid values for the state.

+

In any case, the information is merely a hint. It may be possible to +have a state value outside of the hinted range and setting a value +within the range may fail.

+

The return value (if non-NULL) should be freed with +g_variant_unref() when it is no longer required.

+
+

Parameters

+
+++++ + + + + + +

action

a GAction

 
+
+
+

Returns

+

the state range hint.

+

[nullable][transfer full]

+
+

Since: 2.28

+
+
+
+

g_action_get_enabled ()

+
gboolean
+g_action_get_enabled (GAction *action);
+

Checks if action + is currently enabled.

+

An action must be enabled in order to be activated or in order to +have its state changed from outside callers.

+
+

Parameters

+
+++++ + + + + + +

action

a GAction

 
+
+
+

Returns

+

whether the action is enabled

+
+

Since: 2.28

+
+
+
+

g_action_get_state ()

+
GVariant *
+g_action_get_state (GAction *action);
+

Queries the current state of action +.

+

If the action is not stateful then NULL will be returned. If the +action is stateful then the type of the return value is the type +given by g_action_get_state_type().

+

The return value (if non-NULL) should be freed with +g_variant_unref() when it is no longer required.

+
+

Parameters

+
+++++ + + + + + +

action

a GAction

 
+
+
+

Returns

+

the current state of the action.

+

[transfer full]

+
+

Since: 2.28

+
+
+
+

g_action_change_state ()

+
void
+g_action_change_state (GAction *action,
+                       GVariant *value);
+

Request for the state of action + to be changed to value +.

+

The action must be stateful and value + must be of the correct type. +See g_action_get_state_type().

+

This call merely requests a change. The action may refuse to change +its state or may change its state to something other than value +. +See g_action_get_state_hint().

+

If the value + GVariant is floating, it is consumed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

action

a GAction

 

value

the new state

 
+
+

Since: 2.30

+
+
+
+

g_action_activate ()

+
void
+g_action_activate (GAction *action,
+                   GVariant *parameter);
+

Activates the action.

+

parameter + must be the correct type of parameter for the action (ie: +the parameter type given at construction time). If the parameter +type was NULL then parameter + must also be NULL.

+

If the parameter + GVariant is floating, it is consumed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

action

a GAction

 

parameter

the parameter to the activation.

[allow-none]
+
+

Since: 2.28

+
+
+
+

g_action_parse_detailed_name ()

+
gboolean
+g_action_parse_detailed_name (const gchar *detailed_name,
+                              gchar **action_name,
+                              GVariant **target_value,
+                              GError **error);
+

Parses a detailed action name into its separate name and target +components.

+

Detailed action names can have three formats.

+

The first format is used to represent an action name with no target +value and consists of just an action name containing no whitespace +nor the characters ':', '(' or ')'. For example: "app.action".

+

The second format is used to represent an action with a target value +that is a non-empty string consisting only of alphanumerics, plus '-' +and '.'. In that case, the action name and target value are +separated by a double colon ("::"). For example: +"app.action::target".

+

The third format is used to represent an action with any type of +target value, including strings. The target value follows the action +name, surrounded in parens. For example: "app.action(42)". The +target value is parsed using g_variant_parse(). If a tuple-typed +value is desired, it must be specified in the same way, resulting in +two sets of parens, for example: "app.action((1,2,3))". A string +target can be specified this way as well: "app.action('target')". +For strings, this third format must be used if * target value is +empty or contains characters other than alphanumerics, '-' and '.'.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

detailed_name

a detailed action name

 

action_name

the action name.

[out]

target_value

the target value, or NULL for no target.

[out]

error

a pointer to a NULL GError, or NULL

 
+
+
+

Returns

+

TRUE if successful, else FALSE with error +set

+
+

Since: 2.38

+
+
+
+

g_action_print_detailed_name ()

+
gchar *
+g_action_print_detailed_name (const gchar *action_name,
+                              GVariant *target_value);
+

Formats a detailed action name from action_name + and target_value +.

+

It is an error to call this function with an invalid action name.

+

This function is the opposite of +g_action_parse_detailed_action_name(). It will produce a string that +can be parsed back to the action_name + and target_value + by that +function.

+

See that function for the types of strings that will be printed by +this function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

action_name

a valid action name

 

target_value

a GVariant target value, or NULL.

[allow-none]
+
+
+

Returns

+

a detailed format string

+
+

Since: 2.38

+
+
+
+

Types and Values

+
+

GAction

+
typedef struct _GAction GAction;
+

GAction is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

struct 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);
+};
+
+

The virtual function table for GAction.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

  

get_name ()

the virtual function pointer for g_action_get_name()

 

get_parameter_type ()

the virtual function pointer for g_action_get_parameter_type()

 

get_state_type ()

the virtual function pointer for g_action_get_state_type()

 

get_state_hint ()

the virtual function pointer for g_action_get_state_hint()

 

get_enabled ()

the virtual function pointer for g_action_get_enabled()

 

get_state ()

the virtual function pointer for g_action_get_state()

 

change_state ()

the virtual function pointer for g_action_change_state()

 

activate ()

the virtual function pointer for g_action_activate(). Note that GAction does not have an +'activate' signal but that implementations of it may have one.

 
+
+

Since: 2.28

+
+
+
+

Property Details

+
+

The “enabled” property

+
  “enabled”                  gboolean
+

If action + is currently enabled.

+

If the action is disabled then calls to g_action_activate() and +g_action_change_state() have no effect.

+

Flags: Read

+

Default value: TRUE

+

Since: 2.28

+
+
+
+

The “name” property

+
  “name”                     gchar *
+

The name of the action. This is mostly meaningful for identifying +the action once it has been added to a GActionGroup. It is immutable.

+

Flags: Read

+

Default value: NULL

+

Since: 2.28

+
+
+
+

The “parameter-type” property

+
  “parameter-type”           GVariantType *
+

The type of the parameter that must be given when activating the +action. This is immutable, and may be NULL if no parameter is needed when +activating the action.

+

Flags: Read

+

Since: 2.28

+
+
+
+

The “state” property

+
  “state”                    GVariant *
+

The state of the action, or NULL if the action is stateless.

+

Flags: Read

+

Allowed values: GVariant<*>

+

Default value: NULL

+

Since: 2.28

+
+
+
+

The “state-type” property

+
  “state-type”               GVariantType *
+

The GVariantType of the state that the action has, or NULL if the +action is stateless. This is immutable.

+

Flags: Read

+

Since: 2.28

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GActionGroup.html b/docs/reference/gio/html/GActionGroup.html new file mode 100644 index 0000000..880e4ea --- /dev/null +++ b/docs/reference/gio/html/GActionGroup.html @@ -0,0 +1,1239 @@ + + + + +GActionGroup: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GActionGroup

+

GActionGroup — A group of actions

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gchar ** + +g_action_group_list_actions () +
+gboolean + +g_action_group_query_action () +
+gboolean + +g_action_group_has_action () +
+gboolean + +g_action_group_get_action_enabled () +
const GVariantType * + +g_action_group_get_action_parameter_type () +
const GVariantType * + +g_action_group_get_action_state_type () +
+GVariant * + +g_action_group_get_action_state_hint () +
+GVariant * + +g_action_group_get_action_state () +
+void + +g_action_group_change_action_state () +
+void + +g_action_group_activate_action () +
+void + +g_action_group_action_added () +
+void + +g_action_group_action_removed () +
+void + +g_action_group_action_enabled_changed () +
+void + +g_action_group_action_state_changed () +
+
+
+

Signals

+ +
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GActionGroup
structGActionGroupInterface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GActionGroup
+
+
+
+

Prerequisites

+

+GActionGroup requires + GObject.

+
+
+

Known Derived Interfaces

+

+GActionGroup is required by + GRemoteActionGroup.

+
+
+

Known Implementations

+

+GActionGroup is implemented by + GApplication, GDBusActionGroup and GSimpleActionGroup.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GActionGroup represents a group of actions. Actions can be used to +expose functionality in a structured way, either from one part of a +program to another, or to the outside world. Action groups are often +used together with a GMenuModel that provides additional +representation data for displaying the actions to the user, e.g. in +a menu.

+

The main way to interact with the actions in a GActionGroup is to +activate them with g_action_group_activate_action(). Activating an +action may require a GVariant parameter. The required type of the +parameter can be inquired with g_action_group_get_action_parameter_type(). +Actions may be disabled, see g_action_group_get_action_enabled(). +Activating a disabled action has no effect.

+

Actions may optionally have a state in the form of a GVariant. The +current state of an action can be inquired with +g_action_group_get_action_state(). Activating a stateful action may +change its state, but it is also possible to set the state by calling +g_action_group_change_action_state().

+

As typical example, consider a text editing application which has an +option to change the current font to 'bold'. A good way to represent +this would be a stateful action, with a boolean state. Activating the +action would toggle the state.

+

Each action in the group has a unique name (which is a string). All +method calls, except g_action_group_list_actions() take the name of +an action as an argument.

+

The GActionGroup API is meant to be the 'public' API to the action +group. The calls here are exactly the interaction that 'external +forces' (eg: UI, incoming D-Bus messages, etc.) are supposed to have +with actions. 'Internal' APIs (ie: ones meant only to be accessed by +the action group implementation) are found on subclasses. This is +why you will find - for example - g_action_group_get_action_enabled() +but not an equivalent set() call.

+

Signals are emitted on the action group in response to state changes +on individual actions.

+

Implementations of GActionGroup should provide implementations for +the virtual functions g_action_group_list_actions() and +g_action_group_query_action(). The other virtual functions should +not be implemented - their "wrappers" are actually implemented with +calls to g_action_group_query_action().

+
+
+

Functions

+
+

g_action_group_list_actions ()

+
gchar **
+g_action_group_list_actions (GActionGroup *action_group);
+

Lists the actions contained within action_group +.

+

The caller is responsible for freeing the list with g_strfreev() when +it is no longer required.

+
+

Parameters

+
+++++ + + + + + +

action_group

a GActionGroup

 
+
+
+

Returns

+

a NULL-terminated array of the names of the +actions in the group.

+

[transfer full]

+
+

Since: 2.28

+
+
+
+

g_action_group_query_action ()

+
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);
+

Queries all aspects of the named action within an action_group +.

+

This function acquires the information available from +g_action_group_has_action(), g_action_group_get_action_enabled(), +g_action_group_get_action_parameter_type(), +g_action_group_get_action_state_type(), +g_action_group_get_action_state_hint() and +g_action_group_get_action_state() with a single function call.

+

This provides two main benefits.

+

The first is the improvement in efficiency that comes with not having +to perform repeated lookups of the action in order to discover +different things about it. The second is that implementing +GActionGroup can now be done by only overriding this one virtual +function.

+

The interface provides a default implementation of this function that +calls the individual functions, as required, to fetch the +information. The interface also provides default implementations of +those functions that call this function. All implementations, +therefore, must override either this function or all of the others.

+

If the action exists, TRUE is returned and any of the requested +fields (as indicated by having a non-NULL reference passed in) are +filled. If the action doesn't exist, FALSE is returned and the +fields may or may not have been modified.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

action_group

a GActionGroup

 

action_name

the name of an action in the group

 

enabled

if the action is presently enabled.

[out]

parameter_type

the parameter type, or NULL if none needed.

[out][allow-none]

state_type

the state type, or NULL if stateless.

[out][allow-none]

state_hint

the state hint, or NULL if none.

[out][allow-none]

state

the current state, or NULL if stateless.

[out][allow-none]
+
+
+

Returns

+

TRUE if the action exists, else FALSE

+
+

Since: 2.32

+
+
+
+

g_action_group_has_action ()

+
gboolean
+g_action_group_has_action (GActionGroup *action_group,
+                           const gchar *action_name);
+

Checks if the named action exists within action_group +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

action_group

a GActionGroup

 

action_name

the name of the action to check for

 
+
+
+

Returns

+

whether the named action exists

+
+

Since: 2.28

+
+
+
+

g_action_group_get_action_enabled ()

+
gboolean
+g_action_group_get_action_enabled (GActionGroup *action_group,
+                                   const gchar *action_name);
+

Checks if the named action within action_group + is currently enabled.

+

An action must be enabled in order to be activated or in order to +have its state changed from outside callers.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

action_group

a GActionGroup

 

action_name

the name of the action to query

 
+
+
+

Returns

+

whether or not the action is currently enabled

+
+

Since: 2.28

+
+
+
+

g_action_group_get_action_parameter_type ()

+
const GVariantType *
+g_action_group_get_action_parameter_type
+                               (GActionGroup *action_group,
+                                const gchar *action_name);
+

Queries the type of the parameter that must be given when activating +the named action within action_group +.

+

When activating the action using g_action_group_activate_action(), +the GVariant given to that function must be of the type returned +by this function.

+

In the case that this function returns NULL, you must not give any +GVariant, but NULL instead.

+

The parameter type of a particular action will never change but it is +possible for an action to be removed and for a new action to be added +with the same name but a different parameter type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

action_group

a GActionGroup

 

action_name

the name of the action to query

 
+
+
+

Returns

+

the parameter type.

+

[nullable]

+
+

Since: 2.28

+
+
+
+

g_action_group_get_action_state_type ()

+
const GVariantType *
+g_action_group_get_action_state_type (GActionGroup *action_group,
+                                      const gchar *action_name);
+

Queries the type of the state of the named action within +action_group +.

+

If the action is stateful then this function returns the +GVariantType of the state. All calls to +g_action_group_change_action_state() must give a GVariant of this +type and g_action_group_get_action_state() will return a GVariant +of the same type.

+

If the action is not stateful then this function will return NULL. +In that case, g_action_group_get_action_state() will return NULL +and you must not call g_action_group_change_action_state().

+

The state type of a particular action will never change but it is +possible for an action to be removed and for a new action to be added +with the same name but a different state type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

action_group

a GActionGroup

 

action_name

the name of the action to query

 
+
+
+

Returns

+

the state type, if the action is stateful.

+

[nullable]

+
+

Since: 2.28

+
+
+
+

g_action_group_get_action_state_hint ()

+
GVariant *
+g_action_group_get_action_state_hint (GActionGroup *action_group,
+                                      const gchar *action_name);
+

Requests a hint about the valid range of values for the state of the +named action within action_group +.

+

If NULL is returned it either means that the action is not stateful +or that there is no hint about the valid range of values for the +state of the action.

+

If a GVariant array is returned then each item in the array is a +possible value for the state. If a GVariant pair (ie: two-tuple) is +returned then the tuple specifies the inclusive lower and upper bound +of valid values for the state.

+

In any case, the information is merely a hint. It may be possible to +have a state value outside of the hinted range and setting a value +within the range may fail.

+

The return value (if non-NULL) should be freed with +g_variant_unref() when it is no longer required.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

action_group

a GActionGroup

 

action_name

the name of the action to query

 
+
+
+

Returns

+

the state range hint.

+

[nullable][transfer full]

+
+

Since: 2.28

+
+
+
+

g_action_group_get_action_state ()

+
GVariant *
+g_action_group_get_action_state (GActionGroup *action_group,
+                                 const gchar *action_name);
+

Queries the current state of the named action within action_group +.

+

If the action is not stateful then NULL will be returned. If the +action is stateful then the type of the return value is the type +given by g_action_group_get_action_state_type().

+

The return value (if non-NULL) should be freed with +g_variant_unref() when it is no longer required.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

action_group

a GActionGroup

 

action_name

the name of the action to query

 
+
+
+

Returns

+

the current state of the action.

+

[nullable]

+
+

Since: 2.28

+
+
+
+

g_action_group_change_action_state ()

+
void
+g_action_group_change_action_state (GActionGroup *action_group,
+                                    const gchar *action_name,
+                                    GVariant *value);
+

Request for the state of the named action within action_group + to be +changed to value +.

+

The action must be stateful and value + must be of the correct type. +See g_action_group_get_action_state_type().

+

This call merely requests a change. The action may refuse to change +its state or may change its state to something other than value +. +See g_action_group_get_action_state_hint().

+

If the value + GVariant is floating, it is consumed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

action_group

a GActionGroup

 

action_name

the name of the action to request the change on

 

value

the new state

 
+
+

Since: 2.28

+
+
+
+

g_action_group_activate_action ()

+
void
+g_action_group_activate_action (GActionGroup *action_group,
+                                const gchar *action_name,
+                                GVariant *parameter);
+

Activate the named action within action_group +.

+

If the action is expecting a parameter, then the correct type of +parameter must be given as parameter +. If the action is expecting no +parameters then parameter + must be NULL. See +g_action_group_get_action_parameter_type().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

action_group

a GActionGroup

 

action_name

the name of the action to activate

 

parameter

parameters to the activation.

[allow-none]
+
+

Since: 2.28

+
+
+
+

g_action_group_action_added ()

+
void
+g_action_group_action_added (GActionGroup *action_group,
+                             const gchar *action_name);
+

Emits the “action-added” signal on action_group +.

+

This function should only be called by GActionGroup implementations.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

action_group

a GActionGroup

 

action_name

the name of an action in the group

 
+
+

Since: 2.28

+
+
+
+

g_action_group_action_removed ()

+
void
+g_action_group_action_removed (GActionGroup *action_group,
+                               const gchar *action_name);
+

Emits the “action-removed” signal on action_group +.

+

This function should only be called by GActionGroup implementations.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

action_group

a GActionGroup

 

action_name

the name of an action in the group

 
+
+

Since: 2.28

+
+
+
+

g_action_group_action_enabled_changed ()

+
void
+g_action_group_action_enabled_changed (GActionGroup *action_group,
+                                       const gchar *action_name,
+                                       gboolean enabled);
+

Emits the “action-enabled-changed” signal on action_group +.

+

This function should only be called by GActionGroup implementations.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

action_group

a GActionGroup

 

action_name

the name of an action in the group

 

enabled

whether or not the action is now enabled

 
+
+

Since: 2.28

+
+
+
+

g_action_group_action_state_changed ()

+
void
+g_action_group_action_state_changed (GActionGroup *action_group,
+                                     const gchar *action_name,
+                                     GVariant *state);
+

Emits the “action-state-changed” signal on action_group +.

+

This function should only be called by GActionGroup implementations.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

action_group

a GActionGroup

 

action_name

the name of an action in the group

 

state

the new state of the named action

 
+
+

Since: 2.28

+
+
+
+

Types and Values

+
+

GActionGroup

+
typedef struct _GActionGroup GActionGroup;
+

GActionGroup is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

struct 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);
+};
+
+

The virtual function table for GActionGroup.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

  

has_action ()

the virtual function pointer for g_action_group_has_action()

 

list_actions ()

the virtual function pointer for g_action_group_list_actions()

 

get_action_enabled ()

the virtual function pointer for g_action_group_get_action_enabled()

 

get_action_parameter_type ()

the virtual function pointer for g_action_group_get_action_parameter_type()

 

get_action_state_type ()

the virtual function pointer for g_action_group_get_action_state_type()

 

get_action_state_hint ()

the virtual function pointer for g_action_group_get_action_state_hint()

 

get_action_state ()

the virtual function pointer for g_action_group_get_action_state()

 

change_action_state ()

the virtual function pointer for g_action_group_change_action_state()

 

activate_action ()

the virtual function pointer for g_action_group_activate_action()

 

action_added ()

the class closure for the “action-added” signal

 

action_removed ()

the class closure for the “action-removed” signal

 

action_enabled_changed ()

the class closure for the “action-enabled-changed” signal

 

action_state_changed ()

the class closure for the “action-enabled-changed” signal

 

query_action ()

the virtual function pointer for g_action_group_query_action()

 
+
+

Since: 2.28

+
+
+
+

Signal Details

+
+

The “action-added” signal

+
void
+user_function (GActionGroup *action_group,
+               gchar        *action_name,
+               gpointer      user_data)
+

Signals that a new action was just added to the group. +This signal is emitted after the action has been added +and is now visible.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

action_group

the GActionGroup that changed

 

action_name

the name of the action in action_group +

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Has Details

+

Since: 2.28

+
+
+
+

The “action-enabled-changed” signal

+
void
+user_function (GActionGroup *action_group,
+               gchar        *action_name,
+               gboolean      enabled,
+               gpointer      user_data)
+

Signals that the enabled status of the named action has changed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

action_group

the GActionGroup that changed

 

action_name

the name of the action in action_group +

 

enabled

whether the action is enabled or not

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Has Details

+

Since: 2.28

+
+
+
+

The “action-removed” signal

+
void
+user_function (GActionGroup *action_group,
+               gchar        *action_name,
+               gpointer      user_data)
+

Signals that an action is just about to be removed from the group. +This signal is emitted before the action is removed, so the action +is still visible and can be queried from the signal handler.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

action_group

the GActionGroup that changed

 

action_name

the name of the action in action_group +

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Has Details

+

Since: 2.28

+
+
+
+

The “action-state-changed” signal

+
void
+user_function (GActionGroup *action_group,
+               gchar        *action_name,
+               GVariant     *value,
+               gpointer      user_data)
+

Signals that the state of the named action has changed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

action_group

the GActionGroup that changed

 

action_name

the name of the action in action_group +

 

value

the new value of the state

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Has Details

+

Since: 2.28

+
+
+
+

See Also

+

GAction

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GActionMap.html b/docs/reference/gio/html/GActionMap.html new file mode 100644 index 0000000..2b81eee --- /dev/null +++ b/docs/reference/gio/html/GActionMap.html @@ -0,0 +1,508 @@ + + + + +GActionMap: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GActionMap

+

GActionMap — Interface for action containers

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+GAction * + +g_action_map_lookup_action () +
+void + +g_action_map_add_action_entries () +
+void + +g_action_map_add_action () +
+void + +g_action_map_remove_action () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
 GActionMap
structGActionMapInterface
structGActionEntry
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GActionMap
+
+
+
+

Prerequisites

+

+GActionMap requires + GObject.

+
+
+

Known Implementations

+

+GActionMap is implemented by + GApplication and GSimpleActionGroup.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

The GActionMap interface is implemented by GActionGroup +implementations that operate by containing a number of +named GAction instances, such as GSimpleActionGroup.

+

One useful application of this interface is to map the +names of actions from various action groups to unique, +prefixed names (e.g. by prepending "app." or "win."). +This is the motivation for the 'Map' part of the interface +name.

+
+
+

Functions

+
+

g_action_map_lookup_action ()

+
GAction *
+g_action_map_lookup_action (GActionMap *action_map,
+                            const gchar *action_name);
+

Looks up the action with the name action_name + in action_map +.

+

If no such action exists, returns NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

action_map

a GActionMap

 

action_name

the name of an action

 
+
+
+

Returns

+

a GAction, or NULL.

+

[transfer none]

+
+

Since: 2.32

+
+
+
+

g_action_map_add_action_entries ()

+
void
+g_action_map_add_action_entries (GActionMap *action_map,
+                                 const GActionEntry *entries,
+                                 gint n_entries,
+                                 gpointer user_data);
+

A convenience function for creating multiple GSimpleAction instances +and adding them to a GActionMap.

+

Each action is constructed as per one GActionEntry.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
static void
+activate_quit (GSimpleAction *simple,
+               GVariant      *parameter,
+               gpointer       user_data)
+{
+  exit (0);
+}
+
+static void
+activate_print_string (GSimpleAction *simple,
+                       GVariant      *parameter,
+                       gpointer       user_data)
+{
+  g_print ("%s\n", g_variant_get_string (parameter, NULL));
+}
+
+static GActionGroup *
+create_action_group (void)
+{
+  const GActionEntry entries[] = {
+    { "quit",         activate_quit              },
+    { "print-string", activate_print_string, "s" }
+  };
+  GSimpleActionGroup *group;
+
+  group = g_simple_action_group_new ();
+  g_action_map_add_action_entries (G_ACTION_MAP (group), entries, G_N_ELEMENTS (entries), NULL);
+
+  return G_ACTION_GROUP (group);
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

action_map

a GActionMap

 

entries

a pointer to +the first item in an array of GActionEntry structs.

[array length=n_entries][element-type GActionEntry]

n_entries

the length of entries +, or -1 if entries +is NULL-terminated

 

user_data

the user data for signal connections

 
+
+

Since: 2.32

+
+
+
+

g_action_map_add_action ()

+
void
+g_action_map_add_action (GActionMap *action_map,
+                         GAction *action);
+

Adds an action to the action_map +.

+

If the action map already contains an action with the same name +as action + then the old action is dropped from the action map.

+

The action map takes its own reference on action +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

action_map

a GActionMap

 

action

a GAction

 
+
+

Since: 2.32

+
+
+
+

g_action_map_remove_action ()

+
void
+g_action_map_remove_action (GActionMap *action_map,
+                            const gchar *action_name);
+

Removes the named action from the action map.

+

If no action of this name is in the map then nothing happens.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

action_map

a GActionMap

 

action_name

the name of the action

 
+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

GActionMap

+
typedef struct _GActionMap GActionMap;
+

GActionMap is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

struct GActionMapInterface

+
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);
+};
+
+

The virtual function table for GActionMap.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

  

lookup_action ()

the virtual function pointer for g_action_map_lookup_action()

 

add_action ()

the virtual function pointer for g_action_map_add_action()

 

remove_action ()

the virtual function pointer for g_action_map_remove_action()

 
+
+

Since: 2.32

+
+
+
+

struct GActionEntry

+
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);
+};
+
+

This struct defines a single action. It is for use with +g_action_map_add_action_entries().

+

The order of the items in the structure are intended to reflect +frequency of use. It is permissible to use an incomplete initialiser +in order to leave some of the later values as NULL. All values +after name + are optional. Additional optional fields may be added in +the future.

+

See g_action_map_add_action_entries() for an example.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

const gchar *name;

the name of the action

 

activate ()

the callback to connect to the "activate" signal of the +action. Since GLib 2.40, this can be NULL for stateful +actions, in which case the default handler is used. For +boolean-stated actions with no parameter, this is a +toggle. For other state types (and parameter type equal +to the state type) this will be a function that +just calls change_state +(which you should provide).

 

const gchar *parameter_type;

the type of the parameter that must be passed to the +activate function for this action, given as a single +GVariant type string (or NULL for no parameter)

 

const gchar *state;

the initial state for this action, given in +GVariant text format. The state is parsed +with no extra type information, so type tags must be added to +the string if they are necessary. Stateless actions should +give NULL here.

 

change_state ()

the callback to connect to the "change-state" signal +of the action. All stateful actions should provide a +handler here; stateless actions should not.

 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GAppInfo.html b/docs/reference/gio/html/GAppInfo.html new file mode 100644 index 0000000..0afe381 --- /dev/null +++ b/docs/reference/gio/html/GAppInfo.html @@ -0,0 +1,2206 @@ + + + + +GAppInfo: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GAppInfo

+

GAppInfo — Application information and launch contexts

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GAppInfo * + +g_app_info_create_from_commandline () +
+GAppInfo * + +g_app_info_dup () +
+gboolean + +g_app_info_equal () +
const char * + +g_app_info_get_id () +
const char * + +g_app_info_get_name () +
const char * + +g_app_info_get_display_name () +
const char * + +g_app_info_get_description () +
const char * + +g_app_info_get_executable () +
const char * + +g_app_info_get_commandline () +
+GIcon * + +g_app_info_get_icon () +
+gboolean + +g_app_info_launch () +
+gboolean + +g_app_info_supports_files () +
+gboolean + +g_app_info_supports_uris () +
+gboolean + +g_app_info_launch_uris () +
+gboolean + +g_app_info_should_show () +
+gboolean + +g_app_info_can_delete () +
+gboolean + +g_app_info_delete () +
+void + +g_app_info_reset_type_associations () +
+gboolean + +g_app_info_set_as_default_for_type () +
+gboolean + +g_app_info_set_as_default_for_extension () +
+gboolean + +g_app_info_set_as_last_used_for_type () +
+gboolean + +g_app_info_add_supports_type () +
+gboolean + +g_app_info_can_remove_supports_type () +
+gboolean + +g_app_info_remove_supports_type () +
const char ** + +g_app_info_get_supported_types () +
+GList * + +g_app_info_get_all () +
+GList * + +g_app_info_get_all_for_type () +
+GAppInfo * + +g_app_info_get_default_for_type () +
+GAppInfo * + +g_app_info_get_default_for_uri_scheme () +
+GList * + +g_app_info_get_fallback_for_type () +
+GList * + +g_app_info_get_recommended_for_type () +
+gboolean + +g_app_info_launch_default_for_uri () +
+void + +g_app_launch_context_setenv () +
+void + +g_app_launch_context_unsetenv () +
+char ** + +g_app_launch_context_get_environment () +
+char * + +g_app_launch_context_get_display () +
+char * + +g_app_launch_context_get_startup_notify_id () +
+void + +g_app_launch_context_launch_failed () +
+GAppLaunchContext * + +g_app_launch_context_new () +
+
+
+

Signals

+
+++++ + + + + + + + + + + + + +
voidlaunch-failedRun Last
voidlaunchedRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + +
enumGAppInfoCreateFlags
 GAppInfo
structGAppInfoIface
 GAppLaunchContext
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GAppInfo
+    GObject
+    ╰── GAppLaunchContext
+
+
+
+

Prerequisites

+

+GAppInfo requires + GObject.

+
+
+

Known Implementations

+

+GAppInfo is implemented by + GDesktopAppInfo.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GAppInfo and GAppLaunchContext are used for describing and launching +applications installed on the system.

+

As of GLib 2.20, URIs will always be converted to POSIX paths +(using g_file_get_path()) when using g_app_info_launch() even if +the application requested an URI and not a POSIX path. For example +for an desktop-file based application with Exec key totem +%U and a single URI, sftp://foo/file.avi, then +/home/user/.gvfs/sftp on foo/file.avi will be passed. This will +only work if a set of suitable GIO extensions (such as gvfs 2.26 +compiled with FUSE support), is available and operational; if this +is not the case, the URI will be passed unmodified to the application. +Some URIs, such as mailto:, of course cannot be mapped to a POSIX +path (in gvfs there's no FUSE mount for it); such URIs will be +passed unmodified to the application.

+

Specifically for gvfs 2.26 and later, the POSIX URI will be mapped +back to the GIO URI in the GFile constructors (since gvfs +implements the GVfs extension point). As such, if the application +needs to examine the URI, it needs to use g_file_get_uri() or +similar on GFile. In other words, an application cannot assume +that the URI passed to e.g. g_file_new_for_commandline_arg() is +equal to the result of g_file_get_uri(). The following snippet +illustrates this:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
GFile *f;
+char *uri;
+
+file = g_file_new_for_commandline_arg (uri_from_commandline);
+
+uri = g_file_get_uri (file);
+strcmp (uri, uri_from_commandline) == 0;
+g_free (uri);
+
+if (g_file_has_uri_scheme (file, "cdda"))
+  {
+    // do something special with uri
+  }
+g_object_unref (file);
+
+ +

+

This code will work when both cdda://sr0/Track 1.wav and +/home/user/.gvfs/cdda on sr0/Track 1.wav is passed to the +application. It should be noted that it's generally not safe +for applications to rely on the format of a particular URIs. +Different launcher applications (e.g. file managers) may have +different ideas of what a given URI means.

+
+
+

Functions

+
+

g_app_info_create_from_commandline ()

+
GAppInfo *
+g_app_info_create_from_commandline (const char *commandline,
+                                    const char *application_name,
+                                    GAppInfoCreateFlags flags,
+                                    GError **error);
+

Creates a new GAppInfo from the given information.

+

Note that for commandline +, the quoting rules of the Exec key of the +freedesktop.org Desktop Entry Specification +are applied. For example, if the commandline + contains +percent-encoded URIs, the percent-character must be doubled in order to prevent it from +being swallowed by Exec key unquoting. See the specification for exact quoting rules.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

commandline

the commandline to use

 

application_name

the application name, or NULL to use commandline +.

[allow-none]

flags

flags that can specify details of the created GAppInfo

 

error

a GError location to store the error occurring, NULL to ignore.

 
+
+
+

Returns

+

new GAppInfo for given command.

+

[transfer full]

+
+
+
+
+

g_app_info_dup ()

+
GAppInfo *
+g_app_info_dup (GAppInfo *appinfo);
+

Creates a duplicate of a GAppInfo.

+
+

Parameters

+
+++++ + + + + + +

appinfo

a GAppInfo.

 
+
+
+

Returns

+

a duplicate of appinfo +.

+

[transfer full]

+
+
+
+
+

g_app_info_equal ()

+
gboolean
+g_app_info_equal (GAppInfo *appinfo1,
+                  GAppInfo *appinfo2);
+

Checks if two GAppInfos are equal.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

appinfo1

the first GAppInfo.

 

appinfo2

the second GAppInfo.

 
+
+
+

Returns

+

TRUE if appinfo1 +is equal to appinfo2 +. FALSE otherwise.

+
+
+
+
+

g_app_info_get_id ()

+
const char *
+g_app_info_get_id (GAppInfo *appinfo);
+

Gets the ID of an application. An id is a string that +identifies the application. The exact format of the id is +platform dependent. For instance, on Unix this is the +desktop file id from the xdg menu specification.

+

Note that the returned ID may be NULL, depending on how +the appinfo + has been constructed.

+
+

Parameters

+
+++++ + + + + + +

appinfo

a GAppInfo.

 
+
+
+

Returns

+

a string containing the application's ID.

+
+
+
+
+

g_app_info_get_name ()

+
const char *
+g_app_info_get_name (GAppInfo *appinfo);
+

Gets the installed name of the application.

+
+

Parameters

+
+++++ + + + + + +

appinfo

a GAppInfo.

 
+
+
+

Returns

+

the name of the application for appinfo +.

+
+
+
+
+

g_app_info_get_display_name ()

+
const char *
+g_app_info_get_display_name (GAppInfo *appinfo);
+

Gets the display name of the application. The display name is often more +descriptive to the user than the name itself.

+
+

Parameters

+
+++++ + + + + + +

appinfo

a GAppInfo.

 
+
+
+

Returns

+

the display name of the application for appinfo +, or the name if +no display name is available.

+
+

Since: 2.24

+
+
+
+

g_app_info_get_description ()

+
const char *
+g_app_info_get_description (GAppInfo *appinfo);
+

Gets a human-readable description of an installed application.

+
+

Parameters

+
+++++ + + + + + +

appinfo

a GAppInfo.

 
+
+
+

Returns

+

a string containing a description of the +application appinfo +, or NULL if none.

+
+
+
+
+

g_app_info_get_executable ()

+
const char *
+g_app_info_get_executable (GAppInfo *appinfo);
+

Gets the executable's name for the installed application.

+
+

Parameters

+
+++++ + + + + + +

appinfo

a GAppInfo

 
+
+
+

Returns

+

a string containing the appinfo +'s application +binaries name

+
+
+
+
+

g_app_info_get_commandline ()

+
const char *
+g_app_info_get_commandline (GAppInfo *appinfo);
+

Gets the commandline with which the application will be +started.

+
+

Parameters

+
+++++ + + + + + +

appinfo

a GAppInfo

 
+
+
+

Returns

+

a string containing the appinfo +'s commandline, +or NULL if this information is not available

+
+

Since: 2.20

+
+
+
+

g_app_info_get_icon ()

+
GIcon *
+g_app_info_get_icon (GAppInfo *appinfo);
+

Gets the icon for the application.

+
+

Parameters

+
+++++ + + + + + +

appinfo

a GAppInfo.

 
+
+
+

Returns

+

the default GIcon for appinfo +or NULL +if there is no default icon.

+

[transfer none]

+
+
+
+
+

g_app_info_launch ()

+
gboolean
+g_app_info_launch (GAppInfo *appinfo,
+                   GList *files,
+                   GAppLaunchContext *launch_context,
+                   GError **error);
+

Launches the application. Passes files + to the launched application +as arguments, using the optional launch_context + to get information +about the details of the launcher (like what screen it is on). +On error, error + will be set accordingly.

+

To launch the application without arguments pass a NULL files + list.

+

Note that even if the launch is successful the application launched +can fail to start if it runs into problems during startup. There is +no way to detect this.

+

Some URIs can be changed when passed through a GFile (for instance +unsupported URIs with strange formats like mailto:), so if you have +a textual URI you want to pass in as argument, consider using +g_app_info_launch_uris() instead.

+

The launched application inherits the environment of the launching +process, but it can be modified with g_app_launch_context_setenv() +and g_app_launch_context_unsetenv().

+

On UNIX, this function sets the GIO_LAUNCHED_DESKTOP_FILE +environment variable with the path of the launched desktop file and +GIO_LAUNCHED_DESKTOP_FILE_PID to the process id of the launched +process. This can be used to ignore GIO_LAUNCHED_DESKTOP_FILE, +should it be inherited by further processes. The DISPLAY and +DESKTOP_STARTUP_ID environment variables are also set, based +on information provided in launch_context +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

appinfo

a GAppInfo

 

files

a GList of GFile objects.

[allow-none][element-type GFile]

launch_context

a GAppLaunchContext or NULL.

[allow-none]

error

a GError

 
+
+
+

Returns

+

TRUE on successful launch, FALSE otherwise.

+
+
+
+
+

g_app_info_supports_files ()

+
gboolean
+g_app_info_supports_files (GAppInfo *appinfo);
+

Checks if the application accepts files as arguments.

+
+

Parameters

+
+++++ + + + + + +

appinfo

a GAppInfo.

 
+
+
+

Returns

+

TRUE if the appinfo +supports files.

+
+
+
+
+

g_app_info_supports_uris ()

+
gboolean
+g_app_info_supports_uris (GAppInfo *appinfo);
+

Checks if the application supports reading files and directories from URIs.

+
+

Parameters

+
+++++ + + + + + +

appinfo

a GAppInfo.

 
+
+
+

Returns

+

TRUE if the appinfo +supports URIs.

+
+
+
+
+

g_app_info_launch_uris ()

+
gboolean
+g_app_info_launch_uris (GAppInfo *appinfo,
+                        GList *uris,
+                        GAppLaunchContext *launch_context,
+                        GError **error);
+

Launches the application. This passes the uris + to the launched application +as arguments, using the optional launch_context + to get information +about the details of the launcher (like what screen it is on). +On error, error + will be set accordingly.

+

To launch the application without arguments pass a NULL uris + list.

+

Note that even if the launch is successful the application launched +can fail to start if it runs into problems during startup. There is +no way to detect this.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

appinfo

a GAppInfo

 

uris

a GList containing URIs to launch.

[allow-none][element-type utf8]

launch_context

a GAppLaunchContext or NULL.

[allow-none]

error

a GError

 
+
+
+

Returns

+

TRUE on successful launch, FALSE otherwise.

+
+
+
+
+

g_app_info_should_show ()

+
gboolean
+g_app_info_should_show (GAppInfo *appinfo);
+

Checks if the application info should be shown in menus that +list available applications.

+
+

Parameters

+
+++++ + + + + + +

appinfo

a GAppInfo.

 
+
+
+

Returns

+

TRUE if the appinfo +should be shown, FALSE otherwise.

+
+
+
+
+

g_app_info_can_delete ()

+
gboolean
+g_app_info_can_delete (GAppInfo *appinfo);
+

Obtains the information whether the GAppInfo can be deleted. +See g_app_info_delete().

+
+

Parameters

+
+++++ + + + + + +

appinfo

a GAppInfo

 
+
+
+

Returns

+

TRUE if appinfo +can be deleted

+
+

Since: 2.20

+
+
+
+

g_app_info_delete ()

+
gboolean
+g_app_info_delete (GAppInfo *appinfo);
+

Tries to delete a GAppInfo.

+

On some platforms, there may be a difference between user-defined +GAppInfos which can be deleted, and system-wide ones which cannot. +See g_app_info_can_delete().

+

Virtual: do_delete

+
+

Parameters

+
+++++ + + + + + +

appinfo

a GAppInfo

 
+
+
+

Returns

+

TRUE if appinfo +has been deleted

+
+

Since: 2.20

+
+
+
+

g_app_info_reset_type_associations ()

+
void
+g_app_info_reset_type_associations (const char *content_type);
+

Removes all changes to the type associations done by +g_app_info_set_as_default_for_type(), +g_app_info_set_as_default_for_extension(), +g_app_info_add_supports_type() or +g_app_info_remove_supports_type().

+
+

Parameters

+
+++++ + + + + + +

content_type

a content type

 
+
+

Since: 2.20

+
+
+
+

g_app_info_set_as_default_for_type ()

+
gboolean
+g_app_info_set_as_default_for_type (GAppInfo *appinfo,
+                                    const char *content_type,
+                                    GError **error);
+

Sets the application as the default handler for a given type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

appinfo

a GAppInfo.

 

content_type

the content type.

 

error

a GError.

 
+
+
+

Returns

+

TRUE on success, FALSE on error.

+
+
+
+
+

g_app_info_set_as_default_for_extension ()

+
gboolean
+g_app_info_set_as_default_for_extension
+                               (GAppInfo *appinfo,
+                                const char *extension,
+                                GError **error);
+

Sets the application as the default handler for the given file extension.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

appinfo

a GAppInfo.

 

extension

a string containing the file extension (without the dot).

 

error

a GError.

 
+
+
+

Returns

+

TRUE on success, FALSE on error.

+
+
+
+
+

g_app_info_set_as_last_used_for_type ()

+
gboolean
+g_app_info_set_as_last_used_for_type (GAppInfo *appinfo,
+                                      const char *content_type,
+                                      GError **error);
+

Sets the application as the last used application for a given type. +This will make the application appear as first in the list returned +by g_app_info_get_recommended_for_type(), regardless of the default +application for that content type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

appinfo

a GAppInfo.

 

content_type

the content type.

 

error

a GError.

 
+
+
+

Returns

+

TRUE on success, FALSE on error.

+
+
+
+
+

g_app_info_add_supports_type ()

+
gboolean
+g_app_info_add_supports_type (GAppInfo *appinfo,
+                              const char *content_type,
+                              GError **error);
+

Adds a content type to the application information to indicate the +application is capable of opening files with the given content type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

appinfo

a GAppInfo.

 

content_type

a string.

 

error

a GError.

 
+
+
+

Returns

+

TRUE on success, FALSE on error.

+
+
+
+
+

g_app_info_can_remove_supports_type ()

+
gboolean
+g_app_info_can_remove_supports_type (GAppInfo *appinfo);
+

Checks if a supported content type can be removed from an application.

+
+

Parameters

+
+++++ + + + + + +

appinfo

a GAppInfo.

 
+
+
+

Returns

+

TRUE if it is possible to remove supported +content types from a given appinfo +, FALSE if not.

+
+
+
+
+

g_app_info_remove_supports_type ()

+
gboolean
+g_app_info_remove_supports_type (GAppInfo *appinfo,
+                                 const char *content_type,
+                                 GError **error);
+

Removes a supported type from an application, if possible.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

appinfo

a GAppInfo.

 

content_type

a string.

 

error

a GError.

 
+
+
+

Returns

+

TRUE on success, FALSE on error.

+
+
+
+
+

g_app_info_get_supported_types ()

+
const char **
+g_app_info_get_supported_types (GAppInfo *appinfo);
+

Retrieves the list of content types that app_info + claims to support. +If this information is not provided by the environment, this function +will return NULL. +This function does not take in consideration associations added with +g_app_info_add_supports_type(), but only those exported directly by +the application.

+
+

Parameters

+
+++++ + + + + + +

appinfo

a GAppInfo that can handle files

 
+
+
+

Returns

+

a list of content types.

+

[transfer none][array zero-terminated=1][element-type utf8]

+
+

Since: 2.34

+
+
+
+

g_app_info_get_all ()

+
GList *
+g_app_info_get_all (void);
+

Gets a list of all of the applications currently registered +on this system.

+

For desktop files, this includes applications that have +NoDisplay=true set or are excluded from display by means +of OnlyShowIn or NotShowIn. See g_app_info_should_show(). +The returned list does not include applications which have +the Hidden key set.

+
+

Returns

+

a newly allocated GList of references to GAppInfos.

+

[element-type GAppInfo][transfer full]

+
+
+
+
+

g_app_info_get_all_for_type ()

+
GList *
+g_app_info_get_all_for_type (const char *content_type);
+

Gets a list of all GAppInfos for a given content type, +including the recommended and fallback GAppInfos. See +g_app_info_get_recommended_for_type() and +g_app_info_get_fallback_for_type().

+
+

Parameters

+
+++++ + + + + + +

content_type

the content type to find a GAppInfo for

 
+
+
+

Returns

+

GList of GAppInfos +for given content_type +or NULL on error.

+

[element-type GAppInfo][transfer full]

+
+
+
+
+

g_app_info_get_default_for_type ()

+
GAppInfo *
+g_app_info_get_default_for_type (const char *content_type,
+                                 gboolean must_support_uris);
+

Gets the default GAppInfo for a given content type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

content_type

the content type to find a GAppInfo for

 

must_support_uris

if TRUE, the GAppInfo is expected to +support URIs

 
+
+
+

Returns

+

GAppInfo for given content_type +or +NULL on error.

+

[transfer full]

+
+
+
+
+

g_app_info_get_default_for_uri_scheme ()

+
GAppInfo *
+g_app_info_get_default_for_uri_scheme (const char *uri_scheme);
+

Gets the default application for handling URIs with +the given URI scheme. A URI scheme is the initial part +of the URI, up to but not including the ':', e.g. "http", +"ftp" or "sip".

+
+

Parameters

+
+++++ + + + + + +

uri_scheme

a string containing a URI scheme.

 
+
+
+

Returns

+

GAppInfo for given uri_scheme +or NULL on error.

+

[transfer full]

+
+
+
+
+

g_app_info_get_fallback_for_type ()

+
GList *
+g_app_info_get_fallback_for_type (const gchar *content_type);
+

Gets a list of fallback GAppInfos for a given content type, i.e. +those applications which claim to support the given content type +by MIME type subclassing and not directly.

+
+

Parameters

+
+++++ + + + + + +

content_type

the content type to find a GAppInfo for

 
+
+
+

Returns

+

GList of GAppInfos +for given content_type +or NULL on error.

+

[element-type GAppInfo][transfer full]

+
+

Since: 2.28

+
+
+
+

g_app_info_get_recommended_for_type ()

+
GList *
+g_app_info_get_recommended_for_type (const gchar *content_type);
+

Gets a list of recommended GAppInfos for a given content type, i.e. +those applications which claim to support the given content type exactly, +and not by MIME type subclassing. +Note that the first application of the list is the last used one, i.e. +the last one for which g_app_info_set_as_last_used_for_type() has been +called.

+
+

Parameters

+
+++++ + + + + + +

content_type

the content type to find a GAppInfo for

 
+
+
+

Returns

+

GList of GAppInfos +for given content_type +or NULL on error.

+

[element-type GAppInfo][transfer full]

+
+

Since: 2.28

+
+
+
+

g_app_info_launch_default_for_uri ()

+
gboolean
+g_app_info_launch_default_for_uri (const char *uri,
+                                   GAppLaunchContext *launch_context,
+                                   GError **error);
+

Utility function that launches the default application +registered to handle the specified uri. Synchronous I/O +is done on the uri to detect the type of the file if +required.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

uri

the uri to show

 

launch_context

an optional GAppLaunchContext.

[allow-none]

error

a GError.

 
+
+
+

Returns

+

TRUE on success, FALSE on error.

+
+
+
+
+

g_app_launch_context_setenv ()

+
void
+g_app_launch_context_setenv (GAppLaunchContext *context,
+                             const char *variable,
+                             const char *value);
+

Arranges for variable + to be set to value + in the child's +environment when context + is used to launch an application.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

context

a GAppLaunchContext

 

variable

the environment variable to set

 

value

the value for to set the variable to.

 
+
+

Since: 2.32

+
+
+
+

g_app_launch_context_unsetenv ()

+
void
+g_app_launch_context_unsetenv (GAppLaunchContext *context,
+                               const char *variable);
+

Arranges for variable + to be unset in the child's environment +when context + is used to launch an application.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GAppLaunchContext

 

variable

the environment variable to remove

 
+
+

Since: 2.32

+
+
+
+

g_app_launch_context_get_environment ()

+
char **
+g_app_launch_context_get_environment (GAppLaunchContext *context);
+

Gets the complete environment variable list to be passed to +the child process when context + is used to launch an application. +This is a NULL-terminated array of strings, where each string has +the form KEY=VALUE.

+
+

Parameters

+
+++++ + + + + + +

context

a GAppLaunchContext

 
+
+
+

Returns

+

the +child's environment.

+

[array zero-terminated=1][transfer full]

+
+

Since: 2.32

+
+
+
+

g_app_launch_context_get_display ()

+
char *
+g_app_launch_context_get_display (GAppLaunchContext *context,
+                                  GAppInfo *info,
+                                  GList *files);
+

Gets the display string for the context +. This is used to ensure new +applications are started on the same display as the launching +application, by setting the DISPLAY environment variable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

context

a GAppLaunchContext

 

info

a GAppInfo

 

files

a GList of GFile objects.

[element-type GFile]
+
+
+

Returns

+

a display string for the display.

+
+
+
+
+

g_app_launch_context_get_startup_notify_id ()

+
char *
+g_app_launch_context_get_startup_notify_id
+                               (GAppLaunchContext *context,
+                                GAppInfo *info,
+                                GList *files);
+

Initiates startup notification for the application and returns the +DESKTOP_STARTUP_ID for the launched operation, if supported.

+

Startup notification IDs are defined in the +[FreeDesktop.Org Startup Notifications standard](http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt").

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

context

a GAppLaunchContext

 

info

a GAppInfo

 

files

a GList of of GFile objects.

[element-type GFile]
+
+
+

Returns

+

a startup notification ID for the application, or NULL if +not supported.

+
+
+
+
+

g_app_launch_context_launch_failed ()

+
void
+g_app_launch_context_launch_failed (GAppLaunchContext *context,
+                                    const char *startup_notify_id);
+

Called when an application has failed to launch, so that it can cancel +the application startup notification started in g_app_launch_context_get_startup_notify_id().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GAppLaunchContext.

 

startup_notify_id

the startup notification id that was returned by g_app_launch_context_get_startup_notify_id().

 
+
+
+
+
+

g_app_launch_context_new ()

+
GAppLaunchContext *
+g_app_launch_context_new (void);
+

Creates a new application launch context. This is not normally used, +instead you instantiate a subclass of this, such as GdkAppLaunchContext.

+
+

Returns

+

a GAppLaunchContext.

+
+
+
+
+

Types and Values

+
+

enum GAppInfoCreateFlags

+

Flags used when creating a GAppInfo.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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

+
 
+
+
+
+
+

GAppInfo

+
typedef struct _GAppInfo GAppInfo;
+

Information about an installed application and methods to launch +it (with file arguments).

+
+
+
+

struct 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);
+};
+
+

Application Information interface, for operating system portability.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

The parent interface.

 

dup ()

Copies a GAppInfo.

 

equal ()

Checks two GAppInfos 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().

 

get_supported_types ()

Retrieves the list of content types that app_info +claims to support.

 
+
+
+
+
+

GAppLaunchContext

+
typedef struct _GAppLaunchContext 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.

+
+
+
+

Signal Details

+
+

The “launch-failed” signal

+
void
+user_function (GAppLaunchContext *context,
+               gchar             *startup_notify_id,
+               gpointer           user_data)
+

The ::launch-failed signal is emitted when a GAppInfo launch +fails. The startup notification id is provided, so that the launcher +can cancel the startup notification.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

context

the object emitting the signal

 

startup_notify_id

the startup notification id for the failed launch

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.36

+
+
+
+

The “launched” signal

+
void
+user_function (GAppLaunchContext *context,
+               GAppInfo          *info,
+               GVariant          *platform_data,
+               gpointer           user_data)
+

The ::launched signal is emitted when a GAppInfo is successfully +launched. The platform_data + is an GVariant dictionary mapping +strings to variants (ie a{sv}), which contains additional, +platform-specific data about this launch. On UNIX, at least the +"pid" and "startup-notification-id" keys will be present.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

context

the object emitting the signal

 

info

the GAppInfo that was just launched

 

platform_data

additional platform-specific data for this launch

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.36

+
+
+
+

See Also

+

GAppInfoMonitor

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GAppInfoMonitor.html b/docs/reference/gio/html/GAppInfoMonitor.html new file mode 100644 index 0000000..2032c33 --- /dev/null +++ b/docs/reference/gio/html/GAppInfoMonitor.html @@ -0,0 +1,147 @@ + + + + +GAppInfoMonitor: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GAppInfoMonitor

+

GAppInfoMonitor — Monitor application information for changes

+
+
+

Functions

+
++++ + + + + +
+GAppInfoMonitor * + +g_app_info_monitor_get () +
+
+
+

Signals

+
+++++ + + + + + +
voidchangedRun First
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GAppInfoMonitor
+
+
+
+

Description

+

GAppInfoMonitor is a very simple object used for monitoring the app +info database for changes (ie: newly installed or removed +applications).

+

Call g_app_info_monitor_get() to get a GAppInfoMonitor and connect +to the "changed" signal.

+

In the usual case, applications should try to make note of the change +(doing things like invalidating caches) but not act on it. In +particular, applications should avoid making calls to GAppInfo APIs +in response to the change signal, deferring these until the time that +the data is actually required. The exception to this case is when +application information is actually being displayed on the screen +(eg: during a search or when the list of all applications is shown). +The reason for this is that changes to the list of installed +applications often come in groups (like during system updates) and +rescanning the list on every change is pointless and expensive.

+
+
+

Functions

+
+

g_app_info_monitor_get ()

+
GAppInfoMonitor *
+g_app_info_monitor_get (void);
+

Gets the GAppInfoMonitor for the current thread-default main +context.

+

The GAppInfoMonitor will emit a "changed" signal in the +thread-default main context whenever the list of installed +applications (as reported by g_app_info_get_all()) may have changed.

+

You must only call g_object_unref() on the return value from under +the same main context as you created it.

+
+

Returns

+

a reference to a GAppInfoMonitor.

+

[transfer full]

+
+

Since: 2.40

+
+
+
+

Types and Values

+
+
+

Signal Details

+
+

The “changed” signal

+
void
+user_function (GAppInfoMonitor *arg0,
+               gpointer         user_data)
+

Signal emitted when the app info database for changes (ie: newly installed +or removed applications).

+
+

Parameters

+
+++++ + + + + + +

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run First

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GApplication.html b/docs/reference/gio/html/GApplication.html new file mode 100644 index 0000000..f7f7f33 --- /dev/null +++ b/docs/reference/gio/html/GApplication.html @@ -0,0 +1,2618 @@ + + + + +GApplication: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GApplication

+

GApplication — Core application class

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +g_application_id_is_valid () +
+GApplication * + +g_application_new () +
const gchar * + +g_application_get_application_id () +
+void + +g_application_set_application_id () +
+guint + +g_application_get_inactivity_timeout () +
+void + +g_application_set_inactivity_timeout () +
+GApplicationFlags + +g_application_get_flags () +
+void + +g_application_set_flags () +
const gchar * + +g_application_get_resource_base_path () +
+void + +g_application_set_resource_base_path () +
+GDBusConnection * + +g_application_get_dbus_connection () +
const gchar * + +g_application_get_dbus_object_path () +
+void + +g_application_set_action_group () +
+gboolean + +g_application_get_is_registered () +
+gboolean + +g_application_get_is_remote () +
+gboolean + +g_application_register () +
+void + +g_application_hold () +
+void + +g_application_release () +
+void + +g_application_quit () +
+void + +g_application_activate () +
+void + +g_application_open () +
+void + +g_application_send_notification () +
+void + +g_application_withdraw_notification () +
+int + +g_application_run () +
+void + +g_application_add_main_option_entries () +
+void + +g_application_add_main_option () +
+void + +g_application_add_option_group () +
+void + +g_application_set_default () +
+GApplication * + +g_application_get_default () +
+void + +g_application_mark_busy () +
+void + +g_application_unmark_busy () +
+gboolean + +g_application_get_is_busy () +
+void + +g_application_bind_busy_property () +
+void + +g_application_unbind_busy_property () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GActionGroup *action-groupWrite
+gchar *application-idRead / Write / Construct
GApplicationFlagsflagsRead / Write
guintinactivity-timeoutRead / Write
gbooleanis-busyRead
gbooleanis-registeredRead
gbooleanis-remoteRead
+gchar *resource-base-pathRead / Write
+
+
+

Signals

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
voidactivateRun Last
gintcommand-lineRun Last
ginthandle-local-optionsRun Last
voidopenRun Last
voidshutdownRun Last
voidstartupRun First
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
 GApplication
structGApplicationClass
enumGApplicationFlags
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GApplication
+
+
+
+

Implemented Interfaces

+

+GApplication implements + GActionGroup and GActionMap.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A GApplication is the foundation of an application. It wraps some +low-level platform-specific services and is intended to act as the +foundation for higher-level application classes such as +GtkApplication or MxApplication. In general, you should not use +this class outside of a higher level framework.

+

GApplication provides convenient life cycle management by maintaining +a "use count" for the primary application instance. The use count can +be changed using g_application_hold() and g_application_release(). If +it drops to zero, the application exits. Higher-level classes such as +GtkApplication employ the use count to ensure that the application +stays alive as long as it has any opened windows.

+

Another feature that GApplication (optionally) provides is process +uniqueness. Applications can make use of this functionality by +providing a unique application ID. If given, only one application +with this ID can be running at a time per session. The session +concept is platform-dependent, but corresponds roughly to a graphical +desktop login. When your application is launched again, its +arguments are passed through platform communication to the already +running program. The already running instance of the program is +called the "primary instance"; for non-unique applications this is +the always the current instance. On Linux, the D-Bus session bus +is used for communication.

+

The use of GApplication differs from some other commonly-used +uniqueness libraries (such as libunique) in important ways. The +application is not expected to manually register itself and check +if it is the primary instance. Instead, the main() function of a +GApplication should do very little more than instantiating the +application instance, possibly connecting signal handlers, then +calling g_application_run(). All checks for uniqueness are done +internally. If the application is the primary instance then the +startup signal is emitted and the mainloop runs. If the application +is not the primary instance then a signal is sent to the primary +instance and g_application_run() promptly returns. See the code +examples below.

+

If used, the expected form of an application identifier is very close +to that of of a +DBus bus name. +Examples include: "com.example.MyApp", "org.example.internal-apps.Calculator". +For details on valid application identifiers, see g_application_id_is_valid().

+

On Linux, the application identifier is claimed as a well-known bus name +on the user's session bus. This means that the uniqueness of your +application is scoped to the current session. It also means that your +application may provide additional services (through registration of other +object paths) at that bus name. The registration of these object paths +should be done with the shared GDBus session bus. Note that due to the +internal architecture of GDBus, method calls can be dispatched at any time +(even if a main loop is not running). For this reason, you must ensure that +any object paths that you wish to register are registered before GApplication +attempts to acquire the bus name of your application (which happens in +g_application_register()). Unfortunately, this means that you cannot use +g_application_get_is_remote() to decide if you want to register object paths.

+

GApplication also implements the GActionGroup and GActionMap +interfaces and lets you easily export actions by adding them with +g_action_map_add_action(). When invoking an action by calling +g_action_group_activate_action() on the application, it is always +invoked in the primary instance. The actions are also exported on +the session bus, and GIO provides the GDBusActionGroup wrapper to +conveniently access them remotely. GIO provides a GDBusMenuModel wrapper +for remote access to exported GMenuModels.

+

There is a number of different entry points into a GApplication:

+
    +
  • via 'Activate' (i.e. just starting the application)

  • +
  • via 'Open' (i.e. opening some files)

  • +
  • by handling a command-line

  • +
  • via activating an action

  • +
+

The “startup” signal lets you handle the application +initialization for all of these in a single place.

+

Regardless of which of these entry points is used to start the +application, GApplication passes some "platform data from the +launching instance to the primary instance, in the form of a +GVariant dictionary mapping strings to variants. To use platform +data, override the before_emit + or after_emit + virtual functions +in your GApplication subclass. When dealing with +GApplicationCommandLine objects, the platform data is +directly available via g_application_command_line_get_cwd(), +g_application_command_line_get_environ() and +g_application_command_line_get_platform_data().

+

As the name indicates, the platform data may vary depending on the +operating system, but it always includes the current directory (key +"cwd"), and optionally the environment (ie the set of environment +variables and their values) of the calling process (key "environ"). +The environment is only added to the platform data if the +G_APPLICATION_SEND_ENVIRONMENT flag is set. GApplication subclasses +can add their own platform data by overriding the add_platform_data + +virtual function. For instance, GtkApplication adds startup notification +data in this way.

+

To parse commandline arguments you may handle the +“command-line” signal or override the local_command_line() +vfunc, to parse them in either the primary instance or the local instance, +respectively.

+

For an example of opening files with a GApplication, see +gapplication-example-open.c.

+

For an example of using actions with GApplication, see +gapplication-example-actions.c.

+

For an example of using extra D-Bus hooks with GApplication, see +gapplication-example-dbushooks.c.

+
+
+

Functions

+
+

g_application_id_is_valid ()

+
gboolean
+g_application_id_is_valid (const gchar *application_id);
+

Checks if application_id + is a valid application identifier.

+

A valid ID is required for calls to g_application_new() and +g_application_set_application_id().

+

For convenience, the restrictions on application identifiers are +reproduced here:

+
    +
  • Application identifiers must contain only the ASCII characters +"A-Z[0-9]_-." and must not begin with a digit.

  • +
  • Application identifiers must contain at least one '.' (period) +character (and thus at least three elements).

  • +
  • Application identifiers must not begin or end with a '.' (period) +character.

  • +
  • Application identifiers must not contain consecutive '.' (period) +characters.

  • +
  • Application identifiers must not exceed 255 characters.

  • +
+
+

Parameters

+
+++++ + + + + + +

application_id

a potential application identifier

 
+
+
+

Returns

+

TRUE if application_id +is valid

+
+
+
+
+

g_application_new ()

+
GApplication *
+g_application_new (const gchar *application_id,
+                   GApplicationFlags flags);
+

Creates a new GApplication instance.

+

If non-NULL, the application id must be valid. See +g_application_id_is_valid().

+

If no application ID is given then some features of GApplication +(most notably application uniqueness) will be disabled.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

application_id

the application id.

[allow-none]

flags

the application flags

 
+
+
+

Returns

+

a new GApplication instance

+
+
+
+
+

g_application_get_application_id ()

+
const gchar *
+g_application_get_application_id (GApplication *application);
+

Gets the unique identifier for application +.

+
+

Parameters

+
+++++ + + + + + +

application

a GApplication

 
+
+
+

Returns

+

the identifier for application +, owned by application +

+
+

Since: 2.28

+
+
+
+

g_application_set_application_id ()

+
void
+g_application_set_application_id (GApplication *application,
+                                  const gchar *application_id);
+

Sets the unique identifier for application +.

+

The application id can only be modified if application + has not yet +been registered.

+

If non-NULL, the application id must be valid. See +g_application_id_is_valid().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

application

a GApplication

 

application_id

the identifier for application +.

[allow-none]
+
+

Since: 2.28

+
+
+
+

g_application_get_inactivity_timeout ()

+
guint
+g_application_get_inactivity_timeout (GApplication *application);
+

Gets the current inactivity timeout for the application.

+

This is the amount of time (in milliseconds) after the last call to +g_application_release() before the application stops running.

+
+

Parameters

+
+++++ + + + + + +

application

a GApplication

 
+
+
+

Returns

+

the timeout, in milliseconds

+
+

Since: 2.28

+
+
+
+

g_application_set_inactivity_timeout ()

+
void
+g_application_set_inactivity_timeout (GApplication *application,
+                                      guint inactivity_timeout);
+

Sets the current inactivity timeout for the application.

+

This is the amount of time (in milliseconds) after the last call to +g_application_release() before the application stops running.

+

This call has no side effects of its own. The value set here is only +used for next time g_application_release() drops the use count to +zero. Any timeouts currently in progress are not impacted.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

application

a GApplication

 

inactivity_timeout

the timeout, in milliseconds

 
+
+

Since: 2.28

+
+
+
+

g_application_get_flags ()

+
GApplicationFlags
+g_application_get_flags (GApplication *application);
+

Gets the flags for application +.

+

See GApplicationFlags.

+
+

Parameters

+
+++++ + + + + + +

application

a GApplication

 
+
+
+

Returns

+

the flags for application +

+
+

Since: 2.28

+
+
+
+

g_application_set_flags ()

+
void
+g_application_set_flags (GApplication *application,
+                         GApplicationFlags flags);
+

Sets the flags for application +.

+

The flags can only be modified if application + has not yet been +registered.

+

See GApplicationFlags.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

application

a GApplication

 

flags

the flags for application +

 
+
+

Since: 2.28

+
+
+
+

g_application_get_resource_base_path ()

+
const gchar *
+g_application_get_resource_base_path (GApplication *application);
+

Gets the resource base path of application +.

+

See g_application_set_resource_base_path() for more information.

+
+

Parameters

+
+++++ + + + + + +

application

a GApplication

 
+
+
+

Returns

+

the base resource path, if one is set.

+

[nullable]

+
+

Since: 2.42

+
+
+
+

g_application_set_resource_base_path ()

+
void
+g_application_set_resource_base_path (GApplication *application,
+                                      const gchar *resource_path);
+

Sets (or unsets) the base resource path of application +.

+

The path is used to automatically load various application +resources such as menu layouts and action descriptions. +The various types of resources will be found at fixed names relative +to the given base path.

+

By default, the resource base path is determined from the application +ID by prefixing '/' and replacing each '.' with '/'. This is done at +the time that the GApplication object is constructed. Changes to +the application ID after that point will not have an impact on the +resource base path.

+

As an example, if the application has an ID of "org.example.app" then +the default resource base path will be "/org/example/app". If this +is a GtkApplication (and you have not manually changed the path) +then Gtk will then search for the menus of the application at +"/org/example/app/gtk/menus.ui".

+

See GResource for more information about adding resources to your +application.

+

You can disable automatic resource loading functionality by setting +the path to NULL.

+

Changing the resource base path once the application is running is +not recommended. The point at which the resource path is consulted +for forming paths for various purposes is unspecified. When writing +a sub-class of GApplication you should either set the +“resource-base-path” property at construction time, or call +this function during the instance initialization. Alternatively, you +can call this function in the GApplicationClass.startup virtual function, +before chaining up to the parent implementation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

application

a GApplication

 

resource_path

the resource path to use.

[nullable]
+
+

Since: 2.42

+
+
+
+

g_application_get_dbus_connection ()

+
GDBusConnection *
+g_application_get_dbus_connection (GApplication *application);
+

Gets the GDBusConnection being used by the application, or NULL.

+

If GApplication is using its D-Bus backend then this function will +return the GDBusConnection being used for uniqueness and +communication with the desktop environment and other instances of the +application.

+

If GApplication is not using D-Bus then this function will return +NULL. This includes the situation where the D-Bus backend would +normally be in use but we were unable to connect to the bus.

+

This function must not be called before the application has been +registered. See g_application_get_is_registered().

+
+

Parameters

+
+++++ + + + + + +

application

a GApplication

 
+
+
+

Returns

+

a GDBusConnection, or NULL.

+

[transfer none]

+
+

Since: 2.34

+
+
+
+

g_application_get_dbus_object_path ()

+
const gchar *
+g_application_get_dbus_object_path (GApplication *application);
+

Gets the D-Bus object path being used by the application, or NULL.

+

If GApplication is using its D-Bus backend then this function will +return the D-Bus object path that GApplication is using. If the +application is the primary instance then there is an object published +at this path. If the application is not the primary instance then +the result of this function is undefined.

+

If GApplication is not using D-Bus then this function will return +NULL. This includes the situation where the D-Bus backend would +normally be in use but we were unable to connect to the bus.

+

This function must not be called before the application has been +registered. See g_application_get_is_registered().

+
+

Parameters

+
+++++ + + + + + +

application

a GApplication

 
+
+
+

Returns

+

the object path, or NULL

+
+

Since: 2.34

+
+
+
+

g_application_set_action_group ()

+
void
+g_application_set_action_group (GApplication *application,
+                                GActionGroup *action_group);
+
+

g_application_set_action_group has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use the GActionMap interface instead. Never ever +mix use of this API with use of GActionMap on the same application + +or things will go very badly wrong. This function is known to +introduce buggy behaviour (ie: signals not emitted on changes to the +action group), so you should really use GActionMap instead.

+
+

This used to be how actions were associated with a GApplication. +Now there is GActionMap for that.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

application

a GApplication

 

action_group

a GActionGroup, or NULL.

[allow-none]
+
+

Since: 2.28

+
+
+
+

g_application_get_is_registered ()

+
gboolean
+g_application_get_is_registered (GApplication *application);
+

Checks if application + is registered.

+

An application is registered if g_application_register() has been +successfully called.

+
+

Parameters

+
+++++ + + + + + +

application

a GApplication

 
+
+
+

Returns

+

TRUE if application +is registered

+
+

Since: 2.28

+
+
+
+

g_application_get_is_remote ()

+
gboolean
+g_application_get_is_remote (GApplication *application);
+

Checks if application + is remote.

+

If application + is remote then it means that another instance of +application already exists (the 'primary' instance). Calls to +perform actions on application + will result in the actions being +performed by the primary instance.

+

The value of this property cannot be accessed before +g_application_register() has been called. See +g_application_get_is_registered().

+
+

Parameters

+
+++++ + + + + + +

application

a GApplication

 
+
+
+

Returns

+

TRUE if application +is remote

+
+

Since: 2.28

+
+
+
+

g_application_register ()

+
gboolean
+g_application_register (GApplication *application,
+                        GCancellable *cancellable,
+                        GError **error);
+

Attempts registration of the application.

+

This is the point at which the application discovers if it is the +primary instance or merely acting as a remote for an already-existing +primary instance. This is implemented by attempting to acquire the +application identifier as a unique bus name on the session bus using +GDBus.

+

If there is no application ID or if G_APPLICATION_NON_UNIQUE was +given, then this process will always become the primary instance.

+

Due to the internal architecture of GDBus, method calls can be +dispatched at any time (even if a main loop is not running). For +this reason, you must ensure that any object paths that you wish to +register are registered before calling this function.

+

If the application has already been registered then TRUE is +returned with no work performed.

+

The “startup” signal is emitted if registration succeeds +and application + is the primary instance (including the non-unique +case).

+

In the event of an error (such as cancellable + being cancelled, or a +failure to connect to the session bus), FALSE is returned and error + +is set appropriately.

+

Note: the return value of this function is not an indicator that this +instance is or is not the primary instance of the application. See +g_application_get_is_remote() for that.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

application

a GApplication

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

a pointer to a NULL GError, or NULL

 
+
+
+

Returns

+

TRUE if registration succeeded

+
+

Since: 2.28

+
+
+
+

g_application_hold ()

+
void
+g_application_hold (GApplication *application);
+

Increases the use count of application +.

+

Use this function to indicate that the application has a reason to +continue to run. For example, g_application_hold() is called by GTK+ +when a toplevel window is on the screen.

+

To cancel the hold, call g_application_release().

+
+

Parameters

+
+++++ + + + + + +

application

a GApplication

 
+
+
+
+
+

g_application_release ()

+
void
+g_application_release (GApplication *application);
+

Decrease the use count of application +.

+

When the use count reaches zero, the application will stop running.

+

Never call this function except to cancel the effect of a previous +call to g_application_hold().

+
+

Parameters

+
+++++ + + + + + +

application

a GApplication

 
+
+
+
+
+

g_application_quit ()

+
void
+g_application_quit (GApplication *application);
+

Immediately quits the application.

+

Upon return to the mainloop, g_application_run() will return, +calling only the 'shutdown' function before doing so.

+

The hold count is ignored.

+

The result of calling g_application_run() again after it returns is +unspecified.

+
+

Parameters

+
+++++ + + + + + +

application

a GApplication

 
+
+

Since: 2.32

+
+
+
+

g_application_activate ()

+
void
+g_application_activate (GApplication *application);
+

Activates the application.

+

In essence, this results in the “activate” signal being +emitted in the primary instance.

+

The application must be registered before calling this function.

+
+

Parameters

+
+++++ + + + + + +

application

a GApplication

 
+
+

Since: 2.28

+
+
+
+

g_application_open ()

+
void
+g_application_open (GApplication *application,
+                    GFile **files,
+                    gint n_files,
+                    const gchar *hint);
+

Opens the given files.

+

In essence, this results in the “open” signal being emitted +in the primary instance.

+

n_files + must be greater than zero.

+

hint + is simply passed through to the ::open signal. It is +intended to be used by applications that have multiple modes for +opening files (eg: "view" vs "edit", etc). Unless you have a need +for this functionality, you should use "".

+

The application must be registered before calling this function +and it must have the G_APPLICATION_HANDLES_OPEN flag set.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

application

a GApplication

 

files

an array of GFiles to open.

[array length=n_files]

n_files

the length of the files +array

 

hint

a hint (or ""), but never NULL

 
+
+

Since: 2.28

+
+
+
+

g_application_send_notification ()

+
void
+g_application_send_notification (GApplication *application,
+                                 const gchar *id,
+                                 GNotification *notification);
+

Sends a notification on behalf of application + to the desktop shell. +There is no guarantee that the notification is displayed immediately, +or even at all.

+

Notifications may persist after the application exits. It will be +D-Bus-activated when the notification or one of its actions is +activated.

+

Modifying notification + after this call has no effect. However, the +object can be reused for a later call to this function.

+

id + may be any string that uniquely identifies the event for the +application. It does not need to be in any special format. For +example, "new-message" might be appropriate for a notification about +new messages.

+

If a previous notification was sent with the same id +, it will be +replaced with notification + and shown again as if it was a new +notification. This works even for notifications sent from a previous +execution of the application, as long as id + is the same string.

+

id + may be NULL, but it is impossible to replace or withdraw +notifications without an id.

+

If notification + is no longer relevant, it can be withdrawn with +g_application_withdraw_notification().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

application

a GApplication

 

id

id of the notification, or NULL.

[allow-none]

notification

the GNotification to send

 
+
+

Since: 2.40

+
+
+
+

g_application_withdraw_notification ()

+
void
+g_application_withdraw_notification (GApplication *application,
+                                     const gchar *id);
+

Withdraws a notification that was sent with +g_application_send_notification().

+

This call does nothing if a notification with id + doesn't exist or +the notification was never sent.

+

This function works even for notifications sent in previous +executions of this application, as long id + is the same as it was for +the sent notification.

+

Note that notifications are dismissed when the user clicks on one +of the buttons in a notification or triggers its default action, so +there is no need to explicitly withdraw the notification in that case.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

application

a GApplication

 

id

id of a previously sent notification

 
+
+

Since: 2.40

+
+
+
+

g_application_run ()

+
int
+g_application_run (GApplication *application,
+                   int argc,
+                   char **argv);
+

Runs the application.

+

This function is intended to be run from main() and its return value +is intended to be returned by main(). Although you are expected to pass +the argc +, argv + parameters from main() to this function, it is possible +to pass NULL if argv + is not available or commandline handling is not +required. Note that on Windows, argc + and argv + are ignored, and +g_win32_get_command_line() is called internally (for proper support +of Unicode commandline arguments).

+

GApplication will attempt to parse the commandline arguments. You +can add commandline flags to the list of recognised options by way of +g_application_add_main_option_entries(). After this, the +“handle-local-options” signal is emitted, from which the +application can inspect the values of its GOptionEntrys.

+

“handle-local-options” is a good place to handle options +such as --version, where an immediate reply from the local process is +desired (instead of communicating with an already-running instance). +A “handle-local-options” handler can stop further processing +by returning a non-negative value, which then becomes the exit status of +the process.

+

What happens next depends on the flags: if +G_APPLICATION_HANDLES_COMMAND_LINE was specified then the remaining +commandline arguments are sent to the primary instance, where a +“command-line” signal is emitted. Otherwise, the +remaining commandline arguments are assumed to be a list of files. +If there are no files listed, the application is activated via the +“activate” signal. If there are one or more files, and +G_APPLICATION_HANDLES_OPEN was specified then the files are opened +via the “open” signal.

+

If you are interested in doing more complicated local handling of the +commandline then you should implement your own GApplication subclass +and override local_command_line(). In this case, you most likely want +to return TRUE from your local_command_line() implementation to +suppress the default handling. See +gapplication-example-cmdline2.c +for an example.

+

If, after the above is done, the use count of the application is zero +then the exit status is returned immediately. If the use count is +non-zero then the default main context is iterated until the use count +falls to zero, at which point 0 is returned.

+

If the G_APPLICATION_IS_SERVICE flag is set, then the service will +run for as much as 10 seconds with a use count of zero while waiting +for the message that caused the activation to arrive. After that, +if the use count falls to zero the application will exit immediately, +except in the case that g_application_set_inactivity_timeout() is in +use.

+

This function sets the prgname (g_set_prgname()), if not already set, +to the basename of argv[0].

+

Much like g_main_loop_run(), this function will acquire the main context +for the duration that the application is running.

+

Since 2.40, applications that are not explicitly flagged as services +or launchers (ie: neither G_APPLICATION_IS_SERVICE or +G_APPLICATION_IS_LAUNCHER are given as flags) will check (from the +default handler for local_command_line) if "--gapplication-service" +was given in the command line. If this flag is present then normal +commandline processing is interrupted and the +G_APPLICATION_IS_SERVICE flag is set. This provides a "compromise" +solution whereby running an application directly from the commandline +will invoke it in the normal way (which can be useful for debugging) +while still allowing applications to be D-Bus activated in service +mode. The D-Bus service file should invoke the executable with +"--gapplication-service" as the sole commandline argument. This +approach is suitable for use by most graphical applications but +should not be used from applications like editors that need precise +control over when processes invoked via the commandline will exit and +what their exit status will be.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

application

a GApplication

 

argc

the argc from main() (or 0 if argv +is NULL)

 

argv

the argv from main(), or NULL.

[array length=argc][allow-none]
+
+
+

Returns

+

the exit status

+
+

Since: 2.28

+
+
+
+

g_application_add_main_option_entries ()

+
void
+g_application_add_main_option_entries (GApplication *application,
+                                       const GOptionEntry *entries);
+

Adds main option entries to be handled by application +.

+

This function is comparable to g_option_context_add_main_entries().

+

After the commandline arguments are parsed, the +“handle-local-options” signal will be emitted. At this +point, the application can inspect the values pointed to by arg_data + +in the given GOptionEntrys.

+

Unlike GOptionContext, GApplication supports giving a NULL +arg_data + for a non-callback GOptionEntry. This results in the +argument in question being packed into a GVariantDict which is also +passed to “handle-local-options”, where it can be +inspected and modified. If G_APPLICATION_HANDLES_COMMAND_LINE is +set, then the resulting dictionary is sent to the primary instance, +where g_application_command_line_get_options_dict() will return it. +This "packing" is done according to the type of the argument -- +booleans for normal flags, strings for strings, bytestrings for +filenames, etc. The packing only occurs if the flag is given (ie: we +do not pack a "false" GVariant in the case that a flag is missing).

+

In general, it is recommended that all commandline arguments are +parsed locally. The options dictionary should then be used to +transmit the result of the parsing to the primary instance, where +g_variant_dict_lookup() can be used. For local options, it is +possible to either use arg_data + in the usual way, or to consult (and +potentially remove) the option from the options dictionary.

+

This function is new in GLib 2.40. Before then, the only real choice +was to send all of the commandline arguments (options and all) to the +primary instance for handling. GApplication ignored them completely +on the local side. Calling this function "opts in" to the new +behaviour, and in particular, means that unrecognised options will be +treated as errors. Unrecognised options have never been ignored when +G_APPLICATION_HANDLES_COMMAND_LINE is unset.

+

If “handle-local-options” needs to see the list of +filenames, then the use of G_OPTION_REMAINING is recommended. If +arg_data + is NULL then G_OPTION_REMAINING can be used as a key into +the options dictionary. If you do use G_OPTION_REMAINING then you +need to handle these arguments for yourself because once they are +consumed, they will no longer be visible to the default handling +(which treats them as filenames to be opened).

+

It is important to use the proper GVariant format when retrieving +the options with g_variant_dict_lookup():

+
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

application

a GApplication

 

entries

(array zero-terminated=1) (element-type GOptionEntry) a +NULL-terminated list of GOptionEntrys

 
+
+

Since: 2.40

+
+
+
+

g_application_add_main_option ()

+
void
+g_application_add_main_option (GApplication *application,
+                               const char *long_name,
+                               char short_name,
+                               GOptionFlags flags,
+                               GOptionArg arg,
+                               const char *description,
+                               const char *arg_description);
+

Add an option to be handled by application +.

+

Calling this function is the equivalent of calling +g_application_add_main_option_entries() with a single GOptionEntry +that has its arg_data member set to NULL.

+

The parsed arguments will be packed into a GVariantDict which +is passed to “handle-local-options”. If +G_APPLICATION_HANDLES_COMMAND_LINE is set, then it will also +be sent to the primary instance. See +g_application_add_main_option_entries() for more details.

+

See GOptionEntry for more documentation of the arguments.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

application

the GApplication

 

long_name

the long name of an option used to specify it in a commandline

 

short_name

the short name of an option

 

flags

flags from GOptionFlags

 

arg

the type of the option, as a GOptionArg

 

description

the description for the option in --help output

 

arg_description

the placeholder to use for the extra argument +parsed by the option in --help output.

[nullable]
+
+

Since: 2.42

+
+
+
+

g_application_add_option_group ()

+
void
+g_application_add_option_group (GApplication *application,
+                                GOptionGroup *group);
+

Adds a GOptionGroup to the commandline handling of application +.

+

This function is comparable to g_option_context_add_group().

+

Unlike g_application_add_main_option_entries(), this function does +not deal with NULL arg_data + and never transmits options to the +primary instance.

+

The reason for that is because, by the time the options arrive at the +primary instance, it is typically too late to do anything with them. +Taking the GTK option group as an example: GTK will already have been +initialised by the time the “command-line” handler runs. +In the case that this is not the first-running instance of the +application, the existing instance may already have been running for +a very long time.

+

This means that the options from GOptionGroup are only really usable +in the case that the instance of the application being run is the +first instance. Passing options like --display= or --gdk-debug= +on future runs will have no effect on the existing primary instance.

+

Calling this function will cause the options in the supplied option +group to be parsed, but it does not cause you to be "opted in" to the +new functionality whereby unrecognised options are rejected even if +G_APPLICATION_HANDLES_COMMAND_LINE was given.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

application

the GApplication

 

group

a GOptionGroup.

[transfer full]
+
+

Since: 2.40

+
+
+
+

g_application_set_default ()

+
void
+g_application_set_default (GApplication *application);
+

Sets or unsets the default application for the process, as returned +by g_application_get_default().

+

This function does not take its own reference on application +. If +application + is destroyed then the default application will revert +back to NULL.

+
+

Parameters

+
+++++ + + + + + +

application

the application to set as default, or NULL.

[allow-none]
+
+

Since: 2.32

+
+
+
+

g_application_get_default ()

+
GApplication *
+g_application_get_default (void);
+

Returns the default GApplication instance for this process.

+

Normally there is only one GApplication per process and it becomes +the default when it is created. You can exercise more control over +this by using g_application_set_default().

+

If there is no default application then NULL is returned.

+
+

Returns

+

the default application for this process, or NULL.

+

[transfer none]

+
+

Since: 2.32

+
+
+
+

g_application_mark_busy ()

+
void
+g_application_mark_busy (GApplication *application);
+

Increases the busy count of application +.

+

Use this function to indicate that the application is busy, for instance +while a long running operation is pending.

+

The busy state will be exposed to other processes, so a session shell will +use that information to indicate the state to the user (e.g. with a +spinner).

+

To cancel the busy indication, use g_application_unmark_busy().

+
+

Parameters

+
+++++ + + + + + +

application

a GApplication

 
+
+

Since: 2.38

+
+
+
+

g_application_unmark_busy ()

+
void
+g_application_unmark_busy (GApplication *application);
+

Decreases the busy count of application +.

+

When the busy count reaches zero, the new state will be propagated +to other processes.

+

This function must only be called to cancel the effect of a previous +call to g_application_mark_busy().

+
+

Parameters

+
+++++ + + + + + +

application

a GApplication

 
+
+

Since: 2.38

+
+
+
+

g_application_get_is_busy ()

+
gboolean
+g_application_get_is_busy (GApplication *application);
+

Gets the application's current busy state, as set through +g_application_mark_busy() or g_application_bind_busy_property().

+
+

Parameters

+
+++++ + + + + + +

application

a GApplication

 
+
+
+

Returns

+

TRUE if application +is currenty marked as busy

+
+

Since: 2.44

+
+
+
+

g_application_bind_busy_property ()

+
void
+g_application_bind_busy_property (GApplication *application,
+                                  gpointer object,
+                                  const gchar *property);
+

Marks application + as busy (see g_application_mark_busy()) while +property + on object + is TRUE.

+

The binding holds a reference to application + while it is active, but +not to object +. Instead, the binding is destroyed when object + is +finalized.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

application

a GApplication

 

object

a GObject.

[type GObject.Object]

property

the name of a boolean property of object +

 
+
+

Since: 2.44

+
+
+
+

g_application_unbind_busy_property ()

+
void
+g_application_unbind_busy_property (GApplication *application,
+                                    gpointer object,
+                                    const gchar *property);
+

Destroys a binding between property + and the busy state of +application + that was previously created with +g_application_bind_busy_property().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

application

a GApplication

 

object

a GObject.

[type GObject.Object]

property

the name of a boolean property of object +

 
+
+

Since: 2.44

+
+
+
+

Types and Values

+
+

GApplication

+
typedef struct _GApplication GApplication;
+

GApplication is an opaque data structure and can only be accessed +using the following functions.

+

Since: 2.28

+
+
+
+

struct GApplicationClass

+
struct GApplicationClass {
+  /* 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);
+  gint                      (* handle_local_options)(GApplication              *application,
+                                                     GVariantDict              *options);
+};
+
+

Virtual function table for GApplication.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

startup ()

invoked on the primary instance immediately after registration

 

activate ()

invoked on the primary instance when an activation occurs

 

open ()

invoked on the primary instance when there are files to open

 

command_line ()

invoked on the primary instance when a command-line is +not handled locally

 

local_command_line ()

invoked (locally) when the process has been invoked +via commandline execution (as opposed to, say, D-Bus activation - which +is not currently supported by GApplication). The virtual function has +the chance to inspect (and possibly replace) the list of command line +arguments. See g_application_run() for more information.

 

before_emit ()

invoked on the primary instance before 'activate', 'open', +'command-line' or any action invocation, gets the 'platform data' from +the calling instance

 

after_emit ()

invoked on the primary instance after 'activate', 'open', +'command-line' or any action invocation, gets the 'platform data' from +the calling instance

 

add_platform_data ()

invoked (locally) to add 'platform data' to be sent to +the primary instance when activating, opening or invoking actions

 

quit_mainloop ()

Used to be invoked on the primary instance when the use +count of the application drops to zero (and after any inactivity +timeout, if requested). Not used anymore since 2.32

 

run_mainloop ()

Used to be invoked on the primary instance from +g_application_run() if the use-count is non-zero. Since 2.32, +GApplication is iterating the main context directly and is not +using run_mainloop +anymore

 

shutdown ()

invoked only on the registered primary instance immediately +after the main loop terminates

 

dbus_register ()

invoked locally during registration, if the application is +using its D-Bus backend. You can use this to export extra objects on the +bus, that need to exist before the application tries to own the bus name. +The function is passed the GDBusConnection to to session bus, and the +object path that GApplication will use to export is D-Bus API. +If this function returns TRUE, registration will proceed; otherwise +registration will abort. Since: 2.34

 

dbus_unregister ()

invoked locally during unregistration, if the application +is using its D-Bus backend. Use this to undo anything done by the +dbus_register +vfunc. Since: 2.34

 

handle_local_options ()

invoked locally after the parsing of the commandline +options has occurred.

 
+
+

Since: 2.28

+
+
+
+

enum GApplicationFlags

+

Flags used to define the behaviour of a GApplication.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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 GIT_COMMITTER_NAME environment variable + when editing a git commit message. The environment is available + to the “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.

+
 

G_APPLICATION_CAN_OVERRIDE_APP_ID

+

Allow users to override the + application ID from the command line with --gapplication-app-id. + Since: 2.48

+
 
+
+

Since: 2.28

+
+
+
+

Property Details

+
+

The “action-group” property

+
  “action-group”             GActionGroup *
+

The group of actions that the application exports.

+

Flags: Write

+
+
+
+

The “application-id” property

+
  “application-id”           gchar *
+

The unique identifier for the application.

+

Flags: Read / Write / Construct

+

Default value: NULL

+
+
+
+

The “flags” property

+
  “flags”                    GApplicationFlags
+

Flags specifying the behaviour of the application.

+

Flags: Read / Write

+
+
+
+

The “inactivity-timeout” property

+
  “inactivity-timeout”       guint
+

Time (ms) to stay alive after becoming idle.

+

Flags: Read / Write

+

Default value: 0

+
+
+
+

The “is-busy” property

+
  “is-busy”                  gboolean
+

Whether the application is currently marked as busy through +g_application_mark_busy() or g_application_bind_busy_property().

+

Flags: Read

+

Default value: FALSE

+

Since: 2.44

+
+
+
+

The “is-registered” property

+
  “is-registered”            gboolean
+

If g_application_register() has been called.

+

Flags: Read

+

Default value: FALSE

+
+
+
+

The “is-remote” property

+
  “is-remote”                gboolean
+

If this application instance is remote.

+

Flags: Read

+

Default value: FALSE

+
+
+
+

The “resource-base-path” property

+
  “resource-base-path”       gchar *
+

The base resource path for the application.

+

Flags: Read / Write

+

Default value: NULL

+
+
+
+

Signal Details

+
+

The “activate” signal

+
void
+user_function (GApplication *application,
+               gpointer      user_data)
+

The ::activate signal is emitted on the primary instance when an +activation occurs. See g_application_activate().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

application

the application

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “command-line” signal

+
gint
+user_function (GApplication            *application,
+               GApplicationCommandLine *command_line,
+               gpointer                 user_data)
+

The ::command-line signal is emitted on the primary instance when +a commandline is not handled locally. See g_application_run() and +the GApplicationCommandLine documentation for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

application

the application

 

command_line

a GApplicationCommandLine representing the +passed commandline

 

user_data

user data set when the signal handler was connected.

 
+
+
+

Returns

+

An integer that is set as the exit status for the calling +process. See g_application_command_line_set_exit_status().

+
+

Flags: Run Last

+
+
+
+

The “handle-local-options” signal

+
gint
+user_function (GApplication *application,
+               GVariantDict *options,
+               gpointer      user_data)
+

The ::handle-local-options signal is emitted on the local instance +after the parsing of the commandline options has occurred.

+

You can add options to be recognised during commandline option +parsing using g_application_add_main_option_entries() and +g_application_add_option_group().

+

Signal handlers can inspect options + (along with values pointed to +from the arg_data + of an installed GOptionEntrys) in order to +decide to perform certain actions, including direct local handling +(which may be useful for options like --version).

+

In the event that the application is marked +G_APPLICATION_HANDLES_COMMAND_LINE the "normal processing" will +send the options + dictionary to the primary instance where it can be +read with g_application_command_line_get_options_dict(). The signal +handler can modify the dictionary before returning, and the +modified dictionary will be sent.

+

In the event that G_APPLICATION_HANDLES_COMMAND_LINE is not set, +"normal processing" will treat the remaining uncollected command +line arguments as filenames or URIs. If there are no arguments, +the application is activated by g_application_activate(). One or +more arguments results in a call to g_application_open().

+

If you want to handle the local commandline arguments for yourself +by converting them to calls to g_application_open() or +g_action_group_activate_action() then you must be sure to register +the application first. You should probably not call +g_application_activate() for yourself, however: just return -1 and +allow the default handler to do it for you. This will ensure that +the --gapplication-service switch works properly (i.e. no activation +in that case).

+

Note that this signal is emitted from the default implementation of +local_command_line(). If you override that function and don't +chain up then this signal will never be emitted.

+

You can override local_command_line() if you need more powerful +capabilities than what is provided here, but this should not +normally be required.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

application

the application

 

options

the options dictionary

 

user_data

user data set when the signal handler was connected.

 
+
+
+

Returns

+

an exit code. If you have handled your options and want +to exit the process, return a non-negative option, 0 for success, +and a positive value for failure. To continue, return -1 to let +the default option processing continue.

+
+

Flags: Run Last

+

Since: 2.40

+
+
+
+

The “open” signal

+
void
+user_function (GApplication *application,
+               gpointer      files,
+               gint          n_files,
+               gchar        *hint,
+               gpointer      user_data)
+

The ::open signal is emitted on the primary instance when there are +files to open. See g_application_open() for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

application

the application

 

files

an array of GFiles.

[array length=n_files][element-type GFile]

n_files

the length of files +

 

hint

a hint provided by the calling instance

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “shutdown” signal

+
void
+user_function (GApplication *application,
+               gpointer      user_data)
+

The ::shutdown signal is emitted only on the registered primary instance +immediately after the main loop terminates.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

application

the application

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “startup” signal

+
void
+user_function (GApplication *application,
+               gpointer      user_data)
+

The ::startup signal is emitted on the primary instance immediately +after registration. See g_application_register().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

application

the application

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run First

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GApplicationCommandLine.html b/docs/reference/gio/html/GApplicationCommandLine.html new file mode 100644 index 0000000..2a5c1c0 --- /dev/null +++ b/docs/reference/gio/html/GApplicationCommandLine.html @@ -0,0 +1,1051 @@ + + + + +GApplicationCommandLine: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GApplicationCommandLine

+

GApplicationCommandLine — A command-line invocation of an application

+
+
+

Functions

+ +
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +
+GVariant *argumentsWrite / Construct Only
gbooleanis-remoteRead
+GVariant *optionsWrite / Construct Only
+GVariant *platform-dataWrite / Construct Only
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GApplicationCommandLine
structGApplicationCommandLineClass
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GApplicationCommandLine
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GApplicationCommandLine represents a command-line invocation of +an application. It is created by GApplication and emitted +in the “command-line” signal and virtual function.

+

The class contains the list of arguments that the program was invoked +with. It is also possible to query if the commandline invocation was +local (ie: the current process is running in direct response to the +invocation) or remote (ie: some other process forwarded the +commandline to this process).

+

The GApplicationCommandLine object can provide the argc + and argv + +parameters for use with the GOptionContext command-line parsing API, +with the g_application_command_line_get_arguments() function. See +gapplication-example-cmdline3.c +for an example.

+

The exit status of the originally-invoked process may be set and +messages can be printed to stdout or stderr of that process. The +lifecycle of the originally-invoked process is tied to the lifecycle +of this object (ie: the process exits when the last reference is +dropped).

+

The main use for GApplicationCommandLine (and the +“command-line” signal) is 'Emacs server' like use cases: +You can set the EDITOR environment variable to have e.g. git use +your favourite editor to edit commit messages, and if you already +have an instance of the editor running, the editing will happen +in the running instance, instead of opening a new one. An important +aspect of this use case is that the process that gets started by git +does not return until the editing is done.

+

Normally, the commandline is completely handled in the +“command-line” handler. The launching instance exits +once the signal handler in the primary instance has returned, and +the return value of the signal handler becomes the exit status +of the launching instance.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
static int
+command_line (GApplication            *application,
+              GApplicationCommandLine *cmdline)
+{
+  gchar **argv;
+  gint argc;
+  gint i;
+
+  argv = g_application_command_line_get_arguments (cmdline, &argc);
+
+  g_application_command_line_print (cmdline,
+                                    "This text is written back\n"
+                                    "to stdout of the caller\n");
+
+  for (i = 0; i < argc; i++)
+    g_print ("argument %d: %s\n", i, argv[i]);
+
+  g_strfreev (argv);
+
+  return 0;
+}
+
+ +

+The complete example can be found here: +gapplication-example-cmdline.c

+

In more complicated cases, the handling of the comandline can be +split between the launcher and the primary instance.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
static gboolean
+ test_local_cmdline (GApplication   *application,
+                     gchar        ***arguments,
+                     gint           *exit_status)
+{
+  gint i, j;
+  gchar **argv;
+
+  argv = *arguments;
+
+  i = 1;
+  while (argv[i])
+    {
+      if (g_str_has_prefix (argv[i], "--local-"))
+        {
+          g_print ("handling argument %s locally\n", argv[i]);
+          g_free (argv[i]);
+          for (j = i; argv[j]; j++)
+            argv[j] = argv[j + 1];
+        }
+      else
+        {
+          g_print ("not handling argument %s locally\n", argv[i]);
+          i++;
+        }
+    }
+
+  *exit_status = 0;
+
+  return FALSE;
+}
+
+static void
+test_application_class_init (TestApplicationClass *class)
+{
+  G_APPLICATION_CLASS (class)->local_command_line = test_local_cmdline;
+
+  ...
+}
+
+ +

+In this example of split commandline handling, options that start +with --local- are handled locally, all other options are passed +to the “command-line” handler which runs in the primary +instance.

+

The complete example can be found here: +gapplication-example-cmdline2.c

+

If handling the commandline requires a lot of work, it may +be better to defer it.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
static gboolean
+my_cmdline_handler (gpointer data)
+{
+  GApplicationCommandLine *cmdline = data;
+
+  // do the heavy lifting in an idle
+
+  g_application_command_line_set_exit_status (cmdline, 0);
+  g_object_unref (cmdline); // this releases the application
+
+  return G_SOURCE_REMOVE;
+}
+
+static int
+command_line (GApplication            *application,
+              GApplicationCommandLine *cmdline)
+{
+  // keep the application running until we are done with this commandline
+  g_application_hold (application);
+
+  g_object_set_data_full (G_OBJECT (cmdline),
+                          "application", application,
+                          (GDestroyNotify)g_application_release);
+
+  g_object_ref (cmdline);
+  g_idle_add (my_cmdline_handler, cmdline);
+
+  return 0;
+}
+
+ +

+In this example the commandline is not completely handled before +the “command-line” handler returns. Instead, we keep +a reference to the GApplicationCommandLine object and handle it +later (in this example, in an idle). Note that it is necessary to +hold the application until you are done with the commandline.

+

The complete example can be found here: +gapplication-example-cmdline3.c

+
+
+

Functions

+
+

g_application_command_line_get_arguments ()

+
gchar **
+g_application_command_line_get_arguments
+                               (GApplicationCommandLine *cmdline,
+                                int *argc);
+

Gets the list of arguments that was passed on the command line.

+

The strings in the array may contain non-UTF-8 data on UNIX (such as +filenames or arguments given in the system locale) but are always in +UTF-8 on Windows.

+

If you wish to use the return value with GOptionContext, you must +use g_option_context_parse_strv().

+

The return value is NULL-terminated and should be freed using +g_strfreev().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cmdline

a GApplicationCommandLine

 

argc

the length of the arguments array, or NULL.

[out][allow-none]
+
+
+

Returns

+

the string array +containing the arguments (the argv).

+

[array length=argc][transfer full]

+
+

Since: 2.28

+
+
+
+

g_application_command_line_get_cwd ()

+
const gchar *
+g_application_command_line_get_cwd (GApplicationCommandLine *cmdline);
+

Gets the working directory of the command line invocation. +The string may contain non-utf8 data.

+

It is possible that the remote application did not send a working +directory, so this may be NULL.

+

The return value should not be modified or freed and is valid for as +long as cmdline + exists.

+
+

Parameters

+
+++++ + + + + + +

cmdline

a GApplicationCommandLine

 
+
+
+

Returns

+

the current directory, or NULL

+
+

Since: 2.28

+
+
+
+

g_application_command_line_get_environ ()

+
const gchar * const *
+g_application_command_line_get_environ
+                               (GApplicationCommandLine *cmdline);
+

Gets the contents of the 'environ' variable of the command line +invocation, as would be returned by g_get_environ(), ie as a +NULL-terminated list of strings in the form 'NAME=VALUE'. +The strings may contain non-utf8 data.

+

The remote application usually does not send an environment. Use +G_APPLICATION_SEND_ENVIRONMENT to affect that. Even with this flag +set it is possible that the environment is still not available (due +to invocation messages from other applications).

+

The return value should not be modified or freed and is valid for as +long as cmdline + exists.

+

See g_application_command_line_getenv() if you are only interested +in the value of a single environment variable.

+
+

Parameters

+
+++++ + + + + + +

cmdline

a GApplicationCommandLine

 
+
+
+

Returns

+

the environment +strings, or NULL if they were not sent.

+

[array zero-terminated=1][transfer none]

+
+

Since: 2.28

+
+
+
+

g_application_command_line_get_options_dict ()

+
GVariantDict *
+g_application_command_line_get_options_dict
+                               (GApplicationCommandLine *cmdline);
+

Gets the options there were passed to g_application_command_line().

+

If you did not override local_command_line() then these are the same +options that were parsed according to the GOptionEntrys added to the +application with g_application_add_main_option_entries() and possibly +modified from your GApplication::handle-local-options handler.

+

If no options were sent then an empty dictionary is returned so that +you don't need to check for NULL.

+
+

Parameters

+
+++++ + + + + + +

cmdline

a GApplicationCommandLine

 
+
+
+

Returns

+

a GVariantDict with the options.

+

[transfer none]

+
+

Since: 2.40

+
+
+
+

g_application_command_line_get_stdin ()

+
GInputStream *
+g_application_command_line_get_stdin (GApplicationCommandLine *cmdline);
+

Gets the stdin of the invoking process.

+

The GInputStream can be used to read data passed to the standard +input of the invoking process. +This doesn't work on all platforms. Presently, it is only available +on UNIX when using a DBus daemon capable of passing file descriptors. +If stdin is not available then NULL will be returned. In the +future, support may be expanded to other platforms.

+

You must only call this function once per commandline invocation.

+
+

Parameters

+
+++++ + + + + + +

cmdline

a GApplicationCommandLine

 
+
+
+

Returns

+

a GInputStream for stdin.

+

[transfer full]

+
+

Since: 2.34

+
+
+
+

g_application_command_line_create_file_for_arg ()

+
GFile *
+g_application_command_line_create_file_for_arg
+                               (GApplicationCommandLine *cmdline,
+                                const gchar *arg);
+

Creates a GFile corresponding to a filename that was given as part +of the invocation of cmdline +.

+

This differs from g_file_new_for_commandline_arg() in that it +resolves relative pathnames using the current working directory of +the invoking process rather than the local process.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cmdline

a GApplicationCommandLine

 

arg

an argument from cmdline +

 
+
+
+

Returns

+

a new GFile.

+

[transfer full]

+
+

Since: 2.36

+
+
+
+

g_application_command_line_getenv ()

+
const gchar *
+g_application_command_line_getenv (GApplicationCommandLine *cmdline,
+                                   const gchar *name);
+

Gets the value of a particular environment variable of the command +line invocation, as would be returned by g_getenv(). The strings may +contain non-utf8 data.

+

The remote application usually does not send an environment. Use +G_APPLICATION_SEND_ENVIRONMENT to affect that. Even with this flag +set it is possible that the environment is still not available (due +to invocation messages from other applications).

+

The return value should not be modified or freed and is valid for as +long as cmdline + exists.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cmdline

a GApplicationCommandLine

 

name

the environment variable to get

 
+
+
+

Returns

+

the value of the variable, or NULL if unset or unsent

+
+

Since: 2.28

+
+
+
+

g_application_command_line_get_is_remote ()

+
gboolean
+g_application_command_line_get_is_remote
+                               (GApplicationCommandLine *cmdline);
+

Determines if cmdline + represents a remote invocation.

+
+

Parameters

+
+++++ + + + + + +

cmdline

a GApplicationCommandLine

 
+
+
+

Returns

+

TRUE if the invocation was remote

+
+

Since: 2.28

+
+
+
+

g_application_command_line_get_platform_data ()

+
GVariant *
+g_application_command_line_get_platform_data
+                               (GApplicationCommandLine *cmdline);
+

Gets the platform data associated with the invocation of cmdline +.

+

This is a GVariant dictionary containing information about the +context in which the invocation occurred. It typically contains +information like the current working directory and the startup +notification ID.

+

For local invocation, it will be NULL.

+
+

Parameters

+
+++++ + + + + + +

cmdline

GApplicationCommandLine

 
+
+
+

Returns

+

the platform data, or NULL.

+

[nullable]

+
+

Since: 2.28

+
+
+
+

g_application_command_line_set_exit_status ()

+
void
+g_application_command_line_set_exit_status
+                               (GApplicationCommandLine *cmdline,
+                                int exit_status);
+

Sets the exit status that will be used when the invoking process +exits.

+

The return value of the “command-line” signal is +passed to this function when the handler returns. This is the usual +way of setting the exit status.

+

In the event that you want the remote invocation to continue running +and want to decide on the exit status in the future, you can use this +call. For the case of a remote invocation, the remote process will +typically exit when the last reference is dropped on cmdline +. The +exit status of the remote process will be equal to the last value +that was set with this function.

+

In the case that the commandline invocation is local, the situation +is slightly more complicated. If the commandline invocation results +in the mainloop running (ie: because the use-count of the application +increased to a non-zero value) then the application is considered to +have been 'successful' in a certain sense, and the exit status is +always zero. If the application use count is zero, though, the exit +status of the local GApplicationCommandLine is used.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cmdline

a GApplicationCommandLine

 

exit_status

the exit status

 
+
+

Since: 2.28

+
+
+
+

g_application_command_line_get_exit_status ()

+
int
+g_application_command_line_get_exit_status
+                               (GApplicationCommandLine *cmdline);
+

Gets the exit status of cmdline +. See +g_application_command_line_set_exit_status() for more information.

+
+

Parameters

+
+++++ + + + + + +

cmdline

a GApplicationCommandLine

 
+
+
+

Returns

+

the exit status

+
+

Since: 2.28

+
+
+
+

g_application_command_line_print ()

+
void
+g_application_command_line_print (GApplicationCommandLine *cmdline,
+                                  const gchar *format,
+                                  ...);
+

Formats a message and prints it using the stdout print handler in the +invoking process.

+

If cmdline + is a local invocation then this is exactly equivalent to +g_print(). If cmdline + is remote then this is equivalent to calling +g_print() in the invoking process.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

cmdline

a GApplicationCommandLine

 

format

a printf-style format string

 

...

arguments, as per format +

 
+
+

Since: 2.28

+
+
+
+

g_application_command_line_printerr ()

+
void
+g_application_command_line_printerr (GApplicationCommandLine *cmdline,
+                                     const gchar *format,
+                                     ...);
+

Formats a message and prints it using the stderr print handler in the +invoking process.

+

If cmdline + is a local invocation then this is exactly equivalent to +g_printerr(). If cmdline + is remote then this is equivalent to +calling g_printerr() in the invoking process.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

cmdline

a GApplicationCommandLine

 

format

a printf-style format string

 

...

arguments, as per format +

 
+
+

Since: 2.28

+
+
+
+

Types and Values

+
+

GApplicationCommandLine

+
typedef struct _GApplicationCommandLine GApplicationCommandLine;
+

GApplicationCommandLine is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

struct GApplicationCommandLineClass

+
struct GApplicationCommandLineClass {
+};
+
+

The GApplicationCommandLineClass +contains private data only.

+

Since: 2.28

+
+
+
+

Property Details

+
+

The “arguments” property

+
  “arguments”                GVariant *
+

The commandline that caused this ::command-line signal emission.

+

Flags: Write / Construct Only

+

Allowed values: GVariant<aay>

+

Default value: NULL

+
+
+
+

The “is-remote” property

+
  “is-remote”                gboolean
+

TRUE if this is a remote commandline.

+

Flags: Read

+

Default value: FALSE

+
+
+
+

The “options” property

+
  “options”                  GVariant *
+

The options sent along with the commandline.

+

Flags: Write / Construct Only

+

Allowed values: GVariant<a{sv}>

+

Default value: NULL

+
+
+
+

The “platform-data” property

+
  “platform-data”            GVariant *
+

Platform-specific data for the commandline.

+

Flags: Write / Construct Only

+

Allowed values: GVariant<a{sv}>

+

Default value: NULL

+
+
+
+

See Also

+

GApplication

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GAsyncInitable.html b/docs/reference/gio/html/GAsyncInitable.html new file mode 100644 index 0000000..daa199e --- /dev/null +++ b/docs/reference/gio/html/GAsyncInitable.html @@ -0,0 +1,767 @@ + + + + +GAsyncInitable: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GAsyncInitable

+

GAsyncInitable — Asynchronously failable object initialization interface

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +g_async_initable_init_async () +
+gboolean + +g_async_initable_init_finish () +
+void + +g_async_initable_new_async () +
+GObject * + +g_async_initable_new_finish () +
+void + +g_async_initable_new_valist_async () +
+void + +g_async_initable_newv_async () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GAsyncInitable
structGAsyncInitableIface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GAsyncInitable
+
+
+
+

Prerequisites

+

+GAsyncInitable requires + GObject.

+
+
+

Known Implementations

+

+GAsyncInitable is implemented by + GDBusConnection, GDBusObjectManagerClient and GDBusProxy.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

This is the asynchronous version of GInitable; it behaves the same +in all ways except that initialization is asynchronous. For more details +see the descriptions on GInitable.

+

A class may implement both the GInitable and GAsyncInitable interfaces.

+

Users of objects implementing this are not intended to use the interface +method directly; instead it will be used automatically in various ways. +For C applications you generally just call g_async_initable_new_async() +directly, or indirectly via a foo_thing_new_async() wrapper. This will call +g_async_initable_init_async() under the cover, calling back with NULL and +a set GError on failure.

+

A typical implementation might look something like this:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
enum {
+   NOT_INITIALIZED,
+   INITIALIZING,
+   INITIALIZED
+};
+
+static void
+_foo_ready_cb (Foo *self)
+{
+  GList *l;
+
+  self->priv->state = INITIALIZED;
+
+  for (l = self->priv->init_results; l != NULL; l = l->next)
+    {
+      GTask *task = l->data;
+
+      if (self->priv->success)
+        g_task_return_boolean (task, TRUE);
+      else
+        g_task_return_new_error (task, ...);
+      g_object_unref (task);
+    }
+
+  g_list_free (self->priv->init_results);
+  self->priv->init_results = NULL;
+}
+
+static void
+foo_init_async (GAsyncInitable       *initable,
+                int                   io_priority,
+                GCancellable         *cancellable,
+                GAsyncReadyCallback   callback,
+                gpointer              user_data)
+{
+  Foo *self = FOO (initable);
+  GTask *task;
+
+  task = g_task_new (initable, cancellable, callback, user_data);
+
+  switch (self->priv->state)
+    {
+      case NOT_INITIALIZED:
+        _foo_get_ready (self);
+        self->priv->init_results = g_list_append (self->priv->init_results,
+                                                  task);
+        self->priv->state = INITIALIZING;
+        break;
+      case INITIALIZING:
+        self->priv->init_results = g_list_append (self->priv->init_results,
+                                                  task);
+        break;
+      case INITIALIZED:
+        if (!self->priv->success)
+          g_task_return_new_error (task, ...);
+        else
+          g_task_return_boolean (task, TRUE);
+        g_object_unref (task);
+        break;
+    }
+}
+
+static gboolean
+foo_init_finish (GAsyncInitable       *initable,
+                 GAsyncResult         *result,
+                 GError              **error)
+{
+  g_return_val_if_fail (g_task_is_valid (result, initable), FALSE);
+
+  return g_task_propagate_boolean (G_TASK (result), error);
+}
+
+static void
+foo_async_initable_iface_init (gpointer g_iface,
+                               gpointer data)
+{
+  GAsyncInitableIface *iface = g_iface;
+
+  iface->init_async = foo_init_async;
+  iface->init_finish = foo_init_finish;
+}
+
+ +

+
+
+

Functions

+
+

g_async_initable_init_async ()

+
void
+g_async_initable_init_async (GAsyncInitable *initable,
+                             int io_priority,
+                             GCancellable *cancellable,
+                             GAsyncReadyCallback callback,
+                             gpointer user_data);
+

Starts asynchronous initialization of the object implementing the +interface. This must be done before any real use of the object after +initial construction. If the object also implements GInitable you can +optionally call g_initable_init() instead.

+

When the initialization is finished, callback + will be called. You can +then call g_async_initable_init_finish() to get the result of the +initialization.

+

Implementations may also support cancellation. If cancellable + is not +NULL, then initialization can be cancelled by triggering the cancellable +object from another thread. If the operation was cancelled, the error +G_IO_ERROR_CANCELLED will be returned. If cancellable + is not NULL, and +the object doesn't support cancellable initialization, the error +G_IO_ERROR_NOT_SUPPORTED will be returned.

+

As with GInitable, if the object is not initialized, or initialization +returns with an error, then all operations on the object except +g_object_ref() and g_object_unref() are considered to be invalid, and +have undefined behaviour. They will often fail with g_critical() or +g_warning(), but this must not be relied on.

+

Implementations of this method must be idempotent: i.e. multiple calls +to this function with the same argument should return the same results. +Only the first call initializes the object; further calls return the result +of the first call. This is so that it's safe to implement the singleton +pattern in the GObject constructor function.

+

For classes that also support the GInitable interface, the default +implementation of this method will run the g_initable_init() function +in a thread, so if you want to support asynchronous initialization via +threads, just implement the GAsyncInitable interface without overriding +any interface methods.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

initable

a GAsyncInitable.

 

io_priority

the I/O priority of the operation

 

cancellable

optional GCancellable object, NULL to ignore.

 

callback

a GAsyncReadyCallback to call when the request is satisfied

 

user_data

the data to pass to callback function

 
+
+

Since: 2.22

+
+
+
+

g_async_initable_init_finish ()

+
gboolean
+g_async_initable_init_finish (GAsyncInitable *initable,
+                              GAsyncResult *res,
+                              GError **error);
+

Finishes asynchronous initialization and returns the result. +See g_async_initable_init_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

initable

a GAsyncInitable.

 

res

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if successful. If an error has occurred, this function +will return FALSE and set error +appropriately if present.

+
+

Since: 2.22

+
+
+
+

g_async_initable_new_async ()

+
void
+g_async_initable_new_async (GType object_type,
+                            int io_priority,
+                            GCancellable *cancellable,
+                            GAsyncReadyCallback callback,
+                            gpointer user_data,
+                            const gchar *first_property_name,
+                            ...);
+

Helper function for constructing GAsyncInitable object. This is +similar to g_object_new() but also initializes the object asynchronously.

+

When the initialization is finished, callback + will be called. You can +then call g_async_initable_new_finish() to get the new object and check +for any errors.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

object_type

a GType supporting GAsyncInitable.

 

io_priority

the I/O priority of the operation

 

cancellable

optional GCancellable object, NULL to ignore.

 

callback

a GAsyncReadyCallback to call when the initialization is +finished

 

user_data

the data to pass to callback function

 

first_property_name

the name of the first property, or NULL if no +properties.

[allow-none]

...

the value of the first property, followed by other property +value pairs, and ended by NULL.

 
+
+

Since: 2.22

+
+
+
+

g_async_initable_new_finish ()

+
GObject *
+g_async_initable_new_finish (GAsyncInitable *initable,
+                             GAsyncResult *res,
+                             GError **error);
+

Finishes the async construction for the various g_async_initable_new +calls, returning the created object or NULL on error.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

initable

the GAsyncInitable from the callback

 

res

the GAsyncResult from the callback

 

error

return location for errors, or NULL to ignore

 
+
+
+

Returns

+

a newly created GObject, +or NULL on error. Free with g_object_unref().

+

[type GObject.Object][transfer full]

+
+

Since: 2.22

+
+
+
+

g_async_initable_new_valist_async ()

+
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);
+

Helper function for constructing GAsyncInitable object. This is +similar to g_object_new_valist() but also initializes the object +asynchronously.

+

When the initialization is finished, callback + will be called. You can +then call g_async_initable_new_finish() to get the new object and check +for any errors.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

object_type

a GType supporting GAsyncInitable.

 

first_property_name

the name of the first property, followed by +the value, and other property value pairs, and ended by NULL.

 

var_args

The var args list generated from first_property_name +.

 

io_priority

the I/O priority of the operation

 

cancellable

optional GCancellable object, NULL to ignore.

 

callback

a GAsyncReadyCallback to call when the initialization is +finished

 

user_data

the data to pass to callback function

 
+
+

Since: 2.22

+
+
+
+

g_async_initable_newv_async ()

+
void
+g_async_initable_newv_async (GType object_type,
+                             guint n_parameters,
+                             GParameter *parameters,
+                             int io_priority,
+                             GCancellable *cancellable,
+                             GAsyncReadyCallback callback,
+                             gpointer user_data);
+

Helper function for constructing GAsyncInitable object. This is +similar to g_object_newv() but also initializes the object asynchronously.

+

When the initialization is finished, callback + will be called. You can +then call g_async_initable_new_finish() to get the new object and check +for any errors.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

object_type

a GType supporting GAsyncInitable.

 

n_parameters

the number of parameters in parameters +

 

parameters

the parameters to use to construct the object

 

io_priority

the I/O priority of the operation

 

cancellable

optional GCancellable object, NULL to ignore.

 

callback

a GAsyncReadyCallback to call when the initialization is +finished

 

user_data

the data to pass to callback function

 
+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

GAsyncInitable

+
typedef struct _GAsyncInitable GAsyncInitable;
+

Interface for asynchronously initializable objects.

+

Since: 2.22

+
+
+
+

struct GAsyncInitableIface

+
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);
+};
+
+

Provides an interface for asynchronous initializing object such that +initialization may fail.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

The parent interface.

 

init_async ()

Starts initialization of the object.

 

init_finish ()

Finishes initialization of the object.

 
+
+

Since: 2.22

+
+
+
+

See Also

+

GInitable

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GAsyncResult.html b/docs/reference/gio/html/GAsyncResult.html new file mode 100644 index 0000000..ed3bd35 --- /dev/null +++ b/docs/reference/gio/html/GAsyncResult.html @@ -0,0 +1,508 @@ + + + + +GAsyncResult: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GAsyncResult

+

GAsyncResult — Asynchronous Function Results

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+void + +(*GAsyncReadyCallback) () +
+gpointer + +g_async_result_get_user_data () +
+GObject * + +g_async_result_get_source_object () +
+gboolean + +g_async_result_is_tagged () +
+gboolean + +g_async_result_legacy_propagate_error () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GAsyncResult
structGAsyncResultIface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GAsyncResult
+
+
+
+

Prerequisites

+

+GAsyncResult requires + GObject.

+
+
+

Known Implementations

+

+GAsyncResult is implemented by + GSimpleAsyncResult and GTask.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Provides a base class for implementing asynchronous function results.

+

Asynchronous operations are broken up into two separate operations +which are chained together by a GAsyncReadyCallback. To begin +an asynchronous operation, provide a GAsyncReadyCallback to the +asynchronous function. This callback will be triggered when the +operation has completed, and will be passed a GAsyncResult instance +filled with the details of the operation's success or failure, the +object the asynchronous function was started for and any error codes +returned. The asynchronous callback function is then expected to call +the corresponding "_finish()" function, passing the object the +function was called for, the GAsyncResult instance, and (optionally) +an error + to grab any error conditions that may have occurred.

+

The "_finish()" function for an operation takes the generic result +(of type GAsyncResult) and returns the specific result that the +operation in question yields (e.g. a GFileEnumerator for a +"enumerate children" operation). If the result or error status of the +operation is not needed, there is no need to call the "_finish()" +function; GIO will take care of cleaning up the result and error +information after the GAsyncReadyCallback returns. You can pass +NULL for the GAsyncReadyCallback if you don't need to take any +action at all after the operation completes. Applications may also +take a reference to the GAsyncResult and call "_finish()" later; +however, the "_finish()" function may be called at most once.

+

Example of a typical asynchronous operation flow:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
void _theoretical_frobnitz_async (Theoretical         *t,
+                                  GCancellable        *c,
+                                  GAsyncReadyCallback  cb,
+                                  gpointer             u);
+
+gboolean _theoretical_frobnitz_finish (Theoretical   *t,
+                                       GAsyncResult  *res,
+                                       GError       **e);
+
+static void
+frobnitz_result_func (GObject      *source_object,
+		 GAsyncResult *res,
+		 gpointer      user_data)
+{
+  gboolean success = FALSE;
+
+  success = _theoretical_frobnitz_finish (source_object, res, NULL);
+
+  if (success)
+    g_printf ("Hurray!\n");
+  else
+    g_printf ("Uh oh!\n");
+
+  ...
+
+}
+
+int main (int argc, void *argv[])
+{
+   ...
+
+   _theoretical_frobnitz_async (theoretical_data,
+                                NULL,
+                                frobnitz_result_func,
+                                NULL);
+
+   ...
+}
+
+ +

+

The callback for an asynchronous operation is called only once, and is +always called, even in the case of a cancelled operation. On cancellation +the result is a G_IO_ERROR_CANCELLED error.

+
+

I/O Priority

+

Many I/O-related asynchronous operations have a priority parameter, +which is used in certain cases to determine the order in which +operations are executed. They are not used to determine system-wide +I/O scheduling. Priorities are integers, with lower numbers indicating +higher priority. It is recommended to choose priorities between +G_PRIORITY_LOW and G_PRIORITY_HIGH, with G_PRIORITY_DEFAULT +as a default.

+
+
+
+

Functions

+
+

GAsyncReadyCallback ()

+
void
+(*GAsyncReadyCallback) (GObject *source_object,
+                        GAsyncResult *res,
+                        gpointer user_data);
+

Type definition for a function that will be called back when an asynchronous +operation within GIO has been completed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

source_object

the object the asynchronous operation was started with.

 

res

a GAsyncResult.

 

user_data

user data passed to the callback.

 
+
+
+
+
+

g_async_result_get_user_data ()

+
gpointer
+g_async_result_get_user_data (GAsyncResult *res);
+

Gets the user data from a GAsyncResult.

+
+

Parameters

+
+++++ + + + + + +

res

a GAsyncResult.

 
+
+
+

Returns

+

the user data for res +.

+

[transfer full]

+
+
+
+
+

g_async_result_get_source_object ()

+
GObject *
+g_async_result_get_source_object (GAsyncResult *res);
+

Gets the source object from a GAsyncResult.

+
+

Parameters

+
+++++ + + + + + +

res

a GAsyncResult

 
+
+
+

Returns

+

a new reference to the source object for the res +, +or NULL if there is none.

+

[transfer full]

+
+
+
+
+

g_async_result_is_tagged ()

+
gboolean
+g_async_result_is_tagged (GAsyncResult *res,
+                          gpointer source_tag);
+

Checks if res + has the given source_tag + (generally a function +pointer indicating the function res + was created by).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

res

a GAsyncResult

 

source_tag

an application-defined tag

 
+
+
+

Returns

+

TRUE if res +has the indicated source_tag +, FALSE if +not.

+
+

Since: 2.34

+
+
+
+

g_async_result_legacy_propagate_error ()

+
gboolean
+g_async_result_legacy_propagate_error (GAsyncResult *res,
+                                       GError **error);
+

If res + is a GSimpleAsyncResult, this is equivalent to +g_simple_async_result_propagate_error(). Otherwise it returns +FALSE.

+

This can be used for legacy error handling in async *_finish() +wrapper functions that traditionally handled GSimpleAsyncResult +error returns themselves rather than calling into the virtual method. +This should not be used in new code; GAsyncResult errors that are +set by virtual methods should also be extracted by virtual methods, +to enable subclasses to chain up correctly.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

res

a GAsyncResult

 

error

a location to propagate the error to.

[out]
+
+
+

Returns

+

TRUE if error +is has been filled in with an error from +res +, FALSE if not.

+
+

Since: 2.34

+
+
+
+

Types and Values

+
+

GAsyncResult

+
typedef struct _GAsyncResult GAsyncResult;
+

Holds results information for an asynchronous operation, +usually passed directly to a asynchronous _finish() operation.

+
+
+
+

struct GAsyncResultIface

+
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);
+};
+
+

Interface definition for GAsyncResult.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface 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.

 
+
+
+
+
+

See Also

+

GTask

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GBufferedInputStream.html b/docs/reference/gio/html/GBufferedInputStream.html new file mode 100644 index 0000000..cc9e436 --- /dev/null +++ b/docs/reference/gio/html/GBufferedInputStream.html @@ -0,0 +1,696 @@ + + + + +GBufferedInputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GBufferedInputStream

+

GBufferedInputStream — Buffered Input Stream

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GInputStream * + +g_buffered_input_stream_new () +
+GInputStream * + +g_buffered_input_stream_new_sized () +
+gsize + +g_buffered_input_stream_get_buffer_size () +
+void + +g_buffered_input_stream_set_buffer_size () +
+gsize + +g_buffered_input_stream_get_available () +
const void * + +g_buffered_input_stream_peek_buffer () +
+gsize + +g_buffered_input_stream_peek () +
+gssize + +g_buffered_input_stream_fill () +
+void + +g_buffered_input_stream_fill_async () +
+gssize + +g_buffered_input_stream_fill_finish () +
+int + +g_buffered_input_stream_read_byte () +
+
+
+

Properties

+
+++++ + + + + + +
guintbuffer-sizeRead / Write / Construct
+
+
+

Types and Values

+
++++ + + + + +
 GBufferedInputStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GInputStream
+        ╰── GFilterInputStream
+            ╰── GBufferedInputStream
+                ╰── GDataInputStream
+
+
+
+

Implemented Interfaces

+

+GBufferedInputStream implements + GSeekable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Buffered input stream implements GFilterInputStream and provides +for buffered reads.

+

By default, GBufferedInputStream's buffer size is set at 4 kilobytes.

+

To create a buffered input stream, use g_buffered_input_stream_new(), +or g_buffered_input_stream_new_sized() to specify the buffer's size at +construction.

+

To get the size of a buffer within a buffered input stream, use +g_buffered_input_stream_get_buffer_size(). To change the size of a +buffered input stream's buffer, use +g_buffered_input_stream_set_buffer_size(). Note that the buffer's size +cannot be reduced below the size of the data within the buffer.

+
+
+

Functions

+
+

g_buffered_input_stream_new ()

+
GInputStream *
+g_buffered_input_stream_new (GInputStream *base_stream);
+

Creates a new GInputStream from the given base_stream +, with +a buffer set to the default size (4 kilobytes).

+
+

Parameters

+
+++++ + + + + + +

base_stream

a GInputStream

 
+
+
+

Returns

+

a GInputStream for the given base_stream +.

+
+
+
+
+

g_buffered_input_stream_new_sized ()

+
GInputStream *
+g_buffered_input_stream_new_sized (GInputStream *base_stream,
+                                   gsize size);
+

Creates a new GBufferedInputStream from the given base_stream +, +with a buffer set to size +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

base_stream

a GInputStream

 

size

a gsize

 
+
+
+

Returns

+

a GInputStream.

+
+
+
+
+

g_buffered_input_stream_get_buffer_size ()

+
gsize
+g_buffered_input_stream_get_buffer_size
+                               (GBufferedInputStream *stream);
+

Gets the size of the input buffer.

+
+

Parameters

+
+++++ + + + + + +

stream

a GBufferedInputStream

 
+
+
+

Returns

+

the current buffer size.

+
+
+
+
+

g_buffered_input_stream_set_buffer_size ()

+
void
+g_buffered_input_stream_set_buffer_size
+                               (GBufferedInputStream *stream,
+                                gsize size);
+

Sets the size of the internal buffer of stream + to size +, or to the +size of the contents of the buffer. The buffer can never be resized +smaller than its current contents.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GBufferedInputStream

 

size

a gsize

 
+
+
+
+
+

g_buffered_input_stream_get_available ()

+
gsize
+g_buffered_input_stream_get_available (GBufferedInputStream *stream);
+

Gets the size of the available data within the stream.

+
+

Parameters

+
+++++ + + + + + +

stream

GBufferedInputStream

 
+
+
+

Returns

+

size of the available stream.

+
+
+
+
+

g_buffered_input_stream_peek_buffer ()

+
const void *
+g_buffered_input_stream_peek_buffer (GBufferedInputStream *stream,
+                                     gsize *count);
+

Returns the buffer with the currently available bytes. The returned +buffer must not be modified and will become invalid when reading from +the stream or filling the buffer.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GBufferedInputStream

 

count

a gsize to get the number of bytes available in the buffer.

[out]
+
+
+

Returns

+

read-only buffer.

+

[array length=count][element-type guint8][transfer none]

+
+
+
+
+

g_buffered_input_stream_peek ()

+
gsize
+g_buffered_input_stream_peek (GBufferedInputStream *stream,
+                              void *buffer,
+                              gsize offset,
+                              gsize count);
+

Peeks in the buffer, copying data of size count + into buffer +, +offset offset + bytes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GBufferedInputStream

 

buffer

a pointer to +an allocated chunk of memory.

[array length=count][element-type guint8]

offset

a gsize

 

count

a gsize

 
+
+
+

Returns

+

a gsize of the number of bytes peeked, or -1 on error.

+
+
+
+
+

g_buffered_input_stream_fill ()

+
gssize
+g_buffered_input_stream_fill (GBufferedInputStream *stream,
+                              gssize count,
+                              GCancellable *cancellable,
+                              GError **error);
+

Tries to read count + bytes from the stream into the buffer. +Will block during this read.

+

If count + is zero, returns zero and does nothing. A value of count + +larger than G_MAXSSIZE will cause a G_IO_ERROR_INVALID_ARGUMENT error.

+

On success, the number of bytes read into the buffer is returned. +It is not an error if this is not the same as the requested size, as it +can happen e.g. near the end of a file. Zero is returned on end of file +(or if count + is zero), but never otherwise.

+

If count + is -1 then the attempted read size is equal to the number of +bytes that are required to fill the buffer.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned. If an +operation was partially finished when the operation was cancelled the +partial result will be returned, without an error.

+

On error -1 is returned and error + is set accordingly.

+

For the asynchronous, non-blocking, version of this function, see +g_buffered_input_stream_fill_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GBufferedInputStream

 

count

the number of bytes that will be read from the stream

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

the number of bytes read into stream +'s buffer, up to count +, +or -1 on error.

+
+
+
+
+

g_buffered_input_stream_fill_async ()

+
void
+g_buffered_input_stream_fill_async (GBufferedInputStream *stream,
+                                    gssize count,
+                                    int io_priority,
+                                    GCancellable *cancellable,
+                                    GAsyncReadyCallback callback,
+                                    gpointer user_data);
+

Reads data into stream +'s buffer asynchronously, up to count + size. +io_priority + can be used to prioritize reads. For the synchronous +version of this function, see g_buffered_input_stream_fill().

+

If count + is -1 then the attempted read size is equal to the number +of bytes that are required to fill the buffer.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GBufferedInputStream

 

count

the number of bytes that will be read from the stream

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

a gpointer.

[closure]
+
+
+
+
+

g_buffered_input_stream_fill_finish ()

+
gssize
+g_buffered_input_stream_fill_finish (GBufferedInputStream *stream,
+                                     GAsyncResult *result,
+                                     GError **error);
+

Finishes an asynchronous read.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GBufferedInputStream

 

result

a GAsyncResult

 

error

a GError

 
+
+
+

Returns

+

a gssize of the read stream, or -1 on an error.

+
+
+
+
+

g_buffered_input_stream_read_byte ()

+
int
+g_buffered_input_stream_read_byte (GBufferedInputStream *stream,
+                                   GCancellable *cancellable,
+                                   GError **error);
+

Tries to read a single byte from the stream or the buffer. Will block +during this read.

+

On success, the byte read from the stream is returned. On end of stream +-1 is returned but it's not an exceptional error and error + is not set.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned. If an +operation was partially finished when the operation was cancelled the +partial result will be returned, without an error.

+

On error -1 is returned and error + is set accordingly.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GBufferedInputStream

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

the byte read from the stream +, or -1 on end of stream or error.

+
+
+
+
+

Types and Values

+
+

GBufferedInputStream

+
typedef struct _GBufferedInputStream GBufferedInputStream;
+

Implements GFilterInputStream with a sized input buffer.

+
+
+
+

Property Details

+
+

The “buffer-size” property

+
  “buffer-size”              guint
+

The size of the backend buffer.

+

Flags: Read / Write / Construct

+

Allowed values: >= 1

+

Default value: 4096

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GBufferedOutputStream.html b/docs/reference/gio/html/GBufferedOutputStream.html new file mode 100644 index 0000000..b4394b2 --- /dev/null +++ b/docs/reference/gio/html/GBufferedOutputStream.html @@ -0,0 +1,388 @@ + + + + +GBufferedOutputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GBufferedOutputStream

+

GBufferedOutputStream — Buffered Output Stream

+
+
+

Functions

+ +
+
+

Properties

+
+++++ + + + + + + + + + + + + +
gbooleanauto-growRead / Write
guintbuffer-sizeRead / Write / Construct
+
+
+

Types and Values

+
++++ + + + + +
 GBufferedOutputStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GOutputStream
+        ╰── GFilterOutputStream
+            ╰── GBufferedOutputStream
+
+
+
+

Implemented Interfaces

+

+GBufferedOutputStream implements + GSeekable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Buffered output stream implements GFilterOutputStream and provides +for buffered writes.

+

By default, GBufferedOutputStream's buffer size is set at 4 kilobytes.

+

To create a buffered output stream, use g_buffered_output_stream_new(), +or g_buffered_output_stream_new_sized() to specify the buffer's size +at construction.

+

To get the size of a buffer within a buffered input stream, use +g_buffered_output_stream_get_buffer_size(). To change the size of a +buffered output stream's buffer, use +g_buffered_output_stream_set_buffer_size(). Note that the buffer's +size cannot be reduced below the size of the data within the buffer.

+
+
+

Functions

+
+

g_buffered_output_stream_new ()

+
GOutputStream *
+g_buffered_output_stream_new (GOutputStream *base_stream);
+

Creates a new buffered output stream for a base stream.

+
+

Parameters

+
+++++ + + + + + +

base_stream

a GOutputStream.

 
+
+
+

Returns

+

a GOutputStream for the given base_stream +.

+
+
+
+
+

g_buffered_output_stream_new_sized ()

+
GOutputStream *
+g_buffered_output_stream_new_sized (GOutputStream *base_stream,
+                                    gsize size);
+

Creates a new buffered output stream with a given buffer size.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

base_stream

a GOutputStream.

 

size

a gsize.

 
+
+
+

Returns

+

a GOutputStream with an internal buffer set to size +.

+
+
+
+
+

g_buffered_output_stream_get_buffer_size ()

+
gsize
+g_buffered_output_stream_get_buffer_size
+                               (GBufferedOutputStream *stream);
+

Gets the size of the buffer in the stream +.

+
+

Parameters

+
+++++ + + + + + +

stream

a GBufferedOutputStream.

 
+
+
+

Returns

+

the current size of the buffer.

+
+
+
+
+

g_buffered_output_stream_set_buffer_size ()

+
void
+g_buffered_output_stream_set_buffer_size
+                               (GBufferedOutputStream *stream,
+                                gsize size);
+

Sets the size of the internal buffer to size +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GBufferedOutputStream.

 

size

a gsize.

 
+
+
+
+
+

g_buffered_output_stream_get_auto_grow ()

+
gboolean
+g_buffered_output_stream_get_auto_grow
+                               (GBufferedOutputStream *stream);
+

Checks if the buffer automatically grows as data is added.

+
+

Parameters

+
+++++ + + + + + +

stream

a GBufferedOutputStream.

 
+
+
+

Returns

+

TRUE if the stream +'s buffer automatically grows, +FALSE otherwise.

+
+
+
+
+

g_buffered_output_stream_set_auto_grow ()

+
void
+g_buffered_output_stream_set_auto_grow
+                               (GBufferedOutputStream *stream,
+                                gboolean auto_grow);
+

Sets whether or not the stream +'s buffer should automatically grow. +If auto_grow + is true, then each write will just make the buffer +larger, and you must manually flush the buffer to actually write out +the data to the underlying stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GBufferedOutputStream.

 

auto_grow

a gboolean.

 
+
+
+
+
+

Types and Values

+
+

GBufferedOutputStream

+
typedef struct _GBufferedOutputStream GBufferedOutputStream;
+

An implementation of GFilterOutputStream with a sized buffer.

+
+
+
+

Property Details

+
+

The “auto-grow” property

+
  “auto-grow”                gboolean
+

Whether the buffer should automatically grow.

+

Flags: Read / Write

+

Default value: FALSE

+
+
+
+

The “buffer-size” property

+
  “buffer-size”              guint
+

The size of the backend buffer.

+

Flags: Read / Write / Construct

+

Allowed values: >= 1

+

Default value: 4096

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GBytesIcon.html b/docs/reference/gio/html/GBytesIcon.html new file mode 100644 index 0000000..8957914 --- /dev/null +++ b/docs/reference/gio/html/GBytesIcon.html @@ -0,0 +1,201 @@ + + + + +GBytesIcon: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GBytesIcon

+

GBytesIcon — An icon stored in memory as a GBytes

+
+
+

Functions

+
++++ + + + + + + + + + + +
+GIcon * + +g_bytes_icon_new () +
+GBytes * + +g_bytes_icon_get_bytes () +
+
+
+

Properties

+
+++++ + + + + + +
+GBytes *bytesRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GBytesIcon
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GBytesIcon
+
+
+
+

Implemented Interfaces

+

+GBytesIcon implements + GIcon and GLoadableIcon.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GBytesIcon specifies an image held in memory in a common format (usually +png) to be used as icon.

+
+
+

Functions

+
+

g_bytes_icon_new ()

+
GIcon *
+g_bytes_icon_new (GBytes *bytes);
+

Creates a new icon for a bytes.

+
+

Parameters

+
+++++ + + + + + +

bytes

a GBytes.

 
+
+
+

Returns

+

a GIcon for the given +bytes +, or NULL on error.

+

[transfer full][type GBytesIcon]

+
+

Since: 2.38

+
+
+
+

g_bytes_icon_get_bytes ()

+
GBytes *
+g_bytes_icon_get_bytes (GBytesIcon *icon);
+

Gets the GBytes associated with the given icon +.

+
+

Parameters

+
+++++ + + + + + +

icon

a GIcon.

 
+
+
+

Returns

+

a GBytes, or NULL.

+

[transfer none]

+
+

Since: 2.38

+
+
+
+

Types and Values

+
+

GBytesIcon

+
typedef struct _GBytesIcon GBytesIcon;
+

Gets an icon for a GBytes. Implements GLoadableIcon.

+
+
+
+

Property Details

+
+

The “bytes” property

+
  “bytes”                    GBytes *
+

The bytes containing the icon.

+

Flags: Read / Write / Construct Only

+
+
+
+

See Also

+

GIcon, GLoadableIcon, GBytes

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GCancellable.html b/docs/reference/gio/html/GCancellable.html new file mode 100644 index 0000000..24e829a --- /dev/null +++ b/docs/reference/gio/html/GCancellable.html @@ -0,0 +1,857 @@ + + + + +GCancellable: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GCancellable

+

GCancellable — Thread-safe Operation Cancellation Stack

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GCancellable * + +g_cancellable_new () +
+gboolean + +g_cancellable_is_cancelled () +
+gboolean + +g_cancellable_set_error_if_cancelled () +
+int + +g_cancellable_get_fd () +
+gboolean + +g_cancellable_make_pollfd () +
+void + +g_cancellable_release_fd () +
+GSource * + +g_cancellable_source_new () +
+gboolean + +(*GCancellableSourceFunc) () +
+GCancellable * + +g_cancellable_get_current () +
+void + +g_cancellable_pop_current () +
+void + +g_cancellable_push_current () +
+void + +g_cancellable_reset () +
+gulong + +g_cancellable_connect () +
+void + +g_cancellable_disconnect () +
+void + +g_cancellable_cancel () +
+
+
+

Signals

+
+++++ + + + + + +
voidcancelledRun Last
+
+
+

Types and Values

+
++++ + + + + +
 GCancellable
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GCancellable
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GCancellable is a thread-safe operation cancellation stack used +throughout GIO to allow for cancellation of synchronous and +asynchronous operations.

+
+
+

Functions

+
+

g_cancellable_new ()

+
GCancellable *
+g_cancellable_new (void);
+

Creates a new GCancellable object.

+

Applications that want to start one or more operations +that should be cancellable should create a GCancellable +and pass it to the operations.

+

One GCancellable can be used in multiple consecutive +operations or in multiple concurrent operations.

+
+

Returns

+

a GCancellable.

+
+
+
+
+

g_cancellable_is_cancelled ()

+
gboolean
+g_cancellable_is_cancelled (GCancellable *cancellable);
+

Checks if a cancellable job has been cancelled.

+
+

Parameters

+
+++++ + + + + + +

cancellable

a GCancellable or NULL.

[allow-none]
+
+
+

Returns

+

TRUE if cancellable +is cancelled, +FALSE if called with NULL or if item is not cancelled.

+
+
+
+
+

g_cancellable_set_error_if_cancelled ()

+
gboolean
+g_cancellable_set_error_if_cancelled (GCancellable *cancellable,
+                                      GError **error);
+

If the cancellable + is cancelled, sets the error to notify +that the operation was cancelled.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cancellable

a GCancellable or NULL.

[allow-none]

error

GError to append error state to

 
+
+
+

Returns

+

TRUE if cancellable +was cancelled, FALSE if it was not

+
+
+
+
+

g_cancellable_get_fd ()

+
int
+g_cancellable_get_fd (GCancellable *cancellable);
+

Gets the file descriptor for a cancellable job. This can be used to +implement cancellable operations on Unix systems. The returned fd will +turn readable when cancellable + is cancelled.

+

You are not supposed to read from the fd yourself, just check for +readable status. Reading to unset the readable status is done +with g_cancellable_reset().

+

After a successful return from this function, you should use +g_cancellable_release_fd() to free up resources allocated for +the returned file descriptor.

+

See also g_cancellable_make_pollfd().

+
+

Parameters

+
+++++ + + + + + +

cancellable

a GCancellable.

 
+
+
+

Returns

+

A valid file descriptor. -1 if the file descriptor +is not supported, or on errors.

+
+
+
+
+

g_cancellable_make_pollfd ()

+
gboolean
+g_cancellable_make_pollfd (GCancellable *cancellable,
+                           GPollFD *pollfd);
+

Creates a GPollFD corresponding to cancellable +; this can be passed +to g_poll() and used to poll for cancellation. This is useful both +for unix systems without a native poll and for portability to +windows.

+

When this function returns TRUE, you should use +g_cancellable_release_fd() to free up resources allocated for the +pollfd +. After a FALSE return, do not call g_cancellable_release_fd().

+

If this function returns FALSE, either no cancellable + was given or +resource limits prevent this function from allocating the necessary +structures for polling. (On Linux, you will likely have reached +the maximum number of file descriptors.) The suggested way to handle +these cases is to ignore the cancellable +.

+

You are not supposed to read from the fd yourself, just check for +readable status. Reading to unset the readable status is done +with g_cancellable_reset().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cancellable

a GCancellable or NULL.

[allow-none]

pollfd

a pointer to a GPollFD

 
+
+
+

Returns

+

TRUE if pollfd +was successfully initialized, FALSE on +failure to prepare the cancellable.

+
+

Since: 2.22

+
+
+
+

g_cancellable_release_fd ()

+
void
+g_cancellable_release_fd (GCancellable *cancellable);
+

Releases a resources previously allocated by g_cancellable_get_fd() +or g_cancellable_make_pollfd().

+

For compatibility reasons with older releases, calling this function +is not strictly required, the resources will be automatically freed +when the cancellable + is finalized. However, the cancellable + will +block scarce file descriptors until it is finalized if this function +is not called. This can cause the application to run out of file +descriptors when many GCancellables are used at the same time.

+
+

Parameters

+
+++++ + + + + + +

cancellable

a GCancellable

 
+
+

Since: 2.22

+
+
+
+

g_cancellable_source_new ()

+
GSource *
+g_cancellable_source_new (GCancellable *cancellable);
+

Creates a source that triggers if cancellable + is cancelled and +calls its callback of type GCancellableSourceFunc. This is +primarily useful for attaching to another (non-cancellable) source +with g_source_add_child_source() to add cancellability to it.

+

For convenience, you can call this with a NULL GCancellable, +in which case the source will never trigger.

+

The new GSource will hold a reference to the GCancellable.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

cancellable

a GCancellable, or NULL.

[allow-none]
+
+
+

Returns

+

the new GSource.

+

[transfer full]

+
+

Since: 2.28

+
+
+
+

GCancellableSourceFunc ()

+
gboolean
+(*GCancellableSourceFunc) (GCancellable *cancellable,
+                           gpointer user_data);
+

This is the function type of the callback used for the GSource +returned by g_cancellable_source_new().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cancellable

the GCancellable

 

user_data

data passed in by the user.

 
+
+
+

Returns

+

it should return FALSE if the source should be removed.

+
+

Since: 2.28

+
+
+
+

g_cancellable_get_current ()

+
GCancellable *
+g_cancellable_get_current (void);
+

Gets the top cancellable from the stack.

+
+

Returns

+

a GCancellable from the top +of the stack, or NULL if the stack is empty.

+

[nullable][transfer none]

+
+
+
+
+

g_cancellable_pop_current ()

+
void
+g_cancellable_pop_current (GCancellable *cancellable);
+

Pops cancellable + off the cancellable stack (verifying that cancellable + +is on the top of the stack).

+
+

Parameters

+
+++++ + + + + + +

cancellable

a GCancellable object

 
+
+
+
+
+

g_cancellable_push_current ()

+
void
+g_cancellable_push_current (GCancellable *cancellable);
+

Pushes cancellable + onto the cancellable stack. The current +cancellable can then be received using g_cancellable_get_current().

+

This is useful when implementing cancellable operations in +code that does not allow you to pass down the cancellable object.

+

This is typically called automatically by e.g. GFile operations, +so you rarely have to call this yourself.

+
+

Parameters

+
+++++ + + + + + +

cancellable

a GCancellable object

 
+
+
+
+
+

g_cancellable_reset ()

+
void
+g_cancellable_reset (GCancellable *cancellable);
+

Resets cancellable + to its uncancelled state.

+

If cancellable is currently in use by any cancellable operation +then the behavior of this function is undefined.

+

Note that it is generally not a good idea to reuse an existing +cancellable for more operations after it has been cancelled once, +as this function might tempt you to do. The recommended practice +is to drop the reference to a cancellable after cancelling it, +and let it die with the outstanding async operations. You should +create a fresh cancellable for further async operations.

+
+

Parameters

+
+++++ + + + + + +

cancellable

a GCancellable object.

 
+
+
+
+
+

g_cancellable_connect ()

+
gulong
+g_cancellable_connect (GCancellable *cancellable,
+                       GCallback callback,
+                       gpointer data,
+                       GDestroyNotify data_destroy_func);
+

Convenience function to connect to the “cancelled” +signal. Also handles the race condition that may happen +if the cancellable is cancelled right before connecting.

+

callback + is called at most once, either directly at the +time of the connect if cancellable + is already cancelled, +or when cancellable + is cancelled in some thread.

+

data_destroy_func + will be called when the handler is +disconnected, or immediately if the cancellable is already +cancelled.

+

See “cancelled” for details on how to use this.

+

Since GLib 2.40, the lock protecting cancellable + is not held when +callback + is invoked. This lifts a restriction in place for +earlier GLib versions which now makes it easier to write cleanup +code that unconditionally invokes e.g. g_cancellable_cancel().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

cancellable

A GCancellable.

 

callback

The GCallback to connect.

 

data

Data to pass to callback +.

 

data_destroy_func

Free function for data +or NULL.

[allow-none]
+
+
+

Returns

+

The id of the signal handler or 0 if cancellable +has already +been cancelled.

+
+

Since: 2.22

+
+
+
+

g_cancellable_disconnect ()

+
void
+g_cancellable_disconnect (GCancellable *cancellable,
+                          gulong handler_id);
+

Disconnects a handler from a cancellable instance similar to +g_signal_handler_disconnect(). Additionally, in the event that a +signal handler is currently running, this call will block until the +handler has finished. Calling this function from a +“cancelled” signal handler will therefore result in a +deadlock.

+

This avoids a race condition where a thread cancels at the +same time as the cancellable operation is finished and the +signal handler is removed. See “cancelled” for +details on how to use this.

+

If cancellable + is NULL or handler_id + is 0 this function does +nothing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cancellable

A GCancellable or NULL.

[allow-none]

handler_id

Handler id of the handler to be disconnected, or 0.

 
+
+

Since: 2.22

+
+
+
+

g_cancellable_cancel ()

+
void
+g_cancellable_cancel (GCancellable *cancellable);
+

Will set cancellable + to cancelled, and will emit the +“cancelled” signal. (However, see the warning about +race conditions in the documentation for that signal if you are +planning to connect to it.)

+

This function is thread-safe. In other words, you can safely call +it from a thread other than the one running the operation that was +passed the cancellable +.

+

If cancellable + is NULL, this function returns immediately for convenience.

+

The convention within GIO is that cancelling an asynchronous +operation causes it to complete asynchronously. That is, if you +cancel the operation from the same thread in which it is running, +then the operation's GAsyncReadyCallback will not be invoked until +the application returns to the main loop.

+
+

Parameters

+
+++++ + + + + + +

cancellable

a GCancellable object.

[nullable]
+
+
+
+
+

Types and Values

+
+

GCancellable

+
typedef struct _GCancellable GCancellable;
+

Allows actions to be cancelled.

+
+
+
+

Signal Details

+
+

The “cancelled” signal

+
void
+user_function (GCancellable *cancellable,
+               gpointer      user_data)
+

Emitted when the operation has been cancelled.

+

Can be used by implementations of cancellable operations. If the +operation is cancelled from another thread, the signal will be +emitted in the thread that cancelled the operation, not the +thread that is running the operation.

+

Note that disconnecting from this signal (or any signal) in a +multi-threaded program is prone to race conditions. For instance +it is possible that a signal handler may be invoked even after +a call to g_signal_handler_disconnect() for that handler has +already returned.

+

There is also a problem when cancellation happens right before +connecting to the signal. If this happens the signal will +unexpectedly not be emitted, and checking before connecting to +the signal leaves a race condition where this is still happening.

+

In order to make it safe and easy to connect handlers there +are two helper functions: g_cancellable_connect() and +g_cancellable_disconnect() which protect against problems +like this.

+

An example of how to us this:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
// Make sure we don't do unnecessary work if already cancelled
+if (g_cancellable_set_error_if_cancelled (cancellable, error))
+  return;
+
+// Set up all the data needed to be able to handle cancellation
+// of the operation
+my_data = my_data_new (...);
+
+id = 0;
+if (cancellable)
+  id = g_cancellable_connect (cancellable,
+			      G_CALLBACK (cancelled_handler)
+			      data, NULL);
+
+// cancellable operation here...
+
+g_cancellable_disconnect (cancellable, id);
+
+// cancelled_handler is never called after this, it is now safe
+// to free the data
+my_data_free (my_data);
+
+ +

+

Note that the cancelled signal is emitted in the thread that +the user cancelled from, which may be the main thread. So, the +cancellable signal should not do something that can block.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cancellable

a GCancellable.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GCharsetConverter.html b/docs/reference/gio/html/GCharsetConverter.html new file mode 100644 index 0000000..ff2504f --- /dev/null +++ b/docs/reference/gio/html/GCharsetConverter.html @@ -0,0 +1,313 @@ + + + + +GCharsetConverter: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GCharsetConverter

+

GCharsetConverter — Convert between charsets

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+GCharsetConverter * + +g_charset_converter_new () +
+void + +g_charset_converter_set_use_fallback () +
+gboolean + +g_charset_converter_get_use_fallback () +
+guint + +g_charset_converter_get_num_fallbacks () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + +
+gchar *from-charsetRead / Write / Construct Only
+gchar *to-charsetRead / Write / Construct Only
gbooleanuse-fallbackRead / Write / Construct
+
+
+

Types and Values

+
++++ + + + + +
 GCharsetConverter
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GCharsetConverter
+
+
+
+

Implemented Interfaces

+

+GCharsetConverter implements + GConverter and GInitable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GCharsetConverter is an implementation of GConverter based on +GIConv.

+
+
+

Functions

+
+

g_charset_converter_new ()

+
GCharsetConverter *
+g_charset_converter_new (const gchar *to_charset,
+                         const gchar *from_charset,
+                         GError **error);
+

Creates a new GCharsetConverter.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

to_charset

destination charset

 

from_charset

source charset

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

a new GCharsetConverter or NULL on error.

+
+

Since: 2.24

+
+
+
+

g_charset_converter_set_use_fallback ()

+
void
+g_charset_converter_set_use_fallback (GCharsetConverter *converter,
+                                      gboolean use_fallback);
+

Sets the “use-fallback” property.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

converter

a GCharsetConverter

 

use_fallback

TRUE to use fallbacks

 
+
+

Since: 2.24

+
+
+
+

g_charset_converter_get_use_fallback ()

+
gboolean
+g_charset_converter_get_use_fallback (GCharsetConverter *converter);
+

Gets the “use-fallback” property.

+
+

Parameters

+
+++++ + + + + + +

converter

a GCharsetConverter

 
+
+
+

Returns

+

TRUE if fallbacks are used by converter +

+
+

Since: 2.24

+
+
+
+

g_charset_converter_get_num_fallbacks ()

+
guint
+g_charset_converter_get_num_fallbacks (GCharsetConverter *converter);
+

Gets the number of fallbacks that converter + has applied so far.

+
+

Parameters

+
+++++ + + + + + +

converter

a GCharsetConverter

 
+
+
+

Returns

+

the number of fallbacks that converter +has applied

+
+

Since: 2.24

+
+
+
+

Types and Values

+
+

GCharsetConverter

+
typedef struct _GCharsetConverter GCharsetConverter;
+

Conversions between character sets.

+
+
+
+

Property Details

+
+

The “from-charset” property

+
  “from-charset”             gchar *
+

The character encoding to convert from.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+

The “to-charset” property

+
  “to-charset”               gchar *
+

The character encoding to convert to.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+

The “use-fallback” property

+
  “use-fallback”             gboolean
+

Use fallback (of form \<hexval>) for invalid bytes.

+

Flags: Read / Write / Construct

+

Default value: FALSE

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GConverter.html b/docs/reference/gio/html/GConverter.html new file mode 100644 index 0000000..0c3032a --- /dev/null +++ b/docs/reference/gio/html/GConverter.html @@ -0,0 +1,466 @@ + + + + +GConverter: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GConverter

+

GConverter — Data conversion interface

+
+
+

Functions

+
++++ + + + + + + + + + + +
+GConverterResult + +g_converter_convert () +
+void + +g_converter_reset () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + +
 GConverter
structGConverterIface
enumGConverterResult
enumGConverterFlags
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GConverter
+
+
+
+

Prerequisites

+

+GConverter requires + GObject.

+
+
+

Known Implementations

+

+GConverter is implemented by + GCharsetConverter, GZlibCompressor and GZlibDecompressor.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GConverter is implemented by objects that convert +binary data in various ways. The conversion can be +stateful and may fail at any place.

+

Some example conversions are: character set conversion, +compression, decompression and regular expression +replace.

+
+
+

Functions

+
+

g_converter_convert ()

+
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);
+

This is the main operation used when converting data. It is to be called +multiple times in a loop, and each time it will do some work, i.e. +producing some output (in outbuf +) or consuming some input (from inbuf +) or +both. If its not possible to do any work an error is returned.

+

Note that a single call may not consume all input (or any input at all). +Also a call may produce output even if given no input, due to state stored +in the converter producing output.

+

If any data was either produced or consumed, and then an error happens, then +only the successful conversion is reported and the error is returned on the +next call.

+

A full conversion loop involves calling this method repeatedly, each time +giving it new input and space output space. When there is no more input +data after the data in inbuf +, the flag G_CONVERTER_INPUT_AT_END must be set. +The loop will be (unless some error happens) returning G_CONVERTER_CONVERTED +each time until all data is consumed and all output is produced, then +G_CONVERTER_FINISHED is returned instead. Note, that G_CONVERTER_FINISHED +may be returned even if G_CONVERTER_INPUT_AT_END is not set, for instance +in a decompression converter where the end of data is detectable from the +data (and there might even be other data after the end of the compressed data).

+

When some data has successfully been converted bytes_read + and is set to +the number of bytes read from inbuf +, and bytes_written + is set to indicate +how many bytes was written to outbuf +. If there are more data to output +or consume (i.e. unless the G_CONVERTER_INPUT_AT_END is specified) then +G_CONVERTER_CONVERTED is returned, and if no more data is to be output +then G_CONVERTER_FINISHED is returned.

+

On error G_CONVERTER_ERROR is returned and error + is set accordingly. +Some errors need special handling:

+

G_IO_ERROR_NO_SPACE is returned if there is not enough space +to write the resulting converted data, the application should +call the function again with a larger outbuf + to continue.

+

G_IO_ERROR_PARTIAL_INPUT is returned if there is not enough +input to fully determine what the conversion should produce, +and the G_CONVERTER_INPUT_AT_END flag is not set. This happens for +example with an incomplete multibyte sequence when converting text, +or when a regexp matches up to the end of the input (and may match +further input). It may also happen when inbuf_size + is zero and +there is no more data to produce.

+

When this happens the application should read more input and then +call the function again. If further input shows that there is no +more data call the function again with the same data but with +the G_CONVERTER_INPUT_AT_END flag set. This may cause the conversion +to finish as e.g. in the regexp match case (or, to fail again with +G_IO_ERROR_PARTIAL_INPUT in e.g. a charset conversion where the +input is actually partial).

+

After g_converter_convert() has returned G_CONVERTER_FINISHED the +converter object is in an invalid state where its not allowed +to call g_converter_convert() anymore. At this time you can only +free the object or call g_converter_reset() to reset it to the +initial state.

+

If the flag G_CONVERTER_FLUSH is set then conversion is modified +to try to write out all internal state to the output. The application +has to call the function multiple times with the flag set, and when +the available input has been consumed and all internal state has +been produced then G_CONVERTER_FLUSHED (or G_CONVERTER_FINISHED if +really at the end) is returned instead of G_CONVERTER_CONVERTED. +This is somewhat similar to what happens at the end of the input stream, +but done in the middle of the data.

+

This has different meanings for different conversions. For instance +in a compression converter it would mean that we flush all the +compression state into output such that if you uncompress the +compressed data you get back all the input data. Doing this may +make the final file larger due to padding though. Another example +is a regexp conversion, where if you at the end of the flushed data +have a match, but there is also a potential longer match. In the +non-flushed case we would ask for more input, but when flushing we +treat this as the end of input and do the match.

+

Flushing is not always possible (like if a charset converter flushes +at a partial multibyte sequence). Converters are supposed to try +to produce as much output as possible and then return an error +(typically G_IO_ERROR_PARTIAL_INPUT).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

converter

a GConverter.

 

inbuf

the buffer +containing the data to convert.

[array length=inbuf_size][element-type guint8]

inbuf_size

the number of bytes in inbuf +

 

outbuf

a buffer to write +converted data in.

[element-type guint8][array length=outbuf_size]

outbuf_size

the number of bytes in outbuf +, must be at least one

 

flags

a GConverterFlags controlling the conversion details

 

bytes_read

will be set to the number of bytes read from inbuf +on success.

[out]

bytes_written

will be set to the number of bytes written to outbuf +on success.

[out]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

a GConverterResult, G_CONVERTER_ERROR on error.

+
+

Since: 2.24

+
+
+
+

g_converter_reset ()

+
void
+g_converter_reset (GConverter *converter);
+

Resets all internal state in the converter, making it behave +as if it was just created. If the converter has any internal +state that would produce output then that output is lost.

+
+

Parameters

+
+++++ + + + + + +

converter

a GConverter.

 
+
+

Since: 2.24

+
+
+
+

Types and Values

+
+

GConverter

+
typedef struct _GConverter GConverter;
+

Seek object for streaming operations.

+

Since: 2.24

+
+
+
+

struct GConverterIface

+
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);
+};
+
+

Provides an interface for converting data from one type +to another type. The conversion can be stateful +and may fail at any place.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

The parent interface.

 

convert ()

Converts data.

 

reset ()

Reverts the internal state of the converter to its initial state.

 
+
+

Since: 2.24

+
+
+
+

enum GConverterResult

+

Results returned from g_converter_convert().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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

+
 
+
+

Since: 2.24

+
+
+
+

enum GConverterFlags

+

Flags used when calling a g_converter_convert().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

G_CONVERTER_NO_FLAGS

+

No flags.

+
 

G_CONVERTER_INPUT_AT_END

+

At end of input data

+
 

G_CONVERTER_FLUSH

+

Flush data

+
 
+
+

Since: 2.24

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GCredentials.html b/docs/reference/gio/html/GCredentials.html new file mode 100644 index 0000000..cfb5792 --- /dev/null +++ b/docs/reference/gio/html/GCredentials.html @@ -0,0 +1,557 @@ + + + + +GCredentials: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GCredentials

+

GCredentials — An object containing credentials

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GCredentials * + +g_credentials_new () +
+gchar * + +g_credentials_to_string () +
+gpointer + +g_credentials_get_native () +
+void + +g_credentials_set_native () +
+gboolean + +g_credentials_is_same_user () +
+uid_t + +g_credentials_get_unix_user () +
+gboolean + +g_credentials_set_unix_user () +
+pid_t + +g_credentials_get_unix_pid () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GCredentials
enumGCredentialsType
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GCredentials
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

The GCredentials type is a reference-counted wrapper for native +credentials. This information is typically used for identifying, +authenticating and authorizing other processes.

+

Some operating systems supports looking up the credentials of the +remote peer of a communication endpoint - see e.g. +g_socket_get_credentials().

+

Some operating systems supports securely sending and receiving +credentials over a Unix Domain Socket, see +GUnixCredentialsMessage, g_unix_connection_send_credentials() and +g_unix_connection_receive_credentials() for details.

+

On Linux, the native credential type is a struct ucred - see the +unix(7) man page for details. This corresponds to +G_CREDENTIALS_TYPE_LINUX_UCRED.

+

On FreeBSD, Debian GNU/kFreeBSD, and GNU/Hurd, the native +credential type is a struct cmsgcred. This corresponds +to G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED.

+

On NetBSD, the native credential type is a struct unpcbid. +This corresponds to G_CREDENTIALS_TYPE_NETBSD_UNPCBID.

+

On OpenBSD, the native credential type is a struct sockpeercred. +This corresponds to G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED.

+

On Solaris (including OpenSolaris and its derivatives), the native +credential type is a ucred_t. This corresponds to +G_CREDENTIALS_TYPE_SOLARIS_UCRED.

+
+
+

Functions

+
+

g_credentials_new ()

+
GCredentials *
+g_credentials_new (void);
+

Creates a new GCredentials object with credentials matching the +the current process.

+
+

Returns

+

A GCredentials. Free with g_object_unref().

+
+

Since: 2.26

+
+
+
+

g_credentials_to_string ()

+
gchar *
+g_credentials_to_string (GCredentials *credentials);
+

Creates a human-readable textual representation of credentials + +that can be used in logging and debug messages. The format of the +returned string may change in future GLib release.

+
+

Parameters

+
+++++ + + + + + +

credentials

A GCredentials object.

 
+
+
+

Returns

+

A string that should be freed with g_free().

+
+

Since: 2.26

+
+
+
+

g_credentials_get_native ()

+
gpointer
+g_credentials_get_native (GCredentials *credentials,
+                          GCredentialsType native_type);
+

Gets a pointer to native credentials of type native_type + from +credentials +.

+

It is a programming error (which will cause an warning to be +logged) to use this method if there is no GCredentials support for +the OS or if native_type + isn't supported by the OS.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

credentials

A GCredentials.

 

native_type

The type of native credentials to get.

 
+
+
+

Returns

+

The pointer to native credentials or NULL if the +operation there is no GCredentials support for the OS or if +native_type +isn't supported by the OS. Do not free the returned +data, it is owned by credentials +.

+
+

Since: 2.26

+
+
+
+

g_credentials_set_native ()

+
void
+g_credentials_set_native (GCredentials *credentials,
+                          GCredentialsType native_type,
+                          gpointer native);
+

Copies the native credentials of type native_type + from native + +into credentials +.

+

It is a programming error (which will cause an warning to be +logged) to use this method if there is no GCredentials support for +the OS or if native_type + isn't supported by the OS.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

credentials

A GCredentials.

 

native_type

The type of native credentials to set.

 

native

A pointer to native credentials.

[not nullable]
+
+

Since: 2.26

+
+
+
+

g_credentials_is_same_user ()

+
gboolean
+g_credentials_is_same_user (GCredentials *credentials,
+                            GCredentials *other_credentials,
+                            GError **error);
+

Checks if credentials + and other_credentials + is the same user.

+

This operation can fail if GCredentials is not supported on the +the OS.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

credentials

A GCredentials.

 

other_credentials

A GCredentials.

 

error

Return location for error or NULL.

 
+
+
+

Returns

+

TRUE if credentials +and other_credentials +has the same +user, FALSE otherwise or if error +is set.

+
+

Since: 2.26

+
+
+
+

g_credentials_get_unix_user ()

+
uid_t
+g_credentials_get_unix_user (GCredentials *credentials,
+                             GError **error);
+

Tries to get the UNIX user identifier from credentials +. This +method is only available on UNIX platforms.

+

This operation can fail if GCredentials is not supported on the +OS or if the native credentials type does not contain information +about the UNIX user.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

credentials

A GCredentials

 

error

Return location for error or NULL.

 
+
+
+

Returns

+

The UNIX user identifier or -1 if error +is set.

+
+

Since: 2.26

+
+
+
+

g_credentials_set_unix_user ()

+
gboolean
+g_credentials_set_unix_user (GCredentials *credentials,
+                             uid_t uid,
+                             GError **error);
+

Tries to set the UNIX user identifier on credentials +. This method +is only available on UNIX platforms.

+

This operation can fail if GCredentials is not supported on the +OS or if the native credentials type does not contain information +about the UNIX user. It can also fail if the OS does not allow the +use of "spoofed" credentials.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

credentials

A GCredentials.

 

uid

The UNIX user identifier to set.

 

error

Return location for error or NULL.

 
+
+
+

Returns

+

TRUE if uid +was set, FALSE if error is set.

+
+

Since: 2.26

+
+
+
+

g_credentials_get_unix_pid ()

+
pid_t
+g_credentials_get_unix_pid (GCredentials *credentials,
+                            GError **error);
+

Tries to get the UNIX process identifier from credentials +. This +method is only available on UNIX platforms.

+

This operation can fail if GCredentials is not supported on the +OS or if the native credentials type does not contain information +about the UNIX process ID.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

credentials

A GCredentials

 

error

Return location for error or NULL.

 
+
+
+

Returns

+

The UNIX process ID, or -1 if error +is set.

+
+

Since: 2.36

+
+
+
+

Types and Values

+
+

GCredentials

+
typedef struct _GCredentials GCredentials;
+

The GCredentials structure contains only private data and +should only be accessed using the provided API.

+

Since: 2.26

+
+
+
+

enum GCredentialsType

+

Enumeration describing different kinds of native credential types.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 

G_CREDENTIALS_TYPE_SOLARIS_UCRED

+

The native credentials type is a <type>ucred_t</type>. Added in 2.40.

+
 

G_CREDENTIALS_TYPE_NETBSD_UNPCBID

+

The native credentials type is a <type>struct unpcbid</type>.

+
 
+
+

Since: 2.26

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusActionGroup.html b/docs/reference/gio/html/GDBusActionGroup.html new file mode 100644 index 0000000..a242608 --- /dev/null +++ b/docs/reference/gio/html/GDBusActionGroup.html @@ -0,0 +1,162 @@ + + + + +GDBusActionGroup: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusActionGroup

+

GDBusActionGroup — A D-Bus GActionGroup implementation

+
+
+

Functions

+
++++ + + + + +
+GDBusActionGroup * + +g_dbus_action_group_get () +
+
+
+

Types and Values

+
++++ + + + + +
 GDBusActionGroup
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GDBusActionGroup
+
+
+
+

Implemented Interfaces

+

+GDBusActionGroup implements + GActionGroup and GRemoteActionGroup.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GDBusActionGroup is an implementation of the GActionGroup +interface that can be used as a proxy for an action group +that is exported over D-Bus with g_dbus_connection_export_action_group().

+
+
+

Functions

+
+

g_dbus_action_group_get ()

+
GDBusActionGroup *
+g_dbus_action_group_get (GDBusConnection *connection,
+                         const gchar *bus_name,
+                         const gchar *object_path);
+

Obtains a GDBusActionGroup for the action group which is exported at +the given bus_name + and object_path +.

+

The thread default main context is taken at the time of this call. +All signals on the menu model (and any linked models) are reported +with respect to this context. All calls on the returned menu model +(and linked models) must also originate from this same context, with +the thread default main context unchanged.

+

This call is non-blocking. The returned action group may or may not +already be filled in. The correct thing to do is connect the signals +for the action group to monitor for changes and then to call +g_action_group_list_actions() to get the initial list.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

connection

A GDBusConnection

 

bus_name

the bus name which exports the action group

 

object_path

the object path at which the action group is exported

 
+
+
+

Returns

+

a GDBusActionGroup.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

GDBusActionGroup

+
typedef struct _GDBusActionGroup GDBusActionGroup;
+

GDBusActionGroup is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

See Also

+

GActionGroup exporter

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusAuthObserver.html b/docs/reference/gio/html/GDBusAuthObserver.html new file mode 100644 index 0000000..b690ebc --- /dev/null +++ b/docs/reference/gio/html/GDBusAuthObserver.html @@ -0,0 +1,384 @@ + + + + +GDBusAuthObserver: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusAuthObserver

+

GDBusAuthObserver — Object used for authenticating connections

+
+
+

Functions

+ +
+ +
+

Types and Values

+
++++ + + + + +
 GDBusAuthObserver
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GDBusAuthObserver
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

The GDBusAuthObserver type provides a mechanism for participating +in how a GDBusServer (or a GDBusConnection) authenticates remote +peers. Simply instantiate a GDBusAuthObserver and connect to the +signals you are interested in. Note that new signals may be added +in the future

+
+

Controlling Authentication

+

For example, if you only want to allow D-Bus connections from +processes owned by the same uid as the server, you would use a +signal handler like the following:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
static gboolean
+on_authorize_authenticated_peer (GDBusAuthObserver *observer,
+                                 GIOStream         *stream,
+                                 GCredentials      *credentials,
+                                 gpointer           user_data)
+{
+  gboolean authorized;
+
+  authorized = FALSE;
+  if (credentials != NULL)
+    {
+      GCredentials *own_credentials;
+      own_credentials = g_credentials_new ();
+      if (g_credentials_is_same_user (credentials, own_credentials, NULL))
+        authorized = TRUE;
+      g_object_unref (own_credentials);
+    }
+
+  return authorized;
+}
+
+ +

+
+
+
+

Functions

+
+

g_dbus_auth_observer_new ()

+
GDBusAuthObserver *
+g_dbus_auth_observer_new (void);
+

Creates a new GDBusAuthObserver object.

+
+

Returns

+

A GDBusAuthObserver. Free with g_object_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_auth_observer_authorize_authenticated_peer ()

+
gboolean
+g_dbus_auth_observer_authorize_authenticated_peer
+                               (GDBusAuthObserver *observer,
+                                GIOStream *stream,
+                                GCredentials *credentials);
+

Emits the “authorize-authenticated-peer” signal on observer +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

observer

A GDBusAuthObserver.

 

stream

A GIOStream for the GDBusConnection.

 

credentials

Credentials received from the peer or NULL.

[allow-none]
+
+
+

Returns

+

TRUE if the peer is authorized, FALSE if not.

+
+

Since: 2.26

+
+
+
+

g_dbus_auth_observer_allow_mechanism ()

+
gboolean
+g_dbus_auth_observer_allow_mechanism (GDBusAuthObserver *observer,
+                                      const gchar *mechanism);
+

Emits the “allow-mechanism” signal on observer +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

observer

A GDBusAuthObserver.

 

mechanism

The name of the mechanism, e.g. DBUS_COOKIE_SHA1.

 
+
+
+

Returns

+

TRUE if mechanism +can be used to authenticate the other peer, FALSE if not.

+
+

Since: 2.34

+
+
+
+

Types and Values

+
+

GDBusAuthObserver

+
typedef struct _GDBusAuthObserver GDBusAuthObserver;
+

The GDBusAuthObserver structure contains only private data and +should only be accessed using the provided API.

+

Since: 2.26

+
+
+
+

Signal Details

+
+

The “allow-mechanism” signal

+
gboolean
+user_function (GDBusAuthObserver *observer,
+               gchar             *mechanism,
+               gpointer           user_data)
+

Emitted to check if mechanism + is allowed to be used.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

observer

The GDBusAuthObserver emitting the signal.

 

mechanism

The name of the mechanism, e.g. DBUS_COOKIE_SHA1.

 

user_data

user data set when the signal handler was connected.

 
+
+
+

Returns

+

TRUE if mechanism +can be used to authenticate the other peer, FALSE if not.

+
+

Flags: Run Last

+

Since: 2.34

+
+
+
+

The “authorize-authenticated-peer” signal

+
gboolean
+user_function (GDBusAuthObserver *observer,
+               GIOStream         *stream,
+               GCredentials      *credentials,
+               gpointer           user_data)
+

Emitted to check if a peer that is successfully authenticated +is authorized.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

observer

The GDBusAuthObserver emitting the signal.

 

stream

A GIOStream for the GDBusConnection.

 

credentials

Credentials received from the peer or NULL.

[allow-none]

user_data

user data set when the signal handler was connected.

 
+
+
+

Returns

+

TRUE if the peer is authorized, FALSE if not.

+
+

Flags: Run Last

+

Since: 2.26

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusConnection.html b/docs/reference/gio/html/GDBusConnection.html new file mode 100644 index 0000000..5b3832b --- /dev/null +++ b/docs/reference/gio/html/GDBusConnection.html @@ -0,0 +1,4772 @@ + + + + +GDBusConnection: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusConnection

+

GDBusConnection — D-Bus Connections

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +g_bus_get () +
+GDBusConnection * + +g_bus_get_finish () +
+GDBusConnection * + +g_bus_get_sync () +
+void + +g_dbus_connection_new () +
+GDBusConnection * + +g_dbus_connection_new_finish () +
+GDBusConnection * + +g_dbus_connection_new_sync () +
+void + +g_dbus_connection_new_for_address () +
+GDBusConnection * + +g_dbus_connection_new_for_address_finish () +
+GDBusConnection * + +g_dbus_connection_new_for_address_sync () +
+void + +g_dbus_connection_start_message_processing () +
+void + +g_dbus_connection_close () +
+gboolean + +g_dbus_connection_close_finish () +
+gboolean + +g_dbus_connection_close_sync () +
+gboolean + +g_dbus_connection_is_closed () +
+void + +g_dbus_connection_flush () +
+gboolean + +g_dbus_connection_flush_finish () +
+gboolean + +g_dbus_connection_flush_sync () +
+gboolean + +g_dbus_connection_get_exit_on_close () +
+void + +g_dbus_connection_set_exit_on_close () +
+GIOStream * + +g_dbus_connection_get_stream () +
const gchar * + +g_dbus_connection_get_guid () +
const gchar * + +g_dbus_connection_get_unique_name () +
+GDBusCapabilityFlags + +g_dbus_connection_get_capabilities () +
+GCredentials * + +g_dbus_connection_get_peer_credentials () +
+guint32 + +g_dbus_connection_get_last_serial () +
+void + +g_dbus_connection_call () +
+GVariant * + +g_dbus_connection_call_finish () +
+GVariant * + +g_dbus_connection_call_sync () +
+void + +g_dbus_connection_call_with_unix_fd_list () +
+GVariant * + +g_dbus_connection_call_with_unix_fd_list_finish () +
+GVariant * + +g_dbus_connection_call_with_unix_fd_list_sync () +
+gboolean + +g_dbus_connection_emit_signal () +
+void + +(*GDBusSignalCallback) () +
+guint + +g_dbus_connection_signal_subscribe () +
+void + +g_dbus_connection_signal_unsubscribe () +
+gboolean + +g_dbus_connection_send_message () +
+void + +g_dbus_connection_send_message_with_reply () +
+GDBusMessage * + +g_dbus_connection_send_message_with_reply_finish () +
+GDBusMessage * + +g_dbus_connection_send_message_with_reply_sync () +
+GDBusMessage * + +(*GDBusMessageFilterFunction) () +
+guint + +g_dbus_connection_add_filter () +
+void + +g_dbus_connection_remove_filter () +
+void + +(*GDBusInterfaceMethodCallFunc) () +
+GVariant * + +(*GDBusInterfaceGetPropertyFunc) () +
+gboolean + +(*GDBusInterfaceSetPropertyFunc) () +
+guint + +g_dbus_connection_register_object () +
+gboolean + +g_dbus_connection_unregister_object () +
+guint + +g_dbus_connection_register_object_with_closures () +
+gchar ** + +(*GDBusSubtreeEnumerateFunc) () +
+GDBusInterfaceInfo ** + +(*GDBusSubtreeIntrospectFunc) () +
const GDBusInterfaceVTable * + +(*GDBusSubtreeDispatchFunc) () +
+guint + +g_dbus_connection_register_subtree () +
+gboolean + +g_dbus_connection_unregister_subtree () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gchar *addressWrite / Construct Only
+GDBusAuthObserver *authentication-observerWrite / Construct Only
GDBusCapabilityFlagscapabilitiesRead
gbooleanclosedRead
gbooleanexit-on-closeRead / Write
GDBusConnectionFlagsflagsWrite / Construct Only
+gchar *guidRead / Write / Construct Only
+GIOStream *streamRead / Write / Construct Only
+gchar *unique-nameRead
+
+
+

Signals

+
+++++ + + + + + +
voidclosedRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
enumGBusType
 GDBusConnection
enumGDBusConnectionFlags
enumGDBusCapabilityFlags
enumGDBusCallFlags
enumGDBusSignalFlags
enumGDBusSendMessageFlags
 GDBusInterfaceVTable
 GDBusSubtreeVTable
enumGDBusSubtreeFlags
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GDBusConnection
+
+
+
+

Implemented Interfaces

+

+GDBusConnection implements + GInitable and GAsyncInitable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

The GDBusConnection type is used for D-Bus connections to remote +peers such as a message buses. It is a low-level API that offers a +lot of flexibility. For instance, it lets you establish a connection +over any transport that can by represented as an GIOStream.

+

This class is rarely used directly in D-Bus clients. If you are writing +a D-Bus client, it is often easier to use the g_bus_own_name(), +g_bus_watch_name() or g_dbus_proxy_new_for_bus() APIs.

+

As an exception to the usual GLib rule that a particular object must not +be used by two threads at the same time, GDBusConnection's methods may be +called from any thread. This is so that g_bus_get() and g_bus_get_sync() +can safely return the same GDBusConnection when called from any thread.

+

Most of the ways to obtain a GDBusConnection automatically initialize it +(i.e. connect to D-Bus): for instance, g_dbus_connection_new() and +g_bus_get(), and the synchronous versions of those methods, give you an +initialized connection. Language bindings for GIO should use +g_initable_new() or g_async_initable_new_async(), which also initialize the +connection.

+

If you construct an uninitialized GDBusConnection, such as via +g_object_new(), you must initialize it via g_initable_init() or +g_async_initable_init_async() before using its methods or properties. +Calling methods or accessing properties on a GDBusConnection that has not +completed initialization successfully is considered to be invalid, and leads +to undefined behaviour. In particular, if initialization fails with a +GError, the only valid thing you can do with that GDBusConnection is to +free it with g_object_unref().

+
+

An example D-Bus server

+

Here is an example for a D-Bus server: +gdbus-example-server.c

+
+
+

An example for exporting a subtree

+

Here is an example for exporting a subtree: +gdbus-example-subtree.c

+
+
+

An example for file descriptor passing

+

Here is an example for passing UNIX file descriptors: +gdbus-unix-fd-client.c

+
+
+

An example for exporting a GObject

+

Here is an example for exporting a GObject: +gdbus-example-export.c

+
+
+
+

Functions

+
+

g_bus_get ()

+
void
+g_bus_get (GBusType bus_type,
+           GCancellable *cancellable,
+           GAsyncReadyCallback callback,
+           gpointer user_data);
+

Asynchronously connects to the message bus specified by bus_type +.

+

When the operation is finished, callback + will be invoked. You can +then call g_bus_get_finish() to get the result of the operation.

+

This is a asynchronous failable function. See g_bus_get_sync() for +the synchronous version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

bus_type

a GBusType

 

cancellable

a GCancellable or NULL.

[allow-none]

callback

a GAsyncReadyCallback to call when the request is satisfied

 

user_data

the data to pass to callback +

 
+
+

Since: 2.26

+
+
+
+

g_bus_get_finish ()

+
GDBusConnection *
+g_bus_get_finish (GAsyncResult *res,
+                  GError **error);
+

Finishes an operation started with g_bus_get().

+

The returned object is a singleton, that is, shared with other +callers of g_bus_get() and g_bus_get_sync() for bus_type +. In the +event that you need a private message bus connection, use +g_dbus_address_get_for_bus_sync() and +g_dbus_connection_new_for_address().

+

Note that the returned GDBusConnection object will (usually) have +the “exit-on-close” property set to TRUE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

res

a GAsyncResult obtained from the GAsyncReadyCallback passed +to g_bus_get()

 

error

return location for error or NULL

 
+
+
+

Returns

+

a GDBusConnection or NULL if error +is set. +Free with g_object_unref().

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_bus_get_sync ()

+
GDBusConnection *
+g_bus_get_sync (GBusType bus_type,
+                GCancellable *cancellable,
+                GError **error);
+

Synchronously connects to the message bus specified by bus_type +. +Note that the returned object may shared with other callers, +e.g. if two separate parts of a process calls this function with +the same bus_type +, they will share the same object.

+

This is a synchronous failable function. See g_bus_get() and +g_bus_get_finish() for the asynchronous version.

+

The returned object is a singleton, that is, shared with other +callers of g_bus_get() and g_bus_get_sync() for bus_type +. In the +event that you need a private message bus connection, use +g_dbus_address_get_for_bus_sync() and +g_dbus_connection_new_for_address().

+

Note that the returned GDBusConnection object will (usually) have +the “exit-on-close” property set to TRUE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bus_type

a GBusType

 

cancellable

a GCancellable or NULL.

[allow-none]

error

return location for error or NULL

 
+
+
+

Returns

+

a GDBusConnection or NULL if error +is set. +Free with g_object_unref().

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_new ()

+
void
+g_dbus_connection_new (GIOStream *stream,
+                       const gchar *guid,
+                       GDBusConnectionFlags flags,
+                       GDBusAuthObserver *observer,
+                       GCancellable *cancellable,
+                       GAsyncReadyCallback callback,
+                       gpointer user_data);
+

Asynchronously sets up a D-Bus connection for exchanging D-Bus messages +with the end represented by stream +.

+

If stream + is a GSocketConnection, then the corresponding GSocket +will be put into non-blocking mode.

+

The D-Bus connection will interact with stream + from a worker thread. +As a result, the caller should not interact with stream + after this +method has been called, except by calling g_object_unref() on it.

+

If observer + is not NULL it may be used to control the +authentication process.

+

When the operation is finished, callback + will be invoked. You can +then call g_dbus_connection_new_finish() to get the result of the +operation.

+

This is a asynchronous failable constructor. See +g_dbus_connection_new_sync() for the synchronous +version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GIOStream

 

guid

the GUID to use if a authenticating as a server or NULL.

[allow-none]

flags

flags describing how to make the connection

 

observer

a GDBusAuthObserver or NULL.

[allow-none]

cancellable

a GCancellable or NULL.

[allow-none]

callback

a GAsyncReadyCallback to call when the request is satisfied

 

user_data

the data to pass to callback +

 
+
+

Since: 2.26

+
+
+
+

g_dbus_connection_new_finish ()

+
GDBusConnection *
+g_dbus_connection_new_finish (GAsyncResult *res,
+                              GError **error);
+

Finishes an operation started with g_dbus_connection_new().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

res

a GAsyncResult obtained from the GAsyncReadyCallback +passed to g_dbus_connection_new().

 

error

return location for error or NULL

 
+
+
+

Returns

+

a GDBusConnection or NULL if error +is set. Free +with g_object_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_new_sync ()

+
GDBusConnection *
+g_dbus_connection_new_sync (GIOStream *stream,
+                            const gchar *guid,
+                            GDBusConnectionFlags flags,
+                            GDBusAuthObserver *observer,
+                            GCancellable *cancellable,
+                            GError **error);
+

Synchronously sets up a D-Bus connection for exchanging D-Bus messages +with the end represented by stream +.

+

If stream + is a GSocketConnection, then the corresponding GSocket +will be put into non-blocking mode.

+

The D-Bus connection will interact with stream + from a worker thread. +As a result, the caller should not interact with stream + after this +method has been called, except by calling g_object_unref() on it.

+

If observer + is not NULL it may be used to control the +authentication process.

+

This is a synchronous failable constructor. See +g_dbus_connection_new() for the asynchronous version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GIOStream

 

guid

the GUID to use if a authenticating as a server or NULL.

[allow-none]

flags

flags describing how to make the connection

 

observer

a GDBusAuthObserver or NULL.

[allow-none]

cancellable

a GCancellable or NULL.

[allow-none]

error

return location for error or NULL

 
+
+
+

Returns

+

a GDBusConnection or NULL if error +is set. Free with g_object_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_new_for_address ()

+
void
+g_dbus_connection_new_for_address (const gchar *address,
+                                   GDBusConnectionFlags flags,
+                                   GDBusAuthObserver *observer,
+                                   GCancellable *cancellable,
+                                   GAsyncReadyCallback callback,
+                                   gpointer user_data);
+

Asynchronously connects and sets up a D-Bus client connection for +exchanging D-Bus messages with an endpoint specified by address + +which must be in the D-Bus address format.

+

This constructor can only be used to initiate client-side +connections - use g_dbus_connection_new() if you need to act as the +server. In particular, flags + cannot contain the +G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER or +G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS flags.

+

When the operation is finished, callback + will be invoked. You can +then call g_dbus_connection_new_finish() to get the result of the +operation.

+

If observer + is not NULL it may be used to control the +authentication process.

+

This is a asynchronous failable constructor. See +g_dbus_connection_new_for_address_sync() for the synchronous +version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

address

a D-Bus address

 

flags

flags describing how to make the connection

 

observer

a GDBusAuthObserver or NULL.

[allow-none]

cancellable

a GCancellable or NULL.

[allow-none]

callback

a GAsyncReadyCallback to call when the request is satisfied

 

user_data

the data to pass to callback +

 
+
+

Since: 2.26

+
+
+
+

g_dbus_connection_new_for_address_finish ()

+
GDBusConnection *
+g_dbus_connection_new_for_address_finish
+                               (GAsyncResult *res,
+                                GError **error);
+

Finishes an operation started with g_dbus_connection_new_for_address().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

res

a GAsyncResult obtained from the GAsyncReadyCallback passed +to g_dbus_connection_new()

 

error

return location for error or NULL

 
+
+
+

Returns

+

a GDBusConnection or NULL if error +is set. Free with +g_object_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_new_for_address_sync ()

+
GDBusConnection *
+g_dbus_connection_new_for_address_sync
+                               (const gchar *address,
+                                GDBusConnectionFlags flags,
+                                GDBusAuthObserver *observer,
+                                GCancellable *cancellable,
+                                GError **error);
+

Synchronously connects and sets up a D-Bus client connection for +exchanging D-Bus messages with an endpoint specified by address + +which must be in the D-Bus address format.

+

This constructor can only be used to initiate client-side +connections - use g_dbus_connection_new_sync() if you need to act +as the server. In particular, flags + cannot contain the +G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER or +G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS flags.

+

This is a synchronous failable constructor. See +g_dbus_connection_new_for_address() for the asynchronous version.

+

If observer + is not NULL it may be used to control the +authentication process.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

address

a D-Bus address

 

flags

flags describing how to make the connection

 

observer

a GDBusAuthObserver or NULL.

[allow-none]

cancellable

a GCancellable or NULL.

[allow-none]

error

return location for error or NULL

 
+
+
+

Returns

+

a GDBusConnection or NULL if error +is set. Free with +g_object_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_start_message_processing ()

+
void
+g_dbus_connection_start_message_processing
+                               (GDBusConnection *connection);
+

If connection + was created with +G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING, this method +starts processing messages. Does nothing on if connection + wasn't +created with this flag or if the method has already been called.

+
+

Parameters

+
+++++ + + + + + +

connection

a GDBusConnection

 
+
+

Since: 2.26

+
+
+
+

g_dbus_connection_close ()

+
void
+g_dbus_connection_close (GDBusConnection *connection,
+                         GCancellable *cancellable,
+                         GAsyncReadyCallback callback,
+                         gpointer user_data);
+

Closes connection +. Note that this never causes the process to +exit (this might only happen if the other end of a shared message +bus connection disconnects, see “exit-on-close”).

+

Once the connection is closed, operations such as sending a message +will return with the error G_IO_ERROR_CLOSED. Closing a connection +will not automatically flush the connection so queued messages may +be lost. Use g_dbus_connection_flush() if you need such guarantees.

+

If connection + is already closed, this method fails with +G_IO_ERROR_CLOSED.

+

When connection + has been closed, the “closed” +signal is emitted in the +thread-default main context +of the thread that connection + was constructed in.

+

This is an asynchronous method. When the operation is finished, +callback + will be invoked in the +thread-default main context +of the thread you are calling this method from. You can +then call g_dbus_connection_close_finish() to get the result of the +operation. See g_dbus_connection_close_sync() for the synchronous +version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

cancellable

a GCancellable or NULL.

[allow-none]

callback

a GAsyncReadyCallback to call when the request is +satisfied or NULL if you don't care about the result.

[allow-none]

user_data

The data to pass to callback +

 
+
+

Since: 2.26

+
+
+
+

g_dbus_connection_close_finish ()

+
gboolean
+g_dbus_connection_close_finish (GDBusConnection *connection,
+                                GAsyncResult *res,
+                                GError **error);
+

Finishes an operation started with g_dbus_connection_close().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

res

a GAsyncResult obtained from the GAsyncReadyCallback passed +to g_dbus_connection_close()

 

error

return location for error or NULL

 
+
+
+

Returns

+

TRUE if the operation succeeded, FALSE if error +is set

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_close_sync ()

+
gboolean
+g_dbus_connection_close_sync (GDBusConnection *connection,
+                              GCancellable *cancellable,
+                              GError **error);
+

Synchronously closees connection +. The calling thread is blocked +until this is done. See g_dbus_connection_close() for the +asynchronous version of this method and more details about what it +does.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

cancellable

a GCancellable or NULL.

[allow-none]

error

return location for error or NULL

 
+
+
+

Returns

+

TRUE if the operation succeeded, FALSE if error +is set

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_is_closed ()

+
gboolean
+g_dbus_connection_is_closed (GDBusConnection *connection);
+

Gets whether connection + is closed.

+
+

Parameters

+
+++++ + + + + + +

connection

a GDBusConnection

 
+
+
+

Returns

+

TRUE if the connection is closed, FALSE otherwise

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_flush ()

+
void
+g_dbus_connection_flush (GDBusConnection *connection,
+                         GCancellable *cancellable,
+                         GAsyncReadyCallback callback,
+                         gpointer user_data);
+

Asynchronously flushes connection +, that is, writes all queued +outgoing message to the transport and then flushes the transport +(using g_output_stream_flush_async()). This is useful in programs +that wants to emit a D-Bus signal and then exit immediately. Without +flushing the connection, there is no guaranteed that the message has +been sent to the networking buffers in the OS kernel.

+

This is an asynchronous method. When the operation is finished, +callback + will be invoked in the +thread-default main context +of the thread you are calling this method from. You can +then call g_dbus_connection_flush_finish() to get the result of the +operation. See g_dbus_connection_flush_sync() for the synchronous +version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

cancellable

a GCancellable or NULL.

[allow-none]

callback

a GAsyncReadyCallback to call when the +request is satisfied or NULL if you don't care about the result.

[allow-none]

user_data

The data to pass to callback +

 
+
+

Since: 2.26

+
+
+
+

g_dbus_connection_flush_finish ()

+
gboolean
+g_dbus_connection_flush_finish (GDBusConnection *connection,
+                                GAsyncResult *res,
+                                GError **error);
+

Finishes an operation started with g_dbus_connection_flush().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

res

a GAsyncResult obtained from the GAsyncReadyCallback passed +to g_dbus_connection_flush()

 

error

return location for error or NULL

 
+
+
+

Returns

+

TRUE if the operation succeeded, FALSE if error +is set

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_flush_sync ()

+
gboolean
+g_dbus_connection_flush_sync (GDBusConnection *connection,
+                              GCancellable *cancellable,
+                              GError **error);
+

Synchronously flushes connection +. The calling thread is blocked +until this is done. See g_dbus_connection_flush() for the +asynchronous version of this method and more details about what it +does.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

cancellable

a GCancellable or NULL.

[allow-none]

error

return location for error or NULL

 
+
+
+

Returns

+

TRUE if the operation succeeded, FALSE if error +is set

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_get_exit_on_close ()

+
gboolean
+g_dbus_connection_get_exit_on_close (GDBusConnection *connection);
+

Gets whether the process is terminated when connection + is +closed by the remote peer. See +“exit-on-close” for more details.

+
+

Parameters

+
+++++ + + + + + +

connection

a GDBusConnection

 
+
+
+

Returns

+

whether the process is terminated when connection +is +closed by the remote peer

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_set_exit_on_close ()

+
void
+g_dbus_connection_set_exit_on_close (GDBusConnection *connection,
+                                     gboolean exit_on_close);
+

Sets whether the process should be terminated when connection + is +closed by the remote peer. See “exit-on-close” for +more details.

+

Note that this function should be used with care. Most modern UNIX +desktops tie the notion of a user session the session bus, and expect +all of a users applications to quit when their bus connection goes away. +If you are setting exit_on_close + to FALSE for the shared session +bus connection, you should make sure that your application exits +when the user session ends.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

connection

a GDBusConnection

 

exit_on_close

whether the process should be terminated +when connection +is closed by the remote peer

 
+
+

Since: 2.26

+
+
+
+

g_dbus_connection_get_stream ()

+
GIOStream *
+g_dbus_connection_get_stream (GDBusConnection *connection);
+

Gets the underlying stream used for IO.

+

While the GDBusConnection is active, it will interact with this +stream from a worker thread, so it is not safe to interact with +the stream directly.

+
+

Parameters

+
+++++ + + + + + +

connection

a GDBusConnection

 
+
+
+

Returns

+

the stream used for IO.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_get_guid ()

+
const gchar *
+g_dbus_connection_get_guid (GDBusConnection *connection);
+

The GUID of the peer performing the role of server when +authenticating. See “guid” for more details.

+
+

Parameters

+
+++++ + + + + + +

connection

a GDBusConnection

 
+
+
+

Returns

+

The GUID. Do not free this string, it is owned by +connection +.

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_get_unique_name ()

+
const gchar *
+g_dbus_connection_get_unique_name (GDBusConnection *connection);
+

Gets the unique name of connection + as assigned by the message +bus. This can also be used to figure out if connection + is a +message bus connection.

+
+

Parameters

+
+++++ + + + + + +

connection

a GDBusConnection

 
+
+
+

Returns

+

the unique name or NULL if connection +is not a message +bus connection. Do not free this string, it is owned by +connection +.

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_get_capabilities ()

+
GDBusCapabilityFlags
+g_dbus_connection_get_capabilities (GDBusConnection *connection);
+

Gets the capabilities negotiated with the remote peer

+
+

Parameters

+
+++++ + + + + + +

connection

a GDBusConnection

 
+
+
+

Returns

+

zero or more flags from the GDBusCapabilityFlags enumeration

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_get_peer_credentials ()

+
GCredentials *
+g_dbus_connection_get_peer_credentials
+                               (GDBusConnection *connection);
+

Gets the credentials of the authenticated peer. This will always +return NULL unless connection + acted as a server +(e.g. G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER was passed) +when set up and the client passed credentials as part of the +authentication process.

+

In a message bus setup, the message bus is always the server and +each application is a client. So this method will always return +NULL for message bus clients.

+
+

Parameters

+
+++++ + + + + + +

connection

a GDBusConnection

 
+
+
+

Returns

+

a GCredentials or NULL if not +available. Do not free this object, it is owned by connection +.

+

[transfer none][nullable]

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_get_last_serial ()

+
guint32
+g_dbus_connection_get_last_serial (GDBusConnection *connection);
+

Retrieves the last serial number assigned to a GDBusMessage on +the current thread. This includes messages sent via both low-level +API such as g_dbus_connection_send_message() as well as +high-level API such as g_dbus_connection_emit_signal(), +g_dbus_connection_call() or g_dbus_proxy_call().

+
+

Parameters

+
+++++ + + + + + +

connection

a GDBusConnection

 
+
+
+

Returns

+

the last used serial or zero when no message has been sent +within the current thread

+
+

Since: 2.34

+
+
+
+

g_dbus_connection_call ()

+
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);
+

Asynchronously invokes the method_name + method on the +interface_name + D-Bus interface on the remote object at +object_path + owned by bus_name +.

+

If connection + is closed then the operation will fail with +G_IO_ERROR_CLOSED. If cancellable + is canceled, the operation will +fail with G_IO_ERROR_CANCELLED. If parameters + contains a value +not compatible with the D-Bus protocol, the operation fails with +G_IO_ERROR_INVALID_ARGUMENT.

+

If reply_type + is non-NULL then the reply will be checked for having this type and an +error will be raised if it does not match. Said another way, if you give a reply_type + +then any non-NULL return value will be of this type.

+

If the parameters + GVariant is floating, it is consumed. This allows +convenient 'inline' use of g_variant_new(), e.g.:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
g_dbus_connection_call (connection,
+                        "org.freedesktop.StringThings",
+                        "/org/freedesktop/StringThings",
+                        "org.freedesktop.StringThings",
+                        "TwoStrings",
+                        g_variant_new ("(ss)",
+                                       "Thing One",
+                                       "Thing Two"),
+                        NULL,
+                        G_DBUS_CALL_FLAGS_NONE,
+                        -1,
+                        NULL,
+                        (GAsyncReadyCallback) two_strings_done,
+                        NULL);
+
+ +

+

This is an asynchronous method. When the operation is finished, +callback + will be invoked in the +thread-default main context +of the thread you are calling this method from. You can then call +g_dbus_connection_call_finish() to get the result of the operation. +See g_dbus_connection_call_sync() for the synchronous version of this +function.

+

If callback + is NULL then the D-Bus method call message will be sent with +the G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED flag set.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

bus_name

a unique or well-known bus name or NULL if +connection +is not a message bus connection.

[allow-none]

object_path

path of remote object

 

interface_name

D-Bus interface to invoke method on

 

method_name

the name of the method to invoke

 

parameters

a GVariant tuple with parameters for the method +or NULL if not passing parameters.

[allow-none]

reply_type

the expected type of the reply, or NULL.

[allow-none]

flags

flags from the GDBusCallFlags enumeration

 

timeout_msec

the timeout in milliseconds, -1 to use the default +timeout or G_MAXINT for no timeout

 

cancellable

a GCancellable or NULL.

[allow-none]

callback

a GAsyncReadyCallback to call when the request +is satisfied or NULL if you don't care about the result of the +method invocation.

[allow-none]

user_data

the data to pass to callback +

 
+
+

Since: 2.26

+
+
+
+

g_dbus_connection_call_finish ()

+
GVariant *
+g_dbus_connection_call_finish (GDBusConnection *connection,
+                               GAsyncResult *res,
+                               GError **error);
+

Finishes an operation started with g_dbus_connection_call().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

res

a GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_connection_call()

 

error

return location for error or NULL

 
+
+
+

Returns

+

NULL if error +is set. Otherwise a GVariant tuple with +return values. Free with g_variant_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_call_sync ()

+
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);
+

Synchronously invokes the method_name + method on the +interface_name + D-Bus interface on the remote object at +object_path + owned by bus_name +.

+

If connection + is closed then the operation will fail with +G_IO_ERROR_CLOSED. If cancellable + is canceled, the +operation will fail with G_IO_ERROR_CANCELLED. If parameters + +contains a value not compatible with the D-Bus protocol, the operation +fails with G_IO_ERROR_INVALID_ARGUMENT.

+

If reply_type + is non-NULL then the reply will be checked for having +this type and an error will be raised if it does not match. Said +another way, if you give a reply_type + then any non-NULL return +value will be of this type.

+

If the parameters + GVariant is floating, it is consumed. +This allows convenient 'inline' use of g_variant_new(), e.g.:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
g_dbus_connection_call_sync (connection,
+                             "org.freedesktop.StringThings",
+                             "/org/freedesktop/StringThings",
+                             "org.freedesktop.StringThings",
+                             "TwoStrings",
+                             g_variant_new ("(ss)",
+                                            "Thing One",
+                                            "Thing Two"),
+                             NULL,
+                             G_DBUS_CALL_FLAGS_NONE,
+                             -1,
+                             NULL,
+                             &error);
+
+ +

+

The calling thread is blocked until a reply is received. See +g_dbus_connection_call() for the asynchronous version of +this method.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

bus_name

a unique or well-known bus name or NULL if +connection +is not a message bus connection.

[allow-none]

object_path

path of remote object

 

interface_name

D-Bus interface to invoke method on

 

method_name

the name of the method to invoke

 

parameters

a GVariant tuple with parameters for the method +or NULL if not passing parameters.

[allow-none]

reply_type

the expected type of the reply, or NULL.

[allow-none]

flags

flags from the GDBusCallFlags enumeration

 

timeout_msec

the timeout in milliseconds, -1 to use the default +timeout or G_MAXINT for no timeout

 

cancellable

a GCancellable or NULL.

[allow-none]

error

return location for error or NULL

 
+
+
+

Returns

+

NULL if error +is set. Otherwise a GVariant tuple with +return values. Free with g_variant_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_call_with_unix_fd_list ()

+
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);
+

Like g_dbus_connection_call() but also takes a GUnixFDList object.

+

This method is only available on UNIX.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

bus_name

a unique or well-known bus name or NULL if +connection +is not a message bus connection.

[allow-none]

object_path

path of remote object

 

interface_name

D-Bus interface to invoke method on

 

method_name

the name of the method to invoke

 

parameters

a GVariant tuple with parameters for the method +or NULL if not passing parameters.

[allow-none]

reply_type

the expected type of the reply, or NULL.

[allow-none]

flags

flags from the GDBusCallFlags enumeration

 

timeout_msec

the timeout in milliseconds, -1 to use the default +timeout or G_MAXINT for no timeout

 

fd_list

a GUnixFDList or NULL.

[allow-none]

cancellable

a GCancellable or NULL.

[allow-none]

callback

a GAsyncReadyCallback to call when the request is +satisfied or NULL if you don't * care about the result of the +method invocation.

[allow-none]

user_data

The data to pass to callback +.

 
+
+

Since: 2.30

+
+
+
+

g_dbus_connection_call_with_unix_fd_list_finish ()

+
GVariant *
+g_dbus_connection_call_with_unix_fd_list_finish
+                               (GDBusConnection *connection,
+                                GUnixFDList **out_fd_list,
+                                GAsyncResult *res,
+                                GError **error);
+

Finishes an operation started with g_dbus_connection_call_with_unix_fd_list().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

out_fd_list

return location for a GUnixFDList or NULL.

[out][allow-none]

res

a GAsyncResult obtained from the GAsyncReadyCallback passed to +g_dbus_connection_call_with_unix_fd_list()

 

error

return location for error or NULL

 
+
+
+

Returns

+

NULL if error +is set. Otherwise a GVariant tuple with +return values. Free with g_variant_unref().

+
+

Since: 2.30

+
+
+
+

g_dbus_connection_call_with_unix_fd_list_sync ()

+
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);
+

Like g_dbus_connection_call_sync() but also takes and returns GUnixFDList objects.

+

This method is only available on UNIX.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

bus_name

a unique or well-known bus name or NULL +if connection +is not a message bus connection.

[allow-none]

object_path

path of remote object

 

interface_name

D-Bus interface to invoke method on

 

method_name

the name of the method to invoke

 

parameters

a GVariant tuple with parameters for +the method or NULL if not passing parameters.

[allow-none]

reply_type

the expected type of the reply, or NULL.

[allow-none]

flags

flags from the GDBusCallFlags enumeration

 

timeout_msec

the timeout in milliseconds, -1 to use the default +timeout or G_MAXINT for no timeout

 

fd_list

a GUnixFDList or NULL.

[allow-none]

out_fd_list

return location for a GUnixFDList or NULL.

[out][allow-none]

cancellable

a GCancellable or NULL.

[allow-none]

error

return location for error or NULL

 
+
+
+

Returns

+

NULL if error +is set. Otherwise a GVariant tuple with +return values. Free with g_variant_unref().

+
+

Since: 2.30

+
+
+
+

g_dbus_connection_emit_signal ()

+
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);
+

Emits a signal.

+

If the parameters GVariant is floating, it is consumed.

+

This can only fail if parameters + is not compatible with the D-Bus protocol.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

destination_bus_name

the unique bus name for the destination +for the signal or NULL to emit to all listeners.

[allow-none]

object_path

path of remote object

 

interface_name

D-Bus interface to emit a signal on

 

signal_name

the name of the signal to emit

 

parameters

a GVariant tuple with parameters for the signal +or NULL if not passing parameters.

[allow-none]

error

Return location for error or NULL

 
+
+
+

Returns

+

TRUE unless error +is set

+
+

Since: 2.26

+
+
+
+

GDBusSignalCallback ()

+
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);
+

Signature for callback function used in g_dbus_connection_signal_subscribe().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_connection_signal_subscribe ()

+
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);
+

Subscribes to signals on connection + and invokes callback + with a whenever +the signal is received. Note that callback + will be invoked in the +thread-default main context +of the thread you are calling this method from.

+

If connection + is not a message bus connection, sender + must be +NULL.

+

If sender + is a well-known name note that callback + is invoked with +the unique name for the owner of sender +, not the well-known name +as one would expect. This is because the message bus rewrites the +name. As such, to avoid certain race conditions, users should be +tracking the name owner of the well-known name and use that when +processing the received signal.

+

If one of G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_NAMESPACE or +G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_PATH are given, arg0 + is +interpreted as part of a namespace or path. The first argument +of a signal is matched against that part as specified by D-Bus.

+

If user_data_free_func + is non-NULL, it will be called (in the +thread-default main context of the thread you are calling this +method from) at some point after user_data + is no longer +needed. (It is not guaranteed to be called synchronously when the +signal is unsubscribed from, and may be called after connection + +has been destroyed.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

sender

sender name to match on (unique or well-known name) +or NULL to listen from all senders.

[allow-none]

interface_name

D-Bus interface name to match on or NULL to +match on all interfaces.

[allow-none]

member

D-Bus signal name to match on or NULL to match on +all signals.

[allow-none]

object_path

object path to match on or NULL to match on +all object paths.

[allow-none]

arg0

contents of first string argument to match on or NULL +to match on all kinds of arguments.

[allow-none]

flags

GDBusSignalFlags describing how arg0 is used in subscribing to the +signal

 

callback

callback to invoke when there is a signal matching the requested data

 

user_data

user data to pass to callback +

 

user_data_free_func

function to free user_data +with when +subscription is removed or NULL.

[allow-none]
+
+
+

Returns

+

a subscription identifier that can be used with g_dbus_connection_signal_unsubscribe()

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_signal_unsubscribe ()

+
void
+g_dbus_connection_signal_unsubscribe (GDBusConnection *connection,
+                                      guint subscription_id);
+

Unsubscribes from signals.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

connection

a GDBusConnection

 

subscription_id

a subscription id obtained from +g_dbus_connection_signal_subscribe()

 
+
+

Since: 2.26

+
+
+
+

g_dbus_connection_send_message ()

+
gboolean
+g_dbus_connection_send_message (GDBusConnection *connection,
+                                GDBusMessage *message,
+                                GDBusSendMessageFlags flags,
+                                volatile guint32 *out_serial,
+                                GError **error);
+

Asynchronously sends message + to the peer represented by connection +.

+

Unless flags + contain the +G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag, the serial number +will be assigned by connection + and set on message + via +g_dbus_message_set_serial(). If out_serial + is not NULL, then the +serial number used will be written to this location prior to +submitting the message to the underlying transport.

+

If connection + is closed then the operation will fail with +G_IO_ERROR_CLOSED. If message + is not well-formed, +the operation fails with G_IO_ERROR_INVALID_ARGUMENT.

+

See this server and client +for an example of how to use this low-level API to send and receive +UNIX file descriptors.

+

Note that message + must be unlocked, unless flags + contain the +G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

message

a GDBusMessage

 

flags

flags affecting how the message is sent

 

out_serial

return location for serial number assigned +to message +when sending it or NULL.

[out][allow-none]

error

Return location for error or NULL

 
+
+
+

Returns

+

TRUE if the message was well-formed and queued for +transmission, FALSE if error +is set

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_send_message_with_reply ()

+
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);
+

Asynchronously sends message + to the peer represented by connection +.

+

Unless flags + contain the +G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag, the serial number +will be assigned by connection + and set on message + via +g_dbus_message_set_serial(). If out_serial + is not NULL, then the +serial number used will be written to this location prior to +submitting the message to the underlying transport.

+

If connection + is closed then the operation will fail with +G_IO_ERROR_CLOSED. If cancellable + is canceled, the operation will +fail with G_IO_ERROR_CANCELLED. If message + is not well-formed, +the operation fails with G_IO_ERROR_INVALID_ARGUMENT.

+

This is an asynchronous method. When the operation is finished, callback + +will be invoked in the +thread-default main context +of the thread you are calling this method from. You can then call +g_dbus_connection_send_message_with_reply_finish() to get the result of the operation. +See g_dbus_connection_send_message_with_reply_sync() for the synchronous version.

+

Note that message + must be unlocked, unless flags + contain the +G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag.

+

See this server and client +for an example of how to use this low-level API to send and receive +UNIX file descriptors.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

message

a GDBusMessage

 

flags

flags affecting how the message is sent

 

timeout_msec

the timeout in milliseconds, -1 to use the default +timeout or G_MAXINT for no timeout

 

out_serial

return location for serial number assigned +to message +when sending it or NULL.

[out][allow-none]

cancellable

a GCancellable or NULL.

[allow-none]

callback

a GAsyncReadyCallback to call when the request +is satisfied or NULL if you don't care about the result.

[allow-none]

user_data

The data to pass to callback +

 
+
+

Since: 2.26

+
+
+
+

g_dbus_connection_send_message_with_reply_finish ()

+
GDBusMessage *
+g_dbus_connection_send_message_with_reply_finish
+                               (GDBusConnection *connection,
+                                GAsyncResult *res,
+                                GError **error);
+

Finishes an operation started with g_dbus_connection_send_message_with_reply().

+

Note that error + is only set if a local in-process error +occurred. That is to say that the returned GDBusMessage object may +be of type G_DBUS_MESSAGE_TYPE_ERROR. Use +g_dbus_message_to_gerror() to transcode this to a GError.

+

See this server and client +for an example of how to use this low-level API to send and receive +UNIX file descriptors.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

res

a GAsyncResult obtained from the GAsyncReadyCallback passed to +g_dbus_connection_send_message_with_reply()

 

error

teturn location for error or NULL

 
+
+
+

Returns

+

a locked GDBusMessage or NULL if error +is set.

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_send_message_with_reply_sync ()

+
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);
+

Synchronously sends message + to the peer represented by connection + +and blocks the calling thread until a reply is received or the +timeout is reached. See g_dbus_connection_send_message_with_reply() +for the asynchronous version of this method.

+

Unless flags + contain the +G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag, the serial number +will be assigned by connection + and set on message + via +g_dbus_message_set_serial(). If out_serial + is not NULL, then the +serial number used will be written to this location prior to +submitting the message to the underlying transport.

+

If connection + is closed then the operation will fail with +G_IO_ERROR_CLOSED. If cancellable + is canceled, the operation will +fail with G_IO_ERROR_CANCELLED. If message + is not well-formed, +the operation fails with G_IO_ERROR_INVALID_ARGUMENT.

+

Note that error + is only set if a local in-process error +occurred. That is to say that the returned GDBusMessage object may +be of type G_DBUS_MESSAGE_TYPE_ERROR. Use +g_dbus_message_to_gerror() to transcode this to a GError.

+

See this server and client +for an example of how to use this low-level API to send and receive +UNIX file descriptors.

+

Note that message + must be unlocked, unless flags + contain the +G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

message

a GDBusMessage

 

flags

flags affecting how the message is sent.

 

timeout_msec

the timeout in milliseconds, -1 to use the default +timeout or G_MAXINT for no timeout

 

out_serial

return location for serial number +assigned to message +when sending it or NULL.

[out][allow-none]

cancellable

a GCancellable or NULL.

[allow-none]

error

return location for error or NULL

 
+
+
+

Returns

+

a locked GDBusMessage that is the reply +to message +or NULL if error +is set.

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

GDBusMessageFilterFunction ()

+
GDBusMessage *
+(*GDBusMessageFilterFunction) (GDBusConnection *connection,
+                               GDBusMessage *message,
+                               gboolean incoming,
+                               gpointer user_data);
+

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:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
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:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
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:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
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 +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

connection

A GDBusConnection.

[transfer none]

message

A locked GDBusMessage that the filter function takes ownership of.

[transfer full]

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.

 
+
+
+

Returns

+

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.

+

[transfer full][allow-none]

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_add_filter ()

+
guint
+g_dbus_connection_add_filter (GDBusConnection *connection,
+                              GDBusMessageFilterFunction filter_function,
+                              gpointer user_data,
+                              GDestroyNotify user_data_free_func);
+

Adds a message filter. Filters are handlers that are run on all +incoming and outgoing messages, prior to standard dispatch. Filters +are run in the order that they were added. The same handler can be +added as a filter more than once, in which case it will be run more +than once. Filters added during a filter callback won't be run on +the message being processed. Filter functions are allowed to modify +and even drop messages.

+

Note that filters are run in a dedicated message handling thread so +they can't block and, generally, can't do anything but signal a +worker thread. Also note that filters are rarely needed - use API +such as g_dbus_connection_send_message_with_reply(), +g_dbus_connection_signal_subscribe() or g_dbus_connection_call() instead.

+

If a filter consumes an incoming message the message is not +dispatched anywhere else - not even the standard dispatch machinery +(that API such as g_dbus_connection_signal_subscribe() and +g_dbus_connection_send_message_with_reply() relies on) will see the +message. Similary, if a filter consumes an outgoing message, the +message will not be sent to the other peer.

+

If user_data_free_func + is non-NULL, it will be called (in the +thread-default main context of the thread you are calling this +method from) at some point after user_data + is no longer +needed. (It is not guaranteed to be called synchronously when the +filter is removed, and may be called after connection + has been +destroyed.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

filter_function

a filter function

 

user_data

user data to pass to filter_function +

 

user_data_free_func

function to free user_data +with when filter +is removed or NULL

 
+
+
+

Returns

+

a filter identifier that can be used with +g_dbus_connection_remove_filter()

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_remove_filter ()

+
void
+g_dbus_connection_remove_filter (GDBusConnection *connection,
+                                 guint filter_id);
+

Removes a filter.

+

Note that since filters run in a different thread, there is a race +condition where it is possible that the filter will be running even +after calling g_dbus_connection_remove_filter(), so you cannot just +free data that the filter might be using. Instead, you should pass +a GDestroyNotify to g_dbus_connection_add_filter(), which will be +called when it is guaranteed that the data is no longer needed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

connection

a GDBusConnection

 

filter_id

an identifier obtained from g_dbus_connection_add_filter()

 
+
+

Since: 2.26

+
+
+
+

GDBusInterfaceMethodCallFunc ()

+
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);
+

The type of the method_call + function in GDBusInterfaceVTable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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 must be used to return a value or error.

[transfer full]

user_data

The user_data +gpointer passed to g_dbus_connection_register_object().

 
+
+

Since: 2.26

+
+
+
+

GDBusInterfaceGetPropertyFunc ()

+
GVariant *
+(*GDBusInterfaceGetPropertyFunc) (GDBusConnection *connection,
+                                  const gchar *sender,
+                                  const gchar *object_path,
+                                  const gchar *interface_name,
+                                  const gchar *property_name,
+                                  GError **error,
+                                  gpointer user_data);
+

The type of the get_property + function in GDBusInterfaceVTable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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().

 
+
+
+

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

+
+
+
+

GDBusInterfaceSetPropertyFunc ()

+
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);
+

The type of the set_property + function in GDBusInterfaceVTable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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().

 
+
+
+

Returns

+

TRUE if the property was set to value +, FALSE if error +is set.

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_register_object ()

+
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);
+

Registers callbacks for exported objects at object_path + with the +D-Bus interface that is described in interface_info +.

+

Calls to functions in vtable + (and user_data_free_func +) will happen +in the +thread-default main context +of the thread you are calling this method from.

+

Note that all GVariant values passed to functions in vtable + will match +the signature given in interface_info + - if a remote caller passes +incorrect values, the org.freedesktop.DBus.Error.InvalidArgs +is returned to the remote caller.

+

Additionally, if the remote caller attempts to invoke methods or +access properties not mentioned in interface_info + the +org.freedesktop.DBus.Error.UnknownMethod resp. +org.freedesktop.DBus.Error.InvalidArgs errors +are returned to the caller.

+

It is considered a programming error if the +GDBusInterfaceGetPropertyFunc function in vtable + returns a +GVariant of incorrect type.

+

If an existing callback is already registered at object_path + and +interface_name +, then error + is set to G_IO_ERROR_EXISTS.

+

GDBus automatically implements the standard D-Bus interfaces +org.freedesktop.DBus.Properties, org.freedesktop.DBus.Introspectable +and org.freedesktop.Peer, so you don't have to implement those for the +objects you export. You can implement org.freedesktop.DBus.Properties +yourself, e.g. to handle getting and setting of properties asynchronously.

+

Note that the reference count on interface_info + will be +incremented by 1 (unless allocated statically, e.g. if the +reference count is -1, see g_dbus_interface_info_ref()) for as long +as the object is exported. Also note that vtable + will be copied.

+

See this server for an example of how to use this method.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

object_path

the object path to register at

 

interface_info

introspection data for the interface

 

vtable

a GDBusInterfaceVTable to call into or NULL.

[allow-none]

user_data

data to pass to functions in vtable +.

[allow-none]

user_data_free_func

function to call when the object path is unregistered

 

error

return location for error or NULL

 
+
+
+

Returns

+

0 if error +is set, otherwise a registration id (never 0) +that can be used with g_dbus_connection_unregister_object()

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_unregister_object ()

+
gboolean
+g_dbus_connection_unregister_object (GDBusConnection *connection,
+                                     guint registration_id);
+

Unregisters an object.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

connection

a GDBusConnection

 

registration_id

a registration id obtained from +g_dbus_connection_register_object()

 
+
+
+

Returns

+

TRUE if the object was unregistered, FALSE otherwise

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_register_object_with_closures ()

+
guint
+g_dbus_connection_register_object_with_closures
+                               (GDBusConnection *connection,
+                                const gchar *object_path,
+                                GDBusInterfaceInfo *interface_info,
+                                GClosure *method_call_closure,
+                                GClosure *get_property_closure,
+                                GClosure *set_property_closure,
+                                GError **error);
+

Version of g_dbus_connection_register_object() using closures instead of a +GDBusInterfaceVTable for easier binding in other languages.

+

[rename-to g_dbus_connection_register_object]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

A GDBusConnection.

 

object_path

The object path to register at.

 

interface_info

Introspection data for the interface.

 

method_call_closure

GClosure for handling incoming method calls.

[nullable]

get_property_closure

GClosure for getting a property.

[nullable]

set_property_closure

GClosure for setting a property.

[nullable]

error

Return location for error or NULL.

 
+
+
+

Returns

+

0 if error +is set, otherwise a registration id (never 0) +that can be used with g_dbus_connection_unregister_object() .

+
+

Since: 2.46

+
+
+
+

GDBusSubtreeEnumerateFunc ()

+
gchar **
+(*GDBusSubtreeEnumerateFunc) (GDBusConnection *connection,
+                              const gchar *sender,
+                              const gchar *object_path,
+                              gpointer user_data);
+

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().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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().

 
+
+
+

Returns

+

A newly allocated array of strings for node names that are children of object_path +.

+
+

Since: 2.26

+
+
+
+

GDBusSubtreeIntrospectFunc ()

+
GDBusInterfaceInfo **
+(*GDBusSubtreeIntrospectFunc) (GDBusConnection *connection,
+                               const gchar *sender,
+                               const gchar *object_path,
+                               const gchar *node,
+                               gpointer user_data);
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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().

 
+
+
+

Returns

+

A NULL-terminated array of pointers to GDBusInterfaceInfo, or NULL.

+
+

Since: 2.26

+
+
+
+

GDBusSubtreeDispatchFunc ()

+
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);
+

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).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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).

[nullable][not optional]

user_data

The user_data +gpointer passed to g_dbus_connection_register_subtree().

 
+
+
+

Returns

+

A GDBusInterfaceVTable or NULL if you don't want to handle the methods.

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_register_subtree ()

+
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);
+

Registers a whole subtree of dynamic objects.

+

The enumerate + and introspection + functions in vtable + are used to +convey, to remote callers, what nodes exist in the subtree rooted +by object_path +.

+

When handling remote calls into any node in the subtree, first the +enumerate + function is used to check if the node exists. If the node exists +or the G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES flag is set +the introspection + function is used to check if the node supports the +requested method. If so, the dispatch + function is used to determine +where to dispatch the call. The collected GDBusInterfaceVTable and +gpointer will be used to call into the interface vtable for processing +the request.

+

All calls into user-provided code will be invoked in the +thread-default main context +of the thread you are calling this method from.

+

If an existing subtree is already registered at object_path + or +then error + is set to G_IO_ERROR_EXISTS.

+

Note that it is valid to register regular objects (using +g_dbus_connection_register_object()) in a subtree registered with +g_dbus_connection_register_subtree() - if so, the subtree handler +is tried as the last resort. One way to think about a subtree +handler is to consider it a fallback handler for object paths not +registered via g_dbus_connection_register_object() or other bindings.

+

Note that vtable + will be copied so you cannot change it after +registration.

+

See this server for an example of how to use +this method.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

object_path

the object path to register the subtree at

 

vtable

a GDBusSubtreeVTable to enumerate, introspect and +dispatch nodes in the subtree

 

flags

flags used to fine tune the behavior of the subtree

 

user_data

data to pass to functions in vtable +

 

user_data_free_func

function to call when the subtree is unregistered

 

error

return location for error or NULL

 
+
+
+

Returns

+

0 if error +is set, otherwise a subtree registration id (never 0) +that can be used with g_dbus_connection_unregister_subtree() .

+
+

Since: 2.26

+
+
+
+

g_dbus_connection_unregister_subtree ()

+
gboolean
+g_dbus_connection_unregister_subtree (GDBusConnection *connection,
+                                      guint registration_id);
+

Unregisters a subtree.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

connection

a GDBusConnection

 

registration_id

a subtree registration id obtained from +g_dbus_connection_register_subtree()

 
+
+
+

Returns

+

TRUE if the subtree was unregistered, FALSE otherwise

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

enum GBusType

+

An enumeration for well-known message buses.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.26

+
+
+
+

GDBusConnection

+
typedef struct _GDBusConnection GDBusConnection;
+

The GDBusConnection structure contains only private data and +should only be accessed using the provided API.

+

Since: 2.26

+
+
+
+

enum GDBusConnectionFlags

+

Flags used when creating a new GDBusConnection.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.26

+
+
+
+

enum GDBusCapabilityFlags

+

Capabilities negotiated with the remote peer.

+
+

Members

+
+++++ + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.26

+
+
+
+

enum GDBusCallFlags

+

Flags used in g_dbus_connection_call() and similar APIs.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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.

+
 

G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION

+

the caller is prepared to +wait for interactive authorization. Since 2.46.

+
 
+
+

Since: 2.26

+
+
+
+

enum GDBusSignalFlags

+

Flags used when subscribing to signals via g_dbus_connection_signal_subscribe().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.26

+
+
+
+

enum GDBusSendMessageFlags

+

Flags used when sending GDBusMessages on a GDBusConnection.

+
+

Members

+
+++++ + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.26

+
+
+
+

GDBusInterfaceVTable

+
typedef struct {
+  GDBusInterfaceMethodCallFunc  method_call;
+  GDBusInterfaceGetPropertyFunc get_property;
+  GDBusInterfaceSetPropertyFunc set_property;
+} GDBusInterfaceVTable;
+
+

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 "org.freedesktop.DBus.Properties".

+

Ownership of the GDBusMethodInvocation object passed to the +method_call() function is transferred to your handler; you must +call one of the methods of GDBusMethodInvocation to return a reply +(possibly empty), or an error. These functions also take ownership +of the passed-in invocation object, so unless the invocation +object has otherwise been referenced, it will be then be freed. +Calling one of these functions may be done within your +method_call() implementation but it also can be done at a later +point to handle the method asynchronously.

+

The usual checks on the validity of the calls is performed. For +Get 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 Set calls, and the provided value is also checked for +being the correct type.

+

For both Get and Set 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 Get and GetAll +methods on org.freedesktop.DBus.Properties interface in your method_call + +function. Note that the required return type of the Get call is +(v), not the type of the property. GetAll expects a return value +of type a{sv}.

+

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 Set call. If implementing +the call, you must return the value of type G_VARIANT_TYPE_UNIT.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GDBusInterfaceMethodCallFunc method_call;

Function for handling incoming method calls.

 

GDBusInterfaceGetPropertyFunc get_property;

Function for getting a property.

 

GDBusInterfaceSetPropertyFunc set_property;

Function for setting a property.

 
+
+

Since: 2.26

+
+
+
+

GDBusSubtreeVTable

+
typedef struct {
+  GDBusSubtreeEnumerateFunc  enumerate;
+  GDBusSubtreeIntrospectFunc introspect;
+  GDBusSubtreeDispatchFunc   dispatch;
+} GDBusSubtreeVTable;
+
+

Virtual table for handling subtrees registered with g_dbus_connection_register_subtree().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GDBusSubtreeEnumerateFunc enumerate;

Function for enumerating child nodes.

 

GDBusSubtreeIntrospectFunc introspect;

Function for introspecting a child node.

 

GDBusSubtreeDispatchFunc dispatch;

Function for dispatching a remote call on a child node.

 
+
+

Since: 2.26

+
+
+
+

enum GDBusSubtreeFlags

+

Flags passed to g_dbus_connection_register_subtree().

+
+

Members

+
+++++ + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.26

+
+
+
+

Property Details

+
+

The “address” property

+
  “address”                  gchar *
+

A D-Bus address specifying potential endpoints that can be used +when establishing the connection.

+

Flags: Write / Construct Only

+

Default value: NULL

+

Since: 2.26

+
+
+
+

The “authentication-observer” property

+
  “authentication-observer”  GDBusAuthObserver *
+

A GDBusAuthObserver object to assist in the authentication process or NULL.

+

Flags: Write / Construct Only

+

Since: 2.26

+
+
+
+

The “capabilities” property

+
  “capabilities”             GDBusCapabilityFlags
+

Flags from the GDBusCapabilityFlags enumeration +representing connection features negotiated with the other peer.

+

Flags: Read

+

Since: 2.26

+
+
+
+

The “closed” property

+
  “closed”                   gboolean
+

A boolean specifying whether the connection has been closed.

+

Flags: Read

+

Default value: FALSE

+

Since: 2.26

+
+
+
+

The “exit-on-close” property

+
  “exit-on-close”            gboolean
+

A boolean specifying whether the process will be terminated (by +calling raise(SIGTERM)) if the connection is closed by the +remote peer.

+

Note that GDBusConnection objects returned by g_bus_get_finish() +and g_bus_get_sync() will (usually) have this property set to TRUE.

+

Flags: Read / Write

+

Default value: FALSE

+

Since: 2.26

+
+
+
+

The “flags” property

+
  “flags”                    GDBusConnectionFlags
+

Flags from the GDBusConnectionFlags enumeration.

+

Flags: Write / Construct Only

+

Since: 2.26

+
+
+
+

The “guid” property

+
  “guid”                     gchar *
+

The GUID of the peer performing the role of server when +authenticating.

+

If you are constructing a GDBusConnection and pass +G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER in the +“flags” property then you MUST also set this +property to a valid guid.

+

If you are constructing a GDBusConnection and pass +G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT in the +“flags” property you will be able to read the GUID +of the other peer here after the connection has been successfully +initialized.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.26

+
+
+
+

The “stream” property

+
  “stream”                   GIOStream *
+

The underlying GIOStream used for I/O.

+

If this is passed on construction and is a GSocketConnection, +then the corresponding GSocket will be put into non-blocking mode.

+

While the GDBusConnection is active, it will interact with this +stream from a worker thread, so it is not safe to interact with +the stream directly.

+

Flags: Read / Write / Construct Only

+

Since: 2.26

+
+
+
+

The “unique-name” property

+
  “unique-name”              gchar *
+

The unique name as assigned by the message bus or NULL if the +connection is not open or not a message bus connection.

+

Flags: Read

+

Default value: NULL

+

Since: 2.26

+
+
+
+

Signal Details

+
+

The “closed” signal

+
void
+user_function (GDBusConnection *connection,
+               gboolean         remote_peer_vanished,
+               GError          *error,
+               gpointer         user_data)
+

Emitted when the connection is closed.

+

The cause of this event can be

+
    +
  • If g_dbus_connection_close() is called. In this case +remote_peer_vanished + is set to FALSE and error + is NULL.

  • +
  • If the remote peer closes the connection. In this case +remote_peer_vanished + is set to TRUE and error + is set.

  • +
  • If the remote peer sends invalid or malformed data. In this +case remote_peer_vanished + is set to FALSE and error + is set.

  • +
+

Upon receiving this signal, you should give up your reference to +connection +. You are guaranteed that this signal is emitted only +once.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

connection

the GDBusConnection emitting the signal

 

remote_peer_vanished

TRUE if connection +is closed because the +remote peer closed its end of the connection

 

error

a GError with more details about the event or NULL.

[allow-none]

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.26

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusInterface.html b/docs/reference/gio/html/GDBusInterface.html new file mode 100644 index 0000000..a9587e0 --- /dev/null +++ b/docs/reference/gio/html/GDBusInterface.html @@ -0,0 +1,330 @@ + + + + +GDBusInterface: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusInterface

+

GDBusInterface — Base type for D-Bus interfaces

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+GDBusInterfaceInfo * + +g_dbus_interface_get_info () +
+GDBusObject * + +g_dbus_interface_get_object () +
+GDBusObject * + +g_dbus_interface_dup_object () +
+void + +g_dbus_interface_set_object () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GDBusInterface
structGDBusInterfaceIface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GDBusInterface
+
+
+
+

Prerequisites

+

+GDBusInterface requires + GObject.

+
+
+

Known Implementations

+

+GDBusInterface is implemented by + GDBusInterfaceSkeleton and GDBusProxy.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

The GDBusInterface type is the base type for D-Bus interfaces both +on the service side (see GDBusInterfaceSkeleton) and client side +(see GDBusProxy).

+
+
+

Functions

+
+

g_dbus_interface_get_info ()

+
GDBusInterfaceInfo *
+g_dbus_interface_get_info (GDBusInterface *interface_);
+

Gets D-Bus introspection information for the D-Bus interface +implemented by interface_ +.

+
+

Parameters

+
+++++ + + + + + +

interface_

An exported D-Bus interface.

 
+
+
+

Returns

+

A GDBusInterfaceInfo. Do not free.

+

[transfer none]

+
+

Since: 2.30

+
+
+
+

g_dbus_interface_get_object ()

+
GDBusObject *
+g_dbus_interface_get_object (GDBusInterface *interface_);
+

Gets the GDBusObject that interface_ + belongs to, if any.

+

It is not safe to use the returned object if interface_ + or +the returned object is being used from other threads. See +g_dbus_interface_dup_object() for a thread-safe alternative.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

interface_

An exported D-Bus interface

 
+
+
+

Returns

+

A GDBusObject or NULL. The returned +reference belongs to interface_ +and should not be freed.

+

[transfer none]

+
+

Since: 2.30

+
+
+
+

g_dbus_interface_dup_object ()

+
GDBusObject *
+g_dbus_interface_dup_object (GDBusInterface *interface_);
+

Gets the GDBusObject that interface_ + belongs to, if any.

+

[rename-to g_dbus_interface_get_object]

+
+

Parameters

+
+++++ + + + + + +

interface_

An exported D-Bus interface.

 
+
+
+

Returns

+

A GDBusObject or NULL. The returned +reference should be freed with g_object_unref().

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_dbus_interface_set_object ()

+
void
+g_dbus_interface_set_object (GDBusInterface *interface_,
+                             GDBusObject *object);
+

Sets the GDBusObject for interface_ + to object +.

+

Note that interface_ + will hold a weak reference to object +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

interface_

An exported D-Bus interface.

 

object

A GDBusObject or NULL.

[allow-none]
+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

GDBusInterface

+
typedef struct _GDBusInterface GDBusInterface;
+

Base type for D-Bus interfaces.

+

Since: 2.30

+
+
+
+

struct GDBusInterfaceIface

+
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_);
+};
+
+

Base type for D-Bus interfaces.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface 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.

 
+
+

Since: 2.30

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusInterfaceSkeleton.html b/docs/reference/gio/html/GDBusInterfaceSkeleton.html new file mode 100644 index 0000000..64e8047 --- /dev/null +++ b/docs/reference/gio/html/GDBusInterfaceSkeleton.html @@ -0,0 +1,874 @@ + + + + +GDBusInterfaceSkeleton: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusInterfaceSkeleton

+

GDBusInterfaceSkeleton — Service-side D-Bus interface

+
+ +
+

Properties

+
+++++ + + + + + +
GDBusInterfaceSkeletonFlagsg-flagsRead / Write
+
+
+

Signals

+ +
+
+

Types and Values

+ +
+
+

Object Hierarchy

+
    GObject
+    ╰── GDBusInterfaceSkeleton
+
+
+
+

Implemented Interfaces

+

+GDBusInterfaceSkeleton implements + GDBusInterface.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Abstract base class for D-Bus interfaces on the service side.

+
+
+

Functions

+
+

g_dbus_interface_skeleton_flush ()

+
void
+g_dbus_interface_skeleton_flush (GDBusInterfaceSkeleton *interface_);
+

If interface_ + has outstanding changes, request for these changes to be +emitted immediately.

+

For example, an exported D-Bus interface may queue up property +changes and emit the +`org.freedesktop.DBus.Properties::Propert`` +signal later (e.g. in an idle handler). This technique is useful +for collapsing multiple property changes into one.

+
+

Parameters

+
+++++ + + + + + +

interface_

A GDBusInterfaceSkeleton.

 
+
+

Since: 2.30

+
+
+
+

g_dbus_interface_skeleton_get_info ()

+
GDBusInterfaceInfo *
+g_dbus_interface_skeleton_get_info (GDBusInterfaceSkeleton *interface_);
+

Gets D-Bus introspection information for the D-Bus interface +implemented by interface_ +.

+
+

Parameters

+
+++++ + + + + + +

interface_

A GDBusInterfaceSkeleton.

 
+
+
+

Returns

+

A GDBusInterfaceInfo (never NULL). Do not free.

+

[transfer none]

+
+

Since: 2.30

+
+
+
+

g_dbus_interface_skeleton_get_vtable ()

+
GDBusInterfaceVTable *
+g_dbus_interface_skeleton_get_vtable (GDBusInterfaceSkeleton *interface_);
+

Gets the interface vtable for the D-Bus interface implemented by +interface_ +. The returned function pointers should expect interface_ + +itself to be passed as user_data +.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

interface_

A GDBusInterfaceSkeleton.

 
+
+
+

Returns

+

A GDBusInterfaceVTable (never NULL).

+
+

Since: 2.30

+
+
+
+

g_dbus_interface_skeleton_get_properties ()

+
GVariant *
+g_dbus_interface_skeleton_get_properties
+                               (GDBusInterfaceSkeleton *interface_);
+

Gets all D-Bus properties for interface_ +.

+
+

Parameters

+
+++++ + + + + + +

interface_

A GDBusInterfaceSkeleton.

 
+
+
+

Returns

+

A GVariant of type +'a{sv}'. +Free with g_variant_unref().

+

[transfer full]

+
+

Since: 2.30

+
+
+
+

g_dbus_interface_skeleton_export ()

+
gboolean
+g_dbus_interface_skeleton_export (GDBusInterfaceSkeleton *interface_,
+                                  GDBusConnection *connection,
+                                  const gchar *object_path,
+                                  GError **error);
+

Exports interface_ + at object_path + on connection +.

+

This can be called multiple times to export the same interface_ + +onto multiple connections however the object_path + provided must be +the same for all connections.

+

Use g_dbus_interface_skeleton_unexport() to unexport the object.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

interface_

The D-Bus interface to export.

 

connection

A GDBusConnection to export interface_ +on.

 

object_path

The path to export the interface at.

 

error

Return location for error or NULL.

 
+
+
+

Returns

+

TRUE if the interface was exported on connection +, otherwise FALSE with +error +set.

+
+

Since: 2.30

+
+
+
+

g_dbus_interface_skeleton_unexport ()

+
void
+g_dbus_interface_skeleton_unexport (GDBusInterfaceSkeleton *interface_);
+

Stops exporting interface_ + on all connections it is exported on.

+

To unexport interface_ + from only a single connection, use +g_dbus_interface_skeleton_unexport_from_connection()

+
+

Parameters

+
+++++ + + + + + +

interface_

A GDBusInterfaceSkeleton.

 
+
+

Since: 2.30

+
+
+
+

g_dbus_interface_skeleton_unexport_from_connection ()

+
void
+g_dbus_interface_skeleton_unexport_from_connection
+                               (GDBusInterfaceSkeleton *interface_,
+                                GDBusConnection *connection);
+

Stops exporting interface_ + on connection +.

+

To stop exporting on all connections the interface is exported on, +use g_dbus_interface_skeleton_unexport().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

interface_

A GDBusInterfaceSkeleton.

 

connection

A GDBusConnection.

 
+
+

Since: 2.32

+
+
+
+

g_dbus_interface_skeleton_get_connection ()

+
GDBusConnection *
+g_dbus_interface_skeleton_get_connection
+                               (GDBusInterfaceSkeleton *interface_);
+

Gets the first connection that interface_ + is exported on, if any.

+
+

Parameters

+
+++++ + + + + + +

interface_

A GDBusInterfaceSkeleton.

 
+
+
+

Returns

+

A GDBusConnection or NULL if interface_ +is +not exported anywhere. Do not free, the object belongs to interface_ +.

+

[transfer none]

+
+

Since: 2.30

+
+
+
+

g_dbus_interface_skeleton_get_connections ()

+
GList *
+g_dbus_interface_skeleton_get_connections
+                               (GDBusInterfaceSkeleton *interface_);
+

Gets a list of the connections that interface_ + is exported on.

+
+

Parameters

+
+++++ + + + + + +

interface_

A GDBusInterfaceSkeleton.

 
+
+
+

Returns

+

A list of +all the connections that interface_ +is exported on. The returned +list should be freed with g_list_free() after each element has +been freed with g_object_unref().

+

[element-type GDBusConnection][transfer full]

+
+

Since: 2.32

+
+
+
+

g_dbus_interface_skeleton_has_connection ()

+
gboolean
+g_dbus_interface_skeleton_has_connection
+                               (GDBusInterfaceSkeleton *interface_,
+                                GDBusConnection *connection);
+

Checks if interface_ + is exported on connection +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

interface_

A GDBusInterfaceSkeleton.

 

connection

A GDBusConnection.

 
+
+
+

Returns

+

TRUE if interface_ +is exported on connection +, FALSE otherwise.

+
+

Since: 2.32

+
+
+
+

g_dbus_interface_skeleton_get_object_path ()

+
const gchar *
+g_dbus_interface_skeleton_get_object_path
+                               (GDBusInterfaceSkeleton *interface_);
+

Gets the object path that interface_ + is exported on, if any.

+
+

Parameters

+
+++++ + + + + + +

interface_

A GDBusInterfaceSkeleton.

 
+
+
+

Returns

+

A string owned by interface_ +or NULL if interface_ +is not exported +anywhere. Do not free, the string belongs to interface_ +.

+
+

Since: 2.30

+
+
+
+

g_dbus_interface_skeleton_get_flags ()

+
GDBusInterfaceSkeletonFlags
+g_dbus_interface_skeleton_get_flags (GDBusInterfaceSkeleton *interface_);
+

Gets the GDBusInterfaceSkeletonFlags that describes what the behavior +of interface_ +

+
+

Parameters

+
+++++ + + + + + +

interface_

A GDBusInterfaceSkeleton.

 
+
+
+

Returns

+

One or more flags from the GDBusInterfaceSkeletonFlags enumeration.

+
+

Since: 2.30

+
+
+
+

g_dbus_interface_skeleton_set_flags ()

+
void
+g_dbus_interface_skeleton_set_flags (GDBusInterfaceSkeleton *interface_,
+                                     GDBusInterfaceSkeletonFlags flags);
+

Sets flags describing what the behavior of skeleton + should be.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

interface_

A GDBusInterfaceSkeleton.

 

flags

Flags from the GDBusInterfaceSkeletonFlags enumeration.

 
+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

GDBusInterfaceSkeleton

+
typedef struct _GDBusInterfaceSkeleton GDBusInterfaceSkeleton;
+

The GDBusInterfaceSkeleton structure contains private data and should +only be accessed using the provided API.

+

Since: 2.30

+
+
+
+

struct GDBusInterfaceSkeletonClass

+
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_);
+
+
+  /* Signals */
+  gboolean (*g_authorize_method) (GDBusInterfaceSkeleton  *interface_,
+                                  GDBusMethodInvocation   *invocation);
+};
+
+

Class structure for GDBusInterfaceSkeleton.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GObjectClass 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 “g-authorize-method” signal.

 
+
+

Since: 2.30

+
+
+
+

enum GDBusInterfaceSkeletonFlags

+

Flags describing the behavior of a GDBusInterfaceSkeleton instance.

+
+

Members

+
+++++ + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.30

+
+
+
+

Property Details

+
+

The “g-flags” property

+
  “g-flags”                  GDBusInterfaceSkeletonFlags
+

Flags from the GDBusInterfaceSkeletonFlags enumeration.

+

Flags: Read / Write

+

Since: 2.30

+
+
+
+

Signal Details

+
+

The “g-authorize-method” signal

+
gboolean
+user_function (GDBusInterfaceSkeleton *interface,
+               GDBusMethodInvocation  *invocation,
+               gpointer                user_data)
+

Emitted when a method is invoked by a remote caller and used to +determine if the method call is authorized.

+

Note that this signal is emitted in a thread dedicated to +handling the method call so handlers are allowed to perform +blocking IO. This means that it is appropriate to call e.g. +polkit_authority_check_authorization_sync() +with the +POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION +flag set.

+

If FALSE is returned then no further handlers are run and the +signal handler must take a reference to invocation + and finish +handling the call (e.g. return an error via +g_dbus_method_invocation_return_error()).

+

Otherwise, if TRUE is returned, signal emission continues. If no +handlers return FALSE, then the method is dispatched. If +interface + has an enclosing GDBusObjectSkeleton, then the +“authorize-method” signal handlers run before +the handlers for this signal.

+

The default class handler just returns TRUE.

+

Please note that the common case is optimized: if no signals +handlers are connected and the default class handler isn't +overridden (for both interface + and the enclosing +GDBusObjectSkeleton, if any) and “g-flags” does +not have the +G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD +flags set, no dedicated thread is ever used and the call will be +handled in the same thread as the object that interface + belongs +to was exported in.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

interface

The GDBusInterfaceSkeleton emitting the signal.

 

invocation

A GDBusMethodInvocation.

 

user_data

user data set when the signal handler was connected.

 
+
+
+

Returns

+

TRUE if the call is authorized, FALSE otherwise.

+
+

Flags: Run Last

+

Since: 2.30

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusMenuModel.html b/docs/reference/gio/html/GDBusMenuModel.html new file mode 100644 index 0000000..d5b5e6f --- /dev/null +++ b/docs/reference/gio/html/GDBusMenuModel.html @@ -0,0 +1,153 @@ + + + + +GDBusMenuModel: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusMenuModel

+

GDBusMenuModel — A D-Bus GMenuModel implementation

+
+
+

Functions

+
++++ + + + + +
+GDBusMenuModel * + +g_dbus_menu_model_get () +
+
+
+

Types and Values

+
++++ + + + + +
 GDBusMenuModel
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GMenuModel
+        ╰── GDBusMenuModel
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GDBusMenuModel is an implementation of GMenuModel that can be used +as a proxy for a menu model that is exported over D-Bus with +g_dbus_connection_export_menu_model().

+
+
+

Functions

+
+

g_dbus_menu_model_get ()

+
GDBusMenuModel *
+g_dbus_menu_model_get (GDBusConnection *connection,
+                       const gchar *bus_name,
+                       const gchar *object_path);
+

Obtains a GDBusMenuModel for the menu model which is exported +at the given bus_name + and object_path +.

+

The thread default main context is taken at the time of this call. +All signals on the menu model (and any linked models) are reported +with respect to this context. All calls on the returned menu model +(and linked models) must also originate from this same context, with +the thread default main context unchanged.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

bus_name

the bus name which exports the menu model

 

object_path

the object path at which the menu model is exported

 
+
+
+

Returns

+

a GDBusMenuModel object. Free with +g_object_unref().

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

GDBusMenuModel

+
typedef struct _GDBusMenuModel GDBusMenuModel;
+

GDBusMenuModel is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

See Also

+

GMenuModel Exporter

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusMessage.html b/docs/reference/gio/html/GDBusMessage.html new file mode 100644 index 0000000..0105c53 --- /dev/null +++ b/docs/reference/gio/html/GDBusMessage.html @@ -0,0 +1,2469 @@ + + + + +GDBusMessage: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusMessage

+

GDBusMessage — D-Bus Message

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GDBusMessage * + +g_dbus_message_new () +
+GDBusMessage * + +g_dbus_message_new_signal () +
+GDBusMessage * + +g_dbus_message_new_method_call () +
+GDBusMessage * + +g_dbus_message_new_method_reply () +
+GDBusMessage * + +g_dbus_message_new_method_error () +
+GDBusMessage * + +g_dbus_message_new_method_error_valist () +
+GDBusMessage * + +g_dbus_message_new_method_error_literal () +
+gchar * + +g_dbus_message_print () +
+gboolean + +g_dbus_message_get_locked () +
+void + +g_dbus_message_lock () +
+GDBusMessage * + +g_dbus_message_copy () +
+GDBusMessageByteOrder + +g_dbus_message_get_byte_order () +
+void + +g_dbus_message_set_byte_order () +
+GDBusMessageType + +g_dbus_message_get_message_type () +
+void + +g_dbus_message_set_message_type () +
+guint32 + +g_dbus_message_get_serial () +
+void + +g_dbus_message_set_serial () +
+GDBusMessageFlags + +g_dbus_message_get_flags () +
+void + +g_dbus_message_set_flags () +
+GVariant * + +g_dbus_message_get_body () +
+void + +g_dbus_message_set_body () +
+GUnixFDList * + +g_dbus_message_get_unix_fd_list () +
+void + +g_dbus_message_set_unix_fd_list () +
+guint32 + +g_dbus_message_get_num_unix_fds () +
+void + +g_dbus_message_set_num_unix_fds () +
+guchar * + +g_dbus_message_get_header_fields () +
+GVariant * + +g_dbus_message_get_header () +
+void + +g_dbus_message_set_header () +
const gchar * + +g_dbus_message_get_destination () +
+void + +g_dbus_message_set_destination () +
const gchar * + +g_dbus_message_get_error_name () +
+void + +g_dbus_message_set_error_name () +
const gchar * + +g_dbus_message_get_interface () +
+void + +g_dbus_message_set_interface () +
const gchar * + +g_dbus_message_get_member () +
+void + +g_dbus_message_set_member () +
const gchar * + +g_dbus_message_get_path () +
+void + +g_dbus_message_set_path () +
+guint32 + +g_dbus_message_get_reply_serial () +
+void + +g_dbus_message_set_reply_serial () +
const gchar * + +g_dbus_message_get_sender () +
+void + +g_dbus_message_set_sender () +
const gchar * + +g_dbus_message_get_signature () +
+void + +g_dbus_message_set_signature () +
const gchar * + +g_dbus_message_get_arg0 () +
+guchar * + +g_dbus_message_to_blob () +
+gssize + +g_dbus_message_bytes_needed () +
+GDBusMessage * + +g_dbus_message_new_from_blob () +
+gboolean + +g_dbus_message_to_gerror () +
+
+
+

Properties

+
+++++ + + + + + +
gbooleanlockedRead
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
 GDBusMessage
enumGDBusMessageType
enumGDBusMessageFlags
enumGDBusMessageHeaderField
enumGDBusMessageByteOrder
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GDBusMessage
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A type for representing D-Bus messages that can be sent or received +on a GDBusConnection.

+
+
+

Functions

+
+

g_dbus_message_new ()

+
GDBusMessage *
+g_dbus_message_new (void);
+

Creates a new empty GDBusMessage.

+
+

Returns

+

A GDBusMessage. Free with g_object_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_message_new_signal ()

+
GDBusMessage *
+g_dbus_message_new_signal (const gchar *path,
+                           const gchar *interface_,
+                           const gchar *signal);
+

Creates a new GDBusMessage for a signal emission.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

path

A valid object path.

 

interface_

A valid D-Bus interface name.

 

signal

A valid signal name.

 
+
+
+

Returns

+

A GDBusMessage. Free with g_object_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_message_new_method_call ()

+
GDBusMessage *
+g_dbus_message_new_method_call (const gchar *name,
+                                const gchar *path,
+                                const gchar *interface_,
+                                const gchar *method);
+

Creates a new GDBusMessage for a method call.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

name

A valid D-Bus name or NULL.

[allow-none]

path

A valid object path.

 

interface_

A valid D-Bus interface name or NULL.

[allow-none]

method

A valid method name.

 
+
+
+

Returns

+

A GDBusMessage. Free with g_object_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_message_new_method_reply ()

+
GDBusMessage *
+g_dbus_message_new_method_reply (GDBusMessage *method_call_message);
+

Creates a new GDBusMessage that is a reply to method_call_message +.

+
+

Parameters

+
+++++ + + + + + +

method_call_message

A message of type G_DBUS_MESSAGE_TYPE_METHOD_CALL to +create a reply message to.

 
+
+
+

Returns

+

GDBusMessage. Free with g_object_unref().

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_dbus_message_new_method_error ()

+
GDBusMessage *
+g_dbus_message_new_method_error (GDBusMessage *method_call_message,
+                                 const gchar *error_name,
+                                 const gchar *error_message_format,
+                                 ...);
+

Creates a new GDBusMessage that is an error reply to method_call_message +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

method_call_message

A message of type G_DBUS_MESSAGE_TYPE_METHOD_CALL to +create a reply message to.

 

error_name

A valid D-Bus error name.

 

error_message_format

The D-Bus error message in a printf() format.

 

...

Arguments for error_message_format +.

 
+
+
+

Returns

+

A GDBusMessage. Free with g_object_unref().

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_dbus_message_new_method_error_valist ()

+
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);
+

Like g_dbus_message_new_method_error() but intended for language bindings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

method_call_message

A message of type G_DBUS_MESSAGE_TYPE_METHOD_CALL to +create a reply message to.

 

error_name

A valid D-Bus error name.

 

error_message_format

The D-Bus error message in a printf() format.

 

var_args

Arguments for error_message_format +.

 
+
+
+

Returns

+

A GDBusMessage. Free with g_object_unref().

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_dbus_message_new_method_error_literal ()

+
GDBusMessage *
+g_dbus_message_new_method_error_literal
+                               (GDBusMessage *method_call_message,
+                                const gchar *error_name,
+                                const gchar *error_message);
+

Creates a new GDBusMessage that is an error reply to method_call_message +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

method_call_message

A message of type G_DBUS_MESSAGE_TYPE_METHOD_CALL to +create a reply message to.

 

error_name

A valid D-Bus error name.

 

error_message

The D-Bus error message.

 
+
+
+

Returns

+

A GDBusMessage. Free with g_object_unref().

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_dbus_message_print ()

+
gchar *
+g_dbus_message_print (GDBusMessage *message,
+                      guint indent);
+

Produces a human-readable multi-line description of message +.

+

The contents of the description has no ABI guarantees, the contents +and formatting is subject to change at any time. Typical output +looks something like this:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
Type:    method-call
+Flags:   none
+Version: 0
+Serial:  4
+Headers:
+  path -> objectpath '/org/gtk/GDBus/TestObject'
+  interface -> 'org.gtk.GDBus.TestInterface'
+  member -> 'GimmeStdout'
+  destination -> ':1.146'
+Body: ()
+UNIX File Descriptors:
+  (none)
+
+ +

+or

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
Type:    method-return
+Flags:   no-reply-expected
+Version: 0
+Serial:  477
+Headers:
+  reply-serial -> uint32 4
+  destination -> ':1.159'
+  sender -> ':1.146'
+  num-unix-fds -> uint32 1
+Body: ()
+UNIX File Descriptors:
+  fd 12: dev=0:10,mode=020620,ino=5,uid=500,gid=5,rdev=136:2,size=0,atime=1273085037,mtime=1273085851,ctime=1272982635
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

indent

Indentation level.

 
+
+
+

Returns

+

A string that should be freed with g_free().

+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_locked ()

+
gboolean
+g_dbus_message_get_locked (GDBusMessage *message);
+

Checks whether message + is locked. To monitor changes to this +value, conncet to the “notify” signal to listen for changes +on the “locked” property.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

TRUE if message +is locked, FALSE otherwise.

+
+

Since: 2.26

+
+
+
+

g_dbus_message_lock ()

+
void
+g_dbus_message_lock (GDBusMessage *message);
+

If message + is locked, does nothing. Otherwise locks the message.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_message_copy ()

+
GDBusMessage *
+g_dbus_message_copy (GDBusMessage *message,
+                     GError **error);
+

Copies message +. The copy is a deep copy and the returned +GDBusMessage is completely identical except that it is guaranteed +to not be locked.

+

This operation can fail if e.g. message + contains file descriptors +and the per-process or system-wide open files limit is reached.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

error

Return location for error or NULL.

 
+
+
+

Returns

+

A new GDBusMessage or NULL if error +is set. +Free with g_object_unref().

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_byte_order ()

+
GDBusMessageByteOrder
+g_dbus_message_get_byte_order (GDBusMessage *message);
+

Gets the byte order of message +.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

The byte order.

+
+
+
+
+

g_dbus_message_set_byte_order ()

+
void
+g_dbus_message_set_byte_order (GDBusMessage *message,
+                               GDBusMessageByteOrder byte_order);
+

Sets the byte order of message +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

byte_order

The byte order.

 
+
+
+
+
+

g_dbus_message_get_message_type ()

+
GDBusMessageType
+g_dbus_message_get_message_type (GDBusMessage *message);
+

Gets the type of message +.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

A 8-bit unsigned integer (typically a value from the GDBusMessageType enumeration).

+
+

Since: 2.26

+
+
+
+

g_dbus_message_set_message_type ()

+
void
+g_dbus_message_set_message_type (GDBusMessage *message,
+                                 GDBusMessageType type);
+

Sets message + to be of type +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

type

A 8-bit unsigned integer (typically a value from the GDBusMessageType enumeration).

 
+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_serial ()

+
guint32
+g_dbus_message_get_serial (GDBusMessage *message);
+

Gets the serial for message +.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

A guint32.

+
+

Since: 2.26

+
+
+
+

g_dbus_message_set_serial ()

+
void
+g_dbus_message_set_serial (GDBusMessage *message,
+                           guint32 serial);
+

Sets the serial for message +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

serial

A guint32.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_flags ()

+
GDBusMessageFlags
+g_dbus_message_get_flags (GDBusMessage *message);
+

Gets the flags for message +.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

Flags that are set (typically values from the GDBusMessageFlags enumeration bitwise ORed together).

+
+

Since: 2.26

+
+
+
+

g_dbus_message_set_flags ()

+
void
+g_dbus_message_set_flags (GDBusMessage *message,
+                          GDBusMessageFlags flags);
+

Sets the flags to set on message +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

flags

Flags for message +that are set (typically values from the GDBusMessageFlags +enumeration bitwise ORed together).

 
+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_body ()

+
GVariant *
+g_dbus_message_get_body (GDBusMessage *message);
+

Gets the body of a message.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

A GVariant or NULL if the body is +empty. Do not free, it is owned by message +.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_dbus_message_set_body ()

+
void
+g_dbus_message_set_body (GDBusMessage *message,
+                         GVariant *body);
+

Sets the body message +. As a side-effect the +G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE header field is set to the +type string of body + (or cleared if body + is NULL).

+

If body + is floating, message + assumes ownership of body +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

body

Either NULL or a GVariant that is a tuple.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_unix_fd_list ()

+
GUnixFDList *
+g_dbus_message_get_unix_fd_list (GDBusMessage *message);
+

Gets the UNIX file descriptors associated with message +, if any.

+

This method is only available on UNIX.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

A GUnixFDList or NULL if no file descriptors are +associated. Do not free, this object is owned by message +.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_dbus_message_set_unix_fd_list ()

+
void
+g_dbus_message_set_unix_fd_list (GDBusMessage *message,
+                                 GUnixFDList *fd_list);
+

Sets the UNIX file descriptors associated with message +. As a +side-effect the G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS header +field is set to the number of fds in fd_list + (or cleared if +fd_list + is NULL).

+

This method is only available on UNIX.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

fd_list

A GUnixFDList or NULL.

[allow-none]
+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_num_unix_fds ()

+
guint32
+g_dbus_message_get_num_unix_fds (GDBusMessage *message);
+

Convenience getter for the G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS header field.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

The value.

+
+

Since: 2.26

+
+
+
+

g_dbus_message_set_num_unix_fds ()

+
void
+g_dbus_message_set_num_unix_fds (GDBusMessage *message,
+                                 guint32 value);
+

Convenience setter for the G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS header field.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

value

The value to set.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_header_fields ()

+
guchar *
+g_dbus_message_get_header_fields (GDBusMessage *message);
+

Gets an array of all header fields on message + that are set.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

An array of header fields +terminated by G_DBUS_MESSAGE_HEADER_FIELD_INVALID. Each element +is a guchar. Free with g_free().

+

[array zero-terminated=1]

+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_header ()

+
GVariant *
+g_dbus_message_get_header (GDBusMessage *message,
+                           GDBusMessageHeaderField header_field);
+

Gets a header field on message +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

header_field

A 8-bit unsigned integer (typically a value from the GDBusMessageHeaderField enumeration)

 
+
+
+

Returns

+

A GVariant with the value if the header was found, NULL +otherwise. Do not free, it is owned by message +.

+
+

Since: 2.26

+
+
+
+

g_dbus_message_set_header ()

+
void
+g_dbus_message_set_header (GDBusMessage *message,
+                           GDBusMessageHeaderField header_field,
+                           GVariant *value);
+

Sets a header field on message +.

+

If value + is floating, message + assumes ownership of value +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

message

A GDBusMessage.

 

header_field

A 8-bit unsigned integer (typically a value from the GDBusMessageHeaderField enumeration)

 

value

A GVariant to set the header field or NULL to clear the header field.

[allow-none]
+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_destination ()

+
const gchar *
+g_dbus_message_get_destination (GDBusMessage *message);
+

Convenience getter for the G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION header field.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

The value.

+
+

Since: 2.26

+
+
+
+

g_dbus_message_set_destination ()

+
void
+g_dbus_message_set_destination (GDBusMessage *message,
+                                const gchar *value);
+

Convenience setter for the G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION header field.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

value

The value to set.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_error_name ()

+
const gchar *
+g_dbus_message_get_error_name (GDBusMessage *message);
+

Convenience getter for the G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME header field.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

The value.

+
+

Since: 2.26

+
+
+
+

g_dbus_message_set_error_name ()

+
void
+g_dbus_message_set_error_name (GDBusMessage *message,
+                               const gchar *value);
+

Convenience setter for the G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME header field.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

value

The value to set.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_interface ()

+
const gchar *
+g_dbus_message_get_interface (GDBusMessage *message);
+

Convenience getter for the G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE header field.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

The value.

+
+

Since: 2.26

+
+
+
+

g_dbus_message_set_interface ()

+
void
+g_dbus_message_set_interface (GDBusMessage *message,
+                              const gchar *value);
+

Convenience setter for the G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE header field.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

value

The value to set.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_member ()

+
const gchar *
+g_dbus_message_get_member (GDBusMessage *message);
+

Convenience getter for the G_DBUS_MESSAGE_HEADER_FIELD_MEMBER header field.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

The value.

+
+

Since: 2.26

+
+
+
+

g_dbus_message_set_member ()

+
void
+g_dbus_message_set_member (GDBusMessage *message,
+                           const gchar *value);
+

Convenience setter for the G_DBUS_MESSAGE_HEADER_FIELD_MEMBER header field.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

value

The value to set.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_path ()

+
const gchar *
+g_dbus_message_get_path (GDBusMessage *message);
+

Convenience getter for the G_DBUS_MESSAGE_HEADER_FIELD_PATH header field.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

The value.

+
+

Since: 2.26

+
+
+
+

g_dbus_message_set_path ()

+
void
+g_dbus_message_set_path (GDBusMessage *message,
+                         const gchar *value);
+

Convenience setter for the G_DBUS_MESSAGE_HEADER_FIELD_PATH header field.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

value

The value to set.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_reply_serial ()

+
guint32
+g_dbus_message_get_reply_serial (GDBusMessage *message);
+

Convenience getter for the G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL header field.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

The value.

+
+

Since: 2.26

+
+
+
+

g_dbus_message_set_reply_serial ()

+
void
+g_dbus_message_set_reply_serial (GDBusMessage *message,
+                                 guint32 value);
+

Convenience setter for the G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL header field.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

value

The value to set.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_sender ()

+
const gchar *
+g_dbus_message_get_sender (GDBusMessage *message);
+

Convenience getter for the G_DBUS_MESSAGE_HEADER_FIELD_SENDER header field.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

The value.

+
+

Since: 2.26

+
+
+
+

g_dbus_message_set_sender ()

+
void
+g_dbus_message_set_sender (GDBusMessage *message,
+                           const gchar *value);
+

Convenience setter for the G_DBUS_MESSAGE_HEADER_FIELD_SENDER header field.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

value

The value to set.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_signature ()

+
const gchar *
+g_dbus_message_get_signature (GDBusMessage *message);
+

Convenience getter for the G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE header field.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

The value.

+
+

Since: 2.26

+
+
+
+

g_dbus_message_set_signature ()

+
void
+g_dbus_message_set_signature (GDBusMessage *message,
+                              const gchar *value);
+

Convenience setter for the G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE header field.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

value

The value to set.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_message_get_arg0 ()

+
const gchar *
+g_dbus_message_get_arg0 (GDBusMessage *message);
+

Convenience to get the first item in the body of message +.

+
+

Parameters

+
+++++ + + + + + +

message

A GDBusMessage.

 
+
+
+

Returns

+

The string item or NULL if the first item in the body of +message +is not a string.

+
+

Since: 2.26

+
+
+
+

g_dbus_message_to_blob ()

+
guchar *
+g_dbus_message_to_blob (GDBusMessage *message,
+                        gsize *out_size,
+                        GDBusCapabilityFlags capabilities,
+                        GError **error);
+

Serializes message + to a blob. The byte order returned by +g_dbus_message_get_byte_order() will be used.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

message

A GDBusMessage.

 

out_size

Return location for size of generated blob.

 

capabilities

A GDBusCapabilityFlags describing what protocol features are supported.

 

error

Return location for error.

 
+
+
+

Returns

+

A pointer to a +valid binary D-Bus message of out_size +bytes generated by message +or NULL if error +is set. Free with g_free().

+

[array length=out_size][transfer full]

+
+

Since: 2.26

+
+
+
+

g_dbus_message_bytes_needed ()

+
gssize
+g_dbus_message_bytes_needed (guchar *blob,
+                             gsize blob_len,
+                             GError **error);
+

Utility function to calculate how many bytes are needed to +completely deserialize the D-Bus message stored at blob +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

blob

A blob represent a binary D-Bus message.

[array length=blob_len][element-type guint8]

blob_len

The length of blob +(must be at least 16).

 

error

Return location for error or NULL.

 
+
+
+

Returns

+

Number of bytes needed or -1 if error +is set (e.g. if +blob +contains invalid data or not enough data is available to +determine the size).

+
+

Since: 2.26

+
+
+
+

g_dbus_message_new_from_blob ()

+
GDBusMessage *
+g_dbus_message_new_from_blob (guchar *blob,
+                              gsize blob_len,
+                              GDBusCapabilityFlags capabilities,
+                              GError **error);
+

Creates a new GDBusMessage from the data stored at blob +. The byte +order that the message was in can be retrieved using +g_dbus_message_get_byte_order().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

blob

A blob represent a binary D-Bus message.

[array length=blob_len][element-type guint8]

blob_len

The length of blob +.

 

capabilities

A GDBusCapabilityFlags describing what protocol features are supported.

 

error

Return location for error or NULL.

 
+
+
+

Returns

+

A new GDBusMessage or NULL if error +is set. Free with +g_object_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_message_to_gerror ()

+
gboolean
+g_dbus_message_to_gerror (GDBusMessage *message,
+                          GError **error);
+

If message + is not of type G_DBUS_MESSAGE_TYPE_ERROR does +nothing and returns FALSE.

+

Otherwise this method encodes the error in message + as a GError +using g_dbus_error_set_dbus_error() using the information in the +G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME header field of message + as +well as the first string item in message +'s body.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

A GDBusMessage.

 

error

The GError to set.

 
+
+
+

Returns

+

TRUE if error +was set, FALSE otherwise.

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GDBusMessage

+
typedef struct _GDBusMessage GDBusMessage;
+

The GDBusMessage structure contains only private data and should +only be accessed using the provided API.

+

Since: 2.26

+
+
+
+

enum GDBusMessageType

+

Message types used in GDBusMessage.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.26

+
+
+
+

enum GDBusMessageFlags

+

Message flags used in GDBusMessage.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 

G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION

+

If set on a method +call, this flag means that the caller is prepared to wait for interactive +authorization. Since 2.46.

+
 
+
+

Since: 2.26

+
+
+
+

enum GDBusMessageHeaderField

+

Header fields used in GDBusMessage.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.26

+
+
+
+

enum GDBusMessageByteOrder

+

Enumeration used to describe the byte order of a D-Bus message.

+
+

Members

+
+++++ + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.26

+
+
+
+

Property Details

+
+

The “locked” property

+
  “locked”                   gboolean
+

Whether the message is locked.

+

Flags: Read

+

Default value: FALSE

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusMethodInvocation.html b/docs/reference/gio/html/GDBusMethodInvocation.html new file mode 100644 index 0000000..b5d9992 --- /dev/null +++ b/docs/reference/gio/html/GDBusMethodInvocation.html @@ -0,0 +1,908 @@ + + + + +GDBusMethodInvocation: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusMethodInvocation

+

GDBusMethodInvocation — Object for handling remote calls

+
+ +
+

Types and Values

+
++++ + + + + +
 GDBusMethodInvocation
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GDBusMethodInvocation
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Instances of the GDBusMethodInvocation class are used when +handling D-Bus method calls. It provides a way to asynchronously +return results and errors.

+

The normal way to obtain a GDBusMethodInvocation object is to receive +it as an argument to the handle_method_call() function in a +GDBusInterfaceVTable that was passed to g_dbus_connection_register_object().

+
+
+

Functions

+
+

g_dbus_method_invocation_get_sender ()

+
const gchar *
+g_dbus_method_invocation_get_sender (GDBusMethodInvocation *invocation);
+

Gets the bus name that invoked the method.

+
+

Parameters

+
+++++ + + + + + +

invocation

A GDBusMethodInvocation.

 
+
+
+

Returns

+

A string. Do not free, it is owned by invocation +.

+
+

Since: 2.26

+
+
+
+

g_dbus_method_invocation_get_object_path ()

+
const gchar *
+g_dbus_method_invocation_get_object_path
+                               (GDBusMethodInvocation *invocation);
+

Gets the object path the method was invoked on.

+
+

Parameters

+
+++++ + + + + + +

invocation

A GDBusMethodInvocation.

 
+
+
+

Returns

+

A string. Do not free, it is owned by invocation +.

+
+

Since: 2.26

+
+
+
+

g_dbus_method_invocation_get_interface_name ()

+
const gchar *
+g_dbus_method_invocation_get_interface_name
+                               (GDBusMethodInvocation *invocation);
+

Gets the name of the D-Bus interface the method was invoked on.

+

If this method call is a property Get, Set or GetAll call that has +been redirected to the method call handler then +"org.freedesktop.DBus.Properties" will be returned. See +GDBusInterfaceVTable for more information.

+
+

Parameters

+
+++++ + + + + + +

invocation

A GDBusMethodInvocation.

 
+
+
+

Returns

+

A string. Do not free, it is owned by invocation +.

+
+

Since: 2.26

+
+
+
+

g_dbus_method_invocation_get_method_name ()

+
const gchar *
+g_dbus_method_invocation_get_method_name
+                               (GDBusMethodInvocation *invocation);
+

Gets the name of the method that was invoked.

+
+

Parameters

+
+++++ + + + + + +

invocation

A GDBusMethodInvocation.

 
+
+
+

Returns

+

A string. Do not free, it is owned by invocation +.

+
+

Since: 2.26

+
+
+
+

g_dbus_method_invocation_get_method_info ()

+
const GDBusMethodInfo *
+g_dbus_method_invocation_get_method_info
+                               (GDBusMethodInvocation *invocation);
+

Gets information about the method call, if any.

+

If this method invocation is a property Get, Set or GetAll call that +has been redirected to the method call handler then NULL will be +returned. See g_dbus_method_invocation_get_property_info() and +GDBusInterfaceVTable for more information.

+
+

Parameters

+
+++++ + + + + + +

invocation

A GDBusMethodInvocation.

 
+
+
+

Returns

+

A GDBusMethodInfo or NULL. Do not free, it is owned by invocation +.

+
+

Since: 2.26

+
+
+
+

g_dbus_method_invocation_get_property_info ()

+
const GDBusPropertyInfo *
+g_dbus_method_invocation_get_property_info
+                               (GDBusMethodInvocation *invocation);
+

Gets information about the property that this method call is for, if +any.

+

This will only be set in the case of an invocation in response to a +property Get or Set call that has been directed to the method call +handler for an object on account of its property_get() or +property_set() vtable pointers being unset.

+

See GDBusInterfaceVTable for more information.

+

If the call was GetAll, NULL will be returned.

+
+

Parameters

+
+++++ + + + + + +

invocation

A GDBusMethodInvocation

 
+
+
+

Returns

+

a GDBusPropertyInfo or NULL.

+

[transfer none]

+
+

Since: 2.38

+
+
+
+

g_dbus_method_invocation_get_connection ()

+
GDBusConnection *
+g_dbus_method_invocation_get_connection
+                               (GDBusMethodInvocation *invocation);
+

Gets the GDBusConnection the method was invoked on.

+
+

Parameters

+
+++++ + + + + + +

invocation

A GDBusMethodInvocation.

 
+
+
+

Returns

+

A GDBusConnection. Do not free, it is owned by invocation +.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_dbus_method_invocation_get_message ()

+
GDBusMessage *
+g_dbus_method_invocation_get_message (GDBusMethodInvocation *invocation);
+

Gets the GDBusMessage for the method invocation. This is useful if +you need to use low-level protocol features, such as UNIX file +descriptor passing, that cannot be properly expressed in the +GVariant API.

+

See this server and client +for an example of how to use this low-level API to send and receive +UNIX file descriptors.

+
+

Parameters

+
+++++ + + + + + +

invocation

A GDBusMethodInvocation.

 
+
+
+

Returns

+

GDBusMessage. Do not free, it is owned by invocation +.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_dbus_method_invocation_get_parameters ()

+
GVariant *
+g_dbus_method_invocation_get_parameters
+                               (GDBusMethodInvocation *invocation);
+

Gets the parameters of the method invocation. If there are no input +parameters then this will return a GVariant with 0 children rather than NULL.

+
+

Parameters

+
+++++ + + + + + +

invocation

A GDBusMethodInvocation.

 
+
+
+

Returns

+

A GVariant tuple. Do not unref this because it is owned by invocation +.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_dbus_method_invocation_get_user_data ()

+
gpointer
+g_dbus_method_invocation_get_user_data
+                               (GDBusMethodInvocation *invocation);
+

Gets the user_data + gpointer passed to g_dbus_connection_register_object().

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

invocation

A GDBusMethodInvocation.

 
+
+
+

Returns

+

A gpointer.

+
+

Since: 2.26

+
+
+
+

g_dbus_method_invocation_return_value ()

+
void
+g_dbus_method_invocation_return_value (GDBusMethodInvocation *invocation,
+                                       GVariant *parameters);
+

Finishes handling a D-Bus method call by returning parameters +. +If the parameters + GVariant is floating, it is consumed.

+

It is an error if parameters + is not of the right format.

+

This method will free invocation +, you cannot use it afterwards.

+

Since 2.48, if the method call requested for a reply not to be sent +then this call will sink parameters + and free invocation +, but +otherwise do nothing (as per the recommendations of the D-Bus +specification).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

invocation

A GDBusMethodInvocation.

[transfer full]

parameters

A GVariant tuple with out parameters for the method or NULL if not passing any parameters.

[allow-none]
+
+

Since: 2.26

+
+
+
+

g_dbus_method_invocation_return_error ()

+
void
+g_dbus_method_invocation_return_error (GDBusMethodInvocation *invocation,
+                                       GQuark domain,
+                                       gint code,
+                                       const gchar *format,
+                                       ...);
+

Finishes handling a D-Bus method call by returning an error.

+

See g_dbus_error_encode_gerror() for details about what error name +will be returned on the wire. In a nutshell, if the given error is +registered using g_dbus_error_register_error() the name given +during registration is used. Otherwise, a name of the form +org.gtk.GDBus.UnmappedGError.Quark... is used. This provides +transparent mapping of GError between applications using GDBus.

+

If you are writing an application intended to be portable, +always register errors with g_dbus_error_register_error() +or use g_dbus_method_invocation_return_dbus_error().

+

This method will free invocation +, you cannot use it afterwards.

+

Since 2.48, if the method call requested for a reply not to be sent +then this call will free invocation + but otherwise do nothing (as per +the recommendations of the D-Bus specification).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

invocation

A GDBusMethodInvocation.

[transfer full]

domain

A GQuark for the GError error domain.

 

code

The error code.

 

format

printf()-style format.

 

...

Parameters for format +.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_method_invocation_return_error_valist ()

+
void
+g_dbus_method_invocation_return_error_valist
+                               (GDBusMethodInvocation *invocation,
+                                GQuark domain,
+                                gint code,
+                                const gchar *format,
+                                va_list var_args);
+

Like g_dbus_method_invocation_return_error() but intended for +language bindings.

+

This method will free invocation +, you cannot use it afterwards.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

invocation

A GDBusMethodInvocation.

[transfer full]

domain

A GQuark for the GError error domain.

 

code

The error code.

 

format

printf()-style format.

 

var_args

va_list of parameters for format +.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_method_invocation_return_error_literal ()

+
void
+g_dbus_method_invocation_return_error_literal
+                               (GDBusMethodInvocation *invocation,
+                                GQuark domain,
+                                gint code,
+                                const gchar *message);
+

Like g_dbus_method_invocation_return_error() but without printf()-style formatting.

+

This method will free invocation +, you cannot use it afterwards.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

invocation

A GDBusMethodInvocation.

[transfer full]

domain

A GQuark for the GError error domain.

 

code

The error code.

 

message

The error message.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_method_invocation_return_gerror ()

+
void
+g_dbus_method_invocation_return_gerror
+                               (GDBusMethodInvocation *invocation,
+                                const GError *error);
+

Like g_dbus_method_invocation_return_error() but takes a GError +instead of the error domain, error code and message.

+

This method will free invocation +, you cannot use it afterwards.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

invocation

A GDBusMethodInvocation.

[transfer full]

error

A GError.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_method_invocation_return_dbus_error ()

+
void
+g_dbus_method_invocation_return_dbus_error
+                               (GDBusMethodInvocation *invocation,
+                                const gchar *error_name,
+                                const gchar *error_message);
+

Finishes handling a D-Bus method call by returning an error.

+

This method will free invocation +, you cannot use it afterwards.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

invocation

A GDBusMethodInvocation.

[transfer full]

error_name

A valid D-Bus error name.

 

error_message

A valid D-Bus error message.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_method_invocation_take_error ()

+
void
+g_dbus_method_invocation_take_error (GDBusMethodInvocation *invocation,
+                                     GError *error);
+

Like g_dbus_method_invocation_return_gerror() but takes ownership +of error + so the caller does not need to free it.

+

This method will free invocation +, you cannot use it afterwards.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

invocation

A GDBusMethodInvocation.

[transfer full]

error

A GError.

[transfer full]
+
+

Since: 2.30

+
+
+
+

g_dbus_method_invocation_return_value_with_unix_fd_list ()

+
void
+g_dbus_method_invocation_return_value_with_unix_fd_list
+                               (GDBusMethodInvocation *invocation,
+                                GVariant *parameters,
+                                GUnixFDList *fd_list);
+

Like g_dbus_method_invocation_return_value() but also takes a GUnixFDList.

+

This method is only available on UNIX.

+

This method will free invocation +, you cannot use it afterwards.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

invocation

A GDBusMethodInvocation.

[transfer full]

parameters

A GVariant tuple with out parameters for the method or NULL if not passing any parameters.

[allow-none]

fd_list

A GUnixFDList or NULL.

[allow-none]
+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

GDBusMethodInvocation

+
typedef struct _GDBusMethodInvocation GDBusMethodInvocation;
+

The GDBusMethodInvocation structure contains only private data and +should only be accessed using the provided API.

+

Since: 2.26

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusObject.html b/docs/reference/gio/html/GDBusObject.html new file mode 100644 index 0000000..144c807 --- /dev/null +++ b/docs/reference/gio/html/GDBusObject.html @@ -0,0 +1,403 @@ + + + + +GDBusObject: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusObject

+

GDBusObject — Base type for D-Bus objects

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + +
const gchar * + +g_dbus_object_get_object_path () +
+GList * + +g_dbus_object_get_interfaces () +
+GDBusInterface * + +g_dbus_object_get_interface () +
+
+
+

Signals

+
+++++ + + + + + + + + + + + + +
voidinterface-addedRun Last
voidinterface-removedRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GDBusObject
structGDBusObjectIface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GDBusObject
+
+
+
+

Prerequisites

+

+GDBusObject requires + GObject.

+
+
+

Known Implementations

+

+GDBusObject is implemented by + GDBusObjectProxy and GDBusObjectSkeleton.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

The GDBusObject type is the base type for D-Bus objects on both +the service side (see GDBusObjectSkeleton) and the client side +(see GDBusObjectProxy). It is essentially just a container of +interfaces.

+
+
+

Functions

+
+

g_dbus_object_get_object_path ()

+
const gchar *
+g_dbus_object_get_object_path (GDBusObject *object);
+

Gets the object path for object +.

+
+

Parameters

+
+++++ + + + + + +

object

A GDBusObject.

 
+
+
+

Returns

+

A string owned by object +. Do not free.

+
+

Since: 2.30

+
+
+
+

g_dbus_object_get_interfaces ()

+
GList *
+g_dbus_object_get_interfaces (GDBusObject *object);
+

Gets the D-Bus interfaces associated with object +.

+
+

Parameters

+
+++++ + + + + + +

object

A GDBusObject.

 
+
+
+

Returns

+

(element-type GDBusInterface) (transfer full) : A list of GDBusInterface instances. +The returned list must be freed by g_list_free() after each element has been freed +with g_object_unref().

+
+

Since: 2.30

+
+
+
+

g_dbus_object_get_interface ()

+
GDBusInterface *
+g_dbus_object_get_interface (GDBusObject *object,
+                             const gchar *interface_name);
+

Gets the D-Bus interface with name interface_name + associated with +object +, if any.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object

A GDBusObject.

 

interface_name

A D-Bus interface name.

 
+
+
+

Returns

+

NULL if not found, otherwise a +GDBusInterface that must be freed with g_object_unref().

+

[transfer full]

+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

GDBusObject

+
typedef struct _GDBusObject GDBusObject;
+

GDBusObject is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

struct GDBusObjectIface

+
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_);
+};
+
+

Base object type for D-Bus objects.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface 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 “interface-added” signal.

 

interface_removed ()

Signal handler for the “interface-removed” signal.

 
+
+

Since: 2.30

+
+
+
+

Signal Details

+
+

The “interface-added” signal

+
void
+user_function (GDBusObject    *object,
+               GDBusInterface *interface,
+               gpointer        user_data)
+

Emitted when interface + is added to object +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

The GDBusObject emitting the signal.

 

interface

The GDBusInterface that was added.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.30

+
+
+
+

The “interface-removed” signal

+
void
+user_function (GDBusObject    *object,
+               GDBusInterface *interface,
+               gpointer        user_data)
+

Emitted when interface + is removed from object +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

The GDBusObject emitting the signal.

 

interface

The GDBusInterface that was removed.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.30

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusObjectManager.html b/docs/reference/gio/html/GDBusObjectManager.html new file mode 100644 index 0000000..e099d23 --- /dev/null +++ b/docs/reference/gio/html/GDBusObjectManager.html @@ -0,0 +1,592 @@ + + + + +GDBusObjectManager: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusObjectManager

+

GDBusObjectManager — Base type for D-Bus object managers

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
const gchar * + +g_dbus_object_manager_get_object_path () +
+GList * + +g_dbus_object_manager_get_objects () +
+GDBusObject * + +g_dbus_object_manager_get_object () +
+GDBusInterface * + +g_dbus_object_manager_get_interface () +
+
+
+

Signals

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +
voidinterface-addedRun Last
voidinterface-removedRun Last
voidobject-addedRun Last
voidobject-removedRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GDBusObjectManager
structGDBusObjectManagerIface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GDBusObjectManager
+
+
+
+

Prerequisites

+

+GDBusObjectManager requires + GObject.

+
+
+

Known Implementations

+

+GDBusObjectManager is implemented by + GDBusObjectManagerClient and GDBusObjectManagerServer.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

The GDBusObjectManager type is the base type for service- and +client-side implementations of the standardized +org.freedesktop.DBus.ObjectManager +interface.

+

See GDBusObjectManagerClient for the client-side implementation +and GDBusObjectManagerServer for the service-side implementation.

+
+
+

Functions

+
+

g_dbus_object_manager_get_object_path ()

+
const gchar *
+g_dbus_object_manager_get_object_path (GDBusObjectManager *manager);
+

Gets the object path that manager + is for.

+
+

Parameters

+
+++++ + + + + + +

manager

A GDBusObjectManager.

 
+
+
+

Returns

+

A string owned by manager +. Do not free.

+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_get_objects ()

+
GList *
+g_dbus_object_manager_get_objects (GDBusObjectManager *manager);
+

Gets all GDBusObject objects known to manager +.

+
+

Parameters

+
+++++ + + + + + +

manager

A GDBusObjectManager.

 
+
+
+

Returns

+

A list of +GDBusObject objects. The returned list should be freed with +g_list_free() after each element has been freed with +g_object_unref().

+

[transfer full][element-type GDBusObject]

+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_get_object ()

+
GDBusObject *
+g_dbus_object_manager_get_object (GDBusObjectManager *manager,
+                                  const gchar *object_path);
+

Gets the GDBusObjectProxy at object_path +, if any.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

manager

A GDBusObjectManager.

 

object_path

Object path to lookup.

 
+
+
+

Returns

+

A GDBusObject or NULL. Free with +g_object_unref().

+

[transfer full]

+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_get_interface ()

+
GDBusInterface *
+g_dbus_object_manager_get_interface (GDBusObjectManager *manager,
+                                     const gchar *object_path,
+                                     const gchar *interface_name);
+

Gets the interface proxy for interface_name + at object_path +, if +any.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

manager

A GDBusObjectManager.

 

object_path

Object path to lookup.

 

interface_name

D-Bus interface name to lookup.

 
+
+
+

Returns

+

A GDBusInterface instance or NULL. Free +with g_object_unref().

+

[transfer full]

+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

GDBusObjectManager

+
typedef struct _GDBusObjectManager GDBusObjectManager;
+

GDBusObjectManager is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

struct GDBusObjectManagerIface

+
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_);
+};
+
+

Base type for D-Bus object managers.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface 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 “object-added” signal.

 

object_removed ()

Signal handler for the “object-removed” signal.

 

interface_added ()

Signal handler for the “interface-added” signal.

 

interface_removed ()

Signal handler for the “interface-removed” signal.

 
+
+

Since: 2.30

+
+
+
+

Signal Details

+
+

The “interface-added” signal

+
void
+user_function (GDBusObjectManager *manager,
+               GDBusObject        *object,
+               GDBusInterface     *interface,
+               gpointer            user_data)
+

Emitted when interface + is added to object +.

+

This signal exists purely as a convenience to avoid having to +connect signals to all objects managed by manager +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

manager

The GDBusObjectManager emitting the signal.

 

object

The GDBusObject on which an interface was added.

 

interface

The GDBusInterface that was added.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.30

+
+
+
+

The “interface-removed” signal

+
void
+user_function (GDBusObjectManager *manager,
+               GDBusObject        *object,
+               GDBusInterface     *interface,
+               gpointer            user_data)
+

Emitted when interface + has been removed from object +.

+

This signal exists purely as a convenience to avoid having to +connect signals to all objects managed by manager +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

manager

The GDBusObjectManager emitting the signal.

 

object

The GDBusObject on which an interface was removed.

 

interface

The GDBusInterface that was removed.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.30

+
+
+
+

The “object-added” signal

+
void
+user_function (GDBusObjectManager *manager,
+               GDBusObject        *object,
+               gpointer            user_data)
+

Emitted when object + is added to manager +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

manager

The GDBusObjectManager emitting the signal.

 

object

The GDBusObject that was added.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.30

+
+
+
+

The “object-removed” signal

+
void
+user_function (GDBusObjectManager *manager,
+               GDBusObject        *object,
+               gpointer            user_data)
+

Emitted when object + is removed from manager +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

manager

The GDBusObjectManager emitting the signal.

 

object

The GDBusObject that was removed.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.30

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusObjectManagerClient.html b/docs/reference/gio/html/GDBusObjectManagerClient.html new file mode 100644 index 0000000..15fa202 --- /dev/null +++ b/docs/reference/gio/html/GDBusObjectManagerClient.html @@ -0,0 +1,1275 @@ + + + + +GDBusObjectManagerClient: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusObjectManagerClient

+

GDBusObjectManagerClient — Client-side object manager

+
+ +
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GBusTypebus-typeWrite / Construct Only
+GDBusConnection *connectionRead / Write / Construct Only
GDBusObjectManagerClientFlagsflagsRead / Write / Construct Only
gpointerget-proxy-type-destroy-notifyRead / Write / Construct Only
gpointerget-proxy-type-funcRead / Write / Construct Only
gpointerget-proxy-type-user-dataRead / Write / Construct Only
+gchar *nameRead / Write / Construct Only
+gchar *name-ownerRead
+gchar *object-pathRead / Write / Construct Only
+
+
+

Signals

+ +
+
+

Types and Values

+ +
+
+

Object Hierarchy

+
    GObject
+    ╰── GDBusObjectManagerClient
+
+
+
+

Implemented Interfaces

+

+GDBusObjectManagerClient implements + GInitable, GAsyncInitable and GDBusObjectManager.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GDBusObjectManagerClient is used to create, monitor and delete object +proxies for remote objects exported by a GDBusObjectManagerServer (or any +code implementing the +org.freedesktop.DBus.ObjectManager +interface).

+

Once an instance of this type has been created, you can connect to +the “object-added” and +“object-removed” signals and inspect the +GDBusObjectProxy objects returned by +g_dbus_object_manager_get_objects().

+

If the name for a GDBusObjectManagerClient is not owned by anyone at +object construction time, the default behavior is to request the +message bus to launch an owner for the name. This behavior can be +disabled using the G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START +flag. It's also worth noting that this only works if the name of +interest is activatable in the first place. E.g. in some cases it +is not possible to launch an owner for the requested name. In this +case, GDBusObjectManagerClient object construction still succeeds but +there will be no object proxies +(e.g. g_dbus_object_manager_get_objects() returns the empty list) and +the “name-owner” property is NULL.

+

The owner of the requested name can come and go (for example +consider a system service being restarted) – GDBusObjectManagerClient +handles this case too; simply connect to the “notify” +signal to watch for changes on the “name-owner” +property. When the name owner vanishes, the behavior is that +“name-owner” is set to NULL (this includes +emission of the “notify” signal) and then +“object-removed” signals are synthesized +for all currently existing object proxies. Since +“name-owner” is NULL when this happens, you can +use this information to disambiguate a synthesized signal from a +genuine signal caused by object removal on the remote +GDBusObjectManager. Similarly, when a new name owner appears, +“object-added” signals are synthesized +while “name-owner” is still NULL. Only when all +object proxies have been added, the “name-owner” +is set to the new name owner (this includes emission of the +“notify” signal). Furthermore, you are guaranteed that +“name-owner” will alternate between a name owner +(e.g. :1.42) and NULL even in the case where +the name of interest is atomically replaced

+

Ultimately, GDBusObjectManagerClient is used to obtain GDBusProxy +instances. All signals (including the +org.freedesktop.DBus.Properties::PropertiesChanged signal) +delivered to GDBusProxy instances are guaranteed to originate +from the name owner. This guarantee along with the behavior +described above, means that certain race conditions including the +"half the proxy is from the old owner and the other half is from +the new owner" problem cannot happen.

+

To avoid having the application connect to signals on the returned +GDBusObjectProxy and GDBusProxy objects, the +“interface-added”, +“interface-removed”, +“g-properties-changed” and +“g-signal” signals +are also emitted on the GDBusObjectManagerClient instance managing these +objects. The signals emitted are +“interface-added”, +“interface-removed”, +“interface-proxy-properties-changed” and +“interface-proxy-signal”.

+

Note that all callbacks and signals are emitted in the +thread-default main context +that the GDBusObjectManagerClient object was constructed +in. Additionally, the GDBusObjectProxy and GDBusProxy objects +originating from the GDBusObjectManagerClient object will be created in +the same context and, consequently, will deliver signals in the +same main loop.

+
+
+

Functions

+
+

GDBusProxyTypeFunc ()

+
GType
+(*GDBusProxyTypeFunc) (GDBusObjectManagerClient *manager,
+                       const gchar *object_path,
+                       const gchar *interface_name,
+                       gpointer 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 +thread-default main loop +that manager + was constructed in.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

manager

A GDBusObjectManagerClient.

 

object_path

The object path of the remote object.

 

interface_name

The interface name of the remote object or NULL if a GDBusObjectProxy GType is requested.

[allow-none]

user_data

User data.

 
+
+
+

Returns

+

A GType to use for the remote object. The returned type +must be a GDBusProxy<!-- -->- or GDBusObjectProxy<!-- -->-derived +type.

+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_client_new ()

+
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);
+

Asynchronously creates a new GDBusObjectManagerClient object.

+

This is an asynchronous failable constructor. When the result is +ready, callback + will be invoked in the +thread-default main context +of the thread you are calling this method from. You can +then call g_dbus_object_manager_client_new_finish() to get the result. See +g_dbus_object_manager_client_new_sync() for the synchronous version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

A GDBusConnection.

 

flags

Zero or more flags from the GDBusObjectManagerClientFlags enumeration.

 

name

The owner of the control object (unique or well-known name).

 

object_path

The object path of the control object.

 

get_proxy_type_func

A GDBusProxyTypeFunc function or NULL to always construct GDBusProxy proxies.

[allow-none]

get_proxy_type_user_data

User data to pass to get_proxy_type_func +.

 

get_proxy_type_destroy_notify

Free function for get_proxy_type_user_data +or NULL.

[allow-none]

cancellable

A GCancellable or NULL.

[allow-none]

callback

A GAsyncReadyCallback to call when the request is satisfied.

 

user_data

The data to pass to callback +.

 
+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_client_new_finish ()

+
GDBusObjectManager *
+g_dbus_object_manager_client_new_finish
+                               (GAsyncResult *res,
+                                GError **error);
+

Finishes an operation started with g_dbus_object_manager_client_new().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_object_manager_client_new().

 

error

Return location for error or NULL.

 
+
+
+

Returns

+

A +GDBusObjectManagerClient object or NULL if error +is set. Free +with g_object_unref().

+

[transfer full][type GDBusObjectManagerClient]

+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_client_new_sync ()

+
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);
+

Creates a new GDBusObjectManagerClient object.

+

This is a synchronous failable constructor - the calling thread is +blocked until a reply is received. See g_dbus_object_manager_client_new() +for the asynchronous version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

A GDBusConnection.

 

flags

Zero or more flags from the GDBusObjectManagerClientFlags enumeration.

 

name

The owner of the control object (unique or well-known name), or NULL when not using a message bus connection.

[allow-none]

object_path

The object path of the control object.

 

get_proxy_type_func

A GDBusProxyTypeFunc function or NULL to always construct GDBusProxy proxies.

[allow-none]

get_proxy_type_user_data

User data to pass to get_proxy_type_func +.

 

get_proxy_type_destroy_notify

Free function for get_proxy_type_user_data +or NULL.

[allow-none]

cancellable

A GCancellable or NULL.

[allow-none]

error

Return location for error or NULL.

 
+
+
+

Returns

+

A +GDBusObjectManagerClient object or NULL if error +is set. Free +with g_object_unref().

+

[transfer full][type GDBusObjectManagerClient]

+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_client_new_for_bus ()

+
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);
+

Like g_dbus_object_manager_client_new() but takes a GBusType instead of a +GDBusConnection.

+

This is an asynchronous failable constructor. When the result is +ready, callback + will be invoked in the +thread-default main loop +of the thread you are calling this method from. You can +then call g_dbus_object_manager_client_new_for_bus_finish() to get the result. See +g_dbus_object_manager_client_new_for_bus_sync() for the synchronous version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

bus_type

A GBusType.

 

flags

Zero or more flags from the GDBusObjectManagerClientFlags enumeration.

 

name

The owner of the control object (unique or well-known name).

 

object_path

The object path of the control object.

 

get_proxy_type_func

A GDBusProxyTypeFunc function or NULL to always construct GDBusProxy proxies.

[allow-none]

get_proxy_type_user_data

User data to pass to get_proxy_type_func +.

 

get_proxy_type_destroy_notify

Free function for get_proxy_type_user_data +or NULL.

[allow-none]

cancellable

A GCancellable or NULL.

[allow-none]

callback

A GAsyncReadyCallback to call when the request is satisfied.

 

user_data

The data to pass to callback +.

 
+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_client_new_for_bus_finish ()

+
GDBusObjectManager *
+g_dbus_object_manager_client_new_for_bus_finish
+                               (GAsyncResult *res,
+                                GError **error);
+

Finishes an operation started with g_dbus_object_manager_client_new_for_bus().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_object_manager_client_new_for_bus().

 

error

Return location for error or NULL.

 
+
+
+

Returns

+

A +GDBusObjectManagerClient object or NULL if error +is set. Free +with g_object_unref().

+

[transfer full][type GDBusObjectManagerClient]

+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_client_new_for_bus_sync ()

+
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);
+

Like g_dbus_object_manager_client_new_sync() but takes a GBusType instead +of a GDBusConnection.

+

This is a synchronous failable constructor - the calling thread is +blocked until a reply is received. See g_dbus_object_manager_client_new_for_bus() +for the asynchronous version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

bus_type

A GBusType.

 

flags

Zero or more flags from the GDBusObjectManagerClientFlags enumeration.

 

name

The owner of the control object (unique or well-known name).

 

object_path

The object path of the control object.

 

get_proxy_type_func

A GDBusProxyTypeFunc function or NULL to always construct GDBusProxy proxies.

[allow-none]

get_proxy_type_user_data

User data to pass to get_proxy_type_func +.

 

get_proxy_type_destroy_notify

Free function for get_proxy_type_user_data +or NULL.

[allow-none]

cancellable

A GCancellable or NULL.

[allow-none]

error

Return location for error or NULL.

 
+
+
+

Returns

+

A +GDBusObjectManagerClient object or NULL if error +is set. Free +with g_object_unref().

+

[transfer full][type GDBusObjectManagerClient]

+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_client_get_connection ()

+
GDBusConnection *
+g_dbus_object_manager_client_get_connection
+                               (GDBusObjectManagerClient *manager);
+

Gets the GDBusConnection used by manager +.

+
+

Parameters

+
+++++ + + + + + +

manager

A GDBusObjectManagerClient

 
+
+
+

Returns

+

A GDBusConnection object. Do not free, +the object belongs to manager +.

+

[transfer none]

+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_client_get_flags ()

+
GDBusObjectManagerClientFlags
+g_dbus_object_manager_client_get_flags
+                               (GDBusObjectManagerClient *manager);
+

Gets the flags that manager + was constructed with.

+
+

Parameters

+
+++++ + + + + + +

manager

A GDBusObjectManagerClient

 
+
+
+

Returns

+

Zero of more flags from the GDBusObjectManagerClientFlags +enumeration.

+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_client_get_name ()

+
const gchar *
+g_dbus_object_manager_client_get_name (GDBusObjectManagerClient *manager);
+

Gets the name that manager + is for, or NULL if not a message bus +connection.

+
+

Parameters

+
+++++ + + + + + +

manager

A GDBusObjectManagerClient

 
+
+
+

Returns

+

A unique or well-known name. Do not free, the string +belongs to manager +.

+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_client_get_name_owner ()

+
gchar *
+g_dbus_object_manager_client_get_name_owner
+                               (GDBusObjectManagerClient *manager);
+

The unique name that owns the name that manager + is for or NULL if +no-one currently owns that name. You can connect to the +“notify” signal to track changes to the +“name-owner” property.

+
+

Parameters

+
+++++ + + + + + +

manager

A GDBusObjectManagerClient.

 
+
+
+

Returns

+

The name owner or NULL if no name owner +exists. Free with g_free().

+

[nullable]

+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

GDBusObjectManagerClient

+
typedef struct _GDBusObjectManagerClient GDBusObjectManagerClient;
+

The GDBusObjectManagerClient structure contains private data and should +only be accessed using the provided API.

+

Since: 2.30

+
+
+
+

struct GDBusObjectManagerClientClass

+
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);
+};
+
+

Class structure for GDBusObjectManagerClient.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GObjectClass parent_class;

The parent class.

 

interface_proxy_signal ()

Signal class handler for the “interface-proxy-signal” signal.

 

interface_proxy_properties_changed ()

Signal class handler for the “interface-proxy-properties-changed” signal.

 
+
+

Since: 2.30

+
+
+
+

enum GDBusObjectManagerClientFlags

+

Flags used when constructing a GDBusObjectManagerClient.

+
+

Members

+
+++++ + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.30

+
+
+
+

Property Details

+
+

The “bus-type” property

+
  “bus-type”                 GBusType
+

If this property is not G_BUS_TYPE_NONE, then +“connection” must be NULL and will be set to the +GDBusConnection obtained by calling g_bus_get() with the value +of this property.

+

Flags: Write / Construct Only

+

Default value: G_BUS_TYPE_NONE

+

Since: 2.30

+
+
+
+

The “connection” property

+
  “connection”               GDBusConnection *
+

The GDBusConnection to use.

+

Flags: Read / Write / Construct Only

+

Since: 2.30

+
+
+
+

The “flags” property

+
  “flags”                    GDBusObjectManagerClientFlags
+

Flags from the GDBusObjectManagerClientFlags enumeration.

+

Flags: Read / Write / Construct Only

+

Since: 2.30

+
+
+
+

The “get-proxy-type-destroy-notify” property

+
  “get-proxy-type-destroy-notify” gpointer
+

A GDestroyNotify for the gpointer user_data in “get-proxy-type-user-data”.

+

Flags: Read / Write / Construct Only

+

Since: 2.30

+
+
+
+

The “get-proxy-type-func” property

+
  “get-proxy-type-func”      gpointer
+

The GDBusProxyTypeFunc to use when determining what GType to +use for interface proxies or NULL.

+

Flags: Read / Write / Construct Only

+

Since: 2.30

+
+
+
+

The “get-proxy-type-user-data” property

+
  “get-proxy-type-user-data” gpointer
+

The gpointer user_data to pass to “get-proxy-type-func”.

+

Flags: Read / Write / Construct Only

+

Since: 2.30

+
+
+
+

The “name” property

+
  “name”                     gchar *
+

The well-known name or unique name that the manager is for.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.30

+
+
+
+

The “name-owner” property

+
  “name-owner”               gchar *
+

The unique name that owns “name” or NULL if +no-one is currently owning the name. Connect to the +“notify” signal to track changes to this property.

+

Flags: Read

+

Default value: NULL

+

Since: 2.30

+
+
+
+

The “object-path” property

+
  “object-path”              gchar *
+

The object path the manager is for.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.30

+
+
+
+

Signal Details

+
+

The “interface-proxy-properties-changed” signal

+
void
+user_function (GDBusObjectManagerClient *manager,
+               GDBusObjectProxy         *object_proxy,
+               GDBusProxy               *interface_proxy,
+               GVariant                 *changed_properties,
+               GStrv                     invalidated_properties,
+               gpointer                  user_data)
+

Emitted when one or more D-Bus properties on proxy changes. The +local cache has already been updated when this signal fires. Note +that both changed_properties + and invalidated_properties + are +guaranteed to never be NULL (either may be empty though).

+

This signal exists purely as a convenience to avoid having to +connect signals to all interface proxies managed by manager +.

+

This signal is emitted in the +thread-default main context +that manager + was constructed in.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

manager

The GDBusObjectManagerClient emitting the signal.

 

object_proxy

The GDBusObjectProxy on which an interface has properties that are changing.

 

interface_proxy

The GDBusProxy that has properties that are changing.

 

changed_properties

A GVariant containing the properties that changed.

 

invalidated_properties

A NULL terminated array of properties that was invalidated.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.30

+
+
+
+

The “interface-proxy-signal” signal

+
void
+user_function (GDBusObjectManagerClient *manager,
+               GDBusObjectProxy         *object_proxy,
+               GDBusProxy               *interface_proxy,
+               gchar                    *sender_name,
+               gchar                    *signal_name,
+               GVariant                 *parameters,
+               gpointer                  user_data)
+

Emitted when a D-Bus signal is received on interface_proxy +.

+

This signal exists purely as a convenience to avoid having to +connect signals to all interface proxies managed by manager +.

+

This signal is emitted in the +thread-default main context +that manager + was constructed in.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

manager

The GDBusObjectManagerClient emitting the signal.

 

object_proxy

The GDBusObjectProxy on which an interface is emitting a D-Bus signal.

 

interface_proxy

The GDBusProxy that is emitting a D-Bus signal.

 

sender_name

The sender of the signal or NULL if the connection is not a bus connection.

 

signal_name

The signal name.

 

parameters

A GVariant tuple with parameters for the signal.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.30

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusObjectManagerServer.html b/docs/reference/gio/html/GDBusObjectManagerServer.html new file mode 100644 index 0000000..116cd07 --- /dev/null +++ b/docs/reference/gio/html/GDBusObjectManagerServer.html @@ -0,0 +1,508 @@ + + + + +GDBusObjectManagerServer: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusObjectManagerServer

+

GDBusObjectManagerServer — Service-side object manager

+
+ +
+

Properties

+
+++++ + + + + + + + + + + + + +
+GDBusConnection *connectionRead / Write
+gchar *object-pathRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GDBusObjectManagerServer
structGDBusObjectManagerServerClass
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GDBusObjectManagerServer
+
+
+
+

Implemented Interfaces

+

+GDBusObjectManagerServer implements + GDBusObjectManager.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GDBusObjectManagerServer is used to export GDBusObject instances using +the standardized +org.freedesktop.DBus.ObjectManager +interface. For example, remote D-Bus clients can get all objects +and properties in a single call. Additionally, any change in the +object hierarchy is broadcast using signals. This means that D-Bus +clients can keep caches up to date by only listening to D-Bus +signals.

+

The recommended path to export an object manager at is the path form of the +well-known name of a D-Bus service, or below. For example, if a D-Bus service +is available at the well-known name net.example.ExampleService1, the object +manager should typically be exported at /net/example/ExampleService1, or +below (to allow for multiple object managers in a service).

+

It is not supported to export an object manager at the root path, /.

+

See GDBusObjectManagerClient for the client-side code that is +intended to be used with GDBusObjectManagerServer or any D-Bus +object implementing the org.freedesktop.DBus.ObjectManager +interface.

+
+
+

Functions

+
+

g_dbus_object_manager_server_new ()

+
GDBusObjectManagerServer *
+g_dbus_object_manager_server_new (const gchar *object_path);
+

Creates a new GDBusObjectManagerServer object.

+

The returned server isn't yet exported on any connection. To do so, +use g_dbus_object_manager_server_set_connection(). Normally you +want to export all of your objects before doing so to avoid +InterfacesAdded +signals being emitted.

+
+

Parameters

+
+++++ + + + + + +

object_path

The object path to export the manager object at, which should +not be /.

 
+
+
+

Returns

+

A GDBusObjectManagerServer object. Free with g_object_unref().

+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_server_get_connection ()

+
GDBusConnection *
+g_dbus_object_manager_server_get_connection
+                               (GDBusObjectManagerServer *manager);
+

Gets the GDBusConnection used by manager +.

+
+

Parameters

+
+++++ + + + + + +

manager

A GDBusObjectManagerServer

 
+
+
+

Returns

+

A GDBusConnection object or NULL if +manager +isn't exported on a connection. The returned object should +be freed with g_object_unref().

+

[transfer full]

+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_server_set_connection ()

+
void
+g_dbus_object_manager_server_set_connection
+                               (GDBusObjectManagerServer *manager,
+                                GDBusConnection *connection);
+

Exports all objects managed by manager + on connection +. If +connection + is NULL, stops exporting objects.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

manager

A GDBusObjectManagerServer.

 

connection

A GDBusConnection or NULL.

[allow-none]
+
+
+
+
+

g_dbus_object_manager_server_export ()

+
void
+g_dbus_object_manager_server_export (GDBusObjectManagerServer *manager,
+                                     GDBusObjectSkeleton *object);
+

Exports object + on manager +.

+

If there is already a GDBusObject exported at the object path, +then the old object is removed.

+

The object path for object + must be in the hierarchy rooted by the +object path for manager +.

+

Note that manager + will take a reference on object + for as long as +it is exported.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

manager

A GDBusObjectManagerServer.

 

object

A GDBusObjectSkeleton.

 
+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_server_export_uniquely ()

+
void
+g_dbus_object_manager_server_export_uniquely
+                               (GDBusObjectManagerServer *manager,
+                                GDBusObjectSkeleton *object);
+

Like g_dbus_object_manager_server_export() but appends a string of +the form _N (with N being a natural number) to object +'s object path +if an object with the given path already exists. As such, the +“g-object-path” property of object + may be modified.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

manager

A GDBusObjectManagerServer.

 

object

An object.

 
+
+

Since: 2.30

+
+
+
+

g_dbus_object_manager_server_is_exported ()

+
gboolean
+g_dbus_object_manager_server_is_exported
+                               (GDBusObjectManagerServer *manager,
+                                GDBusObjectSkeleton *object);
+

Returns whether object + is currently exported on manager +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

manager

A GDBusObjectManagerServer.

 

object

An object.

 
+
+
+

Returns

+

TRUE if object +is exported

+
+

Since: 2.34

+
+
+
+

g_dbus_object_manager_server_unexport ()

+
gboolean
+g_dbus_object_manager_server_unexport (GDBusObjectManagerServer *manager,
+                                       const gchar *object_path);
+

If manager + has an object at path +, removes the object. Otherwise +does nothing.

+

Note that object_path + must be in the hierarchy rooted by the +object path for manager +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

manager

A GDBusObjectManagerServer.

 

object_path

An object path.

 
+
+
+

Returns

+

TRUE if object at object_path +was removed, FALSE otherwise.

+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

GDBusObjectManagerServer

+
typedef struct _GDBusObjectManagerServer GDBusObjectManagerServer;
+

The GDBusObjectManagerServer structure contains private data and should +only be accessed using the provided API.

+

Since: 2.30

+
+
+
+

struct GDBusObjectManagerServerClass

+
struct GDBusObjectManagerServerClass {
+  GObjectClass parent_class;
+};
+
+

Class structure for GDBusObjectManagerServer.

+
+

Members

+
+++++ + + + + + +

GObjectClass parent_class;

The parent class.

 
+
+

Since: 2.30

+
+
+
+

Property Details

+
+

The “connection” property

+
  “connection”               GDBusConnection *
+

The GDBusConnection to export objects on.

+

Flags: Read / Write

+

Since: 2.30

+
+
+
+

The “object-path” property

+
  “object-path”              gchar *
+

The object path to register the manager object at.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.30

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusObjectProxy.html b/docs/reference/gio/html/GDBusObjectProxy.html new file mode 100644 index 0000000..65bedb0 --- /dev/null +++ b/docs/reference/gio/html/GDBusObjectProxy.html @@ -0,0 +1,258 @@ + + + + +GDBusObjectProxy: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusObjectProxy

+

GDBusObjectProxy — Client-side D-Bus object

+
+
+

Functions

+
++++ + + + + + + + + + + +
+GDBusObjectProxy * + +g_dbus_object_proxy_new () +
+GDBusConnection * + +g_dbus_object_proxy_get_connection () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + +
+GDBusConnection *g-connectionRead / Write / Construct Only
+gchar *g-object-pathRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GDBusObjectProxy
structGDBusObjectProxyClass
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GDBusObjectProxy
+
+
+
+

Implemented Interfaces

+

+GDBusObjectProxy implements + GDBusObject.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A GDBusObjectProxy is an object used to represent a remote object +with one or more D-Bus interfaces. Normally, you don't instantiate +a GDBusObjectProxy yourself - typically GDBusObjectManagerClient +is used to obtain it.

+
+
+

Functions

+
+

g_dbus_object_proxy_new ()

+
GDBusObjectProxy *
+g_dbus_object_proxy_new (GDBusConnection *connection,
+                         const gchar *object_path);
+

Creates a new GDBusObjectProxy for the given connection and +object path.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

connection

a GDBusConnection

 

object_path

the object path

 
+
+
+

Returns

+

a new GDBusObjectProxy

+
+

Since: 2.30

+
+
+
+

g_dbus_object_proxy_get_connection ()

+
GDBusConnection *
+g_dbus_object_proxy_get_connection (GDBusObjectProxy *proxy);
+

Gets the connection that proxy + is for.

+
+

Parameters

+
+++++ + + + + + +

proxy

a GDBusObjectProxy

 
+
+
+

Returns

+

A GDBusConnection. Do not free, the +object is owned by proxy +.

+

[transfer none]

+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

GDBusObjectProxy

+
typedef struct _GDBusObjectProxy GDBusObjectProxy;
+

The GDBusObjectProxy structure contains private data and should +only be accessed using the provided API.

+

Since: 2.30

+
+
+
+

struct GDBusObjectProxyClass

+
struct GDBusObjectProxyClass {
+  GObjectClass parent_class;
+};
+
+

Class structure for GDBusObjectProxy.

+
+

Members

+
+++++ + + + + + +

GObjectClass parent_class;

The parent class.

 
+
+

Since: 2.30

+
+
+
+

Property Details

+
+

The “g-connection” property

+
  “g-connection”             GDBusConnection *
+

The connection of the proxy.

+

Flags: Read / Write / Construct Only

+

Since: 2.30

+
+
+
+

The “g-object-path” property

+
  “g-object-path”            gchar *
+

The object path of the proxy.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.30

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusObjectSkeleton.html b/docs/reference/gio/html/GDBusObjectSkeleton.html new file mode 100644 index 0000000..456769f --- /dev/null +++ b/docs/reference/gio/html/GDBusObjectSkeleton.html @@ -0,0 +1,488 @@ + + + + +GDBusObjectSkeleton: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusObjectSkeleton

+

GDBusObjectSkeleton — Service-side D-Bus object

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GDBusObjectSkeleton * + +g_dbus_object_skeleton_new () +
+void + +g_dbus_object_skeleton_flush () +
+void + +g_dbus_object_skeleton_add_interface () +
+void + +g_dbus_object_skeleton_remove_interface () +
+void + +g_dbus_object_skeleton_remove_interface_by_name () +
+void + +g_dbus_object_skeleton_set_object_path () +
+
+
+

Properties

+
+++++ + + + + + +
+gchar *g-object-pathRead / Write / Construct
+
+
+

Signals

+ +
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GDBusObjectSkeleton
structGDBusObjectSkeletonClass
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GDBusObjectSkeleton
+
+
+
+

Implemented Interfaces

+

+GDBusObjectSkeleton implements + GDBusObject.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A GDBusObjectSkeleton instance is essentially a group of D-Bus +interfaces. The set of exported interfaces on the object may be +dynamic and change at runtime.

+

This type is intended to be used with GDBusObjectManager.

+
+
+

Functions

+
+

g_dbus_object_skeleton_new ()

+
GDBusObjectSkeleton *
+g_dbus_object_skeleton_new (const gchar *object_path);
+

Creates a new GDBusObjectSkeleton.

+
+

Parameters

+
+++++ + + + + + +

object_path

An object path.

 
+
+
+

Returns

+

A GDBusObjectSkeleton. Free with g_object_unref().

+
+

Since: 2.30

+
+
+
+

g_dbus_object_skeleton_flush ()

+
void
+g_dbus_object_skeleton_flush (GDBusObjectSkeleton *object);
+

This method simply calls g_dbus_interface_skeleton_flush() on all +interfaces belonging to object +. See that method for when flushing +is useful.

+
+

Parameters

+
+++++ + + + + + +

object

A GDBusObjectSkeleton.

 
+
+

Since: 2.30

+
+
+
+

g_dbus_object_skeleton_add_interface ()

+
void
+g_dbus_object_skeleton_add_interface (GDBusObjectSkeleton *object,
+                                      GDBusInterfaceSkeleton *interface_);
+

Adds interface_ + to object +.

+

If object + already contains a GDBusInterfaceSkeleton with the same +interface name, it is removed before interface_ + is added.

+

Note that object + takes its own reference on interface_ + and holds +it until removed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object

A GDBusObjectSkeleton.

 

interface_

A GDBusInterfaceSkeleton.

 
+
+

Since: 2.30

+
+
+
+

g_dbus_object_skeleton_remove_interface ()

+
void
+g_dbus_object_skeleton_remove_interface
+                               (GDBusObjectSkeleton *object,
+                                GDBusInterfaceSkeleton *interface_);
+

Removes interface_ + from object +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object

A GDBusObjectSkeleton.

 

interface_

A GDBusInterfaceSkeleton.

 
+
+

Since: 2.30

+
+
+
+

g_dbus_object_skeleton_remove_interface_by_name ()

+
void
+g_dbus_object_skeleton_remove_interface_by_name
+                               (GDBusObjectSkeleton *object,
+                                const gchar *interface_name);
+

Removes the GDBusInterface with interface_name + from object +.

+

If no D-Bus interface of the given interface exists, this function +does nothing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object

A GDBusObjectSkeleton.

 

interface_name

A D-Bus interface name.

 
+
+

Since: 2.30

+
+
+
+

g_dbus_object_skeleton_set_object_path ()

+
void
+g_dbus_object_skeleton_set_object_path
+                               (GDBusObjectSkeleton *object,
+                                const gchar *object_path);
+

Sets the object path for object +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object

A GDBusObjectSkeleton.

 

object_path

A valid D-Bus object path.

 
+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

GDBusObjectSkeleton

+
typedef struct _GDBusObjectSkeleton GDBusObjectSkeleton;
+

The GDBusObjectSkeleton structure contains private data and should only be +accessed using the provided API.

+

Since: 2.30

+
+
+
+

struct GDBusObjectSkeletonClass

+
struct GDBusObjectSkeletonClass {
+  GObjectClass parent_class;
+
+  /* Signals */
+  gboolean (*authorize_method) (GDBusObjectSkeleton       *object,
+                                GDBusInterfaceSkeleton    *interface_,
+                                GDBusMethodInvocation *invocation);
+};
+
+

Class structure for GDBusObjectSkeleton.

+
+

Members

+
+++++ + + + + + + + + + + + + +

GObjectClass parent_class;

The parent class.

 

authorize_method ()

Signal class handler for the “authorize-method” signal.

 
+
+

Since: 2.30

+
+
+
+

Property Details

+
+

The “g-object-path” property

+
  “g-object-path”            gchar *
+

The object path where the object is exported.

+

Flags: Read / Write / Construct

+

Default value: NULL

+

Since: 2.30

+
+
+
+

Signal Details

+
+

The “authorize-method” signal

+
gboolean
+user_function (GDBusObjectSkeleton    *object,
+               GDBusInterfaceSkeleton *interface,
+               GDBusMethodInvocation  *invocation,
+               gpointer                user_data)
+

Emitted when a method is invoked by a remote caller and used to +determine if the method call is authorized.

+

This signal is like GDBusInterfaceSkeleton's +“g-authorize-method” signal, +except that it is for the enclosing object.

+

The default class handler just returns TRUE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

object

The GDBusObjectSkeleton emitting the signal.

 

interface

The GDBusInterfaceSkeleton that invocation +is for.

 

invocation

A GDBusMethodInvocation.

 

user_data

user data set when the signal handler was connected.

 
+
+
+

Returns

+

TRUE if the call is authorized, FALSE otherwise.

+
+

Flags: Run Last

+

Since: 2.30

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusProxy.html b/docs/reference/gio/html/GDBusProxy.html new file mode 100644 index 0000000..b9e6e29 --- /dev/null +++ b/docs/reference/gio/html/GDBusProxy.html @@ -0,0 +1,2151 @@ + + + + +GDBusProxy: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusProxy

+

GDBusProxy — Client-side D-Bus interface proxy

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +g_dbus_proxy_new () +
+GDBusProxy * + +g_dbus_proxy_new_finish () +
+GDBusProxy * + +g_dbus_proxy_new_sync () +
+void + +g_dbus_proxy_new_for_bus () +
+GDBusProxy * + +g_dbus_proxy_new_for_bus_finish () +
+GDBusProxy * + +g_dbus_proxy_new_for_bus_sync () +
+GDBusProxyFlags + +g_dbus_proxy_get_flags () +
+GDBusConnection * + +g_dbus_proxy_get_connection () +
const gchar * + +g_dbus_proxy_get_name () +
+gchar * + +g_dbus_proxy_get_name_owner () +
const gchar * + +g_dbus_proxy_get_object_path () +
const gchar * + +g_dbus_proxy_get_interface_name () +
+gint + +g_dbus_proxy_get_default_timeout () +
+void + +g_dbus_proxy_set_default_timeout () +
+GVariant * + +g_dbus_proxy_get_cached_property () +
+void + +g_dbus_proxy_set_cached_property () +
+gchar ** + +g_dbus_proxy_get_cached_property_names () +
+void + +g_dbus_proxy_set_interface_info () +
+GDBusInterfaceInfo * + +g_dbus_proxy_get_interface_info () +
+void + +g_dbus_proxy_call () +
+GVariant * + +g_dbus_proxy_call_finish () +
+GVariant * + +g_dbus_proxy_call_sync () +
+void + +g_dbus_proxy_call_with_unix_fd_list () +
+GVariant * + +g_dbus_proxy_call_with_unix_fd_list_finish () +
+GVariant * + +g_dbus_proxy_call_with_unix_fd_list_sync () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GBusTypeg-bus-typeWrite / Construct Only
+GDBusConnection *g-connectionRead / Write / Construct Only
gintg-default-timeoutRead / Write / Construct
GDBusProxyFlagsg-flagsRead / Write / Construct Only
+GDBusInterfaceInfo *g-interface-infoRead / Write
+gchar *g-interface-nameRead / Write / Construct Only
+gchar *g-nameRead / Write / Construct Only
+gchar *g-name-ownerRead
+gchar *g-object-pathRead / Write / Construct Only
+
+
+

Signals

+
+++++ + + + + + + + + + + + + +
voidg-properties-changedRun Last
voidg-signalRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
enumGDBusProxyFlags
 GDBusProxy
structGDBusProxyClass
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GDBusProxy
+
+
+
+

Implemented Interfaces

+

+GDBusProxy implements + GDBusInterface, GInitable and GAsyncInitable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GDBusProxy is a base class used for proxies to access a D-Bus +interface on a remote object. A GDBusProxy can be constructed for +both well-known and unique names.

+

By default, GDBusProxy will cache all properties (and listen to +changes) of the remote object, and proxy all signals that gets +emitted. This behaviour can be changed by passing suitable +GDBusProxyFlags when the proxy is created. If the proxy is for a +well-known name, the property cache is flushed when the name owner +vanishes and reloaded when a name owner appears.

+

If a GDBusProxy is used for a well-known name, the owner of the +name is tracked and can be read from +“g-name-owner”. Connect to the “notify” signal to +get notified of changes. Additionally, only signals and property +changes emitted from the current name owner are considered and +calls are always sent to the current name owner. This avoids a +number of race conditions when the name is lost by one owner and +claimed by another. However, if no name owner currently exists, +then calls will be sent to the well-known name which may result in +the message bus launching an owner (unless +G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START is set).

+

The generic “g-properties-changed” and +“g-signal” signals are not very convenient to work with. +Therefore, the recommended way of working with proxies is to subclass +GDBusProxy, and have more natural properties and signals in your derived +class. This example shows how this can +easily be done using the gdbus-codegen tool.

+

A GDBusProxy instance can be used from multiple threads but note +that all signals (e.g. “g-signal”, “g-properties-changed” +and “notify”) are emitted in the +thread-default main context +of the thread where the instance was constructed.

+

An example using a proxy for a well-known name can be found in +gdbus-example-watch-proxy.c

+
+
+

Functions

+
+

g_dbus_proxy_new ()

+
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);
+

Creates a proxy for accessing interface_name + on the remote object +at object_path + owned by name + at connection + and asynchronously +loads D-Bus properties unless the +G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES flag is used. Connect to +the “g-properties-changed” signal to get notified about +property changes.

+

If the G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS flag is not set, also sets up +match rules for signals. Connect to the “g-signal” signal +to handle signals from the remote object.

+

If name + is a well-known name and the +G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START and G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION +flags aren't set and no name owner currently exists, the message bus +will be requested to launch a name owner for the name.

+

This is a failable asynchronous constructor - when the proxy is +ready, callback + will be invoked and you can use +g_dbus_proxy_new_finish() to get the result.

+

See g_dbus_proxy_new_sync() and for a synchronous version of this constructor.

+

GDBusProxy is used in this example.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

A GDBusConnection.

 

flags

Flags used when constructing the proxy.

 

info

A GDBusInterfaceInfo specifying the minimal interface that proxy +conforms to or NULL.

[allow-none]

name

A bus name (well-known or unique) or NULL if connection +is not a message bus connection.

[allow-none]

object_path

An object path.

 

interface_name

A D-Bus interface name.

 

cancellable

A GCancellable or NULL.

[allow-none]

callback

Callback function to invoke when the proxy is ready.

 

user_data

User data to pass to callback +.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_new_finish ()

+
GDBusProxy *
+g_dbus_proxy_new_finish (GAsyncResult *res,
+                         GError **error);
+

Finishes creating a GDBusProxy.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

res

A GAsyncResult obtained from the GAsyncReadyCallback function passed to g_dbus_proxy_new().

 

error

Return location for error or NULL.

 
+
+
+

Returns

+

A GDBusProxy or NULL if error +is set. Free with g_object_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_new_sync ()

+
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);
+

Creates a proxy for accessing interface_name + on the remote object +at object_path + owned by name + at connection + and synchronously +loads D-Bus properties unless the +G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES flag is used.

+

If the G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS flag is not set, also sets up +match rules for signals. Connect to the “g-signal” signal +to handle signals from the remote object.

+

If name + is a well-known name and the +G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START and G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION +flags aren't set and no name owner currently exists, the message bus +will be requested to launch a name owner for the name.

+

This is a synchronous failable constructor. See g_dbus_proxy_new() +and g_dbus_proxy_new_finish() for the asynchronous version.

+

GDBusProxy is used in this example.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

A GDBusConnection.

 

flags

Flags used when constructing the proxy.

 

info

A GDBusInterfaceInfo specifying the minimal interface that proxy +conforms to or NULL.

[allow-none]

name

A bus name (well-known or unique) or NULL if connection +is not a message bus connection.

[allow-none]

object_path

An object path.

 

interface_name

A D-Bus interface name.

 

cancellable

A GCancellable or NULL.

[allow-none]

error

Return location for error or NULL.

[allow-none]
+
+
+

Returns

+

A GDBusProxy or NULL if error is set. Free with g_object_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_new_for_bus ()

+
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);
+

Like g_dbus_proxy_new() but takes a GBusType instead of a GDBusConnection.

+

GDBusProxy is used in this example.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

bus_type

A GBusType.

 

flags

Flags used when constructing the proxy.

 

info

A GDBusInterfaceInfo specifying the minimal interface that proxy +conforms to or NULL.

[allow-none]

name

A bus name (well-known or unique).

 

object_path

An object path.

 

interface_name

A D-Bus interface name.

 

cancellable

A GCancellable or NULL.

[allow-none]

callback

Callback function to invoke when the proxy is ready.

 

user_data

User data to pass to callback +.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_new_for_bus_finish ()

+
GDBusProxy *
+g_dbus_proxy_new_for_bus_finish (GAsyncResult *res,
+                                 GError **error);
+

Finishes creating a GDBusProxy.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

res

A GAsyncResult obtained from the GAsyncReadyCallback function passed to g_dbus_proxy_new_for_bus().

 

error

Return location for error or NULL.

 
+
+
+

Returns

+

A GDBusProxy or NULL if error +is set. Free with g_object_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_new_for_bus_sync ()

+
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);
+

Like g_dbus_proxy_new_sync() but takes a GBusType instead of a GDBusConnection.

+

GDBusProxy is used in this example.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

bus_type

A GBusType.

 

flags

Flags used when constructing the proxy.

 

info

A GDBusInterfaceInfo specifying the minimal interface +that proxy +conforms to or NULL.

[allow-none]

name

A bus name (well-known or unique).

 

object_path

An object path.

 

interface_name

A D-Bus interface name.

 

cancellable

A GCancellable or NULL.

[allow-none]

error

Return location for error or NULL.

 
+
+
+

Returns

+

A GDBusProxy or NULL if error is set. Free with g_object_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_get_flags ()

+
GDBusProxyFlags
+g_dbus_proxy_get_flags (GDBusProxy *proxy);
+

Gets the flags that proxy + was constructed with.

+
+

Parameters

+
+++++ + + + + + +

proxy

A GDBusProxy.

 
+
+
+

Returns

+

Flags from the GDBusProxyFlags enumeration.

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_get_connection ()

+
GDBusConnection *
+g_dbus_proxy_get_connection (GDBusProxy *proxy);
+

Gets the connection proxy + is for.

+
+

Parameters

+
+++++ + + + + + +

proxy

A GDBusProxy.

 
+
+
+

Returns

+

A GDBusConnection owned by proxy +. Do not free.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_get_name ()

+
const gchar *
+g_dbus_proxy_get_name (GDBusProxy *proxy);
+

Gets the name that proxy + was constructed for.

+
+

Parameters

+
+++++ + + + + + +

proxy

A GDBusProxy.

 
+
+
+

Returns

+

A string owned by proxy +. Do not free.

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_get_name_owner ()

+
gchar *
+g_dbus_proxy_get_name_owner (GDBusProxy *proxy);
+

The unique name that owns the name that proxy + is for or NULL if +no-one currently owns that name. You may connect to the +“notify” signal to track changes to the +“g-name-owner” property.

+
+

Parameters

+
+++++ + + + + + +

proxy

A GDBusProxy.

 
+
+
+

Returns

+

The name owner or NULL if no name owner exists. Free with g_free().

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_get_object_path ()

+
const gchar *
+g_dbus_proxy_get_object_path (GDBusProxy *proxy);
+

Gets the object path proxy + is for.

+
+

Parameters

+
+++++ + + + + + +

proxy

A GDBusProxy.

 
+
+
+

Returns

+

A string owned by proxy +. Do not free.

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_get_interface_name ()

+
const gchar *
+g_dbus_proxy_get_interface_name (GDBusProxy *proxy);
+

Gets the D-Bus interface name proxy + is for.

+
+

Parameters

+
+++++ + + + + + +

proxy

A GDBusProxy.

 
+
+
+

Returns

+

A string owned by proxy +. Do not free.

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_get_default_timeout ()

+
gint
+g_dbus_proxy_get_default_timeout (GDBusProxy *proxy);
+

Gets the timeout to use if -1 (specifying default timeout) is +passed as timeout_msec + in the g_dbus_proxy_call() and +g_dbus_proxy_call_sync() functions.

+

See the “g-default-timeout” property for more details.

+
+

Parameters

+
+++++ + + + + + +

proxy

A GDBusProxy.

 
+
+
+

Returns

+

Timeout to use for proxy +.

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_set_default_timeout ()

+
void
+g_dbus_proxy_set_default_timeout (GDBusProxy *proxy,
+                                  gint timeout_msec);
+

Sets the timeout to use if -1 (specifying default timeout) is +passed as timeout_msec + in the g_dbus_proxy_call() and +g_dbus_proxy_call_sync() functions.

+

See the “g-default-timeout” property for more details.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

proxy

A GDBusProxy.

 

timeout_msec

Timeout in milliseconds.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_get_cached_property ()

+
GVariant *
+g_dbus_proxy_get_cached_property (GDBusProxy *proxy,
+                                  const gchar *property_name);
+

Looks up the value for a property from the cache. This call does no +blocking IO.

+

If proxy + has an expected interface (see +“g-interface-info”) and property_name + is referenced by +it, then value + is checked against the type of the property.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

proxy

A GDBusProxy.

 

property_name

Property name.

 
+
+
+

Returns

+

A reference to the GVariant instance that holds the value +for property_name +or NULL if the value is not in the cache. The +returned reference must be freed with g_variant_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_set_cached_property ()

+
void
+g_dbus_proxy_set_cached_property (GDBusProxy *proxy,
+                                  const gchar *property_name,
+                                  GVariant *value);
+

If value + is not NULL, sets the cached value for the property with +name property_name + to the value in value +.

+

If value + is NULL, then the cached value is removed from the +property cache.

+

If proxy + has an expected interface (see +“g-interface-info”) and property_name + is referenced by +it, then value + is checked against the type of the property.

+

If the value + GVariant is floating, it is consumed. This allows +convenient 'inline' use of g_variant_new(), e.g.

+
+ + + + + + + +
1
+2
+3
+4
+5
g_dbus_proxy_set_cached_property (proxy,
+                                  "SomeProperty",
+                                  g_variant_new ("(si)",
+                                                "A String",
+                                                42));
+
+ +

+

Normally you will not need to use this method since proxy + +is tracking changes using the +org.freedesktop.DBus.Properties.PropertiesChanged +D-Bus signal. However, for performance reasons an object may +decide to not use this signal for some properties and instead +use a proprietary out-of-band mechanism to transmit changes.

+

As a concrete example, consider an object with a property +ChatroomParticipants which is an array of strings. Instead of +transmitting the same (long) array every time the property changes, +it is more efficient to only transmit the delta using e.g. signals +ChatroomParticipantJoined(String name) and +ChatroomParticipantParted(String name).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

proxy

A GDBusProxy

 

property_name

Property name.

 

value

Value for the property or NULL to remove it from the cache.

[allow-none]
+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_get_cached_property_names ()

+
gchar **
+g_dbus_proxy_get_cached_property_names
+                               (GDBusProxy *proxy);
+

Gets the names of all cached properties on proxy +.

+
+

Parameters

+
+++++ + + + + + +

proxy

A GDBusProxy.

 
+
+
+

Returns

+

A NULL-terminated array of strings or NULL if +proxy +has no cached properties. Free the returned array with +g_strfreev().

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_set_interface_info ()

+
void
+g_dbus_proxy_set_interface_info (GDBusProxy *proxy,
+                                 GDBusInterfaceInfo *info);
+

Ensure that interactions with proxy + conform to the given +interface. See the “g-interface-info” property for more +details.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

proxy

A GDBusProxy

 

info

Minimum interface this proxy conforms to or NULL to unset.

[allow-none]
+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_get_interface_info ()

+
GDBusInterfaceInfo *
+g_dbus_proxy_get_interface_info (GDBusProxy *proxy);
+

Returns the GDBusInterfaceInfo, if any, specifying the interface +that proxy + conforms to. See the “g-interface-info” +property for more details.

+
+

Parameters

+
+++++ + + + + + +

proxy

A GDBusProxy

 
+
+
+

Returns

+

A GDBusInterfaceInfo or NULL. Do not unref the returned +object, it is owned by proxy +.

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_call ()

+
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);
+

Asynchronously invokes the method_name + method on proxy +.

+

If method_name + contains any dots, then name + is split into interface and +method name parts. This allows using proxy + for invoking methods on +other interfaces.

+

If the GDBusConnection associated with proxy + is closed then +the operation will fail with G_IO_ERROR_CLOSED. If +cancellable + is canceled, the operation will fail with +G_IO_ERROR_CANCELLED. If parameters + contains a value not +compatible with the D-Bus protocol, the operation fails with +G_IO_ERROR_INVALID_ARGUMENT.

+

If the parameters + GVariant is floating, it is consumed. This allows +convenient 'inline' use of g_variant_new(), e.g.:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
g_dbus_proxy_call (proxy,
+                   "TwoStrings",
+                   g_variant_new ("(ss)",
+                                  "Thing One",
+                                  "Thing Two"),
+                   G_DBUS_CALL_FLAGS_NONE,
+                   -1,
+                   NULL,
+                   (GAsyncReadyCallback) two_strings_done,
+                   &data);
+
+ +

+

If proxy + has an expected interface (see +“g-interface-info”) and method_name + is referenced by it, +then the return value is checked against the return type.

+

This is an asynchronous method. When the operation is finished, +callback + will be invoked in the +thread-default main context +of the thread you are calling this method from. +You can then call g_dbus_proxy_call_finish() to get the result of +the operation. See g_dbus_proxy_call_sync() for the synchronous +version of this method.

+

If callback + is NULL then the D-Bus method call message will be sent with +the G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED flag set.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

proxy

A GDBusProxy.

 

method_name

Name of method to invoke.

 

parameters

A GVariant tuple with parameters for the signal or NULL if not passing parameters.

[allow-none]

flags

Flags from the GDBusCallFlags enumeration.

 

timeout_msec

The timeout in milliseconds (with G_MAXINT meaning +"infinite") or -1 to use the proxy default timeout.

 

cancellable

A GCancellable or NULL.

[allow-none]

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't +care about the result of the method invocation.

[allow-none]

user_data

The data to pass to callback +.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_call_finish ()

+
GVariant *
+g_dbus_proxy_call_finish (GDBusProxy *proxy,
+                          GAsyncResult *res,
+                          GError **error);
+

Finishes an operation started with g_dbus_proxy_call().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

proxy

A GDBusProxy.

 

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_proxy_call().

 

error

Return location for error or NULL.

 
+
+
+

Returns

+

NULL if error +is set. Otherwise a GVariant tuple with +return values. Free with g_variant_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_call_sync ()

+
GVariant *
+g_dbus_proxy_call_sync (GDBusProxy *proxy,
+                        const gchar *method_name,
+                        GVariant *parameters,
+                        GDBusCallFlags flags,
+                        gint timeout_msec,
+                        GCancellable *cancellable,
+                        GError **error);
+

Synchronously invokes the method_name + method on proxy +.

+

If method_name + contains any dots, then name + is split into interface and +method name parts. This allows using proxy + for invoking methods on +other interfaces.

+

If the GDBusConnection associated with proxy + is disconnected then +the operation will fail with G_IO_ERROR_CLOSED. If +cancellable + is canceled, the operation will fail with +G_IO_ERROR_CANCELLED. If parameters + contains a value not +compatible with the D-Bus protocol, the operation fails with +G_IO_ERROR_INVALID_ARGUMENT.

+

If the parameters + GVariant is floating, it is consumed. This allows +convenient 'inline' use of g_variant_new(), e.g.:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
g_dbus_proxy_call_sync (proxy,
+                        "TwoStrings",
+                        g_variant_new ("(ss)",
+                                       "Thing One",
+                                       "Thing Two"),
+                        G_DBUS_CALL_FLAGS_NONE,
+                        -1,
+                        NULL,
+                        &error);
+
+ +

+

The calling thread is blocked until a reply is received. See +g_dbus_proxy_call() for the asynchronous version of this +method.

+

If proxy + has an expected interface (see +“g-interface-info”) and method_name + is referenced by it, +then the return value is checked against the return type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

proxy

A GDBusProxy.

 

method_name

Name of method to invoke.

 

parameters

A GVariant tuple with parameters for the signal +or NULL if not passing parameters.

[allow-none]

flags

Flags from the GDBusCallFlags enumeration.

 

timeout_msec

The timeout in milliseconds (with G_MAXINT meaning +"infinite") or -1 to use the proxy default timeout.

 

cancellable

A GCancellable or NULL.

[allow-none]

error

Return location for error or NULL.

 
+
+
+

Returns

+

NULL if error +is set. Otherwise a GVariant tuple with +return values. Free with g_variant_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_proxy_call_with_unix_fd_list ()

+
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);
+

Like g_dbus_proxy_call() but also takes a GUnixFDList object.

+

This method is only available on UNIX.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

proxy

A GDBusProxy.

 

method_name

Name of method to invoke.

 

parameters

A GVariant tuple with parameters for the signal or NULL if not passing parameters.

[allow-none]

flags

Flags from the GDBusCallFlags enumeration.

 

timeout_msec

The timeout in milliseconds (with G_MAXINT meaning +"infinite") or -1 to use the proxy default timeout.

 

fd_list

A GUnixFDList or NULL.

[allow-none]

cancellable

A GCancellable or NULL.

[allow-none]

callback

A GAsyncReadyCallback to call when the request is satisfied or NULL if you don't +care about the result of the method invocation.

[allow-none]

user_data

The data to pass to callback +.

 
+
+

Since: 2.30

+
+
+
+

g_dbus_proxy_call_with_unix_fd_list_finish ()

+
GVariant *
+g_dbus_proxy_call_with_unix_fd_list_finish
+                               (GDBusProxy *proxy,
+                                GUnixFDList **out_fd_list,
+                                GAsyncResult *res,
+                                GError **error);
+

Finishes an operation started with g_dbus_proxy_call_with_unix_fd_list().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

proxy

A GDBusProxy.

 

out_fd_list

Return location for a GUnixFDList or NULL.

[out][allow-none]

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_proxy_call_with_unix_fd_list().

 

error

Return location for error or NULL.

 
+
+
+

Returns

+

NULL if error +is set. Otherwise a GVariant tuple with +return values. Free with g_variant_unref().

+
+

Since: 2.30

+
+
+
+

g_dbus_proxy_call_with_unix_fd_list_sync ()

+
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);
+

Like g_dbus_proxy_call_sync() but also takes and returns GUnixFDList objects.

+

This method is only available on UNIX.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

proxy

A GDBusProxy.

 

method_name

Name of method to invoke.

 

parameters

A GVariant tuple with parameters for the signal +or NULL if not passing parameters.

[allow-none]

flags

Flags from the GDBusCallFlags enumeration.

 

timeout_msec

The timeout in milliseconds (with G_MAXINT meaning +"infinite") or -1 to use the proxy default timeout.

 

fd_list

A GUnixFDList or NULL.

[allow-none]

out_fd_list

Return location for a GUnixFDList or NULL.

[out][allow-none]

cancellable

A GCancellable or NULL.

[allow-none]

error

Return location for error or NULL.

 
+
+
+

Returns

+

NULL if error +is set. Otherwise a GVariant tuple with +return values. Free with g_variant_unref().

+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

enum GDBusProxyFlags

+

Flags used when constructing an instance of a GDBusProxy derived class.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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 the proxy is for a well-known name, +do not ask the bus to launch an owner during proxy initialization or a method call. +This flag is only meaningful 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.htmlstandard-interfaces-properties">PropertiesChanged</ulink> D-Bus signal and the property will not cause emission of the “g-properties-changed” signal. When the value is received the “g-properties-changed” signal is emitted for the property along with the retrieved value. Since 2.32.

+
 

G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION

+

If the proxy is for a well-known name, +do not ask the bus to launch an owner during proxy initialization, but allow it to be +autostarted by a method call. This flag is only meaningful in proxies for well-known names, +and only if G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START is not also specified.

+
 
+
+

Since: 2.26

+
+
+
+

GDBusProxy

+
typedef struct _GDBusProxy GDBusProxy;
+

The GDBusProxy structure contains only private data and +should only be accessed using the provided API.

+

Since: 2.26

+
+
+
+

struct GDBusProxyClass

+
struct GDBusProxyClass {
+  /* 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);
+};
+
+

Class structure for GDBusProxy.

+
+

Members

+
+++++ + + + + + + + + + + + + +

g_properties_changed ()

Signal class handler for the “g-properties-changed” signal.

 

g_signal ()

Signal class handler for the “g-signal” signal.

 
+
+

Since: 2.26

+
+
+
+

Property Details

+
+

The “g-bus-type” property

+
  “g-bus-type”               GBusType
+

If this property is not G_BUS_TYPE_NONE, then +“g-connection” must be NULL and will be set to the +GDBusConnection obtained by calling g_bus_get() with the value +of this property.

+

Flags: Write / Construct Only

+

Default value: G_BUS_TYPE_NONE

+

Since: 2.26

+
+
+
+

The “g-connection” property

+
  “g-connection”             GDBusConnection *
+

The GDBusConnection the proxy is for.

+

Flags: Read / Write / Construct Only

+

Since: 2.26

+
+
+
+

The “g-default-timeout” property

+
  “g-default-timeout”        gint
+

The timeout to use if -1 (specifying default timeout) is passed +as timeout_msec + in the g_dbus_proxy_call() and +g_dbus_proxy_call_sync() functions.

+

This allows applications to set a proxy-wide timeout for all +remote method invocations on the proxy. If this property is -1, +the default timeout (typically 25 seconds) is used. If set to +G_MAXINT, then no timeout is used.

+

Flags: Read / Write / Construct

+

Allowed values: >= -1

+

Default value: -1

+

Since: 2.26

+
+
+
+

The “g-flags” property

+
  “g-flags”                  GDBusProxyFlags
+

Flags from the GDBusProxyFlags enumeration.

+

Flags: Read / Write / Construct Only

+

Since: 2.26

+
+
+
+

The “g-interface-info” property

+
  “g-interface-info”         GDBusInterfaceInfo *
+

Ensure that interactions with this proxy conform to the given +interface. This is mainly to ensure that malformed data received +from the other peer is ignored. The given GDBusInterfaceInfo is +said to be the "expected interface".

+

The checks performed are:

+
+

Note that these checks are never done on methods, signals and +properties that are not referenced in the given +GDBusInterfaceInfo, since extending a D-Bus interface on the +service-side is not considered an ABI break.

+

Flags: Read / Write

+

Since: 2.26

+
+
+
+

The “g-interface-name” property

+
  “g-interface-name”         gchar *
+

The D-Bus interface name the proxy is for.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.26

+
+
+
+

The “g-name” property

+
  “g-name”                   gchar *
+

The well-known or unique name that the proxy is for.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.26

+
+
+
+

The “g-name-owner” property

+
  “g-name-owner”             gchar *
+

The unique name that owns “g-name” or NULL if no-one +currently owns that name. You may connect to “notify” signal to +track changes to this property.

+

Flags: Read

+

Default value: NULL

+

Since: 2.26

+
+
+
+

The “g-object-path” property

+
  “g-object-path”            gchar *
+

The object path the proxy is for.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.26

+
+
+
+

Signal Details

+
+

The “g-properties-changed” signal

+
void
+user_function (GDBusProxy *proxy,
+               GVariant   *changed_properties,
+               GStrv       invalidated_properties,
+               gpointer    user_data)
+

Emitted when one or more D-Bus properties on proxy + changes. The +local cache has already been updated when this signal fires. Note +that both changed_properties + and invalidated_properties + are +guaranteed to never be NULL (either may be empty though).

+

If the proxy has the flag +G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES set, then +invalidated_properties + will always be empty.

+

This signal corresponds to the +PropertiesChanged D-Bus signal on the +org.freedesktop.DBus.Properties interface.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

proxy

The GDBusProxy emitting the signal.

 

changed_properties

A GVariant containing the properties that changed

 

invalidated_properties

A NULL terminated array of properties that was invalidated

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.26

+
+
+
+

The “g-signal” signal

+
void
+user_function (GDBusProxy *proxy,
+               gchar      *sender_name,
+               gchar      *signal_name,
+               GVariant   *parameters,
+               gpointer    user_data)
+

Emitted when a signal from the remote object and interface that proxy + is for, has been received.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

proxy

The GDBusProxy emitting the signal.

 

sender_name

The sender of the signal or NULL if the connection is not a bus connection.

[allow-none]

signal_name

The name of the signal.

 

parameters

A GVariant tuple with parameters for the signal.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.26

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDBusServer.html b/docs/reference/gio/html/GDBusServer.html new file mode 100644 index 0000000..cb55556 --- /dev/null +++ b/docs/reference/gio/html/GDBusServer.html @@ -0,0 +1,626 @@ + + + + +GDBusServer: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusServer

+

GDBusServer — Helper for accepting connections

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GDBusServer * + +g_dbus_server_new_sync () +
+void + +g_dbus_server_start () +
+void + +g_dbus_server_stop () +
+gboolean + +g_dbus_server_is_active () +
const gchar * + +g_dbus_server_get_guid () +
+GDBusServerFlags + +g_dbus_server_get_flags () +
const gchar * + +g_dbus_server_get_client_address () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
gbooleanactiveRead
+gchar *addressRead / Write / Construct Only
+GDBusAuthObserver *authentication-observerRead / Write / Construct Only
+gchar *client-addressRead
GDBusServerFlagsflagsRead / Write / Construct Only
+gchar *guidRead / Write / Construct Only
+
+
+

Signals

+ +
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GDBusServer
enumGDBusServerFlags
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GDBusServer
+
+
+
+

Implemented Interfaces

+

+GDBusServer implements + GInitable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GDBusServer is a helper for listening to and accepting D-Bus +connections. This can be used to create a new D-Bus server, allowing two +peers to use the D-Bus protocol for their own specialized communication. +A server instance provided in this way will not perform message routing or +implement the org.freedesktop.DBus interface.

+

To just export an object on a well-known name on a message bus, such as the +session or system bus, you should instead use g_bus_own_name().

+

An example of peer-to-peer communication with G-DBus can be found +in gdbus-example-peer.c.

+
+
+

Functions

+
+

g_dbus_server_new_sync ()

+
GDBusServer *
+g_dbus_server_new_sync (const gchar *address,
+                        GDBusServerFlags flags,
+                        const gchar *guid,
+                        GDBusAuthObserver *observer,
+                        GCancellable *cancellable,
+                        GError **error);
+

Creates a new D-Bus server that listens on the first address in +address + that works.

+

Once constructed, you can use g_dbus_server_get_client_address() to +get a D-Bus address string that clients can use to connect.

+

Connect to the “new-connection” signal to handle +incoming connections.

+

The returned GDBusServer isn't active - you have to start it with +g_dbus_server_start().

+

GDBusServer is used in this example.

+

This is a synchronous failable constructor. See +g_dbus_server_new() for the asynchronous version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

address

A D-Bus address.

 

flags

Flags from the GDBusServerFlags enumeration.

 

guid

A D-Bus GUID.

 

observer

A GDBusAuthObserver or NULL.

[allow-none]

cancellable

A GCancellable or NULL.

[allow-none]

error

Return location for server or NULL.

 
+
+
+

Returns

+

A GDBusServer or NULL if error +is set. Free with +g_object_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_server_start ()

+
void
+g_dbus_server_start (GDBusServer *server);
+

Starts server +.

+
+

Parameters

+
+++++ + + + + + +

server

A GDBusServer.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_server_stop ()

+
void
+g_dbus_server_stop (GDBusServer *server);
+

Stops server +.

+
+

Parameters

+
+++++ + + + + + +

server

A GDBusServer.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_server_is_active ()

+
gboolean
+g_dbus_server_is_active (GDBusServer *server);
+

Gets whether server + is active.

+
+

Parameters

+
+++++ + + + + + +

server

A GDBusServer.

 
+
+
+

Returns

+

TRUE if server is active, FALSE otherwise.

+
+

Since: 2.26

+
+
+
+

g_dbus_server_get_guid ()

+
const gchar *
+g_dbus_server_get_guid (GDBusServer *server);
+

Gets the GUID for server +.

+
+

Parameters

+
+++++ + + + + + +

server

A GDBusServer.

 
+
+
+

Returns

+

A D-Bus GUID. Do not free this string, it is owned by server +.

+
+

Since: 2.26

+
+
+
+

g_dbus_server_get_flags ()

+
GDBusServerFlags
+g_dbus_server_get_flags (GDBusServer *server);
+

Gets the flags for server +.

+
+

Parameters

+
+++++ + + + + + +

server

A GDBusServer.

 
+
+
+

Returns

+

A set of flags from the GDBusServerFlags enumeration.

+
+

Since: 2.26

+
+
+
+

g_dbus_server_get_client_address ()

+
const gchar *
+g_dbus_server_get_client_address (GDBusServer *server);
+

Gets a D-Bus address string that can be used by clients to connect +to server +.

+
+

Parameters

+
+++++ + + + + + +

server

A GDBusServer.

 
+
+
+

Returns

+

A D-Bus address string. Do not free, the string is owned +by server +.

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GDBusServer

+
typedef struct _GDBusServer GDBusServer;
+

The GDBusServer structure contains only private data and +should only be accessed using the provided API.

+

Since: 2.26

+
+
+
+

enum GDBusServerFlags

+

Flags used when creating a GDBusServer.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

G_DBUS_SERVER_FLAGS_NONE

+

No flags set.

+
 

G_DBUS_SERVER_FLAGS_RUN_IN_THREAD

+

All “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.

+
 
+
+

Since: 2.26

+
+
+
+

Property Details

+
+

The “active” property

+
  “active”                   gboolean
+

Whether the server is currently active.

+

Flags: Read

+

Default value: FALSE

+

Since: 2.26

+
+
+
+

The “address” property

+
  “address”                  gchar *
+

The D-Bus address to listen on.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.26

+
+
+
+

The “authentication-observer” property

+
  “authentication-observer”  GDBusAuthObserver *
+

A GDBusAuthObserver object to assist in the authentication process or NULL.

+

Flags: Read / Write / Construct Only

+

Since: 2.26

+
+
+
+

The “client-address” property

+
  “client-address”           gchar *
+

The D-Bus address that clients can use.

+

Flags: Read

+

Default value: NULL

+

Since: 2.26

+
+
+
+

The “flags” property

+
  “flags”                    GDBusServerFlags
+

Flags from the GDBusServerFlags enumeration.

+

Flags: Read / Write / Construct Only

+

Since: 2.26

+
+
+
+

The “guid” property

+
  “guid”                     gchar *
+

The guid of the server.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.26

+
+
+
+

Signal Details

+
+

The “new-connection” signal

+
gboolean
+user_function (GDBusServer     *server,
+               GDBusConnection *connection,
+               gpointer         user_data)
+

Emitted when a new authenticated connection has been made. Use +g_dbus_connection_get_peer_credentials() to figure out what +identity (if any), was authenticated.

+

If you want to accept the connection, take a reference to the +connection + object and return TRUE. When you are done with the +connection call g_dbus_connection_close() and give up your +reference. Note that the other peer may disconnect at any time - +a typical thing to do when accepting a connection is to listen to +the “closed” signal.

+

If “flags” contains G_DBUS_SERVER_FLAGS_RUN_IN_THREAD +then the signal is emitted in a new thread dedicated to the +connection. Otherwise the signal is emitted in the +thread-default main context +of the thread that server + was constructed in.

+

You are guaranteed that signal handlers for this signal runs +before incoming messages on connection + are processed. This means +that it's suitable to call g_dbus_connection_register_object() or +similar from the signal handler.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

server

The GDBusServer emitting the signal.

 

connection

A GDBusConnection for the new connection.

 

user_data

user data set when the signal handler was connected.

 
+
+
+

Returns

+

TRUE to claim connection +, FALSE to let other handlers +run.

+
+

Flags: Run Last

+

Since: 2.26

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDataInputStream.html b/docs/reference/gio/html/GDataInputStream.html new file mode 100644 index 0000000..1e77cfe --- /dev/null +++ b/docs/reference/gio/html/GDataInputStream.html @@ -0,0 +1,1584 @@ + + + + +GDataInputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDataInputStream

+

GDataInputStream — Data Input Stream

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GDataInputStream * + +g_data_input_stream_new () +
+void + +g_data_input_stream_set_byte_order () +
+GDataStreamByteOrder + +g_data_input_stream_get_byte_order () +
+void + +g_data_input_stream_set_newline_type () +
+GDataStreamNewlineType + +g_data_input_stream_get_newline_type () +
+guchar + +g_data_input_stream_read_byte () +
+gint16 + +g_data_input_stream_read_int16 () +
+guint16 + +g_data_input_stream_read_uint16 () +
+gint32 + +g_data_input_stream_read_int32 () +
+guint32 + +g_data_input_stream_read_uint32 () +
+gint64 + +g_data_input_stream_read_int64 () +
+guint64 + +g_data_input_stream_read_uint64 () +
+char * + +g_data_input_stream_read_line () +
+char * + +g_data_input_stream_read_line_utf8 () +
+void + +g_data_input_stream_read_line_async () +
+char * + +g_data_input_stream_read_line_finish () +
+char * + +g_data_input_stream_read_line_finish_utf8 () +
+char * + +g_data_input_stream_read_upto () +
+void + +g_data_input_stream_read_upto_async () +
+char * + +g_data_input_stream_read_upto_finish () +
+char * + +g_data_input_stream_read_until () +
+void + +g_data_input_stream_read_until_async () +
+char * + +g_data_input_stream_read_until_finish () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + +
GDataStreamByteOrderbyte-orderRead / Write
GDataStreamNewlineTypenewline-typeRead / Write
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
 GDataInputStream
enumGDataStreamByteOrder
enumGDataStreamNewlineType
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GInputStream
+        ╰── GFilterInputStream
+            ╰── GBufferedInputStream
+                ╰── GDataInputStream
+
+
+
+

Implemented Interfaces

+

+GDataInputStream implements + GSeekable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Data input stream implements GInputStream and includes functions for +reading structured data directly from a binary input stream.

+
+
+

Functions

+
+

g_data_input_stream_new ()

+
GDataInputStream *
+g_data_input_stream_new (GInputStream *base_stream);
+

Creates a new data input stream for the base_stream +.

+
+

Parameters

+
+++++ + + + + + +

base_stream

a GInputStream.

 
+
+
+

Returns

+

a new GDataInputStream.

+
+
+
+
+

g_data_input_stream_set_byte_order ()

+
void
+g_data_input_stream_set_byte_order (GDataInputStream *stream,
+                                    GDataStreamByteOrder order);
+

This function sets the byte order for the given stream +. All subsequent +reads from the stream + will be read in the given order +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

order

a GDataStreamByteOrder to set.

 
+
+
+
+
+

g_data_input_stream_get_byte_order ()

+
GDataStreamByteOrder
+g_data_input_stream_get_byte_order (GDataInputStream *stream);
+

Gets the byte order for the data input stream.

+
+

Parameters

+
+++++ + + + + + +

stream

a given GDataInputStream.

 
+
+
+

Returns

+

the stream +'s current GDataStreamByteOrder.

+
+
+
+
+

g_data_input_stream_set_newline_type ()

+
void
+g_data_input_stream_set_newline_type (GDataInputStream *stream,
+                                      GDataStreamNewlineType type);
+

Sets the newline type for the stream +.

+

Note that using G_DATA_STREAM_NEWLINE_TYPE_ANY is slightly unsafe. If a read +chunk ends in "CR" we must read an additional byte to know if this is "CR" or +"CR LF", and this might block if there is no more data available.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GDataInputStream.

 

type

the type of new line return as GDataStreamNewlineType.

 
+
+
+
+
+

g_data_input_stream_get_newline_type ()

+
GDataStreamNewlineType
+g_data_input_stream_get_newline_type (GDataInputStream *stream);
+

Gets the current newline type for the stream +.

+
+

Parameters

+
+++++ + + + + + +

stream

a given GDataInputStream.

 
+
+
+

Returns

+

GDataStreamNewlineType for the given stream +.

+
+
+
+
+

g_data_input_stream_read_byte ()

+
guchar
+g_data_input_stream_read_byte (GDataInputStream *stream,
+                               GCancellable *cancellable,
+                               GError **error);
+

Reads an unsigned 8-bit/1-byte value from stream +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting.

 
+
+
+

Returns

+

an unsigned 8-bit/1-byte value read from the stream +or 0 +if an error occurred.

+
+
+
+
+

g_data_input_stream_read_int16 ()

+
gint16
+g_data_input_stream_read_int16 (GDataInputStream *stream,
+                                GCancellable *cancellable,
+                                GError **error);
+

Reads a 16-bit/2-byte value from stream +.

+

In order to get the correct byte order for this read operation, +see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting.

 
+
+
+

Returns

+

a signed 16-bit/2-byte value read from stream +or 0 if +an error occurred.

+
+
+
+
+

g_data_input_stream_read_uint16 ()

+
guint16
+g_data_input_stream_read_uint16 (GDataInputStream *stream,
+                                 GCancellable *cancellable,
+                                 GError **error);
+

Reads an unsigned 16-bit/2-byte value from stream +.

+

In order to get the correct byte order for this read operation, +see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting.

 
+
+
+

Returns

+

an unsigned 16-bit/2-byte value read from the stream +or 0 if +an error occurred.

+
+
+
+
+

g_data_input_stream_read_int32 ()

+
gint32
+g_data_input_stream_read_int32 (GDataInputStream *stream,
+                                GCancellable *cancellable,
+                                GError **error);
+

Reads a signed 32-bit/4-byte value from stream +.

+

In order to get the correct byte order for this read operation, +see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting.

 
+
+
+

Returns

+

a signed 32-bit/4-byte value read from the stream +or 0 if +an error occurred.

+
+
+
+
+

g_data_input_stream_read_uint32 ()

+
guint32
+g_data_input_stream_read_uint32 (GDataInputStream *stream,
+                                 GCancellable *cancellable,
+                                 GError **error);
+

Reads an unsigned 32-bit/4-byte value from stream +.

+

In order to get the correct byte order for this read operation, +see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting.

 
+
+
+

Returns

+

an unsigned 32-bit/4-byte value read from the stream +or 0 if +an error occurred.

+
+
+
+
+

g_data_input_stream_read_int64 ()

+
gint64
+g_data_input_stream_read_int64 (GDataInputStream *stream,
+                                GCancellable *cancellable,
+                                GError **error);
+

Reads a 64-bit/8-byte value from stream +.

+

In order to get the correct byte order for this read operation, +see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting.

 
+
+
+

Returns

+

a signed 64-bit/8-byte value read from stream +or 0 if +an error occurred.

+
+
+
+
+

g_data_input_stream_read_uint64 ()

+
guint64
+g_data_input_stream_read_uint64 (GDataInputStream *stream,
+                                 GCancellable *cancellable,
+                                 GError **error);
+

Reads an unsigned 64-bit/8-byte value from stream +.

+

In order to get the correct byte order for this read operation, +see g_data_input_stream_get_byte_order().

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting.

 
+
+
+

Returns

+

an unsigned 64-bit/8-byte read from stream +or 0 if +an error occurred.

+
+
+
+
+

g_data_input_stream_read_line ()

+
char *
+g_data_input_stream_read_line (GDataInputStream *stream,
+                               gsize *length,
+                               GCancellable *cancellable,
+                               GError **error);
+

Reads a line from the data input stream. Note that no encoding +checks or conversion is performed; the input is not guaranteed to +be UTF-8, and may in fact have embedded NUL characters.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

length

a gsize to get the length of the data read in.

[out]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting.

 
+
+
+

Returns

+

a NUL terminated byte array with the line that was read in +(without the newlines). Set length +to a gsize to get the length +of the read line. On an error, it will return NULL and error +will be set. If there's no content to read, it will still return +NULL, but error +won't be set.

+

[nullable][transfer full][array zero-terminated=1][element-type guint8]

+
+
+
+
+

g_data_input_stream_read_line_utf8 ()

+
char *
+g_data_input_stream_read_line_utf8 (GDataInputStream *stream,
+                                    gsize *length,
+                                    GCancellable *cancellable,
+                                    GError **error);
+

Reads a UTF-8 encoded line from the data input stream.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

length

a gsize to get the length of the data read in.

[out]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting.

 
+
+
+

Returns

+

a NUL terminated UTF-8 string +with the line that was read in (without the newlines). Set +length +to a gsize to get the length of the read line. On an +error, it will return NULL and error +will be set. For UTF-8 +conversion errors, the set error domain is G_CONVERT_ERROR. If +there's no content to read, it will still return NULL, but error +won't be set.

+

[nullable][transfer full]

+
+

Since: 2.30

+
+
+
+

g_data_input_stream_read_line_async ()

+
void
+g_data_input_stream_read_line_async (GDataInputStream *stream,
+                                     gint io_priority,
+                                     GCancellable *cancellable,
+                                     GAsyncReadyCallback callback,
+                                     gpointer user_data);
+

The asynchronous version of g_data_input_stream_read_line(). It is +an error to have two outstanding calls to this function.

+

When the operation is finished, callback + will be called. You +can then call g_data_input_stream_read_line_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

callback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+

Since: 2.20

+
+
+
+

g_data_input_stream_read_line_finish ()

+
char *
+g_data_input_stream_read_line_finish (GDataInputStream *stream,
+                                      GAsyncResult *result,
+                                      gsize *length,
+                                      GError **error);
+

Finish an asynchronous call started by +g_data_input_stream_read_line_async(). Note the warning about +string encoding in g_data_input_stream_read_line() applies here as +well.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

result

the GAsyncResult that was provided to the callback.

 

length

a gsize to get the length of the data read in.

[out]

error

GError for error reporting.

 
+
+
+

Returns

+

a NUL-terminated byte array with the line that was read in +(without the newlines). Set length +to a gsize to get the length +of the read line. On an error, it will return NULL and error +will be set. If there's no content to read, it will still return +NULL, but error +won't be set.

+

[nullable][transfer full][array zero-terminated=1][element-type guint8]

+
+

Since: 2.20

+
+
+
+

g_data_input_stream_read_line_finish_utf8 ()

+
char *
+g_data_input_stream_read_line_finish_utf8
+                               (GDataInputStream *stream,
+                                GAsyncResult *result,
+                                gsize *length,
+                                GError **error);
+

Finish an asynchronous call started by +g_data_input_stream_read_line_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

result

the GAsyncResult that was provided to the callback.

 

length

a gsize to get the length of the data read in.

[out]

error

GError for error reporting.

 
+
+
+

Returns

+

a string with the line that +was read in (without the newlines). Set length +to a gsize to +get the length of the read line. On an error, it will return +NULL and error +will be set. For UTF-8 conversion errors, the set +error domain is G_CONVERT_ERROR. If there's no content to read, +it will still return NULL, but error +won't be set.

+

[nullable][transfer full]

+
+

Since: 2.30

+
+
+
+

g_data_input_stream_read_upto ()

+
char *
+g_data_input_stream_read_upto (GDataInputStream *stream,
+                               const gchar *stop_chars,
+                               gssize stop_chars_len,
+                               gsize *length,
+                               GCancellable *cancellable,
+                               GError **error);
+

Reads a string from the data input stream, up to the first +occurrence of any of the stop characters.

+

In contrast to g_data_input_stream_read_until(), this function +does not consume the stop character. You have to use +g_data_input_stream_read_byte() to get it before calling +g_data_input_stream_read_upto() again.

+

Note that stop_chars + may contain '\0' if stop_chars_len + is +specified.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GDataInputStream

 

stop_chars

characters to terminate the read

 

stop_chars_len

length of stop_chars +. May be -1 if stop_chars +is +nul-terminated

 

length

a gsize to get the length of the data read in.

[out]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting

 
+
+
+

Returns

+

a string with the data that was read +before encountering any of the stop characters. Set length +to +a gsize to get the length of the string. This function will +return NULL on an error.

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_data_input_stream_read_upto_async ()

+
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);
+

The asynchronous version of g_data_input_stream_read_upto(). +It is an error to have two outstanding calls to this function.

+

In contrast to g_data_input_stream_read_until(), this function +does not consume the stop character. You have to use +g_data_input_stream_read_byte() to get it before calling +g_data_input_stream_read_upto() again.

+

Note that stop_chars + may contain '\0' if stop_chars_len + is +specified.

+

When the operation is finished, callback + will be called. You +can then call g_data_input_stream_read_upto_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GDataInputStream

 

stop_chars

characters to terminate the read

 

stop_chars_len

length of stop_chars +. May be -1 if stop_chars +is +nul-terminated

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

callback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+

Since: 2.26

+
+
+
+

g_data_input_stream_read_upto_finish ()

+
char *
+g_data_input_stream_read_upto_finish (GDataInputStream *stream,
+                                      GAsyncResult *result,
+                                      gsize *length,
+                                      GError **error);
+

Finish an asynchronous call started by +g_data_input_stream_read_upto_async().

+

Note that this function does not consume the stop character. You +have to use g_data_input_stream_read_byte() to get it before calling +g_data_input_stream_read_upto_async() again.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GDataInputStream

 

result

the GAsyncResult that was provided to the callback

 

length

a gsize to get the length of the data read in.

[out]

error

GError for error reporting

 
+
+
+

Returns

+

a string with the data that was read +before encountering any of the stop characters. Set length +to +a gsize to get the length of the string. This function will +return NULL on an error.

+

[transfer full]

+
+

Since: 2.24

+
+
+
+

g_data_input_stream_read_until ()

+
char *
+g_data_input_stream_read_until (GDataInputStream *stream,
+                                const gchar *stop_chars,
+                                gsize *length,
+                                GCancellable *cancellable,
+                                GError **error);
+

Reads a string from the data input stream, up to the first +occurrence of any of the stop characters.

+

Note that, in contrast to g_data_input_stream_read_until_async(), +this function consumes the stop character that it finds.

+

Don't use this function in new code. Its functionality is +inconsistent with g_data_input_stream_read_until_async(). Both +functions will be marked as deprecated in a future release. Use +g_data_input_stream_read_upto() instead, but note that that function +does not consume the stop character.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

stop_chars

characters to terminate the read.

 

length

a gsize to get the length of the data read in.

[out]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting.

 
+
+
+

Returns

+

a string with the data that was read +before encountering any of the stop characters. Set length +to +a gsize to get the length of the string. This function will +return NULL on an error.

+

[transfer full]

+
+
+
+
+

g_data_input_stream_read_until_async ()

+
void
+g_data_input_stream_read_until_async (GDataInputStream *stream,
+                                      const gchar *stop_chars,
+                                      gint io_priority,
+                                      GCancellable *cancellable,
+                                      GAsyncReadyCallback callback,
+                                      gpointer user_data);
+

The asynchronous version of g_data_input_stream_read_until(). +It is an error to have two outstanding calls to this function.

+

Note that, in contrast to g_data_input_stream_read_until(), +this function does not consume the stop character that it finds. You +must read it for yourself.

+

When the operation is finished, callback + will be called. You +can then call g_data_input_stream_read_until_finish() to get +the result of the operation.

+

Don't use this function in new code. Its functionality is +inconsistent with g_data_input_stream_read_until(). Both functions +will be marked as deprecated in a future release. Use +g_data_input_stream_read_upto_async() instead.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

stop_chars

characters to terminate the read.

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

callback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+

Since: 2.20

+
+
+
+

g_data_input_stream_read_until_finish ()

+
char *
+g_data_input_stream_read_until_finish (GDataInputStream *stream,
+                                       GAsyncResult *result,
+                                       gsize *length,
+                                       GError **error);
+

Finish an asynchronous call started by +g_data_input_stream_read_until_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a given GDataInputStream.

 

result

the GAsyncResult that was provided to the callback.

 

length

a gsize to get the length of the data read in.

[out]

error

GError for error reporting.

 
+
+
+

Returns

+

a string with the data that was read +before encountering any of the stop characters. Set length +to +a gsize to get the length of the string. This function will +return NULL on an error.

+

[transfer full]

+
+

Since: 2.20

+
+
+
+

Types and Values

+
+

GDataInputStream

+
typedef struct _GDataInputStream GDataInputStream;
+

An implementation of GBufferedInputStream that allows for high-level +data manipulation of arbitrary data (including binary operations).

+
+
+
+

enum GDataStreamByteOrder

+

GDataStreamByteOrder is used to ensure proper endianness of streaming data sources +across various machine architectures.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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.

+
 
+
+
+
+
+

enum GDataStreamNewlineType

+

GDataStreamNewlineType is used when checking for or setting the line endings for a given file.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 
+
+
+
+
+

Property Details

+
+

The “byte-order” property

+
  “byte-order”               GDataStreamByteOrder
+

The byte order.

+

Flags: Read / Write

+

Default value: G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN

+
+
+
+

The “newline-type” property

+
  “newline-type”             GDataStreamNewlineType
+

The accepted types of line ending.

+

Flags: Read / Write

+

Default value: G_DATA_STREAM_NEWLINE_TYPE_LF

+
+
+
+

See Also

+

GInputStream

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDataOutputStream.html b/docs/reference/gio/html/GDataOutputStream.html new file mode 100644 index 0000000..bec8ad1 --- /dev/null +++ b/docs/reference/gio/html/GDataOutputStream.html @@ -0,0 +1,688 @@ + + + + +GDataOutputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDataOutputStream

+

GDataOutputStream — Data Output Stream

+
+ +
+

Properties

+
+++++ + + + + + +
GDataStreamByteOrderbyte-orderRead / Write
+
+
+

Types and Values

+
++++ + + + + +
structGDataOutputStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GOutputStream
+        ╰── GFilterOutputStream
+            ╰── GDataOutputStream
+
+
+
+

Implemented Interfaces

+

+GDataOutputStream implements + GSeekable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Data output stream implements GOutputStream and includes functions for +writing data directly to an output stream.

+
+
+

Functions

+
+

g_data_output_stream_new ()

+
GDataOutputStream *
+g_data_output_stream_new (GOutputStream *base_stream);
+

Creates a new data output stream for base_stream +.

+
+

Parameters

+
+++++ + + + + + +

base_stream

a GOutputStream.

 
+
+
+

Returns

+

GDataOutputStream.

+
+
+
+
+

g_data_output_stream_set_byte_order ()

+
void
+g_data_output_stream_set_byte_order (GDataOutputStream *stream,
+                                     GDataStreamByteOrder order);
+

Sets the byte order of the data output stream to order +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GDataOutputStream.

 

order

a GDataStreamByteOrder.

 
+
+
+
+
+

g_data_output_stream_get_byte_order ()

+
GDataStreamByteOrder
+g_data_output_stream_get_byte_order (GDataOutputStream *stream);
+

Gets the byte order for the stream.

+
+

Parameters

+
+++++ + + + + + +

stream

a GDataOutputStream.

 
+
+
+

Returns

+

the GDataStreamByteOrder for the stream +.

+
+
+
+
+

g_data_output_stream_put_byte ()

+
gboolean
+g_data_output_stream_put_byte (GDataOutputStream *stream,
+                               guchar data,
+                               GCancellable *cancellable,
+                               GError **error);
+

Puts a byte into the output stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GDataOutputStream.

 

data

a guchar.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

a GError, NULL to ignore.

 
+
+
+

Returns

+

TRUE if data +was successfully added to the stream +.

+
+
+
+
+

g_data_output_stream_put_int16 ()

+
gboolean
+g_data_output_stream_put_int16 (GDataOutputStream *stream,
+                                gint16 data,
+                                GCancellable *cancellable,
+                                GError **error);
+

Puts a signed 16-bit integer into the output stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GDataOutputStream.

 

data

a gint16.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

a GError, NULL to ignore.

 
+
+
+

Returns

+

TRUE if data +was successfully added to the stream +.

+
+
+
+
+

g_data_output_stream_put_uint16 ()

+
gboolean
+g_data_output_stream_put_uint16 (GDataOutputStream *stream,
+                                 guint16 data,
+                                 GCancellable *cancellable,
+                                 GError **error);
+

Puts an unsigned 16-bit integer into the output stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GDataOutputStream.

 

data

a guint16.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

a GError, NULL to ignore.

 
+
+
+

Returns

+

TRUE if data +was successfully added to the stream +.

+
+
+
+
+

g_data_output_stream_put_int32 ()

+
gboolean
+g_data_output_stream_put_int32 (GDataOutputStream *stream,
+                                gint32 data,
+                                GCancellable *cancellable,
+                                GError **error);
+

Puts a signed 32-bit integer into the output stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GDataOutputStream.

 

data

a gint32.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

a GError, NULL to ignore.

 
+
+
+

Returns

+

TRUE if data +was successfully added to the stream +.

+
+
+
+
+

g_data_output_stream_put_uint32 ()

+
gboolean
+g_data_output_stream_put_uint32 (GDataOutputStream *stream,
+                                 guint32 data,
+                                 GCancellable *cancellable,
+                                 GError **error);
+

Puts an unsigned 32-bit integer into the stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GDataOutputStream.

 

data

a guint32.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

a GError, NULL to ignore.

 
+
+
+

Returns

+

TRUE if data +was successfully added to the stream +.

+
+
+
+
+

g_data_output_stream_put_int64 ()

+
gboolean
+g_data_output_stream_put_int64 (GDataOutputStream *stream,
+                                gint64 data,
+                                GCancellable *cancellable,
+                                GError **error);
+

Puts a signed 64-bit integer into the stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GDataOutputStream.

 

data

a gint64.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

a GError, NULL to ignore.

 
+
+
+

Returns

+

TRUE if data +was successfully added to the stream +.

+
+
+
+
+

g_data_output_stream_put_uint64 ()

+
gboolean
+g_data_output_stream_put_uint64 (GDataOutputStream *stream,
+                                 guint64 data,
+                                 GCancellable *cancellable,
+                                 GError **error);
+

Puts an unsigned 64-bit integer into the stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GDataOutputStream.

 

data

a guint64.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

a GError, NULL to ignore.

 
+
+
+

Returns

+

TRUE if data +was successfully added to the stream +.

+
+
+
+
+

g_data_output_stream_put_string ()

+
gboolean
+g_data_output_stream_put_string (GDataOutputStream *stream,
+                                 const char *str,
+                                 GCancellable *cancellable,
+                                 GError **error);
+

Puts a string into the output stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GDataOutputStream.

 

str

a string.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

a GError, NULL to ignore.

 
+
+
+

Returns

+

TRUE if string +was successfully added to the stream +.

+
+
+
+
+

Types and Values

+
+

struct GDataOutputStream

+
struct GDataOutputStream;
+

An implementation of GBufferedOutputStream that allows for high-level +data manipulation of arbitrary data (including binary operations).

+
+
+
+

Property Details

+
+

The “byte-order” property

+
  “byte-order”               GDataStreamByteOrder
+

Determines the byte ordering that is used when writing + +multi-byte entities (such as integers) to the stream.

+

Flags: Read / Write

+

Default value: G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN

+
+
+
+

See Also

+

GOutputStream

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDatagramBased.html b/docs/reference/gio/html/GDatagramBased.html new file mode 100644 index 0000000..f06be1d --- /dev/null +++ b/docs/reference/gio/html/GDatagramBased.html @@ -0,0 +1,766 @@ + + + + +GDatagramBased: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDatagramBased

+

GDatagramBased — Low-level datagram communications interface

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +(*GDatagramBasedSourceFunc) () +
+gint + +g_datagram_based_receive_messages () +
+gint + +g_datagram_based_send_messages () +
+GSource * + +g_datagram_based_create_source () +
+GIOCondition + +g_datagram_based_condition_check () +
+gboolean + +g_datagram_based_condition_wait () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GDatagramBased
structGDatagramBasedInterface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GDatagramBased
+
+
+
+

Prerequisites

+

+GDatagramBased requires + GObject.

+
+
+

Known Derived Interfaces

+

+GDatagramBased is required by + GDtlsClientConnection, GDtlsConnection and GDtlsServerConnection.

+
+
+

Known Implementations

+

+GDatagramBased is implemented by + GSocket.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A GDatagramBased is a networking interface for representing datagram-based +communications. It is a more or less direct mapping of the core parts of the +BSD socket API in a portable GObject interface. It is implemented by +GSocket, which wraps the UNIX socket API on UNIX and winsock2 on Windows.

+

GDatagramBased is entirely platform independent, and is intended to be used +alongside higher-level networking APIs such as GIOStream.

+

It uses vectored scatter/gather I/O by default, allowing for many messages +to be sent or received in a single call. Where possible, implementations of +the interface should take advantage of vectored I/O to minimise processing +or system calls. For example, GSocket uses recvmmsg() and sendmmsg() where +possible. Callers should take advantage of scatter/gather I/O (the use of +multiple buffers per message) to avoid unnecessary copying of data to +assemble or disassemble a message.

+

Each GDatagramBased operation has a timeout parameter which may be negative +for blocking behaviour, zero for non-blocking behaviour, or positive for +timeout behaviour. A blocking operation blocks until finished or there is an +error. A non-blocking operation will return immediately with a +G_IO_ERROR_WOULD_BLOCK error if it cannot make progress. A timeout operation +will block until the operation is complete or the timeout expires; if the +timeout expires it will return what progress it made, or +G_IO_ERROR_TIMED_OUT if no progress was made. To know when a call would +successfully run you can call g_datagram_based_condition_check() or +g_datagram_based_condition_wait(). You can also use +g_datagram_based_create_source() and attach it to a GMainContext to get +callbacks when I/O is possible.

+

When running a non-blocking operation applications should always be able to +handle getting a G_IO_ERROR_WOULD_BLOCK error even when some other function +said that I/O was possible. This can easily happen in case of a race +condition in the application, but it can also happen for other reasons. For +instance, on Windows a socket is always seen as writable until a write +returns G_IO_ERROR_WOULD_BLOCK.

+

As with GSocket, GDatagramBaseds can be either connection oriented or +connectionless. The interface does not cover connection establishment — use +methods on the underlying type to establish a connection before sending and +receiving data through the GDatagramBased API. For connectionless socket +types the target/source address is specified or received in each I/O +operation.

+

Like most other APIs in GLib, GDatagramBased is not inherently thread safe. +To use a GDatagramBased concurrently from multiple threads, you must +implement your own locking.

+
+
+

Functions

+
+

GDatagramBasedSourceFunc ()

+
gboolean
+(*GDatagramBasedSourceFunc) (GDatagramBased *datagram_based,
+                             GIOCondition condition,
+                             gpointer user_data);
+

This is the function type of the callback used for the GSource +returned by g_datagram_based_create_source().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

datagram_based

the GDatagramBased

 

condition

the current condition at the source fired

 

user_data

data passed in by the user

 
+
+
+

Returns

+

G_SOURCE_REMOVE if the source should be removed, +G_SOURCE_CONTINUE otherwise

+
+

Since: 2.48

+
+
+
+

g_datagram_based_receive_messages ()

+
gint
+g_datagram_based_receive_messages (GDatagramBased *datagram_based,
+                                   GInputMessage *messages,
+                                   guint num_messages,
+                                   gint flags,
+                                   gint64 timeout,
+                                   GCancellable *cancellable,
+                                   GError **error);
+

Receive one or more data messages from datagram_based + in one go.

+

messages + must point to an array of GInputMessage structs and +num_messages + must be the length of this array. Each GInputMessage +contains a pointer to an array of GInputVector structs describing the +buffers that the data received in each message will be written to.

+

flags + modify how all messages are received. The commonly available +arguments for this are available in the GSocketMsgFlags enum, but the +values there are the same as the system values, and the flags +are passed in as-is, so you can pass in system-specific flags too. These +flags affect the overall receive operation. Flags affecting individual +messages are returned in GInputMessage.flags.

+

The other members of GInputMessage are treated as described in its +documentation.

+

If timeout + is negative the call will block until num_messages + have been +received, the connection is closed remotely (EOS), cancellable + is cancelled, +or an error occurs.

+

If timeout + is 0 the call will return up to num_messages + without blocking, +or G_IO_ERROR_WOULD_BLOCK if no messages are queued in the operating system +to be received.

+

If timeout + is positive the call will block on the same conditions as if +timeout + were negative. If the timeout is reached +before any messages are received, G_IO_ERROR_TIMED_OUT is returned, +otherwise it will return the number of messages received before timing out. +(Note: This is effectively the behaviour of MSG_WAITFORONE with +recvmmsg().)

+

To be notified when messages are available, wait for the G_IO_IN condition. +Note though that you may still receive G_IO_ERROR_WOULD_BLOCK from +g_datagram_based_receive_messages() even if you were previously notified of a +G_IO_IN condition.

+

If the remote peer closes the connection, any messages queued in the +underlying receive buffer will be returned, and subsequent calls to +g_datagram_based_receive_messages() will return 0 (with no error set).

+

If the connection is shut down or closed (by calling g_socket_close() or +g_socket_shutdown() with shutdown_read + set, if it’s a GSocket, for +example), all calls to this function will return G_IO_ERROR_CLOSED.

+

On error -1 is returned and error + is set accordingly. An error will only +be returned if zero messages could be received; otherwise the number of +messages successfully received before the error will be returned. If +cancellable + is cancelled, G_IO_ERROR_CANCELLED is returned as with any +other error.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

datagram_based

a GDatagramBased

 

messages

an array of GInputMessage structs.

[array length=num_messages]

num_messages

the number of elements in messages +

 

flags

an int containing GSocketMsgFlags flags for the overall operation

 

timeout

the maximum time (in microseconds) to wait, 0 to not block, or -1 +to block indefinitely

 

cancellable

a GCancellable.

[allow-none]

error

return location for a GError

 
+
+
+

Returns

+

number of messages received, or -1 on error. Note that the number +of messages received may be smaller than num_messages +if timeout +is +zero or positive, if the peer closed the connection, or if num_messages +was larger than UIO_MAXIOV (1024), in which case the caller may re-try +to receive the remaining messages.

+
+

Since: 2.48

+
+
+
+

g_datagram_based_send_messages ()

+
gint
+g_datagram_based_send_messages (GDatagramBased *datagram_based,
+                                GOutputMessage *messages,
+                                guint num_messages,
+                                gint flags,
+                                gint64 timeout,
+                                GCancellable *cancellable,
+                                GError **error);
+

Send one or more data messages from datagram_based + in one go.

+

messages + must point to an array of GOutputMessage structs and +num_messages + must be the length of this array. Each GOutputMessage +contains an address to send the data to, and a pointer to an array of +GOutputVector structs to describe the buffers that the data to be sent +for each message will be gathered from.

+

flags + modify how the message is sent. The commonly available arguments +for this are available in the GSocketMsgFlags enum, but the +values there are the same as the system values, and the flags +are passed in as-is, so you can pass in system-specific flags too.

+

The other members of GOutputMessage are treated as described in its +documentation.

+

If timeout + is negative the call will block until num_messages + have been +sent, cancellable + is cancelled, or an error occurs.

+

If timeout + is 0 the call will send up to num_messages + without blocking, +or will return G_IO_ERROR_WOULD_BLOCK if there is no space to send messages.

+

If timeout + is positive the call will block on the same conditions as if +timeout + were negative. If the timeout is reached before any messages are +sent, G_IO_ERROR_TIMED_OUT is returned, otherwise it will return the number +of messages sent before timing out.

+

To be notified when messages can be sent, wait for the G_IO_OUT condition. +Note though that you may still receive G_IO_ERROR_WOULD_BLOCK from +g_datagram_based_send_messages() even if you were previously notified of a +G_IO_OUT condition. (On Windows in particular, this is very common due to +the way the underlying APIs work.)

+

If the connection is shut down or closed (by calling g_socket_close() or +g_socket_shutdown() with shutdown_write + set, if it’s a GSocket, for +example), all calls to this function will return G_IO_ERROR_CLOSED.

+

On error -1 is returned and error + is set accordingly. An error will only +be returned if zero messages could be sent; otherwise the number of messages +successfully sent before the error will be returned. If cancellable + is +cancelled, G_IO_ERROR_CANCELLED is returned as with any other error.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

datagram_based

a GDatagramBased

 

messages

an array of GOutputMessage structs.

[array length=num_messages]

num_messages

the number of elements in messages +

 

flags

an int containing GSocketMsgFlags flags

 

timeout

the maximum time (in microseconds) to wait, 0 to not block, or -1 +to block indefinitely

 

cancellable

a GCancellable.

[nullable]

error

return location for a GError

 
+
+
+

Returns

+

number of messages sent, or -1 on error. Note that the number of +messages sent may be smaller than num_messages +if timeout +is zero +or positive, or if num_messages +was larger than UIO_MAXIOV (1024), in +which case the caller may re-try to send the remaining messages.

+
+

Since: 2.48

+
+
+
+

g_datagram_based_create_source ()

+
GSource *
+g_datagram_based_create_source (GDatagramBased *datagram_based,
+                                GIOCondition condition,
+                                GCancellable *cancellable);
+

Creates a GSource that can be attached to a GMainContext to monitor for +the availability of the specified condition + on the GDatagramBased. The +GSource keeps a reference to the datagram_based +.

+

The callback on the source is of the GDatagramBasedSourceFunc type.

+

It is meaningless to specify G_IO_ERR or G_IO_HUP in condition +; these +conditions will always be reported in the callback if they are true.

+

If non-NULL, cancellable + can be used to cancel the source, which will +cause the source to trigger, reporting the current condition (which is +likely 0 unless cancellation happened at the same time as a condition +change). You can check for this in the callback using +g_cancellable_is_cancelled().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

datagram_based

a GDatagramBased

 

condition

a GIOCondition mask to monitor

 

cancellable

a GCancellable.

[nullable]
+
+
+

Returns

+

a newly allocated GSource.

+

[transfer full]

+
+

Since: 2.48

+
+
+
+

g_datagram_based_condition_check ()

+
GIOCondition
+g_datagram_based_condition_check (GDatagramBased *datagram_based,
+                                  GIOCondition condition);
+

Checks on the readiness of datagram_based + to perform operations. The +operations specified in condition + are checked for and masked against the +currently-satisfied conditions on datagram_based +. The result is returned.

+

G_IO_IN will be set in the return value if data is available to read with +g_datagram_based_receive_messages(), or if the connection is closed remotely +(EOS); and if the datagram_based has not been closed locally using some +implementation-specific method (such as g_socket_close() or +g_socket_shutdown() with shutdown_read + set, if it’s a GSocket).

+

If the connection is shut down or closed (by calling g_socket_close() or +g_socket_shutdown() with shutdown_read + set, if it’s a GSocket, for +example), all calls to this function will return G_IO_ERROR_CLOSED.

+

G_IO_OUT will be set if it is expected that at least one byte can be sent +using g_datagram_based_send_messages() without blocking. It will not be set +if the datagram_based has been closed locally.

+

G_IO_HUP will be set if the connection has been closed locally.

+

G_IO_ERR will be set if there was an asynchronous error in transmitting data +previously enqueued using g_datagram_based_send_messages().

+

Note that on Windows, it is possible for an operation to return +G_IO_ERROR_WOULD_BLOCK even immediately after +g_datagram_based_condition_check() has claimed that the GDatagramBased is +ready for writing. Rather than calling g_datagram_based_condition_check() and +then writing to the GDatagramBased if it succeeds, it is generally better to +simply try writing right away, and try again later if the initial attempt +returns G_IO_ERROR_WOULD_BLOCK.

+

It is meaningless to specify G_IO_ERR or G_IO_HUP in condition +; these +conditions will always be set in the output if they are true. Apart from +these flags, the output is guaranteed to be masked by condition +.

+

This call never blocks.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datagram_based

a GDatagramBased

 

condition

a GIOCondition mask to check

 
+
+
+

Returns

+

the GIOCondition mask of the current state

+
+

Since: 2.48

+
+
+
+

g_datagram_based_condition_wait ()

+
gboolean
+g_datagram_based_condition_wait (GDatagramBased *datagram_based,
+                                 GIOCondition condition,
+                                 gint64 timeout,
+                                 GCancellable *cancellable,
+                                 GError **error);
+

Waits for up to timeout + microseconds for condition to become true on +datagram_based +. If the condition is met, TRUE is returned.

+

If cancellable + is cancelled before the condition is met, or if timeout + is +reached before the condition is met, then FALSE is returned and error + is +set appropriately (G_IO_ERROR_CANCELLED or G_IO_ERROR_TIMED_OUT).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

datagram_based

a GDatagramBased

 

condition

a GIOCondition mask to wait for

 

timeout

the maximum time (in microseconds) to wait, 0 to not block, or -1 +to block indefinitely

 

cancellable

a GCancellable.

[nullable]

error

return location for a GError

 
+
+
+

Returns

+

TRUE if the condition was met, FALSE otherwise

+
+

Since: 2.48

+
+
+
+

Types and Values

+
+

GDatagramBased

+
typedef struct _GDatagramBased GDatagramBased;
+

Interface for socket-like objects with datagram semantics.

+

Since: 2.48

+
+
+
+

struct GDatagramBasedInterface

+
struct GDatagramBasedInterface {
+  GTypeInterface g_iface;
+
+  /* Virtual table */
+  gint          (*receive_messages)     (GDatagramBased       *datagram_based,
+                                         GInputMessage        *messages,
+                                         guint                 num_messages,
+                                         gint                  flags,
+                                         gint64                timeout,
+                                         GCancellable         *cancellable,
+                                         GError              **error);
+  gint          (*send_messages)        (GDatagramBased       *datagram_based,
+                                         GOutputMessage       *messages,
+                                         guint                 num_messages,
+                                         gint                  flags,
+                                         gint64                timeout,
+                                         GCancellable         *cancellable,
+                                         GError              **error);
+
+  GSource      *(*create_source)        (GDatagramBased       *datagram_based,
+                                         GIOCondition          condition,
+                                         GCancellable         *cancellable);
+  GIOCondition  (*condition_check)      (GDatagramBased       *datagram_based,
+                                         GIOCondition          condition);
+  gboolean      (*condition_wait)       (GDatagramBased       *datagram_based,
+                                         GIOCondition          condition,
+                                         gint64                timeout,
+                                         GCancellable         *cancellable,
+                                         GError              **error);
+};
+
+

Provides an interface for socket-like objects which have datagram semantics, +following the Berkeley sockets API. The interface methods are thin wrappers +around the corresponding virtual methods, and no pre-processing of inputs is +implemented — so implementations of this API must handle all functionality +documented in the interface methods.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

The parent interface.

 

receive_messages ()

Virtual method for g_datagram_based_receive_messages().

 

send_messages ()

Virtual method for g_datagram_based_send_messages().

 

create_source ()

Virtual method for g_datagram_based_create_source().

 

condition_check ()

Virtual method for g_datagram_based_condition_check().

 

condition_wait ()

Virtual method for +g_datagram_based_condition_wait().

 
+
+

Since: 2.48

+
+
+
+

See Also

+

GSocket, <gnetworking.h>

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDrive.html b/docs/reference/gio/html/GDrive.html new file mode 100644 index 0000000..60f2df8 --- /dev/null +++ b/docs/reference/gio/html/GDrive.html @@ -0,0 +1,1854 @@ + + + + +GDrive: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDrive

+

GDrive — Drive management

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+char * + +g_drive_get_name () +
+GIcon * + +g_drive_get_icon () +
+GIcon * + +g_drive_get_symbolic_icon () +
+gboolean + +g_drive_has_volumes () +
+GList * + +g_drive_get_volumes () +
+gboolean + +g_drive_can_eject () +
+GDriveStartStopType + +g_drive_get_start_stop_type () +
+gboolean + +g_drive_can_start () +
+gboolean + +g_drive_can_start_degraded () +
+gboolean + +g_drive_can_stop () +
+gboolean + +g_drive_can_poll_for_media () +
+void + +g_drive_poll_for_media () +
+gboolean + +g_drive_poll_for_media_finish () +
+gboolean + +g_drive_has_media () +
+gboolean + +g_drive_is_media_check_automatic () +
+gboolean + +g_drive_is_media_removable () +
+void + +g_drive_eject () +
+gboolean + +g_drive_eject_finish () +
+void + +g_drive_eject_with_operation () +
+gboolean + +g_drive_eject_with_operation_finish () +
+void + +g_drive_start () +
+gboolean + +g_drive_start_finish () +
+void + +g_drive_stop () +
+gboolean + +g_drive_stop_finish () +
+char ** + +g_drive_enumerate_identifiers () +
+char * + +g_drive_get_identifier () +
const gchar * + +g_drive_get_sort_key () +
+
+
+

Signals

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +
voidchangedRun Last
voiddisconnectedRun Last
voideject-buttonRun Last
voidstop-buttonRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + +
 GDrive
structGDriveIface
enumGDriveStartFlags
enumGDriveStartStopType
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GDrive
+
+
+
+

Prerequisites

+

+GDrive requires + GObject.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GDrive - this represent a piece of hardware connected to the machine. +It's generally only created for removable hardware or hardware with +removable media.

+

GDrive is a container class for GVolume objects that stem from +the same piece of media. As such, GDrive abstracts a drive with +(or without) removable media and provides operations for querying +whether media is available, determining whether media change is +automatically detected and ejecting the media.

+

If the GDrive reports that media isn't automatically detected, one +can poll for media; typically one should not do this periodically +as a poll for media operation is potententially expensive and may +spin up the drive creating noise.

+

GDrive supports starting and stopping drives with authentication +support for the former. This can be used to support a diverse set +of use cases including connecting/disconnecting iSCSI devices, +powering down external disk enclosures and starting/stopping +multi-disk devices such as RAID devices. Note that the actual +semantics and side-effects of starting/stopping a GDrive may vary +according to implementation. To choose the correct verbs in e.g. a +file manager, use g_drive_get_start_stop_type().

+

For porting from GnomeVFS note that there is no equivalent of +GDrive in that API.

+
+
+

Functions

+
+

g_drive_get_name ()

+
char *
+g_drive_get_name (GDrive *drive);
+

Gets the name of drive +.

+
+

Parameters

+
+++++ + + + + + +

drive

a GDrive.

 
+
+
+

Returns

+

a string containing drive +'s name. The returned +string should be freed when no longer needed.

+
+
+
+
+

g_drive_get_icon ()

+
GIcon *
+g_drive_get_icon (GDrive *drive);
+

Gets the icon for drive +.

+
+

Parameters

+
+++++ + + + + + +

drive

a GDrive.

 
+
+
+

Returns

+

GIcon for the drive +. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_drive_get_symbolic_icon ()

+
GIcon *
+g_drive_get_symbolic_icon (GDrive *drive);
+

Gets the icon for drive +.

+
+

Parameters

+
+++++ + + + + + +

drive

a GDrive.

 
+
+
+

Returns

+

symbolic GIcon for the drive +. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.34

+
+
+
+

g_drive_has_volumes ()

+
gboolean
+g_drive_has_volumes (GDrive *drive);
+

Check if drive + has any mountable volumes.

+
+

Parameters

+
+++++ + + + + + +

drive

a GDrive.

 
+
+
+

Returns

+

TRUE if the drive +contains volumes, FALSE otherwise.

+
+
+
+
+

g_drive_get_volumes ()

+
GList *
+g_drive_get_volumes (GDrive *drive);
+

Get a list of mountable volumes for drive +.

+

The returned list should be freed with g_list_free(), after +its elements have been unreffed with g_object_unref().

+
+

Parameters

+
+++++ + + + + + +

drive

a GDrive.

 
+
+
+

Returns

+

GList containing any GVolume objects on the given drive +.

+

[element-type GVolume][transfer full]

+
+
+
+
+

g_drive_can_eject ()

+
gboolean
+g_drive_can_eject (GDrive *drive);
+

Checks if a drive can be ejected.

+
+

Parameters

+
+++++ + + + + + +

drive

a GDrive.

 
+
+
+

Returns

+

TRUE if the drive +can be ejected, FALSE otherwise.

+
+
+
+
+

g_drive_get_start_stop_type ()

+
GDriveStartStopType
+g_drive_get_start_stop_type (GDrive *drive);
+

Gets a hint about how a drive can be started/stopped.

+
+

Parameters

+
+++++ + + + + + +

drive

a GDrive.

 
+
+
+

Returns

+

A value from the GDriveStartStopType enumeration.

+
+

Since: 2.22

+
+
+
+

g_drive_can_start ()

+
gboolean
+g_drive_can_start (GDrive *drive);
+

Checks if a drive can be started.

+
+

Parameters

+
+++++ + + + + + +

drive

a GDrive.

 
+
+
+

Returns

+

TRUE if the drive +can be started, FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_drive_can_start_degraded ()

+
gboolean
+g_drive_can_start_degraded (GDrive *drive);
+

Checks if a drive can be started degraded.

+
+

Parameters

+
+++++ + + + + + +

drive

a GDrive.

 
+
+
+

Returns

+

TRUE if the drive +can be started degraded, FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_drive_can_stop ()

+
gboolean
+g_drive_can_stop (GDrive *drive);
+

Checks if a drive can be stopped.

+
+

Parameters

+
+++++ + + + + + +

drive

a GDrive.

 
+
+
+

Returns

+

TRUE if the drive +can be stopped, FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_drive_can_poll_for_media ()

+
gboolean
+g_drive_can_poll_for_media (GDrive *drive);
+

Checks if a drive can be polled for media changes.

+
+

Parameters

+
+++++ + + + + + +

drive

a GDrive.

 
+
+
+

Returns

+

TRUE if the drive +can be polled for media changes, +FALSE otherwise.

+
+
+
+
+

g_drive_poll_for_media ()

+
void
+g_drive_poll_for_media (GDrive *drive,
+                        GCancellable *cancellable,
+                        GAsyncReadyCallback callback,
+                        gpointer user_data);
+

Asynchronously polls drive + to see if media has been inserted or removed.

+

When the operation is finished, callback + will be called. +You can then call g_drive_poll_for_media_finish() to obtain the +result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

drive

a GDrive.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback, or NULL.

[allow-none]

user_data

user data to pass to callback +

 
+
+
+
+
+

g_drive_poll_for_media_finish ()

+
gboolean
+g_drive_poll_for_media_finish (GDrive *drive,
+                               GAsyncResult *result,
+                               GError **error);
+

Finishes an operation started with g_drive_poll_for_media() on a drive.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

drive

a GDrive.

 

result

a GAsyncResult.

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the drive has been poll_for_mediaed successfully, +FALSE otherwise.

+
+
+
+
+

g_drive_has_media ()

+
gboolean
+g_drive_has_media (GDrive *drive);
+

Checks if the drive + has media. Note that the OS may not be polling +the drive for media changes; see g_drive_is_media_check_automatic() +for more details.

+
+

Parameters

+
+++++ + + + + + +

drive

a GDrive.

 
+
+
+

Returns

+

TRUE if drive +has media, FALSE otherwise.

+
+
+
+
+

g_drive_is_media_check_automatic ()

+
gboolean
+g_drive_is_media_check_automatic (GDrive *drive);
+

Checks if drive + is capabable of automatically detecting media changes.

+
+

Parameters

+
+++++ + + + + + +

drive

a GDrive.

 
+
+
+

Returns

+

TRUE if the drive +is capabable of automatically detecting +media changes, FALSE otherwise.

+
+
+
+
+

g_drive_is_media_removable ()

+
gboolean
+g_drive_is_media_removable (GDrive *drive);
+

Checks if the drive + supports removable media.

+
+

Parameters

+
+++++ + + + + + +

drive

a GDrive.

 
+
+
+

Returns

+

TRUE if drive +supports removable media, FALSE otherwise.

+
+
+
+
+

g_drive_eject ()

+
void
+g_drive_eject (GDrive *drive,
+               GMountUnmountFlags flags,
+               GCancellable *cancellable,
+               GAsyncReadyCallback callback,
+               gpointer user_data);
+
+

g_drive_eject has been deprecated since version 2.22 and should not be used in newly-written code.

+

Use g_drive_eject_with_operation() instead.

+
+

Asynchronously ejects a drive.

+

When the operation is finished, callback + will be called. +You can then call g_drive_eject_finish() to obtain the +result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

drive

a GDrive.

 

flags

flags affecting the unmount if required for eject

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback, or NULL.

[allow-none]

user_data

user data to pass to callback +

 
+
+
+
+
+

g_drive_eject_finish ()

+
gboolean
+g_drive_eject_finish (GDrive *drive,
+                      GAsyncResult *result,
+                      GError **error);
+
+

g_drive_eject_finish has been deprecated since version 2.22 and should not be used in newly-written code.

+

Use g_drive_eject_with_operation_finish() instead.

+
+

Finishes ejecting a drive.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

drive

a GDrive.

 

result

a GAsyncResult.

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the drive has been ejected successfully, +FALSE otherwise.

+
+
+
+
+

g_drive_eject_with_operation ()

+
void
+g_drive_eject_with_operation (GDrive *drive,
+                              GMountUnmountFlags flags,
+                              GMountOperation *mount_operation,
+                              GCancellable *cancellable,
+                              GAsyncReadyCallback callback,
+                              gpointer user_data);
+

Ejects a drive. This is an asynchronous operation, and is +finished by calling g_drive_eject_with_operation_finish() with the drive + +and GAsyncResult data returned in the callback +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

drive

a GDrive.

 

flags

flags affecting the unmount if required for eject

 

mount_operation

a GMountOperation or NULL to avoid +user interaction.

[allow-none]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback, or NULL.

[allow-none]

user_data

user data passed to callback +.

 
+
+

Since: 2.22

+
+
+
+

g_drive_eject_with_operation_finish ()

+
gboolean
+g_drive_eject_with_operation_finish (GDrive *drive,
+                                     GAsyncResult *result,
+                                     GError **error);
+

Finishes ejecting a drive. If any errors occurred during the operation, +error + will be set to contain the errors and FALSE will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

drive

a GDrive.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if the drive was successfully ejected. FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_drive_start ()

+
void
+g_drive_start (GDrive *drive,
+               GDriveStartFlags flags,
+               GMountOperation *mount_operation,
+               GCancellable *cancellable,
+               GAsyncReadyCallback callback,
+               gpointer user_data);
+

Asynchronously starts a drive.

+

When the operation is finished, callback + will be called. +You can then call g_drive_start_finish() to obtain the +result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

drive

a GDrive.

 

flags

flags affecting the start operation.

 

mount_operation

a GMountOperation or NULL to avoid +user interaction.

[allow-none]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback, or NULL.

[allow-none]

user_data

user data to pass to callback +

 
+
+

Since: 2.22

+
+
+
+

g_drive_start_finish ()

+
gboolean
+g_drive_start_finish (GDrive *drive,
+                      GAsyncResult *result,
+                      GError **error);
+

Finishes starting a drive.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

drive

a GDrive.

 

result

a GAsyncResult.

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the drive has been started successfully, +FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_drive_stop ()

+
void
+g_drive_stop (GDrive *drive,
+              GMountUnmountFlags flags,
+              GMountOperation *mount_operation,
+              GCancellable *cancellable,
+              GAsyncReadyCallback callback,
+              gpointer user_data);
+

Asynchronously stops a drive.

+

When the operation is finished, callback + will be called. +You can then call g_drive_stop_finish() to obtain the +result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

drive

a GDrive.

 

flags

flags affecting the unmount if required for stopping.

 

mount_operation

a GMountOperation or NULL to avoid +user interaction.

[allow-none]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback, or NULL.

[allow-none]

user_data

user data to pass to callback +

 
+
+

Since: 2.22

+
+
+
+

g_drive_stop_finish ()

+
gboolean
+g_drive_stop_finish (GDrive *drive,
+                     GAsyncResult *result,
+                     GError **error);
+

Finishes stopping a drive.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

drive

a GDrive.

 

result

a GAsyncResult.

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the drive has been stopped successfully, +FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_drive_enumerate_identifiers ()

+
char **
+g_drive_enumerate_identifiers (GDrive *drive);
+

Gets the kinds of identifiers that drive + has. +Use g_drive_get_identifier() to obtain the identifiers +themselves.

+
+

Parameters

+
+++++ + + + + + +

drive

a GDrive

 
+
+
+

Returns

+

a NULL-terminated +array of strings containing kinds of identifiers. Use g_strfreev() +to free.

+

[transfer full][array zero-terminated=1]

+
+
+
+
+

g_drive_get_identifier ()

+
char *
+g_drive_get_identifier (GDrive *drive,
+                        const char *kind);
+

Gets the identifier of the given kind for drive +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

drive

a GDrive

 

kind

the kind of identifier to return

 
+
+
+

Returns

+

a newly allocated string containing the +requested identfier, or NULL if the GDrive +doesn't have this kind of identifier.

+
+
+
+
+

g_drive_get_sort_key ()

+
const gchar *
+g_drive_get_sort_key (GDrive *drive);
+

Gets the sort key for drive +, if any.

+
+

Parameters

+
+++++ + + + + + +

drive

A GDrive.

 
+
+
+

Returns

+

Sorting key for drive +or NULL if no such key is available.

+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

GDrive

+
typedef struct _GDrive GDrive;
+

Opaque drive object.

+
+
+
+

struct 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);
+};
+
+

Interface for creating GDrive implementations.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface 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_eject ()

Returns TRUE if the GDrive can eject media.

 

can_poll_for_media ()

Returns TRUE if the GDrive is capable of manually polling for media change.

 

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_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.

 

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.

 

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.

 
+
+
+
+
+

enum GDriveStartFlags

+

Flags used when starting a drive.

+
+

Members

+
+++++ + + + + + +

G_DRIVE_START_NONE

+

No flags set.

+
 
+
+

Since: 2.22

+
+
+
+

enum GDriveStartStopType

+

Enumeration describing how a drive can be started/stopped.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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)

+
 
+
+

Since: 2.22

+
+
+
+

Signal Details

+
+

The “changed” signal

+
void
+user_function (GDrive  *drive,
+               gpointer user_data)
+

Emitted when the drive's state has changed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

drive

a GDrive.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “disconnected” signal

+
void
+user_function (GDrive  *drive,
+               gpointer user_data)
+

This signal 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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

drive

a GDrive.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “eject-button” signal

+
void
+user_function (GDrive  *drive,
+               gpointer user_data)
+

Emitted when the physical eject button (if any) of a drive has +been pressed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

drive

a GDrive.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “stop-button” signal

+
void
+user_function (GDrive  *drive,
+               gpointer user_data)
+

Emitted when the physical stop button (if any) of a drive has +been pressed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

drive

a GDrive.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.22

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDtlsClientConnection.html b/docs/reference/gio/html/GDtlsClientConnection.html new file mode 100644 index 0000000..6b99e7a --- /dev/null +++ b/docs/reference/gio/html/GDtlsClientConnection.html @@ -0,0 +1,468 @@ + + + + +GDtlsClientConnection: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDtlsClientConnection

+

GDtlsClientConnection — DTLS client-side connection

+
+ +
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + +
gpointeraccepted-casRead
+GSocketConnectable *server-identityRead / Write / Construct
GTlsCertificateFlagsvalidation-flagsRead / Write / Construct
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GDtlsClientConnection
structGDtlsClientConnectionInterface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GDtlsClientConnection
+
+
+
+

Prerequisites

+

+GDtlsClientConnection requires + GDtlsConnection, GDatagramBased and GObject.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GDtlsClientConnection is the client-side subclass of +GDtlsConnection, representing a client-side DTLS connection.

+
+
+

Functions

+
+

g_dtls_client_connection_new ()

+
GDatagramBased *
+g_dtls_client_connection_new (GDatagramBased *base_socket,
+                              GSocketConnectable *server_identity,
+                              GError **error);
+

Creates a new GDtlsClientConnection wrapping base_socket + which is +assumed to communicate with the server identified by server_identity +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

base_socket

the GDatagramBased to wrap

 

server_identity

the expected identity of the server.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

the new +GDtlsClientConnection, or NULL on error.

+

[transfer full][type GDtlsClientConnection]

+
+

Since: 2.48

+
+
+
+

g_dtls_client_connection_set_server_identity ()

+
void
+g_dtls_client_connection_set_server_identity
+                               (GDtlsClientConnection *conn,
+                                GSocketConnectable *identity);
+

Sets conn +'s expected server identity, which is used both to tell +servers on virtual hosts which certificate to present, and also +to let conn + know what name to look for in the certificate when +performing G_TLS_CERTIFICATE_BAD_IDENTITY validation, if enabled.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

the GDtlsClientConnection

 

identity

a GSocketConnectable describing the expected server identity

 
+
+

Since: 2.48

+
+
+
+

g_dtls_client_connection_get_server_identity ()

+
GSocketConnectable *
+g_dtls_client_connection_get_server_identity
+                               (GDtlsClientConnection *conn);
+

Gets conn +'s expected server identity

+
+

Parameters

+
+++++ + + + + + +

conn

the GDtlsClientConnection

 
+
+
+

Returns

+

a GSocketConnectable describing the +expected server identity, or NULL if the expected identity is not +known.

+

[transfer none]

+
+

Since: 2.48

+
+
+
+

g_dtls_client_connection_set_validation_flags ()

+
void
+g_dtls_client_connection_set_validation_flags
+                               (GDtlsClientConnection *conn,
+                                GTlsCertificateFlags flags);
+

Sets conn +'s validation flags, to override the default set of +checks performed when validating a server certificate. By default, +G_TLS_CERTIFICATE_VALIDATE_ALL is used.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

the GDtlsClientConnection

 

flags

the GTlsCertificateFlags to use

 
+
+

Since: 2.48

+
+
+
+

g_dtls_client_connection_get_validation_flags ()

+
GTlsCertificateFlags
+g_dtls_client_connection_get_validation_flags
+                               (GDtlsClientConnection *conn);
+

Gets conn +'s validation flags

+
+

Parameters

+
+++++ + + + + + +

conn

the GDtlsClientConnection

 
+
+
+

Returns

+

the validation flags

+
+

Since: 2.48

+
+
+
+

g_dtls_client_connection_get_accepted_cas ()

+
GList *
+g_dtls_client_connection_get_accepted_cas
+                               (GDtlsClientConnection *conn);
+

Gets the list of distinguished names of the Certificate Authorities +that the server will accept certificates from. This will be set +during the TLS handshake if the server requests a certificate. +Otherwise, it will be NULL.

+

Each item in the list is a GByteArray which contains the complete +subject DN of the certificate authority.

+
+

Parameters

+
+++++ + + + + + +

conn

the GDtlsClientConnection

 
+
+
+

Returns

+

the list of +CA DNs. You should unref each element with g_byte_array_unref() and then +the free the list with g_list_free().

+

[element-type GByteArray][transfer full]

+
+

Since: 2.48

+
+
+
+

Types and Values

+
+

GDtlsClientConnection

+
typedef struct _GDtlsClientConnection GDtlsClientConnection;
+

Abstract base class for the backend-specific client connection +type.

+

Since: 2.48

+
+
+
+

struct GDtlsClientConnectionInterface

+
struct GDtlsClientConnectionInterface {
+  GTypeInterface g_iface;
+};
+
+

vtable for a GDtlsClientConnection implementation.

+
+

Members

+
+++++ + + + + + +

GTypeInterface g_iface;

The parent interface.

 
+
+

Since: 2.48

+
+
+
+

Property Details

+
+

The “accepted-cas” property

+
  “accepted-cas”             gpointer
+

A list of the distinguished names of the Certificate Authorities +that the server will accept client certificates signed by. If the +server requests a client certificate during the handshake, then +this property will be set after the handshake completes.

+

Each item in the list is a GByteArray which contains the complete +subject DN of the certificate authority.

+

[element-type GLib.ByteArray]

+

Flags: Read

+

Since: 2.48

+
+
+
+

The “server-identity” property

+
  “server-identity”          GSocketConnectable *
+

A GSocketConnectable describing the identity of the server that +is expected on the other end of the connection.

+

If the G_TLS_CERTIFICATE_BAD_IDENTITY flag is set in +“validation-flags”, this object will be used +to determine the expected identify of the remote end of the +connection; if “server-identity” is not set, +or does not match the identity presented by the server, then the +G_TLS_CERTIFICATE_BAD_IDENTITY validation will fail.

+

In addition to its use in verifying the server certificate, +this is also used to give a hint to the server about what +certificate we expect, which is useful for servers that serve +virtual hosts.

+

Flags: Read / Write / Construct

+

Since: 2.48

+
+
+
+

The “validation-flags” property

+
  “validation-flags”         GTlsCertificateFlags
+

What steps to perform when validating a certificate received from +a server. Server certificates that fail to validate in all of the +ways indicated here will be rejected unless the application +overrides the default via “accept-certificate”.

+

Flags: Read / Write / Construct

+

Default value: G_TLS_CERTIFICATE_UNKNOWN_CA | G_TLS_CERTIFICATE_BAD_IDENTITY | G_TLS_CERTIFICATE_NOT_ACTIVATED | G_TLS_CERTIFICATE_EXPIRED | G_TLS_CERTIFICATE_REVOKED | G_TLS_CERTIFICATE_INSECURE | G_TLS_CERTIFICATE_GENERIC_ERROR

+

Since: 2.48

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDtlsConnection.html b/docs/reference/gio/html/GDtlsConnection.html new file mode 100644 index 0000000..1245cb2 --- /dev/null +++ b/docs/reference/gio/html/GDtlsConnection.html @@ -0,0 +1,1521 @@ + + + + +GDtlsConnection: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDtlsConnection

+

GDtlsConnection — DTLS connection type

+
+ +
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GDatagramBased *base-socketRead / Write / Construct Only
+GTlsCertificate *certificateRead / Write
+GTlsDatabase *databaseRead / Write
+GTlsInteraction *interactionRead / Write
+GTlsCertificate *peer-certificateRead
GTlsCertificateFlagspeer-certificate-errorsRead
GTlsRehandshakeModerehandshake-modeRead / Write / Construct
gbooleanrequire-close-notifyRead / Write / Construct
+
+
+

Signals

+ +
+
+

Types and Values

+
++++ + + + + +
 GDtlsConnection
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GDtlsConnection
+
+
+
+

Prerequisites

+

+GDtlsConnection requires + GDatagramBased and GObject.

+
+
+

Known Derived Interfaces

+

+GDtlsConnection is required by + GDtlsClientConnection and GDtlsServerConnection.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GDtlsConnection is the base DTLS connection class type, which wraps +a GDatagramBased and provides DTLS encryption on top of it. Its +subclasses, GDtlsClientConnection and GDtlsServerConnection, +implement client-side and server-side DTLS, respectively.

+

For TLS support, see GTlsConnection.

+

As DTLS is datagram based, GDtlsConnection implements GDatagramBased, +presenting a datagram-socket-like API for the encrypted connection. This +operates over a base datagram connection, which is also a GDatagramBased +(“base-socket”).

+

To close a DTLS connection, use g_dtls_connection_close().

+

Neither GDtlsServerConnection or GDtlsClientConnection set the peer address +on their base GDatagramBased if it is a GSocket — it is up to the caller to +do that if they wish. If they do not, and g_socket_close() is called on the +base socket, the GDtlsConnection will not raise a G_IO_ERROR_NOT_CONNECTED +error on further I/O.

+
+
+

Functions

+
+

g_dtls_connection_set_certificate ()

+
void
+g_dtls_connection_set_certificate (GDtlsConnection *conn,
+                                   GTlsCertificate *certificate);
+

This sets the certificate that conn + will present to its peer +during the TLS handshake. For a GDtlsServerConnection, it is +mandatory to set this, and that will normally be done at construct +time.

+

For a GDtlsClientConnection, this is optional. If a handshake fails +with G_TLS_ERROR_CERTIFICATE_REQUIRED, that means that the server +requires a certificate, and if you try connecting again, you should +call this method first. You can call +g_dtls_client_connection_get_accepted_cas() on the failed connection +to get a list of Certificate Authorities that the server will +accept certificates from.

+

(It is also possible that a server will allow the connection with +or without a certificate; in that case, if you don't provide a +certificate, you can tell that the server requested one by the fact +that g_dtls_client_connection_get_accepted_cas() will return +non-NULL.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

a GDtlsConnection

 

certificate

the certificate to use for conn +

 
+
+

Since: 2.48

+
+
+
+

g_dtls_connection_get_certificate ()

+
GTlsCertificate *
+g_dtls_connection_get_certificate (GDtlsConnection *conn);
+

Gets conn +'s certificate, as set by +g_dtls_connection_set_certificate().

+
+

Parameters

+
+++++ + + + + + +

conn

a GDtlsConnection

 
+
+
+

Returns

+

conn +'s certificate, or NULL.

+

[transfer none]

+
+

Since: 2.48

+
+
+
+

g_dtls_connection_get_peer_certificate ()

+
GTlsCertificate *
+g_dtls_connection_get_peer_certificate
+                               (GDtlsConnection *conn);
+

Gets conn +'s peer's certificate after the handshake has completed. +(It is not set during the emission of +“accept-certificate”.)

+
+

Parameters

+
+++++ + + + + + +

conn

a GDtlsConnection

 
+
+
+

Returns

+

conn +'s peer's certificate, or NULL.

+

[transfer none]

+
+

Since: 2.48

+
+
+
+

g_dtls_connection_get_peer_certificate_errors ()

+
GTlsCertificateFlags
+g_dtls_connection_get_peer_certificate_errors
+                               (GDtlsConnection *conn);
+

Gets the errors associated with validating conn +'s peer's +certificate, after the handshake has completed. (It is not set +during the emission of “accept-certificate”.)

+
+

Parameters

+
+++++ + + + + + +

conn

a GDtlsConnection

 
+
+
+

Returns

+

conn +'s peer's certificate errors

+
+

Since: 2.48

+
+
+
+

g_dtls_connection_set_require_close_notify ()

+
void
+g_dtls_connection_set_require_close_notify
+                               (GDtlsConnection *conn,
+                                gboolean require_close_notify);
+

Sets whether or not conn + expects a proper TLS close notification +before the connection is closed. If this is TRUE (the default), +then conn + will expect to receive a TLS close notification from its +peer before the connection is closed, and will return a +G_TLS_ERROR_EOF error if the connection is closed without proper +notification (since this may indicate a network error, or +man-in-the-middle attack).

+

In some protocols, the application will know whether or not the +connection was closed cleanly based on application-level data +(because the application-level data includes a length field, or is +somehow self-delimiting); in this case, the close notify is +redundant and may be omitted. You +can use g_dtls_connection_set_require_close_notify() to tell conn + +to allow an "unannounced" connection close, in which case the close +will show up as a 0-length read, as in a non-TLS +GDatagramBased, and it is up to the application to check that +the data has been fully received.

+

Note that this only affects the behavior when the peer closes the +connection; when the application calls g_dtls_connection_close_async() on +conn + itself, this will send a close notification regardless of the +setting of this property. If you explicitly want to do an unclean +close, you can close conn +'s “base-socket” rather +than closing conn + itself.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

a GDtlsConnection

 

require_close_notify

whether or not to require close notification

 
+
+

Since: 2.48

+
+
+
+

g_dtls_connection_get_require_close_notify ()

+
gboolean
+g_dtls_connection_get_require_close_notify
+                               (GDtlsConnection *conn);
+

Tests whether or not conn + expects a proper TLS close notification +when the connection is closed. See +g_dtls_connection_set_require_close_notify() for details.

+
+

Parameters

+
+++++ + + + + + +

conn

a GDtlsConnection

 
+
+
+

Returns

+

TRUE if conn +requires a proper TLS close notification.

+
+

Since: 2.48

+
+
+
+

g_dtls_connection_set_rehandshake_mode ()

+
void
+g_dtls_connection_set_rehandshake_mode
+                               (GDtlsConnection *conn,
+                                GTlsRehandshakeMode mode);
+

Sets how conn + behaves with respect to rehandshaking requests.

+

G_TLS_REHANDSHAKE_NEVER means that it will never agree to +rehandshake after the initial handshake is complete. (For a client, +this means it will refuse rehandshake requests from the server, and +for a server, this means it will close the connection with an error +if the client attempts to rehandshake.)

+

G_TLS_REHANDSHAKE_SAFELY means that the connection will allow a +rehandshake only if the other end of the connection supports the +TLS renegotiation_info extension. This is the default behavior, +but means that rehandshaking will not work against older +implementations that do not support that extension.

+

G_TLS_REHANDSHAKE_UNSAFELY means that the connection will allow +rehandshaking even without the renegotiation_info extension. On +the server side in particular, this is not recommended, since it +leaves the server open to certain attacks. However, this mode is +necessary if you need to allow renegotiation with older client +software.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

a GDtlsConnection

 

mode

the rehandshaking mode

 
+
+

Since: 2.48

+
+
+
+

g_dtls_connection_get_rehandshake_mode ()

+
GTlsRehandshakeMode
+g_dtls_connection_get_rehandshake_mode
+                               (GDtlsConnection *conn);
+

Gets conn + rehandshaking mode. See +g_dtls_connection_set_rehandshake_mode() for details.

+
+

Parameters

+
+++++ + + + + + +

conn

a GDtlsConnection

 
+
+
+

Returns

+

conn +'s rehandshaking mode

+
+

Since: 2.48

+
+
+
+

g_dtls_connection_get_database ()

+
GTlsDatabase *
+g_dtls_connection_get_database (GDtlsConnection *conn);
+

Gets the certificate database that conn + uses to verify +peer certificates. See g_dtls_connection_set_database().

+
+

Parameters

+
+++++ + + + + + +

conn

a GDtlsConnection

 
+
+
+

Returns

+

the certificate database that conn +uses or NULL.

+

[transfer none]

+
+

Since: 2.48

+
+
+
+

g_dtls_connection_set_database ()

+
void
+g_dtls_connection_set_database (GDtlsConnection *conn,
+                                GTlsDatabase *database);
+

Sets the certificate database that is used to verify peer certificates. +This is set to the default database by default. See +g_dtls_backend_get_default_database(). If set to NULL, then +peer certificate validation will always set the +G_TLS_CERTIFICATE_UNKNOWN_CA error (meaning +“accept-certificate” will always be emitted on +client-side connections, unless that bit is not set in +“validation-flags”).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

a GDtlsConnection

 

database

a GTlsDatabase

 
+
+

Since: 2.48

+
+
+
+

g_dtls_connection_get_interaction ()

+
GTlsInteraction *
+g_dtls_connection_get_interaction (GDtlsConnection *conn);
+

Get the object that will be used to interact with the user. It will be used +for things like prompting the user for passwords. If NULL is returned, then +no user interaction will occur for this connection.

+
+

Parameters

+
+++++ + + + + + +

conn

a connection

 
+
+
+

Returns

+

The interaction object.

+

[transfer none]

+
+

Since: 2.48

+
+
+
+

g_dtls_connection_set_interaction ()

+
void
+g_dtls_connection_set_interaction (GDtlsConnection *conn,
+                                   GTlsInteraction *interaction);
+

Set the object that will be used to interact with the user. It will be used +for things like prompting the user for passwords.

+

The interaction + argument will normally be a derived subclass of +GTlsInteraction. NULL can also be provided if no user interaction +should occur for this connection.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

a connection

 

interaction

an interaction object, or NULL.

[allow-none]
+
+

Since: 2.48

+
+
+
+

g_dtls_connection_handshake ()

+
gboolean
+g_dtls_connection_handshake (GDtlsConnection *conn,
+                             GCancellable *cancellable,
+                             GError **error);
+

Attempts a TLS handshake on conn +.

+

On the client side, it is never necessary to call this method; +although the connection needs to perform a handshake after +connecting (or after sending a "STARTTLS"-type command) and may +need to rehandshake later if the server requests it, +GDtlsConnection will handle this for you automatically when you try +to send or receive data on the connection. However, you can call +g_dtls_connection_handshake() manually if you want to know for sure +whether the initial handshake succeeded or failed (as opposed to +just immediately trying to write to conn +, in which +case if it fails, it may not be possible to tell if it failed +before or after completing the handshake).

+

Likewise, on the server side, although a handshake is necessary at +the beginning of the communication, you do not need to call this +function explicitly unless you want clearer error reporting. +However, you may call g_dtls_connection_handshake() later on to +renegotiate parameters (encryption methods, etc) with the client.

+

“accept_certificate” may be emitted during the +handshake.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

conn

a GDtlsConnection

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

success or failure

+
+

Since: 2.48

+
+
+
+

g_dtls_connection_handshake_async ()

+
void
+g_dtls_connection_handshake_async (GDtlsConnection *conn,
+                                   int io_priority,
+                                   GCancellable *cancellable,
+                                   GAsyncReadyCallback callback,
+                                   gpointer user_data);
+

Asynchronously performs a TLS handshake on conn +. See +g_dtls_connection_handshake() for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

conn

a GDtlsConnection

 

io_priority

the I/O priority of the request

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

callback to call when the handshake is complete

 

user_data

the data to pass to the callback function

 
+
+

Since: 2.48

+
+
+
+

g_dtls_connection_handshake_finish ()

+
gboolean
+g_dtls_connection_handshake_finish (GDtlsConnection *conn,
+                                    GAsyncResult *result,
+                                    GError **error);
+

Finish an asynchronous TLS handshake operation. See +g_dtls_connection_handshake() for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

conn

a GDtlsConnection

 

result

a GAsyncResult.

 

error

a GError pointer, or NULL

 
+
+
+

Returns

+

TRUE on success, FALSE on failure, in which +case error +will be set.

+
+

Since: 2.48

+
+
+
+

g_dtls_connection_shutdown ()

+
gboolean
+g_dtls_connection_shutdown (GDtlsConnection *conn,
+                            gboolean shutdown_read,
+                            gboolean shutdown_write,
+                            GCancellable *cancellable,
+                            GError **error);
+

Shut down part or all of a DTLS connection.

+

If shutdown_read + is TRUE then the receiving side of the connection is shut +down, and further reading is disallowed. Subsequent calls to +g_datagram_based_receive_messages() will return G_IO_ERROR_CLOSED.

+

If shutdown_write + is TRUE then the sending side of the connection is shut +down, and further writing is disallowed. Subsequent calls to +g_datagram_based_send_messages() will return G_IO_ERROR_CLOSED.

+

It is allowed for both shutdown_read + and shutdown_write + to be TRUE — this +is equivalent to calling g_dtls_connection_close().

+

If cancellable + is cancelled, the GDtlsConnection may be left +partially-closed and any pending untransmitted data may be lost. Call +g_dtls_connection_shutdown() again to complete closing the GDtlsConnection.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

conn

a GDtlsConnection

 

shutdown_read

TRUE to stop reception of incoming datagrams

 

shutdown_write

TRUE to stop sending outgoing datagrams

 

cancellable

a GCancellable, or NULL.

[nullable]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE on success, FALSE otherwise

+
+

Since: 2.48

+
+
+
+

g_dtls_connection_shutdown_async ()

+
void
+g_dtls_connection_shutdown_async (GDtlsConnection *conn,
+                                  gboolean shutdown_read,
+                                  gboolean shutdown_write,
+                                  int io_priority,
+                                  GCancellable *cancellable,
+                                  GAsyncReadyCallback callback,
+                                  gpointer user_data);
+

Asynchronously shut down part or all of the DTLS connection. See +g_dtls_connection_shutdown() for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

conn

a GDtlsConnection

 

shutdown_read

TRUE to stop reception of incoming datagrams

 

shutdown_write

TRUE to stop sending outgoing datagrams

 

io_priority

the I/O priority of the request

 

cancellable

a GCancellable, or NULL.

[nullable]

callback

callback to call when the shutdown operation is complete

 

user_data

the data to pass to the callback function

 
+
+

Since: 2.48

+
+
+
+

g_dtls_connection_shutdown_finish ()

+
gboolean
+g_dtls_connection_shutdown_finish (GDtlsConnection *conn,
+                                   GAsyncResult *result,
+                                   GError **error);
+

Finish an asynchronous TLS shutdown operation. See +g_dtls_connection_shutdown() for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

conn

a GDtlsConnection

 

result

a GAsyncResult

 

error

a GError pointer, or NULL

 
+
+
+

Returns

+

TRUE on success, FALSE on failure, in which +case error +will be set

+
+

Since: 2.48

+
+
+
+

g_dtls_connection_close ()

+
gboolean
+g_dtls_connection_close (GDtlsConnection *conn,
+                         GCancellable *cancellable,
+                         GError **error);
+

Close the DTLS connection. This is equivalent to calling +g_dtls_connection_shutdown() to shut down both sides of the connection.

+

Closing a GDtlsConnection waits for all buffered but untransmitted data to +be sent before it completes. It then sends a close_notify DTLS alert to the +peer and may wait for a close_notify to be received from the peer. It does +not close the underlying “base-socket”; that must be closed +separately.

+

Once conn + is closed, all other operations will return G_IO_ERROR_CLOSED. +Closing a GDtlsConnection multiple times will not return an error.

+

GDtlsConnections will be automatically closed when the last reference is +dropped, but you might want to call this function to make sure resources are +released as early as possible.

+

If cancellable + is cancelled, the GDtlsConnection may be left +partially-closed and any pending untransmitted data may be lost. Call +g_dtls_connection_close() again to complete closing the GDtlsConnection.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

conn

a GDtlsConnection

 

cancellable

a GCancellable, or NULL.

[nullable]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE on success, FALSE otherwise

+
+

Since: 2.48

+
+
+
+

g_dtls_connection_close_async ()

+
void
+g_dtls_connection_close_async (GDtlsConnection *conn,
+                               int io_priority,
+                               GCancellable *cancellable,
+                               GAsyncReadyCallback callback,
+                               gpointer user_data);
+

Asynchronously close the DTLS connection. See g_dtls_connection_close() for +more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

conn

a GDtlsConnection

 

io_priority

the I/O priority of the request

 

cancellable

a GCancellable, or NULL.

[nullable]

callback

callback to call when the close operation is complete

 

user_data

the data to pass to the callback function

 
+
+

Since: 2.48

+
+
+
+

g_dtls_connection_close_finish ()

+
gboolean
+g_dtls_connection_close_finish (GDtlsConnection *conn,
+                                GAsyncResult *result,
+                                GError **error);
+

Finish an asynchronous TLS close operation. See g_dtls_connection_close() +for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

conn

a GDtlsConnection

 

result

a GAsyncResult

 

error

a GError pointer, or NULL

 
+
+
+

Returns

+

TRUE on success, FALSE on failure, in which +case error +will be set

+
+

Since: 2.48

+
+
+
+

g_dtls_connection_emit_accept_certificate ()

+
gboolean
+g_dtls_connection_emit_accept_certificate
+                               (GDtlsConnection *conn,
+                                GTlsCertificate *peer_cert,
+                                GTlsCertificateFlags errors);
+

Used by GDtlsConnection implementations to emit the +“accept-certificate” signal.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

conn

a GDtlsConnection

 

peer_cert

the peer's GTlsCertificate

 

errors

the problems with peer_cert +

 
+
+
+

Returns

+

TRUE if one of the signal handlers has returned +TRUE to accept peer_cert +

+
+

Since: 2.48

+
+
+
+

Types and Values

+
+

GDtlsConnection

+
typedef struct _GDtlsConnection GDtlsConnection;
+

Abstract base class for the backend-specific GDtlsClientConnection +and GDtlsServerConnection types.

+

Since: 2.48

+
+
+
+

Property Details

+
+

The “base-socket” property

+
  “base-socket”              GDatagramBased *
+

The GDatagramBased that the connection wraps. Note that this may be any +implementation of GDatagramBased, not just a GSocket.

+

Flags: Read / Write / Construct Only

+

Since: 2.48

+
+
+
+

The “certificate” property

+
  “certificate”              GTlsCertificate *
+

The connection's certificate; see +g_dtls_connection_set_certificate().

+

Flags: Read / Write

+

Since: 2.48

+
+
+
+

The “database” property

+
  “database”                 GTlsDatabase *
+

The certificate database to use when verifying this TLS connection. +If no certificate database is set, then the default database will be +used. See g_dtls_backend_get_default_database().

+

Flags: Read / Write

+

Since: 2.48

+
+
+
+

The “interaction” property

+
  “interaction”              GTlsInteraction *
+

A GTlsInteraction object to be used when the connection or certificate +database need to interact with the user. This will be used to prompt the +user for passwords where necessary.

+

Flags: Read / Write

+

Since: 2.48

+
+
+
+

The “peer-certificate” property

+
  “peer-certificate”         GTlsCertificate *
+

The connection's peer's certificate, after the TLS handshake has +completed and the certificate has been accepted. Note in +particular that this is not yet set during the emission of +“accept-certificate”.

+

(You can watch for a “notify” signal on this property to +detect when a handshake has occurred.)

+

Flags: Read

+

Since: 2.48

+
+
+
+

The “peer-certificate-errors” property

+
  “peer-certificate-errors”  GTlsCertificateFlags
+

The errors noticed-and-ignored while verifying +“peer-certificate”. Normally this should be 0, but +it may not be if “validation-flags” is not +G_TLS_CERTIFICATE_VALIDATE_ALL, or if +“accept-certificate” overrode the default +behavior.

+

Flags: Read

+

Since: 2.48

+
+
+
+

The “rehandshake-mode” property

+
  “rehandshake-mode”         GTlsRehandshakeMode
+

The rehandshaking mode. See +g_dtls_connection_set_rehandshake_mode().

+

Flags: Read / Write / Construct

+

Default value: G_TLS_REHANDSHAKE_NEVER

+

Since: 2.48

+
+
+
+

The “require-close-notify” property

+
  “require-close-notify”     gboolean
+

Whether or not proper TLS close notification is required. +See g_dtls_connection_set_require_close_notify().

+

Flags: Read / Write / Construct

+

Default value: TRUE

+

Since: 2.48

+
+
+
+

Signal Details

+
+

The “accept-certificate” signal

+
gboolean
+user_function (GDtlsConnection     *conn,
+               GTlsCertificate     *peer_cert,
+               GTlsCertificateFlags errors,
+               gpointer             user_data)
+

Emitted during the TLS handshake after the peer certificate has +been received. You can examine peer_cert +'s certification path by +calling g_tls_certificate_get_issuer() on it.

+

For a client-side connection, peer_cert + is the server's +certificate, and the signal will only be emitted if the +certificate was not acceptable according to conn +'s +“validation_flags”. If you would like the +certificate to be accepted despite errors +, return TRUE from the +signal handler. Otherwise, if no handler accepts the certificate, +the handshake will fail with G_TLS_ERROR_BAD_CERTIFICATE.

+

For a server-side connection, peer_cert + is the certificate +presented by the client, if this was requested via the server's +“authentication_mode”. On the server side, +the signal is always emitted when the client presents a +certificate, and the certificate will only be accepted if a +handler returns TRUE.

+

Note that if this signal is emitted as part of asynchronous I/O +in the main thread, then you should not attempt to interact with +the user before returning from the signal handler. If you want to +let the user decide whether or not to accept the certificate, you +would have to return FALSE from the signal handler on the first +attempt, and then after the connection attempt returns a +G_TLS_ERROR_HANDSHAKE, you can interact with the user, and if +the user decides to accept the certificate, remember that fact, +create a new connection, and return TRUE from the signal handler +the next time.

+

If you are doing I/O in another thread, you do not +need to worry about this, and can simply block in the signal +handler until the UI thread returns an answer.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

conn

a GDtlsConnection

 

peer_cert

the peer's GTlsCertificate

 

errors

the problems with peer_cert +.

 

user_data

user data set when the signal handler was connected.

 
+
+
+

Returns

+

TRUE to accept peer_cert +(which will also +immediately end the signal emission). FALSE to allow the signal +emission to continue, which will cause the handshake to fail if +no one else overrides it.

+
+

Flags: Run Last

+

Since: 2.48

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GDtlsServerConnection.html b/docs/reference/gio/html/GDtlsServerConnection.html new file mode 100644 index 0000000..02a3863 --- /dev/null +++ b/docs/reference/gio/html/GDtlsServerConnection.html @@ -0,0 +1,208 @@ + + + + +GDtlsServerConnection: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDtlsServerConnection

+

GDtlsServerConnection — DTLS server-side connection

+
+
+

Functions

+
++++ + + + + +
+GDatagramBased * + +g_dtls_server_connection_new () +
+
+
+

Properties

+
+++++ + + + + + +
GTlsAuthenticationModeauthentication-modeRead / Write
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GDtlsServerConnection
structGDtlsServerConnectionInterface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GDtlsServerConnection
+
+
+
+

Prerequisites

+

+GDtlsServerConnection requires + GDtlsConnection, GDatagramBased and GObject.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GDtlsServerConnection is the server-side subclass of GDtlsConnection, +representing a server-side DTLS connection.

+
+
+

Functions

+
+

g_dtls_server_connection_new ()

+
GDatagramBased *
+g_dtls_server_connection_new (GDatagramBased *base_socket,
+                              GTlsCertificate *certificate,
+                              GError **error);
+

Creates a new GDtlsServerConnection wrapping base_socket +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

base_socket

the GDatagramBased to wrap

 

certificate

the default server certificate, or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore

 
+
+
+

Returns

+

the new +GDtlsServerConnection, or NULL on error.

+

[transfer full][type GDtlsServerConnection]

+
+

Since: 2.48

+
+
+
+

Types and Values

+
+

GDtlsServerConnection

+
typedef struct _GDtlsServerConnection GDtlsServerConnection;
+

DTLS server-side connection. This is the server-side implementation +of a GDtlsConnection.

+

Since: 2.48

+
+
+
+

struct GDtlsServerConnectionInterface

+
struct GDtlsServerConnectionInterface {
+  GTypeInterface g_iface;
+};
+
+

vtable for a GDtlsServerConnection implementation.

+
+

Members

+
+++++ + + + + + +

GTypeInterface g_iface;

The parent interface.

 
+
+

Since: 2.48

+
+
+
+

Property Details

+
+

The “authentication-mode” property

+
  “authentication-mode”      GTlsAuthenticationMode
+

The GTlsAuthenticationMode for the server. This can be changed +before calling g_dtls_connection_handshake() if you want to +rehandshake with a different mode from the initial handshake.

+

Flags: Read / Write

+

Default value: G_TLS_AUTHENTICATION_NONE

+

Since: 2.48

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GEmblem.html b/docs/reference/gio/html/GEmblem.html new file mode 100644 index 0000000..8e4d22f --- /dev/null +++ b/docs/reference/gio/html/GEmblem.html @@ -0,0 +1,351 @@ + + + + +GEmblem: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GEmblem

+

GEmblem — An object for emblems

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+GEmblem * + +g_emblem_new () +
+GEmblem * + +g_emblem_new_with_origin () +
+GIcon * + +g_emblem_get_icon () +
+GEmblemOrigin + +g_emblem_get_origin () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + +
+GObject *iconRead / Write / Construct Only
GEmblemOriginoriginRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GEmblem
enumGEmblemOrigin
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GEmblem
+
+
+
+

Implemented Interfaces

+

+GEmblem implements + GIcon.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GEmblem is an implementation of GIcon that supports +having an emblem, which is an icon with additional properties. +It can than be added to a GEmblemedIcon.

+

Currently, only metainformation about the emblem's origin is +supported. More may be added in the future.

+
+
+

Functions

+
+

g_emblem_new ()

+
GEmblem *
+g_emblem_new (GIcon *icon);
+

Creates a new emblem for icon +.

+
+

Parameters

+
+++++ + + + + + +

icon

a GIcon containing the icon.

 
+
+
+

Returns

+

a new GEmblem.

+
+

Since: 2.18

+
+
+
+

g_emblem_new_with_origin ()

+
GEmblem *
+g_emblem_new_with_origin (GIcon *icon,
+                          GEmblemOrigin origin);
+

Creates a new emblem for icon +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

icon

a GIcon containing the icon.

 

origin

a GEmblemOrigin enum defining the emblem's origin

 
+
+
+

Returns

+

a new GEmblem.

+
+

Since: 2.18

+
+
+
+

g_emblem_get_icon ()

+
GIcon *
+g_emblem_get_icon (GEmblem *emblem);
+

Gives back the icon from emblem +.

+
+

Parameters

+
+++++ + + + + + +

emblem

a GEmblem from which the icon should be extracted.

 
+
+
+

Returns

+

a GIcon. The returned object belongs to +the emblem and should not be modified or freed.

+

[transfer none]

+
+

Since: 2.18

+
+
+
+

g_emblem_get_origin ()

+
GEmblemOrigin
+g_emblem_get_origin (GEmblem *emblem);
+

Gets the origin of the emblem.

+
+

Parameters

+
+++++ + + + + + +

emblem

a GEmblem

 
+
+
+

Returns

+

the origin of the emblem.

+

[transfer none]

+
+

Since: 2.18

+
+
+
+

Types and Values

+
+

GEmblem

+
typedef struct _GEmblem GEmblem;
+

An object for Emblems

+
+
+
+

enum GEmblemOrigin

+

GEmblemOrigin is used to add information about the origin of the emblem +to GEmblem.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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)

+
 
+
+

Since: 2.18

+
+
+
+

Property Details

+
+

The “icon” property

+
  “icon”                     GObject *
+

The actual icon of the emblem.

+

Flags: Read / Write / Construct Only

+
+
+
+

The “origin” property

+
  “origin”                   GEmblemOrigin
+

Tells which origin the emblem is derived from.

+

Flags: Read / Write / Construct Only

+

Default value: G_EMBLEM_ORIGIN_UNKNOWN

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GEmblemedIcon.html b/docs/reference/gio/html/GEmblemedIcon.html new file mode 100644 index 0000000..c5522b8 --- /dev/null +++ b/docs/reference/gio/html/GEmblemedIcon.html @@ -0,0 +1,324 @@ + + + + +GEmblemedIcon: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GEmblemedIcon

+

GEmblemedIcon — Icon with emblems

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+GIcon * + +g_emblemed_icon_new () +
+GIcon * + +g_emblemed_icon_get_icon () +
+GList * + +g_emblemed_icon_get_emblems () +
+void + +g_emblemed_icon_add_emblem () +
+void + +g_emblemed_icon_clear_emblems () +
+
+
+

Properties

+
+++++ + + + + + +
+GIcon *giconRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
structGEmblemedIcon
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GEmblemedIcon
+
+
+
+

Implemented Interfaces

+

+GEmblemedIcon implements + GIcon.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GEmblemedIcon is an implementation of GIcon that supports +adding an emblem to an icon. Adding multiple emblems to an +icon is ensured via g_emblemed_icon_add_emblem().

+

Note that GEmblemedIcon allows no control over the position +of the emblems. See also GEmblem for more information.

+
+
+

Functions

+
+

g_emblemed_icon_new ()

+
GIcon *
+g_emblemed_icon_new (GIcon *icon,
+                     GEmblem *emblem);
+

Creates a new emblemed icon for icon + with the emblem emblem +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

icon

a GIcon

 

emblem

a GEmblem, or NULL.

[allow-none]
+
+
+

Returns

+

a new GIcon.

+

[transfer full][type GEmblemedIcon]

+
+

Since: 2.18

+
+
+
+

g_emblemed_icon_get_icon ()

+
GIcon *
+g_emblemed_icon_get_icon (GEmblemedIcon *emblemed);
+

Gets the main icon for emblemed +.

+
+

Parameters

+
+++++ + + + + + +

emblemed

a GEmblemedIcon

 
+
+
+

Returns

+

a GIcon that is owned by emblemed +.

+

[transfer none]

+
+

Since: 2.18

+
+
+
+

g_emblemed_icon_get_emblems ()

+
GList *
+g_emblemed_icon_get_emblems (GEmblemedIcon *emblemed);
+

Gets the list of emblems for the icon +.

+
+

Parameters

+
+++++ + + + + + +

emblemed

a GEmblemedIcon

 
+
+
+

Returns

+

a GList of +GEmblems that is owned by emblemed +.

+

[element-type Gio.Emblem][transfer none]

+
+

Since: 2.18

+
+
+
+

g_emblemed_icon_add_emblem ()

+
void
+g_emblemed_icon_add_emblem (GEmblemedIcon *emblemed,
+                            GEmblem *emblem);
+

Adds emblem + to the GList of GEmblems.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

emblemed

a GEmblemedIcon

 

emblem

a GEmblem

 
+
+

Since: 2.18

+
+
+
+

g_emblemed_icon_clear_emblems ()

+
void
+g_emblemed_icon_clear_emblems (GEmblemedIcon *emblemed);
+

Removes all the emblems from icon +.

+
+

Parameters

+
+++++ + + + + + +

emblemed

a GEmblemedIcon

 
+
+

Since: 2.28

+
+
+
+

Types and Values

+
+

struct GEmblemedIcon

+
struct GEmblemedIcon;
+

An implementation of GIcon for icons with emblems.

+
+
+
+

Property Details

+
+

The “gicon” property

+
  “gicon”                    GIcon *
+

The GIcon to attach emblems to.

+

Flags: Read / Write / Construct Only

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GFile.html b/docs/reference/gio/html/GFile.html new file mode 100644 index 0000000..487512f --- /dev/null +++ b/docs/reference/gio/html/GFile.html @@ -0,0 +1,9661 @@ + + + + +GFile: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GFile

+

GFile — File and Directory Handling

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +(*GFileProgressCallback) () +
+gboolean + +(*GFileReadMoreCallback) () +
+void + +(*GFileMeasureProgressCallback) () +
+GFile * + +g_file_new_for_path () +
+GFile * + +g_file_new_for_uri () +
+GFile * + +g_file_new_for_commandline_arg () +
+GFile * + +g_file_new_for_commandline_arg_and_cwd () +
+GFile * + +g_file_new_tmp () +
+GFile * + +g_file_parse_name () +
+GFile * + +g_file_dup () +
+guint + +g_file_hash () +
+gboolean + +g_file_equal () +
+char * + +g_file_get_basename () +
+char * + +g_file_get_path () +
+char * + +g_file_get_uri () +
+char * + +g_file_get_parse_name () +
+GFile * + +g_file_get_parent () +
+gboolean + +g_file_has_parent () +
+GFile * + +g_file_get_child () +
+GFile * + +g_file_get_child_for_display_name () +
+gboolean + +g_file_has_prefix () +
+char * + +g_file_get_relative_path () +
+GFile * + +g_file_resolve_relative_path () +
+gboolean + +g_file_is_native () +
+gboolean + +g_file_has_uri_scheme () +
+char * + +g_file_get_uri_scheme () +
+GFileInputStream * + +g_file_read () +
+void + +g_file_read_async () +
+GFileInputStream * + +g_file_read_finish () +
+GFileOutputStream * + +g_file_append_to () +
+GFileOutputStream * + +g_file_create () +
+GFileOutputStream * + +g_file_replace () +
+void + +g_file_append_to_async () +
+GFileOutputStream * + +g_file_append_to_finish () +
+void + +g_file_create_async () +
+GFileOutputStream * + +g_file_create_finish () +
+void + +g_file_replace_async () +
+GFileOutputStream * + +g_file_replace_finish () +
+GFileInfo * + +g_file_query_info () +
+void + +g_file_query_info_async () +
+GFileInfo * + +g_file_query_info_finish () +
+gboolean + +g_file_query_exists () +
+GFileType + +g_file_query_file_type () +
+GFileInfo * + +g_file_query_filesystem_info () +
+void + +g_file_query_filesystem_info_async () +
+GFileInfo * + +g_file_query_filesystem_info_finish () +
+GAppInfo * + +g_file_query_default_handler () +
+gboolean + +g_file_measure_disk_usage () +
+void + +g_file_measure_disk_usage_async () +
+gboolean + +g_file_measure_disk_usage_finish () +
+GMount * + +g_file_find_enclosing_mount () +
+void + +g_file_find_enclosing_mount_async () +
+GMount * + +g_file_find_enclosing_mount_finish () +
+GFileEnumerator * + +g_file_enumerate_children () +
+void + +g_file_enumerate_children_async () +
+GFileEnumerator * + +g_file_enumerate_children_finish () +
+GFile * + +g_file_set_display_name () +
+void + +g_file_set_display_name_async () +
+GFile * + +g_file_set_display_name_finish () +
+gboolean + +g_file_delete () +
+void + +g_file_delete_async () +
+gboolean + +g_file_delete_finish () +
+gboolean + +g_file_trash () +
+void + +g_file_trash_async () +
+gboolean + +g_file_trash_finish () +
+gboolean + +g_file_copy () +
+void + +g_file_copy_async () +
+gboolean + +g_file_copy_finish () +
+gboolean + +g_file_move () +
+gboolean + +g_file_make_directory () +
+void + +g_file_make_directory_async () +
+gboolean + +g_file_make_directory_finish () +
+gboolean + +g_file_make_directory_with_parents () +
+gboolean + +g_file_make_symbolic_link () +
+GFileAttributeInfoList * + +g_file_query_settable_attributes () +
+GFileAttributeInfoList * + +g_file_query_writable_namespaces () +
+gboolean + +g_file_set_attribute () +
+gboolean + +g_file_set_attributes_from_info () +
+void + +g_file_set_attributes_async () +
+gboolean + +g_file_set_attributes_finish () +
+gboolean + +g_file_set_attribute_string () +
+gboolean + +g_file_set_attribute_byte_string () +
+gboolean + +g_file_set_attribute_uint32 () +
+gboolean + +g_file_set_attribute_int32 () +
+gboolean + +g_file_set_attribute_uint64 () +
+gboolean + +g_file_set_attribute_int64 () +
+void + +g_file_mount_mountable () +
+GFile * + +g_file_mount_mountable_finish () +
+void + +g_file_unmount_mountable () +
+gboolean + +g_file_unmount_mountable_finish () +
+void + +g_file_unmount_mountable_with_operation () +
+gboolean + +g_file_unmount_mountable_with_operation_finish () +
+void + +g_file_eject_mountable () +
+gboolean + +g_file_eject_mountable_finish () +
+void + +g_file_eject_mountable_with_operation () +
+gboolean + +g_file_eject_mountable_with_operation_finish () +
+void + +g_file_start_mountable () +
+gboolean + +g_file_start_mountable_finish () +
+void + +g_file_stop_mountable () +
+gboolean + +g_file_stop_mountable_finish () +
+void + +g_file_poll_mountable () +
+gboolean + +g_file_poll_mountable_finish () +
+void + +g_file_mount_enclosing_volume () +
+gboolean + +g_file_mount_enclosing_volume_finish () +
+GFileMonitor * + +g_file_monitor_directory () +
+GFileMonitor * + +g_file_monitor_file () +
+GFileMonitor * + +g_file_monitor () +
+gboolean + +g_file_load_contents () +
+void + +g_file_load_contents_async () +
+gboolean + +g_file_load_contents_finish () +
+void + +g_file_load_partial_contents_async () +
+gboolean + +g_file_load_partial_contents_finish () +
+gboolean + +g_file_replace_contents () +
+void + +g_file_replace_contents_async () +
+void + +g_file_replace_contents_bytes_async () +
+gboolean + +g_file_replace_contents_finish () +
+gboolean + +g_file_copy_attributes () +
+GFileIOStream * + +g_file_create_readwrite () +
+void + +g_file_create_readwrite_async () +
+GFileIOStream * + +g_file_create_readwrite_finish () +
+GFileIOStream * + +g_file_open_readwrite () +
+void + +g_file_open_readwrite_async () +
+GFileIOStream * + +g_file_open_readwrite_finish () +
+GFileIOStream * + +g_file_replace_readwrite () +
+void + +g_file_replace_readwrite_async () +
+GFileIOStream * + +g_file_replace_readwrite_finish () +
+gboolean + +g_file_supports_thread_contexts () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 GFile
structGFileIface
enumGFileQueryInfoFlags
enumGFileCreateFlags
enumGFileCopyFlags
enumGFileMonitorFlags
enumGFileMeasureFlags
enumGFilesystemPreviewType
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GFile
+
+
+
+

Prerequisites

+

+GFile requires + GObject.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GFile is a high level abstraction for manipulating files on a +virtual file system. GFiles are lightweight, immutable objects +that do no I/O upon creation. It is necessary to understand that +GFile objects do not represent files, merely an identifier for a +file. All file content I/O is implemented as streaming operations +(see GInputStream and GOutputStream).

+

To construct a GFile, you can use:

+
    +
  • g_file_new_for_path() if you have a path.

  • +
  • g_file_new_for_uri() if you have a URI.

  • +
  • g_file_new_for_commandline_arg() for a command line argument.

  • +
  • g_file_new_tmp() to create a temporary file from a template.

  • +
  • g_file_parse_name() from a UTF-8 string gotten from g_file_get_parse_name().

  • +
+

One way to think of a GFile is as an abstraction of a pathname. For +normal files the system pathname is what is stored internally, but as +GFiles are extensible it could also be something else that corresponds +to a pathname in a userspace implementation of a filesystem.

+

GFiles make up hierarchies of directories and files that correspond to +the files on a filesystem. You can move through the file system with +GFile using g_file_get_parent() to get an identifier for the parent +directory, g_file_get_child() to get a child within a directory, +g_file_resolve_relative_path() to resolve a relative path between two +GFiles. There can be multiple hierarchies, so you may not end up at +the same root if you repeatedly call g_file_get_parent() on two different +files.

+

All GFiles have a basename (get with g_file_get_basename()). These names +are byte strings that are used to identify the file on the filesystem +(relative to its parent directory) and there is no guarantees that they +have any particular charset encoding or even make any sense at all. If +you want to use filenames in a user interface you should use the display +name that you can get by requesting the +G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME attribute with g_file_query_info(). +This is guaranteed to be in UTF-8 and can be used in a user interface. +But always store the real basename or the GFile to use to actually +access the file, because there is no way to go from a display name to +the actual name.

+

Using GFile as an identifier has the same weaknesses as using a path +in that there may be multiple aliases for the same file. For instance, +hard or soft links may cause two different GFiles to refer to the same +file. Other possible causes for aliases are: case insensitive filesystems, +short and long names on FAT/NTFS, or bind mounts in Linux. If you want to +check if two GFiles point to the same file you can query for the +G_FILE_ATTRIBUTE_ID_FILE attribute. Note that GFile does some trivial +canonicalization of pathnames passed in, so that trivial differences in +the path string used at creation (duplicated slashes, slash at end of +path, "." or ".." path segments, etc) does not create different GFiles.

+

Many GFile operations have both synchronous and asynchronous versions +to suit your application. Asynchronous versions of synchronous functions +simply have _async() appended to their function names. The asynchronous +I/O functions call a GAsyncReadyCallback which is then used to finalize +the operation, producing a GAsyncResult which is then passed to the +function's matching _finish() operation.

+

It is highly recommended to use asynchronous calls when running within a +shared main loop, such as in the main thread of an application. This avoids +I/O operations blocking other sources on the main loop from being dispatched. +Synchronous I/O operations should be performed from worker threads. See the +introduction to asynchronous programming section for +more.

+

Some GFile operations almost always take a noticeable amount of time, and +so do not have synchronous analogs. Notable cases include:

+
    +
  • g_file_mount_mountable() to mount a mountable file.

  • +
  • g_file_unmount_mountable_with_operation() to unmount a mountable file.

  • +
  • g_file_eject_mountable_with_operation() to eject a mountable file.

  • +
+
+

Entity Tags

+

One notable feature of GFiles are entity tags, or "etags" for +short. Entity tags are somewhat like a more abstract version of the +traditional mtime, and can be used to quickly determine if the file +has been modified from the version on the file system. See the +HTTP 1.1 +specification +for HTTP Etag headers, which are a very similar concept.

+
+
+
+

Functions

+
+

GFileProgressCallback ()

+
void
+(*GFileProgressCallback) (goffset current_num_bytes,
+                          goffset total_num_bytes,
+                          gpointer user_data);
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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.

 
+
+
+
+
+

GFileReadMoreCallback ()

+
gboolean
+(*GFileReadMoreCallback) (const char *file_contents,
+                          goffset file_size,
+                          gpointer callback_data);
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file_contents

the data as currently read.

 

file_size

the size of the data currently read.

 

callback_data

data passed to the callback.

 
+
+
+

Returns

+

TRUE if more data should be read back. FALSE otherwise.

+
+
+
+
+

GFileMeasureProgressCallback ()

+
void
+(*GFileMeasureProgressCallback) (gboolean reporting,
+                                 guint64 current_size,
+                                 guint64 num_dirs,
+                                 guint64 num_files,
+                                 gpointer user_data);
+

This callback type is used by g_file_measure_disk_usage() to make +periodic progress reports when measuring the amount of disk spaced +used by a directory.

+

These calls are made on a best-effort basis and not all types of +GFile will support them. At the minimum, however, one call will +always be made immediately.

+

In the case that there is no support, reporting + will be set to +FALSE (and the other values undefined) and no further calls will be +made. Otherwise, the reporting + will be TRUE and the other values +all-zeros during the first (immediate) call. In this way, you can +know which type of progress UI to show without a delay.

+

For g_file_measure_disk_usage() the callback is made directly. For +g_file_measure_disk_usage_async() the callback is made via the +default main context of the calling thread (ie: the same way that the +final async result would be reported).

+

current_size + is in the same units as requested by the operation (see +G_FILE_DISK_USAGE_APPARENT_SIZE).

+

The frequency of the updates is implementation defined, but is +ideally about once every 200ms.

+

The last progress callback may or may not be equal to the final +result. Always check the async result to get the final value.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

reporting

TRUE if more reports will come

 

current_size

the current cumulative size measurement

 

num_dirs

the number of directories visited so far

 

num_files

the number of non-directory files encountered

 

user_data

the data passed to the original request for this callback

 
+
+

Since: 2.38

+
+
+
+

g_file_new_for_path ()

+
GFile *
+g_file_new_for_path (const char *path);
+

Constructs a GFile for a given path. This operation never +fails, but the returned object might not support any I/O +operation if path + is malformed.

+
+

Parameters

+
+++++ + + + + + +

path

a string containing a relative or absolute path. +The string must be encoded in the glib filename encoding.

 
+
+
+

Returns

+

a new GFile for the given path +. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_new_for_uri ()

+
GFile *
+g_file_new_for_uri (const char *uri);
+

Constructs a GFile for a given URI. This operation never +fails, but the returned object might not support any I/O +operation if uri + is malformed or if the uri type is +not supported.

+
+

Parameters

+
+++++ + + + + + +

uri

a UTF-8 string containing a URI

 
+
+
+

Returns

+

a new GFile for the given uri +. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_new_for_commandline_arg ()

+
GFile *
+g_file_new_for_commandline_arg (const char *arg);
+

Creates a GFile with the given argument from the command line. +The value of arg + can be either a URI, an absolute path or a +relative path resolved relative to the current working directory. +This operation never fails, but the returned object might not +support any I/O operation if arg + points to a malformed path.

+

Note that on Windows, this function expects its argument to be in +UTF-8 -- not the system code page. This means that you +should not use this function with string from argv as it is passed +to main(). g_win32_get_command_line() will return a UTF-8 version of +the commandline. GApplication also uses UTF-8 but +g_application_command_line_create_file_for_arg() may be more useful +for you there. It is also always possible to use this function with +GOptionContext arguments of type G_OPTION_ARG_FILENAME.

+
+

Parameters

+
+++++ + + + + + +

arg

a command line string

 
+
+
+

Returns

+

a new GFile. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_new_for_commandline_arg_and_cwd ()

+
GFile *
+g_file_new_for_commandline_arg_and_cwd
+                               (const gchar *arg,
+                                const gchar *cwd);
+

Creates a GFile with the given argument from the command line.

+

This function is similar to g_file_new_for_commandline_arg() except +that it allows for passing the current working directory as an +argument instead of using the current working directory of the +process.

+

This is useful if the commandline argument was given in a context +other than the invocation of the current process.

+

See also g_application_command_line_create_file_for_arg().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

arg

a command line string

 

cwd

the current working directory of the commandline

 
+
+
+

Returns

+

a new GFile.

+

[transfer full]

+
+

Since: 2.36

+
+
+
+

g_file_new_tmp ()

+
GFile *
+g_file_new_tmp (const char *tmpl,
+                GFileIOStream **iostream,
+                GError **error);
+

Opens a file in the preferred directory for temporary files (as +returned by g_get_tmp_dir()) and returns a GFile and +GFileIOStream pointing to it.

+

tmpl + should be a string in the GLib file name encoding +containing a sequence of six 'X' characters, and containing no +directory components. If it is NULL, a default template is used.

+

Unlike the other GFile constructors, this will return NULL if +a temporary file could not be created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

tmpl

Template for the file +name, as in g_file_open_tmp(), or NULL for a default template.

[type filename][allow-none]

iostream

on return, a GFileIOStream for the created file.

[out]

error

a GError, or NULL

 
+
+
+

Returns

+

a new GFile. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_file_parse_name ()

+
GFile *
+g_file_parse_name (const char *parse_name);
+

Constructs a GFile with the given parse_name + (i.e. something +given by g_file_get_parse_name()). This operation never fails, +but the returned object might not support any I/O operation if +the parse_name + cannot be parsed.

+
+

Parameters

+
+++++ + + + + + +

parse_name

a file name or path to be parsed

 
+
+
+

Returns

+

a new GFile.

+

[transfer full]

+
+
+
+
+

g_file_dup ()

+
GFile *
+g_file_dup (GFile *file);
+

Duplicates a GFile handle. This operation does not duplicate +the actual file or directory represented by the GFile; see +g_file_copy() if attempting to copy a file.

+

This call does no blocking I/O.

+
+

Parameters

+
+++++ + + + + + +

file

input GFile

 
+
+
+

Returns

+

a new GFile that is a duplicate +of the given GFile.

+

[transfer full]

+
+
+
+
+

g_file_hash ()

+
guint
+g_file_hash (gconstpointer file);
+

Creates a hash value for a GFile.

+

This call does no blocking I/O.

+

Virtual: hash

+
+

Parameters

+
+++++ + + + + + +

file

gconstpointer to a GFile.

[type GFile]
+
+
+

Returns

+

0 if file +is not a valid GFile, otherwise an +integer that can be used as hash value for the GFile. +This function is intended for easily hashing a GFile to +add to a GHashTable or similar data structure.

+
+
+
+
+

g_file_equal ()

+
gboolean
+g_file_equal (GFile *file1,
+              GFile *file2);
+

Checks if the two given GFiles refer to the same file.

+

Note that two GFiles that differ can still refer to the same +file on the filesystem due to various forms of filename +aliasing.

+

This call does no blocking I/O.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

file1

the first GFile

 

file2

the second GFile

 
+
+
+

Returns

+

TRUE if file1 +and file2 +are equal.

+
+
+
+
+

g_file_get_basename ()

+
char *
+g_file_get_basename (GFile *file);
+

Gets the base name (the last component of the path) for a given GFile.

+

If called for the top level of a system (such as the filesystem root +or a uri like sftp://host/) it will return a single directory separator +(and on Windows, possibly a drive letter).

+

The base name is a byte string (not UTF-8). It has no defined encoding +or rules other than it may not contain zero bytes. If you want to use +filenames in a user interface you should use the display name that you +can get by requesting the G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME +attribute with g_file_query_info().

+

This call does no blocking I/O.

+
+

Parameters

+
+++++ + + + + + +

file

input GFile

 
+
+
+

Returns

+

string containing the GFile's base name, or +NULL if given GFile is invalid. The returned string should be +freed with g_free() when no longer needed.

+

[nullable]

+
+
+
+
+

g_file_get_path ()

+
char *
+g_file_get_path (GFile *file);
+

Gets the local pathname for GFile, if one exists. If non-NULL, this is +guaranteed to be an absolute, canonical path. It might contain symlinks.

+

This call does no blocking I/O.

+
+

Parameters

+
+++++ + + + + + +

file

input GFile

 
+
+
+

Returns

+

string containing the GFile's path, or NULL +if no such path exists. The returned string should be freed +with g_free() when no longer needed.

+

[nullable]

+
+
+
+
+

g_file_get_uri ()

+
char *
+g_file_get_uri (GFile *file);
+

Gets the URI for the file +.

+

This call does no blocking I/O.

+
+

Parameters

+
+++++ + + + + + +

file

input GFile

 
+
+
+

Returns

+

a string containing the GFile's URI. +The returned string should be freed with g_free() +when no longer needed.

+
+
+
+
+

g_file_get_parse_name ()

+
char *
+g_file_get_parse_name (GFile *file);
+

Gets the parse name of the file +. +A parse name is a UTF-8 string that describes the +file such that one can get the GFile back using +g_file_parse_name().

+

This is generally used to show the GFile as a nice +full-pathname kind of string in a user interface, +like in a location entry.

+

For local files with names that can safely be converted +to UTF-8 the pathname is used, otherwise the IRI is used +(a form of URI that allows UTF-8 characters unescaped).

+

This call does no blocking I/O.

+
+

Parameters

+
+++++ + + + + + +

file

input GFile

 
+
+
+

Returns

+

a string containing the GFile's parse name. +The returned string should be freed with g_free() +when no longer needed.

+
+
+
+
+

g_file_get_parent ()

+
GFile *
+g_file_get_parent (GFile *file);
+

Gets the parent directory for the file +. +If the file + represents the root directory of the +file system, then NULL will be returned.

+

This call does no blocking I/O.

+
+

Parameters

+
+++++ + + + + + +

file

input GFile

 
+
+
+

Returns

+

a GFile structure to the +parent of the given GFile or NULL if there is no parent. Free +the returned object with g_object_unref().

+

[nullable][transfer full]

+
+
+
+
+

g_file_has_parent ()

+
gboolean
+g_file_has_parent (GFile *file,
+                   GFile *parent);
+

Checks if file + has a parent, and optionally, if it is parent +.

+

If parent + is NULL then this function returns TRUE if file + has any +parent at all. If parent + is non-NULL then TRUE is only returned +if file + is an immediate child of parent +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

file

input GFile

 

parent

the parent to check for, or NULL.

[allow-none]
+
+
+

Returns

+

TRUE if file +is an immediate child of parent +(or any parent in +the case that parent +is NULL).

+
+

Since: 2.24

+
+
+
+

g_file_get_child ()

+
GFile *
+g_file_get_child (GFile *file,
+                  const char *name);
+

Gets a child of file + with basename equal to name +.

+

Note that the file with that specific name might not exist, but +you can still have a GFile that points to it. You can use this +for instance to create that file.

+

This call does no blocking I/O.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

file

input GFile

 

name

string containing the child's basename

 
+
+
+

Returns

+

a GFile to a child specified by name +. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_get_child_for_display_name ()

+
GFile *
+g_file_get_child_for_display_name (GFile *file,
+                                   const char *display_name,
+                                   GError **error);
+

Gets the child of file + for a given display_name + (i.e. a UTF-8 +version of the name). If this function fails, it returns NULL +and error + will be set. This is very useful when constructing a +GFile for a new file and the user entered the filename in the +user interface, for instance when you select a directory and +type a filename in the file selector.

+

This call does no blocking I/O.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

display_name

string to a possible child

 

error

return location for an error

 
+
+
+

Returns

+

a GFile to the specified child, or +NULL if the display name couldn't be converted. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_has_prefix ()

+
gboolean
+g_file_has_prefix (GFile *file,
+                   GFile *prefix);
+

Checks whether file + has the prefix specified by prefix +.

+

In other words, if the names of initial elements of file +'s +pathname match prefix +. Only full pathname elements are matched, +so a path like /foo is not considered a prefix of /foobar, only +of /foo/bar.

+

A GFile is not a prefix of itself. If you want to check for +equality, use g_file_equal().

+

This call does no I/O, as it works purely on names. As such it can +sometimes return FALSE even if file + is inside a prefix + (from a +filesystem point of view), because the prefix of file + is an alias +of prefix +.

+

Virtual: prefix_matches

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

file

input GFile

 

prefix

input GFile

 
+
+
+

Returns

+

TRUE if the files +'s parent, grandparent, etc is prefix +, +FALSE otherwise.

+
+
+
+
+

g_file_get_relative_path ()

+
char *
+g_file_get_relative_path (GFile *parent,
+                          GFile *descendant);
+

Gets the path for descendant + relative to parent +.

+

This call does no blocking I/O.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

parent

input GFile

 

descendant

input GFile

 
+
+
+

Returns

+

string with the relative path from descendant +to parent +, or NULL if descendant +doesn't have parent +as +prefix. The returned string should be freed with g_free() when +no longer needed.

+

[nullable]

+
+
+
+
+

g_file_resolve_relative_path ()

+
GFile *
+g_file_resolve_relative_path (GFile *file,
+                              const char *relative_path);
+

Resolves a relative path for file + to an absolute path.

+

This call does no blocking I/O.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

file

input GFile

 

relative_path

a given relative path string

 
+
+
+

Returns

+

GFile to the resolved path. +NULL if relative_path +is NULL or if file +is invalid. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_is_native ()

+
gboolean
+g_file_is_native (GFile *file);
+

Checks to see if a file is native to the platform.

+

A native file s one expressed in the platform-native filename format, +e.g. "C:\Windows" or "/usr/bin/". This does not mean the file is local, +as it might be on a locally mounted remote filesystem.

+

On some systems non-native files may be available using the native +filesystem via a userspace filesystem (FUSE), in these cases this call +will return FALSE, but g_file_get_path() will still return a native path.

+

This call does no blocking I/O.

+
+

Parameters

+
+++++ + + + + + +

file

input GFile

 
+
+
+

Returns

+

TRUE if file +is native

+
+
+
+
+

g_file_has_uri_scheme ()

+
gboolean
+g_file_has_uri_scheme (GFile *file,
+                       const char *uri_scheme);
+

Checks to see if a GFile has a given URI scheme.

+

This call does no blocking I/O.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

file

input GFile

 

uri_scheme

a string containing a URI scheme

 
+
+
+

Returns

+

TRUE if GFile's backend supports the +given URI scheme, FALSE if URI scheme is NULL, +not supported, or GFile is invalid.

+
+
+
+
+

g_file_get_uri_scheme ()

+
char *
+g_file_get_uri_scheme (GFile *file);
+

Gets the URI scheme for a GFile. +RFC 3986 decodes the scheme as:

+
+ + + + + + + +
1
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
+
+ +

+Common schemes include "file", "http", "ftp", etc.

+

This call does no blocking I/O.

+
+

Parameters

+
+++++ + + + + + +

file

input GFile

 
+
+
+

Returns

+

a string containing the URI scheme for the given +GFile. The returned string should be freed with g_free() +when no longer needed.

+
+
+
+
+

g_file_read ()

+
GFileInputStream *
+g_file_read (GFile *file,
+             GCancellable *cancellable,
+             GError **error);
+

Opens a file for reading. The result is a GFileInputStream that +can be used to read the contents of the file.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

If the file does not exist, the G_IO_ERROR_NOT_FOUND error will be +returned. If the file is a directory, the G_IO_ERROR_IS_DIRECTORY +error will be returned. Other errors are possible too, and depend +on what kind of filesystem the file is on.

+

Virtual: read_fn

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

GFile to read

 

cancellable

a GCancellable.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

GFileInputStream or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_read_async ()

+
void
+g_file_read_async (GFile *file,
+                   int io_priority,
+                   GCancellable *cancellable,
+                   GAsyncReadyCallback callback,
+                   gpointer user_data);
+

Asynchronously opens file + for reading.

+

For more details, see g_file_read() which is +the synchronous version of this call.

+

When the operation is finished, callback + will be called. +You can then call g_file_read_finish() to get the result +of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_file_read_finish ()

+
GFileInputStream *
+g_file_read_finish (GFile *file,
+                    GAsyncResult *res,
+                    GError **error);
+

Finishes an asynchronous file read operation started with +g_file_read_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

res

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

a GFileInputStream or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_append_to ()

+
GFileOutputStream *
+g_file_append_to (GFile *file,
+                  GFileCreateFlags flags,
+                  GCancellable *cancellable,
+                  GError **error);
+

Gets an output stream for appending data to the file. +If the file doesn't already exist it is created.

+

By default files created are generally readable by everyone, +but if you pass G_FILE_CREATE_PRIVATE in flags + the file +will be made readable only to the current user, to the level that +is supported on the target filesystem.

+

If cancellable + is not NULL, then the operation can be cancelled +by triggering the cancellable object from another thread. If the +operation was cancelled, the error G_IO_ERROR_CANCELLED will be +returned.

+

Some file systems don't allow all file names, and may return an +G_IO_ERROR_INVALID_FILENAME error. If the file is a directory the +G_IO_ERROR_IS_DIRECTORY error will be returned. Other errors are +possible too, and depend on what kind of filesystem the file is on.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

a set of GFileCreateFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

a GFileOutputStream, or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_create ()

+
GFileOutputStream *
+g_file_create (GFile *file,
+               GFileCreateFlags flags,
+               GCancellable *cancellable,
+               GError **error);
+

Creates a new file and returns an output stream for writing to it. +The file must not already exist.

+

By default files created are generally readable by everyone, +but if you pass G_FILE_CREATE_PRIVATE in flags + the file +will be made readable only to the current user, to the level +that is supported on the target filesystem.

+

If cancellable + is not NULL, then the operation can be cancelled +by triggering the cancellable object from another thread. If the +operation was cancelled, the error G_IO_ERROR_CANCELLED will be +returned.

+

If a file or directory with this name already exists the +G_IO_ERROR_EXISTS error will be returned. Some file systems don't +allow all file names, and may return an G_IO_ERROR_INVALID_FILENAME +error, and if the name is to long G_IO_ERROR_FILENAME_TOO_LONG will +be returned. Other errors are possible too, and depend on what kind +of filesystem the file is on.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

a set of GFileCreateFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

a GFileOutputStream for the newly created +file, or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_replace ()

+
GFileOutputStream *
+g_file_replace (GFile *file,
+                const char *etag,
+                gboolean make_backup,
+                GFileCreateFlags flags,
+                GCancellable *cancellable,
+                GError **error);
+

Returns an output stream for overwriting the file, possibly +creating a backup copy of the file first. If the file doesn't exist, +it will be created.

+

This will try to replace the file in the safest way possible so +that any errors during the writing will not affect an already +existing copy of the file. For instance, for local files it +may write to a temporary file and then atomically rename over +the destination when the stream is closed.

+

By default files created are generally readable by everyone, +but if you pass G_FILE_CREATE_PRIVATE in flags + the file +will be made readable only to the current user, to the level that +is supported on the target filesystem.

+

If cancellable + is not NULL, then the operation can be cancelled +by triggering the cancellable object from another thread. If the +operation was cancelled, the error G_IO_ERROR_CANCELLED will be +returned.

+

If you pass in a non-NULL etag + value and file + already exists, then +this value is compared to the current entity tag of the file, and if +they differ an G_IO_ERROR_WRONG_ETAG error is returned. This +generally means that the file has been changed since you last read +it. You can get the new etag from g_file_output_stream_get_etag() +after you've finished writing and closed the GFileOutputStream. When +you load a new file you can use g_file_input_stream_query_info() to +get the etag of the file.

+

If make_backup + is TRUE, this function will attempt to make a +backup of the current file before overwriting it. If this fails +a G_IO_ERROR_CANT_CREATE_BACKUP error will be returned. If you +want to replace anyway, try again with make_backup + set to FALSE.

+

If the file is a directory the G_IO_ERROR_IS_DIRECTORY error will +be returned, and if the file is some other form of non-regular file +then a G_IO_ERROR_NOT_REGULAR_FILE error will be returned. Some +file systems don't allow all file names, and may return an +G_IO_ERROR_INVALID_FILENAME error, and if the name is to long +G_IO_ERROR_FILENAME_TOO_LONG will be returned. Other errors are +possible too, and depend on what kind of filesystem the file is on.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

etag

an optional entity tag +for the current GFile, or NULL to ignore.

[allow-none]

make_backup

TRUE if a backup should be created

 

flags

a set of GFileCreateFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

a GFileOutputStream or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_append_to_async ()

+
void
+g_file_append_to_async (GFile *file,
+                        GFileCreateFlags flags,
+                        int io_priority,
+                        GCancellable *cancellable,
+                        GAsyncReadyCallback callback,
+                        gpointer user_data);
+

Asynchronously opens file + for appending.

+

For more details, see g_file_append_to() which is +the synchronous version of this call.

+

When the operation is finished, callback + will be called. +You can then call g_file_append_to_finish() to get the result +of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

a set of GFileCreateFlags

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_file_append_to_finish ()

+
GFileOutputStream *
+g_file_append_to_finish (GFile *file,
+                         GAsyncResult *res,
+                         GError **error);
+

Finishes an asynchronous file append operation started with +g_file_append_to_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

res

GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

a valid GFileOutputStream +or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_create_async ()

+
void
+g_file_create_async (GFile *file,
+                     GFileCreateFlags flags,
+                     int io_priority,
+                     GCancellable *cancellable,
+                     GAsyncReadyCallback callback,
+                     gpointer user_data);
+

Asynchronously creates a new file and returns an output stream +for writing to it. The file must not already exist.

+

For more details, see g_file_create() which is +the synchronous version of this call.

+

When the operation is finished, callback + will be called. +You can then call g_file_create_finish() to get the result +of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

a set of GFileCreateFlags

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_file_create_finish ()

+
GFileOutputStream *
+g_file_create_finish (GFile *file,
+                      GAsyncResult *res,
+                      GError **error);
+

Finishes an asynchronous file create operation started with +g_file_create_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

res

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

a GFileOutputStream or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_replace_async ()

+
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);
+

Asynchronously overwrites the file, replacing the contents, +possibly creating a backup copy of the file first.

+

For more details, see g_file_replace() which is +the synchronous version of this call.

+

When the operation is finished, callback + will be called. +You can then call g_file_replace_finish() to get the result +of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

etag

an entity tag for the current GFile, +or NULL to ignore.

[allow-none]

make_backup

TRUE if a backup should be created

 

flags

a set of GFileCreateFlags

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_file_replace_finish ()

+
GFileOutputStream *
+g_file_replace_finish (GFile *file,
+                       GAsyncResult *res,
+                       GError **error);
+

Finishes an asynchronous file replace operation started with +g_file_replace_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

res

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

a GFileOutputStream, or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_query_info ()

+
GFileInfo *
+g_file_query_info (GFile *file,
+                   const char *attributes,
+                   GFileQueryInfoFlags flags,
+                   GCancellable *cancellable,
+                   GError **error);
+

Gets the requested information about specified file +. +The result is a GFileInfo object that contains key-value +attributes (such as the type or size of the file).

+

The attributes + value is a string that specifies the file +attributes that should be gathered. It is not an error if +it's not possible to read a particular requested attribute +from a file - it just won't be set. attributes + should be a +comma-separated list of attributes or attribute wildcards. +The wildcard "*" means all attributes, and a wildcard like +"standard::*" means all attributes in the standard namespace. +An example attribute query be "standard::*,owner::user". +The standard attributes are available as defines, like +G_FILE_ATTRIBUTE_STANDARD_NAME.

+

If cancellable + is not NULL, then the operation can be cancelled +by triggering the cancellable object from another thread. If the +operation was cancelled, the error G_IO_ERROR_CANCELLED will be +returned.

+

For symlinks, normally the information about the target of the +symlink is returned, rather than information about the symlink +itself. However if you pass G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS +in flags + the information about the symlink itself will be returned. +Also, for symlinks that point to non-existing files the information +about the symlink itself will be returned.

+

If the file does not exist, the G_IO_ERROR_NOT_FOUND error will be +returned. Other errors are possible too, and depend on what kind of +filesystem the file is on.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

attributes

an attribute query string

 

flags

a set of GFileQueryInfoFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError

 
+
+
+

Returns

+

a GFileInfo for the given file +, or NULL +on error. Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_query_info_async ()

+
void
+g_file_query_info_async (GFile *file,
+                         const char *attributes,
+                         GFileQueryInfoFlags flags,
+                         int io_priority,
+                         GCancellable *cancellable,
+                         GAsyncReadyCallback callback,
+                         gpointer user_data);
+

Asynchronously gets the requested information about specified file +. +The result is a GFileInfo object that contains key-value attributes +(such as type or size for the file).

+

For more details, see g_file_query_info() which is the synchronous +version of this call.

+

When the operation is finished, callback + will be called. You can +then call g_file_query_info_finish() to get the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

attributes

an attribute query string

 

flags

a set of GFileQueryInfoFlags

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call when the +request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_file_query_info_finish ()

+
GFileInfo *
+g_file_query_info_finish (GFile *file,
+                          GAsyncResult *res,
+                          GError **error);
+

Finishes an asynchronous file info query. +See g_file_query_info_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

res

a GAsyncResult

 

error

a GError

 
+
+
+

Returns

+

GFileInfo for given file +or NULL on error. Free the returned object with +g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_query_exists ()

+
gboolean
+g_file_query_exists (GFile *file,
+                     GCancellable *cancellable);
+

Utility function to check if a particular file exists. This is +implemented using g_file_query_info() and as such does blocking I/O.

+

Note that in many cases it is racy to first check for file existence +and then execute something based on the outcome of that, because the +file might have been created or removed in between the operations. The +general approach to handling that is to not check, but just do the +operation and handle the errors as they come.

+

As an example of race-free checking, take the case of reading a file, +and if it doesn't exist, creating it. There are two racy versions: read +it, and on error create it; and: check if it exists, if not create it. +These can both result in two processes creating the file (with perhaps +a partially written file as the result). The correct approach is to +always try to create the file with g_file_create() which will either +atomically create the file or fail with a G_IO_ERROR_EXISTS error.

+

However, in many cases an existence check is useful in a user interface, +for instance to make a menu item sensitive/insensitive, so that you don't +have to fool users that something is possible and then just show an error +dialog. If you do this, you should make sure to also handle the errors +that can happen due to races when you execute the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

file

input GFile

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]
+
+
+

Returns

+

TRUE if the file exists (and can be detected without error), +FALSE otherwise (or if cancelled).

+
+
+
+
+

g_file_query_file_type ()

+
GFileType
+g_file_query_file_type (GFile *file,
+                        GFileQueryInfoFlags flags,
+                        GCancellable *cancellable);
+

Utility function to inspect the GFileType of a file. This is +implemented using g_file_query_info() and as such does blocking I/O.

+

The primary use case of this method is to check if a file is +a regular file, directory, or symlink.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

a set of GFileQueryInfoFlags passed to g_file_query_info()

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]
+
+
+

Returns

+

The GFileType of the file and G_FILE_TYPE_UNKNOWN +if the file does not exist

+
+

Since: 2.18

+
+
+
+

g_file_query_filesystem_info ()

+
GFileInfo *
+g_file_query_filesystem_info (GFile *file,
+                              const char *attributes,
+                              GCancellable *cancellable,
+                              GError **error);
+

Similar to g_file_query_info(), but obtains information +about the filesystem the file + is on, rather than the file itself. +For instance the amount of space available and the type of +the filesystem.

+

The attributes + value is a string that specifies the attributes +that should be gathered. It is not an error if it's not possible +to read a particular requested attribute from a file - it just +won't be set. attributes + should be a comma-separated list of +attributes or attribute wildcards. The wildcard "*" means all +attributes, and a wildcard like "filesystem::*" means all attributes +in the filesystem namespace. The standard namespace for filesystem +attributes is "filesystem". Common attributes of interest are +G_FILE_ATTRIBUTE_FILESYSTEM_SIZE (the total size of the filesystem +in bytes), G_FILE_ATTRIBUTE_FILESYSTEM_FREE (number of bytes available), +and G_FILE_ATTRIBUTE_FILESYSTEM_TYPE (type of the filesystem).

+

If cancellable + is not NULL, then the operation can be cancelled +by triggering the cancellable object from another thread. If the +operation was cancelled, the error G_IO_ERROR_CANCELLED will be +returned.

+

If the file does not exist, the G_IO_ERROR_NOT_FOUND error will +be returned. Other errors are possible too, and depend on what +kind of filesystem the file is on.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

attributes

an attribute query string

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError

 
+
+
+

Returns

+

a GFileInfo or NULL if there was an error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_query_filesystem_info_async ()

+
void
+g_file_query_filesystem_info_async (GFile *file,
+                                    const char *attributes,
+                                    int io_priority,
+                                    GCancellable *cancellable,
+                                    GAsyncReadyCallback callback,
+                                    gpointer user_data);
+

Asynchronously gets the requested information about the filesystem +that the specified file + is on. The result is a GFileInfo object +that contains key-value attributes (such as type or size for the +file).

+

For more details, see g_file_query_filesystem_info() which is the +synchronous version of this call.

+

When the operation is finished, callback + will be called. You can +then call g_file_query_info_finish() to get the result of the +operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

attributes

an attribute query string

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_file_query_filesystem_info_finish ()

+
GFileInfo *
+g_file_query_filesystem_info_finish (GFile *file,
+                                     GAsyncResult *res,
+                                     GError **error);
+

Finishes an asynchronous filesystem info query. +See g_file_query_filesystem_info_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

res

a GAsyncResult

 

error

a GError

 
+
+
+

Returns

+

GFileInfo for given file +or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_query_default_handler ()

+
GAppInfo *
+g_file_query_default_handler (GFile *file,
+                              GCancellable *cancellable,
+                              GError **error);
+

Returns the GAppInfo that is registered as the default +application to handle the file specified by file +.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

a GFile to open

 

cancellable

optional GCancellable object, NULL to ignore

 

error

a GError, or NULL

 
+
+
+

Returns

+

a GAppInfo if the handle was found, +NULL if there were errors. +When you are done with it, release it with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_measure_disk_usage ()

+
gboolean
+g_file_measure_disk_usage (GFile *file,
+                           GFileMeasureFlags flags,
+                           GCancellable *cancellable,
+                           GFileMeasureProgressCallback progress_callback,
+                           gpointer progress_data,
+                           guint64 *disk_usage,
+                           guint64 *num_dirs,
+                           guint64 *num_files,
+                           GError **error);
+

Recursively measures the disk usage of file +.

+

This is essentially an analog of the 'du' command, but it also +reports the number of directories and non-directory files encountered +(including things like symbolic links).

+

By default, errors are only reported against the toplevel file +itself. Errors found while recursing are silently ignored, unless +G_FILE_DISK_USAGE_REPORT_ALL_ERRORS is given in flags +.

+

The returned size, disk_usage +, is in bytes and should be formatted +with g_format_size() in order to get something reasonable for showing +in a user interface.

+

progress_callback + and progress_data + can be given to request +periodic progress updates while scanning. See the documentation for +GFileMeasureProgressCallback for information about when and how the +callback will be invoked.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

a GFile

 

flags

GFileMeasureFlags

 

cancellable

optional GCancellable.

[allow-none]

progress_callback

a GFileMeasureProgressCallback.

[allow-none]

progress_data

user_data for progress_callback +

 

disk_usage

the number of bytes of disk space used.

[allow-none][out]

num_dirs

the number of directories encountered.

[allow-none][out]

num_files

the number of non-directories encountered.

[allow-none][out]

error

NULL, or a pointer to a NULL GError pointer.

[allow-none]
+
+
+

Returns

+

TRUE if successful, with the out parameters set. +FALSE otherwise, with error +set.

+
+

Since: 2.38

+
+
+
+

g_file_measure_disk_usage_async ()

+
void
+g_file_measure_disk_usage_async (GFile *file,
+                                 GFileMeasureFlags flags,
+                                 gint io_priority,
+                                 GCancellable *cancellable,
+                                 GFileMeasureProgressCallback progress_callback,
+                                 gpointer progress_data,
+                                 GAsyncReadyCallback callback,
+                                 gpointer user_data);
+

Recursively measures the disk usage of file +.

+

This is the asynchronous version of g_file_measure_disk_usage(). See +there for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

a GFile

 

flags

GFileMeasureFlags

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable.

[allow-none]

progress_callback

a GFileMeasureProgressCallback.

[allow-none]

progress_data

user_data for progress_callback +

 

callback

a GAsyncReadyCallback to call when complete.

[allow-none]

user_data

the data to pass to callback function

 
+
+

Since: 2.38

+
+
+
+

g_file_measure_disk_usage_finish ()

+
gboolean
+g_file_measure_disk_usage_finish (GFile *file,
+                                  GAsyncResult *result,
+                                  guint64 *disk_usage,
+                                  guint64 *num_dirs,
+                                  guint64 *num_files,
+                                  GError **error);
+

Collects the results from an earlier call to +g_file_measure_disk_usage_async(). See g_file_measure_disk_usage() for +more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

a GFile

 

result

the GAsyncResult passed to your GAsyncReadyCallback

 

disk_usage

the number of bytes of disk space used.

[allow-none][out]

num_dirs

the number of directories encountered.

[allow-none][out]

num_files

the number of non-directories encountered.

[allow-none][out]

error

NULL, or a pointer to a NULL GError pointer.

[allow-none]
+
+
+

Returns

+

TRUE if successful, with the out parameters set. +FALSE otherwise, with error +set.

+
+

Since: 2.38

+
+
+
+

g_file_find_enclosing_mount ()

+
GMount *
+g_file_find_enclosing_mount (GFile *file,
+                             GCancellable *cancellable,
+                             GError **error);
+

Gets a GMount for the GFile.

+

If the GFileIface for file + does not have a mount (e.g. +possibly a remote share), error + will be set to G_IO_ERROR_NOT_FOUND +and NULL will be returned.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError

 
+
+
+

Returns

+

a GMount where the file +is located +or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_find_enclosing_mount_async ()

+
void
+g_file_find_enclosing_mount_async (GFile *file,
+                                   int io_priority,
+                                   GCancellable *cancellable,
+                                   GAsyncReadyCallback callback,
+                                   gpointer user_data);
+

Asynchronously gets the mount for the file.

+

For more details, see g_file_find_enclosing_mount() which is +the synchronous version of this call.

+

When the operation is finished, callback + will be called. +You can then call g_file_find_enclosing_mount_finish() to +get the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

a GFile

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_file_find_enclosing_mount_finish ()

+
GMount *
+g_file_find_enclosing_mount_finish (GFile *file,
+                                    GAsyncResult *res,
+                                    GError **error);
+

Finishes an asynchronous find mount request. +See g_file_find_enclosing_mount_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

a GFile

 

res

a GAsyncResult

 

error

a GError

 
+
+
+

Returns

+

GMount for given file +or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_enumerate_children ()

+
GFileEnumerator *
+g_file_enumerate_children (GFile *file,
+                           const char *attributes,
+                           GFileQueryInfoFlags flags,
+                           GCancellable *cancellable,
+                           GError **error);
+

Gets the requested information about the files in a directory. +The result is a GFileEnumerator object that will give out +GFileInfo objects for all the files in the directory.

+

The attributes + value is a string that specifies the file +attributes that should be gathered. It is not an error if +it's not possible to read a particular requested attribute +from a file - it just won't be set. attributes + should +be a comma-separated list of attributes or attribute wildcards. +The wildcard "*" means all attributes, and a wildcard like +"standard::*" means all attributes in the standard namespace. +An example attribute query be "standard::*,owner::user". +The standard attributes are available as defines, like +G_FILE_ATTRIBUTE_STANDARD_NAME.

+

If cancellable + is not NULL, then the operation can be cancelled +by triggering the cancellable object from another thread. If the +operation was cancelled, the error G_IO_ERROR_CANCELLED will be +returned.

+

If the file does not exist, the G_IO_ERROR_NOT_FOUND error will +be returned. If the file is not a directory, the G_IO_ERROR_NOT_DIRECTORY +error will be returned. Other errors are possible too.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

attributes

an attribute query string

 

flags

a set of GFileQueryInfoFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

GError for error reporting

 
+
+
+

Returns

+

A GFileEnumerator if successful, +NULL on error. Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_enumerate_children_async ()

+
void
+g_file_enumerate_children_async (GFile *file,
+                                 const char *attributes,
+                                 GFileQueryInfoFlags flags,
+                                 int io_priority,
+                                 GCancellable *cancellable,
+                                 GAsyncReadyCallback callback,
+                                 gpointer user_data);
+

Asynchronously gets the requested information about the files +in a directory. The result is a GFileEnumerator object that will +give out GFileInfo objects for all the files in the directory.

+

For more details, see g_file_enumerate_children() which is +the synchronous version of this call.

+

When the operation is finished, callback + will be called. You can +then call g_file_enumerate_children_finish() to get the result of +the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

attributes

an attribute query string

 

flags

a set of GFileQueryInfoFlags

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call when the +request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_file_enumerate_children_finish ()

+
GFileEnumerator *
+g_file_enumerate_children_finish (GFile *file,
+                                  GAsyncResult *res,
+                                  GError **error);
+

Finishes an async enumerate children operation. +See g_file_enumerate_children_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

res

a GAsyncResult

 

error

a GError

 
+
+
+

Returns

+

a GFileEnumerator or NULL +if an error occurred. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_set_display_name ()

+
GFile *
+g_file_set_display_name (GFile *file,
+                         const char *display_name,
+                         GCancellable *cancellable,
+                         GError **error);
+

Renames file + to the specified display name.

+

The display name is converted from UTF-8 to the correct encoding +for the target filesystem if possible and the file + is renamed to this.

+

If you want to implement a rename operation in the user interface the +edit name (G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME) should be used as the +initial value in the rename widget, and then the result after editing +should be passed to g_file_set_display_name().

+

On success the resulting converted filename is returned.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

display_name

a string

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

a GFile specifying what file +was renamed to, +or NULL if there was an error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_set_display_name_async ()

+
void
+g_file_set_display_name_async (GFile *file,
+                               const char *display_name,
+                               int io_priority,
+                               GCancellable *cancellable,
+                               GAsyncReadyCallback callback,
+                               gpointer user_data);
+

Asynchronously sets the display name for a given GFile.

+

For more details, see g_file_set_display_name() which is +the synchronous version of this call.

+

When the operation is finished, callback + will be called. +You can then call g_file_set_display_name_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

display_name

a string

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_file_set_display_name_finish ()

+
GFile *
+g_file_set_display_name_finish (GFile *file,
+                                GAsyncResult *res,
+                                GError **error);
+

Finishes setting a display name started with +g_file_set_display_name_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

res

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

a GFile or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_delete ()

+
gboolean
+g_file_delete (GFile *file,
+               GCancellable *cancellable,
+               GError **error);
+

Deletes a file. If the file + is a directory, it will only be +deleted if it is empty. This has the same semantics as g_unlink().

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

Virtual: delete_file

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the file was deleted. FALSE otherwise.

+
+
+
+
+

g_file_delete_async ()

+
void
+g_file_delete_async (GFile *file,
+                     int io_priority,
+                     GCancellable *cancellable,
+                     GAsyncReadyCallback callback,
+                     gpointer user_data);
+

Asynchronously delete a file. If the file + is a directory, it will +only be deleted if it is empty. This has the same semantics as +g_unlink().

+

Virtual: delete_file_async

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied

 

user_data

the data to pass to callback function

 
+
+

Since: 2.34

+
+
+
+

g_file_delete_finish ()

+
gboolean
+g_file_delete_finish (GFile *file,
+                      GAsyncResult *result,
+                      GError **error);
+

Finishes deleting a file started with g_file_delete_async().

+

Virtual: delete_file_finish

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

result

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the file was deleted. FALSE otherwise.

+
+

Since: 2.34

+
+
+
+

g_file_trash ()

+
gboolean
+g_file_trash (GFile *file,
+              GCancellable *cancellable,
+              GError **error);
+

Sends file + to the "Trashcan", if possible. This is similar to +deleting it, but the user can recover it before emptying the trashcan. +Not all file systems support trashing, so this call can return the +G_IO_ERROR_NOT_SUPPORTED error.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

Virtual: trash

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

GFile to send to trash

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE on successful trash, FALSE otherwise.

+
+
+
+
+

g_file_trash_async ()

+
void
+g_file_trash_async (GFile *file,
+                    int io_priority,
+                    GCancellable *cancellable,
+                    GAsyncReadyCallback callback,
+                    gpointer user_data);
+

Asynchronously sends file + to the Trash location, if possible.

+

Virtual: trash_async

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied

 

user_data

the data to pass to callback function

 
+
+

Since: 2.38

+
+
+
+

g_file_trash_finish ()

+
gboolean
+g_file_trash_finish (GFile *file,
+                     GAsyncResult *result,
+                     GError **error);
+

Finishes an asynchronous file trashing operation, started with +g_file_trash_async().

+

Virtual: trash_finish

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

result

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE on successful trash, FALSE otherwise.

+
+

Since: 2.38

+
+
+
+

g_file_copy ()

+
gboolean
+g_file_copy (GFile *source,
+             GFile *destination,
+             GFileCopyFlags flags,
+             GCancellable *cancellable,
+             GFileProgressCallback progress_callback,
+             gpointer progress_callback_data,
+             GError **error);
+

Copies the file source + to the location specified by destination +. +Can not handle recursive copies of directories.

+

If the flag G_FILE_COPY_OVERWRITE is specified an already +existing destination + file is overwritten.

+

If the flag G_FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks +will be copied as symlinks, otherwise the target of the +source + symlink will be copied.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

If progress_callback + is not NULL, then the operation can be monitored +by setting this to a GFileProgressCallback function. +progress_callback_data + will be passed to this function. It is guaranteed +that this callback will be called after all data has been transferred with +the total number of bytes copied during the operation.

+

If the source + file does not exist, then the G_IO_ERROR_NOT_FOUND error +is returned, independent on the status of the destination +.

+

If G_FILE_COPY_OVERWRITE is not specified and the target exists, then +the error G_IO_ERROR_EXISTS is returned.

+

If trying to overwrite a file over a directory, the G_IO_ERROR_IS_DIRECTORY +error is returned. If trying to overwrite a directory with a directory the +G_IO_ERROR_WOULD_MERGE error is returned.

+

If the source is a directory and the target does not exist, or +G_FILE_COPY_OVERWRITE is specified and the target is a file, then the +G_IO_ERROR_WOULD_RECURSE error is returned.

+

If you are interested in copying the GFile object itself (not the on-disk +file), see g_file_dup().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

source

input GFile

 

destination

destination GFile

 

flags

set of GFileCopyFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

progress_callback

function to callback with +progress information, or NULL if progress information is not needed.

[allow-none][scope call]

progress_callback_data

user data to pass to progress_callback +.

[closure]

error

GError to set on error, or NULL

 
+
+
+

Returns

+

TRUE on success, FALSE otherwise.

+
+
+
+
+

g_file_copy_async ()

+
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);
+

Copies the file source + to the location specified by destination + +asynchronously. For details of the behaviour, see g_file_copy().

+

If progress_callback + is not NULL, then that function that will be called +just like in g_file_copy(). The callback will run in the default main context +of the thread calling g_file_copy_async() — the same context as callback + is +run in.

+

When the operation is finished, callback + will be called. You can then call +g_file_copy_finish() to get the result of the operation.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

source

input GFile

 

destination

destination GFile

 

flags

set of GFileCopyFlags

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

progress_callback

function to callback with progress +information, or NULL if progress information is not needed.

[allow-none]

progress_callback_data

user data to pass to progress_callback +.

[closure]

callback

a GAsyncReadyCallback to call when the request is satisfied

 

user_data

the data to pass to callback function

 
+
+
+
+
+

g_file_copy_finish ()

+
gboolean
+g_file_copy_finish (GFile *file,
+                    GAsyncResult *res,
+                    GError **error);
+

Finishes copying the file started with g_file_copy_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

res

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

a TRUE on success, FALSE on error.

+
+
+
+
+

g_file_move ()

+
gboolean
+g_file_move (GFile *source,
+             GFile *destination,
+             GFileCopyFlags flags,
+             GCancellable *cancellable,
+             GFileProgressCallback progress_callback,
+             gpointer progress_callback_data,
+             GError **error);
+

Tries to move the file or directory source + to the location specified +by destination +. If native move operations are supported then this is +used, otherwise a copy + delete fallback is used. The native +implementation may support moving directories (for instance on moves +inside the same filesystem), but the fallback code does not.

+

If the flag G_FILE_COPY_OVERWRITE is specified an already +existing destination + file is overwritten.

+

If the flag G_FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks +will be copied as symlinks, otherwise the target of the +source + symlink will be copied.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

If progress_callback + is not NULL, then the operation can be monitored +by setting this to a GFileProgressCallback function. +progress_callback_data + will be passed to this function. It is +guaranteed that this callback will be called after all data has been +transferred with the total number of bytes copied during the operation.

+

If the source + file does not exist, then the G_IO_ERROR_NOT_FOUND +error is returned, independent on the status of the destination +.

+

If G_FILE_COPY_OVERWRITE is not specified and the target exists, +then the error G_IO_ERROR_EXISTS is returned.

+

If trying to overwrite a file over a directory, the G_IO_ERROR_IS_DIRECTORY +error is returned. If trying to overwrite a directory with a directory the +G_IO_ERROR_WOULD_MERGE error is returned.

+

If the source is a directory and the target does not exist, or +G_FILE_COPY_OVERWRITE is specified and the target is a file, then +the G_IO_ERROR_WOULD_RECURSE error may be returned (if the native +move operation isn't available).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

source

GFile pointing to the source location

 

destination

GFile pointing to the destination location

 

flags

set of GFileCopyFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

progress_callback

GFileProgressCallback +function for updates.

[allow-none][scope call]

progress_callback_data

gpointer to user data for +the callback function.

[closure]

error

GError for returning error conditions, or NULL

 
+
+
+

Returns

+

TRUE on successful move, FALSE otherwise.

+
+
+
+
+

g_file_make_directory ()

+
gboolean
+g_file_make_directory (GFile *file,
+                       GCancellable *cancellable,
+                       GError **error);
+

Creates a directory. Note that this will only create a child directory +of the immediate parent directory of the path or URI given by the GFile. +To recursively create directories, see g_file_make_directory_with_parents(). +This function will fail if the parent directory does not exist, setting +error + to G_IO_ERROR_NOT_FOUND. If the file system doesn't support +creating directories, this function will fail, setting error + to +G_IO_ERROR_NOT_SUPPORTED.

+

For a local GFile the newly created directory will have the default +(current) ownership and permissions of the current process.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE on successful creation, FALSE otherwise.

+
+
+
+
+

g_file_make_directory_async ()

+
void
+g_file_make_directory_async (GFile *file,
+                             int io_priority,
+                             GCancellable *cancellable,
+                             GAsyncReadyCallback callback,
+                             gpointer user_data);
+

Asynchronously creates a directory.

+

Virtual: make_directory_async

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied

 

user_data

the data to pass to callback function

 
+
+

Since: 2.38

+
+
+
+

g_file_make_directory_finish ()

+
gboolean
+g_file_make_directory_finish (GFile *file,
+                              GAsyncResult *result,
+                              GError **error);
+

Finishes an asynchronous directory creation, started with +g_file_make_directory_async().

+

Virtual: make_directory_finish

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

result

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE on successful directory creation, FALSE otherwise.

+
+

Since: 2.38

+
+
+
+

g_file_make_directory_with_parents ()

+
gboolean
+g_file_make_directory_with_parents (GFile *file,
+                                    GCancellable *cancellable,
+                                    GError **error);
+

Creates a directory and any parent directories that may not +exist similar to 'mkdir -p'. If the file system does not support +creating directories, this function will fail, setting error + to +G_IO_ERROR_NOT_SUPPORTED. If the directory itself already exists, +this function will fail setting error + to G_IO_ERROR_EXISTS, unlike +the similar g_mkdir_with_parents().

+

For a local GFile the newly created directories will have the default +(current) ownership and permissions of the current process.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if all directories have been successfully created, FALSE +otherwise.

+
+

Since: 2.18

+
+
+
+

g_file_make_symbolic_link ()

+
gboolean
+g_file_make_symbolic_link (GFile *file,
+                           const char *symlink_value,
+                           GCancellable *cancellable,
+                           GError **error);
+

Creates a symbolic link named file + which contains the string +symlink_value +.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

file

a GFile with the name of the symlink to create

 

symlink_value

a string with the path for the target of the new symlink

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError

 
+
+
+

Returns

+

TRUE on the creation of a new symlink, FALSE otherwise.

+
+
+
+
+

g_file_query_settable_attributes ()

+
GFileAttributeInfoList *
+g_file_query_settable_attributes (GFile *file,
+                                  GCancellable *cancellable,
+                                  GError **error);
+

Obtain the list of settable attributes for the file.

+

Returns the type and full attribute name of all the attributes +that can be set on this file. This doesn't mean setting it will +always succeed though, you might get an access failure, or some +specific file may not support a specific attribute.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

a GFileAttributeInfoList describing the settable attributes. +When you are done with it, release it with +g_file_attribute_info_list_unref()

+
+
+
+
+

g_file_query_writable_namespaces ()

+
GFileAttributeInfoList *
+g_file_query_writable_namespaces (GFile *file,
+                                  GCancellable *cancellable,
+                                  GError **error);
+

Obtain the list of attribute namespaces where new attributes +can be created by a user. An example of this is extended +attributes (in the "xattr" namespace).

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

a GFileAttributeInfoList describing the writable namespaces. +When you are done with it, release it with +g_file_attribute_info_list_unref()

+
+
+
+
+

g_file_set_attribute ()

+
gboolean
+g_file_set_attribute (GFile *file,
+                      const char *attribute,
+                      GFileAttributeType type,
+                      gpointer value_p,
+                      GFileQueryInfoFlags flags,
+                      GCancellable *cancellable,
+                      GError **error);
+

Sets an attribute in the file with attribute name attribute + to value +.

+

Some attributes can be unset by setting attribute + to +G_FILE_ATTRIBUTE_TYPE_INVALID and value_p + to NULL.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

attribute

a string containing the attribute's name

 

type

The type of the attribute

 

value_p

a pointer to the value (or the pointer +itself if the type is a pointer type).

[allow-none]

flags

a set of GFileQueryInfoFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the attribute was set, FALSE otherwise.

+
+
+
+
+

g_file_set_attributes_from_info ()

+
gboolean
+g_file_set_attributes_from_info (GFile *file,
+                                 GFileInfo *info,
+                                 GFileQueryInfoFlags flags,
+                                 GCancellable *cancellable,
+                                 GError **error);
+

Tries to set all attributes in the GFileInfo on the target +values, not stopping on the first error.

+

If there is any error during this operation then error + will +be set to the first error. Error on particular fields are flagged +by setting the "status" field in the attribute value to +G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING, which means you can +also detect further errors.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

info

a GFileInfo

 

flags

GFileQueryInfoFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

FALSE if there was any error, TRUE otherwise.

+
+
+
+
+

g_file_set_attributes_async ()

+
void
+g_file_set_attributes_async (GFile *file,
+                             GFileInfo *info,
+                             GFileQueryInfoFlags flags,
+                             int io_priority,
+                             GCancellable *cancellable,
+                             GAsyncReadyCallback callback,
+                             gpointer user_data);
+

Asynchronously sets the attributes of file + with info +.

+

For more details, see g_file_set_attributes_from_info(), +which is the synchronous version of this call.

+

When the operation is finished, callback + will be called. +You can then call g_file_set_attributes_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

info

a GFileInfo

 

flags

a GFileQueryInfoFlags

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

a gpointer.

[closure]
+
+
+
+
+

g_file_set_attributes_finish ()

+
gboolean
+g_file_set_attributes_finish (GFile *file,
+                              GAsyncResult *result,
+                              GFileInfo **info,
+                              GError **error);
+

Finishes setting an attribute started in g_file_set_attributes_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

result

a GAsyncResult

 

info

a GFileInfo.

[out][transfer full]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the attributes were set correctly, FALSE otherwise.

+
+
+
+
+

g_file_set_attribute_string ()

+
gboolean
+g_file_set_attribute_string (GFile *file,
+                             const char *attribute,
+                             const char *value,
+                             GFileQueryInfoFlags flags,
+                             GCancellable *cancellable,
+                             GError **error);
+

Sets attribute + of type G_FILE_ATTRIBUTE_TYPE_STRING to value +. +If attribute + is of a different type, this operation will fail.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

attribute

a string containing the attribute's name

 

value

a string containing the attribute's value

 

flags

GFileQueryInfoFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the attribute +was successfully set, FALSE otherwise.

+
+
+
+
+

g_file_set_attribute_byte_string ()

+
gboolean
+g_file_set_attribute_byte_string (GFile *file,
+                                  const char *attribute,
+                                  const char *value,
+                                  GFileQueryInfoFlags flags,
+                                  GCancellable *cancellable,
+                                  GError **error);
+

Sets attribute + of type G_FILE_ATTRIBUTE_TYPE_BYTE_STRING to value +. +If attribute + is of a different type, this operation will fail, +returning FALSE.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

attribute

a string containing the attribute's name

 

value

a string containing the attribute's new value

 

flags

a GFileQueryInfoFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the attribute +was successfully set to value +in the file +, FALSE otherwise.

+
+
+
+
+

g_file_set_attribute_uint32 ()

+
gboolean
+g_file_set_attribute_uint32 (GFile *file,
+                             const char *attribute,
+                             guint32 value,
+                             GFileQueryInfoFlags flags,
+                             GCancellable *cancellable,
+                             GError **error);
+

Sets attribute + of type G_FILE_ATTRIBUTE_TYPE_UINT32 to value +. +If attribute + is of a different type, this operation will fail.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

attribute

a string containing the attribute's name

 

value

a guint32 containing the attribute's new value

 

flags

a GFileQueryInfoFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the attribute +was successfully set to value +in the file +, FALSE otherwise.

+
+
+
+
+

g_file_set_attribute_int32 ()

+
gboolean
+g_file_set_attribute_int32 (GFile *file,
+                            const char *attribute,
+                            gint32 value,
+                            GFileQueryInfoFlags flags,
+                            GCancellable *cancellable,
+                            GError **error);
+

Sets attribute + of type G_FILE_ATTRIBUTE_TYPE_INT32 to value +. +If attribute + is of a different type, this operation will fail.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

attribute

a string containing the attribute's name

 

value

a gint32 containing the attribute's new value

 

flags

a GFileQueryInfoFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the attribute +was successfully set to value +in the file +, FALSE otherwise.

+
+
+
+
+

g_file_set_attribute_uint64 ()

+
gboolean
+g_file_set_attribute_uint64 (GFile *file,
+                             const char *attribute,
+                             guint64 value,
+                             GFileQueryInfoFlags flags,
+                             GCancellable *cancellable,
+                             GError **error);
+

Sets attribute + of type G_FILE_ATTRIBUTE_TYPE_UINT64 to value +. +If attribute + is of a different type, this operation will fail.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

attribute

a string containing the attribute's name

 

value

a guint64 containing the attribute's new value

 

flags

a GFileQueryInfoFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the attribute +was successfully set to value +in the file +, FALSE otherwise.

+
+
+
+
+

g_file_set_attribute_int64 ()

+
gboolean
+g_file_set_attribute_int64 (GFile *file,
+                            const char *attribute,
+                            gint64 value,
+                            GFileQueryInfoFlags flags,
+                            GCancellable *cancellable,
+                            GError **error);
+

Sets attribute + of type G_FILE_ATTRIBUTE_TYPE_INT64 to value +. +If attribute + is of a different type, this operation will fail.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

attribute

a string containing the attribute's name

 

value

a guint64 containing the attribute's new value

 

flags

a GFileQueryInfoFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the attribute +was successfully set, FALSE otherwise.

+
+
+
+
+

g_file_mount_mountable ()

+
void
+g_file_mount_mountable (GFile *file,
+                        GMountMountFlags flags,
+                        GMountOperation *mount_operation,
+                        GCancellable *cancellable,
+                        GAsyncReadyCallback callback,
+                        gpointer user_data);
+

Mounts a file of type G_FILE_TYPE_MOUNTABLE. +Using mount_operation +, you can request callbacks when, for instance, +passwords are needed during authentication.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

When the operation is finished, callback + will be called. +You can then call g_file_mount_mountable_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

flags affecting the operation

 

mount_operation

a GMountOperation, +or NULL to avoid user interaction.

[allow-none]

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied, or NULL.

[scope async][allow-none]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_file_mount_mountable_finish ()

+
GFile *
+g_file_mount_mountable_finish (GFile *file,
+                               GAsyncResult *result,
+                               GError **error);
+

Finishes a mount operation. See g_file_mount_mountable() for details.

+

Finish an asynchronous mount operation that was started +with g_file_mount_mountable().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

result

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

a GFile or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_unmount_mountable ()

+
void
+g_file_unmount_mountable (GFile *file,
+                          GMountUnmountFlags flags,
+                          GCancellable *cancellable,
+                          GAsyncReadyCallback callback,
+                          gpointer user_data);
+
+

g_file_unmount_mountable has been deprecated since version 2.22 and should not be used in newly-written code.

+

Use g_file_unmount_mountable_with_operation() instead.

+
+

Unmounts a file of type G_FILE_TYPE_MOUNTABLE.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

When the operation is finished, callback + will be called. +You can then call g_file_unmount_mountable_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

flags affecting the operation

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied, or NULL.

[scope async][allow-none]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_file_unmount_mountable_finish ()

+
gboolean
+g_file_unmount_mountable_finish (GFile *file,
+                                 GAsyncResult *result,
+                                 GError **error);
+
+

g_file_unmount_mountable_finish has been deprecated since version 2.22 and should not be used in newly-written code.

+

Use g_file_unmount_mountable_with_operation_finish() + instead.

+
+

Finishes an unmount operation, see g_file_unmount_mountable() for details.

+

Finish an asynchronous unmount operation that was started +with g_file_unmount_mountable().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

result

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the operation finished successfully. +FALSE otherwise.

+
+
+
+
+

g_file_unmount_mountable_with_operation ()

+
void
+g_file_unmount_mountable_with_operation
+                               (GFile *file,
+                                GMountUnmountFlags flags,
+                                GMountOperation *mount_operation,
+                                GCancellable *cancellable,
+                                GAsyncReadyCallback callback,
+                                gpointer user_data);
+

Unmounts a file of type G_FILE_TYPE_MOUNTABLE.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

When the operation is finished, callback + will be called. +You can then call g_file_unmount_mountable_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

flags affecting the operation

 

mount_operation

a GMountOperation, +or NULL to avoid user interaction.

[allow-none]

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied, or NULL.

[scope async][allow-none]

user_data

the data to pass to callback function.

[closure]
+
+

Since: 2.22

+
+
+
+

g_file_unmount_mountable_with_operation_finish ()

+
gboolean
+g_file_unmount_mountable_with_operation_finish
+                               (GFile *file,
+                                GAsyncResult *result,
+                                GError **error);
+

Finishes an unmount operation, +see g_file_unmount_mountable_with_operation() for details.

+

Finish an asynchronous unmount operation that was started +with g_file_unmount_mountable_with_operation().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

result

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the operation finished successfully. +FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_file_eject_mountable ()

+
void
+g_file_eject_mountable (GFile *file,
+                        GMountUnmountFlags flags,
+                        GCancellable *cancellable,
+                        GAsyncReadyCallback callback,
+                        gpointer user_data);
+
+

g_file_eject_mountable has been deprecated since version 2.22 and should not be used in newly-written code.

+

Use g_file_eject_mountable_with_operation() instead.

+
+

Starts an asynchronous eject on a mountable. +When this operation has completed, callback + will be called with +user_user + data, and the operation can be finalized with +g_file_eject_mountable_finish().

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

flags affecting the operation

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied, or NULL.

[scope async][allow-none]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_file_eject_mountable_finish ()

+
gboolean
+g_file_eject_mountable_finish (GFile *file,
+                               GAsyncResult *result,
+                               GError **error);
+
+

g_file_eject_mountable_finish has been deprecated since version 2.22 and should not be used in newly-written code.

+

Use g_file_eject_mountable_with_operation_finish() + instead.

+
+

Finishes an asynchronous eject operation started by +g_file_eject_mountable().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

result

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the file +was ejected successfully. +FALSE otherwise.

+
+
+
+
+

g_file_eject_mountable_with_operation ()

+
void
+g_file_eject_mountable_with_operation (GFile *file,
+                                       GMountUnmountFlags flags,
+                                       GMountOperation *mount_operation,
+                                       GCancellable *cancellable,
+                                       GAsyncReadyCallback callback,
+                                       gpointer user_data);
+

Starts an asynchronous eject on a mountable. +When this operation has completed, callback + will be called with +user_user + data, and the operation can be finalized with +g_file_eject_mountable_with_operation_finish().

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

flags affecting the operation

 

mount_operation

a GMountOperation, +or NULL to avoid user interaction.

[allow-none]

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied, or NULL.

[scope async][allow-none]

user_data

the data to pass to callback function.

[closure]
+
+

Since: 2.22

+
+
+
+

g_file_eject_mountable_with_operation_finish ()

+
gboolean
+g_file_eject_mountable_with_operation_finish
+                               (GFile *file,
+                                GAsyncResult *result,
+                                GError **error);
+

Finishes an asynchronous eject operation started by +g_file_eject_mountable_with_operation().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

result

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the file +was ejected successfully. +FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_file_start_mountable ()

+
void
+g_file_start_mountable (GFile *file,
+                        GDriveStartFlags flags,
+                        GMountOperation *start_operation,
+                        GCancellable *cancellable,
+                        GAsyncReadyCallback callback,
+                        gpointer user_data);
+

Starts a file of type G_FILE_TYPE_MOUNTABLE. +Using start_operation +, you can request callbacks when, for instance, +passwords are needed during authentication.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

When the operation is finished, callback + will be called. +You can then call g_file_mount_mountable_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

flags affecting the operation

 

start_operation

a GMountOperation, or NULL to avoid user interaction.

[allow-none]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call when the request is satisfied, or NULL.

[allow-none]

user_data

the data to pass to callback function

 
+
+

Since: 2.22

+
+
+
+

g_file_start_mountable_finish ()

+
gboolean
+g_file_start_mountable_finish (GFile *file,
+                               GAsyncResult *result,
+                               GError **error);
+

Finishes a start operation. See g_file_start_mountable() for details.

+

Finish an asynchronous start operation that was started +with g_file_start_mountable().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

result

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the operation finished successfully. FALSE +otherwise.

+
+

Since: 2.22

+
+
+
+

g_file_stop_mountable ()

+
void
+g_file_stop_mountable (GFile *file,
+                       GMountUnmountFlags flags,
+                       GMountOperation *mount_operation,
+                       GCancellable *cancellable,
+                       GAsyncReadyCallback callback,
+                       gpointer user_data);
+

Stops a file of type G_FILE_TYPE_MOUNTABLE.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

When the operation is finished, callback + will be called. +You can then call g_file_stop_mountable_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

flags affecting the operation

 

mount_operation

a GMountOperation, +or NULL to avoid user interaction.

[allow-none]

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied, or NULL.

[allow-none]

user_data

the data to pass to callback function

 
+
+

Since: 2.22

+
+
+
+

g_file_stop_mountable_finish ()

+
gboolean
+g_file_stop_mountable_finish (GFile *file,
+                              GAsyncResult *result,
+                              GError **error);
+

Finishes an stop operation, see g_file_stop_mountable() for details.

+

Finish an asynchronous stop operation that was started +with g_file_stop_mountable().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

result

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the operation finished successfully. +FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_file_poll_mountable ()

+
void
+g_file_poll_mountable (GFile *file,
+                       GCancellable *cancellable,
+                       GAsyncReadyCallback callback,
+                       gpointer user_data);
+

Polls a file of type G_FILE_TYPE_MOUNTABLE.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

When the operation is finished, callback + will be called. +You can then call g_file_mount_mountable_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

cancellable

optional GCancellable object, NULL to ignore

 

callback

a GAsyncReadyCallback to call +when the request is satisfied, or NULL.

[allow-none]

user_data

the data to pass to callback function

 
+
+

Since: 2.22

+
+
+
+

g_file_poll_mountable_finish ()

+
gboolean
+g_file_poll_mountable_finish (GFile *file,
+                              GAsyncResult *result,
+                              GError **error);
+

Finishes a poll operation. See g_file_poll_mountable() for details.

+

Finish an asynchronous poll operation that was polled +with g_file_poll_mountable().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

result

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the operation finished successfully. FALSE +otherwise.

+
+

Since: 2.22

+
+
+
+

g_file_mount_enclosing_volume ()

+
void
+g_file_mount_enclosing_volume (GFile *location,
+                               GMountMountFlags flags,
+                               GMountOperation *mount_operation,
+                               GCancellable *cancellable,
+                               GAsyncReadyCallback callback,
+                               gpointer user_data);
+

Starts a mount_operation +, mounting the volume that contains +the file location +.

+

When this operation has completed, callback + will be called with +user_user + data, and the operation can be finalized with +g_file_mount_enclosing_volume_finish().

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

location

input GFile

 

flags

flags affecting the operation

 

mount_operation

a GMountOperation +or NULL to avoid user interaction.

[allow-none]

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied, or NULL.

[allow-none]

user_data

the data to pass to callback function

 
+
+
+
+
+

g_file_mount_enclosing_volume_finish ()

+
gboolean
+g_file_mount_enclosing_volume_finish (GFile *location,
+                                      GAsyncResult *result,
+                                      GError **error);
+

Finishes a mount operation started by g_file_mount_enclosing_volume().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

location

input GFile

 

result

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if successful. If an error has occurred, +this function will return FALSE and set error +appropriately if present.

+
+
+
+
+

g_file_monitor_directory ()

+
GFileMonitor *
+g_file_monitor_directory (GFile *file,
+                          GFileMonitorFlags flags,
+                          GCancellable *cancellable,
+                          GError **error);
+

Obtains a directory monitor for the given file. +This may fail if directory monitoring is not supported.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

It does not make sense for flags + to contain +G_FILE_MONITOR_WATCH_HARD_LINKS, since hard links can not be made to +directories. It is not possible to monitor all the files in a +directory for changes made via hard links; if you want to do this then +you must register individual watches with g_file_monitor().

+

Virtual: monitor_dir

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

a set of GFileMonitorFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

a GFileMonitor for the given file +, +or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_monitor_file ()

+
GFileMonitor *
+g_file_monitor_file (GFile *file,
+                     GFileMonitorFlags flags,
+                     GCancellable *cancellable,
+                     GError **error);
+

Obtains a file monitor for the given file. If no file notification +mechanism exists, then regular polling of the file is used.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

If flags + contains G_FILE_MONITOR_WATCH_HARD_LINKS then the monitor +will also attempt to report changes made to the file via another +filename (ie, a hard link). Without this flag, you can only rely on +changes made through the filename contained in file + to be +reported. Using this flag may result in an increase in resource +usage, and may not have any effect depending on the GFileMonitor +backend and/or filesystem type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

a set of GFileMonitorFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

a GFileMonitor for the given file +, +or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_file_monitor ()

+
GFileMonitor *
+g_file_monitor (GFile *file,
+                GFileMonitorFlags flags,
+                GCancellable *cancellable,
+                GError **error);
+

Obtains a file or directory monitor for the given file, +depending on the type of the file.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

a set of GFileMonitorFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

a GFileMonitor for the given file +, +or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.18

+
+
+
+

g_file_load_contents ()

+
gboolean
+g_file_load_contents (GFile *file,
+                      GCancellable *cancellable,
+                      char **contents,
+                      gsize *length,
+                      char **etag_out,
+                      GError **error);
+

Loads the content of the file into memory. The data is always +zero-terminated, but this is not included in the resultant length +. +The returned content + should be freed with g_free() when no longer +needed.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

cancellable

optional GCancellable object, NULL to ignore

 

contents

a location to place the contents of the file.

[out][transfer full][element-type guint8][array length=length]

length

a location to place the length of the contents of the file, +or NULL if the length is not needed.

[out][allow-none]

etag_out

a location to place the current entity tag for the file, +or NULL if the entity tag is not needed.

[out][allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the file +'s contents were successfully loaded. +FALSE if there were errors.

+
+
+
+
+

g_file_load_contents_async ()

+
void
+g_file_load_contents_async (GFile *file,
+                            GCancellable *cancellable,
+                            GAsyncReadyCallback callback,
+                            gpointer user_data);
+

Starts an asynchronous load of the file +'s contents.

+

For more details, see g_file_load_contents() which is +the synchronous version of this call.

+

When the load operation has completed, callback + will be called +with user + data. To finish the operation, call +g_file_load_contents_finish() with the GAsyncResult returned by +the callback +.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

cancellable

optional GCancellable object, NULL to ignore

 

callback

a GAsyncReadyCallback to call when the request is satisfied

 

user_data

the data to pass to callback function

 
+
+
+
+
+

g_file_load_contents_finish ()

+
gboolean
+g_file_load_contents_finish (GFile *file,
+                             GAsyncResult *res,
+                             char **contents,
+                             gsize *length,
+                             char **etag_out,
+                             GError **error);
+

Finishes an asynchronous load of the file +'s contents. +The contents are placed in contents +, and length + is set to the +size of the contents + string. The content + should be freed with +g_free() when no longer needed. If etag_out + is present, it will be +set to the new entity tag for the file +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

res

a GAsyncResult

 

contents

a location to place the contents of the file.

[out][transfer full][element-type guint8][array length=length]

length

a location to place the length of the contents of the file, +or NULL if the length is not needed.

[out][allow-none]

etag_out

a location to place the current entity tag for the file, +or NULL if the entity tag is not needed.

[out][allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the load was successful. If FALSE and error +is +present, it will be set appropriately.

+
+
+
+
+

g_file_load_partial_contents_async ()

+
void
+g_file_load_partial_contents_async (GFile *file,
+                                    GCancellable *cancellable,
+                                    GFileReadMoreCallback read_more_callback,
+                                    GAsyncReadyCallback callback,
+                                    gpointer user_data);
+

Reads the partial contents of a file. A GFileReadMoreCallback should +be used to stop reading from the file when appropriate, else this +function will behave exactly as g_file_load_contents_async(). This +operation can be finished by g_file_load_partial_contents_finish().

+

Users of this function should be aware that user_data + is passed to +both the read_more_callback + and the callback +.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

cancellable

optional GCancellable object, NULL to ignore

 

read_more_callback

a GFileReadMoreCallback to receive partial data +and to specify whether further data should be read

 

callback

a GAsyncReadyCallback to call when the request is satisfied

 

user_data

the data to pass to the callback functions

 
+
+
+
+
+

g_file_load_partial_contents_finish ()

+
gboolean
+g_file_load_partial_contents_finish (GFile *file,
+                                     GAsyncResult *res,
+                                     char **contents,
+                                     gsize *length,
+                                     char **etag_out,
+                                     GError **error);
+

Finishes an asynchronous partial load operation that was started +with g_file_load_partial_contents_async(). The data is always +zero-terminated, but this is not included in the resultant length +. +The returned content + should be freed with g_free() when no longer +needed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

res

a GAsyncResult

 

contents

a location to place the contents of the file.

[out][transfer full][element-type guint8][array length=length]

length

a location to place the length of the contents of the file, +or NULL if the length is not needed.

[out][allow-none]

etag_out

a location to place the current entity tag for the file, +or NULL if the entity tag is not needed.

[out][allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the load was successful. If FALSE and error +is +present, it will be set appropriately.

+
+
+
+
+

g_file_replace_contents ()

+
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);
+

Replaces the contents of file + with contents + of length + bytes.

+

If etag + is specified (not NULL), any existing file must have that etag, +or the error G_IO_ERROR_WRONG_ETAG will be returned.

+

If make_backup + is TRUE, this function will attempt to make a backup +of file +. Internally, it uses g_file_replace(), so will try to replace the +file contents in the safest way possible. For example, atomic renames are +used when replacing local files’ contents.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

The returned new_etag + can be used to verify that the file hasn't +changed the next time it is saved over.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

contents

a string containing the new contents for file +.

[element-type guint8][array length=length]

length

the length of contents +in bytes

 

etag

the old entity-tag for the document, +or NULL.

[allow-none]

make_backup

TRUE if a backup should be created

 

flags

a set of GFileCreateFlags

 

new_etag

a location to a new entity tag +for the document. This should be freed with g_free() when no longer +needed, or NULL.

[allow-none][out]

cancellable

optional GCancellable object, NULL to ignore

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if successful. If an error has occurred, this function +will return FALSE and set error +appropriately if present.

+
+
+
+
+

g_file_replace_contents_async ()

+
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);
+

Starts an asynchronous replacement of file + with the given +contents + of length + bytes. etag + will replace the document's +current entity tag.

+

When this operation has completed, callback + will be called with +user_user + data, and the operation can be finalized with +g_file_replace_contents_finish().

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+

If make_backup + is TRUE, this function will attempt to +make a backup of file +.

+

Note that no copy of content + will be made, so it must stay valid +until callback + is called. See g_file_replace_contents_bytes_async() +for a GBytes version that will automatically hold a reference to the +contents (without copying) for the duration of the call.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

contents

string of contents to replace the file with.

[element-type guint8][array length=length]

length

the length of contents +in bytes

 

etag

a new entity tag for the file +, or NULL.

[allow-none]

make_backup

TRUE if a backup should be created

 

flags

a set of GFileCreateFlags

 

cancellable

optional GCancellable object, NULL to ignore

 

callback

a GAsyncReadyCallback to call when the request is satisfied

 

user_data

the data to pass to callback function

 
+
+
+
+
+

g_file_replace_contents_bytes_async ()

+
void
+g_file_replace_contents_bytes_async (GFile *file,
+                                     GBytes *contents,
+                                     const char *etag,
+                                     gboolean make_backup,
+                                     GFileCreateFlags flags,
+                                     GCancellable *cancellable,
+                                     GAsyncReadyCallback callback,
+                                     gpointer user_data);
+

Same as g_file_replace_contents_async() but takes a GBytes input instead. +This function will keep a ref on contents + until the operation is done. +Unlike g_file_replace_contents_async() this allows forgetting about the +content without waiting for the callback.

+

When this operation has completed, callback + will be called with +user_user + data, and the operation can be finalized with +g_file_replace_contents_finish().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

contents

a GBytes

 

etag

a new entity tag for the file +, or NULL.

[allow-none]

make_backup

TRUE if a backup should be created

 

flags

a set of GFileCreateFlags

 

cancellable

optional GCancellable object, NULL to ignore

 

callback

a GAsyncReadyCallback to call when the request is satisfied

 

user_data

the data to pass to callback function

 
+
+

Since: 2.40

+
+
+
+

g_file_replace_contents_finish ()

+
gboolean
+g_file_replace_contents_finish (GFile *file,
+                                GAsyncResult *res,
+                                char **new_etag,
+                                GError **error);
+

Finishes an asynchronous replace of the given file +. See +g_file_replace_contents_async(). Sets new_etag + to the new entity +tag for the document, if present.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

res

a GAsyncResult

 

new_etag

a location of a new entity tag +for the document. This should be freed with g_free() when it is no +longer needed, or NULL.

[out][allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE on success, FALSE on failure.

+
+
+
+
+

g_file_copy_attributes ()

+
gboolean
+g_file_copy_attributes (GFile *source,
+                        GFile *destination,
+                        GFileCopyFlags flags,
+                        GCancellable *cancellable,
+                        GError **error);
+

Copies the file attributes from source + to destination +.

+

Normally only a subset of the file attributes are copied, +those that are copies in a normal file copy operation +(which for instance does not include e.g. owner). However +if G_FILE_COPY_ALL_METADATA is specified in flags +, then +all the metadata that is possible to copy is copied. This +is useful when implementing move by copy + delete source.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

source

a GFile with attributes

 

destination

a GFile to copy attributes to

 

flags

a set of GFileCopyFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

a GError, NULL to ignore

 
+
+
+

Returns

+

TRUE if the attributes were copied successfully, +FALSE otherwise.

+
+
+
+
+

g_file_create_readwrite ()

+
GFileIOStream *
+g_file_create_readwrite (GFile *file,
+                         GFileCreateFlags flags,
+                         GCancellable *cancellable,
+                         GError **error);
+

Creates a new file and returns a stream for reading and +writing to it. The file must not already exist.

+

By default files created are generally readable by everyone, +but if you pass G_FILE_CREATE_PRIVATE in flags + the file +will be made readable only to the current user, to the level +that is supported on the target filesystem.

+

If cancellable + is not NULL, then the operation can be cancelled +by triggering the cancellable object from another thread. If the +operation was cancelled, the error G_IO_ERROR_CANCELLED will be +returned.

+

If a file or directory with this name already exists, the +G_IO_ERROR_EXISTS error will be returned. Some file systems don't +allow all file names, and may return an G_IO_ERROR_INVALID_FILENAME +error, and if the name is too long, G_IO_ERROR_FILENAME_TOO_LONG +will be returned. Other errors are possible too, and depend on what +kind of filesystem the file is on.

+

Note that in many non-local file cases read and write streams are +not supported, so make sure you really need to do read and write +streaming, rather than just opening for reading or writing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

file

a GFile

 

flags

a set of GFileCreateFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a GFileIOStream for the newly created +file, or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_file_create_readwrite_async ()

+
void
+g_file_create_readwrite_async (GFile *file,
+                               GFileCreateFlags flags,
+                               int io_priority,
+                               GCancellable *cancellable,
+                               GAsyncReadyCallback callback,
+                               gpointer user_data);
+

Asynchronously creates a new file and returns a stream +for reading and writing to it. The file must not already exist.

+

For more details, see g_file_create_readwrite() which is +the synchronous version of this call.

+

When the operation is finished, callback + will be called. +You can then call g_file_create_readwrite_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

flags

a set of GFileCreateFlags

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+

Since: 2.22

+
+
+
+

g_file_create_readwrite_finish ()

+
GFileIOStream *
+g_file_create_readwrite_finish (GFile *file,
+                                GAsyncResult *res,
+                                GError **error);
+

Finishes an asynchronous file create operation started with +g_file_create_readwrite_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

res

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

a GFileIOStream or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_file_open_readwrite ()

+
GFileIOStream *
+g_file_open_readwrite (GFile *file,
+                       GCancellable *cancellable,
+                       GError **error);
+

Opens an existing file for reading and writing. The result is +a GFileIOStream that can be used to read and write the contents +of the file.

+

If cancellable + is not NULL, then the operation can be cancelled +by triggering the cancellable object from another thread. If the +operation was cancelled, the error G_IO_ERROR_CANCELLED will be +returned.

+

If the file does not exist, the G_IO_ERROR_NOT_FOUND error will +be returned. If the file is a directory, the G_IO_ERROR_IS_DIRECTORY +error will be returned. Other errors are possible too, and depend on +what kind of filesystem the file is on. Note that in many non-local +file cases read and write streams are not supported, so make sure you +really need to do read and write streaming, rather than just opening +for reading or writing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

GFile to open

 

cancellable

a GCancellable.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

GFileIOStream or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_file_open_readwrite_async ()

+
void
+g_file_open_readwrite_async (GFile *file,
+                             int io_priority,
+                             GCancellable *cancellable,
+                             GAsyncReadyCallback callback,
+                             gpointer user_data);
+

Asynchronously opens file + for reading and writing.

+

For more details, see g_file_open_readwrite() which is +the synchronous version of this call.

+

When the operation is finished, callback + will be called. +You can then call g_file_open_readwrite_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+

Since: 2.22

+
+
+
+

g_file_open_readwrite_finish ()

+
GFileIOStream *
+g_file_open_readwrite_finish (GFile *file,
+                              GAsyncResult *res,
+                              GError **error);
+

Finishes an asynchronous file read operation started with +g_file_open_readwrite_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

res

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

a GFileIOStream or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_file_replace_readwrite ()

+
GFileIOStream *
+g_file_replace_readwrite (GFile *file,
+                          const char *etag,
+                          gboolean make_backup,
+                          GFileCreateFlags flags,
+                          GCancellable *cancellable,
+                          GError **error);
+

Returns an output stream for overwriting the file in readwrite mode, +possibly creating a backup copy of the file first. If the file doesn't +exist, it will be created.

+

For details about the behaviour, see g_file_replace() which does the +same thing but returns an output stream only.

+

Note that in many non-local file cases read and write streams are not +supported, so make sure you really need to do read and write streaming, +rather than just opening for reading or writing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

a GFile

 

etag

an optional entity tag +for the current GFile, or NULL to ignore.

[allow-none]

make_backup

TRUE if a backup should be created

 

flags

a set of GFileCreateFlags

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a GFileIOStream or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_file_replace_readwrite_async ()

+
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);
+

Asynchronously overwrites the file in read-write mode, +replacing the contents, possibly creating a backup copy +of the file first.

+

For more details, see g_file_replace_readwrite() which is +the synchronous version of this call.

+

When the operation is finished, callback + will be called. +You can then call g_file_replace_readwrite_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

file

input GFile

 

etag

an entity tag for the current GFile, +or NULL to ignore.

[allow-none]

make_backup

TRUE if a backup should be created

 

flags

a set of GFileCreateFlags

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, +NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call +when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+

Since: 2.22

+
+
+
+

g_file_replace_readwrite_finish ()

+
GFileIOStream *
+g_file_replace_readwrite_finish (GFile *file,
+                                 GAsyncResult *res,
+                                 GError **error);
+

Finishes an asynchronous file replace operation started with +g_file_replace_readwrite_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

input GFile

 

res

a GAsyncResult

 

error

a GError, or NULL

 
+
+
+

Returns

+

a GFileIOStream, or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_file_supports_thread_contexts ()

+
gboolean
+g_file_supports_thread_contexts (GFile *file);
+

Checks if file + supports +thread-default contexts. +If this returns FALSE, you cannot perform asynchronous operations on +file + in a thread that has a thread-default context.

+
+

Parameters

+
+++++ + + + + + +

file

a GFile

 
+
+
+

Returns

+

Whether or not file +supports thread-default contexts.

+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

GFile

+
typedef struct _GFile 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.

+
+
+
+

struct GFileIface

+
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);
+
+  gboolean            (* measure_disk_usage)          (GFile                         *file,
+                                                       GFileMeasureFlags              flags,
+                                                       GCancellable                  *cancellable,
+                                                       GFileMeasureProgressCallback   progress_callback,
+                                                       gpointer                       progress_data,
+                                                       guint64                       *disk_usage,
+                                                       guint64                       *num_dirs,
+                                                       guint64                       *num_files,
+                                                       GError                       **error);
+  void                (* measure_disk_usage_async)    (GFile                         *file,
+                                                       GFileMeasureFlags              flags,
+                                                       gint                           io_priority,
+                                                       GCancellable                  *cancellable,
+                                                       GFileMeasureProgressCallback   progress_callback,
+                                                       gpointer                       progress_data,
+                                                       GAsyncReadyCallback            callback,
+                                                       gpointer                       user_data);
+  gboolean            (* measure_disk_usage_finish)   (GFile                         *file,
+                                                       GAsyncResult                  *result,
+                                                       guint64                       *disk_usage,
+                                                       guint64                       *num_dirs,
+                                                       guint64                       *num_files,
+                                                       GError                       **error);
+};
+
+

An interface for writing VFS file handles.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

The parent interface.

 

dup ()

Duplicates a GFile.

 

hash ()

Creates a hash of a GFile.

 

equal ()

Checks equality of two given GFiles.

 

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 GFileAttributes that can be set.

 

_query_settable_attributes_async ()

Asynchronously gets a list of GFileAttributes 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.

 

gboolean 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.

 

measure_disk_usage ()

Recursively measures the disk usage of file +. Since 2.38

 

measure_disk_usage_async ()

Asynchronously recursively measures the disk usage of file +. Since 2.38

 

measure_disk_usage_finish ()

Finishes an asynchronous recursive measurement of the disk usage of file +. Since 2.38

 
+
+
+
+
+

enum GFileQueryInfoFlags

+

Flags used when querying a GFileInfo.

+
+

Members

+
+++++ + + + + + + + + + + + + +

G_FILE_QUERY_INFO_NONE

+

No flags set.

+
 

G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS

+

Don't follow symlinks.

+
 
+
+
+
+
+

enum GFileCreateFlags

+

Flags used when an operation may create a file.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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

+
 
+
+
+
+
+

enum GFileCopyFlags

+

Flags used when copying or moving files.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 
+
+
+
+
+

enum GFileMonitorFlags

+

Flags used to set what a GFileMonitor will watch for.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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). Deprecated since 2.44: use + G_FILE_MONITOR_WATCH_MOVES instead.

+
 

G_FILE_MONITOR_WATCH_HARD_LINKS

+

Watch for changes to the file made + via another hard link. Since 2.36.

+
 

G_FILE_MONITOR_WATCH_MOVES

+

Watch for rename operations on a + monitored directory. This causes G_FILE_MONITOR_EVENT_RENAMED, + G_FILE_MONITOR_EVENT_MOVED_IN and G_FILE_MONITOR_EVENT_MOVED_OUT + events to be emitted when possible. Since: 2.44.

+
 
+
+
+
+
+

enum GFileMeasureFlags

+

Flags that can be used with g_file_measure_disk_usage().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

G_FILE_MEASURE_NONE

+

No flags set.

+
 

G_FILE_MEASURE_REPORT_ANY_ERROR

+

Report any error encountered + while traversing the directory tree. Normally errors are only + reported for the toplevel file.

+
 

G_FILE_MEASURE_APPARENT_SIZE

+

Tally usage based on apparent file + sizes. Normally, the block-size is used, if available, as this is a + more accurate representation of disk space used. + Compare with du --apparent-size.

+
 

G_FILE_MEASURE_NO_XDEV

+

Do not cross mount point boundaries. + Compare with du -x.

+
 
+
+

Since: 2.38

+
+
+
+

enum GFilesystemPreviewType

+

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.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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.

+
 
+
+
+
+
+

See Also

+

GFileInfo, GFileEnumerator

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GFileDescriptorBased.html b/docs/reference/gio/html/GFileDescriptorBased.html new file mode 100644 index 0000000..127f5a8 --- /dev/null +++ b/docs/reference/gio/html/GFileDescriptorBased.html @@ -0,0 +1,183 @@ + + + + +GFileDescriptorBased: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GFileDescriptorBased

+

GFileDescriptorBased — Interface for file descriptor based IO

+
+
+

Functions

+
++++ + + + + +
+int + +g_file_descriptor_based_get_fd () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GFileDescriptorBased
structGFileDescriptorBasedIface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GFileDescriptorBased
+
+
+
+

Prerequisites

+

+GFileDescriptorBased requires + GObject.

+
+
+

Known Implementations

+

+GFileDescriptorBased is implemented by + GUnixInputStream and GUnixOutputStream.

+
+
+

Includes

+
#include <gio/gfiledescriptorbased.h>
+
+
+
+

Description

+

GFileDescriptorBased is implemented by streams (implementations of +GInputStream or GOutputStream) that are based on file descriptors.

+

Note that <gio/gfiledescriptorbased.h> belongs to the UNIX-specific +GIO interfaces, thus you have to use the gio-unix-2.0.pc pkg-config +file when using it.

+
+
+

Functions

+
+

g_file_descriptor_based_get_fd ()

+
int
+g_file_descriptor_based_get_fd (GFileDescriptorBased *fd_based);
+

Gets the underlying file descriptor.

+
+

Parameters

+
+++++ + + + + + +

fd_based

a GFileDescriptorBased.

 
+
+
+

Returns

+

The file descriptor

+
+

Since: 2.24

+
+
+
+

Types and Values

+
+

GFileDescriptorBased

+
typedef struct _GFileDescriptorBased GFileDescriptorBased;
+

An interface for file descriptor based io objects.

+
+
+
+

struct GFileDescriptorBasedIface

+
struct GFileDescriptorBasedIface {
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+  int (*get_fd) (GFileDescriptorBased *fd_based);
+};
+
+

An interface for file descriptor based io objects.

+
+

Members

+
+++++ + + + + + + + + + + + + +

GTypeInterface g_iface;

The parent interface.

 

get_fd ()

Gets the underlying file descriptor.

 
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GFileEnumerator.html b/docs/reference/gio/html/GFileEnumerator.html new file mode 100644 index 0000000..105b859 --- /dev/null +++ b/docs/reference/gio/html/GFileEnumerator.html @@ -0,0 +1,824 @@ + + + + +GFileEnumerator: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GFileEnumerator

+

GFileEnumerator — Enumerated Files Routines

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +g_file_enumerator_iterate () +
+GFileInfo * + +g_file_enumerator_next_file () +
+gboolean + +g_file_enumerator_close () +
+void + +g_file_enumerator_next_files_async () +
+GList * + +g_file_enumerator_next_files_finish () +
+void + +g_file_enumerator_close_async () +
+gboolean + +g_file_enumerator_close_finish () +
+gboolean + +g_file_enumerator_is_closed () +
+gboolean + +g_file_enumerator_has_pending () +
+void + +g_file_enumerator_set_pending () +
+GFile * + +g_file_enumerator_get_container () +
+GFile * + +g_file_enumerator_get_child () +
+
+
+

Properties

+
+++++ + + + + + +
+GFile *containerWrite / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GFileEnumerator
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GFileEnumerator
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GFileEnumerator allows you to operate on a set of GFiles, +returning a GFileInfo structure for each file enumerated (e.g. +g_file_enumerate_children() will return a GFileEnumerator for each +of the children within a directory).

+

To get the next file's information from a GFileEnumerator, use +g_file_enumerator_next_file() or its asynchronous version, +g_file_enumerator_next_files_async(). Note that the asynchronous +version will return a list of GFileInfos, whereas the +synchronous will only return the next file in the enumerator.

+

The ordering of returned files is unspecified for non-Unix +platforms; for more information, see g_dir_read_name(). On Unix, +when operating on local files, returned files will be sorted by +inode number. Effectively you can assume that the ordering of +returned files will be stable between successive calls (and +applications) assuming the directory is unchanged.

+

If your application needs a specific ordering, such as by name or +modification time, you will have to implement that in your +application code.

+

To close a GFileEnumerator, use g_file_enumerator_close(), or +its asynchronous version, g_file_enumerator_close_async(). Once +a GFileEnumerator is closed, no further actions may be performed +on it, and it should be freed with g_object_unref().

+
+
+

Functions

+
+

g_file_enumerator_iterate ()

+
gboolean
+g_file_enumerator_iterate (GFileEnumerator *direnum,
+                           GFileInfo **out_info,
+                           GFile **out_child,
+                           GCancellable *cancellable,
+                           GError **error);
+

This is a version of g_file_enumerator_next_file() that's easier to +use correctly from C programs. With g_file_enumerator_next_file(), +the gboolean return value signifies "end of iteration or error", which +requires allocation of a temporary GError.

+

In contrast, with this function, a FALSE return from +gs_file_enumerator_iterate() *always* means +"error". End of iteration is signaled by out_info + or out_child + being NULL.

+

Another crucial difference is that the references for out_info + and +out_child + are owned by direnum + (they are cached as hidden +properties). You must not unref them in your own code. This makes +memory management significantly easier for C code in combination +with loops.

+

Finally, this function optionally allows retrieving a GFile as +well.

+

You must specify at least one of out_info + or out_child +.

+

The code pattern for correctly using g_file_enumerator_iterate() from C +is:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
direnum = g_file_enumerate_children (file, ...);
+while (TRUE)
+  {
+    GFileInfo *info;
+    if (!g_file_enumerator_iterate (direnum, &info, NULL, cancellable, error))
+      goto out;
+    if (!info)
+      break;
+    ... do stuff with "info"; do not unref it! ...
+  }
+
+out:
+  g_object_unref (direnum); // Note: frees the last @info
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

direnum

an open GFileEnumerator

 

out_info

Output location for the next GFileInfo, or NULL.

[out][transfer none][allow-none]

out_child

Output location for the next GFile, or NULL.

[out][transfer none][allow-none]

cancellable

a GCancellable

 

error

a GError

 
+
+

Since: 2.44

+
+
+
+

g_file_enumerator_next_file ()

+
GFileInfo *
+g_file_enumerator_next_file (GFileEnumerator *enumerator,
+                             GCancellable *cancellable,
+                             GError **error);
+

Returns information for the next file in the enumerated object. +Will block until the information is available. The GFileInfo +returned from this function will contain attributes that match the +attribute string that was passed when the GFileEnumerator was created.

+

See the documentation of GFileEnumerator for information about the +order of returned files.

+

On error, returns NULL and sets error + to the error. If the +enumerator is at the end, NULL will be returned and error + will +be unset.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

enumerator

a GFileEnumerator.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

A GFileInfo or NULL on error +or end of enumerator. Free the returned object with +g_object_unref() when no longer needed.

+

[nullable][transfer full]

+
+
+
+
+

g_file_enumerator_close ()

+
gboolean
+g_file_enumerator_close (GFileEnumerator *enumerator,
+                         GCancellable *cancellable,
+                         GError **error);
+

Releases all resources used by this enumerator, making the +enumerator return G_IO_ERROR_CLOSED on all calls.

+

This will be automatically called when the last reference +is dropped, but you might want to call this function to make +sure resources are released as early as possible.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

enumerator

a GFileEnumerator.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

TRUE on success or FALSE on error.

+
+
+
+
+

g_file_enumerator_next_files_async ()

+
void
+g_file_enumerator_next_files_async (GFileEnumerator *enumerator,
+                                    int num_files,
+                                    int io_priority,
+                                    GCancellable *cancellable,
+                                    GAsyncReadyCallback callback,
+                                    gpointer user_data);
+

Request information for a number of files from the enumerator asynchronously. +When all i/o for the operation is finished the callback + will be called with +the requested information.

+

See the documentation of GFileEnumerator for information about the +order of returned files.

+

The callback can be called with less than num_files + files in case of error +or at the end of the enumerator. In case of a partial error the callback will +be called with any succeeding items and no error, and on the next request the +error will be reported. If a request is cancelled the callback will be called +with G_IO_ERROR_CANCELLED.

+

During an async request no other sync and async calls are allowed, and will +result in G_IO_ERROR_PENDING errors.

+

Any outstanding i/o request with higher priority (lower numerical value) will +be executed before an outstanding request with lower priority. Default +priority is G_PRIORITY_DEFAULT.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

enumerator

a GFileEnumerator.

 

num_files

the number of file info objects to request

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_file_enumerator_next_files_finish ()

+
GList *
+g_file_enumerator_next_files_finish (GFileEnumerator *enumerator,
+                                     GAsyncResult *result,
+                                     GError **error);
+

Finishes the asynchronous operation started with g_file_enumerator_next_files_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

enumerator

a GFileEnumerator.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

a GList of GFileInfos. You must free the list with +g_list_free() and unref the infos with g_object_unref() when you're +done with them.

+

[transfer full][element-type Gio.FileInfo]

+
+
+
+
+

g_file_enumerator_close_async ()

+
void
+g_file_enumerator_close_async (GFileEnumerator *enumerator,
+                               int io_priority,
+                               GCancellable *cancellable,
+                               GAsyncReadyCallback callback,
+                               gpointer user_data);
+

Asynchronously closes the file enumerator.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned in +g_file_enumerator_close_finish().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

enumerator

a GFileEnumerator.

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_file_enumerator_close_finish ()

+
gboolean
+g_file_enumerator_close_finish (GFileEnumerator *enumerator,
+                                GAsyncResult *result,
+                                GError **error);
+

Finishes closing a file enumerator, started from g_file_enumerator_close_async().

+

If the file enumerator was already closed when g_file_enumerator_close_async() +was called, then this function will report G_IO_ERROR_CLOSED in error +, and +return FALSE. If the file enumerator had pending operation when the close +operation was started, then this function will report G_IO_ERROR_PENDING, and +return FALSE. If cancellable + was not NULL, then the operation may have been +cancelled by triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be set, and FALSE will be +returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

enumerator

a GFileEnumerator.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if the close operation has finished successfully.

+
+
+
+
+

g_file_enumerator_is_closed ()

+
gboolean
+g_file_enumerator_is_closed (GFileEnumerator *enumerator);
+

Checks if the file enumerator has been closed.

+
+

Parameters

+
+++++ + + + + + +

enumerator

a GFileEnumerator.

 
+
+
+

Returns

+

TRUE if the enumerator +is closed.

+
+
+
+
+

g_file_enumerator_has_pending ()

+
gboolean
+g_file_enumerator_has_pending (GFileEnumerator *enumerator);
+

Checks if the file enumerator has pending operations.

+
+

Parameters

+
+++++ + + + + + +

enumerator

a GFileEnumerator.

 
+
+
+

Returns

+

TRUE if the enumerator +has pending operations.

+
+
+
+
+

g_file_enumerator_set_pending ()

+
void
+g_file_enumerator_set_pending (GFileEnumerator *enumerator,
+                               gboolean pending);
+

Sets the file enumerator as having pending operations.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

enumerator

a GFileEnumerator.

 

pending

a boolean value.

 
+
+
+
+
+

g_file_enumerator_get_container ()

+
GFile *
+g_file_enumerator_get_container (GFileEnumerator *enumerator);
+

Get the GFile container which is being enumerated.

+
+

Parameters

+
+++++ + + + + + +

enumerator

a GFileEnumerator

 
+
+
+

Returns

+

the GFile which is being enumerated.

+

[transfer none]

+
+

Since: 2.18

+
+
+
+

g_file_enumerator_get_child ()

+
GFile *
+g_file_enumerator_get_child (GFileEnumerator *enumerator,
+                             GFileInfo *info);
+

Return a new GFile which refers to the file named by info + in the source +directory of enumerator +. This function is primarily intended to be used +inside loops with g_file_enumerator_next_file().

+

This is a convenience method that's equivalent to:

+
+ + + + + + + +
1
+2
+3
gchar *name = g_file_info_get_name (info);
+GFile *child = g_file_get_child (g_file_enumerator_get_container (enumr),
+                                 name);
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

enumerator

a GFileEnumerator

 

info

a GFileInfo gotten from g_file_enumerator_next_file() +or the async equivalents.

 
+
+
+

Returns

+

a GFile for the GFileInfo passed it.

+

[transfer full]

+
+

Since: 2.36

+
+
+
+

Types and Values

+
+

GFileEnumerator

+
typedef struct _GFileEnumerator GFileEnumerator;
+

A per matched file iterator.

+
+
+
+

Property Details

+
+

The “container” property

+
  “container”                GFile *
+

The container that is being enumerated.

+

Flags: Write / Construct Only

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GFileIOStream.html b/docs/reference/gio/html/GFileIOStream.html new file mode 100644 index 0000000..f3925e5 --- /dev/null +++ b/docs/reference/gio/html/GFileIOStream.html @@ -0,0 +1,350 @@ + + + + +GFileIOStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GFileIOStream

+

GFileIOStream — File read and write streaming operations

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+char * + +g_file_io_stream_get_etag () +
+GFileInfo * + +g_file_io_stream_query_info () +
+void + +g_file_io_stream_query_info_async () +
+GFileInfo * + +g_file_io_stream_query_info_finish () +
+
+
+

Types and Values

+
++++ + + + + +
 GFileIOStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GIOStream
+        ╰── GFileIOStream
+
+
+
+

Implemented Interfaces

+

+GFileIOStream implements + GSeekable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GFileIOStream provides io streams that both read and write to the same +file handle.

+

GFileIOStream implements GSeekable, which allows the io +stream to jump to arbitrary positions in the file and to truncate +the file, provided the filesystem of the file supports these +operations.

+

To find the position of a file io stream, use +g_seekable_tell().

+

To find out if a file io stream supports seeking, use g_seekable_can_seek(). +To position a file io stream, use g_seekable_seek(). +To find out if a file io stream supports truncating, use +g_seekable_can_truncate(). To truncate a file io +stream, use g_seekable_truncate().

+

The default implementation of all the GFileIOStream operations +and the implementation of GSeekable just call into the same operations +on the output stream.

+
+
+

Functions

+
+

g_file_io_stream_get_etag ()

+
char *
+g_file_io_stream_get_etag (GFileIOStream *stream);
+

Gets the entity tag for the file when it has been written. +This must be called after the stream has been written +and closed, as the etag can change while writing.

+
+

Parameters

+
+++++ + + + + + +

stream

a GFileIOStream.

 
+
+
+

Returns

+

the entity tag for the stream.

+
+

Since: 2.22

+
+
+
+

g_file_io_stream_query_info ()

+
GFileInfo *
+g_file_io_stream_query_info (GFileIOStream *stream,
+                             const char *attributes,
+                             GCancellable *cancellable,
+                             GError **error);
+

Queries a file io stream for the given attributes +. +This function blocks while querying the stream. For the asynchronous +version of this function, see g_file_io_stream_query_info_async(). +While the stream is blocked, the stream will set the pending flag +internally, and any other operations on the stream will fail with +G_IO_ERROR_PENDING.

+

Can fail if the stream was already closed (with error + being set to +G_IO_ERROR_CLOSED), the stream has pending operations (with error + being +set to G_IO_ERROR_PENDING), or if querying info is not supported for +the stream's interface (with error + being set to G_IO_ERROR_NOT_SUPPORTED). I +all cases of failure, NULL will be returned.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be set, and NULL will +be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GFileIOStream.

 

attributes

a file attribute query string.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

a GError, NULL to ignore.

 
+
+
+

Returns

+

a GFileInfo for the stream +, or NULL on error.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_file_io_stream_query_info_async ()

+
void
+g_file_io_stream_query_info_async (GFileIOStream *stream,
+                                   const char *attributes,
+                                   int io_priority,
+                                   GCancellable *cancellable,
+                                   GAsyncReadyCallback callback,
+                                   gpointer user_data);
+

Asynchronously queries the stream + for a GFileInfo. When completed, +callback + will be called with a GAsyncResult which can be used to +finish the operation with g_file_io_stream_query_info_finish().

+

For the synchronous version of this function, see +g_file_io_stream_query_info().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GFileIOStream.

 

attributes

a file attribute query string.

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

callback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+

Since: 2.22

+
+
+
+

g_file_io_stream_query_info_finish ()

+
GFileInfo *
+g_file_io_stream_query_info_finish (GFileIOStream *stream,
+                                    GAsyncResult *result,
+                                    GError **error);
+

Finalizes the asynchronous query started +by g_file_io_stream_query_info_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GFileIOStream.

 

result

a GAsyncResult.

 

error

a GError, NULL to ignore.

 
+
+
+

Returns

+

A GFileInfo for the finished query.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

GFileIOStream

+
typedef struct _GFileIOStream GFileIOStream;
+

A subclass of GIOStream for opened files. This adds +a few file-specific operations and seeking and truncating.

+

GFileIOStream implements GSeekable.

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GFileIcon.html b/docs/reference/gio/html/GFileIcon.html new file mode 100644 index 0000000..4121d59 --- /dev/null +++ b/docs/reference/gio/html/GFileIcon.html @@ -0,0 +1,199 @@ + + + + +GFileIcon: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GFileIcon

+

GFileIcon — Icons pointing to an image file

+
+
+

Functions

+
++++ + + + + + + + + + + +
+GIcon * + +g_file_icon_new () +
+GFile * + +g_file_icon_get_file () +
+
+
+

Properties

+
+++++ + + + + + +
+GFile *fileRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GFileIcon
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GFileIcon
+
+
+
+

Implemented Interfaces

+

+GFileIcon implements + GIcon and GLoadableIcon.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GFileIcon specifies an icon by pointing to an image file +to be used as icon.

+
+
+

Functions

+
+

g_file_icon_new ()

+
GIcon *
+g_file_icon_new (GFile *file);
+

Creates a new icon for a file.

+
+

Parameters

+
+++++ + + + + + +

file

a GFile.

 
+
+
+

Returns

+

a GIcon for the given +file +, or NULL on error.

+

[transfer full][type GFileIcon]

+
+
+
+
+

g_file_icon_get_file ()

+
GFile *
+g_file_icon_get_file (GFileIcon *icon);
+

Gets the GFile associated with the given icon +.

+
+

Parameters

+
+++++ + + + + + +

icon

a GIcon.

 
+
+
+

Returns

+

a GFile, or NULL.

+

[transfer none]

+
+
+
+
+

Types and Values

+
+

GFileIcon

+
typedef struct _GFileIcon GFileIcon;
+

Gets an icon for a GFile. Implements GLoadableIcon.

+
+
+
+

Property Details

+
+

The “file” property

+
  “file”                     GFile *
+

The file containing the icon.

+

Flags: Read / Write / Construct Only

+
+
+
+

See Also

+

GIcon, GLoadableIcon

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GFileInfo.html b/docs/reference/gio/html/GFileInfo.html new file mode 100644 index 0000000..28270d1 --- /dev/null +++ b/docs/reference/gio/html/GFileInfo.html @@ -0,0 +1,4244 @@ + + + + +GFileInfo: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GFileInfo

+

GFileInfo — File Information and Attributes

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GFileInfo * + +g_file_info_new () +
+GFileInfo * + +g_file_info_dup () +
+void + +g_file_info_copy_into () +
+gboolean + +g_file_info_has_attribute () +
+gboolean + +g_file_info_has_namespace () +
+char ** + +g_file_info_list_attributes () +
+GFileAttributeType + +g_file_info_get_attribute_type () +
+void + +g_file_info_remove_attribute () +
+char * + +g_file_info_get_attribute_as_string () +
+gboolean + +g_file_info_get_attribute_data () +
+GFileAttributeStatus + +g_file_info_get_attribute_status () +
const char * + +g_file_info_get_attribute_string () +
+char ** + +g_file_info_get_attribute_stringv () +
const char * + +g_file_info_get_attribute_byte_string () +
+gboolean + +g_file_info_get_attribute_boolean () +
+guint32 + +g_file_info_get_attribute_uint32 () +
+gint32 + +g_file_info_get_attribute_int32 () +
+guint64 + +g_file_info_get_attribute_uint64 () +
+gint64 + +g_file_info_get_attribute_int64 () +
+GObject * + +g_file_info_get_attribute_object () +
+void + +g_file_info_set_attribute () +
+gboolean + +g_file_info_set_attribute_status () +
+void + +g_file_info_set_attribute_string () +
+void + +g_file_info_set_attribute_stringv () +
+void + +g_file_info_set_attribute_byte_string () +
+void + +g_file_info_set_attribute_boolean () +
+void + +g_file_info_set_attribute_uint32 () +
+void + +g_file_info_set_attribute_int32 () +
+void + +g_file_info_set_attribute_uint64 () +
+void + +g_file_info_set_attribute_int64 () +
+void + +g_file_info_set_attribute_object () +
+void + +g_file_info_clear_status () +
+GFileType + +g_file_info_get_file_type () +
+gboolean + +g_file_info_get_is_hidden () +
+gboolean + +g_file_info_get_is_backup () +
+gboolean + +g_file_info_get_is_symlink () +
const char * + +g_file_info_get_name () +
const char * + +g_file_info_get_display_name () +
const char * + +g_file_info_get_edit_name () +
+GIcon * + +g_file_info_get_icon () +
+GIcon * + +g_file_info_get_symbolic_icon () +
const char * + +g_file_info_get_content_type () +
+goffset + +g_file_info_get_size () +
+void + +g_file_info_get_modification_time () +
const char * + +g_file_info_get_symlink_target () +
const char * + +g_file_info_get_etag () +
+gint32 + +g_file_info_get_sort_order () +
+GDateTime * + +g_file_info_get_deletion_date () +
+void + +g_file_info_set_attribute_mask () +
+void + +g_file_info_unset_attribute_mask () +
+void + +g_file_info_set_file_type () +
+void + +g_file_info_set_is_hidden () +
+void + +g_file_info_set_is_symlink () +
+void + +g_file_info_set_name () +
+void + +g_file_info_set_display_name () +
+void + +g_file_info_set_edit_name () +
+void + +g_file_info_set_icon () +
+void + +g_file_info_set_symbolic_icon () +
+void + +g_file_info_set_content_type () +
+void + +g_file_info_set_size () +
+void + +g_file_info_set_modification_time () +
+void + +g_file_info_set_symlink_target () +
+void + +g_file_info_set_sort_order () +
+GFileAttributeMatcher * + +g_file_attribute_matcher_new () +
+GFileAttributeMatcher * + +g_file_attribute_matcher_ref () +
+GFileAttributeMatcher * + +g_file_attribute_matcher_subtract () +
+void + +g_file_attribute_matcher_unref () +
+gboolean + +g_file_attribute_matcher_matches () +
+gboolean + +g_file_attribute_matcher_matches_only () +
+gboolean + +g_file_attribute_matcher_enumerate_namespace () +
const char * + +g_file_attribute_matcher_enumerate_next () +
+char * + +g_file_attribute_matcher_to_string () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 GFileAttributeMatcher
enumGFileType
 GFileInfo
#defineG_FILE_ATTRIBUTE_STANDARD_TYPE
#defineG_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN
#defineG_FILE_ATTRIBUTE_STANDARD_IS_BACKUP
#defineG_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK
#defineG_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL
#defineG_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE
#defineG_FILE_ATTRIBUTE_STANDARD_NAME
#defineG_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME
#defineG_FILE_ATTRIBUTE_STANDARD_EDIT_NAME
#defineG_FILE_ATTRIBUTE_STANDARD_COPY_NAME
#defineG_FILE_ATTRIBUTE_STANDARD_ICON
#defineG_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON
#defineG_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE
#defineG_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE
#defineG_FILE_ATTRIBUTE_STANDARD_SIZE
#defineG_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE
#defineG_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET
#defineG_FILE_ATTRIBUTE_STANDARD_TARGET_URI
#defineG_FILE_ATTRIBUTE_STANDARD_SORT_ORDER
#defineG_FILE_ATTRIBUTE_ETAG_VALUE
#defineG_FILE_ATTRIBUTE_ID_FILE
#defineG_FILE_ATTRIBUTE_ID_FILESYSTEM
#defineG_FILE_ATTRIBUTE_ACCESS_CAN_READ
#defineG_FILE_ATTRIBUTE_ACCESS_CAN_WRITE
#defineG_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE
#defineG_FILE_ATTRIBUTE_ACCESS_CAN_DELETE
#defineG_FILE_ATTRIBUTE_ACCESS_CAN_TRASH
#defineG_FILE_ATTRIBUTE_ACCESS_CAN_RENAME
#defineG_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT
#defineG_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT
#defineG_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT
#defineG_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE
#defineG_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE
#defineG_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI
#defineG_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL
#defineG_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC
#defineG_FILE_ATTRIBUTE_MOUNTABLE_CAN_START
#defineG_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED
#defineG_FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP
#defineG_FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE
#defineG_FILE_ATTRIBUTE_TIME_MODIFIED
#defineG_FILE_ATTRIBUTE_TIME_MODIFIED_USEC
#defineG_FILE_ATTRIBUTE_TIME_ACCESS
#defineG_FILE_ATTRIBUTE_TIME_ACCESS_USEC
#defineG_FILE_ATTRIBUTE_TIME_CHANGED
#defineG_FILE_ATTRIBUTE_TIME_CHANGED_USEC
#defineG_FILE_ATTRIBUTE_TIME_CREATED
#defineG_FILE_ATTRIBUTE_TIME_CREATED_USEC
#defineG_FILE_ATTRIBUTE_UNIX_DEVICE
#defineG_FILE_ATTRIBUTE_UNIX_INODE
#defineG_FILE_ATTRIBUTE_UNIX_MODE
#defineG_FILE_ATTRIBUTE_UNIX_NLINK
#defineG_FILE_ATTRIBUTE_UNIX_UID
#defineG_FILE_ATTRIBUTE_UNIX_GID
#defineG_FILE_ATTRIBUTE_UNIX_RDEV
#defineG_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE
#defineG_FILE_ATTRIBUTE_UNIX_BLOCKS
#defineG_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT
#defineG_FILE_ATTRIBUTE_DOS_IS_ARCHIVE
#defineG_FILE_ATTRIBUTE_DOS_IS_SYSTEM
#defineG_FILE_ATTRIBUTE_OWNER_USER
#defineG_FILE_ATTRIBUTE_OWNER_USER_REAL
#defineG_FILE_ATTRIBUTE_OWNER_GROUP
#defineG_FILE_ATTRIBUTE_THUMBNAIL_PATH
#defineG_FILE_ATTRIBUTE_THUMBNAILING_FAILED
#defineG_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID
#defineG_FILE_ATTRIBUTE_PREVIEW_ICON
#defineG_FILE_ATTRIBUTE_FILESYSTEM_SIZE
#defineG_FILE_ATTRIBUTE_FILESYSTEM_FREE
#defineG_FILE_ATTRIBUTE_FILESYSTEM_USED
#defineG_FILE_ATTRIBUTE_FILESYSTEM_TYPE
#defineG_FILE_ATTRIBUTE_FILESYSTEM_READONLY
#defineG_FILE_ATTRIBUTE_GVFS_BACKEND
#defineG_FILE_ATTRIBUTE_SELINUX_CONTEXT
#defineG_FILE_ATTRIBUTE_TRASH_ITEM_COUNT
#defineG_FILE_ATTRIBUTE_TRASH_DELETION_DATE
#defineG_FILE_ATTRIBUTE_TRASH_ORIG_PATH
#defineG_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW
#defineG_FILE_ATTRIBUTE_STANDARD_DESCRIPTION
+
+
+

Object Hierarchy

+
    GBoxed
+    ╰── GFileAttributeMatcher
+    GObject
+    ╰── GFileInfo
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Functionality for manipulating basic metadata for files. GFileInfo +implements methods for getting information that all files should +contain, and allows for manipulation of extended attributes.

+

See GFileAttribute for more information on how +GIO handles file attributes.

+

To obtain a GFileInfo for a GFile, use g_file_query_info() (or its +async variant). To obtain a GFileInfo for a file input or output +stream, use g_file_input_stream_query_info() or +g_file_output_stream_query_info() (or their async variants).

+

To change the actual attributes of a file, you should then set the +attribute in the GFileInfo and call g_file_set_attributes_from_info() +or g_file_set_attributes_async() on a GFile.

+

However, not all attributes can be changed in the file. For instance, +the actual size of a file cannot be changed via g_file_info_set_size(). +You may call g_file_query_settable_attributes() and +g_file_query_writable_namespaces() to discover the settable attributes +of a particular file at runtime.

+

GFileAttributeMatcher allows for searching through a GFileInfo for +attributes.

+
+
+

Functions

+
+

g_file_info_new ()

+
GFileInfo *
+g_file_info_new (void);
+

Creates a new file info structure.

+
+

Returns

+

a GFileInfo.

+
+
+
+
+

g_file_info_dup ()

+
GFileInfo *
+g_file_info_dup (GFileInfo *other);
+

Duplicates a file info structure.

+
+

Parameters

+
+++++ + + + + + +

other

a GFileInfo.

 
+
+
+

Returns

+

a duplicate GFileInfo of other +.

+

[transfer full]

+
+
+
+
+

g_file_info_copy_into ()

+
void
+g_file_info_copy_into (GFileInfo *src_info,
+                       GFileInfo *dest_info);
+

First clears all of the GFileAttribute of dest_info +, +and then copies all of the file attributes from src_info + to dest_info +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

src_info

source to copy attributes from.

 

dest_info

destination to copy attributes to.

 
+
+
+
+
+

g_file_info_has_attribute ()

+
gboolean
+g_file_info_has_attribute (GFileInfo *info,
+                           const char *attribute);
+

Checks if a file info structure has an attribute named attribute +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 
+
+
+

Returns

+

TRUE if Ginfo +has an attribute named attribute +, +FALSE otherwise.

+
+
+
+
+

g_file_info_has_namespace ()

+
gboolean
+g_file_info_has_namespace (GFileInfo *info,
+                           const char *name_space);
+

Checks if a file info structure has an attribute in the +specified name_space +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

name_space

a file attribute namespace.

 
+
+
+

Returns

+

TRUE if Ginfo +has an attribute in name_space +, +FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_file_info_list_attributes ()

+
char **
+g_file_info_list_attributes (GFileInfo *info,
+                             const char *name_space);
+

Lists the file info structure's attributes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

name_space

a file attribute key's namespace, or NULL to list +all attributes.

[nullable]
+
+
+

Returns

+

a +null-terminated array of strings of all of the possible attribute +types for the given name_space +, or NULL on error.

+

[nullable][array zero-terminated=1][transfer full]

+
+
+
+
+

g_file_info_get_attribute_type ()

+
GFileAttributeType
+g_file_info_get_attribute_type (GFileInfo *info,
+                                const char *attribute);
+

Gets the attribute type for an attribute key.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 
+
+
+

Returns

+

a GFileAttributeType for the given attribute +, or +G_FILE_ATTRIBUTE_TYPE_INVALID if the key is not set.

+
+
+
+
+

g_file_info_remove_attribute ()

+
void
+g_file_info_remove_attribute (GFileInfo *info,
+                              const char *attribute);
+

Removes all cases of attribute + from info + if it exists.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 
+
+
+
+
+

g_file_info_get_attribute_as_string ()

+
char *
+g_file_info_get_attribute_as_string (GFileInfo *info,
+                                     const char *attribute);
+

Gets the value of a attribute, formated as a string. +This escapes things as needed to make the string valid +utf8.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 
+
+
+

Returns

+

a UTF-8 string associated with the given attribute +. +When you're done with the string it must be freed with g_free().

+
+
+
+
+

g_file_info_get_attribute_data ()

+
gboolean
+g_file_info_get_attribute_data (GFileInfo *info,
+                                const char *attribute,
+                                GFileAttributeType *type,
+                                gpointer *value_pp,
+                                GFileAttributeStatus *status);
+

Gets the attribute type, value and status for an attribute key.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

info

a GFileInfo

 

attribute

a file attribute key

 

type

return location for the attribute type, or NULL.

[out][optional]

value_pp

return location for the +attribute value, or NULL; the attribute value will not be NULL.

[out][optional][not nullable]

status

return location for the attribute status, or NULL.

[out][optional]
+
+
+

Returns

+

TRUE if info +has an attribute named attribute +, +FALSE otherwise.

+

[transfer none]

+
+
+
+
+

g_file_info_get_attribute_status ()

+
GFileAttributeStatus
+g_file_info_get_attribute_status (GFileInfo *info,
+                                  const char *attribute);
+

Gets the attribute status for an attribute key.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo

 

attribute

a file attribute key

 
+
+
+

Returns

+

a GFileAttributeStatus for the given attribute +, or +G_FILE_ATTRIBUTE_STATUS_UNSET if the key is invalid.

+
+
+
+
+

g_file_info_get_attribute_string ()

+
const char *
+g_file_info_get_attribute_string (GFileInfo *info,
+                                  const char *attribute);
+

Gets the value of a string attribute. If the attribute does +not contain a string, NULL will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 
+
+
+

Returns

+

the contents of the attribute +value as a UTF-8 string, or +NULL otherwise.

+
+
+
+
+

g_file_info_get_attribute_stringv ()

+
char **
+g_file_info_get_attribute_stringv (GFileInfo *info,
+                                   const char *attribute);
+

Gets the value of a stringv attribute. If the attribute does +not contain a stringv, NULL will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 
+
+
+

Returns

+

the contents of the attribute +value as a stringv, or +NULL otherwise. Do not free. These returned strings are UTF-8.

+

[transfer none]

+
+

Since: 2.22

+
+
+
+

g_file_info_get_attribute_byte_string ()

+
const char *
+g_file_info_get_attribute_byte_string (GFileInfo *info,
+                                       const char *attribute);
+

Gets the value of a byte string attribute. If the attribute does +not contain a byte string, NULL will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 
+
+
+

Returns

+

the contents of the attribute +value as a byte string, or +NULL otherwise.

+
+
+
+
+

g_file_info_get_attribute_boolean ()

+
gboolean
+g_file_info_get_attribute_boolean (GFileInfo *info,
+                                   const char *attribute);
+

Gets the value of a boolean attribute. If the attribute does not +contain a boolean value, FALSE will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 
+
+
+

Returns

+

the boolean value contained within the attribute.

+
+
+
+
+

g_file_info_get_attribute_uint32 ()

+
guint32
+g_file_info_get_attribute_uint32 (GFileInfo *info,
+                                  const char *attribute);
+

Gets an unsigned 32-bit integer contained within the attribute. If the +attribute does not contain an unsigned 32-bit integer, or is invalid, +0 will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 
+
+
+

Returns

+

an unsigned 32-bit integer from the attribute.

+
+
+
+
+

g_file_info_get_attribute_int32 ()

+
gint32
+g_file_info_get_attribute_int32 (GFileInfo *info,
+                                 const char *attribute);
+

Gets a signed 32-bit integer contained within the attribute. If the +attribute does not contain a signed 32-bit integer, or is invalid, +0 will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 
+
+
+

Returns

+

a signed 32-bit integer from the attribute.

+
+
+
+
+

g_file_info_get_attribute_uint64 ()

+
guint64
+g_file_info_get_attribute_uint64 (GFileInfo *info,
+                                  const char *attribute);
+

Gets a unsigned 64-bit integer contained within the attribute. If the +attribute does not contain an unsigned 64-bit integer, or is invalid, +0 will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 
+
+
+

Returns

+

a unsigned 64-bit integer from the attribute.

+
+
+
+
+

g_file_info_get_attribute_int64 ()

+
gint64
+g_file_info_get_attribute_int64 (GFileInfo *info,
+                                 const char *attribute);
+

Gets a signed 64-bit integer contained within the attribute. If the +attribute does not contain an signed 64-bit integer, or is invalid, +0 will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 
+
+
+

Returns

+

a signed 64-bit integer from the attribute.

+
+
+
+
+

g_file_info_get_attribute_object ()

+
GObject *
+g_file_info_get_attribute_object (GFileInfo *info,
+                                  const char *attribute);
+

Gets the value of a GObject attribute. If the attribute does +not contain a GObject, NULL will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 
+
+
+

Returns

+

a GObject associated with the given attribute +, or +NULL otherwise.

+

[transfer none]

+
+
+
+
+

g_file_info_set_attribute ()

+
void
+g_file_info_set_attribute (GFileInfo *info,
+                           const char *attribute,
+                           GFileAttributeType type,
+                           gpointer value_p);
+

Sets the attribute + to contain the given value, if possible. To unset the +attribute, use G_ATTRIBUTE_TYPE_INVALID for type +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 

type

a GFileAttributeType

 

value_p

pointer to the value.

[not nullable]
+
+
+
+
+

g_file_info_set_attribute_status ()

+
gboolean
+g_file_info_set_attribute_status (GFileInfo *info,
+                                  const char *attribute,
+                                  GFileAttributeStatus status);
+

Sets the attribute status for an attribute key. This is only +needed by external code that implement g_file_set_attributes_from_info() +or similar functions.

+

The attribute must exist in info + for this to work. Otherwise FALSE +is returned and info + is unchanged.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

info

a GFileInfo

 

attribute

a file attribute key

 

status

a GFileAttributeStatus

 
+
+
+

Returns

+

TRUE if the status was changed, FALSE if the key was not set.

+
+

Since: 2.22

+
+
+
+

g_file_info_set_attribute_string ()

+
void
+g_file_info_set_attribute_string (GFileInfo *info,
+                                  const char *attribute,
+                                  const char *attr_value);
+

Sets the attribute + to contain the given attr_value +, +if possible.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 

attr_value

a UTF-8 string.

 
+
+
+
+
+

g_file_info_set_attribute_stringv ()

+
void
+g_file_info_set_attribute_stringv (GFileInfo *info,
+                                   const char *attribute,
+                                   char **attr_value);
+

Sets the attribute + to contain the given attr_value +, +if possible.

+

Sinze: 2.22

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key

 

attr_value

a NULL terminated array of UTF-8 strings.

[array][element-type utf8]
+
+
+
+
+

g_file_info_set_attribute_byte_string ()

+
void
+g_file_info_set_attribute_byte_string (GFileInfo *info,
+                                       const char *attribute,
+                                       const char *attr_value);
+

Sets the attribute + to contain the given attr_value +, +if possible.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 

attr_value

a byte string.

 
+
+
+
+
+

g_file_info_set_attribute_boolean ()

+
void
+g_file_info_set_attribute_boolean (GFileInfo *info,
+                                   const char *attribute,
+                                   gboolean attr_value);
+

Sets the attribute + to contain the given attr_value +, +if possible.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 

attr_value

a boolean value.

 
+
+
+
+
+

g_file_info_set_attribute_uint32 ()

+
void
+g_file_info_set_attribute_uint32 (GFileInfo *info,
+                                  const char *attribute,
+                                  guint32 attr_value);
+

Sets the attribute + to contain the given attr_value +, +if possible.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 

attr_value

an unsigned 32-bit integer.

 
+
+
+
+
+

g_file_info_set_attribute_int32 ()

+
void
+g_file_info_set_attribute_int32 (GFileInfo *info,
+                                 const char *attribute,
+                                 gint32 attr_value);
+

Sets the attribute + to contain the given attr_value +, +if possible.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 

attr_value

a signed 32-bit integer

 
+
+
+
+
+

g_file_info_set_attribute_uint64 ()

+
void
+g_file_info_set_attribute_uint64 (GFileInfo *info,
+                                  const char *attribute,
+                                  guint64 attr_value);
+

Sets the attribute + to contain the given attr_value +, +if possible.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 

attr_value

an unsigned 64-bit integer.

 
+
+
+
+
+

g_file_info_set_attribute_int64 ()

+
void
+g_file_info_set_attribute_int64 (GFileInfo *info,
+                                 const char *attribute,
+                                 gint64 attr_value);
+

Sets the attribute + to contain the given attr_value +, +if possible.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

attribute name to set.

 

attr_value

int64 value to set attribute to.

 
+
+
+
+
+

g_file_info_set_attribute_object ()

+
void
+g_file_info_set_attribute_object (GFileInfo *info,
+                                  const char *attribute,
+                                  GObject *attr_value);
+

Sets the attribute + to contain the given attr_value +, +if possible.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

info

a GFileInfo.

 

attribute

a file attribute key.

 

attr_value

a GObject.

 
+
+
+
+
+

g_file_info_clear_status ()

+
void
+g_file_info_clear_status (GFileInfo *info);
+

Clears the status information from info +.

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+
+
+

g_file_info_get_file_type ()

+
GFileType
+g_file_info_get_file_type (GFileInfo *info);
+

Gets a file's type (whether it is a regular file, symlink, etc). +This is different from the file's content type, see g_file_info_get_content_type().

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+

Returns

+

a GFileType for the given file.

+
+
+
+
+

g_file_info_get_is_hidden ()

+
gboolean
+g_file_info_get_is_hidden (GFileInfo *info);
+

Checks if a file is hidden.

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+

Returns

+

TRUE if the file is a hidden file, FALSE otherwise.

+
+
+
+
+

g_file_info_get_is_backup ()

+
gboolean
+g_file_info_get_is_backup (GFileInfo *info);
+

Checks if a file is a backup file.

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+

Returns

+

TRUE if file is a backup file, FALSE otherwise.

+
+
+
+
+

g_file_info_get_is_symlink ()

+
gboolean
+g_file_info_get_is_symlink (GFileInfo *info);
+

Checks if a file is a symlink.

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+

Returns

+

TRUE if the given info +is a symlink.

+
+
+
+
+

g_file_info_get_name ()

+
const char *
+g_file_info_get_name (GFileInfo *info);
+

Gets the name for a file.

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+

Returns

+

a string containing the file name.

+
+
+
+
+

g_file_info_get_display_name ()

+
const char *
+g_file_info_get_display_name (GFileInfo *info);
+

Gets a display name for a file.

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+

Returns

+

a string containing the display name.

+
+
+
+
+

g_file_info_get_edit_name ()

+
const char *
+g_file_info_get_edit_name (GFileInfo *info);
+

Gets the edit name for a file.

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+

Returns

+

a string containing the edit name.

+
+
+
+
+

g_file_info_get_icon ()

+
GIcon *
+g_file_info_get_icon (GFileInfo *info);
+

Gets the icon for a file.

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+

Returns

+

GIcon for the given info +.

+

[transfer none]

+
+
+
+
+

g_file_info_get_symbolic_icon ()

+
GIcon *
+g_file_info_get_symbolic_icon (GFileInfo *info);
+

Gets the symbolic icon for a file.

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+

Returns

+

GIcon for the given info +.

+

[transfer none]

+
+

Since: 2.34

+
+
+
+

g_file_info_get_content_type ()

+
const char *
+g_file_info_get_content_type (GFileInfo *info);
+

Gets the file's content type.

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+

Returns

+

a string containing the file's content type.

+
+
+
+
+

g_file_info_get_size ()

+
goffset
+g_file_info_get_size (GFileInfo *info);
+

Gets the file's size.

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+

Returns

+

a goffset containing the file's size.

+
+
+
+
+

g_file_info_get_modification_time ()

+
void
+g_file_info_get_modification_time (GFileInfo *info,
+                                   GTimeVal *result);
+

Gets the modification time of the current info + and sets it +in result +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

result

a GTimeVal.

[out caller-allocates]
+
+
+
+
+

g_file_info_get_symlink_target ()

+
const char *
+g_file_info_get_symlink_target (GFileInfo *info);
+

Gets the symlink target for a given GFileInfo.

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+

Returns

+

a string containing the symlink target.

+
+
+
+
+

g_file_info_get_etag ()

+
const char *
+g_file_info_get_etag (GFileInfo *info);
+

Gets the entity tag for a given +GFileInfo. See G_FILE_ATTRIBUTE_ETAG_VALUE.

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+

Returns

+

a string containing the value of the "etag:value" attribute.

+
+
+
+
+

g_file_info_get_sort_order ()

+
gint32
+g_file_info_get_sort_order (GFileInfo *info);
+

Gets the value of the sort_order attribute from the GFileInfo. +See G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER.

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+

Returns

+

a gint32 containing the value of the "standard::sort_order" attribute.

+
+
+
+
+

g_file_info_get_deletion_date ()

+
GDateTime *
+g_file_info_get_deletion_date (GFileInfo *info);
+

Returns the GDateTime representing the deletion date of the file, as +available in G_FILE_ATTRIBUTE_TRASH_DELETION_DATE. If the +G_FILE_ATTRIBUTE_TRASH_DELETION_DATE attribute is unset, NULL is returned.

+
+

Parameters

+
+++++ + + + + + +

info

a GFileInfo.

 
+
+
+

Returns

+

a GDateTime, or NULL.

+
+

Since: 2.36

+
+
+
+

g_file_info_set_attribute_mask ()

+
void
+g_file_info_set_attribute_mask (GFileInfo *info,
+                                GFileAttributeMatcher *mask);
+

Sets mask + on info + to match specific attribute types.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

mask

a GFileAttributeMatcher.

 
+
+
+
+
+

g_file_info_unset_attribute_mask ()

+
void
+g_file_info_unset_attribute_mask (GFileInfo *info);
+

Unsets a mask set by g_file_info_set_attribute_mask(), if one +is set.

+
+

Parameters

+
+++++ + + + + + +

info

GFileInfo.

 
+
+
+
+
+

g_file_info_set_file_type ()

+
void
+g_file_info_set_file_type (GFileInfo *info,
+                           GFileType type);
+

Sets the file type in a GFileInfo to type +. +See G_FILE_ATTRIBUTE_STANDARD_TYPE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

type

a GFileType.

 
+
+
+
+
+

g_file_info_set_is_hidden ()

+
void
+g_file_info_set_is_hidden (GFileInfo *info,
+                           gboolean is_hidden);
+

Sets the "is_hidden" attribute in a GFileInfo according to is_hidden +. +See G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

is_hidden

a gboolean.

 
+
+
+
+
+

g_file_info_set_is_symlink ()

+
void
+g_file_info_set_is_symlink (GFileInfo *info,
+                            gboolean is_symlink);
+

Sets the "is_symlink" attribute in a GFileInfo according to is_symlink +. +See G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

is_symlink

a gboolean.

 
+
+
+
+
+

g_file_info_set_name ()

+
void
+g_file_info_set_name (GFileInfo *info,
+                      const char *name);
+

Sets the name attribute for the current GFileInfo. +See G_FILE_ATTRIBUTE_STANDARD_NAME.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

name

a string containing a name.

 
+
+
+
+
+

g_file_info_set_display_name ()

+
void
+g_file_info_set_display_name (GFileInfo *info,
+                              const char *display_name);
+

Sets the display name for the current GFileInfo. +See G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

display_name

a string containing a display name.

 
+
+
+
+
+

g_file_info_set_edit_name ()

+
void
+g_file_info_set_edit_name (GFileInfo *info,
+                           const char *edit_name);
+

Sets the edit name for the current file. +See G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

edit_name

a string containing an edit name.

 
+
+
+
+
+

g_file_info_set_icon ()

+
void
+g_file_info_set_icon (GFileInfo *info,
+                      GIcon *icon);
+

Sets the icon for a given GFileInfo. +See G_FILE_ATTRIBUTE_STANDARD_ICON.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

icon

a GIcon.

 
+
+
+
+
+

g_file_info_set_symbolic_icon ()

+
void
+g_file_info_set_symbolic_icon (GFileInfo *info,
+                               GIcon *icon);
+

Sets the symbolic icon for a given GFileInfo. +See G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

icon

a GIcon.

 
+
+

Since: 2.34

+
+
+
+

g_file_info_set_content_type ()

+
void
+g_file_info_set_content_type (GFileInfo *info,
+                              const char *content_type);
+

Sets the content type attribute for a given GFileInfo. +See G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

content_type

a content type. See GContentType

 
+
+
+
+
+

g_file_info_set_size ()

+
void
+g_file_info_set_size (GFileInfo *info,
+                      goffset size);
+

Sets the G_FILE_ATTRIBUTE_STANDARD_SIZE attribute in the file info +to the given size.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

size

a goffset containing the file's size.

 
+
+
+
+
+

g_file_info_set_modification_time ()

+
void
+g_file_info_set_modification_time (GFileInfo *info,
+                                   GTimeVal *mtime);
+

Sets the G_FILE_ATTRIBUTE_TIME_MODIFIED attribute in the file +info to the given time value.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

mtime

a GTimeVal.

 
+
+
+
+
+

g_file_info_set_symlink_target ()

+
void
+g_file_info_set_symlink_target (GFileInfo *info,
+                                const char *symlink_target);
+

Sets the G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET attribute in the file info +to the given symlink target.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

symlink_target

a static string containing a path to a symlink target.

 
+
+
+
+
+

g_file_info_set_sort_order ()

+
void
+g_file_info_set_sort_order (GFileInfo *info,
+                            gint32 sort_order);
+

Sets the sort order attribute in the file info structure. See +G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GFileInfo.

 

sort_order

a sort order integer.

 
+
+
+
+
+

g_file_attribute_matcher_new ()

+
GFileAttributeMatcher *
+g_file_attribute_matcher_new (const char *attributes);
+

Creates a new file attribute matcher, which matches attributes +against a given string. GFileAttributeMatchers are reference +counted structures, and are created with a reference count of 1. If +the number of references falls to 0, the GFileAttributeMatcher is +automatically destroyed.

+

The attribute + string should be formatted with specific keys separated +from namespaces with a double colon. Several "namespace::key" strings may be +concatenated with a single comma (e.g. "standard::type,standard::is-hidden"). +The wildcard "*" may be used to match all keys and namespaces, or +"namespace::*" will match all keys in a given namespace.

+
+

Examples of file attribute matcher strings and results

+
    +
  • "*": matches all attributes.

  • +
  • "standard::is-hidden": matches only the key is-hidden in the +standard namespace.

  • +
  • "standard::type,unix::*": matches the type key in the standard +namespace and all keys in the unix namespace.

  • +
+
+
+

Parameters

+
+++++ + + + + + +

attributes

an attribute string to match.

 
+
+
+

Returns

+

a GFileAttributeMatcher

+
+
+
+
+

g_file_attribute_matcher_ref ()

+
GFileAttributeMatcher *
+g_file_attribute_matcher_ref (GFileAttributeMatcher *matcher);
+

References a file attribute matcher.

+
+

Parameters

+
+++++ + + + + + +

matcher

a GFileAttributeMatcher.

 
+
+
+

Returns

+

a GFileAttributeMatcher.

+
+
+
+
+

g_file_attribute_matcher_subtract ()

+
GFileAttributeMatcher *
+g_file_attribute_matcher_subtract (GFileAttributeMatcher *matcher,
+                                   GFileAttributeMatcher *subtract);
+

Subtracts all attributes of subtract + from matcher + and returns +a matcher that supports those attributes.

+

Note that currently it is not possible to remove a single +attribute when the matcher + matches the whole namespace - or remove +a namespace or attribute when the matcher matches everything. This +is a limitation of the current implementation, but may be fixed +in the future.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

matcher

Matcher to subtract from

 

subtract

The matcher to subtract

 
+
+
+

Returns

+

A file attribute matcher matching all attributes of +matcher +that are not matched by subtract +

+
+
+
+
+

g_file_attribute_matcher_unref ()

+
void
+g_file_attribute_matcher_unref (GFileAttributeMatcher *matcher);
+

Unreferences matcher +. If the reference count falls below 1, +the matcher + is automatically freed.

+
+

Parameters

+
+++++ + + + + + +

matcher

a GFileAttributeMatcher.

 
+
+
+
+
+

g_file_attribute_matcher_matches ()

+
gboolean
+g_file_attribute_matcher_matches (GFileAttributeMatcher *matcher,
+                                  const char *attribute);
+

Checks if an attribute will be matched by an attribute matcher. If +the matcher was created with the "*" matching string, this function +will always return TRUE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

matcher

a GFileAttributeMatcher.

 

attribute

a file attribute key.

 
+
+
+

Returns

+

TRUE if attribute +matches matcher +. FALSE otherwise.

+
+
+
+
+

g_file_attribute_matcher_matches_only ()

+
gboolean
+g_file_attribute_matcher_matches_only (GFileAttributeMatcher *matcher,
+                                       const char *attribute);
+

Checks if a attribute matcher only matches a given attribute. Always +returns FALSE if "*" was used when creating the matcher.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

matcher

a GFileAttributeMatcher.

 

attribute

a file attribute key.

 
+
+
+

Returns

+

TRUE if the matcher only matches attribute +. FALSE otherwise.

+
+
+
+
+

g_file_attribute_matcher_enumerate_namespace ()

+
gboolean
+g_file_attribute_matcher_enumerate_namespace
+                               (GFileAttributeMatcher *matcher,
+                                const char *ns);
+

Checks if the matcher will match all of the keys in a given namespace. +This will always return TRUE if a wildcard character is in use (e.g. if +matcher was created with "standard::*" and ns + is "standard", or if matcher was created +using "*" and namespace is anything.)

+

TODO: this is awkwardly worded.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

matcher

a GFileAttributeMatcher.

 

ns

a string containing a file attribute namespace.

 
+
+
+

Returns

+

TRUE if the matcher matches all of the entries +in the given ns +, FALSE otherwise.

+
+
+
+
+

g_file_attribute_matcher_enumerate_next ()

+
const char *
+g_file_attribute_matcher_enumerate_next
+                               (GFileAttributeMatcher *matcher);
+

Gets the next matched attribute from a GFileAttributeMatcher.

+
+

Parameters

+
+++++ + + + + + +

matcher

a GFileAttributeMatcher.

 
+
+
+

Returns

+

a string containing the next attribute or NULL if +no more attribute exist.

+
+
+
+
+

g_file_attribute_matcher_to_string ()

+
char *
+g_file_attribute_matcher_to_string (GFileAttributeMatcher *matcher);
+

Prints what the matcher is matching against. The format will be +equal to the format passed to g_file_attribute_matcher_new(). +The output however, might not be identical, as the matcher may +decide to use a different order or omit needless parts.

+
+

Parameters

+
+++++ + + + + + +

matcher

a GFileAttributeMatcher.

[allow-none]
+
+
+

Returns

+

a string describing the attributes the matcher matches +against or NULL if matcher +was NULL.

+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

GFileAttributeMatcher

+
typedef struct _GFileAttributeMatcher GFileAttributeMatcher;
+

Determines if a string matches a file attribute.

+
+
+
+

enum GFileType

+

Indicates the file's on-disk type.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 
+
+
+
+
+

GFileInfo

+
typedef struct _GFileInfo GFileInfo;
+

Stores information about a file system object referenced by a GFile.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_TYPE

+
#define G_FILE_ATTRIBUTE_STANDARD_TYPE "standard::type"                     /* uint32 (GFileType) */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN

+
#define G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN "standard::is-hidden"           /* boolean */
+
+

A key in the "standard" namespace for checking if a file is hidden. +Corresponding GFileAttributeType is G_FILE_ATTRIBUTE_TYPE_BOOLEAN.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP

+
#define G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP "standard::is-backup"           /* boolean */
+
+

A key in the "standard" namespace for checking if a file is a backup file. +Corresponding GFileAttributeType is G_FILE_ATTRIBUTE_TYPE_BOOLEAN.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK

+
#define G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK "standard::is-symlink"         /* boolean */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL

+
#define G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL "standard::is-virtual"         /* boolean */
+
+

A key in the "standard" namespace for checking if a file is virtual. +Corresponding GFileAttributeType is G_FILE_ATTRIBUTE_TYPE_BOOLEAN.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE

+
#define G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE "standard::is-volatile"      /* boolean */
+
+

A key in the "standard" namespace for checking if a file is +volatile. This is meant for opaque, non-POSIX-like backends to +indicate that the URI is not persistent. Applications should look +at G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET for the persistent URI.

+

Corresponding GFileAttributeType is G_FILE_ATTRIBUTE_TYPE_BOOLEAN.

+

Since: 2.46

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_NAME

+
#define G_FILE_ATTRIBUTE_STANDARD_NAME "standard::name"                     /* byte string */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME

+
#define G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME "standard::display-name"     /* string */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME

+
#define G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME "standard::edit-name"           /* string */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_COPY_NAME

+
#define G_FILE_ATTRIBUTE_STANDARD_COPY_NAME "standard::copy-name"           /* string */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_ICON

+
#define G_FILE_ATTRIBUTE_STANDARD_ICON "standard::icon"                     /* object (GIcon) */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON

+
#define G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON "standard::symbolic-icon"   /* object (GIcon) */
+
+

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

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE

+
#define G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE "standard::content-type"     /* string */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE

+
#define G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE "standard::fast-content-type" /* string */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_SIZE

+
#define G_FILE_ATTRIBUTE_STANDARD_SIZE "standard::size"                     /* uint64 */
+
+

A key in the "standard" namespace for getting the file's size (in bytes). +Corresponding GFileAttributeType is G_FILE_ATTRIBUTE_TYPE_UINT64.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE

+
#define G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE "standard::allocated-size" /* uint64 */
+
+

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

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET

+
#define G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET "standard::symlink-target" /* byte string */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_TARGET_URI

+
#define G_FILE_ATTRIBUTE_STANDARD_TARGET_URI "standard::target-uri"         /* string */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER

+
#define G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER "standard::sort-order"         /* int32  */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_ETAG_VALUE

+
#define G_FILE_ATTRIBUTE_ETAG_VALUE "etag::value"                 /* string */
+
+

A key in the "etag" namespace for getting the value of the file's +entity tag. Corresponding GFileAttributeType is +G_FILE_ATTRIBUTE_TYPE_STRING.

+
+
+
+

G_FILE_ATTRIBUTE_ID_FILE

+
#define G_FILE_ATTRIBUTE_ID_FILE "id::file"                     /* string */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_ID_FILESYSTEM

+
#define G_FILE_ATTRIBUTE_ID_FILESYSTEM "id::filesystem"         /* string */
+
+

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).

+
+
+
+

G_FILE_ATTRIBUTE_ACCESS_CAN_READ

+
#define G_FILE_ATTRIBUTE_ACCESS_CAN_READ "access::can-read"       /* boolean */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE

+
#define G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE "access::can-write"     /* boolean */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE

+
#define G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE "access::can-execute" /* boolean */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE

+
#define G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE "access::can-delete"   /* boolean */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH

+
#define G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH "access::can-trash"     /* boolean */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME

+
#define G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME "access::can-rename"   /* boolean */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT

+
#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT "mountable::can-mount"     /* boolean */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT

+
#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT "mountable::can-unmount" /* boolean */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT

+
#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT "mountable::can-eject"     /* boolean */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE

+
#define G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE "mountable::unix-device" /* uint32 */
+
+

A key in the "mountable" namespace for getting the unix device. +Corresponding GFileAttributeType is G_FILE_ATTRIBUTE_TYPE_UINT32.

+
+
+
+

G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE

+
#define G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE "mountable::unix-device-file" /* string */
+
+

A key in the "mountable" namespace for getting the unix device file. +Corresponding GFileAttributeType is G_FILE_ATTRIBUTE_TYPE_STRING.

+

Since: 2.22

+
+
+
+

G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI

+
#define G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI "mountable::hal-udi"         /* string */
+
+

A key in the "mountable" namespace for getting the HAL UDI for the mountable +file. Corresponding GFileAttributeType is G_FILE_ATTRIBUTE_TYPE_STRING.

+
+
+
+

G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL

+
#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL "mountable::can-poll"      /* boolean */
+
+

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

+
+
+
+

G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC

+
#define G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC "mountable::is-media-check-automatic"      /* boolean */
+
+

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

+
+
+
+

G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START

+
#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START "mountable::can-start"     /* boolean */
+
+

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

+
+
+
+

G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED

+
#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED "mountable::can-start-degraded"     /* boolean */
+
+

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

+
+
+
+

G_FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP

+
#define G_FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP "mountable::can-stop"      /* boolean */
+
+

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

+
+
+
+

G_FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE

+
#define G_FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE "mountable::start-stop-type" /* uint32 (GDriveStartStopType) */
+
+

A key in the "mountable" namespace for getting the GDriveStartStopType. +Corresponding GFileAttributeType is G_FILE_ATTRIBUTE_TYPE_UINT32.

+

Since: 2.22

+
+
+
+

G_FILE_ATTRIBUTE_TIME_MODIFIED

+
#define G_FILE_ATTRIBUTE_TIME_MODIFIED "time::modified"           /* uint64 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC

+
#define G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC "time::modified-usec" /* uint32 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_TIME_ACCESS

+
#define G_FILE_ATTRIBUTE_TIME_ACCESS "time::access"               /* uint64 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_TIME_ACCESS_USEC

+
#define G_FILE_ATTRIBUTE_TIME_ACCESS_USEC "time::access-usec"     /* uint32 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_TIME_CHANGED

+
#define G_FILE_ATTRIBUTE_TIME_CHANGED "time::changed"             /* uint64 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_TIME_CHANGED_USEC

+
#define G_FILE_ATTRIBUTE_TIME_CHANGED_USEC "time::changed-usec"   /* uint32 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_TIME_CREATED

+
#define G_FILE_ATTRIBUTE_TIME_CREATED "time::created"             /* uint64 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_TIME_CREATED_USEC

+
#define G_FILE_ATTRIBUTE_TIME_CREATED_USEC "time::created-usec"   /* uint32 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_UNIX_DEVICE

+
#define G_FILE_ATTRIBUTE_UNIX_DEVICE "unix::device"               /* uint32 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_UNIX_INODE

+
#define G_FILE_ATTRIBUTE_UNIX_INODE "unix::inode"                 /* uint64 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_UNIX_MODE

+
#define G_FILE_ATTRIBUTE_UNIX_MODE "unix::mode"                   /* uint32 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_UNIX_NLINK

+
#define G_FILE_ATTRIBUTE_UNIX_NLINK "unix::nlink"                 /* uint32 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_UNIX_UID

+
#define G_FILE_ATTRIBUTE_UNIX_UID "unix::uid"                     /* uint32 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_UNIX_GID

+
#define G_FILE_ATTRIBUTE_UNIX_GID "unix::gid"                     /* uint32 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_UNIX_RDEV

+
#define G_FILE_ATTRIBUTE_UNIX_RDEV "unix::rdev"                   /* uint32 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE

+
#define G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE "unix::block-size"       /* uint32 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_UNIX_BLOCKS

+
#define G_FILE_ATTRIBUTE_UNIX_BLOCKS "unix::blocks"               /* uint64 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT

+
#define G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT "unix::is-mountpoint" /* boolean */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE

+
#define G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE "dos::is-archive"         /* boolean */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_DOS_IS_SYSTEM

+
#define G_FILE_ATTRIBUTE_DOS_IS_SYSTEM "dos::is-system"           /* boolean */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_OWNER_USER

+
#define G_FILE_ATTRIBUTE_OWNER_USER "owner::user"                 /* string */
+
+

A key in the "owner" namespace for getting the user name of the +file's owner. Corresponding GFileAttributeType is +G_FILE_ATTRIBUTE_TYPE_STRING.

+
+
+
+

G_FILE_ATTRIBUTE_OWNER_USER_REAL

+
#define G_FILE_ATTRIBUTE_OWNER_USER_REAL "owner::user-real"       /* string */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_OWNER_GROUP

+
#define G_FILE_ATTRIBUTE_OWNER_GROUP "owner::group"               /* string */
+
+

A key in the "owner" namespace for getting the file owner's group. +Corresponding GFileAttributeType is G_FILE_ATTRIBUTE_TYPE_STRING.

+
+
+
+

G_FILE_ATTRIBUTE_THUMBNAIL_PATH

+
#define G_FILE_ATTRIBUTE_THUMBNAIL_PATH "thumbnail::path"         /* bytestring */
+
+

A key in the "thumbnail" namespace for getting the path to the thumbnail +image. Corresponding GFileAttributeType is +G_FILE_ATTRIBUTE_TYPE_BYTE_STRING.

+
+
+
+

G_FILE_ATTRIBUTE_THUMBNAILING_FAILED

+
#define G_FILE_ATTRIBUTE_THUMBNAILING_FAILED "thumbnail::failed"         /* boolean */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID

+
#define G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID "thumbnail::is-valid"        /* boolean */
+
+

A key in the "thumbnail" namespace for checking whether the thumbnail is outdated. +This attribute is TRUE if the thumbnail is up-to-date with the file it represents, +and FALSE if the file has been modified since the thumbnail was generated.

+

If G_FILE_ATTRIBUTE_THUMBNAILING_FAILED is TRUE and this attribute is FALSE, +it indicates that thumbnailing may be attempted again and may succeed.

+

Corresponding GFileAttributeType is G_FILE_ATTRIBUTE_TYPE_BOOLEAN.

+

Since: 2.40

+
+
+
+

G_FILE_ATTRIBUTE_PREVIEW_ICON

+
#define G_FILE_ATTRIBUTE_PREVIEW_ICON "preview::icon"         /* object (GIcon) */
+
+

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

+
+
+
+

G_FILE_ATTRIBUTE_FILESYSTEM_SIZE

+
#define G_FILE_ATTRIBUTE_FILESYSTEM_SIZE "filesystem::size"                       /* uint64 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_FILESYSTEM_FREE

+
#define G_FILE_ATTRIBUTE_FILESYSTEM_FREE "filesystem::free"                       /* uint64 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_FILESYSTEM_USED

+
#define G_FILE_ATTRIBUTE_FILESYSTEM_USED "filesystem::used"                       /* uint64 */
+
+

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

+
+
+
+

G_FILE_ATTRIBUTE_FILESYSTEM_TYPE

+
#define G_FILE_ATTRIBUTE_FILESYSTEM_TYPE "filesystem::type"                       /* string */
+
+

A key in the "filesystem" namespace for getting the file system's type. +Corresponding GFileAttributeType is G_FILE_ATTRIBUTE_TYPE_STRING.

+
+
+
+

G_FILE_ATTRIBUTE_FILESYSTEM_READONLY

+
#define G_FILE_ATTRIBUTE_FILESYSTEM_READONLY "filesystem::readonly"               /* boolean */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_GVFS_BACKEND

+
#define G_FILE_ATTRIBUTE_GVFS_BACKEND "gvfs::backend"             /* string */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_SELINUX_CONTEXT

+
#define G_FILE_ATTRIBUTE_SELINUX_CONTEXT "selinux::context"       /* string */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT

+
#define G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT "trash::item-count"     /* uint32 */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_TRASH_DELETION_DATE

+
#define G_FILE_ATTRIBUTE_TRASH_DELETION_DATE "trash::deletion-date"  /* string */
+
+

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

+
+
+
+

G_FILE_ATTRIBUTE_TRASH_ORIG_PATH

+
#define G_FILE_ATTRIBUTE_TRASH_ORIG_PATH "trash::orig-path"     /* byte string */
+
+

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

+
+
+
+

G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW

+
#define G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW "filesystem::use-preview"        /* uint32 (GFilesystemPreviewType) */
+
+

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.

+
+
+
+

G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION

+
#define G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION "standard::description"        /* string */
+
+

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.

+
+
+
+

See Also

+

GFile, GFileAttribute

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GFileInputStream.html b/docs/reference/gio/html/GFileInputStream.html new file mode 100644 index 0000000..4815336 --- /dev/null +++ b/docs/reference/gio/html/GFileInputStream.html @@ -0,0 +1,292 @@ + + + + +GFileInputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GFileInputStream

+

GFileInputStream — File input streaming operations

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + +
+GFileInfo * + +g_file_input_stream_query_info () +
+void + +g_file_input_stream_query_info_async () +
+GFileInfo * + +g_file_input_stream_query_info_finish () +
+
+
+

Types and Values

+
++++ + + + + +
 GFileInputStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GInputStream
+        ╰── GFileInputStream
+
+
+
+

Implemented Interfaces

+

+GFileInputStream implements + GSeekable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GFileInputStream provides input streams that take their +content from a file.

+

GFileInputStream implements GSeekable, which allows the input +stream to jump to arbitrary positions in the file, provided the +filesystem of the file allows it. To find the position of a file +input stream, use g_seekable_tell(). To find out if a file input +stream supports seeking, use g_seekable_can_seek(). +To position a file input stream, use g_seekable_seek().

+
+
+

Functions

+
+

g_file_input_stream_query_info ()

+
GFileInfo *
+g_file_input_stream_query_info (GFileInputStream *stream,
+                                const char *attributes,
+                                GCancellable *cancellable,
+                                GError **error);
+

Queries a file input stream the given attributes +. This function blocks +while querying the stream. For the asynchronous (non-blocking) version +of this function, see g_file_input_stream_query_info_async(). While the +stream is blocked, the stream will set the pending flag internally, and +any other operations on the stream will fail with G_IO_ERROR_PENDING.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GFileInputStream.

 

attributes

a file attribute query string.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

a GFileInfo, or NULL on error.

+

[transfer full]

+
+
+
+
+

g_file_input_stream_query_info_async ()

+
void
+g_file_input_stream_query_info_async (GFileInputStream *stream,
+                                      const char *attributes,
+                                      int io_priority,
+                                      GCancellable *cancellable,
+                                      GAsyncReadyCallback callback,
+                                      gpointer user_data);
+

Queries the stream information asynchronously. +When the operation is finished callback + will be called. +You can then call g_file_input_stream_query_info_finish() +to get the result of the operation.

+

For the synchronous version of this function, +see g_file_input_stream_query_info().

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be set

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GFileInputStream.

 

attributes

a file attribute query string.

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

callback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_file_input_stream_query_info_finish ()

+
GFileInfo *
+g_file_input_stream_query_info_finish (GFileInputStream *stream,
+                                       GAsyncResult *result,
+                                       GError **error);
+

Finishes an asynchronous info query operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GFileInputStream.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, +or NULL to ignore.

 
+
+
+

Returns

+

GFileInfo.

+

[transfer full]

+
+
+
+
+

Types and Values

+
+

GFileInputStream

+
typedef struct _GFileInputStream GFileInputStream;
+

A subclass of GInputStream for opened files. This adds +a few file-specific operations and seeking.

+

GFileInputStream implements GSeekable.

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GFileMonitor.html b/docs/reference/gio/html/GFileMonitor.html new file mode 100644 index 0000000..974876d --- /dev/null +++ b/docs/reference/gio/html/GFileMonitor.html @@ -0,0 +1,514 @@ + + + + +GFileMonitor: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GFileMonitor

+

GFileMonitor — File Monitor

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+gboolean + +g_file_monitor_cancel () +
+gboolean + +g_file_monitor_is_cancelled () +
+void + +g_file_monitor_set_rate_limit () +
+void + +g_file_monitor_emit_event () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + +
gbooleancancelledRead
gintrate-limitRead / Write
+
+
+

Signals

+
+++++ + + + + + +
voidchangedRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
enumGFileMonitorEvent
 GFileMonitor
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GFileMonitor
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Monitors a file or directory for changes.

+

To obtain a GFileMonitor for a file or directory, use +g_file_monitor(), g_file_monitor_file(), or +g_file_monitor_directory().

+

To get informed about changes to the file or directory you are +monitoring, connect to the “changed” signal. The +signal will be emitted in the +thread-default main context +of the thread that the monitor was created in +(though if the global default main context is blocked, this may +cause notifications to be blocked even if the thread-default +context is still running).

+
+
+

Functions

+
+

g_file_monitor_cancel ()

+
gboolean
+g_file_monitor_cancel (GFileMonitor *monitor);
+

Cancels a file monitor.

+
+

Parameters

+
+++++ + + + + + +

monitor

a GFileMonitor.

 
+
+
+

Returns

+

always TRUE

+
+
+
+
+

g_file_monitor_is_cancelled ()

+
gboolean
+g_file_monitor_is_cancelled (GFileMonitor *monitor);
+

Returns whether the monitor is canceled.

+
+

Parameters

+
+++++ + + + + + +

monitor

a GFileMonitor

 
+
+
+

Returns

+

TRUE if monitor is canceled. FALSE otherwise.

+
+
+
+
+

g_file_monitor_set_rate_limit ()

+
void
+g_file_monitor_set_rate_limit (GFileMonitor *monitor,
+                               gint limit_msecs);
+

Sets the rate limit to which the monitor + will report +consecutive change events to the same file.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

monitor

a GFileMonitor.

 

limit_msecs

a non-negative integer with the limit in milliseconds +to poll for changes

 
+
+
+
+
+

g_file_monitor_emit_event ()

+
void
+g_file_monitor_emit_event (GFileMonitor *monitor,
+                           GFile *child,
+                           GFile *other_file,
+                           GFileMonitorEvent event_type);
+

Emits the “changed” signal if a change +has taken place. Should be called from file monitor +implementations only.

+

Implementations are responsible to call this method from the +thread-default main context of the +thread that the monitor was created in.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

monitor

a GFileMonitor.

 

child

a GFile.

 

other_file

a GFile.

 

event_type

a set of GFileMonitorEvent flags.

 
+
+
+
+
+

Types and Values

+
+

enum GFileMonitorEvent

+

Specifies what type of event a monitor event is.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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 -- only sent if the + (deprecated) G_FILE_MONITOR_SEND_MOVED flag is set

+
 

G_FILE_MONITOR_EVENT_RENAMED

+

the file was renamed within the + current directory -- only sent if the G_FILE_MONITOR_WATCH_MOVES + flag is set. Since: 2.44.

+
 

G_FILE_MONITOR_EVENT_MOVED_IN

+

the file was moved into the + monitored directory from another location -- only sent if the + G_FILE_MONITOR_WATCH_MOVES flag is set. Since: 2.44.

+
 

G_FILE_MONITOR_EVENT_MOVED_OUT

+

the file was moved out of the + monitored directory to another location -- only sent if the + G_FILE_MONITOR_WATCH_MOVES flag is set. Since: 2.44

+
 
+
+
+
+
+

GFileMonitor

+
typedef struct _GFileMonitor GFileMonitor;
+

Watches for changes to a file.

+
+
+
+

Property Details

+
+

The “cancelled” property

+
  “cancelled”                gboolean
+

Whether the monitor has been cancelled.

+

Flags: Read

+

Default value: FALSE

+
+
+
+

The “rate-limit” property

+
  “rate-limit”               gint
+

The limit of the monitor to watch for changes, in milliseconds.

+

Flags: Read / Write

+

Allowed values: >= 0

+

Default value: 800

+
+
+
+

Signal Details

+
+

The “changed” signal

+
void
+user_function (GFileMonitor     *monitor,
+               GFile            *file,
+               GFile            *other_file,
+               GFileMonitorEvent event_type,
+               gpointer          user_data)
+

Emitted when file + has been changed.

+

If using G_FILE_MONITOR_WATCH_RENAMES on a directory monitor, and +the information is available (and if supported by the backend), +event_type + may be G_FILE_MONITOR_EVENT_RENAMED, +G_FILE_MONITOR_EVENT_MOVED_IN or G_FILE_MONITOR_EVENT_MOVED_OUT.

+

In all cases file + will be a child of the monitored directory. For +renames, file + will be the old name and other_file + is the new +name. For "moved in" events, file + is the name of the file that +appeared and other_file + is the old name that it was moved from (in +another directory). For "moved out" events, file + is the name of +the file that used to be in this directory and other_file + is the +name of the file at its new location.

+

It makes sense to treat G_FILE_MONITOR_EVENT_MOVED_IN as +equivalent to G_FILE_MONITOR_EVENT_CREATED and +G_FILE_MONITOR_EVENT_MOVED_OUT as equivalent to +G_FILE_MONITOR_EVENT_DELETED, with extra information. +G_FILE_MONITOR_EVENT_RENAMED is equivalent to a delete/create +pair. This is exactly how the events will be reported in the case +that the G_FILE_MONITOR_WATCH_RENAMES flag is not in use.

+

If using the deprecated flag G_FILE_MONITOR_SEND_MOVED flag and event_type + is +G_FILE_MONITOR_EVENT_MOVED, file + will be set to a GFile containing the +old path, and other_file + will be set to a GFile containing the new path.

+

In all the other cases, other_file + will be set to NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

monitor

a GFileMonitor.

 

file

a GFile.

 

other_file

a GFile or NULL.

[allow-none]

event_type

a GFileMonitorEvent.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GFileOutputStream.html b/docs/reference/gio/html/GFileOutputStream.html new file mode 100644 index 0000000..25d1b59 --- /dev/null +++ b/docs/reference/gio/html/GFileOutputStream.html @@ -0,0 +1,343 @@ + + + + +GFileOutputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GFileOutputStream

+

GFileOutputStream — File output streaming operations

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+GFileInfo * + +g_file_output_stream_query_info () +
+void + +g_file_output_stream_query_info_async () +
+GFileInfo * + +g_file_output_stream_query_info_finish () +
+char * + +g_file_output_stream_get_etag () +
+
+
+

Types and Values

+
++++ + + + + +
 GFileOutputStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GOutputStream
+        ╰── GFileOutputStream
+
+
+
+

Implemented Interfaces

+

+GFileOutputStream implements + GSeekable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GFileOutputStream provides output streams that write their +content to a file.

+

GFileOutputStream implements GSeekable, which allows the output +stream to jump to arbitrary positions in the file and to truncate +the file, provided the filesystem of the file supports these +operations.

+

To find the position of a file output stream, use g_seekable_tell(). +To find out if a file output stream supports seeking, use +g_seekable_can_seek().To position a file output stream, use +g_seekable_seek(). To find out if a file output stream supports +truncating, use g_seekable_can_truncate(). To truncate a file output +stream, use g_seekable_truncate().

+
+
+

Functions

+
+

g_file_output_stream_query_info ()

+
GFileInfo *
+g_file_output_stream_query_info (GFileOutputStream *stream,
+                                 const char *attributes,
+                                 GCancellable *cancellable,
+                                 GError **error);
+

Queries a file output stream for the given attributes +. +This function blocks while querying the stream. For the asynchronous +version of this function, see g_file_output_stream_query_info_async(). +While the stream is blocked, the stream will set the pending flag +internally, and any other operations on the stream will fail with +G_IO_ERROR_PENDING.

+

Can fail if the stream was already closed (with error + being set to +G_IO_ERROR_CLOSED), the stream has pending operations (with error + being +set to G_IO_ERROR_PENDING), or if querying info is not supported for +the stream's interface (with error + being set to G_IO_ERROR_NOT_SUPPORTED). In +all cases of failure, NULL will be returned.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be set, and NULL will +be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GFileOutputStream.

 

attributes

a file attribute query string.

 

cancellable

optional GCancellable object, NULL to ignore.

 

error

a GError, NULL to ignore.

 
+
+
+

Returns

+

a GFileInfo for the stream +, or NULL on error.

+

[transfer full]

+
+
+
+
+

g_file_output_stream_query_info_async ()

+
void
+g_file_output_stream_query_info_async (GFileOutputStream *stream,
+                                       const char *attributes,
+                                       int io_priority,
+                                       GCancellable *cancellable,
+                                       GAsyncReadyCallback callback,
+                                       gpointer user_data);
+

Asynchronously queries the stream + for a GFileInfo. When completed, +callback + will be called with a GAsyncResult which can be used to +finish the operation with g_file_output_stream_query_info_finish().

+

For the synchronous version of this function, see +g_file_output_stream_query_info().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GFileOutputStream.

 

attributes

a file attribute query string.

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, NULL to ignore.

 

callback

callback to call when the request is satisfied

 

user_data

the data to pass to callback function

 
+
+
+
+
+

g_file_output_stream_query_info_finish ()

+
GFileInfo *
+g_file_output_stream_query_info_finish
+                               (GFileOutputStream *stream,
+                                GAsyncResult *result,
+                                GError **error);
+

Finalizes the asynchronous query started +by g_file_output_stream_query_info_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GFileOutputStream.

 

result

a GAsyncResult.

 

error

a GError, NULL to ignore.

 
+
+
+

Returns

+

A GFileInfo for the finished query.

+

[transfer full]

+
+
+
+
+

g_file_output_stream_get_etag ()

+
char *
+g_file_output_stream_get_etag (GFileOutputStream *stream);
+

Gets the entity tag for the file when it has been written. +This must be called after the stream has been written +and closed, as the etag can change while writing.

+
+

Parameters

+
+++++ + + + + + +

stream

a GFileOutputStream.

 
+
+
+

Returns

+

the entity tag for the stream.

+
+
+
+
+

Types and Values

+
+

GFileOutputStream

+
typedef struct _GFileOutputStream GFileOutputStream;
+

A subclass of GOutputStream for opened files. This adds +a few file-specific operations and seeking and truncating.

+

GFileOutputStream implements GSeekable.

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GFilenameCompleter.html b/docs/reference/gio/html/GFilenameCompleter.html new file mode 100644 index 0000000..4b9d9bc --- /dev/null +++ b/docs/reference/gio/html/GFilenameCompleter.html @@ -0,0 +1,284 @@ + + + + +GFilenameCompleter: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GFilenameCompleter

+

GFilenameCompleter — Filename Completer

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+GFilenameCompleter * + +g_filename_completer_new () +
+char * + +g_filename_completer_get_completion_suffix () +
+char ** + +g_filename_completer_get_completions () +
+void + +g_filename_completer_set_dirs_only () +
+
+
+

Signals

+
+++++ + + + + + +
voidgot-completion-dataRun Last
+
+
+

Types and Values

+
++++ + + + + +
 GFilenameCompleter
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GFilenameCompleter
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Completes partial file and directory names given a partial string by +looking in the file system for clues. Can return a list of possible +completion strings for widget implementations.

+
+
+

Functions

+
+

g_filename_completer_new ()

+
GFilenameCompleter *
+g_filename_completer_new (void);
+

Creates a new filename completer.

+
+

Returns

+

a GFilenameCompleter.

+
+
+
+
+

g_filename_completer_get_completion_suffix ()

+
char *
+g_filename_completer_get_completion_suffix
+                               (GFilenameCompleter *completer,
+                                const char *initial_text);
+

Obtains a completion for initial_text + from completer +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

completer

the filename completer.

 

initial_text

text to be completed.

 
+
+
+

Returns

+

a completed string, or NULL if no completion exists. +This string is not owned by GIO, so remember to g_free() it +when finished.

+
+
+
+
+

g_filename_completer_get_completions ()

+
char **
+g_filename_completer_get_completions (GFilenameCompleter *completer,
+                                      const char *initial_text);
+

Gets an array of completion strings for a given initial text.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

completer

the filename completer.

 

initial_text

text to be completed.

 
+
+
+

Returns

+

array of strings with possible completions for initial_text +. +This array must be freed by g_strfreev() when finished.

+

[array zero-terminated=1][transfer full]

+
+
+
+
+

g_filename_completer_set_dirs_only ()

+
void
+g_filename_completer_set_dirs_only (GFilenameCompleter *completer,
+                                    gboolean dirs_only);
+

If dirs_only + is TRUE, completer + will only +complete directory names, and not file names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

completer

the filename completer.

 

dirs_only

a gboolean.

 
+
+
+
+
+

Types and Values

+
+

GFilenameCompleter

+
typedef struct _GFilenameCompleter GFilenameCompleter;
+

Completes filenames based on files that exist within the file system.

+
+
+
+

Signal Details

+
+

The “got-completion-data” signal

+
void
+user_function (GFilenameCompleter *arg0,
+               gpointer            user_data)
+

Emitted when the file name completion information comes available.

+
+

Parameters

+
+++++ + + + + + +

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GFilterInputStream.html b/docs/reference/gio/html/GFilterInputStream.html new file mode 100644 index 0000000..81182a9 --- /dev/null +++ b/docs/reference/gio/html/GFilterInputStream.html @@ -0,0 +1,247 @@ + + + + +GFilterInputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GFilterInputStream

+

GFilterInputStream — Filter Input Stream

+
+
+

Functions

+ +
+
+

Properties

+
+++++ + + + + + + + + + + + + +
+GInputStream *base-streamRead / Write / Construct Only
gbooleanclose-base-streamRead / Write / Construct
+
+
+

Types and Values

+
++++ + + + + +
 GFilterInputStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GInputStream
+        ╰── GFilterInputStream
+            ├── GBufferedInputStream
+            ╰── GConverterInputStream
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Base class for input stream implementations that perform some +kind of filtering operation on a base stream. Typical examples +of filtering operations are character set conversion, compression +and byte order flipping.

+
+
+

Functions

+
+

g_filter_input_stream_get_base_stream ()

+
GInputStream *
+g_filter_input_stream_get_base_stream (GFilterInputStream *stream);
+

Gets the base stream for the filter stream.

+
+

Parameters

+
+++++ + + + + + +

stream

a GFilterInputStream.

 
+
+
+

Returns

+

a GInputStream.

+

[transfer none]

+
+
+
+
+

g_filter_input_stream_get_close_base_stream ()

+
gboolean
+g_filter_input_stream_get_close_base_stream
+                               (GFilterInputStream *stream);
+

Returns whether the base stream will be closed when stream + is +closed.

+
+

Parameters

+
+++++ + + + + + +

stream

a GFilterInputStream.

 
+
+
+

Returns

+

TRUE if the base stream will be closed.

+
+
+
+
+

g_filter_input_stream_set_close_base_stream ()

+
void
+g_filter_input_stream_set_close_base_stream
+                               (GFilterInputStream *stream,
+                                gboolean close_base);
+

Sets whether the base stream will be closed when stream + is closed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GFilterInputStream.

 

close_base

TRUE to close the base stream.

 
+
+
+
+
+

Types and Values

+
+

GFilterInputStream

+
typedef struct _GFilterInputStream GFilterInputStream;
+

A base class for all input streams that work on an underlying stream.

+
+
+
+

Property Details

+
+

The “base-stream” property

+
  “base-stream”              GInputStream *
+

The underlying base stream on which the io ops will be done.

+

Flags: Read / Write / Construct Only

+
+
+
+

The “close-base-stream” property

+
  “close-base-stream”        gboolean
+

If the base stream should be closed when the filter stream is closed.

+

Flags: Read / Write / Construct

+

Default value: TRUE

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GFilterOutputStream.html b/docs/reference/gio/html/GFilterOutputStream.html new file mode 100644 index 0000000..8e41ad4 --- /dev/null +++ b/docs/reference/gio/html/GFilterOutputStream.html @@ -0,0 +1,249 @@ + + + + +GFilterOutputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GFilterOutputStream

+

GFilterOutputStream — Filter Output Stream

+
+
+

Functions

+ +
+
+

Properties

+
+++++ + + + + + + + + + + + + +
+GOutputStream *base-streamRead / Write / Construct Only
gbooleanclose-base-streamRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GFilterOutputStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GOutputStream
+        ╰── GFilterOutputStream
+            ├── GBufferedOutputStream
+            ├── GConverterOutputStream
+            ╰── GDataOutputStream
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Base class for output stream implementations that perform some +kind of filtering operation on a base stream. Typical examples +of filtering operations are character set conversion, compression +and byte order flipping.

+
+
+

Functions

+
+

g_filter_output_stream_get_base_stream ()

+
GOutputStream *
+g_filter_output_stream_get_base_stream
+                               (GFilterOutputStream *stream);
+

Gets the base stream for the filter stream.

+
+

Parameters

+
+++++ + + + + + +

stream

a GFilterOutputStream.

 
+
+
+

Returns

+

a GOutputStream.

+

[transfer none]

+
+
+
+
+

g_filter_output_stream_get_close_base_stream ()

+
gboolean
+g_filter_output_stream_get_close_base_stream
+                               (GFilterOutputStream *stream);
+

Returns whether the base stream will be closed when stream + is +closed.

+
+

Parameters

+
+++++ + + + + + +

stream

a GFilterOutputStream.

 
+
+
+

Returns

+

TRUE if the base stream will be closed.

+
+
+
+
+

g_filter_output_stream_set_close_base_stream ()

+
void
+g_filter_output_stream_set_close_base_stream
+                               (GFilterOutputStream *stream,
+                                gboolean close_base);
+

Sets whether the base stream will be closed when stream + is closed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GFilterOutputStream.

 

close_base

TRUE to close the base stream.

 
+
+
+
+
+

Types and Values

+
+

GFilterOutputStream

+
typedef struct _GFilterOutputStream GFilterOutputStream;
+

A base class for all output streams that work on an underlying stream.

+
+
+
+

Property Details

+
+

The “base-stream” property

+
  “base-stream”              GOutputStream *
+

The underlying base stream on which the io ops will be done.

+

Flags: Read / Write / Construct Only

+
+
+
+

The “close-base-stream” property

+
  “close-base-stream”        gboolean
+

If the base stream should be closed when the filter stream is closed.

+

Flags: Read / Write / Construct Only

+

Default value: TRUE

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GIOModule.html b/docs/reference/gio/html/GIOModule.html new file mode 100644 index 0000000..85064cc --- /dev/null +++ b/docs/reference/gio/html/GIOModule.html @@ -0,0 +1,590 @@ + + + + +GIOModule: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GIOModule

+

GIOModule — Loadable GIO Modules

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GIOModule * + +g_io_module_new () +
+void + +g_io_module_scope_block () +
+void + +g_io_module_scope_free () +
+GIOModuleScope * + +g_io_module_scope_new () +
+GList * + +g_io_modules_load_all_in_directory () +
+GList * + +g_io_modules_load_all_in_directory_with_scope () +
+void + +g_io_modules_scan_all_in_directory () +
+void + +g_io_modules_scan_all_in_directory_with_scope () +
+void + +g_io_module_load () +
+void + +g_io_module_unload () +
+char ** + +g_io_module_query () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
 GIOModule
 GIOModuleScope
enumGIOModuleScopeFlags
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GTypeModule
+        ╰── GIOModule
+
+
+
+

Implemented Interfaces

+

+GIOModule implements + GTypePlugin.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Provides an interface and default functions for loading and unloading +modules. This is used internally to make GIO extensible, but can also +be used by others to implement module loading.

+
+
+

Functions

+
+

g_io_module_new ()

+
GIOModule *
+g_io_module_new (const gchar *filename);
+

Creates a new GIOModule that will load the specific +shared library when in use.

+
+

Parameters

+
+++++ + + + + + +

filename

filename of the shared library module.

 
+
+
+

Returns

+

a GIOModule from given filename +, +or NULL on error.

+
+
+
+
+

g_io_module_scope_block ()

+
void
+g_io_module_scope_block (GIOModuleScope *scope,
+                         const gchar *basename);
+

Block modules with the given basename + from being loaded when +this scope is used with g_io_modules_scan_all_in_directory_with_scope() +or g_io_modules_load_all_in_directory_with_scope().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

scope

a module loading scope

 

basename

the basename to block

 
+
+

Since: 2.30

+
+
+
+

g_io_module_scope_free ()

+
void
+g_io_module_scope_free (GIOModuleScope *scope);
+

Free a module scope.

+
+

Parameters

+
+++++ + + + + + +

scope

a module loading scope

 
+
+

Since: 2.30

+
+
+
+

g_io_module_scope_new ()

+
GIOModuleScope *
+g_io_module_scope_new (GIOModuleScopeFlags flags);
+

Create a new scope for loading of IO modules. A scope can be used for +blocking duplicate modules, or blocking a module you don't want to load.

+

Specify the G_IO_MODULE_SCOPE_BLOCK_DUPLICATES flag to block modules +which have the same base name as a module that has already been seen +in this scope.

+
+

Parameters

+
+++++ + + + + + +

flags

flags for the new scope

 
+
+
+

Returns

+

the new module scope.

+

[transfer full]

+
+

Since: 2.30

+
+
+
+

g_io_modules_load_all_in_directory ()

+
GList *
+g_io_modules_load_all_in_directory (const gchar *dirname);
+

Loads all the modules in the specified directory.

+

If don't require all modules to be initialized (and thus registering +all gtypes) then you can use g_io_modules_scan_all_in_directory() +which allows delayed/lazy loading of modules.

+
+

Parameters

+
+++++ + + + + + +

dirname

pathname for a directory containing modules to load.

 
+
+
+

Returns

+

a list of GIOModules loaded +from the directory, +All the modules are loaded into memory, if you want to +unload them (enabling on-demand loading) you must call +g_type_module_unuse() on all the modules. Free the list +with g_list_free().

+

[element-type GIOModule][transfer full]

+
+
+
+
+

g_io_modules_load_all_in_directory_with_scope ()

+
GList *
+g_io_modules_load_all_in_directory_with_scope
+                               (const gchar *dirname,
+                                GIOModuleScope *scope);
+

Loads all the modules in the specified directory.

+

If don't require all modules to be initialized (and thus registering +all gtypes) then you can use g_io_modules_scan_all_in_directory() +which allows delayed/lazy loading of modules.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

dirname

pathname for a directory containing modules to load.

 

scope

a scope to use when scanning the modules.

 
+
+
+

Returns

+

a list of GIOModules loaded +from the directory, +All the modules are loaded into memory, if you want to +unload them (enabling on-demand loading) you must call +g_type_module_unuse() on all the modules. Free the list +with g_list_free().

+

[element-type GIOModule][transfer full]

+
+

Since: 2.30

+
+
+
+

g_io_modules_scan_all_in_directory ()

+
void
+g_io_modules_scan_all_in_directory (const char *dirname);
+

Scans all the modules in the specified directory, ensuring that +any extension point implemented by a module is registered.

+

This may not actually load and initialize all the types in each +module, some modules may be lazily loaded and initialized when +an extension point it implementes is used with e.g. +g_io_extension_point_get_extensions() or +g_io_extension_point_get_extension_by_name().

+

If you need to guarantee that all types are loaded in all the modules, +use g_io_modules_load_all_in_directory().

+
+

Parameters

+
+++++ + + + + + +

dirname

pathname for a directory containing modules to scan.

 
+
+

Since: 2.24

+
+
+
+

g_io_modules_scan_all_in_directory_with_scope ()

+
void
+g_io_modules_scan_all_in_directory_with_scope
+                               (const gchar *dirname,
+                                GIOModuleScope *scope);
+

Scans all the modules in the specified directory, ensuring that +any extension point implemented by a module is registered.

+

This may not actually load and initialize all the types in each +module, some modules may be lazily loaded and initialized when +an extension point it implementes is used with e.g. +g_io_extension_point_get_extensions() or +g_io_extension_point_get_extension_by_name().

+

If you need to guarantee that all types are loaded in all the modules, +use g_io_modules_load_all_in_directory().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

dirname

pathname for a directory containing modules to scan.

 

scope

a scope to use when scanning the modules

 
+
+

Since: 2.30

+
+
+
+

g_io_module_load ()

+
void
+g_io_module_load (GIOModule *module);
+

Required API for GIO modules to implement.

+

This function is run after the module has been loaded into GIO, +to initialize the module. Typically, this function will call +g_io_extension_point_implement().

+
+

Parameters

+
+++++ + + + + + +

module

a GIOModule.

 
+
+
+
+
+

g_io_module_unload ()

+
void
+g_io_module_unload (GIOModule *module);
+

Required API for GIO modules to implement.

+

This function is run when the module is being unloaded from GIO, +to finalize the module.

+
+

Parameters

+
+++++ + + + + + +

module

a GIOModule.

 
+
+
+
+
+

g_io_module_query ()

+
char **
+g_io_module_query (void);
+

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 initialize 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

+

A NULL-terminated array of strings, +listing the supported extension points of the module. The array +must be suitable for freeing with g_strfreev().

+

[transfer full]

+
+

Since: 2.24

+
+
+
+

Types and Values

+
+

GIOModule

+
typedef struct _GIOModule GIOModule;
+

Opaque module base class for extending GIO.

+
+
+
+

GIOModuleScope

+
typedef struct _GIOModuleScope GIOModuleScope;
+

Represents a scope for loading IO modules. A scope can be used for blocking +duplicate modules, or blocking a module you don't want to load.

+

The scope can be used with g_io_modules_load_all_in_directory_with_scope() +or g_io_modules_scan_all_in_directory_with_scope().

+

Since: 2.30

+
+
+
+

enum GIOModuleScopeFlags

+

Flags for use with g_io_module_scope_new().

+
+

Members

+
+++++ + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.30

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GIOStream.html b/docs/reference/gio/html/GIOStream.html new file mode 100644 index 0000000..2448096 --- /dev/null +++ b/docs/reference/gio/html/GIOStream.html @@ -0,0 +1,785 @@ + + + + +GIOStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GIOStream

+

GIOStream — Base class for implementing read/write streams

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GInputStream * + +g_io_stream_get_input_stream () +
+GOutputStream * + +g_io_stream_get_output_stream () +
+void + +g_io_stream_splice_async () +
+gboolean + +g_io_stream_splice_finish () +
+gboolean + +g_io_stream_close () +
+void + +g_io_stream_close_async () +
+gboolean + +g_io_stream_close_finish () +
+gboolean + +g_io_stream_is_closed () +
+gboolean + +g_io_stream_has_pending () +
+gboolean + +g_io_stream_set_pending () +
+void + +g_io_stream_clear_pending () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + +
gbooleanclosedRead
+GInputStream *input-streamRead
+GOutputStream *output-streamRead
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
enumGIOStreamSpliceFlags
 GIOStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GIOStream
+        ├── GFileIOStream
+        ├── GSimpleIOStream
+        ├── GSocketConnection
+        ╰── GTlsConnection
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GIOStream represents an object that has both read and write streams. +Generally the two streams act as separate input and output streams, +but they share some common resources and state. For instance, for +seekable streams, both streams may use the same position.

+

Examples of GIOStream objects are GSocketConnection, which represents +a two-way network connection; and GFileIOStream, which represents a +file handle opened in read-write mode.

+

To do the actual reading and writing you need to get the substreams +with g_io_stream_get_input_stream() and g_io_stream_get_output_stream().

+

The GIOStream object owns the input and the output streams, not the other +way around, so keeping the substreams alive will not keep the GIOStream +object alive. If the GIOStream object is freed it will be closed, thus +closing the substreams, so even if the substreams stay alive they will +always return G_IO_ERROR_CLOSED for all operations.

+

To close a stream use g_io_stream_close() which will close the common +stream object and also the individual substreams. You can also close +the substreams themselves. In most cases this only marks the +substream as closed, so further I/O on it fails but common state in the +GIOStream may still be open. However, some streams may support +"half-closed" states where one direction of the stream is actually shut down.

+

Operations on GIOStreams cannot be started while another operation on the +GIOStream or its substreams is in progress. Specifically, an application can +read from the GInputStream and write to the GOutputStream simultaneously +(either in separate threads, or as asynchronous operations in the same +thread), but an application cannot start any GIOStream operation while there +is a GIOStream, GInputStream or GOutputStream operation in progress, and +an application can’t start any GInputStream or GOutputStream operation +while there is a GIOStream operation in progress.

+

This is a product of individual stream operations being associated with a +given GMainContext (the thread-default context at the time the operation was +started), rather than entire streams being associated with a single +GMainContext.

+

GIO may run operations on GIOStreams from other (worker) threads, and this +may be exposed to application code in the behaviour of wrapper streams, such +as GBufferedInputStream or GTlsConnection. With such wrapper APIs, +application code may only run operations on the base (wrapped) stream when +the wrapper stream is idle. Note that the semantics of such operations may +not be well-defined due to the state the wrapper stream leaves the base +stream in (though they are guaranteed not to crash).

+
+
+

Functions

+
+

g_io_stream_get_input_stream ()

+
GInputStream *
+g_io_stream_get_input_stream (GIOStream *stream);
+

Gets the input stream for this object. This is used +for reading.

+
+

Parameters

+
+++++ + + + + + +

stream

a GIOStream

 
+
+
+

Returns

+

a GInputStream, owned by the GIOStream. +Do not free.

+

[transfer none]

+
+

Since: 2.22

+
+
+
+

g_io_stream_get_output_stream ()

+
GOutputStream *
+g_io_stream_get_output_stream (GIOStream *stream);
+

Gets the output stream for this object. This is used for +writing.

+
+

Parameters

+
+++++ + + + + + +

stream

a GIOStream

 
+
+
+

Returns

+

a GOutputStream, owned by the GIOStream. +Do not free.

+

[transfer none]

+
+

Since: 2.22

+
+
+
+

g_io_stream_splice_async ()

+
void
+g_io_stream_splice_async (GIOStream *stream1,
+                          GIOStream *stream2,
+                          GIOStreamSpliceFlags flags,
+                          int io_priority,
+                          GCancellable *cancellable,
+                          GAsyncReadyCallback callback,
+                          gpointer user_data);
+

Asyncronously splice the output stream of stream1 + to the input stream of +stream2 +, and splice the output stream of stream2 + to the input stream of +stream1 +.

+

When the operation is finished callback + will be called. +You can then call g_io_stream_splice_finish() to get the +result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream1

a GIOStream.

 

stream2

a GIOStream.

 

flags

a set of GIOStreamSpliceFlags.

 

io_priority

the io priority of the request.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

user data passed to callback +.

[closure]
+
+

Since: 2.28

+
+
+
+

g_io_stream_splice_finish ()

+
gboolean
+g_io_stream_splice_finish (GAsyncResult *result,
+                           GError **error);
+

Finishes an asynchronous io stream splice operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE on success, FALSE otherwise.

+
+

Since: 2.28

+
+
+
+

g_io_stream_close ()

+
gboolean
+g_io_stream_close (GIOStream *stream,
+                   GCancellable *cancellable,
+                   GError **error);
+

Closes the stream, releasing resources related to it. This will also +close the individual input and output streams, if they are not already +closed.

+

Once the stream is closed, all other operations will return +G_IO_ERROR_CLOSED. Closing a stream multiple times will not +return an error.

+

Closing a stream will automatically flush any outstanding buffers +in the stream.

+

Streams will be automatically closed when the last reference +is dropped, but you might want to call this function to make sure +resources are released as early as possible.

+

Some streams might keep the backing store of the stream (e.g. a file +descriptor) open after the stream is closed. See the documentation for +the individual stream for details.

+

On failure the first error that happened will be reported, but the +close operation will finish as much as possible. A stream that failed +to close will still return G_IO_ERROR_CLOSED for all operations. +Still, it is important to check and report the error to the user, +otherwise there might be a loss of data as all data might not be written.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned. +Cancelling a close will still leave the stream closed, but some streams +can use a faster close that doesn't block to e.g. check errors.

+

The default implementation of this method just calls close on the +individual input/output streams.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GIOStream

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

TRUE on success, FALSE on failure

+
+

Since: 2.22

+
+
+
+

g_io_stream_close_async ()

+
void
+g_io_stream_close_async (GIOStream *stream,
+                         int io_priority,
+                         GCancellable *cancellable,
+                         GAsyncReadyCallback callback,
+                         gpointer user_data);
+

Requests an asynchronous close of the stream, releasing resources +related to it. When the operation is finished callback + will be +called. You can then call g_io_stream_close_finish() to get +the result of the operation.

+

For behaviour details see g_io_stream_close().

+

The asynchronous methods have a default fallback that uses threads +to implement asynchronicity, so they are optional for inheriting +classes. However, if you override one you must override all.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GIOStream

 

io_priority

the io priority of the request

 

cancellable

optional cancellable object.

[allow-none]

callback

callback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+

Since: 2.22

+
+
+
+

g_io_stream_close_finish ()

+
gboolean
+g_io_stream_close_finish (GIOStream *stream,
+                          GAsyncResult *result,
+                          GError **error);
+

Closes a stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GIOStream

 

result

a GAsyncResult

 

error

a GError location to store the error occurring, or NULL to +ignore

 
+
+
+

Returns

+

TRUE if stream was successfully closed, FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_io_stream_is_closed ()

+
gboolean
+g_io_stream_is_closed (GIOStream *stream);
+

Checks if a stream is closed.

+
+

Parameters

+
+++++ + + + + + +

stream

a GIOStream

 
+
+
+

Returns

+

TRUE if the stream is closed.

+
+

Since: 2.22

+
+
+
+

g_io_stream_has_pending ()

+
gboolean
+g_io_stream_has_pending (GIOStream *stream);
+

Checks if a stream has pending actions.

+
+

Parameters

+
+++++ + + + + + +

stream

a GIOStream

 
+
+
+

Returns

+

TRUE if stream +has pending actions.

+
+

Since: 2.22

+
+
+
+

g_io_stream_set_pending ()

+
gboolean
+g_io_stream_set_pending (GIOStream *stream,
+                         GError **error);
+

Sets stream + to have actions pending. If the pending flag is +already set or stream + is closed, it will return FALSE and set +error +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GIOStream

 

error

a GError location to store the error occurring, or NULL to +ignore

 
+
+
+

Returns

+

TRUE if pending was previously unset and is now set.

+
+

Since: 2.22

+
+
+
+

g_io_stream_clear_pending ()

+
void
+g_io_stream_clear_pending (GIOStream *stream);
+

Clears the pending flag on stream +.

+
+

Parameters

+
+++++ + + + + + +

stream

a GIOStream

 
+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

enum GIOStreamSpliceFlags

+

GIOStreamSpliceFlags determine how streams should be spliced.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.28

+
+
+
+

GIOStream

+
typedef struct _GIOStream GIOStream;
+

Base class for read-write streams.

+
+
+
+

Property Details

+
+

The “closed” property

+
  “closed”                   gboolean
+

Is the stream closed.

+

Flags: Read

+

Default value: FALSE

+
+
+
+

The “input-stream” property

+
  “input-stream”             GInputStream *
+

The GInputStream to read from.

+

Flags: Read

+
+
+
+

The “output-stream” property

+
  “output-stream”            GOutputStream *
+

The GOutputStream to write to.

+

Flags: Read

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GIcon.html b/docs/reference/gio/html/GIcon.html new file mode 100644 index 0000000..87a5f41 --- /dev/null +++ b/docs/reference/gio/html/GIcon.html @@ -0,0 +1,476 @@ + + + + +GIcon: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GIcon

+

GIcon — Interface for icons

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+guint + +g_icon_hash () +
+gboolean + +g_icon_equal () +
+gchar * + +g_icon_to_string () +
+GIcon * + +g_icon_new_for_string () +
+GVariant * + +g_icon_serialize () +
+GIcon * + +g_icon_deserialize () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GIcon
structGIconIface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GIcon
+
+
+
+

Prerequisites

+

+GIcon requires + GObject.

+
+
+

Known Derived Interfaces

+

+GIcon is required by + GLoadableIcon.

+
+
+

Known Implementations

+

+GIcon is implemented by + GBytesIcon, GEmblem, GEmblemedIcon, GFileIcon and GThemedIcon.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GIcon is a very minimal interface for icons. It provides functions +for checking the equality of two icons, hashing of icons and +serializing an icon to and from strings.

+

GIcon does not provide the actual pixmap for the icon as this is out +of GIO's scope, however implementations of GIcon may contain the name +of an icon (see GThemedIcon), or the path to an icon (see GLoadableIcon).

+

To obtain a hash of a GIcon, see g_icon_hash().

+

To check if two GIcons are equal, see g_icon_equal().

+

For serializing a GIcon, use g_icon_serialize() and +g_icon_deserialize().

+

If you want to consume GIcon (for example, in a toolkit) you must +be prepared to handle at least the three following cases: +GLoadableIcon, GThemedIcon and GEmblemedIcon. It may also make +sense to have fast-paths for other cases (like handling GdkPixbuf +directly, for example) but all compliant GIcon implementations +outside of GIO must implement GLoadableIcon.

+

If your application or library provides one or more GIcon +implementations you need to ensure that your new implementation also +implements GLoadableIcon. Additionally, you must provide an +implementation of g_icon_serialize() that gives a result that is +understood by g_icon_deserialize(), yielding one of the built-in icon +types.

+
+
+

Functions

+
+

g_icon_hash ()

+
guint
+g_icon_hash (gconstpointer icon);
+

Gets a hash for an icon.

+

Virtual: hash

+
+

Parameters

+
+++++ + + + + + +

icon

gconstpointer to an icon object.

[not nullable]
+
+
+

Returns

+

a guint containing a hash for the icon +, suitable for +use in a GHashTable or similar data structure.

+
+
+
+
+

g_icon_equal ()

+
gboolean
+g_icon_equal (GIcon *icon1,
+              GIcon *icon2);
+

Checks if two icons are equal.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

icon1

pointer to the first GIcon.

[allow-none]

icon2

pointer to the second GIcon.

[allow-none]
+
+
+

Returns

+

TRUE if icon1 +is equal to icon2 +. FALSE otherwise.

+
+
+
+
+

g_icon_to_string ()

+
gchar *
+g_icon_to_string (GIcon *icon);
+

Generates a textual representation of icon + that can be used for +serialization such as when passing icon + to a different process or +saving it to persistent storage. Use g_icon_new_for_string() to +get icon + back from the returned string.

+

The encoding of the returned string is proprietary to GIcon except +in the following two cases

+
    +
  • If icon + is a GFileIcon, the returned string is a native path +(such as /path/to/my icon.png) without escaping +if the GFile for icon + is a native file. If the file is not +native, the returned string is the result of g_file_get_uri() +(such as sftp://path/to/my%20icon.png).

  • +
  • If icon + is a GThemedIcon with exactly one name, the encoding is +simply the name (such as network-server).

  • +
+

Virtual: to_tokens

+
+

Parameters

+
+++++ + + + + + +

icon

a GIcon.

 
+
+
+

Returns

+

An allocated NUL-terminated UTF8 string or +NULL if icon +can't be serialized. Use g_free() to free.

+

[nullable]

+
+

Since: 2.20

+
+
+
+

g_icon_new_for_string ()

+
GIcon *
+g_icon_new_for_string (const gchar *str,
+                       GError **error);
+

Generate a GIcon instance from str +. This function can fail if +str + is not valid - see g_icon_to_string() for discussion.

+

If your application or library provides one or more GIcon +implementations you need to ensure that each GType is registered +with the type system prior to calling g_icon_new_for_string().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

A string obtained via g_icon_to_string().

 

error

Return location for error.

 
+
+
+

Returns

+

An object implementing the GIcon +interface or NULL if error +is set.

+

[transfer full]

+
+

Since: 2.20

+
+
+
+

g_icon_serialize ()

+
GVariant *
+g_icon_serialize (GIcon *icon);
+

Serializes a GIcon into a GVariant. An equivalent GIcon can be retrieved +back by calling g_icon_deserialize() on the returned value. +As serialization will avoid using raw icon data when possible, it only +makes sense to transfer the GVariant between processes on the same machine, +(as opposed to over the network), and within the same file system namespace.

+
+

Parameters

+
+++++ + + + + + +

icon

a GIcon

 
+
+
+

Returns

+

a GVariant, or NULL when serialization fails.

+

[transfer full]

+
+

Since: 2.38

+
+
+
+

g_icon_deserialize ()

+
GIcon *
+g_icon_deserialize (GVariant *value);
+

Deserializes a GIcon previously serialized using g_icon_serialize().

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant created with g_icon_serialize()

 
+
+
+

Returns

+

a GIcon, or NULL when deserialization fails.

+

[transfer full]

+
+

Since: 2.38

+
+
+
+

Types and Values

+
+

GIcon

+
typedef struct _GIcon GIcon;
+

An abstract type that specifies an icon.

+
+
+
+

struct GIconIface

+
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);
+};
+
+

GIconIface is used to implement GIcon types for various +different systems. See GThemedIcon and GLoadableIcon for +examples of how to implement this interface.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

The parent interface.

 

hash ()

A hash for a given GIcon.

 

equal ()

Checks if two GIcons 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).

 

serialize ()

Serializes a GIcon into a GVariant. Since: 2.38

 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GInetAddress.html b/docs/reference/gio/html/GInetAddress.html new file mode 100644 index 0000000..2a7d4b9 --- /dev/null +++ b/docs/reference/gio/html/GInetAddress.html @@ -0,0 +1,1029 @@ + + + + +GInetAddress: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GInetAddress

+

GInetAddress — An IPv4/IPv6 address

+
+
+

Functions

+ +
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
gpointerbytesRead / Write / Construct Only
GSocketFamilyfamilyRead / Write / Construct Only
gbooleanis-anyRead
gbooleanis-link-localRead
gbooleanis-loopbackRead
gbooleanis-mc-globalRead
gbooleanis-mc-link-localRead
gbooleanis-mc-node-localRead
gbooleanis-mc-org-localRead
gbooleanis-mc-site-localRead
gbooleanis-multicastRead
gbooleanis-site-localRead
+
+
+

Types and Values

+
++++ + + + + +
 GInetAddress
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GInetAddress
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GInetAddress represents an IPv4 or IPv6 internet address. Use +g_resolver_lookup_by_name() or g_resolver_lookup_by_name_async() to +look up the GInetAddress for a hostname. Use +g_resolver_lookup_by_address() or +g_resolver_lookup_by_address_async() to look up the hostname for a +GInetAddress.

+

To actually connect to a remote host, you will need a +GInetSocketAddress (which includes a GInetAddress as well as a +port number).

+
+
+

Functions

+
+

g_inet_address_new_from_string ()

+
GInetAddress *
+g_inet_address_new_from_string (const gchar *string);
+

Parses string + as an IP address and creates a new GInetAddress.

+
+

Parameters

+
+++++ + + + + + +

string

a string representation of an IP address

 
+
+
+

Returns

+

a new GInetAddress corresponding to string +, or NULL if +string +could not be parsed. +Free the returned object with g_object_unref().

+
+

Since: 2.22

+
+
+
+

g_inet_address_new_from_bytes ()

+
GInetAddress *
+g_inet_address_new_from_bytes (const guint8 *bytes,
+                               GSocketFamily family);
+

Creates a new GInetAddress from the given family + and bytes +. +bytes + should be 4 bytes for G_SOCKET_FAMILY_IPV4 and 16 bytes for +G_SOCKET_FAMILY_IPV6.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

bytes

raw address data.

[array][element-type guint8]

family

the address family of bytes +

 
+
+
+

Returns

+

a new GInetAddress corresponding to family +and bytes +. +Free the returned object with g_object_unref().

+
+

Since: 2.22

+
+
+
+

g_inet_address_new_any ()

+
GInetAddress *
+g_inet_address_new_any (GSocketFamily family);
+

Creates a GInetAddress for the "any" address (unassigned/"don't +care") for family +.

+
+

Parameters

+
+++++ + + + + + +

family

the address family

 
+
+
+

Returns

+

a new GInetAddress corresponding to the "any" address +for family +. +Free the returned object with g_object_unref().

+
+

Since: 2.22

+
+
+
+

g_inet_address_new_loopback ()

+
GInetAddress *
+g_inet_address_new_loopback (GSocketFamily family);
+

Creates a GInetAddress for the loopback address for family +.

+
+

Parameters

+
+++++ + + + + + +

family

the address family

 
+
+
+

Returns

+

a new GInetAddress corresponding to the loopback address +for family +. +Free the returned object with g_object_unref().

+
+

Since: 2.22

+
+
+
+

g_inet_address_equal ()

+
gboolean
+g_inet_address_equal (GInetAddress *address,
+                      GInetAddress *other_address);
+

Checks if two GInetAddress instances are equal, e.g. the same address.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

address

A GInetAddress.

 

other_address

Another GInetAddress.

 
+
+
+

Returns

+

TRUE if address +and other_address +are equal, FALSE otherwise.

+
+

Since: 2.30

+
+
+
+

g_inet_address_to_bytes ()

+
const guint8 *
+g_inet_address_to_bytes (GInetAddress *address);
+

Gets the raw binary address data from address +.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

address

a GInetAddress

 
+
+
+

Returns

+

a pointer to an internal array of the bytes in address +, +which should not be modified, stored, or freed. The size of this +array can be gotten with g_inet_address_get_native_size().

+
+

Since: 2.22

+
+
+
+

g_inet_address_get_native_size ()

+
gsize
+g_inet_address_get_native_size (GInetAddress *address);
+

Gets the size of the native raw binary address for address +. This +is the size of the data that you get from g_inet_address_to_bytes().

+
+

Parameters

+
+++++ + + + + + +

address

a GInetAddress

 
+
+
+

Returns

+

the number of bytes used for the native version of address +.

+
+

Since: 2.22

+
+
+
+

g_inet_address_to_string ()

+
gchar *
+g_inet_address_to_string (GInetAddress *address);
+

Converts address + to string form.

+
+

Parameters

+
+++++ + + + + + +

address

a GInetAddress

 
+
+
+

Returns

+

a representation of address +as a string, which should be +freed after use.

+
+

Since: 2.22

+
+
+
+

g_inet_address_get_family ()

+
GSocketFamily
+g_inet_address_get_family (GInetAddress *address);
+

Gets address +'s family

+
+

Parameters

+
+++++ + + + + + +

address

a GInetAddress

 
+
+
+

Returns

+

address +'s family

+
+

Since: 2.22

+
+
+
+

g_inet_address_get_is_any ()

+
gboolean
+g_inet_address_get_is_any (GInetAddress *address);
+

Tests whether address + is the "any" address for its family.

+
+

Parameters

+
+++++ + + + + + +

address

a GInetAddress

 
+
+
+

Returns

+

TRUE if address +is the "any" address for its family.

+
+

Since: 2.22

+
+
+
+

g_inet_address_get_is_loopback ()

+
gboolean
+g_inet_address_get_is_loopback (GInetAddress *address);
+

Tests whether address + is the loopback address for its family.

+
+

Parameters

+
+++++ + + + + + +

address

a GInetAddress

 
+
+
+

Returns

+

TRUE if address +is the loopback address for its family.

+
+

Since: 2.22

+
+
+
+

g_inet_address_get_is_link_local ()

+
gboolean
+g_inet_address_get_is_link_local (GInetAddress *address);
+

Tests whether address + is a link-local address (that is, if it +identifies a host on a local network that is not connected to the +Internet).

+
+

Parameters

+
+++++ + + + + + +

address

a GInetAddress

 
+
+
+

Returns

+

TRUE if address +is a link-local address.

+
+

Since: 2.22

+
+
+
+

g_inet_address_get_is_site_local ()

+
gboolean
+g_inet_address_get_is_site_local (GInetAddress *address);
+

Tests whether address + is a site-local address such as 10.0.0.1 +(that is, the address identifies a host on a local network that can +not be reached directly from the Internet, but which may have +outgoing Internet connectivity via a NAT or firewall).

+
+

Parameters

+
+++++ + + + + + +

address

a GInetAddress

 
+
+
+

Returns

+

TRUE if address +is a site-local address.

+
+

Since: 2.22

+
+
+
+

g_inet_address_get_is_multicast ()

+
gboolean
+g_inet_address_get_is_multicast (GInetAddress *address);
+

Tests whether address + is a multicast address.

+
+

Parameters

+
+++++ + + + + + +

address

a GInetAddress

 
+
+
+

Returns

+

TRUE if address +is a multicast address.

+
+

Since: 2.22

+
+
+
+

g_inet_address_get_is_mc_link_local ()

+
gboolean
+g_inet_address_get_is_mc_link_local (GInetAddress *address);
+

Tests whether address + is a link-local multicast address.

+
+

Parameters

+
+++++ + + + + + +

address

a GInetAddress

 
+
+
+

Returns

+

TRUE if address +is a link-local multicast address.

+
+

Since: 2.22

+
+
+
+

g_inet_address_get_is_mc_node_local ()

+
gboolean
+g_inet_address_get_is_mc_node_local (GInetAddress *address);
+

Tests whether address + is a node-local multicast address.

+
+

Parameters

+
+++++ + + + + + +

address

a GInetAddress

 
+
+
+

Returns

+

TRUE if address +is a node-local multicast address.

+
+

Since: 2.22

+
+
+
+

g_inet_address_get_is_mc_site_local ()

+
gboolean
+g_inet_address_get_is_mc_site_local (GInetAddress *address);
+

Tests whether address + is a site-local multicast address.

+
+

Parameters

+
+++++ + + + + + +

address

a GInetAddress

 
+
+
+

Returns

+

TRUE if address +is a site-local multicast address.

+
+

Since: 2.22

+
+
+
+

g_inet_address_get_is_mc_org_local ()

+
gboolean
+g_inet_address_get_is_mc_org_local (GInetAddress *address);
+

Tests whether address + is an organization-local multicast address.

+
+

Parameters

+
+++++ + + + + + +

address

a GInetAddress

 
+
+
+

Returns

+

TRUE if address +is an organization-local multicast address.

+
+

Since: 2.22

+
+
+
+

g_inet_address_get_is_mc_global ()

+
gboolean
+g_inet_address_get_is_mc_global (GInetAddress *address);
+

Tests whether address + is a global multicast address.

+
+

Parameters

+
+++++ + + + + + +

address

a GInetAddress

 
+
+
+

Returns

+

TRUE if address +is a global multicast address.

+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

GInetAddress

+
typedef struct _GInetAddress GInetAddress;
+

An IPv4 or IPv6 internet address.

+
+
+
+

Property Details

+
+

The “bytes” property

+
  “bytes”                    gpointer
+

The raw address data.

+

Flags: Read / Write / Construct Only

+
+
+
+

The “family” property

+
  “family”                   GSocketFamily
+

The address family (IPv4 or IPv6).

+

Flags: Read / Write / Construct Only

+

Default value: G_SOCKET_FAMILY_INVALID

+
+
+
+

The “is-any” property

+
  “is-any”                   gboolean
+

Whether this is the "any" address for its family. +See g_inet_address_get_is_any().

+

Flags: Read

+

Default value: FALSE

+

Since: 2.22

+
+
+
+

The “is-link-local” property

+
  “is-link-local”            gboolean
+

Whether this is a link-local address. +See g_inet_address_get_is_link_local().

+

Flags: Read

+

Default value: FALSE

+

Since: 2.22

+
+
+
+

The “is-loopback” property

+
  “is-loopback”              gboolean
+

Whether this is the loopback address for its family. +See g_inet_address_get_is_loopback().

+

Flags: Read

+

Default value: FALSE

+

Since: 2.22

+
+
+
+

The “is-mc-global” property

+
  “is-mc-global”             gboolean
+

Whether this is a global multicast address. +See g_inet_address_get_is_mc_global().

+

Flags: Read

+

Default value: FALSE

+

Since: 2.22

+
+
+
+

The “is-mc-link-local” property

+
  “is-mc-link-local”         gboolean
+

Whether this is a link-local multicast address. +See g_inet_address_get_is_mc_link_local().

+

Flags: Read

+

Default value: FALSE

+

Since: 2.22

+
+
+
+

The “is-mc-node-local” property

+
  “is-mc-node-local”         gboolean
+

Whether this is a node-local multicast address. +See g_inet_address_get_is_mc_node_local().

+

Flags: Read

+

Default value: FALSE

+

Since: 2.22

+
+
+
+

The “is-mc-org-local” property

+
  “is-mc-org-local”          gboolean
+

Whether this is an organization-local multicast address. +See g_inet_address_get_is_mc_org_local().

+

Flags: Read

+

Default value: FALSE

+

Since: 2.22

+
+
+
+

The “is-mc-site-local” property

+
  “is-mc-site-local”         gboolean
+

Whether this is a site-local multicast address. +See g_inet_address_get_is_mc_site_local().

+

Flags: Read

+

Default value: FALSE

+

Since: 2.22

+
+
+
+

The “is-multicast” property

+
  “is-multicast”             gboolean
+

Whether this is a multicast address. +See g_inet_address_get_is_multicast().

+

Flags: Read

+

Default value: FALSE

+

Since: 2.22

+
+
+
+

The “is-site-local” property

+
  “is-site-local”            gboolean
+

Whether this is a site-local address. +See g_inet_address_get_is_loopback().

+

Flags: Read

+

Default value: FALSE

+

Since: 2.22

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GInetAddressMask.html b/docs/reference/gio/html/GInetAddressMask.html new file mode 100644 index 0000000..10a8ba5 --- /dev/null +++ b/docs/reference/gio/html/GInetAddressMask.html @@ -0,0 +1,501 @@ + + + + +GInetAddressMask: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GInetAddressMask

+

GInetAddressMask — An IPv4/IPv6 address mask

+
+
+

Functions

+ +
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + +
+GInetAddress *addressRead / Write
GSocketFamilyfamilyRead
guintlengthRead / Write
+
+
+

Types and Values

+
++++ + + + + +
 GInetAddressMask
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GInetAddressMask
+
+
+
+

Implemented Interfaces

+

+GInetAddressMask implements + GInitable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GInetAddressMask represents a range of IPv4 or IPv6 addresses +described by a base address and a length indicating how many bits +of the base address are relevant for matching purposes. These are +often given in string form. Eg, "10.0.0.0/8", or "fe80::/10".

+
+
+

Functions

+
+

g_inet_address_mask_new ()

+
GInetAddressMask *
+g_inet_address_mask_new (GInetAddress *addr,
+                         guint length,
+                         GError **error);
+

Creates a new GInetAddressMask representing all addresses whose +first length + bits match addr +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

addr

a GInetAddress

 

length

number of bits of addr +to use

 

error

return location for GError, or NULL

 
+
+
+

Returns

+

a new GInetAddressMask, or NULL on error

+
+

Since: 2.32

+
+
+
+

g_inet_address_mask_new_from_string ()

+
GInetAddressMask *
+g_inet_address_mask_new_from_string (const gchar *mask_string,
+                                     GError **error);
+

Parses mask_string + as an IP address and (optional) length, and +creates a new GInetAddressMask. The length, if present, is +delimited by a "/". If it is not present, then the length is +assumed to be the full length of the address.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mask_string

an IP address or address/length string

 

error

return location for GError, or NULL

 
+
+
+

Returns

+

a new GInetAddressMask corresponding to string +, or NULL +on error.

+
+

Since: 2.32

+
+
+
+

g_inet_address_mask_to_string ()

+
gchar *
+g_inet_address_mask_to_string (GInetAddressMask *mask);
+

Converts mask + back to its corresponding string form.

+
+

Parameters

+
+++++ + + + + + +

mask

a GInetAddressMask

 
+
+
+

Returns

+

a string corresponding to mask +.

+
+

Since: 2.32

+
+
+
+

g_inet_address_mask_get_family ()

+
GSocketFamily
+g_inet_address_mask_get_family (GInetAddressMask *mask);
+

Gets the GSocketFamily of mask +'s address

+
+

Parameters

+
+++++ + + + + + +

mask

a GInetAddressMask

 
+
+
+

Returns

+

the GSocketFamily of mask +'s address

+
+

Since: 2.32

+
+
+
+

g_inet_address_mask_get_address ()

+
GInetAddress *
+g_inet_address_mask_get_address (GInetAddressMask *mask);
+

Gets mask +'s base address

+
+

Parameters

+
+++++ + + + + + +

mask

a GInetAddressMask

 
+
+
+

Returns

+

mask +'s base address.

+

[transfer none]

+
+

Since: 2.32

+
+
+
+

g_inet_address_mask_get_length ()

+
guint
+g_inet_address_mask_get_length (GInetAddressMask *mask);
+

Gets mask +'s length

+
+

Parameters

+
+++++ + + + + + +

mask

a GInetAddressMask

 
+
+
+

Returns

+

mask +'s length

+
+

Since: 2.32

+
+
+
+

g_inet_address_mask_matches ()

+
gboolean
+g_inet_address_mask_matches (GInetAddressMask *mask,
+                             GInetAddress *address);
+

Tests if address + falls within the range described by mask +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mask

a GInetAddressMask

 

address

a GInetAddress

 
+
+
+

Returns

+

whether address +falls within the range described by +mask +.

+
+

Since: 2.32

+
+
+
+

g_inet_address_mask_equal ()

+
gboolean
+g_inet_address_mask_equal (GInetAddressMask *mask,
+                           GInetAddressMask *mask2);
+

Tests if mask + and mask2 + are the same mask.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mask

a GInetAddressMask

 

mask2

another GInetAddressMask

 
+
+
+

Returns

+

whether mask +and mask2 +are the same mask

+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

GInetAddressMask

+
typedef struct _GInetAddressMask GInetAddressMask;
+

A combination of an IPv4 or IPv6 base address and a length, +representing a range of IP addresses.

+

Since: 2.32

+
+
+
+

Property Details

+
+

The “address” property

+
  “address”                  GInetAddress *
+

The base address.

+

Flags: Read / Write

+
+
+
+

The “family” property

+
  “family”                   GSocketFamily
+

The address family (IPv4 or IPv6).

+

Flags: Read

+

Default value: G_SOCKET_FAMILY_INVALID

+
+
+
+

The “length” property

+
  “length”                   guint
+

The prefix length.

+

Flags: Read / Write

+

Allowed values: <= 128

+

Default value: 0

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GInetSocketAddress.html b/docs/reference/gio/html/GInetSocketAddress.html new file mode 100644 index 0000000..5ecda28 --- /dev/null +++ b/docs/reference/gio/html/GInetSocketAddress.html @@ -0,0 +1,413 @@ + + + + +GInetSocketAddress: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GInetSocketAddress

+

GInetSocketAddress — Internet GSocketAddress

+
+
+

Functions

+ +
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +
+GInetAddress *addressRead / Write / Construct Only
guintflowinfoRead / Write / Construct Only
guintportRead / Write / Construct Only
guintscope-idRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GInetSocketAddress
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSocketAddress
+        ╰── GInetSocketAddress
+            ╰── GProxyAddress
+
+
+
+

Implemented Interfaces

+

+GInetSocketAddress implements + GSocketConnectable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

An IPv4 or IPv6 socket address; that is, the combination of a +GInetAddress and a port number.

+
+
+

Functions

+
+

g_inet_socket_address_new ()

+
GSocketAddress *
+g_inet_socket_address_new (GInetAddress *address,
+                           guint16 port);
+

Creates a new GInetSocketAddress for address + and port +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

address

a GInetAddress

 

port

a port number

 
+
+
+

Returns

+

a new GInetSocketAddress

+
+

Since: 2.22

+
+
+
+

g_inet_socket_address_new_from_string ()

+
GSocketAddress *
+g_inet_socket_address_new_from_string (const char *address,
+                                       guint port);
+

Creates a new GInetSocketAddress for address + and port +.

+

If address + is an IPv6 address, it can also contain a scope ID +(separated from the address by a "<literal>%</literal>").

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

address

the string form of an IP address

 

port

a port number

 
+
+
+

Returns

+

a new GInetSocketAddress, or NULL if address +cannot be +parsed.

+
+

Since: 2.40

+
+
+
+

g_inet_socket_address_get_address ()

+
GInetAddress *
+g_inet_socket_address_get_address (GInetSocketAddress *address);
+

Gets address +'s GInetAddress.

+
+

Parameters

+
+++++ + + + + + +

address

a GInetSocketAddress

 
+
+
+

Returns

+

the GInetAddress for address +, which must be +g_object_ref()'d if it will be stored.

+

[transfer none]

+
+

Since: 2.22

+
+
+
+

g_inet_socket_address_get_port ()

+
guint16
+g_inet_socket_address_get_port (GInetSocketAddress *address);
+

Gets address +'s port.

+
+

Parameters

+
+++++ + + + + + +

address

a GInetSocketAddress

 
+
+
+

Returns

+

the port for address +

+
+

Since: 2.22

+
+
+
+

g_inet_socket_address_get_flowinfo ()

+
guint32
+g_inet_socket_address_get_flowinfo (GInetSocketAddress *address);
+

Gets the sin6_flowinfo field from address +, +which must be an IPv6 address.

+
+

Parameters

+
+++++ + + + + + +

address

a G_SOCKET_FAMILY_IPV6 GInetSocketAddress

 
+
+
+

Returns

+

the flowinfo field

+
+

Since: 2.32

+
+
+
+

g_inet_socket_address_get_scope_id ()

+
guint32
+g_inet_socket_address_get_scope_id (GInetSocketAddress *address);
+

Gets the sin6_scope_id field from address +, +which must be an IPv6 address.

+
+

Parameters

+
+++++ + + + + + +

address

a G_SOCKET_FAMILY_IPV6 GInetAddress

 
+
+
+

Returns

+

the scope id field

+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

GInetSocketAddress

+
typedef struct _GInetSocketAddress GInetSocketAddress;
+

An IPv4 or IPv6 socket address, corresponding to a struct +sockaddr_in or struct sockaddr_in6.

+
+
+
+

Property Details

+
+

The “address” property

+
  “address”                  GInetAddress *
+

The address.

+

Flags: Read / Write / Construct Only

+
+
+
+

The “flowinfo” property

+
  “flowinfo”                 guint
+

The sin6_flowinfo field, for IPv6 addresses.

+

Flags: Read / Write / Construct Only

+

Default value: 0

+

Since: 2.32

+
+
+
+

The “port” property

+
  “port”                     guint
+

The port.

+

Flags: Read / Write / Construct Only

+

Allowed values: <= 65535

+

Default value: 0

+
+
+
+

The “scope-id” property

+
  “scope-id”                 guint
+

IPv6 scope ID.

+

Flags: Read / Write / Construct Only

+

Default value: 0

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GInitable.html b/docs/reference/gio/html/GInitable.html new file mode 100644 index 0000000..43e04c8 --- /dev/null +++ b/docs/reference/gio/html/GInitable.html @@ -0,0 +1,453 @@ + + + + +GInitable: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GInitable

+

GInitable — Failable object initialization interface

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+gboolean + +g_initable_init () +
+gpointer + +g_initable_new () +
+GObject * + +g_initable_new_valist () +
+gpointer + +g_initable_newv () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GInitable
structGInitableIface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GInitable
+
+
+
+

Prerequisites

+

+GInitable requires + GObject.

+
+
+

Known Derived Interfaces

+

+GInitable is required by + GNetworkMonitor.

+
+
+

Known Implementations

+

+GInitable is implemented by + GCharsetConverter, GDBusConnection, GDBusObjectManagerClient, GDBusProxy, GDBusServer, GInetAddressMask, GSocket and GSubprocess.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GInitable is implemented by objects that can fail during +initialization. If an object implements this interface then +it must be initialized as the first thing after construction, +either via g_initable_init() or g_async_initable_init_async() +(the latter is only available if it also implements GAsyncInitable).

+

If the object is not initialized, or initialization returns with an +error, then all operations on the object except g_object_ref() and +g_object_unref() are considered to be invalid, and have undefined +behaviour. They will often fail with g_critical() or g_warning(), but +this must not be relied on.

+

Users of objects implementing this are not intended to use +the interface method directly, instead it will be used automatically +in various ways. For C applications you generally just call +g_initable_new() directly, or indirectly via a foo_thing_new() wrapper. +This will call g_initable_init() under the cover, returning NULL and +setting a GError on failure (at which point the instance is +unreferenced).

+

For bindings in languages where the native constructor supports +exceptions the binding could check for objects implemention GInitable +during normal construction and automatically initialize them, throwing +an exception on failure.

+
+
+

Functions

+
+

g_initable_init ()

+
gboolean
+g_initable_init (GInitable *initable,
+                 GCancellable *cancellable,
+                 GError **error);
+

Initializes the object implementing the interface.

+

The object must be initialized before any real use after initial +construction, either with this function or g_async_initable_init_async().

+

Implementations may also support cancellation. If cancellable + is not NULL, +then initialization can be cancelled by triggering the cancellable object +from another thread. If the operation was cancelled, the error +G_IO_ERROR_CANCELLED will be returned. If cancellable + is not NULL and +the object doesn't support cancellable initialization the error +G_IO_ERROR_NOT_SUPPORTED will be returned.

+

If the object is not initialized, or initialization returns with an +error, then all operations on the object except g_object_ref() and +g_object_unref() are considered to be invalid, and have undefined +behaviour. See the introduction for more details.

+

Implementations of this method must be idempotent, i.e. multiple calls +to this function with the same argument should return the same results. +Only the first call initializes the object, further calls return the result +of the first call. This is so that it's safe to implement the singleton +pattern in the GObject constructor function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

initable

a GInitable.

 

cancellable

optional GCancellable object, NULL to ignore.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if successful. If an error has occurred, this function will +return FALSE and set error +appropriately if present.

+
+

Since: 2.22

+
+
+
+

g_initable_new ()

+
gpointer
+g_initable_new (GType object_type,
+                GCancellable *cancellable,
+                GError **error,
+                const gchar *first_property_name,
+                ...);
+

Helper function for constructing GInitable object. This is +similar to g_object_new() but also initializes the object +and returns NULL, setting an error on failure.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

object_type

a GType supporting GInitable.

 

cancellable

optional GCancellable object, NULL to ignore.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 

first_property_name

the name of the first property, or NULL if no +properties.

[allow-none]

...

the value if the first property, followed by and other property +value pairs, and ended by NULL.

 
+
+
+

Returns

+

a newly allocated +GObject, or NULL on error.

+

[type GObject.Object][transfer full]

+
+

Since: 2.22

+
+
+
+

g_initable_new_valist ()

+
GObject *
+g_initable_new_valist (GType object_type,
+                       const gchar *first_property_name,
+                       va_list var_args,
+                       GCancellable *cancellable,
+                       GError **error);
+

Helper function for constructing GInitable object. This is +similar to g_object_new_valist() but also initializes the object +and returns NULL, setting an error on failure.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

object_type

a GType supporting GInitable.

 

first_property_name

the name of the first property, followed by +the value, and other property value pairs, and ended by NULL.

 

var_args

The var args list generated from first_property_name +.

 

cancellable

optional GCancellable object, NULL to ignore.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

a newly allocated +GObject, or NULL on error.

+

[type GObject.Object][transfer full]

+
+

Since: 2.22

+
+
+
+

g_initable_newv ()

+
gpointer
+g_initable_newv (GType object_type,
+                 guint n_parameters,
+                 GParameter *parameters,
+                 GCancellable *cancellable,
+                 GError **error);
+

Helper function for constructing GInitable object. This is +similar to g_object_newv() but also initializes the object +and returns NULL, setting an error on failure.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

object_type

a GType supporting GInitable.

 

n_parameters

the number of parameters in parameters +

 

parameters

the parameters to use to construct the object.

[array length=n_parameters]

cancellable

optional GCancellable object, NULL to ignore.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

a newly allocated +GObject, or NULL on error.

+

[type GObject.Object][transfer full]

+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

GInitable

+
typedef struct _GInitable GInitable;
+

Interface for initializable objects.

+

Since: 2.22

+
+
+
+

struct GInitableIface

+
struct GInitableIface {
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+
+  gboolean    (* init) (GInitable    *initable,
+			GCancellable *cancellable,
+			GError      **error);
+};
+
+

Provides an interface for initializing object such that initialization +may fail.

+
+

Members

+
+++++ + + + + + + + + + + + + +

GTypeInterface g_iface;

The parent interface.

 

init ()

Initializes the object.

 
+
+

Since: 2.22

+
+
+
+

See Also

+

GAsyncInitable

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GInputStream.html b/docs/reference/gio/html/GInputStream.html new file mode 100644 index 0000000..a1b4e01 --- /dev/null +++ b/docs/reference/gio/html/GInputStream.html @@ -0,0 +1,1300 @@ + + + + +GInputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GInputStream

+

GInputStream — Base class for implementing streaming input

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gssize + +g_input_stream_read () +
+gboolean + +g_input_stream_read_all () +
+void + +g_input_stream_read_all_async () +
+gboolean + +g_input_stream_read_all_finish () +
+gssize + +g_input_stream_skip () +
+gboolean + +g_input_stream_close () +
+void + +g_input_stream_read_async () +
+gssize + +g_input_stream_read_finish () +
+void + +g_input_stream_skip_async () +
+gssize + +g_input_stream_skip_finish () +
+void + +g_input_stream_close_async () +
+gboolean + +g_input_stream_close_finish () +
+gboolean + +g_input_stream_is_closed () +
+gboolean + +g_input_stream_has_pending () +
+gboolean + +g_input_stream_set_pending () +
+void + +g_input_stream_clear_pending () +
+GBytes * + +g_input_stream_read_bytes () +
+void + +g_input_stream_read_bytes_async () +
+GBytes * + +g_input_stream_read_bytes_finish () +
+
+
+

Types and Values

+
++++ + + + + +
 GInputStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GInputStream
+        ├── GFilterInputStream
+        ├── GFileInputStream
+        ├── GMemoryInputStream
+        ╰── GUnixInputStream
+
+
+
+

Known Derived Interfaces

+

+GInputStream is required by + GPollableInputStream.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GInputStream has functions to read from a stream (g_input_stream_read()), +to close a stream (g_input_stream_close()) and to skip some content +(g_input_stream_skip()).

+

To copy the content of an input stream to an output stream without +manually handling the reads and writes, use g_output_stream_splice().

+

See the documentation for GIOStream for details of thread safety of +streaming APIs.

+

All of these functions have async variants too.

+
+
+

Functions

+
+

g_input_stream_read ()

+
gssize
+g_input_stream_read (GInputStream *stream,
+                     void *buffer,
+                     gsize count,
+                     GCancellable *cancellable,
+                     GError **error);
+

Tries to read count + bytes from the stream into the buffer starting at +buffer +. Will block during this read.

+

If count is zero returns zero and does nothing. A value of count + +larger than G_MAXSSIZE will cause a G_IO_ERROR_INVALID_ARGUMENT error.

+

On success, the number of bytes read into the buffer is returned. +It is not an error if this is not the same as the requested size, as it +can happen e.g. near the end of a file. Zero is returned on end of file +(or if count + is zero), but never otherwise.

+

The returned buffer + is not a nul-terminated string, it can contain nul bytes +at any position, and this function doesn't nul-terminate the buffer +.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned. If an +operation was partially finished when the operation was cancelled the +partial result will be returned, without an error.

+

On error -1 is returned and error + is set accordingly.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GInputStream.

 

buffer

a buffer to +read data into (which should be at least count bytes long).

[array length=count][element-type guint8]

count

the number of bytes that will be read from the stream

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

Number of bytes read, or -1 on error, or 0 on end of file.

+
+
+
+
+

g_input_stream_read_all ()

+
gboolean
+g_input_stream_read_all (GInputStream *stream,
+                         void *buffer,
+                         gsize count,
+                         gsize *bytes_read,
+                         GCancellable *cancellable,
+                         GError **error);
+

Tries to read count + bytes from the stream into the buffer starting at +buffer +. Will block during this read.

+

This function is similar to g_input_stream_read(), except it tries to +read as many bytes as requested, only stopping on an error or end of stream.

+

On a successful read of count + bytes, or if we reached the end of the +stream, TRUE is returned, and bytes_read + is set to the number of bytes +read into buffer +.

+

If there is an error during the operation FALSE is returned and error + +is set to indicate the error status.

+

As a special exception to the normal conventions for functions that +use GError, if this function returns FALSE (and sets error +) then +bytes_read + will be set to the number of bytes that were successfully +read before the error was encountered. This functionality is only +available from C. If you need it from another language then you must +write your own loop around g_input_stream_read().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GInputStream.

 

buffer

a buffer to +read data into (which should be at least count bytes long).

[array length=count][element-type guint8]

count

the number of bytes that will be read from the stream

 

bytes_read

location to store the number of bytes that was read from the stream.

[out]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

TRUE on success, FALSE if there was an error

+
+
+
+
+

g_input_stream_read_all_async ()

+
void
+g_input_stream_read_all_async (GInputStream *stream,
+                               void *buffer,
+                               gsize count,
+                               int io_priority,
+                               GCancellable *cancellable,
+                               GAsyncReadyCallback callback,
+                               gpointer user_data);
+

Request an asynchronous read of count + bytes from the stream into the +buffer starting at buffer +.

+

This is the asynchronous equivalent of g_input_stream_read_all().

+

Call g_input_stream_read_all_finish() to collect the result.

+

Any outstanding I/O request with higher priority (lower numerical +value) will be executed before an outstanding request with lower +priority. Default priority is G_PRIORITY_DEFAULT.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

A GInputStream

 

buffer

a buffer to +read data into (which should be at least count bytes long).

[array length=count][element-type guint8]

count

the number of bytes that will be read from the stream

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

callback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+

Since: 2.44

+
+
+
+

g_input_stream_read_all_finish ()

+
gboolean
+g_input_stream_read_all_finish (GInputStream *stream,
+                                GAsyncResult *result,
+                                gsize *bytes_read,
+                                GError **error);
+

Finishes an asynchronous stream read operation started with +g_input_stream_read_all_async().

+

As a special exception to the normal conventions for functions that +use GError, if this function returns FALSE (and sets error +) then +bytes_read + will be set to the number of bytes that were successfully +read before the error was encountered. This functionality is only +available from C. If you need it from another language then you must +write your own loop around g_input_stream_read_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GInputStream

 

result

a GAsyncResult

 

bytes_read

location to store the number of bytes that was read from the stream.

[out]

error

a GError location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

TRUE on success, FALSE if there was an error

+
+

Since: 2.44

+
+
+
+

g_input_stream_skip ()

+
gssize
+g_input_stream_skip (GInputStream *stream,
+                     gsize count,
+                     GCancellable *cancellable,
+                     GError **error);
+

Tries to skip count + bytes from the stream. Will block during the operation.

+

This is identical to g_input_stream_read(), from a behaviour standpoint, +but the bytes that are skipped are not returned to the user. Some +streams have an implementation that is more efficient than reading the data.

+

This function is optional for inherited classes, as the default implementation +emulates it using read.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned. If an +operation was partially finished when the operation was cancelled the +partial result will be returned, without an error.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GInputStream.

 

count

the number of bytes that will be skipped from the stream

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

Number of bytes skipped, or -1 on error

+
+
+
+
+

g_input_stream_close ()

+
gboolean
+g_input_stream_close (GInputStream *stream,
+                      GCancellable *cancellable,
+                      GError **error);
+

Closes the stream, releasing resources related to it.

+

Once the stream is closed, all other operations will return G_IO_ERROR_CLOSED. +Closing a stream multiple times will not return an error.

+

Streams will be automatically closed when the last reference +is dropped, but you might want to call this function to make sure +resources are released as early as possible.

+

Some streams might keep the backing store of the stream (e.g. a file descriptor) +open after the stream is closed. See the documentation for the individual +stream for details.

+

On failure the first error that happened will be reported, but the close +operation will finish as much as possible. A stream that failed to +close will still return G_IO_ERROR_CLOSED for all operations. Still, it +is important to check and report the error to the user.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned. +Cancelling a close will still leave the stream closed, but some streams +can use a faster close that doesn't block to e.g. check errors.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

A GInputStream.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

TRUE on success, FALSE on failure

+
+
+
+
+

g_input_stream_read_async ()

+
void
+g_input_stream_read_async (GInputStream *stream,
+                           void *buffer,
+                           gsize count,
+                           int io_priority,
+                           GCancellable *cancellable,
+                           GAsyncReadyCallback callback,
+                           gpointer user_data);
+

Request an asynchronous read of count + bytes from the stream into the buffer +starting at buffer +. When the operation is finished callback + will be called. +You can then call g_input_stream_read_finish() to get the result of the +operation.

+

During an async request no other sync and async calls are allowed on stream +, and will +result in G_IO_ERROR_PENDING errors.

+

A value of count + larger than G_MAXSSIZE will cause a G_IO_ERROR_INVALID_ARGUMENT error.

+

On success, the number of bytes read into the buffer will be passed to the +callback. It is not an error if this is not the same as the requested size, as it +can happen e.g. near the end of a file, but generally we try to read +as many bytes as requested. Zero is returned on end of file +(or if count + is zero), but never otherwise.

+

Any outstanding i/o request with higher priority (lower numerical value) will +be executed before an outstanding request with lower priority. Default +priority is G_PRIORITY_DEFAULT.

+

The asyncronous methods have a default fallback that uses threads to implement +asynchronicity, so they are optional for inheriting classes. However, if you +override one you must override all.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

A GInputStream.

 

buffer

a buffer to +read data into (which should be at least count bytes long).

[array length=count][element-type guint8]

count

the number of bytes that will be read from the stream

 

io_priority

the I/O priority +of the request.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

callback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_input_stream_read_finish ()

+
gssize
+g_input_stream_read_finish (GInputStream *stream,
+                            GAsyncResult *result,
+                            GError **error);
+

Finishes an asynchronous stream read operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GInputStream.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

number of bytes read in, or -1 on error, or 0 on end of file.

+
+
+
+
+

g_input_stream_skip_async ()

+
void
+g_input_stream_skip_async (GInputStream *stream,
+                           gsize count,
+                           int io_priority,
+                           GCancellable *cancellable,
+                           GAsyncReadyCallback callback,
+                           gpointer user_data);
+

Request an asynchronous skip of count + bytes from the stream. +When the operation is finished callback + will be called. +You can then call g_input_stream_skip_finish() to get the result +of the operation.

+

During an async request no other sync and async calls are allowed, +and will result in G_IO_ERROR_PENDING errors.

+

A value of count + larger than G_MAXSSIZE will cause a G_IO_ERROR_INVALID_ARGUMENT error.

+

On success, the number of bytes skipped will be passed to the callback. +It is not an error if this is not the same as the requested size, as it +can happen e.g. near the end of a file, but generally we try to skip +as many bytes as requested. Zero is returned on end of file +(or if count + is zero), but never otherwise.

+

Any outstanding i/o request with higher priority (lower numerical value) +will be executed before an outstanding request with lower priority. +Default priority is G_PRIORITY_DEFAULT.

+

The asynchronous methods have a default fallback that uses threads to +implement asynchronicity, so they are optional for inheriting classes. +However, if you override one, you must override all.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

A GInputStream.

 

count

the number of bytes that will be skipped from the stream

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

callback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_input_stream_skip_finish ()

+
gssize
+g_input_stream_skip_finish (GInputStream *stream,
+                            GAsyncResult *result,
+                            GError **error);
+

Finishes a stream skip operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GInputStream.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

the size of the bytes skipped, or -1 on error.

+
+
+
+
+

g_input_stream_close_async ()

+
void
+g_input_stream_close_async (GInputStream *stream,
+                            int io_priority,
+                            GCancellable *cancellable,
+                            GAsyncReadyCallback callback,
+                            gpointer user_data);
+

Requests an asynchronous closes of the stream, releasing resources related to it. +When the operation is finished callback + will be called. +You can then call g_input_stream_close_finish() to get the result of the +operation.

+

For behaviour details see g_input_stream_close().

+

The asyncronous methods have a default fallback that uses threads to implement +asynchronicity, so they are optional for inheriting classes. However, if you +override one you must override all.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

A GInputStream.

 

io_priority

the I/O priority of the request

 

cancellable

optional cancellable object.

[allow-none]

callback

callback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_input_stream_close_finish ()

+
gboolean
+g_input_stream_close_finish (GInputStream *stream,
+                             GAsyncResult *result,
+                             GError **error);
+

Finishes closing a stream asynchronously, started from g_input_stream_close_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GInputStream.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if the stream was closed successfully.

+
+
+
+
+

g_input_stream_is_closed ()

+
gboolean
+g_input_stream_is_closed (GInputStream *stream);
+

Checks if an input stream is closed.

+
+

Parameters

+
+++++ + + + + + +

stream

input stream.

 
+
+
+

Returns

+

TRUE if the stream is closed.

+
+
+
+
+

g_input_stream_has_pending ()

+
gboolean
+g_input_stream_has_pending (GInputStream *stream);
+

Checks if an input stream has pending actions.

+
+

Parameters

+
+++++ + + + + + +

stream

input stream.

 
+
+
+

Returns

+

TRUE if stream +has pending actions.

+
+
+
+
+

g_input_stream_set_pending ()

+
gboolean
+g_input_stream_set_pending (GInputStream *stream,
+                            GError **error);
+

Sets stream + to have actions pending. If the pending flag is +already set or stream + is closed, it will return FALSE and set +error +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

input stream

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if pending was previously unset and is now set.

+
+
+
+
+

g_input_stream_clear_pending ()

+
void
+g_input_stream_clear_pending (GInputStream *stream);
+

Clears the pending flag on stream +.

+
+

Parameters

+
+++++ + + + + + +

stream

input stream

 
+
+
+
+
+

g_input_stream_read_bytes ()

+
GBytes *
+g_input_stream_read_bytes (GInputStream *stream,
+                           gsize count,
+                           GCancellable *cancellable,
+                           GError **error);
+

Like g_input_stream_read(), this tries to read count + bytes from +the stream in a blocking fashion. However, rather than reading into +a user-supplied buffer, this will create a new GBytes containing +the data that was read. This may be easier to use from language +bindings.

+

If count is zero, returns a zero-length GBytes and does nothing. A +value of count + larger than G_MAXSSIZE will cause a +G_IO_ERROR_INVALID_ARGUMENT error.

+

On success, a new GBytes is returned. It is not an error if the +size of this object is not the same as the requested size, as it +can happen e.g. near the end of a file. A zero-length GBytes is +returned on end of file (or if count + is zero), but never +otherwise.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned. If an +operation was partially finished when the operation was cancelled the +partial result will be returned, without an error.

+

On error NULL is returned and error + is set accordingly.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GInputStream.

 

count

maximum number of bytes that will be read from the stream. Common +values include 4096 and 8192.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

a new GBytes, or NULL on error

+
+

Since: 2.34

+
+
+
+

g_input_stream_read_bytes_async ()

+
void
+g_input_stream_read_bytes_async (GInputStream *stream,
+                                 gsize count,
+                                 int io_priority,
+                                 GCancellable *cancellable,
+                                 GAsyncReadyCallback callback,
+                                 gpointer user_data);
+

Request an asynchronous read of count + bytes from the stream into a +new GBytes. When the operation is finished callback + will be +called. You can then call g_input_stream_read_bytes_finish() to get the +result of the operation.

+

During an async request no other sync and async calls are allowed +on stream +, and will result in G_IO_ERROR_PENDING errors.

+

A value of count + larger than G_MAXSSIZE will cause a +G_IO_ERROR_INVALID_ARGUMENT error.

+

On success, the new GBytes will be passed to the callback. It is +not an error if this is smaller than the requested size, as it can +happen e.g. near the end of a file, but generally we try to read as +many bytes as requested. Zero is returned on end of file (or if +count + is zero), but never otherwise.

+

Any outstanding I/O request with higher priority (lower numerical +value) will be executed before an outstanding request with lower +priority. Default priority is G_PRIORITY_DEFAULT.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

A GInputStream.

 

count

the number of bytes that will be read from the stream

 

io_priority

the I/O priority of the request

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

callback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+

Since: 2.34

+
+
+
+

g_input_stream_read_bytes_finish ()

+
GBytes *
+g_input_stream_read_bytes_finish (GInputStream *stream,
+                                  GAsyncResult *result,
+                                  GError **error);
+

Finishes an asynchronous stream read-into-GBytes operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GInputStream.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

the newly-allocated GBytes, or NULL on error

+
+

Since: 2.34

+
+
+
+

Types and Values

+
+

GInputStream

+
typedef struct _GInputStream GInputStream;
+

Base class for streaming input operations.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GListModel.html b/docs/reference/gio/html/GListModel.html new file mode 100644 index 0000000..af0172e --- /dev/null +++ b/docs/reference/gio/html/GListModel.html @@ -0,0 +1,531 @@ + + + + +GListModel: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GListModel

+

GListModel — An interface describing a dynamic list of objects

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+GType + +g_list_model_get_item_type () +
+guint + +g_list_model_get_n_items () +
+gpointer + +g_list_model_get_item () +
+GObject * + +g_list_model_get_object () +
+void + +g_list_model_items_changed () +
+
+
+

Signals

+
+++++ + + + + + +
voiditems-changedRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GListModel
structGListModelInterface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GListModel
+
+
+
+

Prerequisites

+

+GListModel requires + GObject.

+
+
+

Known Implementations

+

+GListModel is implemented by + GListStore.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GListModel is an interface that represents a mutable list of +GObjects. Its main intention is as a model for various widgets in +user interfaces, such as list views, but it can also be used as a +convenient method of returning lists of data, with support for +updates.

+

Each object in the list may also report changes in itself via some +mechanism (normally the “notify” signal). Taken together +with the “items-changed” signal, this provides for a list +that can change its membership, and in which the members can change +their individual properties.

+

A good example would be the list of visible wireless network access +points, where each access point can report dynamic properties such as +signal strength.

+

It is important to note that the GListModel itself does not report +changes to the individual items. It only reports changes to the list +membership. If you want to observe changes to the objects themselves +then you need to connect signals to the objects that you are +interested in.

+

All items in a GListModel are of (or derived from) the same type. +g_list_model_get_item_type() returns that type. The type may be an +interface, in which case all objects in the list must implement it.

+

The semantics are close to that of an array: +g_list_model_get_n_items() returns the number of items in the list and +g_list_model_get_item() returns an item at a (0-based) position. In +order to allow implementations to calculate the list length lazily, +you can also iterate over items: starting from 0, repeatedly call +g_list_model_get_item() until it returns NULL.

+

An implementation may create objects lazily, but must take care to +return the same object for a given position until all references to +it are gone.

+

On the other side, a consumer is expected only to hold references on +objects that are currently "user visible", in order to faciliate the +maximum level of laziness in the implementation of the list and to +reduce the required number of signal connections at a given time.

+

This interface is intended only to be used from a single thread. The +thread in which it is appropriate to use it depends on the particular +implementation, but typically it will be from the thread that owns +the thread-default main context +in effect at the time that the model was created.

+
+
+

Functions

+
+

g_list_model_get_item_type ()

+
GType
+g_list_model_get_item_type (GListModel *list);
+

Gets the type of the items in list +. All items returned from +g_list_model_get_type() are of that type or a subtype, or are an +implementation of that interface.

+

The item type of a GListModel can not change during the life of the +model.

+
+

Parameters

+
+++++ + + + + + +

list

a GListModel

 
+
+
+

Returns

+

the GType of the items contained in list +.

+
+

Since: 2.44

+
+
+
+

g_list_model_get_n_items ()

+
guint
+g_list_model_get_n_items (GListModel *list);
+

Gets the number of items in list +.

+

Depending on the model implementation, calling this function may be +less efficient than iterating the list with increasing values for +position + until g_list_model_get_item() returns NULL.

+
+

Parameters

+
+++++ + + + + + +

list

a GListModel

 
+
+
+

Returns

+

the number of items in list +.

+
+

Since: 2.44

+
+
+
+

g_list_model_get_item ()

+
gpointer
+g_list_model_get_item (GListModel *list,
+                       guint position);
+

Get the item at position +. If position + is greater than the number of +items in list +, NULL is returned.

+

NULL is never returned for an index that is smaller than the length +of the list. See g_list_model_get_n_items().

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GListModel

 

position

the position of the item to fetch

 
+
+
+

Returns

+

the item at position +.

+

[transfer full][nullable][type GObject]

+
+

Since: 2.44

+
+
+
+

g_list_model_get_object ()

+
GObject *
+g_list_model_get_object (GListModel *list,
+                         guint position);
+

Get the item at position +. If position + is greater than the number of +items in list +, NULL is returned.

+

NULL is never returned for an index that is smaller than the length +of the list. See g_list_model_get_n_items().

+

[rename-to g_list_model_get_item]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GListModel

 

position

the position of the item to fetch

 
+
+
+

Returns

+

the object at position +.

+

[transfer full][nullable]

+
+

Since: 2.44

+
+
+
+

g_list_model_items_changed ()

+
void
+g_list_model_items_changed (GListModel *list,
+                            guint position,
+                            guint removed,
+                            guint added);
+

Emits the “items-changed” signal on list +.

+

This function should only be called by classes implementing +GListModel. It has to be called after the internal representation +of list + has been updated, because handlers connected to this signal +might query the new state of the list.

+

Implementations must only make changes to the model (as visible to +its consumer) in places that will not cause problems for that +consumer. For models that are driven directly by a write API (such +as GListStore), changes can be reported in response to uses of that +API. For models that represent remote data, changes should only be +made from a fresh mainloop dispatch. It is particularly not +permitted to make changes in response to a call to the GListModel +consumer API.

+

Stated another way: in general, it is assumed that code making a +series of accesses to the model via the API, without returning to the +mainloop, and without calling other code, will continue to view the +same contents of the model.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

list

a GListModel

 

position

the position at which list +changed

 

removed

the number of items removed

 

added

the number of items added

 
+
+

Since: 2.44

+
+
+
+

Types and Values

+
+

GListModel

+
typedef struct _GListModel GListModel;
+

GListModel is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

struct GListModelInterface

+
struct GListModelInterface {
+  GTypeInterface g_iface;
+
+  GType     (* get_item_type)   (GListModel *list);
+
+  guint     (* get_n_items)     (GListModel *list);
+
+  gpointer  (* get_item)        (GListModel *list,
+                                 guint       position);
+};
+
+

The virtual function table for GListModel.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

parent GTypeInterface

 

get_item_type ()

the virtual function pointer for g_list_model_get_item_type()

 

get_n_items ()

the virtual function pointer for g_list_model_get_n_items()

 

get_item ()

the virtual function pointer for g_list_model_get_item()

 
+
+

Since: 2.44

+
+
+
+

Signal Details

+
+

The “items-changed” signal

+
void
+user_function (GListModel *list,
+               guint       position,
+               guint       removed,
+               guint       added,
+               gpointer    user_data)
+

This signal is emitted whenever items were added or removed to +list +. At position +, removed + items were removed and added + items +were added in their place.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

list

the GListModel that changed

 

position

the position at which list +changed

 

removed

the number of items removed

 

added

the number of items added

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.44

+
+
+
+

See Also

+

GListStore

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GListStore.html b/docs/reference/gio/html/GListStore.html new file mode 100644 index 0000000..b2800e0 --- /dev/null +++ b/docs/reference/gio/html/GListStore.html @@ -0,0 +1,535 @@ + + + + +GListStore: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GListStore

+

GListStore — A simple implementation of GListModel

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GListStore * + +g_list_store_new () +
+void + +g_list_store_insert () +
+guint + +g_list_store_insert_sorted () +
+void + +g_list_store_append () +
+void + +g_list_store_remove () +
+void + +g_list_store_remove_all () +
+void + +g_list_store_splice () +
+void + +g_list_store_sort () +
+
+
+

Properties

+
+++++ + + + + + +
+GType *item-typeRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GListStore
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GListStore
+
+
+
+

Implemented Interfaces

+

+GListStore implements + GListModel.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GListStore is a simple implementation of GListModel that stores all +items in memory.

+

It provides insertions, deletions, and lookups in logarithmic time +with a fast path for the common case of iterating the list linearly.

+
+
+

Functions

+
+

g_list_store_new ()

+
GListStore *
+g_list_store_new (GType item_type);
+

Creates a new GListStore with items of type item_type +. item_type + +must be a subclass of GObject.

+
+

Parameters

+
+++++ + + + + + +

item_type

the GType of items in the list

 
+
+
+

Returns

+

a new GListStore

+
+

Since: 2.44

+
+
+
+

g_list_store_insert ()

+
void
+g_list_store_insert (GListStore *store,
+                     guint position,
+                     gpointer item);
+

Inserts item + into store + at position +. item + must be of type +“item-type” or derived from it. position + must be smaller +than the length of the list, or equal to it to append.

+

This function takes a ref on item +.

+

Use g_list_store_splice() to insert multiple items at the same time +efficiently.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

store

a GListStore

 

position

the position at which to insert the new item

 

item

the new item.

[type GObject]
+
+

Since: 2.44

+
+
+
+

g_list_store_insert_sorted ()

+
guint
+g_list_store_insert_sorted (GListStore *store,
+                            gpointer item,
+                            GCompareDataFunc compare_func,
+                            gpointer user_data);
+

Inserts item + into store + at a position to be determined by the +compare_func +.

+

The list must already be sorted before calling this function or the +result is undefined. Usually you would approach this by only ever +inserting items by way of this function.

+

This function takes a ref on item +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

store

a GListStore

 

item

the new item.

[type GObject]

compare_func

pairwise comparison function for sorting.

[scope call]

user_data

user data for compare_func +.

[closure]
+
+
+

Returns

+

the position at which item +was inserted

+
+

Since: 2.44

+
+
+
+

g_list_store_append ()

+
void
+g_list_store_append (GListStore *store,
+                     gpointer item);
+

Appends item + to store +. item + must be of type “item-type”.

+

This function takes a ref on item +.

+

Use g_list_store_splice() to append multiple items at the same time +efficiently.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

store

a GListStore

 

item

the new item.

[type GObject]
+
+

Since: 2.44

+
+
+
+

g_list_store_remove ()

+
void
+g_list_store_remove (GListStore *store,
+                     guint position);
+

Removes the item from store + that is at position +. position + must be +smaller than the current length of the list.

+

Use g_list_store_splice() to remove multiple items at the same time +efficiently.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

store

a GListStore

 

position

the position of the item that is to be removed

 
+
+

Since: 2.44

+
+
+
+

g_list_store_remove_all ()

+
void
+g_list_store_remove_all (GListStore *store);
+

Removes all items from store +.

+
+

Parameters

+
+++++ + + + + + +

store

a GListStore

 
+
+

Since: 2.44

+
+
+
+

g_list_store_splice ()

+
void
+g_list_store_splice (GListStore *store,
+                     guint position,
+                     guint n_removals,
+                     gpointer *additions,
+                     guint n_additions);
+

Changes store + by removing n_removals + items and adding n_additions + +items to it. additions + must contain n_additions + items of type +“item-type”. NULL is not permitted.

+

This function is more efficient than g_list_store_insert() and +g_list_store_remove(), because it only emits +“items-changed” once for the change.

+

This function takes a ref on each item in additions +.

+

The parameters position + and n_removals + must be correct (ie: +position + + n_removals + must be less than or equal to the length of +the list at the time this function is called).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

store

a GListStore

 

position

the position at which to make the change

 

n_removals

the number of items to remove

 

additions

the items to add.

[array length=n_additions][element-type GObject]

n_additions

the number of items to add

 
+
+

Since: 2.44

+
+
+
+

g_list_store_sort ()

+
void
+g_list_store_sort (GListStore *store,
+                   GCompareDataFunc compare_func,
+                   gpointer user_data);
+

Sort the items in store + according to compare_func +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

store

a GListStore

 

compare_func

pairwise comparison function for sorting.

[scope call]

user_data

user data for compare_func +.

[closure]
+
+

Since: 2.46

+
+
+
+

Types and Values

+
+

GListStore

+
typedef struct _GListStore GListStore;
+

GListStore is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

Property Details

+
+

The “item-type” property

+
  “item-type”                GType *
+

The type of items contained in this list store. Items must be +subclasses of GObject.

+

Flags: Read / Write / Construct Only

+

Allowed values: GObject

+

Since: 2.44

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GLoadableIcon.html b/docs/reference/gio/html/GLoadableIcon.html new file mode 100644 index 0000000..2385b4b --- /dev/null +++ b/docs/reference/gio/html/GLoadableIcon.html @@ -0,0 +1,353 @@ + + + + +GLoadableIcon: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GLoadableIcon

+

GLoadableIcon — Loadable Icons

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + +
+GInputStream * + +g_loadable_icon_load () +
+void + +g_loadable_icon_load_async () +
+GInputStream * + +g_loadable_icon_load_finish () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GLoadableIcon
structGLoadableIconIface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GLoadableIcon
+
+
+
+

Prerequisites

+

+GLoadableIcon requires + GIcon and GObject.

+
+
+

Known Implementations

+

+GLoadableIcon is implemented by + GBytesIcon and GFileIcon.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Extends the GIcon interface and adds the ability to +load icons from streams.

+
+
+

Functions

+
+

g_loadable_icon_load ()

+
GInputStream *
+g_loadable_icon_load (GLoadableIcon *icon,
+                      int size,
+                      char **type,
+                      GCancellable *cancellable,
+                      GError **error);
+

Loads a loadable icon. For the asynchronous version of this function, +see g_loadable_icon_load_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

icon

a GLoadableIcon.

 

size

an integer.

 

type

a location to store the type of the loaded +icon, NULL to ignore.

[out][optional]

cancellable

optional GCancellable object, NULL to +ignore.

[allow-none]

error

a GError location to store the error occurring, or NULL +to ignore.

 
+
+
+

Returns

+

a GInputStream to read the icon from.

+

[transfer full]

+
+
+
+
+

g_loadable_icon_load_async ()

+
void
+g_loadable_icon_load_async (GLoadableIcon *icon,
+                            int size,
+                            GCancellable *cancellable,
+                            GAsyncReadyCallback callback,
+                            gpointer user_data);
+

Loads an icon asynchronously. To finish this function, see +g_loadable_icon_load_finish(). For the synchronous, blocking +version of this function, see g_loadable_icon_load().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

icon

a GLoadableIcon.

 

size

an integer.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call when the +request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_loadable_icon_load_finish ()

+
GInputStream *
+g_loadable_icon_load_finish (GLoadableIcon *icon,
+                             GAsyncResult *res,
+                             char **type,
+                             GError **error);
+

Finishes an asynchronous icon load started in g_loadable_icon_load_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

icon

a GLoadableIcon.

 

res

a GAsyncResult.

 

type

a location to store the type of the loaded +icon, NULL to ignore.

[out][optional]

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

a GInputStream to read the icon from.

+

[transfer full]

+
+
+
+
+

Types and Values

+
+

GLoadableIcon

+
typedef struct _GLoadableIcon GLoadableIcon;
+

Generic type for all kinds of icons that can be loaded +as a stream.

+
+
+
+

struct GLoadableIconIface

+
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);
+};
+
+

Interface for icons that can be loaded as a stream.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

The parent interface.

 

load ()

Loads an icon.

 

load_async ()

Loads an icon asynchronously.

 

load_finish ()

Finishes an asynchronous icon load.

 
+
+
+
+
+

See Also

+

GIcon, GThemedIcon

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GMemoryInputStream.html b/docs/reference/gio/html/GMemoryInputStream.html new file mode 100644 index 0000000..f95f004 --- /dev/null +++ b/docs/reference/gio/html/GMemoryInputStream.html @@ -0,0 +1,304 @@ + + + + +GMemoryInputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GMemoryInputStream

+

GMemoryInputStream — Streaming input operations on memory chunks

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+GInputStream * + +g_memory_input_stream_new () +
+GInputStream * + +g_memory_input_stream_new_from_data () +
+GInputStream * + +g_memory_input_stream_new_from_bytes () +
+void + +g_memory_input_stream_add_data () +
+void + +g_memory_input_stream_add_bytes () +
+
+
+

Types and Values

+
++++ + + + + +
 GMemoryInputStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GInputStream
+        ╰── GMemoryInputStream
+
+
+
+

Implemented Interfaces

+

+GMemoryInputStream implements + GSeekable and GPollableInputStream.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GMemoryInputStream is a class for using arbitrary +memory chunks as input for GIO streaming input operations.

+

As of GLib 2.34, GMemoryInputStream implements +GPollableInputStream.

+
+
+

Functions

+
+

g_memory_input_stream_new ()

+
GInputStream *
+g_memory_input_stream_new (void);
+

Creates a new empty GMemoryInputStream.

+
+

Returns

+

a new GInputStream

+
+
+
+
+

g_memory_input_stream_new_from_data ()

+
GInputStream *
+g_memory_input_stream_new_from_data (const void *data,
+                                     gssize len,
+                                     GDestroyNotify destroy);
+

Creates a new GMemoryInputStream with data in memory of a given size.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

data

input data.

[array length=len][element-type guint8][transfer full]

len

length of the data, may be -1 if data +is a nul-terminated string

 

destroy

function that is called to free data +, or NULL.

[allow-none]
+
+
+

Returns

+

new GInputStream read from data +of len +bytes.

+
+
+
+
+

g_memory_input_stream_new_from_bytes ()

+
GInputStream *
+g_memory_input_stream_new_from_bytes (GBytes *bytes);
+

Creates a new GMemoryInputStream with data from the given bytes +.

+
+

Parameters

+
+++++ + + + + + +

bytes

a GBytes

 
+
+
+

Returns

+

new GInputStream read from bytes +

+
+

Since: 2.34

+
+
+
+

g_memory_input_stream_add_data ()

+
void
+g_memory_input_stream_add_data (GMemoryInputStream *stream,
+                                const void *data,
+                                gssize len,
+                                GDestroyNotify destroy);
+

Appends data + to data that can be read from the input stream

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GMemoryInputStream

 

data

input data.

[array length=len][element-type guint8][transfer full]

len

length of the data, may be -1 if data +is a nul-terminated string

 

destroy

function that is called to free data +, or NULL.

[allow-none]
+
+
+
+
+

g_memory_input_stream_add_bytes ()

+
void
+g_memory_input_stream_add_bytes (GMemoryInputStream *stream,
+                                 GBytes *bytes);
+

Appends bytes + to data that can be read from the input stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GMemoryInputStream

 

bytes

input data

 
+
+

Since: 2.34

+
+
+
+

Types and Values

+
+

GMemoryInputStream

+
typedef struct _GMemoryInputStream GMemoryInputStream;
+

Implements GInputStream for arbitrary memory chunks.

+
+
+
+

See Also

+

GMemoryOutputStream

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GMemoryOutputStream.html b/docs/reference/gio/html/GMemoryOutputStream.html new file mode 100644 index 0000000..73bd995 --- /dev/null +++ b/docs/reference/gio/html/GMemoryOutputStream.html @@ -0,0 +1,577 @@ + + + + +GMemoryOutputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GMemoryOutputStream

+

GMemoryOutputStream — Streaming output operations on memory chunks

+
+
+

Functions

+ +
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
gpointerdataRead / Write / Construct Only
gulongdata-sizeRead
gpointerdestroy-functionRead / Write / Construct Only
gpointerrealloc-functionRead / Write / Construct Only
gulongsizeRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GMemoryOutputStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GOutputStream
+        ╰── GMemoryOutputStream
+
+
+
+

Implemented Interfaces

+

+GMemoryOutputStream implements + GSeekable and GPollableOutputStream.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GMemoryOutputStream is a class for using arbitrary +memory chunks as output for GIO streaming output operations.

+

As of GLib 2.34, GMemoryOutputStream trivially implements +GPollableOutputStream: it always polls as ready.

+
+
+

Functions

+
+

GReallocFunc ()

+
gpointer
+(*GReallocFunc) (gpointer data,
+                 gsize size);
+

Changes the size of the memory block pointed to by data + to +size + bytes.

+

The function should have the same semantics as realloc().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

data

memory block to reallocate

 

size

size to reallocate data +to

 
+
+
+

Returns

+

a pointer to the reallocated memory

+
+
+
+
+

g_memory_output_stream_new ()

+
GOutputStream *
+g_memory_output_stream_new (gpointer data,
+                            gsize size,
+                            GReallocFunc realloc_function,
+                            GDestroyNotify destroy_function);
+

Creates a new GMemoryOutputStream.

+

In most cases this is not the function you want. See +g_memory_output_stream_new_resizable() instead.

+

If data + is non-NULL, the stream will use that for its internal storage.

+

If realloc_fn + is non-NULL, it will be used for resizing the internal +storage when necessary and the stream will be considered resizable. +In that case, the stream will start out being (conceptually) empty. +size + is used only as a hint for how big data + is. Specifically, +seeking to the end of a newly-created stream will seek to zero, not +size +. Seeking past the end of the stream and then writing will +introduce a zero-filled gap.

+

If realloc_fn + is NULL then the stream is fixed-sized. Seeking to +the end will seek to size + exactly. Writing past the end will give +an 'out of space' error. Attempting to seek past the end will fail. +Unlike the resizable case, seeking to an offset within the stream and +writing will preserve the bytes passed in as data + before that point +and will return them as part of g_memory_output_stream_steal_data(). +If you intend to seek you should probably therefore ensure that data + +is properly initialised.

+

It is probably only meaningful to provide data + and size + in the case +that you want a fixed-sized stream. Put another way: if realloc_fn + +is non-NULL then it makes most sense to give data + as NULL and +size + as 0 (allowing GMemoryOutputStream to do the initial +allocation for itself).

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
// a stream that can grow
+stream = g_memory_output_stream_new (NULL, 0, realloc, free);
+
+// another stream that can grow
+stream2 = g_memory_output_stream_new (NULL, 0, g_realloc, g_free);
+
+// a fixed-size stream
+data = malloc (200);
+stream3 = g_memory_output_stream_new (data, 200, NULL, free);
+
+ +

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

data

pointer to a chunk of memory to use, or NULL.

[allow-none]

size

the size of data +

 

realloc_function

a function with realloc() semantics (like g_realloc()) +to be called when data +needs to be grown, or NULL.

[allow-none]

destroy_function

a function to be called on data +when the stream is +finalized, or NULL.

[allow-none]
+
+
+

Returns

+

A newly created GMemoryOutputStream object.

+
+
+
+
+

g_memory_output_stream_new_resizable ()

+
GOutputStream *
+g_memory_output_stream_new_resizable (void);
+

Creates a new GMemoryOutputStream, using g_realloc() and g_free() +for memory allocation.

+

Since: 2.36

+
+
+
+

g_memory_output_stream_get_data ()

+
gpointer
+g_memory_output_stream_get_data (GMemoryOutputStream *ostream);
+

Gets any loaded data from the ostream +.

+

Note that the returned pointer may become invalid on the next +write or truncate operation on the stream.

+
+

Parameters

+
+++++ + + + + + +

ostream

a GMemoryOutputStream

 
+
+
+

Returns

+

pointer to the stream's data, or NULL if the data +has been stolen.

+

[transfer none]

+
+
+
+
+

g_memory_output_stream_get_size ()

+
gsize
+g_memory_output_stream_get_size (GMemoryOutputStream *ostream);
+

Gets the size of the currently allocated data area (available from +g_memory_output_stream_get_data()).

+

You probably don't want to use this function on resizable streams. +See g_memory_output_stream_get_data_size() instead. For resizable +streams the size returned by this function is an implementation +detail and may be change at any time in response to operations on the +stream.

+

If the stream is fixed-sized (ie: no realloc was passed to +g_memory_output_stream_new()) then this is the maximum size of the +stream and further writes will return G_IO_ERROR_NO_SPACE.

+

In any case, if you want the number of bytes currently written to the +stream, use g_memory_output_stream_get_data_size().

+
+

Parameters

+
+++++ + + + + + +

ostream

a GMemoryOutputStream

 
+
+
+

Returns

+

the number of bytes allocated for the data buffer

+
+
+
+
+

g_memory_output_stream_get_data_size ()

+
gsize
+g_memory_output_stream_get_data_size (GMemoryOutputStream *ostream);
+

Returns the number of bytes from the start up to including the last +byte written in the stream that has not been truncated away.

+
+

Parameters

+
+++++ + + + + + +

ostream

a GMemoryOutputStream

 
+
+
+

Returns

+

the number of bytes written to the stream

+
+

Since: 2.18

+
+
+
+

g_memory_output_stream_steal_data ()

+
gpointer
+g_memory_output_stream_steal_data (GMemoryOutputStream *ostream);
+

Gets any loaded data from the ostream +. Ownership of the data +is transferred to the caller; when no longer needed it must be +freed using the free function set in ostream +'s +“destroy-function” property.

+

ostream + must be closed before calling this function.

+
+

Parameters

+
+++++ + + + + + +

ostream

a GMemoryOutputStream

 
+
+
+

Returns

+

the stream's data, or NULL if it has previously +been stolen.

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_memory_output_stream_steal_as_bytes ()

+
GBytes *
+g_memory_output_stream_steal_as_bytes (GMemoryOutputStream *ostream);
+

Returns data from the ostream + as a GBytes. ostream + must be +closed before calling this function.

+
+

Parameters

+
+++++ + + + + + +

ostream

a GMemoryOutputStream

 
+
+
+

Returns

+

the stream's data.

+

[transfer full]

+
+

Since: 2.34

+
+
+
+

Types and Values

+
+

GMemoryOutputStream

+
typedef struct _GMemoryOutputStream GMemoryOutputStream;
+

Implements GOutputStream for arbitrary memory chunks.

+
+
+
+

Property Details

+
+

The “data” property

+
  “data”                     gpointer
+

Pointer to buffer where data will be written.

+

Flags: Read / Write / Construct Only

+

Since: 2.24

+
+
+
+

The “data-size” property

+
  “data-size”                gulong
+

Size of data written to the buffer.

+

Flags: Read

+

Since: 2.24

+
+
+
+

The “destroy-function” property

+
  “destroy-function”         gpointer
+

Function called with the buffer as argument when the stream is destroyed.

+

[skip]

+

Flags: Read / Write / Construct Only

+

Since: 2.24

+
+
+
+

The “realloc-function” property

+
  “realloc-function”         gpointer
+

Function with realloc semantics called to enlarge the buffer.

+

[skip]

+

Flags: Read / Write / Construct Only

+

Since: 2.24

+
+
+
+

The “size” property

+
  “size”                     gulong
+

Current size of the data buffer.

+

Flags: Read / Write / Construct Only

+

Since: 2.24

+
+
+
+

See Also

+

GMemoryInputStream

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GMenu.html b/docs/reference/gio/html/GMenu.html new file mode 100644 index 0000000..37eaded --- /dev/null +++ b/docs/reference/gio/html/GMenu.html @@ -0,0 +1,1870 @@ + + + + +GMenu: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GMenu

+

GMenu — A simple implementation of GMenuModel

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GMenu * + +g_menu_new () +
+void + +g_menu_freeze () +
+void + +g_menu_insert () +
+void + +g_menu_prepend () +
+void + +g_menu_append () +
+void + +g_menu_insert_item () +
+void + +g_menu_append_item () +
+void + +g_menu_prepend_item () +
+void + +g_menu_insert_section () +
+void + +g_menu_prepend_section () +
+void + +g_menu_append_section () +
+void + +g_menu_append_submenu () +
+void + +g_menu_insert_submenu () +
+void + +g_menu_prepend_submenu () +
+void + +g_menu_remove () +
+void + +g_menu_remove_all () +
+GMenuItem * + +g_menu_item_new () +
+GMenuItem * + +g_menu_item_new_section () +
+GMenuItem * + +g_menu_item_new_submenu () +
+GMenuItem * + +g_menu_item_new_from_model () +
+void + +g_menu_item_set_label () +
+void + +g_menu_item_set_icon () +
+void + +g_menu_item_set_action_and_target_value () +
+void + +g_menu_item_set_action_and_target () +
+void + +g_menu_item_set_detailed_action () +
+void + +g_menu_item_set_section () +
+void + +g_menu_item_set_submenu () +
+GVariant * + +g_menu_item_get_attribute_value () +
+gboolean + +g_menu_item_get_attribute () +
+GMenuModel * + +g_menu_item_get_link () +
+void + +g_menu_item_set_attribute_value () +
+void + +g_menu_item_set_attribute () +
+void + +g_menu_item_set_link () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GMenu
 GMenuItem
+
+
+

Object Hierarchy

+
    GObject
+    ├── GMenuItem
+    ╰── GMenuModel
+        ╰── GMenu
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GMenu is a simple implementation of GMenuModel. +You populate a GMenu by adding GMenuItem instances to it.

+

There are some convenience functions to allow you to directly +add items (avoiding GMenuItem) for the common cases. To add +a regular item, use g_menu_insert(). To add a section, use +g_menu_insert_section(). To add a submenu, use +g_menu_insert_submenu().

+
+
+

Functions

+
+

g_menu_new ()

+
GMenu *
+g_menu_new (void);
+

Creates a new GMenu.

+

The new menu has no items.

+
+

Returns

+

a new GMenu

+
+

Since: 2.32

+
+
+
+

g_menu_freeze ()

+
void
+g_menu_freeze (GMenu *menu);
+

Marks menu + as frozen.

+

After the menu is frozen, it is an error to attempt to make any +changes to it. In effect this means that the GMenu API must no +longer be used.

+

This function causes g_menu_model_is_mutable() to begin returning +FALSE, which has some positive performance implications.

+
+

Parameters

+
+++++ + + + + + +

menu

a GMenu

 
+
+

Since: 2.32

+
+
+
+

g_menu_insert ()

+
void
+g_menu_insert (GMenu *menu,
+               gint position,
+               const gchar *label,
+               const gchar *detailed_action);
+

Convenience function for inserting a normal menu item into menu +. +Combine g_menu_item_new() and g_menu_insert_item() for a more flexible +alternative.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

menu

a GMenu

 

position

the position at which to insert the item

 

label

the section label, or NULL.

[allow-none]

detailed_action

the detailed action string, or NULL.

[allow-none]
+
+

Since: 2.32

+
+
+
+

g_menu_prepend ()

+
void
+g_menu_prepend (GMenu *menu,
+                const gchar *label,
+                const gchar *detailed_action);
+

Convenience function for prepending a normal menu item to the start +of menu +. Combine g_menu_item_new() and g_menu_insert_item() for a more +flexible alternative.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

menu

a GMenu

 

label

the section label, or NULL.

[allow-none]

detailed_action

the detailed action string, or NULL.

[allow-none]
+
+

Since: 2.32

+
+
+
+

g_menu_append ()

+
void
+g_menu_append (GMenu *menu,
+               const gchar *label,
+               const gchar *detailed_action);
+

Convenience function for appending a normal menu item to the end of +menu +. Combine g_menu_item_new() and g_menu_insert_item() for a more +flexible alternative.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

menu

a GMenu

 

label

the section label, or NULL.

[allow-none]

detailed_action

the detailed action string, or NULL.

[allow-none]
+
+

Since: 2.32

+
+
+
+

g_menu_insert_item ()

+
void
+g_menu_insert_item (GMenu *menu,
+                    gint position,
+                    GMenuItem *item);
+

Inserts item + into menu +.

+

The "insertion" is actually done by copying all of the attribute and +link values of item + and using them to form a new item within menu +. +As such, item + itself is not really inserted, but rather, a menu item +that is exactly the same as the one presently described by item +.

+

This means that item + is essentially useless after the insertion +occurs. Any changes you make to it are ignored unless it is inserted +again (at which point its updated values will be copied).

+

You should probably just free item + once you're done.

+

There are many convenience functions to take care of common cases. +See g_menu_insert(), g_menu_insert_section() and +g_menu_insert_submenu() as well as "prepend" and "append" variants of +each of these functions.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

menu

a GMenu

 

position

the position at which to insert the item

 

item

the GMenuItem to insert

 
+
+

Since: 2.32

+
+
+
+

g_menu_append_item ()

+
void
+g_menu_append_item (GMenu *menu,
+                    GMenuItem *item);
+

Appends item + to the end of menu +.

+

See g_menu_insert_item() for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

menu

a GMenu

 

item

a GMenuItem to append

 
+
+

Since: 2.32

+
+
+
+

g_menu_prepend_item ()

+
void
+g_menu_prepend_item (GMenu *menu,
+                     GMenuItem *item);
+

Prepends item + to the start of menu +.

+

See g_menu_insert_item() for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

menu

a GMenu

 

item

a GMenuItem to prepend

 
+
+

Since: 2.32

+
+
+
+

g_menu_insert_section ()

+
void
+g_menu_insert_section (GMenu *menu,
+                       gint position,
+                       const gchar *label,
+                       GMenuModel *section);
+

Convenience function for inserting a section menu item into menu +. +Combine g_menu_item_new_section() and g_menu_insert_item() for a more +flexible alternative.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

menu

a GMenu

 

position

the position at which to insert the item

 

label

the section label, or NULL.

[allow-none]

section

a GMenuModel with the items of the section

 
+
+

Since: 2.32

+
+
+
+

g_menu_prepend_section ()

+
void
+g_menu_prepend_section (GMenu *menu,
+                        const gchar *label,
+                        GMenuModel *section);
+

Convenience function for prepending a section menu item to the start +of menu +. Combine g_menu_item_new_section() and g_menu_insert_item() for +a more flexible alternative.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

menu

a GMenu

 

label

the section label, or NULL.

[allow-none]

section

a GMenuModel with the items of the section

 
+
+

Since: 2.32

+
+
+
+

g_menu_append_section ()

+
void
+g_menu_append_section (GMenu *menu,
+                       const gchar *label,
+                       GMenuModel *section);
+

Convenience function for appending a section menu item to the end of +menu +. Combine g_menu_item_new_section() and g_menu_insert_item() for a +more flexible alternative.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

menu

a GMenu

 

label

the section label, or NULL.

[allow-none]

section

a GMenuModel with the items of the section

 
+
+

Since: 2.32

+
+
+
+

g_menu_append_submenu ()

+
void
+g_menu_append_submenu (GMenu *menu,
+                       const gchar *label,
+                       GMenuModel *submenu);
+

Convenience function for appending a submenu menu item to the end of +menu +. Combine g_menu_item_new_submenu() and g_menu_insert_item() for a +more flexible alternative.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

menu

a GMenu

 

label

the section label, or NULL.

[allow-none]

submenu

a GMenuModel with the items of the submenu

 
+
+

Since: 2.32

+
+
+
+

g_menu_insert_submenu ()

+
void
+g_menu_insert_submenu (GMenu *menu,
+                       gint position,
+                       const gchar *label,
+                       GMenuModel *submenu);
+

Convenience function for inserting a submenu menu item into menu +. +Combine g_menu_item_new_submenu() and g_menu_insert_item() for a more +flexible alternative.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

menu

a GMenu

 

position

the position at which to insert the item

 

label

the section label, or NULL.

[allow-none]

submenu

a GMenuModel with the items of the submenu

 
+
+

Since: 2.32

+
+
+
+

g_menu_prepend_submenu ()

+
void
+g_menu_prepend_submenu (GMenu *menu,
+                        const gchar *label,
+                        GMenuModel *submenu);
+

Convenience function for prepending a submenu menu item to the start +of menu +. Combine g_menu_item_new_submenu() and g_menu_insert_item() for +a more flexible alternative.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

menu

a GMenu

 

label

the section label, or NULL.

[allow-none]

submenu

a GMenuModel with the items of the submenu

 
+
+

Since: 2.32

+
+
+
+

g_menu_remove ()

+
void
+g_menu_remove (GMenu *menu,
+               gint position);
+

Removes an item from the menu.

+

position + gives the index of the item to remove.

+

It is an error if position is not in range the range from 0 to one +less than the number of items in the menu.

+

It is not possible to remove items by identity since items are added +to the menu simply by copying their links and attributes (ie: +identity of the item itself is not preserved).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

menu

a GMenu

 

position

the position of the item to remove

 
+
+

Since: 2.32

+
+
+
+

g_menu_remove_all ()

+
void
+g_menu_remove_all (GMenu *menu);
+

Removes all items in the menu.

+
+

Parameters

+
+++++ + + + + + +

menu

a GMenu

 
+
+

Since: 2.38

+
+
+
+

g_menu_item_new ()

+
GMenuItem *
+g_menu_item_new (const gchar *label,
+                 const gchar *detailed_action);
+

Creates a new GMenuItem.

+

If label + is non-NULL it is used to set the "label" attribute of the +new item.

+

If detailed_action + is non-NULL it is used to set the "action" and +possibly the "target" attribute of the new item. See +g_menu_item_set_detailed_action() for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

label

the section label, or NULL.

[allow-none]

detailed_action

the detailed action string, or NULL.

[allow-none]
+
+
+

Returns

+

a new GMenuItem

+
+

Since: 2.32

+
+
+
+

g_menu_item_new_section ()

+
GMenuItem *
+g_menu_item_new_section (const gchar *label,
+                         GMenuModel *section);
+

Creates a new GMenuItem representing a section.

+

This is a convenience API around g_menu_item_new() and +g_menu_item_set_section().

+

The effect of having one menu appear as a section of another is +exactly as it sounds: the items from section + become a direct part of +the menu that menu_item + is added to.

+

Visual separation is typically displayed between two non-empty +sections. If label + is non-NULL then it will be encorporated into +this visual indication. This allows for labeled subsections of a +menu.

+

As a simple example, consider a typical "Edit" menu from a simple +program. It probably contains an "Undo" and "Redo" item, followed by +a separator, followed by "Cut", "Copy" and "Paste".

+

This would be accomplished by creating three GMenu instances. The +first would be populated with the "Undo" and "Redo" items, and the +second with the "Cut", "Copy" and "Paste" items. The first and +second menus would then be added as submenus of the third. In XML +format, this would look something like the following:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
<menu id='edit-menu'>
+  <section>
+    <item label='Undo'/>
+    <item label='Redo'/>
+  </section>
+  <section>
+    <item label='Cut'/>
+    <item label='Copy'/>
+    <item label='Paste'/>
+  </section>
+</menu>
+
+ +

+

The following example is exactly equivalent. It is more illustrative +of the exact relationship between the menus and items (keeping in +mind that the 'link' element defines a new menu that is linked to the +containing one). The style of the second example is more verbose and +difficult to read (and therefore not recommended except for the +purpose of understanding what is really going on).

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
<menu id='edit-menu'>
+  <item>
+    <link name='section'>
+      <item label='Undo'/>
+      <item label='Redo'/>
+    </link>
+  </item>
+  <item>
+    <link name='section'>
+      <item label='Cut'/>
+      <item label='Copy'/>
+      <item label='Paste'/>
+    </link>
+  </item>
+</menu>
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

label

the section label, or NULL.

[allow-none]

section

a GMenuModel with the items of the section

 
+
+
+

Returns

+

a new GMenuItem

+
+

Since: 2.32

+
+
+
+

g_menu_item_new_submenu ()

+
GMenuItem *
+g_menu_item_new_submenu (const gchar *label,
+                         GMenuModel *submenu);
+

Creates a new GMenuItem representing a submenu.

+

This is a convenience API around g_menu_item_new() and +g_menu_item_set_submenu().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

label

the section label, or NULL.

[allow-none]

submenu

a GMenuModel with the items of the submenu

 
+
+
+

Returns

+

a new GMenuItem

+
+

Since: 2.32

+
+
+
+

g_menu_item_new_from_model ()

+
GMenuItem *
+g_menu_item_new_from_model (GMenuModel *model,
+                            gint item_index);
+

Creates a GMenuItem as an exact copy of an existing menu item in a +GMenuModel.

+

item_index + must be valid (ie: be sure to call +g_menu_model_get_n_items() first).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

model

a GMenuModel

 

item_index

the index of an item in model +

 
+
+
+

Returns

+

a new GMenuItem.

+
+

Since: 2.34

+
+
+
+

g_menu_item_set_label ()

+
void
+g_menu_item_set_label (GMenuItem *menu_item,
+                       const gchar *label);
+

Sets or unsets the "label" attribute of menu_item +.

+

If label + is non-NULL it is used as the label for the menu item. If +it is NULL then the label attribute is unset.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

menu_item

a GMenuItem

 

label

the label to set, or NULL to unset.

[allow-none]
+
+

Since: 2.32

+
+
+
+

g_menu_item_set_icon ()

+
void
+g_menu_item_set_icon (GMenuItem *menu_item,
+                      GIcon *icon);
+

Sets (or unsets) the icon on menu_item +.

+

This call is the same as calling g_icon_serialize() and using the +result as the value to g_menu_item_set_attribute_value() for +G_MENU_ATTRIBUTE_ICON.

+

This API is only intended for use with "noun" menu items; things like +bookmarks or applications in an "Open With" menu. Don't use it on +menu items corresponding to verbs (eg: stock icons for 'Save' or +'Quit').

+

If icon + is NULL then the icon is unset.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

menu_item

a GMenuItem

 

icon

a GIcon, or NULL

 
+
+

Since: 2.38

+
+
+
+

g_menu_item_set_action_and_target_value ()

+
void
+g_menu_item_set_action_and_target_value
+                               (GMenuItem *menu_item,
+                                const gchar *action,
+                                GVariant *target_value);
+

Sets or unsets the "action" and "target" attributes of menu_item +.

+

If action + is NULL then both the "action" and "target" attributes +are unset (and target_value + is ignored).

+

If action + is non-NULL then the "action" attribute is set. The +"target" attribute is then set to the value of target_value + if it is +non-NULL or unset otherwise.

+

Normal menu items (ie: not submenu, section or other custom item +types) are expected to have the "action" attribute set to identify +the action that they are associated with. The state type of the +action help to determine the disposition of the menu item. See +GAction and GActionGroup for an overview of actions.

+

In general, clicking on the menu item will result in activation of +the named action with the "target" attribute given as the parameter +to the action invocation. If the "target" attribute is not set then +the action is invoked with no parameter.

+

If the action has no state then the menu item is usually drawn as a +plain menu item (ie: with no additional decoration).

+

If the action has a boolean state then the menu item is usually drawn +as a toggle menu item (ie: with a checkmark or equivalent +indication). The item should be marked as 'toggled' or 'checked' +when the boolean state is TRUE.

+

If the action has a string state then the menu item is usually drawn +as a radio menu item (ie: with a radio bullet or equivalent +indication). The item should be marked as 'selected' when the string +state is equal to the value of the target + property.

+

See g_menu_item_set_action_and_target() or +g_menu_item_set_detailed_action() for two equivalent calls that are +probably more convenient for most uses.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

menu_item

a GMenuItem

 

action

the name of the action for this item.

[allow-none]

target_value

a GVariant to use as the action target.

[allow-none]
+
+

Since: 2.32

+
+
+
+

g_menu_item_set_action_and_target ()

+
void
+g_menu_item_set_action_and_target (GMenuItem *menu_item,
+                                   const gchar *action,
+                                   const gchar *format_string,
+                                   ...);
+

Sets or unsets the "action" and "target" attributes of menu_item +.

+

If action + is NULL then both the "action" and "target" attributes +are unset (and format_string + is ignored along with the positional +parameters).

+

If action + is non-NULL then the "action" attribute is set. +format_string + is then inspected. If it is non-NULL then the proper +position parameters are collected to create a GVariant instance to +use as the target value. If it is NULL then the positional +parameters are ignored and the "target" attribute is unset.

+

See also g_menu_item_set_action_and_target_value() for an equivalent +call that directly accepts a GVariant. See +g_menu_item_set_detailed_action() for a more convenient version that +works with string-typed targets.

+

See also g_menu_item_set_action_and_target_value() for a +description of the semantics of the action and target attributes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

menu_item

a GMenuItem

 

action

the name of the action for this item.

[allow-none]

format_string

a GVariant format string.

[allow-none]

...

positional parameters, as per format_string +

 
+
+

Since: 2.32

+
+
+
+

g_menu_item_set_detailed_action ()

+
void
+g_menu_item_set_detailed_action (GMenuItem *menu_item,
+                                 const gchar *detailed_action);
+

Sets the "action" and possibly the "target" attribute of menu_item +.

+

The format of detailed_action + is the same format parsed by +g_action_parse_detailed_name().

+

See g_menu_item_set_action_and_target() or +g_menu_item_set_action_and_target_value() for more flexible (but +slightly less convenient) alternatives.

+

See also g_menu_item_set_action_and_target_value() for a description of +the semantics of the action and target attributes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

menu_item

a GMenuItem

 

detailed_action

the "detailed" action string

 
+
+

Since: 2.32

+
+
+
+

g_menu_item_set_section ()

+
void
+g_menu_item_set_section (GMenuItem *menu_item,
+                         GMenuModel *section);
+

Sets or unsets the "section" link of menu_item + to section +.

+

The effect of having one menu appear as a section of another is +exactly as it sounds: the items from section + become a direct part of +the menu that menu_item + is added to. See g_menu_item_new_section() +for more information about what it means for a menu item to be a +section.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

menu_item

a GMenuItem

 

section

a GMenuModel, or NULL.

[allow-none]
+
+

Since: 2.32

+
+
+
+

g_menu_item_set_submenu ()

+
void
+g_menu_item_set_submenu (GMenuItem *menu_item,
+                         GMenuModel *submenu);
+

Sets or unsets the "submenu" link of menu_item + to submenu +.

+

If submenu + is non-NULL, it is linked to. If it is NULL then the +link is unset.

+

The effect of having one menu appear as a submenu of another is +exactly as it sounds.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

menu_item

a GMenuItem

 

submenu

a GMenuModel, or NULL.

[allow-none]
+
+

Since: 2.32

+
+
+
+

g_menu_item_get_attribute_value ()

+
GVariant *
+g_menu_item_get_attribute_value (GMenuItem *menu_item,
+                                 const gchar *attribute,
+                                 const GVariantType *expected_type);
+

Queries the named attribute + on menu_item +.

+

If expected_type + is specified and the attribute does not have this +type, NULL is returned. NULL is also returned if the attribute +simply does not exist.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

menu_item

a GMenuItem

 

attribute

the attribute name to query

 

expected_type

the expected type of the attribute.

[allow-none]
+
+
+

Returns

+

the attribute value, or NULL.

+

[transfer full]

+
+

Since: 2.34

+
+
+
+

g_menu_item_get_attribute ()

+
gboolean
+g_menu_item_get_attribute (GMenuItem *menu_item,
+                           const gchar *attribute,
+                           const gchar *format_string,
+                           ...);
+

Queries the named attribute + on menu_item +.

+

If the attribute exists and matches the GVariantType corresponding +to format_string + then format_string + is used to deconstruct the +value into the positional parameters and TRUE is returned.

+

If the attribute does not exist, or it does exist but has the wrong +type, then the positional parameters are ignored and FALSE is +returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

menu_item

a GMenuItem

 

attribute

the attribute name to query

 

format_string

a GVariant format string

 

...

positional parameters, as per format_string +

 
+
+
+

Returns

+

TRUE if the named attribute was found with the expected +type

+
+

Since: 2.34

+
+
+
+

g_menu_item_get_link ()

+
GMenuModel *
+g_menu_item_get_link (GMenuItem *menu_item,
+                      const gchar *link);
+

Queries the named link + on menu_item +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

menu_item

a GMenuItem

 

link

the link name to query

 
+
+
+

Returns

+

the link, or NULL.

+

[transfer full]

+
+

Since: 2.34

+
+
+
+

g_menu_item_set_attribute_value ()

+
void
+g_menu_item_set_attribute_value (GMenuItem *menu_item,
+                                 const gchar *attribute,
+                                 GVariant *value);
+

Sets or unsets an attribute on menu_item +.

+

The attribute to set or unset is specified by attribute +. This +can be one of the standard attribute names G_MENU_ATTRIBUTE_LABEL, +G_MENU_ATTRIBUTE_ACTION, G_MENU_ATTRIBUTE_TARGET, or a custom +attribute name. +Attribute names are restricted to lowercase characters, numbers +and '-'. Furthermore, the names must begin with a lowercase character, +must not end with a '-', and must not contain consecutive dashes.

+

must consist only of lowercase +ASCII characters, digits and '-'.

+

If value + is non-NULL then it is used as the new value for the +attribute. If value + is NULL then the attribute is unset. If +the value + GVariant is floating, it is consumed.

+

See also g_menu_item_set_attribute() for a more convenient way to do +the same.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

menu_item

a GMenuItem

 

attribute

the attribute to set

 

value

a GVariant to use as the value, or NULL.

[allow-none]
+
+

Since: 2.32

+
+
+
+

g_menu_item_set_attribute ()

+
void
+g_menu_item_set_attribute (GMenuItem *menu_item,
+                           const gchar *attribute,
+                           const gchar *format_string,
+                           ...);
+

Sets or unsets an attribute on menu_item +.

+

The attribute to set or unset is specified by attribute +. This +can be one of the standard attribute names G_MENU_ATTRIBUTE_LABEL, +G_MENU_ATTRIBUTE_ACTION, G_MENU_ATTRIBUTE_TARGET, or a custom +attribute name. +Attribute names are restricted to lowercase characters, numbers +and '-'. Furthermore, the names must begin with a lowercase character, +must not end with a '-', and must not contain consecutive dashes.

+

If format_string + is non-NULL then the proper position parameters +are collected to create a GVariant instance to use as the attribute +value. If it is NULL then the positional parameterrs are ignored +and the named attribute is unset.

+

See also g_menu_item_set_attribute_value() for an equivalent call +that directly accepts a GVariant.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

menu_item

a GMenuItem

 

attribute

the attribute to set

 

format_string

a GVariant format string, or NULL.

[allow-none]

...

positional parameters, as per format_string +

 
+
+

Since: 2.32

+
+
+
+

g_menu_item_set_link ()

+
void
+g_menu_item_set_link (GMenuItem *menu_item,
+                      const gchar *link,
+                      GMenuModel *model);
+

Creates a link from menu_item + to model + if non-NULL, or unsets it.

+

Links are used to establish a relationship between a particular menu +item and another menu. For example, G_MENU_LINK_SUBMENU is used to +associate a submenu with a particular menu item, and G_MENU_LINK_SECTION +is used to create a section. Other types of link can be used, but there +is no guarantee that clients will be able to make sense of them. +Link types are restricted to lowercase characters, numbers +and '-'. Furthermore, the names must begin with a lowercase character, +must not end with a '-', and must not contain consecutive dashes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

menu_item

a GMenuItem

 

link

type of link to establish or unset

 

model

the GMenuModel to link to (or NULL to unset).

[allow-none]
+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

GMenu

+
typedef struct _GMenu GMenu;
+

GMenu is an opaque structure type. You must access it using the +functions below.

+

Since: 2.32

+
+
+
+

GMenuItem

+
typedef struct _GMenuItem GMenuItem;
+

GMenuItem is an opaque structure type. You must access it using the +functions below.

+

Since: 2.32

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GMenuModel.html b/docs/reference/gio/html/GMenuModel.html new file mode 100644 index 0000000..790f77c --- /dev/null +++ b/docs/reference/gio/html/GMenuModel.html @@ -0,0 +1,1208 @@ + + + + +GMenuModel: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GMenuModel

+

GMenuModel — An abstract class representing the contents of a menu

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +g_menu_model_is_mutable () +
+gint + +g_menu_model_get_n_items () +
+GVariant * + +g_menu_model_get_item_attribute_value () +
+gboolean + +g_menu_model_get_item_attribute () +
+GMenuModel * + +g_menu_model_get_item_link () +
+GMenuAttributeIter * + +g_menu_model_iterate_item_attributes () +
+GMenuLinkIter * + +g_menu_model_iterate_item_links () +
+void + +g_menu_model_items_changed () +
+gboolean + +g_menu_attribute_iter_get_next () +
const gchar * + +g_menu_attribute_iter_get_name () +
+GVariant * + +g_menu_attribute_iter_get_value () +
+gboolean + +g_menu_attribute_iter_next () +
const gchar * + +g_menu_link_iter_get_name () +
+gboolean + +g_menu_link_iter_get_next () +
+GMenuModel * + +g_menu_link_iter_get_value () +
+gboolean + +g_menu_link_iter_next () +
+
+
+

Signals

+
+++++ + + + + + +
voiditems-changedRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 GMenuModel
#defineG_MENU_ATTRIBUTE_ACTION
#defineG_MENU_ATTRIBUTE_ACTION_NAMESPACE
#defineG_MENU_ATTRIBUTE_TARGET
#defineG_MENU_ATTRIBUTE_LABEL
#defineG_MENU_ATTRIBUTE_ICON
#defineG_MENU_LINK_SECTION
#defineG_MENU_LINK_SUBMENU
structGMenuAttributeIter
structGMenuLinkIter
+
+
+

Object Hierarchy

+
    GObject
+    ├── GMenuAttributeIter
+    ├── GMenuLinkIter
+    ╰── GMenuModel
+        ├── GDBusMenuModel
+        ╰── GMenu
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GMenuModel represents the contents of a menu -- an ordered list of +menu items. The items are associated with actions, which can be +activated through them. Items can be grouped in sections, and may +have submenus associated with them. Both items and sections usually +have some representation data, such as labels or icons. The type of +the associated action (ie whether it is stateful, and what kind of +state it has) can influence the representation of the item.

+

The conceptual model of menus in GMenuModel is hierarchical: +sections and submenus are again represented by GMenuModels. +Menus themselves do not define their own roles. Rather, the role +of a particular GMenuModel is defined by the item that references +it (or, in the case of the 'root' menu, is defined by the context +in which it is used).

+

As an example, consider the visible portions of this menu:

+
+

An example menu

+

+

There are 8 "menus" visible in the screenshot: one menubar, two +submenus and 5 sections:

+
    +
  • the toplevel menubar (containing 4 items)

  • +
  • the View submenu (containing 3 sections)

  • +
  • the first section of the View submenu (containing 2 items)

  • +
  • the second section of the View submenu (containing 1 item)

  • +
  • the final section of the View submenu (containing 1 item)

  • +
  • the Highlight Mode submenu (containing 2 sections)

  • +
  • the Sources section (containing 2 items)

  • +
  • the Markup section (containing 2 items)

  • +
+

The example illustrates the conceptual connection between +these 8 menus. Each large block in the figure represents a menu and the +smaller blocks within the large block represent items in that menu. Some +items contain references to other menus.

+
+
+

A menu example

+

+

Notice that the separators visible in the example +appear nowhere in the menu model. This is because +separators are not explicitly represented in the menu model. Instead, +a separator is inserted between any two non-empty sections of a menu. +Section items can have labels just like any other item. In that case, +a display system may show a section header instead of a separator.

+

The motivation for this abstract model of application controls is +that modern user interfaces tend to make these controls available +outside the application. Examples include global menus, jumplists, +dash boards, etc. To support such uses, it is necessary to 'export' +information about actions and their representation in menus, which +is exactly what the GActionGroup exporter +and the GMenuModel exporter do for +GActionGroup and GMenuModel. The client-side counterparts to +make use of the exported information are GDBusActionGroup and +GDBusMenuModel.

+

The API of GMenuModel is very generic, with iterators for the +attributes and links of an item, see g_menu_model_iterate_item_attributes() +and g_menu_model_iterate_item_links(). The 'standard' attributes and +link types have predefined names: G_MENU_ATTRIBUTE_LABEL, +G_MENU_ATTRIBUTE_ACTION, G_MENU_ATTRIBUTE_TARGET, G_MENU_LINK_SECTION +and G_MENU_LINK_SUBMENU.

+

Items in a GMenuModel represent active controls if they refer to +an action that can get activated when the user interacts with the +menu item. The reference to the action is encoded by the string id +in the G_MENU_ATTRIBUTE_ACTION attribute. An action id uniquely +identifies an action in an action group. Which action group(s) provide +actions depends on the context in which the menu model is used. +E.g. when the model is exported as the application menu of a +GtkApplication, actions can be application-wide or window-specific +(and thus come from two different action groups). By convention, the +application-wide actions have names that start with "app.", while the +names of window-specific actions start with "win.".

+

While a wide variety of stateful actions is possible, the following +is the minimum that is expected to be supported by all users of exported +menu information:

+
    +
  • an action with no parameter type and no state

  • +
  • an action with no parameter type and boolean state

  • +
  • an action with string parameter type and string state

  • +
+
+
+

Stateless

+

A stateless action typically corresponds to an ordinary menu item.

+

Selecting such a menu item will activate the action (with no parameter).

+
+
+

Boolean State

+

An action with a boolean state will most typically be used with a "toggle" +or "switch" menu item. The state can be set directly, but activating the +action (with no parameter) results in the state being toggled.

+

Selecting a toggle menu item will activate the action. The menu item should +be rendered as "checked" when the state is true.

+
+
+

String Parameter and State

+

Actions with string parameters and state will most typically be used to +represent an enumerated choice over the items available for a group of +radio menu items. Activating the action with a string parameter is +equivalent to setting that parameter as the state.

+

Radio menu items, in addition to being associated with the action, will +have a target value. Selecting that menu item will result in activation +of the action with the target value as the parameter. The menu item should +be rendered as "selected" when the state of the action is equal to the +target value of the menu item.

+
+
+
+

Functions

+
+

g_menu_model_is_mutable ()

+
gboolean
+g_menu_model_is_mutable (GMenuModel *model);
+

Queries if model + is mutable.

+

An immutable GMenuModel will never emit the “items-changed” +signal. Consumers of the model may make optimisations accordingly.

+
+

Parameters

+
+++++ + + + + + +

model

a GMenuModel

 
+
+
+

Returns

+

TRUE if the model is mutable (ie: "items-changed" may be +emitted).

+
+

Since: 2.32

+
+
+
+

g_menu_model_get_n_items ()

+
gint
+g_menu_model_get_n_items (GMenuModel *model);
+

Query the number of items in model +.

+
+

Parameters

+
+++++ + + + + + +

model

a GMenuModel

 
+
+
+

Returns

+

the number of items

+
+

Since: 2.32

+
+
+
+

g_menu_model_get_item_attribute_value ()

+
GVariant *
+g_menu_model_get_item_attribute_value (GMenuModel *model,
+                                       gint item_index,
+                                       const gchar *attribute,
+                                       const GVariantType *expected_type);
+

Queries the item at position item_index + in model + for the attribute +specified by attribute +.

+

If expected_type + is non-NULL then it specifies the expected type of +the attribute. If it is NULL then any type will be accepted.

+

If the attribute exists and matches expected_type + (or if the +expected type is unspecified) then the value is returned.

+

If the attribute does not exist, or does not match the expected type +then NULL is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

model

a GMenuModel

 

item_index

the index of the item

 

attribute

the attribute to query

 

expected_type

the expected type of the attribute, or +NULL.

[allow-none]
+
+
+

Returns

+

the value of the attribute.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_menu_model_get_item_attribute ()

+
gboolean
+g_menu_model_get_item_attribute (GMenuModel *model,
+                                 gint item_index,
+                                 const gchar *attribute,
+                                 const gchar *format_string,
+                                 ...);
+

Queries item at position item_index + in model + for the attribute +specified by attribute +.

+

If the attribute exists and matches the GVariantType corresponding +to format_string + then format_string + is used to deconstruct the +value into the positional parameters and TRUE is returned.

+

If the attribute does not exist, or it does exist but has the wrong +type, then the positional parameters are ignored and FALSE is +returned.

+

This function is a mix of g_menu_model_get_item_attribute_value() and +g_variant_get(), followed by a g_variant_unref(). As such, +format_string + must make a complete copy of the data (since the +GVariant may go away after the call to g_variant_unref()). In +particular, no '&' characters are allowed in format_string +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

model

a GMenuModel

 

item_index

the index of the item

 

attribute

the attribute to query

 

format_string

a GVariant format string

 

...

positional parameters, as per format_string +

 
+
+
+

Returns

+

TRUE if the named attribute was found with the expected +type

+
+

Since: 2.32

+
+
+
+

g_menu_model_get_item_link ()

+
GMenuModel *
+g_menu_model_get_item_link (GMenuModel *model,
+                            gint item_index,
+                            const gchar *link);
+

Queries the item at position item_index + in model + for the link +specified by link +.

+

If the link exists, the linked GMenuModel is returned. If the link +does not exist, NULL is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

model

a GMenuModel

 

item_index

the index of the item

 

link

the link to query

 
+
+
+

Returns

+

the linked GMenuModel, or NULL.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_menu_model_iterate_item_attributes ()

+
GMenuAttributeIter *
+g_menu_model_iterate_item_attributes (GMenuModel *model,
+                                      gint item_index);
+

Creates a GMenuAttributeIter to iterate over the attributes of +the item at position item_index + in model +.

+

You must free the iterator with g_object_unref() when you are done.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

model

a GMenuModel

 

item_index

the index of the item

 
+
+
+

Returns

+

a new GMenuAttributeIter.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_menu_model_iterate_item_links ()

+
GMenuLinkIter *
+g_menu_model_iterate_item_links (GMenuModel *model,
+                                 gint item_index);
+

Creates a GMenuLinkIter to iterate over the links of the item at +position item_index + in model +.

+

You must free the iterator with g_object_unref() when you are done.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

model

a GMenuModel

 

item_index

the index of the item

 
+
+
+

Returns

+

a new GMenuLinkIter.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_menu_model_items_changed ()

+
void
+g_menu_model_items_changed (GMenuModel *model,
+                            gint position,
+                            gint removed,
+                            gint added);
+

Requests emission of the “items-changed” signal on model +.

+

This function should never be called except by GMenuModel +subclasses. Any other calls to this function will very likely lead +to a violation of the interface of the model.

+

The implementation should update its internal representation of the +menu before emitting the signal. The implementation should further +expect to receive queries about the new state of the menu (and +particularly added menu items) while signal handlers are running.

+

The implementation must dispatch this call directly from a mainloop +entry and not in response to calls -- particularly those from the +GMenuModel API. Said another way: the menu must not change while +user code is running without returning to the mainloop.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

model

a GMenuModel

 

position

the position of the change

 

removed

the number of items removed

 

added

the number of items added

 
+
+

Since: 2.32

+
+
+
+

g_menu_attribute_iter_get_next ()

+
gboolean
+g_menu_attribute_iter_get_next (GMenuAttributeIter *iter,
+                                const gchar **out_name,
+                                GVariant **value);
+

This function combines g_menu_attribute_iter_next() with +g_menu_attribute_iter_get_name() and g_menu_attribute_iter_get_value().

+

First the iterator is advanced to the next (possibly first) attribute. +If that fails, then FALSE is returned and there are no other +effects.

+

If successful, name + and value + are set to the name and value of the +attribute that has just been advanced to. At this point, +g_menu_attribute_iter_get_name() and g_menu_attribute_iter_get_value() will +return the same values again.

+

The value returned in name + remains valid for as long as the iterator +remains at the current position. The value returned in value + must +be unreffed using g_variant_unref() when it is no longer in use.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

iter

a GMenuAttributeIter

 

out_name

the type of the attribute.

[out][allow-none][transfer none]

value

the attribute value.

[out][allow-none][transfer full]
+
+
+

Returns

+

TRUE on success, or FALSE if there is no additional +attribute

+
+

Since: 2.32

+
+
+
+

g_menu_attribute_iter_get_name ()

+
const gchar *
+g_menu_attribute_iter_get_name (GMenuAttributeIter *iter);
+

Gets the name of the attribute at the current iterator position, as +a string.

+

The iterator is not advanced.

+
+

Parameters

+
+++++ + + + + + +

iter

a GMenuAttributeIter

 
+
+
+

Returns

+

the name of the attribute

+
+

Since: 2.32

+
+
+
+

g_menu_attribute_iter_get_value ()

+
GVariant *
+g_menu_attribute_iter_get_value (GMenuAttributeIter *iter);
+

Gets the value of the attribute at the current iterator position.

+

The iterator is not advanced.

+
+

Parameters

+
+++++ + + + + + +

iter

a GMenuAttributeIter

 
+
+
+

Returns

+

the value of the current attribute.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_menu_attribute_iter_next ()

+
gboolean
+g_menu_attribute_iter_next (GMenuAttributeIter *iter);
+

Attempts to advance the iterator to the next (possibly first) +attribute.

+

TRUE is returned on success, or FALSE if there are no more +attributes.

+

You must call this function when you first acquire the iterator +to advance it to the first attribute (and determine if the first +attribute exists at all).

+
+

Parameters

+
+++++ + + + + + +

iter

a GMenuAttributeIter

 
+
+
+

Returns

+

TRUE on success, or FALSE when there are no more attributes

+
+

Since: 2.32

+
+
+
+

g_menu_link_iter_get_name ()

+
const gchar *
+g_menu_link_iter_get_name (GMenuLinkIter *iter);
+

Gets the name of the link at the current iterator position.

+

The iterator is not advanced.

+
+

Parameters

+
+++++ + + + + + +

iter

a GMenuLinkIter

 
+
+
+

Returns

+

the type of the link

+
+

Since: 2.32

+
+
+
+

g_menu_link_iter_get_next ()

+
gboolean
+g_menu_link_iter_get_next (GMenuLinkIter *iter,
+                           const gchar **out_link,
+                           GMenuModel **value);
+

This function combines g_menu_link_iter_next() with +g_menu_link_iter_get_name() and g_menu_link_iter_get_value().

+

First the iterator is advanced to the next (possibly first) link. +If that fails, then FALSE is returned and there are no other effects.

+

If successful, out_link + and value + are set to the name and GMenuModel +of the link that has just been advanced to. At this point, +g_menu_link_iter_get_name() and g_menu_link_iter_get_value() will return the +same values again.

+

The value returned in out_link + remains valid for as long as the iterator +remains at the current position. The value returned in value + must +be unreffed using g_object_unref() when it is no longer in use.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

iter

a GMenuLinkIter

 

out_link

the name of the link.

[out][allow-none][transfer none]

value

the linked GMenuModel.

[out][allow-none][transfer full]
+
+
+

Returns

+

TRUE on success, or FALSE if there is no additional link

+
+

Since: 2.32

+
+
+
+

g_menu_link_iter_get_value ()

+
GMenuModel *
+g_menu_link_iter_get_value (GMenuLinkIter *iter);
+

Gets the linked GMenuModel at the current iterator position.

+

The iterator is not advanced.

+
+

Parameters

+
+++++ + + + + + +

iter

a GMenuLinkIter

 
+
+
+

Returns

+

the GMenuModel that is linked to.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_menu_link_iter_next ()

+
gboolean
+g_menu_link_iter_next (GMenuLinkIter *iter);
+

Attempts to advance the iterator to the next (possibly first) +link.

+

TRUE is returned on success, or FALSE if there are no more links.

+

You must call this function when you first acquire the iterator to +advance it to the first link (and determine if the first link exists +at all).

+
+

Parameters

+
+++++ + + + + + +

iter

a GMenuLinkIter

 
+
+
+

Returns

+

TRUE on success, or FALSE when there are no more links

+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

GMenuModel

+
typedef struct _GMenuModel GMenuModel;
+

GMenuModel is an opaque structure type. You must access it using the +functions below.

+

Since: 2.32

+
+
+
+

G_MENU_ATTRIBUTE_ACTION

+
#define G_MENU_ATTRIBUTE_ACTION "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

+
+
+
+

G_MENU_ATTRIBUTE_ACTION_NAMESPACE

+
#define G_MENU_ATTRIBUTE_ACTION_NAMESPACE "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

+
+
+
+

G_MENU_ATTRIBUTE_TARGET

+
#define G_MENU_ATTRIBUTE_TARGET "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

+
+
+
+

G_MENU_ATTRIBUTE_LABEL

+
#define G_MENU_ATTRIBUTE_LABEL "label"
+
+

The menu item attribute which holds the label of the item.

+

Since: 2.32

+
+
+
+

G_MENU_ATTRIBUTE_ICON

+
#define G_MENU_ATTRIBUTE_ICON "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

+
+
+
+

G_MENU_LINK_SECTION

+
#define G_MENU_LINK_SECTION "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

+
+
+
+

G_MENU_LINK_SUBMENU

+
#define G_MENU_LINK_SUBMENU "submenu"
+
+

The name of the link that associates a menu item with a submenu.

+

See also g_menu_item_set_link().

+

Since: 2.32

+
+
+
+

struct GMenuAttributeIter

+
struct GMenuAttributeIter;
+

GMenuAttributeIter is an opaque structure type. You must access it +using the functions below.

+

Since: 2.32

+
+
+
+

struct GMenuLinkIter

+
struct GMenuLinkIter;
+

GMenuLinkIter is an opaque structure type. You must access it using +the functions below.

+

Since: 2.32

+
+
+
+

Signal Details

+
+

The “items-changed” signal

+
void
+user_function (GMenuModel *model,
+               gint        position,
+               gint        removed,
+               gint        added,
+               gpointer    user_data)
+

Emitted when a change has occured to the menu.

+

The only changes that can occur to a menu is that items are removed +or added. Items may not change (except by being removed and added +back in the same location). This signal is capable of describing +both of those changes (at the same time).

+

The signal means that starting at the index position +, removed + +items were removed and added + items were added in their place. If +removed + is zero then only items were added. If added + is zero +then only items were removed.

+

As an example, if the menu contains items a, b, c, d (in that +order) and the signal (2, 1, 3) occurs then the new composition of +the menu will be a, b, _, _, _, d (with each _ representing some +new item).

+

Signal handlers may query the model (particularly the added items) +and expect to see the results of the modification that is being +reported. The signal is emitted after the modification.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

model

the GMenuModel that is changing

 

position

the position of the change

 

removed

the number of items removed

 

added

the number of items added

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

See Also

+

GActionGroup

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GMount.html b/docs/reference/gio/html/GMount.html new file mode 100644 index 0000000..0eb40cc --- /dev/null +++ b/docs/reference/gio/html/GMount.html @@ -0,0 +1,1917 @@ + + + + +GMount: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GMount

+

GMount — Mount management

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+char * + +g_mount_get_name () +
+char * + +g_mount_get_uuid () +
+GIcon * + +g_mount_get_icon () +
+GIcon * + +g_mount_get_symbolic_icon () +
+GDrive * + +g_mount_get_drive () +
+GFile * + +g_mount_get_root () +
+GVolume * + +g_mount_get_volume () +
+GFile * + +g_mount_get_default_location () +
+gboolean + +g_mount_can_unmount () +
+void + +g_mount_unmount () +
+gboolean + +g_mount_unmount_finish () +
+void + +g_mount_unmount_with_operation () +
+gboolean + +g_mount_unmount_with_operation_finish () +
+void + +g_mount_remount () +
+gboolean + +g_mount_remount_finish () +
+gboolean + +g_mount_can_eject () +
+void + +g_mount_eject () +
+gboolean + +g_mount_eject_finish () +
+void + +g_mount_eject_with_operation () +
+gboolean + +g_mount_eject_with_operation_finish () +
+void + +g_mount_guess_content_type () +
+gchar ** + +g_mount_guess_content_type_finish () +
+gchar ** + +g_mount_guess_content_type_sync () +
+gboolean + +g_mount_is_shadowed () +
+void + +g_mount_shadow () +
+void + +g_mount_unshadow () +
const gchar * + +g_mount_get_sort_key () +
+
+
+

Signals

+
+++++ + + + + + + + + + + + + + + + + + +
voidchangedRun Last
voidpre-unmountRun Last
voidunmountedRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + +
 GMount
structGMountIface
enumGMountMountFlags
enumGMountUnmountFlags
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GMount
+
+
+
+

Prerequisites

+

+GMount requires + GObject.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

The GMount interface represents user-visible mounts. Note, when +porting from GnomeVFS, GMount is the moral equivalent of GnomeVFSVolume.

+

GMount is a "mounted" filesystem that you can access. Mounted is in +quotes because it's not the same as a unix mount, it might be a gvfs +mount, but you can still access the files on it if you use GIO. Might or +might not be related to a volume object.

+

Unmounting a GMount instance is an asynchronous operation. For +more information about asynchronous operations, see GAsyncResult +and GTask. To unmount a GMount instance, first call +g_mount_unmount_with_operation() with (at least) the GMount instance and a +GAsyncReadyCallback. The callback will be fired when the +operation has resolved (either with success or failure), and a +GAsyncReady structure will be passed to the callback. That +callback should then call g_mount_unmount_with_operation_finish() with the GMount +and the GAsyncReady data to see if the operation was completed +successfully. If an error + is present when g_mount_unmount_with_operation_finish() +is called, then it will be filled with any error information.

+
+
+

Functions

+
+

g_mount_get_name ()

+
char *
+g_mount_get_name (GMount *mount);
+

Gets the name of mount +.

+
+

Parameters

+
+++++ + + + + + +

mount

a GMount.

 
+
+
+

Returns

+

the name for the given mount +. +The returned string should be freed with g_free() +when no longer needed.

+
+
+
+
+

g_mount_get_uuid ()

+
char *
+g_mount_get_uuid (GMount *mount);
+

Gets the UUID for the mount +. 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.

+
+

Parameters

+
+++++ + + + + + +

mount

a GMount.

 
+
+
+

Returns

+

the UUID for mount +or NULL if no UUID can be computed. +The returned string should be freed with g_free() +when no longer needed.

+
+
+
+
+

g_mount_get_icon ()

+
GIcon *
+g_mount_get_icon (GMount *mount);
+

Gets the icon for mount +.

+
+

Parameters

+
+++++ + + + + + +

mount

a GMount.

 
+
+
+

Returns

+

a GIcon. +The returned object should be unreffed with +g_object_unref() when no longer needed.

+

[transfer full]

+
+
+
+
+

g_mount_get_symbolic_icon ()

+
GIcon *
+g_mount_get_symbolic_icon (GMount *mount);
+

Gets the symbolic icon for mount +.

+
+

Parameters

+
+++++ + + + + + +

mount

a GMount.

 
+
+
+

Returns

+

a GIcon. +The returned object should be unreffed with +g_object_unref() when no longer needed.

+

[transfer full]

+
+

Since: 2.34

+
+
+
+

g_mount_get_drive ()

+
GDrive *
+g_mount_get_drive (GMount *mount);
+

Gets the drive for the mount +.

+

This is a convenience method for getting the GVolume and then +using that object to get the GDrive.

+
+

Parameters

+
+++++ + + + + + +

mount

a GMount.

 
+
+
+

Returns

+

a GDrive or NULL if mount +is not associated with a volume or a drive. +The returned object should be unreffed with +g_object_unref() when no longer needed.

+

[transfer full]

+
+
+
+
+

g_mount_get_root ()

+
GFile *
+g_mount_get_root (GMount *mount);
+

Gets the root directory on mount +.

+
+

Parameters

+
+++++ + + + + + +

mount

a GMount.

 
+
+
+

Returns

+

a GFile. +The returned object should be unreffed with +g_object_unref() when no longer needed.

+

[transfer full]

+
+
+
+
+

g_mount_get_volume ()

+
GVolume *
+g_mount_get_volume (GMount *mount);
+

Gets the volume for the mount +.

+
+

Parameters

+
+++++ + + + + + +

mount

a GMount.

 
+
+
+

Returns

+

a GVolume or NULL if mount +is not associated with a volume. +The returned object should be unreffed with +g_object_unref() when no longer needed.

+

[transfer full]

+
+
+
+
+

g_mount_get_default_location ()

+
GFile *
+g_mount_get_default_location (GMount *mount);
+

Gets the default location of mount +. The default location of the given +mount + is a path that reflects the main entry point for the user (e.g. +the home directory, or the root of the volume).

+
+

Parameters

+
+++++ + + + + + +

mount

a GMount.

 
+
+
+

Returns

+

a GFile. +The returned object should be unreffed with +g_object_unref() when no longer needed.

+

[transfer full]

+
+
+
+
+

g_mount_can_unmount ()

+
gboolean
+g_mount_can_unmount (GMount *mount);
+

Checks if mount + can be mounted.

+
+

Parameters

+
+++++ + + + + + +

mount

a GMount.

 
+
+
+

Returns

+

TRUE if the mount +can be unmounted.

+
+
+
+
+

g_mount_unmount ()

+
void
+g_mount_unmount (GMount *mount,
+                 GMountUnmountFlags flags,
+                 GCancellable *cancellable,
+                 GAsyncReadyCallback callback,
+                 gpointer user_data);
+
+

g_mount_unmount has been deprecated since version 2.22 and should not be used in newly-written code.

+

Use g_mount_unmount_with_operation() instead.

+
+

Unmounts a mount. This is an asynchronous operation, and is +finished by calling g_mount_unmount_finish() with the mount + +and GAsyncResult data returned in the callback +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

mount

a GMount.

 

flags

flags affecting the operation

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback, or NULL.

[allow-none]

user_data

user data passed to callback +.

 
+
+
+
+
+

g_mount_unmount_finish ()

+
gboolean
+g_mount_unmount_finish (GMount *mount,
+                        GAsyncResult *result,
+                        GError **error);
+
+

g_mount_unmount_finish has been deprecated since version 2.22 and should not be used in newly-written code.

+

Use g_mount_unmount_with_operation_finish() instead.

+
+

Finishes unmounting a mount. If any errors occurred during the operation, +error + will be set to contain the errors and FALSE will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

mount

a GMount.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if the mount was successfully unmounted. FALSE otherwise.

+
+
+
+
+

g_mount_unmount_with_operation ()

+
void
+g_mount_unmount_with_operation (GMount *mount,
+                                GMountUnmountFlags flags,
+                                GMountOperation *mount_operation,
+                                GCancellable *cancellable,
+                                GAsyncReadyCallback callback,
+                                gpointer user_data);
+

Unmounts a mount. This is an asynchronous operation, and is +finished by calling g_mount_unmount_with_operation_finish() with the mount + +and GAsyncResult data returned in the callback +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

mount

a GMount.

 

flags

flags affecting the operation

 

mount_operation

a GMountOperation or NULL to avoid +user interaction.

[allow-none]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback, or NULL.

[allow-none]

user_data

user data passed to callback +.

 
+
+

Since: 2.22

+
+
+
+

g_mount_unmount_with_operation_finish ()

+
gboolean
+g_mount_unmount_with_operation_finish (GMount *mount,
+                                       GAsyncResult *result,
+                                       GError **error);
+

Finishes unmounting a mount. If any errors occurred during the operation, +error + will be set to contain the errors and FALSE will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

mount

a GMount.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if the mount was successfully unmounted. FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_mount_remount ()

+
void
+g_mount_remount (GMount *mount,
+                 GMountMountFlags flags,
+                 GMountOperation *mount_operation,
+                 GCancellable *cancellable,
+                 GAsyncReadyCallback callback,
+                 gpointer user_data);
+

Remounts a mount. This is an asynchronous operation, and is +finished by calling g_mount_remount_finish() with the mount + +and GAsyncResults data returned in the callback +.

+

Remounting is useful when some setting affecting the operation +of the volume has been changed, as these may need a remount to +take affect. While this is semantically equivalent with unmounting +and then remounting not all backends might need to actually be +unmounted.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

mount

a GMount.

 

flags

flags affecting the operation

 

mount_operation

a GMountOperation or NULL to avoid +user interaction.

[allow-none]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback, or NULL.

[allow-none]

user_data

user data passed to callback +.

 
+
+
+
+
+

g_mount_remount_finish ()

+
gboolean
+g_mount_remount_finish (GMount *mount,
+                        GAsyncResult *result,
+                        GError **error);
+

Finishes remounting a mount. If any errors occurred during the operation, +error + will be set to contain the errors and FALSE will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

mount

a GMount.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if the mount was successfully remounted. FALSE otherwise.

+
+
+
+
+

g_mount_can_eject ()

+
gboolean
+g_mount_can_eject (GMount *mount);
+

Checks if mount + can be eject.

+
+

Parameters

+
+++++ + + + + + +

mount

a GMount.

 
+
+
+

Returns

+

TRUE if the mount +can be ejected.

+
+
+
+
+

g_mount_eject ()

+
void
+g_mount_eject (GMount *mount,
+               GMountUnmountFlags flags,
+               GCancellable *cancellable,
+               GAsyncReadyCallback callback,
+               gpointer user_data);
+
+

g_mount_eject has been deprecated since version 2.22 and should not be used in newly-written code.

+

Use g_mount_eject_with_operation() instead.

+
+

Ejects a mount. This is an asynchronous operation, and is +finished by calling g_mount_eject_finish() with the mount + +and GAsyncResult data returned in the callback +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

mount

a GMount.

 

flags

flags affecting the unmount if required for eject

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback, or NULL.

[allow-none]

user_data

user data passed to callback +.

 
+
+
+
+
+

g_mount_eject_finish ()

+
gboolean
+g_mount_eject_finish (GMount *mount,
+                      GAsyncResult *result,
+                      GError **error);
+
+

g_mount_eject_finish has been deprecated since version 2.22 and should not be used in newly-written code.

+

Use g_mount_eject_with_operation_finish() instead.

+
+

Finishes ejecting a mount. If any errors occurred during the operation, +error + will be set to contain the errors and FALSE will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

mount

a GMount.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if the mount was successfully ejected. FALSE otherwise.

+
+
+
+
+

g_mount_eject_with_operation ()

+
void
+g_mount_eject_with_operation (GMount *mount,
+                              GMountUnmountFlags flags,
+                              GMountOperation *mount_operation,
+                              GCancellable *cancellable,
+                              GAsyncReadyCallback callback,
+                              gpointer user_data);
+

Ejects a mount. This is an asynchronous operation, and is +finished by calling g_mount_eject_with_operation_finish() with the mount + +and GAsyncResult data returned in the callback +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

mount

a GMount.

 

flags

flags affecting the unmount if required for eject

 

mount_operation

a GMountOperation or NULL to avoid +user interaction.

[allow-none]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback, or NULL.

[allow-none]

user_data

user data passed to callback +.

 
+
+

Since: 2.22

+
+
+
+

g_mount_eject_with_operation_finish ()

+
gboolean
+g_mount_eject_with_operation_finish (GMount *mount,
+                                     GAsyncResult *result,
+                                     GError **error);
+

Finishes ejecting a mount. If any errors occurred during the operation, +error + will be set to contain the errors and FALSE will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

mount

a GMount.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if the mount was successfully ejected. FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_mount_guess_content_type ()

+
void
+g_mount_guess_content_type (GMount *mount,
+                            gboolean force_rescan,
+                            GCancellable *cancellable,
+                            GAsyncReadyCallback callback,
+                            gpointer user_data);
+

Tries to guess the type of content stored on mount +. Returns one or +more textual identifiers of well-known content types (typically +prefixed with "x-content/"), e.g. x-content/image-dcf for camera +memory cards. See the +shared-mime-info +specification for more on x-content types.

+

This is an asynchronous operation (see +g_mount_guess_content_type_sync() for the synchronous version), and +is finished by calling g_mount_guess_content_type_finish() with the +mount + and GAsyncResult data returned in the callback +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

mount

a GMount

 

force_rescan

Whether to force a rescan of the content. +Otherwise a cached result will be used if available

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback

 

user_data

user data passed to callback +

 
+
+

Since: 2.18

+
+
+
+

g_mount_guess_content_type_finish ()

+
gchar **
+g_mount_guess_content_type_finish (GMount *mount,
+                                   GAsyncResult *result,
+                                   GError **error);
+

Finishes guessing content types of mount +. If any errors occurred +during the operation, error + will be set to contain the errors and +FALSE will be returned. In particular, you may get an +G_IO_ERROR_NOT_SUPPORTED if the mount does not support content +guessing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

mount

a GMount

 

result

a GAsyncResult

 

error

a GError location to store the error occurring, or NULL to +ignore

 
+
+
+

Returns

+

a NULL-terminated array of content types or NULL on error. +Caller should free this array with g_strfreev() when done with it.

+

[transfer full][element-type utf8]

+
+

Since: 2.18

+
+
+
+

g_mount_guess_content_type_sync ()

+
gchar **
+g_mount_guess_content_type_sync (GMount *mount,
+                                 gboolean force_rescan,
+                                 GCancellable *cancellable,
+                                 GError **error);
+

Tries to guess the type of content stored on mount +. Returns one or +more textual identifiers of well-known content types (typically +prefixed with "x-content/"), e.g. x-content/image-dcf for camera +memory cards. See the +shared-mime-info +specification for more on x-content types.

+

This is an synchronous operation and as such may block doing IO; +see g_mount_guess_content_type() for the asynchronous version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

mount

a GMount

 

force_rescan

Whether to force a rescan of the content. +Otherwise a cached result will be used if available

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

a GError location to store the error occurring, or NULL to +ignore

 
+
+
+

Returns

+

a NULL-terminated array of content types or NULL on error. +Caller should free this array with g_strfreev() when done with it.

+

[transfer full][element-type utf8]

+
+

Since: 2.18

+
+
+
+

g_mount_is_shadowed ()

+
gboolean
+g_mount_is_shadowed (GMount *mount);
+

Determines if mount + is shadowed. Applications or libraries should +avoid displaying mount + in the user interface if it is shadowed.

+

A mount is said to be shadowed if there exists one or more user +visible objects (currently GMount objects) with a root that is +inside the root of mount +.

+

One application of shadow mounts is when exposing a single file +system that is used to address several logical volumes. In this +situation, a GVolumeMonitor implementation would create two +GVolume objects (for example, one for the camera functionality of +the device and one for a SD card reader on the device) with +activation URIs gphoto2://[usb:001,002]/store1/ +and gphoto2://[usb:001,002]/store2/. When the +underlying mount (with root +gphoto2://[usb:001,002]/) is mounted, said +GVolumeMonitor implementation would create two GMount objects +(each with their root matching the corresponding volume activation +root) that would shadow the original mount.

+

The proxy monitor in GVfs 2.26 and later, automatically creates and +manage shadow mounts (and shadows the underlying mount) if the +activation root on a GVolume is set.

+
+

Parameters

+
+++++ + + + + + +

mount

A GMount.

 
+
+
+

Returns

+

TRUE if mount +is shadowed.

+
+

Since: 2.20

+
+
+
+

g_mount_shadow ()

+
void
+g_mount_shadow (GMount *mount);
+

Increments the shadow count on mount +. Usually used by +GVolumeMonitor implementations when creating a shadow mount for +mount +, see g_mount_is_shadowed() for more information. The caller +will need to emit the “changed” signal on mount + manually.

+
+

Parameters

+
+++++ + + + + + +

mount

A GMount.

 
+
+

Since: 2.20

+
+
+
+

g_mount_unshadow ()

+
void
+g_mount_unshadow (GMount *mount);
+

Decrements the shadow count on mount +. Usually used by +GVolumeMonitor implementations when destroying a shadow mount for +mount +, see g_mount_is_shadowed() for more information. The caller +will need to emit the “changed” signal on mount + manually.

+
+

Parameters

+
+++++ + + + + + +

mount

A GMount.

 
+
+

Since: 2.20

+
+
+
+

g_mount_get_sort_key ()

+
const gchar *
+g_mount_get_sort_key (GMount *mount);
+

Gets the sort key for mount +, if any.

+
+

Parameters

+
+++++ + + + + + +

mount

A GMount.

 
+
+
+

Returns

+

Sorting key for mount +or NULL if no such key is available.

+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

GMount

+
typedef struct _GMount GMount;
+

A handle to an object implementing the GMountIface interface.

+
+
+
+

struct GMountIface

+
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);
+};
+
+

Interface for implementing operations for mounts.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface 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.

 

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

 

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.

 

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.

 
+
+
+
+
+

enum GMountMountFlags

+

Flags used when mounting a mount.

+
+

Members

+
+++++ + + + + + +

G_MOUNT_MOUNT_NONE

+

No flags set.

+
 
+
+
+
+
+

enum GMountUnmountFlags

+

Flags used when an unmounting a mount.

+
+

Members

+
+++++ + + + + + + + + + + + + +

G_MOUNT_UNMOUNT_NONE

+

No flags set.

+
 

G_MOUNT_UNMOUNT_FORCE

+

Unmount even if there are outstanding + file operations on the mount.

+
 
+
+
+
+
+

Signal Details

+
+

The “changed” signal

+
void
+user_function (GMount  *mount,
+               gpointer user_data)
+

Emitted when the mount has been changed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mount

the object on which the signal is emitted

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “pre-unmount” signal

+
void
+user_function (GMount  *mount,
+               gpointer user_data)
+

This signal is emitted when the GMount is about to be +unmounted.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mount

the object on which the signal is emitted

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.22

+
+
+
+

The “unmounted” signal

+
void
+user_function (GMount  *mount,
+               gpointer user_data)
+

This signal 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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mount

the object on which the signal is emitted

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

See Also

+

GVolume, GUnixMountEntry, GUnixMountPoint

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GMountOperation.html b/docs/reference/gio/html/GMountOperation.html new file mode 100644 index 0000000..474f326 --- /dev/null +++ b/docs/reference/gio/html/GMountOperation.html @@ -0,0 +1,1187 @@ + + + + +GMountOperation: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GMountOperation

+

GMountOperation — Object used for authentication and user interaction

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GMountOperation * + +g_mount_operation_new () +
const char * + +g_mount_operation_get_username () +
+void + +g_mount_operation_set_username () +
const char * + +g_mount_operation_get_password () +
+void + +g_mount_operation_set_password () +
+gboolean + +g_mount_operation_get_anonymous () +
+void + +g_mount_operation_set_anonymous () +
const char * + +g_mount_operation_get_domain () +
+void + +g_mount_operation_set_domain () +
+GPasswordSave + +g_mount_operation_get_password_save () +
+void + +g_mount_operation_set_password_save () +
+int + +g_mount_operation_get_choice () +
+void + +g_mount_operation_set_choice () +
+void + +g_mount_operation_reply () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
gbooleananonymousRead / Write
gintchoiceRead / Write
+gchar *domainRead / Write
+gchar *passwordRead / Write
GPasswordSavepassword-saveRead / Write
+gchar *usernameRead / Write
+
+
+

Signals

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
voidabortedRun Last
voidask-passwordRun Last
voidask-questionRun Last
voidreplyRun Last
voidshow-processesRun Last
voidshow-unmount-progressRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + +
enumGAskPasswordFlags
enumGPasswordSave
 GMountOperation
enumGMountOperationResult
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GMountOperation
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GMountOperation provides a mechanism for interacting with the user. +It can be used for authenticating mountable operations, such as loop +mounting files, hard drive partitions or server locations. It can +also be used to ask the user questions or show a list of applications +preventing unmount or eject operations from completing.

+

Note that GMountOperation is used for more than just GMount +objects – for example it is also used in g_drive_start() and +g_drive_stop().

+

Users should instantiate a subclass of this that implements all the +various callbacks to show the required dialogs, such as +GtkMountOperation. If no user interaction is desired (for example +when automounting filesystems at login time), usually NULL can be +passed, see each method taking a GMountOperation for details.

+
+
+

Functions

+
+

g_mount_operation_new ()

+
GMountOperation *
+g_mount_operation_new (void);
+

Creates a new mount operation.

+
+

Returns

+

a GMountOperation.

+
+
+
+
+

g_mount_operation_get_username ()

+
const char *
+g_mount_operation_get_username (GMountOperation *op);
+

Get the user name from the mount operation.

+
+

Parameters

+
+++++ + + + + + +

op

a GMountOperation.

 
+
+
+

Returns

+

a string containing the user name.

+
+
+
+
+

g_mount_operation_set_username ()

+
void
+g_mount_operation_set_username (GMountOperation *op,
+                                const char *username);
+

Sets the user name within op + to username +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

op

a GMountOperation.

 

username

input username.

 
+
+
+
+
+

g_mount_operation_get_password ()

+
const char *
+g_mount_operation_get_password (GMountOperation *op);
+

Gets a password from the mount operation.

+
+

Parameters

+
+++++ + + + + + +

op

a GMountOperation.

 
+
+
+

Returns

+

a string containing the password within op +.

+
+
+
+
+

g_mount_operation_set_password ()

+
void
+g_mount_operation_set_password (GMountOperation *op,
+                                const char *password);
+

Sets the mount operation's password to password +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

op

a GMountOperation.

 

password

password to set.

 
+
+
+
+
+

g_mount_operation_get_anonymous ()

+
gboolean
+g_mount_operation_get_anonymous (GMountOperation *op);
+

Check to see whether the mount operation is being used +for an anonymous user.

+
+

Parameters

+
+++++ + + + + + +

op

a GMountOperation.

 
+
+
+

Returns

+

TRUE if mount operation is anonymous.

+
+
+
+
+

g_mount_operation_set_anonymous ()

+
void
+g_mount_operation_set_anonymous (GMountOperation *op,
+                                 gboolean anonymous);
+

Sets the mount operation to use an anonymous user if anonymous + is TRUE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

op

a GMountOperation.

 

anonymous

boolean value.

 
+
+
+
+
+

g_mount_operation_get_domain ()

+
const char *
+g_mount_operation_get_domain (GMountOperation *op);
+

Gets the domain of the mount operation.

+
+

Parameters

+
+++++ + + + + + +

op

a GMountOperation.

 
+
+
+

Returns

+

a string set to the domain.

+
+
+
+
+

g_mount_operation_set_domain ()

+
void
+g_mount_operation_set_domain (GMountOperation *op,
+                              const char *domain);
+

Sets the mount operation's domain.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

op

a GMountOperation.

 

domain

the domain to set.

 
+
+
+
+
+

g_mount_operation_get_password_save ()

+
GPasswordSave
+g_mount_operation_get_password_save (GMountOperation *op);
+

Gets the state of saving passwords for the mount operation.

+
+

Parameters

+
+++++ + + + + + +

op

a GMountOperation.

 
+
+
+

Returns

+

a GPasswordSave flag.

+
+
+
+
+

g_mount_operation_set_password_save ()

+
void
+g_mount_operation_set_password_save (GMountOperation *op,
+                                     GPasswordSave save);
+

Sets the state of saving passwords for the mount operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

op

a GMountOperation.

 

save

a set of GPasswordSave flags.

 
+
+
+
+
+

g_mount_operation_get_choice ()

+
int
+g_mount_operation_get_choice (GMountOperation *op);
+

Gets a choice from the mount operation.

+
+

Parameters

+
+++++ + + + + + +

op

a GMountOperation.

 
+
+
+

Returns

+

an integer containing an index of the user's choice from +the choice's list, or 0.

+
+
+
+
+

g_mount_operation_set_choice ()

+
void
+g_mount_operation_set_choice (GMountOperation *op,
+                              int choice);
+

Sets a default choice for the mount operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

op

a GMountOperation.

 

choice

an integer.

 
+
+
+
+
+

g_mount_operation_reply ()

+
void
+g_mount_operation_reply (GMountOperation *op,
+                         GMountOperationResult result);
+

Emits the “reply” signal.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

op

a GMountOperation

 

result

a GMountOperationResult

 
+
+
+
+
+

Types and Values

+
+

enum GAskPasswordFlags

+

GAskPasswordFlags are used to request specific information from the +user, or to notify the user of their choices in an authentication +situation.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 
+
+
+
+
+

enum GPasswordSave

+

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.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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.

+
 
+
+
+
+
+

GMountOperation

+
typedef struct _GMountOperation GMountOperation;
+

Class for providing authentication methods for mounting operations, +such as mounting a file locally, or authenticating with a server.

+
+
+
+

enum GMountOperationResult

+

GMountOperationResult is returned as a result when a request for +information is send by the mounting operation.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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)

+
 
+
+
+
+
+

Property Details

+
+

The “anonymous” property

+
  “anonymous”                gboolean
+

Whether to use an anonymous user when authenticating.

+

Flags: Read / Write

+

Default value: FALSE

+
+
+
+

The “choice” property

+
  “choice”                   gint
+

The index of the user's choice when a question is asked during the + +mount operation. See the “ask-question” signal.

+

Flags: Read / Write

+

Allowed values: >= 0

+

Default value: 0

+
+
+
+

The “domain” property

+
  “domain”                   gchar *
+

The domain to use for the mount operation.

+

Flags: Read / Write

+

Default value: NULL

+
+
+
+

The “password” property

+
  “password”                 gchar *
+

The password that is used for authentication when carrying out +the mount operation.

+

Flags: Read / Write

+

Default value: NULL

+
+
+
+

The “password-save” property

+
  “password-save”            GPasswordSave
+

Determines if and how the password information should be saved.

+

Flags: Read / Write

+

Default value: G_PASSWORD_SAVE_NEVER

+
+
+
+

The “username” property

+
  “username”                 gchar *
+

The user name that is used for authentication when carrying out +the mount operation.

+

Flags: Read / Write

+

Default value: NULL

+
+
+
+

Signal Details

+
+

The “aborted” signal

+
void
+user_function (GMountOperation *arg0,
+               gpointer         user_data)
+

Emitted by the backend when e.g. a device becomes unavailable +while a mount operation is in progress.

+

Implementations of GMountOperation should handle this signal +by dismissing open password dialogs.

+
+

Parameters

+
+++++ + + + + + +

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.20

+
+
+
+

The “ask-password” signal

+
void
+user_function (GMountOperation  *op,
+               gchar            *message,
+               gchar            *default_user,
+               gchar            *default_domain,
+               GAskPasswordFlags flags,
+               gpointer          user_data)
+

Emitted when a mount operation asks the user for a password.

+

If the message contains a line break, the first line should be +presented as a heading. For example, it may be used as the +primary text in a GtkMessageDialog.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

op

a GMountOperation requesting a password.

 

message

string containing a message to display to the user.

 

default_user

string containing the default user name.

 

default_domain

string containing the default domain.

 

flags

a set of GAskPasswordFlags.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “ask-question” signal

+
void
+user_function (GMountOperation *op,
+               gchar           *message,
+               GStrv            choices,
+               gpointer         user_data)
+

Emitted when asking the user a question and gives a list of +choices for the user to choose from.

+

If the message contains a line break, the first line should be +presented as a heading. For example, it may be used as the +primary text in a GtkMessageDialog.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

op

a GMountOperation asking a question.

 

message

string containing a message to display to the user.

 

choices

an array of strings for each possible choice.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “reply” signal

+
void
+user_function (GMountOperation      *op,
+               GMountOperationResult result,
+               gpointer              user_data)
+

Emitted when the user has replied to the mount operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

op

a GMountOperation.

 

result

a GMountOperationResult indicating how the request was handled

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “show-processes” signal

+
void
+user_function (GMountOperation *op,
+               gchar           *message,
+               GArray          *processes,
+               GStrv            choices,
+               gpointer         user_data)
+

Emitted when one or more processes are blocking an operation +e.g. unmounting/ejecting a GMount or stopping a GDrive.

+

Note that this signal may be emitted several times to update the +list of blocking processes as processes close files. The +application should only respond with g_mount_operation_reply() to +the latest signal (setting “choice” to the choice +the user made).

+

If the message contains a line break, the first line should be +presented as a heading. For example, it may be used as the +primary text in a GtkMessageDialog.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

op

a GMountOperation.

 

message

string containing a message to display to the user.

 

processes

an array of GPid for processes +blocking the operation.

[element-type GPid]

choices

an array of strings for each possible choice.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.22

+
+
+
+

The “show-unmount-progress” signal

+
void
+user_function (GMountOperation *op,
+               gchar           *message,
+               gint64           time_left,
+               gint64           bytes_left,
+               gpointer         user_data)
+

Emitted when an unmount operation has been busy for more than some time +(typically 1.5 seconds).

+

When unmounting or ejecting a volume, the kernel might need to flush +pending data in its buffers to the volume stable storage, and this operation +can take a considerable amount of time. This signal may be emitted several +times as long as the unmount operation is outstanding, and then one +last time when the operation is completed, with bytes_left + set to zero.

+

Implementations of GMountOperation should handle this signal by +showing an UI notification, and then dismiss it, or show another notification +of completion, when bytes_left + reaches zero.

+

If the message contains a line break, the first line should be +presented as a heading. For example, it may be used as the +primary text in a GtkMessageDialog.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

op

a GMountOperation:

 

message

string containing a mesage to display to the user

 

time_left

the estimated time left before the operation completes, +in microseconds, or -1

 

bytes_left

the amount of bytes to be written before the operation +completes (or -1 if such amount is not known), or zero if the operation +is completed

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.34

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GNetworkAddress.html b/docs/reference/gio/html/GNetworkAddress.html new file mode 100644 index 0000000..bcfbb68 --- /dev/null +++ b/docs/reference/gio/html/GNetworkAddress.html @@ -0,0 +1,501 @@ + + + + +GNetworkAddress: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GNetworkAddress

+

GNetworkAddress — A GSocketConnectable for resolving hostnames

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GSocketConnectable * + +g_network_address_new () +
+GSocketConnectable * + +g_network_address_new_loopback () +
+GSocketConnectable * + +g_network_address_parse () +
+GSocketConnectable * + +g_network_address_parse_uri () +
const gchar * + +g_network_address_get_hostname () +
+guint16 + +g_network_address_get_port () +
const gchar * + +g_network_address_get_scheme () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + +
+gchar *hostnameRead / Write / Construct Only
guintportRead / Write / Construct Only
+gchar *schemeRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GNetworkAddress
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GNetworkAddress
+
+
+
+

Implemented Interfaces

+

+GNetworkAddress implements + GSocketConnectable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GNetworkAddress provides an easy way to resolve a hostname and +then attempt to connect to that host, handling the possibility of +multiple IP addresses and multiple address families.

+

See GSocketConnectable for and example of using the connectable +interface.

+
+
+

Functions

+
+

g_network_address_new ()

+
GSocketConnectable *
+g_network_address_new (const gchar *hostname,
+                       guint16 port);
+

Creates a new GSocketConnectable for connecting to the given +hostname + and port +.

+

Note that depending on the configuration of the machine, a +hostname + of localhost may refer to the IPv4 loopback address +only, or to both IPv4 and IPv6; use +g_network_address_new_loopback() to create a GNetworkAddress that +is guaranteed to resolve to both addresses.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hostname

the hostname

 

port

the port

 
+
+
+

Returns

+

the new GNetworkAddress.

+

[transfer full][type GNetworkAddress]

+
+

Since: 2.22

+
+
+
+

g_network_address_new_loopback ()

+
GSocketConnectable *
+g_network_address_new_loopback (guint16 port);
+

Creates a new GSocketConnectable for connecting to the local host +over a loopback connection to the given port +. This is intended for +use in connecting to local services which may be running on IPv4 or +IPv6.

+

The connectable will return IPv4 and IPv6 loopback addresses, +regardless of how the host resolves localhost. By contrast, +g_network_address_new() will often only return an IPv4 address when +resolving localhost, and an IPv6 address for localhost6.

+

g_network_address_get_hostname() will always return localhost for +GNetworkAddresses created with this constructor.

+
+

Parameters

+
+++++ + + + + + +

port

the port

 
+
+
+

Returns

+

the new GNetworkAddress.

+

[transfer full][type GNetworkAddress]

+
+

Since: 2.44

+
+
+
+

g_network_address_parse ()

+
GSocketConnectable *
+g_network_address_parse (const gchar *host_and_port,
+                         guint16 default_port,
+                         GError **error);
+

Creates a new GSocketConnectable for connecting to the given +hostname + and port +. May fail and return NULL in case +parsing host_and_port + fails.

+

host_and_port + may be in any of a number of recognised formats; an IPv6 +address, an IPv4 address, or a domain name (in which case a DNS +lookup is performed). Quoting with [] is supported for all address +types. A port override may be specified in the usual way with a +colon.

+

If no port is specified in host_and_port + then default_port + will be +used as the port number to connect to.

+

In general, host_and_port + is expected to be provided by the user +(allowing them to give the hostname, and a port overide if necessary) +and default_port + is expected to be provided by the application.

+

(The port component of host_and_port + can also be specified as a +service name rather than as a numeric port, but this functionality +is deprecated, because it depends on the contents of /etc/services, +which is generally quite sparse on platforms other than Linux.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

host_and_port

the hostname and optionally a port

 

default_port

the default port if not in host_and_port +

 

error

a pointer to a GError, or NULL

 
+
+
+

Returns

+

the new +GNetworkAddress, or NULL on error.

+

[transfer full][type GNetworkAddress]

+
+

Since: 2.22

+
+
+
+

g_network_address_parse_uri ()

+
GSocketConnectable *
+g_network_address_parse_uri (const gchar *uri,
+                             guint16 default_port,
+                             GError **error);
+

Creates a new GSocketConnectable for connecting to the given +uri +. May fail and return NULL in case parsing uri + fails.

+

Using this rather than g_network_address_new() or +g_network_address_parse() allows GSocketClient to determine +when to use application-specific proxy protocols.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

uri

the hostname and optionally a port

 

default_port

The default port if none is found in the URI

 

error

a pointer to a GError, or NULL

 
+
+
+

Returns

+

the new +GNetworkAddress, or NULL on error.

+

[transfer full][type GNetworkAddress]

+
+

Since: 2.26

+
+
+
+

g_network_address_get_hostname ()

+
const gchar *
+g_network_address_get_hostname (GNetworkAddress *addr);
+

Gets addr +'s hostname. This might be either UTF-8 or ASCII-encoded, +depending on what addr + was created with.

+
+

Parameters

+
+++++ + + + + + +

addr

a GNetworkAddress

 
+
+
+

Returns

+

addr +'s hostname

+
+

Since: 2.22

+
+
+
+

g_network_address_get_port ()

+
guint16
+g_network_address_get_port (GNetworkAddress *addr);
+

Gets addr +'s port number

+
+

Parameters

+
+++++ + + + + + +

addr

a GNetworkAddress

 
+
+
+

Returns

+

addr +'s port (which may be 0)

+
+

Since: 2.22

+
+
+
+

g_network_address_get_scheme ()

+
const gchar *
+g_network_address_get_scheme (GNetworkAddress *addr);
+

Gets addr +'s scheme

+
+

Parameters

+
+++++ + + + + + +

addr

a GNetworkAddress

 
+
+
+

Returns

+

addr +'s scheme (NULL if not built from URI)

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GNetworkAddress

+
typedef struct _GNetworkAddress GNetworkAddress;
+

A GSocketConnectable for resolving a hostname and connecting to +that host.

+
+
+
+

Property Details

+
+

The “hostname” property

+
  “hostname”                 gchar *
+

Hostname to resolve.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+

The “port” property

+
  “port”                     guint
+

Network port.

+

Flags: Read / Write / Construct Only

+

Allowed values: <= 65535

+

Default value: 0

+
+
+
+

The “scheme” property

+
  “scheme”                   gchar *
+

URI Scheme.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GNetworkMonitor.html b/docs/reference/gio/html/GNetworkMonitor.html new file mode 100644 index 0000000..2041954 --- /dev/null +++ b/docs/reference/gio/html/GNetworkMonitor.html @@ -0,0 +1,724 @@ + + + + +GNetworkMonitor: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GNetworkMonitor

+

GNetworkMonitor — Network status monitor

+
+ +
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + +
GNetworkConnectivityconnectivityRead
gbooleannetwork-availableRead
gbooleannetwork-meteredRead
+
+
+

Signals

+
+++++ + + + + + +
voidnetwork-changedRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + +
 GNetworkMonitor
structGNetworkMonitorInterface
#defineG_NETWORK_MONITOR_EXTENSION_POINT_NAME
enumGNetworkConnectivity
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GNetworkMonitor
+
+
+
+

Prerequisites

+

+GNetworkMonitor requires + GInitable and GObject.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GNetworkMonitor provides an easy-to-use cross-platform API +for monitoring network connectivity. On Linux, the implementation +is based on the kernel's netlink interface.

+
+
+

Functions

+
+

g_network_monitor_get_default ()

+
GNetworkMonitor *
+g_network_monitor_get_default (void);
+

Gets the default GNetworkMonitor for the system.

+
+

Returns

+

a GNetworkMonitor.

+

[transfer none]

+
+

Since: 2.32

+
+
+
+

g_network_monitor_get_network_available ()

+
gboolean
+g_network_monitor_get_network_available
+                               (GNetworkMonitor *monitor);
+

Checks if the network is available. "Available" here means that the +system has a default route available for at least one of IPv4 or +IPv6. It does not necessarily imply that the public Internet is +reachable. See “network-available” for more details.

+
+

Parameters

+
+++++ + + + + + +

monitor

the GNetworkMonitor

 
+
+
+

Returns

+

whether the network is available

+
+

Since: 2.32

+
+
+
+

g_network_monitor_get_network_metered ()

+
gboolean
+g_network_monitor_get_network_metered (GNetworkMonitor *monitor);
+

Checks if the network is metered. +See “network-metered” for more details.

+
+

Parameters

+
+++++ + + + + + +

monitor

the GNetworkMonitor

 
+
+
+

Returns

+

whether the connection is metered

+
+

Since: 2.46

+
+
+
+

g_network_monitor_can_reach ()

+
gboolean
+g_network_monitor_can_reach (GNetworkMonitor *monitor,
+                             GSocketConnectable *connectable,
+                             GCancellable *cancellable,
+                             GError **error);
+

Attempts to determine whether or not the host pointed to by +connectable + can be reached, without actually trying to connect to +it.

+

This may return TRUE even when “network-available” +is FALSE, if, for example, monitor + can determine that +connectable + refers to a host on a local network.

+

If monitor + believes that an attempt to connect to connectable + +will succeed, it will return TRUE. Otherwise, it will return +FALSE and set error + to an appropriate error (such as +G_IO_ERROR_HOST_UNREACHABLE).

+

Note that although this does not attempt to connect to +connectable +, it may still block for a brief period of time (eg, +trying to do multicast DNS on the local network), so if you do not +want to block, you should use g_network_monitor_can_reach_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

monitor

a GNetworkMonitor

 

connectable

a GSocketConnectable

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE if connectable +is reachable, FALSE if not.

+
+

Since: 2.32

+
+
+
+

g_network_monitor_can_reach_async ()

+
void
+g_network_monitor_can_reach_async (GNetworkMonitor *monitor,
+                                   GSocketConnectable *connectable,
+                                   GCancellable *cancellable,
+                                   GAsyncReadyCallback callback,
+                                   gpointer user_data);
+

Asynchronously attempts to determine whether or not the host +pointed to by connectable + can be reached, without actually +trying to connect to it.

+

For more details, see g_network_monitor_can_reach().

+

When the operation is finished, callback + will be called. +You can then call g_network_monitor_can_reach_finish() +to get the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

monitor

a GNetworkMonitor

 

connectable

a GSocketConnectable

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

a GAsyncReadyCallback to call when the +request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_network_monitor_can_reach_finish ()

+
gboolean
+g_network_monitor_can_reach_finish (GNetworkMonitor *monitor,
+                                    GAsyncResult *result,
+                                    GError **error);
+

Finishes an async network connectivity test. +See g_network_monitor_can_reach_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

monitor

a GNetworkMonitor

 

result

a GAsyncResult

 

error

return location for errors, or NULL

 
+
+
+

Returns

+

TRUE if network is reachable, FALSE if not.

+
+
+
+
+

g_network_monitor_get_connectivity ()

+
GNetworkConnectivity
+g_network_monitor_get_connectivity (GNetworkMonitor *monitor);
+

Gets a more detailed networking state than +g_network_monitor_get_network_available().

+

If “network-available” is FALSE, then the +connectivity state will be G_NETWORK_CONNECTIVITY_LOCAL.

+

If “network-available” is TRUE, then the +connectivity state will be G_NETWORK_CONNECTIVITY_FULL (if there +is full Internet connectivity), G_NETWORK_CONNECTIVITY_LIMITED (if +the host has a default route, but appears to be unable to actually +reach the full Internet), or G_NETWORK_CONNECTIVITY_PORTAL (if the +host is trapped behind a "captive portal" that requires some sort +of login or acknowledgement before allowing full Internet access).

+

Note that in the case of G_NETWORK_CONNECTIVITY_LIMITED and +G_NETWORK_CONNECTIVITY_PORTAL, it is possible that some sites are +reachable but others are not. In this case, applications can +attempt to connect to remote servers, but should gracefully fall +back to their "offline" behavior if the connection attempt fails.

+
+

Parameters

+
+++++ + + + + + +

monitor

the GNetworkMonitor

 
+
+
+

Returns

+

the network connectivity state

+
+

Since: 2.44

+
+
+
+

Types and Values

+
+

GNetworkMonitor

+
typedef struct _GNetworkMonitor GNetworkMonitor;
+

GNetworkMonitor monitors the status of network connections and +indicates when a possibly-user-visible change has occurred.

+

Since: 2.32

+
+
+
+

struct 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);
+};
+
+

The virtual function table for GNetworkMonitor.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

The parent interface.

 

network_changed ()

the virtual function pointer for the +GNetworkMonitor::network-changed signal.

 

can_reach ()

the virtual function pointer for g_network_monitor_can_reach()

 

can_reach_async ()

the virtual function pointer for +g_network_monitor_can_reach_async()

 

can_reach_finish ()

the virtual function pointer for +g_network_monitor_can_reach_finish()

 
+
+

Since: 2.32

+
+
+
+

G_NETWORK_MONITOR_EXTENSION_POINT_NAME

+
#define G_NETWORK_MONITOR_EXTENSION_POINT_NAME "gio-network-monitor"
+
+

Extension point for network status monitoring functionality. +See Extending GIO.

+

Since: 2.30

+
+
+
+

enum GNetworkConnectivity

+

The host's network connectivity state, as reported by GNetworkMonitor.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

G_NETWORK_CONNECTIVITY_LOCAL

+

The host is not configured with a + route to the Internet; it may or may not be connected to a local + network.

+
 

G_NETWORK_CONNECTIVITY_LIMITED

+

The host is connected to a network, but + does not appear to be able to reach the full Internet, perhaps + due to upstream network problems.

+
 

G_NETWORK_CONNECTIVITY_PORTAL

+

The host is behind a captive portal and + cannot reach the full Internet.

+
 

G_NETWORK_CONNECTIVITY_FULL

+

The host is connected to a network, and + appears to be able to reach the full Internet.

+
 
+
+

Since: 2.44

+
+
+
+

Property Details

+
+

The “connectivity” property

+
  “connectivity”             GNetworkConnectivity
+

More detailed information about the host's network connectivity. +See g_network_monitor_get_connectivity() and +GNetworkConnectivity for more details.

+

Flags: Read

+

Default value: G_NETWORK_CONNECTIVITY_FULL

+

Since: 2.44

+
+
+
+

The “network-available” property

+
  “network-available”        gboolean
+

Whether the network is considered available. That is, whether the +system has a default route for at least one of IPv4 or IPv6.

+

Real-world networks are of course much more complicated than +this; the machine may be connected to a wifi hotspot that +requires payment before allowing traffic through, or may be +connected to a functioning router that has lost its own upstream +connectivity. Some hosts might only be accessible when a VPN is +active. Other hosts might only be accessible when the VPN is +not active. Thus, it is best to use g_network_monitor_can_reach() +or g_network_monitor_can_reach_async() to test for reachability +on a host-by-host basis. (On the other hand, when the property is +FALSE, the application can reasonably expect that no remote +hosts at all are reachable, and should indicate this to the user +in its UI.)

+

See also “network-changed”.

+

Flags: Read

+

Default value: FALSE

+

Since: 2.32

+
+
+
+

The “network-metered” property

+
  “network-metered”          gboolean
+

Whether the network is considered metered. That is, whether the +system has traffic flowing through the default connection that is +subject to limitations set by service providers. For example, traffic +might be billed by the amount of data transmitted, or there might be a +quota on the amount of traffic per month. This is typical with tethered +connections (3G and 4G) and in such situations, bandwidth intensive +applications may wish to avoid network activity where possible if it will +cost the user money or use up their limited quota.

+

If more information is required about specific devices then the +system network management API should be used instead (for example, +NetworkManager or ConnMan).

+

If this information is not available then no networks will be +marked as metered.

+

See also “network-available”.

+

Flags: Read

+

Default value: FALSE

+

Since: 2.46

+
+
+
+

Signal Details

+
+

The “network-changed” signal

+
void
+user_function (GNetworkMonitor *monitor,
+               gboolean         available,
+               gpointer         user_data)
+

Emitted when the network configuration changes. If available + is +TRUE, then some hosts may be reachable that were not reachable +before, while others that were reachable before may no longer be +reachable. If available + is FALSE, then no remote hosts are +reachable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

monitor

a GNetworkMonitor

 

available

the current value of “network-available”

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.32

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GNetworkService.html b/docs/reference/gio/html/GNetworkService.html new file mode 100644 index 0000000..e276938 --- /dev/null +++ b/docs/reference/gio/html/GNetworkService.html @@ -0,0 +1,416 @@ + + + + +GNetworkService: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GNetworkService

+

GNetworkService — A GSocketConnectable for resolving SRV records

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GSocketConnectable * + +g_network_service_new () +
const gchar * + +g_network_service_get_service () +
const gchar * + +g_network_service_get_protocol () +
const gchar * + +g_network_service_get_domain () +
const gchar * + +g_network_service_get_scheme () +
+void + +g_network_service_set_scheme () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +
+gchar *domainRead / Write / Construct Only
+gchar *protocolRead / Write / Construct Only
+gchar *schemeRead / Write
+gchar *serviceRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GNetworkService
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GNetworkService
+
+
+
+

Implemented Interfaces

+

+GNetworkService implements + GSocketConnectable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Like GNetworkAddress does with hostnames, GNetworkService +provides an easy way to resolve a SRV record, and then attempt to +connect to one of the hosts that implements that service, handling +service priority/weighting, multiple IP addresses, and multiple +address families.

+

See GSrvTarget for more information about SRV records, and see +GSocketConnectable for and example of using the connectable +interface.

+
+
+

Functions

+
+

g_network_service_new ()

+
GSocketConnectable *
+g_network_service_new (const gchar *service,
+                       const gchar *protocol,
+                       const gchar *domain);
+

Creates a new GNetworkService representing the given service +, +protocol +, and domain +. This will initially be unresolved; use the +GSocketConnectable interface to resolve it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

service

the service type to look up (eg, "ldap")

 

protocol

the networking protocol to use for service +(eg, "tcp")

 

domain

the DNS domain to look up the service in

 
+
+
+

Returns

+

a new GNetworkService.

+

[transfer full][type GNetworkService]

+
+

Since: 2.22

+
+
+
+

g_network_service_get_service ()

+
const gchar *
+g_network_service_get_service (GNetworkService *srv);
+

Gets srv +'s service name (eg, "ldap").

+
+

Parameters

+
+++++ + + + + + +

srv

a GNetworkService

 
+
+
+

Returns

+

srv +'s service name

+
+

Since: 2.22

+
+
+
+

g_network_service_get_protocol ()

+
const gchar *
+g_network_service_get_protocol (GNetworkService *srv);
+

Gets srv +'s protocol name (eg, "tcp").

+
+

Parameters

+
+++++ + + + + + +

srv

a GNetworkService

 
+
+
+

Returns

+

srv +'s protocol name

+
+

Since: 2.22

+
+
+
+

g_network_service_get_domain ()

+
const gchar *
+g_network_service_get_domain (GNetworkService *srv);
+

Gets the domain that srv + serves. This might be either UTF-8 or +ASCII-encoded, depending on what srv + was created with.

+
+

Parameters

+
+++++ + + + + + +

srv

a GNetworkService

 
+
+
+

Returns

+

srv +'s domain name

+
+

Since: 2.22

+
+
+
+

g_network_service_get_scheme ()

+
const gchar *
+g_network_service_get_scheme (GNetworkService *srv);
+

Get's the URI scheme used to resolve proxies. By default, the service name +is used as scheme.

+
+

Parameters

+
+++++ + + + + + +

srv

a GNetworkService

 
+
+
+

Returns

+

srv +'s scheme name

+
+

Since: 2.26

+
+
+
+

g_network_service_set_scheme ()

+
void
+g_network_service_set_scheme (GNetworkService *srv,
+                              const gchar *scheme);
+

Set's the URI scheme used to resolve proxies. By default, the service name +is used as scheme.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

srv

a GNetworkService

 

scheme

a URI scheme

 
+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GNetworkService

+
typedef struct _GNetworkService GNetworkService;
+

A GSocketConnectable for resolving a SRV record and connecting to +that service.

+
+
+
+

Property Details

+
+

The “domain” property

+
  “domain”                   gchar *
+

Network domain, eg, "example.com".

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+

The “protocol” property

+
  “protocol”                 gchar *
+

Network protocol, eg "tcp".

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+

The “scheme” property

+
  “scheme”                   gchar *
+

Network scheme (default is to use service).

+

Flags: Read / Write

+

Default value: NULL

+
+
+
+

The “service” property

+
  “service”                  gchar *
+

Service name, eg "ldap".

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GNotification.html b/docs/reference/gio/html/GNotification.html new file mode 100644 index 0000000..05220c9 --- /dev/null +++ b/docs/reference/gio/html/GNotification.html @@ -0,0 +1,780 @@ + + + + +GNotification: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GNotification

+

GNotification — User Notifications (pop up messages)

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GNotification * + +g_notification_new () +
+void + +g_notification_set_title () +
+void + +g_notification_set_body () +
+void + +g_notification_set_icon () +
+void + +g_notification_set_priority () +
+void + +g_notification_set_urgent () +
+void + +g_notification_set_default_action () +
+void + +g_notification_set_default_action_and_target () +
+void + +g_notification_set_default_action_and_target_value () +
+void + +g_notification_add_button () +
+void + +g_notification_add_button_with_target () +
+void + +g_notification_add_button_with_target_value () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GNotification
enumGNotificationPriority
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GNotification
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GNotification is a mechanism for creating a notification to be shown +to the user -- typically as a pop-up notification presented by the +desktop environment shell.

+

The key difference between GNotification and other similar APIs is +that, if supported by the desktop environment, notifications sent +with GNotification will persist after the application has exited, +and even across system reboots.

+

Since the user may click on a notification while the application is +not running, applications using GNotification should be able to be +started as a D-Bus service, using GApplication.

+

User interaction with a notification (either the default action, or +buttons) must be associated with actions on the application (ie: +"app." actions). It is not possible to route user interaction +through the notification itself, because the object will not exist if +the application is autostarted as a result of a notification being +clicked.

+

A notification can be sent with g_application_send_notification().

+
+
+

Functions

+
+

g_notification_new ()

+
GNotification *
+g_notification_new (const gchar *title);
+

Creates a new GNotification with title + as its title.

+

After populating notification + with more details, it can be sent to +the desktop shell with g_application_send_notification(). Changing +any properties after this call will not have any effect until +resending notification +.

+
+

Parameters

+
+++++ + + + + + +

title

the title of the notification

 
+
+
+

Returns

+

a new GNotification instance

+
+

Since: 2.40

+
+
+
+

g_notification_set_title ()

+
void
+g_notification_set_title (GNotification *notification,
+                          const gchar *title);
+

Sets the title of notification + to title +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

notification

a GNotification

 

title

the new title for notification +

 
+
+

Since: 2.40

+
+
+
+

g_notification_set_body ()

+
void
+g_notification_set_body (GNotification *notification,
+                         const gchar *body);
+

Sets the body of notification + to body +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

notification

a GNotification

 

body

the new body for notification +, or NULL.

[allow-none]
+
+

Since: 2.40

+
+
+
+

g_notification_set_icon ()

+
void
+g_notification_set_icon (GNotification *notification,
+                         GIcon *icon);
+

Sets the icon of notification + to icon +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

notification

a GNotification

 

icon

the icon to be shown in notification +, as a GIcon

 
+
+

Since: 2.40

+
+
+
+

g_notification_set_priority ()

+
void
+g_notification_set_priority (GNotification *notification,
+                             GNotificationPriority priority);
+

Sets the priority of notification + to priority +. See +GNotificationPriority for possible values.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

notification

a GNotification

 

priority

a GNotificationPriority

 
+
+
+
+
+

g_notification_set_urgent ()

+
void
+g_notification_set_urgent (GNotification *notification,
+                           gboolean urgent);
+

g_notification_set_urgent is deprecated and should not be used in newly-written code.

+

Deprecated in favor of g_notification_set_priority().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

notification

a GNotification

 

urgent

TRUE if notification +is urgent

 
+
+

Since: 2.40

+
+
+
+

g_notification_set_default_action ()

+
void
+g_notification_set_default_action (GNotification *notification,
+                                   const gchar *detailed_action);
+

Sets the default action of notification + to detailed_action +. This +action is activated when the notification is clicked on.

+

The action in detailed_action + must be an application-wide action (it +must start with "app."). If detailed_action + contains a target, the +given action will be activated with that target as its parameter. +See g_action_parse_detailed_name() for a description of the format +for detailed_action +.

+

When no default action is set, the application that the notification +was sent on is activated.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

notification

a GNotification

 

detailed_action

a detailed action name

 
+
+

Since: 2.40

+
+
+
+

g_notification_set_default_action_and_target ()

+
void
+g_notification_set_default_action_and_target
+                               (GNotification *notification,
+                                const gchar *action,
+                                const gchar *target_format,
+                                ...);
+

Sets the default action of notification + to action +. This action is +activated when the notification is clicked on. It must be an +application-wide action (it must start with "app.").

+

If target_format + is given, it is used to collect remaining +positional parameters into a GVariant instance, similar to +g_variant_new(). action + will be activated with that GVariant as its +parameter.

+

When no default action is set, the application that the notification +was sent on is activated.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

notification

a GNotification

 

action

an action name

 

target_format

a GVariant format string, or NULL.

[allow-none]

...

positional parameters, as determined by target_format +

 
+
+

Since: 2.40

+
+
+
+

g_notification_set_default_action_and_target_value ()

+
void
+g_notification_set_default_action_and_target_value
+                               (GNotification *notification,
+                                const gchar *action,
+                                GVariant *target);
+

Sets the default action of notification + to action +. This action is +activated when the notification is clicked on. It must be an +application-wide action (start with "app.").

+

If target + is non-NULL, action + will be activated with target + as +its parameter.

+

When no default action is set, the application that the notification +was sent on is activated.

+

[rename-to g_notification_set_default_action_and_target]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

notification

a GNotification

 

action

an action name

 

target

a GVariant to use as action +'s parameter, or NULL.

[allow-none]
+
+

Since: 2.40

+
+
+
+

g_notification_add_button ()

+
void
+g_notification_add_button (GNotification *notification,
+                           const gchar *label,
+                           const gchar *detailed_action);
+

Adds a button to notification + that activates the action in +detailed_action + when clicked. That action must be an +application-wide action (starting with "app."). If detailed_action + +contains a target, the action will be activated with that target as +its parameter.

+

See g_action_parse_detailed_name() for a description of the format +for detailed_action +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

notification

a GNotification

 

label

label of the button

 

detailed_action

a detailed action name

 
+
+

Since: 2.40

+
+
+
+

g_notification_add_button_with_target ()

+
void
+g_notification_add_button_with_target (GNotification *notification,
+                                       const gchar *label,
+                                       const gchar *action,
+                                       const gchar *target_format,
+                                       ...);
+

Adds a button to notification + that activates action + when clicked. +action + must be an application-wide action (it must start with "app.").

+

If target_format + is given, it is used to collect remaining +positional parameters into a GVariant instance, similar to +g_variant_new(). action + will be activated with that GVariant as its +parameter.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

notification

a GNotification

 

label

label of the button

 

action

an action name

 

target_format

a GVariant format string, or NULL.

[allow-none]

...

positional parameters, as determined by target_format +

 
+
+

Since: 2.40

+
+
+
+

g_notification_add_button_with_target_value ()

+
void
+g_notification_add_button_with_target_value
+                               (GNotification *notification,
+                                const gchar *label,
+                                const gchar *action,
+                                GVariant *target);
+

Adds a button to notification + that activates action + when clicked. +action + must be an application-wide action (it must start with "app.").

+

If target + is non-NULL, action + will be activated with target + as +its parameter.

+

[rename-to g_notification_add_button_with_target]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

notification

a GNotification

 

label

label of the button

 

action

an action name

 

target

a GVariant to use as action +'s parameter, or NULL.

[allow-none]
+
+

Since: 2.40

+
+
+
+

Types and Values

+
+

GNotification

+
typedef struct _GNotification GNotification;
+

This structure type is private and should only be accessed using the +public APIs.

+

Since: 2.40

+
+
+
+

enum GNotificationPriority

+

Priority levels for GNotifications.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

G_NOTIFICATION_PRIORITY_NORMAL

+

the default priority, to be used for the + majority of notifications (for example email messages, software updates, + completed download/sync operations)

+
 

G_NOTIFICATION_PRIORITY_LOW

+

for notifications that do not require + immediate attention - typically used for contextual background + information, such as contact birthdays or local weather

+
 

G_NOTIFICATION_PRIORITY_HIGH

+

for events that require more attention, + usually because responses are time-sensitive (for example chat and SMS + messages or alarms)

+
 

G_NOTIFICATION_PRIORITY_URGENT

+

for urgent notifications, or notifications + that require a response in a short space of time (for example phone calls + or emergency warnings)

+
 
+
+

Since: 2.42

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GOutputStream.html b/docs/reference/gio/html/GOutputStream.html new file mode 100644 index 0000000..5ce81ac --- /dev/null +++ b/docs/reference/gio/html/GOutputStream.html @@ -0,0 +1,1701 @@ + + + + +GOutputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GOutputStream

+

GOutputStream — Base class for implementing streaming output

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gssize + +g_output_stream_write () +
+gboolean + +g_output_stream_write_all () +
+void + +g_output_stream_write_all_async () +
+gboolean + +g_output_stream_write_all_finish () +
+gssize + +g_output_stream_splice () +
+gboolean + +g_output_stream_flush () +
+gboolean + +g_output_stream_close () +
+void + +g_output_stream_write_async () +
+gssize + +g_output_stream_write_finish () +
+void + +g_output_stream_splice_async () +
+gssize + +g_output_stream_splice_finish () +
+void + +g_output_stream_flush_async () +
+gboolean + +g_output_stream_flush_finish () +
+void + +g_output_stream_close_async () +
+gboolean + +g_output_stream_close_finish () +
+gboolean + +g_output_stream_is_closing () +
+gboolean + +g_output_stream_is_closed () +
+gboolean + +g_output_stream_has_pending () +
+gboolean + +g_output_stream_set_pending () +
+void + +g_output_stream_clear_pending () +
+gssize + +g_output_stream_write_bytes () +
+void + +g_output_stream_write_bytes_async () +
+gssize + +g_output_stream_write_bytes_finish () +
+gboolean + +g_output_stream_printf () +
+gboolean + +g_output_stream_vprintf () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
enumGOutputStreamSpliceFlags
 GOutputStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GOutputStream
+        ├── GFilterOutputStream
+        ├── GFileOutputStream
+        ├── GMemoryOutputStream
+        ╰── GUnixOutputStream
+
+
+
+

Known Derived Interfaces

+

+GOutputStream is required by + GPollableOutputStream.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GOutputStream has functions to write to a stream (g_output_stream_write()), +to close a stream (g_output_stream_close()) and to flush pending writes +(g_output_stream_flush()).

+

To copy the content of an input stream to an output stream without +manually handling the reads and writes, use g_output_stream_splice().

+

See the documentation for GIOStream for details of thread safety of +streaming APIs.

+

All of these functions have async variants too.

+
+
+

Functions

+
+

g_output_stream_write ()

+
gssize
+g_output_stream_write (GOutputStream *stream,
+                       const void *buffer,
+                       gsize count,
+                       GCancellable *cancellable,
+                       GError **error);
+

Tries to write count + bytes from buffer + into the stream. Will block +during the operation.

+

If count is 0, returns 0 and does nothing. A value of count + +larger than G_MAXSSIZE will cause a G_IO_ERROR_INVALID_ARGUMENT error.

+

On success, the number of bytes written to the stream is returned. +It is not an error if this is not the same as the requested size, as it +can happen e.g. on a partial I/O error, or if there is not enough +storage in the stream. All writes block until at least one byte +is written or an error occurs; 0 is never returned (unless +count + is 0).

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned. If an +operation was partially finished when the operation was cancelled the +partial result will be returned, without an error.

+

On error -1 is returned and error + is set accordingly.

+

Virtual: write_fn

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

buffer

the buffer containing the data to write.

[array length=count][element-type guint8]

count

the number of bytes to write

 

cancellable

optional cancellable object.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

Number of bytes written, or -1 on error

+
+
+
+
+

g_output_stream_write_all ()

+
gboolean
+g_output_stream_write_all (GOutputStream *stream,
+                           const void *buffer,
+                           gsize count,
+                           gsize *bytes_written,
+                           GCancellable *cancellable,
+                           GError **error);
+

Tries to write count + bytes from buffer + into the stream. Will block +during the operation.

+

This function is similar to g_output_stream_write(), except it tries to +write as many bytes as requested, only stopping on an error.

+

On a successful write of count + bytes, TRUE is returned, and bytes_written + +is set to count +.

+

If there is an error during the operation FALSE is returned and error + +is set to indicate the error status.

+

As a special exception to the normal conventions for functions that +use GError, if this function returns FALSE (and sets error +) then +bytes_written + will be set to the number of bytes that were +successfully written before the error was encountered. This +functionality is only available from C. If you need it from another +language then you must write your own loop around +g_output_stream_write().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

buffer

the buffer containing the data to write.

[array length=count][element-type guint8]

count

the number of bytes to write

 

bytes_written

location to store the number of bytes that was +written to the stream.

[out]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

TRUE on success, FALSE if there was an error

+
+
+
+
+

g_output_stream_write_all_async ()

+
void
+g_output_stream_write_all_async (GOutputStream *stream,
+                                 const void *buffer,
+                                 gsize count,
+                                 int io_priority,
+                                 GCancellable *cancellable,
+                                 GAsyncReadyCallback callback,
+                                 gpointer user_data);
+

Request an asynchronous write of count + bytes from buffer + into +the stream. When the operation is finished callback + will be called. +You can then call g_output_stream_write_all_finish() to get the result of the +operation.

+

This is the asynchronous version of g_output_stream_write_all().

+

Call g_output_stream_write_all_finish() to collect the result.

+

Any outstanding I/O request with higher priority (lower numerical +value) will be executed before an outstanding request with lower +priority. Default priority is G_PRIORITY_DEFAULT.

+

Note that no copy of buffer + will be made, so it must stay valid +until callback + is called.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

A GOutputStream

 

buffer

the buffer containing the data to write.

[array length=count][element-type guint8]

count

the number of bytes to write

 

io_priority

the io priority of the request

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

callback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+

Since: 2.44

+
+
+
+

g_output_stream_write_all_finish ()

+
gboolean
+g_output_stream_write_all_finish (GOutputStream *stream,
+                                  GAsyncResult *result,
+                                  gsize *bytes_written,
+                                  GError **error);
+

Finishes an asynchronous stream write operation started with +g_output_stream_write_all_async().

+

As a special exception to the normal conventions for functions that +use GError, if this function returns FALSE (and sets error +) then +bytes_written + will be set to the number of bytes that were +successfully written before the error was encountered. This +functionality is only available from C. If you need it from another +language then you must write your own loop around +g_output_stream_write_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GOutputStream

 

result

a GAsyncResult

 

bytes_written

location to store the number of bytes that was written to the stream.

[out]

error

a GError location to store the error occurring, or NULL to ignore.

 
+
+
+

Returns

+

TRUE on success, FALSE if there was an error

+
+

Since: 2.44

+
+
+
+

g_output_stream_splice ()

+
gssize
+g_output_stream_splice (GOutputStream *stream,
+                        GInputStream *source,
+                        GOutputStreamSpliceFlags flags,
+                        GCancellable *cancellable,
+                        GError **error);
+

Splices an input stream into an output stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

source

a GInputStream.

 

flags

a set of GOutputStreamSpliceFlags.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

a gssize containing the size of the data spliced, or +-1 if an error occurred. Note that if the number of bytes +spliced is greater than G_MAXSSIZE, then that will be +returned, and there is no way to determine the actual number +of bytes spliced.

+
+
+
+
+

g_output_stream_flush ()

+
gboolean
+g_output_stream_flush (GOutputStream *stream,
+                       GCancellable *cancellable,
+                       GError **error);
+

Forces a write of all user-space buffered data for the given +stream +. Will block during the operation. Closing the stream will +implicitly cause a flush.

+

This function is optional for inherited classes.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

cancellable

optional cancellable object.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

TRUE on success, FALSE on error

+
+
+
+
+

g_output_stream_close ()

+
gboolean
+g_output_stream_close (GOutputStream *stream,
+                       GCancellable *cancellable,
+                       GError **error);
+

Closes the stream, releasing resources related to it.

+

Once the stream is closed, all other operations will return G_IO_ERROR_CLOSED. +Closing a stream multiple times will not return an error.

+

Closing a stream will automatically flush any outstanding buffers in the +stream.

+

Streams will be automatically closed when the last reference +is dropped, but you might want to call this function to make sure +resources are released as early as possible.

+

Some streams might keep the backing store of the stream (e.g. a file descriptor) +open after the stream is closed. See the documentation for the individual +stream for details.

+

On failure the first error that happened will be reported, but the close +operation will finish as much as possible. A stream that failed to +close will still return G_IO_ERROR_CLOSED for all operations. Still, it +is important to check and report the error to the user, otherwise +there might be a loss of data as all data might not be written.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned. +Cancelling a close will still leave the stream closed, but there some streams +can use a faster close that doesn't block to e.g. check errors. On +cancellation (as with any error) there is no guarantee that all written +data will reach the target.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

A GOutputStream.

 

cancellable

optional cancellable object.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

TRUE on success, FALSE on failure

+
+
+
+
+

g_output_stream_write_async ()

+
void
+g_output_stream_write_async (GOutputStream *stream,
+                             const void *buffer,
+                             gsize count,
+                             int io_priority,
+                             GCancellable *cancellable,
+                             GAsyncReadyCallback callback,
+                             gpointer user_data);
+

Request an asynchronous write of count + bytes from buffer + into +the stream. When the operation is finished callback + will be called. +You can then call g_output_stream_write_finish() to get the result of the +operation.

+

During an async request no other sync and async calls are allowed, +and will result in G_IO_ERROR_PENDING errors.

+

A value of count + larger than G_MAXSSIZE will cause a +G_IO_ERROR_INVALID_ARGUMENT error.

+

On success, the number of bytes written will be passed to the +callback +. It is not an error if this is not the same as the +requested size, as it can happen e.g. on a partial I/O error, +but generally we try to write as many bytes as requested.

+

You are guaranteed that this method will never fail with +G_IO_ERROR_WOULD_BLOCK - if stream + can't accept more data, the +method will just wait until this changes.

+

Any outstanding I/O request with higher priority (lower numerical +value) will be executed before an outstanding request with lower +priority. Default priority is G_PRIORITY_DEFAULT.

+

The asyncronous methods have a default fallback that uses threads +to implement asynchronicity, so they are optional for inheriting +classes. However, if you override one you must override all.

+

For the synchronous, blocking version of this function, see +g_output_stream_write().

+

Note that no copy of buffer + will be made, so it must stay valid +until callback + is called. See g_output_stream_write_bytes_async() +for a GBytes version that will automatically hold a reference to +the contents (without copying) for the duration of the call.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

A GOutputStream.

 

buffer

the buffer containing the data to write.

[array length=count][element-type guint8]

count

the number of bytes to write

 

io_priority

the io priority of the request.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

callback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_output_stream_write_finish ()

+
gssize
+g_output_stream_write_finish (GOutputStream *stream,
+                              GAsyncResult *result,
+                              GError **error);
+

Finishes a stream write operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

a gssize containing the number of bytes written to the stream.

+
+
+
+
+

g_output_stream_splice_async ()

+
void
+g_output_stream_splice_async (GOutputStream *stream,
+                              GInputStream *source,
+                              GOutputStreamSpliceFlags flags,
+                              int io_priority,
+                              GCancellable *cancellable,
+                              GAsyncReadyCallback callback,
+                              gpointer user_data);
+

Splices a stream asynchronously. +When the operation is finished callback + will be called. +You can then call g_output_stream_splice_finish() to get the +result of the operation.

+

For the synchronous, blocking version of this function, see +g_output_stream_splice().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

source

a GInputStream.

 

flags

a set of GOutputStreamSpliceFlags.

 

io_priority

the io priority of the request.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

user data passed to callback +.

[closure]
+
+
+
+
+

g_output_stream_splice_finish ()

+
gssize
+g_output_stream_splice_finish (GOutputStream *stream,
+                               GAsyncResult *result,
+                               GError **error);
+

Finishes an asynchronous stream splice operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

a gssize of the number of bytes spliced. Note that if the +number of bytes spliced is greater than G_MAXSSIZE, then that +will be returned, and there is no way to determine the actual +number of bytes spliced.

+
+
+
+
+

g_output_stream_flush_async ()

+
void
+g_output_stream_flush_async (GOutputStream *stream,
+                             int io_priority,
+                             GCancellable *cancellable,
+                             GAsyncReadyCallback callback,
+                             gpointer user_data);
+

Forces an asynchronous write of all user-space buffered data for +the given stream +. +For behaviour details see g_output_stream_flush().

+

When the operation is finished callback + will be +called. You can then call g_output_stream_flush_finish() to get the +result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

io_priority

the io priority of the request.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_output_stream_flush_finish ()

+
gboolean
+g_output_stream_flush_finish (GOutputStream *stream,
+                              GAsyncResult *result,
+                              GError **error);
+

Finishes flushing an output stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if flush operation succeeded, FALSE otherwise.

+
+
+
+
+

g_output_stream_close_async ()

+
void
+g_output_stream_close_async (GOutputStream *stream,
+                             int io_priority,
+                             GCancellable *cancellable,
+                             GAsyncReadyCallback callback,
+                             gpointer user_data);
+

Requests an asynchronous close of the stream, releasing resources +related to it. When the operation is finished callback + will be +called. You can then call g_output_stream_close_finish() to get +the result of the operation.

+

For behaviour details see g_output_stream_close().

+

The asyncronous methods have a default fallback that uses threads +to implement asynchronicity, so they are optional for inheriting +classes. However, if you override one you must override all.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

A GOutputStream.

 

io_priority

the io priority of the request.

 

cancellable

optional cancellable object.

[allow-none]

callback

callback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_output_stream_close_finish ()

+
gboolean
+g_output_stream_close_finish (GOutputStream *stream,
+                              GAsyncResult *result,
+                              GError **error);
+

Closes an output stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if stream was successfully closed, FALSE otherwise.

+
+
+
+
+

g_output_stream_is_closing ()

+
gboolean
+g_output_stream_is_closing (GOutputStream *stream);
+

Checks if an output stream is being closed. This can be +used inside e.g. a flush implementation to see if the +flush (or other i/o operation) is called from within +the closing operation.

+
+

Parameters

+
+++++ + + + + + +

stream

a GOutputStream.

 
+
+
+

Returns

+

TRUE if stream +is being closed. FALSE otherwise.

+
+

Since: 2.24

+
+
+
+

g_output_stream_is_closed ()

+
gboolean
+g_output_stream_is_closed (GOutputStream *stream);
+

Checks if an output stream has already been closed.

+
+

Parameters

+
+++++ + + + + + +

stream

a GOutputStream.

 
+
+
+

Returns

+

TRUE if stream +is closed. FALSE otherwise.

+
+
+
+
+

g_output_stream_has_pending ()

+
gboolean
+g_output_stream_has_pending (GOutputStream *stream);
+

Checks if an ouput stream has pending actions.

+
+

Parameters

+
+++++ + + + + + +

stream

a GOutputStream.

 
+
+
+

Returns

+

TRUE if stream +has pending actions.

+
+
+
+
+

g_output_stream_set_pending ()

+
gboolean
+g_output_stream_set_pending (GOutputStream *stream,
+                             GError **error);
+

Sets stream + to have actions pending. If the pending flag is +already set or stream + is closed, it will return FALSE and set +error +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GOutputStream.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if pending was previously unset and is now set.

+
+
+
+
+

g_output_stream_clear_pending ()

+
void
+g_output_stream_clear_pending (GOutputStream *stream);
+

Clears the pending flag on stream +.

+
+

Parameters

+
+++++ + + + + + +

stream

output stream

 
+
+
+
+
+

g_output_stream_write_bytes ()

+
gssize
+g_output_stream_write_bytes (GOutputStream *stream,
+                             GBytes *bytes,
+                             GCancellable *cancellable,
+                             GError **error);
+

A wrapper function for g_output_stream_write() which takes a +GBytes as input. This can be more convenient for use by language +bindings or in other cases where the refcounted nature of GBytes +is helpful over a bare pointer interface.

+

However, note that this function may still perform partial writes, +just like g_output_stream_write(). If that occurs, to continue +writing, you will need to create a new GBytes containing just the +remaining bytes, using g_bytes_new_from_bytes(). Passing the same +GBytes instance multiple times potentially can result in duplicated +data in the output stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

bytes

the GBytes to write

 

cancellable

optional cancellable object.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

Number of bytes written, or -1 on error

+
+
+
+
+

g_output_stream_write_bytes_async ()

+
void
+g_output_stream_write_bytes_async (GOutputStream *stream,
+                                   GBytes *bytes,
+                                   int io_priority,
+                                   GCancellable *cancellable,
+                                   GAsyncReadyCallback callback,
+                                   gpointer user_data);
+

This function is similar to g_output_stream_write_async(), but +takes a GBytes as input. Due to the refcounted nature of GBytes, +this allows the stream to avoid taking a copy of the data.

+

However, note that this function may still perform partial writes, +just like g_output_stream_write_async(). If that occurs, to continue +writing, you will need to create a new GBytes containing just the +remaining bytes, using g_bytes_new_from_bytes(). Passing the same +GBytes instance multiple times potentially can result in duplicated +data in the output stream.

+

For the synchronous, blocking version of this function, see +g_output_stream_write_bytes().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

A GOutputStream.

 

bytes

The bytes to write

 

io_priority

the io priority of the request.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

callback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_output_stream_write_bytes_finish ()

+
gssize
+g_output_stream_write_bytes_finish (GOutputStream *stream,
+                                    GAsyncResult *result,
+                                    GError **error);
+

Finishes a stream write-from-GBytes operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

a gssize containing the number of bytes written to the stream.

+
+
+
+
+

g_output_stream_printf ()

+
gboolean
+g_output_stream_printf (GOutputStream *stream,
+                        gsize *bytes_written,
+                        GCancellable *cancellable,
+                        GError **error,
+                        const gchar *format,
+                        ...);
+

This is a utility function around g_output_stream_write_all(). It +uses g_strdup_vprintf() to turn format + and @... into a string that +is then written to stream +.

+

See the documentation of g_output_stream_write_all() about the +behavior of the actual write operation.

+

Note that partial writes cannot be properly checked with this +function due to the variable length of the written string, if you +need precise control over partial write failures, you need to +create you own printf()-like wrapper around g_output_stream_write() +or g_output_stream_write_all().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

bytes_written

location to store the number of bytes that was +written to the stream.

[out]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 

format

the format string. See the printf() documentation

 

...

the parameters to insert into the format string

 
+
+
+

Returns

+

TRUE on success, FALSE if there was an error

+
+

Since: 2.40

+
+
+
+

g_output_stream_vprintf ()

+
gboolean
+g_output_stream_vprintf (GOutputStream *stream,
+                         gsize *bytes_written,
+                         GCancellable *cancellable,
+                         GError **error,
+                         const gchar *format,
+                         va_list args);
+

This is a utility function around g_output_stream_write_all(). It +uses g_strdup_vprintf() to turn format + and args + into a string that +is then written to stream +.

+

See the documentation of g_output_stream_write_all() about the +behavior of the actual write operation.

+

Note that partial writes cannot be properly checked with this +function due to the variable length of the written string, if you +need precise control over partial write failures, you need to +create you own printf()-like wrapper around g_output_stream_write() +or g_output_stream_write_all().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

bytes_written

location to store the number of bytes that was +written to the stream.

[out]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 

format

the format string. See the printf() documentation

 

args

the parameters to insert into the format string

 
+
+
+

Returns

+

TRUE on success, FALSE if there was an error

+
+

Since: 2.40

+
+
+
+

Types and Values

+
+

enum GOutputStreamSpliceFlags

+

GOutputStreamSpliceFlags determine how streams should be spliced.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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.

+
 
+
+
+
+
+

GOutputStream

+
typedef struct _GOutputStream 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.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GPermission.html b/docs/reference/gio/html/GPermission.html new file mode 100644 index 0000000..69f5f4c --- /dev/null +++ b/docs/reference/gio/html/GPermission.html @@ -0,0 +1,664 @@ + + + + +GPermission: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GPermission

+

GPermission — An object representing the permission + to perform a certain action

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +g_permission_get_allowed () +
+gboolean + +g_permission_get_can_acquire () +
+gboolean + +g_permission_get_can_release () +
+gboolean + +g_permission_acquire () +
+void + +g_permission_acquire_async () +
+gboolean + +g_permission_acquire_finish () +
+gboolean + +g_permission_release () +
+void + +g_permission_release_async () +
+gboolean + +g_permission_release_finish () +
+void + +g_permission_impl_update () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + +
gbooleanallowedRead
gbooleancan-acquireRead
gbooleancan-releaseRead
+
+
+

Types and Values

+
++++ + + + + +
 GPermission
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GPermission
+        ╰── GSimplePermission
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A GPermission represents the status of the caller's permission to +perform a certain action.

+

You can query if the action is currently allowed and if it is +possible to acquire the permission so that the action will be allowed +in the future.

+

There is also an API to actually acquire the permission and one to +release it.

+

As an example, a GPermission might represent the ability for the +user to write to a GSettings object. This GPermission object could +then be used to decide if it is appropriate to show a "Click here to +unlock" button in a dialog and to provide the mechanism to invoke +when that button is clicked.

+
+
+

Functions

+
+

g_permission_get_allowed ()

+
gboolean
+g_permission_get_allowed (GPermission *permission);
+

Gets the value of the 'allowed' property. This property is TRUE if +the caller currently has permission to perform the action that +permission + represents the permission to perform.

+
+

Parameters

+
+++++ + + + + + +

permission

a GPermission instance

 
+
+
+

Returns

+

the value of the 'allowed' property

+
+

Since: 2.26

+
+
+
+

g_permission_get_can_acquire ()

+
gboolean
+g_permission_get_can_acquire (GPermission *permission);
+

Gets the value of the 'can-acquire' property. This property is TRUE +if it is generally possible to acquire the permission by calling +g_permission_acquire().

+
+

Parameters

+
+++++ + + + + + +

permission

a GPermission instance

 
+
+
+

Returns

+

the value of the 'can-acquire' property

+
+

Since: 2.26

+
+
+
+

g_permission_get_can_release ()

+
gboolean
+g_permission_get_can_release (GPermission *permission);
+

Gets the value of the 'can-release' property. This property is TRUE +if it is generally possible to release the permission by calling +g_permission_release().

+
+

Parameters

+
+++++ + + + + + +

permission

a GPermission instance

 
+
+
+

Returns

+

the value of the 'can-release' property

+
+

Since: 2.26

+
+
+
+

g_permission_acquire ()

+
gboolean
+g_permission_acquire (GPermission *permission,
+                      GCancellable *cancellable,
+                      GError **error);
+

Attempts to acquire the permission represented by permission +.

+

The precise method by which this happens depends on the permission +and the underlying authentication mechanism. A simple example is +that a dialog may appear asking the user to enter their password.

+

You should check with g_permission_get_can_acquire() before calling +this function.

+

If the permission is acquired then TRUE is returned. Otherwise, +FALSE is returned and error + is set appropriately.

+

This call is blocking, likely for a very long time (in the case that +user interaction is required). See g_permission_acquire_async() for +the non-blocking version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

permission

a GPermission instance

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

a pointer to a NULL GError, or NULL

 
+
+
+

Returns

+

TRUE if the permission was successfully acquired

+
+

Since: 2.26

+
+
+
+

g_permission_acquire_async ()

+
void
+g_permission_acquire_async (GPermission *permission,
+                            GCancellable *cancellable,
+                            GAsyncReadyCallback callback,
+                            gpointer user_data);
+

Attempts to acquire the permission represented by permission +.

+

This is the first half of the asynchronous version of +g_permission_acquire().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

permission

a GPermission instance

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

the GAsyncReadyCallback to call when done

 

user_data

the user data to pass to callback +

 
+
+

Since: 2.26

+
+
+
+

g_permission_acquire_finish ()

+
gboolean
+g_permission_acquire_finish (GPermission *permission,
+                             GAsyncResult *result,
+                             GError **error);
+

Collects the result of attempting to acquire the permission +represented by permission +.

+

This is the second half of the asynchronous version of +g_permission_acquire().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

permission

a GPermission instance

 

result

the GAsyncResult given to the GAsyncReadyCallback

 

error

a pointer to a NULL GError, or NULL

 
+
+
+

Returns

+

TRUE if the permission was successfully acquired

+
+

Since: 2.26

+
+
+
+

g_permission_release ()

+
gboolean
+g_permission_release (GPermission *permission,
+                      GCancellable *cancellable,
+                      GError **error);
+

Attempts to release the permission represented by permission +.

+

The precise method by which this happens depends on the permission +and the underlying authentication mechanism. In most cases the +permission will be dropped immediately without further action.

+

You should check with g_permission_get_can_release() before calling +this function.

+

If the permission is released then TRUE is returned. Otherwise, +FALSE is returned and error + is set appropriately.

+

This call is blocking, likely for a very long time (in the case that +user interaction is required). See g_permission_release_async() for +the non-blocking version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

permission

a GPermission instance

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

a pointer to a NULL GError, or NULL

 
+
+
+

Returns

+

TRUE if the permission was successfully released

+
+

Since: 2.26

+
+
+
+

g_permission_release_async ()

+
void
+g_permission_release_async (GPermission *permission,
+                            GCancellable *cancellable,
+                            GAsyncReadyCallback callback,
+                            gpointer user_data);
+

Attempts to release the permission represented by permission +.

+

This is the first half of the asynchronous version of +g_permission_release().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

permission

a GPermission instance

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

the GAsyncReadyCallback to call when done

 

user_data

the user data to pass to callback +

 
+
+

Since: 2.26

+
+
+
+

g_permission_release_finish ()

+
gboolean
+g_permission_release_finish (GPermission *permission,
+                             GAsyncResult *result,
+                             GError **error);
+

Collects the result of attempting to release the permission +represented by permission +.

+

This is the second half of the asynchronous version of +g_permission_release().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

permission

a GPermission instance

 

result

the GAsyncResult given to the GAsyncReadyCallback

 

error

a pointer to a NULL GError, or NULL

 
+
+
+

Returns

+

TRUE if the permission was successfully released

+
+

Since: 2.26

+
+
+
+

g_permission_impl_update ()

+
void
+g_permission_impl_update (GPermission *permission,
+                          gboolean allowed,
+                          gboolean can_acquire,
+                          gboolean can_release);
+

This function is called by the GPermission implementation to update +the properties of the permission. You should never call this +function except from a GPermission implementation.

+

GObject notify signals are generated, as appropriate.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

permission

a GPermission instance

 

allowed

the new value for the 'allowed' property

 

can_acquire

the new value for the 'can-acquire' property

 

can_release

the new value for the 'can-release' property

 
+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GPermission

+
typedef struct _GPermission GPermission;
+

GPermission is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

Property Details

+
+

The “allowed” property

+
  “allowed”                  gboolean
+

TRUE if the caller currently has permission to perform the action that +permission + represents the permission to perform.

+

Flags: Read

+

Default value: FALSE

+
+
+
+

The “can-acquire” property

+
  “can-acquire”              gboolean
+

TRUE if it is generally possible to acquire the permission by calling +g_permission_acquire().

+

Flags: Read

+

Default value: FALSE

+
+
+
+

The “can-release” property

+
  “can-release”              gboolean
+

TRUE if it is generally possible to release the permission by calling +g_permission_release().

+

Flags: Read

+

Default value: FALSE

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GPollableInputStream.html b/docs/reference/gio/html/GPollableInputStream.html new file mode 100644 index 0000000..2a13227 --- /dev/null +++ b/docs/reference/gio/html/GPollableInputStream.html @@ -0,0 +1,407 @@ + + + + +GPollableInputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GPollableInputStream

+

GPollableInputStream — Interface for pollable input streams

+
+
+

Functions

+ +
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GPollableInputStream
structGPollableInputStreamInterface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GPollableInputStream
+
+
+
+

Prerequisites

+

+GPollableInputStream requires + GInputStream.

+
+
+

Known Implementations

+

+GPollableInputStream is implemented by + GConverterInputStream, GMemoryInputStream and GUnixInputStream.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GPollableInputStream is implemented by GInputStreams that +can be polled for readiness to read. This can be used when +interfacing with a non-GIO API that expects +UNIX-file-descriptor-style asynchronous I/O rather than GIO-style.

+
+
+

Functions

+
+

g_pollable_input_stream_can_poll ()

+
gboolean
+g_pollable_input_stream_can_poll (GPollableInputStream *stream);
+

Checks if stream + is actually pollable. Some classes may implement +GPollableInputStream but have only certain instances of that class +be pollable. If this method returns FALSE, then the behavior of +other GPollableInputStream methods is undefined.

+

For any given stream, the value returned by this method is constant; +a stream cannot switch from pollable to non-pollable or vice versa.

+
+

Parameters

+
+++++ + + + + + +

stream

a GPollableInputStream.

 
+
+
+

Returns

+

TRUE if stream +is pollable, FALSE if not.

+
+

Since: 2.28

+
+
+
+

g_pollable_input_stream_is_readable ()

+
gboolean
+g_pollable_input_stream_is_readable (GPollableInputStream *stream);
+

Checks if stream + can be read.

+

Note that some stream types may not be able to implement this 100% +reliably, and it is possible that a call to g_input_stream_read() +after this returns TRUE would still block. To guarantee +non-blocking behavior, you should always use +g_pollable_input_stream_read_nonblocking(), which will return a +G_IO_ERROR_WOULD_BLOCK error rather than blocking.

+
+

Parameters

+
+++++ + + + + + +

stream

a GPollableInputStream.

 
+
+
+

Returns

+

TRUE if stream +is readable, FALSE if not. If an error +has occurred on stream +, this will result in +g_pollable_input_stream_is_readable() returning TRUE, and the +next attempt to read will return the error.

+
+

Since: 2.28

+
+
+
+

g_pollable_input_stream_create_source ()

+
GSource *
+g_pollable_input_stream_create_source (GPollableInputStream *stream,
+                                       GCancellable *cancellable);
+

Creates a GSource that triggers when stream + can be read, or +cancellable + is triggered or an error occurs. The callback on the +source is of the GPollableSourceFunc type.

+

As with g_pollable_input_stream_is_readable(), it is possible that +the stream may not actually be readable even after the source +triggers, so you should use g_pollable_input_stream_read_nonblocking() +rather than g_input_stream_read() from the callback.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GPollableInputStream.

 

cancellable

a GCancellable, or NULL.

[allow-none]
+
+
+

Returns

+

a new GSource.

+

[transfer full]

+
+

Since: 2.28

+
+
+
+

g_pollable_input_stream_read_nonblocking ()

+
gssize
+g_pollable_input_stream_read_nonblocking
+                               (GPollableInputStream *stream,
+                                void *buffer,
+                                gsize count,
+                                GCancellable *cancellable,
+                                GError **error);
+

Attempts to read up to count + bytes from stream + into buffer +, as +with g_input_stream_read(). If stream + is not currently readable, +this will immediately return G_IO_ERROR_WOULD_BLOCK, and you can +use g_pollable_input_stream_create_source() to create a GSource +that will be triggered when stream + is readable.

+

Note that since this method never blocks, you cannot actually +use cancellable + to cancel it. However, it will return an error +if cancellable + has already been cancelled when you call, which +may happen if you call this method after a source triggers due +to having been cancelled.

+

Virtual: read_nonblocking

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GPollableInputStream

 

buffer

a buffer to +read data into (which should be at least count +bytes long).

[array length=count][element-type guint8]

count

the number of bytes you want to read

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

the number of bytes read, or -1 on error (including +G_IO_ERROR_WOULD_BLOCK).

+
+
+
+
+

Types and Values

+
+

GPollableInputStream

+
typedef struct _GPollableInputStream GPollableInputStream;
+

An interface for a GInputStream that can be polled for readability.

+

Since: 2.28

+
+
+
+

struct GPollableInputStreamInterface

+
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);
+};
+
+

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.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface 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

 
+
+

Since: 2.28

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GPollableOutputStream.html b/docs/reference/gio/html/GPollableOutputStream.html new file mode 100644 index 0000000..8b8cf86 --- /dev/null +++ b/docs/reference/gio/html/GPollableOutputStream.html @@ -0,0 +1,407 @@ + + + + +GPollableOutputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GPollableOutputStream

+

GPollableOutputStream — Interface for pollable output streams

+
+
+

Functions

+ +
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GPollableOutputStream
structGPollableOutputStreamInterface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GPollableOutputStream
+
+
+
+

Prerequisites

+

+GPollableOutputStream requires + GOutputStream.

+
+
+

Known Implementations

+

+GPollableOutputStream is implemented by + GConverterOutputStream, GMemoryOutputStream and GUnixOutputStream.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GPollableOutputStream is implemented by GOutputStreams that +can be polled for readiness to write. This can be used when +interfacing with a non-GIO API that expects +UNIX-file-descriptor-style asynchronous I/O rather than GIO-style.

+
+
+

Functions

+
+

g_pollable_output_stream_can_poll ()

+
gboolean
+g_pollable_output_stream_can_poll (GPollableOutputStream *stream);
+

Checks if stream + is actually pollable. Some classes may implement +GPollableOutputStream but have only certain instances of that +class be pollable. If this method returns FALSE, then the behavior +of other GPollableOutputStream methods is undefined.

+

For any given stream, the value returned by this method is constant; +a stream cannot switch from pollable to non-pollable or vice versa.

+
+

Parameters

+
+++++ + + + + + +

stream

a GPollableOutputStream.

 
+
+
+

Returns

+

TRUE if stream +is pollable, FALSE if not.

+
+

Since: 2.28

+
+
+
+

g_pollable_output_stream_is_writable ()

+
gboolean
+g_pollable_output_stream_is_writable (GPollableOutputStream *stream);
+

Checks if stream + can be written.

+

Note that some stream types may not be able to implement this 100% +reliably, and it is possible that a call to g_output_stream_write() +after this returns TRUE would still block. To guarantee +non-blocking behavior, you should always use +g_pollable_output_stream_write_nonblocking(), which will return a +G_IO_ERROR_WOULD_BLOCK error rather than blocking.

+
+

Parameters

+
+++++ + + + + + +

stream

a GPollableOutputStream.

 
+
+
+

Returns

+

TRUE if stream +is writable, FALSE if not. If an error +has occurred on stream +, this will result in +g_pollable_output_stream_is_writable() returning TRUE, and the +next attempt to write will return the error.

+
+

Since: 2.28

+
+
+
+

g_pollable_output_stream_create_source ()

+
GSource *
+g_pollable_output_stream_create_source
+                               (GPollableOutputStream *stream,
+                                GCancellable *cancellable);
+

Creates a GSource that triggers when stream + can be written, or +cancellable + is triggered or an error occurs. The callback on the +source is of the GPollableSourceFunc type.

+

As with g_pollable_output_stream_is_writable(), it is possible that +the stream may not actually be writable even after the source +triggers, so you should use g_pollable_output_stream_write_nonblocking() +rather than g_output_stream_write() from the callback.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GPollableOutputStream.

 

cancellable

a GCancellable, or NULL.

[allow-none]
+
+
+

Returns

+

a new GSource.

+

[transfer full]

+
+

Since: 2.28

+
+
+
+

g_pollable_output_stream_write_nonblocking ()

+
gssize
+g_pollable_output_stream_write_nonblocking
+                               (GPollableOutputStream *stream,
+                                const void *buffer,
+                                gsize count,
+                                GCancellable *cancellable,
+                                GError **error);
+

Attempts to write up to count + bytes from buffer + to stream +, as +with g_output_stream_write(). If stream + is not currently writable, +this will immediately return G_IO_ERROR_WOULD_BLOCK, and you can +use g_pollable_output_stream_create_source() to create a GSource +that will be triggered when stream + is writable.

+

Note that since this method never blocks, you cannot actually +use cancellable + to cancel it. However, it will return an error +if cancellable + has already been cancelled when you call, which +may happen if you call this method after a source triggers due +to having been cancelled.

+

Virtual: write_nonblocking

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GPollableOutputStream

 

buffer

a buffer to write +data from.

[array length=count][element-type guint8]

count

the number of bytes you want to write

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

the number of bytes written, or -1 on error (including +G_IO_ERROR_WOULD_BLOCK).

+
+
+
+
+

Types and Values

+
+

GPollableOutputStream

+
typedef struct _GPollableOutputStream GPollableOutputStream;
+

An interface for a GOutputStream that can be polled for readability.

+

Since: 2.28

+
+
+
+

struct GPollableOutputStreamInterface

+
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);
+};
+
+

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.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface 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

 
+
+

Since: 2.28

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GPropertyAction.html b/docs/reference/gio/html/GPropertyAction.html new file mode 100644 index 0000000..0919974 --- /dev/null +++ b/docs/reference/gio/html/GPropertyAction.html @@ -0,0 +1,331 @@ + + + + +GPropertyAction: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GPropertyAction

+

GPropertyAction — A GAction reflecting a GObject property

+
+
+

Functions

+
++++ + + + + +
+GPropertyAction * + +g_property_action_new () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
gbooleanenabledRead
gbooleaninvert-booleanRead / Write / Construct Only
+gchar *nameRead / Write / Construct Only
+GObject *objectWrite / Construct Only
+GVariantType *parameter-typeRead
+gchar *property-nameWrite / Construct Only
+GVariant *stateRead
+GVariantType *state-typeRead
+
+
+

Types and Values

+
++++ + + + + +
 GPropertyAction
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GPropertyAction
+
+
+
+

Implemented Interfaces

+

+GPropertyAction implements + GAction.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A GPropertyAction is a way to get a GAction with a state value +reflecting and controlling the value of a GObject property.

+

The state of the action will correspond to the value of the property. +Changing it will change the property (assuming the requested value +matches the requirements as specified in the GParamSpec).

+

Only the most common types are presently supported. Booleans are +mapped to booleans, strings to strings, signed/unsigned integers to +int32/uint32 and floats and doubles to doubles.

+

If the property is an enum then the state will be string-typed and +conversion will automatically be performed between the enum value and +"nick" string as per the GEnumValue table.

+

Flags types are not currently supported.

+

Properties of object types, boxed types and pointer types are not +supported and probably never will be.

+

Properties of GVariant types are not currently supported.

+

If the property is boolean-valued then the action will have a NULL +parameter type, and activating the action (with no parameter) will +toggle the value of the property.

+

In all other cases, the parameter type will correspond to the type of +the property.

+

The general idea here is to reduce the number of locations where a +particular piece of state is kept (and therefore has to be synchronised +between). GPropertyAction does not have a separate state that is kept +in sync with the property value -- its state is the property value.

+

For example, it might be useful to create a GAction corresponding to +the "visible-child-name" property of a GtkStack so that the current +page can be switched from a menu. The active radio indication in the +menu is then directly determined from the active page of the +GtkStack.

+

An anti-example would be binding the "active-id" property on a +GtkComboBox. This is because the state of the combobox itself is +probably uninteresting and is actually being used to control +something else.

+

Another anti-example would be to bind to the "visible-child-name" +property of a GtkStack if this value is actually stored in +GSettings. In that case, the real source of the value is +GSettings. If you want a GAction to control a setting stored in +GSettings, see g_settings_create_action() instead, and possibly +combine its use with g_settings_bind().

+
+
+

Functions

+
+

g_property_action_new ()

+
GPropertyAction *
+g_property_action_new (const gchar *name,
+                       gpointer object,
+                       const gchar *property_name);
+

Creates a GAction corresponding to the value of property +property_name + on object +.

+

The property must be existent and readable and writable (and not +construct-only).

+

This function takes a reference on object + and doesn't release it +until the action is destroyed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

name

the name of the action to create

 

object

the object that has the property +to wrap.

[type GObject.Object]

property_name

the name of the property

 
+
+
+

Returns

+

a new GPropertyAction

+
+

Since: 2.38

+
+
+
+

Types and Values

+
+

GPropertyAction

+
typedef struct _GPropertyAction GPropertyAction;
+

This type is opaque.

+

Since: 2.38

+
+
+
+

Property Details

+
+

The “enabled” property

+
  “enabled”                  gboolean
+

If action + is currently enabled.

+

If the action is disabled then calls to g_action_activate() and +g_action_change_state() have no effect.

+

Flags: Read

+

Default value: TRUE

+

Since: 2.38

+
+
+
+

The “invert-boolean” property

+
  “invert-boolean”           gboolean
+

If TRUE, the state of the action will be the negation of the +property value, provided the property is boolean.

+

Flags: Read / Write / Construct Only

+

Default value: FALSE

+

Since: 2.46

+
+
+
+

The “name” property

+
  “name”                     gchar *
+

The name of the action. This is mostly meaningful for identifying +the action once it has been added to a GActionMap.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.38

+
+
+
+

The “object” property

+
  “object”                   GObject *
+

The object to wrap a property on.

+

The object must be a non-NULL GObject with properties.

+

Flags: Write / Construct Only

+

Since: 2.38

+
+
+
+

The “parameter-type” property

+
  “parameter-type”           GVariantType *
+

The type of the parameter that must be given when activating the +action.

+

Flags: Read

+

Since: 2.38

+
+
+
+

The “property-name” property

+
  “property-name”            gchar *
+

The name of the property to wrap on the object.

+

The property must exist on the passed-in object and it must be +readable and writable (and not construct-only).

+

Flags: Write / Construct Only

+

Default value: NULL

+

Since: 2.38

+
+
+
+

The “state” property

+
  “state”                    GVariant *
+

The state of the action, or NULL if the action is stateless.

+

Flags: Read

+

Allowed values: GVariant<*>

+

Default value: NULL

+

Since: 2.38

+
+
+
+

The “state-type” property

+
  “state-type”               GVariantType *
+

The GVariantType of the state that the action has, or NULL if the +action is stateless.

+

Flags: Read

+

Since: 2.38

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GProxy.html b/docs/reference/gio/html/GProxy.html new file mode 100644 index 0000000..c4377ef --- /dev/null +++ b/docs/reference/gio/html/GProxy.html @@ -0,0 +1,453 @@ + + + + +GProxy: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GProxy

+

GProxy — Interface for proxy handling

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+GIOStream * + +g_proxy_connect () +
+void + +g_proxy_connect_async () +
+GIOStream * + +g_proxy_connect_finish () +
+GProxy * + +g_proxy_get_default_for_protocol () +
+gboolean + +g_proxy_supports_hostname () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
 GProxy
structGProxyInterface
#defineG_PROXY_EXTENSION_POINT_NAME
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GProxy
+
+
+
+

Prerequisites

+

+GProxy requires + GObject.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A GProxy handles connecting to a remote host via a given type of +proxy server. It is implemented by the 'gio-proxy' extension point. +The extensions are named after their proxy protocol name. As an +example, a SOCKS5 proxy implementation can be retrieved with the +name 'socks5' using the function +g_io_extension_point_get_extension_by_name().

+
+
+

Functions

+
+

g_proxy_connect ()

+
GIOStream *
+g_proxy_connect (GProxy *proxy,
+                 GIOStream *connection,
+                 GProxyAddress *proxy_address,
+                 GCancellable *cancellable,
+                 GError **error);
+

Given connection + to communicate with a proxy (eg, a +GSocketConnection that is connected to the proxy server), this +does the necessary handshake to connect to proxy_address +, and if +required, wraps the GIOStream to handle proxy payload.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

proxy

a GProxy

 

connection

a GIOStream

 

proxy_address

a GProxyAddress

 

cancellable

a GCancellable.

[allow-none]

error

return GError

 
+
+
+

Returns

+

a GIOStream that will replace connection +. This might +be the same as connection +, in which case a reference +will be added.

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_proxy_connect_async ()

+
void
+g_proxy_connect_async (GProxy *proxy,
+                       GIOStream *connection,
+                       GProxyAddress *proxy_address,
+                       GCancellable *cancellable,
+                       GAsyncReadyCallback callback,
+                       gpointer user_data);
+

Asynchronous version of g_proxy_connect().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

proxy

a GProxy

 

connection

a GIOStream

 

proxy_address

a GProxyAddress

 

cancellable

a GCancellable.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

callback data.

[closure]
+
+

Since: 2.26

+
+
+
+

g_proxy_connect_finish ()

+
GIOStream *
+g_proxy_connect_finish (GProxy *proxy,
+                        GAsyncResult *result,
+                        GError **error);
+

See g_proxy_connect().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

proxy

a GProxy

 

result

a GAsyncResult

 

error

return GError

 
+
+
+

Returns

+

a GIOStream.

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_proxy_get_default_for_protocol ()

+
GProxy *
+g_proxy_get_default_for_protocol (const gchar *protocol);
+

Lookup "gio-proxy" extension point for a proxy implementation that supports +specified protocol.

+
+

Parameters

+
+++++ + + + + + +

protocol

the proxy protocol name (e.g. http, socks, etc)

 
+
+
+

Returns

+

return a GProxy or NULL if protocol +is not supported.

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_proxy_supports_hostname ()

+
gboolean
+g_proxy_supports_hostname (GProxy *proxy);
+

Some proxy protocols expect to be passed a hostname, which they +will resolve to an IP address themselves. Others, like SOCKS4, do +not allow this. This function will return FALSE if proxy + is +implementing such a protocol. When FALSE is returned, the caller +should resolve the destination hostname first, and then pass a +GProxyAddress containing the stringified IP address to +g_proxy_connect() or g_proxy_connect_async().

+
+

Parameters

+
+++++ + + + + + +

proxy

a GProxy

 
+
+
+

Returns

+

TRUE if hostname resolution is supported.

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GProxy

+
typedef struct _GProxy GProxy;
+

Interface that handles proxy connection and payload.

+

Since: 2.26

+
+
+
+

struct GProxyInterface

+
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);
+};
+
+

Provides an interface for handling proxy connection and payload.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface 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.

 
+
+

Since: 2.26

+
+
+
+

G_PROXY_EXTENSION_POINT_NAME

+
#define G_PROXY_EXTENSION_POINT_NAME "gio-proxy"
+
+

Extension point for proxy functionality. +See Extending GIO.

+

Since: 2.26

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GProxyAddress.html b/docs/reference/gio/html/GProxyAddress.html new file mode 100644 index 0000000..c85b47f --- /dev/null +++ b/docs/reference/gio/html/GProxyAddress.html @@ -0,0 +1,573 @@ + + + + +GProxyAddress: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GProxyAddress

+

GProxyAddress — An internet address with proxy information

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const gchar * + +g_proxy_address_get_destination_protocol () +
const gchar * + +g_proxy_address_get_destination_hostname () +
+guint16 + +g_proxy_address_get_destination_port () +
const gchar * + +g_proxy_address_get_password () +
const gchar * + +g_proxy_address_get_protocol () +
const gchar * + +g_proxy_address_get_username () +
const gchar * + +g_proxy_address_get_uri () +
+GSocketAddress * + +g_proxy_address_new () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gchar *destination-hostnameRead / Write / Construct Only
guintdestination-portRead / Write / Construct Only
+gchar *destination-protocolRead / Write / Construct Only
+gchar *passwordRead / Write / Construct Only
+gchar *protocolRead / Write / Construct Only
+gchar *uriRead / Write / Construct Only
+gchar *usernameRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GProxyAddress
structGProxyAddressClass
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSocketAddress
+        ╰── GInetSocketAddress
+            ╰── GProxyAddress
+
+
+
+

Implemented Interfaces

+

+GProxyAddress implements + GSocketConnectable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Support for proxied GInetSocketAddress.

+
+
+

Functions

+
+

g_proxy_address_get_destination_protocol ()

+
const gchar *
+g_proxy_address_get_destination_protocol
+                               (GProxyAddress *proxy);
+

Gets the protocol that is being spoken to the destination +server; eg, "http" or "ftp".

+
+

Parameters

+
+++++ + + + + + +

proxy

a GProxyAddress

 
+
+
+

Returns

+

the proxy +'s destination protocol

+
+

Since: 2.34

+
+
+
+

g_proxy_address_get_destination_hostname ()

+
const gchar *
+g_proxy_address_get_destination_hostname
+                               (GProxyAddress *proxy);
+

Gets proxy +'s destination hostname; that is, the name of the host +that will be connected to via the proxy, not the name of the proxy +itself.

+
+

Parameters

+
+++++ + + + + + +

proxy

a GProxyAddress

 
+
+
+

Returns

+

the proxy +'s destination hostname

+
+

Since: 2.26

+
+
+
+

g_proxy_address_get_destination_port ()

+
guint16
+g_proxy_address_get_destination_port (GProxyAddress *proxy);
+

Gets proxy +'s destination port; that is, the port on the +destination host that will be connected to via the proxy, not the +port number of the proxy itself.

+
+

Parameters

+
+++++ + + + + + +

proxy

a GProxyAddress

 
+
+
+

Returns

+

the proxy +'s destination port

+
+

Since: 2.26

+
+
+
+

g_proxy_address_get_password ()

+
const gchar *
+g_proxy_address_get_password (GProxyAddress *proxy);
+

Gets proxy +'s password.

+
+

Parameters

+
+++++ + + + + + +

proxy

a GProxyAddress

 
+
+
+

Returns

+

the proxy +'s password

+
+

Since: 2.26

+
+
+
+

g_proxy_address_get_protocol ()

+
const gchar *
+g_proxy_address_get_protocol (GProxyAddress *proxy);
+

Gets proxy +'s protocol. eg, "socks" or "http"

+
+

Parameters

+
+++++ + + + + + +

proxy

a GProxyAddress

 
+
+
+

Returns

+

the proxy +'s protocol

+
+

Since: 2.26

+
+
+
+

g_proxy_address_get_username ()

+
const gchar *
+g_proxy_address_get_username (GProxyAddress *proxy);
+

Gets proxy +'s username.

+
+

Parameters

+
+++++ + + + + + +

proxy

a GProxyAddress

 
+
+
+

Returns

+

the proxy +'s username

+
+

Since: 2.26

+
+
+
+

g_proxy_address_get_uri ()

+
const gchar *
+g_proxy_address_get_uri (GProxyAddress *proxy);
+

Gets the proxy URI that proxy + was constructed from.

+
+

Parameters

+
+++++ + + + + + +

proxy

a GProxyAddress

 
+
+
+

Returns

+

the proxy +'s URI, or NULL if unknown

+
+

Since: 2.34

+
+
+
+

g_proxy_address_new ()

+
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);
+

Creates a new GProxyAddress for inetaddr + with protocol + that should +tunnel through dest_hostname + and dest_port +.

+

(Note that this method doesn't set the “uri” or +“destination-protocol” fields; use g_object_new() +directly if you want to set those.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

inetaddr

The proxy server GInetAddress.

 

port

The proxy server port.

 

protocol

The proxy protocol to support, in lower case (e.g. socks, http).

 

dest_hostname

The destination hostname the proxy should tunnel to.

 

dest_port

The destination port to tunnel to.

 

username

The username to authenticate to the proxy server +(or NULL).

[allow-none]

password

The password to authenticate to the proxy server +(or NULL).

[allow-none]
+
+
+

Returns

+

a new GProxyAddress

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GProxyAddress

+
typedef struct _GProxyAddress GProxyAddress;
+

A GInetSocketAddress representing a connection via a proxy server

+

Since: 2.26

+
+
+
+

struct GProxyAddressClass

+
struct GProxyAddressClass {
+  GInetSocketAddressClass parent_class;
+};
+
+

Class structure for GProxyAddress.

+

Since: 2.26

+
+
+
+

Property Details

+
+

The “destination-hostname” property

+
  “destination-hostname”     gchar *
+

The proxy destination hostname.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+

The “destination-port” property

+
  “destination-port”         guint
+

The proxy destination port.

+

Flags: Read / Write / Construct Only

+

Allowed values: <= 65535

+

Default value: 0

+
+
+
+

The “destination-protocol” property

+
  “destination-protocol”     gchar *
+

The protocol being spoke to the destination host, or NULL if +the GProxyAddress doesn't know.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.34

+
+
+
+

The “password” property

+
  “password”                 gchar *
+

The proxy password.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+

The “protocol” property

+
  “protocol”                 gchar *
+

The proxy protocol.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+

The “uri” property

+
  “uri”                      gchar *
+

The URI string that the proxy was constructed from (or NULL +if the creator didn't specify this).

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.34

+
+
+
+

The “username” property

+
  “username”                 gchar *
+

The proxy username.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GProxyResolver.html b/docs/reference/gio/html/GProxyResolver.html new file mode 100644 index 0000000..13f6a66 --- /dev/null +++ b/docs/reference/gio/html/GProxyResolver.html @@ -0,0 +1,433 @@ + + + + +GProxyResolver: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GProxyResolver

+

GProxyResolver — Asynchronous and cancellable network proxy resolver

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+GProxyResolver * + +g_proxy_resolver_get_default () +
+gboolean + +g_proxy_resolver_is_supported () +
+gchar ** + +g_proxy_resolver_lookup () +
+void + +g_proxy_resolver_lookup_async () +
+gchar ** + +g_proxy_resolver_lookup_finish () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
 GProxyResolver
structGProxyResolverInterface
#defineG_PROXY_RESOLVER_EXTENSION_POINT_NAME
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GProxyResolver
+
+
+
+

Prerequisites

+

+GProxyResolver requires + GObject.

+
+
+

Known Implementations

+

+GProxyResolver is implemented by + GSimpleProxyResolver.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GProxyResolver provides synchronous and asynchronous network proxy +resolution. GProxyResolver is used within GSocketClient through +the method g_socket_connectable_proxy_enumerate().

+
+
+

Functions

+
+

g_proxy_resolver_get_default ()

+
GProxyResolver *
+g_proxy_resolver_get_default (void);
+

Gets the default GProxyResolver for the system.

+
+

Returns

+

the default GProxyResolver.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_proxy_resolver_is_supported ()

+
gboolean
+g_proxy_resolver_is_supported (GProxyResolver *resolver);
+

Checks if resolver + can be used on this system. (This is used +internally; g_proxy_resolver_get_default() will only return a proxy +resolver that returns TRUE for this method.)

+
+

Parameters

+
+++++ + + + + + +

resolver

a GProxyResolver

 
+
+
+

Returns

+

TRUE if resolver +is supported.

+
+

Since: 2.26

+
+
+
+

g_proxy_resolver_lookup ()

+
gchar **
+g_proxy_resolver_lookup (GProxyResolver *resolver,
+                         const gchar *uri,
+                         GCancellable *cancellable,
+                         GError **error);
+

Looks into the system proxy configuration to determine what proxy, +if any, to use to connect to uri +. The returned proxy URIs are of +the form <protocol>://[user[:password]@]host:port or +direct://, where <protocol> could be http, rtsp, socks +or other proxying protocol.

+

If you don't know what network protocol is being used on the +socket, you should use none as the URI protocol. +In this case, the resolver might still return a generic proxy type +(such as SOCKS), but would not return protocol-specific proxy types +(such as http).

+

direct:// is used when no proxy is needed. +Direct connection should not be attempted unless it is part of the +returned array of proxies.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

resolver

a GProxyResolver

 

uri

a URI representing the destination to connect to

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

A +NULL-terminated array of proxy URIs. Must be freed +with g_strfreev().

+

[transfer full][array zero-terminated=1]

+
+

Since: 2.26

+
+
+
+

g_proxy_resolver_lookup_async ()

+
void
+g_proxy_resolver_lookup_async (GProxyResolver *resolver,
+                               const gchar *uri,
+                               GCancellable *cancellable,
+                               GAsyncReadyCallback callback,
+                               gpointer user_data);
+

Asynchronous lookup of proxy. See g_proxy_resolver_lookup() for more +details.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

resolver

a GProxyResolver

 

uri

a URI representing the destination to connect to

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

callback to call after resolution completes.

[scope async]

user_data

data for callback +.

[closure]
+
+

Since: 2.26

+
+
+
+

g_proxy_resolver_lookup_finish ()

+
gchar **
+g_proxy_resolver_lookup_finish (GProxyResolver *resolver,
+                                GAsyncResult *result,
+                                GError **error);
+

Call this function to obtain the array of proxy URIs when +g_proxy_resolver_lookup_async() is complete. See +g_proxy_resolver_lookup() for more details.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

resolver

a GProxyResolver

 

result

the result passed to your GAsyncReadyCallback

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

A +NULL-terminated array of proxy URIs. Must be freed +with g_strfreev().

+

[transfer full][array zero-terminated=1]

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GProxyResolver

+
typedef struct _GProxyResolver GProxyResolver;
+

A helper class to enumerate proxies base on URI.

+

Since: 2.26

+
+
+
+

struct 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);
+};
+
+

The virtual function table for GProxyResolver.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

The parent interface.

 

is_supported ()

the virtual function pointer for g_proxy_resolver_is_supported()

 

lookup ()

the virtual function pointer for g_proxy_resolver_lookup()

 

lookup_async ()

the virtual function pointer for +g_proxy_resolver_lookup_async()

 

lookup_finish ()

the virtual function pointer for +g_proxy_resolver_lookup_finish()

 
+
+
+
+
+

G_PROXY_RESOLVER_EXTENSION_POINT_NAME

+
#define G_PROXY_RESOLVER_EXTENSION_POINT_NAME "gio-proxy-resolver"
+
+

Extension point for proxy resolving functionality. +See Extending GIO.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GRemoteActionGroup.html b/docs/reference/gio/html/GRemoteActionGroup.html new file mode 100644 index 0000000..91fbb00 --- /dev/null +++ b/docs/reference/gio/html/GRemoteActionGroup.html @@ -0,0 +1,291 @@ + + + + +GRemoteActionGroup: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GRemoteActionGroup

+

GRemoteActionGroup — A GActionGroup that interacts with other processes

+
+
+

Functions

+
++++ + + + + + + + + + + +
+void + +g_remote_action_group_activate_action_full () +
+void + +g_remote_action_group_change_action_state_full () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GRemoteActionGroup
structGRemoteActionGroupInterface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GRemoteActionGroup
+
+
+
+

Prerequisites

+

+GRemoteActionGroup requires + GActionGroup and GObject.

+
+
+

Known Implementations

+

+GRemoteActionGroup is implemented by + GDBusActionGroup.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

The GRemoteActionGroup interface is implemented by GActionGroup +instances that either transmit action invocations to other processes +or receive action invocations in the local process from other +processes.

+

The interface has _full variants of the two +methods on GActionGroup used to activate actions: +g_action_group_activate_action() and +g_action_group_change_action_state(). These variants allow a +"platform data" GVariant to be specified: a dictionary providing +context for the action invocation (for example: timestamps, startup +notification IDs, etc).

+

GDBusActionGroup implements GRemoteActionGroup. This provides a +mechanism to send platform data for action invocations over D-Bus.

+

Additionally, g_dbus_connection_export_action_group() will check if +the exported GActionGroup implements GRemoteActionGroup and use the +_full variants of the calls if available. This +provides a mechanism by which to receive platform data for action +invocations that arrive by way of D-Bus.

+
+
+

Functions

+
+

g_remote_action_group_activate_action_full ()

+
void
+g_remote_action_group_activate_action_full
+                               (GRemoteActionGroup *remote,
+                                const gchar *action_name,
+                                GVariant *parameter,
+                                GVariant *platform_data);
+

Activates the remote action.

+

This is the same as g_action_group_activate_action() except that it +allows for provision of "platform data" to be sent along with the +activation request. This typically contains details such as the user +interaction timestamp or startup notification information.

+

platform_data + must be non-NULL and must have the type +G_VARIANT_TYPE_VARDICT. If it is floating, it will be consumed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

remote

a GDBusActionGroup

 

action_name

the name of the action to activate

 

parameter

the optional parameter to the activation.

[allow-none]

platform_data

the platform data to send

 
+
+

Since: 2.32

+
+
+
+

g_remote_action_group_change_action_state_full ()

+
void
+g_remote_action_group_change_action_state_full
+                               (GRemoteActionGroup *remote,
+                                const gchar *action_name,
+                                GVariant *value,
+                                GVariant *platform_data);
+

Changes the state of a remote action.

+

This is the same as g_action_group_change_action_state() except that +it allows for provision of "platform data" to be sent along with the +state change request. This typically contains details such as the +user interaction timestamp or startup notification information.

+

platform_data + must be non-NULL and must have the type +G_VARIANT_TYPE_VARDICT. If it is floating, it will be consumed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

remote

a GRemoteActionGroup

 

action_name

the name of the action to change the state of

 

value

the new requested value for the state

 

platform_data

the platform data to send

 
+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

GRemoteActionGroup

+
typedef struct _GRemoteActionGroup GRemoteActionGroup;
+

GRemoteActionGroup is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

struct 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);
+};
+
+

The virtual function table for GRemoteActionGroup.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

  

activate_action_full ()

the virtual function pointer for g_remote_action_group_activate_action_full()

 

change_action_state_full ()

the virtual function pointer for g_remote_action_group_change_action_state_full()

 
+
+

Since: 2.32

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GResolver.html b/docs/reference/gio/html/GResolver.html new file mode 100644 index 0000000..a52b6db --- /dev/null +++ b/docs/reference/gio/html/GResolver.html @@ -0,0 +1,1245 @@ + + + + +GResolver: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GResolver

+

GResolver — Asynchronous and cancellable DNS resolver

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GResolver * + +g_resolver_get_default () +
+void + +g_resolver_set_default () +
+GList * + +g_resolver_lookup_by_name () +
+void + +g_resolver_lookup_by_name_async () +
+GList * + +g_resolver_lookup_by_name_finish () +
+void + +g_resolver_free_addresses () +
+gchar * + +g_resolver_lookup_by_address () +
+void + +g_resolver_lookup_by_address_async () +
+gchar * + +g_resolver_lookup_by_address_finish () +
+GList * + +g_resolver_lookup_service () +
+void + +g_resolver_lookup_service_async () +
+GList * + +g_resolver_lookup_service_finish () +
+void + +g_resolver_free_targets () +
+GList * + +g_resolver_lookup_records () +
+void + +g_resolver_lookup_records_async () +
+GList * + +g_resolver_lookup_records_finish () +
#defineG_RESOLVER_ERROR
+
+
+

Signals

+
+++++ + + + + + +
voidreloadRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
 GResolver
enumGResolverRecordType
enumGResolverError
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GResolver
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GResolver provides cancellable synchronous and asynchronous DNS +resolution, for hostnames (g_resolver_lookup_by_address(), +g_resolver_lookup_by_name() and their async variants) and SRV +(service) records (g_resolver_lookup_service()).

+

GNetworkAddress and GNetworkService provide wrappers around +GResolver functionality that also implement GSocketConnectable, +making it easy to connect to a remote host/service.

+
+
+

Functions

+
+

g_resolver_get_default ()

+
GResolver *
+g_resolver_get_default (void);
+

Gets the default GResolver. You should unref it when you are done +with it. GResolver may use its reference count as a hint about how +many threads it should allocate for concurrent DNS resolutions.

+
+

Returns

+

the default GResolver.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_resolver_set_default ()

+
void
+g_resolver_set_default (GResolver *resolver);
+

Sets resolver + to be the application's default resolver (reffing +resolver +, and unreffing the previous default resolver, if any). +Future calls to g_resolver_get_default() will return this resolver.

+

This can be used if an application wants to perform any sort of DNS +caching or "pinning"; it can implement its own GResolver that +calls the original default resolver for DNS operations, and +implements its own cache policies on top of that, and then set +itself as the default resolver for all later code to use.

+
+

Parameters

+
+++++ + + + + + +

resolver

the new default GResolver

 
+
+

Since: 2.22

+
+
+
+

g_resolver_lookup_by_name ()

+
GList *
+g_resolver_lookup_by_name (GResolver *resolver,
+                           const gchar *hostname,
+                           GCancellable *cancellable,
+                           GError **error);
+

Synchronously resolves hostname + to determine its associated IP +address(es). hostname + may be an ASCII-only or UTF-8 hostname, or +the textual form of an IP address (in which case this just becomes +a wrapper around g_inet_address_new_from_string()).

+

On success, g_resolver_lookup_by_name() will return a non-empty GList of +GInetAddress, sorted in order of preference and guaranteed to not +contain duplicates. That is, if using the result to connect to +hostname +, you should attempt to connect to the first address +first, then the second if the first fails, etc. If you are using +the result to listen on a socket, it is appropriate to add each +result using e.g. g_socket_listener_add_address().

+

If the DNS resolution fails, error + (if non-NULL) will be set to a +value from GResolverError and NULL will be returned.

+

If cancellable + is non-NULL, it can be used to cancel the +operation, in which case error + (if non-NULL) will be set to +G_IO_ERROR_CANCELLED.

+

If you are planning to connect to a socket on the resolved IP +address, it may be easier to create a GNetworkAddress and use its +GSocketConnectable interface.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

resolver

a GResolver

 

hostname

the hostname to look up

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a non-empty GList +of GInetAddress, or NULL on error. You +must unref each of the addresses and free the list when you are +done with it. (You can use g_resolver_free_addresses() to do this.).

+

[element-type GInetAddress][transfer full]

+
+

Since: 2.22

+
+
+
+

g_resolver_lookup_by_name_async ()

+
void
+g_resolver_lookup_by_name_async (GResolver *resolver,
+                                 const gchar *hostname,
+                                 GCancellable *cancellable,
+                                 GAsyncReadyCallback callback,
+                                 gpointer user_data);
+

Begins asynchronously resolving hostname + to determine its +associated IP address(es), and eventually calls callback +, which +must call g_resolver_lookup_by_name_finish() to get the result. +See g_resolver_lookup_by_name() for more details.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

resolver

a GResolver

 

hostname

the hostname to look up the address of

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

callback to call after resolution completes.

[scope async]

user_data

data for callback +.

[closure]
+
+

Since: 2.22

+
+
+
+

g_resolver_lookup_by_name_finish ()

+
GList *
+g_resolver_lookup_by_name_finish (GResolver *resolver,
+                                  GAsyncResult *result,
+                                  GError **error);
+

Retrieves the result of a call to +g_resolver_lookup_by_name_async().

+

If the DNS resolution failed, error + (if non-NULL) will be set to +a value from GResolverError. If the operation was cancelled, +error + will be set to G_IO_ERROR_CANCELLED.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

resolver

a GResolver

 

result

the result passed to your GAsyncReadyCallback

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a GList +of GInetAddress, or NULL on error. See g_resolver_lookup_by_name() +for more details.

+

[element-type GInetAddress][transfer full]

+
+

Since: 2.22

+
+
+
+

g_resolver_free_addresses ()

+
void
+g_resolver_free_addresses (GList *addresses);
+

Frees addresses + (which should be the return value from +g_resolver_lookup_by_name() or g_resolver_lookup_by_name_finish()). +(This is a convenience method; you can also simply free the results +by hand.)

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

addresses

a GList of GInetAddress

 
+
+

Since: 2.22

+
+
+
+

g_resolver_lookup_by_address ()

+
gchar *
+g_resolver_lookup_by_address (GResolver *resolver,
+                              GInetAddress *address,
+                              GCancellable *cancellable,
+                              GError **error);
+

Synchronously reverse-resolves address + to determine its +associated hostname.

+

If the DNS resolution fails, error + (if non-NULL) will be set to +a value from GResolverError.

+

If cancellable + is non-NULL, it can be used to cancel the +operation, in which case error + (if non-NULL) will be set to +G_IO_ERROR_CANCELLED.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

resolver

a GResolver

 

address

the address to reverse-resolve

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a hostname (either ASCII-only, or in ASCII-encoded +form), or NULL on error.

+
+

Since: 2.22

+
+
+
+

g_resolver_lookup_by_address_async ()

+
void
+g_resolver_lookup_by_address_async (GResolver *resolver,
+                                    GInetAddress *address,
+                                    GCancellable *cancellable,
+                                    GAsyncReadyCallback callback,
+                                    gpointer user_data);
+

Begins asynchronously reverse-resolving address + to determine its +associated hostname, and eventually calls callback +, which must +call g_resolver_lookup_by_address_finish() to get the final result.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

resolver

a GResolver

 

address

the address to reverse-resolve

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

callback to call after resolution completes.

[scope async]

user_data

data for callback +.

[closure]
+
+

Since: 2.22

+
+
+
+

g_resolver_lookup_by_address_finish ()

+
gchar *
+g_resolver_lookup_by_address_finish (GResolver *resolver,
+                                     GAsyncResult *result,
+                                     GError **error);
+

Retrieves the result of a previous call to +g_resolver_lookup_by_address_async().

+

If the DNS resolution failed, error + (if non-NULL) will be set to +a value from GResolverError. If the operation was cancelled, +error + will be set to G_IO_ERROR_CANCELLED.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

resolver

a GResolver

 

result

the result passed to your GAsyncReadyCallback

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a hostname (either ASCII-only, or in ASCII-encoded +form), or NULL on error.

+
+

Since: 2.22

+
+
+
+

g_resolver_lookup_service ()

+
GList *
+g_resolver_lookup_service (GResolver *resolver,
+                           const gchar *service,
+                           const gchar *protocol,
+                           const gchar *domain,
+                           GCancellable *cancellable,
+                           GError **error);
+

Synchronously performs a DNS SRV lookup for the given service + and +protocol + in the given domain + and returns an array of GSrvTarget. +domain + may be an ASCII-only or UTF-8 hostname. Note also that the +service + and protocol + arguments do not include the leading underscore +that appears in the actual DNS entry.

+

On success, g_resolver_lookup_service() will return a non-empty GList of +GSrvTarget, sorted in order of preference. (That is, you should +attempt to connect to the first target first, then the second if +the first fails, etc.)

+

If the DNS resolution fails, error + (if non-NULL) will be set to +a value from GResolverError and NULL will be returned.

+

If cancellable + is non-NULL, it can be used to cancel the +operation, in which case error + (if non-NULL) will be set to +G_IO_ERROR_CANCELLED.

+

If you are planning to connect to the service, it is usually easier +to create a GNetworkService and use its GSocketConnectable +interface.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

resolver

a GResolver

 

service

the service type to look up (eg, "ldap")

 

protocol

the networking protocol to use for service +(eg, "tcp")

 

domain

the DNS domain to look up the service in

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a non-empty GList of +GSrvTarget, or NULL on error. You must free each of the targets and the +list when you are done with it. (You can use g_resolver_free_targets() to do +this.).

+

[element-type GSrvTarget][transfer full]

+
+

Since: 2.22

+
+
+
+

g_resolver_lookup_service_async ()

+
void
+g_resolver_lookup_service_async (GResolver *resolver,
+                                 const gchar *service,
+                                 const gchar *protocol,
+                                 const gchar *domain,
+                                 GCancellable *cancellable,
+                                 GAsyncReadyCallback callback,
+                                 gpointer user_data);
+

Begins asynchronously performing a DNS SRV lookup for the given +service + and protocol + in the given domain +, and eventually calls +callback +, which must call g_resolver_lookup_service_finish() to +get the final result. See g_resolver_lookup_service() for more +details.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

resolver

a GResolver

 

service

the service type to look up (eg, "ldap")

 

protocol

the networking protocol to use for service +(eg, "tcp")

 

domain

the DNS domain to look up the service in

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

callback to call after resolution completes.

[scope async]

user_data

data for callback +.

[closure]
+
+

Since: 2.22

+
+
+
+

g_resolver_lookup_service_finish ()

+
GList *
+g_resolver_lookup_service_finish (GResolver *resolver,
+                                  GAsyncResult *result,
+                                  GError **error);
+

Retrieves the result of a previous call to +g_resolver_lookup_service_async().

+

If the DNS resolution failed, error + (if non-NULL) will be set to +a value from GResolverError. If the operation was cancelled, +error + will be set to G_IO_ERROR_CANCELLED.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

resolver

a GResolver

 

result

the result passed to your GAsyncReadyCallback

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a non-empty GList of +GSrvTarget, or NULL on error. See g_resolver_lookup_service() for more +details.

+

[element-type GSrvTarget][transfer full]

+
+

Since: 2.22

+
+
+
+

g_resolver_free_targets ()

+
void
+g_resolver_free_targets (GList *targets);
+

Frees targets + (which should be the return value from +g_resolver_lookup_service() or g_resolver_lookup_service_finish()). +(This is a convenience method; you can also simply free the +results by hand.)

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

targets

a GList of GSrvTarget

 
+
+

Since: 2.22

+
+
+
+

g_resolver_lookup_records ()

+
GList *
+g_resolver_lookup_records (GResolver *resolver,
+                           const gchar *rrname,
+                           GResolverRecordType record_type,
+                           GCancellable *cancellable,
+                           GError **error);
+

Synchronously performs a DNS record lookup for the given rrname + and returns +a list of records as GVariant tuples. See GResolverRecordType for +information on what the records contain for each record_type +.

+

If the DNS resolution fails, error + (if non-NULL) will be set to +a value from GResolverError and NULL will be returned.

+

If cancellable + is non-NULL, it can be used to cancel the +operation, in which case error + (if non-NULL) will be set to +G_IO_ERROR_CANCELLED.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

resolver

a GResolver

 

rrname

the DNS name to lookup the record for

 

record_type

the type of DNS record to lookup

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a non-empty GList of +GVariant, or NULL on error. You must free each of the records and the list +when you are done with it. (You can use g_list_free_full() with +g_variant_unref() to do this.).

+

[element-type GVariant][transfer full]

+
+

Since: 2.34

+
+
+
+

g_resolver_lookup_records_async ()

+
void
+g_resolver_lookup_records_async (GResolver *resolver,
+                                 const gchar *rrname,
+                                 GResolverRecordType record_type,
+                                 GCancellable *cancellable,
+                                 GAsyncReadyCallback callback,
+                                 gpointer user_data);
+

Begins asynchronously performing a DNS lookup for the given +rrname +, and eventually calls callback +, which must call +g_resolver_lookup_records_finish() to get the final result. See +g_resolver_lookup_records() for more details.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

resolver

a GResolver

 

rrname

the DNS name to lookup the record for

 

record_type

the type of DNS record to lookup

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

callback to call after resolution completes.

[scope async]

user_data

data for callback +.

[closure]
+
+

Since: 2.34

+
+
+
+

g_resolver_lookup_records_finish ()

+
GList *
+g_resolver_lookup_records_finish (GResolver *resolver,
+                                  GAsyncResult *result,
+                                  GError **error);
+

Retrieves the result of a previous call to +g_resolver_lookup_records_async(). Returns a non-empty list of records as +GVariant tuples. See GResolverRecordType for information on what the +records contain.

+

If the DNS resolution failed, error + (if non-NULL) will be set to +a value from GResolverError. If the operation was cancelled, +error + will be set to G_IO_ERROR_CANCELLED.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

resolver

a GResolver

 

result

the result passed to your GAsyncReadyCallback

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a non-empty GList of +GVariant, or NULL on error. You must free each of the records and the list +when you are done with it. (You can use g_list_free_full() with +g_variant_unref() to do this.).

+

[element-type GVariant][transfer full]

+
+

Since: 2.34

+
+
+
+

G_RESOLVER_ERROR

+
#define G_RESOLVER_ERROR (g_resolver_error_quark ())
+
+

Error domain for GResolver. Errors in this domain will be from the +GResolverError enumeration. See GError for more information on +error domains.

+
+
+
+

Types and Values

+
+

GResolver

+
typedef struct _GResolver GResolver;
+

The object that handles DNS resolution. Use g_resolver_get_default() +to get the default resolver.

+
+
+
+

enum GResolverRecordType

+

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.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

+
 
+
+

Since: 2.34

+
+
+
+

enum GResolverError

+

An error code used with G_RESOLVER_ERROR in a GError returned +from a GResolver routine.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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

+
 
+
+

Since: 2.22

+
+
+
+

Signal Details

+
+

The “reload” signal

+
void
+user_function (GResolver *resolver,
+               gpointer   user_data)
+

Emitted when the resolver notices that the system resolver +configuration has changed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

resolver

a GResolver

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GResource.html b/docs/reference/gio/html/GResource.html new file mode 100644 index 0000000..5fadb67 --- /dev/null +++ b/docs/reference/gio/html/GResource.html @@ -0,0 +1,1166 @@ + + + + +GResource: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GResource

+

GResource — Resource framework

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GResource * + +g_resource_load () +
+GResource * + +g_resource_new_from_data () +
+GResource * + +g_resource_ref () +
+void + +g_resource_unref () +
+GBytes * + +g_resource_lookup_data () +
+GInputStream * + +g_resource_open_stream () +
+char ** + +g_resource_enumerate_children () +
+gboolean + +g_resource_get_info () +
+void + +g_static_resource_init () +
+void + +g_static_resource_fini () +
+GResource * + +g_static_resource_get_resource () +
+void + +g_resources_register () +
+void + +g_resources_unregister () +
+GBytes * + +g_resources_lookup_data () +
+GInputStream * + +g_resources_open_stream () +
+char ** + +g_resources_enumerate_children () +
+gboolean + +g_resources_get_info () +
#defineG_RESOURCE_ERROR
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
 GResource
enumGResourceFlags
enumGResourceLookupFlags
structGStaticResource
enumGResourceError
+
+
+

Object Hierarchy

+
    GBoxed
+    ╰── GResource
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Applications and libraries often contain binary or textual data that is +really part of the application, rather than user data. For instance +GtkBuilder .ui files, splashscreen images, GMenu markup XML, CSS files, +icons, etc. These are often shipped as files in $datadir/appname, or +manually included as literal strings in the code.

+

The GResource API and the glib-compile-resources program +provide a convenient and efficient alternative to this which has some nice properties. You +maintain the files as normal files, so its easy to edit them, but during the build the files +are combined into a binary bundle that is linked into the executable. This means that loading +the resource files are efficient (as they are already in memory, shared with other instances) and +simple (no need to check for things like I/O errors or locate the files in the filesystem). It +also makes it easier to create relocatable applications.

+

Resource files can also be marked as compressed. Such files will be included in the resource bundle +in a compressed form, but will be automatically uncompressed when the resource is used. This +is very useful e.g. for larger text files that are parsed once (or rarely) and then thrown away.

+

Resource files can also be marked to be preprocessed, by setting the value of the +preprocess attribute to a comma-separated list of preprocessing options. +The only options currently supported are:

+

xml-stripblanks which will use the xmllint command +to strip ignorable whitespace from the XML file. For this to work, +the XMLLINT environment variable must be set to the full path to +the xmllint executable, or xmllint must be in the PATH; otherwise +the preprocessing step is skipped.

+

to-pixdata which will use the gdk-pixbuf-pixdata command to convert +images to the GdkPixdata format, which allows you to create pixbufs directly using the data inside +the resource file, rather than an (uncompressed) copy if it. For this, the gdk-pixbuf-pixdata +program must be in the PATH, or the GDK_PIXBUF_PIXDATA environment variable must be +set to the full path to the gdk-pixbuf-pixdata executable; otherwise the resource compiler will +abort.

+

Resource bundles are created by the glib-compile-resources program +which takes an XML file that describes the bundle, and a set of files that the XML references. These +are combined into a binary resource bundle.

+

An example resource description:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+  <gresource prefix="/org/gtk/Example">
+    <file>data/splashscreen.png</file>
+    <file compressed="true">dialog.ui</file>
+    <file preprocess="xml-stripblanks">menumarkup.xml</file>
+  </gresource>
+</gresources>
+
+ +

+

This will create a resource bundle with the following files:

+
+ + + + + + + +
1
+2
+3
/org/gtk/Example/data/splashscreen.png
+/org/gtk/Example/dialog.ui
+/org/gtk/Example/menumarkup.xml
+
+ +

+

Note that all resources in the process share the same namespace, so use Java-style +path prefixes (like in the above example) to avoid conflicts.

+

You can then use glib-compile-resources to compile the XML to a +binary bundle that you can load with g_resource_load(). However, its more common to use the --generate-source and +--generate-header arguments to create a source file and header to link directly into your application. +This will generate get_resource(), register_resource() and +unregister_resource() functions, prefixed by the --c-name argument passed +to glib-compile-resources. get_resource() returns +the generated GResource object. The register and unregister functions +register the resource so its files can be accessed using +g_resources_lookup_data().

+

Once a GResource has been created and registered all the data in it can be accessed globally in the process by +using API calls like g_resources_open_stream() to stream the data or g_resources_lookup_data() to get a direct pointer +to the data. You can also use URIs like "resource:///org/gtk/Example/data/splashscreen.png" with GFile to access +the resource data.

+

There are two forms of the generated source, the default version uses the compiler support for constructor +and destructor functions (where available) to automatically create and register the GResource on startup +or library load time. If you pass --manual-register two functions to register/unregister the resource is instead +created. This requires an explicit initialization call in your application/library, but it works on all platforms, +even on the minor ones where this is not available. (Constructor support is available for at least Win32, Mac OS and Linux.)

+

Note that resource data can point directly into the data segment of e.g. a library, so if you are unloading libraries +during runtime you need to be very careful with keeping around pointers to data from a resource, as this goes away +when the library is unloaded. However, in practice this is not generally a problem, since most resource accesses +is for your own resources, and resource data is often used once, during parsing, and then released.

+
+
+

Functions

+
+

g_resource_load ()

+
GResource *
+g_resource_load (const gchar *filename,
+                 GError **error);
+

Loads a binary resource bundle and creates a GResource representation of it, allowing +you to query it for data.

+

If you want to use this resource in the global resource namespace you need +to register it with g_resources_register().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

filename

the path of a filename to load, in the GLib filename encoding.

[type filename]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a new GResource, or NULL on error.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_resource_new_from_data ()

+
GResource *
+g_resource_new_from_data (GBytes *data,
+                          GError **error);
+

Creates a GResource from a reference to the binary resource bundle. +This will keep a reference to data + while the resource lives, so +the data should not be modified or freed.

+

If you want to use this resource in the global resource namespace you need +to register it with g_resources_register().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

data

A GBytes

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a new GResource, or NULL on error.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_resource_ref ()

+
GResource *
+g_resource_ref (GResource *resource);
+

Atomically increments the reference count of resource + by one. This +function is MT-safe and may be called from any thread.

+
+

Parameters

+
+++++ + + + + + +

resource

A GResource

 
+
+
+

Returns

+

The passed in GResource

+
+

Since: 2.32

+
+
+
+

g_resource_unref ()

+
void
+g_resource_unref (GResource *resource);
+

Atomically decrements the reference count of resource + by one. If the +reference count drops to 0, all memory allocated by the resource is +released. This function is MT-safe and may be called from any +thread.

+
+

Parameters

+
+++++ + + + + + +

resource

A GResource

 
+
+

Since: 2.32

+
+
+
+

g_resource_lookup_data ()

+
GBytes *
+g_resource_lookup_data (GResource *resource,
+                        const char *path,
+                        GResourceLookupFlags lookup_flags,
+                        GError **error);
+

Looks for a file at the specified path + in the resource and +returns a GBytes that lets you directly access the data in +memory.

+

The data is always followed by a zero byte, so you +can safely use the data as a C string. However, that byte +is not included in the size of the GBytes.

+

For uncompressed resource files this is a pointer directly into +the resource bundle, which is typically in some readonly data section +in the program binary. For compressed files we allocate memory on +the heap and automatically uncompress the data.

+

lookup_flags + controls the behaviour of the lookup.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

resource

A GResource

 

path

A pathname inside the resource

 

lookup_flags

A GResourceLookupFlags

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

GBytes or NULL on error. +Free the returned object with g_bytes_unref().

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_resource_open_stream ()

+
GInputStream *
+g_resource_open_stream (GResource *resource,
+                        const char *path,
+                        GResourceLookupFlags lookup_flags,
+                        GError **error);
+

Looks for a file at the specified path + in the resource and +returns a GInputStream that lets you read the data.

+

lookup_flags + controls the behaviour of the lookup.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

resource

A GResource

 

path

A pathname inside the resource

 

lookup_flags

A GResourceLookupFlags

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

GInputStream or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_resource_enumerate_children ()

+
char **
+g_resource_enumerate_children (GResource *resource,
+                               const char *path,
+                               GResourceLookupFlags lookup_flags,
+                               GError **error);
+

Returns all the names of children at the specified path + in the resource. +The return result is a NULL terminated list of strings which should +be released with g_strfreev().

+

If path + is invalid or does not exist in the GResource, +G_RESOURCE_ERROR_NOT_FOUND will be returned.

+

lookup_flags + controls the behaviour of the lookup.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

resource

A GResource

 

path

A pathname inside the resource

 

lookup_flags

A GResourceLookupFlags

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

an array of constant strings.

+

[array zero-terminated=1][transfer full]

+
+

Since: 2.32

+
+
+
+

g_resource_get_info ()

+
gboolean
+g_resource_get_info (GResource *resource,
+                     const char *path,
+                     GResourceLookupFlags lookup_flags,
+                     gsize *size,
+                     guint32 *flags,
+                     GError **error);
+

Looks for a file at the specified path + in the resource and +if found returns information about it.

+

lookup_flags + controls the behaviour of the lookup.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

resource

A GResource

 

path

A pathname inside the resource

 

lookup_flags

A GResourceLookupFlags

 

size

a location to place the length of the contents of the file, +or NULL if the length is not needed.

[out][allow-none]

flags

a location to place the flags about the file, +or NULL if the length is not needed.

[out][allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE if the file was found. FALSE if there were errors

+
+

Since: 2.32

+
+
+
+

g_static_resource_init ()

+
void
+g_static_resource_init (GStaticResource *static_resource);
+

Initializes a GResource from static data using a +GStaticResource.

+

This is normally used by code generated by +glib-compile-resources +and is not typically used by other code.

+
+

Parameters

+
+++++ + + + + + +

static_resource

pointer to a static GStaticResource

 
+
+

Since: 2.32

+
+
+
+

g_static_resource_fini ()

+
void
+g_static_resource_fini (GStaticResource *static_resource);
+

Finalized a GResource initialized by g_static_resource_init().

+

This is normally used by code generated by +glib-compile-resources +and is not typically used by other code.

+
+

Parameters

+
+++++ + + + + + +

static_resource

pointer to a static GStaticResource

 
+
+

Since: 2.32

+
+
+
+

g_static_resource_get_resource ()

+
GResource *
+g_static_resource_get_resource (GStaticResource *static_resource);
+

Gets the GResource that was registered by a call to g_static_resource_init().

+

This is normally used by code generated by +glib-compile-resources +and is not typically used by other code.

+
+

Parameters

+
+++++ + + + + + +

static_resource

pointer to a static GStaticResource

 
+
+
+

Returns

+

a GResource.

+

[transfer none]

+
+

Since: 2.32

+
+
+
+

g_resources_register ()

+
void
+g_resources_register (GResource *resource);
+

Registers the resource with the process-global set of resources. +Once a resource is registered the files in it can be accessed +with the global resource lookup functions like g_resources_lookup_data().

+
+

Parameters

+
+++++ + + + + + +

resource

A GResource

 
+
+

Since: 2.32

+
+
+
+

g_resources_unregister ()

+
void
+g_resources_unregister (GResource *resource);
+

Unregisters the resource from the process-global set of resources.

+
+

Parameters

+
+++++ + + + + + +

resource

A GResource

 
+
+

Since: 2.32

+
+
+
+

g_resources_lookup_data ()

+
GBytes *
+g_resources_lookup_data (const char *path,
+                         GResourceLookupFlags lookup_flags,
+                         GError **error);
+

Looks for a file at the specified path + in the set of +globally registered resources and returns a GBytes that +lets you directly access the data in memory.

+

The data is always followed by a zero byte, so you +can safely use the data as a C string. However, that byte +is not included in the size of the GBytes.

+

For uncompressed resource files this is a pointer directly into +the resource bundle, which is typically in some readonly data section +in the program binary. For compressed files we allocate memory on +the heap and automatically uncompress the data.

+

lookup_flags + controls the behaviour of the lookup.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

path

A pathname inside the resource

 

lookup_flags

A GResourceLookupFlags

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

GBytes or NULL on error. +Free the returned object with g_bytes_unref().

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_resources_open_stream ()

+
GInputStream *
+g_resources_open_stream (const char *path,
+                         GResourceLookupFlags lookup_flags,
+                         GError **error);
+

Looks for a file at the specified path + in the set of +globally registered resources and returns a GInputStream +that lets you read the data.

+

lookup_flags + controls the behaviour of the lookup.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

path

A pathname inside the resource

 

lookup_flags

A GResourceLookupFlags

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

GInputStream or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_resources_enumerate_children ()

+
char **
+g_resources_enumerate_children (const char *path,
+                                GResourceLookupFlags lookup_flags,
+                                GError **error);
+

Returns all the names of children at the specified path + in the set of +globally registered resources. +The return result is a NULL terminated list of strings which should +be released with g_strfreev().

+

lookup_flags + controls the behaviour of the lookup.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

path

A pathname inside the resource

 

lookup_flags

A GResourceLookupFlags

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

an array of constant strings.

+

[array zero-terminated=1][transfer full]

+
+

Since: 2.32

+
+
+
+

g_resources_get_info ()

+
gboolean
+g_resources_get_info (const char *path,
+                      GResourceLookupFlags lookup_flags,
+                      gsize *size,
+                      guint32 *flags,
+                      GError **error);
+

Looks for a file at the specified path + in the set of +globally registered resources and if found returns information about it.

+

lookup_flags + controls the behaviour of the lookup.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

path

A pathname inside the resource

 

lookup_flags

A GResourceLookupFlags

 

size

a location to place the length of the contents of the file, +or NULL if the length is not needed.

[out][allow-none]

flags

a location to place the flags about the file, +or NULL if the length is not needed.

[out][allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE if the file was found. FALSE if there were errors

+
+

Since: 2.32

+
+
+
+

G_RESOURCE_ERROR

+
#define G_RESOURCE_ERROR (g_resource_error_quark ())
+
+

Error domain for GResource. Errors in this domain will be from the +GResourceError enumeration. See GError for more information on +error domains.

+
+
+
+

Types and Values

+
+

GResource

+
typedef struct _GResource GResource;
+

A resource bundle.

+

Since: 2.32

+
+
+
+

enum GResourceFlags

+

GResourceFlags give information about a particular file inside a resource +bundle.

+
+

Members

+
+++++ + + + + + + + + + + + + +

G_RESOURCE_FLAGS_NONE

+

No flags set.

+
 

G_RESOURCE_FLAGS_COMPRESSED

+

The file is compressed.

+
 
+
+

Since: 2.32

+
+
+
+

enum GResourceLookupFlags

+

GResourceLookupFlags determine how resource path lookups are handled.

+
+

Members

+
+++++ + + + + + +

G_RESOURCE_LOOKUP_FLAGS_NONE

+

No flags set.

+
 
+
+

Since: 2.32

+
+
+
+

struct GStaticResource

+
struct GStaticResource {
+};
+
+

GStaticResource is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

enum GResourceError

+

An error code used with G_RESOURCE_ERROR in a GError returned +from a GResource routine.

+
+

Members

+
+++++ + + + + + + + + + + + + +

G_RESOURCE_ERROR_NOT_FOUND

+

no file was found at the requested path

+
 

G_RESOURCE_ERROR_INTERNAL

+

unknown error

+
 
+
+

Since: 2.32

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSeekable.html b/docs/reference/gio/html/GSeekable.html new file mode 100644 index 0000000..2843033 --- /dev/null +++ b/docs/reference/gio/html/GSeekable.html @@ -0,0 +1,435 @@ + + + + +GSeekable: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSeekable

+

GSeekable — Stream seeking interface

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+goffset + +g_seekable_tell () +
+gboolean + +g_seekable_can_seek () +
+gboolean + +g_seekable_seek () +
+gboolean + +g_seekable_can_truncate () +
+gboolean + +g_seekable_truncate () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GSeekable
structGSeekableIface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GSeekable
+
+
+
+

Prerequisites

+

+GSeekable requires + GObject.

+
+ +
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GSeekable is implemented by streams (implementations of +GInputStream or GOutputStream) that support seeking.

+

Seekable streams largely fall into two categories: resizable and +fixed-size.

+

GSeekable on fixed-sized streams is approximately the same as POSIX +lseek() on a block device (for example: attmepting to seek past the +end of the device is an error). Fixed streams typically cannot be +truncated.

+

GSeekable on resizable streams is approximately the same as POSIX +lseek() on a normal file. Seeking past the end and writing data will +usually cause the stream to resize by introducing zero bytes.

+
+
+

Functions

+
+

g_seekable_tell ()

+
goffset
+g_seekable_tell (GSeekable *seekable);
+

Tells the current position within the stream.

+
+

Parameters

+
+++++ + + + + + +

seekable

a GSeekable.

 
+
+
+

Returns

+

the offset from the beginning of the buffer.

+
+
+
+
+

g_seekable_can_seek ()

+
gboolean
+g_seekable_can_seek (GSeekable *seekable);
+

Tests if the stream supports the GSeekableIface.

+
+

Parameters

+
+++++ + + + + + +

seekable

a GSeekable.

 
+
+
+

Returns

+

TRUE if seekable +can be seeked. FALSE otherwise.

+
+
+
+
+

g_seekable_seek ()

+
gboolean
+g_seekable_seek (GSeekable *seekable,
+                 goffset offset,
+                 GSeekType type,
+                 GCancellable *cancellable,
+                 GError **error);
+

Seeks in the stream by the given offset +, modified by type +.

+

Attempting to seek past the end of the stream will have different +results depending on if the stream is fixed-sized or resizable. If +the stream is resizable then seeking past the end and then writing +will result in zeros filling the empty space. Seeking past the end +of a resizable stream and reading will result in EOF. Seeking past +the end of a fixed-sized stream will fail.

+

Any operation that would result in a negative offset will fail.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

seekable

a GSeekable.

 

offset

a goffset.

 

type

a GSeekType.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if successful. If an error +has occurred, this function will return FALSE and set error +appropriately if present.

+
+
+
+
+

g_seekable_can_truncate ()

+
gboolean
+g_seekable_can_truncate (GSeekable *seekable);
+

Tests if the stream can be truncated.

+
+

Parameters

+
+++++ + + + + + +

seekable

a GSeekable.

 
+
+
+

Returns

+

TRUE if the stream can be truncated, FALSE otherwise.

+
+
+
+
+

g_seekable_truncate ()

+
gboolean
+g_seekable_truncate (GSeekable *seekable,
+                     goffset offset,
+                     GCancellable *cancellable,
+                     GError **error);
+

Truncates a stream with a given offset.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned. If an +operation was partially finished when the operation was cancelled the +partial result will be returned, without an error.

+

Virtual: truncate_fn

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

seekable

a GSeekable.

 

offset

a goffset.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

TRUE if successful. If an error +has occurred, this function will return FALSE and set error +appropriately if present.

+
+
+
+
+

Types and Values

+
+

GSeekable

+
typedef struct _GSeekable GSeekable;
+

Seek object for streaming operations.

+
+
+
+

struct GSeekableIface

+
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 */
+};
+
+

Provides an interface for implementing seekable functionality on I/O Streams.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface 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.

 
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSettings.html b/docs/reference/gio/html/GSettings.html new file mode 100644 index 0000000..63d58ae --- /dev/null +++ b/docs/reference/gio/html/GSettings.html @@ -0,0 +1,3623 @@ + + + + +GSettings: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSettings

+

GSettings — High-level API for application settings

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GSettings * + +g_settings_new () +
+GSettings * + +g_settings_new_with_path () +
+GSettings * + +g_settings_new_with_backend () +
+GSettings * + +g_settings_new_with_backend_and_path () +
+GSettings * + +g_settings_new_full () +
+void + +g_settings_sync () +
+GVariant * + +g_settings_get_value () +
+gboolean + +g_settings_set_value () +
+gboolean + +g_settings_is_writable () +
+void + +g_settings_delay () +
+void + +g_settings_apply () +
+void + +g_settings_revert () +
+gboolean + +g_settings_get_has_unapplied () +
+GSettings * + +g_settings_get_child () +
+void + +g_settings_reset () +
+GVariant * + +g_settings_get_user_value () +
+GVariant * + +g_settings_get_default_value () +
const gchar * const * + +g_settings_list_schemas () +
const gchar * const * + +g_settings_list_relocatable_schemas () +
+gchar ** + +g_settings_list_keys () +
+gchar ** + +g_settings_list_children () +
+GVariant * + +g_settings_get_range () +
+gboolean + +g_settings_range_check () +
+void + +g_settings_get () +
+gboolean + +g_settings_set () +
+gboolean + +g_settings_get_boolean () +
+gboolean + +g_settings_set_boolean () +
+gint + +g_settings_get_int () +
+gboolean + +g_settings_set_int () +
+guint + +g_settings_get_uint () +
+gboolean + +g_settings_set_uint () +
+gdouble + +g_settings_get_double () +
+gboolean + +g_settings_set_double () +
+gchar * + +g_settings_get_string () +
+gboolean + +g_settings_set_string () +
+gchar ** + +g_settings_get_strv () +
+gboolean + +g_settings_set_strv () +
+gint + +g_settings_get_enum () +
+gboolean + +g_settings_set_enum () +
+guint + +g_settings_get_flags () +
+gboolean + +g_settings_set_flags () +
+gboolean + +(*GSettingsGetMapping) () +
+gpointer + +g_settings_get_mapped () +
+void + +g_settings_bind () +
+void + +g_settings_bind_with_mapping () +
+void + +g_settings_bind_writable () +
+void + +g_settings_unbind () +
+GVariant * + +(*GSettingsBindSetMapping) () +
+gboolean + +(*GSettingsBindGetMapping) () +
+GAction * + +g_settings_create_action () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GSettingsBackend *backendRead / Write / Construct Only
gbooleandelay-applyRead
gbooleanhas-unappliedRead
+gchar *pathRead / Write / Construct Only
+gchar *schemaRead / Write / Construct Only
+gchar *schema-idRead / Write / Construct Only
+GSettingsSchema *settings-schemaRead / Write / Construct Only
+
+
+

Signals

+ +
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GSettings
enumGSettingsBindFlags
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSettings
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

The GSettings class provides a convenient API for storing and retrieving +application settings.

+

Reads and writes can be considered to be non-blocking. Reading +settings with GSettings is typically extremely fast: on +approximately the same order of magnitude (but slower than) a +GHashTable lookup. Writing settings is also extremely fast in terms +of time to return to your application, but can be extremely expensive +for other threads and other processes. Many settings backends +(including dconf) have lazy initialisation which means in the common +case of the user using their computer without modifying any settings +a lot of work can be avoided. For dconf, the D-Bus service doesn't +even need to be started in this case. For this reason, you should +only ever modify GSettings keys in response to explicit user action. +Particular care should be paid to ensure that modifications are not +made during startup -- for example, when setting the initial value +of preferences widgets. The built-in g_settings_bind() functionality +is careful not to write settings in response to notify signals as a +result of modifications that it makes to widgets.

+

When creating a GSettings instance, you have to specify a schema +that describes the keys in your settings and their types and default +values, as well as some other information.

+

Normally, a schema has as fixed path that determines where the settings +are stored in the conceptual global tree of settings. However, schemas +can also be 'relocatable', i.e. not equipped with +a fixed path. This is +useful e.g. when the schema describes an 'account', and you want to be +able to store a arbitrary number of accounts.

+

Paths must start with and end with a forward slash character ('/') +and must not contain two sequential slash characters. Paths should +be chosen based on a domain name associated with the program or +library to which the settings belong. Examples of paths are +"/org/gtk/settings/file-chooser/" and "/ca/desrt/dconf-editor/". +Paths should not start with "/apps/", "/desktop/" or "/system/" as +they often did in GConf.

+

Unlike other configuration systems (like GConf), GSettings does not +restrict keys to basic types like strings and numbers. GSettings stores +values as GVariant, and allows any GVariantType for keys. Key names +are restricted to lowercase characters, numbers and '-'. Furthermore, +the names must begin with a lowercase character, must not end +with a '-', and must not contain consecutive dashes.

+

Similar to GConf, the default values in GSettings schemas can be +localized, but the localized values are stored in gettext catalogs +and looked up with the domain that is specified in the +gettext-domain attribute of the <schemalist> or <schema> +elements and the category that is specified in the l10n attribute of +the <default> element. The string which is translated includes all text in +the <default> element, including any surrounding quotation marks.

+

The l10n attribute must be set to messages or time, and sets the +locale category for +translation. +The messages category should be used by default; use time for +translatable date or time formats. A translation comment can be added as an +XML comment immediately above the <default> element — it is recommended to +add these comments to aid translators understand the meaning and +implications of the default value. An optional translation context +attribute can be set on the <default> element to disambiguate multiple +defaults which use the same string.

+

For example:

+
+ + + + + + + +
1
+2
+3
+4
<!-- Translators: A list of words which are not allowed to be typed, in
+     GVariant serialization syntax.
+     See: https://developer.gnome.org/glib/stable/gvariant-text.html -->
+<default l10n='messages' context='Banned words'>['bad', 'words']</default>
+
+ +

+

Translations of default values must remain syntactically valid serialized +GVariants (e.g. retaining any surrounding quotation marks) or runtime +errors will occur.

+

GSettings uses schemas in a compact binary form that is created +by the glib-compile-schemas +utility. The input is a schema description in an XML format.

+

A DTD for the gschema XML format can be found here: +gschema.dtd

+

The glib-compile-schemas tool expects schema +files to have the extension .gschema.xml.

+

At runtime, schemas are identified by their id (as specified in the +id attribute of the <schema> element). The convention for schema +ids is to use a dotted name, similar in style to a D-Bus bus name, +e.g. "org.gnome.SessionManager". In particular, if the settings are +for a specific service that owns a D-Bus bus name, the D-Bus bus name +and schema id should match. For schemas which deal with settings not +associated with one named application, the id should not use +StudlyCaps, e.g. "org.gnome.font-rendering".

+

In addition to GVariant types, keys can have types that have +enumerated types. These can be described by a <choice>, +<enum> or <flags> element, as seen in the +example. The underlying type of such a key +is string, but you can use g_settings_get_enum(), g_settings_set_enum(), +g_settings_get_flags(), g_settings_set_flags() access the numeric values +corresponding to the string value of enum and flags keys.

+

An example for default value:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
<schemalist>
+  <schema id="org.gtk.Test" path="/org/gtk/Test/" gettext-domain="test">
+
+    <key name="greeting" type="s">
+      <default l10n="messages">"Hello, earthlings"</default>
+      <summary>A greeting</summary>
+      <description>
+        Greeting of the invading martians
+      </description>
+    </key>
+
+    <key name="box" type="(ii)">
+      <default>(20,30)</default>
+    </key>
+
+  </schema>
+</schemalist>
+
+ +

+

An example for ranges, choices and enumerated types:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
<schemalist>
+
+  <enum id="org.gtk.Test.myenum">
+    <value nick="first" value="1"/>
+    <value nick="second" value="2"/>
+  </enum>
+
+  <flags id="org.gtk.Test.myflags">
+    <value nick="flag1" value="1"/>
+    <value nick="flag2" value="2"/>
+    <value nick="flag3" value="4"/>
+  </flags>
+
+  <schema id="org.gtk.Test">
+
+    <key name="key-with-range" type="i">
+      <range min="1" max="100"/>
+      <default>10</default>
+    </key>
+
+    <key name="key-with-choices" type="s">
+      <choices>
+        <choice value='Elisabeth'/>
+        <choice value='Annabeth'/>
+        <choice value='Joe'/>
+      </choices>
+      <aliases>
+        <alias value='Anna' target='Annabeth'/>
+        <alias value='Beth' target='Elisabeth'/>
+      </aliases>
+      <default>'Joe'</default>
+    </key>
+
+    <key name='enumerated-key' enum='org.gtk.Test.myenum'>
+      <default>'first'</default>
+    </key>
+
+    <key name='flags-key' flags='org.gtk.Test.myflags'>
+      <default>["flag1","flag2"]</default>
+    </key>
+  </schema>
+</schemalist>
+
+ +

+
+

Vendor overrides

+

Default values are defined in the schemas that get installed by +an application. Sometimes, it is necessary for a vendor or distributor +to adjust these defaults. Since patching the XML source for the schema +is inconvenient and error-prone, +glib-compile-schemas reads so-called vendor +override' files. These are keyfiles in the same directory as the XML +schema sources which can override default values. The schema id serves +as the group name in the key file, and the values are expected in +serialized GVariant form, as in the following example:

+
+ + + + + + + +
1
+2
+3
[org.gtk.Example]
+key1='string'
+key2=1.5
+
+ +

+

glib-compile-schemas expects schema files to have the extension +.gschema.override.

+
+
+

Binding

+

A very convenient feature of GSettings lets you bind GObject properties +directly to settings, using g_settings_bind(). Once a GObject property +has been bound to a setting, changes on either side are automatically +propagated to the other side. GSettings handles details like mapping +between GObject and GVariant types, and preventing infinite cycles.

+

This makes it very easy to hook up a preferences dialog to the +underlying settings. To make this even more convenient, GSettings +looks for a boolean property with the name "sensitivity" and +automatically binds it to the writability of the bound setting. +If this 'magic' gets in the way, it can be suppressed with the +G_SETTINGS_BIND_NO_SENSITIVITY flag.

+
+
+

Relocatable schemas

+

A relocatable schema is one with no path attribute specified on its +<schema> element. By using g_settings_new_with_path(), a GSettings object +can be instantiated for a relocatable schema, assigning a path to the +instance. Paths passed to g_settings_new_with_path() will typically be +constructed dynamically from a constant prefix plus some form of instance +identifier; but they must still be valid GSettings paths. Paths could also +be constant and used with a globally installed schema originating from a +dependency library.

+

For example, a relocatable schema could be used to store geometry information +for different windows in an application. If the schema ID was +org.foo.MyApp.Window, it could be instantiated for paths +/org/foo/MyApp/main/, /org/foo/MyApp/document-1/, +/org/foo/MyApp/document-2/, etc. If any of the paths are well-known +they can be specified as <child> elements in the parent schema, e.g.:

+
+ + + + + + + +
1
+2
+3
<schema id="org.foo.MyApp" path="/org/foo/MyApp/">
+  <child name="main" schema="org.foo.MyApp.Window"/>
+</schema>
+
+ +

+
+
+

Build system integration

+

GSettings comes with autotools integration to simplify compiling and +installing schemas. To add GSettings support to an application, add the +following to your configure.ac:

+
+ + + + + + + +
1
GLIB_GSETTINGS
+
+ +

+

In the appropriate Makefile.am, use the following snippet to compile and +install the named schema:

+
+ + + + + + + +
1
+2
+3
+4
gsettings_SCHEMAS = org.foo.MyApp.gschema.xml
+EXTRA_DIST = $(gsettings_SCHEMAS)
+
+@GSETTINGS_RULES@
+
+ +

+

No changes are needed to the build system to mark a schema XML file for +translation. Assuming it sets the gettext-domain attribute, a schema may +be marked for translation by adding it to POTFILES.in, assuming gettext +0.19 is in use (the preferred method for translation):

+
+ + + + + + + +
1
data/org.foo.MyApp.gschema.xml
+
+ +

+

Alternatively, if intltool 0.50.1 is in use:

+
+ + + + + + + +
1
[type: gettext/gsettings]data/org.foo.MyApp.gschema.xml
+
+ +

+

GSettings will use gettext to look up translations for the <summary> and +<description> elements, and also any <default> elements which have a l10n +attribute set. Translations must not be included in the .gschema.xml file +by the build system, for example by using intltool XML rules with a +.gschema.xml.in template.

+

If an enumerated type defined in a C header file is to be used in a GSettings +schema, it can either be defined manually using an <enum> element in the +schema XML, or it can be extracted automatically from the C header. This +approach is preferred, as it ensures the two representations are always +synchronised. To do so, add the following to the relevant Makefile.am:

+
+ + + + + + + +
1
+2
gsettings_ENUM_NAMESPACE = org.foo.MyApp
+gsettings_ENUM_FILES = my-app-enums.h my-app-misc.h
+
+ +

+

gsettings_ENUM_NAMESPACE specifies the schema namespace for the enum files, +which are specified in gsettings_ENUM_FILES. This will generate a +org.foo.MyApp.enums.xml file containing the extracted enums, which will be +automatically included in the schema compilation, install and uninstall +rules. It should not be committed to version control or included in +EXTRA_DIST.

+
+
+
+

Functions

+
+

g_settings_new ()

+
GSettings *
+g_settings_new (const gchar *schema_id);
+

Creates a new GSettings object with the schema specified by +schema_id +.

+

Signals on the newly created GSettings object will be dispatched +via the thread-default GMainContext in effect at the time of the +call to g_settings_new(). The new GSettings will hold a reference +on the context. See g_main_context_push_thread_default().

+
+

Parameters

+
+++++ + + + + + +

schema_id

the id of the schema

 
+
+
+

Returns

+

a new GSettings object

+
+

Since: 2.26

+
+
+
+

g_settings_new_with_path ()

+
GSettings *
+g_settings_new_with_path (const gchar *schema_id,
+                          const gchar *path);
+

Creates a new GSettings object with the relocatable schema specified +by schema_id + and a given path.

+

You only need to do this if you want to directly create a settings +object with a schema that doesn't have a specified path of its own. +That's quite rare.

+

It is a programmer error to call this function for a schema that +has an explicitly specified path.

+

It is a programmer error if path + is not a valid path. A valid path +begins and ends with '/' and does not contain two consecutive '/' +characters.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

schema_id

the id of the schema

 

path

the path to use

 
+
+
+

Returns

+

a new GSettings object

+
+

Since: 2.26

+
+
+
+

g_settings_new_with_backend ()

+
GSettings *
+g_settings_new_with_backend (const gchar *schema_id,
+                             GSettingsBackend *backend);
+

Creates a new GSettings object with the schema specified by +schema_id + and a given GSettingsBackend.

+

Creating a GSettings object with a different backend allows accessing +settings from a database other than the usual one. For example, it may make +sense to pass a backend corresponding to the "defaults" settings database on +the system to get a settings object that modifies the system default +settings instead of the settings for this user.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

schema_id

the id of the schema

 

backend

the GSettingsBackend to use

 
+
+
+

Returns

+

a new GSettings object

+
+

Since: 2.26

+
+
+
+

g_settings_new_with_backend_and_path ()

+
GSettings *
+g_settings_new_with_backend_and_path (const gchar *schema_id,
+                                      GSettingsBackend *backend,
+                                      const gchar *path);
+

Creates a new GSettings object with the schema specified by +schema_id + and a given GSettingsBackend and path.

+

This is a mix of g_settings_new_with_backend() and +g_settings_new_with_path().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

schema_id

the id of the schema

 

backend

the GSettingsBackend to use

 

path

the path to use

 
+
+
+

Returns

+

a new GSettings object

+
+

Since: 2.26

+
+
+
+

g_settings_new_full ()

+
GSettings *
+g_settings_new_full (GSettingsSchema *schema,
+                     GSettingsBackend *backend,
+                     const gchar *path);
+

Creates a new GSettings object with a given schema, backend and +path.

+

It should be extremely rare that you ever want to use this function. +It is made available for advanced use-cases (such as plugin systems +that want to provide access to schemas loaded from custom locations, +etc).

+

At the most basic level, a GSettings object is a pure composition of +4 things: a GSettingsSchema, a GSettingsBackend, a path within that +backend, and a GMainContext to which signals are dispatched.

+

This constructor therefore gives you full control over constructing +GSettings instances. The first 3 parameters are given directly as +schema +, backend + and path +, and the main context is taken from the +thread-default (as per g_settings_new()).

+

If backend + is NULL then the default backend is used.

+

If path + is NULL then the path from the schema is used. It is an +error if path + is NULL and the schema has no path of its own or if +path + is non-NULL and not equal to the path that the schema does +have.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

schema

a GSettingsSchema

 

backend

a GSettingsBackend.

[allow-none]

path

the path to use.

[allow-none]
+
+
+

Returns

+

a new GSettings object

+
+

Since: 2.32

+
+
+
+

g_settings_sync ()

+
void
+g_settings_sync (void);
+

Ensures that all pending operations for the given are complete for +the default backend.

+

Writes made to a GSettings are handled asynchronously. For this +reason, it is very unlikely that the changes have it to disk by the +time g_settings_set() returns.

+

This call will block until all of the writes have made it to the +backend. Since the mainloop is not running, no change notifications +will be dispatched during this call (but some may be queued by the +time the call is done).

+
+
+
+

g_settings_get_value ()

+
GVariant *
+g_settings_get_value (GSettings *settings,
+                      const gchar *key);
+

Gets the value that is stored in settings + for key +.

+

It is a programmer error to give a key + that isn't contained in the +schema for settings +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to get the value for

 
+
+
+

Returns

+

a new GVariant

+
+

Since: 2.26

+
+
+
+

g_settings_set_value ()

+
gboolean
+g_settings_set_value (GSettings *settings,
+                      const gchar *key,
+                      GVariant *value);
+

Sets key + in settings + to value +.

+

It is a programmer error to give a key + that isn't contained in the +schema for settings + or for value + to have the incorrect type, per +the schema.

+

If value + is floating then this function consumes the reference.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

settings

a GSettings object

 

key

the name of the key to set

 

value

a GVariant of the correct type

 
+
+
+

Returns

+

TRUE if setting the key succeeded, +FALSE if the key was not writable

+
+

Since: 2.26

+
+
+
+

g_settings_is_writable ()

+
gboolean
+g_settings_is_writable (GSettings *settings,
+                        const gchar *name);
+

Finds out if a key can be written or not

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings object

 

name

the name of a key

 
+
+
+

Returns

+

TRUE if the key name +is writable

+
+

Since: 2.26

+
+
+
+

g_settings_delay ()

+
void
+g_settings_delay (GSettings *settings);
+

Changes the GSettings object into 'delay-apply' mode. In this +mode, changes to settings + are not immediately propagated to the +backend, but kept locally until g_settings_apply() is called.

+
+

Parameters

+
+++++ + + + + + +

settings

a GSettings object

 
+
+

Since: 2.26

+
+
+
+

g_settings_apply ()

+
void
+g_settings_apply (GSettings *settings);
+

Applies any changes that have been made to the settings. This +function does nothing unless settings + is in 'delay-apply' mode; +see g_settings_delay(). In the normal case settings are always +applied immediately.

+
+

Parameters

+
+++++ + + + + + +

settings

a GSettings instance

 
+
+
+
+
+

g_settings_revert ()

+
void
+g_settings_revert (GSettings *settings);
+

Reverts all non-applied changes to the settings. This function +does nothing unless settings + is in 'delay-apply' mode; see +g_settings_delay(). In the normal case settings are always applied +immediately.

+

Change notifications will be emitted for affected keys.

+
+

Parameters

+
+++++ + + + + + +

settings

a GSettings instance

 
+
+
+
+
+

g_settings_get_has_unapplied ()

+
gboolean
+g_settings_get_has_unapplied (GSettings *settings);
+

Returns whether the GSettings object has any unapplied +changes. This can only be the case if it is in 'delayed-apply' mode.

+
+

Parameters

+
+++++ + + + + + +

settings

a GSettings object

 
+
+
+

Returns

+

TRUE if settings +has unapplied changes

+
+

Since: 2.26

+
+
+
+

g_settings_get_child ()

+
GSettings *
+g_settings_get_child (GSettings *settings,
+                      const gchar *name);
+

Creates a child settings object which has a base path of +base-path/@name, where base-path is the base path of +settings +.

+

The schema for the child settings object must have been declared +in the schema of settings + using a <child> element.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings object

 

name

the name of the child schema

 
+
+
+

Returns

+

a 'child' settings object.

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_settings_reset ()

+
void
+g_settings_reset (GSettings *settings,
+                  const gchar *key);
+

Resets key + to its default value.

+

This call resets the key, as much as possible, to its default value. +That might the value specified in the schema or the one set by the +administrator.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings object

 

key

the name of a key

 
+
+
+
+
+

g_settings_get_user_value ()

+
GVariant *
+g_settings_get_user_value (GSettings *settings,
+                           const gchar *key);
+

Checks the "user value" of a key, if there is one.

+

The user value of a key is the last value that was set by the user.

+

After calling g_settings_reset() this function should always return +NULL (assuming something is not wrong with the system +configuration).

+

It is possible that g_settings_get_value() will return a different +value than this function. This can happen in the case that the user +set a value for a key that was subsequently locked down by the system +administrator -- this function will return the user's old value.

+

This function may be useful for adding a "reset" option to a UI or +for providing indication that a particular value has been changed.

+

It is a programmer error to give a key + that isn't contained in the +schema for settings +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to get the user value for

 
+
+
+

Returns

+

the user's value, if set.

+

[allow-none][transfer full]

+
+

Since: 2.40

+
+
+
+

g_settings_get_default_value ()

+
GVariant *
+g_settings_get_default_value (GSettings *settings,
+                              const gchar *key);
+

Gets the "default value" of a key.

+

This is the value that would be read if g_settings_reset() were to be +called on the key.

+

Note that this may be a different value than returned by +g_settings_schema_key_get_default_value() if the system administrator +has provided a default value.

+

Comparing the return values of g_settings_get_default_value() and +g_settings_get_value() is not sufficient for determining if a value +has been set because the user may have explicitly set the value to +something that happens to be equal to the default. The difference +here is that if the default changes in the future, the user's key +will still be set.

+

This function may be useful for adding an indication to a UI of what +the default value was before the user set it.

+

It is a programmer error to give a key + that isn't contained in the +schema for settings +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to get the default value for

 
+
+
+

Returns

+

the default value.

+

[allow-none][transfer full]

+
+

Since: 2.40

+
+
+
+

g_settings_list_schemas ()

+
const gchar * const *
+g_settings_list_schemas (void);
+
+

g_settings_list_schemas has been deprecated since version 2.40 and should not be used in newly-written code.

+

Use g_settings_schema_source_list_schemas() instead. +If you used g_settings_list_schemas() to check for the presence of +a particular schema, use g_settings_schema_source_lookup() instead +of your whole loop.

+
+

<!-- -->

+
+

Returns

+

a list of GSettings +schemas that are available. The list must not be modified or +freed.

+

[element-type utf8][transfer none]

+
+

Since: 2.26

+
+
+
+

g_settings_list_relocatable_schemas ()

+
const gchar * const *
+g_settings_list_relocatable_schemas (void);
+
+

g_settings_list_relocatable_schemas has been deprecated since version 2.40 and should not be used in newly-written code.

+

Use g_settings_schema_source_list_schemas() instead

+
+

<!-- -->

+
+

Returns

+

a list of relocatable +GSettings schemas that are available. The list must not be +modified or freed.

+

[element-type utf8][transfer none]

+
+

Since: 2.28

+
+
+
+

g_settings_list_keys ()

+
gchar **
+g_settings_list_keys (GSettings *settings);
+

g_settings_list_keys is deprecated and should not be used in newly-written code.

+

Introspects the list of keys on settings +.

+

You should probably not be calling this function from "normal" code +(since you should already know what keys are in your schema). This +function is intended for introspection reasons.

+

You should free the return value with g_strfreev() when you are done +with it.

+
+

Parameters

+
+++++ + + + + + +

settings

a GSettings object

 
+
+
+

Returns

+

a list of the keys on settings +.

+

[transfer full][element-type utf8]

+
+
+
+
+

g_settings_list_children ()

+
gchar **
+g_settings_list_children (GSettings *settings);
+

Gets the list of children on settings +.

+

The list is exactly the list of strings for which it is not an error +to call g_settings_get_child().

+

For GSettings objects that are lists, this value can change at any +time and you should connect to the "children-changed" signal to watch +for those changes. Note that there is a race condition here: you may +request a child after listing it only for it to have been destroyed +in the meantime. For this reason, g_settings_get_child() may return +NULL even for a child that was listed by this function.

+

For GSettings objects that are not lists, you should probably not be +calling this function from "normal" code (since you should already +know what children are in your schema). This function may still be +useful there for introspection reasons, however.

+

You should free the return value with g_strfreev() when you are done +with it.

+
+

Parameters

+
+++++ + + + + + +

settings

a GSettings object

 
+
+
+

Returns

+

a list of the children on settings +.

+

[transfer full][element-type utf8]

+
+
+
+
+

g_settings_get_range ()

+
GVariant *
+g_settings_get_range (GSettings *settings,
+                      const gchar *key);
+
+

g_settings_get_range has been deprecated since version 2.40 and should not be used in newly-written code.

+

Use g_settings_schema_key_get_range() instead.

+
+

Queries the range of a key.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings

 

key

the key to query the range of

 
+
+

Since: 2.28

+
+
+
+

g_settings_range_check ()

+
gboolean
+g_settings_range_check (GSettings *settings,
+                        const gchar *key,
+                        GVariant *value);
+
+

g_settings_range_check has been deprecated since version 2.40 and should not be used in newly-written code.

+

Use g_settings_schema_key_range_check() instead.

+
+

Checks if the given value + is of the correct type and within the +permitted range for key +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

settings

a GSettings

 

key

the key to check

 

value

the value to check

 
+
+
+

Returns

+

TRUE if value +is valid for key +

+
+

Since: 2.28

+
+
+
+

g_settings_get ()

+
void
+g_settings_get (GSettings *settings,
+                const gchar *key,
+                const gchar *format,
+                ...);
+

Gets the value that is stored at key + in settings +.

+

A convenience function that combines g_settings_get_value() with +g_variant_get().

+

It is a programmer error to give a key + that isn't contained in the +schema for settings + or for the GVariantType of format + to mismatch +the type given in the schema.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to get the value for

 

format

a GVariant format string

 

...

arguments as per format +

 
+
+

Since: 2.26

+
+
+
+

g_settings_set ()

+
gboolean
+g_settings_set (GSettings *settings,
+                const gchar *key,
+                const gchar *format,
+                ...);
+

Sets key + in settings + to value +.

+

A convenience function that combines g_settings_set_value() with +g_variant_new().

+

It is a programmer error to give a key + that isn't contained in the +schema for settings + or for the GVariantType of format + to mismatch +the type given in the schema.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

settings

a GSettings object

 

key

the name of the key to set

 

format

a GVariant format string

 

...

arguments as per format +

 
+
+
+

Returns

+

TRUE if setting the key succeeded, +FALSE if the key was not writable

+
+

Since: 2.26

+
+
+
+

g_settings_get_boolean ()

+
gboolean
+g_settings_get_boolean (GSettings *settings,
+                        const gchar *key);
+

Gets the value that is stored at key + in settings +.

+

A convenience variant of g_settings_get() for booleans.

+

It is a programmer error to give a key + that isn't specified as +having a boolean type in the schema for settings +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to get the value for

 
+
+
+

Returns

+

a boolean

+
+

Since: 2.26

+
+
+
+

g_settings_set_boolean ()

+
gboolean
+g_settings_set_boolean (GSettings *settings,
+                        const gchar *key,
+                        gboolean value);
+

Sets key + in settings + to value +.

+

A convenience variant of g_settings_set() for booleans.

+

It is a programmer error to give a key + that isn't specified as +having a boolean type in the schema for settings +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

settings

a GSettings object

 

key

the name of the key to set

 

value

the value to set it to

 
+
+
+

Returns

+

TRUE if setting the key succeeded, +FALSE if the key was not writable

+
+

Since: 2.26

+
+
+
+

g_settings_get_int ()

+
gint
+g_settings_get_int (GSettings *settings,
+                    const gchar *key);
+

Gets the value that is stored at key + in settings +.

+

A convenience variant of g_settings_get() for 32-bit integers.

+

It is a programmer error to give a key + that isn't specified as +having a int32 type in the schema for settings +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to get the value for

 
+
+
+

Returns

+

an integer

+
+

Since: 2.26

+
+
+
+

g_settings_set_int ()

+
gboolean
+g_settings_set_int (GSettings *settings,
+                    const gchar *key,
+                    gint value);
+

Sets key + in settings + to value +.

+

A convenience variant of g_settings_set() for 32-bit integers.

+

It is a programmer error to give a key + that isn't specified as +having a int32 type in the schema for settings +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

settings

a GSettings object

 

key

the name of the key to set

 

value

the value to set it to

 
+
+
+

Returns

+

TRUE if setting the key succeeded, +FALSE if the key was not writable

+
+

Since: 2.26

+
+
+
+

g_settings_get_uint ()

+
guint
+g_settings_get_uint (GSettings *settings,
+                     const gchar *key);
+

Gets the value that is stored at key + in settings +.

+

A convenience variant of g_settings_get() for 32-bit unsigned +integers.

+

It is a programmer error to give a key + that isn't specified as +having a uint32 type in the schema for settings +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to get the value for

 
+
+
+

Returns

+

an unsigned integer

+
+

Since: 2.30

+
+
+
+

g_settings_set_uint ()

+
gboolean
+g_settings_set_uint (GSettings *settings,
+                     const gchar *key,
+                     guint value);
+

Sets key + in settings + to value +.

+

A convenience variant of g_settings_set() for 32-bit unsigned +integers.

+

It is a programmer error to give a key + that isn't specified as +having a uint32 type in the schema for settings +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

settings

a GSettings object

 

key

the name of the key to set

 

value

the value to set it to

 
+
+
+

Returns

+

TRUE if setting the key succeeded, +FALSE if the key was not writable

+
+

Since: 2.30

+
+
+
+

g_settings_get_double ()

+
gdouble
+g_settings_get_double (GSettings *settings,
+                       const gchar *key);
+

Gets the value that is stored at key + in settings +.

+

A convenience variant of g_settings_get() for doubles.

+

It is a programmer error to give a key + that isn't specified as +having a 'double' type in the schema for settings +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to get the value for

 
+
+
+

Returns

+

a double

+
+

Since: 2.26

+
+
+
+

g_settings_set_double ()

+
gboolean
+g_settings_set_double (GSettings *settings,
+                       const gchar *key,
+                       gdouble value);
+

Sets key + in settings + to value +.

+

A convenience variant of g_settings_set() for doubles.

+

It is a programmer error to give a key + that isn't specified as +having a 'double' type in the schema for settings +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

settings

a GSettings object

 

key

the name of the key to set

 

value

the value to set it to

 
+
+
+

Returns

+

TRUE if setting the key succeeded, +FALSE if the key was not writable

+
+

Since: 2.26

+
+
+
+

g_settings_get_string ()

+
gchar *
+g_settings_get_string (GSettings *settings,
+                       const gchar *key);
+

Gets the value that is stored at key + in settings +.

+

A convenience variant of g_settings_get() for strings.

+

It is a programmer error to give a key + that isn't specified as +having a string type in the schema for settings +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to get the value for

 
+
+
+

Returns

+

a newly-allocated string

+
+

Since: 2.26

+
+
+
+

g_settings_set_string ()

+
gboolean
+g_settings_set_string (GSettings *settings,
+                       const gchar *key,
+                       const gchar *value);
+

Sets key + in settings + to value +.

+

A convenience variant of g_settings_set() for strings.

+

It is a programmer error to give a key + that isn't specified as +having a string type in the schema for settings +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

settings

a GSettings object

 

key

the name of the key to set

 

value

the value to set it to

 
+
+
+

Returns

+

TRUE if setting the key succeeded, +FALSE if the key was not writable

+
+

Since: 2.26

+
+
+
+

g_settings_get_strv ()

+
gchar **
+g_settings_get_strv (GSettings *settings,
+                     const gchar *key);
+

A convenience variant of g_settings_get() for string arrays.

+

It is a programmer error to give a key + that isn't specified as +having an array of strings type in the schema for settings +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to get the value for

 
+
+
+

Returns

+

a +newly-allocated, NULL-terminated array of strings, the value that +is stored at key +in settings +.

+

[array zero-terminated=1][transfer full]

+
+

Since: 2.26

+
+
+
+

g_settings_set_strv ()

+
gboolean
+g_settings_set_strv (GSettings *settings,
+                     const gchar *key,
+                     const gchar *const *value);
+

Sets key + in settings + to value +.

+

A convenience variant of g_settings_set() for string arrays. If +value + is NULL, then key + is set to be the empty array.

+

It is a programmer error to give a key + that isn't specified as +having an array of strings type in the schema for settings +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

settings

a GSettings object

 

key

the name of the key to set

 

value

the value to set it to, or NULL.

[allow-none][array zero-terminated=1]
+
+
+

Returns

+

TRUE if setting the key succeeded, +FALSE if the key was not writable

+
+

Since: 2.26

+
+
+
+

g_settings_get_enum ()

+
gint
+g_settings_get_enum (GSettings *settings,
+                     const gchar *key);
+

Gets the value that is stored in settings + for key + and converts it +to the enum value that it represents.

+

In order to use this function the type of the value must be a string +and it must be marked in the schema file as an enumerated type.

+

It is a programmer error to give a key + that isn't contained in the +schema for settings + or is not marked as an enumerated type.

+

If the value stored in the configuration database is not a valid +value for the enumerated type then this function will return the +default value.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to get the value for

 
+
+
+

Returns

+

the enum value

+
+

Since: 2.26

+
+
+
+

g_settings_set_enum ()

+
gboolean
+g_settings_set_enum (GSettings *settings,
+                     const gchar *key,
+                     gint value);
+

Looks up the enumerated type nick for value + and writes it to key +, +within settings +.

+

It is a programmer error to give a key + that isn't contained in the +schema for settings + or is not marked as an enumerated type, or for +value + not to be a valid value for the named type.

+

After performing the write, accessing key + directly with +g_settings_get_string() will return the 'nick' associated with +value +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

settings

a GSettings object

 

key

a key, within settings +

 

value

an enumerated value

 
+
+
+

Returns

+

TRUE, if the set succeeds

+
+
+
+
+

g_settings_get_flags ()

+
guint
+g_settings_get_flags (GSettings *settings,
+                      const gchar *key);
+

Gets the value that is stored in settings + for key + and converts it +to the flags value that it represents.

+

In order to use this function the type of the value must be an array +of strings and it must be marked in the schema file as an flags type.

+

It is a programmer error to give a key + that isn't contained in the +schema for settings + or is not marked as a flags type.

+

If the value stored in the configuration database is not a valid +value for the flags type then this function will return the default +value.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to get the value for

 
+
+
+

Returns

+

the flags value

+
+

Since: 2.26

+
+
+
+

g_settings_set_flags ()

+
gboolean
+g_settings_set_flags (GSettings *settings,
+                      const gchar *key,
+                      guint value);
+

Looks up the flags type nicks for the bits specified by value +, puts +them in an array of strings and writes the array to key +, within +settings +.

+

It is a programmer error to give a key + that isn't contained in the +schema for settings + or is not marked as a flags type, or for value + +to contain any bits that are not value for the named type.

+

After performing the write, accessing key + directly with +g_settings_get_strv() will return an array of 'nicks'; one for each +bit in value +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

settings

a GSettings object

 

key

a key, within settings +

 

value

a flags value

 
+
+
+

Returns

+

TRUE, if the set succeeds

+
+
+
+
+

GSettingsGetMapping ()

+
gboolean
+(*GSettingsGetMapping) (GVariant *value,
+                        gpointer *result,
+                        gpointer user_data);
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

value

the GVariant to map, or NULL

 

result

the result of the mapping.

[out]

user_data

the user data that was passed to +g_settings_get_mapped().

[closure]
+
+
+

Returns

+

TRUE if the conversion succeeded, FALSE in case of an error

+
+
+
+
+

g_settings_get_mapped ()

+
gpointer
+g_settings_get_mapped (GSettings *settings,
+                       const gchar *key,
+                       GSettingsGetMapping mapping,
+                       gpointer user_data);
+

Gets the value that is stored at key + in settings +, subject to +application-level validation/mapping.

+

You should use this function when the application needs to perform +some processing on the value of the key (for example, parsing). The +mapping + function performs that processing. If the function +indicates that the processing was unsuccessful (due to a parse error, +for example) then the mapping is tried again with another value.

+

This allows a robust 'fall back to defaults' behaviour to be +implemented somewhat automatically.

+

The first value that is tried is the user's setting for the key. If +the mapping function fails to map this value, other values may be +tried in an unspecified order (system or site defaults, translated +schema default values, untranslated schema default values, etc).

+

If the mapping function fails for all possible values, one additional +attempt is made: the mapping function is called with a NULL value. +If the mapping function still indicates failure at this point then +the application will be aborted.

+

The result parameter for the mapping + function is pointed to a +gpointer which is initially set to NULL. The same pointer is given +to each invocation of mapping +. The final value of that gpointer is +what is returned by this function. NULL is valid; it is returned +just as any other value would be.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to get the value for

 

mapping

the function to map the value in the +settings database to the value used by the application.

[scope call]

user_data

user data for mapping +

 
+
+
+

Returns

+

the result, which may be NULL.

+

[transfer full]

+
+
+
+
+

g_settings_bind ()

+
void
+g_settings_bind (GSettings *settings,
+                 const gchar *key,
+                 gpointer object,
+                 const gchar *property,
+                 GSettingsBindFlags flags);
+

Create a binding between the key + in the settings + object +and the property property + of object +.

+

The binding uses the default GIO mapping functions to map +between the settings and property values. These functions +handle booleans, numeric types and string types in a +straightforward way. Use g_settings_bind_with_mapping() if +you need a custom mapping, or map between types that are not +supported by the default mapping functions.

+

Unless the flags + include G_SETTINGS_BIND_NO_SENSITIVITY, this +function also establishes a binding between the writability of +key + and the "sensitive" property of object + (if object + has +a boolean property by that name). See g_settings_bind_writable() +for more details about writable bindings.

+

Note that the lifecycle of the binding is tied to the object, +and that you can have only one binding per object property. +If you bind the same property twice on the same object, the second +binding overrides the first one.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to bind

 

object

a GObject.

[type GObject.Object]

property

the name of the property to bind

 

flags

flags for the binding

 
+
+

Since: 2.26

+
+
+
+

g_settings_bind_with_mapping ()

+
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);
+

Create a binding between the key + in the settings + object +and the property property + of object +.

+

The binding uses the provided mapping functions to map between +settings and property values.

+

Note that the lifecycle of the binding is tied to the object, +and that you can have only one binding per object property. +If you bind the same property twice on the same object, the second +binding overrides the first one.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to bind

 

object

a GObject.

[type GObject.Object]

property

the name of the property to bind

 

flags

flags for the binding

 

get_mapping

a function that gets called to convert values +from settings +to object +, or NULL to use the default GIO mapping

 

set_mapping

a function that gets called to convert values +from object +to settings +, or NULL to use the default GIO mapping

 

user_data

data that gets passed to get_mapping +and set_mapping +

 

destroy

GDestroyNotify function for user_data +

 
+
+

Since: 2.26

+
+
+
+

g_settings_bind_writable ()

+
void
+g_settings_bind_writable (GSettings *settings,
+                          const gchar *key,
+                          gpointer object,
+                          const gchar *property,
+                          gboolean inverted);
+

Create a binding between the writability of key + in the +settings + object and the property property + of object +. +The property must be boolean; "sensitive" or "visible" +properties of widgets are the most likely candidates.

+

Writable bindings are always uni-directional; changes of the +writability of the setting will be propagated to the object +property, not the other way.

+

When the inverted + argument is TRUE, the binding inverts the +value as it passes from the setting to the object, i.e. property + +will be set to TRUE if the key is not writable.

+

Note that the lifecycle of the binding is tied to the object, +and that you can have only one binding per object property. +If you bind the same property twice on the same object, the second +binding overrides the first one.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

settings

a GSettings object

 

key

the key to bind

 

object

a GObject.

[type GObject.Object]

property

the name of a boolean property to bind

 

inverted

whether to 'invert' the value

 
+
+

Since: 2.26

+
+
+
+

g_settings_unbind ()

+
void
+g_settings_unbind (gpointer object,
+                   const gchar *property);
+

Removes an existing binding for property + on object +.

+

Note that bindings are automatically removed when the +object is finalized, so it is rarely necessary to call this +function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object

the object.

[type GObject.Object]

property

the property whose binding is removed

 
+
+

Since: 2.26

+
+
+
+

GSettingsBindSetMapping ()

+
GVariant *
+(*GSettingsBindSetMapping) (const GValue *value,
+                            const GVariantType *expected_type,
+                            gpointer user_data);
+

The type for the function that is used to convert an object property +value to a GVariant for storing it in GSettings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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

 
+
+
+

Returns

+

a new GVariant holding the data from value +, +or NULL in case of an error

+
+
+
+
+

GSettingsBindGetMapping ()

+
gboolean
+(*GSettingsBindGetMapping) (GValue *value,
+                            GVariant *variant,
+                            gpointer user_data);
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

value

return location for the property value

 

variant

the GVariant

 

user_data

user data that was specified when the binding was created

 
+
+
+

Returns

+

TRUE if the conversion succeeded, FALSE in case of an error

+
+
+
+
+

g_settings_create_action ()

+
GAction *
+g_settings_create_action (GSettings *settings,
+                          const gchar *key);
+

Creates a GAction corresponding to a given GSettings key.

+

The action has the same name as the key.

+

The value of the key becomes the state of the action and the action +is enabled when the key is writable. Changing the state of the +action results in the key being written to. Changes to the value or +writability of the key cause appropriate change notifications to be +emitted for the action.

+

For boolean-valued keys, action activations take no parameter and +result in the toggling of the value. For all other types, +activations take the new value for the key (which must have the +correct type).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

settings

a GSettings

 

key

the name of a key in settings +

 
+
+
+

Returns

+

a new GAction.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

GSettings

+
typedef struct _GSettings GSettings;
+

GSettings is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

enum GSettingsBindFlags

+

Flags used when creating a binding. These flags determine in which +direction the binding works. The default is to synchronize in both +directions.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_SETTINGS_BIND_DEFAULT

+

Equivalent to G_SETTINGS_BIND_GET|G_SETTINGS_BIND_SET

+
 

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().

+
 
+
+
+
+
+

Property Details

+
+

The “backend” property

+
  “backend”                  GSettingsBackend *
+

The GSettingsBackend for this settings object.

+

Flags: Read / Write / Construct Only

+
+
+
+

The “delay-apply” property

+
  “delay-apply”              gboolean
+

Whether the GSettings object is in 'delay-apply' mode. See +g_settings_delay() for details.

+

Flags: Read

+

Default value: FALSE

+

Since: 2.28

+
+
+
+

The “has-unapplied” property

+
  “has-unapplied”            gboolean
+

If this property is TRUE, the GSettings object has outstanding +changes that will be applied when g_settings_apply() is called.

+

Flags: Read

+

Default value: FALSE

+
+
+
+

The “path” property

+
  “path”                     gchar *
+

The path within the backend where the settings are stored.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+

The “schema” property

+
  “schema”                   gchar *
+

The name of the schema that describes the types of keys +for this GSettings object.

+

The type of this property is *not* GSettingsSchema. +GSettingsSchema has only existed since version 2.32 and +unfortunately this name was used in previous versions to refer to +the schema ID rather than the schema itself. Take care to use the +'settings-schema' property if you wish to pass in a +GSettingsSchema.

+
+

GSettings:schema has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use the 'schema-id' property instead. In a future +version, this property may instead refer to a GSettingsSchema.

+
+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+

The “schema-id” property

+
  “schema-id”                gchar *
+

The name of the schema that describes the types of keys +for this GSettings object.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+

The “settings-schema” property

+
  “settings-schema”          GSettingsSchema *
+

The GSettingsSchema describing the types of keys for this +GSettings object.

+

Ideally, this property would be called 'schema'. GSettingsSchema +has only existed since version 2.32, however, and before then the +'schema' property was used to refer to the ID of the schema rather +than the schema itself. Take care.

+

Flags: Read / Write / Construct Only

+
+
+
+

Signal Details

+
+

The “change-event” signal

+
gboolean
+user_function (GSettings *settings,
+               gpointer   keys,
+               gint       n_keys,
+               gpointer   user_data)
+

The "change-event" signal is emitted once per change event that +affects this settings object. You should connect to this signal +only if you are interested in viewing groups of changes before they +are split out into multiple emissions of the "changed" signal. +For most use cases it is more appropriate to use the "changed" signal.

+

In the event that the change event applies to one or more specified +keys, keys + will be an array of GQuark of length n_keys +. In the +event that the change event applies to the GSettings object as a +whole (ie: potentially every key has been changed) then keys + will +be NULL and n_keys + will be 0.

+

The default handler for this signal invokes the "changed" signal +for each affected key. If any other connected handler returns +TRUE then this default functionality will be suppressed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

settings

the object on which the signal was emitted

 

keys

an array of GQuarks for the changed keys, or NULL.

[array length=n_keys][element-type GQuark][allow-none]

n_keys

the length of the keys +array, or 0

 

user_data

user data set when the signal handler was connected.

 
+
+
+

Returns

+

TRUE to stop other handlers from being invoked for the +event. FALSE to propagate the event further.

+
+

Flags: Run Last

+
+
+
+

The “changed” signal

+
void
+user_function (GSettings *settings,
+               gchar     *key,
+               gpointer   user_data)
+

The "changed" signal is emitted when a key has potentially changed. +You should call one of the g_settings_get() calls to check the new +value.

+

This signal supports detailed connections. You can connect to the +detailed signal "changed::x" in order to only receive callbacks +when key "x" changes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

settings

the object on which the signal was emitted

 

key

the name of the key that changed

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Has Details

+
+
+
+

The “writable-change-event” signal

+
gboolean
+user_function (GSettings *settings,
+               guint      key,
+               gpointer   user_data)
+

The "writable-change-event" signal is emitted once per writability +change event that affects this settings object. You should connect +to this signal if you are interested in viewing groups of changes +before they are split out into multiple emissions of the +"writable-changed" signal. For most use cases it is more +appropriate to use the "writable-changed" signal.

+

In the event that the writability change applies only to a single +key, key + will be set to the GQuark for that key. In the event +that the writability change affects the entire settings object, +key + will be 0.

+

The default handler for this signal invokes the "writable-changed" +and "changed" signals for each affected key. This is done because +changes in writability might also imply changes in value (if for +example, a new mandatory setting is introduced). If any other +connected handler returns TRUE then this default functionality +will be suppressed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

settings

the object on which the signal was emitted

 

key

the quark of the key, or 0

 

user_data

user data set when the signal handler was connected.

 
+
+
+

Returns

+

TRUE to stop other handlers from being invoked for the +event. FALSE to propagate the event further.

+
+

Flags: Run Last

+
+
+
+

The “writable-changed” signal

+
void
+user_function (GSettings *settings,
+               gchar     *key,
+               gpointer   user_data)
+

The "writable-changed" signal is emitted when the writability of a +key has potentially changed. You should call +g_settings_is_writable() in order to determine the new status.

+

This signal supports detailed connections. You can connect to the +detailed signal "writable-changed::x" in order to only receive +callbacks when the writability of "x" changes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

settings

the object on which the signal was emitted

 

key

the key

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Has Details

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSettingsBackend.html b/docs/reference/gio/html/GSettingsBackend.html new file mode 100644 index 0000000..a8dbfd6 --- /dev/null +++ b/docs/reference/gio/html/GSettingsBackend.html @@ -0,0 +1,820 @@ + + + + +GSettingsBackend: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSettingsBackend

+

GSettingsBackend — Interface for settings backend implementations

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GSettingsBackend * + +g_settings_backend_get_default () +
+void + +g_settings_backend_changed () +
+void + +g_settings_backend_path_changed () +
+void + +g_settings_backend_keys_changed () +
+void + +g_settings_backend_path_writable_changed () +
+void + +g_settings_backend_writable_changed () +
+void + +g_settings_backend_changed_tree () +
+void + +g_settings_backend_flatten_tree () +
+GSettingsBackend * + +g_keyfile_settings_backend_new () +
+GSettingsBackend * + +g_memory_settings_backend_new () +
+GSettingsBackend * + +g_null_settings_backend_new () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
 GSettingsBackend
structGSettingsBackendClass
#defineG_SETTINGS_BACKEND_EXTENSION_POINT_NAME
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSettingsBackend
+
+
+
+

Includes

+
#include <gio/gsettingsbackend.h>
+
+
+
+

Description

+

The GSettingsBackend interface defines a generic interface for +non-strictly-typed data that is stored in a hierarchy. To implement +an alternative storage backend for GSettings, you need to implement +the GSettingsBackend interface and then make it implement the +extension point G_SETTINGS_BACKEND_EXTENSION_POINT_NAME.

+

The interface defines methods for reading and writing values, a +method for determining if writing of certain values will fail +(lockdown) and a change notification mechanism.

+

The semantics of the interface are very precisely defined and +implementations must carefully adhere to the expectations of +callers that are documented on each of the interface methods.

+

Some of the GSettingsBackend functions accept or return a GTree. +These trees always have strings as keys and GVariant as values. +g_settings_backend_create_tree() is a convenience function to create +suitable trees.

+

The GSettingsBackend API is exported to allow third-party +implementations, but does not carry the same stability guarantees +as the public GIO API. For this reason, you have to define the +C preprocessor symbol G_SETTINGS_ENABLE_BACKEND before including +gio/gsettingsbackend.h.

+
+
+

Functions

+
+

g_settings_backend_get_default ()

+
GSettingsBackend *
+g_settings_backend_get_default (void);
+

Returns the default GSettingsBackend. It is possible to override +the default by setting the GSETTINGS_BACKEND environment variable +to the name of a settings backend.

+

The user gets a reference to the backend.

+
+

Returns

+

the default GSettingsBackend.

+

[transfer full]

+
+

Since: 2.28

+
+
+
+

g_settings_backend_changed ()

+
void
+g_settings_backend_changed (GSettingsBackend *backend,
+                            const gchar *key,
+                            gpointer origin_tag);
+

Signals that a single key has possibly changed. Backend +implementations should call this if a key has possibly changed its +value.

+

key + must be a valid key (ie starting with a slash, not containing +'//', and not ending with a slash).

+

The implementation must call this function during any call to +g_settings_backend_write(), before the call returns (except in the +case that no keys are actually changed and it cares to detect this +fact). It may not rely on the existence of a mainloop for +dispatching the signal later.

+

The implementation may call this function at any other time it likes +in response to other events (such as changes occurring outside of the +program). These calls may originate from a mainloop or may originate +in response to any other action (including from calls to +g_settings_backend_write()).

+

In the case that this call is in response to a call to +g_settings_backend_write() then origin_tag + must be set to the same +value that was passed to that call.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

backend

a GSettingsBackend implementation

 

key

the name of the key

 

origin_tag

the origin tag

 
+
+

Since: 2.26

+
+
+
+

g_settings_backend_path_changed ()

+
void
+g_settings_backend_path_changed (GSettingsBackend *backend,
+                                 const gchar *path,
+                                 gpointer origin_tag);
+

Signals that all keys below a given path may have possibly changed. +Backend implementations should call this if an entire path of keys +have possibly changed their values.

+

path + must be a valid path (ie starting and ending with a slash and +not containing '//').

+

The meaning of this signal is that any of the key which has a name +starting with path + may have changed.

+

The same rules for when notifications must occur apply as per +g_settings_backend_changed(). This call might be an appropriate +reasponse to a 'reset' call but implementations are also free to +explicitly list the keys that were affected by that call if they can +easily do so.

+

For efficiency reasons, the implementation should strive for path + to +be as long as possible (ie: the longest common prefix of all of the +keys that were changed) but this is not strictly required. As an +example, if this function is called with the path of "/" then every +single key in the application will be notified of a possible change.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

backend

a GSettingsBackend implementation

 

path

the path containing the changes

 

origin_tag

the origin tag

 
+
+

Since: 2.26

+
+
+
+

g_settings_backend_keys_changed ()

+
void
+g_settings_backend_keys_changed (GSettingsBackend *backend,
+                                 const gchar *path,
+                                 gchar const * const *items,
+                                 gpointer origin_tag);
+

Signals that a list of keys have possibly changed. Backend +implementations should call this if keys have possibly changed their +values.

+

path + must be a valid path (ie starting and ending with a slash and +not containing '//'). Each string in items + must form a valid key +name when path + is prefixed to it (ie: each item must not start or +end with '/' and must not contain '//').

+

The meaning of this signal is that any of the key names resulting +from the contatenation of path + with each item in items + may have +changed.

+

The same rules for when notifications must occur apply as per +g_settings_backend_changed(). These two calls can be used +interchangeably if exactly one item has changed (although in that +case g_settings_backend_changed() is definitely preferred).

+

For efficiency reasons, the implementation should strive for path + to +be as long as possible (ie: the longest common prefix of all of the +keys that were changed) but this is not strictly required.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

backend

a GSettingsBackend implementation

 

path

the path containing the changes

 

items

the NULL-terminated list of changed keys.

[array zero-terminated=1]

origin_tag

the origin tag

 
+
+

Since: 2.26

+
+
+
+

g_settings_backend_path_writable_changed ()

+
void
+g_settings_backend_path_writable_changed
+                               (GSettingsBackend *backend,
+                                const gchar *path);
+

Signals that the writability of all keys below a given path may have +changed.

+

Since GSettings performs no locking operations for itself, this call +will always be made in response to external events.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

backend

a GSettingsBackend implementation

 

path

the name of the path

 
+
+

Since: 2.26

+
+
+
+

g_settings_backend_writable_changed ()

+
void
+g_settings_backend_writable_changed (GSettingsBackend *backend,
+                                     const gchar *key);
+

Signals that the writability of a single key has possibly changed.

+

Since GSettings performs no locking operations for itself, this call +will always be made in response to external events.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

backend

a GSettingsBackend implementation

 

key

the name of the key

 
+
+

Since: 2.26

+
+
+
+

g_settings_backend_changed_tree ()

+
void
+g_settings_backend_changed_tree (GSettingsBackend *backend,
+                                 GTree *tree,
+                                 gpointer origin_tag);
+

This call is a convenience wrapper. It gets the list of changes from +tree +, computes the longest common prefix and calls +g_settings_backend_changed().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

backend

a GSettingsBackend implementation

 

tree

a GTree containing the changes

 

origin_tag

the origin tag

 
+
+

Since: 2.26

+
+
+
+

g_settings_backend_flatten_tree ()

+
void
+g_settings_backend_flatten_tree (GTree *tree,
+                                 gchar **path,
+                                 const gchar ***keys,
+                                 GVariant ***values);
+

Calculate the longest common prefix of all keys in a tree and write +out an array of the key names relative to that prefix and, +optionally, the value to store at each of those keys.

+

You must free the value returned in path +, keys + and values + using +g_free(). You should not attempt to free or unref the contents of +keys + or values +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

tree

a GTree containing the changes

 

path

the location to save the path.

[out]

keys

the +location to save the relative keys.

[out][transfer container][array zero-terminated=1]

values

the location to save the values, or NULL.

[out][allow-none][transfer container][array zero-terminated=1]
+
+

Since: 2.26

+
+
+
+

g_keyfile_settings_backend_new ()

+
GSettingsBackend *
+g_keyfile_settings_backend_new (const gchar *filename,
+                                const gchar *root_path,
+                                const gchar *root_group);
+

Creates a keyfile-backed GSettingsBackend.

+

The filename of the keyfile to use is given by filename +.

+

All settings read to or written from the backend must fall under the +path given in root_path + (which must start and end with a slash and +not contain two consecutive slashes). root_path + may be "/".

+

If root_group + is non-NULL then it specifies the name of the keyfile +group used for keys that are written directly below root_path +. For +example, if root_path + is "/apps/example/" and root_group + is +"toplevel", then settings the key "/apps/example/enabled" to a value +of TRUE will cause the following to appear in the keyfile:

+
+ + + + + + + +
1
+2
[toplevel]
+enabled=true
+
+ +

+

If root_group + is NULL then it is not permitted to store keys +directly below the root_path +.

+

For keys not stored directly below root_path + (ie: in a sub-path), +the name of the subpath (with the final slash stripped) is used as +the name of the keyfile group. To continue the example, if +"/apps/example/profiles/default/font-size" were set to +12 then the following would appear in the keyfile:

+
+ + + + + + + +
1
+2
[profiles/default]
+font-size=12
+
+ +

+

The backend will refuse writes (and return writability as being +FALSE) for keys outside of root_path + and, in the event that +root_group + is NULL, also for keys directly under root_path +. +Writes will also be refused if the backend detects that it has the +inability to rewrite the keyfile (ie: the containing directory is not +writable).

+

There is no checking done for your key namespace clashing with the +syntax of the key file format. For example, if you have '[' or ']' +characters in your path names or '=' in your key names you may be in +trouble.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

filename

the filename of the keyfile

 

root_path

the path under which all settings keys appear

 

root_group

the group name corresponding to +root_path +, or NULL.

[allow-none]
+
+
+

Returns

+

a keyfile-backed GSettingsBackend.

+

[transfer full]

+
+
+
+
+

g_memory_settings_backend_new ()

+
GSettingsBackend *
+g_memory_settings_backend_new (void);
+

Creates a memory-backed GSettingsBackend.

+

This backend allows changes to settings, but does not write them +to any backing storage, so the next time you run your application, +the memory backend will start out with the default values again.

+
+

Returns

+

a newly created GSettingsBackend.

+

[transfer full]

+
+

Since: 2.28

+
+
+
+

g_null_settings_backend_new ()

+
GSettingsBackend *
+g_null_settings_backend_new (void);
+

Creates a readonly GSettingsBackend.

+

This backend does not allow changes to settings, so all settings +will always have their default values.

+
+

Returns

+

a newly created GSettingsBackend.

+

[transfer full]

+
+

Since: 2.28

+
+
+
+

Types and Values

+
+

GSettingsBackend

+
typedef struct _GSettingsBackend GSettingsBackend;
+

An implementation of a settings storage repository.

+
+
+
+

struct 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);
+
+  GVariant *    (*read_user_value)  (GSettingsBackend    *backend,
+                                     const gchar         *key,
+                                     const GVariantType  *expected_type);
+};
+
+

Class structure for GSettingsBackend.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GObjectClass parent_class;

  

read ()

virtual method to read a key's value

 

get_writable ()

virtual method to get if a key is writable

 

write ()

virtual method to change key's value

 

write_tree ()

virtual method to change a tree of keys

 

reset ()

virtual method to reset state

 

subscribe ()

virtual method to subscribe to key changes

 

unsubscribe ()

virtual method to unsubscribe to key changes

 

sync ()

virtual method to sync state

 

get_permission ()

virtual method to get permission of a key

 

read_user_value ()

virtual method to read user's key value

 
+
+
+
+
+

G_SETTINGS_BACKEND_EXTENSION_POINT_NAME

+
#define G_SETTINGS_BACKEND_EXTENSION_POINT_NAME "gsettings-backend"
+
+

Extension point for GSettingsBackend functionality.

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSimpleAction.html b/docs/reference/gio/html/GSimpleAction.html new file mode 100644 index 0000000..72efbdc --- /dev/null +++ b/docs/reference/gio/html/GSimpleAction.html @@ -0,0 +1,580 @@ + + + + +GSimpleAction: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSimpleAction

+

GSimpleAction — A simple GAction implementation

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+GSimpleAction * + +g_simple_action_new () +
+GSimpleAction * + +g_simple_action_new_stateful () +
+void + +g_simple_action_set_enabled () +
+void + +g_simple_action_set_state () +
+void + +g_simple_action_set_state_hint () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
gbooleanenabledRead / Write
+gchar *nameRead / Write / Construct Only
+GVariantType *parameter-typeRead / Write / Construct Only
+GVariant *stateRead / Write / Construct
+GVariantType *state-typeRead
+
+
+

Signals

+
+++++ + + + + + + + + + + + + +
voidactivateRun Last
voidchange-stateRun Last
+
+
+

Types and Values

+
++++ + + + + +
 GSimpleAction
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSimpleAction
+
+
+
+

Implemented Interfaces

+

+GSimpleAction implements + GAction.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A GSimpleAction is the obvious simple implementation of the GAction +interface. This is the easiest way to create an action for purposes of +adding it to a GSimpleActionGroup.

+

See also GtkAction.

+
+
+

Functions

+
+

g_simple_action_new ()

+
GSimpleAction *
+g_simple_action_new (const gchar *name,
+                     const GVariantType *parameter_type);
+

Creates a new action.

+

The created action is stateless. See g_simple_action_new_stateful().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

name

the name of the action

 

parameter_type

the type of parameter to the activate function.

[allow-none]
+
+
+

Returns

+

a new GSimpleAction

+
+

Since: 2.28

+
+
+
+

g_simple_action_new_stateful ()

+
GSimpleAction *
+g_simple_action_new_stateful (const gchar *name,
+                              const GVariantType *parameter_type,
+                              GVariant *state);
+

Creates a new stateful action.

+

state + is the initial state of the action. All future state values +must have the same GVariantType as the initial state.

+

If the state + GVariant is floating, it is consumed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

name

the name of the action

 

parameter_type

the type of the parameter to the activate function.

[allow-none]

state

the initial state of the action

 
+
+
+

Returns

+

a new GSimpleAction

+
+

Since: 2.28

+
+
+
+

g_simple_action_set_enabled ()

+
void
+g_simple_action_set_enabled (GSimpleAction *simple,
+                             gboolean enabled);
+

Sets the action as enabled or not.

+

An action must be enabled in order to be activated or in order to +have its state changed from outside callers.

+

This should only be called by the implementor of the action. Users +of the action should not attempt to modify its enabled flag.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

simple

a GSimpleAction

 

enabled

whether the action is enabled

 
+
+

Since: 2.28

+
+
+
+

g_simple_action_set_state ()

+
void
+g_simple_action_set_state (GSimpleAction *simple,
+                           GVariant *value);
+

Sets the state of the action.

+

This directly updates the 'state' property to the given value.

+

This should only be called by the implementor of the action. Users +of the action should not attempt to directly modify the 'state' +property. Instead, they should call g_action_change_state() to +request the change.

+

If the value + GVariant is floating, it is consumed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

simple

a GSimpleAction

 

value

the new GVariant for the state

 
+
+

Since: 2.30

+
+
+
+

g_simple_action_set_state_hint ()

+
void
+g_simple_action_set_state_hint (GSimpleAction *simple,
+                                GVariant *state_hint);
+

Sets the state hint for the action.

+

See g_action_get_state_hint() for more information about +action state hints.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

simple

a GSimpleAction

 

state_hint

a GVariant representing the state hint.

[allow-none]
+
+

Since: 2.44

+
+
+
+

Types and Values

+
+

GSimpleAction

+
typedef struct _GSimpleAction GSimpleAction;
+

GSimpleAction is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

Property Details

+
+

The “enabled” property

+
  “enabled”                  gboolean
+

If action + is currently enabled.

+

If the action is disabled then calls to g_action_activate() and +g_action_change_state() have no effect.

+

Flags: Read / Write

+

Default value: TRUE

+

Since: 2.28

+
+
+
+

The “name” property

+
  “name”                     gchar *
+

The name of the action. This is mostly meaningful for identifying +the action once it has been added to a GSimpleActionGroup.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.28

+
+
+
+

The “parameter-type” property

+
  “parameter-type”           GVariantType *
+

The type of the parameter that must be given when activating the +action.

+

Flags: Read / Write / Construct Only

+

Since: 2.28

+
+
+
+

The “state” property

+
  “state”                    GVariant *
+

The state of the action, or NULL if the action is stateless.

+

Flags: Read / Write / Construct

+

Allowed values: GVariant<*>

+

Default value: NULL

+

Since: 2.28

+
+
+
+

The “state-type” property

+
  “state-type”               GVariantType *
+

The GVariantType of the state that the action has, or NULL if the +action is stateless.

+

Flags: Read

+

Since: 2.28

+
+
+
+

Signal Details

+
+

The “activate” signal

+
void
+user_function (GSimpleAction *simple,
+               GVariant      *parameter,
+               gpointer       user_data)
+

Indicates that the action was just activated.

+

parameter + will always be of the expected type. In the event that +an incorrect type was given, no signal will be emitted.

+

Since GLib 2.40, if no handler is connected to this signal then the +default behaviour for boolean-stated actions with a NULL parameter +type is to toggle them via the “change-state” signal. +For stateful actions where the state type is equal to the parameter +type, the default is to forward them directly to +“change-state”. This should allow almost all users +of GSimpleAction to connect only one handler or the other.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

simple

the GSimpleAction

 

parameter

the parameter to the activation.

[allow-none]

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.28

+
+
+
+

The “change-state” signal

+
void
+user_function (GSimpleAction *simple,
+               GVariant      *value,
+               gpointer       user_data)
+

Indicates that the action just received a request to change its +state.

+

value + will always be of the correct state type. In the event that +an incorrect type was given, no signal will be emitted.

+

If no handler is connected to this signal then the default +behaviour is to call g_simple_action_set_state() to set the state +to the requested value. If you connect a signal handler then no +default action is taken. If the state should change then you must +call g_simple_action_set_state() from the handler.

+

An example of a 'change-state' handler:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
static void
+change_volume_state (GSimpleAction *action,
+                     GVariant      *value,
+                     gpointer       user_data)
+{
+  gint requested;
+
+  requested = g_variant_get_int32 (value);
+
+  // Volume only goes from 0 to 10
+  if (0 <= requested && requested <= 10)
+    g_simple_action_set_state (action, value);
+}
+
+ +

+

The handler need not set the state to the requested value. +It could set it to any value at all, or take some other action.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

simple

the GSimpleAction

 

value

the requested value for the state.

[allow-none]

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.30

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSimpleActionGroup.html b/docs/reference/gio/html/GSimpleActionGroup.html new file mode 100644 index 0000000..bcf234f --- /dev/null +++ b/docs/reference/gio/html/GSimpleActionGroup.html @@ -0,0 +1,317 @@ + + + + +GSimpleActionGroup: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSimpleActionGroup

+

GSimpleActionGroup — A simple GActionGroup implementation

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+GSimpleActionGroup * + +g_simple_action_group_new () +
+GAction * + +g_simple_action_group_lookup () +
+void + +g_simple_action_group_insert () +
+void + +g_simple_action_group_remove () +
+void + +g_simple_action_group_add_entries () +
+
+
+

Types and Values

+
++++ + + + + +
 GSimpleActionGroup
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSimpleActionGroup
+
+
+
+

Implemented Interfaces

+

+GSimpleActionGroup implements + GActionGroup and GActionMap.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GSimpleActionGroup is a hash table filled with GAction objects, +implementing the GActionGroup and GActionMap interfaces.

+
+
+

Functions

+
+

g_simple_action_group_new ()

+
GSimpleActionGroup *
+g_simple_action_group_new (void);
+

Creates a new, empty, GSimpleActionGroup.

+
+

Returns

+

a new GSimpleActionGroup

+
+

Since: 2.28

+
+
+
+

g_simple_action_group_lookup ()

+
GAction *
+g_simple_action_group_lookup (GSimpleActionGroup *simple,
+                              const gchar *action_name);
+
+

g_simple_action_group_lookup has been deprecated since version 2.38 and should not be used in newly-written code.

+

Use g_action_map_lookup_action()

+
+

Looks up the action with the name action_name + in the group.

+

If no such action exists, returns NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

simple

a GSimpleActionGroup

 

action_name

the name of an action

 
+
+
+

Returns

+

a GAction, or NULL.

+

[transfer none]

+
+

Since: 2.28

+
+
+
+

g_simple_action_group_insert ()

+
void
+g_simple_action_group_insert (GSimpleActionGroup *simple,
+                              GAction *action);
+
+

g_simple_action_group_insert has been deprecated since version 2.38 and should not be used in newly-written code.

+

Use g_action_map_add_action()

+
+

Adds an action to the action group.

+

If the action group already contains an action with the same name as +action + then the old action is dropped from the group.

+

The action group takes its own reference on action +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

simple

a GSimpleActionGroup

 

action

a GAction

 
+
+

Since: 2.28

+
+
+
+

g_simple_action_group_remove ()

+
void
+g_simple_action_group_remove (GSimpleActionGroup *simple,
+                              const gchar *action_name);
+
+

g_simple_action_group_remove has been deprecated since version 2.38 and should not be used in newly-written code.

+

Use g_action_map_remove_action()

+
+

Removes the named action from the action group.

+

If no action of this name is in the group then nothing happens.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

simple

a GSimpleActionGroup

 

action_name

the name of the action

 
+
+

Since: 2.28

+
+
+
+

g_simple_action_group_add_entries ()

+
void
+g_simple_action_group_add_entries (GSimpleActionGroup *simple,
+                                   const GActionEntry *entries,
+                                   gint n_entries,
+                                   gpointer user_data);
+
+

g_simple_action_group_add_entries has been deprecated since version 2.38 and should not be used in newly-written code.

+

Use g_action_map_add_action_entries()

+
+

A convenience function for creating multiple GSimpleAction instances +and adding them to the action group.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

simple

a GSimpleActionGroup

 

entries

a pointer to the first item in +an array of GActionEntry structs.

[array length=n_entries]

n_entries

the length of entries +, or -1

 

user_data

the user data for signal connections

 
+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

GSimpleActionGroup

+
typedef struct _GSimpleActionGroup GSimpleActionGroup;
+

The GSimpleActionGroup structure contains private data and should only be accessed using the provided API.

+

Since: 2.28

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSimpleAsyncResult.html b/docs/reference/gio/html/GSimpleAsyncResult.html new file mode 100644 index 0000000..3508ed7 --- /dev/null +++ b/docs/reference/gio/html/GSimpleAsyncResult.html @@ -0,0 +1,1730 @@ + + + + +GSimpleAsyncResult: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSimpleAsyncResult

+

GSimpleAsyncResult — Simple asynchronous results implementation

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +(*GSimpleAsyncThreadFunc) () +
+GSimpleAsyncResult * + +g_simple_async_result_new () +
+GSimpleAsyncResult * + +g_simple_async_result_new_error () +
+GSimpleAsyncResult * + +g_simple_async_result_new_from_error () +
+GSimpleAsyncResult * + +g_simple_async_result_new_take_error () +
+void + +g_simple_async_result_set_check_cancellable () +
+void + +g_simple_async_result_set_op_res_gpointer () +
+gpointer + +g_simple_async_result_get_op_res_gpointer () +
+void + +g_simple_async_result_set_op_res_gssize () +
+gssize + +g_simple_async_result_get_op_res_gssize () +
+void + +g_simple_async_result_set_op_res_gboolean () +
+gboolean + +g_simple_async_result_get_op_res_gboolean () +
+gpointer + +g_simple_async_result_get_source_tag () +
+gboolean + +g_simple_async_result_is_valid () +
+void + +g_simple_async_result_set_handle_cancellation () +
+void + +g_simple_async_result_complete () +
+void + +g_simple_async_result_complete_in_idle () +
+void + +g_simple_async_result_run_in_thread () +
+void + +g_simple_async_result_set_from_error () +
+void + +g_simple_async_result_take_error () +
+gboolean + +g_simple_async_result_propagate_error () +
+void + +g_simple_async_result_set_error () +
+void + +g_simple_async_result_set_error_va () +
+void + +g_simple_async_report_error_in_idle () +
+void + +g_simple_async_report_gerror_in_idle () +
+void + +g_simple_async_report_take_gerror_in_idle () +
+
+
+

Types and Values

+
++++ + + + + +
 GSimpleAsyncResult
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSimpleAsyncResult
+
+
+
+

Implemented Interfaces

+

+GSimpleAsyncResult implements + GAsyncResult.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

As of GLib 2.46, GSimpleAsyncResult is deprecated in favor of +GTask, which provides a simpler API.

+

GSimpleAsyncResult implements GAsyncResult.

+

GSimpleAsyncResult handles GAsyncReadyCallbacks, error +reporting, operation cancellation and the final state of an operation, +completely transparent to the application. Results can be returned +as a pointer e.g. for functions that return data that is collected +asynchronously, a boolean value for checking the success or failure +of an operation, or a gssize for operations which return the number +of bytes modified by the operation; all of the simple return cases +are covered.

+

Most of the time, an application will not need to know of the details +of this API; it is handled transparently, and any necessary operations +are handled by GAsyncResult's interface. However, if implementing a +new GIO module, for writing language bindings, or for complex +applications that need better control of how asynchronous operations +are completed, it is important to understand this functionality.

+

GSimpleAsyncResults are tagged with the calling function to ensure +that asynchronous functions and their finishing functions are used +together correctly.

+

To create a new GSimpleAsyncResult, call g_simple_async_result_new(). +If the result needs to be created for a GError, use +g_simple_async_result_new_from_error() or +g_simple_async_result_new_take_error(). If a GError is not available +(e.g. the asynchronous operation's doesn't take a GError argument), +but the result still needs to be created for an error condition, use +g_simple_async_result_new_error() (or g_simple_async_result_set_error_va() +if your application or binding requires passing a variable argument list +directly), and the error can then be propagated through the use of +g_simple_async_result_propagate_error().

+

An asynchronous operation can be made to ignore a cancellation event by +calling g_simple_async_result_set_handle_cancellation() with a +GSimpleAsyncResult for the operation and FALSE. This is useful for +operations that are dangerous to cancel, such as close (which would +cause a leak if cancelled before being run).

+

GSimpleAsyncResult can integrate into GLib's event loop, GMainLoop, +or it can use GThreads. +g_simple_async_result_complete() will finish an I/O task directly +from the point where it is called. g_simple_async_result_complete_in_idle() +will finish it from an idle handler in the +thread-default main context +. g_simple_async_result_run_in_thread() will run the +job in a separate thread and then deliver the result to the +thread-default main context.

+

To set the results of an asynchronous function, +g_simple_async_result_set_op_res_gpointer(), +g_simple_async_result_set_op_res_gboolean(), and +g_simple_async_result_set_op_res_gssize() +are provided, setting the operation's result to a gpointer, gboolean, or +gssize, respectively.

+

Likewise, to get the result of an asynchronous function, +g_simple_async_result_get_op_res_gpointer(), +g_simple_async_result_get_op_res_gboolean(), and +g_simple_async_result_get_op_res_gssize() are +provided, getting the operation's result as a gpointer, gboolean, and +gssize, respectively.

+

For the details of the requirements implementations must respect, see +GAsyncResult. A typical implementation of an asynchronous operation +using GSimpleAsyncResult looks something like this:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
static void
+baked_cb (Cake    *cake,
+          gpointer user_data)
+{
+  // In this example, this callback is not given a reference to the cake,
+  // so the GSimpleAsyncResult has to take a reference to it.
+  GSimpleAsyncResult *result = user_data;
+
+  if (cake == NULL)
+    g_simple_async_result_set_error (result,
+                                     BAKER_ERRORS,
+                                     BAKER_ERROR_NO_FLOUR,
+                                     "Go to the supermarket");
+  else
+    g_simple_async_result_set_op_res_gpointer (result,
+                                               g_object_ref (cake),
+                                               g_object_unref);
+
+
+  // In this example, we assume that baked_cb is called as a callback from
+  // the mainloop, so it's safe to complete the operation synchronously here.
+  // If, however, _baker_prepare_cake () might call its callback without
+  // first returning to the mainloop — inadvisable, but some APIs do so —
+  // we would need to use g_simple_async_result_complete_in_idle().
+  g_simple_async_result_complete (result);
+  g_object_unref (result);
+}
+
+void
+baker_bake_cake_async (Baker              *self,
+                       guint               radius,
+                       GAsyncReadyCallback callback,
+                       gpointer            user_data)
+{
+  GSimpleAsyncResult *simple;
+  Cake               *cake;
+
+  if (radius < 3)
+    {
+      g_simple_async_report_error_in_idle (G_OBJECT (self),
+                                           callback,
+                                           user_data,
+                                           BAKER_ERRORS,
+                                           BAKER_ERROR_TOO_SMALL,
+                                           "%ucm radius cakes are silly",
+                                           radius);
+      return;
+    }
+
+  simple = g_simple_async_result_new (G_OBJECT (self),
+                                      callback,
+                                      user_data,
+                                      baker_bake_cake_async);
+  cake = _baker_get_cached_cake (self, radius);
+
+  if (cake != NULL)
+    {
+      g_simple_async_result_set_op_res_gpointer (simple,
+                                                 g_object_ref (cake),
+                                                 g_object_unref);
+      g_simple_async_result_complete_in_idle (simple);
+      g_object_unref (simple);
+      // Drop the reference returned by _baker_get_cached_cake();
+      // the GSimpleAsyncResult has taken its own reference.
+      g_object_unref (cake);
+      return;
+    }
+
+  _baker_prepare_cake (self, radius, baked_cb, simple);
+}
+
+Cake *
+baker_bake_cake_finish (Baker        *self,
+                        GAsyncResult *result,
+                        GError      **error)
+{
+  GSimpleAsyncResult *simple;
+  Cake               *cake;
+
+  g_return_val_if_fail (g_simple_async_result_is_valid (result,
+                                                        G_OBJECT (self),
+                                                        baker_bake_cake_async),
+                        NULL);
+
+  simple = (GSimpleAsyncResult *) result;
+
+  if (g_simple_async_result_propagate_error (simple, error))
+    return NULL;
+
+  cake = CAKE (g_simple_async_result_get_op_res_gpointer (simple));
+  return g_object_ref (cake);
+}
+
+ +

+
+
+

Functions

+
+

GSimpleAsyncThreadFunc ()

+
void
+(*GSimpleAsyncThreadFunc) (GSimpleAsyncResult *res,
+                           GObject *object,
+                           GCancellable *cancellable);
+

Simple thread function that runs an asynchronous operation and +checks for cancellation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

res

a GSimpleAsyncResult.

 

object

a GObject.

 

cancellable

optional GCancellable object, NULL to ignore.

 
+
+
+
+
+

g_simple_async_result_new ()

+
GSimpleAsyncResult *
+g_simple_async_result_new (GObject *source_object,
+                           GAsyncReadyCallback callback,
+                           gpointer user_data,
+                           gpointer source_tag);
+
+

g_simple_async_result_new has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use g_task_new() instead.

+
+

Creates a GSimpleAsyncResult.

+

The common convention is to create the GSimpleAsyncResult in the +function that starts the asynchronous operation and use that same +function as the source_tag +.

+

If your operation supports cancellation with GCancellable (which it +probably should) then you should provide the user's cancellable to +g_simple_async_result_set_check_cancellable() immediately after +this function returns.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

source_object

a GObject, or NULL.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

user data passed to callback +.

[closure]

source_tag

the asynchronous function.

 
+
+
+

Returns

+

a GSimpleAsyncResult.

+
+
+
+
+

g_simple_async_result_new_error ()

+
GSimpleAsyncResult *
+g_simple_async_result_new_error (GObject *source_object,
+                                 GAsyncReadyCallback callback,
+                                 gpointer user_data,
+                                 GQuark domain,
+                                 gint code,
+                                 const char *format,
+                                 ...);
+
+

g_simple_async_result_new_error has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use g_task_new() and g_task_return_new_error() instead.

+
+

Creates a new GSimpleAsyncResult with a set error.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

source_object

a GObject, or NULL.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

user data passed to callback +.

[closure]

domain

a GQuark.

 

code

an error code.

 

format

a string with format characters.

 

...

a list of values to insert into format +.

 
+
+
+

Returns

+

a GSimpleAsyncResult.

+
+
+
+
+

g_simple_async_result_new_from_error ()

+
GSimpleAsyncResult *
+g_simple_async_result_new_from_error (GObject *source_object,
+                                      GAsyncReadyCallback callback,
+                                      gpointer user_data,
+                                      const GError *error);
+
+

g_simple_async_result_new_from_error has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use g_task_new() and g_task_return_error() instead.

+
+

Creates a GSimpleAsyncResult from an error condition.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

source_object

a GObject, or NULL.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

user data passed to callback +.

[closure]

error

a GError

 
+
+
+

Returns

+

a GSimpleAsyncResult.

+
+
+
+
+

g_simple_async_result_new_take_error ()

+
GSimpleAsyncResult *
+g_simple_async_result_new_take_error (GObject *source_object,
+                                      GAsyncReadyCallback callback,
+                                      gpointer user_data,
+                                      GError *error);
+
+

g_simple_async_result_new_take_error has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use g_task_new() and g_task_return_error() instead.

+
+

Creates a GSimpleAsyncResult from an error condition, and takes over the +caller's ownership of error +, so the caller does not need to free it anymore.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

source_object

a GObject, or NULL.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

user data passed to callback +.

[closure]

error

a GError

 
+
+
+

Returns

+

a GSimpleAsyncResult

+
+

Since: 2.28

+
+
+
+

g_simple_async_result_set_check_cancellable ()

+
void
+g_simple_async_result_set_check_cancellable
+                               (GSimpleAsyncResult *simple,
+                                GCancellable *check_cancellable);
+
+

g_simple_async_result_set_check_cancellable has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask instead.

+
+

Sets a GCancellable to check before dispatching results.

+

This function has one very specific purpose: the provided cancellable +is checked at the time of g_simple_async_result_propagate_error() If +it is cancelled, these functions will return an "Operation was +cancelled" error (G_IO_ERROR_CANCELLED).

+

Implementors of cancellable asynchronous functions should use this in +order to provide a guarantee to their callers that cancelling an +async operation will reliably result in an error being returned for +that operation (even if a positive result for the operation has +already been sent as an idle to the main context to be dispatched).

+

The checking described above is done regardless of any call to the +unrelated g_simple_async_result_set_handle_cancellation() function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

simple

a GSimpleAsyncResult

 

check_cancellable

a GCancellable to check, or NULL to unset.

[allow-none]
+
+

Since: 2.32

+
+
+
+

g_simple_async_result_set_op_res_gpointer ()

+
void
+g_simple_async_result_set_op_res_gpointer
+                               (GSimpleAsyncResult *simple,
+                                gpointer op_res,
+                                GDestroyNotify destroy_op_res);
+
+

g_simple_async_result_set_op_res_gpointer has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask and g_task_return_pointer() instead.

+
+

Sets the operation result within the asynchronous result to a pointer.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

simple

a GSimpleAsyncResult.

 

op_res

a pointer result from an asynchronous function.

 

destroy_op_res

a GDestroyNotify function.

 
+
+
+
+
+

g_simple_async_result_get_op_res_gpointer ()

+
gpointer
+g_simple_async_result_get_op_res_gpointer
+                               (GSimpleAsyncResult *simple);
+
+

g_simple_async_result_get_op_res_gpointer has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask and g_task_propagate_pointer() instead.

+
+

Gets a pointer result as returned by the asynchronous function.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

simple

a GSimpleAsyncResult.

 
+
+
+

Returns

+

a pointer from the result.

+
+
+
+
+

g_simple_async_result_set_op_res_gssize ()

+
void
+g_simple_async_result_set_op_res_gssize
+                               (GSimpleAsyncResult *simple,
+                                gssize op_res);
+
+

g_simple_async_result_set_op_res_gssize has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask and g_task_return_int() instead.

+
+

Sets the operation result within the asynchronous result to +the given op_res +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

simple

a GSimpleAsyncResult.

 

op_res

a gssize.

 
+
+
+
+
+

g_simple_async_result_get_op_res_gssize ()

+
gssize
+g_simple_async_result_get_op_res_gssize
+                               (GSimpleAsyncResult *simple);
+
+

g_simple_async_result_get_op_res_gssize has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask and g_task_propagate_int() instead.

+
+

Gets a gssize from the asynchronous result.

+
+

Parameters

+
+++++ + + + + + +

simple

a GSimpleAsyncResult.

 
+
+
+

Returns

+

a gssize returned from the asynchronous function.

+
+
+
+
+

g_simple_async_result_set_op_res_gboolean ()

+
void
+g_simple_async_result_set_op_res_gboolean
+                               (GSimpleAsyncResult *simple,
+                                gboolean op_res);
+
+

g_simple_async_result_set_op_res_gboolean has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask and g_task_return_boolean() instead.

+
+

Sets the operation result to a boolean within the asynchronous result.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

simple

a GSimpleAsyncResult.

 

op_res

a gboolean.

 
+
+
+
+
+

g_simple_async_result_get_op_res_gboolean ()

+
gboolean
+g_simple_async_result_get_op_res_gboolean
+                               (GSimpleAsyncResult *simple);
+
+

g_simple_async_result_get_op_res_gboolean has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask and g_task_propagate_boolean() instead.

+
+

Gets the operation result boolean from within the asynchronous result.

+
+

Parameters

+
+++++ + + + + + +

simple

a GSimpleAsyncResult.

 
+
+
+

Returns

+

TRUE if the operation's result was TRUE, FALSE +if the operation's result was FALSE.

+
+
+
+
+

g_simple_async_result_get_source_tag ()

+
gpointer
+g_simple_async_result_get_source_tag (GSimpleAsyncResult *simple);
+
+

g_simple_async_result_get_source_tag has been deprecated since version 2.46. and should not be used in newly-written code.

+

Use GTask and g_task_get_source_tag() instead.

+
+

Gets the source tag for the GSimpleAsyncResult.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

simple

a GSimpleAsyncResult.

 
+
+
+

Returns

+

a gpointer to the source object for the GSimpleAsyncResult.

+
+
+
+
+

g_simple_async_result_is_valid ()

+
gboolean
+g_simple_async_result_is_valid (GAsyncResult *result,
+                                GObject *source,
+                                gpointer source_tag);
+
+

g_simple_async_result_is_valid has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask and g_task_is_valid() instead.

+
+

Ensures that the data passed to the _finish function of an async +operation is consistent. Three checks are performed.

+

First, result + is checked to ensure that it is really a +GSimpleAsyncResult. Second, source + is checked to ensure that it +matches the source object of result +. Third, source_tag + is +checked to ensure that it is equal to the source_tag + argument given +to g_simple_async_result_new() (which, by convention, is a pointer +to the _async function corresponding to the _finish function from +which this function is called). (Alternatively, if either +source_tag + or result +'s source tag is NULL, then the source tag +check is skipped.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

result

the GAsyncResult passed to the _finish function.

 

source

the GObject passed to the _finish function.

[allow-none]

source_tag

the asynchronous function.

[allow-none]
+
+
+

Returns

+

TRUE if all checks passed or FALSE if any failed.

+
+

Since: 2.20

+
+
+
+

g_simple_async_result_set_handle_cancellation ()

+
void
+g_simple_async_result_set_handle_cancellation
+                               (GSimpleAsyncResult *simple,
+                                gboolean handle_cancellation);
+

g_simple_async_result_set_handle_cancellation has been deprecated since version 2.46 and should not be used in newly-written code.

+

Sets whether to handle cancellation within the asynchronous operation.

+

This function has nothing to do with +g_simple_async_result_set_check_cancellable(). It only refers to the +GCancellable passed to g_simple_async_result_run_in_thread().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

simple

a GSimpleAsyncResult.

 

handle_cancellation

a gboolean.

 
+
+
+
+
+

g_simple_async_result_complete ()

+
void
+g_simple_async_result_complete (GSimpleAsyncResult *simple);
+
+

g_simple_async_result_complete has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask instead.

+
+

Completes an asynchronous I/O job immediately. Must be called in +the thread where the asynchronous result was to be delivered, as it +invokes the callback directly. If you are in a different thread use +g_simple_async_result_complete_in_idle().

+

Calling this function takes a reference to simple + for as long as +is needed to complete the call.

+
+

Parameters

+
+++++ + + + + + +

simple

a GSimpleAsyncResult.

 
+
+
+
+
+

g_simple_async_result_complete_in_idle ()

+
void
+g_simple_async_result_complete_in_idle
+                               (GSimpleAsyncResult *simple);
+
+

g_simple_async_result_complete_in_idle has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask instead.

+
+

Completes an asynchronous function in an idle handler in the +thread-default main context +of the thread that simple + was initially created in +(and re-pushes that context around the invocation of the callback).

+

Calling this function takes a reference to simple + for as long as +is needed to complete the call.

+
+

Parameters

+
+++++ + + + + + +

simple

a GSimpleAsyncResult.

 
+
+
+
+
+

g_simple_async_result_run_in_thread ()

+
void
+g_simple_async_result_run_in_thread (GSimpleAsyncResult *simple,
+                                     GSimpleAsyncThreadFunc func,
+                                     int io_priority,
+                                     GCancellable *cancellable);
+
+

g_simple_async_result_run_in_thread has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask and g_task_run_in_thread() instead.

+
+

Runs the asynchronous job in a separate thread and then calls +g_simple_async_result_complete_in_idle() on simple + to return +the result to the appropriate main loop.

+

Calling this function takes a reference to simple + for as long as +is needed to run the job and report its completion.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

simple

a GSimpleAsyncResult.

 

func

a GSimpleAsyncThreadFunc.

 

io_priority

the io priority of the request.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]
+
+
+
+
+

g_simple_async_result_set_from_error ()

+
void
+g_simple_async_result_set_from_error (GSimpleAsyncResult *simple,
+                                      const GError *error);
+
+

g_simple_async_result_set_from_error has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask and g_task_return_error() instead.

+
+

Sets the result from a GError.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

simple

a GSimpleAsyncResult.

 

error

GError.

 
+
+
+
+
+

g_simple_async_result_take_error ()

+
void
+g_simple_async_result_take_error (GSimpleAsyncResult *simple,
+                                  GError *error);
+
+

g_simple_async_result_take_error has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask and g_task_return_error() instead.

+
+

Sets the result from error +, and takes over the caller's ownership +of error +, so the caller does not need to free it any more.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

simple

a GSimpleAsyncResult

 

error

a GError

 
+
+

Since: 2.28

+
+
+
+

g_simple_async_result_propagate_error ()

+
gboolean
+g_simple_async_result_propagate_error (GSimpleAsyncResult *simple,
+                                       GError **dest);
+
+

g_simple_async_result_propagate_error has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask instead.

+
+

Propagates an error from within the simple asynchronous result to +a given destination.

+

If the GCancellable given to a prior call to +g_simple_async_result_set_check_cancellable() is cancelled then this +function will return TRUE with dest + set appropriately.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

simple

a GSimpleAsyncResult.

 

dest

a location to propagate the error to.

[out]
+
+
+

Returns

+

TRUE if the error was propagated to dest +. FALSE otherwise.

+
+
+
+
+

g_simple_async_result_set_error ()

+
void
+g_simple_async_result_set_error (GSimpleAsyncResult *simple,
+                                 GQuark domain,
+                                 gint code,
+                                 const char *format,
+                                 ...);
+
+

g_simple_async_result_set_error has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask and g_task_return_new_error() instead.

+
+

Sets an error within the asynchronous result without a GError.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

simple

a GSimpleAsyncResult.

 

domain

a GQuark (usually G_IO_ERROR).

 

code

an error code.

 

format

a formatted error reporting string.

 

...

a list of variables to fill in format +.

 
+
+
+
+
+

g_simple_async_result_set_error_va ()

+
void
+g_simple_async_result_set_error_va (GSimpleAsyncResult *simple,
+                                    GQuark domain,
+                                    gint code,
+                                    const char *format,
+                                    va_list args);
+
+

g_simple_async_result_set_error_va has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use GTask and g_task_return_error() instead.

+
+

Sets an error within the asynchronous result without a GError. +Unless writing a binding, see g_simple_async_result_set_error().

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

simple

a GSimpleAsyncResult.

 

domain

a GQuark (usually G_IO_ERROR).

 

code

an error code.

 

format

a formatted error reporting string.

 

args

va_list of arguments.

 
+
+
+
+
+

g_simple_async_report_error_in_idle ()

+
void
+g_simple_async_report_error_in_idle (GObject *object,
+                                     GAsyncReadyCallback callback,
+                                     gpointer user_data,
+                                     GQuark domain,
+                                     gint code,
+                                     const char *format,
+                                     ...);
+
+

g_simple_async_report_error_in_idle has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use g_task_report_error().

+
+

Reports an error in an asynchronous function in an idle function by +directly setting the contents of the GAsyncResult with the given error +information.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

object

a GObject, or NULL.

[allow-none]

callback

a GAsyncReadyCallback.

 

user_data

user data passed to callback +.

 

domain

a GQuark containing the error domain (usually G_IO_ERROR).

 

code

a specific error code.

 

format

a formatted error reporting string.

 

...

a list of variables to fill in format +.

 
+
+
+
+
+

g_simple_async_report_gerror_in_idle ()

+
void
+g_simple_async_report_gerror_in_idle (GObject *object,
+                                      GAsyncReadyCallback callback,
+                                      gpointer user_data,
+                                      const GError *error);
+
+

g_simple_async_report_gerror_in_idle has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use g_task_report_error().

+
+

Reports an error in an idle function. Similar to +g_simple_async_report_error_in_idle(), but takes a GError rather +than building a new one.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

object

a GObject, or NULL.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

user data passed to callback +.

[closure]

error

the GError to report

 
+
+
+
+
+

g_simple_async_report_take_gerror_in_idle ()

+
void
+g_simple_async_report_take_gerror_in_idle
+                               (GObject *object,
+                                GAsyncReadyCallback callback,
+                                gpointer user_data,
+                                GError *error);
+
+

g_simple_async_report_take_gerror_in_idle has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use g_task_report_error().

+
+

Reports an error in an idle function. Similar to +g_simple_async_report_gerror_in_idle(), but takes over the caller's +ownership of error +, so the caller does not have to free it any more.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

object

a GObject, or NULL.

[allow-none]

callback

a GAsyncReadyCallback.

 

user_data

user data passed to callback +.

 

error

the GError to report

 
+
+

Since: 2.28

+
+
+
+

Types and Values

+
+

GSimpleAsyncResult

+
typedef struct _GSimpleAsyncResult GSimpleAsyncResult;
+

A simple implementation of GAsyncResult.

+
+
+
+

See Also

+

GAsyncResult, GTask

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSimpleIOStream.html b/docs/reference/gio/html/GSimpleIOStream.html new file mode 100644 index 0000000..b5eae86 --- /dev/null +++ b/docs/reference/gio/html/GSimpleIOStream.html @@ -0,0 +1,187 @@ + + + + +GSimpleIOStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSimpleIOStream

+

GSimpleIOStream — A wrapper around an input and an output stream.

+
+
+

Functions

+
++++ + + + + +
+GIOStream * + +g_simple_io_stream_new () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + +
+GInputStream *input-streamRead / Write / Construct Only
+GOutputStream *output-streamRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GSimpleIOStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GIOStream
+        ╰── GSimpleIOStream
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GSimpleIOStream creates a GIOStream from an arbitrary GInputStream and +GOutputStream. This allows any pair of input and output streams to be used +with GIOStream methods.

+

This is useful when you obtained a GInputStream and a GOutputStream +by other means, for instance creating them with platform specific methods as +g_unix_input_stream_new() or g_win32_input_stream_new(), and you want +to take advantage of the methods provided by GIOStream.

+
+
+

Functions

+
+

g_simple_io_stream_new ()

+
GIOStream *
+g_simple_io_stream_new (GInputStream *input_stream,
+                        GOutputStream *output_stream);
+

Creates a new GSimpleIOStream wrapping input_stream + and output_stream +. +See also GIOStream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

input_stream

a GInputStream.

 

output_stream

a GOutputStream.

 
+
+
+

Returns

+

a new GSimpleIOStream instance.

+
+

Since: 2.44

+
+
+
+

Types and Values

+
+

GSimpleIOStream

+
typedef struct _GSimpleIOStream GSimpleIOStream;
+

A wrapper around a GInputStream and a GOutputStream.

+

Since: 2.44

+
+
+
+

Property Details

+
+

The “input-stream” property

+
  “input-stream”             GInputStream *
+

The GInputStream to read from.

+

Flags: Read / Write / Construct Only

+

Since: 2.44

+
+
+
+

The “output-stream” property

+
  “output-stream”            GOutputStream *
+

The GOutputStream to write to.

+

Flags: Read / Write / Construct Only

+

Since: 2.44

+
+
+
+

See Also

+

GIOStream

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSimplePermission.html b/docs/reference/gio/html/GSimplePermission.html new file mode 100644 index 0000000..cda459e --- /dev/null +++ b/docs/reference/gio/html/GSimplePermission.html @@ -0,0 +1,127 @@ + + + + +GSimplePermission: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSimplePermission

+

GSimplePermission — A GPermission that doesn't change value

+
+
+

Functions

+
++++ + + + + +
+GPermission * + +g_simple_permission_new () +
+
+
+

Types and Values

+
++++ + + + + +
 GSimplePermission
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GPermission
+        ╰── GSimplePermission
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GSimplePermission is a trivial implementation of GPermission that +represents a permission that is either always or never allowed. The +value is given at construction and doesn't change.

+

Calling request or release will result in errors.

+
+
+

Functions

+
+

g_simple_permission_new ()

+
GPermission *
+g_simple_permission_new (gboolean allowed);
+

Creates a new GPermission instance that represents an action that is +either always or never allowed.

+
+

Parameters

+
+++++ + + + + + +

allowed

TRUE if the action is allowed

 
+
+
+

Returns

+

the GSimplePermission, as a GPermission

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GSimplePermission

+
typedef struct _GSimplePermission GSimplePermission;
+

GSimplePermission is an opaque data structure. There are no methods +except for those defined by GPermission.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSimpleProxyResolver.html b/docs/reference/gio/html/GSimpleProxyResolver.html new file mode 100644 index 0000000..020f0f4 --- /dev/null +++ b/docs/reference/gio/html/GSimpleProxyResolver.html @@ -0,0 +1,373 @@ + + + + +GSimpleProxyResolver: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSimpleProxyResolver

+

GSimpleProxyResolver — Simple proxy resolver implementation

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+GProxyResolver * + +g_simple_proxy_resolver_new () +
+void + +g_simple_proxy_resolver_set_default_proxy () +
+void + +g_simple_proxy_resolver_set_ignore_hosts () +
+void + +g_simple_proxy_resolver_set_uri_proxy () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + +
+gchar *default-proxyRead / Write
GStrvignore-hostsRead / Write
+
+
+

Types and Values

+
++++ + + + + +
structGSimpleProxyResolver
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSimpleProxyResolver
+
+
+
+

Implemented Interfaces

+

+GSimpleProxyResolver implements + GProxyResolver.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GSimpleProxyResolver is a simple GProxyResolver implementation +that handles a single default proxy, multiple URI-scheme-specific +proxies, and a list of hosts that proxies should not be used for.

+

GSimpleProxyResolver is never the default proxy resolver, but it +can be used as the base class for another proxy resolver +implementation, or it can be created and used manually, such as +with g_socket_client_set_proxy_resolver().

+
+
+

Functions

+
+

g_simple_proxy_resolver_new ()

+
GProxyResolver *
+g_simple_proxy_resolver_new (const gchar *default_proxy,
+                             gchar **ignore_hosts);
+

Creates a new GSimpleProxyResolver. See +“default-proxy” and +“ignore-hosts” for more details on how the +arguments are interpreted.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

default_proxy

the default proxy to use, eg +"socks://192.168.1.1".

[allow-none]

ignore_hosts

an optional list of hosts/IP addresses +to not use a proxy for.

[allow-none]
+
+
+

Returns

+

(transfer full) a new GSimpleProxyResolver

+
+

Since: 2.36

+
+
+
+

g_simple_proxy_resolver_set_default_proxy ()

+
void
+g_simple_proxy_resolver_set_default_proxy
+                               (GSimpleProxyResolver *resolver,
+                                const gchar *default_proxy);
+

Sets the default proxy on resolver +, to be used for any URIs that +don't match “ignore-hosts” or a proxy set +via g_simple_proxy_resolver_set_uri_proxy().

+

If default_proxy + starts with "socks://", +GSimpleProxyResolver will treat it as referring to all three of +the socks5, socks4a, and socks4 proxy types.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

resolver

a GSimpleProxyResolver

 

default_proxy

the default proxy to use

 
+
+

Since: 2.36

+
+
+
+

g_simple_proxy_resolver_set_ignore_hosts ()

+
void
+g_simple_proxy_resolver_set_ignore_hosts
+                               (GSimpleProxyResolver *resolver,
+                                gchar **ignore_hosts);
+

Sets the list of ignored hosts.

+

See “ignore-hosts” for more details on how the +ignore_hosts + argument is interpreted.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

resolver

a GSimpleProxyResolver

 

ignore_hosts

NULL-terminated list of hosts/IP addresses +to not use a proxy for

 
+
+

Since: 2.36

+
+
+
+

g_simple_proxy_resolver_set_uri_proxy ()

+
void
+g_simple_proxy_resolver_set_uri_proxy (GSimpleProxyResolver *resolver,
+                                       const gchar *uri_scheme,
+                                       const gchar *proxy);
+

Adds a URI-scheme-specific proxy to resolver +; URIs whose scheme +matches uri_scheme + (and which don't match +“ignore-hosts”) will be proxied via proxy +.

+

As with “default-proxy”, if proxy + starts with +"socks://", GSimpleProxyResolver will treat it +as referring to all three of the socks5, socks4a, and socks4 proxy +types.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

resolver

a GSimpleProxyResolver

 

uri_scheme

the URI scheme to add a proxy for

 

proxy

the proxy to use for uri_scheme +

 
+
+

Since: 2.36

+
+
+
+

Types and Values

+
+

struct GSimpleProxyResolver

+
struct GSimpleProxyResolver;
+

A GProxyResolver implementation for using a fixed set of proxies.

+
+
+
+

Property Details

+
+

The “default-proxy” property

+
  “default-proxy”            gchar *
+

The default proxy URI that will be used for any URI that doesn't +match “ignore-hosts”, and doesn't match any +of the schemes set with g_simple_proxy_resolver_set_uri_proxy().

+

Note that as a special case, if this URI starts with +"socks://", GSimpleProxyResolver will treat it as referring +to all three of the socks5, socks4a, and socks4 proxy types.

+

Flags: Read / Write

+

Default value: NULL

+
+
+
+

The “ignore-hosts” property

+
  “ignore-hosts”             GStrv
+

A list of hostnames and IP addresses that the resolver should +allow direct connections to.

+

Entries can be in one of 4 formats:

+
    +
  • A hostname, such as "example.com", ".example.com", or +"*.example.com", any of which match "example.com" or +any subdomain of it.

  • +
  • An IPv4 or IPv6 address, such as "192.168.1.1", +which matches only that address.

  • +
  • A hostname or IP address followed by a port, such as +"example.com:80", which matches whatever the hostname or IP +address would match, but only for URLs with the (explicitly) +indicated port. In the case of an IPv6 address, the address +part must appear in brackets: "[::1]:443"

  • +
  • An IP address range, given by a base address and prefix length, +such as "fe80::/10", which matches any address in that range.

  • +
+

Note that when dealing with Unicode hostnames, the matching is +done against the ASCII form of the name.

+

Also note that hostname exclusions apply only to connections made +to hosts identified by name, and IP address exclusions apply only +to connections made to hosts identified by address. That is, if +example.com has an address of 192.168.1.1, and the :ignore-hosts list +contains only "192.168.1.1", then a connection to "example.com" +(eg, via a GNetworkAddress) will use the proxy, and a connection to +"192.168.1.1" (eg, via a GInetSocketAddress) will not.

+

These rules match the "ignore-hosts"/"noproxy" rules most +commonly used by other applications.

+

Flags: Read / Write

+
+
+
+

See Also

+

g_socket_client_set_proxy_resolver()

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSocket.html b/docs/reference/gio/html/GSocket.html new file mode 100644 index 0000000..e7cecb7 --- /dev/null +++ b/docs/reference/gio/html/GSocket.html @@ -0,0 +1,4069 @@ + + + + +GSocket: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSocket

+

GSocket — Low-level socket object

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +(*GSocketSourceFunc) () +
+GSocket * + +g_socket_new () +
+GSocket * + +g_socket_new_from_fd () +
+gboolean + +g_socket_bind () +
+gboolean + +g_socket_listen () +
+GSocket * + +g_socket_accept () +
+gboolean + +g_socket_connect () +
+gboolean + +g_socket_check_connect_result () +
+gssize + +g_socket_receive () +
+gssize + +g_socket_receive_from () +
+gssize + +g_socket_receive_message () +
+gint + +g_socket_receive_messages () +
+gssize + +g_socket_receive_with_blocking () +
+gssize + +g_socket_send () +
+gssize + +g_socket_send_to () +
+gssize + +g_socket_send_message () +
+gint + +g_socket_send_messages () +
+gssize + +g_socket_send_with_blocking () +
+gboolean + +g_socket_close () +
+gboolean + +g_socket_is_closed () +
+gboolean + +g_socket_shutdown () +
+gboolean + +g_socket_is_connected () +
+GSource * + +g_socket_create_source () +
+GIOCondition + +g_socket_condition_check () +
+gboolean + +g_socket_condition_wait () +
+gboolean + +g_socket_condition_timed_wait () +
+gssize + +g_socket_get_available_bytes () +
+void + +g_socket_set_listen_backlog () +
+gint + +g_socket_get_listen_backlog () +
+gboolean + +g_socket_get_blocking () +
+void + +g_socket_set_blocking () +
+gboolean + +g_socket_get_keepalive () +
+void + +g_socket_set_keepalive () +
+guint + +g_socket_get_timeout () +
+void + +g_socket_set_timeout () +
+void + +g_socket_set_ttl () +
+guint + +g_socket_get_ttl () +
+gboolean + +g_socket_get_broadcast () +
+void + +g_socket_set_broadcast () +
+gboolean + +g_socket_get_option () +
+gboolean + +g_socket_set_option () +
+GSocketFamily + +g_socket_get_family () +
+int + +g_socket_get_fd () +
+GSocketAddress * + +g_socket_get_local_address () +
+GSocketProtocol + +g_socket_get_protocol () +
+GSocketAddress * + +g_socket_get_remote_address () +
+GSocketType + +g_socket_get_socket_type () +
+gboolean + +g_socket_speaks_ipv4 () +
+GCredentials * + +g_socket_get_credentials () +
+gboolean + +g_socket_join_multicast_group () +
+gboolean + +g_socket_leave_multicast_group () +
+gboolean + +g_socket_get_multicast_loopback () +
+void + +g_socket_set_multicast_loopback () +
+guint + +g_socket_get_multicast_ttl () +
+void + +g_socket_set_multicast_ttl () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
gbooleanblockingRead / Write
gbooleanbroadcastRead / Write
GSocketFamilyfamilyRead / Write / Construct Only
gintfdRead / Write / Construct Only
gbooleankeepaliveRead / Write
gintlisten-backlogRead / Write
+GSocketAddress *local-addressRead
gbooleanmulticast-loopbackRead / Write
guintmulticast-ttlRead / Write
GSocketProtocolprotocolRead / Write / Construct Only
+GSocketAddress *remote-addressRead
guinttimeoutRead / Write
guintttlRead / Write
GSocketTypetypeRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 GSocket
enumGSocketType
enumGSocketProtocol
enumGSocketMsgFlags
structGInputVector
structGInputMessage
structGOutputVector
structGOutputMessage
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSocket
+
+
+
+

Implemented Interfaces

+

+GSocket implements + GInitable and GDatagramBased.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A GSocket is a low-level networking primitive. It is a more or less +direct mapping of the BSD socket API in a portable GObject based API. +It supports both the UNIX socket implementations and winsock2 on Windows.

+

GSocket is the platform independent base upon which the higher level +network primitives are based. Applications are not typically meant to +use it directly, but rather through classes like GSocketClient, +GSocketService and GSocketConnection. However there may be cases where +direct use of GSocket is useful.

+

GSocket implements the GInitable interface, so if it is manually constructed +by e.g. g_object_new() you must call g_initable_init() and check the +results before using the object. This is done automatically in +g_socket_new() and g_socket_new_from_fd(), so these functions can return +NULL.

+

Sockets operate in two general modes, blocking or non-blocking. When +in blocking mode all operations (which don’t take an explicit blocking +parameter) block until the requested operation +is finished or there is an error. In non-blocking mode all calls that +would block return immediately with a G_IO_ERROR_WOULD_BLOCK error. +To know when a call would successfully run you can call g_socket_condition_check(), +or g_socket_condition_wait(). You can also use g_socket_create_source() and +attach it to a GMainContext to get callbacks when I/O is possible. +Note that all sockets are always set to non blocking mode in the system, and +blocking mode is emulated in GSocket.

+

When working in non-blocking mode applications should always be able to +handle getting a G_IO_ERROR_WOULD_BLOCK error even when some other +function said that I/O was possible. This can easily happen in case +of a race condition in the application, but it can also happen for other +reasons. For instance, on Windows a socket is always seen as writable +until a write returns G_IO_ERROR_WOULD_BLOCK.

+

GSockets can be either connection oriented or datagram based. +For connection oriented types you must first establish a connection by +either connecting to an address or accepting a connection from another +address. For connectionless socket types the target/source address is +specified or received in each I/O operation.

+

All socket file descriptors are set to be close-on-exec.

+

Note that creating a GSocket causes the signal SIGPIPE to be +ignored for the remainder of the program. If you are writing a +command-line utility that uses GSocket, you may need to take into +account the fact that your program will not automatically be killed +if it tries to write to stdout after it has been closed.

+

Like most other APIs in GLib, GSocket is not inherently thread safe. To use +a GSocket concurrently from multiple threads, you must implement your own +locking.

+
+
+

Functions

+
+

GSocketSourceFunc ()

+
gboolean
+(*GSocketSourceFunc) (GSocket *socket,
+                      GIOCondition condition,
+                      gpointer user_data);
+

This is the function type of the callback used for the GSource +returned by g_socket_create_source().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

socket

the GSocket

 

condition

the current condition at the source fired.

 

user_data

data passed in by the user.

 
+
+
+

Returns

+

it should return FALSE if the source should be removed.

+
+

Since: 2.22

+
+
+
+

g_socket_new ()

+
GSocket *
+g_socket_new (GSocketFamily family,
+              GSocketType type,
+              GSocketProtocol protocol,
+              GError **error);
+

Creates a new GSocket with the defined family, type and protocol. +If protocol + is 0 (G_SOCKET_PROTOCOL_DEFAULT) the default protocol type +for the family and type is used.

+

The protocol + is a family and type specific int that specifies what +kind of protocol to use. GSocketProtocol lists several common ones. +Many families only support one protocol, and use 0 for this, others +support several and using 0 means to use the default protocol for +the family and type.

+

The protocol id is passed directly to the operating +system, so you can use protocols not listed in GSocketProtocol if you +know the protocol number used for it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

family

the socket family to use, e.g. G_SOCKET_FAMILY_IPV4.

 

type

the socket type to use.

 

protocol

the id of the protocol to use, or 0 for default.

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

a GSocket or NULL on error. +Free the returned object with g_object_unref().

+
+

Since: 2.22

+
+
+
+

g_socket_new_from_fd ()

+
GSocket *
+g_socket_new_from_fd (gint fd,
+                      GError **error);
+

Creates a new GSocket from a native file descriptor +or winsock SOCKET handle.

+

This reads all the settings from the file descriptor so that +all properties should work. Note that the file descriptor +will be set to non-blocking mode, independent on the blocking +mode of the GSocket.

+

On success, the returned GSocket takes ownership of fd +. On failure, the +caller must close fd + themselves.

+

Since GLib 2.46, it is no longer a fatal error to call this on a non-socket +descriptor. Instead, a GError will be set with code G_IO_ERROR_FAILED

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

fd

a native socket file descriptor.

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

a GSocket or NULL on error. +Free the returned object with g_object_unref().

+
+

Since: 2.22

+
+
+
+

g_socket_bind ()

+
gboolean
+g_socket_bind (GSocket *socket,
+               GSocketAddress *address,
+               gboolean allow_reuse,
+               GError **error);
+

When a socket is created it is attached to an address family, but it +doesn't have an address in this family. g_socket_bind() assigns the +address (sometimes called name) of the socket.

+

It is generally required to bind to a local address before you can +receive connections. (See g_socket_listen() and g_socket_accept() ). +In certain situations, you may also want to bind a socket that will be +used to initiate connections, though this is not normally required.

+

If socket + is a TCP socket, then allow_reuse + controls the setting +of the SO_REUSEADDR socket option; normally it should be TRUE for +server sockets (sockets that you will eventually call +g_socket_accept() on), and FALSE for client sockets. (Failing to +set this flag on a server socket may cause g_socket_bind() to return +G_IO_ERROR_ADDRESS_IN_USE if the server program is stopped and then +immediately restarted.)

+

If socket + is a UDP socket, then allow_reuse + determines whether or +not other UDP sockets can be bound to the same address at the same +time. In particular, you can have several UDP sockets bound to the +same address, and they will all receive all of the multicast and +broadcast packets sent to that address. (The behavior of unicast +UDP packets to an address with multiple listeners is not defined.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket.

 

address

a GSocketAddress specifying the local address.

 

allow_reuse

whether to allow reusing this address

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

TRUE on success, FALSE on error.

+
+

Since: 2.22

+
+
+
+

g_socket_listen ()

+
gboolean
+g_socket_listen (GSocket *socket,
+                 GError **error);
+

Marks the socket as a server socket, i.e. a socket that is used +to accept incoming requests using g_socket_accept().

+

Before calling this the socket must be bound to a local address using +g_socket_bind().

+

To set the maximum amount of outstanding clients, use +g_socket_set_listen_backlog().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

socket

a GSocket.

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

TRUE on success, FALSE on error.

+
+

Since: 2.22

+
+
+
+

g_socket_accept ()

+
GSocket *
+g_socket_accept (GSocket *socket,
+                 GCancellable *cancellable,
+                 GError **error);
+

Accept incoming connections on a connection-based socket. This removes +the first outstanding connection request from the listening socket and +creates a GSocket object for it.

+

The socket + must be bound to a local address with g_socket_bind() and +must be listening for incoming connections (g_socket_listen()).

+

If there are no outstanding connections then the operation will block +or return G_IO_ERROR_WOULD_BLOCK if non-blocking I/O is enabled. +To be notified of an incoming connection, wait for the G_IO_IN condition.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

socket

a GSocket.

 

cancellable

a GCancellable or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

a new GSocket, or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_connect ()

+
gboolean
+g_socket_connect (GSocket *socket,
+                  GSocketAddress *address,
+                  GCancellable *cancellable,
+                  GError **error);
+

Connect the socket to the specified remote address.

+

For connection oriented socket this generally means we attempt to make +a connection to the address +. For a connection-less socket it sets +the default address for g_socket_send() and discards all incoming datagrams +from other sources.

+

Generally connection oriented sockets can only connect once, but +connection-less sockets can connect multiple times to change the +default address.

+

If the connect call needs to do network I/O it will block, unless +non-blocking I/O is enabled. Then G_IO_ERROR_PENDING is returned +and the user can be notified of the connection finishing by waiting +for the G_IO_OUT condition. The result of the connection must then be +checked with g_socket_check_connect_result().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket.

 

address

a GSocketAddress specifying the remote address.

 

cancellable

a GCancellable or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

TRUE if connected, FALSE on error.

+
+

Since: 2.22

+
+
+
+

g_socket_check_connect_result ()

+
gboolean
+g_socket_check_connect_result (GSocket *socket,
+                               GError **error);
+

Checks and resets the pending connect error for the socket. +This is used to check for errors when g_socket_connect() is +used in non-blocking mode.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

socket

a GSocket

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

TRUE if no error, FALSE otherwise, setting error +to the error

+
+

Since: 2.22

+
+
+
+

g_socket_receive ()

+
gssize
+g_socket_receive (GSocket *socket,
+                  gchar *buffer,
+                  gsize size,
+                  GCancellable *cancellable,
+                  GError **error);
+

Receive data (up to size + bytes) from a socket. This is mainly used by +connection-oriented sockets; it is identical to g_socket_receive_from() +with address + set to NULL.

+

For G_SOCKET_TYPE_DATAGRAM and G_SOCKET_TYPE_SEQPACKET sockets, +g_socket_receive() will always read either 0 or 1 complete messages from +the socket. If the received message is too large to fit in buffer +, then +the data beyond size + bytes will be discarded, without any explicit +indication that this has occurred.

+

For G_SOCKET_TYPE_STREAM sockets, g_socket_receive() can return any +number of bytes, up to size +. If more than size + bytes have been +received, the additional data will be returned in future calls to +g_socket_receive().

+

If the socket is in blocking mode the call will block until there +is some data to receive, the connection is closed, or there is an +error. If there is no data available and the socket is in +non-blocking mode, a G_IO_ERROR_WOULD_BLOCK error will be +returned. To be notified when data is available, wait for the +G_IO_IN condition.

+

On error -1 is returned and error + is set accordingly.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

buffer

a buffer to +read data into (which should be at least size +bytes long).

[array length=size][element-type guint8]

size

the number of bytes you want to read from the socket

 

cancellable

a GCancellable or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

Number of bytes read, or 0 if the connection was closed by +the peer, or -1 on error

+
+

Since: 2.22

+
+
+
+

g_socket_receive_from ()

+
gssize
+g_socket_receive_from (GSocket *socket,
+                       GSocketAddress **address,
+                       gchar *buffer,
+                       gsize size,
+                       GCancellable *cancellable,
+                       GError **error);
+

Receive data (up to size + bytes) from a socket.

+

If address + is non-NULL then address + will be set equal to the +source address of the received packet. +address + is owned by the caller.

+

See g_socket_receive() for additional information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

address

a pointer to a GSocketAddress +pointer, or NULL.

[out][allow-none]

buffer

a buffer to +read data into (which should be at least size +bytes long).

[array length=size][element-type guint8]

size

the number of bytes you want to read from the socket

 

cancellable

a GCancellable or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

Number of bytes read, or 0 if the connection was closed by +the peer, or -1 on error

+
+

Since: 2.22

+
+
+
+

g_socket_receive_message ()

+
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);
+

Receive data from a socket. For receiving multiple messages, see +g_socket_receive_messages(); for easier use, see +g_socket_receive() and g_socket_receive_from().

+

If address + is non-NULL then address + will be set equal to the +source address of the received packet. +address + is owned by the caller.

+

vector + must point to an array of GInputVector structs and +num_vectors + must be the length of this array. These structs +describe the buffers that received data will be scattered into. +If num_vectors + is -1, then vectors + is assumed to be terminated +by a GInputVector with a NULL buffer pointer.

+

As a special case, if num_vectors + is 0 (in which case, vectors + +may of course be NULL), then a single byte is received and +discarded. This is to facilitate the common practice of sending a +single '\0' byte for the purposes of transferring ancillary data.

+

messages +, if non-NULL, will be set to point to a newly-allocated +array of GSocketControlMessage instances or NULL if no such +messages was received. These correspond to the control messages +received from the kernel, one GSocketControlMessage per message +from the kernel. This array is NULL-terminated and must be freed +by the caller using g_free() after calling g_object_unref() on each +element. If messages + is NULL, any control messages received will +be discarded.

+

num_messages +, if non-NULL, will be set to the number of control +messages received.

+

If both messages + and num_messages + are non-NULL, then +num_messages + gives the number of GSocketControlMessage instances +in messages + (ie: not including the NULL terminator).

+

flags + is an in/out parameter. The commonly available arguments +for this are available in the GSocketMsgFlags enum, but the +values there are the same as the system values, and the flags +are passed in as-is, so you can pass in system-specific flags too +(and g_socket_receive_message() may pass system-specific flags out). +Flags passed in to the parameter affect the receive operation; flags returned +out of it are relevant to the specific returned message.

+

As with g_socket_receive(), data may be discarded if socket + is +G_SOCKET_TYPE_DATAGRAM or G_SOCKET_TYPE_SEQPACKET and you do not +provide enough buffer space to read a complete message. You can pass +G_SOCKET_MSG_PEEK in flags + to peek at the current message without +removing it from the receive queue, but there is no portable way to find +out the length of the message other than by reading it into a +sufficiently-large buffer.

+

If the socket is in blocking mode the call will block until there +is some data to receive, the connection is closed, or there is an +error. If there is no data available and the socket is in +non-blocking mode, a G_IO_ERROR_WOULD_BLOCK error will be +returned. To be notified when data is available, wait for the +G_IO_IN condition.

+

On error -1 is returned and error + is set accordingly.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

address

a pointer to a GSocketAddress +pointer, or NULL.

[out][nullable]

vectors

an array of GInputVector structs.

[array length=num_vectors]

num_vectors

the number of elements in vectors +, or -1

 

messages

a pointer which +may be filled with an array of GSocketControlMessages, or NULL.

[array length=num_messages][out][nullable]

num_messages

a pointer which will be filled with the number of +elements in messages +, or NULL.

[out]

flags

a pointer to an int containing GSocketMsgFlags flags.

[inout]

cancellable

a GCancellable or NULL

 

error

a GError pointer, or NULL

 
+
+
+

Returns

+

Number of bytes read, or 0 if the connection was closed by +the peer, or -1 on error

+
+

Since: 2.22

+
+
+
+

g_socket_receive_messages ()

+
gint
+g_socket_receive_messages (GSocket *socket,
+                           GInputMessage *messages,
+                           guint num_messages,
+                           gint flags,
+                           GCancellable *cancellable,
+                           GError **error);
+

Receive multiple data messages from socket + in one go. This is the most +complicated and fully-featured version of this call. For easier use, see +g_socket_receive(), g_socket_receive_from(), and g_socket_receive_message().

+

messages + must point to an array of GInputMessage structs and +num_messages + must be the length of this array. Each GInputMessage +contains a pointer to an array of GInputVector structs describing the +buffers that the data received in each message will be written to. Using +multiple GInputVectors is more memory-efficient than manually copying data +out of a single buffer to multiple sources, and more system-call-efficient +than making multiple calls to g_socket_receive(), such as in scenarios where +a lot of data packets need to be received (e.g. high-bandwidth video +streaming over RTP/UDP).

+

flags + modify how all messages are received. The commonly available +arguments for this are available in the GSocketMsgFlags enum, but the +values there are the same as the system values, and the flags +are passed in as-is, so you can pass in system-specific flags too. These +flags affect the overall receive operation. Flags affecting individual +messages are returned in GInputMessage.flags.

+

The other members of GInputMessage are treated as described in its +documentation.

+

If “blocking” is TRUE the call will block until num_messages + have +been received, or the end of the stream is reached.

+

If “blocking” is FALSE the call will return up to num_messages + +without blocking, or G_IO_ERROR_WOULD_BLOCK if no messages are queued in the +operating system to be received.

+

In blocking mode, if “timeout” is positive and is reached before any +messages are received, G_IO_ERROR_TIMED_OUT is returned, otherwise up to +num_messages + are returned. (Note: This is effectively the +behaviour of MSG_WAITFORONE with recvmmsg().)

+

To be notified when messages are available, wait for the +G_IO_IN condition. Note though that you may still receive +G_IO_ERROR_WOULD_BLOCK from g_socket_receive_messages() even if you were +previously notified of a G_IO_IN condition.

+

If the remote peer closes the connection, any messages queued in the +operating system will be returned, and subsequent calls to +g_socket_receive_messages() will return 0 (with no error set).

+

On error -1 is returned and error + is set accordingly. An error will only +be returned if zero messages could be received; otherwise the number of +messages successfully received before the error will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

messages

an array of GInputMessage structs.

[array length=num_messages]

num_messages

the number of elements in messages +

 

flags

an int containing GSocketMsgFlags flags for the overall operation

 

cancellable

a GCancellable or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore

 
+
+
+

Returns

+

number of messages received, or -1 on error. Note that the number +of messages received may be smaller than num_messages +if in non-blocking +mode, if the peer closed the connection, or if num_messages +was larger than UIO_MAXIOV (1024), in which case the caller may re-try +to receive the remaining messages.

+
+

Since: 2.48

+
+
+
+

g_socket_receive_with_blocking ()

+
gssize
+g_socket_receive_with_blocking (GSocket *socket,
+                                gchar *buffer,
+                                gsize size,
+                                gboolean blocking,
+                                GCancellable *cancellable,
+                                GError **error);
+

This behaves exactly the same as g_socket_receive(), except that +the choice of blocking or non-blocking behavior is determined by +the blocking + argument rather than by socket +'s properties.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

buffer

a buffer to +read data into (which should be at least size +bytes long).

[array length=size][element-type guint8]

size

the number of bytes you want to read from the socket

 

blocking

whether to do blocking or non-blocking I/O

 

cancellable

a GCancellable or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

Number of bytes read, or 0 if the connection was closed by +the peer, or -1 on error

+
+

Since: 2.26

+
+
+
+

g_socket_send ()

+
gssize
+g_socket_send (GSocket *socket,
+               const gchar *buffer,
+               gsize size,
+               GCancellable *cancellable,
+               GError **error);
+

Tries to send size + bytes from buffer + on the socket. This is +mainly used by connection-oriented sockets; it is identical to +g_socket_send_to() with address + set to NULL.

+

If the socket is in blocking mode the call will block until there is +space for the data in the socket queue. If there is no space available +and the socket is in non-blocking mode a G_IO_ERROR_WOULD_BLOCK error +will be returned. To be notified when space is available, wait for the +G_IO_OUT condition. Note though that you may still receive +G_IO_ERROR_WOULD_BLOCK from g_socket_send() even if you were previously +notified of a G_IO_OUT condition. (On Windows in particular, this is +very common due to the way the underlying APIs work.)

+

On error -1 is returned and error + is set accordingly.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

buffer

the buffer +containing the data to send.

[array length=size][element-type guint8]

size

the number of bytes to send

 

cancellable

a GCancellable or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

Number of bytes written (which may be less than size +), or -1 +on error

+
+

Since: 2.22

+
+
+
+

g_socket_send_to ()

+
gssize
+g_socket_send_to (GSocket *socket,
+                  GSocketAddress *address,
+                  const gchar *buffer,
+                  gsize size,
+                  GCancellable *cancellable,
+                  GError **error);
+

Tries to send size + bytes from buffer + to address +. If address + is +NULL then the message is sent to the default receiver (set by +g_socket_connect()).

+

See g_socket_send() for additional information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

address

a GSocketAddress, or NULL.

[allow-none]

buffer

the buffer +containing the data to send.

[array length=size][element-type guint8]

size

the number of bytes to send

 

cancellable

a GCancellable or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

Number of bytes written (which may be less than size +), or -1 +on error

+
+

Since: 2.22

+
+
+
+

g_socket_send_message ()

+
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);
+

Send data to address + on socket +. For sending multiple messages see +g_socket_send_messages(); for easier use, see +g_socket_send() and g_socket_send_to().

+

If address + is NULL then the message is sent to the default receiver +(set by g_socket_connect()).

+

vectors + must point to an array of GOutputVector structs and +num_vectors + must be the length of this array. (If num_vectors + is -1, +then vectors + is assumed to be terminated by a GOutputVector with a +NULL buffer pointer.) The GOutputVector structs describe the buffers +that the sent data will be gathered from. Using multiple +GOutputVectors is more memory-efficient than manually copying +data from multiple sources into a single buffer, and more +network-efficient than making multiple calls to g_socket_send().

+

messages +, if non-NULL, is taken to point to an array of num_messages + +GSocketControlMessage instances. These correspond to the control +messages to be sent on the socket. +If num_messages + is -1 then messages + is treated as a NULL-terminated +array.

+

flags + modify how the message is sent. The commonly available arguments +for this are available in the GSocketMsgFlags enum, but the +values there are the same as the system values, and the flags +are passed in as-is, so you can pass in system-specific flags too.

+

If the socket is in blocking mode the call will block until there is +space for the data in the socket queue. If there is no space available +and the socket is in non-blocking mode a G_IO_ERROR_WOULD_BLOCK error +will be returned. To be notified when space is available, wait for the +G_IO_OUT condition. Note though that you may still receive +G_IO_ERROR_WOULD_BLOCK from g_socket_send() even if you were previously +notified of a G_IO_OUT condition. (On Windows in particular, this is +very common due to the way the underlying APIs work.)

+

On error -1 is returned and error + is set accordingly.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

address

a GSocketAddress, or NULL.

[allow-none]

vectors

an array of GOutputVector structs.

[array length=num_vectors]

num_vectors

the number of elements in vectors +, or -1

 

messages

a pointer to an +array of GSocketControlMessages, or NULL.

[array length=num_messages][allow-none]

num_messages

number of elements in messages +, or -1.

 

flags

an int containing GSocketMsgFlags flags

 

cancellable

a GCancellable or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

Number of bytes written (which may be less than size +), or -1 +on error

+
+

Since: 2.22

+
+
+
+

g_socket_send_messages ()

+
gint
+g_socket_send_messages (GSocket *socket,
+                        GOutputMessage *messages,
+                        guint num_messages,
+                        gint flags,
+                        GCancellable *cancellable,
+                        GError **error);
+

Send multiple data messages from socket + in one go. This is the most +complicated and fully-featured version of this call. For easier use, see +g_socket_send(), g_socket_send_to(), and g_socket_send_message().

+

messages + must point to an array of GOutputMessage structs and +num_messages + must be the length of this array. Each GOutputMessage +contains an address to send the data to, and a pointer to an array of +GOutputVector structs to describe the buffers that the data to be sent +for each message will be gathered from. Using multiple GOutputVectors is +more memory-efficient than manually copying data from multiple sources +into a single buffer, and more network-efficient than making multiple +calls to g_socket_send(). Sending multiple messages in one go avoids the +overhead of making a lot of syscalls in scenarios where a lot of data +packets need to be sent (e.g. high-bandwidth video streaming over RTP/UDP), +or where the same data needs to be sent to multiple recipients.

+

flags + modify how the message is sent. The commonly available arguments +for this are available in the GSocketMsgFlags enum, but the +values there are the same as the system values, and the flags +are passed in as-is, so you can pass in system-specific flags too.

+

If the socket is in blocking mode the call will block until there is +space for all the data in the socket queue. If there is no space available +and the socket is in non-blocking mode a G_IO_ERROR_WOULD_BLOCK error +will be returned if no data was written at all, otherwise the number of +messages sent will be returned. To be notified when space is available, +wait for the G_IO_OUT condition. Note though that you may still receive +G_IO_ERROR_WOULD_BLOCK from g_socket_send() even if you were previously +notified of a G_IO_OUT condition. (On Windows in particular, this is +very common due to the way the underlying APIs work.)

+

On error -1 is returned and error + is set accordingly. An error will only +be returned if zero messages could be sent; otherwise the number of messages +successfully sent before the error will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

messages

an array of GOutputMessage structs.

[array length=num_messages]

num_messages

the number of elements in messages +

 

flags

an int containing GSocketMsgFlags flags

 

cancellable

a GCancellable or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

number of messages sent, or -1 on error. Note that the number of +messages sent may be smaller than num_messages +if the socket is +non-blocking or if num_messages +was larger than UIO_MAXIOV (1024), +in which case the caller may re-try to send the remaining messages.

+
+

Since: 2.44

+
+
+
+

g_socket_send_with_blocking ()

+
gssize
+g_socket_send_with_blocking (GSocket *socket,
+                             const gchar *buffer,
+                             gsize size,
+                             gboolean blocking,
+                             GCancellable *cancellable,
+                             GError **error);
+

This behaves exactly the same as g_socket_send(), except that +the choice of blocking or non-blocking behavior is determined by +the blocking + argument rather than by socket +'s properties.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

buffer

the buffer +containing the data to send.

[array length=size][element-type guint8]

size

the number of bytes to send

 

blocking

whether to do blocking or non-blocking I/O

 

cancellable

a GCancellable or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

Number of bytes written (which may be less than size +), or -1 +on error

+
+

Since: 2.26

+
+
+
+

g_socket_close ()

+
gboolean
+g_socket_close (GSocket *socket,
+                GError **error);
+

Closes the socket, shutting down any active connection.

+

Closing a socket does not wait for all outstanding I/O operations +to finish, so the caller should not rely on them to be guaranteed +to complete even if the close returns with no error.

+

Once the socket is closed, all other operations will return +G_IO_ERROR_CLOSED. Closing a socket multiple times will not +return an error.

+

Sockets will be automatically closed when the last reference +is dropped, but you might want to call this function to make sure +resources are released as early as possible.

+

Beware that due to the way that TCP works, it is possible for +recently-sent data to be lost if either you close a socket while the +G_IO_IN condition is set, or else if the remote connection tries to +send something to you after you close the socket but before it has +finished reading all of the data you sent. There is no easy generic +way to avoid this problem; the easiest fix is to design the network +protocol such that the client will never send data "out of turn". +Another solution is for the server to half-close the connection by +calling g_socket_shutdown() with only the shutdown_write + flag set, +and then wait for the client to notice this and close its side of the +connection, after which the server can safely call g_socket_close(). +(This is what GTcpConnection does if you call +g_tcp_connection_set_graceful_disconnect(). But of course, this +only works if the client will close its connection after the server +does.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

socket

a GSocket

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

TRUE on success, FALSE on error

+
+

Since: 2.22

+
+
+
+

g_socket_is_closed ()

+
gboolean
+g_socket_is_closed (GSocket *socket);
+

Checks whether a socket is closed.

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket

 
+
+
+

Returns

+

TRUE if socket is closed, FALSE otherwise

+
+

Since: 2.22

+
+
+
+

g_socket_shutdown ()

+
gboolean
+g_socket_shutdown (GSocket *socket,
+                   gboolean shutdown_read,
+                   gboolean shutdown_write,
+                   GError **error);
+

Shut down part or all of a full-duplex connection.

+

If shutdown_read + is TRUE then the receiving side of the connection +is shut down, and further reading is disallowed.

+

If shutdown_write + is TRUE then the sending side of the connection +is shut down, and further writing is disallowed.

+

It is allowed for both shutdown_read + and shutdown_write + to be TRUE.

+

One example where it is useful to shut down only one side of a connection is +graceful disconnect for TCP connections where you close the sending side, +then wait for the other side to close the connection, thus ensuring that the +other side saw all sent data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

shutdown_read

whether to shut down the read side

 

shutdown_write

whether to shut down the write side

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

TRUE on success, FALSE on error

+
+

Since: 2.22

+
+
+
+

g_socket_is_connected ()

+
gboolean
+g_socket_is_connected (GSocket *socket);
+

Check whether the socket is connected. This is only useful for +connection-oriented sockets.

+

If using g_socket_shutdown(), this function will return TRUE until the +socket has been shut down for reading and writing. If you do a non-blocking +connect, this function will not return TRUE until after you call +g_socket_check_connect_result().

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket.

 
+
+
+

Returns

+

TRUE if socket is connected, FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_socket_create_source ()

+
GSource *
+g_socket_create_source (GSocket *socket,
+                        GIOCondition condition,
+                        GCancellable *cancellable);
+

Creates a GSource that can be attached to a GMainContext to monitor +for the availability of the specified condition + on the socket. The GSource +keeps a reference to the socket +.

+

The callback on the source is of the GSocketSourceFunc type.

+

It is meaningless to specify G_IO_ERR or G_IO_HUP in condition +; +these conditions will always be reported output if they are true.

+

cancellable + if not NULL can be used to cancel the source, which will +cause the source to trigger, reporting the current condition (which +is likely 0 unless cancellation happened at the same time as a +condition change). You can check for this in the callback using +g_cancellable_is_cancelled().

+

If socket + has a timeout set, and it is reached before condition + +occurs, the source will then trigger anyway, reporting G_IO_IN or +G_IO_OUT depending on condition +. However, socket + will have been +marked as having had a timeout, and so the next GSocket I/O method +you call will then fail with a G_IO_ERROR_TIMED_OUT.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

condition

a GIOCondition mask to monitor

 

cancellable

a GCancellable or NULL.

[allow-none]
+
+
+

Returns

+

a newly allocated GSource, free with g_source_unref().

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_condition_check ()

+
GIOCondition
+g_socket_condition_check (GSocket *socket,
+                          GIOCondition condition);
+

Checks on the readiness of socket + to perform operations. +The operations specified in condition + are checked for and masked +against the currently-satisfied conditions on socket +. The result +is returned.

+

Note that on Windows, it is possible for an operation to return +G_IO_ERROR_WOULD_BLOCK even immediately after +g_socket_condition_check() has claimed that the socket is ready for +writing. Rather than calling g_socket_condition_check() and then +writing to the socket if it succeeds, it is generally better to +simply try writing to the socket right away, and try again later if +the initial attempt returns G_IO_ERROR_WOULD_BLOCK.

+

It is meaningless to specify G_IO_ERR or G_IO_HUP in condition; +these conditions will always be set in the output if they are true.

+

This call never blocks.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

socket

a GSocket

 

condition

a GIOCondition mask to check

 
+
+
+

Returns

+

the GIOCondition +mask of the current state

+
+

Since: 2.22

+
+
+
+

g_socket_condition_wait ()

+
gboolean
+g_socket_condition_wait (GSocket *socket,
+                         GIOCondition condition,
+                         GCancellable *cancellable,
+                         GError **error);
+

Waits for condition + to become true on socket +. When the condition +is met, TRUE is returned.

+

If cancellable + is cancelled before the condition is met, or if the +socket has a timeout set and it is reached before the condition is +met, then FALSE is returned and error +, if non-NULL, is set to +the appropriate value (G_IO_ERROR_CANCELLED or +G_IO_ERROR_TIMED_OUT).

+

See also g_socket_condition_timed_wait().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

condition

a GIOCondition mask to wait for

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

a GError pointer, or NULL

 
+
+
+

Returns

+

TRUE if the condition was met, FALSE otherwise

+
+

Since: 2.22

+
+
+
+

g_socket_condition_timed_wait ()

+
gboolean
+g_socket_condition_timed_wait (GSocket *socket,
+                               GIOCondition condition,
+                               gint64 timeout,
+                               GCancellable *cancellable,
+                               GError **error);
+

Waits for up to timeout + microseconds for condition + to become true +on socket +. If the condition is met, TRUE is returned.

+

If cancellable + is cancelled before the condition is met, or if +timeout + (or the socket's “timeout”) is reached before the +condition is met, then FALSE is returned and error +, if non-NULL, +is set to the appropriate value (G_IO_ERROR_CANCELLED or +G_IO_ERROR_TIMED_OUT).

+

If you don't want a timeout, use g_socket_condition_wait(). +(Alternatively, you can pass -1 for timeout +.)

+

Note that although timeout + is in microseconds for consistency with +other GLib APIs, this function actually only has millisecond +resolution, and the behavior is undefined if timeout + is not an +exact number of milliseconds.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

condition

a GIOCondition mask to wait for

 

timeout

the maximum time (in microseconds) to wait, or -1

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

a GError pointer, or NULL

 
+
+
+

Returns

+

TRUE if the condition was met, FALSE otherwise

+
+

Since: 2.32

+
+
+
+

g_socket_get_available_bytes ()

+
gssize
+g_socket_get_available_bytes (GSocket *socket);
+

Get the amount of data pending in the OS input buffer, without blocking.

+

If socket + is a UDP or SCTP socket, this will return the size of +just the next packet, even if additional packets are buffered after +that one.

+

Note that on Windows, this function is rather inefficient in the +UDP case, and so if you know any plausible upper bound on the size +of the incoming packet, it is better to just do a +g_socket_receive() with a buffer of that size, rather than calling +g_socket_get_available_bytes() first and then doing a receive of +exactly the right size.

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket

 
+
+
+

Returns

+

the number of bytes that can be read from the socket +without blocking or truncating, or -1 on error.

+
+

Since: 2.32

+
+
+
+

g_socket_set_listen_backlog ()

+
void
+g_socket_set_listen_backlog (GSocket *socket,
+                             gint backlog);
+

Sets the maximum number of outstanding connections allowed +when listening on this socket. If more clients than this are +connecting to the socket and the application is not handling them +on time then the new connections will be refused.

+

Note that this must be called before g_socket_listen() and has no +effect if called after that.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

socket

a GSocket.

 

backlog

the maximum number of pending connections.

 
+
+

Since: 2.22

+
+
+
+

g_socket_get_listen_backlog ()

+
gint
+g_socket_get_listen_backlog (GSocket *socket);
+

Gets the listen backlog setting of the socket. For details on this, +see g_socket_set_listen_backlog().

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket.

 
+
+
+

Returns

+

the maximum number of pending connections.

+
+

Since: 2.22

+
+
+
+

g_socket_get_blocking ()

+
gboolean
+g_socket_get_blocking (GSocket *socket);
+

Gets the blocking mode of the socket. For details on blocking I/O, +see g_socket_set_blocking().

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket.

 
+
+
+

Returns

+

TRUE if blocking I/O is used, FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_socket_set_blocking ()

+
void
+g_socket_set_blocking (GSocket *socket,
+                       gboolean blocking);
+

Sets the blocking mode of the socket. In blocking mode +all operations (which don’t take an explicit blocking parameter) block until +they succeed or there is an error. In +non-blocking mode all functions return results immediately or +with a G_IO_ERROR_WOULD_BLOCK error.

+

All sockets are created in blocking mode. However, note that the +platform level socket is always non-blocking, and blocking mode +is a GSocket level feature.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

socket

a GSocket.

 

blocking

Whether to use blocking I/O or not.

 
+
+

Since: 2.22

+
+
+
+

g_socket_get_keepalive ()

+
gboolean
+g_socket_get_keepalive (GSocket *socket);
+

Gets the keepalive mode of the socket. For details on this, +see g_socket_set_keepalive().

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket.

 
+
+
+

Returns

+

TRUE if keepalive is active, FALSE otherwise.

+
+

Since: 2.22

+
+
+
+

g_socket_set_keepalive ()

+
void
+g_socket_set_keepalive (GSocket *socket,
+                        gboolean keepalive);
+

Sets or unsets the SO_KEEPALIVE flag on the underlying socket. When +this flag is set on a socket, the system will attempt to verify that the +remote socket endpoint is still present if a sufficiently long period of +time passes with no data being exchanged. If the system is unable to +verify the presence of the remote endpoint, it will automatically close +the connection.

+

This option is only functional on certain kinds of sockets. (Notably, +G_SOCKET_PROTOCOL_TCP sockets.)

+

The exact time between pings is system- and protocol-dependent, but will +normally be at least two hours. Most commonly, you would set this flag +on a server socket if you want to allow clients to remain idle for long +periods of time, but also want to ensure that connections are eventually +garbage-collected if clients crash or become unreachable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

socket

a GSocket.

 

keepalive

Value for the keepalive flag

 
+
+

Since: 2.22

+
+
+
+

g_socket_get_timeout ()

+
guint
+g_socket_get_timeout (GSocket *socket);
+

Gets the timeout setting of the socket. For details on this, see +g_socket_set_timeout().

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket.

 
+
+
+

Returns

+

the timeout in seconds

+
+

Since: 2.26

+
+
+
+

g_socket_set_timeout ()

+
void
+g_socket_set_timeout (GSocket *socket,
+                      guint timeout);
+

Sets the time in seconds after which I/O operations on socket + will +time out if they have not yet completed.

+

On a blocking socket, this means that any blocking GSocket +operation will time out after timeout + seconds of inactivity, +returning G_IO_ERROR_TIMED_OUT.

+

On a non-blocking socket, calls to g_socket_condition_wait() will +also fail with G_IO_ERROR_TIMED_OUT after the given time. Sources +created with g_socket_create_source() will trigger after +timeout + seconds of inactivity, with the requested condition +set, at which point calling g_socket_receive(), g_socket_send(), +g_socket_check_connect_result(), etc, will fail with +G_IO_ERROR_TIMED_OUT.

+

If timeout + is 0 (the default), operations will never time out +on their own.

+

Note that if an I/O operation is interrupted by a signal, this may +cause the timeout to be reset.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

socket

a GSocket.

 

timeout

the timeout for socket +, in seconds, or 0 for none

 
+
+

Since: 2.26

+
+
+
+

g_socket_set_ttl ()

+
void
+g_socket_set_ttl (GSocket *socket,
+                  guint ttl);
+

Sets the time-to-live for outgoing unicast packets on socket +. +By default the platform-specific default value is used.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

socket

a GSocket.

 

ttl

the time-to-live value for all unicast packets on socket +

 
+
+

Since: 2.32

+
+
+
+

g_socket_get_ttl ()

+
guint
+g_socket_get_ttl (GSocket *socket);
+

Gets the unicast time-to-live setting on socket +; see +g_socket_set_ttl() for more details.

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket.

 
+
+
+

Returns

+

the time-to-live setting on socket +

+
+

Since: 2.32

+
+
+
+

g_socket_get_broadcast ()

+
gboolean
+g_socket_get_broadcast (GSocket *socket);
+

Gets the broadcast setting on socket +; if TRUE, +it is possible to send packets to broadcast +addresses.

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket.

 
+
+
+

Returns

+

the broadcast setting on socket +

+
+

Since: 2.32

+
+
+
+

g_socket_set_broadcast ()

+
void
+g_socket_set_broadcast (GSocket *socket,
+                        gboolean broadcast);
+

Sets whether socket + should allow sending to broadcast addresses. +This is FALSE by default.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

socket

a GSocket.

 

broadcast

whether socket +should allow sending to broadcast +addresses

 
+
+

Since: 2.32

+
+
+
+

g_socket_get_option ()

+
gboolean
+g_socket_get_option (GSocket *socket,
+                     gint level,
+                     gint optname,
+                     gint *value,
+                     GError **error);
+

Gets the value of an integer-valued option on socket +, as with +getsockopt(). (If you need to fetch a non-integer-valued option, +you will need to call getsockopt() directly.)

+

The <gio/gnetworking.h> +header pulls in system headers that will define most of the +standard/portable socket options. For unusual socket protocols or +platform-dependent options, you may need to include additional +headers.

+

Note that even for socket options that are a single byte in size, +value + is still a pointer to a gint variable, not a guchar; +g_socket_get_option() will handle the conversion internally.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

level

the "API level" of the option (eg, SOL_SOCKET)

 

optname

the "name" of the option (eg, SO_BROADCAST)

 

value

return location for the option value.

[out]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

success or failure. On failure, error +will be set, and +the system error value (errno or WSAGetLastError()) will still +be set to the result of the getsockopt() call.

+
+

Since: 2.36

+
+
+
+

g_socket_set_option ()

+
gboolean
+g_socket_set_option (GSocket *socket,
+                     gint level,
+                     gint optname,
+                     gint value,
+                     GError **error);
+

Sets the value of an integer-valued option on socket +, as with +setsockopt(). (If you need to set a non-integer-valued option, +you will need to call setsockopt() directly.)

+

The <gio/gnetworking.h> +header pulls in system headers that will define most of the +standard/portable socket options. For unusual socket protocols or +platform-dependent options, you may need to include additional +headers.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket

 

level

the "API level" of the option (eg, SOL_SOCKET)

 

optname

the "name" of the option (eg, SO_BROADCAST)

 

value

the value to set the option to

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

success or failure. On failure, error +will be set, and +the system error value (errno or WSAGetLastError()) will still +be set to the result of the setsockopt() call.

+
+

Since: 2.36

+
+
+
+

g_socket_get_family ()

+
GSocketFamily
+g_socket_get_family (GSocket *socket);
+

Gets the socket family of the socket.

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket.

 
+
+
+

Returns

+

a GSocketFamily

+
+

Since: 2.22

+
+
+
+

g_socket_get_fd ()

+
int
+g_socket_get_fd (GSocket *socket);
+

Returns the underlying OS socket object. On unix this +is a socket file descriptor, and on Windows this is +a Winsock2 SOCKET handle. This may be useful for +doing platform specific or otherwise unusual operations +on the socket.

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket.

 
+
+
+

Returns

+

the file descriptor of the socket.

+
+

Since: 2.22

+
+
+
+

g_socket_get_local_address ()

+
GSocketAddress *
+g_socket_get_local_address (GSocket *socket,
+                            GError **error);
+

Try to get the local address of a bound socket. This is only +useful if the socket has been bound to a local address, +either explicitly or implicitly when connecting.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

socket

a GSocket.

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

a GSocketAddress or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_get_protocol ()

+
GSocketProtocol
+g_socket_get_protocol (GSocket *socket);
+

Gets the socket protocol id the socket was created with. +In case the protocol is unknown, -1 is returned.

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket.

 
+
+
+

Returns

+

a protocol id, or -1 if unknown

+
+

Since: 2.22

+
+
+
+

g_socket_get_remote_address ()

+
GSocketAddress *
+g_socket_get_remote_address (GSocket *socket,
+                             GError **error);
+

Try to get the remove address of a connected socket. This is only +useful for connection oriented sockets that have been connected.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

socket

a GSocket.

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

a GSocketAddress or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_get_socket_type ()

+
GSocketType
+g_socket_get_socket_type (GSocket *socket);
+

Gets the socket type of the socket.

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket.

 
+
+
+

Returns

+

a GSocketType

+
+

Since: 2.22

+
+
+
+

g_socket_speaks_ipv4 ()

+
gboolean
+g_socket_speaks_ipv4 (GSocket *socket);
+

Checks if a socket is capable of speaking IPv4.

+

IPv4 sockets are capable of speaking IPv4. On some operating systems +and under some combinations of circumstances IPv6 sockets are also +capable of speaking IPv4. See RFC 3493 section 3.7 for more +information.

+

No other types of sockets are currently considered as being capable +of speaking IPv4.

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket

 
+
+
+

Returns

+

TRUE if this socket can be used with IPv4.

+
+

Since: 2.22

+
+
+
+

g_socket_get_credentials ()

+
GCredentials *
+g_socket_get_credentials (GSocket *socket,
+                          GError **error);
+

Returns the credentials of the foreign process connected to this +socket, if any (e.g. it is only supported for G_SOCKET_FAMILY_UNIX +sockets).

+

If this operation isn't supported on the OS, the method fails with +the G_IO_ERROR_NOT_SUPPORTED error. On Linux this is implemented +by reading the SO_PEERCRED option on the underlying socket.

+

Other ways to obtain credentials from a foreign peer includes the +GUnixCredentialsMessage type and +g_unix_connection_send_credentials() / +g_unix_connection_receive_credentials() functions.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

socket

a GSocket.

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

NULL if error +is set, otherwise a GCredentials object +that must be freed with g_object_unref().

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_socket_join_multicast_group ()

+
gboolean
+g_socket_join_multicast_group (GSocket *socket,
+                               GInetAddress *group,
+                               gboolean source_specific,
+                               const gchar *iface,
+                               GError **error);
+

Registers socket + to receive multicast messages sent to group +. +socket + must be a G_SOCKET_TYPE_DATAGRAM socket, and must have +been bound to an appropriate interface and port with +g_socket_bind().

+

If iface + is NULL, the system will automatically pick an interface +to bind to based on group +.

+

If source_specific + is TRUE, source-specific multicast as defined +in RFC 4604 is used. Note that on older platforms this may fail +with a G_IO_ERROR_NOT_SUPPORTED error.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket.

 

group

a GInetAddress specifying the group address to join.

 

iface

Name of the interface to use, or NULL.

[allow-none]

source_specific

TRUE if source-specific multicast should be used

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

TRUE on success, FALSE on error.

+
+

Since: 2.32

+
+
+
+

g_socket_leave_multicast_group ()

+
gboolean
+g_socket_leave_multicast_group (GSocket *socket,
+                                GInetAddress *group,
+                                gboolean source_specific,
+                                const gchar *iface,
+                                GError **error);
+

Removes socket + from the multicast group defined by group +, iface +, +and source_specific + (which must all have the same values they had +when you joined the group).

+

socket + remains bound to its address and port, and can still receive +unicast messages after calling this.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

socket

a GSocket.

 

group

a GInetAddress specifying the group address to leave.

 

iface

Interface used.

[allow-none]

source_specific

TRUE if source-specific multicast was used

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

TRUE on success, FALSE on error.

+
+

Since: 2.32

+
+
+
+

g_socket_get_multicast_loopback ()

+
gboolean
+g_socket_get_multicast_loopback (GSocket *socket);
+

Gets the multicast loopback setting on socket +; if TRUE (the +default), outgoing multicast packets will be looped back to +multicast listeners on the same host.

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket.

 
+
+
+

Returns

+

the multicast loopback setting on socket +

+
+

Since: 2.32

+
+
+
+

g_socket_set_multicast_loopback ()

+
void
+g_socket_set_multicast_loopback (GSocket *socket,
+                                 gboolean loopback);
+

Sets whether outgoing multicast packets will be received by sockets +listening on that multicast address on the same host. This is TRUE +by default.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

socket

a GSocket.

 

loopback

whether socket +should receive messages sent to its +multicast groups from the local host

 
+
+

Since: 2.32

+
+
+
+

g_socket_get_multicast_ttl ()

+
guint
+g_socket_get_multicast_ttl (GSocket *socket);
+

Gets the multicast time-to-live setting on socket +; see +g_socket_set_multicast_ttl() for more details.

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket.

 
+
+
+

Returns

+

the multicast time-to-live setting on socket +

+
+

Since: 2.32

+
+
+
+

g_socket_set_multicast_ttl ()

+
void
+g_socket_set_multicast_ttl (GSocket *socket,
+                            guint ttl);
+

Sets the time-to-live for outgoing multicast datagrams on socket +. +By default, this is 1, meaning that multicast packets will not leave +the local network.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

socket

a GSocket.

 

ttl

the time-to-live value for all multicast datagrams on socket +

 
+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

GSocket

+
typedef struct _GSocket GSocket;
+

A lowlevel network socket object.

+

Since: 2.22

+
+
+
+

enum GSocketType

+

Flags used when creating a GSocket. Some protocols may not implement +all the socket types.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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).

+
 
+
+

Since: 2.22

+
+
+
+

enum GSocketProtocol

+

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.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

+
 
+
+

Since: 2.22

+
+
+
+

enum GSocketMsgFlags

+

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.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.22

+
+
+
+

struct GInputVector

+
struct GInputVector {
+  gpointer buffer;
+  gsize size;
+};
+
+

Structure used for scatter/gather data input. +You generally pass in an array of GInputVectors +and the operation will store the read data starting in the +first buffer, switching to the next as needed.

+
+

Members

+
+++++ + + + + + + + + + + + + +

gpointer buffer;

Pointer to a buffer where data will be written.

 

gsize size;

the available size in buffer +.

 
+
+

Since: 2.22

+
+
+
+

struct GInputMessage

+
struct GInputMessage {
+  GSocketAddress         **address;
+
+  GInputVector            *vectors;
+  guint                    num_vectors;
+
+  gsize                    bytes_received;
+  gint                     flags;
+
+  GSocketControlMessage ***control_messages;
+  guint                   *num_control_messages;
+};
+
+

Structure used for scatter/gather data input when receiving multiple +messages or packets in one go. You generally pass in an array of empty +GInputVectors and the operation will use all the buffers as if they +were one buffer, and will set bytes_received + to the total number of bytes +received across all GInputVectors.

+

This structure closely mirrors struct mmsghdr and struct msghdr from +the POSIX sockets API (see man 2 recvmmsg).

+

If address + is non-NULL then it is set to the source address the message +was received from, and the caller must free it afterwards.

+

If control_messages + is non-NULL then it is set to an array of control +messages received with the message (if any), and the caller must free it +afterwards. num_control_messages + is set to the number of elements in +this array, which may be zero.

+

Flags relevant to this message will be returned in flags +. For example, +MSG_EOR or MSG_TRUNC.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GSocketAddress **address;

return location +for a GSocketAddress, or NULL.

[optional][out][transfer full]

GInputVector *vectors;

pointer to an +array of input vectors.

[array length=num_vectors][out]

guint num_vectors;

the number of input vectors pointed to by vectors +

 

gsize bytes_received;

will be set to the number of bytes that have been +received.

[out]

gint flags;

collection of GSocketMsgFlags for the received message, +outputted by the call.

[out]

GSocketControlMessage ***control_messages;

(array length=num_control_messages) (optional) +(out) (transfer full): return location for a +caller-allocated array of GSocketControlMessages, or NULL

 

guint *num_control_messages;

return location for the number of +elements in control_messages +.

[out][optional]
+
+

Since: 2.48

+
+
+
+

struct GOutputVector

+
struct GOutputVector {
+  gconstpointer buffer;
+  gsize size;
+};
+
+

Structure used for scatter/gather data output. +You generally pass in an array of GOutputVectors +and the operation will use all the buffers as if they were +one buffer.

+
+

Members

+
+++++ + + + + + + + + + + + + +

gconstpointer buffer;

Pointer to a buffer of data to read.

 

gsize size;

the size of buffer +.

 
+
+

Since: 2.22

+
+
+
+

struct GOutputMessage

+
struct GOutputMessage {
+  GSocketAddress         *address;
+
+  GOutputVector          *vectors;
+  guint                   num_vectors;
+
+  guint                   bytes_sent;
+
+  GSocketControlMessage **control_messages;
+  guint                   num_control_messages;
+};
+
+

Structure used for scatter/gather data output when sending multiple +messages or packets in one go. You generally pass in an array of +GOutputVectors and the operation will use all the buffers as if they +were one buffer.

+

If address + is NULL then the message is sent to the default receiver +(as previously set by g_socket_connect()).

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GSocketAddress *address;

a GSocketAddress, or NULL.

[allow-none]

GOutputVector *vectors;

pointer to an array of output vectors

 

guint num_vectors;

the number of output vectors pointed to by vectors +.

 

guint bytes_sent;

initialize to 0. Will be set to the number of bytes +that have been sent

 

GSocketControlMessage **control_messages;

a pointer +to an array of GSocketControlMessages, or NULL.

[array length=num_control_messages][allow-none]

guint num_control_messages;

number of elements in control_messages +.

 
+
+

Since: 2.44

+
+
+
+

Property Details

+
+

The “blocking” property

+
  “blocking”                 gboolean
+

Whether or not I/O on this socket is blocking.

+

Flags: Read / Write

+

Default value: TRUE

+
+
+
+

The “broadcast” property

+
  “broadcast”                gboolean
+

Whether the socket should allow sending to broadcast addresses.

+

Flags: Read / Write

+

Default value: FALSE

+

Since: 2.32

+
+
+
+

The “family” property

+
  “family”                   GSocketFamily
+

The sockets address family.

+

Flags: Read / Write / Construct Only

+

Default value: G_SOCKET_FAMILY_INVALID

+
+
+
+

The “fd” property

+
  “fd”                       gint
+

The sockets file descriptor.

+

Flags: Read / Write / Construct Only

+

Default value: -1

+
+
+
+

The “keepalive” property

+
  “keepalive”                gboolean
+

Keep connection alive by sending periodic pings.

+

Flags: Read / Write

+

Default value: FALSE

+
+
+
+

The “listen-backlog” property

+
  “listen-backlog”           gint
+

Outstanding connections in the listen queue.

+

Flags: Read / Write

+

Allowed values: [0,128]

+

Default value: 10

+
+
+
+

The “local-address” property

+
  “local-address”            GSocketAddress *
+

The local address the socket is bound to.

+

Flags: Read

+
+
+
+

The “multicast-loopback” property

+
  “multicast-loopback”       gboolean
+

Whether outgoing multicast packets loop back to the local host.

+

Flags: Read / Write

+

Default value: TRUE

+

Since: 2.32

+
+
+
+

The “multicast-ttl” property

+
  “multicast-ttl”            guint
+

Time-to-live out outgoing multicast packets

+

Flags: Read / Write

+

Default value: 1

+

Since: 2.32

+
+
+
+

The “protocol” property

+
  “protocol”                 GSocketProtocol
+

The id of the protocol to use, or -1 for unknown.

+

Flags: Read / Write / Construct Only

+

Default value: G_SOCKET_PROTOCOL_UNKNOWN

+
+
+
+

The “remote-address” property

+
  “remote-address”           GSocketAddress *
+

The remote address the socket is connected to.

+

Flags: Read

+
+
+
+

The “timeout” property

+
  “timeout”                  guint
+

The timeout in seconds on socket I/O

+

Flags: Read / Write

+

Default value: 0

+

Since: 2.26

+
+
+
+

The “ttl” property

+
  “ttl”                      guint
+

Time-to-live for outgoing unicast packets

+

Flags: Read / Write

+

Default value: 0

+

Since: 2.32

+
+
+
+

The “type” property

+
  “type”                     GSocketType
+

The sockets type.

+

Flags: Read / Write / Construct Only

+

Default value: G_SOCKET_TYPE_STREAM

+
+
+
+

See Also

+

GInitable, <gnetworking.h>

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSocketAddress.html b/docs/reference/gio/html/GSocketAddress.html new file mode 100644 index 0000000..41567ce --- /dev/null +++ b/docs/reference/gio/html/GSocketAddress.html @@ -0,0 +1,369 @@ + + + + +GSocketAddress: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSocketAddress

+

GSocketAddress — Abstract base class representing endpoints + for socket communication

+
+
+

Functions

+ +
+
+

Properties

+
+++++ + + + + + +
GSocketFamilyfamilyRead
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GSocketAddress
enumGSocketFamily
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSocketAddress
+        ├── GInetSocketAddress
+        ╰── GUnixSocketAddress
+
+
+
+

Implemented Interfaces

+

+GSocketAddress implements + GSocketConnectable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GSocketAddress is the equivalent of struct sockaddr in the BSD +sockets API. This is an abstract class; use GInetSocketAddress +for internet sockets, or GUnixSocketAddress for UNIX domain sockets.

+
+
+

Functions

+
+

g_socket_address_new_from_native ()

+
GSocketAddress *
+g_socket_address_new_from_native (gpointer native,
+                                  gsize len);
+

Creates a GSocketAddress subclass corresponding to the native +struct sockaddr native +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

native

a pointer to a struct sockaddr.

[not nullable]

len

the size of the memory location pointed to by native +

 
+
+
+

Returns

+

a new GSocketAddress if native +could successfully +be converted, otherwise NULL

+
+

Since: 2.22

+
+
+
+

g_socket_address_get_family ()

+
GSocketFamily
+g_socket_address_get_family (GSocketAddress *address);
+

Gets the socket family type of address +.

+
+

Parameters

+
+++++ + + + + + +

address

a GSocketAddress

 
+
+
+

Returns

+

the socket family type of address +

+
+

Since: 2.22

+
+
+
+

g_socket_address_to_native ()

+
gboolean
+g_socket_address_to_native (GSocketAddress *address,
+                            gpointer dest,
+                            gsize destlen,
+                            GError **error);
+

Converts a GSocketAddress to a native struct sockaddr, which can +be passed to low-level functions like connect() or bind().

+

If not enough space is available, a G_IO_ERROR_NO_SPACE error +is returned. If the address type is not known on the system +then a G_IO_ERROR_NOT_SUPPORTED error is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

address

a GSocketAddress

 

dest

a pointer to a memory location that will contain the native +struct sockaddr

 

destlen

the size of dest +. Must be at least as large as +g_socket_address_get_native_size()

 

error

GError for error reporting, or NULL to ignore

 
+
+
+

Returns

+

TRUE if dest +was filled in, FALSE on error

+
+

Since: 2.22

+
+
+
+

g_socket_address_get_native_size ()

+
gssize
+g_socket_address_get_native_size (GSocketAddress *address);
+

Gets the size of address +'s native struct sockaddr. +You can use this to allocate memory to pass to +g_socket_address_to_native().

+
+

Parameters

+
+++++ + + + + + +

address

a GSocketAddress

 
+
+
+

Returns

+

the size of the native struct sockaddr that +address +represents

+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

GSocketAddress

+
typedef struct _GSocketAddress GSocketAddress;
+

A socket endpoint address, corresponding to struct sockaddr +or one of its subtypes.

+
+
+
+

enum GSocketFamily

+

The protocol family of a GSocketAddress. (These values are +identical to the system defines AF_INET, AF_INET6 and AF_UNIX, +if available.)

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

G_SOCKET_FAMILY_INVALID

+

no address family

+
 

G_SOCKET_FAMILY_UNIX

+

the UNIX domain family

+
 

G_SOCKET_FAMILY_IPV4

+

the IPv4 family

+
 

G_SOCKET_FAMILY_IPV6

+

the IPv6 family

+
 
+
+

Since: 2.22

+
+
+
+

Property Details

+
+

The “family” property

+
  “family”                   GSocketFamily
+

The family of the socket address.

+

Flags: Read

+

Default value: G_SOCKET_FAMILY_INVALID

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSocketClient.html b/docs/reference/gio/html/GSocketClient.html new file mode 100644 index 0000000..e261759 --- /dev/null +++ b/docs/reference/gio/html/GSocketClient.html @@ -0,0 +1,2070 @@ + + + + +GSocketClient: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSocketClient

+

GSocketClient — Helper for connecting to a network service

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GSocketClient * + +g_socket_client_new () +
+GSocketConnection * + +g_socket_client_connect () +
+void + +g_socket_client_connect_async () +
+GSocketConnection * + +g_socket_client_connect_finish () +
+GSocketConnection * + +g_socket_client_connect_to_host () +
+void + +g_socket_client_connect_to_host_async () +
+GSocketConnection * + +g_socket_client_connect_to_host_finish () +
+GSocketConnection * + +g_socket_client_connect_to_service () +
+void + +g_socket_client_connect_to_service_async () +
+GSocketConnection * + +g_socket_client_connect_to_service_finish () +
+GSocketConnection * + +g_socket_client_connect_to_uri () +
+void + +g_socket_client_connect_to_uri_async () +
+GSocketConnection * + +g_socket_client_connect_to_uri_finish () +
+void + +g_socket_client_set_family () +
+void + +g_socket_client_set_local_address () +
+void + +g_socket_client_set_protocol () +
+void + +g_socket_client_set_socket_type () +
+void + +g_socket_client_set_timeout () +
+void + +g_socket_client_set_enable_proxy () +
+void + +g_socket_client_set_proxy_resolver () +
+void + +g_socket_client_set_tls () +
+void + +g_socket_client_set_tls_validation_flags () +
+GSocketFamily + +g_socket_client_get_family () +
+GSocketAddress * + +g_socket_client_get_local_address () +
+GSocketProtocol + +g_socket_client_get_protocol () +
+GSocketType + +g_socket_client_get_socket_type () +
+guint + +g_socket_client_get_timeout () +
+gboolean + +g_socket_client_get_enable_proxy () +
+GProxyResolver * + +g_socket_client_get_proxy_resolver () +
+gboolean + +g_socket_client_get_tls () +
+GTlsCertificateFlags + +g_socket_client_get_tls_validation_flags () +
+void + +g_socket_client_add_application_proxy () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
gbooleanenable-proxyRead / Write / Construct
GSocketFamilyfamilyRead / Write / Construct
+GSocketAddress *local-addressRead / Write / Construct
GSocketProtocolprotocolRead / Write / Construct
+GProxyResolver *proxy-resolverRead / Write / Construct
guinttimeoutRead / Write / Construct
gbooleantlsRead / Write / Construct
GTlsCertificateFlagstls-validation-flagsRead / Write / Construct
GSocketTypetypeRead / Write / Construct
+
+
+

Signals

+
+++++ + + + + + +
voideventRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GSocketClient
enumGSocketClientEvent
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSocketClient
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GSocketClient is a lightweight high-level utility class for connecting to +a network host using a connection oriented socket type.

+

You create a GSocketClient object, set any options you want, and then +call a sync or async connect operation, which returns a GSocketConnection +subclass on success.

+

The type of the GSocketConnection object returned depends on the type of +the underlying socket that is in use. For instance, for a TCP/IP connection +it will be a GTcpConnection.

+

As GSocketClient is a lightweight object, you don't need to cache it. You +can just create a new one any time you need one.

+
+
+

Functions

+
+

g_socket_client_new ()

+
GSocketClient *
+g_socket_client_new (void);
+

Creates a new GSocketClient with the default options.

+
+

Returns

+

a GSocketClient. +Free the returned object with g_object_unref().

+
+

Since: 2.22

+
+
+
+

g_socket_client_connect ()

+
GSocketConnection *
+g_socket_client_connect (GSocketClient *client,
+                         GSocketConnectable *connectable,
+                         GCancellable *cancellable,
+                         GError **error);
+

Tries to resolve the connectable + and make a network connection to it.

+

Upon a successful connection, a new GSocketConnection is constructed +and returned. The caller owns this new object and must drop their +reference to it when finished with it.

+

The type of the GSocketConnection object returned depends on the type of +the underlying socket that is used. For instance, for a TCP/IP connection +it will be a GTcpConnection.

+

The socket created will be the same family as the address that the +connectable + resolves to, unless family is set with g_socket_client_set_family() +or indirectly via g_socket_client_set_local_address(). The socket type +defaults to G_SOCKET_TYPE_STREAM but can be set with +g_socket_client_set_socket_type().

+

If a local address is specified with g_socket_client_set_local_address() the +socket will be bound to this address before connecting.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

client

a GSocketClient.

 

connectable

a GSocketConnectable specifying the remote address.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

a GSocketConnection on success, NULL on error.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_client_connect_async ()

+
void
+g_socket_client_connect_async (GSocketClient *client,
+                               GSocketConnectable *connectable,
+                               GCancellable *cancellable,
+                               GAsyncReadyCallback callback,
+                               gpointer user_data);
+

This is the asynchronous version of g_socket_client_connect().

+

When the operation is finished callback + will be +called. You can then call g_socket_client_connect_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

client

a GSocketClient

 

connectable

a GSocketConnectable specifying the remote address.

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

user data for the callback.

[closure]
+
+

Since: 2.22

+
+
+
+

g_socket_client_connect_finish ()

+
GSocketConnection *
+g_socket_client_connect_finish (GSocketClient *client,
+                                GAsyncResult *result,
+                                GError **error);
+

Finishes an async connect operation. See g_socket_client_connect_async()

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

client

a GSocketClient.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

a GSocketConnection on success, NULL on error.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_client_connect_to_host ()

+
GSocketConnection *
+g_socket_client_connect_to_host (GSocketClient *client,
+                                 const gchar *host_and_port,
+                                 guint16 default_port,
+                                 GCancellable *cancellable,
+                                 GError **error);
+

This is a helper function for g_socket_client_connect().

+

Attempts to create a TCP connection to the named host.

+

host_and_port + may be in any of a number of recognized formats; an IPv6 +address, an IPv4 address, or a domain name (in which case a DNS +lookup is performed). Quoting with [] is supported for all address +types. A port override may be specified in the usual way with a +colon. Ports may be given as decimal numbers or symbolic names (in +which case an /etc/services lookup is performed).

+

If no port override is given in host_and_port + then default_port + will be +used as the port number to connect to.

+

In general, host_and_port + is expected to be provided by the user (allowing +them to give the hostname, and a port override if necessary) and +default_port + is expected to be provided by the application.

+

In the case that an IP address is given, a single connection +attempt is made. In the case that a name is given, multiple +connection attempts may be made, in turn and according to the +number of address records in DNS, until a connection succeeds.

+

Upon a successful connection, a new GSocketConnection is constructed +and returned. The caller owns this new object and must drop their +reference to it when finished with it.

+

In the event of any failure (DNS error, service not found, no hosts +connectable) NULL is returned and error + (if non-NULL) is set +accordingly.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

client

a GSocketClient

 

host_and_port

the name and optionally port of the host to connect to

 

default_port

the default port to connect to

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

a pointer to a GError, or NULL

 
+
+
+

Returns

+

a GSocketConnection on success, NULL on error.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_client_connect_to_host_async ()

+
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);
+

This is the asynchronous version of g_socket_client_connect_to_host().

+

When the operation is finished callback + will be +called. You can then call g_socket_client_connect_to_host_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

client

a GSocketClient

 

host_and_port

the name and optionally the port of the host to connect to

 

default_port

the default port to connect to

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

user data for the callback.

[closure]
+
+

Since: 2.22

+
+
+
+

g_socket_client_connect_to_host_finish ()

+
GSocketConnection *
+g_socket_client_connect_to_host_finish
+                               (GSocketClient *client,
+                                GAsyncResult *result,
+                                GError **error);
+

Finishes an async connect operation. See g_socket_client_connect_to_host_async()

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

client

a GSocketClient.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

a GSocketConnection on success, NULL on error.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_client_connect_to_service ()

+
GSocketConnection *
+g_socket_client_connect_to_service (GSocketClient *client,
+                                    const gchar *domain,
+                                    const gchar *service,
+                                    GCancellable *cancellable,
+                                    GError **error);
+

Attempts to create a TCP connection to a service.

+

This call looks up the SRV record for service + at domain + for the +"tcp" protocol. It then attempts to connect, in turn, to each of +the hosts providing the service until either a connection succeeds +or there are no hosts remaining.

+

Upon a successful connection, a new GSocketConnection is constructed +and returned. The caller owns this new object and must drop their +reference to it when finished with it.

+

In the event of any failure (DNS error, service not found, no hosts +connectable) NULL is returned and error + (if non-NULL) is set +accordingly.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

client

a GSocketConnection

 

domain

a domain name

 

service

the name of the service to connect to

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

a pointer to a GError, or NULL

 
+
+
+

Returns

+

a GSocketConnection if successful, or NULL on error.

+

[transfer full]

+
+
+
+
+

g_socket_client_connect_to_service_async ()

+
void
+g_socket_client_connect_to_service_async
+                               (GSocketClient *client,
+                                const gchar *domain,
+                                const gchar *service,
+                                GCancellable *cancellable,
+                                GAsyncReadyCallback callback,
+                                gpointer user_data);
+

This is the asynchronous version of +g_socket_client_connect_to_service().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

client

a GSocketClient

 

domain

a domain name

 

service

the name of the service to connect to

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

user data for the callback.

[closure]
+
+

Since: 2.22

+
+
+
+

g_socket_client_connect_to_service_finish ()

+
GSocketConnection *
+g_socket_client_connect_to_service_finish
+                               (GSocketClient *client,
+                                GAsyncResult *result,
+                                GError **error);
+

Finishes an async connect operation. See g_socket_client_connect_to_service_async()

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

client

a GSocketClient.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

a GSocketConnection on success, NULL on error.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_client_connect_to_uri ()

+
GSocketConnection *
+g_socket_client_connect_to_uri (GSocketClient *client,
+                                const gchar *uri,
+                                guint16 default_port,
+                                GCancellable *cancellable,
+                                GError **error);
+

This is a helper function for g_socket_client_connect().

+

Attempts to create a TCP connection with a network URI.

+

uri + may be any valid URI containing an "authority" (hostname/port) +component. If a port is not specified in the URI, default_port + +will be used. TLS will be negotiated if “tls” is TRUE. +(GSocketClient does not know to automatically assume TLS for +certain URI schemes.)

+

Using this rather than g_socket_client_connect() or +g_socket_client_connect_to_host() allows GSocketClient to +determine when to use application-specific proxy protocols.

+

Upon a successful connection, a new GSocketConnection is constructed +and returned. The caller owns this new object and must drop their +reference to it when finished with it.

+

In the event of any failure (DNS error, service not found, no hosts +connectable) NULL is returned and error + (if non-NULL) is set +accordingly.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

client

a GSocketClient

 

uri

A network URI

 

default_port

the default port to connect to

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

a pointer to a GError, or NULL

 
+
+
+

Returns

+

a GSocketConnection on success, NULL on error.

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_socket_client_connect_to_uri_async ()

+
void
+g_socket_client_connect_to_uri_async (GSocketClient *client,
+                                      const gchar *uri,
+                                      guint16 default_port,
+                                      GCancellable *cancellable,
+                                      GAsyncReadyCallback callback,
+                                      gpointer user_data);
+

This is the asynchronous version of g_socket_client_connect_to_uri().

+

When the operation is finished callback + will be +called. You can then call g_socket_client_connect_to_uri_finish() to get +the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

client

a GSocketClient

 

uri

a network uri

 

default_port

the default port to connect to

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

user data for the callback.

[closure]
+
+

Since: 2.26

+
+
+
+

g_socket_client_connect_to_uri_finish ()

+
GSocketConnection *
+g_socket_client_connect_to_uri_finish (GSocketClient *client,
+                                       GAsyncResult *result,
+                                       GError **error);
+

Finishes an async connect operation. See g_socket_client_connect_to_uri_async()

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

client

a GSocketClient.

 

result

a GAsyncResult.

 

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

a GSocketConnection on success, NULL on error.

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_socket_client_set_family ()

+
void
+g_socket_client_set_family (GSocketClient *client,
+                            GSocketFamily family);
+

Sets the socket family of the socket client. +If this is set to something other than G_SOCKET_FAMILY_INVALID +then the sockets created by this object will be of the specified +family.

+

This might be useful for instance if you want to force the local +connection to be an ipv4 socket, even though the address might +be an ipv6 mapped to ipv4 address.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

client

a GSocketClient.

 

family

a GSocketFamily

 
+
+

Since: 2.22

+
+
+
+

g_socket_client_set_local_address ()

+
void
+g_socket_client_set_local_address (GSocketClient *client,
+                                   GSocketAddress *address);
+

Sets the local address of the socket client. +The sockets created by this object will bound to the +specified address (if not NULL) before connecting.

+

This is useful if you want to ensure that the local +side of the connection is on a specific port, or on +a specific interface.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

client

a GSocketClient.

 

address

a GSocketAddress, or NULL.

[allow-none]
+
+

Since: 2.22

+
+
+
+

g_socket_client_set_protocol ()

+
void
+g_socket_client_set_protocol (GSocketClient *client,
+                              GSocketProtocol protocol);
+

Sets the protocol of the socket client. +The sockets created by this object will use of the specified +protocol.

+

If protocol + is 0 that means to use the default +protocol for the socket family and type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

client

a GSocketClient.

 

protocol

a GSocketProtocol

 
+
+

Since: 2.22

+
+
+
+

g_socket_client_set_socket_type ()

+
void
+g_socket_client_set_socket_type (GSocketClient *client,
+                                 GSocketType type);
+

Sets the socket type of the socket client. +The sockets created by this object will be of the specified +type.

+

It doesn't make sense to specify a type of G_SOCKET_TYPE_DATAGRAM, +as GSocketClient is used for connection oriented services.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

client

a GSocketClient.

 

type

a GSocketType

 
+
+

Since: 2.22

+
+
+
+

g_socket_client_set_timeout ()

+
void
+g_socket_client_set_timeout (GSocketClient *client,
+                             guint timeout);
+

Sets the I/O timeout for sockets created by client +. timeout + is a +time in seconds, or 0 for no timeout (the default).

+

The timeout value affects the initial connection attempt as well, +so setting this may cause calls to g_socket_client_connect(), etc, +to fail with G_IO_ERROR_TIMED_OUT.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

client

a GSocketClient.

 

timeout

the timeout

 
+
+

Since: 2.26

+
+
+
+

g_socket_client_set_enable_proxy ()

+
void
+g_socket_client_set_enable_proxy (GSocketClient *client,
+                                  gboolean enable);
+

Sets whether or not client + attempts to make connections via a +proxy server. When enabled (the default), GSocketClient will use a +GProxyResolver to determine if a proxy protocol such as SOCKS is +needed, and automatically do the necessary proxy negotiation.

+

See also g_socket_client_set_proxy_resolver().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

client

a GSocketClient.

 

enable

whether to enable proxies

 
+
+

Since: 2.26

+
+
+
+

g_socket_client_set_proxy_resolver ()

+
void
+g_socket_client_set_proxy_resolver (GSocketClient *client,
+                                    GProxyResolver *proxy_resolver);
+

Overrides the GProxyResolver used by client +. You can call this if +you want to use specific proxies, rather than using the system +default proxy settings.

+

Note that whether or not the proxy resolver is actually used +depends on the setting of “enable-proxy”, which is not +changed by this function (but which is TRUE by default)

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

client

a GSocketClient.

 

proxy_resolver

a GProxyResolver, or NULL for the +default.

[allow-none]
+
+

Since: 2.36

+
+
+
+

g_socket_client_set_tls ()

+
void
+g_socket_client_set_tls (GSocketClient *client,
+                         gboolean tls);
+

Sets whether client + creates TLS (aka SSL) connections. If tls + is +TRUE, client + will wrap its connections in a GTlsClientConnection +and perform a TLS handshake when connecting.

+

Note that since GSocketClient must return a GSocketConnection, +but GTlsClientConnection is not a GSocketConnection, this +actually wraps the resulting GTlsClientConnection in a +GTcpWrapperConnection when returning it. You can use +g_tcp_wrapper_connection_get_base_io_stream() on the return value +to extract the GTlsClientConnection.

+

If you need to modify the behavior of the TLS handshake (eg, by +setting a client-side certificate to use, or connecting to the +“accept-certificate” signal), you can connect to +client +'s “event” signal and wait for it to be +emitted with G_SOCKET_CLIENT_TLS_HANDSHAKING, which will give you +a chance to see the GTlsClientConnection before the handshake +starts.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

client

a GSocketClient.

 

tls

whether to use TLS

 
+
+

Since: 2.28

+
+
+
+

g_socket_client_set_tls_validation_flags ()

+
void
+g_socket_client_set_tls_validation_flags
+                               (GSocketClient *client,
+                                GTlsCertificateFlags flags);
+

Sets the TLS validation flags used when creating TLS connections +via client +. The default value is G_TLS_CERTIFICATE_VALIDATE_ALL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

client

a GSocketClient.

 

flags

the validation flags

 
+
+

Since: 2.28

+
+
+
+

g_socket_client_get_family ()

+
GSocketFamily
+g_socket_client_get_family (GSocketClient *client);
+

Gets the socket family of the socket client.

+

See g_socket_client_set_family() for details.

+
+

Parameters

+
+++++ + + + + + +

client

a GSocketClient.

 
+
+
+

Returns

+

a GSocketFamily

+
+

Since: 2.22

+
+
+
+

g_socket_client_get_local_address ()

+
GSocketAddress *
+g_socket_client_get_local_address (GSocketClient *client);
+

Gets the local address of the socket client.

+

See g_socket_client_set_local_address() for details.

+
+

Parameters

+
+++++ + + + + + +

client

a GSocketClient.

 
+
+
+

Returns

+

a GSocketAddress or NULL. Do not free.

+

[transfer none]

+
+

Since: 2.22

+
+
+
+

g_socket_client_get_protocol ()

+
GSocketProtocol
+g_socket_client_get_protocol (GSocketClient *client);
+

Gets the protocol name type of the socket client.

+

See g_socket_client_set_protocol() for details.

+
+

Parameters

+
+++++ + + + + + +

client

a GSocketClient

 
+
+
+

Returns

+

a GSocketProtocol

+
+

Since: 2.22

+
+
+
+

g_socket_client_get_socket_type ()

+
GSocketType
+g_socket_client_get_socket_type (GSocketClient *client);
+

Gets the socket type of the socket client.

+

See g_socket_client_set_socket_type() for details.

+
+

Parameters

+
+++++ + + + + + +

client

a GSocketClient.

 
+
+
+

Returns

+

a GSocketFamily

+
+

Since: 2.22

+
+
+
+

g_socket_client_get_timeout ()

+
guint
+g_socket_client_get_timeout (GSocketClient *client);
+

Gets the I/O timeout time for sockets created by client +.

+

See g_socket_client_set_timeout() for details.

+
+

Parameters

+
+++++ + + + + + +

client

a GSocketClient

 
+
+
+

Returns

+

the timeout in seconds

+
+

Since: 2.26

+
+
+
+

g_socket_client_get_enable_proxy ()

+
gboolean
+g_socket_client_get_enable_proxy (GSocketClient *client);
+

Gets the proxy enable state; see g_socket_client_set_enable_proxy()

+
+

Parameters

+
+++++ + + + + + +

client

a GSocketClient.

 
+
+
+

Returns

+

whether proxying is enabled

+
+

Since: 2.26

+
+
+
+

g_socket_client_get_proxy_resolver ()

+
GProxyResolver *
+g_socket_client_get_proxy_resolver (GSocketClient *client);
+

Gets the GProxyResolver being used by client +. Normally, this will +be the resolver returned by g_proxy_resolver_get_default(), but you +can override it with g_socket_client_set_proxy_resolver().

+
+

Parameters

+
+++++ + + + + + +

client

a GSocketClient.

 
+
+
+

Returns

+

The GProxyResolver being used by +client +.

+

[transfer none]

+
+

Since: 2.36

+
+
+
+

g_socket_client_get_tls ()

+
gboolean
+g_socket_client_get_tls (GSocketClient *client);
+

Gets whether client + creates TLS connections. See +g_socket_client_set_tls() for details.

+
+

Parameters

+
+++++ + + + + + +

client

a GSocketClient.

 
+
+
+

Returns

+

whether client +uses TLS

+
+

Since: 2.28

+
+
+
+

g_socket_client_get_tls_validation_flags ()

+
GTlsCertificateFlags
+g_socket_client_get_tls_validation_flags
+                               (GSocketClient *client);
+

Gets the TLS validation flags used creating TLS connections via +client +.

+
+

Parameters

+
+++++ + + + + + +

client

a GSocketClient.

 
+
+
+

Returns

+

the TLS validation flags

+
+

Since: 2.28

+
+
+
+

g_socket_client_add_application_proxy ()

+
void
+g_socket_client_add_application_proxy (GSocketClient *client,
+                                       const gchar *protocol);
+

Enable proxy protocols to be handled by the application. When the +indicated proxy protocol is returned by the GProxyResolver, +GSocketClient will consider this protocol as supported but will +not try to find a GProxy instance to handle handshaking. The +application must check for this case by calling +g_socket_connection_get_remote_address() on the returned +GSocketConnection, and seeing if it's a GProxyAddress of the +appropriate type, to determine whether or not it needs to handle +the proxy handshaking itself.

+

This should be used for proxy protocols that are dialects of +another protocol such as HTTP proxy. It also allows cohabitation of +proxy protocols that are reused between protocols. A good example +is HTTP. It can be used to proxy HTTP, FTP and Gopher and can also +be use as generic socket proxy through the HTTP CONNECT method.

+

When the proxy is detected as being an application proxy, TLS handshake +will be skipped. This is required to let the application do the proxy +specific handshake.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

client

a GSocketClient

 

protocol

The proxy protocol

 
+
+
+
+
+

Types and Values

+
+

GSocketClient

+
typedef struct _GSocketClient GSocketClient;
+

A helper class for network clients to make connections.

+

Since: 2.22

+
+
+
+

enum GSocketClientEvent

+

Describes an event occurring on a GSocketClient. See the +“event” signal for more details.

+

Additional values may be added to this type in the future.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.32

+
+
+
+

Property Details

+
+

The “enable-proxy” property

+
  “enable-proxy”             gboolean
+

Enable proxy support.

+

Flags: Read / Write / Construct

+

Default value: TRUE

+
+
+
+

The “family” property

+
  “family”                   GSocketFamily
+

The sockets address family to use for socket construction.

+

Flags: Read / Write / Construct

+

Default value: G_SOCKET_FAMILY_INVALID

+
+
+
+

The “local-address” property

+
  “local-address”            GSocketAddress *
+

The local address constructed sockets will be bound to.

+

Flags: Read / Write / Construct

+
+
+
+

The “protocol” property

+
  “protocol”                 GSocketProtocol
+

The protocol to use for socket construction, or 0 for default.

+

Flags: Read / Write / Construct

+

Default value: G_SOCKET_PROTOCOL_DEFAULT

+
+
+
+

The “proxy-resolver” property

+
  “proxy-resolver”           GProxyResolver *
+

The proxy resolver to use

+

Flags: Read / Write / Construct

+

Since: 2.36

+
+
+
+

The “timeout” property

+
  “timeout”                  guint
+

The I/O timeout for sockets, or 0 for none.

+

Flags: Read / Write / Construct

+

Default value: 0

+
+
+
+

The “tls” property

+
  “tls”                      gboolean
+

Whether to create TLS connections.

+

Flags: Read / Write / Construct

+

Default value: FALSE

+
+
+
+

The “tls-validation-flags” property

+
  “tls-validation-flags”     GTlsCertificateFlags
+

TLS validation flags to use.

+

Flags: Read / Write / Construct

+

Default value: G_TLS_CERTIFICATE_UNKNOWN_CA | G_TLS_CERTIFICATE_BAD_IDENTITY | G_TLS_CERTIFICATE_NOT_ACTIVATED | G_TLS_CERTIFICATE_EXPIRED | G_TLS_CERTIFICATE_REVOKED | G_TLS_CERTIFICATE_INSECURE | G_TLS_CERTIFICATE_GENERIC_ERROR

+
+
+
+

The “type” property

+
  “type”                     GSocketType
+

The sockets type to use for socket construction.

+

Flags: Read / Write / Construct

+

Default value: G_SOCKET_TYPE_STREAM

+
+
+
+

Signal Details

+
+

The “event” signal

+
void
+user_function (GSocketClient      *client,
+               GSocketClientEvent  event,
+               GSocketConnectable *connectable,
+               GIOStream          *connection,
+               gpointer            user_data)
+

Emitted when client +'s activity on connectable + changes state. +Among other things, this can be used to provide progress +information about a network connection in the UI. The meanings of +the different event + values are as follows:

+
+

Each event except G_SOCKET_CLIENT_COMPLETE may be emitted +multiple times (or not at all) for a given connectable (in +particular, if client + ends up attempting to connect to more than +one address). However, if client + emits the “event” +signal at all for a given connectable, that it will always emit +it with G_SOCKET_CLIENT_COMPLETE when it is done.

+

Note that there may be additional GSocketClientEvent values in +the future; unrecognized event + values should be ignored.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

client

the GSocketClient

 

event

the event that is occurring

 

connectable

the GSocketConnectable that event +is occurring on

 

connection

the current representation of the connection.

[nullable]

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.32

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSocketConnectable.html b/docs/reference/gio/html/GSocketConnectable.html new file mode 100644 index 0000000..f5ed71d --- /dev/null +++ b/docs/reference/gio/html/GSocketConnectable.html @@ -0,0 +1,669 @@ + + + + +GSocketConnectable: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSocketConnectable

+

GSocketConnectable — Interface for potential socket endpoints

+
+ +
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +
+GSocketConnectable *connectableRead / Write / Construct Only
guintdefault-portRead / Write / Construct Only
+GProxyResolver *proxy-resolverRead / Write / Construct
+gchar *uriRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + +
 GSocketConnectable
structGSocketConnectableIface
 GSocketAddressEnumerator
 GProxyAddressEnumerator
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GSocketConnectable
+    GObject
+    ╰── GSocketAddressEnumerator
+        ╰── GProxyAddressEnumerator
+
+
+
+

Prerequisites

+

+GSocketConnectable requires + GObject.

+
+
+

Known Implementations

+

+GSocketConnectable is implemented by + GInetSocketAddress, GNetworkAddress, GNetworkService, GProxyAddress, GSocketAddress and GUnixSocketAddress.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Objects that describe one or more potential socket endpoints +implement GSocketConnectable. Callers can then use +g_socket_connectable_enumerate() to get a GSocketAddressEnumerator +to try out each socket address in turn until one succeeds, as shown +in the sample code below.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
MyConnectionType *
+connect_to_host (const char    *hostname,
+                 guint16        port,
+                 GCancellable  *cancellable,
+                 GError       **error)
+{
+  MyConnection *conn = NULL;
+  GSocketConnectable *addr;
+  GSocketAddressEnumerator *enumerator;
+  GSocketAddress *sockaddr;
+  GError *conn_error = NULL;
+
+  addr = g_network_address_new (hostname, port);
+  enumerator = g_socket_connectable_enumerate (addr);
+  g_object_unref (addr);
+
+  // Try each sockaddr until we succeed. Record the first connection error,
+  // but not any further ones (since they'll probably be basically the same
+  // as the first).
+  while (!conn && (sockaddr = g_socket_address_enumerator_next (enumerator, cancellable, error))
+    {
+      conn = connect_to_sockaddr (sockaddr, conn_error ? NULL : &conn_error);
+      g_object_unref (sockaddr);
+    }
+  g_object_unref (enumerator);
+
+  if (conn)
+    {
+      if (conn_error)
+        {
+          // We couldn't connect to the first address, but we succeeded
+          // in connecting to a later address.
+          g_error_free (conn_error);
+        }
+      return conn;
+    }
+  else if (error)
+    {
+      /// Either initial lookup failed, or else the caller cancelled us.
+      if (conn_error)
+        g_error_free (conn_error);
+      return NULL;
+    }
+  else
+    {
+      g_error_propagate (error, conn_error);
+      return NULL;
+    }
+}
+
+ +

+
+
+

Functions

+
+

g_socket_connectable_enumerate ()

+
GSocketAddressEnumerator *
+g_socket_connectable_enumerate (GSocketConnectable *connectable);
+

Creates a GSocketAddressEnumerator for connectable +.

+
+

Parameters

+
+++++ + + + + + +

connectable

a GSocketConnectable

 
+
+
+

Returns

+

a new GSocketAddressEnumerator.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_connectable_proxy_enumerate ()

+
GSocketAddressEnumerator *
+g_socket_connectable_proxy_enumerate (GSocketConnectable *connectable);
+

Creates a GSocketAddressEnumerator for connectable + that will +return GProxyAddresses for addresses that you must connect +to via a proxy.

+

If connectable + does not implement +g_socket_connectable_proxy_enumerate(), this will fall back to +calling g_socket_connectable_enumerate().

+
+

Parameters

+
+++++ + + + + + +

connectable

a GSocketConnectable

 
+
+
+

Returns

+

a new GSocketAddressEnumerator.

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_socket_connectable_to_string ()

+
gchar *
+g_socket_connectable_to_string (GSocketConnectable *connectable);
+

Format a GSocketConnectable as a string. This is a human-readable format for +use in debugging output, and is not a stable serialization format. It is not +suitable for use in user interfaces as it exposes too much information for a +user.

+

If the GSocketConnectable implementation does not support string formatting, +the implementation’s type name will be returned as a fallback.

+
+

Parameters

+
+++++ + + + + + +

connectable

a GSocketConnectable

 
+
+
+

Returns

+

the formatted string.

+

[transfer full]

+
+

Since: 2.48

+
+
+
+

g_socket_address_enumerator_next ()

+
GSocketAddress *
+g_socket_address_enumerator_next (GSocketAddressEnumerator *enumerator,
+                                  GCancellable *cancellable,
+                                  GError **error);
+

Retrieves the next GSocketAddress from enumerator +. Note that this +may block for some amount of time. (Eg, a GNetworkAddress may need +to do a DNS lookup before it can return an address.) Use +g_socket_address_enumerator_next_async() if you need to avoid +blocking.

+

If enumerator + is expected to yield addresses, but for some reason +is unable to (eg, because of a DNS error), then the first call to +g_socket_address_enumerator_next() will return an appropriate error +in *error +. However, if the first call to +g_socket_address_enumerator_next() succeeds, then any further +internal errors (other than cancellable + being triggered) will be +ignored.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

enumerator

a GSocketAddressEnumerator

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

a GError.

 
+
+
+

Returns

+

a GSocketAddress (owned by the caller), or NULL on +error (in which case *error +will be set) or if there are no +more addresses.

+

[transfer full]

+
+
+
+
+

g_socket_address_enumerator_next_async ()

+
void
+g_socket_address_enumerator_next_async
+                               (GSocketAddressEnumerator *enumerator,
+                                GCancellable *cancellable,
+                                GAsyncReadyCallback callback,
+                                gpointer user_data);
+

Asynchronously retrieves the next GSocketAddress from enumerator + +and then calls callback +, which must call +g_socket_address_enumerator_next_finish() to get the result.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

enumerator

a GSocketAddressEnumerator

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call when the request +is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+
+
+
+

g_socket_address_enumerator_next_finish ()

+
GSocketAddress *
+g_socket_address_enumerator_next_finish
+                               (GSocketAddressEnumerator *enumerator,
+                                GAsyncResult *result,
+                                GError **error);
+

Retrieves the result of a completed call to +g_socket_address_enumerator_next_async(). See +g_socket_address_enumerator_next() for more information about +error handling.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

enumerator

a GSocketAddressEnumerator

 

result

a GAsyncResult

 

error

a GError

 
+
+
+

Returns

+

a GSocketAddress (owned by the caller), or NULL on +error (in which case *error +will be set) or if there are no +more addresses.

+

[transfer full]

+
+
+
+
+

Types and Values

+
+

GSocketConnectable

+
typedef struct _GSocketConnectable GSocketConnectable;
+

Interface for objects that contain or generate GSocketAddress<!-- -->es.

+
+
+
+

struct GSocketConnectableIface

+
struct GSocketConnectableIface {
+  GTypeInterface g_iface;
+
+  /* Virtual Table */
+
+  GSocketAddressEnumerator * (* enumerate)       (GSocketConnectable *connectable);
+
+  GSocketAddressEnumerator * (* proxy_enumerate) (GSocketConnectable *connectable);
+
+  gchar                    * (* to_string)       (GSocketConnectable *connectable);
+};
+
+

Provides an interface for returning a GSocketAddressEnumerator +and GProxyAddressEnumerator

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

The parent interface.

 

enumerate ()

Creates a GSocketAddressEnumerator

 

proxy_enumerate ()

Creates a GProxyAddressEnumerator

 

to_string ()

Format the connectable’s address as a string for debugging. +Implementing this is optional. (Since: 2.48)

 
+
+
+
+
+

GSocketAddressEnumerator

+
typedef struct _GSocketAddressEnumerator GSocketAddressEnumerator;
+

Enumerator type for objects that contain or generate +GSocketAddress<!-- -->es.

+
+
+
+

GProxyAddressEnumerator

+
typedef struct _GProxyAddressEnumerator GProxyAddressEnumerator;
+

A subclass of GSocketAddressEnumerator that takes another address +enumerator and wraps its results in GProxyAddress<!-- -->es as +directed by the default GProxyResolver.

+
+
+
+

Property Details

+
+

The “connectable” property

+
  “connectable”              GSocketConnectable *
+

The connectable being enumerated.

+

Flags: Read / Write / Construct Only

+
+
+
+

The “default-port” property

+
  “default-port”             guint
+

The default port to use if “uri” does not +specify one.

+

Flags: Read / Write / Construct Only

+

Allowed values: <= 65535

+

Default value: 0

+

Since: 2.38

+
+
+
+

The “proxy-resolver” property

+
  “proxy-resolver”           GProxyResolver *
+

The proxy resolver to use.

+

Flags: Read / Write / Construct

+

Since: 2.36

+
+
+
+

The “uri” property

+
  “uri”                      gchar *
+

The destination URI, use none:// for generic socket.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSocketConnection.html b/docs/reference/gio/html/GSocketConnection.html new file mode 100644 index 0000000..f3af68b --- /dev/null +++ b/docs/reference/gio/html/GSocketConnection.html @@ -0,0 +1,626 @@ + + + + +GSocketConnection: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSocketConnection

+

GSocketConnection — A socket connection

+
+ +
+

Properties

+
+++++ + + + + + +
+GSocket *socketRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GSocketConnection
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GIOStream
+        ╰── GSocketConnection
+            ├── GTcpConnection
+            ╰── GUnixConnection
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GSocketConnection is a GIOStream for a connected socket. They +can be created either by GSocketClient when connecting to a host, +or by GSocketListener when accepting a new client.

+

The type of the GSocketConnection object returned from these calls +depends on the type of the underlying socket that is in use. For +instance, for a TCP/IP connection it will be a GTcpConnection.

+

Choosing what type of object to construct is done with the socket +connection factory, and it is possible for 3rd parties to register +custom socket connection types for specific combination of socket +family/type/protocol using g_socket_connection_factory_register_type().

+

To close a GSocketConnection, use g_io_stream_close(). Closing both +substreams of the GIOStream separately will not close the underlying +GSocket.

+
+
+

Functions

+
+

g_socket_connection_connect ()

+
gboolean
+g_socket_connection_connect (GSocketConnection *connection,
+                             GSocketAddress *address,
+                             GCancellable *cancellable,
+                             GError **error);
+

Connect connection + to the specified remote address.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

connection

a GSocketConnection

 

address

a GSocketAddress specifying the remote address.

 

cancellable

a GCancellable or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

TRUE if the connection succeeded, FALSE on error

+
+

Since: 2.32

+
+
+
+

g_socket_connection_connect_async ()

+
void
+g_socket_connection_connect_async (GSocketConnection *connection,
+                                   GSocketAddress *address,
+                                   GCancellable *cancellable,
+                                   GAsyncReadyCallback callback,
+                                   gpointer user_data);
+

Asynchronously connect connection + to the specified remote address.

+

This clears the “blocking” flag on connection +'s underlying +socket if it is currently set.

+

Use g_socket_connection_connect_finish() to retrieve the result.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

a GSocketConnection

 

address

a GSocketAddress specifying the remote address.

 

cancellable

a GCancellable or NULL.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

user data for the callback.

[closure]
+
+

Since: 2.32

+
+
+
+

g_socket_connection_connect_finish ()

+
gboolean
+g_socket_connection_connect_finish (GSocketConnection *connection,
+                                    GAsyncResult *result,
+                                    GError **error);
+

Gets the result of a g_socket_connection_connect_async() call.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

connection

a GSocketConnection

 

result

the GAsyncResult

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

TRUE if the connection succeeded, FALSE on error

+
+

Since: 2.32

+
+
+
+

g_socket_connection_is_connected ()

+
gboolean
+g_socket_connection_is_connected (GSocketConnection *connection);
+

Checks if connection + is connected. This is equivalent to calling +g_socket_is_connected() on connection +'s underlying GSocket.

+
+

Parameters

+
+++++ + + + + + +

connection

a GSocketConnection

 
+
+
+

Returns

+

whether connection +is connected

+
+

Since: 2.32

+
+
+
+

g_socket_connection_get_local_address ()

+
GSocketAddress *
+g_socket_connection_get_local_address (GSocketConnection *connection,
+                                       GError **error);
+

Try to get the local address of a socket connection.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

connection

a GSocketConnection

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

a GSocketAddress or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_connection_get_remote_address ()

+
GSocketAddress *
+g_socket_connection_get_remote_address
+                               (GSocketConnection *connection,
+                                GError **error);
+

Try to get the remote address of a socket connection.

+

Since GLib 2.40, when used with g_socket_client_connect() or +g_socket_client_connect_async(), during emission of +G_SOCKET_CLIENT_CONNECTING, this function will return the remote +address that will be used for the connection. This allows +applications to print e.g. "Connecting to example.com +(10.42.77.3)...".

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

connection

a GSocketConnection

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

a GSocketAddress or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_connection_get_socket ()

+
GSocket *
+g_socket_connection_get_socket (GSocketConnection *connection);
+

Gets the underlying GSocket object of the connection. +This can be useful if you want to do something unusual on it +not supported by the GSocketConnection APIs.

+
+

Parameters

+
+++++ + + + + + +

connection

a GSocketConnection

 
+
+
+

Returns

+

a GSocket or NULL on error.

+

[transfer none]

+
+

Since: 2.22

+
+
+
+

g_socket_connection_factory_create_connection ()

+
GSocketConnection *
+g_socket_connection_factory_create_connection
+                               (GSocket *socket);
+

Creates a GSocketConnection subclass of the right type for +socket +.

+
+

Parameters

+
+++++ + + + + + +

socket

a GSocket

 
+
+
+

Returns

+

a GSocketConnection.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_connection_factory_lookup_type ()

+
GType
+g_socket_connection_factory_lookup_type
+                               (GSocketFamily family,
+                                GSocketType type,
+                                gint protocol_id);
+

Looks up the GType to be used when creating socket connections on +sockets with the specified family +, type + and protocol_id +.

+

If no type is registered, the GSocketConnection base type is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

family

a GSocketFamily

 

type

a GSocketType

 

protocol_id

a protocol id

 
+
+
+

Returns

+

a GType

+
+

Since: 2.22

+
+
+
+

g_socket_connection_factory_register_type ()

+
void
+g_socket_connection_factory_register_type
+                               (GType g_type,
+                                GSocketFamily family,
+                                GSocketType type,
+                                gint protocol);
+

Looks up the GType to be used when creating socket connections on +sockets with the specified family +, type + and protocol +.

+

If no type is registered, the GSocketConnection base type is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

g_type

a GType, inheriting from G_TYPE_SOCKET_CONNECTION

 

family

a GSocketFamily

 

type

a GSocketType

 

protocol

a protocol id

 
+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

GSocketConnection

+
typedef struct _GSocketConnection GSocketConnection;
+

A socket connection GIOStream object for connection-oriented sockets.

+

Since: 2.22

+
+
+
+

Property Details

+
+

The “socket” property

+
  “socket”                   GSocket *
+

The underlying GSocket.

+

Flags: Read / Write / Construct Only

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSocketControlMessage.html b/docs/reference/gio/html/GSocketControlMessage.html new file mode 100644 index 0000000..b1fac4c --- /dev/null +++ b/docs/reference/gio/html/GSocketControlMessage.html @@ -0,0 +1,326 @@ + + + + +GSocketControlMessage: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSocketControlMessage

+

GSocketControlMessage — A GSocket control message

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+GSocketControlMessage * + +g_socket_control_message_deserialize () +
+int + +g_socket_control_message_get_level () +
+int + +g_socket_control_message_get_msg_type () +
+gsize + +g_socket_control_message_get_size () +
+void + +g_socket_control_message_serialize () +
+
+
+

Types and Values

+
++++ + + + + +
 GSocketControlMessage
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSocketControlMessage
+        ├── GUnixCredentialsMessage
+        ╰── GUnixFDMessage
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A GSocketControlMessage is a special-purpose utility message that +can be sent to or received from a GSocket. These types of +messages are often called "ancillary data".

+

The message can represent some sort of special instruction to or +information from the socket or can represent a special kind of +transfer to the peer (for example, sending a file descriptor over +a UNIX socket).

+

These messages are sent with g_socket_send_message() and received +with g_socket_receive_message().

+

To extend the set of control message that can be sent, subclass this +class and override the get_size, get_level, get_type and serialize +methods.

+

To extend the set of control messages that can be received, subclass +this class and implement the deserialize method. Also, make sure your +class is registered with the GType typesystem before calling +g_socket_receive_message() to read such a message.

+
+
+

Functions

+
+

g_socket_control_message_deserialize ()

+
GSocketControlMessage *
+g_socket_control_message_deserialize (int level,
+                                      int type,
+                                      gsize size,
+                                      gpointer data);
+

Tries to deserialize a socket control message of a given +level + and type +. This will ask all known (to GType) subclasses +of GSocketControlMessage if they can understand this kind +of message and if so deserialize it into a GSocketControlMessage.

+

If there is no implementation for this kind of control message, NULL +will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

level

a socket level

 

type

a socket control message type for the given level +

 

size

the size of the data in bytes

 

data

pointer to the message data.

[array length=size][element-type guint8]
+
+
+

Returns

+

the deserialized message or NULL.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_control_message_get_level ()

+
int
+g_socket_control_message_get_level (GSocketControlMessage *message);
+

Returns the "level" (i.e. the originating protocol) of the control message. +This is often SOL_SOCKET.

+
+

Parameters

+
+++++ + + + + + +

message

a GSocketControlMessage

 
+
+
+

Returns

+

an integer describing the level

+
+

Since: 2.22

+
+
+
+

g_socket_control_message_get_msg_type ()

+
int
+g_socket_control_message_get_msg_type (GSocketControlMessage *message);
+

Returns the protocol specific type of the control message. +For instance, for UNIX fd passing this would be SCM_RIGHTS.

+
+

Parameters

+
+++++ + + + + + +

message

a GSocketControlMessage

 
+
+
+

Returns

+

an integer describing the type of control message

+
+

Since: 2.22

+
+
+
+

g_socket_control_message_get_size ()

+
gsize
+g_socket_control_message_get_size (GSocketControlMessage *message);
+

Returns the space required for the control message, not including +headers or alignment.

+
+

Parameters

+
+++++ + + + + + +

message

a GSocketControlMessage

 
+
+
+

Returns

+

The number of bytes required.

+
+

Since: 2.22

+
+
+
+

g_socket_control_message_serialize ()

+
void
+g_socket_control_message_serialize (GSocketControlMessage *message,
+                                    gpointer data);
+

Converts the data in the message to bytes placed in the +message.

+

data + is guaranteed to have enough space to fit the size +returned by g_socket_control_message_get_size() on this +object.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

a GSocketControlMessage

 

data

A buffer to write data to.

[not nullable]
+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

GSocketControlMessage

+
typedef struct _GSocketControlMessage GSocketControlMessage;
+

Base class for socket-type specific control messages that can be sent and +received over GSocket.

+
+
+
+

See Also

+

GSocket.

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSocketListener.html b/docs/reference/gio/html/GSocketListener.html new file mode 100644 index 0000000..deaedd8 --- /dev/null +++ b/docs/reference/gio/html/GSocketListener.html @@ -0,0 +1,986 @@ + + + + +GSocketListener: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSocketListener

+

GSocketListener — Helper for accepting network client connections

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GSocketListener * + +g_socket_listener_new () +
+gboolean + +g_socket_listener_add_socket () +
+gboolean + +g_socket_listener_add_address () +
+gboolean + +g_socket_listener_add_inet_port () +
+guint16 + +g_socket_listener_add_any_inet_port () +
+GSocketConnection * + +g_socket_listener_accept () +
+void + +g_socket_listener_accept_async () +
+GSocketConnection * + +g_socket_listener_accept_finish () +
+GSocket * + +g_socket_listener_accept_socket () +
+void + +g_socket_listener_accept_socket_async () +
+GSocket * + +g_socket_listener_accept_socket_finish () +
+void + +g_socket_listener_close () +
+void + +g_socket_listener_set_backlog () +
+
+
+

Properties

+
+++++ + + + + + +
gintlisten-backlogRead / Write / Construct
+
+
+

Signals

+
+++++ + + + + + +
voideventRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GSocketListener
enumGSocketListenerEvent
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSocketListener
+        ╰── GSocketService
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A GSocketListener is an object that keeps track of a set +of server sockets and helps you accept sockets from any of the +socket, either sync or async.

+

If you want to implement a network server, also look at GSocketService +and GThreadedSocketService which are subclass of GSocketListener +that makes this even easier.

+
+
+

Functions

+
+

g_socket_listener_new ()

+
GSocketListener *
+g_socket_listener_new (void);
+

Creates a new GSocketListener with no sockets to listen for. +New listeners can be added with e.g. g_socket_listener_add_address() +or g_socket_listener_add_inet_port().

+
+

Returns

+

a new GSocketListener.

+
+

Since: 2.22

+
+
+
+

g_socket_listener_add_socket ()

+
gboolean
+g_socket_listener_add_socket (GSocketListener *listener,
+                              GSocket *socket,
+                              GObject *source_object,
+                              GError **error);
+

Adds socket + to the set of sockets that we try to accept +new clients from. The socket must be bound to a local +address and listened to.

+

source_object + will be passed out in the various calls +to accept to identify this particular source, which is +useful if you're listening on multiple addresses and do +different things depending on what address is connected to.

+

The socket + will not be automatically closed when the listener + is finalized +unless the listener held the final reference to the socket. Before GLib 2.42, +the socket + was automatically closed on finalization of the listener +, even +if references to it were held elsewhere.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

listener

a GSocketListener

 

socket

a listening GSocket

 

source_object

Optional GObject identifying this source.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

TRUE on success, FALSE on error.

+
+

Since: 2.22

+
+
+
+

g_socket_listener_add_address ()

+
gboolean
+g_socket_listener_add_address (GSocketListener *listener,
+                               GSocketAddress *address,
+                               GSocketType type,
+                               GSocketProtocol protocol,
+                               GObject *source_object,
+                               GSocketAddress **effective_address,
+                               GError **error);
+

Creates a socket of type type + and protocol protocol +, binds +it to address + and adds it to the set of sockets we're accepting +sockets from.

+

Note that adding an IPv6 address, depending on the platform, +may or may not result in a listener that also accepts IPv4 +connections. For more deterministic behavior, see +g_socket_listener_add_inet_port().

+

source_object + will be passed out in the various calls +to accept to identify this particular source, which is +useful if you're listening on multiple addresses and do +different things depending on what address is connected to.

+

If successful and effective_address + is non-NULL then it will +be set to the address that the binding actually occurred at. This +is helpful for determining the port number that was used for when +requesting a binding to port 0 (ie: "any port"). This address, if +requested, belongs to the caller and must be freed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

listener

a GSocketListener

 

address

a GSocketAddress

 

type

a GSocketType

 

protocol

a GSocketProtocol

 

source_object

Optional GObject identifying this source.

[allow-none]

effective_address

location to store the address that was bound to, or NULL.

[out][allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

TRUE on success, FALSE on error.

+
+

Since: 2.22

+
+
+
+

g_socket_listener_add_inet_port ()

+
gboolean
+g_socket_listener_add_inet_port (GSocketListener *listener,
+                                 guint16 port,
+                                 GObject *source_object,
+                                 GError **error);
+

Helper function for g_socket_listener_add_address() that +creates a TCP/IP socket listening on IPv4 and IPv6 (if +supported) on the specified port on all interfaces.

+

source_object + will be passed out in the various calls +to accept to identify this particular source, which is +useful if you're listening on multiple addresses and do +different things depending on what address is connected to.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

listener

a GSocketListener

 

port

an IP port number (non-zero)

 

source_object

Optional GObject identifying this source.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

TRUE on success, FALSE on error.

+
+

Since: 2.22

+
+
+
+

g_socket_listener_add_any_inet_port ()

+
guint16
+g_socket_listener_add_any_inet_port (GSocketListener *listener,
+                                     GObject *source_object,
+                                     GError **error);
+

Listens for TCP connections on any available port number for both +IPv6 and IPv4 (if each is available).

+

This is useful if you need to have a socket for incoming connections +but don't care about the specific port number.

+

source_object + will be passed out in the various calls +to accept to identify this particular source, which is +useful if you're listening on multiple addresses and do +different things depending on what address is connected to.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

listener

a GSocketListener

 

source_object

Optional GObject identifying this source.

[allow-none]

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

the port number, or 0 in case of failure.

+
+

Since: 2.24

+
+
+
+

g_socket_listener_accept ()

+
GSocketConnection *
+g_socket_listener_accept (GSocketListener *listener,
+                          GObject **source_object,
+                          GCancellable *cancellable,
+                          GError **error);
+

Blocks waiting for a client to connect to any of the sockets added +to the listener. Returns a GSocketConnection for the socket that was +accepted.

+

If source_object + is not NULL it will be filled out with the source +object specified when the corresponding socket or address was added +to the listener.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

listener

a GSocketListener

 

source_object

location where GObject pointer will be stored, or NULL.

[out][transfer none][allow-none]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

a GSocketConnection on success, NULL on error.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_listener_accept_async ()

+
void
+g_socket_listener_accept_async (GSocketListener *listener,
+                                GCancellable *cancellable,
+                                GAsyncReadyCallback callback,
+                                gpointer user_data);
+

This is the asynchronous version of g_socket_listener_accept().

+

When the operation is finished callback + will be +called. You can then call g_socket_listener_accept_socket() +to get the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

listener

a GSocketListener

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

user data for the callback.

[closure]
+
+

Since: 2.22

+
+
+
+

g_socket_listener_accept_finish ()

+
GSocketConnection *
+g_socket_listener_accept_finish (GSocketListener *listener,
+                                 GAsyncResult *result,
+                                 GObject **source_object,
+                                 GError **error);
+

Finishes an async accept operation. See g_socket_listener_accept_async()

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

listener

a GSocketListener

 

result

a GAsyncResult.

 

source_object

Optional GObject identifying this source.

[out][transfer none][allow-none]

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

a GSocketConnection on success, NULL on error.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_listener_accept_socket ()

+
GSocket *
+g_socket_listener_accept_socket (GSocketListener *listener,
+                                 GObject **source_object,
+                                 GCancellable *cancellable,
+                                 GError **error);
+

Blocks waiting for a client to connect to any of the sockets added +to the listener. Returns the GSocket that was accepted.

+

If you want to accept the high-level GSocketConnection, not a GSocket, +which is often the case, then you should use g_socket_listener_accept() +instead.

+

If source_object + is not NULL it will be filled out with the source +object specified when the corresponding socket or address was added +to the listener.

+

If cancellable + is not NULL, then the operation can be cancelled by +triggering the cancellable object from another thread. If the operation +was cancelled, the error G_IO_ERROR_CANCELLED will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

listener

a GSocketListener

 

source_object

location where GObject pointer will be stored, or NULL.

[out][transfer none][allow-none]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

a GSocket on success, NULL on error.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_listener_accept_socket_async ()

+
void
+g_socket_listener_accept_socket_async (GSocketListener *listener,
+                                       GCancellable *cancellable,
+                                       GAsyncReadyCallback callback,
+                                       gpointer user_data);
+

This is the asynchronous version of g_socket_listener_accept_socket().

+

When the operation is finished callback + will be +called. You can then call g_socket_listener_accept_socket_finish() +to get the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

listener

a GSocketListener

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

user_data

user data for the callback.

[closure]
+
+

Since: 2.22

+
+
+
+

g_socket_listener_accept_socket_finish ()

+
GSocket *
+g_socket_listener_accept_socket_finish
+                               (GSocketListener *listener,
+                                GAsyncResult *result,
+                                GObject **source_object,
+                                GError **error);
+

Finishes an async accept operation. See g_socket_listener_accept_socket_async()

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

listener

a GSocketListener

 

result

a GAsyncResult.

 

source_object

Optional GObject identifying this source.

[out][transfer none][allow-none]

error

a GError location to store the error occurring, or NULL to +ignore.

 
+
+
+

Returns

+

a GSocket on success, NULL on error.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

g_socket_listener_close ()

+
void
+g_socket_listener_close (GSocketListener *listener);
+

Closes all the sockets in the listener.

+
+

Parameters

+
+++++ + + + + + +

listener

a GSocketListener

 
+
+

Since: 2.22

+
+
+
+

g_socket_listener_set_backlog ()

+
void
+g_socket_listener_set_backlog (GSocketListener *listener,
+                               int listen_backlog);
+

Sets the listen backlog on the sockets in the listener.

+

See g_socket_set_listen_backlog() for details

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

listener

a GSocketListener

 

listen_backlog

an integer

 
+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

GSocketListener

+
typedef struct _GSocketListener GSocketListener;
+

A helper class for network servers to listen for and accept connections.

+

Since: 2.22

+
+
+
+

enum GSocketListenerEvent

+

Describes an event occurring on a GSocketListener. See the +“event” signal for more details.

+

Additional values may be added to this type in the future.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

G_SOCKET_LISTENER_BINDING

+

The listener is about to bind a socket.

+
 

G_SOCKET_LISTENER_BOUND

+

The listener has bound a socket.

+
 

G_SOCKET_LISTENER_LISTENING

+

The listener is about to start + listening on this socket.

+
 

G_SOCKET_LISTENER_LISTENED

+

The listener is now listening on + this socket.

+
 
+
+

Since: 2.46

+
+
+
+

Property Details

+
+

The “listen-backlog” property

+
  “listen-backlog”           gint
+

outstanding connections in the listen queue.

+

Flags: Read / Write / Construct

+

Allowed values: [0,2000]

+

Default value: 10

+
+
+
+

Signal Details

+
+

The “event” signal

+
void
+user_function (GSocketListener     *listener,
+               GSocketListenerEvent event,
+               GSocket             *socket,
+               gpointer             user_data)
+

Emitted when listener +'s activity on socket + changes state. +Note that when listener + is used to listen on both IPv4 and +IPv6, a separate set of signals will be emitted for each, and +the order they happen in is undefined.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

listener

the GSocketListener

 

event

the event that is occurring

 

socket

the GSocket the event is occurring on

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.46

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSocketService.html b/docs/reference/gio/html/GSocketService.html new file mode 100644 index 0000000..a8cfc3e --- /dev/null +++ b/docs/reference/gio/html/GSocketService.html @@ -0,0 +1,352 @@ + + + + +GSocketService: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSocketService

+

GSocketService — Make it easy to implement a network service

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+GSocketService * + +g_socket_service_new () +
+void + +g_socket_service_start () +
+void + +g_socket_service_stop () +
+gboolean + +g_socket_service_is_active () +
+
+
+

Properties

+
+++++ + + + + + +
gbooleanactiveRead / Write / Construct
+
+
+

Signals

+
+++++ + + + + + +
gbooleanincomingRun Last
+
+
+

Types and Values

+
++++ + + + + +
 GSocketService
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSocketListener
+        ╰── GSocketService
+            ╰── GThreadedSocketService
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A GSocketService is an object that represents a service that +is provided to the network or over local sockets. When a new +connection is made to the service the “incoming” +signal is emitted.

+

A GSocketService is a subclass of GSocketListener and you need +to add the addresses you want to accept connections on with the +GSocketListener APIs.

+

There are two options for implementing a network service based on +GSocketService. The first is to create the service using +g_socket_service_new() and to connect to the “incoming” +signal. The second is to subclass GSocketService and override the +default signal handler implementation.

+

In either case, the handler must immediately return, or else it +will block additional incoming connections from being serviced. +If you are interested in writing connection handlers that contain +blocking code then see GThreadedSocketService.

+

The socket service runs on the main loop of the +thread-default context +of the thread it is created in, and is not +threadsafe in general. However, the calls to start and stop the +service are thread-safe so these can be used from threads that +handle incoming clients.

+
+
+

Functions

+
+

g_socket_service_new ()

+
GSocketService *
+g_socket_service_new (void);
+

Creates a new GSocketService with no sockets to listen for. +New listeners can be added with e.g. g_socket_listener_add_address() +or g_socket_listener_add_inet_port().

+
+

Returns

+

a new GSocketService.

+
+

Since: 2.22

+
+
+
+

g_socket_service_start ()

+
void
+g_socket_service_start (GSocketService *service);
+

Starts the service, i.e. start accepting connections +from the added sockets when the mainloop runs.

+

This call is thread-safe, so it may be called from a thread +handling an incoming client request.

+
+

Parameters

+
+++++ + + + + + +

service

a GSocketService

 
+
+

Since: 2.22

+
+
+
+

g_socket_service_stop ()

+
void
+g_socket_service_stop (GSocketService *service);
+

Stops the service, i.e. stops accepting connections +from the added sockets when the mainloop runs.

+

This call is thread-safe, so it may be called from a thread +handling an incoming client request.

+

Note that this only stops accepting new connections; it does not +close the listening sockets, and you can call +g_socket_service_start() again later to begin listening again. To +close the listening sockets, call g_socket_listener_close(). (This +will happen automatically when the GSocketService is finalized.)

+
+

Parameters

+
+++++ + + + + + +

service

a GSocketService

 
+
+

Since: 2.22

+
+
+
+

g_socket_service_is_active ()

+
gboolean
+g_socket_service_is_active (GSocketService *service);
+

Check whether the service is active or not. An active +service will accept new clients that connect, while +a non-active service will let connecting clients queue +up until the service is started.

+
+

Parameters

+
+++++ + + + + + +

service

a GSocketService

 
+
+
+

Returns

+

TRUE if the service is active, FALSE otherwise

+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

GSocketService

+
typedef struct _GSocketService GSocketService;
+

A helper class for handling accepting incomming connections in the +glib mainloop.

+

Since: 2.22

+
+
+
+

Property Details

+
+

The “active” property

+
  “active”                   gboolean
+

Whether the service is currently accepting connections.

+

Flags: Read / Write / Construct

+

Default value: TRUE

+

Since: 2.46

+
+
+
+

Signal Details

+
+

The “incoming” signal

+
gboolean
+user_function (GSocketService    *service,
+               GSocketConnection *connection,
+               GObject           *source_object,
+               gpointer           user_data)
+

The ::incoming signal is emitted when a new incoming connection +to service + needs to be handled. The handler must initiate the +handling of connection +, but may not block; in essence, +asynchronous operations must be used.

+

connection + will be unreffed once the signal handler returns, +so you need to ref it yourself if you are planning to use it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

service

the GSocketService

 

connection

a new GSocketConnection object

 

source_object

the source_object passed to +g_socket_listener_add_address().

[allow-none]

user_data

user data set when the signal handler was connected.

 
+
+
+

Returns

+

TRUE to stop other handlers from being called

+
+

Flags: Run Last

+

Since: 2.22

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSrvTarget.html b/docs/reference/gio/html/GSrvTarget.html new file mode 100644 index 0000000..4de881a --- /dev/null +++ b/docs/reference/gio/html/GSrvTarget.html @@ -0,0 +1,418 @@ + + + + +GSrvTarget: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSrvTarget

+

GSrvTarget — DNS SRV record target

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GSrvTarget * + +g_srv_target_new () +
+GSrvTarget * + +g_srv_target_copy () +
+void + +g_srv_target_free () +
const gchar * + +g_srv_target_get_hostname () +
+guint16 + +g_srv_target_get_port () +
+guint16 + +g_srv_target_get_priority () +
+guint16 + +g_srv_target_get_weight () +
+GList * + +g_srv_target_list_sort () +
+
+
+

Types and Values

+
++++ + + + + +
 GSrvTarget
+
+
+

Object Hierarchy

+
    GBoxed
+    ╰── GSrvTarget
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

SRV (service) records are used by some network protocols to provide +service-specific aliasing and load-balancing. For example, XMPP +(Jabber) uses SRV records to locate the XMPP server for a domain; +rather than connecting directly to "example.com" or assuming a +specific server hostname like "xmpp.example.com", an XMPP client +would look up the "xmpp-client" SRV record for "example.com", and +then connect to whatever host was pointed to by that record.

+

You can use g_resolver_lookup_service() or +g_resolver_lookup_service_async() to find the GSrvTargets +for a given service. However, if you are simply planning to connect +to the remote service, you can use GNetworkService's +GSocketConnectable interface and not need to worry about +GSrvTarget at all.

+
+
+

Functions

+
+

g_srv_target_new ()

+
GSrvTarget *
+g_srv_target_new (const gchar *hostname,
+                  guint16 port,
+                  guint16 priority,
+                  guint16 weight);
+

Creates a new GSrvTarget with the given parameters.

+

You should not need to use this; normally GSrvTargets are +created by GResolver.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

hostname

the host that the service is running on

 

port

the port that the service is running on

 

priority

the target's priority

 

weight

the target's weight

 
+
+
+

Returns

+

a new GSrvTarget.

+
+

Since: 2.22

+
+
+
+

g_srv_target_copy ()

+
GSrvTarget *
+g_srv_target_copy (GSrvTarget *target);
+

Copies target +

+
+

Parameters

+
+++++ + + + + + +

target

a GSrvTarget

 
+
+
+

Returns

+

a copy of target +

+
+

Since: 2.22

+
+
+
+

g_srv_target_free ()

+
void
+g_srv_target_free (GSrvTarget *target);
+

Frees target +

+
+

Parameters

+
+++++ + + + + + +

target

a GSrvTarget

 
+
+

Since: 2.22

+
+
+
+

g_srv_target_get_hostname ()

+
const gchar *
+g_srv_target_get_hostname (GSrvTarget *target);
+

Gets target +'s hostname (in ASCII form; if you are going to present +this to the user, you should use g_hostname_is_ascii_encoded() to +check if it contains encoded Unicode segments, and use +g_hostname_to_unicode() to convert it if it does.)

+
+

Parameters

+
+++++ + + + + + +

target

a GSrvTarget

 
+
+
+

Returns

+

target +'s hostname

+
+

Since: 2.22

+
+
+
+

g_srv_target_get_port ()

+
guint16
+g_srv_target_get_port (GSrvTarget *target);
+

Gets target +'s port

+
+

Parameters

+
+++++ + + + + + +

target

a GSrvTarget

 
+
+
+

Returns

+

target +'s port

+
+

Since: 2.22

+
+
+
+

g_srv_target_get_priority ()

+
guint16
+g_srv_target_get_priority (GSrvTarget *target);
+

Gets target +'s priority. You should not need to look at this; +GResolver already sorts the targets according to the algorithm in +RFC 2782.

+
+

Parameters

+
+++++ + + + + + +

target

a GSrvTarget

 
+
+
+

Returns

+

target +'s priority

+
+

Since: 2.22

+
+
+
+

g_srv_target_get_weight ()

+
guint16
+g_srv_target_get_weight (GSrvTarget *target);
+

Gets target +'s weight. You should not need to look at this; +GResolver already sorts the targets according to the algorithm in +RFC 2782.

+
+

Parameters

+
+++++ + + + + + +

target

a GSrvTarget

 
+
+
+

Returns

+

target +'s weight

+
+

Since: 2.22

+
+
+
+

g_srv_target_list_sort ()

+
GList *
+g_srv_target_list_sort (GList *targets);
+

Sorts targets + in place according to the algorithm in RFC 2782.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

targets

a GList of GSrvTarget

 
+
+
+

Returns

+

the head of the sorted list.

+

[transfer full]

+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

GSrvTarget

+
typedef struct _GSrvTarget GSrvTarget;
+

A single target host/port that a network service is running on.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSubprocess.html b/docs/reference/gio/html/GSubprocess.html new file mode 100644 index 0000000..39da6aa --- /dev/null +++ b/docs/reference/gio/html/GSubprocess.html @@ -0,0 +1,1587 @@ + + + + +GSubprocess: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSubprocess

+

GSubprocess — Child processes

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GSubprocess * + +g_subprocess_new () +
+GSubprocess * + +g_subprocess_newv () +
const gchar * + +g_subprocess_get_identifier () +
+GOutputStream * + +g_subprocess_get_stdin_pipe () +
+GInputStream * + +g_subprocess_get_stdout_pipe () +
+GInputStream * + +g_subprocess_get_stderr_pipe () +
+gboolean + +g_subprocess_wait () +
+void + +g_subprocess_wait_async () +
+gboolean + +g_subprocess_wait_finish () +
+gboolean + +g_subprocess_wait_check () +
+void + +g_subprocess_wait_check_async () +
+gboolean + +g_subprocess_wait_check_finish () +
+gboolean + +g_subprocess_get_successful () +
+gboolean + +g_subprocess_get_if_exited () +
+gint + +g_subprocess_get_exit_status () +
+gboolean + +g_subprocess_get_if_signaled () +
+gint + +g_subprocess_get_term_sig () +
+gint + +g_subprocess_get_status () +
+void + +g_subprocess_send_signal () +
+void + +g_subprocess_force_exit () +
+gboolean + +g_subprocess_communicate () +
+void + +g_subprocess_communicate_async () +
+gboolean + +g_subprocess_communicate_finish () +
+gboolean + +g_subprocess_communicate_utf8 () +
+void + +g_subprocess_communicate_utf8_async () +
+gboolean + +g_subprocess_communicate_utf8_finish () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + +
GStrvargvWrite / Construct Only
GSubprocessFlagsflagsWrite / Construct Only
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GSubprocess
enumGSubprocessFlags
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSubprocess
+
+
+
+

Implemented Interfaces

+

+GSubprocess implements + GInitable.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GSubprocess allows the creation of and interaction with child +processes.

+

Processes can be communicated with using standard GIO-style APIs (ie: +GInputStream, GOutputStream). There are GIO-style APIs to wait for +process termination (ie: cancellable and with an asynchronous +variant).

+

There is an API to force a process to terminate, as well as a +race-free API for sending UNIX signals to a subprocess.

+

One major advantage that GIO brings over the core GLib library is +comprehensive API for asynchronous I/O, such +g_output_stream_splice_async(). This makes GSubprocess +significantly more powerful and flexible than equivalent APIs in +some other languages such as the subprocess.py +included with Python. For example, using GSubprocess one could +create two child processes, reading standard output from the first, +processing it, and writing to the input stream of the second, all +without blocking the main loop.

+

A powerful g_subprocess_communicate() API is provided similar to the +communicate() method of subprocess.py. This enables very easy +interaction with a subprocess that has been opened with pipes.

+

GSubprocess defaults to tight control over the file descriptors open +in the child process, avoiding dangling-fd issues that are caused by +a simple fork()/exec(). The only open file descriptors in the +spawned process are ones that were explicitly specified by the +GSubprocess API (unless G_SUBPROCESS_FLAGS_INHERIT_FDS was +specified).

+

GSubprocess will quickly reap all child processes as they exit, +avoiding "zombie processes" remaining around for long periods of +time. g_subprocess_wait() can be used to wait for this to happen, +but it will happen even without the call being explicitly made.

+

As a matter of principle, GSubprocess has no API that accepts +shell-style space-separated strings. It will, however, match the +typical shell behaviour of searching the PATH for executables that do +not contain a directory separator in their name.

+

GSubprocess attempts to have a very simple API for most uses (ie: +spawning a subprocess with arguments and support for most typical +kinds of input and output redirection). See g_subprocess_new(). The +GSubprocessLauncher API is provided for more complicated cases +(advanced types of redirection, environment variable manipulation, +change of working directory, child setup functions, etc).

+

A typical use of GSubprocess will involve calling +g_subprocess_new(), followed by g_subprocess_wait_async() or +g_subprocess_wait(). After the process exits, the status can be +checked using functions such as g_subprocess_get_if_exited() (which +are similar to the familiar WIFEXITED-style POSIX macros).

+
+
+

Functions

+
+

g_subprocess_new ()

+
GSubprocess *
+g_subprocess_new (GSubprocessFlags flags,
+                  GError **error,
+                  const gchar *argv0,
+                  ...);
+

Create a new process with the given flags and varargs argument +list. By default, matching the g_spawn_async() defaults, the +child's stdin will be set to the system null device, and +stdout/stderr will be inherited from the parent. You can use +flags + to control this behavior.

+

The argument list must be terminated with NULL.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

flags

flags that define the behaviour of the subprocess

 

error

return location for an error, or NULL.

[allow-none]

argv0

first commandline argument to pass to the subprocess

 

...

more commandline arguments, followed by NULL

 
+
+
+

Returns

+

A newly created GSubprocess, or NULL on error (and error +will be set)

+
+

Since: 2.40

+
+
+
+

g_subprocess_newv ()

+
GSubprocess *
+g_subprocess_newv (const gchar * const *argv,
+                   GSubprocessFlags flags,
+                   GError **error);
+

Create a new process with the given flags and argument list.

+

The argument list is expected to be NULL-terminated.

+

[rename-to g_subprocess_new]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

argv

commandline arguments for the subprocess.

[array zero-terminated=1][element-type utf8]

flags

flags that define the behaviour of the subprocess

 

error

return location for an error, or NULL.

[allow-none]
+
+
+

Returns

+

A newly created GSubprocess, or NULL on error (and error +will be set)

+
+

Since: 2.40

+
+
+
+

g_subprocess_get_identifier ()

+
const gchar *
+g_subprocess_get_identifier (GSubprocess *subprocess);
+

On UNIX, returns the process ID as a decimal string. +On Windows, returns the result of GetProcessId() also as a string.

+
+

Parameters

+
+++++ + + + + + +

subprocess

a GSubprocess

 
+
+
+
+
+

g_subprocess_get_stdin_pipe ()

+
GOutputStream *
+g_subprocess_get_stdin_pipe (GSubprocess *subprocess);
+

Gets the GOutputStream that you can write to in order to give data +to the stdin of subprocess +.

+

The process must have been created with +G_SUBPROCESS_FLAGS_STDIN_PIPE.

+
+

Parameters

+
+++++ + + + + + +

subprocess

a GSubprocess

 
+
+
+

Returns

+

the stdout pipe.

+

[transfer none]

+
+

Since: 2.40

+
+
+
+

g_subprocess_get_stdout_pipe ()

+
GInputStream *
+g_subprocess_get_stdout_pipe (GSubprocess *subprocess);
+

Gets the GInputStream from which to read the stdout output of +subprocess +.

+

The process must have been created with +G_SUBPROCESS_FLAGS_STDOUT_PIPE.

+
+

Parameters

+
+++++ + + + + + +

subprocess

a GSubprocess

 
+
+
+

Returns

+

the stdout pipe.

+

[transfer none]

+
+

Since: 2.40

+
+
+
+

g_subprocess_get_stderr_pipe ()

+
GInputStream *
+g_subprocess_get_stderr_pipe (GSubprocess *subprocess);
+

Gets the GInputStream from which to read the stderr output of +subprocess +.

+

The process must have been created with +G_SUBPROCESS_FLAGS_STDERR_PIPE.

+
+

Parameters

+
+++++ + + + + + +

subprocess

a GSubprocess

 
+
+
+

Returns

+

the stderr pipe.

+

[transfer none]

+
+

Since: 2.40

+
+
+
+

g_subprocess_wait ()

+
gboolean
+g_subprocess_wait (GSubprocess *subprocess,
+                   GCancellable *cancellable,
+                   GError **error);
+

Synchronously wait for the subprocess to terminate.

+

After the process terminates you can query its exit status with +functions such as g_subprocess_get_if_exited() and +g_subprocess_get_exit_status().

+

This function does not fail in the case of the subprocess having +abnormal termination. See g_subprocess_wait_check() for that.

+

Cancelling cancellable + doesn't kill the subprocess. Call +g_subprocess_force_exit() if it is desirable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

subprocess

a GSubprocess

 

cancellable

a GCancellable

 

error

a GError

 
+
+
+

Returns

+

TRUE on success, FALSE if cancellable +was cancelled

+
+

Since: 2.40

+
+
+
+

g_subprocess_wait_async ()

+
void
+g_subprocess_wait_async (GSubprocess *subprocess,
+                         GCancellable *cancellable,
+                         GAsyncReadyCallback callback,
+                         gpointer user_data);
+

Wait for the subprocess to terminate.

+

This is the asynchronous version of g_subprocess_wait().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

subprocess

a GSubprocess

 

cancellable

a GCancellable, or NULL

 

callback

a GAsyncReadyCallback to call when the operation is complete

 

user_data

user_data for callback +

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_wait_finish ()

+
gboolean
+g_subprocess_wait_finish (GSubprocess *subprocess,
+                          GAsyncResult *result,
+                          GError **error);
+

Collects the result of a previous call to +g_subprocess_wait_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

subprocess

a GSubprocess

 

result

the GAsyncResult passed to your GAsyncReadyCallback

 

error

a pointer to a NULL GError, or NULL

 
+
+
+

Returns

+

TRUE if successful, or FALSE with error +set

+
+

Since: 2.40

+
+
+
+

g_subprocess_wait_check ()

+
gboolean
+g_subprocess_wait_check (GSubprocess *subprocess,
+                         GCancellable *cancellable,
+                         GError **error);
+

Combines g_subprocess_wait() with g_spawn_check_exit_status().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

subprocess

a GSubprocess

 

cancellable

a GCancellable

 

error

a GError

 
+
+
+

Returns

+

TRUE on success, FALSE if process exited abnormally, or +cancellable +was cancelled

+
+

Since: 2.40

+
+
+
+

g_subprocess_wait_check_async ()

+
void
+g_subprocess_wait_check_async (GSubprocess *subprocess,
+                               GCancellable *cancellable,
+                               GAsyncReadyCallback callback,
+                               gpointer user_data);
+

Combines g_subprocess_wait_async() with g_spawn_check_exit_status().

+

This is the asynchronous version of g_subprocess_wait_check().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

subprocess

a GSubprocess

 

cancellable

a GCancellable, or NULL

 

callback

a GAsyncReadyCallback to call when the operation is complete

 

user_data

user_data for callback +

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_wait_check_finish ()

+
gboolean
+g_subprocess_wait_check_finish (GSubprocess *subprocess,
+                                GAsyncResult *result,
+                                GError **error);
+

Collects the result of a previous call to +g_subprocess_wait_check_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

subprocess

a GSubprocess

 

result

the GAsyncResult passed to your GAsyncReadyCallback

 

error

a pointer to a NULL GError, or NULL

 
+
+
+

Returns

+

TRUE if successful, or FALSE with error +set

+
+

Since: 2.40

+
+
+
+

g_subprocess_get_successful ()

+
gboolean
+g_subprocess_get_successful (GSubprocess *subprocess);
+

Checks if the process was "successful". A process is considered +successful if it exited cleanly with an exit status of 0, either by +way of the exit() system call or return from main().

+

It is an error to call this function before g_subprocess_wait() has +returned.

+
+

Parameters

+
+++++ + + + + + +

subprocess

a GSubprocess

 
+
+
+

Returns

+

TRUE if the process exited cleanly with a exit status of 0

+
+

Since: 2.40

+
+
+
+

g_subprocess_get_if_exited ()

+
gboolean
+g_subprocess_get_if_exited (GSubprocess *subprocess);
+

Check if the given subprocess exited normally (ie: by way of exit() +or return from main()).

+

This is equivalent to the system WIFEXITED macro.

+

It is an error to call this function before g_subprocess_wait() has +returned.

+
+

Parameters

+
+++++ + + + + + +

subprocess

a GSubprocess

 
+
+
+

Returns

+

TRUE if the case of a normal exit

+
+

Since: 2.40

+
+
+
+

g_subprocess_get_exit_status ()

+
gint
+g_subprocess_get_exit_status (GSubprocess *subprocess);
+

Check the exit status of the subprocess, given that it exited +normally. This is the value passed to the exit() system call or the +return value from main.

+

This is equivalent to the system WEXITSTATUS macro.

+

It is an error to call this function before g_subprocess_wait() and +unless g_subprocess_get_if_exited() returned TRUE.

+
+

Parameters

+
+++++ + + + + + +

subprocess

a GSubprocess

 
+
+
+

Returns

+

the exit status

+
+

Since: 2.40

+
+
+
+

g_subprocess_get_if_signaled ()

+
gboolean
+g_subprocess_get_if_signaled (GSubprocess *subprocess);
+

Check if the given subprocess terminated in response to a signal.

+

This is equivalent to the system WIFSIGNALED macro.

+

It is an error to call this function before g_subprocess_wait() has +returned.

+
+

Parameters

+
+++++ + + + + + +

subprocess

a GSubprocess

 
+
+
+

Returns

+

TRUE if the case of termination due to a signal

+
+

Since: 2.40

+
+
+
+

g_subprocess_get_term_sig ()

+
gint
+g_subprocess_get_term_sig (GSubprocess *subprocess);
+

Get the signal number that caused the subprocess to terminate, given +that it terminated due to a signal.

+

This is equivalent to the system WTERMSIG macro.

+

It is an error to call this function before g_subprocess_wait() and +unless g_subprocess_get_if_signaled() returned TRUE.

+
+

Parameters

+
+++++ + + + + + +

subprocess

a GSubprocess

 
+
+
+

Returns

+

the signal causing termination

+
+

Since: 2.40

+
+
+
+

g_subprocess_get_status ()

+
gint
+g_subprocess_get_status (GSubprocess *subprocess);
+

Gets the raw status code of the process, as from waitpid().

+

This value has no particular meaning, but it can be used with the +macros defined by the system headers such as WIFEXITED. It can also +be used with g_spawn_check_exit_status().

+

It is more likely that you want to use g_subprocess_get_if_exited() +followed by g_subprocess_get_exit_status().

+

It is an error to call this function before g_subprocess_wait() has +returned.

+
+

Parameters

+
+++++ + + + + + +

subprocess

a GSubprocess

 
+
+
+

Returns

+

the (meaningless) waitpid() exit status from the kernel

+
+

Since: 2.40

+
+
+
+

g_subprocess_send_signal ()

+
void
+g_subprocess_send_signal (GSubprocess *subprocess,
+                          gint signal_num);
+

Sends the UNIX signal signal_num + to the subprocess, if it is still +running.

+

This API is race-free. If the subprocess has terminated, it will not +be signalled.

+

This API is not available on Windows.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

subprocess

a GSubprocess

 

signal_num

the signal number to send

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_force_exit ()

+
void
+g_subprocess_force_exit (GSubprocess *subprocess);
+

Use an operating-system specific method to attempt an immediate, +forceful termination of the process. There is no mechanism to +determine whether or not the request itself was successful; +however, you can use g_subprocess_wait() to monitor the status of +the process after calling this function.

+

On Unix, this function sends SIGKILL.

+
+

Parameters

+
+++++ + + + + + +

subprocess

a GSubprocess

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_communicate ()

+
gboolean
+g_subprocess_communicate (GSubprocess *subprocess,
+                          GBytes *stdin_buf,
+                          GCancellable *cancellable,
+                          GBytes **stdout_buf,
+                          GBytes **stderr_buf,
+                          GError **error);
+

Communicate with the subprocess until it terminates, and all input +and output has been completed.

+

If stdin_buf + is given, the subprocess must have been created with +G_SUBPROCESS_FLAGS_STDIN_PIPE. The given data is fed to the +stdin of the subprocess and the pipe is closed (ie: EOF).

+

At the same time (as not to cause blocking when dealing with large +amounts of data), if G_SUBPROCESS_FLAGS_STDOUT_PIPE or +G_SUBPROCESS_FLAGS_STDERR_PIPE were used, reads from those +streams. The data that was read is returned in stdout + and/or +the stderr +.

+

If the subprocess was created with G_SUBPROCESS_FLAGS_STDOUT_PIPE, +stdout_buf + will contain the data read from stdout. Otherwise, for +subprocesses not created with G_SUBPROCESS_FLAGS_STDOUT_PIPE, +stdout_buf + will be set to NULL. Similar provisions apply to +stderr_buf + and G_SUBPROCESS_FLAGS_STDERR_PIPE.

+

As usual, any output variable may be given as NULL to ignore it.

+

If you desire the stdout and stderr data to be interleaved, create +the subprocess with G_SUBPROCESS_FLAGS_STDOUT_PIPE and +G_SUBPROCESS_FLAGS_STDERR_MERGE. The merged result will be returned +in stdout_buf + and stderr_buf + will be set to NULL.

+

In case of any error (including cancellation), FALSE will be +returned with error + set. Some or all of the stdin data may have +been written. Any stdout or stderr data that has been read will be +discarded. None of the out variables (aside from error +) will have +been set to anything in particular and should not be inspected.

+

In the case that TRUE is returned, the subprocess has exited and the +exit status inspection APIs (eg: g_subprocess_get_if_exited(), +g_subprocess_get_exit_status()) may be used.

+

You should not attempt to use any of the subprocess pipes after +starting this function, since they may be left in strange states, +even if the operation was cancelled. You should especially not +attempt to interact with the pipes while the operation is in progress +(either from another thread or if using the asynchronous version).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

subprocess

a GSubprocess

 

stdin_buf

data to send to the stdin of the subprocess, or NULL.

[allow-none]

cancellable

a GCancellable

 

stdout_buf

data read from the subprocess stdout.

[out]

stderr_buf

data read from the subprocess stderr.

[out]

error

a pointer to a NULL GError pointer, or NULL

 
+
+
+

Returns

+

TRUE if successful

+
+

Since: 2.40

+
+
+
+

g_subprocess_communicate_async ()

+
void
+g_subprocess_communicate_async (GSubprocess *subprocess,
+                                GBytes *stdin_buf,
+                                GCancellable *cancellable,
+                                GAsyncReadyCallback callback,
+                                gpointer user_data);
+

Asynchronous version of g_subprocess_communicate(). Complete +invocation with g_subprocess_communicate_finish().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

subprocess

Self

 

stdin_buf

Input data, or NULL.

[allow-none]

cancellable

Cancellable.

[allow-none]

callback

Callback

 

user_data

User data

 
+
+
+
+
+

g_subprocess_communicate_finish ()

+
gboolean
+g_subprocess_communicate_finish (GSubprocess *subprocess,
+                                 GAsyncResult *result,
+                                 GBytes **stdout_buf,
+                                 GBytes **stderr_buf,
+                                 GError **error);
+

Complete an invocation of g_subprocess_communicate_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

subprocess

Self

 

result

Result

 

stdout_buf

Return location for stdout data.

[out]

stderr_buf

Return location for stderr data.

[out]

error

Error

 
+
+
+
+
+

g_subprocess_communicate_utf8 ()

+
gboolean
+g_subprocess_communicate_utf8 (GSubprocess *subprocess,
+                               const char *stdin_buf,
+                               GCancellable *cancellable,
+                               char **stdout_buf,
+                               char **stderr_buf,
+                               GError **error);
+

Like g_subprocess_communicate(), but validates the output of the +process as UTF-8, and returns it as a regular NUL terminated string.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

subprocess

a GSubprocess

 

stdin_buf

data to send to the stdin of the subprocess, or NULL.

[allow-none]

cancellable

a GCancellable

 

stdout_buf

data read from the subprocess stdout.

[out]

stderr_buf

data read from the subprocess stderr.

[out]

error

a pointer to a NULL GError pointer, or NULL

 
+
+
+
+
+

g_subprocess_communicate_utf8_async ()

+
void
+g_subprocess_communicate_utf8_async (GSubprocess *subprocess,
+                                     const char *stdin_buf,
+                                     GCancellable *cancellable,
+                                     GAsyncReadyCallback callback,
+                                     gpointer user_data);
+

Asynchronous version of g_subprocess_communicate_utf8(). Complete +invocation with g_subprocess_communicate_utf8_finish().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

subprocess

Self

 

stdin_buf

Input data, or NULL.

[allow-none]

cancellable

Cancellable

 

callback

Callback

 

user_data

User data

 
+
+
+
+
+

g_subprocess_communicate_utf8_finish ()

+
gboolean
+g_subprocess_communicate_utf8_finish (GSubprocess *subprocess,
+                                      GAsyncResult *result,
+                                      char **stdout_buf,
+                                      char **stderr_buf,
+                                      GError **error);
+

Complete an invocation of g_subprocess_communicate_utf8_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

subprocess

Self

 

result

Result

 

stdout_buf

Return location for stdout data.

[out]

stderr_buf

Return location for stderr data.

[out]

error

Error

 
+
+
+
+
+

Types and Values

+
+

GSubprocess

+
typedef struct _GSubprocess GSubprocess;
+

A child process.

+

Since: 2.40

+
+
+
+

enum GSubprocessFlags

+

Flags to define the behaviour of a GSubprocess.

+

Note that the default for stdin is to redirect from /dev/null. For +stdout and stderr the default are for them to inherit the +corresponding descriptor from the calling process.

+

Note that it is a programmer error to mix 'incompatible' flags. For +example, you may not request both G_SUBPROCESS_FLAGS_STDOUT_PIPE and +G_SUBPROCESS_FLAGS_STDOUT_SILENCE.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_SUBPROCESS_FLAGS_NONE

+

No flags.

+
 

G_SUBPROCESS_FLAGS_STDIN_PIPE

+

create a pipe for the stdin of the + spawned process that can be accessed with + g_subprocess_get_stdin_pipe().

+
 

G_SUBPROCESS_FLAGS_STDIN_INHERIT

+

stdin is inherited from the + calling process.

+
 

G_SUBPROCESS_FLAGS_STDOUT_PIPE

+

create a pipe for the stdout of the + spawned process that can be accessed with + g_subprocess_get_stdout_pipe().

+
 

G_SUBPROCESS_FLAGS_STDOUT_SILENCE

+

silence the stdout of the spawned + process (ie: redirect to /dev/null).

+
 

G_SUBPROCESS_FLAGS_STDERR_PIPE

+

create a pipe for the stderr of the + spawned process that can be accessed with + g_subprocess_get_stderr_pipe().

+
 

G_SUBPROCESS_FLAGS_STDERR_SILENCE

+

silence the stderr of the spawned + process (ie: redirect to /dev/null).

+
 

G_SUBPROCESS_FLAGS_STDERR_MERGE

+

merge the stderr of the spawned + process with whatever the stdout happens to be. This is a good way + of directing both streams to a common log file, for example.

+
 

G_SUBPROCESS_FLAGS_INHERIT_FDS

+

spawned processes will inherit the + file descriptors of their parent, unless those descriptors have + been explicitly marked as close-on-exec. This flag has no effect + over the "standard" file descriptors (stdin, stdout, stderr).

+
 
+
+

Since: 2.40

+
+
+
+

Property Details

+
+

The “argv” property

+
  “argv”                     GStrv
+

Argument vector.

+

Flags: Write / Construct Only

+
+
+
+

The “flags” property

+
  “flags”                    GSubprocessFlags
+

Subprocess flags.

+

Flags: Write / Construct Only

+
+
+
+

See Also

+

GSubprocessLauncher

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GSubprocessLauncher.html b/docs/reference/gio/html/GSubprocessLauncher.html new file mode 100644 index 0000000..9cdfd10 --- /dev/null +++ b/docs/reference/gio/html/GSubprocessLauncher.html @@ -0,0 +1,958 @@ + + + + +GSubprocess Launcher: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSubprocess Launcher

+

GSubprocess Launcher — Environment options for launching a child process

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GSubprocessLauncher * + +g_subprocess_launcher_new () +
+GSubprocess * + +g_subprocess_launcher_spawn () +
+GSubprocess * + +g_subprocess_launcher_spawnv () +
+void + +g_subprocess_launcher_set_environ () +
+void + +g_subprocess_launcher_setenv () +
+void + +g_subprocess_launcher_unsetenv () +
const gchar * + +g_subprocess_launcher_getenv () +
+void + +g_subprocess_launcher_set_cwd () +
+void + +g_subprocess_launcher_set_flags () +
+void + +g_subprocess_launcher_set_stdin_file_path () +
+void + +g_subprocess_launcher_take_stdin_fd () +
+void + +g_subprocess_launcher_set_stdout_file_path () +
+void + +g_subprocess_launcher_take_stdout_fd () +
+void + +g_subprocess_launcher_set_stderr_file_path () +
+void + +g_subprocess_launcher_take_stderr_fd () +
+void + +g_subprocess_launcher_take_fd () +
+void + +g_subprocess_launcher_set_child_setup () +
+
+
+

Properties

+
+++++ + + + + + +
GSubprocessFlagsflagsWrite / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GSubprocessLauncher
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSubprocessLauncher
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

This class contains a set of options for launching child processes, +such as where its standard input and output will be directed, the +argument list, the environment, and more.

+

While the GSubprocess class has high level functions covering +popular cases, use of this class allows access to more advanced +options. It can also be used to launch multiple subprocesses with +a similar configuration.

+
+
+

Functions

+
+

g_subprocess_launcher_new ()

+
GSubprocessLauncher *
+g_subprocess_launcher_new (GSubprocessFlags flags);
+

Creates a new GSubprocessLauncher.

+

The launcher is created with the default options. A copy of the +environment of the calling process is made at the time of this call +and will be used as the environment that the process is launched in.

+
+

Parameters

+
+++++ + + + + + +

flags

GSubprocessFlags

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_launcher_spawn ()

+
GSubprocess *
+g_subprocess_launcher_spawn (GSubprocessLauncher *self,
+                             GError **error,
+                             const gchar *argv0,
+                             ...);
+

Creates a GSubprocess given a provided varargs list of arguments.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

self

a GSubprocessLauncher

 

error

Error

 

argv0

Command line arguments

 

...

Continued arguments, NULL terminated

 
+
+
+

Returns

+

A new GSubprocess, or NULL on error (and error +will be set).

+

[transfer full]

+
+

Since: 2.40

+
+
+
+

g_subprocess_launcher_spawnv ()

+
GSubprocess *
+g_subprocess_launcher_spawnv (GSubprocessLauncher *self,
+                              const gchar * const *argv,
+                              GError **error);
+

Creates a GSubprocess given a provided array of arguments.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

self

a GSubprocessLauncher

 

argv

Command line arguments.

[array zero-terminated=1][element-type utf8]

error

Error

 
+
+
+

Returns

+

A new GSubprocess, or NULL on error (and error +will be set).

+

[transfer full]

+
+

Since: 2.40

+
+
+
+

g_subprocess_launcher_set_environ ()

+
void
+g_subprocess_launcher_set_environ (GSubprocessLauncher *self,
+                                   gchar **env);
+

Replace the entire environment of processes launched from this +launcher with the given 'environ' variable.

+

Typically you will build this variable by using g_listenv() to copy +the process 'environ' and using the functions g_environ_setenv(), +g_environ_unsetenv(), etc.

+

As an alternative, you can use g_subprocess_launcher_setenv(), +g_subprocess_launcher_unsetenv(), etc.

+

On UNIX, all strings in this array can be arbitrary byte strings. +On Windows, they should be in UTF-8.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

self

a GSubprocess

 

env

the replacement environment

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_launcher_setenv ()

+
void
+g_subprocess_launcher_setenv (GSubprocessLauncher *self,
+                              const gchar *variable,
+                              const gchar *value,
+                              gboolean overwrite);
+

Sets the environment variable variable + in the environment of +processes launched from this launcher.

+

On UNIX, both the variable's name and value can be arbitrary byte +strings, except that the variable's name cannot contain '='. +On Windows, they should be in UTF-8.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

self

a GSubprocess

 

variable

the environment variable to set, must not contain '='

 

value

the new value for the variable

 

overwrite

whether to change the variable if it already exists

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_launcher_unsetenv ()

+
void
+g_subprocess_launcher_unsetenv (GSubprocessLauncher *self,
+                                const gchar *variable);
+

Removes the environment variable variable + from the environment of +processes launched from this launcher.

+

On UNIX, the variable's name can be an arbitrary byte string not +containing '='. On Windows, it should be in UTF-8.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

self

a GSubprocess

 

variable

the environment variable to unset, must not contain '='

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_launcher_getenv ()

+
const gchar *
+g_subprocess_launcher_getenv (GSubprocessLauncher *self,
+                              const gchar *variable);
+

Returns the value of the environment variable variable + in the +environment of processes launched from this launcher.

+

On UNIX, the returned string can be an arbitrary byte string. +On Windows, it will be UTF-8.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

self

a GSubprocess

 

variable

the environment variable to get

 
+
+
+

Returns

+

the value of the environment variable, NULL if unset

+
+

Since: 2.40

+
+
+
+

g_subprocess_launcher_set_cwd ()

+
void
+g_subprocess_launcher_set_cwd (GSubprocessLauncher *self,
+                               const gchar *cwd);
+

Sets the current working directory that processes will be launched +with.

+

By default processes are launched with the current working directory +of the launching process at the time of launch.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

self

a GSubprocess

 

cwd

the cwd for launched processes

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_launcher_set_flags ()

+
void
+g_subprocess_launcher_set_flags (GSubprocessLauncher *self,
+                                 GSubprocessFlags flags);
+

Sets the flags on the launcher.

+

The default flags are G_SUBPROCESS_FLAGS_NONE.

+

You may not set flags that specify conflicting options for how to +handle a particular stdio stream (eg: specifying both +G_SUBPROCESS_FLAGS_STDIN_PIPE and +G_SUBPROCESS_FLAGS_STDIN_INHERIT).

+

You may also not set a flag that conflicts with a previous call to a +function like g_subprocess_launcher_set_stdin_file_path() or +g_subprocess_launcher_take_stdout_fd().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

self

a GSubprocessLauncher

 

flags

GSubprocessFlags

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_launcher_set_stdin_file_path ()

+
void
+g_subprocess_launcher_set_stdin_file_path
+                               (GSubprocessLauncher *self,
+                                const gchar *path);
+

Sets the file path to use as the stdin for spawned processes.

+

If path + is NULL then any previously given path is unset.

+

The file must exist or spawning the process will fail.

+

You may not set a stdin file path if a stdin fd is already set or if +the launcher flags contain any flags directing stdin elsewhere.

+

This feature is only available on UNIX.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

self

a GSubprocessLauncher

 

path

a filename or NULL

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_launcher_take_stdin_fd ()

+
void
+g_subprocess_launcher_take_stdin_fd (GSubprocessLauncher *self,
+                                     gint fd);
+

Sets the file descriptor to use as the stdin for spawned processes.

+

If fd + is -1 then any previously given fd is unset.

+

Note that if your intention is to have the stdin of the calling +process inherited by the child then G_SUBPROCESS_FLAGS_STDIN_INHERIT +is a better way to go about doing that.

+

The passed fd + is noted but will not be touched in the current +process. It is therefore necessary that it be kept open by the +caller until the subprocess is spawned. The file descriptor will +also not be explicitly closed on the child side, so it must be marked +O_CLOEXEC if that's what you want.

+

You may not set a stdin fd if a stdin file path is already set or if +the launcher flags contain any flags directing stdin elsewhere.

+

This feature is only available on UNIX.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

self

a GSubprocessLauncher

 

fd

a file descriptor, or -1

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_launcher_set_stdout_file_path ()

+
void
+g_subprocess_launcher_set_stdout_file_path
+                               (GSubprocessLauncher *self,
+                                const gchar *path);
+

Sets the file path to use as the stdout for spawned processes.

+

If path + is NULL then any previously given path is unset.

+

The file will be created or truncated when the process is spawned, as +would be the case if using '>' at the shell.

+

You may not set a stdout file path if a stdout fd is already set or +if the launcher flags contain any flags directing stdout elsewhere.

+

This feature is only available on UNIX.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

self

a GSubprocessLauncher

 

path

a filename or NULL

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_launcher_take_stdout_fd ()

+
void
+g_subprocess_launcher_take_stdout_fd (GSubprocessLauncher *self,
+                                      gint fd);
+

Sets the file descriptor to use as the stdout for spawned processes.

+

If fd + is -1 then any previously given fd is unset.

+

Note that the default behaviour is to pass stdout through to the +stdout of the parent process.

+

The passed fd + is noted but will not be touched in the current +process. It is therefore necessary that it be kept open by the +caller until the subprocess is spawned. The file descriptor will +also not be explicitly closed on the child side, so it must be marked +O_CLOEXEC if that's what you want.

+

You may not set a stdout fd if a stdout file path is already set or +if the launcher flags contain any flags directing stdout elsewhere.

+

This feature is only available on UNIX.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

self

a GSubprocessLauncher

 

fd

a file descriptor, or -1

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_launcher_set_stderr_file_path ()

+
void
+g_subprocess_launcher_set_stderr_file_path
+                               (GSubprocessLauncher *self,
+                                const gchar *path);
+

Sets the file path to use as the stderr for spawned processes.

+

If path + is NULL then any previously given path is unset.

+

The file will be created or truncated when the process is spawned, as +would be the case if using '2>' at the shell.

+

If you want to send both stdout and stderr to the same file then use +G_SUBPROCESS_FLAGS_STDERR_MERGE.

+

You may not set a stderr file path if a stderr fd is already set or +if the launcher flags contain any flags directing stderr elsewhere.

+

This feature is only available on UNIX.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

self

a GSubprocessLauncher

 

path

a filename or NULL

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_launcher_take_stderr_fd ()

+
void
+g_subprocess_launcher_take_stderr_fd (GSubprocessLauncher *self,
+                                      gint fd);
+

Sets the file descriptor to use as the stderr for spawned processes.

+

If fd + is -1 then any previously given fd is unset.

+

Note that the default behaviour is to pass stderr through to the +stderr of the parent process.

+

The passed fd + belongs to the GSubprocessLauncher. It will be +automatically closed when the launcher is finalized. The file +descriptor will also be closed on the child side when executing the +spawned process.

+

You may not set a stderr fd if a stderr file path is already set or +if the launcher flags contain any flags directing stderr elsewhere.

+

This feature is only available on UNIX.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

self

a GSubprocessLauncher

 

fd

a file descriptor, or -1

 
+
+

Since: 2.40

+
+
+
+

g_subprocess_launcher_take_fd ()

+
void
+g_subprocess_launcher_take_fd (GSubprocessLauncher *self,
+                               gint source_fd,
+                               gint target_fd);
+

Transfer an arbitrary file descriptor from parent process to the +child. This function takes "ownership" of the fd; it will be closed +in the parent when self + is freed.

+

By default, all file descriptors from the parent will be closed. +This function allows you to create (for example) a custom pipe() or +socketpair() before launching the process, and choose the target +descriptor in the child.

+

An example use case is GNUPG, which has a command line argument +--passphrase-fd providing a file descriptor number where it expects +the passphrase to be written.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

self

a GSubprocessLauncher

 

source_fd

File descriptor in parent process

 

target_fd

Target descriptor for child process

 
+
+
+
+
+

g_subprocess_launcher_set_child_setup ()

+
void
+g_subprocess_launcher_set_child_setup (GSubprocessLauncher *self,
+                                       GSpawnChildSetupFunc child_setup,
+                                       gpointer user_data,
+                                       GDestroyNotify destroy_notify);
+

Sets up a child setup function.

+

The child setup function will be called after fork() but before +exec() on the child's side.

+

destroy_notify + will not be automatically called on the child's side +of the fork(). It will only be called when the last reference on the +GSubprocessLauncher is dropped or when a new child setup function is +given.

+

NULL can be given as child_setup + to disable the functionality.

+

Child setup functions are only available on UNIX.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

self

a GSubprocessLauncher

 

child_setup

a GSpawnChildSetupFunc to use as the child setup function

 

user_data

user data for child_setup +

 

destroy_notify

a GDestroyNotify for user_data +

 
+
+

Since: 2.40

+
+
+
+

Types and Values

+
+

GSubprocessLauncher

+
typedef struct _GSubprocessLauncher GSubprocessLauncher;
+

Options for launching a child process.

+

Since: 2.40

+
+
+
+

Property Details

+
+

The “flags” property

+
  “flags”                    GSubprocessFlags
+

GSubprocessFlags for launched processes.

+

Flags: Write / Construct Only

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GTask.html b/docs/reference/gio/html/GTask.html new file mode 100644 index 0000000..79c1ce3 --- /dev/null +++ b/docs/reference/gio/html/GTask.html @@ -0,0 +1,2636 @@ + + + + +GTask: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTask

+

GTask — Cancellable synchronous or asynchronous task + and result

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GTask * + +g_task_new () +
+void + +g_task_set_task_data () +
+void + +g_task_set_priority () +
+void + +g_task_set_check_cancellable () +
+gboolean + +g_task_set_return_on_cancel () +
+void + +g_task_set_source_tag () +
+void + +g_task_report_error () +
+void + +g_task_report_new_error () +
+gpointer + +g_task_get_task_data () +
+gint + +g_task_get_priority () +
+GCancellable * + +g_task_get_cancellable () +
+gboolean + +g_task_get_check_cancellable () +
+gboolean + +g_task_get_return_on_cancel () +
+GMainContext * + +g_task_get_context () +
+gpointer + +g_task_get_source_object () +
+gpointer + +g_task_get_source_tag () +
+void + +g_task_return_boolean () +
+void + +g_task_return_int () +
+void + +g_task_return_pointer () +
+void + +g_task_return_error () +
+void + +g_task_return_new_error () +
+gboolean + +g_task_return_error_if_cancelled () +
+gboolean + +g_task_propagate_boolean () +
+gssize + +g_task_propagate_int () +
+gpointer + +g_task_propagate_pointer () +
+gboolean + +g_task_had_error () +
+gboolean + +g_task_get_completed () +
+void + +g_task_run_in_thread () +
+void + +g_task_run_in_thread_sync () +
+void + +(*GTaskThreadFunc) () +
+void + +g_task_attach_source () +
+gboolean + +g_task_is_valid () +
+
+
+

Properties

+
+++++ + + + + + +
gbooleancompletedRead
+
+
+

Types and Values

+
++++ + + + + +
 GTask
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GTask
+
+
+
+

Implemented Interfaces

+

+GTask implements + GAsyncResult.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A GTask represents and manages a cancellable "task".

+
+

Asynchronous operations

+

The most common usage of GTask is as a GAsyncResult, to +manage data during an asynchronous operation. You call +g_task_new() in the "start" method, followed by +g_task_set_task_data() and the like if you need to keep some +additional data associated with the task, and then pass the +task object around through your asynchronous operation. +Eventually, you will call a method such as +g_task_return_pointer() or g_task_return_error(), which will +save the value you give it and then invoke the task's callback +function (waiting until the next iteration of the main +loop first, if necessary). The caller will pass the GTask back +to the operation's finish function (as a GAsyncResult), and +you can use g_task_propagate_pointer() or the like to extract +the return value.

+

Here is an example for using GTask as a GAsyncResult:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
typedef struct {
+  CakeFrostingType frosting;
+  char *message;
+} DecorationData;
+
+static void
+decoration_data_free (DecorationData *decoration)
+{
+  g_free (decoration->message);
+  g_slice_free (DecorationData, decoration);
+}
+
+static void
+baked_cb (Cake     *cake,
+          gpointer  user_data)
+{
+  GTask *task = user_data;
+  DecorationData *decoration = g_task_get_task_data (task);
+  GError *error = NULL;
+
+  if (cake == NULL)
+    {
+      g_task_return_new_error (task, BAKER_ERROR, BAKER_ERROR_NO_FLOUR,
+                               "Go to the supermarket");
+      g_object_unref (task);
+      return;
+    }
+
+  if (!cake_decorate (cake, decoration->frosting, decoration->message, &error))
+    {
+      g_object_unref (cake);
+      // g_task_return_error() takes ownership of error
+      g_task_return_error (task, error);
+      g_object_unref (task);
+      return;
+    }
+
+  g_task_return_pointer (task, cake, g_object_unref);
+  g_object_unref (task);
+}
+
+void
+baker_bake_cake_async (Baker               *self,
+                       guint                radius,
+                       CakeFlavor           flavor,
+                       CakeFrostingType     frosting,
+                       const char          *message,
+                       GCancellable        *cancellable,
+                       GAsyncReadyCallback  callback,
+                       gpointer             user_data)
+{
+  GTask *task;
+  DecorationData *decoration;
+  Cake  *cake;
+
+  task = g_task_new (self, cancellable, callback, user_data);
+  if (radius < 3)
+    {
+      g_task_return_new_error (task, BAKER_ERROR, BAKER_ERROR_TOO_SMALL,
+                               "%ucm radius cakes are silly",
+                               radius);
+      g_object_unref (task);
+      return;
+    }
+
+  cake = _baker_get_cached_cake (self, radius, flavor, frosting, message);
+  if (cake != NULL)
+    {
+      // _baker_get_cached_cake() returns a reffed cake
+      g_task_return_pointer (task, cake, g_object_unref);
+      g_object_unref (task);
+      return;
+    }
+
+  decoration = g_slice_new (DecorationData);
+  decoration->frosting = frosting;
+  decoration->message = g_strdup (message);
+  g_task_set_task_data (task, decoration, (GDestroyNotify) decoration_data_free);
+
+  _baker_begin_cake (self, radius, flavor, cancellable, baked_cb, task);
+}
+
+Cake *
+baker_bake_cake_finish (Baker         *self,
+                        GAsyncResult  *result,
+                        GError       **error)
+{
+  g_return_val_if_fail (g_task_is_valid (result, self), NULL);
+
+  return g_task_propagate_pointer (G_TASK (result), error);
+}
+
+ +

+
+
+

Chained asynchronous operations

+

GTask also tries to simplify asynchronous operations that +internally chain together several smaller asynchronous +operations. g_task_get_cancellable(), g_task_get_context(), +and g_task_get_priority() allow you to get back the task's +GCancellable, GMainContext, and I/O priority +when starting a new subtask, so you don't have to keep track +of them yourself. g_task_attach_source() simplifies the case +of waiting for a source to fire (automatically using the correct +GMainContext and priority).

+

Here is an example for chained asynchronous operations:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
typedef struct {
+  Cake *cake;
+  CakeFrostingType frosting;
+  char *message;
+} BakingData;
+
+static void
+decoration_data_free (BakingData *bd)
+{
+  if (bd->cake)
+    g_object_unref (bd->cake);
+  g_free (bd->message);
+  g_slice_free (BakingData, bd);
+}
+
+static void
+decorated_cb (Cake         *cake,
+              GAsyncResult *result,
+              gpointer      user_data)
+{
+  GTask *task = user_data;
+  GError *error = NULL;
+
+  if (!cake_decorate_finish (cake, result, &error))
+    {
+      g_object_unref (cake);
+      g_task_return_error (task, error);
+      g_object_unref (task);
+      return;
+    }
+
+  // baking_data_free() will drop its ref on the cake, so we have to
+  // take another here to give to the caller.
+  g_task_return_pointer (task, g_object_ref (cake), g_object_unref);
+  g_object_unref (task);
+}
+
+static gboolean
+decorator_ready (gpointer user_data)
+{
+  GTask *task = user_data;
+  BakingData *bd = g_task_get_task_data (task);
+
+  cake_decorate_async (bd->cake, bd->frosting, bd->message,
+                       g_task_get_cancellable (task),
+                       decorated_cb, task);
+
+  return G_SOURCE_REMOVE;
+}
+
+static void
+baked_cb (Cake     *cake,
+          gpointer  user_data)
+{
+  GTask *task = user_data;
+  BakingData *bd = g_task_get_task_data (task);
+  GError *error = NULL;
+
+  if (cake == NULL)
+    {
+      g_task_return_new_error (task, BAKER_ERROR, BAKER_ERROR_NO_FLOUR,
+                               "Go to the supermarket");
+      g_object_unref (task);
+      return;
+    }
+
+  bd->cake = cake;
+
+  // Bail out now if the user has already cancelled
+  if (g_task_return_error_if_cancelled (task))
+    {
+      g_object_unref (task);
+      return;
+    }
+
+  if (cake_decorator_available (cake))
+    decorator_ready (task);
+  else
+    {
+      GSource *source;
+
+      source = cake_decorator_wait_source_new (cake);
+      // Attach @source to @task's GMainContext and have it call
+      // decorator_ready() when it is ready.
+      g_task_attach_source (task, source, decorator_ready);
+      g_source_unref (source);
+    }
+}
+
+void
+baker_bake_cake_async (Baker               *self,
+                       guint                radius,
+                       CakeFlavor           flavor,
+                       CakeFrostingType     frosting,
+                       const char          *message,
+                       gint                 priority,
+                       GCancellable        *cancellable,
+                       GAsyncReadyCallback  callback,
+                       gpointer             user_data)
+{
+  GTask *task;
+  BakingData *bd;
+
+  task = g_task_new (self, cancellable, callback, user_data);
+  g_task_set_priority (task, priority);
+
+  bd = g_slice_new0 (BakingData);
+  bd->frosting = frosting;
+  bd->message = g_strdup (message);
+  g_task_set_task_data (task, bd, (GDestroyNotify) baking_data_free);
+
+  _baker_begin_cake (self, radius, flavor, cancellable, baked_cb, task);
+}
+
+Cake *
+baker_bake_cake_finish (Baker         *self,
+                        GAsyncResult  *result,
+                        GError       **error)
+{
+  g_return_val_if_fail (g_task_is_valid (result, self), NULL);
+
+  return g_task_propagate_pointer (G_TASK (result), error);
+}
+
+ +

+
+
+

Asynchronous operations from synchronous ones

+

You can use g_task_run_in_thread() to turn a synchronous +operation into an asynchronous one, by running it in a thread +which will then dispatch the result back to the caller's +GMainContext when it completes.

+

Running a task in a thread:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
typedef struct {
+  guint radius;
+  CakeFlavor flavor;
+  CakeFrostingType frosting;
+  char *message;
+} CakeData;
+
+static void
+cake_data_free (CakeData *cake_data)
+{
+  g_free (cake_data->message);
+  g_slice_free (CakeData, cake_data);
+}
+
+static void
+bake_cake_thread (GTask         *task,
+                  gpointer       source_object,
+                  gpointer       task_data,
+                  GCancellable  *cancellable)
+{
+  Baker *self = source_object;
+  CakeData *cake_data = task_data;
+  Cake *cake;
+  GError *error = NULL;
+
+  cake = bake_cake (baker, cake_data->radius, cake_data->flavor,
+                    cake_data->frosting, cake_data->message,
+                    cancellable, &error);
+  if (cake)
+    g_task_return_pointer (task, cake, g_object_unref);
+  else
+    g_task_return_error (task, error);
+}
+
+void
+baker_bake_cake_async (Baker               *self,
+                       guint                radius,
+                       CakeFlavor           flavor,
+                       CakeFrostingType     frosting,
+                       const char          *message,
+                       GCancellable        *cancellable,
+                       GAsyncReadyCallback  callback,
+                       gpointer             user_data)
+{
+  CakeData *cake_data;
+  GTask *task;
+
+  cake_data = g_slice_new (CakeData);
+  cake_data->radius = radius;
+  cake_data->flavor = flavor;
+  cake_data->frosting = frosting;
+  cake_data->message = g_strdup (message);
+  task = g_task_new (self, cancellable, callback, user_data);
+  g_task_set_task_data (task, cake_data, (GDestroyNotify) cake_data_free);
+  g_task_run_in_thread (task, bake_cake_thread);
+  g_object_unref (task);
+}
+
+Cake *
+baker_bake_cake_finish (Baker         *self,
+                        GAsyncResult  *result,
+                        GError       **error)
+{
+  g_return_val_if_fail (g_task_is_valid (result, self), NULL);
+
+  return g_task_propagate_pointer (G_TASK (result), error);
+}
+
+ +

+
+
+

Adding cancellability to uncancellable tasks

+

Finally, g_task_run_in_thread() and g_task_run_in_thread_sync() +can be used to turn an uncancellable operation into a +cancellable one. If you call g_task_set_return_on_cancel(), +passing TRUE, then if the task's GCancellable is cancelled, +it will return control back to the caller immediately, while +allowing the task thread to continue running in the background +(and simply discarding its result when it finally does finish). +Provided that the task thread is careful about how it uses +locks and other externally-visible resources, this allows you +to make "GLib-friendly" asynchronous and cancellable +synchronous variants of blocking APIs.

+

Cancelling a task:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
static void
+bake_cake_thread (GTask         *task,
+                  gpointer       source_object,
+                  gpointer       task_data,
+                  GCancellable  *cancellable)
+{
+  Baker *self = source_object;
+  CakeData *cake_data = task_data;
+  Cake *cake;
+  GError *error = NULL;
+
+  cake = bake_cake (baker, cake_data->radius, cake_data->flavor,
+                    cake_data->frosting, cake_data->message,
+                    &error);
+  if (error)
+    {
+      g_task_return_error (task, error);
+      return;
+    }
+
+  // If the task has already been cancelled, then we don't want to add
+  // the cake to the cake cache. Likewise, we don't  want to have the
+  // task get cancelled in the middle of updating the cache.
+  // g_task_set_return_on_cancel() will return %TRUE here if it managed
+  // to disable return-on-cancel, or %FALSE if the task was cancelled
+  // before it could.
+  if (g_task_set_return_on_cancel (task, FALSE))
+    {
+      // If the caller cancels at this point, their
+      // GAsyncReadyCallback won't be invoked until we return,
+      // so we don't have to worry that this code will run at
+      // the same time as that code does. But if there were
+      // other functions that might look at the cake cache,
+      // then we'd probably need a GMutex here as well.
+      baker_add_cake_to_cache (baker, cake);
+      g_task_return_pointer (task, cake, g_object_unref);
+    }
+}
+
+void
+baker_bake_cake_async (Baker               *self,
+                       guint                radius,
+                       CakeFlavor           flavor,
+                       CakeFrostingType     frosting,
+                       const char          *message,
+                       GCancellable        *cancellable,
+                       GAsyncReadyCallback  callback,
+                       gpointer             user_data)
+{
+  CakeData *cake_data;
+  GTask *task;
+
+  cake_data = g_slice_new (CakeData);
+
+  ...
+
+  task = g_task_new (self, cancellable, callback, user_data);
+  g_task_set_task_data (task, cake_data, (GDestroyNotify) cake_data_free);
+  g_task_set_return_on_cancel (task, TRUE);
+  g_task_run_in_thread (task, bake_cake_thread);
+}
+
+Cake *
+baker_bake_cake_sync (Baker               *self,
+                      guint                radius,
+                      CakeFlavor           flavor,
+                      CakeFrostingType     frosting,
+                      const char          *message,
+                      GCancellable        *cancellable,
+                      GError             **error)
+{
+  CakeData *cake_data;
+  GTask *task;
+  Cake *cake;
+
+  cake_data = g_slice_new (CakeData);
+
+  ...
+
+  task = g_task_new (self, cancellable, NULL, NULL);
+  g_task_set_task_data (task, cake_data, (GDestroyNotify) cake_data_free);
+  g_task_set_return_on_cancel (task, TRUE);
+  g_task_run_in_thread_sync (task, bake_cake_thread);
+
+  cake = g_task_propagate_pointer (task, error);
+  g_object_unref (task);
+  return cake;
+}
+
+ +

+
+
+

Porting from GSimpleAsyncResult

+

GTask's API attempts to be simpler than GSimpleAsyncResult's +in several ways:

+
+
+
+
+

Functions

+
+

g_task_new ()

+
GTask *
+g_task_new (gpointer source_object,
+            GCancellable *cancellable,
+            GAsyncReadyCallback callback,
+            gpointer callback_data);
+

Creates a GTask acting on source_object +, which will eventually be +used to invoke callback + in the current +thread-default main context.

+

Call this in the "start" method of your asynchronous method, and +pass the GTask around throughout the asynchronous operation. You +can use g_task_set_task_data() to attach task-specific data to the +object, which you can retrieve later via g_task_get_task_data().

+

By default, if cancellable + is cancelled, then the return value of +the task will always be G_IO_ERROR_CANCELLED, even if the task had +already completed before the cancellation. This allows for +simplified handling in cases where cancellation may imply that +other objects that the task depends on have been destroyed. If you +do not want this behavior, you can use +g_task_set_check_cancellable() to change it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

source_object

the GObject that owns +this task, or NULL.

[allow-none][type GObject]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback.

[scope async]

callback_data

user data passed to callback +.

[closure]
+
+
+

Returns

+

a GTask.

+
+

Since: 2.36

+
+
+
+

g_task_set_task_data ()

+
void
+g_task_set_task_data (GTask *task,
+                      gpointer task_data,
+                      GDestroyNotify task_data_destroy);
+

Sets task +'s task data (freeing the existing task data, if any).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

task

the GTask

 

task_data

task-specific data.

[allow-none]

task_data_destroy

GDestroyNotify for task_data +.

[allow-none]
+
+

Since: 2.36

+
+
+
+

g_task_set_priority ()

+
void
+g_task_set_priority (GTask *task,
+                     gint priority);
+

Sets task +'s priority. If you do not call this, it will default to +G_PRIORITY_DEFAULT.

+

This will affect the priority of GSources created with +g_task_attach_source() and the scheduling of tasks run in threads, +and can also be explicitly retrieved later via +g_task_get_priority().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

task

the GTask

 

priority

the priority of the request

 
+
+

Since: 2.36

+
+
+
+

g_task_set_check_cancellable ()

+
void
+g_task_set_check_cancellable (GTask *task,
+                              gboolean check_cancellable);
+

Sets or clears task +'s check-cancellable flag. If this is TRUE +(the default), then g_task_propagate_pointer(), etc, and +g_task_had_error() will check the task's GCancellable first, and +if it has been cancelled, then they will consider the task to have +returned an "Operation was cancelled" error +(G_IO_ERROR_CANCELLED), regardless of any other error or return +value the task may have had.

+

If check_cancellable + is FALSE, then the GTask will not check the +cancellable itself, and it is up to task +'s owner to do this (eg, +via g_task_return_error_if_cancelled()).

+

If you are using g_task_set_return_on_cancel() as well, then +you must leave check-cancellable set TRUE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

task

the GTask

 

check_cancellable

whether GTask will check the state of +its GCancellable for you.

 
+
+

Since: 2.36

+
+
+
+

g_task_set_return_on_cancel ()

+
gboolean
+g_task_set_return_on_cancel (GTask *task,
+                             gboolean return_on_cancel);
+

Sets or clears task +'s return-on-cancel flag. This is only +meaningful for tasks run via g_task_run_in_thread() or +g_task_run_in_thread_sync().

+

If return_on_cancel + is TRUE, then cancelling task +'s +GCancellable will immediately cause it to return, as though the +task's GTaskThreadFunc had called +g_task_return_error_if_cancelled() and then returned.

+

This allows you to create a cancellable wrapper around an +uninterruptable function. The GTaskThreadFunc just needs to be +careful that it does not modify any externally-visible state after +it has been cancelled. To do that, the thread should call +g_task_set_return_on_cancel() again to (atomically) set +return-on-cancel FALSE before making externally-visible changes; +if the task gets cancelled before the return-on-cancel flag could +be changed, g_task_set_return_on_cancel() will indicate this by +returning FALSE.

+

You can disable and re-enable this flag multiple times if you wish. +If the task's GCancellable is cancelled while return-on-cancel is +FALSE, then calling g_task_set_return_on_cancel() to set it TRUE +again will cause the task to be cancelled at that point.

+

If the task's GCancellable is already cancelled before you call +g_task_run_in_thread()/g_task_run_in_thread_sync(), then the +GTaskThreadFunc will still be run (for consistency), but the task +will also be completed right away.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

task

the GTask

 

return_on_cancel

whether the task returns automatically when +it is cancelled.

 
+
+
+

Returns

+

TRUE if task +'s return-on-cancel flag was changed to +match return_on_cancel +. FALSE if task +has already been +cancelled.

+
+

Since: 2.36

+
+
+
+

g_task_set_source_tag ()

+
void
+g_task_set_source_tag (GTask *task,
+                       gpointer source_tag);
+

Sets task +'s source tag. You can use this to tag a task return +value with a particular pointer (usually a pointer to the function +doing the tagging) and then later check it using +g_task_get_source_tag() (or g_async_result_is_tagged()) in the +task's "finish" function, to figure out if the response came from a +particular place.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

task

the GTask

 

source_tag

an opaque pointer indicating the source of this task

 
+
+

Since: 2.36

+
+
+
+

g_task_report_error ()

+
void
+g_task_report_error (gpointer source_object,
+                     GAsyncReadyCallback callback,
+                     gpointer callback_data,
+                     gpointer source_tag,
+                     GError *error);
+

Creates a GTask and then immediately calls g_task_return_error() +on it. Use this in the wrapper function of an asynchronous method +when you want to avoid even calling the virtual method. You can +then use g_async_result_is_tagged() in the finish method wrapper to +check if the result there is tagged as having been created by the +wrapper method, and deal with it appropriately if so.

+

See also g_task_report_new_error().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

source_object

the GObject that owns +this task, or NULL.

[allow-none][type GObject]

callback

a GAsyncReadyCallback.

[scope async]

callback_data

user data passed to callback +.

[closure]

source_tag

an opaque pointer indicating the source of this task

 

error

error to report.

[transfer full]
+
+

Since: 2.36

+
+
+
+

g_task_report_new_error ()

+
void
+g_task_report_new_error (gpointer source_object,
+                         GAsyncReadyCallback callback,
+                         gpointer callback_data,
+                         gpointer source_tag,
+                         GQuark domain,
+                         gint code,
+                         const char *format,
+                         ...);
+

Creates a GTask and then immediately calls +g_task_return_new_error() on it. Use this in the wrapper function +of an asynchronous method when you want to avoid even calling the +virtual method. You can then use g_async_result_is_tagged() in the +finish method wrapper to check if the result there is tagged as +having been created by the wrapper method, and deal with it +appropriately if so.

+

See also g_task_report_error().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

source_object

the GObject that owns +this task, or NULL.

[allow-none][type GObject]

callback

a GAsyncReadyCallback.

[scope async]

callback_data

user data passed to callback +.

[closure]

source_tag

an opaque pointer indicating the source of this task

 

domain

a GQuark.

 

code

an error code.

 

format

a string with format characters.

 

...

a list of values to insert into format +.

 
+
+

Since: 2.36

+
+
+
+

g_task_get_task_data ()

+
gpointer
+g_task_get_task_data (GTask *task);
+

Gets task +'s task_data.

+
+

Parameters

+
+++++ + + + + + +

task

a GTask

 
+
+
+

Returns

+

task +'s task_data.

+

[transfer none]

+
+

Since: 2.36

+
+
+
+

g_task_get_priority ()

+
gint
+g_task_get_priority (GTask *task);
+

Gets task +'s priority

+
+

Parameters

+
+++++ + + + + + +

task

a GTask

 
+
+
+

Returns

+

task +'s priority

+
+

Since: 2.36

+
+
+
+

g_task_get_cancellable ()

+
GCancellable *
+g_task_get_cancellable (GTask *task);
+

Gets task +'s GCancellable

+
+

Parameters

+
+++++ + + + + + +

task

a GTask

 
+
+
+

Returns

+

task +'s GCancellable.

+

[transfer none]

+
+

Since: 2.36

+
+
+
+

g_task_get_check_cancellable ()

+
gboolean
+g_task_get_check_cancellable (GTask *task);
+

Gets task +'s check-cancellable flag. See +g_task_set_check_cancellable() for more details.

+
+

Parameters

+
+++++ + + + + + +

task

the GTask

 
+
+

Since: 2.36

+
+
+
+

g_task_get_return_on_cancel ()

+
gboolean
+g_task_get_return_on_cancel (GTask *task);
+

Gets task +'s return-on-cancel flag. See +g_task_set_return_on_cancel() for more details.

+
+

Parameters

+
+++++ + + + + + +

task

the GTask

 
+
+

Since: 2.36

+
+
+
+

g_task_get_context ()

+
GMainContext *
+g_task_get_context (GTask *task);
+

Gets the GMainContext that task + will return its result in (that +is, the context that was the +thread-default main context +at the point when task + was created).

+

This will always return a non-NULL value, even if the task's +context is the default GMainContext.

+
+

Parameters

+
+++++ + + + + + +

task

a GTask

 
+
+
+

Returns

+

task +'s GMainContext.

+

[transfer none]

+
+

Since: 2.36

+
+
+
+

g_task_get_source_object ()

+
gpointer
+g_task_get_source_object (GTask *task);
+

Gets the source object from task +. Like +g_async_result_get_source_object(), but does not ref the object.

+
+

Parameters

+
+++++ + + + + + +

task

a GTask

 
+
+
+

Returns

+

task +'s source object, or NULL.

+

[transfer none][type GObject]

+
+

Since: 2.36

+
+
+
+

g_task_get_source_tag ()

+
gpointer
+g_task_get_source_tag (GTask *task);
+

Gets task +'s source tag. See g_task_set_source_tag().

+
+

Parameters

+
+++++ + + + + + +

task

a GTask

 
+
+
+

Returns

+

task +'s source tag.

+

[transfer none]

+
+

Since: 2.36

+
+
+
+

g_task_return_boolean ()

+
void
+g_task_return_boolean (GTask *task,
+                       gboolean result);
+

Sets task +'s result to result + and completes the task (see +g_task_return_pointer() for more discussion of exactly what this +means).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

task

a GTask.

 

result

the gboolean result of a task function.

 
+
+

Since: 2.36

+
+
+
+

g_task_return_int ()

+
void
+g_task_return_int (GTask *task,
+                   gssize result);
+

Sets task +'s result to result + and completes the task (see +g_task_return_pointer() for more discussion of exactly what this +means).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

task

a GTask.

 

result

the integer (gssize) result of a task function.

 
+
+

Since: 2.36

+
+
+
+

g_task_return_pointer ()

+
void
+g_task_return_pointer (GTask *task,
+                       gpointer result,
+                       GDestroyNotify result_destroy);
+

Sets task +'s result to result + and completes the task. If result + +is not NULL, then result_destroy + will be used to free result + if +the caller does not take ownership of it with +g_task_propagate_pointer().

+

"Completes the task" means that for an ordinary asynchronous task +it will either invoke the task's callback, or else queue that +callback to be invoked in the proper GMainContext, or in the next +iteration of the current GMainContext. For a task run via +g_task_run_in_thread() or g_task_run_in_thread_sync(), calling this +method will save result + to be returned to the caller later, but +the task will not actually be completed until the GTaskThreadFunc +exits.

+

Note that since the task may be completed before returning from +g_task_return_pointer(), you cannot assume that result + is still +valid after calling this, unless you are still holding another +reference on it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

task

a GTask

 

result

the pointer result of a task +function.

[allow-none][transfer full]

result_destroy

a GDestroyNotify function.

[allow-none]
+
+

Since: 2.36

+
+
+
+

g_task_return_error ()

+
void
+g_task_return_error (GTask *task,
+                     GError *error);
+

Sets task +'s result to error + (which task + assumes ownership of) +and completes the task (see g_task_return_pointer() for more +discussion of exactly what this means).

+

Note that since the task takes ownership of error +, and since the +task may be completed before returning from g_task_return_error(), +you cannot assume that error + is still valid after calling this. +Call g_error_copy() on the error if you need to keep a local copy +as well.

+

See also g_task_return_new_error().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

task

a GTask.

 

error

the GError result of a task function.

[transfer full]
+
+

Since: 2.36

+
+
+
+

g_task_return_new_error ()

+
void
+g_task_return_new_error (GTask *task,
+                         GQuark domain,
+                         gint code,
+                         const char *format,
+                         ...);
+

Sets task +'s result to a new GError created from domain +, code +, +format +, and the remaining arguments, and completes the task (see +g_task_return_pointer() for more discussion of exactly what this +means).

+

See also g_task_return_error().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

task

a GTask.

 

domain

a GQuark.

 

code

an error code.

 

format

a string with format characters.

 

...

a list of values to insert into format +.

 
+
+

Since: 2.36

+
+
+
+

g_task_return_error_if_cancelled ()

+
gboolean
+g_task_return_error_if_cancelled (GTask *task);
+

Checks if task +'s GCancellable has been cancelled, and if so, sets +task +'s error accordingly and completes the task (see +g_task_return_pointer() for more discussion of exactly what this +means).

+
+

Parameters

+
+++++ + + + + + +

task

a GTask

 
+
+
+

Returns

+

TRUE if task +has been cancelled, FALSE if not

+
+

Since: 2.36

+
+
+
+

g_task_propagate_boolean ()

+
gboolean
+g_task_propagate_boolean (GTask *task,
+                          GError **error);
+

Gets the result of task + as a gboolean.

+

If the task resulted in an error, or was cancelled, then this will +instead return FALSE and set error +.

+

Since this method transfers ownership of the return value (or +error) to the caller, you may only call it once.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

task

a GTask.

 

error

return location for a GError

 
+
+
+

Returns

+

the task result, or FALSE on error

+
+

Since: 2.36

+
+
+
+

g_task_propagate_int ()

+
gssize
+g_task_propagate_int (GTask *task,
+                      GError **error);
+

Gets the result of task + as an integer (gssize).

+

If the task resulted in an error, or was cancelled, then this will +instead return -1 and set error +.

+

Since this method transfers ownership of the return value (or +error) to the caller, you may only call it once.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

task

a GTask.

 

error

return location for a GError

 
+
+
+

Returns

+

the task result, or -1 on error

+
+

Since: 2.36

+
+
+
+

g_task_propagate_pointer ()

+
gpointer
+g_task_propagate_pointer (GTask *task,
+                          GError **error);
+

Gets the result of task + as a pointer, and transfers ownership +of that value to the caller.

+

If the task resulted in an error, or was cancelled, then this will +instead return NULL and set error +.

+

Since this method transfers ownership of the return value (or +error) to the caller, you may only call it once.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

task

a GTask

 

error

return location for a GError

 
+
+
+

Returns

+

the task result, or NULL on error.

+

[transfer full]

+
+

Since: 2.36

+
+
+
+

g_task_had_error ()

+
gboolean
+g_task_had_error (GTask *task);
+

Tests if task + resulted in an error.

+
+

Parameters

+
+++++ + + + + + +

task

a GTask.

 
+
+
+

Returns

+

TRUE if the task resulted in an error, FALSE otherwise.

+
+

Since: 2.36

+
+
+
+

g_task_get_completed ()

+
gboolean
+g_task_get_completed (GTask *task);
+

Gets the value of “completed”. This changes from FALSE to TRUE after +the task’s callback is invoked, and will return FALSE if called from inside +the callback.

+
+

Parameters

+
+++++ + + + + + +

task

a GTask.

 
+
+
+

Returns

+

TRUE if the task has completed, FALSE otherwise.

+
+

Since: 2.44

+
+
+
+

g_task_run_in_thread ()

+
void
+g_task_run_in_thread (GTask *task,
+                      GTaskThreadFunc task_func);
+

Runs task_func + in another thread. When task_func + returns, task +'s +GAsyncReadyCallback will be invoked in task +'s GMainContext.

+

This takes a ref on task + until the task completes.

+

See GTaskThreadFunc for more details about how task_func + is handled.

+

Although GLib currently rate-limits the tasks queued via +g_task_run_in_thread(), you should not assume that it will always +do this. If you have a very large number of tasks to run, but don't +want them to all run at once, you should only queue a limited +number of them at a time.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

task

a GTask

 

task_func

a GTaskThreadFunc

 
+
+

Since: 2.36

+
+
+
+

g_task_run_in_thread_sync ()

+
void
+g_task_run_in_thread_sync (GTask *task,
+                           GTaskThreadFunc task_func);
+

Runs task_func + in another thread, and waits for it to return or be +cancelled. You can use g_task_propagate_pointer(), etc, afterward +to get the result of task_func +.

+

See GTaskThreadFunc for more details about how task_func + is handled.

+

Normally this is used with tasks created with a NULL +callback, but note that even if the task does +have a callback, it will not be invoked when task_func + returns. +“completed” will be set to TRUE just before this function returns.

+

Although GLib currently rate-limits the tasks queued via +g_task_run_in_thread_sync(), you should not assume that it will +always do this. If you have a very large number of tasks to run, +but don't want them to all run at once, you should only queue a +limited number of them at a time.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

task

a GTask

 

task_func

a GTaskThreadFunc

 
+
+

Since: 2.36

+
+
+
+

GTaskThreadFunc ()

+
void
+(*GTaskThreadFunc) (GTask *task,
+                    gpointer source_object,
+                    gpointer task_data,
+                    GCancellable *cancellable);
+

The prototype for a task function to be run in a thread via +g_task_run_in_thread() or g_task_run_in_thread_sync().

+

If the return-on-cancel flag is set on task +, and cancellable + gets +cancelled, then the GTask will be completed immediately (as though +g_task_return_error_if_cancelled() had been called), without +waiting for the task function to complete. However, the task +function will continue running in its thread in the background. The +function therefore needs to be careful about how it uses +externally-visible state in this case. See +g_task_set_return_on_cancel() for more details.

+

Other than in that case, task + will be completed when the +GTaskThreadFunc returns, not when it calls a +g_task_return_ function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

task

the GTask

 

source_object

task +'s source object.

[type GObject]

task_data

task +'s task data

 

cancellable

task +'s GCancellable, or NULL

 
+
+

Since: 2.36

+
+
+
+

g_task_attach_source ()

+
void
+g_task_attach_source (GTask *task,
+                      GSource *source,
+                      GSourceFunc callback);
+

A utility function for dealing with async operations where you need +to wait for a GSource to trigger. Attaches source + to task +'s +GMainContext with task +'s priority, and sets source +'s +callback to callback +, with task + as the callback's user_data.

+

This takes a reference on task + until source + is destroyed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

task

a GTask

 

source

the source to attach

 

callback

the callback to invoke when source +triggers

 
+
+

Since: 2.36

+
+
+
+

g_task_is_valid ()

+
gboolean
+g_task_is_valid (gpointer result,
+                 gpointer source_object);
+

Checks that result + is a GTask, and that source_object + is its +source object (or that source_object + is NULL and result + has no +source object). This can be used in g_return_if_fail() checks.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

result

A GAsyncResult.

[type Gio.AsyncResult]

source_object

the source object +expected to be associated with the task.

[allow-none][type GObject]
+
+
+

Returns

+

TRUE if result +and source_object +are valid, FALSE +if not

+
+

Since: 2.36

+
+
+
+

Types and Values

+
+

GTask

+
typedef struct _GTask GTask;
+

The opaque object representing a synchronous or asynchronous task +and its result.

+
+
+
+

Property Details

+
+

The “completed” property

+
  “completed”                gboolean
+

Whether the task has completed, meaning its callback (if set) has been +invoked. This can only happen after g_task_return_pointer(), +g_task_return_error() or one of the other return functions have been called +on the task.

+

This property is guaranteed to change from FALSE to TRUE exactly once.

+

The “notify” signal for this change is emitted in the same main +context as the task’s callback, immediately after that callback is invoked.

+

Flags: Read

+

Default value: FALSE

+

Since: 2.44

+
+
+
+

See Also

+

GAsyncResult

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GTcpConnection.html b/docs/reference/gio/html/GTcpConnection.html new file mode 100644 index 0000000..cd57a68 --- /dev/null +++ b/docs/reference/gio/html/GTcpConnection.html @@ -0,0 +1,207 @@ + + + + +GTcpConnection: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTcpConnection

+

GTcpConnection — A TCP GSocketConnection

+
+
+

Functions

+
++++ + + + + + + + + + + +
+void + +g_tcp_connection_set_graceful_disconnect () +
+gboolean + +g_tcp_connection_get_graceful_disconnect () +
+
+
+

Properties

+
+++++ + + + + + +
gbooleangraceful-disconnectRead / Write
+
+
+

Types and Values

+
++++ + + + + +
 GTcpConnection
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GIOStream
+        ╰── GSocketConnection
+            ╰── GTcpConnection
+                ╰── GTcpWrapperConnection
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

This is the subclass of GSocketConnection that is created +for TCP/IP sockets.

+
+
+

Functions

+
+

g_tcp_connection_set_graceful_disconnect ()

+
void
+g_tcp_connection_set_graceful_disconnect
+                               (GTcpConnection *connection,
+                                gboolean graceful_disconnect);
+

This enables graceful disconnects on close. A graceful disconnect +means that we signal the receiving end that the connection is terminated +and wait for it to close the connection before closing the connection.

+

A graceful disconnect means that we can be sure that we successfully sent +all the outstanding data to the other end, or get an error reported. +However, it also means we have to wait for all the data to reach the +other side and for it to acknowledge this by closing the socket, which may +take a while. For this reason it is disabled by default.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

connection

a GTcpConnection

 

graceful_disconnect

Whether to do graceful disconnects or not

 
+
+

Since: 2.22

+
+
+
+

g_tcp_connection_get_graceful_disconnect ()

+
gboolean
+g_tcp_connection_get_graceful_disconnect
+                               (GTcpConnection *connection);
+

Checks if graceful disconnects are used. See +g_tcp_connection_set_graceful_disconnect().

+
+

Parameters

+
+++++ + + + + + +

connection

a GTcpConnection

 
+
+
+

Returns

+

TRUE if graceful disconnect is used on close, FALSE otherwise

+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

GTcpConnection

+
typedef struct _GTcpConnection GTcpConnection;
+

A GSocketConnection for TCP/IP connections.

+

Since: 2.22

+
+
+
+

Property Details

+
+

The “graceful-disconnect” property

+
  “graceful-disconnect”      gboolean
+

Whether or not close does a graceful disconnect.

+

Flags: Read / Write

+

Default value: FALSE

+
+
+
+

See Also

+

GSocketConnection.

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GTcpWrapperConnection.html b/docs/reference/gio/html/GTcpWrapperConnection.html new file mode 100644 index 0000000..61dae24 --- /dev/null +++ b/docs/reference/gio/html/GTcpWrapperConnection.html @@ -0,0 +1,211 @@ + + + + +GTcpWrapperConnection: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTcpWrapperConnection

+

GTcpWrapperConnection — Wrapper for non-GSocketConnection-based, + GSocket-based GIOStreams

+
+
+

Functions

+
++++ + + + + + + + + + + +
+GSocketConnection * + +g_tcp_wrapper_connection_new () +
+GIOStream * + +g_tcp_wrapper_connection_get_base_io_stream () +
+
+
+

Properties

+
+++++ + + + + + +
+GIOStream *base-io-streamRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GTcpWrapperConnection
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GIOStream
+        ╰── GSocketConnection
+            ╰── GTcpConnection
+                ╰── GTcpWrapperConnection
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A GTcpWrapperConnection can be used to wrap a GIOStream that is +based on a GSocket, but which is not actually a +GSocketConnection. This is used by GSocketClient so that it can +always return a GSocketConnection, even when the connection it has +actually created is not directly a GSocketConnection.

+
+
+

Functions

+
+

g_tcp_wrapper_connection_new ()

+
GSocketConnection *
+g_tcp_wrapper_connection_new (GIOStream *base_io_stream,
+                              GSocket *socket);
+

Wraps base_io_stream + and socket + together as a GSocketConnection.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

base_io_stream

the GIOStream to wrap

 

socket

the GSocket associated with base_io_stream +

 
+
+
+

Returns

+

the new GSocketConnection.

+
+

Since: 2.28

+
+
+
+

g_tcp_wrapper_connection_get_base_io_stream ()

+
GIOStream *
+g_tcp_wrapper_connection_get_base_io_stream
+                               (GTcpWrapperConnection *conn);
+

Get's conn +'s base GIOStream

+
+

Parameters

+
+++++ + + + + + +

conn

a GTcpWrapperConnection

 
+
+
+

Returns

+

conn +'s base GIOStream.

+

[transfer none]

+
+
+
+
+

Types and Values

+
+

GTcpWrapperConnection

+
typedef struct _GTcpWrapperConnection GTcpWrapperConnection;
+

GTcpWrapperConnection is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

Property Details

+
+

The “base-io-stream” property

+
  “base-io-stream”           GIOStream *
+

The wrapped GIOStream.

+

Flags: Read / Write / Construct Only

+
+
+
+

See Also

+

GSocketConnection.

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GTestDBus.html b/docs/reference/gio/html/GTestDBus.html new file mode 100644 index 0000000..d775312 --- /dev/null +++ b/docs/reference/gio/html/GTestDBus.html @@ -0,0 +1,506 @@ + + + + +GTestDBus: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTestDBus

+

GTestDBus — D-Bus testing helper

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GTestDBus * + +g_test_dbus_new () +
+GTestDBusFlags + +g_test_dbus_get_flags () +
const gchar * + +g_test_dbus_get_bus_address () +
+void + +g_test_dbus_add_service_dir () +
+void + +g_test_dbus_up () +
+void + +g_test_dbus_stop () +
+void + +g_test_dbus_down () +
+void + +g_test_dbus_unset () +
+
+
+

Properties

+
+++++ + + + + + +
GTestDBusFlagsflagsRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GTestDBus
enumGTestDBusFlags
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GTestDBus
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A helper class for testing code which uses D-Bus without touching the user's +session bus.

+

Note that GTestDBus modifies the user’s environment, calling setenv(). +This is not thread-safe, so all GTestDBus calls should be completed before +threads are spawned, or should have appropriate locking to ensure no access +conflicts to environment variables shared between GTestDBus and other +threads.

+
+

Creating unit tests using GTestDBus

+

Testing of D-Bus services can be tricky because normally we only ever run +D-Bus services over an existing instance of the D-Bus daemon thus we +usually don't activate D-Bus services that are not yet installed into the +target system. The GTestDBus object makes this easier for us by taking care +of the lower level tasks such as running a private D-Bus daemon and looking +up uninstalled services in customizable locations, typically in your source +code tree.

+

The first thing you will need is a separate service description file for the +D-Bus daemon. Typically a services subdirectory of your tests directory +is a good place to put this file.

+

The service file should list your service along with an absolute path to the +uninstalled service executable in your source tree. Using autotools we would +achieve this by adding a file such as my-server.service.in in the services +directory and have it processed by configure.

+
+ + + + + + + +
1
+2
+3
[D-BUS Service]
+Name=org.gtk.GDBus.Examples.ObjectManager
+Exec=@abs_top_builddir@/gio/tests/gdbus-example-objectmanager-server
+
+ +

+You will also need to indicate this service directory in your test +fixtures, so you will need to pass the path while compiling your +test cases. Typically this is done with autotools with an added +preprocessor flag specified to compile your tests such as:

+
+ + + + + + + +
1
-DTEST_SERVICES=\""$(abs_top_builddir)/tests/services"\"
+
+ +

+ Once you have a service definition file which is local to your source tree, +you can proceed to set up a GTest fixture using the GTestDBus scaffolding.

+

An example of a test fixture for D-Bus services can be found +here: +gdbus-test-fixture.c

+

Note that these examples only deal with isolating the D-Bus aspect of your +service. To successfully run isolated unit tests on your service you may need +some additional modifications to your test case fixture. For example; if your +service uses GSettings and installs a schema then it is important that your test service +not load the schema in the ordinary installed location (chances are that your service +and schema files are not yet installed, or worse; there is an older version of the +schema file sitting in the install location).

+

Most of the time we can work around these obstacles using the +environment. Since the environment is inherited by the D-Bus daemon +created by GTestDBus and then in turn inherited by any services the +D-Bus daemon activates, using the setup routine for your fixture is +a practical place to help sandbox your runtime environment. For the +rather typical GSettings case we can work around this by setting +GSETTINGS_SCHEMA_DIR to the in tree directory holding your schemas +in the above fixture_setup() routine.

+

The GSettings schemas need to be locally pre-compiled for this to work. This can be achieved +by compiling the schemas locally as a step before running test cases, an autotools setup might +do the following in the directory holding schemas:

+
+ + + + + + + +
1
+2
+3
+4
all-am:
+        $(GLIB_COMPILE_SCHEMAS) .
+
+CLEANFILES += gschemas.compiled
+
+ +

+
+
+
+

Functions

+
+

g_test_dbus_new ()

+
GTestDBus *
+g_test_dbus_new (GTestDBusFlags flags);
+

Create a new GTestDBus object.

+
+

Parameters

+
+++++ + + + + + +

flags

a GTestDBusFlags

 
+
+
+

Returns

+

a new GTestDBus.

+

[transfer full]

+
+
+
+
+

g_test_dbus_get_flags ()

+
GTestDBusFlags
+g_test_dbus_get_flags (GTestDBus *self);
+

Get the flags of the GTestDBus object.

+
+

Parameters

+
+++++ + + + + + +

self

a GTestDBus

 
+
+
+

Returns

+

the value of “flags” property

+
+
+
+
+

g_test_dbus_get_bus_address ()

+
const gchar *
+g_test_dbus_get_bus_address (GTestDBus *self);
+

Get the address on which dbus-daemon is running. If g_test_dbus_up() has not +been called yet, NULL is returned. This can be used with +g_dbus_connection_new_for_address().

+
+

Parameters

+
+++++ + + + + + +

self

a GTestDBus

 
+
+
+

Returns

+

the address of the bus, or NULL.

+

[allow-none]

+
+
+
+
+

g_test_dbus_add_service_dir ()

+
void
+g_test_dbus_add_service_dir (GTestDBus *self,
+                             const gchar *path);
+

Add a path where dbus-daemon will look up .service files. This can't be +called after g_test_dbus_up().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

self

a GTestDBus

 

path

path to a directory containing .service files

 
+
+
+
+
+

g_test_dbus_up ()

+
void
+g_test_dbus_up (GTestDBus *self);
+

Start a dbus-daemon instance and set DBUS_SESSION_BUS_ADDRESS. After this +call, it is safe for unit tests to start sending messages on the session bus.

+

If this function is called from setup callback of g_test_add(), +g_test_dbus_down() must be called in its teardown callback.

+

If this function is called from unit test's main(), then g_test_dbus_down() +must be called after g_test_run().

+
+

Parameters

+
+++++ + + + + + +

self

a GTestDBus

 
+
+
+
+
+

g_test_dbus_stop ()

+
void
+g_test_dbus_stop (GTestDBus *self);
+

Stop the session bus started by g_test_dbus_up().

+

Unlike g_test_dbus_down(), this won't verify the GDBusConnection +singleton returned by g_bus_get() or g_bus_get_sync() is destroyed. Unit +tests wanting to verify behaviour after the session bus has been stopped +can use this function but should still call g_test_dbus_down() when done.

+
+

Parameters

+
+++++ + + + + + +

self

a GTestDBus

 
+
+
+
+
+

g_test_dbus_down ()

+
void
+g_test_dbus_down (GTestDBus *self);
+

Stop the session bus started by g_test_dbus_up().

+

This will wait for the singleton returned by g_bus_get() or g_bus_get_sync() +is destroyed. This is done to ensure that the next unit test won't get a +leaked singleton from this test.

+
+

Parameters

+
+++++ + + + + + +

self

a GTestDBus

 
+
+
+
+
+

g_test_dbus_unset ()

+
void
+g_test_dbus_unset (void);
+

Unset DISPLAY and DBUS_SESSION_BUS_ADDRESS env variables to ensure the test +won't use user's session bus.

+

This is useful for unit tests that want to verify behaviour when no session +bus is running. It is not necessary to call this if unit test already calls +g_test_dbus_up() before acquiring the session bus.

+
+
+
+

Types and Values

+
+

GTestDBus

+
typedef struct _GTestDBus GTestDBus;
+

The GTestDBus structure contains only private data and +should only be accessed using the provided API.

+

Since: 2.34

+
+
+
+

enum GTestDBusFlags

+

Flags to define future GTestDBus behaviour.

+
+

Members

+
+++++ + + + + + +

G_TEST_DBUS_NONE

+

No flags.

+
 
+
+

Since: 2.34

+
+
+
+

Property Details

+
+

The “flags” property

+
  “flags”                    GTestDBusFlags
+

GTestDBusFlags specifying the behaviour of the D-Bus session.

+

Flags: Read / Write / Construct Only

+

Since: 2.34

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GThemedIcon.html b/docs/reference/gio/html/GThemedIcon.html new file mode 100644 index 0000000..fef08f9 --- /dev/null +++ b/docs/reference/gio/html/GThemedIcon.html @@ -0,0 +1,463 @@ + + + + +GThemedIcon: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GThemedIcon

+

GThemedIcon — Icon theming support

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GIcon * + +g_themed_icon_new () +
+GIcon * + +g_themed_icon_new_from_names () +
+GIcon * + +g_themed_icon_new_with_default_fallbacks () +
+void + +g_themed_icon_prepend_name () +
+void + +g_themed_icon_append_name () +
const gchar * const * + +g_themed_icon_get_names () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + +
+gchar *nameWrite / Construct Only
GStrvnamesRead / Write / Construct Only
gbooleanuse-default-fallbacksRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GThemedIcon
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GThemedIcon
+
+
+
+

Implemented Interfaces

+

+GThemedIcon implements + GIcon.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GThemedIcon is an implementation of GIcon that supports icon themes. +GThemedIcon contains a list of all of the icons present in an icon +theme, so that icons can be looked up quickly. GThemedIcon does +not provide actual pixmaps for icons, just the icon names. +Ideally something like gtk_icon_theme_choose_icon() should be used to +resolve the list of names so that fallback icons work nicely with +themes that inherit other themes.

+
+
+

Functions

+
+

g_themed_icon_new ()

+
GIcon *
+g_themed_icon_new (const char *iconname);
+

Creates a new themed icon for iconname +.

+
+

Parameters

+
+++++ + + + + + +

iconname

a string containing an icon name.

 
+
+
+

Returns

+

a new GThemedIcon.

+

[transfer full][type GThemedIcon]

+
+
+
+
+

g_themed_icon_new_from_names ()

+
GIcon *
+g_themed_icon_new_from_names (char **iconnames,
+                              int len);
+

Creates a new themed icon for iconnames +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

iconnames

an array of strings containing icon names.

[array length=len]

len

the length of the iconnames +array, or -1 if iconnames +is +NULL-terminated

 
+
+
+

Returns

+

a new GThemedIcon.

+

[transfer full][type GThemedIcon]

+
+
+
+
+

g_themed_icon_new_with_default_fallbacks ()

+
GIcon *
+g_themed_icon_new_with_default_fallbacks
+                               (const char *iconname);
+

Creates a new themed icon for iconname +, and all the names +that can be created by shortening iconname + at '-' characters.

+

In the following example, icon1 + and icon2 + are equivalent:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
const char *names[] = { 
+  "gnome-dev-cdrom-audio",
+  "gnome-dev-cdrom",
+  "gnome-dev",
+  "gnome"
+};
+
+icon1 = g_themed_icon_new_from_names (names, 4);
+icon2 = g_themed_icon_new_with_default_fallbacks ("gnome-dev-cdrom-audio");
+
+ +

+
+

Parameters

+
+++++ + + + + + +

iconname

a string containing an icon name

 
+
+
+

Returns

+

a new GThemedIcon.

+

[transfer full][type GThemedIcon]

+
+
+
+
+

g_themed_icon_prepend_name ()

+
void
+g_themed_icon_prepend_name (GThemedIcon *icon,
+                            const char *iconname);
+

Prepend a name to the list of icons from within icon +.

+

Note that doing so invalidates the hash computed by prior calls +to g_icon_hash().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

icon

a GThemedIcon

 

iconname

name of icon to prepend to list of icons from within icon +.

 
+
+

Since: 2.18

+
+
+
+

g_themed_icon_append_name ()

+
void
+g_themed_icon_append_name (GThemedIcon *icon,
+                           const char *iconname);
+

Append a name to the list of icons from within icon +.

+

Note that doing so invalidates the hash computed by prior calls +to g_icon_hash().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

icon

a GThemedIcon

 

iconname

name of icon to append to list of icons from within icon +.

 
+
+
+
+
+

g_themed_icon_get_names ()

+
const gchar * const *
+g_themed_icon_get_names (GThemedIcon *icon);
+

Gets the names of icons from within icon +.

+
+

Parameters

+
+++++ + + + + + +

icon

a GThemedIcon.

 
+
+
+

Returns

+

a list of icon names.

+

[transfer none]

+
+
+
+
+

Types and Values

+
+

GThemedIcon

+
typedef struct _GThemedIcon GThemedIcon;
+

An implementation of GIcon for themed icons.

+
+
+
+

Property Details

+
+

The “name” property

+
  “name”                     gchar *
+

The icon name.

+

Flags: Write / Construct Only

+

Default value: NULL

+
+
+
+

The “names” property

+
  “names”                    GStrv
+

A NULL-terminated array of icon names.

+

Flags: Read / Write / Construct Only

+
+
+
+

The “use-default-fallbacks” property

+
  “use-default-fallbacks”    gboolean
+

Whether to use the default fallbacks found by shortening the icon name + +at '-' characters. If the "names" array has more than one element, + +ignores any past the first.

+

For example, if the icon name was "gnome-dev-cdrom-audio", the array + +would become

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
{
+  "gnome-dev-cdrom-audio",
+  "gnome-dev-cdrom",
+  "gnome-dev",
+  "gnome",
+  NULL
+};
+
+ +

+

Flags: Read / Write / Construct Only

+

Default value: FALSE

+
+
+
+

See Also

+

GIcon, GLoadableIcon

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GThreadedSocketService.html b/docs/reference/gio/html/GThreadedSocketService.html new file mode 100644 index 0000000..8c2d8d4 --- /dev/null +++ b/docs/reference/gio/html/GThreadedSocketService.html @@ -0,0 +1,238 @@ + + + + +GThreadedSocketService: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GThreadedSocketService

+

GThreadedSocketService — A threaded GSocketService

+
+
+

Functions

+
++++ + + + + +
+GSocketService * + +g_threaded_socket_service_new () +
+
+
+

Properties

+
+++++ + + + + + +
gintmax-threadsRead / Write / Construct Only
+
+
+

Signals

+
+++++ + + + + + +
gbooleanrunRun Last
+
+
+

Types and Values

+
++++ + + + + +
 GThreadedSocketService
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSocketListener
+        ╰── GSocketService
+            ╰── GThreadedSocketService
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A GThreadedSocketService is a simple subclass of GSocketService +that handles incoming connections by creating a worker thread and +dispatching the connection to it by emitting the +“run” signal in the new thread.

+

The signal handler may perform blocking IO and need not return +until the connection is closed.

+

The service is implemented using a thread pool, so there is a +limited amount of threads available to serve incoming requests. +The service automatically stops the GSocketService from accepting +new connections when all threads are busy.

+

As with GSocketService, you may connect to “run”, +or subclass and override the default handler.

+
+
+

Functions

+
+

g_threaded_socket_service_new ()

+
GSocketService *
+g_threaded_socket_service_new (int max_threads);
+

Creates a new GThreadedSocketService with no listeners. Listeners +must be added with one of the GSocketListener "add" methods.

+
+

Parameters

+
+++++ + + + + + +

max_threads

the maximal number of threads to execute concurrently +handling incoming clients, -1 means no limit

 
+
+
+

Returns

+

a new GSocketService.

+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

GThreadedSocketService

+
typedef struct _GThreadedSocketService GThreadedSocketService;
+

A helper class for handling accepting incoming connections in the +glib mainloop and handling them in a thread.

+

Since: 2.22

+
+
+
+

Property Details

+
+

The “max-threads” property

+
  “max-threads”              gint
+

The max number of threads handling clients for this service.

+

Flags: Read / Write / Construct Only

+

Allowed values: >= -1

+

Default value: 10

+
+
+
+

Signal Details

+
+

The “run” signal

+
gboolean
+user_function (GThreadedSocketService *service,
+               GSocketConnection      *connection,
+               GObject                *source_object,
+               gpointer                user_data)
+

The ::run signal is emitted in a worker thread in response to an +incoming connection. This thread is dedicated to handling +connection + and may perform blocking IO. The signal handler need +not return until the connection is closed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

service

the GThreadedSocketService.

 

connection

a new GSocketConnection object.

 

source_object

the source_object passed to g_socket_listener_add_address().

 

user_data

user data set when the signal handler was connected.

 
+
+
+

Returns

+

TRUE to stop further signal handlers from being called

+
+

Flags: Run Last

+
+
+
+

See Also

+

GSocketService.

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GTlsBackend.html b/docs/reference/gio/html/GTlsBackend.html new file mode 100644 index 0000000..ec78e40 --- /dev/null +++ b/docs/reference/gio/html/GTlsBackend.html @@ -0,0 +1,559 @@ + + + + +GTlsBackend: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTlsBackend

+

GTlsBackend — TLS backend implementation

+
+ +
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
#defineG_TLS_BACKEND_EXTENSION_POINT_NAME
 GTlsBackend
structGTlsBackendInterface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GTlsBackend
+
+
+
+

Prerequisites

+

+GTlsBackend requires + GObject.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

TLS (Transport Layer Security, aka SSL) and DTLS backend.

+
+
+

Functions

+
+

g_tls_backend_get_default ()

+
GTlsBackend *
+g_tls_backend_get_default (void);
+

Gets the default GTlsBackend for the system.

+
+

Returns

+

a GTlsBackend.

+

[transfer none]

+
+

Since: 2.28

+
+
+
+

g_tls_backend_supports_tls ()

+
gboolean
+g_tls_backend_supports_tls (GTlsBackend *backend);
+

Checks if TLS is supported; if this returns FALSE for the default +GTlsBackend, it means no "real" TLS backend is available.

+
+

Parameters

+
+++++ + + + + + +

backend

the GTlsBackend

 
+
+
+

Returns

+

whether or not TLS is supported

+
+

Since: 2.28

+
+
+
+

g_tls_backend_supports_dtls ()

+
gboolean
+g_tls_backend_supports_dtls (GTlsBackend *backend);
+

Checks if DTLS is supported. DTLS support may not be available even if TLS +support is available, and vice-versa.

+
+

Parameters

+
+++++ + + + + + +

backend

the GTlsBackend

 
+
+
+

Returns

+

whether DTLS is supported

+
+

Since: 2.48

+
+
+
+

g_tls_backend_get_default_database ()

+
GTlsDatabase *
+g_tls_backend_get_default_database (GTlsBackend *backend);
+

Gets the default GTlsDatabase used to verify TLS connections.

+
+

Parameters

+
+++++ + + + + + +

backend

the GTlsBackend

 
+
+
+

Returns

+

the default database, which should be +unreffed when done.

+

[transfer full]

+
+

Since: 2.30

+
+
+
+

g_tls_backend_get_certificate_type ()

+
GType
+g_tls_backend_get_certificate_type (GTlsBackend *backend);
+

Gets the GType of backend +'s GTlsCertificate implementation.

+
+

Parameters

+
+++++ + + + + + +

backend

the GTlsBackend

 
+
+
+

Returns

+

the GType of backend +'s GTlsCertificate +implementation.

+
+

Since: 2.28

+
+
+
+

g_tls_backend_get_client_connection_type ()

+
GType
+g_tls_backend_get_client_connection_type
+                               (GTlsBackend *backend);
+

Gets the GType of backend +'s GTlsClientConnection implementation.

+
+

Parameters

+
+++++ + + + + + +

backend

the GTlsBackend

 
+
+
+

Returns

+

the GType of backend +'s GTlsClientConnection +implementation.

+
+

Since: 2.28

+
+
+
+

g_tls_backend_get_server_connection_type ()

+
GType
+g_tls_backend_get_server_connection_type
+                               (GTlsBackend *backend);
+

Gets the GType of backend +'s GTlsServerConnection implementation.

+
+

Parameters

+
+++++ + + + + + +

backend

the GTlsBackend

 
+
+
+

Returns

+

the GType of backend +'s GTlsServerConnection +implementation.

+
+

Since: 2.28

+
+
+
+

g_tls_backend_get_dtls_client_connection_type ()

+
GType
+g_tls_backend_get_dtls_client_connection_type
+                               (GTlsBackend *backend);
+

Gets the GType of backend +’s GDtlsClientConnection implementation.

+
+

Parameters

+
+++++ + + + + + +

backend

the GTlsBackend

 
+
+
+

Returns

+

the GType of backend +’s GDtlsClientConnection +implementation.

+
+

Since: 2.48

+
+
+
+

g_tls_backend_get_dtls_server_connection_type ()

+
GType
+g_tls_backend_get_dtls_server_connection_type
+                               (GTlsBackend *backend);
+

Gets the GType of backend +’s GDtlsServerConnection implementation.

+
+

Parameters

+
+++++ + + + + + +

backend

the GTlsBackend

 
+
+
+

Returns

+

the GType of backend +’s GDtlsServerConnection +implementation.

+
+

Since: 2.48

+
+
+
+

g_tls_backend_get_file_database_type ()

+
GType
+g_tls_backend_get_file_database_type (GTlsBackend *backend);
+

Gets the GType of backend +'s GTlsFileDatabase implementation.

+
+

Parameters

+
+++++ + + + + + +

backend

the GTlsBackend

 
+
+
+

Returns

+

the GType of backend's GTlsFileDatabase implementation.

+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

G_TLS_BACKEND_EXTENSION_POINT_NAME

+
#define G_TLS_BACKEND_EXTENSION_POINT_NAME "gio-tls-backend"
+
+

Extension point for TLS functionality via GTlsBackend. +See Extending GIO.

+
+
+
+

GTlsBackend

+
typedef struct _GTlsBackend GTlsBackend;
+

TLS (Transport Layer Security, aka SSL) and DTLS backend. This is an +internal type used to coordinate the different classes implemented +by a TLS backend.

+

Since: 2.28

+
+
+
+

struct GTlsBackendInterface

+
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);
+  gboolean       ( *supports_dtls)              (GTlsBackend *backend);
+  GType          ( *get_dtls_client_connection_type) (void);
+  GType          ( *get_dtls_server_connection_type) (void);
+};
+
+

Provides an interface for describing TLS-related types.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface g_iface;

The parent interface.

 

supports_tls ()

returns whether the backend supports TLS.

 

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.

 

get_default_database ()

returns a default GTlsDatabase instance.

 

supports_dtls ()

returns whether the backend supports DTLS

 

get_dtls_client_connection_type ()

returns the GDtlsClientConnection implementation type

 

get_dtls_server_connection_type ()

returns the GDtlsServerConnection implementation type

 
+
+

Since: 2.28

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GTlsCertificate.html b/docs/reference/gio/html/GTlsCertificate.html new file mode 100644 index 0000000..f4293ec --- /dev/null +++ b/docs/reference/gio/html/GTlsCertificate.html @@ -0,0 +1,613 @@ + + + + +GTlsCertificate: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTlsCertificate

+

GTlsCertificate — TLS certificate

+
+
+

Functions

+ +
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GByteArray *certificateRead / Write / Construct Only
+gchar *certificate-pemRead / Write / Construct Only
+GTlsCertificate *issuerRead / Write / Construct Only
+GByteArray *private-keyWrite / Construct Only
+gchar *private-key-pemWrite / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GTlsCertificate
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GTlsCertificate
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A certificate used for TLS authentication and encryption. +This can represent either a certificate only (eg, the certificate +received by a client from a server), or the combination of +a certificate and a private key (which is needed when acting as a +GTlsServerConnection).

+
+
+

Functions

+
+

g_tls_certificate_new_from_pem ()

+
GTlsCertificate *
+g_tls_certificate_new_from_pem (const gchar *data,
+                                gssize length,
+                                GError **error);
+

Creates a GTlsCertificate from the PEM-encoded data in data +. If +data + includes both a certificate and a private key, then the +returned certificate will include the private key data as well. (See +the “private-key-pem” property for information about +supported formats.)

+

The returned certificate will be the first certificate found in +data +. As of GLib 2.44, if data + contains more certificates it will +try to load a certificate chain. All certificates will be verified in +the order found (top-level certificate should be the last one in the +file) and the “issuer” property of each certificate +will be set accordingly if the verification succeeds. If any +certificate in the chain cannot be verified, the first certificate in +the file will still be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

data

PEM-encoded certificate data

 

length

the length of data +, or -1 if it's 0-terminated.

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

the new certificate, or NULL if data +is invalid

+
+

Since: 2.28

+
+
+
+

g_tls_certificate_new_from_file ()

+
GTlsCertificate *
+g_tls_certificate_new_from_file (const gchar *file,
+                                 GError **error);
+

Creates a GTlsCertificate from the PEM-encoded data in file +. The +returned certificate will be the first certificate found in file +. As +of GLib 2.44, if file + contains more certificates it will try to load +a certificate chain. All certificates will be verified in the order +found (top-level certificate should be the last one in the file) and +the “issuer” property of each certificate will be set +accordingly if the verification succeeds. If any certificate in the +chain cannot be verified, the first certificate in the file will +still be returned.

+

If file + cannot be read or parsed, the function will return NULL and +set error +. Otherwise, this behaves like +g_tls_certificate_new_from_pem().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

file

file containing a PEM-encoded certificate to import

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

the new certificate, or NULL on error

+
+

Since: 2.28

+
+
+
+

g_tls_certificate_new_from_files ()

+
GTlsCertificate *
+g_tls_certificate_new_from_files (const gchar *cert_file,
+                                  const gchar *key_file,
+                                  GError **error);
+

Creates a GTlsCertificate from the PEM-encoded data in cert_file + +and key_file +. The returned certificate will be the first certificate +found in cert_file +. As of GLib 2.44, if cert_file + contains more +certificates it will try to load a certificate chain. All +certificates will be verified in the order found (top-level +certificate should be the last one in the file) and the +“issuer” property of each certificate will be set +accordingly if the verification succeeds. If any certificate in the +chain cannot be verified, the first certificate in the file will +still be returned.

+

If either file cannot be read or parsed, the function will return +NULL and set error +. Otherwise, this behaves like +g_tls_certificate_new_from_pem().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

cert_file

file containing one or more PEM-encoded certificates to +import

 

key_file

file containing a PEM-encoded private key to import

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

the new certificate, or NULL on error

+
+

Since: 2.28

+
+
+
+

g_tls_certificate_list_new_from_file ()

+
GList *
+g_tls_certificate_list_new_from_file (const gchar *file,
+                                      GError **error);
+

Creates one or more GTlsCertificates from the PEM-encoded +data in file +. If file + cannot be read or parsed, the function will +return NULL and set error +. If file + does not contain any +PEM-encoded certificates, this will return an empty list and not +set error +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

file

file containing PEM-encoded certificates to import

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

a +GList containing GTlsCertificate objects. You must free the list +and its contents when you are done with it.

+

[element-type Gio.TlsCertificate][transfer full]

+
+

Since: 2.28

+
+
+
+

g_tls_certificate_get_issuer ()

+
GTlsCertificate *
+g_tls_certificate_get_issuer (GTlsCertificate *cert);
+

Gets the GTlsCertificate representing cert +'s issuer, if known

+
+

Parameters

+
+++++ + + + + + +

cert

a GTlsCertificate

 
+
+
+

Returns

+

The certificate of cert +'s issuer, +or NULL if cert +is self-signed or signed with an unknown +certificate.

+

[transfer none]

+
+

Since: 2.28

+
+
+
+

g_tls_certificate_verify ()

+
GTlsCertificateFlags
+g_tls_certificate_verify (GTlsCertificate *cert,
+                          GSocketConnectable *identity,
+                          GTlsCertificate *trusted_ca);
+

This verifies cert + and returns a set of GTlsCertificateFlags +indicating any problems found with it. This can be used to verify a +certificate outside the context of making a connection, or to +check a certificate against a CA that is not part of the system +CA database.

+

If identity + is not NULL, cert +'s name(s) will be compared against +it, and G_TLS_CERTIFICATE_BAD_IDENTITY will be set in the return +value if it does not match. If identity + is NULL, that bit will +never be set in the return value.

+

If trusted_ca + is not NULL, then cert + (or one of the certificates +in its chain) must be signed by it, or else +G_TLS_CERTIFICATE_UNKNOWN_CA will be set in the return value. If +trusted_ca + is NULL, that bit will never be set in the return +value.

+

(All other GTlsCertificateFlags values will always be set or unset +as appropriate.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

cert

a GTlsCertificate

 

identity

the expected peer identity.

[allow-none]

trusted_ca

the certificate of a trusted authority.

[allow-none]
+
+
+

Returns

+

the appropriate GTlsCertificateFlags

+
+

Since: 2.28

+
+
+
+

g_tls_certificate_is_same ()

+
gboolean
+g_tls_certificate_is_same (GTlsCertificate *cert_one,
+                           GTlsCertificate *cert_two);
+

Check if two GTlsCertificate objects represent the same certificate. +The raw DER byte data of the two certificates are checked for equality. +This has the effect that two certificates may compare equal even if +their “issuer”, “private-key”, or +“private-key-pem” properties differ.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cert_one

first certificate to compare

 

cert_two

second certificate to compare

 
+
+
+

Returns

+

whether the same or not

+
+

Since: 2.34

+
+
+
+

Types and Values

+
+

GTlsCertificate

+
typedef struct _GTlsCertificate GTlsCertificate;
+

Abstract base class for TLS certificate types.

+

Since: 2.28

+
+
+
+

Property Details

+
+

The “certificate” property

+
  “certificate”              GByteArray *
+

The DER (binary) encoded representation of the certificate. +This property and the “certificate-pem” property +represent the same data, just in different forms.

+

Flags: Read / Write / Construct Only

+

Since: 2.28

+
+
+
+

The “certificate-pem” property

+
  “certificate-pem”          gchar *
+

The PEM (ASCII) encoded representation of the certificate. +This property and the “certificate” +property represent the same data, just in different forms.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.28

+
+
+
+

The “issuer” property

+
  “issuer”                   GTlsCertificate *
+

A GTlsCertificate representing the entity that issued this +certificate. If NULL, this means that the certificate is either +self-signed, or else the certificate of the issuer is not +available.

+

Flags: Read / Write / Construct Only

+

Since: 2.28

+
+
+
+

The “private-key” property

+
  “private-key”              GByteArray *
+

The DER (binary) encoded representation of the certificate's +private key, in either PKCS#1 format or unencrypted PKCS#8 +format. This property (or the “private-key-pem” +property) can be set when constructing a key (eg, from a file), +but cannot be read.

+

PKCS#8 format is supported since 2.32; earlier releases only +support PKCS#1. You can use the openssl rsa +tool to convert PKCS#8 keys to PKCS#1.

+

Flags: Write / Construct Only

+

Since: 2.28

+
+
+
+

The “private-key-pem” property

+
  “private-key-pem”          gchar *
+

The PEM (ASCII) encoded representation of the certificate's +private key in either PKCS#1 format ("BEGIN RSA PRIVATE +KEY") or unencrypted PKCS#8 format ("BEGIN +PRIVATE KEY"). This property (or the +“private-key” property) can be set when +constructing a key (eg, from a file), but cannot be read.

+

PKCS#8 format is supported since 2.32; earlier releases only +support PKCS#1. You can use the openssl rsa +tool to convert PKCS#8 keys to PKCS#1.

+

Flags: Write / Construct Only

+

Default value: NULL

+

Since: 2.28

+
+
+
+

See Also

+

GTlsConnection

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GTlsClientConnection.html b/docs/reference/gio/html/GTlsClientConnection.html new file mode 100644 index 0000000..71520ea --- /dev/null +++ b/docs/reference/gio/html/GTlsClientConnection.html @@ -0,0 +1,636 @@ + + + + +GTlsClientConnection: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTlsClientConnection

+

GTlsClientConnection — TLS client-side connection

+
+ +
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +
gpointeraccepted-casRead
+GSocketConnectable *server-identityRead / Write / Construct
gbooleanuse-ssl3Read / Write / Construct
GTlsCertificateFlagsvalidation-flagsRead / Write / Construct
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GTlsClientConnection
structGTlsClientConnectionInterface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GTlsClientConnection
+
+
+
+

Prerequisites

+

+GTlsClientConnection requires + GTlsConnection.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GTlsClientConnection is the client-side subclass of +GTlsConnection, representing a client-side TLS connection.

+
+
+

Functions

+
+

g_tls_client_connection_new ()

+
GIOStream *
+g_tls_client_connection_new (GIOStream *base_io_stream,
+                             GSocketConnectable *server_identity,
+                             GError **error);
+

Creates a new GTlsClientConnection wrapping base_io_stream + (which +must have pollable input and output streams) which is assumed to +communicate with the server identified by server_identity +.

+

See the documentation for “base-io-stream” for restrictions +on when application code can run operations on the base_io_stream + after +this function has returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

base_io_stream

the GIOStream to wrap

 

server_identity

the expected identity of the server.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

the new +GTlsClientConnection, or NULL on error.

+

[transfer full][type GTlsClientConnection]

+
+

Since: 2.28

+
+
+
+

g_tls_client_connection_set_server_identity ()

+
void
+g_tls_client_connection_set_server_identity
+                               (GTlsClientConnection *conn,
+                                GSocketConnectable *identity);
+

Sets conn +'s expected server identity, which is used both to tell +servers on virtual hosts which certificate to present, and also +to let conn + know what name to look for in the certificate when +performing G_TLS_CERTIFICATE_BAD_IDENTITY validation, if enabled.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

the GTlsClientConnection

 

identity

a GSocketConnectable describing the expected server identity

 
+
+

Since: 2.28

+
+
+
+

g_tls_client_connection_get_server_identity ()

+
GSocketConnectable *
+g_tls_client_connection_get_server_identity
+                               (GTlsClientConnection *conn);
+

Gets conn +'s expected server identity

+
+

Parameters

+
+++++ + + + + + +

conn

the GTlsClientConnection

 
+
+
+

Returns

+

a GSocketConnectable describing the +expected server identity, or NULL if the expected identity is not +known.

+

[transfer none]

+
+

Since: 2.28

+
+
+
+

g_tls_client_connection_set_validation_flags ()

+
void
+g_tls_client_connection_set_validation_flags
+                               (GTlsClientConnection *conn,
+                                GTlsCertificateFlags flags);
+

Sets conn +'s validation flags, to override the default set of +checks performed when validating a server certificate. By default, +G_TLS_CERTIFICATE_VALIDATE_ALL is used.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

the GTlsClientConnection

 

flags

the GTlsCertificateFlags to use

 
+
+

Since: 2.28

+
+
+
+

g_tls_client_connection_get_validation_flags ()

+
GTlsCertificateFlags
+g_tls_client_connection_get_validation_flags
+                               (GTlsClientConnection *conn);
+

Gets conn +'s validation flags

+
+

Parameters

+
+++++ + + + + + +

conn

the GTlsClientConnection

 
+
+
+

Returns

+

the validation flags

+
+

Since: 2.28

+
+
+
+

g_tls_client_connection_set_use_ssl3 ()

+
void
+g_tls_client_connection_set_use_ssl3 (GTlsClientConnection *conn,
+                                      gboolean use_ssl3);
+

If use_ssl3 + is TRUE, this forces conn + to use SSL 3.0 rather than +trying to properly negotiate the right version of TLS or SSL to use. +This can be used when talking to servers that do not implement the +fallbacks correctly and which will therefore fail to handshake with +a "modern" TLS handshake attempt.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

the GTlsClientConnection

 

use_ssl3

whether to use SSL 3.0

 
+
+

Since: 2.28

+
+
+
+

g_tls_client_connection_get_use_ssl3 ()

+
gboolean
+g_tls_client_connection_get_use_ssl3 (GTlsClientConnection *conn);
+

Gets whether conn + will use SSL 3.0 rather than the +highest-supported version of TLS; see +g_tls_client_connection_set_use_ssl3().

+
+

Parameters

+
+++++ + + + + + +

conn

the GTlsClientConnection

 
+
+
+

Returns

+

whether conn +will use SSL 3.0

+
+

Since: 2.28

+
+
+
+

g_tls_client_connection_get_accepted_cas ()

+
GList *
+g_tls_client_connection_get_accepted_cas
+                               (GTlsClientConnection *conn);
+

Gets the list of distinguished names of the Certificate Authorities +that the server will accept certificates from. This will be set +during the TLS handshake if the server requests a certificate. +Otherwise, it will be NULL.

+

Each item in the list is a GByteArray which contains the complete +subject DN of the certificate authority.

+
+

Parameters

+
+++++ + + + + + +

conn

the GTlsClientConnection

 
+
+
+

Returns

+

the list of +CA DNs. You should unref each element with g_byte_array_unref() and then +the free the list with g_list_free().

+

[element-type GByteArray][transfer full]

+
+

Since: 2.28

+
+
+
+

g_tls_client_connection_copy_session_state ()

+
void
+g_tls_client_connection_copy_session_state
+                               (GTlsClientConnection *conn,
+                                GTlsClientConnection *source);
+

Copies session state from one connection to another. This is +not normally needed, but may be used when the same session +needs to be used between different endpoints as is required +by some protocols such as FTP over TLS. source + should have +already completed a handshake, and conn + should not have +completed a handshake.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

a GTlsClientConnection

 

source

a GTlsClientConnection

 
+
+

Since: 2.46

+
+
+
+

Types and Values

+
+

GTlsClientConnection

+
typedef struct _GTlsClientConnection GTlsClientConnection;
+

Abstract base class for the backend-specific client connection +type.

+

Since: 2.28

+
+
+
+

struct GTlsClientConnectionInterface

+
struct GTlsClientConnectionInterface {
+  GTypeInterface g_iface;
+
+  void     ( *copy_session_state )     (GTlsClientConnection       *conn,
+                                        GTlsClientConnection       *source);
+};
+
+

vtable for a GTlsClientConnection implementation.

+
+

Members

+
+++++ + + + + + + + + + + + + +

GTypeInterface g_iface;

The parent interface.

 

copy_session_state ()

Copies session state from one GTlsClientConnection to another.

 
+
+

Since: 2.26

+
+
+
+

Property Details

+
+

The “accepted-cas” property

+
  “accepted-cas”             gpointer
+

A list of the distinguished names of the Certificate Authorities +that the server will accept client certificates signed by. If the +server requests a client certificate during the handshake, then +this property will be set after the handshake completes.

+

Each item in the list is a GByteArray which contains the complete +subject DN of the certificate authority.

+

[element-type GLib.ByteArray]

+

Flags: Read

+

Since: 2.28

+
+
+
+

The “server-identity” property

+
  “server-identity”          GSocketConnectable *
+

A GSocketConnectable describing the identity of the server that +is expected on the other end of the connection.

+

If the G_TLS_CERTIFICATE_BAD_IDENTITY flag is set in +“validation-flags”, this object will be used +to determine the expected identify of the remote end of the +connection; if “server-identity” is not set, +or does not match the identity presented by the server, then the +G_TLS_CERTIFICATE_BAD_IDENTITY validation will fail.

+

In addition to its use in verifying the server certificate, +this is also used to give a hint to the server about what +certificate we expect, which is useful for servers that serve +virtual hosts.

+

Flags: Read / Write / Construct

+

Since: 2.28

+
+
+
+

The “use-ssl3” property

+
  “use-ssl3”                 gboolean
+

If TRUE, tells the connection to use a fallback version of TLS +or SSL, rather than trying to negotiate the best version of TLS +to use. This can be used when talking to servers that don't +implement version negotiation correctly and therefore refuse to +handshake at all with a "modern" TLS handshake.

+

Despite the property name, the fallback version is not +necessarily SSL 3.0; if SSL 3.0 has been disabled, the +GTlsClientConnection will use the next highest available version +(normally TLS 1.0) as the fallback version.

+

Flags: Read / Write / Construct

+

Default value: FALSE

+

Since: 2.28

+
+
+
+

The “validation-flags” property

+
  “validation-flags”         GTlsCertificateFlags
+

What steps to perform when validating a certificate received from +a server. Server certificates that fail to validate in all of the +ways indicated here will be rejected unless the application +overrides the default via “accept-certificate”.

+

Flags: Read / Write / Construct

+

Default value: G_TLS_CERTIFICATE_UNKNOWN_CA | G_TLS_CERTIFICATE_BAD_IDENTITY | G_TLS_CERTIFICATE_NOT_ACTIVATED | G_TLS_CERTIFICATE_EXPIRED | G_TLS_CERTIFICATE_REVOKED | G_TLS_CERTIFICATE_INSECURE | G_TLS_CERTIFICATE_GENERIC_ERROR

+

Since: 2.28

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GTlsConnection.html b/docs/reference/gio/html/GTlsConnection.html new file mode 100644 index 0000000..6ba5354 --- /dev/null +++ b/docs/reference/gio/html/GTlsConnection.html @@ -0,0 +1,1292 @@ + + + + +GTlsConnection: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTlsConnection

+

GTlsConnection — TLS connection type

+
+ +
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GIOStream *base-io-streamRead / Write / Construct Only
+GTlsCertificate *certificateRead / Write
+GTlsDatabase *databaseRead / Write
+GTlsInteraction *interactionRead / Write
+GTlsCertificate *peer-certificateRead
GTlsCertificateFlagspeer-certificate-errorsRead
GTlsRehandshakeModerehandshake-modeRead / Write / Construct
gbooleanrequire-close-notifyRead / Write / Construct
gbooleanuse-system-certdbRead / Write / Construct
+
+
+

Signals

+ +
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GTlsConnection
enumGTlsRehandshakeMode
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GIOStream
+        ╰── GTlsConnection
+
+
+
+

Known Derived Interfaces

+

+GTlsConnection is required by + GTlsClientConnection and GTlsServerConnection.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GTlsConnection is the base TLS connection class type, which wraps +a GIOStream and provides TLS encryption on top of it. Its +subclasses, GTlsClientConnection and GTlsServerConnection, +implement client-side and server-side TLS, respectively.

+

For DTLS (Datagram TLS) support, see GDtlsConnection.

+
+
+

Functions

+
+

g_tls_connection_set_certificate ()

+
void
+g_tls_connection_set_certificate (GTlsConnection *conn,
+                                  GTlsCertificate *certificate);
+

This sets the certificate that conn + will present to its peer +during the TLS handshake. For a GTlsServerConnection, it is +mandatory to set this, and that will normally be done at construct +time.

+

For a GTlsClientConnection, this is optional. If a handshake fails +with G_TLS_ERROR_CERTIFICATE_REQUIRED, that means that the server +requires a certificate, and if you try connecting again, you should +call this method first. You can call +g_tls_client_connection_get_accepted_cas() on the failed connection +to get a list of Certificate Authorities that the server will +accept certificates from.

+

(It is also possible that a server will allow the connection with +or without a certificate; in that case, if you don't provide a +certificate, you can tell that the server requested one by the fact +that g_tls_client_connection_get_accepted_cas() will return +non-NULL.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

a GTlsConnection

 

certificate

the certificate to use for conn +

 
+
+

Since: 2.28

+
+
+
+

g_tls_connection_get_certificate ()

+
GTlsCertificate *
+g_tls_connection_get_certificate (GTlsConnection *conn);
+

Gets conn +'s certificate, as set by +g_tls_connection_set_certificate().

+
+

Parameters

+
+++++ + + + + + +

conn

a GTlsConnection

 
+
+
+

Returns

+

conn +'s certificate, or NULL.

+

[transfer none]

+
+

Since: 2.28

+
+
+
+

g_tls_connection_get_peer_certificate ()

+
GTlsCertificate *
+g_tls_connection_get_peer_certificate (GTlsConnection *conn);
+

Gets conn +'s peer's certificate after the handshake has completed. +(It is not set during the emission of +“accept-certificate”.)

+
+

Parameters

+
+++++ + + + + + +

conn

a GTlsConnection

 
+
+
+

Returns

+

conn +'s peer's certificate, or NULL.

+

[transfer none]

+
+

Since: 2.28

+
+
+
+

g_tls_connection_get_peer_certificate_errors ()

+
GTlsCertificateFlags
+g_tls_connection_get_peer_certificate_errors
+                               (GTlsConnection *conn);
+

Gets the errors associated with validating conn +'s peer's +certificate, after the handshake has completed. (It is not set +during the emission of “accept-certificate”.)

+
+

Parameters

+
+++++ + + + + + +

conn

a GTlsConnection

 
+
+
+

Returns

+

conn +'s peer's certificate errors

+
+

Since: 2.28

+
+
+
+

g_tls_connection_set_require_close_notify ()

+
void
+g_tls_connection_set_require_close_notify
+                               (GTlsConnection *conn,
+                                gboolean require_close_notify);
+

Sets whether or not conn + expects a proper TLS close notification +before the connection is closed. If this is TRUE (the default), +then conn + will expect to receive a TLS close notification from its +peer before the connection is closed, and will return a +G_TLS_ERROR_EOF error if the connection is closed without proper +notification (since this may indicate a network error, or +man-in-the-middle attack).

+

In some protocols, the application will know whether or not the +connection was closed cleanly based on application-level data +(because the application-level data includes a length field, or is +somehow self-delimiting); in this case, the close notify is +redundant and sometimes omitted. (TLS 1.1 explicitly allows this; +in TLS 1.0 it is technically an error, but often done anyway.) You +can use g_tls_connection_set_require_close_notify() to tell conn + +to allow an "unannounced" connection close, in which case the close +will show up as a 0-length read, as in a non-TLS +GSocketConnection, and it is up to the application to check that +the data has been fully received.

+

Note that this only affects the behavior when the peer closes the +connection; when the application calls g_io_stream_close() itself +on conn +, this will send a close notification regardless of the +setting of this property. If you explicitly want to do an unclean +close, you can close conn +'s “base-io-stream” rather +than closing conn + itself, but note that this may only be done when no other +operations are pending on conn + or the base I/O stream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

a GTlsConnection

 

require_close_notify

whether or not to require close notification

 
+
+

Since: 2.28

+
+
+
+

g_tls_connection_get_require_close_notify ()

+
gboolean
+g_tls_connection_get_require_close_notify
+                               (GTlsConnection *conn);
+

Tests whether or not conn + expects a proper TLS close notification +when the connection is closed. See +g_tls_connection_set_require_close_notify() for details.

+
+

Parameters

+
+++++ + + + + + +

conn

a GTlsConnection

 
+
+
+

Returns

+

TRUE if conn +requires a proper TLS close +notification.

+
+

Since: 2.28

+
+
+
+

g_tls_connection_set_rehandshake_mode ()

+
void
+g_tls_connection_set_rehandshake_mode (GTlsConnection *conn,
+                                       GTlsRehandshakeMode mode);
+

Sets how conn + behaves with respect to rehandshaking requests.

+

G_TLS_REHANDSHAKE_NEVER means that it will never agree to +rehandshake after the initial handshake is complete. (For a client, +this means it will refuse rehandshake requests from the server, and +for a server, this means it will close the connection with an error +if the client attempts to rehandshake.)

+

G_TLS_REHANDSHAKE_SAFELY means that the connection will allow a +rehandshake only if the other end of the connection supports the +TLS renegotiation_info extension. This is the default behavior, +but means that rehandshaking will not work against older +implementations that do not support that extension.

+

G_TLS_REHANDSHAKE_UNSAFELY means that the connection will allow +rehandshaking even without the renegotiation_info extension. On +the server side in particular, this is not recommended, since it +leaves the server open to certain attacks. However, this mode is +necessary if you need to allow renegotiation with older client +software.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

a GTlsConnection

 

mode

the rehandshaking mode

 
+
+

Since: 2.28

+
+
+
+

g_tls_connection_get_rehandshake_mode ()

+
GTlsRehandshakeMode
+g_tls_connection_get_rehandshake_mode (GTlsConnection *conn);
+

Gets conn + rehandshaking mode. See +g_tls_connection_set_rehandshake_mode() for details.

+
+

Parameters

+
+++++ + + + + + +

conn

a GTlsConnection

 
+
+
+

Returns

+

conn +'s rehandshaking mode

+
+

Since: 2.28

+
+
+
+

g_tls_connection_set_use_system_certdb ()

+
void
+g_tls_connection_set_use_system_certdb
+                               (GTlsConnection *conn,
+                                gboolean use_system_certdb);
+
+

g_tls_connection_set_use_system_certdb has been deprecated since version 2.30 and should not be used in newly-written code.

+

Use g_tls_connection_set_database() instead

+
+

Sets whether conn + uses the system certificate database to verify +peer certificates. This is TRUE by default. If set to FALSE, then +peer certificate validation will always set the +G_TLS_CERTIFICATE_UNKNOWN_CA error (meaning +“accept-certificate” will always be emitted on +client-side connections, unless that bit is not set in +“validation-flags”).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

a GTlsConnection

 

use_system_certdb

whether to use the system certificate database

 
+
+
+
+
+

g_tls_connection_get_use_system_certdb ()

+
gboolean
+g_tls_connection_get_use_system_certdb
+                               (GTlsConnection *conn);
+
+

g_tls_connection_get_use_system_certdb has been deprecated since version 2.30 and should not be used in newly-written code.

+

Use g_tls_connection_get_database() instead

+
+

Gets whether conn + uses the system certificate database to verify +peer certificates. See g_tls_connection_set_use_system_certdb().

+
+

Parameters

+
+++++ + + + + + +

conn

a GTlsConnection

 
+
+
+

Returns

+

whether conn +uses the system certificate database

+
+
+
+
+

g_tls_connection_get_database ()

+
GTlsDatabase *
+g_tls_connection_get_database (GTlsConnection *conn);
+

Gets the certificate database that conn + uses to verify +peer certificates. See g_tls_connection_set_database().

+
+

Parameters

+
+++++ + + + + + +

conn

a GTlsConnection

 
+
+
+

Returns

+

the certificate database that conn +uses or NULL.

+

[transfer none]

+
+

Since: 2.30

+
+
+
+

g_tls_connection_set_database ()

+
void
+g_tls_connection_set_database (GTlsConnection *conn,
+                               GTlsDatabase *database);
+

Sets the certificate database that is used to verify peer certificates. +This is set to the default database by default. See +g_tls_backend_get_default_database(). If set to NULL, then +peer certificate validation will always set the +G_TLS_CERTIFICATE_UNKNOWN_CA error (meaning +“accept-certificate” will always be emitted on +client-side connections, unless that bit is not set in +“validation-flags”).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

a GTlsConnection

 

database

a GTlsDatabase

 
+
+

Since: 2.30

+
+
+
+

g_tls_connection_get_interaction ()

+
GTlsInteraction *
+g_tls_connection_get_interaction (GTlsConnection *conn);
+

Get the object that will be used to interact with the user. It will be used +for things like prompting the user for passwords. If NULL is returned, then +no user interaction will occur for this connection.

+
+

Parameters

+
+++++ + + + + + +

conn

a connection

 
+
+
+

Returns

+

The interaction object.

+

[transfer none]

+
+

Since: 2.30

+
+
+
+

g_tls_connection_set_interaction ()

+
void
+g_tls_connection_set_interaction (GTlsConnection *conn,
+                                  GTlsInteraction *interaction);
+

Set the object that will be used to interact with the user. It will be used +for things like prompting the user for passwords.

+

The interaction + argument will normally be a derived subclass of +GTlsInteraction. NULL can also be provided if no user interaction +should occur for this connection.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

conn

a connection

 

interaction

an interaction object, or NULL.

[allow-none]
+
+

Since: 2.30

+
+
+
+

g_tls_connection_handshake ()

+
gboolean
+g_tls_connection_handshake (GTlsConnection *conn,
+                            GCancellable *cancellable,
+                            GError **error);
+

Attempts a TLS handshake on conn +.

+

On the client side, it is never necessary to call this method; +although the connection needs to perform a handshake after +connecting (or after sending a "STARTTLS"-type command) and may +need to rehandshake later if the server requests it, +GTlsConnection will handle this for you automatically when you try +to send or receive data on the connection. However, you can call +g_tls_connection_handshake() manually if you want to know for sure +whether the initial handshake succeeded or failed (as opposed to +just immediately trying to write to conn +'s output stream, in which +case if it fails, it may not be possible to tell if it failed +before or after completing the handshake).

+

Likewise, on the server side, although a handshake is necessary at +the beginning of the communication, you do not need to call this +function explicitly unless you want clearer error reporting. +However, you may call g_tls_connection_handshake() later on to +renegotiate parameters (encryption methods, etc) with the client.

+

“accept_certificate” may be emitted during the +handshake.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

conn

a GTlsConnection

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

a GError, or NULL

 
+
+
+

Returns

+

success or failure

+
+

Since: 2.28

+
+
+
+

g_tls_connection_handshake_async ()

+
void
+g_tls_connection_handshake_async (GTlsConnection *conn,
+                                  int io_priority,
+                                  GCancellable *cancellable,
+                                  GAsyncReadyCallback callback,
+                                  gpointer user_data);
+

Asynchronously performs a TLS handshake on conn +. See +g_tls_connection_handshake() for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

conn

a GTlsConnection

 

io_priority

the I/O priority of the request

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

callback to call when the handshake is complete

 

user_data

the data to pass to the callback function

 
+
+

Since: 2.28

+
+
+
+

g_tls_connection_handshake_finish ()

+
gboolean
+g_tls_connection_handshake_finish (GTlsConnection *conn,
+                                   GAsyncResult *result,
+                                   GError **error);
+

Finish an asynchronous TLS handshake operation. See +g_tls_connection_handshake() for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

conn

a GTlsConnection

 

result

a GAsyncResult.

 

error

a GError pointer, or NULL

 
+
+
+

Returns

+

TRUE on success, FALSE on failure, in which +case error +will be set.

+
+

Since: 2.28

+
+
+
+

g_tls_connection_emit_accept_certificate ()

+
gboolean
+g_tls_connection_emit_accept_certificate
+                               (GTlsConnection *conn,
+                                GTlsCertificate *peer_cert,
+                                GTlsCertificateFlags errors);
+

Used by GTlsConnection implementations to emit the +“accept-certificate” signal.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

conn

a GTlsConnection

 

peer_cert

the peer's GTlsCertificate

 

errors

the problems with peer_cert +

 
+
+
+

Returns

+

TRUE if one of the signal handlers has returned +TRUE to accept peer_cert +

+
+

Since: 2.28

+
+
+
+

Types and Values

+
+

GTlsConnection

+
typedef struct _GTlsConnection GTlsConnection;
+

Abstract base class for the backend-specific GTlsClientConnection +and GTlsServerConnection types.

+

Since: 2.28

+
+
+
+

enum GTlsRehandshakeMode

+

When to allow rehandshaking. See +g_tls_connection_set_rehandshake_mode().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

G_TLS_REHANDSHAKE_NEVER

+

Never allow rehandshaking

+
 

G_TLS_REHANDSHAKE_SAFELY

+

Allow safe rehandshaking only

+
 

G_TLS_REHANDSHAKE_UNSAFELY

+

Allow unsafe rehandshaking

+
 
+
+

Since: 2.28

+
+
+
+

Property Details

+
+

The “base-io-stream” property

+
  “base-io-stream”           GIOStream *
+

The GIOStream that the connection wraps. The connection holds a reference +to this stream, and may run operations on the stream from other threads +throughout its lifetime. Consequently, after the GIOStream has been +constructed, application code may only run its own operations on this +stream when no GIOStream operations are running.

+

Flags: Read / Write / Construct Only

+

Since: 2.28

+
+
+
+

The “certificate” property

+
  “certificate”              GTlsCertificate *
+

The connection's certificate; see +g_tls_connection_set_certificate().

+

Flags: Read / Write

+

Since: 2.28

+
+
+
+

The “database” property

+
  “database”                 GTlsDatabase *
+

The certificate database to use when verifying this TLS connection. +If no certificate database is set, then the default database will be +used. See g_tls_backend_get_default_database().

+

Flags: Read / Write

+

Since: 2.30

+
+
+
+

The “interaction” property

+
  “interaction”              GTlsInteraction *
+

A GTlsInteraction object to be used when the connection or certificate +database need to interact with the user. This will be used to prompt the +user for passwords where necessary.

+

Flags: Read / Write

+

Since: 2.30

+
+
+
+

The “peer-certificate” property

+
  “peer-certificate”         GTlsCertificate *
+

The connection's peer's certificate, after the TLS handshake has +completed and the certificate has been accepted. Note in +particular that this is not yet set during the emission of +“accept-certificate”.

+

(You can watch for a “notify” signal on this property to +detect when a handshake has occurred.)

+

Flags: Read

+

Since: 2.28

+
+
+
+

The “peer-certificate-errors” property

+
  “peer-certificate-errors”  GTlsCertificateFlags
+

The errors noticed-and-ignored while verifying +“peer-certificate”. Normally this should be 0, but +it may not be if “validation-flags” is not +G_TLS_CERTIFICATE_VALIDATE_ALL, or if +“accept-certificate” overrode the default +behavior.

+

Flags: Read

+

Since: 2.28

+
+
+
+

The “rehandshake-mode” property

+
  “rehandshake-mode”         GTlsRehandshakeMode
+

The rehandshaking mode. See +g_tls_connection_set_rehandshake_mode().

+

Flags: Read / Write / Construct

+

Default value: G_TLS_REHANDSHAKE_SAFELY

+

Since: 2.28

+
+
+
+

The “require-close-notify” property

+
  “require-close-notify”     gboolean
+

Whether or not proper TLS close notification is required. +See g_tls_connection_set_require_close_notify().

+

Flags: Read / Write / Construct

+

Default value: TRUE

+

Since: 2.28

+
+
+
+

The “use-system-certdb” property

+
  “use-system-certdb”        gboolean
+

Whether or not the system certificate database will be used to +verify peer certificates. See +g_tls_connection_set_use_system_certdb().

+
+

GTlsConnection:use-system-certdb has been deprecated since version 2.30 and should not be used in newly-written code.

+

Use GTlsConnection:database instead

+
+

Flags: Read / Write / Construct

+

Default value: TRUE

+
+
+
+

Signal Details

+
+

The “accept-certificate” signal

+
gboolean
+user_function (GTlsConnection      *conn,
+               GTlsCertificate     *peer_cert,
+               GTlsCertificateFlags errors,
+               gpointer             user_data)
+

Emitted during the TLS handshake after the peer certificate has +been received. You can examine peer_cert +'s certification path by +calling g_tls_certificate_get_issuer() on it.

+

For a client-side connection, peer_cert + is the server's +certificate, and the signal will only be emitted if the +certificate was not acceptable according to conn +'s +“validation_flags”. If you would like the +certificate to be accepted despite errors +, return TRUE from the +signal handler. Otherwise, if no handler accepts the certificate, +the handshake will fail with G_TLS_ERROR_BAD_CERTIFICATE.

+

For a server-side connection, peer_cert + is the certificate +presented by the client, if this was requested via the server's +“authentication_mode”. On the server side, +the signal is always emitted when the client presents a +certificate, and the certificate will only be accepted if a +handler returns TRUE.

+

Note that if this signal is emitted as part of asynchronous I/O +in the main thread, then you should not attempt to interact with +the user before returning from the signal handler. If you want to +let the user decide whether or not to accept the certificate, you +would have to return FALSE from the signal handler on the first +attempt, and then after the connection attempt returns a +G_TLS_ERROR_HANDSHAKE, you can interact with the user, and if +the user decides to accept the certificate, remember that fact, +create a new connection, and return TRUE from the signal handler +the next time.

+

If you are doing I/O in another thread, you do not +need to worry about this, and can simply block in the signal +handler until the UI thread returns an answer.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

conn

a GTlsConnection

 

peer_cert

the peer's GTlsCertificate

 

errors

the problems with peer_cert +.

 

user_data

user data set when the signal handler was connected.

 
+
+
+

Returns

+

TRUE to accept peer_cert +(which will also +immediately end the signal emission). FALSE to allow the signal +emission to continue, which will cause the handshake to fail if +no one else overrides it.

+
+

Flags: Run Last

+

Since: 2.28

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GTlsDatabase.html b/docs/reference/gio/html/GTlsDatabase.html new file mode 100644 index 0000000..84157f9 --- /dev/null +++ b/docs/reference/gio/html/GTlsDatabase.html @@ -0,0 +1,1284 @@ + + + + +GTlsDatabase: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTlsDatabase

+

GTlsDatabase — TLS database type

+
+ +
+

Types and Values

+ +
+
+

Object Hierarchy

+
    GObject
+    ╰── GTlsDatabase
+
+
+
+

Known Derived Interfaces

+

+GTlsDatabase is required by + GTlsFileDatabase.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GTlsDatabase is used to lookup certificates and other information +from a certificate or key store. It is an abstract base class which +TLS library specific subtypes override.

+

Most common client applications will not directly interact with +GTlsDatabase. It is used internally by GTlsConnection.

+
+
+

Functions

+
+

g_tls_database_verify_chain ()

+
GTlsCertificateFlags
+g_tls_database_verify_chain (GTlsDatabase *self,
+                             GTlsCertificate *chain,
+                             const gchar *purpose,
+                             GSocketConnectable *identity,
+                             GTlsInteraction *interaction,
+                             GTlsDatabaseVerifyFlags flags,
+                             GCancellable *cancellable,
+                             GError **error);
+

Verify's a certificate chain after looking up and adding any missing +certificates to the chain.

+

chain + is a chain of GTlsCertificate objects each pointing to the next +certificate in the chain by its issuer property. The chain may initially +consist of one or more certificates. After the verification process is +complete, chain + may be modified by adding missing certificates, or removing +extra certificates. If a certificate anchor was found, then it is added to +the chain +.

+

purpose + describes the purpose (or usage) for which the certificate +is being used. Typically purpose + will be set to G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER +which means that the certificate is being used to authenticate a server +(and we are acting as the client).

+

The identity + is used to check for pinned certificates (trust exceptions) +in the database. These will override the normal verification process on a +host by host basis.

+

Currently there are no flags +, and G_TLS_DATABASE_VERIFY_NONE should be +used.

+

This function can block, use g_tls_database_verify_chain_async() to perform +the verification operation asynchronously.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

self

a GTlsDatabase

 

chain

a GTlsCertificate chain

 

purpose

the purpose that this certificate chain will be used for.

 

identity

the expected peer identity.

[allow-none]

interaction

used to interact with the user if necessary.

[allow-none]

flags

additional verify flags

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

a GError, or NULL.

[allow-none]
+
+
+

Returns

+

the appropriate GTlsCertificateFlags which represents the +result of verification.

+
+

Since: 2.30

+
+
+
+

g_tls_database_verify_chain_async ()

+
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);
+

Asynchronously verify's a certificate chain after looking up and adding +any missing certificates to the chain. See g_tls_database_verify_chain() +for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

self

a GTlsDatabase

 

chain

a GTlsCertificate chain

 

purpose

the purpose that this certificate chain will be used for.

 

identity

the expected peer identity.

[allow-none]

interaction

used to interact with the user if necessary.

[allow-none]

flags

additional verify flags

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

callback to call when the operation completes

 

user_data

the data to pass to the callback function

 
+
+

Since: 2.30

+
+
+
+

g_tls_database_verify_chain_finish ()

+
GTlsCertificateFlags
+g_tls_database_verify_chain_finish (GTlsDatabase *self,
+                                    GAsyncResult *result,
+                                    GError **error);
+

Finish an asynchronous verify chain operation. See +g_tls_database_verify_chain() for more information. *

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

self

a GTlsDatabase

 

result

a GAsyncResult.

 

error

a GError pointer, or NULL

 
+
+
+

Returns

+

the appropriate GTlsCertificateFlags which represents the +result of verification.

+
+

Since: 2.30

+
+
+
+

g_tls_database_lookup_certificate_issuer ()

+
GTlsCertificate *
+g_tls_database_lookup_certificate_issuer
+                               (GTlsDatabase *self,
+                                GTlsCertificate *certificate,
+                                GTlsInteraction *interaction,
+                                GTlsDatabaseLookupFlags flags,
+                                GCancellable *cancellable,
+                                GError **error);
+

Lookup the issuer of certificate + in the database.

+

The issuer property +of certificate + is not modified, and the two certificates are not hooked +into a chain.

+

This function can block, use g_tls_database_lookup_certificate_issuer_async() to perform +the lookup operation asynchronously.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

self

a GTlsDatabase

 

certificate

a GTlsCertificate

 

interaction

used to interact with the user if necessary.

[allow-none]

flags

flags which affect the lookup operation

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

a GError, or NULL.

[allow-none]
+
+
+

Returns

+

a newly allocated issuer GTlsCertificate, +or NULL. Use g_object_unref() to release the certificate.

+

[transfer full]

+
+

Since: 2.30

+
+
+
+

g_tls_database_lookup_certificate_issuer_async ()

+
void
+g_tls_database_lookup_certificate_issuer_async
+                               (GTlsDatabase *self,
+                                GTlsCertificate *certificate,
+                                GTlsInteraction *interaction,
+                                GTlsDatabaseLookupFlags flags,
+                                GCancellable *cancellable,
+                                GAsyncReadyCallback callback,
+                                gpointer user_data);
+

Asynchronously lookup the issuer of certificate + in the database. See +g_tls_database_lookup_certificate_issuer() for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

self

a GTlsDatabase

 

certificate

a GTlsCertificate

 

interaction

used to interact with the user if necessary.

[allow-none]

flags

flags which affect the lookup operation

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

callback to call when the operation completes

 

user_data

the data to pass to the callback function

 
+
+

Since: 2.30

+
+
+
+

g_tls_database_lookup_certificate_issuer_finish ()

+
GTlsCertificate *
+g_tls_database_lookup_certificate_issuer_finish
+                               (GTlsDatabase *self,
+                                GAsyncResult *result,
+                                GError **error);
+

Finish an asynchronous lookup issuer operation. See +g_tls_database_lookup_certificate_issuer() for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

self

a GTlsDatabase

 

result

a GAsyncResult.

 

error

a GError pointer, or NULL

 
+
+
+

Returns

+

a newly allocated issuer GTlsCertificate, +or NULL. Use g_object_unref() to release the certificate.

+

[transfer full]

+
+

Since: 2.30

+
+
+
+

g_tls_database_lookup_certificates_issued_by ()

+
GList *
+g_tls_database_lookup_certificates_issued_by
+                               (GTlsDatabase *self,
+                                GByteArray *issuer_raw_dn,
+                                GTlsInteraction *interaction,
+                                GTlsDatabaseLookupFlags flags,
+                                GCancellable *cancellable,
+                                GError **error);
+

Lookup certificates issued by this issuer in the database.

+

This function can block, use g_tls_database_lookup_certificates_issued_by_async() to perform +the lookup operation asynchronously.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

self

a GTlsDatabase

 

issuer_raw_dn

a GByteArray which holds the DER encoded issuer DN.

 

interaction

used to interact with the user if necessary.

[allow-none]

flags

Flags which affect the lookup operation.

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

a GError, or NULL.

[allow-none]
+
+
+

Returns

+

a newly allocated list of GTlsCertificate +objects. Use g_object_unref() on each certificate, and g_list_free() on the release the list.

+

[transfer full][element-type GTlsCertificate]

+
+

Since: 2.30

+
+
+
+

g_tls_database_lookup_certificates_issued_by_async ()

+
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);
+

Asynchronously lookup certificates issued by this issuer in the database. See +g_tls_database_lookup_certificates_issued_by() for more information.

+

The database may choose to hold a reference to the issuer byte array for the duration +of of this asynchronous operation. The byte array should not be modified during +this time.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

self

a GTlsDatabase

 

issuer_raw_dn

a GByteArray which holds the DER encoded issuer DN.

 

interaction

used to interact with the user if necessary.

[allow-none]

flags

Flags which affect the lookup operation.

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

callback to call when the operation completes

 

user_data

the data to pass to the callback function

 
+
+

Since: 2.30

+
+
+
+

g_tls_database_lookup_certificates_issued_by_finish ()

+
GList *
+g_tls_database_lookup_certificates_issued_by_finish
+                               (GTlsDatabase *self,
+                                GAsyncResult *result,
+                                GError **error);
+

Finish an asynchronous lookup of certificates. See +g_tls_database_lookup_certificates_issued_by() for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

self

a GTlsDatabase

 

result

a GAsyncResult.

 

error

a GError pointer, or NULL

 
+
+
+

Returns

+

a newly allocated list of GTlsCertificate +objects. Use g_object_unref() on each certificate, and g_list_free() on the release the list.

+

[transfer full][element-type GTlsCertificate]

+
+

Since: 2.30

+
+
+
+

g_tls_database_create_certificate_handle ()

+
gchar *
+g_tls_database_create_certificate_handle
+                               (GTlsDatabase *self,
+                                GTlsCertificate *certificate);
+

Create a handle string for the certificate. The database will only be able +to create a handle for certificates that originate from the database. In +cases where the database cannot create a handle for a certificate, NULL +will be returned.

+

This handle should be stable across various instances of the application, +and between applications. If a certificate is modified in the database, +then it is not guaranteed that this handle will continue to point to it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

self

a GTlsDatabase

 

certificate

certificate for which to create a handle.

 
+
+
+

Returns

+

a newly allocated string containing the +handle.

+

[nullable]

+
+

Since: 2.30

+
+
+
+

g_tls_database_lookup_certificate_for_handle ()

+
GTlsCertificate *
+g_tls_database_lookup_certificate_for_handle
+                               (GTlsDatabase *self,
+                                const gchar *handle,
+                                GTlsInteraction *interaction,
+                                GTlsDatabaseLookupFlags flags,
+                                GCancellable *cancellable,
+                                GError **error);
+

Lookup a certificate by its handle.

+

The handle should have been created by calling +g_tls_database_create_certificate_handle() on a GTlsDatabase object of +the same TLS backend. The handle is designed to remain valid across +instantiations of the database.

+

If the handle is no longer valid, or does not point to a certificate in +this database, then NULL will be returned.

+

This function can block, use g_tls_database_lookup_certificate_for_handle_async() to perform +the lookup operation asynchronously.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

self

a GTlsDatabase

 

handle

a certificate handle

 

interaction

used to interact with the user if necessary.

[allow-none]

flags

Flags which affect the lookup.

 

cancellable

a GCancellable, or NULL.

[allow-none]

error

a GError, or NULL.

[allow-none]
+
+
+

Returns

+

a newly allocated +GTlsCertificate, or NULL. Use g_object_unref() to release the certificate.

+

[transfer full][allow-none]

+
+

Since: 2.30

+
+
+
+

g_tls_database_lookup_certificate_for_handle_async ()

+
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);
+

Asynchronously lookup a certificate by its handle in the database. See +g_tls_database_lookup_certificate_for_handle() for more information.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

self

a GTlsDatabase

 

handle

a certificate handle

 

interaction

used to interact with the user if necessary.

[allow-none]

flags

Flags which affect the lookup.

 

cancellable

a GCancellable, or NULL.

[allow-none]

callback

callback to call when the operation completes

 

user_data

the data to pass to the callback function

 
+
+

Since: 2.30

+
+
+
+

g_tls_database_lookup_certificate_for_handle_finish ()

+
GTlsCertificate *
+g_tls_database_lookup_certificate_for_handle_finish
+                               (GTlsDatabase *self,
+                                GAsyncResult *result,
+                                GError **error);
+

Finish an asynchronous lookup of a certificate by its handle. See +g_tls_database_lookup_certificate_handle() for more information.

+

If the handle is no longer valid, or does not point to a certificate in +this database, then NULL will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

self

a GTlsDatabase

 

result

a GAsyncResult.

 

error

a GError pointer, or NULL

 
+
+
+

Returns

+

a newly allocated GTlsCertificate object. +Use g_object_unref() to release the certificate.

+

[transfer full]

+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

GTlsDatabase

+
typedef struct _GTlsDatabase GTlsDatabase;
+

Abstract base class for the backend-specific database types.

+

Since: 2.30

+
+
+
+

struct GTlsDatabaseClass

+
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);
+};
+
+

The class for GTlsDatabase. Derived classes should implement the various +virtual methods. _async and _finish methods have a default +implementation that runs the corresponding sync method in a thread.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GObjectClass parent_class;

  

verify_chain ()

Virtual method implementing +g_tls_database_verify_chain().

 

verify_chain_async ()

Virtual method implementing +g_tls_database_verify_chain_async().

 

verify_chain_finish ()

Virtual method implementing +g_tls_database_verify_chain_finish().

 

create_certificate_handle ()

Virtual method implementing +g_tls_database_create_certificate_handle().

 

lookup_certificate_for_handle ()

Virtual method implementing +g_tls_database_lookup_certificate_for_handle().

 

lookup_certificate_for_handle_async ()

Virtual method implementing +g_tls_database_lookup_certificate_for_handle_async().

 

lookup_certificate_for_handle_finish ()

Virtual method implementing +g_tls_database_lookup_certificate_for_handle_finish().

 

lookup_certificate_issuer ()

Virtual method implementing +g_tls_database_lookup_certificate_issuer().

 

lookup_certificate_issuer_async ()

Virtual method implementing +g_tls_database_lookup_certificate_issuer_async().

 

lookup_certificate_issuer_finish ()

Virtual method implementing +g_tls_database_lookup_certificate_issuer_finish().

 

lookup_certificates_issued_by ()

Virtual method implementing +g_tls_database_lookup_certificates_issued_by().

 

lookup_certificates_issued_by_async ()

Virtual method implementing +g_tls_database_lookup_certificates_issued_by_async().

 

lookup_certificates_issued_by_finish ()

Virtual method implementing +g_tls_database_lookup_certificates_issued_by_finish().

 
+
+

Since: 2.30

+
+
+
+

enum GTlsDatabaseVerifyFlags

+

Flags for g_tls_database_verify_chain().

+
+

Members

+
+++++ + + + + + +

G_TLS_DATABASE_VERIFY_NONE

+

No verification flags

+
 
+
+

Since: 2.30

+
+
+
+

G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER

+
#define G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER "1.3.6.1.5.5.7.3.1"
+
+

The purpose used to verify the server certificate in a TLS connection. This +is the most common purpose in use. Used by TLS clients.

+
+
+
+

G_TLS_DATABASE_PURPOSE_AUTHENTICATE_CLIENT

+
#define G_TLS_DATABASE_PURPOSE_AUTHENTICATE_CLIENT "1.3.6.1.5.5.7.3.2"
+
+

The purpose used to verify the client certificate in a TLS connection. +Used by TLS servers.

+
+
+
+

enum GTlsDatabaseLookupFlags

+

Flags for g_tls_database_lookup_certificate_handle(), +g_tls_database_lookup_certificate_issuer(), +and g_tls_database_lookup_certificates_issued_by().

+
+

Members

+
+++++ + + + + + + + + + + + + +

G_TLS_DATABASE_LOOKUP_NONE

+

No lookup flags

+
 

G_TLS_DATABASE_LOOKUP_KEYPAIR

+

Restrict lookup to certificates that have + a private key.

+
 
+
+

Since: 2.30

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GTlsFileDatabase.html b/docs/reference/gio/html/GTlsFileDatabase.html new file mode 100644 index 0000000..7c01182 --- /dev/null +++ b/docs/reference/gio/html/GTlsFileDatabase.html @@ -0,0 +1,207 @@ + + + + +GTlsFileDatabase: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTlsFileDatabase

+

GTlsFileDatabase — TLS file based database type

+
+
+

Functions

+
++++ + + + + +
+GTlsDatabase * + +g_tls_file_database_new () +
+
+
+

Properties

+
+++++ + + + + + +
+gchar *anchorsRead / Write / Construct
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GTlsFileDatabase
structGTlsFileDatabaseInterface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GTlsFileDatabase
+
+
+
+

Prerequisites

+

+GTlsFileDatabase requires + GTlsDatabase.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GTlsFileDatabase is implemented by GTlsDatabase objects which load +their certificate information from a file. It is an interface which +TLS library specific subtypes implement.

+
+
+

Functions

+
+

g_tls_file_database_new ()

+
GTlsDatabase *
+g_tls_file_database_new (const gchar *anchors,
+                         GError **error);
+

Creates a new GTlsFileDatabase which uses anchor certificate authorities +in anchors + to verify certificate chains.

+

The certificates in anchors + must be PEM encoded.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

anchors

filename of anchor certificate authorities.

 

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

the new +GTlsFileDatabase, or NULL on error.

+

[transfer full][type GTlsFileDatabase]

+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

GTlsFileDatabase

+
typedef struct _GTlsFileDatabase GTlsFileDatabase;
+

Implemented by a GTlsDatabase which allows you to load certificates +from a file.

+

Since: 2.30

+
+
+
+

struct GTlsFileDatabaseInterface

+
struct GTlsFileDatabaseInterface {
+  GTypeInterface g_iface;
+};
+
+

Provides an interface for GTlsFileDatabase implementations.

+
+

Members

+
+++++ + + + + + +

GTypeInterface g_iface;

The parent interface.

 
+
+
+
+
+

Property Details

+
+

The “anchors” property

+
  “anchors”                  gchar *
+

The path to a file containing PEM encoded certificate authority +root anchors. The certificates in this file will be treated as +root authorities for the purpose of verifying other certificates +via the g_tls_database_verify_chain() operation.

+

Flags: Read / Write / Construct

+

Default value: NULL

+

Since: 2.30

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GTlsInteraction.html b/docs/reference/gio/html/GTlsInteraction.html new file mode 100644 index 0000000..6e37f57 --- /dev/null +++ b/docs/reference/gio/html/GTlsInteraction.html @@ -0,0 +1,836 @@ + + + + +GTlsInteraction: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTlsInteraction

+

GTlsInteraction — Interaction with the user during TLS operations.

+
+ +
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + +
 GTlsInteraction
enumGTlsInteractionResult
enumGTlsCertificateRequestFlags
structGTlsInteractionClass
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GTlsInteraction
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GTlsInteraction provides a mechanism for the TLS connection and database +code to interact with the user. It can be used to ask the user for passwords.

+

To use a GTlsInteraction with a TLS connection use +g_tls_connection_set_interaction().

+

Callers should instantiate a derived class that implements the various +interaction methods to show the required dialogs.

+

Callers should use the 'invoke' functions like +g_tls_interaction_invoke_ask_password() to run interaction methods. These +functions make sure that the interaction is invoked in the main loop +and not in the current thread, if the current thread is not running the +main loop.

+

Derived classes can choose to implement whichever interactions methods they'd +like to support by overriding those virtual methods in their class +initialization function. Any interactions not implemented will return +G_TLS_INTERACTION_UNHANDLED. If a derived class implements an async method, +it must also implement the corresponding finish method.

+
+
+

Functions

+
+

g_tls_interaction_invoke_ask_password ()

+
GTlsInteractionResult
+g_tls_interaction_invoke_ask_password (GTlsInteraction *interaction,
+                                       GTlsPassword *password,
+                                       GCancellable *cancellable,
+                                       GError **error);
+

Invoke the interaction to ask the user for a password. It invokes this +interaction in the main loop, specifically the GMainContext returned by +g_main_context_get_thread_default() when the interaction is created. This +is called by called by GTlsConnection or GTlsDatabase to ask the user +for a password.

+

Derived subclasses usually implement a password prompt, although they may +also choose to provide a password from elsewhere. The password + value will +be filled in and then callback + will be called. Alternatively the user may +abort this password request, which will usually abort the TLS connection.

+

The implementation can either be a synchronous (eg: modal dialog) or an +asynchronous one (eg: modeless dialog). This function will take care of +calling which ever one correctly.

+

If the interaction is cancelled by the cancellation object, or by the +user then G_TLS_INTERACTION_FAILED will be returned with an error that +contains a G_IO_ERROR_CANCELLED error code. Certain implementations may +not support immediate cancellation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

interaction

a GTlsInteraction object

 

password

a GTlsPassword object

 

cancellable

an optional GCancellable cancellation object

 

error

an optional location to place an error on failure

 
+
+
+

Returns

+

The status of the ask password interaction.

+
+

Since: 2.30

+
+
+
+

g_tls_interaction_invoke_request_certificate ()

+
GTlsInteractionResult
+g_tls_interaction_invoke_request_certificate
+                               (GTlsInteraction *interaction,
+                                GTlsConnection *connection,
+                                GTlsCertificateRequestFlags flags,
+                                GCancellable *cancellable,
+                                GError **error);
+

Invoke the interaction to ask the user to choose a certificate to +use with the connection. It invokes this interaction in the main +loop, specifically the GMainContext returned by +g_main_context_get_thread_default() when the interaction is +created. This is called by called by GTlsConnection when the peer +requests a certificate during the handshake.

+

Derived subclasses usually implement a certificate selector, +although they may also choose to provide a certificate from +elsewhere. Alternatively the user may abort this certificate +request, which may or may not abort the TLS connection.

+

The implementation can either be a synchronous (eg: modal dialog) or an +asynchronous one (eg: modeless dialog). This function will take care of +calling which ever one correctly.

+

If the interaction is cancelled by the cancellation object, or by the +user then G_TLS_INTERACTION_FAILED will be returned with an error that +contains a G_IO_ERROR_CANCELLED error code. Certain implementations may +not support immediate cancellation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

interaction

a GTlsInteraction object

 

connection

a GTlsConnection object

 

flags

flags providing more information about the request

 

cancellable

an optional GCancellable cancellation object

 

error

an optional location to place an error on failure

 
+
+
+

Returns

+

The status of the certificate request interaction.

+
+

Since: 2.40

+
+
+
+

g_tls_interaction_ask_password ()

+
GTlsInteractionResult
+g_tls_interaction_ask_password (GTlsInteraction *interaction,
+                                GTlsPassword *password,
+                                GCancellable *cancellable,
+                                GError **error);
+

Run synchronous interaction to ask the user for a password. In general, +g_tls_interaction_invoke_ask_password() should be used instead of this +function.

+

Derived subclasses usually implement a password prompt, although they may +also choose to provide a password from elsewhere. The password + value will +be filled in and then callback + will be called. Alternatively the user may +abort this password request, which will usually abort the TLS connection.

+

If the interaction is cancelled by the cancellation object, or by the +user then G_TLS_INTERACTION_FAILED will be returned with an error that +contains a G_IO_ERROR_CANCELLED error code. Certain implementations may +not support immediate cancellation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

interaction

a GTlsInteraction object

 

password

a GTlsPassword object

 

cancellable

an optional GCancellable cancellation object

 

error

an optional location to place an error on failure

 
+
+
+

Returns

+

The status of the ask password interaction.

+
+

Since: 2.30

+
+
+
+

g_tls_interaction_ask_password_async ()

+
void
+g_tls_interaction_ask_password_async (GTlsInteraction *interaction,
+                                      GTlsPassword *password,
+                                      GCancellable *cancellable,
+                                      GAsyncReadyCallback callback,
+                                      gpointer user_data);
+

Run asynchronous interaction to ask the user for a password. In general, +g_tls_interaction_invoke_ask_password() should be used instead of this +function.

+

Derived subclasses usually implement a password prompt, although they may +also choose to provide a password from elsewhere. The password + value will +be filled in and then callback + will be called. Alternatively the user may +abort this password request, which will usually abort the TLS connection.

+

If the interaction is cancelled by the cancellation object, or by the +user then G_TLS_INTERACTION_FAILED will be returned with an error that +contains a G_IO_ERROR_CANCELLED error code. Certain implementations may +not support immediate cancellation.

+

Certain implementations may not support immediate cancellation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

interaction

a GTlsInteraction object

 

password

a GTlsPassword object

 

cancellable

an optional GCancellable cancellation object

 

callback

will be called when the interaction completes.

[allow-none]

user_data

data to pass to the callback +.

[allow-none]
+
+

Since: 2.30

+
+
+
+

g_tls_interaction_ask_password_finish ()

+
GTlsInteractionResult
+g_tls_interaction_ask_password_finish (GTlsInteraction *interaction,
+                                       GAsyncResult *result,
+                                       GError **error);
+

Complete an ask password user interaction request. This should be once +the g_tls_interaction_ask_password_async() completion callback is called.

+

If G_TLS_INTERACTION_HANDLED is returned, then the GTlsPassword passed +to g_tls_interaction_ask_password() will have its password filled in.

+

If the interaction is cancelled by the cancellation object, or by the +user then G_TLS_INTERACTION_FAILED will be returned with an error that +contains a G_IO_ERROR_CANCELLED error code.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

interaction

a GTlsInteraction object

 

result

the result passed to the callback

 

error

an optional location to place an error on failure

 
+
+
+

Returns

+

The status of the ask password interaction.

+
+

Since: 2.30

+
+
+
+

g_tls_interaction_request_certificate ()

+
GTlsInteractionResult
+g_tls_interaction_request_certificate (GTlsInteraction *interaction,
+                                       GTlsConnection *connection,
+                                       GTlsCertificateRequestFlags flags,
+                                       GCancellable *cancellable,
+                                       GError **error);
+

Run synchronous interaction to ask the user to choose a certificate to use +with the connection. In general, g_tls_interaction_invoke_request_certificate() +should be used instead of this function.

+

Derived subclasses usually implement a certificate selector, although they may +also choose to provide a certificate from elsewhere. Alternatively the user may +abort this certificate request, which will usually abort the TLS connection.

+

If G_TLS_INTERACTION_HANDLED is returned, then the GTlsConnection +passed to g_tls_interaction_request_certificate() will have had its +“certificate” filled in.

+

If the interaction is cancelled by the cancellation object, or by the +user then G_TLS_INTERACTION_FAILED will be returned with an error that +contains a G_IO_ERROR_CANCELLED error code. Certain implementations may +not support immediate cancellation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

interaction

a GTlsInteraction object

 

connection

a GTlsConnection object

 

flags

flags providing more information about the request

 

cancellable

an optional GCancellable cancellation object

 

error

an optional location to place an error on failure

 
+
+
+

Returns

+

The status of the request certificate interaction.

+
+

Since: 2.40

+
+
+
+

g_tls_interaction_request_certificate_async ()

+
void
+g_tls_interaction_request_certificate_async
+                               (GTlsInteraction *interaction,
+                                GTlsConnection *connection,
+                                GTlsCertificateRequestFlags flags,
+                                GCancellable *cancellable,
+                                GAsyncReadyCallback callback,
+                                gpointer user_data);
+

Run asynchronous interaction to ask the user for a certificate to use with +the connection. In general, g_tls_interaction_invoke_request_certificate() should +be used instead of this function.

+

Derived subclasses usually implement a certificate selector, although they may +also choose to provide a certificate from elsewhere. callback + will be called +when the operation completes. Alternatively the user may abort this certificate +request, which will usually abort the TLS connection.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

interaction

a GTlsInteraction object

 

connection

a GTlsConnection object

 

flags

flags providing more information about the request

 

cancellable

an optional GCancellable cancellation object

 

callback

will be called when the interaction completes.

[allow-none]

user_data

data to pass to the callback +.

[allow-none]
+
+

Since: 2.40

+
+
+
+

g_tls_interaction_request_certificate_finish ()

+
GTlsInteractionResult
+g_tls_interaction_request_certificate_finish
+                               (GTlsInteraction *interaction,
+                                GAsyncResult *result,
+                                GError **error);
+

Complete an request certificate user interaction request. This should be once +the g_tls_interaction_request_certificate_async() completion callback is called.

+

If G_TLS_INTERACTION_HANDLED is returned, then the GTlsConnection +passed to g_tls_interaction_request_certificate_async() will have had its +“certificate” filled in.

+

If the interaction is cancelled by the cancellation object, or by the +user then G_TLS_INTERACTION_FAILED will be returned with an error that +contains a G_IO_ERROR_CANCELLED error code.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

interaction

a GTlsInteraction object

 

result

the result passed to the callback

 

error

an optional location to place an error on failure

 
+
+
+

Returns

+

The status of the request certificate interaction.

+
+

Since: 2.40

+
+
+
+

Types and Values

+
+

GTlsInteraction

+
typedef struct _GTlsInteraction GTlsInteraction;
+

An object representing interaction that the TLS connection and database +might have with the user.

+

Since: 2.30

+
+
+
+

enum GTlsInteractionResult

+

GTlsInteractionResult is returned by various functions in GTlsInteraction +when finishing an interaction request.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.30

+
+
+
+

enum GTlsCertificateRequestFlags

+

Flags for g_tls_interaction_request_certificate(), +g_tls_interaction_request_certificate_async(), and +g_tls_interaction_invoke_request_certificate().

+
+

Members

+
+++++ + + + + + +

G_TLS_CERTIFICATE_REQUEST_NONE

+

No flags

+
 
+
+

Since: 2.40

+
+
+
+

struct GTlsInteractionClass

+
struct GTlsInteractionClass {
+  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);
+
+  GTlsInteractionResult  (* request_certificate)        (GTlsInteraction              *interaction,
+                                                         GTlsConnection               *connection,
+                                                         GTlsCertificateRequestFlags   flags,
+                                                         GCancellable                 *cancellable,
+                                                         GError                      **error);
+
+  void                   (* request_certificate_async)  (GTlsInteraction              *interaction,
+                                                         GTlsConnection               *connection,
+                                                         GTlsCertificateRequestFlags   flags,
+                                                         GCancellable                 *cancellable,
+                                                         GAsyncReadyCallback           callback,
+                                                         gpointer                      user_data);
+
+  GTlsInteractionResult  (* request_certificate_finish) (GTlsInteraction              *interaction,
+                                                         GAsyncResult                 *result,
+                                                         GError                      **error);
+};
+
+

The class for GTlsInteraction. Derived classes implement the various +virtual interaction methods to handle TLS interactions.

+

Derived classes can choose to implement whichever interactions methods they'd +like to support by overriding those virtual methods in their class +initialization function. If a derived class implements an async method, +it must also implement the corresponding finish method.

+

The synchronous interaction methods should implement to display modal dialogs, +and the asynchronous methods to display modeless dialogs.

+

If the user cancels an interaction, then the result should be +G_TLS_INTERACTION_FAILED and the error should be set with a domain of +G_IO_ERROR and code of G_IO_ERROR_CANCELLED.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

ask_password ()

ask for a password synchronously. If the implementation +returns G_TLS_INTERACTION_HANDLED, then the password argument should +have been filled in by using g_tls_password_set_value() or a similar +function.

 

ask_password_async ()

ask for a password asynchronously.

 

ask_password_finish ()

complete operation to ask for a password asynchronously. +If the implementation returns G_TLS_INTERACTION_HANDLED, then the +password argument of the async method should have been filled in by using +g_tls_password_set_value() or a similar function.

 

request_certificate ()

ask for a certificate synchronously. If the +implementation returns G_TLS_INTERACTION_HANDLED, then the connection +argument should have been filled in by using +g_tls_connection_set_certificate().

 

request_certificate_async ()

ask for a certificate asyncronously.

 

request_certificate_finish ()

complete operation to ask for a certificate +asynchronously. If the implementation returns G_TLS_INTERACTION_HANDLED, +then the connection argument of the async method should have been +filled in by using g_tls_connection_set_certificate().

 
+
+

Since: 2.30

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GTlsPassword.html b/docs/reference/gio/html/GTlsPassword.html new file mode 100644 index 0000000..4194868 --- /dev/null +++ b/docs/reference/gio/html/GTlsPassword.html @@ -0,0 +1,689 @@ + + + + +GTlsPassword: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTlsPassword

+

GTlsPassword — TLS Passwords for prompting

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GTlsPassword * + +g_tls_password_new () +
const guchar * + +g_tls_password_get_value () +
+void + +g_tls_password_set_value () +
+void + +g_tls_password_set_value_full () +
const gchar * + +g_tls_password_get_description () +
+void + +g_tls_password_set_description () +
+GTlsPasswordFlags + +g_tls_password_get_flags () +
+void + +g_tls_password_set_flags () +
const gchar * + +g_tls_password_get_warning () +
+void + +g_tls_password_set_warning () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + +
+gchar *descriptionRead / Write
GTlsPasswordFlagsflagsRead / Write
+gchar *warningRead / Write
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
 GTlsPassword
structGTlsPasswordClass
enumGTlsPasswordFlags
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GTlsPassword
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Holds a password used in TLS.

+
+
+

Functions

+
+

g_tls_password_new ()

+
GTlsPassword *
+g_tls_password_new (GTlsPasswordFlags flags,
+                    const gchar *description);
+

Create a new GTlsPassword object.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

flags

the password flags

 

description

description of what the password is for

 
+
+
+

Returns

+

The newly allocated password object.

+

[transfer full]

+
+
+
+
+

g_tls_password_get_value ()

+
const guchar *
+g_tls_password_get_value (GTlsPassword *password,
+                          gsize *length);
+

Get the password value. If length + is not NULL then it will be +filled in with the length of the password value. (Note that the +password value is not nul-terminated, so you can only pass NULL +for length + in contexts where you know the password will have a +certain fixed length.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

password

a GTlsPassword object

 

length

location to place the length of the password.

[allow-none]
+
+
+

Returns

+

The password value (owned by the password object).

+
+

Since: 2.30

+
+
+
+

g_tls_password_set_value ()

+
void
+g_tls_password_set_value (GTlsPassword *password,
+                          const guchar *value,
+                          gssize length);
+

Set the value for this password. The value + will be copied by the password +object.

+

Specify the length +, for a non-nul-terminated password. Pass -1 as +length + if using a nul-terminated password, and length + will be +calculated automatically. (Note that the terminating nul is not +considered part of the password in this case.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

password

a GTlsPassword object

 

value

the new password value

 

length

the length of the password, or -1

 
+
+

Since: 2.30

+
+
+
+

g_tls_password_set_value_full ()

+
void
+g_tls_password_set_value_full (GTlsPassword *password,
+                               guchar *value,
+                               gssize length,
+                               GDestroyNotify destroy);
+

Provide the value for this password.

+

The value + will be owned by the password object, and later freed using +the destroy + function callback.

+

Specify the length +, for a non-nul-terminated password. Pass -1 as +length + if using a nul-terminated password, and length + will be +calculated automatically. (Note that the terminating nul is not +considered part of the password in this case.)

+

Virtual: set_value

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

password

a GTlsPassword object

 

value

the value for the password

 

length

the length of the password, or -1

 

destroy

a function to use to free the password.

[allow-none]
+
+

Since: 2.30

+
+
+
+

g_tls_password_get_description ()

+
const gchar *
+g_tls_password_get_description (GTlsPassword *password);
+

Get a description string about what the password will be used for.

+
+

Parameters

+
+++++ + + + + + +

password

a GTlsPassword object

 
+
+
+

Returns

+

The description of the password.

+
+

Since: 2.30

+
+
+
+

g_tls_password_set_description ()

+
void
+g_tls_password_set_description (GTlsPassword *password,
+                                const gchar *description);
+

Set a description string about what the password will be used for.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

password

a GTlsPassword object

 

description

The description of the password

 
+
+

Since: 2.30

+
+
+
+

g_tls_password_get_flags ()

+
GTlsPasswordFlags
+g_tls_password_get_flags (GTlsPassword *password);
+

Get flags about the password.

+
+

Parameters

+
+++++ + + + + + +

password

a GTlsPassword object

 
+
+
+

Returns

+

The flags about the password.

+
+

Since: 2.30

+
+
+
+

g_tls_password_set_flags ()

+
void
+g_tls_password_set_flags (GTlsPassword *password,
+                          GTlsPasswordFlags flags);
+

Set flags about the password.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

password

a GTlsPassword object

 

flags

The flags about the password

 
+
+

Since: 2.30

+
+
+
+

g_tls_password_get_warning ()

+
const gchar *
+g_tls_password_get_warning (GTlsPassword *password);
+

Get a user readable translated warning. Usually this warning is a +representation of the password flags returned from +g_tls_password_get_flags().

+
+

Parameters

+
+++++ + + + + + +

password

a GTlsPassword object

 
+
+
+

Returns

+

The warning.

+
+

Since: 2.30

+
+
+
+

g_tls_password_set_warning ()

+
void
+g_tls_password_set_warning (GTlsPassword *password,
+                            const gchar *warning);
+

Set a user readable translated warning. Usually this warning is a +representation of the password flags returned from +g_tls_password_get_flags().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

password

a GTlsPassword object

 

warning

The user readable warning

 
+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

GTlsPassword

+
typedef struct _GTlsPassword GTlsPassword;
+

An abstract interface representing a password used in TLS. Often used in +user interaction such as unlocking a key storage token.

+

Since: 2.30

+
+
+
+

struct GTlsPasswordClass

+
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);
+};
+
+

Class structure for GTlsPassword.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GObjectClass parent_class;

  

get_value ()

virtual method for g_tls_password_get_value()

 

set_value ()

virtual method for g_tls_password_set_value()

 

get_default_warning ()

virtual method for g_tls_password_get_warning() if no +value has been set using g_tls_password_set_warning()

 
+
+
+
+
+

enum GTlsPasswordFlags

+

Various flags for the password.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.30

+
+
+
+

Property Details

+
+

The “description” property

+
  “description”              gchar *
+

Description of what the password is for.

+

Flags: Read / Write

+

Default value: NULL

+
+
+
+

The “flags” property

+
  “flags”                    GTlsPasswordFlags
+

Flags about the password.

+

Flags: Read / Write

+
+
+
+

The “warning” property

+
  “warning”                  gchar *
+

Warning about the password.

+

Flags: Read / Write

+

Default value: NULL

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GTlsServerConnection.html b/docs/reference/gio/html/GTlsServerConnection.html new file mode 100644 index 0000000..5e28421 --- /dev/null +++ b/docs/reference/gio/html/GTlsServerConnection.html @@ -0,0 +1,213 @@ + + + + +GTlsServerConnection: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTlsServerConnection

+

GTlsServerConnection — TLS server-side connection

+
+
+

Functions

+
++++ + + + + +
+GIOStream * + +g_tls_server_connection_new () +
+
+
+

Properties

+
+++++ + + + + + +
GTlsAuthenticationModeauthentication-modeRead / Write
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GTlsServerConnection
structGTlsServerConnectionInterface
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GTlsServerConnection
+
+
+
+

Prerequisites

+

+GTlsServerConnection requires + GTlsConnection.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GTlsServerConnection is the server-side subclass of GTlsConnection, +representing a server-side TLS connection.

+
+
+

Functions

+
+

g_tls_server_connection_new ()

+
GIOStream *
+g_tls_server_connection_new (GIOStream *base_io_stream,
+                             GTlsCertificate *certificate,
+                             GError **error);
+

Creates a new GTlsServerConnection wrapping base_io_stream + (which +must have pollable input and output streams).

+

See the documentation for “base-io-stream” for restrictions +on when application code can run operations on the base_io_stream + after +this function has returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

base_io_stream

the GIOStream to wrap

 

certificate

the default server certificate, or NULL.

[allow-none]

error

GError for error reporting, or NULL to ignore.

 
+
+
+

Returns

+

the new +GTlsServerConnection, or NULL on error.

+

[transfer full][type GTlsServerConnection]

+
+

Since: 2.28

+
+
+
+

Types and Values

+
+

GTlsServerConnection

+
typedef struct _GTlsServerConnection GTlsServerConnection;
+

TLS server-side connection. This is the server-side implementation +of a GTlsConnection.

+

Since: 2.28

+
+
+
+

struct GTlsServerConnectionInterface

+
struct GTlsServerConnectionInterface {
+  GTypeInterface g_iface;
+};
+
+

vtable for a GTlsServerConnection implementation.

+
+

Members

+
+++++ + + + + + +

GTypeInterface g_iface;

The parent interface.

 
+
+

Since: 2.26

+
+
+
+

Property Details

+
+

The “authentication-mode” property

+
  “authentication-mode”      GTlsAuthenticationMode
+

The GTlsAuthenticationMode for the server. This can be changed +before calling g_tls_connection_handshake() if you want to +rehandshake with a different mode from the initial handshake.

+

Flags: Read / Write

+

Default value: G_TLS_AUTHENTICATION_NONE

+

Since: 2.28

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GUnixConnection.html b/docs/reference/gio/html/GUnixConnection.html new file mode 100644 index 0000000..8f84c7d --- /dev/null +++ b/docs/reference/gio/html/GUnixConnection.html @@ -0,0 +1,550 @@ + + + + +GUnixConnection: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GUnixConnection

+

GUnixConnection — A UNIX domain GSocketConnection

+
+ +
+

Types and Values

+
++++ + + + + +
structGUnixConnection
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GIOStream
+        ╰── GSocketConnection
+            ╰── GUnixConnection
+
+
+
+

Includes

+
#include <gio/gunixconnection.h>
+
+
+
+

Description

+

This is the subclass of GSocketConnection that is created +for UNIX domain sockets.

+

It contains functions to do some of the UNIX socket specific +functionality like passing file descriptors.

+

Note that <gio/gunixconnection.h> belongs to the UNIX-specific +GIO interfaces, thus you have to use the gio-unix-2.0.pc +pkg-config file when using it.

+
+
+

Functions

+
+

g_unix_connection_receive_fd ()

+
gint
+g_unix_connection_receive_fd (GUnixConnection *connection,
+                              GCancellable *cancellable,
+                              GError **error);
+

Receives a file descriptor from the sending end of the connection. +The sending end has to call g_unix_connection_send_fd() for this +to work.

+

As well as reading the fd this also reads a single byte from the +stream, as this is required for fd passing to work on some +implementations.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

connection

a GUnixConnection

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting, or NULL to ignore.

[allow-none]
+
+
+

Returns

+

a file descriptor on success, -1 on error.

+
+

Since: 2.22

+
+
+
+

g_unix_connection_send_fd ()

+
gboolean
+g_unix_connection_send_fd (GUnixConnection *connection,
+                           gint fd,
+                           GCancellable *cancellable,
+                           GError **error);
+

Passes a file descriptor to the receiving side of the +connection. The receiving end has to call g_unix_connection_receive_fd() +to accept the file descriptor.

+

As well as sending the fd this also writes a single byte to the +stream, as this is required for fd passing to work on some +implementations.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

connection

a GUnixConnection

 

fd

a file descriptor

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

GError for error reporting, or NULL to ignore.

[allow-none]
+
+
+

Returns

+

a TRUE on success, NULL on error.

+
+

Since: 2.22

+
+
+
+

g_unix_connection_receive_credentials ()

+
GCredentials *
+g_unix_connection_receive_credentials (GUnixConnection *connection,
+                                       GCancellable *cancellable,
+                                       GError **error);
+

Receives credentials from the sending end of the connection. The +sending end has to call g_unix_connection_send_credentials() (or +similar) for this to work.

+

As well as reading the credentials this also reads (and discards) a +single byte from the stream, as this is required for credentials +passing to work on some implementations.

+

Other ways to exchange credentials with a foreign peer includes the +GUnixCredentialsMessage type and g_socket_get_credentials() function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

connection

A GUnixConnection.

 

cancellable

A GCancellable or NULL.

[allow-none]

error

Return location for error or NULL.

 
+
+
+

Returns

+

Received credentials on success (free with +g_object_unref()), NULL if error +is set.

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_unix_connection_receive_credentials_async ()

+
void
+g_unix_connection_receive_credentials_async
+                               (GUnixConnection *connection,
+                                GCancellable *cancellable,
+                                GAsyncReadyCallback callback,
+                                gpointer user_data);
+

Asynchronously receive credentials.

+

For more details, see g_unix_connection_receive_credentials() which is +the synchronous version of this call.

+

When the operation is finished, callback + will be called. You can then call +g_unix_connection_receive_credentials_finish() to get the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

connection

A GUnixConnection.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+

Since: 2.32

+
+
+
+

g_unix_connection_receive_credentials_finish ()

+
GCredentials *
+g_unix_connection_receive_credentials_finish
+                               (GUnixConnection *connection,
+                                GAsyncResult *result,
+                                GError **error);
+

Finishes an asynchronous receive credentials operation started with +g_unix_connection_receive_credentials_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

connection

A GUnixConnection.

 

result

a GAsyncResult.

 

error

a GError, or NULL

 
+
+
+

Returns

+

a GCredentials, or NULL on error. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_unix_connection_send_credentials ()

+
gboolean
+g_unix_connection_send_credentials (GUnixConnection *connection,
+                                    GCancellable *cancellable,
+                                    GError **error);
+

Passes the credentials of the current user the receiving side +of the connection. The receiving end has to call +g_unix_connection_receive_credentials() (or similar) to accept the +credentials.

+

As well as sending the credentials this also writes a single NUL +byte to the stream, as this is required for credentials passing to +work on some implementations.

+

Other ways to exchange credentials with a foreign peer includes the +GUnixCredentialsMessage type and g_socket_get_credentials() function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

connection

A GUnixConnection.

 

cancellable

A GCancellable or NULL.

[allow-none]

error

Return location for error or NULL.

 
+
+
+

Returns

+

TRUE on success, FALSE if error +is set.

+
+

Since: 2.26

+
+
+
+

g_unix_connection_send_credentials_async ()

+
void
+g_unix_connection_send_credentials_async
+                               (GUnixConnection *connection,
+                                GCancellable *cancellable,
+                                GAsyncReadyCallback callback,
+                                gpointer user_data);
+

Asynchronously send credentials.

+

For more details, see g_unix_connection_send_credentials() which is +the synchronous version of this call.

+

When the operation is finished, callback + will be called. You can then call +g_unix_connection_send_credentials_finish() to get the result of the operation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

connection

A GUnixConnection.

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback to call when the request is satisfied.

[scope async]

user_data

the data to pass to callback function.

[closure]
+
+

Since: 2.32

+
+
+
+

g_unix_connection_send_credentials_finish ()

+
gboolean
+g_unix_connection_send_credentials_finish
+                               (GUnixConnection *connection,
+                                GAsyncResult *result,
+                                GError **error);
+

Finishes an asynchronous send credentials operation started with +g_unix_connection_send_credentials_async().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

connection

A GUnixConnection.

 

result

a GAsyncResult.

 

error

a GError, or NULL

 
+
+
+

Returns

+

TRUE if the operation was successful, otherwise FALSE.

+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

struct GUnixConnection

+
struct GUnixConnection;
+

GUnixConnection is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

See Also

+

GSocketConnection.

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GUnixCredentialsMessage.html b/docs/reference/gio/html/GUnixCredentialsMessage.html new file mode 100644 index 0000000..474940c --- /dev/null +++ b/docs/reference/gio/html/GUnixCredentialsMessage.html @@ -0,0 +1,264 @@ + + + + +GUnixCredentialsMessage: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GUnixCredentialsMessage

+

GUnixCredentialsMessage — A GSocketControlMessage containing credentials

+
+ +
+

Properties

+
+++++ + + + + + +
+GCredentials *credentialsRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GUnixCredentialsMessage
structGUnixCredentialsMessageClass
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSocketControlMessage
+        ╰── GUnixCredentialsMessage
+
+
+
+

Includes

+
#include <gio/gunixcredentialsmessage.h>
+
+
+
+

Description

+

This GSocketControlMessage contains a GCredentials instance. It +may be sent using g_socket_send_message() and received using +g_socket_receive_message() over UNIX sockets (ie: sockets in the +G_SOCKET_FAMILY_UNIX family).

+

For an easier way to send and receive credentials over +stream-oriented UNIX sockets, see +g_unix_connection_send_credentials() and +g_unix_connection_receive_credentials(). To receive credentials of +a foreign process connected to a socket, use +g_socket_get_credentials().

+
+
+

Functions

+
+

g_unix_credentials_message_new ()

+
GSocketControlMessage *
+g_unix_credentials_message_new (void);
+

Creates a new GUnixCredentialsMessage with credentials matching the current processes.

+
+

Returns

+

a new GUnixCredentialsMessage

+
+

Since: 2.26

+
+
+
+

g_unix_credentials_message_new_with_credentials ()

+
GSocketControlMessage *
+g_unix_credentials_message_new_with_credentials
+                               (GCredentials *credentials);
+

Creates a new GUnixCredentialsMessage holding credentials +.

+
+

Parameters

+
+++++ + + + + + +

credentials

A GCredentials object.

 
+
+
+

Returns

+

a new GUnixCredentialsMessage

+
+

Since: 2.26

+
+
+
+

g_unix_credentials_message_get_credentials ()

+
GCredentials *
+g_unix_credentials_message_get_credentials
+                               (GUnixCredentialsMessage *message);
+

Gets the credentials stored in message +.

+
+

Parameters

+
+++++ + + + + + +

message

A GUnixCredentialsMessage.

 
+
+
+

Returns

+

A GCredentials instance. Do not free, it is owned by message +.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_unix_credentials_message_is_supported ()

+
gboolean
+g_unix_credentials_message_is_supported
+                               (void);
+

Checks if passing GCredentials on a GSocket is supported on this platform.

+
+

Returns

+

TRUE if supported, FALSE otherwise

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GUnixCredentialsMessage

+
typedef struct _GUnixCredentialsMessage GUnixCredentialsMessage;
+

The GUnixCredentialsMessage structure contains only private data +and should only be accessed using the provided API.

+

Since: 2.26

+
+
+
+

struct GUnixCredentialsMessageClass

+
struct GUnixCredentialsMessageClass {
+  GSocketControlMessageClass parent_class;
+};
+
+

Class structure for GUnixCredentialsMessage.

+

Since: 2.26

+
+
+
+

Property Details

+
+

The “credentials” property

+
  “credentials”              GCredentials *
+

The credentials stored in the message.

+

Flags: Read / Write / Construct Only

+

Since: 2.26

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GUnixFDList.html b/docs/reference/gio/html/GUnixFDList.html new file mode 100644 index 0000000..5d57fd8 --- /dev/null +++ b/docs/reference/gio/html/GUnixFDList.html @@ -0,0 +1,451 @@ + + + + +GUnixFDList: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GUnixFDList

+

GUnixFDList — An object containing a set of UNIX file descriptors

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GUnixFDList * + +g_unix_fd_list_new_from_array () +
+GUnixFDList * + +g_unix_fd_list_new () +
+gint + +g_unix_fd_list_get_length () +
+gint + +g_unix_fd_list_get () +
const gint * + +g_unix_fd_list_peek_fds () +
+gint * + +g_unix_fd_list_steal_fds () +
+gint + +g_unix_fd_list_append () +
+
+
+

Types and Values

+
++++ + + + + +
 GUnixFDList
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GUnixFDList
+
+
+
+

Includes

+
#include <gio/gunixfdlist.h>
+
+
+
+

Description

+

A GUnixFDList contains a list of file descriptors. It owns the file +descriptors that it contains, closing them when finalized.

+

It may be wrapped in a GUnixFDMessage and sent over a GSocket in +the G_SOCKET_ADDRESS_UNIX family by using g_socket_send_message() +and received using g_socket_receive_message().

+

Note that <gio/gunixfdlist.h> belongs to the UNIX-specific GIO +interfaces, thus you have to use the gio-unix-2.0.pc pkg-config +file when using it.

+
+
+

Functions

+
+

g_unix_fd_list_new_from_array ()

+
GUnixFDList *
+g_unix_fd_list_new_from_array (const gint *fds,
+                               gint n_fds);
+

Creates a new GUnixFDList containing the file descriptors given in +fds +. The file descriptors become the property of the new list and +may no longer be used by the caller. The array itself is owned by +the caller.

+

Each file descriptor in the array should be set to close-on-exec.

+

If n_fds + is -1 then fds + must be terminated with -1.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

fds

the initial list of file descriptors.

[array length=n_fds]

n_fds

the length of fds, or -1

 
+
+
+

Returns

+

a new GUnixFDList

+
+

Since: 2.24

+
+
+
+

g_unix_fd_list_new ()

+
GUnixFDList *
+g_unix_fd_list_new (void);
+

Creates a new GUnixFDList containing no file descriptors.

+
+

Returns

+

a new GUnixFDList

+
+

Since: 2.24

+
+
+
+

g_unix_fd_list_get_length ()

+
gint
+g_unix_fd_list_get_length (GUnixFDList *list);
+

Gets the length of list + (ie: the number of file descriptors +contained within).

+
+

Parameters

+
+++++ + + + + + +

list

a GUnixFDList

 
+
+
+

Returns

+

the length of list +

+
+

Since: 2.24

+
+
+
+

g_unix_fd_list_get ()

+
gint
+g_unix_fd_list_get (GUnixFDList *list,
+                    gint index_,
+                    GError **error);
+

Gets a file descriptor out of list +.

+

index_ + specifies the index of the file descriptor to get. It is a +programmer error for index_ + to be out of range; see +g_unix_fd_list_get_length().

+

The file descriptor is duplicated using dup() and set as +close-on-exec before being returned. You must call close() on it +when you are done.

+

A possible cause of failure is exceeding the per-process or +system-wide file descriptor limit.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

list

a GUnixFDList

 

index_

the index into the list

 

error

a GError pointer

 
+
+
+

Returns

+

the file descriptor, or -1 in case of error

+
+

Since: 2.24

+
+
+
+

g_unix_fd_list_peek_fds ()

+
const gint *
+g_unix_fd_list_peek_fds (GUnixFDList *list,
+                         gint *length);
+

Returns the array of file descriptors that is contained in this +object.

+

After this call, the descriptors remain the property of list +. The +caller must not close them and must not free the array. The array is +valid only until list + is changed in any way.

+

If length + is non-NULL then it is set to the number of file +descriptors in the returned array. The returned array is also +terminated with -1.

+

This function never returns NULL. In case there are no file +descriptors contained in list +, an empty array is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GUnixFDList

 

length

pointer to the length of the returned +array, or NULL.

[out][allow-none]
+
+
+

Returns

+

an array of file +descriptors.

+

[array length=length][transfer none]

+
+

Since: 2.24

+
+
+
+

g_unix_fd_list_steal_fds ()

+
gint *
+g_unix_fd_list_steal_fds (GUnixFDList *list,
+                          gint *length);
+

Returns the array of file descriptors that is contained in this +object.

+

After this call, the descriptors are no longer contained in +list +. Further calls will return an empty list (unless more +descriptors have been added).

+

The return result of this function must be freed with g_free(). +The caller is also responsible for closing all of the file +descriptors. The file descriptors in the array are set to +close-on-exec.

+

If length + is non-NULL then it is set to the number of file +descriptors in the returned array. The returned array is also +terminated with -1.

+

This function never returns NULL. In case there are no file +descriptors contained in list +, an empty array is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GUnixFDList

 

length

pointer to the length of the returned +array, or NULL.

[out][allow-none]
+
+
+

Returns

+

an array of file +descriptors.

+

[array length=length][transfer full]

+
+

Since: 2.24

+
+
+
+

g_unix_fd_list_append ()

+
gint
+g_unix_fd_list_append (GUnixFDList *list,
+                       gint fd,
+                       GError **error);
+

Adds a file descriptor to list +.

+

The file descriptor is duplicated using dup(). You keep your copy +of the descriptor and the copy contained in list + will be closed +when list + is finalized.

+

A possible cause of failure is exceeding the per-process or +system-wide file descriptor limit.

+

The index of the file descriptor in the list is returned. If you use +this index with g_unix_fd_list_get() then you will receive back a +duplicated copy of the same file descriptor.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

list

a GUnixFDList

 

fd

a valid open file descriptor

 

error

a GError pointer

 
+
+
+

Returns

+

the index of the appended fd in case of success, else -1 +(and error +is set)

+
+

Since: 2.24

+
+
+
+

Types and Values

+
+

GUnixFDList

+
typedef struct _GUnixFDList GUnixFDList;
+

GUnixFDList is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

See Also

+

GUnixFDMessage

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GUnixFDMessage.html b/docs/reference/gio/html/GUnixFDMessage.html new file mode 100644 index 0000000..033f236 --- /dev/null +++ b/docs/reference/gio/html/GUnixFDMessage.html @@ -0,0 +1,347 @@ + + + + +GUnixFDMessage: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GUnixFDMessage

+

GUnixFDMessage — A GSocketControlMessage containing a GUnixFDList

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+GSocketControlMessage * + +g_unix_fd_message_new_with_fd_list () +
+GSocketControlMessage * + +g_unix_fd_message_new () +
+GUnixFDList * + +g_unix_fd_message_get_fd_list () +
+gboolean + +g_unix_fd_message_append_fd () +
+gint * + +g_unix_fd_message_steal_fds () +
+
+
+

Properties

+
+++++ + + + + + +
+GUnixFDList *fd-listRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
structGUnixFDMessage
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSocketControlMessage
+        ╰── GUnixFDMessage
+
+
+
+

Includes

+
#include <gio/gunixfdmessage.h>
+
+
+
+

Description

+

This GSocketControlMessage contains a GUnixFDList. +It may be sent using g_socket_send_message() and received using +g_socket_receive_message() over UNIX sockets (ie: sockets in the +G_SOCKET_ADDRESS_UNIX family). The file descriptors are copied +between processes by the kernel.

+

For an easier way to send and receive file descriptors over +stream-oriented UNIX sockets, see g_unix_connection_send_fd() and +g_unix_connection_receive_fd().

+

Note that <gio/gunixfdmessage.h> belongs to the UNIX-specific GIO +interfaces, thus you have to use the gio-unix-2.0.pc pkg-config +file when using it.

+
+
+

Functions

+
+

g_unix_fd_message_new_with_fd_list ()

+
GSocketControlMessage *
+g_unix_fd_message_new_with_fd_list (GUnixFDList *fd_list);
+

Creates a new GUnixFDMessage containing list +.

+
+

Parameters

+
+++++ + + + + + +

fd_list

a GUnixFDList

 
+
+
+

Returns

+

a new GUnixFDMessage

+
+

Since: 2.24

+
+
+
+

g_unix_fd_message_new ()

+
GSocketControlMessage *
+g_unix_fd_message_new (void);
+

Creates a new GUnixFDMessage containing an empty file descriptor +list.

+
+

Returns

+

a new GUnixFDMessage

+
+

Since: 2.22

+
+
+
+

g_unix_fd_message_get_fd_list ()

+
GUnixFDList *
+g_unix_fd_message_get_fd_list (GUnixFDMessage *message);
+

Gets the GUnixFDList contained in message +. This function does not +return a reference to the caller, but the returned list is valid for +the lifetime of message +.

+
+

Parameters

+
+++++ + + + + + +

message

a GUnixFDMessage

 
+
+
+

Returns

+

the GUnixFDList from message +.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_unix_fd_message_append_fd ()

+
gboolean
+g_unix_fd_message_append_fd (GUnixFDMessage *message,
+                             gint fd,
+                             GError **error);
+

Adds a file descriptor to message +.

+

The file descriptor is duplicated using dup(). You keep your copy +of the descriptor and the copy contained in message + will be closed +when message + is finalized.

+

A possible cause of failure is exceeding the per-process or +system-wide file descriptor limit.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

message

a GUnixFDMessage

 

fd

a valid open file descriptor

 

error

a GError pointer

 
+
+
+

Returns

+

TRUE in case of success, else FALSE (and error +is set)

+
+

Since: 2.22

+
+
+
+

g_unix_fd_message_steal_fds ()

+
gint *
+g_unix_fd_message_steal_fds (GUnixFDMessage *message,
+                             gint *length);
+

Returns the array of file descriptors that is contained in this +object.

+

After this call, the descriptors are no longer contained in +message +. Further calls will return an empty list (unless more +descriptors have been added).

+

The return result of this function must be freed with g_free(). +The caller is also responsible for closing all of the file +descriptors.

+

If length + is non-NULL then it is set to the number of file +descriptors in the returned array. The returned array is also +terminated with -1.

+

This function never returns NULL. In case there are no file +descriptors contained in message +, an empty array is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

message

a GUnixFDMessage

 

length

pointer to the length of the returned +array, or NULL.

[out][allow-none]
+
+
+

Returns

+

an array of file +descriptors.

+

[array length=length][transfer full]

+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

struct GUnixFDMessage

+
struct GUnixFDMessage;
+

GUnixFDMessage is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

Property Details

+
+

The “fd-list” property

+
  “fd-list”                  GUnixFDList *
+

The GUnixFDList object to send with the message.

+

Flags: Read / Write / Construct Only

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GUnixInputStream.html b/docs/reference/gio/html/GUnixInputStream.html new file mode 100644 index 0000000..9d711b6 --- /dev/null +++ b/docs/reference/gio/html/GUnixInputStream.html @@ -0,0 +1,310 @@ + + + + +GUnixInputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GUnixInputStream

+

GUnixInputStream — Streaming input operations for UNIX file descriptors

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+GInputStream * + +g_unix_input_stream_new () +
+void + +g_unix_input_stream_set_close_fd () +
+gboolean + +g_unix_input_stream_get_close_fd () +
+gint + +g_unix_input_stream_get_fd () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + +
gbooleanclose-fdRead / Write
gintfdRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
structGUnixInputStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GInputStream
+        ╰── GUnixInputStream
+
+
+
+

Implemented Interfaces

+

+GUnixInputStream implements + GPollableInputStream and GFileDescriptorBased.

+
+
+

Includes

+
#include <gio/gunixinputstream.h>
+
+
+
+

Description

+

GUnixInputStream implements GInputStream for reading from a UNIX +file descriptor, including asynchronous operations. (If the file +descriptor refers to a socket or pipe, this will use poll() to do +asynchronous I/O. If it refers to a regular file, it will fall back +to doing asynchronous I/O in another thread.)

+

Note that <gio/gunixinputstream.h> belongs to the UNIX-specific GIO +interfaces, thus you have to use the gio-unix-2.0.pc pkg-config +file when using it.

+
+
+

Functions

+
+

g_unix_input_stream_new ()

+
GInputStream *
+g_unix_input_stream_new (gint fd,
+                         gboolean close_fd);
+

Creates a new GUnixInputStream for the given fd +.

+

If close_fd + is TRUE, the file descriptor will be closed +when the stream is closed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

fd

a UNIX file descriptor

 

close_fd

TRUE to close the file descriptor when done

 
+
+
+

Returns

+

a new GUnixInputStream

+
+
+
+
+

g_unix_input_stream_set_close_fd ()

+
void
+g_unix_input_stream_set_close_fd (GUnixInputStream *stream,
+                                  gboolean close_fd);
+

Sets whether the file descriptor of stream + shall be closed +when the stream is closed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GUnixInputStream

 

close_fd

TRUE to close the file descriptor when done

 
+
+

Since: 2.20

+
+
+
+

g_unix_input_stream_get_close_fd ()

+
gboolean
+g_unix_input_stream_get_close_fd (GUnixInputStream *stream);
+

Returns whether the file descriptor of stream + will be +closed when the stream is closed.

+
+

Parameters

+
+++++ + + + + + +

stream

a GUnixInputStream

 
+
+
+

Returns

+

TRUE if the file descriptor is closed when done

+
+

Since: 2.20

+
+
+
+

g_unix_input_stream_get_fd ()

+
gint
+g_unix_input_stream_get_fd (GUnixInputStream *stream);
+

Return the UNIX file descriptor that the stream reads from.

+
+

Parameters

+
+++++ + + + + + +

stream

a GUnixInputStream

 
+
+
+

Returns

+

The file descriptor of stream +

+
+

Since: 2.20

+
+
+
+

Types and Values

+
+

struct GUnixInputStream

+
struct GUnixInputStream;
+

Implements GInputStream for reading from selectable unix file descriptors

+
+
+
+

Property Details

+
+

The “close-fd” property

+
  “close-fd”                 gboolean
+

Whether to close the file descriptor when the stream is closed.

+

Flags: Read / Write

+

Default value: TRUE

+

Since: 2.20

+
+
+
+

The “fd” property

+
  “fd”                       gint
+

The file descriptor that the stream reads from.

+

Flags: Read / Write / Construct Only

+

Default value: -1

+

Since: 2.20

+
+
+
+

See Also

+

GInputStream

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GUnixOutputStream.html b/docs/reference/gio/html/GUnixOutputStream.html new file mode 100644 index 0000000..1b8fdbf --- /dev/null +++ b/docs/reference/gio/html/GUnixOutputStream.html @@ -0,0 +1,310 @@ + + + + +GUnixOutputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GUnixOutputStream

+

GUnixOutputStream — Streaming output operations for UNIX file descriptors

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+GOutputStream * + +g_unix_output_stream_new () +
+void + +g_unix_output_stream_set_close_fd () +
+gboolean + +g_unix_output_stream_get_close_fd () +
+gint + +g_unix_output_stream_get_fd () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + +
gbooleanclose-fdRead / Write
gintfdRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
structGUnixOutputStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GOutputStream
+        ╰── GUnixOutputStream
+
+
+
+

Implemented Interfaces

+

+GUnixOutputStream implements + GPollableOutputStream and GFileDescriptorBased.

+
+
+

Includes

+
#include <gio/gunixoutputstream.h>
+
+
+
+

Description

+

GUnixOutputStream implements GOutputStream for writing to a UNIX +file descriptor, including asynchronous operations. (If the file +descriptor refers to a socket or pipe, this will use poll() to do +asynchronous I/O. If it refers to a regular file, it will fall back +to doing asynchronous I/O in another thread.)

+

Note that <gio/gunixoutputstream.h> belongs to the UNIX-specific GIO +interfaces, thus you have to use the gio-unix-2.0.pc pkg-config file +when using it.

+
+
+

Functions

+
+

g_unix_output_stream_new ()

+
GOutputStream *
+g_unix_output_stream_new (gint fd,
+                          gboolean close_fd);
+

Creates a new GUnixOutputStream for the given fd +.

+

If close_fd +, is TRUE, the file descriptor will be closed when +the output stream is destroyed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

fd

a UNIX file descriptor

 

close_fd

TRUE to close the file descriptor when done

 
+
+
+

Returns

+

a new GOutputStream

+
+
+
+
+

g_unix_output_stream_set_close_fd ()

+
void
+g_unix_output_stream_set_close_fd (GUnixOutputStream *stream,
+                                   gboolean close_fd);
+

Sets whether the file descriptor of stream + shall be closed +when the stream is closed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GUnixOutputStream

 

close_fd

TRUE to close the file descriptor when done

 
+
+

Since: 2.20

+
+
+
+

g_unix_output_stream_get_close_fd ()

+
gboolean
+g_unix_output_stream_get_close_fd (GUnixOutputStream *stream);
+

Returns whether the file descriptor of stream + will be +closed when the stream is closed.

+
+

Parameters

+
+++++ + + + + + +

stream

a GUnixOutputStream

 
+
+
+

Returns

+

TRUE if the file descriptor is closed when done

+
+

Since: 2.20

+
+
+
+

g_unix_output_stream_get_fd ()

+
gint
+g_unix_output_stream_get_fd (GUnixOutputStream *stream);
+

Return the UNIX file descriptor that the stream writes to.

+
+

Parameters

+
+++++ + + + + + +

stream

a GUnixOutputStream

 
+
+
+

Returns

+

The file descriptor of stream +

+
+

Since: 2.20

+
+
+
+

Types and Values

+
+

struct GUnixOutputStream

+
struct GUnixOutputStream;
+

Implements GOutputStream for outputting to selectable unix file descriptors

+
+
+
+

Property Details

+
+

The “close-fd” property

+
  “close-fd”                 gboolean
+

Whether to close the file descriptor when the stream is closed.

+

Flags: Read / Write

+

Default value: TRUE

+

Since: 2.20

+
+
+
+

The “fd” property

+
  “fd”                       gint
+

The file descriptor that the stream writes to.

+

Flags: Read / Write / Construct Only

+

Default value: -1

+

Since: 2.20

+
+
+
+

See Also

+

GOutputStream

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GUnixSocketAddress.html b/docs/reference/gio/html/GUnixSocketAddress.html new file mode 100644 index 0000000..cf8c59b --- /dev/null +++ b/docs/reference/gio/html/GUnixSocketAddress.html @@ -0,0 +1,608 @@ + + + + +GUnixSocketAddress: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GUnixSocketAddress

+

GUnixSocketAddress — UNIX GSocketAddress

+
+ +
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +
gbooleanabstractRead / Write / Construct Only
GUnixSocketAddressTypeaddress-typeRead / Write / Construct Only
+gchar *pathRead / Write / Construct Only
+GByteArray *path-as-arrayRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
structGUnixSocketAddress
enumGUnixSocketAddressType
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GSocketAddress
+        ╰── GUnixSocketAddress
+
+
+
+

Implemented Interfaces

+

+GUnixSocketAddress implements + GSocketConnectable.

+
+
+

Includes

+
#include <gio/gunixsocketaddress.h>
+
+
+
+

Description

+

Support for UNIX-domain (also known as local) sockets.

+

UNIX domain sockets are generally visible in the filesystem. +However, some systems support abstract socket names which are not +visible in the filesystem and not affected by the filesystem +permissions, visibility, etc. Currently this is only supported +under Linux. If you attempt to use abstract sockets on other +systems, function calls may return G_IO_ERROR_NOT_SUPPORTED +errors. You can use g_unix_socket_address_abstract_names_supported() +to see if abstract names are supported.

+

Note that <gio/gunixsocketaddress.h> belongs to the UNIX-specific GIO +interfaces, thus you have to use the gio-unix-2.0.pc pkg-config file +when using it.

+
+
+

Functions

+
+

g_unix_socket_address_new ()

+
GSocketAddress *
+g_unix_socket_address_new (const gchar *path);
+

Creates a new GUnixSocketAddress for path +.

+

To create abstract socket addresses, on systems that support that, +use g_unix_socket_address_new_abstract().

+
+

Parameters

+
+++++ + + + + + +

path

the socket path

 
+
+
+

Returns

+

a new GUnixSocketAddress

+
+

Since: 2.22

+
+
+
+

g_unix_socket_address_new_abstract ()

+
GSocketAddress *
+g_unix_socket_address_new_abstract (const gchar *path,
+                                    gint path_len);
+
+

g_unix_socket_address_new_abstract is deprecated and should not be used in newly-written code.

+

Use g_unix_socket_address_new_with_type().

+
+

Creates a new G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED +GUnixSocketAddress for path +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

path

the abstract name.

[array length=path_len][element-type gchar]

path_len

the length of path +, or -1

 
+
+
+

Returns

+

a new GUnixSocketAddress

+
+
+
+
+

g_unix_socket_address_new_with_type ()

+
GSocketAddress *
+g_unix_socket_address_new_with_type (const gchar *path,
+                                     gint path_len,
+                                     GUnixSocketAddressType type);
+

Creates a new GUnixSocketAddress of type type + with name path +.

+

If type + is G_UNIX_SOCKET_ADDRESS_PATH, this is equivalent to +calling g_unix_socket_address_new().

+

If type + is G_UNIX_SOCKET_ADDRESS_ANONYMOUS, path + and path_len + will be +ignored.

+

If path_type + is G_UNIX_SOCKET_ADDRESS_ABSTRACT, then path_len + +bytes of path + will be copied to the socket's path, and only those +bytes will be considered part of the name. (If path_len + is -1, +then path + is assumed to be NUL-terminated.) For example, if path + +was "test", then calling g_socket_address_get_native_size() on the +returned socket would return 7 (2 bytes of overhead, 1 byte for the +abstract-socket indicator byte, and 4 bytes for the name "test").

+

If path_type + is G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED, then +path_len + bytes of path + will be copied to the socket's path, the +rest of the path will be padded with 0 bytes, and the entire +zero-padded buffer will be considered the name. (As above, if +path_len + is -1, then path + is assumed to be NUL-terminated.) In +this case, g_socket_address_get_native_size() will always return +the full size of a struct sockaddr_un, although +g_unix_socket_address_get_path_len() will still return just the +length of path +.

+

G_UNIX_SOCKET_ADDRESS_ABSTRACT is preferred over +G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED for new programs. Of course, +when connecting to a server created by another process, you must +use the appropriate type corresponding to how that process created +its listening socket.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

path

the name.

[array length=path_len][element-type gchar]

path_len

the length of path +, or -1

 

type

a GUnixSocketAddressType

 
+
+
+

Returns

+

a new GUnixSocketAddress

+
+

Since: 2.26

+
+
+
+

g_unix_socket_address_get_is_abstract ()

+
gboolean
+g_unix_socket_address_get_is_abstract (GUnixSocketAddress *address);
+
+

g_unix_socket_address_get_is_abstract is deprecated and should not be used in newly-written code.

+

Use g_unix_socket_address_get_address_type()

+
+

Tests if address + is abstract.

+
+

Parameters

+
+++++ + + + + + +

address

a GInetSocketAddress

 
+
+
+

Returns

+

TRUE if the address is abstract, FALSE otherwise

+
+

Since: 2.22

+
+
+
+

g_unix_socket_address_get_address_type ()

+
GUnixSocketAddressType
+g_unix_socket_address_get_address_type
+                               (GUnixSocketAddress *address);
+

Gets address +'s type.

+
+

Parameters

+
+++++ + + + + + +

address

a GInetSocketAddress

 
+
+
+

Returns

+

a GUnixSocketAddressType

+
+

Since: 2.26

+
+
+
+

g_unix_socket_address_get_path ()

+
const char *
+g_unix_socket_address_get_path (GUnixSocketAddress *address);
+

Gets address +'s path, or for abstract sockets the "name".

+

Guaranteed to be zero-terminated, but an abstract socket +may contain embedded zeros, and thus you should use +g_unix_socket_address_get_path_len() to get the true length +of this string.

+
+

Parameters

+
+++++ + + + + + +

address

a GInetSocketAddress

 
+
+
+

Returns

+

the path for address +

+
+

Since: 2.22

+
+
+
+

g_unix_socket_address_get_path_len ()

+
gsize
+g_unix_socket_address_get_path_len (GUnixSocketAddress *address);
+

Gets the length of address +'s path.

+

For details, see g_unix_socket_address_get_path().

+
+

Parameters

+
+++++ + + + + + +

address

a GInetSocketAddress

 
+
+
+

Returns

+

the length of the path

+
+

Since: 2.22

+
+
+
+

g_unix_socket_address_abstract_names_supported ()

+
gboolean
+g_unix_socket_address_abstract_names_supported
+                               (void);
+

Checks if abstract UNIX domain socket names are supported.

+
+

Returns

+

TRUE if supported, FALSE otherwise

+
+

Since: 2.22

+
+
+
+

Types and Values

+
+

struct GUnixSocketAddress

+
struct GUnixSocketAddress;
+

A UNIX-domain (local) socket address, corresponding to a +struct sockaddr_un.

+
+
+
+

enum GUnixSocketAddressType

+

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 struct sockaddr_un +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.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

+
 
+
+

Since: 2.26

+
+
+
+

Property Details

+
+

The “abstract” property

+
  “abstract”                 gboolean
+

Whether or not this is an abstract address

+
+

GUnixSocketAddress:abstract is deprecated and should not be used in newly-written code.

+

Use “address-type”, which +distinguishes between zero-padded and non-zero-padded +abstract addresses.

+
+

Flags: Read / Write / Construct Only

+

Default value: FALSE

+
+
+
+

The “address-type” property

+
  “address-type”             GUnixSocketAddressType
+

The type of UNIX socket address.

+

Flags: Read / Write / Construct Only

+

Default value: G_UNIX_SOCKET_ADDRESS_PATH

+
+
+
+

The “path” property

+
  “path”                     gchar *
+

UNIX socket path.

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+

The “path-as-array” property

+
  “path-as-array”            GByteArray *
+

UNIX socket path, as byte array.

+

Flags: Read / Write / Construct Only

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GVfs.html b/docs/reference/gio/html/GVfs.html new file mode 100644 index 0000000..6b28910 --- /dev/null +++ b/docs/reference/gio/html/GVfs.html @@ -0,0 +1,356 @@ + + + + +GVfs: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GVfs

+

GVfs — Virtual File System

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GFile * + +g_vfs_get_file_for_path () +
+GFile * + +g_vfs_get_file_for_uri () +
+GFile * + +g_vfs_parse_name () +
+GVfs * + +g_vfs_get_default () +
+GVfs * + +g_vfs_get_local () +
+gboolean + +g_vfs_is_active () +
const gchar * const * + +g_vfs_get_supported_uri_schemes () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GVfs
#defineG_VFS_EXTENSION_POINT_NAME
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GVfs
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Entry point for using GIO functionality.

+
+
+

Functions

+
+

g_vfs_get_file_for_path ()

+
GFile *
+g_vfs_get_file_for_path (GVfs *vfs,
+                         const char *path);
+

Gets a GFile for path +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

vfs

a GVfs.

 

path

a string containing a VFS path.

 
+
+
+

Returns

+

a GFile. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_vfs_get_file_for_uri ()

+
GFile *
+g_vfs_get_file_for_uri (GVfs *vfs,
+                        const char *uri);
+

Gets a GFile for uri +.

+

This operation never fails, but the returned object +might not support any I/O operation if the URI +is malformed or if the URI scheme is not supported.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

vfs

aGVfs.

 

uri

a string containing a URI

 
+
+
+

Returns

+

a GFile. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_vfs_parse_name ()

+
GFile *
+g_vfs_parse_name (GVfs *vfs,
+                  const char *parse_name);
+

This operation never fails, but the returned object might +not support any I/O operations if the parse_name + cannot +be parsed by the GVfs module.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

vfs

a GVfs.

 

parse_name

a string to be parsed by the VFS module.

 
+
+
+

Returns

+

a GFile for the given parse_name +. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_vfs_get_default ()

+
GVfs *
+g_vfs_get_default (void);
+

Gets the default GVfs for the system.

+
+

Returns

+

a GVfs.

+

[transfer none]

+
+
+
+
+

g_vfs_get_local ()

+
GVfs *
+g_vfs_get_local (void);
+

Gets the local GVfs for the system.

+
+

Returns

+

a GVfs.

+

[transfer none]

+
+
+
+
+

g_vfs_is_active ()

+
gboolean
+g_vfs_is_active (GVfs *vfs);
+

Checks if the VFS is active.

+
+

Parameters

+
+++++ + + + + + +

vfs

a GVfs.

 
+
+
+

Returns

+

TRUE if construction of the vfs +was successful +and it is now active.

+
+
+
+
+

g_vfs_get_supported_uri_schemes ()

+
const gchar * const *
+g_vfs_get_supported_uri_schemes (GVfs *vfs);
+

Gets a list of URI schemes supported by vfs +.

+
+

Parameters

+
+++++ + + + + + +

vfs

a GVfs.

 
+
+
+

Returns

+

a NULL-terminated array of strings. +The returned array belongs to GIO and must +not be freed or modified.

+

[transfer none]

+
+
+
+
+

Types and Values

+
+

GVfs

+
typedef struct _GVfs GVfs;
+

Virtual File System object.

+
+
+
+

G_VFS_EXTENSION_POINT_NAME

+
#define G_VFS_EXTENSION_POINT_NAME "gio-vfs"
+
+

Extension point for GVfs functionality. +See Extending GIO.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GVolume.html b/docs/reference/gio/html/GVolume.html new file mode 100644 index 0000000..38bc9df --- /dev/null +++ b/docs/reference/gio/html/GVolume.html @@ -0,0 +1,1380 @@ + + + + +GVolume: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GVolume

+

GVolume — Volume management

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+char * + +g_volume_get_name () +
+char * + +g_volume_get_uuid () +
+GIcon * + +g_volume_get_icon () +
+GIcon * + +g_volume_get_symbolic_icon () +
+GDrive * + +g_volume_get_drive () +
+GMount * + +g_volume_get_mount () +
+gboolean + +g_volume_can_mount () +
+gboolean + +g_volume_should_automount () +
+GFile * + +g_volume_get_activation_root () +
+void + +g_volume_mount () +
+gboolean + +g_volume_mount_finish () +
+gboolean + +g_volume_can_eject () +
+void + +g_volume_eject () +
+gboolean + +g_volume_eject_finish () +
+void + +g_volume_eject_with_operation () +
+gboolean + +g_volume_eject_with_operation_finish () +
+char ** + +g_volume_enumerate_identifiers () +
+char * + +g_volume_get_identifier () +
const gchar * + +g_volume_get_sort_key () +
+
+
+

Signals

+
+++++ + + + + + + + + + + + + +
voidchangedRun Last
voidremovedRun Last
+
+
+

Types and Values

+ +
+
+

Object Hierarchy

+
    GInterface
+    ╰── GVolume
+
+
+
+

Prerequisites

+

+GVolume requires + GObject.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

The GVolume interface represents user-visible objects that can be +mounted. Note, when porting from GnomeVFS, GVolume is the moral +equivalent of GnomeVFSDrive.

+

Mounting a GVolume instance is an asynchronous operation. For more +information about asynchronous operations, see GAsyncResult and +GTask. To mount a GVolume, first call g_volume_mount() with (at +least) the GVolume instance, optionally a GMountOperation object +and a GAsyncReadyCallback.

+

Typically, one will only want to pass NULL for the +GMountOperation if automounting all volumes when a desktop session +starts since it's not desirable to put up a lot of dialogs asking +for credentials.

+

The callback will be fired when the operation has resolved (either +with success or failure), and a GAsyncReady structure will be +passed to the callback. That callback should then call +g_volume_mount_finish() with the GVolume instance and the +GAsyncReady data to see if the operation was completed +successfully. If an error + is present when g_volume_mount_finish() +is called, then it will be filled with any error information.

+
+

Volume Identifiers

+

It is sometimes necessary to directly access the underlying +operating system object behind a volume (e.g. for passing a volume +to an application via the commandline). For this purpose, GIO +allows to obtain an 'identifier' for the volume. There can be +different kinds of identifiers, such as Hal UDIs, filesystem labels, +traditional Unix devices (e.g. /dev/sda2), UUIDs. GIO uses predefined +strings as names for the different kinds of identifiers: +G_VOLUME_IDENTIFIER_KIND_HAL_UDI, G_VOLUME_IDENTIFIER_KIND_LABEL, etc. +Use g_volume_get_identifier() to obtain an identifier for a volume.

+

Note that G_VOLUME_IDENTIFIER_KIND_HAL_UDI will only be available +when the gvfs hal volume monitor is in use. Other volume monitors +will generally be able to provide the G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE +identifier, which can be used to obtain a hal device by means of +libhal_manager_find_device_string_match().

+
+
+
+

Functions

+
+

g_volume_get_name ()

+
char *
+g_volume_get_name (GVolume *volume);
+

Gets the name of volume +.

+
+

Parameters

+
+++++ + + + + + +

volume

a GVolume

 
+
+
+

Returns

+

the name for the given volume +. The returned string should +be freed with g_free() when no longer needed.

+
+
+
+
+

g_volume_get_uuid ()

+
char *
+g_volume_get_uuid (GVolume *volume);
+

Gets the UUID for the volume +. The reference is typically based on +the file system UUID for the volume in question and should be +considered an opaque string. Returns NULL if there is no UUID +available.

+
+

Parameters

+
+++++ + + + + + +

volume

a GVolume

 
+
+
+

Returns

+

the UUID for volume +or NULL if no UUID can be computed. +The returned string should be freed with g_free() +when no longer needed.

+
+
+
+
+

g_volume_get_icon ()

+
GIcon *
+g_volume_get_icon (GVolume *volume);
+

Gets the icon for volume +.

+
+

Parameters

+
+++++ + + + + + +

volume

a GVolume

 
+
+
+

Returns

+

a GIcon. +The returned object should be unreffed with g_object_unref() +when no longer needed.

+

[transfer full]

+
+
+
+
+

g_volume_get_symbolic_icon ()

+
GIcon *
+g_volume_get_symbolic_icon (GVolume *volume);
+

Gets the symbolic icon for volume +.

+
+

Parameters

+
+++++ + + + + + +

volume

a GVolume

 
+
+
+

Returns

+

a GIcon. +The returned object should be unreffed with g_object_unref() +when no longer needed.

+

[transfer full]

+
+

Since: 2.34

+
+
+
+

g_volume_get_drive ()

+
GDrive *
+g_volume_get_drive (GVolume *volume);
+

Gets the drive for the volume +.

+
+

Parameters

+
+++++ + + + + + +

volume

a GVolume

 
+
+
+

Returns

+

a GDrive or NULL if volume +is not +associated with a drive. The returned object should be unreffed +with g_object_unref() when no longer needed.

+

[transfer full]

+
+
+
+
+

g_volume_get_mount ()

+
GMount *
+g_volume_get_mount (GVolume *volume);
+

Gets the mount for the volume +.

+
+

Parameters

+
+++++ + + + + + +

volume

a GVolume

 
+
+
+

Returns

+

a GMount or NULL if volume +isn't mounted. +The returned object should be unreffed with g_object_unref() +when no longer needed.

+

[transfer full]

+
+
+
+
+

g_volume_can_mount ()

+
gboolean
+g_volume_can_mount (GVolume *volume);
+

Checks if a volume can be mounted.

+
+

Parameters

+
+++++ + + + + + +

volume

a GVolume

 
+
+
+

Returns

+

TRUE if the volume +can be mounted. FALSE otherwise

+
+
+
+
+

g_volume_should_automount ()

+
gboolean
+g_volume_should_automount (GVolume *volume);
+

Returns whether the volume should be automatically mounted.

+
+

Parameters

+
+++++ + + + + + +

volume

a GVolume

 
+
+
+

Returns

+

TRUE if the volume should be automatically mounted

+
+
+
+
+

g_volume_get_activation_root ()

+
GFile *
+g_volume_get_activation_root (GVolume *volume);
+

Gets the activation root for a GVolume if it is known ahead of +mount time. Returns NULL otherwise. If not NULL and if volume + +is mounted, then the result of g_mount_get_root() on the +GMount object obtained from g_volume_get_mount() will always +either be equal or a prefix of what this function returns. In +other words, in code

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
GMount *mount;
+GFile *mount_root
+GFile *volume_activation_root;
+
+mount = g_volume_get_mount (volume); // mounted, so never NULL
+mount_root = g_mount_get_root (mount);
+volume_activation_root = g_volume_get_activation_root (volume); // assume not NULL
+
+ +

+then the expression

+
+ + + + + + + +
1
+2
(g_file_has_prefix (volume_activation_root, mount_root) ||
+    g_file_equal (volume_activation_root, mount_root))
+
+ +

+will always be TRUE.

+

Activation roots are typically used in GVolumeMonitor +implementations to find the underlying mount to shadow, see +g_mount_is_shadowed() for more details.

+
+

Parameters

+
+++++ + + + + + +

volume

a GVolume

 
+
+
+

Returns

+

the activation root of volume +or NULL. Use g_object_unref() to free.

+

[nullable][transfer full]

+
+

Since: 2.18

+
+
+
+

g_volume_mount ()

+
void
+g_volume_mount (GVolume *volume,
+                GMountMountFlags flags,
+                GMountOperation *mount_operation,
+                GCancellable *cancellable,
+                GAsyncReadyCallback callback,
+                gpointer user_data);
+

Mounts a volume. This is an asynchronous operation, and is +finished by calling g_volume_mount_finish() with the volume + +and GAsyncResult returned in the callback +.

+

Virtual: mount_fn

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

volume

a GVolume

 

flags

flags affecting the operation

 

mount_operation

a GMountOperation or NULL to avoid user interaction.

[allow-none]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback, or NULL.

[allow-none]

user_data

user data that gets passed to callback +

 
+
+
+
+
+

g_volume_mount_finish ()

+
gboolean
+g_volume_mount_finish (GVolume *volume,
+                       GAsyncResult *result,
+                       GError **error);
+

Finishes mounting a volume. If any errors occurred during the operation, +error + will be set to contain the errors and FALSE will be returned.

+

If the mount operation succeeded, g_volume_get_mount() on volume + +is guaranteed to return the mount right after calling this +function; there's no need to listen for the 'mount-added' signal on +GVolumeMonitor.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

volume

a GVolume

 

result

a GAsyncResult

 

error

a GError location to store an error, or NULL to ignore

 
+
+
+

Returns

+

TRUE, FALSE if operation failed

+
+
+
+
+

g_volume_can_eject ()

+
gboolean
+g_volume_can_eject (GVolume *volume);
+

Checks if a volume can be ejected.

+
+

Parameters

+
+++++ + + + + + +

volume

a GVolume

 
+
+
+

Returns

+

TRUE if the volume +can be ejected. FALSE otherwise

+
+
+
+
+

g_volume_eject ()

+
void
+g_volume_eject (GVolume *volume,
+                GMountUnmountFlags flags,
+                GCancellable *cancellable,
+                GAsyncReadyCallback callback,
+                gpointer user_data);
+
+

g_volume_eject has been deprecated since version 2.22 and should not be used in newly-written code.

+

Use g_volume_eject_with_operation() instead.

+
+

Ejects a volume. This is an asynchronous operation, and is +finished by calling g_volume_eject_finish() with the volume + +and GAsyncResult returned in the callback +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

volume

a GVolume

 

flags

flags affecting the unmount if required for eject

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback, or NULL.

[allow-none]

user_data

user data that gets passed to callback +

 
+
+
+
+
+

g_volume_eject_finish ()

+
gboolean
+g_volume_eject_finish (GVolume *volume,
+                       GAsyncResult *result,
+                       GError **error);
+
+

g_volume_eject_finish has been deprecated since version 2.22 and should not be used in newly-written code.

+

Use g_volume_eject_with_operation_finish() instead.

+
+

Finishes ejecting a volume. If any errors occurred during the operation, +error + will be set to contain the errors and FALSE will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

volume

pointer to a GVolume

 

result

a GAsyncResult

 

error

a GError location to store an error, or NULL to ignore

 
+
+
+

Returns

+

TRUE, FALSE if operation failed

+
+
+
+
+

g_volume_eject_with_operation ()

+
void
+g_volume_eject_with_operation (GVolume *volume,
+                               GMountUnmountFlags flags,
+                               GMountOperation *mount_operation,
+                               GCancellable *cancellable,
+                               GAsyncReadyCallback callback,
+                               gpointer user_data);
+

Ejects a volume. This is an asynchronous operation, and is +finished by calling g_volume_eject_with_operation_finish() with the volume + +and GAsyncResult data returned in the callback +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

volume

a GVolume

 

flags

flags affecting the unmount if required for eject

 

mount_operation

a GMountOperation or NULL to +avoid user interaction.

[allow-none]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

callback

a GAsyncReadyCallback, or NULL.

[allow-none]

user_data

user data passed to callback +

 
+
+

Since: 2.22

+
+
+
+

g_volume_eject_with_operation_finish ()

+
gboolean
+g_volume_eject_with_operation_finish (GVolume *volume,
+                                      GAsyncResult *result,
+                                      GError **error);
+

Finishes ejecting a volume. If any errors occurred during the operation, +error + will be set to contain the errors and FALSE will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

volume

a GVolume

 

result

a GAsyncResult

 

error

a GError location to store the error occurring, or NULL

 
+
+
+

Returns

+

TRUE if the volume was successfully ejected. FALSE otherwise

+
+

Since: 2.22

+
+
+
+

g_volume_enumerate_identifiers ()

+
char **
+g_volume_enumerate_identifiers (GVolume *volume);
+

Gets the kinds of identifiers that volume + has. +Use g_volume_get_identifier() to obtain the identifiers themselves.

+
+

Parameters

+
+++++ + + + + + +

volume

a GVolume

 
+
+
+

Returns

+

a NULL-terminated array +of strings containing kinds of identifiers. Use g_strfreev() to free.

+

[array zero-terminated=1][transfer full]

+
+
+
+
+

g_volume_get_identifier ()

+
char *
+g_volume_get_identifier (GVolume *volume,
+                         const char *kind);
+

Gets the identifier of the given kind for volume +. +See the introduction for more +information about volume identifiers.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

volume

a GVolume

 

kind

the kind of identifier to return

 
+
+
+

Returns

+

a newly allocated string containing the +requested identfier, or NULL if the GVolume +doesn't have this kind of identifier

+
+
+
+
+

g_volume_get_sort_key ()

+
const gchar *
+g_volume_get_sort_key (GVolume *volume);
+

Gets the sort key for volume +, if any.

+
+

Parameters

+
+++++ + + + + + +

volume

a GVolume

 
+
+
+

Returns

+

Sorting key for volume +or NULL if no such key is available

+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

GVolume

+
typedef struct _GVolume GVolume;
+

Opaque mountable volume object.

+
+
+
+

struct 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);
+};
+
+

Interface for implementing operations for mountable volumes.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInterface 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 “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 identifier of the given kind, or NULL if +the GVolume doesn't have one.

 

enumerate_identifiers ()

Returns an array strings listing the kinds +of identifiers 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.

 
+
+
+
+
+

G_VOLUME_IDENTIFIER_KIND_HAL_UDI

+
#define G_VOLUME_IDENTIFIER_KIND_HAL_UDI "hal-udi"
+
+

The string used to obtain a Hal UDI with g_volume_get_identifier().

+
+
+
+

G_VOLUME_IDENTIFIER_KIND_LABEL

+
#define G_VOLUME_IDENTIFIER_KIND_LABEL "label"
+
+

The string used to obtain a filesystem label with g_volume_get_identifier().

+
+
+
+

G_VOLUME_IDENTIFIER_KIND_NFS_MOUNT

+
#define G_VOLUME_IDENTIFIER_KIND_NFS_MOUNT "nfs-mount"
+
+

The string used to obtain a NFS mount with g_volume_get_identifier().

+
+
+
+

G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE

+
#define G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE "unix-device"
+
+

The string used to obtain a Unix device path with g_volume_get_identifier().

+
+
+
+

G_VOLUME_IDENTIFIER_KIND_UUID

+
#define G_VOLUME_IDENTIFIER_KIND_UUID "uuid"
+
+

The string used to obtain a UUID with g_volume_get_identifier().

+
+
+
+

G_VOLUME_IDENTIFIER_KIND_CLASS

+
#define G_VOLUME_IDENTIFIER_KIND_CLASS "class"
+
+

The string used to obtain the volume class with g_volume_get_identifier().

+

Known volume classes include device and network. 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 network volumes under +a "Network" heading and device volumes under a "Devices" heading.

+
+
+
+

Signal Details

+
+

The “changed” signal

+
void
+user_function (GVolume *arg0,
+               gpointer user_data)
+

Emitted when the volume has been changed.

+
+

Parameters

+
+++++ + + + + + +

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “removed” signal

+
void
+user_function (GVolume *arg0,
+               gpointer user_data)
+

This signal 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.

+
+

Parameters

+
+++++ + + + + + +

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GVolumeMonitor.html b/docs/reference/gio/html/GVolumeMonitor.html new file mode 100644 index 0000000..7a41d0b --- /dev/null +++ b/docs/reference/gio/html/GVolumeMonitor.html @@ -0,0 +1,925 @@ + + + + +GVolumeMonitor: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GVolumeMonitor

+

GVolumeMonitor — Volume Monitor

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GVolumeMonitor * + +g_volume_monitor_get () +
+GList * + +g_volume_monitor_get_connected_drives () +
+GList * + +g_volume_monitor_get_volumes () +
+GList * + +g_volume_monitor_get_mounts () +
+GVolume * + +g_volume_monitor_adopt_orphan_mount () +
+GMount * + +g_volume_monitor_get_mount_for_uuid () +
+GVolume * + +g_volume_monitor_get_volume_for_uuid () +
+
+
+

Signals

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
voiddrive-changedRun Last
voiddrive-connectedRun Last
voiddrive-disconnectedRun Last
voiddrive-eject-buttonRun Last
voiddrive-stop-buttonRun Last
voidmount-addedRun Last
voidmount-changedRun Last
voidmount-pre-unmountRun Last
voidmount-removedRun Last
voidvolume-addedRun Last
voidvolume-changedRun Last
voidvolume-removedRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GVolumeMonitor
#defineG_VOLUME_MONITOR_EXTENSION_POINT_NAME
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GVolumeMonitor
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GVolumeMonitor is for listing the user interesting devices and volumes +on the computer. In other words, what a file selector or file manager +would show in a sidebar.

+

GVolumeMonitor is not +thread-default-context aware, +and so should not be used other than from the main thread, with no +thread-default-context active.

+
+
+

Functions

+
+

g_volume_monitor_get ()

+
GVolumeMonitor *
+g_volume_monitor_get (void);
+

Gets the volume monitor used by gio.

+
+

Returns

+

a reference to the GVolumeMonitor used by gio. Call +g_object_unref() when done with it.

+

[transfer full]

+
+
+
+
+

g_volume_monitor_get_connected_drives ()

+
GList *
+g_volume_monitor_get_connected_drives (GVolumeMonitor *volume_monitor);
+

Gets a list of drives connected to the system.

+

The returned list should be freed with g_list_free(), after +its elements have been unreffed with g_object_unref().

+
+

Parameters

+
+++++ + + + + + +

volume_monitor

a GVolumeMonitor.

 
+
+
+

Returns

+

a GList of connected GDrive objects.

+

[element-type GDrive][transfer full]

+
+
+
+
+

g_volume_monitor_get_volumes ()

+
GList *
+g_volume_monitor_get_volumes (GVolumeMonitor *volume_monitor);
+

Gets a list of the volumes on the system.

+

The returned list should be freed with g_list_free(), after +its elements have been unreffed with g_object_unref().

+
+

Parameters

+
+++++ + + + + + +

volume_monitor

a GVolumeMonitor.

 
+
+
+

Returns

+

a GList of GVolume objects.

+

[element-type GVolume][transfer full]

+
+
+
+
+

g_volume_monitor_get_mounts ()

+
GList *
+g_volume_monitor_get_mounts (GVolumeMonitor *volume_monitor);
+

Gets a list of the mounts on the system.

+

The returned list should be freed with g_list_free(), after +its elements have been unreffed with g_object_unref().

+
+

Parameters

+
+++++ + + + + + +

volume_monitor

a GVolumeMonitor.

 
+
+
+

Returns

+

a GList of GMount objects.

+

[element-type GMount][transfer full]

+
+
+
+
+

g_volume_monitor_adopt_orphan_mount ()

+
GVolume *
+g_volume_monitor_adopt_orphan_mount (GMount *mount);
+
+

g_volume_monitor_adopt_orphan_mount has been deprecated since version 2.20 and should not be used in newly-written code.

+

Instead of using this function, GVolumeMonitor +implementations should instead create shadow mounts with the URI of +the mount they intend to adopt. See the proxy volume monitor in +gvfs for an example of this. Also see g_mount_is_shadowed(), +g_mount_shadow() and g_mount_unshadow() functions.

+
+

This function should be called by any GVolumeMonitor +implementation when a new GMount object is created that is not +associated with a GVolume object. It must be called just before +emitting the mount_added + signal.

+

If the return value is not NULL, the caller must associate the +returned GVolume object with the GMount. This involves returning +it in its g_mount_get_volume() implementation. The caller must +also listen for the "removed" signal on the returned object +and give up its reference when handling that signal

+

Similary, if implementing g_volume_monitor_adopt_orphan_mount(), +the implementor must take a reference to mount + and return it in +its g_volume_get_mount() implemented. Also, the implementor must +listen for the "unmounted" signal on mount + and give up its +reference upon handling that signal.

+

There are two main use cases for this function.

+

One is when implementing a user space file system driver that reads +blocks of a block device that is already represented by the native +volume monitor (for example a CD Audio file system driver). Such +a driver will generate its own GMount object that needs to be +associated with the GVolume object that represents the volume.

+

The other is for implementing a GVolumeMonitor whose sole purpose +is to return GVolume objects representing entries in the users +"favorite servers" list or similar.

+
+

Parameters

+
+++++ + + + + + +

mount

a GMount object to find a parent for

 
+
+
+

Returns

+

the GVolume object that is the parent for mount +or NULL +if no wants to adopt the GMount.

+

[transfer full]

+
+
+
+
+

g_volume_monitor_get_mount_for_uuid ()

+
GMount *
+g_volume_monitor_get_mount_for_uuid (GVolumeMonitor *volume_monitor,
+                                     const char *uuid);
+

Finds a GMount object by its UUID (see g_mount_get_uuid())

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

volume_monitor

a GVolumeMonitor.

 

uuid

the UUID to look for

 
+
+
+

Returns

+

a GMount or NULL if no such mount is available. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_volume_monitor_get_volume_for_uuid ()

+
GVolume *
+g_volume_monitor_get_volume_for_uuid (GVolumeMonitor *volume_monitor,
+                                      const char *uuid);
+

Finds a GVolume object by its UUID (see g_volume_get_uuid())

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

volume_monitor

a GVolumeMonitor.

 

uuid

the UUID to look for

 
+
+
+

Returns

+

a GVolume or NULL if no such volume is available. +Free the returned object with g_object_unref().

+

[transfer full]

+
+
+
+
+

Types and Values

+
+

GVolumeMonitor

+
typedef struct _GVolumeMonitor GVolumeMonitor;
+

A Volume Monitor that watches for volume events.

+
+
+
+

G_VOLUME_MONITOR_EXTENSION_POINT_NAME

+
#define G_VOLUME_MONITOR_EXTENSION_POINT_NAME "gio-volume-monitor"
+
+

Extension point for volume monitor functionality. +See Extending GIO.

+
+
+
+

Signal Details

+
+

The “drive-changed” signal

+
void
+user_function (GVolumeMonitor *volume_monitor,
+               GDrive         *drive,
+               gpointer        user_data)
+

Emitted when a drive changes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

volume_monitor

The volume monitor emitting the signal.

 

drive

the drive that changed

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “drive-connected” signal

+
void
+user_function (GVolumeMonitor *volume_monitor,
+               GDrive         *drive,
+               gpointer        user_data)
+

Emitted when a drive is connected to the system.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

volume_monitor

The volume monitor emitting the signal.

 

drive

a GDrive that was connected.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “drive-disconnected” signal

+
void
+user_function (GVolumeMonitor *volume_monitor,
+               GDrive         *drive,
+               gpointer        user_data)
+

Emitted when a drive is disconnected from the system.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

volume_monitor

The volume monitor emitting the signal.

 

drive

a GDrive that was disconnected.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “drive-eject-button” signal

+
void
+user_function (GVolumeMonitor *volume_monitor,
+               GDrive         *drive,
+               gpointer        user_data)
+

Emitted when the eject button is pressed on drive +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

volume_monitor

The volume monitor emitting the signal.

 

drive

the drive where the eject button was pressed

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.18

+
+
+
+

The “drive-stop-button” signal

+
void
+user_function (GVolumeMonitor *volume_monitor,
+               GDrive         *drive,
+               gpointer        user_data)
+

Emitted when the stop button is pressed on drive +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

volume_monitor

The volume monitor emitting the signal.

 

drive

the drive where the stop button was pressed

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+

Since: 2.22

+
+
+
+

The “mount-added” signal

+
void
+user_function (GVolumeMonitor *volume_monitor,
+               GMount         *mount,
+               gpointer        user_data)
+

Emitted when a mount is added.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

volume_monitor

The volume monitor emitting the signal.

 

mount

a GMount that was added.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “mount-changed” signal

+
void
+user_function (GVolumeMonitor *volume_monitor,
+               GMount         *mount,
+               gpointer        user_data)
+

Emitted when a mount changes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

volume_monitor

The volume monitor emitting the signal.

 

mount

a GMount that changed.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “mount-pre-unmount” signal

+
void
+user_function (GVolumeMonitor *volume_monitor,
+               GMount         *mount,
+               gpointer        user_data)
+

Emitted when a mount is about to be removed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

volume_monitor

The volume monitor emitting the signal.

 

mount

a GMount that is being unmounted.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “mount-removed” signal

+
void
+user_function (GVolumeMonitor *volume_monitor,
+               GMount         *mount,
+               gpointer        user_data)
+

Emitted when a mount is removed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

volume_monitor

The volume monitor emitting the signal.

 

mount

a GMount that was removed.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “volume-added” signal

+
void
+user_function (GVolumeMonitor *volume_monitor,
+               GVolume        *volume,
+               gpointer        user_data)
+

Emitted when a mountable volume is added to the system.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

volume_monitor

The volume monitor emitting the signal.

 

volume

a GVolume that was added.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “volume-changed” signal

+
void
+user_function (GVolumeMonitor *volume_monitor,
+               GVolume        *volume,
+               gpointer        user_data)
+

Emitted when mountable volume is changed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

volume_monitor

The volume monitor emitting the signal.

 

volume

a GVolume that changed.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “volume-removed” signal

+
void
+user_function (GVolumeMonitor *volume_monitor,
+               GVolume        *volume,
+               gpointer        user_data)
+

Emitted when a mountable volume is removed from the system.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

volume_monitor

The volume monitor emitting the signal.

 

volume

a GVolume that was removed.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

See Also

+

GFileMonitor

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GZlibCompressor.html b/docs/reference/gio/html/GZlibCompressor.html new file mode 100644 index 0000000..5c4dac3 --- /dev/null +++ b/docs/reference/gio/html/GZlibCompressor.html @@ -0,0 +1,328 @@ + + + + +GZlibCompressor: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GZlibCompressor

+

GZlibCompressor — Zlib compressor

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + +
+GZlibCompressor * + +g_zlib_compressor_new () +
+GFileInfo * + +g_zlib_compressor_get_file_info () +
+void + +g_zlib_compressor_set_file_info () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + +
+GFileInfo *file-infoRead / Write
GZlibCompressorFormatformatRead / Write / Construct Only
gintlevelRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GZlibCompressor
enumGZlibCompressorFormat
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GZlibCompressor
+
+
+
+

Implemented Interfaces

+

+GZlibCompressor implements + GConverter.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GZlibCompressor is an implementation of GConverter that +compresses data using zlib.

+
+
+

Functions

+
+

g_zlib_compressor_new ()

+
GZlibCompressor *
+g_zlib_compressor_new (GZlibCompressorFormat format,
+                       int level);
+

Creates a new GZlibCompressor.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format

The format to use for the compressed data

 

level

compression level (0-9), -1 for default

 
+
+
+

Returns

+

a new GZlibCompressor

+
+

Since: 2.24

+
+
+
+

g_zlib_compressor_get_file_info ()

+
GFileInfo *
+g_zlib_compressor_get_file_info (GZlibCompressor *compressor);
+

Returns the “file-info” property.

+
+

Parameters

+
+++++ + + + + + +

compressor

a GZlibCompressor

 
+
+
+

Returns

+

a GFileInfo, or NULL.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_zlib_compressor_set_file_info ()

+
void
+g_zlib_compressor_set_file_info (GZlibCompressor *compressor,
+                                 GFileInfo *file_info);
+

Sets file_info + in compressor +. If non-NULL, and compressor +'s +“format” property is G_ZLIB_COMPRESSOR_FORMAT_GZIP, +it will be used to set the file name and modification time in +the GZIP header of the compressed data.

+

Note: it is an error to call this function while a compression is in +progress; it may only be called immediately after creation of compressor +, +or after resetting it with g_converter_reset().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

compressor

a GZlibCompressor

 

file_info

a GFileInfo.

[allow-none]
+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GZlibCompressor

+
typedef struct _GZlibCompressor GZlibCompressor;
+

Zlib decompression

+
+
+
+

enum GZlibCompressorFormat

+

Used to select the type of data format to use for GZlibDecompressor +and GZlibCompressor.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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

+
 
+
+

Since: 2.24

+
+
+
+

Property Details

+
+

The “file-info” property

+
  “file-info”                GFileInfo *
+

If set to a non-NULL GFileInfo object, and “format” is +G_ZLIB_COMPRESSOR_FORMAT_GZIP, the compressor will write the file name +and modification time from the file info to the GZIP header.

+

Flags: Read / Write

+

Since: 2.26

+
+
+
+

The “format” property

+
  “format”                   GZlibCompressorFormat
+

The format of the compressed data.

+

Flags: Read / Write / Construct Only

+

Default value: G_ZLIB_COMPRESSOR_FORMAT_ZLIB

+
+
+
+

The “level” property

+
  “level”                    gint
+

The level of compression from 0 (no compression) to 9 (most compression), -1 for the default level.

+

Flags: Read / Write / Construct Only

+

Allowed values: [-1,9]

+

Default value: -1

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/GZlibDecompressor.html b/docs/reference/gio/html/GZlibDecompressor.html new file mode 100644 index 0000000..bbf498b --- /dev/null +++ b/docs/reference/gio/html/GZlibDecompressor.html @@ -0,0 +1,218 @@ + + + + +GZlibDecompressor: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GZlibDecompressor

+

GZlibDecompressor — Zlib decompressor

+
+
+

Functions

+
++++ + + + + + + + + + + +
+GZlibDecompressor * + +g_zlib_decompressor_new () +
+GFileInfo * + +g_zlib_decompressor_get_file_info () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + +
+GFileInfo *file-infoRead
GZlibCompressorFormatformatRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GZlibDecompressor
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GZlibDecompressor
+
+
+
+

Implemented Interfaces

+

+GZlibDecompressor implements + GConverter.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GZlibDecompressor is an implementation of GConverter that +decompresses data compressed with zlib.

+
+
+

Functions

+
+

g_zlib_decompressor_new ()

+
GZlibDecompressor *
+g_zlib_decompressor_new (GZlibCompressorFormat format);
+

Creates a new GZlibDecompressor.

+
+

Parameters

+
+++++ + + + + + +

format

The format to use for the compressed data

 
+
+
+

Returns

+

a new GZlibDecompressor

+
+

Since: 2.24

+
+
+
+

g_zlib_decompressor_get_file_info ()

+
GFileInfo *
+g_zlib_decompressor_get_file_info (GZlibDecompressor *decompressor);
+

Retrieves the GFileInfo constructed from the GZIP header data +of compressed data processed by compressor +, or NULL if decompressor +'s +“format” property is not G_ZLIB_COMPRESSOR_FORMAT_GZIP, +or the header data was not fully processed yet, or it not present in the +data stream at all.

+
+

Parameters

+
+++++ + + + + + +

decompressor

a GZlibDecompressor

 
+
+
+

Returns

+

a GFileInfo, or NULL.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GZlibDecompressor

+
typedef struct _GZlibDecompressor GZlibDecompressor;
+

Zlib decompression

+
+
+
+

Property Details

+
+

The “file-info” property

+
  “file-info”                GFileInfo *
+

A GFileInfo containing the information found in the GZIP header +of the data stream processed, or NULL if the header was not yet +fully processed, is not present at all, or the compressor's +“format” property is not G_ZLIB_COMPRESSOR_FORMAT_GZIP.

+

Flags: Read

+

Since: 2.26

+
+
+
+

The “format” property

+
  “format”                   GZlibCompressorFormat
+

The format of the compressed data.

+

Flags: Read / Write / Construct Only

+

Default value: G_ZLIB_COMPRESSOR_FORMAT_ZLIB

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/annotation-glossary.html b/docs/reference/gio/html/annotation-glossary.html new file mode 100644 index 0000000..83fbe79 --- /dev/null +++ b/docs/reference/gio/html/annotation-glossary.html @@ -0,0 +1,91 @@ + + + + +Annotation Glossary: GIO Reference Manual + + + + + + + + + + + + + + + +
+

+Annotation Glossary

+

A

+
allow-none
+

NULL is OK, both for passing and for returning.

+
array
+

Parameter points to an array of items.

+

C

+
closure
+

This parameter is a 'user_data', for callbacks; many bindings can pass NULL here.

+

E

+
element-type
+

Generics and defining elements of containers and arrays.

+

I

+
in
+

Parameter for input. Default is transfer none.

+
inout
+

Parameter for input and for returning results. Default is transfer full.

+

N

+
nullable
+

NULL may be passed as the value in, out, in-out; or as a return value.

+

O

+
optional
+

NULL may be passed instead of a pointer to a location.

+
out
+

Parameter for returning results. Default is transfer full.

+
out callee-allocates
+

Out parameter, where caller must allocate storage.

+
out caller-allocates
+

Out parameter, where caller must allocate storage.

+

R

+
rename-to
+

Rename the original symbol's name to SYMBOL.

+

S

+
scope async
+

The callback is valid until first called.

+
scope call
+

The callback is valid only during the call to the method.

+
skip
+

Exposed in C code, not necessarily available in other languages.

+

T

+
transfer container
+

Free data container after the code is done.

+
transfer full
+

Free data after the code is done.

+
transfer none
+

Don't free data after the code is done.

+
type
+

Override the parsed C type with given type.

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-18.html b/docs/reference/gio/html/api-index-2-18.html new file mode 100644 index 0000000..a442811 --- /dev/null +++ b/docs/reference/gio/html/api-index-2-18.html @@ -0,0 +1,147 @@ + + + + +Index of new symbols in 2.18: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.18

+

C

+
+g_content_type_from_mime_type, function in GContentType +
+
+
+g_content_type_guess_for_tree, function in GContentType +
+
+

D

+
+g_desktop_app_info_new_from_keyfile, function in Desktop file based GAppInfo +
+
+

E

+
+g_emblemed_icon_add_emblem, function in GEmblemedIcon +
+
+
+g_emblemed_icon_get_emblems, function in GEmblemedIcon +
+
+
+g_emblemed_icon_get_icon, function in GEmblemedIcon +
+
+
+g_emblemed_icon_new, function in GEmblemedIcon +
+
+
+GEmblemOrigin, enum in GEmblem +
+
+
+g_emblem_get_icon, function in GEmblem +
+
+
+g_emblem_get_origin, function in GEmblem +
+
+
+g_emblem_new, function in GEmblem +
+
+
+g_emblem_new_with_origin, function in GEmblem +
+
+

F

+
+g_file_enumerator_get_container, function in GFileEnumerator +
+
+
+g_file_make_directory_with_parents, function in GFile +
+
+
+g_file_monitor, function in GFile +
+
+
+g_file_query_file_type, function in GFile +
+
+

M

+
+g_memory_output_stream_get_data_size, function in GMemoryOutputStream +
+
+
+g_mount_guess_content_type, function in GMount +
+
+
+g_mount_guess_content_type_finish, function in GMount +
+
+
+g_mount_guess_content_type_sync, function in GMount +
+
+

T

+
+g_themed_icon_prepend_name, function in GThemedIcon +
+
+

U

+
+g_unix_mount_monitor_set_rate_limit, function in Unix Mounts +
+
+

V

+
+GVolumeMonitor::drive-eject-button, object signal in GVolumeMonitor +
+
+
+g_volume_get_activation_root, function in GVolume +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-20.html b/docs/reference/gio/html/api-index-2-20.html new file mode 100644 index 0000000..a66eda3 --- /dev/null +++ b/docs/reference/gio/html/api-index-2-20.html @@ -0,0 +1,156 @@ + + + + +Index of new symbols in 2.20: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.20

+

A

+
+g_app_info_can_delete, function in GAppInfo +
+
+
+g_app_info_delete, function in GAppInfo +
+
+
+g_app_info_get_commandline, function in GAppInfo +
+
+
+g_app_info_reset_type_associations, function in GAppInfo +
+
+

D

+
+g_data_input_stream_read_line_async, function in GDataInputStream +
+
+
+g_data_input_stream_read_line_finish, function in GDataInputStream +
+
+
+g_data_input_stream_read_until_async, function in GDataInputStream +
+
+
+g_data_input_stream_read_until_finish, function in GDataInputStream +
+
+

F

+
+G_FILE_ATTRIBUTE_PREVIEW_ICON, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE, macro in GFileInfo +
+
+

I

+
+g_icon_new_for_string, function in GIcon +
+
+
+g_icon_to_string, function in GIcon +
+
+

M

+
+GMountOperation::aborted, object signal in GMountOperation +
+
+
+g_mount_is_shadowed, function in GMount +
+
+
+g_mount_shadow, function in GMount +
+
+
+g_mount_unshadow, function in GMount +
+
+

S

+
+g_simple_async_result_is_valid, function in GSimpleAsyncResult +
+
+

U

+
+GUnixInputStream:close-fd, object property in GUnixInputStream +
+
+
+GUnixInputStream:fd, object property in GUnixInputStream +
+
+
+GUnixOutputStream:close-fd, object property in GUnixOutputStream +
+
+
+GUnixOutputStream:fd, object property in GUnixOutputStream +
+
+
+g_unix_input_stream_get_close_fd, function in GUnixInputStream +
+
+
+g_unix_input_stream_get_fd, function in GUnixInputStream +
+
+
+g_unix_input_stream_set_close_fd, function in GUnixInputStream +
+
+
+g_unix_output_stream_get_close_fd, function in GUnixOutputStream +
+
+
+g_unix_output_stream_get_fd, function in GUnixOutputStream +
+
+
+g_unix_output_stream_set_close_fd, function in GUnixOutputStream +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-22.html b/docs/reference/gio/html/api-index-2-22.html new file mode 100644 index 0000000..57f9d92 --- /dev/null +++ b/docs/reference/gio/html/api-index-2-22.html @@ -0,0 +1,1082 @@ + + + + +Index of new symbols in 2.22: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.22

+

A

+
+GAsyncInitable, struct in GAsyncInitable +
+
+
+GAsyncInitableIface, struct in GAsyncInitable +
+
+
+g_async_initable_init_async, function in GAsyncInitable +
+
+
+g_async_initable_init_finish, function in GAsyncInitable +
+
+
+g_async_initable_newv_async, function in GAsyncInitable +
+
+
+g_async_initable_new_async, function in GAsyncInitable +
+
+
+g_async_initable_new_finish, function in GAsyncInitable +
+
+
+g_async_initable_new_valist_async, function in GAsyncInitable +
+
+

C

+
+g_cancellable_connect, function in GCancellable +
+
+
+g_cancellable_disconnect, function in GCancellable +
+
+
+g_cancellable_make_pollfd, function in GCancellable +
+
+
+g_cancellable_release_fd, function in GCancellable +
+
+

D

+
+GDrive::stop-button, object signal in GDrive +
+
+
+GDriveStartFlags, enum in GDrive +
+
+
+GDriveStartStopType, enum in GDrive +
+
+
+g_drive_can_start, function in GDrive +
+
+
+g_drive_can_start_degraded, function in GDrive +
+
+
+g_drive_can_stop, function in GDrive +
+
+
+g_drive_eject_with_operation, function in GDrive +
+
+
+g_drive_eject_with_operation_finish, function in GDrive +
+
+
+g_drive_get_start_stop_type, function in GDrive +
+
+
+g_drive_start, function in GDrive +
+
+
+g_drive_start_finish, function in GDrive +
+
+
+g_drive_stop, function in GDrive +
+
+
+g_drive_stop_finish, function in GDrive +
+
+

F

+
+G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE, macro in GFileInfo +
+
+
+g_file_create_readwrite, function in GFile +
+
+
+g_file_create_readwrite_async, function in GFile +
+
+
+g_file_create_readwrite_finish, function in GFile +
+
+
+g_file_eject_mountable_with_operation, function in GFile +
+
+
+g_file_eject_mountable_with_operation_finish, function in GFile +
+
+
+g_file_info_get_attribute_stringv, function in GFileInfo +
+
+
+g_file_info_has_namespace, function in GFileInfo +
+
+
+g_file_info_set_attribute_status, function in GFileInfo +
+
+
+g_file_io_stream_get_etag, function in GFileIOStream +
+
+
+g_file_io_stream_query_info, function in GFileIOStream +
+
+
+g_file_io_stream_query_info_async, function in GFileIOStream +
+
+
+g_file_io_stream_query_info_finish, function in GFileIOStream +
+
+
+g_file_open_readwrite, function in GFile +
+
+
+g_file_open_readwrite_async, function in GFile +
+
+
+g_file_open_readwrite_finish, function in GFile +
+
+
+g_file_poll_mountable, function in GFile +
+
+
+g_file_poll_mountable_finish, function in GFile +
+
+
+g_file_replace_readwrite, function in GFile +
+
+
+g_file_replace_readwrite_async, function in GFile +
+
+
+g_file_replace_readwrite_finish, function in GFile +
+
+
+g_file_start_mountable, function in GFile +
+
+
+g_file_start_mountable_finish, function in GFile +
+
+
+g_file_stop_mountable, function in GFile +
+
+
+g_file_stop_mountable_finish, function in GFile +
+
+
+g_file_supports_thread_contexts, function in GFile +
+
+
+g_file_unmount_mountable_with_operation, function in GFile +
+
+
+g_file_unmount_mountable_with_operation_finish, function in GFile +
+
+

I

+
+GInetAddress:is-any, object property in GInetAddress +
+
+
+GInetAddress:is-link-local, object property in GInetAddress +
+
+
+GInetAddress:is-loopback, object property in GInetAddress +
+
+
+GInetAddress:is-mc-global, object property in GInetAddress +
+
+
+GInetAddress:is-mc-link-local, object property in GInetAddress +
+
+
+GInetAddress:is-mc-node-local, object property in GInetAddress +
+
+
+GInetAddress:is-mc-org-local, object property in GInetAddress +
+
+
+GInetAddress:is-mc-site-local, object property in GInetAddress +
+
+
+GInetAddress:is-multicast, object property in GInetAddress +
+
+
+GInetAddress:is-site-local, object property in GInetAddress +
+
+
+g_inet_address_get_family, function in GInetAddress +
+
+
+g_inet_address_get_is_any, function in GInetAddress +
+
+
+g_inet_address_get_is_link_local, function in GInetAddress +
+
+
+g_inet_address_get_is_loopback, function in GInetAddress +
+
+
+g_inet_address_get_is_mc_global, function in GInetAddress +
+
+
+g_inet_address_get_is_mc_link_local, function in GInetAddress +
+
+
+g_inet_address_get_is_mc_node_local, function in GInetAddress +
+
+
+g_inet_address_get_is_mc_org_local, function in GInetAddress +
+
+
+g_inet_address_get_is_mc_site_local, function in GInetAddress +
+
+
+g_inet_address_get_is_multicast, function in GInetAddress +
+
+
+g_inet_address_get_is_site_local, function in GInetAddress +
+
+
+g_inet_address_get_native_size, function in GInetAddress +
+
+
+g_inet_address_new_any, function in GInetAddress +
+
+
+g_inet_address_new_from_bytes, function in GInetAddress +
+
+
+g_inet_address_new_from_string, function in GInetAddress +
+
+
+g_inet_address_new_loopback, function in GInetAddress +
+
+
+g_inet_address_to_bytes, function in GInetAddress +
+
+
+g_inet_address_to_string, function in GInetAddress +
+
+
+g_inet_socket_address_get_address, function in GInetSocketAddress +
+
+
+g_inet_socket_address_get_port, function in GInetSocketAddress +
+
+
+g_inet_socket_address_new, function in GInetSocketAddress +
+
+
+GInitable, struct in GInitable +
+
+
+GInitableIface, struct in GInitable +
+
+
+g_initable_init, function in GInitable +
+
+
+g_initable_new, function in GInitable +
+
+
+g_initable_newv, function in GInitable +
+
+
+g_initable_new_valist, function in GInitable +
+
+
+GInputVector, struct in GSocket +
+
+
+g_io_stream_clear_pending, function in GIOStream +
+
+
+g_io_stream_close, function in GIOStream +
+
+
+g_io_stream_close_async, function in GIOStream +
+
+
+g_io_stream_close_finish, function in GIOStream +
+
+
+g_io_stream_get_input_stream, function in GIOStream +
+
+
+g_io_stream_get_output_stream, function in GIOStream +
+
+
+g_io_stream_has_pending, function in GIOStream +
+
+
+g_io_stream_is_closed, function in GIOStream +
+
+
+g_io_stream_set_pending, function in GIOStream +
+
+

M

+
+GMount::pre-unmount, object signal in GMount +
+
+
+GMountOperation::show-processes, object signal in GMountOperation +
+
+
+g_mount_eject_with_operation, function in GMount +
+
+
+g_mount_eject_with_operation_finish, function in GMount +
+
+
+g_mount_unmount_with_operation, function in GMount +
+
+
+g_mount_unmount_with_operation_finish, function in GMount +
+
+

N

+
+g_network_address_get_hostname, function in GNetworkAddress +
+
+
+g_network_address_get_port, function in GNetworkAddress +
+
+
+g_network_address_new, function in GNetworkAddress +
+
+
+g_network_address_parse, function in GNetworkAddress +
+
+
+g_network_service_get_domain, function in GNetworkService +
+
+
+g_network_service_get_protocol, function in GNetworkService +
+
+
+g_network_service_get_service, function in GNetworkService +
+
+
+g_network_service_new, function in GNetworkService +
+
+

O

+
+GOutputVector, struct in GSocket +
+
+

R

+
+GResolverError, enum in GResolver +
+
+
+g_resolver_free_addresses, function in GResolver +
+
+
+g_resolver_free_targets, function in GResolver +
+
+
+g_resolver_get_default, function in GResolver +
+
+
+g_resolver_lookup_by_address, function in GResolver +
+
+
+g_resolver_lookup_by_address_async, function in GResolver +
+
+
+g_resolver_lookup_by_address_finish, function in GResolver +
+
+
+g_resolver_lookup_by_name, function in GResolver +
+
+
+g_resolver_lookup_by_name_async, function in GResolver +
+
+
+g_resolver_lookup_by_name_finish, function in GResolver +
+
+
+g_resolver_lookup_service, function in GResolver +
+
+
+g_resolver_lookup_service_async, function in GResolver +
+
+
+g_resolver_lookup_service_finish, function in GResolver +
+
+
+g_resolver_set_default, function in GResolver +
+
+

S

+
+GSocket, struct in GSocket +
+
+
+GSocketClient, struct in GSocketClient +
+
+
+GSocketConnection, struct in GSocketConnection +
+
+
+GSocketFamily, enum in GSocketAddress +
+
+
+GSocketListener, struct in GSocketListener +
+
+
+GSocketMsgFlags, enum in GSocket +
+
+
+GSocketProtocol, enum in GSocket +
+
+
+GSocketService, struct in GSocketService +
+
+
+GSocketService::incoming, object signal in GSocketService +
+
+
+GSocketSourceFunc, user_function in GSocket +
+
+
+GSocketType, enum in GSocket +
+
+
+g_socket_accept, function in GSocket +
+
+
+g_socket_address_get_family, function in GSocketAddress +
+
+
+g_socket_address_get_native_size, function in GSocketAddress +
+
+
+g_socket_address_new_from_native, function in GSocketAddress +
+
+
+g_socket_address_to_native, function in GSocketAddress +
+
+
+g_socket_bind, function in GSocket +
+
+
+g_socket_check_connect_result, function in GSocket +
+
+
+g_socket_client_connect, function in GSocketClient +
+
+
+g_socket_client_connect_async, function in GSocketClient +
+
+
+g_socket_client_connect_finish, function in GSocketClient +
+
+
+g_socket_client_connect_to_host, function in GSocketClient +
+
+
+g_socket_client_connect_to_host_async, function in GSocketClient +
+
+
+g_socket_client_connect_to_host_finish, function in GSocketClient +
+
+
+g_socket_client_connect_to_service_async, function in GSocketClient +
+
+
+g_socket_client_connect_to_service_finish, function in GSocketClient +
+
+
+g_socket_client_get_family, function in GSocketClient +
+
+
+g_socket_client_get_local_address, function in GSocketClient +
+
+
+g_socket_client_get_protocol, function in GSocketClient +
+
+
+g_socket_client_get_socket_type, function in GSocketClient +
+
+
+g_socket_client_new, function in GSocketClient +
+
+
+g_socket_client_set_family, function in GSocketClient +
+
+
+g_socket_client_set_local_address, function in GSocketClient +
+
+
+g_socket_client_set_protocol, function in GSocketClient +
+
+
+g_socket_client_set_socket_type, function in GSocketClient +
+
+
+g_socket_close, function in GSocket +
+
+
+g_socket_condition_check, function in GSocket +
+
+
+g_socket_condition_wait, function in GSocket +
+
+
+g_socket_connect, function in GSocket +
+
+
+g_socket_connectable_enumerate, function in GSocketConnectable +
+
+
+g_socket_connection_factory_create_connection, function in GSocketConnection +
+
+
+g_socket_connection_factory_lookup_type, function in GSocketConnection +
+
+
+g_socket_connection_factory_register_type, function in GSocketConnection +
+
+
+g_socket_connection_get_local_address, function in GSocketConnection +
+
+
+g_socket_connection_get_remote_address, function in GSocketConnection +
+
+
+g_socket_connection_get_socket, function in GSocketConnection +
+
+
+g_socket_control_message_deserialize, function in GSocketControlMessage +
+
+
+g_socket_control_message_get_level, function in GSocketControlMessage +
+
+
+g_socket_control_message_get_msg_type, function in GSocketControlMessage +
+
+
+g_socket_control_message_get_size, function in GSocketControlMessage +
+
+
+g_socket_control_message_serialize, function in GSocketControlMessage +
+
+
+g_socket_create_source, function in GSocket +
+
+
+g_socket_get_blocking, function in GSocket +
+
+
+g_socket_get_family, function in GSocket +
+
+
+g_socket_get_fd, function in GSocket +
+
+
+g_socket_get_keepalive, function in GSocket +
+
+
+g_socket_get_listen_backlog, function in GSocket +
+
+
+g_socket_get_local_address, function in GSocket +
+
+
+g_socket_get_protocol, function in GSocket +
+
+
+g_socket_get_remote_address, function in GSocket +
+
+
+g_socket_get_socket_type, function in GSocket +
+
+
+g_socket_is_closed, function in GSocket +
+
+
+g_socket_is_connected, function in GSocket +
+
+
+g_socket_listen, function in GSocket +
+
+
+g_socket_listener_accept, function in GSocketListener +
+
+
+g_socket_listener_accept_async, function in GSocketListener +
+
+
+g_socket_listener_accept_finish, function in GSocketListener +
+
+
+g_socket_listener_accept_socket, function in GSocketListener +
+
+
+g_socket_listener_accept_socket_async, function in GSocketListener +
+
+
+g_socket_listener_accept_socket_finish, function in GSocketListener +
+
+
+g_socket_listener_add_address, function in GSocketListener +
+
+
+g_socket_listener_add_inet_port, function in GSocketListener +
+
+
+g_socket_listener_add_socket, function in GSocketListener +
+
+
+g_socket_listener_close, function in GSocketListener +
+
+
+g_socket_listener_new, function in GSocketListener +
+
+
+g_socket_listener_set_backlog, function in GSocketListener +
+
+
+g_socket_new, function in GSocket +
+
+
+g_socket_new_from_fd, function in GSocket +
+
+
+g_socket_receive, function in GSocket +
+
+
+g_socket_receive_from, function in GSocket +
+
+
+g_socket_receive_message, function in GSocket +
+
+
+g_socket_send, function in GSocket +
+
+
+g_socket_send_message, function in GSocket +
+
+
+g_socket_send_to, function in GSocket +
+
+
+g_socket_service_is_active, function in GSocketService +
+
+
+g_socket_service_new, function in GSocketService +
+
+
+g_socket_service_start, function in GSocketService +
+
+
+g_socket_service_stop, function in GSocketService +
+
+
+g_socket_set_blocking, function in GSocket +
+
+
+g_socket_set_keepalive, function in GSocket +
+
+
+g_socket_set_listen_backlog, function in GSocket +
+
+
+g_socket_shutdown, function in GSocket +
+
+
+g_socket_speaks_ipv4, function in GSocket +
+
+
+g_srv_target_copy, function in GSrvTarget +
+
+
+g_srv_target_free, function in GSrvTarget +
+
+
+g_srv_target_get_hostname, function in GSrvTarget +
+
+
+g_srv_target_get_port, function in GSrvTarget +
+
+
+g_srv_target_get_priority, function in GSrvTarget +
+
+
+g_srv_target_get_weight, function in GSrvTarget +
+
+
+g_srv_target_list_sort, function in GSrvTarget +
+
+
+g_srv_target_new, function in GSrvTarget +
+
+

T

+
+GTcpConnection, struct in GTcpConnection +
+
+
+g_tcp_connection_get_graceful_disconnect, function in GTcpConnection +
+
+
+g_tcp_connection_set_graceful_disconnect, function in GTcpConnection +
+
+
+GThreadedSocketService, struct in GThreadedSocketService +
+
+
+g_threaded_socket_service_new, function in GThreadedSocketService +
+
+

U

+
+g_unix_connection_receive_fd, function in GUnixConnection +
+
+
+g_unix_connection_send_fd, function in GUnixConnection +
+
+
+g_unix_fd_message_append_fd, function in GUnixFDMessage +
+
+
+g_unix_fd_message_new, function in GUnixFDMessage +
+
+
+g_unix_fd_message_steal_fds, function in GUnixFDMessage +
+
+
+g_unix_socket_address_abstract_names_supported, function in GUnixSocketAddress +
+
+
+g_unix_socket_address_get_is_abstract, function in GUnixSocketAddress +
+
+
+g_unix_socket_address_get_path, function in GUnixSocketAddress +
+
+
+g_unix_socket_address_get_path_len, function in GUnixSocketAddress +
+
+
+g_unix_socket_address_new, function in GUnixSocketAddress +
+
+

V

+
+GVolumeMonitor::drive-stop-button, object signal in GVolumeMonitor +
+
+
+g_volume_eject_with_operation, function in GVolume +
+
+
+g_volume_eject_with_operation_finish, function in GVolume +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-24.html b/docs/reference/gio/html/api-index-2-24.html new file mode 100644 index 0000000..ba0a9ea --- /dev/null +++ b/docs/reference/gio/html/api-index-2-24.html @@ -0,0 +1,217 @@ + + + + +Index of new symbols in 2.24: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.24

+

A

+
+g_app_info_get_display_name, function in GAppInfo +
+
+

C

+
+g_charset_converter_get_num_fallbacks, function in GCharsetConverter +
+
+
+g_charset_converter_get_use_fallback, function in GCharsetConverter +
+
+
+g_charset_converter_new, function in GCharsetConverter +
+
+
+g_charset_converter_set_use_fallback, function in GCharsetConverter +
+
+
+GConverter, struct in GConverter +
+
+
+GConverterFlags, enum in GConverter +
+
+
+GConverterIface, struct in GConverter +
+
+
+GConverterResult, enum in GConverter +
+
+
+g_converter_convert, function in GConverter +
+
+
+g_converter_input_stream_get_converter, function in GConverterInputstream +
+
+
+g_converter_output_stream_get_converter, function in GConverterOutputstream +
+
+
+g_converter_reset, function in GConverter +
+
+

D

+
+g_data_input_stream_read_upto_finish, function in GDataInputStream +
+
+
+g_desktop_app_info_get_filename, function in Desktop file based GAppInfo +
+
+

F

+
+G_FILE_ATTRIBUTE_TRASH_DELETION_DATE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_TRASH_ORIG_PATH, macro in GFileInfo +
+
+
+g_file_descriptor_based_get_fd, function in GFileDescriptorBased +
+
+
+g_file_has_parent, function in GFile +
+
+

I

+
+g_io_modules_scan_all_in_directory, function in GIOModule +
+
+
+g_io_module_query, function in GIOModule +
+
+

M

+
+GMemoryOutputStream:data, object property in GMemoryOutputStream +
+
+
+GMemoryOutputStream:data-size, object property in GMemoryOutputStream +
+
+
+GMemoryOutputStream:destroy-function, object property in GMemoryOutputStream +
+
+
+GMemoryOutputStream:realloc-function, object property in GMemoryOutputStream +
+
+
+GMemoryOutputStream:size, object property in GMemoryOutputStream +
+
+

O

+
+g_output_stream_is_closing, function in GOutputStream +
+
+

S

+
+g_socket_listener_add_any_inet_port, function in GSocketListener +
+
+

U

+
+g_unix_fd_list_append, function in GUnixFDList +
+
+
+g_unix_fd_list_get, function in GUnixFDList +
+
+
+g_unix_fd_list_get_length, function in GUnixFDList +
+
+
+g_unix_fd_list_new, function in GUnixFDList +
+
+
+g_unix_fd_list_new_from_array, function in GUnixFDList +
+
+
+g_unix_fd_list_peek_fds, function in GUnixFDList +
+
+
+g_unix_fd_list_steal_fds, function in GUnixFDList +
+
+
+g_unix_fd_message_get_fd_list, function in GUnixFDMessage +
+
+
+g_unix_fd_message_new_with_fd_list, function in GUnixFDMessage +
+
+

Z

+
+GZlibCompressorFormat, enum in GZlibCompressor +
+
+
+g_zlib_compressor_new, function in GZlibCompressor +
+
+
+g_zlib_decompressor_new, function in GZlibDecompressor +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-26.html b/docs/reference/gio/html/api-index-2-26.html new file mode 100644 index 0000000..bdec7fa --- /dev/null +++ b/docs/reference/gio/html/api-index-2-26.html @@ -0,0 +1,1651 @@ + + + + +Index of new symbols in 2.26: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.26

+

B

+
+GBusAcquiredCallback, user_function in Owning Bus Names +
+
+
+GBusNameAcquiredCallback, user_function in Owning Bus Names +
+
+
+GBusNameAppearedCallback, user_function in Watching Bus Names +
+
+
+GBusNameLostCallback, user_function in Owning Bus Names +
+
+
+GBusNameOwnerFlags, enum in Owning Bus Names +
+
+
+GBusNameVanishedCallback, user_function in Watching Bus Names +
+
+
+GBusNameWatcherFlags, enum in Watching Bus Names +
+
+
+GBusType, enum in GDBusConnection +
+
+
+g_bus_get, function in GDBusConnection +
+
+
+g_bus_get_finish, function in GDBusConnection +
+
+
+g_bus_get_sync, function in GDBusConnection +
+
+
+g_bus_own_name, function in Owning Bus Names +
+
+
+g_bus_own_name_on_connection, function in Owning Bus Names +
+
+
+g_bus_own_name_on_connection_with_closures, function in Owning Bus Names +
+
+
+g_bus_own_name_with_closures, function in Owning Bus Names +
+
+
+g_bus_unown_name, function in Owning Bus Names +
+
+
+g_bus_unwatch_name, function in Watching Bus Names +
+
+
+g_bus_watch_name, function in Watching Bus Names +
+
+
+g_bus_watch_name_on_connection, function in Watching Bus Names +
+
+
+g_bus_watch_name_on_connection_with_closures, function in Watching Bus Names +
+
+
+g_bus_watch_name_with_closures, function in Watching Bus Names +
+
+

C

+
+GCredentials, struct in GCredentials +
+
+
+GCredentialsType, enum in GCredentials +
+
+
+g_credentials_get_native, function in GCredentials +
+
+
+g_credentials_get_unix_user, function in GCredentials +
+
+
+g_credentials_is_same_user, function in GCredentials +
+
+
+g_credentials_new, function in GCredentials +
+
+
+g_credentials_set_native, function in GCredentials +
+
+
+g_credentials_set_unix_user, function in GCredentials +
+
+
+g_credentials_to_string, function in GCredentials +
+
+

D

+
+g_data_input_stream_read_upto, function in GDataInputStream +
+
+
+g_data_input_stream_read_upto_async, function in GDataInputStream +
+
+
+GDBusAnnotationInfo, struct in D-Bus Introspection Data +
+
+
+GDBusArgInfo, struct in D-Bus Introspection Data +
+
+
+GDBusAuthObserver, struct in GDBusAuthObserver +
+
+
+GDBusAuthObserver::authorize-authenticated-peer, object signal in GDBusAuthObserver +
+
+
+GDBusCallFlags, enum in GDBusConnection +
+
+
+GDBusCapabilityFlags, enum in GDBusConnection +
+
+
+GDBusConnection, struct in GDBusConnection +
+
+
+GDBusConnection::closed, object signal in GDBusConnection +
+
+
+GDBusConnection:address, object property in GDBusConnection +
+
+
+GDBusConnection:authentication-observer, object property in GDBusConnection +
+
+
+GDBusConnection:capabilities, object property in GDBusConnection +
+
+
+GDBusConnection:closed, object property in GDBusConnection +
+
+
+GDBusConnection:exit-on-close, object property in GDBusConnection +
+
+
+GDBusConnection:flags, object property in GDBusConnection +
+
+
+GDBusConnection:guid, object property in GDBusConnection +
+
+
+GDBusConnection:stream, object property in GDBusConnection +
+
+
+GDBusConnection:unique-name, object property in GDBusConnection +
+
+
+GDBusConnectionFlags, enum in GDBusConnection +
+
+
+GDBusError, enum in GDBusError +
+
+
+GDBusErrorEntry, struct in GDBusError +
+
+
+GDBusInterfaceGetPropertyFunc, user_function in GDBusConnection +
+
+
+GDBusInterfaceInfo, struct in D-Bus Introspection Data +
+
+
+GDBusInterfaceMethodCallFunc, user_function in GDBusConnection +
+
+
+GDBusInterfaceSetPropertyFunc, user_function in GDBusConnection +
+
+
+GDBusInterfaceVTable, struct in GDBusConnection +
+
+
+GDBusMessage, struct in GDBusMessage +
+
+
+GDBusMessageByteOrder, enum in GDBusMessage +
+
+
+GDBusMessageFilterFunction, user_function in GDBusConnection +
+
+
+GDBusMessageFlags, enum in GDBusMessage +
+
+
+GDBusMessageHeaderField, enum in GDBusMessage +
+
+
+GDBusMessageType, enum in GDBusMessage +
+
+
+GDBusMethodInfo, struct in D-Bus Introspection Data +
+
+
+GDBusMethodInvocation, struct in GDBusMethodInvocation +
+
+
+GDBusNodeInfo, struct in D-Bus Introspection Data +
+
+
+GDBusPropertyInfo, struct in D-Bus Introspection Data +
+
+
+GDBusPropertyInfoFlags, enum in D-Bus Introspection Data +
+
+
+GDBusProxy, struct in GDBusProxy +
+
+
+GDBusProxy::g-properties-changed, object signal in GDBusProxy +
+
+
+GDBusProxy::g-signal, object signal in GDBusProxy +
+
+
+GDBusProxy:g-bus-type, object property in GDBusProxy +
+
+
+GDBusProxy:g-connection, object property in GDBusProxy +
+
+
+GDBusProxy:g-default-timeout, object property in GDBusProxy +
+
+
+GDBusProxy:g-flags, object property in GDBusProxy +
+
+
+GDBusProxy:g-interface-info, object property in GDBusProxy +
+
+
+GDBusProxy:g-interface-name, object property in GDBusProxy +
+
+
+GDBusProxy:g-name, object property in GDBusProxy +
+
+
+GDBusProxy:g-name-owner, object property in GDBusProxy +
+
+
+GDBusProxy:g-object-path, object property in GDBusProxy +
+
+
+GDBusProxyClass, struct in GDBusProxy +
+
+
+GDBusProxyFlags, enum in GDBusProxy +
+
+
+GDBusSendMessageFlags, enum in GDBusConnection +
+
+
+GDBusServer, struct in GDBusServer +
+
+
+GDBusServer::new-connection, object signal in GDBusServer +
+
+
+GDBusServer:active, object property in GDBusServer +
+
+
+GDBusServer:address, object property in GDBusServer +
+
+
+GDBusServer:authentication-observer, object property in GDBusServer +
+
+
+GDBusServer:client-address, object property in GDBusServer +
+
+
+GDBusServer:flags, object property in GDBusServer +
+
+
+GDBusServer:guid, object property in GDBusServer +
+
+
+GDBusServerFlags, enum in GDBusServer +
+
+
+GDBusSignalCallback, user_function in GDBusConnection +
+
+
+GDBusSignalFlags, enum in GDBusConnection +
+
+
+GDBusSignalInfo, struct in D-Bus Introspection Data +
+
+
+GDBusSubtreeDispatchFunc, user_function in GDBusConnection +
+
+
+GDBusSubtreeEnumerateFunc, user_function in GDBusConnection +
+
+
+GDBusSubtreeFlags, enum in GDBusConnection +
+
+
+GDBusSubtreeIntrospectFunc, user_function in GDBusConnection +
+
+
+GDBusSubtreeVTable, struct in GDBusConnection +
+
+
+g_dbus_address_get_for_bus_sync, function in D-Bus Addresses +
+
+
+g_dbus_address_get_stream, function in D-Bus Addresses +
+
+
+g_dbus_address_get_stream_finish, function in D-Bus Addresses +
+
+
+g_dbus_address_get_stream_sync, function in D-Bus Addresses +
+
+
+g_dbus_annotation_info_lookup, function in D-Bus Introspection Data +
+
+
+g_dbus_annotation_info_ref, function in D-Bus Introspection Data +
+
+
+g_dbus_annotation_info_unref, function in D-Bus Introspection Data +
+
+
+g_dbus_arg_info_ref, function in D-Bus Introspection Data +
+
+
+g_dbus_arg_info_unref, function in D-Bus Introspection Data +
+
+
+g_dbus_auth_observer_authorize_authenticated_peer, function in GDBusAuthObserver +
+
+
+g_dbus_auth_observer_new, function in GDBusAuthObserver +
+
+
+g_dbus_connection_add_filter, function in GDBusConnection +
+
+
+g_dbus_connection_call, function in GDBusConnection +
+
+
+g_dbus_connection_call_finish, function in GDBusConnection +
+
+
+g_dbus_connection_call_sync, function in GDBusConnection +
+
+
+g_dbus_connection_close, function in GDBusConnection +
+
+
+g_dbus_connection_close_finish, function in GDBusConnection +
+
+
+g_dbus_connection_close_sync, function in GDBusConnection +
+
+
+g_dbus_connection_emit_signal, function in GDBusConnection +
+
+
+g_dbus_connection_flush, function in GDBusConnection +
+
+
+g_dbus_connection_flush_finish, function in GDBusConnection +
+
+
+g_dbus_connection_flush_sync, function in GDBusConnection +
+
+
+g_dbus_connection_get_capabilities, function in GDBusConnection +
+
+
+g_dbus_connection_get_exit_on_close, function in GDBusConnection +
+
+
+g_dbus_connection_get_guid, function in GDBusConnection +
+
+
+g_dbus_connection_get_peer_credentials, function in GDBusConnection +
+
+
+g_dbus_connection_get_stream, function in GDBusConnection +
+
+
+g_dbus_connection_get_unique_name, function in GDBusConnection +
+
+
+g_dbus_connection_is_closed, function in GDBusConnection +
+
+
+g_dbus_connection_new, function in GDBusConnection +
+
+
+g_dbus_connection_new_finish, function in GDBusConnection +
+
+
+g_dbus_connection_new_for_address, function in GDBusConnection +
+
+
+g_dbus_connection_new_for_address_finish, function in GDBusConnection +
+
+
+g_dbus_connection_new_for_address_sync, function in GDBusConnection +
+
+
+g_dbus_connection_new_sync, function in GDBusConnection +
+
+
+g_dbus_connection_register_object, function in GDBusConnection +
+
+
+g_dbus_connection_register_subtree, function in GDBusConnection +
+
+
+g_dbus_connection_remove_filter, function in GDBusConnection +
+
+
+g_dbus_connection_send_message, function in GDBusConnection +
+
+
+g_dbus_connection_send_message_with_reply, function in GDBusConnection +
+
+
+g_dbus_connection_send_message_with_reply_finish, function in GDBusConnection +
+
+
+g_dbus_connection_send_message_with_reply_sync, function in GDBusConnection +
+
+
+g_dbus_connection_set_exit_on_close, function in GDBusConnection +
+
+
+g_dbus_connection_signal_subscribe, function in GDBusConnection +
+
+
+g_dbus_connection_signal_unsubscribe, function in GDBusConnection +
+
+
+g_dbus_connection_start_message_processing, function in GDBusConnection +
+
+
+g_dbus_connection_unregister_object, function in GDBusConnection +
+
+
+g_dbus_connection_unregister_subtree, function in GDBusConnection +
+
+
+G_DBUS_ERROR, macro in GDBusError +
+
+
+g_dbus_error_encode_gerror, function in GDBusError +
+
+
+g_dbus_error_get_remote_error, function in GDBusError +
+
+
+g_dbus_error_is_remote_error, function in GDBusError +
+
+
+g_dbus_error_new_for_dbus_error, function in GDBusError +
+
+
+g_dbus_error_register_error, function in GDBusError +
+
+
+g_dbus_error_register_error_domain, function in GDBusError +
+
+
+g_dbus_error_set_dbus_error, function in GDBusError +
+
+
+g_dbus_error_set_dbus_error_valist, function in GDBusError +
+
+
+g_dbus_error_strip_remote_error, function in GDBusError +
+
+
+g_dbus_error_unregister_error, function in GDBusError +
+
+
+g_dbus_generate_guid, function in D-Bus Utilities +
+
+
+g_dbus_interface_info_generate_xml, function in D-Bus Introspection Data +
+
+
+g_dbus_interface_info_lookup_method, function in D-Bus Introspection Data +
+
+
+g_dbus_interface_info_lookup_property, function in D-Bus Introspection Data +
+
+
+g_dbus_interface_info_lookup_signal, function in D-Bus Introspection Data +
+
+
+g_dbus_interface_info_ref, function in D-Bus Introspection Data +
+
+
+g_dbus_interface_info_unref, function in D-Bus Introspection Data +
+
+
+g_dbus_is_address, function in D-Bus Addresses +
+
+
+g_dbus_is_guid, function in D-Bus Utilities +
+
+
+g_dbus_is_interface_name, function in D-Bus Utilities +
+
+
+g_dbus_is_member_name, function in D-Bus Utilities +
+
+
+g_dbus_is_name, function in D-Bus Utilities +
+
+
+g_dbus_is_supported_address, function in D-Bus Addresses +
+
+
+g_dbus_is_unique_name, function in D-Bus Utilities +
+
+
+g_dbus_message_bytes_needed, function in GDBusMessage +
+
+
+g_dbus_message_copy, function in GDBusMessage +
+
+
+g_dbus_message_get_arg0, function in GDBusMessage +
+
+
+g_dbus_message_get_body, function in GDBusMessage +
+
+
+g_dbus_message_get_destination, function in GDBusMessage +
+
+
+g_dbus_message_get_error_name, function in GDBusMessage +
+
+
+g_dbus_message_get_flags, function in GDBusMessage +
+
+
+g_dbus_message_get_header, function in GDBusMessage +
+
+
+g_dbus_message_get_header_fields, function in GDBusMessage +
+
+
+g_dbus_message_get_interface, function in GDBusMessage +
+
+
+g_dbus_message_get_locked, function in GDBusMessage +
+
+
+g_dbus_message_get_member, function in GDBusMessage +
+
+
+g_dbus_message_get_message_type, function in GDBusMessage +
+
+
+g_dbus_message_get_num_unix_fds, function in GDBusMessage +
+
+
+g_dbus_message_get_path, function in GDBusMessage +
+
+
+g_dbus_message_get_reply_serial, function in GDBusMessage +
+
+
+g_dbus_message_get_sender, function in GDBusMessage +
+
+
+g_dbus_message_get_serial, function in GDBusMessage +
+
+
+g_dbus_message_get_signature, function in GDBusMessage +
+
+
+g_dbus_message_get_unix_fd_list, function in GDBusMessage +
+
+
+g_dbus_message_lock, function in GDBusMessage +
+
+
+g_dbus_message_new, function in GDBusMessage +
+
+
+g_dbus_message_new_from_blob, function in GDBusMessage +
+
+
+g_dbus_message_new_method_call, function in GDBusMessage +
+
+
+g_dbus_message_new_method_error, function in GDBusMessage +
+
+
+g_dbus_message_new_method_error_literal, function in GDBusMessage +
+
+
+g_dbus_message_new_method_error_valist, function in GDBusMessage +
+
+
+g_dbus_message_new_method_reply, function in GDBusMessage +
+
+
+g_dbus_message_new_signal, function in GDBusMessage +
+
+
+g_dbus_message_print, function in GDBusMessage +
+
+
+g_dbus_message_set_body, function in GDBusMessage +
+
+
+g_dbus_message_set_destination, function in GDBusMessage +
+
+
+g_dbus_message_set_error_name, function in GDBusMessage +
+
+
+g_dbus_message_set_flags, function in GDBusMessage +
+
+
+g_dbus_message_set_header, function in GDBusMessage +
+
+
+g_dbus_message_set_interface, function in GDBusMessage +
+
+
+g_dbus_message_set_member, function in GDBusMessage +
+
+
+g_dbus_message_set_message_type, function in GDBusMessage +
+
+
+g_dbus_message_set_num_unix_fds, function in GDBusMessage +
+
+
+g_dbus_message_set_path, function in GDBusMessage +
+
+
+g_dbus_message_set_reply_serial, function in GDBusMessage +
+
+
+g_dbus_message_set_sender, function in GDBusMessage +
+
+
+g_dbus_message_set_serial, function in GDBusMessage +
+
+
+g_dbus_message_set_signature, function in GDBusMessage +
+
+
+g_dbus_message_set_unix_fd_list, function in GDBusMessage +
+
+
+g_dbus_message_to_blob, function in GDBusMessage +
+
+
+g_dbus_message_to_gerror, function in GDBusMessage +
+
+
+g_dbus_method_info_ref, function in D-Bus Introspection Data +
+
+
+g_dbus_method_info_unref, function in D-Bus Introspection Data +
+
+
+g_dbus_method_invocation_get_connection, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_interface_name, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_message, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_method_info, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_method_name, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_object_path, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_parameters, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_sender, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_user_data, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_return_dbus_error, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_return_error, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_return_error_literal, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_return_error_valist, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_return_gerror, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_return_value, function in GDBusMethodInvocation +
+
+
+g_dbus_node_info_generate_xml, function in D-Bus Introspection Data +
+
+
+g_dbus_node_info_lookup_interface, function in D-Bus Introspection Data +
+
+
+g_dbus_node_info_new_for_xml, function in D-Bus Introspection Data +
+
+
+g_dbus_node_info_ref, function in D-Bus Introspection Data +
+
+
+g_dbus_node_info_unref, function in D-Bus Introspection Data +
+
+
+g_dbus_property_info_ref, function in D-Bus Introspection Data +
+
+
+g_dbus_property_info_unref, function in D-Bus Introspection Data +
+
+
+g_dbus_proxy_call, function in GDBusProxy +
+
+
+g_dbus_proxy_call_finish, function in GDBusProxy +
+
+
+g_dbus_proxy_call_sync, function in GDBusProxy +
+
+
+g_dbus_proxy_get_cached_property, function in GDBusProxy +
+
+
+g_dbus_proxy_get_cached_property_names, function in GDBusProxy +
+
+
+g_dbus_proxy_get_connection, function in GDBusProxy +
+
+
+g_dbus_proxy_get_default_timeout, function in GDBusProxy +
+
+
+g_dbus_proxy_get_flags, function in GDBusProxy +
+
+
+g_dbus_proxy_get_interface_info, function in GDBusProxy +
+
+
+g_dbus_proxy_get_interface_name, function in GDBusProxy +
+
+
+g_dbus_proxy_get_name, function in GDBusProxy +
+
+
+g_dbus_proxy_get_name_owner, function in GDBusProxy +
+
+
+g_dbus_proxy_get_object_path, function in GDBusProxy +
+
+
+g_dbus_proxy_new, function in GDBusProxy +
+
+
+g_dbus_proxy_new_finish, function in GDBusProxy +
+
+
+g_dbus_proxy_new_for_bus, function in GDBusProxy +
+
+
+g_dbus_proxy_new_for_bus_finish, function in GDBusProxy +
+
+
+g_dbus_proxy_new_for_bus_sync, function in GDBusProxy +
+
+
+g_dbus_proxy_new_sync, function in GDBusProxy +
+
+
+g_dbus_proxy_set_cached_property, function in GDBusProxy +
+
+
+g_dbus_proxy_set_default_timeout, function in GDBusProxy +
+
+
+g_dbus_proxy_set_interface_info, function in GDBusProxy +
+
+
+g_dbus_server_get_client_address, function in GDBusServer +
+
+
+g_dbus_server_get_flags, function in GDBusServer +
+
+
+g_dbus_server_get_guid, function in GDBusServer +
+
+
+g_dbus_server_is_active, function in GDBusServer +
+
+
+g_dbus_server_new_sync, function in GDBusServer +
+
+
+g_dbus_server_start, function in GDBusServer +
+
+
+g_dbus_server_stop, function in GDBusServer +
+
+
+g_dbus_signal_info_ref, function in D-Bus Introspection Data +
+
+
+g_dbus_signal_info_unref, function in D-Bus Introspection Data +
+
+

I

+
+g_io_error_from_win32_error, function in GIOError +
+
+

M

+
+g_memory_output_stream_steal_data, function in GMemoryOutputStream +
+
+

N

+
+g_network_address_get_scheme, function in GNetworkAddress +
+
+
+g_network_address_parse_uri, function in GNetworkAddress +
+
+
+g_network_service_get_scheme, function in GNetworkService +
+
+
+g_network_service_set_scheme, function in GNetworkService +
+
+

P

+
+g_permission_acquire, function in GPermission +
+
+
+g_permission_acquire_async, function in GPermission +
+
+
+g_permission_acquire_finish, function in GPermission +
+
+
+g_permission_get_allowed, function in GPermission +
+
+
+g_permission_get_can_acquire, function in GPermission +
+
+
+g_permission_get_can_release, function in GPermission +
+
+
+g_permission_impl_update, function in GPermission +
+
+
+g_permission_release, function in GPermission +
+
+
+g_permission_release_async, function in GPermission +
+
+
+g_permission_release_finish, function in GPermission +
+
+
+GProxy, struct in GProxy +
+
+
+GProxyAddress, struct in GProxyAddress +
+
+
+GProxyAddressClass, struct in GProxyAddress +
+
+
+GProxyInterface, struct in GProxy +
+
+
+GProxyResolver, struct in GProxyResolver +
+
+
+g_proxy_address_get_destination_hostname, function in GProxyAddress +
+
+
+g_proxy_address_get_destination_port, function in GProxyAddress +
+
+
+g_proxy_address_get_password, function in GProxyAddress +
+
+
+g_proxy_address_get_protocol, function in GProxyAddress +
+
+
+g_proxy_address_get_username, function in GProxyAddress +
+
+
+g_proxy_address_new, function in GProxyAddress +
+
+
+g_proxy_connect, function in GProxy +
+
+
+g_proxy_connect_async, function in GProxy +
+
+
+g_proxy_connect_finish, function in GProxy +
+
+
+G_PROXY_EXTENSION_POINT_NAME, macro in GProxy +
+
+
+g_proxy_get_default_for_protocol, function in GProxy +
+
+
+g_proxy_resolver_get_default, function in GProxyResolver +
+
+
+g_proxy_resolver_is_supported, function in GProxyResolver +
+
+
+g_proxy_resolver_lookup, function in GProxyResolver +
+
+
+g_proxy_resolver_lookup_async, function in GProxyResolver +
+
+
+g_proxy_resolver_lookup_finish, function in GProxyResolver +
+
+
+g_proxy_supports_hostname, function in GProxy +
+
+

S

+
+g_settings_backend_changed, function in GSettingsBackend +
+
+
+g_settings_backend_changed_tree, function in GSettingsBackend +
+
+
+g_settings_backend_flatten_tree, function in GSettingsBackend +
+
+
+g_settings_backend_keys_changed, function in GSettingsBackend +
+
+
+g_settings_backend_path_changed, function in GSettingsBackend +
+
+
+g_settings_backend_path_writable_changed, function in GSettingsBackend +
+
+
+g_settings_backend_writable_changed, function in GSettingsBackend +
+
+
+g_settings_bind, function in GSettings +
+
+
+g_settings_bind_with_mapping, function in GSettings +
+
+
+g_settings_bind_writable, function in GSettings +
+
+
+g_settings_delay, function in GSettings +
+
+
+g_settings_get, function in GSettings +
+
+
+g_settings_get_boolean, function in GSettings +
+
+
+g_settings_get_child, function in GSettings +
+
+
+g_settings_get_double, function in GSettings +
+
+
+g_settings_get_enum, function in GSettings +
+
+
+g_settings_get_flags, function in GSettings +
+
+
+g_settings_get_has_unapplied, function in GSettings +
+
+
+g_settings_get_int, function in GSettings +
+
+
+g_settings_get_string, function in GSettings +
+
+
+g_settings_get_strv, function in GSettings +
+
+
+g_settings_get_value, function in GSettings +
+
+
+g_settings_is_writable, function in GSettings +
+
+
+g_settings_list_schemas, function in GSettings +
+
+
+g_settings_new, function in GSettings +
+
+
+g_settings_new_with_backend, function in GSettings +
+
+
+g_settings_new_with_backend_and_path, function in GSettings +
+
+
+g_settings_new_with_path, function in GSettings +
+
+
+g_settings_set, function in GSettings +
+
+
+g_settings_set_boolean, function in GSettings +
+
+
+g_settings_set_double, function in GSettings +
+
+
+g_settings_set_int, function in GSettings +
+
+
+g_settings_set_string, function in GSettings +
+
+
+g_settings_set_strv, function in GSettings +
+
+
+g_settings_set_value, function in GSettings +
+
+
+g_settings_unbind, function in GSettings +
+
+
+g_simple_permission_new, function in GSimplePermission +
+
+
+GSocket:timeout, object property in GSocket +
+
+
+g_socket_client_connect_to_uri, function in GSocketClient +
+
+
+g_socket_client_connect_to_uri_async, function in GSocketClient +
+
+
+g_socket_client_connect_to_uri_finish, function in GSocketClient +
+
+
+g_socket_client_get_enable_proxy, function in GSocketClient +
+
+
+g_socket_client_get_timeout, function in GSocketClient +
+
+
+g_socket_client_set_enable_proxy, function in GSocketClient +
+
+
+g_socket_client_set_timeout, function in GSocketClient +
+
+
+g_socket_connectable_proxy_enumerate, function in GSocketConnectable +
+
+
+g_socket_get_credentials, function in GSocket +
+
+
+g_socket_get_timeout, function in GSocket +
+
+
+g_socket_receive_with_blocking, function in GSocket +
+
+
+g_socket_send_with_blocking, function in GSocket +
+
+
+g_socket_set_timeout, function in GSocket +
+
+

T

+
+GTlsClientConnectionInterface, struct in GTlsClientConnection +
+
+
+GTlsServerConnectionInterface, struct in GTlsServerConnection +
+
+
+G_TYPE_DBUS_ANNOTATION_INFO, macro in D-Bus Introspection Data +
+
+
+G_TYPE_DBUS_ARG_INFO, macro in D-Bus Introspection Data +
+
+
+G_TYPE_DBUS_INTERFACE_INFO, macro in D-Bus Introspection Data +
+
+
+G_TYPE_DBUS_METHOD_INFO, macro in D-Bus Introspection Data +
+
+
+G_TYPE_DBUS_NODE_INFO, macro in D-Bus Introspection Data +
+
+
+G_TYPE_DBUS_PROPERTY_INFO, macro in D-Bus Introspection Data +
+
+
+G_TYPE_DBUS_SIGNAL_INFO, macro in D-Bus Introspection Data +
+
+

U

+
+GUnixCredentialsMessage, struct in GUnixCredentialsMessage +
+
+
+GUnixCredentialsMessage:credentials, object property in GUnixCredentialsMessage +
+
+
+GUnixCredentialsMessageClass, struct in GUnixCredentialsMessage +
+
+
+GUnixSocketAddressType, enum in GUnixSocketAddress +
+
+
+g_unix_connection_receive_credentials, function in GUnixConnection +
+
+
+g_unix_connection_send_credentials, function in GUnixConnection +
+
+
+g_unix_credentials_message_get_credentials, function in GUnixCredentialsMessage +
+
+
+g_unix_credentials_message_is_supported, function in GUnixCredentialsMessage +
+
+
+g_unix_credentials_message_new, function in GUnixCredentialsMessage +
+
+
+g_unix_credentials_message_new_with_credentials, function in GUnixCredentialsMessage +
+
+
+g_unix_socket_address_get_address_type, function in GUnixSocketAddress +
+
+
+g_unix_socket_address_new_with_type, function in GUnixSocketAddress +
+
+

W

+
+g_win32_input_stream_get_close_handle, function in GWin32InputStream +
+
+
+g_win32_input_stream_get_handle, function in GWin32InputStream +
+
+
+g_win32_input_stream_set_close_handle, function in GWin32InputStream +
+
+
+g_win32_output_stream_get_close_handle, function in GWin32OutputStream +
+
+
+g_win32_output_stream_get_handle, function in GWin32OutputStream +
+
+
+g_win32_output_stream_new, function in GWin32OutputStream +
+
+
+g_win32_output_stream_set_close_handle, function in GWin32OutputStream +
+
+

Z

+
+GZlibCompressor:file-info, object property in GZlibCompressor +
+
+
+GZlibDecompressor:file-info, object property in GZlibDecompressor +
+
+
+g_zlib_compressor_get_file_info, function in GZlibCompressor +
+
+
+g_zlib_compressor_set_file_info, function in GZlibCompressor +
+
+
+g_zlib_decompressor_get_file_info, function in GZlibDecompressor +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-28.html b/docs/reference/gio/html/api-index-2-28.html new file mode 100644 index 0000000..43c721c --- /dev/null +++ b/docs/reference/gio/html/api-index-2-28.html @@ -0,0 +1,718 @@ + + + + +Index of new symbols in 2.28: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.28

+

A

+
+GAction:enabled, object property in GAction +
+
+
+GAction:name, object property in GAction +
+
+
+GAction:parameter-type, object property in GAction +
+
+
+GAction:state, object property in GAction +
+
+
+GAction:state-type, object property in GAction +
+
+
+GActionGroup::action-added, object signal in GActionGroup +
+
+
+GActionGroup::action-enabled-changed, object signal in GActionGroup +
+
+
+GActionGroup::action-removed, object signal in GActionGroup +
+
+
+GActionGroup::action-state-changed, object signal in GActionGroup +
+
+
+GActionGroupInterface, struct in GActionGroup +
+
+
+GActionInterface, struct in GAction +
+
+
+g_action_activate, function in GAction +
+
+
+g_action_get_enabled, function in GAction +
+
+
+g_action_get_name, function in GAction +
+
+
+g_action_get_parameter_type, function in GAction +
+
+
+g_action_get_state, function in GAction +
+
+
+g_action_get_state_hint, function in GAction +
+
+
+g_action_get_state_type, function in GAction +
+
+
+g_action_group_action_added, function in GActionGroup +
+
+
+g_action_group_action_enabled_changed, function in GActionGroup +
+
+
+g_action_group_action_removed, function in GActionGroup +
+
+
+g_action_group_action_state_changed, function in GActionGroup +
+
+
+g_action_group_activate_action, function in GActionGroup +
+
+
+g_action_group_change_action_state, function in GActionGroup +
+
+
+g_action_group_get_action_enabled, function in GActionGroup +
+
+
+g_action_group_get_action_parameter_type, function in GActionGroup +
+
+
+g_action_group_get_action_state, function in GActionGroup +
+
+
+g_action_group_get_action_state_hint, function in GActionGroup +
+
+
+g_action_group_get_action_state_type, function in GActionGroup +
+
+
+g_action_group_has_action, function in GActionGroup +
+
+
+g_action_group_list_actions, function in GActionGroup +
+
+
+GApplication, struct in GApplication +
+
+
+GApplicationClass, struct in GApplication +
+
+
+GApplicationCommandLineClass, struct in GApplicationCommandLine +
+
+
+GApplicationFlags, enum in GApplication +
+
+
+g_application_activate, function in GApplication +
+
+
+g_application_command_line_getenv, function in GApplicationCommandLine +
+
+
+g_application_command_line_get_arguments, function in GApplicationCommandLine +
+
+
+g_application_command_line_get_cwd, function in GApplicationCommandLine +
+
+
+g_application_command_line_get_environ, function in GApplicationCommandLine +
+
+
+g_application_command_line_get_exit_status, function in GApplicationCommandLine +
+
+
+g_application_command_line_get_is_remote, function in GApplicationCommandLine +
+
+
+g_application_command_line_get_platform_data, function in GApplicationCommandLine +
+
+
+g_application_command_line_print, function in GApplicationCommandLine +
+
+
+g_application_command_line_printerr, function in GApplicationCommandLine +
+
+
+g_application_command_line_set_exit_status, function in GApplicationCommandLine +
+
+
+g_application_get_application_id, function in GApplication +
+
+
+g_application_get_flags, function in GApplication +
+
+
+g_application_get_inactivity_timeout, function in GApplication +
+
+
+g_application_get_is_registered, function in GApplication +
+
+
+g_application_get_is_remote, function in GApplication +
+
+
+g_application_open, function in GApplication +
+
+
+g_application_register, function in GApplication +
+
+
+g_application_run, function in GApplication +
+
+
+g_application_set_action_group, function in GApplication +
+
+
+g_application_set_application_id, function in GApplication +
+
+
+g_application_set_flags, function in GApplication +
+
+
+g_application_set_inactivity_timeout, function in GApplication +
+
+
+g_app_info_get_fallback_for_type, function in GAppInfo +
+
+
+g_app_info_get_recommended_for_type, function in GAppInfo +
+
+

C

+
+GCancellableSourceFunc, user_function in GCancellable +
+
+
+g_cancellable_source_new, function in GCancellable +
+
+

E

+
+g_emblemed_icon_clear_emblems, function in GEmblemedIcon +
+
+

I

+
+GIOStreamSpliceFlags, enum in GIOStream +
+
+
+g_io_stream_splice_async, function in GIOStream +
+
+
+g_io_stream_splice_finish, function in GIOStream +
+
+

M

+
+g_memory_settings_backend_new, function in GSettingsBackend +
+
+

N

+
+g_null_settings_backend_new, function in GSettingsBackend +
+
+

P

+
+GPollableInputStream, struct in GPollableInputStream +
+
+
+GPollableInputStreamInterface, struct in GPollableInputStream +
+
+
+GPollableOutputStream, struct in GPollableOutputStream +
+
+
+GPollableOutputStreamInterface, struct in GPollableOutputStream +
+
+
+GPollableSourceFunc, user_function in gpollableutils +
+
+
+g_pollable_input_stream_can_poll, function in GPollableInputStream +
+
+
+g_pollable_input_stream_create_source, function in GPollableInputStream +
+
+
+g_pollable_input_stream_is_readable, function in GPollableInputStream +
+
+
+g_pollable_output_stream_can_poll, function in GPollableOutputStream +
+
+
+g_pollable_output_stream_create_source, function in GPollableOutputStream +
+
+
+g_pollable_output_stream_is_writable, function in GPollableOutputStream +
+
+
+g_pollable_source_new, function in gpollableutils +
+
+

S

+
+GSettings:delay-apply, object property in GSettings +
+
+
+g_settings_backend_get_default, function in GSettingsBackend +
+
+
+g_settings_get_range, function in GSettings +
+
+
+g_settings_list_relocatable_schemas, function in GSettings +
+
+
+g_settings_range_check, function in GSettings +
+
+
+GSimpleAction::activate, object signal in GSimpleAction +
+
+
+GSimpleAction:enabled, object property in GSimpleAction +
+
+
+GSimpleAction:name, object property in GSimpleAction +
+
+
+GSimpleAction:parameter-type, object property in GSimpleAction +
+
+
+GSimpleAction:state, object property in GSimpleAction +
+
+
+GSimpleAction:state-type, object property in GSimpleAction +
+
+
+GSimpleActionGroup, struct in GSimpleActionGroup +
+
+
+g_simple_action_group_insert, function in GSimpleActionGroup +
+
+
+g_simple_action_group_lookup, function in GSimpleActionGroup +
+
+
+g_simple_action_group_new, function in GSimpleActionGroup +
+
+
+g_simple_action_group_remove, function in GSimpleActionGroup +
+
+
+g_simple_action_new, function in GSimpleAction +
+
+
+g_simple_action_new_stateful, function in GSimpleAction +
+
+
+g_simple_action_set_enabled, function in GSimpleAction +
+
+
+g_simple_async_report_take_gerror_in_idle, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_new_take_error, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_take_error, function in GSimpleAsyncResult +
+
+
+g_socket_client_get_tls, function in GSocketClient +
+
+
+g_socket_client_get_tls_validation_flags, function in GSocketClient +
+
+
+g_socket_client_set_tls, function in GSocketClient +
+
+
+g_socket_client_set_tls_validation_flags, function in GSocketClient +
+
+

T

+
+g_tcp_wrapper_connection_new, function in GTcpWrapperConnection +
+
+
+GTlsAuthenticationMode, enum in TLS Overview +
+
+
+GTlsBackend, struct in GTlsBackend +
+
+
+GTlsBackendInterface, struct in GTlsBackend +
+
+
+GTlsCertificate, struct in GTlsCertificate +
+
+
+GTlsCertificate:certificate, object property in GTlsCertificate +
+
+
+GTlsCertificate:certificate-pem, object property in GTlsCertificate +
+
+
+GTlsCertificate:issuer, object property in GTlsCertificate +
+
+
+GTlsCertificate:private-key, object property in GTlsCertificate +
+
+
+GTlsCertificate:private-key-pem, object property in GTlsCertificate +
+
+
+GTlsCertificateFlags, enum in TLS Overview +
+
+
+GTlsClientConnection, struct in GTlsClientConnection +
+
+
+GTlsClientConnection:accepted-cas, object property in GTlsClientConnection +
+
+
+GTlsClientConnection:server-identity, object property in GTlsClientConnection +
+
+
+GTlsClientConnection:use-ssl3, object property in GTlsClientConnection +
+
+
+GTlsClientConnection:validation-flags, object property in GTlsClientConnection +
+
+
+GTlsConnection, struct in GTlsConnection +
+
+
+GTlsConnection::accept-certificate, object signal in GTlsConnection +
+
+
+GTlsConnection:base-io-stream, object property in GTlsConnection +
+
+
+GTlsConnection:certificate, object property in GTlsConnection +
+
+
+GTlsConnection:peer-certificate, object property in GTlsConnection +
+
+
+GTlsConnection:peer-certificate-errors, object property in GTlsConnection +
+
+
+GTlsConnection:rehandshake-mode, object property in GTlsConnection +
+
+
+GTlsConnection:require-close-notify, object property in GTlsConnection +
+
+
+GTlsError, enum in TLS Overview +
+
+
+GTlsRehandshakeMode, enum in GTlsConnection +
+
+
+GTlsServerConnection, struct in GTlsServerConnection +
+
+
+GTlsServerConnection:authentication-mode, object property in GTlsServerConnection +
+
+
+g_tls_backend_get_certificate_type, function in GTlsBackend +
+
+
+g_tls_backend_get_client_connection_type, function in GTlsBackend +
+
+
+g_tls_backend_get_default, function in GTlsBackend +
+
+
+g_tls_backend_get_server_connection_type, function in GTlsBackend +
+
+
+g_tls_backend_supports_tls, function in GTlsBackend +
+
+
+g_tls_certificate_get_issuer, function in GTlsCertificate +
+
+
+g_tls_certificate_list_new_from_file, function in GTlsCertificate +
+
+
+g_tls_certificate_new_from_file, function in GTlsCertificate +
+
+
+g_tls_certificate_new_from_files, function in GTlsCertificate +
+
+
+g_tls_certificate_new_from_pem, function in GTlsCertificate +
+
+
+g_tls_certificate_verify, function in GTlsCertificate +
+
+
+g_tls_client_connection_get_accepted_cas, function in GTlsClientConnection +
+
+
+g_tls_client_connection_get_server_identity, function in GTlsClientConnection +
+
+
+g_tls_client_connection_get_use_ssl3, function in GTlsClientConnection +
+
+
+g_tls_client_connection_get_validation_flags, function in GTlsClientConnection +
+
+
+g_tls_client_connection_new, function in GTlsClientConnection +
+
+
+g_tls_client_connection_set_server_identity, function in GTlsClientConnection +
+
+
+g_tls_client_connection_set_use_ssl3, function in GTlsClientConnection +
+
+
+g_tls_client_connection_set_validation_flags, function in GTlsClientConnection +
+
+
+g_tls_connection_emit_accept_certificate, function in GTlsConnection +
+
+
+g_tls_connection_get_certificate, function in GTlsConnection +
+
+
+g_tls_connection_get_peer_certificate, function in GTlsConnection +
+
+
+g_tls_connection_get_peer_certificate_errors, function in GTlsConnection +
+
+
+g_tls_connection_get_rehandshake_mode, function in GTlsConnection +
+
+
+g_tls_connection_get_require_close_notify, function in GTlsConnection +
+
+
+g_tls_connection_handshake, function in GTlsConnection +
+
+
+g_tls_connection_handshake_async, function in GTlsConnection +
+
+
+g_tls_connection_handshake_finish, function in GTlsConnection +
+
+
+g_tls_connection_set_certificate, function in GTlsConnection +
+
+
+g_tls_connection_set_rehandshake_mode, function in GTlsConnection +
+
+
+g_tls_connection_set_require_close_notify, function in GTlsConnection +
+
+
+g_tls_server_connection_new, function in GTlsServerConnection +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-30.html b/docs/reference/gio/html/api-index-2-30.html new file mode 100644 index 0000000..711c564 --- /dev/null +++ b/docs/reference/gio/html/api-index-2-30.html @@ -0,0 +1,693 @@ + + + + +Index of new symbols in 2.30: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.30

+

A

+
+g_action_change_state, function in GAction +
+
+

D

+
+g_data_input_stream_read_line_finish_utf8, function in GDataInputStream +
+
+
+g_data_input_stream_read_line_utf8, function in GDataInputStream +
+
+
+GDBusInterface, struct in GDBusInterface +
+
+
+GDBusInterfaceIface, struct in GDBusInterface +
+
+
+GDBusInterfaceSkeleton, struct in GDBusInterfaceSkeleton +
+
+
+GDBusInterfaceSkeleton::g-authorize-method, object signal in GDBusInterfaceSkeleton +
+
+
+GDBusInterfaceSkeleton:g-flags, object property in GDBusInterfaceSkeleton +
+
+
+GDBusInterfaceSkeletonClass, struct in GDBusInterfaceSkeleton +
+
+
+GDBusInterfaceSkeletonFlags, enum in GDBusInterfaceSkeleton +
+
+
+GDBusObject::interface-added, object signal in GDBusObject +
+
+
+GDBusObject::interface-removed, object signal in GDBusObject +
+
+
+GDBusObjectIface, struct in GDBusObject +
+
+
+GDBusObjectManager::interface-added, object signal in GDBusObjectManager +
+
+
+GDBusObjectManager::interface-removed, object signal in GDBusObjectManager +
+
+
+GDBusObjectManager::object-added, object signal in GDBusObjectManager +
+
+
+GDBusObjectManager::object-removed, object signal in GDBusObjectManager +
+
+
+GDBusObjectManagerClient, struct in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient::interface-proxy-properties-changed, object signal in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient::interface-proxy-signal, object signal in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:bus-type, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:connection, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:flags, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:get-proxy-type-destroy-notify, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:get-proxy-type-func, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:get-proxy-type-user-data, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:name, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:name-owner, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:object-path, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClientClass, struct in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClientFlags, enum in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerIface, struct in GDBusObjectManager +
+
+
+GDBusObjectManagerServer, struct in GDBusObjectManagerServer +
+
+
+GDBusObjectManagerServer:connection, object property in GDBusObjectManagerServer +
+
+
+GDBusObjectManagerServer:object-path, object property in GDBusObjectManagerServer +
+
+
+GDBusObjectManagerServerClass, struct in GDBusObjectManagerServer +
+
+
+GDBusObjectProxy, struct in GDBusObjectProxy +
+
+
+GDBusObjectProxy:g-connection, object property in GDBusObjectProxy +
+
+
+GDBusObjectProxy:g-object-path, object property in GDBusObjectProxy +
+
+
+GDBusObjectProxyClass, struct in GDBusObjectProxy +
+
+
+GDBusObjectSkeleton, struct in GDBusObjectSkeleton +
+
+
+GDBusObjectSkeleton::authorize-method, object signal in GDBusObjectSkeleton +
+
+
+GDBusObjectSkeleton:g-object-path, object property in GDBusObjectSkeleton +
+
+
+GDBusObjectSkeletonClass, struct in GDBusObjectSkeleton +
+
+
+GDBusProxyTypeFunc, user_function in GDBusObjectManagerClient +
+
+
+g_dbus_connection_call_with_unix_fd_list, function in GDBusConnection +
+
+
+g_dbus_connection_call_with_unix_fd_list_finish, function in GDBusConnection +
+
+
+g_dbus_connection_call_with_unix_fd_list_sync, function in GDBusConnection +
+
+
+g_dbus_gvalue_to_gvariant, function in D-Bus Utilities +
+
+
+g_dbus_gvariant_to_gvalue, function in D-Bus Utilities +
+
+
+g_dbus_interface_get_info, function in GDBusInterface +
+
+
+g_dbus_interface_get_object, function in GDBusInterface +
+
+
+g_dbus_interface_info_cache_build, function in D-Bus Introspection Data +
+
+
+g_dbus_interface_info_cache_release, function in D-Bus Introspection Data +
+
+
+g_dbus_interface_set_object, function in GDBusInterface +
+
+
+g_dbus_interface_skeleton_export, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_flush, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_get_connection, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_get_flags, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_get_info, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_get_object_path, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_get_properties, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_get_vtable, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_set_flags, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_unexport, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_method_invocation_return_value_with_unix_fd_list, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_take_error, function in GDBusMethodInvocation +
+
+
+g_dbus_object_get_interface, function in GDBusObject +
+
+
+g_dbus_object_get_interfaces, function in GDBusObject +
+
+
+g_dbus_object_get_object_path, function in GDBusObject +
+
+
+g_dbus_object_manager_client_get_connection, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_get_flags, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_get_name, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_get_name_owner, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_new, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_new_finish, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_new_for_bus, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_new_for_bus_finish, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_new_for_bus_sync, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_new_sync, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_get_interface, function in GDBusObjectManager +
+
+
+g_dbus_object_manager_get_object, function in GDBusObjectManager +
+
+
+g_dbus_object_manager_get_objects, function in GDBusObjectManager +
+
+
+g_dbus_object_manager_get_object_path, function in GDBusObjectManager +
+
+
+g_dbus_object_manager_server_export, function in GDBusObjectManagerServer +
+
+
+g_dbus_object_manager_server_export_uniquely, function in GDBusObjectManagerServer +
+
+
+g_dbus_object_manager_server_get_connection, function in GDBusObjectManagerServer +
+
+
+g_dbus_object_manager_server_new, function in GDBusObjectManagerServer +
+
+
+g_dbus_object_manager_server_unexport, function in GDBusObjectManagerServer +
+
+
+g_dbus_object_proxy_get_connection, function in GDBusObjectProxy +
+
+
+g_dbus_object_proxy_new, function in GDBusObjectProxy +
+
+
+g_dbus_object_skeleton_add_interface, function in GDBusObjectSkeleton +
+
+
+g_dbus_object_skeleton_flush, function in GDBusObjectSkeleton +
+
+
+g_dbus_object_skeleton_new, function in GDBusObjectSkeleton +
+
+
+g_dbus_object_skeleton_remove_interface, function in GDBusObjectSkeleton +
+
+
+g_dbus_object_skeleton_remove_interface_by_name, function in GDBusObjectSkeleton +
+
+
+g_dbus_object_skeleton_set_object_path, function in GDBusObjectSkeleton +
+
+
+g_dbus_proxy_call_with_unix_fd_list, function in GDBusProxy +
+
+
+g_dbus_proxy_call_with_unix_fd_list_finish, function in GDBusProxy +
+
+
+g_dbus_proxy_call_with_unix_fd_list_sync, function in GDBusProxy +
+
+
+g_desktop_app_info_get_nodisplay, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_get_show_in, function in Desktop file based GAppInfo +
+
+

I

+
+g_inet_address_equal, function in GInetAddress +
+
+
+GIOModuleScope, struct in GIOModule +
+
+
+GIOModuleScopeFlags, enum in GIOModule +
+
+
+g_io_modules_load_all_in_directory_with_scope, function in GIOModule +
+
+
+g_io_modules_scan_all_in_directory_with_scope, function in GIOModule +
+
+
+g_io_module_scope_block, function in GIOModule +
+
+
+g_io_module_scope_free, function in GIOModule +
+
+
+g_io_module_scope_new, function in GIOModule +
+
+

N

+
+G_NETWORK_MONITOR_EXTENSION_POINT_NAME, macro in GNetworkMonitor +
+
+

S

+
+g_settings_get_uint, function in GSettings +
+
+
+g_settings_set_uint, function in GSettings +
+
+
+GSimpleAction::change-state, object signal in GSimpleAction +
+
+
+g_simple_action_group_add_entries, function in GSimpleActionGroup +
+
+
+g_simple_action_set_state, function in GSimpleAction +
+
+

T

+
+GTlsConnection:database, object property in GTlsConnection +
+
+
+GTlsConnection:interaction, object property in GTlsConnection +
+
+
+GTlsDatabase, struct in GTlsDatabase +
+
+
+GTlsDatabaseClass, struct in GTlsDatabase +
+
+
+GTlsDatabaseLookupFlags, enum in GTlsDatabase +
+
+
+GTlsDatabaseVerifyFlags, enum in GTlsDatabase +
+
+
+GTlsFileDatabase, struct in GTlsFileDatabase +
+
+
+GTlsFileDatabase:anchors, object property in GTlsFileDatabase +
+
+
+GTlsInteraction, struct in GTlsInteraction +
+
+
+GTlsInteractionClass, struct in GTlsInteraction +
+
+
+GTlsInteractionResult, enum in GTlsInteraction +
+
+
+GTlsPassword, struct in GTlsPassword +
+
+
+GTlsPasswordFlags, enum in GTlsPassword +
+
+
+g_tls_backend_get_default_database, function in GTlsBackend +
+
+
+g_tls_backend_get_file_database_type, function in GTlsBackend +
+
+
+g_tls_connection_get_database, function in GTlsConnection +
+
+
+g_tls_connection_get_interaction, function in GTlsConnection +
+
+
+g_tls_connection_set_database, function in GTlsConnection +
+
+
+g_tls_connection_set_interaction, function in GTlsConnection +
+
+
+g_tls_database_create_certificate_handle, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificates_issued_by, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificates_issued_by_async, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificates_issued_by_finish, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificate_for_handle, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificate_for_handle_async, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificate_for_handle_finish, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificate_issuer, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificate_issuer_async, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificate_issuer_finish, function in GTlsDatabase +
+
+
+g_tls_database_verify_chain, function in GTlsDatabase +
+
+
+g_tls_database_verify_chain_async, function in GTlsDatabase +
+
+
+g_tls_database_verify_chain_finish, function in GTlsDatabase +
+
+
+g_tls_file_database_new, function in GTlsFileDatabase +
+
+
+g_tls_interaction_ask_password, function in GTlsInteraction +
+
+
+g_tls_interaction_ask_password_async, function in GTlsInteraction +
+
+
+g_tls_interaction_ask_password_finish, function in GTlsInteraction +
+
+
+g_tls_interaction_invoke_ask_password, function in GTlsInteraction +
+
+
+g_tls_password_get_description, function in GTlsPassword +
+
+
+g_tls_password_get_flags, function in GTlsPassword +
+
+
+g_tls_password_get_value, function in GTlsPassword +
+
+
+g_tls_password_get_warning, function in GTlsPassword +
+
+
+g_tls_password_set_description, function in GTlsPassword +
+
+
+g_tls_password_set_flags, function in GTlsPassword +
+
+
+g_tls_password_set_value, function in GTlsPassword +
+
+
+g_tls_password_set_value_full, function in GTlsPassword +
+
+
+g_tls_password_set_warning, function in GTlsPassword +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-32.html b/docs/reference/gio/html/api-index-2-32.html new file mode 100644 index 0000000..ef97679 --- /dev/null +++ b/docs/reference/gio/html/api-index-2-32.html @@ -0,0 +1,717 @@ + + + + +Index of new symbols in 2.32: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.32

+

A

+
+GActionMapInterface, struct in GActionMap +
+
+
+g_action_group_query_action, function in GActionGroup +
+
+
+g_action_map_add_action, function in GActionMap +
+
+
+g_action_map_add_action_entries, function in GActionMap +
+
+
+g_action_map_lookup_action, function in GActionMap +
+
+
+g_action_map_remove_action, function in GActionMap +
+
+
+g_application_get_default, function in GApplication +
+
+
+g_application_quit, function in GApplication +
+
+
+g_application_set_default, function in GApplication +
+
+
+g_app_launch_context_get_environment, function in GAppInfo +
+
+
+g_app_launch_context_setenv, function in GAppInfo +
+
+
+g_app_launch_context_unsetenv, function in GAppInfo +
+
+

D

+
+g_dbus_action_group_get, function in GDBusActionGroup +
+
+
+g_dbus_connection_export_action_group, function in GActionGroup exporter +
+
+
+g_dbus_connection_export_menu_model, function in GMenuModel exporter +
+
+
+g_dbus_connection_unexport_action_group, function in GActionGroup exporter +
+
+
+g_dbus_connection_unexport_menu_model, function in GMenuModel exporter +
+
+
+g_dbus_interface_dup_object, function in GDBusInterface +
+
+
+g_dbus_interface_skeleton_get_connections, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_has_connection, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_unexport_from_connection, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_menu_model_get, function in GDBusMenuModel +
+
+
+g_desktop_app_info_get_keywords, function in Desktop file based GAppInfo +
+
+
+g_drive_get_sort_key, function in GDrive +
+
+

F

+
+G_FILE_ATTRIBUTE_FILESYSTEM_USED, macro in GFileInfo +
+
+
+g_file_attribute_matcher_to_string, function in GFileInfo +
+
+
+g_file_new_tmp, function in GFile +
+
+

I

+
+GInetAddressMask, struct in GInetAddressMask +
+
+
+GInetSocketAddress:flowinfo, object property in GInetSocketAddress +
+
+
+g_inet_address_mask_equal, function in GInetAddressMask +
+
+
+g_inet_address_mask_get_address, function in GInetAddressMask +
+
+
+g_inet_address_mask_get_family, function in GInetAddressMask +
+
+
+g_inet_address_mask_get_length, function in GInetAddressMask +
+
+
+g_inet_address_mask_matches, function in GInetAddressMask +
+
+
+g_inet_address_mask_new, function in GInetAddressMask +
+
+
+g_inet_address_mask_new_from_string, function in GInetAddressMask +
+
+
+g_inet_address_mask_to_string, function in GInetAddressMask +
+
+
+g_inet_socket_address_get_flowinfo, function in GInetSocketAddress +
+
+
+g_inet_socket_address_get_scope_id, function in GInetSocketAddress +
+
+

M

+
+GMenu, struct in GMenu +
+
+
+GMenuAttributeIter, struct in GMenuModel +
+
+
+GMenuItem, struct in GMenu +
+
+
+GMenuLinkIter, struct in GMenuModel +
+
+
+GMenuModel, struct in GMenuModel +
+
+
+g_menu_append, function in GMenu +
+
+
+g_menu_append_item, function in GMenu +
+
+
+g_menu_append_section, function in GMenu +
+
+
+g_menu_append_submenu, function in GMenu +
+
+
+G_MENU_ATTRIBUTE_ACTION, macro in GMenuModel +
+
+
+g_menu_attribute_iter_get_name, function in GMenuModel +
+
+
+g_menu_attribute_iter_get_next, function in GMenuModel +
+
+
+g_menu_attribute_iter_get_value, function in GMenuModel +
+
+
+g_menu_attribute_iter_next, function in GMenuModel +
+
+
+G_MENU_ATTRIBUTE_LABEL, macro in GMenuModel +
+
+
+G_MENU_ATTRIBUTE_TARGET, macro in GMenuModel +
+
+
+g_menu_freeze, function in GMenu +
+
+
+g_menu_insert, function in GMenu +
+
+
+g_menu_insert_item, function in GMenu +
+
+
+g_menu_insert_section, function in GMenu +
+
+
+g_menu_insert_submenu, function in GMenu +
+
+
+g_menu_item_new, function in GMenu +
+
+
+g_menu_item_new_section, function in GMenu +
+
+
+g_menu_item_new_submenu, function in GMenu +
+
+
+g_menu_item_set_action_and_target, function in GMenu +
+
+
+g_menu_item_set_action_and_target_value, function in GMenu +
+
+
+g_menu_item_set_attribute, function in GMenu +
+
+
+g_menu_item_set_attribute_value, function in GMenu +
+
+
+g_menu_item_set_detailed_action, function in GMenu +
+
+
+g_menu_item_set_label, function in GMenu +
+
+
+g_menu_item_set_link, function in GMenu +
+
+
+g_menu_item_set_section, function in GMenu +
+
+
+g_menu_item_set_submenu, function in GMenu +
+
+
+g_menu_link_iter_get_name, function in GMenuModel +
+
+
+g_menu_link_iter_get_next, function in GMenuModel +
+
+
+g_menu_link_iter_get_value, function in GMenuModel +
+
+
+g_menu_link_iter_next, function in GMenuModel +
+
+
+G_MENU_LINK_SECTION, macro in GMenuModel +
+
+
+G_MENU_LINK_SUBMENU, macro in GMenuModel +
+
+
+g_menu_model_get_item_attribute, function in GMenuModel +
+
+
+g_menu_model_get_item_attribute_value, function in GMenuModel +
+
+
+g_menu_model_get_item_link, function in GMenuModel +
+
+
+g_menu_model_get_n_items, function in GMenuModel +
+
+
+g_menu_model_is_mutable, function in GMenuModel +
+
+
+g_menu_model_items_changed, function in GMenuModel +
+
+
+g_menu_model_iterate_item_attributes, function in GMenuModel +
+
+
+g_menu_model_iterate_item_links, function in GMenuModel +
+
+
+g_menu_new, function in GMenu +
+
+
+g_menu_prepend, function in GMenu +
+
+
+g_menu_prepend_item, function in GMenu +
+
+
+g_menu_prepend_section, function in GMenu +
+
+
+g_menu_prepend_submenu, function in GMenu +
+
+
+g_menu_remove, function in GMenu +
+
+
+g_mount_get_sort_key, function in GMount +
+
+

N

+
+GNetworkMonitor, struct in GNetworkMonitor +
+
+
+GNetworkMonitor::network-changed, object signal in GNetworkMonitor +
+
+
+GNetworkMonitor:network-available, object property in GNetworkMonitor +
+
+
+GNetworkMonitorInterface, struct in GNetworkMonitor +
+
+
+g_network_monitor_can_reach, function in GNetworkMonitor +
+
+
+g_network_monitor_get_default, function in GNetworkMonitor +
+
+
+g_network_monitor_get_network_available, function in GNetworkMonitor +
+
+

R

+
+GRemoteActionGroupInterface, struct in GRemoteActionGroup +
+
+
+g_remote_action_group_activate_action_full, function in GRemoteActionGroup +
+
+
+g_remote_action_group_change_action_state_full, function in GRemoteActionGroup +
+
+
+GResource, struct in GResource +
+
+
+GResourceError, enum in GResource +
+
+
+GResourceFlags, enum in GResource +
+
+
+GResourceLookupFlags, enum in GResource +
+
+
+g_resources_enumerate_children, function in GResource +
+
+
+g_resources_get_info, function in GResource +
+
+
+g_resources_lookup_data, function in GResource +
+
+
+g_resources_open_stream, function in GResource +
+
+
+g_resources_register, function in GResource +
+
+
+g_resources_unregister, function in GResource +
+
+
+g_resource_enumerate_children, function in GResource +
+
+
+g_resource_get_info, function in GResource +
+
+
+g_resource_load, function in GResource +
+
+
+g_resource_lookup_data, function in GResource +
+
+
+g_resource_new_from_data, function in GResource +
+
+
+g_resource_open_stream, function in GResource +
+
+
+g_resource_ref, function in GResource +
+
+
+g_resource_unref, function in GResource +
+
+

S

+
+GSettingsSchema, struct in GSettingsSchema, GSettingsSchemaSource +
+
+
+GSettingsSchemaSource, struct in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_create_action, function in GSettings +
+
+
+g_settings_new_full, function in GSettings +
+
+
+g_settings_schema_get_path, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_ref, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_source_get_default, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_source_lookup, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_source_new_from_directory, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_source_ref, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_source_unref, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_unref, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_simple_async_result_set_check_cancellable, function in GSimpleAsyncResult +
+
+
+GSocket:broadcast, object property in GSocket +
+
+
+GSocket:multicast-loopback, object property in GSocket +
+
+
+GSocket:multicast-ttl, object property in GSocket +
+
+
+GSocket:ttl, object property in GSocket +
+
+
+GSocketClient::event, object signal in GSocketClient +
+
+
+GSocketClientEvent, enum in GSocketClient +
+
+
+g_socket_condition_timed_wait, function in GSocket +
+
+
+g_socket_connection_connect, function in GSocketConnection +
+
+
+g_socket_connection_connect_async, function in GSocketConnection +
+
+
+g_socket_connection_connect_finish, function in GSocketConnection +
+
+
+g_socket_connection_is_connected, function in GSocketConnection +
+
+
+g_socket_get_available_bytes, function in GSocket +
+
+
+g_socket_get_broadcast, function in GSocket +
+
+
+g_socket_get_multicast_loopback, function in GSocket +
+
+
+g_socket_get_multicast_ttl, function in GSocket +
+
+
+g_socket_get_ttl, function in GSocket +
+
+
+g_socket_join_multicast_group, function in GSocket +
+
+
+g_socket_leave_multicast_group, function in GSocket +
+
+
+g_socket_set_broadcast, function in GSocket +
+
+
+g_socket_set_multicast_loopback, function in GSocket +
+
+
+g_socket_set_multicast_ttl, function in GSocket +
+
+
+g_socket_set_ttl, function in GSocket +
+
+
+g_static_resource_fini, function in GResource +
+
+
+g_static_resource_get_resource, function in GResource +
+
+
+g_static_resource_init, function in GResource +
+
+

U

+
+g_unix_connection_receive_credentials_async, function in GUnixConnection +
+
+
+g_unix_connection_receive_credentials_finish, function in GUnixConnection +
+
+
+g_unix_connection_send_credentials_async, function in GUnixConnection +
+
+
+g_unix_connection_send_credentials_finish, function in GUnixConnection +
+
+
+g_unix_mount_point_get_options, function in Unix Mounts +
+
+

V

+
+g_volume_get_sort_key, function in GVolume +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-34.html b/docs/reference/gio/html/api-index-2-34.html new file mode 100644 index 0000000..012b2c6 --- /dev/null +++ b/docs/reference/gio/html/api-index-2-34.html @@ -0,0 +1,271 @@ + + + + +Index of new symbols in 2.34: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.34

+

A

+
+g_application_command_line_get_stdin, function in GApplicationCommandLine +
+
+
+g_application_get_dbus_connection, function in GApplication +
+
+
+g_application_get_dbus_object_path, function in GApplication +
+
+
+g_app_info_get_supported_types, function in GAppInfo +
+
+
+g_async_result_is_tagged, function in GAsyncResult +
+
+
+g_async_result_legacy_propagate_error, function in GAsyncResult +
+
+

C

+
+g_content_type_get_generic_icon_name, function in GContentType +
+
+
+g_content_type_get_symbolic_icon, function in GContentType +
+
+

D

+
+GDBusAuthObserver::allow-mechanism, object signal in GDBusAuthObserver +
+
+
+g_dbus_auth_observer_allow_mechanism, function in GDBusAuthObserver +
+
+
+g_dbus_connection_get_last_serial, function in GDBusConnection +
+
+
+g_dbus_object_manager_server_is_exported, function in GDBusObjectManagerServer +
+
+
+g_desktop_app_info_get_startup_wm_class, function in Desktop file based GAppInfo +
+
+
+g_drive_get_symbolic_icon, function in GDrive +
+
+

F

+
+G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON, macro in GFileInfo +
+
+
+g_file_delete_async, function in GFile +
+
+
+g_file_delete_finish, function in GFile +
+
+
+g_file_info_get_symbolic_icon, function in GFileInfo +
+
+
+g_file_info_set_symbolic_icon, function in GFileInfo +
+
+

I

+
+g_input_stream_read_bytes, function in GInputStream +
+
+
+g_input_stream_read_bytes_async, function in GInputStream +
+
+
+g_input_stream_read_bytes_finish, function in GInputStream +
+
+

M

+
+g_memory_input_stream_add_bytes, function in GMemoryInputStream +
+
+
+g_memory_input_stream_new_from_bytes, function in GMemoryInputStream +
+
+
+g_memory_output_stream_steal_as_bytes, function in GMemoryOutputStream +
+
+
+g_menu_item_get_attribute, function in GMenu +
+
+
+g_menu_item_get_attribute_value, function in GMenu +
+
+
+g_menu_item_get_link, function in GMenu +
+
+
+g_menu_item_new_from_model, function in GMenu +
+
+
+GMountOperation::show-unmount-progress, object signal in GMountOperation +
+
+
+g_mount_get_symbolic_icon, function in GMount +
+
+

P

+
+g_pollable_source_new_full, function in gpollableutils +
+
+
+g_pollable_stream_read, function in gpollableutils +
+
+
+g_pollable_stream_write, function in gpollableutils +
+
+
+g_pollable_stream_write_all, function in gpollableutils +
+
+
+GProxyAddress:destination-protocol, object property in GProxyAddress +
+
+
+GProxyAddress:uri, object property in GProxyAddress +
+
+
+g_proxy_address_get_destination_protocol, function in GProxyAddress +
+
+
+g_proxy_address_get_uri, function in GProxyAddress +
+
+

R

+
+GResolverRecordType, enum in GResolver +
+
+
+g_resolver_lookup_records, function in GResolver +
+
+
+g_resolver_lookup_records_async, function in GResolver +
+
+
+g_resolver_lookup_records_finish, function in GResolver +
+
+

S

+
+g_settings_schema_key_get_description, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_get_summary, function in GSettingsSchema, GSettingsSchemaSource +
+
+

T

+
+GTestDBus, struct in GTestDBus +
+
+
+GTestDBus:flags, object property in GTestDBus +
+
+
+GTestDBusFlags, enum in GTestDBus +
+
+
+g_tls_certificate_is_same, function in GTlsCertificate +
+
+

U

+
+g_unix_mount_guess_symbolic_icon, function in Unix Mounts +
+
+
+g_unix_mount_point_guess_symbolic_icon, function in Unix Mounts +
+
+

V

+
+g_volume_get_symbolic_icon, function in GVolume +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-36.html b/docs/reference/gio/html/api-index-2-36.html new file mode 100644 index 0000000..832174e --- /dev/null +++ b/docs/reference/gio/html/api-index-2-36.html @@ -0,0 +1,274 @@ + + + + +Index of new symbols in 2.36: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.36

+

A

+
+GAppLaunchContext::launch-failed, object signal in GAppInfo +
+
+
+GAppLaunchContext::launched, object signal in GAppInfo +
+
+
+g_application_command_line_create_file_for_arg, function in GApplicationCommandLine +
+
+

C

+
+g_credentials_get_unix_pid, function in GCredentials +
+
+

D

+
+g_dbus_address_escape_value, function in D-Bus Addresses +
+
+
+g_desktop_app_info_get_boolean, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_get_string, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_has_key, function in Desktop file based GAppInfo +
+
+

F

+
+g_file_enumerator_get_child, function in GFileEnumerator +
+
+
+g_file_info_get_deletion_date, function in GFileInfo +
+
+
+g_file_new_for_commandline_arg_and_cwd, function in GFile +
+
+

M

+
+g_memory_output_stream_new_resizable, function in GMemoryOutputStream +
+
+
+G_MENU_ATTRIBUTE_ACTION_NAMESPACE, macro in GMenuModel +
+
+

N

+
+g_networking_init, function in gnetworking.h +
+
+

P

+
+GProxyAddressEnumerator:proxy-resolver, object property in GSocketConnectable +
+
+

S

+
+g_simple_proxy_resolver_new, function in GSimpleProxyResolver +
+
+
+g_simple_proxy_resolver_set_default_proxy, function in GSimpleProxyResolver +
+
+
+g_simple_proxy_resolver_set_ignore_hosts, function in GSimpleProxyResolver +
+
+
+g_simple_proxy_resolver_set_uri_proxy, function in GSimpleProxyResolver +
+
+
+GSocketClient:proxy-resolver, object property in GSocketClient +
+
+
+g_socket_client_get_proxy_resolver, function in GSocketClient +
+
+
+g_socket_client_set_proxy_resolver, function in GSocketClient +
+
+
+g_socket_get_option, function in GSocket +
+
+
+g_socket_set_option, function in GSocket +
+
+

T

+
+GTaskThreadFunc, user_function in GTask +
+
+
+g_task_attach_source, function in GTask +
+
+
+g_task_get_cancellable, function in GTask +
+
+
+g_task_get_check_cancellable, function in GTask +
+
+
+g_task_get_context, function in GTask +
+
+
+g_task_get_priority, function in GTask +
+
+
+g_task_get_return_on_cancel, function in GTask +
+
+
+g_task_get_source_object, function in GTask +
+
+
+g_task_get_source_tag, function in GTask +
+
+
+g_task_get_task_data, function in GTask +
+
+
+g_task_had_error, function in GTask +
+
+
+g_task_is_valid, function in GTask +
+
+
+g_task_new, function in GTask +
+
+
+g_task_propagate_boolean, function in GTask +
+
+
+g_task_propagate_int, function in GTask +
+
+
+g_task_propagate_pointer, function in GTask +
+
+
+g_task_report_error, function in GTask +
+
+
+g_task_report_new_error, function in GTask +
+
+
+g_task_return_boolean, function in GTask +
+
+
+g_task_return_error, function in GTask +
+
+
+g_task_return_error_if_cancelled, function in GTask +
+
+
+g_task_return_int, function in GTask +
+
+
+g_task_return_new_error, function in GTask +
+
+
+g_task_return_pointer, function in GTask +
+
+
+g_task_run_in_thread, function in GTask +
+
+
+g_task_run_in_thread_sync, function in GTask +
+
+
+g_task_set_check_cancellable, function in GTask +
+
+
+g_task_set_priority, function in GTask +
+
+
+g_task_set_return_on_cancel, function in GTask +
+
+
+g_task_set_source_tag, function in GTask +
+
+
+g_task_set_task_data, function in GTask +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-38.html b/docs/reference/gio/html/api-index-2-38.html new file mode 100644 index 0000000..f9f4714 --- /dev/null +++ b/docs/reference/gio/html/api-index-2-38.html @@ -0,0 +1,188 @@ + + + + +Index of new symbols in 2.38: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.38

+

A

+
+g_action_name_is_valid, function in GAction +
+
+
+g_action_parse_detailed_name, function in GAction +
+
+
+g_action_print_detailed_name, function in GAction +
+
+
+g_application_mark_busy, function in GApplication +
+
+
+g_application_unmark_busy, function in GApplication +
+
+

B

+
+g_bytes_icon_get_bytes, function in GBytesIcon +
+
+
+g_bytes_icon_new, function in GBytesIcon +
+
+

D

+
+g_dbus_method_invocation_get_property_info, function in GDBusMethodInvocation +
+
+
+g_desktop_app_info_get_action_name, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_launch_action, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_list_actions, function in Desktop file based GAppInfo +
+
+

F

+
+GFileMeasureFlags, enum in GFile +
+
+
+GFileMeasureProgressCallback, user_function in GFile +
+
+
+g_file_make_directory_async, function in GFile +
+
+
+g_file_make_directory_finish, function in GFile +
+
+
+g_file_measure_disk_usage, function in GFile +
+
+
+g_file_measure_disk_usage_async, function in GFile +
+
+
+g_file_measure_disk_usage_finish, function in GFile +
+
+
+g_file_trash_async, function in GFile +
+
+
+g_file_trash_finish, function in GFile +
+
+

I

+
+g_icon_deserialize, function in GIcon +
+
+
+g_icon_serialize, function in GIcon +
+
+

M

+
+G_MENU_ATTRIBUTE_ICON, macro in GMenuModel +
+
+
+g_menu_item_set_icon, function in GMenu +
+
+
+g_menu_remove_all, function in GMenu +
+
+

P

+
+GPropertyAction, struct in GPropertyAction +
+
+
+GPropertyAction:enabled, object property in GPropertyAction +
+
+
+GPropertyAction:name, object property in GPropertyAction +
+
+
+GPropertyAction:object, object property in GPropertyAction +
+
+
+GPropertyAction:parameter-type, object property in GPropertyAction +
+
+
+GPropertyAction:property-name, object property in GPropertyAction +
+
+
+GPropertyAction:state, object property in GPropertyAction +
+
+
+GPropertyAction:state-type, object property in GPropertyAction +
+
+
+g_property_action_new, function in GPropertyAction +
+
+
+GProxyAddressEnumerator:default-port, object property in GSocketConnectable +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-40.html b/docs/reference/gio/html/api-index-2-40.html new file mode 100644 index 0000000..27acbf8 --- /dev/null +++ b/docs/reference/gio/html/api-index-2-40.html @@ -0,0 +1,364 @@ + + + + +Index of new symbols in 2.40: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.40

+

A

+
+GApplication::handle-local-options, object signal in GApplication +
+
+
+g_application_add_main_option_entries, function in GApplication +
+
+
+g_application_add_option_group, function in GApplication +
+
+
+g_application_command_line_get_options_dict, function in GApplicationCommandLine +
+
+
+g_application_send_notification, function in GApplication +
+
+
+g_application_withdraw_notification, function in GApplication +
+
+
+g_app_info_monitor_get, function in GAppInfoMonitor +
+
+

F

+
+G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID, macro in GFileInfo +
+
+
+g_file_replace_contents_bytes_async, function in GFile +
+
+

I

+
+g_inet_socket_address_new_from_string, function in GInetSocketAddress +
+
+

N

+
+GNotification, struct in GNotification +
+
+
+g_notification_add_button, function in GNotification +
+
+
+g_notification_add_button_with_target, function in GNotification +
+
+
+g_notification_add_button_with_target_value, function in GNotification +
+
+
+g_notification_new, function in GNotification +
+
+
+g_notification_set_body, function in GNotification +
+
+
+g_notification_set_default_action, function in GNotification +
+
+
+g_notification_set_default_action_and_target, function in GNotification +
+
+
+g_notification_set_default_action_and_target_value, function in GNotification +
+
+
+g_notification_set_icon, function in GNotification +
+
+
+g_notification_set_title, function in GNotification +
+
+
+g_notification_set_urgent, function in GNotification +
+
+

O

+
+g_output_stream_printf, function in GOutputStream +
+
+
+g_output_stream_vprintf, function in GOutputStream +
+
+

S

+
+g_settings_get_default_value, function in GSettings +
+
+
+g_settings_get_user_value, function in GSettings +
+
+
+g_settings_schema_get_key, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_has_key, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_get_default_value, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_get_range, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_get_value_type, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_range_check, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_ref, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_unref, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_source_list_schemas, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+GSubprocess, struct in GSubprocess +
+
+
+GSubprocessFlags, enum in GSubprocess +
+
+
+GSubprocessLauncher, struct in GSubprocessLauncher +
+
+
+g_subprocess_communicate, function in GSubprocess +
+
+
+g_subprocess_force_exit, function in GSubprocess +
+
+
+g_subprocess_get_exit_status, function in GSubprocess +
+
+
+g_subprocess_get_if_exited, function in GSubprocess +
+
+
+g_subprocess_get_if_signaled, function in GSubprocess +
+
+
+g_subprocess_get_status, function in GSubprocess +
+
+
+g_subprocess_get_stderr_pipe, function in GSubprocess +
+
+
+g_subprocess_get_stdin_pipe, function in GSubprocess +
+
+
+g_subprocess_get_stdout_pipe, function in GSubprocess +
+
+
+g_subprocess_get_successful, function in GSubprocess +
+
+
+g_subprocess_get_term_sig, function in GSubprocess +
+
+
+g_subprocess_launcher_getenv, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_new, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_setenv, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_set_child_setup, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_set_cwd, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_set_environ, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_set_flags, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_set_stderr_file_path, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_set_stdin_file_path, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_set_stdout_file_path, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_spawn, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_spawnv, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_take_stderr_fd, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_take_stdin_fd, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_take_stdout_fd, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_unsetenv, function in GSubprocessLauncher +
+
+
+g_subprocess_new, function in GSubprocess +
+
+
+g_subprocess_newv, function in GSubprocess +
+
+
+g_subprocess_send_signal, function in GSubprocess +
+
+
+g_subprocess_wait, function in GSubprocess +
+
+
+g_subprocess_wait_async, function in GSubprocess +
+
+
+g_subprocess_wait_check, function in GSubprocess +
+
+
+g_subprocess_wait_check_async, function in GSubprocess +
+
+
+g_subprocess_wait_check_finish, function in GSubprocess +
+
+
+g_subprocess_wait_finish, function in GSubprocess +
+
+

T

+
+GTlsCertificateRequestFlags, enum in GTlsInteraction +
+
+
+g_tls_interaction_invoke_request_certificate, function in GTlsInteraction +
+
+
+g_tls_interaction_request_certificate, function in GTlsInteraction +
+
+
+g_tls_interaction_request_certificate_async, function in GTlsInteraction +
+
+
+g_tls_interaction_request_certificate_finish, function in GTlsInteraction +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-42.html b/docs/reference/gio/html/api-index-2-42.html new file mode 100644 index 0000000..a615a98 --- /dev/null +++ b/docs/reference/gio/html/api-index-2-42.html @@ -0,0 +1,63 @@ + + + + +Index of new symbols in 2.42: GIO Reference Manual + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-44.html b/docs/reference/gio/html/api-index-2-44.html new file mode 100644 index 0000000..1cba51e --- /dev/null +++ b/docs/reference/gio/html/api-index-2-44.html @@ -0,0 +1,214 @@ + + + + +Index of new symbols in 2.44: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.44

+

A

+
+GApplication:is-busy, object property in GApplication +
+
+
+g_application_bind_busy_property, function in GApplication +
+
+
+g_application_get_is_busy, function in GApplication +
+
+
+g_application_unbind_busy_property, function in GApplication +
+
+

F

+
+g_file_enumerator_iterate, function in GFileEnumerator +
+
+

I

+
+g_input_stream_read_all_async, function in GInputStream +
+
+
+g_input_stream_read_all_finish, function in GInputStream +
+
+

L

+
+GListModel::items-changed, object signal in GListModel +
+
+
+GListModelInterface, struct in GListModel +
+
+
+GListStore:item-type, object property in GListStore +
+
+
+g_list_model_get_item, function in GListModel +
+
+
+g_list_model_get_item_type, function in GListModel +
+
+
+g_list_model_get_n_items, function in GListModel +
+
+
+g_list_model_get_object, function in GListModel +
+
+
+g_list_model_items_changed, function in GListModel +
+
+
+g_list_store_append, function in GListStore +
+
+
+g_list_store_insert, function in GListStore +
+
+
+g_list_store_insert_sorted, function in GListStore +
+
+
+g_list_store_new, function in GListStore +
+
+
+g_list_store_remove, function in GListStore +
+
+
+g_list_store_remove_all, function in GListStore +
+
+
+g_list_store_splice, function in GListStore +
+
+

N

+
+GNetworkConnectivity, enum in GNetworkMonitor +
+
+
+GNetworkMonitor:connectivity, object property in GNetworkMonitor +
+
+
+g_network_address_new_loopback, function in GNetworkAddress +
+
+
+g_network_monitor_get_connectivity, function in GNetworkMonitor +
+
+

O

+
+GOutputMessage, struct in GSocket +
+
+
+g_output_stream_write_all_async, function in GOutputStream +
+
+
+g_output_stream_write_all_finish, function in GOutputStream +
+
+

S

+
+g_settings_schema_key_get_name, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_list_children, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+GSimpleIOStream, struct in GSimpleIOStream +
+
+
+GSimpleIOStream:input-stream, object property in GSimpleIOStream +
+
+
+GSimpleIOStream:output-stream, object property in GSimpleIOStream +
+
+
+g_simple_action_set_state_hint, function in GSimpleAction +
+
+
+g_simple_io_stream_new, function in GSimpleIOStream +
+
+
+g_socket_send_messages, function in GSocket +
+
+

T

+
+GTask:completed, object property in GTask +
+
+
+g_task_get_completed, function in GTask +
+
+

U

+
+g_unix_mount_monitor_get, function in Unix Mounts +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-46.html b/docs/reference/gio/html/api-index-2-46.html new file mode 100644 index 0000000..654ca81 --- /dev/null +++ b/docs/reference/gio/html/api-index-2-46.html @@ -0,0 +1,211 @@ + + + + +Index of new symbols in 2.46: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.46

+

D

+
+g_dbus_connection_register_object_with_closures, function in GDBusConnection +
+
+

F

+
+G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE, macro in GFileInfo +
+
+

L

+
+g_list_store_sort, function in GListStore +
+
+

N

+
+g_native_socket_address_new, function in GNativeSocketAddress +
+
+
+GNetworkMonitor:network-metered, object property in GNetworkMonitor +
+
+
+g_network_monitor_get_network_metered, function in GNetworkMonitor +
+
+

P

+
+GPropertyAction:invert-boolean, object property in GPropertyAction +
+
+

S

+
+g_settings_schema_list_keys, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+GSocketListener::event, object signal in GSocketListener +
+
+
+GSocketListenerEvent, enum in GSocketListener +
+
+
+GSocketService:active, object property in GSocketService +
+
+

T

+
+g_tls_client_connection_copy_session_state, function in GTlsClientConnection +
+
+

W

+
+g_win32_registry_key_erase_change_indicator, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_get_path, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_get_path_w, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_get_value, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_get_value_w, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_has_changed, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_watch, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_assign, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_clear, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_copy, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_free, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_get_name, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_get_name_w, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_init, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_next, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_n_subkeys, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_assign, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_clear, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_copy, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_free, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_get_data, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_get_data_w, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_get_name, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_get_name_w, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_get_value_type, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_init, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_next, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_n_values, function in GWin32RegistryKey +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-2-48.html b/docs/reference/gio/html/api-index-2-48.html new file mode 100644 index 0000000..187ff17 --- /dev/null +++ b/docs/reference/gio/html/api-index-2-48.html @@ -0,0 +1,283 @@ + + + + +Index of new symbols in 2.48: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.48

+

D

+
+GDatagramBased, struct in GDatagramBased +
+
+
+GDatagramBasedInterface, struct in GDatagramBased +
+
+
+GDatagramBasedSourceFunc, user_function in GDatagramBased +
+
+
+g_datagram_based_condition_check, function in GDatagramBased +
+
+
+g_datagram_based_condition_wait, function in GDatagramBased +
+
+
+g_datagram_based_create_source, function in GDatagramBased +
+
+
+g_datagram_based_receive_messages, function in GDatagramBased +
+
+
+g_datagram_based_send_messages, function in GDatagramBased +
+
+
+GDtlsClientConnection, struct in GDtlsClientConnection +
+
+
+GDtlsClientConnection:accepted-cas, object property in GDtlsClientConnection +
+
+
+GDtlsClientConnection:server-identity, object property in GDtlsClientConnection +
+
+
+GDtlsClientConnection:validation-flags, object property in GDtlsClientConnection +
+
+
+GDtlsClientConnectionInterface, struct in GDtlsClientConnection +
+
+
+GDtlsConnection, struct in GDtlsConnection +
+
+
+GDtlsConnection::accept-certificate, object signal in GDtlsConnection +
+
+
+GDtlsConnection:base-socket, object property in GDtlsConnection +
+
+
+GDtlsConnection:certificate, object property in GDtlsConnection +
+
+
+GDtlsConnection:database, object property in GDtlsConnection +
+
+
+GDtlsConnection:interaction, object property in GDtlsConnection +
+
+
+GDtlsConnection:peer-certificate, object property in GDtlsConnection +
+
+
+GDtlsConnection:peer-certificate-errors, object property in GDtlsConnection +
+
+
+GDtlsConnection:rehandshake-mode, object property in GDtlsConnection +
+
+
+GDtlsConnection:require-close-notify, object property in GDtlsConnection +
+
+
+GDtlsServerConnection, struct in GDtlsServerConnection +
+
+
+GDtlsServerConnection:authentication-mode, object property in GDtlsServerConnection +
+
+
+GDtlsServerConnectionInterface, struct in GDtlsServerConnection +
+
+
+g_dtls_client_connection_get_accepted_cas, function in GDtlsClientConnection +
+
+
+g_dtls_client_connection_get_server_identity, function in GDtlsClientConnection +
+
+
+g_dtls_client_connection_get_validation_flags, function in GDtlsClientConnection +
+
+
+g_dtls_client_connection_new, function in GDtlsClientConnection +
+
+
+g_dtls_client_connection_set_server_identity, function in GDtlsClientConnection +
+
+
+g_dtls_client_connection_set_validation_flags, function in GDtlsClientConnection +
+
+
+g_dtls_connection_close, function in GDtlsConnection +
+
+
+g_dtls_connection_close_async, function in GDtlsConnection +
+
+
+g_dtls_connection_close_finish, function in GDtlsConnection +
+
+
+g_dtls_connection_emit_accept_certificate, function in GDtlsConnection +
+
+
+g_dtls_connection_get_certificate, function in GDtlsConnection +
+
+
+g_dtls_connection_get_database, function in GDtlsConnection +
+
+
+g_dtls_connection_get_interaction, function in GDtlsConnection +
+
+
+g_dtls_connection_get_peer_certificate, function in GDtlsConnection +
+
+
+g_dtls_connection_get_peer_certificate_errors, function in GDtlsConnection +
+
+
+g_dtls_connection_get_rehandshake_mode, function in GDtlsConnection +
+
+
+g_dtls_connection_get_require_close_notify, function in GDtlsConnection +
+
+
+g_dtls_connection_handshake, function in GDtlsConnection +
+
+
+g_dtls_connection_handshake_async, function in GDtlsConnection +
+
+
+g_dtls_connection_handshake_finish, function in GDtlsConnection +
+
+
+g_dtls_connection_set_certificate, function in GDtlsConnection +
+
+
+g_dtls_connection_set_database, function in GDtlsConnection +
+
+
+g_dtls_connection_set_interaction, function in GDtlsConnection +
+
+
+g_dtls_connection_set_rehandshake_mode, function in GDtlsConnection +
+
+
+g_dtls_connection_set_require_close_notify, function in GDtlsConnection +
+
+
+g_dtls_connection_shutdown, function in GDtlsConnection +
+
+
+g_dtls_connection_shutdown_async, function in GDtlsConnection +
+
+
+g_dtls_connection_shutdown_finish, function in GDtlsConnection +
+
+
+g_dtls_server_connection_new, function in GDtlsServerConnection +
+
+

I

+
+GInputMessage, struct in GSocket +
+
+

S

+
+g_socket_connectable_to_string, function in GSocketConnectable +
+
+
+g_socket_receive_messages, function in GSocket +
+
+

T

+
+g_tls_backend_get_dtls_client_connection_type, function in GTlsBackend +
+
+
+g_tls_backend_get_dtls_server_connection_type, function in GTlsBackend +
+
+
+g_tls_backend_supports_dtls, function in GTlsBackend +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-deprecated.html b/docs/reference/gio/html/api-index-deprecated.html new file mode 100644 index 0000000..e333b1b --- /dev/null +++ b/docs/reference/gio/html/api-index-deprecated.html @@ -0,0 +1,321 @@ + + + + +Index of deprecated symbols: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of deprecated symbols

+

A

+
+g_application_set_action_group, function in GApplication +
+
+

D

+
+GDesktopAppInfoLookup, struct in Desktop file based GAppInfo +
+
+
+GDesktopAppInfoLookupIface, struct in Desktop file based GAppInfo +
+
+
+G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME, macro in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_set_desktop_env, function in Desktop file based GAppInfo +
+
+
+g_drive_eject, function in GDrive +
+
+
+g_drive_eject_finish, function in GDrive +
+
+

F

+
+g_file_eject_mountable, function in GFile +
+
+
+g_file_eject_mountable_finish, function in GFile +
+
+
+g_file_unmount_mountable, function in GFile +
+
+
+g_file_unmount_mountable_finish, function in GFile +
+
+

I

+
+g_io_scheduler_cancel_all_jobs, function in GIOScheduler +
+
+
+g_io_scheduler_job_send_to_mainloop, function in GIOScheduler +
+
+
+g_io_scheduler_job_send_to_mainloop_async, function in GIOScheduler +
+
+
+g_io_scheduler_push_job, function in GIOScheduler +
+
+

M

+
+g_mount_eject, function in GMount +
+
+
+g_mount_eject_finish, function in GMount +
+
+
+g_mount_unmount, function in GMount +
+
+
+g_mount_unmount_finish, function in GMount +
+
+

N

+
+g_notification_set_urgent, function in GNotification +
+
+

S

+
+GSettings:schema, object property in GSettings +
+
+
+g_settings_get_range, function in GSettings +
+
+
+g_settings_list_keys, function in GSettings +
+
+
+g_settings_list_relocatable_schemas, function in GSettings +
+
+
+g_settings_list_schemas, function in GSettings +
+
+
+g_settings_range_check, function in GSettings +
+
+
+g_simple_action_group_add_entries, function in GSimpleActionGroup +
+
+
+g_simple_action_group_insert, function in GSimpleActionGroup +
+
+
+g_simple_action_group_lookup, function in GSimpleActionGroup +
+
+
+g_simple_action_group_remove, function in GSimpleActionGroup +
+
+
+g_simple_async_report_error_in_idle, function in GSimpleAsyncResult +
+
+
+g_simple_async_report_gerror_in_idle, function in GSimpleAsyncResult +
+
+
+g_simple_async_report_take_gerror_in_idle, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_complete, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_complete_in_idle, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_get_op_res_gboolean, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_get_op_res_gpointer, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_get_op_res_gssize, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_get_source_tag, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_is_valid, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_new, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_new_error, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_new_from_error, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_new_take_error, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_propagate_error, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_run_in_thread, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_check_cancellable, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_error, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_error_va, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_from_error, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_handle_cancellation, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_op_res_gboolean, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_op_res_gpointer, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_op_res_gssize, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_take_error, function in GSimpleAsyncResult +
+
+

T

+
+GTlsConnection:use-system-certdb, object property in GTlsConnection +
+
+
+g_tls_connection_get_use_system_certdb, function in GTlsConnection +
+
+
+g_tls_connection_set_use_system_certdb, function in GTlsConnection +
+
+

U

+
+GUnixSocketAddress:abstract, object property in GUnixSocketAddress +
+
+
+g_unix_mount_monitor_new, function in Unix Mounts +
+
+
+g_unix_mount_monitor_set_rate_limit, function in Unix Mounts +
+
+
+g_unix_socket_address_get_is_abstract, function in GUnixSocketAddress +
+
+
+g_unix_socket_address_new_abstract, function in GUnixSocketAddress +
+
+

V

+
+g_volume_eject, function in GVolume +
+
+
+g_volume_eject_finish, function in GVolume +
+
+
+g_volume_monitor_adopt_orphan_mount, function in GVolumeMonitor +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/api-index-full.html b/docs/reference/gio/html/api-index-full.html new file mode 100644 index 0000000..e91fd3a --- /dev/null +++ b/docs/reference/gio/html/api-index-full.html @@ -0,0 +1,10223 @@ + + + + +Index: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Index

+

A

+
+GAction, struct in GAction +
+
+
+GAction:enabled, object property in GAction +
+
+
+GAction:name, object property in GAction +
+
+
+GAction:parameter-type, object property in GAction +
+
+
+GAction:state, object property in GAction +
+
+
+GAction:state-type, object property in GAction +
+
+
+GActionEntry, struct in GActionMap +
+
+
+GActionGroup, struct in GActionGroup +
+
+
+GActionGroup::action-added, object signal in GActionGroup +
+
+
+GActionGroup::action-enabled-changed, object signal in GActionGroup +
+
+
+GActionGroup::action-removed, object signal in GActionGroup +
+
+
+GActionGroup::action-state-changed, object signal in GActionGroup +
+
+
+GActionGroupInterface, struct in GActionGroup +
+
+
+GActionInterface, struct in GAction +
+
+
+GActionMap, struct in GActionMap +
+
+
+GActionMapInterface, struct in GActionMap +
+
+
+g_action_activate, function in GAction +
+
+
+g_action_change_state, function in GAction +
+
+
+g_action_get_enabled, function in GAction +
+
+
+g_action_get_name, function in GAction +
+
+
+g_action_get_parameter_type, function in GAction +
+
+
+g_action_get_state, function in GAction +
+
+
+g_action_get_state_hint, function in GAction +
+
+
+g_action_get_state_type, function in GAction +
+
+
+g_action_group_action_added, function in GActionGroup +
+
+
+g_action_group_action_enabled_changed, function in GActionGroup +
+
+
+g_action_group_action_removed, function in GActionGroup +
+
+
+g_action_group_action_state_changed, function in GActionGroup +
+
+
+g_action_group_activate_action, function in GActionGroup +
+
+
+g_action_group_change_action_state, function in GActionGroup +
+
+
+g_action_group_get_action_enabled, function in GActionGroup +
+
+
+g_action_group_get_action_parameter_type, function in GActionGroup +
+
+
+g_action_group_get_action_state, function in GActionGroup +
+
+
+g_action_group_get_action_state_hint, function in GActionGroup +
+
+
+g_action_group_get_action_state_type, function in GActionGroup +
+
+
+g_action_group_has_action, function in GActionGroup +
+
+
+g_action_group_list_actions, function in GActionGroup +
+
+
+g_action_group_query_action, function in GActionGroup +
+
+
+g_action_map_add_action, function in GActionMap +
+
+
+g_action_map_add_action_entries, function in GActionMap +
+
+
+g_action_map_lookup_action, function in GActionMap +
+
+
+g_action_map_remove_action, function in GActionMap +
+
+
+g_action_name_is_valid, function in GAction +
+
+
+g_action_parse_detailed_name, function in GAction +
+
+
+g_action_print_detailed_name, function in GAction +
+
+
+GAppInfo, struct in GAppInfo +
+
+
+GAppInfoCreateFlags, enum in GAppInfo +
+
+
+GAppInfoIface, struct in GAppInfo +
+
+
+GAppInfoMonitor::changed, object signal in GAppInfoMonitor +
+
+
+GAppLaunchContext, struct in GAppInfo +
+
+
+GAppLaunchContext::launch-failed, object signal in GAppInfo +
+
+
+GAppLaunchContext::launched, object signal in GAppInfo +
+
+
+GApplication, struct in GApplication +
+
+
+GApplication::activate, object signal in GApplication +
+
+
+GApplication::command-line, object signal in GApplication +
+
+
+GApplication::handle-local-options, object signal in GApplication +
+
+
+GApplication::open, object signal in GApplication +
+
+
+GApplication::shutdown, object signal in GApplication +
+
+
+GApplication::startup, object signal in GApplication +
+
+
+GApplication:action-group, object property in GApplication +
+
+
+GApplication:application-id, object property in GApplication +
+
+
+GApplication:flags, object property in GApplication +
+
+
+GApplication:inactivity-timeout, object property in GApplication +
+
+
+GApplication:is-busy, object property in GApplication +
+
+
+GApplication:is-registered, object property in GApplication +
+
+
+GApplication:is-remote, object property in GApplication +
+
+
+GApplication:resource-base-path, object property in GApplication +
+
+
+GApplicationClass, struct in GApplication +
+
+
+GApplicationCommandLine, struct in GApplicationCommandLine +
+
+
+GApplicationCommandLine:arguments, object property in GApplicationCommandLine +
+
+
+GApplicationCommandLine:is-remote, object property in GApplicationCommandLine +
+
+
+GApplicationCommandLine:options, object property in GApplicationCommandLine +
+
+
+GApplicationCommandLine:platform-data, object property in GApplicationCommandLine +
+
+
+GApplicationCommandLineClass, struct in GApplicationCommandLine +
+
+
+GApplicationFlags, enum in GApplication +
+
+
+g_application_activate, function in GApplication +
+
+
+g_application_add_main_option, function in GApplication +
+
+
+g_application_add_main_option_entries, function in GApplication +
+
+
+g_application_add_option_group, function in GApplication +
+
+
+g_application_bind_busy_property, function in GApplication +
+
+
+g_application_command_line_create_file_for_arg, function in GApplicationCommandLine +
+
+
+g_application_command_line_getenv, function in GApplicationCommandLine +
+
+
+g_application_command_line_get_arguments, function in GApplicationCommandLine +
+
+
+g_application_command_line_get_cwd, function in GApplicationCommandLine +
+
+
+g_application_command_line_get_environ, function in GApplicationCommandLine +
+
+
+g_application_command_line_get_exit_status, function in GApplicationCommandLine +
+
+
+g_application_command_line_get_is_remote, function in GApplicationCommandLine +
+
+
+g_application_command_line_get_options_dict, function in GApplicationCommandLine +
+
+
+g_application_command_line_get_platform_data, function in GApplicationCommandLine +
+
+
+g_application_command_line_get_stdin, function in GApplicationCommandLine +
+
+
+g_application_command_line_print, function in GApplicationCommandLine +
+
+
+g_application_command_line_printerr, function in GApplicationCommandLine +
+
+
+g_application_command_line_set_exit_status, function in GApplicationCommandLine +
+
+
+g_application_get_application_id, function in GApplication +
+
+
+g_application_get_dbus_connection, function in GApplication +
+
+
+g_application_get_dbus_object_path, function in GApplication +
+
+
+g_application_get_default, function in GApplication +
+
+
+g_application_get_flags, function in GApplication +
+
+
+g_application_get_inactivity_timeout, function in GApplication +
+
+
+g_application_get_is_busy, function in GApplication +
+
+
+g_application_get_is_registered, function in GApplication +
+
+
+g_application_get_is_remote, function in GApplication +
+
+
+g_application_get_resource_base_path, function in GApplication +
+
+
+g_application_hold, function in GApplication +
+
+
+g_application_id_is_valid, function in GApplication +
+
+
+g_application_mark_busy, function in GApplication +
+
+
+g_application_new, function in GApplication +
+
+
+g_application_open, function in GApplication +
+
+
+g_application_quit, function in GApplication +
+
+
+g_application_register, function in GApplication +
+
+
+g_application_release, function in GApplication +
+
+
+g_application_run, function in GApplication +
+
+
+g_application_send_notification, function in GApplication +
+
+
+g_application_set_action_group, function in GApplication +
+
+
+g_application_set_application_id, function in GApplication +
+
+
+g_application_set_default, function in GApplication +
+
+
+g_application_set_flags, function in GApplication +
+
+
+g_application_set_inactivity_timeout, function in GApplication +
+
+
+g_application_set_resource_base_path, function in GApplication +
+
+
+g_application_unbind_busy_property, function in GApplication +
+
+
+g_application_unmark_busy, function in GApplication +
+
+
+g_application_withdraw_notification, function in GApplication +
+
+
+g_app_info_add_supports_type, function in GAppInfo +
+
+
+g_app_info_can_delete, function in GAppInfo +
+
+
+g_app_info_can_remove_supports_type, function in GAppInfo +
+
+
+g_app_info_create_from_commandline, function in GAppInfo +
+
+
+g_app_info_delete, function in GAppInfo +
+
+
+g_app_info_dup, function in GAppInfo +
+
+
+g_app_info_equal, function in GAppInfo +
+
+
+g_app_info_get_all, function in GAppInfo +
+
+
+g_app_info_get_all_for_type, function in GAppInfo +
+
+
+g_app_info_get_commandline, function in GAppInfo +
+
+
+g_app_info_get_default_for_type, function in GAppInfo +
+
+
+g_app_info_get_default_for_uri_scheme, function in GAppInfo +
+
+
+g_app_info_get_description, function in GAppInfo +
+
+
+g_app_info_get_display_name, function in GAppInfo +
+
+
+g_app_info_get_executable, function in GAppInfo +
+
+
+g_app_info_get_fallback_for_type, function in GAppInfo +
+
+
+g_app_info_get_icon, function in GAppInfo +
+
+
+g_app_info_get_id, function in GAppInfo +
+
+
+g_app_info_get_name, function in GAppInfo +
+
+
+g_app_info_get_recommended_for_type, function in GAppInfo +
+
+
+g_app_info_get_supported_types, function in GAppInfo +
+
+
+g_app_info_launch, function in GAppInfo +
+
+
+g_app_info_launch_default_for_uri, function in GAppInfo +
+
+
+g_app_info_launch_uris, function in GAppInfo +
+
+
+g_app_info_monitor_get, function in GAppInfoMonitor +
+
+
+g_app_info_remove_supports_type, function in GAppInfo +
+
+
+g_app_info_reset_type_associations, function in GAppInfo +
+
+
+g_app_info_set_as_default_for_extension, function in GAppInfo +
+
+
+g_app_info_set_as_default_for_type, function in GAppInfo +
+
+
+g_app_info_set_as_last_used_for_type, function in GAppInfo +
+
+
+g_app_info_should_show, function in GAppInfo +
+
+
+g_app_info_supports_files, function in GAppInfo +
+
+
+g_app_info_supports_uris, function in GAppInfo +
+
+
+g_app_launch_context_get_display, function in GAppInfo +
+
+
+g_app_launch_context_get_environment, function in GAppInfo +
+
+
+g_app_launch_context_get_startup_notify_id, function in GAppInfo +
+
+
+g_app_launch_context_launch_failed, function in GAppInfo +
+
+
+g_app_launch_context_new, function in GAppInfo +
+
+
+g_app_launch_context_setenv, function in GAppInfo +
+
+
+g_app_launch_context_unsetenv, function in GAppInfo +
+
+
+GAskPasswordFlags, enum in GMountOperation +
+
+
+GAsyncInitable, struct in GAsyncInitable +
+
+
+GAsyncInitableIface, struct in GAsyncInitable +
+
+
+GAsyncReadyCallback, user_function in GAsyncResult +
+
+
+GAsyncResult, struct in GAsyncResult +
+
+
+GAsyncResultIface, struct in GAsyncResult +
+
+
+g_async_initable_init_async, function in GAsyncInitable +
+
+
+g_async_initable_init_finish, function in GAsyncInitable +
+
+
+g_async_initable_newv_async, function in GAsyncInitable +
+
+
+g_async_initable_new_async, function in GAsyncInitable +
+
+
+g_async_initable_new_finish, function in GAsyncInitable +
+
+
+g_async_initable_new_valist_async, function in GAsyncInitable +
+
+
+g_async_result_get_source_object, function in GAsyncResult +
+
+
+g_async_result_get_user_data, function in GAsyncResult +
+
+
+g_async_result_is_tagged, function in GAsyncResult +
+
+
+g_async_result_legacy_propagate_error, function in GAsyncResult +
+
+

B

+
+GBufferedInputStream, struct in GBufferedInputStream +
+
+
+GBufferedInputStream:buffer-size, object property in GBufferedInputStream +
+
+
+GBufferedOutputStream, struct in GBufferedOutputStream +
+
+
+GBufferedOutputStream:auto-grow, object property in GBufferedOutputStream +
+
+
+GBufferedOutputStream:buffer-size, object property in GBufferedOutputStream +
+
+
+g_buffered_input_stream_fill, function in GBufferedInputStream +
+
+
+g_buffered_input_stream_fill_async, function in GBufferedInputStream +
+
+
+g_buffered_input_stream_fill_finish, function in GBufferedInputStream +
+
+
+g_buffered_input_stream_get_available, function in GBufferedInputStream +
+
+
+g_buffered_input_stream_get_buffer_size, function in GBufferedInputStream +
+
+
+g_buffered_input_stream_new, function in GBufferedInputStream +
+
+
+g_buffered_input_stream_new_sized, function in GBufferedInputStream +
+
+
+g_buffered_input_stream_peek, function in GBufferedInputStream +
+
+
+g_buffered_input_stream_peek_buffer, function in GBufferedInputStream +
+
+
+g_buffered_input_stream_read_byte, function in GBufferedInputStream +
+
+
+g_buffered_input_stream_set_buffer_size, function in GBufferedInputStream +
+
+
+g_buffered_output_stream_get_auto_grow, function in GBufferedOutputStream +
+
+
+g_buffered_output_stream_get_buffer_size, function in GBufferedOutputStream +
+
+
+g_buffered_output_stream_new, function in GBufferedOutputStream +
+
+
+g_buffered_output_stream_new_sized, function in GBufferedOutputStream +
+
+
+g_buffered_output_stream_set_auto_grow, function in GBufferedOutputStream +
+
+
+g_buffered_output_stream_set_buffer_size, function in GBufferedOutputStream +
+
+
+GBusAcquiredCallback, user_function in Owning Bus Names +
+
+
+GBusNameAcquiredCallback, user_function in Owning Bus Names +
+
+
+GBusNameAppearedCallback, user_function in Watching Bus Names +
+
+
+GBusNameLostCallback, user_function in Owning Bus Names +
+
+
+GBusNameOwnerFlags, enum in Owning Bus Names +
+
+
+GBusNameVanishedCallback, user_function in Watching Bus Names +
+
+
+GBusNameWatcherFlags, enum in Watching Bus Names +
+
+
+GBusType, enum in GDBusConnection +
+
+
+g_bus_get, function in GDBusConnection +
+
+
+g_bus_get_finish, function in GDBusConnection +
+
+
+g_bus_get_sync, function in GDBusConnection +
+
+
+g_bus_own_name, function in Owning Bus Names +
+
+
+g_bus_own_name_on_connection, function in Owning Bus Names +
+
+
+g_bus_own_name_on_connection_with_closures, function in Owning Bus Names +
+
+
+g_bus_own_name_with_closures, function in Owning Bus Names +
+
+
+g_bus_unown_name, function in Owning Bus Names +
+
+
+g_bus_unwatch_name, function in Watching Bus Names +
+
+
+g_bus_watch_name, function in Watching Bus Names +
+
+
+g_bus_watch_name_on_connection, function in Watching Bus Names +
+
+
+g_bus_watch_name_on_connection_with_closures, function in Watching Bus Names +
+
+
+g_bus_watch_name_with_closures, function in Watching Bus Names +
+
+
+GBytesIcon, struct in GBytesIcon +
+
+
+GBytesIcon:bytes, object property in GBytesIcon +
+
+
+g_bytes_icon_get_bytes, function in GBytesIcon +
+
+
+g_bytes_icon_new, function in GBytesIcon +
+
+

C

+
+GCancellable, struct in GCancellable +
+
+
+GCancellable::cancelled, object signal in GCancellable +
+
+
+GCancellableSourceFunc, user_function in GCancellable +
+
+
+g_cancellable_cancel, function in GCancellable +
+
+
+g_cancellable_connect, function in GCancellable +
+
+
+g_cancellable_disconnect, function in GCancellable +
+
+
+g_cancellable_get_current, function in GCancellable +
+
+
+g_cancellable_get_fd, function in GCancellable +
+
+
+g_cancellable_is_cancelled, function in GCancellable +
+
+
+g_cancellable_make_pollfd, function in GCancellable +
+
+
+g_cancellable_new, function in GCancellable +
+
+
+g_cancellable_pop_current, function in GCancellable +
+
+
+g_cancellable_push_current, function in GCancellable +
+
+
+g_cancellable_release_fd, function in GCancellable +
+
+
+g_cancellable_reset, function in GCancellable +
+
+
+g_cancellable_set_error_if_cancelled, function in GCancellable +
+
+
+g_cancellable_source_new, function in GCancellable +
+
+
+GCharsetConverter, struct in GCharsetConverter +
+
+
+GCharsetConverter:from-charset, object property in GCharsetConverter +
+
+
+GCharsetConverter:to-charset, object property in GCharsetConverter +
+
+
+GCharsetConverter:use-fallback, object property in GCharsetConverter +
+
+
+g_charset_converter_get_num_fallbacks, function in GCharsetConverter +
+
+
+g_charset_converter_get_use_fallback, function in GCharsetConverter +
+
+
+g_charset_converter_new, function in GCharsetConverter +
+
+
+g_charset_converter_set_use_fallback, function in GCharsetConverter +
+
+
+g_content_types_get_registered, function in GContentType +
+
+
+g_content_type_can_be_executable, function in GContentType +
+
+
+g_content_type_equals, function in GContentType +
+
+
+g_content_type_from_mime_type, function in GContentType +
+
+
+g_content_type_get_description, function in GContentType +
+
+
+g_content_type_get_generic_icon_name, function in GContentType +
+
+
+g_content_type_get_icon, function in GContentType +
+
+
+g_content_type_get_mime_type, function in GContentType +
+
+
+g_content_type_get_symbolic_icon, function in GContentType +
+
+
+g_content_type_guess, function in GContentType +
+
+
+g_content_type_guess_for_tree, function in GContentType +
+
+
+g_content_type_is_a, function in GContentType +
+
+
+g_content_type_is_unknown, function in GContentType +
+
+
+GConverter, struct in GConverter +
+
+
+GConverterFlags, enum in GConverter +
+
+
+GConverterIface, struct in GConverter +
+
+
+GConverterInputStream, struct in GConverterInputstream +
+
+
+GConverterInputStream:converter, object property in GConverterInputstream +
+
+
+GConverterOutputStream, struct in GConverterOutputstream +
+
+
+GConverterOutputStream:converter, object property in GConverterOutputstream +
+
+
+GConverterResult, enum in GConverter +
+
+
+g_converter_convert, function in GConverter +
+
+
+g_converter_input_stream_get_converter, function in GConverterInputstream +
+
+
+g_converter_input_stream_new, function in GConverterInputstream +
+
+
+g_converter_output_stream_get_converter, function in GConverterOutputstream +
+
+
+g_converter_output_stream_new, function in GConverterOutputstream +
+
+
+g_converter_reset, function in GConverter +
+
+
+GCredentials, struct in GCredentials +
+
+
+GCredentialsType, enum in GCredentials +
+
+
+g_credentials_get_native, function in GCredentials +
+
+
+g_credentials_get_unix_pid, function in GCredentials +
+
+
+g_credentials_get_unix_user, function in GCredentials +
+
+
+g_credentials_is_same_user, function in GCredentials +
+
+
+g_credentials_new, function in GCredentials +
+
+
+g_credentials_set_native, function in GCredentials +
+
+
+g_credentials_set_unix_user, function in GCredentials +
+
+
+g_credentials_to_string, function in GCredentials +
+
+

D

+
+GDatagramBased, struct in GDatagramBased +
+
+
+GDatagramBasedInterface, struct in GDatagramBased +
+
+
+GDatagramBasedSourceFunc, user_function in GDatagramBased +
+
+
+g_datagram_based_condition_check, function in GDatagramBased +
+
+
+g_datagram_based_condition_wait, function in GDatagramBased +
+
+
+g_datagram_based_create_source, function in GDatagramBased +
+
+
+g_datagram_based_receive_messages, function in GDatagramBased +
+
+
+g_datagram_based_send_messages, function in GDatagramBased +
+
+
+GDataInputStream, struct in GDataInputStream +
+
+
+GDataInputStream:byte-order, object property in GDataInputStream +
+
+
+GDataInputStream:newline-type, object property in GDataInputStream +
+
+
+GDataOutputStream, struct in GDataOutputStream +
+
+
+GDataOutputStream:byte-order, object property in GDataOutputStream +
+
+
+GDataStreamByteOrder, enum in GDataInputStream +
+
+
+GDataStreamNewlineType, enum in GDataInputStream +
+
+
+g_data_input_stream_get_byte_order, function in GDataInputStream +
+
+
+g_data_input_stream_get_newline_type, function in GDataInputStream +
+
+
+g_data_input_stream_new, function in GDataInputStream +
+
+
+g_data_input_stream_read_byte, function in GDataInputStream +
+
+
+g_data_input_stream_read_int16, function in GDataInputStream +
+
+
+g_data_input_stream_read_int32, function in GDataInputStream +
+
+
+g_data_input_stream_read_int64, function in GDataInputStream +
+
+
+g_data_input_stream_read_line, function in GDataInputStream +
+
+
+g_data_input_stream_read_line_async, function in GDataInputStream +
+
+
+g_data_input_stream_read_line_finish, function in GDataInputStream +
+
+
+g_data_input_stream_read_line_finish_utf8, function in GDataInputStream +
+
+
+g_data_input_stream_read_line_utf8, function in GDataInputStream +
+
+
+g_data_input_stream_read_uint16, function in GDataInputStream +
+
+
+g_data_input_stream_read_uint32, function in GDataInputStream +
+
+
+g_data_input_stream_read_uint64, function in GDataInputStream +
+
+
+g_data_input_stream_read_until, function in GDataInputStream +
+
+
+g_data_input_stream_read_until_async, function in GDataInputStream +
+
+
+g_data_input_stream_read_until_finish, function in GDataInputStream +
+
+
+g_data_input_stream_read_upto, function in GDataInputStream +
+
+
+g_data_input_stream_read_upto_async, function in GDataInputStream +
+
+
+g_data_input_stream_read_upto_finish, function in GDataInputStream +
+
+
+g_data_input_stream_set_byte_order, function in GDataInputStream +
+
+
+g_data_input_stream_set_newline_type, function in GDataInputStream +
+
+
+g_data_output_stream_get_byte_order, function in GDataOutputStream +
+
+
+g_data_output_stream_new, function in GDataOutputStream +
+
+
+g_data_output_stream_put_byte, function in GDataOutputStream +
+
+
+g_data_output_stream_put_int16, function in GDataOutputStream +
+
+
+g_data_output_stream_put_int32, function in GDataOutputStream +
+
+
+g_data_output_stream_put_int64, function in GDataOutputStream +
+
+
+g_data_output_stream_put_string, function in GDataOutputStream +
+
+
+g_data_output_stream_put_uint16, function in GDataOutputStream +
+
+
+g_data_output_stream_put_uint32, function in GDataOutputStream +
+
+
+g_data_output_stream_put_uint64, function in GDataOutputStream +
+
+
+g_data_output_stream_set_byte_order, function in GDataOutputStream +
+
+
+GDBusActionGroup, struct in GDBusActionGroup +
+
+
+GDBusAnnotationInfo, struct in D-Bus Introspection Data +
+
+
+GDBusArgInfo, struct in D-Bus Introspection Data +
+
+
+GDBusAuthObserver, struct in GDBusAuthObserver +
+
+
+GDBusAuthObserver::allow-mechanism, object signal in GDBusAuthObserver +
+
+
+GDBusAuthObserver::authorize-authenticated-peer, object signal in GDBusAuthObserver +
+
+
+GDBusCallFlags, enum in GDBusConnection +
+
+
+GDBusCapabilityFlags, enum in GDBusConnection +
+
+
+GDBusConnection, struct in GDBusConnection +
+
+
+GDBusConnection::closed, object signal in GDBusConnection +
+
+
+GDBusConnection:address, object property in GDBusConnection +
+
+
+GDBusConnection:authentication-observer, object property in GDBusConnection +
+
+
+GDBusConnection:capabilities, object property in GDBusConnection +
+
+
+GDBusConnection:closed, object property in GDBusConnection +
+
+
+GDBusConnection:exit-on-close, object property in GDBusConnection +
+
+
+GDBusConnection:flags, object property in GDBusConnection +
+
+
+GDBusConnection:guid, object property in GDBusConnection +
+
+
+GDBusConnection:stream, object property in GDBusConnection +
+
+
+GDBusConnection:unique-name, object property in GDBusConnection +
+
+
+GDBusConnectionFlags, enum in GDBusConnection +
+
+
+GDBusError, enum in GDBusError +
+
+
+GDBusErrorEntry, struct in GDBusError +
+
+
+GDBusInterface, struct in GDBusInterface +
+
+
+GDBusInterfaceGetPropertyFunc, user_function in GDBusConnection +
+
+
+GDBusInterfaceIface, struct in GDBusInterface +
+
+
+GDBusInterfaceInfo, struct in D-Bus Introspection Data +
+
+
+GDBusInterfaceMethodCallFunc, user_function in GDBusConnection +
+
+
+GDBusInterfaceSetPropertyFunc, user_function in GDBusConnection +
+
+
+GDBusInterfaceSkeleton, struct in GDBusInterfaceSkeleton +
+
+
+GDBusInterfaceSkeleton::g-authorize-method, object signal in GDBusInterfaceSkeleton +
+
+
+GDBusInterfaceSkeleton:g-flags, object property in GDBusInterfaceSkeleton +
+
+
+GDBusInterfaceSkeletonClass, struct in GDBusInterfaceSkeleton +
+
+
+GDBusInterfaceSkeletonFlags, enum in GDBusInterfaceSkeleton +
+
+
+GDBusInterfaceVTable, struct in GDBusConnection +
+
+
+GDBusMenuModel, struct in GDBusMenuModel +
+
+
+GDBusMessage, struct in GDBusMessage +
+
+
+GDBusMessage:locked, object property in GDBusMessage +
+
+
+GDBusMessageByteOrder, enum in GDBusMessage +
+
+
+GDBusMessageFilterFunction, user_function in GDBusConnection +
+
+
+GDBusMessageFlags, enum in GDBusMessage +
+
+
+GDBusMessageHeaderField, enum in GDBusMessage +
+
+
+GDBusMessageType, enum in GDBusMessage +
+
+
+GDBusMethodInfo, struct in D-Bus Introspection Data +
+
+
+GDBusMethodInvocation, struct in GDBusMethodInvocation +
+
+
+GDBusNodeInfo, struct in D-Bus Introspection Data +
+
+
+GDBusObject, struct in GDBusObject +
+
+
+GDBusObject::interface-added, object signal in GDBusObject +
+
+
+GDBusObject::interface-removed, object signal in GDBusObject +
+
+
+GDBusObjectIface, struct in GDBusObject +
+
+
+GDBusObjectManager, struct in GDBusObjectManager +
+
+
+GDBusObjectManager::interface-added, object signal in GDBusObjectManager +
+
+
+GDBusObjectManager::interface-removed, object signal in GDBusObjectManager +
+
+
+GDBusObjectManager::object-added, object signal in GDBusObjectManager +
+
+
+GDBusObjectManager::object-removed, object signal in GDBusObjectManager +
+
+
+GDBusObjectManagerClient, struct in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient::interface-proxy-properties-changed, object signal in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient::interface-proxy-signal, object signal in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:bus-type, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:connection, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:flags, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:get-proxy-type-destroy-notify, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:get-proxy-type-func, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:get-proxy-type-user-data, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:name, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:name-owner, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClient:object-path, object property in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClientClass, struct in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerClientFlags, enum in GDBusObjectManagerClient +
+
+
+GDBusObjectManagerIface, struct in GDBusObjectManager +
+
+
+GDBusObjectManagerServer, struct in GDBusObjectManagerServer +
+
+
+GDBusObjectManagerServer:connection, object property in GDBusObjectManagerServer +
+
+
+GDBusObjectManagerServer:object-path, object property in GDBusObjectManagerServer +
+
+
+GDBusObjectManagerServerClass, struct in GDBusObjectManagerServer +
+
+
+GDBusObjectProxy, struct in GDBusObjectProxy +
+
+
+GDBusObjectProxy:g-connection, object property in GDBusObjectProxy +
+
+
+GDBusObjectProxy:g-object-path, object property in GDBusObjectProxy +
+
+
+GDBusObjectProxyClass, struct in GDBusObjectProxy +
+
+
+GDBusObjectSkeleton, struct in GDBusObjectSkeleton +
+
+
+GDBusObjectSkeleton::authorize-method, object signal in GDBusObjectSkeleton +
+
+
+GDBusObjectSkeleton:g-object-path, object property in GDBusObjectSkeleton +
+
+
+GDBusObjectSkeletonClass, struct in GDBusObjectSkeleton +
+
+
+GDBusPropertyInfo, struct in D-Bus Introspection Data +
+
+
+GDBusPropertyInfoFlags, enum in D-Bus Introspection Data +
+
+
+GDBusProxy, struct in GDBusProxy +
+
+
+GDBusProxy::g-properties-changed, object signal in GDBusProxy +
+
+
+GDBusProxy::g-signal, object signal in GDBusProxy +
+
+
+GDBusProxy:g-bus-type, object property in GDBusProxy +
+
+
+GDBusProxy:g-connection, object property in GDBusProxy +
+
+
+GDBusProxy:g-default-timeout, object property in GDBusProxy +
+
+
+GDBusProxy:g-flags, object property in GDBusProxy +
+
+
+GDBusProxy:g-interface-info, object property in GDBusProxy +
+
+
+GDBusProxy:g-interface-name, object property in GDBusProxy +
+
+
+GDBusProxy:g-name, object property in GDBusProxy +
+
+
+GDBusProxy:g-name-owner, object property in GDBusProxy +
+
+
+GDBusProxy:g-object-path, object property in GDBusProxy +
+
+
+GDBusProxyClass, struct in GDBusProxy +
+
+
+GDBusProxyFlags, enum in GDBusProxy +
+
+
+GDBusProxyTypeFunc, user_function in GDBusObjectManagerClient +
+
+
+GDBusSendMessageFlags, enum in GDBusConnection +
+
+
+GDBusServer, struct in GDBusServer +
+
+
+GDBusServer::new-connection, object signal in GDBusServer +
+
+
+GDBusServer:active, object property in GDBusServer +
+
+
+GDBusServer:address, object property in GDBusServer +
+
+
+GDBusServer:authentication-observer, object property in GDBusServer +
+
+
+GDBusServer:client-address, object property in GDBusServer +
+
+
+GDBusServer:flags, object property in GDBusServer +
+
+
+GDBusServer:guid, object property in GDBusServer +
+
+
+GDBusServerFlags, enum in GDBusServer +
+
+
+GDBusSignalCallback, user_function in GDBusConnection +
+
+
+GDBusSignalFlags, enum in GDBusConnection +
+
+
+GDBusSignalInfo, struct in D-Bus Introspection Data +
+
+
+GDBusSubtreeDispatchFunc, user_function in GDBusConnection +
+
+
+GDBusSubtreeEnumerateFunc, user_function in GDBusConnection +
+
+
+GDBusSubtreeFlags, enum in GDBusConnection +
+
+
+GDBusSubtreeIntrospectFunc, user_function in GDBusConnection +
+
+
+GDBusSubtreeVTable, struct in GDBusConnection +
+
+
+g_dbus_action_group_get, function in GDBusActionGroup +
+
+
+g_dbus_address_escape_value, function in D-Bus Addresses +
+
+
+g_dbus_address_get_for_bus_sync, function in D-Bus Addresses +
+
+
+g_dbus_address_get_stream, function in D-Bus Addresses +
+
+
+g_dbus_address_get_stream_finish, function in D-Bus Addresses +
+
+
+g_dbus_address_get_stream_sync, function in D-Bus Addresses +
+
+
+g_dbus_annotation_info_lookup, function in D-Bus Introspection Data +
+
+
+g_dbus_annotation_info_ref, function in D-Bus Introspection Data +
+
+
+g_dbus_annotation_info_unref, function in D-Bus Introspection Data +
+
+
+g_dbus_arg_info_ref, function in D-Bus Introspection Data +
+
+
+g_dbus_arg_info_unref, function in D-Bus Introspection Data +
+
+
+g_dbus_auth_observer_allow_mechanism, function in GDBusAuthObserver +
+
+
+g_dbus_auth_observer_authorize_authenticated_peer, function in GDBusAuthObserver +
+
+
+g_dbus_auth_observer_new, function in GDBusAuthObserver +
+
+
+g_dbus_connection_add_filter, function in GDBusConnection +
+
+
+g_dbus_connection_call, function in GDBusConnection +
+
+
+g_dbus_connection_call_finish, function in GDBusConnection +
+
+
+g_dbus_connection_call_sync, function in GDBusConnection +
+
+
+g_dbus_connection_call_with_unix_fd_list, function in GDBusConnection +
+
+
+g_dbus_connection_call_with_unix_fd_list_finish, function in GDBusConnection +
+
+
+g_dbus_connection_call_with_unix_fd_list_sync, function in GDBusConnection +
+
+
+g_dbus_connection_close, function in GDBusConnection +
+
+
+g_dbus_connection_close_finish, function in GDBusConnection +
+
+
+g_dbus_connection_close_sync, function in GDBusConnection +
+
+
+g_dbus_connection_emit_signal, function in GDBusConnection +
+
+
+g_dbus_connection_export_action_group, function in GActionGroup exporter +
+
+
+g_dbus_connection_export_menu_model, function in GMenuModel exporter +
+
+
+g_dbus_connection_flush, function in GDBusConnection +
+
+
+g_dbus_connection_flush_finish, function in GDBusConnection +
+
+
+g_dbus_connection_flush_sync, function in GDBusConnection +
+
+
+g_dbus_connection_get_capabilities, function in GDBusConnection +
+
+
+g_dbus_connection_get_exit_on_close, function in GDBusConnection +
+
+
+g_dbus_connection_get_guid, function in GDBusConnection +
+
+
+g_dbus_connection_get_last_serial, function in GDBusConnection +
+
+
+g_dbus_connection_get_peer_credentials, function in GDBusConnection +
+
+
+g_dbus_connection_get_stream, function in GDBusConnection +
+
+
+g_dbus_connection_get_unique_name, function in GDBusConnection +
+
+
+g_dbus_connection_is_closed, function in GDBusConnection +
+
+
+g_dbus_connection_new, function in GDBusConnection +
+
+
+g_dbus_connection_new_finish, function in GDBusConnection +
+
+
+g_dbus_connection_new_for_address, function in GDBusConnection +
+
+
+g_dbus_connection_new_for_address_finish, function in GDBusConnection +
+
+
+g_dbus_connection_new_for_address_sync, function in GDBusConnection +
+
+
+g_dbus_connection_new_sync, function in GDBusConnection +
+
+
+g_dbus_connection_register_object, function in GDBusConnection +
+
+
+g_dbus_connection_register_object_with_closures, function in GDBusConnection +
+
+
+g_dbus_connection_register_subtree, function in GDBusConnection +
+
+
+g_dbus_connection_remove_filter, function in GDBusConnection +
+
+
+g_dbus_connection_send_message, function in GDBusConnection +
+
+
+g_dbus_connection_send_message_with_reply, function in GDBusConnection +
+
+
+g_dbus_connection_send_message_with_reply_finish, function in GDBusConnection +
+
+
+g_dbus_connection_send_message_with_reply_sync, function in GDBusConnection +
+
+
+g_dbus_connection_set_exit_on_close, function in GDBusConnection +
+
+
+g_dbus_connection_signal_subscribe, function in GDBusConnection +
+
+
+g_dbus_connection_signal_unsubscribe, function in GDBusConnection +
+
+
+g_dbus_connection_start_message_processing, function in GDBusConnection +
+
+
+g_dbus_connection_unexport_action_group, function in GActionGroup exporter +
+
+
+g_dbus_connection_unexport_menu_model, function in GMenuModel exporter +
+
+
+g_dbus_connection_unregister_object, function in GDBusConnection +
+
+
+g_dbus_connection_unregister_subtree, function in GDBusConnection +
+
+
+G_DBUS_ERROR, macro in GDBusError +
+
+
+g_dbus_error_encode_gerror, function in GDBusError +
+
+
+g_dbus_error_get_remote_error, function in GDBusError +
+
+
+g_dbus_error_is_remote_error, function in GDBusError +
+
+
+g_dbus_error_new_for_dbus_error, function in GDBusError +
+
+
+g_dbus_error_register_error, function in GDBusError +
+
+
+g_dbus_error_register_error_domain, function in GDBusError +
+
+
+g_dbus_error_set_dbus_error, function in GDBusError +
+
+
+g_dbus_error_set_dbus_error_valist, function in GDBusError +
+
+
+g_dbus_error_strip_remote_error, function in GDBusError +
+
+
+g_dbus_error_unregister_error, function in GDBusError +
+
+
+g_dbus_generate_guid, function in D-Bus Utilities +
+
+
+g_dbus_gvalue_to_gvariant, function in D-Bus Utilities +
+
+
+g_dbus_gvariant_to_gvalue, function in D-Bus Utilities +
+
+
+g_dbus_interface_dup_object, function in GDBusInterface +
+
+
+g_dbus_interface_get_info, function in GDBusInterface +
+
+
+g_dbus_interface_get_object, function in GDBusInterface +
+
+
+g_dbus_interface_info_cache_build, function in D-Bus Introspection Data +
+
+
+g_dbus_interface_info_cache_release, function in D-Bus Introspection Data +
+
+
+g_dbus_interface_info_generate_xml, function in D-Bus Introspection Data +
+
+
+g_dbus_interface_info_lookup_method, function in D-Bus Introspection Data +
+
+
+g_dbus_interface_info_lookup_property, function in D-Bus Introspection Data +
+
+
+g_dbus_interface_info_lookup_signal, function in D-Bus Introspection Data +
+
+
+g_dbus_interface_info_ref, function in D-Bus Introspection Data +
+
+
+g_dbus_interface_info_unref, function in D-Bus Introspection Data +
+
+
+g_dbus_interface_set_object, function in GDBusInterface +
+
+
+g_dbus_interface_skeleton_export, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_flush, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_get_connection, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_get_connections, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_get_flags, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_get_info, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_get_object_path, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_get_properties, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_get_vtable, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_has_connection, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_set_flags, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_unexport, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_interface_skeleton_unexport_from_connection, function in GDBusInterfaceSkeleton +
+
+
+g_dbus_is_address, function in D-Bus Addresses +
+
+
+g_dbus_is_guid, function in D-Bus Utilities +
+
+
+g_dbus_is_interface_name, function in D-Bus Utilities +
+
+
+g_dbus_is_member_name, function in D-Bus Utilities +
+
+
+g_dbus_is_name, function in D-Bus Utilities +
+
+
+g_dbus_is_supported_address, function in D-Bus Addresses +
+
+
+g_dbus_is_unique_name, function in D-Bus Utilities +
+
+
+g_dbus_menu_model_get, function in GDBusMenuModel +
+
+
+g_dbus_message_bytes_needed, function in GDBusMessage +
+
+
+g_dbus_message_copy, function in GDBusMessage +
+
+
+g_dbus_message_get_arg0, function in GDBusMessage +
+
+
+g_dbus_message_get_body, function in GDBusMessage +
+
+
+g_dbus_message_get_byte_order, function in GDBusMessage +
+
+
+g_dbus_message_get_destination, function in GDBusMessage +
+
+
+g_dbus_message_get_error_name, function in GDBusMessage +
+
+
+g_dbus_message_get_flags, function in GDBusMessage +
+
+
+g_dbus_message_get_header, function in GDBusMessage +
+
+
+g_dbus_message_get_header_fields, function in GDBusMessage +
+
+
+g_dbus_message_get_interface, function in GDBusMessage +
+
+
+g_dbus_message_get_locked, function in GDBusMessage +
+
+
+g_dbus_message_get_member, function in GDBusMessage +
+
+
+g_dbus_message_get_message_type, function in GDBusMessage +
+
+
+g_dbus_message_get_num_unix_fds, function in GDBusMessage +
+
+
+g_dbus_message_get_path, function in GDBusMessage +
+
+
+g_dbus_message_get_reply_serial, function in GDBusMessage +
+
+
+g_dbus_message_get_sender, function in GDBusMessage +
+
+
+g_dbus_message_get_serial, function in GDBusMessage +
+
+
+g_dbus_message_get_signature, function in GDBusMessage +
+
+
+g_dbus_message_get_unix_fd_list, function in GDBusMessage +
+
+
+g_dbus_message_lock, function in GDBusMessage +
+
+
+g_dbus_message_new, function in GDBusMessage +
+
+
+g_dbus_message_new_from_blob, function in GDBusMessage +
+
+
+g_dbus_message_new_method_call, function in GDBusMessage +
+
+
+g_dbus_message_new_method_error, function in GDBusMessage +
+
+
+g_dbus_message_new_method_error_literal, function in GDBusMessage +
+
+
+g_dbus_message_new_method_error_valist, function in GDBusMessage +
+
+
+g_dbus_message_new_method_reply, function in GDBusMessage +
+
+
+g_dbus_message_new_signal, function in GDBusMessage +
+
+
+g_dbus_message_print, function in GDBusMessage +
+
+
+g_dbus_message_set_body, function in GDBusMessage +
+
+
+g_dbus_message_set_byte_order, function in GDBusMessage +
+
+
+g_dbus_message_set_destination, function in GDBusMessage +
+
+
+g_dbus_message_set_error_name, function in GDBusMessage +
+
+
+g_dbus_message_set_flags, function in GDBusMessage +
+
+
+g_dbus_message_set_header, function in GDBusMessage +
+
+
+g_dbus_message_set_interface, function in GDBusMessage +
+
+
+g_dbus_message_set_member, function in GDBusMessage +
+
+
+g_dbus_message_set_message_type, function in GDBusMessage +
+
+
+g_dbus_message_set_num_unix_fds, function in GDBusMessage +
+
+
+g_dbus_message_set_path, function in GDBusMessage +
+
+
+g_dbus_message_set_reply_serial, function in GDBusMessage +
+
+
+g_dbus_message_set_sender, function in GDBusMessage +
+
+
+g_dbus_message_set_serial, function in GDBusMessage +
+
+
+g_dbus_message_set_signature, function in GDBusMessage +
+
+
+g_dbus_message_set_unix_fd_list, function in GDBusMessage +
+
+
+g_dbus_message_to_blob, function in GDBusMessage +
+
+
+g_dbus_message_to_gerror, function in GDBusMessage +
+
+
+g_dbus_method_info_ref, function in D-Bus Introspection Data +
+
+
+g_dbus_method_info_unref, function in D-Bus Introspection Data +
+
+
+g_dbus_method_invocation_get_connection, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_interface_name, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_message, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_method_info, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_method_name, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_object_path, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_parameters, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_property_info, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_sender, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_get_user_data, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_return_dbus_error, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_return_error, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_return_error_literal, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_return_error_valist, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_return_gerror, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_return_value, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_return_value_with_unix_fd_list, function in GDBusMethodInvocation +
+
+
+g_dbus_method_invocation_take_error, function in GDBusMethodInvocation +
+
+
+g_dbus_node_info_generate_xml, function in D-Bus Introspection Data +
+
+
+g_dbus_node_info_lookup_interface, function in D-Bus Introspection Data +
+
+
+g_dbus_node_info_new_for_xml, function in D-Bus Introspection Data +
+
+
+g_dbus_node_info_ref, function in D-Bus Introspection Data +
+
+
+g_dbus_node_info_unref, function in D-Bus Introspection Data +
+
+
+g_dbus_object_get_interface, function in GDBusObject +
+
+
+g_dbus_object_get_interfaces, function in GDBusObject +
+
+
+g_dbus_object_get_object_path, function in GDBusObject +
+
+
+g_dbus_object_manager_client_get_connection, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_get_flags, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_get_name, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_get_name_owner, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_new, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_new_finish, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_new_for_bus, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_new_for_bus_finish, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_new_for_bus_sync, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_client_new_sync, function in GDBusObjectManagerClient +
+
+
+g_dbus_object_manager_get_interface, function in GDBusObjectManager +
+
+
+g_dbus_object_manager_get_object, function in GDBusObjectManager +
+
+
+g_dbus_object_manager_get_objects, function in GDBusObjectManager +
+
+
+g_dbus_object_manager_get_object_path, function in GDBusObjectManager +
+
+
+g_dbus_object_manager_server_export, function in GDBusObjectManagerServer +
+
+
+g_dbus_object_manager_server_export_uniquely, function in GDBusObjectManagerServer +
+
+
+g_dbus_object_manager_server_get_connection, function in GDBusObjectManagerServer +
+
+
+g_dbus_object_manager_server_is_exported, function in GDBusObjectManagerServer +
+
+
+g_dbus_object_manager_server_new, function in GDBusObjectManagerServer +
+
+
+g_dbus_object_manager_server_set_connection, function in GDBusObjectManagerServer +
+
+
+g_dbus_object_manager_server_unexport, function in GDBusObjectManagerServer +
+
+
+g_dbus_object_proxy_get_connection, function in GDBusObjectProxy +
+
+
+g_dbus_object_proxy_new, function in GDBusObjectProxy +
+
+
+g_dbus_object_skeleton_add_interface, function in GDBusObjectSkeleton +
+
+
+g_dbus_object_skeleton_flush, function in GDBusObjectSkeleton +
+
+
+g_dbus_object_skeleton_new, function in GDBusObjectSkeleton +
+
+
+g_dbus_object_skeleton_remove_interface, function in GDBusObjectSkeleton +
+
+
+g_dbus_object_skeleton_remove_interface_by_name, function in GDBusObjectSkeleton +
+
+
+g_dbus_object_skeleton_set_object_path, function in GDBusObjectSkeleton +
+
+
+g_dbus_property_info_ref, function in D-Bus Introspection Data +
+
+
+g_dbus_property_info_unref, function in D-Bus Introspection Data +
+
+
+g_dbus_proxy_call, function in GDBusProxy +
+
+
+g_dbus_proxy_call_finish, function in GDBusProxy +
+
+
+g_dbus_proxy_call_sync, function in GDBusProxy +
+
+
+g_dbus_proxy_call_with_unix_fd_list, function in GDBusProxy +
+
+
+g_dbus_proxy_call_with_unix_fd_list_finish, function in GDBusProxy +
+
+
+g_dbus_proxy_call_with_unix_fd_list_sync, function in GDBusProxy +
+
+
+g_dbus_proxy_get_cached_property, function in GDBusProxy +
+
+
+g_dbus_proxy_get_cached_property_names, function in GDBusProxy +
+
+
+g_dbus_proxy_get_connection, function in GDBusProxy +
+
+
+g_dbus_proxy_get_default_timeout, function in GDBusProxy +
+
+
+g_dbus_proxy_get_flags, function in GDBusProxy +
+
+
+g_dbus_proxy_get_interface_info, function in GDBusProxy +
+
+
+g_dbus_proxy_get_interface_name, function in GDBusProxy +
+
+
+g_dbus_proxy_get_name, function in GDBusProxy +
+
+
+g_dbus_proxy_get_name_owner, function in GDBusProxy +
+
+
+g_dbus_proxy_get_object_path, function in GDBusProxy +
+
+
+g_dbus_proxy_new, function in GDBusProxy +
+
+
+g_dbus_proxy_new_finish, function in GDBusProxy +
+
+
+g_dbus_proxy_new_for_bus, function in GDBusProxy +
+
+
+g_dbus_proxy_new_for_bus_finish, function in GDBusProxy +
+
+
+g_dbus_proxy_new_for_bus_sync, function in GDBusProxy +
+
+
+g_dbus_proxy_new_sync, function in GDBusProxy +
+
+
+g_dbus_proxy_set_cached_property, function in GDBusProxy +
+
+
+g_dbus_proxy_set_default_timeout, function in GDBusProxy +
+
+
+g_dbus_proxy_set_interface_info, function in GDBusProxy +
+
+
+g_dbus_server_get_client_address, function in GDBusServer +
+
+
+g_dbus_server_get_flags, function in GDBusServer +
+
+
+g_dbus_server_get_guid, function in GDBusServer +
+
+
+g_dbus_server_is_active, function in GDBusServer +
+
+
+g_dbus_server_new_sync, function in GDBusServer +
+
+
+g_dbus_server_start, function in GDBusServer +
+
+
+g_dbus_server_stop, function in GDBusServer +
+
+
+g_dbus_signal_info_ref, function in D-Bus Introspection Data +
+
+
+g_dbus_signal_info_unref, function in D-Bus Introspection Data +
+
+
+GDesktopAppInfo, struct in Desktop file based GAppInfo +
+
+
+GDesktopAppInfo:filename, object property in Desktop file based GAppInfo +
+
+
+GDesktopAppInfoLookup, struct in Desktop file based GAppInfo +
+
+
+GDesktopAppInfoLookupIface, struct in Desktop file based GAppInfo +
+
+
+GDesktopAppLaunchCallback, user_function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_get_action_name, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_get_boolean, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_get_categories, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_get_filename, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_get_generic_name, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_get_implementations, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_get_is_hidden, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_get_keywords, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_get_nodisplay, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_get_show_in, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_get_startup_wm_class, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_get_string, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_has_key, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_launch_action, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_launch_uris_as_manager, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_list_actions, function in Desktop file based GAppInfo +
+
+
+G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME, macro in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_new, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_new_from_filename, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_new_from_keyfile, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_search, function in Desktop file based GAppInfo +
+
+
+g_desktop_app_info_set_desktop_env, function in Desktop file based GAppInfo +
+
+
+GDrive, struct in GDrive +
+
+
+GDrive::changed, object signal in GDrive +
+
+
+GDrive::disconnected, object signal in GDrive +
+
+
+GDrive::eject-button, object signal in GDrive +
+
+
+GDrive::stop-button, object signal in GDrive +
+
+
+GDriveIface, struct in GDrive +
+
+
+GDriveStartFlags, enum in GDrive +
+
+
+GDriveStartStopType, enum in GDrive +
+
+
+g_drive_can_eject, function in GDrive +
+
+
+g_drive_can_poll_for_media, function in GDrive +
+
+
+g_drive_can_start, function in GDrive +
+
+
+g_drive_can_start_degraded, function in GDrive +
+
+
+g_drive_can_stop, function in GDrive +
+
+
+g_drive_eject, function in GDrive +
+
+
+g_drive_eject_finish, function in GDrive +
+
+
+g_drive_eject_with_operation, function in GDrive +
+
+
+g_drive_eject_with_operation_finish, function in GDrive +
+
+
+g_drive_enumerate_identifiers, function in GDrive +
+
+
+g_drive_get_icon, function in GDrive +
+
+
+g_drive_get_identifier, function in GDrive +
+
+
+g_drive_get_name, function in GDrive +
+
+
+g_drive_get_sort_key, function in GDrive +
+
+
+g_drive_get_start_stop_type, function in GDrive +
+
+
+g_drive_get_symbolic_icon, function in GDrive +
+
+
+g_drive_get_volumes, function in GDrive +
+
+
+g_drive_has_media, function in GDrive +
+
+
+g_drive_has_volumes, function in GDrive +
+
+
+g_drive_is_media_check_automatic, function in GDrive +
+
+
+g_drive_is_media_removable, function in GDrive +
+
+
+g_drive_poll_for_media, function in GDrive +
+
+
+g_drive_poll_for_media_finish, function in GDrive +
+
+
+g_drive_start, function in GDrive +
+
+
+g_drive_start_finish, function in GDrive +
+
+
+g_drive_stop, function in GDrive +
+
+
+g_drive_stop_finish, function in GDrive +
+
+
+GDtlsClientConnection, struct in GDtlsClientConnection +
+
+
+GDtlsClientConnection:accepted-cas, object property in GDtlsClientConnection +
+
+
+GDtlsClientConnection:server-identity, object property in GDtlsClientConnection +
+
+
+GDtlsClientConnection:validation-flags, object property in GDtlsClientConnection +
+
+
+GDtlsClientConnectionInterface, struct in GDtlsClientConnection +
+
+
+GDtlsConnection, struct in GDtlsConnection +
+
+
+GDtlsConnection::accept-certificate, object signal in GDtlsConnection +
+
+
+GDtlsConnection:base-socket, object property in GDtlsConnection +
+
+
+GDtlsConnection:certificate, object property in GDtlsConnection +
+
+
+GDtlsConnection:database, object property in GDtlsConnection +
+
+
+GDtlsConnection:interaction, object property in GDtlsConnection +
+
+
+GDtlsConnection:peer-certificate, object property in GDtlsConnection +
+
+
+GDtlsConnection:peer-certificate-errors, object property in GDtlsConnection +
+
+
+GDtlsConnection:rehandshake-mode, object property in GDtlsConnection +
+
+
+GDtlsConnection:require-close-notify, object property in GDtlsConnection +
+
+
+GDtlsServerConnection, struct in GDtlsServerConnection +
+
+
+GDtlsServerConnection:authentication-mode, object property in GDtlsServerConnection +
+
+
+GDtlsServerConnectionInterface, struct in GDtlsServerConnection +
+
+
+g_dtls_client_connection_get_accepted_cas, function in GDtlsClientConnection +
+
+
+g_dtls_client_connection_get_server_identity, function in GDtlsClientConnection +
+
+
+g_dtls_client_connection_get_validation_flags, function in GDtlsClientConnection +
+
+
+g_dtls_client_connection_new, function in GDtlsClientConnection +
+
+
+g_dtls_client_connection_set_server_identity, function in GDtlsClientConnection +
+
+
+g_dtls_client_connection_set_validation_flags, function in GDtlsClientConnection +
+
+
+g_dtls_connection_close, function in GDtlsConnection +
+
+
+g_dtls_connection_close_async, function in GDtlsConnection +
+
+
+g_dtls_connection_close_finish, function in GDtlsConnection +
+
+
+g_dtls_connection_emit_accept_certificate, function in GDtlsConnection +
+
+
+g_dtls_connection_get_certificate, function in GDtlsConnection +
+
+
+g_dtls_connection_get_database, function in GDtlsConnection +
+
+
+g_dtls_connection_get_interaction, function in GDtlsConnection +
+
+
+g_dtls_connection_get_peer_certificate, function in GDtlsConnection +
+
+
+g_dtls_connection_get_peer_certificate_errors, function in GDtlsConnection +
+
+
+g_dtls_connection_get_rehandshake_mode, function in GDtlsConnection +
+
+
+g_dtls_connection_get_require_close_notify, function in GDtlsConnection +
+
+
+g_dtls_connection_handshake, function in GDtlsConnection +
+
+
+g_dtls_connection_handshake_async, function in GDtlsConnection +
+
+
+g_dtls_connection_handshake_finish, function in GDtlsConnection +
+
+
+g_dtls_connection_set_certificate, function in GDtlsConnection +
+
+
+g_dtls_connection_set_database, function in GDtlsConnection +
+
+
+g_dtls_connection_set_interaction, function in GDtlsConnection +
+
+
+g_dtls_connection_set_rehandshake_mode, function in GDtlsConnection +
+
+
+g_dtls_connection_set_require_close_notify, function in GDtlsConnection +
+
+
+g_dtls_connection_shutdown, function in GDtlsConnection +
+
+
+g_dtls_connection_shutdown_async, function in GDtlsConnection +
+
+
+g_dtls_connection_shutdown_finish, function in GDtlsConnection +
+
+
+g_dtls_server_connection_new, function in GDtlsServerConnection +
+
+

E

+
+GEmblem, struct in GEmblem +
+
+
+GEmblem:icon, object property in GEmblem +
+
+
+GEmblem:origin, object property in GEmblem +
+
+
+GEmblemedIcon, struct in GEmblemedIcon +
+
+
+GEmblemedIcon:gicon, object property in GEmblemedIcon +
+
+
+g_emblemed_icon_add_emblem, function in GEmblemedIcon +
+
+
+g_emblemed_icon_clear_emblems, function in GEmblemedIcon +
+
+
+g_emblemed_icon_get_emblems, function in GEmblemedIcon +
+
+
+g_emblemed_icon_get_icon, function in GEmblemedIcon +
+
+
+g_emblemed_icon_new, function in GEmblemedIcon +
+
+
+GEmblemOrigin, enum in GEmblem +
+
+
+g_emblem_get_icon, function in GEmblem +
+
+
+g_emblem_get_origin, function in GEmblem +
+
+
+g_emblem_new, function in GEmblem +
+
+
+g_emblem_new_with_origin, function in GEmblem +
+
+

F

+
+GFile, struct in GFile +
+
+
+GFileAttributeInfo, struct in GFileAttribute +
+
+
+GFileAttributeInfoFlags, enum in GFileAttribute +
+
+
+GFileAttributeInfoList, struct in GFileAttribute +
+
+
+GFileAttributeMatcher, struct in GFileInfo +
+
+
+GFileAttributeStatus, enum in GFileAttribute +
+
+
+GFileAttributeType, enum in GFileAttribute +
+
+
+GFileCopyFlags, enum in GFile +
+
+
+GFileCreateFlags, enum in GFile +
+
+
+GFileDescriptorBased, struct in GFileDescriptorBased +
+
+
+GFileDescriptorBasedIface, struct in GFileDescriptorBased +
+
+
+GFileEnumerator, struct in GFileEnumerator +
+
+
+GFileEnumerator:container, object property in GFileEnumerator +
+
+
+GFileIcon, struct in GFileIcon +
+
+
+GFileIcon:file, object property in GFileIcon +
+
+
+GFileIface, struct in GFile +
+
+
+GFileInfo, struct in GFileInfo +
+
+
+GFileInputStream, struct in GFileInputStream +
+
+
+GFileIOStream, struct in GFileIOStream +
+
+
+GFileMeasureFlags, enum in GFile +
+
+
+GFileMeasureProgressCallback, user_function in GFile +
+
+
+GFileMonitor, struct in GFileMonitor +
+
+
+GFileMonitor::changed, object signal in GFileMonitor +
+
+
+GFileMonitor:cancelled, object property in GFileMonitor +
+
+
+GFileMonitor:rate-limit, object property in GFileMonitor +
+
+
+GFileMonitorEvent, enum in GFileMonitor +
+
+
+GFileMonitorFlags, enum in GFile +
+
+
+GFilenameCompleter, struct in GFilenameCompleter +
+
+
+GFilenameCompleter::got-completion-data, object signal in GFilenameCompleter +
+
+
+g_filename_completer_get_completions, function in GFilenameCompleter +
+
+
+g_filename_completer_get_completion_suffix, function in GFilenameCompleter +
+
+
+g_filename_completer_new, function in GFilenameCompleter +
+
+
+g_filename_completer_set_dirs_only, function in GFilenameCompleter +
+
+
+GFileOutputStream, struct in GFileOutputStream +
+
+
+GFileProgressCallback, user_function in GFile +
+
+
+GFileQueryInfoFlags, enum in GFile +
+
+
+GFileReadMoreCallback, user_function in GFile +
+
+
+GFilesystemPreviewType, enum in GFile +
+
+
+GFileType, enum in GFileInfo +
+
+
+g_file_append_to, function in GFile +
+
+
+g_file_append_to_async, function in GFile +
+
+
+g_file_append_to_finish, function in GFile +
+
+
+G_FILE_ATTRIBUTE_ACCESS_CAN_DELETE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_ACCESS_CAN_READ, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_ACCESS_CAN_RENAME, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_ACCESS_CAN_TRASH, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_DOS_IS_ARCHIVE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_DOS_IS_SYSTEM, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_ETAG_VALUE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_FILESYSTEM_FREE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_FILESYSTEM_READONLY, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_FILESYSTEM_SIZE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_FILESYSTEM_TYPE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_FILESYSTEM_USED, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_GVFS_BACKEND, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_ID_FILE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_ID_FILESYSTEM, macro in GFileInfo +
+
+
+g_file_attribute_info_list_add, function in GFileAttribute +
+
+
+g_file_attribute_info_list_dup, function in GFileAttribute +
+
+
+g_file_attribute_info_list_lookup, function in GFileAttribute +
+
+
+g_file_attribute_info_list_new, function in GFileAttribute +
+
+
+g_file_attribute_info_list_ref, function in GFileAttribute +
+
+
+g_file_attribute_info_list_unref, function in GFileAttribute +
+
+
+g_file_attribute_matcher_enumerate_namespace, function in GFileInfo +
+
+
+g_file_attribute_matcher_enumerate_next, function in GFileInfo +
+
+
+g_file_attribute_matcher_matches, function in GFileInfo +
+
+
+g_file_attribute_matcher_matches_only, function in GFileInfo +
+
+
+g_file_attribute_matcher_new, function in GFileInfo +
+
+
+g_file_attribute_matcher_ref, function in GFileInfo +
+
+
+g_file_attribute_matcher_subtract, function in GFileInfo +
+
+
+g_file_attribute_matcher_to_string, function in GFileInfo +
+
+
+g_file_attribute_matcher_unref, function in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_OWNER_GROUP, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_OWNER_USER, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_OWNER_USER_REAL, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_PREVIEW_ICON, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_SELINUX_CONTEXT, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_COPY_NAME, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_DESCRIPTION, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_ICON, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_IS_BACKUP, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_NAME, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_SIZE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_TARGET_URI, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_STANDARD_TYPE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_THUMBNAILING_FAILED, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_THUMBNAIL_IS_VALID, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_THUMBNAIL_PATH, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_TIME_ACCESS, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_TIME_ACCESS_USEC, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_TIME_CHANGED, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_TIME_CHANGED_USEC, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_TIME_CREATED, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_TIME_CREATED_USEC, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_TIME_MODIFIED, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_TRASH_DELETION_DATE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_TRASH_ITEM_COUNT, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_TRASH_ORIG_PATH, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_UNIX_BLOCKS, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_UNIX_BLOCK_SIZE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_UNIX_DEVICE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_UNIX_GID, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_UNIX_INODE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_UNIX_MODE, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_UNIX_NLINK, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_UNIX_RDEV, macro in GFileInfo +
+
+
+G_FILE_ATTRIBUTE_UNIX_UID, macro in GFileInfo +
+
+
+g_file_copy, function in GFile +
+
+
+g_file_copy_async, function in GFile +
+
+
+g_file_copy_attributes, function in GFile +
+
+
+g_file_copy_finish, function in GFile +
+
+
+g_file_create, function in GFile +
+
+
+g_file_create_async, function in GFile +
+
+
+g_file_create_finish, function in GFile +
+
+
+g_file_create_readwrite, function in GFile +
+
+
+g_file_create_readwrite_async, function in GFile +
+
+
+g_file_create_readwrite_finish, function in GFile +
+
+
+g_file_delete, function in GFile +
+
+
+g_file_delete_async, function in GFile +
+
+
+g_file_delete_finish, function in GFile +
+
+
+g_file_descriptor_based_get_fd, function in GFileDescriptorBased +
+
+
+g_file_dup, function in GFile +
+
+
+g_file_eject_mountable, function in GFile +
+
+
+g_file_eject_mountable_finish, function in GFile +
+
+
+g_file_eject_mountable_with_operation, function in GFile +
+
+
+g_file_eject_mountable_with_operation_finish, function in GFile +
+
+
+g_file_enumerate_children, function in GFile +
+
+
+g_file_enumerate_children_async, function in GFile +
+
+
+g_file_enumerate_children_finish, function in GFile +
+
+
+g_file_enumerator_close, function in GFileEnumerator +
+
+
+g_file_enumerator_close_async, function in GFileEnumerator +
+
+
+g_file_enumerator_close_finish, function in GFileEnumerator +
+
+
+g_file_enumerator_get_child, function in GFileEnumerator +
+
+
+g_file_enumerator_get_container, function in GFileEnumerator +
+
+
+g_file_enumerator_has_pending, function in GFileEnumerator +
+
+
+g_file_enumerator_is_closed, function in GFileEnumerator +
+
+
+g_file_enumerator_iterate, function in GFileEnumerator +
+
+
+g_file_enumerator_next_file, function in GFileEnumerator +
+
+
+g_file_enumerator_next_files_async, function in GFileEnumerator +
+
+
+g_file_enumerator_next_files_finish, function in GFileEnumerator +
+
+
+g_file_enumerator_set_pending, function in GFileEnumerator +
+
+
+g_file_equal, function in GFile +
+
+
+g_file_find_enclosing_mount, function in GFile +
+
+
+g_file_find_enclosing_mount_async, function in GFile +
+
+
+g_file_find_enclosing_mount_finish, function in GFile +
+
+
+g_file_get_basename, function in GFile +
+
+
+g_file_get_child, function in GFile +
+
+
+g_file_get_child_for_display_name, function in GFile +
+
+
+g_file_get_parent, function in GFile +
+
+
+g_file_get_parse_name, function in GFile +
+
+
+g_file_get_path, function in GFile +
+
+
+g_file_get_relative_path, function in GFile +
+
+
+g_file_get_uri, function in GFile +
+
+
+g_file_get_uri_scheme, function in GFile +
+
+
+g_file_hash, function in GFile +
+
+
+g_file_has_parent, function in GFile +
+
+
+g_file_has_prefix, function in GFile +
+
+
+g_file_has_uri_scheme, function in GFile +
+
+
+g_file_icon_get_file, function in GFileIcon +
+
+
+g_file_icon_new, function in GFileIcon +
+
+
+g_file_info_clear_status, function in GFileInfo +
+
+
+g_file_info_copy_into, function in GFileInfo +
+
+
+g_file_info_dup, function in GFileInfo +
+
+
+g_file_info_get_attribute_as_string, function in GFileInfo +
+
+
+g_file_info_get_attribute_boolean, function in GFileInfo +
+
+
+g_file_info_get_attribute_byte_string, function in GFileInfo +
+
+
+g_file_info_get_attribute_data, function in GFileInfo +
+
+
+g_file_info_get_attribute_int32, function in GFileInfo +
+
+
+g_file_info_get_attribute_int64, function in GFileInfo +
+
+
+g_file_info_get_attribute_object, function in GFileInfo +
+
+
+g_file_info_get_attribute_status, function in GFileInfo +
+
+
+g_file_info_get_attribute_string, function in GFileInfo +
+
+
+g_file_info_get_attribute_stringv, function in GFileInfo +
+
+
+g_file_info_get_attribute_type, function in GFileInfo +
+
+
+g_file_info_get_attribute_uint32, function in GFileInfo +
+
+
+g_file_info_get_attribute_uint64, function in GFileInfo +
+
+
+g_file_info_get_content_type, function in GFileInfo +
+
+
+g_file_info_get_deletion_date, function in GFileInfo +
+
+
+g_file_info_get_display_name, function in GFileInfo +
+
+
+g_file_info_get_edit_name, function in GFileInfo +
+
+
+g_file_info_get_etag, function in GFileInfo +
+
+
+g_file_info_get_file_type, function in GFileInfo +
+
+
+g_file_info_get_icon, function in GFileInfo +
+
+
+g_file_info_get_is_backup, function in GFileInfo +
+
+
+g_file_info_get_is_hidden, function in GFileInfo +
+
+
+g_file_info_get_is_symlink, function in GFileInfo +
+
+
+g_file_info_get_modification_time, function in GFileInfo +
+
+
+g_file_info_get_name, function in GFileInfo +
+
+
+g_file_info_get_size, function in GFileInfo +
+
+
+g_file_info_get_sort_order, function in GFileInfo +
+
+
+g_file_info_get_symbolic_icon, function in GFileInfo +
+
+
+g_file_info_get_symlink_target, function in GFileInfo +
+
+
+g_file_info_has_attribute, function in GFileInfo +
+
+
+g_file_info_has_namespace, function in GFileInfo +
+
+
+g_file_info_list_attributes, function in GFileInfo +
+
+
+g_file_info_new, function in GFileInfo +
+
+
+g_file_info_remove_attribute, function in GFileInfo +
+
+
+g_file_info_set_attribute, function in GFileInfo +
+
+
+g_file_info_set_attribute_boolean, function in GFileInfo +
+
+
+g_file_info_set_attribute_byte_string, function in GFileInfo +
+
+
+g_file_info_set_attribute_int32, function in GFileInfo +
+
+
+g_file_info_set_attribute_int64, function in GFileInfo +
+
+
+g_file_info_set_attribute_mask, function in GFileInfo +
+
+
+g_file_info_set_attribute_object, function in GFileInfo +
+
+
+g_file_info_set_attribute_status, function in GFileInfo +
+
+
+g_file_info_set_attribute_string, function in GFileInfo +
+
+
+g_file_info_set_attribute_stringv, function in GFileInfo +
+
+
+g_file_info_set_attribute_uint32, function in GFileInfo +
+
+
+g_file_info_set_attribute_uint64, function in GFileInfo +
+
+
+g_file_info_set_content_type, function in GFileInfo +
+
+
+g_file_info_set_display_name, function in GFileInfo +
+
+
+g_file_info_set_edit_name, function in GFileInfo +
+
+
+g_file_info_set_file_type, function in GFileInfo +
+
+
+g_file_info_set_icon, function in GFileInfo +
+
+
+g_file_info_set_is_hidden, function in GFileInfo +
+
+
+g_file_info_set_is_symlink, function in GFileInfo +
+
+
+g_file_info_set_modification_time, function in GFileInfo +
+
+
+g_file_info_set_name, function in GFileInfo +
+
+
+g_file_info_set_size, function in GFileInfo +
+
+
+g_file_info_set_sort_order, function in GFileInfo +
+
+
+g_file_info_set_symbolic_icon, function in GFileInfo +
+
+
+g_file_info_set_symlink_target, function in GFileInfo +
+
+
+g_file_info_unset_attribute_mask, function in GFileInfo +
+
+
+g_file_input_stream_query_info, function in GFileInputStream +
+
+
+g_file_input_stream_query_info_async, function in GFileInputStream +
+
+
+g_file_input_stream_query_info_finish, function in GFileInputStream +
+
+
+g_file_io_stream_get_etag, function in GFileIOStream +
+
+
+g_file_io_stream_query_info, function in GFileIOStream +
+
+
+g_file_io_stream_query_info_async, function in GFileIOStream +
+
+
+g_file_io_stream_query_info_finish, function in GFileIOStream +
+
+
+g_file_is_native, function in GFile +
+
+
+g_file_load_contents, function in GFile +
+
+
+g_file_load_contents_async, function in GFile +
+
+
+g_file_load_contents_finish, function in GFile +
+
+
+g_file_load_partial_contents_async, function in GFile +
+
+
+g_file_load_partial_contents_finish, function in GFile +
+
+
+g_file_make_directory, function in GFile +
+
+
+g_file_make_directory_async, function in GFile +
+
+
+g_file_make_directory_finish, function in GFile +
+
+
+g_file_make_directory_with_parents, function in GFile +
+
+
+g_file_make_symbolic_link, function in GFile +
+
+
+g_file_measure_disk_usage, function in GFile +
+
+
+g_file_measure_disk_usage_async, function in GFile +
+
+
+g_file_measure_disk_usage_finish, function in GFile +
+
+
+g_file_monitor, function in GFile +
+
+
+g_file_monitor_cancel, function in GFileMonitor +
+
+
+g_file_monitor_directory, function in GFile +
+
+
+g_file_monitor_emit_event, function in GFileMonitor +
+
+
+g_file_monitor_file, function in GFile +
+
+
+g_file_monitor_is_cancelled, function in GFileMonitor +
+
+
+g_file_monitor_set_rate_limit, function in GFileMonitor +
+
+
+g_file_mount_enclosing_volume, function in GFile +
+
+
+g_file_mount_enclosing_volume_finish, function in GFile +
+
+
+g_file_mount_mountable, function in GFile +
+
+
+g_file_mount_mountable_finish, function in GFile +
+
+
+g_file_move, function in GFile +
+
+
+g_file_new_for_commandline_arg, function in GFile +
+
+
+g_file_new_for_commandline_arg_and_cwd, function in GFile +
+
+
+g_file_new_for_path, function in GFile +
+
+
+g_file_new_for_uri, function in GFile +
+
+
+g_file_new_tmp, function in GFile +
+
+
+g_file_open_readwrite, function in GFile +
+
+
+g_file_open_readwrite_async, function in GFile +
+
+
+g_file_open_readwrite_finish, function in GFile +
+
+
+g_file_output_stream_get_etag, function in GFileOutputStream +
+
+
+g_file_output_stream_query_info, function in GFileOutputStream +
+
+
+g_file_output_stream_query_info_async, function in GFileOutputStream +
+
+
+g_file_output_stream_query_info_finish, function in GFileOutputStream +
+
+
+g_file_parse_name, function in GFile +
+
+
+g_file_poll_mountable, function in GFile +
+
+
+g_file_poll_mountable_finish, function in GFile +
+
+
+g_file_query_default_handler, function in GFile +
+
+
+g_file_query_exists, function in GFile +
+
+
+g_file_query_filesystem_info, function in GFile +
+
+
+g_file_query_filesystem_info_async, function in GFile +
+
+
+g_file_query_filesystem_info_finish, function in GFile +
+
+
+g_file_query_file_type, function in GFile +
+
+
+g_file_query_info, function in GFile +
+
+
+g_file_query_info_async, function in GFile +
+
+
+g_file_query_info_finish, function in GFile +
+
+
+g_file_query_settable_attributes, function in GFile +
+
+
+g_file_query_writable_namespaces, function in GFile +
+
+
+g_file_read, function in GFile +
+
+
+g_file_read_async, function in GFile +
+
+
+g_file_read_finish, function in GFile +
+
+
+g_file_replace, function in GFile +
+
+
+g_file_replace_async, function in GFile +
+
+
+g_file_replace_contents, function in GFile +
+
+
+g_file_replace_contents_async, function in GFile +
+
+
+g_file_replace_contents_bytes_async, function in GFile +
+
+
+g_file_replace_contents_finish, function in GFile +
+
+
+g_file_replace_finish, function in GFile +
+
+
+g_file_replace_readwrite, function in GFile +
+
+
+g_file_replace_readwrite_async, function in GFile +
+
+
+g_file_replace_readwrite_finish, function in GFile +
+
+
+g_file_resolve_relative_path, function in GFile +
+
+
+g_file_set_attribute, function in GFile +
+
+
+g_file_set_attributes_async, function in GFile +
+
+
+g_file_set_attributes_finish, function in GFile +
+
+
+g_file_set_attributes_from_info, function in GFile +
+
+
+g_file_set_attribute_byte_string, function in GFile +
+
+
+g_file_set_attribute_int32, function in GFile +
+
+
+g_file_set_attribute_int64, function in GFile +
+
+
+g_file_set_attribute_string, function in GFile +
+
+
+g_file_set_attribute_uint32, function in GFile +
+
+
+g_file_set_attribute_uint64, function in GFile +
+
+
+g_file_set_display_name, function in GFile +
+
+
+g_file_set_display_name_async, function in GFile +
+
+
+g_file_set_display_name_finish, function in GFile +
+
+
+g_file_start_mountable, function in GFile +
+
+
+g_file_start_mountable_finish, function in GFile +
+
+
+g_file_stop_mountable, function in GFile +
+
+
+g_file_stop_mountable_finish, function in GFile +
+
+
+g_file_supports_thread_contexts, function in GFile +
+
+
+g_file_trash, function in GFile +
+
+
+g_file_trash_async, function in GFile +
+
+
+g_file_trash_finish, function in GFile +
+
+
+g_file_unmount_mountable, function in GFile +
+
+
+g_file_unmount_mountable_finish, function in GFile +
+
+
+g_file_unmount_mountable_with_operation, function in GFile +
+
+
+g_file_unmount_mountable_with_operation_finish, function in GFile +
+
+
+GFilterInputStream, struct in GFilterInputStream +
+
+
+GFilterInputStream:base-stream, object property in GFilterInputStream +
+
+
+GFilterInputStream:close-base-stream, object property in GFilterInputStream +
+
+
+GFilterOutputStream, struct in GFilterOutputStream +
+
+
+GFilterOutputStream:base-stream, object property in GFilterOutputStream +
+
+
+GFilterOutputStream:close-base-stream, object property in GFilterOutputStream +
+
+
+g_filter_input_stream_get_base_stream, function in GFilterInputStream +
+
+
+g_filter_input_stream_get_close_base_stream, function in GFilterInputStream +
+
+
+g_filter_input_stream_set_close_base_stream, function in GFilterInputStream +
+
+
+g_filter_output_stream_get_base_stream, function in GFilterOutputStream +
+
+
+g_filter_output_stream_get_close_base_stream, function in GFilterOutputStream +
+
+
+g_filter_output_stream_set_close_base_stream, function in GFilterOutputStream +
+
+

I

+
+GIcon, struct in GIcon +
+
+
+GIconIface, struct in GIcon +
+
+
+g_icon_deserialize, function in GIcon +
+
+
+g_icon_equal, function in GIcon +
+
+
+g_icon_hash, function in GIcon +
+
+
+g_icon_new_for_string, function in GIcon +
+
+
+g_icon_serialize, function in GIcon +
+
+
+g_icon_to_string, function in GIcon +
+
+
+GInetAddress, struct in GInetAddress +
+
+
+GInetAddress:bytes, object property in GInetAddress +
+
+
+GInetAddress:family, object property in GInetAddress +
+
+
+GInetAddress:is-any, object property in GInetAddress +
+
+
+GInetAddress:is-link-local, object property in GInetAddress +
+
+
+GInetAddress:is-loopback, object property in GInetAddress +
+
+
+GInetAddress:is-mc-global, object property in GInetAddress +
+
+
+GInetAddress:is-mc-link-local, object property in GInetAddress +
+
+
+GInetAddress:is-mc-node-local, object property in GInetAddress +
+
+
+GInetAddress:is-mc-org-local, object property in GInetAddress +
+
+
+GInetAddress:is-mc-site-local, object property in GInetAddress +
+
+
+GInetAddress:is-multicast, object property in GInetAddress +
+
+
+GInetAddress:is-site-local, object property in GInetAddress +
+
+
+GInetAddressMask, struct in GInetAddressMask +
+
+
+GInetAddressMask:address, object property in GInetAddressMask +
+
+
+GInetAddressMask:family, object property in GInetAddressMask +
+
+
+GInetAddressMask:length, object property in GInetAddressMask +
+
+
+GInetSocketAddress, struct in GInetSocketAddress +
+
+
+GInetSocketAddress:address, object property in GInetSocketAddress +
+
+
+GInetSocketAddress:flowinfo, object property in GInetSocketAddress +
+
+
+GInetSocketAddress:port, object property in GInetSocketAddress +
+
+
+GInetSocketAddress:scope-id, object property in GInetSocketAddress +
+
+
+g_inet_address_equal, function in GInetAddress +
+
+
+g_inet_address_get_family, function in GInetAddress +
+
+
+g_inet_address_get_is_any, function in GInetAddress +
+
+
+g_inet_address_get_is_link_local, function in GInetAddress +
+
+
+g_inet_address_get_is_loopback, function in GInetAddress +
+
+
+g_inet_address_get_is_mc_global, function in GInetAddress +
+
+
+g_inet_address_get_is_mc_link_local, function in GInetAddress +
+
+
+g_inet_address_get_is_mc_node_local, function in GInetAddress +
+
+
+g_inet_address_get_is_mc_org_local, function in GInetAddress +
+
+
+g_inet_address_get_is_mc_site_local, function in GInetAddress +
+
+
+g_inet_address_get_is_multicast, function in GInetAddress +
+
+
+g_inet_address_get_is_site_local, function in GInetAddress +
+
+
+g_inet_address_get_native_size, function in GInetAddress +
+
+
+g_inet_address_mask_equal, function in GInetAddressMask +
+
+
+g_inet_address_mask_get_address, function in GInetAddressMask +
+
+
+g_inet_address_mask_get_family, function in GInetAddressMask +
+
+
+g_inet_address_mask_get_length, function in GInetAddressMask +
+
+
+g_inet_address_mask_matches, function in GInetAddressMask +
+
+
+g_inet_address_mask_new, function in GInetAddressMask +
+
+
+g_inet_address_mask_new_from_string, function in GInetAddressMask +
+
+
+g_inet_address_mask_to_string, function in GInetAddressMask +
+
+
+g_inet_address_new_any, function in GInetAddress +
+
+
+g_inet_address_new_from_bytes, function in GInetAddress +
+
+
+g_inet_address_new_from_string, function in GInetAddress +
+
+
+g_inet_address_new_loopback, function in GInetAddress +
+
+
+g_inet_address_to_bytes, function in GInetAddress +
+
+
+g_inet_address_to_string, function in GInetAddress +
+
+
+g_inet_socket_address_get_address, function in GInetSocketAddress +
+
+
+g_inet_socket_address_get_flowinfo, function in GInetSocketAddress +
+
+
+g_inet_socket_address_get_port, function in GInetSocketAddress +
+
+
+g_inet_socket_address_get_scope_id, function in GInetSocketAddress +
+
+
+g_inet_socket_address_new, function in GInetSocketAddress +
+
+
+g_inet_socket_address_new_from_string, function in GInetSocketAddress +
+
+
+GInitable, struct in GInitable +
+
+
+GInitableIface, struct in GInitable +
+
+
+g_initable_init, function in GInitable +
+
+
+g_initable_new, function in GInitable +
+
+
+g_initable_newv, function in GInitable +
+
+
+g_initable_new_valist, function in GInitable +
+
+
+GInputMessage, struct in GSocket +
+
+
+GInputStream, struct in GInputStream +
+
+
+GInputVector, struct in GSocket +
+
+
+g_input_stream_clear_pending, function in GInputStream +
+
+
+g_input_stream_close, function in GInputStream +
+
+
+g_input_stream_close_async, function in GInputStream +
+
+
+g_input_stream_close_finish, function in GInputStream +
+
+
+g_input_stream_has_pending, function in GInputStream +
+
+
+g_input_stream_is_closed, function in GInputStream +
+
+
+g_input_stream_read, function in GInputStream +
+
+
+g_input_stream_read_all, function in GInputStream +
+
+
+g_input_stream_read_all_async, function in GInputStream +
+
+
+g_input_stream_read_all_finish, function in GInputStream +
+
+
+g_input_stream_read_async, function in GInputStream +
+
+
+g_input_stream_read_bytes, function in GInputStream +
+
+
+g_input_stream_read_bytes_async, function in GInputStream +
+
+
+g_input_stream_read_bytes_finish, function in GInputStream +
+
+
+g_input_stream_read_finish, function in GInputStream +
+
+
+g_input_stream_set_pending, function in GInputStream +
+
+
+g_input_stream_skip, function in GInputStream +
+
+
+g_input_stream_skip_async, function in GInputStream +
+
+
+g_input_stream_skip_finish, function in GInputStream +
+
+
+GIOErrorEnum, enum in GIOError +
+
+
+GIOExtension, struct in Extension Points +
+
+
+GIOExtensionPoint, struct in Extension Points +
+
+
+GIOModule, struct in GIOModule +
+
+
+GIOModuleScope, struct in GIOModule +
+
+
+GIOModuleScopeFlags, enum in GIOModule +
+
+
+GIOSchedulerJob, struct in GIOScheduler +
+
+
+GIOSchedulerJobFunc, user_function in GIOScheduler +
+
+
+GIOStream, struct in GIOStream +
+
+
+GIOStream:closed, object property in GIOStream +
+
+
+GIOStream:input-stream, object property in GIOStream +
+
+
+GIOStream:output-stream, object property in GIOStream +
+
+
+GIOStreamSpliceFlags, enum in GIOStream +
+
+
+G_IO_ERROR, macro in GIOError +
+
+
+g_io_error_from_errno, function in GIOError +
+
+
+g_io_error_from_win32_error, function in GIOError +
+
+
+g_io_extension_get_name, function in Extension Points +
+
+
+g_io_extension_get_priority, function in Extension Points +
+
+
+g_io_extension_get_type, function in Extension Points +
+
+
+g_io_extension_point_get_extensions, function in Extension Points +
+
+
+g_io_extension_point_get_extension_by_name, function in Extension Points +
+
+
+g_io_extension_point_get_required_type, function in Extension Points +
+
+
+g_io_extension_point_implement, function in Extension Points +
+
+
+g_io_extension_point_lookup, function in Extension Points +
+
+
+g_io_extension_point_register, function in Extension Points +
+
+
+g_io_extension_point_set_required_type, function in Extension Points +
+
+
+g_io_extension_ref_class, function in Extension Points +
+
+
+g_io_modules_load_all_in_directory, function in GIOModule +
+
+
+g_io_modules_load_all_in_directory_with_scope, function in GIOModule +
+
+
+g_io_modules_scan_all_in_directory, function in GIOModule +
+
+
+g_io_modules_scan_all_in_directory_with_scope, function in GIOModule +
+
+
+g_io_module_load, function in GIOModule +
+
+
+g_io_module_new, function in GIOModule +
+
+
+g_io_module_query, function in GIOModule +
+
+
+g_io_module_scope_block, function in GIOModule +
+
+
+g_io_module_scope_free, function in GIOModule +
+
+
+g_io_module_scope_new, function in GIOModule +
+
+
+g_io_module_unload, function in GIOModule +
+
+
+g_io_scheduler_cancel_all_jobs, function in GIOScheduler +
+
+
+g_io_scheduler_job_send_to_mainloop, function in GIOScheduler +
+
+
+g_io_scheduler_job_send_to_mainloop_async, function in GIOScheduler +
+
+
+g_io_scheduler_push_job, function in GIOScheduler +
+
+
+g_io_stream_clear_pending, function in GIOStream +
+
+
+g_io_stream_close, function in GIOStream +
+
+
+g_io_stream_close_async, function in GIOStream +
+
+
+g_io_stream_close_finish, function in GIOStream +
+
+
+g_io_stream_get_input_stream, function in GIOStream +
+
+
+g_io_stream_get_output_stream, function in GIOStream +
+
+
+g_io_stream_has_pending, function in GIOStream +
+
+
+g_io_stream_is_closed, function in GIOStream +
+
+
+g_io_stream_set_pending, function in GIOStream +
+
+
+g_io_stream_splice_async, function in GIOStream +
+
+
+g_io_stream_splice_finish, function in GIOStream +
+
+

K

+
+g_keyfile_settings_backend_new, function in GSettingsBackend +
+
+

L

+
+GListModel, struct in GListModel +
+
+
+GListModel::items-changed, object signal in GListModel +
+
+
+GListModelInterface, struct in GListModel +
+
+
+GListStore, struct in GListStore +
+
+
+GListStore:item-type, object property in GListStore +
+
+
+g_list_model_get_item, function in GListModel +
+
+
+g_list_model_get_item_type, function in GListModel +
+
+
+g_list_model_get_n_items, function in GListModel +
+
+
+g_list_model_get_object, function in GListModel +
+
+
+g_list_model_items_changed, function in GListModel +
+
+
+g_list_store_append, function in GListStore +
+
+
+g_list_store_insert, function in GListStore +
+
+
+g_list_store_insert_sorted, function in GListStore +
+
+
+g_list_store_new, function in GListStore +
+
+
+g_list_store_remove, function in GListStore +
+
+
+g_list_store_remove_all, function in GListStore +
+
+
+g_list_store_sort, function in GListStore +
+
+
+g_list_store_splice, function in GListStore +
+
+
+GLoadableIcon, struct in GLoadableIcon +
+
+
+GLoadableIconIface, struct in GLoadableIcon +
+
+
+g_loadable_icon_load, function in GLoadableIcon +
+
+
+g_loadable_icon_load_async, function in GLoadableIcon +
+
+
+g_loadable_icon_load_finish, function in GLoadableIcon +
+
+

M

+
+GMemoryInputStream, struct in GMemoryInputStream +
+
+
+GMemoryOutputStream, struct in GMemoryOutputStream +
+
+
+GMemoryOutputStream:data, object property in GMemoryOutputStream +
+
+
+GMemoryOutputStream:data-size, object property in GMemoryOutputStream +
+
+
+GMemoryOutputStream:destroy-function, object property in GMemoryOutputStream +
+
+
+GMemoryOutputStream:realloc-function, object property in GMemoryOutputStream +
+
+
+GMemoryOutputStream:size, object property in GMemoryOutputStream +
+
+
+g_memory_input_stream_add_bytes, function in GMemoryInputStream +
+
+
+g_memory_input_stream_add_data, function in GMemoryInputStream +
+
+
+g_memory_input_stream_new, function in GMemoryInputStream +
+
+
+g_memory_input_stream_new_from_bytes, function in GMemoryInputStream +
+
+
+g_memory_input_stream_new_from_data, function in GMemoryInputStream +
+
+
+g_memory_output_stream_get_data, function in GMemoryOutputStream +
+
+
+g_memory_output_stream_get_data_size, function in GMemoryOutputStream +
+
+
+g_memory_output_stream_get_size, function in GMemoryOutputStream +
+
+
+g_memory_output_stream_new, function in GMemoryOutputStream +
+
+
+g_memory_output_stream_new_resizable, function in GMemoryOutputStream +
+
+
+g_memory_output_stream_steal_as_bytes, function in GMemoryOutputStream +
+
+
+g_memory_output_stream_steal_data, function in GMemoryOutputStream +
+
+
+g_memory_settings_backend_new, function in GSettingsBackend +
+
+
+GMenu, struct in GMenu +
+
+
+GMenuAttributeIter, struct in GMenuModel +
+
+
+GMenuItem, struct in GMenu +
+
+
+GMenuLinkIter, struct in GMenuModel +
+
+
+GMenuModel, struct in GMenuModel +
+
+
+GMenuModel::items-changed, object signal in GMenuModel +
+
+
+g_menu_append, function in GMenu +
+
+
+g_menu_append_item, function in GMenu +
+
+
+g_menu_append_section, function in GMenu +
+
+
+g_menu_append_submenu, function in GMenu +
+
+
+G_MENU_ATTRIBUTE_ACTION, macro in GMenuModel +
+
+
+G_MENU_ATTRIBUTE_ACTION_NAMESPACE, macro in GMenuModel +
+
+
+G_MENU_ATTRIBUTE_ICON, macro in GMenuModel +
+
+
+g_menu_attribute_iter_get_name, function in GMenuModel +
+
+
+g_menu_attribute_iter_get_next, function in GMenuModel +
+
+
+g_menu_attribute_iter_get_value, function in GMenuModel +
+
+
+g_menu_attribute_iter_next, function in GMenuModel +
+
+
+G_MENU_ATTRIBUTE_LABEL, macro in GMenuModel +
+
+
+G_MENU_ATTRIBUTE_TARGET, macro in GMenuModel +
+
+
+g_menu_freeze, function in GMenu +
+
+
+g_menu_insert, function in GMenu +
+
+
+g_menu_insert_item, function in GMenu +
+
+
+g_menu_insert_section, function in GMenu +
+
+
+g_menu_insert_submenu, function in GMenu +
+
+
+g_menu_item_get_attribute, function in GMenu +
+
+
+g_menu_item_get_attribute_value, function in GMenu +
+
+
+g_menu_item_get_link, function in GMenu +
+
+
+g_menu_item_new, function in GMenu +
+
+
+g_menu_item_new_from_model, function in GMenu +
+
+
+g_menu_item_new_section, function in GMenu +
+
+
+g_menu_item_new_submenu, function in GMenu +
+
+
+g_menu_item_set_action_and_target, function in GMenu +
+
+
+g_menu_item_set_action_and_target_value, function in GMenu +
+
+
+g_menu_item_set_attribute, function in GMenu +
+
+
+g_menu_item_set_attribute_value, function in GMenu +
+
+
+g_menu_item_set_detailed_action, function in GMenu +
+
+
+g_menu_item_set_icon, function in GMenu +
+
+
+g_menu_item_set_label, function in GMenu +
+
+
+g_menu_item_set_link, function in GMenu +
+
+
+g_menu_item_set_section, function in GMenu +
+
+
+g_menu_item_set_submenu, function in GMenu +
+
+
+g_menu_link_iter_get_name, function in GMenuModel +
+
+
+g_menu_link_iter_get_next, function in GMenuModel +
+
+
+g_menu_link_iter_get_value, function in GMenuModel +
+
+
+g_menu_link_iter_next, function in GMenuModel +
+
+
+G_MENU_LINK_SECTION, macro in GMenuModel +
+
+
+G_MENU_LINK_SUBMENU, macro in GMenuModel +
+
+
+g_menu_model_get_item_attribute, function in GMenuModel +
+
+
+g_menu_model_get_item_attribute_value, function in GMenuModel +
+
+
+g_menu_model_get_item_link, function in GMenuModel +
+
+
+g_menu_model_get_n_items, function in GMenuModel +
+
+
+g_menu_model_is_mutable, function in GMenuModel +
+
+
+g_menu_model_items_changed, function in GMenuModel +
+
+
+g_menu_model_iterate_item_attributes, function in GMenuModel +
+
+
+g_menu_model_iterate_item_links, function in GMenuModel +
+
+
+g_menu_new, function in GMenu +
+
+
+g_menu_prepend, function in GMenu +
+
+
+g_menu_prepend_item, function in GMenu +
+
+
+g_menu_prepend_section, function in GMenu +
+
+
+g_menu_prepend_submenu, function in GMenu +
+
+
+g_menu_remove, function in GMenu +
+
+
+g_menu_remove_all, function in GMenu +
+
+
+GMount, struct in GMount +
+
+
+GMount::changed, object signal in GMount +
+
+
+GMount::pre-unmount, object signal in GMount +
+
+
+GMount::unmounted, object signal in GMount +
+
+
+GMountIface, struct in GMount +
+
+
+GMountMountFlags, enum in GMount +
+
+
+GMountOperation, struct in GMountOperation +
+
+
+GMountOperation::aborted, object signal in GMountOperation +
+
+
+GMountOperation::ask-password, object signal in GMountOperation +
+
+
+GMountOperation::ask-question, object signal in GMountOperation +
+
+
+GMountOperation::reply, object signal in GMountOperation +
+
+
+GMountOperation::show-processes, object signal in GMountOperation +
+
+
+GMountOperation::show-unmount-progress, object signal in GMountOperation +
+
+
+GMountOperation:anonymous, object property in GMountOperation +
+
+
+GMountOperation:choice, object property in GMountOperation +
+
+
+GMountOperation:domain, object property in GMountOperation +
+
+
+GMountOperation:password, object property in GMountOperation +
+
+
+GMountOperation:password-save, object property in GMountOperation +
+
+
+GMountOperation:username, object property in GMountOperation +
+
+
+GMountOperationResult, enum in GMountOperation +
+
+
+GMountUnmountFlags, enum in GMount +
+
+
+g_mount_can_eject, function in GMount +
+
+
+g_mount_can_unmount, function in GMount +
+
+
+g_mount_eject, function in GMount +
+
+
+g_mount_eject_finish, function in GMount +
+
+
+g_mount_eject_with_operation, function in GMount +
+
+
+g_mount_eject_with_operation_finish, function in GMount +
+
+
+g_mount_get_default_location, function in GMount +
+
+
+g_mount_get_drive, function in GMount +
+
+
+g_mount_get_icon, function in GMount +
+
+
+g_mount_get_name, function in GMount +
+
+
+g_mount_get_root, function in GMount +
+
+
+g_mount_get_sort_key, function in GMount +
+
+
+g_mount_get_symbolic_icon, function in GMount +
+
+
+g_mount_get_uuid, function in GMount +
+
+
+g_mount_get_volume, function in GMount +
+
+
+g_mount_guess_content_type, function in GMount +
+
+
+g_mount_guess_content_type_finish, function in GMount +
+
+
+g_mount_guess_content_type_sync, function in GMount +
+
+
+g_mount_is_shadowed, function in GMount +
+
+
+g_mount_operation_get_anonymous, function in GMountOperation +
+
+
+g_mount_operation_get_choice, function in GMountOperation +
+
+
+g_mount_operation_get_domain, function in GMountOperation +
+
+
+g_mount_operation_get_password, function in GMountOperation +
+
+
+g_mount_operation_get_password_save, function in GMountOperation +
+
+
+g_mount_operation_get_username, function in GMountOperation +
+
+
+g_mount_operation_new, function in GMountOperation +
+
+
+g_mount_operation_reply, function in GMountOperation +
+
+
+g_mount_operation_set_anonymous, function in GMountOperation +
+
+
+g_mount_operation_set_choice, function in GMountOperation +
+
+
+g_mount_operation_set_domain, function in GMountOperation +
+
+
+g_mount_operation_set_password, function in GMountOperation +
+
+
+g_mount_operation_set_password_save, function in GMountOperation +
+
+
+g_mount_operation_set_username, function in GMountOperation +
+
+
+g_mount_remount, function in GMount +
+
+
+g_mount_remount_finish, function in GMount +
+
+
+g_mount_shadow, function in GMount +
+
+
+g_mount_unmount, function in GMount +
+
+
+g_mount_unmount_finish, function in GMount +
+
+
+g_mount_unmount_with_operation, function in GMount +
+
+
+g_mount_unmount_with_operation_finish, function in GMount +
+
+
+g_mount_unshadow, function in GMount +
+
+

N

+
+GNativeSocketAddress, struct in GNativeSocketAddress +
+
+
+g_native_socket_address_new, function in GNativeSocketAddress +
+
+
+GNetworkAddress, struct in GNetworkAddress +
+
+
+GNetworkAddress:hostname, object property in GNetworkAddress +
+
+
+GNetworkAddress:port, object property in GNetworkAddress +
+
+
+GNetworkAddress:scheme, object property in GNetworkAddress +
+
+
+GNetworkConnectivity, enum in GNetworkMonitor +
+
+
+g_networking_init, function in gnetworking.h +
+
+
+GNetworkMonitor, struct in GNetworkMonitor +
+
+
+GNetworkMonitor::network-changed, object signal in GNetworkMonitor +
+
+
+GNetworkMonitor:connectivity, object property in GNetworkMonitor +
+
+
+GNetworkMonitor:network-available, object property in GNetworkMonitor +
+
+
+GNetworkMonitor:network-metered, object property in GNetworkMonitor +
+
+
+GNetworkMonitorInterface, struct in GNetworkMonitor +
+
+
+GNetworkService, struct in GNetworkService +
+
+
+GNetworkService:domain, object property in GNetworkService +
+
+
+GNetworkService:protocol, object property in GNetworkService +
+
+
+GNetworkService:scheme, object property in GNetworkService +
+
+
+GNetworkService:service, object property in GNetworkService +
+
+
+g_network_address_get_hostname, function in GNetworkAddress +
+
+
+g_network_address_get_port, function in GNetworkAddress +
+
+
+g_network_address_get_scheme, function in GNetworkAddress +
+
+
+g_network_address_new, function in GNetworkAddress +
+
+
+g_network_address_new_loopback, function in GNetworkAddress +
+
+
+g_network_address_parse, function in GNetworkAddress +
+
+
+g_network_address_parse_uri, function in GNetworkAddress +
+
+
+g_network_monitor_can_reach, function in GNetworkMonitor +
+
+
+g_network_monitor_can_reach_async, function in GNetworkMonitor +
+
+
+g_network_monitor_can_reach_finish, function in GNetworkMonitor +
+
+
+G_NETWORK_MONITOR_EXTENSION_POINT_NAME, macro in GNetworkMonitor +
+
+
+g_network_monitor_get_connectivity, function in GNetworkMonitor +
+
+
+g_network_monitor_get_default, function in GNetworkMonitor +
+
+
+g_network_monitor_get_network_available, function in GNetworkMonitor +
+
+
+g_network_monitor_get_network_metered, function in GNetworkMonitor +
+
+
+g_network_service_get_domain, function in GNetworkService +
+
+
+g_network_service_get_protocol, function in GNetworkService +
+
+
+g_network_service_get_scheme, function in GNetworkService +
+
+
+g_network_service_get_service, function in GNetworkService +
+
+
+g_network_service_new, function in GNetworkService +
+
+
+g_network_service_set_scheme, function in GNetworkService +
+
+
+GNotification, struct in GNotification +
+
+
+GNotificationPriority, enum in GNotification +
+
+
+g_notification_add_button, function in GNotification +
+
+
+g_notification_add_button_with_target, function in GNotification +
+
+
+g_notification_add_button_with_target_value, function in GNotification +
+
+
+g_notification_new, function in GNotification +
+
+
+g_notification_set_body, function in GNotification +
+
+
+g_notification_set_default_action, function in GNotification +
+
+
+g_notification_set_default_action_and_target, function in GNotification +
+
+
+g_notification_set_default_action_and_target_value, function in GNotification +
+
+
+g_notification_set_icon, function in GNotification +
+
+
+g_notification_set_priority, function in GNotification +
+
+
+g_notification_set_title, function in GNotification +
+
+
+g_notification_set_urgent, function in GNotification +
+
+
+g_null_settings_backend_new, function in GSettingsBackend +
+
+

O

+
+GOutputMessage, struct in GSocket +
+
+
+GOutputStream, struct in GOutputStream +
+
+
+GOutputStreamSpliceFlags, enum in GOutputStream +
+
+
+GOutputVector, struct in GSocket +
+
+
+g_output_stream_clear_pending, function in GOutputStream +
+
+
+g_output_stream_close, function in GOutputStream +
+
+
+g_output_stream_close_async, function in GOutputStream +
+
+
+g_output_stream_close_finish, function in GOutputStream +
+
+
+g_output_stream_flush, function in GOutputStream +
+
+
+g_output_stream_flush_async, function in GOutputStream +
+
+
+g_output_stream_flush_finish, function in GOutputStream +
+
+
+g_output_stream_has_pending, function in GOutputStream +
+
+
+g_output_stream_is_closed, function in GOutputStream +
+
+
+g_output_stream_is_closing, function in GOutputStream +
+
+
+g_output_stream_printf, function in GOutputStream +
+
+
+g_output_stream_set_pending, function in GOutputStream +
+
+
+g_output_stream_splice, function in GOutputStream +
+
+
+g_output_stream_splice_async, function in GOutputStream +
+
+
+g_output_stream_splice_finish, function in GOutputStream +
+
+
+g_output_stream_vprintf, function in GOutputStream +
+
+
+g_output_stream_write, function in GOutputStream +
+
+
+g_output_stream_write_all, function in GOutputStream +
+
+
+g_output_stream_write_all_async, function in GOutputStream +
+
+
+g_output_stream_write_all_finish, function in GOutputStream +
+
+
+g_output_stream_write_async, function in GOutputStream +
+
+
+g_output_stream_write_bytes, function in GOutputStream +
+
+
+g_output_stream_write_bytes_async, function in GOutputStream +
+
+
+g_output_stream_write_bytes_finish, function in GOutputStream +
+
+
+g_output_stream_write_finish, function in GOutputStream +
+
+

P

+
+GPasswordSave, enum in GMountOperation +
+
+
+GPermission, struct in GPermission +
+
+
+GPermission:allowed, object property in GPermission +
+
+
+GPermission:can-acquire, object property in GPermission +
+
+
+GPermission:can-release, object property in GPermission +
+
+
+g_permission_acquire, function in GPermission +
+
+
+g_permission_acquire_async, function in GPermission +
+
+
+g_permission_acquire_finish, function in GPermission +
+
+
+g_permission_get_allowed, function in GPermission +
+
+
+g_permission_get_can_acquire, function in GPermission +
+
+
+g_permission_get_can_release, function in GPermission +
+
+
+g_permission_impl_update, function in GPermission +
+
+
+g_permission_release, function in GPermission +
+
+
+g_permission_release_async, function in GPermission +
+
+
+g_permission_release_finish, function in GPermission +
+
+
+GPollableInputStream, struct in GPollableInputStream +
+
+
+GPollableInputStreamInterface, struct in GPollableInputStream +
+
+
+GPollableOutputStream, struct in GPollableOutputStream +
+
+
+GPollableOutputStreamInterface, struct in GPollableOutputStream +
+
+
+GPollableSourceFunc, user_function in gpollableutils +
+
+
+g_pollable_input_stream_can_poll, function in GPollableInputStream +
+
+
+g_pollable_input_stream_create_source, function in GPollableInputStream +
+
+
+g_pollable_input_stream_is_readable, function in GPollableInputStream +
+
+
+g_pollable_input_stream_read_nonblocking, function in GPollableInputStream +
+
+
+g_pollable_output_stream_can_poll, function in GPollableOutputStream +
+
+
+g_pollable_output_stream_create_source, function in GPollableOutputStream +
+
+
+g_pollable_output_stream_is_writable, function in GPollableOutputStream +
+
+
+g_pollable_output_stream_write_nonblocking, function in GPollableOutputStream +
+
+
+g_pollable_source_new, function in gpollableutils +
+
+
+g_pollable_source_new_full, function in gpollableutils +
+
+
+g_pollable_stream_read, function in gpollableutils +
+
+
+g_pollable_stream_write, function in gpollableutils +
+
+
+g_pollable_stream_write_all, function in gpollableutils +
+
+
+GPropertyAction, struct in GPropertyAction +
+
+
+GPropertyAction:enabled, object property in GPropertyAction +
+
+
+GPropertyAction:invert-boolean, object property in GPropertyAction +
+
+
+GPropertyAction:name, object property in GPropertyAction +
+
+
+GPropertyAction:object, object property in GPropertyAction +
+
+
+GPropertyAction:parameter-type, object property in GPropertyAction +
+
+
+GPropertyAction:property-name, object property in GPropertyAction +
+
+
+GPropertyAction:state, object property in GPropertyAction +
+
+
+GPropertyAction:state-type, object property in GPropertyAction +
+
+
+g_property_action_new, function in GPropertyAction +
+
+
+GProxy, struct in GProxy +
+
+
+GProxyAddress, struct in GProxyAddress +
+
+
+GProxyAddress:destination-hostname, object property in GProxyAddress +
+
+
+GProxyAddress:destination-port, object property in GProxyAddress +
+
+
+GProxyAddress:destination-protocol, object property in GProxyAddress +
+
+
+GProxyAddress:password, object property in GProxyAddress +
+
+
+GProxyAddress:protocol, object property in GProxyAddress +
+
+
+GProxyAddress:uri, object property in GProxyAddress +
+
+
+GProxyAddress:username, object property in GProxyAddress +
+
+
+GProxyAddressClass, struct in GProxyAddress +
+
+
+GProxyAddressEnumerator, struct in GSocketConnectable +
+
+
+GProxyAddressEnumerator:connectable, object property in GSocketConnectable +
+
+
+GProxyAddressEnumerator:default-port, object property in GSocketConnectable +
+
+
+GProxyAddressEnumerator:proxy-resolver, object property in GSocketConnectable +
+
+
+GProxyAddressEnumerator:uri, object property in GSocketConnectable +
+
+
+GProxyInterface, struct in GProxy +
+
+
+GProxyResolver, struct in GProxyResolver +
+
+
+GProxyResolverInterface, struct in GProxyResolver +
+
+
+g_proxy_address_get_destination_hostname, function in GProxyAddress +
+
+
+g_proxy_address_get_destination_port, function in GProxyAddress +
+
+
+g_proxy_address_get_destination_protocol, function in GProxyAddress +
+
+
+g_proxy_address_get_password, function in GProxyAddress +
+
+
+g_proxy_address_get_protocol, function in GProxyAddress +
+
+
+g_proxy_address_get_uri, function in GProxyAddress +
+
+
+g_proxy_address_get_username, function in GProxyAddress +
+
+
+g_proxy_address_new, function in GProxyAddress +
+
+
+g_proxy_connect, function in GProxy +
+
+
+g_proxy_connect_async, function in GProxy +
+
+
+g_proxy_connect_finish, function in GProxy +
+
+
+G_PROXY_EXTENSION_POINT_NAME, macro in GProxy +
+
+
+g_proxy_get_default_for_protocol, function in GProxy +
+
+
+G_PROXY_RESOLVER_EXTENSION_POINT_NAME, macro in GProxyResolver +
+
+
+g_proxy_resolver_get_default, function in GProxyResolver +
+
+
+g_proxy_resolver_is_supported, function in GProxyResolver +
+
+
+g_proxy_resolver_lookup, function in GProxyResolver +
+
+
+g_proxy_resolver_lookup_async, function in GProxyResolver +
+
+
+g_proxy_resolver_lookup_finish, function in GProxyResolver +
+
+
+g_proxy_supports_hostname, function in GProxy +
+
+

R

+
+GReallocFunc, user_function in GMemoryOutputStream +
+
+
+GRemoteActionGroup, struct in GRemoteActionGroup +
+
+
+GRemoteActionGroupInterface, struct in GRemoteActionGroup +
+
+
+g_remote_action_group_activate_action_full, function in GRemoteActionGroup +
+
+
+g_remote_action_group_change_action_state_full, function in GRemoteActionGroup +
+
+
+GResolver, struct in GResolver +
+
+
+GResolver::reload, object signal in GResolver +
+
+
+GResolverError, enum in GResolver +
+
+
+GResolverRecordType, enum in GResolver +
+
+
+G_RESOLVER_ERROR, macro in GResolver +
+
+
+g_resolver_free_addresses, function in GResolver +
+
+
+g_resolver_free_targets, function in GResolver +
+
+
+g_resolver_get_default, function in GResolver +
+
+
+g_resolver_lookup_by_address, function in GResolver +
+
+
+g_resolver_lookup_by_address_async, function in GResolver +
+
+
+g_resolver_lookup_by_address_finish, function in GResolver +
+
+
+g_resolver_lookup_by_name, function in GResolver +
+
+
+g_resolver_lookup_by_name_async, function in GResolver +
+
+
+g_resolver_lookup_by_name_finish, function in GResolver +
+
+
+g_resolver_lookup_records, function in GResolver +
+
+
+g_resolver_lookup_records_async, function in GResolver +
+
+
+g_resolver_lookup_records_finish, function in GResolver +
+
+
+g_resolver_lookup_service, function in GResolver +
+
+
+g_resolver_lookup_service_async, function in GResolver +
+
+
+g_resolver_lookup_service_finish, function in GResolver +
+
+
+g_resolver_set_default, function in GResolver +
+
+
+GResource, struct in GResource +
+
+
+GResourceError, enum in GResource +
+
+
+GResourceFlags, enum in GResource +
+
+
+GResourceLookupFlags, enum in GResource +
+
+
+g_resources_enumerate_children, function in GResource +
+
+
+g_resources_get_info, function in GResource +
+
+
+g_resources_lookup_data, function in GResource +
+
+
+g_resources_open_stream, function in GResource +
+
+
+g_resources_register, function in GResource +
+
+
+g_resources_unregister, function in GResource +
+
+
+g_resource_enumerate_children, function in GResource +
+
+
+G_RESOURCE_ERROR, macro in GResource +
+
+
+g_resource_get_info, function in GResource +
+
+
+g_resource_load, function in GResource +
+
+
+g_resource_lookup_data, function in GResource +
+
+
+g_resource_new_from_data, function in GResource +
+
+
+g_resource_open_stream, function in GResource +
+
+
+g_resource_ref, function in GResource +
+
+
+g_resource_unref, function in GResource +
+
+

S

+
+GSeekable, struct in GSeekable +
+
+
+GSeekableIface, struct in GSeekable +
+
+
+g_seekable_can_seek, function in GSeekable +
+
+
+g_seekable_can_truncate, function in GSeekable +
+
+
+g_seekable_seek, function in GSeekable +
+
+
+g_seekable_tell, function in GSeekable +
+
+
+g_seekable_truncate, function in GSeekable +
+
+
+GSettings, struct in GSettings +
+
+
+GSettings::change-event, object signal in GSettings +
+
+
+GSettings::changed, object signal in GSettings +
+
+
+GSettings::writable-change-event, object signal in GSettings +
+
+
+GSettings::writable-changed, object signal in GSettings +
+
+
+GSettings:backend, object property in GSettings +
+
+
+GSettings:delay-apply, object property in GSettings +
+
+
+GSettings:has-unapplied, object property in GSettings +
+
+
+GSettings:path, object property in GSettings +
+
+
+GSettings:schema, object property in GSettings +
+
+
+GSettings:schema-id, object property in GSettings +
+
+
+GSettings:settings-schema, object property in GSettings +
+
+
+GSettingsBackend, struct in GSettingsBackend +
+
+
+GSettingsBackendClass, struct in GSettingsBackend +
+
+
+GSettingsBindFlags, enum in GSettings +
+
+
+GSettingsBindGetMapping, user_function in GSettings +
+
+
+GSettingsBindSetMapping, user_function in GSettings +
+
+
+GSettingsGetMapping, user_function in GSettings +
+
+
+GSettingsSchema, struct in GSettingsSchema, GSettingsSchemaSource +
+
+
+GSettingsSchemaKey, struct in GSettingsSchema, GSettingsSchemaSource +
+
+
+GSettingsSchemaSource, struct in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_apply, function in GSettings +
+
+
+g_settings_backend_changed, function in GSettingsBackend +
+
+
+g_settings_backend_changed_tree, function in GSettingsBackend +
+
+
+G_SETTINGS_BACKEND_EXTENSION_POINT_NAME, macro in GSettingsBackend +
+
+
+g_settings_backend_flatten_tree, function in GSettingsBackend +
+
+
+g_settings_backend_get_default, function in GSettingsBackend +
+
+
+g_settings_backend_keys_changed, function in GSettingsBackend +
+
+
+g_settings_backend_path_changed, function in GSettingsBackend +
+
+
+g_settings_backend_path_writable_changed, function in GSettingsBackend +
+
+
+g_settings_backend_writable_changed, function in GSettingsBackend +
+
+
+g_settings_bind, function in GSettings +
+
+
+g_settings_bind_with_mapping, function in GSettings +
+
+
+g_settings_bind_writable, function in GSettings +
+
+
+g_settings_create_action, function in GSettings +
+
+
+g_settings_delay, function in GSettings +
+
+
+g_settings_get, function in GSettings +
+
+
+g_settings_get_boolean, function in GSettings +
+
+
+g_settings_get_child, function in GSettings +
+
+
+g_settings_get_default_value, function in GSettings +
+
+
+g_settings_get_double, function in GSettings +
+
+
+g_settings_get_enum, function in GSettings +
+
+
+g_settings_get_flags, function in GSettings +
+
+
+g_settings_get_has_unapplied, function in GSettings +
+
+
+g_settings_get_int, function in GSettings +
+
+
+g_settings_get_mapped, function in GSettings +
+
+
+g_settings_get_range, function in GSettings +
+
+
+g_settings_get_string, function in GSettings +
+
+
+g_settings_get_strv, function in GSettings +
+
+
+g_settings_get_uint, function in GSettings +
+
+
+g_settings_get_user_value, function in GSettings +
+
+
+g_settings_get_value, function in GSettings +
+
+
+g_settings_is_writable, function in GSettings +
+
+
+g_settings_list_children, function in GSettings +
+
+
+g_settings_list_keys, function in GSettings +
+
+
+g_settings_list_relocatable_schemas, function in GSettings +
+
+
+g_settings_list_schemas, function in GSettings +
+
+
+g_settings_new, function in GSettings +
+
+
+g_settings_new_full, function in GSettings +
+
+
+g_settings_new_with_backend, function in GSettings +
+
+
+g_settings_new_with_backend_and_path, function in GSettings +
+
+
+g_settings_new_with_path, function in GSettings +
+
+
+g_settings_range_check, function in GSettings +
+
+
+g_settings_reset, function in GSettings +
+
+
+g_settings_revert, function in GSettings +
+
+
+g_settings_schema_get_id, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_get_key, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_get_path, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_has_key, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_get_default_value, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_get_description, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_get_name, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_get_range, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_get_summary, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_get_value_type, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_range_check, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_ref, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_key_unref, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_list_children, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_list_keys, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_ref, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_source_get_default, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_source_list_schemas, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_source_lookup, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_source_new_from_directory, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_source_ref, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_source_unref, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_schema_unref, function in GSettingsSchema, GSettingsSchemaSource +
+
+
+g_settings_set, function in GSettings +
+
+
+g_settings_set_boolean, function in GSettings +
+
+
+g_settings_set_double, function in GSettings +
+
+
+g_settings_set_enum, function in GSettings +
+
+
+g_settings_set_flags, function in GSettings +
+
+
+g_settings_set_int, function in GSettings +
+
+
+g_settings_set_string, function in GSettings +
+
+
+g_settings_set_strv, function in GSettings +
+
+
+g_settings_set_uint, function in GSettings +
+
+
+g_settings_set_value, function in GSettings +
+
+
+g_settings_sync, function in GSettings +
+
+
+g_settings_unbind, function in GSettings +
+
+
+GSimpleAction, struct in GSimpleAction +
+
+
+GSimpleAction::activate, object signal in GSimpleAction +
+
+
+GSimpleAction::change-state, object signal in GSimpleAction +
+
+
+GSimpleAction:enabled, object property in GSimpleAction +
+
+
+GSimpleAction:name, object property in GSimpleAction +
+
+
+GSimpleAction:parameter-type, object property in GSimpleAction +
+
+
+GSimpleAction:state, object property in GSimpleAction +
+
+
+GSimpleAction:state-type, object property in GSimpleAction +
+
+
+GSimpleActionGroup, struct in GSimpleActionGroup +
+
+
+GSimpleAsyncResult, struct in GSimpleAsyncResult +
+
+
+GSimpleAsyncThreadFunc, user_function in GSimpleAsyncResult +
+
+
+GSimpleIOStream, struct in GSimpleIOStream +
+
+
+GSimpleIOStream:input-stream, object property in GSimpleIOStream +
+
+
+GSimpleIOStream:output-stream, object property in GSimpleIOStream +
+
+
+GSimplePermission, struct in GSimplePermission +
+
+
+GSimpleProxyResolver, struct in GSimpleProxyResolver +
+
+
+GSimpleProxyResolver:default-proxy, object property in GSimpleProxyResolver +
+
+
+GSimpleProxyResolver:ignore-hosts, object property in GSimpleProxyResolver +
+
+
+g_simple_action_group_add_entries, function in GSimpleActionGroup +
+
+
+g_simple_action_group_insert, function in GSimpleActionGroup +
+
+
+g_simple_action_group_lookup, function in GSimpleActionGroup +
+
+
+g_simple_action_group_new, function in GSimpleActionGroup +
+
+
+g_simple_action_group_remove, function in GSimpleActionGroup +
+
+
+g_simple_action_new, function in GSimpleAction +
+
+
+g_simple_action_new_stateful, function in GSimpleAction +
+
+
+g_simple_action_set_enabled, function in GSimpleAction +
+
+
+g_simple_action_set_state, function in GSimpleAction +
+
+
+g_simple_action_set_state_hint, function in GSimpleAction +
+
+
+g_simple_async_report_error_in_idle, function in GSimpleAsyncResult +
+
+
+g_simple_async_report_gerror_in_idle, function in GSimpleAsyncResult +
+
+
+g_simple_async_report_take_gerror_in_idle, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_complete, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_complete_in_idle, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_get_op_res_gboolean, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_get_op_res_gpointer, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_get_op_res_gssize, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_get_source_tag, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_is_valid, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_new, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_new_error, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_new_from_error, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_new_take_error, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_propagate_error, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_run_in_thread, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_check_cancellable, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_error, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_error_va, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_from_error, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_handle_cancellation, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_op_res_gboolean, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_op_res_gpointer, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_set_op_res_gssize, function in GSimpleAsyncResult +
+
+
+g_simple_async_result_take_error, function in GSimpleAsyncResult +
+
+
+g_simple_io_stream_new, function in GSimpleIOStream +
+
+
+g_simple_permission_new, function in GSimplePermission +
+
+
+g_simple_proxy_resolver_new, function in GSimpleProxyResolver +
+
+
+g_simple_proxy_resolver_set_default_proxy, function in GSimpleProxyResolver +
+
+
+g_simple_proxy_resolver_set_ignore_hosts, function in GSimpleProxyResolver +
+
+
+g_simple_proxy_resolver_set_uri_proxy, function in GSimpleProxyResolver +
+
+
+GSocket, struct in GSocket +
+
+
+GSocket:blocking, object property in GSocket +
+
+
+GSocket:broadcast, object property in GSocket +
+
+
+GSocket:family, object property in GSocket +
+
+
+GSocket:fd, object property in GSocket +
+
+
+GSocket:keepalive, object property in GSocket +
+
+
+GSocket:listen-backlog, object property in GSocket +
+
+
+GSocket:local-address, object property in GSocket +
+
+
+GSocket:multicast-loopback, object property in GSocket +
+
+
+GSocket:multicast-ttl, object property in GSocket +
+
+
+GSocket:protocol, object property in GSocket +
+
+
+GSocket:remote-address, object property in GSocket +
+
+
+GSocket:timeout, object property in GSocket +
+
+
+GSocket:ttl, object property in GSocket +
+
+
+GSocket:type, object property in GSocket +
+
+
+GSocketAddress, struct in GSocketAddress +
+
+
+GSocketAddress:family, object property in GSocketAddress +
+
+
+GSocketAddressEnumerator, struct in GSocketConnectable +
+
+
+GSocketClient, struct in GSocketClient +
+
+
+GSocketClient::event, object signal in GSocketClient +
+
+
+GSocketClient:enable-proxy, object property in GSocketClient +
+
+
+GSocketClient:family, object property in GSocketClient +
+
+
+GSocketClient:local-address, object property in GSocketClient +
+
+
+GSocketClient:protocol, object property in GSocketClient +
+
+
+GSocketClient:proxy-resolver, object property in GSocketClient +
+
+
+GSocketClient:timeout, object property in GSocketClient +
+
+
+GSocketClient:tls, object property in GSocketClient +
+
+
+GSocketClient:tls-validation-flags, object property in GSocketClient +
+
+
+GSocketClient:type, object property in GSocketClient +
+
+
+GSocketClientEvent, enum in GSocketClient +
+
+
+GSocketConnectable, struct in GSocketConnectable +
+
+
+GSocketConnectableIface, struct in GSocketConnectable +
+
+
+GSocketConnection, struct in GSocketConnection +
+
+
+GSocketConnection:socket, object property in GSocketConnection +
+
+
+GSocketControlMessage, struct in GSocketControlMessage +
+
+
+GSocketFamily, enum in GSocketAddress +
+
+
+GSocketListener, struct in GSocketListener +
+
+
+GSocketListener::event, object signal in GSocketListener +
+
+
+GSocketListener:listen-backlog, object property in GSocketListener +
+
+
+GSocketListenerEvent, enum in GSocketListener +
+
+
+GSocketMsgFlags, enum in GSocket +
+
+
+GSocketProtocol, enum in GSocket +
+
+
+GSocketService, struct in GSocketService +
+
+
+GSocketService::incoming, object signal in GSocketService +
+
+
+GSocketService:active, object property in GSocketService +
+
+
+GSocketSourceFunc, user_function in GSocket +
+
+
+GSocketType, enum in GSocket +
+
+
+g_socket_accept, function in GSocket +
+
+
+g_socket_address_enumerator_next, function in GSocketConnectable +
+
+
+g_socket_address_enumerator_next_async, function in GSocketConnectable +
+
+
+g_socket_address_enumerator_next_finish, function in GSocketConnectable +
+
+
+g_socket_address_get_family, function in GSocketAddress +
+
+
+g_socket_address_get_native_size, function in GSocketAddress +
+
+
+g_socket_address_new_from_native, function in GSocketAddress +
+
+
+g_socket_address_to_native, function in GSocketAddress +
+
+
+g_socket_bind, function in GSocket +
+
+
+g_socket_check_connect_result, function in GSocket +
+
+
+g_socket_client_add_application_proxy, function in GSocketClient +
+
+
+g_socket_client_connect, function in GSocketClient +
+
+
+g_socket_client_connect_async, function in GSocketClient +
+
+
+g_socket_client_connect_finish, function in GSocketClient +
+
+
+g_socket_client_connect_to_host, function in GSocketClient +
+
+
+g_socket_client_connect_to_host_async, function in GSocketClient +
+
+
+g_socket_client_connect_to_host_finish, function in GSocketClient +
+
+
+g_socket_client_connect_to_service, function in GSocketClient +
+
+
+g_socket_client_connect_to_service_async, function in GSocketClient +
+
+
+g_socket_client_connect_to_service_finish, function in GSocketClient +
+
+
+g_socket_client_connect_to_uri, function in GSocketClient +
+
+
+g_socket_client_connect_to_uri_async, function in GSocketClient +
+
+
+g_socket_client_connect_to_uri_finish, function in GSocketClient +
+
+
+g_socket_client_get_enable_proxy, function in GSocketClient +
+
+
+g_socket_client_get_family, function in GSocketClient +
+
+
+g_socket_client_get_local_address, function in GSocketClient +
+
+
+g_socket_client_get_protocol, function in GSocketClient +
+
+
+g_socket_client_get_proxy_resolver, function in GSocketClient +
+
+
+g_socket_client_get_socket_type, function in GSocketClient +
+
+
+g_socket_client_get_timeout, function in GSocketClient +
+
+
+g_socket_client_get_tls, function in GSocketClient +
+
+
+g_socket_client_get_tls_validation_flags, function in GSocketClient +
+
+
+g_socket_client_new, function in GSocketClient +
+
+
+g_socket_client_set_enable_proxy, function in GSocketClient +
+
+
+g_socket_client_set_family, function in GSocketClient +
+
+
+g_socket_client_set_local_address, function in GSocketClient +
+
+
+g_socket_client_set_protocol, function in GSocketClient +
+
+
+g_socket_client_set_proxy_resolver, function in GSocketClient +
+
+
+g_socket_client_set_socket_type, function in GSocketClient +
+
+
+g_socket_client_set_timeout, function in GSocketClient +
+
+
+g_socket_client_set_tls, function in GSocketClient +
+
+
+g_socket_client_set_tls_validation_flags, function in GSocketClient +
+
+
+g_socket_close, function in GSocket +
+
+
+g_socket_condition_check, function in GSocket +
+
+
+g_socket_condition_timed_wait, function in GSocket +
+
+
+g_socket_condition_wait, function in GSocket +
+
+
+g_socket_connect, function in GSocket +
+
+
+g_socket_connectable_enumerate, function in GSocketConnectable +
+
+
+g_socket_connectable_proxy_enumerate, function in GSocketConnectable +
+
+
+g_socket_connectable_to_string, function in GSocketConnectable +
+
+
+g_socket_connection_connect, function in GSocketConnection +
+
+
+g_socket_connection_connect_async, function in GSocketConnection +
+
+
+g_socket_connection_connect_finish, function in GSocketConnection +
+
+
+g_socket_connection_factory_create_connection, function in GSocketConnection +
+
+
+g_socket_connection_factory_lookup_type, function in GSocketConnection +
+
+
+g_socket_connection_factory_register_type, function in GSocketConnection +
+
+
+g_socket_connection_get_local_address, function in GSocketConnection +
+
+
+g_socket_connection_get_remote_address, function in GSocketConnection +
+
+
+g_socket_connection_get_socket, function in GSocketConnection +
+
+
+g_socket_connection_is_connected, function in GSocketConnection +
+
+
+g_socket_control_message_deserialize, function in GSocketControlMessage +
+
+
+g_socket_control_message_get_level, function in GSocketControlMessage +
+
+
+g_socket_control_message_get_msg_type, function in GSocketControlMessage +
+
+
+g_socket_control_message_get_size, function in GSocketControlMessage +
+
+
+g_socket_control_message_serialize, function in GSocketControlMessage +
+
+
+g_socket_create_source, function in GSocket +
+
+
+g_socket_get_available_bytes, function in GSocket +
+
+
+g_socket_get_blocking, function in GSocket +
+
+
+g_socket_get_broadcast, function in GSocket +
+
+
+g_socket_get_credentials, function in GSocket +
+
+
+g_socket_get_family, function in GSocket +
+
+
+g_socket_get_fd, function in GSocket +
+
+
+g_socket_get_keepalive, function in GSocket +
+
+
+g_socket_get_listen_backlog, function in GSocket +
+
+
+g_socket_get_local_address, function in GSocket +
+
+
+g_socket_get_multicast_loopback, function in GSocket +
+
+
+g_socket_get_multicast_ttl, function in GSocket +
+
+
+g_socket_get_option, function in GSocket +
+
+
+g_socket_get_protocol, function in GSocket +
+
+
+g_socket_get_remote_address, function in GSocket +
+
+
+g_socket_get_socket_type, function in GSocket +
+
+
+g_socket_get_timeout, function in GSocket +
+
+
+g_socket_get_ttl, function in GSocket +
+
+
+g_socket_is_closed, function in GSocket +
+
+
+g_socket_is_connected, function in GSocket +
+
+
+g_socket_join_multicast_group, function in GSocket +
+
+
+g_socket_leave_multicast_group, function in GSocket +
+
+
+g_socket_listen, function in GSocket +
+
+
+g_socket_listener_accept, function in GSocketListener +
+
+
+g_socket_listener_accept_async, function in GSocketListener +
+
+
+g_socket_listener_accept_finish, function in GSocketListener +
+
+
+g_socket_listener_accept_socket, function in GSocketListener +
+
+
+g_socket_listener_accept_socket_async, function in GSocketListener +
+
+
+g_socket_listener_accept_socket_finish, function in GSocketListener +
+
+
+g_socket_listener_add_address, function in GSocketListener +
+
+
+g_socket_listener_add_any_inet_port, function in GSocketListener +
+
+
+g_socket_listener_add_inet_port, function in GSocketListener +
+
+
+g_socket_listener_add_socket, function in GSocketListener +
+
+
+g_socket_listener_close, function in GSocketListener +
+
+
+g_socket_listener_new, function in GSocketListener +
+
+
+g_socket_listener_set_backlog, function in GSocketListener +
+
+
+g_socket_new, function in GSocket +
+
+
+g_socket_new_from_fd, function in GSocket +
+
+
+g_socket_receive, function in GSocket +
+
+
+g_socket_receive_from, function in GSocket +
+
+
+g_socket_receive_message, function in GSocket +
+
+
+g_socket_receive_messages, function in GSocket +
+
+
+g_socket_receive_with_blocking, function in GSocket +
+
+
+g_socket_send, function in GSocket +
+
+
+g_socket_send_message, function in GSocket +
+
+
+g_socket_send_messages, function in GSocket +
+
+
+g_socket_send_to, function in GSocket +
+
+
+g_socket_send_with_blocking, function in GSocket +
+
+
+g_socket_service_is_active, function in GSocketService +
+
+
+g_socket_service_new, function in GSocketService +
+
+
+g_socket_service_start, function in GSocketService +
+
+
+g_socket_service_stop, function in GSocketService +
+
+
+g_socket_set_blocking, function in GSocket +
+
+
+g_socket_set_broadcast, function in GSocket +
+
+
+g_socket_set_keepalive, function in GSocket +
+
+
+g_socket_set_listen_backlog, function in GSocket +
+
+
+g_socket_set_multicast_loopback, function in GSocket +
+
+
+g_socket_set_multicast_ttl, function in GSocket +
+
+
+g_socket_set_option, function in GSocket +
+
+
+g_socket_set_timeout, function in GSocket +
+
+
+g_socket_set_ttl, function in GSocket +
+
+
+g_socket_shutdown, function in GSocket +
+
+
+g_socket_speaks_ipv4, function in GSocket +
+
+
+GSrvTarget, struct in GSrvTarget +
+
+
+g_srv_target_copy, function in GSrvTarget +
+
+
+g_srv_target_free, function in GSrvTarget +
+
+
+g_srv_target_get_hostname, function in GSrvTarget +
+
+
+g_srv_target_get_port, function in GSrvTarget +
+
+
+g_srv_target_get_priority, function in GSrvTarget +
+
+
+g_srv_target_get_weight, function in GSrvTarget +
+
+
+g_srv_target_list_sort, function in GSrvTarget +
+
+
+g_srv_target_new, function in GSrvTarget +
+
+
+GStaticResource, struct in GResource +
+
+
+g_static_resource_fini, function in GResource +
+
+
+g_static_resource_get_resource, function in GResource +
+
+
+g_static_resource_init, function in GResource +
+
+
+GSubprocess, struct in GSubprocess +
+
+
+GSubprocess:argv, object property in GSubprocess +
+
+
+GSubprocess:flags, object property in GSubprocess +
+
+
+GSubprocessFlags, enum in GSubprocess +
+
+
+GSubprocessLauncher, struct in GSubprocessLauncher +
+
+
+GSubprocessLauncher:flags, object property in GSubprocessLauncher +
+
+
+g_subprocess_communicate, function in GSubprocess +
+
+
+g_subprocess_communicate_async, function in GSubprocess +
+
+
+g_subprocess_communicate_finish, function in GSubprocess +
+
+
+g_subprocess_communicate_utf8, function in GSubprocess +
+
+
+g_subprocess_communicate_utf8_async, function in GSubprocess +
+
+
+g_subprocess_communicate_utf8_finish, function in GSubprocess +
+
+
+g_subprocess_force_exit, function in GSubprocess +
+
+
+g_subprocess_get_exit_status, function in GSubprocess +
+
+
+g_subprocess_get_identifier, function in GSubprocess +
+
+
+g_subprocess_get_if_exited, function in GSubprocess +
+
+
+g_subprocess_get_if_signaled, function in GSubprocess +
+
+
+g_subprocess_get_status, function in GSubprocess +
+
+
+g_subprocess_get_stderr_pipe, function in GSubprocess +
+
+
+g_subprocess_get_stdin_pipe, function in GSubprocess +
+
+
+g_subprocess_get_stdout_pipe, function in GSubprocess +
+
+
+g_subprocess_get_successful, function in GSubprocess +
+
+
+g_subprocess_get_term_sig, function in GSubprocess +
+
+
+g_subprocess_launcher_getenv, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_new, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_setenv, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_set_child_setup, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_set_cwd, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_set_environ, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_set_flags, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_set_stderr_file_path, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_set_stdin_file_path, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_set_stdout_file_path, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_spawn, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_spawnv, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_take_fd, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_take_stderr_fd, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_take_stdin_fd, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_take_stdout_fd, function in GSubprocessLauncher +
+
+
+g_subprocess_launcher_unsetenv, function in GSubprocessLauncher +
+
+
+g_subprocess_new, function in GSubprocess +
+
+
+g_subprocess_newv, function in GSubprocess +
+
+
+g_subprocess_send_signal, function in GSubprocess +
+
+
+g_subprocess_wait, function in GSubprocess +
+
+
+g_subprocess_wait_async, function in GSubprocess +
+
+
+g_subprocess_wait_check, function in GSubprocess +
+
+
+g_subprocess_wait_check_async, function in GSubprocess +
+
+
+g_subprocess_wait_check_finish, function in GSubprocess +
+
+
+g_subprocess_wait_finish, function in GSubprocess +
+
+

T

+
+GTask, struct in GTask +
+
+
+GTask:completed, object property in GTask +
+
+
+GTaskThreadFunc, user_function in GTask +
+
+
+g_task_attach_source, function in GTask +
+
+
+g_task_get_cancellable, function in GTask +
+
+
+g_task_get_check_cancellable, function in GTask +
+
+
+g_task_get_completed, function in GTask +
+
+
+g_task_get_context, function in GTask +
+
+
+g_task_get_priority, function in GTask +
+
+
+g_task_get_return_on_cancel, function in GTask +
+
+
+g_task_get_source_object, function in GTask +
+
+
+g_task_get_source_tag, function in GTask +
+
+
+g_task_get_task_data, function in GTask +
+
+
+g_task_had_error, function in GTask +
+
+
+g_task_is_valid, function in GTask +
+
+
+g_task_new, function in GTask +
+
+
+g_task_propagate_boolean, function in GTask +
+
+
+g_task_propagate_int, function in GTask +
+
+
+g_task_propagate_pointer, function in GTask +
+
+
+g_task_report_error, function in GTask +
+
+
+g_task_report_new_error, function in GTask +
+
+
+g_task_return_boolean, function in GTask +
+
+
+g_task_return_error, function in GTask +
+
+
+g_task_return_error_if_cancelled, function in GTask +
+
+
+g_task_return_int, function in GTask +
+
+
+g_task_return_new_error, function in GTask +
+
+
+g_task_return_pointer, function in GTask +
+
+
+g_task_run_in_thread, function in GTask +
+
+
+g_task_run_in_thread_sync, function in GTask +
+
+
+g_task_set_check_cancellable, function in GTask +
+
+
+g_task_set_priority, function in GTask +
+
+
+g_task_set_return_on_cancel, function in GTask +
+
+
+g_task_set_source_tag, function in GTask +
+
+
+g_task_set_task_data, function in GTask +
+
+
+GTcpConnection, struct in GTcpConnection +
+
+
+GTcpConnection:graceful-disconnect, object property in GTcpConnection +
+
+
+GTcpWrapperConnection, struct in GTcpWrapperConnection +
+
+
+GTcpWrapperConnection:base-io-stream, object property in GTcpWrapperConnection +
+
+
+g_tcp_connection_get_graceful_disconnect, function in GTcpConnection +
+
+
+g_tcp_connection_set_graceful_disconnect, function in GTcpConnection +
+
+
+g_tcp_wrapper_connection_get_base_io_stream, function in GTcpWrapperConnection +
+
+
+g_tcp_wrapper_connection_new, function in GTcpWrapperConnection +
+
+
+GTestDBus, struct in GTestDBus +
+
+
+GTestDBus:flags, object property in GTestDBus +
+
+
+GTestDBusFlags, enum in GTestDBus +
+
+
+g_test_dbus_add_service_dir, function in GTestDBus +
+
+
+g_test_dbus_down, function in GTestDBus +
+
+
+g_test_dbus_get_bus_address, function in GTestDBus +
+
+
+g_test_dbus_get_flags, function in GTestDBus +
+
+
+g_test_dbus_new, function in GTestDBus +
+
+
+g_test_dbus_stop, function in GTestDBus +
+
+
+g_test_dbus_unset, function in GTestDBus +
+
+
+g_test_dbus_up, function in GTestDBus +
+
+
+GThemedIcon, struct in GThemedIcon +
+
+
+GThemedIcon:name, object property in GThemedIcon +
+
+
+GThemedIcon:names, object property in GThemedIcon +
+
+
+GThemedIcon:use-default-fallbacks, object property in GThemedIcon +
+
+
+g_themed_icon_append_name, function in GThemedIcon +
+
+
+g_themed_icon_get_names, function in GThemedIcon +
+
+
+g_themed_icon_new, function in GThemedIcon +
+
+
+g_themed_icon_new_from_names, function in GThemedIcon +
+
+
+g_themed_icon_new_with_default_fallbacks, function in GThemedIcon +
+
+
+g_themed_icon_prepend_name, function in GThemedIcon +
+
+
+GThreadedSocketService, struct in GThreadedSocketService +
+
+
+GThreadedSocketService::run, object signal in GThreadedSocketService +
+
+
+GThreadedSocketService:max-threads, object property in GThreadedSocketService +
+
+
+g_threaded_socket_service_new, function in GThreadedSocketService +
+
+
+GTlsAuthenticationMode, enum in TLS Overview +
+
+
+GTlsBackend, struct in GTlsBackend +
+
+
+GTlsBackendInterface, struct in GTlsBackend +
+
+
+GTlsCertificate, struct in GTlsCertificate +
+
+
+GTlsCertificate:certificate, object property in GTlsCertificate +
+
+
+GTlsCertificate:certificate-pem, object property in GTlsCertificate +
+
+
+GTlsCertificate:issuer, object property in GTlsCertificate +
+
+
+GTlsCertificate:private-key, object property in GTlsCertificate +
+
+
+GTlsCertificate:private-key-pem, object property in GTlsCertificate +
+
+
+GTlsCertificateFlags, enum in TLS Overview +
+
+
+GTlsCertificateRequestFlags, enum in GTlsInteraction +
+
+
+GTlsClientConnection, struct in GTlsClientConnection +
+
+
+GTlsClientConnection:accepted-cas, object property in GTlsClientConnection +
+
+
+GTlsClientConnection:server-identity, object property in GTlsClientConnection +
+
+
+GTlsClientConnection:use-ssl3, object property in GTlsClientConnection +
+
+
+GTlsClientConnection:validation-flags, object property in GTlsClientConnection +
+
+
+GTlsClientConnectionInterface, struct in GTlsClientConnection +
+
+
+GTlsConnection, struct in GTlsConnection +
+
+
+GTlsConnection::accept-certificate, object signal in GTlsConnection +
+
+
+GTlsConnection:base-io-stream, object property in GTlsConnection +
+
+
+GTlsConnection:certificate, object property in GTlsConnection +
+
+
+GTlsConnection:database, object property in GTlsConnection +
+
+
+GTlsConnection:interaction, object property in GTlsConnection +
+
+
+GTlsConnection:peer-certificate, object property in GTlsConnection +
+
+
+GTlsConnection:peer-certificate-errors, object property in GTlsConnection +
+
+
+GTlsConnection:rehandshake-mode, object property in GTlsConnection +
+
+
+GTlsConnection:require-close-notify, object property in GTlsConnection +
+
+
+GTlsConnection:use-system-certdb, object property in GTlsConnection +
+
+
+GTlsDatabase, struct in GTlsDatabase +
+
+
+GTlsDatabaseClass, struct in GTlsDatabase +
+
+
+GTlsDatabaseLookupFlags, enum in GTlsDatabase +
+
+
+GTlsDatabaseVerifyFlags, enum in GTlsDatabase +
+
+
+GTlsError, enum in TLS Overview +
+
+
+GTlsFileDatabase, struct in GTlsFileDatabase +
+
+
+GTlsFileDatabase:anchors, object property in GTlsFileDatabase +
+
+
+GTlsFileDatabaseInterface, struct in GTlsFileDatabase +
+
+
+GTlsInteraction, struct in GTlsInteraction +
+
+
+GTlsInteractionClass, struct in GTlsInteraction +
+
+
+GTlsInteractionResult, enum in GTlsInteraction +
+
+
+GTlsPassword, struct in GTlsPassword +
+
+
+GTlsPassword:description, object property in GTlsPassword +
+
+
+GTlsPassword:flags, object property in GTlsPassword +
+
+
+GTlsPassword:warning, object property in GTlsPassword +
+
+
+GTlsPasswordClass, struct in GTlsPassword +
+
+
+GTlsPasswordFlags, enum in GTlsPassword +
+
+
+GTlsRehandshakeMode, enum in GTlsConnection +
+
+
+GTlsServerConnection, struct in GTlsServerConnection +
+
+
+GTlsServerConnection:authentication-mode, object property in GTlsServerConnection +
+
+
+GTlsServerConnectionInterface, struct in GTlsServerConnection +
+
+
+G_TLS_BACKEND_EXTENSION_POINT_NAME, macro in GTlsBackend +
+
+
+g_tls_backend_get_certificate_type, function in GTlsBackend +
+
+
+g_tls_backend_get_client_connection_type, function in GTlsBackend +
+
+
+g_tls_backend_get_default, function in GTlsBackend +
+
+
+g_tls_backend_get_default_database, function in GTlsBackend +
+
+
+g_tls_backend_get_dtls_client_connection_type, function in GTlsBackend +
+
+
+g_tls_backend_get_dtls_server_connection_type, function in GTlsBackend +
+
+
+g_tls_backend_get_file_database_type, function in GTlsBackend +
+
+
+g_tls_backend_get_server_connection_type, function in GTlsBackend +
+
+
+g_tls_backend_supports_dtls, function in GTlsBackend +
+
+
+g_tls_backend_supports_tls, function in GTlsBackend +
+
+
+g_tls_certificate_get_issuer, function in GTlsCertificate +
+
+
+g_tls_certificate_is_same, function in GTlsCertificate +
+
+
+g_tls_certificate_list_new_from_file, function in GTlsCertificate +
+
+
+g_tls_certificate_new_from_file, function in GTlsCertificate +
+
+
+g_tls_certificate_new_from_files, function in GTlsCertificate +
+
+
+g_tls_certificate_new_from_pem, function in GTlsCertificate +
+
+
+g_tls_certificate_verify, function in GTlsCertificate +
+
+
+g_tls_client_connection_copy_session_state, function in GTlsClientConnection +
+
+
+g_tls_client_connection_get_accepted_cas, function in GTlsClientConnection +
+
+
+g_tls_client_connection_get_server_identity, function in GTlsClientConnection +
+
+
+g_tls_client_connection_get_use_ssl3, function in GTlsClientConnection +
+
+
+g_tls_client_connection_get_validation_flags, function in GTlsClientConnection +
+
+
+g_tls_client_connection_new, function in GTlsClientConnection +
+
+
+g_tls_client_connection_set_server_identity, function in GTlsClientConnection +
+
+
+g_tls_client_connection_set_use_ssl3, function in GTlsClientConnection +
+
+
+g_tls_client_connection_set_validation_flags, function in GTlsClientConnection +
+
+
+g_tls_connection_emit_accept_certificate, function in GTlsConnection +
+
+
+g_tls_connection_get_certificate, function in GTlsConnection +
+
+
+g_tls_connection_get_database, function in GTlsConnection +
+
+
+g_tls_connection_get_interaction, function in GTlsConnection +
+
+
+g_tls_connection_get_peer_certificate, function in GTlsConnection +
+
+
+g_tls_connection_get_peer_certificate_errors, function in GTlsConnection +
+
+
+g_tls_connection_get_rehandshake_mode, function in GTlsConnection +
+
+
+g_tls_connection_get_require_close_notify, function in GTlsConnection +
+
+
+g_tls_connection_get_use_system_certdb, function in GTlsConnection +
+
+
+g_tls_connection_handshake, function in GTlsConnection +
+
+
+g_tls_connection_handshake_async, function in GTlsConnection +
+
+
+g_tls_connection_handshake_finish, function in GTlsConnection +
+
+
+g_tls_connection_set_certificate, function in GTlsConnection +
+
+
+g_tls_connection_set_database, function in GTlsConnection +
+
+
+g_tls_connection_set_interaction, function in GTlsConnection +
+
+
+g_tls_connection_set_rehandshake_mode, function in GTlsConnection +
+
+
+g_tls_connection_set_require_close_notify, function in GTlsConnection +
+
+
+g_tls_connection_set_use_system_certdb, function in GTlsConnection +
+
+
+g_tls_database_create_certificate_handle, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificates_issued_by, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificates_issued_by_async, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificates_issued_by_finish, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificate_for_handle, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificate_for_handle_async, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificate_for_handle_finish, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificate_issuer, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificate_issuer_async, function in GTlsDatabase +
+
+
+g_tls_database_lookup_certificate_issuer_finish, function in GTlsDatabase +
+
+
+G_TLS_DATABASE_PURPOSE_AUTHENTICATE_CLIENT, macro in GTlsDatabase +
+
+
+G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER, macro in GTlsDatabase +
+
+
+g_tls_database_verify_chain, function in GTlsDatabase +
+
+
+g_tls_database_verify_chain_async, function in GTlsDatabase +
+
+
+g_tls_database_verify_chain_finish, function in GTlsDatabase +
+
+
+G_TLS_ERROR, macro in TLS Overview +
+
+
+g_tls_file_database_new, function in GTlsFileDatabase +
+
+
+g_tls_interaction_ask_password, function in GTlsInteraction +
+
+
+g_tls_interaction_ask_password_async, function in GTlsInteraction +
+
+
+g_tls_interaction_ask_password_finish, function in GTlsInteraction +
+
+
+g_tls_interaction_invoke_ask_password, function in GTlsInteraction +
+
+
+g_tls_interaction_invoke_request_certificate, function in GTlsInteraction +
+
+
+g_tls_interaction_request_certificate, function in GTlsInteraction +
+
+
+g_tls_interaction_request_certificate_async, function in GTlsInteraction +
+
+
+g_tls_interaction_request_certificate_finish, function in GTlsInteraction +
+
+
+g_tls_password_get_description, function in GTlsPassword +
+
+
+g_tls_password_get_flags, function in GTlsPassword +
+
+
+g_tls_password_get_value, function in GTlsPassword +
+
+
+g_tls_password_get_warning, function in GTlsPassword +
+
+
+g_tls_password_new, function in GTlsPassword +
+
+
+g_tls_password_set_description, function in GTlsPassword +
+
+
+g_tls_password_set_flags, function in GTlsPassword +
+
+
+g_tls_password_set_value, function in GTlsPassword +
+
+
+g_tls_password_set_value_full, function in GTlsPassword +
+
+
+g_tls_password_set_warning, function in GTlsPassword +
+
+
+g_tls_server_connection_new, function in GTlsServerConnection +
+
+
+G_TYPE_DBUS_ANNOTATION_INFO, macro in D-Bus Introspection Data +
+
+
+G_TYPE_DBUS_ARG_INFO, macro in D-Bus Introspection Data +
+
+
+G_TYPE_DBUS_INTERFACE_INFO, macro in D-Bus Introspection Data +
+
+
+G_TYPE_DBUS_METHOD_INFO, macro in D-Bus Introspection Data +
+
+
+G_TYPE_DBUS_NODE_INFO, macro in D-Bus Introspection Data +
+
+
+G_TYPE_DBUS_PROPERTY_INFO, macro in D-Bus Introspection Data +
+
+
+G_TYPE_DBUS_SIGNAL_INFO, macro in D-Bus Introspection Data +
+
+

U

+
+GUnixConnection, struct in GUnixConnection +
+
+
+GUnixCredentialsMessage, struct in GUnixCredentialsMessage +
+
+
+GUnixCredentialsMessage:credentials, object property in GUnixCredentialsMessage +
+
+
+GUnixCredentialsMessageClass, struct in GUnixCredentialsMessage +
+
+
+GUnixFDList, struct in GUnixFDList +
+
+
+GUnixFDMessage, struct in GUnixFDMessage +
+
+
+GUnixFDMessage:fd-list, object property in GUnixFDMessage +
+
+
+GUnixInputStream, struct in GUnixInputStream +
+
+
+GUnixInputStream:close-fd, object property in GUnixInputStream +
+
+
+GUnixInputStream:fd, object property in GUnixInputStream +
+
+
+GUnixMountEntry, struct in Unix Mounts +
+
+
+GUnixMountMonitor, struct in Unix Mounts +
+
+
+GUnixMountMonitor::mountpoints-changed, object signal in Unix Mounts +
+
+
+GUnixMountMonitor::mounts-changed, object signal in Unix Mounts +
+
+
+GUnixMountPoint, struct in Unix Mounts +
+
+
+GUnixOutputStream, struct in GUnixOutputStream +
+
+
+GUnixOutputStream:close-fd, object property in GUnixOutputStream +
+
+
+GUnixOutputStream:fd, object property in GUnixOutputStream +
+
+
+GUnixSocketAddress, struct in GUnixSocketAddress +
+
+
+GUnixSocketAddress:abstract, object property in GUnixSocketAddress +
+
+
+GUnixSocketAddress:address-type, object property in GUnixSocketAddress +
+
+
+GUnixSocketAddress:path, object property in GUnixSocketAddress +
+
+
+GUnixSocketAddress:path-as-array, object property in GUnixSocketAddress +
+
+
+GUnixSocketAddressType, enum in GUnixSocketAddress +
+
+
+g_unix_connection_receive_credentials, function in GUnixConnection +
+
+
+g_unix_connection_receive_credentials_async, function in GUnixConnection +
+
+
+g_unix_connection_receive_credentials_finish, function in GUnixConnection +
+
+
+g_unix_connection_receive_fd, function in GUnixConnection +
+
+
+g_unix_connection_send_credentials, function in GUnixConnection +
+
+
+g_unix_connection_send_credentials_async, function in GUnixConnection +
+
+
+g_unix_connection_send_credentials_finish, function in GUnixConnection +
+
+
+g_unix_connection_send_fd, function in GUnixConnection +
+
+
+g_unix_credentials_message_get_credentials, function in GUnixCredentialsMessage +
+
+
+g_unix_credentials_message_is_supported, function in GUnixCredentialsMessage +
+
+
+g_unix_credentials_message_new, function in GUnixCredentialsMessage +
+
+
+g_unix_credentials_message_new_with_credentials, function in GUnixCredentialsMessage +
+
+
+g_unix_fd_list_append, function in GUnixFDList +
+
+
+g_unix_fd_list_get, function in GUnixFDList +
+
+
+g_unix_fd_list_get_length, function in GUnixFDList +
+
+
+g_unix_fd_list_new, function in GUnixFDList +
+
+
+g_unix_fd_list_new_from_array, function in GUnixFDList +
+
+
+g_unix_fd_list_peek_fds, function in GUnixFDList +
+
+
+g_unix_fd_list_steal_fds, function in GUnixFDList +
+
+
+g_unix_fd_message_append_fd, function in GUnixFDMessage +
+
+
+g_unix_fd_message_get_fd_list, function in GUnixFDMessage +
+
+
+g_unix_fd_message_new, function in GUnixFDMessage +
+
+
+g_unix_fd_message_new_with_fd_list, function in GUnixFDMessage +
+
+
+g_unix_fd_message_steal_fds, function in GUnixFDMessage +
+
+
+g_unix_input_stream_get_close_fd, function in GUnixInputStream +
+
+
+g_unix_input_stream_get_fd, function in GUnixInputStream +
+
+
+g_unix_input_stream_new, function in GUnixInputStream +
+
+
+g_unix_input_stream_set_close_fd, function in GUnixInputStream +
+
+
+g_unix_is_mount_path_system_internal, function in Unix Mounts +
+
+
+g_unix_mounts_changed_since, function in Unix Mounts +
+
+
+g_unix_mounts_get, function in Unix Mounts +
+
+
+g_unix_mount_at, function in Unix Mounts +
+
+
+g_unix_mount_compare, function in Unix Mounts +
+
+
+g_unix_mount_free, function in Unix Mounts +
+
+
+g_unix_mount_get_device_path, function in Unix Mounts +
+
+
+g_unix_mount_get_fs_type, function in Unix Mounts +
+
+
+g_unix_mount_get_mount_path, function in Unix Mounts +
+
+
+g_unix_mount_guess_can_eject, function in Unix Mounts +
+
+
+g_unix_mount_guess_icon, function in Unix Mounts +
+
+
+g_unix_mount_guess_name, function in Unix Mounts +
+
+
+g_unix_mount_guess_should_display, function in Unix Mounts +
+
+
+g_unix_mount_guess_symbolic_icon, function in Unix Mounts +
+
+
+g_unix_mount_is_readonly, function in Unix Mounts +
+
+
+g_unix_mount_is_system_internal, function in Unix Mounts +
+
+
+g_unix_mount_monitor_get, function in Unix Mounts +
+
+
+g_unix_mount_monitor_new, function in Unix Mounts +
+
+
+g_unix_mount_monitor_set_rate_limit, function in Unix Mounts +
+
+
+g_unix_mount_points_changed_since, function in Unix Mounts +
+
+
+g_unix_mount_points_get, function in Unix Mounts +
+
+
+g_unix_mount_point_compare, function in Unix Mounts +
+
+
+g_unix_mount_point_free, function in Unix Mounts +
+
+
+g_unix_mount_point_get_device_path, function in Unix Mounts +
+
+
+g_unix_mount_point_get_fs_type, function in Unix Mounts +
+
+
+g_unix_mount_point_get_mount_path, function in Unix Mounts +
+
+
+g_unix_mount_point_get_options, function in Unix Mounts +
+
+
+g_unix_mount_point_guess_can_eject, function in Unix Mounts +
+
+
+g_unix_mount_point_guess_icon, function in Unix Mounts +
+
+
+g_unix_mount_point_guess_name, function in Unix Mounts +
+
+
+g_unix_mount_point_guess_symbolic_icon, function in Unix Mounts +
+
+
+g_unix_mount_point_is_loopback, function in Unix Mounts +
+
+
+g_unix_mount_point_is_readonly, function in Unix Mounts +
+
+
+g_unix_mount_point_is_user_mountable, function in Unix Mounts +
+
+
+g_unix_output_stream_get_close_fd, function in GUnixOutputStream +
+
+
+g_unix_output_stream_get_fd, function in GUnixOutputStream +
+
+
+g_unix_output_stream_new, function in GUnixOutputStream +
+
+
+g_unix_output_stream_set_close_fd, function in GUnixOutputStream +
+
+
+g_unix_socket_address_abstract_names_supported, function in GUnixSocketAddress +
+
+
+g_unix_socket_address_get_address_type, function in GUnixSocketAddress +
+
+
+g_unix_socket_address_get_is_abstract, function in GUnixSocketAddress +
+
+
+g_unix_socket_address_get_path, function in GUnixSocketAddress +
+
+
+g_unix_socket_address_get_path_len, function in GUnixSocketAddress +
+
+
+g_unix_socket_address_new, function in GUnixSocketAddress +
+
+
+g_unix_socket_address_new_abstract, function in GUnixSocketAddress +
+
+
+g_unix_socket_address_new_with_type, function in GUnixSocketAddress +
+
+

V

+
+GVfs, struct in GVfs +
+
+
+G_VFS_EXTENSION_POINT_NAME, macro in GVfs +
+
+
+g_vfs_get_default, function in GVfs +
+
+
+g_vfs_get_file_for_path, function in GVfs +
+
+
+g_vfs_get_file_for_uri, function in GVfs +
+
+
+g_vfs_get_local, function in GVfs +
+
+
+g_vfs_get_supported_uri_schemes, function in GVfs +
+
+
+g_vfs_is_active, function in GVfs +
+
+
+g_vfs_parse_name, function in GVfs +
+
+
+GVolume, struct in GVolume +
+
+
+GVolume::changed, object signal in GVolume +
+
+
+GVolume::removed, object signal in GVolume +
+
+
+GVolumeIface, struct in GVolume +
+
+
+GVolumeMonitor, struct in GVolumeMonitor +
+
+
+GVolumeMonitor::drive-changed, object signal in GVolumeMonitor +
+
+
+GVolumeMonitor::drive-connected, object signal in GVolumeMonitor +
+
+
+GVolumeMonitor::drive-disconnected, object signal in GVolumeMonitor +
+
+
+GVolumeMonitor::drive-eject-button, object signal in GVolumeMonitor +
+
+
+GVolumeMonitor::drive-stop-button, object signal in GVolumeMonitor +
+
+
+GVolumeMonitor::mount-added, object signal in GVolumeMonitor +
+
+
+GVolumeMonitor::mount-changed, object signal in GVolumeMonitor +
+
+
+GVolumeMonitor::mount-pre-unmount, object signal in GVolumeMonitor +
+
+
+GVolumeMonitor::mount-removed, object signal in GVolumeMonitor +
+
+
+GVolumeMonitor::volume-added, object signal in GVolumeMonitor +
+
+
+GVolumeMonitor::volume-changed, object signal in GVolumeMonitor +
+
+
+GVolumeMonitor::volume-removed, object signal in GVolumeMonitor +
+
+
+g_volume_can_eject, function in GVolume +
+
+
+g_volume_can_mount, function in GVolume +
+
+
+g_volume_eject, function in GVolume +
+
+
+g_volume_eject_finish, function in GVolume +
+
+
+g_volume_eject_with_operation, function in GVolume +
+
+
+g_volume_eject_with_operation_finish, function in GVolume +
+
+
+g_volume_enumerate_identifiers, function in GVolume +
+
+
+g_volume_get_activation_root, function in GVolume +
+
+
+g_volume_get_drive, function in GVolume +
+
+
+g_volume_get_icon, function in GVolume +
+
+
+g_volume_get_identifier, function in GVolume +
+
+
+g_volume_get_mount, function in GVolume +
+
+
+g_volume_get_name, function in GVolume +
+
+
+g_volume_get_sort_key, function in GVolume +
+
+
+g_volume_get_symbolic_icon, function in GVolume +
+
+
+g_volume_get_uuid, function in GVolume +
+
+
+G_VOLUME_IDENTIFIER_KIND_CLASS, macro in GVolume +
+
+
+G_VOLUME_IDENTIFIER_KIND_HAL_UDI, macro in GVolume +
+
+
+G_VOLUME_IDENTIFIER_KIND_LABEL, macro in GVolume +
+
+
+G_VOLUME_IDENTIFIER_KIND_NFS_MOUNT, macro in GVolume +
+
+
+G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE, macro in GVolume +
+
+
+G_VOLUME_IDENTIFIER_KIND_UUID, macro in GVolume +
+
+
+g_volume_monitor_adopt_orphan_mount, function in GVolumeMonitor +
+
+
+G_VOLUME_MONITOR_EXTENSION_POINT_NAME, macro in GVolumeMonitor +
+
+
+g_volume_monitor_get, function in GVolumeMonitor +
+
+
+g_volume_monitor_get_connected_drives, function in GVolumeMonitor +
+
+
+g_volume_monitor_get_mounts, function in GVolumeMonitor +
+
+
+g_volume_monitor_get_mount_for_uuid, function in GVolumeMonitor +
+
+
+g_volume_monitor_get_volumes, function in GVolumeMonitor +
+
+
+g_volume_monitor_get_volume_for_uuid, function in GVolumeMonitor +
+
+
+g_volume_mount, function in GVolume +
+
+
+g_volume_mount_finish, function in GVolume +
+
+
+g_volume_should_automount, function in GVolume +
+
+

W

+
+GWin32InputStream, struct in GWin32InputStream +
+
+
+GWin32OutputStream, struct in GWin32OutputStream +
+
+
+GWin32RegistryKey, struct in GWin32RegistryKey +
+
+
+GWin32RegistryKeyWatchCallbackFunc, user_function in GWin32RegistryKey +
+
+
+GWin32RegistryKeyWatcherFlags, enum in GWin32RegistryKey +
+
+
+GWin32RegistrySubkeyIter, struct in GWin32RegistryKey +
+
+
+GWin32RegistryValueIter, struct in GWin32RegistryKey +
+
+
+GWin32RegistryValueType, enum in GWin32RegistryKey +
+
+
+g_win32_input_stream_get_close_handle, function in GWin32InputStream +
+
+
+g_win32_input_stream_get_handle, function in GWin32InputStream +
+
+
+g_win32_input_stream_new, function in GWin32InputStream +
+
+
+g_win32_input_stream_set_close_handle, function in GWin32InputStream +
+
+
+g_win32_output_stream_get_close_handle, function in GWin32OutputStream +
+
+
+g_win32_output_stream_get_handle, function in GWin32OutputStream +
+
+
+g_win32_output_stream_new, function in GWin32OutputStream +
+
+
+g_win32_output_stream_set_close_handle, function in GWin32OutputStream +
+
+
+g_win32_registry_key_erase_change_indicator, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_get_child, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_get_child_w, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_get_path, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_get_path_w, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_get_value, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_get_value_w, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_has_changed, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_new, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_new_w, function in GWin32RegistryKey +
+
+
+g_win32_registry_key_watch, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_assign, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_clear, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_copy, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_free, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_get_name, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_get_name_w, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_init, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_next, function in GWin32RegistryKey +
+
+
+g_win32_registry_subkey_iter_n_subkeys, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_assign, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_clear, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_copy, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_free, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_get_data, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_get_data_w, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_get_name, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_get_name_w, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_get_value_type, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_init, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_next, function in GWin32RegistryKey +
+
+
+g_win32_registry_value_iter_n_values, function in GWin32RegistryKey +
+
+

Z

+
+GZlibCompressor, struct in GZlibCompressor +
+
+
+GZlibCompressor:file-info, object property in GZlibCompressor +
+
+
+GZlibCompressor:format, object property in GZlibCompressor +
+
+
+GZlibCompressor:level, object property in GZlibCompressor +
+
+
+GZlibCompressorFormat, enum in GZlibCompressor +
+
+
+GZlibDecompressor, struct in GZlibDecompressor +
+
+
+GZlibDecompressor:file-info, object property in GZlibDecompressor +
+
+
+GZlibDecompressor:format, object property in GZlibDecompressor +
+
+
+g_zlib_compressor_get_file_info, function in GZlibCompressor +
+
+
+g_zlib_compressor_new, function in GZlibCompressor +
+
+
+g_zlib_compressor_set_file_info, function in GZlibCompressor +
+
+
+g_zlib_decompressor_get_file_info, function in GZlibDecompressor +
+
+
+g_zlib_decompressor_new, function in GZlibDecompressor +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/application.html b/docs/reference/gio/html/application.html new file mode 100644 index 0000000..e2aa9fb --- /dev/null +++ b/docs/reference/gio/html/application.html @@ -0,0 +1,79 @@ + + + + +Application support: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Application support

+
+
+GApplication — Core application class +
+
+GApplicationCommandLine — A command-line invocation of an application +
+
+GActionGroup — A group of actions +
+
+GActionMap — Interface for action containers +
+
+GSimpleActionGroup — A simple GActionGroup implementation +
+
+GAction — An action interface +
+
+GSimpleAction — A simple GAction implementation +
+
+GPropertyAction — A GAction reflecting a GObject property +
+
+GRemoteActionGroup — A GActionGroup that interacts with other processes +
+
+GActionGroup exporter — Export GActionGroups on D-Bus +
+
+GDBusActionGroup — A D-Bus GActionGroup implementation +
+
+GMenuModel — An abstract class representing the contents of a menu +
+
+GMenu — A simple implementation of GMenuModel +
+
+GMenuModel exporter — Export GMenuModels on D-Bus +
+
+GDBusMenuModel — A D-Bus GMenuModel implementation +
+
+GNotification — User Notifications (pop up messages) +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/async.html b/docs/reference/gio/html/async.html new file mode 100644 index 0000000..430a405 --- /dev/null +++ b/docs/reference/gio/html/async.html @@ -0,0 +1,47 @@ + + + + +Asynchronous I/O: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Asynchronous I/O

+
+
+GCancellable — Thread-safe Operation Cancellation Stack +
+
+GAsyncResult — Asynchronous Function Results +
+
+GTask — Cancellable synchronous or asynchronous task + and result +
+
+GIOScheduler — I/O Scheduler +
+
+GSimpleAsyncResult — Simple asynchronous results implementation +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch01.html b/docs/reference/gio/html/ch01.html new file mode 100644 index 0000000..9223e92 --- /dev/null +++ b/docs/reference/gio/html/ch01.html @@ -0,0 +1,231 @@ + + + + +Introduction: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Introduction

+

+ GIO is striving to provide a modern, easy-to-use VFS API that sits + at the right level in the library stack, as well as other generally + useful APIs for desktop applications (such as networking and + D-Bus support). The goal is to overcome the shortcomings of GnomeVFS + and provide an API that is so good that developers prefer it over raw + POSIX calls. Among other things that means using GObject. It also means + not cloning the POSIX API, but providing higher-level, document-centric + interfaces. +

+

+ The abstract file system model of GIO consists of a number of + interfaces and base classes for I/O and files: +

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +

GFile

reference to a file

GFileInfo

information about a file or filesystem

GFileEnumerator

list files in directories

GDrive

represents a drive

GVolume

represents a file system in an abstract way

GMount

represents a mounted file system

+

+ Then there is a number of stream classes, similar to the input and + output stream hierarchies that can be found in frameworks like Java: +

+
++++ + + + + + + + + + + + + + + + + + + +

GInputStream

read data

GOutputStream

write data

GIOStream

read and write data

GSeekable

interface optionally implemented by streams to support seeking

+

+ There are interfaces related to applications and the types + of files they handle: +

+
++++ + + + + + + + + + + +

GAppInfo

information about an installed application

GIcon

abstract type for file and application icons

+

+ There is a framework for storing and retrieving application settings: +

+
++++ + + + + +

GSettings

stores and retrieves application settings

+

+ There is support for network programming, including connectivity monitoring, + name resolution, lowlevel socket APIs and highlevel client and server + helper classes: +

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +

GSocket

lowlevel platform independent socket object

GResolver

asynchronous and cancellable DNS resolver

GSocketClient

high-level network client helper

GSocketService

high-level network server helper

GSocketConnection

network connection stream

GNetworkMonitor

network connectivity monitoring

+

+ There is support for connecting to D-Bus, + sending and receiving messages, owning and watching bus names, + and making objects available on the bus: +

+
++++ + + + + + + + + + + + + + + + + + + +

GDBusConnection

a D-Bus connection

GDBusMethodInvocation

for handling remote calls

GDBusServer

helper for accepting connections

GDBusProxy

proxy to access D-Bus interfaces on a remote object

+

+ Beyond these, GIO provides facilities for file monitoring, + asynchronous I/O and filename completion. In addition to the + interfaces, GIO provides implementations for the local case. + Implementations for various network file systems are provided + by the GVFS package as loadable modules. +

+

+ Other design choices which consciously break with the GnomeVFS + design are to move backends out-of-process, which minimizes the + dependency bloat and makes the whole system more robust. The backends + are not included in GIO, but in the separate GVFS package. The GVFS + package also contains the GVFS daemon, which spawn further mount + daemons for each individual connection. +

+
+

Figure 1. GIO in the GTK+ library stack

+
GIO in the GTK+ library stack
+
+

+ The GIO model of I/O is stateful: if an application establishes e.g. + a SFTP connection to a server, it becomes available to all applications + in the session; the user does not have to enter his password over + and over again. +

+

+ One of the big advantages of putting the VFS in the GLib layer + is that GTK+ can directly use it, e.g. in the filechooser. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch02.html b/docs/reference/gio/html/ch02.html new file mode 100644 index 0000000..e0e5baf --- /dev/null +++ b/docs/reference/gio/html/ch02.html @@ -0,0 +1,161 @@ + + + + +Writing GIO applications: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Writing GIO applications

+

+ The information in the GLib documentation about writing GLib + applications is generally applicable when writing GIO applications. +

+
+

+Threads

+

+ GDBus has its own private worker thread, so applications using + GDBus have at least 3 threads. GIO makes heavy use of the concept + of a thread-default + main context to execute callbacks of asynchronous + methods in the same context in which the operation was started. +

+
+
+

+Asynchronous Programming

+

+ Many GIO functions come in two versions: synchronous and asynchronous, + denoted by an _async suffix. It is important to use these + appropriately: synchronous calls should not be used from + within a main loop which is shared with other code, such as one in the + application’s main thread. Synchronous calls block until they complete, + and I/O operations can take noticeable amounts of time (even on ‘fast’ + SSDs). Blocking a main loop iteration while waiting for I/O means that + other sources in the main loop will not be dispatched, such as input and + redraw handlers for the application’s UI. This can cause the application + to ‘freeze’ until I/O completes. +

+

+ A few self-contained groups of functions, such as code generated by + gdbus-codegen, + use a different convention: functions are asynchronous default, and it is + the synchronous version which has a + _sync + suffix. Aside from naming differences, they should be treated the same + way as functions following the normal convention above. +

+

+ The asynchronous (_async) versions of functions return + control to the caller immediately, after scheduling the I/O in the kernel + and adding a callback for it to the main loop. This callback will be + invoked when the operation has completed. From the callback, the paired + _finish function should be called to retrieve the return + value of the I/O operation, and any errors which occurred. For more + information on using and implementing asynchronous functions, see + GAsyncResult + and GTask. +

+

+ By starting multiple asynchronous operations in succession, they will be + executed in parallel (up to an arbitrary limit imposed by GIO’s internal + worker thread pool). +

+

+ The synchronous versions of functions can be used early in application + startup when there is no main loop to block, for example to load initial + configuration files. They can also be used for I/O on files which are + guaranteed to be small and on the local disk. Note that the user’s home + directory is not guaranteed to be on the local disk. +

+
+
+

+Security

+

+When your program needs to carry out some privileged operation (say, +create a new user account), there are various ways in which you can go +about this: +

+
    +
  • +Implement a daemon that offers the privileged operation. A convenient +way to do this is as a D-Bus system-bus service. The daemon will probably +need ways to check the identity and authorization of the caller before +executing the operation. polkit is a framework that allows this. +

  • +
  • +Use a small helper that is executed with elevated privileges via +pkexec. pkexec is a small program launcher that is part of polkit. +

  • +
  • +Use a small helper that is executed with elevated privileges by +being suid root. +

  • +
+

+None of these approaches is the clear winner, they all have their +advantages and disadvantages. +

+

+When writing code that runs with elevated privileges, it is important +to follow some basic rules of secure programming. David Wheeler has an +excellent book on this topic, +Secure Programming for Linux and Unix HOWTO. +

+

+When using GIO in code that runs with elevated privileges, you have to +be careful. GIO has extension points whose implementations get loaded +from modules (executable code in shared objects), which could allow +an attacker to sneak his own code into your application by tricking it +into loading the code as a module. However, GIO will never load modules +from your home directory except when explictly asked to do so via an +environment variable. +

+

+In most cases, your helper program should be so small that you don't +need GIO, whose APIs are largely designed to support full-blown desktop +applications. If you can't resist the convenience of these APIs, here +are some steps you should take: +

+
    +
  • +Clear the environment, e.g. using the clearenv() +function. +David Wheeler has a good explanation for why it is +important to sanitize the environment. +See Running GIO applications +for a list of all environment variables affecting GIO. In particular, +PATH (used to locate binaries), GIO_EXTRA_MODULES (used to locate loadable modules) and DBUS_{SYSTEM,SESSION}_BUS_ADDRESS (used to locate the D-Bus system and session bus) are important. +

  • +
  • +Don't use GVfs, by setting GIO_USE_VFS=local in the environment. +The reason to avoid GVfs in security-sensitive programs is that it uses +many libraries which have not necessarily been audited for security problems. +Gvfs is also heavily distributed and relies on a session bus to be present. +

  • +
+

+

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch03.html b/docs/reference/gio/html/ch03.html new file mode 100644 index 0000000..5958301 --- /dev/null +++ b/docs/reference/gio/html/ch03.html @@ -0,0 +1,44 @@ + + + + +Compiling GIO applications: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Compiling GIO applications

+

+ GIO comes with a gio-2.0.pc file that you + should use together with pkg-config to obtain + the necessary information about header files and libraries. See + the pkg-config man page or the GLib documentation + for more information on how to use pkg-config + to compile your application. +

+

+ If you are using GIO on UNIX-like systems, you may want to use + UNIX-specific GIO interfaces such as GUnixInputStream, + GUnixOutputStream, GUnixMount or GDesktopAppInfo. + To do so, use the gio-unix-2.0.pc file + instead of gio-2.0.pc +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch32.html b/docs/reference/gio/html/ch32.html new file mode 100644 index 0000000..2c78fe9 --- /dev/null +++ b/docs/reference/gio/html/ch32.html @@ -0,0 +1,74 @@ + + + + +Migrating from POSIX to GIO: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Migrating from POSIX to GIO

+
+

Table 1. Comparison of POSIX and GIO concepts

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
POSIXGIO
char *pathGFile *file
struct stat *bufGFileInfo *info
struct statvfs *bufGFileInfo *info
int fdGInputStream *in
GOutputStream *out
DIR *GFileEnumerator *enum
fstab entryGUnixMountPoint *mount_point
mtab entryGUnixMountEntry *mount_entry
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch33.html b/docs/reference/gio/html/ch33.html new file mode 100644 index 0000000..1c16237 --- /dev/null +++ b/docs/reference/gio/html/ch33.html @@ -0,0 +1,216 @@ + + + + +Migrating from GnomeVFS to GIO: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Migrating from GnomeVFS to GIO

+ +
+

Table 2. Comparison of GnomeVFS and GIO concepts

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GnomeVFSGIO
GnomeVFSURIGFile
GnomeVFSFileInfoGFileInfo
GnomeVFSResultGError, with G_IO_ERROR values
GnomeVFSHandle & GnomeVFSAsyncHandleGInputStream or GOutputStream
GnomeVFSDirectoryHandleGFileEnumerator
mime typecontent type
GnomeVFSMonitorGFileMonitor
GnomeVFSVolumeMonitorGVolumeMonitor
GnomeVFSVolumeGMount
GnomeVFSDriveGVolume
-GDrive
GnomeVFSContextGCancellable
gnome_vfs_async_cancelg_cancellable_cancel
+
+
+

+Trash handling

+

+ The handling of trashed files has been changed in GIO, compared + to gnome-vfs. gnome-vfs has a home-grown trash implementation that + predates the freedesktop.org Desktop Trash Can specification + that is implemented in GIO. The location for storing trashed files + has changed from $HOME/.Trash to + $HOME/.local/share/Trash (or more correctly + $XDG_DATA_HOME/Trash), which means that + there is a need for migrating files that have been trashed by + gnome-vfs to the new location. +

+

+ In gnome-vfs, the trash:// scheme offering a + merged view of all trash directories was implemented in nautilus, + and trash-handling applications had to find and monitor all trash + directories themselves. With GIO, the trash:// + implementation has been moved to gvfs and applications can simply + monitor that location: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
static void
+file_changed (GFileMonitor      *file_monitor,
+              GFile             *child,
+              GFile             *other_file,
+              GFileMonitorEvent  event_type,
+              gpointer           user_data)
+{
+  switch (event_type)
+  {
+  case G_FILE_MONITOR_EVENT_DELETED:
+    g_print ("'%s' removed from trash\n", g_file_get_basename (child));
+    break;
+  case G_FILE_MONITOR_EVENT_CREATED:
+    g_print ("'%s' added to trash\n", g_file_get_basename (child));
+    break;
+  default: ;
+  }
+}
+
+static void
+start_monitoring_trash (void)
+{
+  GFile *file;
+  GFileMonitor *monitor;
+
+  file = g_file_new_for_uri ("trash://");
+  monitor = g_file_monitor_directory (file, 0, NULL, NULL);
+  g_object_unref (file);
+
+  g_signal_connect (monitor, "changed", G_CALLBACK (file_changed), NULL);
+
+  /* ... */
+
+}
+
+ +

+ GIO exposes some useful metadata about trashed files. There are + trash::orig-path and trash::deletion-date attributes. The + standard::icon attribute of the trash:// + itself provides a suitable icon for displaying the trash can on + the desktop. If you are using this icon, make sure to monitor + this attribute for changes, since the icon may be updated to + reflect that state of the trash can. +

+

+ Moving a file to the trash is much simpler with GIO. Instead of + using gnome_vfs_find_directory() with GNOME_VFS_DIRECTORY_KIND_TRASH + to find out where to move the trashed file, just use the g_file_trash() + function. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch33s02.html b/docs/reference/gio/html/ch33s02.html new file mode 100644 index 0000000..e0c615d --- /dev/null +++ b/docs/reference/gio/html/ch33s02.html @@ -0,0 +1,40 @@ + + + + +Operations on multiple files: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Operations on multiple files

+

+ gnome-vfs has the dreaded gnome_vfs_xfer_uri_list() function which + has tons of options and offers the equivalent of cp, mv, ln, mkdir + and rm at the same time. +

+

+ GIO offers a much simpler I/O scheduler functionality instead, that + lets you schedule a function to be called in a separate thread, or + if threads are not available, as an idle in the mainloop. + See g_io_scheduler_push_job(). +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch33s03.html b/docs/reference/gio/html/ch33s03.html new file mode 100644 index 0000000..6cd87db --- /dev/null +++ b/docs/reference/gio/html/ch33s03.html @@ -0,0 +1,38 @@ + + + + +Mime monitoring: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Mime monitoring

+

+ gnome-vfs offered a way to monitor the association between mime types + and default handlers for changes, with the GnomeVFSMIMEMonitor object. + GIO does not offer a replacement for this functionality at this time, + since we have not found a compelling use case where + GnomeVFSMIMEMonitor was used. If you think you have such a use + case, please report it at + bugzilla.gnome.org. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch34.html b/docs/reference/gio/html/ch34.html new file mode 100644 index 0000000..6b90de5 --- /dev/null +++ b/docs/reference/gio/html/ch34.html @@ -0,0 +1,55 @@ + + + + +Migrating from GConf to GSettings: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Migrating from GConf to GSettings

+ +
+

+Before you start

+

+ Converting individual applications and their settings from GConf to + GSettings can be done at will. But desktop-wide settings like font or + theme settings often have consumers in multiple modules. Therefore, + some consideration has to go into making sure that all users of a setting + are converted to GSettings at the same time or that the program + responsible for configuring that setting continues to update the value in + both places. +

+

+ It is always a good idea to have a look at how others have handled + similar problems before. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch34s02.html b/docs/reference/gio/html/ch34s02.html new file mode 100644 index 0000000..a2236ec --- /dev/null +++ b/docs/reference/gio/html/ch34s02.html @@ -0,0 +1,58 @@ + + + + +Conceptual differences: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Conceptual differences

+

+ Conceptually, GConf and GSettings are fairly similar. Both + have a concept of pluggable backends. Both keep information + about keys and their types in schemas. Both have a concept of + mandatory values, which lets you implement lock-down. +

+

+ There are some differences in the approach to schemas. GConf + installs the schemas into the database and has API to handle + schema information (gconf_client_get_default_from_schema(), + gconf_value_get_schema(), etc). GSettings on the other hand + assumes that an application knows its own schemas, and does + not provide API to handle schema information at runtime. + GSettings is also more strict about requiring a schema whenever + you want to read or write a key. To deal with more free-form + information that would appear in schema-less entries in GConf, + GSettings allows for schemas to be 'relocatable'. +

+

+ One difference in the way applications interact with their + settings is that with GConf you interact with a tree of + settings (ie the keys you pass to functions when reading + or writing values are actually paths with the actual name + of the key as the last element. With GSettings, you create + a GSettings object which has an implicit prefix that determines + where the settings get stored in the global tree of settings, + but the keys you pass when reading or writing values are just + the key names, not the full path. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch34s03.html b/docs/reference/gio/html/ch34s03.html new file mode 100644 index 0000000..00bf390 --- /dev/null +++ b/docs/reference/gio/html/ch34s03.html @@ -0,0 +1,158 @@ + + + + +GConfClient (and GConfBridge) API conversion: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+GConfClient (and GConfBridge) API conversion

+

+ Most people use GConf via the high-level GConfClient API. + The corresponding API is the GSettings object. While not + every GConfClient function has a direct GSettings equivalent, + many do: +

+
+

Table 3. 

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GConfClientGSettings
gconf_client_get_default()no direct equivalent, + instead you call g_settings_new() for the schemas you use
gconf_client_set()g_settings_set()
gconf_client_get()g_settings_get()
gconf_client_get_bool()g_settings_get_boolean()
gconf_client_set_bool()g_settings_set_boolean()
gconf_client_get_int()g_settings_get_int()
gconf_client_set_int()g_settings_set_int()
gconf_client_get_float()g_settings_get_double()
gconf_client_set_float()g_settings_set_double()
gconf_client_get_string()g_settings_get_string()
gconf_client_set_string()g_settings_set_string()
gconf_client_get_list()for string lists, see g_settings_get_strv(), else see g_settings_get_value() and GVariant API
gconf_client_set_list()for string lists, see g_settings_set_strv(), else see g_settings_set_value() and GVariant API
gconf_entry_get_is_writable()g_settings_is_writable()
gconf_client_notify_add()not required, the “changed” signal is emitted automatically
gconf_client_add_dir()not required, each GSettings instance automatically watches all keys in its path
GConfChangeSet +g_settings_delay(), g_settings_apply() +
gconf_client_get_default_from_schema()no equivalent, applications are expected to know their schema
gconf_client_all_entries()no equivalent, applications are expected to know their schema, and GSettings does not allow schema-less entries
gconf_client_get_without_default()no equivalent
gconf_bridge_bind_property()g_settings_bind()
gconf_bridge_bind_property_full()g_settings_bind_with_mapping()
+
+


+

+

+ GConfBridge was a third-party library that used GConf to bind an object property + to a particular configuration key. GSettings offers this service itself. +

+

+ There is a pattern that is sometimes used for GConf, where a setting can have + explicit 'value A', explicit 'value B' or 'use the system default'. With GConf, + 'use the system default' is sometimes implemented by unsetting the user value. +

+

+ This is not possible in GSettings, since it does not have API to determine if a value + is the default and does not let you unset values. The recommended way (and much + clearer) way in which this can be implemented in GSettings is to have a separate + 'use-system-default' boolean setting. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch34s04.html b/docs/reference/gio/html/ch34s04.html new file mode 100644 index 0000000..f173f2b --- /dev/null +++ b/docs/reference/gio/html/ch34s04.html @@ -0,0 +1,45 @@ + + + + +Change notification: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Change notification

+

+ GConf requires you to call gconf_client_add_dir() and + gconf_client_notify_add() to get change notification. With + GSettings, this is not necessary; signals get emitted automatically + for every change. +

+

+ The “changed” signal is emitted for each changed key. + There is also a “change-event” signal that you can handle + if you need to see groups of keys that get changed at the same time. +

+

+ GSettings also notifies you about changes in writability of keys, + with the “writable-changed” signal (and the + “writable-change-event” signal). +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch34s05.html b/docs/reference/gio/html/ch34s05.html new file mode 100644 index 0000000..9f3ee01 --- /dev/null +++ b/docs/reference/gio/html/ch34s05.html @@ -0,0 +1,47 @@ + + + + +Change sets: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Change sets

+

+ GConf has a a concept of a set of changes which can be applied or reverted + at once: GConfChangeSet (GConf doesn't actually apply changes atomically, + which is one of its shortcomings). +

+

+ Instead of a separate object to represent a change set, GSettings has a + 'delayed-apply' mode, which can be turned on for a GSettings object by + calling g_settings_delay(). In this mode, changes done to the GSettings + object are not applied - they are still visible when calling g_settings_get() + on the same object, but not to other GSettings instances + or even other processes. +

+

+ To apply the pending changes all at once (GSettings does + atomicity here), call g_settings_apply(). To revert the pending changes, + call g_settings_revert() or just drop the reference to the GSettings object. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch34s06.html b/docs/reference/gio/html/ch34s06.html new file mode 100644 index 0000000..4c8fdb0 --- /dev/null +++ b/docs/reference/gio/html/ch34s06.html @@ -0,0 +1,277 @@ + + + + +Schema conversion: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Schema conversion

+

+ If you are porting your application from GConf, most likely you already + have a GConf schema. GConf comes with a commandline tool + gsettings-schema-convert that can help with the task of converting + a GConf schema into an equivalent GSettings schema. The tool is not + perfect and may need assistence in some cases. +

+
+

Example 1. An example for using gsettings-schema-convert

+
+

Running gsettings-schema-convert --gconf --xml --schema-id "org.gnome.font-rendering" --output org.gnome.font-rendering.gschema.xml destop_gnome_font_rendering.schemas on the following desktop_gnome_font_rendering.schemas file: +

+
+
+<?xml version="1.0"?>
+<gconfschemafile>
+    <schemalist>
+        <schema>
+            <key>/schemas/desktop/gnome/font_rendering/dpi</key>
+            <applyto>/desktop/gnome/font_rendering/dpi</applyto>
+            <owner>gnome</owner>
+            <type>int</type>
+            <default>96</default>
+            <locale name="C">
+                <short>DPI</short>
+                <long>The resolution used for converting font sizes to pixel sizes, in dots per inch.</long>
+            </locale>
+        </schema>
+    </schemalist>
+</gconfschemafile>
+
+
+

+produces a org.gnome.font-rendering.gschema.xml file with the following content: +

+
+
+<schemalist>
+  <schema id="org.gnome.font-rendering" path="/desktop/gnome/font_rendering/">
+    <key name="dpi" type="i">
+      <default>96</default>
+      <summary>DPI</summary>
+      <description>The resolution used for converting font sizes to pixel sizes, in dots per inch.</description>
+    </key>
+  </schema>
+</schemalist>
+
+
+

+

+
+
+

+ GSettings schemas are identified at runtime by their id (as specified + in the XML source file). It is recommended to use a dotted name as schema + id, similar in style to a D-Bus bus name, e.g. "org.gnome.SessionManager". + In cases where the settings are general and not specific to one application, + the id should not use StudlyCaps, e.g. "org.gnome.font-rendering". + The filename used for the XML schema source is immaterial, but + schema compiler expects the files to have the extension + .gschema.xml. It is recommended to simply + use the schema id as the filename, followed by this extension, + e.g. org.gnome.SessionManager.gschema.xml. +

+

+ The XML source file for your GSettings schema needs to get installed + into $datadir/glib-2.0/schemas, and needs to be + compiled into a binary form. At runtime, GSettings looks for compiled + schemas in the glib-2.0/schemas subdirectories + of all XDG_DATA_DIRS directories, so if you install + your schema in a different location, you need to set the + XDG_DATA_DIRS environment variable appropriately. +

+

+ Schemas are compiled into binary form by the + glib-compile-schemas utility. + GIO provides a glib_compile_schemas + variable for the schema compiler. +

+

+ You can ignore all of this by using the provided m4 macros. To + do this, add to your configure.ac: +

+
+GLIB_GSETTINGS
+
+

+ The corresponding Makefile.am fragment looks like + this: +

+
+# gsettings_SCHEMAS is a list of all the schemas you want to install
+gsettings_SCHEMAS = my.app.gschema.xml
+
+# include the appropriate makefile rules for schema handling
+@GSETTINGS_RULES@
+
+

+

+

+ This is not sufficient on its own. You need to mention what the source + of the my.app.gschema.xml file is. If the schema + file is distributed directly with your project's tarball then a mention + in EXTRA_DIST is appropriate. If the schema file is + generated from another source then you will need the appropriate rule + for that, plus probably an item in EXTRA_DIST for the + source files used by that rule. +

+

+ One possible pitfall in doing schema conversion is that the default + values in GSettings schemas are parsed by the GVariant parser. + This means that strings need to include quotes in the XML. Also note + that the types are now specified as GVariant type strings. +

+
+
+<type>string</type>
+<default>rgb</default>
+
+        
+

+ becomes +

+
+
+<key name="rgba-order" type="s">
+  <default>'rgb'</default> <!-- note quotes -->
+</key>
+
+        
+

+

+

+ Another possible complication is that GConf specifies full paths + for each key, while a GSettings schema has a 'path' attribute that + contains the prefix for all the keys in the schema, and individual + keys just have a simple name. So +

+
+
+<key>/schemas/desktop/gnome/font_rendering/antialiasing</key>
+
+        
+

+ becomes +

+
+
+<schema id="org.gnome.font" path="/desktop/gnome/font_rendering/">
+  <key name="antialiasing" type="s">
+
+        
+

+

+

+ Default values can be localized in both GConf and GSettings schemas, + but GSettings uses gettext for the localization. You can specify + the gettext domain to use in the gettext-domain + attribute. Therefore, when converting localized defaults in GConf, +

+
+
+<key>/schemas/apps/my_app/font_size</key>
+  <locale name="C">
+    <default>18</default>
+  </locale>
+  <locale name="be">
+    <default>24</default>
+  </locale>
+</key>
+
+        
+

+ becomes +

+
+
+<schema id="..." gettext-domain="your-domain">
+ ...
+<key name="font-size" type="i">
+  <default l10n="messages" context="font_size">18</default>
+</key>
+
+        
+

+

+

+ GSettings uses gettext for translation of default values. + The string that is translated is exactly the string that appears + inside of the <default> element. This + includes the quotation marks that appear around strings. + Default values must be marked with the l10n + attribute in the <default> tag, which + should be set as equal to 'messages' or + 'time' depending on the desired category. An + optional translation context can also be specified with the + context attribute, as in the example. This + is usually recommended, since the string "18" + is not particularly easy to translate without context. The + translated version of the default value should be stored in the + specified gettext-domain. Care must be taken + during translation to ensure that all translated values remain + syntactically valid; mistakes here will cause runtime errors. +

+

+ GSettings schemas have optional <summary> and + <description> elements for each key which + correspond to the <short> and + <long> elements in the GConf schema and + will be used in similar ways by a future gsettings-editor, so you + should use the same conventions for them: The summary is just a short + label with no punctuation, the description can be one or more complete + sentences. If multiple paragraphs are desired for the description, the + paragraphs should be separated by a completely empty line. +

+

+ Translations for these strings will also be handled + via gettext, so you should arrange for these strings to be + extracted into your gettext catalog. One way to do that is to use + intltool. Since intltool 0.50.1, schema files are + supported, so all you have to do is to add your .gschema.xml + files to POTFILES.in with a line like +

+
+        [type: gettext/gsettings]data/org.foo.MyApp.gschema.xml
+        
+

+

+

+ GSettings is a bit more restrictive about key names than GConf. Key + names in GSettings can be at most 32 characters long, and must only + consist of lowercase characters, numbers and dashes, with no + consecutive dashes. The first character must not be a number or dash, + and the last character cannot be '-'. +

+

+ If you are using the GConf backend for GSettings during the + transition, you may want to keep your key names the same they + were in GConf, so that existing settings in the users GConf + database are preserved. You can achieve this by using the + --allow-any-name with the + glib-compile-schemas schema + compiler. Note that this option is only meant + to ease the process of porting your application, allowing parts + of your application to continue to access GConf and parts to use + GSettings. By the time you have finished porting your application + you must ensure that all key names are valid. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch34s07.html b/docs/reference/gio/html/ch34s07.html new file mode 100644 index 0000000..9526338 --- /dev/null +++ b/docs/reference/gio/html/ch34s07.html @@ -0,0 +1,159 @@ + + + + +Data conversion: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Data conversion

+

+ GConf comes with a GSettings backend that can be used to + facility the transition to the GSettings API until you are + ready to make the jump to a different backend (most likely + dconf). To use it, you need to set the GSETTINGS_BACKEND + to 'gconf', e.g. by using +

+
+  g_setenv ("GSETTINGS_BACKEND", "gconf", TRUE);
+
+

+ early on in your program. Note that this backend is meant purely + as a transition tool, and should not be used in production. +

+

+ GConf also comes with a utility called + gsettings-data-convert, which is designed to help + with the task of migrating user settings from GConf into another + GSettings backend. It can be run manually, but it is designed to be + executed automatically, every time a user logs in. It keeps track of + the data migrations that it has already done, and it is harmless to + run it more than once. +

+

+ To make use of this utility, you must install a keyfile in the + directory /usr/share/GConf/gsettings which + lists the GSettings keys and GConf paths to map to each other, for + each schema that you want to migrate user data for. +

+

+ Here is an example: +

+
+
+[org.gnome.fonts]
+antialiasing = /desktop/gnome/font_rendering/antialiasing
+dpi = /desktop/gnome/font_rendering/dpi
+hinting = /desktop/gnome/font_rendering/hinting
+rgba-order = /desktop/gnome/font_rendering/rgba_order
+
+[apps.myapp:/path/to/myapps/]
+some-odd-key1 = /apps/myapp/some_ODD-key1
+
+        
+

+ The last key demonstrates that it may be necessary to modify the key + name to comply with stricter GSettings key name rules. Of course, + that means your application must use the new key names when looking + up settings in GSettings. +

+

+ The last group in the example also shows how to handle the case + of 'relocatable' schemas, which don't have a fixed path. You can + specify the path to use in the group name, separated by a colon. +

+

+ There are some limitations: gsettings-data-convert + does not do any transformation of the values. And it does not handle + complex GConf types other than lists of strings or integers. +

+

+ Don't forget to require GConf 2.31.1 or newer in your configure + script if you are making use of the GConf backend or the conversion + utility. +

+

+ If, as an application developer, you are interested in manually + ensuring that gsettings-data-convert has been + invoked (for example, to deal with the case where the user is + logged in during a distribution upgrade or for non-XDG desktop + environments which do not run the command as an autostart) you + may invoke it manually during your program initialisation. This + is not recommended for all application authors -- it is your + choice if this use case concerns you enough. +

+

+ Internally, gsettings-data-convert uses a + keyfile to track which settings have been migrated. The + following code fragment will check that keyfile to see if your + data conversion script has been run yet and, if not, will + attempt to invoke the tool to run it. You should adapt it to + your application as you see fit. +

+

+

+
+
+static void
+ensure_migrated (const gchar *name)
+{
+  gboolean needed = TRUE;
+  GKeyFile *kf;
+  gchar **list;
+  gsize i, n;
+
+  kf = g_key_file_new ();
+
+  g_key_file_load_from_data_dirs (kf, "gsettings-data-convert",
+                                  NULL, G_KEY_FILE_NONE, NULL);
+  list = g_key_file_get_string_list (kf, "State", "converted", &n, NULL);
+
+  if (list)
+    {
+      for (i = 0; i < n; i++)
+        if (strcmp (list[i], name) == 0)
+          {
+            needed = FALSE;
+            break;
+          }
+
+      g_strfreev (list);
+    }
+
+  g_key_file_free (kf);
+
+  if (needed)
+    g_spawn_command_line_sync ("gsettings-data-convert",
+                               NULL, NULL, NULL, NULL);
+}
+
+
+        
+

+

+

+ Although there is the possibility that the + gsettings-data-convert script will end up + running multiple times concurrently with this approach, it is + believed that this is safe. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch35.html b/docs/reference/gio/html/ch35.html new file mode 100644 index 0000000..43f0280 --- /dev/null +++ b/docs/reference/gio/html/ch35.html @@ -0,0 +1,94 @@ + + + + +Migrating to GDBus: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Migrating to GDBus

+ +
+

+Conceptual differences

+

+ The central concepts of D-Bus are modelled in a very similar way + in dbus-glib and GDBus. Both have a objects representing connections, + proxies and method invocations. But there are some important + differences: +

+
    +
  • + dbus-glib uses the libdbus + reference implementation, GDBus doesn't. Instead, it + relies on GIO streams as transport layer, and has its own + implementation for the the D-Bus connection setup and + authentication. Apart from using streams as transport, + avoiding libdbus also lets GDBus avoid some thorny + multithreading issues. +

  • +
  • + dbus-glib uses the GObject type system for method arguments and + return values, including a homegrown container specialization + mechanism. GDBus relies on the GVariant type system which is + explicitly designed to match D-Bus types. +

  • +
  • + dbus-glib models only D-Bus interfaces and does not provide + any types for objects. GDBus models both D-Bus interfaces + (via the GDBusInterface, GDBusProxy and + GDBusInterfaceSkeleton types) and objects (via the + GDBusObject, GDBusObjectSkeleton and GDBusObjectProxy types). +

  • +
  • + GDBus includes native support for the org.freedesktop.DBus.Properties (via the GDBusProxy type) and org.freedesktop.DBus.ObjectManager D-Bus interfaces, dbus-glib doesn't. +

  • +
  • + The typical way to export an object in dbus-glib involves + generating glue code from XML introspection data using + dbus-binding-tool. GDBus provides a + similar tool called gdbus-codegen that + can also generate Docbook D-Bus interface documentation. +

  • +
  • + dbus-glib doesn't provide any convenience API for owning and + watching bus names, GDBus provides the g_bus_own_name() and + g_bus_watch_name() family of convenience functions. +

  • +
  • + GDBus provides API to parse, generate and work with Introspection + XML, dbus-glib doesn't. +

  • +
  • + GTestDBus provides API to create isolated unit tests GDBus Test Scaffolding. +

  • +
+

+

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch35s02.html b/docs/reference/gio/html/ch35s02.html new file mode 100644 index 0000000..b3314b0 --- /dev/null +++ b/docs/reference/gio/html/ch35s02.html @@ -0,0 +1,141 @@ + + + + +API comparison: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+API comparison

+
+

Table 4. dbus-glib APIs and their GDBus counterparts

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dbus-glibGDBus
DBusGConnectionGDBusConnection
DBusGProxy +GDBusProxy, GDBusInterface - also see GDBusObjectProxy +
DBusGObject +GDBusInterfaceSkeleton, GDBusInterface - also see GDBusObjectSkeleton +
DBusGMethodInvocationGDBusMethodInvocation
dbus_g_bus_get() +g_bus_get_sync(), also see + g_bus_get() +
dbus_g_proxy_new_for_name() +g_dbus_proxy_new_sync() and + g_dbus_proxy_new_for_bus_sync(), also see g_dbus_proxy_new() +
dbus_g_proxy_add_signal()not needed, use the generic “g-signal” +
dbus_g_proxy_connect_signal()use g_signal_connect() with “g-signal” +
dbus_g_connection_register_g_object() +g_dbus_connection_register_object() - also see g_dbus_object_manager_server_export() +
dbus_g_connection_unregister_g_object() +g_dbus_connection_unregister_object() - also see g_dbus_object_manager_server_unexport() +
dbus_g_object_type_install_info()introspection data is installed while registering + an object, see g_dbus_connection_register_object() +
dbus_g_proxy_begin_call()g_dbus_proxy_call()
dbus_g_proxy_end_call()g_dbus_proxy_call_finish()
dbus_g_proxy_call()g_dbus_proxy_call_sync()
dbus_g_error_domain_register()g_dbus_error_register_error_domain()
dbus_g_error_has_name()no direct equivalent, see g_dbus_error_get_remote_error() +
dbus_g_method_return()g_dbus_method_invocation_return_value()
dbus_g_method_return_error() +g_dbus_method_invocation_return_error() and variants
dbus_g_method_get_sender()g_dbus_method_invocation_get_sender()
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch35s03.html b/docs/reference/gio/html/ch35s03.html new file mode 100644 index 0000000..b402ab0 --- /dev/null +++ b/docs/reference/gio/html/ch35s03.html @@ -0,0 +1,201 @@ + + + + +Owning bus names: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Owning bus names

+

+ Using dbus-glib, you typically call RequestName manually + to own a name, like in the following excerpt: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
error = NULL;
+res = dbus_g_proxy_call (system_bus_proxy,
+                         "RequestName",
+                         &error,
+                         G_TYPE_STRING, NAME_TO_CLAIM,
+                         G_TYPE_UINT,   DBUS_NAME_FLAG_ALLOW_REPLACEMENT,
+                         G_TYPE_INVALID,
+                         G_TYPE_UINT,   &result,
+                         G_TYPE_INVALID);
+if (!res)
+  {
+    if (error != NULL)
+      {
+        g_warning ("Failed to acquire %s: %s",
+                   NAME_TO_CLAIM, error->message);
+        g_error_free (error);
+      }
+    else
+      {
+        g_warning ("Failed to acquire %s", NAME_TO_CLAIM);
+      }
+    goto out;
+  }
+
+if (result != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER)
+  {
+    if (error != NULL)
+      {
+        g_warning ("Failed to acquire %s: %s",
+                   NAME_TO_CLAIM, error->message);
+        g_error_free (error);
+      }
+    else
+      {
+        g_warning ("Failed to acquire %s", NAME_TO_CLAIM);
+      }
+    exit (1);
+  }
+
+dbus_g_proxy_add_signal (system_bus_proxy, "NameLost",
+                         G_TYPE_STRING, G_TYPE_INVALID);
+dbus_g_proxy_connect_signal (system_bus_proxy, "NameLost",
+                             G_CALLBACK (on_name_lost), NULL, NULL);
+
+/* further setup ... */
+
+ +

+

+

+ While you can do things this way with GDBus too, using + g_dbus_proxy_call_sync(), it is much nicer to use the high-level API + for this: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
static void
+on_name_acquired (GDBusConnection *connection,
+                  const gchar     *name,
+                  gpointer         user_data)
+{
+  /* further setup ... */
+}
+
+/* ... */
+
+  owner_id = g_bus_own_name (G_BUS_TYPE_SYSTEM,
+                             NAME_TO_CLAIM,
+                             G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT,
+                             on_bus_acquired,
+                             on_name_acquired,
+                             on_name_lost,
+                             NULL,
+                             NULL);
+
+  g_main_loop_run (loop);
+
+  g_bus_unown_name (owner_id);
+
+ +

+ Note that g_bus_own_name() works asynchronously and requires + you to enter your mainloop to await the on_name_aquired() + callback. Also note that in order to avoid race conditions (e.g. + when your service is activated by a method call), you have to export + your manager object before acquiring the + name. The on_bus_acquired() callback is the right place to do + such preparations. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/ch35s04.html b/docs/reference/gio/html/ch35s04.html new file mode 100644 index 0000000..a483356 --- /dev/null +++ b/docs/reference/gio/html/ch35s04.html @@ -0,0 +1,96 @@ + + + + +Creating proxies for well-known names: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Creating proxies for well-known names

+

+ dbus-glib lets you create proxy objects for well-known names, like the + following example: +

+
+ + + + + + + +
1
+2
+3
+4
proxy = dbus_g_proxy_new_for_name (system_bus_connection,
+                                   "org.freedesktop.Accounts",
+                                   "/org/freedesktop/Accounts",
+                                   "org.freedesktop.Accounts");
+
+ +

+ For a DBusGProxy constructed like this, method calls will be sent to + the current owner of the name, and that owner can change over time. +

+

+ The same can be achieved with GDBusProxy: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
error = NULL;
+proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
+                                       G_DBUS_PROXY_FLAGS_NONE,
+                                       NULL, /* GDBusInterfaceInfo */
+                                       "org.freedesktop.Accounts",
+                                       "/org/freedesktop/Accounts",
+                                       "org.freedesktop.Accounts",
+                                       NULL, /* GCancellable */
+                                       &error);
+
+ +

+ For an added layer of safety, you can specify what D-Bus + interface the proxy is expected to conform to by using the + GDBusInterfaceInfo type. Additionally, GDBusProxy loads, + caches and tracks changes to the D-Bus properties on the remote + object. It also sets up match rules so D-Bus signals from the + remote object are delivered locally. +

+

+ The GDBusProxy type normally isn't used directly - instead + proxies subclassing GDBusProxy generated by gdbus-codegen is used, see the section called “Using gdbus-codegen” +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/conversion.html b/docs/reference/gio/html/conversion.html new file mode 100644 index 0000000..6d6fb0b --- /dev/null +++ b/docs/reference/gio/html/conversion.html @@ -0,0 +1,43 @@ + + + + +Data conversion: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Data conversion

+
+
+GConverter — Data conversion interface +
+
+GCharsetConverter — Convert between charsets +
+
+GZlibCompressor — Zlib compressor +
+
+GZlibDecompressor — Zlib decompressor +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/data-models.html b/docs/reference/gio/html/data-models.html new file mode 100644 index 0000000..4e2b35e --- /dev/null +++ b/docs/reference/gio/html/data-models.html @@ -0,0 +1,37 @@ + + + + +Data Models: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Data Models

+
+
+GListModel — An interface describing a dynamic list of objects +
+
+GListStore — A simple implementation of GListModel +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/extending-gio.html b/docs/reference/gio/html/extending-gio.html new file mode 100644 index 0000000..c7196b6 --- /dev/null +++ b/docs/reference/gio/html/extending-gio.html @@ -0,0 +1,130 @@ + + + + +Extending GIO: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Extending GIO

+

+ A lot of the functionality that is accessible through GIO + is implemented in loadable modules, and modules provide a convenient + way to extend GIO. In addition to the GIOModule API which supports + writing such modules, GIO has a mechanism to define extension points, + and register implementations thereof, see GIOExtensionPoint. +

+

+ The following extension points are currently defined by GIO: +

+

G_VFS_EXTENSION_POINT_NAME.  + Allows to override the functionality of the GVfs class. + Implementations of this extension point must be derived from GVfs. + GIO uses the implementation with the highest priority that is active, + see g_vfs_is_active(). + + GIO implements this extension point for local files, gvfs contains + an implementation that supports all the backends in gvfs. +

+

G_VOLUME_MONITOR_EXTENSION_POINT_NAME.  + Allows to add more volume monitors. + Implementations of this extension point must be derived from + GVolumeMonitor. GIO uses all registered extensions. + + gvfs contains an implementation that works together with the GVfs + implementation in gvfs. +

+

G_NATIVE_VOLUME_MONITOR_EXTENSION_POINT_NAME.  + Allows to override the 'native' volume monitor. + Implementations of this extension point must be derived from + GNativeVolumeMonitor. GIO uses the implementation with + the highest priority that is supported, as determined by the + is_supported() vfunc in GVolumeMonitorClass. + + GIO implements this extension point for local mounts, + gvfs contains a hal-based implementation. +

+

G_LOCAL_FILE_MONITOR_EXTENSION_POINT_NAME.  + Allows to override the file monitor implementation for + local files. Implementations of this extension point must + be derived from GLocalFileMonitor. GIO uses the implementation + with the highest priority that is supported, as determined by the + is_supported() vfunc in GLocalFileMonitorClass. + + GIO uses this extension point internally, to switch between + its fam-based and inotify-based file monitoring implementations. +

+

G_LOCAL_DIRECTORY_MONITOR_EXTENSION_POINT_NAME.  + Allows to override the directory monitor implementation for + local files. Implementations of this extension point must be + derived from GLocalDirectoryMonitor. GIO uses the implementation + with the highest priority that is supported, as determined by the + is_supported() vfunc in GLocalDirectoryMonitorClass. + + GIO uses this extension point internally, to switch between + its fam-based and inotify-based directory monitoring implementations. +

+

G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME.  + Unix-only. Allows to provide a way to associate default handlers + with URI schemes. Implementations of this extension point must + implement the GDesktopAppInfoLookup interface. GIO uses the + implementation with the highest priority. + + This extension point has been discontinued in GLib 2.28. It is + still available to keep API and ABI stability, but GIO is no + longer using it for default handlers. Instead, the mime handler + mechanism is used, together with x-scheme-handler pseudo-mimetypes. +

+

G_SETTINGS_BACKEND_EXTENSION_POINT_NAME.  + Allows to provide an alternative storage for GSettings. + Implementations of this extension point must derive from the + GSettingsBackend type. GIO contains a keyfile-based + implementation of this extension point, another one is provided + by dconf. +

+

G_PROXY_EXTENSION_POINT_NAME.  + Allows to provide implementations for network proxying. + Implementations of this extension point must provide the + GProxy interface, and must be named after the network + protocol they are proxying. + + glib-networking contains an implementation of this extension + point based on libproxy. +

+

G_TLS_BACKEND_EXTENSION_POINT_NAME.  + Allows to provide implementations for TLS support. + Implementations of this extension point must implement + the GTlsBackend interface. + + glib-networking contains an implementation of this extension + point. +

+

G_NETWORK_MONITOR_EXTENSION_POINT_NAME.  + Allows to provide implementations for network connectivity + monitoring. + Implementations of this extension point must implement + the GNetworkMonitorInterface interface. + + GIO contains an implementation of this extension point + that is using the netlink interface of the Linux kernel. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/extending.html b/docs/reference/gio/html/extending.html new file mode 100644 index 0000000..910c308 --- /dev/null +++ b/docs/reference/gio/html/extending.html @@ -0,0 +1,40 @@ + + + + +Extending GIO: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Extending GIO

+
+
+GVfs — Virtual File System +
+
+GIOModule — Loadable GIO Modules +
+
+Extension Points — Extension Points +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/failable_initialization.html b/docs/reference/gio/html/failable_initialization.html new file mode 100644 index 0000000..f65973c --- /dev/null +++ b/docs/reference/gio/html/failable_initialization.html @@ -0,0 +1,37 @@ + + + + +Failable Initialization: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Failable Initialization

+
+
+GInitable — Failable object initialization interface +
+
+GAsyncInitable — Asynchronously failable object initialization interface +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/file_mon.html b/docs/reference/gio/html/file_mon.html new file mode 100644 index 0000000..23373b6 --- /dev/null +++ b/docs/reference/gio/html/file_mon.html @@ -0,0 +1,32 @@ + + + + +File System Monitoring: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+File System Monitoring

+
+GFileMonitor — File Monitor +
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/file_ops.html b/docs/reference/gio/html/file_ops.html new file mode 100644 index 0000000..c06ab9d --- /dev/null +++ b/docs/reference/gio/html/file_ops.html @@ -0,0 +1,49 @@ + + + + +File Operations: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+File Operations

+
+
+GFile — File and Directory Handling +
+
+GFileAttribute — Key-Value Paired File Attributes +
+
+GFileInfo — File Information and Attributes +
+
+GFileEnumerator — Enumerated Files Routines +
+
+GIOError — Error helper functions +
+
+GMountOperation — Object used for authentication and user interaction +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gapplication-tool.html b/docs/reference/gio/html/gapplication-tool.html new file mode 100644 index 0000000..06c4da6 --- /dev/null +++ b/docs/reference/gio/html/gapplication-tool.html @@ -0,0 +1,287 @@ + + + + +gapplication: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

gapplication

+

gapplication — D-Bus application launcher

+
+
+

Synopsis

+

gapplication help [COMMAND]

+

gapplication version

+

gapplication list-apps

+

gapplication launch APPID

+

gapplication launch APPID [FILE...]

+

gapplication list-actions APPID

+

gapplication action APPID ACTION [PARAMETER]

+
+
+

Description

+

+ gapplication is a commandline implementation of the client-side of the + org.freedesktop.Application interface as specified by the freedesktop.org + Desktop Entry Specification. +

+

+ gapplication can be used to start applications that have + DBusActivatable set to true in their .desktop + files and can be used to send messages to already-running instances of other applications. +

+

+ It is possible for applications to refer to gapplication in the Exec + line of their .desktop file to maintain backwards compatibility + with implementations that do not directly support DBusActivatable. +

+

+ gapplication ships as part of GLib. +

+
+
+

Commands

+
+

Global commands

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ help + [COMMAND] +

+ Displays a short synopsis of the available commands or provides detailed help on a specific + command. +

+ version +

+ Prints the GLib version whence gapplication came. +

+ list-apps +

+ Prints a list of all application IDs that are known to support D-Bus activation. This list is + generated by scanning .desktop files as per the current + XDG_DATA_DIRS. +

+ launch + APPID + [FILE...] +

+

+ Launches an application. +

+

+ The first parameter is the application ID in the familiar "reverse DNS" style (eg: + 'org.gnome.app') without the .desktop + suffix. +

+

+ Optionally, if additional parameters are given, they are treated as the names of files to open and + may be filenames or URIs. If no files are given then the application is simply activated. +

+

+ list-actions + APPID +

+ List the actions declared in the application's .desktop + file. The parameter is the application ID, as above. +

+ action + APPID + ACTION + [PARAMETER] +

+

+ Invokes the named action (in the same way as would occur when activating an action specified in + the .desktop file). +

+

+ The application ID (as above) is the first parameter. The action name follows. +

+

+ Optionally, following the action name can be one parameter, in GVariant format, given as a single + argument. Make sure to use sufficient quoting. +

+
+
+
+
+

Examples

+
+

From the commandline

+

+ Launching an application: +

+
+        gapplication launch org.example.fooview
+      
+

+ Opening a file with an application: +

+
+        gapplication launch org.example.fooview ~/file.foo
+      
+

+ Opening many files with an application: +

+
+        gapplication launch org.example.fooview ~/foos/*.foo
+      
+

+ Invoking an action on an application: +

+
+        gapplication action org.example.fooview create
+      
+

+ Invoking an action on an application, with an action: +

+
+        gapplication action org.example.fooview show-item '"item_id_828739"'
+      
+
+
+
+

+ From the Exec lines of a .desktop file +

+

+ The commandline interface of gapplication was designed so that it could be used + directly from the Exec line of a .desktop + file. +

+

+ You might want to do this to allow for backwards compatibility with implementations of the specification + that do not understand how to do D-Bus activation, without having to install a separate utility program. +

+

+ Consider the following example: +

+
+        [Desktop Entry]
+        Version=1.1
+        Type=Application
+        Name=Foo Viewer
+        DBusActivatable=true
+        MimeType=image/x-foo;
+        Exec=gapplication launch org.example.fooview %F
+        Actions=gallery;create;
+
+        [Desktop Action gallery]
+        Name=Browse Gallery
+        Exec=gapplication action org.example.fooview gallery
+
+        [Desktop Action create]
+        Name=Create a new Foo!
+        Exec=gapplication action org.example.fooview create
+      
+
+
+
+

From a script

+

+ If installing an application that supports D-Bus activation you may still want to put a file in + /usr/bin so that your program can be started from a terminal. +

+

+ It is possible for this file to be a shell script. The script can handle arguments such as --help and + --version directly. It can also parse other command line arguments and convert them to uses of + gapplication to activate the application, open files, or invoke actions. +

+

+ Here is a simplified example, as may be installed in /usr/bin/fooview: +

+
+        #!/bin/sh
+
+        case "$1" in
+          --help)
+            echo "see 'man fooview' for more information"
+            ;;
+
+          --version)
+            echo "fooview 1.2"
+            ;;
+
+          --gallery)
+            gapplication action org.example.fooview gallery
+            ;;
+
+          --create)
+            gapplication action org.example.fooview create
+            ;;
+
+          -*)
+            echo "unrecognised commandline argument"
+            exit 1
+            ;;
+
+          *)
+            gapplication launch org.example.fooview "$@"
+            ;;
+        esac
+      
+
+
+
+

See also

+

+ Desktop Entry Specification, + gdbus(1), + xdg-open(1), + desktop-file-validate(1) +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gdbus-codegen.html b/docs/reference/gio/html/gdbus-codegen.html new file mode 100644 index 0000000..5ef951a --- /dev/null +++ b/docs/reference/gio/html/gdbus-codegen.html @@ -0,0 +1,1097 @@ + + + + +gdbus-codegen: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

gdbus-codegen

+

gdbus-codegen — D-Bus code and documentation generator

+
+
+

Synopsis

+

gdbus-codegen [-h, --help] [--interface-prefix org.project.Prefix] [--generate-c-code OUTFILES] [--c-namespace YourProject] [--c-generate-object-manager] [--generate-docbook OUTFILES] [--xml-files FILE] [ + --annotate + ELEMENT + KEY + VALUE + ]... FILE [ + FILE... + ]

+
+
+

Description

+

+ gdbus-codegen is used to generate code and/or + documentation for one or more D-Bus interfaces. The tool reads + D-Bus + Introspection XML files and generates output files. The + tool currently supports generating C code (via + --generate-c-code) and Docbook XML (via + --generate-docbook). +

+
+
+

Generating C code

+

+ When generating C code, a + GInterface-derived type is generated for each D-Bus + interface. Additionally, for every generated type, + FooBar, two concrete instantiable types, + FooBarProxy and FooBarSkeleton, implementing + said interface are also generated. The former is derived from + GDBusProxy and intended for use on the client side + while the latter is derived from the + GDBusInterfaceSkeleton type making it easy to export on a + GDBusConnection either directly or via a + GDBusObjectManagerServer instance. +

+

+ The name of each generated C type is derived from the D-Bus + interface name stripped with the prefix given with + --interface-prefix and with the dots removed and + initial characters capitalized. For example, for the D-Bus + interface com.acme.Coyote the name used is + ComAcmeCoyote. For the D-Bus interface + org.project.Bar.Frobnicator with + --interface-prefix + org.project., the name used is + BarFrobnicator. +

+

+ For methods, signals and properties, if not specified, the name + defaults to the name of the method, signal or property. +

+

+ Two forms of the name are used - the CamelCase form and the + lower-case form. The CamelCase form is used for the GType and + struct name, while lower-case form is used in function names. The + lower-case form is calculated by converting from CamelCase to + lower-case and inserting underscores at word boundaries (using + certain heuristics). +

+

+ If the value given by the org.gtk.GDBus.C.Name + annotation or the --c-namespace option contains + an underscore (sometimes called Ugly_Case), + then the camel-case name is derived by removing all underscores, + and the lower-case name is derived by lower-casing the + string. This is useful in some situations where abbreviations are + used. For example, if the annotation is used on the interface + net.MyCorp.MyApp.iSCSITarget with the value + iSCSI_Target the CamelCase form is + iSCSITarget while the lower-case form is + iscsi_target. If the annotation is used on the + method EjectTheiPod with the value + Eject_The_iPod, the lower-case form is + eject_the_ipod. +

+
+
+

Generating Docbook documentation

+

+ Each generated Docbook XML file (see the + --generate-docbook option for details) is a RefEntry + article describing the D-Bus interface. +

+
+
+

Options

+

+ The following options are supported: +

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

-h, --help

+ Show help and exit. +

--xml-files FILE

+ The D-Bus introspection XML file. +

--interface-prefix org.project.Prefix.

+ A prefix to strip from all D-Bus interface names when + calculating the typename for the C binding and the Docbook + sortas + attribute. +

--generate-docbook OUTFILES

+ Generate Docbook Documentation for each D-Bus interface and + put it in OUTFILES-NAME.xml where + NAME is a place-holder for the interface + name, e.g. net.Corp.FooBar and so on. +

--generate-c-code OUTFILES

+ Generate C code for all D-Bus interfaces and put it in + OUTFILES.c and + OUTFILES.h. +

--c-namespace YourProject

+ The namespace to use for generated C code. This is expected + to be in CamelCase + or Ugly_Case (see above). +

--c-generate-object-manager

+ If this option is passed, suitable GDBusObject, + GDBusObjectProxy, GDBusObjectSkeleton and + GDBusObjectManagerClient subclasses are generated. +

--annotate ELEMENT KEY VALUE

+

+ Used to inject D-Bus annotations into the given XML + files. It can be used with interfaces, methods, signals, + properties and arguments in the following way: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
gdbus-codegen --c-namespace MyApp                           \
+  --generate-c-code myapp-generated                         \
+  --annotate "org.project.InterfaceName"                    \
+    org.gtk.GDBus.C.Name MyFrobnicator                      \
+  --annotate "org.project.InterfaceName:Property"           \
+    bar bat                                                 \
+  --annotate "org.project.InterfaceName.Method()"           \
+    org.freedesktop.DBus.Deprecated true                    \
+  --annotate "org.project.InterfaceName.Method()[arg_name]" \
+    snake hiss                                              \
+  --annotate "org.project.InterfaceName::Signal"            \
+    cat meow                                                \
+  --annotate "org.project.InterfaceName::Signal[arg_name]"  \
+    dog wuff                                                \
+  myapp-dbus-interfaces.xml
+
+ +

+ Any UTF-8 string can be used for KEY and VALUE. +

+
+
+
+

Supported D-Bus Annotations

+

+ The following D-Bus annotations are supported by + gdbus-codegen: +

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

org.freedesktop.DBus.Deprecated

+

+ Can be used on any <interface>, + <method>, + <signal> and + <property> element to specify that + the element is deprecated if its value is + true. Note that this annotation is + defined in the D-Bus + specification and can only assume the values + true and false. In + particular, you cannot specify the version that the element + was deprecated in nor any helpful deprecation message. Such + information should be added to the element documentation + instead. +

+

+ When generating C code, this annotation is used to add + G_GNUC_DEPRECATED to generated functions for the element. +

+

+ When generating Docbook XML, a deprecation warning will + appear along the documentation for the element. +

+

org.gtk.GDBus.Since

+

+ Can be used on any <interface>, + <method>, + <signal> and + <property> element to specify the + version (any free-form string but compared using a + version-aware sort function) the element appeared in. +

+

+ When generating C code, this field is used to ensure + function pointer order for preserving ABI/API, see the section called “Stability Guarantees”. +

+

+ When generating Docbook XML, the value of this tag appears + in the documentation. +

+

org.gtk.GDBus.DocString

+ A string with Docbook content for documentation. This annotation can + be used on <interface>, + <method>, + <signal>, + <property> and + <arg> elements. +

org.gtk.GDBus.DocString.Short

+ A string with Docbook content for short/brief + documentation. This annotation can only be used on + <interface> elements. +

org.gtk.GDBus.C.Name

+ Can be used on any <interface>, + <method>, + <signal> and + <property> element to specify the + name to use when generating C code. The value is expected to + be in CamelCase + or Ugly_Case (see above). +

org.gtk.GDBus.C.ForceGVariant

+ If set to a non-empty string, a GVariant instance will + be used instead of the natural C type. This annotation can + be used on any <arg> and + <property> element. +

org.gtk.GDBus.C.UnixFD

+ If set to a non-empty string, the generated code will + include parameters to exchange file descriptors using the + GUnixFDList type. This annotation can be used on + <method> elements. +

+

+ As an easier alternative to using the + org.gtk.GDBus.DocString annotation, note that + parser used by gdbus-codegen parses XML + comments in a way similar to gtk-doc: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
<!--
+  net.Corp.Bar:
+  @short_description: A short description
+
+  A <emphasis>longer</emphasis> description.
+
+  This is a new paragraph.
+-->
+<interface name="net.corp.Bar">
+  <!--
+    FooMethod:
+    @greeting: The docs for greeting parameter.
+    @response: The docs for response parameter.
+
+    The docs for the actual method.
+  -->
+  <method name="FooMethod">
+    <arg name="greeting" direction="in" type="s"/>
+    <arg name="response" direction="out" type="s"/>
+  </method>
+
+  <!--
+    BarSignal:
+    @blah: The docs for blah parameter.
+    @boo: The docs for boo parameter.
+    @since: 2.30
+
+    The docs for the actual signal.
+  -->
+  <signal name="BarSignal">
+    <arg name="blah" type="s"/>
+    <arg name="boo" type="s"/>
+  </signal>
+
+  <!-- BazProperty: The docs for the property. -->
+  <property name="BazProperty" type="s" access="read"/>
+</interface>
+
+ +

+

+

+ Note that @since can be used in any inline + documentation bit (e.g. for interfaces, methods, signals and + properties) to set the org.gtk.GDBus.Since + annotation. For the org.gtk.GDBus.DocString + annotation (and inline comments), note that substrings of the form + #net.Corp.Bar, + net.Corp.Bar.FooMethod(), + #net.Corp.Bar::BarSignal and + #net.Corp.InlineDocs:BazProperty are all + expanded to links to the respective interface, method, signal and + property. + Additionally, substrings starting with @ and % characters are rendered as + parameter and + constant respectively. +

+

+ If both XML comments and + org.gtk.GDBus.DocString or + org.gtk.GDBus.DocString.Short annotations are + present, the latter wins. +

+
+
+

Example

+

+ Consider the following D-Bus Introspection XML. +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
<node>
+  <interface name="net.Corp.MyApp.Frobber">
+    <method name="HelloWorld">
+      <arg name="greeting" direction="in" type="s"/>
+      <arg name="response" direction="out" type="s"/>
+    </method>
+
+    <signal name="Notification">
+      <arg name="icon_blob" type="ay"/>
+      <arg name="height" type="i"/>
+      <arg name="messages" type="as"/>
+    </signal>
+
+    <property name="Verbose" type="b" access="readwrite"/>
+  </interface>
+</node>
+
+ +

+ If gdbus-codegen is used on this file like this: +

+
+ + + + + + + +
1
+2
+3
+4
gdbus-codegen --generate-c-code myapp-generated       \
+              --c-namespace MyApp                     \
+              --interface-prefix net.corp.MyApp.      \
+              net.Corp.MyApp.Frobber.xml
+
+ +

+ two files called + myapp-generated.[ch] are + generated. The files provide an abstract + GTypeInterface-derived type called + MyAppFrobber as well as two instantiable types with + the same name but suffixed with Proxy and + Skeleton. The generated file, roughly, contains the + following facilities: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
/* GType macros for the three generated types */
+#define MY_APP_TYPE_FROBBER (my_app_frobber_get_type ())
+#define MY_APP_TYPE_FROBBER_SKELETON (my_app_frobber_skeleton_get_type ())
+#define MY_APP_TYPE_FROBBER_PROXY (my_app_frobber_proxy_get_type ())
+
+typedef struct _MyAppFrobber MyAppFrobber; /* Dummy typedef */
+
+typedef struct
+{
+  GTypeInterface parent_iface;
+
+  /* Signal handler for the ::notification signal */
+  void (*notification) (MyAppFrobber *proxy,
+                        GVariant *icon_blob,
+                        gint height,
+                        const gchar* const *messages);
+
+  /* Signal handler for the ::handle-hello-world signal */
+  gboolean (*handle_hello_world) (MyAppFrobber *proxy,
+                                  GDBusMethodInvocation *invocation,
+                                  const gchar *greeting);
+} MyAppFrobberIface;
+
+/* Asynchronously calls HelloWorld() */
+void
+my_app_frobber_call_hello_world (MyAppFrobber *proxy,
+                                 const gchar *greeting,
+                                 GCancellable *cancellable,
+                                 GAsyncReadyCallback callback,
+                                 gpointer user_data);
+gboolean
+my_app_frobber_call_hello_world_finish (MyAppFrobber *proxy,
+                                        gchar **out_response,
+                                        GAsyncResult *res,
+                                        GError **error);
+
+/* Synchronously calls HelloWorld(). Blocks calling thread. */
+gboolean
+my_app_frobber_call_hello_world_sync (MyAppFrobber *proxy,
+                                      const gchar *greeting,
+                                      gchar **out_response,
+                                      GCancellable *cancellable,
+                                      GError **error);
+
+/* Completes handling the HelloWorld() method call */
+void
+my_app_frobber_complete_hello_world (MyAppFrobber *object,
+                                     GDBusMethodInvocation *invocation,
+                                     const gchar *response);
+
+/* Emits the ::notification signal / Notification() D-Bus signal */
+void
+my_app_frobber_emit_notification (MyAppFrobber *object,
+                                  GVariant *icon_blob,
+                                  gint height,
+                                  const gchar* const *messages);
+
+/* Gets the :verbose GObject property / Verbose D-Bus property.
+ * Does no blocking I/O.
+ */
+gboolean my_app_frobber_get_verbose (MyAppFrobber *object);
+
+/* Sets the :verbose GObject property / Verbose D-Bus property.
+ * Does no blocking I/O.
+ */
+void my_app_frobber_set_verbose (MyAppFrobber *object,
+                                 gboolean      value);
+
+/* Gets the interface info */
+GDBusInterfaceInfo *my_app_frobber_interface_info (void);
+
+/* Creates a new skeleton object, ready to be exported */
+MyAppFrobber *my_app_frobber_skeleton_new (void);
+
+/* Client-side proxy constructors.
+ *
+ * Additionally, _new_for_bus(), _new_for_bus_finish() and
+ * _new_for_bus_sync() proxy constructors are also generated.
+ */
+void
+my_app_frobber_proxy_new        (GDBusConnection     *connection,
+                                 GDBusProxyFlags      flags,
+                                 const gchar         *name,
+                                 const gchar         *object_path,
+                                 GCancellable        *cancellable,
+                                 GAsyncReadyCallback  callback,
+                                 gpointer             user_data);
+MyAppFrobber *
+my_app_frobber_proxy_new_finish (GAsyncResult        *res,
+                                 GError             **error);
+MyAppFrobber *
+my_app_frobber_proxy_new_sync   (GDBusConnection     *connection,
+                                 GDBusProxyFlags      flags,
+                                 const gchar         *name,
+                                 const gchar         *object_path,
+                                 GCancellable        *cancellable,
+                                 GError             **error);
+
+ +

+ Thus, for every D-Bus method, there will be three C functions for + calling the method, one GObject signal for handling an incoming + call and one C function for completing an incoming call. For every + D-Bus signal, there's one GObject signal and one C function for + emitting it. For every D-Bus property, two C functions are + generated (one setter, one getter) and one GObject property. The + following table summarizes the generated facilities and where they + are applicable: +

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 ClientServer
TypesUse MyAppFrobberProxy +Any type implementing the MyAppFrobber interface
MethodsUse m_a_f_hello_world() to call.Receive via the handle_hello_world() signal handler. Complete the call with m_a_f_complete_hello_world() +
SignalsConnect to the ::notification GObject signal.Use m_a_f_emit_notification() to emit signal.
Properties (Reading)Use m_a_f_get_verbose() or :verbose.Implement GObject's get_property() vfunc.
Properties (writing)Use m_a_f_set_verbose() or :verbose.Implement GObject's set_property() vfunc.
+
+

Client-side usage

+

+ You can use the generated proxy type with the generated + constructors: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
MyAppFrobber *proxy;
+GError *error;
+
+error = NULL;
+proxy = my_app_frobber_proxy_new_for_bus_sync (
+            G_BUS_TYPE_SESSION,
+            G_DBUS_PROXY_FLAGS_NONE,
+            "net.Corp.MyApp",              /* bus name */
+            "/net/Corp/MyApp/SomeFrobber", /* object */
+            NULL,                          /* GCancellable* */
+            &error);
+/* do stuff with proxy */
+g_object_unref (proxy);
+
+ +

+ Instead of using the generic GDBusProxy facilities, one can use + the generated methods such as + my_app_frobber_call_hello_world() to invoke + the net.Corp.MyApp.Frobber.HelloWorld() + D-Bus method, connect to the the + ::notification GObject signal to receive + the net.Corp.MyApp.Frobber::Notication + D-Bus signal and get/set the + net.Corp.MyApp.Frobber:Verbose D-Bus + Property using either the GObject property + :verbose or the + my_app_get_verbose() and + my_app_set_verbose() methods. Use the + standard “notify” signal to listen to property changes. +

+

+ Note that all property access is via GDBusProxy's + property cache so no I/O is ever done when reading properties. + Also note that setting a property will cause the + org.freedesktop.DBus.Properties.Set method to be + called on the remote object. This call, however, is asynchronous + so setting a property won't block. Further, the change is + delayed and no error checking is possible. +

+
+
+
+

Server-side usage

+

+ The generated MyAppFrobber interface is designed so + it is easy to implement it in a GObject + subclass. For example, to handle + HelloWorld() method invocations, set the + vfunc for handle_hello_hello_world() in the + MyAppFrobberIface structure. Similary, to handle + the net.Corp.MyApp.Frobber:Verbose + property override the :verbose GObject + property from the subclass. To emit a signal, use + e.g. my_app_emit_signal() or + g_signal_emit_by_name(). +

+

+ Instead of subclassing, it is often easier to use the generated + MyAppFrobberSkeleton subclass. To handle incoming + method calls, use g_signal_connect() with + the ::handle-* signals and instead of + overriding GObject's + get_property() and + set_property() vfuncs, use + g_object_get() and + g_object_set() or the generated property + getters and setters (the generated class has an internal + property bag implementation). +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
static gboolean
+on_handle_hello_world (MyAppFrobber           *interface,
+                       GDBusMethodInvocation  *invocation,
+                       const gchar            *greeting,
+                       gpointer                user_data)
+{
+  if (g_strcmp0 (greeting, "Boo") != 0)
+    {
+      gchar *response;
+      response = g_strdup_printf ("Word! You said `%s'.", greeting);
+      my_app_complete_hello_world (interface, invocation, response);
+      g_free (response);
+    }
+  else
+    {
+      g_dbus_method_invocation_return_error (invocation,
+                 MY_APP_ERROR,
+                 MY_APP_ERROR_NO_WHINING,
+                 "Hey, %s, there will be no whining!",
+                 g_dbus_method_invocation_get_sender (invocation));
+    }
+  return TRUE;
+}
+
+  [...]
+
+  interface = my_app_frobber_skeleton_new ();
+  my_app_frobber_set_verbose (interface, TRUE);
+
+  g_signal_connect (interface,
+                    "handle-hello-world",
+                    G_CALLBACK (on_handle_hello_world),
+                    some_user_data);
+
+  [...]
+
+  error = NULL;
+  if (!g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (interface),
+                                         connection,
+                                         "/path/of/dbus_object",
+                                         &error))
+    {
+      /* handle error */
+    }
+
+ +

+ To facilitate atomic changesets (multiple properties changing at + the same time), “notify” signals are queued up when + received. The queue is drained in an idle handler (which is called from the + thread-default main loop + of the thread where the skeleton object was + contructed) and will cause emissions of the org.freedesktop.DBus.Properties::PropertiesChanged + signal with all the properties that have changed. Use + g_dbus_interface_skeleton_flush() or + g_dbus_object_skeleton_flush() to empty the queue + immediately. Use g_object_freeze_notify() and + g_object_thaw_notify() for atomic changesets if on a different + thread. +

+
+
+
+

C Type Mapping

+

+ Scalar types + (type-strings + 'b', + 'y', + 'n', + 'q', + 'i', + 'u', + 'x', + 't' and + 'd') + ), + strings (type-strings + 's', + 'ay', + 'o' and + 'g') and + arrays of string (type-strings + 'as', + 'ao' and + 'aay') + are mapped to the natural types, + e.g. gboolean, gdouble, gint, gchar*, + gchar** and + so on. Everything else is mapped to the GVariant + type. +

+

+ This automatic mapping can be turned off by using the annotation + org.gtk.GDBus.C.ForceGVariant - if used then a + GVariant is always exchanged instead of the + corresponding native C type. This annotation may be convenient to + use when using + bytestrings (type-string 'ay') + for data that could have embedded NUL bytes. +

+
+
+

Stability Guarantees

+

+ The generated C functions are guaranteed to not change their ABI + that is, if a method, signal or property does not change its + signature in the introspection XML, the generated C functions will + not change its C ABI either. The ABI of the generated instance and + class structures will be preserved as well. +

+

+ The ABI of the generated GTypes will be preserved only if + the org.gtk.GDBus.Since annotation is used + judiciously — this is because the VTable for the GInterface + relies on functions pointers for signal handlers. Specifically, if + a D-Bus method, property or signal or is added to a D-Bus + interface, then ABI of the generated GInterface type is preserved + if, and only if, each added method, property signal is annotated + with they org.gtk.GDBus.Since annotation using + a greater version number than previous versions. +

+

+ The generated C code currently happens to be annotated with gtk-doc / GObject + Introspection comments / annotations. The layout and + contents might change in the future so no guarantees about + e.g. SECTION usage etc. is given. +

+

+ While the generated Docbook for D-Bus interfaces isn't expected to + change, no guarantees are given at this point. +

+

+ It is important to note that the generated code should not be + checked into revision control systems, nor it should be included + in distributed source archives. +

+
+
+

Bugs

+

+ Please send bug reports to either the distribution bug tracker + or the upstream bug tracker at + https://bugzilla.gnome.org/enter_bug.cgi?product=glib. +

+
+
+

See also

+

+ gdbus(1) +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gdbus-convenience.html b/docs/reference/gio/html/gdbus-convenience.html new file mode 100644 index 0000000..aabf293 --- /dev/null +++ b/docs/reference/gio/html/gdbus-convenience.html @@ -0,0 +1,64 @@ + + + + +High-level D-Bus Support: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+High-level D-Bus Support

+
+
+Owning Bus Names — Simple API for owning bus names +
+
+Watching Bus Names — Simple API for watching bus names +
+
+GDBusInterface — Base type for D-Bus interfaces +
+
+GDBusInterfaceSkeleton — Service-side D-Bus interface +
+
+GDBusProxy — Client-side D-Bus interface proxy +
+
+GDBusObject — Base type for D-Bus objects +
+
+GDBusObjectSkeleton — Service-side D-Bus object +
+
+GDBusObjectProxy — Client-side D-Bus object +
+
+GDBusObjectManager — Base type for D-Bus object managers +
+
+GDBusObjectManagerServer — Service-side object manager +
+
+GDBusObjectManagerClient — Client-side object manager +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gdbus-example-gdbus-codegen.html b/docs/reference/gio/html/gdbus-example-gdbus-codegen.html new file mode 100644 index 0000000..3152358 --- /dev/null +++ b/docs/reference/gio/html/gdbus-example-gdbus-codegen.html @@ -0,0 +1,89 @@ + + + + +Using gdbus-codegen: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Using gdbus-codegen

+

+ dbus-glib comes with dbus-binding-tool, which + can produce somewhat nice client- and server-side wrappers for a D-Bus interface. + With GDBus, gdbus-codegen is used and like + its counterpart, it also takes D-Bus Introspection XML as input: +

+
+

Example 2. Example D-Bus Introspection XML

+
+ + + + + + + +
1
FIXME: MISSING XINCLUDE CONTENT
+
+ +
+

+ If this XML is processed like this +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
gdbus-codegen --interface-prefix org.gtk.GDBus.Example.ObjectManager. \
+              --generate-c-code generated-code	                      \
+              --c-namespace Example 				      \
+              --c-generate-object-manager			      \
+              --generate-docbook generated-docs                       \
+              gdbus-example-objectmanager.xml
+
+ +

+ then two files generated-code.h and + generated-code.c are + generated. Additionally, two XML files + generated-docs-org.gtk.GDBus.Example.ObjectManager.Animal and + generated-docs-org.gtk.GDBus.Example.ObjectManager.Cat + with Docbook XML are generated. +

+

+ While the contents of generated-code.h and + generated-code.c are best described by the + gdbus-codegen manual + page, brief examples of how this generated code can be used can be found in + ??? + and ???. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gdbus-lowlevel.html b/docs/reference/gio/html/gdbus-lowlevel.html new file mode 100644 index 0000000..6cfe912 --- /dev/null +++ b/docs/reference/gio/html/gdbus-lowlevel.html @@ -0,0 +1,58 @@ + + + + +Low-level D-Bus Support: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Low-level D-Bus Support

+
+
+D-Bus Utilities — Various utilities related to D-Bus +
+
+D-Bus Addresses — D-Bus connection endpoints +
+
+D-Bus Introspection Data — Node and interface description data structures +
+
+GDBusError — Mapping D-Bus errors to and from GError +
+
+GDBusMessage — D-Bus Message +
+
+GDBusConnection — D-Bus Connections +
+
+GDBusMethodInvocation — Object for handling remote calls +
+
+GDBusServer — Helper for accepting connections +
+
+GDBusAuthObserver — Object used for authenticating connections +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gdbus.html b/docs/reference/gio/html/gdbus.html new file mode 100644 index 0000000..68369f0 --- /dev/null +++ b/docs/reference/gio/html/gdbus.html @@ -0,0 +1,299 @@ + + + + +gdbus: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

gdbus

+

gdbus — Tool for working with D-Bus objects

+
+
+

Synopsis

+

gdbus introspect [ --system | --session | --address address ] --dest bus_name --object-path /path/to/object [ --xml ] [ --recurse ] [ --only-properties ]

+

gdbus monitor [ --system | --session | --address address ] --dest bus_name [ --object-path /path/to/object ]

+

gdbus call [ --system | --session | --address address ] --dest bus_name --object-path /path/to/object --method org.project.InterfaceName.MethodName [ --timeout seconds ] ARG1 ARG2...

+

gdbus emit [ --system | --session | --address address ] --object-path /path/to/object --signal org.project.InterfaceName.SignalName [ --dest unique_bus_name ] ARG1 ARG2...

+

gdbus help

+
+
+

Description

+

+ gdbus is a simple tool for working with D-Bus objects. +

+
+
+

Commands

+
++++ + + + + + + + + + + + + + + + + + + + + + + +

introspect

+ Prints out interfaces and property values for a remote object. + For this to work, the owner of the object needs to implement the + org.freedesktop.DBus.Introspectable interface. + If the --xml option is used, the returned + introspection XML is printed, otherwise a parsed pretty + representation is printed. + The --recurse option can be used to + introspect children (and their children and so on) and the + --only-properties option can be used to + only print the interfaces with properties. +

monitor

+ Monitors one or all objects owned by the owner of + bus_name. +

call

+ Invokes a method on a remote object. Each argument to pass to the + method must be specified as a serialized + GVariant except that strings do + not need explicit quotes. The return values are printed out as + serialized GVariant + values. +

emit

+ Emits a signal. Each argument to include in the signal must be specified as a serialized + GVariant except that strings do + not need explicit quotes. +

help

+ Prints help and exit. +

+
+
+

Bash Completion

+

+ gdbus ships with a bash completion script to + complete commands, destinations, bus names, object paths and + interface/method names. +

+
+
+

Examples

+ This shows how to introspect an object - note that the value of each + property is displayed: +
+$ gdbus introspect --system \
+        --dest org.freedesktop.NetworkManager \
+        --object-path /org/freedesktop/NetworkManager/Devices/0
+node /org/freedesktop/NetworkManager/Devices/0 {
+  interface org.freedesktop.DBus.Introspectable {
+    methods:
+      Introspect(out s data);
+  };
+  interface org.freedesktop.DBus.Properties {
+    methods:
+      Get(in  s interface,
+          in  s propname,
+          out v value);
+      Set(in  s interface,
+          in  s propname,
+          in  v value);
+      GetAll(in  s interface,
+             out a{sv} props);
+  };
+  interface org.freedesktop.NetworkManager.Device.Wired {
+    signals:
+      PropertiesChanged(a{sv} arg_0);
+    properties:
+      readonly b Carrier = false;
+      readonly u Speed = 0;
+      readonly s HwAddress = '00:1D:72:88:BE:97';
+  };
+  interface org.freedesktop.NetworkManager.Device {
+    methods:
+      Disconnect();
+    signals:
+      StateChanged(u arg_0,
+                   u arg_1,
+                   u arg_2);
+    properties:
+      readonly u DeviceType = 1;
+      readonly b Managed = true;
+      readwrite o Ip6Config = '/';
+      readwrite o Dhcp4Config = '/';
+      readwrite o Ip4Config = '/';
+      readonly u State = 2;
+      readwrite u Ip4Address = 0;
+      readonly u Capabilities = 3;
+      readonly s Driver = 'e1000e';
+      readwrite s Interface = 'eth0';
+      readonly s Udi = '/sys/devices/pci0000:00/0000:00:19.0/net/eth0';
+  };
+};
+
+

+ The --recurse and --only-properties options can be useful when wanting to inspect all objects owned by a particular process: +

+
+$ gdbus introspect --system --dest org.freedesktop.UPower --object-path / --recurse  --only-properties 
+node / {
+  node /org {
+    node /org/freedesktop {
+      node /org/freedesktop/UPower {
+        interface org.freedesktop.UPower {
+          properties:
+            readonly b IsDocked = true;
+            readonly b LidForceSleep = false;
+            readonly b LidIsPresent = false;
+            readonly b LidIsClosed = false;
+            readonly b OnLowBattery = false;
+            readonly b OnBattery = false;
+            readonly b CanHibernate = true;
+            readonly b CanSuspend = true;
+            readonly s DaemonVersion = '0.9.10';
+        };
+        node /org/freedesktop/UPower/Policy {
+        };
+        node /org/freedesktop/UPower/Wakeups {
+          interface org.freedesktop.UPower.Wakeups {
+            properties:
+              readonly b HasCapability = true;
+          };
+        };
+      };
+    };
+  };
+};
+
+

+ In a similar fashion, the introspect command can be + used to learn details about the Notify method: +

+
+[...]
+  interface org.freedesktop.Notifications {
+    methods:
+      GetServerInformation(out s return_name,
+                           out s return_vendor,
+                           out s return_version,
+                           out s return_spec_version);
+      GetCapabilities(out as return_caps);
+      CloseNotification(in  u id);
+      Notify(in  s app_name,
+             in  u id,
+             in  s icon,
+             in  s summary,
+             in  s body,
+             in  as actions,
+             in  a{sv} hints,
+             in  i timeout,
+             out u return_id);
+  };
+[...]
+
+

+ With this information, it's easy to use the call + command to display a notification +

+
+$ gdbus call --session \
+             --dest org.freedesktop.Notifications \
+             --object-path /org/freedesktop/Notifications \
+             --method org.freedesktop.Notifications.Notify \
+             my_app_name \
+             42 \
+             gtk-dialog-info \
+             "The Summary" \
+             "Here's the body of the notification" \
+             [] \
+             {} \
+             5000
+(uint32 12,)
+
+

+ Monitoring all objects on a service: +

+
+$ gdbus monitor --system --dest org.freedesktop.ConsoleKit
+Monitoring signals from all objects owned by org.freedesktop.ConsoleKit
+The name org.freedesktop.ConsoleKit is owned by :1.15
+/org/freedesktop/ConsoleKit/Session2: org.freedesktop.ConsoleKit.Session.ActiveChanged (false,)
+/org/freedesktop/ConsoleKit/Seat1: org.freedesktop.ConsoleKit.Seat.ActiveSessionChanged ('',)
+/org/freedesktop/ConsoleKit/Session2: org.freedesktop.ConsoleKit.Session.ActiveChanged (true,)
+/org/freedesktop/ConsoleKit/Seat1: org.freedesktop.ConsoleKit.Seat.ActiveSessionChanged ('/org/freedesktop/ConsoleKit/Session2',)
+
+

+ Monitoring a single object on a service: +

+
+$ gdbus monitor --system --dest org.freedesktop.NetworkManager --object-path /org/freedesktop/NetworkManager/AccessPoint/4141
+Monitoring signals on object /org/freedesktop/NetworkManager/AccessPoint/4141 owned by org.freedesktop.NetworkManager
+The name org.freedesktop.NetworkManager is owned by :1.5
+/org/freedesktop/NetworkManager/AccessPoint/4141: org.freedesktop.NetworkManager.AccessPoint.PropertiesChanged ({'Strength': <byte 0x5c>},)
+/org/freedesktop/NetworkManager/AccessPoint/4141: org.freedesktop.NetworkManager.AccessPoint.PropertiesChanged ({'Strength': <byte 0x64>},)
+/org/freedesktop/NetworkManager/AccessPoint/4141: org.freedesktop.NetworkManager.AccessPoint.PropertiesChanged ({'Strength': <byte 0x5e>},)
+/org/freedesktop/NetworkManager/AccessPoint/4141: org.freedesktop.NetworkManager.AccessPoint.PropertiesChanged ({'Strength': <byte 0x64>},)
+
+

+ Emitting a signal: +

+
+$ gdbus emit --session --object-path /foo --signal org.bar.Foo "['foo', 'bar', 'baz']"
+
+

+ Emitting a signal to a specific process: +

+
+$ gdbus emit --session --object-path /bar --signal org.bar.Bar someString --dest :1.42
+
+
+
+

Bugs

+

+ Please send bug reports to either the distribution bug tracker + or the upstream bug tracker at + https://bugzilla.gnome.org/enter_bug.cgi?product=glib. +

+
+
+

See Also

+

+ dbus-send(1) +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-D-Bus-Addresses.html b/docs/reference/gio/html/gio-D-Bus-Addresses.html new file mode 100644 index 0000000..9519db1 --- /dev/null +++ b/docs/reference/gio/html/gio-D-Bus-Addresses.html @@ -0,0 +1,432 @@ + + + + +D-Bus Addresses: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

D-Bus Addresses

+

D-Bus Addresses — D-Bus connection endpoints

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +g_dbus_is_address () +
+gboolean + +g_dbus_is_supported_address () +
+void + +g_dbus_address_get_stream () +
+GIOStream * + +g_dbus_address_get_stream_finish () +
+GIOStream * + +g_dbus_address_get_stream_sync () +
+gchar * + +g_dbus_address_get_for_bus_sync () +
+gchar * + +g_dbus_address_escape_value () +
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Routines for working with D-Bus addresses. A D-Bus address is a string +like "unix:tmpdir=/tmp/my-app-name". The exact format of addresses +is explained in detail in the D-Bus specification.

+
+
+

Functions

+
+

g_dbus_is_address ()

+
gboolean
+g_dbus_is_address (const gchar *string);
+

Checks if string + is a D-Bus address.

+

This doesn't check if string + is actually supported by GDBusServer +or GDBusConnection - use g_dbus_is_supported_address() to do more +checks.

+
+

Parameters

+
+++++ + + + + + +

string

A string.

 
+
+
+

Returns

+

TRUE if string +is a valid D-Bus address, FALSE otherwise.

+
+

Since: 2.26

+
+
+
+

g_dbus_is_supported_address ()

+
gboolean
+g_dbus_is_supported_address (const gchar *string,
+                             GError **error);
+

Like g_dbus_is_address() but also checks if the library suppors the +transports in string + and that key/value pairs for each transport +are valid.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

string

A string.

 

error

Return location for error or NULL.

 
+
+
+

Returns

+

TRUE if string +is a valid D-Bus address that is +supported by this library, FALSE if error +is set.

+
+

Since: 2.26

+
+
+
+

g_dbus_address_get_stream ()

+
void
+g_dbus_address_get_stream (const gchar *address,
+                           GCancellable *cancellable,
+                           GAsyncReadyCallback callback,
+                           gpointer user_data);
+

Asynchronously connects to an endpoint specified by address + and +sets up the connection so it is in a state to run the client-side +of the D-Bus authentication conversation.

+

When the operation is finished, callback + will be invoked. You can +then call g_dbus_address_get_stream_finish() to get the result of +the operation.

+

This is an asynchronous failable function. See +g_dbus_address_get_stream_sync() for the synchronous version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

address

A valid D-Bus address.

 

cancellable

A GCancellable or NULL.

[allow-none]

callback

A GAsyncReadyCallback to call when the request is satisfied.

 

user_data

Data to pass to callback +.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_address_get_stream_finish ()

+
GIOStream *
+g_dbus_address_get_stream_finish (GAsyncResult *res,
+                                  gchar **out_guid,
+                                  GError **error);
+

Finishes an operation started with g_dbus_address_get_stream().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

res

A GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_address_get_stream().

 

out_guid

NULL or return location to store the GUID extracted from address +, if any.

[optional][out]

error

Return location for error or NULL.

 
+
+
+

Returns

+

A GIOStream or NULL if error +is set.

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_dbus_address_get_stream_sync ()

+
GIOStream *
+g_dbus_address_get_stream_sync (const gchar *address,
+                                gchar **out_guid,
+                                GCancellable *cancellable,
+                                GError **error);
+

Synchronously connects to an endpoint specified by address + and +sets up the connection so it is in a state to run the client-side +of the D-Bus authentication conversation.

+

This is a synchronous failable function. See +g_dbus_address_get_stream() for the asynchronous version.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

address

A valid D-Bus address.

 

out_guid

NULL or return location to store the GUID extracted from address +, if any.

[optional][out]

cancellable

A GCancellable or NULL.

[allow-none]

error

Return location for error or NULL.

 
+
+
+

Returns

+

A GIOStream or NULL if error +is set.

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_dbus_address_get_for_bus_sync ()

+
gchar *
+g_dbus_address_get_for_bus_sync (GBusType bus_type,
+                                 GCancellable *cancellable,
+                                 GError **error);
+

Synchronously looks up the D-Bus address for the well-known message +bus instance specified by bus_type +. This may involve using various +platform specific mechanisms.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bus_type

a GBusType

 

cancellable

a GCancellable or NULL.

[allow-none]

error

return location for error or NULL

 
+
+
+

Returns

+

a valid D-Bus address string for bus_type +or NULL if +error +is set

+
+

Since: 2.26

+
+
+
+

g_dbus_address_escape_value ()

+
gchar *
+g_dbus_address_escape_value (const gchar *string);
+

Escape string + so it can appear in a D-Bus address as the value +part of a key-value pair.

+

For instance, if string + is "/run/bus-for-:0", +this function would return "/run/bus-for-3A0", +which could be used in a D-Bus address like +"unix:nonce-tcp:host=127.0.0.1,port=42,noncefile=/run/bus-for-3A0".

+
+

Parameters

+
+++++ + + + + + +

string

an unescaped string to be included in a D-Bus address +as the value in a key-value pair

 
+
+
+

Returns

+

a copy of string +with all +non-optionally-escaped bytes escaped.

+

[transfer full]

+
+

Since: 2.36

+
+
+
+

Types and Values

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-D-Bus-Introspection-Data.html b/docs/reference/gio/html/gio-D-Bus-Introspection-Data.html new file mode 100644 index 0000000..79d9500 --- /dev/null +++ b/docs/reference/gio/html/gio-D-Bus-Introspection-Data.html @@ -0,0 +1,1562 @@ + + + + +D-Bus Introspection Data: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

D-Bus Introspection Data

+

D-Bus Introspection Data — Node and interface description data structures

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const gchar * + +g_dbus_annotation_info_lookup () +
+GDBusMethodInfo * + +g_dbus_interface_info_lookup_method () +
+GDBusSignalInfo * + +g_dbus_interface_info_lookup_signal () +
+GDBusPropertyInfo * + +g_dbus_interface_info_lookup_property () +
+void + +g_dbus_interface_info_cache_build () +
+void + +g_dbus_interface_info_cache_release () +
+void + +g_dbus_interface_info_generate_xml () +
+GDBusNodeInfo * + +g_dbus_node_info_new_for_xml () +
+GDBusInterfaceInfo * + +g_dbus_node_info_lookup_interface () +
+void + +g_dbus_node_info_generate_xml () +
#defineG_TYPE_DBUS_NODE_INFO
#defineG_TYPE_DBUS_INTERFACE_INFO
#defineG_TYPE_DBUS_METHOD_INFO
#defineG_TYPE_DBUS_SIGNAL_INFO
#defineG_TYPE_DBUS_PROPERTY_INFO
#defineG_TYPE_DBUS_ARG_INFO
#defineG_TYPE_DBUS_ANNOTATION_INFO
+GDBusNodeInfo * + +g_dbus_node_info_ref () +
+GDBusInterfaceInfo * + +g_dbus_interface_info_ref () +
+GDBusMethodInfo * + +g_dbus_method_info_ref () +
+GDBusSignalInfo * + +g_dbus_signal_info_ref () +
+GDBusPropertyInfo * + +g_dbus_property_info_ref () +
+GDBusArgInfo * + +g_dbus_arg_info_ref () +
+GDBusAnnotationInfo * + +g_dbus_annotation_info_ref () +
+void + +g_dbus_node_info_unref () +
+void + +g_dbus_interface_info_unref () +
+void + +g_dbus_method_info_unref () +
+void + +g_dbus_signal_info_unref () +
+void + +g_dbus_property_info_unref () +
+void + +g_dbus_arg_info_unref () +
+void + +g_dbus_annotation_info_unref () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 GDBusAnnotationInfo
 GDBusArgInfo
 GDBusMethodInfo
 GDBusSignalInfo
enumGDBusPropertyInfoFlags
 GDBusPropertyInfo
 GDBusInterfaceInfo
 GDBusNodeInfo
+
+
+

Object Hierarchy

+
    GBoxed
+    ├── GDBusAnnotationInfo
+    ├── GDBusArgInfo
+    ├── GDBusInterfaceInfo
+    ├── GDBusMethodInfo
+    ├── GDBusNodeInfo
+    ├── GDBusPropertyInfo
+    ╰── GDBusSignalInfo
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Various data structures and convenience routines to parse and +generate D-Bus introspection XML. Introspection information is +used when registering objects with g_dbus_connection_register_object().

+

The format of D-Bus introspection XML is specified in the +D-Bus specification

+
+
+

Functions

+
+

g_dbus_annotation_info_lookup ()

+
const gchar *
+g_dbus_annotation_info_lookup (GDBusAnnotationInfo **annotations,
+                               const gchar *name);
+

Looks up the value of an annotation.

+

The cost of this function is O(n) in number of annotations.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

annotations

A NULL-terminated array of annotations or NULL.

[array zero-terminated=1][allow-none]

name

The name of the annotation to look up.

 
+
+
+

Returns

+

The value or NULL if not found. Do not free, it is owned by annotations +.

+
+

Since: 2.26

+
+
+
+

g_dbus_interface_info_lookup_method ()

+
GDBusMethodInfo *
+g_dbus_interface_info_lookup_method (GDBusInterfaceInfo *info,
+                                     const gchar *name);
+

Looks up information about a method.

+

The cost of this function is O(n) in number of methods unless +g_dbus_interface_info_cache_build() has been used on info +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

A GDBusInterfaceInfo.

 

name

A D-Bus method name (typically in CamelCase)

 
+
+
+

Returns

+

A GDBusMethodInfo or NULL if not found. Do not free, it is owned by info +.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_dbus_interface_info_lookup_signal ()

+
GDBusSignalInfo *
+g_dbus_interface_info_lookup_signal (GDBusInterfaceInfo *info,
+                                     const gchar *name);
+

Looks up information about a signal.

+

The cost of this function is O(n) in number of signals unless +g_dbus_interface_info_cache_build() has been used on info +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

A GDBusInterfaceInfo.

 

name

A D-Bus signal name (typically in CamelCase)

 
+
+
+

Returns

+

A GDBusSignalInfo or NULL if not found. Do not free, it is owned by info +.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_dbus_interface_info_lookup_property ()

+
GDBusPropertyInfo *
+g_dbus_interface_info_lookup_property (GDBusInterfaceInfo *info,
+                                       const gchar *name);
+

Looks up information about a property.

+

The cost of this function is O(n) in number of properties unless +g_dbus_interface_info_cache_build() has been used on info +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

A GDBusInterfaceInfo.

 

name

A D-Bus property name (typically in CamelCase).

 
+
+
+

Returns

+

A GDBusPropertyInfo or NULL if not found. Do not free, it is owned by info +.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_dbus_interface_info_cache_build ()

+
void
+g_dbus_interface_info_cache_build (GDBusInterfaceInfo *info);
+

Builds a lookup-cache to speed up +g_dbus_interface_info_lookup_method(), +g_dbus_interface_info_lookup_signal() and +g_dbus_interface_info_lookup_property().

+

If this has already been called with info +, the existing cache is +used and its use count is increased.

+

Note that info + cannot be modified until +g_dbus_interface_info_cache_release() is called.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusInterfaceInfo.

 
+
+

Since: 2.30

+
+
+
+

g_dbus_interface_info_cache_release ()

+
void
+g_dbus_interface_info_cache_release (GDBusInterfaceInfo *info);
+

Decrements the usage count for the cache for info + built by +g_dbus_interface_info_cache_build() (if any) and frees the +resources used by the cache if the usage count drops to zero.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusInterfaceInfo

 
+
+

Since: 2.30

+
+
+
+

g_dbus_interface_info_generate_xml ()

+
void
+g_dbus_interface_info_generate_xml (GDBusInterfaceInfo *info,
+                                    guint indent,
+                                    GString *string_builder);
+

Appends an XML representation of info + (and its children) to string_builder +.

+

This function is typically used for generating introspection XML +documents at run-time for handling the +org.freedesktop.DBus.Introspectable.Introspect +method.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

info

A GDBusNodeInfo

 

indent

Indentation level.

 

string_builder

A GString to to append XML data to.

[out]
+
+

Since: 2.26

+
+
+
+

g_dbus_node_info_new_for_xml ()

+
GDBusNodeInfo *
+g_dbus_node_info_new_for_xml (const gchar *xml_data,
+                              GError **error);
+

Parses xml_data + and returns a GDBusNodeInfo representing the data.

+

The introspection XML must contain exactly one top-level +<node> element.

+

Note that this routine is using a +GMarkup-based +parser that only accepts a subset of valid XML documents.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

xml_data

Valid D-Bus introspection XML.

 

error

Return location for error.

 
+
+
+

Returns

+

A GDBusNodeInfo structure or NULL if error +is set. Free +with g_dbus_node_info_unref().

+
+

Since: 2.26

+
+
+
+

g_dbus_node_info_lookup_interface ()

+
GDBusInterfaceInfo *
+g_dbus_node_info_lookup_interface (GDBusNodeInfo *info,
+                                   const gchar *name);
+

Looks up information about an interface.

+

The cost of this function is O(n) in number of interfaces.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

A GDBusNodeInfo.

 

name

A D-Bus interface name.

 
+
+
+

Returns

+

A GDBusInterfaceInfo or NULL if not found. Do not free, it is owned by info +.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_dbus_node_info_generate_xml ()

+
void
+g_dbus_node_info_generate_xml (GDBusNodeInfo *info,
+                               guint indent,
+                               GString *string_builder);
+

Appends an XML representation of info + (and its children) to string_builder +.

+

This function is typically used for generating introspection XML documents at run-time for +handling the org.freedesktop.DBus.Introspectable.Introspect method.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

info

A GDBusNodeInfo.

 

indent

Indentation level.

 

string_builder

A GString to to append XML data to.

[out]
+
+

Since: 2.26

+
+
+
+

G_TYPE_DBUS_NODE_INFO

+
#define G_TYPE_DBUS_NODE_INFO       (g_dbus_node_info_get_type ())
+
+

The GType for a boxed type holding a GDBusNodeInfo.

+

Since: 2.26

+
+
+
+

G_TYPE_DBUS_INTERFACE_INFO

+
#define G_TYPE_DBUS_INTERFACE_INFO  (g_dbus_interface_info_get_type ())
+
+

The GType for a boxed type holding a GDBusInterfaceInfo.

+

Since: 2.26

+
+
+
+

G_TYPE_DBUS_METHOD_INFO

+
#define G_TYPE_DBUS_METHOD_INFO     (g_dbus_method_info_get_type ())
+
+

The GType for a boxed type holding a GDBusMethodInfo.

+

Since: 2.26

+
+
+
+

G_TYPE_DBUS_SIGNAL_INFO

+
#define G_TYPE_DBUS_SIGNAL_INFO     (g_dbus_signal_info_get_type ())
+
+

The GType for a boxed type holding a GDBusSignalInfo.

+

Since: 2.26

+
+
+
+

G_TYPE_DBUS_PROPERTY_INFO

+
#define G_TYPE_DBUS_PROPERTY_INFO   (g_dbus_property_info_get_type ())
+
+

The GType for a boxed type holding a GDBusPropertyInfo.

+

Since: 2.26

+
+
+
+

G_TYPE_DBUS_ARG_INFO

+
#define G_TYPE_DBUS_ARG_INFO        (g_dbus_arg_info_get_type ())
+
+

The GType for a boxed type holding a GDBusArgInfo.

+

Since: 2.26

+
+
+
+

G_TYPE_DBUS_ANNOTATION_INFO

+
#define G_TYPE_DBUS_ANNOTATION_INFO (g_dbus_annotation_info_get_type ())
+
+

The GType for a boxed type holding a GDBusAnnotationInfo.

+

Since: 2.26

+
+
+
+

g_dbus_node_info_ref ()

+
GDBusNodeInfo *
+g_dbus_node_info_ref (GDBusNodeInfo *info);
+

If info + is statically allocated does nothing. Otherwise increases +the reference count.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusNodeInfo

 
+
+
+

Returns

+

The same info +.

+
+

Since: 2.26

+
+
+
+

g_dbus_interface_info_ref ()

+
GDBusInterfaceInfo *
+g_dbus_interface_info_ref (GDBusInterfaceInfo *info);
+

If info + is statically allocated does nothing. Otherwise increases +the reference count.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusInterfaceInfo

 
+
+
+

Returns

+

The same info +.

+
+

Since: 2.26

+
+
+
+

g_dbus_method_info_ref ()

+
GDBusMethodInfo *
+g_dbus_method_info_ref (GDBusMethodInfo *info);
+

If info + is statically allocated does nothing. Otherwise increases +the reference count.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusMethodInfo

 
+
+
+

Returns

+

The same info +.

+
+

Since: 2.26

+
+
+
+

g_dbus_signal_info_ref ()

+
GDBusSignalInfo *
+g_dbus_signal_info_ref (GDBusSignalInfo *info);
+

If info + is statically allocated does nothing. Otherwise increases +the reference count.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusSignalInfo

 
+
+
+

Returns

+

The same info +.

+
+

Since: 2.26

+
+
+
+

g_dbus_property_info_ref ()

+
GDBusPropertyInfo *
+g_dbus_property_info_ref (GDBusPropertyInfo *info);
+

If info + is statically allocated does nothing. Otherwise increases +the reference count.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusPropertyInfo

 
+
+
+

Returns

+

The same info +.

+
+

Since: 2.26

+
+
+
+

g_dbus_arg_info_ref ()

+
GDBusArgInfo *
+g_dbus_arg_info_ref (GDBusArgInfo *info);
+

If info + is statically allocated does nothing. Otherwise increases +the reference count.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusArgInfo

 
+
+
+

Returns

+

The same info +.

+
+

Since: 2.26

+
+
+
+

g_dbus_annotation_info_ref ()

+
GDBusAnnotationInfo *
+g_dbus_annotation_info_ref (GDBusAnnotationInfo *info);
+

If info + is statically allocated does nothing. Otherwise increases +the reference count.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusNodeInfo

 
+
+
+

Returns

+

The same info +.

+
+

Since: 2.26

+
+
+
+

g_dbus_node_info_unref ()

+
void
+g_dbus_node_info_unref (GDBusNodeInfo *info);
+

If info + is statically allocated, does nothing. Otherwise decreases +the reference count of info +. When its reference count drops to 0, +the memory used is freed.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusNodeInfo.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_interface_info_unref ()

+
void
+g_dbus_interface_info_unref (GDBusInterfaceInfo *info);
+

If info + is statically allocated, does nothing. Otherwise decreases +the reference count of info +. When its reference count drops to 0, +the memory used is freed.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusInterfaceInfo.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_method_info_unref ()

+
void
+g_dbus_method_info_unref (GDBusMethodInfo *info);
+

If info + is statically allocated, does nothing. Otherwise decreases +the reference count of info +. When its reference count drops to 0, +the memory used is freed.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusMethodInfo.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_signal_info_unref ()

+
void
+g_dbus_signal_info_unref (GDBusSignalInfo *info);
+

If info + is statically allocated, does nothing. Otherwise decreases +the reference count of info +. When its reference count drops to 0, +the memory used is freed.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusSignalInfo.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_property_info_unref ()

+
void
+g_dbus_property_info_unref (GDBusPropertyInfo *info);
+

If info + is statically allocated, does nothing. Otherwise decreases +the reference count of info +. When its reference count drops to 0, +the memory used is freed.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusPropertyInfo.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_arg_info_unref ()

+
void
+g_dbus_arg_info_unref (GDBusArgInfo *info);
+

If info + is statically allocated, does nothing. Otherwise decreases +the reference count of info +. When its reference count drops to 0, +the memory used is freed.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusArgInfo.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_annotation_info_unref ()

+
void
+g_dbus_annotation_info_unref (GDBusAnnotationInfo *info);
+

If info + is statically allocated, does nothing. Otherwise decreases +the reference count of info +. When its reference count drops to 0, +the memory used is freed.

+
+

Parameters

+
+++++ + + + + + +

info

A GDBusAnnotationInfo.

 
+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GDBusAnnotationInfo

+
typedef struct {
+  volatile gint         ref_count;
+  gchar                *key;
+  gchar                *value;
+  GDBusAnnotationInfo **annotations;
+} GDBusAnnotationInfo;
+
+

Information about an annotation.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

volatile gint ref_count;

The reference count or -1 if statically allocated.

 

gchar *key;

The name of the annotation, e.g. "org.freedesktop.DBus.Deprecated".

 

gchar *value;

The value of the annotation.

 

GDBusAnnotationInfo **annotations;

A pointer to a NULL-terminated array of pointers to GDBusAnnotationInfo structures or NULL if there are no annotations.

[array zero-terminated=1]
+
+

Since: 2.26

+
+
+
+

GDBusArgInfo

+
typedef struct {
+  volatile gint         ref_count;
+  gchar                *name;
+  gchar                *signature;
+  GDBusAnnotationInfo **annotations;
+} GDBusArgInfo;
+
+

Information about an argument for a method or a signal.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

volatile gint ref_count;

The reference count or -1 if statically allocated.

 

gchar *name;

Name of the argument, e.g. unix_user_id +.

 

gchar *signature;

D-Bus signature of the argument (a single complete type).

 

GDBusAnnotationInfo **annotations;

A pointer to a NULL-terminated array of pointers to GDBusAnnotationInfo structures or NULL if there are no annotations.

[array zero-terminated=1]
+
+

Since: 2.26

+
+
+
+

GDBusMethodInfo

+
typedef struct {
+  volatile gint         ref_count;
+  gchar                *name;
+  GDBusArgInfo        **in_args;
+  GDBusArgInfo        **out_args;
+  GDBusAnnotationInfo **annotations;
+} GDBusMethodInfo;
+
+

Information about a method on an D-Bus interface.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

volatile gint ref_count;

The reference count or -1 if statically allocated.

 

gchar *name;

The name of the D-Bus method, e.g. RequestName +.

 

GDBusArgInfo **in_args;

A pointer to a NULL-terminated array of pointers to GDBusArgInfo structures or NULL if there are no in arguments.

[array zero-terminated=1]

GDBusArgInfo **out_args;

A pointer to a NULL-terminated array of pointers to GDBusArgInfo structures or NULL if there are no out arguments.

[array zero-terminated=1]

GDBusAnnotationInfo **annotations;

A pointer to a NULL-terminated array of pointers to GDBusAnnotationInfo structures or NULL if there are no annotations.

[array zero-terminated=1]
+
+

Since: 2.26

+
+
+
+

GDBusSignalInfo

+
typedef struct {
+  volatile gint         ref_count;
+  gchar                *name;
+  GDBusArgInfo        **args;
+  GDBusAnnotationInfo **annotations;
+} GDBusSignalInfo;
+
+

Information about a signal on a D-Bus interface.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

volatile gint ref_count;

The reference count or -1 if statically allocated.

 

gchar *name;

The name of the D-Bus signal, e.g. "NameOwnerChanged".

 

GDBusArgInfo **args;

A pointer to a NULL-terminated array of pointers to GDBusArgInfo structures or NULL if there are no arguments.

[array zero-terminated=1]

GDBusAnnotationInfo **annotations;

A pointer to a NULL-terminated array of pointers to GDBusAnnotationInfo structures or NULL if there are no annotations.

[array zero-terminated=1]
+
+

Since: 2.26

+
+
+
+

enum GDBusPropertyInfoFlags

+

Flags describing the access control of a D-Bus property.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.26

+
+
+
+

GDBusPropertyInfo

+
typedef struct {
+  volatile gint             ref_count;
+  gchar                    *name;
+  gchar                    *signature;
+  GDBusPropertyInfoFlags    flags;
+  GDBusAnnotationInfo     **annotations;
+} GDBusPropertyInfo;
+
+

Information about a D-Bus property on a D-Bus interface.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

volatile gint ref_count;

The reference count or -1 if statically allocated.

 

gchar *name;

The name of the D-Bus property, e.g. "SupportedFilesystems".

 

gchar *signature;

The D-Bus signature of the property (a single complete type).

 

GDBusPropertyInfoFlags flags;

Access control flags for the property.

 

GDBusAnnotationInfo **annotations;

A pointer to a NULL-terminated array of pointers to GDBusAnnotationInfo structures or NULL if there are no annotations.

[array zero-terminated=1]
+
+

Since: 2.26

+
+
+
+

GDBusInterfaceInfo

+
typedef struct {
+  volatile gint         ref_count;
+  gchar                *name;
+  GDBusMethodInfo     **methods;
+  GDBusSignalInfo     **signals;
+  GDBusPropertyInfo   **properties;
+  GDBusAnnotationInfo **annotations;
+} GDBusInterfaceInfo;
+
+

Information about a D-Bus interface.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

volatile gint ref_count;

The reference count or -1 if statically allocated.

 

gchar *name;

The name of the D-Bus interface, e.g. "org.freedesktop.DBus.Properties".

 

GDBusMethodInfo **methods;

A pointer to a NULL-terminated array of pointers to GDBusMethodInfo structures or NULL if there are no methods.

[array zero-terminated=1]

GDBusSignalInfo **signals;

A pointer to a NULL-terminated array of pointers to GDBusSignalInfo structures or NULL if there are no signals.

[array zero-terminated=1]

GDBusPropertyInfo **properties;

A pointer to a NULL-terminated array of pointers to GDBusPropertyInfo structures or NULL if there are no properties.

[array zero-terminated=1]

GDBusAnnotationInfo **annotations;

A pointer to a NULL-terminated array of pointers to GDBusAnnotationInfo structures or NULL if there are no annotations.

[array zero-terminated=1]
+
+

Since: 2.26

+
+
+
+

GDBusNodeInfo

+
typedef struct {
+  volatile gint         ref_count;
+  gchar                *path;
+  GDBusInterfaceInfo  **interfaces;
+  GDBusNodeInfo       **nodes;
+  GDBusAnnotationInfo **annotations;
+} GDBusNodeInfo;
+
+

Information about nodes in a remote object hierarchy.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

volatile gint ref_count;

The reference count or -1 if statically allocated.

 

gchar *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.

 

GDBusInterfaceInfo **interfaces;

A pointer to a NULL-terminated array of pointers to GDBusInterfaceInfo structures or NULL if there are no interfaces.

[array zero-terminated=1]

GDBusNodeInfo **nodes;

A pointer to a NULL-terminated array of pointers to GDBusNodeInfo structures or NULL if there are no nodes.

[array zero-terminated=1]

GDBusAnnotationInfo **annotations;

A pointer to a NULL-terminated array of pointers to GDBusAnnotationInfo structures or NULL if there are no annotations.

[array zero-terminated=1]
+
+

Since: 2.26

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-D-Bus-Utilities.html b/docs/reference/gio/html/gio-D-Bus-Utilities.html new file mode 100644 index 0000000..81d78c8 --- /dev/null +++ b/docs/reference/gio/html/gio-D-Bus-Utilities.html @@ -0,0 +1,390 @@ + + + + +D-Bus Utilities: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

D-Bus Utilities

+

D-Bus Utilities — Various utilities related to D-Bus

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gchar * + +g_dbus_generate_guid () +
+gboolean + +g_dbus_is_guid () +
+gboolean + +g_dbus_is_name () +
+gboolean + +g_dbus_is_unique_name () +
+gboolean + +g_dbus_is_member_name () +
+gboolean + +g_dbus_is_interface_name () +
+GVariant * + +g_dbus_gvalue_to_gvariant () +
+void + +g_dbus_gvariant_to_gvalue () +
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Various utility routines related to D-Bus.

+
+
+

Functions

+
+

g_dbus_generate_guid ()

+
gchar *
+g_dbus_generate_guid (void);
+

Generate a D-Bus GUID that can be used with +e.g. g_dbus_connection_new().

+

See the D-Bus specification regarding what strings are valid D-Bus +GUID (for example, D-Bus GUIDs are not RFC-4122 compliant).

+
+

Returns

+

A valid D-Bus GUID. Free with g_free().

+
+

Since: 2.26

+
+
+
+

g_dbus_is_guid ()

+
gboolean
+g_dbus_is_guid (const gchar *string);
+

Checks if string + is a D-Bus GUID.

+

See the D-Bus specification regarding what strings are valid D-Bus +GUID (for example, D-Bus GUIDs are not RFC-4122 compliant).

+
+

Parameters

+
+++++ + + + + + +

string

The string to check.

 
+
+
+

Returns

+

TRUE if string +is a guid, FALSE otherwise.

+
+

Since: 2.26

+
+
+
+

g_dbus_is_name ()

+
gboolean
+g_dbus_is_name (const gchar *string);
+

Checks if string + is a valid D-Bus bus name (either unique or well-known).

+
+

Parameters

+
+++++ + + + + + +

string

The string to check.

 
+
+
+

Returns

+

TRUE if valid, FALSE otherwise.

+
+

Since: 2.26

+
+
+
+

g_dbus_is_unique_name ()

+
gboolean
+g_dbus_is_unique_name (const gchar *string);
+

Checks if string + is a valid D-Bus unique bus name.

+
+

Parameters

+
+++++ + + + + + +

string

The string to check.

 
+
+
+

Returns

+

TRUE if valid, FALSE otherwise.

+
+

Since: 2.26

+
+
+
+

g_dbus_is_member_name ()

+
gboolean
+g_dbus_is_member_name (const gchar *string);
+

Checks if string + is a valid D-Bus member (e.g. signal or method) name.

+
+

Parameters

+
+++++ + + + + + +

string

The string to check.

 
+
+
+

Returns

+

TRUE if valid, FALSE otherwise.

+
+

Since: 2.26

+
+
+
+

g_dbus_is_interface_name ()

+
gboolean
+g_dbus_is_interface_name (const gchar *string);
+

Checks if string + is a valid D-Bus interface name.

+
+

Parameters

+
+++++ + + + + + +

string

The string to check.

 
+
+
+

Returns

+

TRUE if valid, FALSE otherwise.

+
+

Since: 2.26

+
+
+
+

g_dbus_gvalue_to_gvariant ()

+
GVariant *
+g_dbus_gvalue_to_gvariant (const GValue *gvalue,
+                           const GVariantType *type);
+

Converts a GValue to a GVariant of the type indicated by the type + +parameter.

+

The conversion is using the following rules:

+
+

This can fail if e.g. gvalue + is of type G_TYPE_STRING and type + +is 'i'. It will also fail for any GType +(including e.g. G_TYPE_OBJECT and G_TYPE_BOXED derived-types) not +in the table above.

+

Note that if gvalue + is of type G_TYPE_VARIANT and its value is +NULL, the empty GVariant instance (never NULL) for type + is +returned (e.g. 0 for scalar types, the empty string for string types, +'/' for object path types, the empty array for any array type and so on).

+

See the g_dbus_gvariant_to_gvalue() function for how to convert a +GVariant to a GValue.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

gvalue

A GValue to convert to a GVariant

 

type

A GVariantType

 
+
+
+

Returns

+

A GVariant (never floating) of GVariantType type +holding +the data from gvalue +or NULL in case of failure. Free with +g_variant_unref().

+
+

Since: 2.30

+
+
+
+

g_dbus_gvariant_to_gvalue ()

+
void
+g_dbus_gvariant_to_gvalue (GVariant *value,
+                           GValue *out_gvalue);
+

Converts a GVariant to a GValue. If value + is floating, it is consumed.

+

The rules specified in the g_dbus_gvalue_to_gvariant() function are +used - this function is essentially its reverse form.

+

The conversion never fails - a valid GValue is always returned in +out_gvalue +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

A GVariant.

 

out_gvalue

Return location pointing to a zero-filled (uninitialized) GValue.

[out]
+
+

Since: 2.30

+
+
+
+

Types and Values

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-Desktop-file-based-GAppInfo.html b/docs/reference/gio/html/gio-Desktop-file-based-GAppInfo.html new file mode 100644 index 0000000..64912b0 --- /dev/null +++ b/docs/reference/gio/html/gio-Desktop-file-based-GAppInfo.html @@ -0,0 +1,1194 @@ + + + + +GDesktopAppInfo: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDesktopAppInfo

+

GDesktopAppInfo — Application information from desktop files

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GDesktopAppInfo * + +g_desktop_app_info_new_from_filename () +
+GDesktopAppInfo * + +g_desktop_app_info_new_from_keyfile () +
+GDesktopAppInfo * + +g_desktop_app_info_new () +
const char * + +g_desktop_app_info_get_filename () +
+gboolean + +g_desktop_app_info_get_is_hidden () +
+gboolean + +g_desktop_app_info_get_nodisplay () +
+gboolean + +g_desktop_app_info_get_show_in () +
const char * + +g_desktop_app_info_get_generic_name () +
const char * + +g_desktop_app_info_get_categories () +
const char * const * + +g_desktop_app_info_get_keywords () +
const char * + +g_desktop_app_info_get_startup_wm_class () +
+void + +g_desktop_app_info_set_desktop_env () +
+char * + +g_desktop_app_info_get_string () +
+gboolean + +g_desktop_app_info_get_boolean () +
+gboolean + +g_desktop_app_info_has_key () +
+void + +(*GDesktopAppLaunchCallback) () +
+gboolean + +g_desktop_app_info_launch_uris_as_manager () +
const gchar * const * + +g_desktop_app_info_list_actions () +
+gchar * + +g_desktop_app_info_get_action_name () +
+void + +g_desktop_app_info_launch_action () +
+gchar *** + +g_desktop_app_info_search () +
+GList * + +g_desktop_app_info_get_implementations () +
+
+
+

Properties

+
+++++ + + + + + +
+gchar *filenameRead / Write / Construct Only
+
+
+

Types and Values

+ +
+
+

Object Hierarchy

+
    GInterface
+    ╰── GDesktopAppInfoLookup
+    GObject
+    ╰── GDesktopAppInfo
+
+
+
+

Prerequisites

+

+GDesktopAppInfoLookup requires + GObject.

+
+
+

Implemented Interfaces

+

+GDesktopAppInfo implements + GAppInfo.

+
+
+

Includes

+
#include <gio/gdesktopappinfo.h>
+
+
+
+

Description

+

GDesktopAppInfo is an implementation of GAppInfo based on +desktop files.

+

Note that <gio/gdesktopappinfo.h> belongs to the UNIX-specific +GIO interfaces, thus you have to use the gio-unix-2.0.pc pkg-config +file when using it.

+
+
+

Functions

+
+

g_desktop_app_info_new_from_filename ()

+
GDesktopAppInfo *
+g_desktop_app_info_new_from_filename (const char *filename);
+

Creates a new GDesktopAppInfo.

+
+

Parameters

+
+++++ + + + + + +

filename

the path of a desktop file, in the GLib filename encoding

 
+
+
+

Returns

+

a new GDesktopAppInfo or NULL on error.

+
+
+
+
+

g_desktop_app_info_new_from_keyfile ()

+
GDesktopAppInfo *
+g_desktop_app_info_new_from_keyfile (GKeyFile *key_file);
+

Creates a new GDesktopAppInfo.

+
+

Parameters

+
+++++ + + + + + +

key_file

an opened GKeyFile

 
+
+
+

Returns

+

a new GDesktopAppInfo or NULL on error.

+
+

Since: 2.18

+
+
+
+

g_desktop_app_info_new ()

+
GDesktopAppInfo *
+g_desktop_app_info_new (const char *desktop_id);
+

Creates a new GDesktopAppInfo based on a desktop file id.

+

A desktop file id is the basename of the desktop file, including the +.desktop extension. GIO is looking for a desktop file with this name +in the applications subdirectories of the XDG +data directories (i.e. the directories specified in the XDG_DATA_HOME +and XDG_DATA_DIRS environment variables). GIO also supports the +prefix-to-subdirectory mapping that is described in the +Menu Spec +(i.e. a desktop id of kde-foo.desktop will match +/usr/share/applications/kde/foo.desktop).

+
+

Parameters

+
+++++ + + + + + +

desktop_id

the desktop file id

 
+
+
+

Returns

+

a new GDesktopAppInfo, or NULL if no desktop file with that id

+
+
+
+
+

g_desktop_app_info_get_filename ()

+
const char *
+g_desktop_app_info_get_filename (GDesktopAppInfo *info);
+

When info + was created from a known filename, return it. In some +situations such as the GDesktopAppInfo returned from +g_desktop_app_info_new_from_keyfile(), this function will return NULL.

+
+

Parameters

+
+++++ + + + + + +

info

a GDesktopAppInfo

 
+
+
+

Returns

+

The full path to the file for info +, or NULL if not known.

+
+

Since: 2.24

+
+
+
+

g_desktop_app_info_get_is_hidden ()

+
gboolean
+g_desktop_app_info_get_is_hidden (GDesktopAppInfo *info);
+

A desktop file is hidden if the Hidden key in it is +set to True.

+
+

Parameters

+
+++++ + + + + + +

info

a GDesktopAppInfo.

 
+
+
+

Returns

+

TRUE if hidden, FALSE otherwise.

+
+
+
+
+

g_desktop_app_info_get_nodisplay ()

+
gboolean
+g_desktop_app_info_get_nodisplay (GDesktopAppInfo *info);
+

Gets the value of the NoDisplay key, which helps determine if the +application info should be shown in menus. See +G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY and g_app_info_should_show().

+
+

Parameters

+
+++++ + + + + + +

info

a GDesktopAppInfo

 
+
+
+

Returns

+

The value of the NoDisplay key

+
+

Since: 2.30

+
+
+
+

g_desktop_app_info_get_show_in ()

+
gboolean
+g_desktop_app_info_get_show_in (GDesktopAppInfo *info,
+                                const gchar *desktop_env);
+

Checks if the application info should be shown in menus that list available +applications for a specific name of the desktop, based on the +OnlyShowIn and NotShowIn keys.

+

desktop_env + should typically be given as NULL, in which case the +XDG_CURRENT_DESKTOP environment variable is consulted. If you want +to override the default mechanism then you may specify desktop_env +, +but this is not recommended.

+

Note that g_app_info_should_show() for info + will include this check (with +NULL for desktop_env +) as well as additional checks.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GDesktopAppInfo

 

desktop_env

a string specifying a desktop name.

[nullable]
+
+
+

Returns

+

TRUE if the info +should be shown in desktop_env +according to the +OnlyShowIn and NotShowIn keys, FALSE +otherwise.

+
+

Since: 2.30

+
+
+
+

g_desktop_app_info_get_generic_name ()

+
const char *
+g_desktop_app_info_get_generic_name (GDesktopAppInfo *info);
+

Gets the generic name from the destkop file.

+
+

Parameters

+
+++++ + + + + + +

info

a GDesktopAppInfo

 
+
+
+

Returns

+

The value of the GenericName key

+
+
+
+
+

g_desktop_app_info_get_categories ()

+
const char *
+g_desktop_app_info_get_categories (GDesktopAppInfo *info);
+

Gets the categories from the desktop file.

+
+

Parameters

+
+++++ + + + + + +

info

a GDesktopAppInfo

 
+
+
+

Returns

+

The unparsed Categories key from the desktop file; +i.e. no attempt is made to split it by ';' or validate it.

+
+
+
+
+

g_desktop_app_info_get_keywords ()

+
const char * const *
+g_desktop_app_info_get_keywords (GDesktopAppInfo *info);
+

Gets the keywords from the desktop file.

+
+

Parameters

+
+++++ + + + + + +

info

a GDesktopAppInfo

 
+
+
+

Returns

+

The value of the Keywords key.

+

[transfer none]

+
+

Since: 2.32

+
+
+
+

g_desktop_app_info_get_startup_wm_class ()

+
const char *
+g_desktop_app_info_get_startup_wm_class
+                               (GDesktopAppInfo *info);
+

Retrieves the StartupWMClass field from info +. This represents the +WM_CLASS property of the main window of the application, if launched +through info +.

+
+

Parameters

+
+++++ + + + + + +

info

a GDesktopAppInfo that supports startup notify

 
+
+
+

Returns

+

the startup WM class, or NULL if none is set +in the desktop file.

+

[transfer none]

+
+

Since: 2.34

+
+
+
+

g_desktop_app_info_set_desktop_env ()

+
void
+g_desktop_app_info_set_desktop_env (const char *desktop_env);
+
+

g_desktop_app_info_set_desktop_env has been deprecated since version 2.42 and should not be used in newly-written code.

+

do not use this API. Since 2.42 the value of the +XDG_CURRENT_DESKTOP environment variable will be used.

+
+

Sets the name of the desktop that the application is running in. +This is used by g_app_info_should_show() and +g_desktop_app_info_get_show_in() to evaluate the +OnlyShowIn and NotShowIn +desktop entry fields.

+

Should be called only once; subsequent calls are ignored.

+
+

Parameters

+
+++++ + + + + + +

desktop_env

a string specifying what desktop this is

 
+
+
+
+
+

g_desktop_app_info_get_string ()

+
char *
+g_desktop_app_info_get_string (GDesktopAppInfo *info,
+                               const char *key);
+

Looks up a string value in the keyfile backing info +.

+

The key + is looked up in the "Desktop Entry" group.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GDesktopAppInfo

 

key

the key to look up

 
+
+
+

Returns

+

a newly allocated string, or NULL if the key +is not found

+
+

Since: 2.36

+
+
+
+

g_desktop_app_info_get_boolean ()

+
gboolean
+g_desktop_app_info_get_boolean (GDesktopAppInfo *info,
+                                const char *key);
+

Looks up a boolean value in the keyfile backing info +.

+

The key + is looked up in the "Desktop Entry" group.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GDesktopAppInfo

 

key

the key to look up

 
+
+
+

Returns

+

the boolean value, or FALSE if the key +is not found

+
+

Since: 2.36

+
+
+
+

g_desktop_app_info_has_key ()

+
gboolean
+g_desktop_app_info_has_key (GDesktopAppInfo *info,
+                            const char *key);
+

Returns whether key + exists in the "Desktop Entry" group +of the keyfile backing info +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GDesktopAppInfo

 

key

the key to look up

 
+
+
+

Returns

+

TRUE if the key +exists

+
+

Since: 2.36

+
+
+
+

GDesktopAppLaunchCallback ()

+
void
+(*GDesktopAppLaunchCallback) (GDesktopAppInfo *appinfo,
+                              GPid pid,
+                              gpointer 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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

appinfo

a GDesktopAppInfo

 

pid

Process identifier

 

user_data

User data

 
+
+
+
+
+

g_desktop_app_info_launch_uris_as_manager ()

+
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);
+

This function performs the equivalent of g_app_info_launch_uris(), +but is intended primarily for operating system components that +launch applications. Ordinary applications should use +g_app_info_launch_uris().

+

If the application is launched via traditional UNIX fork()/exec() +then spawn_flags +, user_setup + and user_setup_data + are used for the +call to g_spawn_async(). Additionally, pid_callback + (with +pid_callback_data +) will be called to inform about the PID of the +created process.

+

If application launching occurs via some other mechanism (eg: D-Bus +activation) then spawn_flags +, user_setup +, user_setup_data +, +pid_callback + and pid_callback_data + are ignored.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

appinfo

a GDesktopAppInfo

 

uris

List of URIs.

[element-type utf8]

launch_context

a GAppLaunchContext.

[allow-none]

spawn_flags

GSpawnFlags, used for each process

 

user_setup

a GSpawnChildSetupFunc, used once +for each process.

[scope call][allow-none]

user_setup_data

User data for user_setup +.

[closure user_setup][allow-none]

pid_callback

Callback for child processes.

[scope call][allow-none]

pid_callback_data

User data for callback +.

[closure pid_callback][allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE on successful launch, FALSE otherwise.

+
+
+
+
+

g_desktop_app_info_list_actions ()

+
const gchar * const *
+g_desktop_app_info_list_actions (GDesktopAppInfo *info);
+

Returns the list of "additional application actions" supported on the +desktop file, as per the desktop file specification.

+

As per the specification, this is the list of actions that are +explicitly listed in the "Actions" key of the [Desktop Entry] group.

+
+

Parameters

+
+++++ + + + + + +

info

a GDesktopAppInfo

 
+
+
+

Returns

+

a list of strings, always non-NULL.

+

[array zero-terminated=1][element-type utf8][transfer none]

+
+

Since: 2.38

+
+
+
+

g_desktop_app_info_get_action_name ()

+
gchar *
+g_desktop_app_info_get_action_name (GDesktopAppInfo *info,
+                                    const gchar *action_name);
+

Gets the user-visible display name of the "additional application +action" specified by action_name +.

+

This corresponds to the "Name" key within the keyfile group for the +action.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

info

a GDesktopAppInfo

 

action_name

the name of the action as from +g_desktop_app_info_list_actions()

 
+
+
+

Returns

+

the locale-specific action name.

+

[transfer full]

+
+

Since: 2.38

+
+
+
+

g_desktop_app_info_launch_action ()

+
void
+g_desktop_app_info_launch_action (GDesktopAppInfo *info,
+                                  const gchar *action_name,
+                                  GAppLaunchContext *launch_context);
+

Activates the named application action.

+

You may only call this function on action names that were +returned from g_desktop_app_info_list_actions().

+

Note that if the main entry of the desktop file indicates that the +application supports startup notification, and launch_context + is +non-NULL, then startup notification will be used when activating the +action (and as such, invocation of the action on the receiving side +must signal the end of startup notification when it is completed). +This is the expected behaviour of applications declaring additional +actions, as per the desktop file specification.

+

As with g_app_info_launch() there is no way to detect failures that +occur while using this function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

info

a GDesktopAppInfo

 

action_name

the name of the action as from +g_desktop_app_info_list_actions()

 

launch_context

a GAppLaunchContext.

[allow-none]
+
+

Since: 2.38

+
+
+
+

g_desktop_app_info_search ()

+
gchar ***
+g_desktop_app_info_search (const gchar *search_string);
+

Searches desktop files for ones that match search_string +.

+

The return value is an array of strvs. Each strv contains a list of +applications that matched search_string + with an equal score. The +outer list is sorted by score so that the first strv contains the +best-matching applications, and so on. +The algorithm for determining matches is undefined and may change at +any time.

+
+

Parameters

+
+++++ + + + + + +

search_string

the search string to use

 
+
+
+

Returns

+

a +list of strvs. Free each item with g_strfreev() and free the outer +list with g_free().

+

[array zero-terminated=1][element-type GStrv][transfer full]

+
+
+
+
+

g_desktop_app_info_get_implementations ()

+
GList *
+g_desktop_app_info_get_implementations
+                               (const gchar *interface);
+

Gets all applications that implement interface +.

+

An application implements an interface if that interface is listed in +the Implements= line of the desktop file of the application.

+
+

Parameters

+
+++++ + + + + + +

interface

the name of the interface

 
+
+
+

Returns

+

a list of GDesktopAppInfo +objects.

+

[element-type GDesktopAppInfo][transfer full]

+
+

Since: 2.42

+
+
+
+

Types and Values

+
+

GDesktopAppInfo

+
typedef struct _GDesktopAppInfo GDesktopAppInfo;
+

Information about an installed application from a desktop file.

+
+
+
+

GDesktopAppInfoLookup

+
typedef struct _GDesktopAppInfoLookup GDesktopAppInfoLookup;
+

GDesktopAppInfoLookup is deprecated and should not be used in newly-written code.

+

GDesktopAppInfoLookup is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

struct GDesktopAppInfoLookupIface

+
struct GDesktopAppInfoLookupIface {
+  GTypeInterface g_iface;
+
+  GAppInfo * (* get_default_for_uri_scheme) (GDesktopAppInfoLookup *lookup,
+                                             const char            *uri_scheme);
+};
+
+

GDesktopAppInfoLookupIface is deprecated and should not be used in newly-written code.

+

Interface that is used by backends to associate default +handlers with URI schemes.

+
+

Members

+
+++++ + + + + + + + + + + + + +

GTypeInterface g_iface;

  

get_default_for_uri_scheme ()

Virtual method for +g_desktop_app_info_lookup_get_default_for_uri_scheme().

 
+
+
+
+
+

G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME

+
#define G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME "gio-desktop-app-info-lookup"
+
+

G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME is deprecated and should not be used in newly-written code.

+

Extension point for default handler to URI association. See +Extending GIO.

+
+
+
+

Property Details

+
+

The “filename” property

+
  “filename”                 gchar *
+

The origin filename of this GDesktopAppInfo

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-Extension-Points.html b/docs/reference/gio/html/gio-Extension-Points.html new file mode 100644 index 0000000..8bfbe50 --- /dev/null +++ b/docs/reference/gio/html/gio-Extension-Points.html @@ -0,0 +1,612 @@ + + + + +Extension Points: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Extension Points

+

Extension Points — Extension Points

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const char * + +g_io_extension_get_name () +
+gint + +g_io_extension_get_priority () +
+GType + +g_io_extension_get_type () +
+GIOExtension * + +g_io_extension_point_get_extension_by_name () +
+GList * + +g_io_extension_point_get_extensions () +
+GType + +g_io_extension_point_get_required_type () +
+GIOExtension * + +g_io_extension_point_implement () +
+GIOExtensionPoint * + +g_io_extension_point_lookup () +
+GIOExtensionPoint * + +g_io_extension_point_register () +
+void + +g_io_extension_point_set_required_type () +
+GTypeClass * + +g_io_extension_ref_class () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GIOExtension
 GIOExtensionPoint
+
+
+

Includes

+
#include <gio.h>
+
+
+
+

Description

+

GIOExtensionPoint provides a mechanism for modules to extend the +functionality of the library or application that loaded it in an +organized fashion.

+

An extension point is identified by a name, and it may optionally +require that any implementation must be of a certain type (or derived +thereof). Use g_io_extension_point_register() to register an +extension point, and g_io_extension_point_set_required_type() to +set a required type.

+

A module can implement an extension point by specifying the GType +that implements the functionality. Additionally, each implementation +of an extension point has a name, and a priority. Use +g_io_extension_point_implement() to implement an extension point.

+
+ + + + + + + +
1
+2
+3
+4
+5
GIOExtensionPoint *ep;
+
+// Register an extension point
+ep = g_io_extension_point_register ("my-extension-point");
+g_io_extension_point_set_required_type (ep, MY_TYPE_EXAMPLE);
+
+ +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
// Implement an extension point
+G_DEFINE_TYPE (MyExampleImpl, my_example_impl, MY_TYPE_EXAMPLE);
+g_io_extension_point_implement ("my-extension-point",
+                                my_example_impl_get_type (),
+                                "my-example",
+                                10);
+
+ +

+

It is up to the code that registered the extension point how + it uses the implementations that have been associated with it. + Depending on the use case, it may use all implementations, or + only the one with the highest priority, or pick a specific + one by name.

+

To avoid opening all modules just to find out what extension + points they implement, GIO makes use of a caching mechanism, + see gio-querymodules. + You are expected to run this command after installing a + GIO module.

+

The GIO_EXTRA_MODULES environment variable can be used to + specify additional directories to automatically load modules + from. This environment variable has the same syntax as the + PATH. If two modules have the same base name in different + directories, then the latter one will be ignored. If additional + directories are specified GIO will load modules from the built-in + directory last.

+
+
+

Functions

+
+

g_io_extension_get_name ()

+
const char *
+g_io_extension_get_name (GIOExtension *extension);
+

Gets the name under which extension + was registered.

+

Note that the same type may be registered as extension +for multiple extension points, under different names.

+
+

Parameters

+
+++++ + + + + + +

extension

a GIOExtension

 
+
+
+

Returns

+

the name of extension +.

+
+
+
+
+

g_io_extension_get_priority ()

+
gint
+g_io_extension_get_priority (GIOExtension *extension);
+

Gets the priority with which extension + was registered.

+
+

Parameters

+
+++++ + + + + + +

extension

a GIOExtension

 
+
+
+

Returns

+

the priority of extension +

+
+
+
+
+

g_io_extension_get_type ()

+
GType
+g_io_extension_get_type (GIOExtension *extension);
+

Gets the type associated with extension +.

+
+

Parameters

+
+++++ + + + + + +

extension

a GIOExtension

 
+
+
+

Returns

+

the type of extension +

+
+
+
+
+

g_io_extension_point_get_extension_by_name ()

+
GIOExtension *
+g_io_extension_point_get_extension_by_name
+                               (GIOExtensionPoint *extension_point,
+                                const char *name);
+

Finds a GIOExtension for an extension point by name.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

extension_point

a GIOExtensionPoint

 

name

the name of the extension to get

 
+
+
+

Returns

+

the GIOExtension for extension_point +that has the +given name, or NULL if there is no extension with that name.

+

[transfer none]

+
+
+
+
+

g_io_extension_point_get_extensions ()

+
GList *
+g_io_extension_point_get_extensions (GIOExtensionPoint *extension_point);
+

Gets a list of all extensions that implement this extension point. +The list is sorted by priority, beginning with the highest priority.

+
+

Parameters

+
+++++ + + + + + +

extension_point

a GIOExtensionPoint

 
+
+
+

Returns

+

a GList of +GIOExtensions. The list is owned by GIO and should not be +modified.

+

[element-type GIOExtension][transfer none]

+
+
+
+
+

g_io_extension_point_get_required_type ()

+
GType
+g_io_extension_point_get_required_type
+                               (GIOExtensionPoint *extension_point);
+

Gets the required type for extension_point +.

+
+

Parameters

+
+++++ + + + + + +

extension_point

a GIOExtensionPoint

 
+
+
+

Returns

+

the GType that all implementations must have, +or G_TYPE_INVALID if the extension point has no required type

+
+
+
+
+

g_io_extension_point_implement ()

+
GIOExtension *
+g_io_extension_point_implement (const char *extension_point_name,
+                                GType type,
+                                const char *extension_name,
+                                gint priority);
+

Registers type + as extension for the extension point with name +extension_point_name +.

+

If type + has already been registered as an extension for this +extension point, the existing GIOExtension object is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

extension_point_name

the name of the extension point

 

type

the GType to register as extension

 

extension_name

the name for the extension

 

priority

the priority for the extension

 
+
+
+

Returns

+

a GIOExtension object for GType.

+

[transfer none]

+
+
+
+
+

g_io_extension_point_lookup ()

+
GIOExtensionPoint *
+g_io_extension_point_lookup (const char *name);
+

Looks up an existing extension point.

+
+

Parameters

+
+++++ + + + + + +

name

the name of the extension point

 
+
+
+

Returns

+

the GIOExtensionPoint, or NULL if there +is no registered extension point with the given name.

+

[transfer none]

+
+
+
+
+

g_io_extension_point_register ()

+
GIOExtensionPoint *
+g_io_extension_point_register (const char *name);
+

Registers an extension point.

+
+

Parameters

+
+++++ + + + + + +

name

The name of the extension point

 
+
+
+

Returns

+

the new GIOExtensionPoint. This object is +owned by GIO and should not be freed.

+

[transfer none]

+
+
+
+
+

g_io_extension_point_set_required_type ()

+
void
+g_io_extension_point_set_required_type
+                               (GIOExtensionPoint *extension_point,
+                                GType type);
+

Sets the required type for extension_point + to type +. +All implementations must henceforth have this type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

extension_point

a GIOExtensionPoint

 

type

the GType to require

 
+
+
+
+
+

g_io_extension_ref_class ()

+
GTypeClass *
+g_io_extension_ref_class (GIOExtension *extension);
+

Gets a reference to the class for the type that is +associated with extension +.

+
+

Parameters

+
+++++ + + + + + +

extension

a GIOExtension

 
+
+
+

Returns

+

the GTypeClass for the type of extension +.

+

[transfer full]

+
+
+
+
+

Types and Values

+
+

GIOExtension

+
typedef struct _GIOExtension GIOExtension;
+

GIOExtension is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

GIOExtensionPoint

+
typedef struct _GIOExtensionPoint GIOExtensionPoint;
+

GIOExtensionPoint is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

See Also

+

Extending GIO

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-GActionGroup-exporter.html b/docs/reference/gio/html/gio-GActionGroup-exporter.html new file mode 100644 index 0000000..c90bc61 --- /dev/null +++ b/docs/reference/gio/html/gio-GActionGroup-exporter.html @@ -0,0 +1,190 @@ + + + + +GActionGroup exporter: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GActionGroup exporter

+

GActionGroup exporter — Export GActionGroups on D-Bus

+
+
+

Functions

+
++++ + + + + + + + + + + +
+guint + +g_dbus_connection_export_action_group () +
+void + +g_dbus_connection_unexport_action_group () +
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

These functions support exporting a GActionGroup on D-Bus. +The D-Bus interface that is used is a private implementation +detail.

+

To access an exported GActionGroup remotely, use +g_dbus_action_group_get() to obtain a GDBusActionGroup.

+
+
+

Functions

+
+

g_dbus_connection_export_action_group ()

+
guint
+g_dbus_connection_export_action_group (GDBusConnection *connection,
+                                       const gchar *object_path,
+                                       GActionGroup *action_group,
+                                       GError **error);
+

Exports action_group + on connection + at object_path +.

+

The implemented D-Bus API should be considered private. It is +subject to change in the future.

+

A given object path can only have one action group exported on it. +If this constraint is violated, the export will fail and 0 will be +returned (with error + set accordingly).

+

You can unexport the action group using +g_dbus_connection_unexport_action_group() with the return value of +this function.

+

The thread default main context is taken at the time of this call. +All incoming action activations and state change requests are +reported from this context. Any changes on the action group that +cause it to emit signals must also come from this same context. +Since incoming action activations and state change requests are +rather likely to cause changes on the action group, this effectively +limits a given action group to being exported from only one main +context.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

object_path

a D-Bus object path

 

action_group

a GActionGroup

 

error

a pointer to a NULL GError, or NULL

 
+
+
+

Returns

+

the ID of the export (never zero), or 0 in case of failure

+
+

Since: 2.32

+
+
+
+

g_dbus_connection_unexport_action_group ()

+
void
+g_dbus_connection_unexport_action_group
+                               (GDBusConnection *connection,
+                                guint export_id);
+

Reverses the effect of a previous call to +g_dbus_connection_export_action_group().

+

It is an error to call this function with an ID that wasn't returned +from g_dbus_connection_export_action_group() or to call it with the +same ID more than once.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

connection

a GDBusConnection

 

export_id

the ID from g_dbus_connection_export_action_group()

 
+
+

Since: 2.32

+
+
+
+

Types and Values

+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-GContentType.html b/docs/reference/gio/html/gio-GContentType.html new file mode 100644 index 0000000..388abb7 --- /dev/null +++ b/docs/reference/gio/html/gio-GContentType.html @@ -0,0 +1,588 @@ + + + + +GContentType: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GContentType

+

GContentType — Platform-specific content typing

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +g_content_type_equals () +
+gboolean + +g_content_type_is_a () +
+gboolean + +g_content_type_is_unknown () +
+gchar * + +g_content_type_get_description () +
+gchar * + +g_content_type_get_mime_type () +
+GIcon * + +g_content_type_get_icon () +
+GIcon * + +g_content_type_get_symbolic_icon () +
+gchar * + +g_content_type_get_generic_icon_name () +
+gboolean + +g_content_type_can_be_executable () +
+gchar * + +g_content_type_from_mime_type () +
+gchar * + +g_content_type_guess () +
+gchar ** + +g_content_type_guess_for_tree () +
+GList * + +g_content_types_get_registered () +
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

A content type is a platform specific string that defines the type +of a file. On UNIX it is a +mime type +like "text/plain" or "image/png". +On Win32 it is an extension string like ".doc", ".txt" or a perceived +string like "audio". Such strings can be looked up in the registry at +HKEY_CLASSES_ROOT.

+
+
+

Functions

+
+

g_content_type_equals ()

+
gboolean
+g_content_type_equals (const gchar *type1,
+                       const gchar *type2);
+

Compares two content types for equality.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

type1

a content type string

 

type2

a content type string

 
+
+
+

Returns

+

TRUE if the two strings are identical or equivalent, +FALSE otherwise.

+
+
+
+
+

g_content_type_is_a ()

+
gboolean
+g_content_type_is_a (const gchar *type,
+                     const gchar *supertype);
+

Determines if type + is a subset of supertype +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

type

a content type string

 

supertype

a content type string

 
+
+
+

Returns

+

TRUE if type +is a kind of supertype +, +FALSE otherwise.

+
+
+
+
+

g_content_type_is_unknown ()

+
gboolean
+g_content_type_is_unknown (const gchar *type);
+

Checks if the content type is the generic "unknown" type. +On UNIX this is the "application/octet-stream" mimetype, +while on win32 it is "*".

+
+

Parameters

+
+++++ + + + + + +

type

a content type string

 
+
+
+

Returns

+

TRUE if the type is the unknown type.

+
+
+
+
+

g_content_type_get_description ()

+
gchar *
+g_content_type_get_description (const gchar *type);
+

Gets the human readable description of the content type.

+
+

Parameters

+
+++++ + + + + + +

type

a content type string

 
+
+
+

Returns

+

a short description of the content type type +. Free the +returned string with g_free()

+
+
+
+
+

g_content_type_get_mime_type ()

+
gchar *
+g_content_type_get_mime_type (const gchar *type);
+

Gets the mime type for the content type, if one is registered.

+
+

Parameters

+
+++++ + + + + + +

type

a content type string

 
+
+
+

Returns

+

the registered mime type for the given type +, +or NULL if unknown.

+

[nullable]

+
+
+
+
+

g_content_type_get_icon ()

+
GIcon *
+g_content_type_get_icon (const gchar *type);
+

Gets the icon for a content type.

+
+

Parameters

+
+++++ + + + + + +

type

a content type string

 
+
+
+

Returns

+

GIcon corresponding to the content type. Free the returned +object with g_object_unref().

+

[transfer full]

+
+
+
+
+

g_content_type_get_symbolic_icon ()

+
GIcon *
+g_content_type_get_symbolic_icon (const gchar *type);
+

Gets the symbolic icon for a content type.

+
+

Parameters

+
+++++ + + + + + +

type

a content type string

 
+
+
+

Returns

+

symbolic GIcon corresponding to the content type. +Free the returned object with g_object_unref().

+

[transfer full]

+
+

Since: 2.34

+
+
+
+

g_content_type_get_generic_icon_name ()

+
gchar *
+g_content_type_get_generic_icon_name (const gchar *type);
+

Gets the generic icon name for a content type.

+

See the +shared-mime-info +specification for more on the generic icon name.

+
+

Parameters

+
+++++ + + + + + +

type

a content type string

 
+
+
+

Returns

+

the registered generic icon name for the given type +, +or NULL if unknown. Free with g_free().

+

[allow-none]

+
+

Since: 2.34

+
+
+
+

g_content_type_can_be_executable ()

+
gboolean
+g_content_type_can_be_executable (const gchar *type);
+

Checks if a content type can be executable. Note that for instance +things like text files can be executables (i.e. scripts and batch files).

+
+

Parameters

+
+++++ + + + + + +

type

a content type string

 
+
+
+

Returns

+

TRUE if the file type corresponds to a type that +can be executable, FALSE otherwise.

+
+
+
+
+

g_content_type_from_mime_type ()

+
gchar *
+g_content_type_from_mime_type (const gchar *mime_type);
+

Tries to find a content type based on the mime type name.

+
+

Parameters

+
+++++ + + + + + +

mime_type

a mime type string

 
+
+
+

Returns

+

Newly allocated string with content type or +NULL. Free with g_free().

+

[nullable]

+
+

Since: 2.18

+
+
+
+

g_content_type_guess ()

+
gchar *
+g_content_type_guess (const gchar *filename,
+                      const guchar *data,
+                      gsize data_size,
+                      gboolean *result_uncertain);
+

Guesses the content type based on example data. If the function is +uncertain, result_uncertain + will be set to TRUE. Either filename + +or data + may be NULL, in which case the guess will be based solely +on the other argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

filename

a string, or NULL.

[allow-none]

data

a stream of data, or NULL.

[allow-none][array length=data_size]

data_size

the size of data +

 

result_uncertain

return location for the certainty +of the result, or NULL.

[allow-none][out]
+
+
+

Returns

+

a string indicating a guessed content type for the +given data. Free with g_free()

+
+
+
+
+

g_content_type_guess_for_tree ()

+
gchar **
+g_content_type_guess_for_tree (GFile *root);
+

Tries to guess the type of the tree with root root +, by +looking at the files it contains. The result is an array +of content types, with the best guess coming first.

+

The types returned all have the form x-content/foo, e.g. +x-content/audio-cdda (for audio CDs) or x-content/image-dcf +(for a camera memory card). See the +shared-mime-info +specification for more on x-content types.

+

This function is useful in the implementation of +g_mount_guess_content_type().

+
+

Parameters

+
+++++ + + + + + +

root

the root of the tree to guess a type for

 
+
+
+

Returns

+

an NULL-terminated +array of zero or more content types. Free with g_strfreev().

+

[transfer full][array zero-terminated=1]

+
+

Since: 2.18

+
+
+
+

g_content_types_get_registered ()

+
GList *
+g_content_types_get_registered (void);
+

Gets a list of strings containing all the registered content types +known to the system. The list and its data should be freed using +g_list_free_full (list, g_free).

+
+

Returns

+

list of the registered +content types.

+

[element-type utf8][transfer full]

+
+
+
+
+

Types and Values

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-GConverterInputstream.html b/docs/reference/gio/html/gio-GConverterInputstream.html new file mode 100644 index 0000000..57486ae --- /dev/null +++ b/docs/reference/gio/html/gio-GConverterInputstream.html @@ -0,0 +1,212 @@ + + + + +GConverterInputstream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GConverterInputstream

+

GConverterInputstream — Converter Input Stream

+
+
+

Functions

+
++++ + + + + + + + + + + +
+GInputStream * + +g_converter_input_stream_new () +
+GConverter * + +g_converter_input_stream_get_converter () +
+
+
+

Properties

+
+++++ + + + + + +
+GConverter *converterRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GConverterInputStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GInputStream
+        ╰── GFilterInputStream
+            ╰── GConverterInputStream
+
+
+
+

Implemented Interfaces

+

+GConverterInputStream implements + GPollableInputStream.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Converter input stream implements GInputStream and allows +conversion of data of various types during reading.

+

As of GLib 2.34, GConverterInputStream implements +GPollableInputStream.

+
+
+

Functions

+
+

g_converter_input_stream_new ()

+
GInputStream *
+g_converter_input_stream_new (GInputStream *base_stream,
+                              GConverter *converter);
+

Creates a new converter input stream for the base_stream +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

base_stream

a GInputStream

 

converter

a GConverter

 
+
+
+

Returns

+

a new GInputStream.

+
+
+
+
+

g_converter_input_stream_get_converter ()

+
GConverter *
+g_converter_input_stream_get_converter
+                               (GConverterInputStream *converter_stream);
+

Gets the GConverter that is used by converter_stream +.

+
+

Parameters

+
+++++ + + + + + +

converter_stream

a GConverterInputStream

 
+
+
+

Returns

+

the converter of the converter input stream.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

Types and Values

+
+

GConverterInputStream

+
typedef struct _GConverterInputStream GConverterInputStream;
+

An implementation of GFilterInputStream that allows data +conversion.

+
+
+
+

Property Details

+
+

The “converter” property

+
  “converter”                GConverter *
+

The converter object.

+

Flags: Read / Write / Construct Only

+
+
+
+

See Also

+

GInputStream, GConverter

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-GConverterOutputstream.html b/docs/reference/gio/html/gio-GConverterOutputstream.html new file mode 100644 index 0000000..9e43fda --- /dev/null +++ b/docs/reference/gio/html/gio-GConverterOutputstream.html @@ -0,0 +1,212 @@ + + + + +GConverterOutputstream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GConverterOutputstream

+

GConverterOutputstream — Converter Output Stream

+
+
+

Functions

+
++++ + + + + + + + + + + +
+GOutputStream * + +g_converter_output_stream_new () +
+GConverter * + +g_converter_output_stream_get_converter () +
+
+
+

Properties

+
+++++ + + + + + +
+GConverter *converterRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + +
 GConverterOutputStream
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GOutputStream
+        ╰── GFilterOutputStream
+            ╰── GConverterOutputStream
+
+
+
+

Implemented Interfaces

+

+GConverterOutputStream implements + GPollableOutputStream.

+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Converter output stream implements GOutputStream and allows +conversion of data of various types during reading.

+

As of GLib 2.34, GConverterOutputStream implements +GPollableOutputStream.

+
+
+

Functions

+
+

g_converter_output_stream_new ()

+
GOutputStream *
+g_converter_output_stream_new (GOutputStream *base_stream,
+                               GConverter *converter);
+

Creates a new converter output stream for the base_stream +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

base_stream

a GOutputStream

 

converter

a GConverter

 
+
+
+

Returns

+

a new GOutputStream.

+
+
+
+
+

g_converter_output_stream_get_converter ()

+
GConverter *
+g_converter_output_stream_get_converter
+                               (GConverterOutputStream *converter_stream);
+

Gets the GConverter that is used by converter_stream +.

+
+

Parameters

+
+++++ + + + + + +

converter_stream

a GConverterOutputStream

 
+
+
+

Returns

+

the converter of the converter output stream.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

Types and Values

+
+

GConverterOutputStream

+
typedef struct _GConverterOutputStream GConverterOutputStream;
+

An implementation of GFilterOutputStream that allows data +conversion.

+
+
+
+

Property Details

+
+

The “converter” property

+
  “converter”                GConverter *
+

The converter object.

+

Flags: Read / Write / Construct Only

+
+
+
+

See Also

+

GOutputStream, GConverter

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-GDBusError.html b/docs/reference/gio/html/gio-GDBusError.html new file mode 100644 index 0000000..830ceb7 --- /dev/null +++ b/docs/reference/gio/html/gio-GDBusError.html @@ -0,0 +1,1098 @@ + + + + +GDBusError: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDBusError

+

GDBusError — Mapping D-Bus errors to and from GError

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +g_dbus_error_is_remote_error () +
+gchar * + +g_dbus_error_get_remote_error () +
+gboolean + +g_dbus_error_strip_remote_error () +
+void + +g_dbus_error_register_error_domain () +
+gboolean + +g_dbus_error_register_error () +
+gboolean + +g_dbus_error_unregister_error () +
+GError * + +g_dbus_error_new_for_dbus_error () +
+void + +g_dbus_error_set_dbus_error () +
+void + +g_dbus_error_set_dbus_error_valist () +
+gchar * + +g_dbus_error_encode_gerror () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
enumGDBusError
#defineG_DBUS_ERROR
 GDBusErrorEntry
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

All facilities that return errors from remote methods (such as +g_dbus_connection_call_sync()) use GError to represent both D-Bus +errors (e.g. errors returned from the other peer) and locally +in-process generated errors.

+

To check if a returned GError is an error from a remote peer, use +g_dbus_error_is_remote_error(). To get the actual D-Bus error name, +use g_dbus_error_get_remote_error(). Before presenting an error, +always use g_dbus_error_strip_remote_error().

+

In addition, facilities used to return errors to a remote peer also +use GError. See g_dbus_method_invocation_return_error() for +discussion about how the D-Bus error name is set.

+

Applications can associate a GError error domain with a set of D-Bus errors in order to +automatically map from D-Bus errors to GError and back. This +is typically done in the function returning the GQuark for the +error domain:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
// foo-bar-error.h:
+
+#define FOO_BAR_ERROR (foo_bar_error_quark ())
+GQuark foo_bar_error_quark (void);
+
+typedef enum
+{
+  FOO_BAR_ERROR_FAILED,
+  FOO_BAR_ERROR_ANOTHER_ERROR,
+  FOO_BAR_ERROR_SOME_THIRD_ERROR,
+  FOO_BAR_N_ERRORS / *< skip >* /
+} FooBarError;
+
+// foo-bar-error.c:
+
+static const GDBusErrorEntry foo_bar_error_entries[] =
+{
+  {FOO_BAR_ERROR_FAILED,           "org.project.Foo.Bar.Error.Failed"},
+  {FOO_BAR_ERROR_ANOTHER_ERROR,    "org.project.Foo.Bar.Error.AnotherError"},
+  {FOO_BAR_ERROR_SOME_THIRD_ERROR, "org.project.Foo.Bar.Error.SomeThirdError"},
+};
+
+// Ensure that every error code has an associated D-Bus error name
+G_STATIC_ASSERT (G_N_ELEMENTS (foo_bar_error_entries) == FOO_BAR_N_ERRORS);
+
+GQuark
+foo_bar_error_quark (void)
+{
+  static volatile gsize quark_volatile = 0;
+  g_dbus_error_register_error_domain ("foo-bar-error-quark",
+                                      &quark_volatile,
+                                      foo_bar_error_entries,
+                                      G_N_ELEMENTS (foo_bar_error_entries));
+  return (GQuark) quark_volatile;
+}
+
+ +

+With this setup, a D-Bus peer can transparently pass e.g. FOO_BAR_ERROR_ANOTHER_ERROR and +other peers will see the D-Bus error name org.project.Foo.Bar.Error.AnotherError.

+

If the other peer is using GDBus, and has registered the association with +g_dbus_error_register_error_domain() in advance (e.g. by invoking the FOO_BAR_ERROR quark +generation itself in the previous example) the peer will see also FOO_BAR_ERROR_ANOTHER_ERROR instead +of G_IO_ERROR_DBUS_ERROR. Note that GDBus clients can still recover +org.project.Foo.Bar.Error.AnotherError using g_dbus_error_get_remote_error().

+

Note that errors in the G_DBUS_ERROR 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.

+
+
+

Functions

+
+

g_dbus_error_is_remote_error ()

+
gboolean
+g_dbus_error_is_remote_error (const GError *error);
+

Checks if error + represents an error received via D-Bus from a remote peer. If so, +use g_dbus_error_get_remote_error() to get the name of the error.

+
+

Parameters

+
+++++ + + + + + +

error

A GError.

 
+
+
+

Returns

+

TRUE if error +represents an error from a remote peer, +FALSE otherwise.

+
+

Since: 2.26

+
+
+
+

g_dbus_error_get_remote_error ()

+
gchar *
+g_dbus_error_get_remote_error (const GError *error);
+

Gets the D-Bus error name used for error +, if any.

+

This function is guaranteed to return a D-Bus error name for all +GErrors returned from functions handling remote method calls +(e.g. g_dbus_connection_call_finish()) unless +g_dbus_error_strip_remote_error() has been used on error +.

+
+

Parameters

+
+++++ + + + + + +

error

a GError

 
+
+
+

Returns

+

an allocated string or NULL if the D-Bus error name +could not be found. Free with g_free().

+
+

Since: 2.26

+
+
+
+

g_dbus_error_strip_remote_error ()

+
gboolean
+g_dbus_error_strip_remote_error (GError *error);
+

Looks for extra information in the error message used to recover +the D-Bus error name and strips it if found. If stripped, the +message field in error + will correspond exactly to what was +received on the wire.

+

This is typically used when presenting errors to the end user.

+
+

Parameters

+
+++++ + + + + + +

error

A GError.

 
+
+
+

Returns

+

TRUE if information was stripped, FALSE otherwise.

+
+

Since: 2.26

+
+
+
+

g_dbus_error_register_error_domain ()

+
void
+g_dbus_error_register_error_domain (const gchar *error_domain_quark_name,
+                                    volatile gsize *quark_volatile,
+                                    const GDBusErrorEntry *entries,
+                                    guint num_entries);
+

Helper function for associating a GError error domain with D-Bus error names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

error_domain_quark_name

The error domain name.

 

quark_volatile

A pointer where to store the GQuark.

 

entries

A pointer to num_entries +GDBusErrorEntry struct items.

 

num_entries

Number of items to register.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_error_register_error ()

+
gboolean
+g_dbus_error_register_error (GQuark error_domain,
+                             gint error_code,
+                             const gchar *dbus_error_name);
+

Creates an association to map between dbus_error_name + and +GErrors specified by error_domain + and error_code +.

+

This is typically done in the routine that returns the GQuark for +an error domain.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

error_domain

A GQuark for a error domain.

 

error_code

An error code.

 

dbus_error_name

A D-Bus error name.

 
+
+
+

Returns

+

TRUE if the association was created, FALSE if it already +exists.

+
+

Since: 2.26

+
+
+
+

g_dbus_error_unregister_error ()

+
gboolean
+g_dbus_error_unregister_error (GQuark error_domain,
+                               gint error_code,
+                               const gchar *dbus_error_name);
+

Destroys an association previously set up with g_dbus_error_register_error().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

error_domain

A GQuark for a error domain.

 

error_code

An error code.

 

dbus_error_name

A D-Bus error name.

 
+
+
+

Returns

+

TRUE if the association was destroyed, FALSE if it wasn't found.

+
+

Since: 2.26

+
+
+
+

g_dbus_error_new_for_dbus_error ()

+
GError *
+g_dbus_error_new_for_dbus_error (const gchar *dbus_error_name,
+                                 const gchar *dbus_error_message);
+

Creates a GError based on the contents of dbus_error_name + and +dbus_error_message +.

+

Errors registered with g_dbus_error_register_error() will be looked +up using dbus_error_name + and if a match is found, the error domain +and code is used. Applications can use g_dbus_error_get_remote_error() +to recover dbus_error_name +.

+

If a match against a registered error is not found and the D-Bus +error name is in a form as returned by g_dbus_error_encode_gerror() +the error domain and code encoded in the name is used to +create the GError. Also, dbus_error_name + is added to the error message +such that it can be recovered with g_dbus_error_get_remote_error().

+

Otherwise, a GError with the error code G_IO_ERROR_DBUS_ERROR +in the G_IO_ERROR error domain is returned. Also, dbus_error_name + is +added to the error message such that it can be recovered with +g_dbus_error_get_remote_error().

+

In all three cases, dbus_error_name + can always be recovered from the +returned GError using the g_dbus_error_get_remote_error() function +(unless g_dbus_error_strip_remote_error() hasn't been used on the returned error).

+

This function is typically only used in object mappings to prepare +GError instances for applications. Regular applications should not use +it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

dbus_error_name

D-Bus error name.

 

dbus_error_message

D-Bus error message.

 
+
+
+

Returns

+

An allocated GError. Free with g_error_free().

+
+

Since: 2.26

+
+
+
+

g_dbus_error_set_dbus_error ()

+
void
+g_dbus_error_set_dbus_error (GError **error,
+                             const gchar *dbus_error_name,
+                             const gchar *dbus_error_message,
+                             const gchar *format,
+                             ...);
+

Does nothing if error + is NULL. Otherwise sets *error + to +a new GError created with g_dbus_error_new_for_dbus_error() +with dbus_error_message + prepend with format + (unless NULL).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

error

A pointer to a GError or NULL.

 

dbus_error_name

D-Bus error name.

 

dbus_error_message

D-Bus error message.

 

format

printf()-style format to prepend to dbus_error_message +or NULL.

[allow-none]

...

Arguments for format +.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_error_set_dbus_error_valist ()

+
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);
+

Like g_dbus_error_set_dbus_error() but intended for language bindings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

error

A pointer to a GError or NULL.

 

dbus_error_name

D-Bus error name.

 

dbus_error_message

D-Bus error message.

 

format

printf()-style format to prepend to dbus_error_message +or NULL.

[allow-none]

var_args

Arguments for format +.

 
+
+

Since: 2.26

+
+
+
+

g_dbus_error_encode_gerror ()

+
gchar *
+g_dbus_error_encode_gerror (const GError *error);
+

Creates a D-Bus error name to use for error +. If error + matches +a registered error (cf. g_dbus_error_register_error()), the corresponding +D-Bus error name will be returned.

+

Otherwise the a name of the form +org.gtk.GDBus.UnmappedGError.Quark._ESCAPED_QUARK_NAME.Code_ERROR_CODE +will be used. This allows other GDBus applications to map the error +on the wire back to a GError using g_dbus_error_new_for_dbus_error().

+

This function is typically only used in object mappings to put a +GError on the wire. Regular applications should not use it.

+
+

Parameters

+
+++++ + + + + + +

error

A GError.

 
+
+
+

Returns

+

A D-Bus error name (never NULL). Free with g_free().

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

enum GDBusError

+

Error codes for the G_DBUS_ERROR error domain.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 

G_DBUS_ERROR_UNKNOWN_OBJECT

+

Object you invoked a method on isn't known. Since 2.42

+
 

G_DBUS_ERROR_UNKNOWN_INTERFACE

+

Interface you invoked a method on isn't known by the object. Since 2.42

+
 

G_DBUS_ERROR_UNKNOWN_PROPERTY

+

Property you tried to access isn't known by the object. Since 2.42

+
 

G_DBUS_ERROR_PROPERTY_READ_ONLY

+

Property you tried to set is read-only. Since 2.42

+
 
+
+

Since: 2.26

+
+
+
+

G_DBUS_ERROR

+
#define G_DBUS_ERROR g_dbus_error_quark()
+
+

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

+
+
+
+

GDBusErrorEntry

+
typedef struct {
+  gint         error_code;
+  const gchar *dbus_error_name;
+} GDBusErrorEntry;
+
+

Struct used in g_dbus_error_register_error_domain().

+
+

Members

+
+++++ + + + + + + + + + + + + +

gint error_code;

An error code.

 

const gchar *dbus_error_name;

The D-Bus error name to associate with error_code +.

 
+
+

Since: 2.26

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-GFileAttribute.html b/docs/reference/gio/html/gio-GFileAttribute.html new file mode 100644 index 0000000..943fc14 --- /dev/null +++ b/docs/reference/gio/html/gio-GFileAttribute.html @@ -0,0 +1,652 @@ + + + + +GFileAttribute: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GFileAttribute

+

GFileAttribute — Key-Value Paired File Attributes

+
+
+

Functions

+ +
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
enumGFileAttributeType
enumGFileAttributeInfoFlags
enumGFileAttributeStatus
 GFileAttributeInfo
 GFileAttributeInfoList
+
+
+

Object Hierarchy

+
    GBoxed
+    ╰── GFileAttributeInfoList
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

File attributes in GIO consist of a list of key-value pairs.

+

Keys are strings that contain a key namespace and a key name, separated +by a colon, e.g. "namespace::keyname". Namespaces are included to sort +key-value pairs by namespaces for relevance. Keys can be retrived +using wildcards, e.g. "standard::*" will return all of the keys in the +"standard" namespace.

+

The list of possible attributes for a filesystem (pointed to by a GFile) is +available as a GFileAttributeInfoList. This list is queryable by key names +as indicated earlier.

+

Information is stored within the list in GFileAttributeInfo structures. +The info structure can store different types, listed in the enum +GFileAttributeType. Upon creation of a GFileAttributeInfo, the type will +be set to G_FILE_ATTRIBUTE_TYPE_INVALID.

+

Classes that implement GFileIface will create a GFileAttributeInfoList and +install default keys and values for their given file system, architecture, +and other possible implementation details (e.g., on a UNIX system, a file +attribute key will be registered for the user id for a given file).

+
+

Default Namespaces

+
    +
  • "standard": The "Standard" namespace. General file information that +any application may need should be put in this namespace. Examples +include the file's name, type, and size.

  • +
  • "etag: The Entity Tag namespace. Currently, the only key +in this namespace is "value", which contains the value of the current +entity tag.

  • +
  • "id": The "Identification" namespace. This namespace is used by file +managers and applications that list directories to check for loops and +to uniquely identify files.

  • +
  • "access": The "Access" namespace. Used to check if a user has the +proper privileges to access files and perform file operations. Keys in +this namespace are made to be generic and easily understood, e.g. the +"can_read" key is TRUE if the current user has permission to read the +file. UNIX permissions and NTFS ACLs in Windows should be mapped to +these values.

  • +
  • "mountable": The "Mountable" namespace. Includes simple boolean keys +for checking if a file or path supports mount operations, e.g. mount, +unmount, eject. These are used for files of type G_FILE_TYPE_MOUNTABLE.

  • +
  • "time": The "Time" namespace. Includes file access, changed, created +times.

  • +
  • "unix": The "Unix" namespace. Includes UNIX-specific information and +may not be available for all files. Examples include the UNIX "UID", +"GID", etc.

  • +
  • "dos": The "DOS" namespace. Includes DOS-specific information and may +not be available for all files. Examples include "is_system" for checking +if a file is marked as a system file, and "is_archive" for checking if a +file is marked as an archive file.

  • +
  • "owner": The "Owner" namespace. Includes information about who owns a +file. May not be available for all file systems. Examples include "user" +for getting the user name of the file owner. This information is often +mapped from some backend specific data such as a UNIX UID.

  • +
  • "thumbnail": The "Thumbnail" namespace. Includes information about file +thumbnails and their location within the file system. Examples of keys in +this namespace include "path" to get the location of a thumbnail, "failed" +to check if thumbnailing of the file failed, and "is-valid" to check if +the thumbnail is outdated.

  • +
  • "filesystem": The "Filesystem" namespace. Gets information about the +file system where a file is located, such as its type, how much space is +left available, and the overall size of the file system.

  • +
  • "gvfs": The "GVFS" namespace. Keys in this namespace contain information +about the current GVFS backend in use.

  • +
  • "xattr": The "xattr" namespace. Gets information about extended +user attributes. See attr(5). The "user." prefix of the extended user +attribute name is stripped away when constructing keys in this namespace, +e.g. "xattr::mime_type" for the extended attribute with the name +"user.mime_type". Note that this information is only available if +GLib has been built with extended attribute support.

  • +
  • "xattr-sys": The "xattr-sys" namespace. Gets information about +extended attributes which are not user-specific. See attr(5). Note +that this information is only available if GLib has been built with +extended attribute support.

  • +
  • "selinux": The "SELinux" namespace. Includes information about the +SELinux context of files. Note that this information is only available +if GLib has been built with SELinux support.

  • +
+

Please note that these are not all of the possible namespaces. +More namespaces can be added from GIO modules or by individual applications. +For more information about writing GIO modules, see GIOModule.

+

<!-- TODO: Implementation note about using extended attributes on supported +file systems -->

+
+
+

Default Keys

+

For a list of the built-in keys and their types, see the +GFileInfo documentation.

+

Note that there are no predefined keys in the "xattr" and "xattr-sys" +namespaces. Keys for the "xattr" namespace are constructed by stripping +away the "user." prefix from the extended user attribute, and prepending +"xattr::". Keys for the "xattr-sys" namespace are constructed by +concatenating "xattr-sys::" with the extended attribute name. All extended +attribute values are returned as hex-encoded strings in which bytes outside +the ASCII range are encoded as escape sequences of the form \xnn +where nn is a 2-digit hexadecimal number.

+
+
+
+

Functions

+
+

g_file_attribute_info_list_new ()

+
GFileAttributeInfoList *
+g_file_attribute_info_list_new (void);
+

Creates a new file attribute info list.

+
+

Returns

+

a GFileAttributeInfoList.

+
+
+
+
+

g_file_attribute_info_list_ref ()

+
GFileAttributeInfoList *
+g_file_attribute_info_list_ref (GFileAttributeInfoList *list);
+

References a file attribute info list.

+
+

Parameters

+
+++++ + + + + + +

list

a GFileAttributeInfoList to reference.

 
+
+
+

Returns

+

GFileAttributeInfoList or NULL on error.

+
+
+
+
+

g_file_attribute_info_list_unref ()

+
void
+g_file_attribute_info_list_unref (GFileAttributeInfoList *list);
+

Removes a reference from the given list +. If the reference count +falls to zero, the list + is deleted.

+
+

Parameters

+
+++++ + + + + + +

list

The GFileAttributeInfoList to unreference.

 
+
+
+
+
+

g_file_attribute_info_list_dup ()

+
GFileAttributeInfoList *
+g_file_attribute_info_list_dup (GFileAttributeInfoList *list);
+

Makes a duplicate of a file attribute info list.

+
+

Parameters

+
+++++ + + + + + +

list

a GFileAttributeInfoList to duplicate.

 
+
+
+

Returns

+

a copy of the given list +.

+
+
+
+
+

g_file_attribute_info_list_lookup ()

+
const GFileAttributeInfo *
+g_file_attribute_info_list_lookup (GFileAttributeInfoList *list,
+                                   const char *name);
+

Gets the file attribute with the name name + from list +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GFileAttributeInfoList.

 

name

the name of the attribute to lookup.

 
+
+
+

Returns

+

a GFileAttributeInfo for the name +, or NULL if an +attribute isn't found.

+
+
+
+
+

g_file_attribute_info_list_add ()

+
void
+g_file_attribute_info_list_add (GFileAttributeInfoList *list,
+                                const char *name,
+                                GFileAttributeType type,
+                                GFileAttributeInfoFlags flags);
+

Adds a new attribute with name + to the list +, setting +its type + and flags +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

list

a GFileAttributeInfoList.

 

name

the name of the attribute to add.

 

type

the GFileAttributeType for the attribute.

 

flags

GFileAttributeInfoFlags for the attribute.

 
+
+
+
+
+

Types and Values

+
+

enum GFileAttributeType

+

The data types for file attributes.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

+
 
+
+
+
+
+

enum GFileAttributeInfoFlags

+

Flags specifying the behaviour of an attribute.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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.

+
 
+
+
+
+
+

enum GFileAttributeStatus

+

Used by g_file_set_attributes_from_info() when setting file attributes.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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.

+
 
+
+
+
+
+

GFileAttributeInfo

+
typedef struct {
+  char                    *name;
+  GFileAttributeType       type;
+  GFileAttributeInfoFlags  flags;
+} GFileAttributeInfo;
+
+

Information about a specific attribute.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

char *name;

the name of the attribute.

 

GFileAttributeType type;

the GFileAttributeType type of the attribute.

 

GFileAttributeInfoFlags flags;

a set of GFileAttributeInfoFlags.

 
+
+
+
+
+

GFileAttributeInfoList

+
typedef struct {
+  GFileAttributeInfo *infos;
+  int                 n_infos;
+} GFileAttributeInfoList;
+
+

Acts as a lightweight registry for possible valid file attributes. +The registry stores Key-Value pair formats as GFileAttributeInfos.

+
+

Members

+
+++++ + + + + + + + + + + + + +

GFileAttributeInfo *infos;

an array of GFileAttributeInfos.

 

int n_infos;

the number of values in the array.

 
+
+
+
+
+

See Also

+

GFile, GFileInfo

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-GIOError.html b/docs/reference/gio/html/gio-GIOError.html new file mode 100644 index 0000000..530a5ff --- /dev/null +++ b/docs/reference/gio/html/gio-GIOError.html @@ -0,0 +1,561 @@ + + + + +GIOError: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GIOError

+

GIOError — Error helper functions

+
+
+

Functions

+
++++ + + + + + + + + + + +
+GIOErrorEnum + +g_io_error_from_errno () +
+GIOErrorEnum + +g_io_error_from_win32_error () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
#defineG_IO_ERROR
enumGIOErrorEnum
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Contains helper functions for reporting errors to the user.

+
+
+

Functions

+
+

g_io_error_from_errno ()

+
GIOErrorEnum
+g_io_error_from_errno (gint err_no);
+

Converts errno.h error codes into GIO error codes. The fallback +value G_IO_ERROR_FAILED is returned for error codes not currently +handled (but note that future GLib releases may return a more +specific value instead).

+
+

Parameters

+
+++++ + + + + + +

err_no

Error number as defined in errno.h.

 
+
+
+

Returns

+

GIOErrorEnum value for the given errno.h error number.

+
+
+
+
+

g_io_error_from_win32_error ()

+
GIOErrorEnum
+g_io_error_from_win32_error (gint error_code);
+

Converts some common error codes (as returned from GetLastError() +or WSAGetLastError()) into GIO error codes. The fallback value +G_IO_ERROR_FAILED is returned for error codes not currently +handled (but note that future GLib releases may return a more +specific value instead).

+

You can use g_win32_error_message() to get a localized string +corresponding to error_code +. (But note that unlike g_strerror(), +g_win32_error_message() returns a string that must be freed.)

+
+

Parameters

+
+++++ + + + + + +

error_code

Windows error number.

 
+
+
+

Returns

+

GIOErrorEnum value for the given error number.

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

G_IO_ERROR

+
#define G_IO_ERROR g_io_error_quark()
+
+

Error domain for GIO. Errors in this domain will be from the GIOErrorEnum enumeration. +See GError for more information on error domains.

+
+
+
+

enum GIOErrorEnum

+

Error codes returned by GIO functions.

+

Note that this domain may be extended in future GLib releases. In +general, new error codes either only apply to new APIs, or else +replace G_IO_ERROR_FAILED in cases that were not explicitly +distinguished before. You should therefore avoid writing code like

+
+ + + + + + + +
1
+2
+3
+4
+5
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_FAILED))
+  {
+    // Assume that this is EPRINTERONFIRE
+    ...
+  }
+
+ +

+but should instead treat all unrecognized error codes the same as +G_IO_ERROR_FAILED.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_IO_ERROR_FAILED

+

Generic error condition for when an operation fails + and no more specific GIOErrorEnum value is defined.

+
 

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 (or one of its parameters) not supported

+
 

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

+
 

G_IO_ERROR_CONNECTION_CLOSED

+

Connection closed by peer. Note that this + is the same code as G_IO_ERROR_BROKEN_PIPE; before 2.44 some + "connection closed" errors returned G_IO_ERROR_BROKEN_PIPE, but others + returned G_IO_ERROR_FAILED. Now they should all return the same + value, which has this more logical name. Since 2.44.

+
 

G_IO_ERROR_NOT_CONNECTED

+

Transport endpoint is not connected. Since 2.44

+
 

G_IO_ERROR_MESSAGE_TOO_LARGE

+

Message too large. Since 2.48.

+
 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-GIOScheduler.html b/docs/reference/gio/html/gio-GIOScheduler.html new file mode 100644 index 0000000..f74d2fc --- /dev/null +++ b/docs/reference/gio/html/gio-GIOScheduler.html @@ -0,0 +1,362 @@ + + + + +GIOScheduler: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GIOScheduler

+

GIOScheduler — I/O Scheduler

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +(*GIOSchedulerJobFunc) () +
+void + +g_io_scheduler_push_job () +
+void + +g_io_scheduler_cancel_all_jobs () +
+gboolean + +g_io_scheduler_job_send_to_mainloop () +
+void + +g_io_scheduler_job_send_to_mainloop_async () +
+
+
+

Types and Values

+
++++ + + + + +
 GIOSchedulerJob
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

As of GLib 2.36, GIOScheduler is deprecated in favor of +GThreadPool and GTask.

+

Schedules asynchronous I/O operations. GIOScheduler integrates +into the main event loop (GMainLoop) and uses threads.

+
+
+

Functions

+
+

GIOSchedulerJobFunc ()

+
gboolean
+(*GIOSchedulerJobFunc) (GIOSchedulerJob *job,
+                        GCancellable *cancellable,
+                        gpointer user_data);
+

I/O Job function.

+

Long-running jobs should periodically check the cancellable + +to see if they have been cancelled.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

job

a GIOSchedulerJob.

 

cancellable

optional GCancellable object, NULL to ignore.

 

user_data

the data to pass to callback function

 
+
+
+

Returns

+

TRUE if this function should be called again to +complete the job, FALSE if the job is complete (or cancelled)

+
+
+
+
+

g_io_scheduler_push_job ()

+
void
+g_io_scheduler_push_job (GIOSchedulerJobFunc job_func,
+                         gpointer user_data,
+                         GDestroyNotify notify,
+                         gint io_priority,
+                         GCancellable *cancellable);
+
+

g_io_scheduler_push_job is deprecated and should not be used in newly-written code.

+

use GThreadPool or g_task_run_in_thread()

+
+

Schedules the I/O job to run in another thread.

+

notify + will be called on user_data + after job_func + has returned, +regardless whether the job was cancelled or has run to completion.

+

If cancellable + is not NULL, it can be used to cancel the I/O job +by calling g_cancellable_cancel() or by calling +g_io_scheduler_cancel_all_jobs().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

job_func

a GIOSchedulerJobFunc.

 

user_data

data to pass to job_func +

 

notify

a GDestroyNotify for user_data +, or NULL.

[allow-none]

io_priority

the I/O priority +of the request.

 

cancellable

optional GCancellable object, NULL to ignore.

 
+
+
+
+
+

g_io_scheduler_cancel_all_jobs ()

+
void
+g_io_scheduler_cancel_all_jobs (void);
+
+

g_io_scheduler_cancel_all_jobs is deprecated and should not be used in newly-written code.

+

You should never call this function, since you don't +know how other libraries in your program might be making use of +gioscheduler.

+
+

Cancels all cancellable I/O jobs.

+

A job is cancellable if a GCancellable was passed into +g_io_scheduler_push_job().

+
+
+
+

g_io_scheduler_job_send_to_mainloop ()

+
gboolean
+g_io_scheduler_job_send_to_mainloop (GIOSchedulerJob *job,
+                                     GSourceFunc func,
+                                     gpointer user_data,
+                                     GDestroyNotify notify);
+
+

g_io_scheduler_job_send_to_mainloop is deprecated and should not be used in newly-written code.

+

Use g_main_context_invoke().

+
+

Used from an I/O job to send a callback to be run in the thread +that the job was started from, waiting for the result (and thus +blocking the I/O job).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

job

a GIOSchedulerJob

 

func

a GSourceFunc callback that will be called in the original thread

 

user_data

data to pass to func +

 

notify

a GDestroyNotify for user_data +, or NULL.

[allow-none]
+
+
+

Returns

+

The return value of func +

+
+
+
+
+

g_io_scheduler_job_send_to_mainloop_async ()

+
void
+g_io_scheduler_job_send_to_mainloop_async
+                               (GIOSchedulerJob *job,
+                                GSourceFunc func,
+                                gpointer user_data,
+                                GDestroyNotify notify);
+
+

g_io_scheduler_job_send_to_mainloop_async is deprecated and should not be used in newly-written code.

+

Use g_main_context_invoke().

+
+

Used from an I/O job to send a callback to be run asynchronously in +the thread that the job was started from. The callback will be run +when the main loop is available, but at that time the I/O job might +have finished. The return value from the callback is ignored.

+

Note that if you are passing the user_data + from g_io_scheduler_push_job() +on to this function you have to ensure that it is not freed before +func + is called, either by passing NULL as notify + to +g_io_scheduler_push_job() or by using refcounting for user_data +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

job

a GIOSchedulerJob

 

func

a GSourceFunc callback that will be called in the original thread

 

user_data

data to pass to func +

 

notify

a GDestroyNotify for user_data +, or NULL.

[allow-none]
+
+
+
+
+

Types and Values

+
+

GIOSchedulerJob

+
typedef struct _GIOSchedulerJob GIOSchedulerJob;
+

Opaque class for defining and scheduling IO jobs.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-GMenuModel-exporter.html b/docs/reference/gio/html/gio-GMenuModel-exporter.html new file mode 100644 index 0000000..350bdaa --- /dev/null +++ b/docs/reference/gio/html/gio-GMenuModel-exporter.html @@ -0,0 +1,181 @@ + + + + +GMenuModel exporter: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GMenuModel exporter

+

GMenuModel exporter — Export GMenuModels on D-Bus

+
+
+

Functions

+
++++ + + + + + + + + + + +
+guint + +g_dbus_connection_export_menu_model () +
+void + +g_dbus_connection_unexport_menu_model () +
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

These functions support exporting a GMenuModel on D-Bus. +The D-Bus interface that is used is a private implementation +detail.

+

To access an exported GMenuModel remotely, use +g_dbus_menu_model_get() to obtain a GDBusMenuModel.

+
+
+

Functions

+
+

g_dbus_connection_export_menu_model ()

+
guint
+g_dbus_connection_export_menu_model (GDBusConnection *connection,
+                                     const gchar *object_path,
+                                     GMenuModel *menu,
+                                     GError **error);
+

Exports menu + on connection + at object_path +.

+

The implemented D-Bus API should be considered private. +It is subject to change in the future.

+

An object path can only have one menu model exported on it. If this +constraint is violated, the export will fail and 0 will be +returned (with error + set accordingly).

+

You can unexport the menu model using +g_dbus_connection_unexport_menu_model() with the return value of +this function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

object_path

a D-Bus object path

 

menu

a GMenuModel

 

error

return location for an error, or NULL

 
+
+
+

Returns

+

the ID of the export (never zero), or 0 in case of failure

+
+

Since: 2.32

+
+
+
+

g_dbus_connection_unexport_menu_model ()

+
void
+g_dbus_connection_unexport_menu_model (GDBusConnection *connection,
+                                       guint export_id);
+

Reverses the effect of a previous call to +g_dbus_connection_export_menu_model().

+

It is an error to call this function with an ID that wasn't returned +from g_dbus_connection_export_menu_model() or to call it with the +same ID more than once.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

connection

a GDBusConnection

 

export_id

the ID from g_dbus_connection_export_menu_model()

 
+
+

Since: 2.32

+
+
+
+

Types and Values

+
+
+

See Also

+

GMenuModel, GDBusMenuModel

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-GSettingsSchema-GSettingsSchemaSource.html b/docs/reference/gio/html/gio-GSettingsSchema-GSettingsSchemaSource.html new file mode 100644 index 0000000..7145d9b --- /dev/null +++ b/docs/reference/gio/html/gio-GSettingsSchema-GSettingsSchemaSource.html @@ -0,0 +1,1276 @@ + + + + +GSettingsSchema, GSettingsSchemaSource: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GSettingsSchema, GSettingsSchemaSource

+

GSettingsSchema, GSettingsSchemaSource — Introspecting and controlling the loading + of GSettings schemas

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GSettingsSchemaSource * + +g_settings_schema_source_get_default () +
+GSettingsSchemaSource * + +g_settings_schema_source_ref () +
+void + +g_settings_schema_source_unref () +
+GSettingsSchemaSource * + +g_settings_schema_source_new_from_directory () +
+void + +g_settings_schema_source_list_schemas () +
+GSettingsSchema * + +g_settings_schema_source_lookup () +
+GSettingsSchema * + +g_settings_schema_ref () +
+void + +g_settings_schema_unref () +
const gchar * + +g_settings_schema_get_id () +
const gchar * + +g_settings_schema_get_path () +
+gboolean + +g_settings_schema_has_key () +
+GSettingsSchemaKey * + +g_settings_schema_get_key () +
+GSettingsSchemaKey * + +g_settings_schema_key_ref () +
+void + +g_settings_schema_key_unref () +
+gchar ** + +g_settings_schema_list_children () +
+gchar ** + +g_settings_schema_list_keys () +
const GVariantType * + +g_settings_schema_key_get_value_type () +
+GVariant * + +g_settings_schema_key_get_default_value () +
+GVariant * + +g_settings_schema_key_get_range () +
+gboolean + +g_settings_schema_key_range_check () +
const gchar * + +g_settings_schema_key_get_name () +
const gchar * + +g_settings_schema_key_get_summary () +
const gchar * + +g_settings_schema_key_get_description () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
 GSettingsSchemaSource
 GSettingsSchema
 GSettingsSchemaKey
+
+
+

Object Hierarchy

+
    GBoxed
+    ├── GSettingsSchema
+    ├── GSettingsSchemaKey
+    ╰── GSettingsSchemaSource
+
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

The GSettingsSchemaSource and GSettingsSchema APIs provide a +mechanism for advanced control over the loading of schemas and a +mechanism for introspecting their content.

+

Plugin loading systems that wish to provide plugins a way to access +settings face the problem of how to make the schemas for these +settings visible to GSettings. Typically, a plugin will want to ship +the schema along with itself and it won't be installed into the +standard system directories for schemas.

+

GSettingsSchemaSource provides a mechanism for dealing with this by +allowing the creation of a new 'schema source' from which schemas can +be acquired. This schema source can then become part of the metadata +associated with the plugin and queried whenever the plugin requires +access to some settings.

+

Consider the following example:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
typedef struct
+{
+   ...
+   GSettingsSchemaSource *schema_source;
+   ...
+} Plugin;
+
+Plugin *
+initialise_plugin (const gchar *dir)
+{
+  Plugin *plugin;
+
+  ...
+
+  plugin->schema_source =
+    g_settings_new_schema_source_from_directory (dir,
+      g_settings_schema_source_get_default (), FALSE, NULL);
+
+  ...
+
+  return plugin;
+}
+
+...
+
+GSettings *
+plugin_get_settings (Plugin      *plugin,
+                     const gchar *schema_id)
+{
+  GSettingsSchema *schema;
+
+  if (schema_id == NULL)
+    schema_id = plugin->identifier;
+
+  schema = g_settings_schema_source_lookup (plugin->schema_source,
+                                            schema_id, FALSE);
+
+  if (schema == NULL)
+    {
+      ... disable the plugin or abort, etc ...
+    }
+
+  return g_settings_new_full (schema, NULL, NULL);
+}
+
+ +

+

The code above shows how hooks should be added to the code that +initialises (or enables) the plugin to create the schema source and +how an API can be added to the plugin system to provide a convenient +way for the plugin to access its settings, using the schemas that it +ships.

+

From the standpoint of the plugin, it would need to ensure that it +ships a gschemas.compiled file as part of itself, and then simply do +the following:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
{
+  GSettings *settings;
+  gint some_value;
+
+  settings = plugin_get_settings (self, NULL);
+  some_value = g_settings_get_int (settings, "some-value");
+  ...
+}
+
+ +

+

It's also possible that the plugin system expects the schema source +files (ie: .gschema.xml files) instead of a gschemas.compiled file. +In that case, the plugin loading system must compile the schemas for +itself before attempting to create the settings source.

+
+
+

Functions

+
+

g_settings_schema_source_get_default ()

+
GSettingsSchemaSource *
+g_settings_schema_source_get_default (void);
+

Gets the default system schema source.

+

This function is not required for normal uses of GSettings but it +may be useful to authors of plugin management systems or to those who +want to introspect the content of schemas.

+

If no schemas are installed, NULL will be returned.

+

The returned source may actually consist of multiple schema sources +from different directories, depending on which directories were given +in XDG_DATA_DIRS and GSETTINGS_SCHEMA_DIR. For this reason, all +lookups performed against the default source should probably be done +recursively.

+
+

Returns

+

the default schema source.

+

[transfer none]

+
+

Since: 2.32

+
+
+
+

g_settings_schema_source_ref ()

+
GSettingsSchemaSource *
+g_settings_schema_source_ref (GSettingsSchemaSource *source);
+

Increase the reference count of source +, returning a new reference.

+
+

Parameters

+
+++++ + + + + + +

source

a GSettingsSchemaSource

 
+
+
+

Returns

+

a new reference to source +

+
+

Since: 2.32

+
+
+
+

g_settings_schema_source_unref ()

+
void
+g_settings_schema_source_unref (GSettingsSchemaSource *source);
+

Decrease the reference count of source +, possibly freeing it.

+
+

Parameters

+
+++++ + + + + + +

source

a GSettingsSchemaSource

 
+
+

Since: 2.32

+
+
+
+

g_settings_schema_source_new_from_directory ()

+
GSettingsSchemaSource *
+g_settings_schema_source_new_from_directory
+                               (const gchar *directory,
+                                GSettingsSchemaSource *parent,
+                                gboolean trusted,
+                                GError **error);
+

Attempts to create a new schema source corresponding to the contents +of the given directory.

+

This function is not required for normal uses of GSettings but it +may be useful to authors of plugin management systems.

+

The directory should contain a file called gschemas.compiled as +produced by the glib-compile-schemas tool.

+

If trusted + is TRUE then gschemas.compiled is trusted not to be +corrupted. This assumption has a performance advantage, but can result +in crashes or inconsistent behaviour in the case of a corrupted file. +Generally, you should set trusted + to TRUE for files installed by the +system and to FALSE for files in the home directory.

+

If parent + is non-NULL then there are two effects.

+

First, if g_settings_schema_source_lookup() is called with the +recursive + flag set to TRUE and the schema can not be found in the +source, the lookup will recurse to the parent.

+

Second, any references to other schemas specified within this +source (ie: child or extends) references may be resolved +from the parent +.

+

For this second reason, except in very unusual situations, the +parent + should probably be given as the default schema source, as +returned by g_settings_schema_source_get_default().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

directory

the filename of a directory

 

parent

a GSettingsSchemaSource, or NULL.

[allow-none]

trusted

TRUE, if the directory is trusted

 

error

a pointer to a GError pointer set to NULL, or NULL

 
+
+

Since: 2.32

+
+
+
+

g_settings_schema_source_list_schemas ()

+
void
+g_settings_schema_source_list_schemas (GSettingsSchemaSource *source,
+                                       gboolean recursive,
+                                       gchar ***non_relocatable,
+                                       gchar ***relocatable);
+

Lists the schemas in a given source.

+

If recursive + is TRUE then include parent sources. If FALSE then +only include the schemas from one source (ie: one directory). You +probably want TRUE.

+

Non-relocatable schemas are those for which you can call +g_settings_new(). Relocatable schemas are those for which you must +use g_settings_new_with_path().

+

Do not call this function from normal programs. This is designed for +use by database editors, commandline tools, etc.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

source

a GSettingsSchemaSource

 

recursive

if we should recurse

 

non_relocatable

the +list of non-relocatable schemas.

[out][transfer full][array zero-terminated=1]

relocatable

the list +of relocatable schemas.

[out][transfer full][array zero-terminated=1]
+
+

Since: 2.40

+
+
+
+

g_settings_schema_source_lookup ()

+
GSettingsSchema *
+g_settings_schema_source_lookup (GSettingsSchemaSource *source,
+                                 const gchar *schema_id,
+                                 gboolean recursive);
+

Looks up a schema with the identifier schema_id + in source +.

+

This function is not required for normal uses of GSettings but it +may be useful to authors of plugin management systems or to those who +want to introspect the content of schemas.

+

If the schema isn't found directly in source + and recursive + is TRUE +then the parent sources will also be checked.

+

If the schema isn't found, NULL is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

source

a GSettingsSchemaSource

 

schema_id

a schema ID

 

recursive

TRUE if the lookup should be recursive

 
+
+
+

Returns

+

a new GSettingsSchema.

+

[nullable][transfer full]

+
+

Since: 2.32

+
+
+
+

g_settings_schema_ref ()

+
GSettingsSchema *
+g_settings_schema_ref (GSettingsSchema *schema);
+

Increase the reference count of schema +, returning a new reference.

+
+

Parameters

+
+++++ + + + + + +

schema

a GSettingsSchema

 
+
+
+

Returns

+

a new reference to schema +

+
+

Since: 2.32

+
+
+
+

g_settings_schema_unref ()

+
void
+g_settings_schema_unref (GSettingsSchema *schema);
+

Decrease the reference count of schema +, possibly freeing it.

+
+

Parameters

+
+++++ + + + + + +

schema

a GSettingsSchema

 
+
+

Since: 2.32

+
+
+
+

g_settings_schema_get_id ()

+
const gchar *
+g_settings_schema_get_id (GSettingsSchema *schema);
+

Get the ID of schema +.

+
+

Parameters

+
+++++ + + + + + +

schema

a GSettingsSchema

 
+
+
+

Returns

+

the ID.

+

[transfer none]

+
+
+
+
+

g_settings_schema_get_path ()

+
const gchar *
+g_settings_schema_get_path (GSettingsSchema *schema);
+

Gets the path associated with schema +, or NULL.

+

Schemas may be single-instance or relocatable. Single-instance +schemas correspond to exactly one set of keys in the backend +database: those located at the path returned by this function.

+

Relocatable schemas can be referenced by other schemas and can +threfore describe multiple sets of keys at different locations. For +relocatable schemas, this function will return NULL.

+
+

Parameters

+
+++++ + + + + + +

schema

a GSettingsSchema

 
+
+
+

Returns

+

the path of the schema, or NULL.

+

[transfer none]

+
+

Since: 2.32

+
+
+
+

g_settings_schema_has_key ()

+
gboolean
+g_settings_schema_has_key (GSettingsSchema *schema,
+                           const gchar *name);
+

Checks if schema + has a key named name +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

schema

a GSettingsSchema

 

name

the name of a key

 
+
+
+

Returns

+

TRUE if such a key exists

+
+

Since: 2.40

+
+
+
+

g_settings_schema_get_key ()

+
GSettingsSchemaKey *
+g_settings_schema_get_key (GSettingsSchema *schema,
+                           const gchar *name);
+

Gets the key named name + from schema +.

+

It is a programmer error to request a key that does not exist. See +g_settings_schema_list_keys().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

schema

a GSettingsSchema

 

name

the name of a key

 
+
+
+

Returns

+

the GSettingsSchemaKey for name +.

+

[transfer full]

+
+

Since: 2.40

+
+
+
+

g_settings_schema_key_ref ()

+
GSettingsSchemaKey *
+g_settings_schema_key_ref (GSettingsSchemaKey *key);
+

Increase the reference count of key +, returning a new reference.

+
+

Parameters

+
+++++ + + + + + +

key

a GSettingsSchemaKey

 
+
+
+

Returns

+

a new reference to key +

+
+

Since: 2.40

+
+
+
+

g_settings_schema_key_unref ()

+
void
+g_settings_schema_key_unref (GSettingsSchemaKey *key);
+

Decrease the reference count of key +, possibly freeing it.

+
+

Parameters

+
+++++ + + + + + +

key

a GSettingsSchemaKey

 
+
+

Since: 2.40

+
+
+
+

g_settings_schema_list_children ()

+
gchar **
+g_settings_schema_list_children (GSettingsSchema *schema);
+

Gets the list of children in schema +.

+

You should free the return value with g_strfreev() when you are done +with it.

+
+

Parameters

+
+++++ + + + + + +

schema

a GSettingsSchema

 
+
+
+

Returns

+

a list of the children on settings +.

+

[transfer full][element-type utf8]

+
+

Since: 2.44

+
+
+
+

g_settings_schema_list_keys ()

+
gchar **
+g_settings_schema_list_keys (GSettingsSchema *schema);
+

Introspects the list of keys on schema +.

+

You should probably not be calling this function from "normal" code +(since you should already know what keys are in your schema). This +function is intended for introspection reasons.

+
+

Parameters

+
+++++ + + + + + +

schema

a GSettingsSchema

 
+
+
+

Returns

+

a list of the keys on +schema +.

+

[transfer full][element-type utf8]

+
+

Since: 2.46

+
+
+
+

g_settings_schema_key_get_value_type ()

+
const GVariantType *
+g_settings_schema_key_get_value_type (GSettingsSchemaKey *key);
+

Gets the GVariantType of key +.

+
+

Parameters

+
+++++ + + + + + +

key

a GSettingsSchemaKey

 
+
+
+

Returns

+

the type of key +.

+

[transfer none]

+
+

Since: 2.40

+
+
+
+

g_settings_schema_key_get_default_value ()

+
GVariant *
+g_settings_schema_key_get_default_value
+                               (GSettingsSchemaKey *key);
+

Gets the default value for key +.

+

Note that this is the default value according to the schema. System +administrator defaults and lockdown are not visible via this API.

+
+

Parameters

+
+++++ + + + + + +

key

a GSettingsSchemaKey

 
+
+
+

Returns

+

the default value for the key.

+

[transfer full]

+
+

Since: 2.40

+
+
+
+

g_settings_schema_key_get_range ()

+
GVariant *
+g_settings_schema_key_get_range (GSettingsSchemaKey *key);
+

Queries the range of a key.

+

This function will return a GVariant that fully describes the range +of values that are valid for key +.

+

The type of GVariant returned is (sv). The string describes +the type of range restriction in effect. The type and meaning of +the value contained in the variant depends on the string.

+

If the string is 'type' then the variant contains an empty array. +The element type of that empty array is the expected type of value +and all values of that type are valid.

+

If the string is 'enum' then the variant contains an array +enumerating the possible values. Each item in the array is +a possible valid value and no other values are valid.

+

If the string is 'flags' then the variant contains an array. Each +item in the array is a value that may appear zero or one times in an +array to be used as the value for this key. For example, if the +variant contained the array ['x', 'y'] then the valid values for +the key would be [], ['x'], ['y'], ['x', 'y'] and +['y', 'x'].

+

Finally, if the string is 'range' then the variant contains a pair +of like-typed values -- the minimum and maximum permissible values +for this key.

+

This information should not be used by normal programs. It is +considered to be a hint for introspection purposes. Normal programs +should already know what is permitted by their own schema. The +format may change in any way in the future -- but particularly, new +forms may be added to the possibilities described above.

+

You should free the returned value with g_variant_unref() when it is +no longer needed.

+
+

Parameters

+
+++++ + + + + + +

key

a GSettingsSchemaKey

 
+
+
+

Returns

+

a GVariant describing the range.

+

[transfer full]

+
+

Since: 2.40

+
+
+
+

g_settings_schema_key_range_check ()

+
gboolean
+g_settings_schema_key_range_check (GSettingsSchemaKey *key,
+                                   GVariant *value);
+

Checks if the given value + is of the correct type and within the +permitted range for key +.

+

It is a programmer error if value + is not of the correct type -- you +must check for this first.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

key

a GSettingsSchemaKey

 

value

the value to check

 
+
+
+

Returns

+

TRUE if value +is valid for key +

+
+

Since: 2.40

+
+
+
+

g_settings_schema_key_get_name ()

+
const gchar *
+g_settings_schema_key_get_name (GSettingsSchemaKey *key);
+

Gets the name of key +.

+
+

Parameters

+
+++++ + + + + + +

key

a GSettingsSchemaKey

 
+
+
+

Returns

+

the name of key +.

+
+

Since: 2.44

+
+
+
+

g_settings_schema_key_get_summary ()

+
const gchar *
+g_settings_schema_key_get_summary (GSettingsSchemaKey *key);
+

Gets the summary for key +.

+

If no summary has been provided in the schema for key +, returns +NULL.

+

The summary is a short description of the purpose of the key; usually +one short sentence. Summaries can be translated and the value +returned from this function is is the current locale.

+

This function is slow. The summary and description information for +the schemas is not stored in the compiled schema database so this +function has to parse all of the source XML files in the schema +directory.

+
+

Parameters

+
+++++ + + + + + +

key

a GSettingsSchemaKey

 
+
+
+

Returns

+

the summary for key +, or NULL

+
+

Since: 2.34

+
+
+
+

g_settings_schema_key_get_description ()

+
const gchar *
+g_settings_schema_key_get_description (GSettingsSchemaKey *key);
+

Gets the description for key +.

+

If no description has been provided in the schema for key +, returns +NULL.

+

The description can be one sentence to several paragraphs in length. +Paragraphs are delimited with a double newline. Descriptions can be +translated and the value returned from this function is is the +current locale.

+

This function is slow. The summary and description information for +the schemas is not stored in the compiled schema database so this +function has to parse all of the source XML files in the schema +directory.

+
+

Parameters

+
+++++ + + + + + +

key

a GSettingsSchemaKey

 
+
+
+

Returns

+

the description for key +, or NULL

+
+

Since: 2.34

+
+
+
+

Types and Values

+
+

GSettingsSchemaSource

+
typedef struct _GSettingsSchemaSource GSettingsSchemaSource;
+

This is an opaque structure type. You may not access it directly.

+

Since: 2.32

+
+
+
+

GSettingsSchema

+
typedef struct _GSettingsSchema GSettingsSchema;
+

This is an opaque structure type. You may not access it directly.

+

Since: 2.32

+
+
+
+

GSettingsSchemaKey

+
typedef struct _GSettingsSchemaKey GSettingsSchemaKey;
+

GSettingsSchemaKey is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-GWin32InputStream.html b/docs/reference/gio/html/gio-GWin32InputStream.html new file mode 100644 index 0000000..442b7ad --- /dev/null +++ b/docs/reference/gio/html/gio-GWin32InputStream.html @@ -0,0 +1,254 @@ + + + + +GWin32InputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GWin32InputStream

+

GWin32InputStream — Streaming input operations for Windows file handles

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+GInputStream * + +g_win32_input_stream_new () +
+void + +g_win32_input_stream_set_close_handle () +
+gboolean + +g_win32_input_stream_get_close_handle () +
+void * + +g_win32_input_stream_get_handle () +
+
+
+

Types and Values

+
++++ + + + + +
structGWin32InputStream
+
+
+

Includes

+
#include <gio/gwin32inputstream.h>
+
+
+
+

Description

+

GWin32InputStream implements GInputStream for reading from a +Windows file handle.

+

Note that <gio/gwin32inputstream.h> belongs to the Windows-specific GIO +interfaces, thus you have to use the gio-windows-2.0.pc pkg-config file +when using it.

+
+
+

Functions

+
+

g_win32_input_stream_new ()

+
GInputStream *
+g_win32_input_stream_new (void *handle,
+                          gboolean close_handle);
+

Creates a new GWin32InputStream for the given handle +.

+

If close_handle + is TRUE, the handle will be closed +when the stream is closed.

+

Note that "handle" here means a Win32 HANDLE, not a "file descriptor" +as used in the Windows C libraries.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

handle

a Win32 file handle

 

close_handle

TRUE to close the handle when done

 
+
+
+

Returns

+

a new GWin32InputStream

+
+
+
+
+

g_win32_input_stream_set_close_handle ()

+
void
+g_win32_input_stream_set_close_handle (GWin32InputStream *stream,
+                                       gboolean close_handle);
+

Sets whether the handle of stream + shall be closed +when the stream is closed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GWin32InputStream

 

close_handle

TRUE to close the handle when done

 
+
+

Since: 2.26

+
+
+
+

g_win32_input_stream_get_close_handle ()

+
gboolean
+g_win32_input_stream_get_close_handle (GWin32InputStream *stream);
+

Returns whether the handle of stream + will be +closed when the stream is closed.

+
+

Parameters

+
+++++ + + + + + +

stream

a GWin32InputStream

 
+
+
+

Returns

+

TRUE if the handle is closed when done

+
+

Since: 2.26

+
+
+
+

g_win32_input_stream_get_handle ()

+
void *
+g_win32_input_stream_get_handle (GWin32InputStream *stream);
+

Return the Windows file handle that the stream reads from.

+
+

Parameters

+
+++++ + + + + + +

stream

a GWin32InputStream

 
+
+
+

Returns

+

The file handle of stream +

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

struct GWin32InputStream

+
struct GWin32InputStream {
+  GInputStream parent_instance;
+};
+
+

Implements GInputStream for reading from selectable Windows file handles

+
+
+
+

See Also

+

GInputStream

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-GWin32OutputStream.html b/docs/reference/gio/html/gio-GWin32OutputStream.html new file mode 100644 index 0000000..a569d39 --- /dev/null +++ b/docs/reference/gio/html/gio-GWin32OutputStream.html @@ -0,0 +1,255 @@ + + + + +GWin32OutputStream: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GWin32OutputStream

+

GWin32OutputStream — Streaming output operations for Windows file handles

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+GOutputStream * + +g_win32_output_stream_new () +
+void + +g_win32_output_stream_set_close_handle () +
+gboolean + +g_win32_output_stream_get_close_handle () +
+void * + +g_win32_output_stream_get_handle () +
+
+
+

Types and Values

+
++++ + + + + +
structGWin32OutputStream
+
+
+

Includes

+
#include <gio/gwin32outputstream.h>
+
+
+
+

Description

+

GWin32OutputStream implements GOutputStream for writing to a +Windows file handle.

+

Note that <gio/gwin32outputstream.h> belongs to the Windows-specific GIO +interfaces, thus you have to use the gio-windows-2.0.pc pkg-config file +when using it.

+
+
+

Functions

+
+

g_win32_output_stream_new ()

+
GOutputStream *
+g_win32_output_stream_new (void *handle,
+                           gboolean close_handle);
+

Creates a new GWin32OutputStream for the given handle +.

+

If close_handle +, is TRUE, the handle will be closed when the +output stream is destroyed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

handle

a Win32 file handle

 

close_handle

TRUE to close the handle when done

 
+
+
+

Returns

+

a new GOutputStream

+
+

Since: 2.26

+
+
+
+

g_win32_output_stream_set_close_handle ()

+
void
+g_win32_output_stream_set_close_handle
+                               (GWin32OutputStream *stream,
+                                gboolean close_handle);
+

Sets whether the handle of stream + shall be closed when the stream +is closed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stream

a GWin32OutputStream

 

close_handle

TRUE to close the handle when done

 
+
+

Since: 2.26

+
+
+
+

g_win32_output_stream_get_close_handle ()

+
gboolean
+g_win32_output_stream_get_close_handle
+                               (GWin32OutputStream *stream);
+

Returns whether the handle of stream + will be closed when the +stream is closed.

+
+

Parameters

+
+++++ + + + + + +

stream

a GWin32OutputStream

 
+
+
+

Returns

+

TRUE if the handle is closed when done

+
+

Since: 2.26

+
+
+
+

g_win32_output_stream_get_handle ()

+
void *
+g_win32_output_stream_get_handle (GWin32OutputStream *stream);
+

Return the Windows handle that the stream writes to.

+
+

Parameters

+
+++++ + + + + + +

stream

a GWin32OutputStream

 
+
+
+

Returns

+

The handle descriptor of stream +

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

struct GWin32OutputStream

+
struct GWin32OutputStream {
+  GOutputStream parent_instance;
+};
+
+

Implements GOutputStream for outputting to Windows file handles

+
+
+
+

See Also

+

GOutputStream

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-GWin32RegistryKey.html b/docs/reference/gio/html/gio-GWin32RegistryKey.html new file mode 100644 index 0000000..a3063b3 --- /dev/null +++ b/docs/reference/gio/html/gio-GWin32RegistryKey.html @@ -0,0 +1,2066 @@ + + + + +GWin32RegistryKey: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GWin32RegistryKey

+

GWin32RegistryKey — W32 registry access helper

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GWin32RegistrySubkeyIter * + +g_win32_registry_subkey_iter_copy () +
+void + +g_win32_registry_subkey_iter_free () +
+void + +g_win32_registry_subkey_iter_assign () +
+GWin32RegistryValueIter * + +g_win32_registry_value_iter_copy () +
+void + +g_win32_registry_value_iter_free () +
+void + +g_win32_registry_value_iter_assign () +
+GWin32RegistryKey * + +g_win32_registry_key_new () +
+GWin32RegistryKey * + +g_win32_registry_key_new_w () +
+GWin32RegistryKey * + +g_win32_registry_key_get_child () +
+GWin32RegistryKey * + +g_win32_registry_key_get_child_w () +
+gboolean + +g_win32_registry_subkey_iter_init () +
+void + +g_win32_registry_subkey_iter_clear () +
+gsize + +g_win32_registry_subkey_iter_n_subkeys () +
+gboolean + +g_win32_registry_subkey_iter_next () +
+gboolean + +g_win32_registry_subkey_iter_get_name () +
+gboolean + +g_win32_registry_subkey_iter_get_name_w () +
+gboolean + +g_win32_registry_value_iter_init () +
+void + +g_win32_registry_value_iter_clear () +
+gsize + +g_win32_registry_value_iter_n_values () +
+gboolean + +g_win32_registry_value_iter_next () +
+gboolean + +g_win32_registry_value_iter_get_value_type () +
+gboolean + +g_win32_registry_value_iter_get_name () +
+gboolean + +g_win32_registry_value_iter_get_name_w () +
+gboolean + +g_win32_registry_value_iter_get_data () +
+gboolean + +g_win32_registry_value_iter_get_data_w () +
+gboolean + +g_win32_registry_key_get_value () +
+gboolean + +g_win32_registry_key_get_value_w () +
const gchar * + +g_win32_registry_key_get_path () +
const gunichar2 * + +g_win32_registry_key_get_path_w () +
+void + +(*GWin32RegistryKeyWatchCallbackFunc) () +
+gboolean + +g_win32_registry_key_watch () +
+gboolean + +g_win32_registry_key_has_changed () +
+void + +g_win32_registry_key_erase_change_indicator () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
structGWin32RegistrySubkeyIter
structGWin32RegistryValueIter
structGWin32RegistryKey
enumGWin32RegistryValueType
enumGWin32RegistryKeyWatcherFlags
+
+
+

Includes

+
#include <gio/win32/gwin32registrykey.h>
+
+
+
+

Description

+

GWin32RegistryKey represents a single Windows Registry key.

+

GWin32RegistryKey is used by a number of helper functions that read +Windows Registry. All keys are opened with read-only access, and at +the moment there is no API for writing into registry keys or creating +new ones.

+

GWin32RegistryKey implements the GInitable interface, so if it is manually +constructed by e.g. g_object_new() you must call g_initable_init() and check +the results before using the object. This is done automatically +in g_win32_registry_key_new() and g_win32_registry_key_get_child(), so these +functions can return NULL.

+

To increase efficiency, a UTF-16 variant is available for all functions +that deal with key or value names in the registry. Use these to perform +deep registry queries or other operations that require querying a name +of a key or a value and then opening it (or querying its data). The use +of UTF-16 functions avoids the overhead of converting names to UTF-8 and +back.

+

All functions operate in current user's context (it is not possible to +access registry tree of a different user).

+

Key paths must use '\' as a separator, '/' is not supported. Key names +must not include '\', because it's used as a separator. Value names +can include '\'.

+

Key and value names are not case sensitive.

+

Full key name (excluding the pre-defined ancestor's name) can't exceed +255 UTF-16 characters, give or take. Value name can't exceed 16383 UTF-16 +characters. Tree depth is limited to 512 levels.

+
+
+

Functions

+
+

g_win32_registry_subkey_iter_copy ()

+
GWin32RegistrySubkeyIter *
+g_win32_registry_subkey_iter_copy (const GWin32RegistrySubkeyIter *iter);
+

Creates a dynamically-allocated copy of an iterator. Dynamically-allocated +state of the iterator is duplicated too.

+
+

Parameters

+
+++++ + + + + + +

iter

an iterator

 
+
+
+

Returns

+

a copy of the iter +, +free with g_win32_registry_subkey_iter_free().

+

[transfer full]

+
+

Since: 2.46

+
+
+
+

g_win32_registry_subkey_iter_free ()

+
void
+g_win32_registry_subkey_iter_free (GWin32RegistrySubkeyIter *iter);
+

Free an iterator allocated on the heap. For iterators that are allocated +on the stack use g_win32_registry_subkey_iter_clear() instead.

+
+

Parameters

+
+++++ + + + + + +

iter

a dynamically-allocated iterator

 
+
+

Since: 2.46

+
+
+
+

g_win32_registry_subkey_iter_assign ()

+
void
+g_win32_registry_subkey_iter_assign (GWin32RegistrySubkeyIter *iter,
+                                     const GWin32RegistrySubkeyIter *other);
+

Assigns the value of other + to iter +. This function +is not useful in applications, because iterators can be assigned +with GWin32RegistrySubkeyIter i = j;. The +function is used by language bindings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

iter

a GWin32RegistrySubkeyIter

 

other

another GWin32RegistrySubkeyIter

 
+
+

Since: 2.46

+
+
+
+

g_win32_registry_value_iter_copy ()

+
GWin32RegistryValueIter *
+g_win32_registry_value_iter_copy (const GWin32RegistryValueIter *iter);
+

Creates a dynamically-allocated copy of an iterator. Dynamically-allocated +state of the iterator is duplicated too.

+
+

Parameters

+
+++++ + + + + + +

iter

an iterator

 
+
+
+

Returns

+

a copy of the iter +, +free with g_win32_registry_value_iter_free().

+

[transfer full]

+
+

Since: 2.46

+
+
+
+

g_win32_registry_value_iter_free ()

+
void
+g_win32_registry_value_iter_free (GWin32RegistryValueIter *iter);
+

Free an iterator allocated on the heap. For iterators that are allocated +on the stack use g_win32_registry_value_iter_clear() instead.

+
+

Parameters

+
+++++ + + + + + +

iter

a dynamically-allocated iterator

 
+
+

Since: 2.46

+
+
+
+

g_win32_registry_value_iter_assign ()

+
void
+g_win32_registry_value_iter_assign (GWin32RegistryValueIter *iter,
+                                    const GWin32RegistryValueIter *other);
+

Assigns the value of other + to iter +. This function +is not useful in applications, because iterators can be assigned +with GWin32RegistryValueIter i = j;. The +function is used by language bindings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

iter

a GWin32RegistryValueIter

 

other

another GWin32RegistryValueIter

 
+
+

Since: 2.46

+
+
+
+

g_win32_registry_key_new ()

+
GWin32RegistryKey *
+g_win32_registry_key_new (const gchar *path,
+                          GError **error);
+

Creates an object that represents a registry key specified by path +. +path + must start with one of the following pre-defined names:

+
    +
  • HKEY_CLASSES_ROOT

  • +
  • HKEY_CURRENT_CONFIG

  • +
  • HKEY_CURRENT_USER

  • +
  • HKEY_CURRENT_USER_LOCAL_SETTINGS

  • +
  • HKEY_LOCAL_MACHINE

  • +
  • HKEY_PERFORMANCE_DATA

  • +
  • HKEY_PERFORMANCE_NLSTEXT

  • +
  • HKEY_PERFORMANCE_TEXT

  • +
  • HKEY_USERS +path + must not end with '\'.

  • +
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

path

absolute full name of a key to open (in UTF-8)

 

error

a pointer to a NULL GError, or NULL.

[nullable]
+
+
+

Returns

+

a GWin32RegistryKey or NULL if can't +be opened. Free with g_object_unref().

+

[nullable][transfer full]

+
+
+
+
+

g_win32_registry_key_new_w ()

+
GWin32RegistryKey *
+g_win32_registry_key_new_w (const gunichar2 *path,
+                            GError **error);
+

Creates an object that represents a registry key specified by path +. +path + must start with one of the following pre-defined names:

+
    +
  • HKEY_CLASSES_ROOT

  • +
  • HKEY_CURRENT_CONFIG

  • +
  • HKEY_CURRENT_USER

  • +
  • HKEY_CURRENT_USER_LOCAL_SETTINGS

  • +
  • HKEY_LOCAL_MACHINE

  • +
  • HKEY_PERFORMANCE_DATA

  • +
  • HKEY_PERFORMANCE_NLSTEXT

  • +
  • HKEY_PERFORMANCE_TEXT

  • +
  • HKEY_USERS +path + must not end with L'\'.

  • +
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

path

absolute full name of a key to open (in UTF-16).

[in][transfer none]

error

a pointer to a NULL GError, or NULL.

[inout][nullable]
+
+
+

Returns

+

a GWin32RegistryKey or NULL if can't +be opened. Free with g_object_unref().

+

[nullable][transfer full]

+
+
+
+
+

g_win32_registry_key_get_child ()

+
GWin32RegistryKey *
+g_win32_registry_key_get_child (GWin32RegistryKey *key,
+                                const gchar *subkey,
+                                GError **error);
+

Opens a subkey + of the key +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

key

a parent GWin32RegistryKey.

[in][transfer none]

subkey

name of a child key to open (in UTF-8), relative to key +.

[in][transfer none]

error

a pointer to a NULL GError, or NULL.

[inout][nullable]
+
+
+

Returns

+

a GWin32RegistryKey or NULL if can't be opened. Free +with g_object_unref().

+

[nullable]

+
+
+
+
+

g_win32_registry_key_get_child_w ()

+
GWin32RegistryKey *
+g_win32_registry_key_get_child_w (GWin32RegistryKey *key,
+                                  const gunichar2 *subkey,
+                                  GError **error);
+

Opens a subkey + of the key +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

key

a parent GWin32RegistryKey.

[in][transfer none]

subkey

name of a child key to open (in UTF-8), relative to key +.

[in][transfer none]

error

a pointer to a NULL GError, or NULL.

[inout][nullable]
+
+
+

Returns

+

a GWin32RegistryKey or NULL if can't be opened. Free +with g_object_unref().

+

[nullable]

+
+
+
+
+

g_win32_registry_subkey_iter_init ()

+
gboolean
+g_win32_registry_subkey_iter_init (GWin32RegistrySubkeyIter *iter,
+                                   GWin32RegistryKey *key,
+                                   GError **error);
+

Initialises (without allocating) a GWin32RegistrySubkeyIter. iter + may be +completely uninitialised prior to this call; its old value is +ignored.

+

The iterator remains valid for as long as key + exists. +Clean up its internal buffers with a call to +g_win32_registry_subkey_iter_clear() when done.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

iter

a pointer to a GWin32RegistrySubkeyIter.

[in][transfer none]

key

a GWin32RegistryKey to iterate over.

[in][transfer none]

error

a pointer to NULL GError, or NULL.

[inout][nullable]
+
+
+

Returns

+

TRUE if iterator was initialized successfully, FALSE on error.

+
+

Since: 2.46

+
+
+
+

g_win32_registry_subkey_iter_clear ()

+
void
+g_win32_registry_subkey_iter_clear (GWin32RegistrySubkeyIter *iter);
+

Frees internal buffers of a GWin32RegistrySubkeyIter.

+
+

Parameters

+
+++++ + + + + + +

iter

a GWin32RegistrySubkeyIter.

[in][transfer none]
+
+

Since: 2.46

+
+
+
+

g_win32_registry_subkey_iter_n_subkeys ()

+
gsize
+g_win32_registry_subkey_iter_n_subkeys
+                               (GWin32RegistrySubkeyIter *iter);
+

Queries the number of subkeys items in the key that we are +iterating over. This is the total number of subkeys -- not the number +of items remaining.

+

This information is accurate at the point of iterator initialization, +and may go out of sync with reality even while subkeys are enumerated.

+
+

Parameters

+
+++++ + + + + + +

iter

a GWin32RegistrySubkeyIter.

[in][transfer none]
+
+
+

Returns

+

the number of subkeys in the key

+
+

Since: 2.46

+
+
+
+

g_win32_registry_subkey_iter_next ()

+
gboolean
+g_win32_registry_subkey_iter_next (GWin32RegistrySubkeyIter *iter,
+                                   gboolean skip_errors,
+                                   GError **error);
+

Moves iterator to the next subkey. +Enumeration errors can be ignored if skip_errors + is TRUE

+

Here is an example for iterating with g_win32_registry_subkey_iter_next():

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
// recursively iterate a key
+void
+iterate_key_recursive (GWin32RegistryKey *key)
+{
+  GWin32RegistrySubkeyIter iter;
+  gchar *name;
+  GWin32RegistryKey *child;
+
+  if (!g_win32_registry_subkey_iter_init (&iter, key, NULL))
+    return;
+
+  while (g_win32_registry_subkey_iter_next (&iter, TRUE, NULL))
+    {
+      if (!g_win32_registry_subkey_iter_get_name (&iter, &name, NULL, NULL))
+        continue;
+
+      g_print ("subkey '%s'\n", name);
+      child = g_win32_registry_key_get_child (key, name, NULL);
+
+      if (child)
+        iterate_key_recursive (child);
+    }
+
+  g_win32_registry_subkey_iter_clear (&iter);
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

iter

a GWin32RegistrySubkeyIter.

[in][transfer none]

skip_errors

TRUE if iterator should silently ignore errors (such as +the actual number of subkeys being less than expected) and +proceed forward.

[in]

error

a pointer to NULL GError, or NULL.

[nullable]
+
+
+

Returns

+

TRUE if next subkey info was retrieved, FALSE otherwise.

+
+

Since: 2.46

+
+
+
+

g_win32_registry_subkey_iter_get_name ()

+
gboolean
+g_win32_registry_subkey_iter_get_name (GWin32RegistrySubkeyIter *iter,
+                                       gchar **subkey_name,
+                                       gsize *subkey_name_len,
+                                       GError **error);
+

Gets the name of the subkey at the iter + potision.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

iter

a GWin32RegistrySubkeyIter.

[in][transfer none]

subkey_name

Pointer to a location +to store the name of a subkey (in UTF-8). Free with g_free().

[out callee-allocates][transfer none]

subkey_name_len

Pointer to a location to store the +length of subkey_name +, in gchars, excluding NUL-terminator. +NULL if length is not needed.

[out][optional]

error

a pointer to NULL GError, or NULL.

[nullable]
+
+
+

Returns

+

TRUE if the name was retrieved, FALSE otherwise.

+
+

Since: 2.46

+
+
+
+

g_win32_registry_subkey_iter_get_name_w ()

+
gboolean
+g_win32_registry_subkey_iter_get_name_w
+                               (GWin32RegistrySubkeyIter *iter,
+                                gunichar2 **subkey_name,
+                                gsize *subkey_name_len,
+                                GError **error);
+

Same as g_win32_registry_subkey_iter_get_next(), but outputs UTF-16-encoded +data, without converting it to UTF-8 first.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

iter

a GWin32RegistrySubkeyIter.

[in][transfer none]

subkey_name

Pointer to a location +to store the name of a subkey (in UTF-16).

[out callee-allocates][transfer none]

subkey_name_len

Pointer to a location +to store the length of subkey_name +, in gunichar2s, excluding +NUL-terminator. +NULL if length is not needed.

[out][optional][transfer none]

error

a pointer to NULL GError, or NULL.

[nullable]
+
+
+

Returns

+

TRUE if the name was retrieved, FALSE otherwise.

+
+

Since: 2.46

+
+
+
+

g_win32_registry_value_iter_init ()

+
gboolean
+g_win32_registry_value_iter_init (GWin32RegistryValueIter *iter,
+                                  GWin32RegistryKey *key,
+                                  GError **error);
+

Initialises (without allocating) a GWin32RegistryValueIter. iter + may be +completely uninitialised prior to this call; its old value is +ignored.

+

The iterator remains valid for as long as key + exists. +Clean up its internal buffers with a call to +g_win32_registry_value_iter_clear() when done.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

iter

a pointer to a GWin32RegistryValueIter.

[in][transfer none]

key

a GWin32RegistryKey to iterate over.

[in][transfer none]

error

a pointer to NULL GError, or NULL.

[nullable]
+
+
+

Returns

+

TRUE if iterator was initialized successfully, FALSE on error.

+
+

Since: 2.46

+
+
+
+

g_win32_registry_value_iter_clear ()

+
void
+g_win32_registry_value_iter_clear (GWin32RegistryValueIter *iter);
+

Frees internal buffers of a GWin32RegistryValueIter.

+
+

Parameters

+
+++++ + + + + + +

iter

a GWin32RegistryValueIter.

[in][transfer none]
+
+

Since: 2.46

+
+
+
+

g_win32_registry_value_iter_n_values ()

+
gsize
+g_win32_registry_value_iter_n_values (GWin32RegistryValueIter *iter);
+

Queries the number of values items in the key that we are +iterating over. This is the total number of values -- not the number +of items remaining.

+

This information is accurate at the point of iterator initialization, +and may go out of sync with reality even while values are enumerated.

+
+

Parameters

+
+++++ + + + + + +

iter

a GWin32RegistryValueIter.

[in][transfer none]
+
+
+

Returns

+

the number of values in the key

+
+

Since: 2.46

+
+
+
+

g_win32_registry_value_iter_next ()

+
gboolean
+g_win32_registry_value_iter_next (GWin32RegistryValueIter *iter,
+                                  gboolean skip_errors,
+                                  GError **error);
+

Advances iterator to the next value in the key. If no more values remain then +FALSE is returned. +Enumeration errors can be ignored if skip_errors + is TRUE

+

Here is an example for iterating with g_win32_registry_value_iter_next():

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
// iterate values of a key
+void
+iterate_values_recursive (GWin32RegistryKey *key)
+{
+  GWin32RegistryValueIter iter;
+  gchar *name;
+  GWin32RegistryValueType val_type;
+  gchar *val_data;
+
+  if (!g_win32_registry_value_iter_init (&iter, key, NULL))
+    return;
+
+  while (g_win32_registry_value_iter_next (&iter, TRUE, NULL))
+    {
+      if ((!g_win32_registry_value_iter_get_value_type (&iter, &value)) ||
+          ((val_type != G_WIN32_REGISTRY_VALUE_STR) &&
+           (val_type != G_WIN32_REGISTRY_VALUE_EXPAND_STR)))
+        continue;
+
+      if (g_win32_registry_value_iter_get_value (&iter, TRUE, &name, NULL,
+                                                 &val_data, NULL, NULL))
+        g_print ("value '%s' = '%s'\n", name, val_data);
+    }
+
+  g_win32_registry_value_iter_clear (&iter);
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

iter

a GWin32RegistryValueIter.

[in][transfer none]

skip_errors

TRUE if iterator should silently ignore errors (such as +the actual number of values being less than expected) and +proceed forward.

[in]

error

a pointer to NULL GError, or NULL.

[nullable]
+
+
+

Returns

+

TRUE if next value info was retrieved, FALSE otherwise.

+
+

Since: 2.46

+
+
+
+

g_win32_registry_value_iter_get_value_type ()

+
gboolean
+g_win32_registry_value_iter_get_value_type
+                               (GWin32RegistryValueIter *iter,
+                                GWin32RegistryValueType *value_type,
+                                GError **error);
+

Stores the type of the value currently being iterated over in value_type +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

iter

a GWin32RegistryValueIter.

[in][transfer none]

value_type

Pointer to a location to store the type of +the value.

[out]

error

a pointer to NULL GError, or NULL.

[nullable]
+
+
+

Returns

+

TRUE if value type was retrieved, FALSE otherwise.

+
+

Since: 2.46

+
+
+
+

g_win32_registry_value_iter_get_name ()

+
gboolean
+g_win32_registry_value_iter_get_name (GWin32RegistryValueIter *iter,
+                                      gchar **value_name,
+                                      gsize *value_name_len,
+                                      GError **error);
+

Stores the name of the value currently being iterated over in value_name +, +and its length - in value_name_len + (if not NULL).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

iter

a GWin32RegistryValueIter.

[in][transfer none]

value_name

Pointer to a location +to store the name of a value (in UTF-8).

[out callee-allocates][transfer none]

value_name_len

Pointer to a location to store the length +of value_name +, in gchars, excluding NUL-terminator. +NULL if length is not needed.

[out][optional]

error

a pointer to NULL GError, or NULL.

[nullable]
+
+
+

Returns

+

TRUE if value name was retrieved, FALSE otherwise.

+
+

Since: 2.46

+
+
+
+

g_win32_registry_value_iter_get_name_w ()

+
gboolean
+g_win32_registry_value_iter_get_name_w
+                               (GWin32RegistryValueIter *iter,
+                                gunichar2 **value_name,
+                                gsize *value_name_len,
+                                GError **error);
+

Stores the name of the value currently being iterated over in value_name +, +and its length - in value_name + (if not NULL).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

iter

a GWin32RegistryValueIter.

[in][transfer none]

value_name

Pointer to a location +to store the name of a value (in UTF-16).

[out callee-allocates][transfer none]

value_name_len

Pointer to a location to store the length +of value_name +, in gunichar2s, excluding NUL-terminator. +NULL if length is not needed.

[out][optional]

error

a pointer to NULL GError, or NULL.

[nullable]
+
+
+

Returns

+

TRUE if value name was retrieved, FALSE otherwise.

+
+

Since: 2.46

+
+
+
+

g_win32_registry_value_iter_get_data ()

+
gboolean
+g_win32_registry_value_iter_get_data (GWin32RegistryValueIter *iter,
+                                      gboolean auto_expand,
+                                      gpointer *value_data,
+                                      gsize *value_data_size,
+                                      GError **error);
+

Stores the data of the value currently being iterated over in value_data +, +and its length - in value_data_len + (if not NULL).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

iter

a GWin32RegistryValueIter.

[in][transfer none]

auto_expand

TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR to +G_WIN32_REGISTRY_VALUE_STR.

[in]

value_data

Pointer to a +location to store the data of the value (in UTF-8, if it's a string).

[out callee-allocates][optional][transfer none]

value_data_size

Pointer to a location to store the length +of value_data +, in bytes (including any NUL-terminators, if it's a string). +NULL if length is not needed.

[out][optional]

error

a pointer to NULL GError, or NULL.

[nullable]
+
+
+

Returns

+

TRUE if value data was retrieved, FALSE otherwise.

+
+

Since: 2.46

+
+
+
+

g_win32_registry_value_iter_get_data_w ()

+
gboolean
+g_win32_registry_value_iter_get_data_w
+                               (GWin32RegistryValueIter *iter,
+                                gboolean auto_expand,
+                                gpointer *value_data,
+                                gsize *value_data_size,
+                                GError **error);
+

Stores the data of the value currently being iterated over in value_data +, +and its length - in value_data_len + (if not NULL).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

iter

a GWin32RegistryValueIter.

[in][transfer none]

auto_expand

TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR to +G_WIN32_REGISTRY_VALUE_STR.

[in]

value_data

Pointer to a +location to store the data of the value (in UTF-16, if it's a string).

[out callee-allocates][optional][transfer none]

value_data_size

Pointer to a location to store the size +of value_data +, in bytes (including any NUL-terminators, if it's a string). +NULL if length is not needed.

[out][optional]

error

a pointer to NULL GError, or NULL.

[nullable]
+
+
+

Returns

+

TRUE if value data was retrieved, FALSE otherwise.

+
+

Since: 2.46

+
+
+
+

g_win32_registry_key_get_value ()

+
gboolean
+g_win32_registry_key_get_value (GWin32RegistryKey *key,
+                                gboolean auto_expand,
+                                const gchar *value_name,
+                                GWin32RegistryValueType *value_type,
+                                gpointer *value_data,
+                                gsize *value_data_size,
+                                GError **error);
+

Get data from a value of a key. String data is guaranteed to be +appropriately terminated and will be in UTF-8.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key

a GWin32RegistryKey.

[in][transfer none]

auto_expand

(in) TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR +to G_WIN32_REGISTRY_VALUE_STR.

 

value_name

name of the value to get (in UTF-8). +Empty string means the '(Default)' value.

[in][transfer none]

value_type

type of the value retrieved.

[out][optional]

value_data

contents of the value.

[out callee-allocates][optional]

value_data_size

size of the buffer pointed +by value_data +.

[out][optional]

error

a pointer to NULL GError, or NULL.

[nullable]
+
+
+

Returns

+

TRUE on success, FALSE on failure.

+
+

Since: 2.46

+
+
+
+

g_win32_registry_key_get_value_w ()

+
gboolean
+g_win32_registry_key_get_value_w (GWin32RegistryKey *key,
+                                  gboolean auto_expand,
+                                  const gunichar2 *value_name,
+                                  GWin32RegistryValueType *value_type,
+                                  gpointer *value_data,
+                                  gsize *value_data_size,
+                                  GError **error);
+

Get data from a value of a key.

+

Get data from a value of a key. String data is guaranteed to be +appropriately terminated and will be in UTF-16.

+

When calling with value_data == NULL (to get data size without getting +the data itself) remember that returned size corresponds to possibly +unterminated string data (if value is some kind of string), because +termination cannot be checked and fixed unless the data is retreived +too.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key

a GWin32RegistryKey.

[in][transfer none]

auto_expand

(in) TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR +to G_WIN32_REGISTRY_VALUE_STR.

 

value_name

name of the value to get (in UTF-16). +Empty string means the '(Default)' value.

[in][transfer none]

value_type

type of the value retrieved.

[out][optional]

value_data

contents of the value.

[out callee-allocates][optional]

value_data_size

size of the buffer pointed +by value_data +.

[out][optional]

error

a pointer to NULL GError, or NULL.

[nullable]
+
+
+

Returns

+

TRUE on success, FALSE on failure.

+
+

Since: 2.46

+
+
+
+

g_win32_registry_key_get_path ()

+
const gchar *
+g_win32_registry_key_get_path (GWin32RegistryKey *key);
+

Get full path to the key

+
+

Parameters

+
+++++ + + + + + +

key

a GWin32RegistryKey.

[in][transfer none]
+
+
+

Returns

+

a full path to the key (in UTF-8), +or NULL if it can't be converted to UTF-8.

+

[transfer none]

+
+

Since: 2.46

+
+
+
+

g_win32_registry_key_get_path_w ()

+
const gunichar2 *
+g_win32_registry_key_get_path_w (GWin32RegistryKey *key);
+

Get full path to the key

+
+

Parameters

+
+++++ + + + + + +

key

a GWin32RegistryKey.

[in][transfer none]
+
+
+

Returns

+

a full path to the key (in UTF-16).

+

[transfer none]

+
+

Since: 2.46

+
+
+
+

GWin32RegistryKeyWatchCallbackFunc ()

+
void
+(*GWin32RegistryKeyWatchCallbackFunc) (GWin32RegistryKey *key,
+                                       gpointer user_data);
+

The type of the callback passed to g_win32_registry_key_watch().

+

The callback is invoked after a change matching the watch flags and arguments +occurs. If the children of the key were watched also, there is no way to know +which one of them triggered the callback.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

key

A GWin32RegistryKey that was watched.

 

user_data

The user_data +gpointer passed to g_win32_registry_key_watch().

 
+
+

Since: 2.42

+
+
+
+

g_win32_registry_key_watch ()

+
gboolean
+g_win32_registry_key_watch (GWin32RegistryKey *key,
+                            gboolean watch_children,
+                            GWin32RegistryKeyWatcherFlags watch_flags,
+                            GWin32RegistryKeyWatchCallbackFunc callback,
+                            gpointer user_data,
+                            GError **error);
+

Puts key + under a watch.

+

When the key changes, an APC will be queued in the current thread. The APC +will run when the current thread enters alertable state (GLib main loop +should do that; if you are not using it, see MSDN documentation for W32API +calls that put thread into alertable state). When it runs, it will +atomically switch an indicator in the key +. If a callback was specified, +it is invoked at that point. Subsequent calls to +g_win32_registry_key_has_changed() will return TRUE, and the callback (if +it was specified) will not be invoked anymore. +Calling g_win32_registry_key_erase_change_indicator() will reset the indicator, +and g_win32_registry_key_has_changed() will start returning FALSE. +To resume the watch, call g_win32_registry_key_watch_for_changes() again.

+

Calling g_win32_registry_key_watch_for_changes() for a key that is already +being watched is allowed and affects nothing.

+

The fact that the key is being watched will be used internally to update +key path (if it changes).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key

a GWin32RegistryKey.

[in][transfer none]

watch_children

(in) TRUE also watch the children of the key +, FALSE +to watch the key only.

 

watch_flags

specifies the types of changes to watch for.

[in]

callback

a function to invoke when a change occurs.

[in][nullable]

user_data

a pointer to pass to callback +on invocation.

[in][nullable]

error

a pointer to NULL GError, or NULL.

[nullable]
+
+
+

Returns

+

TRUE on success, FALSE on failure.

+
+

Since: 2.46

+
+
+
+

g_win32_registry_key_has_changed ()

+
gboolean
+g_win32_registry_key_has_changed (GWin32RegistryKey *key);
+

Check the key +'s status indicator.

+
+

Parameters

+
+++++ + + + + + +

key

a GWin32RegistryKey.

[in][transfer none]
+
+
+

Returns

+

TRUE if the key +was put under watch at some point and has changed +since then, FALSE if it either wasn't changed or wasn't watched at all.

+
+

Since: 2.46

+
+
+
+

g_win32_registry_key_erase_change_indicator ()

+
void
+g_win32_registry_key_erase_change_indicator
+                               (GWin32RegistryKey *key);
+

Erases change indicator of the key +.

+

Subsequent calls to g_win32_registry_key_has_changed() will return FALSE +until the key is put on watch again by calling +g_win32_registry_key_watch() again.

+
+

Parameters

+
+++++ + + + + + +

key

a GWin32RegistryKey.

[in][transfer none]
+
+

Since: 2.46

+
+
+
+

Types and Values

+
+

struct GWin32RegistrySubkeyIter

+
struct GWin32RegistrySubkeyIter {
+};
+
+
+
+
+

struct GWin32RegistryValueIter

+
struct GWin32RegistryValueIter {
+};
+
+
+
+
+

struct GWin32RegistryKey

+
struct GWin32RegistryKey {
+  GObject parent_instance;
+};
+
+
+
+
+

enum GWin32RegistryValueType

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_WIN32_REGISTRY_VALUE_NONE

  

G_WIN32_REGISTRY_VALUE_BINARY

  

G_WIN32_REGISTRY_VALUE_UINT32LE

  

G_WIN32_REGISTRY_VALUE_UINT32BE

  

G_WIN32_REGISTRY_VALUE_UINT32

  

G_WIN32_REGISTRY_VALUE_UINT32

  

G_WIN32_REGISTRY_VALUE_EXPAND_STR

  

G_WIN32_REGISTRY_VALUE_LINK

  

G_WIN32_REGISTRY_VALUE_MULTI_STR

  

G_WIN32_REGISTRY_VALUE_UINT64LE

  

G_WIN32_REGISTRY_VALUE_UINT64

  

G_WIN32_REGISTRY_VALUE_STR

  
+
+
+
+
+

enum GWin32RegistryKeyWatcherFlags

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

G_WIN32_REGISTRY_WATCH_NAME

  

G_WIN32_REGISTRY_WATCH_ATTRIBUTES

  

G_WIN32_REGISTRY_WATCH_VALUES

  

G_WIN32_REGISTRY_WATCH_SECURITY

  
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-Owning-Bus-Names.html b/docs/reference/gio/html/gio-Owning-Bus-Names.html new file mode 100644 index 0000000..400df67 --- /dev/null +++ b/docs/reference/gio/html/gio-Owning-Bus-Names.html @@ -0,0 +1,653 @@ + + + + +Owning Bus Names: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Owning Bus Names

+

Owning Bus Names — Simple API for owning bus names

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +(*GBusAcquiredCallback) () +
+void + +(*GBusNameAcquiredCallback) () +
+void + +(*GBusNameLostCallback) () +
+guint + +g_bus_own_name () +
+guint + +g_bus_own_name_on_connection () +
+void + +g_bus_unown_name () +
+guint + +g_bus_own_name_with_closures () +
+guint + +g_bus_own_name_on_connection_with_closures () +
+
+
+

Types and Values

+
++++ + + + + +
enumGBusNameOwnerFlags
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Convenience API for owning bus names.

+

A simple example for owning a name can be found in +gdbus-example-own-name.c

+
+
+

Functions

+
+

GBusAcquiredCallback ()

+
void
+(*GBusAcquiredCallback) (GDBusConnection *connection,
+                         const gchar *name,
+                         gpointer user_data);
+

Invoked when a connection to a message bus has been obtained.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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().

 
+
+

Since: 2.26

+
+
+
+

GBusNameAcquiredCallback ()

+
void
+(*GBusNameAcquiredCallback) (GDBusConnection *connection,
+                             const gchar *name,
+                             gpointer user_data);
+

Invoked when the name is acquired.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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().

 
+
+

Since: 2.26

+
+
+
+

GBusNameLostCallback ()

+
void
+(*GBusNameLostCallback) (GDBusConnection *connection,
+                         const gchar *name,
+                         gpointer user_data);
+

Invoked when the name is lost or connection + has been closed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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().

 
+
+

Since: 2.26

+
+
+
+

g_bus_own_name ()

+
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);
+

Starts acquiring name + on the bus specified by bus_type + and calls +name_acquired_handler + and name_lost_handler + when the name is +acquired respectively lost. Callbacks will be invoked in the +thread-default main context +of the thread you are calling this function from.

+

You are guaranteed that one of the name_acquired_handler + and name_lost_handler + +callbacks will be invoked after calling this function - there are three +possible cases:

+
    +
  • name_lost_handler + with a NULL connection (if a connection to the bus +can't be made).

  • +
  • bus_acquired_handler + then name_lost_handler + (if the name can't be +obtained)

  • +
  • bus_acquired_handler + then name_acquired_handler + (if the name was +obtained).

  • +
+

When you are done owning the name, just call g_bus_unown_name() +with the owner id this function returns.

+

If the name is acquired or lost (for example another application +could acquire the name if you allow replacement or the application +currently owning the name exits), the handlers are also invoked. +If the GDBusConnection that is used for attempting to own the name +closes, then name_lost_handler + is invoked since it is no longer +possible for other processes to access the process.

+

You cannot use g_bus_own_name() several times for the same name (unless +interleaved with calls to g_bus_unown_name()) - only the first call +will work.

+

Another guarantee is that invocations of name_acquired_handler + +and name_lost_handler + are guaranteed to alternate; that +is, if name_acquired_handler + is invoked then you are +guaranteed that the next time one of the handlers is invoked, it +will be name_lost_handler +. The reverse is also true.

+

If you plan on exporting objects (using e.g. +g_dbus_connection_register_object()), note that it is generally too late +to export the objects in name_acquired_handler +. Instead, you can do this +in bus_acquired_handler + since you are guaranteed that this will run +before name + is requested from the bus.

+

This behavior makes it very simple to write applications that wants +to own names and export objects. +Simply register objects to be exported in bus_acquired_handler + and +unregister the objects (if any) in name_lost_handler +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

bus_type

the type of bus to own a name on

 

name

the well-known name to own

 

flags

a set of flags from the GBusNameOwnerFlags enumeration

 

bus_acquired_handler

handler to invoke when connected to the bus of type bus_type +or NULL.

[allow-none]

name_acquired_handler

handler to invoke when name +is acquired or NULL.

[allow-none]

name_lost_handler

handler to invoke when name +is lost or NULL.

[allow-none]

user_data

user data to pass to handlers

 

user_data_free_func

function for freeing user_data +or NULL.

[allow-none]
+
+
+

Returns

+

an identifier (never 0) that an be used with +g_bus_unown_name() to stop owning the name.

+
+

Since: 2.26

+
+
+
+

g_bus_own_name_on_connection ()

+
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);
+

Like g_bus_own_name() but takes a GDBusConnection instead of a +GBusType.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

name

the well-known name to own

 

flags

a set of flags from the GBusNameOwnerFlags enumeration

 

name_acquired_handler

handler to invoke when name +is acquired or NULL.

[allow-none]

name_lost_handler

handler to invoke when name +is lost or NULL.

[allow-none]

user_data

user data to pass to handlers

 

user_data_free_func

function for freeing user_data +or NULL.

[allow-none]
+
+
+

Returns

+

an identifier (never 0) that an be used with +g_bus_unown_name() to stop owning the name

+
+

Since: 2.26

+
+
+
+

g_bus_unown_name ()

+
void
+g_bus_unown_name (guint owner_id);
+

Stops owning a name.

+
+

Parameters

+
+++++ + + + + + +

owner_id

an identifier obtained from g_bus_own_name()

 
+
+

Since: 2.26

+
+
+
+

g_bus_own_name_with_closures ()

+
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);
+

Version of g_bus_own_name() using closures instead of callbacks for +easier binding in other languages.

+

[rename-to g_bus_own_name]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

bus_type

the type of bus to own a name on

 

name

the well-known name to own

 

flags

a set of flags from the GBusNameOwnerFlags enumeration

 

bus_acquired_closure

GClosure to invoke when connected to +the bus of type bus_type +or NULL.

[allow-none]

name_acquired_closure

GClosure to invoke when name +is +acquired or NULL.

[allow-none]

name_lost_closure

GClosure to invoke when name +is lost or +NULL.

[allow-none]
+
+
+

Returns

+

an identifier (never 0) that an be used with +g_bus_unown_name() to stop owning the name.

+
+

Since: 2.26

+
+
+
+

g_bus_own_name_on_connection_with_closures ()

+
guint
+g_bus_own_name_on_connection_with_closures
+                               (GDBusConnection *connection,
+                                const gchar *name,
+                                GBusNameOwnerFlags flags,
+                                GClosure *name_acquired_closure,
+                                GClosure *name_lost_closure);
+

Version of g_bus_own_name_on_connection() using closures instead of +callbacks for easier binding in other languages.

+

[rename-to g_bus_own_name_on_connection]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

a GDBusConnection

 

name

the well-known name to own

 

flags

a set of flags from the GBusNameOwnerFlags enumeration

 

name_acquired_closure

GClosure to invoke when name +is +acquired or NULL.

[allow-none]

name_lost_closure

GClosure to invoke when name +is lost +or NULL.

[allow-none]
+
+
+

Returns

+

an identifier (never 0) that an be used with +g_bus_unown_name() to stop owning the name.

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

enum GBusNameOwnerFlags

+

Flags used in g_bus_own_name().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.26

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-TLS-Overview.html b/docs/reference/gio/html/gio-TLS-Overview.html new file mode 100644 index 0000000..d6c505d --- /dev/null +++ b/docs/reference/gio/html/gio-TLS-Overview.html @@ -0,0 +1,317 @@ + + + + +TLS Overview: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

TLS Overview

+

TLS Overview — TLS (aka SSL) support for GSocketConnection

+
+
+

Functions

+
++++ + + + + +
#defineG_TLS_ERROR
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
enumGTlsError
enumGTlsAuthenticationMode
enumGTlsCertificateFlags
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

GTlsConnection and related classes provide TLS (Transport Layer +Security, previously known as SSL, Secure Sockets Layer) support for +gio-based network streams.

+

GDtlsConnection and related classes provide DTLS (Datagram TLS) support for +GIO-based network sockets, using the GDatagramBased interface. The TLS and +DTLS APIs are almost identical, except TLS is stream-based and DTLS is +datagram-based. They share certificate and backend infrastructure.

+

In the simplest case, for a client TLS connection, you can just set the +“tls” flag on a GSocketClient, and then any +connections created by that client will have TLS negotiated +automatically, using appropriate default settings, and rejecting +any invalid or self-signed certificates (unless you change that +default by setting the “tls-validation-flags” +property). The returned object will be a GTcpWrapperConnection, +which wraps the underlying GTlsClientConnection.

+

For greater control, you can create your own GTlsClientConnection, +wrapping a GSocketConnection (or an arbitrary GIOStream with +pollable input and output streams) and then connect to its signals, +such as “accept-certificate”, before starting the +handshake.

+

Server-side TLS is similar, using GTlsServerConnection. At the +moment, there is no support for automatically wrapping server-side +connections in the way GSocketClient does for client-side +connections.

+
+
+

Functions

+
+

G_TLS_ERROR

+
#define G_TLS_ERROR (g_tls_error_quark ())
+
+

Error domain for TLS. Errors in this domain will be from the +GTlsError enumeration. See GError for more information on error +domains.

+
+
+
+

Types and Values

+
+

enum GTlsError

+

An error code used with G_TLS_ERROR in a GError returned from a +TLS-related routine.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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().

+
 
+
+

Since: 2.28

+
+
+
+

enum GTlsAuthenticationMode

+

The client authentication mode for a GTlsServerConnection.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

G_TLS_AUTHENTICATION_NONE

+

client authentication not required

+
 

G_TLS_AUTHENTICATION_REQUESTED

+

client authentication is requested

+
 

G_TLS_AUTHENTICATION_REQUIRED

+

client authentication is required

+
 
+
+

Since: 2.28

+
+
+
+

enum GTlsCertificateFlags

+

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 +“accept-certificate”).

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

+
 
+
+

Since: 2.28

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-Unix-Mounts.html b/docs/reference/gio/html/gio-Unix-Mounts.html new file mode 100644 index 0000000..20eba74 --- /dev/null +++ b/docs/reference/gio/html/gio-Unix-Mounts.html @@ -0,0 +1,1415 @@ + + + + +Unix Mounts: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Unix Mounts

+

Unix Mounts — UNIX mounts

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +g_unix_mount_free () +
+gint + +g_unix_mount_compare () +
const char * + +g_unix_mount_get_mount_path () +
const char * + +g_unix_mount_get_device_path () +
const char * + +g_unix_mount_get_fs_type () +
+gboolean + +g_unix_mount_is_readonly () +
+gboolean + +g_unix_mount_is_system_internal () +
+GIcon * + +g_unix_mount_guess_icon () +
+GIcon * + +g_unix_mount_guess_symbolic_icon () +
+char * + +g_unix_mount_guess_name () +
+gboolean + +g_unix_mount_guess_can_eject () +
+gboolean + +g_unix_mount_guess_should_display () +
+void + +g_unix_mount_point_free () +
+gint + +g_unix_mount_point_compare () +
const char * + +g_unix_mount_point_get_mount_path () +
const char * + +g_unix_mount_point_get_device_path () +
const char * + +g_unix_mount_point_get_fs_type () +
const char * + +g_unix_mount_point_get_options () +
+gboolean + +g_unix_mount_point_is_readonly () +
+gboolean + +g_unix_mount_point_is_user_mountable () +
+gboolean + +g_unix_mount_point_is_loopback () +
+GIcon * + +g_unix_mount_point_guess_icon () +
+GIcon * + +g_unix_mount_point_guess_symbolic_icon () +
+char * + +g_unix_mount_point_guess_name () +
+gboolean + +g_unix_mount_point_guess_can_eject () +
+GList * + +g_unix_mount_points_get () +
+GList * + +g_unix_mounts_get () +
+GUnixMountEntry * + +g_unix_mount_at () +
+gboolean + +g_unix_mounts_changed_since () +
+gboolean + +g_unix_mount_points_changed_since () +
+GUnixMountMonitor * + +g_unix_mount_monitor_get () +
+GUnixMountMonitor * + +g_unix_mount_monitor_new () +
+void + +g_unix_mount_monitor_set_rate_limit () +
+gboolean + +g_unix_is_mount_path_system_internal () +
+
+
+

Signals

+
+++++ + + + + + + + + + + + + +
voidmountpoints-changedRun Last
voidmounts-changedRun Last
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
 GUnixMountPoint
 GUnixMountEntry
 GUnixMountMonitor
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GUnixMountMonitor
+
+
+
+

Includes

+
#include <gio/gunixmounts.h>
+
+
+
+

Description

+

Routines for managing mounted UNIX mount points and paths.

+

Note that <gio/gunixmounts.h> belongs to the UNIX-specific GIO +interfaces, thus you have to use the gio-unix-2.0.pc pkg-config +file when using it.

+
+
+

Functions

+
+

g_unix_mount_free ()

+
void
+g_unix_mount_free (GUnixMountEntry *mount_entry);
+

Frees a unix mount.

+
+

Parameters

+
+++++ + + + + + +

mount_entry

a GUnixMountEntry.

 
+
+
+
+
+

g_unix_mount_compare ()

+
gint
+g_unix_mount_compare (GUnixMountEntry *mount1,
+                      GUnixMountEntry *mount2);
+

Compares two unix mounts.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mount1

first GUnixMountEntry to compare.

 

mount2

second GUnixMountEntry to compare.

 
+
+
+

Returns

+

1, 0 or -1 if mount1 +is greater than, equal to, +or less than mount2 +, respectively.

+
+
+
+
+

g_unix_mount_get_mount_path ()

+
const char *
+g_unix_mount_get_mount_path (GUnixMountEntry *mount_entry);
+

Gets the mount path for a unix mount.

+
+

Parameters

+
+++++ + + + + + +

mount_entry

input GUnixMountEntry to get the mount path for.

 
+
+
+

Returns

+

the mount path for mount_entry +.

+
+
+
+
+

g_unix_mount_get_device_path ()

+
const char *
+g_unix_mount_get_device_path (GUnixMountEntry *mount_entry);
+

Gets the device path for a unix mount.

+
+

Parameters

+
+++++ + + + + + +

mount_entry

a GUnixMount.

 
+
+
+

Returns

+

a string containing the device path.

+
+
+
+
+

g_unix_mount_get_fs_type ()

+
const char *
+g_unix_mount_get_fs_type (GUnixMountEntry *mount_entry);
+

Gets the filesystem type for the unix mount.

+
+

Parameters

+
+++++ + + + + + +

mount_entry

a GUnixMount.

 
+
+
+

Returns

+

a string containing the file system type.

+
+
+
+
+

g_unix_mount_is_readonly ()

+
gboolean
+g_unix_mount_is_readonly (GUnixMountEntry *mount_entry);
+

Checks if a unix mount is mounted read only.

+
+

Parameters

+
+++++ + + + + + +

mount_entry

a GUnixMount.

 
+
+
+

Returns

+

TRUE if mount_entry +is read only.

+
+
+
+
+

g_unix_mount_is_system_internal ()

+
gboolean
+g_unix_mount_is_system_internal (GUnixMountEntry *mount_entry);
+

Checks if a unix mount is a system path.

+
+

Parameters

+
+++++ + + + + + +

mount_entry

a GUnixMount.

 
+
+
+

Returns

+

TRUE if the unix mount is for a system path.

+
+
+
+
+

g_unix_mount_guess_icon ()

+
GIcon *
+g_unix_mount_guess_icon (GUnixMountEntry *mount_entry);
+

Guesses the icon of a Unix mount.

+
+

Parameters

+
+++++ + + + + + +

mount_entry

a GUnixMountEntry

 
+
+
+

Returns

+

a GIcon.

+

[transfer full]

+
+
+
+
+

g_unix_mount_guess_symbolic_icon ()

+
GIcon *
+g_unix_mount_guess_symbolic_icon (GUnixMountEntry *mount_entry);
+

Guesses the symbolic icon of a Unix mount.

+
+

Parameters

+
+++++ + + + + + +

mount_entry

a GUnixMountEntry

 
+
+
+

Returns

+

a GIcon.

+

[transfer full]

+
+

Since: 2.34

+
+
+
+

g_unix_mount_guess_name ()

+
char *
+g_unix_mount_guess_name (GUnixMountEntry *mount_entry);
+

Guesses the name of a Unix mount. +The result is a translated string.

+
+

Parameters

+
+++++ + + + + + +

mount_entry

a GUnixMountEntry

 
+
+
+

Returns

+

A newly allocated string that must +be freed with g_free()

+
+
+
+
+

g_unix_mount_guess_can_eject ()

+
gboolean
+g_unix_mount_guess_can_eject (GUnixMountEntry *mount_entry);
+

Guesses whether a Unix mount can be ejected.

+
+

Parameters

+
+++++ + + + + + +

mount_entry

a GUnixMountEntry

 
+
+
+

Returns

+

TRUE if mount_entry +is deemed to be ejectable.

+
+
+
+
+

g_unix_mount_guess_should_display ()

+
gboolean
+g_unix_mount_guess_should_display (GUnixMountEntry *mount_entry);
+

Guesses whether a Unix mount should be displayed in the UI.

+
+

Parameters

+
+++++ + + + + + +

mount_entry

a GUnixMountEntry

 
+
+
+

Returns

+

TRUE if mount_entry +is deemed to be displayable.

+
+
+
+
+

g_unix_mount_point_free ()

+
void
+g_unix_mount_point_free (GUnixMountPoint *mount_point);
+

Frees a unix mount point.

+
+

Parameters

+
+++++ + + + + + +

mount_point

unix mount point to free.

 
+
+
+
+
+

g_unix_mount_point_compare ()

+
gint
+g_unix_mount_point_compare (GUnixMountPoint *mount1,
+                            GUnixMountPoint *mount2);
+

Compares two unix mount points.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mount1

a GUnixMount.

 

mount2

a GUnixMount.

 
+
+
+

Returns

+

1, 0 or -1 if mount1 +is greater than, equal to, +or less than mount2 +, respectively.

+
+
+
+
+

g_unix_mount_point_get_mount_path ()

+
const char *
+g_unix_mount_point_get_mount_path (GUnixMountPoint *mount_point);
+

Gets the mount path for a unix mount point.

+
+

Parameters

+
+++++ + + + + + +

mount_point

a GUnixMountPoint.

 
+
+
+

Returns

+

a string containing the mount path.

+
+
+
+
+

g_unix_mount_point_get_device_path ()

+
const char *
+g_unix_mount_point_get_device_path (GUnixMountPoint *mount_point);
+

Gets the device path for a unix mount point.

+
+

Parameters

+
+++++ + + + + + +

mount_point

a GUnixMountPoint.

 
+
+
+

Returns

+

a string containing the device path.

+
+
+
+
+

g_unix_mount_point_get_fs_type ()

+
const char *
+g_unix_mount_point_get_fs_type (GUnixMountPoint *mount_point);
+

Gets the file system type for the mount point.

+
+

Parameters

+
+++++ + + + + + +

mount_point

a GUnixMountPoint.

 
+
+
+

Returns

+

a string containing the file system type.

+
+
+
+
+

g_unix_mount_point_get_options ()

+
const char *
+g_unix_mount_point_get_options (GUnixMountPoint *mount_point);
+

Gets the options for the mount point.

+
+

Parameters

+
+++++ + + + + + +

mount_point

a GUnixMountPoint.

 
+
+
+

Returns

+

a string containing the options.

+
+

Since: 2.32

+
+
+
+

g_unix_mount_point_is_readonly ()

+
gboolean
+g_unix_mount_point_is_readonly (GUnixMountPoint *mount_point);
+

Checks if a unix mount point is read only.

+
+

Parameters

+
+++++ + + + + + +

mount_point

a GUnixMountPoint.

 
+
+
+

Returns

+

TRUE if a mount point is read only.

+
+
+
+
+

g_unix_mount_point_is_user_mountable ()

+
gboolean
+g_unix_mount_point_is_user_mountable (GUnixMountPoint *mount_point);
+

Checks if a unix mount point is mountable by the user.

+
+

Parameters

+
+++++ + + + + + +

mount_point

a GUnixMountPoint.

 
+
+
+

Returns

+

TRUE if the mount point is user mountable.

+
+
+
+
+

g_unix_mount_point_is_loopback ()

+
gboolean
+g_unix_mount_point_is_loopback (GUnixMountPoint *mount_point);
+

Checks if a unix mount point is a loopback device.

+
+

Parameters

+
+++++ + + + + + +

mount_point

a GUnixMountPoint.

 
+
+
+

Returns

+

TRUE if the mount point is a loopback. FALSE otherwise.

+
+
+
+
+

g_unix_mount_point_guess_icon ()

+
GIcon *
+g_unix_mount_point_guess_icon (GUnixMountPoint *mount_point);
+

Guesses the icon of a Unix mount point.

+
+

Parameters

+
+++++ + + + + + +

mount_point

a GUnixMountPoint

 
+
+
+

Returns

+

a GIcon.

+

[transfer full]

+
+
+
+
+

g_unix_mount_point_guess_symbolic_icon ()

+
GIcon *
+g_unix_mount_point_guess_symbolic_icon
+                               (GUnixMountPoint *mount_point);
+

Guesses the symbolic icon of a Unix mount point.

+
+

Parameters

+
+++++ + + + + + +

mount_point

a GUnixMountPoint

 
+
+
+

Returns

+

a GIcon.

+

[transfer full]

+
+

Since: 2.34

+
+
+
+

g_unix_mount_point_guess_name ()

+
char *
+g_unix_mount_point_guess_name (GUnixMountPoint *mount_point);
+

Guesses the name of a Unix mount point. +The result is a translated string.

+
+

Parameters

+
+++++ + + + + + +

mount_point

a GUnixMountPoint

 
+
+
+

Returns

+

A newly allocated string that must +be freed with g_free()

+
+
+
+
+

g_unix_mount_point_guess_can_eject ()

+
gboolean
+g_unix_mount_point_guess_can_eject (GUnixMountPoint *mount_point);
+

Guesses whether a Unix mount point can be ejected.

+
+

Parameters

+
+++++ + + + + + +

mount_point

a GUnixMountPoint

 
+
+
+

Returns

+

TRUE if mount_point +is deemed to be ejectable.

+
+
+
+
+

g_unix_mount_points_get ()

+
GList *
+g_unix_mount_points_get (guint64 *time_read);
+

Gets a GList of GUnixMountPoint containing the unix mount points. +If time_read + is set, it will be filled with the mount timestamp, +allowing for checking if the mounts have changed with +g_unix_mount_points_changed_since().

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

time_read

guint64 to contain a timestamp.

[out][allow-none]
+
+
+

Returns

+

a GList of the UNIX mountpoints.

+

[element-type GUnixMountPoint][transfer full]

+
+
+
+
+

g_unix_mounts_get ()

+
GList *
+g_unix_mounts_get (guint64 *time_read);
+

Gets a GList of GUnixMountEntry containing the unix mounts. +If time_read + is set, it will be filled with the mount +timestamp, allowing for checking if the mounts have changed +with g_unix_mounts_changed_since().

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

time_read

guint64 to contain a timestamp, or NULL.

[out][allow-none]
+
+
+

Returns

+

a GList of the UNIX mounts.

+

[element-type GUnixMountEntry][transfer full]

+
+
+
+
+

g_unix_mount_at ()

+
GUnixMountEntry *
+g_unix_mount_at (const char *mount_path,
+                 guint64 *time_read);
+

Gets a GUnixMountEntry for a given mount path. If time_read + +is set, it will be filled with a unix timestamp for checking +if the mounts have changed since with g_unix_mounts_changed_since().

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mount_path

path for a possible unix mount.

 

time_read

guint64 to contain a timestamp.

[out][allow-none]
+
+
+

Returns

+

a GUnixMountEntry.

+

[transfer full]

+
+
+
+
+

g_unix_mounts_changed_since ()

+
gboolean
+g_unix_mounts_changed_since (guint64 time);
+

Checks if the unix mounts have changed since a given unix time.

+
+

Parameters

+
+++++ + + + + + +

time

guint64 to contain a timestamp.

 
+
+
+

Returns

+

TRUE if the mounts have changed since time +.

+
+
+
+
+

g_unix_mount_points_changed_since ()

+
gboolean
+g_unix_mount_points_changed_since (guint64 time);
+

Checks if the unix mount points have changed since a given unix time.

+
+

Parameters

+
+++++ + + + + + +

time

guint64 to contain a timestamp.

 
+
+
+

Returns

+

TRUE if the mount points have changed since time +.

+
+
+
+
+

g_unix_mount_monitor_get ()

+
GUnixMountMonitor *
+g_unix_mount_monitor_get (void);
+

Gets the GUnixMountMonitor for the current thread-default main +context.

+

The mount monitor can be used to monitor for changes to the list of +mounted filesystems as well as the list of mount points (ie: fstab +entries).

+

You must only call g_object_unref() on the return value from under +the same main context as you called this function.

+
+

Returns

+

the GUnixMountMonitor.

+

[transfer full]

+
+

Since: 2.44

+
+
+
+

g_unix_mount_monitor_new ()

+
GUnixMountMonitor *
+g_unix_mount_monitor_new (void);
+
+

g_unix_mount_monitor_new has been deprecated since version 2.44 and should not be used in newly-written code.

+

Use g_unix_mount_monitor_get() instead.

+
+

Deprecated alias for g_unix_mount_monitor_get().

+

This function was never a true constructor, which is why it was +renamed.

+
+

Returns

+

a GUnixMountMonitor.

+
+
+
+
+

g_unix_mount_monitor_set_rate_limit ()

+
void
+g_unix_mount_monitor_set_rate_limit (GUnixMountMonitor *mount_monitor,
+                                     int limit_msec);
+
+

g_unix_mount_monitor_set_rate_limit has been deprecated since version 2.44 and should not be used in newly-written code.

+

This function does nothing. Don't call it.

+
+

This function does nothing.

+

Before 2.44, this was a partially-effective way of controlling the +rate at which events would be reported under some uncommon +circumstances. Since mount_monitor + is a singleton, it also meant +that calling this function would have side effects for other users of +the monitor.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mount_monitor

a GUnixMountMonitor

 

limit_msec

a integer with the limit in milliseconds to +poll for changes.

 
+
+

Since: 2.18

+
+
+
+

g_unix_is_mount_path_system_internal ()

+
gboolean
+g_unix_is_mount_path_system_internal (const char *mount_path);
+

Determines if mount_path + is considered an implementation of the +OS. This is primarily used for hiding mountable and mounted volumes +that only are used in the OS and has little to no relevance to the +casual user.

+
+

Parameters

+
+++++ + + + + + +

mount_path

a mount path, e.g. /media/disk or /usr

 
+
+
+

Returns

+

TRUE if mount_path +is considered an implementation detail +of the OS.

+
+
+
+
+

Types and Values

+
+

GUnixMountPoint

+
typedef struct _GUnixMountPoint GUnixMountPoint;
+

Defines a Unix mount point (e.g. <filename>/dev</filename>). +This corresponds roughly to a fstab entry.

+
+
+
+

GUnixMountEntry

+
typedef struct _GUnixMountEntry GUnixMountEntry;
+

Defines a Unix mount entry (e.g. <filename>/media/cdrom</filename>). +This corresponds roughly to a mtab entry.

+
+
+
+

GUnixMountMonitor

+
typedef struct _GUnixMountMonitor GUnixMountMonitor;
+

Watches GUnixMounts for changes.

+
+
+
+

Signal Details

+
+

The “mountpoints-changed” signal

+
void
+user_function (GUnixMountMonitor *monitor,
+               gpointer           user_data)
+

Emitted when the unix mount points have changed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

monitor

the object on which the signal is emitted

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+

The “mounts-changed” signal

+
void
+user_function (GUnixMountMonitor *monitor,
+               gpointer           user_data)
+

Emitted when the unix mounts have changed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

monitor

the object on which the signal is emitted

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: Run Last

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-Watching-Bus-Names.html b/docs/reference/gio/html/gio-Watching-Bus-Names.html new file mode 100644 index 0000000..1f8c22f --- /dev/null +++ b/docs/reference/gio/html/gio-Watching-Bus-Names.html @@ -0,0 +1,570 @@ + + + + +Watching Bus Names: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Watching Bus Names

+

Watching Bus Names — Simple API for watching bus names

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +(*GBusNameAppearedCallback) () +
+void + +(*GBusNameVanishedCallback) () +
+guint + +g_bus_watch_name () +
+guint + +g_bus_watch_name_on_connection () +
+void + +g_bus_unwatch_name () +
+guint + +g_bus_watch_name_with_closures () +
+guint + +g_bus_watch_name_on_connection_with_closures () +
+
+
+

Types and Values

+
++++ + + + + +
enumGBusNameWatcherFlags
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Convenience API for watching bus names.

+

A simple example for watching a name can be found in +gdbus-example-watch-name.c

+
+
+

Functions

+
+

GBusNameAppearedCallback ()

+
void
+(*GBusNameAppearedCallback) (GDBusConnection *connection,
+                             const gchar *name,
+                             const gchar *name_owner,
+                             gpointer user_data);
+

Invoked when the name being watched is known to have to have a owner.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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().

 
+
+

Since: 2.26

+
+
+
+

GBusNameVanishedCallback ()

+
void
+(*GBusNameVanishedCallback) (GDBusConnection *connection,
+                             const gchar *name,
+                             gpointer user_data);
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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().

 
+
+

Since: 2.26

+
+
+
+

g_bus_watch_name ()

+
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);
+

Starts watching name + on the bus specified by bus_type + and calls +name_appeared_handler + and name_vanished_handler + when the name is +known to have a owner respectively known to lose its +owner. Callbacks will be invoked in the +thread-default main context +of the thread you are calling this function from.

+

You are guaranteed that one of the handlers will be invoked after +calling this function. When you are done watching the name, just +call g_bus_unwatch_name() with the watcher id this function +returns.

+

If the name vanishes or appears (for example the application owning +the name could restart), the handlers are also invoked. If the +GDBusConnection that is used for watching the name disconnects, then +name_vanished_handler + is invoked since it is no longer +possible to access the name.

+

Another guarantee is that invocations of name_appeared_handler + +and name_vanished_handler + are guaranteed to alternate; that +is, if name_appeared_handler + is invoked then you are +guaranteed that the next time one of the handlers is invoked, it +will be name_vanished_handler +. The reverse is also true.

+

This behavior makes it very simple to write applications that want +to take action when a certain name exists. +Basically, the application should create object proxies in +name_appeared_handler + and destroy them again (if any) in +name_vanished_handler +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

bus_type

The type of bus to watch a name on.

 

name

The name (well-known or unique) to watch.

 

flags

Flags from the GBusNameWatcherFlags enumeration.

 

name_appeared_handler

Handler to invoke when name +is known to exist or NULL.

[allow-none]

name_vanished_handler

Handler to invoke when name +is known to not exist or NULL.

[allow-none]

user_data

User data to pass to handlers.

 

user_data_free_func

Function for freeing user_data +or NULL.

[allow-none]
+
+
+

Returns

+

An identifier (never 0) that an be used with +g_bus_unwatch_name() to stop watching the name.

+
+

Since: 2.26

+
+
+
+

g_bus_watch_name_on_connection ()

+
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);
+

Like g_bus_watch_name() but takes a GDBusConnection instead of a +GBusType.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

A GDBusConnection.

 

name

The name (well-known or unique) to watch.

 

flags

Flags from the GBusNameWatcherFlags enumeration.

 

name_appeared_handler

Handler to invoke when name +is known to exist or NULL.

[allow-none]

name_vanished_handler

Handler to invoke when name +is known to not exist or NULL.

[allow-none]

user_data

User data to pass to handlers.

 

user_data_free_func

Function for freeing user_data +or NULL.

[allow-none]
+
+
+

Returns

+

An identifier (never 0) that an be used with +g_bus_unwatch_name() to stop watching the name.

+
+

Since: 2.26

+
+
+
+

g_bus_unwatch_name ()

+
void
+g_bus_unwatch_name (guint watcher_id);
+

Stops watching a name.

+
+

Parameters

+
+++++ + + + + + +

watcher_id

An identifier obtained from g_bus_watch_name()

 
+
+

Since: 2.26

+
+
+
+

g_bus_watch_name_with_closures ()

+
guint
+g_bus_watch_name_with_closures (GBusType bus_type,
+                                const gchar *name,
+                                GBusNameWatcherFlags flags,
+                                GClosure *name_appeared_closure,
+                                GClosure *name_vanished_closure);
+

Version of g_bus_watch_name() using closures instead of callbacks for +easier binding in other languages.

+

[rename-to g_bus_watch_name]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

bus_type

The type of bus to watch a name on.

 

name

The name (well-known or unique) to watch.

 

flags

Flags from the GBusNameWatcherFlags enumeration.

 

name_appeared_closure

GClosure to invoke when name +is known +to exist or NULL.

[allow-none]

name_vanished_closure

GClosure to invoke when name +is known +to not exist or NULL.

[allow-none]
+
+
+

Returns

+

An identifier (never 0) that an be used with +g_bus_unwatch_name() to stop watching the name.

+
+

Since: 2.26

+
+
+
+

g_bus_watch_name_on_connection_with_closures ()

+
guint
+g_bus_watch_name_on_connection_with_closures
+                               (GDBusConnection *connection,
+                                const gchar *name,
+                                GBusNameWatcherFlags flags,
+                                GClosure *name_appeared_closure,
+                                GClosure *name_vanished_closure);
+

Version of g_bus_watch_name_on_connection() using closures instead of callbacks for +easier binding in other languages.

+

[rename-to g_bus_watch_name_on_connection]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

connection

A GDBusConnection.

 

name

The name (well-known or unique) to watch.

 

flags

Flags from the GBusNameWatcherFlags enumeration.

 

name_appeared_closure

GClosure to invoke when name +is known +to exist or NULL.

[allow-none]

name_vanished_closure

GClosure to invoke when name +is known +to not exist or NULL.

[allow-none]
+
+
+

Returns

+

An identifier (never 0) that an be used with +g_bus_unwatch_name() to stop watching the name.

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

enum GBusNameWatcherFlags

+

Flags used in g_bus_watch_name().

+
+

Members

+
+++++ + + + + + + + + + + + + +

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.

+
 
+
+

Since: 2.26

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-gnetworking.h.html b/docs/reference/gio/html/gio-gnetworking.h.html new file mode 100644 index 0000000..f99e412 --- /dev/null +++ b/docs/reference/gio/html/gio-gnetworking.h.html @@ -0,0 +1,93 @@ + + + + +gnetworking.h: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

gnetworking.h

+

gnetworking.h — System networking includes

+
+
+

Functions

+
++++ + + + + +
+void + +g_networking_init () +
+
+
+

Includes

+
#include <gio/gnetworking.h>
+
+
+
+

Description

+

The <gio/gnetworking.h> header can be included to get +various low-level networking-related system headers, automatically +taking care of certain portability issues for you.

+

This can be used, for example, if you want to call setsockopt() +on a GSocket.

+

Note that while WinSock has many of the same APIs as the +traditional UNIX socket API, most of them behave at least slightly +differently (particularly with respect to error handling). If you +want your code to work under both UNIX and Windows, you will need +to take these differences into account.

+

Also, under GNU libc, certain non-portable functions are only visible +in the headers if you define _GNU_SOURCE before including them. Note +that this symbol must be defined before including any headers, or it +may not take effect.

+
+
+

Functions

+
+

g_networking_init ()

+
void
+g_networking_init (void);
+

Initializes the platform networking libraries (eg, on Windows, this +calls WSAStartup()). GLib will call this itself if it is needed, so +you only need to call it if you directly call system networking +functions (without calling any GLib networking functions first).

+

Since: 2.36

+
+
+
+

Types and Values

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-gpollableutils.html b/docs/reference/gio/html/gio-gpollableutils.html new file mode 100644 index 0000000..b90e1d3 --- /dev/null +++ b/docs/reference/gio/html/gio-gpollableutils.html @@ -0,0 +1,470 @@ + + + + +gpollableutils: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

gpollableutils

+

gpollableutils — Utilities for pollable streams

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +(*GPollableSourceFunc) () +
+GSource * + +g_pollable_source_new () +
+GSource * + +g_pollable_source_new_full () +
+gssize + +g_pollable_stream_read () +
+gssize + +g_pollable_stream_write () +
+gboolean + +g_pollable_stream_write_all () +
+
+
+

Includes

+
#include <gio/gio.h>
+
+
+
+

Description

+

Utility functions for GPollableInputStream and +GPollableOutputStream implementations.

+
+
+

Functions

+
+

GPollableSourceFunc ()

+
gboolean
+(*GPollableSourceFunc) (GObject *pollable_stream,
+                        gpointer user_data);
+

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().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

pollable_stream

the GPollableInputStream or GPollableOutputStream

 

user_data

data passed in by the user.

 
+
+
+

Returns

+

it should return FALSE if the source should be removed.

+
+

Since: 2.28

+
+
+
+

g_pollable_source_new ()

+
GSource *
+g_pollable_source_new (GObject *pollable_stream);
+

Utility method for GPollableInputStream and GPollableOutputStream +implementations. Creates a new GSource that expects a callback of +type GPollableSourceFunc. The new source does not actually do +anything on its own; use g_source_add_child_source() to add other +sources to it to cause it to trigger.

+
+

Parameters

+
+++++ + + + + + +

pollable_stream

the stream associated with the new source

 
+
+
+

Returns

+

the new GSource.

+

[transfer full]

+
+

Since: 2.28

+
+
+
+

g_pollable_source_new_full ()

+
GSource *
+g_pollable_source_new_full (gpointer pollable_stream,
+                            GSource *child_source,
+                            GCancellable *cancellable);
+

Utility method for GPollableInputStream and GPollableOutputStream +implementations. Creates a new GSource, as with +g_pollable_source_new(), but also attaching child_source + (with a +dummy callback), and cancellable +, if they are non-NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

pollable_stream

the stream associated with the +new source.

[type GObject]

child_source

optional child source to attach.

[allow-none]

cancellable

optional GCancellable to attach.

[allow-none]
+
+
+

Returns

+

the new GSource.

+

[transfer full]

+
+

Since: 2.34

+
+
+
+

g_pollable_stream_read ()

+
gssize
+g_pollable_stream_read (GInputStream *stream,
+                        void *buffer,
+                        gsize count,
+                        gboolean blocking,
+                        GCancellable *cancellable,
+                        GError **error);
+

Tries to read from stream +, as with g_input_stream_read() (if +blocking + is TRUE) or g_pollable_input_stream_read_nonblocking() +(if blocking + is FALSE). This can be used to more easily share +code between blocking and non-blocking implementations of a method.

+

If blocking + is FALSE, then stream + must be a +GPollableInputStream for which g_pollable_input_stream_can_poll() +returns TRUE, or else the behavior is undefined. If blocking + is +TRUE, then stream + does not need to be a GPollableInputStream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GInputStream

 

buffer

a buffer to +read data into.

[array length=count][element-type guint8]

count

the number of bytes to read

 

blocking

whether to do blocking I/O

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

the number of bytes read, or -1 on error.

+
+

Since: 2.34

+
+
+
+

g_pollable_stream_write ()

+
gssize
+g_pollable_stream_write (GOutputStream *stream,
+                         const void *buffer,
+                         gsize count,
+                         gboolean blocking,
+                         GCancellable *cancellable,
+                         GError **error);
+

Tries to write to stream +, as with g_output_stream_write() (if +blocking + is TRUE) or g_pollable_output_stream_write_nonblocking() +(if blocking + is FALSE). This can be used to more easily share +code between blocking and non-blocking implementations of a method.

+

If blocking + is FALSE, then stream + must be a +GPollableOutputStream for which +g_pollable_output_stream_can_poll() returns TRUE or else the +behavior is undefined. If blocking + is TRUE, then stream + does not +need to be a GPollableOutputStream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

buffer

the buffer +containing the data to write.

[array length=count][element-type guint8]

count

the number of bytes to write

 

blocking

whether to do blocking I/O

 

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

the number of bytes written, or -1 on error.

+
+

Since: 2.34

+
+
+
+

g_pollable_stream_write_all ()

+
gboolean
+g_pollable_stream_write_all (GOutputStream *stream,
+                             const void *buffer,
+                             gsize count,
+                             gboolean blocking,
+                             gsize *bytes_written,
+                             GCancellable *cancellable,
+                             GError **error);
+

Tries to write count + bytes to stream +, as with +g_output_stream_write_all(), but using g_pollable_stream_write() +rather than g_output_stream_write().

+

On a successful write of count + bytes, TRUE is returned, and +bytes_written + is set to count +.

+

If there is an error during the operation (including +G_IO_ERROR_WOULD_BLOCK in the non-blocking case), FALSE is +returned and error + is set to indicate the error status, +bytes_written + is updated to contain the number of bytes written +into the stream before the error occurred.

+

As with g_pollable_stream_write(), if blocking + is FALSE, then +stream + must be a GPollableOutputStream for which +g_pollable_output_stream_can_poll() returns TRUE or else the +behavior is undefined. If blocking + is TRUE, then stream + does not +need to be a GPollableOutputStream.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

stream

a GOutputStream.

 

buffer

the buffer +containing the data to write.

[array length=count][element-type guint8]

count

the number of bytes to write

 

blocking

whether to do blocking I/O

 

bytes_written

location to store the number of bytes that was +written to the stream.

[out]

cancellable

optional GCancellable object, NULL to ignore.

[allow-none]

error

location to store the error occurring, or NULL to ignore

 
+
+
+

Returns

+

TRUE on success, FALSE if there was an error

+
+

Since: 2.34

+
+
+
+

Types and Values

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-hierarchy.html b/docs/reference/gio/html/gio-hierarchy.html new file mode 100644 index 0000000..d883605 --- /dev/null +++ b/docs/reference/gio/html/gio-hierarchy.html @@ -0,0 +1,190 @@ + + + + +Object Hierarchy: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Object Hierarchy

+
+    GObject
+    ├── GAppInfoMonitor
+    ├── GAppLaunchContext
+    ├── GApplicationCommandLine
+    ├── GApplication
+    ├── GInputStream
+    │   ├── GFilterInputStream
+    │   │   ├── GBufferedInputStream
+    │   │   │   ╰── GDataInputStream
+    │   │   ╰── GConverterInputStream
+    │   ├── GFileInputStream
+    │   ├── GMemoryInputStream
+    │   ╰── GUnixInputStream
+    ├── GOutputStream
+    │   ├── GFilterOutputStream
+    │   │   ├── GBufferedOutputStream
+    │   │   ├── GConverterOutputStream
+    │   │   ╰── GDataOutputStream
+    │   ├── GFileOutputStream
+    │   ├── GMemoryOutputStream
+    │   ╰── GUnixOutputStream
+    ├── GBytesIcon
+    ├── GCancellable
+    ├── GCharsetConverter
+    ├── GCredentials
+    ├── GDBusActionGroup
+    ├── GDBusAuthObserver
+    ├── GDBusConnection
+    ├── GDBusInterfaceSkeleton
+    ├── GMenuModel
+    │   ├── GDBusMenuModel
+    │   ╰── GMenu
+    ├── GDBusMessage
+    ├── GDBusMethodInvocation
+    ├── GDBusObjectManagerClient
+    ├── GDBusObjectManagerServer
+    ├── GDBusObjectProxy
+    ├── GDBusObjectSkeleton
+    ├── GDBusProxy
+    ├── GDBusServer
+    ├── GDesktopAppInfo
+    ├── GEmblem
+    ├── GEmblemedIcon
+    ├── GFileEnumerator
+    ├── GFileIcon
+    ├── GFileInfo
+    ├── GIOStream
+    │   ├── GFileIOStream
+    │   ├── GSimpleIOStream
+    │   ├── GSocketConnection
+    │   │   ├── GTcpConnection
+    │   │   │   ╰── GTcpWrapperConnection
+    │   │   ╰── GUnixConnection
+    │   ╰── GTlsConnection
+    ├── GFileMonitor
+    ├── GFilenameCompleter
+    ├── GInetAddress
+    ├── GInetAddressMask
+    ├── GSocketAddress
+    │   ├── GInetSocketAddress
+    │   │   ╰── GProxyAddress
+    │   ╰── GUnixSocketAddress
+    ├── GTypeModule
+    │   ╰── GIOModule
+    ├── GListStore
+    ├── GMenuAttributeIter
+    ├── GMenuItem
+    ├── GMenuLinkIter
+    ├── GMountOperation
+    ├── GNetworkAddress
+    ├── GNetworkService
+    ├── GNotification
+    ├── GPermission
+    │   ╰── GSimplePermission
+    ├── GPropertyAction
+    ├── GSocketAddressEnumerator
+    │   ╰── GProxyAddressEnumerator
+    ├── GResolver
+    ├── GSettingsBackend
+    ├── GSettings
+    ├── GSimpleAction
+    ├── GSimpleActionGroup
+    ├── GSimpleAsyncResult
+    ├── GSimpleProxyResolver
+    ├── GSocketClient
+    ├── GSocketControlMessage
+    │   ├── GUnixCredentialsMessage
+    │   ╰── GUnixFDMessage
+    ├── GSocket
+    ├── GSocketListener
+    │   ╰── GSocketService
+    │       ╰── GThreadedSocketService
+    ├── GSubprocess
+    ├── GSubprocessLauncher
+    ├── GTask
+    ├── GTestDBus
+    ├── GThemedIcon
+    ├── GTlsCertificate
+    ├── GTlsDatabase
+    ├── GTlsInteraction
+    ├── GTlsPassword
+    ├── GUnixFDList
+    ├── GUnixMountMonitor
+    ├── GVfs
+    ├── GVolumeMonitor
+    ├── GZlibCompressor
+    ╰── GZlibDecompressor
+    GInterface
+    ├── GAction
+    ├── GActionGroup
+    ├── GActionMap
+    ├── GAppInfo
+    ├── GAsyncInitable
+    ├── GAsyncResult
+    ├── GSeekable
+    ├── GIcon
+    ├── GLoadableIcon
+    ├── GConverter
+    ├── GInitable
+    ├── GPollableInputStream
+    ├── GPollableOutputStream
+    ├── GRemoteActionGroup
+    ├── GDBusInterface
+    ├── GDBusObject
+    ├── GDBusObjectManager
+    ├── GDesktopAppInfoLookup
+    ├── GDrive
+    ├── GDtlsClientConnection
+    ├── GDtlsConnection
+    ├── GDatagramBased
+    ├── GDtlsServerConnection
+    ├── GFileDescriptorBased
+    ├── GFile
+    ├── GSocketConnectable
+    ├── GListModel
+    ├── GMount
+    ├── GNetworkMonitor
+    ├── GProxy
+    ├── GProxyResolver
+    ├── GTlsBackend
+    ├── GTlsClientConnection
+    ├── GTlsFileDatabase
+    ├── GTlsServerConnection
+    ╰── GVolume
+    GBoxed
+    ├── GDBusAnnotationInfo
+    ├── GDBusArgInfo
+    ├── GDBusInterfaceInfo
+    ├── GDBusMethodInfo
+    ├── GDBusNodeInfo
+    ├── GDBusPropertyInfo
+    ├── GDBusSignalInfo
+    ├── GFileAttributeInfoList
+    ├── GFileAttributeMatcher
+    ├── GResource
+    ├── GSettingsSchema
+    ├── GSettingsSchemaKey
+    ├── GSettingsSchemaSource
+    ╰── GSrvTarget
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio-querymodules.html b/docs/reference/gio/html/gio-querymodules.html new file mode 100644 index 0000000..de21d9c --- /dev/null +++ b/docs/reference/gio/html/gio-querymodules.html @@ -0,0 +1,52 @@ + + + + +gio-querymodules: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

gio-querymodules

+

gio-querymodules — GIO module cache creation

+
+
+

Synopsis

+

gio-querymodules {DIRECTORY...}

+
+
+

Description

+

gio-querymodules creates a +giomodule.cache file in the listed directories. +This file lists the implemented extension points for each module +that has been found. It is used by GIO at runtime to avoid opening +all modules just to find out which extension points they are implementing. +

+

+GIO modules are usually installed in the gio/modules +subdirectory of libdir. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gio.devhelp2 b/docs/reference/gio/html/gio.devhelp2 new file mode 100644 index 0000000..a9dae78 --- /dev/null +++ b/docs/reference/gio/html/gio.devhelp2 @@ -0,0 +1,3214 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/reference/gio/html/glib-compile-resources.html b/docs/reference/gio/html/glib-compile-resources.html new file mode 100644 index 0000000..bf55f77 --- /dev/null +++ b/docs/reference/gio/html/glib-compile-resources.html @@ -0,0 +1,208 @@ + + + + +glib-compile-resources: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

glib-compile-resources

+

glib-compile-resources — GLib resource compiler

+
+
+

Synopsis

+

glib-compile-resources [OPTION...] {FILE}

+
+
+

Description

+

glib-compile-resources reads the resource description from +FILE and the files that it references +and creates a binary resource bundle that is suitable for use with the +GResource API. +The resulting bundle is then written out as-is, or as C source for linking into +an application. +

+

+The XML resource files normally have the filename extension .gresource.xml. +For a detailed description of the XML file format, see the +GResource documentation. +

+
+
+

Options

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

-h, --help

+Print help and exit +

--target=TARGET

+Store the compiled resources in the file TARGET. +If not specified a filename based on the FILE +basename is used. +

--sourcedir=DIRECTORY

+The files referenced in FILE are loaded from +this directory. If not specified, the current directory is used. +

--generate

+

+Write the output file in the format selected for by its filename extension: +

+
++++ + + + + + + + + + + + + + + +

.c

C source

.h

C header

.gresource

resource bundle

+

+

+

--generate-source

+Instead of a writing the resource bundle in binary form create a C source file +that contains the resource bundle. This can then be compiled into an +application for easy access. +

--generate-header

+Generate a header file for use with C code generated by +--generate-source. +

--generate-dependencies

+

+Prints the list of files that the resource bundle references to standard output. +This can be used to track dependencies in the build system. For example, the +following make rule would mark test.gresource as +depending on all the files that test.gresource.xml +includes, so that is is automatically rebuilt if any of them change: +

+
+test.gresource: test.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --generate-dependencies test.gresource.xml)
+
+

+Note that this may or may not be portable to non-GNU make. +

+

--c-name

+Specify the prefix used for the C identifiers in the code generated by +--generate-source and --generate-header. +

--manual-register

+By default code generated by --generate-source uses automatic +initialization of the resource. This works on most systems by using the +compiler support for constructors. However, some (uncommon) compilers may not +support this, you can then specify --manual-register, +which will generate custom register and unregister functions that your code +can manually call at initialization and uninitialization time. +

--internal

+By default code generated by --generate-source declares all +initialization functions as extern. So they are exported +unless this is prevented by a link script or other means. Since libraries +usually want to use the functions only internally it can be more useful to +declare them as +G_GNUC_INTERNAL +which is what --internal does. +

+
+
+

Environment

+
++++ + + + + + + + + + + +

XMLLINT

+The full path to the xmllint executable. This is used to preprocess resources +with the xml-stripblanks preprocessing option. If this +environment variable is not set, xmllint is searched in the +PATH. +

GDK_PIXBUF_PIXDATA

+The full path to the gdk-pixbuf-pixdata executable. This is used to preprocess +resources with the to-pixdata preprocessing option. If this +environment variable is not set, gdk-pixbuf-pixdata is searched in the +PATH. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/glib-compile-schemas.html b/docs/reference/gio/html/glib-compile-schemas.html new file mode 100644 index 0000000..de7a7d3 --- /dev/null +++ b/docs/reference/gio/html/glib-compile-schemas.html @@ -0,0 +1,117 @@ + + + + +glib-compile-schemas: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

glib-compile-schemas

+

glib-compile-schemas — GSettings schema compiler

+
+
+

Synopsis

+

glib-compile-schemas [OPTION...] {DIRECTORY}

+
+
+

Description

+

glib-compile-schemas compiles all the GSettings XML +schema files in DIRECTORY into a binary file +with the name gschemas.compiled that can be used +by GSettings. The XML schema +files must have the filename extension .gschema.xml. +For a detailed description of the XML file format, see the +GSettings documentation. +

+

+At runtime, GSettings looks for schemas in the +glib-2.0/schemas subdirectories of all directories +specified in the XDG_DATA_DIRS environment variable. The +usual location to install schema files is +/usr/share/glib-2.0/schemas. +

+

+In addition to schema files, glib-compile-schemas reads 'vendor override' +files, which are key files that can override default values for keys in +the schemas. The group names in the key files are the schema id, and the +values are written in serialized GVariant form. +Vendor override files must have the filename extension +.gschema.override. +

+

+By convention, vendor override files begin with nn_ +where nn is a number from 00 to 99. Higher +numbered files have higher priority (eg: if the same override is made in +a file numbered 10 and then again in a file numbered 20, the override +from 20 will take precedence). +

+
+
+

Options

+
++++ + + + + + + + + + + + + + + + + + + + + + + +

-h, --help

+Print help and exit +

--targetdir=TARGET

+Store gschemas.compiled in the TARGET directory instead of DIRECTORY. +

--strict

+Abort on any errors in schemas. Without this option, faulty schema files are +simply omitted from the resulting compiled schema. +

--dry-run

+Don't write gschemas.compiled. This option can be used +to check .gschema.xml sources for errors. +

--allow-any-name

+Do not enforce restrictions on key names. Note that this option is purely +to facility the transition from GConf, and will be removed at some time +in the future. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gresource-tool.html b/docs/reference/gio/html/gresource-tool.html new file mode 100644 index 0000000..7496336 --- /dev/null +++ b/docs/reference/gio/html/gresource-tool.html @@ -0,0 +1,110 @@ + + + + +gresource: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

gresource

+

gresource — GResource tool

+
+
+

Synopsis

+

gresource [--section SECTION] list FILE [PATH]

+

gresource [--section SECTION] details FILE [PATH]

+

gresource [--section SECTION] extract FILE PATH

+

gresource sections FILE

+

gresource help [COMMAND]

+
+
+

Description

+

gresource offers a simple commandline +interface to GResource. +It lets you list and extract resources that have been compiled +into a resource file or included in an elf file (a binary or a +shared library). +

+

+The file to operate on is specified by the FILE +argument. +

+

+If an elf file includes multiple sections with resources, it is +possible to select which one to operate on with the + --section option. Use the + sections command to find available sections. +

+
+
+

Commands

+
++++ + + + + + + + + + + + + + + + + + + + + + + +

list

+Lists resources. If SECTION is given, only +list resourcs in this section. If PATH is +given, only list matching resources. +

details

+Lists resources with details. If SECTION +is given, only list resources in this section. If +PATH is given, only list matching resources. +Details include the section, size and compression of each resource. +

extract

+Extracts the resource named by PATH to stdout. +Note that resources may contain binary data. +

sections

+Lists sections containing resources. This is only interesting if +FILE is an elf file. +

help

+Prints help and exits. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gsettings-tool.html b/docs/reference/gio/html/gsettings-tool.html new file mode 100644 index 0000000..18f2d3a --- /dev/null +++ b/docs/reference/gio/html/gsettings-tool.html @@ -0,0 +1,177 @@ + + + + +gsettings: GIO Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

gsettings

+

gsettings — GSettings configuration tool

+
+
+

Synopsis

+

gsettings get SCHEMA [:PATH] KEY

+

gsettings monitor SCHEMA [:PATH] [KEY]

+

gsettings writable SCHEMA [:PATH] KEY

+

gsettings range SCHEMA [:PATH] KEY

+

gsettings set SCHEMA [:PATH] KEY VALUE

+

gsettings reset SCHEMA [:PATH] KEY

+

gsettings reset-recursively SCHEMA [:PATH]

+

gsettings list-schemas

+

gsettings list-relocatable-schemas

+

gsettings list-keys SCHEMA [:PATH]

+

gsettings list-children SCHEMA [:PATH]

+

gsettings list-recursively [SCHEMA [:PATH]]

+

gsettings help [COMMAND]

+
+
+

Description

+

gsettings offers a simple commandline +interface to GSettings. +It lets you get, set or monitor an individual key for changes. +

+

+The SCHEMA and KEY +arguments are required for most commands to specify the schema id and the +name of the key to operate on. The schema id may optionally have a +:PATH suffix. Specifying the path is only needed +if the schema does not have a fixed path. +

+

+When setting a key, you also need specify a VALUE +The format for the value is that of a serialized +GVariant, +so e.g. a string +must include explicit quotes: "'foo'". This format is also used when printing +out values. +

+

+Note that gsettings needs a D-Bus session bus connection to write changes to +the dconf database. +

+
+
+

Commands

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

get

+Gets the value of KEY. +The value is printed out as a serialised +GVariant. +

monitor

+Monitors KEY for changes and prints the changed +values. If no KEY is specified, all keys in the +schema are monitored. Monitoring will continue until the process is terminated. +

writable

+Finds out whether KEY is writable. +

range

+Queries the range of valid values for KEY. +

set

+Sets the value of KEY to +VALUE. The value is specified as a serialised +GVariant. +

reset

+Resets KEY to its default value. +

reset-recursively

+Reset all keys under the given SCHEMA. +

list-schemas

+Lists the installed, non-relocatable schemas. +See list-relocatable-schemas if you are interested in +relocatable schemas. +

list-relocatable-schemas

+Lists the installed, relocatable schemas. +See list-schemas if you are interested in +non-relocatable schemas. +

list-keys

+Lists the keys in SCHEMA. +

list-children

+Lists the children of SCHEMA. +

list-recursively

+Lists keys and values, recursively. If no SCHEMA +is given, list keys in all schemas. +

help

+Prints help and exits. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/gvfs-overview.png b/docs/reference/gio/html/gvfs-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..628684dc350d2428170e169099263c6fd13ae9f4 GIT binary patch literal 48474 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 + + + +High-level network functionallity: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+High-level network functionallity

+
+
+GSocketClient — Helper for connecting to a network service +
+
+GSocketConnection — A socket connection +
+
+GUnixConnection — A UNIX domain GSocketConnection +
+
+GTcpConnection — A TCP GSocketConnection +
+
+GTcpWrapperConnection — Wrapper for non-GSocketConnection-based, + GSocket-based GIOStreams +
+
+GSocketListener — Helper for accepting network client connections +
+
+GSocketService — Make it easy to implement a network service +
+
+GThreadedSocketService — A threaded GSocketService +
+
+GNetworkMonitor — Network status monitor +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/home.png b/docs/reference/gio/html/home.png new file mode 100644 index 0000000000000000000000000000000000000000..9346b336a784463192c7daab5133a3673dd69845 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefRMbARQqaxysz9Q}BI-m)~Y zggoA|1V*z2{cQ=d;!=?fvu4~`n82RKrk1UubNXTJj1GP|o-=>$A29f{JgJ9K`^t{Q z-oWs>M&_hvT&MjX@T4-&sBW+1^4oB5G4r2q!qGktZ!n*!)hjrjd0_4L6;4%u<}orJ u%Vo~x?#i!!ww+1OGuHe}T=cKQUzn^_t)8|WlnDbmjKR~@&t;ucLK6T + + + +Icons: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Icons

+
+
+GIcon — Interface for icons +
+
+GFileIcon — Icons pointing to an image file +
+
+GBytesIcon — An icon stored in memory as a GBytes +
+
+GLoadableIcon — Loadable Icons +
+
+GThemedIcon — Icon theming support +
+
+GEmblemedIcon — Icon with emblems +
+
+GEmblem — An object for emblems +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/index.html b/docs/reference/gio/html/index.html new file mode 100644 index 0000000..a44f16d --- /dev/null +++ b/docs/reference/gio/html/index.html @@ -0,0 +1,655 @@ + + + + +GIO Reference Manual: GIO Reference Manual + + + + + + + +
+
+
+
+

+ for GIO 2.48.0 + + The latest version of this documentation can be found on-line at + https://developer.gnome.org/gio/unstable/. +

+
+
+
+
+
I. GIO Overview
+
+
Introduction
+
Writing GIO applications
+
Compiling GIO applications
+
Running GIO applications
+
Extending GIO
+
+
II. API Reference
+
+
File Operations
+
+
+GFile — File and Directory Handling +
+
+GFileAttribute — Key-Value Paired File Attributes +
+
+GFileInfo — File Information and Attributes +
+
+GFileEnumerator — Enumerated Files Routines +
+
+GIOError — Error helper functions +
+
+GMountOperation — Object used for authentication and user interaction +
+
+
File System Monitoring
+
+GFileMonitor — File Monitor +
+
File-related Utilities
+
+GFilenameCompleter — Filename Completer +
+
Asynchronous I/O
+
+
+GCancellable — Thread-safe Operation Cancellation Stack +
+
+GAsyncResult — Asynchronous Function Results +
+
+GTask — Cancellable synchronous or asynchronous task + and result +
+
+GIOScheduler — I/O Scheduler +
+
+GSimpleAsyncResult — Simple asynchronous results implementation +
+
+
Data conversion
+
+
+GConverter — Data conversion interface +
+
+GCharsetConverter — Convert between charsets +
+
+GZlibCompressor — Zlib compressor +
+
+GZlibDecompressor — Zlib decompressor +
+
+
Streaming I/O
+
+
+GSeekable — Stream seeking interface +
+
+GInputStream — Base class for implementing streaming input +
+
+GOutputStream — Base class for implementing streaming output +
+
+GIOStream — Base class for implementing read/write streams +
+
+GSimpleIOStream — A wrapper around an input and an output stream. +
+
+GFileInputStream — File input streaming operations +
+
+GFileOutputStream — File output streaming operations +
+
+GFileIOStream — File read and write streaming operations +
+
+GFileDescriptorBased — Interface for file descriptor based IO +
+
+GFilterInputStream — Filter Input Stream +
+
+GFilterOutputStream — Filter Output Stream +
+
+GMemoryInputStream — Streaming input operations on memory chunks +
+
+GMemoryOutputStream — Streaming output operations on memory chunks +
+
+GBufferedInputStream — Buffered Input Stream +
+
+GBufferedOutputStream — Buffered Output Stream +
+
+GDataInputStream — Data Input Stream +
+
+GDataOutputStream — Data Output Stream +
+
+GUnixInputStream — Streaming input operations for UNIX file descriptors +
+
+GUnixOutputStream — Streaming output operations for UNIX file descriptors +
+
+GWin32InputStream — Streaming input operations for Windows file handles +
+
+GWin32OutputStream — Streaming output operations for Windows file handles +
+
+GConverterInputstream — Converter Input Stream +
+
+GConverterOutputstream — Converter Output Stream +
+
+GPollableInputStream — Interface for pollable input streams +
+
+GPollableOutputStream — Interface for pollable output streams +
+
+gpollableutils — Utilities for pollable streams +
+
+
File types and applications
+
+
+GContentType — Platform-specific content typing +
+
+GAppInfo — Application information and launch contexts +
+
+GAppInfoMonitor — Monitor application information for changes +
+
+GDesktopAppInfo — Application information from desktop files +
+
+
Volumes and Drives
+
+
+GVolumeMonitor — Volume Monitor +
+
+GVolume — Volume management +
+
+GMount — Mount management +
+
+GDrive — Drive management +
+
+Unix Mounts — UNIX mounts +
+
+
Icons
+
+
+GIcon — Interface for icons +
+
+GFileIcon — Icons pointing to an image file +
+
+GBytesIcon — An icon stored in memory as a GBytes +
+
+GLoadableIcon — Loadable Icons +
+
+GThemedIcon — Icon theming support +
+
+GEmblemedIcon — Icon with emblems +
+
+GEmblem — An object for emblems +
+
+
Failable Initialization
+
+
+GInitable — Failable object initialization interface +
+
+GAsyncInitable — Asynchronously failable object initialization interface +
+
+
Subprocesses
+
+
+GSubprocess — Child processes +
+
+GSubprocess Launcher — Environment options for launching a child process +
+
+
Low-level network support
+
+
+GSocket — Low-level socket object +
+
+GDatagramBased — Low-level datagram communications interface +
+
+GInetAddress — An IPv4/IPv6 address +
+
+GInetAddressMask — An IPv4/IPv6 address mask +
+
+GSocketAddress — Abstract base class representing endpoints + for socket communication +
+
+GInetSocketAddress — Internet GSocketAddress +
+
+GUnixSocketAddress — UNIX GSocketAddress +
+
+GSocketControlMessage — A GSocket control message +
+
+GUnixFDList — An object containing a set of UNIX file descriptors +
+
+GUnixFDMessage — A GSocketControlMessage containing a GUnixFDList +
+
+GCredentials — An object containing credentials +
+
+GUnixCredentialsMessage — A GSocketControlMessage containing credentials +
+
+GProxy — Interface for proxy handling +
+
+GProxyAddress — An internet address with proxy information +
+
+gnetworking.h — System networking includes +
+
+
High-level network functionallity
+
+
+GSocketClient — Helper for connecting to a network service +
+
+GSocketConnection — A socket connection +
+
+GUnixConnection — A UNIX domain GSocketConnection +
+
+GTcpConnection — A TCP GSocketConnection +
+
+GTcpWrapperConnection — Wrapper for non-GSocketConnection-based, + GSocket-based GIOStreams +
+
+GSocketListener — Helper for accepting network client connections +
+
+GSocketService — Make it easy to implement a network service +
+
+GThreadedSocketService — A threaded GSocketService +
+
+GNetworkMonitor — Network status monitor +
+
+
TLS (SSL) support
+
+
+TLS Overview — TLS (aka SSL) support for GSocketConnection +
+
+GTlsCertificate — TLS certificate +
+
+GTlsConnection — TLS connection type +
+
+GTlsClientConnection — TLS client-side connection +
+
+GTlsServerConnection — TLS server-side connection +
+
+GDtlsConnection — DTLS connection type +
+
+GDtlsClientConnection — DTLS client-side connection +
+
+GDtlsServerConnection — DTLS server-side connection +
+
+GTlsBackend — TLS backend implementation +
+
+GTlsDatabase — TLS database type +
+
+GTlsFileDatabase — TLS file based database type +
+
+GTlsInteraction — Interaction with the user during TLS operations. +
+
+GTlsPassword — TLS Passwords for prompting +
+
+
DNS resolution
+
+
+GResolver — Asynchronous and cancellable DNS resolver +
+
+GProxyResolver — Asynchronous and cancellable network proxy resolver +
+
+GSimpleProxyResolver — Simple proxy resolver implementation +
+
+GSocketConnectable — Interface for potential socket endpoints +
+
+GNetworkAddress — A GSocketConnectable for resolving hostnames +
+
+GNetworkService — A GSocketConnectable for resolving SRV records +
+
+GSrvTarget — DNS SRV record target +
+
+
Low-level D-Bus Support
+
+
+D-Bus Utilities — Various utilities related to D-Bus +
+
+D-Bus Addresses — D-Bus connection endpoints +
+
+D-Bus Introspection Data — Node and interface description data structures +
+
+GDBusError — Mapping D-Bus errors to and from GError +
+
+GDBusMessage — D-Bus Message +
+
+GDBusConnection — D-Bus Connections +
+
+GDBusMethodInvocation — Object for handling remote calls +
+
+GDBusServer — Helper for accepting connections +
+
+GDBusAuthObserver — Object used for authenticating connections +
+
+
High-level D-Bus Support
+
+
+Owning Bus Names — Simple API for owning bus names +
+
+Watching Bus Names — Simple API for watching bus names +
+
+GDBusInterface — Base type for D-Bus interfaces +
+
+GDBusInterfaceSkeleton — Service-side D-Bus interface +
+
+GDBusProxy — Client-side D-Bus interface proxy +
+
+GDBusObject — Base type for D-Bus objects +
+
+GDBusObjectSkeleton — Service-side D-Bus object +
+
+GDBusObjectProxy — Client-side D-Bus object +
+
+GDBusObjectManager — Base type for D-Bus object managers +
+
+GDBusObjectManagerServer — Service-side object manager +
+
+GDBusObjectManagerClient — Client-side object manager +
+
+
Settings
+
+
+GSettings — High-level API for application settings +
+
+GSettingsBackend — Interface for settings backend implementations +
+
+GSettingsSchema, GSettingsSchemaSource — Introspecting and controlling the loading + of GSettings schemas +
+
+
Resources
+
+GResource — Resource framework +
+
Permissions
+
+
+GPermission — An object representing the permission + to perform a certain action +
+
+GSimplePermission — A GPermission that doesn't change value +
+
+
Data Models
+
+
+GListModel — An interface describing a dynamic list of objects +
+
+GListStore — A simple implementation of GListModel +
+
+
Win32 registry support
+
+GWin32RegistryKey — W32 registry access helper +
+
Application support
+
+
+GApplication — Core application class +
+
+GApplicationCommandLine — A command-line invocation of an application +
+
+GActionGroup — A group of actions +
+
+GActionMap — Interface for action containers +
+
+GSimpleActionGroup — A simple GActionGroup implementation +
+
+GAction — An action interface +
+
+GSimpleAction — A simple GAction implementation +
+
+GPropertyAction — A GAction reflecting a GObject property +
+
+GRemoteActionGroup — A GActionGroup that interacts with other processes +
+
+GActionGroup exporter — Export GActionGroups on D-Bus +
+
+GDBusActionGroup — A D-Bus GActionGroup implementation +
+
+GMenuModel — An abstract class representing the contents of a menu +
+
+GMenu — A simple implementation of GMenuModel +
+
+GMenuModel exporter — Export GMenuModels on D-Bus +
+
+GDBusMenuModel — A D-Bus GMenuModel implementation +
+
+GNotification — User Notifications (pop up messages) +
+
+
Extending GIO
+
+
+GVfs — Virtual File System +
+
+GIOModule — Loadable GIO Modules +
+
+Extension Points — Extension Points +
+
+
GIO Tools
+
+
+gio-querymodules — GIO module cache creation +
+
+gsettings — GSettings configuration tool +
+
+glib-compile-schemas — GSettings schema compiler +
+
+glib-compile-resources — GLib resource compiler +
+
+gdbus — Tool for working with D-Bus objects +
+
+gdbus-codegen — D-Bus code and documentation generator +
+
+gresource — GResource tool +
+
+gapplication — D-Bus application launcher +
+
+
GIO Testing
+
+GTestDBus — D-Bus testing helper +
+
+
III. Migrating to GIO
+
+
Migrating from GnomeVFS to GIO
+
+
Trash handling
+
Operations on multiple files
+
Mime monitoring
+
+
Migrating from GConf to GSettings
+
+
Before you start
+
Conceptual differences
+
GConfClient (and GConfBridge) API conversion
+
Change notification
+
Change sets
+
Schema conversion
+
Data conversion
+
+
Migrating to GDBus
+
+
Conceptual differences
+
API comparison
+
Owning bus names
+
Creating proxies for well-known names
+
Using gdbus-codegen
+
+
+
Object Hierarchy
+
Index
+
Index of deprecated symbols
+
Index of new symbols in 2.18
+
Index of new symbols in 2.20
+
Index of new symbols in 2.22
+
Index of new symbols in 2.24
+
Index of new symbols in 2.26
+
Index of new symbols in 2.28
+
Index of new symbols in 2.30
+
Index of new symbols in 2.32
+
Index of new symbols in 2.34
+
Index of new symbols in 2.36
+
Index of new symbols in 2.38
+
Index of new symbols in 2.40
+
Index of new symbols in 2.42
+
Index of new symbols in 2.44
+
Index of new symbols in 2.46
+
Index of new symbols in 2.48
+
Annotation Glossary
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/index.sgml b/docs/reference/gio/html/index.sgml new file mode 100644 index 0000000..01cd860 --- /dev/null +++ b/docs/reference/gio/html/index.sgml @@ -0,0 +1,4612 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/reference/gio/html/left-insensitive.png b/docs/reference/gio/html/left-insensitive.png new file mode 100644 index 0000000000000000000000000000000000000000..3269393a7f72af744a772c437bd7b3976c23709d GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefH0HbvDJm`3=E7Co-U3d7N^fnTIWJ3j{^~q!iyia4kV=mdU|Jhfgdm;SLIpiYJ7wv^kjFiECCc&8T30!RG0~&BG=X zlu#U4@Z`))V`EG9e^NqDr#{!5k|)wT* zYTNt0`@q%TAD$){%#eQ?;$^ly8}yZCU%T~u0XM^%t?f#e znB*EuLv2rP%K3BMvFO}YmnR}KSgH;`EHL$)^!tH~iBxZ#h^zJi*#P5Xb6B50U@nx2 mU;T=yfcwnSOsS9SKd{M#MlNkCuvG>I8-u5-pUXO@geCx5`k@p6 literal 0 HcmV?d00001 diff --git a/docs/reference/gio/html/left.png b/docs/reference/gio/html/left.png new file mode 100644 index 0000000000000000000000000000000000000000..2abde032b0c98b756b12d380da4318205cd78470 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefRMaSLay~*pwMJb7sn8b(^oI8=R24v(*CjE{-BFv z0BhvLm?o9(UC{-Ci?lD?Ve-7-xypA!PTC(0^;>UheG4Altep3@`rO0#Rjs1)RxCLr zE5mee>7m*=%yEk+GVvGkRy0O&*&MTd5SjH(lgq~7r%6oRW$l1p-*S}iC>@fyDsz%y z`UIW8^Ao=maGhj3E8{7Cd_qof`K4oa->23`>&M2+XBtd2J`8jogQu&X%Q~loCIG_? BVG#fT literal 0 HcmV?d00001 diff --git a/docs/reference/gio/html/menu-example.png b/docs/reference/gio/html/menu-example.png new file mode 100644 index 0000000000000000000000000000000000000000..91aeccfd95394d7557b1a45d579e6838586f0a05 GIT binary patch literal 31470 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

9zK@wK`#I_tdPUUnb&B9|~iQV4VerOHj{ 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%0DbDezmqPJ$J^@YF=OY$kGlK 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 literal 0 HcmV?d00001 diff --git a/docs/reference/gio/html/migrating.html b/docs/reference/gio/html/migrating.html new file mode 100644 index 0000000..335faf6 --- /dev/null +++ b/docs/reference/gio/html/migrating.html @@ -0,0 +1,60 @@ + + + + +Part III. Migrating to GIO: GIO Reference Manual + + + + + + + + + + + + + + + + +

+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/networking.html b/docs/reference/gio/html/networking.html new file mode 100644 index 0000000..4d14ad9 --- /dev/null +++ b/docs/reference/gio/html/networking.html @@ -0,0 +1,77 @@ + + + + +Low-level network support: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Low-level network support

+
+
+GSocket — Low-level socket object +
+
+GDatagramBased — Low-level datagram communications interface +
+
+GInetAddress — An IPv4/IPv6 address +
+
+GInetAddressMask — An IPv4/IPv6 address mask +
+
+GSocketAddress — Abstract base class representing endpoints + for socket communication +
+
+GInetSocketAddress — Internet GSocketAddress +
+
+GUnixSocketAddress — UNIX GSocketAddress +
+
+GSocketControlMessage — A GSocket control message +
+
+GUnixFDList — An object containing a set of UNIX file descriptors +
+
+GUnixFDMessage — A GSocketControlMessage containing a GUnixFDList +
+
+GCredentials — An object containing credentials +
+
+GUnixCredentialsMessage — A GSocketControlMessage containing credentials +
+
+GProxy — Interface for proxy handling +
+
+GProxyAddress — An internet address with proxy information +
+
+gnetworking.h — System networking includes +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/permissions.html b/docs/reference/gio/html/permissions.html new file mode 100644 index 0000000..b87bb6e --- /dev/null +++ b/docs/reference/gio/html/permissions.html @@ -0,0 +1,38 @@ + + + + +Permissions: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Permissions

+
+
+GPermission — An object representing the permission + to perform a certain action +
+
+GSimplePermission — A GPermission that doesn't change value +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/pt01.html b/docs/reference/gio/html/pt01.html new file mode 100644 index 0000000..a14adb8 --- /dev/null +++ b/docs/reference/gio/html/pt01.html @@ -0,0 +1,39 @@ + + + + +Part I. GIO Overview: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Part I. GIO Overview

+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/pt02.html b/docs/reference/gio/html/pt02.html new file mode 100644 index 0000000..75b59c1 --- /dev/null +++ b/docs/reference/gio/html/pt02.html @@ -0,0 +1,599 @@ + + + + +Part II. API Reference: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Part II. API Reference

+
+

Table of Contents

+
+
File Operations
+
+
+GFile — File and Directory Handling +
+
+GFileAttribute — Key-Value Paired File Attributes +
+
+GFileInfo — File Information and Attributes +
+
+GFileEnumerator — Enumerated Files Routines +
+
+GIOError — Error helper functions +
+
+GMountOperation — Object used for authentication and user interaction +
+
+
File System Monitoring
+
+GFileMonitor — File Monitor +
+
File-related Utilities
+
+GFilenameCompleter — Filename Completer +
+
Asynchronous I/O
+
+
+GCancellable — Thread-safe Operation Cancellation Stack +
+
+GAsyncResult — Asynchronous Function Results +
+
+GTask — Cancellable synchronous or asynchronous task + and result +
+
+GIOScheduler — I/O Scheduler +
+
+GSimpleAsyncResult — Simple asynchronous results implementation +
+
+
Data conversion
+
+
+GConverter — Data conversion interface +
+
+GCharsetConverter — Convert between charsets +
+
+GZlibCompressor — Zlib compressor +
+
+GZlibDecompressor — Zlib decompressor +
+
+
Streaming I/O
+
+
+GSeekable — Stream seeking interface +
+
+GInputStream — Base class for implementing streaming input +
+
+GOutputStream — Base class for implementing streaming output +
+
+GIOStream — Base class for implementing read/write streams +
+
+GSimpleIOStream — A wrapper around an input and an output stream. +
+
+GFileInputStream — File input streaming operations +
+
+GFileOutputStream — File output streaming operations +
+
+GFileIOStream — File read and write streaming operations +
+
+GFileDescriptorBased — Interface for file descriptor based IO +
+
+GFilterInputStream — Filter Input Stream +
+
+GFilterOutputStream — Filter Output Stream +
+
+GMemoryInputStream — Streaming input operations on memory chunks +
+
+GMemoryOutputStream — Streaming output operations on memory chunks +
+
+GBufferedInputStream — Buffered Input Stream +
+
+GBufferedOutputStream — Buffered Output Stream +
+
+GDataInputStream — Data Input Stream +
+
+GDataOutputStream — Data Output Stream +
+
+GUnixInputStream — Streaming input operations for UNIX file descriptors +
+
+GUnixOutputStream — Streaming output operations for UNIX file descriptors +
+
+GWin32InputStream — Streaming input operations for Windows file handles +
+
+GWin32OutputStream — Streaming output operations for Windows file handles +
+
+GConverterInputstream — Converter Input Stream +
+
+GConverterOutputstream — Converter Output Stream +
+
+GPollableInputStream — Interface for pollable input streams +
+
+GPollableOutputStream — Interface for pollable output streams +
+
+gpollableutils — Utilities for pollable streams +
+
+
File types and applications
+
+
+GContentType — Platform-specific content typing +
+
+GAppInfo — Application information and launch contexts +
+
+GAppInfoMonitor — Monitor application information for changes +
+
+GDesktopAppInfo — Application information from desktop files +
+
+
Volumes and Drives
+
+
+GVolumeMonitor — Volume Monitor +
+
+GVolume — Volume management +
+
+GMount — Mount management +
+
+GDrive — Drive management +
+
+Unix Mounts — UNIX mounts +
+
+
Icons
+
+
+GIcon — Interface for icons +
+
+GFileIcon — Icons pointing to an image file +
+
+GBytesIcon — An icon stored in memory as a GBytes +
+
+GLoadableIcon — Loadable Icons +
+
+GThemedIcon — Icon theming support +
+
+GEmblemedIcon — Icon with emblems +
+
+GEmblem — An object for emblems +
+
+
Failable Initialization
+
+
+GInitable — Failable object initialization interface +
+
+GAsyncInitable — Asynchronously failable object initialization interface +
+
+
Subprocesses
+
+
+GSubprocess — Child processes +
+
+GSubprocess Launcher — Environment options for launching a child process +
+
+
Low-level network support
+
+
+GSocket — Low-level socket object +
+
+GDatagramBased — Low-level datagram communications interface +
+
+GInetAddress — An IPv4/IPv6 address +
+
+GInetAddressMask — An IPv4/IPv6 address mask +
+
+GSocketAddress — Abstract base class representing endpoints + for socket communication +
+
+GInetSocketAddress — Internet GSocketAddress +
+
+GUnixSocketAddress — UNIX GSocketAddress +
+
+GSocketControlMessage — A GSocket control message +
+
+GUnixFDList — An object containing a set of UNIX file descriptors +
+
+GUnixFDMessage — A GSocketControlMessage containing a GUnixFDList +
+
+GCredentials — An object containing credentials +
+
+GUnixCredentialsMessage — A GSocketControlMessage containing credentials +
+
+GProxy — Interface for proxy handling +
+
+GProxyAddress — An internet address with proxy information +
+
+gnetworking.h — System networking includes +
+
+
High-level network functionallity
+
+
+GSocketClient — Helper for connecting to a network service +
+
+GSocketConnection — A socket connection +
+
+GUnixConnection — A UNIX domain GSocketConnection +
+
+GTcpConnection — A TCP GSocketConnection +
+
+GTcpWrapperConnection — Wrapper for non-GSocketConnection-based, + GSocket-based GIOStreams +
+
+GSocketListener — Helper for accepting network client connections +
+
+GSocketService — Make it easy to implement a network service +
+
+GThreadedSocketService — A threaded GSocketService +
+
+GNetworkMonitor — Network status monitor +
+
+
TLS (SSL) support
+
+
+TLS Overview — TLS (aka SSL) support for GSocketConnection +
+
+GTlsCertificate — TLS certificate +
+
+GTlsConnection — TLS connection type +
+
+GTlsClientConnection — TLS client-side connection +
+
+GTlsServerConnection — TLS server-side connection +
+
+GDtlsConnection — DTLS connection type +
+
+GDtlsClientConnection — DTLS client-side connection +
+
+GDtlsServerConnection — DTLS server-side connection +
+
+GTlsBackend — TLS backend implementation +
+
+GTlsDatabase — TLS database type +
+
+GTlsFileDatabase — TLS file based database type +
+
+GTlsInteraction — Interaction with the user during TLS operations. +
+
+GTlsPassword — TLS Passwords for prompting +
+
+
DNS resolution
+
+
+GResolver — Asynchronous and cancellable DNS resolver +
+
+GProxyResolver — Asynchronous and cancellable network proxy resolver +
+
+GSimpleProxyResolver — Simple proxy resolver implementation +
+
+GSocketConnectable — Interface for potential socket endpoints +
+
+GNetworkAddress — A GSocketConnectable for resolving hostnames +
+
+GNetworkService — A GSocketConnectable for resolving SRV records +
+
+GSrvTarget — DNS SRV record target +
+
+
Low-level D-Bus Support
+
+
+D-Bus Utilities — Various utilities related to D-Bus +
+
+D-Bus Addresses — D-Bus connection endpoints +
+
+D-Bus Introspection Data — Node and interface description data structures +
+
+GDBusError — Mapping D-Bus errors to and from GError +
+
+GDBusMessage — D-Bus Message +
+
+GDBusConnection — D-Bus Connections +
+
+GDBusMethodInvocation — Object for handling remote calls +
+
+GDBusServer — Helper for accepting connections +
+
+GDBusAuthObserver — Object used for authenticating connections +
+
+
High-level D-Bus Support
+
+
+Owning Bus Names — Simple API for owning bus names +
+
+Watching Bus Names — Simple API for watching bus names +
+
+GDBusInterface — Base type for D-Bus interfaces +
+
+GDBusInterfaceSkeleton — Service-side D-Bus interface +
+
+GDBusProxy — Client-side D-Bus interface proxy +
+
+GDBusObject — Base type for D-Bus objects +
+
+GDBusObjectSkeleton — Service-side D-Bus object +
+
+GDBusObjectProxy — Client-side D-Bus object +
+
+GDBusObjectManager — Base type for D-Bus object managers +
+
+GDBusObjectManagerServer — Service-side object manager +
+
+GDBusObjectManagerClient — Client-side object manager +
+
+
Settings
+
+
+GSettings — High-level API for application settings +
+
+GSettingsBackend — Interface for settings backend implementations +
+
+GSettingsSchema, GSettingsSchemaSource — Introspecting and controlling the loading + of GSettings schemas +
+
+
Resources
+
+GResource — Resource framework +
+
Permissions
+
+
+GPermission — An object representing the permission + to perform a certain action +
+
+GSimplePermission — A GPermission that doesn't change value +
+
+
Data Models
+
+
+GListModel — An interface describing a dynamic list of objects +
+
+GListStore — A simple implementation of GListModel +
+
+
Win32 registry support
+
+GWin32RegistryKey — W32 registry access helper +
+
Application support
+
+
+GApplication — Core application class +
+
+GApplicationCommandLine — A command-line invocation of an application +
+
+GActionGroup — A group of actions +
+
+GActionMap — Interface for action containers +
+
+GSimpleActionGroup — A simple GActionGroup implementation +
+
+GAction — An action interface +
+
+GSimpleAction — A simple GAction implementation +
+
+GPropertyAction — A GAction reflecting a GObject property +
+
+GRemoteActionGroup — A GActionGroup that interacts with other processes +
+
+GActionGroup exporter — Export GActionGroups on D-Bus +
+
+GDBusActionGroup — A D-Bus GActionGroup implementation +
+
+GMenuModel — An abstract class representing the contents of a menu +
+
+GMenu — A simple implementation of GMenuModel +
+
+GMenuModel exporter — Export GMenuModels on D-Bus +
+
+GDBusMenuModel — A D-Bus GMenuModel implementation +
+
+GNotification — User Notifications (pop up messages) +
+
+
Extending GIO
+
+
+GVfs — Virtual File System +
+
+GIOModule — Loadable GIO Modules +
+
+Extension Points — Extension Points +
+
+
GIO Tools
+
+
+gio-querymodules — GIO module cache creation +
+
+gsettings — GSettings configuration tool +
+
+glib-compile-schemas — GSettings schema compiler +
+
+glib-compile-resources — GLib resource compiler +
+
+gdbus — Tool for working with D-Bus objects +
+
+gdbus-codegen — D-Bus code and documentation generator +
+
+gresource — GResource tool +
+
+gapplication — D-Bus application launcher +
+
+
GIO Testing
+
+GTestDBus — D-Bus testing helper +
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/registry.html b/docs/reference/gio/html/registry.html new file mode 100644 index 0000000..7af0ae8 --- /dev/null +++ b/docs/reference/gio/html/registry.html @@ -0,0 +1,32 @@ + + + + +Win32 registry support: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Win32 registry support

+
+GWin32RegistryKey — W32 registry access helper +
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/resolver.html b/docs/reference/gio/html/resolver.html new file mode 100644 index 0000000..d4bf0b4 --- /dev/null +++ b/docs/reference/gio/html/resolver.html @@ -0,0 +1,52 @@ + + + + +DNS resolution: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+DNS resolution

+
+
+GResolver — Asynchronous and cancellable DNS resolver +
+
+GProxyResolver — Asynchronous and cancellable network proxy resolver +
+
+GSimpleProxyResolver — Simple proxy resolver implementation +
+
+GSocketConnectable — Interface for potential socket endpoints +
+
+GNetworkAddress — A GSocketConnectable for resolving hostnames +
+
+GNetworkService — A GSocketConnectable for resolving SRV records +
+
+GSrvTarget — DNS SRV record target +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/resources.html b/docs/reference/gio/html/resources.html new file mode 100644 index 0000000..9451ed9 --- /dev/null +++ b/docs/reference/gio/html/resources.html @@ -0,0 +1,32 @@ + + + + +Resources: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Resources

+
+GResource — Resource framework +
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/right-insensitive.png b/docs/reference/gio/html/right-insensitive.png new file mode 100644 index 0000000000000000000000000000000000000000..4c95785b907b978f36674cd98bf5302669c15c1b GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefG`u!(zUX23=E7+o-U3d7N^fn+URvSL8NuRG*{E) z?#-+97X-^pidQ*u@StO1(S@7g8g>nnA24$?ty?)cmuaa|Y>ez2*_Ia?6HP4j{3LIs zTr!s1ao_Sz^~3e4zRJGAjKZGn=XP#)Wmuo-QN>teTzzI!&R*jMI^Oa#7_ukLYdicf zOx;1mb-rt04s-c|uIH8fnX}$)XJa^0_-F3(pA%=sGI<|(n_*&=yYt96+n5InXn_GN+EraJI9q(O+n{6MQKErp&KxRvpfn0xh z`sSMqH(2Z%?kaFBTf06W^y=UDA9gR9YrwNS*1pjB((0K%&+SbAx3`XA&dKZ}j*nX7 QfdRze>FVdQ&MBb@09|aA9{>OV literal 0 HcmV?d00001 diff --git a/docs/reference/gio/html/right.png b/docs/reference/gio/html/right.png new file mode 100644 index 0000000000000000000000000000000000000000..76260ec8865f4e13cd269ec62eccd78a33adba3c GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefRMbR+#PqI2*V^#7sn8b(^oI8=W9$9IsUQVezxzH zy`G{eu0`y#boSlU-NAlQG~=D)BPJG4k(^0qdDa(AdQvI0d|vJT=i7_<_D6`Cy?Dm; zP0@1EeB~D|O$oQe*sxL-P;q{2UCr}fN-o#M~tpZzsGyfNz46SZlIJCbKH zZQscEqpOfBCPDgx + + + +Running GIO applications: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Running GIO applications

+

+ GIO inspects a few of environment variables in addition to the + ones used by GLib. +

+

XDG_DATA_HOME, XDG_DATA_DIRS.  + GIO uses these environment variables to locate MIME information. + For more information, see the Shared MIME-info Database + and the Base Directory Specification. +

+

GVFS_DISABLE_FUSE.  + This variable can be set to keep Gvfs from starting the fuse backend, + which may be unwanted or unnecessary in certain situations. +

+

+ The following environment variables are only useful for debugging + GIO itself or modules that it loads. They should not be set in a + production environment. +

+

GIO_USE_VFS.  + This environment variable can be set to the name of a GVfs + implementation to override the default for debugging purposes. + The GVfs implementation for local files that is included in GIO + has the name "local", the implementation in the gvfs module has + the name "gvfs". +

+

GIO_USE_FILE_MONITOR.  + This variable can be set to the name of a GFileMonitor + implementation to override the default for debugging purposes. + The GFileMonitor implementation for local files that is included + in GIO on Linux has the name "inotify", others that are built + are built as modules (depending on the platform) are called + "fam" and "fen". +

+

GIO_USE_VOLUME_MONITOR.  + This variable can be set to the name of a GVolumeMonitor + implementation to override the default for debugging purposes. + The GVolumeMonitor implementation for local files that is included + in GIO has the name "unix", the hal-based implementation in the + gvfs module has the name "hal". +

+

GIO_USE_TLS.  + This variable can be set to the name of a GTlsBackend + implementation to override the default for debugging purposes. + GIO does not include a GTlsBackend implementation, the gnutls-based + implementation in the glib-networking module has the name "gnutls". +

+

GIO_MODULE_DIR.  + When this environment variable is set to a path, GIO will load + modules from this alternate directory instead of the directory + built into GIO. This is useful when running tests, for example. +

+

GIO_EXTRA_MODULES.  + When this environment variable is set to a path, or a set of + paths separated by a colon, GIO will attempt to load + additional modules from within the path. +

+

GSETTINGS_BACKEND.  + This variable can be set to the name of a GSettingsBackend + implementation to override the default for debugging purposes. + The memory-based implementation that is included in GIO has + the name "memory", the one in dconf has the name "dconf-settings". +

+

GSETTINGS_SCHEMA_DIR.  + This variable can be set to the name of a directory that is + considered in addition to the glib-2.0/schemas + subdirectories of the XDG system data dirs when looking + for compiled schemas for GSettings. +

+

DBUS_SYSTEM_BUS_ADDRESS.  + This variable is consulted to find the address of the D-Bus system + bus. For the format of D-Bus addresses, see the D-Bus + specification. + + Setting this variable overrides platform-specific ways of determining + the system bus address. +

+

DBUS_SESSION_BUS_ADDRESS.  + This variable is consulted to find the address of the D-Bus session bus. + + Setting this variable overrides platform-specific ways of determining + the session bus address. +

+

DBUS_STARTER_BUS_TYPE.  + This variable is consulted to find out the 'starter' bus for an + application that has been started via D-Bus activation. The possible + values are 'system' or 'session'. +

+

G_DBUS_DEBUG.  + This variable can be set to a list of debug options, which + cause GLib to print out different types of debugging + information when using the D-Bus routines. +

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

transport

Show IO activity (e.g. reads and writes)

message

Show all sent and received D-Bus messages

payload

Show payload for all sent and received D-Bus messages (implies message)

call

Trace g_dbus_connection_call() and g_dbus_connection_call_sync() API usage

signal

Show when a D-Bus signal is received

incoming

Show when an incoming D-Bus method call is received

return

Show when a reply is returned via the GDBusMethodInvocation API

emission

Trace g_dbus_connection_emit_signal() API usage

authentication

Show information about connection authentication

address

Show information about D-Bus address lookups and autolaunching

+

+ The special value all can be used to turn + on all debug options. The special value + help can be used to print a list of + supported options to standard output. +

+

G_DBUS_COOKIE_SHA1_KEYRING_DIR.  + Can be used to override the directory used to store the + keyring used in the DBUS_COOKIE_SHA1 + authentication mechanism. Normally the directory used is + .dbus-keyrings in the user's home + directory. +

+

G_DBUS_COOKIE_SHA1_KEYRING_DIR_IGNORE_PERMISSION.  + If set, the permissions of the directory used to store the + keyring used in the DBUS_COOKIE_SHA1 + authentication mechanism won't be checked. Normally the + directory must be readable only by the user. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/settings.html b/docs/reference/gio/html/settings.html new file mode 100644 index 0000000..235643c --- /dev/null +++ b/docs/reference/gio/html/settings.html @@ -0,0 +1,41 @@ + + + + +Settings: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Settings

+
+
+GSettings — High-level API for application settings +
+
+GSettingsBackend — Interface for settings backend implementations +
+
+GSettingsSchema, GSettingsSchemaSource — Introspecting and controlling the loading + of GSettings schemas +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/streaming.html b/docs/reference/gio/html/streaming.html new file mode 100644 index 0000000..568f473 --- /dev/null +++ b/docs/reference/gio/html/streaming.html @@ -0,0 +1,109 @@ + + + + +Streaming I/O: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Streaming I/O

+
+
+GSeekable — Stream seeking interface +
+
+GInputStream — Base class for implementing streaming input +
+
+GOutputStream — Base class for implementing streaming output +
+
+GIOStream — Base class for implementing read/write streams +
+
+GSimpleIOStream — A wrapper around an input and an output stream. +
+
+GFileInputStream — File input streaming operations +
+
+GFileOutputStream — File output streaming operations +
+
+GFileIOStream — File read and write streaming operations +
+
+GFileDescriptorBased — Interface for file descriptor based IO +
+
+GFilterInputStream — Filter Input Stream +
+
+GFilterOutputStream — Filter Output Stream +
+
+GMemoryInputStream — Streaming input operations on memory chunks +
+
+GMemoryOutputStream — Streaming output operations on memory chunks +
+
+GBufferedInputStream — Buffered Input Stream +
+
+GBufferedOutputStream — Buffered Output Stream +
+
+GDataInputStream — Data Input Stream +
+
+GDataOutputStream — Data Output Stream +
+
+GUnixInputStream — Streaming input operations for UNIX file descriptors +
+
+GUnixOutputStream — Streaming output operations for UNIX file descriptors +
+
+GWin32InputStream — Streaming input operations for Windows file handles +
+
+GWin32OutputStream — Streaming output operations for Windows file handles +
+
+GConverterInputstream — Converter Input Stream +
+
+GConverterOutputstream — Converter Output Stream +
+
+GPollableInputStream — Interface for pollable input streams +
+
+GPollableOutputStream — Interface for pollable output streams +
+
+gpollableutils — Utilities for pollable streams +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/style.css b/docs/reference/gio/html/style.css new file mode 100644 index 0000000..3675420 --- /dev/null +++ b/docs/reference/gio/html/style.css @@ -0,0 +1,479 @@ +body +{ + font-family: cantarell, sans-serif; +} +.synopsis, .classsynopsis +{ + /* tango:aluminium 1/2 */ + background: #eeeeec; + background: rgba(238, 238, 236, 0.5); + border: solid 1px rgb(238, 238, 236); + padding: 0.5em; +} +.programlisting +{ + /* tango:sky blue 0/1 */ + /* fallback for no rgba support */ + background: #e6f3ff; + border: solid 1px #729fcf; + background: rgba(114, 159, 207, 0.1); + border: solid 1px rgba(114, 159, 207, 0.2); + padding: 0.5em; +} +.variablelist +{ + padding: 4px; + margin-left: 3em; +} +.variablelist td:first-child +{ + vertical-align: top; +} + +div.gallery-float +{ + float: left; + padding: 10px; +} +div.gallery-float img +{ + border-style: none; +} +div.gallery-spacer +{ + clear: both; +} + +a, a:visited +{ + text-decoration: none; + /* tango:sky blue 2 */ + color: #3465a4; +} +a:hover +{ + text-decoration: underline; + /* tango:sky blue 1 */ + color: #729fcf; +} + +div.informaltable table +{ + border-collapse: separate; + border-spacing: 1em 0.3em; + border: none; +} + +div.informaltable table td, div.informaltable table th +{ + vertical-align: top; +} + +.function_type, +.variable_type, +.property_type, +.signal_type, +.parameter_name, +.struct_member_name, +.union_member_name, +.define_keyword, +.datatype_keyword, +.typedef_keyword +{ + text-align: right; +} + +/* dim non-primary columns */ +.c_punctuation, +.function_type, +.variable_type, +.property_type, +.signal_type, +.define_keyword, +.datatype_keyword, +.typedef_keyword, +.property_flags, +.signal_flags, +.parameter_annotations, +.enum_member_annotations, +.struct_member_annotations, +.union_member_annotations +{ + color: #888a85; +} + +.function_type a, +.function_type a:visited, +.function_type a:hover, +.property_type a, +.property_type a:visited, +.property_type a:hover, +.signal_type a, +.signal_type a:visited, +.signal_type a:hover, +.signal_flags a, +.signal_flags a:visited, +.signal_flags a:hover +{ + color: #729fcf; +} + +td p +{ + margin: 0.25em; +} + +div.table table +{ + border-collapse: collapse; + border-spacing: 0px; + /* tango:aluminium 3 */ + border: solid 1px #babdb6; +} + +div.table table td, div.table table th +{ + /* tango:aluminium 3 */ + border: solid 1px #babdb6; + padding: 3px; + vertical-align: top; +} + +div.table table th +{ + /* tango:aluminium 2 */ + background-color: #d3d7cf; +} + +h4 +{ + color: #555753; + margin-top: 1em; + margin-bottom: 1em; +} + +hr +{ + /* tango:aluminium 1 */ + color: #d3d7cf; + background: #d3d7cf; + border: none 0px; + height: 1px; + clear: both; + margin: 2.0em 0em 2.0em 0em; +} + +dl.toc dt +{ + padding-bottom: 0.25em; +} + +dl.toc > dt +{ + padding-top: 0.25em; + padding-bottom: 0.25em; + font-weight: bold; +} + +dl.toc > dl +{ + padding-bottom: 0.5em; +} + +.parameter +{ + font-style: normal; +} + +.footer +{ + padding-top: 3.5em; + /* tango:aluminium 3 */ + color: #babdb6; + text-align: center; + font-size: 80%; +} + +.informalfigure, +.figure +{ + margin: 1em; +} + +.informalexample, +.example +{ + margin-top: 1em; + margin-bottom: 1em; +} + +.warning +{ + /* tango:orange 0/1 */ + background: #ffeed9; + background: rgba(252, 175, 62, 0.1); + border-color: #ffb04f; + border-color: rgba(252, 175, 62, 0.2); +} +.note +{ + /* tango:chameleon 0/0.5 */ + background: #d8ffb2; + background: rgba(138, 226, 52, 0.1); + border-color: #abf562; + border-color: rgba(138, 226, 52, 0.2); +} +div.blockquote +{ + border-color: #eeeeec; +} +.note, .warning, div.blockquote +{ + padding: 0.5em; + border-width: 1px; + border-style: solid; + margin: 2em; +} +.note p, .warning p +{ + margin: 0; +} + +div.warning h3.title, +div.note h3.title +{ + display: none; +} + +p + div.section +{ + margin-top: 1em; +} + +div.refnamediv, +div.refsynopsisdiv, +div.refsect1, +div.refsect2, +div.toc, +div.section +{ + margin-bottom: 1em; +} + +/* blob links */ +h2 .extralinks, h3 .extralinks +{ + float: right; + /* tango:aluminium 3 */ + color: #babdb6; + font-size: 80%; + font-weight: normal; +} + +.lineart +{ + color: #d3d7cf; + font-weight: normal; +} + +.annotation +{ + /* tango:aluminium 5 */ + color: #555753; + font-weight: normal; +} + +.structfield +{ + font-style: normal; + font-weight: normal; +} + +acronym,abbr +{ + border-bottom: 1px dotted gray; +} + +/* code listings */ + +.listing_code .programlisting .normal, +.listing_code .programlisting .normal a, +.listing_code .programlisting .number, +.listing_code .programlisting .cbracket, +.listing_code .programlisting .symbol { color: #555753; } +.listing_code .programlisting .comment, +.listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ +.listing_code .programlisting .function, +.listing_code .programlisting .function a, +.listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ +.listing_code .programlisting .string { color: #ad7fa8; } /* tango: plum */ +.listing_code .programlisting .keyword, +.listing_code .programlisting .usertype, +.listing_code .programlisting .type, +.listing_code .programlisting .type a { color: #4e9a06; } /* tango: chameleon 3 */ + +.listing_frame { + /* tango:sky blue 1 */ + border: solid 1px #729fcf; + border: solid 1px rgba(114, 159, 207, 0.2); + padding: 0px; +} + +.listing_lines, .listing_code { + margin-top: 0px; + margin-bottom: 0px; + padding: 0.5em; +} +.listing_lines { + /* tango:sky blue 0.5 */ + background: #a6c5e3; + background: rgba(114, 159, 207, 0.2); + /* tango:aluminium 6 */ + color: #2e3436; +} +.listing_code { + /* tango:sky blue 0 */ + background: #e6f3ff; + background: rgba(114, 159, 207, 0.1); +} +.listing_code .programlisting { + /* override from previous */ + border: none 0px; + padding: 0px; + background: none; +} +.listing_lines pre, .listing_code pre { + margin: 0px; +} + +@media screen { + /* these have a as a first child, but since there are no parent selectors + * we can't use that. */ + a.footnote + { + position: relative; + top: 0em ! important; + } + /* this is needed so that the local anchors are displayed below the naviagtion */ + div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] + { + display: inline-block; + position: relative; + top:-5em; + } + /* this seems to be a bug in the xsl style sheets when generating indexes */ + div.index div.index + { + top: 0em; + } + /* make space for the fixed navigation bar and add space at the bottom so that + * link targets appear somewhat close to top + */ + body + { + padding-top: 2.5em; + padding-bottom: 500px; + max-width: 60em; + } + p + { + max-width: 60em; + } + /* style and size the navigation bar */ + table.navigation#top + { + position: fixed; + background: #e2e2e2; + border-bottom: solid 1px #babdb6; + border-spacing: 5px; + margin-top: 0; + margin-bottom: 0; + top: 0; + left: 0; + z-index: 10; + } + table.navigation#top td + { + padding-left: 6px; + padding-right: 6px; + } + .navigation a, .navigation a:visited + { + /* tango:sky blue 3 */ + color: #204a87; + } + .navigation a:hover + { + /* tango:sky blue 2 */ + color: #3465a4; + } + td.shortcuts + { + /* tango:sky blue 2 */ + color: #3465a4; + font-size: 80%; + white-space: nowrap; + } + td.shortcuts .dim + { + color: #babdb6; + } + .navigation .title + { + font-size: 80%; + max-width: none; + margin: 0px; + font-weight: normal; + } +} +@media screen and (min-width: 60em) { + /* screen larger than 60em */ + body { margin: auto; } +} +@media screen and (max-width: 60em) { + /* screen less than 60em */ + #nav_hierarchy { display: none; } + #nav_interfaces { display: none; } + #nav_prerequisites { display: none; } + #nav_derived_interfaces { display: none; } + #nav_implementations { display: none; } + #nav_child_properties { display: none; } + #nav_style_properties { display: none; } + #nav_index { display: none; } + #nav_glossary { display: none; } + .gallery_image { display: none; } + .property_flags { display: none; } + .signal_flags { display: none; } + .parameter_annotations { display: none; } + .enum_member_annotations { display: none; } + .struct_member_annotations { display: none; } + .union_member_annotations { display: none; } + /* now that a column is hidden, optimize space */ + col.parameters_name { width: auto; } + col.parameters_description { width: auto; } + col.struct_members_name { width: auto; } + col.struct_members_description { width: auto; } + col.enum_members_name { width: auto; } + col.enum_members_description { width: auto; } + col.union_members_name { width: auto; } + col.union_members_description { width: auto; } + .listing_lines { display: none; } +} +@media print { + table.navigation { + visibility: collapse; + display: none; + } + div.titlepage table.navigation { + visibility: visible; + display: table; + background: #e2e2e2; + border: solid 1px #babdb6; + margin-top: 0; + margin-bottom: 0; + top: 0; + left: 0; + height: 3em; + } +} + diff --git a/docs/reference/gio/html/subprocesses.html b/docs/reference/gio/html/subprocesses.html new file mode 100644 index 0000000..dec25ed --- /dev/null +++ b/docs/reference/gio/html/subprocesses.html @@ -0,0 +1,37 @@ + + + + +Subprocesses: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Subprocesses

+
+
+GSubprocess — Child processes +
+
+GSubprocess Launcher — Environment options for launching a child process +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/testing.html b/docs/reference/gio/html/testing.html new file mode 100644 index 0000000..dc06663 --- /dev/null +++ b/docs/reference/gio/html/testing.html @@ -0,0 +1,32 @@ + + + + +GIO Testing: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+GIO Testing

+
+GTestDBus — D-Bus testing helper +
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/tls.html b/docs/reference/gio/html/tls.html new file mode 100644 index 0000000..d3eec5d --- /dev/null +++ b/docs/reference/gio/html/tls.html @@ -0,0 +1,70 @@ + + + + +TLS (SSL) support: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+TLS (SSL) support

+
+
+TLS Overview — TLS (aka SSL) support for GSocketConnection +
+
+GTlsCertificate — TLS certificate +
+
+GTlsConnection — TLS connection type +
+
+GTlsClientConnection — TLS client-side connection +
+
+GTlsServerConnection — TLS server-side connection +
+
+GDtlsConnection — DTLS connection type +
+
+GDtlsClientConnection — DTLS client-side connection +
+
+GDtlsServerConnection — DTLS server-side connection +
+
+GTlsBackend — TLS backend implementation +
+
+GTlsDatabase — TLS database type +
+
+GTlsFileDatabase — TLS file based database type +
+
+GTlsInteraction — Interaction with the user during TLS operations. +
+
+GTlsPassword — TLS Passwords for prompting +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/tools.html b/docs/reference/gio/html/tools.html new file mode 100644 index 0000000..b3d9bfc --- /dev/null +++ b/docs/reference/gio/html/tools.html @@ -0,0 +1,55 @@ + + + + +GIO Tools: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+GIO Tools

+
+
+gio-querymodules — GIO module cache creation +
+
+gsettings — GSettings configuration tool +
+
+glib-compile-schemas — GSettings schema compiler +
+
+glib-compile-resources — GLib resource compiler +
+
+gdbus — Tool for working with D-Bus objects +
+
+gdbus-codegen — D-Bus code and documentation generator +
+
+gresource — GResource tool +
+
+gapplication — D-Bus application launcher +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/types.html b/docs/reference/gio/html/types.html new file mode 100644 index 0000000..1df44bd --- /dev/null +++ b/docs/reference/gio/html/types.html @@ -0,0 +1,43 @@ + + + + +File types and applications: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+File types and applications

+
+
+GContentType — Platform-specific content typing +
+
+GAppInfo — Application information and launch contexts +
+
+GAppInfoMonitor — Monitor application information for changes +
+
+GDesktopAppInfo — Application information from desktop files +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/up-insensitive.png b/docs/reference/gio/html/up-insensitive.png new file mode 100644 index 0000000000000000000000000000000000000000..f40498606db349a7321cf6b470523e836ee7ac2e GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefG~@Ex#w@70gTL^E{-7zACwHGSRJaopUzr*FR_KPpkxheNzTDP+%{a~ox zRb6~e-_l%s#;V|Jw-)bO$G_X=4F`Y7SBoCzyjAZQ8BPW>ywAP8?pbBsZ|wt?+h6S6&uqY)kkMnwQQEd@7k`4t@sCCO z@7MoiEI4Q_#IB70vhu7Ab+>SXLxu@LWH Qzz|~aboFyt=akR{08E^fv;Y7A literal 0 HcmV?d00001 diff --git a/docs/reference/gio/html/up.png b/docs/reference/gio/html/up.png new file mode 100644 index 0000000000000000000000000000000000000000..80b4b37e997d69b2e128bc3090bc447ccb74bbe9 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefRFevZLys@4W>+6GUE!tU04Ii{0w_tkMIDB?rA5 zttYTN + + + +File-related Utilities: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+File-related Utilities

+
+GFilenameCompleter — Filename Completer +
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/html/volume_mon.html b/docs/reference/gio/html/volume_mon.html new file mode 100644 index 0000000..89c21bb --- /dev/null +++ b/docs/reference/gio/html/volume_mon.html @@ -0,0 +1,46 @@ + + + + +Volumes and Drives: GIO Reference Manual + + + + + + + + + + + + + + + + +
+

+Volumes and Drives

+
+
+GVolumeMonitor — Volume Monitor +
+
+GVolume — Volume management +
+
+GMount — Mount management +
+
+GDrive — Drive management +
+
+Unix Mounts — UNIX mounts +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gio/migrating-gdbus.xml b/docs/reference/gio/migrating-gdbus.xml index 423ad16..bda3f76 100644 --- a/docs/reference/gio/migrating-gdbus.xml +++ b/docs/reference/gio/migrating-gdbus.xml @@ -241,9 +241,6 @@ on_name_acquired (GDBusConnection *connection,
-
- Generating code and docs -
Using gdbus-codegen @@ -254,7 +251,7 @@ on_name_acquired (GDBusConnection *connection, linkend="gdbus-codegen">gdbus-codegen is used and like its counterpart, it also takes D-Bus Introspection XML as input: - Example D-Bus Introspection XMLFIXME: MISSING XINCLUDE CONTENT + Example D-Bus Introspection XMLFIXME: MISSING XINCLUDE CONTENT If this XML is processed like this generated-docs-org.gtk.GDBus.Example.ObjectManager.Animal and generated-docs-org.gtk.GDBus.Example.ObjectManager.Cat - with Docbook XML are generated. For an example of what the docs look - like see the Animal D-Bus interface documentation. - and - the Cat D-Bus interface documentation. + with Docbook XML are generated. While the contents of generated-code.h and @@ -284,26 +276,9 @@ gdbus-codegen --interface-prefix org.gtk.GDBus.Example.ObjectManager. \ linkend="gdbus-codegen">gdbus-codegen manual page, brief examples of how this generated code can be used can be found in - and . Additionally, since - the generated code has 100% gtk-doc coverage, see - #ExampleAnimal, #ExampleCat, #ExampleObject and - #ExampleObjectManagerClient pages for documentation. + and . - Server-side application using generated codeFIXME: MISSING XINCLUDE CONTENT - - Client-side application using generated codeFIXME: MISSING XINCLUDE CONTENT - -
- - - - - - - -
diff --git a/docs/reference/gio/version.xml b/docs/reference/gio/version.xml new file mode 100644 index 0000000..9a9feb0 --- /dev/null +++ b/docs/reference/gio/version.xml @@ -0,0 +1 @@ +2.48.0 diff --git a/docs/reference/glib/Makefile.am b/docs/reference/glib/Makefile.am index 67de7fe..8dbb069 100644 --- a/docs/reference/glib/Makefile.am +++ b/docs/reference/glib/Makefile.am @@ -9,7 +9,9 @@ DOC_MODULE=glib DOC_MAIN_SGML_FILE=glib-docs.xml # The directory containing the source code. Relative to $(srcdir) -DOC_SOURCE_DIR=$(top_srcdir)/glib $(top_srcdir)/gmodule +DOC_SOURCE_DIR = \ + $(top_srcdir)/glib $(top_srcdir)/gmodule \ + $(top_builddir)/glib $(top_builddir)/gmodule # Extra options to supply to gtkdoc-scan SCAN_OPTIONS=--deprecated-guards="G_DISABLE_DEPRECATED" --ignore-decorators="GLIB_VAR|G_GNUC_WARN_UNUSED_RESULT" @@ -18,8 +20,11 @@ SCAN_OPTIONS=--deprecated-guards="G_DISABLE_DEPRECATED" --ignore-decorators="GLI MKDB_OPTIONS=--output-format=xml --name-space=g # Used for dependencies -HFILE_GLOB=$(top_srcdir)/glib/*.h $(top_srcdir)/gmodule/*.h -CFILE_GLOB=$(top_srcdir)/glib/*.c $(top_srcdir)/gmodule/*.c +HFILE_GLOB = \ + $(top_srcdir)/glib/*.h \ + $(top_srcdir)/gmodule/*.h \ + $(top_builddir)/glib/glibconfig.h +CFILE_GLOB= $(top_srcdir)/glib/*.c $(top_srcdir)/gmodule/*.c # Ignore some private headers IGNORE_HFILES = \ diff --git a/docs/reference/glib/Makefile.in b/docs/reference/glib/Makefile.in new file mode 100644 index 0000000..002560f --- /dev/null +++ b/docs/reference/glib/Makefile.in @@ -0,0 +1,1073 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# -*- mode: makefile -*- + +#################################### +# Everything below here is generic # +#################################### +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@ENABLE_MAN_TRUE@am__append_1 = \ +@ENABLE_MAN_TRUE@ glib-gettextize.1 \ +@ENABLE_MAN_TRUE@ gtester.1 \ +@ENABLE_MAN_TRUE@ gtester-report.1 + +subdir = docs/reference/glib +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = version.xml +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" +NROFF = nroff +MANS = $(man_MANS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/version.xml.in \ + $(top_srcdir)/gtk-doc.make +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = 1.6 + +# The name of the module. +DOC_MODULE = glib + +# The top-level SGML file. +DOC_MAIN_SGML_FILE = glib-docs.xml + +# The directory containing the source code. Relative to $(srcdir) +DOC_SOURCE_DIR = \ + $(top_srcdir)/glib $(top_srcdir)/gmodule \ + $(top_builddir)/glib $(top_builddir)/gmodule + + +# Extra options to supply to gtkdoc-scan +SCAN_OPTIONS = --deprecated-guards="G_DISABLE_DEPRECATED" --ignore-decorators="GLIB_VAR|G_GNUC_WARN_UNUSED_RESULT" + +# Extra options to supply to gtkdoc-mkdb +MKDB_OPTIONS = --output-format=xml --name-space=g + +# Used for dependencies +HFILE_GLOB = \ + $(top_srcdir)/glib/*.h \ + $(top_srcdir)/gmodule/*.h \ + $(top_builddir)/glib/glibconfig.h + +CFILE_GLOB = $(top_srcdir)/glib/*.c $(top_srcdir)/gmodule/*.c + +# Ignore some private headers +IGNORE_HFILES = \ + gallocator.h \ + gdatasetprivate.h \ + glibintl.h \ + gbsearcharray.h \ + glib-private.h \ + gmoduleconf.h \ + gthreadprivate.h \ + gunibreak.h \ + gunicomp.h \ + gunidecomp.h \ + gunichartables.h \ + glib_probes.h \ + glib_trace.h \ + libcharset.h \ + gdebug.h \ + gprintfint.h \ + gmirroringtable.h \ + gscripttable.h \ + glib-mirroring-tab \ + gnulib \ + pcre \ + update-pcre \ + gbytesprivate.h \ + gvariant-internal.h \ + gvariant-serialiser.h \ + gvariant-core.h \ + gvarianttypeinfo.h \ + gwakeup.h \ + gtranslit-data.h \ + glib-init.h \ + gconstructor.h \ + valgrind.h + + +# Images to copy into HTML directory +HTML_IMAGES = \ + file-name-encodings.png \ + mainloop-states.gif \ + Sorted_binary_tree_breadth-first_traversal.svg \ + Sorted_binary_tree_inorder.svg \ + Sorted_binary_tree_postorder.svg \ + Sorted_binary_tree_preorder.svg + + +# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE) +content_files = \ + cross.xml \ + running.xml \ + building.xml \ + changes.xml \ + compiling.xml \ + programming.xml \ + resources.xml \ + regex-syntax.xml \ + version.xml \ + glib-gettextize.xml \ + gtester.xml \ + gtester-report.xml \ + gvariant-varargs.xml \ + gvariant-text.xml + +expand_content_files = \ + compiling.xml + + +# Extra options to supply to gtkdoc-fixref +FIXXREF_OPTIONS = --extra-dir=$(srcdir)/../gobject/html --extra-dir=$(srcdir)/../gio/html +@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = +@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute + +# We set GPATH here; this gives us semantics for GNU make +# which are more like other make's VPATH, when it comes to +# whether a source that is a target of one rule is then +# searched for in VPATH/GPATH. +# +GPATH = $(srcdir) +TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE) +SETUP_FILES = \ + $(content_files) \ + $(expand_content_files) \ + $(DOC_MAIN_SGML_FILE) \ + $(DOC_MODULE)-sections.txt \ + $(DOC_MODULE)-overrides.txt + + +# include common portion ... + +# Other files to distribute +EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) file-name-encodings.png \ + file-name-encodings.sxd mainloop-states.fig \ + mainloop-states.png mainloop-states.eps \ + Sorted_binary_tree_breadth-first_traversal.svg \ + Sorted_binary_tree_inorder.svg \ + Sorted_binary_tree_postorder.svg \ + Sorted_binary_tree_preorder.svg version.xml.in $(man_MANS) +DOC_STAMPS = setup-build.stamp scan-build.stamp sgml-build.stamp \ + html-build.stamp pdf-build.stamp \ + sgml.stamp html.stamp pdf.stamp + +SCANOBJ_FILES = \ + $(DOC_MODULE).args \ + $(DOC_MODULE).hierarchy \ + $(DOC_MODULE).interfaces \ + $(DOC_MODULE).prerequisites \ + $(DOC_MODULE).signals + +REPORT_FILES = \ + $(DOC_MODULE)-undocumented.txt \ + $(DOC_MODULE)-undeclared.txt \ + $(DOC_MODULE)-unused.txt + +CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) \ + gtkdoc-check.test $(man_MANS) +@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP = +@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp +@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP = +@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp + +#### setup #### +GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V)) +GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build"; + +#### scan #### +GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V)) +GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files"; +GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_$(V)) +GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects"; + +#### xml #### +GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V)) +GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XML_0 = @echo " DOC Building XML"; + +#### html #### +GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V)) +GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_HTML_0 = @echo " DOC Building HTML"; +GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_$(V)) +GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references"; + +#### pdf #### +GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V)) +GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_PDF_0 = @echo " DOC Building PDF"; + +######################################################################## +man_MANS = $(am__append_1) +@ENABLE_MAN_TRUE@XSLTPROC_FLAGS = \ +@ENABLE_MAN_TRUE@ --nonet \ +@ENABLE_MAN_TRUE@ --stringparam man.output.quietly 1 \ +@ENABLE_MAN_TRUE@ --stringparam funcsynopsis.style ansi \ +@ENABLE_MAN_TRUE@ --stringparam man.th.extra1.suppress 1 \ +@ENABLE_MAN_TRUE@ --stringparam man.authors.section.enabled 0 \ +@ENABLE_MAN_TRUE@ --stringparam man.copyright.section.enabled 0 + +all: all-am + +.SUFFIXES: +.SUFFIXES: .1 .xml +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/reference/glib/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/reference/glib/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/gtk-doc.make $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +version.xml: $(top_builddir)/config.status $(srcdir)/version.xml.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: check-am +@ENABLE_GTK_DOC_FALSE@all-local: +all-am: Makefile $(MANS) all-local +installdirs: + for dir in "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-local + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-man + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic \ + maintainer-clean-local + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-local uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: install-am install-strip + +.PHONY: all all-am all-local check check-am clean clean-generic \ + clean-libtool clean-local cscopelist-am ctags-am dist-hook \ + distclean distclean-generic distclean-libtool distclean-local \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-data-local \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-man1 install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + maintainer-clean-local mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-local uninstall-man uninstall-man1 + +.PRECIOUS: Makefile + + +gtkdoc-check.test: Makefile + $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \ + echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \ + chmod +x $@ + +all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) +.PHONY: all-gtk-doc + +@ENABLE_GTK_DOC_TRUE@all-local: all-gtk-doc + +docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) + +$(REPORT_FILES): sgml-build.stamp + +setup-build.stamp: + -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ + files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ + if test "x$$files" != "x" ; then \ + for file in $$files ; do \ + destdir=`dirname $(abs_builddir)/$$file`; \ + test -d "$$destdir" || mkdir -p "$$destdir"; \ + test -f $(abs_srcdir)/$$file && \ + cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ + done; \ + fi; \ + fi + $(AM_V_at)touch setup-build.stamp + +scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) + $(GTK_DOC_V_SCAN)_source_dir='' ; \ + for i in $(DOC_SOURCE_DIR) ; do \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ + done ; \ + gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) + $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ + scanobj_options=""; \ + gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + scanobj_options="--verbose"; \ + fi; \ + fi; \ + CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ + gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ + else \ + for i in $(SCANOBJ_FILES) ; do \ + test -f $$i || touch $$i ; \ + done \ + fi + $(AM_V_at)touch scan-build.stamp + +$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp + @true + +sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent + $(GTK_DOC_V_XML)_source_dir='' ; \ + for i in $(DOC_SOURCE_DIR) ; do \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ + done ; \ + gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) + $(AM_V_at)touch sgml-build.stamp + +sgml.stamp: sgml-build.stamp + @true + +xml/gtkdocentities.ent: Makefile + $(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + ) > $@ + +html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) + $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ + mkhtml_options=""; \ + gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + mkhtml_options="$$mkhtml_options --verbose"; \ + fi; \ + fi; \ + gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ + if test "$$?" = "0"; then \ + mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ + fi; \ + cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) + -@test "x$(HTML_IMAGES)" = "x" || \ + for file in $(HTML_IMAGES) ; do \ + if test -f $(abs_srcdir)/$$file ; then \ + cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ + fi; \ + if test -f $(abs_builddir)/$$file ; then \ + cp $(abs_builddir)/$$file $(abs_builddir)/html; \ + fi; \ + done; + $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) + $(AM_V_at)touch html-build.stamp + +pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) + $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ + mkpdf_options=""; \ + gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + mkpdf_options="$$mkpdf_options --verbose"; \ + fi; \ + fi; \ + if test "x$(HTML_IMAGES)" != "x"; then \ + for img in $(HTML_IMAGES); do \ + part=`dirname $$img`; \ + echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ + if test $$? != 0; then \ + mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ + fi; \ + done; \ + fi; \ + gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) + $(AM_V_at)touch pdf-build.stamp + +############## + +clean-local: + @rm -f *~ *.bak + @rm -rf .libs + @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \ + rm -f $(DOC_MODULE).types; \ + fi + @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-sections" ; then \ + rm -f $(DOC_MODULE)-sections.txt; \ + fi + +distclean-local: + @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ + $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt + @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ + rm -f $(SETUP_FILES) $(DOC_MODULE).types; \ + fi + +maintainer-clean-local: + @rm -rf xml html + +install-data-local: + @installfiles=`echo $(builddir)/html/*`; \ + if test "$$installfiles" = '$(builddir)/html/*'; \ + then echo 1>&2 'Nothing to install' ; \ + else \ + if test -n "$(DOC_MODULE_VERSION)"; then \ + installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ + else \ + installdir="$(DESTDIR)$(TARGET_DIR)"; \ + fi; \ + $(mkinstalldirs) $${installdir} ; \ + for i in $$installfiles; do \ + echo ' $(INSTALL_DATA) '$$i ; \ + $(INSTALL_DATA) $$i $${installdir}; \ + done; \ + if test -n "$(DOC_MODULE_VERSION)"; then \ + mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ + $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ + fi; \ + $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ + fi + +uninstall-local: + @if test -n "$(DOC_MODULE_VERSION)"; then \ + installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ + else \ + installdir="$(DESTDIR)$(TARGET_DIR)"; \ + fi; \ + rm -rf $${installdir} + +# +# Require gtk-doc when making dist +# +@HAVE_GTK_DOC_TRUE@dist-check-gtkdoc: docs +@HAVE_GTK_DOC_FALSE@dist-check-gtkdoc: +@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc is needed to run 'make dist'. ***" +@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc was not found when 'configure' ran. ***" +@HAVE_GTK_DOC_FALSE@ @echo "*** please install gtk-doc and rerun 'configure'. ***" +@HAVE_GTK_DOC_FALSE@ @false + +dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local + @mkdir $(distdir)/html + @cp ./html/* $(distdir)/html + @-cp ./$(DOC_MODULE).pdf $(distdir)/ + @-cp ./$(DOC_MODULE).types $(distdir)/ + @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ + @cd $(distdir) && rm -f $(DISTCLEANFILES) + @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html + +.PHONY : dist-hook-local docs + +@ENABLE_MAN_TRUE@.xml.1: +@ENABLE_MAN_TRUE@ $(AM_V_GEN) $(XSLTPROC) $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $< + +CLEANFILES ?= + +dist-hook-local: all-local + +glib-docs-clean: clean + cd $(srcdir) && rm -rf xml html + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/docs/reference/glib/glib-docs.xml b/docs/reference/glib/glib-docs.xml index 12de3f2..e0b3814 100644 --- a/docs/reference/glib/glib-docs.xml +++ b/docs/reference/glib/glib-docs.xml @@ -41,6 +41,7 @@ + @@ -230,6 +231,14 @@ Index of new symbols in 2.44 + + Index of new symbols in 2.46 + + + + Index of new symbols in 2.48 + + diff --git a/docs/reference/glib/glib-gettextize.1 b/docs/reference/glib/glib-gettextize.1 new file mode 100644 index 0000000..aec0cac --- /dev/null +++ b/docs/reference/glib/glib-gettextize.1 @@ -0,0 +1,79 @@ +'\" t +.\" Title: glib-gettextize +.\" Author: Owen Taylor +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 03/22/2016 +.\" Manual: User Commands +.\" Source: GLib +.\" Language: English +.\" +.TH "GLIB\-GETTEXTIZE" "1" "" "GLib" "User Commands" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +glib-gettextize \- gettext internationalization utility +.SH "SYNOPSIS" +.HP \w'\fBglib\-gettextize\fR\ 'u +\fBglib\-gettextize\fR [OPTION...] [DIRECTORY] +.SH "DESCRIPTION" +.PP +\fBglib\-gettextize\fR +helps to prepare a source package for being internationalized through +gettext\&. It is a variant of the +\fBgettextize\fR +that ships with +gettext\&. +.PP +\fBglib\-gettextize\fR +differs from +\fBgettextize\fR +in that it doesn\*(Aqt create an +intl/ +subdirectory and doesn\*(Aqt modify +po/ChangeLog +(note that newer versions of +\fBgettextize\fR +behave like this when called with the +\fB\-\-no\-changelog\fR +option)\&. +.SH "OPTIONS" +.PP +\fB\-\-help\fR +.RS 4 +print help and exit +.RE +.PP +\fB\-\-version\fR +.RS 4 +print version information and exit +.RE +.PP +\fB\-c\fR, \fB\-\-copy\fR +.RS 4 +copy files instead of making symlinks +.RE +.PP +\fB\-f\fR, \fB\-\-force\fR +.RS 4 +force writing of new files even if old ones exist +.RE +.SH "SEE ALSO" +.PP +\fBgettextize\fR(1) diff --git a/docs/reference/glib/glib-sections.txt b/docs/reference/glib/glib-sections.txt index 5fb0923..4dbdd06 100644 --- a/docs/reference/glib/glib-sections.txt +++ b/docs/reference/glib/glib-sections.txt @@ -126,6 +126,8 @@ GLIB_VERSION_2_38 GLIB_VERSION_2_40 GLIB_VERSION_2_42 GLIB_VERSION_2_44 +GLIB_VERSION_2_46 +GLIB_VERSION_2_48 GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_MAX_ALLOWED GLIB_DISABLE_DEPRECATION_WARNINGS @@ -143,6 +145,8 @@ GLIB_AVAILABLE_IN_2_38 GLIB_AVAILABLE_IN_2_40 GLIB_AVAILABLE_IN_2_42 GLIB_AVAILABLE_IN_2_44 +GLIB_AVAILABLE_IN_2_46 +GLIB_AVAILABLE_IN_2_48 GLIB_DEPRECATED_IN_2_26 GLIB_DEPRECATED_IN_2_26_FOR GLIB_DEPRECATED_IN_2_28 @@ -163,6 +167,10 @@ GLIB_DEPRECATED_IN_2_42 GLIB_DEPRECATED_IN_2_42_FOR GLIB_DEPRECATED_IN_2_44 GLIB_DEPRECATED_IN_2_44_FOR +GLIB_DEPRECATED_IN_2_46 +GLIB_DEPRECATED_IN_2_46_FOR +GLIB_DEPRECATED_IN_2_48 +GLIB_DEPRECATED_IN_2_48_FOR GLIB_VERSION_CUR_STABLE GLIB_VERSION_PREV_STABLE @@ -339,6 +347,17 @@ GUINT64_SWAP_LE_BE_X86_64
+Bounds-checked integer arithmetic +checkedmath +g_uint_checked_add +g_uint_checked_mul +g_uint64_checked_add +g_uint64_checked_mul +g_size_checked_add +g_size_checked_mul +
+ +
Numerical Definitions numerical G_IEEE754_FLOAT_BIAS @@ -388,6 +407,7 @@ G_STATIC_ASSERT G_STATIC_ASSERT_EXPR +G_GNUC_CHECK_VERSION G_GNUC_EXTENSION G_GNUC_CONST G_GNUC_PURE @@ -823,6 +843,7 @@ g_thread_pool_stop_unused_threads g_thread_pool_set_sort_function g_thread_pool_set_max_idle_time g_thread_pool_get_max_idle_time +g_thread_pool_move_to_front
@@ -835,6 +856,8 @@ g_async_queue_ref g_async_queue_unref g_async_queue_push g_async_queue_push_sorted +g_async_queue_push_front +g_async_queue_remove g_async_queue_pop g_async_queue_try_pop g_async_queue_timeout_pop @@ -848,6 +871,8 @@ g_async_queue_ref_unlocked g_async_queue_unref_and_unlock g_async_queue_push_unlocked g_async_queue_push_sorted_unlocked +g_async_queue_push_front_unlocked +g_async_queue_remove_unlocked g_async_queue_pop_unlocked g_async_queue_try_pop_unlocked g_async_queue_timeout_pop_unlocked @@ -1138,6 +1163,7 @@ g_debug g_log_set_handler +g_log_set_handler_full g_log_remove_handler g_log_set_always_fatal g_log_set_fatal_mask @@ -1443,6 +1469,9 @@ g_strfreev g_strconcat g_strjoin g_strjoinv + + +GStrv g_strv_length g_strv_contains @@ -2291,6 +2320,7 @@ GSequenceIterCompareFunc g_sequence_new g_sequence_free g_sequence_get_length +g_sequence_is_empty g_sequence_foreach g_sequence_foreach_range g_sequence_sort @@ -2446,6 +2476,7 @@ g_string_equal g_string_append_c_inline +g_autoptr_cleanup_gstring_free
@@ -3052,6 +3083,7 @@ g_assert_cmpint g_assert_cmpuint g_assert_cmphex g_assert_cmpfloat +g_assert_cmpmem g_assert_no_error g_assert_error g_assert_true diff --git a/docs/reference/glib/gtester-report.1 b/docs/reference/glib/gtester-report.1 new file mode 100644 index 0000000..eab421d --- /dev/null +++ b/docs/reference/glib/gtester-report.1 @@ -0,0 +1,57 @@ +'\" t +.\" Title: gtester-report +.\" Author: Tim Janik +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 03/22/2016 +.\" Manual: User Commands +.\" Source: GLib +.\" Language: English +.\" +.TH "GTESTER\-REPORT" "1" "" "GLib" "User Commands" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +gtester-report \- test report formatting utility +.SH "SYNOPSIS" +.HP \w'\fBgtester\-report\fR\ 'u +\fBgtester\-report\fR [option...] [gtester\-log] +.SH "DESCRIPTION" +.PP +\fBgtester\-report\fR +is a script which converts the XML output generated by gtester into HTML\&. +.SH "OPTIONS" +.PP +\fB\-h\fR, \fB\-\-help\fR +.RS 4 +print help and exit +.RE +.PP +\fB\-v\fR, \fB\-\-version\fR +.RS 4 +print version information and exit +.RE +.PP +\fB\-s\fR, \fB\-\-subunit\fR +.RS 4 +Output subunit\&. Needs python\-subunit\&. +.RE +.SH "SEE ALSO" +.PP +\fBgtester\fR(1) diff --git a/docs/reference/glib/gtester.1 b/docs/reference/glib/gtester.1 new file mode 100644 index 0000000..c76ab7b --- /dev/null +++ b/docs/reference/glib/gtester.1 @@ -0,0 +1,141 @@ +'\" t +.\" Title: gtester +.\" Author: Tim Janik +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 03/22/2016 +.\" Manual: User Commands +.\" Source: GLib +.\" Language: English +.\" +.TH "GTESTER" "1" "" "GLib" "User Commands" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +gtester \- test running utility +.SH "SYNOPSIS" +.HP \w'\fBgtester\fR\ 'u +\fBgtester\fR [OPTION...] [testprogram] +.SH "DESCRIPTION" +.PP +\fBgtester\fR +is a utility to run unit tests that have been written using the GLib test framework\&. +.PP +When called with the +\fB\-o\fR +option, +\fBgtester\fR +writes an XML report of the test results, which can be converted into HTML using the +\fBgtester\-report\fR +utility\&. +.SH "OPTIONS" +.PP +\fB\-h\fR, \fB\-\-help\fR +.RS 4 +print help and exit +.RE +.PP +\fB\-v\fR, \fB\-\-version\fR +.RS 4 +print version information and exit +.RE +.PP +\fB\-\-g\-fatal\-warnings\fR +.RS 4 +make warnings fatal +.RE +.PP +\fB\-k\fR, \fB\-\-keep\-going\fR +.RS 4 +continue running after tests failed +.RE +.PP +\fB\-l\fR +.RS 4 +list paths of available test cases +.RE +.PP +\fB\-m=\fR\fB\fIMODE\fR\fR +.RS 4 +run test cases in +\fIMODE\fR, which can be one of: +.PP +\fBperf\fR +.RS 4 +run performance tests +.RE +.PP +\fBslow\fR, \fBthorough\fR +.RS 4 +run slow tests, or repeat non\-deterministic tests more often +.RE +.PP +\fBquick\fR +.RS 4 +do not run slow or performance tests, or do extra repeats of non\-deterministic tests (default) +.RE +.PP +\fBundefined\fR +.RS 4 +run test cases that deliberately provoke checks or assertion failures, if implemented (default) +.RE +.PP +\fBno\-undefined\fR +.RS 4 +do not run test cases that deliberately provoke checks or assertion failures +.RE +.sp +.RE +.PP +\fB\-p=\fR\fB\fITESTPATH\fR\fR +.RS 4 +only run test cases matching +\fITESTPATH\fR +.RE +.PP +\fB\-s=\fR\fB\fITESTPATH\fR\fR +.RS 4 +skip test cases matching +\fITESTPATH\fR +.RE +.PP +\fB\-\-seed=\fR\fB\fISEEDSTRING\fR\fR +.RS 4 +run all test cases with random number seed +\fISEEDSTRING\fR +.RE +.PP +\fB\-o=\fR\fB\fILOGFILE\fR\fR +.RS 4 +write the test log to +\fILOGFILE\fR +.RE +.PP +\fB\-q\fR, \fB\-\-quiet\fR +.RS 4 +suppress per test binary output +.RE +.PP +\fB\-\-verbose\fR +.RS 4 +report success per testcase +.RE +.SH "SEE ALSO" +.PP +\fBgtester-report\fR(1) diff --git a/docs/reference/glib/gvariant-varargs.xml b/docs/reference/glib/gvariant-varargs.xml index 2e1eed6..a253865 100644 --- a/docs/reference/glib/gvariant-varargs.xml +++ b/docs/reference/glib/gvariant-varargs.xml @@ -530,7 +530,8 @@ value4 = g_variant_new ("x", G_GINT64_CONSTANT (998877665544332211)); 's', 'o' or 'g' in a format string, g_variant_new() takes a (const gchar *) and makes a copy of it. - NULL is not a valid string. If the 'o' or + NULL is not a valid string; use + maybe types to encode that. If the 'o' or 'g' characters are used, care must be taken to ensure that the passed string is a valid DBus object path or DBus type signature, respectively. diff --git a/docs/reference/glib/html/Sorted_binary_tree_breadth-first_traversal.svg b/docs/reference/glib/html/Sorted_binary_tree_breadth-first_traversal.svg new file mode 100644 index 0000000..697d7db --- /dev/null +++ b/docs/reference/glib/html/Sorted_binary_tree_breadth-first_traversal.svg @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sorted_binary_tree + + C + + C + + + E + + E + + + H + + H + + + A + + A + + + D + + D + + + D->C + + + + + D->E + + + + + I + + I + + + I->H + + + + + B + + B + + + B->A + + + + + B->D + + + + + G + + G + + + G->I + + + + + F + + F + + + F->B + + + + + F->G + + + + + diff --git a/docs/reference/glib/html/Sorted_binary_tree_inorder.svg b/docs/reference/glib/html/Sorted_binary_tree_inorder.svg new file mode 100644 index 0000000..3927430 --- /dev/null +++ b/docs/reference/glib/html/Sorted_binary_tree_inorder.svg @@ -0,0 +1,753 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + sorted_binary_tree + + C + + C + + + E + + E + + + H + + H + + + A + + A + + + D + + D + + + D->C + + + + + D->E + + + + + I + + I + + + I->H + + + + + B + + B + + + B->A + + + + + B->D + + + + + G + + G + + + G->I + + + + + F + + F + + + F->B + + + + + F->G + + + + + + + + + + + + + + + + diff --git a/docs/reference/glib/html/Sorted_binary_tree_postorder.svg b/docs/reference/glib/html/Sorted_binary_tree_postorder.svg new file mode 100644 index 0000000..1160e42 --- /dev/null +++ b/docs/reference/glib/html/Sorted_binary_tree_postorder.svg @@ -0,0 +1,750 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + sorted_binary_tree + + C + + C + + + E + + E + + + H + + H + + + A + + A + + + D + + D + + + D->C + + + + + D->E + + + + + I + + I + + + I->H + + + + + B + + B + + + B->A + + + + + B->D + + + + + G + + G + + + G->I + + + + + F + + F + + + F->B + + + + + F->G + + + + + + + + + + + + + + + + diff --git a/docs/reference/glib/html/Sorted_binary_tree_preorder.svg b/docs/reference/glib/html/Sorted_binary_tree_preorder.svg new file mode 100644 index 0000000..ae3d22c --- /dev/null +++ b/docs/reference/glib/html/Sorted_binary_tree_preorder.svg @@ -0,0 +1,750 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + sorted_binary_tree + + C + + C + + + E + + E + + + H + + H + + + A + + A + + + D + + D + + + D->C + + + + + D->E + + + + + I + + I + + + I->H + + + + + B + + B + + + B->A + + + + + B->D + + + + + G + + G + + + G->I + + + + + F + + F + + + F->B + + + + + F->G + + + + + + + + + + + + + + + + diff --git a/docs/reference/glib/html/annotation-glossary.html b/docs/reference/glib/html/annotation-glossary.html new file mode 100644 index 0000000..aea4c87 --- /dev/null +++ b/docs/reference/glib/html/annotation-glossary.html @@ -0,0 +1,96 @@ + + + + +Annotation Glossary: GLib Reference Manual + + + + + + + + + + + + + + + +
+

+Annotation Glossary

+

A

+
allow-none
+

NULL is OK, both for passing and for returning.

+
array
+

Parameter points to an array of items.

+

C

+
closure
+

This parameter is a 'user_data', for callbacks; many bindings can pass NULL here.

+
constructor
+

This symbol is a constructor, not a static method.

+

D

+
default
+

Default parameter value (for in case the shadows-to function has less parameters).

+

E

+
element-type
+

Generics and defining elements of containers and arrays.

+

I

+
in
+

Parameter for input. Default is transfer none.

+
inout
+

Parameter for input and for returning results. Default is transfer full.

+

N

+
nullable
+

NULL may be passed as the value in, out, in-out; or as a return value.

+

O

+
optional
+

NULL may be passed instead of a pointer to a location.

+
out
+

Parameter for returning results. Default is transfer full.

+
out callee-allocates
+

Out parameter, where caller must allocate storage.

+
out caller-allocates
+

Out parameter, where caller must allocate storage.

+

R

+
rename-to
+

Rename the original symbol's name to SYMBOL.

+

S

+
scope async
+

The callback is valid until first called.

+
skip
+

Exposed in C code, not necessarily available in other languages.

+

T

+
transfer container
+

Free data container after the code is done.

+
transfer full
+

Free data after the code is done.

+
transfer none
+

Don't free data after the code is done.

+
type
+

Override the parsed C type with given type.

+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-10.html b/docs/reference/glib/html/api-index-2-10.html new file mode 100644 index 0000000..f3fefdf --- /dev/null +++ b/docs/reference/glib/html/api-index-2-10.html @@ -0,0 +1,166 @@ + + + + +Index of new symbols in 2.10: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.10

+

A

+
+g_async_queue_push_sorted, function in Asynchronous Queues +
+
+
+g_async_queue_push_sorted_unlocked, function in Asynchronous Queues +
+
+
+g_async_queue_sort, function in Asynchronous Queues +
+
+
+g_async_queue_sort_unlocked, function in Asynchronous Queues +
+
+

D

+
+g_date_set_time_t, function in Date and Time Functions +
+
+
+g_date_set_time_val, function in Date and Time Functions +
+
+

G

+
+G_GNUC_WARN_UNUSED_RESULT, macro in Miscellaneous Macros +
+
+
+G_GUINT64_CONSTANT, macro in Basic Types +
+
+

H

+
+g_hash_table_ref, function in Hash Tables +
+
+
+g_hash_table_unref, function in Hash Tables +
+
+

I

+
+g_intern_static_string, function in Quarks +
+
+
+g_intern_string, function in Quarks +
+
+

L

+
+g_list_insert_sorted_with_data, function in Doubly-Linked Lists +
+
+

M

+
+g_main_context_is_owner, function in The Main Event Loop +
+
+

S

+
+g_slice_alloc, function in Memory Slices +
+
+
+g_slice_alloc0, function in Memory Slices +
+
+
+g_slice_free, macro in Memory Slices +
+
+
+g_slice_free1, function in Memory Slices +
+
+
+g_slice_free_chain, macro in Memory Slices +
+
+
+g_slice_free_chain_with_offset, function in Memory Slices +
+
+
+g_slice_new, macro in Memory Slices +
+
+
+g_slice_new0, macro in Memory Slices +
+
+
+g_slist_free1, macro in Singly-Linked Lists +
+
+
+g_slist_insert_sorted_with_data, function in Singly-Linked Lists +
+
+

T

+
+g_thread_foreach, function in Deprecated Thread APIs +
+
+
+g_thread_pool_get_max_idle_time, function in Thread Pools +
+
+
+g_thread_pool_set_max_idle_time, function in Thread Pools +
+
+
+g_thread_pool_set_sort_function, function in Thread Pools +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-12.html b/docs/reference/glib/html/api-index-2-12.html new file mode 100644 index 0000000..9208487 --- /dev/null +++ b/docs/reference/glib/html/api-index-2-12.html @@ -0,0 +1,306 @@ + + + + +Index of new symbols in 2.12: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.12

+

A

+
+g_ascii_strtoll, function in String Utility Functions +
+
+

B

+
+g_base64_decode, function in Base64 Encoding +
+
+
+g_base64_decode_step, function in Base64 Encoding +
+
+
+g_base64_encode, function in Base64 Encoding +
+
+
+g_base64_encode_close, function in Base64 Encoding +
+
+
+g_base64_encode_step, function in Base64 Encoding +
+
+
+g_bookmark_file_add_application, function in Bookmark file parser +
+
+
+g_bookmark_file_add_group, function in Bookmark file parser +
+
+
+g_bookmark_file_free, function in Bookmark file parser +
+
+
+g_bookmark_file_get_added, function in Bookmark file parser +
+
+
+g_bookmark_file_get_applications, function in Bookmark file parser +
+
+
+g_bookmark_file_get_app_info, function in Bookmark file parser +
+
+
+g_bookmark_file_get_description, function in Bookmark file parser +
+
+
+g_bookmark_file_get_groups, function in Bookmark file parser +
+
+
+g_bookmark_file_get_icon, function in Bookmark file parser +
+
+
+g_bookmark_file_get_is_private, function in Bookmark file parser +
+
+
+g_bookmark_file_get_mime_type, function in Bookmark file parser +
+
+
+g_bookmark_file_get_modified, function in Bookmark file parser +
+
+
+g_bookmark_file_get_size, function in Bookmark file parser +
+
+
+g_bookmark_file_get_title, function in Bookmark file parser +
+
+
+g_bookmark_file_get_uris, function in Bookmark file parser +
+
+
+g_bookmark_file_get_visited, function in Bookmark file parser +
+
+
+g_bookmark_file_has_application, function in Bookmark file parser +
+
+
+g_bookmark_file_has_group, function in Bookmark file parser +
+
+
+g_bookmark_file_has_item, function in Bookmark file parser +
+
+
+g_bookmark_file_load_from_data, function in Bookmark file parser +
+
+
+g_bookmark_file_load_from_data_dirs, function in Bookmark file parser +
+
+
+g_bookmark_file_load_from_file, function in Bookmark file parser +
+
+
+g_bookmark_file_move_item, function in Bookmark file parser +
+
+
+g_bookmark_file_new, function in Bookmark file parser +
+
+
+g_bookmark_file_remove_application, function in Bookmark file parser +
+
+
+g_bookmark_file_remove_group, function in Bookmark file parser +
+
+
+g_bookmark_file_remove_item, function in Bookmark file parser +
+
+
+g_bookmark_file_set_added, function in Bookmark file parser +
+
+
+g_bookmark_file_set_app_info, function in Bookmark file parser +
+
+
+g_bookmark_file_set_description, function in Bookmark file parser +
+
+
+g_bookmark_file_set_groups, function in Bookmark file parser +
+
+
+g_bookmark_file_set_icon, function in Bookmark file parser +
+
+
+g_bookmark_file_set_is_private, function in Bookmark file parser +
+
+
+g_bookmark_file_set_mime_type, function in Bookmark file parser +
+
+
+g_bookmark_file_set_modified, function in Bookmark file parser +
+
+
+g_bookmark_file_set_title, function in Bookmark file parser +
+
+
+g_bookmark_file_set_visited, function in Bookmark file parser +
+
+
+g_bookmark_file_to_data, function in Bookmark file parser +
+
+
+g_bookmark_file_to_file, function in Bookmark file parser +
+
+

H

+
+g_hash_table_remove_all, function in Hash Tables +
+
+
+g_hash_table_steal_all, function in Hash Tables +
+
+

K

+
+g_key_file_get_double, function in Key-value file parser +
+
+
+g_key_file_get_double_list, function in Key-value file parser +
+
+
+g_key_file_set_double, function in Key-value file parser +
+
+
+g_key_file_set_double_list, function in Key-value file parser +
+
+

M

+
+g_main_current_source, function in The Main Event Loop +
+
+

O

+
+g_option_context_get_description, function in Commandline option parser +
+
+
+g_option_context_get_summary, function in Commandline option parser +
+
+
+g_option_context_set_description, function in Commandline option parser +
+
+
+g_option_context_set_summary, function in Commandline option parser +
+
+
+g_option_context_set_translate_func, function in Commandline option parser +
+
+
+g_option_context_set_translation_domain, function in Commandline option parser +
+
+

S

+
+g_source_is_destroyed, function in The Main Event Loop +
+
+
+g_source_set_funcs, function in The Main Event Loop +
+
+

T

+
+g_time_val_from_iso8601, function in Date and Time Functions +
+
+
+g_time_val_to_iso8601, function in Date and Time Functions +
+
+

U

+
+g_unichar_iswide_cjk, function in Unicode Manipulation +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-14.html b/docs/reference/glib/html/api-index-2-14.html new file mode 100644 index 0000000..92ecb19 --- /dev/null +++ b/docs/reference/glib/html/api-index-2-14.html @@ -0,0 +1,561 @@ + + + + +Index of new symbols in 2.14: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.14

+

G

+
+g_get_user_special_dir, function in Miscellaneous Utility Functions +
+
+
+G_GNUC_MAY_ALIAS, macro in Miscellaneous Macros +
+
+

H

+
+g_hash_table_get_keys, function in Hash Tables +
+
+
+g_hash_table_get_values, function in Hash Tables +
+
+

K

+
+G_KEY_FILE_DESKTOP_GROUP, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_CATEGORIES, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_COMMENT, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_EXEC, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_HIDDEN, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_ICON, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_MIME_TYPE, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_NAME, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_PATH, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_TERMINAL, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_TRY_EXEC, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_TYPE, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_URL, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_VERSION, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_TYPE_APPLICATION, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_TYPE_DIRECTORY, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_TYPE_LINK, macro in Key-value file parser +
+
+
+g_key_file_load_from_dirs, function in Key-value file parser +
+
+

M

+
+g_match_info_expand_references, function in Perl-compatible regular expressions +
+
+
+g_match_info_fetch, function in Perl-compatible regular expressions +
+
+
+g_match_info_fetch_all, function in Perl-compatible regular expressions +
+
+
+g_match_info_fetch_named, function in Perl-compatible regular expressions +
+
+
+g_match_info_fetch_named_pos, function in Perl-compatible regular expressions +
+
+
+g_match_info_fetch_pos, function in Perl-compatible regular expressions +
+
+
+g_match_info_free, function in Perl-compatible regular expressions +
+
+
+g_match_info_get_match_count, function in Perl-compatible regular expressions +
+
+
+g_match_info_get_regex, function in Perl-compatible regular expressions +
+
+
+g_match_info_get_string, function in Perl-compatible regular expressions +
+
+
+g_match_info_is_partial_match, function in Perl-compatible regular expressions +
+
+
+g_match_info_matches, function in Perl-compatible regular expressions +
+
+
+g_match_info_next, function in Perl-compatible regular expressions +
+
+
+G_MAXSSIZE, macro in Basic Types +
+
+
+G_MINSSIZE, macro in Basic Types +
+
+

O

+
+goffset, typedef in Basic Types +
+
+
+g_once_init_enter, function in Threads +
+
+
+g_once_init_leave, function in Threads +
+
+
+g_option_context_get_help, function in Commandline option parser +
+
+

Q

+
+g_queue_clear, function in Double-ended Queues +
+
+
+G_QUEUE_INIT, macro in Double-ended Queues +
+
+
+g_queue_init, function in Double-ended Queues +
+
+

R

+
+GRegex, struct in Perl-compatible regular expressions +
+
+
+GRegexCompileFlags, enum in Perl-compatible regular expressions +
+
+
+GRegexError, enum in Perl-compatible regular expressions +
+
+
+GRegexEvalCallback, user_function in Perl-compatible regular expressions +
+
+
+GRegexMatchFlags, enum in Perl-compatible regular expressions +
+
+
+g_regex_check_replacement, function in Perl-compatible regular expressions +
+
+
+G_REGEX_ERROR, macro in Perl-compatible regular expressions +
+
+
+g_regex_escape_string, function in Perl-compatible regular expressions +
+
+
+g_regex_get_capture_count, function in Perl-compatible regular expressions +
+
+
+g_regex_get_max_backref, function in Perl-compatible regular expressions +
+
+
+g_regex_get_pattern, function in Perl-compatible regular expressions +
+
+
+g_regex_get_string_number, function in Perl-compatible regular expressions +
+
+
+g_regex_match, function in Perl-compatible regular expressions +
+
+
+g_regex_match_all, function in Perl-compatible regular expressions +
+
+
+g_regex_match_all_full, function in Perl-compatible regular expressions +
+
+
+g_regex_match_full, function in Perl-compatible regular expressions +
+
+
+g_regex_match_simple, function in Perl-compatible regular expressions +
+
+
+g_regex_new, function in Perl-compatible regular expressions +
+
+
+g_regex_ref, function in Perl-compatible regular expressions +
+
+
+g_regex_replace, function in Perl-compatible regular expressions +
+
+
+g_regex_replace_eval, function in Perl-compatible regular expressions +
+
+
+g_regex_replace_literal, function in Perl-compatible regular expressions +
+
+
+g_regex_split, function in Perl-compatible regular expressions +
+
+
+g_regex_split_full, function in Perl-compatible regular expressions +
+
+
+g_regex_split_simple, function in Perl-compatible regular expressions +
+
+
+g_regex_unref, function in Perl-compatible regular expressions +
+
+

S

+
+g_sequence_append, function in Sequences +
+
+
+g_sequence_foreach, function in Sequences +
+
+
+g_sequence_foreach_range, function in Sequences +
+
+
+g_sequence_free, function in Sequences +
+
+
+g_sequence_get, function in Sequences +
+
+
+g_sequence_get_begin_iter, function in Sequences +
+
+
+g_sequence_get_end_iter, function in Sequences +
+
+
+g_sequence_get_iter_at_pos, function in Sequences +
+
+
+g_sequence_get_length, function in Sequences +
+
+
+g_sequence_insert_before, function in Sequences +
+
+
+g_sequence_insert_sorted, function in Sequences +
+
+
+g_sequence_insert_sorted_iter, function in Sequences +
+
+
+g_sequence_iter_compare, function in Sequences +
+
+
+g_sequence_iter_get_position, function in Sequences +
+
+
+g_sequence_iter_get_sequence, function in Sequences +
+
+
+g_sequence_iter_is_begin, function in Sequences +
+
+
+g_sequence_iter_is_end, function in Sequences +
+
+
+g_sequence_iter_move, function in Sequences +
+
+
+g_sequence_iter_next, function in Sequences +
+
+
+g_sequence_iter_prev, function in Sequences +
+
+
+g_sequence_move, function in Sequences +
+
+
+g_sequence_move_range, function in Sequences +
+
+
+g_sequence_new, function in Sequences +
+
+
+g_sequence_prepend, function in Sequences +
+
+
+g_sequence_range_get_midpoint, function in Sequences +
+
+
+g_sequence_remove, function in Sequences +
+
+
+g_sequence_remove_range, function in Sequences +
+
+
+g_sequence_search, function in Sequences +
+
+
+g_sequence_search_iter, function in Sequences +
+
+
+g_sequence_set, function in Sequences +
+
+
+g_sequence_sort, function in Sequences +
+
+
+g_sequence_sort_changed, function in Sequences +
+
+
+g_sequence_sort_changed_iter, function in Sequences +
+
+
+g_sequence_sort_iter, function in Sequences +
+
+
+g_sequence_swap, function in Sequences +
+
+
+g_slice_copy, function in Memory Slices +
+
+
+g_slice_dup, macro in Memory Slices +
+
+
+g_string_append_vprintf, function in Strings +
+
+
+g_string_chunk_clear, function in String Chunks +
+
+
+g_string_overwrite, function in Strings +
+
+
+g_string_overwrite_len, function in Strings +
+
+
+g_string_vprintf, function in Strings +
+
+

T

+
+g_timeout_add_seconds, function in The Main Event Loop +
+
+
+g_timeout_add_seconds_full, function in The Main Event Loop +
+
+
+g_timeout_source_new_seconds, function in The Main Event Loop +
+
+

U

+
+g_unichar_combining_class, function in Unicode Manipulation +
+
+
+g_unichar_get_script, function in Unicode Manipulation +
+
+
+g_unichar_ismark, function in Unicode Manipulation +
+
+
+g_unichar_iszerowidth, function in Unicode Manipulation +
+
+
+GUserDirectory, enum in Miscellaneous Utility Functions +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-16.html b/docs/reference/glib/html/api-index-2-16.html new file mode 100644 index 0000000..ae6ca4e --- /dev/null +++ b/docs/reference/glib/html/api-index-2-16.html @@ -0,0 +1,356 @@ + + + + +Index of new symbols in 2.16: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.16

+

A

+
+g_assert_cmpfloat, macro in Testing +
+
+
+g_assert_cmphex, macro in Testing +
+
+
+g_assert_cmpint, macro in Testing +
+
+
+g_assert_cmpstr, macro in Testing +
+
+
+g_assert_cmpuint, macro in Testing +
+
+
+g_async_queue_new_full, function in Asynchronous Queues +
+
+

C

+
+GChecksum, struct in Data Checksums +
+
+
+GChecksumType, enum in Data Checksums +
+
+
+g_checksum_copy, function in Data Checksums +
+
+
+g_checksum_free, function in Data Checksums +
+
+
+g_checksum_get_digest, function in Data Checksums +
+
+
+g_checksum_get_string, function in Data Checksums +
+
+
+g_checksum_new, function in Data Checksums +
+
+
+g_checksum_type_get_length, function in Data Checksums +
+
+
+g_checksum_update, function in Data Checksums +
+
+
+g_compute_checksum_for_data, function in Data Checksums +
+
+
+g_compute_checksum_for_string, function in Data Checksums +
+
+
+C_, macro in I18N +
+
+

D

+
+g_dpgettext, function in I18N +
+
+

F

+
+g_format_size_for_display, function in Miscellaneous Utility Functions +
+
+

H

+
+g_hash_table_iter_get_hash_table, function in Hash Tables +
+
+
+g_hash_table_iter_init, function in Hash Tables +
+
+
+g_hash_table_iter_next, function in Hash Tables +
+
+
+g_hash_table_iter_remove, function in Hash Tables +
+
+
+g_hash_table_iter_steal, function in Hash Tables +
+
+

M

+
+g_markup_collect_attributes, function in Simple XML Subset Parser +
+
+
+g_markup_parse_context_get_element_stack, function in Simple XML Subset Parser +
+
+

P

+
+g_prefix_error, function in Error Reporting +
+
+
+g_propagate_prefixed_error, function in Error Reporting +
+
+

S

+
+g_strcmp0, function in String Utility Functions +
+
+
+g_string_append_uri_escaped, function in Strings +
+
+

T

+
+g_test_add, macro in Testing +
+
+
+g_test_add_data_func, function in Testing +
+
+
+g_test_add_func, function in Testing +
+
+
+g_test_bug, function in Testing +
+
+
+g_test_bug_base, function in Testing +
+
+
+g_test_create_case, function in Testing +
+
+
+g_test_create_suite, function in Testing +
+
+
+g_test_get_root, function in Testing +
+
+
+g_test_init, function in Testing +
+
+
+g_test_maximized_result, function in Testing +
+
+
+g_test_message, function in Testing +
+
+
+g_test_minimized_result, function in Testing +
+
+
+g_test_queue_destroy, function in Testing +
+
+
+g_test_queue_free, function in Testing +
+
+
+g_test_queue_unref, macro in Testing +
+
+
+g_test_rand_bit, macro in Testing +
+
+
+g_test_rand_double, function in Testing +
+
+
+g_test_rand_double_range, function in Testing +
+
+
+g_test_rand_int, function in Testing +
+
+
+g_test_rand_int_range, function in Testing +
+
+
+g_test_run, function in Testing +
+
+
+g_test_run_suite, function in Testing +
+
+
+g_test_suite_add, function in Testing +
+
+
+g_test_suite_add_suite, function in Testing +
+
+
+g_test_timer_elapsed, function in Testing +
+
+
+g_test_timer_last, function in Testing +
+
+
+g_test_timer_start, function in Testing +
+
+
+g_test_trap_assert_failed, macro in Testing +
+
+
+g_test_trap_assert_passed, macro in Testing +
+
+
+g_test_trap_assert_stderr, macro in Testing +
+
+
+g_test_trap_assert_stderr_unmatched, macro in Testing +
+
+
+g_test_trap_assert_stdout, macro in Testing +
+
+
+g_test_trap_assert_stdout_unmatched, macro in Testing +
+
+
+g_test_trap_fork, function in Testing +
+
+
+g_test_trap_has_passed, function in Testing +
+
+
+g_test_trap_reached_timeout, function in Testing +
+
+

U

+
+g_uri_escape_string, function in URI Functions +
+
+
+g_uri_parse_scheme, function in URI Functions +
+
+
+g_uri_unescape_segment, function in URI Functions +
+
+
+g_uri_unescape_string, function in URI Functions +
+
+

W

+
+g_warn_if_fail, macro in Warnings and Assertions +
+
+
+g_warn_if_reached, macro in Warnings and Assertions +
+
+
+g_win32_get_package_installation_directory_of_module, function in Windows Compatibility Functions +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-18.html b/docs/reference/glib/html/api-index-2-18.html new file mode 100644 index 0000000..7b37def --- /dev/null +++ b/docs/reference/glib/html/api-index-2-18.html @@ -0,0 +1,107 @@ + + + + +Index of new symbols in 2.18: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.18

+

C

+
+g_checksum_reset, function in Data Checksums +
+
+

D

+
+g_dgettext, function in I18N +
+
+
+g_dngettext, function in I18N +
+
+
+g_dpgettext2, function in I18N +
+
+

G

+
+G_GNUC_ALLOC_SIZE, macro in Miscellaneous Macros +
+
+
+G_GNUC_ALLOC_SIZE2, macro in Miscellaneous Macros +
+
+

I

+
+gintptr, typedef in Basic Types +
+
+

M

+
+g_markup_parse_context_get_user_data, function in Simple XML Subset Parser +
+
+
+g_markup_parse_context_pop, function in Simple XML Subset Parser +
+
+
+g_markup_parse_context_push, function in Simple XML Subset Parser +
+
+

N

+
+NC_, macro in I18N +
+
+

S

+
+g_set_error_literal, function in Error Reporting +
+
+

U

+
+guintptr, typedef in Basic Types +
+
+
+g_utime, function in File Utilities +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-2.html b/docs/reference/glib/html/api-index-2-2.html new file mode 100644 index 0000000..eedafe7 --- /dev/null +++ b/docs/reference/glib/html/api-index-2-2.html @@ -0,0 +1,118 @@ + + + + +Index of new symbols in 2.2: GLib Reference Manual + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-20.html b/docs/reference/glib/html/api-index-2-20.html new file mode 100644 index 0000000..efe1e39 --- /dev/null +++ b/docs/reference/glib/html/api-index-2-20.html @@ -0,0 +1,85 @@ + + + + +Index of new symbols in 2.20: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.20

+

A

+
+g_assert_error, macro in Testing +
+
+
+g_assert_no_error, macro in Testing +
+
+

B

+
+g_base64_decode_inplace, function in Base64 Encoding +
+
+

G

+
+G_GOFFSET_CONSTANT, macro in Basic Types +
+
+
+G_GOFFSET_FORMAT, macro in Basic Types +
+
+
+G_GOFFSET_MODIFIER, macro in Basic Types +
+
+

P

+
+G_PASTE, macro in Miscellaneous Macros +
+
+
+g_poll, function in The Main Event Loop +
+
+

S

+
+G_STATIC_ASSERT, macro in Miscellaneous Macros +
+
+

T

+
+g_thread_get_initialized, function in Deprecated Thread APIs +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-22.html b/docs/reference/glib/html/api-index-2-22.html new file mode 100644 index 0000000..44946d3 --- /dev/null +++ b/docs/reference/glib/html/api-index-2-22.html @@ -0,0 +1,188 @@ + + + + +Index of new symbols in 2.22: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.22

+

A

+
+g_array_get_element_size, function in Arrays +
+
+
+g_array_ref, function in Arrays +
+
+
+g_array_unref, function in Arrays +
+
+

B

+
+g_byte_array_ref, function in Byte Arrays +
+
+
+g_byte_array_unref, function in Byte Arrays +
+
+

D

+
+g_double_equal, function in Hash Tables +
+
+
+g_double_hash, function in Hash Tables +
+
+

E

+
+g_error_new_valist, function in Error Reporting +
+
+

G

+
+G_GINTPTR_FORMAT, macro in Basic Types +
+
+
+G_GINTPTR_MODIFIER, macro in Basic Types +
+
+
+G_GUINTPTR_FORMAT, macro in Basic Types +
+
+

H

+
+g_hostname_is_ascii_encoded, function in Hostname Utilities +
+
+
+g_hostname_is_ip_address, function in Hostname Utilities +
+
+
+g_hostname_is_non_ascii, function in Hostname Utilities +
+
+
+g_hostname_to_ascii, function in Hostname Utilities +
+
+
+g_hostname_to_unicode, function in Hostname Utilities +
+
+

I

+
+g_int64_equal, function in Hash Tables +
+
+
+g_int64_hash, function in Hash Tables +
+
+

M

+
+g_main_context_get_thread_default, function in The Main Event Loop +
+
+
+g_main_context_pop_thread_default, function in The Main Event Loop +
+
+
+g_main_context_push_thread_default, function in The Main Event Loop +
+
+
+g_mapped_file_ref, function in File Utilities +
+
+
+g_mkstemp_full, function in File Utilities +
+
+

P

+
+g_ptr_array_new_with_free_func, function in Pointer Arrays +
+
+
+g_ptr_array_ref, function in Pointer Arrays +
+
+
+g_ptr_array_set_free_func, function in Pointer Arrays +
+
+
+g_ptr_array_unref, function in Pointer Arrays +
+
+

R

+
+g_reload_user_special_dirs_cache, function in Miscellaneous Utility Functions +
+
+

T

+
+GTestLogFatalFunc, user_function in Testing +
+
+
+g_test_log_set_fatal_handler, function in Testing +
+
+
+g_tree_ref, function in Balanced Binary Trees +
+
+
+g_tree_unref, function in Balanced Binary Trees +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-24.html b/docs/reference/glib/html/api-index-2-24.html new file mode 100644 index 0000000..39b15ad --- /dev/null +++ b/docs/reference/glib/html/api-index-2-24.html @@ -0,0 +1,422 @@ + + + + +Index of new symbols in 2.24: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.24

+

B

+
+g_bit_lock, function in Threads +
+
+
+g_bit_trylock, function in Threads +
+
+
+g_bit_unlock, function in Threads +
+
+

M

+
+g_malloc0_n, function in Memory Allocation +
+
+
+g_malloc_n, function in Memory Allocation +
+
+

R

+
+g_realloc_n, function in Memory Allocation +
+
+

T

+
+g_try_malloc0_n, function in Memory Allocation +
+
+
+g_try_malloc_n, function in Memory Allocation +
+
+
+g_try_realloc_n, function in Memory Allocation +
+
+

V

+
+GVariant, struct in GVariant +
+
+
+GVariantClass, enum in GVariant +
+
+
+g_variant_builder_add, function in GVariant +
+
+
+g_variant_builder_add_value, function in GVariant +
+
+
+g_variant_builder_clear, function in GVariant +
+
+
+g_variant_builder_close, function in GVariant +
+
+
+g_variant_builder_end, function in GVariant +
+
+
+g_variant_builder_init, function in GVariant +
+
+
+g_variant_builder_new, function in GVariant +
+
+
+g_variant_builder_open, function in GVariant +
+
+
+g_variant_builder_ref, function in GVariant +
+
+
+g_variant_builder_unref, function in GVariant +
+
+
+g_variant_byteswap, function in GVariant +
+
+
+g_variant_classify, function in GVariant +
+
+
+g_variant_dup_string, function in GVariant +
+
+
+g_variant_dup_strv, function in GVariant +
+
+
+g_variant_equal, function in GVariant +
+
+
+g_variant_get, function in GVariant +
+
+
+g_variant_get_boolean, function in GVariant +
+
+
+g_variant_get_byte, function in GVariant +
+
+
+g_variant_get_child, function in GVariant +
+
+
+g_variant_get_child_value, function in GVariant +
+
+
+g_variant_get_data, function in GVariant +
+
+
+g_variant_get_double, function in GVariant +
+
+
+g_variant_get_fixed_array, function in GVariant +
+
+
+g_variant_get_handle, function in GVariant +
+
+
+g_variant_get_int16, function in GVariant +
+
+
+g_variant_get_int32, function in GVariant +
+
+
+g_variant_get_int64, function in GVariant +
+
+
+g_variant_get_maybe, function in GVariant +
+
+
+g_variant_get_normal_form, function in GVariant +
+
+
+g_variant_get_size, function in GVariant +
+
+
+g_variant_get_string, function in GVariant +
+
+
+g_variant_get_strv, function in GVariant +
+
+
+g_variant_get_type, function in GVariant +
+
+
+g_variant_get_type_string, function in GVariant +
+
+
+g_variant_get_uint16, function in GVariant +
+
+
+g_variant_get_uint32, function in GVariant +
+
+
+g_variant_get_uint64, function in GVariant +
+
+
+g_variant_get_va, function in GVariant +
+
+
+g_variant_get_variant, function in GVariant +
+
+
+g_variant_hash, function in GVariant +
+
+
+g_variant_is_container, function in GVariant +
+
+
+g_variant_is_normal_form, function in GVariant +
+
+
+g_variant_is_object_path, function in GVariant +
+
+
+g_variant_is_of_type, function in GVariant +
+
+
+g_variant_is_signature, function in GVariant +
+
+
+g_variant_iter_copy, function in GVariant +
+
+
+g_variant_iter_free, function in GVariant +
+
+
+g_variant_iter_init, function in GVariant +
+
+
+g_variant_iter_loop, function in GVariant +
+
+
+g_variant_iter_new, function in GVariant +
+
+
+g_variant_iter_next, function in GVariant +
+
+
+g_variant_iter_next_value, function in GVariant +
+
+
+g_variant_iter_n_children, function in GVariant +
+
+
+g_variant_new, function in GVariant +
+
+
+g_variant_new_array, function in GVariant +
+
+
+g_variant_new_boolean, function in GVariant +
+
+
+g_variant_new_byte, function in GVariant +
+
+
+g_variant_new_dict_entry, function in GVariant +
+
+
+g_variant_new_double, function in GVariant +
+
+
+g_variant_new_from_data, function in GVariant +
+
+
+g_variant_new_handle, function in GVariant +
+
+
+g_variant_new_int16, function in GVariant +
+
+
+g_variant_new_int32, function in GVariant +
+
+
+g_variant_new_int64, function in GVariant +
+
+
+g_variant_new_maybe, function in GVariant +
+
+
+g_variant_new_object_path, function in GVariant +
+
+
+g_variant_new_signature, function in GVariant +
+
+
+g_variant_new_string, function in GVariant +
+
+
+g_variant_new_strv, function in GVariant +
+
+
+g_variant_new_tuple, function in GVariant +
+
+
+g_variant_new_uint16, function in GVariant +
+
+
+g_variant_new_uint32, function in GVariant +
+
+
+g_variant_new_uint64, function in GVariant +
+
+
+g_variant_new_va, function in GVariant +
+
+
+g_variant_new_variant, function in GVariant +
+
+
+g_variant_n_children, function in GVariant +
+
+
+g_variant_print, function in GVariant +
+
+
+g_variant_print_string, function in GVariant +
+
+
+g_variant_ref, function in GVariant +
+
+
+g_variant_ref_sink, function in GVariant +
+
+
+g_variant_store, function in GVariant +
+
+
+g_variant_type_new, function in GVariantType +
+
+
+g_variant_type_string_scan, function in GVariantType +
+
+
+g_variant_unref, function in GVariant +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-26.html b/docs/reference/glib/html/api-index-2-26.html new file mode 100644 index 0000000..adc2e57 --- /dev/null +++ b/docs/reference/glib/html/api-index-2-26.html @@ -0,0 +1,388 @@ + + + + +Index of new symbols in 2.26: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.26

+

D

+
+GDateTime, struct in GDateTime +
+
+
+g_date_time_add, function in GDateTime +
+
+
+g_date_time_add_days, function in GDateTime +
+
+
+g_date_time_add_full, function in GDateTime +
+
+
+g_date_time_add_hours, function in GDateTime +
+
+
+g_date_time_add_minutes, function in GDateTime +
+
+
+g_date_time_add_months, function in GDateTime +
+
+
+g_date_time_add_seconds, function in GDateTime +
+
+
+g_date_time_add_weeks, function in GDateTime +
+
+
+g_date_time_add_years, function in GDateTime +
+
+
+g_date_time_compare, function in GDateTime +
+
+
+g_date_time_difference, function in GDateTime +
+
+
+g_date_time_equal, function in GDateTime +
+
+
+g_date_time_format, function in GDateTime +
+
+
+g_date_time_get_day_of_month, function in GDateTime +
+
+
+g_date_time_get_day_of_week, function in GDateTime +
+
+
+g_date_time_get_day_of_year, function in GDateTime +
+
+
+g_date_time_get_hour, function in GDateTime +
+
+
+g_date_time_get_microsecond, function in GDateTime +
+
+
+g_date_time_get_minute, function in GDateTime +
+
+
+g_date_time_get_month, function in GDateTime +
+
+
+g_date_time_get_second, function in GDateTime +
+
+
+g_date_time_get_seconds, function in GDateTime +
+
+
+g_date_time_get_timezone_abbreviation, function in GDateTime +
+
+
+g_date_time_get_utc_offset, function in GDateTime +
+
+
+g_date_time_get_week_numbering_year, function in GDateTime +
+
+
+g_date_time_get_week_of_year, function in GDateTime +
+
+
+g_date_time_get_year, function in GDateTime +
+
+
+g_date_time_get_ymd, function in GDateTime +
+
+
+g_date_time_hash, function in GDateTime +
+
+
+g_date_time_is_daylight_savings, function in GDateTime +
+
+
+g_date_time_new, function in GDateTime +
+
+
+g_date_time_new_from_timeval_local, function in GDateTime +
+
+
+g_date_time_new_from_timeval_utc, function in GDateTime +
+
+
+g_date_time_new_from_unix_local, function in GDateTime +
+
+
+g_date_time_new_from_unix_utc, function in GDateTime +
+
+
+g_date_time_new_local, function in GDateTime +
+
+
+g_date_time_new_now, function in GDateTime +
+
+
+g_date_time_new_now_local, function in GDateTime +
+
+
+g_date_time_new_now_utc, function in GDateTime +
+
+
+g_date_time_new_utc, function in GDateTime +
+
+
+g_date_time_ref, function in GDateTime +
+
+
+g_date_time_to_local, function in GDateTime +
+
+
+g_date_time_to_timeval, function in GDateTime +
+
+
+g_date_time_to_timezone, function in GDateTime +
+
+
+g_date_time_to_unix, function in GDateTime +
+
+
+g_date_time_to_utc, function in GDateTime +
+
+
+g_date_time_unref, function in GDateTime +
+
+
+g_dcgettext, function in I18N +
+
+

G

+
+G_GNUC_DEPRECATED_FOR, macro in Miscellaneous Macros +
+
+

K

+
+g_key_file_get_int64, function in Key-value file parser +
+
+
+g_key_file_get_uint64, function in Key-value file parser +
+
+
+g_key_file_set_int64, function in Key-value file parser +
+
+
+g_key_file_set_uint64, function in Key-value file parser +
+
+

R

+
+g_regex_get_compile_flags, function in Perl-compatible regular expressions +
+
+
+g_regex_get_match_flags, function in Perl-compatible regular expressions +
+
+

S

+
+g_source_get_name, function in The Main Event Loop +
+
+
+g_source_set_name, function in The Main Event Loop +
+
+
+g_source_set_name_by_id, function in The Main Event Loop +
+
+

T

+
+GTimeSpan, typedef in GDateTime +
+
+
+GTimeZone, struct in GTimeZone +
+
+
+G_TIME_SPAN_DAY, macro in GDateTime +
+
+
+G_TIME_SPAN_HOUR, macro in GDateTime +
+
+
+G_TIME_SPAN_MILLISECOND, macro in GDateTime +
+
+
+G_TIME_SPAN_MINUTE, macro in GDateTime +
+
+
+G_TIME_SPAN_SECOND, macro in GDateTime +
+
+
+g_time_zone_adjust_time, function in GTimeZone +
+
+
+g_time_zone_find_interval, function in GTimeZone +
+
+
+g_time_zone_get_abbreviation, function in GTimeZone +
+
+
+g_time_zone_get_offset, function in GTimeZone +
+
+
+g_time_zone_is_dst, function in GTimeZone +
+
+
+g_time_zone_new, function in GTimeZone +
+
+
+g_time_zone_new_local, function in GTimeZone +
+
+
+g_time_zone_new_utc, function in GTimeZone +
+
+
+g_time_zone_ref, function in GTimeZone +
+
+
+g_time_zone_unref, function in GTimeZone +
+
+

V

+
+g_variant_builder_add_parsed, function in GVariant +
+
+
+g_variant_compare, function in GVariant +
+
+
+g_variant_dup_bytestring, function in GVariant +
+
+
+g_variant_dup_bytestring_array, function in GVariant +
+
+
+g_variant_get_bytestring, function in GVariant +
+
+
+g_variant_get_bytestring_array, function in GVariant +
+
+
+g_variant_is_floating, function in GVariant +
+
+
+g_variant_new_bytestring, function in GVariant +
+
+
+g_variant_new_bytestring_array, function in GVariant +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-28.html b/docs/reference/glib/html/api-index-2-28.html new file mode 100644 index 0000000..af112dc --- /dev/null +++ b/docs/reference/glib/html/api-index-2-28.html @@ -0,0 +1,121 @@ + + + + +Index of new symbols in 2.28: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.28

+

G

+
+g_get_environ, function in Miscellaneous Utility Functions +
+
+
+g_get_locale_variants, function in I18N +
+
+
+g_get_monotonic_time, function in Date and Time Functions +
+
+
+g_get_real_time, function in Date and Time Functions +
+
+
+g_get_user_runtime_dir, function in Miscellaneous Utility Functions +
+
+

L

+
+g_list_free_full, function in Doubly-Linked Lists +
+
+

M

+
+g_main_context_invoke, function in The Main Event Loop +
+
+
+g_main_context_invoke_full, function in The Main Event Loop +
+
+

S

+
+g_sequence_lookup, function in Sequences +
+
+
+g_sequence_lookup_iter, function in Sequences +
+
+
+g_slist_free_full, function in Singly-Linked Lists +
+
+
+g_source_add_child_source, function in The Main Event Loop +
+
+
+g_source_get_time, function in The Main Event Loop +
+
+
+g_source_remove_child_source, function in The Main Event Loop +
+
+

T

+
+GTestDataFunc, user_function in Testing +
+
+
+GTestFixtureFunc, user_function in Testing +
+
+
+GTestFunc, user_function in Testing +
+
+

V

+
+g_variant_lookup, function in GVariant +
+
+
+g_variant_lookup_value, function in GVariant +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-30.html b/docs/reference/glib/html/api-index-2-30.html new file mode 100644 index 0000000..c958b88 --- /dev/null +++ b/docs/reference/glib/html/api-index-2-30.html @@ -0,0 +1,251 @@ + + + + +Index of new symbols in 2.30: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.30

+

A

+
+g_atomic_int_and, function in Atomic Operations +
+
+
+g_atomic_int_or, function in Atomic Operations +
+
+
+g_atomic_int_xor, function in Atomic Operations +
+
+
+g_atomic_pointer_add, function in Atomic Operations +
+
+
+g_atomic_pointer_and, function in Atomic Operations +
+
+
+g_atomic_pointer_or, function in Atomic Operations +
+
+
+g_atomic_pointer_xor, function in Atomic Operations +
+
+

C

+
+g_compute_hmac_for_data, function in Data HMACs +
+
+
+g_compute_hmac_for_string, function in Data HMACs +
+
+

D

+
+g_dir_make_tmp, function in File Utilities +
+
+

F

+
+g_format_size, function in Miscellaneous Utility Functions +
+
+
+g_format_size_full, function in Miscellaneous Utility Functions +
+
+

H

+
+g_hash_table_iter_replace, function in Hash Tables +
+
+
+GHmac, struct in Data HMACs +
+
+
+g_hmac_copy, function in Data HMACs +
+
+
+g_hmac_get_digest, function in Data HMACs +
+
+
+g_hmac_get_string, function in Data HMACs +
+
+
+g_hmac_new, function in Data HMACs +
+
+
+g_hmac_ref, function in Data HMACs +
+
+
+g_hmac_unref, function in Data HMACs +
+
+
+g_hmac_update, function in Data HMACs +
+
+

M

+
+g_match_info_ref, function in Perl-compatible regular expressions +
+
+
+g_match_info_unref, function in Perl-compatible regular expressions +
+
+
+g_mkdtemp, function in File Utilities +
+
+
+g_mkdtemp_full, function in File Utilities +
+
+

P

+
+g_pointer_bit_lock, function in Threads +
+
+
+g_pointer_bit_trylock, function in Threads +
+
+
+g_pointer_bit_unlock, function in Threads +
+
+
+g_ptr_array_new_full, function in Pointer Arrays +
+
+

R

+
+g_regex_escape_nul, function in Perl-compatible regular expressions +
+
+

S

+
+G_STATIC_ASSERT_EXPR, macro in Miscellaneous Macros +
+
+

T

+
+g_test_fail, function in Testing +
+
+

U

+
+g_unichar_compose, function in Unicode Manipulation +
+
+
+g_unichar_decompose, function in Unicode Manipulation +
+
+
+g_unichar_fully_decompose, function in Unicode Manipulation +
+
+
+g_unicode_script_from_iso15924, function in Unicode Manipulation +
+
+
+g_unicode_script_to_iso15924, function in Unicode Manipulation +
+
+
+g_unix_open_pipe, function in UNIX-specific utilities and integration +
+
+
+g_unix_set_fd_nonblocking, function in UNIX-specific utilities and integration +
+
+
+g_unix_signal_add, function in UNIX-specific utilities and integration +
+
+
+g_unix_signal_add_full, function in UNIX-specific utilities and integration +
+
+
+g_unix_signal_source_new, function in UNIX-specific utilities and integration +
+
+
+g_utf8_substring, function in Unicode Manipulation +
+
+

V

+
+g_variant_dup_objv, function in GVariant +
+
+
+g_variant_get_objv, function in GVariant +
+
+
+g_variant_new_objv, function in GVariant +
+
+
+G_VARIANT_TYPE_VARDICT, macro in GVariantType +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-32.html b/docs/reference/glib/html/api-index-2-32.html new file mode 100644 index 0000000..9a5ff4a --- /dev/null +++ b/docs/reference/glib/html/api-index-2-32.html @@ -0,0 +1,342 @@ + + + + +Index of new symbols in 2.32: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.32

+

A

+
+g_array_set_clear_func, function in Arrays +
+
+

B

+
+GBytes, struct in Byte Arrays +
+
+
+g_bytes_compare, function in Byte Arrays +
+
+
+g_bytes_equal, function in Byte Arrays +
+
+
+g_bytes_get_data, function in Byte Arrays +
+
+
+g_bytes_get_size, function in Byte Arrays +
+
+
+g_bytes_hash, function in Byte Arrays +
+
+
+g_bytes_new, function in Byte Arrays +
+
+
+g_bytes_new_from_bytes, function in Byte Arrays +
+
+
+g_bytes_new_static, function in Byte Arrays +
+
+
+g_bytes_new_take, function in Byte Arrays +
+
+
+g_bytes_new_with_free_func, function in Byte Arrays +
+
+
+g_bytes_ref, function in Byte Arrays +
+
+
+g_bytes_unref, function in Byte Arrays +
+
+
+g_bytes_unref_to_array, function in Byte Arrays +
+
+
+g_bytes_unref_to_data, function in Byte Arrays +
+
+
+g_byte_array_free_to_bytes, function in Byte Arrays +
+
+
+g_byte_array_new_take, function in Byte Arrays +
+
+

C

+
+g_cond_clear, function in Threads +
+
+
+g_cond_init, function in Threads +
+
+
+g_cond_wait_until, function in Threads +
+
+

D

+
+G_DEPRECATED, macro in Miscellaneous Macros +
+
+
+G_DEPRECATED_FOR, macro in Miscellaneous Macros +
+
+

E

+
+g_environ_getenv, function in Miscellaneous Utility Functions +
+
+
+g_environ_setenv, function in Miscellaneous Utility Functions +
+
+
+g_environ_unsetenv, function in Miscellaneous Utility Functions +
+
+

G

+
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS, macro in Miscellaneous Macros +
+
+
+G_GNUC_END_IGNORE_DEPRECATIONS, macro in Miscellaneous Macros +
+
+

H

+
+g_hash_table_add, function in Hash Tables +
+
+
+g_hash_table_contains, function in Hash Tables +
+
+

K

+
+g_key_file_ref, function in Key-value file parser +
+
+
+g_key_file_unref, function in Key-value file parser +
+
+

L

+
+GLIB_VERSION_2_26, macro in Version Information +
+
+
+GLIB_VERSION_2_28, macro in Version Information +
+
+
+GLIB_VERSION_2_30, macro in Version Information +
+
+
+GLIB_VERSION_2_32, macro in Version Information +
+
+
+GLIB_VERSION_MAX_ALLOWED, macro in Version Information +
+
+
+GLIB_VERSION_MIN_REQUIRED, macro in Version Information +
+
+

M

+
+g_main_context_ref_thread_default, function in The Main Event Loop +
+
+
+g_mapped_file_new_from_fd, function in File Utilities +
+
+
+g_mutex_init, function in Threads +
+
+

P

+
+G_PRIVATE_INIT, macro in Threads +
+
+
+g_private_replace, function in Threads +
+
+

Q

+
+g_queue_free_full, function in Double-ended Queues +
+
+

R

+
+GRecMutex, struct in Threads +
+
+
+g_rec_mutex_init, function in Threads +
+
+
+g_rec_mutex_lock, function in Threads +
+
+
+g_rec_mutex_trylock, function in Threads +
+
+
+g_rec_mutex_unlock, function in Threads +
+
+
+GRWLock, struct in Threads +
+
+
+g_rw_lock_init, function in Threads +
+
+
+g_rw_lock_reader_lock, function in Threads +
+
+
+g_rw_lock_reader_trylock, function in Threads +
+
+
+g_rw_lock_reader_unlock, function in Threads +
+
+
+g_rw_lock_writer_lock, function in Threads +
+
+
+g_rw_lock_writer_trylock, function in Threads +
+
+
+g_rw_lock_writer_unlock, function in Threads +
+
+

S

+
+G_SOURCE_CONTINUE, macro in The Main Event Loop +
+
+
+G_SOURCE_REMOVE, macro in The Main Event Loop +
+
+

T

+
+g_thread_new, function in Threads +
+
+
+g_thread_ref, function in Threads +
+
+
+g_thread_try_new, function in Threads +
+
+
+g_thread_unref, function in Threads +
+
+

U

+
+G_UNAVAILABLE, macro in Miscellaneous Macros +
+
+
+G_UNICHAR_MAX_DECOMPOSITION_LENGTH, macro in Unicode Manipulation +
+
+

V

+
+g_variant_new_fixed_array, function in GVariant +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-34.html b/docs/reference/glib/html/api-index-2-34.html new file mode 100644 index 0000000..71ab7d1 --- /dev/null +++ b/docs/reference/glib/html/api-index-2-34.html @@ -0,0 +1,115 @@ + + + + +Index of new symbols in 2.34: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.34

+

C

+
+g_clear_pointer, function in Memory Allocation +
+
+
+g_compute_checksum_for_bytes, function in Data Checksums +
+
+

D

+
+g_datalist_id_dup_data, function in Keyed Data Lists +
+
+
+g_datalist_id_replace_data, function in Keyed Data Lists +
+
+
+G_DEFINE_QUARK, macro in Quarks +
+
+

L

+
+GLIB_VERSION_2_34, macro in Version Information +
+
+
+g_list_copy_deep, function in Doubly-Linked Lists +
+
+

M

+
+g_mapped_file_get_bytes, function in File Utilities +
+
+

R

+
+g_regex_get_has_cr_or_lf, function in Perl-compatible regular expressions +
+
+

S

+
+g_slist_copy_deep, function in Singly-Linked Lists +
+
+
+g_spawn_check_exit_status, function in Spawning Processes +
+
+
+g_string_free_to_bytes, function in Strings +
+
+

T

+
+g_test_add_data_func_full, function in Testing +
+
+
+g_test_assert_expected_messages, macro in Testing +
+
+
+g_test_expect_message, function in Testing +
+
+

V

+
+g_variant_check_format_string, function in GVariant +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-36.html b/docs/reference/glib/html/api-index-2-36.html new file mode 100644 index 0000000..4455abf --- /dev/null +++ b/docs/reference/glib/html/api-index-2-36.html @@ -0,0 +1,115 @@ + + + + +Index of new symbols in 2.36: GLib Reference Manual + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-38.html b/docs/reference/glib/html/api-index-2-38.html new file mode 100644 index 0000000..45011b5 --- /dev/null +++ b/docs/reference/glib/html/api-index-2-38.html @@ -0,0 +1,121 @@ + + + + +Index of new symbols in 2.38: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.38

+

A

+
+g_assert_false, macro in Testing +
+
+
+g_assert_null, macro in Testing +
+
+
+g_assert_true, macro in Testing +
+
+

K

+
+G_KEY_FILE_DESKTOP_KEY_ACTIONS, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE, macro in Key-value file parser +
+
+

L

+
+GLIB_VERSION_2_38, macro in Version Information +
+
+

R

+
+g_regex_get_max_lookbehind, function in Perl-compatible regular expressions +
+
+

T

+
+GTestFileType, enum in Testing +
+
+
+g_test_build_filename, function in Testing +
+
+
+g_test_failed, function in Testing +
+
+
+g_test_get_dir, function in Testing +
+
+
+g_test_get_filename, function in Testing +
+
+
+g_test_incomplete, function in Testing +
+
+
+g_test_set_nonfatal_assertions, function in Testing +
+
+
+g_test_skip, function in Testing +
+
+
+g_test_subprocess, function in Testing +
+
+
+g_test_trap_subprocess, function in Testing +
+
+

V

+
+g_variant_new_printf, function in GVariant +
+
+
+g_variant_new_take_string, function in GVariant +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-4.html b/docs/reference/glib/html/api-index-2-4.html new file mode 100644 index 0000000..f9d18fb --- /dev/null +++ b/docs/reference/glib/html/api-index-2-4.html @@ -0,0 +1,398 @@ + + + + +Index of new symbols in 2.4: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.4

+

A

+
+g_array_remove_range, function in Arrays +
+
+
+g_atomic_int_add, function in Atomic Operations +
+
+
+g_atomic_int_compare_and_exchange, function in Atomic Operations +
+
+
+g_atomic_int_dec_and_test, function in Atomic Operations +
+
+
+g_atomic_int_exchange_and_add, function in Atomic Operations +
+
+
+g_atomic_int_get, function in Atomic Operations +
+
+
+g_atomic_int_inc, function in Atomic Operations +
+
+
+g_atomic_int_set, function in Atomic Operations +
+
+
+g_atomic_pointer_compare_and_exchange, function in Atomic Operations +
+
+
+g_atomic_pointer_get, function in Atomic Operations +
+
+
+g_atomic_pointer_set, function in Atomic Operations +
+
+

B

+
+g_byte_array_remove_range, function in Byte Arrays +
+
+

C

+
+g_child_watch_add, function in The Main Event Loop +
+
+
+g_child_watch_add_full, function in The Main Event Loop +
+
+
+g_child_watch_source_new, function in The Main Event Loop +
+
+
+g_completion_complete_utf8, function in Automatic String Completion +
+
+
+GCopyFunc, user_function in N-ary Trees +
+
+

F

+
+g_file_read_link, function in File Utilities +
+
+

G

+
+G_GINT16_MODIFIER, macro in Basic Types +
+
+
+G_GINT32_MODIFIER, macro in Basic Types +
+
+
+G_GINT64_MODIFIER, macro in Basic Types +
+
+

H

+
+g_hash_table_find, function in Hash Tables +
+
+

M

+
+g_markup_printf_escaped, function in Simple XML Subset Parser +
+
+
+g_markup_vprintf_escaped, function in Simple XML Subset Parser +
+
+
+G_MAXINT16, macro in Basic Types +
+
+
+G_MAXINT32, macro in Basic Types +
+
+
+G_MAXINT8, macro in Basic Types +
+
+
+G_MAXSIZE, macro in Basic Types +
+
+
+G_MAXUINT16, macro in Basic Types +
+
+
+G_MAXUINT32, macro in Basic Types +
+
+
+G_MAXUINT8, macro in Basic Types +
+
+
+G_MININT16, macro in Basic Types +
+
+
+G_MININT32, macro in Basic Types +
+
+
+G_MININT8, macro in Basic Types +
+
+

N

+
+g_node_copy_deep, function in N-ary Trees +
+
+
+N_, macro in I18N +
+
+

O

+
+GOnce, struct in Threads +
+
+
+g_once, macro in Threads +
+
+
+GOnceStatus, enum in Threads +
+
+
+G_ONCE_INIT, macro in Threads +
+
+

P

+
+g_ptr_array_foreach, function in Pointer Arrays +
+
+
+g_ptr_array_remove_range, function in Pointer Arrays +
+
+

Q

+
+g_queue_copy, function in Double-ended Queues +
+
+
+g_queue_delete_link, function in Double-ended Queues +
+
+
+g_queue_find, function in Double-ended Queues +
+
+
+g_queue_find_custom, function in Double-ended Queues +
+
+
+g_queue_foreach, function in Double-ended Queues +
+
+
+g_queue_get_length, function in Double-ended Queues +
+
+
+g_queue_index, function in Double-ended Queues +
+
+
+g_queue_insert_after, function in Double-ended Queues +
+
+
+g_queue_insert_before, function in Double-ended Queues +
+
+
+g_queue_insert_sorted, function in Double-ended Queues +
+
+
+g_queue_link_index, function in Double-ended Queues +
+
+
+g_queue_peek_head_link, function in Double-ended Queues +
+
+
+g_queue_peek_nth, function in Double-ended Queues +
+
+
+g_queue_peek_nth_link, function in Double-ended Queues +
+
+
+g_queue_peek_tail_link, function in Double-ended Queues +
+
+
+g_queue_pop_nth, function in Double-ended Queues +
+
+
+g_queue_pop_nth_link, function in Double-ended Queues +
+
+
+g_queue_push_nth, function in Double-ended Queues +
+
+
+g_queue_push_nth_link, function in Double-ended Queues +
+
+
+g_queue_remove, function in Double-ended Queues +
+
+
+g_queue_remove_all, function in Double-ended Queues +
+
+
+g_queue_reverse, function in Double-ended Queues +
+
+
+g_queue_sort, function in Double-ended Queues +
+
+
+g_queue_unlink, function in Double-ended Queues +
+
+
+Q_, macro in I18N +
+
+

R

+
+g_rand_copy, function in Random Numbers +
+
+
+g_rand_new_with_seed_array, function in Random Numbers +
+
+
+g_rand_set_seed_array, function in Random Numbers +
+
+

S

+
+g_setenv, function in Miscellaneous Utility Functions +
+
+
+G_STRFUNC, macro in Miscellaneous Macros +
+
+
+g_string_chunk_insert_len, function in String Chunks +
+
+
+g_strip_context, function in I18N +
+
+
+g_strsplit_set, function in String Utility Functions +
+
+

T

+
+g_timer_continue, function in Timers +
+
+

U

+
+g_unichar_get_mirror_char, function in Unicode Manipulation +
+
+
+g_unsetenv, function in Miscellaneous Utility Functions +
+
+

V

+
+g_vasprintf, function in String Utility Functions +
+
+

_

+
+_, macro in I18N +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-40.html b/docs/reference/glib/html/api-index-2-40.html new file mode 100644 index 0000000..136b8a7 --- /dev/null +++ b/docs/reference/glib/html/api-index-2-40.html @@ -0,0 +1,161 @@ + + + + +Index of new symbols in 2.40: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.40

+

A

+
+g_assert_nonnull, macro in Testing +
+
+

H

+
+g_hash_table_get_keys_as_array, function in Hash Tables +
+
+

I

+
+g_info, macro in Message Logging +
+
+

K

+
+g_key_file_save_to_file, function in Key-value file parser +
+
+

L

+
+GLIB_VERSION_2_40, macro in Version Information +
+
+

O

+
+g_option_context_parse_strv, function in Commandline option parser +
+
+

P

+
+g_ptr_array_insert, function in Pointer Arrays +
+
+

S

+
+g_str_is_ascii, function in String Utility Functions +
+
+
+g_str_match_string, function in String Utility Functions +
+
+
+g_str_tokenize_and_fold, function in String Utility Functions +
+
+
+g_str_to_ascii, function in String Utility Functions +
+
+

V

+
+GVariantDict, struct in GVariant +
+
+
+g_variant_dict_clear, function in GVariant +
+
+
+g_variant_dict_contains, function in GVariant +
+
+
+g_variant_dict_end, function in GVariant +
+
+
+g_variant_dict_init, function in GVariant +
+
+
+g_variant_dict_insert, function in GVariant +
+
+
+g_variant_dict_insert_value, function in GVariant +
+
+
+g_variant_dict_lookup, function in GVariant +
+
+
+g_variant_dict_lookup_value, function in GVariant +
+
+
+g_variant_dict_new, function in GVariant +
+
+
+g_variant_dict_ref, function in GVariant +
+
+
+g_variant_dict_remove, function in GVariant +
+
+
+g_variant_dict_unref, function in GVariant +
+
+
+g_variant_parse_error_print_context, function in GVariant +
+
+

W

+
+g_win32_get_command_line, function in Windows Compatibility Functions +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-42.html b/docs/reference/glib/html/api-index-2-42.html new file mode 100644 index 0000000..e9dc1d6 --- /dev/null +++ b/docs/reference/glib/html/api-index-2-42.html @@ -0,0 +1,41 @@ + + + + +Index of new symbols in 2.42: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.42

+

G

+
+G_GNUC_CHECK_VERSION, macro in Miscellaneous Macros +
+
+

L

+
+GLIB_VERSION_2_42, macro in Version Information +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-44.html b/docs/reference/glib/html/api-index-2-44.html new file mode 100644 index 0000000..18189f0 --- /dev/null +++ b/docs/reference/glib/html/api-index-2-44.html @@ -0,0 +1,116 @@ + + + + +Index of new symbols in 2.44: GLib Reference Manual + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-46.html b/docs/reference/glib/html/api-index-2-46.html new file mode 100644 index 0000000..ab4c639 --- /dev/null +++ b/docs/reference/glib/html/api-index-2-46.html @@ -0,0 +1,68 @@ + + + + +Index of new symbols in 2.46: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.46

+

A

+
+g_assert_cmpmem, macro in Testing +
+
+
+g_async_queue_push_front, function in Asynchronous Queues +
+
+
+g_async_queue_push_front_unlocked, function in Asynchronous Queues +
+
+
+g_async_queue_remove, function in Asynchronous Queues +
+
+
+g_async_queue_remove_unlocked, function in Asynchronous Queues +
+
+

L

+
+GLIB_VERSION_2_46, macro in Version Information +
+
+
+g_log_set_handler_full, function in Message Logging +
+
+

T

+
+g_thread_pool_move_to_front, function in Thread Pools +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-48.html b/docs/reference/glib/html/api-index-2-48.html new file mode 100644 index 0000000..8d7fd81 --- /dev/null +++ b/docs/reference/glib/html/api-index-2-48.html @@ -0,0 +1,68 @@ + + + + +Index of new symbols in 2.48: GLib Reference Manual + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-6.html b/docs/reference/glib/html/api-index-2-6.html new file mode 100644 index 0000000..d51f35d --- /dev/null +++ b/docs/reference/glib/html/api-index-2-6.html @@ -0,0 +1,415 @@ + + + + +Index of new symbols in 2.6: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.6

+

D

+
+g_date_get_iso8601_week_of_year, function in Date and Time Functions +
+
+
+g_debug, macro in Message Logging +
+
+

F

+
+g_filename_display_basename, function in Character Set Conversion +
+
+
+g_filename_display_name, function in Character Set Conversion +
+
+
+g_fopen, function in File Utilities +
+
+
+g_freopen, function in File Utilities +
+
+

G

+
+g_get_filename_charsets, function in Character Set Conversion +
+
+
+g_get_language_names, function in I18N +
+
+
+g_get_system_config_dirs, function in Miscellaneous Utility Functions +
+
+
+g_get_system_data_dirs, function in Miscellaneous Utility Functions +
+
+
+g_get_user_cache_dir, function in Miscellaneous Utility Functions +
+
+
+g_get_user_config_dir, function in Miscellaneous Utility Functions +
+
+
+g_get_user_data_dir, function in Miscellaneous Utility Functions +
+
+
+G_GNUC_INTERNAL, macro in Miscellaneous Macros +
+
+
+G_GNUC_MALLOC, macro in Miscellaneous Macros +
+
+
+G_GSIZE_FORMAT, macro in Basic Types +
+
+
+G_GSIZE_MODIFIER, macro in Basic Types +
+
+
+G_GSSIZE_FORMAT, macro in Basic Types +
+
+
+G_GSSIZE_MODIFIER, macro in Basic Types +
+
+

I

+
+G_IS_DIR_SEPARATOR, macro in Standard Macros +
+
+

K

+
+g_key_file_free, function in Key-value file parser +
+
+
+g_key_file_get_boolean, function in Key-value file parser +
+
+
+g_key_file_get_boolean_list, function in Key-value file parser +
+
+
+g_key_file_get_comment, function in Key-value file parser +
+
+
+g_key_file_get_groups, function in Key-value file parser +
+
+
+g_key_file_get_integer, function in Key-value file parser +
+
+
+g_key_file_get_integer_list, function in Key-value file parser +
+
+
+g_key_file_get_keys, function in Key-value file parser +
+
+
+g_key_file_get_locale_string, function in Key-value file parser +
+
+
+g_key_file_get_locale_string_list, function in Key-value file parser +
+
+
+g_key_file_get_start_group, function in Key-value file parser +
+
+
+g_key_file_get_string, function in Key-value file parser +
+
+
+g_key_file_get_string_list, function in Key-value file parser +
+
+
+g_key_file_get_value, function in Key-value file parser +
+
+
+g_key_file_has_group, function in Key-value file parser +
+
+
+g_key_file_has_key, function in Key-value file parser +
+
+
+g_key_file_load_from_data, function in Key-value file parser +
+
+
+g_key_file_load_from_data_dirs, function in Key-value file parser +
+
+
+g_key_file_load_from_file, function in Key-value file parser +
+
+
+g_key_file_new, function in Key-value file parser +
+
+
+g_key_file_remove_comment, function in Key-value file parser +
+
+
+g_key_file_remove_group, function in Key-value file parser +
+
+
+g_key_file_remove_key, function in Key-value file parser +
+
+
+g_key_file_set_boolean, function in Key-value file parser +
+
+
+g_key_file_set_boolean_list, function in Key-value file parser +
+
+
+g_key_file_set_comment, function in Key-value file parser +
+
+
+g_key_file_set_integer, function in Key-value file parser +
+
+
+g_key_file_set_integer_list, function in Key-value file parser +
+
+
+g_key_file_set_list_separator, function in Key-value file parser +
+
+
+g_key_file_set_locale_string, function in Key-value file parser +
+
+
+g_key_file_set_locale_string_list, function in Key-value file parser +
+
+
+g_key_file_set_string, function in Key-value file parser +
+
+
+g_key_file_set_string_list, function in Key-value file parser +
+
+
+g_key_file_set_value, function in Key-value file parser +
+
+
+g_key_file_to_data, function in Key-value file parser +
+
+

L

+
+glib_check_version, function in Version Information +
+
+
+g_log_set_default_handler, function in Message Logging +
+
+
+g_lstat, function in File Utilities +
+
+

M

+
+g_mkdir, function in File Utilities +
+
+

O

+
+g_open, function in File Utilities +
+
+
+g_option_context_add_group, function in Commandline option parser +
+
+
+g_option_context_add_main_entries, function in Commandline option parser +
+
+
+g_option_context_free, function in Commandline option parser +
+
+
+g_option_context_get_help_enabled, function in Commandline option parser +
+
+
+g_option_context_get_ignore_unknown_options, function in Commandline option parser +
+
+
+g_option_context_get_main_group, function in Commandline option parser +
+
+
+g_option_context_new, function in Commandline option parser +
+
+
+g_option_context_parse, function in Commandline option parser +
+
+
+g_option_context_set_help_enabled, function in Commandline option parser +
+
+
+g_option_context_set_ignore_unknown_options, function in Commandline option parser +
+
+
+g_option_context_set_main_group, function in Commandline option parser +
+
+
+g_option_group_add_entries, function in Commandline option parser +
+
+
+g_option_group_free, function in Commandline option parser +
+
+
+g_option_group_new, function in Commandline option parser +
+
+
+g_option_group_set_error_hook, function in Commandline option parser +
+
+
+g_option_group_set_parse_hooks, function in Commandline option parser +
+
+
+g_option_group_set_translate_func, function in Commandline option parser +
+
+
+g_option_group_set_translation_domain, function in Commandline option parser +
+
+
+G_OPTION_REMAINING, macro in Commandline option parser +
+
+

R

+
+g_remove, function in File Utilities +
+
+
+g_rename, function in File Utilities +
+
+
+g_rmdir, function in File Utilities +
+
+

S

+
+g_stat, function in File Utilities +
+
+
+g_strv_length, function in String Utility Functions +
+
+

U

+
+g_unlink, function in File Utilities +
+
+
+g_uri_list_extract_uris, function in URI Functions +
+
+

W

+
+G_WIN32_HAVE_WIDECHAR_API, macro in Windows Compatibility Functions +
+
+
+G_WIN32_IS_NT_BASED, macro in Windows Compatibility Functions +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-2-8.html b/docs/reference/glib/html/api-index-2-8.html new file mode 100644 index 0000000..3d6ca7d --- /dev/null +++ b/docs/reference/glib/html/api-index-2-8.html @@ -0,0 +1,156 @@ + + + + +Index of new symbols in 2.8: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.8

+

A

+
+g_access, function in File Utilities +
+
+

B

+
+g_build_filenamev, function in Miscellaneous Utility Functions +
+
+
+g_build_pathv, function in Miscellaneous Utility Functions +
+
+

C

+
+g_chdir, function in File Utilities +
+
+
+g_chmod, function in File Utilities +
+
+
+g_creat, function in File Utilities +
+
+

D

+
+g_datalist_get_flags, function in Keyed Data Lists +
+
+
+g_datalist_set_flags, function in Keyed Data Lists +
+
+
+g_datalist_unset_flags, function in Keyed Data Lists +
+
+

F

+
+g_file_set_contents, function in File Utilities +
+
+

G

+
+g_get_host_name, function in Miscellaneous Utility Functions +
+
+
+G_GNUC_NULL_TERMINATED, macro in Miscellaneous Macros +
+
+

L

+
+g_listenv, function in Miscellaneous Utility Functions +
+
+

M

+
+g_mapped_file_free, function in File Utilities +
+
+
+g_mapped_file_get_contents, function in File Utilities +
+
+
+g_mapped_file_get_length, function in File Utilities +
+
+
+g_mapped_file_new, function in File Utilities +
+
+
+g_mkdir_with_parents, function in File Utilities +
+
+

T

+
+g_try_malloc0, function in Memory Allocation +
+
+
+g_try_new, macro in Memory Allocation +
+
+
+g_try_new0, macro in Memory Allocation +
+
+
+g_try_renew, macro in Memory Allocation +
+
+

U

+
+g_utf8_collate_key_for_filename, function in Unicode Manipulation +
+
+

W

+
+g_win32_locale_filename_from_utf8, function in Windows Compatibility Functions +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-deprecated.html b/docs/reference/glib/html/api-index-deprecated.html new file mode 100644 index 0000000..836141f --- /dev/null +++ b/docs/reference/glib/html/api-index-deprecated.html @@ -0,0 +1,645 @@ + + + + +Index of deprecated symbols: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of deprecated symbols

+

A

+
+g_async_queue_ref_unlocked, function in Asynchronous Queues +
+
+
+g_async_queue_timed_pop, function in Asynchronous Queues +
+
+
+g_async_queue_timed_pop_unlocked, function in Asynchronous Queues +
+
+
+g_async_queue_unref_and_unlock, function in Asynchronous Queues +
+
+
+g_atexit, function in Miscellaneous Utility Functions +
+
+
+g_atomic_int_exchange_and_add, function in Atomic Operations +
+
+

B

+
+g_basename, function in Miscellaneous Utility Functions +
+
+

C

+
+GCache, struct in Caches +
+
+
+GCacheDestroyFunc, user_function in Caches +
+
+
+GCacheDupFunc, user_function in Caches +
+
+
+GCacheNewFunc, user_function in Caches +
+
+
+g_cache_destroy, function in Caches +
+
+
+g_cache_insert, function in Caches +
+
+
+g_cache_key_foreach, function in Caches +
+
+
+g_cache_new, function in Caches +
+
+
+g_cache_remove, function in Caches +
+
+
+g_cache_value_foreach, function in Caches +
+
+
+g_completion_add_items, function in Automatic String Completion +
+
+
+g_completion_clear_items, function in Automatic String Completion +
+
+
+g_completion_complete, function in Automatic String Completion +
+
+
+g_completion_complete_utf8, function in Automatic String Completion +
+
+
+g_completion_free, function in Automatic String Completion +
+
+
+g_completion_new, function in Automatic String Completion +
+
+
+g_completion_remove_items, function in Automatic String Completion +
+
+
+g_completion_set_compare, function in Automatic String Completion +
+
+
+g_cond_free, function in Deprecated Thread APIs +
+
+
+g_cond_new, function in Deprecated Thread APIs +
+
+
+g_cond_timed_wait, function in Threads +
+
+
+G_CONST_RETURN, macro in Standard Macros +
+
+

D

+
+g_date_set_time, function in Date and Time Functions +
+
+
+g_dirname, macro in Miscellaneous Utility Functions +
+
+

F

+
+g_format_size_for_display, function in Miscellaneous Utility Functions +
+
+

G

+
+G_GNUC_FUNCTION, macro in Miscellaneous Macros +
+
+
+G_GNUC_PRETTY_FUNCTION, macro in Miscellaneous Macros +
+
+

H

+
+g_hash_table_freeze, macro in Hash Tables +
+
+
+g_hash_table_thaw, macro in Hash Tables +
+
+

I

+
+G_INLINE_FUNC, macro in Miscellaneous Macros +
+
+
+g_io_channel_close, function in IO Channels +
+
+
+g_io_channel_read, function in IO Channels +
+
+
+g_io_channel_seek, function in IO Channels +
+
+
+g_io_channel_write, function in IO Channels +
+
+

L

+
+glib_mem_profiler_table, variable in Memory Allocation +
+
+

M

+
+g_main_destroy, macro in The Main Event Loop +
+
+
+g_main_is_running, macro in The Main Event Loop +
+
+
+g_main_iteration, macro in The Main Event Loop +
+
+
+g_main_new, macro in The Main Event Loop +
+
+
+g_main_pending, macro in The Main Event Loop +
+
+
+g_main_quit, macro in The Main Event Loop +
+
+
+g_main_run, macro in The Main Event Loop +
+
+
+g_main_set_poll_func, macro in The Main Event Loop +
+
+
+g_mapped_file_free, function in File Utilities +
+
+
+g_memmove, macro in Memory Allocation +
+
+
+g_mem_is_system_malloc, function in Memory Allocation +
+
+
+g_mem_profile, function in Memory Allocation +
+
+
+g_mem_set_vtable, function in Memory Allocation +
+
+
+g_mutex_free, function in Deprecated Thread APIs +
+
+
+g_mutex_new, function in Deprecated Thread APIs +
+
+

O

+
+g_option_group_free, function in Commandline option parser +
+
+

P

+
+g_private_new, function in Deprecated Thread APIs +
+
+

R

+
+g_relation_count, function in Relations and Tuples +
+
+
+g_relation_delete, function in Relations and Tuples +
+
+
+g_relation_destroy, function in Relations and Tuples +
+
+
+g_relation_exists, function in Relations and Tuples +
+
+
+g_relation_index, function in Relations and Tuples +
+
+
+g_relation_insert, function in Relations and Tuples +
+
+
+g_relation_new, function in Relations and Tuples +
+
+
+g_relation_print, function in Relations and Tuples +
+
+
+g_relation_select, function in Relations and Tuples +
+
+

S

+
+g_scanner_add_symbol, macro in Lexical Scanner +
+
+
+g_scanner_foreach_symbol, macro in Lexical Scanner +
+
+
+g_scanner_freeze_symbol_table, macro in Lexical Scanner +
+
+
+g_scanner_remove_symbol, macro in Lexical Scanner +
+
+
+g_scanner_thaw_symbol_table, macro in Lexical Scanner +
+
+
+g_source_get_current_time, function in The Main Event Loop +
+
+
+GStaticPrivate, struct in Deprecated Thread APIs +
+
+
+GStaticRecMutex, struct in Deprecated Thread APIs +
+
+
+GStaticRWLock, struct in Deprecated Thread APIs +
+
+
+g_static_mutex_free, function in Deprecated Thread APIs +
+
+
+g_static_mutex_get_mutex, function in Deprecated Thread APIs +
+
+
+G_STATIC_MUTEX_INIT, macro in Deprecated Thread APIs +
+
+
+g_static_mutex_init, function in Deprecated Thread APIs +
+
+
+g_static_mutex_lock, function in Deprecated Thread APIs +
+
+
+g_static_mutex_trylock, function in Deprecated Thread APIs +
+
+
+g_static_mutex_unlock, function in Deprecated Thread APIs +
+
+
+g_static_private_free, function in Deprecated Thread APIs +
+
+
+g_static_private_get, function in Deprecated Thread APIs +
+
+
+G_STATIC_PRIVATE_INIT, macro in Deprecated Thread APIs +
+
+
+g_static_private_init, function in Deprecated Thread APIs +
+
+
+g_static_private_set, function in Deprecated Thread APIs +
+
+
+g_static_rec_mutex_free, function in Deprecated Thread APIs +
+
+
+G_STATIC_REC_MUTEX_INIT, macro in Deprecated Thread APIs +
+
+
+g_static_rec_mutex_init, function in Deprecated Thread APIs +
+
+
+g_static_rec_mutex_lock, function in Deprecated Thread APIs +
+
+
+g_static_rec_mutex_lock_full, function in Deprecated Thread APIs +
+
+
+g_static_rec_mutex_trylock, function in Deprecated Thread APIs +
+
+
+g_static_rec_mutex_unlock, function in Deprecated Thread APIs +
+
+
+g_static_rec_mutex_unlock_full, function in Deprecated Thread APIs +
+
+
+g_static_rw_lock_free, function in Deprecated Thread APIs +
+
+
+G_STATIC_RW_LOCK_INIT, macro in Deprecated Thread APIs +
+
+
+g_static_rw_lock_init, function in Deprecated Thread APIs +
+
+
+g_static_rw_lock_reader_lock, function in Deprecated Thread APIs +
+
+
+g_static_rw_lock_reader_trylock, function in Deprecated Thread APIs +
+
+
+g_static_rw_lock_reader_unlock, function in Deprecated Thread APIs +
+
+
+g_static_rw_lock_writer_lock, function in Deprecated Thread APIs +
+
+
+g_static_rw_lock_writer_trylock, function in Deprecated Thread APIs +
+
+
+g_static_rw_lock_writer_unlock, function in Deprecated Thread APIs +
+
+
+g_strcasecmp, function in String Utility Functions +
+
+
+g_strdown, function in String Utility Functions +
+
+
+g_string_down, function in Strings +
+
+
+g_string_sprintf, macro in Strings +
+
+
+g_string_sprintfa, macro in Strings +
+
+
+g_string_up, function in Strings +
+
+
+g_strncasecmp, function in String Utility Functions +
+
+
+g_strup, function in String Utility Functions +
+
+

T

+
+GTestTrapFlags, enum in Testing +
+
+
+g_test_trap_fork, function in Testing +
+
+
+GThreadPriority, enum in Deprecated Thread APIs +
+
+
+G_THREADS_IMPL_POSIX, macro in Deprecated Thread APIs +
+
+
+G_THREADS_IMPL_WIN32, macro in Deprecated Thread APIs +
+
+
+g_thread_create, function in Deprecated Thread APIs +
+
+
+g_thread_create_full, function in Deprecated Thread APIs +
+
+
+g_thread_foreach, function in Deprecated Thread APIs +
+
+
+g_thread_get_initialized, function in Deprecated Thread APIs +
+
+
+g_thread_init, function in Deprecated Thread APIs +
+
+
+g_thread_set_priority, function in Deprecated Thread APIs +
+
+
+g_thread_supported, function in Deprecated Thread APIs +
+
+
+GTrashStack, struct in Trash Stacks +
+
+
+g_trash_stack_height, function in Trash Stacks +
+
+
+g_trash_stack_peek, function in Trash Stacks +
+
+
+g_trash_stack_pop, function in Trash Stacks +
+
+
+g_trash_stack_push, function in Trash Stacks +
+
+
+g_tree_traverse, function in Balanced Binary Trees +
+
+
+g_tuples_destroy, function in Relations and Tuples +
+
+
+g_tuples_index, function in Relations and Tuples +
+
+

U

+
+g_unicode_canonical_decomposition, function in Unicode Manipulation +
+
+
+G_UNICODE_COMBINING_MARK, macro in Unicode Manipulation +
+
+

V

+
+GVoidFunc, user_function in Miscellaneous Utility Functions +
+
+

W

+
+G_WIN32_DLLMAIN_FOR_DLL_NAME, macro in Windows Compatibility Functions +
+
+
+g_win32_get_package_installation_directory, function in Windows Compatibility Functions +
+
+
+g_win32_get_package_installation_subdirectory, function in Windows Compatibility Functions +
+
+
+g_win32_get_windows_version, function in Windows Compatibility Functions +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/api-index-full.html b/docs/reference/glib/html/api-index-full.html new file mode 100644 index 0000000..438b620 --- /dev/null +++ b/docs/reference/glib/html/api-index-full.html @@ -0,0 +1,9168 @@ + + + + +Index: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Index

+

A

+
+ABS, macro in Standard Macros +
+
+
+g_access, function in File Utilities +
+
+
+g_alloca, macro in Memory Allocation +
+
+
+GArray, struct in Arrays +
+
+
+g_array_append_val, macro in Arrays +
+
+
+g_array_append_vals, function in Arrays +
+
+
+g_array_free, function in Arrays +
+
+
+g_array_get_element_size, function in Arrays +
+
+
+g_array_index, macro in Arrays +
+
+
+g_array_insert_val, macro in Arrays +
+
+
+g_array_insert_vals, function in Arrays +
+
+
+g_array_new, function in Arrays +
+
+
+g_array_prepend_val, macro in Arrays +
+
+
+g_array_prepend_vals, function in Arrays +
+
+
+g_array_ref, function in Arrays +
+
+
+g_array_remove_index, function in Arrays +
+
+
+g_array_remove_index_fast, function in Arrays +
+
+
+g_array_remove_range, function in Arrays +
+
+
+g_array_set_clear_func, function in Arrays +
+
+
+g_array_set_size, function in Arrays +
+
+
+g_array_sized_new, function in Arrays +
+
+
+g_array_sort, function in Arrays +
+
+
+g_array_sort_with_data, function in Arrays +
+
+
+g_array_unref, function in Arrays +
+
+
+g_ascii_digit_value, function in String Utility Functions +
+
+
+g_ascii_dtostr, function in String Utility Functions +
+
+
+G_ASCII_DTOSTR_BUF_SIZE, macro in String Utility Functions +
+
+
+g_ascii_formatd, function in String Utility Functions +
+
+
+g_ascii_isalnum, function in String Utility Functions +
+
+
+g_ascii_isalpha, function in String Utility Functions +
+
+
+g_ascii_iscntrl, function in String Utility Functions +
+
+
+g_ascii_isdigit, function in String Utility Functions +
+
+
+g_ascii_isgraph, function in String Utility Functions +
+
+
+g_ascii_islower, function in String Utility Functions +
+
+
+g_ascii_isprint, function in String Utility Functions +
+
+
+g_ascii_ispunct, function in String Utility Functions +
+
+
+g_ascii_isspace, function in String Utility Functions +
+
+
+g_ascii_isupper, function in String Utility Functions +
+
+
+g_ascii_isxdigit, function in String Utility Functions +
+
+
+g_ascii_strcasecmp, function in String Utility Functions +
+
+
+g_ascii_strdown, function in String Utility Functions +
+
+
+g_ascii_strncasecmp, function in String Utility Functions +
+
+
+g_ascii_strtod, function in String Utility Functions +
+
+
+g_ascii_strtoll, function in String Utility Functions +
+
+
+g_ascii_strtoull, function in String Utility Functions +
+
+
+g_ascii_strup, function in String Utility Functions +
+
+
+g_ascii_tolower, function in String Utility Functions +
+
+
+g_ascii_toupper, function in String Utility Functions +
+
+
+g_ascii_xdigit_value, function in String Utility Functions +
+
+
+g_assert, macro in Testing +
+
+
+g_assert_cmpfloat, macro in Testing +
+
+
+g_assert_cmphex, macro in Testing +
+
+
+g_assert_cmpint, macro in Testing +
+
+
+g_assert_cmpmem, macro in Testing +
+
+
+g_assert_cmpstr, macro in Testing +
+
+
+g_assert_cmpuint, macro in Testing +
+
+
+g_assert_error, macro in Testing +
+
+
+g_assert_false, macro in Testing +
+
+
+g_assert_nonnull, macro in Testing +
+
+
+g_assert_not_reached, macro in Testing +
+
+
+g_assert_no_error, macro in Testing +
+
+
+g_assert_null, macro in Testing +
+
+
+g_assert_true, macro in Testing +
+
+
+GAsyncQueue, struct in Asynchronous Queues +
+
+
+g_async_queue_length, function in Asynchronous Queues +
+
+
+g_async_queue_length_unlocked, function in Asynchronous Queues +
+
+
+g_async_queue_lock, function in Asynchronous Queues +
+
+
+g_async_queue_new, function in Asynchronous Queues +
+
+
+g_async_queue_new_full, function in Asynchronous Queues +
+
+
+g_async_queue_pop, function in Asynchronous Queues +
+
+
+g_async_queue_pop_unlocked, function in Asynchronous Queues +
+
+
+g_async_queue_push, function in Asynchronous Queues +
+
+
+g_async_queue_push_front, function in Asynchronous Queues +
+
+
+g_async_queue_push_front_unlocked, function in Asynchronous Queues +
+
+
+g_async_queue_push_sorted, function in Asynchronous Queues +
+
+
+g_async_queue_push_sorted_unlocked, function in Asynchronous Queues +
+
+
+g_async_queue_push_unlocked, function in Asynchronous Queues +
+
+
+g_async_queue_ref, function in Asynchronous Queues +
+
+
+g_async_queue_ref_unlocked, function in Asynchronous Queues +
+
+
+g_async_queue_remove, function in Asynchronous Queues +
+
+
+g_async_queue_remove_unlocked, function in Asynchronous Queues +
+
+
+g_async_queue_sort, function in Asynchronous Queues +
+
+
+g_async_queue_sort_unlocked, function in Asynchronous Queues +
+
+
+g_async_queue_timed_pop, function in Asynchronous Queues +
+
+
+g_async_queue_timed_pop_unlocked, function in Asynchronous Queues +
+
+
+g_async_queue_timeout_pop, function in Asynchronous Queues +
+
+
+g_async_queue_timeout_pop_unlocked, function in Asynchronous Queues +
+
+
+g_async_queue_try_pop, function in Asynchronous Queues +
+
+
+g_async_queue_try_pop_unlocked, function in Asynchronous Queues +
+
+
+g_async_queue_unlock, function in Asynchronous Queues +
+
+
+g_async_queue_unref, function in Asynchronous Queues +
+
+
+g_async_queue_unref_and_unlock, function in Asynchronous Queues +
+
+
+g_atexit, function in Miscellaneous Utility Functions +
+
+
+g_atomic_int_add, function in Atomic Operations +
+
+
+g_atomic_int_and, function in Atomic Operations +
+
+
+g_atomic_int_compare_and_exchange, function in Atomic Operations +
+
+
+g_atomic_int_dec_and_test, function in Atomic Operations +
+
+
+g_atomic_int_exchange_and_add, function in Atomic Operations +
+
+
+g_atomic_int_get, function in Atomic Operations +
+
+
+g_atomic_int_inc, function in Atomic Operations +
+
+
+g_atomic_int_or, function in Atomic Operations +
+
+
+g_atomic_int_set, function in Atomic Operations +
+
+
+g_atomic_int_xor, function in Atomic Operations +
+
+
+G_ATOMIC_LOCK_FREE, macro in Atomic Operations +
+
+
+g_atomic_pointer_add, function in Atomic Operations +
+
+
+g_atomic_pointer_and, function in Atomic Operations +
+
+
+g_atomic_pointer_compare_and_exchange, function in Atomic Operations +
+
+
+g_atomic_pointer_get, function in Atomic Operations +
+
+
+g_atomic_pointer_or, function in Atomic Operations +
+
+
+g_atomic_pointer_set, function in Atomic Operations +
+
+
+g_atomic_pointer_xor, function in Atomic Operations +
+
+
+g_auto, macro in Miscellaneous Macros +
+
+
+g_autofree, macro in Miscellaneous Macros +
+
+
+g_autoptr, macro in Miscellaneous Macros +
+
+

B

+
+g_base64_decode, function in Base64 Encoding +
+
+
+g_base64_decode_inplace, function in Base64 Encoding +
+
+
+g_base64_decode_step, function in Base64 Encoding +
+
+
+g_base64_encode, function in Base64 Encoding +
+
+
+g_base64_encode_close, function in Base64 Encoding +
+
+
+g_base64_encode_step, function in Base64 Encoding +
+
+
+g_basename, function in Miscellaneous Utility Functions +
+
+
+G_BEGIN_DECLS, macro in Miscellaneous Macros +
+
+
+G_BIG_ENDIAN, macro in Byte Order Macros +
+
+
+g_bit_lock, function in Threads +
+
+
+g_bit_nth_lsf, macro in Miscellaneous Utility Functions +
+
+
+g_bit_nth_msf, macro in Miscellaneous Utility Functions +
+
+
+g_bit_storage, macro in Miscellaneous Utility Functions +
+
+
+g_bit_trylock, function in Threads +
+
+
+g_bit_unlock, function in Threads +
+
+
+GBookmarkFile, struct in Bookmark file parser +
+
+
+GBookmarkFileError, enum in Bookmark file parser +
+
+
+g_bookmark_file_add_application, function in Bookmark file parser +
+
+
+g_bookmark_file_add_group, function in Bookmark file parser +
+
+
+G_BOOKMARK_FILE_ERROR, macro in Bookmark file parser +
+
+
+g_bookmark_file_free, function in Bookmark file parser +
+
+
+g_bookmark_file_get_added, function in Bookmark file parser +
+
+
+g_bookmark_file_get_applications, function in Bookmark file parser +
+
+
+g_bookmark_file_get_app_info, function in Bookmark file parser +
+
+
+g_bookmark_file_get_description, function in Bookmark file parser +
+
+
+g_bookmark_file_get_groups, function in Bookmark file parser +
+
+
+g_bookmark_file_get_icon, function in Bookmark file parser +
+
+
+g_bookmark_file_get_is_private, function in Bookmark file parser +
+
+
+g_bookmark_file_get_mime_type, function in Bookmark file parser +
+
+
+g_bookmark_file_get_modified, function in Bookmark file parser +
+
+
+g_bookmark_file_get_size, function in Bookmark file parser +
+
+
+g_bookmark_file_get_title, function in Bookmark file parser +
+
+
+g_bookmark_file_get_uris, function in Bookmark file parser +
+
+
+g_bookmark_file_get_visited, function in Bookmark file parser +
+
+
+g_bookmark_file_has_application, function in Bookmark file parser +
+
+
+g_bookmark_file_has_group, function in Bookmark file parser +
+
+
+g_bookmark_file_has_item, function in Bookmark file parser +
+
+
+g_bookmark_file_load_from_data, function in Bookmark file parser +
+
+
+g_bookmark_file_load_from_data_dirs, function in Bookmark file parser +
+
+
+g_bookmark_file_load_from_file, function in Bookmark file parser +
+
+
+g_bookmark_file_move_item, function in Bookmark file parser +
+
+
+g_bookmark_file_new, function in Bookmark file parser +
+
+
+g_bookmark_file_remove_application, function in Bookmark file parser +
+
+
+g_bookmark_file_remove_group, function in Bookmark file parser +
+
+
+g_bookmark_file_remove_item, function in Bookmark file parser +
+
+
+g_bookmark_file_set_added, function in Bookmark file parser +
+
+
+g_bookmark_file_set_app_info, function in Bookmark file parser +
+
+
+g_bookmark_file_set_description, function in Bookmark file parser +
+
+
+g_bookmark_file_set_groups, function in Bookmark file parser +
+
+
+g_bookmark_file_set_icon, function in Bookmark file parser +
+
+
+g_bookmark_file_set_is_private, function in Bookmark file parser +
+
+
+g_bookmark_file_set_mime_type, function in Bookmark file parser +
+
+
+g_bookmark_file_set_modified, function in Bookmark file parser +
+
+
+g_bookmark_file_set_title, function in Bookmark file parser +
+
+
+g_bookmark_file_set_visited, function in Bookmark file parser +
+
+
+g_bookmark_file_to_data, function in Bookmark file parser +
+
+
+g_bookmark_file_to_file, function in Bookmark file parser +
+
+
+gboolean, typedef in Basic Types +
+
+
+G_BREAKPOINT, macro in Warnings and Assertions +
+
+
+g_build_filename, function in Miscellaneous Utility Functions +
+
+
+g_build_filenamev, function in Miscellaneous Utility Functions +
+
+
+g_build_path, function in Miscellaneous Utility Functions +
+
+
+g_build_pathv, function in Miscellaneous Utility Functions +
+
+
+GByteArray, struct in Byte Arrays +
+
+
+GBytes, struct in Byte Arrays +
+
+
+g_bytes_compare, function in Byte Arrays +
+
+
+g_bytes_equal, function in Byte Arrays +
+
+
+g_bytes_get_data, function in Byte Arrays +
+
+
+g_bytes_get_size, function in Byte Arrays +
+
+
+g_bytes_hash, function in Byte Arrays +
+
+
+g_bytes_new, function in Byte Arrays +
+
+
+g_bytes_new_from_bytes, function in Byte Arrays +
+
+
+g_bytes_new_static, function in Byte Arrays +
+
+
+g_bytes_new_take, function in Byte Arrays +
+
+
+g_bytes_new_with_free_func, function in Byte Arrays +
+
+
+g_bytes_ref, function in Byte Arrays +
+
+
+g_bytes_unref, function in Byte Arrays +
+
+
+g_bytes_unref_to_array, function in Byte Arrays +
+
+
+g_bytes_unref_to_data, function in Byte Arrays +
+
+
+g_byte_array_append, function in Byte Arrays +
+
+
+g_byte_array_free, function in Byte Arrays +
+
+
+g_byte_array_free_to_bytes, function in Byte Arrays +
+
+
+g_byte_array_new, function in Byte Arrays +
+
+
+g_byte_array_new_take, function in Byte Arrays +
+
+
+g_byte_array_prepend, function in Byte Arrays +
+
+
+g_byte_array_ref, function in Byte Arrays +
+
+
+g_byte_array_remove_index, function in Byte Arrays +
+
+
+g_byte_array_remove_index_fast, function in Byte Arrays +
+
+
+g_byte_array_remove_range, function in Byte Arrays +
+
+
+g_byte_array_set_size, function in Byte Arrays +
+
+
+g_byte_array_sized_new, function in Byte Arrays +
+
+
+g_byte_array_sort, function in Byte Arrays +
+
+
+g_byte_array_sort_with_data, function in Byte Arrays +
+
+
+g_byte_array_unref, function in Byte Arrays +
+
+
+G_BYTE_ORDER, macro in Byte Order Macros +
+
+

C

+
+GCache, struct in Caches +
+
+
+GCacheDestroyFunc, user_function in Caches +
+
+
+GCacheDupFunc, user_function in Caches +
+
+
+GCacheNewFunc, user_function in Caches +
+
+
+g_cache_destroy, function in Caches +
+
+
+g_cache_insert, function in Caches +
+
+
+g_cache_key_foreach, function in Caches +
+
+
+g_cache_new, function in Caches +
+
+
+g_cache_remove, function in Caches +
+
+
+g_cache_value_foreach, function in Caches +
+
+
+gchar, typedef in Basic Types +
+
+
+g_chdir, function in File Utilities +
+
+
+GChecksum, struct in Data Checksums +
+
+
+GChecksumType, enum in Data Checksums +
+
+
+g_checksum_copy, function in Data Checksums +
+
+
+g_checksum_free, function in Data Checksums +
+
+
+g_checksum_get_digest, function in Data Checksums +
+
+
+g_checksum_get_string, function in Data Checksums +
+
+
+g_checksum_new, function in Data Checksums +
+
+
+g_checksum_reset, function in Data Checksums +
+
+
+g_checksum_type_get_length, function in Data Checksums +
+
+
+g_checksum_update, function in Data Checksums +
+
+
+GChildWatchFunc, user_function in The Main Event Loop +
+
+
+g_child_watch_add, function in The Main Event Loop +
+
+
+g_child_watch_add_full, function in The Main Event Loop +
+
+
+g_child_watch_source_new, function in The Main Event Loop +
+
+
+g_chmod, function in File Utilities +
+
+
+CLAMP, macro in Standard Macros +
+
+
+g_clear_error, function in Error Reporting +
+
+
+g_clear_pointer, function in Memory Allocation +
+
+
+g_close, function in File Utilities +
+
+
+GCompareDataFunc, user_function in Doubly-Linked Lists +
+
+
+GCompareFunc, user_function in Doubly-Linked Lists +
+
+
+GCompletion, struct in Automatic String Completion +
+
+
+GCompletionFunc, user_function in Automatic String Completion +
+
+
+GCompletionStrncmpFunc, user_function in Automatic String Completion +
+
+
+g_completion_add_items, function in Automatic String Completion +
+
+
+g_completion_clear_items, function in Automatic String Completion +
+
+
+g_completion_complete, function in Automatic String Completion +
+
+
+g_completion_complete_utf8, function in Automatic String Completion +
+
+
+g_completion_free, function in Automatic String Completion +
+
+
+g_completion_new, function in Automatic String Completion +
+
+
+g_completion_remove_items, function in Automatic String Completion +
+
+
+g_completion_set_compare, function in Automatic String Completion +
+
+
+g_compute_checksum_for_bytes, function in Data Checksums +
+
+
+g_compute_checksum_for_data, function in Data Checksums +
+
+
+g_compute_checksum_for_string, function in Data Checksums +
+
+
+g_compute_hmac_for_data, function in Data HMACs +
+
+
+g_compute_hmac_for_string, function in Data HMACs +
+
+
+GCond, struct in Threads +
+
+
+g_cond_broadcast, function in Threads +
+
+
+g_cond_clear, function in Threads +
+
+
+g_cond_free, function in Deprecated Thread APIs +
+
+
+g_cond_init, function in Threads +
+
+
+g_cond_new, function in Deprecated Thread APIs +
+
+
+g_cond_signal, function in Threads +
+
+
+g_cond_timed_wait, function in Threads +
+
+
+g_cond_wait, function in Threads +
+
+
+g_cond_wait_until, function in Threads +
+
+
+gconstpointer, typedef in Basic Types +
+
+
+G_CONST_RETURN, macro in Standard Macros +
+
+
+g_convert, function in Character Set Conversion +
+
+
+GConvertError, enum in Character Set Conversion +
+
+
+G_CONVERT_ERROR, macro in Character Set Conversion +
+
+
+g_convert_with_fallback, function in Character Set Conversion +
+
+
+g_convert_with_iconv, function in Character Set Conversion +
+
+
+GCopyFunc, user_function in N-ary Trees +
+
+
+g_creat, function in File Utilities +
+
+
+g_critical, macro in Message Logging +
+
+
+G_CSET_A_2_Z, macro in Lexical Scanner +
+
+
+G_CSET_a_2_z, macro in Lexical Scanner +
+
+
+G_CSET_DIGITS, macro in Lexical Scanner +
+
+
+G_CSET_LATINC, macro in Lexical Scanner +
+
+
+G_CSET_LATINS, macro in Lexical Scanner +
+
+
+C_, macro in I18N +
+
+

D

+
+GData, struct in Keyed Data Lists +
+
+
+GDataForeachFunc, user_function in Datasets +
+
+
+g_datalist_clear, function in Keyed Data Lists +
+
+
+G_DATALIST_FLAGS_MASK, macro in Keyed Data Lists +
+
+
+g_datalist_foreach, function in Keyed Data Lists +
+
+
+g_datalist_get_data, function in Keyed Data Lists +
+
+
+g_datalist_get_flags, function in Keyed Data Lists +
+
+
+g_datalist_id_dup_data, function in Keyed Data Lists +
+
+
+g_datalist_id_get_data, function in Keyed Data Lists +
+
+
+g_datalist_id_remove_data, macro in Keyed Data Lists +
+
+
+g_datalist_id_remove_no_notify, function in Keyed Data Lists +
+
+
+g_datalist_id_replace_data, function in Keyed Data Lists +
+
+
+g_datalist_id_set_data, macro in Keyed Data Lists +
+
+
+g_datalist_id_set_data_full, function in Keyed Data Lists +
+
+
+g_datalist_init, function in Keyed Data Lists +
+
+
+g_datalist_remove_data, macro in Keyed Data Lists +
+
+
+g_datalist_remove_no_notify, macro in Keyed Data Lists +
+
+
+g_datalist_set_data, macro in Keyed Data Lists +
+
+
+g_datalist_set_data_full, macro in Keyed Data Lists +
+
+
+g_datalist_set_flags, function in Keyed Data Lists +
+
+
+g_datalist_unset_flags, function in Keyed Data Lists +
+
+
+g_dataset_destroy, function in Datasets +
+
+
+g_dataset_foreach, function in Datasets +
+
+
+g_dataset_get_data, macro in Datasets +
+
+
+g_dataset_id_get_data, function in Datasets +
+
+
+g_dataset_id_remove_data, macro in Datasets +
+
+
+g_dataset_id_remove_no_notify, function in Datasets +
+
+
+g_dataset_id_set_data, macro in Datasets +
+
+
+g_dataset_id_set_data_full, function in Datasets +
+
+
+g_dataset_remove_data, macro in Datasets +
+
+
+g_dataset_remove_no_notify, macro in Datasets +
+
+
+g_dataset_set_data, macro in Datasets +
+
+
+g_dataset_set_data_full, macro in Datasets +
+
+
+GDate, struct in Date and Time Functions +
+
+
+GDateDay, typedef in Date and Time Functions +
+
+
+GDateDMY, enum in Date and Time Functions +
+
+
+GDateMonth, enum in Date and Time Functions +
+
+
+GDateTime, struct in GDateTime +
+
+
+GDateWeekday, enum in Date and Time Functions +
+
+
+GDateYear, typedef in Date and Time Functions +
+
+
+g_date_add_days, function in Date and Time Functions +
+
+
+g_date_add_months, function in Date and Time Functions +
+
+
+g_date_add_years, function in Date and Time Functions +
+
+
+G_DATE_BAD_DAY, macro in Date and Time Functions +
+
+
+G_DATE_BAD_JULIAN, macro in Date and Time Functions +
+
+
+G_DATE_BAD_YEAR, macro in Date and Time Functions +
+
+
+g_date_clamp, function in Date and Time Functions +
+
+
+g_date_clear, function in Date and Time Functions +
+
+
+g_date_compare, function in Date and Time Functions +
+
+
+g_date_days_between, function in Date and Time Functions +
+
+
+g_date_free, function in Date and Time Functions +
+
+
+g_date_get_day, function in Date and Time Functions +
+
+
+g_date_get_days_in_month, function in Date and Time Functions +
+
+
+g_date_get_day_of_year, function in Date and Time Functions +
+
+
+g_date_get_iso8601_week_of_year, function in Date and Time Functions +
+
+
+g_date_get_julian, function in Date and Time Functions +
+
+
+g_date_get_monday_weeks_in_year, function in Date and Time Functions +
+
+
+g_date_get_monday_week_of_year, function in Date and Time Functions +
+
+
+g_date_get_month, function in Date and Time Functions +
+
+
+g_date_get_sunday_weeks_in_year, function in Date and Time Functions +
+
+
+g_date_get_sunday_week_of_year, function in Date and Time Functions +
+
+
+g_date_get_weekday, function in Date and Time Functions +
+
+
+g_date_get_year, function in Date and Time Functions +
+
+
+g_date_is_first_of_month, function in Date and Time Functions +
+
+
+g_date_is_last_of_month, function in Date and Time Functions +
+
+
+g_date_is_leap_year, function in Date and Time Functions +
+
+
+g_date_new, function in Date and Time Functions +
+
+
+g_date_new_dmy, function in Date and Time Functions +
+
+
+g_date_new_julian, function in Date and Time Functions +
+
+
+g_date_order, function in Date and Time Functions +
+
+
+g_date_set_day, function in Date and Time Functions +
+
+
+g_date_set_dmy, function in Date and Time Functions +
+
+
+g_date_set_julian, function in Date and Time Functions +
+
+
+g_date_set_month, function in Date and Time Functions +
+
+
+g_date_set_parse, function in Date and Time Functions +
+
+
+g_date_set_time, function in Date and Time Functions +
+
+
+g_date_set_time_t, function in Date and Time Functions +
+
+
+g_date_set_time_val, function in Date and Time Functions +
+
+
+g_date_set_year, function in Date and Time Functions +
+
+
+g_date_strftime, function in Date and Time Functions +
+
+
+g_date_subtract_days, function in Date and Time Functions +
+
+
+g_date_subtract_months, function in Date and Time Functions +
+
+
+g_date_subtract_years, function in Date and Time Functions +
+
+
+g_date_time_add, function in GDateTime +
+
+
+g_date_time_add_days, function in GDateTime +
+
+
+g_date_time_add_full, function in GDateTime +
+
+
+g_date_time_add_hours, function in GDateTime +
+
+
+g_date_time_add_minutes, function in GDateTime +
+
+
+g_date_time_add_months, function in GDateTime +
+
+
+g_date_time_add_seconds, function in GDateTime +
+
+
+g_date_time_add_weeks, function in GDateTime +
+
+
+g_date_time_add_years, function in GDateTime +
+
+
+g_date_time_compare, function in GDateTime +
+
+
+g_date_time_difference, function in GDateTime +
+
+
+g_date_time_equal, function in GDateTime +
+
+
+g_date_time_format, function in GDateTime +
+
+
+g_date_time_get_day_of_month, function in GDateTime +
+
+
+g_date_time_get_day_of_week, function in GDateTime +
+
+
+g_date_time_get_day_of_year, function in GDateTime +
+
+
+g_date_time_get_hour, function in GDateTime +
+
+
+g_date_time_get_microsecond, function in GDateTime +
+
+
+g_date_time_get_minute, function in GDateTime +
+
+
+g_date_time_get_month, function in GDateTime +
+
+
+g_date_time_get_second, function in GDateTime +
+
+
+g_date_time_get_seconds, function in GDateTime +
+
+
+g_date_time_get_timezone_abbreviation, function in GDateTime +
+
+
+g_date_time_get_utc_offset, function in GDateTime +
+
+
+g_date_time_get_week_numbering_year, function in GDateTime +
+
+
+g_date_time_get_week_of_year, function in GDateTime +
+
+
+g_date_time_get_year, function in GDateTime +
+
+
+g_date_time_get_ymd, function in GDateTime +
+
+
+g_date_time_hash, function in GDateTime +
+
+
+g_date_time_is_daylight_savings, function in GDateTime +
+
+
+g_date_time_new, function in GDateTime +
+
+
+g_date_time_new_from_timeval_local, function in GDateTime +
+
+
+g_date_time_new_from_timeval_utc, function in GDateTime +
+
+
+g_date_time_new_from_unix_local, function in GDateTime +
+
+
+g_date_time_new_from_unix_utc, function in GDateTime +
+
+
+g_date_time_new_local, function in GDateTime +
+
+
+g_date_time_new_now, function in GDateTime +
+
+
+g_date_time_new_now_local, function in GDateTime +
+
+
+g_date_time_new_now_utc, function in GDateTime +
+
+
+g_date_time_new_utc, function in GDateTime +
+
+
+g_date_time_ref, function in GDateTime +
+
+
+g_date_time_to_local, function in GDateTime +
+
+
+g_date_time_to_timeval, function in GDateTime +
+
+
+g_date_time_to_timezone, function in GDateTime +
+
+
+g_date_time_to_unix, function in GDateTime +
+
+
+g_date_time_to_utc, function in GDateTime +
+
+
+g_date_time_unref, function in GDateTime +
+
+
+g_date_to_struct_tm, function in Date and Time Functions +
+
+
+g_date_valid, function in Date and Time Functions +
+
+
+g_date_valid_day, function in Date and Time Functions +
+
+
+g_date_valid_dmy, function in Date and Time Functions +
+
+
+g_date_valid_julian, function in Date and Time Functions +
+
+
+g_date_valid_month, function in Date and Time Functions +
+
+
+g_date_valid_weekday, function in Date and Time Functions +
+
+
+g_date_valid_year, function in Date and Time Functions +
+
+
+g_dcgettext, function in I18N +
+
+
+g_debug, macro in Message Logging +
+
+
+GDebugKey, struct in Miscellaneous Utility Functions +
+
+
+G_DEFINE_AUTOPTR_CLEANUP_FUNC, macro in Miscellaneous Macros +
+
+
+G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC, macro in Miscellaneous Macros +
+
+
+G_DEFINE_AUTO_CLEANUP_FREE_FUNC, macro in Miscellaneous Macros +
+
+
+G_DEFINE_QUARK, macro in Quarks +
+
+
+G_DEPRECATED, macro in Miscellaneous Macros +
+
+
+G_DEPRECATED_FOR, macro in Miscellaneous Macros +
+
+
+GDestroyNotify, user_function in Datasets +
+
+
+g_dgettext, function in I18N +
+
+
+GDir, struct in File Utilities +
+
+
+g_direct_equal, function in Hash Tables +
+
+
+g_direct_hash, function in Hash Tables +
+
+
+g_dirname, macro in Miscellaneous Utility Functions +
+
+
+g_dir_close, function in File Utilities +
+
+
+g_dir_make_tmp, function in File Utilities +
+
+
+g_dir_open, function in File Utilities +
+
+
+g_dir_read_name, function in File Utilities +
+
+
+g_dir_rewind, function in File Utilities +
+
+
+G_DIR_SEPARATOR, macro in Standard Macros +
+
+
+G_DIR_SEPARATOR_S, macro in Standard Macros +
+
+
+g_dngettext, function in I18N +
+
+
+gdouble, typedef in Basic Types +
+
+
+GDoubleIEEE754, union in Numerical Definitions +
+
+
+g_double_equal, function in Hash Tables +
+
+
+g_double_hash, function in Hash Tables +
+
+
+g_dpgettext, function in I18N +
+
+
+g_dpgettext2, function in I18N +
+
+
+GDuplicateFunc, user_function in Keyed Data Lists +
+
+

E

+
+G_E, macro in Numerical Definitions +
+
+
+G_END_DECLS, macro in Miscellaneous Macros +
+
+
+g_environ_getenv, function in Miscellaneous Utility Functions +
+
+
+g_environ_setenv, function in Miscellaneous Utility Functions +
+
+
+g_environ_unsetenv, function in Miscellaneous Utility Functions +
+
+
+GEqualFunc, user_function in Hash Tables +
+
+
+GError, struct in Error Reporting +
+
+
+g_error, macro in Message Logging +
+
+
+GErrorType, enum in Lexical Scanner +
+
+
+g_error_copy, function in Error Reporting +
+
+
+g_error_free, function in Error Reporting +
+
+
+g_error_matches, function in Error Reporting +
+
+
+g_error_new, function in Error Reporting +
+
+
+g_error_new_literal, function in Error Reporting +
+
+
+g_error_new_valist, function in Error Reporting +
+
+

F

+
+FALSE, macro in Standard Macros +
+
+
+GFileError, enum in File Utilities +
+
+
+g_filename_display_basename, function in Character Set Conversion +
+
+
+g_filename_display_name, function in Character Set Conversion +
+
+
+g_filename_from_uri, function in URI Functions +
+
+
+g_filename_from_utf8, function in Character Set Conversion +
+
+
+g_filename_to_uri, function in URI Functions +
+
+
+g_filename_to_utf8, function in Character Set Conversion +
+
+
+GFileTest, enum in File Utilities +
+
+
+G_FILE_ERROR, macro in File Utilities +
+
+
+g_file_error_from_errno, function in File Utilities +
+
+
+g_file_get_contents, function in File Utilities +
+
+
+g_file_open_tmp, function in File Utilities +
+
+
+g_file_read_link, function in File Utilities +
+
+
+g_file_set_contents, function in File Utilities +
+
+
+g_file_test, function in File Utilities +
+
+
+g_find_program_in_path, function in Miscellaneous Utility Functions +
+
+
+gfloat, typedef in Basic Types +
+
+
+GFloatIEEE754, union in Numerical Definitions +
+
+
+g_fopen, function in File Utilities +
+
+
+GFormatSizeFlags, enum in Miscellaneous Utility Functions +
+
+
+g_format_size, function in Miscellaneous Utility Functions +
+
+
+g_format_size_for_display, function in Miscellaneous Utility Functions +
+
+
+g_format_size_full, function in Miscellaneous Utility Functions +
+
+
+g_fprintf, function in String Utility Functions +
+
+
+g_free, function in Memory Allocation +
+
+
+GFreeFunc, user_function in Miscellaneous Utility Functions +
+
+
+g_freopen, function in File Utilities +
+
+
+GFunc, user_function in Doubly-Linked Lists +
+
+

G

+
+g_getenv, function in Miscellaneous Utility Functions +
+
+
+g_get_application_name, function in Miscellaneous Utility Functions +
+
+
+g_get_charset, function in Character Set Conversion +
+
+
+g_get_codeset, function in Character Set Conversion +
+
+
+g_get_current_dir, function in Miscellaneous Utility Functions +
+
+
+g_get_current_time, function in Date and Time Functions +
+
+
+g_get_environ, function in Miscellaneous Utility Functions +
+
+
+g_get_filename_charsets, function in Character Set Conversion +
+
+
+g_get_home_dir, function in Miscellaneous Utility Functions +
+
+
+g_get_host_name, function in Miscellaneous Utility Functions +
+
+
+g_get_language_names, function in I18N +
+
+
+g_get_locale_variants, function in I18N +
+
+
+g_get_monotonic_time, function in Date and Time Functions +
+
+
+g_get_num_processors, function in Threads +
+
+
+g_get_prgname, function in Miscellaneous Utility Functions +
+
+
+g_get_real_name, function in Miscellaneous Utility Functions +
+
+
+g_get_real_time, function in Date and Time Functions +
+
+
+g_get_system_config_dirs, function in Miscellaneous Utility Functions +
+
+
+g_get_system_data_dirs, function in Miscellaneous Utility Functions +
+
+
+g_get_tmp_dir, function in Miscellaneous Utility Functions +
+
+
+g_get_user_cache_dir, function in Miscellaneous Utility Functions +
+
+
+g_get_user_config_dir, function in Miscellaneous Utility Functions +
+
+
+g_get_user_data_dir, function in Miscellaneous Utility Functions +
+
+
+g_get_user_name, function in Miscellaneous Utility Functions +
+
+
+g_get_user_runtime_dir, function in Miscellaneous Utility Functions +
+
+
+g_get_user_special_dir, function in Miscellaneous Utility Functions +
+
+
+G_GINT16_FORMAT, macro in Basic Types +
+
+
+G_GINT16_MODIFIER, macro in Basic Types +
+
+
+G_GINT32_FORMAT, macro in Basic Types +
+
+
+G_GINT32_MODIFIER, macro in Basic Types +
+
+
+G_GINT64_CONSTANT, macro in Basic Types +
+
+
+G_GINT64_FORMAT, macro in Basic Types +
+
+
+G_GINT64_MODIFIER, macro in Basic Types +
+
+
+G_GINTPTR_FORMAT, macro in Basic Types +
+
+
+G_GINTPTR_MODIFIER, macro in Basic Types +
+
+
+G_GNUC_ALLOC_SIZE, macro in Miscellaneous Macros +
+
+
+G_GNUC_ALLOC_SIZE2, macro in Miscellaneous Macros +
+
+
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS, macro in Miscellaneous Macros +
+
+
+G_GNUC_CHECK_VERSION, macro in Miscellaneous Macros +
+
+
+G_GNUC_CONST, macro in Miscellaneous Macros +
+
+
+G_GNUC_DEPRECATED, macro in Miscellaneous Macros +
+
+
+G_GNUC_DEPRECATED_FOR, macro in Miscellaneous Macros +
+
+
+G_GNUC_END_IGNORE_DEPRECATIONS, macro in Miscellaneous Macros +
+
+
+G_GNUC_EXTENSION, macro in Miscellaneous Macros +
+
+
+G_GNUC_FORMAT, macro in Miscellaneous Macros +
+
+
+G_GNUC_FUNCTION, macro in Miscellaneous Macros +
+
+
+G_GNUC_INTERNAL, macro in Miscellaneous Macros +
+
+
+G_GNUC_MALLOC, macro in Miscellaneous Macros +
+
+
+G_GNUC_MAY_ALIAS, macro in Miscellaneous Macros +
+
+
+G_GNUC_NORETURN, macro in Miscellaneous Macros +
+
+
+G_GNUC_NO_INSTRUMENT, macro in Miscellaneous Macros +
+
+
+G_GNUC_NULL_TERMINATED, macro in Miscellaneous Macros +
+
+
+G_GNUC_PRETTY_FUNCTION, macro in Miscellaneous Macros +
+
+
+G_GNUC_PRINTF, macro in Miscellaneous Macros +
+
+
+G_GNUC_PURE, macro in Miscellaneous Macros +
+
+
+G_GNUC_SCANF, macro in Miscellaneous Macros +
+
+
+G_GNUC_UNUSED, macro in Miscellaneous Macros +
+
+
+G_GNUC_WARN_UNUSED_RESULT, macro in Miscellaneous Macros +
+
+
+G_GOFFSET_CONSTANT, macro in Basic Types +
+
+
+G_GOFFSET_FORMAT, macro in Basic Types +
+
+
+G_GOFFSET_MODIFIER, macro in Basic Types +
+
+
+G_GSIZE_FORMAT, macro in Basic Types +
+
+
+G_GSIZE_MODIFIER, macro in Basic Types +
+
+
+G_GSSIZE_FORMAT, macro in Basic Types +
+
+
+G_GSSIZE_MODIFIER, macro in Basic Types +
+
+
+G_GUINT16_FORMAT, macro in Basic Types +
+
+
+G_GUINT32_FORMAT, macro in Basic Types +
+
+
+G_GUINT64_CONSTANT, macro in Basic Types +
+
+
+G_GUINT64_FORMAT, macro in Basic Types +
+
+
+G_GUINTPTR_FORMAT, macro in Basic Types +
+
+

H

+
+GHashFunc, user_function in Hash Tables +
+
+
+GHashTable, struct in Hash Tables +
+
+
+GHashTableIter, struct in Hash Tables +
+
+
+g_hash_table_add, function in Hash Tables +
+
+
+g_hash_table_contains, function in Hash Tables +
+
+
+g_hash_table_destroy, function in Hash Tables +
+
+
+g_hash_table_find, function in Hash Tables +
+
+
+g_hash_table_foreach, function in Hash Tables +
+
+
+g_hash_table_foreach_remove, function in Hash Tables +
+
+
+g_hash_table_foreach_steal, function in Hash Tables +
+
+
+g_hash_table_freeze, macro in Hash Tables +
+
+
+g_hash_table_get_keys, function in Hash Tables +
+
+
+g_hash_table_get_keys_as_array, function in Hash Tables +
+
+
+g_hash_table_get_values, function in Hash Tables +
+
+
+g_hash_table_insert, function in Hash Tables +
+
+
+g_hash_table_iter_get_hash_table, function in Hash Tables +
+
+
+g_hash_table_iter_init, function in Hash Tables +
+
+
+g_hash_table_iter_next, function in Hash Tables +
+
+
+g_hash_table_iter_remove, function in Hash Tables +
+
+
+g_hash_table_iter_replace, function in Hash Tables +
+
+
+g_hash_table_iter_steal, function in Hash Tables +
+
+
+g_hash_table_lookup, function in Hash Tables +
+
+
+g_hash_table_lookup_extended, function in Hash Tables +
+
+
+g_hash_table_new, function in Hash Tables +
+
+
+g_hash_table_new_full, function in Hash Tables +
+
+
+g_hash_table_ref, function in Hash Tables +
+
+
+g_hash_table_remove, function in Hash Tables +
+
+
+g_hash_table_remove_all, function in Hash Tables +
+
+
+g_hash_table_replace, function in Hash Tables +
+
+
+g_hash_table_size, function in Hash Tables +
+
+
+g_hash_table_steal, function in Hash Tables +
+
+
+g_hash_table_steal_all, function in Hash Tables +
+
+
+g_hash_table_thaw, macro in Hash Tables +
+
+
+g_hash_table_unref, function in Hash Tables +
+
+
+G_HAVE_GNUC_VISIBILITY, macro in Miscellaneous Macros +
+
+
+GHFunc, user_function in Hash Tables +
+
+
+GHmac, struct in Data HMACs +
+
+
+g_hmac_copy, function in Data HMACs +
+
+
+g_hmac_get_digest, function in Data HMACs +
+
+
+g_hmac_get_string, function in Data HMACs +
+
+
+g_hmac_new, function in Data HMACs +
+
+
+g_hmac_ref, function in Data HMACs +
+
+
+g_hmac_unref, function in Data HMACs +
+
+
+g_hmac_update, function in Data HMACs +
+
+
+GHook, struct in Hook Functions +
+
+
+G_HOOK, macro in Hook Functions +
+
+
+GHookCheckFunc, user_function in Hook Functions +
+
+
+GHookCheckMarshaller, user_function in Hook Functions +
+
+
+GHookCompareFunc, user_function in Hook Functions +
+
+
+GHookFinalizeFunc, user_function in Hook Functions +
+
+
+GHookFindFunc, user_function in Hook Functions +
+
+
+GHookFlagMask, enum in Hook Functions +
+
+
+GHookFunc, user_function in Hook Functions +
+
+
+GHookList, struct in Hook Functions +
+
+
+GHookMarshaller, user_function in Hook Functions +
+
+
+G_HOOK_ACTIVE, macro in Hook Functions +
+
+
+g_hook_alloc, function in Hook Functions +
+
+
+g_hook_append, macro in Hook Functions +
+
+
+g_hook_compare_ids, function in Hook Functions +
+
+
+g_hook_destroy, function in Hook Functions +
+
+
+g_hook_destroy_link, function in Hook Functions +
+
+
+g_hook_find, function in Hook Functions +
+
+
+g_hook_find_data, function in Hook Functions +
+
+
+g_hook_find_func, function in Hook Functions +
+
+
+g_hook_find_func_data, function in Hook Functions +
+
+
+g_hook_first_valid, function in Hook Functions +
+
+
+G_HOOK_FLAGS, macro in Hook Functions +
+
+
+G_HOOK_FLAG_USER_SHIFT, macro in Hook Functions +
+
+
+g_hook_free, function in Hook Functions +
+
+
+g_hook_get, function in Hook Functions +
+
+
+g_hook_insert_before, function in Hook Functions +
+
+
+g_hook_insert_sorted, function in Hook Functions +
+
+
+G_HOOK_IN_CALL, macro in Hook Functions +
+
+
+G_HOOK_IS_UNLINKED, macro in Hook Functions +
+
+
+G_HOOK_IS_VALID, macro in Hook Functions +
+
+
+g_hook_list_clear, function in Hook Functions +
+
+
+g_hook_list_init, function in Hook Functions +
+
+
+g_hook_list_invoke, function in Hook Functions +
+
+
+g_hook_list_invoke_check, function in Hook Functions +
+
+
+g_hook_list_marshal, function in Hook Functions +
+
+
+g_hook_list_marshal_check, function in Hook Functions +
+
+
+g_hook_next_valid, function in Hook Functions +
+
+
+g_hook_prepend, function in Hook Functions +
+
+
+g_hook_ref, function in Hook Functions +
+
+
+g_hook_unref, function in Hook Functions +
+
+
+g_hostname_is_ascii_encoded, function in Hostname Utilities +
+
+
+g_hostname_is_ip_address, function in Hostname Utilities +
+
+
+g_hostname_is_non_ascii, function in Hostname Utilities +
+
+
+g_hostname_to_ascii, function in Hostname Utilities +
+
+
+g_hostname_to_unicode, function in Hostname Utilities +
+
+
+GHRFunc, user_function in Hash Tables +
+
+
+g_htonl, macro in Byte Order Macros +
+
+
+g_htons, macro in Byte Order Macros +
+
+

I

+
+GIConv, struct in Character Set Conversion +
+
+
+g_iconv, function in Character Set Conversion +
+
+
+g_iconv_close, function in Character Set Conversion +
+
+
+g_iconv_open, function in Character Set Conversion +
+
+
+g_idle_add, function in The Main Event Loop +
+
+
+g_idle_add_full, function in The Main Event Loop +
+
+
+g_idle_remove_by_data, function in The Main Event Loop +
+
+
+g_idle_source_new, function in The Main Event Loop +
+
+
+G_IEEE754_DOUBLE_BIAS, macro in Numerical Definitions +
+
+
+G_IEEE754_FLOAT_BIAS, macro in Numerical Definitions +
+
+
+g_info, macro in Message Logging +
+
+
+G_INLINE_FUNC, macro in Miscellaneous Macros +
+
+
+gint, function in Basic Types +
+
+
+gint16, typedef in Basic Types +
+
+
+GINT16_FROM_BE, macro in Byte Order Macros +
+
+
+GINT16_FROM_LE, macro in Byte Order Macros +
+
+
+GINT16_TO_BE, macro in Byte Order Macros +
+
+
+GINT16_TO_LE, macro in Byte Order Macros +
+
+
+gint32, typedef in Basic Types +
+
+
+GINT32_FROM_BE, macro in Byte Order Macros +
+
+
+GINT32_FROM_LE, macro in Byte Order Macros +
+
+
+GINT32_TO_BE, macro in Byte Order Macros +
+
+
+GINT32_TO_LE, macro in Byte Order Macros +
+
+
+gint64, typedef in Basic Types +
+
+
+g_int64_equal, function in Hash Tables +
+
+
+GINT64_FROM_BE, macro in Byte Order Macros +
+
+
+GINT64_FROM_LE, macro in Byte Order Macros +
+
+
+g_int64_hash, function in Hash Tables +
+
+
+GINT64_TO_BE, macro in Byte Order Macros +
+
+
+GINT64_TO_LE, macro in Byte Order Macros +
+
+
+gint8, typedef in Basic Types +
+
+
+g_intern_static_string, function in Quarks +
+
+
+g_intern_string, function in Quarks +
+
+
+gintptr, typedef in Basic Types +
+
+
+g_int_equal, function in Hash Tables +
+
+
+GINT_FROM_BE, macro in Byte Order Macros +
+
+
+GINT_FROM_LE, macro in Byte Order Macros +
+
+
+g_int_hash, function in Hash Tables +
+
+
+GINT_TO_BE, macro in Byte Order Macros +
+
+
+GINT_TO_LE, macro in Byte Order Macros +
+
+
+GINT_TO_POINTER, macro in Type Conversion Macros +
+
+
+GIOChannel, struct in IO Channels +
+
+
+GIOChannelError, enum in IO Channels +
+
+
+GIOCondition, enum in IO Channels +
+
+
+GIOError, enum in IO Channels +
+
+
+GIOFlags, enum in IO Channels +
+
+
+GIOFunc, user_function in IO Channels +
+
+
+GIOFuncs, struct in IO Channels +
+
+
+GIOStatus, enum in IO Channels +
+
+
+g_io_add_watch, function in IO Channels +
+
+
+g_io_add_watch_full, function in IO Channels +
+
+
+g_io_channel_close, function in IO Channels +
+
+
+G_IO_CHANNEL_ERROR, macro in IO Channels +
+
+
+g_io_channel_error_from_errno, function in IO Channels +
+
+
+g_io_channel_flush, function in IO Channels +
+
+
+g_io_channel_get_buffered, function in IO Channels +
+
+
+g_io_channel_get_buffer_condition, function in IO Channels +
+
+
+g_io_channel_get_buffer_size, function in IO Channels +
+
+
+g_io_channel_get_close_on_unref, function in IO Channels +
+
+
+g_io_channel_get_encoding, function in IO Channels +
+
+
+g_io_channel_get_flags, function in IO Channels +
+
+
+g_io_channel_get_line_term, function in IO Channels +
+
+
+g_io_channel_init, function in IO Channels +
+
+
+g_io_channel_new_file, function in IO Channels +
+
+
+g_io_channel_read, function in IO Channels +
+
+
+g_io_channel_read_chars, function in IO Channels +
+
+
+g_io_channel_read_line, function in IO Channels +
+
+
+g_io_channel_read_line_string, function in IO Channels +
+
+
+g_io_channel_read_to_end, function in IO Channels +
+
+
+g_io_channel_read_unichar, function in IO Channels +
+
+
+g_io_channel_ref, function in IO Channels +
+
+
+g_io_channel_seek, function in IO Channels +
+
+
+g_io_channel_seek_position, function in IO Channels +
+
+
+g_io_channel_set_buffered, function in IO Channels +
+
+
+g_io_channel_set_buffer_size, function in IO Channels +
+
+
+g_io_channel_set_close_on_unref, function in IO Channels +
+
+
+g_io_channel_set_encoding, function in IO Channels +
+
+
+g_io_channel_set_flags, function in IO Channels +
+
+
+g_io_channel_set_line_term, function in IO Channels +
+
+
+g_io_channel_shutdown, function in IO Channels +
+
+
+g_io_channel_unix_get_fd, function in IO Channels +
+
+
+g_io_channel_unix_new, function in IO Channels +
+
+
+g_io_channel_unref, function in IO Channels +
+
+
+g_io_channel_win32_new_fd, function in IO Channels +
+
+
+g_io_channel_win32_new_messages, function in IO Channels +
+
+
+g_io_channel_win32_new_socket, function in IO Channels +
+
+
+g_io_channel_write, function in IO Channels +
+
+
+g_io_channel_write_chars, function in IO Channels +
+
+
+g_io_channel_write_unichar, function in IO Channels +
+
+
+g_io_create_watch, function in IO Channels +
+
+
+G_IS_DIR_SEPARATOR, macro in Standard Macros +
+
+

K

+
+GKeyFile, struct in Key-value file parser +
+
+
+GKeyFileError, enum in Key-value file parser +
+
+
+GKeyFileFlags, enum in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_GROUP, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_ACTIONS, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_CATEGORIES, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_COMMENT, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_EXEC, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_HIDDEN, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_ICON, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_MIME_TYPE, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_NAME, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_PATH, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_TERMINAL, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_TRY_EXEC, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_TYPE, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_URL, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_KEY_VERSION, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_TYPE_APPLICATION, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_TYPE_DIRECTORY, macro in Key-value file parser +
+
+
+G_KEY_FILE_DESKTOP_TYPE_LINK, macro in Key-value file parser +
+
+
+G_KEY_FILE_ERROR, macro in Key-value file parser +
+
+
+g_key_file_free, function in Key-value file parser +
+
+
+g_key_file_get_boolean, function in Key-value file parser +
+
+
+g_key_file_get_boolean_list, function in Key-value file parser +
+
+
+g_key_file_get_comment, function in Key-value file parser +
+
+
+g_key_file_get_double, function in Key-value file parser +
+
+
+g_key_file_get_double_list, function in Key-value file parser +
+
+
+g_key_file_get_groups, function in Key-value file parser +
+
+
+g_key_file_get_int64, function in Key-value file parser +
+
+
+g_key_file_get_integer, function in Key-value file parser +
+
+
+g_key_file_get_integer_list, function in Key-value file parser +
+
+
+g_key_file_get_keys, function in Key-value file parser +
+
+
+g_key_file_get_locale_string, function in Key-value file parser +
+
+
+g_key_file_get_locale_string_list, function in Key-value file parser +
+
+
+g_key_file_get_start_group, function in Key-value file parser +
+
+
+g_key_file_get_string, function in Key-value file parser +
+
+
+g_key_file_get_string_list, function in Key-value file parser +
+
+
+g_key_file_get_uint64, function in Key-value file parser +
+
+
+g_key_file_get_value, function in Key-value file parser +
+
+
+g_key_file_has_group, function in Key-value file parser +
+
+
+g_key_file_has_key, function in Key-value file parser +
+
+
+g_key_file_load_from_data, function in Key-value file parser +
+
+
+g_key_file_load_from_data_dirs, function in Key-value file parser +
+
+
+g_key_file_load_from_dirs, function in Key-value file parser +
+
+
+g_key_file_load_from_file, function in Key-value file parser +
+
+
+g_key_file_new, function in Key-value file parser +
+
+
+g_key_file_ref, function in Key-value file parser +
+
+
+g_key_file_remove_comment, function in Key-value file parser +
+
+
+g_key_file_remove_group, function in Key-value file parser +
+
+
+g_key_file_remove_key, function in Key-value file parser +
+
+
+g_key_file_save_to_file, function in Key-value file parser +
+
+
+g_key_file_set_boolean, function in Key-value file parser +
+
+
+g_key_file_set_boolean_list, function in Key-value file parser +
+
+
+g_key_file_set_comment, function in Key-value file parser +
+
+
+g_key_file_set_double, function in Key-value file parser +
+
+
+g_key_file_set_double_list, function in Key-value file parser +
+
+
+g_key_file_set_int64, function in Key-value file parser +
+
+
+g_key_file_set_integer, function in Key-value file parser +
+
+
+g_key_file_set_integer_list, function in Key-value file parser +
+
+
+g_key_file_set_list_separator, function in Key-value file parser +
+
+
+g_key_file_set_locale_string, function in Key-value file parser +
+
+
+g_key_file_set_locale_string_list, function in Key-value file parser +
+
+
+g_key_file_set_string, function in Key-value file parser +
+
+
+g_key_file_set_string_list, function in Key-value file parser +
+
+
+g_key_file_set_uint64, function in Key-value file parser +
+
+
+g_key_file_set_value, function in Key-value file parser +
+
+
+g_key_file_to_data, function in Key-value file parser +
+
+
+g_key_file_unref, function in Key-value file parser +
+
+

L

+
+glib_binary_age, variable in Version Information +
+
+
+GLIB_CHECK_VERSION, macro in Version Information +
+
+
+glib_check_version, function in Version Information +
+
+
+GLIB_DISABLE_DEPRECATION_WARNINGS, macro in Version Information +
+
+
+glib_interface_age, variable in Version Information +
+
+
+GLIB_MAJOR_VERSION, macro in Version Information +
+
+
+glib_major_version, variable in Version Information +
+
+
+glib_mem_profiler_table, variable in Memory Allocation +
+
+
+GLIB_MICRO_VERSION, macro in Version Information +
+
+
+glib_micro_version, variable in Version Information +
+
+
+GLIB_MINOR_VERSION, macro in Version Information +
+
+
+glib_minor_version, variable in Version Information +
+
+
+GLIB_VERSION_2_26, macro in Version Information +
+
+
+GLIB_VERSION_2_28, macro in Version Information +
+
+
+GLIB_VERSION_2_30, macro in Version Information +
+
+
+GLIB_VERSION_2_32, macro in Version Information +
+
+
+GLIB_VERSION_2_34, macro in Version Information +
+
+
+GLIB_VERSION_2_36, macro in Version Information +
+
+
+GLIB_VERSION_2_38, macro in Version Information +
+
+
+GLIB_VERSION_2_40, macro in Version Information +
+
+
+GLIB_VERSION_2_42, macro in Version Information +
+
+
+GLIB_VERSION_2_44, macro in Version Information +
+
+
+GLIB_VERSION_2_46, macro in Version Information +
+
+
+GLIB_VERSION_2_48, macro in Version Information +
+
+
+GLIB_VERSION_MAX_ALLOWED, macro in Version Information +
+
+
+GLIB_VERSION_MIN_REQUIRED, macro in Version Information +
+
+
+G_LIKELY, macro in Miscellaneous Macros +
+
+
+GList, struct in Doubly-Linked Lists +
+
+
+g_listenv, function in Miscellaneous Utility Functions +
+
+
+g_list_alloc, function in Doubly-Linked Lists +
+
+
+g_list_append, function in Doubly-Linked Lists +
+
+
+g_list_concat, function in Doubly-Linked Lists +
+
+
+g_list_copy, function in Doubly-Linked Lists +
+
+
+g_list_copy_deep, function in Doubly-Linked Lists +
+
+
+g_list_delete_link, function in Doubly-Linked Lists +
+
+
+g_list_find, function in Doubly-Linked Lists +
+
+
+g_list_find_custom, function in Doubly-Linked Lists +
+
+
+g_list_first, function in Doubly-Linked Lists +
+
+
+g_list_foreach, function in Doubly-Linked Lists +
+
+
+g_list_free, function in Doubly-Linked Lists +
+
+
+g_list_free1, macro in Doubly-Linked Lists +
+
+
+g_list_free_1, function in Doubly-Linked Lists +
+
+
+g_list_free_full, function in Doubly-Linked Lists +
+
+
+g_list_index, function in Doubly-Linked Lists +
+
+
+g_list_insert, function in Doubly-Linked Lists +
+
+
+g_list_insert_before, function in Doubly-Linked Lists +
+
+
+g_list_insert_sorted, function in Doubly-Linked Lists +
+
+
+g_list_insert_sorted_with_data, function in Doubly-Linked Lists +
+
+
+g_list_last, function in Doubly-Linked Lists +
+
+
+g_list_length, function in Doubly-Linked Lists +
+
+
+g_list_next, macro in Doubly-Linked Lists +
+
+
+g_list_nth, function in Doubly-Linked Lists +
+
+
+g_list_nth_data, function in Doubly-Linked Lists +
+
+
+g_list_nth_prev, function in Doubly-Linked Lists +
+
+
+g_list_position, function in Doubly-Linked Lists +
+
+
+g_list_prepend, function in Doubly-Linked Lists +
+
+
+g_list_previous, macro in Doubly-Linked Lists +
+
+
+g_list_remove, function in Doubly-Linked Lists +
+
+
+g_list_remove_all, function in Doubly-Linked Lists +
+
+
+g_list_remove_link, function in Doubly-Linked Lists +
+
+
+g_list_reverse, function in Doubly-Linked Lists +
+
+
+g_list_sort, function in Doubly-Linked Lists +
+
+
+g_list_sort_with_data, function in Doubly-Linked Lists +
+
+
+G_LITTLE_ENDIAN, macro in Byte Order Macros +
+
+
+G_LN10, macro in Numerical Definitions +
+
+
+G_LN2, macro in Numerical Definitions +
+
+
+g_locale_from_utf8, function in Character Set Conversion +
+
+
+g_locale_to_utf8, function in Character Set Conversion +
+
+
+G_LOCK, macro in Threads +
+
+
+G_LOCK_DEFINE, macro in Threads +
+
+
+G_LOCK_DEFINE_STATIC, macro in Threads +
+
+
+G_LOCK_EXTERN, macro in Threads +
+
+
+g_log, function in Message Logging +
+
+
+GLogFunc, user_function in Message Logging +
+
+
+GLogLevelFlags, enum in Message Logging +
+
+
+g_logv, function in Message Logging +
+
+
+G_LOG_2_BASE_10, macro in Numerical Definitions +
+
+
+g_log_default_handler, function in Message Logging +
+
+
+G_LOG_DOMAIN, macro in Message Logging +
+
+
+G_LOG_FATAL_MASK, macro in Message Logging +
+
+
+G_LOG_LEVEL_USER_SHIFT, macro in Message Logging +
+
+
+g_log_remove_handler, function in Message Logging +
+
+
+g_log_set_always_fatal, function in Message Logging +
+
+
+g_log_set_default_handler, function in Message Logging +
+
+
+g_log_set_fatal_mask, function in Message Logging +
+
+
+g_log_set_handler, function in Message Logging +
+
+
+g_log_set_handler_full, function in Message Logging +
+
+
+glong, typedef in Basic Types +
+
+
+GLONG_FROM_BE, macro in Byte Order Macros +
+
+
+GLONG_FROM_LE, macro in Byte Order Macros +
+
+
+GLONG_TO_BE, macro in Byte Order Macros +
+
+
+GLONG_TO_LE, macro in Byte Order Macros +
+
+
+g_lstat, function in File Utilities +
+
+

M

+
+GMainContext, struct in The Main Event Loop +
+
+
+GMainLoop, struct in The Main Event Loop +
+
+
+g_main_context_acquire, function in The Main Event Loop +
+
+
+g_main_context_add_poll, function in The Main Event Loop +
+
+
+g_main_context_check, function in The Main Event Loop +
+
+
+g_main_context_default, function in The Main Event Loop +
+
+
+g_main_context_dispatch, function in The Main Event Loop +
+
+
+g_main_context_find_source_by_funcs_user_data, function in The Main Event Loop +
+
+
+g_main_context_find_source_by_id, function in The Main Event Loop +
+
+
+g_main_context_find_source_by_user_data, function in The Main Event Loop +
+
+
+g_main_context_get_poll_func, function in The Main Event Loop +
+
+
+g_main_context_get_thread_default, function in The Main Event Loop +
+
+
+g_main_context_invoke, function in The Main Event Loop +
+
+
+g_main_context_invoke_full, function in The Main Event Loop +
+
+
+g_main_context_is_owner, function in The Main Event Loop +
+
+
+g_main_context_iteration, function in The Main Event Loop +
+
+
+g_main_context_new, function in The Main Event Loop +
+
+
+g_main_context_pending, function in The Main Event Loop +
+
+
+g_main_context_pop_thread_default, function in The Main Event Loop +
+
+
+g_main_context_prepare, function in The Main Event Loop +
+
+
+g_main_context_push_thread_default, function in The Main Event Loop +
+
+
+g_main_context_query, function in The Main Event Loop +
+
+
+g_main_context_ref, function in The Main Event Loop +
+
+
+g_main_context_ref_thread_default, function in The Main Event Loop +
+
+
+g_main_context_release, function in The Main Event Loop +
+
+
+g_main_context_remove_poll, function in The Main Event Loop +
+
+
+g_main_context_set_poll_func, function in The Main Event Loop +
+
+
+g_main_context_unref, function in The Main Event Loop +
+
+
+g_main_context_wait, function in The Main Event Loop +
+
+
+g_main_context_wakeup, function in The Main Event Loop +
+
+
+g_main_current_source, function in The Main Event Loop +
+
+
+g_main_depth, function in The Main Event Loop +
+
+
+g_main_destroy, macro in The Main Event Loop +
+
+
+g_main_is_running, macro in The Main Event Loop +
+
+
+g_main_iteration, macro in The Main Event Loop +
+
+
+g_main_loop_get_context, function in The Main Event Loop +
+
+
+g_main_loop_is_running, function in The Main Event Loop +
+
+
+g_main_loop_new, function in The Main Event Loop +
+
+
+g_main_loop_quit, function in The Main Event Loop +
+
+
+g_main_loop_ref, function in The Main Event Loop +
+
+
+g_main_loop_run, function in The Main Event Loop +
+
+
+g_main_loop_unref, function in The Main Event Loop +
+
+
+g_main_new, macro in The Main Event Loop +
+
+
+g_main_pending, macro in The Main Event Loop +
+
+
+g_main_quit, macro in The Main Event Loop +
+
+
+g_main_run, macro in The Main Event Loop +
+
+
+g_main_set_poll_func, macro in The Main Event Loop +
+
+
+g_malloc, function in Memory Allocation +
+
+
+g_malloc0, function in Memory Allocation +
+
+
+g_malloc0_n, function in Memory Allocation +
+
+
+g_malloc_n, function in Memory Allocation +
+
+
+GMappedFile, struct in File Utilities +
+
+
+g_mapped_file_free, function in File Utilities +
+
+
+g_mapped_file_get_bytes, function in File Utilities +
+
+
+g_mapped_file_get_contents, function in File Utilities +
+
+
+g_mapped_file_get_length, function in File Utilities +
+
+
+g_mapped_file_new, function in File Utilities +
+
+
+g_mapped_file_new_from_fd, function in File Utilities +
+
+
+g_mapped_file_ref, function in File Utilities +
+
+
+g_mapped_file_unref, function in File Utilities +
+
+
+GMarkupCollectType, enum in Simple XML Subset Parser +
+
+
+GMarkupError, enum in Simple XML Subset Parser +
+
+
+GMarkupParseContext, struct in Simple XML Subset Parser +
+
+
+GMarkupParseFlags, enum in Simple XML Subset Parser +
+
+
+GMarkupParser, struct in Simple XML Subset Parser +
+
+
+g_markup_collect_attributes, function in Simple XML Subset Parser +
+
+
+G_MARKUP_ERROR, macro in Simple XML Subset Parser +
+
+
+g_markup_escape_text, function in Simple XML Subset Parser +
+
+
+g_markup_parse_context_end_parse, function in Simple XML Subset Parser +
+
+
+g_markup_parse_context_free, function in Simple XML Subset Parser +
+
+
+g_markup_parse_context_get_element, function in Simple XML Subset Parser +
+
+
+g_markup_parse_context_get_element_stack, function in Simple XML Subset Parser +
+
+
+g_markup_parse_context_get_position, function in Simple XML Subset Parser +
+
+
+g_markup_parse_context_get_user_data, function in Simple XML Subset Parser +
+
+
+g_markup_parse_context_new, function in Simple XML Subset Parser +
+
+
+g_markup_parse_context_parse, function in Simple XML Subset Parser +
+
+
+g_markup_parse_context_pop, function in Simple XML Subset Parser +
+
+
+g_markup_parse_context_push, function in Simple XML Subset Parser +
+
+
+g_markup_parse_context_ref, function in Simple XML Subset Parser +
+
+
+g_markup_parse_context_unref, function in Simple XML Subset Parser +
+
+
+g_markup_printf_escaped, function in Simple XML Subset Parser +
+
+
+g_markup_vprintf_escaped, function in Simple XML Subset Parser +
+
+
+GMatchInfo, struct in Perl-compatible regular expressions +
+
+
+g_match_info_expand_references, function in Perl-compatible regular expressions +
+
+
+g_match_info_fetch, function in Perl-compatible regular expressions +
+
+
+g_match_info_fetch_all, function in Perl-compatible regular expressions +
+
+
+g_match_info_fetch_named, function in Perl-compatible regular expressions +
+
+
+g_match_info_fetch_named_pos, function in Perl-compatible regular expressions +
+
+
+g_match_info_fetch_pos, function in Perl-compatible regular expressions +
+
+
+g_match_info_free, function in Perl-compatible regular expressions +
+
+
+g_match_info_get_match_count, function in Perl-compatible regular expressions +
+
+
+g_match_info_get_regex, function in Perl-compatible regular expressions +
+
+
+g_match_info_get_string, function in Perl-compatible regular expressions +
+
+
+g_match_info_is_partial_match, function in Perl-compatible regular expressions +
+
+
+g_match_info_matches, function in Perl-compatible regular expressions +
+
+
+g_match_info_next, function in Perl-compatible regular expressions +
+
+
+g_match_info_ref, function in Perl-compatible regular expressions +
+
+
+g_match_info_unref, function in Perl-compatible regular expressions +
+
+
+MAX, macro in Standard Macros +
+
+
+G_MAXDOUBLE, macro in Basic Types +
+
+
+G_MAXFLOAT, macro in Basic Types +
+
+
+G_MAXINT, macro in Basic Types +
+
+
+G_MAXINT16, macro in Basic Types +
+
+
+G_MAXINT32, macro in Basic Types +
+
+
+G_MAXINT64, macro in Basic Types +
+
+
+G_MAXINT8, macro in Basic Types +
+
+
+G_MAXLONG, macro in Basic Types +
+
+
+G_MAXOFFSET, macro in Basic Types +
+
+
+MAXPATHLEN, macro in Windows Compatibility Functions +
+
+
+G_MAXSHORT, macro in Basic Types +
+
+
+G_MAXSIZE, macro in Basic Types +
+
+
+G_MAXSSIZE, macro in Basic Types +
+
+
+G_MAXUINT, macro in Basic Types +
+
+
+G_MAXUINT16, macro in Basic Types +
+
+
+G_MAXUINT32, macro in Basic Types +
+
+
+G_MAXUINT64, macro in Basic Types +
+
+
+G_MAXUINT8, macro in Basic Types +
+
+
+G_MAXULONG, macro in Basic Types +
+
+
+G_MAXUSHORT, macro in Basic Types +
+
+
+g_memdup, function in Memory Allocation +
+
+
+g_memmove, macro in Memory Allocation +
+
+
+GMemVTable, struct in Memory Allocation +
+
+
+G_MEM_ALIGN, macro in Standard Macros +
+
+
+g_mem_gc_friendly, variable in Memory Allocation +
+
+
+g_mem_is_system_malloc, function in Memory Allocation +
+
+
+g_mem_profile, function in Memory Allocation +
+
+
+g_mem_set_vtable, function in Memory Allocation +
+
+
+g_message, macro in Message Logging +
+
+
+MIN, macro in Standard Macros +
+
+
+G_MINDOUBLE, macro in Basic Types +
+
+
+G_MINFLOAT, macro in Basic Types +
+
+
+G_MININT, macro in Basic Types +
+
+
+G_MININT16, macro in Basic Types +
+
+
+G_MININT32, macro in Basic Types +
+
+
+G_MININT64, macro in Basic Types +
+
+
+G_MININT8, macro in Basic Types +
+
+
+G_MINLONG, macro in Basic Types +
+
+
+G_MINOFFSET, macro in Basic Types +
+
+
+G_MINSHORT, macro in Basic Types +
+
+
+G_MINSSIZE, macro in Basic Types +
+
+
+g_mkdir, function in File Utilities +
+
+
+g_mkdir_with_parents, function in File Utilities +
+
+
+g_mkdtemp, function in File Utilities +
+
+
+g_mkdtemp_full, function in File Utilities +
+
+
+g_mkstemp, function in File Utilities +
+
+
+g_mkstemp_full, function in File Utilities +
+
+
+GModule, struct in Dynamic Loading of Modules +
+
+
+GModuleCheckInit, user_function in Dynamic Loading of Modules +
+
+
+GModuleFlags, enum in Dynamic Loading of Modules +
+
+
+GModuleUnload, user_function in Dynamic Loading of Modules +
+
+
+g_module_build_path, function in Dynamic Loading of Modules +
+
+
+g_module_close, function in Dynamic Loading of Modules +
+
+
+g_module_error, function in Dynamic Loading of Modules +
+
+
+G_MODULE_EXPORT, macro in Dynamic Loading of Modules +
+
+
+G_MODULE_IMPORT, macro in Dynamic Loading of Modules +
+
+
+g_module_make_resident, function in Dynamic Loading of Modules +
+
+
+g_module_name, function in Dynamic Loading of Modules +
+
+
+g_module_open, function in Dynamic Loading of Modules +
+
+
+G_MODULE_SUFFIX, macro in Dynamic Loading of Modules +
+
+
+g_module_supported, function in Dynamic Loading of Modules +
+
+
+g_module_symbol, function in Dynamic Loading of Modules +
+
+
+GMutex, union in Threads +
+
+
+GMutexLocker, typedef in Threads +
+
+
+g_mutex_clear, function in Threads +
+
+
+g_mutex_free, function in Deprecated Thread APIs +
+
+
+g_mutex_init, function in Threads +
+
+
+g_mutex_lock, function in Threads +
+
+
+g_mutex_locker_free, function in Threads +
+
+
+g_mutex_locker_new, function in Threads +
+
+
+g_mutex_new, function in Deprecated Thread APIs +
+
+
+g_mutex_trylock, function in Threads +
+
+
+g_mutex_unlock, function in Threads +
+
+

N

+
+NC_, macro in I18N +
+
+
+g_new, macro in Memory Allocation +
+
+
+g_new0, macro in Memory Allocation +
+
+
+g_newa, macro in Memory Allocation +
+
+
+GNode, struct in N-ary Trees +
+
+
+GNodeForeachFunc, user_function in N-ary Trees +
+
+
+GNodeTraverseFunc, user_function in N-ary Trees +
+
+
+g_node_append, macro in N-ary Trees +
+
+
+g_node_append_data, macro in N-ary Trees +
+
+
+g_node_children_foreach, function in N-ary Trees +
+
+
+g_node_child_index, function in N-ary Trees +
+
+
+g_node_child_position, function in N-ary Trees +
+
+
+g_node_copy, function in N-ary Trees +
+
+
+g_node_copy_deep, function in N-ary Trees +
+
+
+g_node_depth, function in N-ary Trees +
+
+
+g_node_destroy, function in N-ary Trees +
+
+
+g_node_find, function in N-ary Trees +
+
+
+g_node_find_child, function in N-ary Trees +
+
+
+g_node_first_child, macro in N-ary Trees +
+
+
+g_node_first_sibling, function in N-ary Trees +
+
+
+g_node_get_root, function in N-ary Trees +
+
+
+g_node_insert, function in N-ary Trees +
+
+
+g_node_insert_after, function in N-ary Trees +
+
+
+g_node_insert_before, function in N-ary Trees +
+
+
+g_node_insert_data, macro in N-ary Trees +
+
+
+g_node_insert_data_after, macro in N-ary Trees +
+
+
+g_node_insert_data_before, macro in N-ary Trees +
+
+
+g_node_is_ancestor, function in N-ary Trees +
+
+
+G_NODE_IS_LEAF, macro in N-ary Trees +
+
+
+G_NODE_IS_ROOT, macro in N-ary Trees +
+
+
+g_node_last_child, function in N-ary Trees +
+
+
+g_node_last_sibling, function in N-ary Trees +
+
+
+g_node_max_height, function in N-ary Trees +
+
+
+g_node_new, function in N-ary Trees +
+
+
+g_node_next_sibling, macro in N-ary Trees +
+
+
+g_node_nth_child, function in N-ary Trees +
+
+
+g_node_n_children, function in N-ary Trees +
+
+
+g_node_n_nodes, function in N-ary Trees +
+
+
+g_node_prepend, function in N-ary Trees +
+
+
+g_node_prepend_data, macro in N-ary Trees +
+
+
+g_node_prev_sibling, macro in N-ary Trees +
+
+
+g_node_reverse_children, function in N-ary Trees +
+
+
+g_node_traverse, function in N-ary Trees +
+
+
+g_node_unlink, function in N-ary Trees +
+
+
+GNormalizeMode, enum in Unicode Manipulation +
+
+
+g_ntohl, macro in Byte Order Macros +
+
+
+g_ntohs, macro in Byte Order Macros +
+
+
+NULL, macro in Standard Macros +
+
+
+g_nullify_pointer, function in Miscellaneous Utility Functions +
+
+
+N_, macro in I18N +
+
+
+G_N_ELEMENTS, macro in Standard Macros +
+
+

O

+
+goffset, typedef in Basic Types +
+
+
+GOnce, struct in Threads +
+
+
+g_once, macro in Threads +
+
+
+GOnceStatus, enum in Threads +
+
+
+G_ONCE_INIT, macro in Threads +
+
+
+g_once_init_enter, function in Threads +
+
+
+g_once_init_leave, function in Threads +
+
+
+g_on_error_query, function in Warnings and Assertions +
+
+
+g_on_error_stack_trace, function in Warnings and Assertions +
+
+
+g_open, function in File Utilities +
+
+
+GOptionArg, enum in Commandline option parser +
+
+
+GOptionArgFunc, user_function in Commandline option parser +
+
+
+GOptionContext, struct in Commandline option parser +
+
+
+GOptionEntry, struct in Commandline option parser +
+
+
+GOptionError, enum in Commandline option parser +
+
+
+GOptionErrorFunc, user_function in Commandline option parser +
+
+
+GOptionFlags, enum in Commandline option parser +
+
+
+GOptionGroup, struct in Commandline option parser +
+
+
+GOptionParseFunc, user_function in Commandline option parser +
+
+
+g_option_context_add_group, function in Commandline option parser +
+
+
+g_option_context_add_main_entries, function in Commandline option parser +
+
+
+g_option_context_free, function in Commandline option parser +
+
+
+g_option_context_get_description, function in Commandline option parser +
+
+
+g_option_context_get_help, function in Commandline option parser +
+
+
+g_option_context_get_help_enabled, function in Commandline option parser +
+
+
+g_option_context_get_ignore_unknown_options, function in Commandline option parser +
+
+
+g_option_context_get_main_group, function in Commandline option parser +
+
+
+g_option_context_get_strict_posix, function in Commandline option parser +
+
+
+g_option_context_get_summary, function in Commandline option parser +
+
+
+g_option_context_new, function in Commandline option parser +
+
+
+g_option_context_parse, function in Commandline option parser +
+
+
+g_option_context_parse_strv, function in Commandline option parser +
+
+
+g_option_context_set_description, function in Commandline option parser +
+
+
+g_option_context_set_help_enabled, function in Commandline option parser +
+
+
+g_option_context_set_ignore_unknown_options, function in Commandline option parser +
+
+
+g_option_context_set_main_group, function in Commandline option parser +
+
+
+g_option_context_set_strict_posix, function in Commandline option parser +
+
+
+g_option_context_set_summary, function in Commandline option parser +
+
+
+g_option_context_set_translate_func, function in Commandline option parser +
+
+
+g_option_context_set_translation_domain, function in Commandline option parser +
+
+
+G_OPTION_ERROR, macro in Commandline option parser +
+
+
+g_option_group_add_entries, function in Commandline option parser +
+
+
+g_option_group_free, function in Commandline option parser +
+
+
+g_option_group_new, function in Commandline option parser +
+
+
+g_option_group_ref, function in Commandline option parser +
+
+
+g_option_group_set_error_hook, function in Commandline option parser +
+
+
+g_option_group_set_parse_hooks, function in Commandline option parser +
+
+
+g_option_group_set_translate_func, function in Commandline option parser +
+
+
+g_option_group_set_translation_domain, function in Commandline option parser +
+
+
+g_option_group_unref, function in Commandline option parser +
+
+
+G_OPTION_REMAINING, macro in Commandline option parser +
+
+
+G_OS_UNIX, macro in Standard Macros +
+
+
+G_OS_WIN32, macro in Standard Macros +
+
+

P

+
+g_parse_debug_string, function in Miscellaneous Utility Functions +
+
+
+G_PASTE, macro in Miscellaneous Macros +
+
+
+g_path_get_basename, function in Miscellaneous Utility Functions +
+
+
+g_path_get_dirname, function in Miscellaneous Utility Functions +
+
+
+g_path_is_absolute, function in Miscellaneous Utility Functions +
+
+
+g_path_skip_root, function in Miscellaneous Utility Functions +
+
+
+GPatternSpec, struct in Glob-style pattern matching +
+
+
+g_pattern_match, function in Glob-style pattern matching +
+
+
+g_pattern_match_simple, function in Glob-style pattern matching +
+
+
+g_pattern_match_string, function in Glob-style pattern matching +
+
+
+g_pattern_spec_equal, function in Glob-style pattern matching +
+
+
+g_pattern_spec_free, function in Glob-style pattern matching +
+
+
+g_pattern_spec_new, function in Glob-style pattern matching +
+
+
+G_PDP_ENDIAN, macro in Byte Order Macros +
+
+
+G_PI, macro in Numerical Definitions +
+
+
+GPid, typedef in The Main Event Loop +
+
+
+G_PI_2, macro in Numerical Definitions +
+
+
+G_PI_4, macro in Numerical Definitions +
+
+
+gpointer, typedef in Basic Types +
+
+
+g_pointer_bit_lock, function in Threads +
+
+
+g_pointer_bit_trylock, function in Threads +
+
+
+g_pointer_bit_unlock, function in Threads +
+
+
+GPOINTER_TO_INT, macro in Type Conversion Macros +
+
+
+GPOINTER_TO_SIZE, macro in Type Conversion Macros +
+
+
+GPOINTER_TO_UINT, macro in Type Conversion Macros +
+
+
+g_poll, function in The Main Event Loop +
+
+
+GPollFD, struct in The Main Event Loop +
+
+
+G_POLLFD_FORMAT, macro in The Main Event Loop +
+
+
+GPollFunc, user_function in The Main Event Loop +
+
+
+g_prefix_error, function in Error Reporting +
+
+
+g_print, function in Warnings and Assertions +
+
+
+g_printerr, function in Warnings and Assertions +
+
+
+g_printf, function in String Utility Functions +
+
+
+GPrintFunc, user_function in Warnings and Assertions +
+
+
+g_printf_string_upper_bound, function in String Utility Functions +
+
+
+G_PRIORITY_DEFAULT, macro in The Main Event Loop +
+
+
+G_PRIORITY_DEFAULT_IDLE, macro in The Main Event Loop +
+
+
+G_PRIORITY_HIGH, macro in The Main Event Loop +
+
+
+G_PRIORITY_HIGH_IDLE, macro in The Main Event Loop +
+
+
+G_PRIORITY_LOW, macro in The Main Event Loop +
+
+
+GPrivate, struct in Threads +
+
+
+g_private_get, function in Threads +
+
+
+G_PRIVATE_INIT, macro in Threads +
+
+
+g_private_new, function in Deprecated Thread APIs +
+
+
+g_private_replace, function in Threads +
+
+
+g_private_set, function in Threads +
+
+
+g_propagate_error, function in Error Reporting +
+
+
+g_propagate_prefixed_error, function in Error Reporting +
+
+
+GPtrArray, struct in Pointer Arrays +
+
+
+g_ptr_array_add, function in Pointer Arrays +
+
+
+g_ptr_array_foreach, function in Pointer Arrays +
+
+
+g_ptr_array_free, function in Pointer Arrays +
+
+
+g_ptr_array_index, macro in Pointer Arrays +
+
+
+g_ptr_array_insert, function in Pointer Arrays +
+
+
+g_ptr_array_new, function in Pointer Arrays +
+
+
+g_ptr_array_new_full, function in Pointer Arrays +
+
+
+g_ptr_array_new_with_free_func, function in Pointer Arrays +
+
+
+g_ptr_array_ref, function in Pointer Arrays +
+
+
+g_ptr_array_remove, function in Pointer Arrays +
+
+
+g_ptr_array_remove_fast, function in Pointer Arrays +
+
+
+g_ptr_array_remove_index, function in Pointer Arrays +
+
+
+g_ptr_array_remove_index_fast, function in Pointer Arrays +
+
+
+g_ptr_array_remove_range, function in Pointer Arrays +
+
+
+g_ptr_array_set_free_func, function in Pointer Arrays +
+
+
+g_ptr_array_set_size, function in Pointer Arrays +
+
+
+g_ptr_array_sized_new, function in Pointer Arrays +
+
+
+g_ptr_array_sort, function in Pointer Arrays +
+
+
+g_ptr_array_sort_with_data, function in Pointer Arrays +
+
+
+g_ptr_array_unref, function in Pointer Arrays +
+
+

Q

+
+g_qsort_with_data, function in Miscellaneous Utility Functions +
+
+
+GQuark, typedef in Quarks +
+
+
+g_quark_from_static_string, function in Quarks +
+
+
+g_quark_from_string, function in Quarks +
+
+
+g_quark_to_string, function in Quarks +
+
+
+g_quark_try_string, function in Quarks +
+
+
+GQueue, struct in Double-ended Queues +
+
+
+g_queue_clear, function in Double-ended Queues +
+
+
+g_queue_copy, function in Double-ended Queues +
+
+
+g_queue_delete_link, function in Double-ended Queues +
+
+
+g_queue_find, function in Double-ended Queues +
+
+
+g_queue_find_custom, function in Double-ended Queues +
+
+
+g_queue_foreach, function in Double-ended Queues +
+
+
+g_queue_free, function in Double-ended Queues +
+
+
+g_queue_free_full, function in Double-ended Queues +
+
+
+g_queue_get_length, function in Double-ended Queues +
+
+
+g_queue_index, function in Double-ended Queues +
+
+
+G_QUEUE_INIT, macro in Double-ended Queues +
+
+
+g_queue_init, function in Double-ended Queues +
+
+
+g_queue_insert_after, function in Double-ended Queues +
+
+
+g_queue_insert_before, function in Double-ended Queues +
+
+
+g_queue_insert_sorted, function in Double-ended Queues +
+
+
+g_queue_is_empty, function in Double-ended Queues +
+
+
+g_queue_link_index, function in Double-ended Queues +
+
+
+g_queue_new, function in Double-ended Queues +
+
+
+g_queue_peek_head, function in Double-ended Queues +
+
+
+g_queue_peek_head_link, function in Double-ended Queues +
+
+
+g_queue_peek_nth, function in Double-ended Queues +
+
+
+g_queue_peek_nth_link, function in Double-ended Queues +
+
+
+g_queue_peek_tail, function in Double-ended Queues +
+
+
+g_queue_peek_tail_link, function in Double-ended Queues +
+
+
+g_queue_pop_head, function in Double-ended Queues +
+
+
+g_queue_pop_head_link, function in Double-ended Queues +
+
+
+g_queue_pop_nth, function in Double-ended Queues +
+
+
+g_queue_pop_nth_link, function in Double-ended Queues +
+
+
+g_queue_pop_tail, function in Double-ended Queues +
+
+
+g_queue_pop_tail_link, function in Double-ended Queues +
+
+
+g_queue_push_head, function in Double-ended Queues +
+
+
+g_queue_push_head_link, function in Double-ended Queues +
+
+
+g_queue_push_nth, function in Double-ended Queues +
+
+
+g_queue_push_nth_link, function in Double-ended Queues +
+
+
+g_queue_push_tail, function in Double-ended Queues +
+
+
+g_queue_push_tail_link, function in Double-ended Queues +
+
+
+g_queue_remove, function in Double-ended Queues +
+
+
+g_queue_remove_all, function in Double-ended Queues +
+
+
+g_queue_reverse, function in Double-ended Queues +
+
+
+g_queue_sort, function in Double-ended Queues +
+
+
+g_queue_unlink, function in Double-ended Queues +
+
+
+Q_, macro in I18N +
+
+

R

+
+GRand, struct in Random Numbers +
+
+
+g_random_boolean, macro in Random Numbers +
+
+
+g_random_double, function in Random Numbers +
+
+
+g_random_double_range, function in Random Numbers +
+
+
+g_random_int, function in Random Numbers +
+
+
+g_random_int_range, function in Random Numbers +
+
+
+g_random_set_seed, function in Random Numbers +
+
+
+g_rand_boolean, macro in Random Numbers +
+
+
+g_rand_copy, function in Random Numbers +
+
+
+g_rand_double, function in Random Numbers +
+
+
+g_rand_double_range, function in Random Numbers +
+
+
+g_rand_free, function in Random Numbers +
+
+
+g_rand_int, function in Random Numbers +
+
+
+g_rand_int_range, function in Random Numbers +
+
+
+g_rand_new, function in Random Numbers +
+
+
+g_rand_new_with_seed, function in Random Numbers +
+
+
+g_rand_new_with_seed_array, function in Random Numbers +
+
+
+g_rand_set_seed, function in Random Numbers +
+
+
+g_rand_set_seed_array, function in Random Numbers +
+
+
+g_realloc, function in Memory Allocation +
+
+
+g_realloc_n, function in Memory Allocation +
+
+
+GRecMutex, struct in Threads +
+
+
+g_rec_mutex_clear, function in Threads +
+
+
+g_rec_mutex_init, function in Threads +
+
+
+g_rec_mutex_lock, function in Threads +
+
+
+g_rec_mutex_trylock, function in Threads +
+
+
+g_rec_mutex_unlock, function in Threads +
+
+
+GRegex, struct in Perl-compatible regular expressions +
+
+
+GRegexCompileFlags, enum in Perl-compatible regular expressions +
+
+
+GRegexError, enum in Perl-compatible regular expressions +
+
+
+GRegexEvalCallback, user_function in Perl-compatible regular expressions +
+
+
+GRegexMatchFlags, enum in Perl-compatible regular expressions +
+
+
+g_regex_check_replacement, function in Perl-compatible regular expressions +
+
+
+G_REGEX_ERROR, macro in Perl-compatible regular expressions +
+
+
+g_regex_escape_nul, function in Perl-compatible regular expressions +
+
+
+g_regex_escape_string, function in Perl-compatible regular expressions +
+
+
+g_regex_get_capture_count, function in Perl-compatible regular expressions +
+
+
+g_regex_get_compile_flags, function in Perl-compatible regular expressions +
+
+
+g_regex_get_has_cr_or_lf, function in Perl-compatible regular expressions +
+
+
+g_regex_get_match_flags, function in Perl-compatible regular expressions +
+
+
+g_regex_get_max_backref, function in Perl-compatible regular expressions +
+
+
+g_regex_get_max_lookbehind, function in Perl-compatible regular expressions +
+
+
+g_regex_get_pattern, function in Perl-compatible regular expressions +
+
+
+g_regex_get_string_number, function in Perl-compatible regular expressions +
+
+
+g_regex_match, function in Perl-compatible regular expressions +
+
+
+g_regex_match_all, function in Perl-compatible regular expressions +
+
+
+g_regex_match_all_full, function in Perl-compatible regular expressions +
+
+
+g_regex_match_full, function in Perl-compatible regular expressions +
+
+
+g_regex_match_simple, function in Perl-compatible regular expressions +
+
+
+g_regex_new, function in Perl-compatible regular expressions +
+
+
+g_regex_ref, function in Perl-compatible regular expressions +
+
+
+g_regex_replace, function in Perl-compatible regular expressions +
+
+
+g_regex_replace_eval, function in Perl-compatible regular expressions +
+
+
+g_regex_replace_literal, function in Perl-compatible regular expressions +
+
+
+g_regex_split, function in Perl-compatible regular expressions +
+
+
+g_regex_split_full, function in Perl-compatible regular expressions +
+
+
+g_regex_split_simple, function in Perl-compatible regular expressions +
+
+
+g_regex_unref, function in Perl-compatible regular expressions +
+
+
+GRelation, struct in Relations and Tuples +
+
+
+g_relation_count, function in Relations and Tuples +
+
+
+g_relation_delete, function in Relations and Tuples +
+
+
+g_relation_destroy, function in Relations and Tuples +
+
+
+g_relation_exists, function in Relations and Tuples +
+
+
+g_relation_index, function in Relations and Tuples +
+
+
+g_relation_insert, function in Relations and Tuples +
+
+
+g_relation_new, function in Relations and Tuples +
+
+
+g_relation_print, function in Relations and Tuples +
+
+
+g_relation_select, function in Relations and Tuples +
+
+
+g_reload_user_special_dirs_cache, function in Miscellaneous Utility Functions +
+
+
+g_remove, function in File Utilities +
+
+
+g_rename, function in File Utilities +
+
+
+g_renew, macro in Memory Allocation +
+
+
+g_return_if_fail, macro in Warnings and Assertions +
+
+
+g_return_if_reached, macro in Warnings and Assertions +
+
+
+g_return_val_if_fail, macro in Warnings and Assertions +
+
+
+g_return_val_if_reached, macro in Warnings and Assertions +
+
+
+g_rmdir, function in File Utilities +
+
+
+GRWLock, struct in Threads +
+
+
+g_rw_lock_clear, function in Threads +
+
+
+g_rw_lock_init, function in Threads +
+
+
+g_rw_lock_reader_lock, function in Threads +
+
+
+g_rw_lock_reader_trylock, function in Threads +
+
+
+g_rw_lock_reader_unlock, function in Threads +
+
+
+g_rw_lock_writer_lock, function in Threads +
+
+
+g_rw_lock_writer_trylock, function in Threads +
+
+
+g_rw_lock_writer_unlock, function in Threads +
+
+

S

+
+GScanner, struct in Lexical Scanner +
+
+
+GScannerConfig, struct in Lexical Scanner +
+
+
+GScannerMsgFunc, user_function in Lexical Scanner +
+
+
+g_scanner_add_symbol, macro in Lexical Scanner +
+
+
+g_scanner_cur_line, function in Lexical Scanner +
+
+
+g_scanner_cur_position, function in Lexical Scanner +
+
+
+g_scanner_cur_token, function in Lexical Scanner +
+
+
+g_scanner_cur_value, function in Lexical Scanner +
+
+
+g_scanner_destroy, function in Lexical Scanner +
+
+
+g_scanner_eof, function in Lexical Scanner +
+
+
+g_scanner_error, function in Lexical Scanner +
+
+
+g_scanner_foreach_symbol, macro in Lexical Scanner +
+
+
+g_scanner_freeze_symbol_table, macro in Lexical Scanner +
+
+
+g_scanner_get_next_token, function in Lexical Scanner +
+
+
+g_scanner_input_file, function in Lexical Scanner +
+
+
+g_scanner_input_text, function in Lexical Scanner +
+
+
+g_scanner_lookup_symbol, function in Lexical Scanner +
+
+
+g_scanner_new, function in Lexical Scanner +
+
+
+g_scanner_peek_next_token, function in Lexical Scanner +
+
+
+g_scanner_remove_symbol, macro in Lexical Scanner +
+
+
+g_scanner_scope_add_symbol, function in Lexical Scanner +
+
+
+g_scanner_scope_foreach_symbol, function in Lexical Scanner +
+
+
+g_scanner_scope_lookup_symbol, function in Lexical Scanner +
+
+
+g_scanner_scope_remove_symbol, function in Lexical Scanner +
+
+
+g_scanner_set_scope, function in Lexical Scanner +
+
+
+g_scanner_sync_file_offset, function in Lexical Scanner +
+
+
+g_scanner_thaw_symbol_table, macro in Lexical Scanner +
+
+
+g_scanner_unexp_token, function in Lexical Scanner +
+
+
+g_scanner_warn, function in Lexical Scanner +
+
+
+G_SEARCHPATH_SEPARATOR, macro in Standard Macros +
+
+
+G_SEARCHPATH_SEPARATOR_S, macro in Standard Macros +
+
+
+GSeekType, enum in IO Channels +
+
+
+GSequence, struct in Sequences +
+
+
+GSequenceIter, typedef in Sequences +
+
+
+GSequenceIterCompareFunc, user_function in Sequences +
+
+
+g_sequence_append, function in Sequences +
+
+
+g_sequence_foreach, function in Sequences +
+
+
+g_sequence_foreach_range, function in Sequences +
+
+
+g_sequence_free, function in Sequences +
+
+
+g_sequence_get, function in Sequences +
+
+
+g_sequence_get_begin_iter, function in Sequences +
+
+
+g_sequence_get_end_iter, function in Sequences +
+
+
+g_sequence_get_iter_at_pos, function in Sequences +
+
+
+g_sequence_get_length, function in Sequences +
+
+
+g_sequence_insert_before, function in Sequences +
+
+
+g_sequence_insert_sorted, function in Sequences +
+
+
+g_sequence_insert_sorted_iter, function in Sequences +
+
+
+g_sequence_is_empty, function in Sequences +
+
+
+g_sequence_iter_compare, function in Sequences +
+
+
+g_sequence_iter_get_position, function in Sequences +
+
+
+g_sequence_iter_get_sequence, function in Sequences +
+
+
+g_sequence_iter_is_begin, function in Sequences +
+
+
+g_sequence_iter_is_end, function in Sequences +
+
+
+g_sequence_iter_move, function in Sequences +
+
+
+g_sequence_iter_next, function in Sequences +
+
+
+g_sequence_iter_prev, function in Sequences +
+
+
+g_sequence_lookup, function in Sequences +
+
+
+g_sequence_lookup_iter, function in Sequences +
+
+
+g_sequence_move, function in Sequences +
+
+
+g_sequence_move_range, function in Sequences +
+
+
+g_sequence_new, function in Sequences +
+
+
+g_sequence_prepend, function in Sequences +
+
+
+g_sequence_range_get_midpoint, function in Sequences +
+
+
+g_sequence_remove, function in Sequences +
+
+
+g_sequence_remove_range, function in Sequences +
+
+
+g_sequence_search, function in Sequences +
+
+
+g_sequence_search_iter, function in Sequences +
+
+
+g_sequence_set, function in Sequences +
+
+
+g_sequence_sort, function in Sequences +
+
+
+g_sequence_sort_changed, function in Sequences +
+
+
+g_sequence_sort_changed_iter, function in Sequences +
+
+
+g_sequence_sort_iter, function in Sequences +
+
+
+g_sequence_swap, function in Sequences +
+
+
+g_setenv, function in Miscellaneous Utility Functions +
+
+
+g_set_application_name, function in Miscellaneous Utility Functions +
+
+
+g_set_error, function in Error Reporting +
+
+
+g_set_error_literal, function in Error Reporting +
+
+
+g_set_prgname, function in Miscellaneous Utility Functions +
+
+
+g_set_printerr_handler, function in Warnings and Assertions +
+
+
+g_set_print_handler, function in Warnings and Assertions +
+
+
+GShellError, enum in Shell-related Utilities +
+
+
+G_SHELL_ERROR, macro in Shell-related Utilities +
+
+
+g_shell_parse_argv, function in Shell-related Utilities +
+
+
+g_shell_quote, function in Shell-related Utilities +
+
+
+g_shell_unquote, function in Shell-related Utilities +
+
+
+gshort, typedef in Basic Types +
+
+
+gsize, typedef in Basic Types +
+
+
+g_size_checked_add, macro in Bounds-checked integer arithmetic +
+
+
+g_size_checked_mul, macro in Bounds-checked integer arithmetic +
+
+
+GSIZE_FROM_BE, macro in Byte Order Macros +
+
+
+GSIZE_FROM_LE, macro in Byte Order Macros +
+
+
+GSIZE_TO_BE, macro in Byte Order Macros +
+
+
+GSIZE_TO_LE, macro in Byte Order Macros +
+
+
+GSIZE_TO_POINTER, macro in Type Conversion Macros +
+
+
+g_slice_alloc, function in Memory Slices +
+
+
+g_slice_alloc0, function in Memory Slices +
+
+
+g_slice_copy, function in Memory Slices +
+
+
+g_slice_dup, macro in Memory Slices +
+
+
+g_slice_free, macro in Memory Slices +
+
+
+g_slice_free1, function in Memory Slices +
+
+
+g_slice_free_chain, macro in Memory Slices +
+
+
+g_slice_free_chain_with_offset, function in Memory Slices +
+
+
+g_slice_new, macro in Memory Slices +
+
+
+g_slice_new0, macro in Memory Slices +
+
+
+GSList, struct in Singly-Linked Lists +
+
+
+g_slist_alloc, function in Singly-Linked Lists +
+
+
+g_slist_append, function in Singly-Linked Lists +
+
+
+g_slist_concat, function in Singly-Linked Lists +
+
+
+g_slist_copy, function in Singly-Linked Lists +
+
+
+g_slist_copy_deep, function in Singly-Linked Lists +
+
+
+g_slist_delete_link, function in Singly-Linked Lists +
+
+
+g_slist_find, function in Singly-Linked Lists +
+
+
+g_slist_find_custom, function in Singly-Linked Lists +
+
+
+g_slist_foreach, function in Singly-Linked Lists +
+
+
+g_slist_free, function in Singly-Linked Lists +
+
+
+g_slist_free1, macro in Singly-Linked Lists +
+
+
+g_slist_free_1, function in Singly-Linked Lists +
+
+
+g_slist_free_full, function in Singly-Linked Lists +
+
+
+g_slist_index, function in Singly-Linked Lists +
+
+
+g_slist_insert, function in Singly-Linked Lists +
+
+
+g_slist_insert_before, function in Singly-Linked Lists +
+
+
+g_slist_insert_sorted, function in Singly-Linked Lists +
+
+
+g_slist_insert_sorted_with_data, function in Singly-Linked Lists +
+
+
+g_slist_last, function in Singly-Linked Lists +
+
+
+g_slist_length, function in Singly-Linked Lists +
+
+
+g_slist_next, macro in Singly-Linked Lists +
+
+
+g_slist_nth, function in Singly-Linked Lists +
+
+
+g_slist_nth_data, function in Singly-Linked Lists +
+
+
+g_slist_position, function in Singly-Linked Lists +
+
+
+g_slist_prepend, function in Singly-Linked Lists +
+
+
+g_slist_remove, function in Singly-Linked Lists +
+
+
+g_slist_remove_all, function in Singly-Linked Lists +
+
+
+g_slist_remove_link, function in Singly-Linked Lists +
+
+
+g_slist_reverse, function in Singly-Linked Lists +
+
+
+g_slist_sort, function in Singly-Linked Lists +
+
+
+g_slist_sort_with_data, function in Singly-Linked Lists +
+
+
+g_snprintf, function in String Utility Functions +
+
+
+GSource, struct in The Main Event Loop +
+
+
+GSourceCallbackFuncs, struct in The Main Event Loop +
+
+
+GSourceDummyMarshal, user_function in The Main Event Loop +
+
+
+GSourceFunc, user_function in The Main Event Loop +
+
+
+GSourceFuncs, struct in The Main Event Loop +
+
+
+g_source_add_child_source, function in The Main Event Loop +
+
+
+g_source_add_poll, function in The Main Event Loop +
+
+
+g_source_add_unix_fd, function in The Main Event Loop +
+
+
+g_source_attach, function in The Main Event Loop +
+
+
+G_SOURCE_CONTINUE, macro in The Main Event Loop +
+
+
+g_source_destroy, function in The Main Event Loop +
+
+
+g_source_get_can_recurse, function in The Main Event Loop +
+
+
+g_source_get_context, function in The Main Event Loop +
+
+
+g_source_get_current_time, function in The Main Event Loop +
+
+
+g_source_get_id, function in The Main Event Loop +
+
+
+g_source_get_name, function in The Main Event Loop +
+
+
+g_source_get_priority, function in The Main Event Loop +
+
+
+g_source_get_ready_time, function in The Main Event Loop +
+
+
+g_source_get_time, function in The Main Event Loop +
+
+
+g_source_is_destroyed, function in The Main Event Loop +
+
+
+g_source_modify_unix_fd, function in The Main Event Loop +
+
+
+g_source_new, function in The Main Event Loop +
+
+
+g_source_query_unix_fd, function in The Main Event Loop +
+
+
+g_source_ref, function in The Main Event Loop +
+
+
+G_SOURCE_REMOVE, macro in The Main Event Loop +
+
+
+g_source_remove, function in The Main Event Loop +
+
+
+g_source_remove_by_funcs_user_data, function in The Main Event Loop +
+
+
+g_source_remove_by_user_data, function in The Main Event Loop +
+
+
+g_source_remove_child_source, function in The Main Event Loop +
+
+
+g_source_remove_poll, function in The Main Event Loop +
+
+
+g_source_remove_unix_fd, function in The Main Event Loop +
+
+
+g_source_set_callback, function in The Main Event Loop +
+
+
+g_source_set_callback_indirect, function in The Main Event Loop +
+
+
+g_source_set_can_recurse, function in The Main Event Loop +
+
+
+g_source_set_funcs, function in The Main Event Loop +
+
+
+g_source_set_name, function in The Main Event Loop +
+
+
+g_source_set_name_by_id, function in The Main Event Loop +
+
+
+g_source_set_priority, function in The Main Event Loop +
+
+
+g_source_set_ready_time, function in The Main Event Loop +
+
+
+g_source_unref, function in The Main Event Loop +
+
+
+g_spaced_primes_closest, function in Miscellaneous Utility Functions +
+
+
+GSpawnChildSetupFunc, user_function in Spawning Processes +
+
+
+GSpawnError, enum in Spawning Processes +
+
+
+GSpawnFlags, enum in Spawning Processes +
+
+
+g_spawn_async, function in Spawning Processes +
+
+
+g_spawn_async_with_pipes, function in Spawning Processes +
+
+
+g_spawn_check_exit_status, function in Spawning Processes +
+
+
+g_spawn_close_pid, function in Spawning Processes +
+
+
+g_spawn_command_line_async, function in Spawning Processes +
+
+
+g_spawn_command_line_sync, function in Spawning Processes +
+
+
+G_SPAWN_ERROR, macro in Spawning Processes +
+
+
+G_SPAWN_EXIT_ERROR, macro in Spawning Processes +
+
+
+g_spawn_sync, function in Spawning Processes +
+
+
+g_sprintf, function in String Utility Functions +
+
+
+G_SQRT2, macro in Numerical Definitions +
+
+
+gssize, typedef in Basic Types +
+
+
+GSSIZE_FROM_BE, macro in Byte Order Macros +
+
+
+GSSIZE_FROM_LE, macro in Byte Order Macros +
+
+
+GSSIZE_TO_BE, macro in Byte Order Macros +
+
+
+GSSIZE_TO_LE, macro in Byte Order Macros +
+
+
+g_stat, function in File Utilities +
+
+
+GStatBuf, typedef in File Utilities +
+
+
+GStaticMutex, struct in Deprecated Thread APIs +
+
+
+GStaticPrivate, struct in Deprecated Thread APIs +
+
+
+GStaticRecMutex, struct in Deprecated Thread APIs +
+
+
+GStaticRWLock, struct in Deprecated Thread APIs +
+
+
+G_STATIC_ASSERT, macro in Miscellaneous Macros +
+
+
+G_STATIC_ASSERT_EXPR, macro in Miscellaneous Macros +
+
+
+g_static_mutex_free, function in Deprecated Thread APIs +
+
+
+g_static_mutex_get_mutex, function in Deprecated Thread APIs +
+
+
+G_STATIC_MUTEX_INIT, macro in Deprecated Thread APIs +
+
+
+g_static_mutex_init, function in Deprecated Thread APIs +
+
+
+g_static_mutex_lock, function in Deprecated Thread APIs +
+
+
+g_static_mutex_trylock, function in Deprecated Thread APIs +
+
+
+g_static_mutex_unlock, function in Deprecated Thread APIs +
+
+
+g_static_private_free, function in Deprecated Thread APIs +
+
+
+g_static_private_get, function in Deprecated Thread APIs +
+
+
+G_STATIC_PRIVATE_INIT, macro in Deprecated Thread APIs +
+
+
+g_static_private_init, function in Deprecated Thread APIs +
+
+
+g_static_private_set, function in Deprecated Thread APIs +
+
+
+g_static_rec_mutex_free, function in Deprecated Thread APIs +
+
+
+G_STATIC_REC_MUTEX_INIT, macro in Deprecated Thread APIs +
+
+
+g_static_rec_mutex_init, function in Deprecated Thread APIs +
+
+
+g_static_rec_mutex_lock, function in Deprecated Thread APIs +
+
+
+g_static_rec_mutex_lock_full, function in Deprecated Thread APIs +
+
+
+g_static_rec_mutex_trylock, function in Deprecated Thread APIs +
+
+
+g_static_rec_mutex_unlock, function in Deprecated Thread APIs +
+
+
+g_static_rec_mutex_unlock_full, function in Deprecated Thread APIs +
+
+
+g_static_rw_lock_free, function in Deprecated Thread APIs +
+
+
+G_STATIC_RW_LOCK_INIT, macro in Deprecated Thread APIs +
+
+
+g_static_rw_lock_init, function in Deprecated Thread APIs +
+
+
+g_static_rw_lock_reader_lock, function in Deprecated Thread APIs +
+
+
+g_static_rw_lock_reader_trylock, function in Deprecated Thread APIs +
+
+
+g_static_rw_lock_reader_unlock, function in Deprecated Thread APIs +
+
+
+g_static_rw_lock_writer_lock, function in Deprecated Thread APIs +
+
+
+g_static_rw_lock_writer_trylock, function in Deprecated Thread APIs +
+
+
+g_static_rw_lock_writer_unlock, function in Deprecated Thread APIs +
+
+
+g_steal_pointer, function in Memory Allocation +
+
+
+G_STMT_END, macro in Miscellaneous Macros +
+
+
+G_STMT_START, macro in Miscellaneous Macros +
+
+
+g_stpcpy, function in String Utility Functions +
+
+
+g_strcanon, function in String Utility Functions +
+
+
+g_strcasecmp, function in String Utility Functions +
+
+
+g_strchomp, function in String Utility Functions +
+
+
+g_strchug, function in String Utility Functions +
+
+
+g_strcmp0, function in String Utility Functions +
+
+
+g_strcompress, function in String Utility Functions +
+
+
+g_strconcat, function in String Utility Functions +
+
+
+g_strdelimit, function in String Utility Functions +
+
+
+g_strdown, function in String Utility Functions +
+
+
+g_strdup, function in String Utility Functions +
+
+
+g_strdupv, function in String Utility Functions +
+
+
+g_strdup_printf, function in String Utility Functions +
+
+
+g_strdup_vprintf, function in String Utility Functions +
+
+
+g_strerror, function in String Utility Functions +
+
+
+g_strescape, function in String Utility Functions +
+
+
+g_strfreev, function in String Utility Functions +
+
+
+G_STRFUNC, macro in Miscellaneous Macros +
+
+
+GString, struct in Strings +
+
+
+GStringChunk, struct in String Chunks +
+
+
+G_STRINGIFY, macro in Miscellaneous Macros +
+
+
+g_string_append, function in Strings +
+
+
+g_string_append_c, function in Strings +
+
+
+g_string_append_len, function in Strings +
+
+
+g_string_append_printf, function in Strings +
+
+
+g_string_append_unichar, function in Strings +
+
+
+g_string_append_uri_escaped, function in Strings +
+
+
+g_string_append_vprintf, function in Strings +
+
+
+g_string_ascii_down, function in String Utility Functions +
+
+
+g_string_ascii_up, function in String Utility Functions +
+
+
+g_string_assign, function in Strings +
+
+
+g_string_chunk_clear, function in String Chunks +
+
+
+g_string_chunk_free, function in String Chunks +
+
+
+g_string_chunk_insert, function in String Chunks +
+
+
+g_string_chunk_insert_const, function in String Chunks +
+
+
+g_string_chunk_insert_len, function in String Chunks +
+
+
+g_string_chunk_new, function in String Chunks +
+
+
+g_string_down, function in Strings +
+
+
+g_string_equal, function in Strings +
+
+
+g_string_erase, function in Strings +
+
+
+g_string_free, function in Strings +
+
+
+g_string_free_to_bytes, function in Strings +
+
+
+g_string_hash, function in Strings +
+
+
+g_string_insert, function in Strings +
+
+
+g_string_insert_c, function in Strings +
+
+
+g_string_insert_len, function in Strings +
+
+
+g_string_insert_unichar, function in Strings +
+
+
+g_string_new, function in Strings +
+
+
+g_string_new_len, function in Strings +
+
+
+g_string_overwrite, function in Strings +
+
+
+g_string_overwrite_len, function in Strings +
+
+
+g_string_prepend, function in Strings +
+
+
+g_string_prepend_c, function in Strings +
+
+
+g_string_prepend_len, function in Strings +
+
+
+g_string_prepend_unichar, function in Strings +
+
+
+g_string_printf, function in Strings +
+
+
+g_string_set_size, function in Strings +
+
+
+g_string_sized_new, function in Strings +
+
+
+g_string_sprintf, macro in Strings +
+
+
+g_string_sprintfa, macro in Strings +
+
+
+g_string_truncate, function in Strings +
+
+
+g_string_up, function in Strings +
+
+
+g_string_vprintf, function in Strings +
+
+
+g_strip_context, function in I18N +
+
+
+g_strjoin, function in String Utility Functions +
+
+
+g_strjoinv, function in String Utility Functions +
+
+
+g_strlcat, function in String Utility Functions +
+
+
+g_strlcpy, function in String Utility Functions +
+
+
+G_STRLOC, macro in Miscellaneous Macros +
+
+
+g_strncasecmp, function in String Utility Functions +
+
+
+g_strndup, function in String Utility Functions +
+
+
+g_strnfill, function in String Utility Functions +
+
+
+g_strreverse, function in String Utility Functions +
+
+
+g_strrstr, function in String Utility Functions +
+
+
+g_strrstr_len, function in String Utility Functions +
+
+
+g_strsignal, function in String Utility Functions +
+
+
+g_strsplit, function in String Utility Functions +
+
+
+g_strsplit_set, function in String Utility Functions +
+
+
+g_strstrip, macro in String Utility Functions +
+
+
+g_strstr_len, function in String Utility Functions +
+
+
+g_strtod, function in String Utility Functions +
+
+
+G_STRUCT_MEMBER, macro in Standard Macros +
+
+
+G_STRUCT_MEMBER_P, macro in Standard Macros +
+
+
+G_STRUCT_OFFSET, macro in Standard Macros +
+
+
+g_strup, function in String Utility Functions +
+
+
+GStrv, typedef in String Utility Functions +
+
+
+g_strv_contains, function in String Utility Functions +
+
+
+g_strv_length, function in String Utility Functions +
+
+
+G_STR_DELIMITERS, macro in String Utility Functions +
+
+
+g_str_equal, function in Hash Tables +
+
+
+g_str_hash, function in Hash Tables +
+
+
+g_str_has_prefix, function in String Utility Functions +
+
+
+g_str_has_suffix, function in String Utility Functions +
+
+
+g_str_is_ascii, function in String Utility Functions +
+
+
+g_str_match_string, function in String Utility Functions +
+
+
+g_str_tokenize_and_fold, function in String Utility Functions +
+
+
+g_str_to_ascii, function in String Utility Functions +
+
+

T

+
+GTestCase, typedef in Testing +
+
+
+GTestDataFunc, user_function in Testing +
+
+
+GTestFileType, enum in Testing +
+
+
+GTestFixtureFunc, user_function in Testing +
+
+
+GTestFunc, user_function in Testing +
+
+
+GTestLogFatalFunc, user_function in Testing +
+
+
+GTestSubprocessFlags, enum in Testing +
+
+
+GTestSuite, typedef in Testing +
+
+
+GTestTrapFlags, enum in Testing +
+
+
+g_test_add, macro in Testing +
+
+
+g_test_add_data_func, function in Testing +
+
+
+g_test_add_data_func_full, function in Testing +
+
+
+g_test_add_func, function in Testing +
+
+
+g_test_assert_expected_messages, macro in Testing +
+
+
+g_test_bug, function in Testing +
+
+
+g_test_bug_base, function in Testing +
+
+
+g_test_build_filename, function in Testing +
+
+
+g_test_create_case, function in Testing +
+
+
+g_test_create_suite, function in Testing +
+
+
+g_test_expect_message, function in Testing +
+
+
+g_test_fail, function in Testing +
+
+
+g_test_failed, function in Testing +
+
+
+g_test_get_dir, function in Testing +
+
+
+g_test_get_filename, function in Testing +
+
+
+g_test_get_root, function in Testing +
+
+
+g_test_incomplete, function in Testing +
+
+
+g_test_init, function in Testing +
+
+
+g_test_initialized, macro in Testing +
+
+
+g_test_log_set_fatal_handler, function in Testing +
+
+
+g_test_maximized_result, function in Testing +
+
+
+g_test_message, function in Testing +
+
+
+g_test_minimized_result, function in Testing +
+
+
+g_test_perf, macro in Testing +
+
+
+g_test_queue_destroy, function in Testing +
+
+
+g_test_queue_free, function in Testing +
+
+
+g_test_queue_unref, macro in Testing +
+
+
+g_test_quick, macro in Testing +
+
+
+g_test_quiet, macro in Testing +
+
+
+g_test_rand_bit, macro in Testing +
+
+
+g_test_rand_double, function in Testing +
+
+
+g_test_rand_double_range, function in Testing +
+
+
+g_test_rand_int, function in Testing +
+
+
+g_test_rand_int_range, function in Testing +
+
+
+g_test_run, function in Testing +
+
+
+g_test_run_suite, function in Testing +
+
+
+g_test_set_nonfatal_assertions, function in Testing +
+
+
+g_test_skip, function in Testing +
+
+
+g_test_slow, macro in Testing +
+
+
+g_test_subprocess, function in Testing +
+
+
+g_test_suite_add, function in Testing +
+
+
+g_test_suite_add_suite, function in Testing +
+
+
+g_test_thorough, macro in Testing +
+
+
+g_test_timer_elapsed, function in Testing +
+
+
+g_test_timer_last, function in Testing +
+
+
+g_test_timer_start, function in Testing +
+
+
+g_test_trap_assert_failed, macro in Testing +
+
+
+g_test_trap_assert_passed, macro in Testing +
+
+
+g_test_trap_assert_stderr, macro in Testing +
+
+
+g_test_trap_assert_stderr_unmatched, macro in Testing +
+
+
+g_test_trap_assert_stdout, macro in Testing +
+
+
+g_test_trap_assert_stdout_unmatched, macro in Testing +
+
+
+g_test_trap_fork, function in Testing +
+
+
+g_test_trap_has_passed, function in Testing +
+
+
+g_test_trap_reached_timeout, function in Testing +
+
+
+g_test_trap_subprocess, function in Testing +
+
+
+g_test_undefined, macro in Testing +
+
+
+g_test_verbose, macro in Testing +
+
+
+GThread, struct in Threads +
+
+
+GThreadError, enum in Threads +
+
+
+GThreadFunc, user_function in Threads +
+
+
+GThreadPool, struct in Thread Pools +
+
+
+GThreadPriority, enum in Deprecated Thread APIs +
+
+
+G_THREADS_IMPL_POSIX, macro in Deprecated Thread APIs +
+
+
+G_THREADS_IMPL_WIN32, macro in Deprecated Thread APIs +
+
+
+g_thread_create, function in Deprecated Thread APIs +
+
+
+g_thread_create_full, function in Deprecated Thread APIs +
+
+
+G_THREAD_ERROR, macro in Threads +
+
+
+g_thread_exit, function in Threads +
+
+
+g_thread_foreach, function in Deprecated Thread APIs +
+
+
+g_thread_get_initialized, function in Deprecated Thread APIs +
+
+
+g_thread_init, function in Deprecated Thread APIs +
+
+
+g_thread_join, function in Threads +
+
+
+g_thread_new, function in Threads +
+
+
+g_thread_pool_free, function in Thread Pools +
+
+
+g_thread_pool_get_max_idle_time, function in Thread Pools +
+
+
+g_thread_pool_get_max_threads, function in Thread Pools +
+
+
+g_thread_pool_get_max_unused_threads, function in Thread Pools +
+
+
+g_thread_pool_get_num_threads, function in Thread Pools +
+
+
+g_thread_pool_get_num_unused_threads, function in Thread Pools +
+
+
+g_thread_pool_move_to_front, function in Thread Pools +
+
+
+g_thread_pool_new, function in Thread Pools +
+
+
+g_thread_pool_push, function in Thread Pools +
+
+
+g_thread_pool_set_max_idle_time, function in Thread Pools +
+
+
+g_thread_pool_set_max_threads, function in Thread Pools +
+
+
+g_thread_pool_set_max_unused_threads, function in Thread Pools +
+
+
+g_thread_pool_set_sort_function, function in Thread Pools +
+
+
+g_thread_pool_stop_unused_threads, function in Thread Pools +
+
+
+g_thread_pool_unprocessed, function in Thread Pools +
+
+
+g_thread_ref, function in Threads +
+
+
+g_thread_self, function in Threads +
+
+
+g_thread_set_priority, function in Deprecated Thread APIs +
+
+
+g_thread_supported, function in Deprecated Thread APIs +
+
+
+g_thread_try_new, function in Threads +
+
+
+g_thread_unref, function in Threads +
+
+
+g_thread_yield, function in Threads +
+
+
+GTime, typedef in Date and Time Functions +
+
+
+g_timeout_add, function in The Main Event Loop +
+
+
+g_timeout_add_full, function in The Main Event Loop +
+
+
+g_timeout_add_seconds, function in The Main Event Loop +
+
+
+g_timeout_add_seconds_full, function in The Main Event Loop +
+
+
+g_timeout_source_new, function in The Main Event Loop +
+
+
+g_timeout_source_new_seconds, function in The Main Event Loop +
+
+
+GTimer, struct in Timers +
+
+
+g_timer_continue, function in Timers +
+
+
+g_timer_destroy, function in Timers +
+
+
+g_timer_elapsed, function in Timers +
+
+
+g_timer_new, function in Timers +
+
+
+g_timer_reset, function in Timers +
+
+
+g_timer_start, function in Timers +
+
+
+g_timer_stop, function in Timers +
+
+
+GTimeSpan, typedef in GDateTime +
+
+
+GTimeType, enum in GTimeZone +
+
+
+GTimeVal, struct in Date and Time Functions +
+
+
+GTimeZone, struct in GTimeZone +
+
+
+G_TIME_SPAN_DAY, macro in GDateTime +
+
+
+G_TIME_SPAN_HOUR, macro in GDateTime +
+
+
+G_TIME_SPAN_MILLISECOND, macro in GDateTime +
+
+
+G_TIME_SPAN_MINUTE, macro in GDateTime +
+
+
+G_TIME_SPAN_SECOND, macro in GDateTime +
+
+
+g_time_val_add, function in Date and Time Functions +
+
+
+g_time_val_from_iso8601, function in Date and Time Functions +
+
+
+g_time_val_to_iso8601, function in Date and Time Functions +
+
+
+g_time_zone_adjust_time, function in GTimeZone +
+
+
+g_time_zone_find_interval, function in GTimeZone +
+
+
+g_time_zone_get_abbreviation, function in GTimeZone +
+
+
+g_time_zone_get_offset, function in GTimeZone +
+
+
+g_time_zone_is_dst, function in GTimeZone +
+
+
+g_time_zone_new, function in GTimeZone +
+
+
+g_time_zone_new_local, function in GTimeZone +
+
+
+g_time_zone_new_utc, function in GTimeZone +
+
+
+g_time_zone_ref, function in GTimeZone +
+
+
+g_time_zone_unref, function in GTimeZone +
+
+
+GTokenType, enum in Lexical Scanner +
+
+
+GTokenValue, union in Lexical Scanner +
+
+
+GTranslateFunc, user_function in Commandline option parser +
+
+
+GTrashStack, struct in Trash Stacks +
+
+
+g_trash_stack_height, function in Trash Stacks +
+
+
+g_trash_stack_peek, function in Trash Stacks +
+
+
+g_trash_stack_pop, function in Trash Stacks +
+
+
+g_trash_stack_push, function in Trash Stacks +
+
+
+GTraverseFlags, enum in N-ary Trees +
+
+
+GTraverseFunc, user_function in Balanced Binary Trees +
+
+
+GTraverseType, enum in N-ary Trees +
+
+
+GTree, struct in Balanced Binary Trees +
+
+
+g_tree_destroy, function in Balanced Binary Trees +
+
+
+g_tree_foreach, function in Balanced Binary Trees +
+
+
+g_tree_height, function in Balanced Binary Trees +
+
+
+g_tree_insert, function in Balanced Binary Trees +
+
+
+g_tree_lookup, function in Balanced Binary Trees +
+
+
+g_tree_lookup_extended, function in Balanced Binary Trees +
+
+
+g_tree_new, function in Balanced Binary Trees +
+
+
+g_tree_new_full, function in Balanced Binary Trees +
+
+
+g_tree_new_with_data, function in Balanced Binary Trees +
+
+
+g_tree_nnodes, function in Balanced Binary Trees +
+
+
+g_tree_ref, function in Balanced Binary Trees +
+
+
+g_tree_remove, function in Balanced Binary Trees +
+
+
+g_tree_replace, function in Balanced Binary Trees +
+
+
+g_tree_search, function in Balanced Binary Trees +
+
+
+g_tree_steal, function in Balanced Binary Trees +
+
+
+g_tree_traverse, function in Balanced Binary Trees +
+
+
+g_tree_unref, function in Balanced Binary Trees +
+
+
+TRUE, macro in Standard Macros +
+
+
+G_TRYLOCK, macro in Threads +
+
+
+g_try_malloc, function in Memory Allocation +
+
+
+g_try_malloc0, function in Memory Allocation +
+
+
+g_try_malloc0_n, function in Memory Allocation +
+
+
+g_try_malloc_n, function in Memory Allocation +
+
+
+g_try_new, macro in Memory Allocation +
+
+
+g_try_new0, macro in Memory Allocation +
+
+
+g_try_realloc, function in Memory Allocation +
+
+
+g_try_realloc_n, function in Memory Allocation +
+
+
+g_try_renew, macro in Memory Allocation +
+
+
+GTuples, struct in Relations and Tuples +
+
+
+g_tuples_destroy, function in Relations and Tuples +
+
+
+g_tuples_index, function in Relations and Tuples +
+
+

U

+
+guchar, typedef in Basic Types +
+
+
+g_ucs4_to_utf16, function in Unicode Manipulation +
+
+
+g_ucs4_to_utf8, function in Unicode Manipulation +
+
+
+guint, function in Basic Types +
+
+
+guint16, typedef in Basic Types +
+
+
+GUINT16_FROM_BE, macro in Byte Order Macros +
+
+
+GUINT16_FROM_LE, macro in Byte Order Macros +
+
+
+GUINT16_SWAP_BE_PDP, macro in Byte Order Macros +
+
+
+GUINT16_SWAP_LE_BE, macro in Byte Order Macros +
+
+
+GUINT16_SWAP_LE_PDP, macro in Byte Order Macros +
+
+
+GUINT16_TO_BE, macro in Byte Order Macros +
+
+
+GUINT16_TO_LE, macro in Byte Order Macros +
+
+
+guint32, typedef in Basic Types +
+
+
+GUINT32_FROM_BE, macro in Byte Order Macros +
+
+
+GUINT32_FROM_LE, macro in Byte Order Macros +
+
+
+GUINT32_SWAP_BE_PDP, macro in Byte Order Macros +
+
+
+GUINT32_SWAP_LE_BE, macro in Byte Order Macros +
+
+
+GUINT32_SWAP_LE_PDP, macro in Byte Order Macros +
+
+
+GUINT32_TO_BE, macro in Byte Order Macros +
+
+
+GUINT32_TO_LE, macro in Byte Order Macros +
+
+
+guint64, typedef in Basic Types +
+
+
+g_uint64_checked_add, macro in Bounds-checked integer arithmetic +
+
+
+g_uint64_checked_mul, macro in Bounds-checked integer arithmetic +
+
+
+GUINT64_FROM_BE, macro in Byte Order Macros +
+
+
+GUINT64_FROM_LE, macro in Byte Order Macros +
+
+
+GUINT64_SWAP_LE_BE, macro in Byte Order Macros +
+
+
+GUINT64_TO_BE, macro in Byte Order Macros +
+
+
+GUINT64_TO_LE, macro in Byte Order Macros +
+
+
+guint8, typedef in Basic Types +
+
+
+guintptr, typedef in Basic Types +
+
+
+g_uint_checked_add, macro in Bounds-checked integer arithmetic +
+
+
+g_uint_checked_mul, macro in Bounds-checked integer arithmetic +
+
+
+GUINT_FROM_BE, macro in Byte Order Macros +
+
+
+GUINT_FROM_LE, macro in Byte Order Macros +
+
+
+GUINT_TO_BE, macro in Byte Order Macros +
+
+
+GUINT_TO_LE, macro in Byte Order Macros +
+
+
+GUINT_TO_POINTER, macro in Type Conversion Macros +
+
+
+gulong, typedef in Basic Types +
+
+
+GULONG_FROM_BE, macro in Byte Order Macros +
+
+
+GULONG_FROM_LE, macro in Byte Order Macros +
+
+
+GULONG_TO_BE, macro in Byte Order Macros +
+
+
+GULONG_TO_LE, macro in Byte Order Macros +
+
+
+G_UNAVAILABLE, macro in Miscellaneous Macros +
+
+
+gunichar, typedef in Unicode Manipulation +
+
+
+gunichar2, typedef in Unicode Manipulation +
+
+
+g_unichar_break_type, function in Unicode Manipulation +
+
+
+g_unichar_combining_class, function in Unicode Manipulation +
+
+
+g_unichar_compose, function in Unicode Manipulation +
+
+
+g_unichar_decompose, function in Unicode Manipulation +
+
+
+g_unichar_digit_value, function in Unicode Manipulation +
+
+
+g_unichar_fully_decompose, function in Unicode Manipulation +
+
+
+g_unichar_get_mirror_char, function in Unicode Manipulation +
+
+
+g_unichar_get_script, function in Unicode Manipulation +
+
+
+g_unichar_isalnum, function in Unicode Manipulation +
+
+
+g_unichar_isalpha, function in Unicode Manipulation +
+
+
+g_unichar_iscntrl, function in Unicode Manipulation +
+
+
+g_unichar_isdefined, function in Unicode Manipulation +
+
+
+g_unichar_isdigit, function in Unicode Manipulation +
+
+
+g_unichar_isgraph, function in Unicode Manipulation +
+
+
+g_unichar_islower, function in Unicode Manipulation +
+
+
+g_unichar_ismark, function in Unicode Manipulation +
+
+
+g_unichar_isprint, function in Unicode Manipulation +
+
+
+g_unichar_ispunct, function in Unicode Manipulation +
+
+
+g_unichar_isspace, function in Unicode Manipulation +
+
+
+g_unichar_istitle, function in Unicode Manipulation +
+
+
+g_unichar_isupper, function in Unicode Manipulation +
+
+
+g_unichar_iswide, function in Unicode Manipulation +
+
+
+g_unichar_iswide_cjk, function in Unicode Manipulation +
+
+
+g_unichar_isxdigit, function in Unicode Manipulation +
+
+
+g_unichar_iszerowidth, function in Unicode Manipulation +
+
+
+G_UNICHAR_MAX_DECOMPOSITION_LENGTH, macro in Unicode Manipulation +
+
+
+g_unichar_tolower, function in Unicode Manipulation +
+
+
+g_unichar_totitle, function in Unicode Manipulation +
+
+
+g_unichar_toupper, function in Unicode Manipulation +
+
+
+g_unichar_to_utf8, function in Unicode Manipulation +
+
+
+g_unichar_type, function in Unicode Manipulation +
+
+
+g_unichar_validate, function in Unicode Manipulation +
+
+
+g_unichar_xdigit_value, function in Unicode Manipulation +
+
+
+GUnicodeBreakType, enum in Unicode Manipulation +
+
+
+GUnicodeScript, enum in Unicode Manipulation +
+
+
+GUnicodeType, enum in Unicode Manipulation +
+
+
+g_unicode_canonical_decomposition, function in Unicode Manipulation +
+
+
+g_unicode_canonical_ordering, function in Unicode Manipulation +
+
+
+G_UNICODE_COMBINING_MARK, macro in Unicode Manipulation +
+
+
+g_unicode_script_from_iso15924, function in Unicode Manipulation +
+
+
+g_unicode_script_to_iso15924, function in Unicode Manipulation +
+
+
+GUnixFDSourceFunc, user_function in UNIX-specific utilities and integration +
+
+
+G_UNIX_ERROR, macro in UNIX-specific utilities and integration +
+
+
+g_unix_fd_add, function in UNIX-specific utilities and integration +
+
+
+g_unix_fd_add_full, function in UNIX-specific utilities and integration +
+
+
+g_unix_fd_source_new, function in UNIX-specific utilities and integration +
+
+
+g_unix_open_pipe, function in UNIX-specific utilities and integration +
+
+
+g_unix_set_fd_nonblocking, function in UNIX-specific utilities and integration +
+
+
+g_unix_signal_add, function in UNIX-specific utilities and integration +
+
+
+g_unix_signal_add_full, function in UNIX-specific utilities and integration +
+
+
+g_unix_signal_source_new, function in UNIX-specific utilities and integration +
+
+
+G_UNLIKELY, macro in Miscellaneous Macros +
+
+
+g_unlink, function in File Utilities +
+
+
+G_UNLOCK, macro in Threads +
+
+
+g_unsetenv, function in Miscellaneous Utility Functions +
+
+
+g_uri_escape_string, function in URI Functions +
+
+
+g_uri_list_extract_uris, function in URI Functions +
+
+
+g_uri_parse_scheme, function in URI Functions +
+
+
+G_URI_RESERVED_CHARS_ALLOWED_IN_PATH, macro in URI Functions +
+
+
+G_URI_RESERVED_CHARS_ALLOWED_IN_PATH_ELEMENT, macro in URI Functions +
+
+
+G_URI_RESERVED_CHARS_ALLOWED_IN_USERINFO, macro in URI Functions +
+
+
+G_URI_RESERVED_CHARS_GENERIC_DELIMITERS, macro in URI Functions +
+
+
+G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS, macro in URI Functions +
+
+
+g_uri_unescape_segment, function in URI Functions +
+
+
+g_uri_unescape_string, function in URI Functions +
+
+
+G_USEC_PER_SEC, macro in Date and Time Functions +
+
+
+GUserDirectory, enum in Miscellaneous Utility Functions +
+
+
+gushort, typedef in Basic Types +
+
+
+g_usleep, function in Date and Time Functions +
+
+
+g_utf16_to_ucs4, function in Unicode Manipulation +
+
+
+g_utf16_to_utf8, function in Unicode Manipulation +
+
+
+g_utf8_casefold, function in Unicode Manipulation +
+
+
+g_utf8_collate, function in Unicode Manipulation +
+
+
+g_utf8_collate_key, function in Unicode Manipulation +
+
+
+g_utf8_collate_key_for_filename, function in Unicode Manipulation +
+
+
+g_utf8_find_next_char, function in Unicode Manipulation +
+
+
+g_utf8_find_prev_char, function in Unicode Manipulation +
+
+
+g_utf8_get_char, function in Unicode Manipulation +
+
+
+g_utf8_get_char_validated, function in Unicode Manipulation +
+
+
+g_utf8_next_char, macro in Unicode Manipulation +
+
+
+g_utf8_normalize, function in Unicode Manipulation +
+
+
+g_utf8_offset_to_pointer, function in Unicode Manipulation +
+
+
+g_utf8_pointer_to_offset, function in Unicode Manipulation +
+
+
+g_utf8_prev_char, function in Unicode Manipulation +
+
+
+g_utf8_strchr, function in Unicode Manipulation +
+
+
+g_utf8_strdown, function in Unicode Manipulation +
+
+
+g_utf8_strlen, function in Unicode Manipulation +
+
+
+g_utf8_strncpy, function in Unicode Manipulation +
+
+
+g_utf8_strrchr, function in Unicode Manipulation +
+
+
+g_utf8_strreverse, function in Unicode Manipulation +
+
+
+g_utf8_strup, function in Unicode Manipulation +
+
+
+g_utf8_substring, function in Unicode Manipulation +
+
+
+g_utf8_to_ucs4, function in Unicode Manipulation +
+
+
+g_utf8_to_ucs4_fast, function in Unicode Manipulation +
+
+
+g_utf8_to_utf16, function in Unicode Manipulation +
+
+
+g_utf8_validate, function in Unicode Manipulation +
+
+
+g_utime, function in File Utilities +
+
+

V

+
+GVariant, struct in GVariant +
+
+
+GVariantBuilder, struct in GVariant +
+
+
+GVariantClass, enum in GVariant +
+
+
+GVariantDict, struct in GVariant +
+
+
+GVariantIter, struct in GVariant +
+
+
+GVariantParseError, enum in GVariant +
+
+
+GVariantType, struct in GVariantType +
+
+
+g_variant_builder_add, function in GVariant +
+
+
+g_variant_builder_add_parsed, function in GVariant +
+
+
+g_variant_builder_add_value, function in GVariant +
+
+
+g_variant_builder_clear, function in GVariant +
+
+
+g_variant_builder_close, function in GVariant +
+
+
+g_variant_builder_end, function in GVariant +
+
+
+g_variant_builder_init, function in GVariant +
+
+
+g_variant_builder_new, function in GVariant +
+
+
+g_variant_builder_open, function in GVariant +
+
+
+g_variant_builder_ref, function in GVariant +
+
+
+g_variant_builder_unref, function in GVariant +
+
+
+g_variant_byteswap, function in GVariant +
+
+
+g_variant_check_format_string, function in GVariant +
+
+
+g_variant_classify, function in GVariant +
+
+
+g_variant_compare, function in GVariant +
+
+
+g_variant_dict_clear, function in GVariant +
+
+
+g_variant_dict_contains, function in GVariant +
+
+
+g_variant_dict_end, function in GVariant +
+
+
+g_variant_dict_init, function in GVariant +
+
+
+g_variant_dict_insert, function in GVariant +
+
+
+g_variant_dict_insert_value, function in GVariant +
+
+
+g_variant_dict_lookup, function in GVariant +
+
+
+g_variant_dict_lookup_value, function in GVariant +
+
+
+g_variant_dict_new, function in GVariant +
+
+
+g_variant_dict_ref, function in GVariant +
+
+
+g_variant_dict_remove, function in GVariant +
+
+
+g_variant_dict_unref, function in GVariant +
+
+
+g_variant_dup_bytestring, function in GVariant +
+
+
+g_variant_dup_bytestring_array, function in GVariant +
+
+
+g_variant_dup_objv, function in GVariant +
+
+
+g_variant_dup_string, function in GVariant +
+
+
+g_variant_dup_strv, function in GVariant +
+
+
+g_variant_equal, function in GVariant +
+
+
+g_variant_get, function in GVariant +
+
+
+g_variant_get_boolean, function in GVariant +
+
+
+g_variant_get_byte, function in GVariant +
+
+
+g_variant_get_bytestring, function in GVariant +
+
+
+g_variant_get_bytestring_array, function in GVariant +
+
+
+g_variant_get_child, function in GVariant +
+
+
+g_variant_get_child_value, function in GVariant +
+
+
+g_variant_get_data, function in GVariant +
+
+
+g_variant_get_data_as_bytes, function in GVariant +
+
+
+g_variant_get_double, function in GVariant +
+
+
+g_variant_get_fixed_array, function in GVariant +
+
+
+g_variant_get_handle, function in GVariant +
+
+
+g_variant_get_int16, function in GVariant +
+
+
+g_variant_get_int32, function in GVariant +
+
+
+g_variant_get_int64, function in GVariant +
+
+
+g_variant_get_maybe, function in GVariant +
+
+
+g_variant_get_normal_form, function in GVariant +
+
+
+g_variant_get_objv, function in GVariant +
+
+
+g_variant_get_size, function in GVariant +
+
+
+g_variant_get_string, function in GVariant +
+
+
+g_variant_get_strv, function in GVariant +
+
+
+g_variant_get_type, function in GVariant +
+
+
+g_variant_get_type_string, function in GVariant +
+
+
+g_variant_get_uint16, function in GVariant +
+
+
+g_variant_get_uint32, function in GVariant +
+
+
+g_variant_get_uint64, function in GVariant +
+
+
+g_variant_get_va, function in GVariant +
+
+
+g_variant_get_variant, function in GVariant +
+
+
+g_variant_hash, function in GVariant +
+
+
+g_variant_is_container, function in GVariant +
+
+
+g_variant_is_floating, function in GVariant +
+
+
+g_variant_is_normal_form, function in GVariant +
+
+
+g_variant_is_object_path, function in GVariant +
+
+
+g_variant_is_of_type, function in GVariant +
+
+
+g_variant_is_signature, function in GVariant +
+
+
+g_variant_iter_copy, function in GVariant +
+
+
+g_variant_iter_free, function in GVariant +
+
+
+g_variant_iter_init, function in GVariant +
+
+
+g_variant_iter_loop, function in GVariant +
+
+
+g_variant_iter_new, function in GVariant +
+
+
+g_variant_iter_next, function in GVariant +
+
+
+g_variant_iter_next_value, function in GVariant +
+
+
+g_variant_iter_n_children, function in GVariant +
+
+
+g_variant_lookup, function in GVariant +
+
+
+g_variant_lookup_value, function in GVariant +
+
+
+g_variant_new, function in GVariant +
+
+
+g_variant_new_array, function in GVariant +
+
+
+g_variant_new_boolean, function in GVariant +
+
+
+g_variant_new_byte, function in GVariant +
+
+
+g_variant_new_bytestring, function in GVariant +
+
+
+g_variant_new_bytestring_array, function in GVariant +
+
+
+g_variant_new_dict_entry, function in GVariant +
+
+
+g_variant_new_double, function in GVariant +
+
+
+g_variant_new_fixed_array, function in GVariant +
+
+
+g_variant_new_from_bytes, function in GVariant +
+
+
+g_variant_new_from_data, function in GVariant +
+
+
+g_variant_new_handle, function in GVariant +
+
+
+g_variant_new_int16, function in GVariant +
+
+
+g_variant_new_int32, function in GVariant +
+
+
+g_variant_new_int64, function in GVariant +
+
+
+g_variant_new_maybe, function in GVariant +
+
+
+g_variant_new_object_path, function in GVariant +
+
+
+g_variant_new_objv, function in GVariant +
+
+
+g_variant_new_parsed, function in GVariant +
+
+
+g_variant_new_parsed_va, function in GVariant +
+
+
+g_variant_new_printf, function in GVariant +
+
+
+g_variant_new_signature, function in GVariant +
+
+
+g_variant_new_string, function in GVariant +
+
+
+g_variant_new_strv, function in GVariant +
+
+
+g_variant_new_take_string, function in GVariant +
+
+
+g_variant_new_tuple, function in GVariant +
+
+
+g_variant_new_uint16, function in GVariant +
+
+
+g_variant_new_uint32, function in GVariant +
+
+
+g_variant_new_uint64, function in GVariant +
+
+
+g_variant_new_va, function in GVariant +
+
+
+g_variant_new_variant, function in GVariant +
+
+
+g_variant_n_children, function in GVariant +
+
+
+g_variant_parse, function in GVariant +
+
+
+G_VARIANT_PARSE_ERROR, macro in GVariant +
+
+
+g_variant_parse_error_print_context, function in GVariant +
+
+
+g_variant_print, function in GVariant +
+
+
+g_variant_print_string, function in GVariant +
+
+
+g_variant_ref, function in GVariant +
+
+
+g_variant_ref_sink, function in GVariant +
+
+
+g_variant_store, function in GVariant +
+
+
+g_variant_take_ref, function in GVariant +
+
+
+G_VARIANT_TYPE, macro in GVariantType +
+
+
+G_VARIANT_TYPE_ANY, macro in GVariantType +
+
+
+G_VARIANT_TYPE_ARRAY, macro in GVariantType +
+
+
+G_VARIANT_TYPE_BASIC, macro in GVariantType +
+
+
+G_VARIANT_TYPE_BOOLEAN, macro in GVariantType +
+
+
+G_VARIANT_TYPE_BYTE, macro in GVariantType +
+
+
+G_VARIANT_TYPE_BYTESTRING, macro in GVariantType +
+
+
+G_VARIANT_TYPE_BYTESTRING_ARRAY, macro in GVariantType +
+
+
+g_variant_type_copy, function in GVariantType +
+
+
+G_VARIANT_TYPE_DICTIONARY, macro in GVariantType +
+
+
+G_VARIANT_TYPE_DICT_ENTRY, macro in GVariantType +
+
+
+G_VARIANT_TYPE_DOUBLE, macro in GVariantType +
+
+
+g_variant_type_dup_string, function in GVariantType +
+
+
+g_variant_type_element, function in GVariantType +
+
+
+g_variant_type_equal, function in GVariantType +
+
+
+g_variant_type_first, function in GVariantType +
+
+
+g_variant_type_free, function in GVariantType +
+
+
+g_variant_type_get_string_length, function in GVariantType +
+
+
+G_VARIANT_TYPE_HANDLE, macro in GVariantType +
+
+
+g_variant_type_hash, function in GVariantType +
+
+
+G_VARIANT_TYPE_INT16, macro in GVariantType +
+
+
+G_VARIANT_TYPE_INT32, macro in GVariantType +
+
+
+G_VARIANT_TYPE_INT64, macro in GVariantType +
+
+
+g_variant_type_is_array, function in GVariantType +
+
+
+g_variant_type_is_basic, function in GVariantType +
+
+
+g_variant_type_is_container, function in GVariantType +
+
+
+g_variant_type_is_definite, function in GVariantType +
+
+
+g_variant_type_is_dict_entry, function in GVariantType +
+
+
+g_variant_type_is_maybe, function in GVariantType +
+
+
+g_variant_type_is_subtype_of, function in GVariantType +
+
+
+g_variant_type_is_tuple, function in GVariantType +
+
+
+g_variant_type_is_variant, function in GVariantType +
+
+
+g_variant_type_key, function in GVariantType +
+
+
+G_VARIANT_TYPE_MAYBE, macro in GVariantType +
+
+
+g_variant_type_new, function in GVariantType +
+
+
+g_variant_type_new_array, function in GVariantType +
+
+
+g_variant_type_new_dict_entry, function in GVariantType +
+
+
+g_variant_type_new_maybe, function in GVariantType +
+
+
+g_variant_type_new_tuple, function in GVariantType +
+
+
+g_variant_type_next, function in GVariantType +
+
+
+g_variant_type_n_items, function in GVariantType +
+
+
+G_VARIANT_TYPE_OBJECT_PATH, macro in GVariantType +
+
+
+G_VARIANT_TYPE_OBJECT_PATH_ARRAY, macro in GVariantType +
+
+
+g_variant_type_peek_string, function in GVariantType +
+
+
+G_VARIANT_TYPE_SIGNATURE, macro in GVariantType +
+
+
+G_VARIANT_TYPE_STRING, macro in GVariantType +
+
+
+G_VARIANT_TYPE_STRING_ARRAY, macro in GVariantType +
+
+
+g_variant_type_string_is_valid, function in GVariantType +
+
+
+g_variant_type_string_scan, function in GVariantType +
+
+
+G_VARIANT_TYPE_TUPLE, macro in GVariantType +
+
+
+G_VARIANT_TYPE_UINT16, macro in GVariantType +
+
+
+G_VARIANT_TYPE_UINT32, macro in GVariantType +
+
+
+G_VARIANT_TYPE_UINT64, macro in GVariantType +
+
+
+G_VARIANT_TYPE_UNIT, macro in GVariantType +
+
+
+g_variant_type_value, function in GVariantType +
+
+
+G_VARIANT_TYPE_VARDICT, macro in GVariantType +
+
+
+G_VARIANT_TYPE_VARIANT, macro in GVariantType +
+
+
+g_variant_unref, function in GVariant +
+
+
+g_vasprintf, function in String Utility Functions +
+
+
+G_VA_COPY, macro in Miscellaneous Macros +
+
+
+g_vfprintf, function in String Utility Functions +
+
+
+GVoidFunc, user_function in Miscellaneous Utility Functions +
+
+
+g_vprintf, function in String Utility Functions +
+
+
+g_vsnprintf, function in String Utility Functions +
+
+
+g_vsprintf, function in String Utility Functions +
+
+

W

+
+g_warning, macro in Message Logging +
+
+
+g_warn_if_fail, macro in Warnings and Assertions +
+
+
+g_warn_if_reached, macro in Warnings and Assertions +
+
+
+GWin32OSType, enum in Windows Compatibility Functions +
+
+
+g_win32_check_windows_version, function in Windows Compatibility Functions +
+
+
+G_WIN32_DLLMAIN_FOR_DLL_NAME, macro in Windows Compatibility Functions +
+
+
+g_win32_error_message, function in Windows Compatibility Functions +
+
+
+g_win32_getlocale, function in Windows Compatibility Functions +
+
+
+g_win32_get_command_line, function in Windows Compatibility Functions +
+
+
+g_win32_get_package_installation_directory, function in Windows Compatibility Functions +
+
+
+g_win32_get_package_installation_directory_of_module, function in Windows Compatibility Functions +
+
+
+g_win32_get_package_installation_subdirectory, function in Windows Compatibility Functions +
+
+
+g_win32_get_windows_version, function in Windows Compatibility Functions +
+
+
+G_WIN32_HAVE_WIDECHAR_API, macro in Windows Compatibility Functions +
+
+
+G_WIN32_IS_NT_BASED, macro in Windows Compatibility Functions +
+
+
+g_win32_locale_filename_from_utf8, function in Windows Compatibility Functions +
+
+

_

+
+_, macro in I18N +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/deprecated.html b/docs/reference/glib/html/deprecated.html new file mode 100644 index 0000000..8202687 --- /dev/null +++ b/docs/reference/glib/html/deprecated.html @@ -0,0 +1,46 @@ + + + + +Deprecated APIs: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+Deprecated APIs

+
+
+Deprecated thread API — old thread APIs (for reference only) +
+
+Caches — caches allow sharing of complex data structures + to save resources +
+
+Relations and Tuples — tables of data which can be indexed on any + number of fields +
+
+Automatic String Completion — support for automatic completion using a group + of target strings +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/file-name-encodings.png b/docs/reference/glib/html/file-name-encodings.png new file mode 100644 index 0000000000000000000000000000000000000000..7adbcea393fc43286f09cbaa8ab507f19d4eb50c GIT binary patch literal 32141 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 CV&)$J literal 0 HcmV?d00001 diff --git a/docs/reference/glib/html/glib-Arrays.html b/docs/reference/glib/html/glib-Arrays.html new file mode 100644 index 0000000..a01bd6e --- /dev/null +++ b/docs/reference/glib/html/glib-Arrays.html @@ -0,0 +1,1113 @@ + + + + +Arrays: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Arrays

+

Arrays — arrays of arbitrary elements which grow + automatically as elements are added

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GArray * + +g_array_new () +
+GArray * + +g_array_sized_new () +
+GArray * + +g_array_ref () +
+void + +g_array_unref () +
+guint + +g_array_get_element_size () +
#define +g_array_append_val() +
+GArray * + +g_array_append_vals () +
#define +g_array_prepend_val() +
+GArray * + +g_array_prepend_vals () +
#define +g_array_insert_val() +
+GArray * + +g_array_insert_vals () +
+GArray * + +g_array_remove_index () +
+GArray * + +g_array_remove_index_fast () +
+GArray * + +g_array_remove_range () +
+void + +g_array_sort () +
+void + +g_array_sort_with_data () +
#define +g_array_index() +
+GArray * + +g_array_set_size () +
+void + +g_array_set_clear_func () +
+gchar * + +g_array_free () +
+
+
+

Types and Values

+
++++ + + + + +
structGArray
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

Arrays are similar to standard C arrays, except that they grow +automatically as elements are added.

+

Array elements can be of any size (though all elements of one array +are the same size), and the array can be automatically cleared to +'0's and zero-terminated.

+

To create a new array use g_array_new().

+

To add elements to an array, use g_array_append_val(), +g_array_append_vals(), g_array_prepend_val(), and +g_array_prepend_vals().

+

To access an element of an array, use g_array_index().

+

To set the size of an array, use g_array_set_size().

+

To free an array, use g_array_free().

+

Here is an example that stores integers in a GArray:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
GArray *garray;
+gint i;
+// We create a new array to store gint values.
+// We don't want it zero-terminated or cleared to 0's.
+garray = g_array_new (FALSE, FALSE, sizeof (gint));
+for (i = 0; i < 10000; i++)
+  g_array_append_val (garray, i);
+for (i = 0; i < 10000; i++)
+  if (g_array_index (garray, gint, i) != i)
+    g_print ("ERROR: got %d instead of %d\n",
+             g_array_index (garray, gint, i), i);
+g_array_free (garray, TRUE);
+
+ +

+
+
+

Functions

+
+

g_array_new ()

+
GArray *
+g_array_new (gboolean zero_terminated,
+             gboolean clear_,
+             guint element_size);
+

Creates a new GArray with a reference count of 1.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

zero_terminated

TRUE if the array should have an extra element at +the end which is set to 0

 

clear_

TRUE if GArray elements should be automatically cleared +to 0 when they are allocated

 

element_size

the size of each element in bytes

 
+
+
+

Returns

+

the new GArray

+
+
+
+
+

g_array_sized_new ()

+
GArray *
+g_array_sized_new (gboolean zero_terminated,
+                   gboolean clear_,
+                   guint element_size,
+                   guint reserved_size);
+

Creates a new GArray with reserved_size + elements preallocated and +a reference count of 1. This avoids frequent reallocation, if you +are going to add many elements to the array. Note however that the +size of the array is still 0.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

zero_terminated

TRUE if the array should have an extra element at +the end with all bits cleared

 

clear_

TRUE if all bits in the array should be cleared to 0 on +allocation

 

element_size

size of each element in the array

 

reserved_size

number of elements preallocated

 
+
+
+

Returns

+

the new GArray

+
+
+
+
+

g_array_ref ()

+
GArray *
+g_array_ref (GArray *array);
+

Atomically increments the reference count of array + by one. +This function is MT-safe and may be called from any thread.

+
+

Parameters

+
+++++ + + + + + +

array

A GArray

 
+
+
+

Returns

+

The passed in GArray

+
+

Since: 2.22

+
+
+
+

g_array_unref ()

+
void
+g_array_unref (GArray *array);
+

Atomically decrements the reference count of array + by one. If the +reference count drops to 0, all memory allocated by the array is +released. This function is MT-safe and may be called from any +thread.

+
+

Parameters

+
+++++ + + + + + +

array

A GArray

 
+
+

Since: 2.22

+
+
+
+

g_array_get_element_size ()

+
guint
+g_array_get_element_size (GArray *array);
+

Gets the size of the elements in array +.

+
+

Parameters

+
+++++ + + + + + +

array

A GArray

 
+
+
+

Returns

+

Size of each element, in bytes

+
+

Since: 2.22

+
+
+
+

g_array_append_val()

+
#define             g_array_append_val(a,v)
+

Adds the value on to the end of the array. The array will grow in +size automatically if necessary.

+

g_array_append_val() is a macro which uses a reference to the value +parameter v +. This means that you cannot use it with literal values +such as "27". You must use variables.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

a

a GArray

 

v

the value to append to the GArray

 
+
+
+

Returns

+

the GArray

+
+
+
+
+

g_array_append_vals ()

+
GArray *
+g_array_append_vals (GArray *array,
+                     gconstpointer data,
+                     guint len);
+

Adds len + elements onto the end of the array.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

array

a GArray

 

data

a pointer to the elements to append to the end of the array.

[not nullable]

len

the number of elements to append

 
+
+
+

Returns

+

the GArray

+
+
+
+
+

g_array_prepend_val()

+
#define             g_array_prepend_val(a,v)
+

Adds the value on to the start of the array. The array will grow in +size automatically if necessary.

+

This operation is slower than g_array_append_val() since the +existing elements in the array have to be moved to make space for +the new element.

+

g_array_prepend_val() is a macro which uses a reference to the value +parameter v +. This means that you cannot use it with literal values +such as "27". You must use variables.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

a

a GArray

 

v

the value to prepend to the GArray

 
+
+
+

Returns

+

the GArray

+
+
+
+
+

g_array_prepend_vals ()

+
GArray *
+g_array_prepend_vals (GArray *array,
+                      gconstpointer data,
+                      guint len);
+

Adds len + elements onto the start of the array.

+

This operation is slower than g_array_append_vals() since the +existing elements in the array have to be moved to make space for +the new elements.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

array

a GArray

 

data

a pointer to the elements to prepend to the start of the array.

[not nullable]

len

the number of elements to prepend

 
+
+
+

Returns

+

the GArray

+
+
+
+
+

g_array_insert_val()

+
#define             g_array_insert_val(a,i,v)
+

Inserts an element into an array at the given index.

+

g_array_insert_val() is a macro which uses a reference to the value +parameter v +. This means that you cannot use it with literal values +such as "27". You must use variables.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

a

a GArray

 

i

the index to place the element at

 

v

the value to insert into the array

 
+
+
+

Returns

+

the GArray

+
+
+
+
+

g_array_insert_vals ()

+
GArray *
+g_array_insert_vals (GArray *array,
+                     guint index_,
+                     gconstpointer data,
+                     guint len);
+

Inserts len + elements into a GArray at the given index.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

array

a GArray

 

index_

the index to place the elements at

 

data

a pointer to the elements to insert.

[not nullable]

len

the number of elements to insert

 
+
+
+

Returns

+

the GArray

+
+
+
+
+

g_array_remove_index ()

+
GArray *
+g_array_remove_index (GArray *array,
+                      guint index_);
+

Removes the element at the given index from a GArray. The following +elements are moved down one place.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GArray

 

index_

the index of the element to remove

 
+
+
+

Returns

+

the GArray

+
+
+
+
+

g_array_remove_index_fast ()

+
GArray *
+g_array_remove_index_fast (GArray *array,
+                           guint index_);
+

Removes the element at the given index from a GArray. The last +element in the array is used to fill in the space, so this function +does not preserve the order of the GArray. But it is faster than +g_array_remove_index().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GArray +

 

index_

the index of the element to remove

 
+
+
+

Returns

+

the GArray

+
+
+
+
+

g_array_remove_range ()

+
GArray *
+g_array_remove_range (GArray *array,
+                      guint index_,
+                      guint length);
+

Removes the given number of elements starting at the given index +from a GArray. The following elements are moved to close the gap.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

array

a GArray +

 

index_

the index of the first element to remove

 

length

the number of elements to remove

 
+
+
+

Returns

+

the GArray

+
+

Since: 2.4

+
+
+
+

g_array_sort ()

+
void
+g_array_sort (GArray *array,
+              GCompareFunc compare_func);
+

Sorts a GArray using compare_func + which should be a qsort()-style +comparison function (returns less than zero for first arg is less +than second arg, zero for equal, greater zero if first arg is +greater than second arg).

+

This is guaranteed to be a stable sort since version 2.32.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GArray

 

compare_func

comparison function

 
+
+
+
+
+

g_array_sort_with_data ()

+
void
+g_array_sort_with_data (GArray *array,
+                        GCompareDataFunc compare_func,
+                        gpointer user_data);
+

Like g_array_sort(), but the comparison function receives an extra +user data argument.

+

This is guaranteed to be a stable sort since version 2.32.

+

There used to be a comment here about making the sort stable by +using the addresses of the elements in the comparison function. +This did not actually work, so any such code should be removed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

array

a GArray

 

compare_func

comparison function

 

user_data

data to pass to compare_func +

 
+
+
+
+
+

g_array_index()

+
#define             g_array_index(a,t,i)
+

Returns the element of a GArray at the given index. The return +value is cast to the given type.

+

This example gets a pointer to an element in a GArray:

+
+ + + + + + + +
1
+2
+3
+4
EDayViewEvent *event;
+// This gets a pointer to the 4th element in the array of
+// EDayViewEvent structs.
+event = &g_array_index (events, EDayViewEvent, 3);
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

a

a GArray

 

t

the type of the elements

 

i

the index of the element to return

 
+
+
+

Returns

+

the element of the GArray at the index given by i +

+
+
+
+
+

g_array_set_size ()

+
GArray *
+g_array_set_size (GArray *array,
+                  guint length);
+

Sets the size of the array, expanding it if necessary. If the array +was created with clear_ + set to TRUE, the new elements are set to 0.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GArray

 

length

the new size of the GArray

 
+
+
+

Returns

+

the GArray

+
+
+
+
+

g_array_set_clear_func ()

+
void
+g_array_set_clear_func (GArray *array,
+                        GDestroyNotify clear_func);
+

Sets a function to clear an element of array +.

+

The clear_func + will be called when an element in the array +data segment is removed and when the array is freed and data +segment is deallocated as well.

+

Note that in contrast with other uses of GDestroyNotify +functions, clear_func + is expected to clear the contents of +the array element it is given, but not free the element itself.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

A GArray

 

clear_func

a function to clear an element of array +

 
+
+

Since: 2.32

+
+
+
+

g_array_free ()

+
gchar *
+g_array_free (GArray *array,
+              gboolean free_segment);
+

Frees the memory allocated for the GArray. If free_segment + is +TRUE it frees the memory block holding the elements as well and +also each element if array + has a element_free_func + set. Pass +FALSE if you want to free the GArray wrapper but preserve the +underlying array for use elsewhere. If the reference count of array + +is greater than one, the GArray wrapper is preserved but the size +of array + will be set to zero.

+

If array elements contain dynamically-allocated memory, they should +be freed separately.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GArray

 

free_segment

if TRUE the actual element data is freed as well

 
+
+
+

Returns

+

the element data if free_segment +is FALSE, otherwise +NULL. The element data should be freed using g_free().

+
+
+
+
+

Types and Values

+
+

struct GArray

+
struct GArray {
+  gchar *data;
+  guint len;
+};
+
+

Contains the public fields of a GArray.

+
+

Members

+
+++++ + + + + + + + + + + + + +

gchar *data;

a pointer to the element data. The data may be moved as +elements are added to the GArray.

 

guint len;

the number of elements in the GArray not including the +possible terminating zero element.

 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Asynchronous-Queues.html b/docs/reference/glib/html/glib-Asynchronous-Queues.html new file mode 100644 index 0000000..282005c --- /dev/null +++ b/docs/reference/glib/html/glib-Asynchronous-Queues.html @@ -0,0 +1,1412 @@ + + + + +Asynchronous Queues: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Asynchronous Queues

+

Asynchronous Queues — asynchronous communication between threads

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GAsyncQueue * + +g_async_queue_new () +
+GAsyncQueue * + +g_async_queue_new_full () +
+GAsyncQueue * + +g_async_queue_ref () +
+void + +g_async_queue_unref () +
+void + +g_async_queue_push () +
+void + +g_async_queue_push_sorted () +
+void + +g_async_queue_push_front () +
+gboolean + +g_async_queue_remove () +
+gpointer + +g_async_queue_pop () +
+gpointer + +g_async_queue_try_pop () +
+gpointer + +g_async_queue_timeout_pop () +
+gint + +g_async_queue_length () +
+void + +g_async_queue_sort () +
+void + +g_async_queue_lock () +
+void + +g_async_queue_unlock () +
+void + +g_async_queue_ref_unlocked () +
+void + +g_async_queue_unref_and_unlock () +
+void + +g_async_queue_push_unlocked () +
+void + +g_async_queue_push_sorted_unlocked () +
+void + +g_async_queue_push_front_unlocked () +
+gboolean + +g_async_queue_remove_unlocked () +
+gpointer + +g_async_queue_pop_unlocked () +
+gpointer + +g_async_queue_try_pop_unlocked () +
+gpointer + +g_async_queue_timeout_pop_unlocked () +
+gint + +g_async_queue_length_unlocked () +
+void + +g_async_queue_sort_unlocked () +
+gpointer + +g_async_queue_timed_pop () +
+gpointer + +g_async_queue_timed_pop_unlocked () +
+
+
+

Types and Values

+
++++ + + + + +
 GAsyncQueue
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

Often you need to communicate between different threads. In general +it's safer not to do this by shared memory, but by explicit message +passing. These messages only make sense asynchronously for +multi-threaded applications though, as a synchronous operation could +as well be done in the same thread.

+

Asynchronous queues are an exception from most other GLib data +structures, as they can be used simultaneously from multiple threads +without explicit locking and they bring their own builtin reference +counting. This is because the nature of an asynchronous queue is that +it will always be used by at least 2 concurrent threads.

+

For using an asynchronous queue you first have to create one with +g_async_queue_new(). GAsyncQueue structs are reference counted, +use g_async_queue_ref() and g_async_queue_unref() to manage your +references.

+

A thread which wants to send a message to that queue simply calls +g_async_queue_push() to push the message to the queue.

+

A thread which is expecting messages from an asynchronous queue +simply calls g_async_queue_pop() for that queue. If no message is +available in the queue at that point, the thread is now put to sleep +until a message arrives. The message will be removed from the queue +and returned. The functions g_async_queue_try_pop() and +g_async_queue_timeout_pop() can be used to only check for the presence +of messages or to only wait a certain time for messages respectively.

+

For almost every function there exist two variants, one that locks +the queue and one that doesn't. That way you can hold the queue lock +(acquire it with g_async_queue_lock() and release it with +g_async_queue_unlock()) over multiple queue accessing instructions. +This can be necessary to ensure the integrity of the queue, but should +only be used when really necessary, as it can make your life harder +if used unwisely. Normally you should only use the locking function +variants (those without the _unlocked suffix).

+

In many cases, it may be more convenient to use GThreadPool when +you need to distribute work to a set of worker threads instead of +using GAsyncQueue manually. GThreadPool uses a GAsyncQueue +internally.

+
+
+

Functions

+
+

g_async_queue_new ()

+
GAsyncQueue *
+g_async_queue_new (void);
+

Creates a new asynchronous queue.

+
+

Returns

+

a new GAsyncQueue. Free with g_async_queue_unref()

+
+
+
+
+

g_async_queue_new_full ()

+
GAsyncQueue *
+g_async_queue_new_full (GDestroyNotify item_free_func);
+

Creates a new asynchronous queue and sets up a destroy notify +function that is used to free any remaining queue items when +the queue is destroyed after the final unref.

+
+

Parameters

+
+++++ + + + + + +

item_free_func

function to free queue elements

 
+
+
+

Returns

+

a new GAsyncQueue. Free with g_async_queue_unref()

+
+

Since: 2.16

+
+
+
+

g_async_queue_ref ()

+
GAsyncQueue *
+g_async_queue_ref (GAsyncQueue *queue);
+

Increases the reference count of the asynchronous queue + by 1. +You do not need to hold the lock to call this function.

+
+

Parameters

+
+++++ + + + + + +

queue

a GAsyncQueue

 
+
+
+

Returns

+

the queue +that was passed in (since 2.6)

+
+
+
+
+

g_async_queue_unref ()

+
void
+g_async_queue_unref (GAsyncQueue *queue);
+

Decreases the reference count of the asynchronous queue + by 1.

+

If the reference count went to 0, the queue + will be destroyed +and the memory allocated will be freed. So you are not allowed +to use the queue + afterwards, as it might have disappeared. +You do not need to hold the lock to call this function.

+
+

Parameters

+
+++++ + + + + + +

queue

a GAsyncQueue.

 
+
+
+
+
+

g_async_queue_push ()

+
void
+g_async_queue_push (GAsyncQueue *queue,
+                    gpointer data);
+

Pushes the data + into the queue +. data + must not be NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GAsyncQueue

 

data

data +to push into the queue +

 
+
+
+
+
+

g_async_queue_push_sorted ()

+
void
+g_async_queue_push_sorted (GAsyncQueue *queue,
+                           gpointer data,
+                           GCompareDataFunc func,
+                           gpointer user_data);
+

Inserts data + into queue + using func + to determine the new +position.

+

This function requires that the queue + is sorted before pushing on +new elements, see g_async_queue_sort().

+

This function will lock queue + before it sorts the queue and unlock +it when it is finished.

+

For an example of func + see g_async_queue_sort().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

queue

a GAsyncQueue

 

data

the data +to push into the queue +

 

func

the GCompareDataFunc is used to sort queue +

 

user_data

user data passed to func +.

 
+
+

Since: 2.10

+
+
+
+

g_async_queue_push_front ()

+
void
+g_async_queue_push_front (GAsyncQueue *queue,
+                          gpointer item);
+

Pushes the item + into the queue +. item + must not be NULL. +In contrast to g_async_queue_push(), this function +pushes the new item ahead of the items already in the queue, +so that it will be the next one to be popped off the queue.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GAsyncQueue

 

item

data to push into the queue +

 
+
+

Since: 2.46

+
+
+
+

g_async_queue_remove ()

+
gboolean
+g_async_queue_remove (GAsyncQueue *queue,
+                      gpointer item);
+

Remove an item from the queue.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GAsyncQueue

 

item

the data to remove from the queue +

 
+
+
+

Returns

+

TRUE if the item was removed

+
+

Since: 2.46

+
+
+
+

g_async_queue_pop ()

+
gpointer
+g_async_queue_pop (GAsyncQueue *queue);
+

Pops data from the queue +. If queue + is empty, this function +blocks until data becomes available.

+
+

Parameters

+
+++++ + + + + + +

queue

a GAsyncQueue

 
+
+
+

Returns

+

data from the queue

+
+
+
+
+

g_async_queue_try_pop ()

+
gpointer
+g_async_queue_try_pop (GAsyncQueue *queue);
+

Tries to pop data from the queue +. If no data is available, +NULL is returned.

+
+

Parameters

+
+++++ + + + + + +

queue

a GAsyncQueue

 
+
+
+

Returns

+

data from the queue or NULL, when no data is +available immediately.

+
+
+
+
+

g_async_queue_timeout_pop ()

+
gpointer
+g_async_queue_timeout_pop (GAsyncQueue *queue,
+                           guint64 timeout);
+

Pops data from the queue +. If the queue is empty, blocks for +timeout + microseconds, or until data becomes available.

+

If no data is received before the timeout, NULL is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GAsyncQueue

 

timeout

the number of microseconds to wait

 
+
+
+

Returns

+

data from the queue or NULL, when no data is +received before the timeout.

+
+
+
+
+

g_async_queue_length ()

+
gint
+g_async_queue_length (GAsyncQueue *queue);
+

Returns the length of the queue.

+

Actually this function returns the number of data items in +the queue minus the number of waiting threads, so a negative +value means waiting threads, and a positive value means available +entries in the queue +. A return value of 0 could mean n entries +in the queue and n threads waiting. This can happen due to locking +of the queue or due to scheduling.

+
+

Parameters

+
+++++ + + + + + +

queue

a GAsyncQueue.

 
+
+
+

Returns

+

the length of the queue +

+
+
+
+
+

g_async_queue_sort ()

+
void
+g_async_queue_sort (GAsyncQueue *queue,
+                    GCompareDataFunc func,
+                    gpointer user_data);
+

Sorts queue + using func +.

+

The sort function func + is passed two elements of the queue +. +It should return 0 if they are equal, a negative value if the +first element should be higher in the queue + or a positive value +if the first element should be lower in the queue + than the second +element.

+

This function will lock queue + before it sorts the queue and unlock +it when it is finished.

+

If you were sorting a list of priority numbers to make sure the +lowest priority would be at the top of the queue, you could use:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
gint32 id1;
+gint32 id2;
+
+id1 = GPOINTER_TO_INT (element1);
+id2 = GPOINTER_TO_INT (element2);
+
+return (id1 > id2 ? +1 : id1 == id2 ? 0 : -1);
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

queue

a GAsyncQueue

 

func

the GCompareDataFunc is used to sort queue +

 

user_data

user data passed to func +

 
+
+

Since: 2.10

+
+
+
+

g_async_queue_lock ()

+
void
+g_async_queue_lock (GAsyncQueue *queue);
+

Acquires the queue +'s lock. If another thread is already +holding the lock, this call will block until the lock +becomes available.

+

Call g_async_queue_unlock() to drop the lock again.

+

While holding the lock, you can only call the +g_async_queue_*_unlocked() functions on queue +. Otherwise, +deadlock may occur.

+
+

Parameters

+
+++++ + + + + + +

queue

a GAsyncQueue

 
+
+
+
+
+

g_async_queue_unlock ()

+
void
+g_async_queue_unlock (GAsyncQueue *queue);
+

Releases the queue's lock.

+

Calling this function when you have not acquired +the with g_async_queue_lock() leads to undefined +behaviour.

+
+

Parameters

+
+++++ + + + + + +

queue

a GAsyncQueue

 
+
+
+
+
+

g_async_queue_ref_unlocked ()

+
void
+g_async_queue_ref_unlocked (GAsyncQueue *queue);
+
+

g_async_queue_ref_unlocked has been deprecated since version 2.8 and should not be used in newly-written code.

+

Reference counting is done atomically. +so g_async_queue_ref() can be used regardless of the queue +'s +lock.

+
+

Increases the reference count of the asynchronous queue + by 1.

+
+

Parameters

+
+++++ + + + + + +

queue

a GAsyncQueue

 
+
+
+
+
+

g_async_queue_unref_and_unlock ()

+
void
+g_async_queue_unref_and_unlock (GAsyncQueue *queue);
+
+

g_async_queue_unref_and_unlock has been deprecated since version 2.8 and should not be used in newly-written code.

+

Reference counting is done atomically. +so g_async_queue_unref() can be used regardless of the queue +'s +lock.

+
+

Decreases the reference count of the asynchronous queue + by 1 +and releases the lock. This function must be called while holding +the queue +'s lock. If the reference count went to 0, the queue + +will be destroyed and the memory allocated will be freed.

+
+

Parameters

+
+++++ + + + + + +

queue

a GAsyncQueue

 
+
+
+
+
+

g_async_queue_push_unlocked ()

+
void
+g_async_queue_push_unlocked (GAsyncQueue *queue,
+                             gpointer data);
+

Pushes the data + into the queue +. data + must not be NULL.

+

This function must be called while holding the queue +'s lock.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GAsyncQueue

 

data

data +to push into the queue +

 
+
+
+
+
+

g_async_queue_push_sorted_unlocked ()

+
void
+g_async_queue_push_sorted_unlocked (GAsyncQueue *queue,
+                                    gpointer data,
+                                    GCompareDataFunc func,
+                                    gpointer user_data);
+

Inserts data + into queue + using func + to determine the new +position.

+

The sort function func + is passed two elements of the queue +. +It should return 0 if they are equal, a negative value if the +first element should be higher in the queue + or a positive value +if the first element should be lower in the queue + than the second +element.

+

This function requires that the queue + is sorted before pushing on +new elements, see g_async_queue_sort().

+

This function must be called while holding the queue +'s lock.

+

For an example of func + see g_async_queue_sort().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

queue

a GAsyncQueue

 

data

the data +to push into the queue +

 

func

the GCompareDataFunc is used to sort queue +

 

user_data

user data passed to func +.

 
+
+

Since: 2.10

+
+
+
+

g_async_queue_push_front_unlocked ()

+
void
+g_async_queue_push_front_unlocked (GAsyncQueue *queue,
+                                   gpointer item);
+

Pushes the item + into the queue +. item + must not be NULL. +In contrast to g_async_queue_push_unlocked(), this function +pushes the new item ahead of the items already in the queue, +so that it will be the next one to be popped off the queue.

+

This function must be called while holding the queue +'s lock.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GAsyncQueue

 

item

data to push into the queue +

 
+
+

Since: 2.46

+
+
+
+

g_async_queue_remove_unlocked ()

+
gboolean
+g_async_queue_remove_unlocked (GAsyncQueue *queue,
+                               gpointer item);
+

Remove an item from the queue.

+

This function must be called while holding the queue +'s lock.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GAsyncQueue

 

item

the data to remove from the queue +

 
+
+
+

Returns

+

TRUE if the item was removed

+
+

Since: 2.46

+
+
+
+

g_async_queue_pop_unlocked ()

+
gpointer
+g_async_queue_pop_unlocked (GAsyncQueue *queue);
+

Pops data from the queue +. If queue + is empty, this function +blocks until data becomes available.

+

This function must be called while holding the queue +'s lock.

+
+

Parameters

+
+++++ + + + + + +

queue

a GAsyncQueue

 
+
+
+

Returns

+

data from the queue.

+
+
+
+
+

g_async_queue_try_pop_unlocked ()

+
gpointer
+g_async_queue_try_pop_unlocked (GAsyncQueue *queue);
+

Tries to pop data from the queue +. If no data is available, +NULL is returned.

+

This function must be called while holding the queue +'s lock.

+
+

Parameters

+
+++++ + + + + + +

queue

a GAsyncQueue

 
+
+
+

Returns

+

data from the queue or NULL, when no data is +available immediately.

+
+
+
+
+

g_async_queue_timeout_pop_unlocked ()

+
gpointer
+g_async_queue_timeout_pop_unlocked (GAsyncQueue *queue,
+                                    guint64 timeout);
+

Pops data from the queue +. If the queue is empty, blocks for +timeout + microseconds, or until data becomes available.

+

If no data is received before the timeout, NULL is returned.

+

This function must be called while holding the queue +'s lock.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GAsyncQueue

 

timeout

the number of microseconds to wait

 
+
+
+

Returns

+

data from the queue or NULL, when no data is +received before the timeout.

+
+
+
+
+

g_async_queue_length_unlocked ()

+
gint
+g_async_queue_length_unlocked (GAsyncQueue *queue);
+

Returns the length of the queue.

+

Actually this function returns the number of data items in +the queue minus the number of waiting threads, so a negative +value means waiting threads, and a positive value means available +entries in the queue +. A return value of 0 could mean n entries +in the queue and n threads waiting. This can happen due to locking +of the queue or due to scheduling.

+

This function must be called while holding the queue +'s lock.

+
+

Parameters

+
+++++ + + + + + +

queue

a GAsyncQueue

 
+
+
+

Returns

+

the length of the queue +.

+
+
+
+
+

g_async_queue_sort_unlocked ()

+
void
+g_async_queue_sort_unlocked (GAsyncQueue *queue,
+                             GCompareDataFunc func,
+                             gpointer user_data);
+

Sorts queue + using func +.

+

The sort function func + is passed two elements of the queue +. +It should return 0 if they are equal, a negative value if the +first element should be higher in the queue + or a positive value +if the first element should be lower in the queue + than the second +element.

+

This function must be called while holding the queue +'s lock.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

queue

a GAsyncQueue

 

func

the GCompareDataFunc is used to sort queue +

 

user_data

user data passed to func +

 
+
+

Since: 2.10

+
+
+
+

g_async_queue_timed_pop ()

+
gpointer
+g_async_queue_timed_pop (GAsyncQueue *queue,
+                         GTimeVal *end_time);
+
+

g_async_queue_timed_pop is deprecated and should not be used in newly-written code.

+

use g_async_queue_timeout_pop().

+
+

Pops data from the queue +. If the queue is empty, blocks until +end_time + or until data becomes available.

+

If no data is received before end_time +, NULL is returned.

+

To easily calculate end_time +, a combination of g_get_current_time() +and g_time_val_add() can be used.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GAsyncQueue

 

end_time

a GTimeVal, determining the final time

 
+
+
+

Returns

+

data from the queue or NULL, when no data is +received before end_time +.

+
+
+
+
+

g_async_queue_timed_pop_unlocked ()

+
gpointer
+g_async_queue_timed_pop_unlocked (GAsyncQueue *queue,
+                                  GTimeVal *end_time);
+
+

g_async_queue_timed_pop_unlocked is deprecated and should not be used in newly-written code.

+

use g_async_queue_timeout_pop_unlocked().

+
+

Pops data from the queue +. If the queue is empty, blocks until +end_time + or until data becomes available.

+

If no data is received before end_time +, NULL is returned.

+

To easily calculate end_time +, a combination of g_get_current_time() +and g_time_val_add() can be used.

+

This function must be called while holding the queue +'s lock.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GAsyncQueue

 

end_time

a GTimeVal, determining the final time

 
+
+
+

Returns

+

data from the queue or NULL, when no data is +received before end_time +.

+
+
+
+
+

Types and Values

+
+

GAsyncQueue

+
typedef struct _GAsyncQueue GAsyncQueue;
+

The GAsyncQueue struct is an opaque data structure which represents +an asynchronous queue. It should only be accessed through the +g_async_queue_* functions.

+
+
+
+

See Also

+

GThreadPool

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Atomic-Operations.html b/docs/reference/glib/html/glib-Atomic-Operations.html new file mode 100644 index 0000000..2be7d5b --- /dev/null +++ b/docs/reference/glib/html/glib-Atomic-Operations.html @@ -0,0 +1,930 @@ + + + + +Atomic Operations: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Atomic Operations

+

Atomic Operations — basic atomic integer and pointer operations

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gint + +g_atomic_int_get () +
+void + +g_atomic_int_set () +
+void + +g_atomic_int_inc () +
+gboolean + +g_atomic_int_dec_and_test () +
+gboolean + +g_atomic_int_compare_and_exchange () +
+gint + +g_atomic_int_add () +
+guint + +g_atomic_int_and () +
+guint + +g_atomic_int_or () +
+guint + +g_atomic_int_xor () +
+gpointer + +g_atomic_pointer_get () +
+void + +g_atomic_pointer_set () +
+gboolean + +g_atomic_pointer_compare_and_exchange () +
+gssize + +g_atomic_pointer_add () +
+gsize + +g_atomic_pointer_and () +
+gsize + +g_atomic_pointer_or () +
+gsize + +g_atomic_pointer_xor () +
+gint + +g_atomic_int_exchange_and_add () +
+
+
+

Types and Values

+
++++ + + + + +
#defineG_ATOMIC_LOCK_FREE
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The following is a collection of compiler macros to provide atomic +access to integer and pointer-sized values.

+

The macros that have 'int' in the name will operate on pointers to +gint and guint. The macros with 'pointer' in the name will operate +on pointers to any pointer-sized value, including gsize. There is +no support for 64bit operations on platforms with 32bit pointers +because it is not generally possible to perform these operations +atomically.

+

The get, set and exchange operations for integers and pointers +nominally operate on gint and gpointer, respectively. Of the +arithmetic operations, the 'add' operation operates on (and returns) +signed integer values (gint and gssize) and the 'and', 'or', and +'xor' operations operate on (and return) unsigned integer values +(guint and gsize).

+

All of the operations act as a full compiler and (where appropriate) +hardware memory barrier. Acquire and release or producer and +consumer barrier semantics are not available through this API.

+

It is very important that all accesses to a particular integer or +pointer be performed using only this API and that different sizes of +operation are not mixed or used on overlapping memory regions. Never +read or assign directly from or to a value -- always use this API.

+

For simple reference counting purposes you should use +g_atomic_int_inc() and g_atomic_int_dec_and_test(). Other uses that +fall outside of simple reference counting patterns are prone to +subtle bugs and occasionally undefined behaviour. It is also worth +noting that since all of these operations require global +synchronisation of the entire machine, they can be quite slow. In +the case of performing multiple atomic operations it can often be +faster to simply acquire a mutex lock around the critical area, +perform the operations normally and then release the lock.

+
+
+

Functions

+
+

g_atomic_int_get ()

+
gint
+g_atomic_int_get (const volatile gint *atomic);
+

Gets the current value of atomic +.

+

This call acts as a full compiler and hardware +memory barrier (before the get).

+
+

Parameters

+
+++++ + + + + + +

atomic

a pointer to a gint or guint

 
+
+
+

Returns

+

the value of the integer

+
+

Since: 2.4

+
+
+
+

g_atomic_int_set ()

+
void
+g_atomic_int_set (volatile gint *atomic,
+                  gint newval);
+

Sets the value of atomic + to newval +.

+

This call acts as a full compiler and hardware +memory barrier (after the set).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

atomic

a pointer to a gint or guint

 

newval

a new value to store

 
+
+

Since: 2.4

+
+
+
+

g_atomic_int_inc ()

+
void
+g_atomic_int_inc (gint *atomic);
+

Increments the value of atomic + by 1.

+

Think of this operation as an atomic version of { *atomic += 1; }.

+

This call acts as a full compiler and hardware memory barrier.

+
+

Parameters

+
+++++ + + + + + +

atomic

a pointer to a gint or guint

 
+
+

Since: 2.4

+
+
+
+

g_atomic_int_dec_and_test ()

+
gboolean
+g_atomic_int_dec_and_test (gint *atomic);
+

Decrements the value of atomic + by 1.

+

Think of this operation as an atomic version of +{ *atomic -= 1; return (*atomic == 0); }.

+

This call acts as a full compiler and hardware memory barrier.

+
+

Parameters

+
+++++ + + + + + +

atomic

a pointer to a gint or guint

 
+
+
+

Returns

+

TRUE if the resultant value is zero

+
+

Since: 2.4

+
+
+
+

g_atomic_int_compare_and_exchange ()

+
gboolean
+g_atomic_int_compare_and_exchange (volatile gint *atomic,
+                                   gint oldval,
+                                   gint newval);
+

Compares atomic + to oldval + and, if equal, sets it to newval +. +If atomic + was not equal to oldval + then no change occurs.

+

This compare and exchange is done atomically.

+

Think of this operation as an atomic version of +{ if (*atomic == oldval) { *atomic = newval; return TRUE; } else return FALSE; }.

+

This call acts as a full compiler and hardware memory barrier.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

atomic

a pointer to a gint or guint

 

oldval

the value to compare with

 

newval

the value to conditionally replace with

 
+
+
+

Returns

+

TRUE if the exchange took place

+
+

Since: 2.4

+
+
+
+

g_atomic_int_add ()

+
gint
+g_atomic_int_add (volatile gint *atomic,
+                  gint val);
+

Atomically adds val + to the value of atomic +.

+

Think of this operation as an atomic version of +{ tmp = *atomic; *atomic += val; return tmp; }.

+

This call acts as a full compiler and hardware memory barrier.

+

Before version 2.30, this function did not return a value +(but g_atomic_int_exchange_and_add() did, and had the same meaning).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

atomic

a pointer to a gint or guint

 

val

the value to add

 
+
+
+

Returns

+

the value of atomic +before the add, signed

+
+

Since: 2.4

+
+
+
+

g_atomic_int_and ()

+
guint
+g_atomic_int_and (volatile guint *atomic,
+                  guint val);
+

Performs an atomic bitwise 'and' of the value of atomic + and val +, +storing the result back in atomic +.

+

This call acts as a full compiler and hardware memory barrier.

+

Think of this operation as an atomic version of +{ tmp = *atomic; *atomic &= val; return tmp; }.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

atomic

a pointer to a gint or guint

 

val

the value to 'and'

 
+
+
+

Returns

+

the value of atomic +before the operation, unsigned

+
+

Since: 2.30

+
+
+
+

g_atomic_int_or ()

+
guint
+g_atomic_int_or (volatile guint *atomic,
+                 guint val);
+

Performs an atomic bitwise 'or' of the value of atomic + and val +, +storing the result back in atomic +.

+

Think of this operation as an atomic version of +{ tmp = *atomic; *atomic |= val; return tmp; }.

+

This call acts as a full compiler and hardware memory barrier.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

atomic

a pointer to a gint or guint

 

val

the value to 'or'

 
+
+
+

Returns

+

the value of atomic +before the operation, unsigned

+
+

Since: 2.30

+
+
+
+

g_atomic_int_xor ()

+
guint
+g_atomic_int_xor (volatile guint *atomic,
+                  guint val);
+

Performs an atomic bitwise 'xor' of the value of atomic + and val +, +storing the result back in atomic +.

+

Think of this operation as an atomic version of +{ tmp = *atomic; *atomic ^= val; return tmp; }.

+

This call acts as a full compiler and hardware memory barrier.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

atomic

a pointer to a gint or guint

 

val

the value to 'xor'

 
+
+
+

Returns

+

the value of atomic +before the operation, unsigned

+
+

Since: 2.30

+
+
+
+

g_atomic_pointer_get ()

+
gpointer
+g_atomic_pointer_get (const volatile void *atomic);
+

Gets the current value of atomic +.

+

This call acts as a full compiler and hardware +memory barrier (before the get).

+
+

Parameters

+
+++++ + + + + + +

atomic

a pointer to a gpointer-sized value.

[not nullable]
+
+
+

Returns

+

the value of the pointer

+
+

Since: 2.4

+
+
+
+

g_atomic_pointer_set ()

+
void
+g_atomic_pointer_set (volatile void *atomic,
+                      gpointer newval);
+

Sets the value of atomic + to newval +.

+

This call acts as a full compiler and hardware +memory barrier (after the set).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

atomic

a pointer to a gpointer-sized value.

[not nullable]

newval

a new value to store

 
+
+

Since: 2.4

+
+
+
+

g_atomic_pointer_compare_and_exchange ()

+
gboolean
+g_atomic_pointer_compare_and_exchange (volatile void *atomic,
+                                       gpointer oldval,
+                                       gpointer newval);
+

Compares atomic + to oldval + and, if equal, sets it to newval +. +If atomic + was not equal to oldval + then no change occurs.

+

This compare and exchange is done atomically.

+

Think of this operation as an atomic version of +{ if (*atomic == oldval) { *atomic = newval; return TRUE; } else return FALSE; }.

+

This call acts as a full compiler and hardware memory barrier.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

atomic

a pointer to a gpointer-sized value.

[not nullable]

oldval

the value to compare with

 

newval

the value to conditionally replace with

 
+
+
+

Returns

+

TRUE if the exchange took place

+
+

Since: 2.4

+
+
+
+

g_atomic_pointer_add ()

+
gssize
+g_atomic_pointer_add (volatile void *atomic,
+                      gssize val);
+

Atomically adds val + to the value of atomic +.

+

Think of this operation as an atomic version of +{ tmp = *atomic; *atomic += val; return tmp; }.

+

This call acts as a full compiler and hardware memory barrier.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

atomic

a pointer to a gpointer-sized value.

[not nullable]

val

the value to add

 
+
+
+

Returns

+

the value of atomic +before the add, signed

+
+

Since: 2.30

+
+
+
+

g_atomic_pointer_and ()

+
gsize
+g_atomic_pointer_and (volatile void *atomic,
+                      gsize val);
+

Performs an atomic bitwise 'and' of the value of atomic + and val +, +storing the result back in atomic +.

+

Think of this operation as an atomic version of +{ tmp = *atomic; *atomic &= val; return tmp; }.

+

This call acts as a full compiler and hardware memory barrier.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

atomic

a pointer to a gpointer-sized value.

[not nullable]

val

the value to 'and'

 
+
+
+

Returns

+

the value of atomic +before the operation, unsigned

+
+

Since: 2.30

+
+
+
+

g_atomic_pointer_or ()

+
gsize
+g_atomic_pointer_or (volatile void *atomic,
+                     gsize val);
+

Performs an atomic bitwise 'or' of the value of atomic + and val +, +storing the result back in atomic +.

+

Think of this operation as an atomic version of +{ tmp = *atomic; *atomic |= val; return tmp; }.

+

This call acts as a full compiler and hardware memory barrier.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

atomic

a pointer to a gpointer-sized value.

[not nullable]

val

the value to 'or'

 
+
+
+

Returns

+

the value of atomic +before the operation, unsigned

+
+

Since: 2.30

+
+
+
+

g_atomic_pointer_xor ()

+
gsize
+g_atomic_pointer_xor (volatile void *atomic,
+                      gsize val);
+

Performs an atomic bitwise 'xor' of the value of atomic + and val +, +storing the result back in atomic +.

+

Think of this operation as an atomic version of +{ tmp = *atomic; *atomic ^= val; return tmp; }.

+

This call acts as a full compiler and hardware memory barrier.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

atomic

a pointer to a gpointer-sized value.

[not nullable]

val

the value to 'xor'

 
+
+
+

Returns

+

the value of atomic +before the operation, unsigned

+
+

Since: 2.30

+
+
+
+

g_atomic_int_exchange_and_add ()

+
gint
+g_atomic_int_exchange_and_add (volatile gint *atomic,
+                               gint val);
+
+

g_atomic_int_exchange_and_add has been deprecated since version 2.30 and should not be used in newly-written code.

+

Use g_atomic_int_add() instead.

+
+

This function existed before g_atomic_int_add() returned the prior +value of the integer (which it now does). It is retained only for +compatibility reasons. Don't use this function in new code.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

atomic

a pointer to a gint

 

val

the value to add

 
+
+
+

Returns

+

the value of atomic +before the add, signed

+
+

Since: 2.4

+
+
+
+

Types and Values

+
+

G_ATOMIC_LOCK_FREE

+
#define G_ATOMIC_LOCK_FREE
+
+

This macro is defined if the atomic operations of GLib are +implemented using real hardware atomic operations. This means that +the GLib atomic API can be used between processes and safely mixed +with other (hardware) atomic APIs.

+

If this macro is not defined, the atomic operations may be +emulated using a mutex. In that case, the GLib atomic operations are +only atomic relative to themselves and within a single process.

+
+
+
+

See Also

+

GMutex

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Automatic-String-Completion.html b/docs/reference/glib/html/glib-Automatic-String-Completion.html new file mode 100644 index 0000000..a1d5ede --- /dev/null +++ b/docs/reference/glib/html/glib-Automatic-String-Completion.html @@ -0,0 +1,610 @@ + + + + +Automatic String Completion: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Automatic String Completion

+

Automatic String Completion — support for automatic completion using a group + of target strings

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GCompletion * + +g_completion_new () +
+gchar * + +(*GCompletionFunc) () +
+void + +g_completion_add_items () +
+void + +g_completion_remove_items () +
+void + +g_completion_clear_items () +
+GList * + +g_completion_complete () +
+GList * + +g_completion_complete_utf8 () +
+void + +g_completion_set_compare () +
+gint + +(*GCompletionStrncmpFunc) () +
+void + +g_completion_free () +
+
+
+

Types and Values

+
++++ + + + + +
structGCompletion
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GCompletion provides support for automatic completion of a string +using any group of target strings. It is typically used for file +name completion as is common in many UNIX shells.

+

A GCompletion is created using g_completion_new(). Target items are +added and removed with g_completion_add_items(), +g_completion_remove_items() and g_completion_clear_items(). A +completion attempt is requested with g_completion_complete() or +g_completion_complete_utf8(). When no longer needed, the +GCompletion is freed with g_completion_free().

+

Items in the completion can be simple strings (e.g. filenames), or +pointers to arbitrary data structures. If data structures are used +you must provide a GCompletionFunc in g_completion_new(), which +retrieves the item's string from the data structure. You can change +the way in which strings are compared by setting a different +GCompletionStrncmpFunc in g_completion_set_compare().

+

GCompletion has been marked as deprecated, since this API is rarely +used and not very actively maintained.

+
+
+

Functions

+
+

g_completion_new ()

+
GCompletion *
+g_completion_new (GCompletionFunc func);
+

g_completion_new is deprecated and should not be used in newly-written code.

+

Creates a new GCompletion.

+
+

Parameters

+
+++++ + + + + + +

func

the function to be called to return the string representing +an item in the GCompletion, or NULL if strings are going to +be used as the GCompletion items.

 
+
+
+

Returns

+

the new GCompletion.

+
+
+
+
+

GCompletionFunc ()

+
gchar *
+(*GCompletionFunc) (gpointer Param1);
+

Specifies the type of the function passed to g_completion_new(). It +should return the string corresponding to the given target item. +This is used when you use data structures as GCompletion items.

+
+

Parameters

+
+++++ + + + + + +

Param1

the completion item.

 
+
+
+

Returns

+

the string corresponding to the item.

+
+
+
+
+

g_completion_add_items ()

+
void
+g_completion_add_items (GCompletion *cmp,
+                        GList *items);
+
+

g_completion_add_items has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Adds items to the GCompletion.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cmp

the GCompletion.

 

items

the list of items to add.

[transfer none]
+
+
+
+
+

g_completion_remove_items ()

+
void
+g_completion_remove_items (GCompletion *cmp,
+                           GList *items);
+
+

g_completion_remove_items has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Removes items from a GCompletion. The items are not freed, so if the memory +was dynamically allocated, free items + with g_list_free_full() after calling +this function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cmp

the GCompletion.

 

items

the items to remove.

[transfer none]
+
+
+
+
+

g_completion_clear_items ()

+
void
+g_completion_clear_items (GCompletion *cmp);
+
+

g_completion_clear_items has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Removes all items from the GCompletion. The items are not freed, so if the +memory was dynamically allocated, it should be freed after calling this +function.

+
+

Parameters

+
+++++ + + + + + +

cmp

the GCompletion.

 
+
+
+
+
+

g_completion_complete ()

+
GList *
+g_completion_complete (GCompletion *cmp,
+                       const gchar *prefix,
+                       gchar **new_prefix);
+
+

g_completion_complete has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Attempts to complete the string prefix + using the GCompletion +target items.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

cmp

the GCompletion.

 

prefix

the prefix string, typically typed by the user, which is +compared with each of the items.

 

new_prefix

if non-NULL, returns the longest prefix which is +common to all items that matched prefix +, or NULL if +no items matched prefix +. This string should be freed +when no longer needed.

 
+
+
+

Returns

+

the list of items whose strings begin with +prefix +. This should not be changed.

+

[transfer none]

+
+
+
+
+

g_completion_complete_utf8 ()

+
GList *
+g_completion_complete_utf8 (GCompletion *cmp,
+                            const gchar *prefix,
+                            gchar **new_prefix);
+
+

g_completion_complete_utf8 has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Attempts to complete the string prefix + using the GCompletion target items. +In contrast to g_completion_complete(), this function returns the largest common +prefix that is a valid UTF-8 string, omitting a possible common partial +character.

+

You should use this function instead of g_completion_complete() if your +items are UTF-8 strings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

cmp

the GCompletion

 

prefix

the prefix string, typically used by the user, which is compared +with each of the items

 

new_prefix

if non-NULL, returns the longest prefix which is common to all +items that matched prefix +, or NULL if no items matched prefix +. +This string should be freed when no longer needed.

 
+
+
+

Returns

+

the list of items whose strings begin with prefix +. This should +not be changed.

+

[element-type utf8][transfer none]

+
+

Since: 2.4

+
+
+
+

g_completion_set_compare ()

+
void
+g_completion_set_compare (GCompletion *cmp,
+                          GCompletionStrncmpFunc strncmp_func);
+
+

g_completion_set_compare has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Sets the function to use for string comparisons. The default string +comparison function is strncmp().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cmp

a GCompletion.

 

strncmp_func

the string comparison function.

 
+
+
+
+
+

GCompletionStrncmpFunc ()

+
gint
+(*GCompletionStrncmpFunc) (const gchar *s1,
+                           const gchar *s2,
+                           gsize n);
+

Specifies the type of the function passed to +g_completion_set_compare(). This is used when you use strings as +GCompletion items.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

s1

string to compare with s2 +.

 

s2

string to compare with s1 +.

 

n

maximal number of bytes to compare.

 
+
+
+

Returns

+

an integer less than, equal to, or greater than zero if +the first n +bytes of s1 +is found, respectively, to be +less than, to match, or to be greater than the first n +bytes of s2 +.

+
+
+
+
+

g_completion_free ()

+
void
+g_completion_free (GCompletion *cmp);
+
+

g_completion_free has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Frees all memory used by the GCompletion. The items are not freed, so if +the memory was dynamically allocated, it should be freed after calling this +function.

+
+

Parameters

+
+++++ + + + + + +

cmp

the GCompletion.

 
+
+
+
+
+

Types and Values

+
+

struct GCompletion

+
struct GCompletion {
+  GList* items;
+  GCompletionFunc func;
+ 
+  gchar* prefix;
+  GList* cache;
+  GCompletionStrncmpFunc strncmp_func;
+};
+
+

The data structure used for automatic completion.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GList *items;

list of target items (strings or data structures).

 

GCompletionFunc func;

function which is called to get the string associated with a +target item. It is NULL if the target items are strings.

 

gchar *prefix;

the last prefix passed to g_completion_complete() or +g_completion_complete_utf8().

 

GList *cache;

the list of items which begin with prefix +.

 

GCompletionStrncmpFunc strncmp_func;

The function to use when comparing strings. Use +g_completion_set_compare() to modify this function.

 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Balanced-Binary-Trees.html b/docs/reference/glib/html/glib-Balanced-Binary-Trees.html new file mode 100644 index 0000000..fc587bf --- /dev/null +++ b/docs/reference/glib/html/glib-Balanced-Binary-Trees.html @@ -0,0 +1,945 @@ + + + + +Balanced Binary Trees: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Balanced Binary Trees

+

Balanced Binary Trees — a sorted collection of key/value pairs optimized + for searching and traversing in order

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GTree * + +g_tree_new () +
+GTree * + +g_tree_ref () +
+void + +g_tree_unref () +
+GTree * + +g_tree_new_with_data () +
+GTree * + +g_tree_new_full () +
+void + +g_tree_insert () +
+void + +g_tree_replace () +
+gint + +g_tree_nnodes () +
+gint + +g_tree_height () +
+gpointer + +g_tree_lookup () +
+gboolean + +g_tree_lookup_extended () +
+void + +g_tree_foreach () +
+void + +g_tree_traverse () +
+gboolean + +(*GTraverseFunc) () +
+gpointer + +g_tree_search () +
+gboolean + +g_tree_remove () +
+gboolean + +g_tree_steal () +
+void + +g_tree_destroy () +
+
+
+

Types and Values

+
++++ + + + + +
 GTree
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The GTree structure and its associated functions provide a sorted +collection of key/value pairs optimized for searching and traversing +in order.

+

To create a new GTree use g_tree_new().

+

To insert a key/value pair into a GTree use g_tree_insert().

+

To lookup the value corresponding to a given key, use +g_tree_lookup() and g_tree_lookup_extended().

+

To find out the number of nodes in a GTree, use g_tree_nnodes(). To +get the height of a GTree, use g_tree_height().

+

To traverse a GTree, calling a function for each node visited in +the traversal, use g_tree_foreach().

+

To remove a key/value pair use g_tree_remove().

+

To destroy a GTree, use g_tree_destroy().

+
+
+

Functions

+
+

g_tree_new ()

+
GTree *
+g_tree_new (GCompareFunc key_compare_func);
+

Creates a new GTree.

+
+

Parameters

+
+++++ + + + + + +

key_compare_func

the function used to order the nodes in the GTree. +It should return values similar to the standard strcmp() function - +0 if the two arguments are equal, a negative value if the first argument +comes before the second, or a positive value if the first argument comes +after the second.

 
+
+
+

Returns

+

a newly allocated GTree

+
+
+
+
+

g_tree_ref ()

+
GTree *
+g_tree_ref (GTree *tree);
+

Increments the reference count of tree + by one.

+

It is safe to call this function from any thread.

+
+

Parameters

+
+++++ + + + + + +

tree

a GTree

 
+
+
+

Returns

+

the passed in GTree

+
+

Since: 2.22

+
+
+
+

g_tree_unref ()

+
void
+g_tree_unref (GTree *tree);
+

Decrements the reference count of tree + by one. +If the reference count drops to 0, all keys and values will +be destroyed (if destroy functions were specified) and all +memory allocated by tree + will be released.

+

It is safe to call this function from any thread.

+
+

Parameters

+
+++++ + + + + + +

tree

a GTree

 
+
+

Since: 2.22

+
+
+
+

g_tree_new_with_data ()

+
GTree *
+g_tree_new_with_data (GCompareDataFunc key_compare_func,
+                      gpointer key_compare_data);
+

Creates a new GTree with a comparison function that accepts user data. +See g_tree_new() for more details.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

key_compare_func

qsort()-style comparison function

 

key_compare_data

data to pass to comparison function

 
+
+
+

Returns

+

a newly allocated GTree

+
+
+
+
+

g_tree_new_full ()

+
GTree *
+g_tree_new_full (GCompareDataFunc key_compare_func,
+                 gpointer key_compare_data,
+                 GDestroyNotify key_destroy_func,
+                 GDestroyNotify value_destroy_func);
+

Creates a new GTree like g_tree_new() and allows to specify functions +to free the memory allocated for the key and value that get called when +removing the entry from the GTree.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_compare_func

qsort()-style comparison function

 

key_compare_data

data to pass to comparison function

 

key_destroy_func

a function to free the memory allocated for the key +used when removing the entry from the GTree or NULL if you don't +want to supply such a function

 

value_destroy_func

a function to free the memory allocated for the +value used when removing the entry from the GTree or NULL if you +don't want to supply such a function

 
+
+
+

Returns

+

a newly allocated GTree

+
+
+
+
+

g_tree_insert ()

+
void
+g_tree_insert (GTree *tree,
+               gpointer key,
+               gpointer value);
+

Inserts a key/value pair into a GTree.

+

If the given key already exists in the GTree its corresponding value +is set to the new value. If you supplied a value_destroy_func + when +creating the GTree, the old value is freed using that function. If +you supplied a key_destroy_func + when creating the GTree, the passed +key is freed using that function.

+

The tree is automatically 'balanced' as new key/value pairs are added, +so that the distance from the root to every leaf is as small as possible.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

tree

a GTree

 

key

the key to insert

 

value

the value corresponding to the key

 
+
+
+
+
+

g_tree_replace ()

+
void
+g_tree_replace (GTree *tree,
+                gpointer key,
+                gpointer value);
+

Inserts a new key and value into a GTree similar to g_tree_insert(). +The difference is that if the key already exists in the GTree, it gets +replaced by the new key. If you supplied a value_destroy_func + when +creating the GTree, the old value is freed using that function. If you +supplied a key_destroy_func + when creating the GTree, the old key is +freed using that function.

+

The tree is automatically 'balanced' as new key/value pairs are added, +so that the distance from the root to every leaf is as small as possible.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

tree

a GTree

 

key

the key to insert

 

value

the value corresponding to the key

 
+
+
+
+
+

g_tree_nnodes ()

+
gint
+g_tree_nnodes (GTree *tree);
+

Gets the number of nodes in a GTree.

+
+

Parameters

+
+++++ + + + + + +

tree

a GTree

 
+
+
+

Returns

+

the number of nodes in tree +

+
+
+
+
+

g_tree_height ()

+
gint
+g_tree_height (GTree *tree);
+

Gets the height of a GTree.

+

If the GTree contains no nodes, the height is 0. +If the GTree contains only one root node the height is 1. +If the root node has children the height is 2, etc.

+
+

Parameters

+
+++++ + + + + + +

tree

a GTree

 
+
+
+

Returns

+

the height of tree +

+
+
+
+
+

g_tree_lookup ()

+
gpointer
+g_tree_lookup (GTree *tree,
+               gconstpointer key);
+

Gets the value corresponding to the given key. Since a GTree is +automatically balanced as key/value pairs are added, key lookup +is O(log n) (where n is the number of key/value pairs in the tree).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

tree

a GTree

 

key

the key to look up

 
+
+
+

Returns

+

the value corresponding to the key, or NULL +if the key was not found

+
+
+
+
+

g_tree_lookup_extended ()

+
gboolean
+g_tree_lookup_extended (GTree *tree,
+                        gconstpointer lookup_key,
+                        gpointer *orig_key,
+                        gpointer *value);
+

Looks up a key in the GTree, returning the original key and the +associated value. This is useful if you need to free the memory +allocated for the original key, for example before calling +g_tree_remove().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

tree

a GTree

 

lookup_key

the key to look up

 

orig_key

returns the original key.

[optional][nullable]

value

returns the value associated with the key.

[optional][nullable]
+
+
+

Returns

+

TRUE if the key was found in the GTree

+
+
+
+
+

g_tree_foreach ()

+
void
+g_tree_foreach (GTree *tree,
+                GTraverseFunc func,
+                gpointer user_data);
+

Calls the given function for each of the key/value pairs in the GTree. +The function is passed the key and value of each pair, and the given +data + parameter. The tree is traversed in sorted order.

+

The tree may not be modified while iterating over it (you can't +add/remove items). To remove all items matching a predicate, you need +to add each item to a list in your GTraverseFunc as you walk over +the tree, then walk the list and remove each item.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

tree

a GTree

 

func

the function to call for each node visited. +If this function returns TRUE, the traversal is stopped.

 

user_data

user data to pass to the function

 
+
+
+
+
+

g_tree_traverse ()

+
void
+g_tree_traverse (GTree *tree,
+                 GTraverseFunc traverse_func,
+                 GTraverseType traverse_type,
+                 gpointer user_data);
+
+

g_tree_traverse has been deprecated since version 2.2 and should not be used in newly-written code.

+

The order of a balanced tree is somewhat arbitrary. + If you just want to visit all nodes in sorted order, use + g_tree_foreach() instead. If you really need to visit nodes in + a different order, consider using an n-ary tree.

+
+

Calls the given function for each node in the GTree.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

tree

a GTree

 

traverse_func

the function to call for each node visited. If this +function returns TRUE, the traversal is stopped.

 

traverse_type

the order in which nodes are visited, one of G_IN_ORDER, +G_PRE_ORDER and G_POST_ORDER

 

user_data

user data to pass to the function

 
+
+
+
+
+

GTraverseFunc ()

+
gboolean
+(*GTraverseFunc) (gpointer key,
+                  gpointer value,
+                  gpointer data);
+

Specifies the type of function passed to g_tree_traverse(). It is +passed the key and value of each node, together with the user_data + +parameter passed to g_tree_traverse(). If the function returns +TRUE, the traversal is stopped.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

key

a key of a GTree node

 

value

the value corresponding to the key

 

data

user data passed to g_tree_traverse()

 
+
+
+

Returns

+

TRUE to stop the traversal

+
+
+
+
+

g_tree_search ()

+
gpointer
+g_tree_search (GTree *tree,
+               GCompareFunc search_func,
+               gconstpointer user_data);
+

Searches a GTree using search_func +.

+

The search_func + is called with a pointer to the key of a key/value +pair in the tree, and the passed in user_data +. If search_func + returns +0 for a key/value pair, then the corresponding value is returned as +the result of g_tree_search(). If search_func + returns -1, searching +will proceed among the key/value pairs that have a smaller key; if +search_func + returns 1, searching will proceed among the key/value +pairs that have a larger key.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

tree

a GTree

 

search_func

a function used to search the GTree

 

user_data

the data passed as the second argument to search_func +

 
+
+
+

Returns

+

the value corresponding to the found key, or NULL +if the key was not found

+
+
+
+
+

g_tree_remove ()

+
gboolean
+g_tree_remove (GTree *tree,
+               gconstpointer key);
+

Removes a key/value pair from a GTree.

+

If the GTree was created using g_tree_new_full(), the key and value +are freed using the supplied destroy functions, otherwise you have to +make sure that any dynamically allocated values are freed yourself. +If the key does not exist in the GTree, the function does nothing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

tree

a GTree

 

key

the key to remove

 
+
+
+

Returns

+

TRUE if the key was found (prior to 2.8, this function +returned nothing)

+
+
+
+
+

g_tree_steal ()

+
gboolean
+g_tree_steal (GTree *tree,
+              gconstpointer key);
+

Removes a key and its associated value from a GTree without calling +the key and value destroy functions.

+

If the key does not exist in the GTree, the function does nothing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

tree

a GTree

 

key

the key to remove

 
+
+
+

Returns

+

TRUE if the key was found (prior to 2.8, this function +returned nothing)

+
+
+
+
+

g_tree_destroy ()

+
void
+g_tree_destroy (GTree *tree);
+

Removes all keys and values from the GTree and decreases its +reference count by one. If keys and/or values are dynamically +allocated, you should either free them first or create the GTree +using g_tree_new_full(). In the latter case the destroy functions +you supplied will be called on all keys and values before destroying +the GTree.

+
+

Parameters

+
+++++ + + + + + +

tree

a GTree

 
+
+
+
+
+

Types and Values

+
+

GTree

+
typedef struct _GTree GTree;
+

The GTree struct is an opaque data structure representing a +balanced binary tree. It should be +accessed only by using the following functions.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Base64-Encoding.html b/docs/reference/glib/html/glib-Base64-Encoding.html new file mode 100644 index 0000000..662af26 --- /dev/null +++ b/docs/reference/glib/html/glib-Base64-Encoding.html @@ -0,0 +1,436 @@ + + + + +Base64 Encoding: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Base64 Encoding

+

Base64 Encoding — encodes and decodes data in Base64 format

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gsize + +g_base64_encode_step () +
+gsize + +g_base64_encode_close () +
+gchar * + +g_base64_encode () +
+gsize + +g_base64_decode_step () +
+guchar * + +g_base64_decode () +
+guchar * + +g_base64_decode_inplace () +
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

Base64 is an encoding that allows a sequence of arbitrary bytes to be +encoded as a sequence of printable ASCII characters. For the definition +of Base64, see +RFC 1421 +or +RFC 2045. +Base64 is most commonly used as a MIME transfer encoding +for email.

+

GLib supports incremental encoding using g_base64_encode_step() and +g_base64_encode_close(). Incremental decoding can be done with +g_base64_decode_step(). To encode or decode data in one go, use +g_base64_encode() or g_base64_decode(). To avoid memory allocation when +decoding, you can use g_base64_decode_inplace().

+

Support for Base64 encoding has been added in GLib 2.12.

+
+
+

Functions

+
+

g_base64_encode_step ()

+
gsize
+g_base64_encode_step (const guchar *in,
+                      gsize len,
+                      gboolean break_lines,
+                      gchar *out,
+                      gint *state,
+                      gint *save);
+

Incrementally encode a sequence of binary data into its Base-64 stringified +representation. By calling this function multiple times you can convert +data in chunks to avoid having to have the full encoded data in memory.

+

When all of the data has been converted you must call +g_base64_encode_close() to flush the saved state.

+

The output buffer must be large enough to fit all the data that will +be written to it. Due to the way base64 encodes you will need +at least: (len + / 3 + 1) * 4 + 4 bytes (+ 4 may be needed in case of +non-zero state). If you enable line-breaking you will need at least: +((len + / 3 + 1) * 4 + 4) / 72 + 1 bytes of extra space.

+

break_lines + is typically used when putting base64-encoded data in emails. +It breaks the lines at 72 columns instead of putting all of the text on +the same line. This avoids problems with long lines in the email system. +Note however that it breaks the lines with LF characters, not +CR LF sequences, so the result cannot be passed directly to SMTP +or certain other protocols.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

in

the binary data to encode.

[array length=len][element-type guint8]

len

the length of in +

 

break_lines

whether to break long lines

 

out

pointer to destination buffer.

[out][array][element-type guint8]

state

Saved state between steps, initialize to 0.

[inout]

save

Saved state between steps, initialize to 0.

[inout]
+
+
+

Returns

+

The number of bytes of output that was written

+
+

Since: 2.12

+
+
+
+

g_base64_encode_close ()

+
gsize
+g_base64_encode_close (gboolean break_lines,
+                       gchar *out,
+                       gint *state,
+                       gint *save);
+

Flush the status from a sequence of calls to g_base64_encode_step().

+

The output buffer must be large enough to fit all the data that will +be written to it. It will need up to 4 bytes, or up to 5 bytes if +line-breaking is enabled.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

break_lines

whether to break long lines

 

out

pointer to destination buffer.

[out][array][element-type guint8]

state

Saved state from g_base64_encode_step().

[inout]

save

Saved state from g_base64_encode_step().

[inout]
+
+
+

Returns

+

The number of bytes of output that was written

+
+

Since: 2.12

+
+
+
+

g_base64_encode ()

+
gchar *
+g_base64_encode (const guchar *data,
+                 gsize len);
+

Encode a sequence of binary data into its Base-64 stringified +representation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

data

the binary data to encode.

[array length=len][element-type guint8]

len

the length of data +

 
+
+
+

Returns

+

a newly allocated, zero-terminated Base-64 +encoded string representing data +. The returned string must +be freed with g_free().

+

[transfer full]

+
+

Since: 2.12

+
+
+
+

g_base64_decode_step ()

+
gsize
+g_base64_decode_step (const gchar *in,
+                      gsize len,
+                      guchar *out,
+                      gint *state,
+                      guint *save);
+

Incrementally decode a sequence of binary data from its Base-64 stringified +representation. By calling this function multiple times you can convert +data in chunks to avoid having to have the full encoded data in memory.

+

The output buffer must be large enough to fit all the data that will +be written to it. Since base64 encodes 3 bytes in 4 chars you need +at least: (len + / 4) * 3 + 3 bytes (+ 3 may be needed in case of non-zero +state).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

in

binary input data.

[array length=len][element-type guint8]

len

max length of in +data to decode

 

out

output buffer.

[out][array][element-type guint8]

state

Saved state between steps, initialize to 0.

[inout]

save

Saved state between steps, initialize to 0.

[inout]
+
+
+

Returns

+

The number of bytes of output that was written

+
+

Since: 2.12

+
+
+
+

g_base64_decode ()

+
guchar *
+g_base64_decode (const gchar *text,
+                 gsize *out_len);
+

Decode a sequence of Base-64 encoded text into binary data. Note +that the returned binary data is not necessarily zero-terminated, +so it should not be used as a character string.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

text

zero-terminated string with base64 text to decode

 

out_len

The length of the decoded data is written here.

[out]
+
+
+

Returns

+

newly allocated buffer containing the binary data +that text +represents. The returned buffer must +be freed with g_free().

+

[transfer full][array length=out_len][element-type guint8]

+
+

Since: 2.12

+
+
+
+

g_base64_decode_inplace ()

+
guchar *
+g_base64_decode_inplace (gchar *text,
+                         gsize *out_len);
+

Decode a sequence of Base-64 encoded text into binary data +by overwriting the input data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

text

zero-terminated +string with base64 text to decode.

[inout][array length=out_len][element-type guint8]

out_len

The length of the decoded data is written here.

[inout]
+
+
+

Returns

+

The binary data that text +responds. This pointer +is the same as the input text +.

+

[transfer none]

+
+

Since: 2.20

+
+
+
+

Types and Values

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Basic-Types.html b/docs/reference/glib/html/glib-Basic-Types.html new file mode 100644 index 0000000..d5cd2c4 --- /dev/null +++ b/docs/reference/glib/html/glib-Basic-Types.html @@ -0,0 +1,1176 @@ + + + + +Basic Types: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Basic Types

+

Basic Types — standard GLib types, defined for ease-of-use + and portability

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+GLIB_AVAILABLE_IN_ALL + +gint () +
+GLIB_AVAILABLE_IN_ALL + +guint () +
#define +G_GINT64_CONSTANT() +
#define +G_GUINT64_CONSTANT() +
#define +G_GOFFSET_CONSTANT() +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
typedefgboolean
typedefgpointer
typedefgconstpointer
typedefgchar
typedefguchar
#defineG_MININT
#defineG_MAXINT
#defineG_MAXUINT
typedefgshort
#defineG_MINSHORT
#defineG_MAXSHORT
typedefgushort
#defineG_MAXUSHORT
typedefglong
#defineG_MINLONG
#defineG_MAXLONG
typedefgulong
#defineG_MAXULONG
typedefgint8
#defineG_MININT8
#defineG_MAXINT8
typedefguint8
#defineG_MAXUINT8
typedefgint16
#defineG_MININT16
#defineG_MAXINT16
#defineG_GINT16_MODIFIER
#defineG_GINT16_FORMAT
typedefguint16
#defineG_MAXUINT16
#defineG_GUINT16_FORMAT
typedefgint32
#defineG_MININT32
#defineG_MAXINT32
#defineG_GINT32_MODIFIER
#defineG_GINT32_FORMAT
typedefguint32
#defineG_MAXUINT32
#defineG_GUINT32_FORMAT
typedefgint64
#defineG_MININT64
#defineG_MAXINT64
#defineG_GINT64_MODIFIER
#defineG_GINT64_FORMAT
typedefguint64
#defineG_MAXUINT64
#defineG_GUINT64_FORMAT
typedefgfloat
#defineG_MINFLOAT
#defineG_MAXFLOAT
typedefgdouble
#defineG_MINDOUBLE
#defineG_MAXDOUBLE
typedefgsize
#defineG_MAXSIZE
#defineG_GSIZE_MODIFIER
#defineG_GSIZE_FORMAT
typedefgssize
#defineG_MINSSIZE
#defineG_MAXSSIZE
#defineG_GSSIZE_MODIFIER
#defineG_GSSIZE_FORMAT
typedefgoffset
#defineG_MINOFFSET
#defineG_MAXOFFSET
#defineG_GOFFSET_MODIFIER
#defineG_GOFFSET_FORMAT
typedefgintptr
#defineG_GINTPTR_MODIFIER
#defineG_GINTPTR_FORMAT
typedefguintptr
#defineG_GUINTPTR_FORMAT
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GLib defines a number of commonly used types, which can be divided +into 4 groups:

+
+

GLib also defines macros for the limits of some of the standard +integer and floating point types, as well as macros for suitable +printf() formats for these types.

+
+
+

Functions

+
+

gint ()

+
GLIB_AVAILABLE_IN_ALL
+gint ();
+

Corresponds to the standard C int type. +Values of this type can range from G_MININT to G_MAXINT.

+
+
+
+

guint ()

+
GLIB_AVAILABLE_IN_ALL
+guint ();
+

Corresponds to the standard C unsigned int type. +Values of this type can range from 0 to G_MAXUINT.

+
+
+
+

G_GINT64_CONSTANT()

+
#define G_GINT64_CONSTANT(val) (val##L)
+
+

This macro is used to insert 64-bit integer literals +into the source code.

+
+

Parameters

+
+++++ + + + + + +

val

a literal integer value, e.g. 0x1d636b02300a7aa7

 
+
+
+
+
+

G_GUINT64_CONSTANT()

+
#define G_GUINT64_CONSTANT(val) (val##UL)
+
+

This macro is used to insert 64-bit unsigned integer +literals into the source code.

+
+

Parameters

+
+++++ + + + + + +

val

a literal integer value, e.g. 0x1d636b02300a7aa7U

 
+
+

Since: 2.10

+
+
+
+

G_GOFFSET_CONSTANT()

+
#define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val)
+
+

This macro is used to insert goffset 64-bit integer literals +into the source code.

+

See also G_GINT64_CONSTANT.

+
+

Parameters

+
+++++ + + + + + +

val

a literal integer value, e.g. 0x1d636b02300a7aa7

 
+
+

Since: 2.20

+
+
+
+

Types and Values

+
+

gboolean

+
typedef gint   gboolean;
+
+

A standard boolean type. +Variables of this type should only contain the value +TRUE or FALSE.

+
+
+
+

gpointer

+
typedef void* gpointer;
+
+

An untyped pointer. +gpointer looks better and is easier to use than void*.

+
+
+
+

gconstpointer

+
typedef const void *gconstpointer;
+
+

An untyped pointer to constant data. +The data pointed to should not be changed.

+

This is typically used in function prototypes to indicate +that the data pointed to will not be altered by the function.

+
+
+
+

gchar

+
typedef char   gchar;
+
+

Corresponds to the standard C char type.

+
+
+
+

guchar

+
typedef unsigned char   guchar;
+
+

Corresponds to the standard C unsigned char type.

+
+
+
+

G_MININT

+
#define G_MININT INT_MIN
+
+

The minimum value which can be held in a gint.

+
+
+
+

G_MAXINT

+
#define G_MAXINT INT_MAX
+
+

The maximum value which can be held in a gint.

+
+
+
+

G_MAXUINT

+
#define G_MAXUINT UINT_MAX
+
+

The maximum value which can be held in a guint.

+
+
+
+

gshort

+
typedef short  gshort;
+
+

Corresponds to the standard C short type. +Values of this type can range from G_MINSHORT to G_MAXSHORT.

+
+
+
+

G_MINSHORT

+
#define G_MINSHORT SHRT_MIN
+
+

The minimum value which can be held in a gshort.

+
+
+
+

G_MAXSHORT

+
#define G_MAXSHORT SHRT_MAX
+
+

The maximum value which can be held in a gshort.

+
+
+
+

gushort

+
typedef unsigned short  gushort;
+
+

Corresponds to the standard C unsigned short type. +Values of this type can range from 0 to G_MAXUSHORT.

+
+
+
+

G_MAXUSHORT

+
#define G_MAXUSHORT USHRT_MAX
+
+

The maximum value which can be held in a gushort.

+
+
+
+

glong

+
typedef long   glong;
+
+

Corresponds to the standard C long type. +Values of this type can range from G_MINLONG to G_MAXLONG.

+
+
+
+

G_MINLONG

+
#define G_MINLONG LONG_MIN
+
+

The minimum value which can be held in a glong.

+
+
+
+

G_MAXLONG

+
#define G_MAXLONG LONG_MAX
+
+

The maximum value which can be held in a glong.

+
+
+
+

gulong

+
typedef unsigned long   gulong;
+
+

Corresponds to the standard C unsigned long type. +Values of this type can range from 0 to G_MAXULONG.

+
+
+
+

G_MAXULONG

+
#define G_MAXULONG ULONG_MAX
+
+

The maximum value which can be held in a gulong.

+
+
+
+

gint8

+
typedef signed char gint8;
+
+

A signed integer guaranteed to be 8 bits on all platforms. +Values of this type can range from G_MININT8 (= -128) to +G_MAXINT8 (= 127).

+
+
+
+

G_MININT8

+
#define G_MININT8 ((gint8) -0x80)
+
+

The minimum value which can be held in a gint8.

+

Since: 2.4

+
+
+
+

G_MAXINT8

+
#define G_MAXINT8 ((gint8)  0x7f)
+
+

The maximum value which can be held in a gint8.

+

Since: 2.4

+
+
+
+

guint8

+
typedef unsigned char guint8;
+
+

An unsigned integer guaranteed to be 8 bits on all platforms. +Values of this type can range from 0 to G_MAXUINT8 (= 255).

+
+
+
+

G_MAXUINT8

+
#define G_MAXUINT8 ((guint8) 0xff)
+
+

The maximum value which can be held in a guint8.

+

Since: 2.4

+
+
+
+

gint16

+
typedef signed short gint16;
+
+

A signed integer guaranteed to be 16 bits on all platforms. +Values of this type can range from G_MININT16 (= -32,768) to +G_MAXINT16 (= 32,767).

+

To print or scan values of this type, use +G_GINT16_MODIFIER and/or G_GINT16_FORMAT.

+
+
+
+

G_MININT16

+
#define G_MININT16 ((gint16) -0x8000)
+
+

The minimum value which can be held in a gint16.

+

Since: 2.4

+
+
+
+

G_MAXINT16

+
#define G_MAXINT16 ((gint16)  0x7fff)
+
+

The maximum value which can be held in a gint16.

+

Since: 2.4

+
+
+
+

G_GINT16_MODIFIER

+
#define G_GINT16_MODIFIER "h"
+
+

The platform dependent length modifier for conversion specifiers +for scanning and printing values of type gint16 or guint16. It +is a string literal, but doesn't include the percent-sign, such +that you can add precision and length modifiers between percent-sign +and conversion specifier and append a conversion specifier.

+

The following example prints "0x7b";

+
+ + + + + + + +
1
+2
gint16 value = 123;
+g_print ("%#" G_GINT16_MODIFIER "x", value);
+
+ +

+

Since: 2.4

+
+
+
+

G_GINT16_FORMAT

+
#define G_GINT16_FORMAT "hi"
+
+

This is the platform dependent conversion specifier for scanning and +printing values of type gint16. It is a string literal, but doesn't +include the percent-sign, such that you can add precision and length +modifiers between percent-sign and conversion specifier.

+
+ + + + + + + +
1
+2
+3
+4
+5
gint16 in;
+gint32 out;
+sscanf ("42", "%" G_GINT16_FORMAT, &in)
+out = in * 1000;
+g_print ("%" G_GINT32_FORMAT, out);
+
+ +

+
+
+
+

guint16

+
typedef unsigned short guint16;
+
+

An unsigned integer guaranteed to be 16 bits on all platforms. +Values of this type can range from 0 to G_MAXUINT16 (= 65,535).

+

To print or scan values of this type, use +G_GINT16_MODIFIER and/or G_GUINT16_FORMAT.

+
+
+
+

G_MAXUINT16

+
#define G_MAXUINT16 ((guint16) 0xffff)
+
+

The maximum value which can be held in a guint16.

+

Since: 2.4

+
+
+
+

G_GUINT16_FORMAT

+
#define G_GUINT16_FORMAT "hu"
+
+

This is the platform dependent conversion specifier for scanning +and printing values of type guint16. See also G_GINT16_FORMAT

+
+
+
+

gint32

+
typedef signed int gint32;
+
+

A signed integer guaranteed to be 32 bits on all platforms. +Values of this type can range from G_MININT32 (= -2,147,483,648) +to G_MAXINT32 (= 2,147,483,647).

+

To print or scan values of this type, use +G_GINT32_MODIFIER and/or G_GINT32_FORMAT.

+
+
+
+

G_MININT32

+
#define G_MININT32 ((gint32) -0x80000000)
+
+

The minimum value which can be held in a gint32.

+

Since: 2.4

+
+
+
+

G_MAXINT32

+
#define G_MAXINT32 ((gint32)  0x7fffffff)
+
+

The maximum value which can be held in a gint32.

+

Since: 2.4

+
+
+
+

G_GINT32_MODIFIER

+
#define G_GINT32_MODIFIER ""
+
+

The platform dependent length modifier for conversion specifiers +for scanning and printing values of type gint32 or guint32. It +is a string literal. See also G_GINT16_MODIFIER.

+

Since: 2.4

+
+
+
+

G_GINT32_FORMAT

+
#define G_GINT32_FORMAT "i"
+
+

This is the platform dependent conversion specifier for scanning +and printing values of type gint32. See also G_GINT16_FORMAT.

+
+
+
+

guint32

+
typedef unsigned int guint32;
+
+

An unsigned integer guaranteed to be 32 bits on all platforms. +Values of this type can range from 0 to G_MAXUINT32 (= 4,294,967,295).

+

To print or scan values of this type, use +G_GINT32_MODIFIER and/or G_GUINT32_FORMAT.

+
+
+
+

G_MAXUINT32

+
#define G_MAXUINT32 ((guint32) 0xffffffff)
+
+

The maximum value which can be held in a guint32.

+

Since: 2.4

+
+
+
+

G_GUINT32_FORMAT

+
#define G_GUINT32_FORMAT "u"
+
+

This is the platform dependent conversion specifier for scanning +and printing values of type guint32. See also G_GINT16_FORMAT.

+
+
+
+

gint64

+
typedef signed long gint64;
+
+

A signed integer guaranteed to be 64 bits on all platforms. +Values of this type can range from G_MININT64 +(= -9,223,372,036,854,775,808) to G_MAXINT64 +(= 9,223,372,036,854,775,807).

+

To print or scan values of this type, use +G_GINT64_MODIFIER and/or G_GINT64_FORMAT.

+
+
+
+

G_MININT64

+
#define G_MININT64 ((gint64) G_GINT64_CONSTANT(-0x8000000000000000))
+
+

The minimum value which can be held in a gint64.

+
+
+
+

G_MAXINT64

+
#define G_MAXINT64 G_GINT64_CONSTANT(0x7fffffffffffffff)
+
+

The maximum value which can be held in a gint64.

+
+
+
+

G_GINT64_MODIFIER

+
#define G_GINT64_MODIFIER "l"
+
+

The platform dependent length modifier for conversion specifiers +for scanning and printing values of type gint64 or guint64. +It is a string literal.

+

Some platforms do not support printing 64-bit integers, even +though the types are supported. On such platforms G_GINT64_MODIFIER +is not defined.

+

Since: 2.4

+
+
+
+

G_GINT64_FORMAT

+
#define G_GINT64_FORMAT "li"
+
+

This is the platform dependent conversion specifier for scanning +and printing values of type gint64. See also G_GINT16_FORMAT.

+

Some platforms do not support scanning and printing 64-bit integers, +even though the types are supported. On such platforms G_GINT64_FORMAT +is not defined. Note that scanf() may not support 64-bit integers, even +if G_GINT64_FORMAT is defined. Due to its weak error handling, scanf() +is not recommended for parsing anyway; consider using g_ascii_strtoull() +instead.

+
+
+
+

guint64

+
typedef unsigned long guint64;
+
+

An unsigned integer guaranteed to be 64-bits on all platforms. +Values of this type can range from 0 to G_MAXUINT64 +(= 18,446,744,073,709,551,615).

+

To print or scan values of this type, use +G_GINT64_MODIFIER and/or G_GUINT64_FORMAT.

+
+
+
+

G_MAXUINT64

+
#define G_MAXUINT64 G_GUINT64_CONSTANT(0xffffffffffffffff)
+
+

The maximum value which can be held in a guint64.

+
+
+
+

G_GUINT64_FORMAT

+
#define G_GUINT64_FORMAT "lu"
+
+

This is the platform dependent conversion specifier for scanning +and printing values of type guint64. See also G_GINT16_FORMAT.

+

Some platforms do not support scanning and printing 64-bit integers, +even though the types are supported. On such platforms G_GUINT64_FORMAT +is not defined. Note that scanf() may not support 64-bit integers, even +if G_GINT64_FORMAT is defined. Due to its weak error handling, scanf() +is not recommended for parsing anyway; consider using g_ascii_strtoull() +instead.

+
+
+
+

gfloat

+
typedef float   gfloat;
+
+

Corresponds to the standard C float type. +Values of this type can range from -G_MAXFLOAT to G_MAXFLOAT.

+
+
+
+

G_MINFLOAT

+
#define G_MINFLOAT FLT_MIN
+
+

The minimum positive value which can be held in a gfloat.

+

If you are interested in the smallest value which can be held +in a gfloat, use -G_MAXFLOAT.

+
+
+
+

G_MAXFLOAT

+
#define G_MAXFLOAT FLT_MAX
+
+

The maximum value which can be held in a gfloat.

+
+
+
+

gdouble

+
typedef double  gdouble;
+
+

Corresponds to the standard C double type. +Values of this type can range from -G_MAXDOUBLE to G_MAXDOUBLE.

+
+
+
+

G_MINDOUBLE

+
#define G_MINDOUBLE DBL_MIN
+
+

The minimum positive value which can be held in a gdouble.

+

If you are interested in the smallest value which can be held +in a gdouble, use -G_MAXDOUBLE.

+
+
+
+

G_MAXDOUBLE

+
#define G_MAXDOUBLE DBL_MAX
+
+

The maximum value which can be held in a gdouble.

+
+
+
+

gsize

+
typedef unsigned long gsize;
+
+

An unsigned integer type of the result of the sizeof operator, +corresponding to the size_t type defined in C99. +This type is wide enough to hold the numeric value of a pointer, +so it is usually 32 bit wide on a 32-bit platform and 64 bit wide +on a 64-bit platform. Values of this type can range from 0 to +G_MAXSIZE.

+

To print or scan values of this type, use +G_GSIZE_MODIFIER and/or G_GSIZE_FORMAT.

+
+
+
+

G_MAXSIZE

+
#define G_MAXSIZE G_MAXULONG
+
+

The maximum value which can be held in a gsize.

+

Since: 2.4

+
+
+
+

G_GSIZE_MODIFIER

+
#define G_GSIZE_MODIFIER "l"
+
+

The platform dependent length modifier for conversion specifiers +for scanning and printing values of type gsize. It +is a string literal.

+

Since: 2.6

+
+
+
+

G_GSIZE_FORMAT

+
#define G_GSIZE_FORMAT "lu"
+
+

This is the platform dependent conversion specifier for scanning +and printing values of type gsize. See also G_GINT16_FORMAT.

+

Since: 2.6

+
+
+
+

gssize

+
typedef signed long gssize;
+
+

A signed variant of gsize, corresponding to the +ssize_t defined on most platforms. +Values of this type can range from G_MINSSIZE +to G_MAXSSIZE.

+

To print or scan values of this type, use +G_GSSIZE_MODIFIER and/or G_GSSIZE_FORMAT.

+
+
+
+

G_MINSSIZE

+
#define G_MINSSIZE G_MINLONG
+
+

The minimum value which can be held in a gssize.

+

Since: 2.14

+
+
+
+

G_MAXSSIZE

+
#define G_MAXSSIZE G_MAXLONG
+
+

The maximum value which can be held in a gssize.

+

Since: 2.14

+
+
+
+

G_GSSIZE_MODIFIER

+
#define G_GSSIZE_MODIFIER "l"
+
+

The platform dependent length modifier for conversion specifiers +for scanning and printing values of type gssize. It +is a string literal.

+

Since: 2.6

+
+
+
+

G_GSSIZE_FORMAT

+
#define G_GSSIZE_FORMAT "li"
+
+

This is the platform dependent conversion specifier for scanning +and printing values of type gssize. See also G_GINT16_FORMAT.

+

Since: 2.6

+
+
+
+

goffset

+
typedef gint64 goffset;
+
+

A signed integer type that is used for file offsets, +corresponding to the C99 type off64_t. +Values of this type can range from G_MINOFFSET to +G_MAXOFFSET.

+

To print or scan values of this type, use +G_GOFFSET_MODIFIER and/or G_GOFFSET_FORMAT.

+

Since: 2.14

+
+
+
+

G_MINOFFSET

+
#define G_MINOFFSET G_MININT64
+
+

The minimum value which can be held in a goffset.

+
+
+
+

G_MAXOFFSET

+
#define G_MAXOFFSET G_MAXINT64
+
+

The maximum value which can be held in a goffset.

+
+
+
+

G_GOFFSET_MODIFIER

+
#define G_GOFFSET_MODIFIER      G_GINT64_MODIFIER
+
+

The platform dependent length modifier for conversion specifiers +for scanning and printing values of type goffset. It is a string +literal. See also G_GINT64_MODIFIER.

+

Since: 2.20

+
+
+
+

G_GOFFSET_FORMAT

+
#define G_GOFFSET_FORMAT        G_GINT64_FORMAT
+
+

This is the platform dependent conversion specifier for scanning +and printing values of type goffset. See also G_GINT64_FORMAT.

+

Since: 2.20

+
+
+
+

gintptr

+
typedef signed long gintptr;
+
+

Corresponds to the C99 type intptr_t, +a signed integer type that can hold any pointer.

+

To print or scan values of this type, use +G_GINTPTR_MODIFIER and/or G_GINTPTR_FORMAT.

+

Since: 2.18

+
+
+
+

G_GINTPTR_MODIFIER

+
#define G_GINTPTR_MODIFIER      "l"
+
+

The platform dependent length modifier for conversion specifiers +for scanning and printing values of type gintptr or guintptr. +It is a string literal.

+

Since: 2.22

+
+
+
+

G_GINTPTR_FORMAT

+
#define G_GINTPTR_FORMAT        "li"
+
+

This is the platform dependent conversion specifier for scanning +and printing values of type gintptr.

+

Since: 2.22

+
+
+
+

guintptr

+
typedef unsigned long guintptr;
+
+

Corresponds to the C99 type uintptr_t, +an unsigned integer type that can hold any pointer.

+

To print or scan values of this type, use +G_GINTPTR_MODIFIER and/or G_GUINTPTR_FORMAT.

+

Since: 2.18

+
+
+
+

G_GUINTPTR_FORMAT

+
#define G_GUINTPTR_FORMAT       "lu"
+
+

This is the platform dependent conversion specifier +for scanning and printing values of type guintptr.

+

Since: 2.22

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Bookmark-file-parser.html b/docs/reference/glib/html/glib-Bookmark-file-parser.html new file mode 100644 index 0000000..e9be564 --- /dev/null +++ b/docs/reference/glib/html/glib-Bookmark-file-parser.html @@ -0,0 +1,2417 @@ + + + + +Bookmark file parser: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Bookmark file parser

+

Bookmark file parser — parses files containing bookmarks

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GBookmarkFile * + +g_bookmark_file_new () +
+void + +g_bookmark_file_free () +
+gboolean + +g_bookmark_file_load_from_file () +
+gboolean + +g_bookmark_file_load_from_data () +
+gboolean + +g_bookmark_file_load_from_data_dirs () +
+gchar * + +g_bookmark_file_to_data () +
+gboolean + +g_bookmark_file_to_file () +
+gboolean + +g_bookmark_file_has_item () +
+gboolean + +g_bookmark_file_has_group () +
+gboolean + +g_bookmark_file_has_application () +
+gint + +g_bookmark_file_get_size () +
+gchar ** + +g_bookmark_file_get_uris () +
+gchar * + +g_bookmark_file_get_title () +
+gchar * + +g_bookmark_file_get_description () +
+gchar * + +g_bookmark_file_get_mime_type () +
+gboolean + +g_bookmark_file_get_is_private () +
+gboolean + +g_bookmark_file_get_icon () +
+time_t + +g_bookmark_file_get_added () +
+time_t + +g_bookmark_file_get_modified () +
+time_t + +g_bookmark_file_get_visited () +
+gchar ** + +g_bookmark_file_get_groups () +
+gchar ** + +g_bookmark_file_get_applications () +
+gboolean + +g_bookmark_file_get_app_info () +
+void + +g_bookmark_file_set_title () +
+void + +g_bookmark_file_set_description () +
+void + +g_bookmark_file_set_mime_type () +
+void + +g_bookmark_file_set_is_private () +
+void + +g_bookmark_file_set_icon () +
+void + +g_bookmark_file_set_added () +
+void + +g_bookmark_file_set_groups () +
+void + +g_bookmark_file_set_modified () +
+void + +g_bookmark_file_set_visited () +
+gboolean + +g_bookmark_file_set_app_info () +
+void + +g_bookmark_file_add_group () +
+void + +g_bookmark_file_add_application () +
+gboolean + +g_bookmark_file_remove_group () +
+gboolean + +g_bookmark_file_remove_application () +
+gboolean + +g_bookmark_file_remove_item () +
+gboolean + +g_bookmark_file_move_item () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
 GBookmarkFile
#defineG_BOOKMARK_FILE_ERROR
enumGBookmarkFileError
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GBookmarkFile lets you parse, edit or create files containing bookmarks +to URI, along with some meta-data about the resource pointed by the URI +like its MIME type, the application that is registering the bookmark and +the icon that should be used to represent the bookmark. The data is stored +using the +Desktop Bookmark Specification.

+

The syntax of the bookmark files is described in detail inside the +Desktop Bookmark Specification, here is a quick summary: bookmark +files use a sub-class of the XML Bookmark Exchange Language +specification, consisting of valid UTF-8 encoded XML, under the +<xbel> root element; each bookmark is stored inside a +<bookmark> element, using its URI: no relative paths can +be used inside a bookmark file. The bookmark may have a user defined +title and description, to be used instead of the URI. Under the +<metadata> element, with its owner attribute set to +http://freedesktop.org, is stored the meta-data about a resource +pointed by its URI. The meta-data consists of the resource's MIME +type; the applications that have registered a bookmark; the groups +to which a bookmark belongs to; a visibility flag, used to set the +bookmark as "private" to the applications and groups that has it +registered; the URI and MIME type of an icon, to be used when +displaying the bookmark inside a GUI.

+

Here is an example of a bookmark file: +bookmarks.xbel

+

A bookmark file might contain more than one bookmark; each bookmark +is accessed through its URI.

+

The important caveat of bookmark files is that when you add a new +bookmark you must also add the application that is registering it, using +g_bookmark_file_add_application() or g_bookmark_file_set_app_info(). +If a bookmark has no applications then it won't be dumped when creating +the on disk representation, using g_bookmark_file_to_data() or +g_bookmark_file_to_file().

+

The GBookmarkFile parser was added in GLib 2.12.

+
+
+

Functions

+
+

g_bookmark_file_new ()

+
GBookmarkFile *
+g_bookmark_file_new (void);
+

Creates a new empty GBookmarkFile object.

+

Use g_bookmark_file_load_from_file(), g_bookmark_file_load_from_data() +or g_bookmark_file_load_from_data_dirs() to read an existing bookmark +file.

+
+

Returns

+

an empty GBookmarkFile

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_free ()

+
void
+g_bookmark_file_free (GBookmarkFile *bookmark);
+

Frees a GBookmarkFile.

+
+

Parameters

+
+++++ + + + + + +

bookmark

a GBookmarkFile

 
+
+

Since: 2.12

+
+
+
+

g_bookmark_file_load_from_file ()

+
gboolean
+g_bookmark_file_load_from_file (GBookmarkFile *bookmark,
+                                const gchar *filename,
+                                GError **error);
+

Loads a desktop bookmark file into an empty GBookmarkFile structure. +If the file could not be loaded then error + is set to either a GFileError +or GBookmarkFileError.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

an empty GBookmarkFile struct

 

filename

the path of a filename to load, in the GLib file name encoding

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE if a desktop bookmark file could be loaded

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_load_from_data ()

+
gboolean
+g_bookmark_file_load_from_data (GBookmarkFile *bookmark,
+                                const gchar *data,
+                                gsize length,
+                                GError **error);
+

Loads a bookmark file from memory into an empty GBookmarkFile +structure. If the object cannot be created then error + is set to a +GBookmarkFileError.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

bookmark

an empty GBookmarkFile struct

 

data

desktop bookmarks loaded in memory

 

length

the length of data +in bytes

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE if a desktop bookmark could be loaded.

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_load_from_data_dirs ()

+
gboolean
+g_bookmark_file_load_from_data_dirs (GBookmarkFile *bookmark,
+                                     const gchar *file,
+                                     gchar **full_path,
+                                     GError **error);
+

This function looks for a desktop bookmark file named file + in the +paths returned from g_get_user_data_dir() and g_get_system_data_dirs(), +loads the file into bookmark + and returns the file's full path in +full_path +. If the file could not be loaded then an error is +set to either a GFileError or GBookmarkFileError.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

file

a relative path to a filename to open and parse

 

full_path

return location for a string containing the full path +of the file, or NULL.

[allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE if a key file could be loaded, FALSE otherwise

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_to_data ()

+
gchar *
+g_bookmark_file_to_data (GBookmarkFile *bookmark,
+                         gsize *length,
+                         GError **error);
+

This function outputs bookmark + as a string.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

length

return location for the length of the returned string, or NULL.

[allow-none][out]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a newly allocated string holding +the contents of the GBookmarkFile

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_to_file ()

+
gboolean
+g_bookmark_file_to_file (GBookmarkFile *bookmark,
+                         const gchar *filename,
+                         GError **error);
+

This function outputs bookmark + into a file. The write process is +guaranteed to be atomic by using g_file_set_contents() internally.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

filename

path of the output file

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE if the file was successfully written.

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_has_item ()

+
gboolean
+g_bookmark_file_has_item (GBookmarkFile *bookmark,
+                          const gchar *uri);
+

Looks whether the desktop bookmark has an item with its URI set to uri +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 
+
+
+

Returns

+

TRUE if uri +is inside bookmark +, FALSE otherwise

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_has_group ()

+
gboolean
+g_bookmark_file_has_group (GBookmarkFile *bookmark,
+                           const gchar *uri,
+                           const gchar *group,
+                           GError **error);
+

Checks whether group + appears in the list of groups to which +the bookmark for uri + belongs to.

+

In the event the URI cannot be found, FALSE is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

group

the group name to be searched

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE if group +was found.

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_has_application ()

+
gboolean
+g_bookmark_file_has_application (GBookmarkFile *bookmark,
+                                 const gchar *uri,
+                                 const gchar *name,
+                                 GError **error);
+

Checks whether the bookmark for uri + inside bookmark + has been +registered by application name +.

+

In the event the URI cannot be found, FALSE is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

name

the name of the application

 

error

return location for a GError or NULL

 
+
+
+

Returns

+

TRUE if the application name +was found

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_get_size ()

+
gint
+g_bookmark_file_get_size (GBookmarkFile *bookmark);
+

Gets the number of bookmarks inside bookmark +.

+
+

Parameters

+
+++++ + + + + + +

bookmark

a GBookmarkFile

 
+
+
+

Returns

+

the number of bookmarks

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_get_uris ()

+
gchar **
+g_bookmark_file_get_uris (GBookmarkFile *bookmark,
+                          gsize *length);
+

Returns all URIs of the bookmarks in the bookmark file bookmark +. +The array of returned URIs will be NULL-terminated, so length + may +optionally be NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

length

return location for the number of returned URIs, or NULL.

[allow-none][out]
+
+
+

Returns

+

a newly allocated NULL-terminated array of strings. +Use g_strfreev() to free it.

+

[array length=length][transfer full]

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_get_title ()

+
gchar *
+g_bookmark_file_get_title (GBookmarkFile *bookmark,
+                           const gchar *uri,
+                           GError **error);
+

Returns the title of the bookmark for uri +.

+

If uri + is NULL, the title of bookmark + is returned.

+

In the event the URI cannot be found, NULL is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI or NULL.

[allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a newly allocated string or NULL if the specified +URI cannot be found.

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_get_description ()

+
gchar *
+g_bookmark_file_get_description (GBookmarkFile *bookmark,
+                                 const gchar *uri,
+                                 GError **error);
+

Retrieves the description of the bookmark for uri +.

+

In the event the URI cannot be found, NULL is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a newly allocated string or NULL if the specified +URI cannot be found.

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_get_mime_type ()

+
gchar *
+g_bookmark_file_get_mime_type (GBookmarkFile *bookmark,
+                               const gchar *uri,
+                               GError **error);
+

Retrieves the MIME type of the resource pointed by uri +.

+

In the event the URI cannot be found, NULL is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND. In the +event that the MIME type cannot be found, NULL is returned and +error + is set to G_BOOKMARK_FILE_ERROR_INVALID_VALUE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a newly allocated string or NULL if the specified +URI cannot be found.

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_get_is_private ()

+
gboolean
+g_bookmark_file_get_is_private (GBookmarkFile *bookmark,
+                                const gchar *uri,
+                                GError **error);
+

Gets whether the private flag of the bookmark for uri + is set.

+

In the event the URI cannot be found, FALSE is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND. In the +event that the private flag cannot be found, FALSE is returned and +error + is set to G_BOOKMARK_FILE_ERROR_INVALID_VALUE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE if the private flag is set, FALSE otherwise.

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_get_icon ()

+
gboolean
+g_bookmark_file_get_icon (GBookmarkFile *bookmark,
+                          const gchar *uri,
+                          gchar **href,
+                          gchar **mime_type,
+                          GError **error);
+

Gets the icon of the bookmark for uri +.

+

In the event the URI cannot be found, FALSE is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

href

return location for the icon's location or NULL.

[allow-none][out]

mime_type

return location for the icon's MIME type or NULL.

[allow-none][out]

error

return location for a GError or NULL

 
+
+
+

Returns

+

TRUE if the icon for the bookmark for the URI was found. +You should free the returned strings.

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_get_added ()

+
time_t
+g_bookmark_file_get_added (GBookmarkFile *bookmark,
+                           const gchar *uri,
+                           GError **error);
+

Gets the time the bookmark for uri + was added to bookmark +

+

In the event the URI cannot be found, -1 is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a timestamp

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_get_modified ()

+
time_t
+g_bookmark_file_get_modified (GBookmarkFile *bookmark,
+                              const gchar *uri,
+                              GError **error);
+

Gets the time when the bookmark for uri + was last modified.

+

In the event the URI cannot be found, -1 is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a timestamp

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_get_visited ()

+
time_t
+g_bookmark_file_get_visited (GBookmarkFile *bookmark,
+                             const gchar *uri,
+                             GError **error);
+

Gets the time the bookmark for uri + was last visited.

+

In the event the URI cannot be found, -1 is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a timestamp.

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_get_groups ()

+
gchar **
+g_bookmark_file_get_groups (GBookmarkFile *bookmark,
+                            const gchar *uri,
+                            gsize *length,
+                            GError **error);
+

Retrieves the list of group names of the bookmark for uri +.

+

In the event the URI cannot be found, NULL is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.

+

The returned array is NULL terminated, so length + may optionally +be NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

length

return location for the length of the returned string, or NULL.

[allow-none][out]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a newly allocated NULL-terminated array of group names. +Use g_strfreev() to free it.

+

[array length=length][transfer full]

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_get_applications ()

+
gchar **
+g_bookmark_file_get_applications (GBookmarkFile *bookmark,
+                                  const gchar *uri,
+                                  gsize *length,
+                                  GError **error);
+

Retrieves the names of the applications that have registered the +bookmark for uri +.

+

In the event the URI cannot be found, NULL is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

length

return location of the length of the returned list, or NULL.

[allow-none][out]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a newly allocated NULL-terminated array of strings. +Use g_strfreev() to free it.

+

[array length=length][transfer full]

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_get_app_info ()

+
gboolean
+g_bookmark_file_get_app_info (GBookmarkFile *bookmark,
+                              const gchar *uri,
+                              const gchar *name,
+                              gchar **exec,
+                              guint *count,
+                              time_t *stamp,
+                              GError **error);
+

Gets the registration informations of app_name + for the bookmark for +uri +. See g_bookmark_file_set_app_info() for more informations about +the returned data.

+

The string returned in app_exec + must be freed.

+

In the event the URI cannot be found, FALSE is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND. In the +event that no application with name app_name + has registered a bookmark +for uri +, FALSE is returned and error is set to +G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED. In the event that unquoting +the command line fails, an error of the G_SHELL_ERROR domain is +set and FALSE is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

name

an application's name

 

exec

return location for the command line of the application, or NULL.

[allow-none][out]

count

return location for the registration count, or NULL.

[allow-none][out]

stamp

return location for the last registration time, or NULL.

[allow-none][out]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE on success.

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_set_title ()

+
void
+g_bookmark_file_set_title (GBookmarkFile *bookmark,
+                           const gchar *uri,
+                           const gchar *title);
+

Sets title + as the title of the bookmark for uri + inside the +bookmark file bookmark +.

+

If uri + is NULL, the title of bookmark + is set.

+

If a bookmark for uri + cannot be found then it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI or NULL.

[allow-none]

title

a UTF-8 encoded string

 
+
+

Since: 2.12

+
+
+
+

g_bookmark_file_set_description ()

+
void
+g_bookmark_file_set_description (GBookmarkFile *bookmark,
+                                 const gchar *uri,
+                                 const gchar *description);
+

Sets description + as the description of the bookmark for uri +.

+

If uri + is NULL, the description of bookmark + is set.

+

If a bookmark for uri + cannot be found then it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI or NULL.

[allow-none]

description

a string

 
+
+

Since: 2.12

+
+
+
+

g_bookmark_file_set_mime_type ()

+
void
+g_bookmark_file_set_mime_type (GBookmarkFile *bookmark,
+                               const gchar *uri,
+                               const gchar *mime_type);
+

Sets mime_type + as the MIME type of the bookmark for uri +.

+

If a bookmark for uri + cannot be found then it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

mime_type

a MIME type

 
+
+

Since: 2.12

+
+
+
+

g_bookmark_file_set_is_private ()

+
void
+g_bookmark_file_set_is_private (GBookmarkFile *bookmark,
+                                const gchar *uri,
+                                gboolean is_private);
+

Sets the private flag of the bookmark for uri +.

+

If a bookmark for uri + cannot be found then it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

is_private

TRUE if the bookmark should be marked as private

 
+
+

Since: 2.12

+
+
+
+

g_bookmark_file_set_icon ()

+
void
+g_bookmark_file_set_icon (GBookmarkFile *bookmark,
+                          const gchar *uri,
+                          const gchar *href,
+                          const gchar *mime_type);
+

Sets the icon for the bookmark for uri +. If href + is NULL, unsets +the currently set icon. href + can either be a full URL for the icon +file or the icon name following the Icon Naming specification.

+

If no bookmark for uri + is found one is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

href

the URI of the icon for the bookmark, or NULL.

[allow-none]

mime_type

the MIME type of the icon for the bookmark

 
+
+

Since: 2.12

+
+
+
+

g_bookmark_file_set_added ()

+
void
+g_bookmark_file_set_added (GBookmarkFile *bookmark,
+                           const gchar *uri,
+                           time_t added);
+

Sets the time the bookmark for uri + was added into bookmark +.

+

If no bookmark for uri + is found then it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

added

a timestamp or -1 to use the current time

 
+
+

Since: 2.12

+
+
+
+

g_bookmark_file_set_groups ()

+
void
+g_bookmark_file_set_groups (GBookmarkFile *bookmark,
+                            const gchar *uri,
+                            const gchar **groups,
+                            gsize length);
+

Sets a list of group names for the item with URI uri +. Each previously +set group name list is removed.

+

If uri + cannot be found then an item for it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

an item's URI

 

groups

an array of group names, or NULL to remove all groups.

[allow-none]

length

number of group name values in groups +

 
+
+

Since: 2.12

+
+
+
+

g_bookmark_file_set_modified ()

+
void
+g_bookmark_file_set_modified (GBookmarkFile *bookmark,
+                              const gchar *uri,
+                              time_t modified);
+

Sets the last time the bookmark for uri + was last modified.

+

If no bookmark for uri + is found then it is created.

+

The "modified" time should only be set when the bookmark's meta-data +was actually changed. Every function of GBookmarkFile that +modifies a bookmark also changes the modification time, except for +g_bookmark_file_set_visited().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

modified

a timestamp or -1 to use the current time

 
+
+

Since: 2.12

+
+
+
+

g_bookmark_file_set_visited ()

+
void
+g_bookmark_file_set_visited (GBookmarkFile *bookmark,
+                             const gchar *uri,
+                             time_t visited);
+

Sets the time the bookmark for uri + was last visited.

+

If no bookmark for uri + is found then it is created.

+

The "visited" time should only be set if the bookmark was launched, +either using the command line retrieved by g_bookmark_file_get_app_info() +or by the default application for the bookmark's MIME type, retrieved +using g_bookmark_file_get_mime_type(). Changing the "visited" time +does not affect the "modified" time.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

visited

a timestamp or -1 to use the current time

 
+
+

Since: 2.12

+
+
+
+

g_bookmark_file_set_app_info ()

+
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);
+

Sets the meta-data of application name + inside the list of +applications that have registered a bookmark for uri + inside +bookmark +.

+

You should rarely use this function; use g_bookmark_file_add_application() +and g_bookmark_file_remove_application() instead.

+

name + can be any UTF-8 encoded string used to identify an +application. +exec + can have one of these two modifiers: "%f", which will +be expanded as the local file name retrieved from the bookmark's +URI; "%u", which will be expanded as the bookmark's URI. +The expansion is done automatically when retrieving the stored +command line using the g_bookmark_file_get_app_info() function. +count + is the number of times the application has registered the +bookmark; if is < 0, the current registration count will be increased +by one, if is 0, the application with name + will be removed from +the list of registered applications. +stamp + is the Unix time of the last registration; if it is -1, the +current time will be used.

+

If you try to remove an application by setting its registration count to +zero, and no bookmark for uri + is found, FALSE is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND; similarly, +in the event that no application name + has registered a bookmark +for uri +, FALSE is returned and error is set to +G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED. Otherwise, if no bookmark +for uri + is found, one is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

name

an application's name

 

exec

an application's command line

 

count

the number of registrations done for this application

 

stamp

the time of the last registration for this application

 

error

return location for a GError or NULL

 
+
+
+

Returns

+

TRUE if the application's meta-data was successfully +changed.

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_add_group ()

+
void
+g_bookmark_file_add_group (GBookmarkFile *bookmark,
+                           const gchar *uri,
+                           const gchar *group);
+

Adds group + to the list of groups to which the bookmark for uri + +belongs to.

+

If no bookmark for uri + is found then it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

group

the group name to be added

 
+
+

Since: 2.12

+
+
+
+

g_bookmark_file_add_application ()

+
void
+g_bookmark_file_add_application (GBookmarkFile *bookmark,
+                                 const gchar *uri,
+                                 const gchar *name,
+                                 const gchar *exec);
+

Adds the application with name + and exec + to the list of +applications that have registered a bookmark for uri + into +bookmark +.

+

Every bookmark inside a GBookmarkFile must have at least an +application registered. Each application must provide a name, a +command line useful for launching the bookmark, the number of times +the bookmark has been registered by the application and the last +time the application registered this bookmark.

+

If name + is NULL, the name of the application will be the +same returned by g_get_application_name(); if exec + is NULL, the +command line will be a composition of the program name as +returned by g_get_prgname() and the "%u" modifier, which will be +expanded to the bookmark's URI.

+

This function will automatically take care of updating the +registrations count and timestamping in case an application +with the same name + had already registered a bookmark for +uri + inside bookmark +.

+

If no bookmark for uri + is found, one is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

name

the name of the application registering the bookmark +or NULL.

[allow-none]

exec

command line to be used to launch the bookmark or NULL.

[allow-none]
+
+

Since: 2.12

+
+
+
+

g_bookmark_file_remove_group ()

+
gboolean
+g_bookmark_file_remove_group (GBookmarkFile *bookmark,
+                              const gchar *uri,
+                              const gchar *group,
+                              GError **error);
+

Removes group + from the list of groups to which the bookmark +for uri + belongs to.

+

In the event the URI cannot be found, FALSE is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND. +In the event no group was defined, FALSE is returned and +error + is set to G_BOOKMARK_FILE_ERROR_INVALID_VALUE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

group

the group name to be removed

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE if group +was successfully removed.

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_remove_application ()

+
gboolean
+g_bookmark_file_remove_application (GBookmarkFile *bookmark,
+                                    const gchar *uri,
+                                    const gchar *name,
+                                    GError **error);
+

Removes application registered with name + from the list of applications +that have registered a bookmark for uri + inside bookmark +.

+

In the event the URI cannot be found, FALSE is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND. +In the event that no application with name app_name + has registered +a bookmark for uri +, FALSE is returned and error is set to +G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

name

the name of the application

 

error

return location for a GError or NULL

 
+
+
+

Returns

+

TRUE if the application was successfully removed.

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_remove_item ()

+
gboolean
+g_bookmark_file_remove_item (GBookmarkFile *bookmark,
+                             const gchar *uri,
+                             GError **error);
+

Removes the bookmark for uri + from the bookmark file bookmark +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

uri

a valid URI

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE if the bookmark was removed successfully.

+
+

Since: 2.12

+
+
+
+

g_bookmark_file_move_item ()

+
gboolean
+g_bookmark_file_move_item (GBookmarkFile *bookmark,
+                           const gchar *old_uri,
+                           const gchar *new_uri,
+                           GError **error);
+

Changes the URI of a bookmark item from old_uri + to new_uri +. Any +existing bookmark for new_uri + will be overwritten. If new_uri + is +NULL, then the bookmark is removed.

+

In the event the URI cannot be found, FALSE is returned and +error + is set to G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

bookmark

a GBookmarkFile

 

old_uri

a valid URI

 

new_uri

a valid URI, or NULL.

[allow-none]

error

return location for a GError or NULL

 
+
+
+

Returns

+

TRUE if the URI was successfully changed

+
+

Since: 2.12

+
+
+
+

Types and Values

+
+

GBookmarkFile

+
typedef struct _GBookmarkFile GBookmarkFile;
+

The GBookmarkFile structure contains only +private data and should not be directly accessed.

+
+
+
+

G_BOOKMARK_FILE_ERROR

+
#define G_BOOKMARK_FILE_ERROR (g_bookmark_file_error_quark ())
+
+

Error domain for bookmark file parsing. +Errors in this domain will be from the GBookmarkFileError +enumeration. See GError for information on error domains.

+
+
+
+

enum GBookmarkFileError

+

Error codes returned by bookmark file parsing.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

+
 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Bounds-checked-integer-arithmetic.html b/docs/reference/glib/html/glib-Bounds-checked-integer-arithmetic.html new file mode 100644 index 0000000..d063793 --- /dev/null +++ b/docs/reference/glib/html/glib-Bounds-checked-integer-arithmetic.html @@ -0,0 +1,384 @@ + + + + +Bounds-checking integer arithmetic: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Bounds-checking integer arithmetic

+

Bounds-checking integer arithmetic — a set of helpers for performing checked integer arithmetic

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define +g_uint_checked_add() +
#define +g_uint_checked_mul() +
#define +g_uint64_checked_add() +
#define +g_uint64_checked_mul() +
#define +g_size_checked_add() +
#define +g_size_checked_mul() +
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GLib offers a set of macros for doing additions and multiplications +of unsigned integers, with checks for overflows.

+

The helpers all have three arguments. A pointer to the destination +is always the first argument and the operands to the operation are +the other two.

+

Following standard GLib convention, the helpers return TRUE in case +of success (ie: no overflow).

+

The helpers may be macros, normal functions or inlines. They may be +implemented with inline assembly or compiler intrinsics where +available.

+
+
+

Functions

+
+

g_uint_checked_add()

+
#define             g_uint_checked_add(dest, a, b)
+

Performs a checked addition of a + and b +, storing the result in +dest +.

+

If the operation is successful, TRUE is returned. If the operation +overflows then the state of dest + is undefined and FALSE is +returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dest

a pointer to the guint destination

 

a

the guint left operand

 

b

the guint right operand

 
+
+
+

Returns

+

TRUE if there was no overflow

+
+

Since: 2.48

+
+
+
+

g_uint_checked_mul()

+
#define             g_uint_checked_mul(dest, a, b)
+

Performs a checked multiplication of a + and b +, storing the result in +dest +.

+

If the operation is successful, TRUE is returned. If the operation +overflows then the state of dest + is undefined and FALSE is +returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dest

a pointer to the guint destination

 

a

the guint left operand

 

b

the guint right operand

 
+
+
+

Returns

+

TRUE if there was no overflow

+
+

Since: 2.48

+
+
+
+

g_uint64_checked_add()

+
#define             g_uint64_checked_add(dest, a, b)
+

Performs a checked addition of a + and b +, storing the result in +dest +.

+

If the operation is successful, TRUE is returned. If the operation +overflows then the state of dest + is undefined and FALSE is +returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dest

a pointer to the guint64 destination

 

a

the guint64 left operand

 

b

the guint64 right operand

 
+
+
+

Returns

+

TRUE if there was no overflow

+
+

Since: 2.48

+
+
+
+

g_uint64_checked_mul()

+
#define             g_uint64_checked_mul(dest, a, b)
+

Performs a checked multiplication of a + and b +, storing the result in +dest +.

+

If the operation is successful, TRUE is returned. If the operation +overflows then the state of dest + is undefined and FALSE is +returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dest

a pointer to the guint64 destination

 

a

the guint64 left operand

 

b

the guint64 right operand

 
+
+
+

Returns

+

TRUE if there was no overflow

+
+

Since: 2.48

+
+
+
+

g_size_checked_add()

+
#define             g_size_checked_add(dest, a, b)
+

Performs a checked addition of a + and b +, storing the result in +dest +.

+

If the operation is successful, TRUE is returned. If the operation +overflows then the state of dest + is undefined and FALSE is +returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dest

a pointer to the gsize destination

 

a

the gsize left operand

 

b

the gsize right operand

 
+
+
+

Returns

+

TRUE if there was no overflow

+
+

Since: 2.48

+
+
+
+

g_size_checked_mul()

+
#define             g_size_checked_mul(dest, a, b)
+

Performs a checked multiplication of a + and b +, storing the result in +dest +.

+

If the operation is successful, TRUE is returned. If the operation +overflows then the state of dest + is undefined and FALSE is +returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dest

a pointer to the gsize destination

 

a

the gsize left operand

 

b

the gsize right operand

 
+
+
+

Returns

+

TRUE if there was no overflow

+
+

Since: 2.48

+
+
+
+

Types and Values

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Byte-Arrays.html b/docs/reference/glib/html/glib-Byte-Arrays.html new file mode 100644 index 0000000..109b2cc --- /dev/null +++ b/docs/reference/glib/html/glib-Byte-Arrays.html @@ -0,0 +1,1499 @@ + + + + +Byte Arrays: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Byte Arrays

+

Byte Arrays — arrays of bytes

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GByteArray * + +g_byte_array_new () +
+GByteArray * + +g_byte_array_new_take () +
+GByteArray * + +g_byte_array_sized_new () +
+GByteArray * + +g_byte_array_ref () +
+void + +g_byte_array_unref () +
+GByteArray * + +g_byte_array_append () +
+GByteArray * + +g_byte_array_prepend () +
+GByteArray * + +g_byte_array_remove_index () +
+GByteArray * + +g_byte_array_remove_index_fast () +
+GByteArray * + +g_byte_array_remove_range () +
+void + +g_byte_array_sort () +
+void + +g_byte_array_sort_with_data () +
+GByteArray * + +g_byte_array_set_size () +
+guint8 * + +g_byte_array_free () +
+GBytes * + +g_byte_array_free_to_bytes () +
+GBytes * + +g_bytes_new () +
+GBytes * + +g_bytes_new_take () +
+GBytes * + +g_bytes_new_static () +
+GBytes * + +g_bytes_new_with_free_func () +
+GBytes * + +g_bytes_new_from_bytes () +
+gconstpointer + +g_bytes_get_data () +
+gsize + +g_bytes_get_size () +
+guint + +g_bytes_hash () +
+gboolean + +g_bytes_equal () +
+gint + +g_bytes_compare () +
+GBytes * + +g_bytes_ref () +
+void + +g_bytes_unref () +
+gpointer + +g_bytes_unref_to_data () +
+GByteArray * + +g_bytes_unref_to_array () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
structGByteArray
 GBytes
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GByteArray is a mutable array of bytes based on GArray, to provide arrays +of bytes which grow automatically as elements are added.

+

To create a new GByteArray use g_byte_array_new(). To add elements to a +GByteArray, use g_byte_array_append(), and g_byte_array_prepend().

+

To set the size of a GByteArray, use g_byte_array_set_size().

+

To free a GByteArray, use g_byte_array_free().

+

An example for using a GByteArray:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
GByteArray *gbarray;
+gint i;
+
+gbarray = g_byte_array_new ();
+for (i = 0; i < 10000; i++)
+  g_byte_array_append (gbarray, (guint8*) "abcd", 4);
+
+for (i = 0; i < 10000; i++)
+  {
+    g_assert (gbarray->data[4*i] == 'a');
+    g_assert (gbarray->data[4*i+1] == 'b');
+    g_assert (gbarray->data[4*i+2] == 'c');
+    g_assert (gbarray->data[4*i+3] == 'd');
+  }
+
+g_byte_array_free (gbarray, TRUE);
+
+ +

+

See GBytes if you are interested in an immutable object representing a +sequence of bytes.

+
+
+

Functions

+
+

g_byte_array_new ()

+
GByteArray *
+g_byte_array_new (void);
+

Creates a new GByteArray with a reference count of 1.

+
+

Returns

+

the new GByteArray.

+

[transfer full]

+
+
+
+
+

g_byte_array_new_take ()

+
GByteArray *
+g_byte_array_new_take (guint8 *data,
+                       gsize len);
+

Create byte array containing the data. The data will be owned by the array +and will be freed with g_free(), i.e. it could be allocated using g_strdup().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

data

byte data for the array.

[transfer full][array length=len]

len

length of data +

 
+
+
+

Returns

+

a new GByteArray.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_byte_array_sized_new ()

+
GByteArray *
+g_byte_array_sized_new (guint reserved_size);
+

Creates a new GByteArray with reserved_size + bytes preallocated. +This avoids frequent reallocation, if you are going to add many +bytes to the array. Note however that the size of the array is still +0.

+
+

Parameters

+
+++++ + + + + + +

reserved_size

number of bytes preallocated

 
+
+
+

Returns

+

the new GByteArray

+
+
+
+
+

g_byte_array_ref ()

+
GByteArray *
+g_byte_array_ref (GByteArray *array);
+

Atomically increments the reference count of array + by one. +This function is thread-safe and may be called from any thread.

+
+

Parameters

+
+++++ + + + + + +

array

A GByteArray

 
+
+
+

Returns

+

The passed in GByteArray

+
+

Since: 2.22

+
+
+
+

g_byte_array_unref ()

+
void
+g_byte_array_unref (GByteArray *array);
+

Atomically decrements the reference count of array + by one. If the +reference count drops to 0, all memory allocated by the array is +released. This function is thread-safe and may be called from any +thread.

+
+

Parameters

+
+++++ + + + + + +

array

A GByteArray

 
+
+

Since: 2.22

+
+
+
+

g_byte_array_append ()

+
GByteArray *
+g_byte_array_append (GByteArray *array,
+                     const guint8 *data,
+                     guint len);
+

Adds the given bytes to the end of the GByteArray. +The array will grow in size automatically if necessary.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

array

a GByteArray

 

data

the byte data to be added

 

len

the number of bytes to add

 
+
+
+

Returns

+

the GByteArray

+
+
+
+
+

g_byte_array_prepend ()

+
GByteArray *
+g_byte_array_prepend (GByteArray *array,
+                      const guint8 *data,
+                      guint len);
+

Adds the given data to the start of the GByteArray. +The array will grow in size automatically if necessary.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

array

a GByteArray

 

data

the byte data to be added

 

len

the number of bytes to add

 
+
+
+

Returns

+

the GByteArray

+
+
+
+
+

g_byte_array_remove_index ()

+
GByteArray *
+g_byte_array_remove_index (GByteArray *array,
+                           guint index_);
+

Removes the byte at the given index from a GByteArray. +The following bytes are moved down one place.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GByteArray

 

index_

the index of the byte to remove

 
+
+
+

Returns

+

the GByteArray

+
+
+
+
+

g_byte_array_remove_index_fast ()

+
GByteArray *
+g_byte_array_remove_index_fast (GByteArray *array,
+                                guint index_);
+

Removes the byte at the given index from a GByteArray. The last +element in the array is used to fill in the space, so this function +does not preserve the order of the GByteArray. But it is faster +than g_byte_array_remove_index().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GByteArray

 

index_

the index of the byte to remove

 
+
+
+

Returns

+

the GByteArray

+
+
+
+
+

g_byte_array_remove_range ()

+
GByteArray *
+g_byte_array_remove_range (GByteArray *array,
+                           guint index_,
+                           guint length);
+

Removes the given number of bytes starting at the given index from a +GByteArray. The following elements are moved to close the gap.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

array

a GByteArray +

 

index_

the index of the first byte to remove

 

length

the number of bytes to remove

 
+
+
+

Returns

+

the GByteArray

+
+

Since: 2.4

+
+
+
+

g_byte_array_sort ()

+
void
+g_byte_array_sort (GByteArray *array,
+                   GCompareFunc compare_func);
+

Sorts a byte array, using compare_func + which should be a +qsort()-style comparison function (returns less than zero for first +arg is less than second arg, zero for equal, greater than zero if +first arg is greater than second arg).

+

If two array elements compare equal, their order in the sorted array +is undefined. If you want equal elements to keep their order (i.e. +you want a stable sort) you can write a comparison function that, +if two elements would otherwise compare equal, compares them by +their addresses.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GByteArray

 

compare_func

comparison function

 
+
+
+
+
+

g_byte_array_sort_with_data ()

+
void
+g_byte_array_sort_with_data (GByteArray *array,
+                             GCompareDataFunc compare_func,
+                             gpointer user_data);
+

Like g_byte_array_sort(), but the comparison function takes an extra +user data argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

array

a GByteArray

 

compare_func

comparison function

 

user_data

data to pass to compare_func +

 
+
+
+
+
+

g_byte_array_set_size ()

+
GByteArray *
+g_byte_array_set_size (GByteArray *array,
+                       guint length);
+

Sets the size of the GByteArray, expanding it if necessary.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GByteArray

 

length

the new size of the GByteArray

 
+
+
+

Returns

+

the GByteArray

+
+
+
+
+

g_byte_array_free ()

+
guint8 *
+g_byte_array_free (GByteArray *array,
+                   gboolean free_segment);
+

Frees the memory allocated by the GByteArray. If free_segment + is +TRUE it frees the actual byte data. If the reference count of +array + is greater than one, the GByteArray wrapper is preserved but +the size of array + will be set to zero.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GByteArray

 

free_segment

if TRUE the actual byte data is freed as well

 
+
+
+

Returns

+

the element data if free_segment +is FALSE, otherwise +NULL. The element data should be freed using g_free().

+
+
+
+
+

g_byte_array_free_to_bytes ()

+
GBytes *
+g_byte_array_free_to_bytes (GByteArray *array);
+

Transfers the data from the GByteArray into a new immutable GBytes.

+

The GByteArray is freed unless the reference count of array + is greater +than one, the GByteArray wrapper is preserved but the size of array + +will be set to zero.

+

This is identical to using g_bytes_new_take() and g_byte_array_free() +together.

+
+

Parameters

+
+++++ + + + + + +

array

a GByteArray.

[transfer full]
+
+
+

Returns

+

a new immutable GBytes representing same +byte data that was in the array.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_bytes_new ()

+
GBytes *
+g_bytes_new (gconstpointer data,
+             gsize size);
+

Creates a new GBytes from data +.

+

data + is copied. If size + is 0, data + may be NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

data

the data to be used for the bytes.

[transfer none][array length=size][element-type guint8][nullable]

size

the size of data +

 
+
+
+

Returns

+

a new GBytes.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_bytes_new_take ()

+
GBytes *
+g_bytes_new_take (gpointer data,
+                  gsize size);
+

Creates a new GBytes from data +.

+

After this call, data + belongs to the bytes and may no longer be +modified by the caller. g_free() will be called on data + when the +bytes is no longer in use. Because of this data + must have been created by +a call to g_malloc(), g_malloc0() or g_realloc() or by one of the many +functions that wrap these calls (such as g_new(), g_strdup(), etc).

+

For creating GBytes with memory from other allocators, see +g_bytes_new_with_free_func().

+

data + may be NULL if size + is 0.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

data

the data to be used for the bytes.

[transfer full][array length=size][element-type guint8][nullable]

size

the size of data +

 
+
+
+

Returns

+

a new GBytes.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_bytes_new_static ()

+
GBytes *
+g_bytes_new_static (gconstpointer data,
+                    gsize size);
+

Creates a new GBytes from static data.

+

data + must be static (ie: never modified or freed). It may be NULL if size + +is 0.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

data

the data to be used for the bytes.

[transfer full][array length=size][element-type guint8][nullable]

size

the size of data +

 
+
+
+

Returns

+

a new GBytes.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_bytes_new_with_free_func ()

+
GBytes *
+g_bytes_new_with_free_func (gconstpointer data,
+                            gsize size,
+                            GDestroyNotify free_func,
+                            gpointer user_data);
+

Creates a GBytes from data +.

+

When the last reference is dropped, free_func + will be called with the +user_data + argument.

+

data + must not be modified after this call is made until free_func + has +been called to indicate that the bytes is no longer in use.

+

data + may be NULL if size + is 0.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

data

the data to be used for the bytes.

[array length=size][element-type guint8][nullable]

size

the size of data +

 

free_func

the function to call to release the data

 

user_data

data to pass to free_func +

 
+
+
+

Returns

+

a new GBytes.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_bytes_new_from_bytes ()

+
GBytes *
+g_bytes_new_from_bytes (GBytes *bytes,
+                        gsize offset,
+                        gsize length);
+

Creates a GBytes which is a subsection of another GBytes. The offset + + +length + may not be longer than the size of bytes +.

+

A reference to bytes + will be held by the newly created GBytes until +the byte data is no longer needed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

bytes

a GBytes

 

offset

offset which subsection starts at

 

length

length of subsection

 
+
+
+

Returns

+

a new GBytes.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_bytes_get_data ()

+
gconstpointer
+g_bytes_get_data (GBytes *bytes,
+                  gsize *size);
+

Get the byte data in the GBytes. This data should not be modified.

+

This function will always return the same pointer for a given GBytes.

+

NULL may be returned if size + is 0. This is not guaranteed, as the GBytes +may represent an empty string with data + non-NULL and size + as 0. NULL will +not be returned if size + is non-zero.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

bytes

a GBytes

 

size

location to return size of byte data.

[out][optional]
+
+
+

Returns

+

a pointer to the byte data, or NULL.

+

[transfer none][array length=size][element-type guint8][nullable]

+
+

Since: 2.32

+
+
+
+

g_bytes_get_size ()

+
gsize
+g_bytes_get_size (GBytes *bytes);
+

Get the size of the byte data in the GBytes.

+

This function will always return the same value for a given GBytes.

+
+

Parameters

+
+++++ + + + + + +

bytes

a GBytes

 
+
+
+

Returns

+

the size

+
+

Since: 2.32

+
+
+
+

g_bytes_hash ()

+
guint
+g_bytes_hash (gconstpointer bytes);
+

Creates an integer hash code for the byte data in the GBytes.

+

This function can be passed to g_hash_table_new() as the key_hash_func + +parameter, when using non-NULL GBytes pointers as keys in a GHashTable.

+
+

Parameters

+
+++++ + + + + + +

bytes

a pointer to a GBytes key.

[type GLib.Bytes]
+
+
+

Returns

+

a hash value corresponding to the key.

+
+

Since: 2.32

+
+
+
+

g_bytes_equal ()

+
gboolean
+g_bytes_equal (gconstpointer bytes1,
+               gconstpointer bytes2);
+

Compares the two GBytes values being pointed to and returns +TRUE if they are equal.

+

This function can be passed to g_hash_table_new() as the key_equal_func + +parameter, when using non-NULL GBytes pointers as keys in a GHashTable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

bytes1

a pointer to a GBytes.

[type GLib.Bytes]

bytes2

a pointer to a GBytes to compare with bytes1 +.

[type GLib.Bytes]
+
+
+

Returns

+

TRUE if the two keys match.

+
+

Since: 2.32

+
+
+
+

g_bytes_compare ()

+
gint
+g_bytes_compare (gconstpointer bytes1,
+                 gconstpointer bytes2);
+

Compares the two GBytes values.

+

This function can be used to sort GBytes instances in lexographical order.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

bytes1

a pointer to a GBytes.

[type GLib.Bytes]

bytes2

a pointer to a GBytes to compare with bytes1 +.

[type GLib.Bytes]
+
+
+

Returns

+

a negative value if bytes2 is lesser, a positive value if bytes2 is +greater, and zero if bytes2 is equal to bytes1

+
+

Since: 2.32

+
+
+
+

g_bytes_ref ()

+
GBytes *
+g_bytes_ref (GBytes *bytes);
+

Increase the reference count on bytes +.

+
+

Parameters

+
+++++ + + + + + +

bytes

a GBytes

 
+
+
+

Returns

+

the GBytes

+
+

Since: 2.32

+
+
+
+

g_bytes_unref ()

+
void
+g_bytes_unref (GBytes *bytes);
+

Releases a reference on bytes +. This may result in the bytes being +freed.

+
+

Parameters

+
+++++ + + + + + +

bytes

a GBytes.

[nullable]
+
+

Since: 2.32

+
+
+
+

g_bytes_unref_to_data ()

+
gpointer
+g_bytes_unref_to_data (GBytes *bytes,
+                       gsize *size);
+

Unreferences the bytes, and returns a pointer the same byte data +contents.

+

As an optimization, the byte data is returned without copying if this was +the last reference to bytes and bytes was created with g_bytes_new(), +g_bytes_new_take() or g_byte_array_free_to_bytes(). In all other cases the +data is copied.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

bytes

a GBytes.

[transfer full]

size

location to place the length of the returned data.

[out]
+
+
+

Returns

+

(transfer full) (array length=size) (element-type guint8) +(not nullable): a pointer to the same byte data, which should be +freed with g_free()

+
+

Since: 2.32

+
+
+
+

g_bytes_unref_to_array ()

+
GByteArray *
+g_bytes_unref_to_array (GBytes *bytes);
+

Unreferences the bytes, and returns a new mutable GByteArray containing +the same byte data.

+

As an optimization, the byte data is transferred to the array without copying +if this was the last reference to bytes and bytes was created with +g_bytes_new(), g_bytes_new_take() or g_byte_array_free_to_bytes(). In all +other cases the data is copied.

+
+

Parameters

+
+++++ + + + + + +

bytes

a GBytes.

[transfer full]
+
+
+

Returns

+

a new mutable GByteArray containing the same byte data.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

struct GByteArray

+
struct GByteArray {
+  guint8 *data;
+  guint	  len;
+};
+
+

Contains the public fields of a GByteArray.

+
+

Members

+
+++++ + + + + + + + + + + + + +

guint8 *data;

a pointer to the element data. The data may be moved as +elements are added to the GByteArray

 

guint len;

the number of elements in the GByteArray

 
+
+
+
+
+

GBytes

+
typedef struct _GBytes GBytes;
+

A simple refcounted data type representing an immutable sequence of zero or +more bytes from an unspecified origin.

+

The purpose of a GBytes is to keep the memory region that it holds +alive for as long as anyone holds a reference to the bytes. When +the last reference count is dropped, the memory is released. Multiple +unrelated callers can use byte data in the GBytes without coordinating +their activities, resting assured that the byte data will not change or +move while they hold a reference.

+

A GBytes can come from many different origins that may have +different procedures for freeing the memory region. Examples are +memory from g_malloc(), from memory slices, from a GMappedFile or +memory from other allocators.

+

GBytes work well as keys in GHashTable. Use g_bytes_equal() and +g_bytes_hash() as parameters to g_hash_table_new() or g_hash_table_new_full(). +GBytes can also be used as keys in a GTree by passing the g_bytes_compare() +function to g_tree_new().

+

The data pointed to by this bytes must not be modified. For a mutable +array of bytes see GByteArray. Use g_bytes_unref_to_array() to create a +mutable array for a GBytes sequence. To create an immutable GBytes from +a mutable GByteArray, use the g_byte_array_free_to_bytes() function.

+

Since: 2.32

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Byte-Order-Macros.html b/docs/reference/glib/html/glib-Byte-Order-Macros.html new file mode 100644 index 0000000..f9e7551 --- /dev/null +++ b/docs/reference/glib/html/glib-Byte-Order-Macros.html @@ -0,0 +1,2092 @@ + + + + +Byte Order Macros: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Byte Order Macros

+

Byte Order Macros — a portable way to convert between different byte orders

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define +g_htonl() +
#define +g_htons() +
#define +g_ntohl() +
#define +g_ntohs() +
#define +GINT_FROM_BE() +
#define +GINT_FROM_LE() +
#define +GINT_TO_BE() +
#define +GINT_TO_LE() +
#define +GUINT_FROM_BE() +
#define +GUINT_FROM_LE() +
#define +GUINT_TO_BE() +
#define +GUINT_TO_LE() +
#define +GLONG_FROM_BE() +
#define +GLONG_FROM_LE() +
#define +GLONG_TO_BE() +
#define +GLONG_TO_LE() +
#define +GULONG_FROM_BE() +
#define +GULONG_FROM_LE() +
#define +GULONG_TO_BE() +
#define +GULONG_TO_LE() +
#define +GSIZE_FROM_BE() +
#define +GSIZE_FROM_LE() +
#define +GSIZE_TO_BE() +
#define +GSIZE_TO_LE() +
#define +GSSIZE_FROM_BE() +
#define +GSSIZE_FROM_LE() +
#define +GSSIZE_TO_BE() +
#define +GSSIZE_TO_LE() +
#define +GINT16_FROM_BE() +
#define +GINT16_FROM_LE() +
#define +GINT16_TO_BE() +
#define +GINT16_TO_LE() +
#define +GUINT16_FROM_BE() +
#define +GUINT16_FROM_LE() +
#define +GUINT16_TO_BE() +
#define +GUINT16_TO_LE() +
#define +GINT32_FROM_BE() +
#define +GINT32_FROM_LE() +
#define +GINT32_TO_BE() +
#define +GINT32_TO_LE() +
#define +GUINT32_FROM_BE() +
#define +GUINT32_FROM_LE() +
#define +GUINT32_TO_BE() +
#define +GUINT32_TO_LE() +
#define +GINT64_FROM_BE() +
#define +GINT64_FROM_LE() +
#define +GINT64_TO_BE() +
#define +GINT64_TO_LE() +
#define +GUINT64_FROM_BE() +
#define +GUINT64_FROM_LE() +
#define +GUINT64_TO_BE() +
#define +GUINT64_TO_LE() +
#define +GUINT16_SWAP_BE_PDP() +
#define +GUINT16_SWAP_LE_BE() +
#define +GUINT16_SWAP_LE_PDP() +
#define +GUINT32_SWAP_BE_PDP() +
#define +GUINT32_SWAP_LE_BE() +
#define +GUINT32_SWAP_LE_PDP() +
#define +GUINT64_SWAP_LE_BE() +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + +
#defineG_BYTE_ORDER
#defineG_LITTLE_ENDIAN
#defineG_BIG_ENDIAN
#defineG_PDP_ENDIAN
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

These macros provide a portable way to determine the host byte order +and to convert values between different byte orders.

+

The byte order is the order in which bytes are stored to create larger +data types such as the gint and glong values. +The host byte order is the byte order used on the current machine.

+

Some processors store the most significant bytes (i.e. the bytes that +hold the largest part of the value) first. These are known as big-endian +processors. Other processors (notably the x86 family) store the most +significant byte last. These are known as little-endian processors.

+

Finally, to complicate matters, some other processors store the bytes in +a rather curious order known as PDP-endian. For a 4-byte word, the 3rd +most significant byte is stored first, then the 4th, then the 1st and +finally the 2nd.

+

Obviously there is a problem when these different processors communicate +with each other, for example over networks or by using binary file formats. +This is where these macros come in. They are typically used to convert +values into a byte order which has been agreed on for use when +communicating between different processors. The Internet uses what is +known as 'network byte order' as the standard byte order (which is in +fact the big-endian byte order).

+

Note that the byte order conversion macros may evaluate their arguments +multiple times, thus you should not use them with arguments which have +side-effects.

+
+
+

Functions

+
+

g_htonl()

+
#define             g_htonl(val)
+

Converts a 32-bit integer value from host to network byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a 32-bit integer value in host byte order

 
+
+
+

Returns

+

val +converted to network byte order

+
+
+
+
+

g_htons()

+
#define             g_htons(val)
+

Converts a 16-bit integer value from host to network byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a 16-bit integer value in host byte order

 
+
+
+

Returns

+

val +converted to network byte order

+
+
+
+
+

g_ntohl()

+
#define             g_ntohl(val)
+

Converts a 32-bit integer value from network to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a 32-bit integer value in network byte order

 
+
+
+

Returns

+

val +converted to host byte order.

+
+
+
+
+

g_ntohs()

+
#define             g_ntohs(val)
+

Converts a 16-bit integer value from network to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a 16-bit integer value in network byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GINT_FROM_BE()

+
#define GINT_FROM_BE(val) (GINT_TO_BE (val))
+
+

Converts a gint value from big-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a gint value in big-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GINT_FROM_LE()

+
#define GINT_FROM_LE(val) (GINT_TO_LE (val))
+
+

Converts a gint value from little-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a gint value in little-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GINT_TO_BE()

+
#define GINT_TO_BE(val)		((gint) GINT32_TO_BE (val))
+
+

Converts a gint value from host byte order to big-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a gint value in host byte order

 
+
+
+

Returns

+

val +converted to big-endian byte order

+
+
+
+
+

GINT_TO_LE()

+
#define GINT_TO_LE(val)		((gint) GINT32_TO_LE (val))
+
+

Converts a gint value from host byte order to little-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a gint value in host byte order

 
+
+
+

Returns

+

val +converted to little-endian byte order

+
+
+
+
+

GUINT_FROM_BE()

+
#define GUINT_FROM_BE(val) (GUINT_TO_BE (val))
+
+

Converts a guint value from big-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a guint value in big-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GUINT_FROM_LE()

+
#define GUINT_FROM_LE(val) (GUINT_TO_LE (val))
+
+

Converts a guint value from little-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a guint value in little-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GUINT_TO_BE()

+
#define GUINT_TO_BE(val) ((guint) GUINT32_TO_BE (val))
+
+

Converts a guint value from host byte order to big-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a guint value in host byte order

 
+
+
+

Returns

+

val +converted to big-endian byte order

+
+
+
+
+

GUINT_TO_LE()

+
#define GUINT_TO_LE(val) ((guint) GUINT32_TO_LE (val))
+
+

Converts a guint value from host byte order to little-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a guint value in host byte order

 
+
+
+

Returns

+

val +converted to little-endian byte order.

+
+
+
+
+

GLONG_FROM_BE()

+
#define GLONG_FROM_BE(val) (GLONG_TO_BE (val))
+
+

Converts a glong value from big-endian to the host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a glong value in big-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GLONG_FROM_LE()

+
#define GLONG_FROM_LE(val) (GLONG_TO_LE (val))
+
+

Converts a glong value from little-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a glong value in little-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GLONG_TO_BE()

+
#define GLONG_TO_BE(val) ((glong) GINT64_TO_BE (val))
+
+

Converts a glong value from host byte order to big-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a glong value in host byte order

 
+
+
+

Returns

+

val +converted to big-endian byte order

+
+
+
+
+

GLONG_TO_LE()

+
#define GLONG_TO_LE(val) ((glong) GINT64_TO_LE (val))
+
+

Converts a glong value from host byte order to little-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a glong value in host byte order

 
+
+
+

Returns

+

val +converted to little-endian

+
+
+
+
+

GULONG_FROM_BE()

+
#define GULONG_FROM_BE(val) (GULONG_TO_BE (val))
+
+

Converts a gulong value from big-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a gulong value in big-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GULONG_FROM_LE()

+
#define GULONG_FROM_LE(val) (GULONG_TO_LE (val))
+
+

Converts a gulong value from little-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a gulong value in little-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GULONG_TO_BE()

+
#define GULONG_TO_BE(val) ((gulong) GUINT64_TO_BE (val))
+
+

Converts a gulong value from host byte order to big-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a gulong value in host byte order

 
+
+
+

Returns

+

val +converted to big-endian

+
+
+
+
+

GULONG_TO_LE()

+
#define GULONG_TO_LE(val) ((gulong) GUINT64_TO_LE (val))
+
+

Converts a gulong value from host byte order to little-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a gulong value in host byte order

 
+
+
+

Returns

+

val +converted to little-endian

+
+
+
+
+

GSIZE_FROM_BE()

+
#define GSIZE_FROM_BE(val) (GSIZE_TO_BE (val))
+
+

Converts a gsize value from big-endian to the host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a gsize value in big-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GSIZE_FROM_LE()

+
#define GSIZE_FROM_LE(val) (GSIZE_TO_LE (val))
+
+

Converts a gsize value from little-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a gsize value in little-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GSIZE_TO_BE()

+
#define GSIZE_TO_BE(val) ((gsize) GUINT64_TO_BE (val))
+
+

Converts a gsize value from host byte order to big-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a gsize value in host byte order

 
+
+
+

Returns

+

val +converted to big-endian byte order

+
+
+
+
+

GSIZE_TO_LE()

+
#define GSIZE_TO_LE(val) ((gsize) GUINT64_TO_LE (val))
+
+

Converts a gsize value from host byte order to little-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a gsize value in host byte order

 
+
+
+

Returns

+

val +converted to little-endian

+
+
+
+
+

GSSIZE_FROM_BE()

+
#define GSSIZE_FROM_BE(val) (GSSIZE_TO_BE (val))
+
+

Converts a gssize value from big-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a gssize value in big-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GSSIZE_FROM_LE()

+
#define GSSIZE_FROM_LE(val) (GSSIZE_TO_LE (val))
+
+

Converts a gssize value from little-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a gssize value in little-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GSSIZE_TO_BE()

+
#define GSSIZE_TO_BE(val) ((gssize) GINT64_TO_BE (val))
+
+

Converts a gssize value from host byte order to big-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a gssize value in host byte order

 
+
+
+

Returns

+

val +converted to big-endian

+
+
+
+
+

GSSIZE_TO_LE()

+
#define GSSIZE_TO_LE(val) ((gssize) GINT64_TO_LE (val))
+
+

Converts a gssize value from host byte order to little-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a gssize value in host byte order

 
+
+
+

Returns

+

val +converted to little-endian

+
+
+
+
+

GINT16_FROM_BE()

+
#define GINT16_FROM_BE(val) (GINT16_TO_BE (val))
+
+

Converts a gint16 value from big-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a gint16 value in big-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GINT16_FROM_LE()

+
#define GINT16_FROM_LE(val) (GINT16_TO_LE (val))
+
+

Converts a gint16 value from little-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a gint16 value in little-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GINT16_TO_BE()

+
#define GINT16_TO_BE(val) ((gint16) GUINT16_SWAP_LE_BE (val))
+
+

Converts a gint16 value from host byte order to big-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a gint16 value in host byte order

 
+
+
+

Returns

+

val +converted to big-endian

+
+
+
+
+

GINT16_TO_LE()

+
#define GINT16_TO_LE(val) ((gint16) (val))
+
+

Converts a gint16 value from host byte order to little-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a gint16 value in host byte order

 
+
+
+

Returns

+

val +converted to little-endian

+
+
+
+
+

GUINT16_FROM_BE()

+
#define GUINT16_FROM_BE(val) (GUINT16_TO_BE (val))
+
+

Converts a guint16 value from big-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a guint16 value in big-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GUINT16_FROM_LE()

+
#define GUINT16_FROM_LE(val) (GUINT16_TO_LE (val))
+
+

Converts a guint16 value from little-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a guint16 value in little-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GUINT16_TO_BE()

+
#define GUINT16_TO_BE(val) (GUINT16_SWAP_LE_BE (val))
+
+

Converts a guint16 value from host byte order to big-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a guint16 value in host byte order

 
+
+
+

Returns

+

val +converted to big-endian

+
+
+
+
+

GUINT16_TO_LE()

+
#define GUINT16_TO_LE(val) ((guint16) (val))
+
+

Converts a guint16 value from host byte order to little-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a guint16 value in host byte order

 
+
+
+

Returns

+

val +converted to little-endian

+
+
+
+
+

GINT32_FROM_BE()

+
#define GINT32_FROM_BE(val) (GINT32_TO_BE (val))
+
+

Converts a gint32 value from big-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a gint32 value in big-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GINT32_FROM_LE()

+
#define GINT32_FROM_LE(val) (GINT32_TO_LE (val))
+
+

Converts a gint32 value from little-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a gint32 value in little-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GINT32_TO_BE()

+
#define GINT32_TO_BE(val) ((gint32) GUINT32_SWAP_LE_BE (val))
+
+

Converts a gint32 value from host byte order to big-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a gint32 value in host byte order

 
+
+
+

Returns

+

val +converted to big-endian

+
+
+
+
+

GINT32_TO_LE()

+
#define GINT32_TO_LE(val) ((gint32) (val))
+
+

Converts a gint32 value from host byte order to little-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a gint32 value in host byte order

 
+
+
+

Returns

+

val +converted to little-endian

+
+
+
+
+

GUINT32_FROM_BE()

+
#define GUINT32_FROM_BE(val) (GUINT32_TO_BE (val))
+
+

Converts a guint32 value from big-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a guint32 value in big-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GUINT32_FROM_LE()

+
#define GUINT32_FROM_LE(val) (GUINT32_TO_LE (val))
+
+

Converts a guint32 value from little-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a guint32 value in little-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GUINT32_TO_BE()

+
#define GUINT32_TO_BE(val) (GUINT32_SWAP_LE_BE (val))
+
+

Converts a guint32 value from host byte order to big-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a guint32 value in host byte order

 
+
+
+

Returns

+

val +converted to big-endian

+
+
+
+
+

GUINT32_TO_LE()

+
#define GUINT32_TO_LE(val) ((guint32) (val))
+
+

Converts a guint32 value from host byte order to little-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a guint32 value in host byte order

 
+
+
+

Returns

+

val +converted to little-endian

+
+
+
+
+

GINT64_FROM_BE()

+
#define GINT64_FROM_BE(val) (GINT64_TO_BE (val))
+
+

Converts a gint64 value from big-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a gint64 value in big-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GINT64_FROM_LE()

+
#define GINT64_FROM_LE(val) (GINT64_TO_LE (val))
+
+

Converts a gint64 value from little-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a gint64 value in little-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GINT64_TO_BE()

+
#define GINT64_TO_BE(val) ((gint64) GUINT64_SWAP_LE_BE (val))
+
+

Converts a gint64 value from host byte order to big-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a gint64 value in host byte order

 
+
+
+

Returns

+

val +converted to big-endian

+
+
+
+
+

GINT64_TO_LE()

+
#define GINT64_TO_LE(val) ((gint64) (val))
+
+

Converts a gint64 value from host byte order to little-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a gint64 value in host byte order

 
+
+
+

Returns

+

val +converted to little-endian

+
+
+
+
+

GUINT64_FROM_BE()

+
#define GUINT64_FROM_BE(val) (GUINT64_TO_BE (val))
+
+

Converts a guint64 value from big-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a guint64 value in big-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GUINT64_FROM_LE()

+
#define GUINT64_FROM_LE(val) (GUINT64_TO_LE (val))
+
+

Converts a guint64 value from little-endian to host byte order.

+
+

Parameters

+
+++++ + + + + + +

val

a guint64 value in little-endian byte order

 
+
+
+

Returns

+

val +converted to host byte order

+
+
+
+
+

GUINT64_TO_BE()

+
#define GUINT64_TO_BE(val) (GUINT64_SWAP_LE_BE (val))
+
+

Converts a guint64 value from host byte order to big-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a guint64 value in host byte order

 
+
+
+

Returns

+

val +converted to big-endian

+
+
+
+
+

GUINT64_TO_LE()

+
#define GUINT64_TO_LE(val) ((guint64) (val))
+
+

Converts a guint64 value from host byte order to little-endian.

+
+

Parameters

+
+++++ + + + + + +

val

a guint64 value in host byte order

 
+
+
+

Returns

+

val +converted to little-endian

+
+
+
+
+

GUINT16_SWAP_BE_PDP()

+
#define GUINT16_SWAP_BE_PDP(val) (GUINT16_SWAP_LE_BE (val))
+
+

Converts a guint16 value between big-endian and pdp-endian byte order. +The conversion is symmetric so it can be used both ways.

+
+

Parameters

+
+++++ + + + + + +

val

a guint16 value in big-endian or pdp-endian byte order

 
+
+
+

Returns

+

val +converted to the opposite byte order

+
+
+
+
+

GUINT16_SWAP_LE_BE()

+
#    define GUINT16_SWAP_LE_BE(val) (GUINT16_SWAP_LE_BE_IA32 (val))
+
+

Converts a guint16 value between little-endian and big-endian byte order. +The conversion is symmetric so it can be used both ways.

+
+

Parameters

+
+++++ + + + + + +

val

a guint16 value in little-endian or big-endian byte order

 
+
+
+

Returns

+

val +converted to the opposite byte order

+
+
+
+
+

GUINT16_SWAP_LE_PDP()

+
#define GUINT16_SWAP_LE_PDP(val) ((guint16) (val))
+
+

Converts a guint16 value between little-endian and pdp-endian byte order. +The conversion is symmetric so it can be used both ways.

+
+

Parameters

+
+++++ + + + + + +

val

a guint16 value in little-endian or pdp-endian byte order

 
+
+
+

Returns

+

val +converted to the opposite byte order

+
+
+
+
+

GUINT32_SWAP_BE_PDP()

+
#define             GUINT32_SWAP_BE_PDP(val)
+

Converts a guint32 value between big-endian and pdp-endian byte order. +The conversion is symmetric so it can be used both ways.

+
+

Parameters

+
+++++ + + + + + +

val

a guint32 value in big-endian or pdp-endian byte order

 
+
+
+

Returns

+

val +converted to the opposite byte order

+
+
+
+
+

GUINT32_SWAP_LE_BE()

+
#    define GUINT32_SWAP_LE_BE(val) ((guint32) __builtin_bswap32 ((gint32) (val)))
+
+

Converts a guint32 value between little-endian and big-endian byte order. +The conversion is symmetric so it can be used both ways.

+
+

Parameters

+
+++++ + + + + + +

val

a guint32 value in little-endian or big-endian byte order

 
+
+
+

Returns

+

val +converted to the opposite byte order

+
+
+
+
+

GUINT32_SWAP_LE_PDP()

+
#define             GUINT32_SWAP_LE_PDP(val)
+

Converts a guint32 value between little-endian and pdp-endian byte order. +The conversion is symmetric so it can be used both ways.

+
+

Parameters

+
+++++ + + + + + +

val

a guint32 value in little-endian or pdp-endian byte order

 
+
+
+

Returns

+

val +converted to the opposite byte order

+
+
+
+
+

GUINT64_SWAP_LE_BE()

+
#    define GUINT64_SWAP_LE_BE(val) ((guint64) __builtin_bswap64 ((gint64) (val)))
+
+

Converts a guint64 value between little-endian and big-endian byte order. +The conversion is symmetric so it can be used both ways.

+
+

Parameters

+
+++++ + + + + + +

val

a guint64 value in little-endian or big-endian byte order

 
+
+
+

Returns

+

val +converted to the opposite byte order

+
+
+
+
+

Types and Values

+
+

G_BYTE_ORDER

+
#define G_BYTE_ORDER G_LITTLE_ENDIAN
+
+

The host byte order. +This can be either G_LITTLE_ENDIAN or G_BIG_ENDIAN (support for +G_PDP_ENDIAN may be added in future.)

+
+
+
+

G_LITTLE_ENDIAN

+
#define G_LITTLE_ENDIAN 1234
+
+

Specifies one of the possible types of byte order. +See G_BYTE_ORDER.

+
+
+
+

G_BIG_ENDIAN

+
#define G_BIG_ENDIAN    4321
+
+

Specifies one of the possible types of byte order. +See G_BYTE_ORDER.

+
+
+
+

G_PDP_ENDIAN

+
#define G_PDP_ENDIAN    3412		/* unused, need specific PDP check */	
+
+

Specifies one of the possible types of byte order +(currently unused). See G_BYTE_ORDER.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Caches.html b/docs/reference/glib/html/glib-Caches.html new file mode 100644 index 0000000..1fe4844 --- /dev/null +++ b/docs/reference/glib/html/glib-Caches.html @@ -0,0 +1,535 @@ + + + + +Caches: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Caches

+

Caches — caches allow sharing of complex data structures + to save resources

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GCache * + +g_cache_new () +
+gpointer + +g_cache_insert () +
+void + +g_cache_remove () +
+void + +g_cache_destroy () +
+void + +g_cache_key_foreach () +
+void + +g_cache_value_foreach () +
+void + +(*GCacheDestroyFunc) () +
+gpointer + +(*GCacheDupFunc) () +
+gpointer + +(*GCacheNewFunc) () +
+
+
+

Types and Values

+
++++ + + + + +
 GCache
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

A GCache allows sharing of complex data structures, in order to +save system resources.

+

GCache uses keys and values. A GCache key describes the properties +of a particular resource. A GCache value is the actual resource.

+

GCache has been marked as deprecated, since this API is rarely +used and not very actively maintained.

+
+
+

Functions

+
+

g_cache_new ()

+
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);
+
+

g_cache_new has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use a GHashTable instead

+
+

Creates a new GCache.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

value_new_func

a function to create a new object given a key. +This is called by g_cache_insert() if an object +with the given key does not already exist

 

value_destroy_func

a function to destroy an object. It is called +by g_cache_remove() when the object is no +longer needed (i.e. its reference count drops +to 0)

 

key_dup_func

a function to copy a key. It is called by +g_cache_insert() if the key does not already exist in +the GCache

 

key_destroy_func

a function to destroy a key. It is called by +g_cache_remove() when the object is no longer +needed (i.e. its reference count drops to 0)

 

hash_key_func

a function to create a hash value from a key

 

hash_value_func

a function to create a hash value from a value

 

key_equal_func

a function to compare two keys. It should return +TRUE if the two keys are equivalent

 
+
+
+

Returns

+

a new GCache

+
+
+
+
+

g_cache_insert ()

+
gpointer
+g_cache_insert (GCache *cache,
+                gpointer key);
+
+

g_cache_insert has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use a GHashTable instead

+
+

Gets the value corresponding to the given key, creating it if +necessary. It first checks if the value already exists in the +GCache, by using the key_equal_func + function passed to +g_cache_new(). If it does already exist it is returned, and its +reference count is increased by one. If the value does not currently +exist, if is created by calling the value_new_func +. The key is +duplicated by calling key_dup_func + and the duplicated key and value +are inserted into the GCache.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cache

a GCache

 

key

a key describing a GCache object

 
+
+
+

Returns

+

a pointer to a GCache value

+
+
+
+
+

g_cache_remove ()

+
void
+g_cache_remove (GCache *cache,
+                gconstpointer value);
+
+

g_cache_remove has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use a GHashTable instead

+
+

Decreases the reference count of the given value. If it drops to 0 +then the value and its corresponding key are destroyed, using the +value_destroy_func + and key_destroy_func + passed to g_cache_new().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cache

a GCache

 

value

the value to remove

 
+
+
+
+
+

g_cache_destroy ()

+
void
+g_cache_destroy (GCache *cache);
+
+

g_cache_destroy has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use a GHashTable instead

+
+

Frees the memory allocated for the GCache.

+

Note that it does not destroy the keys and values which were +contained in the GCache.

+
+

Parameters

+
+++++ + + + + + +

cache

a GCache

 
+
+
+
+
+

g_cache_key_foreach ()

+
void
+g_cache_key_foreach (GCache *cache,
+                     GHFunc func,
+                     gpointer user_data);
+
+

g_cache_key_foreach has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use a GHashTable instead

+
+

Calls the given function for each of the keys in the GCache.

+

NOTE func + is passed three parameters, the value and key of a cache +entry and the user_data +. The order of value and key is different +from the order in which g_hash_table_foreach() passes key-value +pairs to its callback function !

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

cache

a GCache

 

func

the function to call with each GCache key

 

user_data

user data to pass to the function

 
+
+
+
+
+

g_cache_value_foreach ()

+
void
+g_cache_value_foreach (GCache *cache,
+                       GHFunc func,
+                       gpointer user_data);
+
+

g_cache_value_foreach has been deprecated since version 2.10 and should not be used in newly-written code.

+

The reason is that it passes pointers to internal + data structures to func +; use g_cache_key_foreach() instead

+
+

Calls the given function for each of the values in the GCache.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

cache

a GCache

 

func

the function to call with each GCache value

 

user_data

user data to pass to the function

 
+
+
+
+
+

GCacheDestroyFunc ()

+
void
+(*GCacheDestroyFunc) (gpointer value);
+

GCacheDestroyFunc is deprecated and should not be used in newly-written code.

+

Specifies the type of the value_destroy_func + and key_destroy_func + +functions passed to g_cache_new(). The functions are passed a +pointer to the GCache key or GCache value and should free any +memory and other resources associated with it.

+
+

Parameters

+
+++++ + + + + + +

value

the GCache value to destroy

 
+
+
+
+
+

GCacheDupFunc ()

+
gpointer
+(*GCacheDupFunc) (gpointer value);
+

GCacheDupFunc is deprecated and should not be used in newly-written code.

+

Specifies the type of the key_dup_func + function passed to +g_cache_new(). The function is passed a key +(<emphasis>not</emphasis> a value as the prototype implies) and +should return a duplicate of the key.

+
+

Parameters

+
+++++ + + + + + +

value

the GCache key to destroy (<emphasis>not</emphasis> a +GCache value as it seems)

 
+
+
+

Returns

+

a copy of the GCache key

+
+
+
+
+

GCacheNewFunc ()

+
gpointer
+(*GCacheNewFunc) (gpointer key);
+

GCacheNewFunc is deprecated and should not be used in newly-written code.

+

Specifies the type of the value_new_func + function passed to +g_cache_new(). It is passed a GCache key and should create the +value corresponding to the key.

+
+

Parameters

+
+++++ + + + + + +

key

a GCache key

 
+
+
+

Returns

+

a new GCache value corresponding to the key.

+
+
+
+
+

Types and Values

+
+

GCache

+
typedef struct _GCache GCache;
+
+

GCache has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use a GHashTable instead

+
+

The GCache struct is an opaque data structure containing +information about a GCache. It should only be accessed via the +following functions.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Character-Set-Conversion.html b/docs/reference/glib/html/glib-Character-Set-Conversion.html new file mode 100644 index 0000000..404b63c --- /dev/null +++ b/docs/reference/glib/html/glib-Character-Set-Conversion.html @@ -0,0 +1,1285 @@ + + + + +Character Set Conversion: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Character Set Conversion

+

Character Set Conversion — convert strings between different character sets

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gchar * + +g_convert () +
+gchar * + +g_convert_with_fallback () +
+gchar * + +g_convert_with_iconv () +
+GIConv + +g_iconv_open () +
+gsize + +g_iconv () +
+gint + +g_iconv_close () +
+gchar * + +g_locale_to_utf8 () +
+gchar * + +g_filename_to_utf8 () +
+gchar * + +g_filename_from_utf8 () +
+gboolean + +g_get_filename_charsets () +
+gchar * + +g_filename_display_name () +
+gchar * + +g_filename_display_basename () +
+gchar * + +g_locale_from_utf8 () +
+gboolean + +g_get_charset () +
+gchar * + +g_get_codeset () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
 GIConv
#defineG_CONVERT_ERROR
enumGConvertError
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The g_convert() family of function wraps the functionality of iconv(). +In addition to pure character set conversions, GLib has functions to +deal with the extra complications of encodings for file names.

+
+

File Name Encodings

+

Historically, UNIX has not had a defined encoding for file names: +a file name is valid as long as it does not have path separators +in it ("/"). However, displaying file names may require conversion: +from the character set in which they were created, to the character +set in which the application operates. Consider the Spanish file name +"Presentación.sxi". If the application which created it uses +ISO-8859-1 for its encoding,

+
+ + + + + + + +
1
+2
Character:  P  r  e  s  e  n  t  a  c  i  &oacute;  n  .  s  x  i
+Hex code:   50 72 65 73 65 6e 74 61 63 69 f3 6e 2e 73 78 69
+
+ +

+However, if the application use UTF-8, the actual file name on +disk would look like this:

+
+ + + + + + + +
1
+2
Character:  P  r  e  s  e  n  t  a  c  i  &oacute;     n  .  s  x  i
+Hex code:   50 72 65 73 65 6e 74 61 63 69 c3 b3 6e 2e 73 78 69
+
+ +

+Glib uses UTF-8 for its strings, and GUI toolkits like GTK+ that use +Glib do the same thing. If you get a file name from the file system, +for example, from readdir() or from g_dir_read_name(), and you wish +to display the file name to the user, you will need to convert it +into UTF-8. The opposite case is when the user types the name of a +file he wishes to save: the toolkit will give you that string in +UTF-8 encoding, and you will need to convert it to the character +set used for file names before you can create the file with open() +or fopen().

+

By default, Glib assumes that file names on disk are in UTF-8 +encoding. This is a valid assumption for file systems which +were created relatively recently: most applications use UTF-8 +encoding for their strings, and that is also what they use for +the file names they create. However, older file systems may +still contain file names created in "older" encodings, such as +ISO-8859-1. In this case, for compatibility reasons, you may want +to instruct Glib to use that particular encoding for file names +rather than UTF-8. You can do this by specifying the encoding for +file names in the G_FILENAME_ENCODING +environment variable. For example, if your installation uses +ISO-8859-1 for file names, you can put this in your ~/.profile

+
+ + + + + + + +
1
export G_FILENAME_ENCODING=ISO-8859-1
+
+ +

+Glib provides the functions g_filename_to_utf8() and +g_filename_from_utf8() to perform the necessary conversions. +These functions convert file names from the encoding specified +in G_FILENAME_ENCODING to UTF-8 and vice-versa. This +diagram illustrates how +these functions are used to convert between UTF-8 and the +encoding for file names in the file system.

+
+
+

Conversion between file name encodings # {file-name-encodings-diagram)

+

+
+
+

Checklist for Application Writers

+

This section is a practical summary of the detailed

+

things to do to make sure your applications process file +name encodings correctly.

+
    +
  1. If you get a file name from the file system from a function +such as readdir() or gtk_file_chooser_get_filename(), you do +not need to do any conversion to pass that file name to +functions like open(), rename(), or fopen() -- those are "raw" +file names which the file system understands.

  2. +
  3. +

    If you need to display a file name, convert it to UTF-8 first +by using g_filename_to_utf8(). If conversion fails, display a +string like "Unknown file name". Do not convert this string back +into the encoding used for file names if you wish to pass it to +the file system; use the original file name instead.

    +

    For example, the document window of a word processor could display +"Unknown file name" in its title bar but still let the user save +the file, as it would keep the raw file name internally. This +can happen if the user has not set the G_FILENAME_ENCODING +environment variable even though he has files whose names are +not encoded in UTF-8.

    +
  4. +
  5. If your user interface lets the user type a file name for saving +or renaming, convert it to the encoding used for file names in +the file system by using g_filename_from_utf8(). Pass the converted +file name to functions like fopen(). If conversion fails, ask the +user to enter a different file name. This can happen if the user +types Japanese characters when G_FILENAME_ENCODING is set to +ISO-8859-1, for example.

  6. +
+
+
+
+

Functions

+
+

g_convert ()

+
gchar *
+g_convert (const gchar *str,
+           gssize len,
+           const gchar *to_codeset,
+           const gchar *from_codeset,
+           gsize *bytes_read,
+           gsize *bytes_written,
+           GError **error);
+

Converts a string from one character set to another.

+

Note that you should use g_iconv() for streaming conversions. +Despite the fact that byes_read + can return information about partial +characters, the g_convert_... functions are not generally suitable +for streaming. If the underlying converter maintains internal state, +then this won't be preserved across successive calls to g_convert(), +g_convert_with_iconv() or g_convert_with_fallback(). (An example of +this is the GNU C converter for CP1255 which does not emit a base +character until it knows that the next character is not a mark that +could combine with the base character.)

+

Using extensions such as "//TRANSLIT" may not work (or may not work +well) on many platforms. Consider using g_str_to_ascii() instead.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

str

the string to convert

 

len

the length of the string in bytes, or -1 if the string is +nul-terminated (Note that some encodings may allow nul +bytes to occur inside strings. In that case, using -1 +for the len +parameter is unsafe)

 

to_codeset

name of character set into which to convert str +

 

from_codeset

character set of str +.

 

bytes_read

location to store the number of bytes in the +input string that were successfully converted, or NULL. +Even if the conversion was successful, this may be +less than len +if there were partial characters +at the end of the input. If the error +G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value +stored will the byte offset after the last valid +input sequence.

[out]

bytes_written

the number of bytes stored in the output buffer (not +including the terminating nul).

[out]

error

location to store the error occurring, or NULL to ignore +errors. Any of the errors in GConvertError may occur.

 
+
+
+

Returns

+

If the conversion was successful, a newly allocated +nul-terminated string, which must be freed with +g_free(). Otherwise NULL and error +will be set.

+
+
+
+
+

g_convert_with_fallback ()

+
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);
+

Converts a string from one character set to another, possibly +including fallback sequences for characters not representable +in the output. Note that it is not guaranteed that the specification +for the fallback sequences in fallback + will be honored. Some +systems may do an approximate conversion from from_codeset + +to to_codeset + in their iconv() functions, +in which case GLib will simply return that approximate conversion.

+

Note that you should use g_iconv() for streaming conversions. +Despite the fact that byes_read + can return information about partial +characters, the g_convert_... functions are not generally suitable +for streaming. If the underlying converter maintains internal state, +then this won't be preserved across successive calls to g_convert(), +g_convert_with_iconv() or g_convert_with_fallback(). (An example of +this is the GNU C converter for CP1255 which does not emit a base +character until it knows that the next character is not a mark that +could combine with the base character.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

str

the string to convert

 

len

the length of the string in bytes, or -1 if the string is +nul-terminated (Note that some encodings may allow nul +bytes to occur inside strings. In that case, using -1 +for the len +parameter is unsafe)

 

to_codeset

name of character set into which to convert str +

 

from_codeset

character set of str +.

 

fallback

UTF-8 string to use in place of character not +present in the target encoding. (The string must be +representable in the target encoding). +If NULL, characters not in the target encoding will +be represented as Unicode escapes \uxxxx or \Uxxxxyyyy.

 

bytes_read

location to store the number of bytes in the +input string that were successfully converted, or NULL. +Even if the conversion was successful, this may be +less than len +if there were partial characters +at the end of the input.

 

bytes_written

the number of bytes stored in the output buffer (not +including the terminating nul).

 

error

location to store the error occurring, or NULL to ignore +errors. Any of the errors in GConvertError may occur.

 
+
+
+

Returns

+

If the conversion was successful, a newly allocated +nul-terminated string, which must be freed with +g_free(). Otherwise NULL and error +will be set.

+
+
+
+
+

g_convert_with_iconv ()

+
gchar *
+g_convert_with_iconv (const gchar *str,
+                      gssize len,
+                      GIConv converter,
+                      gsize *bytes_read,
+                      gsize *bytes_written,
+                      GError **error);
+

Converts a string from one character set to another.

+

Note that you should use g_iconv() for streaming conversions. +Despite the fact that byes_read + can return information about partial +characters, the g_convert_... functions are not generally suitable +for streaming. If the underlying converter maintains internal state, +then this won't be preserved across successive calls to g_convert(), +g_convert_with_iconv() or g_convert_with_fallback(). (An example of +this is the GNU C converter for CP1255 which does not emit a base +character until it knows that the next character is not a mark that +could combine with the base character.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

str

the string to convert

 

len

the length of the string in bytes, or -1 if the string is +nul-terminated (Note that some encodings may allow nul +bytes to occur inside strings. In that case, using -1 +for the len +parameter is unsafe)

 

converter

conversion descriptor from g_iconv_open()

 

bytes_read

location to store the number of bytes in the +input string that were successfully converted, or NULL. +Even if the conversion was successful, this may be +less than len +if there were partial characters +at the end of the input. If the error +G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value +stored will the byte offset after the last valid +input sequence.

 

bytes_written

the number of bytes stored in the output buffer (not +including the terminating nul).

 

error

location to store the error occurring, or NULL to ignore +errors. Any of the errors in GConvertError may occur.

 
+
+
+

Returns

+

If the conversion was successful, a newly allocated +nul-terminated string, which must be freed with +g_free(). Otherwise NULL and error +will be set.

+
+
+
+
+

g_iconv_open ()

+
GIConv
+g_iconv_open (const gchar *to_codeset,
+              const gchar *from_codeset);
+

Same as the standard UNIX routine iconv_open(), but +may be implemented via libiconv on UNIX flavors that lack +a native implementation.

+

GLib provides g_convert() and g_locale_to_utf8() which are likely +more convenient than the raw iconv wrappers.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

to_codeset

destination codeset

 

from_codeset

source codeset

 
+
+
+

Returns

+

a "conversion descriptor", or (GIConv)-1 if +opening the converter failed.

+
+
+
+
+

g_iconv ()

+
gsize
+g_iconv (GIConv converter,
+         gchar **inbuf,
+         gsize *inbytes_left,
+         gchar **outbuf,
+         gsize *outbytes_left);
+

Same as the standard UNIX routine iconv(), but +may be implemented via libiconv on UNIX flavors that lack +a native implementation.

+

GLib provides g_convert() and g_locale_to_utf8() which are likely +more convenient than the raw iconv wrappers.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

converter

conversion descriptor from g_iconv_open()

 

inbuf

bytes to convert

 

inbytes_left

inout parameter, bytes remaining to convert in inbuf +

 

outbuf

converted output bytes

 

outbytes_left

inout parameter, bytes available to fill in outbuf +

 
+
+
+

Returns

+

count of non-reversible conversions, or -1 on error

+
+
+
+
+

g_iconv_close ()

+
gint
+g_iconv_close (GIConv converter);
+

Same as the standard UNIX routine iconv_close(), but +may be implemented via libiconv on UNIX flavors that lack +a native implementation. Should be called to clean up +the conversion descriptor from g_iconv_open() when +you are done converting things.

+

GLib provides g_convert() and g_locale_to_utf8() which are likely +more convenient than the raw iconv wrappers.

+
+

Parameters

+
+++++ + + + + + +

converter

a conversion descriptor from g_iconv_open()

 
+
+
+

Returns

+

-1 on error, 0 on success

+
+
+
+
+

g_locale_to_utf8 ()

+
gchar *
+g_locale_to_utf8 (const gchar *opsysstring,
+                  gssize len,
+                  gsize *bytes_read,
+                  gsize *bytes_written,
+                  GError **error);
+

Converts a string which is in the encoding used for strings by +the C runtime (usually the same as that used by the operating +system) in the current locale into a UTF-8 string.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

opsysstring

a string in the encoding of the current locale. On Windows +this means the system codepage.

 

len

the length of the string, or -1 if the string is +nul-terminated (Note that some encodings may allow nul +bytes to occur inside strings. In that case, using -1 +for the len +parameter is unsafe)

 

bytes_read

location to store the number of bytes in the +input string that were successfully converted, or NULL. +Even if the conversion was successful, this may be +less than len +if there were partial characters +at the end of the input. If the error +G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value +stored will the byte offset after the last valid +input sequence.

[out][optional]

bytes_written

the number of bytes stored in the output +buffer (not including the terminating nul).

[out][optional]

error

location to store the error occurring, or NULL to ignore +errors. Any of the errors in GConvertError may occur.

 
+
+
+

Returns

+

A newly-allocated buffer containing the converted string, +or NULL on an error, and error will be set.

+
+
+
+
+

g_filename_to_utf8 ()

+
gchar *
+g_filename_to_utf8 (const gchar *opsysstring,
+                    gssize len,
+                    gsize *bytes_read,
+                    gsize *bytes_written,
+                    GError **error);
+

Converts a string which is in the encoding used by GLib for +filenames into a UTF-8 string. Note that on Windows GLib uses UTF-8 +for filenames; on other platforms, this function indirectly depends on +the current locale.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

opsysstring

a string in the encoding for filenames

 

len

the length of the string, or -1 if the string is +nul-terminated (Note that some encodings may allow nul +bytes to occur inside strings. In that case, using -1 +for the len +parameter is unsafe)

 

bytes_read

location to store the number of bytes in the +input string that were successfully converted, or NULL. +Even if the conversion was successful, this may be +less than len +if there were partial characters +at the end of the input. If the error +G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value +stored will the byte offset after the last valid +input sequence.

[out][optional]

bytes_written

the number of bytes stored in the output +buffer (not including the terminating nul).

[out][optional]

error

location to store the error occurring, or NULL to ignore +errors. Any of the errors in GConvertError may occur.

 
+
+
+

Returns

+

The converted string, or NULL on an error.

+
+
+
+
+

g_filename_from_utf8 ()

+
gchar *
+g_filename_from_utf8 (const gchar *utf8string,
+                      gssize len,
+                      gsize *bytes_read,
+                      gsize *bytes_written,
+                      GError **error);
+

Converts a string from UTF-8 to the encoding GLib uses for +filenames. Note that on Windows GLib uses UTF-8 for filenames; +on other platforms, this function indirectly depends on the +current locale.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

utf8string

a UTF-8 encoded string.

 

len

the length of the string, or -1 if the string is +nul-terminated.

 

bytes_read

location to store the number of bytes in +the input string that were successfully converted, or NULL. +Even if the conversion was successful, this may be +less than len +if there were partial characters +at the end of the input. If the error +G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value +stored will the byte offset after the last valid +input sequence.

[out][optional]

bytes_written

the number of bytes stored in the output buffer (not +including the terminating nul).

[out]

error

location to store the error occurring, or NULL to ignore +errors. Any of the errors in GConvertError may occur.

 
+
+
+

Returns

+

The converted string, or NULL on an error.

+

[array length=bytes_written][element-type guint8][transfer full]

+
+
+
+
+

g_get_filename_charsets ()

+
gboolean
+g_get_filename_charsets (const gchar ***charsets);
+

Determines the preferred character sets used for filenames. +The first character set from the charsets + is the filename encoding, the +subsequent character sets are used when trying to generate a displayable +representation of a filename, see g_filename_display_name().

+

On Unix, the character sets are determined by consulting the +environment variables G_FILENAME_ENCODING and G_BROKEN_FILENAMES. +On Windows, the character set used in the GLib API is always UTF-8 +and said environment variables have no effect.

+

G_FILENAME_ENCODING may be set to a comma-separated list of +character set names. The special token "@locale" is taken +to mean the character set for the current locale. +If G_FILENAME_ENCODING is not set, but G_BROKEN_FILENAMES is, +the character set of the current locale is taken as the filename +encoding. If neither environment variable is set, UTF-8 is taken +as the filename encoding, but the character set of the current locale +is also put in the list of encodings.

+

The returned charsets + belong to GLib and must not be freed.

+

Note that on Unix, regardless of the locale character set or +G_FILENAME_ENCODING value, the actual file names present +on a system might be in any random encoding or just gibberish.

+
+

Parameters

+
+++++ + + + + + +

charsets

return location for the NULL-terminated list of encoding names

 
+
+
+

Returns

+

TRUE if the filename encoding is UTF-8.

+
+

Since: 2.6

+
+
+
+

g_filename_display_name ()

+
gchar *
+g_filename_display_name (const gchar *filename);
+

Converts a filename into a valid UTF-8 string. The conversion is +not necessarily reversible, so you should keep the original around +and use the return value of this function only for display purposes. +Unlike g_filename_to_utf8(), the result is guaranteed to be non-NULL +even if the filename actually isn't in the GLib file name encoding.

+

If GLib cannot make sense of the encoding of filename +, as a last resort it +replaces unknown characters with U+FFFD, the Unicode replacement character. +You can search the result for the UTF-8 encoding of this character (which is +"\357\277\275" in octal notation) to find out if filename + was in an invalid +encoding.

+

If you know the whole pathname of the file you should use +g_filename_display_basename(), since that allows location-based +translation of filenames.

+
+

Parameters

+
+++++ + + + + + +

filename

a pathname hopefully in the GLib file name encoding

 
+
+
+

Returns

+

a newly allocated string containing +a rendition of the filename in valid UTF-8

+
+

Since: 2.6

+
+
+
+

g_filename_display_basename ()

+
gchar *
+g_filename_display_basename (const gchar *filename);
+

Returns the display basename for the particular filename, guaranteed +to be valid UTF-8. The display name might not be identical to the filename, +for instance there might be problems converting it to UTF-8, and some files +can be translated in the display.

+

If GLib cannot make sense of the encoding of filename +, as a last resort it +replaces unknown characters with U+FFFD, the Unicode replacement character. +You can search the result for the UTF-8 encoding of this character (which is +"\357\277\275" in octal notation) to find out if filename + was in an invalid +encoding.

+

You must pass the whole absolute pathname to this functions so that +translation of well known locations can be done.

+

This function is preferred over g_filename_display_name() if you know the +whole path, as it allows translation.

+
+

Parameters

+
+++++ + + + + + +

filename

an absolute pathname in the GLib file name encoding

 
+
+
+

Returns

+

a newly allocated string containing +a rendition of the basename of the filename in valid UTF-8

+
+

Since: 2.6

+
+
+
+

g_locale_from_utf8 ()

+
gchar *
+g_locale_from_utf8 (const gchar *utf8string,
+                    gssize len,
+                    gsize *bytes_read,
+                    gsize *bytes_written,
+                    GError **error);
+

Converts a string from UTF-8 to the encoding used for strings by +the C runtime (usually the same as that used by the operating +system) in the current locale. On Windows this means +the system codepage.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

utf8string

a UTF-8 encoded string

 

len

the length of the string, or -1 if the string is +nul-terminated (Note that some encodings may allow nul +bytes to occur inside strings. In that case, using -1 +for the len +parameter is unsafe)

 

bytes_read

location to store the number of bytes in the +input string that were successfully converted, or NULL. +Even if the conversion was successful, this may be +less than len +if there were partial characters +at the end of the input. If the error +G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value +stored will the byte offset after the last valid +input sequence.

[out][optional]

bytes_written

the number of bytes stored in the output +buffer (not including the terminating nul).

[out][optional]

error

location to store the error occurring, or NULL to ignore +errors. Any of the errors in GConvertError may occur.

 
+
+
+

Returns

+

A newly-allocated buffer containing the converted string, +or NULL on an error, and error will be set.

+
+
+
+
+

g_get_charset ()

+
gboolean
+g_get_charset (const char **charset);
+

Obtains the character set for the current locale; you +might use this character set as an argument to g_convert(), to convert +from the current locale's encoding to some other encoding. (Frequently +g_locale_to_utf8() and g_locale_from_utf8() are nice shortcuts, though.)

+

On Windows the character set returned by this function is the +so-called system default ANSI code-page. That is the character set +used by the "narrow" versions of C library and Win32 functions that +handle file names. It might be different from the character set +used by the C library's current locale.

+

The return value is TRUE if the locale's encoding is UTF-8, in that +case you can perhaps avoid calling g_convert().

+

The string returned in charset + is not allocated, and should not be +freed.

+
+

Parameters

+
+++++ + + + + + +

charset

return location for character set +name, or NULL.

[out][optional][transfer none]
+
+
+

Returns

+

TRUE if the returned charset is UTF-8

+
+
+
+
+

g_get_codeset ()

+
gchar *
+g_get_codeset (void);
+

Gets the character set for the current locale.

+
+

Returns

+

a newly allocated string containing the name +of the character set. This string must be freed with g_free().

+
+
+
+
+

Types and Values

+
+

GIConv

+
typedef struct _GIConv GIConv;
+

The GIConv struct wraps an iconv() conversion descriptor. It contains +private data and should only be accessed using the following functions.

+
+
+
+

G_CONVERT_ERROR

+
#define G_CONVERT_ERROR g_convert_error_quark()
+
+

Error domain for character set conversions. Errors in this domain will +be from the GConvertError enumeration. See GError for information on +error domains.

+
+
+
+

enum GConvertError

+

Error codes returned by character set conversion routines.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 

G_CONVERT_ERROR_NO_MEMORY

+

No memory available. Since: 2.40

+
 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Commandline-option-parser.html b/docs/reference/glib/html/glib-Commandline-option-parser.html new file mode 100644 index 0000000..699bbba --- /dev/null +++ b/docs/reference/glib/html/glib-Commandline-option-parser.html @@ -0,0 +1,2320 @@ + + + + +Commandline option parser: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Commandline option parser

+

Commandline option parser — parses commandline options

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#defineG_OPTION_ERROR
+gboolean + +(*GOptionArgFunc) () +
+GOptionContext * + +g_option_context_new () +
+void + +g_option_context_set_summary () +
const gchar * + +g_option_context_get_summary () +
+void + +g_option_context_set_description () +
const gchar * + +g_option_context_get_description () +
const gchar * + +(*GTranslateFunc) () +
+void + +g_option_context_set_translate_func () +
+void + +g_option_context_set_translation_domain () +
+void + +g_option_context_free () +
+gboolean + +g_option_context_parse () +
+gboolean + +g_option_context_parse_strv () +
+void + +g_option_context_set_help_enabled () +
+gboolean + +g_option_context_get_help_enabled () +
+void + +g_option_context_set_ignore_unknown_options () +
+gboolean + +g_option_context_get_ignore_unknown_options () +
+gchar * + +g_option_context_get_help () +
+gboolean + +g_option_context_get_strict_posix () +
+void + +g_option_context_set_strict_posix () +
+void + +g_option_context_add_main_entries () +
+void + +g_option_context_add_group () +
+void + +g_option_context_set_main_group () +
+GOptionGroup * + +g_option_context_get_main_group () +
+GOptionGroup * + +g_option_group_new () +
+GOptionGroup * + +g_option_group_ref () +
+void + +g_option_group_unref () +
+void + +g_option_group_free () +
+void + +g_option_group_add_entries () +
+gboolean + +(*GOptionParseFunc) () +
+void + +g_option_group_set_parse_hooks () +
+void + +(*GOptionErrorFunc) () +
+void + +g_option_group_set_error_hook () +
+void + +g_option_group_set_translate_func () +
+void + +g_option_group_set_translation_domain () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
enumGOptionError
 GOptionContext
enumGOptionArg
enumGOptionFlags
#defineG_OPTION_REMAINING
structGOptionEntry
 GOptionGroup
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The GOption commandline parser is intended to be a simpler replacement +for the popt library. It supports short and long commandline options, +as shown in the following example:

+

testtreemodel -r 1 --max-size 20 --rand --display=:1.0 -vb -- file1 file2

+

The example demonstrates a number of features of the GOption +commandline parser:

+
    +
  • Options can be single letters, prefixed by a single dash.

  • +
  • Multiple short options can be grouped behind a single dash.

  • +
  • Long options are prefixed by two consecutive dashes.

  • +
  • Options can have an extra argument, which can be a number, a string or +a filename. For long options, the extra argument can be appended with +an equals sign after the option name, which is useful if the extra +argument starts with a dash, which would otherwise cause it to be +interpreted as another option.

  • +
  • Non-option arguments are returned to the application as rest arguments.

  • +
  • An argument consisting solely of two dashes turns off further parsing, +any remaining arguments (even those starting with a dash) are returned +to the application as rest arguments.

  • +
+

Another important feature of GOption is that it can automatically +generate nicely formatted help output. Unless it is explicitly turned +off with g_option_context_set_help_enabled(), GOption will recognize +the --help, -?, --help-all and --help-groupname options +(where groupname is the name of a GOptionGroup) and write a text +similar to the one shown in the following example to stdout.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
Usage:
+  testtreemodel [OPTION...] - test tree model performance
+ 
+Help Options:
+  -h, --help               Show help options
+  --help-all               Show all help options
+  --help-gtk               Show GTK+ Options
+ 
+Application Options:
+  -r, --repeats=N          Average over N repetitions
+  -m, --max-size=M         Test up to 2^M items
+  --display=DISPLAY        X display to use
+  -v, --verbose            Be verbose
+  -b, --beep               Beep when done
+  --rand                   Randomize the data
+
+ +

+

GOption groups options in GOptionGroups, which makes it easy to +incorporate options from multiple sources. The intended use for this is +to let applications collect option groups from the libraries it uses, +add them to their GOptionContext, and parse all options by a single call +to g_option_context_parse(). See gtk_get_option_group() for an example.

+

If an option is declared to be of type string or filename, GOption takes +care of converting it to the right encoding; strings are returned in +UTF-8, filenames are returned in the GLib filename encoding. Note that +this only works if setlocale() has been called before +g_option_context_parse().

+

Here is a complete example of setting up GOption to parse the example +commandline above and produce the example help output.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
static gint repeats = 2;
+static gint max_size = 8;
+static gboolean verbose = FALSE;
+static gboolean beep = FALSE;
+static gboolean randomize = FALSE;
+
+static GOptionEntry entries[] =
+{
+  { "repeats", 'r', 0, G_OPTION_ARG_INT, &repeats, "Average over N repetitions", "N" },
+  { "max-size", 'm', 0, G_OPTION_ARG_INT, &max_size, "Test up to 2^M items", "M" },
+  { "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose, "Be verbose", NULL },
+  { "beep", 'b', 0, G_OPTION_ARG_NONE, &beep, "Beep when done", NULL },
+  { "rand", 0, 0, G_OPTION_ARG_NONE, &randomize, "Randomize the data", NULL },
+  { NULL }
+};
+
+int
+main (int argc, char *argv[])
+{
+  GError *error = NULL;
+  GOptionContext *context;
+
+  context = g_option_context_new ("- test tree model performance");
+  g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
+  g_option_context_add_group (context, gtk_get_option_group (TRUE));
+  if (!g_option_context_parse (context, &argc, &argv, &error))
+    {
+      g_print ("option parsing failed: %s\n", error->message);
+      exit (1);
+    }
+
+  ...
+
+}
+
+ +

+

On UNIX systems, the argv that is passed to main() has no particular +encoding, even to the extent that different parts of it may have +different encodings. In general, normal arguments and flags will be +in the current locale and filenames should be considered to be opaque +byte strings. Proper use of G_OPTION_ARG_FILENAME vs +G_OPTION_ARG_STRING is therefore important.

+

Note that on Windows, filenames do have an encoding, but using +GOptionContext with the argv as passed to main() will result in a +program that can only accept commandline arguments with characters +from the system codepage. This can cause problems when attempting to +deal with filenames containing Unicode characters that fall outside +of the codepage.

+

A solution to this is to use g_win32_get_command_line() and +g_option_context_parse_strv() which will properly handle full Unicode +filenames. If you are using GApplication, this is done +automatically for you.

+

The following example shows how you can use GOptionContext directly +in order to correctly deal with Unicode filenames on Windows:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
int
+main (int argc, char **argv)
+{
+  GError *error = NULL;
+  GOptionContext *context;
+  gchar **args;
+
+#ifdef G_OS_WIN32
+  args = g_win32_get_command_line ();
+#else
+  args = g_strdupv (argv);
+#endif
+
+  // set up context
+
+  if (!g_option_context_parse_strv (context, &args, &error))
+    {
+      // error happened
+    }
+
+  ...
+
+  g_strfreev (args);
+
+  ...
+}
+
+ +

+
+
+

Functions

+
+

G_OPTION_ERROR

+
#define G_OPTION_ERROR (g_option_error_quark ())
+
+

Error domain for option parsing. Errors in this domain will +be from the GOptionError enumeration. See GError for information on +error domains.

+
+
+
+

GOptionArgFunc ()

+
gboolean
+(*GOptionArgFunc) (const gchar *option_name,
+                   const gchar *value,
+                   gpointer data,
+                   GError **error);
+

The type of function to be passed as callback for G_OPTION_ARG_CALLBACK +options.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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.

 
+
+
+

Returns

+

TRUE if the option was successfully parsed, FALSE if an error +occurred, in which case error +should be set with g_set_error()

+
+
+
+
+

g_option_context_new ()

+
GOptionContext *
+g_option_context_new (const gchar *parameter_string);
+

Creates a new option context.

+

The parameter_string + can serve multiple purposes. It can be used +to add descriptions for "rest" arguments, which are not parsed by +the GOptionContext, typically something like "FILES" or +"FILE1 FILE2...". If you are using G_OPTION_REMAINING for +collecting "rest" arguments, GLib handles this automatically by +using the arg_description + of the corresponding GOptionEntry in +the usage summary.

+

Another usage is to give a short summary of the program +functionality, like " - frob the strings", which will be displayed +in the same line as the usage. For a longer description of the +program functionality that should be displayed as a paragraph +below the usage line, use g_option_context_set_summary().

+

Note that the parameter_string + is translated using the +function set with g_option_context_set_translate_func(), so +it should normally be passed untranslated.

+
+

Parameters

+
+++++ + + + + + +

parameter_string

a string which is displayed in +the first line of --help output, after the usage summary +programname [OPTION...].

[allow-none]
+
+
+

Returns

+

a newly created GOptionContext, which must be +freed with g_option_context_free() after use.

+
+

Since: 2.6

+
+
+
+

g_option_context_set_summary ()

+
void
+g_option_context_set_summary (GOptionContext *context,
+                              const gchar *summary);
+

Adds a string to be displayed in --help output before the list +of options. This is typically a summary of the program functionality.

+

Note that the summary is translated (see +g_option_context_set_translate_func() and +g_option_context_set_translation_domain()).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GOptionContext

 

summary

a string to be shown in --help output +before the list of options, or NULL.

[allow-none]
+
+

Since: 2.12

+
+
+
+

g_option_context_get_summary ()

+
const gchar *
+g_option_context_get_summary (GOptionContext *context);
+

Returns the summary. See g_option_context_set_summary().

+
+

Parameters

+
+++++ + + + + + +

context

a GOptionContext

 
+
+
+

Returns

+

the summary

+
+

Since: 2.12

+
+
+
+

g_option_context_set_description ()

+
void
+g_option_context_set_description (GOptionContext *context,
+                                  const gchar *description);
+

Adds a string to be displayed in --help output after the list +of options. This text often includes a bug reporting address.

+

Note that the summary is translated (see +g_option_context_set_translate_func()).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GOptionContext

 

description

a string to be shown in --help output +after the list of options, or NULL.

[allow-none]
+
+

Since: 2.12

+
+
+
+

g_option_context_get_description ()

+
const gchar *
+g_option_context_get_description (GOptionContext *context);
+

Returns the description. See g_option_context_set_description().

+
+

Parameters

+
+++++ + + + + + +

context

a GOptionContext

 
+
+
+

Returns

+

the description

+
+

Since: 2.12

+
+
+
+

GTranslateFunc ()

+
const gchar *
+(*GTranslateFunc) (const gchar *str,
+                   gpointer data);
+

The type of functions which are used to translate user-visible +strings, for <option>--help</option> output.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

the untranslated string

 

data

user data specified when installing the function, e.g. +in g_option_group_set_translate_func()

 
+
+
+

Returns

+

a translation of the string for the current locale. +The returned string is owned by GLib and must not be freed.

+
+
+
+
+

g_option_context_set_translate_func ()

+
void
+g_option_context_set_translate_func (GOptionContext *context,
+                                     GTranslateFunc func,
+                                     gpointer data,
+                                     GDestroyNotify destroy_notify);
+

Sets the function which is used to translate the contexts +user-visible strings, for --help output. If func + is NULL, +strings are not translated.

+

Note that option groups have their own translation functions, +this function only affects the parameter_string + (see g_option_context_new()), +the summary (see g_option_context_set_summary()) and the description +(see g_option_context_set_description()).

+

If you are using gettext(), you only need to set the translation +domain, see g_option_context_set_translation_domain().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

context

a GOptionContext

 

func

the GTranslateFunc, or NULL.

[allow-none]

data

user data to pass to func +, or NULL.

[allow-none]

destroy_notify

a function which gets called to free data +, or NULL.

[allow-none]
+
+

Since: 2.12

+
+
+
+

g_option_context_set_translation_domain ()

+
void
+g_option_context_set_translation_domain
+                               (GOptionContext *context,
+                                const gchar *domain);
+

A convenience function to use gettext() for translating +user-visible strings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GOptionContext

 

domain

the domain to use

 
+
+

Since: 2.12

+
+
+
+

g_option_context_free ()

+
void
+g_option_context_free (GOptionContext *context);
+

Frees context and all the groups which have been +added to it.

+

Please note that parsed arguments need to be freed separately (see +GOptionEntry).

+
+

Parameters

+
+++++ + + + + + +

context

a GOptionContext

 
+
+

Since: 2.6

+
+
+
+

g_option_context_parse ()

+
gboolean
+g_option_context_parse (GOptionContext *context,
+                        gint *argc,
+                        gchar ***argv,
+                        GError **error);
+

Parses the command line arguments, recognizing options +which have been added to context +. A side-effect of +calling this function is that g_set_prgname() will be +called.

+

If the parsing is successful, any parsed arguments are +removed from the array and argc + and argv + are updated +accordingly. A '--' option is stripped from argv + +unless there are unparsed options before and after it, +or some of the options after it start with '-'. In case +of an error, argc + and argv + are left unmodified.

+

If automatic --help support is enabled +(see g_option_context_set_help_enabled()), and the +argv + array contains one of the recognized help options, +this function will produce help output to stdout and +call exit (0).

+

Note that function depends on the current locale for +automatic character set conversion of string and filename +arguments.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

context

a GOptionContext

 

argc

a pointer to the number of command line arguments.

[inout][allow-none]

argv

a pointer to the array of command line arguments.

[inout][array length=argc][allow-none]

error

a return location for errors

 
+
+
+

Returns

+

TRUE if the parsing was successful, +FALSE if an error occurred

+
+

Since: 2.6

+
+
+
+

g_option_context_parse_strv ()

+
gboolean
+g_option_context_parse_strv (GOptionContext *context,
+                             gchar ***arguments,
+                             GError **error);
+

Parses the command line arguments.

+

This function is similar to g_option_context_parse() except that it +respects the normal memory rules when dealing with a strv instead of +assuming that the passed-in array is the argv of the main function.

+

In particular, strings that are removed from the arguments list will +be freed using g_free().

+

On Windows, the strings are expected to be in UTF-8. This is in +contrast to g_option_context_parse() which expects them to be in the +system codepage, which is how they are passed as argv + to main(). +See g_win32_get_command_line() for a solution.

+

This function is useful if you are trying to use GOptionContext with +GApplication.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

context

a GOptionContext

 

arguments

a pointer to the +command line arguments (which must be in UTF-8 on Windows).

[inout][array null-terminated=1]

error

a return location for errors

 
+
+
+

Returns

+

TRUE if the parsing was successful, +FALSE if an error occurred

+
+

Since: 2.40

+
+
+
+

g_option_context_set_help_enabled ()

+
void
+g_option_context_set_help_enabled (GOptionContext *context,
+                                   gboolean help_enabled);
+

Enables or disables automatic generation of --help output. +By default, g_option_context_parse() recognizes --help, -h, +-?, --help-all and --help-groupname and creates suitable +output to stdout.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GOptionContext

 

help_enabled

TRUE to enable --help, FALSE to disable it

 
+
+

Since: 2.6

+
+
+
+

g_option_context_get_help_enabled ()

+
gboolean
+g_option_context_get_help_enabled (GOptionContext *context);
+

Returns whether automatic --help generation +is turned on for context +. See g_option_context_set_help_enabled().

+
+

Parameters

+
+++++ + + + + + +

context

a GOptionContext

 
+
+
+

Returns

+

TRUE if automatic help generation is turned on.

+
+

Since: 2.6

+
+
+
+

g_option_context_set_ignore_unknown_options ()

+
void
+g_option_context_set_ignore_unknown_options
+                               (GOptionContext *context,
+                                gboolean ignore_unknown);
+

Sets whether to ignore unknown options or not. If an argument is +ignored, it is left in the argv + array after parsing. By default, +g_option_context_parse() treats unknown options as error.

+

This setting does not affect non-option arguments (i.e. arguments +which don't start with a dash). But note that GOption cannot reliably +determine whether a non-option belongs to a preceding unknown option.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GOptionContext

 

ignore_unknown

TRUE to ignore unknown options, FALSE to produce +an error when unknown options are met

 
+
+

Since: 2.6

+
+
+
+

g_option_context_get_ignore_unknown_options ()

+
gboolean
+g_option_context_get_ignore_unknown_options
+                               (GOptionContext *context);
+

Returns whether unknown options are ignored or not. See +g_option_context_set_ignore_unknown_options().

+
+

Parameters

+
+++++ + + + + + +

context

a GOptionContext

 
+
+
+

Returns

+

TRUE if unknown options are ignored.

+
+

Since: 2.6

+
+
+
+

g_option_context_get_help ()

+
gchar *
+g_option_context_get_help (GOptionContext *context,
+                           gboolean main_help,
+                           GOptionGroup *group);
+

Returns a formatted, translated help text for the given context. +To obtain the text produced by --help, call +g_option_context_get_help (context, TRUE, NULL). +To obtain the text produced by --help-all, call +g_option_context_get_help (context, FALSE, NULL). +To obtain the help text for an option group, call +g_option_context_get_help (context, FALSE, group).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

context

a GOptionContext

 

main_help

if TRUE, only include the main group

 

group

the GOptionGroup to create help for, or NULL.

[allow-none]
+
+
+

Returns

+

A newly allocated string containing the help text

+
+

Since: 2.14

+
+
+
+

g_option_context_get_strict_posix ()

+
gboolean
+g_option_context_get_strict_posix (GOptionContext *context);
+

Returns whether strict POSIX code is enabled.

+

See g_option_context_set_strict_posix() for more information.

+
+

Parameters

+
+++++ + + + + + +

context

a GoptionContext

 
+
+
+

Returns

+

TRUE if strict POSIX is enabled, FALSE otherwise.

+
+

Since: 2.44

+
+
+
+

g_option_context_set_strict_posix ()

+
void
+g_option_context_set_strict_posix (GOptionContext *context,
+                                   gboolean strict_posix);
+

Sets strict POSIX mode.

+

By default, this mode is disabled.

+

In strict POSIX mode, the first non-argument parameter encountered +(eg: filename) terminates argument processing. Remaining arguments +are treated as non-options and are not attempted to be parsed.

+

If strict POSIX mode is disabled then parsing is done in the GNU way +where option arguments can be freely mixed with non-options.

+

As an example, consider "ls foo -l". With GNU style parsing, this +will list "foo" in long mode. In strict POSIX style, this will list +the files named "foo" and "-l".

+

It may be useful to force strict POSIX mode when creating "verb +style" command line tools. For example, the "gsettings" command line +tool supports the global option "--schemadir" as well as many +subcommands ("get", "set", etc.) which each have their own set of +arguments. Using strict POSIX mode will allow parsing the global +options up to the verb name while leaving the remaining options to be +parsed by the relevant subcommand (which can be determined by +examining the verb name, which should be present in argv[1] after +parsing).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GoptionContext

 

strict_posix

the new value

 
+
+

Since: 2.44

+
+
+
+

g_option_context_add_main_entries ()

+
void
+g_option_context_add_main_entries (GOptionContext *context,
+                                   const GOptionEntry *entries,
+                                   const gchar *translation_domain);
+

A convenience function which creates a main group if it doesn't +exist, adds the entries + to it and sets the translation domain.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

context

a GOptionContext

 

entries

a NULL-terminated array of GOptionEntrys

 

translation_domain

a translation domain to use for translating +the --help output for the options in entries +with gettext(), or NULL.

[allow-none]
+
+

Since: 2.6

+
+
+
+

g_option_context_add_group ()

+
void
+g_option_context_add_group (GOptionContext *context,
+                            GOptionGroup *group);
+

Adds a GOptionGroup to the context +, so that parsing with context + +will recognize the options in the group. Note that this will take +ownership of the group + and thus the group + should not be freed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GOptionContext

 

group

the group to add.

[transfer full]
+
+

Since: 2.6

+
+
+
+

g_option_context_set_main_group ()

+
void
+g_option_context_set_main_group (GOptionContext *context,
+                                 GOptionGroup *group);
+

Sets a GOptionGroup as main group of the context +. +This has the same effect as calling g_option_context_add_group(), +the only difference is that the options in the main group are +treated differently when generating --help output.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GOptionContext

 

group

the group to set as main group.

[transfer full]
+
+

Since: 2.6

+
+
+
+

g_option_context_get_main_group ()

+
GOptionGroup *
+g_option_context_get_main_group (GOptionContext *context);
+

Returns a pointer to the main group of context +.

+
+

Parameters

+
+++++ + + + + + +

context

a GOptionContext

 
+
+
+

Returns

+

the main group of context +, or NULL if +context +doesn't have a main group. Note that group belongs to +context +and should not be modified or freed.

+

[transfer none]

+
+

Since: 2.6

+
+
+
+

g_option_group_new ()

+
GOptionGroup *
+g_option_group_new (const gchar *name,
+                    const gchar *description,
+                    const gchar *help_description,
+                    gpointer user_data,
+                    GDestroyNotify destroy);
+

Creates a new GOptionGroup.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

the name for the option group, this is used to provide +help for the options in this group with --help-name +

 

description

a description for this group to be shown in +--help. This string is translated using the translation +domain or translation function of the group

 

help_description

a description for the --help-name +option. +This string is translated using the translation domain or translation function +of the group

 

user_data

user data that will be passed to the pre- and post-parse hooks, +the error hook and to callbacks of G_OPTION_ARG_CALLBACK options, or NULL.

[allow-none]

destroy

a function that will be called to free user_data +, or NULL.

[allow-none]
+
+
+

Returns

+

a newly created option group. It should be added +to a GOptionContext or freed with g_option_group_unref().

+
+

Since: 2.6

+
+
+
+

g_option_group_ref ()

+
GOptionGroup *
+g_option_group_ref (GOptionGroup *group);
+

Increments the reference count of group + by one.

+
+

Parameters

+
+++++ + + + + + +

group

a GOptionGroup

 
+
+
+

Returns

+

a GoptionGroup

+
+

Since: 2.44

+
+
+
+

g_option_group_unref ()

+
void
+g_option_group_unref (GOptionGroup *group);
+

Decrements the reference count of group + by one. +If the reference count drops to 0, the group + will be freed. +and all memory allocated by the group + is released.

+
+

Parameters

+
+++++ + + + + + +

group

a GOptionGroup

 
+
+

Since: 2.44

+
+
+
+

g_option_group_free ()

+
void
+g_option_group_free (GOptionGroup *group);
+
+

g_option_group_free has been deprecated since version 2.44 and should not be used in newly-written code.

+

Use g_option_group_unref() instead.

+
+

Frees a GOptionGroup. Note that you must not free groups +which have been added to a GOptionContext.

+
+

Parameters

+
+++++ + + + + + +

group

a GOptionGroup

 
+
+

Since: 2.6

+
+
+
+

g_option_group_add_entries ()

+
void
+g_option_group_add_entries (GOptionGroup *group,
+                            const GOptionEntry *entries);
+

Adds the options specified in entries + to group +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

group

a GOptionGroup

 

entries

a NULL-terminated array of GOptionEntrys

 
+
+

Since: 2.6

+
+
+
+

GOptionParseFunc ()

+
gboolean
+(*GOptionParseFunc) (GOptionContext *context,
+                     GOptionGroup *group,
+                     gpointer data,
+                     GError **error);
+

The type of function that can be called before and after parsing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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

 
+
+
+

Returns

+

TRUE if the function completed successfully, FALSE if an error +occurred, in which case error +should be set with g_set_error()

+
+
+
+
+

g_option_group_set_parse_hooks ()

+
void
+g_option_group_set_parse_hooks (GOptionGroup *group,
+                                GOptionParseFunc pre_parse_func,
+                                GOptionParseFunc post_parse_func);
+

Associates two functions with group + which will be called +from g_option_context_parse() before the first option is parsed +and after the last option has been parsed, respectively.

+

Note that the user data to be passed to pre_parse_func + and +post_parse_func + can be specified when constructing the group +with g_option_group_new().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

group

a GOptionGroup

 

pre_parse_func

a function to call before parsing, or NULL.

[allow-none]

post_parse_func

a function to call after parsing, or NULL.

[allow-none]
+
+

Since: 2.6

+
+
+
+

GOptionErrorFunc ()

+
void
+(*GOptionErrorFunc) (GOptionContext *context,
+                     GOptionGroup *group,
+                     gpointer data,
+                     GError **error);
+

The type of function to be used as callback when a parse error occurs.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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

 
+
+
+
+
+

g_option_group_set_error_hook ()

+
void
+g_option_group_set_error_hook (GOptionGroup *group,
+                               GOptionErrorFunc error_func);
+

Associates a function with group + which will be called +from g_option_context_parse() when an error occurs.

+

Note that the user data to be passed to error_func + can be +specified when constructing the group with g_option_group_new().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

group

a GOptionGroup

 

error_func

a function to call when an error occurs

 
+
+

Since: 2.6

+
+
+
+

g_option_group_set_translate_func ()

+
void
+g_option_group_set_translate_func (GOptionGroup *group,
+                                   GTranslateFunc func,
+                                   gpointer data,
+                                   GDestroyNotify destroy_notify);
+

Sets the function which is used to translate user-visible strings, +for --help output. Different groups can use different +GTranslateFuncs. If func + is NULL, strings are not translated.

+

If you are using gettext(), you only need to set the translation +domain, see g_option_group_set_translation_domain().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

group

a GOptionGroup

 

func

the GTranslateFunc, or NULL.

[allow-none]

data

user data to pass to func +, or NULL.

[allow-none]

destroy_notify

a function which gets called to free data +, or NULL.

[allow-none]
+
+

Since: 2.6

+
+
+
+

g_option_group_set_translation_domain ()

+
void
+g_option_group_set_translation_domain (GOptionGroup *group,
+                                       const gchar *domain);
+

A convenience function to use gettext() for translating +user-visible strings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

group

a GOptionGroup

 

domain

the domain to use

 
+
+

Since: 2.6

+
+
+
+

Types and Values

+
+

enum GOptionError

+

Error codes returned by option parsing.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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.

+
 
+
+
+
+
+

GOptionContext

+
typedef struct _GOptionContext GOptionContext;
+

A GOptionContext struct defines which options +are accepted by the commandline option parser. The struct has only private +fields and should not be directly accessed.

+
+
+
+

enum GOptionArg

+

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: -x arg, with a long +option: --name arg or combined in a single argument: --name=arg.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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 (of type + GOptionArgFunc) 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 0x, for + example, 0xffffffff). Since 2.12

+
 
+
+
+
+
+

enum GOptionFlags

+

Flags which modify individual options.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_OPTION_FLAG_NONE

+

No flags. Since: 2.42.

+
 

G_OPTION_FLAG_HIDDEN

+

The option doesn't appear in --help output.

+
 

G_OPTION_FLAG_IN_MAIN

+

The option appears in the main section of the + --help 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 groupname- 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.

+
 
+
+
+
+
+

G_OPTION_REMAINING

+
#define 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 argv. 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 argv +for leftover arguments has the advantage that GOption takes care of +necessary encoding conversions for strings or filenames.

+

Since: 2.6

+
+
+
+

struct GOptionEntry

+
struct GOptionEntry {
+  const gchar *long_name;
+  gchar        short_name;
+  gint         flags;
+
+  GOptionArg   arg;
+  gpointer     arg_data;
+  
+  const gchar *description;
+  const gchar *arg_description;
+};
+
+

A GOptionEntry struct 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().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

const gchar *long_name;

The long name of an option can be used to specify it +in a commandline as --long_name. 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 +--groupname-long_name.

 

gchar short_name;

If an option has a short name, it can be specified +-short_name in a commandline. short_name +must be a printable +ASCII character different from '-', or zero if the option has no +short name.

 

gint flags;

Flags from GOptionFlags

 

GOptionArg arg;

The type of the option, as a GOptionArg

 

gpointer 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:

+
+
 

const gchar *description;

the description for the option in --help +output. The description +is translated using the translate_func +of the group, see g_option_group_set_translation_domain().

 

const gchar *arg_description;

The placeholder to use for the extra argument parsed +by the option in --help output. The arg_description +is translated +using the translate_func +of the group, see +g_option_group_set_translation_domain().

 
+
+
+
+
+

GOptionGroup

+
typedef struct _GOptionGroup GOptionGroup;
+

A GOptionGroup 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 GOptionGroup holding their options, which +the application can then add to its GOptionContext.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Data-Checksums.html b/docs/reference/glib/html/glib-Data-Checksums.html new file mode 100644 index 0000000..910d8e8 --- /dev/null +++ b/docs/reference/glib/html/glib-Data-Checksums.html @@ -0,0 +1,638 @@ + + + + +Data Checksums: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Data Checksums

+

Data Checksums — computes the checksum for data

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gssize + +g_checksum_type_get_length () +
+GChecksum * + +g_checksum_new () +
+GChecksum * + +g_checksum_copy () +
+void + +g_checksum_free () +
+void + +g_checksum_reset () +
+void + +g_checksum_update () +
const gchar * + +g_checksum_get_string () +
+void + +g_checksum_get_digest () +
+gchar * + +g_compute_checksum_for_data () +
+gchar * + +g_compute_checksum_for_string () +
+gchar * + +g_compute_checksum_for_bytes () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
enumGChecksumType
 GChecksum
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GLib provides a generic API for computing checksums (or "digests") +for a sequence of arbitrary bytes, using various hashing algorithms +like MD5, SHA-1 and SHA-256. Checksums are commonly used in various +environments and specifications.

+

GLib supports incremental checksums using the GChecksum data +structure, by calling g_checksum_update() as long as there's data +available and then using g_checksum_get_string() or +g_checksum_get_digest() to compute the checksum and return it either +as a string in hexadecimal form, or as a raw sequence of bytes. To +compute the checksum for binary blobs and NUL-terminated strings in +one go, use the convenience functions g_compute_checksum_for_data() +and g_compute_checksum_for_string(), respectively.

+

Support for checksums has been added in GLib 2.16

+
+
+

Functions

+
+

g_checksum_type_get_length ()

+
gssize
+g_checksum_type_get_length (GChecksumType checksum_type);
+

Gets the length in bytes of digests of type checksum_type +

+
+

Parameters

+
+++++ + + + + + +

checksum_type

a GChecksumType

 
+
+
+

Returns

+

the checksum length, or -1 if checksum_type +is +not supported.

+
+

Since: 2.16

+
+
+
+

g_checksum_new ()

+
GChecksum *
+g_checksum_new (GChecksumType checksum_type);
+

Creates a new GChecksum, using the checksum algorithm checksum_type +. +If the checksum_type + is not known, NULL is returned. +A GChecksum can be used to compute the checksum, or digest, of an +arbitrary binary blob, using different hashing algorithms.

+

A GChecksum works by feeding a binary blob through g_checksum_update() +until there is data to be checked; the digest can then be extracted +using g_checksum_get_string(), which will return the checksum as a +hexadecimal string; or g_checksum_get_digest(), which will return a +vector of raw bytes. Once either g_checksum_get_string() or +g_checksum_get_digest() have been called on a GChecksum, the checksum +will be closed and it won't be possible to call g_checksum_update() +on it anymore.

+
+

Parameters

+
+++++ + + + + + +

checksum_type

the desired type of checksum

 
+
+
+

Returns

+

the newly created GChecksum, or NULL. +Use g_checksum_free() to free the memory allocated by it.

+

[transfer full]

+
+

Since: 2.16

+
+
+
+

g_checksum_copy ()

+
GChecksum *
+g_checksum_copy (const GChecksum *checksum);
+

Copies a GChecksum. If checksum + has been closed, by calling +g_checksum_get_string() or g_checksum_get_digest(), the copied +checksum will be closed as well.

+
+

Parameters

+
+++++ + + + + + +

checksum

the GChecksum to copy

 
+
+
+

Returns

+

the copy of the passed GChecksum. Use g_checksum_free() +when finished using it.

+
+

Since: 2.16

+
+
+
+

g_checksum_free ()

+
void
+g_checksum_free (GChecksum *checksum);
+

Frees the memory allocated for checksum +.

+
+

Parameters

+
+++++ + + + + + +

checksum

a GChecksum

 
+
+

Since: 2.16

+
+
+
+

g_checksum_reset ()

+
void
+g_checksum_reset (GChecksum *checksum);
+

Resets the state of the checksum + back to its initial state.

+
+

Parameters

+
+++++ + + + + + +

checksum

the GChecksum to reset

 
+
+

Since: 2.18

+
+
+
+

g_checksum_update ()

+
void
+g_checksum_update (GChecksum *checksum,
+                   const guchar *data,
+                   gssize length);
+

Feeds data + into an existing GChecksum. The checksum must still be +open, that is g_checksum_get_string() or g_checksum_get_digest() must +not have been called on checksum +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

checksum

a GChecksum

 

data

buffer used to compute the checksum.

[array length=length][element-type guint8]

length

size of the buffer, or -1 if it is a null-terminated string.

 
+
+

Since: 2.16

+
+
+
+

g_checksum_get_string ()

+
const gchar *
+g_checksum_get_string (GChecksum *checksum);
+

Gets the digest as an hexadecimal string.

+

Once this function has been called the GChecksum can no longer be +updated with g_checksum_update().

+

The hexadecimal characters will be lower case.

+
+

Parameters

+
+++++ + + + + + +

checksum

a GChecksum

 
+
+
+

Returns

+

the hexadecimal representation of the checksum. The +returned string is owned by the checksum and should not be modified +or freed.

+
+

Since: 2.16

+
+
+
+

g_checksum_get_digest ()

+
void
+g_checksum_get_digest (GChecksum *checksum,
+                       guint8 *buffer,
+                       gsize *digest_len);
+

Gets the digest from checksum + as a raw binary vector and places it +into buffer +. The size of the digest depends on the type of checksum.

+

Once this function has been called, the GChecksum is closed and can +no longer be updated with g_checksum_update().

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

checksum

a GChecksum

 

buffer

output buffer

 

digest_len

an inout parameter. The caller initializes it to the size of buffer +. +After the call it contains the length of the digest.

 
+
+

Since: 2.16

+
+
+
+

g_compute_checksum_for_data ()

+
gchar *
+g_compute_checksum_for_data (GChecksumType checksum_type,
+                             const guchar *data,
+                             gsize length);
+

Computes the checksum for a binary data + of length +. This is a +convenience wrapper for g_checksum_new(), g_checksum_get_string() +and g_checksum_free().

+

The hexadecimal string returned will be in lower case.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

checksum_type

a GChecksumType

 

data

binary blob to compute the digest of.

[array length=length][element-type guint8]

length

length of data +

 
+
+
+

Returns

+

the digest of the binary data as a string in hexadecimal. +The returned string should be freed with g_free() when done using it.

+
+

Since: 2.16

+
+
+
+

g_compute_checksum_for_string ()

+
gchar *
+g_compute_checksum_for_string (GChecksumType checksum_type,
+                               const gchar *str,
+                               gssize length);
+

Computes the checksum of a string.

+

The hexadecimal string returned will be in lower case.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

checksum_type

a GChecksumType

 

str

the string to compute the checksum of

 

length

the length of the string, or -1 if the string is null-terminated.

 
+
+
+

Returns

+

the checksum as a hexadecimal string. The returned string +should be freed with g_free() when done using it.

+
+

Since: 2.16

+
+
+
+

g_compute_checksum_for_bytes ()

+
gchar *
+g_compute_checksum_for_bytes (GChecksumType checksum_type,
+                              GBytes *data);
+

Computes the checksum for a binary data +. This is a +convenience wrapper for g_checksum_new(), g_checksum_get_string() +and g_checksum_free().

+

The hexadecimal string returned will be in lower case.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

checksum_type

a GChecksumType

 

data

binary blob to compute the digest of

 
+
+
+

Returns

+

the digest of the binary data as a string in hexadecimal. +The returned string should be freed with g_free() when done using it.

+
+

Since: 2.34

+
+
+
+

Types and Values

+
+

enum GChecksumType

+

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.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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

+
 
+
+

Since: 2.16

+
+
+
+

GChecksum

+
typedef struct _GChecksum 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

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Data-HMACs.html b/docs/reference/glib/html/glib-Data-HMACs.html new file mode 100644 index 0000000..0b7cabf --- /dev/null +++ b/docs/reference/glib/html/glib-Data-HMACs.html @@ -0,0 +1,542 @@ + + + + +Secure HMAC Digests: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Secure HMAC Digests

+

Secure HMAC Digests — computes the HMAC for data

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GHmac * + +g_hmac_new () +
+GHmac * + +g_hmac_copy () +
+GHmac * + +g_hmac_ref () +
+void + +g_hmac_unref () +
+void + +g_hmac_update () +
const gchar * + +g_hmac_get_string () +
+void + +g_hmac_get_digest () +
+gchar * + +g_compute_hmac_for_data () +
+gchar * + +g_compute_hmac_for_string () +
+
+
+

Types and Values

+
++++ + + + + +
 GHmac
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

HMACs should be used when producing a cookie or hash based on data +and a key. Simple mechanisms for using SHA1 and other algorithms to +digest a key and data together are vulnerable to various security +issues. +HMAC +uses algorithms like SHA1 in a secure way to produce a digest of a +key and data.

+

Both the key and data are arbitrary byte arrays of bytes or characters.

+

Support for HMAC Digests has been added in GLib 2.30, and support for SHA-512 +in GLib 2.42.

+
+
+

Functions

+
+

g_hmac_new ()

+
GHmac *
+g_hmac_new (GChecksumType digest_type,
+            const guchar *key,
+            gsize key_len);
+

Creates a new GHmac, using the digest algorithm digest_type +. +If the digest_type + is not known, NULL is returned. +A GHmac can be used to compute the HMAC of a key and an +arbitrary binary blob, using different hashing algorithms.

+

A GHmac works by feeding a binary blob through g_hmac_update() +until the data is complete; the digest can then be extracted +using g_hmac_get_string(), which will return the checksum as a +hexadecimal string; or g_hmac_get_digest(), which will return a +array of raw bytes. Once either g_hmac_get_string() or +g_hmac_get_digest() have been called on a GHmac, the HMAC +will be closed and it won't be possible to call g_hmac_update() +on it anymore.

+

Support for digests of type G_CHECKSUM_SHA512 has been added in GLib 2.42.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

digest_type

the desired type of digest

 

key

the key for the HMAC.

[array length=key_len]

key_len

the length of the keys

 
+
+
+

Returns

+

the newly created GHmac, or NULL. +Use g_hmac_unref() to free the memory allocated by it.

+
+

Since: 2.30

+
+
+
+

g_hmac_copy ()

+
GHmac *
+g_hmac_copy (const GHmac *hmac);
+

Copies a GHmac. If hmac + has been closed, by calling +g_hmac_get_string() or g_hmac_get_digest(), the copied +HMAC will be closed as well.

+
+

Parameters

+
+++++ + + + + + +

hmac

the GHmac to copy

 
+
+
+

Returns

+

the copy of the passed GHmac. Use g_hmac_unref() +when finished using it.

+
+

Since: 2.30

+
+
+
+

g_hmac_ref ()

+
GHmac *
+g_hmac_ref (GHmac *hmac);
+

Atomically increments the reference count of hmac + by one.

+

This function is MT-safe and may be called from any thread.

+
+

Parameters

+
+++++ + + + + + +

hmac

a valid GHmac

 
+
+
+

Returns

+

the passed in GHmac.

+
+

Since: 2.30

+
+
+
+

g_hmac_unref ()

+
void
+g_hmac_unref (GHmac *hmac);
+

Atomically decrements the reference count of hmac + by one.

+

If the reference count drops to 0, all keys and values will be +destroyed, and all memory allocated by the hash table is released. +This function is MT-safe and may be called from any thread. +Frees the memory allocated for hmac +.

+
+

Parameters

+
+++++ + + + + + +

hmac

a GHmac

 
+
+

Since: 2.30

+
+
+
+

g_hmac_update ()

+
void
+g_hmac_update (GHmac *hmac,
+               const guchar *data,
+               gssize length);
+

Feeds data + into an existing GHmac.

+

The HMAC must still be open, that is g_hmac_get_string() or +g_hmac_get_digest() must not have been called on hmac +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

hmac

a GHmac

 

data

buffer used to compute the checksum.

[array length=length]

length

size of the buffer, or -1 if it is a nul-terminated string

 
+
+

Since: 2.30

+
+
+
+

g_hmac_get_string ()

+
const gchar *
+g_hmac_get_string (GHmac *hmac);
+

Gets the HMAC as an hexadecimal string.

+

Once this function has been called the GHmac can no longer be +updated with g_hmac_update().

+

The hexadecimal characters will be lower case.

+
+

Parameters

+
+++++ + + + + + +

hmac

a GHmac

 
+
+
+

Returns

+

the hexadecimal representation of the HMAC. The +returned string is owned by the HMAC and should not be modified +or freed.

+
+

Since: 2.30

+
+
+
+

g_hmac_get_digest ()

+
void
+g_hmac_get_digest (GHmac *hmac,
+                   guint8 *buffer,
+                   gsize *digest_len);
+

Gets the digest from checksum + as a raw binary array and places it +into buffer +. The size of the digest depends on the type of checksum.

+

Once this function has been called, the GHmac is closed and can +no longer be updated with g_checksum_update().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

hmac

a GHmac

 

buffer

output buffer

 

digest_len

an inout parameter. The caller initializes it to the +size of buffer +. After the call it contains the length of the digest

 
+
+

Since: 2.30

+
+
+
+

g_compute_hmac_for_data ()

+
gchar *
+g_compute_hmac_for_data (GChecksumType digest_type,
+                         const guchar *key,
+                         gsize key_len,
+                         const guchar *data,
+                         gsize length);
+

Computes the HMAC for a binary data + of length +. This is a +convenience wrapper for g_hmac_new(), g_hmac_get_string() +and g_hmac_unref().

+

The hexadecimal string returned will be in lower case.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

digest_type

a GChecksumType to use for the HMAC

 

key

the key to use in the HMAC.

[array length=key_len]

key_len

the length of the key

 

data

binary blob to compute the HMAC of

 

length

length of data +

 
+
+
+

Returns

+

the HMAC of the binary data as a string in hexadecimal. +The returned string should be freed with g_free() when done using it.

+
+

Since: 2.30

+
+
+
+

g_compute_hmac_for_string ()

+
gchar *
+g_compute_hmac_for_string (GChecksumType digest_type,
+                           const guchar *key,
+                           gsize key_len,
+                           const gchar *str,
+                           gssize length);
+

Computes the HMAC for a string.

+

The hexadecimal string returned will be in lower case.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

digest_type

a GChecksumType to use for the HMAC

 

key

the key to use in the HMAC.

[array length=key_len]

key_len

the length of the key

 

str

the string to compute the HMAC for

 

length

the length of the string, or -1 if the string is nul-terminated

 
+
+
+

Returns

+

the HMAC as a hexadecimal string. +The returned string should be freed with g_free() +when done using it.

+
+

Since: 2.30

+
+
+
+

Types and Values

+
+

GHmac

+
typedef struct _GHmac 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

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Datasets.html b/docs/reference/glib/html/glib-Datasets.html new file mode 100644 index 0000000..8f12932 --- /dev/null +++ b/docs/reference/glib/html/glib-Datasets.html @@ -0,0 +1,658 @@ + + + + +Datasets: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Datasets

+

Datasets — associate groups of data elements with + particular memory locations

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define +g_dataset_id_set_data() +
+void + +g_dataset_id_set_data_full () +
+void + +(*GDestroyNotify) () +
+gpointer + +g_dataset_id_get_data () +
#define +g_dataset_id_remove_data() +
+gpointer + +g_dataset_id_remove_no_notify () +
#define +g_dataset_set_data() +
#define +g_dataset_set_data_full() +
#define +g_dataset_get_data() +
#define +g_dataset_remove_data() +
#define +g_dataset_remove_no_notify() +
+void + +g_dataset_foreach () +
+void + +(*GDataForeachFunc) () +
+void + +g_dataset_destroy () +
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

Datasets associate groups of data elements with particular memory +locations. These are useful if you need to associate data with a +structure returned from an external library. Since you cannot modify +the structure, you use its location in memory as the key into a +dataset, where you can associate any number of data elements with it.

+

There are two forms of most of the dataset functions. The first form +uses strings to identify the data elements associated with a +location. The second form uses GQuark identifiers, which are +created with a call to g_quark_from_string() or +g_quark_from_static_string(). The second form is quicker, since it +does not require looking up the string in the hash table of GQuark +identifiers.

+

There is no function to create a dataset. It is automatically +created as soon as you add elements to it.

+

To add data elements to a dataset use g_dataset_id_set_data(), +g_dataset_id_set_data_full(), g_dataset_set_data() and +g_dataset_set_data_full().

+

To get data elements from a dataset use g_dataset_id_get_data() and +g_dataset_get_data().

+

To iterate over all data elements in a dataset use +g_dataset_foreach() (not thread-safe).

+

To remove data elements from a dataset use +g_dataset_id_remove_data() and g_dataset_remove_data().

+

To destroy a dataset, use g_dataset_destroy().

+
+
+

Functions

+
+

g_dataset_id_set_data()

+
#define             g_dataset_id_set_data(l, k, d)
+

Sets the data element associated with the given GQuark id. Any +previous data with the same key is removed, and its destroy function +is called.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

l

the location identifying the dataset.

 

k

the GQuark id to identify the data element.

 

d

the data element.

 
+
+
+
+
+

g_dataset_id_set_data_full ()

+
void
+g_dataset_id_set_data_full (gconstpointer dataset_location,
+                            GQuark key_id,
+                            gpointer data,
+                            GDestroyNotify destroy_func);
+

Sets the data element associated with the given GQuark id, and also +the function to call when the data element is destroyed. Any +previous data with the same key is removed, and its destroy function +is called.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

dataset_location

the location identifying the dataset.

[not nullable]

key_id

the GQuark id to identify the data element.

 

data

the data element.

 

destroy_func

the function to call when the data element is +removed. This function will be called with the data +element and can be used to free any memory allocated +for it.

 
+
+
+
+
+

GDestroyNotify ()

+
void
+(*GDestroyNotify) (gpointer data);
+

Specifies the type of function which is called when a data element +is destroyed. It is passed the pointer to the data element and +should free any memory and resources allocated for it.

+
+

Parameters

+
+++++ + + + + + +

data

the data element.

 
+
+
+
+
+

g_dataset_id_get_data ()

+
gpointer
+g_dataset_id_get_data (gconstpointer dataset_location,
+                       GQuark key_id);
+

Gets the data element corresponding to a GQuark.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

dataset_location

the location identifying the dataset.

[not nullable]

key_id

the GQuark id to identify the data element.

 
+
+
+

Returns

+

the data element corresponding to the GQuark, or NULL if +it is not found.

+
+
+
+
+

g_dataset_id_remove_data()

+
#define             g_dataset_id_remove_data(l, k)
+

Removes a data element from a dataset. The data element's destroy +function is called if it has been set.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

l

the location identifying the dataset.

 

k

the GQuark id identifying the data element.

 
+
+
+
+
+

g_dataset_id_remove_no_notify ()

+
gpointer
+g_dataset_id_remove_no_notify (gconstpointer dataset_location,
+                               GQuark key_id);
+

Removes an element, without calling its destroy notification +function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

dataset_location

the location identifying the dataset.

[not nullable]

key_id

the GQuark ID identifying the data element.

 
+
+
+

Returns

+

the data previously stored at key_id +, or NULL if none.

+
+
+
+
+

g_dataset_set_data()

+
#define             g_dataset_set_data(l, k, d)
+

Sets the data corresponding to the given string identifier.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

l

the location identifying the dataset.

 

k

the string to identify the data element.

 

d

the data element.

 
+
+
+
+
+

g_dataset_set_data_full()

+
#define             g_dataset_set_data_full(l, k, d, f)
+

Sets the data corresponding to the given string identifier, and the +function to call when the data element is destroyed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

l

the location identifying the dataset.

 

k

the string to identify the data element.

 

d

the data element.

 

f

the function to call when the data element is removed. This +function will be called with the data element and can be used to +free any memory allocated for it.

 
+
+
+
+
+

g_dataset_get_data()

+
#define             g_dataset_get_data(l, k)
+

Gets the data element corresponding to a string.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

l

the location identifying the dataset.

 

k

the string identifying the data element.

 
+
+
+

Returns

+

the data element corresponding to the string, or NULL if +it is not found.

+
+
+
+
+

g_dataset_remove_data()

+
#define             g_dataset_remove_data(l, k)
+

Removes a data element corresponding to a string. Its destroy +function is called if it has been set.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

l

the location identifying the dataset.

 

k

the string identifying the data element.

 
+
+
+
+
+

g_dataset_remove_no_notify()

+
#define             g_dataset_remove_no_notify(l, k)
+

Removes an element, without calling its destroy notifier.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

l

the location identifying the dataset.

 

k

the string identifying the data element.

 
+
+
+
+
+

g_dataset_foreach ()

+
void
+g_dataset_foreach (gconstpointer dataset_location,
+                   GDataForeachFunc func,
+                   gpointer user_data);
+

Calls the given function for each data element which is associated +with the given location. Note that this function is NOT thread-safe. +So unless datalist + can be protected from any modifications during +invocation of this function, it should not be called.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dataset_location

the location identifying the dataset.

[not nullable]

func

the function to call for each data element.

 

user_data

user data to pass to the function.

 
+
+
+
+
+

GDataForeachFunc ()

+
void
+(*GDataForeachFunc) (GQuark key_id,
+                     gpointer data,
+                     gpointer user_data);
+

Specifies the type of function passed to g_dataset_foreach(). It is +called with each GQuark id and associated data element, together +with the user_data + parameter supplied to g_dataset_foreach().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

key_id

the GQuark id to identifying the data element.

 

data

the data element.

 

user_data

user data passed to g_dataset_foreach().

 
+
+
+
+
+

g_dataset_destroy ()

+
void
+g_dataset_destroy (gconstpointer dataset_location);
+

Destroys the dataset, freeing all memory allocated, and calling any +destroy functions set for data elements.

+
+

Parameters

+
+++++ + + + + + +

dataset_location

the location identifying the dataset.

[not nullable]
+
+
+
+
+

Types and Values

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Date-and-Time-Functions.html b/docs/reference/glib/html/glib-Date-and-Time-Functions.html new file mode 100644 index 0000000..231c45a --- /dev/null +++ b/docs/reference/glib/html/glib-Date-and-Time-Functions.html @@ -0,0 +1,2775 @@ + + + + +Date and Time Functions: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Date and Time Functions

+

Date and Time Functions — calendrical calculations and miscellaneous time stuff

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +g_get_current_time () +
+void + +g_usleep () +
+void + +g_time_val_add () +
+gboolean + +g_time_val_from_iso8601 () +
+gchar * + +g_time_val_to_iso8601 () +
+gint64 + +g_get_monotonic_time () +
+gint64 + +g_get_real_time () +
+GDate * + +g_date_new () +
+GDate * + +g_date_new_dmy () +
+GDate * + +g_date_new_julian () +
+void + +g_date_clear () +
+void + +g_date_free () +
+void + +g_date_set_day () +
+void + +g_date_set_month () +
+void + +g_date_set_year () +
+void + +g_date_set_dmy () +
+void + +g_date_set_julian () +
+void + +g_date_set_time () +
+void + +g_date_set_time_t () +
+void + +g_date_set_time_val () +
+void + +g_date_set_parse () +
+void + +g_date_add_days () +
+void + +g_date_subtract_days () +
+void + +g_date_add_months () +
+void + +g_date_subtract_months () +
+void + +g_date_add_years () +
+void + +g_date_subtract_years () +
+gint + +g_date_days_between () +
+gint + +g_date_compare () +
+void + +g_date_clamp () +
+void + +g_date_order () +
+GDateDay + +g_date_get_day () +
+GDateMonth + +g_date_get_month () +
+GDateYear + +g_date_get_year () +
+guint32 + +g_date_get_julian () +
+GDateWeekday + +g_date_get_weekday () +
+guint + +g_date_get_day_of_year () +
+guint8 + +g_date_get_days_in_month () +
+gboolean + +g_date_is_first_of_month () +
+gboolean + +g_date_is_last_of_month () +
+gboolean + +g_date_is_leap_year () +
+guint + +g_date_get_monday_week_of_year () +
+guint8 + +g_date_get_monday_weeks_in_year () +
+guint + +g_date_get_sunday_week_of_year () +
+guint8 + +g_date_get_sunday_weeks_in_year () +
+guint + +g_date_get_iso8601_week_of_year () +
+gsize + +g_date_strftime () +
+void + +g_date_to_struct_tm () +
+gboolean + +g_date_valid () +
+gboolean + +g_date_valid_day () +
+gboolean + +g_date_valid_month () +
+gboolean + +g_date_valid_year () +
+gboolean + +g_date_valid_dmy () +
+gboolean + +g_date_valid_julian () +
+gboolean + +g_date_valid_weekday () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#defineG_USEC_PER_SEC
structGTimeVal
structGDate
typedefGTime
enumGDateDMY
typedefGDateDay
enumGDateMonth
typedefGDateYear
enumGDateWeekday
#defineG_DATE_BAD_DAY
#defineG_DATE_BAD_JULIAN
#defineG_DATE_BAD_YEAR
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The GDate data structure represents a day between January 1, Year 1, +and sometime a few thousand years in the future (right now it will go +to the year 65535 or so, but g_date_set_parse() only parses up to the +year 8000 or so - just count on "a few thousand"). GDate is meant to +represent everyday dates, not astronomical dates or historical dates +or ISO timestamps or the like. It extrapolates the current Gregorian +calendar forward and backward in time; there is no attempt to change +the calendar to match time periods or locations. GDate does not store +time information; it represents a day.

+

The GDate implementation has several nice features; it is only a +64-bit struct, so storing large numbers of dates is very efficient. It +can keep both a Julian and day-month-year representation of the date, +since some calculations are much easier with one representation or the +other. A Julian representation is simply a count of days since some +fixed day in the past; for GDate the fixed day is January 1, 1 AD. +("Julian" dates in the GDate API aren't really Julian dates in the +technical sense; technically, Julian dates count from the start of the +Julian period, Jan 1, 4713 BC).

+

GDate is simple to use. First you need a "blank" date; you can get a +dynamically allocated date from g_date_new(), or you can declare an +automatic variable or array and initialize it to a sane state by +calling g_date_clear(). A cleared date is sane; it's safe to call +g_date_set_dmy() and the other mutator functions to initialize the +value of a cleared date. However, a cleared date is initially +invalid, meaning that it doesn't represent a day that exists. +It is undefined to call any of the date calculation routines on an +invalid date. If you obtain a date from a user or other +unpredictable source, you should check its validity with the +g_date_valid() predicate. g_date_valid() is also used to check for +errors with g_date_set_parse() and other functions that can +fail. Dates can be invalidated by calling g_date_clear() again.

+

It is very important to use the API to access the GDate +struct. Often only the day-month-year or only the Julian +representation is valid. Sometimes neither is valid. Use the API.

+

GLib also features GDateTime which represents a precise time.

+
+
+

Functions

+
+

g_get_current_time ()

+
void
+g_get_current_time (GTimeVal *result);
+

Equivalent to the UNIX gettimeofday() function, but portable.

+

You may find g_get_real_time() to be more convenient.

+
+

Parameters

+
+++++ + + + + + +

result

GTimeVal structure in which to store current time.

 
+
+
+
+
+

g_usleep ()

+
void
+g_usleep (gulong microseconds);
+

Pauses the current thread for the given number of microseconds.

+

There are 1 million microseconds per second (represented by the +G_USEC_PER_SEC macro). g_usleep() may have limited precision, +depending on hardware and operating system; don't rely on the exact +length of the sleep.

+
+

Parameters

+
+++++ + + + + + +

microseconds

number of microseconds to pause

 
+
+
+
+
+

g_time_val_add ()

+
void
+g_time_val_add (GTimeVal *time_,
+                glong microseconds);
+

Adds the given number of microseconds to time_ +. microseconds + can +also be negative to decrease the value of time_ +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

time_

a GTimeVal

 

microseconds

number of microseconds to add to time +

 
+
+
+
+
+

g_time_val_from_iso8601 ()

+
gboolean
+g_time_val_from_iso8601 (const gchar *iso_date,
+                         GTimeVal *time_);
+

Converts a string containing an ISO 8601 encoded date and time +to a GTimeVal and puts it into time_ +.

+

iso_date + must include year, month, day, hours, minutes, and +seconds. It can optionally include fractions of a second and a time +zone indicator. (In the absence of any time zone indication, the +timestamp is assumed to be in local time.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

iso_date

an ISO 8601 encoded date string

 

time_

a GTimeVal.

[out]
+
+
+

Returns

+

TRUE if the conversion was successful.

+
+

Since: 2.12

+
+
+
+

g_time_val_to_iso8601 ()

+
gchar *
+g_time_val_to_iso8601 (GTimeVal *time_);
+

Converts time_ + into an RFC 3339 encoded string, relative to the +Coordinated Universal Time (UTC). This is one of the many formats +allowed by ISO 8601.

+

ISO 8601 allows a large number of date/time formats, with or without +punctuation and optional elements. The format returned by this function +is a complete date and time, with optional punctuation included, the +UTC time zone represented as "Z", and the tv_usec + part included if +and only if it is nonzero, i.e. either +"YYYY-MM-DDTHH:MM:SSZ" or "YYYY-MM-DDTHH:MM:SS.fffffZ".

+

This corresponds to the Internet date/time format defined by +RFC 3339, +and to either of the two most-precise formats defined by +the W3C Note +Date and Time Formats. +Both of these documents are profiles of ISO 8601.

+

Use g_date_time_format() or g_strdup_printf() if a different +variation of ISO 8601 format is required.

+
+

Parameters

+
+++++ + + + + + +

time_

a GTimeVal

 
+
+
+

Returns

+

a newly allocated string containing an ISO 8601 date

+
+

Since: 2.12

+
+
+
+

g_get_monotonic_time ()

+
gint64
+g_get_monotonic_time (void);
+

Queries the system monotonic time.

+

The monotonic clock will always increase and doesn't suffer +discontinuities when the user (or NTP) changes the system time. It +may or may not continue to tick during times where the machine is +suspended.

+

We try to use the clock that corresponds as closely as possible to +the passage of time as measured by system calls such as poll() but it +may not always be possible to do this.

+
+

Returns

+

the monotonic time, in microseconds

+
+

Since: 2.28

+
+
+
+

g_get_real_time ()

+
gint64
+g_get_real_time (void);
+

Queries the system wall-clock time.

+

This call is functionally equivalent to g_get_current_time() except +that the return value is often more convenient than dealing with a +GTimeVal.

+

You should only use this call if you are actually interested in the real +wall-clock time. g_get_monotonic_time() is probably more useful for +measuring intervals.

+
+

Returns

+

the number of microseconds since January 1, 1970 UTC.

+
+

Since: 2.28

+
+
+
+

g_date_new ()

+
GDate *
+g_date_new (void);
+

Allocates a GDate and initializes +it to a sane state. The new date will +be cleared (as if you'd called g_date_clear()) but invalid (it won't +represent an existing day). Free the return value with g_date_free().

+
+

Returns

+

a newly-allocated GDate

+
+
+
+
+

g_date_new_dmy ()

+
GDate *
+g_date_new_dmy (GDateDay day,
+                GDateMonth month,
+                GDateYear year);
+

Like g_date_new(), but also sets the value of the date. Assuming the +day-month-year triplet you pass in represents an existing day, the +returned date will be valid.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

day

day of the month

 

month

month of the year

 

year

year

 
+
+
+

Returns

+

a newly-allocated GDate initialized with day +, month +, and year +

+
+
+
+
+

g_date_new_julian ()

+
GDate *
+g_date_new_julian (guint32 julian_day);
+

Like g_date_new(), but also sets the value of the date. Assuming the +Julian day number you pass in is valid (greater than 0, less than an +unreasonably large number), the returned date will be valid.

+
+

Parameters

+
+++++ + + + + + +

julian_day

days since January 1, Year 1

 
+
+
+

Returns

+

a newly-allocated GDate initialized with julian_day +

+
+
+
+
+

g_date_clear ()

+
void
+g_date_clear (GDate *date,
+              guint n_dates);
+

Initializes one or more GDate structs to a sane but invalid +state. The cleared dates will not represent an existing date, but will +not contain garbage. Useful to init a date declared on the stack. +Validity can be tested with g_date_valid().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

pointer to one or more dates to clear

 

n_dates

number of dates to clear

 
+
+
+
+
+

g_date_free ()

+
void
+g_date_free (GDate *date);
+

Frees a GDate returned from g_date_new().

+
+

Parameters

+
+++++ + + + + + +

date

a GDate to free

 
+
+
+
+
+

g_date_set_day ()

+
void
+g_date_set_day (GDate *date,
+                GDateDay day);
+

Sets the day of the month for a GDate. If the resulting +day-month-year triplet is invalid, the date will be invalid.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

a GDate

 

day

day to set

 
+
+
+
+
+

g_date_set_month ()

+
void
+g_date_set_month (GDate *date,
+                  GDateMonth month);
+

Sets the month of the year for a GDate. If the resulting +day-month-year triplet is invalid, the date will be invalid.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

a GDate

 

month

month to set

 
+
+
+
+
+

g_date_set_year ()

+
void
+g_date_set_year (GDate *date,
+                 GDateYear year);
+

Sets the year for a GDate. If the resulting day-month-year +triplet is invalid, the date will be invalid.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

a GDate

 

year

year to set

 
+
+
+
+
+

g_date_set_dmy ()

+
void
+g_date_set_dmy (GDate *date,
+                GDateDay day,
+                GDateMonth month,
+                GDateYear y);
+

Sets the value of a GDate from a day, month, and year. +The day-month-year triplet must be valid; if you aren't +sure it is, call g_date_valid_dmy() to check before you +set it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

date

a GDate

 

day

day

 

month

month

 

y

year

 
+
+
+
+
+

g_date_set_julian ()

+
void
+g_date_set_julian (GDate *date,
+                   guint32 julian_date);
+

Sets the value of a GDate from a Julian day number.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

a GDate

 

julian_date

Julian day number (days since January 1, Year 1)

 
+
+
+
+
+

g_date_set_time ()

+
void
+g_date_set_time (GDate *date,
+                 GTime time_);
+
+

g_date_set_time has been deprecated since version 2.10 and should not be used in newly-written code.

+

Use g_date_set_time_t() instead.

+
+

Sets the value of a date from a GTime value. +The time to date conversion is done using the user's current timezone.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

a GDate.

 

time_

GTime value to set.

 
+
+
+
+
+

g_date_set_time_t ()

+
void
+g_date_set_time_t (GDate *date,
+                   time_t timet);
+

Sets the value of a date to the date corresponding to a time +specified as a time_t. The time to date conversion is done using +the user's current timezone.

+

To set the value of a date to the current day, you could write:

+
+ + + + + + + +
1
g_date_set_time_t (date, time (NULL));
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

a GDate

 

timet

time_t value to set

 
+
+

Since: 2.10

+
+
+
+

g_date_set_time_val ()

+
void
+g_date_set_time_val (GDate *date,
+                     GTimeVal *timeval);
+

Sets the value of a date from a GTimeVal value. Note that the +tv_usec + member is ignored, because GDate can't make use of the +additional precision.

+

The time to date conversion is done using the user's current timezone.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

a GDate

 

timeval

GTimeVal value to set

 
+
+

Since: 2.10

+
+
+
+

g_date_set_parse ()

+
void
+g_date_set_parse (GDate *date,
+                  const gchar *str);
+

Parses a user-inputted string str +, and try to figure out what date it +represents, taking the current locale into account. If the +string is successfully parsed, the date will be valid after the call. +Otherwise, it will be invalid. You should check using g_date_valid() +to see whether the parsing succeeded.

+

This function is not appropriate for file formats and the like; it +isn't very precise, and its exact behavior varies with the locale. +It's intended to be a heuristic routine that guesses what the user +means by a given string (and it does work pretty well in that +capacity).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

a GDate to fill in

 

str

string to parse

 
+
+
+
+
+

g_date_add_days ()

+
void
+g_date_add_days (GDate *date,
+                 guint n_days);
+

Increments a date some number of days. +To move forward by weeks, add weeks*7 days. +The date must be valid.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

a GDate to increment

 

n_days

number of days to move the date forward

 
+
+
+
+
+

g_date_subtract_days ()

+
void
+g_date_subtract_days (GDate *date,
+                      guint n_days);
+

Moves a date some number of days into the past. +To move by weeks, just move by weeks*7 days. +The date must be valid.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

a GDate to decrement

 

n_days

number of days to move

 
+
+
+
+
+

g_date_add_months ()

+
void
+g_date_add_months (GDate *date,
+                   guint n_months);
+

Increments a date by some number of months. +If the day of the month is greater than 28, +this routine may change the day of the month +(because the destination month may not have +the current day in it). The date must be valid.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

a GDate to increment

 

n_months

number of months to move forward

 
+
+
+
+
+

g_date_subtract_months ()

+
void
+g_date_subtract_months (GDate *date,
+                        guint n_months);
+

Moves a date some number of months into the past. +If the current day of the month doesn't exist in +the destination month, the day of the month +may change. The date must be valid.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

a GDate to decrement

 

n_months

number of months to move

 
+
+
+
+
+

g_date_add_years ()

+
void
+g_date_add_years (GDate *date,
+                  guint n_years);
+

Increments a date by some number of years. +If the date is February 29, and the destination +year is not a leap year, the date will be changed +to February 28. The date must be valid.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

a GDate to increment

 

n_years

number of years to move forward

 
+
+
+
+
+

g_date_subtract_years ()

+
void
+g_date_subtract_years (GDate *date,
+                       guint n_years);
+

Moves a date some number of years into the past. +If the current day doesn't exist in the destination +year (i.e. it's February 29 and you move to a non-leap-year) +then the day is changed to February 29. The date +must be valid.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

a GDate to decrement

 

n_years

number of years to move

 
+
+
+
+
+

g_date_days_between ()

+
gint
+g_date_days_between (const GDate *date1,
+                     const GDate *date2);
+

Computes the number of days between two dates. +If date2 + is prior to date1 +, the returned value is negative. +Both dates must be valid.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date1

the first date

 

date2

the second date

 
+
+
+

Returns

+

the number of days between date1 +and date2 +

+
+
+
+
+

g_date_compare ()

+
gint
+g_date_compare (const GDate *lhs,
+                const GDate *rhs);
+

qsort()-style comparison function for dates. +Both dates must be valid.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

lhs

first date to compare

 

rhs

second date to compare

 
+
+
+

Returns

+

0 for equal, less than zero if lhs +is less than rhs +, +greater than zero if lhs +is greater than rhs +

+
+
+
+
+

g_date_clamp ()

+
void
+g_date_clamp (GDate *date,
+              const GDate *min_date,
+              const GDate *max_date);
+

If date + is prior to min_date +, sets date + equal to min_date +. +If date + falls after max_date +, sets date + equal to max_date +. +Otherwise, date + is unchanged. +Either of min_date + and max_date + may be NULL. +All non-NULL dates must be valid.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

date

a GDate to clamp

 

min_date

minimum accepted value for date +

 

max_date

maximum accepted value for date +

 
+
+
+
+
+

g_date_order ()

+
void
+g_date_order (GDate *date1,
+              GDate *date2);
+

Checks if date1 + is less than or equal to date2 +, +and swap the values if this is not the case.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date1

the first date

 

date2

the second date

 
+
+
+
+
+

g_date_get_day ()

+
GDateDay
+g_date_get_day (const GDate *date);
+

Returns the day of the month. The date must be valid.

+
+

Parameters

+
+++++ + + + + + +

date

a GDate to extract the day of the month from

 
+
+
+

Returns

+

day of the month

+
+
+
+
+

g_date_get_month ()

+
GDateMonth
+g_date_get_month (const GDate *date);
+

Returns the month of the year. The date must be valid.

+
+

Parameters

+
+++++ + + + + + +

date

a GDate to get the month from

 
+
+
+

Returns

+

month of the year as a GDateMonth

+
+
+
+
+

g_date_get_year ()

+
GDateYear
+g_date_get_year (const GDate *date);
+

Returns the year of a GDate. The date must be valid.

+
+

Parameters

+
+++++ + + + + + +

date

a GDate

 
+
+
+

Returns

+

year in which the date falls

+
+
+
+
+

g_date_get_julian ()

+
guint32
+g_date_get_julian (const GDate *date);
+

Returns the Julian day or "serial number" of the GDate. The +Julian day is simply the number of days since January 1, Year 1; i.e., +January 1, Year 1 is Julian day 1; January 2, Year 1 is Julian day 2, +etc. The date must be valid.

+
+

Parameters

+
+++++ + + + + + +

date

a GDate to extract the Julian day from

 
+
+
+

Returns

+

Julian day

+
+
+
+
+

g_date_get_weekday ()

+
GDateWeekday
+g_date_get_weekday (const GDate *date);
+

Returns the day of the week for a GDate. The date must be valid.

+
+

Parameters

+
+++++ + + + + + +

date

a GDate

 
+
+
+

Returns

+

day of the week as a GDateWeekday.

+
+
+
+
+

g_date_get_day_of_year ()

+
guint
+g_date_get_day_of_year (const GDate *date);
+

Returns the day of the year, where Jan 1 is the first day of the +year. The date must be valid.

+
+

Parameters

+
+++++ + + + + + +

date

a GDate to extract day of year from

 
+
+
+

Returns

+

day of the year

+
+
+
+
+

g_date_get_days_in_month ()

+
guint8
+g_date_get_days_in_month (GDateMonth month,
+                          GDateYear year);
+

Returns the number of days in a month, taking leap +years into account.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

month

month

 

year

year

 
+
+
+

Returns

+

number of days in month +during the year +

+
+
+
+
+

g_date_is_first_of_month ()

+
gboolean
+g_date_is_first_of_month (const GDate *date);
+

Returns TRUE if the date is on the first of a month. +The date must be valid.

+
+

Parameters

+
+++++ + + + + + +

date

a GDate to check

 
+
+
+

Returns

+

TRUE if the date is the first of the month

+
+
+
+
+

g_date_is_last_of_month ()

+
gboolean
+g_date_is_last_of_month (const GDate *date);
+

Returns TRUE if the date is the last day of the month. +The date must be valid.

+
+

Parameters

+
+++++ + + + + + +

date

a GDate to check

 
+
+
+

Returns

+

TRUE if the date is the last day of the month

+
+
+
+
+

g_date_is_leap_year ()

+
gboolean
+g_date_is_leap_year (GDateYear year);
+

Returns TRUE if the year is a leap year.

+

For the purposes of this function, leap year is every year +divisible by 4 unless that year is divisible by 100. If it +is divisible by 100 it would be a leap year only if that year +is also divisible by 400.

+
+

Parameters

+
+++++ + + + + + +

year

year to check

 
+
+
+

Returns

+

TRUE if the year is a leap year

+
+
+
+
+

g_date_get_monday_week_of_year ()

+
guint
+g_date_get_monday_week_of_year (const GDate *date);
+

Returns the week of the year, where weeks are understood to start on +Monday. If the date is before the first Monday of the year, return 0. +The date must be valid.

+
+

Parameters

+
+++++ + + + + + +

date

a GDate

 
+
+
+

Returns

+

week of the year

+
+
+
+
+

g_date_get_monday_weeks_in_year ()

+
guint8
+g_date_get_monday_weeks_in_year (GDateYear year);
+

Returns the number of weeks in the year, where weeks +are taken to start on Monday. Will be 52 or 53. The +date must be valid. (Years always have 52 7-day periods, +plus 1 or 2 extra days depending on whether it's a leap +year. This function is basically telling you how many +Mondays are in the year, i.e. there are 53 Mondays if +one of the extra days happens to be a Monday.)

+
+

Parameters

+
+++++ + + + + + +

year

a year

 
+
+
+

Returns

+

number of Mondays in the year

+
+
+
+
+

g_date_get_sunday_week_of_year ()

+
guint
+g_date_get_sunday_week_of_year (const GDate *date);
+

Returns the week of the year during which this date falls, if +weeks are understood to being on Sunday. The date must be valid. +Can return 0 if the day is before the first Sunday of the year.

+
+

Parameters

+
+++++ + + + + + +

date

a GDate

 
+
+
+

Returns

+

week number

+
+
+
+
+

g_date_get_sunday_weeks_in_year ()

+
guint8
+g_date_get_sunday_weeks_in_year (GDateYear year);
+

Returns the number of weeks in the year, where weeks +are taken to start on Sunday. Will be 52 or 53. The +date must be valid. (Years always have 52 7-day periods, +plus 1 or 2 extra days depending on whether it's a leap +year. This function is basically telling you how many +Sundays are in the year, i.e. there are 53 Sundays if +one of the extra days happens to be a Sunday.)

+
+

Parameters

+
+++++ + + + + + +

year

year to count weeks in

 
+
+
+

Returns

+

the number of weeks in year +

+
+
+
+
+

g_date_get_iso8601_week_of_year ()

+
guint
+g_date_get_iso8601_week_of_year (const GDate *date);
+

Returns the week of the year, where weeks are interpreted according +to ISO 8601.

+
+

Parameters

+
+++++ + + + + + +

date

a valid GDate

 
+
+
+

Returns

+

ISO 8601 week number of the year.

+
+

Since: 2.6

+
+
+
+

g_date_strftime ()

+
gsize
+g_date_strftime (gchar *s,
+                 gsize slen,
+                 const gchar *format,
+                 const GDate *date);
+

Generates a printed representation of the date, in a +locale-specific way. +Works just like the platform's C library strftime() function, +but only accepts date-related formats; time-related formats +give undefined results. Date must be valid. Unlike strftime() +(which uses the locale encoding), works on a UTF-8 format +string and stores a UTF-8 result.

+

This function does not provide any conversion specifiers in +addition to those implemented by the platform's C library. +For example, don't expect that using g_date_strftime() would +make the %F provided by the C99 strftime() work on Windows +where the C library only complies to C89.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

s

destination buffer

 

slen

buffer size

 

format

format string

 

date

valid GDate

 
+
+
+

Returns

+

number of characters written to the buffer, or 0 the buffer was too small

+
+
+
+
+

g_date_to_struct_tm ()

+
void
+g_date_to_struct_tm (const GDate *date,
+                     struct tm *tm);
+

Fills in the date-related bits of a struct tm using the date + value. +Initializes the non-date parts with something sane but meaningless.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

date

a GDate to set the struct tm from

 

tm

struct tm to fill.

[not nullable]
+
+
+
+
+

g_date_valid ()

+
gboolean
+g_date_valid (const GDate *date);
+

Returns TRUE if the GDate represents an existing day. The date must not +contain garbage; it should have been initialized with g_date_clear() +if it wasn't allocated by one of the g_date_new() variants.

+
+

Parameters

+
+++++ + + + + + +

date

a GDate to check

 
+
+
+

Returns

+

Whether the date is valid

+
+
+
+
+

g_date_valid_day ()

+
gboolean
+g_date_valid_day (GDateDay day);
+

Returns TRUE if the day of the month is valid (a day is valid if it's +between 1 and 31 inclusive).

+
+

Parameters

+
+++++ + + + + + +

day

day to check

 
+
+
+

Returns

+

TRUE if the day is valid

+
+
+
+
+

g_date_valid_month ()

+
gboolean
+g_date_valid_month (GDateMonth month);
+

Returns TRUE if the month value is valid. The 12 GDateMonth +enumeration values are the only valid months.

+
+

Parameters

+
+++++ + + + + + +

month

month

 
+
+
+

Returns

+

TRUE if the month is valid

+
+
+
+
+

g_date_valid_year ()

+
gboolean
+g_date_valid_year (GDateYear year);
+

Returns TRUE if the year is valid. Any year greater than 0 is valid, +though there is a 16-bit limit to what GDate will understand.

+
+

Parameters

+
+++++ + + + + + +

year

year

 
+
+
+

Returns

+

TRUE if the year is valid

+
+
+
+
+

g_date_valid_dmy ()

+
gboolean
+g_date_valid_dmy (GDateDay day,
+                  GDateMonth month,
+                  GDateYear year);
+

Returns TRUE if the day-month-year triplet forms a valid, existing day +in the range of days GDate understands (Year 1 or later, no more than +a few thousand years in the future).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

day

day

 

month

month

 

year

year

 
+
+
+

Returns

+

TRUE if the date is a valid one

+
+
+
+
+

g_date_valid_julian ()

+
gboolean
+g_date_valid_julian (guint32 julian_date);
+

Returns TRUE if the Julian day is valid. Anything greater than zero +is basically a valid Julian, though there is a 32-bit limit.

+
+

Parameters

+
+++++ + + + + + +

julian_date

Julian day to check

 
+
+
+

Returns

+

TRUE if the Julian day is valid

+
+
+
+
+

g_date_valid_weekday ()

+
gboolean
+g_date_valid_weekday (GDateWeekday weekday);
+

Returns TRUE if the weekday is valid. The seven GDateWeekday enumeration +values are the only valid weekdays.

+
+

Parameters

+
+++++ + + + + + +

weekday

weekday

 
+
+
+

Returns

+

TRUE if the weekday is valid

+
+
+
+
+

Types and Values

+
+

G_USEC_PER_SEC

+
#define G_USEC_PER_SEC 1000000
+
+

Number of microseconds in one second (1 million). +This macro is provided for code readability.

+
+
+
+

struct GTimeVal

+
struct GTimeVal {
+  glong tv_sec;
+  glong tv_usec;
+};
+
+

Represents a precise time, with seconds and microseconds. +Similar to the struct timeval returned by the gettimeofday() +UNIX system call.

+

GLib is attempting to unify around the use of 64bit integers to +represent microsecond-precision time. As such, this type will be +removed from a future version of GLib.

+
+

Members

+
+++++ + + + + + + + + + + + + +

glong tv_sec;

seconds

 

glong tv_usec;

microseconds

 
+
+
+
+
+

struct GDate

+
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;
+};
+
+

Represents a day between January 1, Year 1 and a few thousand years in +the future. None of its members should be accessed directly.

+

If the GDate is obtained from g_date_new(), it will be safe +to mutate but invalid and thus not safe for calendrical computations.

+

If it's declared on the stack, it will contain garbage so must be +initialized with g_date_clear(). g_date_clear() makes the date invalid +but sane. An invalid date doesn't represent a day, it's "empty." A date +becomes valid after you set it to a Julian day or you set a day, month, +and year.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

guint julian_days : 32;

the Julian representation of the date

 

guint julian : 1;

this bit is set if julian_days +is valid

 

guint dmy : 1;

this is set if day +, month +and year +are valid

 

guint day : 6;

the day of the day-month-year representation of the date, +as a number between 1 and 31

 

guint month : 4;

the day of the day-month-year representation of the date, +as a number between 1 and 12

 

guint year : 16;

the day of the day-month-year representation of the date

 
+
+
+
+
+

GTime

+
typedef gint32  GTime;
+
+

Simply a replacement for time_t. It has been deprecated +since it is not equivalent to time_t on 64-bit platforms +with a 64-bit time_t. Unrelated to GTimer.

+

Note that GTime is defined to always be a 32-bit integer, +unlike time_t which may be 64-bit on some systems. Therefore, +GTime will overflow in the year 2038, and you cannot use the +address of a GTime variable as argument to the UNIX time() +function.

+

Instead, do the following:

+
+ + + + + + + +
1
+2
+3
+4
+5
time_t ttime;
+GTime gtime;
+
+time (&ttime);
+gtime = (GTime)ttime;
+
+ +

+
+
+
+

enum GDateDMY

+

This enumeration isn't used in the API, but may be useful if you need +to mark a number as a day, month, or year.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

G_DATE_DAY

+

a day

+
 

G_DATE_MONTH

+

a month

+
 

G_DATE_YEAR

+

a year

+
 
+
+
+
+
+

GDateDay

+
typedef guint8  GDateDay;   /* day of the month */
+
+

Integer representing a day of the month; between 1 and 31. +G_DATE_BAD_DAY represents an invalid day of the month.

+
+
+
+

enum GDateMonth

+

Enumeration representing a month; values are G_DATE_JANUARY, +G_DATE_FEBRUARY, etc. G_DATE_BAD_MONTH is the invalid value.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_DATE_BAD_MONTH

+

invalid value

+
 

G_DATE_JANUARY

+

January

+
 

G_DATE_FEBRUARY

+

February

+
 

G_DATE_MARCH

+

March

+
 

G_DATE_APRIL

+

April

+
 

G_DATE_MAY

+

May

+
 

G_DATE_JUNE

+

June

+
 

G_DATE_JULY

+

July

+
 

G_DATE_AUGUST

+

August

+
 

G_DATE_SEPTEMBER

+

September

+
 

G_DATE_OCTOBER

+

October

+
 

G_DATE_NOVEMBER

+

November

+
 

G_DATE_DECEMBER

+

December

+
 
+
+
+
+
+

GDateYear

+
typedef guint16 GDateYear;
+
+

Integer representing a year; G_DATE_BAD_YEAR is the invalid +value. The year must be 1 or higher; negative (BC) years are not +allowed. The year is represented with four digits.

+
+
+
+

enum GDateWeekday

+

Enumeration representing a day of the week; G_DATE_MONDAY, +G_DATE_TUESDAY, etc. G_DATE_BAD_WEEKDAY is an invalid weekday.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_DATE_BAD_WEEKDAY

+

invalid value

+
 

G_DATE_MONDAY

+

Monday

+
 

G_DATE_TUESDAY

+

Tuesday

+
 

G_DATE_WEDNESDAY

+

Wednesday

+
 

G_DATE_THURSDAY

+

Thursday

+
 

G_DATE_FRIDAY

+

Friday

+
 

G_DATE_SATURDAY

+

Saturday

+
 

G_DATE_SUNDAY

+

Sunday

+
 
+
+
+
+
+

G_DATE_BAD_DAY

+
#define G_DATE_BAD_DAY    0U
+
+

Represents an invalid GDateDay.

+
+
+
+

G_DATE_BAD_JULIAN

+
#define G_DATE_BAD_JULIAN 0U
+
+

Represents an invalid Julian day number.

+
+
+
+

G_DATE_BAD_YEAR

+
#define G_DATE_BAD_YEAR   0U
+
+

Represents an invalid year.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Deprecated-Thread-APIs.html b/docs/reference/glib/html/glib-Deprecated-Thread-APIs.html new file mode 100644 index 0000000..52b54be --- /dev/null +++ b/docs/reference/glib/html/glib-Deprecated-Thread-APIs.html @@ -0,0 +1,2086 @@ + + + + +Deprecated thread API: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Deprecated thread API

+

Deprecated thread API — old thread APIs (for reference only)

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +g_thread_init () +
+gboolean + +g_thread_supported () +
+gboolean + +g_thread_get_initialized () +
+GThread * + +g_thread_create () +
+GThread * + +g_thread_create_full () +
+void + +g_thread_set_priority () +
+void + +g_thread_foreach () +
+GMutex * + +g_mutex_new () +
+void + +g_mutex_free () +
+GCond* + +g_cond_new () +
+void + +g_cond_free () +
+GPrivate * + +g_private_new () +
+void + +g_static_mutex_init () +
+void + +g_static_mutex_lock () +
+gboolean + +g_static_mutex_trylock () +
+void + +g_static_mutex_unlock () +
+GMutex * + +g_static_mutex_get_mutex () +
+void + +g_static_mutex_free () +
+void + +g_static_rec_mutex_init () +
+void + +g_static_rec_mutex_lock () +
+gboolean + +g_static_rec_mutex_trylock () +
+void + +g_static_rec_mutex_unlock () +
+void + +g_static_rec_mutex_lock_full () +
+guint + +g_static_rec_mutex_unlock_full () +
+void + +g_static_rec_mutex_free () +
+void + +g_static_rw_lock_init () +
+void + +g_static_rw_lock_reader_lock () +
+gboolean + +g_static_rw_lock_reader_trylock () +
+void + +g_static_rw_lock_reader_unlock () +
+void + +g_static_rw_lock_writer_lock () +
+gboolean + +g_static_rw_lock_writer_trylock () +
+void + +g_static_rw_lock_writer_unlock () +
+void + +g_static_rw_lock_free () +
+void + +g_static_private_init () +
+gpointer + +g_static_private_get () +
+void + +g_static_private_set () +
+void + +g_static_private_free () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#defineG_THREADS_IMPL_POSIX
#defineG_THREADS_IMPL_WIN32
enumGThreadPriority
 GStaticMutex
#defineG_STATIC_MUTEX_INIT
structGStaticRecMutex
#defineG_STATIC_REC_MUTEX_INIT
structGStaticRWLock
#defineG_STATIC_RW_LOCK_INIT
structGStaticPrivate
#defineG_STATIC_PRIVATE_INIT
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

These APIs are deprecated. You should not use them in new code. +This section remains only to assist with understanding code that was +written to use these APIs at some point in the past.

+
+
+

Functions

+
+

g_thread_init ()

+
void
+g_thread_init (gpointer vtable);
+
+

g_thread_init has been deprecated since version 2.32 and should not be used in newly-written code.

+

This function is no longer necessary. The GLib + threading system is automatically initialized at the start + of your program.

+
+

If you use GLib from more than one thread, you must initialize the +thread system by calling g_thread_init().

+

Since version 2.24, calling g_thread_init() multiple times is allowed, +but nothing happens except for the first call.

+

Since version 2.32, GLib does not support custom thread implementations +anymore and the vtable + parameter is ignored and you should pass NULL.

+

<note><para>g_thread_init() must not be called directly or indirectly +in a callback from GLib. Also no mutexes may be currently locked while +calling g_thread_init().</para></note>

+

<note><para>To use g_thread_init() in your program, you have to link +with the libraries that the command <command>pkg-config --libs +gthread-2.0</command> outputs. This is not the case for all the +other thread-related functions of GLib. Those can be used without +having to link with the thread libraries.</para></note>

+
+

Parameters

+
+++++ + + + + + +

vtable

a function table of type GThreadFunctions, that provides +the entry points to the thread system to be used. Since 2.32, +this parameter is ignored and should always be NULL

 
+
+
+
+
+

g_thread_supported ()

+
gboolean
+g_thread_supported ();
+

g_thread_supported is deprecated and should not be used in newly-written code.

+

This macro returns TRUE if the thread system is initialized, +and FALSE if it is not.

+

For language bindings, g_thread_get_initialized() provides +the same functionality as a function.

+
+

Returns

+

TRUE, if the thread system is initialized

+
+
+
+
+

g_thread_get_initialized ()

+
gboolean
+g_thread_get_initialized (void);
+

g_thread_get_initialized is deprecated and should not be used in newly-written code.

+

Indicates if g_thread_init() has been called.

+
+

Returns

+

TRUE if threads have been initialized.

+
+

Since: 2.20

+
+
+
+

g_thread_create ()

+
GThread *
+g_thread_create (GThreadFunc func,
+                 gpointer data,
+                 gboolean joinable,
+                 GError **error);
+
+

g_thread_create has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_thread_new() instead

+
+

This function creates a new thread.

+

The new thread executes the function func + with the argument data +. +If the thread was created successfully, it is returned.

+

error + can be NULL to ignore errors, or non-NULL to report errors. +The error is set, if and only if the function returns NULL.

+

This function returns a reference to the created thread only if +joinable + is TRUE. In that case, you must free this reference by +calling g_thread_unref() or g_thread_join(). If joinable + is FALSE +then you should probably not touch the return value.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

func

a function to execute in the new thread

 

data

an argument to supply to the new thread

 

joinable

should this thread be joinable?

 

error

return location for error, or NULL

 
+
+
+

Returns

+

the new GThread on success

+
+
+
+
+

g_thread_create_full ()

+
GThread *
+g_thread_create_full (GThreadFunc func,
+                      gpointer data,
+                      gulong stack_size,
+                      gboolean joinable,
+                      gboolean bound,
+                      GThreadPriority priority,
+                      GError **error);
+
+

g_thread_create_full has been deprecated since version 2.32 and should not be used in newly-written code.

+

The bound + and priority + arguments are now ignored. +Use g_thread_new().

+
+

This function creates a new thread.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

func

a function to execute in the new thread.

 

data

an argument to supply to the new thread.

 

stack_size

a stack size for the new thread.

 

joinable

should this thread be joinable?

 

bound

ignored

 

priority

ignored

 

error

return location for error.

 
+
+
+

Returns

+

the new GThread on success.

+
+
+
+
+

g_thread_set_priority ()

+
void
+g_thread_set_priority (GThread *thread,
+                       GThreadPriority priority);
+
+

g_thread_set_priority has been deprecated since version 2.32 and should not be used in newly-written code.

+

Thread priorities no longer have any effect.

+
+

This function does nothing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

thread

a GThread.

 

priority

ignored

 
+
+
+
+
+

g_thread_foreach ()

+
void
+g_thread_foreach (GFunc thread_func,
+                  gpointer user_data);
+
+

g_thread_foreach has been deprecated since version 2.32 and should not be used in newly-written code.

+

There aren't many things you can do with a GThread, + except comparing it with one that was returned from g_thread_create(). + There are better ways to find out if your thread is still alive.

+
+

Call thread_func + on all GThreads that have been +created with g_thread_create().

+

Note that threads may decide to exit while thread_func + is +running, so without intimate knowledge about the lifetime of +foreign threads, thread_func + shouldn't access the GThread* +pointer passed in as first argument. However, thread_func + will +not be called for threads which are known to have exited already.

+

Due to thread lifetime checks, this function has an execution complexity +which is quadratic in the number of existing threads.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

thread_func

function to call for all GThread structures

 

user_data

second argument to thread_func +

 
+
+

Since: 2.10

+
+
+
+

g_mutex_new ()

+
GMutex *
+g_mutex_new ();
+
+

g_mutex_new has been deprecated since version 2.32 and should not be used in newly-written code.

+

GMutex can now be statically allocated, or embedded +in structures and initialised with g_mutex_init().

+
+

Allocates and initializes a new GMutex.

+
+

Returns

+

a newly allocated GMutex. Use g_mutex_free() to free

+
+
+
+
+

g_mutex_free ()

+
void
+g_mutex_free (GMutex *mutex);
+
+

g_mutex_free has been deprecated since version 2.32 and should not be used in newly-written code.

+

GMutex can now be statically allocated, or embedded +in structures and initialised with g_mutex_init().

+
+

Destroys a mutex + that has been created with g_mutex_new().

+

Calling g_mutex_free() on a locked mutex may result +in undefined behaviour.

+
+

Parameters

+
+++++ + + + + + +

mutex

a GMutex

 
+
+
+
+
+

g_cond_new ()

+
GCond*
+g_cond_new ();
+
+

g_cond_new has been deprecated since version 2.32 and should not be used in newly-written code.

+

GCond can now be statically allocated, or embedded +in structures and initialised with g_cond_init().

+
+

Allocates and initializes a new GCond.

+
+

Returns

+

a newly allocated GCond. Free with g_cond_free()

+
+
+
+
+

g_cond_free ()

+
void
+g_cond_free (GCond *cond);
+
+

g_cond_free has been deprecated since version 2.32 and should not be used in newly-written code.

+

GCond can now be statically allocated, or embedded +in structures and initialised with g_cond_init().

+
+

Destroys a GCond that has been created with g_cond_new().

+

Calling g_cond_free() for a GCond on which threads are +blocking leads to undefined behaviour.

+
+

Parameters

+
+++++ + + + + + +

cond

a GCond

 
+
+
+
+
+

g_private_new ()

+
GPrivate *
+g_private_new (GDestroyNotify notify);
+
+

g_private_new has been deprecated since version 2.32 and should not be used in newly-written code.

+

dynamic allocation of GPrivate is a bad idea. Use + static storage and G_PRIVATE_INIT() instead.

+
+

Creates a new GPrivate.

+
+

Parameters

+
+++++ + + + + + +

notify

a GDestroyNotify

 
+
+
+

Returns

+

a newly allocated GPrivate (which can never be destroyed)

+
+
+
+
+

g_static_mutex_init ()

+
void
+g_static_mutex_init (GStaticMutex *mutex);
+
+

g_static_mutex_init has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_mutex_init()

+
+

Initializes mutex +. +Alternatively you can initialize it with G_STATIC_MUTEX_INIT.

+
+

Parameters

+
+++++ + + + + + +

mutex

a GStaticMutex to be initialized.

 
+
+
+
+
+

g_static_mutex_lock ()

+
void
+g_static_mutex_lock (GStaticMutex *mutex);
+
+

g_static_mutex_lock has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_mutex_lock()

+
+

Works like g_mutex_lock(), but for a GStaticMutex.

+
+

Parameters

+
+++++ + + + + + +

mutex

a GStaticMutex.

 
+
+
+
+
+

g_static_mutex_trylock ()

+
gboolean
+g_static_mutex_trylock (GStaticMutex *mutex);
+
+

g_static_mutex_trylock has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_mutex_trylock()

+
+

Works like g_mutex_trylock(), but for a GStaticMutex.

+
+

Parameters

+
+++++ + + + + + +

mutex

a GStaticMutex.

 
+
+
+

Returns

+

TRUE, if the GStaticMutex could be locked.

+
+
+
+
+

g_static_mutex_unlock ()

+
void
+g_static_mutex_unlock (GStaticMutex *mutex);
+
+

g_static_mutex_unlock has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_mutex_unlock()

+
+

Works like g_mutex_unlock(), but for a GStaticMutex.

+
+

Parameters

+
+++++ + + + + + +

mutex

a GStaticMutex.

 
+
+
+
+
+

g_static_mutex_get_mutex ()

+
GMutex *
+g_static_mutex_get_mutex (GStaticMutex *mutex);
+
+

g_static_mutex_get_mutex has been deprecated since version 2.32 and should not be used in newly-written code.

+

Just use a GMutex

+
+

For some operations (like g_cond_wait()) you must have a GMutex +instead of a GStaticMutex. This function will return the +corresponding GMutex for mutex +.

+
+

Parameters

+
+++++ + + + + + +

mutex

a GStaticMutex.

 
+
+
+

Returns

+

the GMutex corresponding to mutex +.

+
+
+
+
+

g_static_mutex_free ()

+
void
+g_static_mutex_free (GStaticMutex *mutex);
+
+

g_static_mutex_free has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_mutex_clear()

+
+

Releases all resources allocated to mutex +.

+

You don't have to call this functions for a GStaticMutex with an +unbounded lifetime, i.e. objects declared 'static', but if you have +a GStaticMutex as a member of a structure and the structure is +freed, you should also free the GStaticMutex.

+

Calling g_static_mutex_free() on a locked mutex may result in +undefined behaviour.

+
+

Parameters

+
+++++ + + + + + +

mutex

a GStaticMutex to be freed.

 
+
+
+
+
+

g_static_rec_mutex_init ()

+
void
+g_static_rec_mutex_init (GStaticRecMutex *mutex);
+
+

g_static_rec_mutex_init has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_rec_mutex_init()

+
+

A GStaticRecMutex must be initialized with this function before it +can be used. Alternatively you can initialize it with +G_STATIC_REC_MUTEX_INIT.

+
+

Parameters

+
+++++ + + + + + +

mutex

a GStaticRecMutex to be initialized.

 
+
+
+
+
+

g_static_rec_mutex_lock ()

+
void
+g_static_rec_mutex_lock (GStaticRecMutex *mutex);
+
+

g_static_rec_mutex_lock has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_rec_mutex_lock()

+
+

Locks mutex +. If mutex + is already locked by another thread, the +current thread will block until mutex + is unlocked by the other +thread. If mutex + is already locked by the calling thread, this +functions increases the depth of mutex + and returns immediately.

+
+

Parameters

+
+++++ + + + + + +

mutex

a GStaticRecMutex to lock.

 
+
+
+
+
+

g_static_rec_mutex_trylock ()

+
gboolean
+g_static_rec_mutex_trylock (GStaticRecMutex *mutex);
+
+

g_static_rec_mutex_trylock has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_rec_mutex_trylock()

+
+

Tries to lock mutex +. If mutex + is already locked by another thread, +it immediately returns FALSE. Otherwise it locks mutex + and returns +TRUE. If mutex + is already locked by the calling thread, this +functions increases the depth of mutex + and immediately returns +TRUE.

+
+

Parameters

+
+++++ + + + + + +

mutex

a GStaticRecMutex to lock.

 
+
+
+

Returns

+

TRUE, if mutex +could be locked.

+
+
+
+
+

g_static_rec_mutex_unlock ()

+
void
+g_static_rec_mutex_unlock (GStaticRecMutex *mutex);
+
+

g_static_rec_mutex_unlock has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_rec_mutex_unlock()

+
+

Unlocks mutex +. Another thread will be allowed to lock mutex + only +when it has been unlocked as many times as it had been locked +before. If mutex + is completely unlocked and another thread is +blocked in a g_static_rec_mutex_lock() call for mutex +, it will be +woken and can lock mutex + itself.

+
+

Parameters

+
+++++ + + + + + +

mutex

a GStaticRecMutex to unlock.

 
+
+
+
+
+

g_static_rec_mutex_lock_full ()

+
void
+g_static_rec_mutex_lock_full (GStaticRecMutex *mutex,
+                              guint depth);
+
+

g_static_rec_mutex_lock_full has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_rec_mutex_lock()

+
+

Works like calling g_static_rec_mutex_lock() for mutex + depth + times.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mutex

a GStaticRecMutex to lock.

 

depth

number of times this mutex has to be unlocked to be +completely unlocked.

 
+
+
+
+
+

g_static_rec_mutex_unlock_full ()

+
guint
+g_static_rec_mutex_unlock_full (GStaticRecMutex *mutex);
+
+

g_static_rec_mutex_unlock_full has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_rec_mutex_unlock()

+
+

Completely unlocks mutex +. If another thread is blocked in a +g_static_rec_mutex_lock() call for mutex +, it will be woken and can +lock mutex + itself. This function returns the number of times that +mutex + has been locked by the current thread. To restore the state +before the call to g_static_rec_mutex_unlock_full() you can call +g_static_rec_mutex_lock_full() with the depth returned by this +function.

+
+

Parameters

+
+++++ + + + + + +

mutex

a GStaticRecMutex to completely unlock.

 
+
+
+

Returns

+

number of times mutex +has been locked by the current +thread.

+
+
+
+
+

g_static_rec_mutex_free ()

+
void
+g_static_rec_mutex_free (GStaticRecMutex *mutex);
+
+

g_static_rec_mutex_free has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_rec_mutex_clear()

+
+

Releases all resources allocated to a GStaticRecMutex.

+

You don't have to call this functions for a GStaticRecMutex with an +unbounded lifetime, i.e. objects declared 'static', but if you have +a GStaticRecMutex as a member of a structure and the structure is +freed, you should also free the GStaticRecMutex.

+
+

Parameters

+
+++++ + + + + + +

mutex

a GStaticRecMutex to be freed.

 
+
+
+
+
+

g_static_rw_lock_init ()

+
void
+g_static_rw_lock_init (GStaticRWLock *lock);
+
+

g_static_rw_lock_init has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_rw_lock_init() instead

+
+

A GStaticRWLock must be initialized with this function before it +can be used. Alternatively you can initialize it with +G_STATIC_RW_LOCK_INIT.

+
+

Parameters

+
+++++ + + + + + +

lock

a GStaticRWLock to be initialized.

 
+
+
+
+
+

g_static_rw_lock_reader_lock ()

+
void
+g_static_rw_lock_reader_lock (GStaticRWLock *lock);
+
+

g_static_rw_lock_reader_lock has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_rw_lock_reader_lock() instead

+
+

Locks lock + for reading. There may be unlimited concurrent locks for +reading of a GStaticRWLock at the same time. If lock + is already +locked for writing by another thread or if another thread is already +waiting to lock lock + for writing, this function will block until +lock + is unlocked by the other writing thread and no other writing +threads want to lock lock +. This lock has to be unlocked by +g_static_rw_lock_reader_unlock().

+

GStaticRWLock is not recursive. It might seem to be possible to +recursively lock for reading, but that can result in a deadlock, due +to writer preference.

+
+

Parameters

+
+++++ + + + + + +

lock

a GStaticRWLock to lock for reading.

 
+
+
+
+
+

g_static_rw_lock_reader_trylock ()

+
gboolean
+g_static_rw_lock_reader_trylock (GStaticRWLock *lock);
+

g_static_rw_lock_reader_trylock is deprecated and should not be used in newly-written code.

+

Tries to lock lock + for reading. If lock + is already locked for +writing by another thread or if another thread is already waiting to +lock lock + for writing, immediately returns FALSE. Otherwise locks +lock + for reading and returns TRUE. This lock has to be unlocked by +g_static_rw_lock_reader_unlock().

+
+

Parameters

+
+++++ + + + + + +

lock

a GStaticRWLock to lock for reading

 
+
+
+

Returns

+

TRUE, if lock +could be locked for reading

+

Deprectated: 2.32: Use g_rw_lock_reader_trylock() instead

+
+
+
+
+

g_static_rw_lock_reader_unlock ()

+
void
+g_static_rw_lock_reader_unlock (GStaticRWLock *lock);
+

g_static_rw_lock_reader_unlock is deprecated and should not be used in newly-written code.

+

Unlocks lock +. If a thread waits to lock lock + for writing and all +locks for reading have been unlocked, the waiting thread is woken up +and can lock lock + for writing.

+

Deprectated: 2.32: Use g_rw_lock_reader_unlock() instead

+
+

Parameters

+
+++++ + + + + + +

lock

a GStaticRWLock to unlock after reading

 
+
+
+
+
+

g_static_rw_lock_writer_lock ()

+
void
+g_static_rw_lock_writer_lock (GStaticRWLock *lock);
+

g_static_rw_lock_writer_lock is deprecated and should not be used in newly-written code.

+

Locks lock + for writing. If lock + is already locked for writing or +reading by other threads, this function will block until lock + is +completely unlocked and then lock lock + for writing. While this +functions waits to lock lock +, no other thread can lock lock + for +reading. When lock + is locked for writing, no other thread can lock +lock + (neither for reading nor writing). This lock has to be +unlocked by g_static_rw_lock_writer_unlock().

+

Deprectated: 2.32: Use g_rw_lock_writer_lock() instead

+
+

Parameters

+
+++++ + + + + + +

lock

a GStaticRWLock to lock for writing

 
+
+
+
+
+

g_static_rw_lock_writer_trylock ()

+
gboolean
+g_static_rw_lock_writer_trylock (GStaticRWLock *lock);
+

g_static_rw_lock_writer_trylock is deprecated and should not be used in newly-written code.

+

Tries to lock lock + for writing. If lock + is already locked (for +either reading or writing) by another thread, it immediately returns +FALSE. Otherwise it locks lock + for writing and returns TRUE. This +lock has to be unlocked by g_static_rw_lock_writer_unlock().

+
+

Parameters

+
+++++ + + + + + +

lock

a GStaticRWLock to lock for writing

 
+
+
+

Returns

+

TRUE, if lock +could be locked for writing

+

Deprectated: 2.32: Use g_rw_lock_writer_trylock() instead

+
+
+
+
+

g_static_rw_lock_writer_unlock ()

+
void
+g_static_rw_lock_writer_unlock (GStaticRWLock *lock);
+

g_static_rw_lock_writer_unlock is deprecated and should not be used in newly-written code.

+

Unlocks lock +. If a thread is waiting to lock lock + for writing and +all locks for reading have been unlocked, the waiting thread is +woken up and can lock lock + for writing. If no thread is waiting to +lock lock + for writing, and some thread or threads are waiting to +lock lock + for reading, the waiting threads are woken up and can +lock lock + for reading.

+

Deprectated: 2.32: Use g_rw_lock_writer_unlock() instead

+
+

Parameters

+
+++++ + + + + + +

lock

a GStaticRWLock to unlock after writing.

 
+
+
+
+
+

g_static_rw_lock_free ()

+
void
+g_static_rw_lock_free (GStaticRWLock *lock);
+
+

g_static_rw_lock_free has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use a GRWLock instead

+
+

Releases all resources allocated to lock +.

+

You don't have to call this functions for a GStaticRWLock with an +unbounded lifetime, i.e. objects declared 'static', but if you have +a GStaticRWLock as a member of a structure, and the structure is +freed, you should also free the GStaticRWLock.

+
+

Parameters

+
+++++ + + + + + +

lock

a GStaticRWLock to be freed.

 
+
+
+
+
+

g_static_private_init ()

+
void
+g_static_private_init (GStaticPrivate *private_key);
+

g_static_private_init is deprecated and should not be used in newly-written code.

+

Initializes private_key +. Alternatively you can initialize it with +G_STATIC_PRIVATE_INIT.

+
+

Parameters

+
+++++ + + + + + +

private_key

a GStaticPrivate to be initialized

 
+
+
+
+
+

g_static_private_get ()

+
gpointer
+g_static_private_get (GStaticPrivate *private_key);
+

g_static_private_get is deprecated and should not be used in newly-written code.

+

Works like g_private_get() only for a GStaticPrivate.

+

This function works even if g_thread_init() has not yet been called.

+
+

Parameters

+
+++++ + + + + + +

private_key

a GStaticPrivate

 
+
+
+

Returns

+

the corresponding pointer

+
+
+
+
+

g_static_private_set ()

+
void
+g_static_private_set (GStaticPrivate *private_key,
+                      gpointer data,
+                      GDestroyNotify notify);
+

g_static_private_set is deprecated and should not be used in newly-written code.

+

Sets the pointer keyed to private_key + for the current thread and +the function notify + to be called with that pointer (NULL or +non-NULL), whenever the pointer is set again or whenever the +current thread ends.

+

This function works even if g_thread_init() has not yet been called. +If g_thread_init() is called later, the data + keyed to private_key + +will be inherited only by the main thread, i.e. the one that called +g_thread_init().

+

notify + is used quite differently from destructor + in g_private_new().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

private_key

a GStaticPrivate

 

data

the new pointer

 

notify

a function to be called with the pointer whenever the +current thread ends or sets this pointer again

 
+
+
+
+
+

g_static_private_free ()

+
void
+g_static_private_free (GStaticPrivate *private_key);
+

g_static_private_free is deprecated and should not be used in newly-written code.

+

Releases all resources allocated to private_key +.

+

You don't have to call this functions for a GStaticPrivate with an +unbounded lifetime, i.e. objects declared 'static', but if you have +a GStaticPrivate as a member of a structure and the structure is +freed, you should also free the GStaticPrivate.

+
+

Parameters

+
+++++ + + + + + +

private_key

a GStaticPrivate to be freed

 
+
+
+
+
+

Types and Values

+
+

G_THREADS_IMPL_POSIX

+
#define G_THREADS_IMPL_POSIX
+
+
+

G_THREADS_IMPL_POSIX has been deprecated since version 2.32 and should not be used in newly-written code.

+

POSIX threads are in use on all non-Windows systems. + Use G_OS_WIN32 to detect Windows.

+
+

This macro is defined if POSIX style threads are used.

+
+
+
+

G_THREADS_IMPL_WIN32

+
#define G_THREADS_IMPL_NONE
+
+
+

G_THREADS_IMPL_WIN32 has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use G_OS_WIN32 to detect Windows.

+
+

This macro is defined if Windows style threads are used.

+
+
+
+

enum GThreadPriority

+
+

GThreadPriority has been deprecated since version 2.32 and should not be used in newly-written code.

+

Thread priorities no longer have any effect.

+
+

Thread priorities.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

G_THREAD_PRIORITY_LOW

+

a priority lower than normal

+
 

G_THREAD_PRIORITY_NORMAL

+

the default priority

+
 

G_THREAD_PRIORITY_HIGH

+

a priority higher than normal

+
 

G_THREAD_PRIORITY_URGENT

+

the highest priority

+
 
+
+
+
+
+

GStaticMutex

+
typedef struct _GStaticMutex GStaticMutex;
+

A GStaticMutex works like a GMutex.

+

Prior to GLib 2.32, GStaticMutex had the significant advantage +that it doesn't need to be created at run-time, but can be defined +at compile-time. Since 2.32, GMutex can be statically allocated +as well, and GStaticMutex has been deprecated.

+

Here is a version of our give_me_next_number() example using +a GStaticMutex:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
int
+give_me_next_number (void)
+{
+  static int current_number = 0;
+  int ret_val;
+  static GStaticMutex mutex = G_STATIC_MUTEX_INIT;
+
+  g_static_mutex_lock (&mutex);
+  ret_val = current_number = calc_next_number (current_number);
+  g_static_mutex_unlock (&mutex);
+
+  return ret_val;
+}
+
+ +

+

Sometimes you would like to dynamically create a mutex. If you don't +want to require prior calling to g_thread_init(), because your code +should also be usable in non-threaded programs, you are not able to +use g_mutex_new() and thus GMutex, as that requires a prior call to +g_thread_init(). In theses cases you can also use a GStaticMutex. +It must be initialized with g_static_mutex_init() before using it +and freed with with g_static_mutex_free() when not needed anymore to +free up any allocated resources.

+

Even though GStaticMutex is not opaque, it should only be used with +the following functions, as it is defined differently on different +platforms.

+

All of the g_static_mutex_* functions apart from +g_static_mutex_get_mutex() can also be used even if g_thread_init() +has not yet been called. Then they do nothing, apart from +g_static_mutex_trylock() which does nothing but returning TRUE.

+

All of the g_static_mutex_* functions are actually macros. Apart from +taking their addresses, you can however use them as if they were +functions.

+
+
+
+

G_STATIC_MUTEX_INIT

+
#define G_STATIC_MUTEX_INIT
+
+

G_STATIC_MUTEX_INIT is deprecated and should not be used in newly-written code.

+

A GStaticMutex must be initialized with this macro, before it can +be used. This macro can used be to initialize a variable, but it +cannot be assigned to a variable. In that case you have to use +g_static_mutex_init().

+
+ + + + + + + +
1
GStaticMutex my_mutex = G_STATIC_MUTEX_INIT;
+
+ +

+
+
+
+

struct GStaticRecMutex

+
struct GStaticRecMutex {
+};
+
+

GStaticRecMutex is deprecated and should not be used in newly-written code.

+

A GStaticRecMutex works like a GStaticMutex, but it can be locked +multiple times by one thread. If you enter it n times, you have to +unlock it n times again to let other threads lock it. An exception +is the function g_static_rec_mutex_unlock_full(): that allows you to +unlock a GStaticRecMutex completely returning the depth, (i.e. the +number of times this mutex was locked). The depth can later be used +to restore the state of the GStaticRecMutex by calling +g_static_rec_mutex_lock_full(). In GLib 2.32, GStaticRecMutex has +been deprecated in favor of GRecMutex.

+

Even though GStaticRecMutex is not opaque, it should only be used +with the following functions.

+

All of the g_static_rec_mutex_* functions can be used even if +g_thread_init() has not been called. Then they do nothing, apart +from g_static_rec_mutex_trylock(), which does nothing but returning +TRUE.

+
+
+
+

G_STATIC_REC_MUTEX_INIT

+
#define G_STATIC_REC_MUTEX_INIT { G_STATIC_MUTEX_INIT }
+
+

G_STATIC_REC_MUTEX_INIT is deprecated and should not be used in newly-written code.

+

A GStaticRecMutex must be initialized with this macro before it can +be used. This macro can used be to initialize a variable, but it +cannot be assigned to a variable. In that case you have to use +g_static_rec_mutex_init().

+
+ + + + + + + +
1
GStaticRecMutex my_mutex = G_STATIC_REC_MUTEX_INIT;
+
+ +

+
+
+
+

struct GStaticRWLock

+
struct GStaticRWLock {
+};
+
+
+

GStaticRWLock has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use a GRWLock instead

+
+

The GStaticRWLock struct represents a read-write lock. A read-write +lock can be used for protecting data that some portions of code only +read from, while others also write. In such situations it is +desirable that several readers can read at once, whereas of course +only one writer may write at a time.

+

Take a look at the following example:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
GStaticRWLock rwlock = G_STATIC_RW_LOCK_INIT;
+GPtrArray *array;
+
+gpointer
+my_array_get (guint index)
+{
+  gpointer retval = NULL;
+
+  if (!array)
+    return NULL;
+
+  g_static_rw_lock_reader_lock (&rwlock);
+  if (index < array->len)
+    retval = g_ptr_array_index (array, index);
+  g_static_rw_lock_reader_unlock (&rwlock);
+
+  return retval;
+}
+
+void
+my_array_set (guint index, gpointer data)
+{
+  g_static_rw_lock_writer_lock (&rwlock);
+
+  if (!array)
+    array = g_ptr_array_new ();
+
+  if (index >= array->len)
+    g_ptr_array_set_size (array, index + 1);
+  g_ptr_array_index (array, index) = data;
+
+  g_static_rw_lock_writer_unlock (&rwlock);
+}
+
+ +

+

This example shows an array which can be accessed by many readers +(the my_array_get() function) simultaneously, whereas the writers +(the my_array_set() function) will only be allowed once at a time +and only if no readers currently access the array. This is because +of the potentially dangerous resizing of the array. Using these +functions is fully multi-thread safe now.

+

Most of the time, writers should have precedence over readers. That +means, for this implementation, that as soon as a writer wants to +lock the data, no other reader is allowed to lock the data, whereas, +of course, the readers that already have locked the data are allowed +to finish their operation. As soon as the last reader unlocks the +data, the writer will lock it.

+

Even though GStaticRWLock is not opaque, it should only be used +with the following functions.

+

All of the g_static_rw_lock_* functions can be used even if +g_thread_init() has not been called. Then they do nothing, apart +from g_static_rw_lock_*_trylock, which does nothing but returning TRUE.

+

A read-write lock has a higher overhead than a mutex. For example, both +g_static_rw_lock_reader_lock() and g_static_rw_lock_reader_unlock() have +to lock and unlock a GStaticMutex, so it takes at least twice the time +to lock and unlock a GStaticRWLock that it does to lock and unlock a +GStaticMutex. So only data structures that are accessed by multiple +readers, and which keep the lock for a considerable time justify a +GStaticRWLock. The above example most probably would fare better with a +GStaticMutex.

+
+
+
+

G_STATIC_RW_LOCK_INIT

+
#define G_STATIC_RW_LOCK_INIT { G_STATIC_MUTEX_INIT, NULL, NULL, 0, FALSE, 0, 0 }
+
+

G_STATIC_RW_LOCK_INIT is deprecated and should not be used in newly-written code.

+

A GStaticRWLock must be initialized with this macro before it can +be used. This macro can used be to initialize a variable, but it +cannot be assigned to a variable. In that case you have to use +g_static_rw_lock_init().

+
+ + + + + + + +
1
GStaticRWLock my_lock = G_STATIC_RW_LOCK_INIT;
+
+ +

+
+
+
+

struct GStaticPrivate

+
struct GStaticPrivate {
+};
+
+

GStaticPrivate is deprecated and should not be used in newly-written code.

+

A GStaticPrivate works almost like a GPrivate, but it has one +significant advantage. It doesn't need to be created at run-time +like a GPrivate, but can be defined at compile-time. This is +similar to the difference between GMutex and GStaticMutex.

+

Now look at our give_me_next_number() example with GStaticPrivate:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
int
+give_me_next_number ()
+{
+  static GStaticPrivate current_number_key = G_STATIC_PRIVATE_INIT;
+  int *current_number = g_static_private_get (&current_number_key);
+
+  if (!current_number)
+    {
+      current_number = g_new (int, 1);
+      *current_number = 0;
+      g_static_private_set (&current_number_key, current_number, g_free);
+    }
+
+  *current_number = calc_next_number (*current_number);
+
+  return *current_number;
+}
+
+ +

+
+
+
+

G_STATIC_PRIVATE_INIT

+
#define G_STATIC_PRIVATE_INIT 
+
+

G_STATIC_PRIVATE_INIT is deprecated and should not be used in newly-written code.

+

Every GStaticPrivate must be initialized with this macro, before it +can be used.

+
+ + + + + + + +
1
GStaticPrivate my_private = G_STATIC_PRIVATE_INIT;
+
+ +

+
+
+
+

See Also

+

GThread

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Double-ended-Queues.html b/docs/reference/glib/html/glib-Double-ended-Queues.html new file mode 100644 index 0000000..3736db0 --- /dev/null +++ b/docs/reference/glib/html/glib-Double-ended-Queues.html @@ -0,0 +1,1841 @@ + + + + +Double-ended Queues: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Double-ended Queues

+

Double-ended Queues — double-ended queue data structure

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GQueue * + +g_queue_new () +
+void + +g_queue_free () +
+void + +g_queue_free_full () +
+void + +g_queue_init () +
+void + +g_queue_clear () +
+gboolean + +g_queue_is_empty () +
+guint + +g_queue_get_length () +
+void + +g_queue_reverse () +
+GQueue * + +g_queue_copy () +
+void + +g_queue_foreach () +
+GList * + +g_queue_find () +
+GList * + +g_queue_find_custom () +
+void + +g_queue_sort () +
+void + +g_queue_push_head () +
+void + +g_queue_push_tail () +
+void + +g_queue_push_nth () +
+gpointer + +g_queue_pop_head () +
+gpointer + +g_queue_pop_tail () +
+gpointer + +g_queue_pop_nth () +
+gpointer + +g_queue_peek_head () +
+gpointer + +g_queue_peek_tail () +
+gpointer + +g_queue_peek_nth () +
+gint + +g_queue_index () +
+gboolean + +g_queue_remove () +
+guint + +g_queue_remove_all () +
+void + +g_queue_insert_before () +
+void + +g_queue_insert_after () +
+void + +g_queue_insert_sorted () +
+void + +g_queue_push_head_link () +
+void + +g_queue_push_tail_link () +
+void + +g_queue_push_nth_link () +
+GList * + +g_queue_pop_head_link () +
+GList * + +g_queue_pop_tail_link () +
+GList * + +g_queue_pop_nth_link () +
+GList * + +g_queue_peek_head_link () +
+GList * + +g_queue_peek_tail_link () +
+GList * + +g_queue_peek_nth_link () +
+gint + +g_queue_link_index () +
+void + +g_queue_unlink () +
+void + +g_queue_delete_link () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
structGQueue
#defineG_QUEUE_INIT
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The GQueue structure and its associated functions provide a standard +queue data structure. Internally, GQueue uses the same data structure +as GList to store elements.

+

The data contained in each element can be either integer values, by +using one of the Type Conversion Macros, +or simply pointers to any type of data.

+

To create a new GQueue, use g_queue_new().

+

To initialize a statically-allocated GQueue, use G_QUEUE_INIT or +g_queue_init().

+

To add elements, use g_queue_push_head(), g_queue_push_head_link(), +g_queue_push_tail() and g_queue_push_tail_link().

+

To remove elements, use g_queue_pop_head() and g_queue_pop_tail().

+

To free the entire queue, use g_queue_free().

+
+
+

Functions

+
+

g_queue_new ()

+
GQueue *
+g_queue_new (void);
+

Creates a new GQueue.

+
+

Returns

+

a newly allocated GQueue

+
+
+
+
+

g_queue_free ()

+
void
+g_queue_free (GQueue *queue);
+

Frees the memory allocated for the GQueue. Only call this function +if queue + was created with g_queue_new(). If queue elements contain +dynamically-allocated memory, they should be freed first.

+

If queue elements contain dynamically-allocated memory, you should +either use g_queue_free_full() or free them manually first.

+
+

Parameters

+
+++++ + + + + + +

queue

a GQueue

 
+
+
+
+
+

g_queue_free_full ()

+
void
+g_queue_free_full (GQueue *queue,
+                   GDestroyNotify free_func);
+

Convenience method, which frees all the memory used by a GQueue, +and calls the specified destroy function on every element's data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a pointer to a GQueue

 

free_func

the function to be called to free each element's data

 
+
+

Since: 2.32

+
+
+
+

g_queue_init ()

+
void
+g_queue_init (GQueue *queue);
+

A statically-allocated GQueue must be initialized with this function +before it can be used. Alternatively you can initialize it with +G_QUEUE_INIT. It is not necessary to initialize queues created with +g_queue_new().

+
+

Parameters

+
+++++ + + + + + +

queue

an uninitialized GQueue

 
+
+

Since: 2.14

+
+
+
+

g_queue_clear ()

+
void
+g_queue_clear (GQueue *queue);
+

Removes all the elements in queue +. If queue elements contain +dynamically-allocated memory, they should be freed first.

+
+

Parameters

+
+++++ + + + + + +

queue

a GQueue

 
+
+

Since: 2.14

+
+
+
+

g_queue_is_empty ()

+
gboolean
+g_queue_is_empty (GQueue *queue);
+

Returns TRUE if the queue is empty.

+
+

Parameters

+
+++++ + + + + + +

queue

a GQueue.

 
+
+
+

Returns

+

TRUE if the queue is empty

+
+
+
+
+

g_queue_get_length ()

+
guint
+g_queue_get_length (GQueue *queue);
+

Returns the number of items in queue +.

+
+

Parameters

+
+++++ + + + + + +

queue

a GQueue

 
+
+
+

Returns

+

the number of items in queue +

+
+

Since: 2.4

+
+
+
+

g_queue_reverse ()

+
void
+g_queue_reverse (GQueue *queue);
+

Reverses the order of the items in queue +.

+
+

Parameters

+
+++++ + + + + + +

queue

a GQueue

 
+
+

Since: 2.4

+
+
+
+

g_queue_copy ()

+
GQueue *
+g_queue_copy (GQueue *queue);
+

Copies a queue +. Note that is a shallow copy. If the elements in the +queue consist of pointers to data, the pointers are copied, but the +actual data is not.

+
+

Parameters

+
+++++ + + + + + +

queue

a GQueue

 
+
+
+

Returns

+

a copy of queue +

+
+

Since: 2.4

+
+
+
+

g_queue_foreach ()

+
void
+g_queue_foreach (GQueue *queue,
+                 GFunc func,
+                 gpointer user_data);
+

Calls func + for each element in the queue passing user_data + to the +function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

queue

a GQueue

 

func

the function to call for each element's data

 

user_data

user data to pass to func +

 
+
+

Since: 2.4

+
+
+
+

g_queue_find ()

+
GList *
+g_queue_find (GQueue *queue,
+              gconstpointer data);
+

Finds the first link in queue + which contains data +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GQueue

 

data

data to find

 
+
+
+

Returns

+

the first link in queue +which contains data +

+
+

Since: 2.4

+
+
+
+

g_queue_find_custom ()

+
GList *
+g_queue_find_custom (GQueue *queue,
+                     gconstpointer data,
+                     GCompareFunc func);
+

Finds an element in a GQueue, using a supplied function to find the +desired element. It iterates over the queue, calling the given function +which should return 0 when the desired element is found. The function +takes two gconstpointer arguments, the GQueue element's data as the +first argument and the given user data as the second argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

queue

a GQueue

 

data

user data passed to func +

 

func

a GCompareFunc to call for each element. It should return 0 +when the desired element is found

 
+
+
+

Returns

+

the found link, or NULL if it wasn't found

+
+

Since: 2.4

+
+
+
+

g_queue_sort ()

+
void
+g_queue_sort (GQueue *queue,
+              GCompareDataFunc compare_func,
+              gpointer user_data);
+

Sorts queue + using compare_func +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

queue

a GQueue

 

compare_func

the GCompareDataFunc used to sort queue +. This function +is passed two elements of the queue and should return 0 if they are +equal, a negative value if the first comes before the second, and +a positive value if the second comes before the first.

 

user_data

user data passed to compare_func +

 
+
+

Since: 2.4

+
+
+
+

g_queue_push_head ()

+
void
+g_queue_push_head (GQueue *queue,
+                   gpointer data);
+

Adds a new element at the head of the queue.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GQueue.

 

data

the data for the new element.

 
+
+
+
+
+

g_queue_push_tail ()

+
void
+g_queue_push_tail (GQueue *queue,
+                   gpointer data);
+

Adds a new element at the tail of the queue.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GQueue

 

data

the data for the new element

 
+
+
+
+
+

g_queue_push_nth ()

+
void
+g_queue_push_nth (GQueue *queue,
+                  gpointer data,
+                  gint n);
+

Inserts a new element into queue + at the given position.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

queue

a GQueue

 

data

the data for the new element

 

n

the position to insert the new element. If n +is negative or +larger than the number of elements in the queue +, the element is +added to the end of the queue.

 
+
+

Since: 2.4

+
+
+
+

g_queue_pop_head ()

+
gpointer
+g_queue_pop_head (GQueue *queue);
+

Removes the first element of the queue and returns its data.

+
+

Parameters

+
+++++ + + + + + +

queue

a GQueue

 
+
+
+

Returns

+

the data of the first element in the queue, or NULL +if the queue is empty

+
+
+
+
+

g_queue_pop_tail ()

+
gpointer
+g_queue_pop_tail (GQueue *queue);
+

Removes the last element of the queue and returns its data.

+
+

Parameters

+
+++++ + + + + + +

queue

a GQueue

 
+
+
+

Returns

+

the data of the last element in the queue, or NULL +if the queue is empty

+
+
+
+
+

g_queue_pop_nth ()

+
gpointer
+g_queue_pop_nth (GQueue *queue,
+                 guint n);
+

Removes the n +'th element of queue + and returns its data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GQueue

 

n

the position of the element

 
+
+
+

Returns

+

the element's data, or NULL if n +is off the end of queue +

+
+

Since: 2.4

+
+
+
+

g_queue_peek_head ()

+
gpointer
+g_queue_peek_head (GQueue *queue);
+

Returns the first element of the queue.

+
+

Parameters

+
+++++ + + + + + +

queue

a GQueue

 
+
+
+

Returns

+

the data of the first element in the queue, or NULL +if the queue is empty

+
+
+
+
+

g_queue_peek_tail ()

+
gpointer
+g_queue_peek_tail (GQueue *queue);
+

Returns the last element of the queue.

+
+

Parameters

+
+++++ + + + + + +

queue

a GQueue

 
+
+
+

Returns

+

the data of the last element in the queue, or NULL +if the queue is empty

+
+
+
+
+

g_queue_peek_nth ()

+
gpointer
+g_queue_peek_nth (GQueue *queue,
+                  guint n);
+

Returns the n +'th element of queue +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GQueue

 

n

the position of the element

 
+
+
+

Returns

+

the data for the n +'th element of queue +, +or NULL if n +is off the end of queue +

+
+

Since: 2.4

+
+
+
+

g_queue_index ()

+
gint
+g_queue_index (GQueue *queue,
+               gconstpointer data);
+

Returns the position of the first element in queue + which contains data +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GQueue

 

data

the data to find

 
+
+
+

Returns

+

the position of the first element in queue +which +contains data +, or -1 if no element in queue +contains data +

+
+

Since: 2.4

+
+
+
+

g_queue_remove ()

+
gboolean
+g_queue_remove (GQueue *queue,
+                gconstpointer data);
+

Removes the first element in queue + that contains data +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GQueue

 

data

the data to remove

 
+
+
+

Returns

+

TRUE if data +was found and removed from queue +

+
+

Since: 2.4

+
+
+
+

g_queue_remove_all ()

+
guint
+g_queue_remove_all (GQueue *queue,
+                    gconstpointer data);
+

Remove all elements whose data equals data + from queue +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GQueue

 

data

the data to remove

 
+
+
+

Returns

+

the number of elements removed from queue +

+
+

Since: 2.4

+
+
+
+

g_queue_insert_before ()

+
void
+g_queue_insert_before (GQueue *queue,
+                       GList *sibling,
+                       gpointer data);
+

Inserts data + into queue + before sibling +.

+

sibling + must be part of queue +. Since GLib 2.44 a NULL sibling pushes the +data at the tail of the queue.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

queue

a GQueue

 

sibling

a GList link that must be part of queue +, or NULL to +push at the tail of the queue.

[nullable]

data

the data to insert

 
+
+

Since: 2.4

+
+
+
+

g_queue_insert_after ()

+
void
+g_queue_insert_after (GQueue *queue,
+                      GList *sibling,
+                      gpointer data);
+

Inserts data + into queue + after sibling +.

+

sibling + must be part of queue +. Since GLib 2.44 a NULL sibling pushes the +data at the head of the queue.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

queue

a GQueue

 

sibling

a GList link that must be part of queue +, or NULL to +push at the head of the queue.

[nullable]

data

the data to insert

 
+
+

Since: 2.4

+
+
+
+

g_queue_insert_sorted ()

+
void
+g_queue_insert_sorted (GQueue *queue,
+                       gpointer data,
+                       GCompareDataFunc func,
+                       gpointer user_data);
+

Inserts data + into queue + using func + to determine the new position.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

queue

a GQueue

 

data

the data to insert

 

func

the GCompareDataFunc used to compare elements in the queue. It is +called with two elements of the queue +and user_data +. It should +return 0 if the elements are equal, a negative value if the first +element comes before the second, and a positive value if the second +element comes before the first.

 

user_data

user data passed to func +

 
+
+

Since: 2.4

+
+
+
+

g_queue_push_head_link ()

+
void
+g_queue_push_head_link (GQueue *queue,
+                        GList *link_);
+

Adds a new element at the head of the queue.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GQueue

 

link_

a single GList element, not a list with more than one element

 
+
+
+
+
+

g_queue_push_tail_link ()

+
void
+g_queue_push_tail_link (GQueue *queue,
+                        GList *link_);
+

Adds a new element at the tail of the queue.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GQueue

 

link_

a single GList element, not a list with more than one element

 
+
+
+
+
+

g_queue_push_nth_link ()

+
void
+g_queue_push_nth_link (GQueue *queue,
+                       gint n,
+                       GList *link_);
+

Inserts link + into queue + at the given position.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

queue

a GQueue

 

n

the position to insert the link. If this is negative or larger than +the number of elements in queue +, the link is added to the end of +queue +.

 

link_

the link to add to queue +

 
+
+

Since: 2.4

+
+
+
+

g_queue_pop_head_link ()

+
GList *
+g_queue_pop_head_link (GQueue *queue);
+

Removes and returns the first element of the queue.

+
+

Parameters

+
+++++ + + + + + +

queue

a GQueue

 
+
+
+

Returns

+

the GList element at the head of the queue, or NULL +if the queue is empty

+
+
+
+
+

g_queue_pop_tail_link ()

+
GList *
+g_queue_pop_tail_link (GQueue *queue);
+

Removes and returns the last element of the queue.

+
+

Parameters

+
+++++ + + + + + +

queue

a GQueue

 
+
+
+

Returns

+

the GList element at the tail of the queue, or NULL +if the queue is empty

+
+
+
+
+

g_queue_pop_nth_link ()

+
GList *
+g_queue_pop_nth_link (GQueue *queue,
+                      guint n);
+

Removes and returns the link at the given position.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GQueue

 

n

the link's position

 
+
+
+

Returns

+

the n +'th link, or NULL if n +is off the end of queue +

+
+

Since: 2.4

+
+
+
+

g_queue_peek_head_link ()

+
GList *
+g_queue_peek_head_link (GQueue *queue);
+

Returns the first link in queue +.

+
+

Parameters

+
+++++ + + + + + +

queue

a GQueue

 
+
+
+

Returns

+

the first link in queue +, or NULL if queue +is empty

+
+

Since: 2.4

+
+
+
+

g_queue_peek_tail_link ()

+
GList *
+g_queue_peek_tail_link (GQueue *queue);
+

Returns the last link in queue +.

+
+

Parameters

+
+++++ + + + + + +

queue

a GQueue

 
+
+
+

Returns

+

the last link in queue +, or NULL if queue +is empty

+
+

Since: 2.4

+
+
+
+

g_queue_peek_nth_link ()

+
GList *
+g_queue_peek_nth_link (GQueue *queue,
+                       guint n);
+

Returns the link at the given position

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GQueue

 

n

the position of the link

 
+
+
+

Returns

+

the link at the n +'th position, or NULL +if n +is off the end of the list

+
+

Since: 2.4

+
+
+
+

g_queue_link_index ()

+
gint
+g_queue_link_index (GQueue *queue,
+                    GList *link_);
+

Returns the position of link_ + in queue +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GQueue

 

link_

a GList link

 
+
+
+

Returns

+

the position of link_ +, or -1 if the link is +not part of queue +

+
+

Since: 2.4

+
+
+
+

g_queue_unlink ()

+
void
+g_queue_unlink (GQueue *queue,
+                GList *link_);
+

Unlinks link_ + so that it will no longer be part of queue +. +The link is not freed.

+

link_ + must be part of queue +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GQueue

 

link_

a GList link that must be part of queue +

 
+
+

Since: 2.4

+
+
+
+

g_queue_delete_link ()

+
void
+g_queue_delete_link (GQueue *queue,
+                     GList *link_);
+

Removes link_ + from queue + and frees it.

+

link_ + must be part of queue +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

queue

a GQueue

 

link_

a GList link that must be part of queue +

 
+
+

Since: 2.4

+
+
+
+

Types and Values

+
+

struct GQueue

+
struct GQueue {
+  GList *head;
+  GList *tail;
+  guint  length;
+};
+
+

Contains the public fields of a +Queue.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GList *head;

a pointer to the first element of the queue

 

GList *tail;

a pointer to the last element of the queue

 

guint length;

the number of elements in the queue

 
+
+
+
+
+

G_QUEUE_INIT

+
#define G_QUEUE_INIT { NULL, NULL, 0 }
+
+

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().

+
+ + + + + + + +
1
GQueue my_queue = G_QUEUE_INIT;
+
+ +

+

Since: 2.14

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Doubly-Linked-Lists.html b/docs/reference/glib/html/glib-Doubly-Linked-Lists.html new file mode 100644 index 0000000..a52f832 --- /dev/null +++ b/docs/reference/glib/html/glib-Doubly-Linked-Lists.html @@ -0,0 +1,1921 @@ + + + + +Doubly-Linked Lists: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Doubly-Linked Lists

+

Doubly-Linked Lists — linked lists that can be iterated over in both directions

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GList * + +g_list_append () +
+GList * + +g_list_prepend () +
+GList * + +g_list_insert () +
+GList * + +g_list_insert_before () +
+GList * + +g_list_insert_sorted () +
+GList * + +g_list_remove () +
+GList * + +g_list_remove_link () +
+GList * + +g_list_delete_link () +
+GList * + +g_list_remove_all () +
+void + +g_list_free () +
+void + +g_list_free_full () +
+GList * + +g_list_alloc () +
+void + +g_list_free_1 () +
+guint + +g_list_length () +
+GList * + +g_list_copy () +
+GList * + +g_list_copy_deep () +
+GList * + +g_list_reverse () +
+GList * + +g_list_sort () +
+gint + +(*GCompareFunc) () +
+GList * + +g_list_insert_sorted_with_data () +
+GList * + +g_list_sort_with_data () +
+gint + +(*GCompareDataFunc) () +
+GList * + +g_list_concat () +
+void + +g_list_foreach () +
+void + +(*GFunc) () +
+GList * + +g_list_first () +
+GList * + +g_list_last () +
#define +g_list_previous() +
#define +g_list_next() +
+GList * + +g_list_nth () +
+gpointer + +g_list_nth_data () +
+GList * + +g_list_nth_prev () +
+GList * + +g_list_find () +
+GList * + +g_list_find_custom () +
+gint + +g_list_position () +
+gint + +g_list_index () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
structGList
#defineg_list_free1
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The GList structure and its associated functions provide a standard +doubly-linked list data structure.

+

Each element in the list contains a piece of data, together with +pointers which link to the previous and next elements in the list. +Using these pointers it is possible to move through the list in both +directions (unlike the singly-linked GSList, +which only allows movement through the list in the forward direction).

+

The double linked list does not keep track of the number of items +and does not keep track of both the start and end of the list. If +you want fast access to both the start and the end of the list, +and/or the number of items in the list, use a +GQueue instead.

+

The data contained in each element can be either integer values, by +using one of the Type Conversion Macros, +or simply pointers to any type of data.

+

List elements are allocated from the slice allocator, +which is more efficient than allocating elements individually.

+

Note that most of the GList functions expect to be passed a pointer +to the first element in the list. The functions which insert +elements return the new start of the list, which may have changed.

+

There is no function to create a GList. NULL is considered to be +a valid, empty list so you simply set a GList* to NULL to initialize +it.

+

To add elements, use g_list_append(), g_list_prepend(), +g_list_insert() and g_list_insert_sorted().

+

To visit all elements in the list, use a loop over the list:

+
+ + + + + + + +
1
+2
+3
+4
+5
GList *l;
+for (l = list; l != NULL; l = l->next)
+  {
+    // do something with l->data
+  }
+
+ +

+

To call a function for each element in the list, use g_list_foreach().

+

To loop over the list and modify it (e.g. remove a certain element) +a while loop is more appropriate, for example:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
GList *l = list;
+while (l != NULL)
+  {
+    GList *next = l->next;
+    if (should_be_removed (l))
+      {
+        // possibly free l->data
+        list = g_list_delete_link (list, l);
+      }
+    l = next;
+  }
+
+ +

+

To remove elements, use g_list_remove().

+

To navigate in a list, use g_list_first(), g_list_last(), +g_list_next(), g_list_previous().

+

To find elements in the list use g_list_nth(), g_list_nth_data(), +g_list_find() and g_list_find_custom().

+

To find the index of an element use g_list_position() and +g_list_index().

+

To free the entire list, use g_list_free() or g_list_free_full().

+
+
+

Functions

+
+

g_list_append ()

+
GList *
+g_list_append (GList *list,
+               gpointer data);
+

Adds a new element on to the end of the list.

+

Note that the return value is the new start of the list, +if list + was empty; make sure you store the new value.

+

g_list_append() has to traverse the entire list to find the end, +which is inefficient when adding multiple elements. A common idiom +to avoid the inefficiency is to use g_list_prepend() and reverse +the list with g_list_reverse() when all elements have been added.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
// Notice that these are initialized to the empty list.
+GList *string_list = NULL, *number_list = NULL;
+
+// This is a list of strings.
+string_list = g_list_append (string_list, "first");
+string_list = g_list_append (string_list, "second");
+
+// This is a list of integers.
+number_list = g_list_append (number_list, GINT_TO_POINTER (27));
+number_list = g_list_append (number_list, GINT_TO_POINTER (14));
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a pointer to a GList

 

data

the data for the new element

 
+
+
+

Returns

+

either list +or the new start of the GList if list +was NULL

+
+
+
+
+

g_list_prepend ()

+
GList *
+g_list_prepend (GList *list,
+                gpointer data);
+

Prepends a new element on to the start of the list.

+

Note that the return value is the new start of the list, +which will have changed, so make sure you store the new value.

+
+ + + + + + + +
1
+2
+3
+4
+5
// Notice that it is initialized to the empty list.
+GList *list = NULL;
+
+list = g_list_prepend (list, "last");
+list = g_list_prepend (list, "first");
+
+ +

+

Do not use this function to prepend a new element to a different +element than the start of the list. Use g_list_insert_before() instead.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a pointer to a GList, this must point to the top of the list

 

data

the data for the new element

 
+
+
+

Returns

+

a pointer to the newly prepended element, which is the new +start of the GList

+
+
+
+
+

g_list_insert ()

+
GList *
+g_list_insert (GList *list,
+               gpointer data,
+               gint position);
+

Inserts a new element into the list at the given position.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

list

a pointer to a GList, this must point to the top of the list

 

data

the data for the new element

 

position

the position to insert the element. If this is +negative, or is larger than the number of elements in the +list, the new element is added on to the end of the list.

 
+
+
+

Returns

+

the (possibly changed) start of the GList

+
+
+
+
+

g_list_insert_before ()

+
GList *
+g_list_insert_before (GList *list,
+                      GList *sibling,
+                      gpointer data);
+

Inserts a new element into the list before the given position.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

list

a pointer to a GList, this must point to the top of the list

 

sibling

the list element before which the new element +is inserted or NULL to insert at the end of the list

 

data

the data for the new element

 
+
+
+

Returns

+

the (possibly changed) start of the GList

+
+
+
+
+

g_list_insert_sorted ()

+
GList *
+g_list_insert_sorted (GList *list,
+                      gpointer data,
+                      GCompareFunc func);
+

Inserts a new element into the list, using the given comparison +function to determine its position.

+

If you are adding many new elements to a list, and the number of +new elements is much larger than the length of the list, use +g_list_prepend() to add the new items and sort the list afterwards +with g_list_sort().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

list

a pointer to a GList, this must point to the top of the +already sorted list

 

data

the data for the new element

 

func

the function to compare elements in the list. It should +return a number > 0 if the first parameter comes after the +second parameter in the sort order.

 
+
+
+

Returns

+

the (possibly changed) start of the GList

+
+
+
+
+

g_list_remove ()

+
GList *
+g_list_remove (GList *list,
+               gconstpointer data);
+

Removes an element from a GList. +If two elements contain the same data, only the first is removed. +If none of the elements contain the data, the GList is unchanged.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GList, this must point to the top of the list

 

data

the data of the element to remove

 
+
+
+

Returns

+

the (possibly changed) start of the GList

+
+
+
+
+

g_list_remove_link ()

+
GList *
+g_list_remove_link (GList *list,
+                    GList *llink);
+

Removes an element from a GList, without freeing the element. +The removed element's prev and next links are set to NULL, so +that it becomes a self-contained list with one element.

+

This function is for example used to move an element in the list +(see the example for g_list_concat()) or to remove an element in +the list before freeing its data:

+
+ + + + + + + +
1
+2
+3
list = g_list_remove_link (list, llink);
+free_some_data_that_may_access_the_list_again (llink->data);
+g_list_free (llink);
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GList, this must point to the top of the list

 

llink

an element in the GList

 
+
+
+

Returns

+

the (possibly changed) start of the GList

+
+
+
+
+

g_list_delete_link ()

+
GList *
+g_list_delete_link (GList *list,
+                    GList *link_);
+

Removes the node link_ from the list and frees it. +Compare this to g_list_remove_link() which removes the node +without freeing it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GList, this must point to the top of the list

 

link_

node to delete from list +

 
+
+
+

Returns

+

the (possibly changed) start of the GList

+
+
+
+
+

g_list_remove_all ()

+
GList *
+g_list_remove_all (GList *list,
+                   gconstpointer data);
+

Removes all list nodes with data equal to data +. +Returns the new head of the list. Contrast with +g_list_remove() which removes only the first node +matching the given data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GList, this must point to the top of the list

 

data

data to remove

 
+
+
+

Returns

+

the (possibly changed) start of the GList

+
+
+
+
+

g_list_free ()

+
void
+g_list_free (GList *list);
+

Frees all of the memory used by a GList. +The freed elements are returned to the slice allocator.

+

If list elements contain dynamically-allocated memory, you should +either use g_list_free_full() or free them manually first.

+
+

Parameters

+
+++++ + + + + + +

list

a GList

 
+
+
+
+
+

g_list_free_full ()

+
void
+g_list_free_full (GList *list,
+                  GDestroyNotify free_func);
+

Convenience method, which frees all the memory used by a GList, +and calls free_func + on every element's data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a pointer to a GList

 

free_func

the function to be called to free each element's data

 
+
+

Since: 2.28

+
+
+
+

g_list_alloc ()

+
GList *
+g_list_alloc (void);
+

Allocates space for one GList element. It is called by +g_list_append(), g_list_prepend(), g_list_insert() and +g_list_insert_sorted() and so is rarely used on its own.

+
+

Returns

+

a pointer to the newly-allocated GList element

+
+
+
+
+

g_list_free_1 ()

+
void
+g_list_free_1 (GList *list);
+

Frees one GList element, but does not update links from the next and +previous elements in the list, so you should not call this function on an +element that is currently part of a list.

+

It is usually used after g_list_remove_link().

+
+

Parameters

+
+++++ + + + + + +

list

a GList element

 
+
+
+
+
+

g_list_length ()

+
guint
+g_list_length (GList *list);
+

Gets the number of elements in a GList.

+

This function iterates over the whole list to count its elements. +Use a GQueue instead of a GList if you regularly need the number +of items. To check whether the list is non-empty, it is faster to check +list + against NULL.

+
+

Parameters

+
+++++ + + + + + +

list

a GList, this must point to the top of the list

 
+
+
+

Returns

+

the number of elements in the GList

+
+
+
+
+

g_list_copy ()

+
GList *
+g_list_copy (GList *list);
+

Copies a GList.

+

Note that this is a "shallow" copy. If the list elements +consist of pointers to data, the pointers are copied but +the actual data is not. See g_list_copy_deep() if you need +to copy the data as well.

+
+

Parameters

+
+++++ + + + + + +

list

a GList, this must point to the top of the list

 
+
+
+

Returns

+

the start of the new list that holds the same data as list +

+
+
+
+
+

g_list_copy_deep ()

+
GList *
+g_list_copy_deep (GList *list,
+                  GCopyFunc func,
+                  gpointer user_data);
+

Makes a full (deep) copy of a GList.

+

In contrast with g_list_copy(), this function uses func + to make +a copy of each list element, in addition to copying the list +container itself.

+

func +, as a GCopyFunc, takes two arguments, the data to be copied +and a user_data + pointer. It's safe to pass NULL as user_data, +if the copy function takes only one argument.

+

For instance, if list + holds a list of GObjects, you can do:

+
+ + + + + + + +
1
another_list = g_list_copy_deep (list, (GCopyFunc) g_object_ref, NULL);
+
+ +

+

And, to entirely free the new list, you could do:

+
+ + + + + + + +
1
g_list_free_full (another_list, g_object_unref);
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

list

a GList, this must point to the top of the list

 

func

a copy function used to copy every element in the list

 

user_data

user data passed to the copy function func +, or NULL

 
+
+
+

Returns

+

the start of the new list that holds a full copy of list +, +use g_list_free_full() to free it

+
+

Since: 2.34

+
+
+
+

g_list_reverse ()

+
GList *
+g_list_reverse (GList *list);
+

Reverses a GList. +It simply switches the next and prev pointers of each element.

+
+

Parameters

+
+++++ + + + + + +

list

a GList, this must point to the top of the list

 
+
+
+

Returns

+

the start of the reversed GList

+
+
+
+
+

g_list_sort ()

+
GList *
+g_list_sort (GList *list,
+             GCompareFunc compare_func);
+

Sorts a GList using the given comparison function. The algorithm +used is a stable sort.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GList, this must point to the top of the list

 

compare_func

the comparison function used to sort the GList. +This function is passed the data from 2 elements of the GList +and should return 0 if they are equal, a negative value if the +first element comes before the second, or a positive value if +the first element comes after the second.

 
+
+
+

Returns

+

the (possibly changed) start of the GList

+
+
+
+
+

GCompareFunc ()

+
gint
+(*GCompareFunc) (gconstpointer a,
+                 gconstpointer b);
+

Specifies the type of a comparison function used to compare two +values. The function should return a negative integer if the first +value comes before the second, 0 if they are equal, or a positive +integer if the first value comes after the second.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

a

a value

 

b

a value to compare with

 
+
+
+

Returns

+

negative value if a +< b +; zero if a += b +; positive +value if a +> b +

+
+
+
+
+

g_list_insert_sorted_with_data ()

+
GList *
+g_list_insert_sorted_with_data (GList *list,
+                                gpointer data,
+                                GCompareDataFunc func,
+                                gpointer user_data);
+

Inserts a new element into the list, using the given comparison +function to determine its position.

+

If you are adding many new elements to a list, and the number of +new elements is much larger than the length of the list, use +g_list_prepend() to add the new items and sort the list afterwards +with g_list_sort().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

list

a pointer to a GList, this must point to the top of the +already sorted list

 

data

the data for the new element

 

func

the function to compare elements in the list. It should +return a number > 0 if the first parameter comes after the +second parameter in the sort order.

 

user_data

user data to pass to comparison function

 
+
+
+

Returns

+

the (possibly changed) start of the GList

+
+

Since: 2.10

+
+
+
+

g_list_sort_with_data ()

+
GList *
+g_list_sort_with_data (GList *list,
+                       GCompareDataFunc compare_func,
+                       gpointer user_data);
+

Like g_list_sort(), but the comparison function accepts +a user data argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

list

a GList, this must point to the top of the list

 

compare_func

comparison function

 

user_data

user data to pass to comparison function

 
+
+
+

Returns

+

the (possibly changed) start of the GList

+
+
+
+
+

GCompareDataFunc ()

+
gint
+(*GCompareDataFunc) (gconstpointer a,
+                     gconstpointer b,
+                     gpointer user_data);
+

Specifies the type of a comparison function used to compare two +values. The function should return a negative integer if the first +value comes before the second, 0 if they are equal, or a positive +integer if the first value comes after the second.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

a

a value

 

b

a value to compare with

 

user_data

user data

 
+
+
+

Returns

+

negative value if a +< b +; zero if a += b +; positive +value if a +> b +

+
+
+
+
+

g_list_concat ()

+
GList *
+g_list_concat (GList *list1,
+               GList *list2);
+

Adds the second GList onto the end of the first GList. +Note that the elements of the second GList are not copied. +They are used directly.

+

This function is for example used to move an element in the list. +The following example moves an element to the top of the list:

+
+ + + + + + + +
1
+2
list = g_list_remove_link (list, llink);
+list = g_list_concat (llink, list);
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list1

a GList, this must point to the top of the list

 

list2

the GList to add to the end of the first GList, +this must point to the top of the list

 
+
+
+

Returns

+

the start of the new GList, which equals list1 +if not NULL

+
+
+
+
+

g_list_foreach ()

+
void
+g_list_foreach (GList *list,
+                GFunc func,
+                gpointer user_data);
+

Calls a function for each element of a GList.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

list

a GList, this must point to the top of the list

 

func

the function to call with each element's data

 

user_data

user data to pass to the function

 
+
+
+
+
+

GFunc ()

+
void
+(*GFunc) (gpointer data,
+          gpointer user_data);
+

Specifies the type of functions passed to g_list_foreach() and +g_slist_foreach().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

data

the element's data

 

user_data

user data passed to g_list_foreach() or g_slist_foreach()

 
+
+
+
+
+

g_list_first ()

+
GList *
+g_list_first (GList *list);
+

Gets the first element in a GList.

+
+

Parameters

+
+++++ + + + + + +

list

any GList element

 
+
+
+

Returns

+

the first element in the GList, +or NULL if the GList has no elements

+
+
+
+
+

g_list_last ()

+
GList *
+g_list_last (GList *list);
+

Gets the last element in a GList.

+
+

Parameters

+
+++++ + + + + + +

list

any GList element

 
+
+
+

Returns

+

the last element in the GList, +or NULL if the GList has no elements

+
+
+
+
+

g_list_previous()

+
#define             g_list_previous(list)
+

A convenience macro to get the previous element in a GList. +Note that it is considered perfectly acceptable to access +list->previous + directly.

+
+

Parameters

+
+++++ + + + + + +

list

an element in a GList

 
+
+
+

Returns

+

the previous element, or NULL if there are no previous +elements

+
+
+
+
+

g_list_next()

+
#define             g_list_next(list)
+

A convenience macro to get the next element in a GList. +Note that it is considered perfectly acceptable to access +list->next + directly.

+
+

Parameters

+
+++++ + + + + + +

list

an element in a GList

 
+
+
+

Returns

+

the next element, or NULL if there are no more elements

+
+
+
+
+

g_list_nth ()

+
GList *
+g_list_nth (GList *list,
+            guint n);
+

Gets the element at the given position in a GList.

+

This iterates over the list until it reaches the n +-th position. If you +intend to iterate over every element, it is better to use a for-loop as +described in the GList introduction.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GList, this must point to the top of the list

 

n

the position of the element, counting from 0

 
+
+
+

Returns

+

the element, or NULL if the position is off +the end of the GList

+
+
+
+
+

g_list_nth_data ()

+
gpointer
+g_list_nth_data (GList *list,
+                 guint n);
+

Gets the data of the element at the given position.

+

This iterates over the list until it reaches the n +-th position. If you +intend to iterate over every element, it is better to use a for-loop as +described in the GList introduction.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GList, this must point to the top of the list

 

n

the position of the element

 
+
+
+

Returns

+

the element's data, or NULL if the position +is off the end of the GList

+
+
+
+
+

g_list_nth_prev ()

+
GList *
+g_list_nth_prev (GList *list,
+                 guint n);
+

Gets the element n + places before list +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GList

 

n

the position of the element, counting from 0

 
+
+
+

Returns

+

the element, or NULL if the position is +off the end of the GList

+
+
+
+
+

g_list_find ()

+
GList *
+g_list_find (GList *list,
+             gconstpointer data);
+

Finds the element in a GList which contains the given data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GList, this must point to the top of the list

 

data

the element data to find

 
+
+
+

Returns

+

the found GList element, or NULL if it is not found

+
+
+
+
+

g_list_find_custom ()

+
GList *
+g_list_find_custom (GList *list,
+                    gconstpointer data,
+                    GCompareFunc func);
+

Finds an element in a GList, using a supplied function to +find the desired element. It iterates over the list, calling +the given function which should return 0 when the desired +element is found. The function takes two gconstpointer arguments, +the GList element's data as the first argument and the +given user data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

list

a GList, this must point to the top of the list

 

data

user data passed to the function

 

func

the function to call for each element. +It should return 0 when the desired element is found

 
+
+
+

Returns

+

the found GList element, or NULL if it is not found

+
+
+
+
+

g_list_position ()

+
gint
+g_list_position (GList *list,
+                 GList *llink);
+

Gets the position of the given element +in the GList (starting from 0).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GList, this must point to the top of the list

 

llink

an element in the GList

 
+
+
+

Returns

+

the position of the element in the GList, +or -1 if the element is not found

+
+
+
+
+

g_list_index ()

+
gint
+g_list_index (GList *list,
+              gconstpointer data);
+

Gets the position of the element containing +the given data (starting from 0).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GList, this must point to the top of the list

 

data

the data to find

 
+
+
+

Returns

+

the index of the element containing the data, +or -1 if the data is not found

+
+
+
+
+

Types and Values

+
+

struct GList

+
struct GList {
+  gpointer data;
+  GList *next;
+  GList *prev;
+};
+
+

The GList struct is used for each element in a doubly-linked list.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

gpointer data;

holds the element's data, which can be a pointer to any kind +of data, or any integer value using the +Type Conversion Macros

 

GList *next;

contains the link to the next element in the list

 

GList *prev;

contains the link to the previous element in the list

 
+
+
+
+
+

g_list_free1

+
#define             g_list_free1
+

Another name for g_list_free_1().

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Dynamic-Loading-of-Modules.html b/docs/reference/glib/html/glib-Dynamic-Loading-of-Modules.html new file mode 100644 index 0000000..0b74ebb --- /dev/null +++ b/docs/reference/glib/html/glib-Dynamic-Loading-of-Modules.html @@ -0,0 +1,656 @@ + + + + +Dynamic Loading of Modules: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Dynamic Loading of Modules

+

Dynamic Loading of Modules — portable method for dynamically loading 'plug-ins'

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +g_module_supported () +
+gchar * + +g_module_build_path () +
+GModule * + +g_module_open () +
+gboolean + +g_module_symbol () +
const gchar * + +g_module_name () +
+void + +g_module_make_resident () +
+gboolean + +g_module_close () +
const gchar * + +g_module_error () +
const gchar * + +(*GModuleCheckInit) () +
+void + +(*GModuleUnload) () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
 GModule
enumGModuleFlags
#defineG_MODULE_SUFFIX
#defineG_MODULE_EXPORT
#defineG_MODULE_IMPORT
+
+
+

Includes

+
#include <gmodule.h>
+
+
+
+

Description

+

These functions provide a portable way to dynamically load object files +(commonly known as 'plug-ins'). The current implementation supports all +systems that provide an implementation of dlopen() (e.g. Linux/Sun), as +well as Windows platforms via DLLs.

+

A program which wants to use these functions must be linked to the +libraries output by the command pkg-config --libs gmodule-2.0.

+

To use them you must first determine whether dynamic loading +is supported on the platform by calling g_module_supported(). +If it is, you can open a module with g_module_open(), +find the module's symbols (e.g. function names) with g_module_symbol(), +and later close the module with g_module_close(). +g_module_name() will return the file name of a currently opened module.

+

If any of the above functions fail, the error status can be found with +g_module_error().

+

The GModule implementation features reference counting for opened modules, +and supports hook functions within a module which are called when the +module is loaded and unloaded (see GModuleCheckInit and GModuleUnload).

+

If your module introduces static data to common subsystems in the running +program, e.g. through calling +g_quark_from_static_string ("my-module-stuff"), +it must ensure that it is never unloaded, by calling g_module_make_resident().

+

Example: Calling a function defined in a GModule

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
// the function signature for 'say_hello'
+typedef void (* SayHelloFunc) (const char *message);
+
+gboolean
+just_say_hello (const char *filename, GError **error)
+{
+  SayHelloFunc  say_hello;
+  GModule      *module;
+
+  module = g_module_open (filename, G_MODULE_BIND_LAZY);
+  if (!module)
+    {
+      g_set_error (error, FOO_ERROR, FOO_ERROR_BLAH,
+                   "%s", g_module_error ());
+      return FALSE;
+    }
+
+  if (!g_module_symbol (module, "say_hello", (gpointer *)&say_hello))
+    {
+      g_set_error (error, SAY_ERROR, SAY_ERROR_OPEN,
+                   "%s: %s", filename, g_module_error ());
+      if (!g_module_close (module))
+        g_warning ("%s: %s", filename, g_module_error ());
+      return FALSE;
+    }
+
+  if (say_hello == NULL)
+    {
+      g_set_error (error, SAY_ERROR, SAY_ERROR_OPEN,
+                   "symbol say_hello is NULL");
+      if (!g_module_close (module))
+        g_warning ("%s: %s", filename, g_module_error ());
+      return FALSE;
+    }
+
+  // call our function in the module
+  say_hello ("Hello world!");
+
+  if (!g_module_close (module))
+    g_warning ("%s: %s", filename, g_module_error ());
+  return TRUE;
+ }
+
+ +

+
+
+

Functions

+
+

g_module_supported ()

+
gboolean
+g_module_supported (void);
+

Checks if modules are supported on the current platform.

+
+

Returns

+

TRUE if modules are supported

+
+
+
+
+

g_module_build_path ()

+
gchar *
+g_module_build_path (const gchar *directory,
+                     const gchar *module_name);
+

A portable way to build the filename of a module. The platform-specific +prefix and suffix are added to the filename, if needed, and the result +is added to the directory, using the correct separator character.

+

The directory should specify the directory where the module can be found. +It can be NULL or an empty string to indicate that the module is in a +standard platform-specific directory, though this is not recommended +since the wrong module may be found.

+

For example, calling g_module_build_path() on a Linux system with a +directory + of /lib and a module_name + of "mylibrary" will return +/lib/libmylibrary.so. On a Windows system, using \Windows as the +directory it will return \Windows\mylibrary.dll.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

directory

the directory where the module is. This can be +NULL or the empty string to indicate that the standard platform-specific +directories will be used, though that is not recommended.

[allow-none]

module_name

the name of the module

 
+
+
+

Returns

+

the complete path of the module, including the standard library +prefix and suffix. This should be freed when no longer needed

+
+
+
+
+

g_module_open ()

+
GModule *
+g_module_open (const gchar *file_name,
+               GModuleFlags flags);
+

Opens a module. If the module has already been opened, +its reference count is incremented.

+

First of all g_module_open() tries to open file_name + as a module. +If that fails and file_name + has the ".la"-suffix (and is a libtool +archive) it tries to open the corresponding module. If that fails +and it doesn't have the proper module suffix for the platform +(G_MODULE_SUFFIX), this suffix will be appended and the corresponding +module will be opended. If that fails and file_name + doesn't have the +".la"-suffix, this suffix is appended and g_module_open() tries to open +the corresponding module. If eventually that fails as well, NULL is +returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

file_name

the name of the file containing the module, or NULL +to obtain a GModule representing the main program itself.

[allow-none]

flags

the flags used for opening the module. This can be the +logical OR of any of the GModuleFlags

 
+
+
+

Returns

+

a GModule on success, or NULL on failure

+
+
+
+
+

g_module_symbol ()

+
gboolean
+g_module_symbol (GModule *module,
+                 const gchar *symbol_name,
+                 gpointer *symbol);
+

Gets a symbol pointer from a module, such as one exported +by G_MODULE_EXPORT. Note that a valid symbol can be NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

module

a GModule

 

symbol_name

the name of the symbol to find

 

symbol

returns the pointer to the symbol value.

[out]
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

g_module_name ()

+
const gchar *
+g_module_name (GModule *module);
+

Returns the filename that the module was opened with.

+

If module + refers to the application itself, "main" is returned.

+
+

Parameters

+
+++++ + + + + + +

module

a GModule

 
+
+
+

Returns

+

the filename of the module.

+

[transfer none]

+
+
+
+
+

g_module_make_resident ()

+
void
+g_module_make_resident (GModule *module);
+

Ensures that a module will never be unloaded. +Any future g_module_close() calls on the module will be ignored.

+
+

Parameters

+
+++++ + + + + + +

module

a GModule to make permanently resident

 
+
+
+
+
+

g_module_close ()

+
gboolean
+g_module_close (GModule *module);
+

Closes a module.

+
+

Parameters

+
+++++ + + + + + +

module

a GModule to close

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

g_module_error ()

+
const gchar *
+g_module_error (void);
+

Gets a string describing the last module error.

+
+

Returns

+

a string describing the last module error

+
+
+
+
+

GModuleCheckInit ()

+
const gchar *
+(*GModuleCheckInit) (GModule *module);
+

Specifies the type of the module initialization function. +If a module contains a function named g_module_check_init() it is called +automatically when the module is loaded. It is passed the GModule structure +and should return NULL on success or a string describing the initialization +error.

+
+

Parameters

+
+++++ + + + + + +

module

the GModule corresponding to the module which has just been loaded

 
+
+
+

Returns

+

NULL on success, or a string describing the initialization error

+
+
+
+
+

GModuleUnload ()

+
void
+(*GModuleUnload) (GModule *module);
+

Specifies the type of the module function called when it is unloaded. +If a module contains a function named g_module_unload() it is called +automatically when the module is unloaded. +It is passed the GModule structure.

+
+

Parameters

+
+++++ + + + + + +

module

the GModule about to be unloaded

 
+
+
+
+
+

Types and Values

+
+

GModule

+
typedef struct _GModule GModule;
+

The GModule struct is an opaque data structure to represent a +dynamically-loaded module. +It should only be accessed via the following functions.

+
+
+
+

enum GModuleFlags

+

Flags passed to g_module_open(). +Note that these flags are not supported on all platforms.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

G_MODULE_BIND_LAZY

+

specifies that symbols are only resolved when + needed. The default action is to bind all symbols when the module + is loaded.

+
 

G_MODULE_BIND_LOCAL

+

specifies that symbols in the module should + not be added to the global name space. The default action on most + platforms is to place symbols in the module in the global name space, + which may cause conflicts with existing symbols.

+
 

G_MODULE_BIND_MASK

+

mask for all flags.

+
 
+
+
+
+
+

G_MODULE_SUFFIX

+
#define G_MODULE_SUFFIX "so"
+
+

Expands to the proper shared library suffix for the current platform +without the leading dot. For most Unices and Linux this is "so", and +for Windows this is "dll".

+
+
+
+

G_MODULE_EXPORT

+
#  define G_MODULE_EXPORT		__declspec(dllexport)
+
+

Used to declare functions exported by modules. This is a no-op on Linux +and Unices, but when compiling for Windows, it marks a symbol to be +exported from the library or executable being built.

+
+
+
+

G_MODULE_IMPORT

+
#define G_MODULE_IMPORT		extern
+
+

Used to declare functions imported from modules.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Error-Reporting.html b/docs/reference/glib/html/glib-Error-Reporting.html new file mode 100644 index 0000000..a10361c --- /dev/null +++ b/docs/reference/glib/html/glib-Error-Reporting.html @@ -0,0 +1,1250 @@ + + + + +Error Reporting: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Error Reporting

+

Error Reporting — a system for reporting errors

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GError * + +g_error_new () +
+GError * + +g_error_new_literal () +
+GError * + +g_error_new_valist () +
+void + +g_error_free () +
+GError * + +g_error_copy () +
+gboolean + +g_error_matches () +
+void + +g_set_error () +
+void + +g_set_error_literal () +
+void + +g_propagate_error () +
+void + +g_clear_error () +
+void + +g_prefix_error () +
+void + +g_propagate_prefixed_error () +
+
+
+

Types and Values

+
++++ + + + + +
structGError
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GLib provides a standard method of reporting errors from a called +function to the calling code. (This is the same problem solved by +exceptions in other languages.) It's important to understand that +this method is both a data type (the GError struct) and a set of +rules. If you use GError incorrectly, then your code will not +properly interoperate with other code that uses GError, and users +of your API will probably get confused. In most cases, using GError is +preferred over numeric error codes, but there are +situations where numeric error codes are useful for performance.

+

First and foremost: GError should only be used to report recoverable +runtime errors, never to report programming errors. If the programmer +has screwed up, then you should use g_warning(), g_return_if_fail(), +g_assert(), g_error(), or some similar facility. (Incidentally, +remember that the g_error() function should only be used for +programming errors, it should not be used to print any error +reportable via GError.)

+

Examples of recoverable runtime errors are "file not found" or +"failed to parse input." Examples of programming errors are "NULL +passed to strcmp()" or "attempted to free the same pointer twice." +These two kinds of errors are fundamentally different: runtime errors +should be handled or reported to the user, programming errors should +be eliminated by fixing the bug in the program. This is why most +functions in GLib and GTK+ do not use the GError facility.

+

Functions that can fail take a return location for a GError as their +last argument. On error, a new GError instance will be allocated and +returned to the caller via this argument. For example:

+
+ + + + + + + +
1
+2
+3
+4
gboolean g_file_get_contents (const gchar  *filename,
+                              gchar       **contents,
+                              gsize        *length,
+                              GError      **error);
+
+ +

+If you pass a non-NULL value for the error argument, it should +point to a location where an error can be placed. For example:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
gchar *contents;
+GError *err = NULL;
+
+g_file_get_contents ("foo.txt", &contents, NULL, &err);
+g_assert ((contents == NULL && err != NULL) || (contents != NULL && err == NULL));
+if (err != NULL)
+  {
+    // Report error to user, and free error
+    g_assert (contents == NULL);
+    fprintf (stderr, "Unable to read file: %s\n", err->message);
+    g_error_free (err);
+  }
+else
+  {
+    // Use file contents
+    g_assert (contents != NULL);
+  }
+
+ +

+Note that err != NULL in this example is a reliable indicator +of whether g_file_get_contents() failed. Additionally, +g_file_get_contents() returns a boolean which +indicates whether it was successful.

+

Because g_file_get_contents() returns FALSE on failure, if you +are only interested in whether it failed and don't need to display +an error message, you can pass NULL for the error + argument:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
if (g_file_get_contents ("foo.txt", &contents, NULL, NULL)) // ignore errors
+  // no error occurred 
+  ;
+else
+  // error
+  ;
+
+ +

+

The GError object contains three fields: domain + indicates the module +the error-reporting function is located in, code + indicates the specific +error that occurred, and message + is a user-readable error message with +as many details as possible. Several functions are provided to deal +with an error received from a called function: g_error_matches() +returns TRUE if the error matches a given domain and code, +g_propagate_error() copies an error into an error location (so the +calling function will receive it), and g_clear_error() clears an +error location by freeing the error and resetting the location to +NULL. To display an error to the user, simply display the message +, +perhaps along with additional context known only to the calling +function (the file being opened, or whatever - though in the +g_file_get_contents() case, the message + already contains a filename).

+

When implementing a function that can report errors, the basic +tool is g_set_error(). Typically, if a fatal error occurs you +want to g_set_error(), then return immediately. g_set_error() +does nothing if the error location passed to it is NULL. +Here's an example:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
gint
+foo_open_file (GError **error)
+{
+  gint fd;
+
+  fd = open ("file.txt", O_RDONLY);
+
+  if (fd < 0)
+    {
+      g_set_error (error,
+                   FOO_ERROR,                 // error domain
+                   FOO_ERROR_BLAH,            // error code
+                   "Failed to open file: %s", // error message format string
+                   g_strerror (errno));
+      return -1;
+    }
+  else
+    return fd;
+}
+
+ +

+

Things are somewhat more complicated if you yourself call another +function that can report a GError. If the sub-function indicates +fatal errors in some way other than reporting a GError, such as +by returning TRUE on success, you can simply do the following:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
gboolean
+my_function_that_can_fail (GError **err)
+{
+  g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
+
+  if (!sub_function_that_can_fail (err))
+    {
+      // assert that error was set by the sub-function
+      g_assert (err == NULL || *err != NULL);
+      return FALSE;
+    }
+
+  // otherwise continue, no error occurred
+  g_assert (err == NULL || *err == NULL);
+}
+
+ +

+

If the sub-function does not indicate errors other than by +reporting a GError (or if its return value does not reliably indicate +errors) you need to create a temporary GError +since the passed-in one may be NULL. g_propagate_error() is +intended for use in this case.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
gboolean
+my_function_that_can_fail (GError **err)
+{
+  GError *tmp_error;
+
+  g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
+
+  tmp_error = NULL;
+  sub_function_that_can_fail (&tmp_error);
+
+  if (tmp_error != NULL)
+    {
+      // store tmp_error in err, if err != NULL,
+      // otherwise call g_error_free() on tmp_error
+      g_propagate_error (err, tmp_error);
+      return FALSE;
+    }
+
+  // otherwise continue, no error occurred
+}
+
+ +

+

Error pileups are always a bug. For example, this code is incorrect:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
gboolean
+my_function_that_can_fail (GError **err)
+{
+  GError *tmp_error;
+
+  g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
+
+  tmp_error = NULL;
+  sub_function_that_can_fail (&tmp_error);
+  other_function_that_can_fail (&tmp_error);
+
+  if (tmp_error != NULL)
+    {
+      g_propagate_error (err, tmp_error);
+      return FALSE;
+    }
+}
+
+ +

+tmp_error + should be checked immediately after sub_function_that_can_fail(), +and either cleared or propagated upward. The rule is: after each error, +you must either handle the error, or return it to the calling function.

+

Note that passing NULL for the error location is the equivalent +of handling an error by always doing nothing about it. So the +following code is fine, assuming errors in sub_function_that_can_fail() +are not fatal to my_function_that_can_fail():

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
gboolean
+my_function_that_can_fail (GError **err)
+{
+  GError *tmp_error;
+
+  g_return_val_if_fail (err == NULL || *err == NULL, FALSE);
+
+  sub_function_that_can_fail (NULL); // ignore errors
+
+  tmp_error = NULL;
+  other_function_that_can_fail (&tmp_error);
+
+  if (tmp_error != NULL)
+    {
+      g_propagate_error (err, tmp_error);
+      return FALSE;
+    }
+}
+
+ +

+

Note that passing NULL for the error location ignores errors; +it's equivalent to +try { sub_function_that_can_fail(); } catch (...) {} +in C++. It does not mean to leave errors unhandled; it means +to handle them by doing nothing.

+

Error domains and codes are conventionally named as follows:

+
    +
  • +

    The error domain is called <NAMESPACE>_<MODULE>_ERROR, +for example G_SPAWN_ERROR or G_THREAD_ERROR:

    +
    + + + + + + + +
    1
    +2
    +3
    +4
    +5
    +6
    +7
    #define G_SPAWN_ERROR g_spawn_error_quark ()
    +
    +GQuark
    +g_spawn_error_quark (void)
    +{
    +  return g_quark_from_static_string ("g-spawn-error-quark");
    +}
    +
    + +

    +
  • +
  • The quark function for the error domain is called +<namespace>_<module>_error_quark, +for example g_spawn_error_quark() or g_thread_error_quark().

  • +
  • The error codes are in an enumeration called +<Namespace><Module>Error; +for example, GThreadError or GSpawnError.

  • +
  • Members of the error code enumeration are called +<NAMESPACE>_<MODULE>_ERROR_<CODE>, +for example G_SPAWN_ERROR_FORK or G_THREAD_ERROR_AGAIN.

  • +
  • If there's a "generic" or "unknown" error code for unrecoverable +errors it doesn't make sense to distinguish with specific codes, +it should be called <NAMESPACE>_<MODULE>_ERROR_FAILED, +for example G_SPAWN_ERROR_FAILED. In the case of error code +enumerations that may be extended in future releases, you should +generally not handle this error code explicitly, but should +instead treat any unrecognized error code as equivalent to +FAILED.

  • +
+
+

Comparison of GError and traditional error handling

+

GError has several advantages over traditional numeric error codes: +importantly, tools like +gobject-introspection understand +GErrors and convert them to exceptions in bindings; the message includes +more information than just a code; and use of a domain helps prevent +misinterpretation of error codes.

+

GError has disadvantages though: it requires a memory allocation, and +formatting the error message string has a performance overhead. This makes it +unsuitable for use in retry loops where errors are a common case, rather than +being unusual. For example, using G_IO_ERROR_WOULD_BLOCK means hitting these +overheads in the normal control flow. String formatting overhead can be +eliminated by using g_set_error_literal() in some cases.

+

These performance issues can be compounded if a function wraps the GErrors +returned by the functions it calls: this multiplies the number of allocations +and string formatting operations. This can be partially mitigated by using +g_prefix_error().

+
+
+

Rules for use of GError +

+

Summary of rules for use of GError:

+
    +
  • Do not report programming errors via GError.

  • +
  • The last argument of a function that returns an error should +be a location where a GError can be placed (i.e. "GError** error"). +If GError is used with varargs, the GError** should be the last +argument before the "...".

  • +
  • The caller may pass NULL for the GError** if they are not interested +in details of the exact error that occurred.

  • +
  • If NULL is passed for the GError** argument, then errors should +not be returned to the caller, but your function should still +abort and return if an error occurs. That is, control flow should +not be affected by whether the caller wants to get a GError.

  • +
  • If a GError is reported, then your function by definition had a +fatal failure and did not complete whatever it was supposed to do. +If the failure was not fatal, then you handled it and you should not +report it. If it was fatal, then you must report it and discontinue +whatever you were doing immediately.

  • +
  • If a GError is reported, out parameters are not guaranteed to +be set to any defined value.

  • +
  • A GError* must be initialized to NULL before passing its address +to a function that can report errors.

  • +
  • "Piling up" errors is always a bug. That is, if you assign a +new GError to a GError* that is non-NULL, thus overwriting +the previous error, it indicates that you should have aborted +the operation instead of continuing. If you were able to continue, +you should have cleared the previous error with g_clear_error(). +g_set_error() will complain if you pile up errors.

  • +
  • By convention, if you return a boolean value indicating success +then TRUE means success and FALSE means failure. Avoid creating +functions which have a boolean return value and a GError parameter, +but where the boolean does something other than signal whether the +GError is set. Among other problems, it requires C callers to allocate +a temporary error. Instead, provide a "gboolean *" out parameter. +There are functions in GLib itself such as g_key_file_has_key() that +are deprecated because of this. If FALSE is returned, the error must +be set to a non-NULL value. One exception to this is that in situations +that are already considered to be undefined behaviour (such as when a +g_return_val_if_fail() check fails), the error need not be set. +Instead of checking separately whether the error is set, callers +should ensure that they do not provoke undefined behaviour, then +assume that the error will be set on failure.

  • +
  • A NULL return value is also frequently used to mean that an error +occurred. You should make clear in your documentation whether NULL +is a valid return value in non-error cases; if NULL is a valid value, +then users must check whether an error was returned to see if the +function succeeded.

  • +
  • When implementing a function that can report errors, you may want +to add a check at the top of your function that the error return +location is either NULL or contains a NULL error (e.g. +g_return_if_fail (error == NULL || *error == NULL);).

  • +
+
+
+
+

Functions

+
+

g_error_new ()

+
GError *
+g_error_new (GQuark domain,
+             gint code,
+             const gchar *format,
+             ...);
+

Creates a new GError with the given domain + and code +, +and a message formatted with format +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

domain

error domain

 

code

error code

 

format

printf()-style format for error message

 

...

parameters for message format

 
+
+
+

Returns

+

a new GError

+
+
+
+
+

g_error_new_literal ()

+
GError *
+g_error_new_literal (GQuark domain,
+                     gint code,
+                     const gchar *message);
+

Creates a new GError; unlike g_error_new(), message + is +not a printf()-style format string. Use this function if +message + contains text you don't have control over, +that could include printf() escape sequences.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

domain

error domain

 

code

error code

 

message

error message

 
+
+
+

Returns

+

a new GError

+
+
+
+
+

g_error_new_valist ()

+
GError *
+g_error_new_valist (GQuark domain,
+                    gint code,
+                    const gchar *format,
+                    va_list args);
+

Creates a new GError with the given domain + and code +, +and a message formatted with format +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

domain

error domain

 

code

error code

 

format

printf()-style format for error message

 

args

va_list of parameters for the message format

 
+
+
+

Returns

+

a new GError

+
+

Since: 2.22

+
+
+
+

g_error_free ()

+
void
+g_error_free (GError *error);
+

Frees a GError and associated resources.

+
+

Parameters

+
+++++ + + + + + +

error

a GError

 
+
+
+
+
+

g_error_copy ()

+
GError *
+g_error_copy (const GError *error);
+

Makes a copy of error +.

+
+

Parameters

+
+++++ + + + + + +

error

a GError

 
+
+
+

Returns

+

a new GError

+
+
+
+
+

g_error_matches ()

+
gboolean
+g_error_matches (const GError *error,
+                 GQuark domain,
+                 gint code);
+

Returns TRUE if error + matches domain + and code +, FALSE +otherwise. In particular, when error + is NULL, FALSE will +be returned.

+

If domain + contains a FAILED (or otherwise generic) error code, +you should generally not check for it explicitly, but should +instead treat any not-explicitly-recognized error code as being +equivalent to the FAILED code. This way, if the domain is +extended in the future to provide a more specific error code for +a certain case, your code will still work.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

error

a GError.

[nullable]

domain

an error domain

 

code

an error code

 
+
+
+

Returns

+

whether error +has domain +and code +

+
+
+
+
+

g_set_error ()

+
void
+g_set_error (GError **err,
+             GQuark domain,
+             gint code,
+             const gchar *format,
+             ...);
+

Does nothing if err + is NULL; if err + is non-NULL, then *err + +must be NULL. A new GError is created and assigned to *err +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

err

a return location for a GError.

[out callee-allocates][optional]

domain

error domain

 

code

error code

 

format

printf()-style format

 

...

args for format +

 
+
+
+
+
+

g_set_error_literal ()

+
void
+g_set_error_literal (GError **err,
+                     GQuark domain,
+                     gint code,
+                     const gchar *message);
+

Does nothing if err + is NULL; if err + is non-NULL, then *err + +must be NULL. A new GError is created and assigned to *err +. +Unlike g_set_error(), message + is not a printf()-style format string. +Use this function if message + contains text you don't have control over, +that could include printf() escape sequences.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

err

a return location for a GError.

[out callee-allocates][optional]

domain

error domain

 

code

error code

 

message

error message

 
+
+

Since: 2.18

+
+
+
+

g_propagate_error ()

+
void
+g_propagate_error (GError **dest,
+                   GError *src);
+

If dest + is NULL, free src +; otherwise, moves src + into *dest +. +The error variable dest + points to must be NULL.

+

src + must be non-NULL.

+

Note that src + is no longer valid after this call. If you want +to keep using the same GError*, you need to set it to NULL +after calling this function on it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

dest

error return location.

[out callee-allocates][optional][nullable]

src

error to move into the return location.

[transfer full]
+
+
+
+
+

g_clear_error ()

+
void
+g_clear_error (GError **err);
+

If err + or *err + is NULL, does nothing. Otherwise, +calls g_error_free() on *err + and sets *err + to NULL.

+
+

Parameters

+
+++++ + + + + + +

err

a GError return location

 
+
+
+
+
+

g_prefix_error ()

+
void
+g_prefix_error (GError **err,
+                const gchar *format,
+                ...);
+

Formats a string according to format + and prefix it to an existing +error message. If err + is NULL (ie: no error variable) then do +nothing.

+

If *err + is NULL (ie: an error variable is present but there is no +error condition) then also do nothing. Whether or not it makes sense +to take advantage of this feature is up to you.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

err

a return location for a GError.

[inout][optional][nullable]

format

printf()-style format string

 

...

arguments to format +

 
+
+

Since: 2.16

+
+
+
+

g_propagate_prefixed_error ()

+
void
+g_propagate_prefixed_error (GError **dest,
+                            GError *src,
+                            const gchar *format,
+                            ...);
+

If dest + is NULL, free src +; otherwise, moves src + into *dest +. +*dest + must be NULL. After the move, add a prefix as with +g_prefix_error().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

dest

error return location

 

src

error to move into the return location

 

format

printf()-style format string

 

...

arguments to format +

 
+
+

Since: 2.16

+
+
+
+

Types and Values

+
+

struct GError

+
struct GError {
+  GQuark       domain;
+  gint         code;
+  gchar       *message;
+};
+
+

The GError structure contains information about +an error that has occurred.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GQuark domain;

error domain, e.g. G_FILE_ERROR

 

gint code;

error code, e.g. G_FILE_ERROR_NOENT

 

gchar *message;

human-readable informative error message

 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-File-Utilities.html b/docs/reference/glib/html/glib-File-Utilities.html new file mode 100644 index 0000000..b21e570 --- /dev/null +++ b/docs/reference/glib/html/glib-File-Utilities.html @@ -0,0 +1,2486 @@ + + + + +File Utilities: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

File Utilities

+

File Utilities — various file-related functions

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GFileError + +g_file_error_from_errno () +
+gboolean + +g_file_get_contents () +
+gboolean + +g_file_set_contents () +
+gboolean + +g_file_test () +
+gint + +g_mkstemp () +
+gint + +g_mkstemp_full () +
+gint + +g_file_open_tmp () +
+gchar * + +g_file_read_link () +
+gint + +g_mkdir_with_parents () +
+gchar * + +g_mkdtemp () +
+gchar * + +g_mkdtemp_full () +
+gchar * + +g_dir_make_tmp () +
+GDir * + +g_dir_open () +
const gchar * + +g_dir_read_name () +
+void + +g_dir_rewind () +
+void + +g_dir_close () +
+GMappedFile * + +g_mapped_file_new () +
+GMappedFile * + +g_mapped_file_new_from_fd () +
+GMappedFile * + +g_mapped_file_ref () +
+void + +g_mapped_file_unref () +
+void + +g_mapped_file_free () +
+gsize + +g_mapped_file_get_length () +
+gchar * + +g_mapped_file_get_contents () +
+GBytes * + +g_mapped_file_get_bytes () +
+int + +g_open () +
+int + +g_rename () +
+int + +g_mkdir () +
+int + +g_stat () +
+int + +g_lstat () +
+int + +g_unlink () +
+int + +g_remove () +
+int + +g_rmdir () +
+FILE * + +g_fopen () +
+FILE * + +g_freopen () +
+int + +g_chmod () +
+int + +g_access () +
+int + +g_creat () +
+int + +g_chdir () +
+int + +g_utime () +
+gboolean + +g_close () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
enumGFileError
#defineG_FILE_ERROR
enumGFileTest
 GDir
 GMappedFile
typedefGStatBuf
+
+
+

Includes

+
#include <glib.h>
+#include <glib/gstdio.h>
+
+
+
+

Description

+

There is a group of functions which wrap the common POSIX functions +dealing with filenames (g_open(), g_rename(), g_mkdir(), g_stat(), +g_unlink(), g_remove(), g_fopen(), g_freopen()). The point of these +wrappers is to make it possible to handle file names with any Unicode +characters in them on Windows without having to use ifdefs and the +wide character API in the application code.

+

The pathname argument should be in the GLib file name encoding. +On POSIX this is the actual on-disk encoding which might correspond +to the locale settings of the process (or the G_FILENAME_ENCODING +environment variable), or not.

+

On Windows the GLib file name encoding is UTF-8. Note that the +Microsoft C library does not use UTF-8, but has separate APIs for +current system code page and wide characters (UTF-16). The GLib +wrappers call the wide character API if present (on modern Windows +systems), otherwise convert to/from the system code page.

+

Another group of functions allows to open and read directories +in the GLib file name encoding. These are g_dir_open(), +g_dir_read_name(), g_dir_rewind(), g_dir_close().

+
+
+

Functions

+
+

g_file_error_from_errno ()

+
GFileError
+g_file_error_from_errno (gint err_no);
+

Gets a GFileError constant based on the passed-in err_no +. +For example, if you pass in EEXIST this function returns +G_FILE_ERROR_EXIST. Unlike errno values, you can portably +assume that all GFileError values will exist.

+

Normally a GFileError value goes into a GError returned +from a function that manipulates files. So you would use +g_file_error_from_errno() when constructing a GError.

+
+

Parameters

+
+++++ + + + + + +

err_no

an "errno" value

 
+
+
+

Returns

+

GFileError corresponding to the given errno +

+
+
+
+
+

g_file_get_contents ()

+
gboolean
+g_file_get_contents (const gchar *filename,
+                     gchar **contents,
+                     gsize *length,
+                     GError **error);
+

Reads an entire file into allocated memory, with good error +checking.

+

If the call was successful, it returns TRUE and sets contents + to the file +contents and length + to the length of the file contents in bytes. The string +stored in contents + will be nul-terminated, so for text files you can pass +NULL for the length + argument. If the call was not successful, it returns +FALSE and sets error +. The error domain is G_FILE_ERROR. Possible error +codes are those in the GFileError enumeration. In the error case, +contents + is set to NULL and length + is set to zero.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

filename

name of a file to read contents from, in the GLib file name encoding.

[type filename]

contents

location to store an allocated string, use g_free() to free +the returned string.

[out][array length=length][element-type guint8]

length

location to store length in bytes of the contents, or NULL.

[allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE on success, FALSE if an error occurred

+
+
+
+
+

g_file_set_contents ()

+
gboolean
+g_file_set_contents (const gchar *filename,
+                     const gchar *contents,
+                     gssize length,
+                     GError **error);
+

Writes all of contents + to a file named filename +, with good error checking. +If a file called filename + already exists it will be overwritten.

+

This write is atomic in the sense that it is first written to a temporary +file which is then renamed to the final name. Notes:

+
    +
  • On UNIX, if filename + already exists hard links to filename + will break. +Also since the file is recreated, existing permissions, access control +lists, metadata etc. may be lost. If filename + is a symbolic link, +the link itself will be replaced, not the linked file.

  • +
  • On Windows renaming a file will not remove an existing file with the +new name, so on Windows there is a race condition between the existing +file being removed and the temporary file being renamed.

  • +
  • On Windows there is no way to remove a file that is open to some +process, or mapped into memory. Thus, this function will fail if +filename + already exists and is open.

  • +
+

If the call was successful, it returns TRUE. If the call was not successful, +it returns FALSE and sets error +. The error domain is G_FILE_ERROR. +Possible error codes are those in the GFileError enumeration.

+

Note that the name for the temporary file is constructed by appending up +to 7 characters to filename +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

filename

name of a file to write contents +to, in the GLib file name +encoding.

[type filename]

contents

string to write to the file.

[array length=length][element-type guint8]

length

length of contents +, or -1 if contents +is a nul-terminated string

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE on success, FALSE if an error occurred

+
+

Since: 2.8

+
+
+
+

g_file_test ()

+
gboolean
+g_file_test (const gchar *filename,
+             GFileTest test);
+

Returns TRUE if any of the tests in the bitfield test + are +TRUE. For example, (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR) +will return TRUE if the file exists; the check whether it's a +directory doesn't matter since the existence test is TRUE. With +the current set of available tests, there's no point passing in +more than one test at a time.

+

Apart from G_FILE_TEST_IS_SYMLINK all tests follow symbolic links, +so for a symbolic link to a regular file g_file_test() will return +TRUE for both G_FILE_TEST_IS_SYMLINK and G_FILE_TEST_IS_REGULAR.

+

Note, that for a dangling symbolic link g_file_test() will return +TRUE for G_FILE_TEST_IS_SYMLINK and FALSE for all other flags.

+

You should never use g_file_test() to test whether it is safe +to perform an operation, because there is always the possibility +of the condition changing before you actually perform the operation. +For example, you might think you could use G_FILE_TEST_IS_SYMLINK +to know whether it is safe to write to a file without being +tricked into writing into a different location. It doesn't work!

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
// DON'T DO THIS
+if (!g_file_test (filename, G_FILE_TEST_IS_SYMLINK)) 
+  {
+    fd = g_open (filename, O_WRONLY);
+    // write to fd
+  }
+
+ +

+

Another thing to note is that G_FILE_TEST_EXISTS and +G_FILE_TEST_IS_EXECUTABLE are implemented using the access() +system call. This usually doesn't matter, but if your program +is setuid or setgid it means that these tests will give you +the answer for the real user ID and group ID, rather than the +effective user ID and group ID.

+

On Windows, there are no symlinks, so testing for +G_FILE_TEST_IS_SYMLINK will always return FALSE. Testing for +G_FILE_TEST_IS_EXECUTABLE will just check that the file exists and +its name indicates that it is executable, checking for well-known +extensions and those listed in the PATHEXT environment variable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

filename

a filename to test in the GLib file name encoding

 

test

bitfield of GFileTest flags

 
+
+
+

Returns

+

whether a test was TRUE

+
+
+
+
+

g_mkstemp ()

+
gint
+g_mkstemp (gchar *tmpl);
+

Opens a temporary file. See the mkstemp() documentation +on most UNIX-like systems.

+

The parameter is a string that should follow the rules for +mkstemp() templates, i.e. contain the string "XXXXXX". +g_mkstemp() is slightly more flexible than mkstemp() in that the +sequence does not have to occur at the very end of the template. +The X string will be modified to form the name of a file that +didn't exist. The string should be in the GLib file name encoding. +Most importantly, on Windows it should be in UTF-8.

+
+

Parameters

+
+++++ + + + + + +

tmpl

template filename.

[type filename]
+
+
+

Returns

+

A file handle (as from open()) to the file +opened for reading and writing. The file is opened in binary +mode on platforms where there is a difference. The file handle +should be closed with close(). In case of errors, -1 is +returned and errno will be set.

+
+
+
+
+

g_mkstemp_full ()

+
gint
+g_mkstemp_full (gchar *tmpl,
+                gint flags,
+                gint mode);
+

Opens a temporary file. See the mkstemp() documentation +on most UNIX-like systems.

+

The parameter is a string that should follow the rules for +mkstemp() templates, i.e. contain the string "XXXXXX". +g_mkstemp_full() is slightly more flexible than mkstemp() +in that the sequence does not have to occur at the very end of the +template and you can pass a mode + and additional flags +. The X +string will be modified to form the name of a file that didn't exist. +The string should be in the GLib file name encoding. Most importantly, +on Windows it should be in UTF-8.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

tmpl

template filename.

[type filename]

flags

flags to pass to an open() call in addition to O_EXCL +and O_CREAT, which are passed automatically

 

mode

permissions to create the temporary file with

 
+
+
+

Returns

+

A file handle (as from open()) to the file +opened for reading and writing. The file handle should be +closed with close(). In case of errors, -1 is returned +and errno will be set.

+
+

Since: 2.22

+
+
+
+

g_file_open_tmp ()

+
gint
+g_file_open_tmp (const gchar *tmpl,
+                 gchar **name_used,
+                 GError **error);
+

Opens a file for writing in the preferred directory for temporary +files (as returned by g_get_tmp_dir()).

+

tmpl + should be a string in the GLib file name encoding containing +a sequence of six 'X' characters, as the parameter to g_mkstemp(). +However, unlike these functions, the template should only be a +basename, no directory components are allowed. If template is +NULL, a default template is used.

+

Note that in contrast to g_mkstemp() (and mkstemp()) tmpl + is not +modified, and might thus be a read-only literal string.

+

Upon success, and if name_used + is non-NULL, the actual name used +is returned in name_used +. This string should be freed with g_free() +when not needed any longer. The returned name is in the GLib file +name encoding.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

tmpl

Template for file name, as in +g_mkstemp(), basename only, or NULL for a default template.

[type filename][allow-none]

name_used

location to store actual name used, +or NULL.

[out][type filename]

error

return location for a GError

 
+
+
+

Returns

+

A file handle (as from open()) to the file opened for +reading and writing. The file is opened in binary mode on platforms +where there is a difference. The file handle should be closed with +close(). In case of errors, -1 is returned and error +will be set.

+
+
+
+
+

g_file_read_link ()

+
gchar *
+g_file_read_link (const gchar *filename,
+                  GError **error);
+

Reads the contents of the symbolic link filename + like the POSIX +readlink() function. The returned string is in the encoding used +for filenames. Use g_filename_to_utf8() to convert it to UTF-8.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

filename

the symbolic link

 

error

return location for a GError

 
+
+
+

Returns

+

A newly-allocated string with the contents of the symbolic link, +or NULL if an error occurred.

+
+

Since: 2.4

+
+
+
+

g_mkdir_with_parents ()

+
gint
+g_mkdir_with_parents (const gchar *pathname,
+                      gint mode);
+

Create a directory if it doesn't already exist. Create intermediate +parent directories as needed, too.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

pathname

a pathname in the GLib file name encoding

 

mode

permissions to use for newly created directories

 
+
+
+

Returns

+

0 if the directory already exists, or was successfully +created. Returns -1 if an error occurred, with errno set.

+
+

Since: 2.8

+
+
+
+

g_mkdtemp ()

+
gchar *
+g_mkdtemp (gchar *tmpl);
+

Creates a temporary directory. See the mkdtemp() documentation +on most UNIX-like systems.

+

The parameter is a string that should follow the rules for +mkdtemp() templates, i.e. contain the string "XXXXXX". +g_mkdtemp() is slightly more flexible than mkdtemp() in that the +sequence does not have to occur at the very end of the template +and you can pass a mode + and additional flags +. The X string will +be modified to form the name of a directory that didn't exist. +The string should be in the GLib file name encoding. Most importantly, +on Windows it should be in UTF-8.

+
+

Parameters

+
+++++ + + + + + +

tmpl

template directory name.

[type filename]
+
+
+

Returns

+

A pointer to tmpl +, which has been modified +to hold the directory name. In case of errors, NULL is +returned and errno will be set.

+
+

Since: 2.30

+
+
+
+

g_mkdtemp_full ()

+
gchar *
+g_mkdtemp_full (gchar *tmpl,
+                gint mode);
+

Creates a temporary directory. See the mkdtemp() documentation +on most UNIX-like systems.

+

The parameter is a string that should follow the rules for +mkdtemp() templates, i.e. contain the string "XXXXXX". +g_mkdtemp() is slightly more flexible than mkdtemp() in that the +sequence does not have to occur at the very end of the template +and you can pass a mode +. The X string will be modified to form +the name of a directory that didn't exist. The string should be +in the GLib file name encoding. Most importantly, on Windows it +should be in UTF-8.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

tmpl

template directory name.

[type filename]

mode

permissions to create the temporary directory with

 
+
+
+

Returns

+

A pointer to tmpl +, which has been modified +to hold the directory name. In case of errors, NULL is +returned, and errno will be set.

+
+

Since: 2.30

+
+
+
+

g_dir_make_tmp ()

+
gchar *
+g_dir_make_tmp (const gchar *tmpl,
+                GError **error);
+

Creates a subdirectory in the preferred directory for temporary +files (as returned by g_get_tmp_dir()).

+

tmpl + should be a string in the GLib file name encoding containing +a sequence of six 'X' characters, as the parameter to g_mkstemp(). +However, unlike these functions, the template should only be a +basename, no directory components are allowed. If template is +NULL, a default template is used.

+

Note that in contrast to g_mkdtemp() (and mkdtemp()) tmpl + is not +modified, and might thus be a read-only literal string.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

tmpl

Template for directory name, +as in g_mkdtemp(), basename only, or NULL for a default template.

[type filename][allow-none]

error

return location for a GError

 
+
+
+

Returns

+

The actual name used. This string +should be freed with g_free() when not needed any longer and is +is in the GLib file name encoding. In case of errors, NULL is +returned and error +will be set.

+

[type filename]

+
+

Since: 2.30

+
+
+
+

g_dir_open ()

+
GDir *
+g_dir_open (const gchar *path,
+            guint flags,
+            GError **error);
+

Opens a directory for reading. The names of the files in the +directory can then be retrieved using g_dir_read_name(). Note +that the ordering is not defined.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

path

the path to the directory you are interested in. On Unix +in the on-disk encoding. On Windows in UTF-8

 

flags

Currently must be set to 0. Reserved for future use.

 

error

return location for a GError, or NULL. +If non-NULL, an error will be set if and only if +g_dir_open() fails.

 
+
+
+

Returns

+

a newly allocated GDir on success, NULL on failure. +If non-NULL, you must free the result with g_dir_close() +when you are finished with it.

+
+
+
+
+

g_dir_read_name ()

+
const gchar *
+g_dir_read_name (GDir *dir);
+

Retrieves the name of another entry in the directory, or NULL. +The order of entries returned from this function is not defined, +and may vary by file system or other operating-system dependent +factors.

+

NULL may also be returned in case of errors. On Unix, you can +check errno to find out if NULL was returned because of an error.

+

On Unix, the '.' and '..' entries are omitted, and the returned +name is in the on-disk encoding.

+

On Windows, as is true of all GLib functions which operate on +filenames, the returned name is in UTF-8.

+
+

Parameters

+
+++++ + + + + + +

dir

a GDir* created by g_dir_open()

 
+
+
+

Returns

+

The entry's name or NULL if there are no +more entries. The return value is owned by GLib and +must not be modified or freed.

+
+
+
+
+

g_dir_rewind ()

+
void
+g_dir_rewind (GDir *dir);
+

Resets the given directory. The next call to g_dir_read_name() +will return the first entry again.

+
+

Parameters

+
+++++ + + + + + +

dir

a GDir* created by g_dir_open()

 
+
+
+
+
+

g_dir_close ()

+
void
+g_dir_close (GDir *dir);
+

Closes the directory and deallocates all related resources.

+
+

Parameters

+
+++++ + + + + + +

dir

a GDir* created by g_dir_open()

 
+
+
+
+
+

g_mapped_file_new ()

+
GMappedFile *
+g_mapped_file_new (const gchar *filename,
+                   gboolean writable,
+                   GError **error);
+

Maps a file into memory. On UNIX, this is using the mmap() function.

+

If writable + is TRUE, the mapped buffer may be modified, otherwise +it is an error to modify the mapped buffer. Modifications to the buffer +are not visible to other processes mapping the same file, and are not +written back to the file.

+

Note that modifications of the underlying file might affect the contents +of the GMappedFile. Therefore, mapping should only be used if the file +will not be modified, or if all modifications of the file are done +atomically (e.g. using g_file_set_contents()).

+

If filename + is the name of an empty, regular file, the function +will successfully return an empty GMappedFile. In other cases of +size 0 (e.g. device files such as /dev/null), error + will be set +to the GFileError value G_FILE_ERROR_INVAL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

filename

The path of the file to load, in the GLib filename encoding

 

writable

whether the mapping should be writable

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a newly allocated GMappedFile which must be unref'd +with g_mapped_file_unref(), or NULL if the mapping failed.

+
+

Since: 2.8

+
+
+
+

g_mapped_file_new_from_fd ()

+
GMappedFile *
+g_mapped_file_new_from_fd (gint fd,
+                           gboolean writable,
+                           GError **error);
+

Maps a file into memory. On UNIX, this is using the mmap() function.

+

If writable + is TRUE, the mapped buffer may be modified, otherwise +it is an error to modify the mapped buffer. Modifications to the buffer +are not visible to other processes mapping the same file, and are not +written back to the file.

+

Note that modifications of the underlying file might affect the contents +of the GMappedFile. Therefore, mapping should only be used if the file +will not be modified, or if all modifications of the file are done +atomically (e.g. using g_file_set_contents()).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

fd

The file descriptor of the file to load

 

writable

whether the mapping should be writable

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a newly allocated GMappedFile which must be unref'd +with g_mapped_file_unref(), or NULL if the mapping failed.

+
+

Since: 2.32

+
+
+
+

g_mapped_file_ref ()

+
GMappedFile *
+g_mapped_file_ref (GMappedFile *file);
+

Increments the reference count of file + by one. It is safe to call +this function from any thread.

+
+

Parameters

+
+++++ + + + + + +

file

a GMappedFile

 
+
+
+

Returns

+

the passed in GMappedFile.

+
+

Since: 2.22

+
+
+
+

g_mapped_file_unref ()

+
void
+g_mapped_file_unref (GMappedFile *file);
+

Decrements the reference count of file + by one. If the reference count +drops to 0, unmaps the buffer of file + and frees it.

+

It is safe to call this function from any thread.

+

Since 2.22

+
+

Parameters

+
+++++ + + + + + +

file

a GMappedFile

 
+
+
+
+
+

g_mapped_file_free ()

+
void
+g_mapped_file_free (GMappedFile *file);
+
+

g_mapped_file_free has been deprecated since version 2.22 and should not be used in newly-written code.

+

Use g_mapped_file_unref() instead.

+
+

This call existed before GMappedFile had refcounting and is currently +exactly the same as g_mapped_file_unref().

+
+

Parameters

+
+++++ + + + + + +

file

a GMappedFile

 
+
+

Since: 2.8

+
+
+
+

g_mapped_file_get_length ()

+
gsize
+g_mapped_file_get_length (GMappedFile *file);
+

Returns the length of the contents of a GMappedFile.

+
+

Parameters

+
+++++ + + + + + +

file

a GMappedFile

 
+
+
+

Returns

+

the length of the contents of file +.

+
+

Since: 2.8

+
+
+
+

g_mapped_file_get_contents ()

+
gchar *
+g_mapped_file_get_contents (GMappedFile *file);
+

Returns the contents of a GMappedFile.

+

Note that the contents may not be zero-terminated, +even if the GMappedFile is backed by a text file.

+

If the file is empty then NULL is returned.

+
+

Parameters

+
+++++ + + + + + +

file

a GMappedFile

 
+
+
+

Returns

+

the contents of file +, or NULL.

+
+

Since: 2.8

+
+
+
+

g_mapped_file_get_bytes ()

+
GBytes *
+g_mapped_file_get_bytes (GMappedFile *file);
+

Creates a new GBytes which references the data mapped from file +. +The mapped contents of the file must not be modified after creating this +bytes object, because a GBytes should be immutable.

+
+

Parameters

+
+++++ + + + + + +

file

a GMappedFile

 
+
+
+

Returns

+

A newly allocated GBytes referencing data +from file +.

+

[transfer full]

+
+

Since: 2.34

+
+
+
+

g_open ()

+
int
+g_open (const gchar *filename,
+        int flags,
+        int mode);
+

A wrapper for the POSIX open() function. The open() function is +used to convert a pathname into a file descriptor.

+

On POSIX systems file descriptors are implemented by the operating +system. On Windows, it's the C library that implements open() and +file descriptors. The actual Win32 API for opening files is quite +different, see MSDN documentation for CreateFile(). The Win32 API +uses file handles, which are more randomish integers, not small +integers like file descriptors.

+

Because file descriptors are specific to the C library on Windows, +the file descriptor returned by this function makes sense only to +functions in the same C library. Thus if the GLib-using code uses a +different C library than GLib does, the file descriptor returned by +this function cannot be passed to C library functions like write() +or read().

+

See your C library manual for more details about open().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

filename

a pathname in the GLib file name encoding (UTF-8 on Windows)

 

flags

as in open()

 

mode

as in open()

 
+
+
+

Returns

+

a new file descriptor, or -1 if an error occurred. +The return value can be used exactly like the return value +from open().

+
+

Since: 2.6

+
+
+
+

g_rename ()

+
int
+g_rename (const gchar *oldfilename,
+          const gchar *newfilename);
+

A wrapper for the POSIX rename() function. The rename() function +renames a file, moving it between directories if required.

+

See your C library manual for more details about how rename() works +on your system. It is not possible in general on Windows to rename +a file that is open to some process.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

oldfilename

a pathname in the GLib file name encoding (UTF-8 on Windows)

 

newfilename

a pathname in the GLib file name encoding

 
+
+
+

Returns

+

0 if the renaming succeeded, -1 if an error occurred

+
+

Since: 2.6

+
+
+
+

g_mkdir ()

+
int
+g_mkdir (const gchar *filename,
+         int mode);
+

A wrapper for the POSIX mkdir() function. The mkdir() function +attempts to create a directory with the given name and permissions. +The mode argument is ignored on Windows.

+

See your C library manual for more details about mkdir().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

filename

a pathname in the GLib file name encoding (UTF-8 on Windows)

 

mode

permissions to use for the newly created directory

 
+
+
+

Returns

+

0 if the directory was successfully created, -1 if an error +occurred

+
+

Since: 2.6

+
+
+
+

g_stat ()

+
int
+g_stat (const gchar *filename,
+        GStatBuf *buf);
+

A wrapper for the POSIX stat() function. The stat() function +returns information about a file. On Windows the stat() function in +the C library checks only the FAT-style READONLY attribute and does +not look at the ACL at all. Thus on Windows the protection bits in +the st_mode + field are a fabrication of little use.

+

On Windows the Microsoft C libraries have several variants of the +stat struct and stat() function with names like _stat(), _stat32(), +_stat32i64() and _stat64i32(). The one used here is for 32-bit code +the one with 32-bit size and time fields, specifically called _stat32().

+

In Microsoft's compiler, by default struct stat means one with +64-bit time fields while in MinGW struct stat is the legacy one +with 32-bit fields. To hopefully clear up this messs, the gstdio.h +header defines a type GStatBuf which is the appropriate struct type +depending on the platform and/or compiler being used. On POSIX it +is just struct stat, but note that even on POSIX platforms, stat() +might be a macro.

+

See your C library manual for more details about stat().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

filename

a pathname in the GLib file name encoding (UTF-8 on Windows)

 

buf

a pointer to a stat struct, which will be filled with the file +information

 
+
+
+

Returns

+

0 if the information was successfully retrieved, +-1 if an error occurred

+
+

Since: 2.6

+
+
+
+

g_lstat ()

+
int
+g_lstat (const gchar *filename,
+         GStatBuf *buf);
+

A wrapper for the POSIX lstat() function. The lstat() function is +like stat() except that in the case of symbolic links, it returns +information about the symbolic link itself and not the file that it +refers to. If the system does not support symbolic links g_lstat() +is identical to g_stat().

+

See your C library manual for more details about lstat().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

filename

a pathname in the GLib file name encoding (UTF-8 on Windows)

 

buf

a pointer to a stat struct, which will be filled with the file +information

 
+
+
+

Returns

+

0 if the information was successfully retrieved, +-1 if an error occurred

+
+

Since: 2.6

+
+
+
+

g_unlink ()

+
int
+g_unlink (const gchar *filename);
+

A wrapper for the POSIX unlink() function. The unlink() function +deletes a name from the filesystem. If this was the last link to the +file and no processes have it opened, the diskspace occupied by the +file is freed.

+

See your C library manual for more details about unlink(). Note +that on Windows, it is in general not possible to delete files that +are open to some process, or mapped into memory.

+
+

Parameters

+
+++++ + + + + + +

filename

a pathname in the GLib file name encoding (UTF-8 on Windows)

 
+
+
+

Returns

+

0 if the name was successfully deleted, -1 if an error +occurred

+
+

Since: 2.6

+
+
+
+

g_remove ()

+
int
+g_remove (const gchar *filename);
+

A wrapper for the POSIX remove() function. The remove() function +deletes a name from the filesystem.

+

See your C library manual for more details about how remove() works +on your system. On Unix, remove() removes also directories, as it +calls unlink() for files and rmdir() for directories. On Windows, +although remove() in the C library only works for files, this +function tries first remove() and then if that fails rmdir(), and +thus works for both files and directories. Note however, that on +Windows, it is in general not possible to remove a file that is +open to some process, or mapped into memory.

+

If this function fails on Windows you can't infer too much from the +errno value. rmdir() is tried regardless of what caused remove() to +fail. Any errno value set by remove() will be overwritten by that +set by rmdir().

+
+

Parameters

+
+++++ + + + + + +

filename

a pathname in the GLib file name encoding (UTF-8 on Windows)

 
+
+
+

Returns

+

0 if the file was successfully removed, -1 if an error +occurred

+
+

Since: 2.6

+
+
+
+

g_rmdir ()

+
int
+g_rmdir (const gchar *filename);
+

A wrapper for the POSIX rmdir() function. The rmdir() function +deletes a directory from the filesystem.

+

See your C library manual for more details about how rmdir() works +on your system.

+
+

Parameters

+
+++++ + + + + + +

filename

a pathname in the GLib file name encoding (UTF-8 on Windows)

 
+
+
+

Returns

+

0 if the directory was successfully removed, -1 if an error +occurred

+
+

Since: 2.6

+
+
+
+

g_fopen ()

+
FILE *
+g_fopen (const gchar *filename,
+         const gchar *mode);
+

A wrapper for the stdio fopen() function. The fopen() function +opens a file and associates a new stream with it.

+

Because file descriptors are specific to the C library on Windows, +and a file descriptor is part of the FILE struct, the FILE* returned +by this function makes sense only to functions in the same C library. +Thus if the GLib-using code uses a different C library than GLib does, +the FILE* returned by this function cannot be passed to C library +functions like fprintf() or fread().

+

See your C library manual for more details about fopen().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

filename

a pathname in the GLib file name encoding (UTF-8 on Windows)

 

mode

a string describing the mode in which the file should be opened

 
+
+
+

Returns

+

A FILE* if the file was successfully opened, or NULL if +an error occurred

+
+

Since: 2.6

+
+
+
+

g_freopen ()

+
FILE *
+g_freopen (const gchar *filename,
+           const gchar *mode,
+           FILE *stream);
+

A wrapper for the POSIX freopen() function. The freopen() function +opens a file and associates it with an existing stream.

+

See your C library manual for more details about freopen().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

filename

a pathname in the GLib file name encoding (UTF-8 on Windows)

 

mode

a string describing the mode in which the file should be opened

 

stream

an existing stream which will be reused, or NULL.

[allow-none]
+
+
+

Returns

+

A FILE* if the file was successfully opened, or NULL if +an error occurred.

+
+

Since: 2.6

+
+
+
+

g_chmod ()

+
int
+g_chmod (const gchar *filename,
+         int mode);
+

A wrapper for the POSIX chmod() function. The chmod() function is +used to set the permissions of a file system object.

+

On Windows the file protection mechanism is not at all POSIX-like, +and the underlying chmod() function in the C library just sets or +clears the FAT-style READONLY attribute. It does not touch any +ACL. Software that needs to manage file permissions on Windows +exactly should use the Win32 API.

+

See your C library manual for more details about chmod().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

filename

a pathname in the GLib file name encoding (UTF-8 on Windows)

 

mode

as in chmod()

 
+
+
+

Returns

+

0 if the operation succeeded, -1 on error

+
+

Since: 2.8

+
+
+
+

g_access ()

+
int
+g_access (const gchar *filename,
+          int mode);
+

A wrapper for the POSIX access() function. This function is used to +test a pathname for one or several of read, write or execute +permissions, or just existence.

+

On Windows, the file protection mechanism is not at all POSIX-like, +and the underlying function in the C library only checks the +FAT-style READONLY attribute, and does not look at the ACL of a +file at all. This function is this in practise almost useless on +Windows. Software that needs to handle file permissions on Windows +more exactly should use the Win32 API.

+

See your C library manual for more details about access().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

filename

a pathname in the GLib file name encoding (UTF-8 on Windows)

 

mode

as in access()

 
+
+
+

Returns

+

zero if the pathname refers to an existing file system +object that has all the tested permissions, or -1 otherwise +or on error.

+
+

Since: 2.8

+
+
+
+

g_creat ()

+
int
+g_creat (const gchar *filename,
+         int mode);
+

A wrapper for the POSIX creat() function. The creat() function is +used to convert a pathname into a file descriptor, creating a file +if necessary.

+

On POSIX systems file descriptors are implemented by the operating +system. On Windows, it's the C library that implements creat() and +file descriptors. The actual Windows API for opening files is +different, see MSDN documentation for CreateFile(). The Win32 API +uses file handles, which are more randomish integers, not small +integers like file descriptors.

+

Because file descriptors are specific to the C library on Windows, +the file descriptor returned by this function makes sense only to +functions in the same C library. Thus if the GLib-using code uses a +different C library than GLib does, the file descriptor returned by +this function cannot be passed to C library functions like write() +or read().

+

See your C library manual for more details about creat().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

filename

a pathname in the GLib file name encoding (UTF-8 on Windows)

 

mode

as in creat()

 
+
+
+

Returns

+

a new file descriptor, or -1 if an error occurred. +The return value can be used exactly like the return value +from creat().

+
+

Since: 2.8

+
+
+
+

g_chdir ()

+
int
+g_chdir (const gchar *path);
+

A wrapper for the POSIX chdir() function. The function changes the +current directory of the process to path +.

+

See your C library manual for more details about chdir().

+
+

Parameters

+
+++++ + + + + + +

path

a pathname in the GLib file name encoding (UTF-8 on Windows)

 
+
+
+

Returns

+

0 on success, -1 if an error occurred.

+
+

Since: 2.8

+
+
+
+

g_utime ()

+
int
+g_utime (const gchar *filename,
+         struct utimbuf *utb);
+

A wrapper for the POSIX utime() function. The utime() function +sets the access and modification timestamps of a file.

+

See your C library manual for more details about how utime() works +on your system.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

filename

a pathname in the GLib file name encoding (UTF-8 on Windows)

 

utb

a pointer to a struct utimbuf.

 
+
+
+

Returns

+

0 if the operation was successful, -1 if an error occurred

+
+

Since: 2.18

+
+
+
+

g_close ()

+
gboolean
+g_close (gint fd,
+         GError **error);
+

This wraps the close() call; in case of error, errno will be +preserved, but the error will also be stored as a GError in error +.

+

Besides using GError, there is another major reason to prefer this +function over the call provided by the system; on Unix, it will +attempt to correctly handle EINTR, which has platform-specific +semantics.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

fd

A file descriptor

 

error

a GError

 
+
+
+

Returns

+

TRUE on success, FALSE if there was an error.

+
+

Since: 2.36

+
+
+
+

Types and Values

+
+

enum GFileError

+

Values corresponding to errno + codes returned from file operations +on UNIX. Unlike errno + codes, GFileError values are available on +all systems, even Windows. The exact meaning of each code depends +on what sort of file operation you were performing; the UNIX +documentation gives more details. The following error code descriptions +come from the GNU C Library manual, and are under the copyright +of that manual.

+

It's not very portable to make detailed assumptions about exactly +which errors will be returned from a given operation. Some errors +don't occur on some systems, etc., sometimes there are subtle +differences in when a system will report a given error, etc.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_FILE_ERROR_EXIST

+

Operation not permitted; only the owner of + the file (or other resource) or processes with special privileges + can perform the operation.

+
 

G_FILE_ERROR_ISDIR

+

File is a directory; you cannot open a directory + for writing, or create or remove hard links to it.

+
 

G_FILE_ERROR_ACCES

+

Permission denied; the file permissions do not + allow the attempted operation.

+
 

G_FILE_ERROR_NAMETOOLONG

+

Filename too long.

+
 

G_FILE_ERROR_NOENT

+

No such file or directory. This is a "file + doesn't exist" error for ordinary files that are referenced in + contexts where they are expected to already exist.

+
 

G_FILE_ERROR_NOTDIR

+

A file that isn't a directory was specified when + a directory is required.

+
 

G_FILE_ERROR_NXIO

+

No such device or address. The system tried to + use the device represented by a file you specified, and it + couldn't find the device. This can mean that the device file was + installed incorrectly, or that the physical device is missing or + not correctly attached to the computer.

+
 

G_FILE_ERROR_NODEV

+

The underlying file system of the specified file + does not support memory mapping.

+
 

G_FILE_ERROR_ROFS

+

The directory containing the new link can't be + modified because it's on a read-only file system.

+
 

G_FILE_ERROR_TXTBSY

+

Text file busy.

+
 

G_FILE_ERROR_FAULT

+

You passed in a pointer to bad memory. + (GLib won't reliably return this, don't pass in pointers to bad + memory.)

+
 

G_FILE_ERROR_LOOP

+

Too many levels of symbolic links were encountered + in looking up a file name. This often indicates a cycle of symbolic + links.

+
 

G_FILE_ERROR_NOSPC

+

No space left on device; write operation on a + file failed because the disk is full.

+
 

G_FILE_ERROR_NOMEM

+

No memory available. The system cannot allocate + more virtual memory because its capacity is full.

+
 

G_FILE_ERROR_MFILE

+

The current process has too many files open and + can't open any more. Duplicate descriptors do count toward this + limit.

+
 

G_FILE_ERROR_NFILE

+

There are too many distinct file openings in the + entire system.

+
 

G_FILE_ERROR_BADF

+

Bad file descriptor; for example, I/O on a + descriptor that has been closed or reading from a descriptor open + only for writing (or vice versa).

+
 

G_FILE_ERROR_INVAL

+

Invalid argument. This is used to indicate + various kinds of problems with passing the wrong argument to a + library function.

+
 

G_FILE_ERROR_PIPE

+

Broken pipe; there is no process reading from the + other end of a pipe. Every library function that returns this + error code also generates a 'SIGPIPE' signal; this signal + terminates the program if not handled or blocked. Thus, your + program will never actually see this code unless it has handled + or blocked 'SIGPIPE'.

+
 

G_FILE_ERROR_AGAIN

+

Resource temporarily unavailable; the call might + work if you try again later.

+
 

G_FILE_ERROR_INTR

+

Interrupted function call; an asynchronous signal + occurred and prevented completion of the call. When this + happens, you should try the call again.

+
 

G_FILE_ERROR_IO

+

Input/output error; usually used for physical read + or write errors. i.e. the disk or other physical device hardware + is returning errors.

+
 

G_FILE_ERROR_PERM

+

Operation not permitted; only the owner of the + file (or other resource) or processes with special privileges can + perform the operation.

+
 

G_FILE_ERROR_NOSYS

+

Function not implemented; this indicates that + the system is missing some functionality.

+
 

G_FILE_ERROR_FAILED

+

Does not correspond to a UNIX error code; this + is the standard "failed for unspecified reason" error code present + in all GError error code enumerations. Returned if no specific + code applies.

+
 
+
+
+
+
+

G_FILE_ERROR

+
#define G_FILE_ERROR g_file_error_quark ()
+
+

Error domain for file operations. Errors in this domain will +be from the GFileError enumeration. See GError for information +on error domains.

+
+
+
+

enum GFileTest

+

A test to perform on a file using g_file_test().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_FILE_TEST_IS_REGULAR

+

TRUE if the file is a regular file + (not a directory). Note that this test will also return TRUE + if the tested file is a symlink to a regular file.

+
 

G_FILE_TEST_IS_SYMLINK

+

TRUE if the file is a symlink.

+
 

G_FILE_TEST_IS_DIR

+

TRUE if the file is a directory.

+
 

G_FILE_TEST_IS_EXECUTABLE

+

TRUE if the file is executable.

+
 

G_FILE_TEST_EXISTS

+

TRUE if the file exists. It may or may not + be a regular file.

+
 
+
+
+
+
+

GDir

+
typedef struct _GDir GDir;
+

An opaque structure representing an opened directory.

+
+
+
+

GMappedFile

+
typedef struct _GMappedFile GMappedFile;
+

The GMappedFile represents a file mapping created with +g_mapped_file_new(). It has only private members and should +not be accessed directly.

+
+
+
+

GStatBuf

+
typedef struct _stat32 GStatBuf;
+
+

A type corresponding to the appropriate struct type for the stat() +system call, depending on the platform and/or compiler being used.

+

See g_stat() for more information.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-GDateTime.html b/docs/reference/glib/html/glib-GDateTime.html new file mode 100644 index 0000000..66fbe9d --- /dev/null +++ b/docs/reference/glib/html/glib-GDateTime.html @@ -0,0 +1,2385 @@ + + + + +GDateTime: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GDateTime

+

GDateTime — a structure representing Date and Time

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#defineG_TIME_SPAN_DAY
#defineG_TIME_SPAN_HOUR
#defineG_TIME_SPAN_MINUTE
#defineG_TIME_SPAN_SECOND
#defineG_TIME_SPAN_MILLISECOND
+void + +g_date_time_unref () +
+GDateTime * + +g_date_time_ref () +
+GDateTime * + +g_date_time_new_now () +
+GDateTime * + +g_date_time_new_now_local () +
+GDateTime * + +g_date_time_new_now_utc () +
+GDateTime * + +g_date_time_new_from_unix_local () +
+GDateTime * + +g_date_time_new_from_unix_utc () +
+GDateTime * + +g_date_time_new_from_timeval_local () +
+GDateTime * + +g_date_time_new_from_timeval_utc () +
+GDateTime * + +g_date_time_new () +
+GDateTime * + +g_date_time_new_local () +
+GDateTime * + +g_date_time_new_utc () +
+GDateTime * + +g_date_time_add () +
+GDateTime * + +g_date_time_add_years () +
+GDateTime * + +g_date_time_add_months () +
+GDateTime * + +g_date_time_add_weeks () +
+GDateTime * + +g_date_time_add_days () +
+GDateTime * + +g_date_time_add_hours () +
+GDateTime * + +g_date_time_add_minutes () +
+GDateTime * + +g_date_time_add_seconds () +
+GDateTime * + +g_date_time_add_full () +
+gint + +g_date_time_compare () +
+GTimeSpan + +g_date_time_difference () +
+guint + +g_date_time_hash () +
+gboolean + +g_date_time_equal () +
+void + +g_date_time_get_ymd () +
+gint + +g_date_time_get_year () +
+gint + +g_date_time_get_month () +
+gint + +g_date_time_get_day_of_month () +
+gint + +g_date_time_get_week_numbering_year () +
+gint + +g_date_time_get_week_of_year () +
+gint + +g_date_time_get_day_of_week () +
+gint + +g_date_time_get_day_of_year () +
+gint + +g_date_time_get_hour () +
+gint + +g_date_time_get_minute () +
+gint + +g_date_time_get_second () +
+gint + +g_date_time_get_microsecond () +
+gdouble + +g_date_time_get_seconds () +
+gint64 + +g_date_time_to_unix () +
+gboolean + +g_date_time_to_timeval () +
+GTimeSpan + +g_date_time_get_utc_offset () +
const gchar * + +g_date_time_get_timezone_abbreviation () +
+gboolean + +g_date_time_is_daylight_savings () +
+GDateTime * + +g_date_time_to_timezone () +
+GDateTime * + +g_date_time_to_local () +
+GDateTime * + +g_date_time_to_utc () +
+gchar * + +g_date_time_format () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
typedefGTimeSpan
 GDateTime
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GDateTime is a structure that combines a Gregorian date and time +into a single structure. It provides many conversion and methods to +manipulate dates and times. Time precision is provided down to +microseconds and the time can range (proleptically) from 0001-01-01 +00:00:00 to 9999-12-31 23:59:59.999999. GDateTime follows POSIX +time in the sense that it is oblivious to leap seconds.

+

GDateTime is an immutable object; once it has been created it cannot +be modified further. All modifiers will create a new GDateTime. +Nearly all such functions can fail due to the date or time going out +of range, in which case NULL will be returned.

+

GDateTime is reference counted: the reference count is increased by calling +g_date_time_ref() and decreased by calling g_date_time_unref(). When the +reference count drops to 0, the resources allocated by the GDateTime +structure are released.

+

Many parts of the API may produce non-obvious results. As an +example, adding two months to January 31st will yield March 31st +whereas adding one month and then one month again will yield either +March 28th or March 29th. Also note that adding 24 hours is not +always the same as adding one day (since days containing daylight +savings time transitions are either 23 or 25 hours in length).

+

GDateTime is available since GLib 2.26.

+
+
+

Functions

+
+

G_TIME_SPAN_DAY

+
#define G_TIME_SPAN_DAY                 (G_GINT64_CONSTANT (86400000000))
+
+

Evaluates to a time span of one day.

+

Since: 2.26

+
+
+
+

G_TIME_SPAN_HOUR

+
#define G_TIME_SPAN_HOUR                (G_GINT64_CONSTANT (3600000000))
+
+

Evaluates to a time span of one hour.

+

Since: 2.26

+
+
+
+

G_TIME_SPAN_MINUTE

+
#define G_TIME_SPAN_MINUTE              (G_GINT64_CONSTANT (60000000))
+
+

Evaluates to a time span of one minute.

+

Since: 2.26

+
+
+
+

G_TIME_SPAN_SECOND

+
#define G_TIME_SPAN_SECOND              (G_GINT64_CONSTANT (1000000))
+
+

Evaluates to a time span of one second.

+

Since: 2.26

+
+
+
+

G_TIME_SPAN_MILLISECOND

+
#define G_TIME_SPAN_MILLISECOND         (G_GINT64_CONSTANT (1000))
+
+

Evaluates to a time span of one millisecond.

+

Since: 2.26

+
+
+
+

g_date_time_unref ()

+
void
+g_date_time_unref (GDateTime *datetime);
+

Atomically decrements the reference count of datetime + by one.

+

When the reference count reaches zero, the resources allocated by +datetime + are freed

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+

Since: 2.26

+
+
+
+

g_date_time_ref ()

+
GDateTime *
+g_date_time_ref (GDateTime *datetime);
+

Atomically increments the reference count of datetime + by one.

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the GDateTime with the reference count increased

+
+

Since: 2.26

+
+
+
+

g_date_time_new_now ()

+
GDateTime *
+g_date_time_new_now (GTimeZone *tz);
+

Creates a GDateTime corresponding to this exact instant in the given +time zone tz +. The time is as accurate as the system allows, to a +maximum accuracy of 1 microsecond.

+

This function will always succeed unless the system clock is set to +truly insane values (or unless GLib is still being used after the +year 9999).

+

You should release the return value by calling g_date_time_unref() +when you are done with it.

+
+

Parameters

+
+++++ + + + + + +

tz

a GTimeZone

 
+
+
+

Returns

+

a new GDateTime, or NULL

+
+

Since: 2.26

+
+
+
+

g_date_time_new_now_local ()

+
GDateTime *
+g_date_time_new_now_local (void);
+

Creates a GDateTime corresponding to this exact instant in the local +time zone.

+

This is equivalent to calling g_date_time_new_now() with the time +zone returned by g_time_zone_new_local().

+
+

Returns

+

a new GDateTime, or NULL

+
+

Since: 2.26

+
+
+
+

g_date_time_new_now_utc ()

+
GDateTime *
+g_date_time_new_now_utc (void);
+

Creates a GDateTime corresponding to this exact instant in UTC.

+

This is equivalent to calling g_date_time_new_now() with the time +zone returned by g_time_zone_new_utc().

+
+

Returns

+

a new GDateTime, or NULL

+
+

Since: 2.26

+
+
+
+

g_date_time_new_from_unix_local ()

+
GDateTime *
+g_date_time_new_from_unix_local (gint64 t);
+

Creates a GDateTime corresponding to the given Unix time t + in the +local time zone.

+

Unix time is the number of seconds that have elapsed since 1970-01-01 +00:00:00 UTC, regardless of the local time offset.

+

This call can fail (returning NULL) if t + represents a time outside +of the supported range of GDateTime.

+

You should release the return value by calling g_date_time_unref() +when you are done with it.

+
+

Parameters

+
+++++ + + + + + +

t

the Unix time

 
+
+
+

Returns

+

a new GDateTime, or NULL

+
+

Since: 2.26

+
+
+
+

g_date_time_new_from_unix_utc ()

+
GDateTime *
+g_date_time_new_from_unix_utc (gint64 t);
+

Creates a GDateTime corresponding to the given Unix time t + in UTC.

+

Unix time is the number of seconds that have elapsed since 1970-01-01 +00:00:00 UTC.

+

This call can fail (returning NULL) if t + represents a time outside +of the supported range of GDateTime.

+

You should release the return value by calling g_date_time_unref() +when you are done with it.

+
+

Parameters

+
+++++ + + + + + +

t

the Unix time

 
+
+
+

Returns

+

a new GDateTime, or NULL

+
+

Since: 2.26

+
+
+
+

g_date_time_new_from_timeval_local ()

+
GDateTime *
+g_date_time_new_from_timeval_local (const GTimeVal *tv);
+

Creates a GDateTime corresponding to the given GTimeVal tv + in the +local time zone.

+

The time contained in a GTimeVal is always stored in the form of +seconds elapsed since 1970-01-01 00:00:00 UTC, regardless of the +local time offset.

+

This call can fail (returning NULL) if tv + represents a time outside +of the supported range of GDateTime.

+

You should release the return value by calling g_date_time_unref() +when you are done with it.

+
+

Parameters

+
+++++ + + + + + +

tv

a GTimeVal

 
+
+
+

Returns

+

a new GDateTime, or NULL

+
+

Since: 2.26

+
+
+
+

g_date_time_new_from_timeval_utc ()

+
GDateTime *
+g_date_time_new_from_timeval_utc (const GTimeVal *tv);
+

Creates a GDateTime corresponding to the given GTimeVal tv + in UTC.

+

The time contained in a GTimeVal is always stored in the form of +seconds elapsed since 1970-01-01 00:00:00 UTC.

+

This call can fail (returning NULL) if tv + represents a time outside +of the supported range of GDateTime.

+

You should release the return value by calling g_date_time_unref() +when you are done with it.

+
+

Parameters

+
+++++ + + + + + +

tv

a GTimeVal

 
+
+
+

Returns

+

a new GDateTime, or NULL

+
+

Since: 2.26

+
+
+
+

g_date_time_new ()

+
GDateTime *
+g_date_time_new (GTimeZone *tz,
+                 gint year,
+                 gint month,
+                 gint day,
+                 gint hour,
+                 gint minute,
+                 gdouble seconds);
+

Creates a new GDateTime corresponding to the given date and time in +the time zone tz +.

+

The year + must be between 1 and 9999, month + between 1 and 12 and day + +between 1 and 28, 29, 30 or 31 depending on the month and the year.

+

hour + must be between 0 and 23 and minute + must be between 0 and 59.

+

seconds + must be at least 0.0 and must be strictly less than 60.0. +It will be rounded down to the nearest microsecond.

+

If the given time is not representable in the given time zone (for +example, 02:30 on March 14th 2010 in Toronto, due to daylight savings +time) then the time will be rounded up to the nearest existing time +(in this case, 03:00). If this matters to you then you should verify +the return value for containing the same as the numbers you gave.

+

In the case that the given time is ambiguous in the given time zone +(for example, 01:30 on November 7th 2010 in Toronto, due to daylight +savings time) then the time falling within standard (ie: +non-daylight) time is taken.

+

It not considered a programmer error for the values to this function +to be out of range, but in the case that they are, the function will +return NULL.

+

You should release the return value by calling g_date_time_unref() +when you are done with it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

tz

a GTimeZone

 

year

the year component of the date

 

month

the month component of the date

 

day

the day component of the date

 

hour

the hour component of the date

 

minute

the minute component of the date

 

seconds

the number of seconds past the minute

 
+
+
+

Returns

+

a new GDateTime, or NULL

+
+

Since: 2.26

+
+
+
+

g_date_time_new_local ()

+
GDateTime *
+g_date_time_new_local (gint year,
+                       gint month,
+                       gint day,
+                       gint hour,
+                       gint minute,
+                       gdouble seconds);
+

Creates a new GDateTime corresponding to the given date and time in +the local time zone.

+

This call is equivalent to calling g_date_time_new() with the time +zone returned by g_time_zone_new_local().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

year

the year component of the date

 

month

the month component of the date

 

day

the day component of the date

 

hour

the hour component of the date

 

minute

the minute component of the date

 

seconds

the number of seconds past the minute

 
+
+
+

Returns

+

a GDateTime, or NULL

+
+

Since: 2.26

+
+
+
+

g_date_time_new_utc ()

+
GDateTime *
+g_date_time_new_utc (gint year,
+                     gint month,
+                     gint day,
+                     gint hour,
+                     gint minute,
+                     gdouble seconds);
+

Creates a new GDateTime corresponding to the given date and time in +UTC.

+

This call is equivalent to calling g_date_time_new() with the time +zone returned by g_time_zone_new_utc().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

year

the year component of the date

 

month

the month component of the date

 

day

the day component of the date

 

hour

the hour component of the date

 

minute

the minute component of the date

 

seconds

the number of seconds past the minute

 
+
+
+

Returns

+

a GDateTime, or NULL

+
+

Since: 2.26

+
+
+
+

g_date_time_add ()

+
GDateTime *
+g_date_time_add (GDateTime *datetime,
+                 GTimeSpan timespan);
+

Creates a copy of datetime + and adds the specified timespan to the copy.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datetime

a GDateTime

 

timespan

a GTimeSpan

 
+
+
+

Returns

+

the newly created GDateTime which should be freed with +g_date_time_unref().

+
+

Since: 2.26

+
+
+
+

g_date_time_add_years ()

+
GDateTime *
+g_date_time_add_years (GDateTime *datetime,
+                       gint years);
+

Creates a copy of datetime + and adds the specified number of years to the +copy. Add negative values to subtract years.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datetime

a GDateTime

 

years

the number of years

 
+
+
+

Returns

+

the newly created GDateTime which should be freed with +g_date_time_unref().

+
+

Since: 2.26

+
+
+
+

g_date_time_add_months ()

+
GDateTime *
+g_date_time_add_months (GDateTime *datetime,
+                        gint months);
+

Creates a copy of datetime + and adds the specified number of months to the +copy. Add negative values to subtract months.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datetime

a GDateTime

 

months

the number of months

 
+
+
+

Returns

+

the newly created GDateTime which should be freed with +g_date_time_unref().

+
+

Since: 2.26

+
+
+
+

g_date_time_add_weeks ()

+
GDateTime *
+g_date_time_add_weeks (GDateTime *datetime,
+                       gint weeks);
+

Creates a copy of datetime + and adds the specified number of weeks to the +copy. Add negative values to subtract weeks.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datetime

a GDateTime

 

weeks

the number of weeks

 
+
+
+

Returns

+

the newly created GDateTime which should be freed with +g_date_time_unref().

+
+

Since: 2.26

+
+
+
+

g_date_time_add_days ()

+
GDateTime *
+g_date_time_add_days (GDateTime *datetime,
+                      gint days);
+

Creates a copy of datetime + and adds the specified number of days to the +copy. Add negative values to subtract days.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datetime

a GDateTime

 

days

the number of days

 
+
+
+

Returns

+

the newly created GDateTime which should be freed with +g_date_time_unref().

+
+

Since: 2.26

+
+
+
+

g_date_time_add_hours ()

+
GDateTime *
+g_date_time_add_hours (GDateTime *datetime,
+                       gint hours);
+

Creates a copy of datetime + and adds the specified number of hours. +Add negative values to subtract hours.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datetime

a GDateTime

 

hours

the number of hours to add

 
+
+
+

Returns

+

the newly created GDateTime which should be freed with +g_date_time_unref().

+
+

Since: 2.26

+
+
+
+

g_date_time_add_minutes ()

+
GDateTime *
+g_date_time_add_minutes (GDateTime *datetime,
+                         gint minutes);
+

Creates a copy of datetime + adding the specified number of minutes. +Add negative values to subtract minutes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datetime

a GDateTime

 

minutes

the number of minutes to add

 
+
+
+

Returns

+

the newly created GDateTime which should be freed with +g_date_time_unref().

+
+

Since: 2.26

+
+
+
+

g_date_time_add_seconds ()

+
GDateTime *
+g_date_time_add_seconds (GDateTime *datetime,
+                         gdouble seconds);
+

Creates a copy of datetime + and adds the specified number of seconds. +Add negative values to subtract seconds.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datetime

a GDateTime

 

seconds

the number of seconds to add

 
+
+
+

Returns

+

the newly created GDateTime which should be freed with +g_date_time_unref().

+
+

Since: 2.26

+
+
+
+

g_date_time_add_full ()

+
GDateTime *
+g_date_time_add_full (GDateTime *datetime,
+                      gint years,
+                      gint months,
+                      gint days,
+                      gint hours,
+                      gint minutes,
+                      gdouble seconds);
+

Creates a new GDateTime adding the specified values to the current date and +time in datetime +. Add negative values to subtract.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

datetime

a GDateTime

 

years

the number of years to add

 

months

the number of months to add

 

days

the number of days to add

 

hours

the number of hours to add

 

minutes

the number of minutes to add

 

seconds

the number of seconds to add

 
+
+
+

Returns

+

the newly created GDateTime that should be freed with +g_date_time_unref().

+
+

Since: 2.26

+
+
+
+

g_date_time_compare ()

+
gint
+g_date_time_compare (gconstpointer dt1,
+                     gconstpointer dt2);
+

A comparison function for GDateTimes that is suitable +as a GCompareFunc. Both GDateTimes must be non-NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

dt1

first GDateTime to compare.

[not nullable]

dt2

second GDateTime to compare.

[not nullable]
+
+
+

Returns

+

-1, 0 or 1 if dt1 +is less than, equal to or greater +than dt2 +.

+
+

Since: 2.26

+
+
+
+

g_date_time_difference ()

+
GTimeSpan
+g_date_time_difference (GDateTime *end,
+                        GDateTime *begin);
+

Calculates the difference in time between end + and begin +. The +GTimeSpan that is returned is effectively end + - begin + (ie: +positive if the first parameter is larger).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

end

a GDateTime

 

begin

a GDateTime

 
+
+
+

Returns

+

the difference between the two GDateTime, as a time +span expressed in microseconds.

+
+

Since: 2.26

+
+
+
+

g_date_time_hash ()

+
guint
+g_date_time_hash (gconstpointer datetime);
+

Hashes datetime + into a guint, suitable for use within GHashTable.

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime.

[not nullable]
+
+
+

Returns

+

a guint containing the hash

+
+

Since: 2.26

+
+
+
+

g_date_time_equal ()

+
gboolean
+g_date_time_equal (gconstpointer dt1,
+                   gconstpointer dt2);
+

Checks to see if dt1 + and dt2 + are equal.

+

Equal here means that they represent the same moment after converting +them to the same time zone.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

dt1

a GDateTime.

[not nullable]

dt2

a GDateTime.

[not nullable]
+
+
+

Returns

+

TRUE if dt1 +and dt2 +are equal

+
+

Since: 2.26

+
+
+
+

g_date_time_get_ymd ()

+
void
+g_date_time_get_ymd (GDateTime *datetime,
+                     gint *year,
+                     gint *month,
+                     gint *day);
+

Retrieves the Gregorian day, month, and year of a given GDateTime.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

datetime

a GDateTime.

 

year

the return location for the gregorian year, or NULL.

[out][allow-none]

month

the return location for the month of the year, or NULL.

[out][allow-none]

day

the return location for the day of the month, or NULL.

[out][allow-none]
+
+

Since: 2.26

+
+
+
+

g_date_time_get_year ()

+
gint
+g_date_time_get_year (GDateTime *datetime);
+

Retrieves the year represented by datetime + in the Gregorian calendar.

+
+

Parameters

+
+++++ + + + + + +

datetime

A GDateTime

 
+
+
+

Returns

+

the year represented by datetime +

+
+

Since: 2.26

+
+
+
+

g_date_time_get_month ()

+
gint
+g_date_time_get_month (GDateTime *datetime);
+

Retrieves the month of the year represented by datetime + in the Gregorian +calendar.

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the month represented by datetime +

+
+

Since: 2.26

+
+
+
+

g_date_time_get_day_of_month ()

+
gint
+g_date_time_get_day_of_month (GDateTime *datetime);
+

Retrieves the day of the month represented by datetime + in the gregorian +calendar.

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the day of the month

+
+

Since: 2.26

+
+
+
+

g_date_time_get_week_numbering_year ()

+
gint
+g_date_time_get_week_numbering_year (GDateTime *datetime);
+

Returns the ISO 8601 week-numbering year in which the week containing +datetime + falls.

+

This function, taken together with g_date_time_get_week_of_year() and +g_date_time_get_day_of_week() can be used to determine the full ISO +week date on which datetime + falls.

+

This is usually equal to the normal Gregorian year (as returned by +g_date_time_get_year()), except as detailed below:

+

For Thursday, the week-numbering year is always equal to the usual +calendar year. For other days, the number is such that every day +within a complete week (Monday to Sunday) is contained within the +same week-numbering year.

+

For Monday, Tuesday and Wednesday occurring near the end of the year, +this may mean that the week-numbering year is one greater than the +calendar year (so that these days have the same week-numbering year +as the Thursday occurring early in the next year).

+

For Friday, Saturday and Sunday occurring near the start of the year, +this may mean that the week-numbering year is one less than the +calendar year (so that these days have the same week-numbering year +as the Thursday occurring late in the previous year).

+

An equivalent description is that the week-numbering year is equal to +the calendar year containing the majority of the days in the current +week (Monday to Sunday).

+

Note that January 1 0001 in the proleptic Gregorian calendar is a +Monday, so this function never returns 0.

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the ISO 8601 week-numbering year for datetime +

+
+

Since: 2.26

+
+
+
+

g_date_time_get_week_of_year ()

+
gint
+g_date_time_get_week_of_year (GDateTime *datetime);
+

Returns the ISO 8601 week number for the week containing datetime +. +The ISO 8601 week number is the same for every day of the week (from +Moday through Sunday). That can produce some unusual results +(described below).

+

The first week of the year is week 1. This is the week that contains +the first Thursday of the year. Equivalently, this is the first week +that has more than 4 of its days falling within the calendar year.

+

The value 0 is never returned by this function. Days contained +within a year but occurring before the first ISO 8601 week of that +year are considered as being contained in the last week of the +previous year. Similarly, the final days of a calendar year may be +considered as being part of the first ISO 8601 week of the next year +if 4 or more days of that week are contained within the new year.

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the ISO 8601 week number for datetime +.

+
+

Since: 2.26

+
+
+
+

g_date_time_get_day_of_week ()

+
gint
+g_date_time_get_day_of_week (GDateTime *datetime);
+

Retrieves the ISO 8601 day of the week on which datetime + falls (1 is +Monday, 2 is Tuesday... 7 is Sunday).

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the day of the week

+
+

Since: 2.26

+
+
+
+

g_date_time_get_day_of_year ()

+
gint
+g_date_time_get_day_of_year (GDateTime *datetime);
+

Retrieves the day of the year represented by datetime + in the Gregorian +calendar.

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the day of the year

+
+

Since: 2.26

+
+
+
+

g_date_time_get_hour ()

+
gint
+g_date_time_get_hour (GDateTime *datetime);
+

Retrieves the hour of the day represented by datetime +

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the hour of the day

+
+

Since: 2.26

+
+
+
+

g_date_time_get_minute ()

+
gint
+g_date_time_get_minute (GDateTime *datetime);
+

Retrieves the minute of the hour represented by datetime +

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the minute of the hour

+
+

Since: 2.26

+
+
+
+

g_date_time_get_second ()

+
gint
+g_date_time_get_second (GDateTime *datetime);
+

Retrieves the second of the minute represented by datetime +

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the second represented by datetime +

+
+

Since: 2.26

+
+
+
+

g_date_time_get_microsecond ()

+
gint
+g_date_time_get_microsecond (GDateTime *datetime);
+

Retrieves the microsecond of the date represented by datetime +

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the microsecond of the second

+
+

Since: 2.26

+
+
+
+

g_date_time_get_seconds ()

+
gdouble
+g_date_time_get_seconds (GDateTime *datetime);
+

Retrieves the number of seconds since the start of the last minute, +including the fractional part.

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the number of seconds

+
+

Since: 2.26

+
+
+
+

g_date_time_to_unix ()

+
gint64
+g_date_time_to_unix (GDateTime *datetime);
+

Gives the Unix time corresponding to datetime +, rounding down to the +nearest second.

+

Unix time is the number of seconds that have elapsed since 1970-01-01 +00:00:00 UTC, regardless of the time zone associated with datetime +.

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the Unix time corresponding to datetime +

+
+

Since: 2.26

+
+
+
+

g_date_time_to_timeval ()

+
gboolean
+g_date_time_to_timeval (GDateTime *datetime,
+                        GTimeVal *tv);
+

Stores the instant in time that datetime + represents into tv +.

+

The time contained in a GTimeVal is always stored in the form of +seconds elapsed since 1970-01-01 00:00:00 UTC, regardless of the time +zone associated with datetime +.

+

On systems where 'long' is 32bit (ie: all 32bit systems and all +Windows systems), a GTimeVal is incapable of storing the entire +range of values that GDateTime is capable of expressing. On those +systems, this function returns FALSE to indicate that the time is +out of range.

+

On systems where 'long' is 64bit, this function never fails.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datetime

a GDateTime

 

tv

a GTimeVal to modify

 
+
+
+

Returns

+

TRUE if successful, else FALSE

+
+

Since: 2.26

+
+
+
+

g_date_time_get_utc_offset ()

+
GTimeSpan
+g_date_time_get_utc_offset (GDateTime *datetime);
+

Determines the offset to UTC in effect at the time and in the time +zone of datetime +.

+

The offset is the number of microseconds that you add to UTC time to +arrive at local time for the time zone (ie: negative numbers for time +zones west of GMT, positive numbers for east).

+

If datetime + represents UTC time, then the offset is always zero.

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the number of microseconds that should be added to UTC to +get the local time

+
+

Since: 2.26

+
+
+
+

g_date_time_get_timezone_abbreviation ()

+
const gchar *
+g_date_time_get_timezone_abbreviation (GDateTime *datetime);
+

Determines the time zone abbreviation to be used at the time and in +the time zone of datetime +.

+

For example, in Toronto this is currently "EST" during the winter +months and "EDT" during the summer months when daylight savings +time is in effect.

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the time zone abbreviation. The returned +string is owned by the GDateTime and it should not be +modified or freed.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_date_time_is_daylight_savings ()

+
gboolean
+g_date_time_is_daylight_savings (GDateTime *datetime);
+

Determines if daylight savings time is in effect at the time and in +the time zone of datetime +.

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

TRUE if daylight savings time is in effect

+
+

Since: 2.26

+
+
+
+

g_date_time_to_timezone ()

+
GDateTime *
+g_date_time_to_timezone (GDateTime *datetime,
+                         GTimeZone *tz);
+

Create a new GDateTime corresponding to the same instant in time as +datetime +, but in the time zone tz +.

+

This call can fail in the case that the time goes out of bounds. For +example, converting 0001-01-01 00:00:00 UTC to a time zone west of +Greenwich will fail (due to the year 0 being out of range).

+

You should release the return value by calling g_date_time_unref() +when you are done with it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datetime

a GDateTime

 

tz

the new GTimeZone

 
+
+
+

Returns

+

a new GDateTime, or NULL

+
+

Since: 2.26

+
+
+
+

g_date_time_to_local ()

+
GDateTime *
+g_date_time_to_local (GDateTime *datetime);
+

Creates a new GDateTime corresponding to the same instant in time as +datetime +, but in the local time zone.

+

This call is equivalent to calling g_date_time_to_timezone() with the +time zone returned by g_time_zone_new_local().

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the newly created GDateTime

+
+

Since: 2.26

+
+
+
+

g_date_time_to_utc ()

+
GDateTime *
+g_date_time_to_utc (GDateTime *datetime);
+

Creates a new GDateTime corresponding to the same instant in time as +datetime +, but in UTC.

+

This call is equivalent to calling g_date_time_to_timezone() with the +time zone returned by g_time_zone_new_utc().

+
+

Parameters

+
+++++ + + + + + +

datetime

a GDateTime

 
+
+
+

Returns

+

the newly created GDateTime

+
+

Since: 2.26

+
+
+
+

g_date_time_format ()

+
gchar *
+g_date_time_format (GDateTime *datetime,
+                    const gchar *format);
+

Creates a newly allocated string representing the requested format +.

+

The format strings understood by this function are a subset of the +strftime() format language as specified by C99. The %D, %U and %W +conversions are not supported, nor is the 'E' modifier. The GNU +extensions %k, %l, %s and %P are supported, however, as are the +'0', '_' and '-' modifiers.

+

In contrast to strftime(), this function always produces a UTF-8 +string, regardless of the current locale. Note that the rendering of +many formats is locale-dependent and may not match the strftime() +output exactly.

+

The following format specifiers are supported:

+
    +
  • %a: the abbreviated weekday name according to the current locale

  • +
  • %A: the full weekday name according to the current locale

  • +
  • %b: the abbreviated month name according to the current locale

  • +
  • %B: the full month name according to the current locale

  • +
  • %c: the preferred date and time representation for the current locale

  • +
  • %C: the century number (year/100) as a 2-digit integer (00-99)

  • +
  • %d: the day of the month as a decimal number (range 01 to 31)

  • +
  • %e: the day of the month as a decimal number (range 1 to 31)

  • +
  • %F: equivalent to %Y-%m-%d (the ISO 8601 date format)

  • +
  • %g: the last two digits of the ISO 8601 week-based year as a +decimal number (00-99). This works well with %V and %u.

  • +
  • %G: the ISO 8601 week-based year as a decimal number. This works +well with %V and %u.

  • +
  • %h: equivalent to %b

  • +
  • %H: the hour as a decimal number using a 24-hour clock (range 00 to 23)

  • +
  • %I: the hour as a decimal number using a 12-hour clock (range 01 to 12)

  • +
  • %j: the day of the year as a decimal number (range 001 to 366)

  • +
  • %k: the hour (24-hour clock) as a decimal number (range 0 to 23); +single digits are preceded by a blank

  • +
  • %l: the hour (12-hour clock) as a decimal number (range 1 to 12); +single digits are preceded by a blank

  • +
  • %m: the month as a decimal number (range 01 to 12)

  • +
  • %M: the minute as a decimal number (range 00 to 59)

  • +
  • %p: either "AM" or "PM" according to the given time value, or the +corresponding strings for the current locale. Noon is treated as +"PM" and midnight as "AM".

  • +
  • %P: like %p but lowercase: "am" or "pm" or a corresponding string for +the current locale

  • +
  • %r: the time in a.m. or p.m. notation

  • +
  • %R: the time in 24-hour notation (%H:%M)

  • +
  • %s: the number of seconds since the Epoch, that is, since 1970-01-01 +00:00:00 UTC

  • +
  • %S: the second as a decimal number (range 00 to 60)

  • +
  • %t: a tab character

  • +
  • %T: the time in 24-hour notation with seconds (%H:%M:%S)

  • +
  • %u: the ISO 8601 standard day of the week as a decimal, range 1 to 7, +Monday being 1. This works well with %G and %V.

  • +
  • %V: the ISO 8601 standard week number of the current year as a decimal +number, range 01 to 53, where week 1 is the first week that has at +least 4 days in the new year. See g_date_time_get_week_of_year(). +This works well with %G and %u.

  • +
  • %w: the day of the week as a decimal, range 0 to 6, Sunday being 0. +This is not the ISO 8601 standard format -- use %u instead.

  • +
  • %x: the preferred date representation for the current locale without +the time

  • +
  • %X: the preferred time representation for the current locale without +the date

  • +
  • %y: the year as a decimal number without the century

  • +
  • %Y: the year as a decimal number including the century

  • +
  • %z: the time zone as an offset from UTC (+hhmm)

  • +
  • %:z: the time zone as an offset from UTC (+hh:mm). +This is a gnulib strftime() extension. Since: 2.38

  • +
  • %::z: the time zone as an offset from UTC (+hh:mm:ss). This is a +gnulib strftime() extension. Since: 2.38

  • +
  • %:::z: the time zone as an offset from UTC, with : to necessary +precision (e.g., -04, +05:30). This is a gnulib strftime() extension. Since: 2.38

  • +
  • %Z: the time zone or name or abbreviation

  • +
  • %%: a literal % character

  • +
+

Some conversion specifications can be modified by preceding the +conversion specifier by one or more modifier characters. The +following modifiers are supported for many of the numeric +conversions:

+
    +
  • O: Use alternative numeric symbols, if the current locale supports those.

  • +
  • _: Pad a numeric result with spaces. This overrides the default padding +for the specifier.

  • +
  • -: Do not pad a numeric result. This overrides the default padding +for the specifier.

  • +
  • 0: Pad a numeric result with zeros. This overrides the default padding +for the specifier.

  • +
+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datetime

A GDateTime

 

format

a valid UTF-8 string, containing the format for the +GDateTime

 
+
+
+

Returns

+

a newly allocated string formatted to the requested format +or NULL in the case that there was an error. The string +should be freed with g_free().

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GTimeSpan

+
typedef gint64 GTimeSpan;
+
+

A value representing an interval of time, in microseconds.

+

Since: 2.26

+
+
+
+

GDateTime

+
typedef struct _GDateTime GDateTime;
+

GDateTime is an opaque structure whose members +cannot be accessed directly.

+

Since: 2.26

+
+
+
+

See Also

+

GTimeZone

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-GTimeZone.html b/docs/reference/glib/html/glib-GTimeZone.html new file mode 100644 index 0000000..87f7163 --- /dev/null +++ b/docs/reference/glib/html/glib-GTimeZone.html @@ -0,0 +1,654 @@ + + + + +GTimeZone: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTimeZone

+

GTimeZone — a structure representing a time zone

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +g_time_zone_unref () +
+GTimeZone * + +g_time_zone_ref () +
+GTimeZone * + +g_time_zone_new () +
+GTimeZone * + +g_time_zone_new_local () +
+GTimeZone * + +g_time_zone_new_utc () +
+gint + +g_time_zone_find_interval () +
+gint + +g_time_zone_adjust_time () +
const gchar * + +g_time_zone_get_abbreviation () +
+gint32 + +g_time_zone_get_offset () +
+gboolean + +g_time_zone_is_dst () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GTimeZone
enumGTimeType
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GTimeZone is a structure that represents a time zone, at no +particular point in time. It is refcounted and immutable.

+

A time zone contains a number of intervals. Each interval has +an abbreviation to describe it, an offet to UTC and a flag indicating +if the daylight savings time is in effect during that interval. A +time zone always has at least one interval -- interval 0.

+

Every UTC time is contained within exactly one interval, but a given +local time may be contained within zero, one or two intervals (due to +incontinuities associated with daylight savings time).

+

An interval may refer to a specific period of time (eg: the duration +of daylight savings time during 2010) or it may refer to many periods +of time that share the same properties (eg: all periods of daylight +savings time). It is also possible (usually for political reasons) +that some properties (like the abbreviation) change between intervals +without other properties changing.

+

GTimeZone is available since GLib 2.26.

+
+
+

Functions

+
+

g_time_zone_unref ()

+
void
+g_time_zone_unref (GTimeZone *tz);
+

Decreases the reference count on tz +.

+
+

Parameters

+
+++++ + + + + + +

tz

a GTimeZone

 
+
+

Since: 2.26

+
+
+
+

g_time_zone_ref ()

+
GTimeZone *
+g_time_zone_ref (GTimeZone *tz);
+

Increases the reference count on tz +.

+
+

Parameters

+
+++++ + + + + + +

tz

a GTimeZone

 
+
+
+

Returns

+

a new reference to tz +.

+
+

Since: 2.26

+
+
+
+

g_time_zone_new ()

+
GTimeZone *
+g_time_zone_new (const gchar *identifier);
+

Creates a GTimeZone corresponding to identifier +.

+

identifier + can either be an RFC3339/ISO 8601 time offset or +something that would pass as a valid value for the TZ environment +variable (including NULL).

+

In Windows, identifier + can also be the unlocalized name of a time +zone for standard time, for example "Pacific Standard Time".

+

Valid RFC3339 time offsets are "Z" (for UTC) or +"±hh:mm". ISO 8601 additionally specifies +"±hhmm" and "±hh". Offsets are +time values to be added to Coordinated Universal Time (UTC) to get +the local time.

+

In UNIX, the TZ environment variable typically corresponds +to the name of a file in the zoneinfo database, or string in +"std offset [dst [offset],start[/time],end[/time]]" (POSIX) format. +There are no spaces in the specification. The name of standard +and daylight savings time zone must be three or more alphabetic +characters. Offsets are time values to be added to local time to +get Coordinated Universal Time (UTC) and should be +"[±]hh[[:]mm[:ss]]". Dates are either +"Jn" (Julian day with n between 1 and 365, leap +years not counted), "n" (zero-based Julian day +with n between 0 and 365) or "Mm.w.d" (day d +(0 <= d <= 6) of week w (1 <= w <= 5) of month m (1 <= m <= 12), day +0 is a Sunday). Times are in local wall clock time, the default is +02:00:00.

+

In Windows, the "tzn[+|–]hh:mm[:ss]" format is used, but also +accepts POSIX format. The Windows format uses US rules for all time +zones; daylight savings time is 60 minutes behind the standard time +with date and time of change taken from Pacific Standard Time. +Offsets are time values to be added to the local time to get +Coordinated Universal Time (UTC).

+

g_time_zone_new_local() calls this function with the value of the +TZ environment variable. This function itself is independent of +the value of TZ, but if identifier + is NULL then /etc/localtime +will be consulted to discover the correct time zone on UNIX and the +registry will be consulted or GetTimeZoneInformation() will be used +to get the local time zone on Windows.

+

If intervals are not available, only time zone rules from TZ +environment variable or other means, then they will be computed +from year 1900 to 2037. If the maximum year for the rules is +available and it is greater than 2037, then it will followed +instead.

+

See +RFC3339 §5.6 +for a precise definition of valid RFC3339 time offsets +(the time-offset expansion) and ISO 8601 for the +full list of valid time offsets. See +The GNU C Library manual +for an explanation of the possible +values of the TZ environment variable. See +Microsoft Time Zone Index Values +for the list of time zones on Windows.

+

You should release the return value by calling g_time_zone_unref() +when you are done with it.

+
+

Parameters

+
+++++ + + + + + +

identifier

a timezone identifier.

[allow-none]
+
+
+

Returns

+

the requested timezone

+
+

Since: 2.26

+
+
+
+

g_time_zone_new_local ()

+
GTimeZone *
+g_time_zone_new_local (void);
+

Creates a GTimeZone corresponding to local time. The local time +zone may change between invocations to this function; for example, +if the system administrator changes it.

+

This is equivalent to calling g_time_zone_new() with the value of +the TZ environment variable (including the possibility of NULL).

+

You should release the return value by calling g_time_zone_unref() +when you are done with it.

+
+

Returns

+

the local timezone

+
+

Since: 2.26

+
+
+
+

g_time_zone_new_utc ()

+
GTimeZone *
+g_time_zone_new_utc (void);
+

Creates a GTimeZone corresponding to UTC.

+

This is equivalent to calling g_time_zone_new() with a value like +"Z", "UTC", "+00", etc.

+

You should release the return value by calling g_time_zone_unref() +when you are done with it.

+
+

Returns

+

the universal timezone

+
+

Since: 2.26

+
+
+
+

g_time_zone_find_interval ()

+
gint
+g_time_zone_find_interval (GTimeZone *tz,
+                           GTimeType type,
+                           gint64 time_);
+

Finds an the interval within tz + that corresponds to the given time_ +. +The meaning of time_ + depends on type +.

+

If type + is G_TIME_TYPE_UNIVERSAL then this function will always +succeed (since universal time is monotonic and continuous).

+

Otherwise time_ + is treated as local time. The distinction between +G_TIME_TYPE_STANDARD and G_TIME_TYPE_DAYLIGHT is ignored except in +the case that the given time_ + is ambiguous. In Toronto, for example, +01:30 on November 7th 2010 occurred twice (once inside of daylight +savings time and the next, an hour later, outside of daylight savings +time). In this case, the different value of type + would result in a +different interval being returned.

+

It is still possible for this function to fail. In Toronto, for +example, 02:00 on March 14th 2010 does not exist (due to the leap +forward to begin daylight savings time). -1 is returned in that +case.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

tz

a GTimeZone

 

type

the GTimeType of time_ +

 

time_

a number of seconds since January 1, 1970

 
+
+
+

Returns

+

the interval containing time_ +, or -1 in case of failure

+
+

Since: 2.26

+
+
+
+

g_time_zone_adjust_time ()

+
gint
+g_time_zone_adjust_time (GTimeZone *tz,
+                         GTimeType type,
+                         gint64 *time_);
+

Finds an interval within tz + that corresponds to the given time_ +, +possibly adjusting time_ + if required to fit into an interval. +The meaning of time_ + depends on type +.

+

This function is similar to g_time_zone_find_interval(), with the +difference that it always succeeds (by making the adjustments +described below).

+

In any of the cases where g_time_zone_find_interval() succeeds then +this function returns the same value, without modifying time_ +.

+

This function may, however, modify time_ + in order to deal with +non-existent times. If the non-existent local time_ + of 02:30 were +requested on March 14th 2010 in Toronto then this function would +adjust time_ + to be 03:00 and return the interval containing the +adjusted time.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

tz

a GTimeZone

 

type

the GTimeType of time_ +

 

time_

a pointer to a number of seconds since January 1, 1970

 
+
+
+

Returns

+

the interval containing time_ +, never -1

+
+

Since: 2.26

+
+
+
+

g_time_zone_get_abbreviation ()

+
const gchar *
+g_time_zone_get_abbreviation (GTimeZone *tz,
+                              gint interval);
+

Determines the time zone abbreviation to be used during a particular +interval + of time in the time zone tz +.

+

For example, in Toronto this is currently "EST" during the winter +months and "EDT" during the summer months when daylight savings time +is in effect.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

tz

a GTimeZone

 

interval

an interval within the timezone

 
+
+
+

Returns

+

the time zone abbreviation, which belongs to tz +

+
+

Since: 2.26

+
+
+
+

g_time_zone_get_offset ()

+
gint32
+g_time_zone_get_offset (GTimeZone *tz,
+                        gint interval);
+

Determines the offset to UTC in effect during a particular interval + +of time in the time zone tz +.

+

The offset is the number of seconds that you add to UTC time to +arrive at local time for tz + (ie: negative numbers for time zones +west of GMT, positive numbers for east).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

tz

a GTimeZone

 

interval

an interval within the timezone

 
+
+
+

Returns

+

the number of seconds that should be added to UTC to get the +local time in tz +

+
+

Since: 2.26

+
+
+
+

g_time_zone_is_dst ()

+
gboolean
+g_time_zone_is_dst (GTimeZone *tz,
+                    gint interval);
+

Determines if daylight savings time is in effect during a particular +interval + of time in the time zone tz +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

tz

a GTimeZone

 

interval

an interval within the timezone

 
+
+
+

Returns

+

TRUE if daylight savings time is in effect

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GTimeZone

+
typedef struct _GTimeZone GTimeZone;
+

GTimeZone is an opaque structure whose members cannot be accessed +directly.

+

Since: 2.26

+
+
+
+

enum GTimeType

+

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).

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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

+
 
+
+
+
+
+

See Also

+

GDateTime

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-GVariant.html b/docs/reference/glib/html/glib-GVariant.html new file mode 100644 index 0000000..cba38b6 --- /dev/null +++ b/docs/reference/glib/html/glib-GVariant.html @@ -0,0 +1,6946 @@ + + + + +GVariant: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GVariant

+

GVariant — strongly typed value datatype

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +g_variant_unref () +
+GVariant * + +g_variant_ref () +
+GVariant * + +g_variant_ref_sink () +
+gboolean + +g_variant_is_floating () +
+GVariant * + +g_variant_take_ref () +
const GVariantType * + +g_variant_get_type () +
const gchar * + +g_variant_get_type_string () +
+gboolean + +g_variant_is_of_type () +
+gboolean + +g_variant_is_container () +
+gint + +g_variant_compare () +
+GVariantClass + +g_variant_classify () +
+gboolean + +g_variant_check_format_string () +
+void + +g_variant_get () +
+void + +g_variant_get_va () +
+GVariant * + +g_variant_new () +
+GVariant * + +g_variant_new_va () +
+GVariant * + +g_variant_new_boolean () +
+GVariant * + +g_variant_new_byte () +
+GVariant * + +g_variant_new_int16 () +
+GVariant * + +g_variant_new_uint16 () +
+GVariant * + +g_variant_new_int32 () +
+GVariant * + +g_variant_new_uint32 () +
+GVariant * + +g_variant_new_int64 () +
+GVariant * + +g_variant_new_uint64 () +
+GVariant * + +g_variant_new_handle () +
+GVariant * + +g_variant_new_double () +
+GVariant * + +g_variant_new_string () +
+GVariant * + +g_variant_new_take_string () +
+GVariant * + +g_variant_new_printf () +
+GVariant * + +g_variant_new_object_path () +
+gboolean + +g_variant_is_object_path () +
+GVariant * + +g_variant_new_signature () +
+gboolean + +g_variant_is_signature () +
+GVariant * + +g_variant_new_variant () +
+GVariant * + +g_variant_new_strv () +
+GVariant * + +g_variant_new_objv () +
+GVariant * + +g_variant_new_bytestring () +
+GVariant * + +g_variant_new_bytestring_array () +
+gboolean + +g_variant_get_boolean () +
+guchar + +g_variant_get_byte () +
+gint16 + +g_variant_get_int16 () +
+guint16 + +g_variant_get_uint16 () +
+gint32 + +g_variant_get_int32 () +
+guint32 + +g_variant_get_uint32 () +
+gint64 + +g_variant_get_int64 () +
+guint64 + +g_variant_get_uint64 () +
+gint32 + +g_variant_get_handle () +
+gdouble + +g_variant_get_double () +
const gchar * + +g_variant_get_string () +
+gchar * + +g_variant_dup_string () +
+GVariant * + +g_variant_get_variant () +
const gchar ** + +g_variant_get_strv () +
+gchar ** + +g_variant_dup_strv () +
const gchar ** + +g_variant_get_objv () +
+gchar ** + +g_variant_dup_objv () +
const gchar * + +g_variant_get_bytestring () +
+gchar * + +g_variant_dup_bytestring () +
const gchar ** + +g_variant_get_bytestring_array () +
+gchar ** + +g_variant_dup_bytestring_array () +
+GVariant * + +g_variant_new_maybe () +
+GVariant * + +g_variant_new_array () +
+GVariant * + +g_variant_new_tuple () +
+GVariant * + +g_variant_new_dict_entry () +
+GVariant * + +g_variant_new_fixed_array () +
+GVariant * + +g_variant_get_maybe () +
+gsize + +g_variant_n_children () +
+GVariant * + +g_variant_get_child_value () +
+void + +g_variant_get_child () +
+GVariant * + +g_variant_lookup_value () +
+gboolean + +g_variant_lookup () +
+gconstpointer + +g_variant_get_fixed_array () +
+gsize + +g_variant_get_size () +
+gconstpointer + +g_variant_get_data () +
+GBytes * + +g_variant_get_data_as_bytes () +
+void + +g_variant_store () +
+GVariant * + +g_variant_new_from_data () +
+GVariant * + +g_variant_new_from_bytes () +
+GVariant * + +g_variant_byteswap () +
+GVariant * + +g_variant_get_normal_form () +
+gboolean + +g_variant_is_normal_form () +
+guint + +g_variant_hash () +
+gboolean + +g_variant_equal () +
+gchar * + +g_variant_print () +
+GString * + +g_variant_print_string () +
+GVariantIter * + +g_variant_iter_copy () +
+void + +g_variant_iter_free () +
+gsize + +g_variant_iter_init () +
+gsize + +g_variant_iter_n_children () +
+GVariantIter * + +g_variant_iter_new () +
+GVariant * + +g_variant_iter_next_value () +
+gboolean + +g_variant_iter_next () +
+gboolean + +g_variant_iter_loop () +
+void + +g_variant_builder_unref () +
+GVariantBuilder * + +g_variant_builder_ref () +
+GVariantBuilder * + +g_variant_builder_new () +
+void + +g_variant_builder_init () +
+void + +g_variant_builder_clear () +
+void + +g_variant_builder_add_value () +
+void + +g_variant_builder_add () +
+void + +g_variant_builder_add_parsed () +
+GVariant * + +g_variant_builder_end () +
+void + +g_variant_builder_open () +
+void + +g_variant_builder_close () +
+void + +g_variant_dict_unref () +
+GVariantDict * + +g_variant_dict_ref () +
+GVariantDict * + +g_variant_dict_new () +
+void + +g_variant_dict_init () +
+void + +g_variant_dict_clear () +
+gboolean + +g_variant_dict_contains () +
+gboolean + +g_variant_dict_lookup () +
+GVariant * + +g_variant_dict_lookup_value () +
+void + +g_variant_dict_insert () +
+void + +g_variant_dict_insert_value () +
+gboolean + +g_variant_dict_remove () +
+GVariant * + +g_variant_dict_end () +
#defineG_VARIANT_PARSE_ERROR
+GVariant * + +g_variant_parse () +
+GVariant * + +g_variant_new_parsed_va () +
+GVariant * + +g_variant_new_parsed () +
+gchar * + +g_variant_parse_error_print_context () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
 GVariant
enumGVariantClass
structGVariantIter
structGVariantBuilder
structGVariantDict
enumGVariantParseError
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GVariant is a variant datatype; it stores a value along with +information about the type of that value. The range of possible +values is determined by the type. The type system used by GVariant +is GVariantType.

+

GVariant instances always have a type and a value (which are given +at construction time). The type and value of a GVariant instance +can never change other than by the GVariant itself being +destroyed. A GVariant cannot contain a pointer.

+

GVariant is reference counted using g_variant_ref() and +g_variant_unref(). GVariant also has floating reference counts -- +see g_variant_ref_sink().

+

GVariant is completely threadsafe. A GVariant instance can be +concurrently accessed in any way from any number of threads without +problems.

+

GVariant is heavily optimised for dealing with data in serialised +form. It works particularly well with data located in memory-mapped +files. It can perform nearly all deserialisation operations in a +small constant time, usually touching only a single memory page. +Serialised GVariant data can also be sent over the network.

+

GVariant is largely compatible with D-Bus. Almost all types of +GVariant instances can be sent over D-Bus. See GVariantType for +exceptions. (However, GVariant's serialisation format is not the same +as the serialisation format of a D-Bus message body: use GDBusMessage, +in the gio library, for those.)

+

For space-efficiency, the GVariant serialisation format does not +automatically include the variant's length, type or endianness, +which must either be implied from context (such as knowledge that a +particular file format always contains a little-endian +G_VARIANT_TYPE_VARIANT which occupies the whole length of the file) +or supplied out-of-band (for instance, a length, type and/or endianness +indicator could be placed at the beginning of a file, network message +or network stream).

+

A GVariant's size is limited mainly by any lower level operating +system constraints, such as the number of bits in gsize. For +example, it is reasonable to have a 2GB file mapped into memory +with GMappedFile, and call g_variant_new_from_data() on it.

+

For convenience to C programmers, GVariant features powerful +varargs-based value construction and destruction. This feature is +designed to be embedded in other libraries.

+

There is a Python-inspired text language for describing GVariant +values. GVariant includes a printer for this language and a parser +with type inferencing.

+
+

Memory Use

+

GVariant tries to be quite efficient with respect to memory use. +This section gives a rough idea of how much memory is used by the +current implementation. The information here is subject to change +in the future.

+

The memory allocated by GVariant can be grouped into 4 broad +purposes: memory for serialised data, memory for the type +information cache, buffer management memory and memory for the +GVariant structure itself.

+
+
+

Serialised Data Memory

+

This is the memory that is used for storing GVariant data in +serialised form. This is what would be sent over the network or +what would end up on disk, not counting any indicator of the +endianness, or of the length or type of the top-level variant.

+

The amount of memory required to store a boolean is 1 byte. 16, +32 and 64 bit integers and double precision floating point numbers +use their "natural" size. Strings (including object path and +signature strings) are stored with a nul terminator, and as such +use the length of the string plus 1 byte.

+

Maybe types use no space at all to represent the null value and +use the same amount of space (sometimes plus one byte) as the +equivalent non-maybe-typed value to represent the non-null case.

+

Arrays use the amount of space required to store each of their +members, concatenated. Additionally, if the items stored in an +array are not of a fixed-size (ie: strings, other arrays, etc) +then an additional framing offset is stored for each item. The +size of this offset is either 1, 2 or 4 bytes depending on the +overall size of the container. Additionally, extra padding bytes +are added as required for alignment of child values.

+

Tuples (including dictionary entries) use the amount of space +required to store each of their members, concatenated, plus one +framing offset (as per arrays) for each non-fixed-sized item in +the tuple, except for the last one. Additionally, extra padding +bytes are added as required for alignment of child values.

+

Variants use the same amount of space as the item inside of the +variant, plus 1 byte, plus the length of the type string for the +item inside the variant.

+

As an example, consider a dictionary mapping strings to variants. +In the case that the dictionary is empty, 0 bytes are required for +the serialisation.

+

If we add an item "width" that maps to the int32 value of 500 then +we will use 4 byte to store the int32 (so 6 for the variant +containing it) and 6 bytes for the string. The variant must be +aligned to 8 after the 6 bytes of the string, so that's 2 extra +bytes. 6 (string) + 2 (padding) + 6 (variant) is 14 bytes used +for the dictionary entry. An additional 1 byte is added to the +array as a framing offset making a total of 15 bytes.

+

If we add another entry, "title" that maps to a nullable string +that happens to have a value of null, then we use 0 bytes for the +null value (and 3 bytes for the variant to contain it along with +its type string) plus 6 bytes for the string. Again, we need 2 +padding bytes. That makes a total of 6 + 2 + 3 = 11 bytes.

+

We now require extra padding between the two items in the array. +After the 14 bytes of the first item, that's 2 bytes required. +We now require 2 framing offsets for an extra two +bytes. 14 + 2 + 11 + 2 = 29 bytes to encode the entire two-item +dictionary.

+
+
+

Type Information Cache

+

For each GVariant type that currently exists in the program a type +information structure is kept in the type information cache. The +type information structure is required for rapid deserialisation.

+

Continuing with the above example, if a GVariant exists with the +type "a{sv}" then a type information struct will exist for +"a{sv}", "{sv}", "s", and "v". Multiple uses of the same type +will share the same type information. Additionally, all +single-digit types are stored in read-only static memory and do +not contribute to the writable memory footprint of a program using +GVariant.

+

Aside from the type information structures stored in read-only +memory, there are two forms of type information. One is used for +container types where there is a single element type: arrays and +maybe types. The other is used for container types where there +are multiple element types: tuples and dictionary entries.

+

Array type info structures are 6 * sizeof (void *), plus the +memory required to store the type string itself. This means that +on 32-bit systems, the cache entry for "a{sv}" would require 30 +bytes of memory (plus malloc overhead).

+

Tuple type info structures are 6 * sizeof (void *), plus 4 * +sizeof (void *) for each item in the tuple, plus the memory +required to store the type string itself. A 2-item tuple, for +example, would have a type information structure that consumed +writable memory in the size of 14 * sizeof (void *) (plus type +string) This means that on 32-bit systems, the cache entry for +"{sv}" would require 61 bytes of memory (plus malloc overhead).

+

This means that in total, for our "a{sv}" example, 91 bytes of +type information would be allocated.

+

The type information cache, additionally, uses a GHashTable to +store and lookup the cached items and stores a pointer to this +hash table in static storage. The hash table is freed when there +are zero items in the type cache.

+

Although these sizes may seem large it is important to remember +that a program will probably only have a very small number of +different types of values in it and that only one type information +structure is required for many different values of the same type.

+
+
+

Buffer Management Memory

+

GVariant uses an internal buffer management structure to deal +with the various different possible sources of serialised data +that it uses. The buffer is responsible for ensuring that the +correct call is made when the data is no longer in use by +GVariant. This may involve a g_free() or a g_slice_free() or +even g_mapped_file_unref().

+

One buffer management structure is used for each chunk of +serialised data. The size of the buffer management structure +is 4 * (void *). On 32-bit systems, that's 16 bytes.

+
+
+

GVariant structure

+

The size of a GVariant structure is 6 * (void *). On 32-bit +systems, that's 24 bytes.

+

GVariant structures only exist if they are explicitly created +with API calls. For example, if a GVariant is constructed out of +serialised data for the example given above (with the dictionary) +then although there are 9 individual values that comprise the +entire dictionary (two keys, two values, two variants containing +the values, two dictionary entries, plus the dictionary itself), +only 1 GVariant instance exists -- the one referring to the +dictionary.

+

If calls are made to start accessing the other values then +GVariant instances will exist for those values only for as long +as they are in use (ie: until you call g_variant_unref()). The +type information is shared. The serialised data and the buffer +management structure for that serialised data is shared by the +child.

+
+
+

Summary

+

To put the entire example together, for our dictionary mapping +strings to variants (with two entries, as given above), we are +using 91 bytes of memory for type information, 29 byes of memory +for the serialised data, 16 bytes for buffer management and 24 +bytes for the GVariant instance, or a total of 160 bytes, plus +malloc overhead. If we were to use g_variant_get_child_value() to +access the two dictionary entries, we would use an additional 48 +bytes. If we were to have other dictionaries of the same type, we +would use more memory for the serialised data and buffer +management for those dictionaries, but the type information would +be shared.

+
+
+
+

Functions

+
+

g_variant_unref ()

+
void
+g_variant_unref (GVariant *value);
+

Decreases the reference count of value +. When its reference count +drops to 0, the memory used by the variant is freed.

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant

 
+
+

Since: 2.24

+
+
+
+

g_variant_ref ()

+
GVariant *
+g_variant_ref (GVariant *value);
+

Increases the reference count of value +.

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant

 
+
+
+

Returns

+

the same value +

+
+

Since: 2.24

+
+
+
+

g_variant_ref_sink ()

+
GVariant *
+g_variant_ref_sink (GVariant *value);
+

GVariant uses a floating reference count system. All functions with +names starting with g_variant_new_ return floating +references.

+

Calling g_variant_ref_sink() on a GVariant with a floating reference +will convert the floating reference into a full reference. Calling +g_variant_ref_sink() on a non-floating GVariant results in an +additional normal reference being added.

+

In other words, if the value + is floating, then this call "assumes +ownership" of the floating reference, converting it to a normal +reference. If the value + is not floating, then this call adds a +new normal reference increasing the reference count by one.

+

All calls that result in a GVariant instance being inserted into a +container will call g_variant_ref_sink() on the instance. This means +that if the value was just created (and has only its floating +reference) then the container will assume sole ownership of the value +at that point and the caller will not need to unreference it. This +makes certain common styles of programming much easier while still +maintaining normal refcounting semantics in situations where values +are not floating.

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant

 
+
+
+

Returns

+

the same value +

+
+

Since: 2.24

+
+
+
+

g_variant_is_floating ()

+
gboolean
+g_variant_is_floating (GVariant *value);
+

Checks whether value + has a floating reference count.

+

This function should only ever be used to assert that a given variant +is or is not floating, or for debug purposes. To acquire a reference +to a variant that might be floating, always use g_variant_ref_sink() +or g_variant_take_ref().

+

See g_variant_ref_sink() for more information about floating reference +counts.

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant

 
+
+
+

Returns

+

whether value +is floating

+
+

Since: 2.26

+
+
+
+

g_variant_take_ref ()

+
GVariant *
+g_variant_take_ref (GVariant *value);
+

If value + is floating, sink it. Otherwise, do nothing.

+

Typically you want to use g_variant_ref_sink() in order to +automatically do the correct thing with respect to floating or +non-floating references, but there is one specific scenario where +this function is helpful.

+

The situation where this function is helpful is when creating an API +that allows the user to provide a callback function that returns a +GVariant. We certainly want to allow the user the flexibility to +return a non-floating reference from this callback (for the case +where the value that is being returned already exists).

+

At the same time, the style of the GVariant API makes it likely that +for newly-created GVariant instances, the user can be saved some +typing if they are allowed to return a GVariant with a floating +reference.

+

Using this function on the return value of the user's callback allows +the user to do whichever is more convenient for them. The caller +will alway receives exactly one full reference to the value: either +the one that was returned in the first place, or a floating reference +that has been converted to a full reference.

+

This function has an odd interaction when combined with +g_variant_ref_sink() running at the same time in another thread on +the same GVariant instance. If g_variant_ref_sink() runs first then +the result will be that the floating reference is converted to a hard +reference. If g_variant_take_ref() runs first then the result will +be that the floating reference is converted to a hard reference and +an additional reference on top of that one is added. It is best to +avoid this situation.

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant

 
+
+
+

Returns

+

the same value +

+
+
+
+
+

g_variant_get_type ()

+
const GVariantType *
+g_variant_get_type (GVariant *value);
+

Determines the type of value +.

+

The return value is valid for the lifetime of value + and must not +be freed.

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant

 
+
+
+

Returns

+

a GVariantType

+
+

Since: 2.24

+
+
+
+

g_variant_get_type_string ()

+
const gchar *
+g_variant_get_type_string (GVariant *value);
+

Returns the type string of value +. Unlike the result of calling +g_variant_type_peek_string(), this string is nul-terminated. This +string belongs to GVariant and must not be freed.

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant

 
+
+
+

Returns

+

the type string for the type of value +

+
+

Since: 2.24

+
+
+
+

g_variant_is_of_type ()

+
gboolean
+g_variant_is_of_type (GVariant *value,
+                      const GVariantType *type);
+

Checks if a value has a type matching the provided type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a GVariant instance

 

type

a GVariantType

 
+
+
+

Returns

+

TRUE if the type of value +matches type +

+
+

Since: 2.24

+
+
+
+

g_variant_is_container ()

+
gboolean
+g_variant_is_container (GVariant *value);
+

Checks if value + is a container.

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant instance

 
+
+
+

Returns

+

TRUE if value +is a container

+
+

Since: 2.24

+
+
+
+

g_variant_compare ()

+
gint
+g_variant_compare (gconstpointer one,
+                   gconstpointer two);
+

Compares one + and two +.

+

The types of one + and two + are gconstpointer only to allow use of +this function with GTree, GPtrArray, etc. They must each be a +GVariant.

+

Comparison is only defined for basic types (ie: booleans, numbers, +strings). For booleans, FALSE is less than TRUE. Numbers are +ordered in the usual way. Strings are in ASCII lexographical order.

+

It is a programmer error to attempt to compare container values or +two values that have types that are not exactly equal. For example, +you cannot compare a 32-bit signed integer with a 32-bit unsigned +integer. Also note that this function is not particularly +well-behaved when it comes to comparison of doubles; in particular, +the handling of incomparable values (ie: NaN) is undefined.

+

If you only require an equality comparison, g_variant_equal() is more +general.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

one

a basic-typed GVariant instance.

[type GVariant]

two

a GVariant instance of the same type.

[type GVariant]
+
+
+

Returns

+

negative value if a < b; +zero if a = b; +positive value if a > b.

+
+

Since: 2.26

+
+
+
+

g_variant_classify ()

+
GVariantClass
+g_variant_classify (GVariant *value);
+

Classifies value + according to its top-level type.

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant

 
+
+
+

Returns

+

the GVariantClass of value +

+
+

Since: 2.24

+
+
+
+

g_variant_check_format_string ()

+
gboolean
+g_variant_check_format_string (GVariant *value,
+                               const gchar *format_string,
+                               gboolean copy_only);
+

Checks if calling g_variant_get() with format_string + on value + would +be valid from a type-compatibility standpoint. format_string + is +assumed to be a valid format string (from a syntactic standpoint).

+

If copy_only + is TRUE then this function additionally checks that it +would be safe to call g_variant_unref() on value + immediately after +the call to g_variant_get() without invalidating the result. This is +only possible if deep copies are made (ie: there are no pointers to +the data inside of the soon-to-be-freed GVariant instance). If this +check fails then a g_critical() is printed and FALSE is returned.

+

This function is meant to be used by functions that wish to provide +varargs accessors to GVariant values of uncertain values (eg: +g_variant_lookup() or g_menu_model_get_item_attribute()).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

value

a GVariant

 

format_string

a valid GVariant format string

 

copy_only

TRUE to ensure the format string makes deep copies

 
+
+
+

Returns

+

TRUE if format_string +is safe to use

+
+

Since: 2.34

+
+
+
+

g_variant_get ()

+
void
+g_variant_get (GVariant *value,
+               const gchar *format_string,
+               ...);
+

Deconstructs a GVariant instance.

+

Think of this function as an analogue to scanf().

+

The arguments that are expected by this function are entirely +determined by format_string +. format_string + also restricts the +permissible types of value +. It is an error to give a value with +an incompatible type. See the section on +GVariant format strings. +Please note that the syntax of the format string is very likely to be +extended in the future.

+

format_string + determines the C types that are used for unpacking +the values and also determines if the values are copied or borrowed, +see the section on +GVariant format strings.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

value

a GVariant instance

 

format_string

a GVariant format string

 

...

arguments, as per format_string +

 
+
+

Since: 2.24

+
+
+
+

g_variant_get_va ()

+
void
+g_variant_get_va (GVariant *value,
+                  const gchar *format_string,
+                  const gchar **endptr,
+                  va_list *app);
+

This function is intended to be used by libraries based on GVariant +that want to provide g_variant_get()-like functionality to their +users.

+

The API is more general than g_variant_get() to allow a wider range +of possible uses.

+

format_string + must still point to a valid format string, but it only +need to be nul-terminated if endptr + is NULL. If endptr + is +non-NULL then it is updated to point to the first character past the +end of the format string.

+

app + is a pointer to a va_list. The arguments, according to +format_string +, are collected from this va_list and the list is left +pointing to the argument following the last.

+

These two generalisations allow mixing of multiple calls to +g_variant_new_va() and g_variant_get_va() within a single actual +varargs call by the user.

+

format_string + determines the C types that are used for unpacking +the values and also determines if the values are copied or borrowed, +see the section on +GVariant format strings.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

value

a GVariant

 

format_string

a string that is prefixed with a format string

 

endptr

location to store the end pointer, +or NULL.

[allow-none][default NULL]

app

a pointer to a va_list

 
+
+

Since: 2.24

+
+
+
+

g_variant_new ()

+
GVariant *
+g_variant_new (const gchar *format_string,
+               ...);
+

Creates a new GVariant instance.

+

Think of this function as an analogue to g_strdup_printf().

+

The type of the created instance and the arguments that are expected +by this function are determined by format_string +. See the section on +GVariant format strings. Please note that +the syntax of the format string is very likely to be extended in the +future.

+

The first character of the format string must not be '*' '?' '@' or +'r'; in essence, a new GVariant must always be constructed by this +function (and not merely passed through it unmodified).

+

Note that the arguments must be of the correct width for their types +specified in format_string +. This can be achieved by casting them. See +the GVariant varargs documentation.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
MyFlags some_flags = FLAG_ONE | FLAG_TWO;
+const gchar *some_strings[] = { "a", "b", "c", NULL };
+GVariant *new_variant;
+
+new_variant = g_variant_new ("(t^as)",
+                             /<!-- -->* This cast is required. *<!-- -->/
+                             (guint64) some_flags,
+                             some_strings);
+
+ +

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format_string

a GVariant format string

 

...

arguments, as per format_string +

 
+
+
+

Returns

+

a new floating GVariant instance

+
+

Since: 2.24

+
+
+
+

g_variant_new_va ()

+
GVariant *
+g_variant_new_va (const gchar *format_string,
+                  const gchar **endptr,
+                  va_list *app);
+

This function is intended to be used by libraries based on +GVariant that want to provide g_variant_new()-like functionality +to their users.

+

The API is more general than g_variant_new() to allow a wider range +of possible uses.

+

format_string + must still point to a valid format string, but it only +needs to be nul-terminated if endptr + is NULL. If endptr + is +non-NULL then it is updated to point to the first character past the +end of the format string.

+

app + is a pointer to a va_list. The arguments, according to +format_string +, are collected from this va_list and the list is left +pointing to the argument following the last.

+

Note that the arguments in app + must be of the correct width for their +types specified in format_string + when collected into the va_list. +See the [GVariant varargs documentation][gvariant-varargs.

+

These two generalisations allow mixing of multiple calls to +g_variant_new_va() and g_variant_get_va() within a single actual +varargs call by the user.

+

The return value will be floating if it was a newly created GVariant +instance (for example, if the format string was "(ii)"). In the case +that the format_string was '*', '?', 'r', or a format starting with +'@' then the collected GVariant pointer will be returned unmodified, +without adding any additional references.

+

In order to behave correctly in all cases it is necessary for the +calling function to g_variant_ref_sink() the return result before +returning control to the user that originally provided the pointer. +At this point, the caller will have their own full reference to the +result. This can also be done by adding the result to a container, +or by passing it to another g_variant_new() call.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

format_string

a string that is prefixed with a format string

 

endptr

location to store the end pointer, +or NULL.

[allow-none][default NULL]

app

a pointer to a va_list

 
+
+
+

Returns

+

a new, usually floating, GVariant

+
+

Since: 2.24

+
+
+
+

g_variant_new_boolean ()

+
GVariant *
+g_variant_new_boolean (gboolean value);
+

Creates a new boolean GVariant instance -- either TRUE or FALSE.

+
+

Parameters

+
+++++ + + + + + +

value

a gboolean value

 
+
+
+

Returns

+

a floating reference to a new boolean GVariant instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_byte ()

+
GVariant *
+g_variant_new_byte (guchar value);
+

Creates a new byte GVariant instance.

+
+

Parameters

+
+++++ + + + + + +

value

a guint8 value

 
+
+
+

Returns

+

a floating reference to a new byte GVariant instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_int16 ()

+
GVariant *
+g_variant_new_int16 (gint16 value);
+

Creates a new int16 GVariant instance.

+
+

Parameters

+
+++++ + + + + + +

value

a gint16 value

 
+
+
+

Returns

+

a floating reference to a new int16 GVariant instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_uint16 ()

+
GVariant *
+g_variant_new_uint16 (guint16 value);
+

Creates a new uint16 GVariant instance.

+
+

Parameters

+
+++++ + + + + + +

value

a guint16 value

 
+
+
+

Returns

+

a floating reference to a new uint16 GVariant instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_int32 ()

+
GVariant *
+g_variant_new_int32 (gint32 value);
+

Creates a new int32 GVariant instance.

+
+

Parameters

+
+++++ + + + + + +

value

a gint32 value

 
+
+
+

Returns

+

a floating reference to a new int32 GVariant instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_uint32 ()

+
GVariant *
+g_variant_new_uint32 (guint32 value);
+

Creates a new uint32 GVariant instance.

+
+

Parameters

+
+++++ + + + + + +

value

a guint32 value

 
+
+
+

Returns

+

a floating reference to a new uint32 GVariant instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_int64 ()

+
GVariant *
+g_variant_new_int64 (gint64 value);
+

Creates a new int64 GVariant instance.

+
+

Parameters

+
+++++ + + + + + +

value

a gint64 value

 
+
+
+

Returns

+

a floating reference to a new int64 GVariant instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_uint64 ()

+
GVariant *
+g_variant_new_uint64 (guint64 value);
+

Creates a new uint64 GVariant instance.

+
+

Parameters

+
+++++ + + + + + +

value

a guint64 value

 
+
+
+

Returns

+

a floating reference to a new uint64 GVariant instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_handle ()

+
GVariant *
+g_variant_new_handle (gint32 value);
+

Creates a new handle GVariant instance.

+

By convention, handles are indexes into an array of file descriptors +that are sent alongside a D-Bus message. If you're not interacting +with D-Bus, you probably don't need them.

+
+

Parameters

+
+++++ + + + + + +

value

a gint32 value

 
+
+
+

Returns

+

a floating reference to a new handle GVariant instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_double ()

+
GVariant *
+g_variant_new_double (gdouble value);
+

Creates a new double GVariant instance.

+
+

Parameters

+
+++++ + + + + + +

value

a gdouble floating point value

 
+
+
+

Returns

+

a floating reference to a new double GVariant instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_string ()

+
GVariant *
+g_variant_new_string (const gchar *string);
+

Creates a string GVariant with the contents of string +.

+

string + must be valid UTF-8, and must not be NULL. To encode +potentially-NULL strings, use g_variant_new() with ms as the +format string.

+
+

Parameters

+
+++++ + + + + + +

string

a normal UTF-8 nul-terminated string

 
+
+
+

Returns

+

a floating reference to a new string GVariant instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_take_string ()

+
GVariant *
+g_variant_new_take_string (gchar *string);
+

Creates a string GVariant with the contents of string +.

+

string + must be valid UTF-8, and must not be NULL. To encode +potentially-NULL strings, use this with g_variant_new_maybe().

+

This function consumes string +. g_free() will be called on string + +when it is no longer required.

+

You must not modify or access string + in any other way after passing +it to this function. It is even possible that string + is immediately +freed.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

string

a normal UTF-8 nul-terminated string

 
+
+
+

Returns

+

a floating reference to a new string +GVariant instance.

+

[transfer none]

+
+

Since: 2.38

+
+
+
+

g_variant_new_printf ()

+
GVariant *
+g_variant_new_printf (const gchar *format_string,
+                      ...);
+

Creates a string-type GVariant using printf formatting.

+

This is similar to calling g_strdup_printf() and then +g_variant_new_string() but it saves a temporary variable and an +unnecessary copy.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format_string

a printf-style format string

 

...

arguments for format_string +

 
+
+
+

Returns

+

a floating reference to a new string +GVariant instance.

+

[transfer none]

+
+

Since: 2.38

+
+
+
+

g_variant_new_object_path ()

+
GVariant *
+g_variant_new_object_path (const gchar *object_path);
+

Creates a D-Bus object path GVariant with the contents of string +. +string + must be a valid D-Bus object path. Use +g_variant_is_object_path() if you're not sure.

+
+

Parameters

+
+++++ + + + + + +

object_path

a normal C nul-terminated string

 
+
+
+

Returns

+

a floating reference to a new object path GVariant instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_is_object_path ()

+
gboolean
+g_variant_is_object_path (const gchar *string);
+

Determines if a given string is a valid D-Bus object path. You +should ensure that a string is a valid D-Bus object path before +passing it to g_variant_new_object_path().

+

A valid object path starts with '/' followed by zero or more +sequences of characters separated by '/' characters. Each sequence +must contain only the characters "A-Z[0-9]_". No sequence +(including the one following the final '/' character) may be empty.

+
+

Parameters

+
+++++ + + + + + +

string

a normal C nul-terminated string

 
+
+
+

Returns

+

TRUE if string +is a D-Bus object path

+
+

Since: 2.24

+
+
+
+

g_variant_new_signature ()

+
GVariant *
+g_variant_new_signature (const gchar *signature);
+

Creates a D-Bus type signature GVariant with the contents of +string +. string + must be a valid D-Bus type signature. Use +g_variant_is_signature() if you're not sure.

+
+

Parameters

+
+++++ + + + + + +

signature

a normal C nul-terminated string

 
+
+
+

Returns

+

a floating reference to a new signature GVariant instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_is_signature ()

+
gboolean
+g_variant_is_signature (const gchar *string);
+

Determines if a given string is a valid D-Bus type signature. You +should ensure that a string is a valid D-Bus type signature before +passing it to g_variant_new_signature().

+

D-Bus type signatures consist of zero or more definite GVariantType +strings in sequence.

+
+

Parameters

+
+++++ + + + + + +

string

a normal C nul-terminated string

 
+
+
+

Returns

+

TRUE if string +is a D-Bus type signature

+
+

Since: 2.24

+
+
+
+

g_variant_new_variant ()

+
GVariant *
+g_variant_new_variant (GVariant *value);
+

Boxes value +. The result is a GVariant instance representing a +variant containing the original value.

+

If child + is a floating reference (see g_variant_ref_sink()), the new +instance takes ownership of child +.

+

[constructor]

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant instance

 
+
+
+

Returns

+

a floating reference to a new variant GVariant instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_strv ()

+
GVariant *
+g_variant_new_strv (const gchar * const *strv,
+                    gssize length);
+

Constructs an array of strings GVariant from the given array of +strings.

+

If length + is -1 then strv + is NULL-terminated.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

strv

an array of strings.

[array length=length][element-type utf8]

length

the length of strv +, or -1

 
+
+
+

Returns

+

a new floating GVariant instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_objv ()

+
GVariant *
+g_variant_new_objv (const gchar * const *strv,
+                    gssize length);
+

Constructs an array of object paths GVariant from the given array of +strings.

+

Each string must be a valid GVariant object path; see +g_variant_is_object_path().

+

If length + is -1 then strv + is NULL-terminated.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

strv

an array of strings.

[array length=length][element-type utf8]

length

the length of strv +, or -1

 
+
+
+

Returns

+

a new floating GVariant instance.

+

[transfer none]

+
+

Since: 2.30

+
+
+
+

g_variant_new_bytestring ()

+
GVariant *
+g_variant_new_bytestring (const gchar *string);
+

Creates an array-of-bytes GVariant with the contents of string +. +This function is just like g_variant_new_string() except that the +string need not be valid UTF-8.

+

The nul terminator character at the end of the string is stored in +the array.

+
+

Parameters

+
+++++ + + + + + +

string

a normal +nul-terminated string in no particular encoding.

[array zero-terminated=1][element-type guint8]
+
+
+

Returns

+

a floating reference to a new bytestring GVariant instance.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_variant_new_bytestring_array ()

+
GVariant *
+g_variant_new_bytestring_array (const gchar * const *strv,
+                                gssize length);
+

Constructs an array of bytestring GVariant from the given array of +strings.

+

If length + is -1 then strv + is NULL-terminated.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

strv

an array of strings.

[array length=length]

length

the length of strv +, or -1

 
+
+
+

Returns

+

a new floating GVariant instance.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_variant_get_boolean ()

+
gboolean
+g_variant_get_boolean (GVariant *value);
+

Returns the boolean value of value +.

+

It is an error to call this function with a value + of any type +other than G_VARIANT_TYPE_BOOLEAN.

+
+

Parameters

+
+++++ + + + + + +

value

a boolean GVariant instance

 
+
+
+

Returns

+

TRUE or FALSE

+
+

Since: 2.24

+
+
+
+

g_variant_get_byte ()

+
guchar
+g_variant_get_byte (GVariant *value);
+

Returns the byte value of value +.

+

It is an error to call this function with a value + of any type +other than G_VARIANT_TYPE_BYTE.

+
+

Parameters

+
+++++ + + + + + +

value

a byte GVariant instance

 
+
+
+

Returns

+

a guchar

+
+

Since: 2.24

+
+
+
+

g_variant_get_int16 ()

+
gint16
+g_variant_get_int16 (GVariant *value);
+

Returns the 16-bit signed integer value of value +.

+

It is an error to call this function with a value + of any type +other than G_VARIANT_TYPE_INT16.

+
+

Parameters

+
+++++ + + + + + +

value

a int16 GVariant instance

 
+
+
+

Returns

+

a gint16

+
+

Since: 2.24

+
+
+
+

g_variant_get_uint16 ()

+
guint16
+g_variant_get_uint16 (GVariant *value);
+

Returns the 16-bit unsigned integer value of value +.

+

It is an error to call this function with a value + of any type +other than G_VARIANT_TYPE_UINT16.

+
+

Parameters

+
+++++ + + + + + +

value

a uint16 GVariant instance

 
+
+
+

Returns

+

a guint16

+
+

Since: 2.24

+
+
+
+

g_variant_get_int32 ()

+
gint32
+g_variant_get_int32 (GVariant *value);
+

Returns the 32-bit signed integer value of value +.

+

It is an error to call this function with a value + of any type +other than G_VARIANT_TYPE_INT32.

+
+

Parameters

+
+++++ + + + + + +

value

a int32 GVariant instance

 
+
+
+

Returns

+

a gint32

+
+

Since: 2.24

+
+
+
+

g_variant_get_uint32 ()

+
guint32
+g_variant_get_uint32 (GVariant *value);
+

Returns the 32-bit unsigned integer value of value +.

+

It is an error to call this function with a value + of any type +other than G_VARIANT_TYPE_UINT32.

+
+

Parameters

+
+++++ + + + + + +

value

a uint32 GVariant instance

 
+
+
+

Returns

+

a guint32

+
+

Since: 2.24

+
+
+
+

g_variant_get_int64 ()

+
gint64
+g_variant_get_int64 (GVariant *value);
+

Returns the 64-bit signed integer value of value +.

+

It is an error to call this function with a value + of any type +other than G_VARIANT_TYPE_INT64.

+
+

Parameters

+
+++++ + + + + + +

value

a int64 GVariant instance

 
+
+
+

Returns

+

a gint64

+
+

Since: 2.24

+
+
+
+

g_variant_get_uint64 ()

+
guint64
+g_variant_get_uint64 (GVariant *value);
+

Returns the 64-bit unsigned integer value of value +.

+

It is an error to call this function with a value + of any type +other than G_VARIANT_TYPE_UINT64.

+
+

Parameters

+
+++++ + + + + + +

value

a uint64 GVariant instance

 
+
+
+

Returns

+

a guint64

+
+

Since: 2.24

+
+
+
+

g_variant_get_handle ()

+
gint32
+g_variant_get_handle (GVariant *value);
+

Returns the 32-bit signed integer value of value +.

+

It is an error to call this function with a value + of any type other +than G_VARIANT_TYPE_HANDLE.

+

By convention, handles are indexes into an array of file descriptors +that are sent alongside a D-Bus message. If you're not interacting +with D-Bus, you probably don't need them.

+
+

Parameters

+
+++++ + + + + + +

value

a handle GVariant instance

 
+
+
+

Returns

+

a gint32

+
+

Since: 2.24

+
+
+
+

g_variant_get_double ()

+
gdouble
+g_variant_get_double (GVariant *value);
+

Returns the double precision floating point value of value +.

+

It is an error to call this function with a value + of any type +other than G_VARIANT_TYPE_DOUBLE.

+
+

Parameters

+
+++++ + + + + + +

value

a double GVariant instance

 
+
+
+

Returns

+

a gdouble

+
+

Since: 2.24

+
+
+
+

g_variant_get_string ()

+
const gchar *
+g_variant_get_string (GVariant *value,
+                      gsize *length);
+

Returns the string value of a GVariant instance with a string +type. This includes the types G_VARIANT_TYPE_STRING, +G_VARIANT_TYPE_OBJECT_PATH and G_VARIANT_TYPE_SIGNATURE.

+

The string will always be UTF-8 encoded, and will never be NULL.

+

If length + is non-NULL then the length of the string (in bytes) is +returned there. For trusted values, this information is already +known. For untrusted values, a strlen() will be performed.

+

It is an error to call this function with a value + of any type +other than those three.

+

The return value remains valid as long as value + exists.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a string GVariant instance

 

length

a pointer to a gsize, +to store the length.

[allow-none][default 0][out]
+
+
+

Returns

+

the constant string, UTF-8 encoded.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_dup_string ()

+
gchar *
+g_variant_dup_string (GVariant *value,
+                      gsize *length);
+

Similar to g_variant_get_string() except that instead of returning +a constant string, the string is duplicated.

+

The string will always be UTF-8 encoded.

+

The return value must be freed using g_free().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a string GVariant instance

 

length

a pointer to a gsize, to store the length.

[out]
+
+
+

Returns

+

a newly allocated string, UTF-8 encoded.

+

[transfer full]

+
+

Since: 2.24

+
+
+
+

g_variant_get_variant ()

+
GVariant *
+g_variant_get_variant (GVariant *value);
+

Unboxes value +. The result is the GVariant instance that was +contained in value +.

+
+

Parameters

+
+++++ + + + + + +

value

a variant GVariant instance

 
+
+
+

Returns

+

the item contained in the variant.

+

[transfer full]

+
+

Since: 2.24

+
+
+
+

g_variant_get_strv ()

+
const gchar **
+g_variant_get_strv (GVariant *value,
+                    gsize *length);
+

Gets the contents of an array of strings GVariant. This call +makes a shallow copy; the return result should be released with +g_free(), but the individual strings must not be modified.

+

If length + is non-NULL then the number of elements in the result +is stored there. In any case, the resulting array will be +NULL-terminated.

+

For an empty array, length + will be set to 0 and a pointer to a +NULL pointer will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

an array of strings GVariant

 

length

the length of the result, or NULL.

[out][allow-none]
+
+
+

Returns

+

an array of constant strings.

+

[array length=length zero-terminated=1][transfer container]

+
+

Since: 2.24

+
+
+
+

g_variant_dup_strv ()

+
gchar **
+g_variant_dup_strv (GVariant *value,
+                    gsize *length);
+

Gets the contents of an array of strings GVariant. This call +makes a deep copy; the return result should be released with +g_strfreev().

+

If length + is non-NULL then the number of elements in the result +is stored there. In any case, the resulting array will be +NULL-terminated.

+

For an empty array, length + will be set to 0 and a pointer to a +NULL pointer will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

an array of strings GVariant

 

length

the length of the result, or NULL.

[out][allow-none]
+
+
+

Returns

+

an array of strings.

+

[array length=length zero-terminated=1][transfer full]

+
+

Since: 2.24

+
+
+
+

g_variant_get_objv ()

+
const gchar **
+g_variant_get_objv (GVariant *value,
+                    gsize *length);
+

Gets the contents of an array of object paths GVariant. This call +makes a shallow copy; the return result should be released with +g_free(), but the individual strings must not be modified.

+

If length + is non-NULL then the number of elements in the result +is stored there. In any case, the resulting array will be +NULL-terminated.

+

For an empty array, length + will be set to 0 and a pointer to a +NULL pointer will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

an array of object paths GVariant

 

length

the length of the result, or NULL.

[out][allow-none]
+
+
+

Returns

+

an array of constant strings.

+

[array length=length zero-terminated=1][transfer container]

+
+

Since: 2.30

+
+
+
+

g_variant_dup_objv ()

+
gchar **
+g_variant_dup_objv (GVariant *value,
+                    gsize *length);
+

Gets the contents of an array of object paths GVariant. This call +makes a deep copy; the return result should be released with +g_strfreev().

+

If length + is non-NULL then the number of elements in the result +is stored there. In any case, the resulting array will be +NULL-terminated.

+

For an empty array, length + will be set to 0 and a pointer to a +NULL pointer will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

an array of object paths GVariant

 

length

the length of the result, or NULL.

[out][allow-none]
+
+
+

Returns

+

an array of strings.

+

[array length=length zero-terminated=1][transfer full]

+
+

Since: 2.30

+
+
+
+

g_variant_get_bytestring ()

+
const gchar *
+g_variant_get_bytestring (GVariant *value);
+

Returns the string value of a GVariant instance with an +array-of-bytes type. The string has no particular encoding.

+

If the array does not end with a nul terminator character, the empty +string is returned. For this reason, you can always trust that a +non-NULL nul-terminated string will be returned by this function.

+

If the array contains a nul terminator character somewhere other than +the last byte then the returned string is the string, up to the first +such nul character.

+

It is an error to call this function with a value + that is not an +array of bytes.

+

The return value remains valid as long as value + exists.

+
+

Parameters

+
+++++ + + + + + +

value

an array-of-bytes GVariant instance

 
+
+
+

Returns

+

the constant string.

+

[transfer none][array zero-terminated=1][element-type guint8]

+
+

Since: 2.26

+
+
+
+

g_variant_dup_bytestring ()

+
gchar *
+g_variant_dup_bytestring (GVariant *value,
+                          gsize *length);
+

Similar to g_variant_get_bytestring() except that instead of +returning a constant string, the string is duplicated.

+

The return value must be freed using g_free().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

an array-of-bytes GVariant instance

 

length

a pointer to a gsize, to store +the length (not including the nul terminator).

[out][allow-none][default NULL]
+
+
+

Returns

+

a newly allocated string.

+

[transfer full][array zero-terminated=1 length=length][element-type guint8]

+
+

Since: 2.26

+
+
+
+

g_variant_get_bytestring_array ()

+
const gchar **
+g_variant_get_bytestring_array (GVariant *value,
+                                gsize *length);
+

Gets the contents of an array of array of bytes GVariant. This call +makes a shallow copy; the return result should be released with +g_free(), but the individual strings must not be modified.

+

If length + is non-NULL then the number of elements in the result is +stored there. In any case, the resulting array will be +NULL-terminated.

+

For an empty array, length + will be set to 0 and a pointer to a +NULL pointer will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

an array of array of bytes GVariant ('aay')

 

length

the length of the result, or NULL.

[out][allow-none]
+
+
+

Returns

+

an array of constant strings.

+

[array length=length][transfer container]

+
+

Since: 2.26

+
+
+
+

g_variant_dup_bytestring_array ()

+
gchar **
+g_variant_dup_bytestring_array (GVariant *value,
+                                gsize *length);
+

Gets the contents of an array of array of bytes GVariant. This call +makes a deep copy; the return result should be released with +g_strfreev().

+

If length + is non-NULL then the number of elements in the result is +stored there. In any case, the resulting array will be +NULL-terminated.

+

For an empty array, length + will be set to 0 and a pointer to a +NULL pointer will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

an array of array of bytes GVariant ('aay')

 

length

the length of the result, or NULL.

[out][allow-none]
+
+
+

Returns

+

an array of strings.

+

[array length=length][transfer full]

+
+

Since: 2.26

+
+
+
+

g_variant_new_maybe ()

+
GVariant *
+g_variant_new_maybe (const GVariantType *child_type,
+                     GVariant *child);
+

Depending on if child + is NULL, either wraps child + inside of a +maybe container or creates a Nothing instance for the given type +.

+

At least one of child_type + and child + must be non-NULL. +If child_type + is non-NULL then it must be a definite type. +If they are both non-NULL then child_type + must be the type +of child +.

+

If child + is a floating reference (see g_variant_ref_sink()), the new +instance takes ownership of child +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

child_type

the GVariantType of the child, or NULL.

[allow-none]

child

the child value, or NULL.

[allow-none]
+
+
+

Returns

+

a floating reference to a new GVariant maybe instance.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_array ()

+
GVariant *
+g_variant_new_array (const GVariantType *child_type,
+                     GVariant * const *children,
+                     gsize n_children);
+

Creates a new GVariant array from children +.

+

child_type + must be non-NULL if n_children + is zero. Otherwise, the +child type is determined by inspecting the first element of the +children + array. If child_type + is non-NULL then it must be a +definite type.

+

The items of the array are taken from the children + array. No entry +in the children + array may be NULL.

+

All items in the array must have the same type, which must be the +same as child_type +, if given.

+

If the children + are floating references (see g_variant_ref_sink()), the +new instance takes ownership of them as if via g_variant_ref_sink().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

child_type

the element type of the new array.

[allow-none]

children

an array of +GVariant pointers, the children.

[allow-none][array length=n_children]

n_children

the length of children +

 
+
+
+

Returns

+

a floating reference to a new GVariant array.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_tuple ()

+
GVariant *
+g_variant_new_tuple (GVariant * const *children,
+                     gsize n_children);
+

Creates a new tuple GVariant out of the items in children +. The +type is determined from the types of children +. No entry in the +children + array may be NULL.

+

If n_children + is 0 then the unit tuple is constructed.

+

If the children + are floating references (see g_variant_ref_sink()), the +new instance takes ownership of them as if via g_variant_ref_sink().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

children

the items to make the tuple out of.

[array length=n_children]

n_children

the length of children +

 
+
+
+

Returns

+

a floating reference to a new GVariant tuple.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_dict_entry ()

+
GVariant *
+g_variant_new_dict_entry (GVariant *key,
+                          GVariant *value);
+

Creates a new dictionary entry GVariant. key + and value + must be +non-NULL. key + must be a value of a basic type (ie: not a container).

+

If the key + or value + are floating references (see g_variant_ref_sink()), +the new instance takes ownership of them as if via g_variant_ref_sink().

+

[constructor]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

key

a basic GVariant, the key

 

value

a GVariant, the value

 
+
+
+

Returns

+

a floating reference to a new dictionary entry GVariant.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_fixed_array ()

+
GVariant *
+g_variant_new_fixed_array (const GVariantType *element_type,
+                           gconstpointer elements,
+                           gsize n_elements,
+                           gsize element_size);
+

Provides access to the serialised data for an array of fixed-sized +items.

+

value + must be an array with fixed-sized elements. Numeric types are +fixed-size as are tuples containing only other fixed-sized types.

+

element_size + must be the size of a single element in the array. +For example, if calling this function for an array of 32-bit integers, +you might say sizeof(gint32). This value isn't used except for the purpose +of a double-check that the form of the serialised data matches the caller's +expectation.

+

n_elements +, which must be non-NULL is set equal to the number of +items in the array.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

element_type

the GVariantType of each element

 

elements

a pointer to the fixed array of contiguous elements

 

n_elements

the number of elements

 

element_size

the size of each element

 
+
+
+

Returns

+

a floating reference to a new array GVariant instance.

+

[transfer none]

+
+

Since: 2.32

+
+
+
+

g_variant_get_maybe ()

+
GVariant *
+g_variant_get_maybe (GVariant *value);
+

Given a maybe-typed GVariant instance, extract its value. If the +value is Nothing, then this function returns NULL.

+
+

Parameters

+
+++++ + + + + + +

value

a maybe-typed value

 
+
+
+

Returns

+

the contents of value +, or NULL.

+

[allow-none][transfer full]

+
+

Since: 2.24

+
+
+
+

g_variant_n_children ()

+
gsize
+g_variant_n_children (GVariant *value);
+

Determines the number of children in a container GVariant instance. +This includes variants, maybes, arrays, tuples and dictionary +entries. It is an error to call this function on any other type of +GVariant.

+

For variants, the return value is always 1. For values with maybe +types, it is always zero or one. For arrays, it is the length of the +array. For tuples it is the number of tuple items (which depends +only on the type). For dictionary entries, it is always 2

+

This function is O(1).

+
+

Parameters

+
+++++ + + + + + +

value

a container GVariant

 
+
+
+

Returns

+

the number of children in the container

+
+

Since: 2.24

+
+
+
+

g_variant_get_child_value ()

+
GVariant *
+g_variant_get_child_value (GVariant *value,
+                           gsize index_);
+

Reads a child item out of a container GVariant instance. This +includes variants, maybes, arrays, tuples and dictionary +entries. It is an error to call this function on any other type of +GVariant.

+

It is an error if index_ + is greater than the number of child items +in the container. See g_variant_n_children().

+

The returned value is never floating. You should free it with +g_variant_unref() when you're done with it.

+

This function is O(1).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a container GVariant

 

index_

the index of the child to fetch

 
+
+
+

Returns

+

the child at the specified index.

+

[transfer full]

+
+

Since: 2.24

+
+
+
+

g_variant_get_child ()

+
void
+g_variant_get_child (GVariant *value,
+                     gsize index_,
+                     const gchar *format_string,
+                     ...);
+

Reads a child item out of a container GVariant instance and +deconstructs it according to format_string +. This call is +essentially a combination of g_variant_get_child_value() and +g_variant_get().

+

format_string + determines the C types that are used for unpacking +the values and also determines if the values are copied or borrowed, +see the section on +GVariant format strings.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

value

a container GVariant

 

index_

the index of the child to deconstruct

 

format_string

a GVariant format string

 

...

arguments, as per format_string +

 
+
+

Since: 2.24

+
+
+
+

g_variant_lookup_value ()

+
GVariant *
+g_variant_lookup_value (GVariant *dictionary,
+                        const gchar *key,
+                        const GVariantType *expected_type);
+

Looks up a value in a dictionary GVariant.

+

This function works with dictionaries of the type a{s*} (and equally +well with type a{o*}, but we only further discuss the string case +for sake of clarity).

+

In the event that dictionary + has the type a{sv}, the expected_type + +string specifies what type of value is expected to be inside of the +variant. If the value inside the variant has a different type then +NULL is returned. In the event that dictionary + has a value type other +than v then expected_type + must directly match the key type and it is +used to unpack the value directly or an error occurs.

+

In either case, if key + is not found in dictionary +, NULL is returned.

+

If the key is found and the value has the correct type, it is +returned. If expected_type + was specified then any non-NULL return +value will have this type.

+

This function is currently implemented with a linear scan. If you +plan to do many lookups then GVariantDict may be more efficient.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dictionary

a dictionary GVariant

 

key

the key to lookup in the dictionary

 

expected_type

a GVariantType, or NULL.

[allow-none]
+
+
+

Returns

+

the value of the dictionary key, or NULL.

+

[transfer full]

+
+

Since: 2.28

+
+
+
+

g_variant_lookup ()

+
gboolean
+g_variant_lookup (GVariant *dictionary,
+                  const gchar *key,
+                  const gchar *format_string,
+                  ...);
+

Looks up a value in a dictionary GVariant.

+

This function is a wrapper around g_variant_lookup_value() and +g_variant_get(). In the case that NULL would have been returned, +this function returns FALSE. Otherwise, it unpacks the returned +value and returns TRUE.

+

format_string + determines the C types that are used for unpacking +the values and also determines if the values are copied or borrowed, +see the section on +GVariant format strings.

+

This function is currently implemented with a linear scan. If you +plan to do many lookups then GVariantDict may be more efficient.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

dictionary

a dictionary GVariant

 

key

the key to lookup in the dictionary

 

format_string

a GVariant format string

 

...

the arguments to unpack the value into

 
+
+
+

Returns

+

TRUE if a value was unpacked

+
+

Since: 2.28

+
+
+
+

g_variant_get_fixed_array ()

+
gconstpointer
+g_variant_get_fixed_array (GVariant *value,
+                           gsize *n_elements,
+                           gsize element_size);
+

Provides access to the serialised data for an array of fixed-sized +items.

+

value + must be an array with fixed-sized elements. Numeric types are +fixed-size, as are tuples containing only other fixed-sized types.

+

element_size + must be the size of a single element in the array, +as given by the section on +serialized data memory.

+

In particular, arrays of these fixed-sized types can be interpreted +as an array of the given C type, with element_size + set to the size +the appropriate type:

+ +

For example, if calling this function for an array of 32-bit integers, +you might say sizeof(gint32). This value isn't used except for the purpose +of a double-check that the form of the serialised data matches the caller's +expectation.

+

n_elements +, which must be non-NULL is set equal to the number of +items in the array.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

value

a GVariant array with fixed-sized elements

 

n_elements

a pointer to the location to store the number of items.

[out]

element_size

the size of each element

 
+
+
+

Returns

+

a pointer to +the fixed array.

+

[array length=n_elements][transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_get_size ()

+
gsize
+g_variant_get_size (GVariant *value);
+

Determines the number of bytes that would be required to store value + +with g_variant_store().

+

If value + has a fixed-sized type then this function always returned +that fixed size.

+

In the case that value + is already in serialised form or the size has +already been calculated (ie: this function has been called before) +then this function is O(1). Otherwise, the size is calculated, an +operation which is approximately O(n) in the number of values +involved.

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant instance

 
+
+
+

Returns

+

the serialised size of value +

+
+

Since: 2.24

+
+
+
+

g_variant_get_data ()

+
gconstpointer
+g_variant_get_data (GVariant *value);
+

Returns a pointer to the serialised form of a GVariant instance. +The returned data may not be in fully-normalised form if read from an +untrusted source. The returned data must not be freed; it remains +valid for as long as value + exists.

+

If value + is a fixed-sized value that was deserialised from a +corrupted serialised container then NULL may be returned. In this +case, the proper thing to do is typically to use the appropriate +number of nul bytes in place of value +. If value + is not fixed-sized +then NULL is never returned.

+

In the case that value + is already in serialised form, this function +is O(1). If the value is not already in serialised form, +serialisation occurs implicitly and is approximately O(n) in the size +of the result.

+

To deserialise the data returned by this function, in addition to the +serialised data, you must know the type of the GVariant, and (if the +machine might be different) the endianness of the machine that stored +it. As a result, file formats or network messages that incorporate +serialised GVariants must include this information either +implicitly (for instance "the file always contains a +G_VARIANT_TYPE_VARIANT and it is always in little-endian order") or +explicitly (by storing the type and/or endianness in addition to the +serialised data).

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant instance

 
+
+
+

Returns

+

the serialised form of value +, or NULL.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_get_data_as_bytes ()

+
GBytes *
+g_variant_get_data_as_bytes (GVariant *value);
+

Returns a pointer to the serialised form of a GVariant instance. +The semantics of this function are exactly the same as +g_variant_get_data(), except that the returned GBytes holds +a reference to the variant data.

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant

 
+
+
+

Returns

+

A new GBytes representing the variant data.

+

[transfer full]

+
+

Since: 2.36

+
+
+
+

g_variant_store ()

+
void
+g_variant_store (GVariant *value,
+                 gpointer data);
+

Stores the serialised form of value + at data +. data + should be +large enough. See g_variant_get_size().

+

The stored data is in machine native byte order but may not be in +fully-normalised form if read from an untrusted source. See +g_variant_get_normal_form() for a solution.

+

As with g_variant_get_data(), to be able to deserialise the +serialised variant successfully, its type and (if the destination +machine might be different) its endianness must also be available.

+

This function is approximately O(n) in the size of data +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

the GVariant to store

 

data

the location to store the serialised data at.

[not nullable]
+
+

Since: 2.24

+
+
+
+

g_variant_new_from_data ()

+
GVariant *
+g_variant_new_from_data (const GVariantType *type,
+                         gconstpointer data,
+                         gsize size,
+                         gboolean trusted,
+                         GDestroyNotify notify,
+                         gpointer user_data);
+

Creates a new GVariant instance from serialised data.

+

type + is the type of GVariant instance that will be constructed. +The interpretation of data + depends on knowing the type.

+

data + is not modified by this function and must remain valid with an +unchanging value until such a time as notify + is called with +user_data +. If the contents of data + change before that time then +the result is undefined.

+

If data + is trusted to be serialised data in normal form then +trusted + should be TRUE. This applies to serialised data created +within this process or read from a trusted location on the disk (such +as a file installed in /usr/lib alongside your application). You +should set trusted to FALSE if data + is read from the network, a +file in the user's home directory, etc.

+

If data + was not stored in this machine's native endianness, any multi-byte +numeric values in the returned variant will also be in non-native +endianness. g_variant_byteswap() can be used to recover the original values.

+

notify + will be called with user_data + when data + is no longer +needed. The exact time of this call is unspecified and might even be +before this function returns.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

type

a definite GVariantType

 

data

the serialised data.

[array length=size][element-type guint8]

size

the size of data +

 

trusted

TRUE if data +is definitely in normal form

 

notify

function to call when data +is no longer needed.

[scope async]

user_data

data for notify +

 
+
+
+

Returns

+

a new floating GVariant of type type +.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_new_from_bytes ()

+
GVariant *
+g_variant_new_from_bytes (const GVariantType *type,
+                          GBytes *bytes,
+                          gboolean trusted);
+

Constructs a new serialised-mode GVariant instance. This is the +inner interface for creation of new serialised values that gets +called from various functions in gvariant.c.

+

A reference is taken on bytes +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

type

a GVariantType

 

bytes

a GBytes

 

trusted

if the contents of bytes +are trusted

 
+
+
+

Returns

+

a new GVariant with a floating reference.

+

[transfer none]

+
+

Since: 2.36

+
+
+
+

g_variant_byteswap ()

+
GVariant *
+g_variant_byteswap (GVariant *value);
+

Performs a byteswapping operation on the contents of value +. The +result is that all multi-byte numeric data contained in value + is +byteswapped. That includes 16, 32, and 64bit signed and unsigned +integers as well as file handles and double precision floating point +values.

+

This function is an identity mapping on any value that does not +contain multi-byte numeric data. That include strings, booleans, +bytes and containers containing only these things (recursively).

+

The returned value is always in normal form and is marked as trusted.

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant

 
+
+
+

Returns

+

the byteswapped form of value +.

+

[transfer full]

+
+

Since: 2.24

+
+
+
+

g_variant_get_normal_form ()

+
GVariant *
+g_variant_get_normal_form (GVariant *value);
+

Gets a GVariant instance that has the same value as value + and is +trusted to be in normal form.

+

If value + is already trusted to be in normal form then a new +reference to value + is returned.

+

If value + is not already trusted, then it is scanned to check if it +is in normal form. If it is found to be in normal form then it is +marked as trusted and a new reference to it is returned.

+

If value + is found not to be in normal form then a new trusted +GVariant is created with the same value as value +.

+

It makes sense to call this function if you've received GVariant +data from untrusted sources and you want to ensure your serialised +output is definitely in normal form.

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant

 
+
+
+

Returns

+

a trusted GVariant.

+

[transfer full]

+
+

Since: 2.24

+
+
+
+

g_variant_is_normal_form ()

+
gboolean
+g_variant_is_normal_form (GVariant *value);
+

Checks if value + is in normal form.

+

The main reason to do this is to detect if a given chunk of +serialised data is in normal form: load the data into a GVariant +using g_variant_new_from_data() and then use this function to +check.

+

If value + is found to be in normal form then it will be marked as +being trusted. If the value was already marked as being trusted then +this function will immediately return TRUE.

+
+

Parameters

+
+++++ + + + + + +

value

a GVariant instance

 
+
+
+

Returns

+

TRUE if value +is in normal form

+
+

Since: 2.24

+
+
+
+

g_variant_hash ()

+
guint
+g_variant_hash (gconstpointer value);
+

Generates a hash value for a GVariant instance.

+

The output of this function is guaranteed to be the same for a given +value only per-process. It may change between different processor +architectures or even different versions of GLib. Do not use this +function as a basis for building protocols or file formats.

+

The type of value + is gconstpointer only to allow use of this +function with GHashTable. value + must be a GVariant.

+
+

Parameters

+
+++++ + + + + + +

value

a basic GVariant value as a gconstpointer.

[type GVariant]
+
+
+

Returns

+

a hash value corresponding to value +

+
+

Since: 2.24

+
+
+
+

g_variant_equal ()

+
gboolean
+g_variant_equal (gconstpointer one,
+                 gconstpointer two);
+

Checks if one + and two + have the same type and value.

+

The types of one + and two + are gconstpointer only to allow use of +this function with GHashTable. They must each be a GVariant.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

one

a GVariant instance.

[type GVariant]

two

a GVariant instance.

[type GVariant]
+
+
+

Returns

+

TRUE if one +and two +are equal

+
+

Since: 2.24

+
+
+
+

g_variant_print ()

+
gchar *
+g_variant_print (GVariant *value,
+                 gboolean type_annotate);
+

Pretty-prints value + in the format understood by g_variant_parse().

+

The format is described here.

+

If type_annotate + is TRUE, then type information is included in +the output.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a GVariant

 

type_annotate

TRUE if type information should be included in +the output

 
+
+
+

Returns

+

a newly-allocated string holding the result.

+

[transfer full]

+
+

Since: 2.24

+
+
+
+

g_variant_print_string ()

+
GString *
+g_variant_print_string (GVariant *value,
+                        GString *string,
+                        gboolean type_annotate);
+

Behaves as g_variant_print(), but operates on a GString.

+

If string + is non-NULL then it is appended to and returned. Else, +a new empty GString is allocated and it is returned.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

value

a GVariant

 

string

a GString, or NULL.

[allow-none][default NULL]

type_annotate

TRUE if type information should be included in +the output

 
+
+
+

Returns

+

a GString containing the string

+
+

Since: 2.24

+
+
+
+

g_variant_iter_copy ()

+
GVariantIter *
+g_variant_iter_copy (GVariantIter *iter);
+

Creates a new heap-allocated GVariantIter to iterate over the +container that was being iterated over by iter +. Iteration begins on +the new iterator from the current position of the old iterator but +the two copies are independent past that point.

+

Use g_variant_iter_free() to free the return value when you no longer +need it.

+

A reference is taken to the container that iter + is iterating over +and will be releated only when g_variant_iter_free() is called.

+
+

Parameters

+
+++++ + + + + + +

iter

a GVariantIter

 
+
+
+

Returns

+

a new heap-allocated GVariantIter.

+

[transfer full]

+
+

Since: 2.24

+
+
+
+

g_variant_iter_free ()

+
void
+g_variant_iter_free (GVariantIter *iter);
+

Frees a heap-allocated GVariantIter. Only call this function on +iterators that were returned by g_variant_iter_new() or +g_variant_iter_copy().

+
+

Parameters

+
+++++ + + + + + +

iter

a heap-allocated GVariantIter.

[transfer full]
+
+

Since: 2.24

+
+
+
+

g_variant_iter_init ()

+
gsize
+g_variant_iter_init (GVariantIter *iter,
+                     GVariant *value);
+

Initialises (without allocating) a GVariantIter. iter + may be +completely uninitialised prior to this call; its old value is +ignored.

+

The iterator remains valid for as long as value + exists, and need not +be freed in any way.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

iter

a pointer to a GVariantIter

 

value

a container GVariant

 
+
+
+

Returns

+

the number of items in value +

+
+

Since: 2.24

+
+
+
+

g_variant_iter_n_children ()

+
gsize
+g_variant_iter_n_children (GVariantIter *iter);
+

Queries the number of child items in the container that we are +iterating over. This is the total number of items -- not the number +of items remaining.

+

This function might be useful for preallocation of arrays.

+
+

Parameters

+
+++++ + + + + + +

iter

a GVariantIter

 
+
+
+

Returns

+

the number of children in the container

+
+

Since: 2.24

+
+
+
+

g_variant_iter_new ()

+
GVariantIter *
+g_variant_iter_new (GVariant *value);
+

Creates a heap-allocated GVariantIter for iterating over the items +in value +.

+

Use g_variant_iter_free() to free the return value when you no longer +need it.

+

A reference is taken to value + and will be released only when +g_variant_iter_free() is called.

+
+

Parameters

+
+++++ + + + + + +

value

a container GVariant

 
+
+
+

Returns

+

a new heap-allocated GVariantIter.

+

[transfer full]

+
+

Since: 2.24

+
+
+
+

g_variant_iter_next_value ()

+
GVariant *
+g_variant_iter_next_value (GVariantIter *iter);
+

Gets the next item in the container. If no more items remain then +NULL is returned.

+

Use g_variant_unref() to drop your reference on the return value when +you no longer need it.

+

Here is an example for iterating with g_variant_iter_next_value():

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
// recursively iterate a container
+void
+iterate_container_recursive (GVariant *container)
+{
+  GVariantIter iter;
+  GVariant *child;
+
+  g_variant_iter_init (&iter, container);
+  while ((child = g_variant_iter_next_value (&iter)))
+    {
+      g_print ("type '%s'\n", g_variant_get_type_string (child));
+
+      if (g_variant_is_container (child))
+        iterate_container_recursive (child);
+
+      g_variant_unref (child);
+    }
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + +

iter

a GVariantIter

 
+
+
+

Returns

+

a GVariant, or NULL.

+

[allow-none][transfer full]

+
+

Since: 2.24

+
+
+
+

g_variant_iter_next ()

+
gboolean
+g_variant_iter_next (GVariantIter *iter,
+                     const gchar *format_string,
+                     ...);
+

Gets the next item in the container and unpacks it into the variable +argument list according to format_string +, returning TRUE.

+

If no more items remain then FALSE is returned.

+

All of the pointers given on the variable arguments list of this +function are assumed to point at uninitialised memory. It is the +responsibility of the caller to free all of the values returned by +the unpacking process.

+

Here is an example for memory management with g_variant_iter_next():

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
// Iterates a dictionary of type 'a{sv}'
+void
+iterate_dictionary (GVariant *dictionary)
+{
+  GVariantIter iter;
+  GVariant *value;
+  gchar *key;
+
+  g_variant_iter_init (&iter, dictionary);
+  while (g_variant_iter_next (&iter, "{sv}", &key, &value))
+    {
+      g_print ("Item '%s' has type '%s'\n", key,
+               g_variant_get_type_string (value));
+
+      // must free data for ourselves
+      g_variant_unref (value);
+      g_free (key);
+    }
+}
+
+ +

+

For a solution that is likely to be more convenient to C programmers +when dealing with loops, see g_variant_iter_loop().

+

format_string + determines the C types that are used for unpacking +the values and also determines if the values are copied or borrowed.

+

See the section on +GVariant format strings.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

iter

a GVariantIter

 

format_string

a GVariant format string

 

...

the arguments to unpack the value into

 
+
+
+

Returns

+

TRUE if a value was unpacked, or FALSE if there as no value

+
+

Since: 2.24

+
+
+
+

g_variant_iter_loop ()

+
gboolean
+g_variant_iter_loop (GVariantIter *iter,
+                     const gchar *format_string,
+                     ...);
+

Gets the next item in the container and unpacks it into the variable +argument list according to format_string +, returning TRUE.

+

If no more items remain then FALSE is returned.

+

On the first call to this function, the pointers appearing on the +variable argument list are assumed to point at uninitialised memory. +On the second and later calls, it is assumed that the same pointers +will be given and that they will point to the memory as set by the +previous call to this function. This allows the previous values to +be freed, as appropriate.

+

This function is intended to be used with a while loop as +demonstrated in the following example. This function can only be +used when iterating over an array. It is only valid to call this +function with a string constant for the format string and the same +string constant must be used each time. Mixing calls to this +function and g_variant_iter_next() or g_variant_iter_next_value() on +the same iterator causes undefined behavior.

+

If you break out of a such a while loop using g_variant_iter_loop() then +you must free or unreference all the unpacked values as you would with +g_variant_get(). Failure to do so will cause a memory leak.

+

Here is an example for memory management with g_variant_iter_loop():

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
// Iterates a dictionary of type 'a{sv}'
+void
+iterate_dictionary (GVariant *dictionary)
+{
+  GVariantIter iter;
+  GVariant *value;
+  gchar *key;
+
+  g_variant_iter_init (&iter, dictionary);
+  while (g_variant_iter_loop (&iter, "{sv}", &key, &value))
+    {
+      g_print ("Item '%s' has type '%s'\n", key,
+               g_variant_get_type_string (value));
+
+      // no need to free 'key' and 'value' here
+      // unless breaking out of this loop
+    }
+}
+
+ +

+

For most cases you should use g_variant_iter_next().

+

This function is really only useful when unpacking into GVariant or +GVariantIter in order to allow you to skip the call to +g_variant_unref() or g_variant_iter_free().

+

For example, if you are only looping over simple integer and string +types, g_variant_iter_next() is definitely preferred. For string +types, use the '&' prefix to avoid allocating any memory at all (and +thereby avoiding the need to free anything as well).

+

format_string + determines the C types that are used for unpacking +the values and also determines if the values are copied or borrowed.

+

See the section on +GVariant format strings.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

iter

a GVariantIter

 

format_string

a GVariant format string

 

...

the arguments to unpack the value into

 
+
+
+

Returns

+

TRUE if a value was unpacked, or FALSE if there was no +value

+
+

Since: 2.24

+
+
+
+

g_variant_builder_unref ()

+
void
+g_variant_builder_unref (GVariantBuilder *builder);
+

Decreases the reference count on builder +.

+

In the event that there are no more references, releases all memory +associated with the GVariantBuilder.

+

Don't call this on stack-allocated GVariantBuilder instances or bad +things will happen.

+
+

Parameters

+
+++++ + + + + + +

builder

a GVariantBuilder allocated by g_variant_builder_new().

[transfer full]
+
+

Since: 2.24

+
+
+
+

g_variant_builder_ref ()

+
GVariantBuilder *
+g_variant_builder_ref (GVariantBuilder *builder);
+

Increases the reference count on builder +.

+

Don't call this on stack-allocated GVariantBuilder instances or bad +things will happen.

+
+

Parameters

+
+++++ + + + + + +

builder

a GVariantBuilder allocated by g_variant_builder_new()

 
+
+
+

Returns

+

a new reference to builder +.

+

[transfer full]

+
+

Since: 2.24

+
+
+
+

g_variant_builder_new ()

+
GVariantBuilder *
+g_variant_builder_new (const GVariantType *type);
+

Allocates and initialises a new GVariantBuilder.

+

You should call g_variant_builder_unref() on the return value when it +is no longer needed. The memory will not be automatically freed by +any other call.

+

In most cases it is easier to place a GVariantBuilder directly on +the stack of the calling function and initialise it with +g_variant_builder_init().

+
+

Parameters

+
+++++ + + + + + +

type

a container type

 
+
+
+

Returns

+

a GVariantBuilder.

+

[transfer full]

+
+

Since: 2.24

+
+
+
+

g_variant_builder_init ()

+
void
+g_variant_builder_init (GVariantBuilder *builder,
+                        const GVariantType *type);
+

Initialises a GVariantBuilder structure.

+

type + must be non-NULL. It specifies the type of container to +construct. It can be an indefinite type such as +G_VARIANT_TYPE_ARRAY or a definite type such as "as" or "(ii)". +Maybe, array, tuple, dictionary entry and variant-typed values may be +constructed.

+

After the builder is initialised, values are added using +g_variant_builder_add_value() or g_variant_builder_add().

+

After all the child values are added, g_variant_builder_end() frees +the memory associated with the builder and returns the GVariant that +was created.

+

This function completely ignores the previous contents of builder +. +On one hand this means that it is valid to pass in completely +uninitialised memory. On the other hand, this means that if you are +initialising over top of an existing GVariantBuilder you need to +first call g_variant_builder_clear() in order to avoid leaking +memory.

+

You must not call g_variant_builder_ref() or +g_variant_builder_unref() on a GVariantBuilder that was initialised +with this function. If you ever pass a reference to a +GVariantBuilder outside of the control of your own code then you +should assume that the person receiving that reference may try to use +reference counting; you should use g_variant_builder_new() instead of +this function.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

builder

a GVariantBuilder

 

type

a container type

 
+
+

Since: 2.24

+
+
+
+

g_variant_builder_clear ()

+
void
+g_variant_builder_clear (GVariantBuilder *builder);
+

Releases all memory associated with a GVariantBuilder without +freeing the GVariantBuilder structure itself.

+

It typically only makes sense to do this on a stack-allocated +GVariantBuilder if you want to abort building the value part-way +through. This function need not be called if you call +g_variant_builder_end() and it also doesn't need to be called on +builders allocated with g_variant_builder_new (see +g_variant_builder_unref() for that).

+

This function leaves the GVariantBuilder structure set to all-zeros. +It is valid to call this function on either an initialised +GVariantBuilder or one that is set to all-zeros but it is not valid +to call this function on uninitialised memory.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

builder

a GVariantBuilder

 
+
+

Since: 2.24

+
+
+
+

g_variant_builder_add_value ()

+
void
+g_variant_builder_add_value (GVariantBuilder *builder,
+                             GVariant *value);
+

Adds value + to builder +.

+

It is an error to call this function in any way that would create an +inconsistent value to be constructed. Some examples of this are +putting different types of items into an array, putting the wrong +types or number of items in a tuple, putting more than one value into +a variant, etc.

+

If value + is a floating reference (see g_variant_ref_sink()), +the builder + instance takes ownership of value +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

builder

a GVariantBuilder

 

value

a GVariant

 
+
+

Since: 2.24

+
+
+
+

g_variant_builder_add ()

+
void
+g_variant_builder_add (GVariantBuilder *builder,
+                       const gchar *format_string,
+                       ...);
+

Adds to a GVariantBuilder.

+

This call is a convenience wrapper that is exactly equivalent to +calling g_variant_new() followed by g_variant_builder_add_value().

+

Note that the arguments must be of the correct width for their types +specified in format_string +. This can be achieved by casting them. See +the GVariant varargs documentation.

+

This function might be used as follows:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
GVariant *
+make_pointless_dictionary (void)
+{
+  GVariantBuilder builder;
+  int i;
+
+  g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
+  for (i = 0; i < 16; i++)
+    {
+      gchar buf[3];
+
+      sprintf (buf, "%d", i);
+      g_variant_builder_add (&builder, "{is}", i, buf);
+    }
+
+  return g_variant_builder_end (&builder);
+}
+
+ +

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

builder

a GVariantBuilder

 

format_string

a GVariant varargs format string

 

...

arguments, as per format_string +

 
+
+

Since: 2.24

+
+
+
+

g_variant_builder_add_parsed ()

+
void
+g_variant_builder_add_parsed (GVariantBuilder *builder,
+                              const gchar *format,
+                              ...);
+

Adds to a GVariantBuilder.

+

This call is a convenience wrapper that is exactly equivalent to +calling g_variant_new_parsed() followed by +g_variant_builder_add_value().

+

Note that the arguments must be of the correct width for their types +specified in format_string +. This can be achieved by casting them. See +the GVariant varargs documentation.

+

This function might be used as follows:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
GVariant *
+make_pointless_dictionary (void)
+{
+  GVariantBuilder builder;
+  int i;
+
+  g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
+  g_variant_builder_add_parsed (&builder, "{'width', <%i>}", 600);
+  g_variant_builder_add_parsed (&builder, "{'title', <%s>}", "foo");
+  g_variant_builder_add_parsed (&builder, "{'transparency', <0.5>}");
+  return g_variant_builder_end (&builder);
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

builder

a GVariantBuilder

 

format

a text format GVariant

 

...

arguments as per format +

 
+
+

Since: 2.26

+
+
+
+

g_variant_builder_end ()

+
GVariant *
+g_variant_builder_end (GVariantBuilder *builder);
+

Ends the builder process and returns the constructed value.

+

It is not permissible to use builder + in any way after this call +except for reference counting operations (in the case of a +heap-allocated GVariantBuilder) or by reinitialising it with +g_variant_builder_init() (in the case of stack-allocated).

+

It is an error to call this function in any way that would create an +inconsistent value to be constructed (ie: insufficient number of +items added to a container with a specific number of children +required). It is also an error to call this function if the builder +was created with an indefinite array or maybe type and no children +have been added; in this case it is impossible to infer the type of +the empty array.

+
+

Parameters

+
+++++ + + + + + +

builder

a GVariantBuilder

 
+
+
+

Returns

+

a new, floating, GVariant.

+

[transfer none]

+
+

Since: 2.24

+
+
+
+

g_variant_builder_open ()

+
void
+g_variant_builder_open (GVariantBuilder *builder,
+                        const GVariantType *type);
+

Opens a subcontainer inside the given builder +. When done adding +items to the subcontainer, g_variant_builder_close() must be called.

+

It is an error to call this function in any way that would cause an +inconsistent value to be constructed (ie: adding too many values or +a value of an incorrect type).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

builder

a GVariantBuilder

 

type

a GVariantType

 
+
+

Since: 2.24

+
+
+
+

g_variant_builder_close ()

+
void
+g_variant_builder_close (GVariantBuilder *builder);
+

Closes the subcontainer inside the given builder + that was opened by +the most recent call to g_variant_builder_open().

+

It is an error to call this function in any way that would create an +inconsistent value to be constructed (ie: too few values added to the +subcontainer).

+
+

Parameters

+
+++++ + + + + + +

builder

a GVariantBuilder

 
+
+

Since: 2.24

+
+
+
+

g_variant_dict_unref ()

+
void
+g_variant_dict_unref (GVariantDict *dict);
+

Decreases the reference count on dict +.

+

In the event that there are no more references, releases all memory +associated with the GVariantDict.

+

Don't call this on stack-allocated GVariantDict instances or bad +things will happen.

+
+

Parameters

+
+++++ + + + + + +

dict

a heap-allocated GVariantDict.

[transfer full]
+
+

Since: 2.40

+
+
+
+

g_variant_dict_ref ()

+
GVariantDict *
+g_variant_dict_ref (GVariantDict *dict);
+

Increases the reference count on dict +.

+

Don't call this on stack-allocated GVariantDict instances or bad +things will happen.

+
+

Parameters

+
+++++ + + + + + +

dict

a heap-allocated GVariantDict

 
+
+
+

Returns

+

a new reference to dict +.

+

[transfer full]

+
+

Since: 2.40

+
+
+
+

g_variant_dict_new ()

+
GVariantDict *
+g_variant_dict_new (GVariant *from_asv);
+

Allocates and initialises a new GVariantDict.

+

You should call g_variant_dict_unref() on the return value when it +is no longer needed. The memory will not be automatically freed by +any other call.

+

In some cases it may be easier to place a GVariantDict directly on +the stack of the calling function and initialise it with +g_variant_dict_init(). This is particularly useful when you are +using GVariantDict to construct a GVariant.

+
+

Parameters

+
+++++ + + + + + +

from_asv

the GVariant with which to initialise the +dictionary.

[allow-none]
+
+
+

Returns

+

a GVariantDict.

+

[transfer full]

+
+

Since: 2.40

+
+
+
+

g_variant_dict_init ()

+
void
+g_variant_dict_init (GVariantDict *dict,
+                     GVariant *from_asv);
+

Initialises a GVariantDict structure.

+

If from_asv + is given, it is used to initialise the dictionary.

+

This function completely ignores the previous contents of dict +. On +one hand this means that it is valid to pass in completely +uninitialised memory. On the other hand, this means that if you are +initialising over top of an existing GVariantDict you need to first +call g_variant_dict_clear() in order to avoid leaking memory.

+

You must not call g_variant_dict_ref() or g_variant_dict_unref() on a +GVariantDict that was initialised with this function. If you ever +pass a reference to a GVariantDict outside of the control of your +own code then you should assume that the person receiving that +reference may try to use reference counting; you should use +g_variant_dict_new() instead of this function.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

dict

a GVariantDict

 

from_asv

the initial value for dict +.

[allow-none]
+
+

Since: 2.40

+
+
+
+

g_variant_dict_clear ()

+
void
+g_variant_dict_clear (GVariantDict *dict);
+

Releases all memory associated with a GVariantDict without freeing +the GVariantDict structure itself.

+

It typically only makes sense to do this on a stack-allocated +GVariantDict if you want to abort building the value part-way +through. This function need not be called if you call +g_variant_dict_end() and it also doesn't need to be called on dicts +allocated with g_variant_dict_new (see g_variant_dict_unref() for +that).

+

It is valid to call this function on either an initialised +GVariantDict or one that was previously cleared by an earlier call +to g_variant_dict_clear() but it is not valid to call this function +on uninitialised memory.

+
+

Parameters

+
+++++ + + + + + +

dict

a GVariantDict

 
+
+

Since: 2.40

+
+
+
+

g_variant_dict_contains ()

+
gboolean
+g_variant_dict_contains (GVariantDict *dict,
+                         const gchar *key);
+

Checks if key + exists in dict +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

dict

a GVariantDict

 

key

the key to lookup in the dictionary

 
+
+
+

Returns

+

TRUE if key +is in dict +

+
+

Since: 2.40

+
+
+
+

g_variant_dict_lookup ()

+
gboolean
+g_variant_dict_lookup (GVariantDict *dict,
+                       const gchar *key,
+                       const gchar *format_string,
+                       ...);
+

Looks up a value in a GVariantDict.

+

This function is a wrapper around g_variant_dict_lookup_value() and +g_variant_get(). In the case that NULL would have been returned, +this function returns FALSE. Otherwise, it unpacks the returned +value and returns TRUE.

+

format_string + determines the C types that are used for unpacking the +values and also determines if the values are copied or borrowed, see the +section on GVariant format strings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

dict

a GVariantDict

 

key

the key to lookup in the dictionary

 

format_string

a GVariant format string

 

...

the arguments to unpack the value into

 
+
+
+

Returns

+

TRUE if a value was unpacked

+
+

Since: 2.40

+
+
+
+

g_variant_dict_lookup_value ()

+
GVariant *
+g_variant_dict_lookup_value (GVariantDict *dict,
+                             const gchar *key,
+                             const GVariantType *expected_type);
+

Looks up a value in a GVariantDict.

+

If key + is not found in dictionary +, NULL is returned.

+

The expected_type + string specifies what type of value is expected. +If the value associated with key + has a different type then NULL is +returned.

+

If the key is found and the value has the correct type, it is +returned. If expected_type + was specified then any non-NULL return +value will have this type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dict

a GVariantDict

 

key

the key to lookup in the dictionary

 

expected_type

a GVariantType, or NULL.

[allow-none]
+
+
+

Returns

+

the value of the dictionary key, or NULL.

+

[transfer full]

+
+

Since: 2.40

+
+
+
+

g_variant_dict_insert ()

+
void
+g_variant_dict_insert (GVariantDict *dict,
+                       const gchar *key,
+                       const gchar *format_string,
+                       ...);
+

Inserts a value into a GVariantDict.

+

This call is a convenience wrapper that is exactly equivalent to +calling g_variant_new() followed by g_variant_dict_insert_value().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

dict

a GVariantDict

 

key

the key to insert a value for

 

format_string

a GVariant varargs format string

 

...

arguments, as per format_string +

 
+
+

Since: 2.40

+
+
+
+

g_variant_dict_insert_value ()

+
void
+g_variant_dict_insert_value (GVariantDict *dict,
+                             const gchar *key,
+                             GVariant *value);
+

Inserts (or replaces) a key in a GVariantDict.

+

value + is consumed if it is floating.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dict

a GVariantDict

 

key

the key to insert a value for

 

value

the value to insert

 
+
+

Since: 2.40

+
+
+
+

g_variant_dict_remove ()

+
gboolean
+g_variant_dict_remove (GVariantDict *dict,
+                       const gchar *key);
+

Removes a key and its associated value from a GVariantDict.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

dict

a GVariantDict

 

key

the key to remove

 
+
+
+

Returns

+

TRUE if the key was found and removed

+
+

Since: 2.40

+
+
+
+

g_variant_dict_end ()

+
GVariant *
+g_variant_dict_end (GVariantDict *dict);
+

Returns the current value of dict + as a GVariant of type +G_VARIANT_TYPE_VARDICT, clearing it in the process.

+

It is not permissible to use dict + in any way after this call except +for reference counting operations (in the case of a heap-allocated +GVariantDict) or by reinitialising it with g_variant_dict_init() (in +the case of stack-allocated).

+
+

Parameters

+
+++++ + + + + + +

dict

a GVariantDict

 
+
+
+

Returns

+

a new, floating, GVariant.

+

[transfer none]

+
+

Since: 2.40

+
+
+
+

G_VARIANT_PARSE_ERROR

+
#define G_VARIANT_PARSE_ERROR (g_variant_parse_error_quark ())
+
+

Error domain for GVariant text format parsing. Specific error codes +are not currently defined for this domain. See GError for +information on error domains.

+
+
+
+

g_variant_parse ()

+
GVariant *
+g_variant_parse (const GVariantType *type,
+                 const gchar *text,
+                 const gchar *limit,
+                 const gchar **endptr,
+                 GError **error);
+

Parses a GVariant from a text representation.

+

A single GVariant is parsed from the content of text +.

+

The format is described here.

+

The memory at limit + will never be accessed and the parser behaves as +if the character at limit + is the nul terminator. This has the +effect of bounding text +.

+

If endptr + is non-NULL then text + is permitted to contain data +following the value that this function parses and endptr + will be +updated to point to the first character past the end of the text +parsed by this function. If endptr + is NULL and there is extra data +then an error is returned.

+

If type + is non-NULL then the value will be parsed to have that +type. This may result in additional parse errors (in the case that +the parsed value doesn't fit the type) but may also result in fewer +errors (in the case that the type would have been ambiguous, such as +with empty arrays).

+

In the event that the parsing is successful, the resulting GVariant +is returned. It is never floating, and must be freed with +g_variant_unref().

+

In case of any error, NULL will be returned. If error + is non-NULL +then it will be set to reflect the error that occurred.

+

Officially, the language understood by the parser is "any string +produced by g_variant_print()".

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

type

a GVariantType, or NULL.

[allow-none]

text

a string containing a GVariant in text form

 

limit

a pointer to the end of text +, or NULL.

[allow-none]

endptr

a location to store the end pointer, or NULL.

[allow-none]

error

a pointer to a NULL GError pointer, or NULL.

[allow-none]
+
+
+

Returns

+

a non-floating reference to a GVariant, or NULL

+
+
+
+
+

g_variant_new_parsed_va ()

+
GVariant *
+g_variant_new_parsed_va (const gchar *format,
+                         va_list *app);
+

Parses format + and returns the result.

+

This is the version of g_variant_new_parsed() intended to be used +from libraries.

+

The return value will be floating if it was a newly created GVariant +instance. In the case that format + simply specified the collection +of a GVariant pointer (eg: format + was "%*") then the collected +GVariant pointer will be returned unmodified, without adding any +additional references.

+

Note that the arguments in app + must be of the correct width for their types +specified in format + when collected into the va_list. See +the GVariant varargs documentation.

+

In order to behave correctly in all cases it is necessary for the +calling function to g_variant_ref_sink() the return result before +returning control to the user that originally provided the pointer. +At this point, the caller will have their own full reference to the +result. This can also be done by adding the result to a container, +or by passing it to another g_variant_new() call.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format

a text format GVariant

 

app

a pointer to a va_list

 
+
+
+

Returns

+

a new, usually floating, GVariant

+
+
+
+
+

g_variant_new_parsed ()

+
GVariant *
+g_variant_new_parsed (const gchar *format,
+                      ...);
+

Parses format + and returns the result.

+

format + must be a text format GVariant with one extension: at any +point that a value may appear in the text, a '%' character followed +by a GVariant format string (as per g_variant_new()) may appear. In +that case, the same arguments are collected from the argument list as +g_variant_new() would have collected.

+

Note that the arguments must be of the correct width for their types +specified in format +. This can be achieved by casting them. See +the GVariant varargs documentation.

+

Consider this simple example:

+
+ + + + + + + +
1
g_variant_new_parsed ("[('one', 1), ('two', %i), (%s, 3)]", 2, "three");
+
+ +

+

In the example, the variable argument parameters are collected and +filled in as if they were part of the original string to produce the +result of

+
+ + + + + + + +
1
[('one', 1), ('two', 2), ('three', 3)]
+
+ +

+

This function is intended only to be used with format + as a string +literal. Any parse error is fatal to the calling process. If you +want to parse data from untrusted sources, use g_variant_parse().

+

You may not use this function to return, unmodified, a single +GVariant pointer from the argument list. ie: format + may not solely +be anything along the lines of "%*", "%?", "%r", or anything starting +with "%@".

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format

a text format GVariant

 

...

arguments as per format +

 
+
+
+

Returns

+

a new floating GVariant instance

+
+
+
+
+

g_variant_parse_error_print_context ()

+
gchar *
+g_variant_parse_error_print_context (GError *error,
+                                     const gchar *source_str);
+

Pretty-prints a message showing the context of a GVariant parse +error within the string for which parsing was attempted.

+

The resulting string is suitable for output to the console or other +monospace media where newlines are treated in the usual way.

+

The message will typically look something like one of the following:

+
+ + + + + + + +
1
+2
+3
unterminated string constant:
+  (1, 2, 3, 'abc
+            ^^^^
+
+ +

+

or

+
+ + + + + + + +
1
+2
+3
unable to find a common type:
+  [1, 2, 3, 'str']
+   ^        ^^^^^
+
+ +

+

The format of the message may change in a future version.

+

error + must have come from a failed attempt to g_variant_parse() and +source_str + must be exactly the same string that caused the error. +If source_str + was not nul-terminated when you passed it to +g_variant_parse() then you must add nul termination before using this +function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

error

a GError from the GVariantParseError domain

 

source_str

the string that was given to the parser

 
+
+
+

Returns

+

the printed message.

+

[transfer full]

+
+

Since: 2.40

+
+
+
+

Types and Values

+
+

GVariant

+
typedef struct _GVariant GVariant;
+

GVariant is an opaque data structure and can only be accessed +using the following functions.

+

Since: 2.24

+
+
+
+

enum GVariantClass

+

The range of possible top-level types of GVariant instances.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_VARIANT_CLASS_BOOLEAN

+

The GVariant is a boolean.

+
 

G_VARIANT_CLASS_BYTE

+

The GVariant is a byte.

+
 

G_VARIANT_CLASS_INT16

+

The GVariant is a signed 16 bit integer.

+
 

G_VARIANT_CLASS_UINT16

+

The GVariant is an unsigned 16 bit integer.

+
 

G_VARIANT_CLASS_INT32

+

The GVariant is a signed 32 bit integer.

+
 

G_VARIANT_CLASS_UINT32

+

The GVariant is an unsigned 32 bit integer.

+
 

G_VARIANT_CLASS_INT64

+

The GVariant is a signed 64 bit integer.

+
 

G_VARIANT_CLASS_UINT64

+

The GVariant is an unsigned 64 bit integer.

+
 

G_VARIANT_CLASS_HANDLE

+

The GVariant is a file handle index.

+
 

G_VARIANT_CLASS_DOUBLE

+

The GVariant is a double precision floating + point value.

+
 

G_VARIANT_CLASS_STRING

+

The GVariant is a normal string.

+
 

G_VARIANT_CLASS_OBJECT_PATH

+

The GVariant is a D-Bus object path + string.

+
 

G_VARIANT_CLASS_SIGNATURE

+

The GVariant is a D-Bus signature string.

+
 

G_VARIANT_CLASS_VARIANT

+

The GVariant is a variant.

+
 

G_VARIANT_CLASS_MAYBE

+

The GVariant is a maybe-typed value.

+
 

G_VARIANT_CLASS_ARRAY

+

The GVariant is an array.

+
 

G_VARIANT_CLASS_TUPLE

+

The GVariant is a tuple.

+
 

G_VARIANT_CLASS_DICT_ENTRY

+

The GVariant is a dictionary entry.

+
 
+
+

Since: 2.24

+
+
+
+

struct GVariantIter

+
struct GVariantIter {
+};
+
+

GVariantIter is an opaque data structure and can only be accessed +using the following functions.

+
+
+
+

struct GVariantBuilder

+
struct GVariantBuilder {
+};
+
+

A utility type for constructing container-type GVariant instances.

+

This is an opaque structure and may only be accessed using the +following functions.

+

GVariantBuilder is not threadsafe in any way. Do not attempt to +access it from more than one thread.

+
+
+
+

struct GVariantDict

+
struct GVariantDict {
+};
+
+

GVariantDict is a mutable interface to GVariant dictionaries.

+

It can be used for doing a sequence of dictionary lookups in an +efficient way on an existing GVariant dictionary or it can be used +to construct new dictionaries with a hashtable-like interface. It +can also be used for taking existing dictionaries and modifying them +in order to create new ones.

+

GVariantDict can only be used with G_VARIANT_TYPE_VARDICT +dictionaries.

+

It is possible to use GVariantDict allocated on the stack or on the +heap. When using a stack-allocated GVariantDict, you begin with a +call to g_variant_dict_init() and free the resources with a call to +g_variant_dict_clear().

+

Heap-allocated GVariantDict follows normal refcounting rules: you +allocate it with g_variant_dict_new() and use g_variant_dict_ref() +and g_variant_dict_unref().

+

g_variant_dict_end() is used to convert the GVariantDict back into a +dictionary-type GVariant. When used with stack-allocated instances, +this also implicitly frees all associated memory, but for +heap-allocated instances, you must still call g_variant_dict_unref() +afterwards.

+

You will typically want to use a heap-allocated GVariantDict when +you expose it as part of an API. For most other uses, the +stack-allocated form will be more convenient.

+

Consider the following two examples that do the same thing in each +style: take an existing dictionary and look up the "count" uint32 +key, adding 1 to it if it is found, or returning an error if the +key is not found. Each returns the new dictionary as a floating +GVariant.

+
+

Using a stack-allocated GVariantDict

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
GVariant *
+add_to_count (GVariant  *orig,
+              GError   **error)
+{
+  GVariantDict dict;
+  guint32 count;
+
+  g_variant_dict_init (&dict, orig);
+  if (!g_variant_dict_lookup (&dict, "count", "u", &count))
+    {
+      g_set_error (...);
+      g_variant_dict_clear (&dict);
+      return NULL;
+    }
+
+  g_variant_dict_insert (&dict, "count", "u", count + 1);
+
+  return g_variant_dict_end (&dict);
+}
+
+ +

+
+
+

Using heap-allocated GVariantDict

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
GVariant *
+add_to_count (GVariant  *orig,
+              GError   **error)
+{
+  GVariantDict *dict;
+  GVariant *result;
+  guint32 count;
+
+  dict = g_variant_dict_new (orig);
+
+  if (g_variant_dict_lookup (dict, "count", "u", &count))
+    {
+      g_variant_dict_insert (dict, "count", "u", count + 1);
+      result = g_variant_dict_end (dict);
+    }
+  else
+    {
+      g_set_error (...);
+      result = NULL;
+    }
+
+  g_variant_dict_unref (dict);
+
+  return result;
+}
+
+ +

+
+

Since: 2.40

+
+
+
+

enum GVariantParseError

+

Error codes returned by parsing text-format GVariants.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_VARIANT_PARSE_ERROR_FAILED

+

generic error (unused)

+
 

G_VARIANT_PARSE_ERROR_BASIC_TYPE_EXPECTED

+

a non-basic GVariantType was given where a basic type was expected

+
 

G_VARIANT_PARSE_ERROR_CANNOT_INFER_TYPE

+

cannot infer the GVariantType

+
 

G_VARIANT_PARSE_ERROR_DEFINITE_TYPE_EXPECTED

+

an indefinite GVariantType was given where a definite type was expected

+
 

G_VARIANT_PARSE_ERROR_INPUT_NOT_AT_END

+

extra data after parsing finished

+
 

G_VARIANT_PARSE_ERROR_INVALID_CHARACTER

+

invalid character in number or unicode escape

+
 

G_VARIANT_PARSE_ERROR_INVALID_FORMAT_STRING

+

not a valid GVariant format string

+
 

G_VARIANT_PARSE_ERROR_INVALID_OBJECT_PATH

+

not a valid object path

+
 

G_VARIANT_PARSE_ERROR_INVALID_SIGNATURE

+

not a valid type signature

+
 

G_VARIANT_PARSE_ERROR_INVALID_TYPE_STRING

+

not a valid GVariant type string

+
 

G_VARIANT_PARSE_ERROR_NO_COMMON_TYPE

+

could not find a common type for array entries

+
 

G_VARIANT_PARSE_ERROR_NUMBER_OUT_OF_RANGE

+

the numerical value is out of range of the given type

+
 

G_VARIANT_PARSE_ERROR_NUMBER_TOO_BIG

+

the numerical value is out of range for any type

+
 

G_VARIANT_PARSE_ERROR_TYPE_ERROR

+

cannot parse as variant of the specified type

+
 

G_VARIANT_PARSE_ERROR_UNEXPECTED_TOKEN

+

an unexpected token was encountered

+
 

G_VARIANT_PARSE_ERROR_UNKNOWN_KEYWORD

+

an unknown keyword was encountered

+
 

G_VARIANT_PARSE_ERROR_UNTERMINATED_STRING_CONSTANT

+

unterminated string constant

+
 

G_VARIANT_PARSE_ERROR_VALUE_EXPECTED

+

no value given

+
 
+
+
+
+
+

See Also

+

GVariantType

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-GVariantType.html b/docs/reference/glib/html/glib-GVariantType.html new file mode 100644 index 0000000..db76760 --- /dev/null +++ b/docs/reference/glib/html/glib-GVariantType.html @@ -0,0 +1,1829 @@ + + + + +GVariantType: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GVariantType

+

GVariantType — introduction to the GVariant type system

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#defineG_VARIANT_TYPE_BOOLEAN
#defineG_VARIANT_TYPE_BYTE
#defineG_VARIANT_TYPE_INT16
#defineG_VARIANT_TYPE_UINT16
#defineG_VARIANT_TYPE_INT32
#defineG_VARIANT_TYPE_UINT32
#defineG_VARIANT_TYPE_INT64
#defineG_VARIANT_TYPE_UINT64
#defineG_VARIANT_TYPE_HANDLE
#defineG_VARIANT_TYPE_DOUBLE
#defineG_VARIANT_TYPE_STRING
#defineG_VARIANT_TYPE_OBJECT_PATH
#defineG_VARIANT_TYPE_SIGNATURE
#defineG_VARIANT_TYPE_VARIANT
#defineG_VARIANT_TYPE_ANY
#defineG_VARIANT_TYPE_BASIC
#defineG_VARIANT_TYPE_MAYBE
#defineG_VARIANT_TYPE_ARRAY
#defineG_VARIANT_TYPE_TUPLE
#defineG_VARIANT_TYPE_UNIT
#defineG_VARIANT_TYPE_DICT_ENTRY
#defineG_VARIANT_TYPE_DICTIONARY
#defineG_VARIANT_TYPE_STRING_ARRAY
#defineG_VARIANT_TYPE_OBJECT_PATH_ARRAY
#defineG_VARIANT_TYPE_BYTESTRING
#defineG_VARIANT_TYPE_BYTESTRING_ARRAY
#defineG_VARIANT_TYPE_VARDICT
#define +G_VARIANT_TYPE() +
+void + +g_variant_type_free () +
+GVariantType * + +g_variant_type_copy () +
+GVariantType * + +g_variant_type_new () +
+gboolean + +g_variant_type_string_is_valid () +
+gboolean + +g_variant_type_string_scan () +
+gsize + +g_variant_type_get_string_length () +
const gchar * + +g_variant_type_peek_string () +
+gchar * + +g_variant_type_dup_string () +
+gboolean + +g_variant_type_is_definite () +
+gboolean + +g_variant_type_is_container () +
+gboolean + +g_variant_type_is_basic () +
+gboolean + +g_variant_type_is_maybe () +
+gboolean + +g_variant_type_is_array () +
+gboolean + +g_variant_type_is_tuple () +
+gboolean + +g_variant_type_is_dict_entry () +
+gboolean + +g_variant_type_is_variant () +
+guint + +g_variant_type_hash () +
+gboolean + +g_variant_type_equal () +
+gboolean + +g_variant_type_is_subtype_of () +
+GVariantType * + +g_variant_type_new_maybe () +
+GVariantType * + +g_variant_type_new_array () +
+GVariantType * + +g_variant_type_new_tuple () +
+GVariantType * + +g_variant_type_new_dict_entry () +
const GVariantType * + +g_variant_type_element () +
+gsize + +g_variant_type_n_items () +
const GVariantType * + +g_variant_type_first () +
const GVariantType * + +g_variant_type_next () +
const GVariantType * + +g_variant_type_key () +
const GVariantType * + +g_variant_type_value () +
+
+
+

Types and Values

+
++++ + + + + +
 GVariantType
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

This section introduces the GVariant type system. It is based, in +large part, on the D-Bus type system, with two major changes and +some minor lifting of restrictions. The +D-Bus specification, +therefore, provides a significant amount of +information that is useful when working with GVariant.

+

The first major change with respect to the D-Bus type system is the +introduction of maybe (or "nullable") types. Any type in GVariant can be +converted to a maybe type, in which case, "nothing" (or "null") becomes a +valid value. Maybe types have been added by introducing the +character "m" to type strings.

+

The second major change is that the GVariant type system supports the +concept of "indefinite types" -- types that are less specific than +the normal types found in D-Bus. For example, it is possible to speak +of "an array of any type" in GVariant, where the D-Bus type system +would require you to speak of "an array of integers" or "an array of +strings". Indefinite types have been added by introducing the +characters "*", "?" and "r" to type strings.

+

Finally, all arbitrary restrictions relating to the complexity of +types are lifted along with the restriction that dictionary entries +may only appear nested inside of arrays.

+

Just as in D-Bus, GVariant types are described with strings ("type +strings"). Subject to the differences mentioned above, these strings +are of the same form as those found in DBus. Note, however: D-Bus +always works in terms of messages and therefore individual type +strings appear nowhere in its interface. Instead, "signatures" +are a concatenation of the strings of the type of each argument in a +message. GVariant deals with single values directly so GVariant type +strings always describe the type of exactly one value. This means +that a D-Bus signature string is generally not a valid GVariant type +string -- except in the case that it is the signature of a message +containing exactly one argument.

+

An indefinite type is similar in spirit to what may be called an +abstract type in other type systems. No value can exist that has an +indefinite type as its type, but values can exist that have types +that are subtypes of indefinite types. That is to say, +g_variant_get_type() will never return an indefinite type, but +calling g_variant_is_of_type() with an indefinite type may return +TRUE. For example, you cannot have a value that represents "an +array of no particular type", but you can have an "array of integers" +which certainly matches the type of "an array of no particular type", +since "array of integers" is a subtype of "array of no particular +type".

+

This is similar to how instances of abstract classes may not +directly exist in other type systems, but instances of their +non-abstract subtypes may. For example, in GTK, no object that has +the type of GtkBin can exist (since GtkBin is an abstract class), +but a GtkWindow can certainly be instantiated, and you would say +that the GtkWindow is a GtkBin (since GtkWindow is a subclass of +GtkBin).

+
+

GVariant Type Strings

+

A GVariant type string can be any of the following:

+
    +
  • any basic type string (listed below)

  • +
  • "v", "r" or "*"

  • +
  • one of the characters 'a' or 'm', followed by another type string

  • +
  • the character '(', followed by a concatenation of zero or more other +type strings, followed by the character ')'

  • +
  • the character '{', followed by a basic type string (see below), +followed by another type string, followed by the character '}'

  • +
+

A basic type string describes a basic type (as per +g_variant_type_is_basic()) and is always a single character in length. +The valid basic type strings are "b", "y", "n", "q", "i", "u", "x", "t", +"h", "d", "s", "o", "g" and "?".

+

The above definition is recursive to arbitrary depth. "aaaaai" and +"(ui(nq((y)))s)" are both valid type strings, as is +"a(aa(ui)(qna{ya(yd)}))".

+

The meaning of each of the characters is as follows:

+
    +
  • b: the type string of G_VARIANT_TYPE_BOOLEAN; a boolean value.

  • +
  • y: the type string of G_VARIANT_TYPE_BYTE; a byte.

  • +
  • n: the type string of G_VARIANT_TYPE_INT16; a signed 16 bit integer.

  • +
  • q: the type string of G_VARIANT_TYPE_UINT16; an unsigned 16 bit integer.

  • +
  • i: the type string of G_VARIANT_TYPE_INT32; a signed 32 bit integer.

  • +
  • u: the type string of G_VARIANT_TYPE_UINT32; an unsigned 32 bit integer.

  • +
  • x: the type string of G_VARIANT_TYPE_INT64; a signed 64 bit integer.

  • +
  • t: the type string of G_VARIANT_TYPE_UINT64; an unsigned 64 bit integer.

  • +
  • h: the type string of G_VARIANT_TYPE_HANDLE; a signed 32 bit value +that, by convention, is used as an index into an array of file +descriptors that are sent alongside a D-Bus message.

  • +
  • d: the type string of G_VARIANT_TYPE_DOUBLE; a double precision +floating point value.

  • +
  • s: the type string of G_VARIANT_TYPE_STRING; a string.

  • +
  • o: the type string of G_VARIANT_TYPE_OBJECT_PATH; a string in the form +of a D-Bus object path.

  • +
  • g: the type string of G_VARIANT_TYPE_STRING; a string in the form of +a D-Bus type signature.

  • +
  • ?: the type string of G_VARIANT_TYPE_BASIC; an indefinite type that +is a supertype of any of the basic types.

  • +
  • v: the type string of G_VARIANT_TYPE_VARIANT; a container type that +contain any other type of value.

  • +
  • a: used as a prefix on another type string to mean an array of that +type; the type string "ai", for example, is the type of an array of +signed 32-bit integers.

  • +
  • m: used as a prefix on another type string to mean a "maybe", or +"nullable", version of that type; the type string "ms", for example, +is the type of a value that maybe contains a string, or maybe contains +nothing.

  • +
  • (): used to enclose zero or more other concatenated type strings to +create a tuple type; the type string "(is)", for example, is the type of +a pair of an integer and a string.

  • +
  • r: the type string of G_VARIANT_TYPE_TUPLE; an indefinite type that is +a supertype of any tuple type, regardless of the number of items.

  • +
  • +

    {}: used to enclose a basic type string concatenated with another type +string to create a dictionary entry type, which usually appears inside of +an array to form a dictionary; the type string "a{sd}", for example, is +the type of a dictionary that maps strings to double precision floating +point values.

    +

    The first type (the basic type) is the key type and the second type is +the value type. The reason that the first type is restricted to being a +basic type is so that it can easily be hashed.

    +
  • +
  • *: the type string of G_VARIANT_TYPE_ANY; the indefinite type that is +a supertype of all types. Note that, as with all type strings, this +character represents exactly one type. It cannot be used inside of tuples +to mean "any number of items".

  • +
+

Any type string of a container that contains an indefinite type is, +itself, an indefinite type. For example, the type string "a*" +(corresponding to G_VARIANT_TYPE_ARRAY) is an indefinite type +that is a supertype of every array type. "(*s)" is a supertype +of all tuples that contain exactly two items where the second +item is a string.

+

"a{?*}" is an indefinite type that is a supertype of all arrays +containing dictionary entries where the key is any basic type and +the value is any type at all. This is, by definition, a dictionary, +so this type string corresponds to G_VARIANT_TYPE_DICTIONARY. Note +that, due to the restriction that the key of a dictionary entry must +be a basic type, "{**}" is not a valid type string.

+
+
+
+

Functions

+
+

G_VARIANT_TYPE_BOOLEAN

+
#define G_VARIANT_TYPE_BOOLEAN              ((const GVariantType *) "b")
+
+

The type of a value that can be either TRUE or FALSE.

+
+
+
+

G_VARIANT_TYPE_BYTE

+
#define G_VARIANT_TYPE_BYTE                 ((const GVariantType *) "y")
+
+

The type of an integer value that can range from 0 to 255.

+
+
+
+

G_VARIANT_TYPE_INT16

+
#define G_VARIANT_TYPE_INT16                ((const GVariantType *) "n")
+
+

The type of an integer value that can range from -32768 to 32767.

+
+
+
+

G_VARIANT_TYPE_UINT16

+
#define G_VARIANT_TYPE_UINT16               ((const GVariantType *) "q")
+
+

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.

+
+
+
+

G_VARIANT_TYPE_INT32

+
#define G_VARIANT_TYPE_INT32                ((const GVariantType *) "i")
+
+

The type of an integer value that can range from -2147483648 to +2147483647.

+
+
+
+

G_VARIANT_TYPE_UINT32

+
#define G_VARIANT_TYPE_UINT32               ((const GVariantType *) "u")
+
+

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.

+
+
+
+

G_VARIANT_TYPE_INT64

+
#define G_VARIANT_TYPE_INT64                ((const GVariantType *) "x")
+
+

The type of an integer value that can range from +-9223372036854775808 to 9223372036854775807.

+
+
+
+

G_VARIANT_TYPE_UINT64

+
#define G_VARIANT_TYPE_UINT64               ((const GVariantType *) "t")
+
+

The type of an integer value that can range from 0 to

+
  1. That's a really big number, but a Rubik's +cube can have a bit more than twice as many possible positions.

+
+
+
+

G_VARIANT_TYPE_HANDLE

+
#define G_VARIANT_TYPE_HANDLE               ((const GVariantType *) "h")
+
+

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.

+
+
+
+

G_VARIANT_TYPE_DOUBLE

+
#define G_VARIANT_TYPE_DOUBLE               ((const GVariantType *) "d")
+
+

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.

+
+
+
+

G_VARIANT_TYPE_STRING

+
#define G_VARIANT_TYPE_STRING               ((const GVariantType *) "s")
+
+

The type of a string. "" is a string. NULL is not a string.

+
+
+
+

G_VARIANT_TYPE_OBJECT_PATH

+
#define G_VARIANT_TYPE_OBJECT_PATH          ((const GVariantType *) "o")
+
+

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.

+
+
+
+

G_VARIANT_TYPE_SIGNATURE

+
#define G_VARIANT_TYPE_SIGNATURE            ((const GVariantType *) "g")
+
+

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.

+
+
+
+

G_VARIANT_TYPE_VARIANT

+
#define G_VARIANT_TYPE_VARIANT              ((const GVariantType *) "v")
+
+

The type of a box that contains any other value (including another +variant).

+
+
+
+

G_VARIANT_TYPE_ANY

+
#define G_VARIANT_TYPE_ANY                  ((const GVariantType *) "*")
+
+

An indefinite type that is a supertype of every type (including +itself).

+
+
+
+

G_VARIANT_TYPE_BASIC

+
#define G_VARIANT_TYPE_BASIC                ((const GVariantType *) "?")
+
+

An indefinite type that is a supertype of every basic (ie: +non-container) type.

+
+
+
+

G_VARIANT_TYPE_MAYBE

+
#define G_VARIANT_TYPE_MAYBE                ((const GVariantType *) "m*")
+
+

An indefinite type that is a supertype of every maybe type.

+
+
+
+

G_VARIANT_TYPE_ARRAY

+
#define G_VARIANT_TYPE_ARRAY                ((const GVariantType *) "a*")
+
+

An indefinite type that is a supertype of every array type.

+
+
+
+

G_VARIANT_TYPE_TUPLE

+
#define G_VARIANT_TYPE_TUPLE                ((const GVariantType *) "r")
+
+

An indefinite type that is a supertype of every tuple type, +regardless of the number of items in the tuple.

+
+
+
+

G_VARIANT_TYPE_UNIT

+
#define G_VARIANT_TYPE_UNIT                 ((const GVariantType *) "()")
+
+

The empty tuple type. Has only one instance. Known also as "triv" +or "void".

+
+
+
+

G_VARIANT_TYPE_DICT_ENTRY

+
#define G_VARIANT_TYPE_DICT_ENTRY           ((const GVariantType *) "{?*}")
+
+

An indefinite type that is a supertype of every dictionary entry +type.

+
+
+
+

G_VARIANT_TYPE_DICTIONARY

+
#define G_VARIANT_TYPE_DICTIONARY           ((const GVariantType *) "a{?*}")
+
+

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.

+
+
+
+

G_VARIANT_TYPE_STRING_ARRAY

+
#define G_VARIANT_TYPE_STRING_ARRAY         ((const GVariantType *) "as")
+
+

The type of an array of strings.

+
+
+
+

G_VARIANT_TYPE_OBJECT_PATH_ARRAY

+
#define G_VARIANT_TYPE_OBJECT_PATH_ARRAY    ((const GVariantType *) "ao")
+
+

The type of an array of object paths.

+
+
+
+

G_VARIANT_TYPE_BYTESTRING

+
#define G_VARIANT_TYPE_BYTESTRING           ((const GVariantType *) "ay")
+
+

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.

+
+
+
+

G_VARIANT_TYPE_BYTESTRING_ARRAY

+
#define G_VARIANT_TYPE_BYTESTRING_ARRAY     ((const GVariantType *) "aay")
+
+

The type of an array of byte strings (an array of arrays of bytes).

+
+
+
+

G_VARIANT_TYPE_VARDICT

+
#define G_VARIANT_TYPE_VARDICT              ((const GVariantType *) "a{sv}")
+
+

The type of a dictionary mapping strings to variants (the ubiquitous +"a{sv}" type).

+

Since: 2.30

+
+
+
+

G_VARIANT_TYPE()

+
# define G_VARIANT_TYPE(type_string)            (g_variant_type_checked_ ((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

+
+

Parameters

+
+++++ + + + + + +

type_string

a well-formed GVariantType type string

 
+
+
+
+
+

g_variant_type_free ()

+
void
+g_variant_type_free (GVariantType *type);
+

Frees a GVariantType that was allocated with +g_variant_type_copy(), g_variant_type_new() or one of the container +type constructor functions.

+

In the case that type + is NULL, this function does nothing.

+

Since 2.24

+
+

Parameters

+
+++++ + + + + + +

type

a GVariantType, or NULL.

[allow-none]
+
+
+
+
+

g_variant_type_copy ()

+
GVariantType *
+g_variant_type_copy (const GVariantType *type);
+

Makes a copy of a GVariantType. It is appropriate to call +g_variant_type_free() on the return value. type + may not be NULL.

+
+

Parameters

+
+++++ + + + + + +

type

a GVariantType

 
+
+
+

Returns

+

a new GVariantType

+

Since 2.24.

+

[transfer full]

+
+
+
+
+

g_variant_type_new ()

+
GVariantType *
+g_variant_type_new (const gchar *type_string);
+

Creates a new GVariantType corresponding to the type string given +by type_string +. It is appropriate to call g_variant_type_free() on +the return value.

+

It is a programmer error to call this function with an invalid type +string. Use g_variant_type_string_is_valid() if you are unsure.

+
+

Parameters

+
+++++ + + + + + +

type_string

a valid GVariant type string

 
+
+
+

Returns

+

a new GVariantType.

+

[transfer full]

+
+

Since: 2.24

+
+
+
+

g_variant_type_string_is_valid ()

+
gboolean
+g_variant_type_string_is_valid (const gchar *type_string);
+

Checks if type_string + is a valid GVariant type string. This call is +equivalent to calling g_variant_type_string_scan() and confirming +that the following character is a nul terminator.

+
+

Parameters

+
+++++ + + + + + +

type_string

a pointer to any string

 
+
+
+

Returns

+

TRUE if type_string +is exactly one valid type string

+

Since 2.24

+
+
+
+
+

g_variant_type_string_scan ()

+
gboolean
+g_variant_type_string_scan (const gchar *string,
+                            const gchar *limit,
+                            const gchar **endptr);
+

Scan for a single complete and valid GVariant type string in string +. +The memory pointed to by limit + (or bytes beyond it) is never +accessed.

+

If a valid type string is found, endptr + is updated to point to the +first character past the end of the string that was found and TRUE +is returned.

+

If there is no valid type string starting at string +, or if the type +string does not end before limit + then FALSE is returned.

+

For the simple case of checking if a string is a valid type string, +see g_variant_type_string_is_valid().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a pointer to any string

 

limit

the end of string +, or NULL.

[allow-none]

endptr

location to store the end pointer, or NULL.

[out][allow-none]
+
+
+

Returns

+

TRUE if a valid type string was found

+
+

Since: 2.24

+
+
+
+

g_variant_type_get_string_length ()

+
gsize
+g_variant_type_get_string_length (const GVariantType *type);
+

Returns the length of the type string corresponding to the given +type +. This function must be used to determine the valid extent of +the memory region returned by g_variant_type_peek_string().

+
+

Parameters

+
+++++ + + + + + +

type

a GVariantType

 
+
+
+

Returns

+

the length of the corresponding type string

+

Since 2.24

+
+
+
+
+

g_variant_type_peek_string ()

+
const gchar *
+g_variant_type_peek_string (const GVariantType *type);
+

Returns the type string corresponding to the given type +. The +result is not nul-terminated; in order to determine its length you +must call g_variant_type_get_string_length().

+

To get a nul-terminated string, see g_variant_type_dup_string().

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

type

a GVariantType

 
+
+
+

Returns

+

the corresponding type string (not nul-terminated)

+

Since 2.24

+
+
+
+
+

g_variant_type_dup_string ()

+
gchar *
+g_variant_type_dup_string (const GVariantType *type);
+

Returns a newly-allocated copy of the type string corresponding to +type +. The returned string is nul-terminated. It is appropriate to +call g_free() on the return value.

+
+

Parameters

+
+++++ + + + + + +

type

a GVariantType

 
+
+
+

Returns

+

the corresponding type string

+

Since 2.24.

+

[transfer full]

+
+
+
+
+

g_variant_type_is_definite ()

+
gboolean
+g_variant_type_is_definite (const GVariantType *type);
+

Determines if the given type + is definite (ie: not indefinite).

+

A type is definite if its type string does not contain any indefinite +type characters ('*', '?', or 'r').

+

A GVariant instance may not have an indefinite type, so calling +this function on the result of g_variant_get_type() will always +result in TRUE being returned. Calling this function on an +indefinite type like G_VARIANT_TYPE_ARRAY, however, will result in +FALSE being returned.

+
+

Parameters

+
+++++ + + + + + +

type

a GVariantType

 
+
+
+

Returns

+

TRUE if type +is definite

+

Since 2.24

+
+
+
+
+

g_variant_type_is_container ()

+
gboolean
+g_variant_type_is_container (const GVariantType *type);
+

Determines if the given type + is a container type.

+

Container types are any array, maybe, tuple, or dictionary +entry types plus the variant type.

+

This function returns TRUE for any indefinite type for which every +definite subtype is a container -- G_VARIANT_TYPE_ARRAY, for +example.

+
+

Parameters

+
+++++ + + + + + +

type

a GVariantType

 
+
+
+

Returns

+

TRUE if type +is a container type

+

Since 2.24

+
+
+
+
+

g_variant_type_is_basic ()

+
gboolean
+g_variant_type_is_basic (const GVariantType *type);
+

Determines if the given type + is a basic type.

+

Basic types are booleans, bytes, integers, doubles, strings, object +paths and signatures.

+

Only a basic type may be used as the key of a dictionary entry.

+

This function returns FALSE for all indefinite types except +G_VARIANT_TYPE_BASIC.

+
+

Parameters

+
+++++ + + + + + +

type

a GVariantType

 
+
+
+

Returns

+

TRUE if type +is a basic type

+

Since 2.24

+
+
+
+
+

g_variant_type_is_maybe ()

+
gboolean
+g_variant_type_is_maybe (const GVariantType *type);
+

Determines if the given type + is a maybe type. This is true if the +type string for type + starts with an 'm'.

+

This function returns TRUE for any indefinite type for which every +definite subtype is a maybe type -- G_VARIANT_TYPE_MAYBE, for +example.

+
+

Parameters

+
+++++ + + + + + +

type

a GVariantType

 
+
+
+

Returns

+

TRUE if type +is a maybe type

+

Since 2.24

+
+
+
+
+

g_variant_type_is_array ()

+
gboolean
+g_variant_type_is_array (const GVariantType *type);
+

Determines if the given type + is an array type. This is true if the +type string for type + starts with an 'a'.

+

This function returns TRUE for any indefinite type for which every +definite subtype is an array type -- G_VARIANT_TYPE_ARRAY, for +example.

+
+

Parameters

+
+++++ + + + + + +

type

a GVariantType

 
+
+
+

Returns

+

TRUE if type +is an array type

+

Since 2.24

+
+
+
+
+

g_variant_type_is_tuple ()

+
gboolean
+g_variant_type_is_tuple (const GVariantType *type);
+

Determines if the given type + is a tuple type. This is true if the +type string for type + starts with a '(' or if type + is +G_VARIANT_TYPE_TUPLE.

+

This function returns TRUE for any indefinite type for which every +definite subtype is a tuple type -- G_VARIANT_TYPE_TUPLE, for +example.

+
+

Parameters

+
+++++ + + + + + +

type

a GVariantType

 
+
+
+

Returns

+

TRUE if type +is a tuple type

+

Since 2.24

+
+
+
+
+

g_variant_type_is_dict_entry ()

+
gboolean
+g_variant_type_is_dict_entry (const GVariantType *type);
+

Determines if the given type + is a dictionary entry type. This is +true if the type string for type + starts with a '{'.

+

This function returns TRUE for any indefinite type for which every +definite subtype is a dictionary entry type -- +G_VARIANT_TYPE_DICT_ENTRY, for example.

+
+

Parameters

+
+++++ + + + + + +

type

a GVariantType

 
+
+
+

Returns

+

TRUE if type +is a dictionary entry type

+

Since 2.24

+
+
+
+
+

g_variant_type_is_variant ()

+
gboolean
+g_variant_type_is_variant (const GVariantType *type);
+

Determines if the given type + is the variant type.

+
+

Parameters

+
+++++ + + + + + +

type

a GVariantType

 
+
+
+

Returns

+

TRUE if type +is the variant type

+

Since 2.24

+
+
+
+
+

g_variant_type_hash ()

+
guint
+g_variant_type_hash (gconstpointer type);
+

Hashes type +.

+

The argument type of type + is only gconstpointer to allow use with +GHashTable without function pointer casting. A valid +GVariantType must be provided.

+
+

Parameters

+
+++++ + + + + + +

type

a GVariantType.

[type GVariantType]
+
+
+

Returns

+

the hash value

+

Since 2.24

+
+
+
+
+

g_variant_type_equal ()

+
gboolean
+g_variant_type_equal (gconstpointer type1,
+                      gconstpointer type2);
+

Compares type1 + and type2 + for equality.

+

Only returns TRUE if the types are exactly equal. Even if one type +is an indefinite type and the other is a subtype of it, FALSE will +be returned if they are not exactly equal. If you want to check for +subtypes, use g_variant_type_is_subtype_of().

+

The argument types of type1 + and type2 + are only gconstpointer to +allow use with GHashTable without function pointer casting. For +both arguments, a valid GVariantType must be provided.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

type1

a GVariantType.

[type GVariantType]

type2

a GVariantType.

[type GVariantType]
+
+
+

Returns

+

TRUE if type1 +and type2 +are exactly equal

+

Since 2.24

+
+
+
+
+

g_variant_type_is_subtype_of ()

+
gboolean
+g_variant_type_is_subtype_of (const GVariantType *type,
+                              const GVariantType *supertype);
+

Checks if type + is a subtype of supertype +.

+

This function returns TRUE if type + is a subtype of supertype +. All +types are considered to be subtypes of themselves. Aside from that, +only indefinite types can have subtypes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

type

a GVariantType

 

supertype

a GVariantType

 
+
+
+

Returns

+

TRUE if type +is a subtype of supertype +

+

Since 2.24

+
+
+
+
+

g_variant_type_new_maybe ()

+
GVariantType *
+g_variant_type_new_maybe (const GVariantType *element);
+

Constructs the type corresponding to a maybe instance containing +type type + or Nothing.

+

It is appropriate to call g_variant_type_free() on the return value.

+

[constructor]

+
+

Parameters

+
+++++ + + + + + +

element

a GVariantType

 
+
+
+

Returns

+

a new maybe GVariantType

+

Since 2.24.

+

[transfer full]

+
+
+
+
+

g_variant_type_new_array ()

+
GVariantType *
+g_variant_type_new_array (const GVariantType *element);
+

Constructs the type corresponding to an array of elements of the +type type +.

+

It is appropriate to call g_variant_type_free() on the return value.

+

[constructor]

+
+

Parameters

+
+++++ + + + + + +

element

a GVariantType

 
+
+
+

Returns

+

a new array GVariantType

+

Since 2.24.

+

[transfer full]

+
+
+
+
+

g_variant_type_new_tuple ()

+
GVariantType *
+g_variant_type_new_tuple (const GVariantType * const *items,
+                          gint length);
+

Constructs a new tuple type, from items +.

+

length + is the number of items in items +, or -1 to indicate that +items + is NULL-terminated.

+

It is appropriate to call g_variant_type_free() on the return value.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

items

an array of GVariantTypes, one for each item.

[array length=length]

length

the length of items +, or -1

 
+
+
+

Returns

+

a new tuple GVariantType

+

Since 2.24.

+

[transfer full]

+
+
+
+
+

g_variant_type_new_dict_entry ()

+
GVariantType *
+g_variant_type_new_dict_entry (const GVariantType *key,
+                               const GVariantType *value);
+

Constructs the type corresponding to a dictionary entry with a key +of type key + and a value of type value +.

+

It is appropriate to call g_variant_type_free() on the return value.

+

[constructor]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

key

a basic GVariantType

 

value

a GVariantType

 
+
+
+

Returns

+

a new dictionary entry GVariantType

+

Since 2.24.

+

[transfer full]

+
+
+
+
+

g_variant_type_element ()

+
const GVariantType *
+g_variant_type_element (const GVariantType *type);
+

Determines the element type of an array or maybe type.

+

This function may only be used with array or maybe types.

+
+

Parameters

+
+++++ + + + + + +

type

an array or maybe GVariantType

 
+
+
+

Returns

+

the element type of type +

+

Since 2.24.

+

[transfer none]

+
+
+
+
+

g_variant_type_n_items ()

+
gsize
+g_variant_type_n_items (const GVariantType *type);
+

Determines the number of items contained in a tuple or +dictionary entry type.

+

This function may only be used with tuple or dictionary entry types, +but must not be used with the generic tuple type +G_VARIANT_TYPE_TUPLE.

+

In the case of a dictionary entry type, this function will always +return 2.

+
+

Parameters

+
+++++ + + + + + +

type

a tuple or dictionary entry GVariantType

 
+
+
+

Returns

+

the number of items in type +

+

Since 2.24

+
+
+
+
+

g_variant_type_first ()

+
const GVariantType *
+g_variant_type_first (const GVariantType *type);
+

Determines the first item type of a tuple or dictionary entry +type.

+

This function may only be used with tuple or dictionary entry types, +but must not be used with the generic tuple type +G_VARIANT_TYPE_TUPLE.

+

In the case of a dictionary entry type, this returns the type of +the key.

+

NULL is returned in case of type + being G_VARIANT_TYPE_UNIT.

+

This call, together with g_variant_type_next() provides an iterator +interface over tuple and dictionary entry types.

+
+

Parameters

+
+++++ + + + + + +

type

a tuple or dictionary entry GVariantType

 
+
+
+

Returns

+

the first item type of type +, or NULL

+

Since 2.24.

+

[transfer none]

+
+
+
+
+

g_variant_type_next ()

+
const GVariantType *
+g_variant_type_next (const GVariantType *type);
+

Determines the next item type of a tuple or dictionary entry +type.

+

type + must be the result of a previous call to +g_variant_type_first() or g_variant_type_next().

+

If called on the key type of a dictionary entry then this call +returns the value type. If called on the value type of a dictionary +entry then this call returns NULL.

+

For tuples, NULL is returned when type + is the last item in a tuple.

+
+

Parameters

+
+++++ + + + + + +

type

a GVariantType from a previous call

 
+
+
+

Returns

+

the next GVariantType after type +, or NULL

+

Since 2.24.

+

[transfer none]

+
+
+
+
+

g_variant_type_key ()

+
const GVariantType *
+g_variant_type_key (const GVariantType *type);
+

Determines the key type of a dictionary entry type.

+

This function may only be used with a dictionary entry type. Other +than the additional restriction, this call is equivalent to +g_variant_type_first().

+
+

Parameters

+
+++++ + + + + + +

type

a dictionary entry GVariantType

 
+
+
+

Returns

+

the key type of the dictionary entry

+

Since 2.24.

+

[transfer none]

+
+
+
+
+

g_variant_type_value ()

+
const GVariantType *
+g_variant_type_value (const GVariantType *type);
+

Determines the value type of a dictionary entry type.

+

This function may only be used with a dictionary entry type.

+
+

Parameters

+
+++++ + + + + + +

type

a dictionary entry GVariantType

 
+
+
+

Returns

+

the value type of the dictionary entry

+

Since 2.24.

+

[transfer none]

+
+
+
+
+

Types and Values

+
+

GVariantType

+
typedef struct _GVariantType 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().

+
+
+
+

See Also

+

GVariantType, GVariant

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Glob-style-pattern-matching.html b/docs/reference/glib/html/glib-Glob-style-pattern-matching.html new file mode 100644 index 0000000..3b2d609 --- /dev/null +++ b/docs/reference/glib/html/glib-Glob-style-pattern-matching.html @@ -0,0 +1,367 @@ + + + + +Glob-style pattern matching: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Glob-style pattern matching

+

Glob-style pattern matching — matches strings against patterns containing '*' + (wildcard) and '?' (joker)

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GPatternSpec * + +g_pattern_spec_new () +
+void + +g_pattern_spec_free () +
+gboolean + +g_pattern_spec_equal () +
+gboolean + +g_pattern_match () +
+gboolean + +g_pattern_match_string () +
+gboolean + +g_pattern_match_simple () +
+
+
+

Types and Values

+
++++ + + + + +
 GPatternSpec
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The g_pattern_match* functions match a string +against a pattern containing '*' and '?' wildcards with similar +semantics as the standard glob() function: '*' matches an arbitrary, +possibly empty, string, '?' matches an arbitrary character.

+

Note that in contrast to glob(), the '/' character can be matched by +the wildcards, there are no '[...]' character ranges and '*' and '?' +can not be escaped to include them literally in a pattern.

+

When multiple strings must be matched against the same pattern, it +is better to compile the pattern to a GPatternSpec using +g_pattern_spec_new() and use g_pattern_match_string() instead of +g_pattern_match_simple(). This avoids the overhead of repeated +pattern compilation.

+
+
+

Functions

+
+

g_pattern_spec_new ()

+
GPatternSpec *
+g_pattern_spec_new (const gchar *pattern);
+

Compiles a pattern to a GPatternSpec.

+
+

Parameters

+
+++++ + + + + + +

pattern

a zero-terminated UTF-8 encoded string

 
+
+
+

Returns

+

a newly-allocated GPatternSpec

+
+
+
+
+

g_pattern_spec_free ()

+
void
+g_pattern_spec_free (GPatternSpec *pspec);
+

Frees the memory allocated for the GPatternSpec.

+
+

Parameters

+
+++++ + + + + + +

pspec

a GPatternSpec

 
+
+
+
+
+

g_pattern_spec_equal ()

+
gboolean
+g_pattern_spec_equal (GPatternSpec *pspec1,
+                      GPatternSpec *pspec2);
+

Compares two compiled pattern specs and returns whether they will +match the same set of strings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

pspec1

a GPatternSpec

 

pspec2

another GPatternSpec

 
+
+
+

Returns

+

Whether the compiled patterns are equal

+
+
+
+
+

g_pattern_match ()

+
gboolean
+g_pattern_match (GPatternSpec *pspec,
+                 guint string_length,
+                 const gchar *string,
+                 const gchar *string_reversed);
+

Matches a string against a compiled pattern. Passing the correct +length of the string given is mandatory. The reversed string can be +omitted by passing NULL, this is more efficient if the reversed +version of the string to be matched is not at hand, as +g_pattern_match() will only construct it if the compiled pattern +requires reverse matches.

+

Note that, if the user code will (possibly) match a string against a +multitude of patterns containing wildcards, chances are high that +some patterns will require a reversed string. In this case, it's +more efficient to provide the reversed string to avoid multiple +constructions thereof in the various calls to g_pattern_match().

+

Note also that the reverse of a UTF-8 encoded string can in general +not be obtained by g_strreverse(). This works only if the string +does not contain any multibyte characters. GLib offers the +g_utf8_strreverse() function to reverse UTF-8 encoded strings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

pspec

a GPatternSpec

 

string_length

the length of string +(in bytes, i.e. strlen(), +not g_utf8_strlen())

 

string

the UTF-8 encoded string to match

 

string_reversed

the reverse of string +or NULL.

[allow-none]
+
+
+

Returns

+

TRUE if string +matches pspec +

+
+
+
+
+

g_pattern_match_string ()

+
gboolean
+g_pattern_match_string (GPatternSpec *pspec,
+                        const gchar *string);
+

Matches a string against a compiled pattern. If the string is to be +matched against more than one pattern, consider using +g_pattern_match() instead while supplying the reversed string.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

pspec

a GPatternSpec

 

string

the UTF-8 encoded string to match

 
+
+
+

Returns

+

TRUE if string +matches pspec +

+
+
+
+
+

g_pattern_match_simple ()

+
gboolean
+g_pattern_match_simple (const gchar *pattern,
+                        const gchar *string);
+

Matches a string against a pattern given as a string. If this +function is to be called in a loop, it's more efficient to compile +the pattern once with g_pattern_spec_new() and call +g_pattern_match_string() repeatedly.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

pattern

the UTF-8 encoded pattern

 

string

the UTF-8 encoded string to match

 
+
+
+

Returns

+

TRUE if string +matches pspec +

+
+
+
+
+

Types and Values

+
+

GPatternSpec

+
typedef struct _GPatternSpec GPatternSpec;
+

A GPatternSpec struct is the 'compiled' form of a pattern. This +structure is opaque and its fields cannot be accessed directly.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Hash-Tables.html b/docs/reference/glib/html/glib-Hash-Tables.html new file mode 100644 index 0000000..0cfa4f7 --- /dev/null +++ b/docs/reference/glib/html/glib-Hash-Tables.html @@ -0,0 +1,2257 @@ + + + + +Hash Tables: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Hash Tables

+

Hash Tables — associations between keys and values so that + given a key the value can be found quickly

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GHashTable * + +g_hash_table_new () +
+GHashTable * + +g_hash_table_new_full () +
+guint + +(*GHashFunc) () +
+gboolean + +(*GEqualFunc) () +
+gboolean + +g_hash_table_insert () +
+gboolean + +g_hash_table_replace () +
+gboolean + +g_hash_table_add () +
+gboolean + +g_hash_table_contains () +
+guint + +g_hash_table_size () +
+gpointer + +g_hash_table_lookup () +
+gboolean + +g_hash_table_lookup_extended () +
+void + +g_hash_table_foreach () +
+gpointer + +g_hash_table_find () +
+void + +(*GHFunc) () +
+gboolean + +g_hash_table_remove () +
+gboolean + +g_hash_table_steal () +
+guint + +g_hash_table_foreach_remove () +
+guint + +g_hash_table_foreach_steal () +
+void + +g_hash_table_remove_all () +
+void + +g_hash_table_steal_all () +
+GList * + +g_hash_table_get_keys () +
+GList * + +g_hash_table_get_values () +
+gpointer * + +g_hash_table_get_keys_as_array () +
+gboolean + +(*GHRFunc) () +
#define +g_hash_table_freeze() +
#define +g_hash_table_thaw() +
+void + +g_hash_table_destroy () +
+GHashTable * + +g_hash_table_ref () +
+void + +g_hash_table_unref () +
+void + +g_hash_table_iter_init () +
+gboolean + +g_hash_table_iter_next () +
+GHashTable * + +g_hash_table_iter_get_hash_table () +
+void + +g_hash_table_iter_replace () +
+void + +g_hash_table_iter_remove () +
+void + +g_hash_table_iter_steal () +
+gboolean + +g_direct_equal () +
+guint + +g_direct_hash () +
+gboolean + +g_int_equal () +
+guint + +g_int_hash () +
+gboolean + +g_int64_equal () +
+guint + +g_int64_hash () +
+gboolean + +g_double_equal () +
+guint + +g_double_hash () +
+gboolean + +g_str_equal () +
+guint + +g_str_hash () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GHashTable
structGHashTableIter
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

A GHashTable provides associations between keys and values which is +optimized so that given a key, the associated value can be found +very quickly.

+

Note that neither keys nor values are copied when inserted into the +GHashTable, so they must exist for the lifetime of the GHashTable. +This means that the use of static strings is OK, but temporary +strings (i.e. those created in buffers and those returned by GTK+ +widgets) should be copied with g_strdup() before being inserted.

+

If keys or values are dynamically allocated, you must be careful to +ensure that they are freed when they are removed from the +GHashTable, and also when they are overwritten by new insertions +into the GHashTable. It is also not advisable to mix static strings +and dynamically-allocated strings in a GHashTable, because it then +becomes difficult to determine whether the string should be freed.

+

To create a GHashTable, use g_hash_table_new().

+

To insert a key and value into a GHashTable, use +g_hash_table_insert().

+

To lookup a value corresponding to a given key, use +g_hash_table_lookup() and g_hash_table_lookup_extended().

+

g_hash_table_lookup_extended() can also be used to simply +check if a key is present in the hash table.

+

To remove a key and value, use g_hash_table_remove().

+

To call a function for each key and value pair use +g_hash_table_foreach() or use a iterator to iterate over the +key/value pairs in the hash table, see GHashTableIter.

+

To destroy a GHashTable use g_hash_table_destroy().

+

A common use-case for hash tables is to store information about a +set of keys, without associating any particular value with each +key. GHashTable optimizes one way of doing so: If you store only +key-value pairs where key == value, then GHashTable does not +allocate memory to store the values, which can be a considerable +space saving, if your set is large. The functions +g_hash_table_add() and g_hash_table_contains() are designed to be +used when using GHashTable this way.

+
+
+

Functions

+
+

g_hash_table_new ()

+
GHashTable *
+g_hash_table_new (GHashFunc hash_func,
+                  GEqualFunc key_equal_func);
+

Creates a new GHashTable with a reference count of 1.

+

Hash values returned by hash_func + are used to determine where keys +are stored within the GHashTable data structure. The g_direct_hash(), +g_int_hash(), g_int64_hash(), g_double_hash() and g_str_hash() +functions are provided for some common types of keys. +If hash_func + is NULL, g_direct_hash() is used.

+

key_equal_func + is used when looking up keys in the GHashTable. +The g_direct_equal(), g_int_equal(), g_int64_equal(), g_double_equal() +and g_str_equal() functions are provided for the most common types +of keys. If key_equal_func + is NULL, keys are compared directly in +a similar fashion to g_direct_equal(), but without the overhead of +a function call.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hash_func

a function to create a hash value from a key

 

key_equal_func

a function to check two keys for equality

 
+
+
+

Returns

+

a new GHashTable

+
+
+
+
+

g_hash_table_new_full ()

+
GHashTable *
+g_hash_table_new_full (GHashFunc hash_func,
+                       GEqualFunc key_equal_func,
+                       GDestroyNotify key_destroy_func,
+                       GDestroyNotify value_destroy_func);
+

Creates a new GHashTable like g_hash_table_new() with a reference +count of 1 and allows to specify functions to free the memory +allocated for the key and value that get called when removing the +entry from the GHashTable.

+

Since version 2.42 it is permissible for destroy notify functions to +recursively remove further items from the hash table. This is only +permissible if the application still holds a reference to the hash table. +This means that you may need to ensure that the hash table is empty by +calling g_hash_table_remove_all before releasing the last reference using +g_hash_table_unref().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

hash_func

a function to create a hash value from a key

 

key_equal_func

a function to check two keys for equality

 

key_destroy_func

a function to free the memory allocated for the key +used when removing the entry from the GHashTable, or NULL +if you don't want to supply such a function.

[nullable]

value_destroy_func

a function to free the memory allocated for the +value used when removing the entry from the GHashTable, or NULL +if you don't want to supply such a function.

[nullable]
+
+
+

Returns

+

a new GHashTable

+
+
+
+
+

GHashFunc ()

+
guint
+(*GHashFunc) (gconstpointer key);
+

Specifies the type of the hash function which is passed to +g_hash_table_new() when a GHashTable is created.

+

The function is passed a key and should return a guint hash value. +The functions g_direct_hash(), g_int_hash() and g_str_hash() provide +hash functions which can be used when the key is a gpointer, gint*, +and gchar* respectively.

+

g_direct_hash() is also the appropriate hash function for keys +of the form GINT_TO_POINTER (n) (or similar macros).

+

<!-- FIXME: Need more here. --> A good hash functions should produce +hash values that are evenly distributed over a fairly large range. +The modulus is taken with the hash table size (a prime number) to +find the 'bucket' to place each key into. The function should also +be very fast, since it is called for each key lookup.

+

Note that the hash functions provided by GLib have these qualities, +but are not particularly robust against manufactured keys that +cause hash collisions. Therefore, you should consider choosing +a more secure hash function when using a GHashTable with keys +that originate in untrusted data (such as HTTP requests). +Using g_str_hash() in that situation might make your application +vulerable to +Algorithmic Complexity Attacks.

+

The key to choosing a good hash is unpredictability. Even +cryptographic hashes are very easy to find collisions for when the +remainder is taken modulo a somewhat predictable prime number. There +must be an element of randomness that an attacker is unable to guess.

+
+

Parameters

+
+++++ + + + + + +

key

a key

 
+
+
+

Returns

+

the hash value corresponding to the key

+
+
+
+
+

GEqualFunc ()

+
gboolean
+(*GEqualFunc) (gconstpointer a,
+               gconstpointer b);
+

Specifies the type of a function used to test two values for +equality. The function should return TRUE if both values are equal +and FALSE otherwise.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

a

a value

 

b

a value to compare with

 
+
+
+

Returns

+

TRUE if a += b +; FALSE otherwise

+
+
+
+
+

g_hash_table_insert ()

+
gboolean
+g_hash_table_insert (GHashTable *hash_table,
+                     gpointer key,
+                     gpointer value);
+

Inserts a new key and value into a GHashTable.

+

If the key already exists in the GHashTable its current +value is replaced with the new value. If you supplied a +value_destroy_func + when creating the GHashTable, the old +value is freed using that function. If you supplied a +key_destroy_func + when creating the GHashTable, the passed +key is freed using that function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

hash_table

a GHashTable

 

key

a key to insert

 

value

the value to associate with the key

 
+
+
+

Returns

+

TRUE if the key did not exist yet

+
+
+
+
+

g_hash_table_replace ()

+
gboolean
+g_hash_table_replace (GHashTable *hash_table,
+                      gpointer key,
+                      gpointer value);
+

Inserts a new key and value into a GHashTable similar to +g_hash_table_insert(). The difference is that if the key +already exists in the GHashTable, it gets replaced by the +new key. If you supplied a value_destroy_func + when creating +the GHashTable, the old value is freed using that function. +If you supplied a key_destroy_func + when creating the +GHashTable, the old key is freed using that function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

hash_table

a GHashTable

 

key

a key to insert

 

value

the value to associate with the key

 
+
+
+

Returns

+

TRUE if the key did not exist yet

+
+
+
+
+

g_hash_table_add ()

+
gboolean
+g_hash_table_add (GHashTable *hash_table,
+                  gpointer key);
+

This is a convenience function for using a GHashTable as a set. It +is equivalent to calling g_hash_table_replace() with key + as both the +key and the value.

+

When a hash table only ever contains keys that have themselves as the +corresponding value it is able to be stored more efficiently. See +the discussion in the section description.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hash_table

a GHashTable

 

key

a key to insert

 
+
+
+

Returns

+

TRUE if the key did not exist yet

+
+

Since: 2.32

+
+
+
+

g_hash_table_contains ()

+
gboolean
+g_hash_table_contains (GHashTable *hash_table,
+                       gconstpointer key);
+

Checks if key + is in hash_table +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hash_table

a GHashTable

 

key

a key to check

 
+
+
+

Returns

+

TRUE if key +is in hash_table +, FALSE otherwise.

+
+

Since: 2.32

+
+
+
+

g_hash_table_size ()

+
guint
+g_hash_table_size (GHashTable *hash_table);
+

Returns the number of elements contained in the GHashTable.

+
+

Parameters

+
+++++ + + + + + +

hash_table

a GHashTable

 
+
+
+

Returns

+

the number of key/value pairs in the GHashTable.

+
+
+
+
+

g_hash_table_lookup ()

+
gpointer
+g_hash_table_lookup (GHashTable *hash_table,
+                     gconstpointer key);
+

Looks up a key in a GHashTable. Note that this function cannot +distinguish between a key that is not present and one which is present +and has the value NULL. If you need this distinction, use +g_hash_table_lookup_extended().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hash_table

a GHashTable

 

key

the key to look up

 
+
+
+

Returns

+

the associated value, or NULL if the key is not found.

+

[nullable]

+
+
+
+
+

g_hash_table_lookup_extended ()

+
gboolean
+g_hash_table_lookup_extended (GHashTable *hash_table,
+                              gconstpointer lookup_key,
+                              gpointer *orig_key,
+                              gpointer *value);
+

Looks up a key in the GHashTable, returning the original key and the +associated value and a gboolean which is TRUE if the key was found. This +is useful if you need to free the memory allocated for the original key, +for example before calling g_hash_table_remove().

+

You can actually pass NULL for lookup_key + to test +whether the NULL key exists, provided the hash and equal functions +of hash_table + are NULL-safe.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

hash_table

a GHashTable

 

lookup_key

the key to look up

 

orig_key

return location for the original key.

[out][optional][nullable]

value

return location for the value associated +with the key.

[out][optional][nullable]
+
+
+

Returns

+

TRUE if the key was found in the GHashTable

+
+
+
+
+

g_hash_table_foreach ()

+
void
+g_hash_table_foreach (GHashTable *hash_table,
+                      GHFunc func,
+                      gpointer user_data);
+

Calls the given function for each of the key/value pairs in the +GHashTable. The function is passed the key and value of each +pair, and the given user_data + parameter. The hash table may not +be modified while iterating over it (you can't add/remove +items). To remove all items matching a predicate, use +g_hash_table_foreach_remove().

+

See g_hash_table_find() for performance caveats for linear +order searches in contrast to g_hash_table_lookup().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

hash_table

a GHashTable

 

func

the function to call for each key/value pair

 

user_data

user data to pass to the function

 
+
+
+
+
+

g_hash_table_find ()

+
gpointer
+g_hash_table_find (GHashTable *hash_table,
+                   GHRFunc predicate,
+                   gpointer user_data);
+

Calls the given function for key/value pairs in the GHashTable +until predicate + returns TRUE. The function is passed the key +and value of each pair, and the given user_data + parameter. The +hash table may not be modified while iterating over it (you can't +add/remove items).

+

Note, that hash tables are really only optimized for forward +lookups, i.e. g_hash_table_lookup(). So code that frequently issues +g_hash_table_find() or g_hash_table_foreach() (e.g. in the order of +once per every entry in a hash table) should probably be reworked +to use additional or different data structures for reverse lookups +(keep in mind that an O(n) find/foreach operation issued for all n +values in a hash table ends up needing O(n*n) operations).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

hash_table

a GHashTable

 

predicate

function to test the key/value pairs for a certain property

 

user_data

user data to pass to the function

 
+
+
+

Returns

+

The value of the first key/value pair is returned, +for which predicate +evaluates to TRUE. If no pair with the +requested property is found, NULL is returned.

+

[nullable]

+
+

Since: 2.4

+
+
+
+

GHFunc ()

+
void
+(*GHFunc) (gpointer key,
+           gpointer value,
+           gpointer user_data);
+

Specifies the type of the function passed to g_hash_table_foreach(). +It is called with each key/value pair, together with the user_data + +parameter which is passed to g_hash_table_foreach().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

key

a key

 

value

the value corresponding to the key

 

user_data

user data passed to g_hash_table_foreach()

 
+
+
+
+
+

g_hash_table_remove ()

+
gboolean
+g_hash_table_remove (GHashTable *hash_table,
+                     gconstpointer key);
+

Removes a key and its associated value from a GHashTable.

+

If the GHashTable was created using g_hash_table_new_full(), the +key and value are freed using the supplied destroy functions, otherwise +you have to make sure that any dynamically allocated values are freed +yourself.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hash_table

a GHashTable

 

key

the key to remove

 
+
+
+

Returns

+

TRUE if the key was found and removed from the GHashTable

+
+
+
+
+

g_hash_table_steal ()

+
gboolean
+g_hash_table_steal (GHashTable *hash_table,
+                    gconstpointer key);
+

Removes a key and its associated value from a GHashTable without +calling the key and value destroy functions.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hash_table

a GHashTable

 

key

the key to remove

 
+
+
+

Returns

+

TRUE if the key was found and removed from the GHashTable

+
+
+
+
+

g_hash_table_foreach_remove ()

+
guint
+g_hash_table_foreach_remove (GHashTable *hash_table,
+                             GHRFunc func,
+                             gpointer user_data);
+

Calls the given function for each key/value pair in the +GHashTable. If the function returns TRUE, then the key/value +pair is removed from the GHashTable. If you supplied key or +value destroy functions when creating the GHashTable, they are +used to free the memory allocated for the removed keys and values.

+

See GHashTableIter for an alternative way to loop over the +key/value pairs in the hash table.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

hash_table

a GHashTable

 

func

the function to call for each key/value pair

 

user_data

user data to pass to the function

 
+
+
+

Returns

+

the number of key/value pairs removed

+
+
+
+
+

g_hash_table_foreach_steal ()

+
guint
+g_hash_table_foreach_steal (GHashTable *hash_table,
+                            GHRFunc func,
+                            gpointer user_data);
+

Calls the given function for each key/value pair in the +GHashTable. If the function returns TRUE, then the key/value +pair is removed from the GHashTable, but no key or value +destroy functions are called.

+

See GHashTableIter for an alternative way to loop over the +key/value pairs in the hash table.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

hash_table

a GHashTable

 

func

the function to call for each key/value pair

 

user_data

user data to pass to the function

 
+
+
+

Returns

+

the number of key/value pairs removed.

+
+
+
+
+

g_hash_table_remove_all ()

+
void
+g_hash_table_remove_all (GHashTable *hash_table);
+

Removes all keys and their associated values from a GHashTable.

+

If the GHashTable was created using g_hash_table_new_full(), +the keys and values are freed using the supplied destroy functions, +otherwise you have to make sure that any dynamically allocated +values are freed yourself.

+
+

Parameters

+
+++++ + + + + + +

hash_table

a GHashTable

 
+
+

Since: 2.12

+
+
+
+

g_hash_table_steal_all ()

+
void
+g_hash_table_steal_all (GHashTable *hash_table);
+

Removes all keys and their associated values from a GHashTable +without calling the key and value destroy functions.

+
+

Parameters

+
+++++ + + + + + +

hash_table

a GHashTable

 
+
+

Since: 2.12

+
+
+
+

g_hash_table_get_keys ()

+
GList *
+g_hash_table_get_keys (GHashTable *hash_table);
+

Retrieves every key inside hash_table +. The returned data is valid +until changes to the hash release those keys.

+

This iterates over every entry in the hash table to build its return value. +To iterate over the entries in a GHashTable more efficiently, use a +GHashTableIter.

+
+

Parameters

+
+++++ + + + + + +

hash_table

a GHashTable

 
+
+
+

Returns

+

a GList containing all the keys +inside the hash table. The content of the list is owned by the +hash table and should not be modified or freed. Use g_list_free() +when done using the list.

+

[transfer container]

+
+

Since: 2.14

+
+
+
+

g_hash_table_get_values ()

+
GList *
+g_hash_table_get_values (GHashTable *hash_table);
+

Retrieves every value inside hash_table +. The returned data +is valid until hash_table + is modified.

+

This iterates over every entry in the hash table to build its return value. +To iterate over the entries in a GHashTable more efficiently, use a +GHashTableIter.

+
+

Parameters

+
+++++ + + + + + +

hash_table

a GHashTable

 
+
+
+

Returns

+

a GList containing all the values +inside the hash table. The content of the list is owned by the +hash table and should not be modified or freed. Use g_list_free() +when done using the list.

+

[transfer container]

+
+

Since: 2.14

+
+
+
+

g_hash_table_get_keys_as_array ()

+
gpointer *
+g_hash_table_get_keys_as_array (GHashTable *hash_table,
+                                guint *length);
+

Retrieves every key inside hash_table +, as an array.

+

The returned array is NULL-terminated but may contain NULL as a +key. Use length + to determine the true length if it's possible that +NULL was used as the value for a key.

+

Note: in the common case of a string-keyed GHashTable, the return +value of this function can be conveniently cast to (const gchar **).

+

This iterates over every entry in the hash table to build its return value. +To iterate over the entries in a GHashTable more efficiently, use a +GHashTableIter.

+

You should always free the return result with g_free(). In the +above-mentioned case of a string-keyed hash table, it may be +appropriate to use g_strfreev() if you call g_hash_table_steal_all() +first to transfer ownership of the keys.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hash_table

a GHashTable

 

length

the length of the returned array.

[out]
+
+
+

Returns

+

a +NULL-terminated array containing each key from the table.

+

[array length=length][transfer container]

+
+

Since: 2.40

+
+
+
+

GHRFunc ()

+
gboolean
+(*GHRFunc) (gpointer key,
+            gpointer value,
+            gpointer user_data);
+

Specifies the type of the function passed to +g_hash_table_foreach_remove(). It is called with each key/value +pair, together with the user_data + parameter passed to +g_hash_table_foreach_remove(). It should return TRUE if the +key/value pair should be removed from the GHashTable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

key

a key

 

value

the value associated with the key

 

user_data

user data passed to g_hash_table_remove()

 
+
+
+

Returns

+

TRUE if the key/value pair should be removed from the +GHashTable

+
+
+
+
+

g_hash_table_freeze()

+
#define             g_hash_table_freeze(hash_table)
+

g_hash_table_freeze is deprecated and should not be used in newly-written code.

+

This function is deprecated and will be removed in the next major +release of GLib. It does nothing.

+
+

Parameters

+
+++++ + + + + + +

hash_table

a GHashTable

 
+
+
+
+
+

g_hash_table_thaw()

+
#define             g_hash_table_thaw(hash_table)
+

g_hash_table_thaw is deprecated and should not be used in newly-written code.

+

This function is deprecated and will be removed in the next major +release of GLib. It does nothing.

+
+

Parameters

+
+++++ + + + + + +

hash_table

a GHashTable

 
+
+
+
+
+

g_hash_table_destroy ()

+
void
+g_hash_table_destroy (GHashTable *hash_table);
+

Destroys all keys and values in the GHashTable and decrements its +reference count by 1. If keys and/or values are dynamically allocated, +you should either free them first or create the GHashTable with destroy +notifiers using g_hash_table_new_full(). In the latter case the destroy +functions you supplied will be called on all keys and values during the +destruction phase.

+
+

Parameters

+
+++++ + + + + + +

hash_table

a GHashTable

 
+
+
+
+
+

g_hash_table_ref ()

+
GHashTable *
+g_hash_table_ref (GHashTable *hash_table);
+

Atomically increments the reference count of hash_table + by one. +This function is MT-safe and may be called from any thread.

+
+

Parameters

+
+++++ + + + + + +

hash_table

a valid GHashTable

 
+
+
+

Returns

+

the passed in GHashTable

+
+

Since: 2.10

+
+
+
+

g_hash_table_unref ()

+
void
+g_hash_table_unref (GHashTable *hash_table);
+

Atomically decrements the reference count of hash_table + by one. +If the reference count drops to 0, all keys and values will be +destroyed, and all memory allocated by the hash table is released. +This function is MT-safe and may be called from any thread.

+
+

Parameters

+
+++++ + + + + + +

hash_table

a valid GHashTable

 
+
+

Since: 2.10

+
+
+
+

g_hash_table_iter_init ()

+
void
+g_hash_table_iter_init (GHashTableIter *iter,
+                        GHashTable *hash_table);
+

Initializes a key/value pair iterator and associates it with +hash_table +. Modifying the hash table after calling this function +invalidates the returned iterator.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
GHashTableIter iter;
+gpointer key, value;
+
+g_hash_table_iter_init (&iter, hash_table);
+while (g_hash_table_iter_next (&iter, &key, &value))
+  {
+    // do something with key and value
+  }
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

iter

an uninitialized GHashTableIter

 

hash_table

a GHashTable

 
+
+

Since: 2.16

+
+
+
+

g_hash_table_iter_next ()

+
gboolean
+g_hash_table_iter_next (GHashTableIter *iter,
+                        gpointer *key,
+                        gpointer *value);
+

Advances iter + and retrieves the key and/or value that are now +pointed to as a result of this advancement. If FALSE is returned, +key + and value + are not set, and the iterator becomes invalid.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

iter

an initialized GHashTableIter

 

key

a location to store the key.

[out][optional]

value

a location to store the value.

[out][nullable][optional]
+
+
+

Returns

+

FALSE if the end of the GHashTable has been reached.

+
+

Since: 2.16

+
+
+
+

g_hash_table_iter_get_hash_table ()

+
GHashTable *
+g_hash_table_iter_get_hash_table (GHashTableIter *iter);
+

Returns the GHashTable associated with iter +.

+
+

Parameters

+
+++++ + + + + + +

iter

an initialized GHashTableIter

 
+
+
+

Returns

+

the GHashTable associated with iter +.

+
+

Since: 2.16

+
+
+
+

g_hash_table_iter_replace ()

+
void
+g_hash_table_iter_replace (GHashTableIter *iter,
+                           gpointer value);
+

Replaces the value currently pointed to by the iterator +from its associated GHashTable. Can only be called after +g_hash_table_iter_next() returned TRUE.

+

If you supplied a value_destroy_func + when creating the +GHashTable, the old value is freed using that function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

iter

an initialized GHashTableIter

 

value

the value to replace with

 
+
+

Since: 2.30

+
+
+
+

g_hash_table_iter_remove ()

+
void
+g_hash_table_iter_remove (GHashTableIter *iter);
+

Removes the key/value pair currently pointed to by the iterator +from its associated GHashTable. Can only be called after +g_hash_table_iter_next() returned TRUE, and cannot be called +more than once for the same key/value pair.

+

If the GHashTable was created using g_hash_table_new_full(), +the key and value are freed using the supplied destroy functions, +otherwise you have to make sure that any dynamically allocated +values are freed yourself.

+

It is safe to continue iterating the GHashTable afterward:

+
+ + + + + + + +
1
+2
+3
+4
+5
while (g_hash_table_iter_next (&iter, &key, &value))
+  {
+    if (condition)
+      g_hash_table_iter_remove (&iter);
+  }
+
+ +

+
+

Parameters

+
+++++ + + + + + +

iter

an initialized GHashTableIter

 
+
+

Since: 2.16

+
+
+
+

g_hash_table_iter_steal ()

+
void
+g_hash_table_iter_steal (GHashTableIter *iter);
+

Removes the key/value pair currently pointed to by the +iterator from its associated GHashTable, without calling +the key and value destroy functions. Can only be called +after g_hash_table_iter_next() returned TRUE, and cannot +be called more than once for the same key/value pair.

+
+

Parameters

+
+++++ + + + + + +

iter

an initialized GHashTableIter

 
+
+

Since: 2.16

+
+
+
+

g_direct_equal ()

+
gboolean
+g_direct_equal (gconstpointer v1,
+                gconstpointer v2);
+

Compares two gpointer arguments and returns TRUE if they are equal. +It can be passed to g_hash_table_new() as the key_equal_func + +parameter, when using opaque pointers compared by pointer value as +keys in a GHashTable.

+

This equality function is also appropriate for keys that are integers +stored in pointers, such as GINT_TO_POINTER (n).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

v1

a key.

[nullable]

v2

a key to compare with v1 +.

[nullable]
+
+
+

Returns

+

TRUE if the two keys match.

+
+
+
+
+

g_direct_hash ()

+
guint
+g_direct_hash (gconstpointer v);
+

Converts a gpointer to a hash value. +It can be passed to g_hash_table_new() as the hash_func + parameter, +when using opaque pointers compared by pointer value as keys in a +GHashTable.

+

This hash function is also appropriate for keys that are integers +stored in pointers, such as GINT_TO_POINTER (n).

+
+

Parameters

+
+++++ + + + + + +

v

a gpointer key.

[nullable]
+
+
+

Returns

+

a hash value corresponding to the key.

+
+
+
+
+

g_int_equal ()

+
gboolean
+g_int_equal (gconstpointer v1,
+             gconstpointer v2);
+

Compares the two gint values being pointed to and returns +TRUE if they are equal. +It can be passed to g_hash_table_new() as the key_equal_func + +parameter, when using non-NULL pointers to integers as keys in a +GHashTable.

+

Note that this function acts on pointers to gint, not on gint +directly: if your hash table's keys are of the form +GINT_TO_POINTER (n), use g_direct_equal() instead.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

v1

a pointer to a gint key.

[not nullable]

v2

a pointer to a gint key to compare with v1 +.

[not nullable]
+
+
+

Returns

+

TRUE if the two keys match.

+
+
+
+
+

g_int_hash ()

+
guint
+g_int_hash (gconstpointer v);
+

Converts a pointer to a gint to a hash value. +It can be passed to g_hash_table_new() as the hash_func + parameter, +when using non-NULL pointers to integer values as keys in a GHashTable.

+

Note that this function acts on pointers to gint, not on gint +directly: if your hash table's keys are of the form +GINT_TO_POINTER (n), use g_direct_hash() instead.

+
+

Parameters

+
+++++ + + + + + +

v

a pointer to a gint key.

[not nullable]
+
+
+

Returns

+

a hash value corresponding to the key.

+
+
+
+
+

g_int64_equal ()

+
gboolean
+g_int64_equal (gconstpointer v1,
+               gconstpointer v2);
+

Compares the two gint64 values being pointed to and returns +TRUE if they are equal. +It can be passed to g_hash_table_new() as the key_equal_func + +parameter, when using non-NULL pointers to 64-bit integers as keys in a +GHashTable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

v1

a pointer to a gint64 key.

[not nullable]

v2

a pointer to a gint64 key to compare with v1 +.

[not nullable]
+
+
+

Returns

+

TRUE if the two keys match.

+
+

Since: 2.22

+
+
+
+

g_int64_hash ()

+
guint
+g_int64_hash (gconstpointer v);
+

Converts a pointer to a gint64 to a hash value.

+

It can be passed to g_hash_table_new() as the hash_func + parameter, +when using non-NULL pointers to 64-bit integer values as keys in a +GHashTable.

+
+

Parameters

+
+++++ + + + + + +

v

a pointer to a gint64 key.

[not nullable]
+
+
+

Returns

+

a hash value corresponding to the key.

+
+

Since: 2.22

+
+
+
+

g_double_equal ()

+
gboolean
+g_double_equal (gconstpointer v1,
+                gconstpointer v2);
+

Compares the two gdouble values being pointed to and returns +TRUE if they are equal. +It can be passed to g_hash_table_new() as the key_equal_func + +parameter, when using non-NULL pointers to doubles as keys in a +GHashTable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

v1

a pointer to a gdouble key.

[not nullable]

v2

a pointer to a gdouble key to compare with v1 +.

[not nullable]
+
+
+

Returns

+

TRUE if the two keys match.

+
+

Since: 2.22

+
+
+
+

g_double_hash ()

+
guint
+g_double_hash (gconstpointer v);
+

Converts a pointer to a gdouble to a hash value. +It can be passed to g_hash_table_new() as the hash_func + parameter, +It can be passed to g_hash_table_new() as the hash_func + parameter, +when using non-NULL pointers to doubles as keys in a GHashTable.

+
+

Parameters

+
+++++ + + + + + +

v

a pointer to a gdouble key.

[not nullable]
+
+
+

Returns

+

a hash value corresponding to the key.

+
+

Since: 2.22

+
+
+
+

g_str_equal ()

+
gboolean
+g_str_equal (gconstpointer v1,
+             gconstpointer v2);
+

Compares two strings for byte-by-byte equality and returns TRUE +if they are equal. It can be passed to g_hash_table_new() as the +key_equal_func + parameter, when using non-NULL strings as keys in a +GHashTable.

+

Note that this function is primarily meant as a hash table comparison +function. For a general-purpose, NULL-safe string comparison function, +see g_strcmp0().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

v1

a key.

[not nullable]

v2

a key to compare with v1 +.

[not nullable]
+
+
+

Returns

+

TRUE if the two keys match

+
+
+
+
+

g_str_hash ()

+
guint
+g_str_hash (gconstpointer v);
+

Converts a string to a hash value.

+

This function implements the widely used "djb" hash apparently +posted by Daniel Bernstein to comp.lang.c some time ago. The 32 +bit unsigned hash value starts at 5381 and for each byte 'c' in +the string, is updated: hash = hash * 33 + c. This function +uses the signed value of each byte.

+

It can be passed to g_hash_table_new() as the hash_func + parameter, +when using non-NULL strings as keys in a GHashTable.

+

Note that this function may not be a perfect fit for all use cases. +For example, it produces some hash collisions with strings as short +as 2.

+
+

Parameters

+
+++++ + + + + + +

v

a string key.

[not nullable]
+
+
+

Returns

+

a hash value corresponding to the key

+
+
+
+
+

Types and Values

+
+

GHashTable

+
typedef struct _GHashTable GHashTable;
+

The GHashTable struct is an opaque data structure to represent a +Hash Table. It should only be accessed via the +following functions.

+
+
+
+

struct GHashTableIter

+
struct GHashTableIter {
+};
+
+

A GHashTableIter structure represents an iterator that can be used +to iterate over the elements of a GHashTable. GHashTableIter +structures are typically allocated on the stack and then initialized +with g_hash_table_iter_init().

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Hook-Functions.html b/docs/reference/glib/html/glib-Hook-Functions.html new file mode 100644 index 0000000..665f711 --- /dev/null +++ b/docs/reference/glib/html/glib-Hook-Functions.html @@ -0,0 +1,1797 @@ + + + + +Hook Functions: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Hook Functions

+

Hook Functions — support for manipulating lists of hook functions

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +(*GHookFinalizeFunc) () +
+void + +(*GHookFunc) () +
+gboolean + +(*GHookCheckFunc) () +
+void + +g_hook_list_init () +
+void + +g_hook_list_invoke () +
+void + +g_hook_list_invoke_check () +
+void + +g_hook_list_marshal () +
+void + +(*GHookMarshaller) () +
+void + +g_hook_list_marshal_check () +
+gboolean + +(*GHookCheckMarshaller) () +
+void + +g_hook_list_clear () +
+GHook * + +g_hook_alloc () +
#define +g_hook_append() +
+void + +g_hook_prepend () +
+void + +g_hook_insert_before () +
+void + +g_hook_insert_sorted () +
+gint + +(*GHookCompareFunc) () +
+gint + +g_hook_compare_ids () +
+GHook * + +g_hook_get () +
+GHook * + +g_hook_find () +
+gboolean + +(*GHookFindFunc) () +
+GHook * + +g_hook_find_data () +
+GHook * + +g_hook_find_func () +
+GHook * + +g_hook_find_func_data () +
+GHook * + +g_hook_first_valid () +
+GHook * + +g_hook_next_valid () +
#define +G_HOOK_FLAGS() +
#define +G_HOOK() +
#define +G_HOOK_IS_VALID() +
#define +G_HOOK_ACTIVE() +
#define +G_HOOK_IN_CALL() +
#define +G_HOOK_IS_UNLINKED() +
+GHook * + +g_hook_ref () +
+void + +g_hook_unref () +
+void + +g_hook_free () +
+gboolean + +g_hook_destroy () +
+void + +g_hook_destroy_link () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + +
structGHookList
structGHook
enumGHookFlagMask
#defineG_HOOK_FLAG_USER_SHIFT
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The GHookList, GHook and their related functions provide support for +lists of hook functions. Functions can be added and removed from the lists, +and the list of hook functions can be invoked.

+
+
+

Functions

+
+

GHookFinalizeFunc ()

+
void
+(*GHookFinalizeFunc) (GHookList *hook_list,
+                      GHook *hook);
+

Defines the type of function to be called when a hook in a +list of hooks gets finalized.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook_list

a GHookList

 

hook

the hook in hook_list +that gets finalized

 
+
+
+
+
+

GHookFunc ()

+
void
+(*GHookFunc) (gpointer data);
+

Defines the type of a hook function that can be invoked +by g_hook_list_invoke().

+
+

Parameters

+
+++++ + + + + + +

data

the data field of the GHook is passed to the hook function here

 
+
+
+
+
+

GHookCheckFunc ()

+
gboolean
+(*GHookCheckFunc) (gpointer data);
+

Defines the type of a hook function that can be invoked +by g_hook_list_invoke_check().

+
+

Parameters

+
+++++ + + + + + +

data

the data field of the GHook is passed to the hook function here

 
+
+
+

Returns

+

FALSE if the GHook should be destroyed

+
+
+
+
+

g_hook_list_init ()

+
void
+g_hook_list_init (GHookList *hook_list,
+                  guint hook_size);
+

Initializes a GHookList. +This must be called before the GHookList is used.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook_list

a GHookList

 

hook_size

the size of each element in the GHookList, +typically sizeof (GHook).

 
+
+
+
+
+

g_hook_list_invoke ()

+
void
+g_hook_list_invoke (GHookList *hook_list,
+                    gboolean may_recurse);
+

Calls all of the GHook functions in a GHookList.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook_list

a GHookList

 

may_recurse

TRUE if functions which are already running +(e.g. in another thread) can be called. If set to FALSE, +these are skipped

 
+
+
+
+
+

g_hook_list_invoke_check ()

+
void
+g_hook_list_invoke_check (GHookList *hook_list,
+                          gboolean may_recurse);
+

Calls all of the GHook functions in a GHookList. +Any function which returns FALSE is removed from the GHookList.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook_list

a GHookList

 

may_recurse

TRUE if functions which are already running +(e.g. in another thread) can be called. If set to FALSE, +these are skipped

 
+
+
+
+
+

g_hook_list_marshal ()

+
void
+g_hook_list_marshal (GHookList *hook_list,
+                     gboolean may_recurse,
+                     GHookMarshaller marshaller,
+                     gpointer marshal_data);
+

Calls a function on each valid GHook.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

hook_list

a GHookList

 

may_recurse

TRUE if hooks which are currently running +(e.g. in another thread) are considered valid. If set to FALSE, +these are skipped

 

marshaller

the function to call for each GHook

 

marshal_data

data to pass to marshaller +

 
+
+
+
+
+

GHookMarshaller ()

+
void
+(*GHookMarshaller) (GHook *hook,
+                    gpointer marshal_data);
+

Defines the type of function used by g_hook_list_marshal().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook

a GHook

 

marshal_data

user data

 
+
+
+
+
+

g_hook_list_marshal_check ()

+
void
+g_hook_list_marshal_check (GHookList *hook_list,
+                           gboolean may_recurse,
+                           GHookCheckMarshaller marshaller,
+                           gpointer marshal_data);
+

Calls a function on each valid GHook and destroys it if the +function returns FALSE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

hook_list

a GHookList

 

may_recurse

TRUE if hooks which are currently running +(e.g. in another thread) are considered valid. If set to FALSE, +these are skipped

 

marshaller

the function to call for each GHook

 

marshal_data

data to pass to marshaller +

 
+
+
+
+
+

GHookCheckMarshaller ()

+
gboolean
+(*GHookCheckMarshaller) (GHook *hook,
+                         gpointer marshal_data);
+

Defines the type of function used by g_hook_list_marshal_check().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook

a GHook

 

marshal_data

user data

 
+
+
+

Returns

+

FALSE if hook +should be destroyed

+
+
+
+
+

g_hook_list_clear ()

+
void
+g_hook_list_clear (GHookList *hook_list);
+

Removes all the GHook elements from a GHookList.

+
+

Parameters

+
+++++ + + + + + +

hook_list

a GHookList

 
+
+
+
+
+

g_hook_alloc ()

+
GHook *
+g_hook_alloc (GHookList *hook_list);
+

Allocates space for a GHook and initializes it.

+
+

Parameters

+
+++++ + + + + + +

hook_list

a GHookList

 
+
+
+

Returns

+

a new GHook

+
+
+
+
+

g_hook_append()

+
#define             g_hook_append( hook_list, hook )
+

Appends a GHook onto the end of a GHookList.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook_list

a GHookList

 

hook

the GHook to add to the end of hook_list +

 
+
+
+
+
+

g_hook_prepend ()

+
void
+g_hook_prepend (GHookList *hook_list,
+                GHook *hook);
+

Prepends a GHook on the start of a GHookList.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook_list

a GHookList

 

hook

the GHook to add to the start of hook_list +

 
+
+
+
+
+

g_hook_insert_before ()

+
void
+g_hook_insert_before (GHookList *hook_list,
+                      GHook *sibling,
+                      GHook *hook);
+

Inserts a GHook into a GHookList, before a given GHook.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

hook_list

a GHookList

 

sibling

the GHook to insert the new GHook before.

[nullable]

hook

the GHook to insert

 
+
+
+
+
+

g_hook_insert_sorted ()

+
void
+g_hook_insert_sorted (GHookList *hook_list,
+                      GHook *hook,
+                      GHookCompareFunc func);
+

Inserts a GHook into a GHookList, sorted by the given function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

hook_list

a GHookList

 

hook

the GHook to insert

 

func

the comparison function used to sort the GHook elements

 
+
+
+
+
+

GHookCompareFunc ()

+
gint
+(*GHookCompareFunc) (GHook *new_hook,
+                     GHook *sibling);
+

Defines the type of function used to compare GHook elements in +g_hook_insert_sorted().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

new_hook

the GHook being inserted

 

sibling

the GHook to compare with new_hook +

 
+
+
+

Returns

+

a value <= 0 if new_hook +should be before sibling +

+
+
+
+
+

g_hook_compare_ids ()

+
gint
+g_hook_compare_ids (GHook *new_hook,
+                    GHook *sibling);
+

Compares the ids of two GHook elements, returning a negative value +if the second id is greater than the first.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

new_hook

a GHook

 

sibling

a GHook to compare with new_hook +

 
+
+
+

Returns

+

a value <= 0 if the id of sibling +is >= the id of new_hook +

+
+
+
+
+

g_hook_get ()

+
GHook *
+g_hook_get (GHookList *hook_list,
+            gulong hook_id);
+

Returns the GHook with the given id, or NULL if it is not found.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook_list

a GHookList

 

hook_id

a hook id

 
+
+
+

Returns

+

the GHook with the given id, or NULL if it is not found

+
+
+
+
+

g_hook_find ()

+
GHook *
+g_hook_find (GHookList *hook_list,
+             gboolean need_valids,
+             GHookFindFunc func,
+             gpointer data);
+

Finds a GHook in a GHookList using the given function to +test for a match.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

hook_list

a GHookList

 

need_valids

TRUE if GHook elements which have been destroyed +should be skipped

 

func

the function to call for each GHook, which should return +TRUE when the GHook has been found

 

data

the data to pass to func +

 
+
+
+

Returns

+

the found GHook or NULL if no matching GHook is found

+
+
+
+
+

GHookFindFunc ()

+
gboolean
+(*GHookFindFunc) (GHook *hook,
+                  gpointer data);
+

Defines the type of the function passed to g_hook_find().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook

a GHook

 

data

user data passed to g_hook_find_func()

 
+
+
+

Returns

+

TRUE if the required GHook has been found

+
+
+
+
+

g_hook_find_data ()

+
GHook *
+g_hook_find_data (GHookList *hook_list,
+                  gboolean need_valids,
+                  gpointer data);
+

Finds a GHook in a GHookList with the given data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

hook_list

a GHookList

 

need_valids

TRUE if GHook elements which have been destroyed +should be skipped

 

data

the data to find

 
+
+
+

Returns

+

the GHook with the given data +or NULL if no matching +GHook is found

+
+
+
+
+

g_hook_find_func ()

+
GHook *
+g_hook_find_func (GHookList *hook_list,
+                  gboolean need_valids,
+                  gpointer func);
+

Finds a GHook in a GHookList with the given function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

hook_list

a GHookList

 

need_valids

TRUE if GHook elements which have been destroyed +should be skipped

 

func

the function to find

 
+
+
+

Returns

+

the GHook with the given func +or NULL if no matching +GHook is found

+
+
+
+
+

g_hook_find_func_data ()

+
GHook *
+g_hook_find_func_data (GHookList *hook_list,
+                       gboolean need_valids,
+                       gpointer func,
+                       gpointer data);
+

Finds a GHook in a GHookList with the given function and data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

hook_list

a GHookList

 

need_valids

TRUE if GHook elements which have been destroyed +should be skipped

 

func

the function to find.

[not nullable]

data

the data to find

 
+
+
+

Returns

+

the GHook with the given func +and data +or NULL if +no matching GHook is found

+
+
+
+
+

g_hook_first_valid ()

+
GHook *
+g_hook_first_valid (GHookList *hook_list,
+                    gboolean may_be_in_call);
+

Returns the first GHook in a GHookList which has not been destroyed. +The reference count for the GHook is incremented, so you must call +g_hook_unref() to restore it when no longer needed. (Or call +g_hook_next_valid() if you are stepping through the GHookList.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook_list

a GHookList

 

may_be_in_call

TRUE if hooks which are currently running +(e.g. in another thread) are considered valid. If set to FALSE, +these are skipped

 
+
+
+

Returns

+

the first valid GHook, or NULL if none are valid

+
+
+
+
+

g_hook_next_valid ()

+
GHook *
+g_hook_next_valid (GHookList *hook_list,
+                   GHook *hook,
+                   gboolean may_be_in_call);
+

Returns the next GHook in a GHookList which has not been destroyed. +The reference count for the GHook is incremented, so you must call +g_hook_unref() to restore it when no longer needed. (Or continue to call +g_hook_next_valid() until NULL is returned.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

hook_list

a GHookList

 

hook

the current GHook

 

may_be_in_call

TRUE if hooks which are currently running +(e.g. in another thread) are considered valid. If set to FALSE, +these are skipped

 
+
+
+

Returns

+

the next valid GHook, or NULL if none are valid

+
+
+
+
+

G_HOOK_FLAGS()

+
#define G_HOOK_FLAGS(hook)		(G_HOOK (hook)->flags)
+
+

Gets the flags of a hook.

+
+

Parameters

+
+++++ + + + + + +

hook

a GHook

 
+
+
+
+
+

G_HOOK()

+
#define G_HOOK(hook)			((GHook*) (hook))
+
+

Casts a pointer to a GHook*.

+
+

Parameters

+
+++++ + + + + + +

hook

a pointer

 
+
+
+
+
+

G_HOOK_IS_VALID()

+
#define             G_HOOK_IS_VALID(hook)
+

Returns TRUE if the GHook is valid, i.e. it is in a GHookList, +it is active and it has not been destroyed.

+
+

Parameters

+
+++++ + + + + + +

hook

a GHook

 
+
+
+

Returns

+

TRUE if the GHook is valid

+
+
+
+
+

G_HOOK_ACTIVE()

+
#define             G_HOOK_ACTIVE(hook)
+

Returns TRUE if the GHook is active, which is normally the case +until the GHook is destroyed.

+
+

Parameters

+
+++++ + + + + + +

hook

a GHook

 
+
+
+

Returns

+

TRUE if the GHook is active

+
+
+
+
+

G_HOOK_IN_CALL()

+
#define             G_HOOK_IN_CALL(hook)
+

Returns TRUE if the GHook function is currently executing.

+
+

Parameters

+
+++++ + + + + + +

hook

a GHook

 
+
+
+

Returns

+

TRUE if the GHook function is currently executing

+
+
+
+
+

G_HOOK_IS_UNLINKED()

+
#define             G_HOOK_IS_UNLINKED(hook)
+

Returns TRUE if the GHook is not in a GHookList.

+
+

Parameters

+
+++++ + + + + + +

hook

a GHook

 
+
+
+

Returns

+

TRUE if the GHook is not in a GHookList

+
+
+
+
+

g_hook_ref ()

+
GHook *
+g_hook_ref (GHookList *hook_list,
+            GHook *hook);
+

Increments the reference count for a GHook.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook_list

a GHookList

 

hook

the GHook to increment the reference count of

 
+
+
+

Returns

+

the hook +that was passed in (since 2.6)

+
+
+
+
+

g_hook_unref ()

+
void
+g_hook_unref (GHookList *hook_list,
+              GHook *hook);
+

Decrements the reference count of a GHook. +If the reference count falls to 0, the GHook is removed +from the GHookList and g_hook_free() is called to free it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook_list

a GHookList

 

hook

the GHook to unref

 
+
+
+
+
+

g_hook_free ()

+
void
+g_hook_free (GHookList *hook_list,
+             GHook *hook);
+

Calls the GHookList finalize_hook + function if it exists, +and frees the memory allocated for the GHook.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook_list

a GHookList

 

hook

the GHook to free

 
+
+
+
+
+

g_hook_destroy ()

+
gboolean
+g_hook_destroy (GHookList *hook_list,
+                gulong hook_id);
+

Destroys a GHook, given its ID.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook_list

a GHookList

 

hook_id

a hook ID

 
+
+
+

Returns

+

TRUE if the GHook was found in the GHookList and destroyed

+
+
+
+
+

g_hook_destroy_link ()

+
void
+g_hook_destroy_link (GHookList *hook_list,
+                     GHook *hook);
+

Removes one GHook from a GHookList, marking it +inactive and calling g_hook_unref() on it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

hook_list

a GHookList

 

hook

the GHook to remove

 
+
+
+
+
+

Types and Values

+
+

struct GHookList

+
struct GHookList {
+  gulong	    seq_id;
+  guint		    hook_size : 16;
+  guint		    is_setup : 1;
+  GHook		   *hooks;
+  gpointer	    dummy3;
+  GHookFinalizeFunc finalize_hook;
+  gpointer	    dummy[2];
+};
+
+

The GHookList struct represents a list of hook functions.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

gulong seq_id;

the next free GHook id

 

guint hook_size : 16;

the size of the GHookList elements, in bytes

 

guint is_setup : 1;

1 if the GHookList has been initialized

 

GHook *hooks;

the first GHook element in the list

 

gpointer dummy3;

unused

 

GHookFinalizeFunc finalize_hook;

the function to call to finalize a GHook element. +The default behaviour is to call the hooks destroy +function

 

gpointer dummy[2];

unused

 
+
+
+
+
+

struct GHook

+
struct GHook {
+  gpointer	 data;
+  GHook		*next;
+  GHook		*prev;
+  guint		 ref_count;
+  gulong	 hook_id;
+  guint		 flags;
+  gpointer	 func;
+  GDestroyNotify destroy;
+};
+
+

The GHook struct represents a single hook function in a GHookList.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

gpointer data;

data which is passed to func when this hook is invoked

 

GHook *next;

pointer to the next hook in the list

 

GHook *prev;

pointer to the previous hook in the list

 

guint ref_count;

the reference count of this hook

 

gulong hook_id;

the id of this hook, which is unique within its list

 

guint flags;

flags which are set for this hook. See GHookFlagMask for +predefined flags

 

gpointer func;

the function to call when this hook is invoked. The possible +signatures for this function are GHookFunc and GHookCheckFunc

 

GDestroyNotify destroy;

the default finalize_hook +function of a GHookList calls +this member of the hook that is being finalized

 
+
+
+
+
+

enum GHookFlagMask

+

Flags used internally in the GHook implementation.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

G_HOOK_FLAG_ACTIVE

+

set if the hook has not been destroyed

+
 

G_HOOK_FLAG_IN_CALL

+

set if the hook is currently being run

+
 

G_HOOK_FLAG_MASK

+

A mask covering all bits reserved for + hook flags; see G_HOOK_FLAG_USER_SHIFT

+
 
+
+
+
+
+

G_HOOK_FLAG_USER_SHIFT

+
#define G_HOOK_FLAG_USER_SHIFT (4)
+
+

The position of the first bit which is not reserved for internal +use be the GHook implementation, i.e. +1 << G_HOOK_FLAG_USER_SHIFT is the first +bit which can be used for application-defined flags.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Hostname-Utilities.html b/docs/reference/glib/html/glib-Hostname-Utilities.html new file mode 100644 index 0000000..a7202a2 --- /dev/null +++ b/docs/reference/glib/html/glib-Hostname-Utilities.html @@ -0,0 +1,281 @@ + + + + +Hostname Utilities: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Hostname Utilities

+

Hostname Utilities — Internet hostname utilities

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+gchar * + +g_hostname_to_ascii () +
+gchar * + +g_hostname_to_unicode () +
+gboolean + +g_hostname_is_non_ascii () +
+gboolean + +g_hostname_is_ascii_encoded () +
+gboolean + +g_hostname_is_ip_address () +
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

Functions for manipulating internet hostnames; in particular, for +converting between Unicode and ASCII-encoded forms of +Internationalized Domain Names (IDNs).

+

The +Internationalized Domain Names for Applications (IDNA) +standards allow for the use +of Unicode domain names in applications, while providing +backward-compatibility with the old ASCII-only DNS, by defining an +ASCII-Compatible Encoding of any given Unicode name, which can be +used with non-IDN-aware applications and protocols. (For example, +"Παν語.org" maps to "xn--4wa8awb4637h.org".)

+
+
+

Functions

+
+

g_hostname_to_ascii ()

+
gchar *
+g_hostname_to_ascii (const gchar *hostname);
+

Converts hostname + to its canonical ASCII form; an ASCII-only +string containing no uppercase letters and not ending with a +trailing dot.

+
+

Parameters

+
+++++ + + + + + +

hostname

a valid UTF-8 or ASCII hostname

 
+
+
+

Returns

+

an ASCII hostname, which must be freed, or NULL if +hostname +is in some way invalid.

+
+

Since: 2.22

+
+
+
+

g_hostname_to_unicode ()

+
gchar *
+g_hostname_to_unicode (const gchar *hostname);
+

Converts hostname + to its canonical presentation form; a UTF-8 +string in Unicode normalization form C, containing no uppercase +letters, no forbidden characters, and no ASCII-encoded segments, +and not ending with a trailing dot.

+

Of course if hostname + is not an internationalized hostname, then +the canonical presentation form will be entirely ASCII.

+
+

Parameters

+
+++++ + + + + + +

hostname

a valid UTF-8 or ASCII hostname

 
+
+
+

Returns

+

a UTF-8 hostname, which must be freed, or NULL if +hostname +is in some way invalid.

+
+

Since: 2.22

+
+
+
+

g_hostname_is_non_ascii ()

+
gboolean
+g_hostname_is_non_ascii (const gchar *hostname);
+

Tests if hostname + contains Unicode characters. If this returns +TRUE, you need to encode the hostname with g_hostname_to_ascii() +before using it in non-IDN-aware contexts.

+

Note that a hostname might contain a mix of encoded and unencoded +segments, and so it is possible for g_hostname_is_non_ascii() and +g_hostname_is_ascii_encoded() to both return TRUE for a name.

+
+

Parameters

+
+++++ + + + + + +

hostname

a hostname

 
+
+
+

Returns

+

TRUE if hostname +contains any non-ASCII characters

+
+

Since: 2.22

+
+
+
+

g_hostname_is_ascii_encoded ()

+
gboolean
+g_hostname_is_ascii_encoded (const gchar *hostname);
+

Tests if hostname + contains segments with an ASCII-compatible +encoding of an Internationalized Domain Name. If this returns +TRUE, you should decode the hostname with g_hostname_to_unicode() +before displaying it to the user.

+

Note that a hostname might contain a mix of encoded and unencoded +segments, and so it is possible for g_hostname_is_non_ascii() and +g_hostname_is_ascii_encoded() to both return TRUE for a name.

+
+

Parameters

+
+++++ + + + + + +

hostname

a hostname

 
+
+
+

Returns

+

TRUE if hostname +contains any ASCII-encoded +segments.

+
+

Since: 2.22

+
+
+
+

g_hostname_is_ip_address ()

+
gboolean
+g_hostname_is_ip_address (const gchar *hostname);
+

Tests if hostname + is the string form of an IPv4 or IPv6 address. +(Eg, "192.168.0.1".)

+
+

Parameters

+
+++++ + + + + + +

hostname

a hostname (or IP address in string form)

 
+
+
+

Returns

+

TRUE if hostname +is an IP address

+
+

Since: 2.22

+
+
+
+

Types and Values

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-I18N.html b/docs/reference/glib/html/glib-I18N.html new file mode 100644 index 0000000..379e4a9 --- /dev/null +++ b/docs/reference/glib/html/glib-I18N.html @@ -0,0 +1,844 @@ + + + + +Internationalization: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Internationalization

+

Internationalization — gettext support macros

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define +_() +
#define +Q_() +
#define +C_() +
#define +N_() +
#define +NC_() +
const gchar * + +g_dgettext () +
const gchar * + +g_dcgettext () +
const gchar * + +g_dngettext () +
const gchar * + +g_dpgettext () +
const gchar * + +g_dpgettext2 () +
const gchar * + +g_strip_context () +
const gchar * const * + +g_get_language_names () +
+gchar ** + +g_get_locale_variants () +
+
+
+

Includes

+
#include <glib.h>
+#include <glib/gi18n.h>
+
+
+
+

Description

+

GLib doesn't force any particular localization method upon its users. +But since GLib itself is localized using the gettext() mechanism, it seems +natural to offer the de-facto standard gettext() support macros in an +easy-to-use form.

+

In order to use these macros in an application, you must include +<glib/gi18n.h>. For use in a library, you must include +<glib/gi18n-lib.h> +after defining the GETTEXT_PACKAGE macro suitably for your library:

+
+ + + + + + + +
1
+2
#define GETTEXT_PACKAGE "gtk20"
+#include <glib/gi18n-lib.h>
+
+ +

+For an application, note that you also have to call bindtextdomain(), +bind_textdomain_codeset(), textdomain() and setlocale() early on in your +main() to make gettext() work. For example:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
#include <glib/gi18n.h>
+#include <locale.h>
+
+int
+main (int argc, char **argv)
+{
+  setlocale (LC_ALL, "");
+  bindtextdomain (GETTEXT_PACKAGE, DATADIR "/locale");
+  bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+  textdomain (GETTEXT_PACKAGE);
+
+  // Rest of your application.
+}
+
+ +

+where DATADIR is as typically provided by automake.

+

For a library, you only have to call bindtextdomain() and +bind_textdomain_codeset() in your initialization function. If your library +doesn't have an initialization function, you can call the functions before +the first translated message.

+

The +gettext manual +covers details of how to integrate gettext into a project’s build system and +workflow.

+
+
+

Functions

+
+

_()

+
#define             _(String)
+

Marks a string for translation, gets replaced with the translated string +at runtime.

+
+

Parameters

+
+++++ + + + + + +

String

the string to be translated

 
+
+

Since: 2.4

+
+
+
+

Q_()

+
#define             Q_(String)
+

Like _(), but handles context in message ids. This has the advantage +that the string can be adorned with a prefix to guarantee uniqueness +and provide context to the translator.

+

One use case given in the gettext manual is GUI translation, where one +could e.g. disambiguate two "Open" menu entries as "File|Open" and +"Printer|Open". Another use case is the string "Russian" which may +have to be translated differently depending on whether it's the name +of a character set or a language. This could be solved by using +"charset|Russian" and "language|Russian".

+

See the C_() macro for a different way to mark up translatable strings +with context.

+

If you are using the Q_() macro, you need to make sure that you pass +--keyword=Q_ to xgettext when extracting messages. +If you are using GNU gettext >= 0.15, you can also use +--keyword=Q_:1g to let xgettext split the context +string off into a msgctxt line in the po file.

+
+

Parameters

+
+++++ + + + + + +

String

the string to be translated, with a '|'-separated prefix +which must not be translated

 
+
+
+

Returns

+

the translated message

+
+

Since: 2.4

+
+
+
+

C_()

+
#define             C_(Context,String)
+

Uses gettext to get the translation for String +. Context + is +used as a context. This is mainly useful for short strings which +may need different translations, depending on the context in which +they are used.

+
+ + + + + + + +
1
+2
label1 = C_("Navigation", "Back");
+label2 = C_("Body part", "Back");
+
+ +

+

If you are using the C_() macro, you need to make sure that you pass +--keyword=C_:1c,2 to xgettext when extracting messages. +Note that this only works with GNU gettext >= 0.15.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

Context

a message context, must be a string literal

 

String

a message id, must be a string literal

 
+
+
+

Returns

+

the translated message

+
+

Since: 2.16

+
+
+
+

N_()

+
#define             N_(String)
+

Only marks a string for translation. This is useful in situations +where the translated strings can't be directly used, e.g. in string +array initializers. To get the translated string, call gettext() +at runtime.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
{
+  static const char *messages[] = {
+    N_("some very meaningful message"),
+    N_("and another one")
+  };
+  const char *string;
+  ...
+  string
+    = index > 1 ? _("a default message") : gettext (messages[index]);
+
+  fputs (string);
+  ...
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + +

String

the string to be translated

 
+
+

Since: 2.4

+
+
+
+

NC_()

+
#define             NC_(Context, String)
+

Only marks a string for translation, with context. +This is useful in situations where the translated strings can't +be directly used, e.g. in string array initializers. To get the +translated string, you should call g_dpgettext2() at runtime.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
{
+  static const char *messages[] = {
+    NC_("some context", "some very meaningful message"),
+    NC_("some context", "and another one")
+  };
+  const char *string;
+  ...
+  string
+    = index > 1 ? g_dpgettext2 (NULL, "some context", "a default message")
+                : g_dpgettext2 (NULL, "some context", messages[index]);
+
+  fputs (string);
+  ...
+}
+
+ +

+

If you are using the NC_() macro, you need to make sure that you pass +--keyword=NC_:1c,2 to xgettext when extracting messages. +Note that this only works with GNU gettext >= 0.15. Intltool has support +for the NC_() macro since version 0.40.1.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

Context

a message context, must be a string literal

 

String

a message id, must be a string literal

 
+
+

Since: 2.18

+
+
+
+

g_dgettext ()

+
const gchar *
+g_dgettext (const gchar *domain,
+            const gchar *msgid);
+

This function is a wrapper of dgettext() which does not translate +the message if the default domain as set with textdomain() has no +translations for the current locale.

+

The advantage of using this function over dgettext() proper is that +libraries using this function (like GTK+) will not use translations +if the application using the library does not have translations for +the current locale. This results in a consistent English-only +interface instead of one having partial translations. For this +feature to work, the call to textdomain() and setlocale() should +precede any g_dgettext() invocations. For GTK+, it means calling +textdomain() before gtk_init or its variants.

+

This function disables translations if and only if upon its first +call all the following conditions hold:

+
    +
  • domain + is not NULL

  • +
  • textdomain() has been called to set a default text domain

  • +
  • there is no translations available for the default text domain +and the current locale

  • +
  • current locale is not "C" or any English locales (those +starting with "en_")

  • +
+

Note that this behavior may not be desired for example if an application +has its untranslated messages in a language other than English. In those +cases the application should call textdomain() after initializing GTK+.

+

Applications should normally not use this function directly, +but use the _() macro for translations.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

domain

the translation domain to use, or NULL to use +the domain set with textdomain().

[allow-none]

msgid

message to translate

 
+
+
+

Returns

+

The translated string

+
+

Since: 2.18

+
+
+
+

g_dcgettext ()

+
const gchar *
+g_dcgettext (const gchar *domain,
+             const gchar *msgid,
+             gint category);
+

This is a variant of g_dgettext() that allows specifying a locale +category instead of always using LC_MESSAGES. See g_dgettext() for +more information about how this functions differs from calling +dcgettext() directly.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

domain

the translation domain to use, or NULL to use +the domain set with textdomain().

[allow-none]

msgid

message to translate

 

category

a locale category

 
+
+
+

Returns

+

the translated string for the given locale category

+
+

Since: 2.26

+
+
+
+

g_dngettext ()

+
const gchar *
+g_dngettext (const gchar *domain,
+             const gchar *msgid,
+             const gchar *msgid_plural,
+             gulong n);
+

This function is a wrapper of dngettext() which does not translate +the message if the default domain as set with textdomain() has no +translations for the current locale.

+

See g_dgettext() for details of how this differs from dngettext() +proper.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

domain

the translation domain to use, or NULL to use +the domain set with textdomain().

[allow-none]

msgid

message to translate

 

msgid_plural

plural form of the message

 

n

the quantity for which translation is needed

 
+
+
+

Returns

+

The translated string

+
+

Since: 2.18

+
+
+
+

g_dpgettext ()

+
const gchar *
+g_dpgettext (const gchar *domain,
+             const gchar *msgctxtid,
+             gsize msgidoffset);
+

This function is a variant of g_dgettext() which supports +a disambiguating message context. GNU gettext uses the +'\004' character to separate the message context and +message id in msgctxtid +. +If 0 is passed as msgidoffset +, this function will fall back to +trying to use the deprecated convention of using "|" as a separation +character.

+

This uses g_dgettext() internally. See that functions for differences +with dgettext() proper.

+

Applications should normally not use this function directly, +but use the C_() macro for translations with context.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

domain

the translation domain to use, or NULL to use +the domain set with textdomain().

[allow-none]

msgctxtid

a combined message context and message id, separated +by a \004 character

 

msgidoffset

the offset of the message id in msgctxid +

 
+
+
+

Returns

+

The translated string

+
+

Since: 2.16

+
+
+
+

g_dpgettext2 ()

+
const gchar *
+g_dpgettext2 (const gchar *domain,
+              const gchar *context,
+              const gchar *msgid);
+

This function is a variant of g_dgettext() which supports +a disambiguating message context. GNU gettext uses the +'\004' character to separate the message context and +message id in msgctxtid +.

+

This uses g_dgettext() internally. See that functions for differences +with dgettext() proper.

+

This function differs from C_() in that it is not a macro and +thus you may use non-string-literals as context and msgid arguments.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

domain

the translation domain to use, or NULL to use +the domain set with textdomain().

[allow-none]

context

the message context

 

msgid

the message

 
+
+
+

Returns

+

The translated string

+
+

Since: 2.18

+
+
+
+

g_strip_context ()

+
const gchar *
+g_strip_context (const gchar *msgid,
+                 const gchar *msgval);
+

An auxiliary function for gettext() support (see Q_()).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

msgid

a string

 

msgval

another string

 
+
+
+

Returns

+

msgval +, unless msgval +is identical to msgid +and contains a '|' character, in which case a pointer to +the substring of msgid after the first '|' character is returned.

+
+

Since: 2.4

+
+
+
+

g_get_language_names ()

+
const gchar * const *
+g_get_language_names (void);
+

Computes a list of applicable locale names, which can be used to +e.g. construct locale-dependent filenames or search paths. The returned +list is sorted from most desirable to least desirable and always contains +the default locale "C".

+

For example, if LANGUAGE=de:en_US, then the returned list is +"de", "en_US", "en", "C".

+

This function consults the environment variables LANGUAGE, LC_ALL, +LC_MESSAGES and LANG to find the list of locales specified by the +user.

+
+

Returns

+

a NULL-terminated array of strings owned by GLib +that must not be modified or freed.

+

[array zero-terminated=1][transfer none]

+
+

Since: 2.6

+
+
+
+

g_get_locale_variants ()

+
gchar **
+g_get_locale_variants (const gchar *locale);
+

Returns a list of derived variants of locale +, which can be used to +e.g. construct locale-dependent filenames or search paths. The returned +list is sorted from most desirable to least desirable. +This function handles territory, charset and extra locale modifiers.

+

For example, if locale + is "fr_BE", then the returned list +is "fr_BE", "fr".

+

If you need the list of variants for the current locale, +use g_get_language_names().

+
+

Parameters

+
+++++ + + + + + +

locale

a locale identifier

 
+
+
+

Returns

+

a newly +allocated array of newly allocated strings with the locale variants. Free with +g_strfreev().

+

[transfer full][array zero-terminated=1][element-type utf8]

+
+

Since: 2.28

+
+
+
+

Types and Values

+
+
+

See Also

+

the gettext manual

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-IO-Channels.html b/docs/reference/glib/html/glib-IO-Channels.html new file mode 100644 index 0000000..26c36e6 --- /dev/null +++ b/docs/reference/glib/html/glib-IO-Channels.html @@ -0,0 +1,2627 @@ + + + + +IO Channels: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

IO Channels

+

IO Channels — portable support for using files, pipes and sockets

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GIOChannel * + +g_io_channel_unix_new () +
+gint + +g_io_channel_unix_get_fd () +
+GIOChannel * + +g_io_channel_win32_new_fd () +
+GIOChannel * + +g_io_channel_win32_new_socket () +
+GIOChannel * + +g_io_channel_win32_new_messages () +
+void + +g_io_channel_init () +
+GIOChannel * + +g_io_channel_new_file () +
+GIOStatus + +g_io_channel_read_chars () +
+GIOStatus + +g_io_channel_read_unichar () +
+GIOStatus + +g_io_channel_read_line () +
+GIOStatus + +g_io_channel_read_line_string () +
+GIOStatus + +g_io_channel_read_to_end () +
+GIOStatus + +g_io_channel_write_chars () +
+GIOStatus + +g_io_channel_write_unichar () +
+GIOStatus + +g_io_channel_flush () +
+GIOStatus + +g_io_channel_seek_position () +
+GIOStatus + +g_io_channel_shutdown () +
+GIOChannelError + +g_io_channel_error_from_errno () +
+GIOChannel * + +g_io_channel_ref () +
+void + +g_io_channel_unref () +
+GSource * + +g_io_create_watch () +
+guint + +g_io_add_watch () +
+guint + +g_io_add_watch_full () +
+gboolean + +(*GIOFunc) () +
+gsize + +g_io_channel_get_buffer_size () +
+void + +g_io_channel_set_buffer_size () +
+GIOCondition + +g_io_channel_get_buffer_condition () +
+GIOFlags + +g_io_channel_get_flags () +
+GIOStatus + +g_io_channel_set_flags () +
const gchar * + +g_io_channel_get_line_term () +
+void + +g_io_channel_set_line_term () +
+gboolean + +g_io_channel_get_buffered () +
+void + +g_io_channel_set_buffered () +
const gchar * + +g_io_channel_get_encoding () +
+GIOStatus + +g_io_channel_set_encoding () +
+gboolean + +g_io_channel_get_close_on_unref () +
+void + +g_io_channel_set_close_on_unref () +
+GIOError + +g_io_channel_read () +
+GIOError + +g_io_channel_write () +
+GIOError + +g_io_channel_seek () +
+void + +g_io_channel_close () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
structGIOChannel
enumGSeekType
enumGIOStatus
enumGIOChannelError
#defineG_IO_CHANNEL_ERROR
enumGIOCondition
structGIOFuncs
enumGIOFlags
enumGIOError
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The GIOChannel data type aims to provide a portable method for +using file descriptors, pipes, and sockets, and integrating them +into the main event loop. Currently, +full support is available on UNIX platforms, support for Windows +is only partially complete.

+

To create a new GIOChannel on UNIX systems use +g_io_channel_unix_new(). This works for plain file descriptors, +pipes and sockets. Alternatively, a channel can be created for a +file in a system independent manner using g_io_channel_new_file().

+

Once a GIOChannel has been created, it can be used in a generic +manner with the functions g_io_channel_read_chars(), +g_io_channel_write_chars(), g_io_channel_seek_position(), and +g_io_channel_shutdown().

+

To add a GIOChannel to the main event loop, +use g_io_add_watch() or g_io_add_watch_full(). Here you specify which +events you are interested in on the GIOChannel, and provide a +function to be called whenever these events occur.

+

GIOChannel instances are created with an initial reference count of 1. +g_io_channel_ref() and g_io_channel_unref() can be used to +increment or decrement the reference count respectively. When the +reference count falls to 0, the GIOChannel is freed. (Though it +isn't closed automatically, unless it was created using +g_io_channel_new_file().) Using g_io_add_watch() or +g_io_add_watch_full() increments a channel's reference count.

+

The new functions g_io_channel_read_chars(), +g_io_channel_read_line(), g_io_channel_read_line_string(), +g_io_channel_read_to_end(), g_io_channel_write_chars(), +g_io_channel_seek_position(), and g_io_channel_flush() should not be +mixed with the deprecated functions g_io_channel_read(), +g_io_channel_write(), and g_io_channel_seek() on the same channel.

+
+
+

Functions

+
+

g_io_channel_unix_new ()

+
GIOChannel *
+g_io_channel_unix_new (int fd);
+

Creates a new GIOChannel given a file descriptor. On UNIX systems +this works for plain files, pipes, and sockets.

+

The returned GIOChannel has a reference count of 1.

+

The default encoding for GIOChannel is UTF-8. If your application +is reading output from a command using via pipe, you may need to set +the encoding to the encoding of the current locale (see +g_get_charset()) with the g_io_channel_set_encoding() function.

+

If you want to read raw binary data without interpretation, then +call the g_io_channel_set_encoding() function with NULL for the +encoding argument.

+

This function is available in GLib on Windows, too, but you should +avoid using it on Windows. The domain of file descriptors and +sockets overlap. There is no way for GLib to know which one you mean +in case the argument you pass to this function happens to be both a +valid file descriptor and socket. If that happens a warning is +issued, and GLib assumes that it is the file descriptor you mean.

+
+

Parameters

+
+++++ + + + + + +

fd

a file descriptor.

 
+
+
+

Returns

+

a new GIOChannel.

+
+
+
+
+

g_io_channel_unix_get_fd ()

+
gint
+g_io_channel_unix_get_fd (GIOChannel *channel);
+

Returns the file descriptor of the GIOChannel.

+

On Windows this function returns the file descriptor or socket of +the GIOChannel.

+
+

Parameters

+
+++++ + + + + + +

channel

a GIOChannel, created with g_io_channel_unix_new().

 
+
+
+

Returns

+

the file descriptor of the GIOChannel.

+
+
+
+
+

g_io_channel_win32_new_fd ()

+
GIOChannel *
+g_io_channel_win32_new_fd (gint fd);
+

Creates a new GIOChannel given a file descriptor on Windows. This +works for file descriptors from the C runtime.

+

This function works for file descriptors as returned by the open(), +creat(), pipe() and fileno() calls in the Microsoft C runtime. In +order to meaningfully use this function your code should use the +same C runtime as GLib uses, which is msvcrt.dll. Note that in +current Microsoft compilers it is near impossible to convince it to +build code that would use msvcrt.dll. The last Microsoft compiler +version that supported using msvcrt.dll as the C runtime was version

+
  1. The GNU compiler and toolchain for Windows, also known as Mingw, +fully supports msvcrt.dll.

+

If you have created a GIOChannel for a file descriptor and started +watching (polling) it, you shouldn't call read() on the file +descriptor. This is because adding polling for a file descriptor is +implemented in GLib on Windows 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().

+

This function is available only in GLib on Windows.

+
+

Parameters

+
+++++ + + + + + +

fd

a C library file descriptor.

 
+
+
+

Returns

+

a new GIOChannel.

+
+
+
+
+

g_io_channel_win32_new_socket ()

+
GIOChannel *
+g_io_channel_win32_new_socket (gint socket);
+

Creates a new GIOChannel given a socket on Windows.

+

This function works for sockets created by Winsock. It's available +only in GLib on Windows.

+

Polling a GSource created to watch a channel for a socket puts the +socket in non-blocking mode. This is a side-effect of the +implementation and unavoidable.

+
+

Parameters

+
+++++ + + + + + +

socket

a Winsock socket

 
+
+
+

Returns

+

a new GIOChannel

+
+
+
+
+

g_io_channel_win32_new_messages ()

+
GIOChannel *
+g_io_channel_win32_new_messages (gsize hwnd);
+

Creates a new GIOChannel given a window handle on Windows.

+

This function creates a GIOChannel that can be used to poll for +Windows messages for the window in question.

+
+

Parameters

+
+++++ + + + + + +

hwnd

a window handle.

 
+
+
+

Returns

+

a new GIOChannel.

+
+
+
+
+

g_io_channel_init ()

+
void
+g_io_channel_init (GIOChannel *channel);
+

Initializes a GIOChannel struct.

+

This is called by each of the above functions when creating a +GIOChannel, and so is not often needed by the application +programmer (unless you are creating a new type of GIOChannel).

+
+

Parameters

+
+++++ + + + + + +

channel

a GIOChannel

 
+
+
+
+
+

g_io_channel_new_file ()

+
GIOChannel *
+g_io_channel_new_file (const gchar *filename,
+                       const gchar *mode,
+                       GError **error);
+

Open a file filename + as a GIOChannel using mode mode +. This +channel will be closed when the last reference to it is dropped, +so there is no need to call g_io_channel_close() (though doing +so will not cause problems, as long as no attempt is made to +access the channel after it is closed).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

filename

A string containing the name of a file

 

mode

One of "r", "w", "a", "r+", "w+", "a+". These have +the same meaning as in fopen()

 

error

A location to return an error of type G_FILE_ERROR

 
+
+
+

Returns

+

A GIOChannel on success, NULL on failure.

+
+
+
+
+

g_io_channel_read_chars ()

+
GIOStatus
+g_io_channel_read_chars (GIOChannel *channel,
+                         gchar *buf,
+                         gsize count,
+                         gsize *bytes_read,
+                         GError **error);
+

Replacement for g_io_channel_read() with the new API.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

buf

a buffer to read data into.

[out caller-allocates][array length=count][element-type guint8]

count

the size of the buffer. Note that the buffer may not be +complelely filled even if there is data in the buffer if the +remaining data is not a complete character.

[in]

bytes_read

The number of bytes read. This may be +zero even on success if count < 6 and the channel's encoding +is non-NULL. This indicates that the next UTF-8 character is +too wide for the buffer.

[allow-none][out]

error

a location to return an error of type GConvertError +or GIOChannelError.

 
+
+
+

Returns

+

the status of the operation.

+
+
+
+
+

g_io_channel_read_unichar ()

+
GIOStatus
+g_io_channel_read_unichar (GIOChannel *channel,
+                           gunichar *thechar,
+                           GError **error);
+

Reads a Unicode character from channel +. +This function cannot be called on a channel with NULL encoding.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

thechar

a location to return a character.

[out]

error

a location to return an error of type GConvertError +or GIOChannelError

 
+
+
+

Returns

+

a GIOStatus

+
+
+
+
+

g_io_channel_read_line ()

+
GIOStatus
+g_io_channel_read_line (GIOChannel *channel,
+                        gchar **str_return,
+                        gsize *length,
+                        gsize *terminator_pos,
+                        GError **error);
+

Reads a line, including the terminating character(s), +from a GIOChannel into a newly-allocated string. +str_return + will contain allocated memory if the return +is G_IO_STATUS_NORMAL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

str_return

The line read from the GIOChannel, including the +line terminator. This data should be freed with g_free() +when no longer needed. This is a nul-terminated string. +If a length +of zero is returned, this will be NULL instead.

[out]

length

location to store length of the read data, or NULL.

[allow-none][out]

terminator_pos

location to store position of line terminator, or NULL.

[allow-none][out]

error

A location to return an error of type GConvertError +or GIOChannelError

 
+
+
+

Returns

+

the status of the operation.

+
+
+
+
+

g_io_channel_read_line_string ()

+
GIOStatus
+g_io_channel_read_line_string (GIOChannel *channel,
+                               GString *buffer,
+                               gsize *terminator_pos,
+                               GError **error);
+

Reads a line from a GIOChannel, using a GString as a buffer.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

buffer

a GString into which the line will be written. +If buffer +already contains data, the old data will +be overwritten.

 

terminator_pos

location to store position of line terminator, or NULL.

[allow-none]

error

a location to store an error of type GConvertError +or GIOChannelError

 
+
+
+

Returns

+

the status of the operation.

+
+
+
+
+

g_io_channel_read_to_end ()

+
GIOStatus
+g_io_channel_read_to_end (GIOChannel *channel,
+                          gchar **str_return,
+                          gsize *length,
+                          GError **error);
+

Reads all the remaining data from the file.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

str_return

Location to +store a pointer to a string holding the remaining data in the +GIOChannel. This data should be freed with g_free() when no +longer needed. This data is terminated by an extra nul +character, but there may be other nuls in the intervening data.

[out][array length=length][element-type guint8]

length

location to store length of the data.

[out]

error

location to return an error of type GConvertError +or GIOChannelError

 
+
+
+

Returns

+

G_IO_STATUS_NORMAL on success. +This function never returns G_IO_STATUS_EOF.

+
+
+
+
+

g_io_channel_write_chars ()

+
GIOStatus
+g_io_channel_write_chars (GIOChannel *channel,
+                          const gchar *buf,
+                          gssize count,
+                          gsize *bytes_written,
+                          GError **error);
+

Replacement for g_io_channel_write() with the new API.

+

On seekable channels with encodings other than NULL or UTF-8, generic +mixing of reading and writing is not allowed. A call to g_io_channel_write_chars() +may only be made on a channel from which data has been read in the +cases described in the documentation for g_io_channel_set_encoding().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

buf

a buffer to write data from.

[array][element-type guint8]

count

the size of the buffer. If -1, the buffer +is taken to be a nul-terminated string.

 

bytes_written

The number of bytes written. This can be nonzero +even if the return value is not G_IO_STATUS_NORMAL. +If the return value is G_IO_STATUS_NORMAL and the +channel is blocking, this will always be equal +to count +if count +>= 0.

[out]

error

a location to return an error of type GConvertError +or GIOChannelError

 
+
+
+

Returns

+

the status of the operation.

+
+
+
+
+

g_io_channel_write_unichar ()

+
GIOStatus
+g_io_channel_write_unichar (GIOChannel *channel,
+                            gunichar thechar,
+                            GError **error);
+

Writes a Unicode character to channel +. +This function cannot be called on a channel with NULL encoding.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

thechar

a character

 

error

location to return an error of type GConvertError +or GIOChannelError

 
+
+
+

Returns

+

a GIOStatus

+
+
+
+
+

g_io_channel_flush ()

+
GIOStatus
+g_io_channel_flush (GIOChannel *channel,
+                    GError **error);
+

Flushes the write buffer for the GIOChannel.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

channel

a GIOChannel

 

error

location to store an error of type GIOChannelError

 
+
+
+

Returns

+

the status of the operation: One of +G_IO_STATUS_NORMAL, G_IO_STATUS_AGAIN, or +G_IO_STATUS_ERROR.

+
+
+
+
+

g_io_channel_seek_position ()

+
GIOStatus
+g_io_channel_seek_position (GIOChannel *channel,
+                            gint64 offset,
+                            GSeekType type,
+                            GError **error);
+

Replacement for g_io_channel_seek() with the new API.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

offset

The offset in bytes from the position specified by type +

 

type

a GSeekType. The type G_SEEK_CUR is only allowed in those +cases where a call to g_io_channel_set_encoding() +is allowed. See the documentation for +g_io_channel_set_encoding() for details.

 

error

A location to return an error of type GIOChannelError

 
+
+
+

Returns

+

the status of the operation.

+
+
+
+
+

g_io_channel_shutdown ()

+
GIOStatus
+g_io_channel_shutdown (GIOChannel *channel,
+                       gboolean flush,
+                       GError **err);
+

Close an IO channel. Any pending data to be written will be +flushed if flush + is TRUE. The channel will not be freed until the +last reference is dropped using g_io_channel_unref().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

flush

if TRUE, flush pending

 

err

location to store a GIOChannelError

 
+
+
+

Returns

+

the status of the operation.

+
+
+
+
+

g_io_channel_error_from_errno ()

+
GIOChannelError
+g_io_channel_error_from_errno (gint en);
+

Converts an errno error number to a GIOChannelError.

+
+

Parameters

+
+++++ + + + + + +

en

an errno error number, e.g. EINVAL

 
+
+
+

Returns

+

a GIOChannelError error number, e.g. +G_IO_CHANNEL_ERROR_INVAL.

+
+
+
+
+

g_io_channel_ref ()

+
GIOChannel *
+g_io_channel_ref (GIOChannel *channel);
+

Increments the reference count of a GIOChannel.

+
+

Parameters

+
+++++ + + + + + +

channel

a GIOChannel

 
+
+
+

Returns

+

the channel +that was passed in (since 2.6)

+
+
+
+
+

g_io_channel_unref ()

+
void
+g_io_channel_unref (GIOChannel *channel);
+

Decrements the reference count of a GIOChannel.

+
+

Parameters

+
+++++ + + + + + +

channel

a GIOChannel

 
+
+
+
+
+

g_io_create_watch ()

+
GSource *
+g_io_create_watch (GIOChannel *channel,
+                   GIOCondition condition);
+

Creates a GSource that's dispatched when condition + is met for the +given channel +. For example, if condition is G_IO_IN, the source will +be dispatched when there's data available for reading.

+

g_io_add_watch() is a simpler interface to this same functionality, for +the case where you want to add the source to the default main loop context +at the default priority.

+

On Windows, polling a GSource created to watch a channel for a socket +puts the socket in non-blocking mode. This is a side-effect of the +implementation and unavoidable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

channel

a GIOChannel to watch

 

condition

conditions to watch for

 
+
+
+

Returns

+

a new GSource

+
+
+
+
+

g_io_add_watch ()

+
guint
+g_io_add_watch (GIOChannel *channel,
+                GIOCondition condition,
+                GIOFunc func,
+                gpointer user_data);
+

Adds the GIOChannel into the default main loop context +with the default priority.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

condition

the condition to watch for

 

func

the function to call when the condition is satisfied

 

user_data

user data to pass to func +

 
+
+
+

Returns

+

the event source id

+
+
+
+
+

g_io_add_watch_full ()

+
guint
+g_io_add_watch_full (GIOChannel *channel,
+                     gint priority,
+                     GIOCondition condition,
+                     GIOFunc func,
+                     gpointer user_data,
+                     GDestroyNotify notify);
+

Adds the GIOChannel into the default main loop context +with the given priority.

+

This internally creates a main loop source using g_io_create_watch() +and attaches it to the main loop context with g_source_attach(). +You can do these steps manually if you need greater control.

+

[rename-to g_io_add_watch]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

priority

the priority of the GIOChannel source

 

condition

the condition to watch for

 

func

the function to call when the condition is satisfied

 

user_data

user data to pass to func +

 

notify

the function to call when the source is removed

 
+
+
+

Returns

+

the event source id

+
+
+
+
+

GIOFunc ()

+
gboolean
+(*GIOFunc) (GIOChannel *source,
+            GIOCondition condition,
+            gpointer data);
+

Specifies the type of function passed to g_io_add_watch() or +g_io_add_watch_full(), which is called when the requested condition +on a GIOChannel is satisfied.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

source

the GIOChannel event source

 

condition

the condition which has been satisfied

 

data

user data set in g_io_add_watch() or g_io_add_watch_full()

 
+
+
+

Returns

+

the function should return FALSE if the event source +should be removed

+
+
+
+
+

g_io_channel_get_buffer_size ()

+
gsize
+g_io_channel_get_buffer_size (GIOChannel *channel);
+

Gets the buffer size.

+
+

Parameters

+
+++++ + + + + + +

channel

a GIOChannel

 
+
+
+

Returns

+

the size of the buffer.

+
+
+
+
+

g_io_channel_set_buffer_size ()

+
void
+g_io_channel_set_buffer_size (GIOChannel *channel,
+                              gsize size);
+

Sets the buffer size.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

channel

a GIOChannel

 

size

the size of the buffer, or 0 to let GLib pick a good size

 
+
+
+
+
+

g_io_channel_get_buffer_condition ()

+
GIOCondition
+g_io_channel_get_buffer_condition (GIOChannel *channel);
+

This function returns a GIOCondition depending on whether there +is data to be read/space to write data in the internal buffers in +the GIOChannel. Only the flags G_IO_IN and G_IO_OUT may be set.

+
+

Parameters

+
+++++ + + + + + +

channel

A GIOChannel

 
+
+
+

Returns

+

A GIOCondition

+
+
+
+
+

g_io_channel_get_flags ()

+
GIOFlags
+g_io_channel_get_flags (GIOChannel *channel);
+

Gets the current flags for a GIOChannel, including read-only +flags such as G_IO_FLAG_IS_READABLE.

+

The values of the flags G_IO_FLAG_IS_READABLE and G_IO_FLAG_IS_WRITABLE +are cached for internal use by the channel when it is created. +If they should change at some later point (e.g. partial shutdown +of a socket with the UNIX shutdown() function), the user +should immediately call g_io_channel_get_flags() to update +the internal values of these flags.

+
+

Parameters

+
+++++ + + + + + +

channel

a GIOChannel

 
+
+
+

Returns

+

the flags which are set on the channel

+
+
+
+
+

g_io_channel_set_flags ()

+
GIOStatus
+g_io_channel_set_flags (GIOChannel *channel,
+                        GIOFlags flags,
+                        GError **error);
+

Sets the (writeable) flags in channel + to (flags + & G_IO_FLAG_SET_MASK).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

flags

the flags to set on the IO channel

 

error

A location to return an error of type GIOChannelError

 
+
+
+

Returns

+

the status of the operation.

+
+
+
+
+

g_io_channel_get_line_term ()

+
const gchar *
+g_io_channel_get_line_term (GIOChannel *channel,
+                            gint *length);
+

This returns the string that GIOChannel uses to determine +where in the file a line break occurs. A value of NULL +indicates autodetection.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

channel

a GIOChannel

 

length

a location to return the length of the line terminator

 
+
+
+

Returns

+

The line termination string. This value +is owned by GLib and must not be freed.

+
+
+
+
+

g_io_channel_set_line_term ()

+
void
+g_io_channel_set_line_term (GIOChannel *channel,
+                            const gchar *line_term,
+                            gint length);
+

This sets the string that GIOChannel uses to determine +where in the file a line break occurs.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

line_term

The line termination string. Use NULL for +autodetect. Autodetection breaks on "\n", "\r\n", "\r", "\0", +and the Unicode paragraph separator. Autodetection should not be +used for anything other than file-based channels.

[allow-none]

length

The length of the termination string. If -1 is passed, the +string is assumed to be nul-terminated. This option allows +termination strings with embedded nuls.

 
+
+
+
+
+

g_io_channel_get_buffered ()

+
gboolean
+g_io_channel_get_buffered (GIOChannel *channel);
+

Returns whether channel + is buffered.

+
+

Parameters

+
+++++ + + + + + +

channel

a GIOChannel

 
+
+
+

Returns

+

TRUE if the channel +is buffered.

+
+
+
+
+

g_io_channel_set_buffered ()

+
void
+g_io_channel_set_buffered (GIOChannel *channel,
+                           gboolean buffered);
+

The buffering state can only be set if the channel's encoding +is NULL. For any other encoding, the channel must be buffered.

+

A buffered channel can only be set unbuffered if the channel's +internal buffers have been flushed. Newly created channels or +channels which have returned G_IO_STATUS_EOF +not require such a flush. For write-only channels, a call to +g_io_channel_flush() is sufficient. For all other channels, +the buffers may be flushed by a call to g_io_channel_seek_position(). +This includes the possibility of seeking with seek type G_SEEK_CUR +and an offset of zero. Note that this means that socket-based +channels cannot be set unbuffered once they have had data +read from them.

+

On unbuffered channels, it is safe to mix read and write +calls from the new and old APIs, if this is necessary for +maintaining old code.

+

The default state of the channel is buffered.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

channel

a GIOChannel

 

buffered

whether to set the channel buffered or unbuffered

 
+
+
+
+
+

g_io_channel_get_encoding ()

+
const gchar *
+g_io_channel_get_encoding (GIOChannel *channel);
+

Gets the encoding for the input/output of the channel. +The internal encoding is always UTF-8. The encoding NULL +makes the channel safe for binary data.

+
+

Parameters

+
+++++ + + + + + +

channel

a GIOChannel

 
+
+
+

Returns

+

A string containing the encoding, this string is +owned by GLib and must not be freed.

+
+
+
+
+

g_io_channel_set_encoding ()

+
GIOStatus
+g_io_channel_set_encoding (GIOChannel *channel,
+                           const gchar *encoding,
+                           GError **error);
+

Sets the encoding for the input/output of the channel. +The internal encoding is always UTF-8. The default encoding +for the external file is UTF-8.

+

The encoding NULL is safe to use with binary data.

+

The encoding can only be set if one of the following conditions +is true:

+
+

Channels which do not meet one of the above conditions cannot call +g_io_channel_seek_position() with an offset of G_SEEK_CUR, and, if +they are "seekable", cannot call g_io_channel_write_chars() after +calling one of the API "read" functions.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

encoding

the encoding type.

[allow-none]

error

location to store an error of type GConvertError

 
+
+
+

Returns

+

G_IO_STATUS_NORMAL if the encoding was successfully set

+
+
+
+
+

g_io_channel_get_close_on_unref ()

+
gboolean
+g_io_channel_get_close_on_unref (GIOChannel *channel);
+

Returns whether the file/socket/whatever associated with channel + +will be closed when channel + receives its final unref and is +destroyed. The default value of this is TRUE for channels created +by g_io_channel_new_file(), and FALSE for all other channels.

+
+

Parameters

+
+++++ + + + + + +

channel

a GIOChannel.

 
+
+
+

Returns

+

Whether the channel will be closed on the final unref of +the GIOChannel data structure.

+
+
+
+
+

g_io_channel_set_close_on_unref ()

+
void
+g_io_channel_set_close_on_unref (GIOChannel *channel,
+                                 gboolean do_close);
+

Setting this flag to TRUE for a channel you have already closed +can cause problems.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

channel

a GIOChannel

 

do_close

Whether to close the channel on the final unref of +the GIOChannel data structure. The default value of +this is TRUE for channels created by g_io_channel_new_file(), +and FALSE for all other channels.

 
+
+
+
+
+

g_io_channel_read ()

+
GIOError
+g_io_channel_read (GIOChannel *channel,
+                   gchar *buf,
+                   gsize count,
+                   gsize *bytes_read);
+
+

g_io_channel_read has been deprecated since version 2.2 and should not be used in newly-written code.

+

Use g_io_channel_read_chars() instead.

+
+

Reads data from a GIOChannel.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

buf

a buffer to read the data into (which should be at least +count bytes long)

 

count

the number of bytes to read from the GIOChannel

 

bytes_read

returns the number of bytes actually read

 
+
+
+

Returns

+

G_IO_ERROR_NONE if the operation was successful.

+
+
+
+
+

g_io_channel_write ()

+
GIOError
+g_io_channel_write (GIOChannel *channel,
+                    const gchar *buf,
+                    gsize count,
+                    gsize *bytes_written);
+
+

g_io_channel_write has been deprecated since version 2.2 and should not be used in newly-written code.

+

Use g_io_channel_write_chars() instead.

+
+

Writes data to a GIOChannel.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

buf

the buffer containing the data to write

 

count

the number of bytes to write

 

bytes_written

the number of bytes actually written

 
+
+
+

Returns

+

G_IO_ERROR_NONE if the operation was successful.

+
+
+
+
+

g_io_channel_seek ()

+
GIOError
+g_io_channel_seek (GIOChannel *channel,
+                   gint64 offset,
+                   GSeekType type);
+
+

g_io_channel_seek has been deprecated since version 2.2 and should not be used in newly-written code.

+

Use g_io_channel_seek_position() instead.

+
+

Sets the current position in the GIOChannel, similar to the standard +library function fseek().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

channel

a GIOChannel

 

offset

an offset, in bytes, which is added to the position specified +by type +

 

type

the position in the file, which can be G_SEEK_CUR (the current +position), G_SEEK_SET (the start of the file), or G_SEEK_END +(the end of the file)

 
+
+
+

Returns

+

G_IO_ERROR_NONE if the operation was successful.

+
+
+
+
+

g_io_channel_close ()

+
void
+g_io_channel_close (GIOChannel *channel);
+
+

g_io_channel_close has been deprecated since version 2.2 and should not be used in newly-written code.

+

Use g_io_channel_shutdown() instead.

+
+

Close an IO channel. Any pending data to be written will be +flushed, ignoring errors. The channel will not be freed until the +last reference is dropped using g_io_channel_unref().

+
+

Parameters

+
+++++ + + + + + +

channel

A GIOChannel

 
+
+
+
+
+

Types and Values

+
+

struct GIOChannel

+
struct GIOChannel {
+};
+
+

A data structure representing an IO Channel. The fields should be +considered private and should only be accessed with the following +functions.

+
+
+
+

enum GSeekType

+

An enumeration specifying the base position for a +g_io_channel_seek_position() operation.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

G_SEEK_CUR

+

the current position in the file.

+
 

G_SEEK_SET

+

the start of the file.

+
 

G_SEEK_END

+

the end of the file.

+
 
+
+
+
+
+

enum GIOStatus

+

Stati returned by most of the GIOFuncs functions.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

G_IO_STATUS_ERROR

+

An error occurred.

+
 

G_IO_STATUS_NORMAL

+

Success.

+
 

G_IO_STATUS_EOF

+

End of file.

+
 

G_IO_STATUS_AGAIN

+

Resource temporarily unavailable.

+
 
+
+
+
+
+

enum GIOChannelError

+

Error codes returned by GIOChannel operations.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_IO_CHANNEL_ERROR_FBIG

+

File too large.

+
 

G_IO_CHANNEL_ERROR_INVAL

+

Invalid argument.

+
 

G_IO_CHANNEL_ERROR_IO

+

IO error.

+
 

G_IO_CHANNEL_ERROR_ISDIR

+

File is a directory.

+
 

G_IO_CHANNEL_ERROR_NOSPC

+

No space left on device.

+
 

G_IO_CHANNEL_ERROR_NXIO

+

No such device or address.

+
 

G_IO_CHANNEL_ERROR_OVERFLOW

+

Value too large for defined datatype.

+
 

G_IO_CHANNEL_ERROR_PIPE

+

Broken pipe.

+
 

G_IO_CHANNEL_ERROR_FAILED

+

Some other error.

+
 
+
+
+
+
+

G_IO_CHANNEL_ERROR

+
#define G_IO_CHANNEL_ERROR g_io_channel_error_quark()
+
+

Error domain for GIOChannel operations. Errors in this domain will +be from the GIOChannelError enumeration. See GError for +information on error domains.

+
+
+
+

enum GIOCondition

+

A bitwise combination representing a condition to watch for on an +event source.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_IO_IN

+

There is data to read.

+
 

G_IO_OUT

+

Data can be written (without blocking).

+
 

G_IO_PRI

+

There is urgent data to read.

+
 

G_IO_ERR

+

Error condition.

+
 

G_IO_HUP

+

Hung up (the connection has been broken, usually for + pipes and sockets).

+
 

G_IO_NVAL

+

Invalid request. The file descriptor is not open.

+
 
+
+
+
+
+

struct GIOFuncs

+
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);
+};
+
+

A table of functions used to handle different types of GIOChannel +in a generic way.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

io_read ()

reads raw bytes from the channel. This is called from +various functions such as g_io_channel_read_chars() to +read raw bytes from the channel. Encoding and buffering +issues are dealt with at a higher level.

 

io_write ()

writes raw bytes to the channel. This is called from +various functions such as g_io_channel_write_chars() to +write raw bytes to the channel. Encoding and buffering +issues are dealt with at a higher level.

 

io_seek ()

(optional) seeks the channel. This is called from +g_io_channel_seek() on channels that support it.

 

io_close ()

closes the channel. This is called from +g_io_channel_close() after flushing the buffers.

 

io_create_watch ()

creates a watch on the channel. This call +corresponds directly to g_io_create_watch().

 

io_free ()

called from g_io_channel_unref() when the channel needs to +be freed. This function must free the memory associated +with the channel, including freeing the GIOChannel +structure itself. The channel buffers have been flushed +and possibly io_close +has been called by the time this +function is called.

 

io_set_flags ()

sets the GIOFlags on the channel. This is called +from g_io_channel_set_flags() with all flags except +for G_IO_FLAG_APPEND and G_IO_FLAG_NONBLOCK masked +out.

 

io_get_flags ()

gets the GIOFlags for the channel. This function +need only return the G_IO_FLAG_APPEND and +G_IO_FLAG_NONBLOCK flags; g_io_channel_get_flags() +automatically adds the others as appropriate.

 
+
+
+
+
+

enum GIOFlags

+

Specifies properties of a GIOChannel. Some of the flags can only be +read with g_io_channel_get_flags(), but not changed with +g_io_channel_set_flags().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_IO_FLAG_APPEND

+

turns on append mode, corresponds to O_APPEND + (see the documentation of the UNIX open() syscall)

+
 

G_IO_FLAG_NONBLOCK

+

turns on nonblocking mode, corresponds to + O_NONBLOCK/O_NDELAY (see the documentation of the UNIX open() + syscall)

+
 

G_IO_FLAG_IS_READABLE

+

indicates that the io channel is readable. + This flag cannot be changed.

+
 

G_IO_FLAG_IS_WRITABLE

+

indicates that the io channel is writable. + This flag cannot be changed.

+
 

G_IO_FLAG_IS_WRITEABLE

+

a misspelled version of G_IO_FLAG_IS_WRITABLE + + that existed before the spelling was fixed in GLib 2.30. It is kept + here for compatibility reasons. Deprecated since 2.30

+
 

G_IO_FLAG_IS_SEEKABLE

+

indicates that the io channel is seekable, + i.e. that g_io_channel_seek_position() can be used on it. + This flag cannot be changed.

+
 

G_IO_FLAG_MASK

+

the mask that specifies all the valid flags.

+
 

G_IO_FLAG_GET_MASK

+

the mask of the flags that are returned from + g_io_channel_get_flags()

+
 

G_IO_FLAG_SET_MASK

+

the mask of the flags that the user can modify + with g_io_channel_set_flags()

+
 
+
+
+
+
+

enum GIOError

+

GIOError is only used by the deprecated functions +g_io_channel_read(), g_io_channel_write(), and g_io_channel_seek().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

G_IO_ERROR_NONE

+

no error

+
 

G_IO_ERROR_AGAIN

+

an EAGAIN error occurred

+
 

G_IO_ERROR_INVAL

+

an EINVAL error occurred

+
 

G_IO_ERROR_UNKNOWN

+

another error occurred

+
 
+
+
+
+
+

See Also

+

g_io_add_watch(), g_io_add_watch_full(), g_source_remove(), + GMainLoop

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Key-value-file-parser.html b/docs/reference/glib/html/glib-Key-value-file-parser.html new file mode 100644 index 0000000..579e90e --- /dev/null +++ b/docs/reference/glib/html/glib-Key-value-file-parser.html @@ -0,0 +1,3466 @@ + + + + +Key-value file parser: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Key-value file parser

+

Key-value file parser — parses .ini-like config files

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GKeyFile * + +g_key_file_new () +
+void + +g_key_file_free () +
+GKeyFile * + +g_key_file_ref () +
+void + +g_key_file_unref () +
+void + +g_key_file_set_list_separator () +
+gboolean + +g_key_file_load_from_file () +
+gboolean + +g_key_file_load_from_data () +
+gboolean + +g_key_file_load_from_data_dirs () +
+gboolean + +g_key_file_load_from_dirs () +
+gchar * + +g_key_file_to_data () +
+gboolean + +g_key_file_save_to_file () +
+gchar * + +g_key_file_get_start_group () +
+gchar ** + +g_key_file_get_groups () +
+gchar ** + +g_key_file_get_keys () +
+gboolean + +g_key_file_has_group () +
+gboolean + +g_key_file_has_key () +
+gchar * + +g_key_file_get_value () +
+gchar * + +g_key_file_get_string () +
+gchar * + +g_key_file_get_locale_string () +
+gboolean + +g_key_file_get_boolean () +
+gint + +g_key_file_get_integer () +
+gint64 + +g_key_file_get_int64 () +
+guint64 + +g_key_file_get_uint64 () +
+gdouble + +g_key_file_get_double () +
+gchar ** + +g_key_file_get_string_list () +
+gchar ** + +g_key_file_get_locale_string_list () +
+gboolean * + +g_key_file_get_boolean_list () +
+gint * + +g_key_file_get_integer_list () +
+gdouble * + +g_key_file_get_double_list () +
+gchar * + +g_key_file_get_comment () +
+void + +g_key_file_set_value () +
+void + +g_key_file_set_string () +
+void + +g_key_file_set_locale_string () +
+void + +g_key_file_set_boolean () +
+void + +g_key_file_set_integer () +
+void + +g_key_file_set_int64 () +
+void + +g_key_file_set_uint64 () +
+void + +g_key_file_set_double () +
+void + +g_key_file_set_string_list () +
+void + +g_key_file_set_locale_string_list () +
+void + +g_key_file_set_boolean_list () +
+void + +g_key_file_set_integer_list () +
+void + +g_key_file_set_double_list () +
+gboolean + +g_key_file_set_comment () +
+gboolean + +g_key_file_remove_group () +
+gboolean + +g_key_file_remove_key () +
+gboolean + +g_key_file_remove_comment () +
+
+ +
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GKeyFile lets you parse, edit or create files containing groups of +key-value pairs, which we call "key files" for lack of a better name. +Several freedesktop.org specifications use key files now, e.g the +Desktop Entry Specification +and the +Icon Theme Specification.

+

The syntax of key files is described in detail in the +Desktop Entry Specification, +here is a quick summary: Key files +consists of groups of key-value pairs, interspersed with comments.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
# this is just an example
+# there can be comments before the first group
+
+[First Group]
+
+Name=Key File Example\tthis value shows\nescaping
+
+# localized strings are stored in multiple key-value pairs
+Welcome=Hello
+Welcome[de]=Hallo
+Welcome[fr_FR]=Bonjour
+Welcome[it]=Ciao
+Welcome[be@latin]=Hello
+
+[Another Group]
+
+Numbers=2;20;-200;0
+
+Booleans=true;false;true;true
+
+ +

+

Lines beginning with a '#' and blank lines are considered comments.

+

Groups are started by a header line containing the group name enclosed +in '[' and ']', and ended implicitly by the start of the next group or +the end of the file. Each key-value pair must be contained in a group.

+

Key-value pairs generally have the form key=value, with the +exception of localized strings, which have the form +key[locale]=value, with a locale identifier of the +form lang_COUNTRY@MODIFIER where COUNTRY and MODIFIER +are optional. +Space before and after the '=' character are ignored. Newline, tab, +carriage return and backslash characters in value are escaped as \n, +\t, \r, and \, respectively. To preserve leading spaces in values, +these can also be escaped as \s.

+

Key files can store strings (possibly with localized variants), integers, +booleans and lists of these. Lists are separated by a separator character, +typically ';' or ','. To use the list separator character in a value in +a list, it has to be escaped by prefixing it with a backslash.

+

This syntax is obviously inspired by the .ini files commonly met +on Windows, but there are some important differences:

+
    +
  • .ini files use the ';' character to begin comments, +key files use the '#' character.

  • +
  • Key files do not allow for ungrouped keys meaning only +comments can precede the first group.

  • +
  • Key files are always encoded in UTF-8.

  • +
  • Key and Group names are case-sensitive. For example, a group called +[GROUP] is a different from [group].

  • +
  • .ini files don't have a strongly typed boolean entry type, +they only have GetProfileInt(). In key files, only +true and false (in lower case) are allowed.

  • +
+

Note that in contrast to the +Desktop Entry Specification, +groups in key files may contain the same +key multiple times; the last entry wins. Key files may also contain +multiple groups with the same name; they are merged together. +Another difference is that keys and group names in key files are not +restricted to ASCII characters.

+
+
+

Functions

+
+

g_key_file_new ()

+
GKeyFile *
+g_key_file_new (void);
+

Creates a new empty GKeyFile object. Use +g_key_file_load_from_file(), g_key_file_load_from_data(), +g_key_file_load_from_dirs() or g_key_file_load_from_data_dirs() to +read an existing key file.

+
+

Returns

+

an empty GKeyFile.

+

[transfer full]

+
+

Since: 2.6

+
+
+
+

g_key_file_free ()

+
void
+g_key_file_free (GKeyFile *key_file);
+

Clears all keys and groups from key_file +, and decreases the +reference count by 1. If the reference count reaches zero, +frees the key file and all its allocated memory.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

key_file

a GKeyFile

 
+
+

Since: 2.6

+
+
+
+

g_key_file_ref ()

+
GKeyFile *
+g_key_file_ref (GKeyFile *key_file);
+

Increases the reference count of key_file +.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

key_file

a GKeyFile

 
+
+
+

Returns

+

the same key_file +.

+
+

Since: 2.32

+
+
+
+

g_key_file_unref ()

+
void
+g_key_file_unref (GKeyFile *key_file);
+

Decreases the reference count of key_file + by 1. If the reference count +reaches zero, frees the key file and all its allocated memory.

+
+

Parameters

+
+++++ + + + + + +

key_file

a GKeyFile

 
+
+

Since: 2.32

+
+
+
+

g_key_file_set_list_separator ()

+
void
+g_key_file_set_list_separator (GKeyFile *key_file,
+                               gchar separator);
+

Sets the character which is used to separate +values in lists. Typically ';' or ',' are used +as separators. The default list separator is ';'.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

key_file

a GKeyFile

 

separator

the separator

 
+
+

Since: 2.6

+
+
+
+

g_key_file_load_from_file ()

+
gboolean
+g_key_file_load_from_file (GKeyFile *key_file,
+                           const gchar *file,
+                           GKeyFileFlags flags,
+                           GError **error);
+

Loads a key file into an empty GKeyFile structure. +If the file could not be loaded then error + is set to +either a GFileError or GKeyFileError.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

an empty GKeyFile struct

 

file

the path of a filename to load, in the GLib filename encoding.

[type filename]

flags

flags from GKeyFileFlags

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE if a key file could be loaded, FALSE otherwise

+
+

Since: 2.6

+
+
+
+

g_key_file_load_from_data ()

+
gboolean
+g_key_file_load_from_data (GKeyFile *key_file,
+                           const gchar *data,
+                           gsize length,
+                           GKeyFileFlags flags,
+                           GError **error);
+

Loads a key file from memory into an empty GKeyFile structure. +If the object cannot be created then error is set to a GKeyFileError.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

an empty GKeyFile struct

 

data

key file loaded in memory

 

length

the length of data +in bytes (or (gsize)-1 if data is nul-terminated)

 

flags

flags from GKeyFileFlags

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE if a key file could be loaded, FALSE otherwise

+
+

Since: 2.6

+
+
+
+

g_key_file_load_from_data_dirs ()

+
gboolean
+g_key_file_load_from_data_dirs (GKeyFile *key_file,
+                                const gchar *file,
+                                gchar **full_path,
+                                GKeyFileFlags flags,
+                                GError **error);
+

This function looks for a key file named file + in the paths +returned from g_get_user_data_dir() and g_get_system_data_dirs(), +loads the file into key_file + and returns the file's full path in +full_path +. If the file could not be loaded then an error is +set to either a GFileError or GKeyFileError.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

an empty GKeyFile struct

 

file

a relative path to a filename to open and parse.

[type filename]

full_path

return location for a string containing the full path +of the file, or NULL.

[out][type filename][allow-none]

flags

flags from GKeyFileFlags

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE if a key file could be loaded, FALSE othewise

+
+

Since: 2.6

+
+
+
+

g_key_file_load_from_dirs ()

+
gboolean
+g_key_file_load_from_dirs (GKeyFile *key_file,
+                           const gchar *file,
+                           const gchar **search_dirs,
+                           gchar **full_path,
+                           GKeyFileFlags flags,
+                           GError **error);
+

This function looks for a key file named file + in the paths +specified in search_dirs +, loads the file into key_file + and +returns the file's full path in full_path +. If the file could not +be loaded then an error is set to either a GFileError or +GKeyFileError.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

an empty GKeyFile struct

 

file

a relative path to a filename to open and parse.

[type filename]

search_dirs

NULL-terminated array of directories to search.

[array zero-terminated=1][element-type filename]

full_path

return location for a string containing the full path +of the file, or NULL.

[out][type filename][allow-none]

flags

flags from GKeyFileFlags

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

TRUE if a key file could be loaded, FALSE otherwise

+
+

Since: 2.14

+
+
+
+

g_key_file_to_data ()

+
gchar *
+g_key_file_to_data (GKeyFile *key_file,
+                    gsize *length,
+                    GError **error);
+

This function outputs key_file + as a string.

+

Note that this function never reports an error, +so it is safe to pass NULL as error +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

length

return location for the length of the +returned string, or NULL.

[out][allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a newly allocated string holding +the contents of the GKeyFile

+
+

Since: 2.6

+
+
+
+

g_key_file_save_to_file ()

+
gboolean
+g_key_file_save_to_file (GKeyFile *key_file,
+                         const gchar *filename,
+                         GError **error);
+

Writes the contents of key_file + to filename + using +g_file_set_contents().

+

This function can fail for any of the reasons that +g_file_set_contents() may fail.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

filename

the name of the file to write to

 

error

a pointer to a NULL GError, or NULL

 
+
+
+

Returns

+

TRUE if successful, else FALSE with error +set

+
+

Since: 2.40

+
+
+
+

g_key_file_get_start_group ()

+
gchar *
+g_key_file_get_start_group (GKeyFile *key_file);
+

Returns the name of the start group of the file.

+
+

Parameters

+
+++++ + + + + + +

key_file

a GKeyFile

 
+
+
+

Returns

+

The start group of the key file.

+
+

Since: 2.6

+
+
+
+

g_key_file_get_groups ()

+
gchar **
+g_key_file_get_groups (GKeyFile *key_file,
+                       gsize *length);
+

Returns all groups in the key file loaded with key_file +. +The array of returned groups will be NULL-terminated, so +length + may optionally be NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

key_file

a GKeyFile

 

length

return location for the number of returned groups, or NULL.

[out][allow-none]
+
+
+

Returns

+

a newly-allocated NULL-terminated array of strings. +Use g_strfreev() to free it.

+

[array zero-terminated=1][transfer full]

+
+

Since: 2.6

+
+
+
+

g_key_file_get_keys ()

+
gchar **
+g_key_file_get_keys (GKeyFile *key_file,
+                     const gchar *group_name,
+                     gsize *length,
+                     GError **error);
+

Returns all keys for the group name group_name +. The array of +returned keys will be NULL-terminated, so length + may +optionally be NULL. In the event that the group_name + cannot +be found, NULL is returned and error + is set to +G_KEY_FILE_ERROR_GROUP_NOT_FOUND.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

length

return location for the number of keys returned, or NULL.

[out][allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a newly-allocated NULL-terminated array of strings. +Use g_strfreev() to free it.

+

[array zero-terminated=1][transfer full]

+
+

Since: 2.6

+
+
+
+

g_key_file_has_group ()

+
gboolean
+g_key_file_has_group (GKeyFile *key_file,
+                      const gchar *group_name);
+

Looks whether the key file has the group group_name +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 
+
+
+

Returns

+

TRUE if group_name +is a part of key_file +, FALSE +otherwise.

+
+

Since: 2.6

+
+
+
+

g_key_file_has_key ()

+
gboolean
+g_key_file_has_key (GKeyFile *key_file,
+                    const gchar *group_name,
+                    const gchar *key,
+                    GError **error);
+

Looks whether the key file has the key key + in the group +group_name +.

+

Note that this function does not follow the rules for GError strictly; +the return value both carries meaning and signals an error. To use +this function, you must pass a GError pointer in error +, and check +whether it is not NULL to see if an error occurred.

+

Language bindings should use g_key_file_get_value() to test whether +or not a key exists.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key name

 

error

return location for a GError

 
+
+
+

Returns

+

TRUE if key +is a part of group_name +, FALSE otherwise

+
+

Since: 2.6

+
+
+
+

g_key_file_get_value ()

+
gchar *
+g_key_file_get_value (GKeyFile *key_file,
+                      const gchar *group_name,
+                      const gchar *key,
+                      GError **error);
+

Returns the raw value associated with key + under group_name +. +Use g_key_file_get_string() to retrieve an unescaped UTF-8 string.

+

In the event the key cannot be found, NULL is returned and +error + is set to G_KEY_FILE_ERROR_KEY_NOT_FOUND. In the +event that the group_name + cannot be found, NULL is returned +and error + is set to G_KEY_FILE_ERROR_GROUP_NOT_FOUND.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a newly allocated string or NULL if the specified +key cannot be found.

+
+

Since: 2.6

+
+
+
+

g_key_file_get_string ()

+
gchar *
+g_key_file_get_string (GKeyFile *key_file,
+                       const gchar *group_name,
+                       const gchar *key,
+                       GError **error);
+

Returns the string value associated with key + under group_name +. +Unlike g_key_file_get_value(), this function handles escape sequences +like \s.

+

In the event the key cannot be found, NULL is returned and +error + is set to G_KEY_FILE_ERROR_KEY_NOT_FOUND. In the +event that the group_name + cannot be found, NULL is returned +and error + is set to G_KEY_FILE_ERROR_GROUP_NOT_FOUND.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a newly allocated string or NULL if the specified +key cannot be found.

+
+

Since: 2.6

+
+
+
+

g_key_file_get_locale_string ()

+
gchar *
+g_key_file_get_locale_string (GKeyFile *key_file,
+                              const gchar *group_name,
+                              const gchar *key,
+                              const gchar *locale,
+                              GError **error);
+

Returns the value associated with key + under group_name + +translated in the given locale + if available. If locale + is +NULL then the current locale is assumed.

+

If key + cannot be found then NULL is returned and error + is set +to G_KEY_FILE_ERROR_KEY_NOT_FOUND. If the value associated +with key + cannot be interpreted or no suitable translation can +be found then the untranslated value is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

locale

a locale identifier or NULL.

[allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a newly allocated string or NULL if the specified +key cannot be found.

+
+

Since: 2.6

+
+
+
+

g_key_file_get_boolean ()

+
gboolean
+g_key_file_get_boolean (GKeyFile *key_file,
+                        const gchar *group_name,
+                        const gchar *key,
+                        GError **error);
+

Returns the value associated with key + under group_name + as a +boolean.

+

If key + cannot be found then FALSE is returned and error + is set +to G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the value +associated with key + cannot be interpreted as a boolean then FALSE +is returned and error + is set to G_KEY_FILE_ERROR_INVALID_VALUE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

error

return location for a GError

 
+
+
+

Returns

+

the value associated with the key as a boolean, +or FALSE if the key was not found or could not be parsed.

+
+

Since: 2.6

+
+
+
+

g_key_file_get_integer ()

+
gint
+g_key_file_get_integer (GKeyFile *key_file,
+                        const gchar *group_name,
+                        const gchar *key,
+                        GError **error);
+

Returns the value associated with key + under group_name + as an +integer.

+

If key + cannot be found then 0 is returned and error + is set to +G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the value associated +with key + cannot be interpreted as an integer then 0 is returned +and error + is set to G_KEY_FILE_ERROR_INVALID_VALUE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

error

return location for a GError

 
+
+
+

Returns

+

the value associated with the key as an integer, or +0 if the key was not found or could not be parsed.

+
+

Since: 2.6

+
+
+
+

g_key_file_get_int64 ()

+
gint64
+g_key_file_get_int64 (GKeyFile *key_file,
+                      const gchar *group_name,
+                      const gchar *key,
+                      GError **error);
+

Returns the value associated with key + under group_name + as a signed +64-bit integer. This is similar to g_key_file_get_integer() but can return +64-bit results without truncation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a non-NULL GKeyFile

 

group_name

a non-NULL group name

 

key

a non-NULL key

 

error

return location for a GError

 
+
+
+

Returns

+

the value associated with the key as a signed 64-bit integer, or +0 if the key was not found or could not be parsed.

+
+

Since: 2.26

+
+
+
+

g_key_file_get_uint64 ()

+
guint64
+g_key_file_get_uint64 (GKeyFile *key_file,
+                       const gchar *group_name,
+                       const gchar *key,
+                       GError **error);
+

Returns the value associated with key + under group_name + as an unsigned +64-bit integer. This is similar to g_key_file_get_integer() but can return +large positive results without truncation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a non-NULL GKeyFile

 

group_name

a non-NULL group name

 

key

a non-NULL key

 

error

return location for a GError

 
+
+
+

Returns

+

the value associated with the key as an unsigned 64-bit integer, +or 0 if the key was not found or could not be parsed.

+
+

Since: 2.26

+
+
+
+

g_key_file_get_double ()

+
gdouble
+g_key_file_get_double (GKeyFile *key_file,
+                       const gchar *group_name,
+                       const gchar *key,
+                       GError **error);
+

Returns the value associated with key + under group_name + as a +double. If group_name + is NULL, the start_group is used.

+

If key + cannot be found then 0.0 is returned and error + is set to +G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the value associated +with key + cannot be interpreted as a double then 0.0 is returned +and error + is set to G_KEY_FILE_ERROR_INVALID_VALUE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

error

return location for a GError

 
+
+
+

Returns

+

the value associated with the key as a double, or +0.0 if the key was not found or could not be parsed.

+
+

Since: 2.12

+
+
+
+

g_key_file_get_string_list ()

+
gchar **
+g_key_file_get_string_list (GKeyFile *key_file,
+                            const gchar *group_name,
+                            const gchar *key,
+                            gsize *length,
+                            GError **error);
+

Returns the values associated with key + under group_name +.

+

In the event the key cannot be found, NULL is returned and +error + is set to G_KEY_FILE_ERROR_KEY_NOT_FOUND. In the +event that the group_name + cannot be found, NULL is returned +and error + is set to G_KEY_FILE_ERROR_GROUP_NOT_FOUND.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

length

return location for the number of returned strings, or NULL.

[out][allow-none]

error

return location for a GError, or NULL

 
+
+
+

Returns

+

a NULL-terminated string array or NULL if the specified +key cannot be found. The array should be freed with g_strfreev().

+

[array zero-terminated=1 length=length][element-type utf8][transfer full]

+
+

Since: 2.6

+
+
+
+

g_key_file_get_locale_string_list ()

+
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);
+

Returns the values associated with key + under group_name + +translated in the given locale + if available. If locale + is +NULL then the current locale is assumed.

+

If key + cannot be found then NULL is returned and error + is set +to G_KEY_FILE_ERROR_KEY_NOT_FOUND. If the values associated +with key + cannot be interpreted or no suitable translations +can be found then the untranslated values are returned. The +returned array is NULL-terminated, so length + may optionally +be NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

locale

a locale identifier or NULL.

[allow-none]

length

return location for the number of returned strings or NULL.

[out][allow-none]

error

return location for a GError or NULL

 
+
+
+

Returns

+

a newly allocated NULL-terminated string array +or NULL if the key isn't found. The string array should be freed +with g_strfreev().

+

[array zero-terminated=1 length=length][element-type utf8][transfer full]

+
+

Since: 2.6

+
+
+
+

g_key_file_get_boolean_list ()

+
gboolean *
+g_key_file_get_boolean_list (GKeyFile *key_file,
+                             const gchar *group_name,
+                             const gchar *key,
+                             gsize *length,
+                             GError **error);
+

Returns the values associated with key + under group_name + as +booleans.

+

If key + cannot be found then NULL is returned and error + is set to +G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the values associated +with key + cannot be interpreted as booleans then NULL is returned +and error + is set to G_KEY_FILE_ERROR_INVALID_VALUE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

length

the number of booleans returned.

[out]

error

return location for a GError

 
+
+
+

Returns

+

the values associated with the key as a list of booleans, or NULL if the +key was not found or could not be parsed. The returned list of booleans +should be freed with g_free() when no longer needed.

+

[array length=length][element-type gboolean][transfer container]

+
+

Since: 2.6

+
+
+
+

g_key_file_get_integer_list ()

+
gint *
+g_key_file_get_integer_list (GKeyFile *key_file,
+                             const gchar *group_name,
+                             const gchar *key,
+                             gsize *length,
+                             GError **error);
+

Returns the values associated with key + under group_name + as +integers.

+

If key + cannot be found then NULL is returned and error + is set to +G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the values associated +with key + cannot be interpreted as integers then NULL is returned +and error + is set to G_KEY_FILE_ERROR_INVALID_VALUE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

length

the number of integers returned.

[out]

error

return location for a GError

 
+
+
+

Returns

+

the values associated with the key as a list of integers, or NULL if +the key was not found or could not be parsed. The returned list of +integers should be freed with g_free() when no longer needed.

+

[array length=length][element-type gint][transfer container]

+
+

Since: 2.6

+
+
+
+

g_key_file_get_double_list ()

+
gdouble *
+g_key_file_get_double_list (GKeyFile *key_file,
+                            const gchar *group_name,
+                            const gchar *key,
+                            gsize *length,
+                            GError **error);
+

Returns the values associated with key + under group_name + as +doubles.

+

If key + cannot be found then NULL is returned and error + is set to +G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the values associated +with key + cannot be interpreted as doubles then NULL is returned +and error + is set to G_KEY_FILE_ERROR_INVALID_VALUE.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

length

the number of doubles returned.

[out]

error

return location for a GError

 
+
+
+

Returns

+

the values associated with the key as a list of doubles, or NULL if the +key was not found or could not be parsed. The returned list of doubles +should be freed with g_free() when no longer needed.

+

[array length=length][element-type gdouble][transfer container]

+
+

Since: 2.12

+
+
+
+

g_key_file_get_comment ()

+
gchar *
+g_key_file_get_comment (GKeyFile *key_file,
+                        const gchar *group_name,
+                        const gchar *key,
+                        GError **error);
+

Retrieves a comment above key + from group_name +. +If key + is NULL then comment + will be read from above +group_name +. If both key + and group_name + are NULL, then +comment + will be read from above the first group in the file.

+

Note that the returned string includes the '#' comment markers.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name, or NULL.

[allow-none]

key

a key

 

error

return location for a GError

 
+
+
+

Returns

+

a comment that should be freed with g_free()

+
+

Since: 2.6

+
+
+
+

g_key_file_set_value ()

+
void
+g_key_file_set_value (GKeyFile *key_file,
+                      const gchar *group_name,
+                      const gchar *key,
+                      const gchar *value);
+

Associates a new value with key + under group_name +.

+

If key + cannot be found then it is created. If group_name + cannot +be found then it is created. To set an UTF-8 string which may contain +characters that need escaping (such as newlines or spaces), use +g_key_file_set_string().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

value

a string

 
+
+

Since: 2.6

+
+
+
+

g_key_file_set_string ()

+
void
+g_key_file_set_string (GKeyFile *key_file,
+                       const gchar *group_name,
+                       const gchar *key,
+                       const gchar *string);
+

Associates a new string value with key + under group_name +. +If key + cannot be found then it is created. +If group_name + cannot be found then it is created. +Unlike g_key_file_set_value(), this function handles characters +that need escaping, such as newlines.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

string

a string

 
+
+

Since: 2.6

+
+
+
+

g_key_file_set_locale_string ()

+
void
+g_key_file_set_locale_string (GKeyFile *key_file,
+                              const gchar *group_name,
+                              const gchar *key,
+                              const gchar *locale,
+                              const gchar *string);
+

Associates a string value for key + and locale + under group_name +. +If the translation for key + cannot be found then it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

locale

a locale identifier

 

string

a string

 
+
+

Since: 2.6

+
+
+
+

g_key_file_set_boolean ()

+
void
+g_key_file_set_boolean (GKeyFile *key_file,
+                        const gchar *group_name,
+                        const gchar *key,
+                        gboolean value);
+

Associates a new boolean value with key + under group_name +. +If key + cannot be found then it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

value

TRUE or FALSE

 
+
+

Since: 2.6

+
+
+
+

g_key_file_set_integer ()

+
void
+g_key_file_set_integer (GKeyFile *key_file,
+                        const gchar *group_name,
+                        const gchar *key,
+                        gint value);
+

Associates a new integer value with key + under group_name +. +If key + cannot be found then it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

value

an integer value

 
+
+

Since: 2.6

+
+
+
+

g_key_file_set_int64 ()

+
void
+g_key_file_set_int64 (GKeyFile *key_file,
+                      const gchar *group_name,
+                      const gchar *key,
+                      gint64 value);
+

Associates a new integer value with key + under group_name +. +If key + cannot be found then it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

value

an integer value

 
+
+

Since: 2.26

+
+
+
+

g_key_file_set_uint64 ()

+
void
+g_key_file_set_uint64 (GKeyFile *key_file,
+                       const gchar *group_name,
+                       const gchar *key,
+                       guint64 value);
+

Associates a new integer value with key + under group_name +. +If key + cannot be found then it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

value

an integer value

 
+
+

Since: 2.26

+
+
+
+

g_key_file_set_double ()

+
void
+g_key_file_set_double (GKeyFile *key_file,
+                       const gchar *group_name,
+                       const gchar *key,
+                       gdouble value);
+

Associates a new double value with key + under group_name +. +If key + cannot be found then it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

value

an double value

 
+
+

Since: 2.12

+
+
+
+

g_key_file_set_string_list ()

+
void
+g_key_file_set_string_list (GKeyFile *key_file,
+                            const gchar *group_name,
+                            const gchar *key,
+                            const gchar * const list[],
+                            gsize length);
+

Associates a list of string values for key + under group_name +. +If key + cannot be found then it is created. +If group_name + cannot be found then it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

list

an array of string values.

[array zero-terminated=1 length=length][element-type utf8]

length

number of string values in list +

 
+
+

Since: 2.6

+
+
+
+

g_key_file_set_locale_string_list ()

+
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);
+

Associates a list of string values for key + and locale + under +group_name +. If the translation for key + cannot be found then +it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

locale

a locale identifier

 

list

a NULL-terminated array of locale string values.

[array zero-terminated=1 length=length]

length

the length of list +

 
+
+

Since: 2.6

+
+
+
+

g_key_file_set_boolean_list ()

+
void
+g_key_file_set_boolean_list (GKeyFile *key_file,
+                             const gchar *group_name,
+                             const gchar *key,
+                             gboolean list[],
+                             gsize length);
+

Associates a list of boolean values with key + under group_name +. +If key + cannot be found then it is created. +If group_name + is NULL, the start_group is used.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

list

an array of boolean values.

[array length=length]

length

length of list +

 
+
+

Since: 2.6

+
+
+
+

g_key_file_set_integer_list ()

+
void
+g_key_file_set_integer_list (GKeyFile *key_file,
+                             const gchar *group_name,
+                             const gchar *key,
+                             gint list[],
+                             gsize length);
+

Associates a list of integer values with key + under group_name +. +If key + cannot be found then it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

list

an array of integer values.

[array length=length]

length

number of integer values in list +

 
+
+

Since: 2.6

+
+
+
+

g_key_file_set_double_list ()

+
void
+g_key_file_set_double_list (GKeyFile *key_file,
+                            const gchar *group_name,
+                            const gchar *key,
+                            gdouble list[],
+                            gsize length);
+

Associates a list of double values with key + under +group_name +. If key + cannot be found then it is created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key

 

list

an array of double values.

[array length=length]

length

number of double values in list +

 
+
+

Since: 2.12

+
+
+
+

g_key_file_set_comment ()

+
gboolean
+g_key_file_set_comment (GKeyFile *key_file,
+                        const gchar *group_name,
+                        const gchar *key,
+                        const gchar *comment,
+                        GError **error);
+

Places a comment above key + from group_name +.

+

If key + is NULL then comment + will be written above group_name +. +If both key + and group_name + are NULL, then comment + will be +written above the first group in the file.

+

Note that this function prepends a '#' comment marker to +each line of comment +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name, or NULL.

[allow-none]

key

a key.

[allow-none]

comment

a comment

 

error

return location for a GError

 
+
+
+

Returns

+

TRUE if the comment was written, FALSE otherwise

+
+

Since: 2.6

+
+
+
+

g_key_file_remove_group ()

+
gboolean
+g_key_file_remove_group (GKeyFile *key_file,
+                         const gchar *group_name,
+                         GError **error);
+

Removes the specified group, group_name +, +from the key file.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

error

return location for a GError or NULL

 
+
+
+

Returns

+

TRUE if the group was removed, FALSE otherwise

+
+

Since: 2.6

+
+
+
+

g_key_file_remove_key ()

+
gboolean
+g_key_file_remove_key (GKeyFile *key_file,
+                       const gchar *group_name,
+                       const gchar *key,
+                       GError **error);
+

Removes key + in group_name + from the key file.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name

 

key

a key name to remove

 

error

return location for a GError or NULL

 
+
+
+

Returns

+

TRUE if the key was removed, FALSE otherwise

+
+

Since: 2.6

+
+
+
+

g_key_file_remove_comment ()

+
gboolean
+g_key_file_remove_comment (GKeyFile *key_file,
+                           const gchar *group_name,
+                           const gchar *key,
+                           GError **error);
+

Removes a comment above key + from group_name +. +If key + is NULL then comment + will be removed above group_name +. +If both key + and group_name + are NULL, then comment + will +be removed above the first group in the file.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

key_file

a GKeyFile

 

group_name

a group name, or NULL.

[allow-none]

key

a key.

[allow-none]

error

return location for a GError

 
+
+
+

Returns

+

TRUE if the comment was removed, FALSE otherwise

+
+

Since: 2.6

+
+
+
+

Types and Values

+
+

GKeyFile

+
typedef struct _GKeyFile GKeyFile;
+

The GKeyFile struct contains only private data +and should not be accessed directly.

+
+
+
+

G_KEY_FILE_ERROR

+
#define G_KEY_FILE_ERROR g_key_file_error_quark()
+
+

Error domain for key file parsing. Errors in this domain will +be from the GKeyFileError enumeration.

+

See GError for information on error domains.

+
+
+
+

enum GKeyFileError

+

Error codes returned by key file parsing.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_KEY_FILE_ERROR_UNKNOWN_ENCODING

+

the text being parsed was in + an unknown encoding

+
 

G_KEY_FILE_ERROR_PARSE

+

document was ill-formed

+
 

G_KEY_FILE_ERROR_NOT_FOUND

+

the file was not found

+
 

G_KEY_FILE_ERROR_KEY_NOT_FOUND

+

a requested key was not found

+
 

G_KEY_FILE_ERROR_GROUP_NOT_FOUND

+

a requested group was not found

+
 

G_KEY_FILE_ERROR_INVALID_VALUE

+

a value could not be parsed

+
 
+
+
+
+
+

enum GKeyFileFlags

+

Flags which influence the parsing.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

G_KEY_FILE_NONE

+

No flags, default behaviour

+
 

G_KEY_FILE_KEEP_COMMENTS

+

Use this flag if you plan to write the + (possibly modified) contents of the key file back to a file; + otherwise all comments will be lost when the key file is + written back.

+
 

G_KEY_FILE_KEEP_TRANSLATIONS

+

Use this flag if you plan to write the + (possibly modified) contents of the key file back to a file; + otherwise only the translations for the current language will be + written back.

+
 
+
+
+
+
+

G_KEY_FILE_DESKTOP_GROUP

+
#define G_KEY_FILE_DESKTOP_GROUP                "Desktop Entry"
+
+

The name of the main group of a desktop entry file, as defined in the +Desktop Entry Specification. +Consult the specification for more +details about the meanings of the keys below.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_TYPE

+
#define G_KEY_FILE_DESKTOP_KEY_TYPE             "Type"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a string +giving the type of the desktop entry. Usually +G_KEY_FILE_DESKTOP_TYPE_APPLICATION, +G_KEY_FILE_DESKTOP_TYPE_LINK, or +G_KEY_FILE_DESKTOP_TYPE_DIRECTORY.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_VERSION

+
#define G_KEY_FILE_DESKTOP_KEY_VERSION          "Version"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a string +giving the version of the Desktop Entry Specification used for +the desktop entry file.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_NAME

+
#define G_KEY_FILE_DESKTOP_KEY_NAME             "Name"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a localized +string giving the specific name of the desktop entry.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME

+
#define G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME     "GenericName"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a localized +string giving the generic name of the desktop entry.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY

+
#define G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY       "NoDisplay"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a boolean +stating whether the desktop entry should be shown in menus.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_COMMENT

+
#define G_KEY_FILE_DESKTOP_KEY_COMMENT          "Comment"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a localized +string giving the tooltip for the desktop entry.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_ICON

+
#define G_KEY_FILE_DESKTOP_KEY_ICON             "Icon"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a localized +string giving the name of the icon to be displayed for the desktop +entry.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_HIDDEN

+
#define G_KEY_FILE_DESKTOP_KEY_HIDDEN           "Hidden"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a boolean +stating whether the desktop entry has been deleted by the user.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN

+
#define G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN     "OnlyShowIn"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a list of +strings identifying the environments that should display the +desktop entry.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN

+
#define G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN      "NotShowIn"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a list of +strings identifying the environments that should not display the +desktop entry.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_TRY_EXEC

+
#define G_KEY_FILE_DESKTOP_KEY_TRY_EXEC         "TryExec"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a string +giving the file name of a binary on disk used to determine if the +program is actually installed. It is only valid for desktop entries +with the Application type.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_EXEC

+
#define G_KEY_FILE_DESKTOP_KEY_EXEC             "Exec"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a string +giving the command line to execute. It is only valid for desktop +entries with the Application type.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_PATH

+
#define G_KEY_FILE_DESKTOP_KEY_PATH             "Path"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a string +containing the working directory to run the program in. It is only +valid for desktop entries with the Application type.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_TERMINAL

+
#define G_KEY_FILE_DESKTOP_KEY_TERMINAL         "Terminal"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a boolean +stating whether the program should be run in a terminal window. +It is only valid for desktop entries with the +Application type.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_MIME_TYPE

+
#define G_KEY_FILE_DESKTOP_KEY_MIME_TYPE        "MimeType"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a list +of strings giving the MIME types supported by this desktop entry.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_CATEGORIES

+
#define G_KEY_FILE_DESKTOP_KEY_CATEGORIES       "Categories"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a list +of strings giving the categories in which the desktop entry +should be shown in a menu.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY

+
#define G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY   "StartupNotify"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a boolean +stating whether the application supports the +Startup Notification Protocol Specification.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS

+
#define G_KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS "StartupWMClass"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is string +identifying the WM class or name hint of a window that the application +will create, which can be used to emulate Startup Notification with +older applications.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_URL

+
#define G_KEY_FILE_DESKTOP_KEY_URL              "URL"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a string +giving the URL to access. It is only valid for desktop entries +with the Link type.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_ACTIONS

+
#define G_KEY_FILE_DESKTOP_KEY_ACTIONS          "Actions"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a string list +giving the available application actions.

+

Since: 2.38

+
+
+
+

G_KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE

+
#define G_KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE "DBusActivatable"
+
+

A key under G_KEY_FILE_DESKTOP_GROUP, whose value is a boolean set to true +if the application is D-Bus activatable.

+

Since: 2.38

+
+
+
+

G_KEY_FILE_DESKTOP_TYPE_APPLICATION

+
#define G_KEY_FILE_DESKTOP_TYPE_APPLICATION     "Application"
+
+

The value of the G_KEY_FILE_DESKTOP_KEY_TYPE, key for desktop +entries representing applications.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_TYPE_LINK

+
#define G_KEY_FILE_DESKTOP_TYPE_LINK            "Link"
+
+

The value of the G_KEY_FILE_DESKTOP_KEY_TYPE, key for desktop +entries representing links to documents.

+

Since: 2.14

+
+
+
+

G_KEY_FILE_DESKTOP_TYPE_DIRECTORY

+
#define G_KEY_FILE_DESKTOP_TYPE_DIRECTORY       "Directory"
+
+

The value of the G_KEY_FILE_DESKTOP_KEY_TYPE, key for desktop +entries representing directories.

+

Since: 2.14

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Keyed-Data-Lists.html b/docs/reference/glib/html/glib-Keyed-Data-Lists.html new file mode 100644 index 0000000..6e55fd9 --- /dev/null +++ b/docs/reference/glib/html/glib-Keyed-Data-Lists.html @@ -0,0 +1,999 @@ + + + + +Keyed Data Lists: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Keyed Data Lists

+

Keyed Data Lists — lists of data elements which are accessible by a + string or GQuark identifier

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +g_datalist_init () +
#define +g_datalist_id_set_data() +
+void + +g_datalist_id_set_data_full () +
+gpointer + +g_datalist_id_get_data () +
#define +g_datalist_id_remove_data() +
+gpointer + +g_datalist_id_remove_no_notify () +
+gpointer + +(*GDuplicateFunc) () +
+gpointer + +g_datalist_id_dup_data () +
+gboolean + +g_datalist_id_replace_data () +
#define +g_datalist_set_data() +
#define +g_datalist_set_data_full() +
+gpointer + +g_datalist_get_data () +
#define +g_datalist_remove_data() +
#define +g_datalist_remove_no_notify() +
+void + +g_datalist_foreach () +
+void + +g_datalist_clear () +
+void + +g_datalist_set_flags () +
+void + +g_datalist_unset_flags () +
+guint + +g_datalist_get_flags () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GData
#defineG_DATALIST_FLAGS_MASK
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

Keyed data lists provide lists of arbitrary data elements which can +be accessed either with a string or with a GQuark corresponding to +the string.

+

The GQuark methods are quicker, since the strings have to be +converted to GQuarks anyway.

+

Data lists are used for associating arbitrary data with GObjects, +using g_object_set_data() and related functions.

+

To create a datalist, use g_datalist_init().

+

To add data elements to a datalist use g_datalist_id_set_data(), +g_datalist_id_set_data_full(), g_datalist_set_data() and +g_datalist_set_data_full().

+

To get data elements from a datalist use g_datalist_id_get_data() +and g_datalist_get_data().

+

To iterate over all data elements in a datalist use +g_datalist_foreach() (not thread-safe).

+

To remove data elements from a datalist use +g_datalist_id_remove_data() and g_datalist_remove_data().

+

To remove all data elements from a datalist, use g_datalist_clear().

+
+
+

Functions

+
+

g_datalist_init ()

+
void
+g_datalist_init (GData **datalist);
+

Resets the datalist to NULL. It does not free any memory or call +any destroy functions.

+
+

Parameters

+
+++++ + + + + + +

datalist

a pointer to a pointer to a datalist.

 
+
+
+
+
+

g_datalist_id_set_data()

+
#define             g_datalist_id_set_data(dl, q, d)
+

Sets the data corresponding to the given GQuark id. Any previous +data with the same key is removed, and its destroy function is +called.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dl

a datalist.

 

q

the GQuark to identify the data element.

 

d

the data element, or NULL to remove any previous element +corresponding to q +.

[allow-none]
+
+
+
+
+

g_datalist_id_set_data_full ()

+
void
+g_datalist_id_set_data_full (GData **datalist,
+                             GQuark key_id,
+                             gpointer data,
+                             GDestroyNotify destroy_func);
+

Sets the data corresponding to the given GQuark id, and the +function to be called when the element is removed from the datalist. +Any previous data with the same key is removed, and its destroy +function is called.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

datalist

a datalist.

 

key_id

the GQuark to identify the data element.

 

data

the data element or NULL to remove any previous element +corresponding to key_id +.

[allow-none]

destroy_func

the function to call when the data element is +removed. This function will be called with the data +element and can be used to free any memory allocated +for it. If data +is NULL, then destroy_func +must +also be NULL.

 
+
+
+
+
+

g_datalist_id_get_data ()

+
gpointer
+g_datalist_id_get_data (GData **datalist,
+                        GQuark key_id);
+

Retrieves the data element corresponding to key_id +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datalist

a datalist.

 

key_id

the GQuark identifying a data element.

 
+
+
+

Returns

+

the data element, or NULL if it is not found.

+
+
+
+
+

g_datalist_id_remove_data()

+
#define             g_datalist_id_remove_data(dl, q)
+

Removes an element, using its GQuark identifier.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

dl

a datalist.

 

q

the GQuark identifying the data element.

 
+
+
+
+
+

g_datalist_id_remove_no_notify ()

+
gpointer
+g_datalist_id_remove_no_notify (GData **datalist,
+                                GQuark key_id);
+

Removes an element, without calling its destroy notification +function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datalist

a datalist.

 

key_id

the GQuark identifying a data element.

 
+
+
+

Returns

+

the data previously stored at key_id +, or NULL if none.

+
+
+
+
+

GDuplicateFunc ()

+
gpointer
+(*GDuplicateFunc) (gpointer data,
+                   gpointer user_data);
+

The type of functions that are used to 'duplicate' an object. +What this means depends on the context, it could just be +incrementing the reference count, if data + is a ref-counted +object.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

data

the data to duplicate

 

user_data

user data that was specified in g_datalist_id_dup_data()

 
+
+
+

Returns

+

a duplicate of data

+
+
+
+
+

g_datalist_id_dup_data ()

+
gpointer
+g_datalist_id_dup_data (GData **datalist,
+                        GQuark key_id,
+                        GDuplicateFunc dup_func,
+                        gpointer user_data);
+

This is a variant of g_datalist_id_get_data() which +returns a 'duplicate' of the value. dup_func + defines the +meaning of 'duplicate' in this context, it could e.g. +take a reference on a ref-counted object.

+

If the key_id + is not set in the datalist then dup_func + +will be called with a NULL argument.

+

Note that dup_func + is called while the datalist is locked, so it +is not allowed to read or modify the datalist.

+

This function can be useful to avoid races when multiple +threads are using the same datalist and the same key.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

datalist

location of a datalist

 

key_id

the GQuark identifying a data element

 

dup_func

function to duplicate the old value.

[allow-none]

user_data

passed as user_data to dup_func +.

[allow-none]
+
+
+

Returns

+

the result of calling dup_func +on the value +associated with key_id +in datalist +, or NULL if not set. +If dup_func +is NULL, the value is returned unmodified.

+
+

Since: 2.34

+
+
+
+

g_datalist_id_replace_data ()

+
gboolean
+g_datalist_id_replace_data (GData **datalist,
+                            GQuark key_id,
+                            gpointer oldval,
+                            gpointer newval,
+                            GDestroyNotify destroy,
+                            GDestroyNotify *old_destroy);
+

Compares the member that is associated with key_id + in +datalist + to oldval +, and if they are the same, replace +oldval + with newval +.

+

This is like a typical atomic compare-and-exchange +operation, for a member of datalist +.

+

If the previous value was replaced then ownership of the +old value (oldval +) is passed to the caller, including +the registred destroy notify for it (passed out in old_destroy +). +Its up to the caller to free this as he wishes, which may +or may not include using old_destroy + as sometimes replacement +should not destroy the object in the normal way.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

datalist

location of a datalist

 

key_id

the GQuark identifying a data element

 

oldval

the old value to compare against.

[allow-none]

newval

the new value to replace it with.

[allow-none]

destroy

destroy notify for the new value.

[allow-none]

old_destroy

destroy notify for the existing value.

[allow-none]
+
+
+

Returns

+

TRUE if the existing value for key_id +was replaced +by newval +, FALSE otherwise.

+
+

Since: 2.34

+
+
+
+

g_datalist_set_data()

+
#define             g_datalist_set_data(dl, k, d)
+

Sets the data element corresponding to the given string identifier.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dl

a datalist.

 

k

the string to identify the data element.

 

d

the data element, or NULL to remove any previous element +corresponding to k +.

[allow-none]
+
+
+
+
+

g_datalist_set_data_full()

+
#define             g_datalist_set_data_full(dl, k, d, f)
+

Sets the data element corresponding to the given string identifier, +and the function to be called when the data element is removed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

dl

a datalist.

 

k

the string to identify the data element.

 

d

the data element, or NULL to remove any previous element +corresponding to k +.

[allow-none]

f

the function to call when the data element is removed. This +function will be called with the data element and can be used to +free any memory allocated for it. If d +is NULL, then f +must +also be NULL.

 
+
+
+
+
+

g_datalist_get_data ()

+
gpointer
+g_datalist_get_data (GData **datalist,
+                     const gchar *key);
+

Gets a data element, using its string identifier. This is slower than +g_datalist_id_get_data() because it compares strings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datalist

a datalist.

 

key

the string identifying a data element.

 
+
+
+

Returns

+

the data element, or NULL if it is not found.

+
+
+
+
+

g_datalist_remove_data()

+
#define             g_datalist_remove_data(dl, k)
+

Removes an element using its string identifier. The data element's +destroy function is called if it has been set.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

dl

a datalist.

 

k

the string identifying the data element.

 
+
+
+
+
+

g_datalist_remove_no_notify()

+
#define             g_datalist_remove_no_notify(dl, k)
+

Removes an element, without calling its destroy notifier.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

dl

a datalist.

 

k

the string identifying the data element.

 
+
+
+
+
+

g_datalist_foreach ()

+
void
+g_datalist_foreach (GData **datalist,
+                    GDataForeachFunc func,
+                    gpointer user_data);
+

Calls the given function for each data element of the datalist. The +function is called with each data element's GQuark id and data, +together with the given user_data + parameter. Note that this +function is NOT thread-safe. So unless datalist + can be protected +from any modifications during invocation of this function, it should +not be called.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

datalist

a datalist.

 

func

the function to call for each data element.

 

user_data

user data to pass to the function.

 
+
+
+
+
+

g_datalist_clear ()

+
void
+g_datalist_clear (GData **datalist);
+

Frees all the data elements of the datalist. +The data elements' destroy functions are called +if they have been set.

+
+

Parameters

+
+++++ + + + + + +

datalist

a datalist.

 
+
+
+
+
+

g_datalist_set_flags ()

+
void
+g_datalist_set_flags (GData **datalist,
+                      guint flags);
+

Turns on flag values for a data list. This function is used +to keep a small number of boolean flags in an object with +a data list without using any additional space. It is +not generally useful except in circumstances where space +is very tight. (It is used in the base GObject type, for +example.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datalist

pointer to the location that holds a list

 

flags

the flags to turn on. The values of the flags are +restricted by G_DATALIST_FLAGS_MASK (currently +3; giving two possible boolean flags). +A value for flags +that doesn't fit within the mask is +an error.

 
+
+

Since: 2.8

+
+
+
+

g_datalist_unset_flags ()

+
void
+g_datalist_unset_flags (GData **datalist,
+                        guint flags);
+

Turns off flag values for a data list. See g_datalist_unset_flags()

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

datalist

pointer to the location that holds a list

 

flags

the flags to turn off. The values of the flags are +restricted by G_DATALIST_FLAGS_MASK (currently +3: giving two possible boolean flags). +A value for flags +that doesn't fit within the mask is +an error.

 
+
+

Since: 2.8

+
+
+
+

g_datalist_get_flags ()

+
guint
+g_datalist_get_flags (GData **datalist);
+

Gets flags values packed in together with the datalist. +See g_datalist_set_flags().

+
+

Parameters

+
+++++ + + + + + +

datalist

pointer to the location that holds a list

 
+
+
+

Returns

+

the flags of the datalist

+
+

Since: 2.8

+
+
+
+

Types and Values

+
+

GData

+
typedef struct _GData GData;
+

The GData struct is an opaque data structure to represent a +Keyed Data List. It should only be +accessed via the following functions.

+
+
+
+

G_DATALIST_FLAGS_MASK

+
#define G_DATALIST_FLAGS_MASK 0x3
+
+

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.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Lexical-Scanner.html b/docs/reference/glib/html/glib-Lexical-Scanner.html new file mode 100644 index 0000000..5cd36d1 --- /dev/null +++ b/docs/reference/glib/html/glib-Lexical-Scanner.html @@ -0,0 +1,1992 @@ + + + + +Lexical Scanner: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Lexical Scanner

+

Lexical Scanner — a general purpose lexical scanner

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GScanner * + +g_scanner_new () +
+void + +g_scanner_destroy () +
+void + +g_scanner_input_file () +
+void + +g_scanner_sync_file_offset () +
+void + +g_scanner_input_text () +
+GTokenType + +g_scanner_peek_next_token () +
+GTokenType + +g_scanner_get_next_token () +
+gboolean + +g_scanner_eof () +
+guint + +g_scanner_cur_line () +
+guint + +g_scanner_cur_position () +
+GTokenType + +g_scanner_cur_token () +
+GTokenValue + +g_scanner_cur_value () +
+guint + +g_scanner_set_scope () +
+void + +g_scanner_scope_add_symbol () +
+void + +g_scanner_scope_foreach_symbol () +
+gpointer + +g_scanner_scope_lookup_symbol () +
+void + +g_scanner_scope_remove_symbol () +
#define +g_scanner_add_symbol() +
#define +g_scanner_remove_symbol() +
#define +g_scanner_foreach_symbol() +
#define +g_scanner_freeze_symbol_table() +
#define +g_scanner_thaw_symbol_table() +
+gpointer + +g_scanner_lookup_symbol () +
+void + +g_scanner_warn () +
+void + +g_scanner_error () +
+void + +g_scanner_unexp_token () +
+void + +(*GScannerMsgFunc) () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
structGScanner
structGScannerConfig
#defineG_CSET_a_2_z
#defineG_CSET_A_2_Z
#defineG_CSET_DIGITS
#defineG_CSET_LATINC
#defineG_CSET_LATINS
enumGTokenType
unionGTokenValue
enumGErrorType
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The GScanner and its associated functions provide a +general purpose lexical scanner.

+
+
+

Functions

+
+

g_scanner_new ()

+
GScanner *
+g_scanner_new (const GScannerConfig *config_templ);
+

Creates a new GScanner.

+

The config_templ + structure specifies the initial settings +of the scanner, which are copied into the GScanner +config + field. If you pass NULL then the default settings +are used.

+
+

Parameters

+
+++++ + + + + + +

config_templ

the initial scanner settings

 
+
+
+

Returns

+

the new GScanner

+
+
+
+
+

g_scanner_destroy ()

+
void
+g_scanner_destroy (GScanner *scanner);
+

Frees all memory used by the GScanner.

+
+

Parameters

+
+++++ + + + + + +

scanner

a GScanner

 
+
+
+
+
+

g_scanner_input_file ()

+
void
+g_scanner_input_file (GScanner *scanner,
+                      gint input_fd);
+

Prepares to scan a file.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

scanner

a GScanner

 

input_fd

a file descriptor

 
+
+
+
+
+

g_scanner_sync_file_offset ()

+
void
+g_scanner_sync_file_offset (GScanner *scanner);
+

Rewinds the filedescriptor to the current buffer position +and blows the file read ahead buffer. This is useful for +third party uses of the scanners filedescriptor, which hooks +onto the current scanning position.

+
+

Parameters

+
+++++ + + + + + +

scanner

a GScanner

 
+
+
+
+
+

g_scanner_input_text ()

+
void
+g_scanner_input_text (GScanner *scanner,
+                      const gchar *text,
+                      guint text_len);
+

Prepares to scan a text buffer.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

scanner

a GScanner

 

text

the text buffer to scan

 

text_len

the length of the text buffer

 
+
+
+
+
+

g_scanner_peek_next_token ()

+
GTokenType
+g_scanner_peek_next_token (GScanner *scanner);
+

Parses the next token, without removing it from the input stream. +The token data is placed in the next_token +, next_value +, next_line +, +and next_position + fields of the GScanner structure.

+

Note that, while the token is not removed from the input stream +(i.e. the next call to g_scanner_get_next_token() will return the +same token), it will not be reevaluated. This can lead to surprising +results when changing scope or the scanner configuration after peeking +the next token. Getting the next token after switching the scope or +configuration will return whatever was peeked before, regardless of +any symbols that may have been added or removed in the new scope.

+
+

Parameters

+
+++++ + + + + + +

scanner

a GScanner

 
+
+
+

Returns

+

the type of the token

+
+
+
+
+

g_scanner_get_next_token ()

+
GTokenType
+g_scanner_get_next_token (GScanner *scanner);
+

Parses the next token just like g_scanner_peek_next_token() +and also removes it from the input stream. The token data is +placed in the token +, value +, line +, and position + fields of +the GScanner structure.

+
+

Parameters

+
+++++ + + + + + +

scanner

a GScanner

 
+
+
+

Returns

+

the type of the token

+
+
+
+
+

g_scanner_eof ()

+
gboolean
+g_scanner_eof (GScanner *scanner);
+

Returns TRUE if the scanner has reached the end of +the file or text buffer.

+
+

Parameters

+
+++++ + + + + + +

scanner

a GScanner

 
+
+
+

Returns

+

TRUE if the scanner has reached the end of +the file or text buffer

+
+
+
+
+

g_scanner_cur_line ()

+
guint
+g_scanner_cur_line (GScanner *scanner);
+

Returns the current line in the input stream (counting +from 1). This is the line of the last token parsed via +g_scanner_get_next_token().

+
+

Parameters

+
+++++ + + + + + +

scanner

a GScanner

 
+
+
+

Returns

+

the current line

+
+
+
+
+

g_scanner_cur_position ()

+
guint
+g_scanner_cur_position (GScanner *scanner);
+

Returns the current position in the current line (counting +from 0). This is the position of the last token parsed via +g_scanner_get_next_token().

+
+

Parameters

+
+++++ + + + + + +

scanner

a GScanner

 
+
+
+

Returns

+

the current position on the line

+
+
+
+
+

g_scanner_cur_token ()

+
GTokenType
+g_scanner_cur_token (GScanner *scanner);
+

Gets the current token type. This is simply the token + +field in the GScanner structure.

+
+

Parameters

+
+++++ + + + + + +

scanner

a GScanner

 
+
+
+

Returns

+

the current token type

+
+
+
+
+

g_scanner_cur_value ()

+
GTokenValue
+g_scanner_cur_value (GScanner *scanner);
+

Gets the current token value. This is simply the value + +field in the GScanner structure.

+
+

Parameters

+
+++++ + + + + + +

scanner

a GScanner

 
+
+
+

Returns

+

the current token value

+
+
+
+
+

g_scanner_set_scope ()

+
guint
+g_scanner_set_scope (GScanner *scanner,
+                     guint scope_id);
+

Sets the current scope.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

scanner

a GScanner

 

scope_id

the new scope id

 
+
+
+

Returns

+

the old scope id

+
+
+
+
+

g_scanner_scope_add_symbol ()

+
void
+g_scanner_scope_add_symbol (GScanner *scanner,
+                            guint scope_id,
+                            const gchar *symbol,
+                            gpointer value);
+

Adds a symbol to the given scope.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

scanner

a GScanner

 

scope_id

the scope id

 

symbol

the symbol to add

 

value

the value of the symbol

 
+
+
+
+
+

g_scanner_scope_foreach_symbol ()

+
void
+g_scanner_scope_foreach_symbol (GScanner *scanner,
+                                guint scope_id,
+                                GHFunc func,
+                                gpointer user_data);
+

Calls the given function for each of the symbol/value pairs +in the given scope of the GScanner. The function is passed +the symbol and value of each pair, and the given user_data + +parameter.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

scanner

a GScanner

 

scope_id

the scope id

 

func

the function to call for each symbol/value pair

 

user_data

user data to pass to the function

 
+
+
+
+
+

g_scanner_scope_lookup_symbol ()

+
gpointer
+g_scanner_scope_lookup_symbol (GScanner *scanner,
+                               guint scope_id,
+                               const gchar *symbol);
+

Looks up a symbol in a scope and return its value. If the +symbol is not bound in the scope, NULL is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

scanner

a GScanner

 

scope_id

the scope id

 

symbol

the symbol to look up

 
+
+
+

Returns

+

the value of symbol +in the given scope, or NULL +if symbol +is not bound in the given scope.

+
+
+
+
+

g_scanner_scope_remove_symbol ()

+
void
+g_scanner_scope_remove_symbol (GScanner *scanner,
+                               guint scope_id,
+                               const gchar *symbol);
+

Removes a symbol from a scope.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

scanner

a GScanner

 

scope_id

the scope id

 

symbol

the symbol to remove

 
+
+
+
+
+

g_scanner_add_symbol()

+
#define             g_scanner_add_symbol( scanner, symbol, value )
+
+

g_scanner_add_symbol has been deprecated since version 2.2 and should not be used in newly-written code.

+

Use g_scanner_scope_add_symbol() instead.

+
+

Adds a symbol to the default scope.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

scanner

a GScanner

 

symbol

the symbol to add

 

value

the value of the symbol

 
+
+
+
+
+

g_scanner_remove_symbol()

+
#define             g_scanner_remove_symbol( scanner, symbol )
+
+

g_scanner_remove_symbol has been deprecated since version 2.2 and should not be used in newly-written code.

+

Use g_scanner_scope_remove_symbol() instead.

+
+

Removes a symbol from the default scope.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

scanner

a GScanner

 

symbol

the symbol to remove

 
+
+
+
+
+

g_scanner_foreach_symbol()

+
#define             g_scanner_foreach_symbol( scanner, func, data )
+
+

g_scanner_foreach_symbol has been deprecated since version 2.2 and should not be used in newly-written code.

+

Use g_scanner_scope_foreach_symbol() instead.

+
+

Calls a function for each symbol in the default scope.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

scanner

a GScanner

 

func

the function to call with each symbol

 

data

data to pass to the function

 
+
+
+
+
+

g_scanner_freeze_symbol_table()

+
#define             g_scanner_freeze_symbol_table(scanner)
+
+

g_scanner_freeze_symbol_table has been deprecated since version 2.2 and should not be used in newly-written code.

+

This macro does nothing.

+
+

There is no reason to use this macro, since it does nothing.

+
+

Parameters

+
+++++ + + + + + +

scanner

a GScanner

 
+
+
+
+
+

g_scanner_thaw_symbol_table()

+
#define             g_scanner_thaw_symbol_table(scanner)
+
+

g_scanner_thaw_symbol_table has been deprecated since version 2.2 and should not be used in newly-written code.

+

This macro does nothing.

+
+

There is no reason to use this macro, since it does nothing.

+
+

Parameters

+
+++++ + + + + + +

scanner

a GScanner

 
+
+
+
+
+

g_scanner_lookup_symbol ()

+
gpointer
+g_scanner_lookup_symbol (GScanner *scanner,
+                         const gchar *symbol);
+

Looks up a symbol in the current scope and return its value. +If the symbol is not bound in the current scope, NULL is +returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

scanner

a GScanner

 

symbol

the symbol to look up

 
+
+
+

Returns

+

the value of symbol +in the current scope, or NULL +if symbol +is not bound in the current scope

+
+
+
+
+

g_scanner_warn ()

+
void
+g_scanner_warn (GScanner *scanner,
+                const gchar *format,
+                ...);
+

Outputs a warning message, via the GScanner message handler.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

scanner

a GScanner

 

format

the message format. See the printf() documentation

 

...

the parameters to insert into the format string

 
+
+
+
+
+

g_scanner_error ()

+
void
+g_scanner_error (GScanner *scanner,
+                 const gchar *format,
+                 ...);
+

Outputs an error message, via the GScanner message handler.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

scanner

a GScanner

 

format

the message format. See the printf() documentation

 

...

the parameters to insert into the format string

 
+
+
+
+
+

g_scanner_unexp_token ()

+
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);
+

Outputs a message through the scanner's msg_handler, +resulting from an unexpected token in the input stream. +Note that you should not call g_scanner_peek_next_token() +followed by g_scanner_unexp_token() without an intermediate +call to g_scanner_get_next_token(), as g_scanner_unexp_token() +evaluates the scanner's current token (not the peeked token) +to construct part of the message.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

scanner

a GScanner

 

expected_token

the expected token

 

identifier_spec

a string describing how the scanner's user +refers to identifiers (NULL defaults to "identifier"). +This is used if expected_token +is G_TOKEN_IDENTIFIER or +G_TOKEN_IDENTIFIER_NULL.

 

symbol_spec

a string describing how the scanner's user refers +to symbols (NULL defaults to "symbol"). This is used if +expected_token +is G_TOKEN_SYMBOL or any token value greater +than G_TOKEN_LAST.

 

symbol_name

the name of the symbol, if the scanner's current +token is a symbol.

 

message

a message string to output at the end of the +warning/error, or NULL.

 

is_error

if TRUE it is output as an error. If FALSE it is +output as a warning.

 
+
+
+
+
+

GScannerMsgFunc ()

+
void
+(*GScannerMsgFunc) (GScanner *scanner,
+                    gchar *message,
+                    gboolean error);
+

Specifies the type of the message handler function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

scanner

a GScanner

 

message

the message

 

error

TRUE if the message signals an error, +FALSE if it signals a warning.

 
+
+
+
+
+

Types and Values

+
+

struct GScanner

+
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;
+
+  /* handler function for _warn and _error */
+  GScannerMsgFunc msg_handler;
+};
+
+

The data structure representing a lexical scanner.

+

You should set input_name + after creating the scanner, since +it is used by the default message handler when displaying +warnings and errors. If you are scanning a file, the filename +would be a good choice.

+

The user_data + and max_parse_errors + fields are not used. +If you need to associate extra data with the scanner you +can place them here.

+

If you want to use your own message handler you can set the +msg_handler + field. The type of the message handler function +is declared by GScannerMsgFunc.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

gpointer user_data;

unused

 

guint max_parse_errors;

unused

 

guint parse_errors;

g_scanner_error() increments this field

 

const gchar *input_name;

name of input stream, featured by the default message handler

 

GData *qdata;

quarked data

 

GScannerConfig *config;

link into the scanner configuration

 

GTokenType token;

token parsed by the last g_scanner_get_next_token()

 

GTokenValue value;

value of the last token from g_scanner_get_next_token()

 

guint line;

line number of the last token from g_scanner_get_next_token()

 

guint position;

char number of the last token from g_scanner_get_next_token()

 

GTokenType next_token;

token parsed by the last g_scanner_peek_next_token()

 

GTokenValue next_value;

value of the last token from g_scanner_peek_next_token()

 

guint next_line;

line number of the last token from g_scanner_peek_next_token()

 

guint next_position;

char number of the last token from g_scanner_peek_next_token()

 

GScannerMsgFunc msg_handler;

handler function for _warn and _error

 
+
+
+
+
+

struct GScannerConfig

+
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 */
+};
+
+

Specifies the GScanner parser configuration. Most settings can +be changed during the parsing phase and will affect the lexical +parsing of the next unpeeked token.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

gchar *cset_skip_characters;

specifies which characters should be skipped +by the scanner (the default is the whitespace characters: space, +tab, carriage-return and line-feed).

 

gchar *cset_identifier_first;

specifies the characters which can start +identifiers (the default is G_CSET_a_2_z, "_", and G_CSET_A_2_Z).

 

gchar *cset_identifier_nth;

specifies the characters which can be used +in identifiers, after the first character (the default is +G_CSET_a_2_z, "_0123456789", G_CSET_A_2_Z, G_CSET_LATINS, +G_CSET_LATINC).

 

gchar *cpair_comment_single;

specifies the characters at the start and +end of single-line comments. The default is "#\n" which means +that single-line comments start with a '#' and continue until +a '\n' (end of line).

 

guint case_sensitive : 1;

specifies if symbols are case sensitive (the +default is FALSE).

 

guint skip_comment_multi : 1;

specifies if multi-line comments are skipped +and not returned as tokens (the default is TRUE).

 

guint skip_comment_single : 1;

specifies if single-line comments are skipped +and not returned as tokens (the default is TRUE).

 

guint scan_comment_multi : 1;

specifies if multi-line comments are recognized +(the default is TRUE).

 

guint scan_identifier : 1;

specifies if identifiers are recognized (the +default is TRUE).

 

guint scan_identifier_1char : 1;

specifies if single-character +identifiers are recognized (the default is FALSE).

 

guint scan_identifier_NULL : 1;

specifies if NULL is reported as +G_TOKEN_IDENTIFIER_NULL (the default is FALSE).

 

guint scan_symbols : 1;

specifies if symbols are recognized (the default +is TRUE).

 

guint scan_binary : 1;

specifies if binary numbers are recognized (the +default is FALSE).

 

guint scan_octal : 1;

specifies if octal numbers are recognized (the +default is TRUE).

 

guint scan_float : 1;

specifies if floating point numbers are recognized +(the default is TRUE).

 

guint scan_hex : 1;

specifies if hexadecimal numbers are recognized (the +default is TRUE).

 

guint scan_hex_dollar : 1;

specifies if '$' is recognized as a prefix for +hexadecimal numbers (the default is FALSE).

 

guint scan_string_sq : 1;

specifies if strings can be enclosed in single +quotes (the default is TRUE).

 

guint scan_string_dq : 1;

specifies if strings can be enclosed in double +quotes (the default is TRUE).

 

guint numbers_2_int : 1;

specifies if binary, octal and hexadecimal numbers +are reported as G_TOKEN_INT (the default is TRUE).

 

guint int_2_float : 1;

specifies if all numbers are reported as G_TOKEN_FLOAT +(the default is FALSE).

 

guint identifier_2_string : 1;

specifies if identifiers are reported as strings +(the default is FALSE).

 

guint char_2_token : 1;

specifies if characters are reported by setting +token = ch or as G_TOKEN_CHAR (the default is TRUE).

 

guint symbol_2_token : 1;

specifies if symbols are reported by setting +token = v_symbol or as G_TOKEN_SYMBOL (the default is FALSE).

 

guint scope_0_fallback : 1;

specifies if a symbol is searched for in the +default scope in addition to the current scope (the default is FALSE).

 

guint store_int64 : 1;

use value.v_int64 rather than v_int

 
+
+
+
+
+

G_CSET_a_2_z

+
#define G_CSET_a_2_z "abcdefghijklmnopqrstuvwxyz"
+
+

The set of lowercase ASCII alphabet characters. +Used for specifying valid identifier characters +in GScannerConfig.

+
+
+
+

G_CSET_A_2_Z

+
#define G_CSET_A_2_Z "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+
+

The set of uppercase ASCII alphabet characters. +Used for specifying valid identifier characters +in GScannerConfig.

+
+
+
+

G_CSET_DIGITS

+
#define G_CSET_DIGITS "0123456789"
+
+

The set of ASCII digits. +Used for specifying valid identifier characters +in GScannerConfig.

+
+
+
+

G_CSET_LATINC

+
#define             G_CSET_LATINC
+

The set of uppercase ISO 8859-1 alphabet characters +which are not ASCII characters. +Used for specifying valid identifier characters +in GScannerConfig.

+
+
+
+

G_CSET_LATINS

+
#define             G_CSET_LATINS
+

The set of lowercase ISO 8859-1 alphabet characters +which are not ASCII characters. +Used for specifying valid identifier characters +in GScannerConfig.

+
+
+
+

enum GTokenType

+

The possible types of token returned from each +g_scanner_get_next_token() call.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_TOKEN_EOF

+

the end of the file

+
 

G_TOKEN_LEFT_PAREN

+

a '(' character

+
 

G_TOKEN_RIGHT_PAREN

+

a ')' character

+
 

G_TOKEN_LEFT_CURLY

+

a '{' character

+
 

G_TOKEN_RIGHT_CURLY

+

a '}' character

+
 

G_TOKEN_LEFT_BRACE

+

a '[' character

+
 

G_TOKEN_RIGHT_BRACE

+

a ']' character

+
 

G_TOKEN_EQUAL_SIGN

+

a '=' character

+
 

G_TOKEN_COMMA

+

a ',' character

+
 

G_TOKEN_NONE

+

not a token

+
 

G_TOKEN_ERROR

+

an error occurred

+
 

G_TOKEN_CHAR

+

a character

+
 

G_TOKEN_BINARY

+

a binary integer

+
 

G_TOKEN_OCTAL

+

an octal integer

+
 

G_TOKEN_INT

+

an integer

+
 

G_TOKEN_HEX

+

a hex integer

+
 

G_TOKEN_FLOAT

+

a floating point number

+
 

G_TOKEN_STRING

+

a string

+
 

G_TOKEN_SYMBOL

+

a symbol

+
 

G_TOKEN_IDENTIFIER

+

an identifier

+
 

G_TOKEN_IDENTIFIER_NULL

+

a null identifier

+
 

G_TOKEN_COMMENT_SINGLE

+

one line comment

+
 

G_TOKEN_COMMENT_MULTI

+

multi line comment

+
 
+
+
+
+
+

union GTokenValue

+

A union holding the value of the token.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

gpointer v_symbol;

token symbol value

 

gchar *v_identifier;

token identifier value

 

gulong v_binary;

token binary integer value

 

gulong v_octal;

octal integer value

 

gulong v_int;

integer value

 

guint64 v_int64;

64-bit integer value

 

gdouble v_float;

floating point value

 

gulong v_hex;

hex integer value

 

gchar *v_string;

string value

 

gchar *v_comment;

comment value

 

guchar v_char;

character value

 

guint v_error;

error value

 
+
+
+
+
+

enum GErrorType

+

The possible errors, used in the v_error + field +of GTokenValue, when the token is a G_TOKEN_ERROR.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_ERR_UNKNOWN

+

unknown error

+
 

G_ERR_UNEXP_EOF

+

unexpected end of file

+
 

G_ERR_UNEXP_EOF_IN_STRING

+

unterminated string constant

+
 

G_ERR_UNEXP_EOF_IN_COMMENT

+

unterminated comment

+
 

G_ERR_NON_DIGIT_IN_CONST

+

non-digit character in a number

+
 

G_ERR_DIGIT_RADIX

+

digit beyond radix in a number

+
 

G_ERR_FLOAT_RADIX

+

non-decimal floating point number

+
 

G_ERR_FLOAT_MALFORMED

+

malformed floating point number

+
 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Memory-Allocation.html b/docs/reference/glib/html/glib-Memory-Allocation.html new file mode 100644 index 0000000..4c7c0ce --- /dev/null +++ b/docs/reference/glib/html/glib-Memory-Allocation.html @@ -0,0 +1,1473 @@ + + + + +Memory Allocation: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Memory Allocation

+

Memory Allocation — general memory-handling

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define +g_new() +
#define +g_new0() +
#define +g_renew() +
#define +g_try_new() +
#define +g_try_new0() +
#define +g_try_renew() +
+gpointer + +g_malloc () +
+gpointer + +g_malloc0 () +
+gpointer + +g_realloc () +
+gpointer + +g_try_malloc () +
+gpointer + +g_try_malloc0 () +
+gpointer + +g_try_realloc () +
+gpointer + +g_malloc_n () +
+gpointer + +g_malloc0_n () +
+gpointer + +g_realloc_n () +
+gpointer + +g_try_malloc_n () +
+gpointer + +g_try_malloc0_n () +
+gpointer + +g_try_realloc_n () +
+void + +g_free () +
+void + +g_clear_pointer () +
+gpointer + +g_steal_pointer () +
#define +g_alloca() +
#define +g_newa() +
#define +g_memmove() +
+gpointer + +g_memdup () +
+void + +g_mem_set_vtable () +
+gboolean + +g_mem_is_system_malloc () +
+void + +g_mem_profile () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
extern gboolean g_mem_gc_friendly
structGMemVTable
extern GMemVTable *glib_mem_profiler_table
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

These functions provide support for allocating and freeing memory.

+

If any call to allocate memory fails, the application is terminated. +This also means that there is no need to check if the call succeeded.

+

It's important to match g_malloc() (and wrappers such as g_new()) with +g_free(), g_slice_alloc() (and wrappers such as g_slice_new()) with +g_slice_free(), plain malloc() with free(), and (if you're using C++) +new with delete and new[] with delete[]. Otherwise bad things can happen, +since these allocators may use different memory pools (and new/delete call +constructors and destructors).

+
+
+

Functions

+
+

g_new()

+
#define             g_new(struct_type, n_structs)
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

struct_type

the type of the elements to allocate

 

n_structs

the number of elements to allocate

 
+
+
+

Returns

+

a pointer to the allocated memory, cast to a pointer to struct_type +

+
+
+
+
+

g_new0()

+
#define             g_new0(struct_type, n_structs)
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

struct_type

the type of the elements to allocate.

 

n_structs

the number of elements to allocate.

 
+
+
+

Returns

+

a pointer to the allocated memory, cast to a pointer to struct_type +.

+
+
+
+
+

g_renew()

+
#define             g_renew(struct_type, mem, n_structs)
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

struct_type

the type of the elements to allocate

 

mem

the currently allocated memory

 

n_structs

the number of elements to allocate

 
+
+
+

Returns

+

a pointer to the new allocated memory, cast to a pointer to struct_type +

+
+
+
+
+

g_try_new()

+
#define             g_try_new(struct_type, n_structs)
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

struct_type

the type of the elements to allocate

 

n_structs

the number of elements to allocate

 
+
+
+

Returns

+

a pointer to the allocated memory, cast to a pointer to struct_type +

+
+

Since: 2.8

+
+
+
+

g_try_new0()

+
#define             g_try_new0(struct_type, n_structs)
+

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 or if an overflow occurs.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

struct_type

the type of the elements to allocate

 

n_structs

the number of elements to allocate

 
+
+
+

Returns

+

a pointer to the allocated memory, cast to a pointer to struct_type +

+
+

Since: 2.8

+
+
+
+

g_try_renew()

+
#define             g_try_renew(struct_type, mem, n_structs)
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

struct_type

the type of the elements to allocate

 

mem

the currently allocated memory

 

n_structs

the number of elements to allocate

 
+
+
+

Returns

+

a pointer to the new allocated memory, cast to a pointer to struct_type +

+
+

Since: 2.8

+
+
+
+

g_malloc ()

+
gpointer
+g_malloc (gsize n_bytes);
+

Allocates n_bytes + bytes of memory. +If n_bytes + is 0 it returns NULL.

+
+

Parameters

+
+++++ + + + + + +

n_bytes

the number of bytes to allocate

 
+
+
+

Returns

+

a pointer to the allocated memory

+
+
+
+
+

g_malloc0 ()

+
gpointer
+g_malloc0 (gsize n_bytes);
+

Allocates n_bytes + bytes of memory, initialized to 0's. +If n_bytes + is 0 it returns NULL.

+
+

Parameters

+
+++++ + + + + + +

n_bytes

the number of bytes to allocate

 
+
+
+

Returns

+

a pointer to the allocated memory

+
+
+
+
+

g_realloc ()

+
gpointer
+g_realloc (gpointer mem,
+           gsize n_bytes);
+

Reallocates the memory pointed to by mem +, so that it now has space for +n_bytes + bytes of memory. It returns the new address of the memory, which may +have been moved. mem + may be NULL, in which case it's considered to +have zero-length. n_bytes + may be 0, in which case NULL will be returned +and mem + will be freed unless it is NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mem

the memory to reallocate.

[allow-none]

n_bytes

new size of the memory in bytes

 
+
+
+

Returns

+

the new address of the allocated memory

+
+
+
+
+

g_try_malloc ()

+
gpointer
+g_try_malloc (gsize n_bytes);
+

Attempts to allocate n_bytes +, and returns NULL on failure. +Contrast with g_malloc(), which aborts the program on failure.

+
+

Parameters

+
+++++ + + + + + +

n_bytes

number of bytes to allocate.

 
+
+
+

Returns

+

the allocated memory, or NULL.

+
+
+
+
+

g_try_malloc0 ()

+
gpointer
+g_try_malloc0 (gsize n_bytes);
+

Attempts to allocate n_bytes +, initialized to 0's, and returns NULL on +failure. Contrast with g_malloc0(), which aborts the program on failure.

+
+

Parameters

+
+++++ + + + + + +

n_bytes

number of bytes to allocate

 
+
+
+

Returns

+

the allocated memory, or NULL

+
+

Since: 2.8

+
+
+
+

g_try_realloc ()

+
gpointer
+g_try_realloc (gpointer mem,
+               gsize n_bytes);
+

Attempts to realloc mem + to a new size, n_bytes +, and returns NULL +on failure. Contrast with g_realloc(), which aborts the program +on failure.

+

If mem + is NULL, behaves the same as g_try_malloc().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mem

previously-allocated memory, or NULL.

[allow-none]

n_bytes

number of bytes to allocate.

 
+
+
+

Returns

+

the allocated memory, or NULL.

+
+
+
+
+

g_malloc_n ()

+
gpointer
+g_malloc_n (gsize n_blocks,
+            gsize n_block_bytes);
+

This function is similar to g_malloc(), allocating (n_blocks + * n_block_bytes +) bytes, +but care is taken to detect possible overflow during multiplication.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

n_blocks

the number of blocks to allocate

 

n_block_bytes

the size of each block in bytes

 
+
+
+

Returns

+

a pointer to the allocated memory

+
+

Since: 2.24

+
+
+
+

g_malloc0_n ()

+
gpointer
+g_malloc0_n (gsize n_blocks,
+             gsize n_block_bytes);
+

This function is similar to g_malloc0(), allocating (n_blocks + * n_block_bytes +) bytes, +but care is taken to detect possible overflow during multiplication.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

n_blocks

the number of blocks to allocate

 

n_block_bytes

the size of each block in bytes

 
+
+
+

Returns

+

a pointer to the allocated memory

+
+

Since: 2.24

+
+
+
+

g_realloc_n ()

+
gpointer
+g_realloc_n (gpointer mem,
+             gsize n_blocks,
+             gsize n_block_bytes);
+

This function is similar to g_realloc(), allocating (n_blocks + * n_block_bytes +) bytes, +but care is taken to detect possible overflow during multiplication.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

mem

the memory to reallocate.

[allow-none]

n_blocks

the number of blocks to allocate

 

n_block_bytes

the size of each block in bytes

 
+
+
+

Returns

+

the new address of the allocated memory

+
+

Since: 2.24

+
+
+
+

g_try_malloc_n ()

+
gpointer
+g_try_malloc_n (gsize n_blocks,
+                gsize n_block_bytes);
+

This function is similar to g_try_malloc(), allocating (n_blocks + * n_block_bytes +) bytes, +but care is taken to detect possible overflow during multiplication.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

n_blocks

the number of blocks to allocate

 

n_block_bytes

the size of each block in bytes

 
+
+
+

Returns

+

the allocated memory, or NULL.

+
+

Since: 2.24

+
+
+
+

g_try_malloc0_n ()

+
gpointer
+g_try_malloc0_n (gsize n_blocks,
+                 gsize n_block_bytes);
+

This function is similar to g_try_malloc0(), allocating (n_blocks + * n_block_bytes +) bytes, +but care is taken to detect possible overflow during multiplication.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

n_blocks

the number of blocks to allocate

 

n_block_bytes

the size of each block in bytes

 
+
+
+

Returns

+

the allocated memory, or NULL

+
+

Since: 2.24

+
+
+
+

g_try_realloc_n ()

+
gpointer
+g_try_realloc_n (gpointer mem,
+                 gsize n_blocks,
+                 gsize n_block_bytes);
+

This function is similar to g_try_realloc(), allocating (n_blocks + * n_block_bytes +) bytes, +but care is taken to detect possible overflow during multiplication.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

mem

previously-allocated memory, or NULL.

[allow-none]

n_blocks

the number of blocks to allocate

 

n_block_bytes

the size of each block in bytes

 
+
+
+

Returns

+

the allocated memory, or NULL.

+
+

Since: 2.24

+
+
+
+

g_free ()

+
void
+g_free (gpointer mem);
+

Frees the memory pointed to by mem +.

+

If mem + is NULL it simply returns, so there is no need to check mem + +against NULL before calling this function.

+
+

Parameters

+
+++++ + + + + + +

mem

the memory to free.

[allow-none]
+
+
+
+
+

g_clear_pointer ()

+
void
+g_clear_pointer (gpointer *pp,
+                 GDestroyNotify destroy);
+

Clears a reference to a variable.

+

pp + must not be NULL.

+

If the reference is NULL then this function does nothing. +Otherwise, the variable is destroyed using destroy + and the +pointer is set to NULL.

+

A macro is also included that allows this function to be used without +pointer casts.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

pp

a pointer to a variable, struct member etc. holding a +pointer.

[not nullable]

destroy

a function to which a gpointer can be passed, to destroy *pp +

 
+
+

Since: 2.34

+
+
+
+

g_steal_pointer ()

+
gpointer
+g_steal_pointer (gpointer pp);
+

Sets pp + to NULL, returning the value that was there before.

+

Conceptually, this transfers the ownership of the pointer from the +referenced variable to the "caller" of the macro (ie: "steals" the +reference).

+

The return value will be properly typed, according to the type of +pp +.

+

This can be very useful when combined with g_autoptr() to prevent the +return value of a function from being automatically freed. Consider +the following example (which only works on GCC and clang):

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
GObject *
+create_object (void)
+{
+  g_autoptr(GObject) obj = g_object_new (G_TYPE_OBJECT, NULL);
+
+  if (early_error_case)
+    return NULL;
+
+  return g_steal_pointer (&obj);
+}
+
+ +

+

It can also be used in similar ways for 'out' parameters and is +particularly useful for dealing with optional out parameters:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
gboolean
+get_object (GObject **obj_out)
+{
+  g_autoptr(GObject) obj = g_object_new (G_TYPE_OBJECT, NULL);
+
+  if (early_error_case)
+    return FALSE;
+
+  if (obj_out)
+    *obj_out = g_steal_pointer (&obj);
+
+  return TRUE;
+}
+
+ +

+

In the above example, the object will be automatically freed in the +early error case and also in the case that NULL was given for +obj_out +.

+
+

Parameters

+
+++++ + + + + + +

pp

a pointer to a pointer.

[not nullable]
+
+

Since: 2.44

+
+
+
+

g_alloca()

+
#define             g_alloca(size)
+

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():

+
    +
  • alloca() is very fast, as on most systems it's implemented by just adjusting +the stack pointer register.

  • +
  • It doesn't cause any memory fragmentation, within its scope, separate alloca() +blocks just build up and are released together at function end.

  • +
  • 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.

  • +
  • 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.

  • +
  • 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.

  • +
+
+

Parameters

+
+++++ + + + + + +

size

number of bytes to allocate.

 
+
+
+

Returns

+

space for size +bytes, allocated on the stack

+
+
+
+
+

g_newa()

+
#define             g_newa(struct_type, n_structs)
+

Wraps g_alloca() in a more typesafe manner.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

struct_type

Type of memory chunks to be allocated

 

n_structs

Number of chunks to be allocated

 
+
+
+

Returns

+

Pointer to stack space for n_structs +chunks of type struct_type +

+
+
+
+
+

g_memmove()

+
#define             g_memmove(dest,src,len)
+
+

g_memmove has been deprecated since version 2.40 and should not be used in newly-written code.

+

Just use memmove().

+
+

Copies a block of memory len + bytes long, from src + to dest +. +The source and destination areas may overlap.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dest

the destination address to copy the bytes to.

 

src

the source address to copy the bytes from.

 

len

the number of bytes to copy.

 
+
+
+
+
+

g_memdup ()

+
gpointer
+g_memdup (gconstpointer mem,
+          guint byte_size);
+

Allocates byte_size + bytes of memory, and copies byte_size + bytes into it +from mem +. If mem + is NULL it returns NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mem

the memory to copy.

 

byte_size

the number of bytes to copy.

 
+
+
+

Returns

+

a pointer to the newly-allocated copy of the memory, or NULL if mem +is NULL.

+
+
+
+
+

g_mem_set_vtable ()

+
void
+g_mem_set_vtable (GMemVTable *vtable);
+
+

g_mem_set_vtable has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use other memory profiling tools instead

+
+

This function used to let you override the memory allocation function. +However, its use was incompatible with the use of global constructors +in GLib and GIO, because those use the GLib allocators before main is +reached. Therefore this function is now deprecated and is just a stub.

+
+

Parameters

+
+++++ + + + + + +

vtable

table of memory allocation routines.

 
+
+
+
+
+

g_mem_is_system_malloc ()

+
gboolean
+g_mem_is_system_malloc (void);
+
+

g_mem_is_system_malloc has been deprecated since version 2.46 and should not be used in newly-written code.

+

GLib always uses the system malloc, so this function always +returns TRUE.

+
+

Checks whether the allocator used by g_malloc() is the system's +malloc implementation. If it returns TRUE memory allocated with +malloc() can be used interchangeable with memory allocated using g_malloc(). +This function is useful for avoiding an extra copy of allocated memory returned +by a non-GLib-based API.

+
+

Returns

+

if TRUE, malloc() and g_malloc() can be mixed.

+
+
+
+
+

g_mem_profile ()

+
void
+g_mem_profile (void);
+
+

g_mem_profile has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use other memory profiling tools instead

+
+

GLib used to support some tools for memory profiling, but this +no longer works. There are many other useful tools for memory +profiling these days which can be used instead.

+
+
+
+

Types and Values

+
+

g_mem_gc_friendly

+
extern gboolean g_mem_gc_friendly;
+
+

This variable is TRUE if the G_DEBUG environment variable +includes the key gc-friendly.

+
+
+
+

struct GMemVTable

+
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);
+};
+
+

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.

+

This functions related to this has been deprecated in 2.46, and no longer work.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

 
+
+
+
+
+

glib_mem_profiler_table

+
extern GMemVTable *glib_mem_profiler_table;
+
+
+

glib_mem_profiler_table has been deprecated since version 2.46 and should not be used in newly-written code.

+

Use other memory profiling tools instead

+
+

Used to be a GMemVTable containing profiling variants of the memory +allocation functions, but this variable shouldn't be modified anymore.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Memory-Slices.html b/docs/reference/glib/html/glib-Memory-Slices.html new file mode 100644 index 0000000..53c3073 --- /dev/null +++ b/docs/reference/glib/html/glib-Memory-Slices.html @@ -0,0 +1,652 @@ + + + + +Memory Slices: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Memory Slices

+

Memory Slices — efficient way to allocate groups of equal-sized + chunks of memory

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gpointer + +g_slice_alloc () +
+gpointer + +g_slice_alloc0 () +
+gpointer + +g_slice_copy () +
+void + +g_slice_free1 () +
+void + +g_slice_free_chain_with_offset () +
#define +g_slice_new() +
#define +g_slice_new0() +
#define +g_slice_dup() +
#define +g_slice_free() +
#define +g_slice_free_chain() +
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

Memory slices provide a space-efficient and multi-processing scalable +way to allocate equal-sized pieces of memory, just like the original +GMemChunks (from GLib 2.8), while avoiding their excessive +memory-waste, scalability and performance problems.

+

To achieve these goals, the slice allocator uses a sophisticated, +layered design that has been inspired by Bonwick's slab allocator +(Bonwick94 +Jeff Bonwick, The slab allocator: An object-caching kernel +memory allocator. USENIX 1994, and +Bonwick01 +Bonwick and Jonathan Adams, Magazines and vmem: Extending the +slab allocator to many cpu's and arbitrary resources. USENIX 2001)

+

It uses posix_memalign() to optimize allocations of many equally-sized +chunks, and has per-thread free lists (the so-called magazine layer) +to quickly satisfy allocation requests of already known structure sizes. +This is accompanied by extra caching logic to keep freed memory around +for some time before returning it to the system. Memory that is unused +due to alignment constraints is used for cache colorization (random +distribution of chunk addresses) to improve CPU cache utilization. The +caching layer of the slice allocator adapts itself to high lock contention +to improve scalability.

+

The slice allocator can allocate blocks as small as two pointers, and +unlike malloc(), it does not reserve extra space per block. For large block +sizes, g_slice_new() and g_slice_alloc() will automatically delegate to the +system malloc() implementation. For newly written code it is recommended +to use the new g_slice API instead of g_malloc() and +friends, as long as objects are not resized during their lifetime and the +object size used at allocation time is still available when freeing.

+

Here is an example for using the slice allocator:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
gchar *mem[10000];
+gint i;
+
+// Allocate 10000 blocks.
+for (i = 0; i < 10000; i++)
+  {
+    mem[i] = g_slice_alloc (50);
+
+    // Fill in the memory with some junk.
+    for (j = 0; j < 50; j++)
+      mem[i][j] = i * j;
+  }
+
+// Now free all of the blocks.
+for (i = 0; i < 10000; i++)
+  g_slice_free1 (50, mem[i]);
+
+ +

+

And here is an example for using the using the slice allocator +with data structures:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
GRealArray *array;
+
+// Allocate one block, using the g_slice_new() macro.
+array = g_slice_new (GRealArray);
+
+// We can now use array just like a normal pointer to a structure.
+array->data            = NULL;
+array->len             = 0;
+array->alloc           = 0;
+array->zero_terminated = (zero_terminated ? 1 : 0);
+array->clear           = (clear ? 1 : 0);
+array->elt_size        = elt_size;
+
+// We can free the block, so it can be reused.
+g_slice_free (GRealArray, array);
+
+ +

+
+
+

Functions

+
+

g_slice_alloc ()

+
gpointer
+g_slice_alloc (gsize block_size);
+

Allocates a block of memory from the slice allocator. +The block adress handed out can be expected to be aligned +to at least 1 * sizeof (void*), +though in general slices are 2 * sizeof (void*) bytes aligned, +if a malloc() fallback implementation is used instead, +the alignment may be reduced in a libc dependent fashion. +Note that the underlying slice allocation mechanism can +be changed with the G_SLICE=always-malloc +environment variable.

+
+

Parameters

+
+++++ + + + + + +

block_size

the number of bytes to allocate

 
+
+
+

Returns

+

a pointer to the allocated memory block, which will be NULL if and +only if mem_size +is 0

+
+

Since: 2.10

+
+
+
+

g_slice_alloc0 ()

+
gpointer
+g_slice_alloc0 (gsize block_size);
+

Allocates a block of memory via g_slice_alloc() and initializes +the returned memory to 0. Note that the underlying slice allocation +mechanism can be changed with the G_SLICE=always-malloc +environment variable.

+
+

Parameters

+
+++++ + + + + + +

block_size

the number of bytes to allocate

 
+
+
+

Returns

+

a pointer to the allocated block, which will be NULL if and only +if mem_size +is 0

+
+

Since: 2.10

+
+
+
+

g_slice_copy ()

+
gpointer
+g_slice_copy (gsize block_size,
+              gconstpointer mem_block);
+

Allocates a block of memory from the slice allocator +and copies block_size + bytes into it from mem_block +.

+

mem_block + must be non-NULL if block_size + is non-zero.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

block_size

the number of bytes to allocate

 

mem_block

the memory to copy

 
+
+
+

Returns

+

a pointer to the allocated memory block, which will be NULL if and +only if mem_size +is 0

+
+

Since: 2.14

+
+
+
+

g_slice_free1 ()

+
void
+g_slice_free1 (gsize block_size,
+               gpointer mem_block);
+

Frees a block of memory.

+

The memory must have been allocated via g_slice_alloc() or +g_slice_alloc0() and the block_size + has to match the size +specified upon allocation. Note that the exact release behaviour +can be changed with the G_DEBUG=gc-friendly environment +variable, also see G_SLICE for related debugging options.

+

If mem_block + is NULL, this function does nothing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

block_size

the size of the block

 

mem_block

a pointer to the block to free

 
+
+

Since: 2.10

+
+
+
+

g_slice_free_chain_with_offset ()

+
void
+g_slice_free_chain_with_offset (gsize block_size,
+                                gpointer mem_chain,
+                                gsize next_offset);
+

Frees a linked list of memory blocks of structure type type +.

+

The memory blocks must be equal-sized, allocated via +g_slice_alloc() or g_slice_alloc0() and linked together by a +next + pointer (similar to GSList). The offset of the next + +field in each block is passed as third argument. +Note that the exact release behaviour can be changed with the +G_DEBUG=gc-friendly environment variable, also see +G_SLICE for related debugging options.

+

If mem_chain + is NULL, this function does nothing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

block_size

the size of the blocks

 

mem_chain

a pointer to the first block of the chain

 

next_offset

the offset of the next +field in the blocks

 
+
+

Since: 2.10

+
+
+
+

g_slice_new()

+
#define             g_slice_new(type)
+

A convenience macro to allocate a block of memory from the +slice allocator.

+

It calls g_slice_alloc() with sizeof (@type) and casts the +returned pointer to a pointer of the given type, avoiding a type +cast in the source code. Note that the underlying slice allocation +mechanism can be changed with the G_SLICE=always-malloc +environment variable.

+

This can never return NULL as the minimum allocation size from +sizeof (@type) is 1 byte.

+
+

Parameters

+
+++++ + + + + + +

type

the type to allocate, typically a structure name

 
+
+
+

Returns

+

a pointer to the allocated block, cast to a pointer +to type +.

+

[not nullable]

+
+

Since: 2.10

+
+
+
+

g_slice_new0()

+
#define             g_slice_new0(type)
+

A convenience macro to allocate a block of memory from the +slice allocator and set the memory to 0.

+

It calls g_slice_alloc0() with sizeof (@type) +and casts the returned pointer to a pointer of the given type, +avoiding a type cast in the source code. +Note that the underlying slice allocation mechanism can +be changed with the G_SLICE=always-malloc +environment variable.

+

This can never return NULL as the minimum allocation size from +sizeof (@type) is 1 byte.

+
+

Parameters

+
+++++ + + + + + +

type

the type to allocate, typically a structure name

 
+
+
+

Returns

+

a pointer to the allocated block, cast to a pointer +to type +.

+

[not nullable]

+
+

Since: 2.10

+
+
+
+

g_slice_dup()

+
#define             g_slice_dup(type, mem)
+

A convenience macro to duplicate a block of memory using +the slice allocator.

+

It calls g_slice_copy() with sizeof (@type) +and casts the returned pointer to a pointer of the given type, +avoiding a type cast in the source code. +Note that the underlying slice allocation mechanism can +be changed with the G_SLICE=always-malloc +environment variable.

+

This can never return NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

type

the type to duplicate, typically a structure name

 

mem

the memory to copy into the allocated block.

[not nullable]
+
+
+

Returns

+

a pointer to the allocated block, cast to a pointer +to type +.

+

[not nullable]

+
+

Since: 2.14

+
+
+
+

g_slice_free()

+
#define             g_slice_free(type, mem)
+

A convenience macro to free a block of memory that has +been allocated from the slice allocator.

+

It calls g_slice_free1() using sizeof (type) +as the block size. +Note that the exact release behaviour can be changed with the +G_DEBUG=gc-friendly environment variable, also see +G_SLICE for related debugging options.

+

If mem + is NULL, this macro does nothing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

type

the type of the block to free, typically a structure name

 

mem

a pointer to the block to free

 
+
+

Since: 2.10

+
+
+
+

g_slice_free_chain()

+
#define             g_slice_free_chain(type, mem_chain, next)
+

Frees a linked list of memory blocks of structure type type +. +The memory blocks must be equal-sized, allocated via +g_slice_alloc() or g_slice_alloc0() and linked together by +a next + pointer (similar to GSList). The name of the +next + field in type + is passed as third argument. +Note that the exact release behaviour can be changed with the +G_DEBUG=gc-friendly environment variable, also see +G_SLICE for related debugging options.

+

If mem_chain + is NULL, this function does nothing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

type

the type of the mem_chain +blocks

 

mem_chain

a pointer to the first block of the chain

 

next

the field name of the next pointer in type +

 
+
+

Since: 2.10

+
+
+
+

Types and Values

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Message-Logging.html b/docs/reference/glib/html/glib-Message-Logging.html new file mode 100644 index 0000000..d354f83 --- /dev/null +++ b/docs/reference/glib/html/glib-Message-Logging.html @@ -0,0 +1,1020 @@ + + + + +Message Logging: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Message Logging

+

Message Logging — versatile support for logging messages + with different levels of importance

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#defineG_LOG_DOMAIN
#defineG_LOG_FATAL_MASK
#defineG_LOG_LEVEL_USER_SHIFT
+void + +(*GLogFunc) () +
+void + +g_log () +
+void + +g_logv () +
#define +g_message() +
#define +g_warning() +
#define +g_critical() +
#define +g_error() +
#define +g_info() +
#define +g_debug() +
+guint + +g_log_set_handler () +
+guint + +g_log_set_handler_full () +
+void + +g_log_remove_handler () +
+GLogLevelFlags + +g_log_set_always_fatal () +
+GLogLevelFlags + +g_log_set_fatal_mask () +
+void + +g_log_default_handler () +
+GLogFunc + +g_log_set_default_handler () +
+
+
+

Types and Values

+
++++ + + + + +
enumGLogLevelFlags
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

These functions provide support for logging error messages +or messages used for debugging.

+

There are several built-in levels of messages, defined in +GLogLevelFlags. These can be extended with user-defined levels.

+
+
+

Functions

+
+

G_LOG_DOMAIN

+
#define G_LOG_DOMAIN    ((gchar*) 0)
+
+

Defines the log domain.

+

For applications, this is typically left as the default NULL +(or "") domain. Libraries should define this so that any messages +which they log can be differentiated from messages from other +libraries and application code. But be careful not to define +it in any public header files.

+

For example, GTK+ uses this in its Makefile.am:

+
+ + + + + + + +
1
AM_CPPFLAGS = -DG_LOG_DOMAIN=\"Gtk\"
+
+ +

+
+
+
+

G_LOG_FATAL_MASK

+
#define G_LOG_FATAL_MASK        (G_LOG_FLAG_RECURSION | G_LOG_LEVEL_ERROR)
+
+

GLib log levels that are considered fatal by default.

+
+
+
+

G_LOG_LEVEL_USER_SHIFT

+
#define G_LOG_LEVEL_USER_SHIFT  (8)
+
+

Log levels below 1<<G_LOG_LEVEL_USER_SHIFT are used by GLib. +Higher bits can be used for user-defined log levels.

+
+
+
+

GLogFunc ()

+
void
+(*GLogFunc) (const gchar *log_domain,
+             GLogLevelFlags log_level,
+             const gchar *message,
+             gpointer user_data);
+

Specifies the prototype of log handler functions.

+

The default log handler, g_log_default_handler(), automatically appends a +new-line character to message + when printing it. It is advised that any +custom log handler functions behave similarly, so that logging calls in user +code do not need modifying to add a new-line character to the message if the +log handler is changed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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_log_set_handler()

 
+
+
+
+
+

g_log ()

+
void
+g_log (const gchar *log_domain,
+       GLogLevelFlags log_level,
+       const gchar *format,
+       ...);
+

Logs an error or debugging message.

+

If the log level has been set as fatal, the abort() +function is called to terminate the program.

+

If g_log_default_handler() is used as the log handler function, a new-line +character will automatically be appended to @..., and need not be entered +manually.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

log_domain

the log domain, usually G_LOG_DOMAIN, or NULL +for the default.

[nullable]

log_level

the log level, either from GLogLevelFlags +or a user-defined level

 

format

the message format. See the printf() documentation

 

...

the parameters to insert into the format string

 
+
+
+
+
+

g_logv ()

+
void
+g_logv (const gchar *log_domain,
+        GLogLevelFlags log_level,
+        const gchar *format,
+        va_list args);
+

Logs an error or debugging message.

+

If the log level has been set as fatal, the abort() +function is called to terminate the program.

+

If g_log_default_handler() is used as the log handler function, a new-line +character will automatically be appended to @..., and need not be entered +manually.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

log_domain

the log domain, or NULL for the default "" +application domain.

[nullable]

log_level

the log level

 

format

the message format. See the printf() documentation

 

args

the parameters to insert into the format string

 
+
+
+
+
+

g_message()

+
#define             g_message(...)
+

A convenience function/macro to log a normal message.

+

If g_log_default_handler() is used as the log handler function, a new-line +character will automatically be appended to @..., and need not be entered +manually.

+
+

Parameters

+
+++++ + + + + + +

...

format string, followed by parameters to insert +into the format string (as with printf())

 
+
+
+
+
+

g_warning()

+
#define             g_warning(...)
+

A convenience function/macro to log a warning message.

+

This is not intended for end user error reporting. Use of GError is +preferred for that instead, as it allows calling functions to perform actions +conditional on the type of error.

+

You can make warnings fatal at runtime by setting the G_DEBUG +environment variable (see +Running GLib Applications).

+

If g_log_default_handler() is used as the log handler function, +a newline character will automatically be appended to @..., and +need not be entered manually.

+
+

Parameters

+
+++++ + + + + + +

...

format string, followed by parameters to insert +into the format string (as with printf())

 
+
+
+
+
+

g_critical()

+
#define             g_critical(...)
+

Logs a "critical warning" (G_LOG_LEVEL_CRITICAL). +It's more or less application-defined what constitutes +a critical vs. a regular warning. You could call +g_log_set_always_fatal() to make critical warnings exit +the program, then use g_critical() for fatal errors, for +example.

+

You can also make critical warnings fatal at runtime by +setting the G_DEBUG environment variable (see +Running GLib Applications).

+

If g_log_default_handler() is used as the log handler function, a new-line +character will automatically be appended to @..., and need not be entered +manually.

+
+

Parameters

+
+++++ + + + + + +

...

format string, followed by parameters to insert +into the format string (as with printf())

 
+
+
+
+
+

g_error()

+
#define             g_error(...)
+

A convenience function/macro to log an error message.

+

This is not intended for end user error reporting. Use of GError is +preferred for that instead, as it allows calling functions to perform actions +conditional on the type of error.

+

Error messages are always fatal, resulting in a call to +abort() to terminate the application. This function will +result in a core dump; don't use it for errors you expect. +Using this function indicates a bug in your program, i.e. +an assertion failure.

+

If g_log_default_handler() is used as the log handler function, a new-line +character will automatically be appended to @..., and need not be entered +manually.

+
+

Parameters

+
+++++ + + + + + +

...

format string, followed by parameters to insert +into the format string (as with printf())

 
+
+
+
+
+

g_info()

+
#define             g_info(...)
+

A convenience function/macro to log an informational message. Seldom used.

+

If g_log_default_handler() is used as the log handler function, a new-line +character will automatically be appended to @..., and need not be entered +manually.

+

Such messages are suppressed by the g_log_default_handler() unless +the G_MESSAGES_DEBUG environment variable is set appropriately.

+
+

Parameters

+
+++++ + + + + + +

...

format string, followed by parameters to insert +into the format string (as with printf())

 
+
+

Since: 2.40

+
+
+
+

g_debug()

+
#define             g_debug(...)
+

A convenience function/macro to log a debug message.

+

If g_log_default_handler() is used as the log handler function, a new-line +character will automatically be appended to @..., and need not be entered +manually.

+

Such messages are suppressed by the g_log_default_handler() unless +the G_MESSAGES_DEBUG environment variable is set appropriately.

+
+

Parameters

+
+++++ + + + + + +

...

format string, followed by parameters to insert +into the format string (as with printf())

 
+
+

Since: 2.6

+
+
+
+

g_log_set_handler ()

+
guint
+g_log_set_handler (const gchar *log_domain,
+                   GLogLevelFlags log_levels,
+                   GLogFunc log_func,
+                   gpointer user_data);
+

Sets the log handler for a domain and a set of log levels. +To handle fatal and recursive messages the log_levels + parameter +must be combined with the G_LOG_FLAG_FATAL and G_LOG_FLAG_RECURSION +bit flags.

+

Note that since the G_LOG_LEVEL_ERROR log level is always fatal, if +you want to set a handler for this log level you must combine it with +G_LOG_FLAG_FATAL.

+

Here is an example for adding a log handler for all warning messages +in the default domain:

+
+ + + + + + + +
1
+2
g_log_set_handler (NULL, G_LOG_LEVEL_WARNING | G_LOG_FLAG_FATAL
+                   | G_LOG_FLAG_RECURSION, my_log_handler, NULL);
+
+ +

+

This example adds a log handler for all critical messages from GTK+:

+
+ + + + + + + +
1
+2
g_log_set_handler ("Gtk", G_LOG_LEVEL_CRITICAL | G_LOG_FLAG_FATAL
+                   | G_LOG_FLAG_RECURSION, my_log_handler, NULL);
+
+ +

+

This example adds a log handler for all messages from GLib:

+
+ + + + + + + +
1
+2
g_log_set_handler ("GLib", G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL
+                   | G_LOG_FLAG_RECURSION, my_log_handler, NULL);
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

log_domain

the log domain, or NULL for the default "" +application domain.

[allow-none]

log_levels

the log levels to apply the log handler for. +To handle fatal and recursive messages as well, combine +the log levels with the G_LOG_FLAG_FATAL and +G_LOG_FLAG_RECURSION bit flags.

 

log_func

the log handler function

 

user_data

data passed to the log handler

 
+
+
+

Returns

+

the id of the new handler

+
+
+
+
+

g_log_set_handler_full ()

+
guint
+g_log_set_handler_full (const gchar *log_domain,
+                        GLogLevelFlags log_levels,
+                        GLogFunc log_func,
+                        gpointer user_data,
+                        GDestroyNotify destroy);
+

Like g_log_sets_handler(), but takes a destroy notify for the user_data +.

+

[rename-to g_log_set_handler]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

log_domain

the log domain, or NULL for the default "" +application domain.

[allow-none]

log_levels

the log levels to apply the log handler for. +To handle fatal and recursive messages as well, combine +the log levels with the G_LOG_FLAG_FATAL and +G_LOG_FLAG_RECURSION bit flags.

 

log_func

the log handler function

 

user_data

data passed to the log handler

 

destroy

destroy notify for user_data +, or NULL

 
+
+
+

Returns

+

the id of the new handler

+
+

Since: 2.46

+
+
+
+

g_log_remove_handler ()

+
void
+g_log_remove_handler (const gchar *log_domain,
+                      guint handler_id);
+

Removes the log handler.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

log_domain

the log domain

 

handler_id

the id of the handler, which was returned +in g_log_set_handler()

 
+
+
+
+
+

g_log_set_always_fatal ()

+
GLogLevelFlags
+g_log_set_always_fatal (GLogLevelFlags fatal_mask);
+

Sets the message levels which are always fatal, in any log domain. +When a message with any of these levels is logged the program terminates. +You can only set the levels defined by GLib to be fatal. +G_LOG_LEVEL_ERROR is always fatal.

+

You can also make some message levels fatal at runtime by setting +the G_DEBUG environment variable (see +Running GLib Applications).

+
+

Parameters

+
+++++ + + + + + +

fatal_mask

the mask containing bits set for each level +of error which is to be fatal

 
+
+
+

Returns

+

the old fatal mask

+
+
+
+
+

g_log_set_fatal_mask ()

+
GLogLevelFlags
+g_log_set_fatal_mask (const gchar *log_domain,
+                      GLogLevelFlags fatal_mask);
+

Sets the log levels which are fatal in the given domain. +G_LOG_LEVEL_ERROR is always fatal.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

log_domain

the log domain

 

fatal_mask

the new fatal mask

 
+
+
+

Returns

+

the old fatal mask for the log domain

+
+
+
+
+

g_log_default_handler ()

+
void
+g_log_default_handler (const gchar *log_domain,
+                       GLogLevelFlags log_level,
+                       const gchar *message,
+                       gpointer unused_data);
+

The default log handler set up by GLib; g_log_set_default_handler() +allows to install an alternate default log handler. +This is used if no log handler has been set for the particular log +domain and log level combination. It outputs the message to stderr +or stdout and if the log level is fatal it calls abort(). It automatically +prints a new-line character after the message, so one does not need to be +manually included in message +.

+

The behavior of this log handler can be influenced by a number of +environment variables:

+
    +
  • G_MESSAGES_PREFIXED: A :-separated list of log levels for which +messages should be prefixed by the program name and PID of the +aplication.

  • +
  • G_MESSAGES_DEBUG: A space-separated list of log domains for +which debug and informational messages are printed. By default +these messages are not printed.

  • +
+

stderr is used for levels G_LOG_LEVEL_ERROR, G_LOG_LEVEL_CRITICAL, +G_LOG_LEVEL_WARNING and G_LOG_LEVEL_MESSAGE. stdout is used for +the rest.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

log_domain

the log domain of the message, or NULL for the +default "" application domain.

[nullable]

log_level

the level of the message

 

message

the message.

[nullable]

unused_data

data passed from g_log() which is unused.

[nullable]
+
+
+
+
+

g_log_set_default_handler ()

+
GLogFunc
+g_log_set_default_handler (GLogFunc log_func,
+                           gpointer user_data);
+

Installs a default log handler which is used if no +log handler has been set for the particular log domain +and log level combination. By default, GLib uses +g_log_default_handler() as default log handler.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

log_func

the log handler function

 

user_data

data passed to the log handler

 
+
+
+

Returns

+

the previous default log handler

+
+

Since: 2.6

+
+
+
+

Types and Values

+
+

enum GLogLevelFlags

+

Flags specifying the level of log messages.

+

It is possible to change how GLib treats messages of the various +levels using g_log_set_handler() and g_log_set_fatal_mask().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_LOG_FLAG_RECURSION

+

internal flag

+
 

G_LOG_FLAG_FATAL

+

internal flag

+
 

G_LOG_LEVEL_ERROR

+

log level for errors, see g_error(). + This level is also used for messages produced by g_assert().

+
 

G_LOG_LEVEL_CRITICAL

+

log level for critical warning messages, see + g_critical(). + This level is also used for messages produced by g_return_if_fail() + and g_return_val_if_fail().

+
 

G_LOG_LEVEL_WARNING

+

log level for warnings, see g_warning()

+
 

G_LOG_LEVEL_MESSAGE

+

log level for messages, see g_message()

+
 

G_LOG_LEVEL_INFO

+

log level for informational messages, see g_info()

+
 

G_LOG_LEVEL_DEBUG

+

log level for debug messages, see g_debug()

+
 

G_LOG_LEVEL_MASK

+

a mask including all log levels

+
 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Miscellaneous-Macros.html b/docs/reference/glib/html/glib-Miscellaneous-Macros.html new file mode 100644 index 0000000..a6981aa --- /dev/null +++ b/docs/reference/glib/html/glib-Miscellaneous-Macros.html @@ -0,0 +1,1627 @@ + + + + +Miscellaneous Macros: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Miscellaneous Macros

+

Miscellaneous Macros — specialized macros which are not used often

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define +g_auto() +
#define +g_autoptr() +
#define +G_DEFINE_AUTOPTR_CLEANUP_FUNC() +
#define +G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC() +
#define +G_DEFINE_AUTO_CLEANUP_FREE_FUNC() +
#define +G_VA_COPY() +
#define +G_STRINGIFY() +
#define +G_PASTE() +
#define +G_STATIC_ASSERT() +
#define +G_STATIC_ASSERT_EXPR() +
#define +G_GNUC_CHECK_VERSION() +
#define +G_GNUC_ALLOC_SIZE() +
#define +G_GNUC_ALLOC_SIZE2() +
#define +G_GNUC_DEPRECATED_FOR() +
#define +G_GNUC_PRINTF() +
#define +G_GNUC_SCANF() +
#define +G_GNUC_FORMAT() +
#define +G_DEPRECATED_FOR() +
#define +G_UNAVAILABLE() +
#define +G_LIKELY() +
#define +G_UNLIKELY() +
#defineG_STRFUNC
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#defineG_INLINE_FUNC
#defineg_autofree
#defineG_STMT_START
#defineG_STMT_END
#defineG_BEGIN_DECLS
#defineG_END_DECLS
#defineG_GNUC_EXTENSION
#defineG_GNUC_CONST
#defineG_GNUC_PURE
#defineG_GNUC_MALLOC
#defineG_GNUC_DEPRECATED
#defineG_GNUC_BEGIN_IGNORE_DEPRECATIONS
#defineG_GNUC_END_IGNORE_DEPRECATIONS
#defineG_GNUC_NORETURN
#defineG_GNUC_UNUSED
#defineG_GNUC_NULL_TERMINATED
#defineG_GNUC_WARN_UNUSED_RESULT
#defineG_GNUC_FUNCTION
#defineG_GNUC_PRETTY_FUNCTION
#defineG_GNUC_NO_INSTRUMENT
#defineG_HAVE_GNUC_VISIBILITY
#defineG_GNUC_INTERNAL
#defineG_GNUC_MAY_ALIAS
#defineG_DEPRECATED
#defineG_STRLOC
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

These macros provide more specialized features which are not +needed so often by application programmers.

+
+
+

Functions

+
+

g_auto()

+
#define             g_auto(TypeName)
+

Helper to declare a variable with automatic cleanup.

+

The variable is cleaned up in a way appropriate to its type when the +variable goes out of scope. The type must support this.

+

This feature is only supported on GCC and clang. This macro is not +defined on other compilers and should not be used in programs that +are intended to be portable to those compilers.

+

This is meant to be used with stack-allocated structures and +non-pointer types. For the (more commonly used) pointer version, see +g_autoptr().

+

This macro can be used to avoid having to do explicit cleanups of +local variables when exiting functions. It often vastly simplifies +handling of error conditions, removing the need for various tricks +such as 'goto out' or repeating of cleanup code. It is also helpful +for non-error cases.

+

Consider the following example:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
GVariant *
+my_func(void)
+{
+  g_auto(GQueue) queue = G_QUEUE_INIT;
+  g_auto(GVariantBuilder) builder;
+  g_auto(GStrv) strv;
+
+  g_variant_builder_init (&builder, G_VARIANT_TYPE_VARDICT);
+  strv = g_strsplit("a:b:c", ":", -1);
+
+  ...
+
+  if (error_condition)
+    return NULL;
+
+  ...
+
+  return g_variant_builder_end (&builder);
+}
+
+ +

+

You must initialize the variable in some way -- either by use of an +initialiser or by ensuring that an _init function will be called on +it unconditionally before it goes out of scope.

+
+

Parameters

+
+++++ + + + + + +

TypeName

a supported variable type

 
+
+

Since: 2.44

+
+
+
+

g_autoptr()

+
#define             g_autoptr(TypeName)
+

Helper to declare a pointer variable with automatic cleanup.

+

The variable is cleaned up in a way appropriate to its type when the +variable goes out of scope. The type must support this.

+

This feature is only supported on GCC and clang. This macro is not +defined on other compilers and should not be used in programs that +are intended to be portable to those compilers.

+

This is meant to be used to declare pointers to types with cleanup +functions. The type of the variable is a pointer to TypeName +. You +must not add your own '*'.

+

This macro can be used to avoid having to do explicit cleanups of +local variables when exiting functions. It often vastly simplifies +handling of error conditions, removing the need for various tricks +such as 'goto out' or repeating of cleanup code. It is also helpful +for non-error cases.

+

Consider the following example:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
gboolean
+check_exists(GVariant *dict)
+{
+  g_autoptr(GVariant) dirname, basename = NULL;
+  g_autofree gchar *path = NULL;
+
+  dirname = g_variant_lookup_value (dict, "dirname", G_VARIANT_TYPE_STRING);
+
+  if (dirname == NULL)
+    return FALSE;
+
+  basename = g_variant_lookup_value (dict, "basename", G_VARIANT_TYPE_STRING);
+
+  if (basename == NULL)
+    return FALSE;
+
+  path = g_build_filename (g_variant_get_string (dirname, NULL),
+                           g_variant_get_string (basename, NULL),
+                           NULL);
+
+  return g_access (path, R_OK) == 0;
+}
+
+ +

+

You must initialise the variable in some way -- either by use of an +initialiser or by ensuring that it is assigned to unconditionally +before it goes out of scope.

+

See also g_auto(), g_autofree() and g_steal_pointer().

+
+

Parameters

+
+++++ + + + + + +

TypeName

a supported variable type

 
+
+

Since: 2.44

+
+
+
+

G_DEFINE_AUTOPTR_CLEANUP_FUNC()

+
#define             G_DEFINE_AUTOPTR_CLEANUP_FUNC(TypeName, func)
+

Defines the appropriate cleanup function for a pointer type.

+

The function will not be called if the variable to be cleaned up +contains NULL.

+

This will typically be the _free() or _unref() function for the given +type.

+

With this definition, it will be possible to use g_autoptr() with +TypeName +.

+
+ + + + + + + +
1
G_DEFINE_AUTOPTR_CLEANUP_FUNC(GObject, g_object_unref)
+
+ +

+

This macro should be used unconditionally; it is a no-op on compilers +where cleanup is not supported.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

TypeName

a type name to define a g_autoptr() cleanup function for

 

func

the cleanup function

 
+
+

Since: 2.44

+
+
+
+

G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC()

+
#define             G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(TypeName, func)
+

Defines the appropriate cleanup function for a type.

+

This will typically be the _clear() function for the given type.

+

With this definition, it will be possible to use g_auto() with +TypeName +.

+
+ + + + + + + +
1
G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(GQueue, g_queue_clear)
+
+ +

+

This macro should be used unconditionally; it is a no-op on compilers +where cleanup is not supported.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

TypeName

a type name to define a g_auto() cleanup function for

 

func

the clear function

 
+
+

Since: 2.44

+
+
+
+

G_DEFINE_AUTO_CLEANUP_FREE_FUNC()

+
#define             G_DEFINE_AUTO_CLEANUP_FREE_FUNC(TypeName, func, none)
+

Defines the appropriate cleanup function for a type.

+

With this definition, it will be possible to use g_auto() with +TypeName +.

+

This function will be rarely used. It is used with pointer-based +typedefs and non-pointer types where the value of the variable +represents a resource that must be freed. Two examples are GStrv +and file descriptors.

+

none + specifies the "none" value for the type in question. It is +probably something like NULL or -1. If the variable is found to +contain this value then the free function will not be called.

+
+ + + + + + + +
1
G_DEFINE_AUTO_CLEANUP_FREE_FUNC(GStrv, g_strfreev, NULL)
+
+ +

+

This macro should be used unconditionally; it is a no-op on compilers +where cleanup is not supported.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

TypeName

a type name to define a g_auto() cleanup function for

 

func

the free function

 

none

the "none" value for the type

 
+
+

Since: 2.44

+
+
+
+

G_VA_COPY()

+
#define             G_VA_COPY(ap1,ap2)
+

Portable way to copy va_list variables.

+

In order to use this function, you must include string.h yourself, +because this macro may use memmove() and GLib does not include +string.h for you.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

ap1

the va_list variable to place a copy of ap2 +in

 

ap2

a va_list

 
+
+
+
+
+

G_STRINGIFY()

+
#define G_STRINGIFY(macro_or_string) G_STRINGIFY_ARG (macro_or_string)
+
+

Accepts a macro or a string and converts it into a string after +preprocessor argument expansion. For example, the following code:

+
+ + + + + + + +
1
+2
#define AGE 27
+const gchar *greeting = G_STRINGIFY (AGE) " today!";
+
+ +

+

is transformed by the preprocessor into (code equivalent to):

+
+ + + + + + + +
1
const gchar *greeting = "27 today!";
+
+ +

+
+

Parameters

+
+++++ + + + + + +

macro_or_string

a macro or a string

 
+
+
+
+
+

G_PASTE()

+
#define G_PASTE(identifier1,identifier2)      G_PASTE_ARGS (identifier1, identifier2)
+
+

Yields a new preprocessor pasted identifier +identifier1identifier2 + from its expanded +arguments identifier1 + and identifier2 +. For example, +the following code:

+
+ + + + + + + +
1
+2
+3
+4
#define GET(traveller,method) G_PASTE(traveller_get_, method) (traveller)
+const gchar *name = GET (traveller, name);
+const gchar *quest = GET (traveller, quest);
+GdkColor *favourite = GET (traveller, favourite_colour);
+
+ +

+

is transformed by the preprocessor into:

+
+ + + + + + + +
1
+2
+3
const gchar *name = traveller_get_name (traveller);
+const gchar *quest = traveller_get_quest (traveller);
+GdkColor *favourite = traveller_get_favourite_colour (traveller);
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

identifier1

an identifier

 

identifier2

an identifier

 
+
+

Since: 2.20

+
+
+
+

G_STATIC_ASSERT()

+
#define G_STATIC_ASSERT(expr) typedef char G_PASTE (_GStaticAssertCompileTimeAssertion_, __COUNTER__)[(expr) ? 1 : -1] G_GNUC_UNUSED
+
+

The G_STATIC_ASSERT() macro lets the programmer check +a condition at compile time, the condition needs to +be compile time computable. The macro can be used in +any place where a typedef is valid.

+

A typedef is generally allowed in exactly the same places that +a variable declaration is allowed. For this reason, you should +not use G_STATIC_ASSERT() in the middle of blocks of code.

+

The macro should only be used once per source code line.

+
+

Parameters

+
+++++ + + + + + +

expr

a constant expression

 
+
+

Since: 2.20

+
+
+
+

G_STATIC_ASSERT_EXPR()

+
#define G_STATIC_ASSERT_EXPR(expr) ((void) sizeof (char[(expr) ? 1 : -1]))
+
+

The G_STATIC_ASSERT_EXPR() macro lets the programmer check +a condition at compile time. The condition needs to be +compile time computable.

+

Unlike G_STATIC_ASSERT(), this macro evaluates to an expression +and, as such, can be used in the middle of other expressions. +Its value should be ignored. This can be accomplished by placing +it as the first argument of a comma expression.

+
+ + + + + + + +
1
+2
#define ADD_ONE_TO_INT(x) \
+  (G_STATIC_ASSERT_EXPR(sizeof (x) == sizeof (int)), ((x) + 1))
+
+ +

+
+

Parameters

+
+++++ + + + + + +

expr

a constant expression

 
+
+

Since: 2.30

+
+
+
+

G_GNUC_CHECK_VERSION()

+
#define             G_GNUC_CHECK_VERSION(major, minor)
+

Expands to a a check for a compiler with __GNUC__ defined and a version +greater than or equal to the major and minor numbers provided. For example, +the following would only match on compilers such as GCC 4.8 or newer.

+
+ + + + + + + +
1
+2
#if G_GNUC_CHECK_VERSION(4, 8)
+#endif
+
+ +

+

Since: 2.42

+
+
+
+

G_GNUC_ALLOC_SIZE()

+
#define G_GNUC_ALLOC_SIZE(x) __attribute__((__alloc_size__(x)))
+
+

Expands to the GNU C alloc_size function attribute if the compiler +is a new enough gcc. This attribute tells the compiler that the +function returns a pointer to memory of a size that is specified +by the xth + function parameter.

+

Place the attribute after the function declaration, just before the +semicolon.

+

See the GNU C documentation for more details.

+
+

Parameters

+
+++++ + + + + + +

x

the index of the argument specifying the allocation size

 
+
+

Since: 2.18

+
+
+
+

G_GNUC_ALLOC_SIZE2()

+
#define G_GNUC_ALLOC_SIZE2(x,y) __attribute__((__alloc_size__(x,y)))
+
+

Expands to the GNU C alloc_size function attribute if the compiler is a +new enough gcc. This attribute tells the compiler that the function returns +a pointer to memory of a size that is specified by the product of two +function parameters.

+

Place the attribute after the function declaration, just before the +semicolon.

+

See the GNU C documentation for more details.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

x

the index of the argument specifying one factor of the allocation size

 

y

the index of the argument specifying the second factor of the allocation size

 
+
+

Since: 2.18

+
+
+
+

G_GNUC_DEPRECATED_FOR()

+
#define             G_GNUC_DEPRECATED_FOR(f)
+

Like G_GNUC_DEPRECATED, but names the intended replacement for the +deprecated symbol if the version of gcc in use is new enough to support +custom deprecation messages.

+

Place the attribute after the declaration, just before the semicolon.

+

See the GNU C documentation for more details.

+

Note that if f + is a macro, it will be expanded in the warning message. +You can enclose it in quotes to prevent this. (The quotes will show up +in the warning, but it's better than showing the macro expansion.)

+
+

Parameters

+
+++++ + + + + + +

f

the intended replacement for the deprecated symbol, +such as the name of a function

 
+
+

Since: 2.26

+
+
+
+

G_GNUC_PRINTF()

+
#define             G_GNUC_PRINTF( format_idx, arg_idx )
+

Expands to the GNU C format function attribute if the compiler is gcc. +This is used for declaring functions which take a variable number of +arguments, with the same syntax as printf(). It allows the compiler +to type-check the arguments passed to the function.

+

Place the attribute after the function declaration, just before the +semicolon.

+

See the GNU C documentation for more details.

+
+ + + + + + + +
1
+2
+3
+4
gint g_snprintf (gchar  *string,
+                 gulong       n,
+                 gchar const *format,
+                 ...) G_GNUC_PRINTF (3, 4);
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format_idx

the index of the argument corresponding to the +format string (The arguments are numbered from 1)

 

arg_idx

the index of the first of the format arguments

 
+
+
+
+
+

G_GNUC_SCANF()

+
#define             G_GNUC_SCANF( format_idx, arg_idx )
+

Expands to the GNU C format function attribute if the compiler is gcc. +This is used for declaring functions which take a variable number of +arguments, with the same syntax as scanf(). It allows the compiler +to type-check the arguments passed to the function.

+

See the GNU C documentation for details.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format_idx

the index of the argument corresponding to +the format string (The arguments are numbered from 1)

 

arg_idx

the index of the first of the format arguments

 
+
+
+
+
+

G_GNUC_FORMAT()

+
#define             G_GNUC_FORMAT( arg_idx )
+

Expands to the GNU C format_arg function attribute if the compiler +is gcc. This function attribute specifies that a function takes a +format string for a printf(), scanf(), strftime() or strfmon() style +function and modifies it, so that the result can be passed to a printf(), +scanf(), strftime() or strfmon() style function (with the remaining +arguments to the format function the same as they would have been +for the unmodified string).

+

Place the attribute after the function declaration, just before the +semicolon.

+

See the GNU C documentation for more details.

+
+ + + + + + + +
1
gchar *g_dgettext (gchar *domain_name, gchar *msgid) G_GNUC_FORMAT (2);
+
+ +

+
+

Parameters

+
+++++ + + + + + +

arg_idx

the index of the argument

 
+
+
+
+
+

G_DEPRECATED_FOR()

+
#define G_DEPRECATED_FOR(f) __attribute__((__deprecated__("Use '" #f "' instead")))
+
+

This macro is similar to G_GNUC_DEPRECATED_FOR, and can be used to mark +functions declarations as deprecated. Unlike G_GNUC_DEPRECATED_FOR, it +is meant to be portable across different compilers and must be placed +before the function declaration.

+
+

Parameters

+
+++++ + + + + + +

f

the name of the function that this function was deprecated for

 
+
+

Since: 2.32

+
+
+
+

G_UNAVAILABLE()

+
#define G_UNAVAILABLE(maj,min) __attribute__((deprecated("Not available before " #maj "." #min)))
+
+

This macro can be used to mark a function declaration as unavailable. +It must be placed before the function declaration. Use of a function +that has been annotated with this macros will produce a compiler warning.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

maj

the major version that introduced the symbol

 

min

the minor version that introduced the symbol

 
+
+

Since: 2.32

+
+
+
+

G_LIKELY()

+
#define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR((expr)), 1))
+
+

Hints the compiler that the expression is likely to evaluate to +a true value. The compiler may use this information for optimizations.

+
+ + + + + + + +
1
+2
if (G_LIKELY (random () != 1))
+  g_print ("not one");
+
+ +

+
+

Parameters

+
+++++ + + + + + +

expr

the expression

 
+
+
+

Returns

+

the value of expr +

+
+

Since: 2.2

+
+
+
+

G_UNLIKELY()

+
#define G_UNLIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR((expr)), 0))
+
+

Hints the compiler that the expression is unlikely to evaluate to +a true value. The compiler may use this information for optimizations.

+
+ + + + + + + +
1
+2
if (G_UNLIKELY (random () == 1))
+  g_print ("a random one");
+
+ +

+
+

Parameters

+
+++++ + + + + + +

expr

the expression

 
+
+
+

Returns

+

the value of expr +

+
+

Since: 2.2

+
+
+
+

G_STRFUNC

+
#define G_STRFUNC     ((const char*) (__PRETTY_FUNCTION__))
+
+

Expands to a string identifying the current function.

+

Since: 2.4

+
+
+
+

Types and Values

+
+

G_INLINE_FUNC

+
#  define G_INLINE_FUNC extern
+
+
+

G_INLINE_FUNC has been deprecated since version 2.48 and should not be used in newly-written code.

+

Use "static inline" instead

+
+

This macro used to be used to conditionally define inline functions +in a compatible way before this feature was supported in all +compilers. These days, GLib requires inlining support from the +compiler, so your GLib-using programs can safely assume that the +"inline" keywork works properly.

+

Never use this macro anymore. Just say "static inline".

+
+
+
+

g_autofree

+
#define             g_autofree
+

Macro to add an attribute to pointer variable to ensure automatic +cleanup using g_free().

+

This macro differs from g_autoptr() in that it is an attribute supplied +before the type name, rather than wrapping the type definition. Instead +of using a type-specific lookup, this macro always calls g_free() directly.

+

This means it's useful for any type that is returned from +g_malloc().

+

Otherwise, this macro has similar constraints as g_autoptr() - only +supported on GCC and clang, the variable must be initialized, etc.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
gboolean
+operate_on_malloc_buf (void)
+{
+  g_autofree guint8* membuf = NULL;
+
+  membuf = g_malloc (8192);
+
+  /* Some computation on membuf */
+
+  /* membuf will be automatically freed here */
+  return TRUE;
+}
+
+ +

+

Since: 2.44

+
+
+
+

G_STMT_START

+
#define G_STMT_START  do
+
+

Used within multi-statement macros so that they can be used in places +where only one statement is expected by the compiler.

+
+
+
+

G_STMT_END

+
#define             G_STMT_END
+

Used within multi-statement macros so that they can be used in places +where only one statement is expected by the compiler.

+
+
+
+

G_BEGIN_DECLS

+
#define G_BEGIN_DECLS  extern "C" {
+
+

Used (along with G_END_DECLS) to bracket header files. If the +compiler in use is a C++ compiler, adds extern "C" +around the header.

+
+
+
+

G_END_DECLS

+
#define G_END_DECLS    }
+
+

Used (along with G_BEGIN_DECLS) to bracket header files. If the +compiler in use is a C++ compiler, adds extern "C" +around the header.

+
+
+
+

G_GNUC_EXTENSION

+
#define G_GNUC_EXTENSION __extension__
+
+

Expands to __extension__ when gcc is used as the compiler. This simply +tells gcc not to warn about the following non-standard code when compiling +with the -pedantic option.

+
+
+
+

G_GNUC_CONST

+
#define             G_GNUC_CONST
+

Expands to the GNU C const function attribute if the compiler is gcc. +Declaring a function as const enables better optimization of calls to +the function. A const function doesn't examine any values except its +parameters, and has no effects except its return value.

+

Place the attribute after the declaration, just before the semicolon.

+

See the GNU C documentation for more details.

+

A function that has pointer arguments and examines the data pointed to +must not be declared const. Likewise, a function that calls a non-const +function usually must not be const. It doesn't make sense for a const +function to return void.

+
+
+
+

G_GNUC_PURE

+
#define G_GNUC_PURE __attribute__((__pure__))
+
+

Expands to the GNU C pure function attribute if the compiler is gcc. +Declaring a function as pure enables better optimization of calls to +the function. A pure function has no effects except its return value +and the return value depends only on the parameters and/or global +variables.

+

Place the attribute after the declaration, just before the semicolon.

+

See the GNU C documentation for more details.

+
+
+
+

G_GNUC_MALLOC

+
#define G_GNUC_MALLOC __attribute__((__malloc__))
+
+

Expands to the GNU C malloc function attribute if the compiler is gcc. +Declaring a function as malloc enables better optimization of the function. +A function can have the malloc attribute if it returns a pointer which is +guaranteed to not alias with any other pointer when the function returns +(in practice, this means newly allocated memory).

+

Place the attribute after the declaration, just before the semicolon.

+

See the GNU C documentation for more details.

+

Since: 2.6

+
+
+
+

G_GNUC_DEPRECATED

+
#define G_GNUC_DEPRECATED __attribute__((__deprecated__))
+
+

Expands to the GNU C deprecated attribute if the compiler is gcc. +It can be used to mark typedefs, variables and functions as deprecated. +When called with the -Wdeprecated-declarations option, +gcc will generate warnings when deprecated interfaces are used.

+

Place the attribute after the declaration, just before the semicolon.

+

See the GNU C documentation for more details.

+

Since: 2.2

+
+
+
+

G_GNUC_BEGIN_IGNORE_DEPRECATIONS

+
#define             G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+

Tells gcc (if it is a new enough version) to temporarily stop emitting +warnings when functions marked with G_GNUC_DEPRECATED or +G_GNUC_DEPRECATED_FOR are called. This is useful for when you have +one deprecated function calling another one, or when you still have +regression tests for deprecated functions.

+

Use G_GNUC_END_IGNORE_DEPRECATIONS to begin warning again. (If you +are not compiling with -Wdeprecated-declarations then neither macro +has any effect.)

+

This macro can be used either inside or outside of a function body, +but must appear on a line by itself.

+

Since: 2.32

+
+
+
+

G_GNUC_END_IGNORE_DEPRECATIONS

+
#define             G_GNUC_END_IGNORE_DEPRECATIONS
+

Undoes the effect of G_GNUC_BEGIN_IGNORE_DEPRECATIONS, telling +gcc to begin outputting warnings again (assuming those warnings +had been enabled to begin with).

+

This macro can be used either inside or outside of a function body, +but must appear on a line by itself.

+

Since: 2.32

+
+
+
+

G_GNUC_NORETURN

+
#define             G_GNUC_NORETURN
+

Expands to the GNU C noreturn function attribute if the compiler is gcc. +It is used for declaring functions which never return. It enables +optimization of the function, and avoids possible compiler warnings.

+

Place the attribute after the declaration, just before the semicolon.

+

See the GNU C documentation for more details.

+
+
+
+

G_GNUC_UNUSED

+
#define             G_GNUC_UNUSED
+

Expands to the GNU C unused function attribute if the compiler is gcc. +It is used for declaring functions and arguments which may never be used. +It avoids possible compiler warnings.

+

For functions, place the attribute after the declaration, just before the +semicolon. For arguments, place the attribute at the beginning of the +argument declaration.

+
+ + + + + + + +
1
+2
void my_unused_function (G_GNUC_UNUSED gint unused_argument,
+                         gint other_argument) G_GNUC_UNUSED;
+
+ +

+

See the GNU C documentation for more details.

+
+
+
+

G_GNUC_NULL_TERMINATED

+
#define G_GNUC_NULL_TERMINATED __attribute__((__sentinel__))
+
+

Expands to the GNU C sentinel function attribute if the compiler is gcc. +This function attribute only applies to variadic functions and instructs +the compiler to check that the argument list is terminated with an +explicit NULL.

+

Place the attribute after the declaration, just before the semicolon.

+

See the GNU C documentation for more details.

+

Since: 2.8

+
+
+
+

G_GNUC_WARN_UNUSED_RESULT

+
#define G_GNUC_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
+
+

Expands to the GNU C warn_unused_result function attribute if the compiler +is gcc. This function attribute makes the compiler emit a warning if the +result of a function call is ignored.

+

Place the attribute after the declaration, just before the semicolon.

+

See the GNU C documentation for more details.

+

Since: 2.10

+
+
+
+

G_GNUC_FUNCTION

+
#define G_GNUC_FUNCTION         __FUNCTION__
+
+
+

G_GNUC_FUNCTION has been deprecated since version 2.16 and should not be used in newly-written code.

+

Use G_STRFUNC() instead

+
+

Expands to "" on all modern compilers, and to __FUNCTION__ on gcc +version 2.x. Don't use it.

+
+
+
+

G_GNUC_PRETTY_FUNCTION

+
#define G_GNUC_PRETTY_FUNCTION  __PRETTY_FUNCTION__
+
+
+

G_GNUC_PRETTY_FUNCTION has been deprecated since version 2.16 and should not be used in newly-written code.

+

Use G_STRFUNC() instead

+
+

Expands to "" on all modern compilers, and to __PRETTY_FUNCTION__ +on gcc version 2.x. Don't use it.

+
+
+
+

G_GNUC_NO_INSTRUMENT

+
#define             G_GNUC_NO_INSTRUMENT
+

Expands to the GNU C no_instrument_function function attribute if the +compiler is gcc. Functions with this attribute will not be instrumented +for profiling, when the compiler is called with the +-finstrument-functions option.

+

Place the attribute after the declaration, just before the semicolon.

+

See the GNU C documentation for more details.

+
+
+
+

G_HAVE_GNUC_VISIBILITY

+
#define G_HAVE_GNUC_VISIBILITY 1
+
+

Defined to 1 if gcc-style visibility handling is supported.

+
+
+
+

G_GNUC_INTERNAL

+
#define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
+
+

This attribute can be used for marking library functions as being used +internally to the library only, which may allow the compiler to handle +function calls more efficiently. Note that static functions do not need +to be marked as internal in this way. See the GNU C documentation for +details.

+

When using a compiler that supports the GNU C hidden visibility attribute, +this macro expands to __attribute__((visibility("hidden"))). +When using the Sun Studio compiler, it expands to __hidden.

+

Note that for portability, the attribute should be placed before the +function declaration. While GCC allows the macro after the declaration, +Sun Studio does not.

+
+ + + + + + + +
1
+2
+3
+4
+5
G_GNUC_INTERNAL
+void _g_log_fallback_handler (const gchar    *log_domain,
+                              GLogLevelFlags  log_level,
+                              const gchar    *message,
+                              gpointer        unused_data);
+
+ +

+

Since: 2.6

+
+
+
+

G_GNUC_MAY_ALIAS

+
#define G_GNUC_MAY_ALIAS __attribute__((may_alias))
+
+

Expands to the GNU C may_alias type attribute if the compiler is gcc. +Types with this attribute will not be subjected to type-based alias +analysis, but are assumed to alias with any other type, just like char.

+

See the GNU C documentation for details.

+

Since: 2.14

+
+
+
+

G_DEPRECATED

+
#define G_DEPRECATED __attribute__((__deprecated__))
+
+

This macro is similar to G_GNUC_DEPRECATED, and can be used to mark +functions declarations as deprecated. Unlike G_GNUC_DEPRECATED, it is +meant to be portable across different compilers and must be placed +before the function declaration.

+

Since: 2.32

+
+
+
+

G_STRLOC

+
#define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) ":" __PRETTY_FUNCTION__ "()"
+
+

Expands to a string identifying the current code position.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Miscellaneous-Utility-Functions.html b/docs/reference/glib/html/glib-Miscellaneous-Utility-Functions.html new file mode 100644 index 0000000..dfa8f57 --- /dev/null +++ b/docs/reference/glib/html/glib-Miscellaneous-Utility-Functions.html @@ -0,0 +1,2226 @@ + + + + +Miscellaneous Utility Functions: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Miscellaneous Utility Functions

+

Miscellaneous Utility Functions — a selection of portable utility functions

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const gchar * + +g_get_application_name () +
+void + +g_set_application_name () +
const gchar * + +g_get_prgname () +
+void + +g_set_prgname () +
+gchar ** + +g_get_environ () +
const gchar * + +g_environ_getenv () +
+gchar ** + +g_environ_setenv () +
+gchar ** + +g_environ_unsetenv () +
const gchar * + +g_getenv () +
+gboolean + +g_setenv () +
+void + +g_unsetenv () +
+gchar ** + +g_listenv () +
const gchar * + +g_get_user_name () +
const gchar * + +g_get_real_name () +
const gchar * + +g_get_user_cache_dir () +
const gchar * + +g_get_user_data_dir () +
const gchar * + +g_get_user_config_dir () +
const gchar * + +g_get_user_runtime_dir () +
const gchar * + +g_get_user_special_dir () +
const gchar * const * + +g_get_system_data_dirs () +
const gchar * const * + +g_get_system_config_dirs () +
+void + +g_reload_user_special_dirs_cache () +
const gchar * + +g_get_host_name () +
const gchar * + +g_get_home_dir () +
const gchar * + +g_get_tmp_dir () +
+gchar * + +g_get_current_dir () +
const gchar * + +g_basename () +
+gboolean + +g_path_is_absolute () +
const gchar * + +g_path_skip_root () +
+gchar * + +g_path_get_basename () +
+gchar * + +g_path_get_dirname () +
+gchar * + +g_build_filename () +
+gchar * + +g_build_filenamev () +
+gchar * + +g_build_path () +
+gchar * + +g_build_pathv () +
+gchar * + +g_format_size () +
+gchar * + +g_format_size_full () +
+gchar * + +g_format_size_for_display () +
+gchar * + +g_find_program_in_path () +
#define +g_bit_nth_lsf() +
#define +g_bit_nth_msf() +
#define +g_bit_storage() +
+guint + +g_spaced_primes_closest () +
+void + +g_atexit () +
+guint + +g_parse_debug_string () +
+void + +(*GVoidFunc) () +
+void + +(*GFreeFunc) () +
+void + +g_qsort_with_data () +
+void + +g_nullify_pointer () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + +
enumGUserDirectory
#defineg_dirname
enumGFormatSizeFlags
structGDebugKey
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

These are portable utility functions.

+
+
+

Functions

+
+

g_get_application_name ()

+
const gchar *
+g_get_application_name (void);
+

Gets a human-readable name for the application, as set by +g_set_application_name(). This name should be localized if +possible, and is intended for display to the user. Contrast with +g_get_prgname(), which gets a non-localized name. If +g_set_application_name() has not been called, returns the result of +g_get_prgname() (which may be NULL if g_set_prgname() has also not +been called).

+
+

Returns

+

human-readable application name. may return NULL

+
+

Since: 2.2

+
+
+
+

g_set_application_name ()

+
void
+g_set_application_name (const gchar *application_name);
+

Sets a human-readable name for the application. This name should be +localized if possible, and is intended for display to the user. +Contrast with g_set_prgname(), which sets a non-localized name. +g_set_prgname() will be called automatically by gtk_init(), +but g_set_application_name() will not.

+

Note that for thread safety reasons, this function can only +be called once.

+

The application name will be used in contexts such as error messages, +or when displaying an application's name in the task list.

+
+

Parameters

+
+++++ + + + + + +

application_name

localized name of the application

 
+
+

Since: 2.2

+
+
+
+

g_get_prgname ()

+
const gchar *
+g_get_prgname (void);
+

Gets the name of the program. This name should not be localized, +in contrast to g_get_application_name().

+

If you are using GDK or GTK+ the program name is set in gdk_init(), +which is called by gtk_init(). The program name is found by taking +the last component of argv +[0].

+
+

Returns

+

the name of the program. The returned string belongs +to GLib and must not be modified or freed.

+
+
+
+
+

g_set_prgname ()

+
void
+g_set_prgname (const gchar *prgname);
+

Sets the name of the program. This name should not be localized, +in contrast to g_set_application_name().

+

Note that for thread-safety reasons this function can only be called once.

+
+

Parameters

+
+++++ + + + + + +

prgname

the name of the program.

 
+
+
+
+
+

g_get_environ ()

+
gchar **
+g_get_environ (void);
+

Gets the list of environment variables for the current process.

+

The list is NULL terminated and each item in the list is of the +form 'NAME=VALUE'.

+

This is equivalent to direct access to the 'environ' global variable, +except portable.

+

The return value is freshly allocated and it should be freed with +g_strfreev() when it is no longer needed.

+
+

Returns

+

the list of +environment variables.

+

[array zero-terminated=1][transfer full]

+
+

Since: 2.28

+
+
+
+

g_environ_getenv ()

+
const gchar *
+g_environ_getenv (gchar **envp,
+                  const gchar *variable);
+

Returns the value of the environment variable variable + in the +provided list envp +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

envp

an environment +list (eg, as returned from g_get_environ()), or NULL +for an empty environment list.

[allow-none][array zero-terminated=1][transfer none]

variable

the environment variable to get

 
+
+
+

Returns

+

the value of the environment variable, or NULL if +the environment variable is not set in envp +. The returned +string is owned by envp +, and will be freed if variable +is +set or unset again.

+
+

Since: 2.32

+
+
+
+

g_environ_setenv ()

+
gchar **
+g_environ_setenv (gchar **envp,
+                  const gchar *variable,
+                  const gchar *value,
+                  gboolean overwrite);
+

Sets the environment variable variable + in the provided list +envp + to value +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

envp

an +environment list that can be freed using g_strfreev() (e.g., as +returned from g_get_environ()), or NULL for an empty +environment list.

[allow-none][array zero-terminated=1][transfer full]

variable

the environment variable to set, must not contain '='

 

value

the value for to set the variable to

 

overwrite

whether to change the variable if it already exists

 
+
+
+

Returns

+

the +updated environment list. Free it using g_strfreev().

+

[array zero-terminated=1][transfer full]

+
+

Since: 2.32

+
+
+
+

g_environ_unsetenv ()

+
gchar **
+g_environ_unsetenv (gchar **envp,
+                    const gchar *variable);
+

Removes the environment variable variable + from the provided +environment envp +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

envp

an environment +list that can be freed using g_strfreev() (e.g., as returned from g_get_environ()), +or NULL for an empty environment list.

[allow-none][array zero-terminated=1][transfer full]

variable

the environment variable to remove, must not contain '='

 
+
+
+

Returns

+

the +updated environment list. Free it using g_strfreev().

+

[array zero-terminated=1][transfer full]

+
+

Since: 2.32

+
+
+
+

g_getenv ()

+
const gchar *
+g_getenv (const gchar *variable);
+

Returns the value of an environment variable.

+

On UNIX, the name and value are byte strings which might or might not +be in some consistent character set and encoding. On Windows, they are +in UTF-8. +On Windows, in case the environment variable's value contains +references to other environment variables, they are expanded.

+
+

Parameters

+
+++++ + + + + + +

variable

the environment variable to get

 
+
+
+

Returns

+

the value of the environment variable, or NULL if +the environment variable is not found. The returned string +may be overwritten by the next call to g_getenv(), g_setenv() +or g_unsetenv().

+
+
+
+
+

g_setenv ()

+
gboolean
+g_setenv (const gchar *variable,
+          const gchar *value,
+          gboolean overwrite);
+

Sets an environment variable. On UNIX, both the variable's name and +value can be arbitrary byte strings, except that the variable's name +cannot contain '='. On Windows, they should be in UTF-8.

+

Note that on some systems, when variables are overwritten, the memory +used for the previous variables and its value isn't reclaimed.

+

You should be mindful of the fact that environment variable handling +in UNIX is not thread-safe, and your program may crash if one thread +calls g_setenv() while another thread is calling getenv(). (And note +that many functions, such as gettext(), call getenv() internally.) +This function is only safe to use at the very start of your program, +before creating any other threads (or creating objects that create +worker threads of their own).

+

If you need to set up the environment for a child process, you can +use g_get_environ() to get an environment array, modify that with +g_environ_setenv() and g_environ_unsetenv(), and then pass that +array directly to execvpe(), g_spawn_async(), or the like.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

variable

the environment variable to set, must not contain '='.

 

value

the value for to set the variable to.

 

overwrite

whether to change the variable if it already exists.

 
+
+
+

Returns

+

FALSE if the environment variable couldn't be set.

+
+

Since: 2.4

+
+
+
+

g_unsetenv ()

+
void
+g_unsetenv (const gchar *variable);
+

Removes an environment variable from the environment.

+

Note that on some systems, when variables are overwritten, the +memory used for the previous variables and its value isn't reclaimed.

+

You should be mindful of the fact that environment variable handling +in UNIX is not thread-safe, and your program may crash if one thread +calls g_unsetenv() while another thread is calling getenv(). (And note +that many functions, such as gettext(), call getenv() internally.) This +function is only safe to use at the very start of your program, before +creating any other threads (or creating objects that create worker +threads of their own).

+

If you need to set up the environment for a child process, you can +use g_get_environ() to get an environment array, modify that with +g_environ_setenv() and g_environ_unsetenv(), and then pass that +array directly to execvpe(), g_spawn_async(), or the like.

+
+

Parameters

+
+++++ + + + + + +

variable

the environment variable to remove, must not contain '='

 
+
+

Since: 2.4

+
+
+
+

g_listenv ()

+
gchar **
+g_listenv (void);
+

Gets the names of all variables set in the environment.

+

Programs that want to be portable to Windows should typically use +this function and g_getenv() instead of using the environ array +from the C library directly. On Windows, the strings in the environ +array are in system codepage encoding, while in most of the typical +use cases for environment variables in GLib-using programs you want +the UTF-8 encoding that this function and g_getenv() provide.

+
+

Returns

+

a NULL-terminated +list of strings which must be freed with g_strfreev().

+

[array zero-terminated=1][transfer full]

+
+

Since: 2.8

+
+
+
+

g_get_user_name ()

+
const gchar *
+g_get_user_name (void);
+

Gets the user name of the current user. The encoding of the returned +string is system-defined. On UNIX, it might be the preferred file name +encoding, or something else, and there is no guarantee that it is even +consistent on a machine. On Windows, it is always UTF-8.

+
+

Returns

+

the user name of the current user.

+
+
+
+
+

g_get_real_name ()

+
const gchar *
+g_get_real_name (void);
+

Gets the real name of the user. This usually comes from the user's +entry in the passwd file. The encoding of the returned string is +system-defined. (On Windows, it is, however, always UTF-8.) If the +real user name cannot be determined, the string "Unknown" is +returned.

+
+

Returns

+

the user's real name.

+
+
+
+
+

g_get_user_cache_dir ()

+
const gchar *
+g_get_user_cache_dir (void);
+

Returns a base directory in which to store non-essential, cached +data specific to particular user.

+

On UNIX platforms this is determined using the mechanisms described +in the +XDG Base Directory Specification. +In this case the directory retrieved will be XDG_CACHE_HOME.

+

On Windows is the directory that serves as a common repository for +temporary Internet files. A typical path is +C:\Documents and Settings\username\Local Settings\Temporary Internet Files. +See documentation for CSIDL_INTERNET_CACHE.

+
+

Returns

+

a string owned by GLib that must not be modified +or freed.

+
+

Since: 2.6

+
+
+
+

g_get_user_data_dir ()

+
const gchar *
+g_get_user_data_dir (void);
+

Returns a base directory in which to access application data such +as icons that is customized for a particular user.

+

On UNIX platforms this is determined using the mechanisms described +in the +XDG Base Directory Specification. +In this case the directory retrieved will be XDG_DATA_HOME.

+

On Windows this is the folder to use for local (as opposed to +roaming) application data. See documentation for +CSIDL_LOCAL_APPDATA. Note that on Windows it thus is the same as +what g_get_user_config_dir() returns.

+
+

Returns

+

a string owned by GLib that must not be modified +or freed.

+
+

Since: 2.6

+
+
+
+

g_get_user_config_dir ()

+
const gchar *
+g_get_user_config_dir (void);
+

Returns a base directory in which to store user-specific application +configuration information such as user preferences and settings.

+

On UNIX platforms this is determined using the mechanisms described +in the +XDG Base Directory Specification. +In this case the directory retrieved will be XDG_CONFIG_HOME.

+

On Windows this is the folder to use for local (as opposed to +roaming) application data. See documentation for +CSIDL_LOCAL_APPDATA. Note that on Windows it thus is the same as +what g_get_user_data_dir() returns.

+
+

Returns

+

a string owned by GLib that must not be modified +or freed.

+
+

Since: 2.6

+
+
+
+

g_get_user_runtime_dir ()

+
const gchar *
+g_get_user_runtime_dir (void);
+

Returns a directory that is unique to the current user on the local +system.

+

On UNIX platforms this is determined using the mechanisms described +in the +XDG Base Directory Specification. +This is the directory +specified in the XDG_RUNTIME_DIR environment variable. +In the case that this variable is not set, we return the value of +g_get_user_cache_dir(), after verifying that it exists.

+

On Windows this is the folder to use for local (as opposed to +roaming) application data. See documentation for +CSIDL_LOCAL_APPDATA. Note that on Windows it thus is the same as +what g_get_user_config_dir() returns.

+
+

Returns

+

a string owned by GLib that must not be modified or freed.

+
+

Since: 2.28

+
+
+
+

g_get_user_special_dir ()

+
const gchar *
+g_get_user_special_dir (GUserDirectory directory);
+

Returns the full path of a special directory using its logical id.

+

On UNIX this is done using the XDG special user directories. +For compatibility with existing practise, G_USER_DIRECTORY_DESKTOP +falls back to $HOME/Desktop when XDG special user directories have +not been set up.

+

Depending on the platform, the user might be able to change the path +of the special directory without requiring the session to restart; GLib +will not reflect any change once the special directories are loaded.

+
+

Parameters

+
+++++ + + + + + +

directory

the logical id of special directory

 
+
+
+

Returns

+

the path to the specified special directory, or NULL +if the logical id was not found. The returned string is owned by +GLib and should not be modified or freed.

+
+

Since: 2.14

+
+
+
+

g_get_system_data_dirs ()

+
const gchar * const *
+g_get_system_data_dirs (void);
+

Returns an ordered list of base directories in which to access +system-wide application data.

+

On UNIX platforms this is determined using the mechanisms described +in the +XDG Base Directory Specification +In this case the list of directories retrieved will be XDG_DATA_DIRS.

+

On Windows the first elements in the list are the Application Data +and Documents folders for All Users. (These can be determined only +on Windows 2000 or later and are not present in the list on other +Windows versions.) See documentation for CSIDL_COMMON_APPDATA and +CSIDL_COMMON_DOCUMENTS.

+

Then follows the "share" subfolder in the installation folder for +the package containing the DLL that calls this function, if it can +be determined.

+

Finally the list contains the "share" subfolder in the installation +folder for GLib, and in the installation folder for the package the +application's .exe file belongs to.

+

The installation folders above are determined by looking up the +folder where the module (DLL or EXE) in question is located. If the +folder's name is "bin", its parent is used, otherwise the folder +itself.

+

Note that on Windows the returned list can vary depending on where +this function is called.

+
+

Returns

+

a NULL-terminated array of strings owned by GLib that must +not be modified or freed.

+

[array zero-terminated=1][transfer none]

+
+

Since: 2.6

+
+
+
+

g_get_system_config_dirs ()

+
const gchar * const *
+g_get_system_config_dirs (void);
+

Returns an ordered list of base directories in which to access +system-wide configuration information.

+

On UNIX platforms this is determined using the mechanisms described +in the +XDG Base Directory Specification. +In this case the list of directories retrieved will be XDG_CONFIG_DIRS.

+

On Windows is the directory that contains application data for all users. +A typical path is C:\Documents and Settings\All Users\Application Data. +This folder is used for application data that is not user specific. +For example, an application can store a spell-check dictionary, a database +of clip art, or a log file in the CSIDL_COMMON_APPDATA folder. +This information will not roam and is available to anyone using the computer.

+
+

Returns

+

a NULL-terminated array of strings owned by GLib that must +not be modified or freed.

+

[array zero-terminated=1][transfer none]

+
+

Since: 2.6

+
+
+
+

g_reload_user_special_dirs_cache ()

+
void
+g_reload_user_special_dirs_cache (void);
+

Resets the cache used for g_get_user_special_dir(), so +that the latest on-disk version is used. Call this only +if you just changed the data on disk yourself.

+

Due to threadsafety issues this may cause leaking of strings +that were previously returned from g_get_user_special_dir() +that can't be freed. We ensure to only leak the data for +the directories that actually changed value though.

+

Since: 2.22

+
+
+
+

g_get_host_name ()

+
const gchar *
+g_get_host_name (void);
+

Return a name for the machine.

+

The returned name is not necessarily a fully-qualified domain name, +or even present in DNS or some other name service at all. It need +not even be unique on your local network or site, but usually it +is. Callers should not rely on the return value having any specific +properties like uniqueness for security purposes. Even if the name +of the machine is changed while an application is running, the +return value from this function does not change. The returned +string is owned by GLib and should not be modified or freed. If no +name can be determined, a default fixed string "localhost" is +returned.

+
+

Returns

+

the host name of the machine.

+
+

Since: 2.8

+
+
+
+

g_get_home_dir ()

+
const gchar *
+g_get_home_dir (void);
+

Gets the current user's home directory.

+

As with most UNIX tools, this function will return the value of the +HOME environment variable if it is set to an existing absolute path +name, falling back to the passwd file in the case that it is unset.

+

If the path given in HOME is non-absolute, does not exist, or is +not a directory, the result is undefined.

+

Before version 2.36 this function would ignore the HOME environment +variable, taking the value from the passwd database instead. This was +changed to increase the compatibility of GLib with other programs (and +the XDG basedir specification) and to increase testability of programs +based on GLib (by making it easier to run them from test frameworks).

+

If your program has a strong requirement for either the new or the +old behaviour (and if you don't wish to increase your GLib +dependency to ensure that the new behaviour is in effect) then you +should either directly check the HOME environment variable yourself +or unset it before calling any functions in GLib.

+
+

Returns

+

the current user's home directory

+
+
+
+
+

g_get_tmp_dir ()

+
const gchar *
+g_get_tmp_dir (void);
+

Gets the directory to use for temporary files.

+

On UNIX, this is taken from the TMPDIR environment variable. +If the variable is not set, P_tmpdir is +used, as defined by the system C library. Failing that, a +hard-coded default of "/tmp" is returned.

+

On Windows, the TEMP environment variable is used, with the +root directory of the Windows installation (eg: "C:\") used +as a default.

+

The encoding of the returned string is system-defined. On Windows, +it is always UTF-8. The return value is never NULL or the empty +string.

+
+

Returns

+

the directory to use for temporary files.

+
+
+
+
+

g_get_current_dir ()

+
gchar *
+g_get_current_dir (void);
+

Gets the current directory.

+

The returned string should be freed when no longer needed. +The encoding of the returned string is system defined. +On Windows, it is always UTF-8.

+

Since GLib 2.40, this function will return the value of the "PWD" +environment variable if it is set and it happens to be the same as +the current directory. This can make a difference in the case that +the current directory is the target of a symbolic link.

+
+

Returns

+

the current directory

+
+
+
+
+

g_basename ()

+
const gchar *
+g_basename (const gchar *file_name);
+
+

g_basename has been deprecated since version 2.2 and should not be used in newly-written code.

+

Use g_path_get_basename() instead, but notice + that g_path_get_basename() allocates new memory for the + returned string, unlike this function which returns a pointer + into the argument.

+
+

Gets the name of the file without any leading directory +components. It returns a pointer into the given file name +string.

+
+

Parameters

+
+++++ + + + + + +

file_name

the name of the file

 
+
+
+

Returns

+

the name of the file without any leading +directory components

+
+
+
+
+

g_path_is_absolute ()

+
gboolean
+g_path_is_absolute (const gchar *file_name);
+

Returns TRUE if the given file_name + is an absolute file name. +Note that this is a somewhat vague concept on Windows.

+

On POSIX systems, an absolute file name is well-defined. It always +starts from the single root directory. For example "/usr/local".

+

On Windows, the concepts of current drive and drive-specific +current directory introduce vagueness. This function interprets as +an absolute file name one that either begins with a directory +separator such as "\Users\tml" or begins with the root on a drive, +for example "C:\Windows". The first case also includes UNC paths +such as "\myserver\docs\foo". In all cases, either slashes or +backslashes are accepted.

+

Note that a file name relative to the current drive root does not +truly specify a file uniquely over time and across processes, as +the current drive is a per-process value and can be changed.

+

File names relative the current directory on some specific drive, +such as "D:foo/bar", are not interpreted as absolute by this +function, but they obviously are not relative to the normal current +directory as returned by getcwd() or g_get_current_dir() +either. Such paths should be avoided, or need to be handled using +Windows-specific code.

+
+

Parameters

+
+++++ + + + + + +

file_name

a file name

 
+
+
+

Returns

+

TRUE if file_name +is absolute

+
+
+
+
+

g_path_skip_root ()

+
const gchar *
+g_path_skip_root (const gchar *file_name);
+

Returns a pointer into file_name + after the root component, +i.e. after the "/" in UNIX or "C:\" under Windows. If file_name + +is not an absolute path it returns NULL.

+
+

Parameters

+
+++++ + + + + + +

file_name

a file name

 
+
+
+

Returns

+

a pointer into file_name +after the root component.

+

[nullable]

+
+
+
+
+

g_path_get_basename ()

+
gchar *
+g_path_get_basename (const gchar *file_name);
+

Gets the last component of the filename.

+

If file_name + ends with a directory separator it gets the component +before the last slash. If file_name + consists only of directory +separators (and on Windows, possibly a drive letter), a single +separator is returned. If file_name + is empty, it gets ".".

+
+

Parameters

+
+++++ + + + + + +

file_name

the name of the file

 
+
+
+

Returns

+

a newly allocated string containing the last +component of the filename

+
+
+
+
+

g_path_get_dirname ()

+
gchar *
+g_path_get_dirname (const gchar *file_name);
+

Gets the directory components of a file name.

+

If the file name has no directory components "." is returned. +The returned string should be freed when no longer needed.

+
+

Parameters

+
+++++ + + + + + +

file_name

the name of the file

 
+
+
+

Returns

+

the directory components of the file

+
+
+
+
+

g_build_filename ()

+
gchar *
+g_build_filename (const gchar *first_element,
+                  ...);
+

Creates a filename from a series of elements using the correct +separator for filenames.

+

On Unix, this function behaves identically to g_build_path +(G_DIR_SEPARATOR_S, first_element, ....).

+

On Windows, it takes into account that either the backslash +(\ or slash (/) can be used as separator in filenames, but +otherwise behaves as on UNIX. When file pathname separators need +to be inserted, the one that last previously occurred in the +parameters (reading from left to right) is used.

+

No attempt is made to force the resulting filename to be an absolute +path. If the first element is a relative path, the result will +be a relative path.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

first_element

the first element in the path

 

...

remaining elements in path, terminated by NULL

 
+
+
+

Returns

+

a newly-allocated string that must be freed with g_free().

+
+
+
+
+

g_build_filenamev ()

+
gchar *
+g_build_filenamev (gchar **args);
+

Behaves exactly like g_build_filename(), but takes the path elements +as a string array, instead of varargs. This function is mainly +meant for language bindings.

+
+

Parameters

+
+++++ + + + + + +

args

NULL-terminated array of strings containing the path elements.

[array zero-terminated=1]
+
+
+

Returns

+

a newly-allocated string that must be freed with g_free().

+
+

Since: 2.8

+
+
+
+

g_build_path ()

+
gchar *
+g_build_path (const gchar *separator,
+              const gchar *first_element,
+              ...);
+

Creates a path from a series of elements using separator + as the +separator between elements. At the boundary between two elements, +any trailing occurrences of separator in the first element, or +leading occurrences of separator in the second element are removed +and exactly one copy of the separator is inserted.

+

Empty elements are ignored.

+

The number of leading copies of the separator on the result is +the same as the number of leading copies of the separator on +the first non-empty element.

+

The number of trailing copies of the separator on the result is +the same as the number of trailing copies of the separator on +the last non-empty element. (Determination of the number of +trailing copies is done without stripping leading copies, so +if the separator is ABA, then ABABA has 1 trailing copy.)

+

However, if there is only a single non-empty element, and there +are no characters in that element not part of the leading or +trailing separators, then the result is exactly the original value +of that element.

+

Other than for determination of the number of leading and trailing +copies of the separator, elements consisting only of copies +of the separator are ignored.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

separator

a string used to separator the elements of the path.

 

first_element

the first element in the path

 

...

remaining elements in path, terminated by NULL

 
+
+
+

Returns

+

a newly-allocated string that must be freed with g_free().

+
+
+
+
+

g_build_pathv ()

+
gchar *
+g_build_pathv (const gchar *separator,
+               gchar **args);
+

Behaves exactly like g_build_path(), but takes the path elements +as a string array, instead of varargs. This function is mainly +meant for language bindings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

separator

a string used to separator the elements of the path.

 

args

NULL-terminated array of strings containing the path elements.

[array zero-terminated=1]
+
+
+

Returns

+

a newly-allocated string that must be freed with g_free().

+
+

Since: 2.8

+
+
+
+

g_format_size ()

+
gchar *
+g_format_size (guint64 size);
+

Formats a size (for example the size of a file) into a human readable +string. Sizes are rounded to the nearest size prefix (kB, MB, GB) +and are displayed rounded to the nearest tenth. E.g. the file size +3292528 bytes will be converted into the string "3.2 MB".

+

The prefix units base is 1000 (i.e. 1 kB is 1000 bytes).

+

This string should be freed with g_free() when not needed any longer.

+

See g_format_size_full() for more options about how the size might be +formatted.

+
+

Parameters

+
+++++ + + + + + +

size

a size in bytes

 
+
+
+

Returns

+

a newly-allocated formatted string containing a human readable +file size

+
+

Since: 2.30

+
+
+
+

g_format_size_full ()

+
gchar *
+g_format_size_full (guint64 size,
+                    GFormatSizeFlags flags);
+

Formats a size.

+

This function is similar to g_format_size() but allows for flags +that modify the output. See GFormatSizeFlags.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

size

a size in bytes

 

flags

GFormatSizeFlags to modify the output

 
+
+
+

Returns

+

a newly-allocated formatted string containing a human +readable file size

+
+

Since: 2.30

+
+
+
+

g_format_size_for_display ()

+
gchar *
+g_format_size_for_display (goffset size);
+
+

g_format_size_for_display has been deprecated since version 2.30 and should not be used in newly-written code.

+

This function is broken due to its use of SI + suffixes to denote IEC units. Use g_format_size() instead.

+
+

Formats a size (for example the size of a file) into a human +readable string. Sizes are rounded to the nearest size prefix +(KB, MB, GB) and are displayed rounded to the nearest tenth. +E.g. the file size 3292528 bytes will be converted into the +string "3.1 MB".

+

The prefix units base is 1024 (i.e. 1 KB is 1024 bytes).

+

This string should be freed with g_free() when not needed any longer.

+
+

Parameters

+
+++++ + + + + + +

size

a size in bytes

 
+
+
+

Returns

+

a newly-allocated formatted string containing a human +readable file size

+
+

Since: 2.16

+
+
+
+

g_find_program_in_path ()

+
gchar *
+g_find_program_in_path (const gchar *program);
+

Locates the first executable named program + in the user's path, in the +same way that execvp() would locate it. Returns an allocated string +with the absolute path name, or NULL if the program is not found in +the path. If program + is already an absolute path, returns a copy of +program + if program + exists and is executable, and NULL otherwise.

+

On Windows, if program + does not have a file type suffix, tries +with the suffixes .exe, .cmd, .bat and .com, and the suffixes in +the PATHEXT environment variable.

+

On Windows, it looks for the file in the same way as CreateProcess() +would. This means first in the directory where the executing +program was loaded from, then in the current directory, then in the +Windows 32-bit system directory, then in the Windows directory, and +finally in the directories in the PATH environment variable. If +the program is found, the return value contains the full name +including the type suffix.

+
+

Parameters

+
+++++ + + + + + +

program

a program name in the GLib file name encoding

 
+
+
+

Returns

+

a newly-allocated string with the absolute path, or NULL

+
+
+
+
+

g_bit_nth_lsf()

+
#define             g_bit_nth_lsf(mask, nth_bit)
+

Find the position of the first bit set in mask +, searching +from (but not including) nth_bit + upwards. Bits are numbered +from 0 (least significant) to sizeof(gulong) * 8 - 1 (31 or 63, +usually). To start searching from the 0th bit, set nth_bit + to -1.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mask

a gulong containing flags

 

nth_bit

the index of the bit to start the search from

 
+
+
+

Returns

+

the index of the first bit set which is higher than nth_bit +, or -1 +if no higher bits are set

+
+
+
+
+

g_bit_nth_msf()

+
#define             g_bit_nth_msf(mask, nth_bit)
+

Find the position of the first bit set in mask +, searching +from (but not including) nth_bit + downwards. Bits are numbered +from 0 (least significant) to sizeof(gulong) * 8 - 1 (31 or 63, +usually). To start searching from the last bit, set nth_bit + to +-1 or GLIB_SIZEOF_LONG * 8.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

mask

a gulong containing flags

 

nth_bit

the index of the bit to start the search from

 
+
+
+

Returns

+

the index of the first bit set which is lower than nth_bit +, or -1 +if no lower bits are set

+
+
+
+
+

g_bit_storage()

+
#define             g_bit_storage(number)
+

Gets the number of bits used to hold number +, +e.g. if number + is 4, 3 bits are needed.

+
+

Parameters

+
+++++ + + + + + +

number

a guint

 
+
+
+

Returns

+

the number of bits used to hold number +

+
+
+
+
+

g_spaced_primes_closest ()

+
guint
+g_spaced_primes_closest (guint num);
+

Gets the smallest prime number from a built-in array of primes which +is larger than num +. This is used within GLib to calculate the optimum +size of a GHashTable.

+

The built-in array of primes ranges from 11 to 13845163 such that +each prime is approximately 1.5-2 times the previous prime.

+
+

Parameters

+
+++++ + + + + + +

num

a guint

 
+
+
+

Returns

+

the smallest prime number from a built-in array of primes +which is larger than num +

+
+
+
+
+

g_atexit ()

+
void
+g_atexit (GVoidFunc func);
+
+

g_atexit has been deprecated since version 2.32 and should not be used in newly-written code.

+

It is best to avoid g_atexit().

+
+

Specifies a function to be called at normal program termination.

+

Since GLib 2.8.2, on Windows g_atexit() actually is a preprocessor +macro that maps to a call to the atexit() function in the C +library. This means that in case the code that calls g_atexit(), +i.e. atexit(), is in a DLL, the function will be called when the +DLL is detached from the program. This typically makes more sense +than that the function is called when the GLib DLL is detached, +which happened earlier when g_atexit() was a function in the GLib +DLL.

+

The behaviour of atexit() in the context of dynamically loaded +modules is not formally specified and varies wildly.

+

On POSIX systems, calling g_atexit() (or atexit()) in a dynamically +loaded module which is unloaded before the program terminates might +well cause a crash at program exit.

+

Some POSIX systems implement atexit() like Windows, and have each +dynamically loaded module maintain an own atexit chain that is +called when the module is unloaded.

+

On other POSIX systems, before a dynamically loaded module is +unloaded, the registered atexit functions (if any) residing in that +module are called, regardless where the code that registered them +resided. This is presumably the most robust approach.

+

As can be seen from the above, for portability it's best to avoid +calling g_atexit() (or atexit()) except in the main executable of a +program.

+
+

Parameters

+
+++++ + + + + + +

func

the function to call on normal program termination.

[scope async]
+
+
+
+
+

g_parse_debug_string ()

+
guint
+g_parse_debug_string (const gchar *string,
+                      const GDebugKey *keys,
+                      guint nkeys);
+

Parses a string containing debugging options +into a guint containing bit flags. This is used +within GDK and GTK+ to parse the debug options passed on the +command line or through environment variables.

+

If string + is equal to "all", all flags are set. Any flags +specified along with "all" in string + are inverted; thus, +"all,foo,bar" or "foo,bar,all" sets all flags except those +corresponding to "foo" and "bar".

+

If string + is equal to "help", all the available keys in keys + +are printed out to standard error.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a list of debug options separated by colons, spaces, or +commas, or NULL.

[allow-none]

keys

pointer to an array of GDebugKey which associate +strings with bit flags.

[array length=nkeys]

nkeys

the number of GDebugKeys in the array.

 
+
+
+

Returns

+

the combined set of bit flags.

+
+
+
+
+

GVoidFunc ()

+
void
+(*GVoidFunc) (void);
+

GVoidFunc is deprecated and should not be used in newly-written code.

+

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().

+
+
+
+

GFreeFunc ()

+
void
+(*GFreeFunc) (gpointer data);
+

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+.

+
+

Parameters

+
+++++ + + + + + +

data

a data pointer

 
+
+
+
+
+

g_qsort_with_data ()

+
void
+g_qsort_with_data (gconstpointer pbase,
+                   gint total_elems,
+                   gsize size,
+                   GCompareDataFunc compare_func,
+                   gpointer user_data);
+

This is just like the standard C qsort() function, but +the comparison routine accepts a user data argument.

+

This is guaranteed to be a stable sort since version 2.32.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

pbase

start of array to sort.

[not nullable]

total_elems

elements in the array

 

size

size of each element

 

compare_func

function to compare elements

 

user_data

data to pass to compare_func +

 
+
+
+
+
+

g_nullify_pointer ()

+
void
+g_nullify_pointer (gpointer *nullify_location);
+

Set the pointer at the specified location to NULL.

+
+

Parameters

+
+++++ + + + + + +

nullify_location

the memory address of the pointer.

[not nullable]
+
+
+
+
+

Types and Values

+
+

enum GUserDirectory

+

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.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

+
 
+
+

Since: 2.14

+
+
+
+

g_dirname

+
#define             g_dirname
+
+

g_dirname is deprecated and should not be used in newly-written code.

+

use g_path_get_dirname() instead

+
+

Gets the directory components of a file name.

+

If the file name has no directory components "." is returned. +The returned string should be freed when no longer needed.

+
+

Parameters

+
+++++ + + + + + +

file_name

the name of the file

 
+
+
+

Returns

+

the directory components of the file

+
+
+
+
+

enum GFormatSizeFlags

+

Flags to modify the format of the string returned by g_format_size_full().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

G_FORMAT_SIZE_DEFAULT

+

behave the same as g_format_size()

+
 

G_FORMAT_SIZE_LONG_FORMAT

+

include the exact number of bytes as part + of the returned string. For example, "45.6 kB (45,612 bytes)".

+
 

G_FORMAT_SIZE_IEC_UNITS

+

use IEC (base 1024) units with "KiB"-style + suffixes. IEC units should only be used for reporting things with + a strong "power of 2" basis, like RAM sizes or RAID stripe sizes. + Network and storage sizes should be reported in the normal SI units.

+
 
+
+
+
+
+

struct GDebugKey

+
struct GDebugKey {
+  const gchar *key;
+  guint	       value;
+};
+
+

Associates a string with a bit flag. +Used in g_parse_debug_string().

+
+

Members

+
+++++ + + + + + + + + + + + + +

const gchar *key;

the string

 

guint value;

the flag

 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-N-ary-Trees.html b/docs/reference/glib/html/glib-N-ary-Trees.html new file mode 100644 index 0000000..90688ed --- /dev/null +++ b/docs/reference/glib/html/glib-N-ary-Trees.html @@ -0,0 +1,1961 @@ + + + + +N-ary Trees: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

N-ary Trees

+

N-ary Trees — trees of data with any number of branches

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GNode * + +g_node_new () +
+GNode * + +g_node_copy () +
+gpointer + +(*GCopyFunc) () +
+GNode * + +g_node_copy_deep () +
+GNode * + +g_node_insert () +
+GNode * + +g_node_insert_before () +
+GNode * + +g_node_insert_after () +
#define +g_node_append() +
+GNode * + +g_node_prepend () +
#define +g_node_insert_data() +
#define +g_node_insert_data_after() +
#define +g_node_insert_data_before() +
#define +g_node_append_data() +
#define +g_node_prepend_data() +
+void + +g_node_reverse_children () +
+void + +g_node_traverse () +
+gboolean + +(*GNodeTraverseFunc) () +
+void + +g_node_children_foreach () +
+void + +(*GNodeForeachFunc) () +
+GNode * + +g_node_get_root () +
+GNode * + +g_node_find () +
+GNode * + +g_node_find_child () +
+gint + +g_node_child_index () +
+gint + +g_node_child_position () +
#define +g_node_first_child() +
+GNode * + +g_node_last_child () +
+GNode * + +g_node_nth_child () +
+GNode * + +g_node_first_sibling () +
#define +g_node_next_sibling() +
#define +g_node_prev_sibling() +
+GNode * + +g_node_last_sibling () +
#define +G_NODE_IS_LEAF() +
#define +G_NODE_IS_ROOT() +
+guint + +g_node_depth () +
+guint + +g_node_n_nodes () +
+guint + +g_node_n_children () +
+gboolean + +g_node_is_ancestor () +
+guint + +g_node_max_height () +
+void + +g_node_unlink () +
+void + +g_node_destroy () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
structGNode
enumGTraverseType
enumGTraverseFlags
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The GNode struct and its associated functions provide a N-ary tree +data structure, where nodes in the tree can contain arbitrary data.

+

To create a new tree use g_node_new().

+

To insert a node into a tree use g_node_insert(), +g_node_insert_before(), g_node_append() and g_node_prepend().

+

To create a new node and insert it into a tree use +g_node_insert_data(), g_node_insert_data_after(), +g_node_insert_data_before(), g_node_append_data() +and g_node_prepend_data().

+

To reverse the children of a node use g_node_reverse_children().

+

To find a node use g_node_get_root(), g_node_find(), +g_node_find_child(), g_node_child_index(), g_node_child_position(), +g_node_first_child(), g_node_last_child(), g_node_nth_child(), +g_node_first_sibling(), g_node_prev_sibling(), g_node_next_sibling() +or g_node_last_sibling().

+

To get information about a node or tree use G_NODE_IS_LEAF(), +G_NODE_IS_ROOT(), g_node_depth(), g_node_n_nodes(), +g_node_n_children(), g_node_is_ancestor() or g_node_max_height().

+

To traverse a tree, calling a function for each node visited in the +traversal, use g_node_traverse() or g_node_children_foreach().

+

To remove a node or subtree from a tree use g_node_unlink() or +g_node_destroy().

+
+
+

Functions

+
+

g_node_new ()

+
GNode *
+g_node_new (gpointer data);
+

Creates a new GNode containing the given data. +Used to create the first node in a tree.

+
+

Parameters

+
+++++ + + + + + +

data

the data of the new node

 
+
+
+

Returns

+

a new GNode

+
+
+
+
+

g_node_copy ()

+
GNode *
+g_node_copy (GNode *node);
+

Recursively copies a GNode (but does not deep-copy the data inside the +nodes, see g_node_copy_deep() if you need that).

+
+

Parameters

+
+++++ + + + + + +

node

a GNode

 
+
+
+

Returns

+

a new GNode containing the same data pointers

+
+
+
+
+

GCopyFunc ()

+
gpointer
+(*GCopyFunc) (gconstpointer src,
+              gpointer data);
+

A function of this signature is used to copy the node data +when doing a deep-copy of a tree.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

src

A pointer to the data which should be copied.

[not nullable]

data

Additional data

 
+
+
+

Returns

+

A pointer to the copy.

+

[not nullable]

+
+

Since: 2.4

+
+
+
+

g_node_copy_deep ()

+
GNode *
+g_node_copy_deep (GNode *node,
+                  GCopyFunc copy_func,
+                  gpointer data);
+

Recursively copies a GNode and its data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

node

a GNode

 

copy_func

the function which is called to copy the data inside each node, +or NULL to use the original data.

 

data

data to pass to copy_func +

 
+
+
+

Returns

+

a new GNode containing copies of the data in node +.

+
+

Since: 2.4

+
+
+
+

g_node_insert ()

+
GNode *
+g_node_insert (GNode *parent,
+               gint position,
+               GNode *node);
+

Inserts a GNode beneath the parent at the given position.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

parent

the GNode to place node +under

 

position

the position to place node +at, with respect to its siblings +If position is -1, node +is inserted as the last child of parent +

 

node

the GNode to insert

 
+
+
+

Returns

+

the inserted GNode

+
+
+
+
+

g_node_insert_before ()

+
GNode *
+g_node_insert_before (GNode *parent,
+                      GNode *sibling,
+                      GNode *node);
+

Inserts a GNode beneath the parent before the given sibling.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

parent

the GNode to place node +under

 

sibling

the sibling GNode to place node +before. +If sibling is NULL, the node is inserted as the last child of parent +.

 

node

the GNode to insert

 
+
+
+

Returns

+

the inserted GNode

+
+
+
+
+

g_node_insert_after ()

+
GNode *
+g_node_insert_after (GNode *parent,
+                     GNode *sibling,
+                     GNode *node);
+

Inserts a GNode beneath the parent after the given sibling.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

parent

the GNode to place node +under

 

sibling

the sibling GNode to place node +after. +If sibling is NULL, the node is inserted as the first child of parent +.

 

node

the GNode to insert

 
+
+
+

Returns

+

the inserted GNode

+
+
+
+
+

g_node_append()

+
#define             g_node_append(parent, node)
+

Inserts a GNode as the last child of the given parent.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

parent

the GNode to place the new GNode under

 

node

the GNode to insert

 
+
+
+

Returns

+

the inserted GNode

+
+
+
+
+

g_node_prepend ()

+
GNode *
+g_node_prepend (GNode *parent,
+                GNode *node);
+

Inserts a GNode as the first child of the given parent.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

parent

the GNode to place the new GNode under

 

node

the GNode to insert

 
+
+
+

Returns

+

the inserted GNode

+
+
+
+
+

g_node_insert_data()

+
#define             g_node_insert_data(parent, position, data)
+

Inserts a new GNode at the given position.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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

 
+
+
+

Returns

+

the new GNode

+
+
+
+
+

g_node_insert_data_after()

+
#define             g_node_insert_data_after(parent, sibling, data)
+

Inserts a new GNode after the given sibling.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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

 
+
+
+

Returns

+

the new GNode

+
+
+
+
+

g_node_insert_data_before()

+
#define             g_node_insert_data_before(parent, sibling, data)
+

Inserts a new GNode before the given sibling.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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

 
+
+
+

Returns

+

the new GNode

+
+
+
+
+

g_node_append_data()

+
#define             g_node_append_data(parent, data)
+

Inserts a new GNode as the last child of the given parent.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

parent

the GNode to place the new GNode under

 

data

the data for the new GNode

 
+
+
+

Returns

+

the new GNode

+
+
+
+
+

g_node_prepend_data()

+
#define             g_node_prepend_data(parent, data)
+

Inserts a new GNode as the first child of the given parent.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

parent

the GNode to place the new GNode under

 

data

the data for the new GNode

 
+
+
+

Returns

+

the new GNode

+
+
+
+
+

g_node_reverse_children ()

+
void
+g_node_reverse_children (GNode *node);
+

Reverses the order of the children of a GNode. +(It doesn't change the order of the grandchildren.)

+
+

Parameters

+
+++++ + + + + + +

node

a GNode.

 
+
+
+
+
+

g_node_traverse ()

+
void
+g_node_traverse (GNode *root,
+                 GTraverseType order,
+                 GTraverseFlags flags,
+                 gint max_depth,
+                 GNodeTraverseFunc func,
+                 gpointer data);
+

Traverses a tree starting at the given root GNode. +It calls the given function for each node visited. +The traversal can be halted at any point by returning TRUE from func +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

root

the root GNode of the tree to traverse

 

order

the order in which nodes are visited - G_IN_ORDER, +G_PRE_ORDER, G_POST_ORDER, or G_LEVEL_ORDER.

 

flags

which types of children are to be visited, one of +G_TRAVERSE_ALL, G_TRAVERSE_LEAVES and G_TRAVERSE_NON_LEAVES

 

max_depth

the maximum depth of the traversal. Nodes below this +depth will not be visited. If max_depth is -1 all nodes in +the tree are visited. If depth is 1, only the root is visited. +If depth is 2, the root and its children are visited. And so on.

 

func

the function to call for each visited GNode

 

data

user data to pass to the function

 
+
+
+
+
+

GNodeTraverseFunc ()

+
gboolean
+(*GNodeTraverseFunc) (GNode *node,
+                      gpointer data);
+

Specifies the type of function passed to g_node_traverse(). The +function is called with each of the nodes visited, together with the +user data passed to g_node_traverse(). If the function returns +TRUE, then the traversal is stopped.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

node

a GNode.

 

data

user data passed to g_node_traverse().

 
+
+
+

Returns

+

TRUE to stop the traversal.

+
+
+
+
+

g_node_children_foreach ()

+
void
+g_node_children_foreach (GNode *node,
+                         GTraverseFlags flags,
+                         GNodeForeachFunc func,
+                         gpointer data);
+

Calls a function for each of the children of a GNode. +Note that it doesn't descend beneath the child nodes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

node

a GNode

 

flags

which types of children are to be visited, one of +G_TRAVERSE_ALL, G_TRAVERSE_LEAVES and G_TRAVERSE_NON_LEAVES

 

func

the function to call for each visited node

 

data

user data to pass to the function

 
+
+
+
+
+

GNodeForeachFunc ()

+
void
+(*GNodeForeachFunc) (GNode *node,
+                     gpointer data);
+

Specifies the type of function passed to g_node_children_foreach(). +The function is called with each child node, together with the user +data passed to g_node_children_foreach().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

node

a GNode.

 

data

user data passed to g_node_children_foreach().

 
+
+
+
+
+

g_node_get_root ()

+
GNode *
+g_node_get_root (GNode *node);
+

Gets the root of a tree.

+
+

Parameters

+
+++++ + + + + + +

node

a GNode

 
+
+
+

Returns

+

the root of the tree

+
+
+
+
+

g_node_find ()

+
GNode *
+g_node_find (GNode *root,
+             GTraverseType order,
+             GTraverseFlags flags,
+             gpointer data);
+

Finds a GNode in a tree.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

root

the root GNode of the tree to search

 

order

the order in which nodes are visited - G_IN_ORDER, +G_PRE_ORDER, G_POST_ORDER, or G_LEVEL_ORDER

 

flags

which types of children are to be searched, one of +G_TRAVERSE_ALL, G_TRAVERSE_LEAVES and G_TRAVERSE_NON_LEAVES

 

data

the data to find

 
+
+
+

Returns

+

the found GNode, or NULL if the data is not found

+
+
+
+
+

g_node_find_child ()

+
GNode *
+g_node_find_child (GNode *node,
+                   GTraverseFlags flags,
+                   gpointer data);
+

Finds the first child of a GNode with the given data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

node

a GNode

 

flags

which types of children are to be searched, one of +G_TRAVERSE_ALL, G_TRAVERSE_LEAVES and G_TRAVERSE_NON_LEAVES

 

data

the data to find

 
+
+
+

Returns

+

the found child GNode, or NULL if the data is not found

+
+
+
+
+

g_node_child_index ()

+
gint
+g_node_child_index (GNode *node,
+                    gpointer data);
+

Gets the position of the first child of a GNode +which contains the given data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

node

a GNode

 

data

the data to find

 
+
+
+

Returns

+

the index of the child of node +which contains +data +, or -1 if the data is not found

+
+
+
+
+

g_node_child_position ()

+
gint
+g_node_child_position (GNode *node,
+                       GNode *child);
+

Gets the position of a GNode with respect to its siblings. +child + must be a child of node +. The first child is numbered 0, +the second 1, and so on.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

node

a GNode

 

child

a child of node +

 
+
+
+

Returns

+

the position of child +with respect to its siblings

+
+
+
+
+

g_node_first_child()

+
#define             g_node_first_child(node)
+

Gets the first child of a GNode.

+
+

Parameters

+
+++++ + + + + + +

node

a GNode

 
+
+
+

Returns

+

the first child of node +, or NULL if node +is NULL +or has no children

+
+
+
+
+

g_node_last_child ()

+
GNode *
+g_node_last_child (GNode *node);
+

Gets the last child of a GNode.

+
+

Parameters

+
+++++ + + + + + +

node

a GNode (must not be NULL)

 
+
+
+

Returns

+

the last child of node +, or NULL if node +has no children

+
+
+
+
+

g_node_nth_child ()

+
GNode *
+g_node_nth_child (GNode *node,
+                  guint n);
+

Gets a child of a GNode, using the given index. +The first child is at index 0. If the index is +too big, NULL is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

node

a GNode

 

n

the index of the desired child

 
+
+
+

Returns

+

the child of node +at index n +

+
+
+
+
+

g_node_first_sibling ()

+
GNode *
+g_node_first_sibling (GNode *node);
+

Gets the first sibling of a GNode. +This could possibly be the node itself.

+
+

Parameters

+
+++++ + + + + + +

node

a GNode

 
+
+
+

Returns

+

the first sibling of node +

+
+
+
+
+

g_node_next_sibling()

+
#define             g_node_next_sibling(node)
+

Gets the next sibling of a GNode.

+
+

Parameters

+
+++++ + + + + + +

node

a GNode

 
+
+
+

Returns

+

the next sibling of node +, or NULL if node +is the last node +or NULL

+
+
+
+
+

g_node_prev_sibling()

+
#define             g_node_prev_sibling(node)
+

Gets the previous sibling of a GNode.

+
+

Parameters

+
+++++ + + + + + +

node

a GNode

 
+
+
+

Returns

+

the previous sibling of node +, or NULL if node +is the first +node or NULL

+
+
+
+
+

g_node_last_sibling ()

+
GNode *
+g_node_last_sibling (GNode *node);
+

Gets the last sibling of a GNode. +This could possibly be the node itself.

+
+

Parameters

+
+++++ + + + + + +

node

a GNode

 
+
+
+

Returns

+

the last sibling of node +

+
+
+
+
+

G_NODE_IS_LEAF()

+
#define	 G_NODE_IS_LEAF(node) (((GNode*) (node))->children == NULL)
+
+

Returns TRUE if a GNode is a leaf node.

+
+

Parameters

+
+++++ + + + + + +

node

a GNode

 
+
+
+

Returns

+

TRUE if the GNode is a leaf node +(i.e. it has no children)

+
+
+
+
+

G_NODE_IS_ROOT()

+
#define             G_NODE_IS_ROOT(node)
+

Returns TRUE if a GNode is the root of a tree.

+
+

Parameters

+
+++++ + + + + + +

node

a GNode

 
+
+
+

Returns

+

TRUE if the GNode is the root of a tree +(i.e. it has no parent or siblings)

+
+
+
+
+

g_node_depth ()

+
guint
+g_node_depth (GNode *node);
+

Gets the depth of a GNode.

+

If node + is NULL the depth is 0. The root node has a depth of 1. +For the children of the root node the depth is 2. And so on.

+
+

Parameters

+
+++++ + + + + + +

node

a GNode

 
+
+
+

Returns

+

the depth of the GNode

+
+
+
+
+

g_node_n_nodes ()

+
guint
+g_node_n_nodes (GNode *root,
+                GTraverseFlags flags);
+

Gets the number of nodes in a tree.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

root

a GNode

 

flags

which types of children are to be counted, one of +G_TRAVERSE_ALL, G_TRAVERSE_LEAVES and G_TRAVERSE_NON_LEAVES

 
+
+
+

Returns

+

the number of nodes in the tree

+
+
+
+
+

g_node_n_children ()

+
guint
+g_node_n_children (GNode *node);
+

Gets the number of children of a GNode.

+
+

Parameters

+
+++++ + + + + + +

node

a GNode

 
+
+
+

Returns

+

the number of children of node +

+
+
+
+
+

g_node_is_ancestor ()

+
gboolean
+g_node_is_ancestor (GNode *node,
+                    GNode *descendant);
+

Returns TRUE if node + is an ancestor of descendant +. +This is true if node is the parent of descendant +, +or if node is the grandparent of descendant + etc.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

node

a GNode

 

descendant

a GNode

 
+
+
+

Returns

+

TRUE if node +is an ancestor of descendant +

+
+
+
+
+

g_node_max_height ()

+
guint
+g_node_max_height (GNode *root);
+

Gets the maximum height of all branches beneath a GNode. +This is the maximum distance from the GNode to all leaf nodes.

+

If root + is NULL, 0 is returned. If root + has no children, +1 is returned. If root + has children, 2 is returned. And so on.

+
+

Parameters

+
+++++ + + + + + +

root

a GNode

 
+
+
+

Returns

+

the maximum height of the tree beneath root +

+
+
+
+
+

g_node_unlink ()

+
void
+g_node_unlink (GNode *node);
+

Unlinks a GNode from a tree, resulting in two separate trees.

+
+

Parameters

+
+++++ + + + + + +

node

the GNode to unlink, which becomes the root of a new tree

 
+
+
+
+
+

g_node_destroy ()

+
void
+g_node_destroy (GNode *root);
+

Removes root + and its children from the tree, freeing any memory +allocated.

+
+

Parameters

+
+++++ + + + + + +

root

the root of the tree/subtree to destroy

 
+
+
+
+
+

Types and Values

+
+

struct GNode

+
struct GNode {
+  gpointer data;
+  GNode	  *next;
+  GNode	  *prev;
+  GNode	  *parent;
+  GNode	  *children;
+};
+
+

The GNode struct represents one node in a n-ary tree.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

gpointer data;

contains the actual data of the node.

 

GNode *next;

points to the node's next sibling (a sibling is another +GNode with the same parent).

 

GNode *prev;

points to the node's previous sibling.

 

GNode *parent;

points to the parent of the GNode, or is NULL if the +GNode is the root of the tree.

 

GNode *children;

points to the first child of the GNode. The other +children are accessed by using the next +pointer of each +child.

 
+
+
+
+
+

enum GTraverseType

+

Specifies the type of traveral performed by g_tree_traverse(), +g_node_traverse() and g_node_find(). The different orders are +illustrated here:

+
    +
  • In order: A, B, C, D, E, F, G, H, I +

  • +
  • Pre order: F, B, A, D, C, E, G, I, H +

  • +
  • Post order: A, C, E, D, B, H, I, G, F +

  • +
  • Level order: F, B, G, A, D, I, C, E, H +

  • +
+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

G_IN_ORDER

+

vists a node's left child first, then the node itself, + then its right child. This is the one to use if you + want the output sorted according to the compare + function.

+
 

G_PRE_ORDER

+

visits a node, then its children.

+
 

G_POST_ORDER

+

visits the node's children, then the node itself.

+
 

G_LEVEL_ORDER

+

is not implemented for + balanced binary trees. + For n-ary trees, it + vists the root node first, then its children, then + its grandchildren, and so on. Note that this is less + efficient than the other orders.

+
 
+
+
+
+
+

enum GTraverseFlags

+

Specifies which nodes are visited during several of the tree +functions, including g_node_traverse() and g_node_find().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_TRAVERSE_LEAVES

+

only leaf nodes should be visited. This name has + been introduced in 2.6, for older version use + G_TRAVERSE_LEAFS.

+
 

G_TRAVERSE_NON_LEAVES

+

only non-leaf nodes should be visited. This + name has been introduced in 2.6, for older + version use G_TRAVERSE_NON_LEAFS.

+
 

G_TRAVERSE_ALL

+

all nodes should be visited.

+
 

G_TRAVERSE_MASK

+

a mask of all traverse flags.

+
 

G_TRAVERSE_LEAFS

+

identical to G_TRAVERSE_LEAVES.

+
 

G_TRAVERSE_NON_LEAFS

+

identical to G_TRAVERSE_NON_LEAVES.

+
 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Numerical-Definitions.html b/docs/reference/glib/html/glib-Numerical-Definitions.html new file mode 100644 index 0000000..4d00a99 --- /dev/null +++ b/docs/reference/glib/html/glib-Numerical-Definitions.html @@ -0,0 +1,232 @@ + + + + +Numerical Definitions: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Numerical Definitions

+

Numerical Definitions — mathematical constants, and floating point decomposition

+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#defineG_IEEE754_FLOAT_BIAS
#defineG_IEEE754_DOUBLE_BIAS
unionGFloatIEEE754
unionGDoubleIEEE754
#defineG_E
#defineG_LN2
#defineG_LN10
#defineG_PI
#defineG_PI_2
#defineG_PI_4
#defineG_SQRT2
#defineG_LOG_2_BASE_10
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GLib offers mathematical constants such as G_PI for the value of pi; +many platforms have these in the C library, but some don't, the GLib +versions always exist.

+

The GFloatIEEE754 and GDoubleIEEE754 unions are used to access the +sign, mantissa and exponent of IEEE floats and doubles. These unions are +defined as appropriate for a given platform. IEEE floats and doubles are +supported (used for storage) by at least Intel, PPC and Sparc. See +IEEE 754-2008 +for more information about IEEE number formats.

+
+
+

Functions

+

+
+
+

Types and Values

+
+

G_IEEE754_FLOAT_BIAS

+
#define G_IEEE754_FLOAT_BIAS (127)
+
+

The bias by which exponents in single-precision floats are offset.

+
+
+
+

G_IEEE754_DOUBLE_BIAS

+
#define G_IEEE754_DOUBLE_BIAS (1023)
+
+

The bias by which exponents in double-precision floats are offset.

+
+
+
+

union GFloatIEEE754

+

The GFloatIEEE754 and GDoubleIEEE754 unions are used to access the sign, +mantissa and exponent of IEEE floats and doubles. These unions are defined +as appropriate for a given platform. IEEE floats and doubles are supported +(used for storage) by at least Intel, PPC and Sparc.

+
+

Members

+
+++++ + +
+
+
+
+
+

union GDoubleIEEE754

+

The GFloatIEEE754 and GDoubleIEEE754 unions are used to access the sign, +mantissa and exponent of IEEE floats and doubles. These unions are defined +as appropriate for a given platform. IEEE floats and doubles are supported +(used for storage) by at least Intel, PPC and Sparc.

+
+

Members

+
+++++ + + + + + +

gdouble v_double;

the double value

 
+
+
+
+
+

G_E

+
#define G_E     2.7182818284590452353602874713526624977572470937000
+
+

The base of natural logarithms.

+
+
+
+

G_LN2

+
#define G_LN2   0.69314718055994530941723212145817656807550013436026
+
+

The natural logarithm of 2.

+
+
+
+

G_LN10

+
#define G_LN10  2.3025850929940456840179914546843642076011014886288
+
+

The natural logarithm of 10.

+
+
+
+

G_PI

+
#define G_PI    3.1415926535897932384626433832795028841971693993751
+
+

The value of pi (ratio of circle's circumference to its diameter).

+
+
+
+

G_PI_2

+
#define G_PI_2  1.5707963267948966192313216916397514420985846996876
+
+

Pi divided by 2.

+
+
+
+

G_PI_4

+
#define G_PI_4  0.78539816339744830961566084581987572104929234984378
+
+

Pi divided by 4.

+
+
+
+

G_SQRT2

+
#define G_SQRT2 1.4142135623730950488016887242096980785696718753769
+
+

The square root of two.

+
+
+
+

G_LOG_2_BASE_10

+
#define G_LOG_2_BASE_10		(0.30102999566398119521)
+
+

Multiplying the base 2 exponent by this number yields the base 10 exponent.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Perl-compatible-regular-expressions.html b/docs/reference/glib/html/glib-Perl-compatible-regular-expressions.html new file mode 100644 index 0000000..1bd119d --- /dev/null +++ b/docs/reference/glib/html/glib-Perl-compatible-regular-expressions.html @@ -0,0 +1,3520 @@ + + + + +Perl-compatible regular expressions: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Perl-compatible regular expressions

+

Perl-compatible regular expressions — matches strings against regular expressions

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +(*GRegexEvalCallback) () +
+GRegex * + +g_regex_new () +
+GRegex * + +g_regex_ref () +
+void + +g_regex_unref () +
const gchar * + +g_regex_get_pattern () +
+gint + +g_regex_get_max_backref () +
+gint + +g_regex_get_capture_count () +
+gboolean + +g_regex_get_has_cr_or_lf () +
+gint + +g_regex_get_max_lookbehind () +
+gint + +g_regex_get_string_number () +
+GRegexCompileFlags + +g_regex_get_compile_flags () +
+GRegexMatchFlags + +g_regex_get_match_flags () +
+gchar * + +g_regex_escape_string () +
+gchar * + +g_regex_escape_nul () +
+gboolean + +g_regex_match_simple () +
+gboolean + +g_regex_match () +
+gboolean + +g_regex_match_full () +
+gboolean + +g_regex_match_all () +
+gboolean + +g_regex_match_all_full () +
+gchar ** + +g_regex_split_simple () +
+gchar ** + +g_regex_split () +
+gchar ** + +g_regex_split_full () +
+gchar * + +g_regex_replace () +
+gchar * + +g_regex_replace_literal () +
+gchar * + +g_regex_replace_eval () +
+gboolean + +g_regex_check_replacement () +
+GRegex * + +g_match_info_get_regex () +
const gchar * + +g_match_info_get_string () +
+GMatchInfo * + +g_match_info_ref () +
+void + +g_match_info_unref () +
+void + +g_match_info_free () +
+gboolean + +g_match_info_matches () +
+gboolean + +g_match_info_next () +
+gint + +g_match_info_get_match_count () +
+gboolean + +g_match_info_is_partial_match () +
+gchar * + +g_match_info_expand_references () +
+gchar * + +g_match_info_fetch () +
+gboolean + +g_match_info_fetch_pos () +
+gchar * + +g_match_info_fetch_named () +
+gboolean + +g_match_info_fetch_named_pos () +
+gchar ** + +g_match_info_fetch_all () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
enumGRegexError
#defineG_REGEX_ERROR
enumGRegexCompileFlags
enumGRegexMatchFlags
 GRegex
 GMatchInfo
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The g_regex_*() functions implement regular +expression pattern matching using syntax and semantics similar to +Perl regular expression.

+

Some functions accept a start_position + argument, setting it differs +from just passing over a shortened string and setting G_REGEX_MATCH_NOTBOL +in the case of a pattern that begins with any kind of lookbehind assertion. +For example, consider the pattern "\Biss\B" which finds occurrences of "iss" +in the middle of words. ("\B" matches only if the current position in the +subject is not a word boundary.) When applied to the string "Mississipi" +from the fourth byte, namely "issipi", it does not match, because "\B" is +always false at the start of the subject, which is deemed to be a word +boundary. However, if the entire string is passed , but with +start_position + set to 4, it finds the second occurrence of "iss" because +it is able to look behind the starting point to discover that it is +preceded by a letter.

+

Note that, unless you set the G_REGEX_RAW flag, all the strings passed +to these functions must be encoded in UTF-8. The lengths and the positions +inside the strings are in bytes and not in characters, so, for instance, +"\xc3\xa0" (i.e. "à") is two bytes long but it is treated as a +single character. If you set G_REGEX_RAW the strings can be non-valid +UTF-8 strings and a byte is treated as a character, so "\xc3\xa0" is two +bytes and two characters long.

+

When matching a pattern, "\n" matches only against a "\n" character in +the string, and "\r" matches only a "\r" character. To match any newline +sequence use "\R". This particular group matches either the two-character +sequence CR + LF ("\r\n"), or one of the single characters LF (linefeed, +U+000A, "\n"), VT vertical tab, U+000B, "\v"), FF (formfeed, U+000C, "\f"), +CR (carriage return, U+000D, "\r"), NEL (next line, U+0085), LS (line +separator, U+2028), or PS (paragraph separator, U+2029).

+

The behaviour of the dot, circumflex, and dollar metacharacters are +affected by newline characters, the default is to recognize any newline +character (the same characters recognized by "\R"). This can be changed +with G_REGEX_NEWLINE_CR, G_REGEX_NEWLINE_LF and G_REGEX_NEWLINE_CRLF +compile options, and with G_REGEX_MATCH_NEWLINE_ANY, +G_REGEX_MATCH_NEWLINE_CR, G_REGEX_MATCH_NEWLINE_LF and +G_REGEX_MATCH_NEWLINE_CRLF match options. These settings are also +relevant when compiling a pattern if G_REGEX_EXTENDED is set, and an +unescaped "#" outside a character class is encountered. This indicates +a comment that lasts until after the next newline.

+

When setting the G_REGEX_JAVASCRIPT_COMPAT flag, pattern syntax and pattern +matching is changed to be compatible with the way that regular expressions +work in JavaScript. More precisely, a lonely ']' character in the pattern +is a syntax error; the '\x' escape only allows 0 to 2 hexadecimal digits, and +you must use the '\u' escape sequence with 4 hex digits to specify a unicode +codepoint instead of '\x' or 'x{....}'. If '\x' or '\u' are not followed by +the specified number of hex digits, they match 'x' and 'u' literally; also +'\U' always matches 'U' instead of being an error in the pattern. Finally, +pattern matching is modified so that back references to an unset subpattern +group produces a match with the empty string instead of an error. See +pcreapi(3) for more information.

+

Creating and manipulating the same GRegex structure from different +threads is not a problem as GRegex does not modify its internal +state between creation and destruction, on the other hand GMatchInfo +is not threadsafe.

+

The regular expressions low-level functionalities are obtained through +the excellent +PCRE +library written by Philip Hazel.

+
+
+

Functions

+
+

GRegexEvalCallback ()

+
gboolean
+(*GRegexEvalCallback) (const GMatchInfo *match_info,
+                       GString *result,
+                       gpointer user_data);
+

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 +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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()

 
+
+
+

Returns

+

FALSE to continue the replacement process, TRUE to stop it

+
+

Since: 2.14

+
+
+
+

g_regex_new ()

+
GRegex *
+g_regex_new (const gchar *pattern,
+             GRegexCompileFlags compile_options,
+             GRegexMatchFlags match_options,
+             GError **error);
+

Compiles the regular expression to an internal form, and does +the initial setup of the GRegex structure.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

pattern

the regular expression

 

compile_options

compile options for the regular expression, or 0

 

match_options

match options for the regular expression, or 0

 

error

return location for a GError

 
+
+
+

Returns

+

a GRegex structure or NULL if an error occured. Call +g_regex_unref() when you are done with it.

+

[nullable]

+
+

Since: 2.14

+
+
+
+

g_regex_ref ()

+
GRegex *
+g_regex_ref (GRegex *regex);
+

Increases reference count of regex + by 1.

+
+

Parameters

+
+++++ + + + + + +

regex

a GRegex

 
+
+
+

Returns

+

regex +

+
+

Since: 2.14

+
+
+
+

g_regex_unref ()

+
void
+g_regex_unref (GRegex *regex);
+

Decreases reference count of regex + by 1. When reference count drops +to zero, it frees all the memory associated with the regex structure.

+
+

Parameters

+
+++++ + + + + + +

regex

a GRegex

 
+
+

Since: 2.14

+
+
+
+

g_regex_get_pattern ()

+
const gchar *
+g_regex_get_pattern (const GRegex *regex);
+

Gets the pattern string associated with regex +, i.e. a copy of +the string passed to g_regex_new().

+
+

Parameters

+
+++++ + + + + + +

regex

a GRegex structure

 
+
+
+

Returns

+

the pattern of regex +

+
+

Since: 2.14

+
+
+
+

g_regex_get_max_backref ()

+
gint
+g_regex_get_max_backref (const GRegex *regex);
+

Returns the number of the highest back reference +in the pattern, or 0 if the pattern does not contain +back references.

+
+

Parameters

+
+++++ + + + + + +

regex

a GRegex

 
+
+
+

Returns

+

the number of the highest back reference

+
+

Since: 2.14

+
+
+
+

g_regex_get_capture_count ()

+
gint
+g_regex_get_capture_count (const GRegex *regex);
+

Returns the number of capturing subpatterns in the pattern.

+
+

Parameters

+
+++++ + + + + + +

regex

a GRegex

 
+
+
+

Returns

+

the number of capturing subpatterns

+
+

Since: 2.14

+
+
+
+

g_regex_get_has_cr_or_lf ()

+
gboolean
+g_regex_get_has_cr_or_lf (const GRegex *regex);
+

Checks whether the pattern contains explicit CR or LF references.

+
+

Parameters

+
+++++ + + + + + +

regex

a GRegex structure

 
+
+
+

Returns

+

TRUE if the pattern contains explicit CR or LF references

+
+

Since: 2.34

+
+
+
+

g_regex_get_max_lookbehind ()

+
gint
+g_regex_get_max_lookbehind (const GRegex *regex);
+

Gets the number of characters in the longest lookbehind assertion in the +pattern. This information is useful when doing multi-segment matching using +the partial matching facilities.

+
+

Parameters

+
+++++ + + + + + +

regex

a GRegex structure

 
+
+
+

Returns

+

the number of characters in the longest lookbehind assertion.

+
+

Since: 2.38

+
+
+
+

g_regex_get_string_number ()

+
gint
+g_regex_get_string_number (const GRegex *regex,
+                           const gchar *name);
+

Retrieves the number of the subexpression named name +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

regex

GRegex structure

 

name

name of the subexpression

 
+
+
+

Returns

+

The number of the subexpression or -1 if name +does not exists

+
+

Since: 2.14

+
+
+
+

g_regex_get_compile_flags ()

+
GRegexCompileFlags
+g_regex_get_compile_flags (const GRegex *regex);
+

Returns the compile options that regex + was created with.

+
+

Parameters

+
+++++ + + + + + +

regex

a GRegex

 
+
+
+

Returns

+

flags from GRegexCompileFlags

+
+

Since: 2.26

+
+
+
+

g_regex_get_match_flags ()

+
GRegexMatchFlags
+g_regex_get_match_flags (const GRegex *regex);
+

Returns the match options that regex + was created with.

+
+

Parameters

+
+++++ + + + + + +

regex

a GRegex

 
+
+
+

Returns

+

flags from GRegexMatchFlags

+
+

Since: 2.26

+
+
+
+

g_regex_escape_string ()

+
gchar *
+g_regex_escape_string (const gchar *string,
+                       gint length);
+

Escapes the special characters used for regular expressions +in string +, for instance "a.b*c" becomes "a.b*c". This +function is useful to dynamically generate regular expressions.

+

string + can contain nul characters that are replaced with "\0", +in this case remember to specify the correct length of string + +in length +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

string

the string to escape.

[array length=length]

length

the length of string +, or -1 if string +is nul-terminated

 
+
+
+

Returns

+

a newly-allocated escaped string

+
+

Since: 2.14

+
+
+
+

g_regex_escape_nul ()

+
gchar *
+g_regex_escape_nul (const gchar *string,
+                    gint length);
+

Escapes the nul characters in string + to "\x00". It can be used +to compile a regex with embedded nul characters.

+

For completeness, length + can be -1 for a nul-terminated string. +In this case the output string will be of course equal to string +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

string

the string to escape

 

length

the length of string +

 
+
+
+

Returns

+

a newly-allocated escaped string

+
+

Since: 2.30

+
+
+
+

g_regex_match_simple ()

+
gboolean
+g_regex_match_simple (const gchar *pattern,
+                      const gchar *string,
+                      GRegexCompileFlags compile_options,
+                      GRegexMatchFlags match_options);
+

Scans for a match in string + for pattern +.

+

This function is equivalent to g_regex_match() but it does not +require to compile the pattern with g_regex_new(), avoiding some +lines of code when you need just to do a match without extracting +substrings, capture counts, and so on.

+

If this function is to be called on the same pattern + more than +once, it's more efficient to compile the pattern once with +g_regex_new() and then use g_regex_match().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

pattern

the regular expression

 

string

the string to scan for matches

 

compile_options

compile options for the regular expression, or 0

 

match_options

match options, or 0

 
+
+
+

Returns

+

TRUE if the string matched, FALSE otherwise

+
+

Since: 2.14

+
+
+
+

g_regex_match ()

+
gboolean
+g_regex_match (const GRegex *regex,
+               const gchar *string,
+               GRegexMatchFlags match_options,
+               GMatchInfo **match_info);
+

Scans for a match in string for the pattern in regex +. +The match_options + are combined with the match options specified +when the regex + structure was created, letting you have more +flexibility in reusing GRegex structures.

+

A GMatchInfo structure, used to get information on the match, +is stored in match_info + if not NULL. Note that if match_info + +is not NULL then it is created even if the function returns FALSE, +i.e. you must free it regardless if regular expression actually matched.

+

To retrieve all the non-overlapping matches of the pattern in +string you can use g_match_info_next().

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
static void
+print_uppercase_words (const gchar *string)
+{
+  // Print all uppercase-only words.
+  GRegex *regex;
+  GMatchInfo *match_info;
+ 
+  regex = g_regex_new ("[A-Z]+", 0, 0, NULL);
+  g_regex_match (regex, string, 0, &match_info);
+  while (g_match_info_matches (match_info))
+    {
+      gchar *word = g_match_info_fetch (match_info, 0);
+      g_print ("Found: %s\n", word);
+      g_free (word);
+      g_match_info_next (match_info, NULL);
+    }
+  g_match_info_free (match_info);
+  g_regex_unref (regex);
+}
+
+ +

+

string + is not copied and is used in GMatchInfo internally. If +you use any GMatchInfo method (except g_match_info_free()) after +freeing or modifying string + then the behaviour is undefined.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

regex

a GRegex structure from g_regex_new()

 

string

the string to scan for matches

 

match_options

match options

 

match_info

pointer to location where to store +the GMatchInfo, or NULL if you do not need it.

[out][allow-none]
+
+
+

Returns

+

TRUE is the string matched, FALSE otherwise

+
+

Since: 2.14

+
+
+
+

g_regex_match_full ()

+
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);
+

Scans for a match in string for the pattern in regex +. +The match_options + are combined with the match options specified +when the regex + structure was created, letting you have more +flexibility in reusing GRegex structures.

+

Setting start_position + differs from just passing over a shortened +string and setting G_REGEX_MATCH_NOTBOL in the case of a pattern +that begins with any kind of lookbehind assertion, such as "\b".

+

A GMatchInfo structure, used to get information on the match, is +stored in match_info + if not NULL. Note that if match_info + is +not NULL then it is created even if the function returns FALSE, +i.e. you must free it regardless if regular expression actually +matched.

+

string + is not copied and is used in GMatchInfo internally. If +you use any GMatchInfo method (except g_match_info_free()) after +freeing or modifying string + then the behaviour is undefined.

+

To retrieve all the non-overlapping matches of the pattern in +string you can use g_match_info_next().

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
static void
+print_uppercase_words (const gchar *string)
+{
+  // Print all uppercase-only words.
+  GRegex *regex;
+  GMatchInfo *match_info;
+  GError *error = NULL;
+  
+  regex = g_regex_new ("[A-Z]+", 0, 0, NULL);
+  g_regex_match_full (regex, string, -1, 0, 0, &match_info, &error);
+  while (g_match_info_matches (match_info))
+    {
+      gchar *word = g_match_info_fetch (match_info, 0);
+      g_print ("Found: %s\n", word);
+      g_free (word);
+      g_match_info_next (match_info, &error);
+    }
+  g_match_info_free (match_info);
+  g_regex_unref (regex);
+  if (error != NULL)
+    {
+      g_printerr ("Error while matching: %s\n", error->message);
+      g_error_free (error);
+    }
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

regex

a GRegex structure from g_regex_new()

 

string

the string to scan for matches.

[array length=string_len]

string_len

the length of string +, or -1 if string +is nul-terminated

 

start_position

starting index of the string to match, in bytes

 

match_options

match options

 

match_info

pointer to location where to store +the GMatchInfo, or NULL if you do not need it.

[out][allow-none]

error

location to store the error occurring, or NULL to ignore errors

 
+
+
+

Returns

+

TRUE is the string matched, FALSE otherwise

+
+

Since: 2.14

+
+
+
+

g_regex_match_all ()

+
gboolean
+g_regex_match_all (const GRegex *regex,
+                   const gchar *string,
+                   GRegexMatchFlags match_options,
+                   GMatchInfo **match_info);
+

Using the standard algorithm for regular expression matching only +the longest match in the string is retrieved. This function uses +a different algorithm so it can retrieve all the possible matches. +For more documentation see g_regex_match_all_full().

+

A GMatchInfo structure, used to get information on the match, is +stored in match_info + if not NULL. Note that if match_info + is +not NULL then it is created even if the function returns FALSE, +i.e. you must free it regardless if regular expression actually +matched.

+

string + is not copied and is used in GMatchInfo internally. If +you use any GMatchInfo method (except g_match_info_free()) after +freeing or modifying string + then the behaviour is undefined.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

regex

a GRegex structure from g_regex_new()

 

string

the string to scan for matches

 

match_options

match options

 

match_info

pointer to location where to store +the GMatchInfo, or NULL if you do not need it.

[out][allow-none]
+
+
+

Returns

+

TRUE is the string matched, FALSE otherwise

+
+

Since: 2.14

+
+
+
+

g_regex_match_all_full ()

+
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);
+

Using the standard algorithm for regular expression matching only +the longest match in the string is retrieved, it is not possible +to obtain all the available matches. For instance matching +"<a> <b> <c>" against the pattern "<.*>" +you get "<a> <b> <c>".

+

This function uses a different algorithm (called DFA, i.e. deterministic +finite automaton), so it can retrieve all the possible matches, all +starting at the same point in the string. For instance matching +"<a> <b> <c>" against the pattern "<.*>;" +you would obtain three matches: "<a> <b> <c>", +"<a> <b>" and "<a>".

+

The number of matched strings is retrieved using +g_match_info_get_match_count(). To obtain the matched strings and +their position you can use, respectively, g_match_info_fetch() and +g_match_info_fetch_pos(). Note that the strings are returned in +reverse order of length; that is, the longest matching string is +given first.

+

Note that the DFA algorithm is slower than the standard one and it +is not able to capture substrings, so backreferences do not work.

+

Setting start_position + differs from just passing over a shortened +string and setting G_REGEX_MATCH_NOTBOL in the case of a pattern +that begins with any kind of lookbehind assertion, such as "\b".

+

A GMatchInfo structure, used to get information on the match, is +stored in match_info + if not NULL. Note that if match_info + is +not NULL then it is created even if the function returns FALSE, +i.e. you must free it regardless if regular expression actually +matched.

+

string + is not copied and is used in GMatchInfo internally. If +you use any GMatchInfo method (except g_match_info_free()) after +freeing or modifying string + then the behaviour is undefined.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

regex

a GRegex structure from g_regex_new()

 

string

the string to scan for matches.

[array length=string_len]

string_len

the length of string +, or -1 if string +is nul-terminated

 

start_position

starting index of the string to match, in bytes

 

match_options

match options

 

match_info

pointer to location where to store +the GMatchInfo, or NULL if you do not need it.

[out][allow-none]

error

location to store the error occurring, or NULL to ignore errors

 
+
+
+

Returns

+

TRUE is the string matched, FALSE otherwise

+
+

Since: 2.14

+
+
+
+

g_regex_split_simple ()

+
gchar **
+g_regex_split_simple (const gchar *pattern,
+                      const gchar *string,
+                      GRegexCompileFlags compile_options,
+                      GRegexMatchFlags match_options);
+

Breaks the string on the pattern, and returns an array of +the tokens. If the pattern contains capturing parentheses, +then the text for each of the substrings will also be returned. +If the pattern does not match anywhere in the string, then the +whole string is returned as the first token.

+

This function is equivalent to g_regex_split() but it does +not require to compile the pattern with g_regex_new(), avoiding +some lines of code when you need just to do a split without +extracting substrings, capture counts, and so on.

+

If this function is to be called on the same pattern + more than +once, it's more efficient to compile the pattern once with +g_regex_new() and then use g_regex_split().

+

As a special case, the result of splitting the empty string "" +is an empty vector, not a vector containing a single string. +The reason for this special case is that being able to represent +a empty vector is typically more useful than consistent handling +of empty elements. If you do need to represent empty elements, +you'll need to check for the empty string before calling this +function.

+

A pattern that can match empty strings splits string + into +separate characters wherever it matches the empty string between +characters. For example splitting "ab c" using as a separator +"\s*", you will get "a", "b" and "c".

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

pattern

the regular expression

 

string

the string to scan for matches

 

compile_options

compile options for the regular expression, or 0

 

match_options

match options, or 0

 
+
+
+

Returns

+

a NULL-terminated array of strings. Free +it using g_strfreev().

+

[transfer full]

+
+

Since: 2.14

+
+
+
+

g_regex_split ()

+
gchar **
+g_regex_split (const GRegex *regex,
+               const gchar *string,
+               GRegexMatchFlags match_options);
+

Breaks the string on the pattern, and returns an array of the tokens. +If the pattern contains capturing parentheses, then the text for each +of the substrings will also be returned. If the pattern does not match +anywhere in the string, then the whole string is returned as the first +token.

+

As a special case, the result of splitting the empty string "" is an +empty vector, not a vector containing a single string. The reason for +this special case is that being able to represent a empty vector is +typically more useful than consistent handling of empty elements. If +you do need to represent empty elements, you'll need to check for the +empty string before calling this function.

+

A pattern that can match empty strings splits string + into separate +characters wherever it matches the empty string between characters. +For example splitting "ab c" using as a separator "\s*", you will get +"a", "b" and "c".

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

regex

a GRegex structure

 

string

the string to split with the pattern

 

match_options

match time option flags

 
+
+
+

Returns

+

a NULL-terminated gchar ** array. Free +it using g_strfreev().

+

[transfer full]

+
+

Since: 2.14

+
+
+
+

g_regex_split_full ()

+
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);
+

Breaks the string on the pattern, and returns an array of the tokens. +If the pattern contains capturing parentheses, then the text for each +of the substrings will also be returned. If the pattern does not match +anywhere in the string, then the whole string is returned as the first +token.

+

As a special case, the result of splitting the empty string "" is an +empty vector, not a vector containing a single string. The reason for +this special case is that being able to represent a empty vector is +typically more useful than consistent handling of empty elements. If +you do need to represent empty elements, you'll need to check for the +empty string before calling this function.

+

A pattern that can match empty strings splits string + into separate +characters wherever it matches the empty string between characters. +For example splitting "ab c" using as a separator "\s*", you will get +"a", "b" and "c".

+

Setting start_position + differs from just passing over a shortened +string and setting G_REGEX_MATCH_NOTBOL in the case of a pattern +that begins with any kind of lookbehind assertion, such as "\b".

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

regex

a GRegex structure

 

string

the string to split with the pattern.

[array length=string_len]

string_len

the length of string +, or -1 if string +is nul-terminated

 

start_position

starting index of the string to match, in bytes

 

match_options

match time option flags

 

max_tokens

the maximum number of tokens to split string +into. +If this is less than 1, the string is split completely

 

error

return location for a GError

 
+
+
+

Returns

+

a NULL-terminated gchar ** array. Free +it using g_strfreev().

+

[transfer full]

+
+

Since: 2.14

+
+
+
+

g_regex_replace ()

+
gchar *
+g_regex_replace (const GRegex *regex,
+                 const gchar *string,
+                 gssize string_len,
+                 gint start_position,
+                 const gchar *replacement,
+                 GRegexMatchFlags match_options,
+                 GError **error);
+

Replaces all occurrences of the pattern in regex + with the +replacement text. Backreferences of the form '\number' or +'\g<number>' in the replacement text are interpolated by the +number-th captured subexpression of the match, '\g<name>' refers +to the captured subexpression with the given name. '\0' refers +to the complete match, but '\0' followed by a number is the octal +representation of a character. To include a literal '\' in the +replacement, write '\'.

+

There are also escapes that changes the case of the following text:

+
    +
  • \l: Convert to lower case the next character

  • +
  • \u: Convert to upper case the next character

  • +
  • \L: Convert to lower case till \E

  • +
  • \U: Convert to upper case till \E

  • +
  • \E: End case modification

  • +
+

If you do not need to use backreferences use g_regex_replace_literal().

+

The replacement + string must be UTF-8 encoded even if G_REGEX_RAW was +passed to g_regex_new(). If you want to use not UTF-8 encoded stings +you can use g_regex_replace_literal().

+

Setting start_position + differs from just passing over a shortened +string and setting G_REGEX_MATCH_NOTBOL in the case of a pattern that +begins with any kind of lookbehind assertion, such as "\b".

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

regex

a GRegex structure

 

string

the string to perform matches against.

[array length=string_len]

string_len

the length of string +, or -1 if string +is nul-terminated

 

start_position

starting index of the string to match, in bytes

 

replacement

text to replace each match with

 

match_options

options for the match

 

error

location to store the error occurring, or NULL to ignore errors

 
+
+
+

Returns

+

a newly allocated string containing the replacements

+
+

Since: 2.14

+
+
+
+

g_regex_replace_literal ()

+
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);
+

Replaces all occurrences of the pattern in regex + with the +replacement text. replacement + is replaced literally, to +include backreferences use g_regex_replace().

+

Setting start_position + differs from just passing over a +shortened string and setting G_REGEX_MATCH_NOTBOL in the +case of a pattern that begins with any kind of lookbehind +assertion, such as "\b".

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

regex

a GRegex structure

 

string

the string to perform matches against.

[array length=string_len]

string_len

the length of string +, or -1 if string +is nul-terminated

 

start_position

starting index of the string to match, in bytes

 

replacement

text to replace each match with

 

match_options

options for the match

 

error

location to store the error occurring, or NULL to ignore errors

 
+
+
+

Returns

+

a newly allocated string containing the replacements

+
+

Since: 2.14

+
+
+
+

g_regex_replace_eval ()

+
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);
+

Replaces occurrences of the pattern in regex with the output of +eval + for that occurrence.

+

Setting start_position + differs from just passing over a shortened +string and setting G_REGEX_MATCH_NOTBOL in the case of a pattern +that begins with any kind of lookbehind assertion, such as "\b".

+

The following example uses g_regex_replace_eval() to replace multiple +strings at once:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
static gboolean
+eval_cb (const GMatchInfo *info,
+         GString          *res,
+         gpointer          data)
+{
+  gchar *match;
+  gchar *r;
+
+   match = g_match_info_fetch (info, 0);
+   r = g_hash_table_lookup ((GHashTable *)data, match);
+   g_string_append (res, r);
+   g_free (match);
+
+   return FALSE;
+}
+
+...
+
+GRegex *reg;
+GHashTable *h;
+gchar *res;
+
+h = g_hash_table_new (g_str_hash, g_str_equal);
+
+g_hash_table_insert (h, "1", "ONE");
+g_hash_table_insert (h, "2", "TWO");
+g_hash_table_insert (h, "3", "THREE");
+g_hash_table_insert (h, "4", "FOUR");
+
+reg = g_regex_new ("1|2|3|4", 0, 0, NULL);
+res = g_regex_replace_eval (reg, text, -1, 0, 0, eval_cb, h, NULL);
+g_hash_table_destroy (h);
+
+...
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

regex

a GRegex structure from g_regex_new()

 

string

string to perform matches against.

[array length=string_len]

string_len

the length of string +, or -1 if string +is nul-terminated

 

start_position

starting index of the string to match, in bytes

 

match_options

options for the match

 

eval

a function to call for each match

 

user_data

user data to pass to the function

 

error

location to store the error occurring, or NULL to ignore errors

 
+
+
+

Returns

+

a newly allocated string containing the replacements

+
+

Since: 2.14

+
+
+
+

g_regex_check_replacement ()

+
gboolean
+g_regex_check_replacement (const gchar *replacement,
+                           gboolean *has_references,
+                           GError **error);
+

Checks whether replacement + is a valid replacement string +(see g_regex_replace()), i.e. that all escape sequences in +it are valid.

+

If has_references + is not NULL then replacement + is checked +for pattern references. For instance, replacement text 'foo\n' +does not contain references and may be evaluated without information +about actual match, but '\0\1' (whole match followed by first +subpattern) requires valid GMatchInfo object.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

replacement

the replacement string

 

has_references

location to store information about +references in replacement +or NULL.

[out][allow-none]

error

location to store error

 
+
+
+

Returns

+

whether replacement +is a valid replacement string

+
+

Since: 2.14

+
+
+
+

g_match_info_get_regex ()

+
GRegex *
+g_match_info_get_regex (const GMatchInfo *match_info);
+

Returns GRegex object used in match_info +. It belongs to Glib +and must not be freed. Use g_regex_ref() if you need to keep it +after you free match_info + object.

+
+

Parameters

+
+++++ + + + + + +

match_info

a GMatchInfo

 
+
+
+

Returns

+

GRegex object used in match_info +

+
+

Since: 2.14

+
+
+
+

g_match_info_get_string ()

+
const gchar *
+g_match_info_get_string (const GMatchInfo *match_info);
+

Returns the string searched with match_info +. This is the +string passed to g_regex_match() or g_regex_replace() so +you may not free it before calling this function.

+
+

Parameters

+
+++++ + + + + + +

match_info

a GMatchInfo

 
+
+
+

Returns

+

the string searched with match_info +

+
+

Since: 2.14

+
+
+
+

g_match_info_ref ()

+
GMatchInfo *
+g_match_info_ref (GMatchInfo *match_info);
+

Increases reference count of match_info + by 1.

+
+

Parameters

+
+++++ + + + + + +

match_info

a GMatchInfo

 
+
+
+

Returns

+

match_info +

+
+

Since: 2.30

+
+
+
+

g_match_info_unref ()

+
void
+g_match_info_unref (GMatchInfo *match_info);
+

Decreases reference count of match_info + by 1. When reference count drops +to zero, it frees all the memory associated with the match_info structure.

+
+

Parameters

+
+++++ + + + + + +

match_info

a GMatchInfo

 
+
+

Since: 2.30

+
+
+
+

g_match_info_free ()

+
void
+g_match_info_free (GMatchInfo *match_info);
+

If match_info + is not NULL, calls g_match_info_unref(); otherwise does +nothing.

+
+

Parameters

+
+++++ + + + + + +

match_info

a GMatchInfo, or NULL.

[allow-none]
+
+

Since: 2.14

+
+
+
+

g_match_info_matches ()

+
gboolean
+g_match_info_matches (const GMatchInfo *match_info);
+

Returns whether the previous match operation succeeded.

+
+

Parameters

+
+++++ + + + + + +

match_info

a GMatchInfo structure

 
+
+
+

Returns

+

TRUE if the previous match operation succeeded, +FALSE otherwise

+
+

Since: 2.14

+
+
+
+

g_match_info_next ()

+
gboolean
+g_match_info_next (GMatchInfo *match_info,
+                   GError **error);
+

Scans for the next match using the same parameters of the previous +call to g_regex_match_full() or g_regex_match() that returned +match_info +.

+

The match is done on the string passed to the match function, so you +cannot free it before calling this function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

match_info

a GMatchInfo structure

 

error

location to store the error occurring, or NULL to ignore errors

 
+
+
+

Returns

+

TRUE is the string matched, FALSE otherwise

+
+

Since: 2.14

+
+
+
+

g_match_info_get_match_count ()

+
gint
+g_match_info_get_match_count (const GMatchInfo *match_info);
+

Retrieves the number of matched substrings (including substring 0, +that is the whole matched text), so 1 is returned if the pattern +has no substrings in it and 0 is returned if the match failed.

+

If the last match was obtained using the DFA algorithm, that is +using g_regex_match_all() or g_regex_match_all_full(), the retrieved +count is not that of the number of capturing parentheses but that of +the number of matched substrings.

+
+

Parameters

+
+++++ + + + + + +

match_info

a GMatchInfo structure

 
+
+
+

Returns

+

Number of matched substrings, or -1 if an error occurred

+
+

Since: 2.14

+
+
+
+

g_match_info_is_partial_match ()

+
gboolean
+g_match_info_is_partial_match (const GMatchInfo *match_info);
+

Usually if the string passed to g_regex_match*() matches as far as +it goes, but is too short to match the entire pattern, FALSE is +returned. There are circumstances where it might be helpful to +distinguish this case from other cases in which there is no match.

+

Consider, for example, an application where a human is required to +type in data for a field with specific formatting requirements. An +example might be a date in the form ddmmmyy, defined by the pattern +"^\d?\d(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\d\d$". +If the application sees the user’s keystrokes one by one, and can +check that what has been typed so far is potentially valid, it is +able to raise an error as soon as a mistake is made.

+

GRegex supports the concept of partial matching by means of the +G_REGEX_MATCH_PARTIAL_SOFT and G_REGEX_MATCH_PARTIAL_HARD flags. +When they are used, the return code for +g_regex_match() or g_regex_match_full() is, as usual, TRUE +for a complete match, FALSE otherwise. But, when these functions +return FALSE, you can check if the match was partial calling +g_match_info_is_partial_match().

+

The difference between G_REGEX_MATCH_PARTIAL_SOFT and +G_REGEX_MATCH_PARTIAL_HARD is that when a partial match is encountered +with G_REGEX_MATCH_PARTIAL_SOFT, matching continues to search for a +possible complete match, while with G_REGEX_MATCH_PARTIAL_HARD matching +stops at the partial match. +When both G_REGEX_MATCH_PARTIAL_SOFT and G_REGEX_MATCH_PARTIAL_HARD +are set, the latter takes precedence.

+

There were formerly some restrictions on the pattern for partial matching. +The restrictions no longer apply.

+

See pcrepartial(3) for more information on partial matching.

+
+

Parameters

+
+++++ + + + + + +

match_info

a GMatchInfo structure

 
+
+
+

Returns

+

TRUE if the match was partial, FALSE otherwise

+
+

Since: 2.14

+
+
+
+

g_match_info_expand_references ()

+
gchar *
+g_match_info_expand_references (const GMatchInfo *match_info,
+                                const gchar *string_to_expand,
+                                GError **error);
+

Returns a new string containing the text in string_to_expand + with +references and escape sequences expanded. References refer to the last +match done with string + against regex + and have the same syntax used by +g_regex_replace().

+

The string_to_expand + must be UTF-8 encoded even if G_REGEX_RAW was +passed to g_regex_new().

+

The backreferences are extracted from the string passed to the match +function, so you cannot call this function after freeing the string.

+

match_info + may be NULL in which case string_to_expand + must not +contain references. For instance "foo\n" does not refer to an actual +pattern and '\n' merely will be replaced with \n character, +while to expand "\0" (whole match) one needs the result of a match. +Use g_regex_check_replacement() to find out whether string_to_expand + +contains references.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

match_info

a GMatchInfo or NULL.

[allow-none]

string_to_expand

the string to expand

 

error

location to store the error occurring, or NULL to ignore errors

 
+
+
+

Returns

+

the expanded string, or NULL if an error occurred.

+

[allow-none]

+
+

Since: 2.14

+
+
+
+

g_match_info_fetch ()

+
gchar *
+g_match_info_fetch (const GMatchInfo *match_info,
+                    gint match_num);
+

Retrieves the text matching the match_num +'th capturing +parentheses. 0 is the full text of the match, 1 is the first paren +set, 2 the second, and so on.

+

If match_num + is a valid sub pattern but it didn't match anything +(e.g. sub pattern 1, matching "b" against "(a)?b") then an empty +string is returned.

+

If the match was obtained using the DFA algorithm, that is using +g_regex_match_all() or g_regex_match_all_full(), the retrieved +string is not that of a set of parentheses but that of a matched +substring. Substrings are matched in reverse order of length, so +0 is the longest match.

+

The string is fetched from the string passed to the match function, +so you cannot call this function after freeing the string.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

match_info

GMatchInfo structure

 

match_num

number of the sub expression

 
+
+
+

Returns

+

The matched substring, or NULL if an error +occurred. You have to free the string yourself.

+

[allow-none]

+
+

Since: 2.14

+
+
+
+

g_match_info_fetch_pos ()

+
gboolean
+g_match_info_fetch_pos (const GMatchInfo *match_info,
+                        gint match_num,
+                        gint *start_pos,
+                        gint *end_pos);
+

Retrieves the position in bytes of the match_num +'th capturing +parentheses. 0 is the full text of the match, 1 is the first +paren set, 2 the second, and so on.

+

If match_num + is a valid sub pattern but it didn't match anything +(e.g. sub pattern 1, matching "b" against "(a)?b") then start_pos + +and end_pos + are set to -1 and TRUE is returned.

+

If the match was obtained using the DFA algorithm, that is using +g_regex_match_all() or g_regex_match_all_full(), the retrieved +position is not that of a set of parentheses but that of a matched +substring. Substrings are matched in reverse order of length, so +0 is the longest match.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

match_info

GMatchInfo structure

 

match_num

number of the sub expression

 

start_pos

pointer to location where to store +the start position, or NULL.

[out][allow-none]

end_pos

pointer to location where to store +the end position, or NULL.

[out][allow-none]
+
+
+

Returns

+

TRUE if the position was fetched, FALSE otherwise. If +the position cannot be fetched, start_pos +and end_pos +are left +unchanged

+
+

Since: 2.14

+
+
+
+

g_match_info_fetch_named ()

+
gchar *
+g_match_info_fetch_named (const GMatchInfo *match_info,
+                          const gchar *name);
+

Retrieves the text matching the capturing parentheses named name +.

+

If name + is a valid sub pattern name but it didn't match anything +(e.g. sub pattern "X", matching "b" against "(?P<X>a)?b") +then an empty string is returned.

+

The string is fetched from the string passed to the match function, +so you cannot call this function after freeing the string.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

match_info

GMatchInfo structure

 

name

name of the subexpression

 
+
+
+

Returns

+

The matched substring, or NULL if an error +occurred. You have to free the string yourself.

+

[allow-none]

+
+

Since: 2.14

+
+
+
+

g_match_info_fetch_named_pos ()

+
gboolean
+g_match_info_fetch_named_pos (const GMatchInfo *match_info,
+                              const gchar *name,
+                              gint *start_pos,
+                              gint *end_pos);
+

Retrieves the position in bytes of the capturing parentheses named name +.

+

If name + is a valid sub pattern name but it didn't match anything +(e.g. sub pattern "X", matching "b" against "(?P<X>a)?b") +then start_pos + and end_pos + are set to -1 and TRUE is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

match_info

GMatchInfo structure

 

name

name of the subexpression

 

start_pos

pointer to location where to store +the start position, or NULL.

[out][allow-none]

end_pos

pointer to location where to store +the end position, or NULL.

[out][allow-none]
+
+
+

Returns

+

TRUE if the position was fetched, FALSE otherwise. +If the position cannot be fetched, start_pos +and end_pos +are left unchanged.

+
+

Since: 2.14

+
+
+
+

g_match_info_fetch_all ()

+
gchar **
+g_match_info_fetch_all (const GMatchInfo *match_info);
+

Bundles up pointers to each of the matching substrings from a match +and stores them in an array of gchar pointers. The first element in +the returned array is the match number 0, i.e. the entire matched +text.

+

If a sub pattern didn't match anything (e.g. sub pattern 1, matching +"b" against "(a)?b") then an empty string is inserted.

+

If the last match was obtained using the DFA algorithm, that is using +g_regex_match_all() or g_regex_match_all_full(), the retrieved +strings are not that matched by sets of parentheses but that of the +matched substring. Substrings are matched in reverse order of length, +so the first one is the longest match.

+

The strings are fetched from the string passed to the match function, +so you cannot call this function after freeing the string.

+
+

Parameters

+
+++++ + + + + + +

match_info

a GMatchInfo structure

 
+
+
+

Returns

+

a NULL-terminated array of gchar * +pointers. It must be freed using g_strfreev(). If the previous +match failed NULL is returned.

+

[transfer full]

+
+

Since: 2.14

+
+
+
+

Types and Values

+
+

enum GRegexError

+

Error codes returned by regular expressions functions.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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 "(?", + "(?<" 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

+
 
+
+

Since: 2.14

+
+
+
+

G_REGEX_ERROR

+
#define G_REGEX_ERROR g_regex_error_quark ()
+
+

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

+
+
+
+

enum GRegexCompileFlags

+

Flags specifying compile-time options.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

+
 
+
+

Since: 2.14

+
+
+
+

enum GRegexMatchFlags

+

Flags specifying match-time options.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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 + 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

+
 
+
+

Since: 2.14

+
+
+
+

GRegex

+
typedef struct _GRegex 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

+
+
+
+

GMatchInfo

+
typedef struct _GMatchInfo GMatchInfo;
+

A GMatchInfo is an opaque struct used to return information about +matches.

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Pointer-Arrays.html b/docs/reference/glib/html/glib-Pointer-Arrays.html new file mode 100644 index 0000000..e16701a --- /dev/null +++ b/docs/reference/glib/html/glib-Pointer-Arrays.html @@ -0,0 +1,1046 @@ + + + + +Pointer Arrays: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Pointer Arrays

+

Pointer Arrays — arrays of pointers to any type of data, which + grow automatically as new elements are added

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GPtrArray * + +g_ptr_array_new () +
+GPtrArray * + +g_ptr_array_sized_new () +
+GPtrArray * + +g_ptr_array_new_with_free_func () +
+GPtrArray * + +g_ptr_array_new_full () +
+void + +g_ptr_array_set_free_func () +
+GPtrArray * + +g_ptr_array_ref () +
+void + +g_ptr_array_unref () +
+void + +g_ptr_array_add () +
+void + +g_ptr_array_insert () +
+gboolean + +g_ptr_array_remove () +
+gpointer + +g_ptr_array_remove_index () +
+gboolean + +g_ptr_array_remove_fast () +
+gpointer + +g_ptr_array_remove_index_fast () +
+GPtrArray * + +g_ptr_array_remove_range () +
+void + +g_ptr_array_sort () +
+void + +g_ptr_array_sort_with_data () +
+void + +g_ptr_array_set_size () +
#define +g_ptr_array_index() +
+gpointer * + +g_ptr_array_free () +
+void + +g_ptr_array_foreach () +
+
+
+

Types and Values

+
++++ + + + + +
structGPtrArray
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

Pointer Arrays are similar to Arrays but are used only for storing +pointers.

+

If you remove elements from the array, elements at the end of the +array are moved into the space previously occupied by the removed +element. This means that you should not rely on the index of particular +elements remaining the same. You should also be careful when deleting +elements while iterating over the array.

+

To create a pointer array, use g_ptr_array_new().

+

To add elements to a pointer array, use g_ptr_array_add().

+

To remove elements from a pointer array, use g_ptr_array_remove(), +g_ptr_array_remove_index() or g_ptr_array_remove_index_fast().

+

To access an element of a pointer array, use g_ptr_array_index().

+

To set the size of a pointer array, use g_ptr_array_set_size().

+

To free a pointer array, use g_ptr_array_free().

+

An example using a GPtrArray:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
GPtrArray *array;
+gchar *string1 = "one";
+gchar *string2 = "two";
+gchar *string3 = "three";
+
+array = g_ptr_array_new ();
+g_ptr_array_add (array, (gpointer) string1);
+g_ptr_array_add (array, (gpointer) string2);
+g_ptr_array_add (array, (gpointer) string3);
+
+if (g_ptr_array_index (array, 0) != (gpointer) string1)
+  g_print ("ERROR: got %p instead of %p\n",
+           g_ptr_array_index (array, 0), string1);
+
+g_ptr_array_free (array, TRUE);
+
+ +

+
+
+

Functions

+
+

g_ptr_array_new ()

+
GPtrArray *
+g_ptr_array_new (void);
+

Creates a new GPtrArray with a reference count of 1.

+
+

Returns

+

the new GPtrArray

+
+
+
+
+

g_ptr_array_sized_new ()

+
GPtrArray *
+g_ptr_array_sized_new (guint reserved_size);
+

Creates a new GPtrArray with reserved_size + pointers preallocated +and a reference count of 1. This avoids frequent reallocation, if +you are going to add many pointers to the array. Note however that +the size of the array is still 0.

+
+

Parameters

+
+++++ + + + + + +

reserved_size

number of pointers preallocated

 
+
+
+

Returns

+

the new GPtrArray

+
+
+
+
+

g_ptr_array_new_with_free_func ()

+
GPtrArray *
+g_ptr_array_new_with_free_func (GDestroyNotify element_free_func);
+

Creates a new GPtrArray with a reference count of 1 and use +element_free_func + for freeing each element when the array is destroyed +either via g_ptr_array_unref(), when g_ptr_array_free() is called with +free_segment + set to TRUE or when removing elements.

+
+

Parameters

+
+++++ + + + + + +

element_free_func

A function to free elements with +destroy array +or NULL.

[allow-none]
+
+
+

Returns

+

A new GPtrArray

+
+

Since: 2.22

+
+
+
+

g_ptr_array_new_full ()

+
GPtrArray *
+g_ptr_array_new_full (guint reserved_size,
+                      GDestroyNotify element_free_func);
+

Creates a new GPtrArray with reserved_size + pointers preallocated +and a reference count of 1. This avoids frequent reallocation, if +you are going to add many pointers to the array. Note however that +the size of the array is still 0. It also set element_free_func + +for freeing each element when the array is destroyed either via +g_ptr_array_unref(), when g_ptr_array_free() is called with +free_segment + set to TRUE or when removing elements.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

reserved_size

number of pointers preallocated

 

element_free_func

A function to free elements with +destroy array +or NULL.

[allow-none]
+
+
+

Returns

+

A new GPtrArray

+
+

Since: 2.30

+
+
+
+

g_ptr_array_set_free_func ()

+
void
+g_ptr_array_set_free_func (GPtrArray *array,
+                           GDestroyNotify element_free_func);
+

Sets a function for freeing each element when array + is destroyed +either via g_ptr_array_unref(), when g_ptr_array_free() is called +with free_segment + set to TRUE or when removing elements.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

A GPtrArray

 

element_free_func

A function to free elements with +destroy array +or NULL.

[allow-none]
+
+

Since: 2.22

+
+
+
+

g_ptr_array_ref ()

+
GPtrArray *
+g_ptr_array_ref (GPtrArray *array);
+

Atomically increments the reference count of array + by one. +This function is thread-safe and may be called from any thread.

+
+

Parameters

+
+++++ + + + + + +

array

a GPtrArray

 
+
+
+

Returns

+

The passed in GPtrArray

+
+

Since: 2.22

+
+
+
+

g_ptr_array_unref ()

+
void
+g_ptr_array_unref (GPtrArray *array);
+

Atomically decrements the reference count of array + by one. If the +reference count drops to 0, the effect is the same as calling +g_ptr_array_free() with free_segment + set to TRUE. This function +is MT-safe and may be called from any thread.

+
+

Parameters

+
+++++ + + + + + +

array

A GPtrArray

 
+
+

Since: 2.22

+
+
+
+

g_ptr_array_add ()

+
void
+g_ptr_array_add (GPtrArray *array,
+                 gpointer data);
+

Adds a pointer to the end of the pointer array. The array will grow +in size automatically if necessary.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GPtrArray

 

data

the pointer to add

 
+
+
+
+
+

g_ptr_array_insert ()

+
void
+g_ptr_array_insert (GPtrArray *array,
+                    gint index_,
+                    gpointer data);
+

Inserts an element into the pointer array at the given index. The +array will grow in size automatically if necessary.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

array

a GPtrArray

 

index_

the index to place the new element at, or -1 to append

 

data

the pointer to add.

 
+
+

Since: 2.40

+
+
+
+

g_ptr_array_remove ()

+
gboolean
+g_ptr_array_remove (GPtrArray *array,
+                    gpointer data);
+

Removes the first occurrence of the given pointer from the pointer +array. The following elements are moved down one place. If array + +has a non-NULL GDestroyNotify function it is called for the +removed element.

+

It returns TRUE if the pointer was removed, or FALSE if the +pointer was not found.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GPtrArray

 

data

the pointer to remove

 
+
+
+

Returns

+

TRUE if the pointer is removed, FALSE if the pointer +is not found in the array

+
+
+
+
+

g_ptr_array_remove_index ()

+
gpointer
+g_ptr_array_remove_index (GPtrArray *array,
+                          guint index_);
+

Removes the pointer at the given index from the pointer array. +The following elements are moved down one place. If array + has +a non-NULL GDestroyNotify function it is called for the removed +element.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GPtrArray

 

index_

the index of the pointer to remove

 
+
+
+

Returns

+

the pointer which was removed

+
+
+
+
+

g_ptr_array_remove_fast ()

+
gboolean
+g_ptr_array_remove_fast (GPtrArray *array,
+                         gpointer data);
+

Removes the first occurrence of the given pointer from the pointer +array. The last element in the array is used to fill in the space, +so this function does not preserve the order of the array. But it +is faster than g_ptr_array_remove(). If array + has a non-NULL +GDestroyNotify function it is called for the removed element.

+

It returns TRUE if the pointer was removed, or FALSE if the +pointer was not found.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GPtrArray

 

data

the pointer to remove

 
+
+
+

Returns

+

TRUE if the pointer was found in the array

+
+
+
+
+

g_ptr_array_remove_index_fast ()

+
gpointer
+g_ptr_array_remove_index_fast (GPtrArray *array,
+                               guint index_);
+

Removes the pointer at the given index from the pointer array. +The last element in the array is used to fill in the space, so +this function does not preserve the order of the array. But it +is faster than g_ptr_array_remove_index(). If array + has a non-NULL +GDestroyNotify function it is called for the removed element.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GPtrArray

 

index_

the index of the pointer to remove

 
+
+
+

Returns

+

the pointer which was removed

+
+
+
+
+

g_ptr_array_remove_range ()

+
GPtrArray *
+g_ptr_array_remove_range (GPtrArray *array,
+                          guint index_,
+                          guint length);
+

Removes the given number of pointers starting at the given index +from a GPtrArray. The following elements are moved to close the +gap. If array + has a non-NULL GDestroyNotify function it is +called for the removed elements.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

array

a GPtrArray +

 

index_

the index of the first pointer to remove

 

length

the number of pointers to remove

 
+
+
+

Returns

+

the array +

+
+

Since: 2.4

+
+
+
+

g_ptr_array_sort ()

+
void
+g_ptr_array_sort (GPtrArray *array,
+                  GCompareFunc compare_func);
+

Sorts the array, using compare_func + which should be a qsort()-style +comparison function (returns less than zero for first arg is less +than second arg, zero for equal, greater than zero if irst arg is +greater than second arg).

+

Note that the comparison function for g_ptr_array_sort() doesn't +take the pointers from the array as arguments, it takes pointers to +the pointers in the array.

+

This is guaranteed to be a stable sort since version 2.32.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GPtrArray

 

compare_func

comparison function

 
+
+
+
+
+

g_ptr_array_sort_with_data ()

+
void
+g_ptr_array_sort_with_data (GPtrArray *array,
+                            GCompareDataFunc compare_func,
+                            gpointer user_data);
+

Like g_ptr_array_sort(), but the comparison function has an extra +user data argument.

+

Note that the comparison function for g_ptr_array_sort_with_data() +doesn't take the pointers from the array as arguments, it takes +pointers to the pointers in the array.

+

This is guaranteed to be a stable sort since version 2.32.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

array

a GPtrArray

 

compare_func

comparison function

 

user_data

data to pass to compare_func +

 
+
+
+
+
+

g_ptr_array_set_size ()

+
void
+g_ptr_array_set_size (GPtrArray *array,
+                      gint length);
+

Sets the size of the array. When making the array larger, +newly-added elements will be set to NULL. When making it smaller, +if array + has a non-NULL GDestroyNotify function then it will be +called for the removed elements.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GPtrArray

 

length

the new length of the pointer array

 
+
+
+
+
+

g_ptr_array_index()

+
#define             g_ptr_array_index(array,index_)
+

Returns the pointer at the given index of the pointer array.

+

This does not perform bounds checking on the given index_ +, +so you are responsible for checking it against the array length.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GPtrArray

 

index_

the index of the pointer to return

 
+
+
+

Returns

+

the pointer at the given index

+
+
+
+
+

g_ptr_array_free ()

+
gpointer *
+g_ptr_array_free (GPtrArray *array,
+                  gboolean free_seg);
+

Frees the memory allocated for the GPtrArray. If free_seg + is TRUE +it frees the memory block holding the elements as well. Pass FALSE +if you want to free the GPtrArray wrapper but preserve the +underlying array for use elsewhere. If the reference count of array + +is greater than one, the GPtrArray wrapper is preserved but the +size of array + will be set to zero.

+

If array contents point to dynamically-allocated memory, they should +be freed separately if free_seg + is TRUE and no GDestroyNotify +function has been set for array +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

array

a GPtrArray

 

free_seg

if TRUE the actual pointer array is freed as well

 
+
+
+

Returns

+

the pointer array if free_seg +is FALSE, otherwise NULL. +The pointer array should be freed using g_free().

+
+
+
+
+

g_ptr_array_foreach ()

+
void
+g_ptr_array_foreach (GPtrArray *array,
+                     GFunc func,
+                     gpointer user_data);
+

Calls a function for each element of a GPtrArray.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

array

a GPtrArray

 

func

the function to call for each array element

 

user_data

user data to pass to the function

 
+
+

Since: 2.4

+
+
+
+

Types and Values

+
+

struct GPtrArray

+
struct GPtrArray {
+  gpointer *pdata;
+  guint	    len;
+};
+
+

Contains the public fields of a pointer array.

+
+

Members

+
+++++ + + + + + + + + + + + + +

gpointer *pdata;

points to the array of pointers, which may be moved when the +array grows

 

guint len;

number of pointers in the array

 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Quarks.html b/docs/reference/glib/html/glib-Quarks.html new file mode 100644 index 0000000..9fed1c6 --- /dev/null +++ b/docs/reference/glib/html/glib-Quarks.html @@ -0,0 +1,371 @@ + + + + +Quarks: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Quarks

+

Quarks — a 2-way association between a string and a + unique integer identifier

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define +G_DEFINE_QUARK() +
+GQuark + +g_quark_from_string () +
+GQuark + +g_quark_from_static_string () +
const gchar * + +g_quark_to_string () +
+GQuark + +g_quark_try_string () +
const gchar * + +g_intern_string () +
const gchar * + +g_intern_static_string () +
+
+
+

Types and Values

+
++++ + + + + +
typedefGQuark
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

Quarks are associations between strings and integer identifiers. +Given either the string or the GQuark identifier it is possible to +retrieve the other.

+

Quarks are used for both datasets and +keyed data lists.

+

To create a new quark from a string, use g_quark_from_string() or +g_quark_from_static_string().

+

To find the string corresponding to a given GQuark, use +g_quark_to_string().

+

To find the GQuark corresponding to a given string, use +g_quark_try_string().

+

Another use for the string pool maintained for the quark functions +is string interning, using g_intern_string() or +g_intern_static_string(). An interned string is a canonical +representation for a string. One important advantage of interned +strings is that they can be compared for equality by a simple +pointer comparison, rather than using strcmp().

+
+
+

Functions

+
+

G_DEFINE_QUARK()

+
#define             G_DEFINE_QUARK(QN, q_n)
+

A convenience macro which defines a function returning the +GQuark for the name QN +. The function will be named +q_n_quark() +.

+

Note that the quark name will be stringified automatically +in the macro, so you shouldn't use double quotes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

QN

the name to return a GQuark for

 

q_n

prefix for the function name

 
+
+

Since: 2.34

+
+
+
+

g_quark_from_string ()

+
GQuark
+g_quark_from_string (const gchar *string);
+

Gets the GQuark identifying the given string. If the string does +not currently have an associated GQuark, a new GQuark is created, +using a copy of the string.

+
+

Parameters

+
+++++ + + + + + +

string

a string.

[allow-none]
+
+
+

Returns

+

the GQuark identifying the string, or 0 if string +is NULL

+
+
+
+
+

g_quark_from_static_string ()

+
GQuark
+g_quark_from_static_string (const gchar *string);
+

Gets the GQuark identifying the given (static) string. If the +string does not currently have an associated GQuark, a new GQuark +is created, linked to the given string.

+

Note that this function is identical to g_quark_from_string() except +that if a new GQuark is created the string itself is used rather +than a copy. This saves memory, but can only be used if the string +will continue to exist until the program terminates. It can be used +with statically allocated strings in the main program, but not with +statically allocated memory in dynamically loaded modules, if you +expect to ever unload the module again (e.g. do not use this +function in GTK+ theme engines).

+
+

Parameters

+
+++++ + + + + + +

string

a string.

[allow-none]
+
+
+

Returns

+

the GQuark identifying the string, or 0 if string +is NULL

+
+
+
+
+

g_quark_to_string ()

+
const gchar *
+g_quark_to_string (GQuark quark);
+

Gets the string associated with the given GQuark.

+
+

Parameters

+
+++++ + + + + + +

quark

a GQuark.

 
+
+
+

Returns

+

the string associated with the GQuark

+
+
+
+
+

g_quark_try_string ()

+
GQuark
+g_quark_try_string (const gchar *string);
+

Gets the GQuark associated with the given string, or 0 if string is +NULL or it has no associated GQuark.

+

If you want the GQuark to be created if it doesn't already exist, +use g_quark_from_string() or g_quark_from_static_string().

+
+

Parameters

+
+++++ + + + + + +

string

a string.

[allow-none]
+
+
+

Returns

+

the GQuark associated with the string, or 0 if string +is +NULL or there is no GQuark associated with it

+
+
+
+
+

g_intern_string ()

+
const gchar *
+g_intern_string (const gchar *string);
+

Returns a canonical representation for string +. Interned strings +can be compared for equality by comparing the pointers, instead of +using strcmp().

+
+

Parameters

+
+++++ + + + + + +

string

a string.

[allow-none]
+
+
+

Returns

+

a canonical representation for the string

+
+

Since: 2.10

+
+
+
+

g_intern_static_string ()

+
const gchar *
+g_intern_static_string (const gchar *string);
+

Returns a canonical representation for string +. Interned strings +can be compared for equality by comparing the pointers, instead of +using strcmp(). g_intern_static_string() does not copy the string, +therefore string + must not be freed or modified.

+
+

Parameters

+
+++++ + + + + + +

string

a static string.

[allow-none]
+
+
+

Returns

+

a canonical representation for the string

+
+

Since: 2.10

+
+
+
+

Types and Values

+
+

GQuark

+
typedef guint32 GQuark;
+
+

A GQuark is a non-zero integer which uniquely identifies a +particular string. A GQuark value of zero is associated to NULL.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Random-Numbers.html b/docs/reference/glib/html/glib-Random-Numbers.html new file mode 100644 index 0000000..121f2e6 --- /dev/null +++ b/docs/reference/glib/html/glib-Random-Numbers.html @@ -0,0 +1,760 @@ + + + + +Random Numbers: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Random Numbers

+

Random Numbers — pseudo-random number generator

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GRand * + +g_rand_new_with_seed () +
+GRand * + +g_rand_new_with_seed_array () +
+GRand * + +g_rand_new () +
+GRand * + +g_rand_copy () +
+void + +g_rand_free () +
+void + +g_rand_set_seed () +
+void + +g_rand_set_seed_array () +
#define +g_rand_boolean() +
+guint32 + +g_rand_int () +
+gint32 + +g_rand_int_range () +
+gdouble + +g_rand_double () +
+gdouble + +g_rand_double_range () +
+void + +g_random_set_seed () +
#defineg_random_boolean
+guint32 + +g_random_int () +
+gint32 + +g_random_int_range () +
+gdouble + +g_random_double () +
+gdouble + +g_random_double_range () +
+
+
+

Types and Values

+
++++ + + + + +
 GRand
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The following functions allow you to use a portable, fast and good +pseudo-random number generator (PRNG).

+

Do not use this API for cryptographic purposes such as key +generation, nonces, salts or one-time pads.

+

This PRNG is suitable for non-cryptographic use such as in games +(shuffling a card deck, generating levels), generating data for +a test suite, etc. If you need random data for cryptographic +purposes, it is recommended to use platform-specific APIs such +as /dev/random on UNIX, or CryptGenRandom() on Windows.

+

GRand uses the Mersenne Twister PRNG, which was originally +developed by Makoto Matsumoto and Takuji Nishimura. Further +information can be found at +this page.

+

If you just need a random number, you simply call the g_random_* +functions, which will create a globally used GRand and use the +according g_rand_* functions internally. Whenever you need a +stream of reproducible random numbers, you better create a +GRand yourself and use the g_rand_* functions directly, which +will also be slightly faster. Initializing a GRand with a +certain seed will produce exactly the same series of random +numbers on all platforms. This can thus be used as a seed for +e.g. games.

+

The g_rand*_range functions will return high quality equally +distributed random numbers, whereas for example the +(g_random_int()%max) approach often +doesn't yield equally distributed numbers.

+

GLib changed the seeding algorithm for the pseudo-random number +generator Mersenne Twister, as used by GRand. This was necessary, +because some seeds would yield very bad pseudo-random streams. +Also the pseudo-random integers generated by g_rand*_int_range() +will have a slightly better equal distribution with the new +version of GLib.

+

The original seeding and generation algorithms, as found in +GLib 2.0.x, can be used instead of the new ones by setting the +environment variable G_RANDOM_VERSION to the value of '2.0'. +Use the GLib-2.0 algorithms only if you have sequences of numbers +generated with Glib-2.0 that you need to reproduce exactly.

+
+
+

Functions

+
+

g_rand_new_with_seed ()

+
GRand *
+g_rand_new_with_seed (guint32 seed);
+

Creates a new random number generator initialized with seed +.

+
+

Parameters

+
+++++ + + + + + +

seed

a value to initialize the random number generator

 
+
+
+

Returns

+

the new GRand

+
+
+
+
+

g_rand_new_with_seed_array ()

+
GRand *
+g_rand_new_with_seed_array (const guint32 *seed,
+                            guint seed_length);
+

Creates a new random number generator initialized with seed +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

seed

an array of seeds to initialize the random number generator

 

seed_length

an array of seeds to initialize the random number +generator

 
+
+
+

Returns

+

the new GRand

+
+

Since: 2.4

+
+
+
+

g_rand_new ()

+
GRand *
+g_rand_new (void);
+

Creates a new random number generator initialized with a seed taken +either from /dev/urandom (if existing) or from the current time +(as a fallback).

+

On Windows, the seed is taken from rand_s().

+
+

Returns

+

the new GRand

+
+
+
+
+

g_rand_copy ()

+
GRand *
+g_rand_copy (GRand *rand_);
+

Copies a GRand into a new one with the same exact state as before. +This way you can take a snapshot of the random number generator for +replaying later.

+
+

Parameters

+
+++++ + + + + + +

rand_

a GRand

 
+
+
+

Returns

+

the new GRand

+
+

Since: 2.4

+
+
+
+

g_rand_free ()

+
void
+g_rand_free (GRand *rand_);
+

Frees the memory allocated for the GRand.

+
+

Parameters

+
+++++ + + + + + +

rand_

a GRand

 
+
+
+
+
+

g_rand_set_seed ()

+
void
+g_rand_set_seed (GRand *rand_,
+                 guint32 seed);
+

Sets the seed for the random number generator GRand to seed +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

rand_

a GRand

 

seed

a value to reinitialize the random number generator

 
+
+
+
+
+

g_rand_set_seed_array ()

+
void
+g_rand_set_seed_array (GRand *rand_,
+                       const guint32 *seed,
+                       guint seed_length);
+

Initializes the random number generator by an array of longs. +Array can be of arbitrary size, though only the first 624 values +are taken. This function is useful if you have many low entropy +seeds, or if you require more then 32 bits of actual entropy for +your application.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

rand_

a GRand

 

seed

array to initialize with

 

seed_length

length of array

 
+
+

Since: 2.4

+
+
+
+

g_rand_boolean()

+
#define             g_rand_boolean(rand_)
+

Returns a random gboolean from rand_ +. +This corresponds to a unbiased coin toss.

+
+

Parameters

+
+++++ + + + + + +

rand_

a GRand

 
+
+
+

Returns

+

a random gboolean

+
+
+
+
+

g_rand_int ()

+
guint32
+g_rand_int (GRand *rand_);
+

Returns the next random guint32 from rand_ + equally distributed over +the range [0..2^32-1].

+
+

Parameters

+
+++++ + + + + + +

rand_

a GRand

 
+
+
+

Returns

+

a random number

+
+
+
+
+

g_rand_int_range ()

+
gint32
+g_rand_int_range (GRand *rand_,
+                  gint32 begin,
+                  gint32 end);
+

Returns the next random gint32 from rand_ + equally distributed over +the range [begin +..end +-1].

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

rand_

a GRand

 

begin

lower closed bound of the interval

 

end

upper open bound of the interval

 
+
+
+

Returns

+

a random number

+
+
+
+
+

g_rand_double ()

+
gdouble
+g_rand_double (GRand *rand_);
+

Returns the next random gdouble from rand_ + equally distributed over +the range [0..1).

+
+

Parameters

+
+++++ + + + + + +

rand_

a GRand

 
+
+
+

Returns

+

a random number

+
+
+
+
+

g_rand_double_range ()

+
gdouble
+g_rand_double_range (GRand *rand_,
+                     gdouble begin,
+                     gdouble end);
+

Returns the next random gdouble from rand_ + equally distributed over +the range [begin +..end +).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

rand_

a GRand

 

begin

lower closed bound of the interval

 

end

upper open bound of the interval

 
+
+
+

Returns

+

a random number

+
+
+
+
+

g_random_set_seed ()

+
void
+g_random_set_seed (guint32 seed);
+

Sets the seed for the global random number generator, which is used +by the g_random_* functions, to seed +.

+
+

Parameters

+
+++++ + + + + + +

seed

a value to reinitialize the global random number generator

 
+
+
+
+
+

g_random_boolean

+
#define             g_random_boolean()
+

Returns a random gboolean. +This corresponds to a unbiased coin toss.

+
+

Returns

+

a random gboolean

+
+
+
+
+

g_random_int ()

+
guint32
+g_random_int (void);
+

Return a random guint32 equally distributed over the range +[0..2^32-1].

+
+

Returns

+

a random number

+
+
+
+
+

g_random_int_range ()

+
gint32
+g_random_int_range (gint32 begin,
+                    gint32 end);
+

Returns a random gint32 equally distributed over the range +[begin +..end +-1].

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

begin

lower closed bound of the interval

 

end

upper open bound of the interval

 
+
+
+

Returns

+

a random number

+
+
+
+
+

g_random_double ()

+
gdouble
+g_random_double (void);
+

Returns a random gdouble equally distributed over the range [0..1).

+
+

Returns

+

a random number

+
+
+
+
+

g_random_double_range ()

+
gdouble
+g_random_double_range (gdouble begin,
+                       gdouble end);
+

Returns a random gdouble equally distributed over the range +[begin +..end +).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

begin

lower closed bound of the interval

 

end

upper open bound of the interval

 
+
+
+

Returns

+

a random number

+
+
+
+
+

Types and Values

+
+

GRand

+
typedef struct _GRand GRand;
+

The GRand struct is an opaque data structure. It should only be +accessed through the g_rand_* functions.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Relations-and-Tuples.html b/docs/reference/glib/html/glib-Relations-and-Tuples.html new file mode 100644 index 0000000..fe43d86 --- /dev/null +++ b/docs/reference/glib/html/glib-Relations-and-Tuples.html @@ -0,0 +1,653 @@ + + + + +Relations and Tuples: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Relations and Tuples

+

Relations and Tuples — tables of data which can be indexed on any + number of fields

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GRelation * + +g_relation_new () +
+void + +g_relation_index () +
+void + +g_relation_insert () +
+gboolean + +g_relation_exists () +
+gint + +g_relation_count () +
+GTuples * + +g_relation_select () +
+gint + +g_relation_delete () +
+void + +g_relation_destroy () +
+void + +g_relation_print () +
+void + +g_tuples_destroy () +
+gpointer + +g_tuples_index () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GRelation
structGTuples
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

A GRelation is a table of data which can be indexed on any number +of fields, rather like simple database tables. A GRelation contains +a number of records, called tuples. Each record contains a number of +fields. Records are not ordered, so it is not possible to find the +record at a particular index.

+

Note that GRelation tables are currently limited to 2 fields.

+

To create a GRelation, use g_relation_new().

+

To specify which fields should be indexed, use g_relation_index(). +Note that this must be called before any tuples are added to the +GRelation.

+

To add records to a GRelation use g_relation_insert().

+

To determine if a given record appears in a GRelation, use +g_relation_exists(). Note that fields are compared directly, so +pointers must point to the exact same position (i.e. different +copies of the same string will not match.)

+

To count the number of records which have a particular value in a +given field, use g_relation_count().

+

To get all the records which have a particular value in a given +field, use g_relation_select(). To access fields of the resulting +records, use g_tuples_index(). To free the resulting records use +g_tuples_destroy().

+

To delete all records which have a particular value in a given +field, use g_relation_delete().

+

To destroy the GRelation, use g_relation_destroy().

+

To help debug GRelation objects, use g_relation_print().

+

GRelation has been marked as deprecated, since this API has never +been fully implemented, is not very actively maintained and rarely +used.

+
+
+

Functions

+
+

g_relation_new ()

+
GRelation *
+g_relation_new (gint fields);
+
+

g_relation_new has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Creates a new GRelation with the given number of fields. Note that +currently the number of fields must be 2.

+
+

Parameters

+
+++++ + + + + + +

fields

the number of fields.

 
+
+
+

Returns

+

a new GRelation.

+
+
+
+
+

g_relation_index ()

+
void
+g_relation_index (GRelation *relation,
+                  gint field,
+                  GHashFunc hash_func,
+                  GEqualFunc key_equal_func);
+
+

g_relation_index has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Creates an index on the given field. Note that this must be called +before any records are added to the GRelation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

relation

a GRelation.

 

field

the field to index, counting from 0.

 

hash_func

a function to produce a hash value from the field data.

 

key_equal_func

a function to compare two values of the given field.

 
+
+
+
+
+

g_relation_insert ()

+
void
+g_relation_insert (GRelation *relation,
+                   ...);
+
+

g_relation_insert has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Inserts a record into a GRelation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

relation

a GRelation.

 

...

the fields of the record to add. These must match the +number of fields in the GRelation, and of type gpointer +or gconstpointer.

 
+
+
+
+
+

g_relation_exists ()

+
gboolean
+g_relation_exists (GRelation *relation,
+                   ...);
+
+

g_relation_exists has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Returns TRUE if a record with the given values exists in a +GRelation. Note that the values are compared directly, so that, for +example, two copies of the same string will not match.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

relation

a GRelation.

 

...

the fields of the record to compare. The number must match +the number of fields in the GRelation.

 
+
+
+

Returns

+

TRUE if a record matches.

+
+
+
+
+

g_relation_count ()

+
gint
+g_relation_count (GRelation *relation,
+                  gconstpointer key,
+                  gint field);
+
+

g_relation_count has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Returns the number of tuples in a GRelation that have the given +value in the given field.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

relation

a GRelation.

 

key

the value to compare with.

 

field

the field of each record to match.

 
+
+
+

Returns

+

the number of matches.

+
+
+
+
+

g_relation_select ()

+
GTuples *
+g_relation_select (GRelation *relation,
+                   gconstpointer key,
+                   gint field);
+
+

g_relation_select has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Returns all of the tuples which have the given key in the given +field. Use g_tuples_index() to access the returned records. The +returned records should be freed with g_tuples_destroy().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

relation

a GRelation.

 

key

the value to compare with.

 

field

the field of each record to match.

 
+
+
+

Returns

+

the records (tuples) that matched.

+
+
+
+
+

g_relation_delete ()

+
gint
+g_relation_delete (GRelation *relation,
+                   gconstpointer key,
+                   gint field);
+
+

g_relation_delete has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Deletes any records from a GRelation that have the given key value +in the given field.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

relation

a GRelation.

 

key

the value to compare with.

 

field

the field of each record to match.

 
+
+
+

Returns

+

the number of records deleted.

+
+
+
+
+

g_relation_destroy ()

+
void
+g_relation_destroy (GRelation *relation);
+
+

g_relation_destroy has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Destroys the GRelation, freeing all memory allocated. However, it +does not free memory allocated for the tuple data, so you should +free that first if appropriate.

+
+

Parameters

+
+++++ + + + + + +

relation

a GRelation.

 
+
+
+
+
+

g_relation_print ()

+
void
+g_relation_print (GRelation *relation);
+
+

g_relation_print has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Outputs information about all records in a GRelation, as well as +the indexes. It is for debugging.

+
+

Parameters

+
+++++ + + + + + +

relation

a GRelation.

 
+
+
+
+
+

g_tuples_destroy ()

+
void
+g_tuples_destroy (GTuples *tuples);
+
+

g_tuples_destroy has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Frees the records which were returned by g_relation_select(). This +should always be called after g_relation_select() when you are +finished with the records. The records are not removed from the +GRelation.

+
+

Parameters

+
+++++ + + + + + +

tuples

the tuple data to free.

 
+
+
+
+
+

g_tuples_index ()

+
gpointer
+g_tuples_index (GTuples *tuples,
+                gint index_,
+                gint field);
+
+

g_tuples_index has been deprecated since version 2.26 and should not be used in newly-written code.

+

Rarely used API

+
+

Gets a field from the records returned by g_relation_select(). It +returns the given field of the record at the given index. The +returned value should not be changed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

tuples

the tuple data, returned by g_relation_select().

 

index_

the index of the record.

 

field

the field to return.

 
+
+
+

Returns

+

the field of the record.

+
+
+
+
+

Types and Values

+
+

GRelation

+
typedef struct _GRelation GRelation;
+

The GRelation struct is an opaque data structure to represent a +Relation. It should +only be accessed via the following functions.

+
+
+
+

struct GTuples

+
struct GTuples {
+  guint len;
+};
+
+

The GTuples struct is used to return records (or tuples) from the +GRelation by g_relation_select(). It only contains one public +member - the number of records that matched. To access the matched +records, you must use g_tuples_index().

+
+

Members

+
+++++ + + + + + +

guint len;

the number of records that matched.

 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Sequences.html b/docs/reference/glib/html/glib-Sequences.html new file mode 100644 index 0000000..0335512 --- /dev/null +++ b/docs/reference/glib/html/glib-Sequences.html @@ -0,0 +1,2068 @@ + + + + +Sequences: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Sequences

+

Sequences — scalable lists

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gint + +(*GSequenceIterCompareFunc) () +
+GSequence * + +g_sequence_new () +
+void + +g_sequence_free () +
+gint + +g_sequence_get_length () +
+gboolean + +g_sequence_is_empty () +
+void + +g_sequence_foreach () +
+void + +g_sequence_foreach_range () +
+void + +g_sequence_sort () +
+void + +g_sequence_sort_iter () +
+GSequenceIter * + +g_sequence_get_begin_iter () +
+GSequenceIter * + +g_sequence_get_end_iter () +
+GSequenceIter * + +g_sequence_get_iter_at_pos () +
+GSequenceIter * + +g_sequence_append () +
+GSequenceIter * + +g_sequence_prepend () +
+GSequenceIter * + +g_sequence_insert_before () +
+void + +g_sequence_move () +
+void + +g_sequence_swap () +
+GSequenceIter * + +g_sequence_insert_sorted () +
+GSequenceIter * + +g_sequence_insert_sorted_iter () +
+void + +g_sequence_sort_changed () +
+void + +g_sequence_sort_changed_iter () +
+void + +g_sequence_remove () +
+void + +g_sequence_remove_range () +
+void + +g_sequence_move_range () +
+GSequenceIter * + +g_sequence_search () +
+GSequenceIter * + +g_sequence_search_iter () +
+GSequenceIter * + +g_sequence_lookup () +
+GSequenceIter * + +g_sequence_lookup_iter () +
+gpointer + +g_sequence_get () +
+void + +g_sequence_set () +
+gboolean + +g_sequence_iter_is_begin () +
+gboolean + +g_sequence_iter_is_end () +
+GSequenceIter * + +g_sequence_iter_next () +
+GSequenceIter * + +g_sequence_iter_prev () +
+gint + +g_sequence_iter_get_position () +
+GSequenceIter * + +g_sequence_iter_move () +
+GSequence * + +g_sequence_iter_get_sequence () +
+gint + +g_sequence_iter_compare () +
+GSequenceIter * + +g_sequence_range_get_midpoint () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GSequence
typedefGSequenceIter
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The GSequence data structure has the API of a list, but is +implemented internally with a balanced binary tree. This means that +it is possible to maintain a sorted list of n elements in time O(n log n). +The data contained in each element can be either integer values, by using +of the Type Conversion Macros, or simply +pointers to any type of data.

+

A GSequence is accessed through "iterators", represented by a +GSequenceIter. An iterator represents a position between two +elements of the sequence. For example, the "begin" iterator +represents the gap immediately before the first element of the +sequence, and the "end" iterator represents the gap immediately +after the last element. In an empty sequence, the begin and end +iterators are the same.

+

Some methods on GSequence operate on ranges of items. For example +g_sequence_foreach_range() will call a user-specified function on +each element with the given range. The range is delimited by the +gaps represented by the passed-in iterators, so if you pass in the +begin and end iterators, the range in question is the entire +sequence.

+

The function g_sequence_get() is used with an iterator to access the +element immediately following the gap that the iterator represents. +The iterator is said to "point" to that element.

+

Iterators are stable across most operations on a GSequence. For +example an iterator pointing to some element of a sequence will +continue to point to that element even after the sequence is sorted. +Even moving an element to another sequence using for example +g_sequence_move_range() will not invalidate the iterators pointing +to it. The only operation that will invalidate an iterator is when +the element it points to is removed from any sequence.

+
+
+

Functions

+
+

GSequenceIterCompareFunc ()

+
gint
+(*GSequenceIterCompareFunc) (GSequenceIter *a,
+                             GSequenceIter *b,
+                             gpointer data);
+

A GSequenceIterCompareFunc is a function used to compare iterators. +It must return zero if the iterators compare equal, a negative value +if a + comes before b +, and a positive value if b + comes before a +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

a

a GSequenceIter

 

b

a GSequenceIter

 

data

user data

 
+
+
+

Returns

+

zero if the iterators are equal, a negative value if a +comes before b +, and a positive value if b +comes before a +.

+
+
+
+
+

g_sequence_new ()

+
GSequence *
+g_sequence_new (GDestroyNotify data_destroy);
+

Creates a new GSequence. The data_destroy + function, if non-NULL will +be called on all items when the sequence is destroyed and on items that +are removed from the sequence.

+
+

Parameters

+
+++++ + + + + + +

data_destroy

a GDestroyNotify function, or NULL.

[allow-none]
+
+
+

Returns

+

a new GSequence

+
+

Since: 2.14

+
+
+
+

g_sequence_free ()

+
void
+g_sequence_free (GSequence *seq);
+

Frees the memory allocated for seq +. If seq + has a data destroy +function associated with it, that function is called on all items +in seq +.

+
+

Parameters

+
+++++ + + + + + +

seq

a GSequence

 
+
+

Since: 2.14

+
+
+
+

g_sequence_get_length ()

+
gint
+g_sequence_get_length (GSequence *seq);
+

Returns the length of seq +. Note that this method is O(h) where `h' is the +height of the tree. It is thus more efficient to use g_sequence_is_empty() +when comparing the length to zero.

+
+

Parameters

+
+++++ + + + + + +

seq

a GSequence

 
+
+
+

Returns

+

the length of seq +

+
+

Since: 2.14

+
+
+
+

g_sequence_is_empty ()

+
gboolean
+g_sequence_is_empty (GSequence *seq);
+

Returns TRUE if the sequence contains zero items.

+

This function is functionally identical to checking the result of +g_sequence_get_length() being equal to zero. However this function is +implemented in O(1) running time.

+
+

Parameters

+
+++++ + + + + + +

seq

a GSequence

 
+
+
+

Returns

+

TRUE if the sequence is empty, otherwise FALSE.

+
+

Since: 2.48

+
+
+
+

g_sequence_foreach ()

+
void
+g_sequence_foreach (GSequence *seq,
+                    GFunc func,
+                    gpointer user_data);
+

Calls func + for each item in the sequence passing user_data + +to the function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

seq

a GSequence

 

func

the function to call for each item in seq +

 

user_data

user data passed to func +

 
+
+

Since: 2.14

+
+
+
+

g_sequence_foreach_range ()

+
void
+g_sequence_foreach_range (GSequenceIter *begin,
+                          GSequenceIter *end,
+                          GFunc func,
+                          gpointer user_data);
+

Calls func + for each item in the range (begin +, end +) passing +user_data + to the function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

begin

a GSequenceIter

 

end

a GSequenceIter

 

func

a GFunc

 

user_data

user data passed to func +

 
+
+

Since: 2.14

+
+
+
+

g_sequence_sort ()

+
void
+g_sequence_sort (GSequence *seq,
+                 GCompareDataFunc cmp_func,
+                 gpointer cmp_data);
+

Sorts seq + using cmp_func +.

+

cmp_func + is passed two items of seq + and should +return 0 if they are equal, a negative value if the +first comes before the second, and a positive value +if the second comes before the first.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

seq

a GSequence

 

cmp_func

the function used to sort the sequence

 

cmp_data

user data passed to cmp_func +

 
+
+

Since: 2.14

+
+
+
+

g_sequence_sort_iter ()

+
void
+g_sequence_sort_iter (GSequence *seq,
+                      GSequenceIterCompareFunc cmp_func,
+                      gpointer cmp_data);
+

Like g_sequence_sort(), but uses a GSequenceIterCompareFunc instead +of a GCompareDataFunc as the compare function

+

cmp_func + is called with two iterators pointing into seq +. It should +return 0 if the iterators are equal, a negative value if the first +iterator comes before the second, and a positive value if the second +iterator comes before the first.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

seq

a GSequence

 

cmp_func

the function used to compare iterators in the sequence

 

cmp_data

user data passed to cmp_func +

 
+
+

Since: 2.14

+
+
+
+

g_sequence_get_begin_iter ()

+
GSequenceIter *
+g_sequence_get_begin_iter (GSequence *seq);
+

Returns the begin iterator for seq +.

+
+

Parameters

+
+++++ + + + + + +

seq

a GSequence

 
+
+
+

Returns

+

the begin iterator for seq +.

+
+

Since: 2.14

+
+
+
+

g_sequence_get_end_iter ()

+
GSequenceIter *
+g_sequence_get_end_iter (GSequence *seq);
+

Returns the end iterator for seg +

+
+

Parameters

+
+++++ + + + + + +

seq

a GSequence

 
+
+
+

Returns

+

the end iterator for seq +

+
+

Since: 2.14

+
+
+
+

g_sequence_get_iter_at_pos ()

+
GSequenceIter *
+g_sequence_get_iter_at_pos (GSequence *seq,
+                            gint pos);
+

Returns the iterator at position pos +. If pos + is negative or larger +than the number of items in seq +, the end iterator is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

seq

a GSequence

 

pos

a position in seq +, or -1 for the end

 
+
+
+

Returns

+

The GSequenceIter at position pos +

+
+

Since: 2.14

+
+
+
+

g_sequence_append ()

+
GSequenceIter *
+g_sequence_append (GSequence *seq,
+                   gpointer data);
+

Adds a new item to the end of seq +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

seq

a GSequence

 

data

the data for the new item

 
+
+
+

Returns

+

an iterator pointing to the new item

+
+

Since: 2.14

+
+
+
+

g_sequence_prepend ()

+
GSequenceIter *
+g_sequence_prepend (GSequence *seq,
+                    gpointer data);
+

Adds a new item to the front of seq +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

seq

a GSequence

 

data

the data for the new item

 
+
+
+

Returns

+

an iterator pointing to the new item

+
+

Since: 2.14

+
+
+
+

g_sequence_insert_before ()

+
GSequenceIter *
+g_sequence_insert_before (GSequenceIter *iter,
+                          gpointer data);
+

Inserts a new item just before the item pointed to by iter +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

iter

a GSequenceIter

 

data

the data for the new item

 
+
+
+

Returns

+

an iterator pointing to the new item

+
+

Since: 2.14

+
+
+
+

g_sequence_move ()

+
void
+g_sequence_move (GSequenceIter *src,
+                 GSequenceIter *dest);
+

Moves the item pointed to by src + to the position indicated by dest +. +After calling this function dest + will point to the position immediately +after src +. It is allowed for src + and dest + to point into different +sequences.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

src

a GSequenceIter pointing to the item to move

 

dest

a GSequenceIter pointing to the position to which +the item is moved

 
+
+

Since: 2.14

+
+
+
+

g_sequence_swap ()

+
void
+g_sequence_swap (GSequenceIter *a,
+                 GSequenceIter *b);
+

Swaps the items pointed to by a + and b +. It is allowed for a + and b + +to point into difference sequences.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

a

a GSequenceIter

 

b

a GSequenceIter

 
+
+

Since: 2.14

+
+
+
+

g_sequence_insert_sorted ()

+
GSequenceIter *
+g_sequence_insert_sorted (GSequence *seq,
+                          gpointer data,
+                          GCompareDataFunc cmp_func,
+                          gpointer cmp_data);
+

Inserts data + into sequence + using func + to determine the new +position. The sequence must already be sorted according to cmp_func +; +otherwise the new position of data + is undefined.

+

cmp_func + is called with two items of the seq + and user_data +. +It should return 0 if the items are equal, a negative value +if the first item comes before the second, and a positive value +if the second item comes before the first.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

seq

a GSequence

 

data

the data to insert

 

cmp_func

the function used to compare items in the sequence

 

cmp_data

user data passed to cmp_func +.

 
+
+
+

Returns

+

a GSequenceIter pointing to the new item.

+
+

Since: 2.14

+
+
+
+

g_sequence_insert_sorted_iter ()

+
GSequenceIter *
+g_sequence_insert_sorted_iter (GSequence *seq,
+                               gpointer data,
+                               GSequenceIterCompareFunc iter_cmp,
+                               gpointer cmp_data);
+

Like g_sequence_insert_sorted(), but uses +a GSequenceIterCompareFunc instead of a GCompareDataFunc as +the compare function.

+

iter_cmp + is called with two iterators pointing into seq +. +It should return 0 if the iterators are equal, a negative +value if the first iterator comes before the second, and a +positive value if the second iterator comes before the first.

+

It is called with two iterators pointing into seq +. It should +return 0 if the iterators are equal, a negative value if the +first iterator comes before the second, and a positive value +if the second iterator comes before the first.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

seq

a GSequence

 

data

data for the new item

 

iter_cmp

the function used to compare iterators in the sequence

 

cmp_data

user data passed to cmp_func +

 
+
+
+

Returns

+

a GSequenceIter pointing to the new item

+
+

Since: 2.14

+
+
+
+

g_sequence_sort_changed ()

+
void
+g_sequence_sort_changed (GSequenceIter *iter,
+                         GCompareDataFunc cmp_func,
+                         gpointer cmp_data);
+

Moves the data pointed to a new position as indicated by cmp_func +. This +function should be called for items in a sequence already sorted according +to cmp_func + whenever some aspect of an item changes so that cmp_func + +may return different values for that item.

+

cmp_func + is called with two items of the seq + and user_data +. +It should return 0 if the items are equal, a negative value if +the first item comes before the second, and a positive value if +the second item comes before the first.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

iter

A GSequenceIter

 

cmp_func

the function used to compare items in the sequence

 

cmp_data

user data passed to cmp_func +.

 
+
+

Since: 2.14

+
+
+
+

g_sequence_sort_changed_iter ()

+
void
+g_sequence_sort_changed_iter (GSequenceIter *iter,
+                              GSequenceIterCompareFunc iter_cmp,
+                              gpointer cmp_data);
+

Like g_sequence_sort_changed(), but uses +a GSequenceIterCompareFunc instead of a GCompareDataFunc as +the compare function.

+

iter_cmp + is called with two iterators pointing into seq +. It should +return 0 if the iterators are equal, a negative value if the first +iterator comes before the second, and a positive value if the second +iterator comes before the first.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

iter

a GSequenceIter

 

iter_cmp

the function used to compare iterators in the sequence

 

cmp_data

user data passed to cmp_func +

 
+
+

Since: 2.14

+
+
+
+

g_sequence_remove ()

+
void
+g_sequence_remove (GSequenceIter *iter);
+

Removes the item pointed to by iter +. It is an error to pass the +end iterator to this function.

+

If the sequence has a data destroy function associated with it, this +function is called on the data for the removed item.

+
+

Parameters

+
+++++ + + + + + +

iter

a GSequenceIter

 
+
+

Since: 2.14

+
+
+
+

g_sequence_remove_range ()

+
void
+g_sequence_remove_range (GSequenceIter *begin,
+                         GSequenceIter *end);
+

Removes all items in the (begin +, end +) range.

+

If the sequence has a data destroy function associated with it, this +function is called on the data for the removed items.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

begin

a GSequenceIter

 

end

a GSequenceIter

 
+
+

Since: 2.14

+
+
+
+

g_sequence_move_range ()

+
void
+g_sequence_move_range (GSequenceIter *dest,
+                       GSequenceIter *begin,
+                       GSequenceIter *end);
+

Inserts the (begin +, end +) range at the destination pointed to by ptr. +The begin + and end + iters must point into the same sequence. It is +allowed for dest + to point to a different sequence than the one pointed +into by begin + and end +.

+

If dest + is NULL, the range indicated by begin + and end + is +removed from the sequence. If dest + iter points to a place within +the (begin +, end +) range, the range does not move.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dest

a GSequenceIter

 

begin

a GSequenceIter

 

end

a GSequenceIter

 
+
+

Since: 2.14

+
+
+
+

g_sequence_search ()

+
GSequenceIter *
+g_sequence_search (GSequence *seq,
+                   gpointer data,
+                   GCompareDataFunc cmp_func,
+                   gpointer cmp_data);
+

Returns an iterator pointing to the position where data + would +be inserted according to cmp_func + and cmp_data +.

+

cmp_func + is called with two items of the seq + and user_data +. +It should return 0 if the items are equal, a negative value if +the first item comes before the second, and a positive value if +the second item comes before the first.

+

If you are simply searching for an existing element of the sequence, +consider using g_sequence_lookup().

+

This function will fail if the data contained in the sequence is +unsorted. Use g_sequence_insert_sorted() or +g_sequence_insert_sorted_iter() to add data to your sequence or, if +you want to add a large amount of data, call g_sequence_sort() after +doing unsorted insertions.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

seq

a GSequence

 

data

data for the new item

 

cmp_func

the function used to compare items in the sequence

 

cmp_data

user data passed to cmp_func +

 
+
+
+

Returns

+

an GSequenceIter pointing to the position where data +would have been inserted according to cmp_func +and cmp_data +

+
+

Since: 2.14

+
+
+
+

g_sequence_search_iter ()

+
GSequenceIter *
+g_sequence_search_iter (GSequence *seq,
+                        gpointer data,
+                        GSequenceIterCompareFunc iter_cmp,
+                        gpointer cmp_data);
+

Like g_sequence_search(), but uses a GSequenceIterCompareFunc +instead of a GCompareDataFunc as the compare function.

+

iter_cmp + is called with two iterators pointing into seq +. +It should return 0 if the iterators are equal, a negative value +if the first iterator comes before the second, and a positive +value if the second iterator comes before the first.

+

If you are simply searching for an existing element of the sequence, +consider using g_sequence_lookup_iter().

+

This function will fail if the data contained in the sequence is +unsorted. Use g_sequence_insert_sorted() or +g_sequence_insert_sorted_iter() to add data to your sequence or, if +you want to add a large amount of data, call g_sequence_sort() after +doing unsorted insertions.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

seq

a GSequence

 

data

data for the new item

 

iter_cmp

the function used to compare iterators in the sequence

 

cmp_data

user data passed to iter_cmp +

 
+
+
+

Returns

+

a GSequenceIter pointing to the position in seq +where data +would have been inserted according to iter_cmp +and cmp_data +

+
+

Since: 2.14

+
+
+
+

g_sequence_lookup ()

+
GSequenceIter *
+g_sequence_lookup (GSequence *seq,
+                   gpointer data,
+                   GCompareDataFunc cmp_func,
+                   gpointer cmp_data);
+

Returns an iterator pointing to the position of the first item found +equal to data + according to cmp_func + and cmp_data +. If more than one +item is equal, it is not guaranteed that it is the first which is +returned. In that case, you can use g_sequence_iter_next() and +g_sequence_iter_prev() to get others.

+

cmp_func + is called with two items of the seq + and user_data +. +It should return 0 if the items are equal, a negative value if +the first item comes before the second, and a positive value if +the second item comes before the first.

+

This function will fail if the data contained in the sequence is +unsorted. Use g_sequence_insert_sorted() or +g_sequence_insert_sorted_iter() to add data to your sequence or, if +you want to add a large amount of data, call g_sequence_sort() after +doing unsorted insertions.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

seq

a GSequence

 

data

data to lookup

 

cmp_func

the function used to compare items in the sequence

 

cmp_data

user data passed to cmp_func +

 
+
+
+

Returns

+

an GSequenceIter pointing to the position of the +first item found equal to data +according to cmp_func +and +cmp_data +, or NULL if no such item exists

+
+

Since: 2.28

+
+
+
+

g_sequence_lookup_iter ()

+
GSequenceIter *
+g_sequence_lookup_iter (GSequence *seq,
+                        gpointer data,
+                        GSequenceIterCompareFunc iter_cmp,
+                        gpointer cmp_data);
+

Like g_sequence_lookup(), but uses a GSequenceIterCompareFunc +instead of a GCompareDataFunc as the compare function.

+

iter_cmp + is called with two iterators pointing into seq +. +It should return 0 if the iterators are equal, a negative value +if the first iterator comes before the second, and a positive +value if the second iterator comes before the first.

+

This function will fail if the data contained in the sequence is +unsorted. Use g_sequence_insert_sorted() or +g_sequence_insert_sorted_iter() to add data to your sequence or, if +you want to add a large amount of data, call g_sequence_sort() after +doing unsorted insertions.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

seq

a GSequence

 

data

data to lookup

 

iter_cmp

the function used to compare iterators in the sequence

 

cmp_data

user data passed to iter_cmp +

 
+
+
+

Returns

+

an GSequenceIter pointing to the position of +the first item found equal to data +according to cmp_func +and cmp_data +, or NULL if no such item exists

+
+

Since: 2.28

+
+
+
+

g_sequence_get ()

+
gpointer
+g_sequence_get (GSequenceIter *iter);
+

Returns the data that iter + points to.

+
+

Parameters

+
+++++ + + + + + +

iter

a GSequenceIter

 
+
+
+

Returns

+

the data that iter +points to

+
+

Since: 2.14

+
+
+
+

g_sequence_set ()

+
void
+g_sequence_set (GSequenceIter *iter,
+                gpointer data);
+

Changes the data for the item pointed to by iter + to be data +. If +the sequence has a data destroy function associated with it, that +function is called on the existing data that iter + pointed to.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

iter

a GSequenceIter

 

data

new data for the item

 
+
+

Since: 2.14

+
+
+
+

g_sequence_iter_is_begin ()

+
gboolean
+g_sequence_iter_is_begin (GSequenceIter *iter);
+

Returns whether iter + is the begin iterator

+
+

Parameters

+
+++++ + + + + + +

iter

a GSequenceIter

 
+
+
+

Returns

+

whether iter +is the begin iterator

+
+

Since: 2.14

+
+
+
+

g_sequence_iter_is_end ()

+
gboolean
+g_sequence_iter_is_end (GSequenceIter *iter);
+

Returns whether iter + is the end iterator

+
+

Parameters

+
+++++ + + + + + +

iter

a GSequenceIter

 
+
+
+

Returns

+

Whether iter +is the end iterator

+
+

Since: 2.14

+
+
+
+

g_sequence_iter_next ()

+
GSequenceIter *
+g_sequence_iter_next (GSequenceIter *iter);
+

Returns an iterator pointing to the next position after iter +. +If iter + is the end iterator, the end iterator is returned.

+
+

Parameters

+
+++++ + + + + + +

iter

a GSequenceIter

 
+
+
+

Returns

+

a GSequenceIter pointing to the next position after iter +

+
+

Since: 2.14

+
+
+
+

g_sequence_iter_prev ()

+
GSequenceIter *
+g_sequence_iter_prev (GSequenceIter *iter);
+

Returns an iterator pointing to the previous position before iter +. +If iter + is the begin iterator, the begin iterator is returned.

+
+

Parameters

+
+++++ + + + + + +

iter

a GSequenceIter

 
+
+
+

Returns

+

a GSequenceIter pointing to the previous position +before iter +

+
+

Since: 2.14

+
+
+
+

g_sequence_iter_get_position ()

+
gint
+g_sequence_iter_get_position (GSequenceIter *iter);
+

Returns the position of iter +

+
+

Parameters

+
+++++ + + + + + +

iter

a GSequenceIter

 
+
+
+

Returns

+

the position of iter +

+
+

Since: 2.14

+
+
+
+

g_sequence_iter_move ()

+
GSequenceIter *
+g_sequence_iter_move (GSequenceIter *iter,
+                      gint delta);
+

Returns the GSequenceIter which is delta + positions away from iter +. +If iter + is closer than -delta + positions to the beginning of the sequence, +the begin iterator is returned. If iter + is closer than delta + positions +to the end of the sequence, the end iterator is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

iter

a GSequenceIter

 

delta

A positive or negative number indicating how many positions away +from iter +the returned GSequenceIter will be

 
+
+
+

Returns

+

a GSequenceIter which is delta +positions away from iter +

+
+

Since: 2.14

+
+
+
+

g_sequence_iter_get_sequence ()

+
GSequence *
+g_sequence_iter_get_sequence (GSequenceIter *iter);
+

Returns the GSequence that iter + points into.

+
+

Parameters

+
+++++ + + + + + +

iter

a GSequenceIter

 
+
+
+

Returns

+

the GSequence that iter +points into

+
+

Since: 2.14

+
+
+
+

g_sequence_iter_compare ()

+
gint
+g_sequence_iter_compare (GSequenceIter *a,
+                         GSequenceIter *b);
+

Returns a negative number if a + comes before b +, 0 if they are equal, +and a positive number if a + comes after b +.

+

The a + and b + iterators must point into the same sequence.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

a

a GSequenceIter

 

b

a GSequenceIter

 
+
+
+

Returns

+

a negative number if a +comes before b +, 0 if they are +equal, and a positive number if a +comes after b +

+
+

Since: 2.14

+
+
+
+

g_sequence_range_get_midpoint ()

+
GSequenceIter *
+g_sequence_range_get_midpoint (GSequenceIter *begin,
+                               GSequenceIter *end);
+

Finds an iterator somewhere in the range (begin +, end +). This +iterator will be close to the middle of the range, but is not +guaranteed to be exactly in the middle.

+

The begin + and end + iterators must both point to the same sequence +and begin + must come before or be equal to end + in the sequence.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

begin

a GSequenceIter

 

end

a GSequenceIter

 
+
+
+

Returns

+

a GSequenceIter pointing somewhere in the +(begin +, end +) range

+
+

Since: 2.14

+
+
+
+

Types and Values

+
+

GSequence

+
typedef struct _GSequence GSequence;
+

The GSequence struct is an opaque data type representing a +sequence data type.

+
+
+
+

GSequenceIter

+
typedef struct _GSequenceNode  GSequenceIter;
+
+

The GSequenceIter struct is an opaque data type representing an +iterator pointing into a GSequence.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Shell-related-Utilities.html b/docs/reference/glib/html/glib-Shell-related-Utilities.html new file mode 100644 index 0000000..aefc2c0 --- /dev/null +++ b/docs/reference/glib/html/glib-Shell-related-Utilities.html @@ -0,0 +1,298 @@ + + + + +Shell-related Utilities: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Shell-related Utilities

+

Shell-related Utilities — shell-like commandline handling

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + +
+gboolean + +g_shell_parse_argv () +
+gchar * + +g_shell_quote () +
+gchar * + +g_shell_unquote () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
enumGShellError
#defineG_SHELL_ERROR
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GLib provides the functions g_shell_quote() and g_shell_unquote() +to handle shell-like quoting in strings. The function g_shell_parse_argv() +parses a string similar to the way a POSIX shell (/bin/sh) would.

+

Note that string handling in shells has many obscure and historical +corner-cases which these functions do not necessarily reproduce. They +are good enough in practice, though.

+
+
+

Functions

+
+

g_shell_parse_argv ()

+
gboolean
+g_shell_parse_argv (const gchar *command_line,
+                    gint *argcp,
+                    gchar ***argvp,
+                    GError **error);
+

Parses a command line into an argument vector, in much the same way +the shell would, but without many of the expansions the shell would +perform (variable expansion, globs, operators, filename expansion, +etc. are not supported). The results are defined to be the same as +those you would get from a UNIX98 /bin/sh, as long as the input +contains none of the unsupported shell expansions. If the input +does contain such expansions, they are passed through +literally. Possible errors are those from the G_SHELL_ERROR +domain. Free the returned vector with g_strfreev().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

command_line

command line to parse

 

argcp

return location for number of args.

[out][optional]

argvp

return +location for array of args.

[out][optional][array length=argcp zero-terminated=1]

error

return location for error.

[optional]
+
+
+

Returns

+

TRUE on success, FALSE if error set

+
+
+
+
+

g_shell_quote ()

+
gchar *
+g_shell_quote (const gchar *unquoted_string);
+

Quotes a string so that the shell (/bin/sh) will interpret the +quoted string to mean unquoted_string +. If you pass a filename to +the shell, for example, you should first quote it with this +function. The return value must be freed with g_free(). The +quoting style used is undefined (single or double quotes may be +used).

+
+

Parameters

+
+++++ + + + + + +

unquoted_string

a literal string

 
+
+
+

Returns

+

quoted string

+
+
+
+
+

g_shell_unquote ()

+
gchar *
+g_shell_unquote (const gchar *quoted_string,
+                 GError **error);
+

Unquotes a string as the shell (/bin/sh) would. Only handles +quotes; if a string contains file globs, arithmetic operators, +variables, backticks, redirections, or other special-to-the-shell +features, the result will be different from the result a real shell +would produce (the variables, backticks, etc. will be passed +through literally instead of being expanded). This function is +guaranteed to succeed if applied to the result of +g_shell_quote(). If it fails, it returns NULL and sets the +error. The quoted_string + need not actually contain quoted or +escaped text; g_shell_unquote() simply goes through the string and +unquotes/unescapes anything that the shell would. Both single and +double quotes are handled, as are escapes including escaped +newlines. The return value must be freed with g_free(). Possible +errors are in the G_SHELL_ERROR domain.

+

Shell quoting rules are a bit strange. Single quotes preserve the +literal string exactly. escape sequences are not allowed; not even +\' - if you want a ' in the quoted text, you have to do something +like 'foo'\''bar'. Double quotes allow $, `, ", \, and newline to +be escaped with backslash. Otherwise double quotes preserve things +literally.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

quoted_string

shell-quoted string

 

error

error return location or NULL

 
+
+
+

Returns

+

an unquoted string

+
+
+
+
+

Types and Values

+
+

enum GShellError

+

Error codes returned by shell functions.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

G_SHELL_ERROR_BAD_QUOTING

+

Mismatched or otherwise mangled quoting.

+
 

G_SHELL_ERROR_EMPTY_STRING

+

String to be parsed was empty.

+
 

G_SHELL_ERROR_FAILED

+

Some other error.

+
 
+
+
+
+
+

G_SHELL_ERROR

+
#define G_SHELL_ERROR g_shell_error_quark ()
+
+

Error domain for shell functions. Errors in this domain will be from +the GShellError enumeration. See GError for information on error +domains.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Simple-XML-Subset-Parser.html b/docs/reference/glib/html/glib-Simple-XML-Subset-Parser.html new file mode 100644 index 0000000..f7c06ff --- /dev/null +++ b/docs/reference/glib/html/glib-Simple-XML-Subset-Parser.html @@ -0,0 +1,1478 @@ + + + + +Simple XML Subset Parser: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Simple XML Subset Parser

+

Simple XML Subset Parser — parses a subset of XML

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gchar * + +g_markup_escape_text () +
+gchar * + +g_markup_printf_escaped () +
+gchar * + +g_markup_vprintf_escaped () +
+GMarkupParseContext * + +g_markup_parse_context_new () +
+gboolean + +g_markup_parse_context_parse () +
+gboolean + +g_markup_parse_context_end_parse () +
+void + +g_markup_parse_context_free () +
+void + +g_markup_parse_context_get_position () +
const gchar * + +g_markup_parse_context_get_element () +
const GSList * + +g_markup_parse_context_get_element_stack () +
+gpointer + +g_markup_parse_context_get_user_data () +
+void + +g_markup_parse_context_push () +
+gpointer + +g_markup_parse_context_pop () +
+GMarkupParseContext * + +g_markup_parse_context_ref () +
+void + +g_markup_parse_context_unref () +
+gboolean + +g_markup_collect_attributes () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
enumGMarkupError
#defineG_MARKUP_ERROR
enumGMarkupParseFlags
 GMarkupParseContext
structGMarkupParser
enumGMarkupCollectType
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The "GMarkup" parser is intended to parse a simple markup format +that's a subset of XML. This is a small, efficient, easy-to-use +parser. It should not be used if you expect to interoperate with +other applications generating full-scale XML. However, it's very +useful for application data files, config files, etc. where you +know your application will be the only one writing the file. +Full-scale XML parsers should be able to parse the subset used by +GMarkup, so you can easily migrate to full-scale XML at a later +time if the need arises.

+

GMarkup is not guaranteed to signal an error on all invalid XML; +the parser may accept documents that an XML parser would not. +However, XML documents which are not well-formed (which is a +weaker condition than being valid. See the +XML specification +for definitions of these terms.) are not considered valid GMarkup +documents.

+

Simplifications to XML include:

+
    +
  • Only UTF-8 encoding is allowed

  • +
  • No user-defined entities

  • +
  • Processing instructions, comments and the doctype declaration +are "passed through" but are not interpreted in any way

  • +
  • No DTD or validation

  • +
+

The markup format does support:

+
    +
  • Elements

  • +
  • Attributes

  • +
  • 5 standard entities: & < > " '

  • +
  • Character references

  • +
  • Sections marked as CDATA

  • +
+
+
+

Functions

+
+

g_markup_escape_text ()

+
gchar *
+g_markup_escape_text (const gchar *text,
+                      gssize length);
+

Escapes text so that the markup parser will parse it verbatim. +Less than, greater than, ampersand, etc. are replaced with the +corresponding entities. This function would typically be used +when writing out a file to be parsed with the markup parser.

+

Note that this function doesn't protect whitespace and line endings +from being processed according to the XML rules for normalization +of line endings and attribute values.

+

Note also that this function will produce character references in +the range of &x1; ... &x1f; for all control sequences +except for tabstop, newline and carriage return. The character +references in this range are not valid XML 1.0, but they are +valid XML 1.1 and will be accepted by the GMarkup parser.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

text

some valid UTF-8 text

 

length

length of text +in bytes, or -1 if the text is nul-terminated

 
+
+
+

Returns

+

a newly allocated string with the escaped text

+
+
+
+
+

g_markup_printf_escaped ()

+
gchar *
+g_markup_printf_escaped (const char *format,
+                         ...);
+

Formats arguments according to format +, escaping +all string and character arguments in the fashion +of g_markup_escape_text(). This is useful when you +want to insert literal strings into XML-style markup +output, without having to worry that the strings +might themselves contain markup.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
const char *store = "Fortnum & Mason";
+const char *item = "Tea";
+char *output;
+
+output = g_markup_printf_escaped ("<purchase>"
+                                  "<store>%s</store>"
+                                  "<item>%s</item>"
+                                  "</purchase>",
+                                  store, item);
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format

printf() style format string

 

...

the arguments to insert in the format string

 
+
+
+

Returns

+

newly allocated result from formatting +operation. Free with g_free().

+
+

Since: 2.4

+
+
+
+

g_markup_vprintf_escaped ()

+
gchar *
+g_markup_vprintf_escaped (const char *format,
+                          va_list args);
+

Formats the data in args + according to format +, escaping +all string and character arguments in the fashion +of g_markup_escape_text(). See g_markup_printf_escaped().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format

printf() style format string

 

args

variable argument list, similar to vprintf()

 
+
+
+

Returns

+

newly allocated result from formatting +operation. Free with g_free().

+
+

Since: 2.4

+
+
+
+

g_markup_parse_context_new ()

+
GMarkupParseContext *
+g_markup_parse_context_new (const GMarkupParser *parser,
+                            GMarkupParseFlags flags,
+                            gpointer user_data,
+                            GDestroyNotify user_data_dnotify);
+

Creates a new parse context. A parse context is used to parse +marked-up documents. You can feed any number of documents into +a context, as long as no errors occur; once an error occurs, +the parse context can't continue to parse text (you have to +free it and create a new parse context).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

parser

a GMarkupParser

 

flags

one or more GMarkupParseFlags

 

user_data

user data to pass to GMarkupParser functions

 

user_data_dnotify

user data destroy notifier called when +the parse context is freed

 
+
+
+

Returns

+

a new GMarkupParseContext

+
+
+
+
+

g_markup_parse_context_parse ()

+
gboolean
+g_markup_parse_context_parse (GMarkupParseContext *context,
+                              const gchar *text,
+                              gssize text_len,
+                              GError **error);
+

Feed some data to the GMarkupParseContext.

+

The data need not be valid UTF-8; an error will be signaled if +it's invalid. The data need not be an entire document; you can +feed a document into the parser incrementally, via multiple calls +to this function. Typically, as you receive data from a network +connection or file, you feed each received chunk of data into this +function, aborting the process if an error occurs. Once an error +is reported, no further data may be fed to the GMarkupParseContext; +all errors are fatal.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

context

a GMarkupParseContext

 

text

chunk of text to parse

 

text_len

length of text +in bytes

 

error

return location for a GError

 
+
+
+

Returns

+

FALSE if an error occurred, TRUE on success

+
+
+
+
+

g_markup_parse_context_end_parse ()

+
gboolean
+g_markup_parse_context_end_parse (GMarkupParseContext *context,
+                                  GError **error);
+

Signals to the GMarkupParseContext that all data has been +fed into the parse context with g_markup_parse_context_parse().

+

This function reports an error if the document isn't complete, +for example if elements are still open.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GMarkupParseContext

 

error

return location for a GError

 
+
+
+

Returns

+

TRUE on success, FALSE if an error was set

+
+
+
+
+

g_markup_parse_context_free ()

+
void
+g_markup_parse_context_free (GMarkupParseContext *context);
+

Frees a GMarkupParseContext.

+

This function can't be called from inside one of the +GMarkupParser functions or while a subparser is pushed.

+
+

Parameters

+
+++++ + + + + + +

context

a GMarkupParseContext

 
+
+
+
+
+

g_markup_parse_context_get_position ()

+
void
+g_markup_parse_context_get_position (GMarkupParseContext *context,
+                                     gint *line_number,
+                                     gint *char_number);
+

Retrieves the current line number and the number of the character on +that line. Intended for use in error messages; there are no strict +semantics for what constitutes the "current" line number other than +"the best number we could come up with for error messages."

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

context

a GMarkupParseContext

 

line_number

return location for a line number, or NULL.

[allow-none]

char_number

return location for a char-on-line number, or NULL.

[allow-none]
+
+
+
+
+

g_markup_parse_context_get_element ()

+
const gchar *
+g_markup_parse_context_get_element (GMarkupParseContext *context);
+

Retrieves the name of the currently open element.

+

If called from the start_element or end_element handlers this will +give the element_name as passed to those functions. For the parent +elements, see g_markup_parse_context_get_element_stack().

+
+

Parameters

+
+++++ + + + + + +

context

a GMarkupParseContext

 
+
+
+

Returns

+

the name of the currently open element, or NULL

+
+

Since: 2.2

+
+
+
+

g_markup_parse_context_get_element_stack ()

+
const GSList *
+g_markup_parse_context_get_element_stack
+                               (GMarkupParseContext *context);
+

Retrieves the element stack from the internal state of the parser.

+

The returned GSList is a list of strings where the first item is +the currently open tag (as would be returned by +g_markup_parse_context_get_element()) and the next item is its +immediate parent.

+

This function is intended to be used in the start_element and +end_element handlers where g_markup_parse_context_get_element() +would merely return the name of the element that is being +processed.

+
+

Parameters

+
+++++ + + + + + +

context

a GMarkupParseContext

 
+
+
+

Returns

+

the element stack, which must not be modified

+
+

Since: 2.16

+
+
+
+

g_markup_parse_context_get_user_data ()

+
gpointer
+g_markup_parse_context_get_user_data (GMarkupParseContext *context);
+

Returns the user_data associated with context +.

+

This will either be the user_data that was provided to +g_markup_parse_context_new() or to the most recent call +of g_markup_parse_context_push().

+
+

Parameters

+
+++++ + + + + + +

context

a GMarkupParseContext

 
+
+
+

Returns

+

the provided user_data. The returned data belongs to +the markup context and will be freed when +g_markup_parse_context_free() is called.

+
+

Since: 2.18

+
+
+
+

g_markup_parse_context_push ()

+
void
+g_markup_parse_context_push (GMarkupParseContext *context,
+                             const GMarkupParser *parser,
+                             gpointer user_data);
+

Temporarily redirects markup data to a sub-parser.

+

This function may only be called from the start_element handler of +a GMarkupParser. It must be matched with a corresponding call to +g_markup_parse_context_pop() in the matching end_element handler +(except in the case that the parser aborts due to an error).

+

All tags, text and other data between the matching tags is +redirected to the subparser given by parser +. user_data + is used +as the user_data for that parser. user_data + is also passed to the +error callback in the event that an error occurs. This includes +errors that occur in subparsers of the subparser.

+

The end tag matching the start tag for which this call was made is +handled by the previous parser (which is given its own user_data) +which is why g_markup_parse_context_pop() is provided to allow "one +last access" to the user_data + provided to this function. In the +case of error, the user_data + provided here is passed directly to +the error callback of the subparser and g_markup_parse_context_pop() +should not be called. In either case, if user_data + was allocated +then it ought to be freed from both of these locations.

+

This function is not intended to be directly called by users +interested in invoking subparsers. Instead, it is intended to be +used by the subparsers themselves to implement a higher-level +interface.

+

As an example, see the following implementation of a simple +parser that counts the number of tags encountered.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
typedef struct
+{
+  gint tag_count;
+} CounterData;
+
+static void
+counter_start_element (GMarkupParseContext  *context,
+                       const gchar          *element_name,
+                       const gchar         **attribute_names,
+                       const gchar         **attribute_values,
+                       gpointer              user_data,
+                       GError              **error)
+{
+  CounterData *data = user_data;
+
+  data->tag_count++;
+}
+
+static void
+counter_error (GMarkupParseContext *context,
+               GError              *error,
+               gpointer             user_data)
+{
+  CounterData *data = user_data;
+
+  g_slice_free (CounterData, data);
+}
+
+static GMarkupParser counter_subparser =
+{
+  counter_start_element,
+  NULL,
+  NULL,
+  NULL,
+  counter_error
+};
+
+ +

+

In order to allow this parser to be easily used as a subparser, the +following interface is provided:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
void
+start_counting (GMarkupParseContext *context)
+{
+  CounterData *data = g_slice_new (CounterData);
+
+  data->tag_count = 0;
+  g_markup_parse_context_push (context, &counter_subparser, data);
+}
+
+gint
+end_counting (GMarkupParseContext *context)
+{
+  CounterData *data = g_markup_parse_context_pop (context);
+  int result;
+
+  result = data->tag_count;
+  g_slice_free (CounterData, data);
+
+  return result;
+}
+
+ +

+

The subparser would then be used as follows:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
static void start_element (context, element_name, ...)
+{
+  if (strcmp (element_name, "count-these") == 0)
+    start_counting (context);
+
+  // else, handle other tags...
+}
+
+static void end_element (context, element_name, ...)
+{
+  if (strcmp (element_name, "count-these") == 0)
+    g_print ("Counted %d tags\n", end_counting (context));
+
+  // else, handle other tags...
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

context

a GMarkupParseContext

 

parser

a GMarkupParser

 

user_data

user data to pass to GMarkupParser functions

 
+
+

Since: 2.18

+
+
+
+

g_markup_parse_context_pop ()

+
gpointer
+g_markup_parse_context_pop (GMarkupParseContext *context);
+

Completes the process of a temporary sub-parser redirection.

+

This function exists to collect the user_data allocated by a +matching call to g_markup_parse_context_push(). It must be called +in the end_element handler corresponding to the start_element +handler during which g_markup_parse_context_push() was called. +You must not call this function from the error callback -- the +user_data + is provided directly to the callback in that case.

+

This function is not intended to be directly called by users +interested in invoking subparsers. Instead, it is intended to +be used by the subparsers themselves to implement a higher-level +interface.

+
+

Parameters

+
+++++ + + + + + +

context

a GMarkupParseContext

 
+
+
+

Returns

+

the user data passed to g_markup_parse_context_push()

+
+

Since: 2.18

+
+
+
+

g_markup_parse_context_ref ()

+
GMarkupParseContext *
+g_markup_parse_context_ref (GMarkupParseContext *context);
+

Increases the reference count of context +.

+
+

Parameters

+
+++++ + + + + + +

context

a GMarkupParseContext

 
+
+
+

Returns

+

the same context +

+
+

Since: 2.36

+
+
+
+

g_markup_parse_context_unref ()

+
void
+g_markup_parse_context_unref (GMarkupParseContext *context);
+

Decreases the reference count of context +. When its reference count +drops to 0, it is freed.

+
+

Parameters

+
+++++ + + + + + +

context

a GMarkupParseContext

 
+
+

Since: 2.36

+
+
+
+

g_markup_collect_attributes ()

+
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,
+                             ...);
+

Collects the attributes of the element from the data passed to the +GMarkupParser start_element function, dealing with common error +conditions and supporting boolean values.

+

This utility function is not required to write a parser but can save +a lot of typing.

+

The element_name +, attribute_names +, attribute_values + and error + +parameters passed to the start_element callback should be passed +unmodified to this function.

+

Following these arguments is a list of "supported" attributes to collect. +It is an error to specify multiple attributes with the same name. If any +attribute not in the list appears in the attribute_names + array then an +unknown attribute error will result.

+

The GMarkupCollectType field allows specifying the type of collection +to perform and if a given attribute must appear or is optional.

+

The attribute name is simply the name of the attribute to collect.

+

The pointer should be of the appropriate type (see the descriptions +under GMarkupCollectType) and may be NULL in case a particular +attribute is to be allowed but ignored.

+

This function deals with issuing errors for missing attributes +(of type G_MARKUP_ERROR_MISSING_ATTRIBUTE), unknown attributes +(of type G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE) and duplicate +attributes (of type G_MARKUP_ERROR_INVALID_CONTENT) as well +as parse errors for boolean-valued attributes (again of type +G_MARKUP_ERROR_INVALID_CONTENT). In all of these cases FALSE +will be returned and error + will be set as appropriate.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

element_name

the current tag name

 

attribute_names

the attribute names

 

attribute_values

the attribute values

 

error

a pointer to a GError or NULL

 

first_type

the GMarkupCollectType of the first attribute

 

first_attr

the name of the first attribute

 

...

a pointer to the storage location of the first attribute +(or NULL), followed by more types names and pointers, ending +with G_MARKUP_COLLECT_INVALID

 
+
+
+

Returns

+

TRUE if successful

+
+

Since: 2.16

+
+
+
+

Types and Values

+
+

enum GMarkupError

+

Error codes returned by markup parsing.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

+
 
+
+
+
+
+

G_MARKUP_ERROR

+
#define G_MARKUP_ERROR g_markup_error_quark ()
+
+

Error domain for markup parsing. +Errors in this domain will be from the GMarkupError enumeration. +See GError for information on error domains.

+
+
+
+

enum GMarkupParseFlags

+

Flags that affect the behaviour of the parser.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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 + <![CDATA[ and ]]>) 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

+
 

G_MARKUP_IGNORE_QUALIFIED

+

Ignore (don't report) qualified + attributes and tags, along with their contents. A qualified + attribute or tag is one that contains ':' in its name (ie: is in + another namespace). Since: 2.40.

+
 
+
+
+
+
+

GMarkupParseContext

+
typedef struct _GMarkupParseContext 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.

+
+
+
+

struct GMarkupParser

+
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);
+};
+
+

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.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

start_element ()

Callback to invoke when the opening tag of an element +is seen. The callback's attribute_names +and attribute_values +parameters +are NULL-terminated.

 

end_element ()

Callback to invoke when the closing tag of an element +is seen. Note that this is also called for empty tags like +<empty/>.

 

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.

 
+
+
+
+
+

enum GMarkupCollectType

+

A mixed enumerated type and flags field. You must specify one type +(string, strdup, boolean, tristate). Additionally, you may optionally +bitwise OR the type with the flag G_MARKUP_COLLECT_OPTIONAL.

+

It is likely that this enum will be extended in the future to +support other types.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_MARKUP_COLLECT_INVALID

+

used to terminate the list of attributes + to collect

+
 

G_MARKUP_COLLECT_STRING

+

collect the string pointer directly from + the attribute_values[] array. Expects a parameter of type (const + char **). If G_MARKUP_COLLECT_OPTIONAL is specified and the + attribute isn't present then the pointer will be set to NULL

+
 

G_MARKUP_COLLECT_STRDUP

+

as with G_MARKUP_COLLECT_STRING, but + expects a parameter of type (char **) and g_strdup()s the + returned pointer. The pointer must be freed with g_free()

+
 

G_MARKUP_COLLECT_BOOLEAN

+

expects a parameter of type (gboolean *) + and parses the attribute value as a boolean. Sets FALSE if the + attribute isn't present. Valid boolean values consist of + (case-insensitive) "false", "f", "no", "n", "0" and "true", "t", + "yes", "y", "1"

+
 

G_MARKUP_COLLECT_TRISTATE

+

as with G_MARKUP_COLLECT_BOOLEAN, but + in the case of a missing attribute a value is set that compares + equal to neither FALSE nor TRUE G_MARKUP_COLLECT_OPTIONAL is + implied

+
 

G_MARKUP_COLLECT_OPTIONAL

+

can be bitwise ORed with the other fields. + If present, allows the attribute not to appear. A default value + is set depending on what value type is used

+
 
+
+
+
+
+

See Also

+

XML Specification

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Singly-Linked-Lists.html b/docs/reference/glib/html/glib-Singly-Linked-Lists.html new file mode 100644 index 0000000..ad8d7d2 --- /dev/null +++ b/docs/reference/glib/html/glib-Singly-Linked-Lists.html @@ -0,0 +1,1535 @@ + + + + +Singly-Linked Lists: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Singly-Linked Lists

+

Singly-Linked Lists — linked lists that can be iterated in one direction

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GSList * + +g_slist_alloc () +
+GSList * + +g_slist_append () +
+GSList * + +g_slist_prepend () +
+GSList * + +g_slist_insert () +
+GSList * + +g_slist_insert_before () +
+GSList * + +g_slist_insert_sorted () +
+GSList * + +g_slist_remove () +
+GSList * + +g_slist_remove_link () +
+GSList * + +g_slist_delete_link () +
+GSList * + +g_slist_remove_all () +
+void + +g_slist_free () +
+void + +g_slist_free_full () +
+void + +g_slist_free_1 () +
+guint + +g_slist_length () +
+GSList * + +g_slist_copy () +
+GSList * + +g_slist_copy_deep () +
+GSList * + +g_slist_reverse () +
+GSList * + +g_slist_insert_sorted_with_data () +
+GSList * + +g_slist_sort () +
+GSList * + +g_slist_sort_with_data () +
+GSList * + +g_slist_concat () +
+void + +g_slist_foreach () +
+GSList * + +g_slist_last () +
#define +g_slist_next() +
+GSList * + +g_slist_nth () +
+gpointer + +g_slist_nth_data () +
+GSList * + +g_slist_find () +
+GSList * + +g_slist_find_custom () +
+gint + +g_slist_position () +
+gint + +g_slist_index () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
structGSList
#defineg_slist_free1
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The GSList structure and its associated functions provide a +standard singly-linked list data structure.

+

Each element in the list contains a piece of data, together with a +pointer which links to the next element in the list. Using this +pointer it is possible to move through the list in one direction +only (unlike the double-linked lists, +which allow movement in both directions).

+

The data contained in each element can be either integer values, by +using one of the Type Conversion Macros, +or simply pointers to any type of data.

+

List elements are allocated from the slice allocator, +which is more efficient than allocating elements individually.

+

Note that most of the GSList functions expect to be passed a +pointer to the first element in the list. The functions which insert +elements return the new start of the list, which may have changed.

+

There is no function to create a GSList. NULL is considered to be +the empty list so you simply set a GSList* to NULL.

+

To add elements, use g_slist_append(), g_slist_prepend(), +g_slist_insert() and g_slist_insert_sorted().

+

To remove elements, use g_slist_remove().

+

To find elements in the list use g_slist_last(), g_slist_next(), +g_slist_nth(), g_slist_nth_data(), g_slist_find() and +g_slist_find_custom().

+

To find the index of an element use g_slist_position() and +g_slist_index().

+

To call a function for each element in the list use +g_slist_foreach().

+

To free the entire list, use g_slist_free().

+
+
+

Functions

+
+

g_slist_alloc ()

+
GSList *
+g_slist_alloc (void);
+

Allocates space for one GSList element. It is called by the +g_slist_append(), g_slist_prepend(), g_slist_insert() and +g_slist_insert_sorted() functions and so is rarely used on its own.

+
+

Returns

+

a pointer to the newly-allocated GSList element.

+
+
+
+
+

g_slist_append ()

+
GSList *
+g_slist_append (GSList *list,
+                gpointer data);
+

Adds a new element on to the end of the list.

+

The return value is the new start of the list, which may +have changed, so make sure you store the new value.

+

Note that g_slist_append() has to traverse the entire list +to find the end, which is inefficient when adding multiple +elements. A common idiom to avoid the inefficiency is to prepend +the elements and reverse the list when all elements have been added.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
// Notice that these are initialized to the empty list.
+GSList *list = NULL, *number_list = NULL;
+
+// This is a list of strings.
+list = g_slist_append (list, "first");
+list = g_slist_append (list, "second");
+
+// This is a list of integers.
+number_list = g_slist_append (number_list, GINT_TO_POINTER (27));
+number_list = g_slist_append (number_list, GINT_TO_POINTER (14));
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GSList

 

data

the data for the new element

 
+
+
+

Returns

+

the new start of the GSList

+
+
+
+
+

g_slist_prepend ()

+
GSList *
+g_slist_prepend (GSList *list,
+                 gpointer data);
+

Adds a new element on to the start of the list.

+

The return value is the new start of the list, which +may have changed, so make sure you store the new value.

+
+ + + + + + + +
1
+2
+3
+4
// Notice that it is initialized to the empty list.
+GSList *list = NULL;
+list = g_slist_prepend (list, "last");
+list = g_slist_prepend (list, "first");
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GSList

 

data

the data for the new element

 
+
+
+

Returns

+

the new start of the GSList

+
+
+
+
+

g_slist_insert ()

+
GSList *
+g_slist_insert (GSList *list,
+                gpointer data,
+                gint position);
+

Inserts a new element into the list at the given position.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

list

a GSList

 

data

the data for the new element

 

position

the position to insert the element. +If this is negative, or is larger than the number +of elements in the list, the new element is added on +to the end of the list.

 
+
+
+

Returns

+

the new start of the GSList

+
+
+
+
+

g_slist_insert_before ()

+
GSList *
+g_slist_insert_before (GSList *slist,
+                       GSList *sibling,
+                       gpointer data);
+

Inserts a node before sibling + containing data +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

slist

a GSList

 

sibling

node to insert data +before

 

data

data to put in the newly-inserted node

 
+
+
+

Returns

+

the new head of the list.

+
+
+
+
+

g_slist_insert_sorted ()

+
GSList *
+g_slist_insert_sorted (GSList *list,
+                       gpointer data,
+                       GCompareFunc func);
+

Inserts a new element into the list, using the given +comparison function to determine its position.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

list

a GSList

 

data

the data for the new element

 

func

the function to compare elements in the list. +It should return a number > 0 if the first parameter +comes after the second parameter in the sort order.

 
+
+
+

Returns

+

the new start of the GSList

+
+
+
+
+

g_slist_remove ()

+
GSList *
+g_slist_remove (GSList *list,
+                gconstpointer data);
+

Removes an element from a GSList. +If two elements contain the same data, only the first is removed. +If none of the elements contain the data, the GSList is unchanged.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GSList

 

data

the data of the element to remove

 
+
+
+

Returns

+

the new start of the GSList

+
+
+
+
+

g_slist_remove_link ()

+
GSList *
+g_slist_remove_link (GSList *list,
+                     GSList *link_);
+

Removes an element from a GSList, without +freeing the element. The removed element's next +link is set to NULL, so that it becomes a +self-contained list with one element.

+

Removing arbitrary nodes from a singly-linked list +requires time that is proportional to the length of the list +(ie. O(n)). If you find yourself using g_slist_remove_link() +frequently, you should consider a different data structure, +such as the doubly-linked GList.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GSList

 

link_

an element in the GSList

 
+
+
+

Returns

+

the new start of the GSList, without the element

+
+
+
+
+

g_slist_delete_link ()

+
GSList *
+g_slist_delete_link (GSList *list,
+                     GSList *link_);
+

Removes the node link_ from the list and frees it. +Compare this to g_slist_remove_link() which removes the node +without freeing it.

+

Removing arbitrary nodes from a singly-linked list requires time +that is proportional to the length of the list (ie. O(n)). If you +find yourself using g_slist_delete_link() frequently, you should +consider a different data structure, such as the doubly-linked +GList.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GSList

 

link_

node to delete

 
+
+
+

Returns

+

the new head of list +

+
+
+
+
+

g_slist_remove_all ()

+
GSList *
+g_slist_remove_all (GSList *list,
+                    gconstpointer data);
+

Removes all list nodes with data equal to data +. +Returns the new head of the list. Contrast with +g_slist_remove() which removes only the first node +matching the given data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GSList

 

data

data to remove

 
+
+
+

Returns

+

new head of list +

+
+
+
+
+

g_slist_free ()

+
void
+g_slist_free (GSList *list);
+

Frees all of the memory used by a GSList. +The freed elements are returned to the slice allocator.

+

If list elements contain dynamically-allocated memory, +you should either use g_slist_free_full() or free them manually +first.

+
+

Parameters

+
+++++ + + + + + +

list

a GSList

 
+
+
+
+
+

g_slist_free_full ()

+
void
+g_slist_free_full (GSList *list,
+                   GDestroyNotify free_func);
+

Convenience method, which frees all the memory used by a GSList, and +calls the specified destroy function on every element's data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a pointer to a GSList

 

free_func

the function to be called to free each element's data

 
+
+

Since: 2.28

+
+
+
+

g_slist_free_1 ()

+
void
+g_slist_free_1 (GSList *list);
+

Frees one GSList element. +It is usually used after g_slist_remove_link().

+
+

Parameters

+
+++++ + + + + + +

list

a GSList element

 
+
+
+
+
+

g_slist_length ()

+
guint
+g_slist_length (GSList *list);
+

Gets the number of elements in a GSList.

+

This function iterates over the whole list to +count its elements. To check whether the list is non-empty, it is faster to +check list + against NULL.

+
+

Parameters

+
+++++ + + + + + +

list

a GSList

 
+
+
+

Returns

+

the number of elements in the GSList

+
+
+
+
+

g_slist_copy ()

+
GSList *
+g_slist_copy (GSList *list);
+

Copies a GSList.

+

Note that this is a "shallow" copy. If the list elements +consist of pointers to data, the pointers are copied but +the actual data isn't. See g_slist_copy_deep() if you need +to copy the data as well.

+
+

Parameters

+
+++++ + + + + + +

list

a GSList

 
+
+
+

Returns

+

a copy of list +

+
+
+
+
+

g_slist_copy_deep ()

+
GSList *
+g_slist_copy_deep (GSList *list,
+                   GCopyFunc func,
+                   gpointer user_data);
+

Makes a full (deep) copy of a GSList.

+

In contrast with g_slist_copy(), this function uses func + to make a copy of +each list element, in addition to copying the list container itself.

+

func +, as a GCopyFunc, takes two arguments, the data to be copied and a user +pointer. It's safe to pass NULL as user_data, if the copy function takes only +one argument.

+

For instance, if list + holds a list of GObjects, you can do:

+
+ + + + + + + +
1
another_list = g_slist_copy_deep (list, (GCopyFunc) g_object_ref, NULL);
+
+ +

+

And, to entirely free the new list, you could do:

+
+ + + + + + + +
1
g_slist_free_full (another_list, g_object_unref);
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

list

a GSList

 

func

a copy function used to copy every element in the list

 

user_data

user data passed to the copy function func +, or NULL

 
+
+
+

Returns

+

a full copy of list +, use g_slist_free_full to free it

+
+

Since: 2.34

+
+
+
+

g_slist_reverse ()

+
GSList *
+g_slist_reverse (GSList *list);
+

Reverses a GSList.

+
+

Parameters

+
+++++ + + + + + +

list

a GSList

 
+
+
+

Returns

+

the start of the reversed GSList

+
+
+
+
+

g_slist_insert_sorted_with_data ()

+
GSList *
+g_slist_insert_sorted_with_data (GSList *list,
+                                 gpointer data,
+                                 GCompareDataFunc func,
+                                 gpointer user_data);
+

Inserts a new element into the list, using the given +comparison function to determine its position.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

list

a GSList

 

data

the data for the new element

 

func

the function to compare elements in the list. +It should return a number > 0 if the first parameter +comes after the second parameter in the sort order.

 

user_data

data to pass to comparison function

 
+
+
+

Returns

+

the new start of the GSList

+
+

Since: 2.10

+
+
+
+

g_slist_sort ()

+
GSList *
+g_slist_sort (GSList *list,
+              GCompareFunc compare_func);
+

Sorts a GSList using the given comparison function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GSList

 

compare_func

the comparison function used to sort the GSList. +This function is passed the data from 2 elements of the GSList +and should return 0 if they are equal, a negative value if the +first element comes before the second, or a positive value if +the first element comes after the second.

 
+
+
+

Returns

+

the start of the sorted GSList

+
+
+
+
+

g_slist_sort_with_data ()

+
GSList *
+g_slist_sort_with_data (GSList *list,
+                        GCompareDataFunc compare_func,
+                        gpointer user_data);
+

Like g_slist_sort(), but the sort function accepts a user data argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

list

a GSList

 

compare_func

comparison function

 

user_data

data to pass to comparison function

 
+
+
+

Returns

+

new head of the list

+
+
+
+
+

g_slist_concat ()

+
GSList *
+g_slist_concat (GSList *list1,
+                GSList *list2);
+

Adds the second GSList onto the end of the first GSList. +Note that the elements of the second GSList are not copied. +They are used directly.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list1

a GSList

 

list2

the GSList to add to the end of the first GSList

 
+
+
+

Returns

+

the start of the new GSList

+
+
+
+
+

g_slist_foreach ()

+
void
+g_slist_foreach (GSList *list,
+                 GFunc func,
+                 gpointer user_data);
+

Calls a function for each element of a GSList.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

list

a GSList

 

func

the function to call with each element's data

 

user_data

user data to pass to the function

 
+
+
+
+
+

g_slist_last ()

+
GSList *
+g_slist_last (GSList *list);
+

Gets the last element in a GSList.

+

This function iterates over the whole list.

+
+

Parameters

+
+++++ + + + + + +

list

a GSList

 
+
+
+

Returns

+

the last element in the GSList, +or NULL if the GSList has no elements

+
+
+
+
+

g_slist_next()

+
#define             g_slist_next(slist)
+

A convenience macro to get the next element in a GSList.

+
+

Parameters

+
+++++ + + + + + +

slist

an element in a GSList.

 
+
+
+

Returns

+

the next element, or NULL if there are no more elements.

+
+
+
+
+

g_slist_nth ()

+
GSList *
+g_slist_nth (GSList *list,
+             guint n);
+

Gets the element at the given position in a GSList.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GSList

 

n

the position of the element, counting from 0

 
+
+
+

Returns

+

the element, or NULL if the position is off +the end of the GSList

+
+
+
+
+

g_slist_nth_data ()

+
gpointer
+g_slist_nth_data (GSList *list,
+                  guint n);
+

Gets the data of the element at the given position.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GSList

 

n

the position of the element

 
+
+
+

Returns

+

the element's data, or NULL if the position +is off the end of the GSList

+
+
+
+
+

g_slist_find ()

+
GSList *
+g_slist_find (GSList *list,
+              gconstpointer data);
+

Finds the element in a GSList which +contains the given data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GSList

 

data

the element data to find

 
+
+
+

Returns

+

the found GSList element, +or NULL if it is not found

+
+
+
+
+

g_slist_find_custom ()

+
GSList *
+g_slist_find_custom (GSList *list,
+                     gconstpointer data,
+                     GCompareFunc func);
+

Finds an element in a GSList, using a supplied function to +find the desired element. It iterates over the list, calling +the given function which should return 0 when the desired +element is found. The function takes two gconstpointer arguments, +the GSList element's data as the first argument and the +given user data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

list

a GSList

 

data

user data passed to the function

 

func

the function to call for each element. +It should return 0 when the desired element is found

 
+
+
+

Returns

+

the found GSList element, or NULL if it is not found

+
+
+
+
+

g_slist_position ()

+
gint
+g_slist_position (GSList *list,
+                  GSList *llink);
+

Gets the position of the given element +in the GSList (starting from 0).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GSList

 

llink

an element in the GSList

 
+
+
+

Returns

+

the position of the element in the GSList, +or -1 if the element is not found

+
+
+
+
+

g_slist_index ()

+
gint
+g_slist_index (GSList *list,
+               gconstpointer data);
+

Gets the position of the element containing +the given data (starting from 0).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

list

a GSList

 

data

the data to find

 
+
+
+

Returns

+

the index of the element containing the data, +or -1 if the data is not found

+
+
+
+
+

Types and Values

+
+

struct GSList

+
struct GSList {
+  gpointer data;
+  GSList *next;
+};
+
+

The GSList struct is used for each element in the singly-linked +list.

+
+

Members

+
+++++ + + + + + + + + + + + + +

gpointer data;

holds the element's data, which can be a pointer to any kind +of data, or any integer value using the +Type Conversion Macros

 

GSList *next;

contains the link to the next element in the list.

 
+
+
+
+
+

g_slist_free1

+
#define             g_slist_free1
+

A macro which does the same as g_slist_free_1().

+

Since: 2.10

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Spawning-Processes.html b/docs/reference/glib/html/glib-Spawning-Processes.html new file mode 100644 index 0000000..06fa2a9 --- /dev/null +++ b/docs/reference/glib/html/glib-Spawning-Processes.html @@ -0,0 +1,1153 @@ + + + + +Spawning Processes: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Spawning Processes

+

Spawning Processes — process launching

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +(*GSpawnChildSetupFunc) () +
+gboolean + +g_spawn_async_with_pipes () +
+gboolean + +g_spawn_async () +
+gboolean + +g_spawn_sync () +
+gboolean + +g_spawn_check_exit_status () +
+gboolean + +g_spawn_command_line_async () +
+gboolean + +g_spawn_command_line_sync () +
+void + +g_spawn_close_pid () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + +
enumGSpawnError
#defineG_SPAWN_ERROR
enumGSpawnFlags
#defineG_SPAWN_EXIT_ERROR
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GLib supports spawning of processes with an API that is more +convenient than the bare UNIX fork() and exec().

+

The g_spawn family of functions has synchronous (g_spawn_sync()) +and asynchronous variants (g_spawn_async(), g_spawn_async_with_pipes()), +as well as convenience variants that take a complete shell-like +commandline (g_spawn_command_line_sync(), g_spawn_command_line_async()).

+

See GSubprocess in GIO for a higher-level API that provides +stream interfaces for communication with child processes.

+
+
+

Functions

+
+

GSpawnChildSetupFunc ()

+
void
+(*GSpawnChildSetupFunc) (gpointer user_data);
+

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 signal(7)) 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 g_spawn... function.

+
+

Parameters

+
+++++ + + + + + +

user_data

user data to pass to the function.

 
+
+
+
+
+

g_spawn_async_with_pipes ()

+
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);
+

Executes a child program asynchronously (your program will not +block waiting for the child to exit). The child program is +specified by the only argument that must be provided, argv +. +argv + should be a NULL-terminated array of strings, to be passed +as the argument vector for the child. The first string in argv + +is of course the name of the program to execute. By default, the +name of the program must be a full path. If flags + contains the +G_SPAWN_SEARCH_PATH flag, the PATH environment variable is +used to search for the executable. If flags + contains the +G_SPAWN_SEARCH_PATH_FROM_ENVP flag, the PATH variable from +envp + is used to search for the executable. If both the +G_SPAWN_SEARCH_PATH and G_SPAWN_SEARCH_PATH_FROM_ENVP flags +are set, the PATH variable from envp + takes precedence over +the environment variable.

+

If the program name is not a full path and G_SPAWN_SEARCH_PATH flag is not +used, then the program will be run from the current directory (or +working_directory +, if specified); this might be unexpected or even +dangerous in some cases when the current directory is world-writable.

+

On Windows, note that all the string or string vector arguments to +this function and the other g_spawn*() functions are in UTF-8, the +GLib file name encoding. Unicode characters that are not part of +the system codepage passed in these arguments will be correctly +available in the spawned program only if it uses wide character API +to retrieve its command line. For C programs built with Microsoft's +tools it is enough to make the program have a wmain() instead of +main(). wmain() has a wide character argument vector as parameter.

+

At least currently, mingw doesn't support wmain(), so if you use +mingw to develop the spawned program, it should call +g_win32_get_command_line() to get arguments in UTF-8.

+

On Windows the low-level child process creation API CreateProcess() +doesn't use argument vectors, but a command line. The C runtime +library's spawn*() family of functions (which g_spawn_async_with_pipes() +eventually calls) paste the argument vector elements together into +a command line, and the C runtime startup code does a corresponding +reconstruction of an argument vector from the command line, to be +passed to main(). Complications arise when you have argument vector +elements that contain spaces of double quotes. The spawn*() functions +don't do any quoting or escaping, but on the other hand the startup +code does do unquoting and unescaping in order to enable receiving +arguments with embedded spaces or double quotes. To work around this +asymmetry, g_spawn_async_with_pipes() will do quoting and escaping on +argument vector elements that need it before calling the C runtime +spawn() function.

+

The returned child_pid + on Windows is a handle to the child +process, not its identifier. Process handles and process +identifiers are different concepts on Windows.

+

envp + is a NULL-terminated array of strings, where each string +has the form KEY=VALUE. This will become the child's environment. +If envp + is NULL, the child inherits its parent's environment.

+

flags + should be the bitwise OR of any flags you want to affect the +function's behaviour. The G_SPAWN_DO_NOT_REAP_CHILD means that the +child will not automatically be reaped; you must use a child watch to +be notified about the death of the child process. Eventually you must +call g_spawn_close_pid() on the child_pid +, in order to free +resources which may be associated with the child process. (On Unix, +using a child watch is equivalent to calling waitpid() or handling +the SIGCHLD signal manually. On Windows, calling g_spawn_close_pid() +is equivalent to calling CloseHandle() on the process handle returned +in child_pid +). See g_child_watch_add().

+

G_SPAWN_LEAVE_DESCRIPTORS_OPEN means that 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_SEARCH_PATH means that argv +[0] need not be an +absolute path, it will be looked for in the PATH environment +variable. G_SPAWN_SEARCH_PATH_FROM_ENVP means need not be an +absolute path, it will be looked for in the PATH variable from +envp +. If both G_SPAWN_SEARCH_PATH and G_SPAWN_SEARCH_PATH_FROM_ENVP +are used, the value from envp + takes precedence over the environment. +G_SPAWN_STDOUT_TO_DEV_NULL means that the child's standard output +will be discarded, instead of going to the same location as the parent's +standard output. If you use this flag, standard_output + must be NULL. +G_SPAWN_STDERR_TO_DEV_NULL means that the child's standard error +will be discarded, instead of going to the same location as the parent's +standard error. If you use this flag, standard_error + must be NULL. +G_SPAWN_CHILD_INHERITS_STDIN means that the child will inherit the parent's +standard input (by default, the child's standard input is attached to +/dev/null). If you use this flag, standard_input + must be NULL. +G_SPAWN_FILE_AND_ARGV_ZERO means that the first element of argv + 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 argv +[0] as the file to execute, and passes all of argv + to the child.

+

child_setup + and user_data + are a function and user data. On POSIX +platforms, the function is called in the child after GLib has +performed all the setup it plans to perform (including creating +pipes, closing file descriptors, etc.) but before calling exec(). +That is, child_setup + is called just before calling exec() in the +child. Obviously actions taken in this function will only affect +the child, not the parent.

+

On Windows, there is no separate fork() and exec() functionality. +Child processes are created and run with a single API call, +CreateProcess(). There is no sensible thing child_setup + +could be used for on Windows so it is ignored and not called.

+

If non-NULL, child_pid + will on Unix be filled with the child's +process ID. You can use the process ID to send signals to the child, +or to use g_child_watch_add() (or waitpid()) if you specified the +G_SPAWN_DO_NOT_REAP_CHILD flag. On Windows, child_pid + will be +filled with a handle to the child process only if you specified the +G_SPAWN_DO_NOT_REAP_CHILD flag. You can then access the child +process using the Win32 API, for example wait for its termination +with the WaitFor*() functions, or examine its exit code with +GetExitCodeProcess(). You should close the handle with CloseHandle() +or g_spawn_close_pid() when you no longer need it.

+

If non-NULL, the standard_input +, standard_output +, standard_error + +locations will be filled with file descriptors for writing to the child's +standard input or reading from its standard output or standard error. +The caller of g_spawn_async_with_pipes() must close these file descriptors +when they are no longer in use. If these parameters are NULL, the +corresponding pipe won't be created.

+

If standard_input + is NULL, the child's standard input is attached to +/dev/null unless G_SPAWN_CHILD_INHERITS_STDIN is set.

+

If standard_error + is NULL, the child's standard error goes to the same +location as the parent's standard error unless G_SPAWN_STDERR_TO_DEV_NULL +is set.

+

If standard_output + is NULL, the child's standard output goes to the same +location as the parent's standard output unless G_SPAWN_STDOUT_TO_DEV_NULL +is set.

+

error + can be NULL to ignore errors, or non-NULL to report errors. +If an error is set, the function returns FALSE. Errors are reported +even if they occur in the child (for example if the executable in +argv +[0] is not found). Typically the message field of returned +errors should be displayed to users. Possible errors are those from +the G_SPAWN_ERROR domain.

+

If an error occurs, child_pid +, standard_input +, standard_output +, +and standard_error + will not be filled with valid values.

+

If child_pid + is not NULL and an error does not occur then the returned +process reference must be closed using g_spawn_close_pid().

+

If you are writing a GTK+ application, and the program you +are spawning is a graphical application, too, then you may +want to use gdk_spawn_on_screen_with_pipes() instead to ensure that +the spawned program opens its windows on the right screen.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

working_directory

child's current working directory, or NULL to inherit parent's, in the GLib file name encoding.

[allow-none]

argv

child's argument vector, in the GLib file name encoding.

[array zero-terminated=1]

envp

child's environment, or NULL to inherit parent's, in the GLib file name encoding.

[array zero-terminated=1][allow-none]

flags

flags from GSpawnFlags

 

child_setup

function to run in the child just before exec().

[scope async][allow-none]

user_data

user data for child_setup +.

[closure]

child_pid

return location for child process ID, or NULL.

[out][allow-none]

standard_input

return location for file descriptor to write to child's stdin, or NULL.

[out][allow-none]

standard_output

return location for file descriptor to read child's stdout, or NULL.

[out][allow-none]

standard_error

return location for file descriptor to read child's stderr, or NULL.

[out][allow-none]

error

return location for error

 
+
+
+

Returns

+

TRUE on success, FALSE if an error was set

+
+
+
+
+

g_spawn_async ()

+
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);
+

See g_spawn_async_with_pipes() for a full description; this function +simply calls the g_spawn_async_with_pipes() without any pipes.

+

You should call g_spawn_close_pid() on the returned child process +reference when you don't need it any more.

+

If you are writing a GTK+ application, and the program you are +spawning is a graphical application, too, then you may want to +use gdk_spawn_on_screen() instead to ensure that the spawned program +opens its windows on the right screen.

+

Note that the returned child_pid + on Windows is a handle to the child +process and not its identifier. Process handles and process identifiers +are different concepts on Windows.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

working_directory

child's current working directory, or NULL to inherit parent's.

[allow-none]

argv

child's argument vector.

[array zero-terminated=1]

envp

child's environment, or NULL to inherit parent's.

[array zero-terminated=1][allow-none]

flags

flags from GSpawnFlags

 

child_setup

function to run in the child just before exec().

[scope async][allow-none]

user_data

user data for child_setup +.

[closure]

child_pid

return location for child process reference, or NULL.

[out][allow-none]

error

return location for error

 
+
+
+

Returns

+

TRUE on success, FALSE if error is set

+
+
+
+
+

g_spawn_sync ()

+
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);
+

Executes a child synchronously (waits for the child to exit before returning). +All output from the child is stored in standard_output + and standard_error +, +if those parameters are non-NULL. Note that you must set the +G_SPAWN_STDOUT_TO_DEV_NULL and G_SPAWN_STDERR_TO_DEV_NULL flags when +passing NULL for standard_output + and standard_error +.

+

If exit_status + is non-NULL, the platform-specific exit status of +the child is stored there; see the documentation of +g_spawn_check_exit_status() for how to use and interpret this. +Note that it is invalid to pass G_SPAWN_DO_NOT_REAP_CHILD in +flags +.

+

If an error occurs, no data is returned in standard_output +, +standard_error +, or exit_status +.

+

This function calls g_spawn_async_with_pipes() internally; see that +function for full details on the other parameters and details on +how these functions work on Windows.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

working_directory

child's current working directory, or NULL to inherit parent's.

[allow-none]

argv

child's argument vector.

[array zero-terminated=1]

envp

child's environment, or NULL to inherit parent's.

[array zero-terminated=1][allow-none]

flags

flags from GSpawnFlags

 

child_setup

function to run in the child just before exec().

[scope async][allow-none]

user_data

user data for child_setup +.

[closure]

standard_output

return location for child output, or NULL.

[out][array zero-terminated=1][element-type guint8][allow-none]

standard_error

return location for child error messages, or NULL.

[out][array zero-terminated=1][element-type guint8][allow-none]

exit_status

return location for child exit status, as returned by waitpid(), or NULL.

[out][allow-none]

error

return location for error, or NULL

 
+
+
+

Returns

+

TRUE on success, FALSE if an error was set

+
+
+
+
+

g_spawn_check_exit_status ()

+
gboolean
+g_spawn_check_exit_status (gint exit_status,
+                           GError **error);
+

Set error + if exit_status + indicates the child exited abnormally +(e.g. with a nonzero exit code, or via a fatal signal).

+

The g_spawn_sync() and g_child_watch_add() family of APIs return an +exit status for subprocesses encoded in a platform-specific way. +On Unix, this is guaranteed to be in the same format waitpid() returns, +and on Windows it is guaranteed to be the result of GetExitCodeProcess().

+

Prior to the introduction of this function in GLib 2.34, interpreting +exit_status + required use of platform-specific APIs, which is problematic +for software using GLib as a cross-platform layer.

+

Additionally, many programs simply want to determine whether or not +the child exited successfully, and either propagate a GError or +print a message to standard error. In that common case, this function +can be used. Note that the error message in error + will contain +human-readable information about the exit status.

+

The domain + and code + of error + have special semantics in the case +where the process has an "exit code", as opposed to being killed by +a signal. On Unix, this happens if WIFEXITED() would be true of +exit_status +. On Windows, it is always the case.

+

The special semantics are that the actual exit code will be the +code set in error +, and the domain will be G_SPAWN_EXIT_ERROR. +This allows you to differentiate between different exit codes.

+

If the process was terminated by some means other than an exit +status, the domain will be G_SPAWN_ERROR, and the code will be +G_SPAWN_ERROR_FAILED.

+

This function just offers convenience; you can of course also check +the available platform via a macro such as G_OS_UNIX, and use +WIFEXITED() and WEXITSTATUS() on exit_status + directly. Do not attempt +to scan or parse the error message string; it may be translated and/or +change in future versions of GLib.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

exit_status

An exit code as returned from g_spawn_sync()

 

error

a GError

 
+
+
+

Returns

+

TRUE if child exited successfully, FALSE otherwise (and +error +will be set)

+
+

Since: 2.34

+
+
+
+

g_spawn_command_line_async ()

+
gboolean
+g_spawn_command_line_async (const gchar *command_line,
+                            GError **error);
+

A simple version of g_spawn_async() that parses a command line with +g_shell_parse_argv() and passes it to g_spawn_async(). Runs a +command line in the background. Unlike g_spawn_async(), the +G_SPAWN_SEARCH_PATH flag is enabled, other flags are not. Note +that G_SPAWN_SEARCH_PATH can have security implications, so +consider using g_spawn_async() directly if appropriate. Possible +errors are those from g_shell_parse_argv() and g_spawn_async().

+

The same concerns on Windows apply as for g_spawn_command_line_sync().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

command_line

a command line

 

error

return location for errors

 
+
+
+

Returns

+

TRUE on success, FALSE if error is set

+
+
+
+
+

g_spawn_command_line_sync ()

+
gboolean
+g_spawn_command_line_sync (const gchar *command_line,
+                           gchar **standard_output,
+                           gchar **standard_error,
+                           gint *exit_status,
+                           GError **error);
+

A simple version of g_spawn_sync() with little-used parameters +removed, taking a command line instead of an argument vector. See +g_spawn_sync() for full details. command_line + will be parsed by +g_shell_parse_argv(). Unlike g_spawn_sync(), the G_SPAWN_SEARCH_PATH flag +is enabled. Note that G_SPAWN_SEARCH_PATH can have security +implications, so consider using g_spawn_sync() directly if +appropriate. Possible errors are those from g_spawn_sync() and those +from g_shell_parse_argv().

+

If exit_status + is non-NULL, the platform-specific exit status of +the child is stored there; see the documentation of +g_spawn_check_exit_status() for how to use and interpret this.

+

On Windows, please note the implications of g_shell_parse_argv() +parsing command_line +. Parsing is done according to Unix shell rules, not +Windows command interpreter rules. +Space is a separator, and backslashes are +special. Thus you cannot simply pass a command_line + containing +canonical Windows paths, like "c:\program files\app\app.exe", as +the backslashes will be eaten, and the space will act as a +separator. You need to enclose such paths with single quotes, like +"'c:\program files\app\app.exe' 'e:\folder\argument.txt'".

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

command_line

a command line

 

standard_output

return location for child output.

[out][array zero-terminated=1][element-type guint8][allow-none]

standard_error

return location for child errors.

[out][array zero-terminated=1][element-type guint8][allow-none]

exit_status

return location for child exit status, as returned by waitpid().

[out][allow-none]

error

return location for errors

 
+
+
+

Returns

+

TRUE on success, FALSE if an error was set

+
+
+
+
+

g_spawn_close_pid ()

+
void
+g_spawn_close_pid (GPid pid);
+

On some platforms, notably Windows, the GPid type represents a resource +which must be closed to prevent resource leaking. g_spawn_close_pid() +is provided for this purpose. It should be used on all platforms, even +though it doesn't do anything under UNIX.

+
+

Parameters

+
+++++ + + + + + +

pid

The process reference to close

 
+
+
+
+
+

Types and Values

+
+

enum GSpawnError

+

Error codes returned by spawning processes.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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 EACCES

+
 

G_SPAWN_ERROR_PERM

+

execv() returned EPERM

+
 

G_SPAWN_ERROR_TOO_BIG

+

execv() returned E2BIG

+
 

G_SPAWN_ERROR_2BIG

+

deprecated alias for G_SPAWN_ERROR_TOO_BIG

+
 

G_SPAWN_ERROR_NOEXEC

+

execv() returned ENOEXEC

+
 

G_SPAWN_ERROR_NAMETOOLONG

+

execv() returned ENAMETOOLONG

+
 

G_SPAWN_ERROR_NOENT

+

execv() returned ENOENT

+
 

G_SPAWN_ERROR_NOMEM

+

execv() returned ENOMEM

+
 

G_SPAWN_ERROR_NOTDIR

+

execv() returned ENOTDIR

+
 

G_SPAWN_ERROR_LOOP

+

execv() returned ELOOP

+
 

G_SPAWN_ERROR_TXTBUSY

+

execv() returned ETXTBUSY

+
 

G_SPAWN_ERROR_IO

+

execv() returned EIO

+
 

G_SPAWN_ERROR_NFILE

+

execv() returned ENFILE

+
 

G_SPAWN_ERROR_MFILE

+

execv() returned EMFILE

+
 

G_SPAWN_ERROR_INVAL

+

execv() returned EINVAL

+
 

G_SPAWN_ERROR_ISDIR

+

execv() returned EISDIR

+
 

G_SPAWN_ERROR_LIBBAD

+

execv() returned ELIBBAD

+
 

G_SPAWN_ERROR_FAILED

+

Some other fatal failure, + error->message should explain.

+
 
+
+
+
+
+

G_SPAWN_ERROR

+
#define G_SPAWN_ERROR g_spawn_error_quark ()
+
+

Error domain for spawning processes. Errors in this domain will +be from the GSpawnError enumeration. See GError for information on +error domains.

+
+
+
+

enum GSpawnFlags

+

Flags passed to g_spawn_sync(), g_spawn_async() and g_spawn_async_with_pipes().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_SPAWN_DEFAULT

+

no flags, default behaviour

+
 

G_SPAWN_LEAVE_DESCRIPTORS_OPEN

+

the parent's open file descriptors will + be inherited by the child; otherwise all descriptors except stdin, + stdout and 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 + SIGCHLD yourself), or the child will become a zombie.

+
 

G_SPAWN_SEARCH_PATH

+

argv[0] need not be an absolute path, it will be + looked for in the user's PATH.

+
 

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 /dev/null).

+
 

G_SPAWN_FILE_AND_ARGV_ZERO

+

the first element of argv 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 argv[0] + as the file to execute, and passes all of argv to the child.

+
 

G_SPAWN_SEARCH_PATH_FROM_ENVP

+

if argv[0] is not an abolute path, + it will be looked for in the PATH from the passed child environment. + Since: 2.34

+
 

G_SPAWN_CLOEXEC_PIPES

+

create all pipes with the O_CLOEXEC flag set. + Since: 2.40

+
 
+
+
+
+
+

G_SPAWN_EXIT_ERROR

+
#define G_SPAWN_EXIT_ERROR g_spawn_exit_error_quark ()
+
+

Error domain used by g_spawn_check_exit_status(). The code +will be the program exit code.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Standard-Macros.html b/docs/reference/glib/html/glib-Standard-Macros.html new file mode 100644 index 0000000..46e92c4 --- /dev/null +++ b/docs/reference/glib/html/glib-Standard-Macros.html @@ -0,0 +1,585 @@ + + + + +Standard Macros: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Standard Macros

+

Standard Macros — commonly-used macros

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define +G_IS_DIR_SEPARATOR() +
#defineNULL
#define +MIN() +
#define +MAX() +
#define +ABS() +
#define +CLAMP() +
#define +G_STRUCT_MEMBER() +
#define +G_STRUCT_MEMBER_P() +
#define +G_STRUCT_OFFSET() +
#define +G_N_ELEMENTS() +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#defineG_OS_WIN32
#defineG_OS_UNIX
#defineG_DIR_SEPARATOR
#defineG_DIR_SEPARATOR_S
#defineG_SEARCHPATH_SEPARATOR
#defineG_SEARCHPATH_SEPARATOR_S
#defineTRUE
#defineFALSE
#defineG_MEM_ALIGN
#defineG_CONST_RETURN
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

These macros provide a few commonly-used features.

+
+
+

Functions

+
+

G_IS_DIR_SEPARATOR()

+
#define G_IS_DIR_SEPARATOR(c) ((c) == G_DIR_SEPARATOR || (c) == '/')
+
+

Checks whether a character is a directory +separator. It returns TRUE for '/' on UNIX +machines and for '\' or '/' under Windows.

+
+

Parameters

+
+++++ + + + + + +

c

a character

 
+
+

Since: 2.6

+
+
+
+

NULL

+
#  define NULL        (0L)
+
+

Defines the standard NULL pointer.

+
+
+
+

MIN()

+
#define MIN(a, b)  (((a) < (b)) ? (a) : (b))
+
+

Calculates the minimum of a + and b +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

a

a numeric value

 

b

a numeric value

 
+
+
+

Returns

+

the minimum of a +and b +.

+
+
+
+
+

MAX()

+
#define MAX(a, b)  (((a) > (b)) ? (a) : (b))
+
+

Calculates the maximum of a + and b +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

a

a numeric value

 

b

a numeric value

 
+
+
+

Returns

+

the maximum of a +and b +.

+
+
+
+
+

ABS()

+
#define ABS(a)	   (((a) < 0) ? -(a) : (a))
+
+

Calculates the absolute value of a +. +The absolute value is simply the number with any negative sign taken away.

+

For example,

+
    +
  • ABS(-10) is 10.

  • +
  • ABS(10) is also 10.

  • +
+
+

Parameters

+
+++++ + + + + + +

a

a numeric value

 
+
+
+

Returns

+

the absolute value of a +.

+
+
+
+
+

CLAMP()

+
#define CLAMP(x, low, high)  (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x)))
+
+

Ensures that x + is between the limits set by low + and high +. If low + is +greater than high + the result is undefined.

+

For example,

+
    +
  • CLAMP(5, 10, 15) is 10.

  • +
  • CLAMP(15, 5, 10) is 10.

  • +
  • CLAMP(20, 15, 25) is 20.

  • +
+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

x

the value to clamp

 

low

the minimum value allowed

 

high

the maximum value allowed

 
+
+
+

Returns

+

the value of x +clamped to the range between low +and high +

+
+
+
+
+

G_STRUCT_MEMBER()

+
#define             G_STRUCT_MEMBER(member_type, struct_p, struct_offset)
+

Returns a member of a structure at a given offset, using the given type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

member_type

the type of the struct field

 

struct_p

a pointer to a struct

 

struct_offset

the offset of the field from the start of the struct, +in bytes

 
+
+
+

Returns

+

the struct member

+
+
+
+
+

G_STRUCT_MEMBER_P()

+
#define             G_STRUCT_MEMBER_P(struct_p, struct_offset)
+

Returns an untyped pointer to a given offset of a struct.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

struct_p

a pointer to a struct

 

struct_offset

the offset from the start of the struct, in bytes

 
+
+
+

Returns

+

an untyped pointer to struct_p +plus struct_offset +bytes

+
+
+
+
+

G_STRUCT_OFFSET()

+
#define             G_STRUCT_OFFSET(struct_type, member)
+

Returns the offset, in bytes, of a member of a struct.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

struct_type

a structure type, e.g. GtkWidget

 

member

a field in the structure, e.g. window +

 
+
+
+

Returns

+

the offset of member +from the start of struct_type +

+
+
+
+
+

G_N_ELEMENTS()

+
#define G_N_ELEMENTS(arr)		(sizeof (arr) / sizeof ((arr)[0]))
+
+

Determines the number of elements in an array. The array must be +declared so the compiler knows its size at compile-time; this +macro will not work on an array allocated on the heap, only static +arrays or arrays on the stack.

+
+

Parameters

+
+++++ + + + + + +

arr

the array

 
+
+
+
+
+

Types and Values

+
+

G_OS_WIN32

+
#define G_OS_WIN32
+
+

This macro is defined only on Windows. So you can bracket +Windows-specific code in "#ifdef G_OS_WIN32".

+
+
+
+

G_OS_UNIX

+
#define G_OS_UNIX
+
+

This macro is defined only on UNIX. So you can bracket +UNIX-specific code in "#ifdef G_OS_UNIX".

+
+
+
+

G_DIR_SEPARATOR

+
#define G_DIR_SEPARATOR '\\'
+
+

The directory separator character. +This is '/' on UNIX machines and '\' under Windows.

+
+
+
+

G_DIR_SEPARATOR_S

+
#define G_DIR_SEPARATOR_S "\\"
+
+

The directory separator as a string. +This is "/" on UNIX machines and "\" under Windows.

+
+
+
+

G_SEARCHPATH_SEPARATOR

+
#define G_SEARCHPATH_SEPARATOR ';'
+
+

The search path separator character. +This is ':' on UNIX machines and ';' under Windows.

+
+
+
+

G_SEARCHPATH_SEPARATOR_S

+
#define G_SEARCHPATH_SEPARATOR_S ";"
+
+

The search path separator as a string. +This is ":" on UNIX machines and ";" under Windows.

+
+
+
+

TRUE

+
#define TRUE (!FALSE)
+
+

Defines the TRUE value for the gboolean type.

+
+
+
+

FALSE

+
#define FALSE (0)
+
+

Defines the FALSE value for the gboolean type.

+
+
+
+

G_MEM_ALIGN

+
#  define G_MEM_ALIGN GLIB_SIZEOF_VOID_P
+
+

Indicates the number of bytes to which memory will be aligned on the +current platform.

+
+
+
+

G_CONST_RETURN

+
#define G_CONST_RETURN
+
+
+

G_CONST_RETURN has been deprecated since version 2.30 and should not be used in newly-written code.

+

API providers should replace all existing uses with +const and API consumers should adjust their code accordingly

+
+

If G_DISABLE_CONST_RETURNS is defined, this macro expands +to nothing. By default, the macro expands to const. The macro +can be used in place of const for functions that return a value +that should not be modified. The purpose of this macro is to allow +us to turn on const for returned constant strings by default, while +allowing programmers who find that annoying to turn it off. This macro +should only be used for return values and for "out" parameters, it +doesn't make sense for "in" parameters.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-String-Chunks.html b/docs/reference/glib/html/glib-String-Chunks.html new file mode 100644 index 0000000..210a5a7 --- /dev/null +++ b/docs/reference/glib/html/glib-String-Chunks.html @@ -0,0 +1,369 @@ + + + + +String Chunks: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

String Chunks

+

String Chunks — efficient storage of groups of strings

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GStringChunk * + +g_string_chunk_new () +
+gchar * + +g_string_chunk_insert () +
+gchar * + +g_string_chunk_insert_const () +
+gchar * + +g_string_chunk_insert_len () +
+void + +g_string_chunk_clear () +
+void + +g_string_chunk_free () +
+
+
+

Types and Values

+
++++ + + + + +
 GStringChunk
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

String chunks are used to store groups of strings. Memory is +allocated in blocks, and as strings are added to the GStringChunk +they are copied into the next free position in a block. When a block +is full a new block is allocated.

+

When storing a large number of strings, string chunks are more +efficient than using g_strdup() since fewer calls to malloc() are +needed, and less memory is wasted in memory allocation overheads.

+

By adding strings with g_string_chunk_insert_const() it is also +possible to remove duplicates.

+

To create a new GStringChunk use g_string_chunk_new().

+

To add strings to a GStringChunk use g_string_chunk_insert().

+

To add strings to a GStringChunk, but without duplicating strings +which are already in the GStringChunk, use +g_string_chunk_insert_const().

+

To free the entire GStringChunk use g_string_chunk_free(). It is +not possible to free individual strings.

+
+
+

Functions

+
+

g_string_chunk_new ()

+
GStringChunk *
+g_string_chunk_new (gsize size);
+

Creates a new GStringChunk.

+
+

Parameters

+
+++++ + + + + + +

size

the default size of the blocks of memory which are +allocated to store the strings. If a particular string +is larger than this default size, a larger block of +memory will be allocated for it.

 
+
+
+

Returns

+

a new GStringChunk

+
+
+
+
+

g_string_chunk_insert ()

+
gchar *
+g_string_chunk_insert (GStringChunk *chunk,
+                       const gchar *string);
+

Adds a copy of string + to the GStringChunk. +It returns a pointer to the new copy of the string +in the GStringChunk. The characters in the string +can be changed, if necessary, though you should not +change anything after the end of the string.

+

Unlike g_string_chunk_insert_const(), this function +does not check for duplicates. Also strings added +with g_string_chunk_insert() will not be searched +by g_string_chunk_insert_const() when looking for +duplicates.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

chunk

a GStringChunk

 

string

the string to add

 
+
+
+

Returns

+

a pointer to the copy of string +within +the GStringChunk

+
+
+
+
+

g_string_chunk_insert_const ()

+
gchar *
+g_string_chunk_insert_const (GStringChunk *chunk,
+                             const gchar *string);
+

Adds a copy of string + to the GStringChunk, unless the same +string has already been added to the GStringChunk with +g_string_chunk_insert_const().

+

This function is useful if you need to copy a large number +of strings but do not want to waste space storing duplicates. +But you must remember that there may be several pointers to +the same string, and so any changes made to the strings +should be done very carefully.

+

Note that g_string_chunk_insert_const() will not return a +pointer to a string added with g_string_chunk_insert(), even +if they do match.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

chunk

a GStringChunk

 

string

the string to add

 
+
+
+

Returns

+

a pointer to the new or existing copy of string +within the GStringChunk

+
+
+
+
+

g_string_chunk_insert_len ()

+
gchar *
+g_string_chunk_insert_len (GStringChunk *chunk,
+                           const gchar *string,
+                           gssize len);
+

Adds a copy of the first len + bytes of string + to the GStringChunk. +The copy is nul-terminated.

+

Since this function does not stop at nul bytes, it is the caller's +responsibility to ensure that string + has at least len + addressable +bytes.

+

The characters in the returned string can be changed, if necessary, +though you should not change anything after the end of the string.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

chunk

a GStringChunk

 

string

bytes to insert

 

len

number of bytes of string +to insert, or -1 to insert a +nul-terminated string

 
+
+
+

Returns

+

a pointer to the copy of string +within the GStringChunk

+
+

Since: 2.4

+
+
+
+

g_string_chunk_clear ()

+
void
+g_string_chunk_clear (GStringChunk *chunk);
+

Frees all strings contained within the GStringChunk. +After calling g_string_chunk_clear() it is not safe to +access any of the strings which were contained within it.

+
+

Parameters

+
+++++ + + + + + +

chunk

a GStringChunk

 
+
+

Since: 2.14

+
+
+
+

g_string_chunk_free ()

+
void
+g_string_chunk_free (GStringChunk *chunk);
+

Frees all memory allocated by the GStringChunk. +After calling g_string_chunk_free() it is not safe to +access any of the strings which were contained within it.

+
+

Parameters

+
+++++ + + + + + +

chunk

a GStringChunk

 
+
+
+
+
+

Types and Values

+
+

GStringChunk

+
typedef struct _GStringChunk GStringChunk;
+

An opaque data structure representing String Chunks. +It should only be accessed by using the following functions.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-String-Utility-Functions.html b/docs/reference/glib/html/glib-String-Utility-Functions.html new file mode 100644 index 0000000..ee513d2 --- /dev/null +++ b/docs/reference/glib/html/glib-String-Utility-Functions.html @@ -0,0 +1,4054 @@ + + + + +String Utility Functions: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

String Utility Functions

+

String Utility Functions — various string-related functions

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gchar * + +g_strdup () +
+gchar * + +g_strndup () +
+gchar ** + +g_strdupv () +
+gchar * + +g_strnfill () +
+gchar * + +g_stpcpy () +
+gchar * + +g_strstr_len () +
+gchar * + +g_strrstr () +
+gchar * + +g_strrstr_len () +
+gboolean + +g_str_has_prefix () +
+gboolean + +g_str_has_suffix () +
+int + +g_strcmp0 () +
+gchar * + +g_str_to_ascii () +
+gchar ** + +g_str_tokenize_and_fold () +
+gboolean + +g_str_match_string () +
+gsize + +g_strlcpy () +
+gsize + +g_strlcat () +
+gchar * + +g_strdup_printf () +
+gchar * + +g_strdup_vprintf () +
+gint + +g_printf () +
+gint + +g_vprintf () +
+gint + +g_fprintf () +
+gint + +g_vfprintf () +
+gint + +g_sprintf () +
+gint + +g_vsprintf () +
+gint + +g_snprintf () +
+gint + +g_vsnprintf () +
+gint + +g_vasprintf () +
+gsize + +g_printf_string_upper_bound () +
+gboolean + +g_str_is_ascii () +
+gboolean + +g_ascii_isalnum () +
+gboolean + +g_ascii_isalpha () +
+gboolean + +g_ascii_iscntrl () +
+gboolean + +g_ascii_isdigit () +
+gboolean + +g_ascii_isgraph () +
+gboolean + +g_ascii_islower () +
+gboolean + +g_ascii_isprint () +
+gboolean + +g_ascii_ispunct () +
+gboolean + +g_ascii_isspace () +
+gboolean + +g_ascii_isupper () +
+gboolean + +g_ascii_isxdigit () +
+gint + +g_ascii_digit_value () +
+gint + +g_ascii_xdigit_value () +
+gint + +g_ascii_strcasecmp () +
+gint + +g_ascii_strncasecmp () +
+gchar * + +g_ascii_strup () +
+gchar * + +g_ascii_strdown () +
+gchar + +g_ascii_tolower () +
+gchar + +g_ascii_toupper () +
+GString * + +g_string_ascii_up () +
+GString * + +g_string_ascii_down () +
+gchar * + +g_strup () +
+gchar * + +g_strdown () +
+gint + +g_strcasecmp () +
+gint + +g_strncasecmp () +
+gchar * + +g_strreverse () +
+gint64 + +g_ascii_strtoll () +
+guint64 + +g_ascii_strtoull () +
#defineG_ASCII_DTOSTR_BUF_SIZE
+gdouble + +g_ascii_strtod () +
+gchar * + +g_ascii_dtostr () +
+gchar * + +g_ascii_formatd () +
+gdouble + +g_strtod () +
+gchar * + +g_strchug () +
+gchar * + +g_strchomp () +
#define +g_strstrip() +
+gchar * + +g_strdelimit () +
+gchar * + +g_strescape () +
+gchar * + +g_strcompress () +
+gchar * + +g_strcanon () +
+gchar ** + +g_strsplit () +
+gchar ** + +g_strsplit_set () +
+void + +g_strfreev () +
+gchar * + +g_strconcat () +
+gchar * + +g_strjoin () +
+gchar * + +g_strjoinv () +
+guint + +g_strv_length () +
+gboolean + +g_strv_contains () +
const gchar * + +g_strerror () +
const gchar * + +g_strsignal () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
#defineG_STR_DELIMITERS
typedefGStrv
+
+
+

Includes

+
#include <glib.h>
+#include <glib/gprintf.h>
+
+
+
+

Description

+

This section describes a number of utility functions for creating, +duplicating, and manipulating strings.

+

Note that the functions g_printf(), g_fprintf(), g_sprintf(), +g_snprintf(), g_vprintf(), g_vfprintf(), g_vsprintf() and g_vsnprintf() +are declared in the header gprintf.h which is not included in glib.h +(otherwise using glib.h would drag in stdio.h), so you'll have to +explicitly include <glib/gprintf.h> in order to use the GLib +printf() functions.

+
+

String precision pitfalls

+

While you may use the printf() functions to format UTF-8 strings, +notice that the precision of a %Ns parameter is interpreted +as the number of bytes, not characters to print. On top of that, +the GNU libc implementation of the printf() functions has the +"feature" that it checks that the string given for the %Ns +parameter consists of a whole number of characters in the current +encoding. So, unless you are sure you are always going to be in an +UTF-8 locale or your know your text is restricted to ASCII, avoid +using %Ns. If your intention is to format strings for a +certain number of columns, then %Ns is not a correct solution +anyway, since it fails to take wide characters (see g_unichar_iswide()) +into account.

+

Note also that there are various printf() parameters which are platform +dependent. GLib provides platform independent macros for these parameters +which should be used instead. A common example is G_GUINT64_FORMAT, which +should be used instead of %llu or similar parameters for formatting +64-bit integers. These macros are all named G_*_FORMAT; see +Basic Types.

+
+
+
+

Functions

+
+

g_strdup ()

+
gchar *
+g_strdup (const gchar *str);
+

Duplicates a string. If str + is NULL it returns NULL. +The returned string should be freed with g_free() +when no longer needed.

+
+

Parameters

+
+++++ + + + + + +

str

the string to duplicate.

[nullable]
+
+
+

Returns

+

a newly-allocated copy of str +

+
+
+
+
+

g_strndup ()

+
gchar *
+g_strndup (const gchar *str,
+           gsize n);
+

Duplicates the first n + bytes of a string, returning a newly-allocated +buffer n + + 1 bytes long which will always be nul-terminated. If str + +is less than n + bytes long the buffer is padded with nuls. If str + is +NULL it returns NULL. The returned value should be freed when no longer +needed.

+

To copy a number of characters from a UTF-8 encoded string, +use g_utf8_strncpy() instead.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

the string to duplicate

 

n

the maximum number of bytes to copy from str +

 
+
+
+

Returns

+

a newly-allocated buffer containing the first n +bytes +of str +, nul-terminated

+
+
+
+
+

g_strdupv ()

+
gchar **
+g_strdupv (gchar **str_array);
+

Copies NULL-terminated array of strings. The copy is a deep copy; +the new array should be freed by first freeing each string, then +the array itself. g_strfreev() does this for you. If called +on a NULL value, g_strdupv() simply returns NULL.

+
+

Parameters

+
+++++ + + + + + +

str_array

a NULL-terminated array of strings.

[nullable]
+
+
+

Returns

+

a new NULL-terminated array of strings.

+

[nullable]

+
+
+
+
+

g_strnfill ()

+
gchar *
+g_strnfill (gsize length,
+            gchar fill_char);
+

Creates a new string length + bytes long filled with fill_char +. +The returned string should be freed when no longer needed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

length

the length of the new string

 

fill_char

the byte to fill the string with

 
+
+
+

Returns

+

a newly-allocated string filled the fill_char +

+
+
+
+
+

g_stpcpy ()

+
gchar *
+g_stpcpy (gchar *dest,
+          const char *src);
+

Copies a nul-terminated string into the dest buffer, include the +trailing nul, and return a pointer to the trailing nul byte. +This is useful for concatenating multiple strings together +without having to repeatedly scan for the end.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

dest

destination buffer.

 

src

source string.

 
+
+
+

Returns

+

a pointer to trailing nul byte.

+
+
+
+
+

g_strstr_len ()

+
gchar *
+g_strstr_len (const gchar *haystack,
+              gssize haystack_len,
+              const gchar *needle);
+

Searches the string haystack + for the first occurrence +of the string needle +, limiting the length of the search +to haystack_len +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

haystack

a string

 

haystack_len

the maximum length of haystack +. Note that -1 is +a valid length, if haystack +is nul-terminated, meaning it will +search through the whole string.

 

needle

the string to search for

 
+
+
+

Returns

+

a pointer to the found occurrence, or +NULL if not found.

+
+
+
+
+

g_strrstr ()

+
gchar *
+g_strrstr (const gchar *haystack,
+           const gchar *needle);
+

Searches the string haystack + for the last occurrence +of the string needle +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

haystack

a nul-terminated string

 

needle

the nul-terminated string to search for

 
+
+
+

Returns

+

a pointer to the found occurrence, or +NULL if not found.

+
+
+
+
+

g_strrstr_len ()

+
gchar *
+g_strrstr_len (const gchar *haystack,
+               gssize haystack_len,
+               const gchar *needle);
+

Searches the string haystack + for the last occurrence +of the string needle +, limiting the length of the search +to haystack_len +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

haystack

a nul-terminated string

 

haystack_len

the maximum length of haystack +

 

needle

the nul-terminated string to search for

 
+
+
+

Returns

+

a pointer to the found occurrence, or +NULL if not found.

+
+
+
+
+

g_str_has_prefix ()

+
gboolean
+g_str_has_prefix (const gchar *str,
+                  const gchar *prefix);
+

Looks whether the string str + begins with prefix +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

a nul-terminated string

 

prefix

the nul-terminated prefix to look for

 
+
+
+

Returns

+

TRUE if str +begins with prefix +, FALSE otherwise.

+
+

Since: 2.2

+
+
+
+

g_str_has_suffix ()

+
gboolean
+g_str_has_suffix (const gchar *str,
+                  const gchar *suffix);
+

Looks whether the string str + ends with suffix +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

a nul-terminated string

 

suffix

the nul-terminated suffix to look for

 
+
+
+

Returns

+

TRUE if str +end with suffix +, FALSE otherwise.

+
+

Since: 2.2

+
+
+
+

g_strcmp0 ()

+
int
+g_strcmp0 (const char *str1,
+           const char *str2);
+

Compares str1 + and str2 + like strcmp(). Handles NULL +gracefully by sorting it before non-NULL strings. +Comparing two NULL pointers returns 0.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str1

a C string or NULL.

[allow-none]

str2

another C string or NULL.

[allow-none]
+
+
+

Returns

+

an integer less than, equal to, or greater than zero, if str1 +is <, == or > than str2 +.

+
+

Since: 2.16

+
+
+
+

g_str_to_ascii ()

+
gchar *
+g_str_to_ascii (const gchar *str,
+                const gchar *from_locale);
+

Transliterate str + to plain ASCII.

+

For best results, str + should be in composed normalised form.

+

This function performs a reasonably good set of character +replacements. The particular set of replacements that is done may +change by version or even by runtime environment.

+

If the source language of str + is known, it can used to improve the +accuracy of the translation by passing it as from_locale +. It should +be a valid POSIX locale string (of the form +"language_territory[modifier +]").

+

If from_locale + is NULL then the current locale is used.

+

If you want to do translation for no specific locale, and you want it +to be done independently of the currently locale, specify "C" for +from_locale +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

a string, in UTF-8

 

from_locale

the source locale, if known.

[allow-none]
+
+
+

Returns

+

a string in plain ASCII

+
+

Since: 2.40

+
+
+
+

g_str_tokenize_and_fold ()

+
gchar **
+g_str_tokenize_and_fold (const gchar *string,
+                         const gchar *translit_locale,
+                         gchar ***ascii_alternates);
+

Tokenises string + and performs folding on each token.

+

A token is a non-empty sequence of alphanumeric characters in the +source string, separated by non-alphanumeric characters. An +"alphanumeric" character for this purpose is one that matches +g_unichar_isalnum() or g_unichar_ismark().

+

Each token is then (Unicode) normalised and case-folded. If +ascii_alternates + is non-NULL and some of the returned tokens +contain non-ASCII characters, ASCII alternatives will be generated.

+

The number of ASCII alternatives that are generated and the method +for doing so is unspecified, but translit_locale + (if specified) may +improve the transliteration if the language of the source string is +known.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a string

 

translit_locale

the language code (like 'de' or +'en_GB') from which string +originates.

[allow-none]

ascii_alternates

a +return location for ASCII alternates.

[out][transfer full][array zero-terminated=1]
+
+
+

Returns

+

the folded tokens.

+

[transfer full][array zero-terminated=1]

+
+

Since: 2.40

+
+
+
+

g_str_match_string ()

+
gboolean
+g_str_match_string (const gchar *search_term,
+                    const gchar *potential_hit,
+                    gboolean accept_alternates);
+

Checks if a search conducted for search_term + should match +potential_hit +.

+

This function calls g_str_tokenize_and_fold() on both +search_term + and potential_hit +. ASCII alternates are never taken +for search_term + but will be taken for potential_hit + according to +the value of accept_alternates +.

+

A hit occurs when each folded token in search_term + is a prefix of a +folded token from potential_hit +.

+

Depending on how you're performing the search, it will typically be +faster to call g_str_tokenize_and_fold() on each string in +your corpus and build an index on the returned folded tokens, then +call g_str_tokenize_and_fold() on the search term and +perform lookups into that index.

+

As some examples, searching for "fred" would match the potential hit +"Smith, Fred" and also "Frédéric". Searching for "Fréd" would match +"Frédéric" but not "Frederic" (due to the one-directional nature of +accent matching). Searching "fo" would match "Foo" and "Bar Foo +Baz", but not "SFO" (because no word as "fo" as a prefix).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

search_term

the search term from the user

 

potential_hit

the text that may be a hit

 

accept_alternates

TRUE to accept ASCII alternates

 
+
+
+

Returns

+

TRUE if potential_hit +is a hit

+
+

Since: 2.40

+
+
+
+

g_strlcpy ()

+
gsize
+g_strlcpy (gchar *dest,
+           const gchar *src,
+           gsize dest_size);
+

Portability wrapper that calls strlcpy() on systems which have it, +and emulates strlcpy() otherwise. Copies src + to dest +; dest + is +guaranteed to be nul-terminated; src + must be nul-terminated; +dest_size + is the buffer size, not the number of bytes to copy.

+

At most dest_size + - 1 characters will be copied. Always nul-terminates +(unless dest_size + is 0). This function does not allocate memory. Unlike +strncpy(), this function doesn't pad dest + (so it's often faster). It +returns the size of the attempted result, strlen (src), so if +retval + >= dest_size +, truncation occurred.

+

Caveat: strlcpy() is supposedly more secure than strcpy() or strncpy(), +but if you really want to avoid screwups, g_strdup() is an even better +idea.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dest

destination buffer

 

src

source buffer

 

dest_size

length of dest +in bytes

 
+
+
+

Returns

+

length of src +

+
+
+
+
+

g_strlcat ()

+
gsize
+g_strlcat (gchar *dest,
+           const gchar *src,
+           gsize dest_size);
+

Portability wrapper that calls strlcat() on systems which have it, +and emulates it otherwise. Appends nul-terminated src + string to dest +, +guaranteeing nul-termination for dest +. The total size of dest + won't +exceed dest_size +.

+

At most dest_size + - 1 characters will be copied. Unlike strncat(), +dest_size + is the full size of dest, not the space left over. This +function does not allocate memory. It always nul-terminates (unless +dest_size + == 0 or there were no nul characters in the dest_size + +characters of dest to start with).

+

Caveat: this is supposedly a more secure alternative to strcat() or +strncat(), but for real security g_strconcat() is harder to mess up.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dest

destination buffer, already containing one nul-terminated string

 

src

source buffer

 

dest_size

length of dest +buffer in bytes (not length of existing string +inside dest +)

 
+
+
+

Returns

+

size of attempted result, which is MIN (dest_size, strlen +(original dest)) + strlen (src), so if retval >= dest_size, +truncation occurred.

+
+
+
+
+

g_strdup_printf ()

+
gchar *
+g_strdup_printf (const gchar *format,
+                 ...);
+

Similar to the standard C sprintf() function but safer, since it +calculates the maximum space required and allocates memory to hold +the result. The returned string should be freed with g_free() when no +longer needed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format

a standard printf() format string, but notice +string precision pitfalls

 

...

the parameters to insert into the format string

 
+
+
+

Returns

+

a newly-allocated string holding the result

+
+
+
+
+

g_strdup_vprintf ()

+
gchar *
+g_strdup_vprintf (const gchar *format,
+                  va_list args);
+

Similar to the standard C vsprintf() function but safer, since it +calculates the maximum space required and allocates memory to hold +the result. The returned string should be freed with g_free() when +no longer needed.

+

See also g_vasprintf(), which offers the same functionality, but +additionally returns the length of the allocated string.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format

a standard printf() format string, but notice +string precision pitfalls

 

args

the list of parameters to insert into the format string

 
+
+
+

Returns

+

a newly-allocated string holding the result

+
+
+
+
+

g_printf ()

+
gint
+g_printf (gchar const *format,
+          ...);
+

An implementation of the standard printf() function which supports +positional parameters, as specified in the Single Unix Specification.

+

As with the standard printf(), this does not automatically append a trailing +new-line character to the message, so typically format + should end with its +own new-line character.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format

a standard printf() format string, but notice +string precision pitfalls

 

...

the arguments to insert in the output.

 
+
+
+

Returns

+

the number of bytes printed.

+
+

Since: 2.2

+
+
+
+

g_vprintf ()

+
gint
+g_vprintf (gchar const *format,
+           va_list args);
+

An implementation of the standard vprintf() function which supports +positional parameters, as specified in the Single Unix Specification.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format

a standard printf() format string, but notice +string precision pitfalls

 

args

the list of arguments to insert in the output.

 
+
+
+

Returns

+

the number of bytes printed.

+
+

Since: 2.2

+
+
+
+

g_fprintf ()

+
gint
+g_fprintf (FILE *file,
+           gchar const *format,
+           ...);
+

An implementation of the standard fprintf() function which supports +positional parameters, as specified in the Single Unix Specification.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

the stream to write to.

[not nullable]

format

a standard printf() format string, but notice +string precision pitfalls

 

...

the arguments to insert in the output.

 
+
+
+

Returns

+

the number of bytes printed.

+
+

Since: 2.2

+
+
+
+

g_vfprintf ()

+
gint
+g_vfprintf (FILE *file,
+            gchar const *format,
+            va_list args);
+

An implementation of the standard fprintf() function which supports +positional parameters, as specified in the Single Unix Specification.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file

the stream to write to.

[not nullable]

format

a standard printf() format string, but notice +string precision pitfalls

 

args

the list of arguments to insert in the output.

 
+
+
+

Returns

+

the number of bytes printed.

+
+

Since: 2.2

+
+
+
+

g_sprintf ()

+
gint
+g_sprintf (gchar *string,
+           gchar const *format,
+           ...);
+

An implementation of the standard sprintf() function which supports +positional parameters, as specified in the Single Unix Specification.

+

Note that it is usually better to use g_snprintf(), to avoid the +risk of buffer overflow.

+

See also g_strdup_printf().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

A pointer to a memory buffer to contain the resulting string. It +is up to the caller to ensure that the allocated buffer is large +enough to hold the formatted result

 

format

a standard printf() format string, but notice +string precision pitfalls

 

...

the arguments to insert in the output.

 
+
+
+

Returns

+

the number of bytes printed.

+
+

Since: 2.2

+
+
+
+

g_vsprintf ()

+
gint
+g_vsprintf (gchar *string,
+            gchar const *format,
+            va_list args);
+

An implementation of the standard vsprintf() function which supports +positional parameters, as specified in the Single Unix Specification.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

the buffer to hold the output.

 

format

a standard printf() format string, but notice +string precision pitfalls

 

args

the list of arguments to insert in the output.

 
+
+
+

Returns

+

the number of bytes printed.

+
+

Since: 2.2

+
+
+
+

g_snprintf ()

+
gint
+g_snprintf (gchar *string,
+            gulong n,
+            gchar const *format,
+            ...);
+

A safer form of the standard sprintf() function. The output is guaranteed +to not exceed n + characters (including the terminating nul character), so +it is easy to ensure that a buffer overflow cannot occur.

+

See also g_strdup_printf().

+

In versions of GLib prior to 1.2.3, this function may return -1 if the +output was truncated, and the truncated string may not be nul-terminated. +In versions prior to 1.3.12, this function returns the length of the output +string.

+

The return value of g_snprintf() conforms to the snprintf() +function as standardized in ISO C99. Note that this is different from +traditional snprintf(), which returns the length of the output string.

+

The format string may contain positional parameters, as specified in +the Single Unix Specification.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

string

the buffer to hold the output.

 

n

the maximum number of bytes to produce (including the +terminating nul character).

 

format

a standard printf() format string, but notice +string precision pitfalls

 

...

the arguments to insert in the output.

 
+
+
+

Returns

+

the number of bytes which would be produced if the buffer +was large enough.

+
+
+
+
+

g_vsnprintf ()

+
gint
+g_vsnprintf (gchar *string,
+             gulong n,
+             gchar const *format,
+             va_list args);
+

A safer form of the standard vsprintf() function. The output is guaranteed +to not exceed n + characters (including the terminating nul character), so +it is easy to ensure that a buffer overflow cannot occur.

+

See also g_strdup_vprintf().

+

In versions of GLib prior to 1.2.3, this function may return -1 if the +output was truncated, and the truncated string may not be nul-terminated. +In versions prior to 1.3.12, this function returns the length of the output +string.

+

The return value of g_vsnprintf() conforms to the vsnprintf() function +as standardized in ISO C99. Note that this is different from traditional +vsnprintf(), which returns the length of the output string.

+

The format string may contain positional parameters, as specified in +the Single Unix Specification.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

string

the buffer to hold the output.

 

n

the maximum number of bytes to produce (including the +terminating nul character).

 

format

a standard printf() format string, but notice +string precision pitfalls][string-precision]

 

args

the list of arguments to insert in the output.

 
+
+
+

Returns

+

the number of bytes which would be produced if the buffer +was large enough.

+
+
+
+
+

g_vasprintf ()

+
gint
+g_vasprintf (gchar **string,
+             gchar const *format,
+             va_list args);
+

An implementation of the GNU vasprintf() function which supports +positional parameters, as specified in the Single Unix Specification. +This function is similar to g_vsprintf(), except that it allocates a +string to hold the output, instead of putting the output in a buffer +you allocate in advance.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

the return location for the newly-allocated string.

 

format

a standard printf() format string, but notice +string precision pitfalls

 

args

the list of arguments to insert in the output.

 
+
+
+

Returns

+

the number of bytes printed.

+
+

Since: 2.4

+
+
+
+

g_printf_string_upper_bound ()

+
gsize
+g_printf_string_upper_bound (const gchar *format,
+                             va_list args);
+

Calculates the maximum space needed to store the output +of the sprintf() function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format

the format string. See the printf() documentation

 

args

the parameters to be inserted into the format string

 
+
+
+

Returns

+

the maximum space needed to store the formatted string

+
+
+
+
+

g_str_is_ascii ()

+
gboolean
+g_str_is_ascii (const gchar *str);
+

Determines if a string is pure ASCII. A string is pure ASCII if it +contains no bytes with the high bit set.

+
+

Parameters

+
+++++ + + + + + +

str

a string

 
+
+
+

Returns

+

TRUE if str +is ASCII

+
+

Since: 2.40

+
+
+
+

g_ascii_isalnum ()

+
gboolean
+g_ascii_isalnum (gchar c);
+

Determines whether a character is alphanumeric.

+

Unlike the standard C library isalnum() function, this only +recognizes standard ASCII letters and ignores the locale, +returning FALSE for all non-ASCII characters. Also, unlike +the standard library function, this takes a char, not an int, +so don't call it on EOF, but no need to cast to guchar before +passing a possibly non-ASCII character in.

+
+

Parameters

+
+++++ + + + + + +

c

any character

 
+
+
+

Returns

+

TRUE if c +is an ASCII alphanumeric character

+
+
+
+
+

g_ascii_isalpha ()

+
gboolean
+g_ascii_isalpha (gchar c);
+

Determines whether a character is alphabetic (i.e. a letter).

+

Unlike the standard C library isalpha() function, this only +recognizes standard ASCII letters and ignores the locale, +returning FALSE for all non-ASCII characters. Also, unlike +the standard library function, this takes a char, not an int, +so don't call it on EOF, but no need to cast to guchar before +passing a possibly non-ASCII character in.

+
+

Parameters

+
+++++ + + + + + +

c

any character

 
+
+
+

Returns

+

TRUE if c +is an ASCII alphabetic character

+
+
+
+
+

g_ascii_iscntrl ()

+
gboolean
+g_ascii_iscntrl (gchar c);
+

Determines whether a character is a control character.

+

Unlike the standard C library iscntrl() function, this only +recognizes standard ASCII control characters and ignores the +locale, returning FALSE for all non-ASCII characters. Also, +unlike the standard library function, this takes a char, not +an int, so don't call it on EOF, but no need to cast to guchar +before passing a possibly non-ASCII character in.

+
+

Parameters

+
+++++ + + + + + +

c

any character

 
+
+
+

Returns

+

TRUE if c +is an ASCII control character.

+
+
+
+
+

g_ascii_isdigit ()

+
gboolean
+g_ascii_isdigit (gchar c);
+

Determines whether a character is digit (0-9).

+

Unlike the standard C library isdigit() function, this takes +a char, not an int, so don't call it on EOF, but no need to +cast to guchar before passing a possibly non-ASCII character in.

+
+

Parameters

+
+++++ + + + + + +

c

any character

 
+
+
+

Returns

+

TRUE if c +is an ASCII digit.

+
+
+
+
+

g_ascii_isgraph ()

+
gboolean
+g_ascii_isgraph (gchar c);
+

Determines whether a character is a printing character and not a space.

+

Unlike the standard C library isgraph() function, this only +recognizes standard ASCII characters and ignores the locale, +returning FALSE for all non-ASCII characters. Also, unlike +the standard library function, this takes a char, not an int, +so don't call it on EOF, but no need to cast to guchar before +passing a possibly non-ASCII character in.

+
+

Parameters

+
+++++ + + + + + +

c

any character

 
+
+
+

Returns

+

TRUE if c +is an ASCII printing character other than space.

+
+
+
+
+

g_ascii_islower ()

+
gboolean
+g_ascii_islower (gchar c);
+

Determines whether a character is an ASCII lower case letter.

+

Unlike the standard C library islower() function, this only +recognizes standard ASCII letters and ignores the locale, +returning FALSE for all non-ASCII characters. Also, unlike +the standard library function, this takes a char, not an int, +so don't call it on EOF, but no need to worry about casting +to guchar before passing a possibly non-ASCII character in.

+
+

Parameters

+
+++++ + + + + + +

c

any character

 
+
+
+

Returns

+

TRUE if c +is an ASCII lower case letter

+
+
+
+
+

g_ascii_isprint ()

+
gboolean
+g_ascii_isprint (gchar c);
+

Determines whether a character is a printing character.

+

Unlike the standard C library isprint() function, this only +recognizes standard ASCII characters and ignores the locale, +returning FALSE for all non-ASCII characters. Also, unlike +the standard library function, this takes a char, not an int, +so don't call it on EOF, but no need to cast to guchar before +passing a possibly non-ASCII character in.

+
+

Parameters

+
+++++ + + + + + +

c

any character

 
+
+
+

Returns

+

TRUE if c +is an ASCII printing character.

+
+
+
+
+

g_ascii_ispunct ()

+
gboolean
+g_ascii_ispunct (gchar c);
+

Determines whether a character is a punctuation character.

+

Unlike the standard C library ispunct() function, this only +recognizes standard ASCII letters and ignores the locale, +returning FALSE for all non-ASCII characters. Also, unlike +the standard library function, this takes a char, not an int, +so don't call it on EOF, but no need to cast to guchar before +passing a possibly non-ASCII character in.

+
+

Parameters

+
+++++ + + + + + +

c

any character

 
+
+
+

Returns

+

TRUE if c +is an ASCII punctuation character.

+
+
+
+
+

g_ascii_isspace ()

+
gboolean
+g_ascii_isspace (gchar c);
+

Determines whether a character is a white-space character.

+

Unlike the standard C library isspace() function, this only +recognizes standard ASCII white-space and ignores the locale, +returning FALSE for all non-ASCII characters. Also, unlike +the standard library function, this takes a char, not an int, +so don't call it on EOF, but no need to cast to guchar before +passing a possibly non-ASCII character in.

+
+

Parameters

+
+++++ + + + + + +

c

any character

 
+
+
+

Returns

+

TRUE if c +is an ASCII white-space character

+
+
+
+
+

g_ascii_isupper ()

+
gboolean
+g_ascii_isupper (gchar c);
+

Determines whether a character is an ASCII upper case letter.

+

Unlike the standard C library isupper() function, this only +recognizes standard ASCII letters and ignores the locale, +returning FALSE for all non-ASCII characters. Also, unlike +the standard library function, this takes a char, not an int, +so don't call it on EOF, but no need to worry about casting +to guchar before passing a possibly non-ASCII character in.

+
+

Parameters

+
+++++ + + + + + +

c

any character

 
+
+
+

Returns

+

TRUE if c +is an ASCII upper case letter

+
+
+
+
+

g_ascii_isxdigit ()

+
gboolean
+g_ascii_isxdigit (gchar c);
+

Determines whether a character is a hexadecimal-digit character.

+

Unlike the standard C library isxdigit() function, this takes +a char, not an int, so don't call it on EOF, but no need to +cast to guchar before passing a possibly non-ASCII character in.

+
+

Parameters

+
+++++ + + + + + +

c

any character

 
+
+
+

Returns

+

TRUE if c +is an ASCII hexadecimal-digit character.

+
+
+
+
+

g_ascii_digit_value ()

+
gint
+g_ascii_digit_value (gchar c);
+

Determines the numeric value of a character as a decimal digit. +Differs from g_unichar_digit_value() because it takes a char, so +there's no worry about sign extension if characters are signed.

+
+

Parameters

+
+++++ + + + + + +

c

an ASCII character

 
+
+
+

Returns

+

If c +is a decimal digit (according to g_ascii_isdigit()), +its numeric value. Otherwise, -1.

+
+
+
+
+

g_ascii_xdigit_value ()

+
gint
+g_ascii_xdigit_value (gchar c);
+

Determines the numeric value of a character as a hexidecimal +digit. Differs from g_unichar_xdigit_value() because it takes +a char, so there's no worry about sign extension if characters +are signed.

+
+

Parameters

+
+++++ + + + + + +

c

an ASCII character.

 
+
+
+

Returns

+

If c +is a hex digit (according to g_ascii_isxdigit()), +its numeric value. Otherwise, -1.

+
+
+
+
+

g_ascii_strcasecmp ()

+
gint
+g_ascii_strcasecmp (const gchar *s1,
+                    const gchar *s2);
+

Compare two strings, ignoring the case of ASCII characters.

+

Unlike the BSD strcasecmp() function, this only recognizes standard +ASCII letters and ignores the locale, treating all non-ASCII +bytes as if they are not letters.

+

This function should be used only on strings that are known to be +in encodings where the bytes corresponding to ASCII letters always +represent themselves. This includes UTF-8 and the ISO-8859-* +charsets, but not for instance double-byte encodings like the +Windows Codepage 932, where the trailing bytes of double-byte +characters include all ASCII letters. If you compare two CP932 +strings using this function, you will get false matches.

+

Both s1 + and s2 + must be non-NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

s1

string to compare with s2 +

 

s2

string to compare with s1 +

 
+
+
+

Returns

+

0 if the strings match, a negative value if s1 +< s2 +, +or a positive value if s1 +> s2 +.

+
+
+
+
+

g_ascii_strncasecmp ()

+
gint
+g_ascii_strncasecmp (const gchar *s1,
+                     const gchar *s2,
+                     gsize n);
+

Compare s1 + and s2 +, ignoring the case of ASCII characters and any +characters after the first n + in each string.

+

Unlike the BSD strcasecmp() function, this only recognizes standard +ASCII letters and ignores the locale, treating all non-ASCII +characters as if they are not letters.

+

The same warning as in g_ascii_strcasecmp() applies: Use this +function only on strings known to be in encodings where bytes +corresponding to ASCII letters always represent themselves.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

s1

string to compare with s2 +

 

s2

string to compare with s1 +

 

n

number of characters to compare

 
+
+
+

Returns

+

0 if the strings match, a negative value if s1 +< s2 +, +or a positive value if s1 +> s2 +.

+
+
+
+
+

g_ascii_strup ()

+
gchar *
+g_ascii_strup (const gchar *str,
+               gssize len);
+

Converts all lower case ASCII letters to upper case ASCII letters.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

a string

 

len

length of str +in bytes, or -1 if str +is nul-terminated

 
+
+
+

Returns

+

a newly allocated string, with all the lower case +characters in str +converted to upper case, with semantics that +exactly match g_ascii_toupper(). (Note that this is unlike the +old g_strup(), which modified the string in place.)

+
+
+
+
+

g_ascii_strdown ()

+
gchar *
+g_ascii_strdown (const gchar *str,
+                 gssize len);
+

Converts all upper case ASCII letters to lower case ASCII letters.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

a string

 

len

length of str +in bytes, or -1 if str +is nul-terminated

 
+
+
+

Returns

+

a newly-allocated string, with all the upper case +characters in str +converted to lower case, with semantics that +exactly match g_ascii_tolower(). (Note that this is unlike the +old g_strdown(), which modified the string in place.)

+
+
+
+
+

g_ascii_tolower ()

+
gchar
+g_ascii_tolower (gchar c);
+

Convert a character to ASCII lower case.

+

Unlike the standard C library tolower() function, this only +recognizes standard ASCII letters and ignores the locale, returning +all non-ASCII characters unchanged, even if they are lower case +letters in a particular character set. Also unlike the standard +library function, this takes and returns a char, not an int, so +don't call it on EOF but no need to worry about casting to guchar +before passing a possibly non-ASCII character in.

+
+

Parameters

+
+++++ + + + + + +

c

any character

 
+
+
+

Returns

+

the result of converting c +to lower case. If c +is +not an ASCII upper case letter, c +is returned unchanged.

+
+
+
+
+

g_ascii_toupper ()

+
gchar
+g_ascii_toupper (gchar c);
+

Convert a character to ASCII upper case.

+

Unlike the standard C library toupper() function, this only +recognizes standard ASCII letters and ignores the locale, returning +all non-ASCII characters unchanged, even if they are upper case +letters in a particular character set. Also unlike the standard +library function, this takes and returns a char, not an int, so +don't call it on EOF but no need to worry about casting to guchar +before passing a possibly non-ASCII character in.

+
+

Parameters

+
+++++ + + + + + +

c

any character

 
+
+
+

Returns

+

the result of converting c +to upper case. If c +is not +an ASCII lower case letter, c +is returned unchanged.

+
+
+
+
+

g_string_ascii_up ()

+
GString *
+g_string_ascii_up (GString *string);
+

Converts all lowercase ASCII letters to uppercase ASCII letters.

+
+

Parameters

+
+++++ + + + + + +

string

a GString

 
+
+
+

Returns

+

passed-in string +pointer, with all the +lowercase characters converted to uppercase in place, +with semantics that exactly match g_ascii_toupper().

+

[transfer none]

+
+
+
+
+

g_string_ascii_down ()

+
GString *
+g_string_ascii_down (GString *string);
+

Converts all uppercase ASCII letters to lowercase ASCII letters.

+
+

Parameters

+
+++++ + + + + + +

string

a GString

 
+
+
+

Returns

+

passed-in string +pointer, with all the +uppercase characters converted to lowercase in place, +with semantics that exactly match g_ascii_tolower().

+

[transfer none]

+
+
+
+
+

g_strup ()

+
gchar *
+g_strup (gchar *string);
+
+

g_strup has been deprecated since version 2.2 and should not be used in newly-written code.

+

This function is totally broken for the reasons + discussed in the g_strncasecmp() docs - use g_ascii_strup() + or g_utf8_strup() instead.

+
+

Converts a string to upper case.

+
+

Parameters

+
+++++ + + + + + +

string

the string to convert

 
+
+
+

Returns

+

the string

+
+
+
+
+

g_strdown ()

+
gchar *
+g_strdown (gchar *string);
+
+

g_strdown has been deprecated since version 2.2 and should not be used in newly-written code.

+

This function is totally broken for the reasons discussed +in the g_strncasecmp() docs - use g_ascii_strdown() or g_utf8_strdown() +instead.

+
+

Converts a string to lower case.

+
+

Parameters

+
+++++ + + + + + +

string

the string to convert.

 
+
+
+

Returns

+

the string

+
+
+
+
+

g_strcasecmp ()

+
gint
+g_strcasecmp (const gchar *s1,
+              const gchar *s2);
+
+

g_strcasecmp has been deprecated since version 2.2 and should not be used in newly-written code.

+

See g_strncasecmp() for a discussion of why this + function is deprecated and how to replace it.

+
+

A case-insensitive string comparison, corresponding to the standard +strcasecmp() function on platforms which support it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

s1

a string

 

s2

a string to compare with s1 +

 
+
+
+

Returns

+

0 if the strings match, a negative value if s1 +< s2 +, +or a positive value if s1 +> s2 +.

+
+
+
+
+

g_strncasecmp ()

+
gint
+g_strncasecmp (const gchar *s1,
+               const gchar *s2,
+               guint n);
+
+

g_strncasecmp has been deprecated since version 2.2 and should not be used in newly-written code.

+

The problem with g_strncasecmp() is that it does + the comparison by calling toupper()/tolower(). These functions + are locale-specific and operate on single bytes. However, it is + impossible to handle things correctly from an internationalization + standpoint by operating on bytes, since characters may be multibyte. + Thus g_strncasecmp() is broken if your string is guaranteed to be + ASCII, since it is locale-sensitive, and it's broken if your string + is localized, since it doesn't work on many encodings at all, + including UTF-8, EUC-JP, etc.

+

There are therefore two replacement techniques: g_ascii_strncasecmp(), + which only works on ASCII and is not locale-sensitive, and + g_utf8_casefold() followed by strcmp() on the resulting strings, + which is good for case-insensitive sorting of UTF-8.

+
+

A case-insensitive string comparison, corresponding to the standard +strncasecmp() function on platforms which support it. It is similar +to g_strcasecmp() except it only compares the first n + characters of +the strings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

s1

a string

 

s2

a string to compare with s1 +

 

n

the maximum number of characters to compare

 
+
+
+

Returns

+

0 if the strings match, a negative value if s1 +< s2 +, +or a positive value if s1 +> s2 +.

+
+
+
+
+

g_strreverse ()

+
gchar *
+g_strreverse (gchar *string);
+

Reverses all of the bytes in a string. For example, +g_strreverse ("abcdef") will result in "fedcba".

+

Note that g_strreverse() doesn't work on UTF-8 strings +containing multibyte characters. For that purpose, use +g_utf8_strreverse().

+
+

Parameters

+
+++++ + + + + + +

string

the string to reverse

 
+
+
+

Returns

+

the same pointer passed in as string +

+
+
+
+
+

g_ascii_strtoll ()

+
gint64
+g_ascii_strtoll (const gchar *nptr,
+                 gchar **endptr,
+                 guint base);
+

Converts a string to a gint64 value. +This function behaves like the standard strtoll() function +does in the C locale. It does this without actually +changing the current locale, since that would not be +thread-safe.

+

This function is typically used when reading configuration +files or other non-user input that should be locale independent. +To handle input from the user you should normally use the +locale-sensitive system strtoll() function.

+

If the correct value would cause overflow, G_MAXINT64 or G_MININT64 +is returned, and ERANGE is stored in errno. +If the base is outside the valid range, zero is returned, and +EINVAL is stored in errno. If the +string conversion fails, zero is returned, and endptr + returns nptr + +(if endptr + is non-NULL).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

nptr

the string to convert to a numeric value.

 

endptr

if non-NULL, it returns the +character after the last character used in the conversion.

[out][transfer none][optional]

base

to be used for the conversion, 2..36 or 0

 
+
+
+

Returns

+

the gint64 value or zero on error.

+
+

Since: 2.12

+
+
+
+

g_ascii_strtoull ()

+
guint64
+g_ascii_strtoull (const gchar *nptr,
+                  gchar **endptr,
+                  guint base);
+

Converts a string to a guint64 value. +This function behaves like the standard strtoull() function +does in the C locale. It does this without actually +changing the current locale, since that would not be +thread-safe.

+

This function is typically used when reading configuration +files or other non-user input that should be locale independent. +To handle input from the user you should normally use the +locale-sensitive system strtoull() function.

+

If the correct value would cause overflow, G_MAXUINT64 +is returned, and ERANGE is stored in errno. +If the base is outside the valid range, zero is returned, and +EINVAL is stored in errno. +If the string conversion fails, zero is returned, and endptr + returns +nptr + (if endptr + is non-NULL).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

nptr

the string to convert to a numeric value.

 

endptr

if non-NULL, it returns the +character after the last character used in the conversion.

[out][transfer none][optional]

base

to be used for the conversion, 2..36 or 0

 
+
+
+

Returns

+

the guint64 value or zero on error.

+
+

Since: 2.2

+
+
+
+

G_ASCII_DTOSTR_BUF_SIZE

+
#define G_ASCII_DTOSTR_BUF_SIZE (29 + 10)
+
+

A good size for a buffer to be passed into g_ascii_dtostr(). +It is guaranteed to be enough for all output of that function +on systems with 64bit IEEE-compatible doubles.

+

The typical usage would be something like:

+
+ + + + + + + +
1
+2
+3
char buf[G_ASCII_DTOSTR_BUF_SIZE];
+
+fprintf (out, "value=%s\n", g_ascii_dtostr (buf, sizeof (buf), value));
+
+ +

+
+
+
+

g_ascii_strtod ()

+
gdouble
+g_ascii_strtod (const gchar *nptr,
+                gchar **endptr);
+

Converts a string to a gdouble value.

+

This function behaves like the standard strtod() function +does in the C locale. It does this without actually changing +the current locale, since that would not be thread-safe. +A limitation of the implementation is that this function +will still accept localized versions of infinities and NANs.

+

This function is typically used when reading configuration +files or other non-user input that should be locale independent. +To handle input from the user you should normally use the +locale-sensitive system strtod() function.

+

To convert from a gdouble to a string in a locale-insensitive +way, use g_ascii_dtostr().

+

If the correct value would cause overflow, plus or minus HUGE_VAL +is returned (according to the sign of the value), and ERANGE is +stored in errno. If the correct value would cause underflow, +zero is returned and ERANGE is stored in errno.

+

This function resets errno before calling strtod() so that +you can reliably detect overflow and underflow.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

nptr

the string to convert to a numeric value.

 

endptr

if non-NULL, it returns the +character after the last character used in the conversion.

[out][transfer none][optional]
+
+
+

Returns

+

the gdouble value.

+
+
+
+
+

g_ascii_dtostr ()

+
gchar *
+g_ascii_dtostr (gchar *buffer,
+                gint buf_len,
+                gdouble d);
+

Converts a gdouble to a string, using the '.' as +decimal point.

+

This function generates enough precision that converting +the string back using g_ascii_strtod() gives the same machine-number +(on machines with IEEE compatible 64bit doubles). It is +guaranteed that the size of the resulting string will never +be larger than G_ASCII_DTOSTR_BUF_SIZE + bytes, including the terminating +nul character, which is always added.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

buffer

A buffer to place the resulting string in

 

buf_len

The length of the buffer.

 

d

The gdouble to convert

 
+
+
+

Returns

+

The pointer to the buffer with the converted string.

+
+
+
+
+

g_ascii_formatd ()

+
gchar *
+g_ascii_formatd (gchar *buffer,
+                 gint buf_len,
+                 const gchar *format,
+                 gdouble d);
+

Converts a gdouble to a string, using the '.' as +decimal point. To format the number you pass in +a printf()-style format string. Allowed conversion +specifiers are 'e', 'E', 'f', 'F', 'g' and 'G'.

+

The returned buffer is guaranteed to be nul-terminated.

+

If you just want to want to serialize the value into a +string, use g_ascii_dtostr().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

buffer

A buffer to place the resulting string in

 

buf_len

The length of the buffer.

 

format

The printf()-style format to use for the +code to use for converting.

 

d

The gdouble to convert

 
+
+
+

Returns

+

The pointer to the buffer with the converted string.

+
+
+
+
+

g_strtod ()

+
gdouble
+g_strtod (const gchar *nptr,
+          gchar **endptr);
+

Converts a string to a gdouble value. +It calls the standard strtod() function to handle the conversion, but +if the string is not completely converted it attempts the conversion +again with g_ascii_strtod(), and returns the best match.

+

This function should seldom be used. The normal situation when reading +numbers not for human consumption is to use g_ascii_strtod(). Only when +you know that you must expect both locale formatted and C formatted numbers +should you use this. Make sure that you don't pass strings such as comma +separated lists of values, since the commas may be interpreted as a decimal +point in some locales, causing unexpected results.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

nptr

the string to convert to a numeric value.

 

endptr

if non-NULL, it returns the +character after the last character used in the conversion.

[out][transfer none][optional]
+
+
+

Returns

+

the gdouble value.

+
+
+
+
+

g_strchug ()

+
gchar *
+g_strchug (gchar *string);
+

Removes leading whitespace from a string, by moving the rest +of the characters forward.

+

This function doesn't allocate or reallocate any memory; +it modifies string + in place. Therefore, it cannot be used on +statically allocated strings.

+

The pointer to string + is returned to allow the nesting of functions.

+

Also see g_strchomp() and g_strstrip().

+
+

Parameters

+
+++++ + + + + + +

string

a string to remove the leading whitespace from

 
+
+
+

Returns

+

string +

+
+
+
+
+

g_strchomp ()

+
gchar *
+g_strchomp (gchar *string);
+

Removes trailing whitespace from a string.

+

This function doesn't allocate or reallocate any memory; +it modifies string + in place. Therefore, it cannot be used +on statically allocated strings.

+

The pointer to string + is returned to allow the nesting of functions.

+

Also see g_strchug() and g_strstrip().

+
+

Parameters

+
+++++ + + + + + +

string

a string to remove the trailing whitespace from

 
+
+
+

Returns

+

string +

+
+
+
+
+

g_strstrip()

+
#define             g_strstrip( string )
+

Removes leading and trailing whitespace from a string. +See g_strchomp() and g_strchug().

+
+

Parameters

+
+++++ + + + + + +

string

a string to remove the leading and trailing whitespace from

 
+
+
+

Returns

+

string +

+
+
+
+
+

g_strdelimit ()

+
gchar *
+g_strdelimit (gchar *string,
+              const gchar *delimiters,
+              gchar new_delimiter);
+

Converts any delimiter characters in string + to new_delimiter +. +Any characters in string + which are found in delimiters + are +changed to the new_delimiter + character. Modifies string + in place, +and returns string + itself, not a copy. The return value is to +allow nesting such as

+
+ + + + + + + +
1
g_ascii_strup (g_strdelimit (str, "abc", '?'))
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

the string to convert

 

delimiters

a string containing the current delimiters, +or NULL to use the standard delimiters defined in G_STR_DELIMITERS.

[allow-none]

new_delimiter

the new delimiter character

 
+
+
+

Returns

+

string +

+
+
+
+
+

g_strescape ()

+
gchar *
+g_strescape (const gchar *source,
+             const gchar *exceptions);
+

Escapes the special characters '\b', '\f', '\n', '\r', '\t', '\v', '\' +and '"' in the string source + by inserting a '\' before +them. Additionally all characters in the range 0x01-0x1F (everything +below SPACE) and in the range 0x7F-0xFF (all non-ASCII chars) are +replaced with a '\' followed by their octal representation. +Characters supplied in exceptions + are not escaped.

+

g_strcompress() does the reverse conversion.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source

a string to escape

 

exceptions

a string of characters not to escape in source +.

[nullable]
+
+
+

Returns

+

a newly-allocated copy of source +with certain +characters escaped. See above.

+
+
+
+
+

g_strcompress ()

+
gchar *
+g_strcompress (const gchar *source);
+

Replaces all escaped characters with their one byte equivalent.

+

This function does the reverse conversion of g_strescape().

+
+

Parameters

+
+++++ + + + + + +

source

a string to compress

 
+
+
+

Returns

+

a newly-allocated copy of source +with all escaped +character compressed

+
+
+
+
+

g_strcanon ()

+
gchar *
+g_strcanon (gchar *string,
+            const gchar *valid_chars,
+            gchar substitutor);
+

For each character in string +, if the character is not in valid_chars +, +replaces the character with substitutor +. Modifies string + in place, +and return string + itself, not a copy. The return value is to allow +nesting such as

+
+ + + + + + + +
1
g_ascii_strup (g_strcanon (str, "abc", '?'))
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a nul-terminated array of bytes

 

valid_chars

bytes permitted in string +

 

substitutor

replacement character for disallowed bytes

 
+
+
+

Returns

+

string +

+
+
+
+
+

g_strsplit ()

+
gchar **
+g_strsplit (const gchar *string,
+            const gchar *delimiter,
+            gint max_tokens);
+

Splits a string into a maximum of max_tokens + pieces, using the given +delimiter +. If max_tokens + is reached, the remainder of string + is +appended to the last token.

+

As an example, the result of g_strsplit (":a:bc::d:", ":", -1) is a +NULL-terminated vector containing the six strings "", "a", "bc", "", "d" +and "".

+

As a special case, the result of splitting the empty string "" is an empty +vector, not a vector containing a single string. The reason for this +special case is that being able to represent a empty vector is typically +more useful than consistent handling of empty elements. If you do need +to represent empty elements, you'll need to check for the empty string +before calling g_strsplit().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a string to split

 

delimiter

a string which specifies the places at which to split +the string. The delimiter is not included in any of the resulting +strings, unless max_tokens +is reached.

 

max_tokens

the maximum number of pieces to split string +into. +If this is less than 1, the string is split completely.

 
+
+
+

Returns

+

a newly-allocated NULL-terminated array of strings. Use +g_strfreev() to free it.

+
+
+
+
+

g_strsplit_set ()

+
gchar **
+g_strsplit_set (const gchar *string,
+                const gchar *delimiters,
+                gint max_tokens);
+

Splits string + into a number of tokens not containing any of the characters +in delimiter +. A token is the (possibly empty) longest string that does not +contain any of the characters in delimiters +. If max_tokens + is reached, the +remainder is appended to the last token.

+

For example the result of g_strsplit_set ("abc:def/ghi", ":/", -1) is a +NULL-terminated vector containing the three strings "abc", "def", +and "ghi".

+

The result of g_strsplit_set (":def/ghi:", ":/", -1) is a NULL-terminated +vector containing the four strings "", "def", "ghi", and "".

+

As a special case, the result of splitting the empty string "" is an empty +vector, not a vector containing a single string. The reason for this +special case is that being able to represent a empty vector is typically +more useful than consistent handling of empty elements. If you do need +to represent empty elements, you'll need to check for the empty string +before calling g_strsplit_set().

+

Note that this function works on bytes not characters, so it can't be used +to delimit UTF-8 strings for anything but ASCII characters.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

The string to be tokenized

 

delimiters

A nul-terminated string containing bytes that are used +to split the string.

 

max_tokens

The maximum number of tokens to split string +into. +If this is less than 1, the string is split completely

 
+
+
+

Returns

+

a newly-allocated NULL-terminated array of strings. Use +g_strfreev() to free it.

+
+

Since: 2.4

+
+
+
+

g_strfreev ()

+
void
+g_strfreev (gchar **str_array);
+

Frees a NULL-terminated array of strings, as well as each +string it contains.

+

If str_array + is NULL, this function simply returns.

+
+

Parameters

+
+++++ + + + + + +

str_array

a NULL-terminated array of strings to free.

[nullable]
+
+
+
+
+

g_strconcat ()

+
gchar *
+g_strconcat (const gchar *string1,
+             ...);
+

Concatenates all of the given strings into one long string. The +returned string should be freed with g_free() when no longer needed.

+

The variable argument list must end with NULL. If you forget the NULL, +g_strconcat() will start appending random memory junk to your string.

+

Note that this function is usually not the right function to use to +assemble a translated message from pieces, since proper translation +often requires the pieces to be reordered.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

string1

the first string to add, which must not be NULL

 

...

a NULL-terminated list of strings to append to the string

 
+
+
+

Returns

+

a newly-allocated string containing all the string arguments

+
+
+
+
+

g_strjoin ()

+
gchar *
+g_strjoin (const gchar *separator,
+           ...);
+

Joins a number of strings together to form one long string, with the +optional separator + inserted between each of them. The returned string +should be freed with g_free().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

separator

a string to insert between each of the +strings, or NULL.

[allow-none]

...

a NULL-terminated list of strings to join

 
+
+
+

Returns

+

a newly-allocated string containing all of the strings joined +together, with separator +between them

+
+
+
+
+

g_strjoinv ()

+
gchar *
+g_strjoinv (const gchar *separator,
+            gchar **str_array);
+

Joins a number of strings together to form one long string, with the +optional separator + inserted between each of them. The returned string +should be freed with g_free().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

separator

a string to insert between each of the +strings, or NULL.

[allow-none]

str_array

a NULL-terminated array of strings to join

 
+
+
+

Returns

+

a newly-allocated string containing all of the strings joined +together, with separator +between them

+
+
+
+
+

g_strv_length ()

+
guint
+g_strv_length (gchar **str_array);
+

Returns the length of the given NULL-terminated +string array str_array +.

+
+

Parameters

+
+++++ + + + + + +

str_array

a NULL-terminated array of strings

 
+
+
+

Returns

+

length of str_array +.

+
+

Since: 2.6

+
+
+
+

g_strv_contains ()

+
gboolean
+g_strv_contains (const gchar * const *strv,
+                 const gchar *str);
+

Checks if strv + contains str +. strv + must not be NULL.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

strv

a NULL-terminated array of strings

 

str

a string

 
+
+
+

Returns

+

TRUE if str +is an element of strv +, according to g_str_equal().

+
+

Since: 2.44

+
+
+
+

g_strerror ()

+
const gchar *
+g_strerror (gint errnum);
+

Returns a string corresponding to the given error code, e.g. "no +such process". Unlike strerror(), this always returns a string in +UTF-8 encoding, and the pointer is guaranteed to remain valid for +the lifetime of the process.

+

Note that the string may be translated according to the current locale.

+

The value of errno will not be changed by this function.

+
+

Parameters

+
+++++ + + + + + +

errnum

the system error number. See the standard C errno +documentation

 
+
+
+

Returns

+

a UTF-8 string describing the error code. If the error code +is unknown, it returns a string like "unknown error (<code>)".

+
+
+
+
+

g_strsignal ()

+
const gchar *
+g_strsignal (gint signum);
+

Returns a string describing the given signal, e.g. "Segmentation fault". +You should use this function in preference to strsignal(), because it +returns a string in UTF-8 encoding, and since not all platforms support +the strsignal() function.

+
+

Parameters

+
+++++ + + + + + +

signum

the signal number. See the signal documentation

 
+
+
+

Returns

+

a UTF-8 string describing the signal. If the signal is unknown, +it returns "unknown signal (<signum>)".

+
+
+
+
+

Types and Values

+
+

G_STR_DELIMITERS

+
#define	 G_STR_DELIMITERS "_-|> <."
+
+

The standard delimiters, used in g_strdelimit().

+
+
+
+

GStrv

+
typedef gchar** GStrv;
+
+

A typedef alias for gchar**. This is mostly useful when used together with +g_auto().

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Strings.html b/docs/reference/glib/html/glib-Strings.html new file mode 100644 index 0000000..132d261 --- /dev/null +++ b/docs/reference/glib/html/glib-Strings.html @@ -0,0 +1,1791 @@ + + + + +Strings: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Strings

+

Strings — text buffers which grow automatically + as text is added

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GString * + +g_string_new () +
+GString * + +g_string_new_len () +
+GString * + +g_string_sized_new () +
+GString * + +g_string_assign () +
+void + +g_string_vprintf () +
+void + +g_string_append_vprintf () +
+void + +g_string_printf () +
+void + +g_string_append_printf () +
+GString * + +g_string_append () +
+GString * + +g_string_append_c () +
+GString * + +g_string_append_unichar () +
+GString * + +g_string_append_len () +
+GString * + +g_string_append_uri_escaped () +
+GString * + +g_string_prepend () +
+GString * + +g_string_prepend_c () +
+GString * + +g_string_prepend_unichar () +
+GString * + +g_string_prepend_len () +
+GString * + +g_string_insert () +
+GString * + +g_string_insert_c () +
+GString * + +g_string_insert_unichar () +
+GString * + +g_string_insert_len () +
+GString * + +g_string_overwrite () +
+GString * + +g_string_overwrite_len () +
+GString * + +g_string_erase () +
+GString * + +g_string_truncate () +
+GString * + +g_string_set_size () +
+gchar * + +g_string_free () +
+GBytes * + +g_string_free_to_bytes () +
+GString * + +g_string_up () +
+GString * + +g_string_down () +
+guint + +g_string_hash () +
+gboolean + +g_string_equal () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + +
structGString
#defineg_string_sprintf
#defineg_string_sprintfa
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

A GString is an object that handles the memory management of a C +string for you. The emphasis of GString is on text, typically +UTF-8. Crucially, the "str" member of a GString is guaranteed to +have a trailing nul character, and it is therefore always safe to +call functions such as strchr() or g_strdup() on it.

+

However, a GString can also hold arbitrary binary data, because it +has a "len" member, which includes any possible embedded nul +characters in the data. Conceptually then, GString is like a +GByteArray with the addition of many convenience methods for text, +and a guaranteed nul terminator.

+
+
+

Functions

+
+

g_string_new ()

+
GString *
+g_string_new (const gchar *init);
+

Creates a new GString, initialized with the given string.

+
+

Parameters

+
+++++ + + + + + +

init

the initial text to copy into the string, or NULL to +start with an empty string.

[nullable]
+
+
+

Returns

+

the new GString

+
+
+
+
+

g_string_new_len ()

+
GString *
+g_string_new_len (const gchar *init,
+                  gssize len);
+

Creates a new GString with len + bytes of the init + buffer. +Because a length is provided, init + need not be nul-terminated, +and can contain embedded nul bytes.

+

Since this function does not stop at nul bytes, it is the caller's +responsibility to ensure that init + has at least len + addressable +bytes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

init

initial contents of the string

 

len

length of init +to use

 
+
+
+

Returns

+

a new GString

+
+
+
+
+

g_string_sized_new ()

+
GString *
+g_string_sized_new (gsize dfl_size);
+

Creates a new GString, with enough space for dfl_size + +bytes. This is useful if you are going to add a lot of +text to the string and don't want it to be reallocated +too often.

+
+

Parameters

+
+++++ + + + + + +

dfl_size

the default size of the space allocated to +hold the string

 
+
+
+

Returns

+

the new GString

+
+
+
+
+

g_string_assign ()

+
GString *
+g_string_assign (GString *string,
+                 const gchar *rval);
+

Copies the bytes from a string into a GString, +destroying any previous contents. It is rather like +the standard strcpy() function, except that you do not +have to worry about having enough space to copy the string.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

string

the destination GString. Its current contents +are destroyed.

 

rval

the string to copy into string +

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_vprintf ()

+
void
+g_string_vprintf (GString *string,
+                  const gchar *format,
+                  va_list args);
+

Writes a formatted string into a GString. +This function is similar to g_string_printf() except that +the arguments to the format string are passed as a va_list.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a GString

 

format

the string format. See the printf() documentation

 

args

the parameters to insert into the format string

 
+
+

Since: 2.14

+
+
+
+

g_string_append_vprintf ()

+
void
+g_string_append_vprintf (GString *string,
+                         const gchar *format,
+                         va_list args);
+

Appends a formatted string onto the end of a GString. +This function is similar to g_string_append_printf() +except that the arguments to the format string are passed +as a va_list.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a GString

 

format

the string format. See the printf() documentation

 

args

the list of arguments to insert in the output

 
+
+

Since: 2.14

+
+
+
+

g_string_printf ()

+
void
+g_string_printf (GString *string,
+                 const gchar *format,
+                 ...);
+

Writes a formatted string into a GString. +This is similar to the standard sprintf() function, +except that the GString buffer automatically expands +to contain the results. The previous contents of the +GString are destroyed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a GString

 

format

the string format. See the printf() documentation

 

...

the parameters to insert into the format string

 
+
+
+
+
+

g_string_append_printf ()

+
void
+g_string_append_printf (GString *string,
+                        const gchar *format,
+                        ...);
+

Appends a formatted string onto the end of a GString. +This function is similar to g_string_printf() except +that the text is appended to the GString.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a GString

 

format

the string format. See the printf() documentation

 

...

the parameters to insert into the format string

 
+
+
+
+
+

g_string_append ()

+
GString *
+g_string_append (GString *string,
+                 const gchar *val);
+

Adds a string onto the end of a GString, expanding +it if necessary.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

string

a GString

 

val

the string to append onto the end of string +

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_append_c ()

+
GString *
+g_string_append_c (GString *string,
+                   gchar c);
+

Adds a byte onto the end of a GString, expanding +it if necessary.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

string

a GString

 

c

the byte to append onto the end of string +

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_append_unichar ()

+
GString *
+g_string_append_unichar (GString *string,
+                         gunichar wc);
+

Converts a Unicode character into UTF-8, and appends it +to the string.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

string

a GString

 

wc

a Unicode character

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_append_len ()

+
GString *
+g_string_append_len (GString *string,
+                     const gchar *val,
+                     gssize len);
+

Appends len + bytes of val + to string +. Because len + is +provided, val + may contain embedded nuls and need not +be nul-terminated.

+

Since this function does not stop at nul bytes, it is +the caller's responsibility to ensure that val + has at +least len + addressable bytes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a GString

 

val

bytes to append

 

len

number of bytes of val +to use

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_append_uri_escaped ()

+
GString *
+g_string_append_uri_escaped (GString *string,
+                             const gchar *unescaped,
+                             const gchar *reserved_chars_allowed,
+                             gboolean allow_utf8);
+

Appends unescaped + to string +, escaped any characters that +are reserved in URIs using URI-style escape sequences.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

string

a GString

 

unescaped

a string

 

reserved_chars_allowed

a string of reserved characters allowed +to be used, or NULL

 

allow_utf8

set TRUE if the escaped string may include UTF8 characters

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+

Since: 2.16

+
+
+
+

g_string_prepend ()

+
GString *
+g_string_prepend (GString *string,
+                  const gchar *val);
+

Adds a string on to the start of a GString, +expanding it if necessary.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

string

a GString

 

val

the string to prepend on the start of string +

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_prepend_c ()

+
GString *
+g_string_prepend_c (GString *string,
+                    gchar c);
+

Adds a byte onto the start of a GString, +expanding it if necessary.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

string

a GString

 

c

the byte to prepend on the start of the GString

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_prepend_unichar ()

+
GString *
+g_string_prepend_unichar (GString *string,
+                          gunichar wc);
+

Converts a Unicode character into UTF-8, and prepends it +to the string.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

string

a GString

 

wc

a Unicode character

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_prepend_len ()

+
GString *
+g_string_prepend_len (GString *string,
+                      const gchar *val,
+                      gssize len);
+

Prepends len + bytes of val + to string +. +Because len + is provided, val + may contain +embedded nuls and need not be nul-terminated.

+

Since this function does not stop at nul bytes, +it is the caller's responsibility to ensure that +val + has at least len + addressable bytes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a GString

 

val

bytes to prepend

 

len

number of bytes in val +to prepend

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_insert ()

+
GString *
+g_string_insert (GString *string,
+                 gssize pos,
+                 const gchar *val);
+

Inserts a copy of a string into a GString, +expanding it if necessary.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a GString

 

pos

the position to insert the copy of the string

 

val

the string to insert

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_insert_c ()

+
GString *
+g_string_insert_c (GString *string,
+                   gssize pos,
+                   gchar c);
+

Inserts a byte into a GString, expanding it if necessary.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a GString

 

pos

the position to insert the byte

 

c

the byte to insert

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_insert_unichar ()

+
GString *
+g_string_insert_unichar (GString *string,
+                         gssize pos,
+                         gunichar wc);
+

Converts a Unicode character into UTF-8, and insert it +into the string at the given position.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a GString

 

pos

the position at which to insert character, or -1 +to append at the end of the string

 

wc

a Unicode character

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_insert_len ()

+
GString *
+g_string_insert_len (GString *string,
+                     gssize pos,
+                     const gchar *val,
+                     gssize len);
+

Inserts len + bytes of val + into string + at pos +. +Because len + is provided, val + may contain embedded +nuls and need not be nul-terminated. If pos + is -1, +bytes are inserted at the end of the string.

+

Since this function does not stop at nul bytes, it is +the caller's responsibility to ensure that val + has at +least len + addressable bytes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

string

a GString

 

pos

position in string +where insertion should +happen, or -1 for at the end

 

val

bytes to insert

 

len

number of bytes of val +to insert

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_overwrite ()

+
GString *
+g_string_overwrite (GString *string,
+                    gsize pos,
+                    const gchar *val);
+

Overwrites part of a string, lengthening it if necessary.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a GString

 

pos

the position at which to start overwriting

 

val

the string that will overwrite the string +starting at pos +

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+

Since: 2.14

+
+
+
+

g_string_overwrite_len ()

+
GString *
+g_string_overwrite_len (GString *string,
+                        gsize pos,
+                        const gchar *val,
+                        gssize len);
+

Overwrites part of a string, lengthening it if necessary. +This function will work with embedded nuls.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

string

a GString

 

pos

the position at which to start overwriting

 

val

the string that will overwrite the string +starting at pos +

 

len

the number of bytes to write from val +

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+

Since: 2.14

+
+
+
+

g_string_erase ()

+
GString *
+g_string_erase (GString *string,
+                gssize pos,
+                gssize len);
+

Removes len + bytes from a GString, starting at position pos +. +The rest of the GString is shifted down to fill the gap.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a GString

 

pos

the position of the content to remove

 

len

the number of bytes to remove, or -1 to remove all +following bytes

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_truncate ()

+
GString *
+g_string_truncate (GString *string,
+                   gsize len);
+

Cuts off the end of the GString, leaving the first len + bytes.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

string

a GString

 

len

the new size of string +

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_set_size ()

+
GString *
+g_string_set_size (GString *string,
+                   gsize len);
+

Sets the length of a GString. If the length is less than +the current length, the string will be truncated. If the +length is greater than the current length, the contents +of the newly added area are undefined. (However, as +always, string->str[string->len] will be a nul byte.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

string

a GString

 

len

the new length

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_free ()

+
gchar *
+g_string_free (GString *string,
+               gboolean free_segment);
+

Frees the memory allocated for the GString. +If free_segment + is TRUE it also frees the character data. If +it's FALSE, the caller gains ownership of the buffer and must +free it after use with g_free().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

string

a GString.

[transfer full]

free_segment

if TRUE, the actual character data is freed as well

 
+
+
+

Returns

+

the character data of string +(i.e. NULL if free_segment +is TRUE).

+

[nullable]

+
+
+
+
+

g_string_free_to_bytes ()

+
GBytes *
+g_string_free_to_bytes (GString *string);
+

Transfers ownership of the contents of string + to a newly allocated +GBytes. The GString structure itself is deallocated, and it is +therefore invalid to use string + after invoking this function.

+

Note that while GString ensures that its buffer always has a +trailing nul character (not reflected in its "len"), the returned +GBytes does not include this extra nul; i.e. it has length exactly +equal to the "len" member.

+
+

Parameters

+
+++++ + + + + + +

string

a GString.

[transfer full]
+
+
+

Returns

+

A newly allocated GBytes containing contents of string +; string +itself is freed.

+

[transfer full]

+
+

Since: 2.34

+
+
+
+

g_string_up ()

+
GString *
+g_string_up (GString *string);
+
+

g_string_up has been deprecated since version 2.2 and should not be used in newly-written code.

+

This function uses the locale-specific + toupper() function, which is almost never the right thing. + Use g_string_ascii_up() or g_utf8_strup() instead.

+
+

Converts a GString to uppercase.

+
+

Parameters

+
+++++ + + + + + +

string

a GString

 
+
+
+

Returns

+

string +.

+

[transfer none]

+
+
+
+
+

g_string_down ()

+
GString *
+g_string_down (GString *string);
+
+

g_string_down has been deprecated since version 2.2 and should not be used in newly-written code.

+

This function uses the locale-specific + tolower() function, which is almost never the right thing. + Use g_string_ascii_down() or g_utf8_strdown() instead.

+
+

Converts a GString to lowercase.

+
+

Parameters

+
+++++ + + + + + +

string

a GString

 
+
+
+

Returns

+

the GString.

+

[transfer none]

+
+
+
+
+

g_string_hash ()

+
guint
+g_string_hash (const GString *str);
+

Creates a hash code for str +; for use with GHashTable.

+
+

Parameters

+
+++++ + + + + + +

str

a string to hash

 
+
+
+

Returns

+

hash code for str +

+
+
+
+
+

g_string_equal ()

+
gboolean
+g_string_equal (const GString *v,
+                const GString *v2);
+

Compares two strings for equality, returning TRUE if they are equal. +For use with GHashTable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

v

a GString

 

v2

another GString

 
+
+
+

Returns

+

TRUE if the strings are the same length and contain the +same bytes

+
+
+
+
+

Types and Values

+
+

struct GString

+
struct GString {
+  gchar  *str;
+  gsize len;
+  gsize allocated_len;
+};
+
+

The GString struct contains the public fields of a GString.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

gchar *str;

points to the character data. It may move as text is added. +The str +field is null-terminated and so +can be used as an ordinary C string.

 

gsize len;

contains the length of the string, not including the +terminating nul byte.

 

gsize allocated_len;

the number of bytes that can be stored in the +string before it needs to be reallocated. May be larger than len +.

 
+
+
+
+
+

g_string_sprintf

+
#define             g_string_sprintf
+
+

g_string_sprintf is deprecated and should not be used in newly-written code.

+

This function has been renamed to g_string_printf().

+
+

Writes a formatted string into a GString. +This is similar to the standard sprintf() function, +except that the GString buffer automatically expands +to contain the results. The previous contents of the +GString are destroyed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a GString

 

format

the string format. See the sprintf() documentation

 

...

the parameters to insert into the format string

 
+
+
+
+
+

g_string_sprintfa

+
#define             g_string_sprintfa
+
+

g_string_sprintfa is deprecated and should not be used in newly-written code.

+

This function has been renamed to g_string_append_printf()

+
+

Appends a formatted string onto the end of a GString. +This function is similar to g_string_sprintf() except that +the text is appended to the GString.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

string

a GString

 

format

the string format. See the sprintf() documentation

 

...

the parameters to insert into the format string

 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Testing.html b/docs/reference/glib/html/glib-Testing.html new file mode 100644 index 0000000..723222d --- /dev/null +++ b/docs/reference/glib/html/glib-Testing.html @@ -0,0 +1,3319 @@ + + + + +Testing: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Testing

+

Testing — a test framework

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +g_test_minimized_result () +
+void + +g_test_maximized_result () +
+void + +g_test_init () +
#defineg_test_initialized
#defineg_test_quick
#defineg_test_slow
#defineg_test_thorough
#defineg_test_perf
#defineg_test_verbose
#defineg_test_undefined
#defineg_test_quiet
+gboolean + +g_test_subprocess () +
+int + +g_test_run () +
+void + +(*GTestFunc) () +
+void + +g_test_add_func () +
+void + +(*GTestDataFunc) () +
+void + +g_test_add_data_func () +
+void + +g_test_add_data_func_full () +
#define +g_test_add() +
+gchar * + +g_test_build_filename () +
const gchar * + +g_test_get_filename () +
const gchar * + +g_test_get_dir () +
+void + +g_test_fail () +
+void + +g_test_skip () +
+void + +g_test_incomplete () +
+gboolean + +g_test_failed () +
+void + +g_test_message () +
+void + +g_test_bug_base () +
+void + +g_test_bug () +
+gboolean + +(*GTestLogFatalFunc) () +
+void + +g_test_log_set_fatal_handler () +
+void + +g_test_timer_start () +
+double + +g_test_timer_elapsed () +
+double + +g_test_timer_last () +
+void + +g_test_queue_free () +
+void + +g_test_queue_destroy () +
#define +g_test_queue_unref() +
+void + +g_test_expect_message () +
#defineg_test_assert_expected_messages
+void + +g_test_trap_subprocess () +
+gboolean + +g_test_trap_has_passed () +
+gboolean + +g_test_trap_reached_timeout () +
#defineg_test_trap_assert_passed
#defineg_test_trap_assert_failed
#define +g_test_trap_assert_stdout() +
#define +g_test_trap_assert_stdout_unmatched() +
#define +g_test_trap_assert_stderr() +
#define +g_test_trap_assert_stderr_unmatched() +
+gboolean + +g_test_trap_fork () +
#defineg_test_rand_bit
+gint32 + +g_test_rand_int () +
+gint32 + +g_test_rand_int_range () +
+double + +g_test_rand_double () +
+double + +g_test_rand_double_range () +
#define +g_assert() +
#defineg_assert_not_reached
#define +g_assert_cmpstr() +
#define +g_assert_cmpint() +
#define +g_assert_cmpuint() +
#define +g_assert_cmphex() +
#define +g_assert_cmpfloat() +
#define +g_assert_cmpmem() +
#define +g_assert_no_error() +
#define +g_assert_error() +
#define +g_assert_true() +
#define +g_assert_false() +
#define +g_assert_null() +
#define +g_assert_nonnull() +
+void + +g_test_set_nonfatal_assertions () +
+void + +(*GTestFixtureFunc) () +
+GTestCase * + +g_test_create_case () +
+GTestSuite * + +g_test_create_suite () +
+GTestSuite * + +g_test_get_root () +
+void + +g_test_suite_add () +
+void + +g_test_suite_add_suite () +
+int + +g_test_run_suite () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
enumGTestFileType
enumGTestTrapFlags
enumGTestSubprocessFlags
typedefGTestCase
typedefGTestSuite
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GLib provides a framework for writing and maintaining unit tests +in parallel to the code they are testing. The API is designed according +to established concepts found in the other test frameworks (JUnit, NUnit, +RUnit), which in turn is based on smalltalk unit testing concepts.

+
    +
  • Test case: Tests (test methods) are grouped together with their +fixture into test cases.

  • +
  • Fixture: A test fixture consists of fixture data and setup and +teardown methods to establish the environment for the test +functions. We use fresh fixtures, i.e. fixtures are newly set +up and torn down around each test invocation to avoid dependencies +between tests.

  • +
  • Test suite: Test cases can be grouped into test suites, to allow +subsets of the available tests to be run. Test suites can be +grouped into other test suites as well.

  • +
+

The API is designed to handle creation and registration of test suites +and test cases implicitly. A simple call like

+
+ + + + + + + +
1
g_test_add_func ("/misc/assertions", test_assertions);
+
+ +

+creates a test suite called "misc" with a single test case named +"assertions", which consists of running the test_assertions function.

+

In addition to the traditional g_assert(), the test framework provides +an extended set of assertions for comparisons: g_assert_cmpfloat(), +g_assert_cmpint(), g_assert_cmpuint(), g_assert_cmphex(), +g_assert_cmpstr(), and g_assert_cmpmem(). The advantage of these +variants over plain g_assert() is that the assertion messages can be +more elaborate, and include the values of the compared entities.

+

GLib ships with two utilities called gtester and +gtester-report to facilitate running tests and producing +nicely formatted test reports.

+

A full example of creating a test suite with two tests using fixtures:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
#include <glib.h>
+#include <locale.h>
+
+typedef struct {
+  MyObject *obj;
+  OtherObject *helper;
+} MyObjectFixture;
+
+static void
+my_object_fixture_set_up (MyObjectFixture *fixture,
+                          gconstpointer user_data)
+{
+  fixture->obj = my_object_new ();
+  my_object_set_prop1 (fixture->obj, "some-value");
+  my_object_do_some_complex_setup (fixture->obj, user_data);
+
+  fixture->helper = other_object_new ();
+}
+
+static void
+my_object_fixture_tear_down (MyObjectFixture *fixture,
+                             gconstpointer user_data)
+{
+  g_clear_object (&fixture->helper);
+  g_clear_object (&fixture->obj);
+}
+
+static void
+test_my_object_test1 (MyObjectFixture *fixture,
+                      gconstpointer user_data)
+{
+  g_assert_cmpstr (my_object_get_property (fixture->obj), ==, "initial-value");
+}
+
+static void
+test_my_object_test2 (MyObjectFixture *fixture,
+                      gconstpointer user_data)
+{
+  my_object_do_some_work_using_helper (fixture->obj, fixture->helper);
+  g_assert_cmpstr (my_object_get_property (fixture->obj), ==, "updated-value");
+}
+
+int
+main (int argc, char *argv[])
+{
+  setlocale (LC_ALL, "");
+
+  g_test_init (&argc, &argv, NULL);
+  g_test_bug_base ("http://bugzilla.gnome.org/show_bug.cgi?id=");
+
+  // Define the tests.
+  g_test_add ("/my-object/test1", MyObjectFixture, "some-user-data",
+              my_object_fixture_set_up, test_my_object_test1,
+              my_object_fixture_tear_down);
+  g_test_add ("/my-object/test2", MyObjectFixture, "some-user-data",
+              my_object_fixture_set_up, test_my_object_test2,
+              my_object_fixture_tear_down);
+
+  return g_test_run ();
+}
+
+ +

+
+
+

Functions

+
+

g_test_minimized_result ()

+
void
+g_test_minimized_result (double minimized_quantity,
+                         const char *format,
+                         ...);
+

Report the result of a performance or measurement test. +The test should generally strive to minimize the reported +quantities (smaller values are better than larger ones), +this and minimized_quantity + can determine sorting +order for test result reports.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

minimized_quantity

the reported value

 

format

the format string of the report message

 

...

arguments to pass to the printf() function

 
+
+

Since: 2.16

+
+
+
+

g_test_maximized_result ()

+
void
+g_test_maximized_result (double maximized_quantity,
+                         const char *format,
+                         ...);
+

Report the result of a performance or measurement test. +The test should generally strive to maximize the reported +quantities (larger values are better than smaller ones), +this and maximized_quantity + can determine sorting +order for test result reports.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

maximized_quantity

the reported value

 

format

the format string of the report message

 

...

arguments to pass to the printf() function

 
+
+

Since: 2.16

+
+
+
+

g_test_init ()

+
void
+g_test_init (int *argc,
+             char ***argv,
+             ...);
+

Initialize the GLib testing framework, e.g. by seeding the +test random number generator, the name for g_get_prgname() +and parsing test related command line args.

+

So far, the following arguments are understood:

+
    +
  • -l: List test cases available in a test executable.

  • +
  • --seed=SEED: Provide a random seed to reproduce test +runs using random numbers.

  • +
  • --verbose: Run tests verbosely.

  • +
  • -q, --quiet: Run tests quietly.

  • +
  • -p PATH: Execute all tests matching the given path. +This can also be used to force a test to run that would otherwise +be skipped (ie, a test whose name contains "/subprocess").

  • +
  • +

    -m {perf|slow|thorough|quick|undefined|no-undefined}: Execute tests according to these test modes:

    +

    perf: Performance tests, may take long and report results.

    +

    slow, thorough: Slow and thorough tests, may take quite long and maximize coverage.

    +

    quick: Quick tests, should run really quickly and give good coverage.

    +

    undefined: Tests for undefined behaviour, may provoke programming errors +under g_test_trap_subprocess() or g_test_expect_messages() to check +that appropriate assertions or warnings are given

    +

    no-undefined: Avoid tests for undefined behaviour

    +
  • +
  • --debug-log: Debug test logging output.

  • +
+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

argc

Address of the argc +parameter of the main() function. +Changed if any arguments were handled.

 

argv

Address of the argv +parameter of main(). +Any parameters understood by g_test_init() stripped before return.

 

...

NULL-terminated list of special options. Currently the only +defined option is "no_g_set_prgname", which +will cause g_test_init() to not call g_set_prgname().

 
+
+

Since: 2.16

+
+
+
+

g_test_initialized

+
#define             g_test_initialized()
+

Returns TRUE if g_test_init() has been called.

+
+

Returns

+

TRUE if g_test_init() has been called.

+
+

Since: 2.36

+
+
+
+

g_test_quick

+
#define             g_test_quick()
+

Returns TRUE if tests are run in quick mode. +Exactly one of g_test_quick() and g_test_slow() is active in any run; +there is no "medium speed".

+
+

Returns

+

TRUE if in quick mode

+
+
+
+
+

g_test_slow

+
#define             g_test_slow()
+

Returns TRUE if tests are run in slow mode. +Exactly one of g_test_quick() and g_test_slow() is active in any run; +there is no "medium speed".

+
+

Returns

+

the opposite of g_test_quick()

+
+
+
+
+

g_test_thorough

+
#define             g_test_thorough()
+

Returns TRUE if tests are run in thorough mode, equivalent to +g_test_slow().

+
+

Returns

+

the same thing as g_test_slow()

+
+
+
+
+

g_test_perf

+
#define             g_test_perf()
+

Returns TRUE if tests are run in performance mode.

+
+

Returns

+

TRUE if in performance mode

+
+
+
+
+

g_test_verbose

+
#define             g_test_verbose()
+

Returns TRUE if tests are run in verbose mode. +The default is neither g_test_verbose() nor g_test_quiet().

+
+

Returns

+

TRUE if in verbose mode

+
+
+
+
+

g_test_undefined

+
#define             g_test_undefined()
+

Returns TRUE if tests may provoke assertions and other formally-undefined +behaviour, to verify that appropriate warnings are given. It might, in some +cases, be useful to turn this off if running tests under valgrind.

+
+

Returns

+

TRUE if tests may provoke programming errors

+
+
+
+
+

g_test_quiet

+
#define             g_test_quiet()
+

Returns TRUE if tests are run in quiet mode. +The default is neither g_test_verbose() nor g_test_quiet().

+
+

Returns

+

TRUE if in quiet mode

+
+
+
+
+

g_test_subprocess ()

+
gboolean
+g_test_subprocess (void);
+

Returns TRUE (after g_test_init() has been called) if the test +program is running under g_test_trap_subprocess().

+
+

Returns

+

TRUE if the test program is running under +g_test_trap_subprocess().

+
+

Since: 2.38

+
+
+
+

g_test_run ()

+
int
+g_test_run (void);
+

Runs all tests under the toplevel suite which can be retrieved +with g_test_get_root(). Similar to g_test_run_suite(), the test +cases to be run are filtered according to test path arguments +(-p testpath) as parsed by g_test_init(). g_test_run_suite() +or g_test_run() may only be called once in a program.

+

In general, the tests and sub-suites within each suite are run in +the order in which they are defined. However, note that prior to +GLib 2.36, there was a bug in the g_test_add_* +functions which caused them to create multiple suites with the same +name, meaning that if you created tests "/foo/simple", +"/bar/simple", and "/foo/using-bar" in that order, they would get +run in that order (since g_test_run() would run the first "/foo" +suite, then the "/bar" suite, then the second "/foo" suite). As of +2.36, this bug is fixed, and adding the tests in that order would +result in a running order of "/foo/simple", "/foo/using-bar", +"/bar/simple". If this new ordering is sub-optimal (because it puts +more-complicated tests before simpler ones, making it harder to +figure out exactly what has failed), you can fix it by changing the +test paths to group tests by suite in a way that will result in the +desired running order. Eg, "/simple/foo", "/simple/bar", +"/complex/foo-using-bar".

+

However, you should never make the actual result of a test depend +on the order that tests are run in. If you need to ensure that some +particular code runs before or after a given test case, use +g_test_add(), which lets you specify setup and teardown functions.

+

If all tests are skipped, this function will return 0 if +producing TAP output, or 77 (treated as "skip test" by Automake) otherwise.

+
+

Returns

+

0 on success, 1 on failure (assuming it returns at all), +0 or 77 if all tests were skipped with g_test_skip()

+
+

Since: 2.16

+
+
+
+

GTestFunc ()

+
void
+(*GTestFunc) (void);
+

The type used for test case functions.

+

Since: 2.28

+
+
+
+

g_test_add_func ()

+
void
+g_test_add_func (const char *testpath,
+                 GTestFunc test_func);
+

Create a new test case, similar to g_test_create_case(). However +the test is assumed to use no fixture, and test suites are automatically +created on the fly and added to the root fixture, based on the +slash-separated portions of testpath +.

+

If testpath + includes the component "subprocess" anywhere in it, +the test will be skipped by default, and only run if explicitly +required via the -p command-line option or g_test_trap_subprocess().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

testpath

/-separated test case path name for the test.

 

test_func

The test function to invoke for this test.

[scope async]
+
+

Since: 2.16

+
+
+
+

GTestDataFunc ()

+
void
+(*GTestDataFunc) (gconstpointer user_data);
+

The type used for test case functions that take an extra pointer +argument.

+
+

Parameters

+
+++++ + + + + + +

user_data

the data provided when registering the test

 
+
+

Since: 2.28

+
+
+
+

g_test_add_data_func ()

+
void
+g_test_add_data_func (const char *testpath,
+                      gconstpointer test_data,
+                      GTestDataFunc test_func);
+

Create a new test case, similar to g_test_create_case(). However +the test is assumed to use no fixture, and test suites are automatically +created on the fly and added to the root fixture, based on the +slash-separated portions of testpath +. The test_data + argument +will be passed as first argument to test_func +.

+

If testpath + includes the component "subprocess" anywhere in it, +the test will be skipped by default, and only run if explicitly +required via the -p command-line option or g_test_trap_subprocess().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

testpath

/-separated test case path name for the test.

 

test_data

Test data argument for the test function.

 

test_func

The test function to invoke for this test.

[scope async]
+
+

Since: 2.16

+
+
+
+

g_test_add_data_func_full ()

+
void
+g_test_add_data_func_full (const char *testpath,
+                           gpointer test_data,
+                           GTestDataFunc test_func,
+                           GDestroyNotify data_free_func);
+

Create a new test case, as with g_test_add_data_func(), but freeing +test_data + after the test run is complete.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

testpath

/-separated test case path name for the test.

 

test_data

Test data argument for the test function.

 

test_func

The test function to invoke for this test.

 

data_free_func

GDestroyNotify for test_data +.

 
+
+

Since: 2.34

+
+
+
+

g_test_add()

+
#define             g_test_add(testpath, Fixture, tdata, fsetup, ftest, fteardown)
+

Hook up a new test case at testpath +, similar to g_test_add_func(). +A fixture data structure with setup and teardown functions may be provided, +similar to g_test_create_case().

+

g_test_add() is implemented as a macro, so that the fsetup(), ftest() and +fteardown() callbacks can expect a Fixture + pointer as their first argument +in a type safe manner. They otherwise have type GTestFixtureFunc.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

testpath

The test path for a new test case.

 

Fixture

The type of a fixture data structure.

 

tdata

Data argument for the test functions.

 

fsetup

The function to set up the fixture data.

 

ftest

The actual test function.

 

fteardown

The function to tear down the fixture data.

 
+
+

Since: 2.16

+
+
+
+

g_test_build_filename ()

+
gchar *
+g_test_build_filename (GTestFileType file_type,
+                       const gchar *first_path,
+                       ...);
+

Creates the pathname to a data file that is required for a test.

+

This function is conceptually similar to g_build_filename() except +that the first argument has been replaced with a GTestFileType +argument.

+

The data file should either have been distributed with the module +containing the test (G_TEST_DIST) or built as part of the build +system of that module (G_TEST_BUILT).

+

In order for this function to work in srcdir != builddir situations, +the G_TEST_SRCDIR and G_TEST_BUILDDIR environment variables need to +have been defined. As of 2.38, this is done by the glib.mk +included in GLib. Please ensure that your copy is up to date before +using this function.

+

In case neither variable is set, this function will fall back to +using the dirname portion of argv[0], possibly removing ".libs". +This allows for casual running of tests directly from the commandline +in the srcdir == builddir case and should also support running of +installed tests, assuming the data files have been installed in the +same relative path as the test binary.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file_type

the type of file (built vs. distributed)

 

first_path

the first segment of the pathname

 

...

NULL-terminated additional path segments

 
+
+
+

Returns

+

the path of the file, to be freed using g_free()

+
+

Since: 2.38

+
+
+
+

g_test_get_filename ()

+
const gchar *
+g_test_get_filename (GTestFileType file_type,
+                     const gchar *first_path,
+                     ...);
+

Gets the pathname to a data file that is required for a test.

+

This is the same as g_test_build_filename() with two differences. +The first difference is that must only use this function from within +a testcase function. The second difference is that you need not free +the return value -- it will be automatically freed when the testcase +finishes running.

+

It is safe to use this function from a thread inside of a testcase +but you must ensure that all such uses occur before the main testcase +function returns (ie: it is best to ensure that all threads have been +joined).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

file_type

the type of file (built vs. distributed)

 

first_path

the first segment of the pathname

 

...

NULL-terminated additional path segments

 
+
+
+

Returns

+

the path, automatically freed at the end of the testcase

+
+

Since: 2.38

+
+
+
+

g_test_get_dir ()

+
const gchar *
+g_test_get_dir (GTestFileType file_type);
+

Gets the pathname of the directory containing test files of the type +specified by file_type +.

+

This is approximately the same as calling g_test_build_filename("."), +but you don't need to free the return value.

+
+

Parameters

+
+++++ + + + + + +

file_type

the type of file (built vs. distributed)

 
+
+
+

Returns

+

the path of the directory, owned by GLib

+
+

Since: 2.38

+
+
+
+

g_test_fail ()

+
void
+g_test_fail (void);
+

Indicates that a test failed. This function can be called +multiple times from the same test. You can use this function +if your test failed in a recoverable way.

+

Do not use this function if the failure of a test could cause +other tests to malfunction.

+

Calling this function will not stop the test from running, you +need to return from the test function yourself. So you can +produce additional diagnostic messages or even continue running +the test.

+

If not called from inside a test, this function does nothing.

+

Since: 2.30

+
+
+
+

g_test_skip ()

+
void
+g_test_skip (const gchar *msg);
+

Indicates that a test was skipped.

+

Calling this function will not stop the test from running, you +need to return from the test function yourself. So you can +produce additional diagnostic messages or even continue running +the test.

+

If not called from inside a test, this function does nothing.

+
+

Parameters

+
+++++ + + + + + +

msg

explanation.

[allow-none]
+
+

Since: 2.38

+
+
+
+

g_test_incomplete ()

+
void
+g_test_incomplete (const gchar *msg);
+

Indicates that a test failed because of some incomplete +functionality. This function can be called multiple times +from the same test.

+

Calling this function will not stop the test from running, you +need to return from the test function yourself. So you can +produce additional diagnostic messages or even continue running +the test.

+

If not called from inside a test, this function does nothing.

+
+

Parameters

+
+++++ + + + + + +

msg

explanation.

[allow-none]
+
+

Since: 2.38

+
+
+
+

g_test_failed ()

+
gboolean
+g_test_failed (void);
+

Returns whether a test has already failed. This will +be the case when g_test_fail(), g_test_incomplete() +or g_test_skip() have been called, but also if an +assertion has failed.

+

This can be useful to return early from a test if +continuing after a failed assertion might be harmful.

+

The return value of this function is only meaningful +if it is called from inside a test function.

+
+

Returns

+

TRUE if the test has failed

+
+

Since: 2.38

+
+
+
+

g_test_message ()

+
void
+g_test_message (const char *format,
+                ...);
+

Add a message to the test report.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format

the format string

 

...

printf-like arguments to format +

 
+
+

Since: 2.16

+
+
+
+

g_test_bug_base ()

+
void
+g_test_bug_base (const char *uri_pattern);
+

Specify the base URI for bug reports.

+

The base URI is used to construct bug report messages for +g_test_message() when g_test_bug() is called. +Calling this function outside of a test case sets the +default base URI for all test cases. Calling it from within +a test case changes the base URI for the scope of the test +case only. +Bug URIs are constructed by appending a bug specific URI +portion to uri_pattern +, or by replacing the special string +'%s' within uri_pattern + if that is present.

+
+

Parameters

+
+++++ + + + + + +

uri_pattern

the base pattern for bug URIs

 
+
+

Since: 2.16

+
+
+
+

g_test_bug ()

+
void
+g_test_bug (const char *bug_uri_snippet);
+

This function adds a message to test reports that +associates a bug URI with a test case. +Bug URIs are constructed from a base URI set with g_test_bug_base() +and bug_uri_snippet +.

+
+

Parameters

+
+++++ + + + + + +

bug_uri_snippet

Bug specific bug tracker URI portion.

 
+
+

Since: 2.16

+
+
+
+

GTestLogFatalFunc ()

+
gboolean
+(*GTestLogFatalFunc) (const gchar *log_domain,
+                      GLogLevelFlags log_level,
+                      const gchar *message,
+                      gpointer user_data);
+

Specifies the prototype of fatal log handler functions.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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()

 
+
+
+

Returns

+

TRUE if the program should abort, FALSE otherwise

+
+

Since: 2.22

+
+
+
+

g_test_log_set_fatal_handler ()

+
void
+g_test_log_set_fatal_handler (GTestLogFatalFunc log_func,
+                              gpointer user_data);
+

Installs a non-error fatal log handler which can be +used to decide whether log messages which are counted +as fatal abort the program.

+

The use case here is that you are running a test case +that depends on particular libraries or circumstances +and cannot prevent certain known critical or warning +messages. So you install a handler that compares the +domain and message to precisely not abort in such a case.

+

Note that the handler is reset at the beginning of +any test case, so you have to set it inside each test +function which needs the special behavior.

+

This handler has no effect on g_error messages.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

log_func

the log handler function.

 

user_data

data passed to the log handler.

 
+
+

Since: 2.22

+
+
+
+

g_test_timer_start ()

+
void
+g_test_timer_start (void);
+

Start a timing test. Call g_test_timer_elapsed() when the task is supposed +to be done. Call this function again to restart the timer.

+

Since: 2.16

+
+
+
+

g_test_timer_elapsed ()

+
double
+g_test_timer_elapsed (void);
+

Get the time since the last start of the timer with g_test_timer_start().

+
+

Returns

+

the time since the last start of the timer, as a double

+
+

Since: 2.16

+
+
+
+

g_test_timer_last ()

+
double
+g_test_timer_last (void);
+

Report the last result of g_test_timer_elapsed().

+
+

Returns

+

the last result of g_test_timer_elapsed(), as a double

+
+

Since: 2.16

+
+
+
+

g_test_queue_free ()

+
void
+g_test_queue_free (gpointer gfree_pointer);
+

Enqueue a pointer to be released with g_free() during the next +teardown phase. This is equivalent to calling g_test_queue_destroy() +with a destroy callback of g_free().

+
+

Parameters

+
+++++ + + + + + +

gfree_pointer

the pointer to be stored.

 
+
+

Since: 2.16

+
+
+
+

g_test_queue_destroy ()

+
void
+g_test_queue_destroy (GDestroyNotify destroy_func,
+                      gpointer destroy_data);
+

This function enqueus a callback destroy_func + to be executed +during the next test case teardown phase. This is most useful +to auto destruct allocted test resources at the end of a test run. +Resources are released in reverse queue order, that means enqueueing +callback A before callback B will cause B() to be called before +A() during teardown.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

destroy_func

Destroy callback for teardown phase.

 

destroy_data

Destroy callback data.

 
+
+

Since: 2.16

+
+
+
+

g_test_queue_unref()

+
#define             g_test_queue_unref(gobject)
+

Enqueue an object to be released with g_object_unref() during +the next teardown phase. This is equivalent to calling +g_test_queue_destroy() with a destroy callback of g_object_unref().

+
+

Parameters

+
+++++ + + + + + +

gobject

the object to unref

 
+
+

Since: 2.16

+
+
+
+

g_test_expect_message ()

+
void
+g_test_expect_message (const gchar *log_domain,
+                       GLogLevelFlags log_level,
+                       const gchar *pattern);
+

Indicates that a message with the given log_domain + and log_level +, +with text matching pattern +, is expected to be logged. When this +message is logged, it will not be printed, and the test case will +not abort.

+

Use g_test_assert_expected_messages() to assert that all +previously-expected messages have been seen and suppressed.

+

You can call this multiple times in a row, if multiple messages are +expected as a result of a single call. (The messages must appear in +the same order as the calls to g_test_expect_message().)

+

For example:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
// g_main_context_push_thread_default() should fail if the
+// context is already owned by another thread.
+g_test_expect_message (G_LOG_DOMAIN,
+                       G_LOG_LEVEL_CRITICAL,
+                       "assertion*acquired_context*failed");
+g_main_context_push_thread_default (bad_context);
+g_test_assert_expected_messages ();
+
+ +

+

Note that you cannot use this to test g_error() messages, since +g_error() intentionally never returns even if the program doesn't +abort; use g_test_trap_subprocess() in this case.

+

If messages at G_LOG_LEVEL_DEBUG are emitted, but not explicitly +expected via g_test_expect_message() then they will be ignored.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

log_domain

the log domain of the message.

[allow-none]

log_level

the log level of the message

 

pattern

a glob-style pattern

 
+
+

Since: 2.34

+
+
+
+

g_test_assert_expected_messages

+
#define             g_test_assert_expected_messages()
+

Asserts that all messages previously indicated via +g_test_expect_message() have been seen and suppressed.

+

If messages at G_LOG_LEVEL_DEBUG are emitted, but not explicitly +expected via g_test_expect_message() then they will be ignored.

+

Since: 2.34

+
+
+
+

g_test_trap_subprocess ()

+
void
+g_test_trap_subprocess (const char *test_path,
+                        guint64 usec_timeout,
+                        GTestSubprocessFlags test_flags);
+

Respawns the test program to run only test_path + in a subprocess. +This can be used for a test case that might not return, or that +might abort.

+

If test_path + is NULL then the same test is re-run in a subprocess. +You can use g_test_subprocess() to determine whether the test is in +a subprocess or not.

+

test_path + can also be the name of the parent test, followed by +"/subprocess/" and then a name for the specific subtest (or just +ending with "/subprocess" if the test only has one child test); +tests with names of this form will automatically be skipped in the +parent process.

+

If usec_timeout + is non-0, the test subprocess is aborted and +considered failing if its run time exceeds it.

+

The subprocess behavior can be configured with the +GTestSubprocessFlags flags.

+

You can use methods such as g_test_trap_assert_passed(), +g_test_trap_assert_failed(), and g_test_trap_assert_stderr() to +check the results of the subprocess. (But note that +g_test_trap_assert_stdout() and g_test_trap_assert_stderr() +cannot be used if test_flags + specifies that the child should +inherit the parent stdout/stderr.)

+

If your main() needs to behave differently in +the subprocess, you can call g_test_subprocess() (after calling +g_test_init()) to see whether you are in a subprocess.

+

The following example tests that calling +my_object_new(1000000) will abort with an error +message.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
static void
+test_create_large_object (void)
+{
+  if (g_test_subprocess ())
+    {
+      my_object_new (1000000);
+      return;
+    }
+
+  // Reruns this same test in a subprocess
+  g_test_trap_subprocess (NULL, 0, 0);
+  g_test_trap_assert_failed ();
+  g_test_trap_assert_stderr ("*ERROR*too large*");
+}
+
+int
+main (int argc, char **argv)
+{
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/myobject/create_large_object",
+                   test_create_large_object);
+  return g_test_run ();
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

test_path

Test to run in a subprocess.

[allow-none]

usec_timeout

Timeout for the subprocess test in micro seconds.

 

test_flags

Flags to modify subprocess behaviour.

 
+
+

Since: 2.38

+
+
+
+

g_test_trap_has_passed ()

+
gboolean
+g_test_trap_has_passed (void);
+

Check the result of the last g_test_trap_subprocess() call.

+
+

Returns

+

TRUE if the last test subprocess terminated successfully.

+
+

Since: 2.16

+
+
+
+

g_test_trap_reached_timeout ()

+
gboolean
+g_test_trap_reached_timeout (void);
+

Check the result of the last g_test_trap_subprocess() call.

+
+

Returns

+

TRUE if the last test subprocess got killed due to a timeout.

+
+

Since: 2.16

+
+
+
+

g_test_trap_assert_passed

+
#define             g_test_trap_assert_passed()
+

Assert that the last test subprocess passed. +See g_test_trap_subprocess().

+

Since: 2.16

+
+
+
+

g_test_trap_assert_failed

+
#define             g_test_trap_assert_failed()
+

Assert that the last test subprocess failed. +See g_test_trap_subprocess().

+

This is sometimes used to test situations that are formally considered to +be undefined behaviour, like inputs that fail a g_return_if_fail() +check. In these situations you should skip the entire test, including the +call to g_test_trap_subprocess(), unless g_test_undefined() returns TRUE +to indicate that undefined behaviour may be tested.

+

Since: 2.16

+
+
+
+

g_test_trap_assert_stdout()

+
#define             g_test_trap_assert_stdout(soutpattern)
+

Assert that the stdout output of the last test subprocess matches +soutpattern +. See g_test_trap_subprocess().

+
+

Parameters

+
+++++ + + + + + +

soutpattern

a glob-style pattern

 
+
+

Since: 2.16

+
+
+
+

g_test_trap_assert_stdout_unmatched()

+
#define             g_test_trap_assert_stdout_unmatched(soutpattern)
+

Assert that the stdout output of the last test subprocess +does not match soutpattern +. See g_test_trap_subprocess().

+
+

Parameters

+
+++++ + + + + + +

soutpattern

a glob-style pattern

 
+
+

Since: 2.16

+
+
+
+

g_test_trap_assert_stderr()

+
#define             g_test_trap_assert_stderr(serrpattern)
+

Assert that the stderr output of the last test subprocess +matches serrpattern +. See g_test_trap_subprocess().

+

This is sometimes used to test situations that are formally +considered to be undefined behaviour, like code that hits a +g_assert() or g_error(). In these situations you should skip the +entire test, including the call to g_test_trap_subprocess(), unless +g_test_undefined() returns TRUE to indicate that undefined +behaviour may be tested.

+
+

Parameters

+
+++++ + + + + + +

serrpattern

a glob-style pattern

 
+
+

Since: 2.16

+
+
+
+

g_test_trap_assert_stderr_unmatched()

+
#define             g_test_trap_assert_stderr_unmatched(serrpattern)
+

Assert that the stderr output of the last test subprocess +does not match serrpattern +. See g_test_trap_subprocess().

+
+

Parameters

+
+++++ + + + + + +

serrpattern

a glob-style pattern

 
+
+

Since: 2.16

+
+
+
+

g_test_trap_fork ()

+
gboolean
+g_test_trap_fork (guint64 usec_timeout,
+                  GTestTrapFlags test_trap_flags);
+
+

g_test_trap_fork is deprecated and should not be used in newly-written code.

+

This function is implemented only on Unix platforms, +and is not always reliable due to problems inherent in +fork-without-exec. Use g_test_trap_subprocess() instead.

+
+

Fork the current test program to execute a test case that might +not return or that might abort.

+

If usec_timeout + is non-0, the forked test case is aborted and +considered failing if its run time exceeds it.

+

The forking behavior can be configured with the GTestTrapFlags flags.

+

In the following example, the test code forks, the forked child +process produces some sample output and exits successfully. +The forking parent process then asserts successful child program +termination and validates child program outputs.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
static void
+test_fork_patterns (void)
+{
+  if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDOUT | G_TEST_TRAP_SILENCE_STDERR))
+    {
+      g_print ("some stdout text: somagic17\n");
+      g_printerr ("some stderr text: semagic43\n");
+      exit (0); // successful test run
+    }
+  g_test_trap_assert_passed ();
+  g_test_trap_assert_stdout ("*somagic17*");
+  g_test_trap_assert_stderr ("*semagic43*");
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

usec_timeout

Timeout for the forked test in micro seconds.

 

test_trap_flags

Flags to modify forking behaviour.

 
+
+
+

Returns

+

TRUE for the forked child and FALSE for the executing parent process.

+
+

Since: 2.16

+
+
+
+

g_test_rand_bit

+
#define             g_test_rand_bit()
+

Get a reproducible random bit (0 or 1), see g_test_rand_int() +for details on test case random numbers.

+

Since: 2.16

+
+
+
+

g_test_rand_int ()

+
gint32
+g_test_rand_int (void);
+

Get a reproducible random integer number.

+

The random numbers generated by the g_test_rand_*() family of functions +change with every new test program start, unless the --seed option is +given when starting test programs.

+

For individual test cases however, the random number generator is +reseeded, to avoid dependencies between tests and to make --seed +effective for all test cases.

+
+

Returns

+

a random number from the seeded random number generator.

+
+

Since: 2.16

+
+
+
+

g_test_rand_int_range ()

+
gint32
+g_test_rand_int_range (gint32 begin,
+                       gint32 end);
+

Get a reproducible random integer number out of a specified range, +see g_test_rand_int() for details on test case random numbers.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

begin

the minimum value returned by this function

 

end

the smallest value not to be returned by this function

 
+
+
+

Returns

+

a number with begin +<= number < end +.

+
+

Since: 2.16

+
+
+
+

g_test_rand_double ()

+
double
+g_test_rand_double (void);
+

Get a reproducible random floating point number, +see g_test_rand_int() for details on test case random numbers.

+
+

Returns

+

a random number from the seeded random number generator.

+
+

Since: 2.16

+
+
+
+

g_test_rand_double_range ()

+
double
+g_test_rand_double_range (double range_start,
+                          double range_end);
+

Get a reproducible random floating pointer number out of a specified range, +see g_test_rand_int() for details on test case random numbers.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

range_start

the minimum value returned by this function

 

range_end

the minimum value not returned by this function

 
+
+
+

Returns

+

a number with range_start +<= number < range_end +.

+
+

Since: 2.16

+
+
+
+

g_assert()

+
#define             g_assert(expr)
+

Debugging macro to terminate the application if the assertion +fails. If the assertion fails (i.e. the expression is not true), +an error message is logged and the application is terminated.

+

The macro can be turned off in final releases of code by defining +G_DISABLE_ASSERT when compiling the application.

+
+

Parameters

+
+++++ + + + + + +

expr

the expression to check

 
+
+
+
+
+

g_assert_not_reached

+
#define             g_assert_not_reached()
+

Debugging macro to terminate the application if it is ever +reached. If it is reached, an error message is logged and the +application is terminated.

+

The macro can be turned off in final releases of code by defining +G_DISABLE_ASSERT when compiling the application.

+
+
+
+

g_assert_cmpstr()

+
#define             g_assert_cmpstr(s1, cmp, s2)
+

Debugging macro to compare two strings. If the comparison fails, +an error message is logged and the application is either terminated +or the testcase marked as failed. +The strings are compared using g_strcmp0().

+

The effect of g_assert_cmpstr (s1, op, s2) is +the same as g_assert_true (g_strcmp0 (s1, s2) op 0). +The advantage of this macro is that it can produce a message that +includes the actual values of s1 + and s2 +.

+
+ + + + + + + +
1
g_assert_cmpstr (mystring, ==, "fubar");
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

s1

a string (may be NULL)

 

cmp

The comparison operator to use. +One of ==, !=, <, >, <=, >=.

 

s2

another string (may be NULL)

 
+
+

Since: 2.16

+
+
+
+

g_assert_cmpint()

+
#define             g_assert_cmpint(n1, cmp, n2)
+

Debugging macro to compare two integers.

+

The effect of g_assert_cmpint (n1, op, n2) is +the same as g_assert_true (n1 op n2). The advantage +of this macro is that it can produce a message that includes the +actual values of n1 + and n2 +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

n1

an integer

 

cmp

The comparison operator to use. +One of ==, !=, <, >, <=, >=.

 

n2

another integer

 
+
+

Since: 2.16

+
+
+
+

g_assert_cmpuint()

+
#define             g_assert_cmpuint(n1, cmp, n2)
+

Debugging macro to compare two unsigned integers.

+

The effect of g_assert_cmpuint (n1, op, n2) is +the same as g_assert_true (n1 op n2). The advantage +of this macro is that it can produce a message that includes the +actual values of n1 + and n2 +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

n1

an unsigned integer

 

cmp

The comparison operator to use. +One of ==, !=, <, >, <=, >=.

 

n2

another unsigned integer

 
+
+

Since: 2.16

+
+
+
+

g_assert_cmphex()

+
#define             g_assert_cmphex(n1, cmp, n2)
+

Debugging macro to compare to unsigned integers.

+

This is a variant of g_assert_cmpuint() that displays the numbers +in hexadecimal notation in the message.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

n1

an unsigned integer

 

cmp

The comparison operator to use. +One of ==, !=, <, >, <=, >=.

 

n2

another unsigned integer

 
+
+

Since: 2.16

+
+
+
+

g_assert_cmpfloat()

+
#define             g_assert_cmpfloat(n1,cmp,n2)
+

Debugging macro to compare two floating point numbers.

+

The effect of g_assert_cmpfloat (n1, op, n2) is +the same as g_assert_true (n1 op n2). The advantage +of this macro is that it can produce a message that includes the +actual values of n1 + and n2 +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

n1

an floating point number

 

cmp

The comparison operator to use. +One of ==, !=, <, >, <=, >=.

 

n2

another floating point number

 
+
+

Since: 2.16

+
+
+
+

g_assert_cmpmem()

+
#define             g_assert_cmpmem(m1, l1, m2, l2)
+

Debugging macro to compare memory regions. If the comparison fails, +an error message is logged and the application is either terminated +or the testcase marked as failed.

+

The effect of g_assert_cmpmem (m1, l1, m2, l2) is +the same as g_assert_true (l1 == l2 && memcmp (m1, m2, l1) == 0). +The advantage of this macro is that it can produce a message that +includes the actual values of l1 + and l2 +.

+
+ + + + + + + +
1
g_assert_cmpmem (buf->data, buf->len, expected, sizeof (expected));
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

m1

pointer to a buffer

 

l1

length of m1 +

 

m2

pointer to another buffer

 

l2

length of m2 +

 
+
+

Since: 2.46

+
+
+
+

g_assert_no_error()

+
#define             g_assert_no_error(err)
+

Debugging macro to check that a GError is not set.

+

The effect of g_assert_no_error (err) is +the same as g_assert_true (err == NULL). The advantage +of this macro is that it can produce a message that includes +the error message and code.

+
+

Parameters

+
+++++ + + + + + +

err

a GError, possibly NULL

 
+
+

Since: 2.20

+
+
+
+

g_assert_error()

+
#define             g_assert_error(err, dom, c)
+

Debugging macro to check that a method has returned +the correct GError.

+

The effect of g_assert_error (err, dom, c) is +the same as g_assert_true (err != NULL && err->domain +== dom && err->code == c). The advantage of this +macro is that it can produce a message that includes the incorrect +error message and code.

+

This can only be used to test for a specific error. If you want to +test that err + is set, but don't care what it's set to, just use +g_assert (err != NULL)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

err

a GError, possibly NULL

 

dom

the expected error domain (a GQuark)

 

c

the expected error code

 
+
+

Since: 2.20

+
+
+
+

g_assert_true()

+
#define             g_assert_true(expr)
+

Debugging macro to check that an expression is true.

+

If the assertion fails (i.e. the expression is not true), +an error message is logged and the application is either +terminated or the testcase marked as failed.

+

See g_test_set_nonfatal_assertions().

+
+

Parameters

+
+++++ + + + + + +

expr

the expression to check

 
+
+

Since: 2.38

+
+
+
+

g_assert_false()

+
#define             g_assert_false(expr)
+

Debugging macro to check an expression is false.

+

If the assertion fails (i.e. the expression is not false), +an error message is logged and the application is either +terminated or the testcase marked as failed.

+

See g_test_set_nonfatal_assertions().

+
+

Parameters

+
+++++ + + + + + +

expr

the expression to check

 
+
+

Since: 2.38

+
+
+
+

g_assert_null()

+
#define             g_assert_null(expr)
+

Debugging macro to check an expression is NULL.

+

If the assertion fails (i.e. the expression is not NULL), +an error message is logged and the application is either +terminated or the testcase marked as failed.

+

See g_test_set_nonfatal_assertions().

+
+

Parameters

+
+++++ + + + + + +

expr

the expression to check

 
+
+

Since: 2.38

+
+
+
+

g_assert_nonnull()

+
#define             g_assert_nonnull(expr)
+

Debugging macro to check an expression is not NULL.

+

If the assertion fails (i.e. the expression is NULL), +an error message is logged and the application is either +terminated or the testcase marked as failed.

+

See g_test_set_nonfatal_assertions().

+
+

Parameters

+
+++++ + + + + + +

expr

the expression to check

 
+
+

Since: 2.40

+
+
+
+

g_test_set_nonfatal_assertions ()

+
void
+g_test_set_nonfatal_assertions (void);
+

Changes the behaviour of g_assert_cmpstr(), g_assert_cmpint(), +g_assert_cmpuint(), g_assert_cmphex(), g_assert_cmpfloat(), +g_assert_true(), g_assert_false(), g_assert_null(), g_assert_no_error(), +g_assert_error(), g_test_assert_expected_messages() and the various +g_test_trap_assert_*() macros to not abort to program, but instead +call g_test_fail() and continue. (This also changes the behavior of +g_test_fail() so that it will not cause the test program to abort +after completing the failed test.)

+

Note that the g_assert_not_reached() and g_assert() are not +affected by this.

+

This function can only be called after g_test_init().

+

Since: 2.38

+
+
+
+

GTestFixtureFunc ()

+
void
+(*GTestFixtureFunc) (gpointer fixture,
+                     gconstpointer user_data);
+

The type used for functions that operate on test fixtures. This is +used for the fixture setup and teardown functions as well as for the +testcases themselves.

+

user_data + is a pointer to the data that was given when registering +the test case.

+

fixture + will be a pointer to the area of memory allocated by the +test framework, of the size requested. If the requested size was +zero then fixture + will be equal to user_data +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

fixture

the test fixture.

[not nullable]

user_data

the data provided when registering the test

 
+
+

Since: 2.28

+
+
+
+

g_test_create_case ()

+
GTestCase *
+g_test_create_case (const char *test_name,
+                    gsize data_size,
+                    gconstpointer test_data,
+                    GTestFixtureFunc data_setup,
+                    GTestFixtureFunc data_test,
+                    GTestFixtureFunc data_teardown);
+

Create a new GTestCase, named test_name +, this API is fairly +low level, calling g_test_add() or g_test_add_func() is preferable. +When this test is executed, a fixture structure of size data_size + +will be automatically allocated and filled with zeros. Then data_setup + is +called to initialize the fixture. After fixture setup, the actual test +function data_test + is called. Once the test run completes, the +fixture structure is torn down by calling data_teardown + and +after that the memory is automatically released by the test framework.

+

Splitting up a test run into fixture setup, test function and +fixture teardown is most useful if the same fixture is used for +multiple tests. In this cases, g_test_create_case() will be +called with the same fixture, but varying test_name + and +data_test + arguments.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

test_name

the name for the test case

 

data_size

the size of the fixture data structure

 

test_data

test data argument for the test functions

 

data_setup

the function to set up the fixture data.

[scope async]

data_test

the actual test function.

[scope async]

data_teardown

the function to teardown the fixture data.

[scope async]
+
+
+

Returns

+

a newly allocated GTestCase.

+
+

Since: 2.16

+
+
+
+

g_test_create_suite ()

+
GTestSuite *
+g_test_create_suite (const char *suite_name);
+

Create a new test suite with the name suite_name +.

+
+

Parameters

+
+++++ + + + + + +

suite_name

a name for the suite

 
+
+
+

Returns

+

A newly allocated GTestSuite instance.

+
+

Since: 2.16

+
+
+
+

g_test_get_root ()

+
GTestSuite *
+g_test_get_root (void);
+

Get the toplevel test suite for the test path API.

+
+

Returns

+

the toplevel GTestSuite

+
+

Since: 2.16

+
+
+
+

g_test_suite_add ()

+
void
+g_test_suite_add (GTestSuite *suite,
+                  GTestCase *test_case);
+

Adds test_case + to suite +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

suite

a GTestSuite

 

test_case

a GTestCase

 
+
+

Since: 2.16

+
+
+
+

g_test_suite_add_suite ()

+
void
+g_test_suite_add_suite (GTestSuite *suite,
+                        GTestSuite *nestedsuite);
+

Adds nestedsuite + to suite +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

suite

a GTestSuite

 

nestedsuite

another GTestSuite

 
+
+

Since: 2.16

+
+
+
+

g_test_run_suite ()

+
int
+g_test_run_suite (GTestSuite *suite);
+

Execute the tests within suite + and all nested GTestSuites. +The test suites to be executed are filtered according to +test path arguments (-p testpath) as parsed by g_test_init(). +See the g_test_run() documentation for more information on the +order that tests are run in.

+

g_test_run_suite() or g_test_run() may only be called once +in a program.

+
+

Parameters

+
+++++ + + + + + +

suite

a GTestSuite

 
+
+
+

Returns

+

0 on success

+
+

Since: 2.16

+
+
+
+

Types and Values

+
+

enum GTestFileType

+

The type of file to return the filename for, when used with +g_test_build_filename().

+

These two options correspond rather directly to the 'dist' and +'built' terminology that automake uses and are explicitly used to +distinguish between the 'srcdir' and 'builddir' being separate. All +files in your project should either be dist (in the +DIST_EXTRA or dist_schema_DATA +sense, in which case they will always be in the srcdir) or built (in +the BUILT_SOURCES sense, in which case they will +always be in the builddir).

+

Note: as a general rule of automake, files that are generated only as +part of the build-from-git process (but then are distributed with the +tarball) always go in srcdir (even if doing a srcdir != builddir +build from git) and are considered as distributed files.

+
+

Members

+
+++++ + + + + + + + + + + + + +

G_TEST_DIST

+

a file that was included in the distribution tarball

+
 

G_TEST_BUILT

+

a file that was built on the compiling machine

+
 
+
+

Since: 2.38

+
+
+
+

enum GTestTrapFlags

+
+

GTestTrapFlags is deprecated and should not be used in newly-written code.

+

GTestTrapFlags is used only with g_test_trap_fork(), +which is deprecated. g_test_trap_subprocess() uses +GTestTrapSubprocessFlags.

+
+

Test traps are guards around forked tests. +These flags determine what traps to set.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

G_TEST_TRAP_SILENCE_STDOUT

+

Redirect stdout of the test child to + /dev/null so it cannot be observed on the console during test + runs. The actual output is still captured though to allow later + tests with g_test_trap_assert_stdout().

+
 

G_TEST_TRAP_SILENCE_STDERR

+

Redirect stderr of the test child to + /dev/null so it cannot be observed on the console during test + runs. The actual output is still captured though to allow later + tests with g_test_trap_assert_stderr().

+
 

G_TEST_TRAP_INHERIT_STDIN

+

If this flag is given, stdin of the + child process is shared with stdin of its parent process. + It is redirected to /dev/null otherwise.

+
 
+
+
+
+
+

enum GTestSubprocessFlags

+

Flags to pass to g_test_trap_subprocess() to control input and output.

+

Note that in contrast with g_test_trap_fork(), the default is to +not show stdout and stderr.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

G_TEST_SUBPROCESS_INHERIT_STDIN

+

If this flag is given, the child + process will inherit the parent's stdin. Otherwise, the child's + stdin is redirected to /dev/null.

+
 

G_TEST_SUBPROCESS_INHERIT_STDOUT

+

If this flag is given, the child + process will inherit the parent's stdout. Otherwise, the child's + stdout will not be visible, but it will be captured to allow + later tests with g_test_trap_assert_stdout().

+
 

G_TEST_SUBPROCESS_INHERIT_STDERR

+

If this flag is given, the child + process will inherit the parent's stderr. Otherwise, the child's + stderr will not be visible, but it will be captured to allow + later tests with g_test_trap_assert_stderr().

+
 
+
+
+
+
+

GTestCase

+
typedef struct GTestCase  GTestCase;
+
+

An opaque structure representing a test case.

+
+
+
+

GTestSuite

+
typedef struct GTestSuite GTestSuite;
+
+

An opaque structure representing a test suite.

+
+
+
+

See Also

+

gtester, gtester-report

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-The-Main-Event-Loop.html b/docs/reference/glib/html/glib-The-Main-Event-Loop.html new file mode 100644 index 0000000..325525a --- /dev/null +++ b/docs/reference/glib/html/glib-The-Main-Event-Loop.html @@ -0,0 +1,5090 @@ + + + + +The Main Event Loop: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

The Main Event Loop

+

The Main Event Loop — manages all available sources of events

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GMainLoop * + +g_main_loop_new () +
+GMainLoop * + +g_main_loop_ref () +
+void + +g_main_loop_unref () +
+void + +g_main_loop_run () +
+void + +g_main_loop_quit () +
+gboolean + +g_main_loop_is_running () +
+GMainContext * + +g_main_loop_get_context () +
#define +g_main_new() +
#define +g_main_destroy() +
#define +g_main_run() +
#define +g_main_quit() +
#define +g_main_is_running() +
+GMainContext * + +g_main_context_new () +
+GMainContext * + +g_main_context_ref () +
+void + +g_main_context_unref () +
+GMainContext * + +g_main_context_default () +
+gboolean + +g_main_context_iteration () +
#define +g_main_iteration() +
+gboolean + +g_main_context_pending () +
#defineg_main_pending
+GSource * + +g_main_context_find_source_by_id () +
+GSource * + +g_main_context_find_source_by_user_data () +
+GSource * + +g_main_context_find_source_by_funcs_user_data () +
+void + +g_main_context_wakeup () +
+gboolean + +g_main_context_acquire () +
+void + +g_main_context_release () +
+gboolean + +g_main_context_is_owner () +
+gboolean + +g_main_context_wait () +
+gboolean + +g_main_context_prepare () +
+gint + +g_main_context_query () +
+gint + +g_main_context_check () +
+void + +g_main_context_dispatch () +
+void + +g_main_context_set_poll_func () +
+GPollFunc + +g_main_context_get_poll_func () +
+gint + +(*GPollFunc) () +
+void + +g_main_context_add_poll () +
+void + +g_main_context_remove_poll () +
+gint + +g_main_depth () +
+GSource * + +g_main_current_source () +
#define +g_main_set_poll_func() +
+void + +g_main_context_invoke () +
+void + +g_main_context_invoke_full () +
+GMainContext * + +g_main_context_get_thread_default () +
+GMainContext * + +g_main_context_ref_thread_default () +
+void + +g_main_context_push_thread_default () +
+void + +g_main_context_pop_thread_default () +
+GSource * + +g_timeout_source_new () +
+GSource * + +g_timeout_source_new_seconds () +
+guint + +g_timeout_add () +
+guint + +g_timeout_add_full () +
+guint + +g_timeout_add_seconds () +
+guint + +g_timeout_add_seconds_full () +
+GSource * + +g_idle_source_new () +
+guint + +g_idle_add () +
+guint + +g_idle_add_full () +
+gboolean + +g_idle_remove_by_data () +
+void + +(*GChildWatchFunc) () +
+GSource * + +g_child_watch_source_new () +
+guint + +g_child_watch_add () +
+guint + +g_child_watch_add_full () +
+gint + +g_poll () +
+void + +(*GSourceDummyMarshal) () +
+GSource * + +g_source_new () +
+GSource * + +g_source_ref () +
+void + +g_source_unref () +
+void + +g_source_set_funcs () +
+guint + +g_source_attach () +
+void + +g_source_destroy () +
+gboolean + +g_source_is_destroyed () +
+void + +g_source_set_priority () +
+gint + +g_source_get_priority () +
+void + +g_source_set_can_recurse () +
+gboolean + +g_source_get_can_recurse () +
+guint + +g_source_get_id () +
const char * + +g_source_get_name () +
+void + +g_source_set_name () +
+void + +g_source_set_name_by_id () +
+GMainContext * + +g_source_get_context () +
+void + +g_source_set_callback () +
+gboolean + +(*GSourceFunc) () +
+void + +g_source_set_callback_indirect () +
+void + +g_source_set_ready_time () +
+gint64 + +g_source_get_ready_time () +
+gpointer + +g_source_add_unix_fd () +
+void + +g_source_remove_unix_fd () +
+void + +g_source_modify_unix_fd () +
+GIOCondition + +g_source_query_unix_fd () +
+void + +g_source_add_poll () +
+void + +g_source_remove_poll () +
+void + +g_source_add_child_source () +
+void + +g_source_remove_child_source () +
+gint64 + +g_source_get_time () +
+void + +g_source_get_current_time () +
+gboolean + +g_source_remove () +
+gboolean + +g_source_remove_by_funcs_user_data () +
+gboolean + +g_source_remove_by_user_data () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 GMainLoop
#defineG_PRIORITY_HIGH
#defineG_PRIORITY_DEFAULT
#defineG_PRIORITY_HIGH_IDLE
#defineG_PRIORITY_DEFAULT_IDLE
#defineG_PRIORITY_LOW
#defineG_SOURCE_CONTINUE
#defineG_SOURCE_REMOVE
 GMainContext
typedefGPid
structGPollFD
#defineG_POLLFD_FORMAT
structGSource
structGSourceFuncs
structGSourceCallbackFuncs
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

The main event loop manages all the available sources of events for +GLib and GTK+ applications. These events can come from any number of +different types of sources such as file descriptors (plain files, +pipes or sockets) and timeouts. New types of event sources can also +be added using g_source_attach().

+

To allow multiple independent sets of sources to be handled in +different threads, each source is associated with a GMainContext. +A GMainContext can only be running in a single thread, but +sources can be added to it and removed from it from other threads.

+

Each event source is assigned a priority. The default priority, +G_PRIORITY_DEFAULT, is 0. Values less than 0 denote higher priorities. +Values greater than 0 denote lower priorities. Events from high priority +sources are always processed before events from lower priority sources.

+

Idle functions can also be added, and assigned a priority. These will +be run whenever no events with a higher priority are ready to be processed.

+

The GMainLoop data type represents a main event loop. A GMainLoop is +created with g_main_loop_new(). After adding the initial event sources, +g_main_loop_run() is called. This continuously checks for new events from +each of the event sources and dispatches them. Finally, the processing of +an event from one of the sources leads to a call to g_main_loop_quit() to +exit the main loop, and g_main_loop_run() returns.

+

It is possible to create new instances of GMainLoop recursively. +This is often used in GTK+ applications when showing modal dialog +boxes. Note that event sources are associated with a particular +GMainContext, and will be checked and dispatched for all main +loops associated with that GMainContext.

+

GTK+ contains wrappers of some of these functions, e.g. gtk_main(), +gtk_main_quit() and gtk_events_pending().

+
+

Creating new source types

+

One of the unusual features of the GMainLoop functionality +is that new types of event source can be created and used in +addition to the builtin type of event source. A new event source +type is used for handling GDK events. A new source type is created +by "deriving" from the GSource structure. The derived type of +source is represented by a structure that has the GSource structure +as a first element, and other elements specific to the new source +type. To create an instance of the new source type, call +g_source_new() passing in the size of the derived structure and +a table of functions. These GSourceFuncs determine the behavior of +the new source type.

+

New source types basically interact with the main context +in two ways. Their prepare function in GSourceFuncs can set a timeout +to determine the maximum amount of time that the main loop will sleep +before checking the source again. In addition, or as well, the source +can add file descriptors to the set that the main context checks using +g_source_add_poll().

+
+
+

Customizing the main loop iteration

+

Single iterations of a GMainContext can be run with +g_main_context_iteration(). In some cases, more detailed control +of exactly how the details of the main loop work is desired, for +instance, when integrating the GMainLoop with an external main loop. +In such cases, you can call the component functions of +g_main_context_iteration() directly. These functions are +g_main_context_prepare(), g_main_context_query(), +g_main_context_check() and g_main_context_dispatch().

+
+
+

State of a Main Context

+

The operation of these functions can best be seen in terms +of a state diagram, as shown in this image.

+

+

On UNIX, the GLib mainloop is incompatible with fork(). Any program +using the mainloop must either exec() or exit() from the child +without returning to the mainloop.

+
+
+

Memory management of sources

+

There are two options for memory management of the user data passed to a +GSource to be passed to its callback on invocation. This data is provided +in calls to g_timeout_add(), g_timeout_add_full(), g_idle_add(), etc. and +more generally, using g_source_set_callback(). This data is typically an +object which ‘owns’ the timeout or idle callback, such as a widget or a +network protocol implementation. In many cases, it is an error for the +callback to be invoked after this owning object has been destroyed, as that +results in use of freed memory.

+

The first, and preferred, option is to store the source ID returned by +functions such as g_timeout_add() or g_source_attach(), and explicitly +remove that source from the main context using g_source_remove() when the +owning object is finalized. This ensures that the callback can only be +invoked while the object is still alive.

+

The second option is to hold a strong reference to the object in the +callback, and to release it in the callback’s GDestroyNotify. This ensures +that the object is kept alive until after the source is finalized, which is +guaranteed to be after it is invoked for the final time. The GDestroyNotify +is another callback passed to the ‘full’ variants of GSource functions (for +example, g_timeout_add_full()). It is called when the source is finalized, +and is designed for releasing references like this.

+

One important caveat of this second approach is that it will keep the object +alive indefinitely if the main loop is stopped before the GSource is +invoked, which may be undesirable.

+
+
+
+

Functions

+
+

g_main_loop_new ()

+
GMainLoop *
+g_main_loop_new (GMainContext *context,
+                 gboolean is_running);
+

Creates a new GMainLoop structure.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GMainContext (if NULL, the default context will be used).

[allow-none]

is_running

set to TRUE to indicate that the loop is running. This +is not very important since calling g_main_loop_run() will set this to +TRUE anyway.

 
+
+
+

Returns

+

a new GMainLoop.

+
+
+
+
+

g_main_loop_ref ()

+
GMainLoop *
+g_main_loop_ref (GMainLoop *loop);
+

Increases the reference count on a GMainLoop object by one.

+
+

Parameters

+
+++++ + + + + + +

loop

a GMainLoop

 
+
+
+

Returns

+

loop +

+
+
+
+
+

g_main_loop_unref ()

+
void
+g_main_loop_unref (GMainLoop *loop);
+

Decreases the reference count on a GMainLoop object by one. If +the result is zero, free the loop and free all associated memory.

+
+

Parameters

+
+++++ + + + + + +

loop

a GMainLoop

 
+
+
+
+
+

g_main_loop_run ()

+
void
+g_main_loop_run (GMainLoop *loop);
+

Runs a main loop until g_main_loop_quit() is called on the loop. +If this is called for the thread of the loop's GMainContext, +it will process events from the loop, otherwise it will +simply wait.

+
+

Parameters

+
+++++ + + + + + +

loop

a GMainLoop

 
+
+
+
+
+

g_main_loop_quit ()

+
void
+g_main_loop_quit (GMainLoop *loop);
+

Stops a GMainLoop from running. Any calls to g_main_loop_run() +for the loop will return.

+

Note that sources that have already been dispatched when +g_main_loop_quit() is called will still be executed.

+
+

Parameters

+
+++++ + + + + + +

loop

a GMainLoop

 
+
+
+
+
+

g_main_loop_is_running ()

+
gboolean
+g_main_loop_is_running (GMainLoop *loop);
+

Checks to see if the main loop is currently being run via g_main_loop_run().

+
+

Parameters

+
+++++ + + + + + +

loop

a GMainLoop.

 
+
+
+

Returns

+

TRUE if the mainloop is currently being run.

+
+
+
+
+

g_main_loop_get_context ()

+
GMainContext *
+g_main_loop_get_context (GMainLoop *loop);
+

Returns the GMainContext of loop +.

+
+

Parameters

+
+++++ + + + + + +

loop

a GMainLoop.

 
+
+
+

Returns

+

the GMainContext of loop +.

+

[transfer none]

+
+
+
+
+

g_main_new()

+
#define             g_main_new(is_running)
+
+

g_main_new has been deprecated since version 2.2 and should not be used in newly-written code.

+

Use g_main_loop_new() instead

+
+

Creates a new GMainLoop for th default main context.

+
+

Parameters

+
+++++ + + + + + +

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.

 
+
+
+

Returns

+

a new GMainLoop

+
+
+
+
+

g_main_destroy()

+
#define             g_main_destroy(loop)
+
+

g_main_destroy has been deprecated since version 2.2 and should not be used in newly-written code.

+

Use g_main_loop_unref() instead

+
+

Frees the memory allocated for the GMainLoop.

+
+

Parameters

+
+++++ + + + + + +

loop

a GMainLoop

 
+
+
+
+
+

g_main_run()

+
#define             g_main_run(loop)
+
+

g_main_run has been deprecated since version 2.2 and should not be used in newly-written code.

+

Use g_main_loop_run() instead

+
+

Runs a main loop until it stops running.

+
+

Parameters

+
+++++ + + + + + +

loop

a GMainLoop

 
+
+
+
+
+

g_main_quit()

+
#define             g_main_quit(loop)
+
+

g_main_quit has been deprecated since version 2.2 and should not be used in newly-written code.

+

Use g_main_loop_quit() instead

+
+

Stops the GMainLoop. +If g_main_run() was called to run the GMainLoop, it will now return.

+
+

Parameters

+
+++++ + + + + + +

loop

a GMainLoop

 
+
+
+
+
+

g_main_is_running()

+
#define             g_main_is_running(loop)
+
+

g_main_is_running has been deprecated since version 2.2 and should not be used in newly-written code.

+

Use g_main_loop_is_running() instead

+
+

Checks if the main loop is running.

+
+

Parameters

+
+++++ + + + + + +

loop

a GMainLoop

 
+
+
+

Returns

+

TRUE if the main loop is running

+
+
+
+
+

g_main_context_new ()

+
GMainContext *
+g_main_context_new (void);
+

Creates a new GMainContext structure.

+
+

Returns

+

the new GMainContext

+
+
+
+
+

g_main_context_ref ()

+
GMainContext *
+g_main_context_ref (GMainContext *context);
+

Increases the reference count on a GMainContext object by one.

+
+

Parameters

+
+++++ + + + + + +

context

a GMainContext

 
+
+
+

Returns

+

the context +that was passed in (since 2.6)

+
+
+
+
+

g_main_context_unref ()

+
void
+g_main_context_unref (GMainContext *context);
+

Decreases the reference count on a GMainContext object by one. If +the result is zero, free the context and free all associated memory.

+
+

Parameters

+
+++++ + + + + + +

context

a GMainContext

 
+
+
+
+
+

g_main_context_default ()

+
GMainContext *
+g_main_context_default (void);
+

Returns the global default main context. This is the main context +used for main loop functions when a main loop is not explicitly +specified, and corresponds to the "main" main loop. See also +g_main_context_get_thread_default().

+
+

Returns

+

the global default main context.

+

[transfer none]

+
+
+
+
+

g_main_context_iteration ()

+
gboolean
+g_main_context_iteration (GMainContext *context,
+                          gboolean may_block);
+

Runs a single iteration for the given main loop. This involves +checking to see if any event sources are ready to be processed, +then if no events sources are ready and may_block + is TRUE, waiting +for a source to become ready, then dispatching the highest priority +events sources that are ready. Otherwise, if may_block + is FALSE +sources are not waited to become ready, only those highest priority +events sources will be dispatched (if any), that are ready at this +given moment without further waiting.

+

Note that even when may_block + is TRUE, it is still possible for +g_main_context_iteration() to return FALSE, since the wait may +be interrupted for other reasons than an event source becoming ready.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GMainContext (if NULL, the default context will be used).

[allow-none]

may_block

whether the call may block.

 
+
+
+

Returns

+

TRUE if events were dispatched.

+
+
+
+
+

g_main_iteration()

+
#define             g_main_iteration(may_block)
+
+

g_main_iteration has been deprecated since version 2.2 and should not be used in newly-written code.

+

Use g_main_context_iteration() instead.

+
+

Runs a single iteration for the default GMainContext.

+
+

Parameters

+
+++++ + + + + + +

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.

 
+
+
+

Returns

+

TRUE if more events are pending.

+
+
+
+
+

g_main_context_pending ()

+
gboolean
+g_main_context_pending (GMainContext *context);
+

Checks if any sources have pending events for the given context.

+
+

Parameters

+
+++++ + + + + + +

context

a GMainContext (if NULL, the default context will be used).

[allow-none]
+
+
+

Returns

+

TRUE if events are pending.

+
+
+
+
+

g_main_pending

+
#define             g_main_pending()
+

g_main_pending is deprecated and should not be used in newly-written code.

+

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.

+
+
+
+
+

g_main_context_find_source_by_id ()

+
GSource *
+g_main_context_find_source_by_id (GMainContext *context,
+                                  guint source_id);
+

Finds a GSource given a pair of context and ID.

+

It is a programmer error to attempt to lookup a non-existent source.

+

More specifically: source IDs can be reissued after a source has been +destroyed and therefore it is never valid to use this function with a +source ID which may have already been removed. An example is when +scheduling an idle to run in another thread with g_idle_add(): the +idle may already have run and been removed by the time this function +is called on its (now invalid) source ID. This source ID may have +been reissued, leading to the operation being performed against the +wrong source.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GMainContext (if NULL, the default context will be used).

[allow-none]

source_id

the source ID, as returned by g_source_get_id().

 
+
+
+

Returns

+

the GSource.

+

[transfer none]

+
+
+
+
+

g_main_context_find_source_by_user_data ()

+
GSource *
+g_main_context_find_source_by_user_data
+                               (GMainContext *context,
+                                gpointer user_data);
+

Finds a source with the given user data for the callback. If +multiple sources exist with the same user data, the first +one found will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GMainContext

 

user_data

the user_data for the callback.

 
+
+
+

Returns

+

the source, if one was found, otherwise NULL.

+

[transfer none]

+
+
+
+
+

g_main_context_find_source_by_funcs_user_data ()

+
GSource *
+g_main_context_find_source_by_funcs_user_data
+                               (GMainContext *context,
+                                GSourceFuncs *funcs,
+                                gpointer user_data);
+

Finds a source with the given source functions and user data. If +multiple sources exist with the same source function and user data, +the first one found will be returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

context

a GMainContext (if NULL, the default context will be used).

[allow-none]

funcs

the source_funcs +passed to g_source_new().

 

user_data

the user data from the callback.

 
+
+
+

Returns

+

the source, if one was found, otherwise NULL.

+

[transfer none]

+
+
+
+
+

g_main_context_wakeup ()

+
void
+g_main_context_wakeup (GMainContext *context);
+

If context + is currently blocking in g_main_context_iteration() +waiting for a source to become ready, cause it to stop blocking +and return. Otherwise, cause the next invocation of +g_main_context_iteration() to return without blocking.

+

This API is useful for low-level control over GMainContext; for +example, integrating it with main loop implementations such as +GMainLoop.

+

Another related use for this function is when implementing a main +loop with a termination condition, computed from multiple threads:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
#define NUM_TASKS 10
+static volatile gint tasks_remaining = NUM_TASKS;
+...
+ 
+while (g_atomic_int_get (&tasks_remaining) != 0)
+  g_main_context_iteration (NULL, TRUE);
+
+ +

+

Then in a thread:

+
+ + + + + + + +
1
+2
+3
+4
perform_work();
+
+if (g_atomic_int_dec_and_test (&tasks_remaining))
+  g_main_context_wakeup (NULL);
+
+ +

+
+

Parameters

+
+++++ + + + + + +

context

a GMainContext

 
+
+
+
+
+

g_main_context_acquire ()

+
gboolean
+g_main_context_acquire (GMainContext *context);
+

Tries to become the owner of the specified context. +If some other thread is the owner of the context, +returns FALSE immediately. Ownership is properly +recursive: the owner can require ownership again +and will release ownership when g_main_context_release() +is called as many times as g_main_context_acquire().

+

You must be the owner of a context before you +can call g_main_context_prepare(), g_main_context_query(), +g_main_context_check(), g_main_context_dispatch().

+
+

Parameters

+
+++++ + + + + + +

context

a GMainContext

 
+
+
+

Returns

+

TRUE if the operation succeeded, and +this thread is now the owner of context +.

+
+
+
+
+

g_main_context_release ()

+
void
+g_main_context_release (GMainContext *context);
+

Releases ownership of a context previously acquired by this thread +with g_main_context_acquire(). If the context was acquired multiple +times, the ownership will be released only when g_main_context_release() +is called as many times as it was acquired.

+
+

Parameters

+
+++++ + + + + + +

context

a GMainContext

 
+
+
+
+
+

g_main_context_is_owner ()

+
gboolean
+g_main_context_is_owner (GMainContext *context);
+

Determines whether this thread holds the (recursive) +ownership of this GMainContext. This is useful to +know before waiting on another thread that may be +blocking to get ownership of context +.

+
+

Parameters

+
+++++ + + + + + +

context

a GMainContext

 
+
+
+

Returns

+

TRUE if current thread is owner of context +.

+
+

Since: 2.10

+
+
+
+

g_main_context_wait ()

+
gboolean
+g_main_context_wait (GMainContext *context,
+                     GCond *cond,
+                     GMutex *mutex);
+

Tries to become the owner of the specified context, +as with g_main_context_acquire(). But if another thread +is the owner, atomically drop mutex + and wait on cond + until +that owner releases ownership or until cond + is signaled, then +try again (once) to become the owner.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

context

a GMainContext

 

cond

a condition variable

 

mutex

a mutex, currently held

 
+
+
+

Returns

+

TRUE if the operation succeeded, and +this thread is now the owner of context +.

+
+
+
+
+

g_main_context_prepare ()

+
gboolean
+g_main_context_prepare (GMainContext *context,
+                        gint *priority);
+

Prepares to poll sources within a main loop. The resulting information +for polling is determined by calling g_main_context_query().

+

You must have successfully acquired the context with +g_main_context_acquire() before you may call this function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GMainContext

 

priority

location to store priority of highest priority +source already ready.

 
+
+
+

Returns

+

TRUE if some source is ready to be dispatched +prior to polling.

+
+
+
+
+

g_main_context_query ()

+
gint
+g_main_context_query (GMainContext *context,
+                      gint max_priority,
+                      gint *timeout_,
+                      GPollFD *fds,
+                      gint n_fds);
+

Determines information necessary to poll this main loop.

+

You must have successfully acquired the context with +g_main_context_acquire() before you may call this function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

context

a GMainContext

 

max_priority

maximum priority source to check

 

timeout_

location to store timeout to be used in polling.

[out]

fds

location to +store GPollFD records that need to be polled.

[out caller-allocates][array length=n_fds]

n_fds

length of fds +.

[in]
+
+
+

Returns

+

the number of records actually stored in fds +, +or, if more than n_fds +records need to be stored, the number +of records that need to be stored.

+
+
+
+
+

g_main_context_check ()

+
gint
+g_main_context_check (GMainContext *context,
+                      gint max_priority,
+                      GPollFD *fds,
+                      gint n_fds);
+

Passes the results of polling back to the main loop.

+

You must have successfully acquired the context with +g_main_context_acquire() before you may call this function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

context

a GMainContext

 

max_priority

the maximum numerical priority of sources to check

 

fds

array of GPollFD's that was passed to +the last call to g_main_context_query().

[array length=n_fds]

n_fds

return value of g_main_context_query()

 
+
+
+

Returns

+

TRUE if some sources are ready to be dispatched.

+
+
+
+
+

g_main_context_dispatch ()

+
void
+g_main_context_dispatch (GMainContext *context);
+

Dispatches all pending sources.

+

You must have successfully acquired the context with +g_main_context_acquire() before you may call this function.

+
+

Parameters

+
+++++ + + + + + +

context

a GMainContext

 
+
+
+
+
+

g_main_context_set_poll_func ()

+
void
+g_main_context_set_poll_func (GMainContext *context,
+                              GPollFunc func);
+

Sets the function to use to handle polling of file descriptors. It +will be used instead of the poll() system call +(or GLib's replacement function, which is used where +poll() isn't available).

+

This function could possibly be used to integrate the GLib event +loop with an external event loop.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GMainContext

 

func

the function to call to poll all file descriptors

 
+
+
+
+
+

g_main_context_get_poll_func ()

+
GPollFunc
+g_main_context_get_poll_func (GMainContext *context);
+

Gets the poll function set by g_main_context_set_poll_func().

+
+

Parameters

+
+++++ + + + + + +

context

a GMainContext

 
+
+
+

Returns

+

the poll function

+
+
+
+
+

GPollFunc ()

+
gint
+(*GPollFunc) (GPollFD *ufds,
+              guint nfsd,
+              gint 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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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.

 
+
+
+

Returns

+

the number of GPollFD elements which have events or errors +reported, or -1 if an error occurred.

+
+
+
+
+

g_main_context_add_poll ()

+
void
+g_main_context_add_poll (GMainContext *context,
+                         GPollFD *fd,
+                         gint priority);
+

Adds a file descriptor to the set of file descriptors polled for +this context. This will very seldom be used directly. Instead +a typical event source will use g_source_add_unix_fd() instead.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

context

a GMainContext (or NULL for the default context).

[allow-none]

fd

a GPollFD structure holding information about a file +descriptor to watch.

 

priority

the priority for this file descriptor which should be +the same as the priority used for g_source_attach() to ensure that the +file descriptor is polled whenever the results may be needed.

 
+
+
+
+
+

g_main_context_remove_poll ()

+
void
+g_main_context_remove_poll (GMainContext *context,
+                            GPollFD *fd);
+

Removes file descriptor from the set of file descriptors to be +polled for a particular context.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

context

a GMainContext

 

fd

a GPollFD descriptor previously added with g_main_context_add_poll()

 
+
+
+
+
+

g_main_depth ()

+
gint
+g_main_depth (void);
+

Returns the depth of the stack of calls to +g_main_context_dispatch() on any GMainContext in the current thread. + That is, when called from the toplevel, it gives 0. When +called from within a callback from g_main_context_iteration() +(or g_main_loop_run(), etc.) it returns 1. When called from within +a callback to a recursive call to g_main_context_iteration(), +it returns 2. And so forth.

+

This function is useful in a situation like the following: +Imagine an extremely simple "garbage collected" system.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
static GList *free_list;
+
+gpointer
+allocate_memory (gsize size)
+{ 
+  gpointer result = g_malloc (size);
+  free_list = g_list_prepend (free_list, result);
+  return result;
+}
+
+void
+free_allocated_memory (void)
+{
+  GList *l;
+  for (l = free_list; l; l = l->next);
+    g_free (l->data);
+  g_list_free (free_list);
+  free_list = NULL;
+ }
+
+[...]
+
+while (TRUE); 
+ {
+   g_main_context_iteration (NULL, TRUE);
+   free_allocated_memory();
+  }
+
+ +

+

This works from an application, however, if you want to do the same +thing from a library, it gets more difficult, since you no longer +control the main loop. You might think you can simply use an idle +function to make the call to free_allocated_memory(), but that +doesn't work, since the idle function could be called from a +recursive callback. This can be fixed by using g_main_depth()

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
gpointer
+allocate_memory (gsize size)
+{ 
+  FreeListBlock *block = g_new (FreeListBlock, 1);
+  block->mem = g_malloc (size);
+  block->depth = g_main_depth ();   
+  free_list = g_list_prepend (free_list, block);
+  return block->mem;
+}
+
+void
+free_allocated_memory (void)
+{
+  GList *l;
+  
+  int depth = g_main_depth ();
+  for (l = free_list; l; );
+    {
+      GList *next = l->next;
+      FreeListBlock *block = l->data;
+      if (block->depth > depth)
+        {
+          g_free (block->mem);
+          g_free (block);
+          free_list = g_list_delete_link (free_list, l);
+        }
+              
+      l = next;
+    }
+  }
+
+ +

+

There is a temptation to use g_main_depth() to solve +problems with reentrancy. For instance, while waiting for data +to be received from the network in response to a menu item, +the menu item might be selected again. It might seem that +one could make the menu item's callback return immediately +and do nothing if g_main_depth() returns a value greater than 1. +However, this should be avoided since the user then sees selecting +the menu item do nothing. Furthermore, you'll find yourself adding +these checks all over your code, since there are doubtless many, +many things that the user could do. Instead, you can use the +following techniques:

+
    +
  1. Use gtk_widget_set_sensitive() or modal dialogs to prevent +the user from interacting with elements while the main +loop is recursing.

  2. +
  3. Avoid main loop recursion in situations where you can't handle +arbitrary callbacks. Instead, structure your code so that you +simply return to the main loop and then get called again when +there is more work to do.

  4. +
+
+

Returns

+

The main loop recursion level in the current thread

+
+
+
+
+

g_main_current_source ()

+
GSource *
+g_main_current_source (void);
+

Returns the currently firing source for this thread.

+
+

Returns

+

The currently firing source or NULL.

+

[transfer none]

+
+

Since: 2.12

+
+
+
+

g_main_set_poll_func()

+
#define             g_main_set_poll_func(func)
+
+

g_main_set_poll_func has been deprecated since version 2.2 and should not be used in newly-written code.

+

Use g_main_context_set_poll_func() again

+
+

Sets the function to use for the handle polling of file descriptors +for the default main context.

+
+

Parameters

+
+++++ + + + + + +

func

the function to call to poll all file descriptors

 
+
+
+
+
+

g_main_context_invoke ()

+
void
+g_main_context_invoke (GMainContext *context,
+                       GSourceFunc function,
+                       gpointer data);
+

Invokes a function in such a way that context + is owned during the +invocation of function +.

+

If context + is NULL then the global default main context — as +returned by g_main_context_default() — is used.

+

If context + is owned by the current thread, function + is called +directly. Otherwise, if context + is the thread-default main context +of the current thread and g_main_context_acquire() succeeds, then +function + is called and g_main_context_release() is called +afterwards.

+

In any other case, an idle source is created to call function + and +that source is attached to context + (presumably to be run in another +thread). The idle source is attached with G_PRIORITY_DEFAULT +priority. If you want a different priority, use +g_main_context_invoke_full().

+

Note that, as with normal idle functions, function + should probably +return FALSE. If it returns TRUE, it will be continuously run in a +loop (and may prevent this call from returning).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

context

a GMainContext, or NULL.

[allow-none]

function

function to call

 

data

data to pass to function +

 
+
+

Since: 2.28

+
+
+
+

g_main_context_invoke_full ()

+
void
+g_main_context_invoke_full (GMainContext *context,
+                            gint priority,
+                            GSourceFunc function,
+                            gpointer data,
+                            GDestroyNotify notify);
+

Invokes a function in such a way that context + is owned during the +invocation of function +.

+

This function is the same as g_main_context_invoke() except that it +lets you specify the priority incase function + ends up being +scheduled as an idle and also lets you give a GDestroyNotify for data +.

+

notify + should not assume that it is called from any particular +thread or with any particular context acquired.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

context

a GMainContext, or NULL.

[allow-none]

priority

the priority at which to run function +

 

function

function to call

 

data

data to pass to function +

 

notify

a function to call when data +is no longer in use, or NULL.

[allow-none]
+
+

Since: 2.28

+
+
+
+

g_main_context_get_thread_default ()

+
GMainContext *
+g_main_context_get_thread_default (void);
+

Gets the thread-default GMainContext for this thread. Asynchronous +operations that want to be able to be run in contexts other than +the default one should call this method or +g_main_context_ref_thread_default() to get a GMainContext to add +their GSources to. (Note that even in single-threaded +programs applications may sometimes want to temporarily push a +non-default context, so it is not safe to assume that this will +always return NULL if you are running in the default thread.)

+

If you need to hold a reference on the context, use +g_main_context_ref_thread_default() instead.

+
+

Returns

+

the thread-default GMainContext, or +NULL if the thread-default context is the global default context.

+

[transfer none]

+
+

Since: 2.22

+
+
+
+

g_main_context_ref_thread_default ()

+
GMainContext *
+g_main_context_ref_thread_default (void);
+

Gets the thread-default GMainContext for this thread, as with +g_main_context_get_thread_default(), but also adds a reference to +it with g_main_context_ref(). In addition, unlike +g_main_context_get_thread_default(), if the thread-default context +is the global default context, this will return that GMainContext +(with a ref added to it) rather than returning NULL.

+
+

Returns

+

the thread-default GMainContext. Unref +with g_main_context_unref() when you are done with it.

+

[transfer full]

+
+

Since: 2.32

+
+
+
+

g_main_context_push_thread_default ()

+
void
+g_main_context_push_thread_default (GMainContext *context);
+

Acquires context + and sets it as the thread-default context for the +current thread. This will cause certain asynchronous operations +(such as most gio-based I/O) which are +started in this thread to run under context + and deliver their +results to its main loop, rather than running under the global +default context in the main thread. Note that calling this function +changes the context returned by g_main_context_get_thread_default(), +not the one returned by g_main_context_default(), so it does not affect +the context used by functions like g_idle_add().

+

Normally you would call this function shortly after creating a new +thread, passing it a GMainContext which will be run by a +GMainLoop in that thread, to set a new default context for all +async operations in that thread. (In this case, you don't need to +ever call g_main_context_pop_thread_default().) In some cases +however, you may want to schedule a single operation in a +non-default context, or temporarily use a non-default context in +the main thread. In that case, you can wrap the call to the +asynchronous operation inside a +g_main_context_push_thread_default() / +g_main_context_pop_thread_default() pair, but it is up to you to +ensure that no other asynchronous operations accidentally get +started while the non-default context is active.

+

Beware that libraries that predate this function may not correctly +handle being used from a thread with a thread-default context. Eg, +see g_file_supports_thread_contexts().

+
+

Parameters

+
+++++ + + + + + +

context

a GMainContext, or NULL for the global default context.

[allow-none]
+
+

Since: 2.22

+
+
+
+

g_main_context_pop_thread_default ()

+
void
+g_main_context_pop_thread_default (GMainContext *context);
+

Pops context + off the thread-default context stack (verifying that +it was on the top of the stack).

+
+

Parameters

+
+++++ + + + + + +

context

a GMainContext object, or NULL.

[allow-none]
+
+

Since: 2.22

+
+
+
+

g_timeout_source_new ()

+
GSource *
+g_timeout_source_new (guint interval);
+

Creates a new timeout source.

+

The source will not initially be associated with any GMainContext +and must be added to one with g_source_attach() before it will be +executed.

+

The interval given is in terms of monotonic time, not wall clock +time. See g_get_monotonic_time().

+
+

Parameters

+
+++++ + + + + + +

interval

the timeout interval in milliseconds.

 
+
+
+

Returns

+

the newly-created timeout source

+
+
+
+
+

g_timeout_source_new_seconds ()

+
GSource *
+g_timeout_source_new_seconds (guint interval);
+

Creates a new timeout source.

+

The source will not initially be associated with any GMainContext +and must be added to one with g_source_attach() before it will be +executed.

+

The scheduling granularity/accuracy of this timeout source will be +in seconds.

+

The interval given in terms of monotonic time, not wall clock time. +See g_get_monotonic_time().

+
+

Parameters

+
+++++ + + + + + +

interval

the timeout interval in seconds

 
+
+
+

Returns

+

the newly-created timeout source

+
+

Since: 2.14

+
+
+
+

g_timeout_add ()

+
guint
+g_timeout_add (guint interval,
+               GSourceFunc function,
+               gpointer data);
+

Sets a function to be called at regular intervals, with the default +priority, G_PRIORITY_DEFAULT. The function is called repeatedly +until it returns FALSE, at which point the timeout is automatically +destroyed and the function will not be called again. The first call +to the function will be at the end of the first interval +.

+

Note that timeout functions may be delayed, due to the processing of other +event sources. Thus they should not be relied on for precise timing. +After each call to the timeout function, the time of the next +timeout is recalculated based on the current time and the given interval +(it does not try to 'catch up' time lost in delays).

+

See memory management of sources for details +on how to handle the return value and memory management of data +.

+

If you want to have a timer in the "seconds" range and do not care +about the exact time of the first call of the timer, use the +g_timeout_add_seconds() function; this function allows for more +optimizations and more efficient system power usage.

+

This internally creates a main loop source using g_timeout_source_new() +and attaches it to the global GMainContext using g_source_attach(), so +the callback will be invoked in whichever thread is running that main +context. You can do these steps manually if you need greater control or to +use a custom main context.

+

The interval given is in terms of monotonic time, not wall clock +time. See g_get_monotonic_time().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

interval

the time between calls to the function, in milliseconds +(1/1000ths of a second)

 

function

function to call

 

data

data to pass to function +

 
+
+
+

Returns

+

the ID (greater than 0) of the event source.

+
+
+
+
+

g_timeout_add_full ()

+
guint
+g_timeout_add_full (gint priority,
+                    guint interval,
+                    GSourceFunc function,
+                    gpointer data,
+                    GDestroyNotify notify);
+

Sets a function to be called at regular intervals, with the given +priority. The function is called repeatedly until it returns +FALSE, at which point the timeout is automatically destroyed and +the function will not be called again. The notify + function is +called when the timeout is destroyed. The first call to the +function will be at the end of the first interval +.

+

Note that timeout functions may be delayed, due to the processing of other +event sources. Thus they should not be relied on for precise timing. +After each call to the timeout function, the time of the next +timeout is recalculated based on the current time and the given interval +(it does not try to 'catch up' time lost in delays).

+

See memory management of sources for details +on how to handle the return value and memory management of data +.

+

This internally creates a main loop source using g_timeout_source_new() +and attaches it to the global GMainContext using g_source_attach(), so +the callback will be invoked in whichever thread is running that main +context. You can do these steps manually if you need greater control or to +use a custom main context.

+

The interval given in terms of monotonic time, not wall clock time. +See g_get_monotonic_time().

+

[rename-to g_timeout_add]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

priority

the priority of the timeout source. Typically this will be in +the range between G_PRIORITY_DEFAULT and G_PRIORITY_HIGH.

 

interval

the time between calls to the function, in milliseconds +(1/1000ths of a second)

 

function

function to call

 

data

data to pass to function +

 

notify

function to call when the timeout is removed, or NULL.

[allow-none]
+
+
+

Returns

+

the ID (greater than 0) of the event source.

+
+
+
+
+

g_timeout_add_seconds ()

+
guint
+g_timeout_add_seconds (guint interval,
+                       GSourceFunc function,
+                       gpointer data);
+

Sets a function to be called at regular intervals with the default +priority, G_PRIORITY_DEFAULT. The function is called repeatedly until +it returns FALSE, at which point the timeout is automatically destroyed +and the function will not be called again.

+

This internally creates a main loop source using +g_timeout_source_new_seconds() and attaches it to the main loop context +using g_source_attach(). You can do these steps manually if you need +greater control. Also see g_timeout_add_seconds_full().

+

Note that the first call of the timer may not be precise for timeouts +of one second. If you need finer precision and have such a timeout, +you may want to use g_timeout_add() instead.

+

See memory management of sources for details +on how to handle the return value and memory management of data +.

+

The interval given is in terms of monotonic time, not wall clock +time. See g_get_monotonic_time().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

interval

the time between calls to the function, in seconds

 

function

function to call

 

data

data to pass to function +

 
+
+
+

Returns

+

the ID (greater than 0) of the event source.

+
+

Since: 2.14

+
+
+
+

g_timeout_add_seconds_full ()

+
guint
+g_timeout_add_seconds_full (gint priority,
+                            guint interval,
+                            GSourceFunc function,
+                            gpointer data,
+                            GDestroyNotify notify);
+

Sets a function to be called at regular intervals, with priority +. +The function is called repeatedly until it returns FALSE, at which +point the timeout is automatically destroyed and the function will +not be called again.

+

Unlike g_timeout_add(), this function operates at whole second granularity. +The initial starting point of the timer is determined by the implementation +and the implementation is expected to group multiple timers together so that +they fire all at the same time. +To allow this grouping, the interval + to the first timer is rounded +and can deviate up to one second from the specified interval. +Subsequent timer iterations will generally run at the specified interval.

+

Note that timeout functions may be delayed, due to the processing of other +event sources. Thus they should not be relied on for precise timing. +After each call to the timeout function, the time of the next +timeout is recalculated based on the current time and the given interval +

+

See memory management of sources for details +on how to handle the return value and memory management of data +.

+

If you want timing more precise than whole seconds, use g_timeout_add() +instead.

+

The grouping of timers to fire at the same time results in a more power +and CPU efficient behavior so if your timer is in multiples of seconds +and you don't require the first timer exactly one second from now, the +use of g_timeout_add_seconds() is preferred over g_timeout_add().

+

This internally creates a main loop source using +g_timeout_source_new_seconds() and attaches it to the main loop context +using g_source_attach(). You can do these steps manually if you need +greater control.

+

The interval given is in terms of monotonic time, not wall clock +time. See g_get_monotonic_time().

+

[rename-to g_timeout_add_seconds]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

priority

the priority of the timeout source. Typically this will be in +the range between G_PRIORITY_DEFAULT and G_PRIORITY_HIGH.

 

interval

the time between calls to the function, in seconds

 

function

function to call

 

data

data to pass to function +

 

notify

function to call when the timeout is removed, or NULL.

[allow-none]
+
+
+

Returns

+

the ID (greater than 0) of the event source.

+
+

Since: 2.14

+
+
+
+

g_idle_source_new ()

+
GSource *
+g_idle_source_new (void);
+

Creates a new idle source.

+

The source will not initially be associated with any GMainContext +and must be added to one with g_source_attach() before it will be +executed. Note that the default priority for idle sources is +G_PRIORITY_DEFAULT_IDLE, as compared to other sources which +have a default priority of G_PRIORITY_DEFAULT.

+
+

Returns

+

the newly-created idle source

+
+
+
+
+

g_idle_add ()

+
guint
+g_idle_add (GSourceFunc function,
+            gpointer data);
+

Adds a function to be called whenever there are no higher priority +events pending to the default main loop. The function is given the +default idle priority, G_PRIORITY_DEFAULT_IDLE. If the function +returns FALSE it is automatically removed from the list of event +sources and will not be called again.

+

See memory management of sources for details +on how to handle the return value and memory management of data +.

+

This internally creates a main loop source using g_idle_source_new() +and attaches it to the global GMainContext using g_source_attach(), so +the callback will be invoked in whichever thread is running that main +context. You can do these steps manually if you need greater control or to +use a custom main context.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

function

function to call

 

data

data to pass to function +.

 
+
+
+

Returns

+

the ID (greater than 0) of the event source.

+
+
+
+
+

g_idle_add_full ()

+
guint
+g_idle_add_full (gint priority,
+                 GSourceFunc function,
+                 gpointer data,
+                 GDestroyNotify notify);
+

Adds a function to be called whenever there are no higher priority +events pending. If the function returns FALSE it is automatically +removed from the list of event sources and will not be called again.

+

See memory management of sources for details +on how to handle the return value and memory management of data +.

+

This internally creates a main loop source using g_idle_source_new() +and attaches it to the global GMainContext using g_source_attach(), so +the callback will be invoked in whichever thread is running that main +context. You can do these steps manually if you need greater control or to +use a custom main context.

+

[rename-to g_idle_add]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

priority

the priority of the idle source. Typically this will be in the +range between G_PRIORITY_DEFAULT_IDLE and G_PRIORITY_HIGH_IDLE.

 

function

function to call

 

data

data to pass to function +

 

notify

function to call when the idle is removed, or NULL.

[allow-none]
+
+
+

Returns

+

the ID (greater than 0) of the event source.

+
+
+
+
+

g_idle_remove_by_data ()

+
gboolean
+g_idle_remove_by_data (gpointer data);
+

Removes the idle function with the given data.

+
+

Parameters

+
+++++ + + + + + +

data

the data for the idle source's callback.

 
+
+
+

Returns

+

TRUE if an idle source was found and removed.

+
+
+
+
+

GChildWatchFunc ()

+
void
+(*GChildWatchFunc) (GPid pid,
+                    gint status,
+                    gpointer user_data);
+

Prototype of a GChildWatchSource callback, called when a child +process has exited. To interpret status +, see the documentation +for g_spawn_check_exit_status().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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()

 
+
+
+
+
+

g_child_watch_source_new ()

+
GSource *
+g_child_watch_source_new (GPid pid);
+

Creates a new child_watch source.

+

The source will not initially be associated with any GMainContext +and must be added to one with g_source_attach() before it will be +executed.

+

Note that child watch sources can only be used in conjunction with +g_spawn... when the G_SPAWN_DO_NOT_REAP_CHILD flag is used.

+

Note that on platforms where GPid must be explicitly closed +(see g_spawn_close_pid()) pid + must not be closed while the +source is still active. Typically, you will want to call +g_spawn_close_pid() in the callback function for the source.

+

Note further that using g_child_watch_source_new() is not +compatible with calling waitpid with a nonpositive first +argument in the application. Calling waitpid() for individual +pids will still work fine.

+

Similarly, on POSIX platforms, the pid + passed to this function must +be greater than 0 (i.e. this function must wait for a specific child, +and cannot wait for one of many children by using a nonpositive argument).

+
+

Parameters

+
+++++ + + + + + +

pid

process to watch. On POSIX the positive pid of a child process. On +Windows a handle for a process (which doesn't have to be a child).

 
+
+
+

Returns

+

the newly-created child watch source

+
+

Since: 2.4

+
+
+
+

g_child_watch_add ()

+
guint
+g_child_watch_add (GPid pid,
+                   GChildWatchFunc function,
+                   gpointer data);
+

Sets a function to be called when the child indicated by pid + +exits, at a default priority, G_PRIORITY_DEFAULT.

+

If you obtain pid + from g_spawn_async() or g_spawn_async_with_pipes() +you will need to pass G_SPAWN_DO_NOT_REAP_CHILD as flag to +the spawn function for the child watching to work.

+

Note that on platforms where GPid must be explicitly closed +(see g_spawn_close_pid()) pid + must not be closed while the +source is still active. Typically, you will want to call +g_spawn_close_pid() in the callback function for the source.

+

GLib supports only a single callback per process id.

+

This internally creates a main loop source using +g_child_watch_source_new() and attaches it to the main loop context +using g_source_attach(). You can do these steps manually if you +need greater control.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

pid

process id to watch. On POSIX the positive pid of a child +process. On Windows a handle for a process (which doesn't have to be +a child).

 

function

function to call

 

data

data to pass to function +

 
+
+
+

Returns

+

the ID (greater than 0) of the event source.

+
+

Since: 2.4

+
+
+
+

g_child_watch_add_full ()

+
guint
+g_child_watch_add_full (gint priority,
+                        GPid pid,
+                        GChildWatchFunc function,
+                        gpointer data,
+                        GDestroyNotify notify);
+

Sets a function to be called when the child indicated by pid + +exits, at the priority priority +.

+

If you obtain pid + from g_spawn_async() or g_spawn_async_with_pipes() +you will need to pass G_SPAWN_DO_NOT_REAP_CHILD as flag to +the spawn function for the child watching to work.

+

In many programs, you will want to call g_spawn_check_exit_status() +in the callback to determine whether or not the child exited +successfully.

+

Also, note that on platforms where GPid must be explicitly closed +(see g_spawn_close_pid()) pid + must not be closed while the source +is still active. Typically, you should invoke g_spawn_close_pid() +in the callback function for the source.

+

GLib supports only a single callback per process id.

+

This internally creates a main loop source using +g_child_watch_source_new() and attaches it to the main loop context +using g_source_attach(). You can do these steps manually if you +need greater control.

+

[rename-to g_child_watch_add]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

priority

the priority of the idle source. Typically this will be in the +range between G_PRIORITY_DEFAULT_IDLE and G_PRIORITY_HIGH_IDLE.

 

pid

process to watch. On POSIX the positive pid of a child process. On +Windows a handle for a process (which doesn't have to be a child).

 

function

function to call

 

data

data to pass to function +

 

notify

function to call when the idle is removed, or NULL.

[allow-none]
+
+
+

Returns

+

the ID (greater than 0) of the event source.

+
+

Since: 2.4

+
+
+
+

g_poll ()

+
gint
+g_poll (GPollFD *fds,
+        guint nfds,
+        gint timeout);
+

Polls fds +, as with the poll() system call, but portably. (On +systems that don't have poll(), it is emulated using select().) +This is used internally by GMainContext, but it can be called +directly if you need to block until a file descriptor is ready, but +don't want to run the full main loop.

+

Each element of fds + is a GPollFD describing a single file +descriptor to poll. The fd field indicates the file descriptor, +and the events field indicates the events to poll for. On return, +the revents fields will be filled with the events that actually +occurred.

+

On POSIX systems, the file descriptors in fds + can be any sort of +file descriptor, but the situation is much more complicated on +Windows. If you need to use g_poll() in code that has to run on +Windows, the easiest solution is to construct all of your +GPollFDs with g_io_channel_win32_make_pollfd().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

fds

file descriptors to poll

 

nfds

the number of file descriptors in fds +

 

timeout

amount of time to wait, in milliseconds, or -1 to wait forever

 
+
+
+

Returns

+

the number of entries in fds +whose revents fields +were filled in, or 0 if the operation timed out, or -1 on error or +if the call was interrupted.

+
+

Since: 2.20

+
+
+
+

GSourceDummyMarshal ()

+
void
+(*GSourceDummyMarshal) (void);
+

This is just a placeholder for GClosureMarshal, +which cannot be used here for dependency reasons.

+
+
+
+

g_source_new ()

+
GSource *
+g_source_new (GSourceFuncs *source_funcs,
+              guint struct_size);
+

Creates a new GSource structure. The size is specified to +allow creating structures derived from GSource that contain +additional data. The size passed in must be at least +sizeof (GSource).

+

The source will not initially be associated with any GMainContext +and must be added to one with g_source_attach() before it will be +executed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source_funcs

structure containing functions that implement +the sources behavior.

 

struct_size

size of the GSource structure to create.

 
+
+
+

Returns

+

the newly-created GSource.

+
+
+
+
+

g_source_ref ()

+
GSource *
+g_source_ref (GSource *source);
+

Increases the reference count on a source by one.

+
+

Parameters

+
+++++ + + + + + +

source

a GSource

 
+
+
+

Returns

+

source +

+
+
+
+
+

g_source_unref ()

+
void
+g_source_unref (GSource *source);
+

Decreases the reference count of a source by one. If the +resulting reference count is zero the source and associated +memory will be destroyed.

+
+

Parameters

+
+++++ + + + + + +

source

a GSource

 
+
+
+
+
+

g_source_set_funcs ()

+
void
+g_source_set_funcs (GSource *source,
+                    GSourceFuncs *funcs);
+

Sets the source functions (can be used to override +default implementations) of an unattached source.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source

a GSource

 

funcs

the new GSourceFuncs

 
+
+

Since: 2.12

+
+
+
+

g_source_attach ()

+
guint
+g_source_attach (GSource *source,
+                 GMainContext *context);
+

Adds a GSource to a context + so that it will be executed within +that context. Remove it by calling g_source_destroy().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source

a GSource

 

context

a GMainContext (if NULL, the default context will be used).

[allow-none]
+
+
+

Returns

+

the ID (greater than 0) for the source within the +GMainContext.

+
+
+
+
+

g_source_destroy ()

+
void
+g_source_destroy (GSource *source);
+

Removes a source from its GMainContext, if any, and mark it as +destroyed. The source cannot be subsequently added to another +context. It is safe to call this on sources which have already been +removed from their context.

+
+

Parameters

+
+++++ + + + + + +

source

a GSource

 
+
+
+
+
+

g_source_is_destroyed ()

+
gboolean
+g_source_is_destroyed (GSource *source);
+

Returns whether source + has been destroyed.

+

This is important when you operate upon your objects +from within idle handlers, but may have freed the object +before the dispatch of your idle handler.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
static gboolean 
+idle_callback (gpointer data)
+{
+  SomeWidget *self = data;
+   
+  GDK_THREADS_ENTER ();
+  // do stuff with self
+  self->idle_id = 0;
+  GDK_THREADS_LEAVE ();
+   
+  return G_SOURCE_REMOVE;
+}
+ 
+static void 
+some_widget_do_stuff_later (SomeWidget *self)
+{
+  self->idle_id = g_idle_add (idle_callback, self);
+}
+ 
+static void 
+some_widget_finalize (GObject *object)
+{
+  SomeWidget *self = SOME_WIDGET (object);
+   
+  if (self->idle_id)
+    g_source_remove (self->idle_id);
+   
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+ +

+

This will fail in a multi-threaded application if the +widget is destroyed before the idle handler fires due +to the use after free in the callback. A solution, to +this particular problem, is to check to if the source +has already been destroy within the callback.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
static gboolean 
+idle_callback (gpointer data)
+{
+  SomeWidget *self = data;
+  
+  GDK_THREADS_ENTER ();
+  if (!g_source_is_destroyed (g_main_current_source ()))
+    {
+      // do stuff with self
+    }
+  GDK_THREADS_LEAVE ();
+  
+  return FALSE;
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + +

source

a GSource

 
+
+
+

Returns

+

TRUE if the source has been destroyed

+
+

Since: 2.12

+
+
+
+

g_source_set_priority ()

+
void
+g_source_set_priority (GSource *source,
+                       gint priority);
+

Sets the priority of a source. While the main loop is being run, a +source will be dispatched if it is ready to be dispatched and no +sources at a higher (numerically smaller) priority are ready to be +dispatched.

+

A child source always has the same priority as its parent. It is not +permitted to change the priority of a source once it has been added +as a child of another source.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source

a GSource

 

priority

the new priority.

 
+
+
+
+
+

g_source_get_priority ()

+
gint
+g_source_get_priority (GSource *source);
+

Gets the priority of a source.

+
+

Parameters

+
+++++ + + + + + +

source

a GSource

 
+
+
+

Returns

+

the priority of the source

+
+
+
+
+

g_source_set_can_recurse ()

+
void
+g_source_set_can_recurse (GSource *source,
+                          gboolean can_recurse);
+

Sets whether a source can be called recursively. If can_recurse + is +TRUE, then while the source is being dispatched then this source +will be processed normally. Otherwise, all processing of this +source is blocked until the dispatch function returns.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source

a GSource

 

can_recurse

whether recursion is allowed for this source

 
+
+
+
+
+

g_source_get_can_recurse ()

+
gboolean
+g_source_get_can_recurse (GSource *source);
+

Checks whether a source is allowed to be called recursively. +see g_source_set_can_recurse().

+
+

Parameters

+
+++++ + + + + + +

source

a GSource

 
+
+
+

Returns

+

whether recursion is allowed.

+
+
+
+
+

g_source_get_id ()

+
guint
+g_source_get_id (GSource *source);
+

Returns the numeric ID for a particular source. The ID of a source +is a positive integer which is unique within a particular main loop +context. The reverse +mapping from ID to source is done by g_main_context_find_source_by_id().

+
+

Parameters

+
+++++ + + + + + +

source

a GSource

 
+
+
+

Returns

+

the ID (greater than 0) for the source

+
+
+
+
+

g_source_get_name ()

+
const char *
+g_source_get_name (GSource *source);
+

Gets a name for the source, used in debugging and profiling. The +name may be NULL if it has never been set with g_source_set_name().

+
+

Parameters

+
+++++ + + + + + +

source

a GSource

 
+
+
+

Returns

+

the name of the source

+
+

Since: 2.26

+
+
+
+

g_source_set_name ()

+
void
+g_source_set_name (GSource *source,
+                   const char *name);
+

Sets a name for the source, used in debugging and profiling. +The name defaults to NULL.

+

The source name should describe in a human-readable way +what the source does. For example, "X11 event queue" +or "GTK+ repaint idle handler" or whatever it is.

+

It is permitted to call this function multiple times, but is not +recommended due to the potential performance impact. For example, +one could change the name in the "check" function of a GSourceFuncs +to include details like the event type in the source name.

+

Use caution if changing the name while another thread may be +accessing it with g_source_get_name(); that function does not copy +the value, and changing the value will free it while the other thread +may be attempting to use it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source

a GSource

 

name

debug name for the source

 
+
+

Since: 2.26

+
+
+
+

g_source_set_name_by_id ()

+
void
+g_source_set_name_by_id (guint tag,
+                         const char *name);
+

Sets the name of a source using its ID.

+

This is a convenience utility to set source names from the return +value of g_idle_add(), g_timeout_add(), etc.

+

It is a programmer error to attempt to set the name of a non-existent +source.

+

More specifically: source IDs can be reissued after a source has been +destroyed and therefore it is never valid to use this function with a +source ID which may have already been removed. An example is when +scheduling an idle to run in another thread with g_idle_add(): the +idle may already have run and been removed by the time this function +is called on its (now invalid) source ID. This source ID may have +been reissued, leading to the operation being performed against the +wrong source.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

tag

a GSource ID

 

name

debug name for the source

 
+
+

Since: 2.26

+
+
+
+

g_source_get_context ()

+
GMainContext *
+g_source_get_context (GSource *source);
+

Gets the GMainContext with which the source is associated.

+

You can call this on a source that has been destroyed, provided +that the GMainContext it was attached to still exists (in which +case it will return that GMainContext). In particular, you can +always call this function on the source returned from +g_main_current_source(). But calling this function on a source +whose GMainContext has been destroyed is an error.

+
+

Parameters

+
+++++ + + + + + +

source

a GSource

 
+
+
+

Returns

+

the GMainContext with which the +source is associated, or NULL if the context has not +yet been added to a source.

+

[transfer none][allow-none]

+
+
+
+
+

g_source_set_callback ()

+
void
+g_source_set_callback (GSource *source,
+                       GSourceFunc func,
+                       gpointer data,
+                       GDestroyNotify notify);
+

Sets the callback function for a source. The callback for a source is +called from the source's dispatch function.

+

The exact type of func + depends on the type of source; ie. you +should not count on func + being called with data + as its first +parameter.

+

See memory management of sources for details +on how to handle memory management of data +.

+

Typically, you won't use this function. Instead use functions specific +to the type of source you are using.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

source

the source

 

func

a callback function

 

data

the data to pass to callback function

 

notify

a function to call when data +is no longer in use, or NULL.

[allow-none]
+
+
+
+
+

GSourceFunc ()

+
gboolean
+(*GSourceFunc) (gpointer user_data);
+

Specifies the type of function passed to g_timeout_add(), +g_timeout_add_full(), g_idle_add(), and g_idle_add_full().

+
+

Parameters

+
+++++ + + + + + +

user_data

data passed to the function, set when the source was +created with one of the above functions

 
+
+
+

Returns

+

FALSE if the source should be removed. G_SOURCE_CONTINUE and +G_SOURCE_REMOVE are more memorable names for the return value.

+
+
+
+
+

g_source_set_callback_indirect ()

+
void
+g_source_set_callback_indirect (GSource *source,
+                                gpointer callback_data,
+                                GSourceCallbackFuncs *callback_funcs);
+

Sets the callback function storing the data as a refcounted callback +"object". This is used internally. Note that calling +g_source_set_callback_indirect() assumes +an initial reference count on callback_data +, and thus +callback_funcs->unref + will eventually be called once more +than callback_funcs->ref +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

source

the source

 

callback_data

pointer to callback data "object"

 

callback_funcs

functions for reference counting callback_data +and getting the callback and data

 
+
+
+
+
+

g_source_set_ready_time ()

+
void
+g_source_set_ready_time (GSource *source,
+                         gint64 ready_time);
+

Sets a GSource to be dispatched when the given monotonic time is +reached (or passed). If the monotonic time is in the past (as it +always will be if ready_time + is 0) then the source will be +dispatched immediately.

+

If ready_time + is -1 then the source is never woken up on the basis +of the passage of time.

+

Dispatching the source does not reset the ready time. You should do +so yourself, from the source dispatch function.

+

Note that if you have a pair of sources where the ready time of one +suggests that it will be delivered first but the priority for the +other suggests that it would be delivered first, and the ready time +for both sources is reached during the same main context iteration +then the order of dispatch is undefined.

+

This API is only intended to be used by implementations of GSource. +Do not call this API on a GSource that you did not create.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source

a GSource

 

ready_time

the monotonic time at which the source will be ready, +0 for "immediately", -1 for "never"

 
+
+

Since: 2.36

+
+
+
+

g_source_get_ready_time ()

+
gint64
+g_source_get_ready_time (GSource *source);
+

Gets the "ready time" of source +, as set by +g_source_set_ready_time().

+

Any time before the current monotonic time (including 0) is an +indication that the source will fire immediately.

+
+

Parameters

+
+++++ + + + + + +

source

a GSource

 
+
+
+

Returns

+

the monotonic ready time, -1 for "never"

+
+
+
+
+

g_source_add_unix_fd ()

+
gpointer
+g_source_add_unix_fd (GSource *source,
+                      gint fd,
+                      GIOCondition events);
+

Monitors fd + for the IO events in events +.

+

The tag returned by this function can be used to remove or modify the +monitoring of the fd using g_source_remove_unix_fd() or +g_source_modify_unix_fd().

+

It is not necessary to remove the fd before destroying the source; it +will be cleaned up automatically.

+

This API is only intended to be used by implementations of GSource. +Do not call this API on a GSource that you did not create.

+

As the name suggests, this function is not available on Windows.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

source

a GSource

 

fd

the fd to monitor

 

events

an event mask

 
+
+
+

Returns

+

an opaque tag.

+

[not nullable]

+
+

Since: 2.36

+
+
+
+

g_source_remove_unix_fd ()

+
void
+g_source_remove_unix_fd (GSource *source,
+                         gpointer tag);
+

Reverses the effect of a previous call to g_source_add_unix_fd().

+

You only need to call this if you want to remove an fd from being +watched while keeping the same source around. In the normal case you +will just want to destroy the source.

+

This API is only intended to be used by implementations of GSource. +Do not call this API on a GSource that you did not create.

+

As the name suggests, this function is not available on Windows.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source

a GSource

 

tag

the tag from g_source_add_unix_fd().

[not nullable]
+
+

Since: 2.36

+
+
+
+

g_source_modify_unix_fd ()

+
void
+g_source_modify_unix_fd (GSource *source,
+                         gpointer tag,
+                         GIOCondition new_events);
+

Updates the event mask to watch for the fd identified by tag +.

+

tag + is the tag returned from g_source_add_unix_fd().

+

If you want to remove a fd, don't set its event mask to zero. +Instead, call g_source_remove_unix_fd().

+

This API is only intended to be used by implementations of GSource. +Do not call this API on a GSource that you did not create.

+

As the name suggests, this function is not available on Windows.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

source

a GSource

 

tag

the tag from g_source_add_unix_fd().

[not nullable]

new_events

the new event mask to watch

 
+
+

Since: 2.36

+
+
+
+

g_source_query_unix_fd ()

+
GIOCondition
+g_source_query_unix_fd (GSource *source,
+                        gpointer tag);
+

Queries the events reported for the fd corresponding to tag + on +source + during the last poll.

+

The return value of this function is only defined when the function +is called from the check or dispatch functions for source +.

+

This API is only intended to be used by implementations of GSource. +Do not call this API on a GSource that you did not create.

+

As the name suggests, this function is not available on Windows.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source

a GSource

 

tag

the tag from g_source_add_unix_fd().

[not nullable]
+
+
+

Returns

+

the conditions reported on the fd

+
+

Since: 2.36

+
+
+
+

g_source_add_poll ()

+
void
+g_source_add_poll (GSource *source,
+                   GPollFD *fd);
+

Adds a file descriptor to the set of file descriptors polled for +this source. This is usually combined with g_source_new() to add an +event source. The event source's check function will typically test +the revents + field in the GPollFD struct and return TRUE if events need +to be processed.

+

This API is only intended to be used by implementations of GSource. +Do not call this API on a GSource that you did not create.

+

Using this API forces the linear scanning of event sources on each +main loop iteration. Newly-written event sources should try to use +g_source_add_unix_fd() instead of this API.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source

a GSource

 

fd

a GPollFD structure holding information about a file +descriptor to watch.

 
+
+
+
+
+

g_source_remove_poll ()

+
void
+g_source_remove_poll (GSource *source,
+                      GPollFD *fd);
+

Removes a file descriptor from the set of file descriptors polled for +this source.

+

This API is only intended to be used by implementations of GSource. +Do not call this API on a GSource that you did not create.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source

a GSource

 

fd

a GPollFD structure previously passed to g_source_add_poll().

 
+
+
+
+
+

g_source_add_child_source ()

+
void
+g_source_add_child_source (GSource *source,
+                           GSource *child_source);
+

Adds child_source + to source + as a "polled" source; when source + is +added to a GMainContext, child_source + will be automatically added +with the same priority, when child_source + is triggered, it will +cause source + to dispatch (in addition to calling its own +callback), and when source + is destroyed, it will destroy +child_source + as well. (source + will also still be dispatched if +its own prepare/check functions indicate that it is ready.)

+

If you don't need child_source + to do anything on its own when it +triggers, you can call g_source_set_dummy_callback() on it to set a +callback that does nothing (except return TRUE if appropriate).

+

source + will hold a reference on child_source + while child_source + +is attached to it.

+

This API is only intended to be used by implementations of GSource. +Do not call this API on a GSource that you did not create.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source

a GSource

 

child_source

a second GSource that source +should "poll"

 
+
+

Since: 2.28

+
+
+
+

g_source_remove_child_source ()

+
void
+g_source_remove_child_source (GSource *source,
+                              GSource *child_source);
+

Detaches child_source + from source + and destroys it.

+

This API is only intended to be used by implementations of GSource. +Do not call this API on a GSource that you did not create.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source

a GSource

 

child_source

a GSource previously passed to +g_source_add_child_source().

 
+
+

Since: 2.28

+
+
+
+

g_source_get_time ()

+
gint64
+g_source_get_time (GSource *source);
+

Gets the time to be used when checking this source. The advantage of +calling this function over calling g_get_monotonic_time() directly is +that when checking multiple sources, GLib can cache a single value +instead of having to repeatedly get the system monotonic time.

+

The time here is the system monotonic time, if available, or some +other reasonable alternative otherwise. See g_get_monotonic_time().

+
+

Parameters

+
+++++ + + + + + +

source

a GSource

 
+
+
+

Returns

+

the monotonic time in microseconds

+
+

Since: 2.28

+
+
+
+

g_source_get_current_time ()

+
void
+g_source_get_current_time (GSource *source,
+                           GTimeVal *timeval);
+
+

g_source_get_current_time has been deprecated since version 2.28 and should not be used in newly-written code.

+

use g_source_get_time() instead

+
+

This function ignores source + and is otherwise the same as +g_get_current_time().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source

a GSource

 

timeval

GTimeVal structure in which to store current time.

 
+
+
+
+
+

g_source_remove ()

+
gboolean
+g_source_remove (guint tag);
+

Removes the source with the given id from the default main context.

+

The id of a GSource is given by g_source_get_id(), or will be +returned by the functions g_source_attach(), g_idle_add(), +g_idle_add_full(), g_timeout_add(), g_timeout_add_full(), +g_child_watch_add(), g_child_watch_add_full(), g_io_add_watch(), and +g_io_add_watch_full().

+

See also g_source_destroy(). You must use g_source_destroy() for sources +added to a non-default main context.

+

It is a programmer error to attempt to remove a non-existent source.

+

More specifically: source IDs can be reissued after a source has been +destroyed and therefore it is never valid to use this function with a +source ID which may have already been removed. An example is when +scheduling an idle to run in another thread with g_idle_add(): the +idle may already have run and been removed by the time this function +is called on its (now invalid) source ID. This source ID may have +been reissued, leading to the operation being performed against the +wrong source.

+
+

Parameters

+
+++++ + + + + + +

tag

the ID of the source to remove.

 
+
+
+

Returns

+

For historical reasons, this function always returns TRUE

+
+
+
+
+

g_source_remove_by_funcs_user_data ()

+
gboolean
+g_source_remove_by_funcs_user_data (GSourceFuncs *funcs,
+                                    gpointer user_data);
+

Removes a source from the default main loop context given the +source functions and user data. If multiple sources exist with the +same source functions and user data, only one will be destroyed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

funcs

The source_funcs +passed to g_source_new()

 

user_data

the user data for the callback

 
+
+
+

Returns

+

TRUE if a source was found and removed.

+
+
+
+
+

g_source_remove_by_user_data ()

+
gboolean
+g_source_remove_by_user_data (gpointer user_data);
+

Removes a source from the default main loop context given the user +data for the callback. If multiple sources exist with the same user +data, only one will be destroyed.

+
+

Parameters

+
+++++ + + + + + +

user_data

the user_data for the callback.

 
+
+
+

Returns

+

TRUE if a source was found and removed.

+
+
+
+
+

Types and Values

+
+

GMainLoop

+
typedef struct _GMainLoop GMainLoop;
+

The GMainLoop struct is an opaque data type +representing the main event loop of a GLib or GTK+ application.

+
+
+
+

G_PRIORITY_HIGH

+
#define G_PRIORITY_HIGH            -100
+
+

Use this for high priority event sources.

+

It is not used within GLib or GTK+.

+
+
+
+

G_PRIORITY_DEFAULT

+
#define G_PRIORITY_DEFAULT          0
+
+

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.

+
+
+
+

G_PRIORITY_HIGH_IDLE

+
#define G_PRIORITY_HIGH_IDLE        100
+
+

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.)

+
+
+
+

G_PRIORITY_DEFAULT_IDLE

+
#define G_PRIORITY_DEFAULT_IDLE     200
+
+

Use this for default priority idle functions.

+

In GLib this priority is used when adding idle functions with +g_idle_add().

+
+
+
+

G_PRIORITY_LOW

+
#define G_PRIORITY_LOW              300
+
+

Use this for very low priority background tasks.

+

It is not used within GLib or GTK+.

+
+
+
+

G_SOURCE_CONTINUE

+
#define G_SOURCE_CONTINUE       TRUE
+
+

Use this macro as the return value of a GSourceFunc to leave +the GSource in the main loop.

+

Since: 2.32

+
+
+
+

G_SOURCE_REMOVE

+
#define G_SOURCE_REMOVE         FALSE
+
+

Use this macro as the return value of a GSourceFunc to remove +the GSource from the main loop.

+

Since: 2.32

+
+
+
+

GMainContext

+
typedef struct _GMainContext GMainContext;
+

The GMainContext struct is an opaque data +type representing a set of sources to be handled in a main loop.

+
+
+
+

GPid

+
typedef int 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.

+
+
+
+

struct GPollFD

+
struct GPollFD {
+#if defined (G_OS_WIN32) && GLIB_SIZEOF_VOID_P == 8
+#endif
+#else
+  gint		fd;
+#endif
+  gushort 	events;
+  gushort 	revents;
+};
+
+

Represents a file descriptor, which events to poll for, and which events +occurred.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

gint fd;

the file descriptor to poll (or a HANDLE on Win32)

 

gushort 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.

 

gushort revents;

a bitwise combination of flags from GIOCondition, returned +from the poll() function to indicate which events occurred.

 
+
+
+
+
+

G_POLLFD_FORMAT

+
#define G_POLLFD_FORMAT "%d"
+
+

A format specifier that can be used in printf()-style format strings +when printing the fd + member of a GPollFD.

+
+
+
+

struct GSource

+
struct GSource {
+};
+
+

The GSource struct is an opaque data type +representing an event source.

+
+
+
+

struct GSourceFuncs

+
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 */
+};
+
+

The GSourceFuncs 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.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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. The return value of the +dispatch +function should be G_SOURCE_REMOVE if the source should be +removed or G_SOURCE_CONTINUE to keep it.

 

finalize ()

Called when the source is finalized.

 
+
+
+
+
+

struct GSourceCallbackFuncs

+
struct GSourceCallbackFuncs {
+  void (*ref)   (gpointer     cb_data);
+  void (*unref) (gpointer     cb_data);
+  void (*get)   (gpointer     cb_data,
+                 GSource     *source, 
+                 GSourceFunc *func,
+                 gpointer    *data);
+};
+
+

The GSourceCallbackFuncs struct contains +functions for managing callback objects.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

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.

 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Thread-Pools.html b/docs/reference/glib/html/glib-Thread-Pools.html new file mode 100644 index 0000000..b891d22 --- /dev/null +++ b/docs/reference/glib/html/glib-Thread-Pools.html @@ -0,0 +1,808 @@ + + + + +Thread Pools: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Thread Pools

+

Thread Pools — pools of threads to execute work concurrently

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GThreadPool * + +g_thread_pool_new () +
+gboolean + +g_thread_pool_push () +
+gboolean + +g_thread_pool_set_max_threads () +
+gint + +g_thread_pool_get_max_threads () +
+guint + +g_thread_pool_get_num_threads () +
+guint + +g_thread_pool_unprocessed () +
+void + +g_thread_pool_free () +
+void + +g_thread_pool_set_max_unused_threads () +
+gint + +g_thread_pool_get_max_unused_threads () +
+guint + +g_thread_pool_get_num_unused_threads () +
+void + +g_thread_pool_stop_unused_threads () +
+void + +g_thread_pool_set_sort_function () +
+void + +g_thread_pool_set_max_idle_time () +
+guint + +g_thread_pool_get_max_idle_time () +
+gboolean + +g_thread_pool_move_to_front () +
+
+
+

Types and Values

+
++++ + + + + +
structGThreadPool
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

Sometimes you wish to asynchronously fork out the execution of work +and continue working in your own thread. If that will happen often, +the overhead of starting and destroying a thread each time might be +too high. In such cases reusing already started threads seems like a +good idea. And it indeed is, but implementing this can be tedious +and error-prone.

+

Therefore GLib provides thread pools for your convenience. An added +advantage is, that the threads can be shared between the different +subsystems of your program, when they are using GLib.

+

To create a new thread pool, you use g_thread_pool_new(). +It is destroyed by g_thread_pool_free().

+

If you want to execute a certain task within a thread pool, +you call g_thread_pool_push().

+

To get the current number of running threads you call +g_thread_pool_get_num_threads(). To get the number of still +unprocessed tasks you call g_thread_pool_unprocessed(). To control +the maximal number of threads for a thread pool, you use +g_thread_pool_get_max_threads() and g_thread_pool_set_max_threads().

+

Finally you can control the number of unused threads, that are kept +alive by GLib for future use. The current number can be fetched with +g_thread_pool_get_num_unused_threads(). The maximal number can be +controlled by g_thread_pool_get_max_unused_threads() and +g_thread_pool_set_max_unused_threads(). All currently unused threads +can be stopped by calling g_thread_pool_stop_unused_threads().

+
+
+

Functions

+
+

g_thread_pool_new ()

+
GThreadPool *
+g_thread_pool_new (GFunc func,
+                   gpointer user_data,
+                   gint max_threads,
+                   gboolean exclusive,
+                   GError **error);
+

This function creates a new thread pool.

+

Whenever you call g_thread_pool_push(), either a new thread is +created or an unused one is reused. At most max_threads + threads +are running concurrently for this thread pool. max_threads + = -1 +allows unlimited threads to be created for this thread pool. The +newly created or reused thread now executes the function func + +with the two arguments. The first one is the parameter to +g_thread_pool_push() and the second one is user_data +.

+

The parameter exclusive + determines whether the thread pool owns +all threads exclusive or shares them with other thread pools. +If exclusive + is TRUE, max_threads + threads are started +immediately and they will run exclusively for this thread pool +until it is destroyed by g_thread_pool_free(). If exclusive + is +FALSE, threads are created when needed and shared between all +non-exclusive thread pools. This implies that max_threads + may +not be -1 for exclusive thread pools. Besides, exclusive thread +pools are not affected by g_thread_pool_set_max_idle_time() +since their threads are never considered idle and returned to the +global pool.

+

error + can be NULL to ignore errors, or non-NULL to report +errors. An error can only occur when exclusive + is set to TRUE +and not all max_threads + threads could be created. +See GThreadError for possible errors that may occur. +Note, even in case of error a valid GThreadPool is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

func

a function to execute in the threads of the new thread pool

 

user_data

user data that is handed over to func +every time it +is called

 

max_threads

the maximal number of threads to execute concurrently +in the new thread pool, -1 means no limit

 

exclusive

should this thread pool be exclusive?

 

error

return location for error, or NULL

 
+
+
+

Returns

+

the new GThreadPool

+
+
+
+
+

g_thread_pool_push ()

+
gboolean
+g_thread_pool_push (GThreadPool *pool,
+                    gpointer data,
+                    GError **error);
+

Inserts data + into the list of tasks to be executed by pool +.

+

When the number of currently running threads is lower than the +maximal allowed number of threads, a new thread is started (or +reused) with the properties given to g_thread_pool_new(). +Otherwise, data + stays in the queue until a thread in this pool +finishes its previous task and processes data +.

+

error + can be NULL to ignore errors, or non-NULL to report +errors. An error can only occur when a new thread couldn't be +created. In that case data + is simply appended to the queue of +work to do.

+

Before version 2.32, this function did not return a success status.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

pool

a GThreadPool

 

data

a new task for pool +

 

error

return location for error, or NULL

 
+
+
+

Returns

+

TRUE on success, FALSE if an error occurred

+
+
+
+
+

g_thread_pool_set_max_threads ()

+
gboolean
+g_thread_pool_set_max_threads (GThreadPool *pool,
+                               gint max_threads,
+                               GError **error);
+

Sets the maximal allowed number of threads for pool +. +A value of -1 means that the maximal number of threads +is unlimited. If pool + is an exclusive thread pool, setting +the maximal number of threads to -1 is not allowed.

+

Setting max_threads + to 0 means stopping all work for pool +. +It is effectively frozen until max_threads + is set to a non-zero +value again.

+

A thread is never terminated while calling func +, as supplied by +g_thread_pool_new(). Instead the maximal number of threads only +has effect for the allocation of new threads in g_thread_pool_push(). +A new thread is allocated, whenever the number of currently +running threads in pool + is smaller than the maximal number.

+

error + can be NULL to ignore errors, or non-NULL to report +errors. An error can only occur when a new thread couldn't be +created.

+

Before version 2.32, this function did not return a success status.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

pool

a GThreadPool

 

max_threads

a new maximal number of threads for pool +, +or -1 for unlimited

 

error

return location for error, or NULL

 
+
+
+

Returns

+

TRUE on success, FALSE if an error occurred

+
+
+
+
+

g_thread_pool_get_max_threads ()

+
gint
+g_thread_pool_get_max_threads (GThreadPool *pool);
+

Returns the maximal number of threads for pool +.

+
+

Parameters

+
+++++ + + + + + +

pool

a GThreadPool

 
+
+
+

Returns

+

the maximal number of threads

+
+
+
+
+

g_thread_pool_get_num_threads ()

+
guint
+g_thread_pool_get_num_threads (GThreadPool *pool);
+

Returns the number of threads currently running in pool +.

+
+

Parameters

+
+++++ + + + + + +

pool

a GThreadPool

 
+
+
+

Returns

+

the number of threads currently running

+
+
+
+
+

g_thread_pool_unprocessed ()

+
guint
+g_thread_pool_unprocessed (GThreadPool *pool);
+

Returns the number of tasks still unprocessed in pool +.

+
+

Parameters

+
+++++ + + + + + +

pool

a GThreadPool

 
+
+
+

Returns

+

the number of unprocessed tasks

+
+
+
+
+

g_thread_pool_free ()

+
void
+g_thread_pool_free (GThreadPool *pool,
+                    gboolean immediate,
+                    gboolean wait_);
+

Frees all resources allocated for pool +.

+

If immediate + is TRUE, no new task is processed for pool +. +Otherwise pool + is not freed before the last task is processed. +Note however, that no thread of this pool is interrupted while +processing a task. Instead at least all still running threads +can finish their tasks before the pool + is freed.

+

If wait_ + is TRUE, the functions does not return before all +tasks to be processed (dependent on immediate +, whether all +or only the currently running) are ready. +Otherwise the function returns immediately.

+

After calling this function pool + must not be used anymore.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

pool

a GThreadPool

 

immediate

should pool +shut down immediately?

 

wait_

should the function wait for all tasks to be finished?

 
+
+
+
+
+

g_thread_pool_set_max_unused_threads ()

+
void
+g_thread_pool_set_max_unused_threads (gint max_threads);
+

Sets the maximal number of unused threads to max_threads +. +If max_threads + is -1, no limit is imposed on the number +of unused threads.

+

The default value is 2.

+
+

Parameters

+
+++++ + + + + + +

max_threads

maximal number of unused threads

 
+
+
+
+
+

g_thread_pool_get_max_unused_threads ()

+
gint
+g_thread_pool_get_max_unused_threads (void);
+

Returns the maximal allowed number of unused threads.

+
+

Returns

+

the maximal number of unused threads

+
+
+
+
+

g_thread_pool_get_num_unused_threads ()

+
guint
+g_thread_pool_get_num_unused_threads (void);
+

Returns the number of currently unused threads.

+
+

Returns

+

the number of currently unused threads

+
+
+
+
+

g_thread_pool_stop_unused_threads ()

+
void
+g_thread_pool_stop_unused_threads (void);
+

Stops all currently unused threads. This does not change the +maximal number of unused threads. This function can be used to +regularly stop all unused threads e.g. from g_timeout_add().

+
+
+
+

g_thread_pool_set_sort_function ()

+
void
+g_thread_pool_set_sort_function (GThreadPool *pool,
+                                 GCompareDataFunc func,
+                                 gpointer user_data);
+

Sets the function used to sort the list of tasks. This allows the +tasks to be processed by a priority determined by func +, and not +just in the order in which they were added to the pool.

+

Note, if the maximum number of threads is more than 1, the order +that threads are executed cannot be guaranteed 100%. Threads are +scheduled by the operating system and are executed at random. It +cannot be assumed that threads are executed in the order they are +created.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

pool

a GThreadPool

 

func

the GCompareDataFunc used to sort the list of tasks. +This function is passed two tasks. It should return +0 if the order in which they are handled does not matter, +a negative value if the first task should be processed before +the second or a positive value if the second task should be +processed first.

 

user_data

user data passed to func +

 
+
+

Since: 2.10

+
+
+
+

g_thread_pool_set_max_idle_time ()

+
void
+g_thread_pool_set_max_idle_time (guint interval);
+

This function will set the maximum interval + that a thread +waiting in the pool for new tasks can be idle for before +being stopped. This function is similar to calling +g_thread_pool_stop_unused_threads() on a regular timeout, +except this is done on a per thread basis.

+

By setting interval + to 0, idle threads will not be stopped.

+

The default value is 15000 (15 seconds).

+
+

Parameters

+
+++++ + + + + + +

interval

the maximum interval +(in milliseconds) +a thread can be idle

 
+
+

Since: 2.10

+
+
+
+

g_thread_pool_get_max_idle_time ()

+
guint
+g_thread_pool_get_max_idle_time (void);
+

This function will return the maximum interval + that a +thread will wait in the thread pool for new tasks before +being stopped.

+

If this function returns 0, threads waiting in the thread +pool for new work are not stopped.

+
+

Returns

+

the maximum interval +(milliseconds) to wait +for new tasks in the thread pool before stopping the +thread

+
+

Since: 2.10

+
+
+
+

g_thread_pool_move_to_front ()

+
gboolean
+g_thread_pool_move_to_front (GThreadPool *pool,
+                             gpointer data);
+

Moves the item to the front of the queue of unprocessed +items, so that it will be processed next.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

pool

a GThreadPool

 

data

an unprocessed item in the pool

 
+
+
+

Returns

+

TRUE if the item was found and moved

+
+

Since: 2.46

+
+
+
+

Types and Values

+
+

struct GThreadPool

+
struct GThreadPool {
+  GFunc func;
+  gpointer user_data;
+  gboolean exclusive;
+};
+
+

The GThreadPool struct represents a thread pool. It has three +public read-only members, but the underlying struct is bigger, +so you must not copy this struct.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GFunc func;

the function to execute in the threads of this pool

 

gpointer user_data;

the user data for the threads of this pool

 

gboolean exclusive;

are all threads exclusive to this pool

 
+
+
+
+
+

See Also

+

GThread

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Threads.html b/docs/reference/glib/html/glib-Threads.html new file mode 100644 index 0000000..47697f9 --- /dev/null +++ b/docs/reference/glib/html/glib-Threads.html @@ -0,0 +1,3323 @@ + + + + +Threads: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Threads

+

Threads — portable support for threads, mutexes, locks, + conditions and thread private data

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gpointer + +(*GThreadFunc) () +
+GThread * + +g_thread_new () +
+GThread * + +g_thread_try_new () +
+GThread * + +g_thread_ref () +
+void + +g_thread_unref () +
+gpointer + +g_thread_join () +
+void + +g_thread_yield () +
+void + +g_thread_exit () +
+GThread * + +g_thread_self () +
+void + +g_mutex_init () +
+void + +g_mutex_clear () +
+void + +g_mutex_lock () +
+gboolean + +g_mutex_trylock () +
+void + +g_mutex_unlock () +
+GMutexLocker * + +g_mutex_locker_new () +
+void + +g_mutex_locker_free () +
#define +G_LOCK_DEFINE() +
#define +G_LOCK_DEFINE_STATIC() +
#define +G_LOCK_EXTERN() +
#define +G_LOCK() +
#define +G_TRYLOCK() +
#define +G_UNLOCK() +
+void + +g_rec_mutex_init () +
+void + +g_rec_mutex_clear () +
+void + +g_rec_mutex_lock () +
+gboolean + +g_rec_mutex_trylock () +
+void + +g_rec_mutex_unlock () +
+void + +g_rw_lock_init () +
+void + +g_rw_lock_clear () +
+void + +g_rw_lock_writer_lock () +
+gboolean + +g_rw_lock_writer_trylock () +
+void + +g_rw_lock_writer_unlock () +
+void + +g_rw_lock_reader_lock () +
+gboolean + +g_rw_lock_reader_trylock () +
+void + +g_rw_lock_reader_unlock () +
+void + +g_cond_init () +
+void + +g_cond_clear () +
+void + +g_cond_wait () +
+gboolean + +g_cond_timed_wait () +
+gboolean + +g_cond_wait_until () +
+void + +g_cond_signal () +
+void + +g_cond_broadcast () +
#define +G_PRIVATE_INIT() +
+gpointer + +g_private_get () +
+void + +g_private_set () +
+void + +g_private_replace () +
#define +g_once() +
+gboolean + +g_once_init_enter () +
+void + +g_once_init_leave () +
+void + +g_bit_lock () +
+gboolean + +g_bit_trylock () +
+void + +g_bit_unlock () +
+void + +g_pointer_bit_lock () +
+gboolean + +g_pointer_bit_trylock () +
+void + +g_pointer_bit_unlock () +
+guint + +g_get_num_processors () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#defineG_THREAD_ERROR
enumGThreadError
 GThread
unionGMutex
typedefGMutexLocker
structGRecMutex
structGRWLock
structGCond
structGPrivate
structGOnce
enumGOnceStatus
#defineG_ONCE_INIT
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

Threads act almost like processes, but unlike processes all threads +of one process share the same memory. This is good, as it provides +easy communication between the involved threads via this shared +memory, and it is bad, because strange things (so called +"Heisenbugs") might happen if the program is not carefully designed. +In particular, due to the concurrent nature of threads, no +assumptions on the order of execution of code running in different +threads can be made, unless order is explicitly forced by the +programmer through synchronization primitives.

+

The aim of the thread-related functions in GLib is to provide a +portable means for writing multi-threaded software. There are +primitives for mutexes to protect the access to portions of memory +(GMutex, GRecMutex and GRWLock). There is a facility to use +individual bits for locks (g_bit_lock()). There are primitives +for condition variables to allow synchronization of threads (GCond). +There are primitives for thread-private data - data that every +thread has a private instance of (GPrivate). There are facilities +for one-time initialization (GOnce, g_once_init_enter()). Finally, +there are primitives to create and manage threads (GThread).

+

The GLib threading system used to be initialized with g_thread_init(). +This is no longer necessary. Since version 2.32, the GLib threading +system is automatically initialized at the start of your program, +and all thread-creation functions and synchronization primitives +are available right away.

+

Note that it is not safe to assume that your program has no threads +even if you don't call g_thread_new() yourself. GLib and GIO can +and will create threads for their own purposes in some cases, such +as when using g_unix_signal_source_new() or when using GDBus.

+

Originally, UNIX did not have threads, and therefore some traditional +UNIX APIs are problematic in threaded programs. Some notable examples +are

+
    +
  • C library functions that return data in statically allocated +buffers, such as strtok() or strerror(). For many of these, +there are thread-safe variants with a _r suffix, or you can +look at corresponding GLib APIs (like g_strsplit() or g_strerror()).

  • +
  • The functions setenv() and unsetenv() manipulate the process +environment in a not thread-safe way, and may interfere with getenv() +calls in other threads. Note that getenv() calls may be hidden behind +other APIs. For example, GNU gettext() calls getenv() under the +covers. In general, it is best to treat the environment as readonly. +If you absolutely have to modify the environment, do it early in +main(), when no other threads are around yet.

  • +
  • The setlocale() function changes the locale for the entire process, +affecting all threads. Temporary changes to the locale are often made +to change the behavior of string scanning or formatting functions +like scanf() or printf(). GLib offers a number of string APIs +(like g_ascii_formatd() or g_ascii_strtod()) that can often be +used as an alternative. Or you can use the uselocale() function +to change the locale only for the current thread.

  • +
  • The fork() function only takes the calling thread into the child's +copy of the process image. If other threads were executing in critical +sections they could have left mutexes locked which could easily +cause deadlocks in the new child. For this reason, you should +call exit() or exec() as soon as possible in the child and only +make signal-safe library calls before that.

  • +
  • The daemon() function uses fork() in a way contrary to what is +described above. It should not be used with GLib programs.

  • +
+

GLib itself is internally completely thread-safe (all global data is +automatically locked), but individual data structure instances are +not automatically locked for performance reasons. For example, +you must coordinate accesses to the same GHashTable from multiple +threads. The two notable exceptions from this rule are GMainLoop +and GAsyncQueue, which are thread-safe and need no further +application-level locking to be accessed from multiple threads. +Most refcounting functions such as g_object_ref() are also thread-safe.

+

A common use for GThreads is to move a long-running blocking operation out +of the main thread and into a worker thread. For GLib functions, such as +single GIO operations, this is not necessary, and complicates the code. +Instead, the …_async() version of the function should be used from the main +thread, eliminating the need for locking and synchronisation between multiple +threads. If an operation does need to be moved to a worker thread, consider +using g_task_run_in_thread(), or a GThreadPool. GThreadPool is often a +better choice than GThread, as it handles thread reuse and task queueing; +GTask uses this internally.

+

However, if multiple blocking operations need to be performed in sequence, +and it is not possible to use GTask for them, moving them to a worker thread +can clarify the code.

+
+
+

Functions

+
+

GThreadFunc ()

+
gpointer
+(*GThreadFunc) (gpointer data);
+

Specifies the type of the func + functions passed to g_thread_new() +or g_thread_try_new().

+
+

Parameters

+
+++++ + + + + + +

data

data passed to the thread

 
+
+
+

Returns

+

the return value of the thread

+
+
+
+
+

g_thread_new ()

+
GThread *
+g_thread_new (const gchar *name,
+              GThreadFunc func,
+              gpointer data);
+

This function creates a new thread. The new thread starts by invoking +func + with the argument data. The thread will run until func + returns +or until g_thread_exit() is called from the new thread. The return value +of func + becomes the return value of the thread, which can be obtained +with g_thread_join().

+

The name + can be useful for discriminating threads in a debugger. +It is not used for other purposes and does not have to be unique. +Some systems restrict the length of name + to 16 bytes.

+

If the thread can not be created the program aborts. See +g_thread_try_new() if you want to attempt to deal with failures.

+

If you are using threads to offload (potentially many) short-lived tasks, +GThreadPool may be more appropriate than manually spawning and tracking +multiple GThreads.

+

To free the struct returned by this function, use g_thread_unref(). +Note that g_thread_join() implicitly unrefs the GThread as well.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

name

an (optional) name for the new thread.

[allow-none]

func

a function to execute in the new thread

 

data

an argument to supply to the new thread

 
+
+
+

Returns

+

the new GThread

+
+

Since: 2.32

+
+
+
+

g_thread_try_new ()

+
GThread *
+g_thread_try_new (const gchar *name,
+                  GThreadFunc func,
+                  gpointer data,
+                  GError **error);
+

This function is the same as g_thread_new() except that +it allows for the possibility of failure.

+

If a thread can not be created (due to resource limits), +error + is set and NULL is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

name

an (optional) name for the new thread.

[allow-none]

func

a function to execute in the new thread

 

data

an argument to supply to the new thread

 

error

return location for error, or NULL

 
+
+
+

Returns

+

the new GThread, or NULL if an error occurred

+
+

Since: 2.32

+
+
+
+

g_thread_ref ()

+
GThread *
+g_thread_ref (GThread *thread);
+

Increase the reference count on thread +.

+
+

Parameters

+
+++++ + + + + + +

thread

a GThread

 
+
+
+

Returns

+

a new reference to thread +

+
+

Since: 2.32

+
+
+
+

g_thread_unref ()

+
void
+g_thread_unref (GThread *thread);
+

Decrease the reference count on thread +, possibly freeing all +resources associated with it.

+

Note that each thread holds a reference to its GThread while +it is running, so it is safe to drop your own reference to it +if you don't need it anymore.

+
+

Parameters

+
+++++ + + + + + +

thread

a GThread

 
+
+

Since: 2.32

+
+
+
+

g_thread_join ()

+
gpointer
+g_thread_join (GThread *thread);
+

Waits until thread + finishes, i.e. the function func +, as +given to g_thread_new(), returns or g_thread_exit() is called. +If thread + has already terminated, then g_thread_join() +returns immediately.

+

Any thread can wait for any other thread by calling g_thread_join(), +not just its 'creator'. Calling g_thread_join() from multiple threads +for the same thread + leads to undefined behaviour.

+

The value returned by func + or given to g_thread_exit() is +returned by this function.

+

g_thread_join() consumes the reference to the passed-in thread +. +This will usually cause the GThread struct and associated resources +to be freed. Use g_thread_ref() to obtain an extra reference if you +want to keep the GThread alive beyond the g_thread_join() call.

+
+

Parameters

+
+++++ + + + + + +

thread

a GThread

 
+
+
+

Returns

+

the return value of the thread

+
+
+
+
+

g_thread_yield ()

+
void
+g_thread_yield ();
+

Causes the calling thread to voluntarily relinquish the CPU, so +that other threads can run.

+

This function is often used as a method to make busy wait less evil.

+
+
+
+

g_thread_exit ()

+
void
+g_thread_exit (gpointer retval);
+

Terminates the current thread.

+

If another thread is waiting for us using g_thread_join() then the +waiting thread will be woken up and get retval + as the return value +of g_thread_join().

+

Calling g_thread_exit() with a parameter retval + is equivalent to +returning retval + from the function func +, as given to g_thread_new().

+

You must only call g_thread_exit() from a thread that you created +yourself with g_thread_new() or related APIs. You must not call +this function from a thread created with another threading library +or or from within a GThreadPool.

+
+

Parameters

+
+++++ + + + + + +

retval

the return value of this thread

 
+
+
+
+
+

g_thread_self ()

+
GThread *
+g_thread_self (void);
+

This function returns the GThread corresponding to the +current thread. Note that this function does not increase +the reference count of the returned struct.

+

This function will return a GThread even for threads that +were not created by GLib (i.e. those created by other threading +APIs). This may be useful for thread identification purposes +(i.e. comparisons) but you must not use GLib functions (such +as g_thread_join()) on these threads.

+
+

Returns

+

the GThread representing the current thread

+
+
+
+
+

g_mutex_init ()

+
void
+g_mutex_init (GMutex *mutex);
+

Initializes a GMutex so that it can be used.

+

This function is useful to initialize a mutex that has been +allocated on the stack, or as part of a larger structure. +It is not necessary to initialize a mutex that has been +statically allocated.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
typedef struct {
+  GMutex m;
+  ...
+} Blob;
+
+Blob *b;
+
+b = g_new (Blob, 1);
+g_mutex_init (&b->m);
+
+ +

+

To undo the effect of g_mutex_init() when a mutex is no longer +needed, use g_mutex_clear().

+

Calling g_mutex_init() on an already initialized GMutex leads +to undefined behaviour.

+
+

Parameters

+
+++++ + + + + + +

mutex

an uninitialized GMutex

 
+
+

Since: 2.32

+
+
+
+

g_mutex_clear ()

+
void
+g_mutex_clear (GMutex *mutex);
+

Frees the resources allocated to a mutex with g_mutex_init().

+

This function should not be used with a GMutex that has been +statically allocated.

+

Calling g_mutex_clear() on a locked mutex leads to undefined +behaviour.

+

Sine: 2.32

+
+

Parameters

+
+++++ + + + + + +

mutex

an initialized GMutex

 
+
+
+
+
+

g_mutex_lock ()

+
void
+g_mutex_lock (GMutex *mutex);
+

Locks mutex +. If mutex + is already locked by another thread, the +current thread will block until mutex + is unlocked by the other +thread.

+

GMutex is neither guaranteed to be recursive nor to be +non-recursive. As such, calling g_mutex_lock() on a GMutex that has +already been locked by the same thread results in undefined behaviour +(including but not limited to deadlocks).

+
+

Parameters

+
+++++ + + + + + +

mutex

a GMutex

 
+
+
+
+
+

g_mutex_trylock ()

+
gboolean
+g_mutex_trylock (GMutex *mutex);
+

Tries to lock mutex +. If mutex + is already locked by another thread, +it immediately returns FALSE. Otherwise it locks mutex + and returns +TRUE.

+

GMutex is neither guaranteed to be recursive nor to be +non-recursive. As such, calling g_mutex_lock() on a GMutex that has +already been locked by the same thread results in undefined behaviour +(including but not limited to deadlocks or arbitrary return values).

+
+

Parameters

+
+++++ + + + + + +

mutex

a GMutex

 
+
+
+

Returns

+

TRUE if mutex +could be locked

+
+
+
+
+

g_mutex_unlock ()

+
void
+g_mutex_unlock (GMutex *mutex);
+

Unlocks mutex +. If another thread is blocked in a g_mutex_lock() +call for mutex +, it will become unblocked and can lock mutex + itself.

+

Calling g_mutex_unlock() on a mutex that is not locked by the +current thread leads to undefined behaviour.

+
+

Parameters

+
+++++ + + + + + +

mutex

a GMutex

 
+
+
+
+
+

g_mutex_locker_new ()

+
GMutexLocker *
+g_mutex_locker_new (GMutex *mutex);
+

Lock mutex + and return a new GMutexLocker. Unlock with +g_mutex_locker_free(). Using g_mutex_unlock() on mutex + +while a GMutexLocker exists can lead to undefined behaviour.

+

This is intended to be used with g_autoptr(). Note that g_autoptr() +is only available when using GCC or clang, so the following example +will only work with those compilers:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
typedef struct
+{
+  ...
+  GMutex mutex;
+  ...
+} MyObject;
+
+static void
+my_object_do_stuff (MyObject *self)
+{
+  g_autoptr(GMutexLocker) locker = g_mutex_locker_new (&self->mutex);
+
+  // Code with mutex locked here
+
+  if (cond)
+    // No need to unlock
+    return;
+
+  // Optionally early unlock
+  g_clear_pointer (&locker, g_mutex_locker_free);
+
+  // Code with mutex unlocked here
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + +

mutex

a mutex to lock

 
+
+
+

Returns

+

a GMutexLocker

+
+

Since: 2.44

+
+
+
+

g_mutex_locker_free ()

+
void
+g_mutex_locker_free (GMutexLocker *locker);
+

Unlock locker +'s mutex. See g_mutex_locker_new() for details.

+
+

Parameters

+
+++++ + + + + + +

locker

a GMutexLocker

 
+
+

Since: 2.44

+
+
+
+

G_LOCK_DEFINE()

+
#define G_LOCK_DEFINE(name)    
+
+

The G_LOCK_ macros provide a convenient interface to GMutex. +G_LOCK_DEFINE defines a lock. It can appear in any place where +variable definitions may appear in programs, i.e. in the first block +of a function or outside of functions. The name + parameter will be +mangled to get the name of the GMutex. This means that you +can use names of existing variables as the parameter - e.g. the name +of the variable you intend to protect with the lock. Look at our +give_me_next_number() example using the G_LOCK macros:

+

Here is an example for using the G_LOCK convenience macros:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
G_LOCK_DEFINE (current_number);
+
+int
+give_me_next_number (void)
+{
+  static int current_number = 0;
+  int ret_val;
+
+  G_LOCK (current_number);
+  ret_val = current_number = calc_next_number (current_number);
+  G_UNLOCK (current_number);
+
+  return ret_val;
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + +

name

the name of the lock

 
+
+
+
+
+

G_LOCK_DEFINE_STATIC()

+
#define G_LOCK_DEFINE_STATIC(name)
+
+

This works like G_LOCK_DEFINE, but it creates a static object.

+
+

Parameters

+
+++++ + + + + + +

name

the name of the lock

 
+
+
+
+
+

G_LOCK_EXTERN()

+
#define G_LOCK_EXTERN(name)    
+
+

This declares a lock, that is defined with G_LOCK_DEFINE in another +module.

+
+

Parameters

+
+++++ + + + + + +

name

the name of the lock

 
+
+
+
+
+

G_LOCK()

+
#define G_LOCK(name)
+
+

Works like g_mutex_lock(), but for a lock defined with +G_LOCK_DEFINE.

+
+

Parameters

+
+++++ + + + + + +

name

the name of the lock

 
+
+
+
+
+

G_TRYLOCK()

+
#define G_TRYLOCK(name)
+
+

Works like g_mutex_trylock(), but for a lock defined with +G_LOCK_DEFINE.

+
+

Parameters

+
+++++ + + + + + +

name

the name of the lock

 
+
+
+

Returns

+

TRUE, if the lock could be locked.

+
+
+
+
+

G_UNLOCK()

+
#define G_UNLOCK(name)
+
+

Works like g_mutex_unlock(), but for a lock defined with +G_LOCK_DEFINE.

+
+

Parameters

+
+++++ + + + + + +

name

the name of the lock

 
+
+
+
+
+

g_rec_mutex_init ()

+
void
+g_rec_mutex_init (GRecMutex *rec_mutex);
+

Initializes a GRecMutex so that it can be used.

+

This function is useful to initialize a recursive mutex +that has been allocated on the stack, or as part of a larger +structure.

+

It is not necessary to initialise a recursive mutex that has been +statically allocated.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
typedef struct {
+  GRecMutex m;
+  ...
+} Blob;
+
+Blob *b;
+
+b = g_new (Blob, 1);
+g_rec_mutex_init (&b->m);
+
+ +

+

Calling g_rec_mutex_init() on an already initialized GRecMutex +leads to undefined behaviour.

+

To undo the effect of g_rec_mutex_init() when a recursive mutex +is no longer needed, use g_rec_mutex_clear().

+
+

Parameters

+
+++++ + + + + + +

rec_mutex

an uninitialized GRecMutex

 
+
+

Since: 2.32

+
+
+
+

g_rec_mutex_clear ()

+
void
+g_rec_mutex_clear (GRecMutex *rec_mutex);
+

Frees the resources allocated to a recursive mutex with +g_rec_mutex_init().

+

This function should not be used with a GRecMutex that has been +statically allocated.

+

Calling g_rec_mutex_clear() on a locked recursive mutex leads +to undefined behaviour.

+

Sine: 2.32

+
+

Parameters

+
+++++ + + + + + +

rec_mutex

an initialized GRecMutex

 
+
+
+
+
+

g_rec_mutex_lock ()

+
void
+g_rec_mutex_lock (GRecMutex *rec_mutex);
+

Locks rec_mutex +. If rec_mutex + is already locked by another +thread, the current thread will block until rec_mutex + is +unlocked by the other thread. If rec_mutex + is already locked +by the current thread, the 'lock count' of rec_mutex + is increased. +The mutex will only become available again when it is unlocked +as many times as it has been locked.

+
+

Parameters

+
+++++ + + + + + +

rec_mutex

a GRecMutex

 
+
+

Since: 2.32

+
+
+
+

g_rec_mutex_trylock ()

+
gboolean
+g_rec_mutex_trylock (GRecMutex *rec_mutex);
+

Tries to lock rec_mutex +. If rec_mutex + is already locked +by another thread, it immediately returns FALSE. Otherwise +it locks rec_mutex + and returns TRUE.

+
+

Parameters

+
+++++ + + + + + +

rec_mutex

a GRecMutex

 
+
+
+

Returns

+

TRUE if rec_mutex +could be locked

+
+

Since: 2.32

+
+
+
+

g_rec_mutex_unlock ()

+
void
+g_rec_mutex_unlock (GRecMutex *rec_mutex);
+

Unlocks rec_mutex +. If another thread is blocked in a +g_rec_mutex_lock() call for rec_mutex +, it will become unblocked +and can lock rec_mutex + itself.

+

Calling g_rec_mutex_unlock() on a recursive mutex that is not +locked by the current thread leads to undefined behaviour.

+
+

Parameters

+
+++++ + + + + + +

rec_mutex

a GRecMutex

 
+
+

Since: 2.32

+
+
+
+

g_rw_lock_init ()

+
void
+g_rw_lock_init (GRWLock *rw_lock);
+

Initializes a GRWLock so that it can be used.

+

This function is useful to initialize a lock that has been +allocated on the stack, or as part of a larger structure. It is not +necessary to initialise a reader-writer lock that has been statically +allocated.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
typedef struct {
+  GRWLock l;
+  ...
+} Blob;
+
+Blob *b;
+
+b = g_new (Blob, 1);
+g_rw_lock_init (&b->l);
+
+ +

+

To undo the effect of g_rw_lock_init() when a lock is no longer +needed, use g_rw_lock_clear().

+

Calling g_rw_lock_init() on an already initialized GRWLock leads +to undefined behaviour.

+
+

Parameters

+
+++++ + + + + + +

rw_lock

an uninitialized GRWLock

 
+
+

Since: 2.32

+
+
+
+

g_rw_lock_clear ()

+
void
+g_rw_lock_clear (GRWLock *rw_lock);
+

Frees the resources allocated to a lock with g_rw_lock_init().

+

This function should not be used with a GRWLock that has been +statically allocated.

+

Calling g_rw_lock_clear() when any thread holds the lock +leads to undefined behaviour.

+

Sine: 2.32

+
+

Parameters

+
+++++ + + + + + +

rw_lock

an initialized GRWLock

 
+
+
+
+
+

g_rw_lock_writer_lock ()

+
void
+g_rw_lock_writer_lock (GRWLock *rw_lock);
+

Obtain a write lock on rw_lock +. If any thread already holds +a read or write lock on rw_lock +, the current thread will block +until all other threads have dropped their locks on rw_lock +.

+
+

Parameters

+
+++++ + + + + + +

rw_lock

a GRWLock

 
+
+

Since: 2.32

+
+
+
+

g_rw_lock_writer_trylock ()

+
gboolean
+g_rw_lock_writer_trylock (GRWLock *rw_lock);
+

Tries to obtain a write lock on rw_lock +. If any other thread holds +a read or write lock on rw_lock +, it immediately returns FALSE. +Otherwise it locks rw_lock + and returns TRUE.

+
+

Parameters

+
+++++ + + + + + +

rw_lock

a GRWLock

 
+
+
+

Returns

+

TRUE if rw_lock +could be locked

+
+

Since: 2.32

+
+
+
+

g_rw_lock_writer_unlock ()

+
void
+g_rw_lock_writer_unlock (GRWLock *rw_lock);
+

Release a write lock on rw_lock +.

+

Calling g_rw_lock_writer_unlock() on a lock that is not held +by the current thread leads to undefined behaviour.

+
+

Parameters

+
+++++ + + + + + +

rw_lock

a GRWLock

 
+
+

Since: 2.32

+
+
+
+

g_rw_lock_reader_lock ()

+
void
+g_rw_lock_reader_lock (GRWLock *rw_lock);
+

Obtain a read lock on rw_lock +. If another thread currently holds +the write lock on rw_lock + or blocks waiting for it, the current +thread will block. Read locks can be taken recursively.

+

It is implementation-defined how many threads are allowed to +hold read locks on the same lock simultaneously.

+
+

Parameters

+
+++++ + + + + + +

rw_lock

a GRWLock

 
+
+

Since: 2.32

+
+
+
+

g_rw_lock_reader_trylock ()

+
gboolean
+g_rw_lock_reader_trylock (GRWLock *rw_lock);
+

Tries to obtain a read lock on rw_lock + and returns TRUE if +the read lock was successfully obtained. Otherwise it +returns FALSE.

+
+

Parameters

+
+++++ + + + + + +

rw_lock

a GRWLock

 
+
+
+

Returns

+

TRUE if rw_lock +could be locked

+
+

Since: 2.32

+
+
+
+

g_rw_lock_reader_unlock ()

+
void
+g_rw_lock_reader_unlock (GRWLock *rw_lock);
+

Release a read lock on rw_lock +.

+

Calling g_rw_lock_reader_unlock() on a lock that is not held +by the current thread leads to undefined behaviour.

+
+

Parameters

+
+++++ + + + + + +

rw_lock

a GRWLock

 
+
+

Since: 2.32

+
+
+
+

g_cond_init ()

+
void
+g_cond_init (GCond *cond);
+

Initialises a GCond so that it can be used.

+

This function is useful to initialise a GCond that has been +allocated as part of a larger structure. It is not necessary to +initialise a GCond that has been statically allocated.

+

To undo the effect of g_cond_init() when a GCond is no longer +needed, use g_cond_clear().

+

Calling g_cond_init() on an already-initialised GCond leads +to undefined behaviour.

+
+

Parameters

+
+++++ + + + + + +

cond

an uninitialized GCond

 
+
+

Since: 2.32

+
+
+
+

g_cond_clear ()

+
void
+g_cond_clear (GCond *cond);
+

Frees the resources allocated to a GCond with g_cond_init().

+

This function should not be used with a GCond that has been +statically allocated.

+

Calling g_cond_clear() for a GCond on which threads are +blocking leads to undefined behaviour.

+
+

Parameters

+
+++++ + + + + + +

cond

an initialised GCond

 
+
+

Since: 2.32

+
+
+
+

g_cond_wait ()

+
void
+g_cond_wait (GCond *cond,
+             GMutex *mutex);
+

Atomically releases mutex + and waits until cond + is signalled. +When this function returns, mutex + is locked again and owned by the +calling thread.

+

When using condition variables, it is possible that a spurious wakeup +may occur (ie: g_cond_wait() returns even though g_cond_signal() was +not called). It's also possible that a stolen wakeup may occur. +This is when g_cond_signal() is called, but another thread acquires +mutex + before this thread and modifies the state of the program in +such a way that when g_cond_wait() is able to return, the expected +condition is no longer met.

+

For this reason, g_cond_wait() must always be used in a loop. See +the documentation for GCond for a complete example.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cond

a GCond

 

mutex

a GMutex that is currently locked

 
+
+
+
+
+

g_cond_timed_wait ()

+
gboolean
+g_cond_timed_wait (GCond *cond,
+                   GMutex *mutex,
+                   GTimeVal *abs_time);
+
+

g_cond_timed_wait has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_cond_wait_until() instead.

+
+

Waits until this thread is woken up on cond +, but not longer than +until the time specified by abs_time +. The mutex + is unlocked before +falling asleep and locked again before resuming.

+

If abs_time + is NULL, g_cond_timed_wait() acts like g_cond_wait().

+

This function can be used even if g_thread_init() has not yet been +called, and, in that case, will immediately return TRUE.

+

To easily calculate abs_time + a combination of g_get_current_time() +and g_time_val_add() can be used.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

cond

a GCond

 

mutex

a GMutex that is currently locked

 

abs_time

a GTimeVal, determining the final time

 
+
+
+

Returns

+

TRUE if cond +was signalled, or FALSE on timeout

+
+
+
+
+

g_cond_wait_until ()

+
gboolean
+g_cond_wait_until (GCond *cond,
+                   GMutex *mutex,
+                   gint64 end_time);
+

Waits until either cond + is signalled or end_time + has passed.

+

As with g_cond_wait() it is possible that a spurious or stolen wakeup +could occur. For that reason, waiting on a condition variable should +always be in a loop, based on an explicitly-checked predicate.

+

TRUE is returned if the condition variable was signalled (or in the +case of a spurious wakeup). FALSE is returned if end_time + has +passed.

+

The following code shows how to correctly perform a timed wait on a +condition variable (extending the example presented in the +documentation for GCond):

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
gpointer
+pop_data_timed (void)
+{
+  gint64 end_time;
+  gpointer data;
+
+  g_mutex_lock (&data_mutex);
+
+  end_time = g_get_monotonic_time () + 5 * G_TIME_SPAN_SECOND;
+  while (!current_data)
+    if (!g_cond_wait_until (&data_cond, &data_mutex, end_time))
+      {
+        // timeout has passed.
+        g_mutex_unlock (&data_mutex);
+        return NULL;
+      }
+
+  // there is data for us
+  data = current_data;
+  current_data = NULL;
+
+  g_mutex_unlock (&data_mutex);
+
+  return data;
+}
+
+ +

+

Notice that the end time is calculated once, before entering the +loop and reused. This is the motivation behind the use of absolute +time on this API -- if a relative time of 5 seconds were passed +directly to the call and a spurious wakeup occurred, the program would +have to start over waiting again (which would lead to a total wait +time of more than 5 seconds).

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

cond

a GCond

 

mutex

a GMutex that is currently locked

 

end_time

the monotonic time to wait until

 
+
+
+

Returns

+

TRUE on a signal, FALSE on a timeout

+
+

Since: 2.32

+
+
+
+

g_cond_signal ()

+
void
+g_cond_signal (GCond *cond);
+

If threads are waiting for cond +, at least one of them is unblocked. +If no threads are waiting for cond +, this function has no effect. +It is good practice to hold the same lock as the waiting thread +while calling this function, though not required.

+
+

Parameters

+
+++++ + + + + + +

cond

a GCond

 
+
+
+
+
+

g_cond_broadcast ()

+
void
+g_cond_broadcast (GCond *cond);
+

If threads are waiting for cond +, all of them are unblocked. +If no threads are waiting for cond +, this function has no effect. +It is good practice to lock the same mutex as the waiting threads +while calling this function, though not required.

+
+

Parameters

+
+++++ + + + + + +

cond

a GCond

 
+
+
+
+
+

G_PRIVATE_INIT()

+
#define G_PRIVATE_INIT(notify)
+
+

A macro to assist with the static initialisation of a GPrivate.

+

This macro is useful for the case that a GDestroyNotify function +should be associated the key. This is needed when the key will be +used to point at memory that should be deallocated when the thread +exits.

+

Additionally, the GDestroyNotify will also be called on the previous +value stored in the key when g_private_replace() is used.

+

If no GDestroyNotify is needed, then use of this macro is not +required -- if the GPrivate is declared in static scope then it will +be properly initialised by default (ie: to all zeros). See the +examples below.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
static GPrivate name_key = G_PRIVATE_INIT (g_free);
+
+// return value should not be freed
+const gchar *
+get_local_name (void)
+{
+  return g_private_get (&name_key);
+}
+
+void
+set_local_name (const gchar *name)
+{
+  g_private_replace (&name_key, g_strdup (name));
+}
+
+
+static GPrivate count_key;   // no free function
+
+gint
+get_local_count (void)
+{
+  return GPOINTER_TO_INT (g_private_get (&count_key));
+}
+
+void
+set_local_count (gint count)
+{
+  g_private_set (&count_key, GINT_TO_POINTER (count));
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + +

notify

a GDestroyNotify

 
+
+

Since: 2.32

+
+
+
+

g_private_get ()

+
gpointer
+g_private_get (GPrivate *key);
+

Returns the current value of the thread local variable key +.

+

If the value has not yet been set in this thread, NULL is returned. +Values are never copied between threads (when a new thread is +created, for example).

+
+

Parameters

+
+++++ + + + + + +

key

a GPrivate

 
+
+
+

Returns

+

the thread-local value

+
+
+
+
+

g_private_set ()

+
void
+g_private_set (GPrivate *key,
+               gpointer value);
+

Sets the thread local variable key + to have the value value + in the +current thread.

+

This function differs from g_private_replace() in the following way: +the GDestroyNotify for key + is not called on the old value.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

key

a GPrivate

 

value

the new value

 
+
+
+
+
+

g_private_replace ()

+
void
+g_private_replace (GPrivate *key,
+                   gpointer value);
+

Sets the thread local variable key + to have the value value + in the +current thread.

+

This function differs from g_private_set() in the following way: if +the previous value was non-NULL then the GDestroyNotify handler for +key + is run on it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

key

a GPrivate

 

value

the new value

 
+
+

Since: 2.32

+
+
+
+

g_once()

+
#define             g_once(once, func, arg)
+

The first call to this routine by a process with a given GOnce +struct calls func + with the given argument. Thereafter, subsequent +calls to g_once() with the same GOnce struct do not call func + +again, but return the stored result of the first call. On return +from g_once(), the status of once + will be G_ONCE_STATUS_READY.

+

For example, a mutex or a thread-specific data key must be created +exactly once. In a threaded environment, calling g_once() ensures +that the initialization is serialized across multiple threads.

+

Calling g_once() recursively on the same GOnce struct in +func + will lead to a deadlock.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
gpointer
+get_debug_flags (void)
+{
+  static GOnce my_once = G_ONCE_INIT;
+
+  g_once (&my_once, parse_debug_flags, NULL);
+
+  return my_once.retval;
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

once

a GOnce structure

 

func

the GThreadFunc function associated to once +. This function +is called only once, regardless of the number of times it and +its associated GOnce struct are passed to g_once().

 

arg

data to be passed to func +

 
+
+

Since: 2.4

+
+
+
+

g_once_init_enter ()

+
gboolean
+g_once_init_enter (volatile void *location);
+

Function to be called when starting a critical initialization +section. The argument location + must point to a static +0-initialized variable that will be set to a value other than 0 at +the end of the initialization section. In combination with +g_once_init_leave() and the unique address value_location +, it can +be ensured that an initialization section will be executed only once +during a program's life time, and that concurrent threads are +blocked until initialization completed. To be used in constructs +like this:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
static gsize initialization_value = 0;
+
+if (g_once_init_enter (&initialization_value))
+  {
+    gsize setup_value = 42; // initialization code here
+
+    g_once_init_leave (&initialization_value, setup_value);
+  }
+
+// use initialization_value here
+
+ +

+
+

Parameters

+
+++++ + + + + + +

location

location of a static initializable variable +containing 0.

[not nullable]
+
+
+

Returns

+

TRUE if the initialization section should be entered, +FALSE and blocks otherwise

+
+

Since: 2.14

+
+
+
+

g_once_init_leave ()

+
void
+g_once_init_leave (volatile void *location,
+                   gsize result);
+

Counterpart to g_once_init_enter(). Expects a location of a static +0-initialized initialization variable, and an initialization value +other than 0. Sets the variable to the initialization value, and +releases concurrent threads blocking in g_once_init_enter() on this +initialization variable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

location

location of a static initializable variable +containing 0.

[not nullable]

result

new non-0 value for *value_location +

 
+
+

Since: 2.14

+
+
+
+

g_bit_lock ()

+
void
+g_bit_lock (volatile gint *address,
+            gint lock_bit);
+

Sets the indicated lock_bit + in address +. If the bit is already +set, this call will block until g_bit_unlock() unsets the +corresponding bit.

+

Attempting to lock on two different bits within the same integer is +not supported and will very probably cause deadlocks.

+

The value of the bit that is set is (1u << bit +). If bit + is not +between 0 and 31 then the result is undefined.

+

This function accesses address + atomically. All other accesses to +address + must be atomic in order for this function to work +reliably.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

address

a pointer to an integer

 

lock_bit

a bit value between 0 and 31

 
+
+

Since: 2.24

+
+
+
+

g_bit_trylock ()

+
gboolean
+g_bit_trylock (volatile gint *address,
+               gint lock_bit);
+

Sets the indicated lock_bit + in address +, returning TRUE if +successful. If the bit is already set, returns FALSE immediately.

+

Attempting to lock on two different bits within the same integer is +not supported.

+

The value of the bit that is set is (1u << bit +). If bit + is not +between 0 and 31 then the result is undefined.

+

This function accesses address + atomically. All other accesses to +address + must be atomic in order for this function to work +reliably.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

address

a pointer to an integer

 

lock_bit

a bit value between 0 and 31

 
+
+
+

Returns

+

TRUE if the lock was acquired

+
+

Since: 2.24

+
+
+
+

g_bit_unlock ()

+
void
+g_bit_unlock (volatile gint *address,
+              gint lock_bit);
+

Clears the indicated lock_bit + in address +. If another thread is +currently blocked in g_bit_lock() on this same bit then it will be +woken up.

+

This function accesses address + atomically. All other accesses to +address + must be atomic in order for this function to work +reliably.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

address

a pointer to an integer

 

lock_bit

a bit value between 0 and 31

 
+
+

Since: 2.24

+
+
+
+

g_pointer_bit_lock ()

+
void
+g_pointer_bit_lock (volatile void *address,
+                    gint lock_bit);
+

This is equivalent to g_bit_lock, but working on pointers (or other +pointer-sized values).

+

For portability reasons, you may only lock on the bottom 32 bits of +the pointer.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

address

a pointer to a gpointer-sized value.

[not nullable]

lock_bit

a bit value between 0 and 31

 
+
+

Since: 2.30

+
+
+
+

g_pointer_bit_trylock ()

+
gboolean
+g_pointer_bit_trylock (volatile void *address,
+                       gint lock_bit);
+

This is equivalent to g_bit_trylock, but working on pointers (or +other pointer-sized values).

+

For portability reasons, you may only lock on the bottom 32 bits of +the pointer.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

address

a pointer to a gpointer-sized value.

[not nullable]

lock_bit

a bit value between 0 and 31

 
+
+
+

Returns

+

TRUE if the lock was acquired

+
+

Since: 2.30

+
+
+
+

g_pointer_bit_unlock ()

+
void
+g_pointer_bit_unlock (volatile void *address,
+                      gint lock_bit);
+

This is equivalent to g_bit_unlock, but working on pointers (or other +pointer-sized values).

+

For portability reasons, you may only lock on the bottom 32 bits of +the pointer.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

address

a pointer to a gpointer-sized value.

[not nullable]

lock_bit

a bit value between 0 and 31

 
+
+

Since: 2.30

+
+
+
+

g_get_num_processors ()

+
guint
+g_get_num_processors (void);
+

Determine the approximate number of threads that the system will +schedule simultaneously for this process. This is intended to be +used as a parameter to g_thread_pool_new() for CPU bound tasks and +similar cases.

+
+

Returns

+

Number of schedulable threads, always greater than 0

+
+

Since: 2.36

+
+
+
+

Types and Values

+
+

G_THREAD_ERROR

+
#define G_THREAD_ERROR g_thread_error_quark ()
+
+

The error domain of the GLib thread subsystem.

+
+
+
+

enum GThreadError

+

Possible errors of thread related functions.

+
+

Members

+
+++++ + + + + + +

G_THREAD_ERROR_AGAIN

+

a thread couldn't be created due to resource + shortage. Try again later.

+
 
+
+
+
+
+

GThread

+
typedef struct {
+} GThread;
+
+

The GThread struct represents a running thread. This struct +is returned by g_thread_new() or g_thread_try_new(). You can +obtain the GThread struct representing the current thread by +calling g_thread_self().

+

GThread is refcounted, see g_thread_ref() and g_thread_unref(). +The thread represented by it holds a reference while it is running, +and g_thread_join() consumes the reference that it is given, so +it is normally not necessary to manage GThread references +explicitly.

+

The structure is opaque -- none of its fields may be directly +accessed.

+
+
+
+

union GMutex

+

The GMutex struct is an opaque data structure to represent a mutex +(mutual exclusion). It can be used to protect data against shared +access.

+

Take for example the following function:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
int
+give_me_next_number (void)
+{
+  static int current_number = 0;
+
+  // now do a very complicated calculation to calculate the new
+  // number, this might for example be a random number generator
+  current_number = calc_next_number (current_number);
+
+  return current_number;
+}
+
+ +

+It is easy to see that this won't work in a multi-threaded +application. There current_number must be protected against shared +access. A GMutex can be used as a solution to this problem:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
int
+give_me_next_number (void)
+{
+  static GMutex mutex;
+  static int current_number = 0;
+  int ret_val;
+
+  g_mutex_lock (&mutex);
+  ret_val = current_number = calc_next_number (current_number);
+  g_mutex_unlock (&mutex);
+
+  return ret_val;
+}
+
+ +

+Notice that the GMutex is not initialised to any particular value. +Its placement in static storage ensures that it will be initialised +to all-zeros, which is appropriate.

+

If a GMutex is placed in other contexts (eg: embedded in a struct) +then it must be explicitly initialised using g_mutex_init().

+

A GMutex should only be accessed via g_mutex_ functions.

+
+
+
+

GMutexLocker

+
typedef void GMutexLocker;
+
+

Opaque type. See g_mutex_locker_new() for details.

+

Since: 2.44

+
+
+
+

struct GRecMutex

+
struct GRecMutex {
+};
+
+

The GRecMutex struct is an opaque data structure to represent a +recursive mutex. It is similar to a GMutex with the difference +that it is possible to lock a GRecMutex multiple times in the same +thread without deadlock. When doing so, care has to be taken to +unlock the recursive mutex as often as it has been locked.

+

If a GRecMutex is allocated in static storage then it can be used +without initialisation. Otherwise, you should call +g_rec_mutex_init() on it and g_rec_mutex_clear() when done.

+

A GRecMutex should only be accessed with the +g_rec_mutex_ functions.

+

Since: 2.32

+
+
+
+

struct GRWLock

+
struct GRWLock {
+};
+
+

The GRWLock struct is an opaque data structure to represent a +reader-writer lock. It is similar to a GMutex in that it allows +multiple threads to coordinate access to a shared resource.

+

The difference to a mutex is that a reader-writer lock discriminates +between read-only ('reader') and full ('writer') access. While only +one thread at a time is allowed write access (by holding the 'writer' +lock via g_rw_lock_writer_lock()), multiple threads can gain +simultaneous read-only access (by holding the 'reader' lock via +g_rw_lock_reader_lock()).

+

Here is an example for an array with access functions:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
GRWLock lock;
+GPtrArray *array;
+
+gpointer
+my_array_get (guint index)
+{
+  gpointer retval = NULL;
+
+  if (!array)
+    return NULL;
+
+  g_rw_lock_reader_lock (&lock);
+  if (index < array->len)
+    retval = g_ptr_array_index (array, index);
+  g_rw_lock_reader_unlock (&lock);
+
+  return retval;
+}
+
+void
+my_array_set (guint index, gpointer data)
+{
+  g_rw_lock_writer_lock (&lock);
+
+  if (!array)
+    array = g_ptr_array_new ();
+
+  if (index >= array->len)
+    g_ptr_array_set_size (array, index+1);
+  g_ptr_array_index (array, index) = data;
+
+  g_rw_lock_writer_unlock (&lock);
+}
+
+ +

+This example shows an array which can be accessed by many readers +(the my_array_get() function) simultaneously, whereas the writers +(the my_array_set() function) will only be allowed one at a time +and only if no readers currently access the array. This is because +of the potentially dangerous resizing of the array. Using these +functions is fully multi-thread safe now.

+

If a GRWLock is allocated in static storage then it can be used +without initialisation. Otherwise, you should call +g_rw_lock_init() on it and g_rw_lock_clear() when done.

+

A GRWLock should only be accessed with the g_rw_lock_ functions.

+

Since: 2.32

+
+
+
+

struct GCond

+
struct GCond {
+};
+
+

The GCond struct is an opaque data structure that represents a +condition. Threads can block on a GCond if they find a certain +condition to be false. If other threads change the state of this +condition they signal the GCond, and that causes the waiting +threads to be woken up.

+

Consider the following example of a shared variable. One or more +threads can wait for data to be published to the variable and when +another thread publishes the data, it can signal one of the waiting +threads to wake up to collect the data.

+

Here is an example for using GCond to block a thread until a condition +is satisfied:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
gpointer current_data = NULL;
+GMutex data_mutex;
+GCond data_cond;
+
+void
+push_data (gpointer data)
+{
+  g_mutex_lock (&data_mutex);
+  current_data = data;
+  g_cond_signal (&data_cond);
+  g_mutex_unlock (&data_mutex);
+}
+
+gpointer
+pop_data (void)
+{
+  gpointer data;
+
+  g_mutex_lock (&data_mutex);
+  while (!current_data)
+    g_cond_wait (&data_cond, &data_mutex);
+  data = current_data;
+  current_data = NULL;
+  g_mutex_unlock (&data_mutex);
+
+  return data;
+}
+
+ +

+Whenever a thread calls pop_data() now, it will wait until +current_data is non-NULL, i.e. until some other thread +has called push_data().

+

The example shows that use of a condition variable must always be +paired with a mutex. Without the use of a mutex, there would be a +race between the check of current_data + by the while loop in +pop_data() and waiting. Specifically, another thread could set +current_data + after the check, and signal the cond (with nobody +waiting on it) before the first thread goes to sleep. GCond is +specifically useful for its ability to release the mutex and go +to sleep atomically.

+

It is also important to use the g_cond_wait() and g_cond_wait_until() +functions only inside a loop which checks for the condition to be +true. See g_cond_wait() for an explanation of why the condition may +not be true even after it returns.

+

If a GCond is allocated in static storage then it can be used +without initialisation. Otherwise, you should call g_cond_init() +on it and g_cond_clear() when done.

+

A GCond should only be accessed via the g_cond_ functions.

+
+
+
+

struct GPrivate

+
struct GPrivate {
+};
+
+

The GPrivate struct is an opaque data structure to represent a +thread-local data key. It is approximately equivalent to the +pthread_setspecific()/pthread_getspecific() APIs on POSIX and to +TlsSetValue()/TlsGetValue() on Windows.

+

If you don't already know why you might want this functionality, +then you probably don't need it.

+

GPrivate is a very limited resource (as far as 128 per program, +shared between all libraries). It is also not possible to destroy a +GPrivate after it has been used. As such, it is only ever acceptable +to use GPrivate in static scope, and even then sparingly so.

+

See G_PRIVATE_INIT() for a couple of examples.

+

The GPrivate structure should be considered opaque. It should only +be accessed via the g_private_ functions.

+
+
+
+

struct GOnce

+
struct GOnce {
+  volatile GOnceStatus status;
+  volatile gpointer retval;
+};
+
+

A GOnce struct controls a one-time initialization function. Any +one-time initialization function must have its own unique GOnce +struct.

+
+

Members

+
+++++ + + + + + + + + + + + + +

volatile GOnceStatus status;

the status of the GOnce

 

volatile gpointer retval;

the value returned by the call to the function, if status +is G_ONCE_STATUS_READY

 
+
+

Since: 2.4

+
+
+
+

enum GOnceStatus

+

The possible statuses of a one-time initialization function +controlled by a GOnce struct.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

G_ONCE_STATUS_NOTCALLED

+

the function has not been called yet.

+
 

G_ONCE_STATUS_PROGRESS

+

the function call is currently in progress.

+
 

G_ONCE_STATUS_READY

+

the function has been called.

+
 
+
+

Since: 2.4

+
+
+
+

G_ONCE_INIT

+
#define G_ONCE_INIT { G_ONCE_STATUS_NOTCALLED, NULL }
+
+

A GOnce must be initialized with this macro before it can be used.

+
+ + + + + + + +
1
GOnce my_once = G_ONCE_INIT;
+
+ +

+

Since: 2.4

+
+
+
+

See Also

+

GThreadPool, GAsyncQueue

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Timers.html b/docs/reference/glib/html/glib-Timers.html new file mode 100644 index 0000000..914a1da --- /dev/null +++ b/docs/reference/glib/html/glib-Timers.html @@ -0,0 +1,316 @@ + + + + +Timers: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Timers

+

Timers — keep track of elapsed time

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GTimer * + +g_timer_new () +
+void + +g_timer_start () +
+void + +g_timer_stop () +
+void + +g_timer_continue () +
+gdouble + +g_timer_elapsed () +
+void + +g_timer_reset () +
+void + +g_timer_destroy () +
+
+
+

Types and Values

+
++++ + + + + +
 GTimer
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GTimer records a start time, and counts microseconds elapsed since +that time. This is done somewhat differently on different platforms, +and can be tricky to get exactly right, so GTimer provides a +portable/convenient interface.

+
+
+

Functions

+
+

g_timer_new ()

+
GTimer *
+g_timer_new (void);
+

Creates a new timer, and starts timing (i.e. g_timer_start() is +implicitly called for you).

+
+

Returns

+

a new GTimer.

+
+
+
+
+

g_timer_start ()

+
void
+g_timer_start (GTimer *timer);
+

Marks a start time, so that future calls to g_timer_elapsed() will +report the time since g_timer_start() was called. g_timer_new() +automatically marks the start time, so no need to call +g_timer_start() immediately after creating the timer.

+
+

Parameters

+
+++++ + + + + + +

timer

a GTimer.

 
+
+
+
+
+

g_timer_stop ()

+
void
+g_timer_stop (GTimer *timer);
+

Marks an end time, so calls to g_timer_elapsed() will return the +difference between this end time and the start time.

+
+

Parameters

+
+++++ + + + + + +

timer

a GTimer.

 
+
+
+
+
+

g_timer_continue ()

+
void
+g_timer_continue (GTimer *timer);
+

Resumes a timer that has previously been stopped with +g_timer_stop(). g_timer_stop() must be called before using this +function.

+
+

Parameters

+
+++++ + + + + + +

timer

a GTimer.

 
+
+

Since: 2.4

+
+
+
+

g_timer_elapsed ()

+
gdouble
+g_timer_elapsed (GTimer *timer,
+                 gulong *microseconds);
+

If timer + has been started but not stopped, obtains the time since +the timer was started. If timer + has been stopped, obtains the +elapsed time between the time it was started and the time it was +stopped. The return value is the number of seconds elapsed, +including any fractional part. The microseconds + out parameter is +essentially useless.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

timer

a GTimer.

 

microseconds

return location for the fractional part of seconds +elapsed, in microseconds (that is, the total number +of microseconds elapsed, modulo 1000000), or NULL

 
+
+
+

Returns

+

seconds elapsed as a floating point value, including any +fractional part.

+
+
+
+
+

g_timer_reset ()

+
void
+g_timer_reset (GTimer *timer);
+

This function is useless; it's fine to call g_timer_start() on an +already-started timer to reset the start time, so g_timer_reset() +serves no purpose.

+
+

Parameters

+
+++++ + + + + + +

timer

a GTimer.

 
+
+
+
+
+

g_timer_destroy ()

+
void
+g_timer_destroy (GTimer *timer);
+

Destroys a timer, freeing associated resources.

+
+

Parameters

+
+++++ + + + + + +

timer

a GTimer to destroy.

 
+
+
+
+
+

Types and Values

+
+

GTimer

+
typedef struct _GTimer GTimer;
+

Opaque datatype that records a start time.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Trash-Stacks.html b/docs/reference/glib/html/glib-Trash-Stacks.html new file mode 100644 index 0000000..189a726 --- /dev/null +++ b/docs/reference/glib/html/glib-Trash-Stacks.html @@ -0,0 +1,272 @@ + + + + +Trash Stacks: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Trash Stacks

+

Trash Stacks — maintain a stack of unused allocated memory chunks

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
+void + +g_trash_stack_push () +
+gpointer + +g_trash_stack_pop () +
+gpointer + +g_trash_stack_peek () +
+guint + +g_trash_stack_height () +
+
+
+

Types and Values

+
++++ + + + + +
structGTrashStack
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

A GTrashStack is an efficient way to keep a stack of unused allocated +memory chunks. Each memory chunk is required to be large enough to hold +a gpointer. This allows the stack to be maintained without any space +overhead, since the stack pointers can be stored inside the memory chunks.

+

There is no function to create a GTrashStack. A NULL GTrashStack* +is a perfectly valid empty stack.

+

There is no longer any good reason to use GTrashStack. If you have +extra pieces of memory, free() them and allocate them again later.

+
+
+

Functions

+
+

g_trash_stack_push ()

+
void
+g_trash_stack_push (GTrashStack **stack_p,
+                    gpointer data_p);
+
+

g_trash_stack_push has been deprecated since version 2.48 and should not be used in newly-written code.

+

GTrashStack is deprecated without replacement

+
+

Pushes a piece of memory onto a GTrashStack.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

stack_p

a GTrashStack

 

data_p

the piece of memory to push on the stack.

[not nullable]
+
+
+
+
+

g_trash_stack_pop ()

+
gpointer
+g_trash_stack_pop (GTrashStack **stack_p);
+
+

g_trash_stack_pop has been deprecated since version 2.48 and should not be used in newly-written code.

+

GTrashStack is deprecated without replacement

+
+

Pops a piece of memory off a GTrashStack.

+
+

Parameters

+
+++++ + + + + + +

stack_p

a GTrashStack

 
+
+
+

Returns

+

the element at the top of the stack

+
+
+
+
+

g_trash_stack_peek ()

+
gpointer
+g_trash_stack_peek (GTrashStack **stack_p);
+
+

g_trash_stack_peek has been deprecated since version 2.48 and should not be used in newly-written code.

+

GTrashStack is deprecated without replacement

+
+

Returns the element at the top of a GTrashStack +which may be NULL.

+
+

Parameters

+
+++++ + + + + + +

stack_p

a GTrashStack

 
+
+
+

Returns

+

the element at the top of the stack

+
+
+
+
+

g_trash_stack_height ()

+
guint
+g_trash_stack_height (GTrashStack **stack_p);
+
+

g_trash_stack_height has been deprecated since version 2.48 and should not be used in newly-written code.

+

GTrashStack is deprecated without replacement

+
+

Returns the height of a GTrashStack.

+

Note that execution of this function is of O(N) complexity +where N denotes the number of items on the stack.

+
+

Parameters

+
+++++ + + + + + +

stack_p

a GTrashStack

 
+
+
+

Returns

+

the height of the stack

+
+
+
+
+

Types and Values

+
+

struct GTrashStack

+
struct GTrashStack {
+  GTrashStack *next;
+};
+
+
+

GTrashStack has been deprecated since version 2.48 and should not be used in newly-written code.

+

GTrashStack is deprecated without replacement

+
+

Each piece of memory that is pushed onto the stack +is cast to a GTrashStack*.

+
+

Members

+
+++++ + + + + + +

GTrashStack *next;

pointer to the previous element of the stack, +gets stored in the first sizeof (gpointer) +bytes of the element

 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Type-Conversion-Macros.html b/docs/reference/glib/html/glib-Type-Conversion-Macros.html new file mode 100644 index 0000000..2cdfde7 --- /dev/null +++ b/docs/reference/glib/html/glib-Type-Conversion-Macros.html @@ -0,0 +1,308 @@ + + + + +Type Conversion Macros: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Type Conversion Macros

+

Type Conversion Macros — portably storing integers in pointer variables

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define +GINT_TO_POINTER() +
#define +GPOINTER_TO_INT() +
#define +GUINT_TO_POINTER() +
#define +GPOINTER_TO_UINT() +
#define +GSIZE_TO_POINTER() +
#define +GPOINTER_TO_SIZE() +
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

Many times GLib, GTK+, and other libraries allow you to pass "user +data" to a callback, in the form of a void pointer. From time to time +you want to pass an integer instead of a pointer. You could allocate +an integer, with something like:

+
+ + + + + + + +
1
+2
int *ip = g_new (int, 1);
+*ip = 42;
+
+ +

+But this is inconvenient, and it's annoying to have to free the +memory at some later time.

+

Pointers are always at least 32 bits in size (on all platforms GLib +intends to support). Thus you can store at least 32-bit integer values +in a pointer value. Naively, you might try this, but it's incorrect:

+
+ + + + + + + +
1
+2
+3
+4
gpointer p;
+int i;
+p = (void*) 42;
+i = (int) p;
+
+ +

+Again, that example was not correct, don't copy it. +The problem is that on some systems you need to do this:

+
+ + + + + + + +
1
+2
+3
+4
gpointer p;
+int i;
+p = (void*) (long) 42;
+i = (int) (long) p;
+
+ +

+The GLib macros GPOINTER_TO_INT(), GINT_TO_POINTER(), etc. take care +to do the right thing on the every platform.

+

Warning: You may not store pointers in integers. This is not +portable in any way, shape or form. These macros only allow storing +integers in pointers, and only preserve 32 bits of the integer; values +outside the range of a 32-bit integer will be mangled.

+
+
+

Functions

+
+

GINT_TO_POINTER()

+
#define GINT_TO_POINTER(i) ((gpointer) (glong) (i))
+
+

Stuffs an integer into a pointer type.

+

Remember, you may not store pointers in integers. This is not portable +in any way, shape or form. These macros only allow storing integers in +pointers, and only preserve 32 bits of the integer; values outside the +range of a 32-bit integer will be mangled.

+
+

Parameters

+
+++++ + + + + + +

i

integer to stuff into a pointer

 
+
+
+
+
+

GPOINTER_TO_INT()

+
#define GPOINTER_TO_INT(p) ((gint)  (glong) (p))
+
+

Extracts an integer from a pointer. The integer must have +been stored in the pointer with GINT_TO_POINTER().

+

Remember, you may not store pointers in integers. This is not portable +in any way, shape or form. These macros only allow storing integers in +pointers, and only preserve 32 bits of the integer; values outside the +range of a 32-bit integer will be mangled.

+
+

Parameters

+
+++++ + + + + + +

p

pointer containing an integer

 
+
+
+
+
+

GUINT_TO_POINTER()

+
#define GUINT_TO_POINTER(u) ((gpointer) (gulong) (u))
+
+

Stuffs an unsigned integer into a pointer type.

+
+

Parameters

+
+++++ + + + + + +

u

unsigned integer to stuff into the pointer

 
+
+
+
+
+

GPOINTER_TO_UINT()

+
#define GPOINTER_TO_UINT(p) ((guint) (gulong) (p))
+
+

Extracts an unsigned integer from a pointer. The integer must have +been stored in the pointer with GUINT_TO_POINTER().

+
+

Parameters

+
+++++ + + + + + +

p

pointer to extract an unsigned integer from

 
+
+
+
+
+

GSIZE_TO_POINTER()

+
#define GSIZE_TO_POINTER(s) ((gpointer) (gsize) (s))
+
+

Stuffs a gsize into a pointer type.

+
+

Parameters

+
+++++ + + + + + +

s

gsize to stuff into the pointer

 
+
+
+
+
+

GPOINTER_TO_SIZE()

+
#define GPOINTER_TO_SIZE(p) ((gsize) (p))
+
+

Extracts a gsize from a pointer. The gsize must have +been stored in the pointer with GSIZE_TO_POINTER().

+
+

Parameters

+
+++++ + + + + + +

p

pointer to extract a gsize from

 
+
+
+
+
+

Types and Values

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-UNIX-specific-utilities-and-integration.html b/docs/reference/glib/html/glib-UNIX-specific-utilities-and-integration.html new file mode 100644 index 0000000..56f18af --- /dev/null +++ b/docs/reference/glib/html/glib-UNIX-specific-utilities-and-integration.html @@ -0,0 +1,608 @@ + + + + +UNIX-specific utilities and integration: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

UNIX-specific utilities and integration

+

UNIX-specific utilities and integration — pipes, signal handling

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#defineG_UNIX_ERROR
+gboolean + +g_unix_open_pipe () +
+gboolean + +g_unix_set_fd_nonblocking () +
+guint + +g_unix_signal_add () +
+guint + +g_unix_signal_add_full () +
+GSource * + +g_unix_signal_source_new () +
+gboolean + +(*GUnixFDSourceFunc) () +
+guint + +g_unix_fd_add () +
+guint + +g_unix_fd_add_full () +
+GSource * + +g_unix_fd_source_new () +
+
+
+

Includes

+
#include <glib-unix.h>
+
+
+
+

Description

+

Most of GLib is intended to be portable; in contrast, this set of +functions is designed for programs which explicitly target UNIX, +or are using it to build higher level abstractions which would be +conditionally compiled if the platform matches G_OS_UNIX.

+

To use these functions, you must explicitly include the +"glib-unix.h" header.

+
+
+

Functions

+
+

G_UNIX_ERROR

+
#define G_UNIX_ERROR (g_unix_error_quark())
+
+

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 0, 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 ENOENT. However, it is provided for completeness, at least.

+
+
+
+

g_unix_open_pipe ()

+
gboolean
+g_unix_open_pipe (gint *fds,
+                  gint flags,
+                  GError **error);
+

Similar to the UNIX pipe() call, but on modern systems like Linux +uses the pipe2() system call, which atomically creates a pipe with +the configured flags. The only supported flag currently is +FD_CLOEXEC. If for example you want to configure O_NONBLOCK, that +must still be done separately with fcntl().

+

This function does not take O_CLOEXEC, it takes FD_CLOEXEC as if +for fcntl(); these are different on Linux/glibc.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

fds

Array of two integers

 

flags

Bitfield of file descriptor flags, as for fcntl()

 

error

a GError

 
+
+
+

Returns

+

TRUE on success, FALSE if not (and errno will be set).

+
+

Since: 2.30

+
+
+
+

g_unix_set_fd_nonblocking ()

+
gboolean
+g_unix_set_fd_nonblocking (gint fd,
+                           gboolean nonblock,
+                           GError **error);
+

Control the non-blocking state of the given file descriptor, +according to nonblock +. On most systems this uses O_NONBLOCK, but +on some older ones may use O_NDELAY.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

fd

A file descriptor

 

nonblock

If TRUE, set the descriptor to be non-blocking

 

error

a GError

 
+
+
+

Returns

+

TRUE if successful

+
+

Since: 2.30

+
+
+
+

g_unix_signal_add ()

+
guint
+g_unix_signal_add (gint signum,
+                   GSourceFunc handler,
+                   gpointer user_data);
+

A convenience function for g_unix_signal_source_new(), which +attaches to the default GMainContext. You can remove the watch +using g_source_remove().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

signum

Signal number

 

handler

Callback

 

user_data

Data for handler +

 
+
+
+

Returns

+

An ID (greater than 0) for the event source

+
+

Since: 2.30

+
+
+
+

g_unix_signal_add_full ()

+
guint
+g_unix_signal_add_full (gint priority,
+                        gint signum,
+                        GSourceFunc handler,
+                        gpointer user_data,
+                        GDestroyNotify notify);
+

A convenience function for g_unix_signal_source_new(), which +attaches to the default GMainContext. You can remove the watch +using g_source_remove().

+

[rename-to g_unix_signal_add]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

priority

the priority of the signal source. Typically this will be in +the range between G_PRIORITY_DEFAULT and G_PRIORITY_HIGH.

 

signum

Signal number

 

handler

Callback

 

user_data

Data for handler +

 

notify

GDestroyNotify for handler +

 
+
+
+

Returns

+

An ID (greater than 0) for the event source

+
+

Since: 2.30

+
+
+
+

g_unix_signal_source_new ()

+
GSource *
+g_unix_signal_source_new (gint signum);
+

Create a GSource that will be dispatched upon delivery of the UNIX +signal signum +. In GLib versions before 2.36, only SIGHUP, SIGINT, +SIGTERM can be monitored. In GLib 2.36, SIGUSR1 and SIGUSR2 +were added.

+

Note that unlike the UNIX default, all sources which have created a +watch will be dispatched, regardless of which underlying thread +invoked g_unix_signal_source_new().

+

For example, an effective use of this function is to handle SIGTERM +cleanly; flushing any outstanding files, and then calling +g_main_loop_quit(). It is not safe to do any of this a regular +UNIX signal handler; your handler may be invoked while malloc() or +another library function is running, causing reentrancy if you +attempt to use it from the handler. None of the GLib/GObject API +is safe against this kind of reentrancy.

+

The interaction of this source when combined with native UNIX +functions like sigprocmask() is not defined.

+

The source will not initially be associated with any GMainContext +and must be added to one with g_source_attach() before it will be +executed.

+
+

Parameters

+
+++++ + + + + + +

signum

A signal number

 
+
+
+

Returns

+

A newly created GSource

+
+

Since: 2.30

+
+
+
+

GUnixFDSourceFunc ()

+
gboolean
+(*GUnixFDSourceFunc) (gint fd,
+                      GIOCondition condition,
+                      gpointer user_data);
+

The type of functions to be called when a UNIX fd watch source +triggers.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

fd

the fd that triggered the event

 

condition

the IO conditions reported on fd +

 

user_data

user data passed to g_unix_fd_add()

 
+
+
+

Returns

+

FALSE if the source should be removed

+
+
+
+
+

g_unix_fd_add ()

+
guint
+g_unix_fd_add (gint fd,
+               GIOCondition condition,
+               GUnixFDSourceFunc function,
+               gpointer user_data);
+

Sets a function to be called when the IO condition, as specified by +condition + becomes true for fd +.

+

function + will be called when the specified IO condition becomes +TRUE. The function is expected to clear whatever event caused the +IO condition to become true and return TRUE in order to be notified +when it happens again. If function + returns FALSE then the watch +will be cancelled.

+

The return value of this function can be passed to g_source_remove() +to cancel the watch at any time that it exists.

+

The source will never close the fd -- you must do it yourself.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

fd

a file descriptor

 

condition

IO conditions to watch for on fd +

 

function

a GPollFDFunc

 

user_data

data to pass to function +

 
+
+
+

Returns

+

the ID (greater than 0) of the event source

+
+

Since: 2.36

+
+
+
+

g_unix_fd_add_full ()

+
guint
+g_unix_fd_add_full (gint priority,
+                    gint fd,
+                    GIOCondition condition,
+                    GUnixFDSourceFunc function,
+                    gpointer user_data,
+                    GDestroyNotify notify);
+

Sets a function to be called when the IO condition, as specified by +condition + becomes true for fd +.

+

This is the same as g_unix_fd_add(), except that it allows you to +specify a non-default priority and a provide a GDestroyNotify for +user_data +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

priority

the priority of the source

 

fd

a file descriptor

 

condition

IO conditions to watch for on fd +

 

function

a GUnixFDSourceFunc

 

user_data

data to pass to function +

 

notify

function to call when the idle is removed, or NULL

 
+
+
+

Returns

+

the ID (greater than 0) of the event source

+
+

Since: 2.36

+
+
+
+

g_unix_fd_source_new ()

+
GSource *
+g_unix_fd_source_new (gint fd,
+                      GIOCondition condition);
+

Creates a GSource to watch for a particular IO condition on a file +descriptor.

+

The source will never close the fd -- you must do it yourself.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

fd

a file descriptor

 

condition

IO conditions to watch for on fd +

 
+
+
+

Returns

+

the newly created GSource

+
+

Since: 2.36

+
+
+
+

Types and Values

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-URI-Functions.html b/docs/reference/glib/html/glib-URI-Functions.html new file mode 100644 index 0000000..d26fd29 --- /dev/null +++ b/docs/reference/glib/html/glib-URI-Functions.html @@ -0,0 +1,503 @@ + + + + +URI Functions: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

URI Functions

+

URI Functions — manipulating URIs

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+char * + +g_uri_parse_scheme () +
+char * + +g_uri_escape_string () +
+char * + +g_uri_unescape_string () +
+char * + +g_uri_unescape_segment () +
+gchar ** + +g_uri_list_extract_uris () +
+gchar * + +g_filename_from_uri () +
+gchar * + +g_filename_to_uri () +
+
+ +
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

Functions for manipulating Universal Resource Identifiers (URIs) as +defined by +RFC 3986. +It is highly recommended that you have read and +understand RFC 3986 for understanding this API.

+
+
+

Functions

+
+

g_uri_parse_scheme ()

+
char *
+g_uri_parse_scheme (const char *uri);
+

Gets the scheme portion of a URI string. RFC 3986 decodes the scheme as:

+
+ + + + + + + +
1
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
+
+ +

+Common schemes include "file", "http", "svn+ssh", etc.

+
+

Parameters

+
+++++ + + + + + +

uri

a valid URI.

 
+
+
+

Returns

+

The "Scheme" component of the URI, or NULL on error. +The returned string should be freed when no longer needed.

+
+

Since: 2.16

+
+
+
+

g_uri_escape_string ()

+
char *
+g_uri_escape_string (const char *unescaped,
+                     const char *reserved_chars_allowed,
+                     gboolean allow_utf8);
+

Escapes a string for use in a URI.

+

Normally all characters that are not "unreserved" (i.e. ASCII alphanumerical +characters plus dash, dot, underscore and tilde) are escaped. +But if you specify characters in reserved_chars_allowed + they are not +escaped. This is useful for the "reserved" characters in the URI +specification, since those are allowed unescaped in some portions of +a URI.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

unescaped

the unescaped input string.

 

reserved_chars_allowed

a string of reserved characters that +are allowed to be used, or NULL.

[allow-none]

allow_utf8

TRUE if the result can include UTF-8 characters.

 
+
+
+

Returns

+

an escaped version of unescaped +. The returned string should be +freed when no longer needed.

+
+

Since: 2.16

+
+
+
+

g_uri_unescape_string ()

+
char *
+g_uri_unescape_string (const char *escaped_string,
+                       const char *illegal_characters);
+

Unescapes a whole escaped string.

+

If any of the characters in illegal_characters + or the character zero appears +as an escaped character in escaped_string + then that is an error and NULL +will be returned. This is useful it you want to avoid for instance having a +slash being expanded in an escaped path element, which might confuse pathname +handling.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

escaped_string

an escaped string to be unescaped.

 

illegal_characters

a string of illegal characters not to be +allowed, or NULL.

[allow-none]
+
+
+

Returns

+

an unescaped version of escaped_string +. The returned string +should be freed when no longer needed.

+
+

Since: 2.16

+
+
+
+

g_uri_unescape_segment ()

+
char *
+g_uri_unescape_segment (const char *escaped_string,
+                        const char *escaped_string_end,
+                        const char *illegal_characters);
+

Unescapes a segment of an escaped string.

+

If any of the characters in illegal_characters + or the character zero appears +as an escaped character in escaped_string + then that is an error and NULL +will be returned. This is useful it you want to avoid for instance having a +slash being expanded in an escaped path element, which might confuse pathname +handling.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

escaped_string

A string, may be NULL.

[allow-none]

escaped_string_end

Pointer to end of escaped_string +, may be NULL.

[allow-none]

illegal_characters

An optional string of illegal characters not to be allowed, may be NULL.

[allow-none]
+
+
+

Returns

+

an unescaped version of escaped_string +or NULL on error. +The returned string should be freed when no longer needed. As a +special case if NULL is given for escaped_string +, this function +will return NULL.

+
+

Since: 2.16

+
+
+
+

g_uri_list_extract_uris ()

+
gchar **
+g_uri_list_extract_uris (const gchar *uri_list);
+

Splits an URI list conforming to the text/uri-list +mime type defined in RFC 2483 into individual URIs, +discarding any comments. The URIs are not validated.

+
+

Parameters

+
+++++ + + + + + +

uri_list

an URI list

 
+
+
+

Returns

+

a newly allocated NULL-terminated list +of strings holding the individual URIs. The array should be freed +with g_strfreev().

+

[transfer full]

+
+

Since: 2.6

+
+
+
+

g_filename_from_uri ()

+
gchar *
+g_filename_from_uri (const gchar *uri,
+                     gchar **hostname,
+                     GError **error);
+

Converts an escaped ASCII-encoded URI to a local filename in the +encoding used for filenames.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

uri

a uri describing a filename (escaped, encoded in ASCII).

 

hostname

Location to store hostname for the +URI. +If there is no hostname in the URI, NULL will be +stored in this location.

[out][optional][nullable]

error

location to store the error occurring, or NULL to ignore +errors. Any of the errors in GConvertError may occur.

 
+
+
+

Returns

+

a newly-allocated string holding +the resulting filename, or NULL on an error.

+

[type filename]

+
+
+
+
+

g_filename_to_uri ()

+
gchar *
+g_filename_to_uri (const gchar *filename,
+                   const gchar *hostname,
+                   GError **error);
+

Converts an absolute filename to an escaped ASCII-encoded URI, with the path +component following Section 3.3. of RFC 2396.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

filename

an absolute filename specified in the GLib file name encoding, +which is the on-disk file name bytes on Unix, and UTF-8 on +Windows

 

hostname

A UTF-8 encoded hostname, or NULL for none.

[allow-none]

error

location to store the error occurring, or NULL to ignore +errors. Any of the errors in GConvertError may occur.

 
+
+
+

Returns

+

a newly-allocated string holding the resulting +URI, or NULL on an error.

+
+
+
+
+

Types and Values

+
+

G_URI_RESERVED_CHARS_ALLOWED_IN_PATH

+
#define G_URI_RESERVED_CHARS_ALLOWED_IN_PATH G_URI_RESERVED_CHARS_ALLOWED_IN_PATH_ELEMENT "/"
+
+

Allowed characters in a path. Includes "!$&'()*+,;=:@/".

+
+
+
+

G_URI_RESERVED_CHARS_ALLOWED_IN_PATH_ELEMENT

+
#define G_URI_RESERVED_CHARS_ALLOWED_IN_PATH_ELEMENT G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS ":@"
+
+

Allowed characters in path elements. Includes "!$&'()*+,;=:@".

+
+
+
+

G_URI_RESERVED_CHARS_ALLOWED_IN_USERINFO

+
#define G_URI_RESERVED_CHARS_ALLOWED_IN_USERINFO G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS ":"
+
+

Allowed characters in userinfo as defined in RFC 3986. Includes "!$&'()*+,;=:".

+
+
+
+

G_URI_RESERVED_CHARS_GENERIC_DELIMITERS

+
#define G_URI_RESERVED_CHARS_GENERIC_DELIMITERS ":/?#[]@"
+
+

Generic delimiters characters as defined in RFC 3986. Includes ":/?#[]@".

+
+
+
+

G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS

+
#define G_URI_RESERVED_CHARS_SUBCOMPONENT_DELIMITERS "!$&'()*+,;="
+
+

Subcomponent delimiter characters as defined in RFC 3986. Includes "!$&'()*+,;=".

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Unicode-Manipulation.html b/docs/reference/glib/html/glib-Unicode-Manipulation.html new file mode 100644 index 0000000..99848c7 --- /dev/null +++ b/docs/reference/glib/html/glib-Unicode-Manipulation.html @@ -0,0 +1,4975 @@ + + + + +Unicode Manipulation: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Unicode Manipulation

+

Unicode Manipulation — functions operating on Unicode characters and + UTF-8 strings

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +g_unichar_validate () +
+gboolean + +g_unichar_isalnum () +
+gboolean + +g_unichar_isalpha () +
+gboolean + +g_unichar_iscntrl () +
+gboolean + +g_unichar_isdefined () +
+gboolean + +g_unichar_isdigit () +
+gboolean + +g_unichar_isgraph () +
+gboolean + +g_unichar_islower () +
+gboolean + +g_unichar_ismark () +
+gboolean + +g_unichar_isprint () +
+gboolean + +g_unichar_ispunct () +
+gboolean + +g_unichar_isspace () +
+gboolean + +g_unichar_istitle () +
+gboolean + +g_unichar_isupper () +
+gboolean + +g_unichar_isxdigit () +
+gboolean + +g_unichar_iswide () +
+gboolean + +g_unichar_iswide_cjk () +
+gboolean + +g_unichar_iszerowidth () +
+gunichar + +g_unichar_toupper () +
+gunichar + +g_unichar_tolower () +
+gunichar + +g_unichar_totitle () +
+gint + +g_unichar_digit_value () +
+gint + +g_unichar_xdigit_value () +
+gboolean + +g_unichar_compose () +
+gboolean + +g_unichar_decompose () +
+gsize + +g_unichar_fully_decompose () +
+GUnicodeType + +g_unichar_type () +
+GUnicodeBreakType + +g_unichar_break_type () +
+gint + +g_unichar_combining_class () +
+void + +g_unicode_canonical_ordering () +
+gunichar * + +g_unicode_canonical_decomposition () +
+gboolean + +g_unichar_get_mirror_char () +
+GUnicodeScript + +g_unichar_get_script () +
+GUnicodeScript + +g_unicode_script_from_iso15924 () +
+guint32 + +g_unicode_script_to_iso15924 () +
#define +g_utf8_next_char() +
+gunichar + +g_utf8_get_char () +
+gunichar + +g_utf8_get_char_validated () +
+gchar * + +g_utf8_offset_to_pointer () +
+glong + +g_utf8_pointer_to_offset () +
+gchar * + +g_utf8_prev_char () +
+gchar * + +g_utf8_find_next_char () +
+gchar * + +g_utf8_find_prev_char () +
+glong + +g_utf8_strlen () +
+gchar * + +g_utf8_strncpy () +
+gchar * + +g_utf8_strchr () +
+gchar * + +g_utf8_strrchr () +
+gchar * + +g_utf8_strreverse () +
+gchar * + +g_utf8_substring () +
+gboolean + +g_utf8_validate () +
+gchar * + +g_utf8_strup () +
+gchar * + +g_utf8_strdown () +
+gchar * + +g_utf8_casefold () +
+gchar * + +g_utf8_normalize () +
+gint + +g_utf8_collate () +
+gchar * + +g_utf8_collate_key () +
+gchar * + +g_utf8_collate_key_for_filename () +
+gunichar2 * + +g_utf8_to_utf16 () +
+gunichar * + +g_utf8_to_ucs4 () +
+gunichar * + +g_utf8_to_ucs4_fast () +
+gunichar * + +g_utf16_to_ucs4 () +
+gchar * + +g_utf16_to_utf8 () +
+gunichar2 * + +g_ucs4_to_utf16 () +
+gchar * + +g_ucs4_to_utf8 () +
+gint + +g_unichar_to_utf8 () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
typedefgunichar
typedefgunichar2
#defineG_UNICHAR_MAX_DECOMPOSITION_LENGTH
enumGUnicodeType
#defineG_UNICODE_COMBINING_MARK
enumGUnicodeBreakType
enumGUnicodeScript
enumGNormalizeMode
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

This section describes a number of functions for dealing with +Unicode characters and strings. There are analogues of the +traditional ctype.h character classification and case conversion +functions, UTF-8 analogues of some string utility functions, +functions to perform normalization, case conversion and collation +on UTF-8 strings and finally functions to convert between the UTF-8, +UTF-16 and UCS-4 encodings of Unicode.

+

The implementations of the Unicode functions in GLib are based +on the Unicode Character Data tables, which are available from +www.unicode.org. +GLib 2.8 supports Unicode 4.0, GLib 2.10 supports Unicode 4.1, +GLib 2.12 supports Unicode 5.0, GLib 2.16.3 supports Unicode 5.1, +GLib 2.30 supports Unicode 6.0.

+
+
+

Functions

+
+

g_unichar_validate ()

+
gboolean
+g_unichar_validate (gunichar ch);
+

Checks whether ch + is a valid Unicode character. Some possible +integer values of ch + will not be valid. 0 is considered a valid +character, though it's normally a string terminator.

+
+

Parameters

+
+++++ + + + + + +

ch

a Unicode character

 
+
+
+

Returns

+

TRUE if ch +is a valid Unicode character

+
+
+
+
+

g_unichar_isalnum ()

+
gboolean
+g_unichar_isalnum (gunichar c);
+

Determines whether a character is alphanumeric. +Given some UTF-8 text, obtain a character value +with g_utf8_get_char().

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if c +is an alphanumeric character

+
+
+
+
+

g_unichar_isalpha ()

+
gboolean
+g_unichar_isalpha (gunichar c);
+

Determines whether a character is alphabetic (i.e. a letter). +Given some UTF-8 text, obtain a character value with +g_utf8_get_char().

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if c +is an alphabetic character

+
+
+
+
+

g_unichar_iscntrl ()

+
gboolean
+g_unichar_iscntrl (gunichar c);
+

Determines whether a character is a control character. +Given some UTF-8 text, obtain a character value with +g_utf8_get_char().

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if c +is a control character

+
+
+
+
+

g_unichar_isdefined ()

+
gboolean
+g_unichar_isdefined (gunichar c);
+

Determines if a given character is assigned in the Unicode +standard.

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if the character has an assigned value

+
+
+
+
+

g_unichar_isdigit ()

+
gboolean
+g_unichar_isdigit (gunichar c);
+

Determines whether a character is numeric (i.e. a digit). This +covers ASCII 0-9 and also digits in other languages/scripts. Given +some UTF-8 text, obtain a character value with g_utf8_get_char().

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if c +is a digit

+
+
+
+
+

g_unichar_isgraph ()

+
gboolean
+g_unichar_isgraph (gunichar c);
+

Determines whether a character is printable and not a space +(returns FALSE for control characters, format characters, and +spaces). g_unichar_isprint() is similar, but returns TRUE for +spaces. Given some UTF-8 text, obtain a character value with +g_utf8_get_char().

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if c +is printable unless it's a space

+
+
+
+
+

g_unichar_islower ()

+
gboolean
+g_unichar_islower (gunichar c);
+

Determines whether a character is a lowercase letter. +Given some UTF-8 text, obtain a character value with +g_utf8_get_char().

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if c +is a lowercase letter

+
+
+
+
+

g_unichar_ismark ()

+
gboolean
+g_unichar_ismark (gunichar c);
+

Determines whether a character is a mark (non-spacing mark, +combining mark, or enclosing mark in Unicode speak). +Given some UTF-8 text, obtain a character value +with g_utf8_get_char().

+

Note: in most cases where isalpha characters are allowed, +ismark characters should be allowed to as they are essential +for writing most European languages as well as many non-Latin +scripts.

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if c +is a mark character

+
+

Since: 2.14

+
+
+
+

g_unichar_isprint ()

+
gboolean
+g_unichar_isprint (gunichar c);
+

Determines whether a character is printable. +Unlike g_unichar_isgraph(), returns TRUE for spaces. +Given some UTF-8 text, obtain a character value with +g_utf8_get_char().

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if c +is printable

+
+
+
+
+

g_unichar_ispunct ()

+
gboolean
+g_unichar_ispunct (gunichar c);
+

Determines whether a character is punctuation or a symbol. +Given some UTF-8 text, obtain a character value with +g_utf8_get_char().

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if c +is a punctuation or symbol character

+
+
+
+
+

g_unichar_isspace ()

+
gboolean
+g_unichar_isspace (gunichar c);
+

Determines whether a character is a space, tab, or line separator +(newline, carriage return, etc.). Given some UTF-8 text, obtain a +character value with g_utf8_get_char().

+

(Note: don't use this to do word breaking; you have to use +Pango or equivalent to get word breaking right, the algorithm +is fairly complex.)

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if c +is a space character

+
+
+
+
+

g_unichar_istitle ()

+
gboolean
+g_unichar_istitle (gunichar c);
+

Determines if a character is titlecase. Some characters in +Unicode which are composites, such as the DZ digraph +have three case variants instead of just two. The titlecase +form is used at the beginning of a word where only the +first letter is capitalized. The titlecase form of the DZ +digraph is U+01F2 LATIN CAPITAL LETTTER D WITH SMALL LETTER Z.

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if the character is titlecase

+
+
+
+
+

g_unichar_isupper ()

+
gboolean
+g_unichar_isupper (gunichar c);
+

Determines if a character is uppercase.

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if c +is an uppercase character

+
+
+
+
+

g_unichar_isxdigit ()

+
gboolean
+g_unichar_isxdigit (gunichar c);
+

Determines if a character is a hexidecimal digit.

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character.

 
+
+
+

Returns

+

TRUE if the character is a hexadecimal digit

+
+
+
+
+

g_unichar_iswide ()

+
gboolean
+g_unichar_iswide (gunichar c);
+

Determines if a character is typically rendered in a double-width +cell.

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if the character is wide

+
+
+
+
+

g_unichar_iswide_cjk ()

+
gboolean
+g_unichar_iswide_cjk (gunichar c);
+

Determines if a character is typically rendered in a double-width +cell under legacy East Asian locales. If a character is wide according to +g_unichar_iswide(), then it is also reported wide with this function, but +the converse is not necessarily true. See the +Unicode Standard Annex 11 +for details.

+

If a character passes the g_unichar_iswide() test then it will also pass +this test, but not the other way around. Note that some characters may +pass both this test and g_unichar_iszerowidth().

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if the character is wide in legacy East Asian locales

+
+

Since: 2.12

+
+
+
+

g_unichar_iszerowidth ()

+
gboolean
+g_unichar_iszerowidth (gunichar c);
+

Determines if a given character typically takes zero width when rendered. +The return value is TRUE for all non-spacing and enclosing marks +(e.g., combining accents), format characters, zero-width +space, but not U+00AD SOFT HYPHEN.

+

A typical use of this function is with one of g_unichar_iswide() or +g_unichar_iswide_cjk() to determine the number of cells a string occupies +when displayed on a grid display (terminals). However, note that not all +terminals support zero-width rendering of zero-width marks.

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

TRUE if the character has zero width

+
+

Since: 2.14

+
+
+
+

g_unichar_toupper ()

+
gunichar
+g_unichar_toupper (gunichar c);
+

Converts a character to uppercase.

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

the result of converting c +to uppercase. +If c +is not an lowercase or titlecase character, +or has no upper case equivalent c +is returned unchanged.

+
+
+
+
+

g_unichar_tolower ()

+
gunichar
+g_unichar_tolower (gunichar c);
+

Converts a character to lower case.

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character.

 
+
+
+

Returns

+

the result of converting c +to lower case. +If c +is not an upperlower or titlecase character, +or has no lowercase equivalent c +is returned unchanged.

+
+
+
+
+

g_unichar_totitle ()

+
gunichar
+g_unichar_totitle (gunichar c);
+

Converts a character to the titlecase.

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

the result of converting c +to titlecase. +If c +is not an uppercase or lowercase character, +c +is returned unchanged.

+
+
+
+
+

g_unichar_digit_value ()

+
gint
+g_unichar_digit_value (gunichar c);
+

Determines the numeric value of a character as a decimal +digit.

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

If c +is a decimal digit (according to +g_unichar_isdigit()), its numeric value. Otherwise, -1.

+
+
+
+
+

g_unichar_xdigit_value ()

+
gint
+g_unichar_xdigit_value (gunichar c);
+

Determines the numeric value of a character as a hexidecimal +digit.

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

If c +is a hex digit (according to +g_unichar_isxdigit()), its numeric value. Otherwise, -1.

+
+
+
+
+

g_unichar_compose ()

+
gboolean
+g_unichar_compose (gunichar a,
+                   gunichar b,
+                   gunichar *ch);
+

Performs a single composition step of the +Unicode canonical composition algorithm.

+

This function includes algorithmic Hangul Jamo composition, +but it is not exactly the inverse of g_unichar_decompose(). +No composition can have either of a + or b + equal to zero. +To be precise, this function composes if and only if +there exists a Primary Composite P which is canonically +equivalent to the sequence <a +,b +>. See the Unicode +Standard for the definition of Primary Composite.

+

If a + and b + do not compose a new character, ch + is set to zero.

+

See +UAX15 +for details.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

a

a Unicode character

 

b

a Unicode character

 

ch

return location for the composed character

 
+
+
+

Returns

+

TRUE if the characters could be composed

+
+

Since: 2.30

+
+
+
+

g_unichar_decompose ()

+
gboolean
+g_unichar_decompose (gunichar ch,
+                     gunichar *a,
+                     gunichar *b);
+

Performs a single decomposition step of the +Unicode canonical decomposition algorithm.

+

This function does not include compatibility +decompositions. It does, however, include algorithmic +Hangul Jamo decomposition, as well as 'singleton' +decompositions which replace a character by a single +other character. In the case of singletons *b + will +be set to zero.

+

If ch + is not decomposable, *a + is set to ch + and *b + +is set to zero.

+

Note that the way Unicode decomposition pairs are +defined, it is guaranteed that b + would not decompose +further, but a + may itself decompose. To get the full +canonical decomposition for ch +, one would need to +recursively call this function on a +. Or use +g_unichar_fully_decompose().

+

See +UAX15 +for details.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

ch

a Unicode character

 

a

return location for the first component of ch +

 

b

return location for the second component of ch +

 
+
+
+

Returns

+

TRUE if the character could be decomposed

+
+

Since: 2.30

+
+
+
+

g_unichar_fully_decompose ()

+
gsize
+g_unichar_fully_decompose (gunichar ch,
+                           gboolean compat,
+                           gunichar *result,
+                           gsize result_len);
+

Computes the canonical or compatibility decomposition of a +Unicode character. For compatibility decomposition, +pass TRUE for compat +; for canonical decomposition +pass FALSE for compat +.

+

The decomposed sequence is placed in result +. Only up to +result_len + characters are written into result +. The length +of the full decomposition (irrespective of result_len +) is +returned by the function. For canonical decomposition, +currently all decompositions are of length at most 4, but +this may change in the future (very unlikely though). +At any rate, Unicode does guarantee that a buffer of length +18 is always enough for both compatibility and canonical +decompositions, so that is the size recommended. This is provided +as G_UNICHAR_MAX_DECOMPOSITION_LENGTH.

+

See +UAX15 +for details.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

ch

a Unicode character.

 

compat

whether perform canonical or compatibility decomposition

 

result

location to store decomposed result, or NULL.

[allow-none]

result_len

length of result +

 
+
+
+

Returns

+

the length of the full decomposition.

+
+

Since: 2.30

+
+
+
+

g_unichar_type ()

+
GUnicodeType
+g_unichar_type (gunichar c);
+

Classifies a Unicode character by type.

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

the type of the character.

+
+
+
+
+

g_unichar_break_type ()

+
GUnicodeBreakType
+g_unichar_break_type (gunichar c);
+

Determines the break type of c +. c + should be a Unicode character +(to derive a character from UTF-8 encoded text, use +g_utf8_get_char()). The break type is used to find word and line +breaks ("text boundaries"), Pango implements the Unicode boundary +resolution algorithms and normally you would use a function such +as pango_break() instead of caring about break types yourself.

+
+

Parameters

+
+++++ + + + + + +

c

a Unicode character

 
+
+
+

Returns

+

the break type of c +

+
+
+
+
+

g_unichar_combining_class ()

+
gint
+g_unichar_combining_class (gunichar uc);
+

Determines the canonical combining class of a Unicode character.

+
+

Parameters

+
+++++ + + + + + +

uc

a Unicode character

 
+
+
+

Returns

+

the combining class of the character

+
+

Since: 2.14

+
+
+
+

g_unicode_canonical_ordering ()

+
void
+g_unicode_canonical_ordering (gunichar *string,
+                              gsize len);
+

Computes the 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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

string

a UCS-4 encoded string.

 

len

the maximum length of string +to use.

 
+
+
+
+
+

g_unicode_canonical_decomposition ()

+
gunichar *
+g_unicode_canonical_decomposition (gunichar ch,
+                                   gsize *result_len);
+
+

g_unicode_canonical_decomposition has been deprecated since version 2.30 and should not be used in newly-written code.

+

Use the more flexible g_unichar_fully_decompose() + instead.

+
+

Computes the canonical decomposition of a Unicode character.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

ch

a Unicode character.

 

result_len

location to store the length of the return value.

 
+
+
+

Returns

+

a newly allocated string of Unicode characters. +result_len +is set to the resulting length of the string.

+
+
+
+
+

g_unichar_get_mirror_char ()

+
gboolean
+g_unichar_get_mirror_char (gunichar ch,
+                           gunichar *mirrored_ch);
+

In Unicode, some characters are "mirrored". This means that their +images are mirrored horizontally in text that is laid out from right +to left. For instance, "(" would become its mirror image, ")", in +right-to-left text.

+

If ch + has the Unicode mirrored property and there is another unicode +character that typically has a glyph that is the mirror image of ch +'s +glyph and mirrored_ch + is set, it puts that character in the address +pointed to by mirrored_ch +. Otherwise the original character is put.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

ch

a Unicode character

 

mirrored_ch

location to store the mirrored character

 
+
+
+

Returns

+

TRUE if ch +has a mirrored character, FALSE otherwise

+
+

Since: 2.4

+
+
+
+

g_unichar_get_script ()

+
GUnicodeScript
+g_unichar_get_script (gunichar ch);
+

Looks up the GUnicodeScript for a particular character (as defined +by Unicode Standard Annex #24). No check is made for ch + being a +valid Unicode character; if you pass in invalid character, the +result is undefined.

+

This function is equivalent to pango_script_for_unichar() and the +two are interchangeable.

+
+

Parameters

+
+++++ + + + + + +

ch

a Unicode character

 
+
+
+

Returns

+

the GUnicodeScript for the character.

+
+

Since: 2.14

+
+
+
+

g_unicode_script_from_iso15924 ()

+
GUnicodeScript
+g_unicode_script_from_iso15924 (guint32 iso15924);
+

Looks up the Unicode script for iso15924 +. ISO 15924 assigns four-letter +codes to scripts. For example, the code for Arabic is 'Arab'. +This function accepts four letter codes encoded as a guint32 + in a +big-endian fashion. That is, the code expected for Arabic is +0x41726162 (0x41 is ASCII code for 'A', 0x72 is ASCII code for 'r', etc).

+

See +Codes for the representation of names of scripts +for details.

+
+

Parameters

+
+++++ + + + + + +

iso15924

a Unicode script

 
+
+
+

Returns

+

the Unicode script for iso15924 +, or +of G_UNICODE_SCRIPT_INVALID_CODE if iso15924 +is zero and +G_UNICODE_SCRIPT_UNKNOWN if iso15924 +is unknown.

+
+

Since: 2.30

+
+
+
+

g_unicode_script_to_iso15924 ()

+
guint32
+g_unicode_script_to_iso15924 (GUnicodeScript script);
+

Looks up the ISO 15924 code for script +. ISO 15924 assigns four-letter +codes to scripts. For example, the code for Arabic is 'Arab'. The +four letter codes are encoded as a guint32 + by this function in a +big-endian fashion. That is, the code returned for Arabic is +0x41726162 (0x41 is ASCII code for 'A', 0x72 is ASCII code for 'r', etc).

+

See +Codes for the representation of names of scripts +for details.

+
+

Parameters

+
+++++ + + + + + +

script

a Unicode script

 
+
+
+

Returns

+

the ISO 15924 code for script +, encoded as an integer, +of zero if script +is G_UNICODE_SCRIPT_INVALID_CODE or +ISO 15924 code 'Zzzz' (script code for UNKNOWN) if script +is not understood.

+
+

Since: 2.30

+
+
+
+

g_utf8_next_char()

+
#define             g_utf8_next_char(p)
+

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.

+
+

Parameters

+
+++++ + + + + + +

p

Pointer to the start of a valid UTF-8 character

 
+
+
+
+
+

g_utf8_get_char ()

+
gunichar
+g_utf8_get_char (const gchar *p);
+

Converts a sequence of bytes encoded as UTF-8 to a Unicode character.

+

If p + does not point to a valid UTF-8 encoded character, results +are undefined. If you are not sure that the bytes are complete +valid Unicode characters, you should use g_utf8_get_char_validated() +instead.

+
+

Parameters

+
+++++ + + + + + +

p

a pointer to Unicode character encoded as UTF-8

 
+
+
+

Returns

+

the resulting character

+
+
+
+
+

g_utf8_get_char_validated ()

+
gunichar
+g_utf8_get_char_validated (const gchar *p,
+                           gssize max_len);
+

Convert a sequence of bytes encoded as UTF-8 to a Unicode character. +This function checks for incomplete characters, for invalid characters +such as characters that are out of the range of Unicode, and for +overlong encodings of valid characters.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

p

a pointer to Unicode character encoded as UTF-8

 

max_len

the maximum number of bytes to read, or -1, for no maximum or +if p +is nul-terminated

 
+
+
+

Returns

+

the resulting character. If p +points to a partial +sequence at the end of a string that could begin a valid +character (or if max_len +is zero), returns (gunichar)-2; +otherwise, if p +does not point to a valid UTF-8 encoded +Unicode character, returns (gunichar)-1.

+
+
+
+
+

g_utf8_offset_to_pointer ()

+
gchar *
+g_utf8_offset_to_pointer (const gchar *str,
+                          glong offset);
+

Converts from an integer character offset to a pointer to a position +within the string.

+

Since 2.10, this function allows to pass a negative offset + to +step backwards. It is usually worth stepping backwards from the end +instead of forwards if offset + is in the last fourth of the string, +since moving forward is about 3 times faster than moving backward.

+

Note that this function doesn't abort when reaching the end of str +. +Therefore you should be sure that offset + is within string boundaries +before calling that function. Call g_utf8_strlen() when unsure. +This limitation exists as this function is called frequently during +text rendering and therefore has to be as fast as possible.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

a UTF-8 encoded string

 

offset

a character offset within str +

 
+
+
+

Returns

+

the resulting pointer

+
+
+
+
+

g_utf8_pointer_to_offset ()

+
glong
+g_utf8_pointer_to_offset (const gchar *str,
+                          const gchar *pos);
+

Converts from a pointer to position within a string to a integer +character offset.

+

Since 2.10, this function allows pos + to be before str +, and returns +a negative offset in this case.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

a UTF-8 encoded string

 

pos

a pointer to a position within str +

 
+
+
+

Returns

+

the resulting character offset

+
+
+
+
+

g_utf8_prev_char ()

+
gchar *
+g_utf8_prev_char (const gchar *p);
+

Finds the previous UTF-8 character in the string before p +.

+

p + does not have to be at the beginning of a UTF-8 character. No check +is made to see if the character found is actually valid other than +it starts with an appropriate byte. If p + might be the first +character of the string, you must use g_utf8_find_prev_char() instead.

+
+

Parameters

+
+++++ + + + + + +

p

a pointer to a position within a UTF-8 encoded string

 
+
+
+

Returns

+

a pointer to the found character

+
+
+
+
+

g_utf8_find_next_char ()

+
gchar *
+g_utf8_find_next_char (const gchar *p,
+                       const gchar *end);
+

Finds the start of the next UTF-8 character in the string after p +.

+

p + does not have to be at the beginning of a UTF-8 character. No check +is made to see if the character found is actually valid other than +it starts with an appropriate byte.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

p

a pointer to a position within a UTF-8 encoded string

 

end

a pointer to the byte following the end of the string, +or NULL to indicate that the string is nul-terminated.

[nullable]
+
+
+

Returns

+

a pointer to the found character or NULL

+
+
+
+
+

g_utf8_find_prev_char ()

+
gchar *
+g_utf8_find_prev_char (const gchar *str,
+                       const gchar *p);
+

Given a position p + with a UTF-8 encoded string str +, find the start +of the previous UTF-8 character starting before p +. Returns NULL if no +UTF-8 characters are present in str + before p +.

+

p + does not have to be at the beginning of a UTF-8 character. No check +is made to see if the character found is actually valid other than +it starts with an appropriate byte.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

pointer to the beginning of a UTF-8 encoded string

 

p

pointer to some position within str +

 
+
+
+

Returns

+

a pointer to the found character or NULL.

+
+
+
+
+

g_utf8_strlen ()

+
glong
+g_utf8_strlen (const gchar *p,
+               gssize max);
+

Computes the length of the string in characters, not including +the terminating nul character. If the max +'th byte falls in the +middle of a character, the last (partial) character is not counted.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

p

pointer to the start of a UTF-8 encoded string

 

max

the maximum number of bytes to examine. If max +is less than 0, then the string is assumed to be +nul-terminated. If max +is 0, p +will not be examined and +may be NULL. If max +is greater than 0, up to max +bytes are examined

 
+
+
+

Returns

+

the length of the string in characters

+
+
+
+
+

g_utf8_strncpy ()

+
gchar *
+g_utf8_strncpy (gchar *dest,
+                const gchar *src,
+                gsize n);
+

Like the standard C strncpy() function, but copies a given number +of characters instead of a given number of bytes. The src + string +must be valid UTF-8 encoded text. (Use g_utf8_validate() on all +text before trying to use UTF-8 utility functions with it.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

dest

buffer to fill with characters from src +

 

src

UTF-8 encoded string

 

n

character count

 
+
+
+

Returns

+

dest +

+
+
+
+
+

g_utf8_strchr ()

+
gchar *
+g_utf8_strchr (const gchar *p,
+               gssize len,
+               gunichar c);
+

Finds the leftmost occurrence of the given Unicode character +in a UTF-8 encoded string, while limiting the search to len + bytes. +If len + is -1, allow unbounded search.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

p

a nul-terminated UTF-8 encoded string

 

len

the maximum length of p +

 

c

a Unicode character

 
+
+
+

Returns

+

NULL if the string does not contain the character, +otherwise, a pointer to the start of the leftmost occurrence +of the character in the string.

+
+
+
+
+

g_utf8_strrchr ()

+
gchar *
+g_utf8_strrchr (const gchar *p,
+                gssize len,
+                gunichar c);
+

Find the rightmost occurrence of the given Unicode character +in a UTF-8 encoded string, while limiting the search to len + bytes. +If len + is -1, allow unbounded search.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

p

a nul-terminated UTF-8 encoded string

 

len

the maximum length of p +

 

c

a Unicode character

 
+
+
+

Returns

+

NULL if the string does not contain the character, +otherwise, a pointer to the start of the rightmost occurrence +of the character in the string.

+
+
+
+
+

g_utf8_strreverse ()

+
gchar *
+g_utf8_strreverse (const gchar *str,
+                   gssize len);
+

Reverses a UTF-8 string. str + must be valid UTF-8 encoded text. +(Use g_utf8_validate() on all text before trying to use UTF-8 +utility functions with it.)

+

This function is intended for programmatic uses of reversed strings. +It pays no attention to decomposed characters, combining marks, byte +order marks, directional indicators (LRM, LRO, etc) and similar +characters which might need special handling when reversing a string +for display purposes.

+

Note that unlike g_strreverse(), this function returns +newly-allocated memory, which should be freed with g_free() when +no longer needed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

a UTF-8 encoded string

 

len

the maximum length of str +to use, in bytes. If len +< 0, +then the string is nul-terminated.

 
+
+
+

Returns

+

a newly-allocated string which is the reverse of str +

+
+

Since: 2.2

+
+
+
+

g_utf8_substring ()

+
gchar *
+g_utf8_substring (const gchar *str,
+                  glong start_pos,
+                  glong end_pos);
+

Copies a substring out of a UTF-8 encoded string. +The substring will contain end_pos + - start_pos + characters.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

str

a UTF-8 encoded string

 

start_pos

a character offset within str +

 

end_pos

another character offset within str +

 
+
+
+

Returns

+

a newly allocated copy of the requested +substring. Free with g_free() when no longer needed.

+
+

Since: 2.30

+
+
+
+

g_utf8_validate ()

+
gboolean
+g_utf8_validate (const gchar *str,
+                 gssize max_len,
+                 const gchar **end);
+

Validates UTF-8 encoded text. str + is the text to validate; +if str + is nul-terminated, then max_len + can be -1, otherwise +max_len + should be the number of bytes to validate. +If end + is non-NULL, then the end of the valid range +will be stored there (i.e. the start of the first invalid +character if some bytes were invalid, or the end of the text +being validated otherwise).

+

Note that g_utf8_validate() returns FALSE if max_len + is +positive and any of the max_len + bytes are nul.

+

Returns TRUE if all of str + was valid. Many GLib and GTK+ +routines require valid UTF-8 as input; so data read from a file +or the network should be checked with g_utf8_validate() before +doing anything else with it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

str

a pointer to character data.

[array length=max_len][element-type guint8]

max_len

max bytes to validate, or -1 to go until NUL

 

end

return location for end of valid data.

[allow-none][out][transfer none]
+
+
+

Returns

+

TRUE if the text was valid UTF-8

+
+
+
+
+

g_utf8_strup ()

+
gchar *
+g_utf8_strup (const gchar *str,
+              gssize len);
+

Converts all Unicode characters in the string that have a case +to uppercase. The exact manner that this is done depends +on the current locale, and may result in the number of +characters in the string increasing. (For instance, the +German ess-zet will be changed to SS.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

a UTF-8 encoded string

 

len

length of str +, in bytes, or -1 if str +is nul-terminated.

 
+
+
+

Returns

+

a newly allocated string, with all characters +converted to uppercase.

+
+
+
+
+

g_utf8_strdown ()

+
gchar *
+g_utf8_strdown (const gchar *str,
+                gssize len);
+

Converts all Unicode characters in the string that have a case +to lowercase. The exact manner that this is done depends +on the current locale, and may result in the number of +characters in the string changing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

a UTF-8 encoded string

 

len

length of str +, in bytes, or -1 if str +is nul-terminated.

 
+
+
+

Returns

+

a newly allocated string, with all characters +converted to lowercase.

+
+
+
+
+

g_utf8_casefold ()

+
gchar *
+g_utf8_casefold (const gchar *str,
+                 gssize len);
+

Converts a string into a form that is independent of case. The +result will not correspond to any particular case, but can be +compared for equality or ordered with the results of calling +g_utf8_casefold() on other strings.

+

Note that calling g_utf8_casefold() followed by g_utf8_collate() is +only an approximation to the correct linguistic case insensitive +ordering, though it is a fairly good one. Getting this exactly +right would require a more sophisticated collation function that +takes case sensitivity into account. GLib does not currently +provide such a function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

a UTF-8 encoded string

 

len

length of str +, in bytes, or -1 if str +is nul-terminated.

 
+
+
+

Returns

+

a newly allocated string, that is a +case independent form of str +.

+
+
+
+
+

g_utf8_normalize ()

+
gchar *
+g_utf8_normalize (const gchar *str,
+                  gssize len,
+                  GNormalizeMode mode);
+

Converts a string into 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. The +string has to be valid UTF-8, otherwise NULL is +returned. You should generally call g_utf8_normalize() +before comparing two Unicode strings.

+

The normalization mode G_NORMALIZE_DEFAULT only +standardizes differences that do not affect the +text content, such as the above-mentioned accent +representation. G_NORMALIZE_ALL also standardizes +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_DEFAULT_COMPOSE and G_NORMALIZE_ALL_COMPOSE +are like G_NORMALIZE_DEFAULT and G_NORMALIZE_ALL, +but returned a result with composed forms rather +than a maximally decomposed form. This is often +useful if you intend to convert the string to +a legacy encoding or pass it to a system with +less capable Unicode handling.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

str

a UTF-8 encoded string.

 

len

length of str +, in bytes, or -1 if str +is nul-terminated.

 

mode

the type of normalization to perform.

 
+
+
+

Returns

+

a newly allocated string, that is the +normalized form of str +, or NULL if str +is not +valid UTF-8.

+
+
+
+
+

g_utf8_collate ()

+
gint
+g_utf8_collate (const gchar *str1,
+                const gchar *str2);
+

Compares two strings for ordering using the linguistically +correct rules for the current locale. +When sorting a large number of strings, it will be significantly +faster to obtain collation keys with g_utf8_collate_key() and +compare the keys with strcmp() when sorting instead of sorting +the original strings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str1

a UTF-8 encoded string

 

str2

a UTF-8 encoded string

 
+
+
+

Returns

+

< 0 if str1 +compares before str2 +, +0 if they compare equal, > 0 if str1 +compares after str2 +.

+
+
+
+
+

g_utf8_collate_key ()

+
gchar *
+g_utf8_collate_key (const gchar *str,
+                    gssize len);
+

Converts a string into a collation key that can be compared +with other collation keys produced by the same function using +strcmp().

+

The results of comparing the collation keys of two strings +with strcmp() will always be the same as comparing the two +original keys with g_utf8_collate().

+

Note that this function depends on the current locale.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

a UTF-8 encoded string.

 

len

length of str +, in bytes, or -1 if str +is nul-terminated.

 
+
+
+

Returns

+

a newly allocated string. This string should +be freed with g_free() when you are done with it.

+
+
+
+
+

g_utf8_collate_key_for_filename ()

+
gchar *
+g_utf8_collate_key_for_filename (const gchar *str,
+                                 gssize len);
+

Converts a string into a collation key that can be compared +with other collation keys produced by the same function using strcmp().

+

In order to sort filenames correctly, this function treats the dot '.' +as a special case. Most dictionary orderings seem to consider it +insignificant, thus producing the ordering "event.c" "eventgenerator.c" +"event.h" instead of "event.c" "event.h" "eventgenerator.c". Also, we +would like to treat numbers intelligently so that "file1" "file10" "file5" +is sorted as "file1" "file5" "file10".

+

Note that this function depends on the current locale.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

str

a UTF-8 encoded string.

 

len

length of str +, in bytes, or -1 if str +is nul-terminated.

 
+
+
+

Returns

+

a newly allocated string. This string should +be freed with g_free() when you are done with it.

+
+

Since: 2.8

+
+
+
+

g_utf8_to_utf16 ()

+
gunichar2 *
+g_utf8_to_utf16 (const gchar *str,
+                 glong len,
+                 glong *items_read,
+                 glong *items_written,
+                 GError **error);
+

Convert a string from UTF-8 to UTF-16. A 0 character will be +added to the result after the converted text.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

str

a UTF-8 encoded string

 

len

the maximum length (number of bytes) of str +to use. +If len +< 0, then the string is nul-terminated.

 

items_read

location to store number of +bytes read, or NULL. If NULL, then G_CONVERT_ERROR_PARTIAL_INPUT will +be returned in case str +contains a trailing partial character. If +an error occurs then the index of the invalid input is stored here.

[out caller-allocates][optional]

items_written

location to store number +of gunichar2 written, or NULL. The value stored here does not include +the trailing 0.

[out caller-allocates][optional]

error

location to store the error occurring, or NULL to ignore +errors. Any of the errors in GConvertError other than +G_CONVERT_ERROR_NO_CONVERSION may occur.

 
+
+
+

Returns

+

a pointer to a newly allocated UTF-16 string. +This value must be freed with g_free(). If an error occurs, +NULL will be returned and error +set.

+
+
+
+
+

g_utf8_to_ucs4 ()

+
gunichar *
+g_utf8_to_ucs4 (const gchar *str,
+                glong len,
+                glong *items_read,
+                glong *items_written,
+                GError **error);
+

Convert a string from UTF-8 to a 32-bit fixed width +representation as UCS-4. A trailing 0 character will be added to the +string after the converted text.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

str

a UTF-8 encoded string

 

len

the maximum length of str +to use, in bytes. If len +< 0, +then the string is nul-terminated.

 

items_read

location to store number of +bytes read, or NULL. +If NULL, then G_CONVERT_ERROR_PARTIAL_INPUT will be +returned in case str +contains a trailing partial +character. If an error occurs then the index of the +invalid input is stored here.

[out caller-allocates][optional]

items_written

location to store number +of characters written or NULL. The value here stored does not include +the trailing 0 character.

[out caller-allocates][optional]

error

location to store the error occurring, or NULL to ignore +errors. Any of the errors in GConvertError other than +G_CONVERT_ERROR_NO_CONVERSION may occur.

 
+
+
+

Returns

+

a pointer to a newly allocated UCS-4 string. +This value must be freed with g_free(). If an error occurs, +NULL will be returned and error +set.

+
+
+
+
+

g_utf8_to_ucs4_fast ()

+
gunichar *
+g_utf8_to_ucs4_fast (const gchar *str,
+                     glong len,
+                     glong *items_written);
+

Convert a string from UTF-8 to a 32-bit fixed width +representation as UCS-4, assuming valid UTF-8 input. +This function is roughly twice as fast as g_utf8_to_ucs4() +but does no error checking on the input. A trailing 0 character +will be added to the string after the converted text.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

str

a UTF-8 encoded string

 

len

the maximum length of str +to use, in bytes. If len +< 0, +then the string is nul-terminated.

 

items_written

location to store the +number of characters in the result, or NULL.

[out caller-allocates][optional]
+
+
+

Returns

+

a pointer to a newly allocated UCS-4 string. +This value must be freed with g_free().

+
+
+
+
+

g_utf16_to_ucs4 ()

+
gunichar *
+g_utf16_to_ucs4 (const gunichar2 *str,
+                 glong len,
+                 glong *items_read,
+                 glong *items_written,
+                 GError **error);
+

Convert a string from UTF-16 to UCS-4. The result will be +nul-terminated.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

str

a UTF-16 encoded string

 

len

the maximum length (number of gunichar2) of str +to use. +If len +< 0, then the string is nul-terminated.

 

items_read

location to store number of +words read, or NULL. If NULL, then G_CONVERT_ERROR_PARTIAL_INPUT will +be returned in case str +contains a trailing partial character. If +an error occurs then the index of the invalid input is stored here.

[out caller-allocates][optional]

items_written

location to store number +of characters written, or NULL. The value stored here does not include +the trailing 0 character.

[out caller-allocates][optional]

error

location to store the error occurring, or NULL to ignore +errors. Any of the errors in GConvertError other than +G_CONVERT_ERROR_NO_CONVERSION may occur.

 
+
+
+

Returns

+

a pointer to a newly allocated UCS-4 string. +This value must be freed with g_free(). If an error occurs, +NULL will be returned and error +set.

+
+
+
+
+

g_utf16_to_utf8 ()

+
gchar *
+g_utf16_to_utf8 (const gunichar2 *str,
+                 glong len,
+                 glong *items_read,
+                 glong *items_written,
+                 GError **error);
+

Convert a string from UTF-16 to UTF-8. The result will be +terminated with a 0 byte.

+

Note that the input is expected to be already in native endianness, +an initial byte-order-mark character is not handled specially. +g_convert() can be used to convert a byte buffer of UTF-16 data of +ambiguous endianess.

+

Further note that this function does not validate the result +string; it may e.g. include embedded NUL characters. The only +validation done by this function is to ensure that the input can +be correctly interpreted as UTF-16, i.e. it doesn't contain +things unpaired surrogates.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

str

a UTF-16 encoded string

 

len

the maximum length (number of gunichar2) of str +to use. +If len +< 0, then the string is nul-terminated.

 

items_read

location to store number of +words read, or NULL. If NULL, then G_CONVERT_ERROR_PARTIAL_INPUT will +be returned in case str +contains a trailing partial character. If +an error occurs then the index of the invalid input is stored here.

[out caller-allocates][optional]

items_written

location to store number +of bytes written, or NULL. The value stored here does not include the +trailing 0 byte.

[out caller-allocates][optional]

error

location to store the error occurring, or NULL to ignore +errors. Any of the errors in GConvertError other than +G_CONVERT_ERROR_NO_CONVERSION may occur.

 
+
+
+

Returns

+

a pointer to a newly allocated UTF-8 string. +This value must be freed with g_free(). If an error occurs, +NULL will be returned and error +set.

+
+
+
+
+

g_ucs4_to_utf16 ()

+
gunichar2 *
+g_ucs4_to_utf16 (const gunichar *str,
+                 glong len,
+                 glong *items_read,
+                 glong *items_written,
+                 GError **error);
+

Convert a string from UCS-4 to UTF-16. A 0 character will be +added to the result after the converted text.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

str

a UCS-4 encoded string

 

len

the maximum length (number of characters) of str +to use. +If len +< 0, then the string is nul-terminated.

 

items_read

location to store number of +bytes read, or NULL. If an error occurs then the index of the invalid +input is stored here.

[out caller-allocates][optional]

items_written

location to store number +of gunichar2 written, or NULL. The value stored here does not include +the trailing 0.

[out caller-allocates][optional]

error

location to store the error occurring, or NULL to ignore +errors. Any of the errors in GConvertError other than +G_CONVERT_ERROR_NO_CONVERSION may occur.

 
+
+
+

Returns

+

a pointer to a newly allocated UTF-16 string. +This value must be freed with g_free(). If an error occurs, +NULL will be returned and error +set.

+
+
+
+
+

g_ucs4_to_utf8 ()

+
gchar *
+g_ucs4_to_utf8 (const gunichar *str,
+                glong len,
+                glong *items_read,
+                glong *items_written,
+                GError **error);
+

Convert a string from a 32-bit fixed width representation as UCS-4. +to UTF-8. The result will be terminated with a 0 byte.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

str

a UCS-4 encoded string

 

len

the maximum length (number of characters) of str +to use. +If len +< 0, then the string is nul-terminated.

 

items_read

location to store number of +characters read, or NULL.

[out caller-allocates][optional]

items_written

location to store number +of bytes written or NULL. The value here stored does not include the +trailing 0 byte.

[out caller-allocates][optional]

error

location to store the error occurring, or NULL to ignore +errors. Any of the errors in GConvertError other than +G_CONVERT_ERROR_NO_CONVERSION may occur.

 
+
+
+

Returns

+

a pointer to a newly allocated UTF-8 string. +This value must be freed with g_free(). If an error occurs, +NULL will be returned and error +set. In that case, items_read +will be set to the position of the first invalid input character.

+
+
+
+
+

g_unichar_to_utf8 ()

+
gint
+g_unichar_to_utf8 (gunichar c,
+                   gchar *outbuf);
+

Converts a single character to UTF-8.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

c

a Unicode character code

 

outbuf

output buffer, must have at +least 6 bytes of space. If NULL, the length will be computed and +returned and nothing will be written to outbuf +.

[out caller-allocates][optional]
+
+
+

Returns

+

number of bytes written

+
+
+
+
+

Types and Values

+
+

gunichar

+
typedef guint32 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".

+
+ + + + + + + +
1
+2
+3
gunichar c;
+sscanf ("U+0041", "U+%06"G_GINT32_FORMAT"X", &c)
+g_print ("Read U+%04"G_GINT32_FORMAT"X", c);
+
+ +

+
+
+
+

gunichar2

+
typedef guint16 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.

+
+
+
+

G_UNICHAR_MAX_DECOMPOSITION_LENGTH

+
#define G_UNICHAR_MAX_DECOMPOSITION_LENGTH 18 /* codepoints */
+
+

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

+
+
+
+

enum GUnicodeType

+

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>.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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)

+
 
+
+
+
+
+

G_UNICODE_COMBINING_MARK

+
#define G_UNICODE_COMBINING_MARK G_UNICODE_SPACING_MARK
+
+
+

G_UNICODE_COMBINING_MARK has been deprecated since version 2.30 and should not be used in newly-written code.

+

Use G_UNICODE_SPACING_MARK.

+
+

Older name for G_UNICODE_SPACING_MARK.

+
+
+
+

enum GUnicodeBreakType

+

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>.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

+
 
+
+
+
+
+

enum GUnicodeScript

+

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>.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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 + 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

+
 

G_UNICODE_SCRIPT_BASSA_VAH

+

Bassa. Since: 2.42

+
 

G_UNICODE_SCRIPT_CAUCASIAN_ALBANIAN

+

Caucasian Albanian. Since: 2.42

+
 

G_UNICODE_SCRIPT_DUPLOYAN

+

Duployan. Since: 2.42

+
 

G_UNICODE_SCRIPT_ELBASAN

+

Elbasan. Since: 2.42

+
 

G_UNICODE_SCRIPT_GRANTHA

+

Grantha. Since: 2.42

+
 

G_UNICODE_SCRIPT_KHOJKI

+

Kjohki. Since: 2.42

+
 

G_UNICODE_SCRIPT_KHUDAWADI

+

Khudawadi, Sindhi. Since: 2.42

+
 

G_UNICODE_SCRIPT_LINEAR_A

+

Linear A. Since: 2.42

+
 

G_UNICODE_SCRIPT_MAHAJANI

+

Mahajani. Since: 2.42

+
 

G_UNICODE_SCRIPT_MANICHAEAN

+

Manichaean. Since: 2.42

+
 

G_UNICODE_SCRIPT_MENDE_KIKAKUI

+

Mende Kikakui. Since: 2.42

+
 

G_UNICODE_SCRIPT_MODI

+

Modi. Since: 2.42

+
 

G_UNICODE_SCRIPT_MRO

+

Mro. Since: 2.42

+
 

G_UNICODE_SCRIPT_NABATAEAN

+

Nabataean. Since: 2.42

+
 

G_UNICODE_SCRIPT_OLD_NORTH_ARABIAN

+

Old North Arabian. Since: 2.42

+
 

G_UNICODE_SCRIPT_OLD_PERMIC

+

Old Permic. Since: 2.42

+
 

G_UNICODE_SCRIPT_PAHAWH_HMONG

+

Pahawh Hmong. Since: 2.42

+
 

G_UNICODE_SCRIPT_PALMYRENE

+

Palmyrene. Since: 2.42

+
 

G_UNICODE_SCRIPT_PAU_CIN_HAU

+

Pau Cin Hau. Since: 2.42

+
 

G_UNICODE_SCRIPT_PSALTER_PAHLAVI

+

Psalter Pahlavi. Since: 2.42

+
 

G_UNICODE_SCRIPT_SIDDHAM

+

Siddham. Since: 2.42

+
 

G_UNICODE_SCRIPT_TIRHUTA

+

Tirhuta. Since: 2.42

+
 

G_UNICODE_SCRIPT_WARANG_CITI

+

Warang Citi. Since: 2.42

+
 

G_UNICODE_SCRIPT_AHOM

+

Ahom. Since: 2.48

+
 

G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS

+

Anatolian Hieroglyphs. Since: 2.48

+
 

G_UNICODE_SCRIPT_HATRAN

+

Hatran. Since: 2.48

+
 

G_UNICODE_SCRIPT_MULTANI

+

Multani. Since: 2.48

+
 

G_UNICODE_SCRIPT_OLD_HUNGARIAN

+

Old Hungarian. Since: 2.48

+
 

G_UNICODE_SCRIPT_SIGNWRITING

+

Signwriting. Since: 2.48

+
 
+
+
+
+
+

enum GNormalizeMode

+

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.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

+
 
+
+
+
+
+

See Also

+

g_locale_to_utf8(), g_locale_from_utf8()

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Version-Information.html b/docs/reference/glib/html/glib-Version-Information.html new file mode 100644 index 0000000..07c9977 --- /dev/null +++ b/docs/reference/glib/html/glib-Version-Information.html @@ -0,0 +1,519 @@ + + + + +Version Information: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Version Information

+

Version Information — variables and functions to check the GLib version

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
const gchar * + +glib_check_version () +
#define +GLIB_CHECK_VERSION() +
#defineGLIB_VERSION_2_26
#defineGLIB_VERSION_2_28
#defineGLIB_VERSION_2_30
#defineGLIB_VERSION_2_32
#defineGLIB_VERSION_2_34
#defineGLIB_VERSION_2_36
#defineGLIB_VERSION_2_38
#defineGLIB_VERSION_2_40
#defineGLIB_VERSION_2_42
#defineGLIB_VERSION_2_44
#defineGLIB_VERSION_2_46
#defineGLIB_VERSION_2_48
#defineGLIB_VERSION_MIN_REQUIRED
#defineGLIB_VERSION_MAX_ALLOWED
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
extern const guint glib_major_version
extern const guint glib_minor_version
extern const guint glib_micro_version
extern const guint glib_binary_age
extern const guint glib_interface_age
#defineGLIB_MAJOR_VERSION
#defineGLIB_MINOR_VERSION
#defineGLIB_MICRO_VERSION
#defineGLIB_DISABLE_DEPRECATION_WARNINGS
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

GLib provides version information, primarily useful in configure +checks for builds that have a configure script. Applications will +not typically use the features described here.

+

The GLib headers annotate deprecated APIs in a way that produces +compiler warnings if these deprecated APIs are used. The warnings +can be turned off by defining the macro GLIB_DISABLE_DEPRECATION_WARNINGS +before including the glib.h header.

+

GLib also provides support for building applications against +defined subsets of deprecated or new GLib APIs. Define the macro +GLIB_VERSION_MIN_REQUIRED to specify up to what version of GLib +you want to receive warnings about deprecated APIs. Define the +macro GLIB_VERSION_MAX_ALLOWED to specify the newest version of +GLib whose API you want to use.

+
+
+

Functions

+
+

glib_check_version ()

+
const gchar *
+glib_check_version (guint required_major,
+                    guint required_minor,
+                    guint required_micro);
+

Checks that the GLib library in use is compatible with the +given version. Generally you would pass in the constants +GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION +as the three arguments to this function; that produces +a check that the library in use is compatible with +the version of GLib the application or module was compiled +against.

+

Compatibility is defined by two things: first the version +of the running library is newer than the version +required_major.required_minor +.required_micro +. Second +the running library must be binary compatible with the +version required_major.required_minor +.required_micro + +(same major version.)

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

required_major

the required major version

 

required_minor

the required minor version

 

required_micro

the required micro version

 
+
+
+

Returns

+

NULL if the GLib library is compatible with the +given version, or a string describing the version mismatch. +The returned string is owned by GLib and must not be modified +or freed.

+
+

Since: 2.6

+
+
+
+

GLIB_CHECK_VERSION()

+
#define             GLIB_CHECK_VERSION(major,minor,micro)
+

Checks the version of the GLib library that is being compiled +against. See glib_check_version() for a runtime check.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

major

the major version to check for

 

minor

the minor version to check for

 

micro

the micro version to check for

 
+
+
+

Returns

+

TRUE if the version of the GLib header files +is the same as or newer than the passed-in version.

+
+
+
+
+

GLIB_VERSION_2_26

+
#define GLIB_VERSION_2_26       (G_ENCODE_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

+
+
+
+

GLIB_VERSION_2_28

+
#define GLIB_VERSION_2_28       (G_ENCODE_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

+
+
+
+

GLIB_VERSION_2_30

+
#define GLIB_VERSION_2_30       (G_ENCODE_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

+
+
+
+

GLIB_VERSION_2_32

+
#define GLIB_VERSION_2_32       (G_ENCODE_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

+
+
+
+

GLIB_VERSION_2_34

+
#define GLIB_VERSION_2_34       (G_ENCODE_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

+
+
+
+

GLIB_VERSION_2_36

+
#define GLIB_VERSION_2_36       (G_ENCODE_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

+
+
+
+

GLIB_VERSION_2_38

+
#define GLIB_VERSION_2_38       (G_ENCODE_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

+
+
+
+

GLIB_VERSION_2_40

+
#define GLIB_VERSION_2_40       (G_ENCODE_VERSION (2, 40))
+
+

A macro that evaluates to the 2.40 version of GLib, in a format +that can be used by the C pre-processor.

+

Since: 2.40

+
+
+
+

GLIB_VERSION_2_42

+
#define GLIB_VERSION_2_42       (G_ENCODE_VERSION (2, 42))
+
+

A macro that evaluates to the 2.42 version of GLib, in a format +that can be used by the C pre-processor.

+

Since: 2.42

+
+
+
+

GLIB_VERSION_2_44

+
#define GLIB_VERSION_2_44       (G_ENCODE_VERSION (2, 44))
+
+

A macro that evaluates to the 2.44 version of GLib, in a format +that can be used by the C pre-processor.

+

Since: 2.44

+
+
+
+

GLIB_VERSION_2_46

+
#define GLIB_VERSION_2_46       (G_ENCODE_VERSION (2, 46))
+
+

A macro that evaluates to the 2.46 version of GLib, in a format +that can be used by the C pre-processor.

+

Since: 2.46

+
+
+
+

GLIB_VERSION_2_48

+
#define GLIB_VERSION_2_48       (G_ENCODE_VERSION (2, 48))
+
+

A macro that evaluates to the 2.48 version of GLib, in a format +that can be used by the C pre-processor.

+

Since: 2.48

+
+
+
+

GLIB_VERSION_MIN_REQUIRED

+
# define GLIB_VERSION_MIN_REQUIRED      (GLIB_VERSION_CUR_STABLE)
+
+

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

+
+
+
+

GLIB_VERSION_MAX_ALLOWED

+
# define GLIB_VERSION_MAX_ALLOWED      (GLIB_VERSION_CUR_STABLE)
+
+

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

+
+
+
+

Types and Values

+
+

glib_major_version

+
extern const guint glib_major_version;
+
+

The major version of the GLib library.

+

An integer variable exported from the library linked +against at application run time.

+
+
+
+

glib_minor_version

+
extern const guint glib_minor_version;
+
+

The minor version number of the GLib library.

+

An integer variable exported from the library linked +against at application run time.

+
+
+
+

glib_micro_version

+
extern const guint glib_micro_version;
+
+

The micro version number of the GLib library.

+

An integer variable exported from the library linked +against at application run time.

+
+
+
+

glib_binary_age

+
extern const guint glib_binary_age;
+
+

The binary age of the GLib library. +Defines how far back backwards compatibility reaches.

+

An integer variable exported from the library linked +against at application run time.

+
+
+
+

glib_interface_age

+
extern const guint glib_interface_age;
+
+

The interface age of the GLib library. +Defines how far back the API has last been extended.

+

An integer variable exported from the library linked +against at application run time.

+
+
+
+

GLIB_MAJOR_VERSION

+
#define GLIB_MAJOR_VERSION 2
+
+

The major version number of the GLib library.

+

Like glib_major_version, but from the headers used at +application compile time, rather than from the library +linked against at application run time.

+
+
+
+

GLIB_MINOR_VERSION

+
#define GLIB_MINOR_VERSION 48
+
+

The minor version number of the GLib library.

+

Like gtk_minor_version, but from the headers used at +application compile time, rather than from the library +linked against at application run time.

+
+
+
+

GLIB_MICRO_VERSION

+
#define GLIB_MICRO_VERSION 0
+
+

The micro version number of the GLib library.

+

Like gtk_micro_version, but from the headers used at +application compile time, rather than from the library +linked against at application run time.

+
+
+
+

GLIB_DISABLE_DEPRECATION_WARNINGS

+
#ifdef GLIB_DISABLE_DEPRECATION_WARNINGS
+
+

A macro that should be defined before including the glib.h header. +If it is defined, no compiler warnings will be produced for uses +of deprecated GLib APIs.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Warnings-and-Assertions.html b/docs/reference/glib/html/glib-Warnings-and-Assertions.html new file mode 100644 index 0000000..c338d17 --- /dev/null +++ b/docs/reference/glib/html/glib-Warnings-and-Assertions.html @@ -0,0 +1,595 @@ + + + + +Message Output and Debugging Functions: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Message Output and Debugging Functions

+

Message Output and Debugging Functions — functions to output messages and help debug applications

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +g_print () +
+GPrintFunc + +g_set_print_handler () +
+void + +(*GPrintFunc) () +
+void + +g_printerr () +
+GPrintFunc + +g_set_printerr_handler () +
#define +g_return_if_fail() +
#define +g_return_val_if_fail() +
#defineg_return_if_reached
#define +g_return_val_if_reached() +
#define +g_warn_if_fail() +
#defineg_warn_if_reached
+void + +g_on_error_query () +
+void + +g_on_error_stack_trace () +
#defineG_BREAKPOINT
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

These functions provide support for outputting messages.

+

The g_return family of macros (g_return_if_fail(), +g_return_val_if_fail(), g_return_if_reached(), +g_return_val_if_reached()) should only be used for programming +errors, a typical use case is checking for invalid parameters at +the beginning of a public function. They should not be used if +you just mean "if (error) return", they should only be used if +you mean "if (bug in program) return". The program behavior is +generally considered undefined after one of these checks fails. +They are not intended for normal control flow, only to give a +perhaps-helpful warning before giving up.

+
+
+

Functions

+
+

g_print ()

+
void
+g_print (const gchar *format,
+         ...);
+

Outputs a formatted message via the print handler. +The default print handler simply outputs the message to stdout, without +appending a trailing new-line character. Typically, format + should end with +its own new-line character.

+

g_print() should not be used from within libraries for debugging +messages, since it may be redirected by applications to special +purpose message windows or even files. Instead, libraries should +use g_log(), or the convenience functions g_message(), g_warning() +and g_error().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format

the message format. See the printf() documentation

 

...

the parameters to insert into the format string

 
+
+
+
+
+

g_set_print_handler ()

+
GPrintFunc
+g_set_print_handler (GPrintFunc func);
+

Sets the print handler.

+

Any messages passed to g_print() will be output via +the new handler. The default handler simply outputs +the message to stdout. By providing your own handler +you can redirect the output, to a GTK+ widget or a +log file for example.

+
+

Parameters

+
+++++ + + + + + +

func

the new print handler

 
+
+
+

Returns

+

the old print handler

+
+
+
+
+

GPrintFunc ()

+
void
+(*GPrintFunc) (const gchar *string);
+

Specifies the type of the print handler functions. +These are called with the complete formatted string to output.

+
+

Parameters

+
+++++ + + + + + +

string

the message to output

 
+
+
+
+
+

g_printerr ()

+
void
+g_printerr (const gchar *format,
+            ...);
+

Outputs a formatted message via the error message handler. +The default handler simply outputs the message to stderr, without appending +a trailing new-line character. Typically, format + should end with its own +new-line character.

+

g_printerr() should not be used from within libraries. +Instead g_log() should be used, or the convenience functions +g_message(), g_warning() and g_error().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

format

the message format. See the printf() documentation

 

...

the parameters to insert into the format string

 
+
+
+
+
+

g_set_printerr_handler ()

+
GPrintFunc
+g_set_printerr_handler (GPrintFunc func);
+

Sets the handler for printing error messages.

+

Any messages passed to g_printerr() will be output via +the new handler. The default handler simply outputs the +message to stderr. By providing your own handler you can +redirect the output, to a GTK+ widget or a log file for +example.

+
+

Parameters

+
+++++ + + + + + +

func

the new error message handler

 
+
+
+

Returns

+

the old error message handler

+
+
+
+
+

g_return_if_fail()

+
#define             g_return_if_fail(expr)
+

Verifies that the expression expr +, usually representing a precondition, +evaluates to TRUE. If the function returns a value, use +g_return_val_if_fail() instead.

+

If expr + evaluates to FALSE, the current function should be considered to +have undefined behaviour (a programmer error). The only correct solution +to such an error is to change the module that is calling the current +function, so that it avoids this incorrect call.

+

To make this undefined behaviour visible, if expr + evaluates to FALSE, +the result is usually that a critical message is logged and the current +function returns.

+

If G_DISABLE_CHECKS is defined then the check is not performed. You +should therefore not depend on any side effects of expr +.

+
+

Parameters

+
+++++ + + + + + +

expr

the expression to check

 
+
+
+
+
+

g_return_val_if_fail()

+
#define             g_return_val_if_fail(expr,val)
+

Verifies that the expression expr +, usually representing a precondition, +evaluates to TRUE. If the function does not return a value, use +g_return_if_fail() instead.

+

If expr + evaluates to FALSE, the current function should be considered to +have undefined behaviour (a programmer error). The only correct solution +to such an error is to change the module that is calling the current +function, so that it avoids this incorrect call.

+

To make this undefined behaviour visible, if expr + evaluates to FALSE, +the result is usually that 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 +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

expr

the expression to check

 

val

the value to return from the current function +if the expression is not true

 
+
+
+
+
+

g_return_if_reached

+
#define             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.

+
+
+
+

g_return_val_if_reached()

+
#define             g_return_val_if_reached(val)
+

Logs a critical message and returns val +.

+
+

Parameters

+
+++++ + + + + + +

val

the value to return from the current function

 
+
+
+
+
+

g_warn_if_fail()

+
#define             g_warn_if_fail(expr)
+

Logs a warning if the expression is not true.

+
+

Parameters

+
+++++ + + + + + +

expr

the expression to check

 
+
+

Since: 2.16

+
+
+
+

g_warn_if_reached

+
#define             g_warn_if_reached()
+

Logs a warning.

+

Since: 2.16

+
+
+
+

g_on_error_query ()

+
void
+g_on_error_query (const gchar *prg_name);
+

Prompts the user with +[E]xit, [H]alt, show [S]tack trace or [P]roceed. +This function is intended to be used for debugging use only. +The following example shows how it can be used together with +the g_log() functions.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
#include <glib.h>
+
+static void
+log_handler (const gchar   *log_domain,
+             GLogLevelFlags log_level,
+             const gchar   *message,
+             gpointer       user_data)
+{
+  g_log_default_handler (log_domain, log_level, message, user_data);
+
+  g_on_error_query (MY_PROGRAM_NAME);
+}
+
+int
+main (int argc, char *argv[])
+{
+  g_log_set_handler (MY_LOG_DOMAIN,
+                     G_LOG_LEVEL_WARNING |
+                     G_LOG_LEVEL_ERROR |
+                     G_LOG_LEVEL_CRITICAL,
+                     log_handler,
+                     NULL);
+  ...
+
+ +

+

If "[E]xit" is selected, the application terminates with a call +to _exit(0).

+

If "[S]tack" trace is selected, g_on_error_stack_trace() is called. +This invokes gdb, which attaches to the current process and shows +a stack trace. The prompt is then shown again.

+

If "[P]roceed" is selected, the function returns.

+

This function may cause different actions on non-UNIX platforms.

+
+

Parameters

+
+++++ + + + + + +

prg_name

the program name, needed by gdb for the "[S]tack trace" +option. If prg_name +is NULL, g_get_prgname() is called to get +the program name (which will work correctly if gdk_init() or +gtk_init() has been called)

 
+
+
+
+
+

g_on_error_stack_trace ()

+
void
+g_on_error_stack_trace (const gchar *prg_name);
+

Invokes gdb, which attaches to the current process and shows a +stack trace. Called by g_on_error_query() when the "[S]tack trace" +option is selected. You can get the current process's program name +with g_get_prgname(), assuming that you have called gtk_init() or +gdk_init().

+

This function may cause different actions on non-UNIX platforms.

+
+

Parameters

+
+++++ + + + + + +

prg_name

the program name, needed by gdb for the "[S]tack trace" +option

 
+
+
+
+
+

G_BREAKPOINT

+
#  define G_BREAKPOINT()        G_STMT_START{ __asm__ __volatile__ ("int $03"); }G_STMT_END
+
+

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 SIGTRAP signal.

+
+
+
+

Types and Values

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-Windows-Compatibility-Functions.html b/docs/reference/glib/html/glib-Windows-Compatibility-Functions.html new file mode 100644 index 0000000..fad8702 --- /dev/null +++ b/docs/reference/glib/html/glib-Windows-Compatibility-Functions.html @@ -0,0 +1,699 @@ + + + + +Windows Compatibility Functions: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Windows Compatibility Functions

+

Windows Compatibility Functions — UNIX emulation on Windows

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +g_win32_check_windows_version () +
+gchar ** + +g_win32_get_command_line () +
+gchar * + +g_win32_error_message () +
+gchar * + +g_win32_getlocale () +
+gchar * + +g_win32_get_package_installation_directory () +
+gchar * + +g_win32_get_package_installation_directory_of_module () +
+gchar * + +g_win32_get_package_installation_subdirectory () +
+guint + +g_win32_get_windows_version () +
+gchar * + +g_win32_locale_filename_from_utf8 () +
#define +G_WIN32_DLLMAIN_FOR_DLL_NAME() +
#defineG_WIN32_HAVE_WIDECHAR_API
#defineG_WIN32_IS_NT_BASED
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
#defineMAXPATHLEN
enumGWin32OSType
+
+
+

Includes

+
#include <glib.h>
+
+
+
+

Description

+

These functions provide some level of UNIX emulation on the +Windows platform. If your application really needs the POSIX +APIs, we suggest you try the Cygwin project.

+
+
+

Functions

+
+

g_win32_check_windows_version ()

+
gboolean
+g_win32_check_windows_version (const gint major,
+                               const gint minor,
+                               const gint spver,
+                               const GWin32OSType os_type);
+

Returns whether the version of the Windows operating system the +code is running on is at least the specified major, minor and +service pack versions. See MSDN documentation for the Operating +System Version. Software that needs even more detailed version and +feature information should use the Win32 API VerifyVersionInfo() +directly.

+

Successive calls of this function can be used for enabling or +disabling features at run-time for a range of Windows versions, +as per the VerifyVersionInfo() API documentation.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

major

major version of Windows

 

minor

minor version of Windows

 

spver

Windows Service Pack Level, 0 if none

 

os_type

Type of Windows OS

 
+
+
+

Returns

+

TRUE if the Windows Version is the same or greater than +the specified major, minor and service pack versions, and +whether the running Windows is a workstation or server edition +of Windows, if specifically specified.

+
+

Since: 2.44

+
+
+
+

g_win32_get_command_line ()

+
gchar **
+g_win32_get_command_line (void);
+

Gets the command line arguments, on Windows, in the GLib filename +encoding (ie: UTF-8).

+

Normally, on Windows, the command line arguments are passed to main() +in the system codepage encoding. This prevents passing filenames as +arguments if the filenames contain characters that fall outside of +this codepage. If such filenames are passed, then substitutions +will occur (such as replacing some characters with '?').

+

GLib's policy of using UTF-8 as a filename encoding on Windows was +designed to localise the pain of dealing with filenames outside of +the system codepage to one area: dealing with commandline arguments +in main().

+

As such, most GLib programs should ignore the value of argv passed to +their main() function and call g_win32_get_command_line() instead. +This will get the "full Unicode" commandline arguments using +GetCommandLineW() and convert it to the GLib filename encoding (which +is UTF-8 on Windows).

+

The strings returned by this function are suitable for use with +functions such as g_open() and g_file_new_for_commandline_arg() but +are not suitable for use with g_option_context_parse(), which assumes +that its input will be in the system codepage. The return value is +suitable for use with g_option_context_parse_strv(), however, which +is a better match anyway because it won't leak memory.

+

Unlike argv, the returned value is a normal strv and can (and should) +be freed with g_strfreev() when no longer needed.

+
+

Returns

+

the commandline arguments in the GLib +filename encoding (ie: UTF-8).

+

[transfer full]

+
+

Since: 2.40

+
+
+
+

g_win32_error_message ()

+
gchar *
+g_win32_error_message (gint error);
+

Translate a Win32 error code (as returned by GetLastError() or +WSAGetLastError()) into the corresponding message. The message is +either language neutral, or in the thread's language, or the user's +language, the system's language, or US English (see docs for +FormatMessage()). The returned string is in UTF-8. It should be +deallocated with g_free().

+
+

Parameters

+
+++++ + + + + + +

error

error code.

 
+
+
+

Returns

+

newly-allocated error message

+
+
+
+
+

g_win32_getlocale ()

+
gchar *
+g_win32_getlocale (void);
+

The setlocale() function in the Microsoft C library uses locale +names of the form "English_United States.1252" etc. We want the +UNIXish standard form "en_US", "zh_TW" etc. This function gets the +current thread locale from Windows - without any encoding info - +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().

+
+

Returns

+

newly-allocated locale name.

+
+
+
+
+

g_win32_get_package_installation_directory ()

+
gchar *
+g_win32_get_package_installation_directory
+                               (const gchar *package,
+                                const gchar *dll_name);
+
+

g_win32_get_package_installation_directory has been deprecated since version 2.18 and should not be used in newly-written code.

+

Pass the HMODULE of a DLL or EXE to +g_win32_get_package_installation_directory_of_module() instead.

+
+

Try to determine the installation directory for a software package.

+

This function is deprecated. Use +g_win32_get_package_installation_directory_of_module() instead.

+

The use of package + is deprecated. You should always pass NULL. A +warning is printed if non-NULL is passed as package +.

+

The original intended use of package + was for a short identifier of +the package, typically the same identifier as used for +GETTEXT_PACKAGE in software configured using GNU +autotools. The function first looks in the Windows Registry for the +value #InstallationDirectory in the key +#HKLM\Software\@package, and if that value +exists and is a string, returns that.

+

It is strongly recommended that packagers of GLib-using libraries +for Windows do not store installation paths in the Registry to be +used by this function as that interfers with having several +parallel installations of the library. Enabling multiple +installations of different versions of some GLib-using library, or +GLib itself, is desirable for various reasons.

+

For this reason it is recommeded to always pass NULL as +package + to this function, to avoid the temptation to use the +Registry. In version 2.20 of GLib the package + parameter +will be ignored and this function won't look in the Registry at all.

+

If package + is NULL, or the above value isn't found in the +Registry, but dll_name + is non-NULL, it should name a DLL loaded +into the current process. Typically that would be the name of the +DLL calling this function, looking for its installation +directory. The function then asks Windows what directory that DLL +was loaded from. If that directory's last component is "bin" or +"lib", the parent directory is returned, otherwise the directory +itself. If that DLL isn't loaded, the function proceeds as if +dll_name + was NULL.

+

If both package + and dll_name + are NULL, the directory from where +the main executable of the process was loaded is used instead in +the same way as above.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

package

You should pass NULL for this.

[allow-none]

dll_name

The name of a DLL that a package provides in UTF-8, or NULL.

[allow-none]
+
+
+

Returns

+

a string containing the installation directory for +package +. The string is in the GLib file name encoding, +i.e. UTF-8. The return value should be freed with g_free() when not +needed any longer. If the function fails NULL is returned.

+
+
+
+
+

g_win32_get_package_installation_directory_of_module ()

+
gchar *
+g_win32_get_package_installation_directory_of_module
+                               (gpointer hmodule);
+

This function tries to determine the installation directory of a +software package based on the location of a DLL of the software +package.

+

hmodule + should be the handle of a loaded DLL or NULL. The +function looks up the directory that DLL was loaded from. If +hmodule + is NULL, the directory the main executable of the current +process is looked up. If that directory's last component is "bin" +or "lib", its parent directory is returned, otherwise the directory +itself.

+

It thus makes sense to pass only the handle to a "public" DLL of a +software package to this function, as such DLLs typically are known +to be installed in a "bin" or occasionally "lib" subfolder of the +installation folder. DLLs that are of the dynamically loaded module +or plugin variety are often located in more private locations +deeper down in the tree, from which it is impossible for GLib to +deduce the root of the package installation.

+

The typical use case for this function is to have a DllMain() that +saves the handle for the DLL. Then when code in the DLL needs to +construct names of files in the installation tree it calls this +function passing the DLL handle.

+
+

Parameters

+
+++++ + + + + + +

hmodule

The Win32 handle for a DLL loaded into the current process, or NULL.

[allow-none]
+
+
+

Returns

+

a string containing the guessed installation directory for +the software package hmodule +is from. The string is in the GLib +file name encoding, i.e. UTF-8. The return value should be freed +with g_free() when not needed any longer. If the function fails +NULL is returned.

+
+

Since: 2.16

+
+
+
+

g_win32_get_package_installation_subdirectory ()

+
gchar *
+g_win32_get_package_installation_subdirectory
+                               (const gchar *package,
+                                const gchar *dll_name,
+                                const gchar *subdir);
+
+

g_win32_get_package_installation_subdirectory has been deprecated since version 2.18 and should not be used in newly-written code.

+

Pass the HMODULE of a DLL or EXE to +g_win32_get_package_installation_directory_of_module() instead, and +then construct a subdirectory pathname with g_build_filename().

+
+

This function is deprecated. Use +g_win32_get_package_installation_directory_of_module() and +g_build_filename() instead.

+

Returns a newly-allocated string containing the path of the +subdirectory subdir + in the return value from calling +g_win32_get_package_installation_directory() with the package + and +dll_name + parameters. See the documentation for +g_win32_get_package_installation_directory() for more details. In +particular, note that it is deprecated to pass anything except NULL +as package +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

package

You should pass NULL for this.

[allow-none]

dll_name

The name of a DLL that a package provides, in UTF-8, or NULL.

[allow-none]

subdir

A subdirectory of the package installation directory, also in UTF-8

 
+
+
+

Returns

+

a string containing the complete path to subdir +inside +the installation directory of package +. The returned string is in +the GLib file name encoding, i.e. UTF-8. The return value should be +freed with g_free() when no longer needed. If something goes wrong, +NULL is returned.

+
+
+
+
+

g_win32_get_windows_version ()

+
guint
+g_win32_get_windows_version (void);
+
+

g_win32_get_windows_version has been deprecated since version 2.44 and should not be used in newly-written code.

+

Be aware that for Windows 8.1 and Windows Server +2012 R2 and later, this will return 62 unless the application is +manifested for Windows 8.1/Windows Server 2012 R2, for example. +MSDN stated that GetVersion(), which is used here, is subject to +further change or removal after Windows 8.1.

+
+

This function is deprecated. Use +g_win32_check_windows_version() instead.

+

Returns version information for the Windows operating system the +code is running on. See MSDN documentation for the GetVersion() +function. To summarize, the most significant bit is one on Win9x, +and zero on NT-based systems. Since version 2.14, GLib works only +on NT-based systems, so checking whether your are running on Win9x +in your own software is moot. The least significant byte is 4 on +Windows NT 4, and 5 on Windows XP. Software that needs really +detailed version and feature information should use Win32 API like +GetVersionEx() and VerifyVersionInfo().

+
+

Returns

+

The version information.

+
+
+
+
+

g_win32_locale_filename_from_utf8 ()

+
gchar *
+g_win32_locale_filename_from_utf8 (const gchar *utf8filename);
+

Converts a filename from UTF-8 to the system codepage.

+

On NT-based Windows, on NTFS file systems, file names are in +Unicode. It is quite possible that Unicode file names contain +characters not representable in the system codepage. (For instance, +Greek or Cyrillic characters on Western European or US Windows +installations, or various less common CJK characters on CJK Windows +installations.)

+

In such a case, and if the filename refers to an existing file, and +the file system stores alternate short (8.3) names for directory +entries, the short form of the filename is returned. Note that the +"short" name might in fact be longer than the Unicode name if the +Unicode name has very short pathname components containing +non-ASCII characters. If no system codepage name for the file is +possible, NULL is returned.

+

The return value is dynamically allocated and should be freed with +g_free() when no longer needed.

+
+

Parameters

+
+++++ + + + + + +

utf8filename

a UTF-8 encoded filename.

 
+
+
+

Returns

+

The converted filename, or NULL on conversion +failure and lack of short names.

+
+

Since: 2.8

+
+
+
+

G_WIN32_DLLMAIN_FOR_DLL_NAME()

+
# define G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name)
+
+

G_WIN32_DLLMAIN_FOR_DLL_NAME is deprecated and should not be used in newly-written code.

+

On Windows, this macro defines a DllMain() function that stores +the actual DLL name that the code being compiled will be included in.

+

On non-Windows platforms, expands to nothing.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

static

empty or "static"

 

dll_name

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

 
+
+
+
+
+

G_WIN32_HAVE_WIDECHAR_API

+
#define G_WIN32_HAVE_WIDECHAR_API() TRUE
+
+

On Windows, this macro defines an expression which evaluates to +TRUE if the code is running on a version of Windows where the wide +character versions of the Win32 API functions, and the wide character +versions of the C library functions work. (They are always present in +the DLLs, but don't work on Windows 9x and Me.)

+

On non-Windows platforms, it is not defined.

+

Since: 2.6

+
+
+
+

G_WIN32_IS_NT_BASED

+
#define G_WIN32_IS_NT_BASED() TRUE
+
+

On Windows, this macro defines an expression which evaluates to +TRUE if the code is running on an NT-based Windows operating system.

+

On non-Windows platforms, it is not defined.

+

Since: 2.6

+
+
+
+

Types and Values

+
+

MAXPATHLEN

+
#define MAXPATHLEN 1024
+
+

Provided for UNIX emulation on Windows; equivalent to UNIX +macro MAXPATHLEN, which is the maximum length of a filename +(including full path).

+
+
+
+

enum GWin32OSType

+

Type of Windows edition to check for at run-time.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

G_WIN32_OS_ANY

+

The running system can be a workstation or a server edition of + Windows. The type of the running system is therefore not checked.

+
 

G_WIN32_OS_WORKSTATION

+

The running system is a workstation edition of Windows, + such as Windows 7 Professional.

+
 

G_WIN32_OS_SERVER

+

The running system is a server edition of Windows, such as + Windows Server 2008 R2.

+
 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-building.html b/docs/reference/glib/html/glib-building.html new file mode 100644 index 0000000..53a3eb5 --- /dev/null +++ b/docs/reference/glib/html/glib-building.html @@ -0,0 +1,437 @@ + + + + +Compiling the GLib package: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Compiling the GLib package

+

Compiling the GLib Package — How to compile GLib itself

+
+
+

Building the Library on UNIX

+

+ On UNIX, GLib uses the standard GNU build system, + using autoconf for package + configuration and resolving portability issues, + automake for building makefiles + that comply with the GNU Coding Standards, and + libtool for building shared + libraries on multiple platforms. The normal sequence for + compiling and installing the GLib library is thus: + +

+


+        ./configure
+        make
+        make install
+      

+

+

+

+ The standard options provided by GNU + autoconf may be passed to the + configure script. Please see the + autoconf documentation or run + ./configure --help for information about + the standard options. +

+

+ The GTK+ documentation contains + further details + about the build process and ways to influence it. +

+
+
+

Dependencies

+

+ Before you can compile the GLib library, you need to have + various other tools and libraries installed on your system. + Beyond a C compiler (which must implement C90, but does not need + to implement C99), the two tools needed during the build process + (as differentiated from the tools used in when creating GLib + mentioned above such as autoconf) are + pkg-config and GNU make. +

+
    +
  • + pkg-config + is a tool for tracking the compilation flags needed for + libraries that are used by the GLib library. (For each + library, a small .pc text file is + installed in a standard location that contains the compilation + flags needed for that library along with version number + information.) The version of pkg-config + needed to build GLib is mirrored in the + dependencies directory + on the GTK+ FTP + site. +

  • +
  • + The GLib Makefiles make use of several features specific to + GNU + make, and will not build correctly with other + versions of make. You will need to + install it if you don't already have it on your system. (It + may be called gmake rather than + make.) +

  • +
+

+ A UNIX build of GLib requires that the system implements at + least the original 1990 version of POSIX. Beyond this, it + depends on a number of other libraries. +

+
    +
  • +

    + The GNU + libiconv library is needed to build GLib if your + system doesn't have the iconv() + function for doing conversion between character + encodings. Most modern systems should have + iconv(), however many older systems lack + an iconv() implementation. On such systems, + you must install the libiconv library. This can be found at: + http://www.gnu.org/software/libiconv. +

    +

    + If your system has an iconv() implementation but + you want to use libiconv instead, you can pass the + --with-libiconv option to configure. This forces + libiconv to be used. +

    +

    + Note that if you have libiconv installed in your default include + search path (for instance, in /usr/local/), but + don't enable it, you will get an error while compiling GLib because + the iconv.h that libiconv installs hides the + system iconv. +

    +

    + If you are using the native iconv implementation on Solaris + instead of libiconv, you'll need to make sure that you have + the converters between locale encodings and UTF-8 installed. + At a minimum you'll need the SUNWuiu8 package. You probably + should also install the SUNWciu8, SUNWhiu8, SUNWjiu8, and + SUNWkiu8 packages. +

    +

    + The native iconv on Compaq Tru64 doesn't contain support for + UTF-8, so you'll need to use GNU libiconv instead. (When + using GNU libiconv for GLib, you'll need to use GNU libiconv + for GNU gettext as well.) This probably applies to related + operating systems as well. +

    +
  • +
  • + The libintl library from the GNU gettext + package is needed if your system doesn't have the + gettext() functionality for handling + message translation databases. +

  • +
  • + A thread implementation is needed. The thread support in GLib + can be based upon POSIX threads or win32 threads. +

  • +
  • + GRegex uses the PCRE library + for regular expression matching. The default is to use the internal + version of PCRE that is patched to use GLib for memory management + and Unicode handling. If you prefer to use the system-supplied PCRE + library you can pass the --with-pcre=system option + to, but it is not recommended. +

  • +
  • + The optional extended attribute support in GIO requires the + getxattr() family of functions that may be provided by glibc or + by the standalone libattr library. To build GLib without extended + attribute support, use the --disable-xattr + option. +

  • +
  • + The optional SELinux support in GIO requires libselinux. + To build GLib without SELinux support, use the + --disable-selinux option. +

  • +
  • + The optional support for DTrace requires the + sys/sdt.h header, which is provided + by SystemTap on Linux. To build GLib without DTrace, use + the --disable-dtrace configure option. +

  • +
  • + The optional support for + SystemTap + can be disabled with the --disable-systemtap + configure option. +

  • +
+
+
+

Extra Configuration Options

+

+ In addition to the normal options, the + configure script in the GLib + library supports these additional arguments: +

+

--enable-debug.  + Turns on various amounts of debugging support. Setting this to 'no' + disables g_assert(), g_return_if_fail(), g_return_val_if_fail() and + all cast checks between different object types. Setting it to 'minimum' disables only cast checks. Setting it to 'yes' enables + runtime debugging. + The default is 'minimum'. + Note that 'no' is fast, but dangerous as it tends to destabilize + even mostly bug-free software by changing the effect of many bugs + from simple warnings into fatal crashes. Thus + --enable-debug=no should not + be used for stable releases of GLib. +

+

--disable-gc-friendly and + --enable-gc-friendly.  + By default, and with --disable-gc-friendly + as well, Glib does not clear the memory for certain objects before + they are freed. For example, Glib may decide to recycle GList nodes + by putting them in a free list. However, memory profiling and debugging + tools like Valgrind work + better if an application does not keep dangling pointers to freed + memory (even though these pointers are no longer dereferenced), or + invalid pointers inside uninitialized memory. + The --enable-gc-friendly option makes Glib + clear memory in these situations: +

+
    +
  • + When shrinking a GArray, Glib will clear the memory no longer + available in the array: shrink an array from 10 bytes to 7, and + the last 3 bytes will be cleared. This includes removals of single + and multiple elements. +

  • +
  • + When growing a GArray, Glib will clear the new chunk of memory. + Grow an array from 7 bytes to 10 bytes, and the last 3 bytes will + be cleared. +

  • +
  • + The above applies to GPtrArray as well. +

  • +
  • + When freeing a node from a GHashTable, Glib will first clear + the node, which used to have pointers to the key and the value + stored at that node. +

  • +
  • + When destroying or removing a GTree node, Glib will clear the node, + which used to have pointers to the node's value, and the left and + right subnodes. +

  • +
+

+ Since clearing the memory has a cost, + --disable-gc-friendly is the default. +

+

--disable-mem-pools and + --enable-mem-pools.  + Many small chunks of memory are often allocated via collective pools + in GLib and are cached after release to speed up reallocations. + For sparse memory systems this behaviour is often inferior, so + memory pools can be disabled to avoid excessive caching and force + atomic maintenance of chunks through the g_malloc() + and g_free() functions. Code currently affected by + this: +

+
    +
  • + GMemChunks become basically non-effective +

  • +
  • + GSignal disables all caching + (potentially very slow) +

  • +
  • + GType doesn't honour the + GTypeInfo + n_preallocs field anymore +

  • +
  • + the GBSearchArray flag + G_BSEARCH_ALIGN_POWER2 becomes non-functional +

  • +
+

+

+

--with-threads.  + Specify a thread implementation to use. Available options are + 'posix' or 'win32'. Normally, configure + should be able to work out the system threads API on its own. +

+

--disable-regex and + --enable-regex.  + Do not compile GLib with regular expression support. + GLib will be smaller because it will not need the + PCRE library. This is however not recommended, as + programs may need GRegex. +

+

--with-pcre.  + Specify whether to use the internal or the system-supplied + PCRE library. +

+
    +
  • + 'internal' means that GRegex will be compiled to use + the internal PCRE library. +

  • +
  • + 'system' means that GRegex will be compiled to use + the system-supplied PCRE library. +

  • +
+

+ Using the internal PCRE is the preferred solution: +

+
    +
  • + System-supplied PCRE has a separated copy of the big tables + used for Unicode handling. +

  • +
  • + Some systems have PCRE libraries compiled without some needed + features, such as UTF-8 and Unicode support. +

  • +
  • + PCRE uses some global variables for memory management and + other features. In the rare case of a program using both + GRegex and PCRE (maybe indirectly through a library), + this variables could lead to problems when they are modified. +

  • +
+

+

+

--disable-included-printf and + --enable-included-printf.  + By default the configure script will try + to auto-detect whether the C library provides a suitable set + of printf() functions. In detail, configure + checks that the semantics of snprintf() are as specified by C99 + and that positional parameters as specified in the Single Unix + Specification are supported. If this not the case, GLib will + include an implementation of the printf() family. + + These options can be used to explicitly control whether + an implementation of the printf() family should be included or not. +

+

--disable-Bsymbolic and + --enable-Bsymbolic.  + By default, GLib uses the -Bsymbolic-functions linker + flag to avoid intra-library PLT jumps. A side-effect + of this is that it is no longer possible to override + internal uses of GLib functions with + LD_PRELOAD. Therefore, it may make + sense to turn this feature off in some situations. + The --disable-Bsymbolic option allows + to do that. +

+

--disable-gtk-doc and + --enable-gtk-doc.  + By default the configure script will try + to auto-detect whether the + gtk-doc package is installed. + If it is, then it will use it to extract and build the + documentation for the GLib library. These options + can be used to explicitly control whether + gtk-doc should be + used or not. If it is not used, the distributed, + pre-generated HTML files will be installed instead of + building them on your machine. +

+

--disable-man and + --enable-man.  + By default the configure script will try + to auto-detect whether xsltproc + and the necessary Docbook stylesheets are installed. + If they are, then it will use them to rebuild the included + man pages from the XML sources. These options can be used + to explicitly control whether man pages should be rebuilt + used or not. The distribution includes pre-generated man + pages. +

+

--disable-xattr and + --enable-xattr.  + By default the configure script will try + to auto-detect whether the getxattr() family of functions + is available. If it is, then extended attribute support + will be included in GIO. These options can be used to + explicitly control whether extended attribute support + should be included or not. getxattr() and friends can + be provided by glibc or by the standalone libattr library. +

+

--disable-selinux and + --enable-selinux.  + By default the configure script will + auto-detect if libselinux is available and include + SELinux support in GIO if it is. These options can be + used to explicitly control whether SELinux support should + be included. +

+

--disable-dtrace and + --enable-dtrace.  + By default the configure script will + detect if DTrace support is available, and use it. +

+

--disable-systemtap and + --enable-systemtap.  + This option requires DTrace support. If it is available, then + the configure script will also check for + the presence of SystemTap. +

+

--enable-coverage and + --disable-coverage.  + Enable the generation of coverage reports for the GLib tests. + This requires the lcov frontend to gcov from the + Linux Test Project. + To generate a coverage report, use the lcov make target. The + report is placed in the glib-lcov directory. +

+

--with-runtime-libdir=RELPATH.  + Allows specifying a relative path to where to install the runtime + libraries (meaning library files used for running, not developing, + GLib applications). This can be used in operating system setups where + programs using GLib needs to run before e.g. /usr + is mounted. + For example, if LIBDIR is /usr/lib and + ../../lib is passed to + --with-runtime-libdir then the + runtime libraries are installed into /lib rather + than /usr/lib. +

+

--with-python.  + Allows specifying the Python interpreter to use, either as an absolute path, + or as a program name. GLib can be built with Python 2 (at least version 2.5) + or Python 3. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-changes.html b/docs/reference/glib/html/glib-changes.html new file mode 100644 index 0000000..800d842 --- /dev/null +++ b/docs/reference/glib/html/glib-changes.html @@ -0,0 +1,152 @@ + + + + +Changes to GLib: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Changes to GLib

+

Changes to GLib — +Incompatible changes made between successing versions of GLib +

+
+
+

Incompatible changes from 2.0 to 2.2

+
  • +

    +GLib changed the seeding algorithm for the pseudo-random number +generator Mersenne Twister, as used by GRand +and GRandom. This was necessary, because some +seeds would yield very bad pseudo-random streams. Also the +pseudo-random integers generated by +g_rand*_int_range() will have a +slightly better equal distribution with the new version of GLib. +

    +

    +Further information can be found at the website of the Mersenne +Twister random number generator at http://www.math.keio.ac.jp/~matumoto/emt.html. +

    +

    +The original seeding and generation algorithms, as found in GLib +2.0.x, can be used instead of the new ones by setting the environment +variable G_RANDOM_VERSION to the value of '2.0'. Use +the GLib-2.0 algorithms only if you have sequences of numbers generated +with Glib-2.0 that you need to reproduce exactly. +

    +
+
+
+

Incompatible changes from 1.2 to 2.0

+
    +
  • +

    +The event loop functionality GMain has extensively +been revised to support multiple separate main loops in separate threads. +All sources (timeouts, idle functions, etc.) are associated with a +GMainContext. +

    +

    +Compatibility functions exist so that most application code dealing with +the main loop will continue to work. However, code that creates new custom +types of sources will require modification. +

    +

    +The main changes here are: + +

    +
      +
    • + Sources are now exposed as GSource *, rather than simply as + numeric ids. +

    • +
    • + New types of sources are created by structure "derivation" from + GSource, so the source_data + parameter to the GSource virtual functions has been + replaced with a GSource *. +

    • +
    • + Sources are first created, then later added to a specific + GMainContext. +

    • +
    • + Dispatching has been modified so both the callback and data are passed + in to the dispatch() virtual function. +

    • +
    +

    + To go along with this change, the vtable for + GIOChannel has changed and + add_watch() has been replaced by + create_watch(). +

    +
  • +
  • +

    +g_list_foreach() and +g_slist_foreach() have been changed so they +are now safe against removal of the current item, not the next item. +

    +

    +It's not recommended to mutate the list in the callback to these +functions in any case. +

    +
  • +
  • +GDate now works in UTF-8, not in the current locale. +If you want to use it with the encoding of the locale, you need to convert +strings using g_locale_to_utf8() first. +

  • +
  • +

    +g_strsplit() has been fixed to: + +

    +
      +
    • + include trailing empty tokens, rather than stripping them +

    • +
    • + split into a maximum of max_tokens tokens, rather + than max_tokens + 1 +

    • +
    +

    + + Code depending on either of these bugs will need to be fixed. +

    +
  • +
  • +Deprecated functions that got removed: +g_set_error_handler(), +g_set_warning_handler(), +g_set_message_handler(), use +g_log_set_handler() instead. +

  • +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-compiling.html b/docs/reference/glib/html/glib-compiling.html new file mode 100644 index 0000000..f568370 --- /dev/null +++ b/docs/reference/glib/html/glib-compiling.html @@ -0,0 +1,144 @@ + + + + +Compiling GLib Applications: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Compiling GLib Applications

+

Compiling GLib Applications — +How to compile your GLib application +

+
+
+

Compiling GLib Applications on UNIX

+

+To compile a GLib application, you need to tell the compiler where to +find the GLib header files and libraries. This is done with the +pkg-config utility. +

+

+The following interactive shell session demonstrates how +pkg-config is used (the actual output on +your system may be different): +

+
+$ pkg-config --cflags glib-2.0
+ -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+$ pkg-config --libs glib-2.0
+ -L/usr/lib -lm -lglib-2.0
+
+

+

+

+See the pkg-config website +for more information about pkg-config. +

+

+If your application uses or GObject +features, it must be compiled and linked with the options returned +by the following pkg-config invocation: +

+
+$ pkg-config --cflags --libs gobject-2.0
+
+

+

+

+If your application uses modules, it must be compiled and linked +with the options returned by one of the following +pkg-config invocations: +

+
+$ pkg-config --cflags --libs gmodule-no-export-2.0
+$ pkg-config --cflags --libs gmodule-2.0
+
+

+The difference between the two is that gmodule-2.0 adds +--export-dynamic to the linker flags, +which is often not needed. +

+

+The simplest way to compile a program is to use the "backticks" +feature of the shell. If you enclose a command in backticks +(not single quotes), then its output will +be substituted into the command line before execution. So to +compile a GLib Hello, World, you would type the following: +

+
+$ cc hello.c `pkg-config --cflags --libs glib-2.0` -o hello
+
+

+

+

+Note that the name of the file must come before the other options +(such as pkg-config), or else you may get an +error from the linker. +

+

+Deprecated GLib functions are annotated to make the compiler +emit warnings when they are used (e.g. with gcc, you need to use +the -Wdeprecated-declarations option). If these warnings are +problematic, they can be turned off by defining the preprocessor +symbol GLIB_DISABLE_DEPRECATION_WARNINGS by using the commandline +option -DGLIB_DISABLE_DEPRECATION_WARNINGS +

+

+GLib deprecation annotations are versioned; by defining the +macros GLIB_VERSION_MIN_REQUIRED and GLIB_VERSION_MAX_ALLOWED, +you can specify the range of GLib versions whose API you want +to use. APIs that were deprecated before or introduced after +this range will trigger compiler warnings. +

+

+The older deprecation mechanism of hiding deprecated interfaces +entirely from the compiler by using the preprocessor symbol +G_DISABLE_DEPRECATED is still used for deprecated macros, +enumeration values, etc. To detect uses of these in your code, +use the commandline option -DG_DISABLE_DEPRECATED. +

+

+The recommended way of using GLib has always been to only include the +toplevel headers glib.h, +glib-object.h, gio.h. +Starting with 2.32, GLib enforces this by generating an error +when individual headers are directly included. +

+

+Still, there are some exceptions; these headers have to be included +separately: +gmodule.h, +glib-unix.h, +glib/gi18n-lib.h or +glib/gi18n.h (see +the Internationalization section), +glib/gprintf.h and +glib/gstdio.h +(we don't want to pull in all of stdio). +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-core.html b/docs/reference/glib/html/glib-core.html new file mode 100644 index 0000000..22b8405 --- /dev/null +++ b/docs/reference/glib/html/glib-core.html @@ -0,0 +1,67 @@ + + + + +GLib Core Application Support: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+GLib Core Application Support

+
+
+The Main Event Loop — manages all available sources of events +
+
+Threads — portable support for threads, mutexes, locks, + conditions and thread private data +
+
+Thread Pools — pools of threads to execute work concurrently +
+
+Asynchronous Queues — asynchronous communication between threads +
+
+Dynamic Loading of Modules — portable method for dynamically loading 'plug-ins' +
+
+Memory Allocation — general memory-handling +
+
+Memory Slices — efficient way to allocate groups of equal-sized + chunks of memory +
+
+IO Channels — portable support for using files, pipes and sockets +
+
+Error Reporting — a system for reporting errors +
+
+Message Output and Debugging Functions — functions to output messages and help debug applications +
+
+Message Logging — versatile support for logging messages + with different levels of importance +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-cross-compiling.html b/docs/reference/glib/html/glib-cross-compiling.html new file mode 100644 index 0000000..8452203 --- /dev/null +++ b/docs/reference/glib/html/glib-cross-compiling.html @@ -0,0 +1,164 @@ + + + + +Cross-compiling the GLib package: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Cross-compiling the GLib package

+

Cross-compiling the GLib Package — +How to cross-compile GLib +

+
+
+

Building the Library for a different architecture

+

+ Cross-compilation is the process of compiling a program or + library on a different architecture or operating system then + it will be run upon. GLib is slightly more difficult to + cross-compile than many packages because much of GLib is + about hiding differences between different systems. +

+

+ These notes cover things specific to cross-compiling GLib; + for general information about cross-compilation, see the + autoconf info pages. +

+

+ GLib tries to detect as much information as possible about + the target system by compiling and linking programs without + actually running anything; however, some information GLib + needs is not available this way. This information needs + to be provided to the configure script via a "cache file" + or by setting the cache variables in your environment. +

+

+ As an example of using a cache file, to cross compile for + the "MingW32" Win32 runtime environment on a Linux system, + create a file 'win32.cache' with the following contents: +

+
 
+glib_cv_long_long_format=I64
+glib_cv_stack_grows=no
+      
+

+ Then execute the following commands: +

+
+PATH=/path/to/mingw32-compiler/bin:$PATH
+chmod a-w win32.cache   # prevent configure from changing it
+./configure --cache-file=win32.cache --host=mingw32
+      
+

+ The complete list of cache file variables follows. Most + of these won't need to be set in most cases. +

+
+
+

Cache file variables

+

glib_cv_long_long_format=[ll/q/I64].  + Format used by printf() and + scanf() for 64 bit integers. "ll" is + the C99 standard, and what is used by the 'trio' library + that GLib builds if your printf() is + insufficiently capable. + Doesn't need to be set if you are compiling using trio. +

+

glib_cv_stack_grows=[yes/no].  + Whether the stack grows up or down. Most places will want "no", + A few architectures, such as PA-RISC need "yes". +

+

glib_cv_working_bcopy=[yes/no].  + Whether your bcopy() can handle overlapping + copies. Only needs to be set if you don't have + memmove(). (Very unlikely) +

+

glib_cv_sane_realloc=[yes/no].  + Whether your realloc() conforms to ANSI C + and can handle NULL as the first argument. + Defaults to "yes" and probably doesn't need to be set. +

+

glib_cv_have_strlcpy=[yes/no].  + Whether you have strlcpy() that matches + OpenBSD. Defaults to "no", which is safe, since GLib uses a + built-in version in that case. +

+

glib_cv_have_qsort_r=[yes/no].  + Whether you have qsort_r() that matches + BSD. Defaults to "no", which is safe, since GLib uses a + built-in version in that case. +

+

glib_cv_va_val_copy=[yes/no].  + Whether va_list can be copied as a pointer. If set + to "no", then memcopy() will be used. Only + matters if you don't have va_copy() or + __va_copy(). (So, doesn't matter for GCC.) + Defaults to "yes" which is slightly more common than "no". +

+

glib_cv_rtldglobal_broken=[yes/no].  + Whether you have a bug found in OSF/1 v5.0. Defaults to "no". +

+

glib_cv_uscore=[yes/no].  + Whether an underscore needs to be prepended to symbols when + looking them up via dlsym(). Only needs to + be set if your system uses + dlopen()/dlsym(). +

+

ac_cv_func_posix_getpwuid_r=[yes/no].  + Whether you have a getpwuid_r function (in your C library, + not your thread library) that conforms to the POSIX spec. + (Takes a 'struct passwd **' as the final argument) +

+

ac_cv_func_nonposix_getpwuid_r=[yes/no].  + Whether you have some variant of getpwuid_r() + that doesn't conform to to the POSIX spec, but GLib might be able + to use (or might segfault.) Only needs to be set if + ac_cv_func_posix_getpwuid_r is not set. It's + safest to set this to "no". +

+

ac_cv_func_posix_getgrgid_r=[yes/no].  + Whether you have a getgrgid_r function that conforms to + the POSIX spec. +

+

glib_cv_use_pid_surrogate=[yes/no].  + Whether to use a setpriority() on the PID of + the thread as a method for setting the priority of threads. This + only needs to be set when using POSIX threads. +

+

ac_cv_func_printf_unix98=[yes/no].  + Whether your printf() family supports Unix98 + style %N$ positional parameters. Defaults to + "no". +

+

ac_cv_func_vsnprintf_c99=[yes/no].  + Whether you have a vsnprintf() with C99 + semantics. (C99 semantics means returning the number of bytes + that would have been written had the output buffer had enough + space.) Defaults to "no". +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-data-types.html b/docs/reference/glib/html/glib-data-types.html new file mode 100644 index 0000000..acbc07b --- /dev/null +++ b/docs/reference/glib/html/glib-data-types.html @@ -0,0 +1,99 @@ + + + + +GLib Data Types: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+GLib Data Types

+
+
+Doubly-Linked Lists — linked lists that can be iterated over in both directions +
+
+Singly-Linked Lists — linked lists that can be iterated in one direction +
+
+Double-ended Queues — double-ended queue data structure +
+
+Sequences — scalable lists +
+
+Trash Stacks — maintain a stack of unused allocated memory chunks +
+
+Hash Tables — associations between keys and values so that + given a key the value can be found quickly +
+
+Strings — text buffers which grow automatically + as text is added +
+
+String Chunks — efficient storage of groups of strings +
+
+Arrays — arrays of arbitrary elements which grow + automatically as elements are added +
+
+Pointer Arrays — arrays of pointers to any type of data, which + grow automatically as new elements are added +
+
+Byte Arrays — arrays of bytes +
+
+Balanced Binary Trees — a sorted collection of key/value pairs optimized + for searching and traversing in order +
+
+N-ary Trees — trees of data with any number of branches +
+
+Quarks — a 2-way association between a string and a + unique integer identifier +
+
+Keyed Data Lists — lists of data elements which are accessible by a + string or GQuark identifier +
+
+Datasets — associate groups of data elements with + particular memory locations +
+
+GVariantType — introduction to the GVariant type system +
+
+GVariant — strongly typed value datatype +
+
+GVariant Format Strings — varargs conversion of GVariants +
+
+GVariant Text Format — textual representation of GVariants +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-fundamentals.html b/docs/reference/glib/html/glib-fundamentals.html new file mode 100644 index 0000000..bf0595f --- /dev/null +++ b/docs/reference/glib/html/glib-fundamentals.html @@ -0,0 +1,59 @@ + + + + +GLib Fundamentals: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+GLib Fundamentals

+
+
+Version Information — variables and functions to check the GLib version +
+
+Basic Types — standard GLib types, defined for ease-of-use + and portability +
+
+Standard Macros — commonly-used macros +
+
+Type Conversion Macros — portably storing integers in pointer variables +
+
+Byte Order Macros — a portable way to convert between different byte orders +
+
+Bounds-checking integer arithmetic — a set of helpers for performing checked integer arithmetic +
+
+Numerical Definitions — mathematical constants, and floating point decomposition +
+
+Miscellaneous Macros — specialized macros which are not used often +
+
+Atomic Operations — basic atomic integer and pointer operations +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-gettextize.html b/docs/reference/glib/html/glib-gettextize.html new file mode 100644 index 0000000..29c7fac --- /dev/null +++ b/docs/reference/glib/html/glib-gettextize.html @@ -0,0 +1,95 @@ + + + + +glib-gettextize: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

glib-gettextize

+

glib-gettextize — gettext internationalization utility

+
+
+

Synopsis

+

glib-gettextize [OPTION...] [DIRECTORY]

+
+
+

Description

+

glib-gettextize helps to prepare a source package for being +internationalized through gettext. +It is a variant of the gettextize that ships with +gettext. +

+

glib-gettextize differs +from gettextize in that it doesn't create an +intl/ subdirectory and doesn't modify +po/ChangeLog (note that newer versions of +gettextize behave like this when called with the +--no-changelog option). +

+
+
+

Options

+
++++ + + + + + + + + + + + + + + + + + + +

--help

+print 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 ones exist +

+
+
+

See also

+

+gettextize(1) +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-programming.html b/docs/reference/glib/html/glib-programming.html new file mode 100644 index 0000000..89cbe0b --- /dev/null +++ b/docs/reference/glib/html/glib-programming.html @@ -0,0 +1,75 @@ + + + + +Writing GLib Applications: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Writing GLib Applications

+

Writing GLib Applications — +General considerations when programming with GLib +

+
+
+

Writing GLib Applications

+
+

Threads

+

+The general policy of GLib is that all functions are invisibly threadsafe +with the exception of data structure manipulation functions, where, if +you have two threads manipulating the same data +structure, they must use a lock to synchronize their operation. +

+

+GLib creates a worker thread for its own purposes so GLib applications +will always have at least 2 threads. +

+

+See the sections on threads and +threadpools for GLib APIs that +support multithreaded applications. +

+
+
+
+

Security

+

+When writing code that runs with elevated privileges, it is important +to follow some basic rules of secure programming. David Wheeler has an +excellent book on this topic, +Secure Programming for Linux and Unix HOWTO. +

+

+When it comes to GLib and its associated libraries, GLib and +GObject are generally fine to use in code that runs with elevated +privileges; they don't load modules (executable code in shared objects) +or run other programs 'behind your back'. GIO has to be used +carefully in privileged programs, see the GIO documentation for details. +

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-regex-syntax.html b/docs/reference/glib/html/glib-regex-syntax.html new file mode 100644 index 0000000..b8410ee --- /dev/null +++ b/docs/reference/glib/html/glib-regex-syntax.html @@ -0,0 +1,2216 @@ + + + + +Regular expression syntax: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Regular expression syntax

+

Regular expression syntax — +syntax and semantics of regular expressions supported by GRegex +

+
+
+

GRegex regular expression details

+

+A regular expression is a pattern that is matched against a +string from left to right. Most characters stand for themselves in a +pattern, and match the corresponding characters in the string. As a +trivial example, the pattern +

+
+The quick brown fox
+
+

+matches a portion of a string that is identical to itself. When +caseless matching is specified (the G_REGEX_CASELESS flag), letters are +matched independently of case. +

+

+The power of regular expressions comes from the ability to include +alternatives and repetitions in the pattern. These are encoded in the +pattern by the use of metacharacters, which do not stand for themselves +but instead are interpreted in some special way. +

+

+There are two different sets of metacharacters: those that are recognized +anywhere in the pattern except within square brackets, and those +that are recognized in square brackets. Outside square brackets, the +metacharacters are as follows: +

+
+

Table 1. Metacharacters outside square brackets

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CharacterMeaning
\general escape character with several uses
^assert start of string (or line, in multiline mode)
$assert end of string (or line, in multiline mode)
.match any character except newline (by default)
[start character class definition
|start of alternative branch
(start subpattern
)end subpattern
?extends the meaning of (, or 0/1 quantifier, or quantifier minimizer
*0 or more quantifier
+1 or more quantifier, also "possessive quantifier"
{start min/max quantifier
+
+

+Part of a pattern that is in square brackets is called a "character +class". In a character class the only metacharacters are: +

+
+

Table 2. Metacharacters inside square brackets

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
CharacterMeaning
\general escape character
^negate the class, but only if the first character
-indicates character range
[POSIX character class (only if followed by POSIX syntax)
]terminates the character class
+
+
+
+
+

Backslash

+

+The backslash character has several uses. Firstly, if it is followed by +a non-alphanumeric character, it takes away any special meaning that +character may have. This use of backslash as an escape character +applies both inside and outside character classes. +

+

+For example, if you want to match a * character, you write \* in the +pattern. This escaping action applies whether or not the following +character would otherwise be interpreted as a metacharacter, so it is +always safe to precede a non-alphanumeric with backslash to specify +that it stands for itself. In particular, if you want to match a +backslash, you write \\. +

+

+If a pattern is compiled with the G_REGEX_EXTENDED +option, whitespace in the pattern (other than in a character class) and +characters between a # outside a character class and the next newline +are ignored. +An escaping backslash can be used to include a whitespace or # character +as part of the pattern. +

+

+Note that the C compiler interprets backslash in strings itself, therefore +you need to duplicate all \ characters when you put a regular expression +in a C string, like "\\d{3}". +

+

+If you want to remove the special meaning from a sequence of characters, +you can do so by putting them between \Q and \E. +The \Q...\E sequence is recognized both inside and outside character +classes. +

+
+

Non-printing characters

+

+A second use of backslash provides a way of encoding non-printing +characters in patterns in a visible manner. There is no restriction on the +appearance of non-printing characters, apart from the binary zero that +terminates a pattern, but when a pattern is being prepared by text +editing, it is usually easier to use one of the following escape +sequences than the binary character it represents: +

+
+

Table 3. Non-printing characters

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EscapeMeaning
\aalarm, that is, the BEL character (hex 07)
\cx"control-x", where x is any character
\eescape (hex 1B)
\fformfeed (hex 0C)
\nnewline (hex 0A)
\rcarriage return (hex 0D)
\ttab (hex 09)
\dddcharacter with octal code ddd, or backreference
\xhhcharacter with hex code hh
\x{hhh..}character with hex code hhh..
+
+

+The precise effect of \cx is as follows: if x is a lower case letter, +it is converted to upper case. Then bit 6 of the character (hex 40) is +inverted. Thus \cz becomes hex 1A, but \c{ becomes hex 3B, while \c; +becomes hex 7B. +

+

+After \x, from zero to two hexadecimal digits are read (letters can be +in upper or lower case). Any number of hexadecimal digits may appear +between \x{ and }, but the value of the character code +must be less than 2**31 (that is, the maximum hexadecimal value is +7FFFFFFF). If characters other than hexadecimal digits appear between +\x{ and }, or if there is no terminating }, this form of escape is not +recognized. Instead, the initial \x will be interpreted as a basic hexadecimal +escape, with no following digits, giving a character whose +value is zero. +

+

+Characters whose value is less than 256 can be defined by either of the +two syntaxes for \x. There is no difference +in the way they are handled. For example, \xdc is exactly the same as +\x{dc}. +

+

+After \0 up to two further octal digits are read. If there are fewer +than two digits, just those that are present are used. +Thus the sequence \0\x\07 specifies two binary zeros followed by a BEL +character (code value 7). Make sure you supply two digits after the +initial zero if the pattern character that follows is itself an octal +digit. +

+

+The handling of a backslash followed by a digit other than 0 is complicated. +Outside a character class, GRegex reads it and any following digits as a +decimal number. If the number is less than 10, or if there +have been at least that many previous capturing left parentheses in the +expression, the entire sequence is taken as a back reference. A +description of how this works is given later, following the discussion +of parenthesized subpatterns. +

+

+Inside a character class, or if the decimal number is greater than 9 +and there have not been that many capturing subpatterns, GRegex re-reads +up to three octal digits following the backslash, and uses them to generate +a data character. Any subsequent digits stand for themselves. For example: +

+
+

Table 4. Non-printing characters

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EscapeMeaning
\040is another way of writing a space
\40is the same, provided there are fewer than 40 previous capturing subpatterns
\7is always a back reference
\11might be a back reference, or another way of writing a tab
\011is always a tab
\0113is a tab followed by the character "3"
\113might be a back reference, otherwise the character with octal code 113
\377might be a back reference, otherwise the byte consisting entirely of 1 bits
\81is either a back reference, or a binary zero followed by the two characters "8" and "1"
+
+

+Note that octal values of 100 or greater must not be introduced by a +leading zero, because no more than three octal digits are ever read. +

+

+All the sequences that define a single character can be used both inside +and outside character classes. In addition, inside a character class, the +sequence \b is interpreted as the backspace character (hex 08), and the +sequences \R and \X are interpreted as the characters "R" and "X", respectively. +Outside a character class, these sequences have different meanings (see below). +

+
+
+
+

Absolute and relative back references

+

+The sequence \g followed by a positive or negative number, optionally enclosed +in braces, is an absolute or relative back reference. Back references are +discussed later, following the discussion of parenthesized subpatterns. +

+
+
+
+

Generic character types

+

+Another use of backslash is for specifying generic character types. +The following are always recognized: +

+
+

Table 5. Generic characters

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EscapeMeaning
\dany decimal digit
\Dany character that is not a decimal digit
\sany whitespace character
\Sany character that is not a whitespace character
\wany "word" character
\Wany "non-word" character
+
+

+Each pair of escape sequences partitions the complete set of characters +into two disjoint sets. Any given character matches one, and only one, +of each pair. +

+

+These character type sequences can appear both inside and outside character +classes. They each match one character of the appropriate type. +If the current matching point is at the end of the passed string, all +of them fail, since there is no character to match. +

+

+For compatibility with Perl, \s does not match the VT character (code +11). This makes it different from the the POSIX "space" class. The \s +characters are HT (9), LF (10), FF (12), CR (13), and space (32). +

+

+A "word" character is an underscore or any character less than 256 that +is a letter or digit.

+

+Characters with values greater than 128 never match \d, +\s, or \w, and always match \D, \S, and \W. +

+
+
+
+

Newline sequences

+

Outside a character class, the escape sequence \R matches any Unicode +newline sequence. +This particular group matches either the two-character sequence CR followed by +LF, or one of the single characters LF (linefeed, U+000A), VT (vertical tab, +U+000B), FF (formfeed, U+000C), CR (carriage return, U+000D), NEL (next +line, U+0085), LS (line separator, U+2028), or PS (paragraph separator, U+2029). +The two-character sequence is treated as a single unit that +cannot be split. Inside a character class, \R matches the letter "R".

+
+
+
+

Unicode character properties

+

+To support generic character types there are three additional escape +sequences, they are: +

+
+

Table 6. Generic character types

+
++++ + + + + + + + + + + + + + + + + + + +
EscapeMeaning
\p{xx}a character with the xx property
\P{xx}a character without the xx property
\Xan extended Unicode sequence
+
+

+The property names represented by xx above are limited to the Unicode +script names, the general category properties, and "Any", which matches +any character (including newline). Other properties such as "InMusicalSymbols" +are not currently supported. Note that \P{Any} does not match any characters, +so always causes a match failure. +

+

+Sets of Unicode characters are defined as belonging to certain scripts. A +character from one of these sets can be matched using a script name. For +example, \p{Greek} or \P{Han}. +

+

+Those that are not part of an identified script are lumped together as +"Common". The current list of scripts can be found in the documentation for +the #GUnicodeScript enumeration. Script names for use with \p{} can be +found by replacing all spaces with underscores, e.g. for Linear B use +\p{Linear_B}. +

+

+Each character has exactly one general category property, specified by a +two-letter abbreviation. For compatibility with Perl, negation can be specified +by including a circumflex between the opening brace and the property name. For +example, \p{^Lu} is the same as \P{Lu}. +

+

+If only one letter is specified with \p or \P, it includes all the general +category properties that start with that letter. In this case, in the absence +of negation, the curly brackets in the escape sequence are optional; these two +examples have the same effect: +

+
+\p{L}
+\pL
+
+

+In addition to the two-letter category codes listed in the +documentation for the #GUnicodeType enumeration, the following +general category property codes are supported: +

+
+

Table 7. Property codes

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CodeMeaning
COther
LLetter
MMark
NNumber
PPunctuation
SSymbol
ZSeparator
+
+

+The special property L& is also supported: it matches a character that has +the Lu, Ll, or Lt property, in other words, a letter that is not classified as +a modifier or "other". +

+

+The long synonyms for these properties that Perl supports (such as \ep{Letter}) +are not supported by GRegex, nor is it permitted to prefix any of these +properties with "Is". +

+

+No character that is in the Unicode table has the Cn (unassigned) property. +Instead, this property is assumed for any code point that is not in the +Unicode table. +

+

+Specifying caseless matching does not affect these escape sequences. +For example, \p{Lu} always matches only upper case letters. +

+

+The \X escape matches any number of Unicode characters that form an +extended Unicode sequence. \X is equivalent to +

+
+(?>\PM\pM*)
+
+

+That is, it matches a character without the "mark" property, followed +by zero or more characters with the "mark" property, and treats the +sequence as an atomic group (see below). Characters with the "mark" +property are typically accents that affect the preceding character. +

+

+Matching characters by Unicode property is not fast, because GRegex has +to search a structure that contains data for over fifteen thousand +characters. That is why the traditional escape sequences such as \d and +\w do not use Unicode properties. +

+
+
+
+

Simple assertions

+

+The final use of backslash is for certain simple assertions. An +assertion specifies a condition that has to be met at a particular point in +a match, without consuming any characters from the string. The +use of subpatterns for more complicated assertions is described below. +The backslashed assertions are: +

+
+

Table 8. Simple assertions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EscapeMeaning
\bmatches at a word boundary
\Bmatches when not at a word boundary
\Amatches at the start of the string
\Zmatches at the end of the string or before a newline at the end of the string
\zmatches only at the end of the string
\Gmatches at first matching position in the string
+
+

+These assertions may not appear in character classes (but note that \b +has a different meaning, namely the backspace character, inside a +character class). +

+

+A word boundary is a position in the string where the current +character and the previous character do not both match \w or \W (i.e. +one matches \w and the other matches \W), or the start or end of the +string if the first or last character matches \w, respectively. +

+

+The \A, \Z, and \z assertions differ from the traditional circumflex +and dollar (described in the next section) in that they only ever match +at the very start and end of the string, whatever options are +set. Thus, they are independent of multiline mode. These three assertions +are not affected by the G_REGEX_MATCH_NOTBOL or G_REGEX_MATCH_NOTEOL options, +which affect only the behaviour of the circumflex and dollar metacharacters. +However, if the start_position argument of a matching function is non-zero, +indicating that matching is to start at a point other than the beginning of +the string, \A can never match. The difference between \Z and \z is +that \Z matches before a newline at the end of the string as well at the +very end, whereas \z matches only at the end. +

+

+The \G assertion is true only when the current matching position is at +the start point of the match, as specified by the start_position argument +to the matching functions. It differs from \A when the value of startoffset is +non-zero. +

+

+Note, however, that the interpretation of \G, as the start of the +current match, is subtly different from Perl’s, which defines it as the +end of the previous match. In Perl, these can be different when the +previously matched string was empty. +

+

+If all the alternatives of a pattern begin with \G, the expression is +anchored to the starting match position, and the "anchored" flag is set +in the compiled regular expression. +

+
+
+
+

Circumflex and dollar

+

+Outside a character class, in the default matching mode, the circumflex +character is an assertion that is true only if the current matching +point is at the start of the string. If the start_position argument to +the matching functions is non-zero, circumflex can never match if the +G_REGEX_MULTILINE option is unset. Inside a character class, circumflex +has an entirely different meaning (see below). +

+

+Circumflex need not be the first character of the pattern if a number +of alternatives are involved, but it should be the first thing in each +alternative in which it appears if the pattern is ever to match that +branch. If all possible alternatives start with a circumflex, that is, +if the pattern is constrained to match only at the start of the string, +it is said to be an "anchored" pattern. (There are also other +constructs that can cause a pattern to be anchored.) +

+

+A dollar character is an assertion that is true only if the current +matching point is at the end of the string, or immediately +before a newline at the end of the string (by default). Dollar need not +be the last character of the pattern if a number of alternatives are +involved, but it should be the last item in any branch in which it +appears. Dollar has no special meaning in a character class. +

+

+The meaning of dollar can be changed so that it matches only at the +very end of the string, by setting the G_REGEX_DOLLAR_ENDONLY option at +compile time. This does not affect the \Z assertion. +

+

+The meanings of the circumflex and dollar characters are changed if the +G_REGEX_MULTILINE option is set. When this is the case, +a circumflex matches immediately after internal newlines as well as at the +start of the string. It does not match after a newline that ends the string. +A dollar matches before any newlines in the string, as well as at the very +end, when G_REGEX_MULTILINE is set. When newline is +specified as the two-character sequence CRLF, isolated CR and LF characters +do not indicate newlines. +

+

+For example, the pattern /^abc$/ matches the string "def\nabc" (where +\n represents a newline) in multiline mode, but not otherwise. Consequently, +patterns that are anchored in single line mode because all branches start with +^ are not anchored in multiline mode, and a match for circumflex is possible +when the start_position argument of a matching function +is non-zero. The G_REGEX_DOLLAR_ENDONLY option is ignored +if G_REGEX_MULTILINE is set. +

+

+Note that the sequences \A, \Z, and \z can be used to match the start and +end of the string in both modes, and if all branches of a pattern start with +\A it is always anchored, whether or not G_REGEX_MULTILINE +is set. +

+
+
+

Full stop (period, dot)

+

+Outside a character class, a dot in the pattern matches any one character +in the string, including a non-printing character, but not (by +default) newline. In UTF-8 a character might be more than one byte long. +

+

+When a line ending is defined as a single character, dot never matches that +character; when the two-character sequence CRLF is used, dot does not match CR +if it is immediately followed by LF, but otherwise it matches all characters +(including isolated CRs and LFs). When any Unicode line endings are being +recognized, dot does not match CR or LF or any of the other line ending +characters. +

+

+If the G_REGEX_DOTALL flag is set, dots match newlines +as well. The handling of dot is entirely independent of the handling of circumflex +and dollar, the only relationship being that they both involve newline +characters. Dot has no special meaning in a character class. +

+

+The behaviour of dot with regard to newlines can be changed. If the +G_REGEX_DOTALL option is set, a dot matches any one +character, without exception. If newline is defined as the two-character +sequence CRLF, it takes two dots to match it. +

+

+The handling of dot is entirely independent of the handling of circumflex and +dollar, the only relationship being that they both involve newlines. Dot has no +special meaning in a character class. +

+
+
+

Matching a single byte

+

+Outside a character class, the escape sequence \C matches any one byte, +both in and out of UTF-8 mode. Unlike a dot, it always matches any line +ending characters. +The feature is provided in Perl in order to match individual bytes in +UTF-8 mode. Because it breaks up UTF-8 characters into individual +bytes, what remains in the string may be a malformed UTF-8 string. For +this reason, the \C escape sequence is best avoided. +

+

+GRegex does not allow \C to appear in lookbehind assertions (described +below), because in UTF-8 mode this would make it impossible to calculate +the length of the lookbehind. +

+
+
+

Square brackets and character classes

+

+An opening square bracket introduces a character class, terminated by a +closing square bracket. A closing square bracket on its own is not special. If a closing square bracket is required as a member of the class, +it should be the first data character in the class (after an initial +circumflex, if present) or escaped with a backslash. +

+

+A character class matches a single character in the string. A matched character +must be in the set of characters defined by the class, unless the first +character in the class definition is a circumflex, in which case the +string character must not be in the set defined by the class. If a +circumflex is actually required as a member of the class, ensure it is +not the first character, or escape it with a backslash. +

+

+For example, the character class [aeiou] matches any lower case vowel, +while [^aeiou] matches any character that is not a lower case vowel. +Note that a circumflex is just a convenient notation for specifying the +characters that are in the class by enumerating those that are not. A +class that starts with a circumflex is not an assertion: it still consumes +a character from the string, and therefore it fails if the current pointer +is at the end of the string. +

+

+In UTF-8 mode, characters with values greater than 255 can be included +in a class as a literal string of bytes, or by using the \x{ escaping +mechanism. +

+

+When caseless matching is set, any letters in a class represent both +their upper case and lower case versions, so for example, a caseless +[aeiou] matches "A" as well as "a", and a caseless [^aeiou] does not +match "A", whereas a caseful version would. +

+

+Characters that might indicate line breaks are never treated +in any special way when matching character classes, whatever line-ending +sequence is in use, and whatever setting of the G_REGEX_DOTALL +and G_REGEX_MULTILINE options is used. A class such as [^a] +always matches one of these characters. +

+

+The minus (hyphen) character can be used to specify a range of characters in +a character class. For example, [d-m] matches any letter +between d and m, inclusive. If a minus character is required in a +class, it must be escaped with a backslash or appear in a position +where it cannot be interpreted as indicating a range, typically as the +first or last character in the class. +

+

+It is not possible to have the literal character "]" as the end character +of a range. A pattern such as [W-]46] is interpreted as a class of +two characters ("W" and "-") followed by a literal string "46]", so it +would match "W46]" or "-46]". However, if the "]" is escaped with a +backslash it is interpreted as the end of range, so [W-\]46] is interpreted +as a class containing a range followed by two other characters. +The octal or hexadecimal representation of "]" can also be used to end +a range. +

+

+Ranges operate in the collating sequence of character values. They can +also be used for characters specified numerically, for example +[\000-\037]. In UTF-8 mode, ranges can include characters whose values +are greater than 255, for example [\x{100}-\x{2ff}]. +

+

+The character types \d, \D, \p, \P, \s, \S, \w, and \W may also appear +in a character class, and add the characters that they match to the +class. For example, [\dABCDEF] matches any hexadecimal digit. A +circumflex can conveniently be used with the upper case character types to +specify a more restricted set of characters than the matching lower +case type. For example, the class [^\W_] matches any letter or digit, +but not underscore. +

+

+The only metacharacters that are recognized in character classes are +backslash, hyphen (only where it can be interpreted as specifying a +range), circumflex (only at the start), opening square bracket (only +when it can be interpreted as introducing a POSIX class name - see the +next section), and the terminating closing square bracket. However, +escaping other non-alphanumeric characters does no harm. +

+
+
+

Posix character classes

+

+GRegex supports the POSIX notation for character classes. This uses names +enclosed by [: and :] within the enclosing square brackets. For example, +

+
+[01[:alpha:]%]
+
+

+matches "0", "1", any alphabetic character, or "%". The supported class +names are +

+
+

Table 9. Posix classes

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameMeaning
alnumletters and digits
alphaletters
asciicharacter codes 0 - 127
blankspace or tab only
cntrlcontrol characters
digitdecimal digits (same as \d)
graphprinting characters, excluding space
lowerlower case letters
printprinting characters, including space
punctprinting characters, excluding letters and digits
spacewhite space (not quite the same as \s)
upperupper case letters
word"word" characters (same as \w)
xdigithexadecimal digits
+
+

+The "space" characters are HT (9), LF (10), VT (11), FF (12), CR (13), +and space (32). Notice that this list includes the VT character (code +11). This makes "space" different to \s, which does not include VT (for +Perl compatibility). +

+

+The name "word" is a Perl extension, and "blank" is a GNU extension. +Another Perl extension is negation, which is indicated by a ^ character +after the colon. For example, +

+
+[12[:^digit:]]
+
+

+matches "1", "2", or any non-digit. GRegex also recognize the +POSIX syntax [.ch.] and [=ch=] where "ch" is a "collating element", but +these are not supported, and an error is given if they are encountered. +

+

+In UTF-8 mode, characters with values greater than 128 do not match any +of the POSIX character classes. +

+
+
+

Vertical bar

+

+Vertical bar characters are used to separate alternative patterns. For +example, the pattern +

+
+ gilbert|sullivan
+
+

+matches either "gilbert" or "sullivan". Any number of alternatives may +appear, and an empty alternative is permitted (matching the empty +string). The matching process tries each alternative in turn, from +left to right, and the first one that succeeds is used. If the alternatives are within a subpattern (defined below), "succeeds" means matching the rest of the main pattern as well as the alternative in the subpattern. +

+
+
+

Internal option setting

+

+The settings of the G_REGEX_CASELESS, G_REGEX_MULTILINE, G_REGEX_MULTILINE, +and G_REGEX_EXTENDED options can be changed from within the pattern by a +sequence of Perl-style option letters enclosed between "(?" and ")". The +option letters are +

+
+

Table 10. Option settings

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
OptionFlag
iG_REGEX_CASELESS
mG_REGEX_MULTILINE
sG_REGEX_DOTALL
xG_REGEX_EXTENDED
+
+

+For example, (?im) sets caseless, multiline matching. It is also +possible to unset these options by preceding the letter with a hyphen, and a +combined setting and unsetting such as (?im-sx), which sets G_REGEX_CASELESS +and G_REGEX_MULTILINE while unsetting G_REGEX_DOTALL and G_REGEX_EXTENDED, +is also permitted. If a letter appears both before and after the +hyphen, the option is unset. +

+

+When an option change occurs at top level (that is, not inside subpattern +parentheses), the change applies to the remainder of the pattern +that follows. +

+

+An option change within a subpattern (see below for a description of subpatterns) +affects only that part of the current pattern that follows it, so +

+
+(a(?i)b)c
+
+

+matches abc and aBc and no other strings (assuming G_REGEX_CASELESS is not +used). By this means, options can be made to have different settings +in different parts of the pattern. Any changes made in one alternative +do carry on into subsequent branches within the same subpattern. For +example, +

+
+(a(?i)b|c)
+
+

+matches "ab", "aB", "c", and "C", even though when matching "C" the +first branch is abandoned before the option setting. This is because +the effects of option settings happen at compile time. There would be +some very weird behaviour otherwise. +

+

+The options G_REGEX_UNGREEDY and +G_REGEX_EXTRA and G_REGEX_DUPNAMES +can be changed in the same way as the Perl-compatible options by using +the characters U, X and J respectively. +

+
+
+

Subpatterns

+

+Subpatterns are delimited by parentheses (round brackets), which can be +nested. Turning part of a pattern into a subpattern does two things: +

+
    +
  • +It localizes a set of alternatives. For example, the pattern +cat(aract|erpillar|) matches one of the words "cat", "cataract", or +"caterpillar". Without the parentheses, it would match "cataract", +"erpillar" or an empty string. +

  • +
  • +It sets up the subpattern as a capturing subpattern. This means +that, when the whole pattern matches, that portion of the +string that matched the subpattern can be obtained using g_match_info_fetch(). +Opening parentheses are counted from left to right (starting from 1, as +subpattern 0 is the whole matched string) to obtain numbers for the +capturing subpatterns. +

  • +
+

+For example, if the string "the red king" is matched against the pattern +

+
+the ((red|white) (king|queen))
+
+

+the captured substrings are "red king", "red", and "king", and are numbered 1, 2, and 3, respectively. +

+

+The fact that plain parentheses fulfil two functions is not always +helpful. There are often times when a grouping subpattern is required +without a capturing requirement. If an opening parenthesis is followed +by a question mark and a colon, the subpattern does not do any capturing, +and is not counted when computing the number of any subsequent +capturing subpatterns. For example, if the string "the white queen" is +matched against the pattern +

+
+the ((?:red|white) (king|queen))
+
+

+the captured substrings are "white queen" and "queen", and are numbered +1 and 2. The maximum number of capturing subpatterns is 65535. +

+

+As a convenient shorthand, if any option settings are required at the +start of a non-capturing subpattern, the option letters may appear +between the "?" and the ":". Thus the two patterns +

+
+(?i:saturday|sunday)
+(?:(?i)saturday|sunday)
+
+

+match exactly the same set of strings. Because alternative branches are +tried from left to right, and options are not reset until the end of +the subpattern is reached, an option setting in one branch does affect +subsequent branches, so the above patterns match "SUNDAY" as well as +"Saturday". +

+
+
+

Named subpatterns

+

+Identifying capturing parentheses by number is simple, but it can be +very hard to keep track of the numbers in complicated regular expressions. +Furthermore, if an expression is modified, the numbers may +change. To help with this difficulty, GRegex supports the naming of +subpatterns. A subpattern can be named in one of three ways: (?<name>...) or +(?'name'...) as in Perl, or (?P<name>...) as in Python. +References to capturing parentheses from other +parts of the pattern, such as backreferences, recursion, and conditions, +can be made by name as well as by number. +

+

+Names consist of up to 32 alphanumeric characters and underscores. Named +capturing parentheses are still allocated numbers as well as names, exactly as +if the names were not present. +By default, a name must be unique within a pattern, but it is possible to relax +this constraint by setting the G_REGEX_DUPNAMES option at +compile time. This can be useful for patterns where only one instance of the +named parentheses can match. Suppose you want to match the name of a weekday, +either as a 3-letter abbreviation or as the full name, and in both cases you +want to extract the abbreviation. This pattern (ignoring the line breaks) does +the job: +

+
+(?<DN>Mon|Fri|Sun)(?:day)?|
+(?<DN>Tue)(?:sday)?|
+(?<DN>Wed)(?:nesday)?|
+(?<DN>Thu)(?:rsday)?|
+(?<DN>Sat)(?:urday)?
+
+

+There are five capturing substrings, but only one is ever set after a match. +The function for extracting the data by name returns the substring +for the first (and in this example, the only) subpattern of that name that +matched. This saves searching to find which numbered subpattern it was. If you +make a reference to a non-unique named subpattern from elsewhere in the +pattern, the one that corresponds to the lowest number is used. +

+
+
+

Repetition

+

+Repetition is specified by quantifiers, which can follow any of the +following items: +

+
    +
  • a literal data character

  • +
  • the dot metacharacter

  • +
  • the \C escape sequence

  • +
  • the \X escape sequence (in UTF-8 mode)

  • +
  • the \R escape sequence

  • +
  • an escape such as \d that matches a single character

  • +
  • a character class

  • +
  • a back reference (see next section)

  • +
  • a parenthesized subpattern (unless it is an assertion)

  • +
+

+The general repetition quantifier specifies a minimum and maximum number +of permitted matches, by giving the two numbers in curly brackets +(braces), separated by a comma. The numbers must be less than 65536, +and the first must be less than or equal to the second. For example: +

+
+z{2,4}
+
+

+matches "zz", "zzz", or "zzzz". A closing brace on its own is not a +special character. If the second number is omitted, but the comma is +present, there is no upper limit; if the second number and the comma +are both omitted, the quantifier specifies an exact number of required +matches. Thus +

+
+[aeiou]{3,}
+
+

+matches at least 3 successive vowels, but may match many more, while +

+
+\d{8}
+
+

+matches exactly 8 digits. An opening curly bracket that appears in a +position where a quantifier is not allowed, or one that does not match +the syntax of a quantifier, is taken as a literal character. For example, +{,6} is not a quantifier, but a literal string of four characters. +

+

+In UTF-8 mode, quantifiers apply to UTF-8 characters rather than to +individual bytes. Thus, for example, \x{100}{2} matches two UTF-8 +characters, each of which is represented by a two-byte sequence. Similarly, +\X{3} matches three Unicode extended sequences, each of which may be +several bytes long (and they may be of different lengths). +

+

+The quantifier {0} is permitted, causing the expression to behave as if +the previous item and the quantifier were not present. +

+

+For convenience, the three most common quantifiers have single-character +abbreviations: +

+
+

Table 11. Abbreviations for quantifiers

+
++++ + + + + + + + + + + + + + + + + + + +
AbbreviationMeaning
*is equivalent to {0,}
+is equivalent to {1,}
?is equivalent to {0,1}
+
+

+It is possible to construct infinite loops by following a subpattern +that can match no characters with a quantifier that has no upper limit, +for example: +

+
+(a?)*
+
+

+Because there are cases where this can be useful, such patterns are +accepted, but if any repetition of the subpattern does in fact match +no characters, the loop is forcibly broken. +

+

+By default, the quantifiers are "greedy", that is, they match as much +as possible (up to the maximum number of permitted times), without +causing the rest of the pattern to fail. The classic example of where +this gives problems is in trying to match comments in C programs. These +appear between /* and */ and within the comment, individual * and / +characters may appear. An attempt to match C comments by applying the +pattern +

+
+/\*.*\*/
+
+

+to the string +

+
+/* first comment */  not comment  /* second comment */
+
+

+fails, because it matches the entire string owing to the greediness of +the .* item. +

+

+However, if a quantifier is followed by a question mark, it ceases to +be greedy, and instead matches the minimum number of times possible, so +the pattern +

+
+/\*.*?\*/
+
+

+does the right thing with the C comments. The meaning of the various +quantifiers is not otherwise changed, just the preferred number of +matches. Do not confuse this use of question mark with its use as a +quantifier in its own right. Because it has two uses, it can sometimes +appear doubled, as in +

+
+\d??\d
+
+

+which matches one digit by preference, but can match two if that is the +only way the rest of the pattern matches. +

+

+If the G_REGEX_UNGREEDY flag is set, the quantifiers are not greedy +by default, but individual ones can be made greedy by following them with +a question mark. In other words, it inverts the default behaviour. +

+

+When a parenthesized subpattern is quantified with a minimum repeat +count that is greater than 1 or with a limited maximum, more memory is +required for the compiled pattern, in proportion to the size of the +minimum or maximum. +

+

+If a pattern starts with .* or .{0,} and the G_REGEX_DOTALL flag +is set, thus allowing the dot to match newlines, the +pattern is implicitly anchored, because whatever follows will be tried +against every character position in the string, so there is no +point in retrying the overall match at any position after the first. +GRegex normally treats such a pattern as though it were preceded by \A. +

+

+In cases where it is known that the string contains no newlines, it +is worth setting G_REGEX_DOTALL in order to obtain this optimization, +or alternatively using ^ to indicate anchoring explicitly. +

+

+However, there is one situation where the optimization cannot be used. +When .* is inside capturing parentheses that are the subject of a +backreference elsewhere in the pattern, a match at the start may fail +where a later one succeeds. Consider, for example: +

+
+(.*)abc\1
+
+

+If the string is "xyz123abc123" the match point is the fourth character. +For this reason, such a pattern is not implicitly anchored. +

+

+When a capturing subpattern is repeated, the value captured is the +substring that matched the final iteration. For example, after +

+
+(tweedle[dume]{3}\s*)+
+
+

+has matched "tweedledum tweedledee" the value of the captured substring +is "tweedledee". However, if there are nested capturing subpatterns, +the corresponding captured values may have been set in previous iterations. +For example, after +

+
+/(a|(b))+/
+
+

+matches "aba" the value of the second captured substring is "b". +

+
+
+

Atomic grouping and possessive quantifiers

+

+With both maximizing ("greedy") and minimizing ("ungreedy" or "lazy") +repetition, failure of what follows normally causes the repeated +item to be re-evaluated to see if a different number +of repeats allows the rest of the pattern to match. Sometimes it +is useful to prevent this, either to change the nature of the +match, or to cause it fail earlier than it otherwise might, when the +author of the pattern knows there is no point in carrying on. +

+

+Consider, for example, the pattern \d+foo when applied to the string +

+
+123456bar
+
+

+After matching all 6 digits and then failing to match "foo", the normal +action of the matcher is to try again with only 5 digits matching the +\d+ item, and then with 4, and so on, before ultimately failing. +"Atomic grouping" (a term taken from Jeffrey Friedl’s book) provides +the means for specifying that once a subpattern has matched, it is not +to be re-evaluated in this way. +

+

+If we use atomic grouping for the previous example, the matcher +give up immediately on failing to match "foo" the first time. The notation +is a kind of special parenthesis, starting with (?> as in this +example: +

+
+(?>\d+)foo
+
+

+This kind of parenthesis "locks up" the part of the pattern it contains +once it has matched, and a failure further into the pattern is +prevented from backtracking into it. Backtracking past it to previous +items, however, works as normal. +

+

+An alternative description is that a subpattern of this type matches +the string of characters that an identical standalone pattern would +match, if anchored at the current point in the string. +

+

+Atomic grouping subpatterns are not capturing subpatterns. Simple cases +such as the above example can be thought of as a maximizing repeat that +must swallow everything it can. So, while both \d+ and \d+? are prepared +to adjust the number of digits they match in order to make the +rest of the pattern match, (?>\d+) can only match an entire sequence of +digits. +

+

+Atomic groups in general can of course contain arbitrarily complicated +subpatterns, and can be nested. However, when the subpattern for an +atomic group is just a single repeated item, as in the example above, a +simpler notation, called a "possessive quantifier" can be used. This +consists of an additional + character following a quantifier. Using +this notation, the previous example can be rewritten as +

+
+\d++foo
+
+

+Possessive quantifiers are always greedy; the setting of the +G_REGEX_UNGREEDY option is ignored. They are a convenient notation for the +simpler forms of atomic group. However, there is no difference in the +meaning of a possessive quantifier and the equivalent +atomic group, though there may be a performance difference; +possessive quantifiers should be slightly faster. +

+

+The possessive quantifier syntax is an extension to the Perl syntax. +It was invented by Jeffrey Friedl in the first edition of his book and +then implemented by Mike McCloskey in Sun's Java package. +It ultimately found its way into Perl at release 5.10. +

+

+GRegex has an optimization that automatically "possessifies" certain simple +pattern constructs. For example, the sequence A+B is treated as A++B because +there is no point in backtracking into a sequence of A's when B must follow. +

+

+When a pattern contains an unlimited repeat inside a subpattern that +can itself be repeated an unlimited number of times, the use of an +atomic group is the only way to avoid some failing matches taking a +very long time indeed. The pattern +

+
+(\D+|<\d+>)*[!?]
+
+

+matches an unlimited number of substrings that either consist of non- +digits, or digits enclosed in <>, followed by either ! or ?. When it +matches, it runs quickly. However, if it is applied to +

+
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+

+it takes a long time before reporting failure. This is because the +string can be divided between the internal \D+ repeat and the external +* repeat in a large number of ways, and all have to be tried. (The +example uses [!?] rather than a single character at the end, because +GRegex has an optimization that allows for fast failure +when a single character is used. It remember the last single character +that is required for a match, and fail early if it is not present +in the string.) If the pattern is changed so that it uses an atomic +group, like this: +

+
+((?>\D+)|<\d+>)*[!?]
+
+

+sequences of non-digits cannot be broken, and failure happens quickly. +

+
+
+

Back references

+

+Outside a character class, a backslash followed by a digit greater than +0 (and possibly further digits) is a back reference to a capturing subpattern +earlier (that is, to its left) in the pattern, provided there have been that +many previous capturing left parentheses. +

+

+However, if the decimal number following the backslash is less than 10, +it is always taken as a back reference, and causes an error only if +there are not that many capturing left parentheses in the entire pattern. +In other words, the parentheses that are referenced need not be +to the left of the reference for numbers less than 10. A "forward back +reference" of this type can make sense when a repetition is involved and +the subpattern to the right has participated in an earlier iteration. +

+

+It is not possible to have a numerical "forward back reference" to subpattern +whose number is 10 or more using this syntax because a sequence such as \e50 is +interpreted as a character defined in octal. See the subsection entitled +"Non-printing characters" above for further details of the handling of digits +following a backslash. There is no such problem when named parentheses are used. +A back reference to any subpattern is possible using named parentheses (see below). +

+

+Another way of avoiding the ambiguity inherent in the use of digits following a +backslash is to use the \g escape sequence (introduced in Perl 5.10.) +This escape must be followed by a positive or a negative number, +optionally enclosed in braces. +

+

+A positive number specifies an absolute reference without the ambiguity that is +present in the older syntax. It is also useful when literal digits follow the +reference. A negative number is a relative reference. Consider "(abc(def)ghi)\g{-1}", +the sequence \g{-1} is a reference to the most recently started capturing +subpattern before \g, that is, is it equivalent to \2. Similarly, \g{-2} +would be equivalent to \1. The use of relative references can be helpful in +long patterns, and also in patterns that are created by joining together +fragments that contain references within themselves. +

+

+A back reference matches whatever actually matched the capturing subpattern +in the current string, rather than anything matching +the subpattern itself (see "Subpatterns as subroutines" below for a way +of doing that). So the pattern +

+
+(sens|respons)e and \1ibility
+
+

+matches "sense and sensibility" and "response and responsibility", but +not "sense and responsibility". If caseful matching is in force at the +time of the back reference, the case of letters is relevant. For example, +

+
+((?i)rah)\s+\1
+
+

+matches "rah rah" and "RAH RAH", but not "RAH rah", even though the +original capturing subpattern is matched caselessly. +

+

+Back references to named subpatterns use the Perl syntax \k<name> or \k'name' +or the Python syntax (?P=name). We could rewrite the above example in either of +the following ways: +

+
+(?<p1>(?i)rah)\s+\k<p1>
+(?P<p1>(?i)rah)\s+(?P=p1)
+
+

+A subpattern that is referenced by name may appear in the pattern before or +after the reference. +

+

+There may be more than one back reference to the same subpattern. If a +subpattern has not actually been used in a particular match, any back +references to it always fail. For example, the pattern +

+
+(a|(bc))\2
+
+

+always fails if it starts to match "a" rather than "bc". Because there +may be many capturing parentheses in a pattern, all digits following +the backslash are taken as part of a potential back reference number. +If the pattern continues with a digit character, some delimiter must be +used to terminate the back reference. If the G_REGEX_EXTENDED flag is +set, this can be whitespace. Otherwise an empty comment (see "Comments" below) can be used. +

+

+A back reference that occurs inside the parentheses to which it refers +fails when the subpattern is first used, so, for example, (a\1) never +matches. However, such references can be useful inside repeated subpatterns. +For example, the pattern +

+
+(a|b\1)+
+
+

+matches any number of "a"s and also "aba", "ababbaa" etc. At each iteration +of the subpattern, the back reference matches the character +string corresponding to the previous iteration. In order for this to +work, the pattern must be such that the first iteration does not need +to match the back reference. This can be done using alternation, as in +the example above, or by a quantifier with a minimum of zero. +

+
+
+

Assertions

+

+An assertion is a test on the characters following or preceding the +current matching point that does not actually consume any characters. +The simple assertions coded as \b, \B, \A, \G, \Z, \z, ^ and $ are +described above. +

+

+More complicated assertions are coded as subpatterns. There are two +kinds: those that look ahead of the current position in the +string, and those that look behind it. An assertion subpattern is +matched in the normal way, except that it does not cause the current +matching position to be changed. +

+

+Assertion subpatterns are not capturing subpatterns, and may not be +repeated, because it makes no sense to assert the same thing several +times. If any kind of assertion contains capturing subpatterns within +it, these are counted for the purposes of numbering the capturing +subpatterns in the whole pattern. However, substring capturing is carried +out only for positive assertions, because it does not make sense for +negative assertions. +

+
+

Lookahead assertions

+

+Lookahead assertions start with (?= for positive assertions and (?! for +negative assertions. For example, +

+
+\w+(?=;)
+
+

+matches a word followed by a semicolon, but does not include the semicolon +in the match, and +

+
+foo(?!bar)
+
+

+matches any occurrence of "foo" that is not followed by "bar". Note +that the apparently similar pattern +

+
+(?!foo)bar
+
+

+does not find an occurrence of "bar" that is preceded by something +other than "foo"; it finds any occurrence of "bar" whatsoever, because +the assertion (?!foo) is always true when the next three characters are +"bar". A lookbehind assertion is needed to achieve the other effect. +

+

+If you want to force a matching failure at some point in a pattern, the +most convenient way to do it is with (?!) because an empty string +always matches, so an assertion that requires there not to be an empty +string must always fail. +

+
+
+
+

Lookbehind assertions

+

+Lookbehind assertions start with (?<= for positive assertions and (?<! +for negative assertions. For example, +

+
+(?<!foo)bar
+
+

+does find an occurrence of "bar" that is not preceded by "foo". The +contents of a lookbehind assertion are restricted such that all the +strings it matches must have a fixed length. However, if there are +several top-level alternatives, they do not all have to have the same +fixed length. Thus +

+
+(?<=bullock|donkey)
+
+

+is permitted, but +

+
+(?<!dogs?|cats?)
+
+

+causes an error at compile time. Branches that match different length +strings are permitted only at the top level of a lookbehind assertion. +An assertion such as +

+
+(?<=ab(c|de))
+
+

+is not permitted, because its single top-level branch can match two +different lengths, but it is acceptable if rewritten to use two top- +level branches: +

+
+(?<=abc|abde)
+
+

+The implementation of lookbehind assertions is, for each alternative, +to temporarily move the current position back by the fixed length and +then try to match. If there are insufficient characters before the +current position, the assertion fails. +

+

+GRegex does not allow the \C escape (which matches a single byte in UTF-8 +mode) to appear in lookbehind assertions, because it makes it impossible +to calculate the length of the lookbehind. The \X and \R escapes, which can +match different numbers of bytes, are also not permitted. +

+

+Possessive quantifiers can be used in conjunction with lookbehind assertions to +specify efficient matching at the end of the subject string. Consider a simple +pattern such as +

+
+abcd$
+
+

+when applied to a long string that does not match. Because matching +proceeds from left to right, GRegex will look for each "a" in the string +and then see if what follows matches the rest of the pattern. If the +pattern is specified as +

+
+^.*abcd$
+
+

+the initial .* matches the entire string at first, but when this fails +(because there is no following "a"), it backtracks to match all but the +last character, then all but the last two characters, and so on. Once +again the search for "a" covers the entire string, from right to left, +so we are no better off. However, if the pattern is written as +

+
+^.*+(?<=abcd)
+
+

+there can be no backtracking for the .*+ item; it can match only the +entire string. The subsequent lookbehind assertion does a single test +on the last four characters. If it fails, the match fails immediately. +For long strings, this approach makes a significant difference to the +processing time. +

+
+
+
+

Using multiple assertions

+

+Several assertions (of any sort) may occur in succession. For example, +

+
+(?<=\d{3})(?<!999)foo
+
+

+matches "foo" preceded by three digits that are not "999". Notice that +each of the assertions is applied independently at the same point in +the string. First there is a check that the previous three +characters are all digits, and then there is a check that the same +three characters are not "999". This pattern does not match "foo" preceded +by six characters, the first of which are digits and the last +three of which are not "999". For example, it doesn’t match "123abcfoo". +A pattern to do that is +

+
+(?<=\d{3}...)(?<!999)foo
+
+

+This time the first assertion looks at the preceding six characters, +checking that the first three are digits, and then the second assertion +checks that the preceding three characters are not "999". +

+

+Assertions can be nested in any combination. For example, +

+
+(?<=(?<!foo)bar)baz
+
+

+matches an occurrence of "baz" that is preceded by "bar" which in turn +is not preceded by "foo", while +

+
+(?<=\d{3}(?!999)...)foo
+
+

+is another pattern that matches "foo" preceded by three digits and any +three characters that are not "999". +

+
+
+
+

Conditional subpatterns

+

+It is possible to cause the matching process to obey a subpattern +conditionally or to choose between two alternative subpatterns, depending +on the result of an assertion, or whether a previous capturing subpattern +matched or not. The two possible forms of conditional subpattern are +

+
+(?(condition)yes-pattern)
+(?(condition)yes-pattern|no-pattern)
+
+

+If the condition is satisfied, the yes-pattern is used; otherwise the +no-pattern (if present) is used. If there are more than two alternatives +in the subpattern, a compile-time error occurs. +

+

+There are four kinds of condition: references to subpatterns, references to +recursion, a pseudo-condition called DEFINE, and assertions. +

+
+

Checking for a used subpattern by number

+

+If the text between the parentheses consists of a sequence of digits, the +condition is true if the capturing subpattern of that number has previously +matched. +

+

+Consider the following pattern, which contains non-significant white space +to make it more readable (assume the G_REGEX_EXTENDED) +and to divide it into three parts for ease of discussion: +

+
+( \( )?    [^()]+    (?(1) \) )
+
+

+The first part matches an optional opening parenthesis, and if that +character is present, sets it as the first captured substring. The second +part matches one or more characters that are not parentheses. The +third part is a conditional subpattern that tests whether the first set +of parentheses matched or not. If they did, that is, if string started +with an opening parenthesis, the condition is true, and so the yes-pattern +is executed and a closing parenthesis is required. Otherwise, +since no-pattern is not present, the subpattern matches nothing. In +other words, this pattern matches a sequence of non-parentheses, +optionally enclosed in parentheses. +

+
+
+
+

Checking for a used subpattern by name

+

+Perl uses the syntax (?(<name>)...) or (?('name')...) to test for a used +subpattern by name, the Python syntax (?(name)...) is also recognized. However, +there is a possible ambiguity with this syntax, because subpattern names may +consist entirely of digits. GRegex looks first for a named subpattern; if it +cannot find one and the name consists entirely of digits, GRegex looks for a +subpattern of that number, which must be greater than zero. Using subpattern +names that consist entirely of digits is not recommended. +

+

+Rewriting the above example to use a named subpattern gives this: +

+
+(?<OPEN> \( )?    [^()]+    (?(<OPEN>) \) )
+
+
+
+
+

Checking for pattern recursion

+

+If the condition is the string (R), and there is no subpattern with the name R, +the condition is true if a recursive call to the whole pattern or any +subpattern has been made. If digits or a name preceded by ampersand follow the +letter R, for example: +

+
+(?(R3)...)
+(?(R&name)...)
+
+

+the condition is true if the most recent recursion is into the subpattern whose +number or name is given. This condition does not check the entire recursion +stack. +

+

+At "top level", all these recursion test conditions are false. Recursive +patterns are described below. +

+
+
+
+

Defining subpatterns for use by reference only

+

+If the condition is the string (DEFINE), and there is no subpattern with the +name DEFINE, the condition is always false. In this case, there may be only one +alternative in the subpattern. It is always skipped if control reaches this +point in the pattern; the idea of DEFINE is that it can be used to define +"subroutines" that can be referenced from elsewhere. (The use of "subroutines" +is described below.) For example, a pattern to match an IPv4 address could be +written like this (ignore whitespace and line breaks): +

+
+(?(DEFINE) (?<byte> 2[0-4]\d | 25[0-5] | 1\d\d | [1-9]?\d) )
+\b (?&byte) (\.(?&byte)){3} \b
+
+

+The first part of the pattern is a DEFINE group inside which a another group +named "byte" is defined. This matches an individual component of an IPv4 +address (a number less than 256). When matching takes place, this part of the +pattern is skipped because DEFINE acts like a false condition. +

+

+The rest of the pattern uses references to the named group to match the four +dot-separated components of an IPv4 address, insisting on a word boundary at +each end. +

+
+
+
+

Assertion conditions

+

+If the condition is not in any of the above formats, it must be an +assertion. This may be a positive or negative lookahead or lookbehind +assertion. Consider this pattern, again containing non-significant +white space, and with the two alternatives on the second line: +

+
+(?(?=[^a-z]*[a-z])
+\d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} )
+
+

+The condition is a positive lookahead assertion that matches an +optional sequence of non-letters followed by a letter. In other words, +it tests for the presence of at least one letter in the string. If a +letter is found, the string is matched against the first alternative; +otherwise it is matched against the second. This pattern matches +strings in one of the two forms dd-aaa-dd or dd-dd-dd, where aaa are +letters and dd are digits. +

+
+
+
+

Comments

+

+The sequence (?# marks the start of a comment that continues up to the +next closing parenthesis. Nested parentheses are not permitted. The +characters that make up a comment play no part in the pattern matching +at all. +

+

+If the G_REGEX_EXTENDED option is set, an unescaped # +character outside a character class introduces a comment that continues to +immediately after the next newline in the pattern. +

+
+
+

Recursive patterns

+

+Consider the problem of matching a string in parentheses, allowing for +unlimited nested parentheses. Without the use of recursion, the best +that can be done is to use a pattern that matches up to some fixed +depth of nesting. It is not possible to handle an arbitrary nesting +depth. +

+

+For some time, Perl has provided a facility that allows regular expressions to +recurse (amongst other things). It does this by interpolating Perl code in the +expression at run time, and the code can refer to the expression itself. A Perl +pattern using code interpolation to solve the parentheses problem can be +created like this: +

+
+$re = qr{\( (?: (?>[^()]+) | (?p{$re}) )* \)}x;
+
+

+The (?p{...}) item interpolates Perl code at run time, and in this case refers +recursively to the pattern in which it appears. +

+

+Obviously, GRegex cannot support the interpolation of Perl code. Instead, it +supports special syntax for recursion of the entire pattern, and also for +individual subpattern recursion. This kind of recursion was introduced into +Perl at release 5.10. +

+

+A special item that consists of (? followed by a number greater than zero and a +closing parenthesis is a recursive call of the subpattern of the given number, +provided that it occurs inside that subpattern. (If not, it is a "subroutine" +call, which is described in the next section.) The special item (?R) or (?0) is +a recursive call of the entire regular expression. +

+

+In GRegex (like Python, but unlike Perl), a recursive subpattern call is always +treated as an atomic group. That is, once it has matched some of the subject +string, it is never re-entered, even if it contains untried alternatives and +there is a subsequent matching failure. +

+

+This pattern solves the nested parentheses problem (assume the +G_REGEX_EXTENDED option is set so that white space is +ignored): +

+
+\( ( (?>[^()]+) | (?R) )* \)
+
+

+First it matches an opening parenthesis. Then it matches any number of +substrings which can either be a sequence of non-parentheses, or a +recursive match of the pattern itself (that is, a correctly parenthesized +substring). Finally there is a closing parenthesis. +

+

+If this were part of a larger pattern, you would not want to recurse +the entire pattern, so instead you could use this: +

+
+( \( ( (?>[^()]+) | (?1) )* \) )
+
+

+We have put the pattern into parentheses, and caused the recursion to +refer to them instead of the whole pattern. In a larger pattern, keeping +track of parenthesis numbers can be tricky. It may be more convenient to +use named parentheses instead. +The Perl syntax for this is (?&name); GRegex also supports the(?P>name) +syntac. We could rewrite the above example as follows: +

+
+(?<pn> \( ( (?>[^()]+) | (?&pn) )* \) )
+
+

+If there is more than one subpattern with the same name, the earliest one is +used. This particular example pattern contains nested unlimited repeats, and so +the use of atomic grouping for matching strings of non-parentheses is important +when applying the pattern to strings that do not match. +For example, when this pattern is applied to +

+
+(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa()
+
+

+it yields "no match" quickly. However, if atomic grouping is not used, +the match runs for a very long time indeed because there are so many +different ways the + and * repeats can carve up the string, and all +have to be tested before failure can be reported. +

+

+At the end of a match, the values set for any capturing subpatterns are +those from the outermost level of the recursion at which the subpattern +value is set. + + + +If the pattern above is matched against +

+
+(ab(cd)ef)
+
+

+the value for the capturing parentheses is "ef", which is the last +value taken on at the top level. If additional parentheses are added, +giving +

+
+\( ( ( (?>[^()]+) | (?R) )* ) \)
+   ^                        ^
+   ^                        ^
+
+

+the string they capture is "ab(cd)ef", the contents of the top level +parentheses. +

+

+Do not confuse the (?R) item with the condition (R), which tests for +recursion. Consider this pattern, which matches text in angle brackets, +allowing for arbitrary nesting. Only digits are allowed in nested +brackets (that is, when recursing), whereas any characters are permitted +at the outer level. +

+
+< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >
+
+

+In this pattern, (?(R) is the start of a conditional subpattern, with +two different alternatives for the recursive and non-recursive cases. +The (?R) item is the actual recursive call. +

+
+
+

Subpatterns as subroutines

+

+If the syntax for a recursive subpattern reference (either by number or +by name) is used outside the parentheses to which it refers, it operates +like a subroutine in a programming language. The "called" subpattern may +be defined before or after the reference. An earlier example pointed out +that the pattern +

+
+(sens|respons)e and \1ibility
+
+

+matches "sense and sensibility" and "response and responsibility", but +not "sense and responsibility". If instead the pattern +

+
+(sens|respons)e and (?1)ibility
+
+

+is used, it does match "sense and responsibility" as well as the other +two strings. Another example is given in the discussion of DEFINE above. +

+

+Like recursive subpatterns, a "subroutine" call is always treated as an atomic +group. That is, once it has matched some of the string, it is never +re-entered, even if it contains untried alternatives and there is a subsequent +matching failure. +

+

+When a subpattern is used as a subroutine, processing options such as +case-independence are fixed when the subpattern is defined. They cannot be +changed for different calls. For example, consider this pattern: +

+
+(abc)(?i:(?1))
+
+

+It matches "abcabc". It does not match "abcABC" because the change of +processing option does not affect the called subpattern. +

+
+
+

Copyright

+

+This document was copied and adapted from the PCRE documentation, +specifically from the man page for pcrepattern. +The original copyright note is: +

+
+Copyright (c) 1997-2006 University of Cambridge.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the name of Google
+      Inc. nor the names of their contributors may be used to endorse or
+      promote products derived from this software without specific prior
+      written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-resources.html b/docs/reference/glib/html/glib-resources.html new file mode 100644 index 0000000..d02adfe --- /dev/null +++ b/docs/reference/glib/html/glib-resources.html @@ -0,0 +1,123 @@ + + + + +Mailing lists and bug reports: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Mailing lists and bug reports

+

Mailing lists and bug reports — +Getting help with GLib +

+
+
+

Filing a bug report or feature request

+

+If you encounter a bug, misfeature, or missing feature in GLib, please +file a bug report on +http://bugzilla.gnome.org. +We'd also appreciate reports of incomplete or misleading information in +the GLib documentation; file those against the "docs" component of the "glib" +product in Bugzilla. +

+

+Don't hesitate to file a bug report, even if you think we may know +about it already, or aren't sure of the details. Just give us as much +information as you have, and if it's already fixed or has already been +discussed, we'll add a note to that effect in the report. +

+

+The bug tracker should definitely be used for feature requests, it's +not only for bugs. We track all GLib development in Bugzilla, so it's +the way to be sure the GLib developers won't forget about an issue. +

+
+
+

Submitting Patches

+

+If you develop a bugfix or enhancement for GLib, please file that in +Bugzilla as well. Bugzilla allows you to attach files; please attach a +patch generated by the diff utility, using the +-u option to make the patch more readable. All patches +must be offered under the terms of the GNU LGPL license, so be sure you +are authorized to give us the patch under those terms. +

+

+If you want to discuss your patch before or after developing it, mail +gtk-devel-list@gnome.org. +But be sure to file the Bugzilla report as well; if the patch is only on the +list and not in Bugzilla, it's likely to slip through the cracks. +

+
+
+

Mailing lists

+

+There are several mailing lists dedicated to GTK+ and related +libraries. Discussion of GLib generally takes place on these lists. +You can subscribe or view the archives of these lists on +http://mail.gnome.org. +

+

+

+
++++ + + + + + + + + + + + + + + +

gtk-list@gnome.org

+gtk-list covers general GTK+ (and GLib) topics; questions about using GLib +in programs, GLib from a user standpoint, announcements of GLib-related projects +would all be on-topic. The bulk of the traffic consists of GTK+ programming +questions. +

gtk-devel-list@gnome.org

+gtk-devel-list is for discussion of work on GTK+ (and GLib) itself, it is +not for asking questions about how to use GTK+ (or GLib) +in applications. gtk-devel-list is appropriate for discussion of patches, +bugs, proposed features, and so on. +

gtk-doc-list@gnome.org

+gtk-doc-list is for discussion of the gtk-doc +documentation system (used to document GTK+ and Glib), and for work on the GTK+ +(and GLib) documentation. +

+

+

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-running.html b/docs/reference/glib/html/glib-running.html new file mode 100644 index 0000000..03782b4 --- /dev/null +++ b/docs/reference/glib/html/glib-running.html @@ -0,0 +1,294 @@ + + + + +Running GLib Applications: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Running GLib Applications

+

Running GLib Applications — +How to run and debug your GLib application +

+
+
+

Running and debugging GLib Applications

+
+

Environment variables

+

+ The runtime behaviour of GLib applications can be influenced by a + number of environment variables. +

+

Standard variables.  + GLib reads standard environment variables like LANG, + PATH, HOME, TMPDIR, + TZ and LOGNAME. +

+

XDG directories.  + GLib consults the environment variables XDG_DATA_HOME, + XDG_DATA_DIRS, XDG_CONFIG_HOME, + XDG_CONFIG_DIRS, XDG_CACHE_HOME and + XDG_RUNTIME_DIR for the various XDG directories. + For more information, see the XDG basedir spec. +

+

G_FILENAME_ENCODING.  + This environment variable can be set to a comma-separated list of character + set names. GLib assumes that filenames are encoded in the first character + set from that list rather than in UTF-8. The special token "@locale" can be + used to specify the character set for the current locale. +

+

G_BROKEN_FILENAMES.  + If this environment variable is set, GLib assumes that filenames are in + the locale encoding rather than in UTF-8. G_FILENAME_ENCODING takes + priority over G_BROKEN_FILENAMES. +

+

G_MESSAGES_PREFIXED.  + A list of log levels for which messages should be prefixed by the + program name and PID of the application. The default is to prefix + everything except G_LOG_LEVEL_MESSAGE and + G_LOG_LEVEL_INFO. + The possible values are + error, + warning, + critical, + message, + info and + debug. + You can also use the special values + all and + help. + + This environment variable only affects the default log handler, + g_log_default_handler(). +

+

G_MESSAGES_DEBUG.  + A space-separated list of log domains for which informational + and debug messages should be printed. By default, these + messages are not printed. + + You can also use the special value all. + + This environment variable only affects the default log handler, + g_log_default_handler(). +

+

G_DEBUG.  + This environment variable can be set to a list of debug options, + which cause GLib to print out different types of debugging information. +

+
++++ + + + + + + + + + + + + + + + + + + + + + + +

fatal-warnings

Causes GLib to abort the program at the first call + to g_warning() or g_critical().

fatal-criticals

Causes GLib to abort the program at the first call + to g_critical().

gc-friendly

Newly allocated memory that isn't directly initialized, + as well as memory being freed will be reset to 0. The point here is + to allow memory checkers and similar programs that use Boehm GC alike + algorithms to produce more accurate results.

resident-modules

All modules loaded by GModule will be made resident. + This can be useful for tracking memory leaks in modules which are + later unloaded; but it can also hide bugs where code is accessed + after the module would have normally been unloaded.

bind-now-modules

All modules loaded by GModule will bind their symbols + at load time, even when the code uses %G_MODULE_BIND_LAZY.

+

+ The special value all can be used to turn on all debug options. + The special value help can be used to print all available options. +

+

G_SLICE.  + This environment variable allows reconfiguration of the GSlice + memory allocator. +

+
++++ + + + + + + + + + + +

always-malloc

This will cause all slices allocated through + g_slice_alloc() and released by g_slice_free1() to be actually + allocated via direct calls to g_malloc() and g_free(). + This is most useful for memory checkers and similar programs that + use Boehm GC alike algorithms to produce more accurate results. + It can also be in conjunction with debugging features of the system's + malloc() implementation such as glibc's MALLOC_CHECK_=2 to debug + erroneous slice allocation code, although + debug-blocks is usually a better suited debugging + tool.

debug-blocks

+

Using this option (present since GLib 2.13) engages + extra code which performs sanity checks on the released memory + slices. Invalid slice addresses or slice sizes will be reported and + lead to a program halt. This option is for debugging scenarios. + In particular, client packages sporting their own test suite should + always enable this option when running tests. + Global slice validation is ensured by storing size and address + information for each allocated chunk, and maintaining a global + hash table of that data. That way, multi-thread scalability is + given up, and memory consumption is increased. However, the + resulting code usually performs acceptably well, possibly better + than with comparable memory checking carried out using external + tools.

+

An example of a memory corruption scenario that cannot be + reproduced with G_SLICE=always-malloc, but will + be caught by G_SLICE=debug-blocks is as follows: +

+
+            void *slist = g_slist_alloc (); /* void* gives up type-safety */
+            g_list_free (slist);            /* corruption: sizeof (GSList) != sizeof (GList) */
+          
+
+

+ The special value all can be used to turn on all options. + The special value help can be used to print all available options. +

+

G_RANDOM_VERSION.  + If this environment variable is set to '2.0', the outdated + pseudo-random number seeding and generation algorithms from + GLib 2.0 are used instead of the newer, better ones. You should + only set this variable if you have sequences of numbers that were + generated with Glib 2.0 that you need to reproduce exactly. +

+

LIBCHARSET_ALIAS_DIR.  + Allows to specify a nonstandard location for the + charset.aliases file that is used by the + character set conversion routines. The default location is the + libdir specified at compilation time. +

+

TZDIR.  + Allows to specify a nonstandard location for the timezone data files + that are used by the #GDateTime API. The default location is under + /usr/share/zoneinfo. For more information, + also look at the tzset manual page. +

+
+
+
+

Locale

+

+A number of interfaces in GLib depend on the current locale in which +an application is running. Therefore, most GLib-using applications should +call setlocale (LC_ALL, "") to set up the current +locale. +

+

+On Windows, in a C program there are several locale concepts +that not necessarily are synchronized. On one hand, there is the +system default ANSI code-page, which determines what encoding is used +for file names handled by the C library's functions and the Win32 +API. (We are talking about the "narrow" functions here that take +character pointers, not the "wide" ones.) +

+

+On the other hand, there is the C library's current locale. The +character set (code-page) used by that is not necessarily the same as +the system default ANSI code-page. Strings in this character set are +returned by functions like strftime(). +

+
+

+glib ships with a set of python macros for the gdb debugger. These includes pretty +printers for lists, hashtables and gobject types. It also has a backtrace filter +that makes backtraces with signal emissions easier to read. +

+

+To use this you need a recent enough gdb that supports python scripting. Gdb 7.0 +should be recent enough, but branches of the "archer" gdb tree as used in Fedora 11 +and Fedora 12 should work too. You then need to install glib in the same prefix as +gdb so that the python gdb autoloaded files get installed in the right place for +gdb to pick up. +

+

+General pretty printing should just happen without having to do anything special. +To get the signal emission filtered backtrace you must use the "new-backtrace" command +instead of the standard one. +

+

+There is also a new command called gforeach that can be used to apply a command +on each item in a list. E.g. you can do +

+
+gforeach i in some_list_variable: print *(GtkWidget *)l
+
+

+Which would print the contents of each widget in a list of widgets. +

+
+
+

SystemTap

+

+SystemTap is a dynamic whole-system +analysis toolkit. GLib ships with a file glib.stp which defines a +set of probe points, which you can hook into with custom SystemTap scripts. +See the files glib.stp and gobject.stp which +are in your shared SystemTap scripts directory. +

+
+
+
+

Memory statistics

+

+g_mem_profile() will output a summary g_malloc() memory usage, if memory +profiling has been enabled by calling +g_mem_set_vtable (glib_mem_profiler_table) upon startup. +

+

+If GLib has been configured with --enable-debug=yes, +then g_slice_debug_tree_statistics() can be called in a debugger to +output details about the memory usage of the slice allocator. +

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib-utilities.html b/docs/reference/glib/html/glib-utilities.html new file mode 100644 index 0000000..0159f25 --- /dev/null +++ b/docs/reference/glib/html/glib-utilities.html @@ -0,0 +1,125 @@ + + + + +GLib Utilities: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+GLib Utilities

+
+
+String Utility Functions — various string-related functions +
+
+Character Set Conversion — convert strings between different character sets +
+
+Unicode Manipulation — functions operating on Unicode characters and + UTF-8 strings +
+
+Base64 Encoding — encodes and decodes data in Base64 format +
+
+Data Checksums — computes the checksum for data +
+
+Secure HMAC Digests — computes the HMAC for data +
+
+Internationalization — gettext support macros +
+
+Date and Time Functions — calendrical calculations and miscellaneous time stuff +
+
+GTimeZone — a structure representing a time zone +
+
+GDateTime — a structure representing Date and Time +
+
+Random Numbers — pseudo-random number generator +
+
+Hook Functions — support for manipulating lists of hook functions +
+
+Miscellaneous Utility Functions — a selection of portable utility functions +
+
+Lexical Scanner — a general purpose lexical scanner +
+
+Timers — keep track of elapsed time +
+
+Spawning Processes — process launching +
+
+File Utilities — various file-related functions +
+
+URI Functions — manipulating URIs +
+
+Hostname Utilities — Internet hostname utilities +
+
+Shell-related Utilities — shell-like commandline handling +
+
+Commandline option parser — parses commandline options +
+
+Glob-style pattern matching — matches strings against patterns containing '*' + (wildcard) and '?' (joker) +
+
+Perl-compatible regular expressions — matches strings against regular expressions +
+
+Regular expression syntax — +syntax and semantics of regular expressions supported by GRegex + +
+
+Simple XML Subset Parser — parses a subset of XML +
+
+Key-value file parser — parses .ini-like config files +
+
+Bookmark file parser — parses files containing bookmarks +
+
+Testing — a test framework +
+
+UNIX-specific utilities and integration — pipes, signal handling +
+
+Windows Compatibility Functions — UNIX emulation on Windows +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/glib.devhelp2 b/docs/reference/glib/html/glib.devhelp2 new file mode 100644 index 0000000..3d9bc98 --- /dev/null +++ b/docs/reference/glib/html/glib.devhelp2 @@ -0,0 +1,3015 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/reference/glib/html/glib.html b/docs/reference/glib/html/glib.html new file mode 100644 index 0000000..e6ea681 --- /dev/null +++ b/docs/reference/glib/html/glib.html @@ -0,0 +1,71 @@ + + + + +GLib Overview: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+GLib Overview

+
+
+Compiling the GLib package — How to compile GLib itself +
+
+Cross-compiling the GLib package — +How to cross-compile GLib + +
+
+Writing GLib Applications — +General considerations when programming with GLib + +
+
+Compiling GLib Applications — +How to compile your GLib application + +
+
+Running GLib Applications — +How to run and debug your GLib application + +
+
+Changes to GLib — +Incompatible changes made between successing versions of GLib + +
+
+Mailing lists and bug reports — +Getting help with GLib + +
+
+

+ GLib is a general-purpose utility library, which provides many useful + data types, macros, type conversions, string utilities, file utilities, + a mainloop abstraction, and so on. It works on many UNIX-like platforms, + as well as Windows and OS X. GLib is released under the GNU Library + General Public License (GNU LGPL). +

+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/gtester-report.html b/docs/reference/glib/html/gtester-report.html new file mode 100644 index 0000000..23edb19 --- /dev/null +++ b/docs/reference/glib/html/gtester-report.html @@ -0,0 +1,80 @@ + + + + +gtester-report: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

gtester-report

+

gtester-report — test report formatting utility

+
+
+

Synopsis

+

gtester-report [option...] [gtester-log]

+
+
+

Description

+

gtester-report is a script which converts +the XML output generated by gtester into HTML. +

+
+
+

Options

+
++++ + + + + + + + + + + + + + + +

-h, --help

+print help and exit +

-v, --version

+print version information and exit +

-s, --subunit

+Output subunit. Needs python-subunit. +

+
+
+

See also

+

+gtester(1) +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/gtester.html b/docs/reference/glib/html/gtester.html new file mode 100644 index 0000000..7f2fc42 --- /dev/null +++ b/docs/reference/glib/html/gtester.html @@ -0,0 +1,186 @@ + + + + +gtester: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

gtester

+

gtester — test running utility

+
+
+

Synopsis

+

gtester [OPTION...] [testprogram]

+
+
+

Description

+

gtester is a utility to run unit tests that have +been written using the GLib test framework. +

+

+When called with the -o option, gtester +writes an XML report of the test results, which can be converted +into HTML using the gtester-report utility. +

+
+
+

Options

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

-h, --help

+print help and exit +

-v, --version

+print version information and exit +

--g-fatal-warnings

+make warnings fatal +

-k, --keep-going

+continue running after tests failed +

-l

+list paths of available test cases +

-m=MODE

+

+ run test cases in MODE, which can be one of: + +

+
++++ + + + + + + + + + + + + + + + + + + + + + + +

perf

+ run performance tests +

slow, thorough

+ run slow tests, or repeat non-deterministic tests more often +

quick

+ do not run slow or performance tests, or do extra repeats + of non-deterministic tests (default) +

undefined

+ run test cases that deliberately provoke checks or assertion + failures, if implemented (default) +

no-undefined

+ do not run test cases that deliberately provoke checks or + assertion failures +

+

+ +

+

-p=TESTPATH

+only run test cases matching TESTPATH +

-s=TESTPATH

+skip test cases matching TESTPATH +

--seed=SEEDSTRING

+run all test cases with random number seed SEEDSTRING +

-o=LOGFILE

+write the test log to LOGFILE +

-q, --quiet

+suppress per test binary output +

--verbose

+report success per testcase +

+
+
+

See also

+

+gtester-report(1) +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/gvariant-format-strings.html b/docs/reference/glib/html/gvariant-format-strings.html new file mode 100644 index 0000000..3ea5e52 --- /dev/null +++ b/docs/reference/glib/html/gvariant-format-strings.html @@ -0,0 +1,1338 @@ + + + + +GVariant Format Strings: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GVariant Format Strings

+

GVariant Format Strings — varargs conversion of GVariants

+
+
+

Variable Argument Conversions

+

+ This page attempts to document how to perform variable argument + conversions with GVariant. +

+

+ Conversions occur according to format strings. A format string is a two-way mapping between a single + GVariant value and one or more C values. +

+

+ A conversion from C values into a GVariant value is made using the + g_variant_new() function. A conversion from a + GVariant into C values is made using the + g_variant_get() function. +

+
+
+

Syntax

+

+ This section exhaustively describes all possibilities for GVariant format strings. There are no valid forms of + format strings other than those described here. Please note that the format string syntax is likely to expand in the + future. +

+

+ Valid format strings have one of the following forms: +

+
    +
  • any type string

  • +
  • + a type string prefixed with a '@' +

  • +
  • + '&s' '&o', '&g', '^as', + '^a&s', '^ao', '^a&o','^ay', + '^&ay', '^aay' or '^a&ay'. +

  • +
  • + any format string, prefixed with an 'm' +

  • +
  • + a sequence of zero or more format strings, concatenated and enclosed in parentheses +

  • +
  • + an opening brace, followed by two format strings, followed by a closing brace (subject to the constraint that the + first format string correspond to a type valid for use as the key type of a dictionary) +

  • +
+
+
+

Symbols

+

+ The following table describes the rough meaning of symbols that may appear inside a GVariant format string. Each + symbol is described in detail in its own section, including usage examples. +

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Symbol +

+
+

+ Meaning +

+
+

+ + b, y, n, q, i, + u, x, t, h, d + +

+
+

+ Used for building or deconstructing boolean, byte and numeric types. See + Numeric Types below. +

+
+

+ + s, o, g + +

+
+

+ Used for building or deconstructing string types. See + Strings below. +

+
+

+ v +

+
+

+ Used for building or deconstructing variant types. See + Variants below. +

+
+

+ + a + +

+
+

+ Used for building or deconstructing arrays. See + Arrays below. +

+
+

+ + m + +

+
+

+ Used for building or deconstructing maybe types. See + Maybe Types below. +

+
+

+ + () + +

+
+

+ Used for building or deconstructing tuples. See + Tuples below. +

+
+

+ + {} + +

+
+

+ Used for building or deconstructing dictionary entries. See + Dictionaries below. +

+
+

+ + @ + +

+
+

+ Used as a prefix for a GVariant type string (not a prefix for a format string, so @as is + a valid format string but @^as is not). Denotes that a pointer to a + GVariant should be used in place of the normal C type or types. For + g_variant_new() this means that you must pass a + non-NULL (GVariant + *); if it is a floating reference, ownership will be taken, as + if by using g_variant_ref_sink(). + For g_variant_get() this means that you + must pass a pointer to a (GVariant *) for the value to be returned + by reference or NULL to ignore the value. See + GVariant * below. +

+
+

+ + *, ?, r + +

+
+

+ Exactly equivalent to @*, @? and @r. Provided only for + completeness so that all GVariant type strings can be used also as format strings. See GVariant * below. +

+
+

+ & +

+
+

+ Used as a prefix for a GVariant type string (not a prefix for a format string, so &s is + a valid format string but &@s is not). + Denotes that a C pointer to serialised data + should be used in place of the normal C type. See + Pointers below. +

+
+

+ ^ +

+
+

+ Used as a prefix on some specific types of format strings. See + Convenience Conversions below. +

+
+
+

Numeric Types

+

+ + Characters: b, y, n, q, + i, u, x, t, h, + d + +

+

+ Variable argument conversions from numeric types work in the most obvious way possible. Upon encountering one of + these characters, g_variant_new() takes the equivalent C + type as an argument. g_variant_get() takes a pointer to + the equivalent C type (or NULL to ignore the value). +

+

+ The equivalent C types are as follows: +

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Character +

+
+

+ Equivalent C type +

+
+

+ + b + +

+
+

+ gboolean +

+
+

+ + y + +

+
+

+ guchar +

+
+

+ + n + +

+
+

+ gint16 +

+
+

+ + q + +

+
+

+ guint16 +

+
+

+ + i + +

+
+

+ gint32 +

+
+

+ + u + +

+
+

+ guint32 +

+
+

+ + x + +

+
+

+ gint64 +

+
+

+ + t + +

+
+

+ guint64 +

+
+

+ + h + +

+
+

+ gint32 +

+
+

+ + d + +

+
+

+ gdouble +

+
+

+ Note that in C, small integer types in variable argument lists are promoted up to int or unsigned int as appropriate, and + read back accordingly. int is 32 bits on every platform on which GLib is + currently supported. This means that you can use C expressions of type int + with g_variant_new() and format characters + 'b', 'y', 'n', 'q', + 'i', 'u' and 'h'. Specifically, you can use integer + literals with these characters. +

+

+ When using the 'x' and 't' characters, you must ensure that the value that you + provide is 64 bit. This means that you should use a cast or make use of the + G_GINT64_CONSTANT or + G_GUINT64_CONSTANT macros. +

+

+ No type promotion occurs when using g_variant_get() since + it operates with pointers. The pointers must always point to a memory region of exactly the correct size. +

+
+

Examples

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
GVariant *value1, *value2, *value3, *value4;
+
+value1 = g_variant_new ("y", 200);
+value2 = g_variant_new ("b", TRUE);
+value3 = g_variant_new ("d", 37.5):
+value4 = g_variant_new ("x", G_GINT64_CONSTANT (998877665544332211));
+
+{
+  gdouble floating;
+  gboolean truth;
+  gint64 bignum;
+
+
+  g_variant_get (value1, "y", NULL);      /* ignore the value. */
+  g_variant_get (value2, "b", &truth);
+  g_variant_get (value3, "d", &floating);
+  g_variant_get (value4, "x", &bignum);
+}
+
+ +
+
+
+
+

Strings

+

+ + Characters: s, o, g + +

+

+ String conversions occur to and from standard nul-terminated C strings. Upon encountering an + 's', 'o' or 'g' in a format string, + g_variant_new() takes a (const + gchar *) and makes a copy of it. + NULL is not a valid string; use + maybe types to encode that. If the 'o' or + 'g' characters are used, care must be taken to ensure that the passed string is a valid DBus + object path or DBus type signature, respectively. +

+

+ Upon encounting 's', 'o' or 'g', g_variant_get() takes a pointer to a + (gchar *) (ie: (gchar **)) and + sets it to a newly-allocated copy of the string. It is appropriate to free this copy using + g_free(). + NULL may also be passed to indicate that the value of the + string should be ignored (in which case no copy is made). +

+
+

Examples

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
GVariant *value1, *value2, *value3;
+
+value1 = g_variant_new ("s", "hello world!");
+value2 = g_variant_new ("o", "/must/be/a/valid/path");
+value3 = g_variant_new ("g", "iias");
+
+#if 0
+  g_variant_new ("s", NULL);      /* not valid: NULL is not a string. */
+#endif
+
+{
+  gchar *result;
+
+  g_variant_get (value1, "s", &result);
+  g_print ("It was '%s'\n", result);
+  g_free (result);
+}
+
+ +
+
+
+
+

Variants

+

+ + Characters: v + +

+

+ Upon encountering a 'v', + g_variant_new() takes a (GVariant *). The value of the + GVariant is used as the contents of the variant value. +

+

+ Upon encountering a 'v', g_variant_get() takes a pointer to a + (GVariant *) (ie: (GVariant **) + ). It is set to a new reference to a GVariant instance + containing the contents of the variant value. It is appropriate to free this reference using + g_variant_unref(). + NULL may also be passed to indicate that the value should be + ignored (in which case no new reference is created). +

+
+

Examples

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
GVariant *x, *y;
+
+/* the following two lines are equivalent: */
+x = g_variant_new ("v", y);
+x = g_variant_new_variant (y);
+
+/* as are these: */
+g_variant_get (x, "v", &y);
+y = g_variant_get_variant (x);
+
+ +
+
+
+
+

Arrays

+

+ + Characters: a + +

+

+ Upon encountering an 'a' character followed by a type string, + g_variant_new() will take a + (GVariantBuilder *) that has been created as an array builder + for an array of the type given in the type string. The builder will have + g_variant_builder_end() called on it and the + result will be used as the value. As a special exception, if the given type string is a definite type, then + NULL may be given to mean an empty array of that type. +

+

+ Upon encountering an 'a' character followed by a type string, + g_variant_get() will take a pointer to a + (GVariantIter *) (ie: + (GVariantIter **)). + A new heap-allocated iterator is created and returned, initialised for iterating over the elements of the array. + This iterator should be freed when you are done with it, using + g_variant_iter_free(). + NULL may also be given to indicate that the value of the array + should be ignored. +

+
+

Examples

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
GVariantBuilder *builder;
+GVariant *value;
+
+builder = g_variant_builder_new (G_VARIANT_TYPE ("as"));
+g_variant_builder_add (builder, "s", "when");
+g_variant_builder_add (builder, "s", "in");
+g_variant_builder_add (builder, "s", "the");
+g_variant_builder_add (builder, "s", "course");
+value = g_variant_new ("as", builder);
+g_variant_builder_unref (builder);
+
+{
+  GVariantIter *iter;
+  gchar *str;
+
+  g_variant_get (value, "as", &iter);
+  while (g_variant_iter_loop (iter, "s", &str))
+    g_print ("%s\n", str);
+  g_variant_iter_free (iter);
+}
+
+g_variant_unref (value);
+
+ +
+
+
+
+

Maybe Types

+

+ + Characters: m + +

+

+ Maybe types are handled in two separate ways depending on the format string that follows the + 'm'. The method that is used currently depends entirely on the character immediately following the + 'm'. +

+

+ The first way is used with format strings starting with 'a', 's', + 'o', 'g', 'v', '@', + '*', '?', 'r', '&', or + '^'. In all of these cases, for non-maybe types, + g_variant_new() takes a pointer to a + non-NULL value and + g_variant_get() returns (by reference) a + non-NULL pointer. When any of these format strings are + prefixed with an 'm', the type of arguments that are collected does not change in any way, but + NULL becomes a permissable value, to indicate the Nothing case. +

+

+ Note that the "special exception" introduced in the array section for constructing empty arrays is ignored + here. Using a NULL pointer with the format string 'mas' constructs + the Nothing value -- not an empty array. +

+

+ The second way is used with all other format strings. For + g_variant_new() an additional + gboolean argument is collected and for + g_variant_get() an additional + (gboolean *). Following this argument, the arguments that are normally + collected for the equivalent non-maybe type will be collected. +

+

+ If FALSE is given to + g_variant_new() then the Nothing value is constructed and + the collected arguments are ignored. Otherwise (if TRUE was + given), the arguments are used in the normal way to create the Just value. +

+

+ If NULL is given to + g_variant_get() then the value is ignored. If a + non-NULL pointer is given then it is used to return by reference + whether the value was Just. In the case that the value was Just, the + gboolean will be set to + TRUE and the value will be stored in the arguments in the usual + way. In the case that the value was Nothing, the gboolean will be set to + FALSE and the arguments will be collected in the normal way + but have their values set to binary zero. +

+
+

Examples

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
GVariant *value1, *value2, *value3, *value4, *value5, *value6;
+value1 = g_variant_new ("ms", "Hello world");
+value2 = g_variant_new ("ms", NULL);
+value3 = g_variant_new ("(m(ii)s)", TRUE, 123, 456, "Done");
+value4 = g_variant_new ("(m(ii)s)", FALSE, -1, -1, "Done");          /* both '-1' are ignored. */
+value5 = g_variant_new ("(m@(ii)s)", NULL, "Done");
+
+{
+  GVariant *contents;
+  const gchar *cstr;
+  gboolean just;
+  gint32 x, y;
+  gchar *str;
+
+  g_variant_get (value1, "ms", &str);
+  if (str != NULL)
+    g_print ("str: %s\n", str);
+  else
+    g_print ("it was null\n");
+  g_free (str);
+
+
+  g_variant_get (value2, "m&s", &cstr);
+  if (cstr != NULL)
+    g_print ("str: %s\n", cstr);
+  else
+    g_print ("it was null\n");
+  /* don't free 'cstr' */
+
+
+  /* NULL passed for the gboolean *, but two 'gint32 *' still collected */
+  g_variant_get (value3, "(m(ii)s)", NULL, NULL, NULL, &str);
+  g_print ("string is %s\n", str);
+  g_free (str);
+
+  /* note: &s used, so g_free() not needed */
+  g_variant_get (value4, "(m(ii)&s)", &just, &x, &y, &cstr);
+  if (just)
+    g_print ("it was (%d, %d)\n", x, y);
+  else
+    g_print ("it was null\n");
+  g_print ("string is %s\n", cstr);
+  /* don't free 'cstr' */
+
+
+  g_variant_get (value5, "(m*s)", &contents, NULL); /* ignore the string. */
+  if (contents != NULL)
+    {
+      g_variant_get (contents, "(ii)", &x, &y);
+      g_print ("it was (%d, %d)\n", x, y);
+      g_variant_unref (contents);
+    }
+  else
+    g_print ("it was null\n");
+}
+
+ +
+
+
+
+

Tuples

+

+ + Characters: () + +

+

+ Tuples are handled by handling each item in the tuple, in sequence. Each item is handled in the usual way. +

+
+

Examples

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
GVariant *value1, *value2;
+
+value1 = g_variant_new ("(s(ii))", "Hello", 55, 77);
+value2 = g_variant_new ("()");
+
+{
+  gchar *string;
+  gint x, y;
+
+  g_variant_get (value1, "(s(ii))", &string, &x, &y);
+  g_print ("%s, %d, %d\n", string, x, y);
+  g_free (string);
+
+  g_variant_get (value2, "()");   /* do nothing... */
+}
+
+ +
+
+
+
+

Dictionaries

+

+ + Characters: {} + +

+

+ Dictionary entries are handled by handling first the key, then the value. Each is handled in the usual way. +

+
+

Examples

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
GVariantBuilder *b;
+GVariant *dict;
+
+b = g_variant_builder_new (G_VARIANT_TYPE ("a{sv}"));
+g_variant_builder_add (b, "{sv}", "name", g_variant_new_string ("foo"));
+g_variant_builder_add (b, "{sv}", "timeout", g_variant_new_int32 (10));
+dict = g_variant_builder_end (b);
+
+ +
+
+
+
+

GVariant *

+

+ + Characters: @, *, ?, r + + +

+

+ Upon encountering a '@' in front of a type string, + g_variant_new() takes a + non-NULL pointer to a + GVariant and uses its value directly instead of collecting arguments to + create the value. The provided GVariant must have a type that matches the + type string following the '@'. '*' is + the same as '@*' (ie: take a GVariant of any type). + '?' is the same as '@?' (ie: take a + GVariant of any basic type). 'r' is the same as + '@r' (ie: take a GVariant of any tuple type). +

+

+ Upon encountering a '@' in front of a type string, + g_variant_get() + takes a pointer to a (GVariant *) (ie: a + (GVariant **)) and sets it to a new reference to a + GVariant containing the value (instead of deconstructing the value into + C types in the usual way). NULL can be given to ignore the + value. '*', '?' and 'r' are handled in a way analogous to + what is stated above. +

+

+ You can always use '*' as an alternative to '?', 'r' or any + use of '@'. Using the other characters where possible is recommended, however, due to the + improvements in type safety and code self-documentation. +

+
+

Examples

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
GVariant *value1, *value2;
+
+value1 = g_variant_new ("(i@ii)", 44, g_variant_new_int32 (55), 66);
+
+/* note: consumes floating reference count on 'value1' */
+value2 = g_variant_new ("(@(iii)*)", value1, g_variant_new_string ("foo"));
+
+{
+  const gchar *string;
+  GVariant *tmp;
+  gsize length;
+  gint x, y, z;
+
+  g_variant_get (value2, "((iii)*)", &x, &y, &z, &tmp);
+  string = g_variant_get_string (tmp, &length);
+  g_print ("it is %d %d %d %s (length=%d)\n", x, y, z, string, (int) length);
+  g_variant_unref (tmp);
+
+  /* quick way to skip all the values in a tuple */
+  g_variant_get (value2, "(rs)", NULL, &string); /* or "(@(iii)s)" */
+  g_print ("i only got the string: %s\n", string);
+  g_free (string);
+}
+
+ +
+
+
+
+

Pointers

+

+ + Characters: & + +

+

+ The '&' character is used to indicate that serialised data should be directly exchanged via a + pointer. +

+

+ Currently, the only use for this character is when it is applied to a string (ie: '&s', + '&o' or '&g'). For + g_variant_new() this has absolutely no effect. The string + is collected and duplicated normally. For g_variant_get() + it means that instead of creating a newly allocated copy of the string, a pointer to the serialised data is + returned. This pointer should not be freed. Validity checks are performed to ensure that the string data will + always be properly nul-terminated. +

+
+

Examples

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
{
+  const gchar *str;
+  GVariant *value;
+
+  value = g_variant_new ("&s", "hello world");
+  str = g_variant_get (value, "&s", &str);
+  g_print ("string is: %s\n", str);
+  /* no need to free str */
+}
+
+ +
+
+
+
+

Convenience Conversions

+

+ + Characters: ^ + +

+

+ The '^' character currently supports conversion to and from bytestrings or to and from arrays + of strings or bytestrings. It has a number of forms. +

+

+ In all forms, when used with g_variant_new() one + pointer value is collected from the variable arguments and passed to a function (as given in the table below). + The result of that function is used as the value for this position. When used with + g_variant_get() one pointer value is produced by using + the function (given in the table) and returned by reference. +

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Conversion +

+
+

+ + Used with g_variant_new() + +

+
+

+ + Used with g_variant_get() + +

+
+

+ + ^as + +

+
+

+ equivalent to g_variant_new_strv() +

+
+

+ equivalent to g_variant_dup_strv() +

+
+

+ + ^a&s + +

+
+

+ equivalent to g_variant_get_strv() +

+
+

+ + ^ao + +

+
+

+ equivalent to g_variant_new_objv() +

+
+

+ equivalent to g_variant_dup_objv() +

+
+

+ + ^a&o + +

+
+

+ equivalent to g_variant_get_objv() +

+
+

+ + ^ay + +

+
+

+ equivalent to g_variant_new_bytestring() +

+
+

+ equivalent to g_variant_dup_bytestring() +

+
+

+ + ^&ay + +

+
+

+ equivalent to g_variant_get_bytestring() +

+
+

+ + ^aay + +

+
+

+ equivalent to g_variant_new_bytestring_array() +

+
+

+ equivalent to g_variant_dup_bytestring_array() +

+
+

+ + ^a&ay + +

+
+

+ equivalent to g_variant_get_bytestring_array() +

+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/gvariant-text.html b/docs/reference/glib/html/gvariant-text.html new file mode 100644 index 0000000..b172979 --- /dev/null +++ b/docs/reference/glib/html/gvariant-text.html @@ -0,0 +1,666 @@ + + + + +GVariant Text Format: GLib Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GVariant Text Format

+

GVariant Text Format — textual representation of GVariants

+
+
+

GVariant Text Format

+

+ This page attempts to document the GVariant text format as produced by + g_variant_print() and parsed by the + g_variant_parse() family of functions. In most + cases the style closely resembles the formatting of literals in Python but there are some additions and + exceptions. +

+

+ The functions that deal with GVariant text format absolutely always deal in utf-8. Conceptually, GVariant + text format is a string of Unicode characters -- not bytes. Non-ASCII but otherwise printable Unicode + characters are not treated any differently from normal ASCII characters. +

+

+ The parser makes two passes. The purpose of the first pass is to determine the type of the value being + parsed. The second pass does the actual parsing. Based on the fact that all elements in an array have to + have the same type, GVariant is able to make some deductions that would not otherwise be possible. As an + example: + +

+
+ + + + + + + +
1
[[1, 2, 3], [4, 5, 6]]
+
+ +

+ + is parsed as an array of arrays of integers (type 'aai'), but + +

+
+ + + + + + + +
1
[[1, 2, 3], [4, 5, 6.0]]
+
+ +

+ + is parsed as a array of arrays of doubles (type 'aad'). +

+

+ As another example, GVariant is able to determine that + +

+
+ + + + + + + +
1
["hello", nothing]
+
+ +

+ + is an array of maybe strings (type 'ams'). +

+

+ What the parser accepts as valid input is dependent on context. The API permits for out-of-band type + information to be supplied to the parser (which will change its behaviour). This can be seen in the + GSettings and GDBus command line utilities where the type information is available from the schema or the + remote introspection information. The additional information can cause parses to succeed when they would not + otherwise have been able to (by resolving ambiguous type information) or can cause them to fail (due to + conflicting type information). Unless stated otherwise, the examples given in this section assume that no + out-of-band type data has been given to the parser. +

+
+
+

Syntax Summary

+

+ The following table describes the rough meaning of symbols that may appear inside GVariant text format. + Each symbol is described in detail in its own section, including usage examples. +

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+ Symbol +

+
+

+ Meaning +

+
+

+ true, + false +

+
+

+ Booleans. +

+
+

+ "", + '' +

+
+

+ String literal. See Strings below. +

+
+

+ numbers +

+
+

+ See Numbers below. +

+
+

+ () +

+
+

+ Tuples. +

+
+

+ [] +

+
+

+ Arrays. +

+
+

+ {} +

+
+

+ Dictionaries and Dictionary Entries. +

+
+

+ <> +

+
+

+ Variants. +

+
+

+ just, + nothing +

+
+

+ Maybe Types. +

+
+

+ @ +

+
+

+ Type Annotations. +

+
+

+ type keywords +

+
+

+ boolean, + byte, + int16, + uint16, + int32, + uint32, + handle, + int64, + uint64, + double, + string, + objectpath, + signature +

+

+ See Type Annotations below. +

+
+

+ b"", + b'' +

+
+

+ Bytestrings. +

+
+

+ % +

+
+

+ Positional Parameters. +

+
+
+

Booleans

+

+ The strings true and false are parsed as booleans. This is the only + way to specify a boolean value. +

+
+
+
+

Strings

+

+ Strings literals must be quoted using "" or ''. The two are + completely equivalent (except for the fact that each one is unable to contain itself unescaped). +

+

+ Strings are Unicode strings with no particular encoding. For example, to specify the character + é, you just write 'é'. You could also give the Unicode codepoint of + that character (U+E9) as the escape sequence '\u00e9'. Since the strings are pure + Unicode, you should not attempt to encode the utf-8 byte sequence corresponding to the string using escapes; + it won't work and you'll end up with the individual characters corresponding to each byte. +

+

+ Unicode escapes of the form \uxxxx and \Uxxxxxxxx are supported, in + hexidecimal. The usual control sequence escapes \a, \b, + \f, \n, \r, \t and + \v are supported. Additionally, a \ before a newline character causes + the newline to be ignored. Finally, any other character following \ is copied literally + (for example, \" or \\) but for forwards compatibility with future + additions you should only use this feature when necessary for escaping backslashes or quotes. +

+

+ The usual octal and hexidecimal escapes \0nnn and \xnn are not + supported here. Those escapes are used to encode byte values and GVariant strings are Unicode. +

+

+ Single-character strings are not interpreted as bytes. Bytes must be specified by their numerical value. +

+
+
+
+

Numbers

+

+ Numbers are given by default as decimal values. Octal and hex values can be given in the usual way (by + prefixing with 0 or 0x). Note that GVariant considers bytes to be + unsigned integers and will print them as a two digit hexidecimal number by default. +

+

+ Floating point numbers can also be given in the usual ways, including scientific and hexidecimal notations. +

+

+ For lack of additional information, integers will be parsed as int32 values by default. If the number has a + point or an 'e' in it, then it will be parsed as a double precision floating point number by default. If + type information is available (either explicitly or inferred) then that type will be used instead. +

+

+ Some examples: +

+

+ 5 parses as the int32 value five. +

+

+ 37.5 parses as a floating point value. +

+

+ 3.75e1 parses the same as the value above. +

+

+ uint64 7 parses seven as a uint64. + See Type Annotations. +

+
+
+
+

Tuples

+

+ Tuples are formed using the same syntax as Python. Here are some examples: +

+

+ () parses as the empty tuple. +

+

+ (5,) is a tuple containing a single value. +

+

+ ("hello", 42) is a pair. Note that values of different types are permitted. +

+
+
+
+

Arrays

+

+ Arrays are formed using the same syntax as Python uses for lists (which is arguably the term that GVariant + should have used). Note that, unlike Python lists, GVariant arrays are statically typed. This has two + implications. +

+

+ First, all items in the array must have the same type. Second, the type of the array must be known, even in + the case that it is empty. This means that (unless there is some other way to infer it) type information + will need to be given explicitly for empty arrays. +

+

+ The parser is able to infer some types based on the fact that all items in an array must have the same type. + See the examples below: +

+

+ [1] parses (without additional type information) as a one-item array of signed integers. +

+

+ [1, 2, 3] parses (similarly) as a three-item array. +

+

+ [1, 2, 3.0] parses as an array of doubles. This is the most simple case of the type + inferencing in action. +

+

+ [(1, 2), (3, 4.0)] causes the 2 to also be parsed as a double (but the 1 and 4 are still + integers). +

+

+ ["", nothing] parses as an array of maybe strings. The presence of + "nothing" clearly implies that the array elements are nullable. +

+

+ [[], [""]] will parse properly because the type of the first (empty) array can be + inferred to be equal to the type of the second array (both are arrays of strings). +

+

+ [b'hello', []] looks odd but will parse properly. + See Bytestrings +

+

+ And some examples of errors: +

+

+ ["hello", 42] fails to parse due to conflicting types. +

+

+ [] will fail to parse without additional type information. +

+
+
+
+

Dictionaries and Dictionary Entries

+

+ Dictionaries and dictionary entries are both specified using the {} characters. +

+

+ The dictionary syntax is more commonly used. This is what the printer elects to use in the normal case of + dictionary entries appearing in an array (aka "a dictionary"). The separate syntax for dictionary entries + is typically only used for when the entries appear on their own, outside of an array (which is valid but + unusual). Of course, you are free to use the dictionary entry syntax within arrays but there is no good + reason to do so (and the printer itself will never do so). Note that, as with arrays, the type of empty + dictionaries must be established (either explicitly or through inference). +

+

+ The dictionary syntax is the same as Python's syntax for dictionaries. Some examples: +

+

+ @a{sv} {} parses as the empty dictionary of everyone's favourite type. +

+

+ @a{sv} [] is the same as above (owing to the fact that dictionaries are really arrays). +

+

+ {1: "one", 2: "two", 3: "three"} parses as a dictionary mapping integers to strings. +

+

+ The dictionary entry syntax looks just like a pair (2-tuple) that uses braces instead of parens. The + presence of a comma immediately following the key differentiates it from the dictionary syntax (which + features a colon after the first key). Some examples: +

+

+ {1, "one"} is a free-standing dictionary entry that can be parsed on its own or as part + of another container value. +

+

+ [{1, "one"}, {2, "two"}, {3, "three"}] is exactly equivalent to the dictionary example + given above. +

+
+
+
+

Variants

+

+ Variants are denoted using angle brackets (aka "XML brackets"), <>. They may not + be omitted. +

+

+ Using <> effectively disrupts the type inferencing that occurs between array + elements. This can have positive and negative effects. +

+

+ [<"hello">, <42>] will parse whereas ["hello", 42] would + not. +

+

+ [<['']>, <[]>] will fail to parse even though [[''], []] + parses successfully. You would need to specify [<['']>, <@as []>]. +

+

+ {"title": <"frobit">, "enabled": <true>, width: <800>} is an example of + perhaps the most pervasive use of both dictionaries and variants. +

+
+
+
+

Maybe Types

+

+ The syntax for specifying maybe types is inspired by Haskell. +

+

+ The null case is specified using the keyword nothing and the non-null case is explicitly + specified using the keyword just. GVariant allows just to be omitted + in every case that it is able to unambiguously determine the intention of the writer. There are two cases + where it must be specified: +

+
    +
  • when using nested maybes, in order to specify the just nothing case

  • +
  • + to establish the nullability of the type of a value without explicitly specifying its full type +

  • +
+

+ Some examples: +

+

+ just 'hello' parses as a non-null nullable string. +

+

+ @ms 'hello' is the same (demonstrating how just can be dropped if the type is already + known). +

+

+ nothing will not parse wtihout extra type information. +

+

+ @ms nothing parses as a null nullable string. +

+

+ [just 3, nothing] is an array of nullable integers +

+

+ [3, nothing] is the same as the above (demonstrating another place were + just can be dropped). +

+

+ [3, just nothing] parses as an array of maybe maybe integers (type + 'ammi'). +

+
+
+
+

Type Annotations

+

+ Type annotations allow additional type information to be given to the parser. Depending on the context, + this type information can change the output of the parser, cause an error when parsing would otherwise have + succeeded or resolve an error when parsing would have otherwise failed. +

+

+ Type annotations come in two forms: type codes and type keywords. +

+

+ Type keywords can be seen as more verbose (and more legible) versions of a common subset of the type codes. + The type keywords boolean, byte, int16, + uint16, int32, uint32, handle, + int64, uint64, double, string, + objectpath and literal signature are each exactly equivalent to their + corresponding type code. +

+

+ Type codes are an @ ("at" sign) followed by a definite GVariant type string. Some + examples: +

+

+ uint32 5 causes the number to be parsed unsigned instead of signed (the default). +

+

+ @u 5 is the same +

+

+ objectpath "/org/gnome/xyz" creates an object path instead of a normal string +

+

+ @au [] specifies the type of the empty array (which would not parse otherwise) +

+

+ @ms "" indicates that a string value is meant to have a maybe type +

+
+
+
+

Bytestrings

+

+ The bytestring syntax is a piece of syntactic sugar meant to complement the bytestring APIs in GVariant. It + constructs arrays of non-nul bytes (type 'ay') with a nul terminator at the end. +

+

+ Bytestrings are specified with either b"" or b''. As with strings, + there is no fundamental difference between the two different types of quotes. +

+

+ Bytestrings support the full range of escapes that you would expect (ie: those supported by + g_strcompress(). This includes the normal control + sequence escapes (as mentioned in the section on strings) as well as octal and hexidecimal escapes of the + forms \0nnn and \xnn. +

+

+ b'abc' is equivalent to [byte 0x97, 0x98, 0x99, 0]. +

+

+ When formatting arrays of bytes, the printer will choose to display the array as a bytestring if it contains + a nul character at the end and no other nul bytes within. Otherwise, it is formatted as a normal array. +

+
+
+
+

Positional Parameters

+

+ Positional parameters are not a part of the normal GVariant text format, but they are mentioned here because + they can be used with g_variant_new_parsed(). +

+

+ A positional parameter is indicated with a % followed by any valid + GVariant Format String. Variable arguments are collected as + specified by the format string and the resulting value is inserted at the current position. +

+

+ This feature is best explained by example: +

+
+ + + + + + + +
1
+2
+3
+4
+5
char *t = "xyz";
+gboolean en = false;
+GVariant *value;
+
+value = g_variant_new_parsed ("{'title': <%s>, 'enabled': <%b>}", t, en);
+
+ +

+ This constructs a dictionary mapping strings to variants (type 'a{sv}') with two items in + it. The key names are parsed from the string and the values for those keys are taken as variable arguments + parameters. +

+

+ The arguments are always collected in the order that they appear in the string to be parsed. Format strings + that collect multiple arguments are permitted, so you may require more varargs parameters than the number of + % signs that appear. You can also give format strings that collect no arguments, but + there's no good reason to do so. +

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/home.png b/docs/reference/glib/html/home.png new file mode 100644 index 0000000000000000000000000000000000000000..9346b336a784463192c7daab5133a3673dd69845 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefRMbARQqaxysz9Q}BI-m)~Y zggoA|1V*z2{cQ=d;!=?fvu4~`n82RKrk1UubNXTJj1GP|o-=>$A29f{JgJ9K`^t{Q z-oWs>M&_hvT&MjX@T4-&sBW+1^4oB5G4r2q!qGktZ!n*!)hjrjd0_4L6;4%u<}orJ u%Vo~x?#i!!ww+1OGuHe}T=cKQUzn^_t)8|WlnDbmjKR~@&t;ucLK6T + + + +GLib Reference Manual: GLib Reference Manual + + + + + + + +
+
+
+
+

+ for GLib 2.48.0 + + The latest version of this documentation can be found on-line at + https://developer.gnome.org/glib/unstable/. +

+
+
+
+
+
GLib Overview
+
+
+Compiling the GLib package — How to compile GLib itself +
+
+Cross-compiling the GLib package — +How to cross-compile GLib + +
+
+Writing GLib Applications — +General considerations when programming with GLib + +
+
+Compiling GLib Applications — +How to compile your GLib application + +
+
+Running GLib Applications — +How to run and debug your GLib application + +
+
+Changes to GLib — +Incompatible changes made between successing versions of GLib + +
+
+Mailing lists and bug reports — +Getting help with GLib + +
+
+
GLib Fundamentals
+
+
+Version Information — variables and functions to check the GLib version +
+
+Basic Types — standard GLib types, defined for ease-of-use + and portability +
+
+Standard Macros — commonly-used macros +
+
+Type Conversion Macros — portably storing integers in pointer variables +
+
+Byte Order Macros — a portable way to convert between different byte orders +
+
+Bounds-checking integer arithmetic — a set of helpers for performing checked integer arithmetic +
+
+Numerical Definitions — mathematical constants, and floating point decomposition +
+
+Miscellaneous Macros — specialized macros which are not used often +
+
+Atomic Operations — basic atomic integer and pointer operations +
+
+
GLib Core Application Support
+
+
+The Main Event Loop — manages all available sources of events +
+
+Threads — portable support for threads, mutexes, locks, + conditions and thread private data +
+
+Thread Pools — pools of threads to execute work concurrently +
+
+Asynchronous Queues — asynchronous communication between threads +
+
+Dynamic Loading of Modules — portable method for dynamically loading 'plug-ins' +
+
+Memory Allocation — general memory-handling +
+
+Memory Slices — efficient way to allocate groups of equal-sized + chunks of memory +
+
+IO Channels — portable support for using files, pipes and sockets +
+
+Error Reporting — a system for reporting errors +
+
+Message Output and Debugging Functions — functions to output messages and help debug applications +
+
+Message Logging — versatile support for logging messages + with different levels of importance +
+
+
GLib Utilities
+
+
+String Utility Functions — various string-related functions +
+
+Character Set Conversion — convert strings between different character sets +
+
+Unicode Manipulation — functions operating on Unicode characters and + UTF-8 strings +
+
+Base64 Encoding — encodes and decodes data in Base64 format +
+
+Data Checksums — computes the checksum for data +
+
+Secure HMAC Digests — computes the HMAC for data +
+
+Internationalization — gettext support macros +
+
+Date and Time Functions — calendrical calculations and miscellaneous time stuff +
+
+GTimeZone — a structure representing a time zone +
+
+GDateTime — a structure representing Date and Time +
+
+Random Numbers — pseudo-random number generator +
+
+Hook Functions — support for manipulating lists of hook functions +
+
+Miscellaneous Utility Functions — a selection of portable utility functions +
+
+Lexical Scanner — a general purpose lexical scanner +
+
+Timers — keep track of elapsed time +
+
+Spawning Processes — process launching +
+
+File Utilities — various file-related functions +
+
+URI Functions — manipulating URIs +
+
+Hostname Utilities — Internet hostname utilities +
+
+Shell-related Utilities — shell-like commandline handling +
+
+Commandline option parser — parses commandline options +
+
+Glob-style pattern matching — matches strings against patterns containing '*' + (wildcard) and '?' (joker) +
+
+Perl-compatible regular expressions — matches strings against regular expressions +
+
+Regular expression syntax — +syntax and semantics of regular expressions supported by GRegex + +
+
+Simple XML Subset Parser — parses a subset of XML +
+
+Key-value file parser — parses .ini-like config files +
+
+Bookmark file parser — parses files containing bookmarks +
+
+Testing — a test framework +
+
+UNIX-specific utilities and integration — pipes, signal handling +
+
+Windows Compatibility Functions — UNIX emulation on Windows +
+
+
GLib Data Types
+
+
+Doubly-Linked Lists — linked lists that can be iterated over in both directions +
+
+Singly-Linked Lists — linked lists that can be iterated in one direction +
+
+Double-ended Queues — double-ended queue data structure +
+
+Sequences — scalable lists +
+
+Trash Stacks — maintain a stack of unused allocated memory chunks +
+
+Hash Tables — associations between keys and values so that + given a key the value can be found quickly +
+
+Strings — text buffers which grow automatically + as text is added +
+
+String Chunks — efficient storage of groups of strings +
+
+Arrays — arrays of arbitrary elements which grow + automatically as elements are added +
+
+Pointer Arrays — arrays of pointers to any type of data, which + grow automatically as new elements are added +
+
+Byte Arrays — arrays of bytes +
+
+Balanced Binary Trees — a sorted collection of key/value pairs optimized + for searching and traversing in order +
+
+N-ary Trees — trees of data with any number of branches +
+
+Quarks — a 2-way association between a string and a + unique integer identifier +
+
+Keyed Data Lists — lists of data elements which are accessible by a + string or GQuark identifier +
+
+Datasets — associate groups of data elements with + particular memory locations +
+
+GVariantType — introduction to the GVariant type system +
+
+GVariant — strongly typed value datatype +
+
+GVariant Format Strings — varargs conversion of GVariants +
+
+GVariant Text Format — textual representation of GVariants +
+
+
Deprecated APIs
+
+
+Deprecated thread API — old thread APIs (for reference only) +
+
+Caches — caches allow sharing of complex data structures + to save resources +
+
+Relations and Tuples — tables of data which can be indexed on any + number of fields +
+
+Automatic String Completion — support for automatic completion using a group + of target strings +
+
+
GLib Tools
+
+
+glib-gettextize — gettext internationalization utility +
+
+gtester — test running utility +
+
+gtester-report — test report formatting utility +
+
+
Index
+
Index of deprecated symbols
+
Index of new symbols in 2.2
+
Index of new symbols in 2.4
+
Index of new symbols in 2.6
+
Index of new symbols in 2.8
+
Index of new symbols in 2.10
+
Index of new symbols in 2.12
+
Index of new symbols in 2.14
+
Index of new symbols in 2.16
+
Index of new symbols in 2.18
+
Index of new symbols in 2.20
+
Index of new symbols in 2.22
+
Index of new symbols in 2.24
+
Index of new symbols in 2.26
+
Index of new symbols in 2.28
+
Index of new symbols in 2.30
+
Index of new symbols in 2.32
+
Index of new symbols in 2.34
+
Index of new symbols in 2.36
+
Index of new symbols in 2.38
+
Index of new symbols in 2.40
+
Index of new symbols in 2.42
+
Index of new symbols in 2.44
+
Index of new symbols in 2.46
+
Index of new symbols in 2.48
+
Annotation Glossary
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/index.sgml b/docs/reference/glib/html/index.sgml new file mode 100644 index 0000000..d4686e5 --- /dev/null +++ b/docs/reference/glib/html/index.sgml @@ -0,0 +1,3447 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/reference/glib/html/left-insensitive.png b/docs/reference/glib/html/left-insensitive.png new file mode 100644 index 0000000000000000000000000000000000000000..3269393a7f72af744a772c437bd7b3976c23709d GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefH0HbvDJm`3=E7Co-U3d7N^fnTIWJ3j{^~q!iyia4kV=mdU|Jhfgdm;SLIpiYJ7wv^kjFiECCc&8T30!RG0~&BG=X zlu#U4@Z`))V`EG9e^NqDr#{!5k|)wT* zYTNt0`@q%TAD$){%#eQ?;$^ly8}yZCU%T~u0XM^%t?f#e znB*EuLv2rP%K3BMvFO}YmnR}KSgH;`EHL$)^!tH~iBxZ#h^zJi*#P5Xb6B50U@nx2 mU;T=yfcwnSOsS9SKd{M#MlNkCuvG>I8-u5-pUXO@geCx5`k@p6 literal 0 HcmV?d00001 diff --git a/docs/reference/glib/html/left.png b/docs/reference/glib/html/left.png new file mode 100644 index 0000000000000000000000000000000000000000..2abde032b0c98b756b12d380da4318205cd78470 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefRMaSLay~*pwMJb7sn8b(^oI8=R24v(*CjE{-BFv z0BhvLm?o9(UC{-Ci?lD?Ve-7-xypA!PTC(0^;>UheG4Altep3@`rO0#Rjs1)RxCLr zE5mee>7m*=%yEk+GVvGkRy0O&*&MTd5SjH(lgq~7r%6oRW$l1p-*S}iC>@fyDsz%y z`UIW8^Ao=maGhj3E8{7Cd_qof`K4oa->23`>&M2+XBtd2J`8jogQu&X%Q~loCIG_? BVG#fT literal 0 HcmV?d00001 diff --git a/docs/reference/glib/html/mainloop-states.gif b/docs/reference/glib/html/mainloop-states.gif new file mode 100644 index 0000000000000000000000000000000000000000..0ba1a8999c5ba981c58b7d53999c6f7c0f82cd49 GIT binary patch literal 7088 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 literal 0 HcmV?d00001 diff --git a/docs/reference/glib/html/right-insensitive.png b/docs/reference/glib/html/right-insensitive.png new file mode 100644 index 0000000000000000000000000000000000000000..4c95785b907b978f36674cd98bf5302669c15c1b GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefG`u!(zUX23=E7+o-U3d7N^fn+URvSL8NuRG*{E) z?#-+97X-^pidQ*u@StO1(S@7g8g>nnA24$?ty?)cmuaa|Y>ez2*_Ia?6HP4j{3LIs zTr!s1ao_Sz^~3e4zRJGAjKZGn=XP#)Wmuo-QN>teTzzI!&R*jMI^Oa#7_ukLYdicf zOx;1mb-rt04s-c|uIH8fnX}$)XJa^0_-F3(pA%=sGI<|(n_*&=yYt96+n5InXn_GN+EraJI9q(O+n{6MQKErp&KxRvpfn0xh z`sSMqH(2Z%?kaFBTf06W^y=UDA9gR9YrwNS*1pjB((0K%&+SbAx3`XA&dKZ}j*nX7 QfdRze>FVdQ&MBb@09|aA9{>OV literal 0 HcmV?d00001 diff --git a/docs/reference/glib/html/right.png b/docs/reference/glib/html/right.png new file mode 100644 index 0000000000000000000000000000000000000000..76260ec8865f4e13cd269ec62eccd78a33adba3c GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefRMbR+#PqI2*V^#7sn8b(^oI8=W9$9IsUQVezxzH zy`G{eu0`y#boSlU-NAlQG~=D)BPJG4k(^0qdDa(AdQvI0d|vJT=i7_<_D6`Cy?Dm; zP0@1EeB~D|O$oQe*sxL-P;q{2UCr}fN-o#M~tpZzsGyfNz46SZlIJCbKH zZQscEqpOfBCPDgx dt +{ + padding-top: 0.25em; + padding-bottom: 0.25em; + font-weight: bold; +} + +dl.toc > dl +{ + padding-bottom: 0.5em; +} + +.parameter +{ + font-style: normal; +} + +.footer +{ + padding-top: 3.5em; + /* tango:aluminium 3 */ + color: #babdb6; + text-align: center; + font-size: 80%; +} + +.informalfigure, +.figure +{ + margin: 1em; +} + +.informalexample, +.example +{ + margin-top: 1em; + margin-bottom: 1em; +} + +.warning +{ + /* tango:orange 0/1 */ + background: #ffeed9; + background: rgba(252, 175, 62, 0.1); + border-color: #ffb04f; + border-color: rgba(252, 175, 62, 0.2); +} +.note +{ + /* tango:chameleon 0/0.5 */ + background: #d8ffb2; + background: rgba(138, 226, 52, 0.1); + border-color: #abf562; + border-color: rgba(138, 226, 52, 0.2); +} +div.blockquote +{ + border-color: #eeeeec; +} +.note, .warning, div.blockquote +{ + padding: 0.5em; + border-width: 1px; + border-style: solid; + margin: 2em; +} +.note p, .warning p +{ + margin: 0; +} + +div.warning h3.title, +div.note h3.title +{ + display: none; +} + +p + div.section +{ + margin-top: 1em; +} + +div.refnamediv, +div.refsynopsisdiv, +div.refsect1, +div.refsect2, +div.toc, +div.section +{ + margin-bottom: 1em; +} + +/* blob links */ +h2 .extralinks, h3 .extralinks +{ + float: right; + /* tango:aluminium 3 */ + color: #babdb6; + font-size: 80%; + font-weight: normal; +} + +.lineart +{ + color: #d3d7cf; + font-weight: normal; +} + +.annotation +{ + /* tango:aluminium 5 */ + color: #555753; + font-weight: normal; +} + +.structfield +{ + font-style: normal; + font-weight: normal; +} + +acronym,abbr +{ + border-bottom: 1px dotted gray; +} + +/* code listings */ + +.listing_code .programlisting .normal, +.listing_code .programlisting .normal a, +.listing_code .programlisting .number, +.listing_code .programlisting .cbracket, +.listing_code .programlisting .symbol { color: #555753; } +.listing_code .programlisting .comment, +.listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ +.listing_code .programlisting .function, +.listing_code .programlisting .function a, +.listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ +.listing_code .programlisting .string { color: #ad7fa8; } /* tango: plum */ +.listing_code .programlisting .keyword, +.listing_code .programlisting .usertype, +.listing_code .programlisting .type, +.listing_code .programlisting .type a { color: #4e9a06; } /* tango: chameleon 3 */ + +.listing_frame { + /* tango:sky blue 1 */ + border: solid 1px #729fcf; + border: solid 1px rgba(114, 159, 207, 0.2); + padding: 0px; +} + +.listing_lines, .listing_code { + margin-top: 0px; + margin-bottom: 0px; + padding: 0.5em; +} +.listing_lines { + /* tango:sky blue 0.5 */ + background: #a6c5e3; + background: rgba(114, 159, 207, 0.2); + /* tango:aluminium 6 */ + color: #2e3436; +} +.listing_code { + /* tango:sky blue 0 */ + background: #e6f3ff; + background: rgba(114, 159, 207, 0.1); +} +.listing_code .programlisting { + /* override from previous */ + border: none 0px; + padding: 0px; + background: none; +} +.listing_lines pre, .listing_code pre { + margin: 0px; +} + +@media screen { + /* these have a as a first child, but since there are no parent selectors + * we can't use that. */ + a.footnote + { + position: relative; + top: 0em ! important; + } + /* this is needed so that the local anchors are displayed below the naviagtion */ + div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] + { + display: inline-block; + position: relative; + top:-5em; + } + /* this seems to be a bug in the xsl style sheets when generating indexes */ + div.index div.index + { + top: 0em; + } + /* make space for the fixed navigation bar and add space at the bottom so that + * link targets appear somewhat close to top + */ + body + { + padding-top: 2.5em; + padding-bottom: 500px; + max-width: 60em; + } + p + { + max-width: 60em; + } + /* style and size the navigation bar */ + table.navigation#top + { + position: fixed; + background: #e2e2e2; + border-bottom: solid 1px #babdb6; + border-spacing: 5px; + margin-top: 0; + margin-bottom: 0; + top: 0; + left: 0; + z-index: 10; + } + table.navigation#top td + { + padding-left: 6px; + padding-right: 6px; + } + .navigation a, .navigation a:visited + { + /* tango:sky blue 3 */ + color: #204a87; + } + .navigation a:hover + { + /* tango:sky blue 2 */ + color: #3465a4; + } + td.shortcuts + { + /* tango:sky blue 2 */ + color: #3465a4; + font-size: 80%; + white-space: nowrap; + } + td.shortcuts .dim + { + color: #babdb6; + } + .navigation .title + { + font-size: 80%; + max-width: none; + margin: 0px; + font-weight: normal; + } +} +@media screen and (min-width: 60em) { + /* screen larger than 60em */ + body { margin: auto; } +} +@media screen and (max-width: 60em) { + /* screen less than 60em */ + #nav_hierarchy { display: none; } + #nav_interfaces { display: none; } + #nav_prerequisites { display: none; } + #nav_derived_interfaces { display: none; } + #nav_implementations { display: none; } + #nav_child_properties { display: none; } + #nav_style_properties { display: none; } + #nav_index { display: none; } + #nav_glossary { display: none; } + .gallery_image { display: none; } + .property_flags { display: none; } + .signal_flags { display: none; } + .parameter_annotations { display: none; } + .enum_member_annotations { display: none; } + .struct_member_annotations { display: none; } + .union_member_annotations { display: none; } + /* now that a column is hidden, optimize space */ + col.parameters_name { width: auto; } + col.parameters_description { width: auto; } + col.struct_members_name { width: auto; } + col.struct_members_description { width: auto; } + col.enum_members_name { width: auto; } + col.enum_members_description { width: auto; } + col.union_members_name { width: auto; } + col.union_members_description { width: auto; } + .listing_lines { display: none; } +} +@media print { + table.navigation { + visibility: collapse; + display: none; + } + div.titlepage table.navigation { + visibility: visible; + display: table; + background: #e2e2e2; + border: solid 1px #babdb6; + margin-top: 0; + margin-bottom: 0; + top: 0; + left: 0; + height: 3em; + } +} + diff --git a/docs/reference/glib/html/tools.html b/docs/reference/glib/html/tools.html new file mode 100644 index 0000000..f1bb720 --- /dev/null +++ b/docs/reference/glib/html/tools.html @@ -0,0 +1,40 @@ + + + + +GLib Tools: GLib Reference Manual + + + + + + + + + + + + + + + + +
+

+GLib Tools

+
+
+glib-gettextize — gettext internationalization utility +
+
+gtester — test running utility +
+
+gtester-report — test report formatting utility +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/glib/html/up-insensitive.png b/docs/reference/glib/html/up-insensitive.png new file mode 100644 index 0000000000000000000000000000000000000000..f40498606db349a7321cf6b470523e836ee7ac2e GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefG~@Ex#w@70gTL^E{-7zACwHGSRJaopUzr*FR_KPpkxheNzTDP+%{a~ox zRb6~e-_l%s#;V|Jw-)bO$G_X=4F`Y7SBoCzyjAZQ8BPW>ywAP8?pbBsZ|wt?+h6S6&uqY)kkMnwQQEd@7k`4t@sCCO z@7MoiEI4Q_#IB70vhu7Ab+>SXLxu@LWH Qzz|~aboFyt=akR{08E^fv;Y7A literal 0 HcmV?d00001 diff --git a/docs/reference/glib/html/up.png b/docs/reference/glib/html/up.png new file mode 100644 index 0000000000000000000000000000000000000000..80b4b37e997d69b2e128bc3090bc447ccb74bbe9 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefRFevZLys@4W>+6GUE!tU04Ii{0w_tkMIDB?rA5 zttYTN -GLib is creating a worker thread for its own purposes, so GLib applications +GLib creates a worker thread for its own purposes so GLib applications will always have at least 2 threads. diff --git a/docs/reference/glib/version.xml b/docs/reference/glib/version.xml new file mode 100644 index 0000000..9a9feb0 --- /dev/null +++ b/docs/reference/glib/version.xml @@ -0,0 +1 @@ +2.48.0 diff --git a/docs/reference/gobject/Makefile.am b/docs/reference/gobject/Makefile.am index 1ca6158..50b239b 100644 --- a/docs/reference/gobject/Makefile.am +++ b/docs/reference/gobject/Makefile.am @@ -9,7 +9,7 @@ DOC_MODULE=gobject DOC_MAIN_SGML_FILE=gobject-docs.xml # The directory containing the source code. Relative to $(srcdir) -DOC_SOURCE_DIR=$(top_srcdir)/gobject +DOC_SOURCE_DIR =$(top_srcdir)/gobject $(top_builddir)/gobject # Extra options to supply to gtkdoc-scan SCAN_OPTIONS=--deprecated-guards="G_DISABLE_DEPRECATED" \ diff --git a/docs/reference/gobject/Makefile.in b/docs/reference/gobject/Makefile.in new file mode 100644 index 0000000..4b48268 --- /dev/null +++ b/docs/reference/gobject/Makefile.in @@ -0,0 +1,1032 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# -*- mode: makefile -*- + +#################################### +# Everything below here is generic # +#################################### +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@ENABLE_MAN_TRUE@am__append_1 = \ +@ENABLE_MAN_TRUE@ glib-mkenums.1 \ +@ENABLE_MAN_TRUE@ glib-genmarshal.1 \ +@ENABLE_MAN_TRUE@ gobject-query.1 + +subdir = docs/reference/gobject +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = version.xml +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" +NROFF = nroff +MANS = $(man_MANS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/version.xml.in \ + $(top_srcdir)/gtk-doc.make +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = 1.6 + +# The name of the module. +DOC_MODULE = gobject + +# The top-level SGML file. +DOC_MAIN_SGML_FILE = gobject-docs.xml + +# The directory containing the source code. Relative to $(srcdir) +DOC_SOURCE_DIR = $(top_srcdir)/gobject $(top_builddir)/gobject + +# Extra options to supply to gtkdoc-scan +SCAN_OPTIONS = --deprecated-guards="G_DISABLE_DEPRECATED" \ + --ignore-decorators="G_GNUC_INTERNAL|G_GNUC_WARN_UNUSED_RESULT" + + +# Extra options to supply to gtkdoc-mkdb +MKDB_OPTIONS = --output-format=xml --name-space=g + +# Used for dependencies +HFILE_GLOB = $(top_srcdir)/gobject/*.h +CFILE_GLOB = $(top_srcdir)/gobject/*.c + +# Headers to ignore +IGNORE_HFILES = \ + tests \ + gatomicarray.h \ + gobject_trace.h \ + gtype-private.h + + +# CFLAGS and LDFLAGS for compiling scan program. Only needed +# if $(DOC_MODULE).types is non-empty. +AM_CPPFLAGS = \ + -I$(srcdir) \ + $(gobject_INCLUDES) \ + $(GLIB_DEBUG_FLAGS) + +GTKDOC_LIBS = \ + $(top_builddir)/glib/libglib-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la + + +# Images to copy into HTML directory +HTML_IMAGES = \ + images/glue.png + + +# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE) +content_files = version.xml \ + glib-mkenums.xml \ + glib-genmarshal.xml \ + gobject-query.xml \ + tut_gobject.xml \ + tut_gsignal.xml \ + tut_gtype.xml \ + tut_howto.xml \ + tut_intro.xml \ + tut_tools.xml + + +# Extra options to supply to gtkdoc-fixref +FIXXREF_OPTIONS = --extra-dir=$(srcdir)/../glib/html +@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +@GTK_DOC_USE_LIBTOOL_FALSE@GTKDOC_RUN = +@GTK_DOC_USE_LIBTOOL_TRUE@GTKDOC_RUN = $(LIBTOOL) --mode=execute + +# We set GPATH here; this gives us semantics for GNU make +# which are more like other make's VPATH, when it comes to +# whether a source that is a target of one rule is then +# searched for in VPATH/GPATH. +# +GPATH = $(srcdir) +TARGET_DIR = $(HTML_DIR)/$(DOC_MODULE) +SETUP_FILES = \ + $(content_files) \ + $(expand_content_files) \ + $(DOC_MAIN_SGML_FILE) \ + $(DOC_MODULE)-sections.txt \ + $(DOC_MODULE)-overrides.txt + + +# Other files to distribute +EXTRA_DIST = $(HTML_IMAGES) $(SETUP_FILES) gobject.cI version.xml.in \ + $(man_MANS) +DOC_STAMPS = setup-build.stamp scan-build.stamp sgml-build.stamp \ + html-build.stamp pdf-build.stamp \ + sgml.stamp html.stamp pdf.stamp + +SCANOBJ_FILES = \ + $(DOC_MODULE).args \ + $(DOC_MODULE).hierarchy \ + $(DOC_MODULE).interfaces \ + $(DOC_MODULE).prerequisites \ + $(DOC_MODULE).signals + +REPORT_FILES = \ + $(DOC_MODULE)-undocumented.txt \ + $(DOC_MODULE)-undeclared.txt \ + $(DOC_MODULE)-unused.txt + +CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) \ + gtkdoc-check.test $(man_MANS) +@GTK_DOC_BUILD_HTML_FALSE@HTML_BUILD_STAMP = +@GTK_DOC_BUILD_HTML_TRUE@HTML_BUILD_STAMP = html-build.stamp +@GTK_DOC_BUILD_PDF_FALSE@PDF_BUILD_STAMP = +@GTK_DOC_BUILD_PDF_TRUE@PDF_BUILD_STAMP = pdf-build.stamp + +#### setup #### +GTK_DOC_V_SETUP = $(GTK_DOC_V_SETUP_$(V)) +GTK_DOC_V_SETUP_ = $(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SETUP_0 = @echo " DOC Preparing build"; + +#### scan #### +GTK_DOC_V_SCAN = $(GTK_DOC_V_SCAN_$(V)) +GTK_DOC_V_SCAN_ = $(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SCAN_0 = @echo " DOC Scanning header files"; +GTK_DOC_V_INTROSPECT = $(GTK_DOC_V_INTROSPECT_$(V)) +GTK_DOC_V_INTROSPECT_ = $(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_INTROSPECT_0 = @echo " DOC Introspecting gobjects"; + +#### xml #### +GTK_DOC_V_XML = $(GTK_DOC_V_XML_$(V)) +GTK_DOC_V_XML_ = $(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XML_0 = @echo " DOC Building XML"; + +#### html #### +GTK_DOC_V_HTML = $(GTK_DOC_V_HTML_$(V)) +GTK_DOC_V_HTML_ = $(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_HTML_0 = @echo " DOC Building HTML"; +GTK_DOC_V_XREF = $(GTK_DOC_V_XREF_$(V)) +GTK_DOC_V_XREF_ = $(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XREF_0 = @echo " DOC Fixing cross-references"; + +#### pdf #### +GTK_DOC_V_PDF = $(GTK_DOC_V_PDF_$(V)) +GTK_DOC_V_PDF_ = $(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_PDF_0 = @echo " DOC Building PDF"; + +######################################################################## +man_MANS = $(am__append_1) +@ENABLE_MAN_TRUE@XSLTPROC_FLAGS = \ +@ENABLE_MAN_TRUE@ --nonet \ +@ENABLE_MAN_TRUE@ --stringparam man.output.quietly 1 \ +@ENABLE_MAN_TRUE@ --stringparam funcsynopsis.style ansi \ +@ENABLE_MAN_TRUE@ --stringparam man.th.extra1.suppress 1 \ +@ENABLE_MAN_TRUE@ --stringparam man.authors.section.enabled 0 \ +@ENABLE_MAN_TRUE@ --stringparam man.copyright.section.enabled 0 + +all: all-am + +.SUFFIXES: +.SUFFIXES: .1 .xml +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/gtk-doc.make $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/reference/gobject/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu docs/reference/gobject/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/gtk-doc.make $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +version.xml: $(top_builddir)/config.status $(srcdir)/version.xml.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am +check: check-am +@ENABLE_GTK_DOC_FALSE@all-local: +all-am: Makefile $(MANS) all-local +installdirs: + for dir in "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-local + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-man + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic \ + maintainer-clean-local + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-local uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: install-am install-strip + +.PHONY: all all-am all-local check check-am clean clean-generic \ + clean-libtool clean-local cscopelist-am ctags-am dist-hook \ + distclean distclean-generic distclean-libtool distclean-local \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-data-local \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-man1 install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + maintainer-clean-local mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am uninstall-local uninstall-man uninstall-man1 + +.PRECIOUS: Makefile + + +gtkdoc-check.test: Makefile + $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \ + echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \ + chmod +x $@ + +all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) +.PHONY: all-gtk-doc + +@ENABLE_GTK_DOC_TRUE@all-local: all-gtk-doc + +docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) + +$(REPORT_FILES): sgml-build.stamp + +setup-build.stamp: + -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ + files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ + if test "x$$files" != "x" ; then \ + for file in $$files ; do \ + destdir=`dirname $(abs_builddir)/$$file`; \ + test -d "$$destdir" || mkdir -p "$$destdir"; \ + test -f $(abs_srcdir)/$$file && \ + cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ + done; \ + fi; \ + fi + $(AM_V_at)touch setup-build.stamp + +scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) + $(GTK_DOC_V_SCAN)_source_dir='' ; \ + for i in $(DOC_SOURCE_DIR) ; do \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ + done ; \ + gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) + $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ + scanobj_options=""; \ + gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + scanobj_options="--verbose"; \ + fi; \ + fi; \ + CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ + gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ + else \ + for i in $(SCANOBJ_FILES) ; do \ + test -f $$i || touch $$i ; \ + done \ + fi + $(AM_V_at)touch scan-build.stamp + +$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp + @true + +sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent + $(GTK_DOC_V_XML)_source_dir='' ; \ + for i in $(DOC_SOURCE_DIR) ; do \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ + done ; \ + gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) + $(AM_V_at)touch sgml-build.stamp + +sgml.stamp: sgml-build.stamp + @true + +xml/gtkdocentities.ent: Makefile + $(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + ) > $@ + +html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) + $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ + mkhtml_options=""; \ + gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + mkhtml_options="$$mkhtml_options --verbose"; \ + fi; \ + fi; \ + gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ + if test "$$?" = "0"; then \ + mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ + fi; \ + cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) + -@test "x$(HTML_IMAGES)" = "x" || \ + for file in $(HTML_IMAGES) ; do \ + if test -f $(abs_srcdir)/$$file ; then \ + cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ + fi; \ + if test -f $(abs_builddir)/$$file ; then \ + cp $(abs_builddir)/$$file $(abs_builddir)/html; \ + fi; \ + done; + $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) + $(AM_V_at)touch html-build.stamp + +pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) + $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ + mkpdf_options=""; \ + gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + mkpdf_options="$$mkpdf_options --verbose"; \ + fi; \ + fi; \ + if test "x$(HTML_IMAGES)" != "x"; then \ + for img in $(HTML_IMAGES); do \ + part=`dirname $$img`; \ + echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ + if test $$? != 0; then \ + mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ + fi; \ + done; \ + fi; \ + gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) + $(AM_V_at)touch pdf-build.stamp + +############## + +clean-local: + @rm -f *~ *.bak + @rm -rf .libs + @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \ + rm -f $(DOC_MODULE).types; \ + fi + @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-sections" ; then \ + rm -f $(DOC_MODULE)-sections.txt; \ + fi + +distclean-local: + @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ + $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt + @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ + rm -f $(SETUP_FILES) $(DOC_MODULE).types; \ + fi + +maintainer-clean-local: + @rm -rf xml html + +install-data-local: + @installfiles=`echo $(builddir)/html/*`; \ + if test "$$installfiles" = '$(builddir)/html/*'; \ + then echo 1>&2 'Nothing to install' ; \ + else \ + if test -n "$(DOC_MODULE_VERSION)"; then \ + installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ + else \ + installdir="$(DESTDIR)$(TARGET_DIR)"; \ + fi; \ + $(mkinstalldirs) $${installdir} ; \ + for i in $$installfiles; do \ + echo ' $(INSTALL_DATA) '$$i ; \ + $(INSTALL_DATA) $$i $${installdir}; \ + done; \ + if test -n "$(DOC_MODULE_VERSION)"; then \ + mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ + $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ + fi; \ + $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ + fi + +uninstall-local: + @if test -n "$(DOC_MODULE_VERSION)"; then \ + installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ + else \ + installdir="$(DESTDIR)$(TARGET_DIR)"; \ + fi; \ + rm -rf $${installdir} + +# +# Require gtk-doc when making dist +# +@HAVE_GTK_DOC_TRUE@dist-check-gtkdoc: docs +@HAVE_GTK_DOC_FALSE@dist-check-gtkdoc: +@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc is needed to run 'make dist'. ***" +@HAVE_GTK_DOC_FALSE@ @echo "*** gtk-doc was not found when 'configure' ran. ***" +@HAVE_GTK_DOC_FALSE@ @echo "*** please install gtk-doc and rerun 'configure'. ***" +@HAVE_GTK_DOC_FALSE@ @false + +dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local + @mkdir $(distdir)/html + @cp ./html/* $(distdir)/html + @-cp ./$(DOC_MODULE).pdf $(distdir)/ + @-cp ./$(DOC_MODULE).types $(distdir)/ + @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ + @cd $(distdir) && rm -f $(DISTCLEANFILES) + @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html + +.PHONY : dist-hook-local docs + +@ENABLE_MAN_TRUE@.xml.1: +@ENABLE_MAN_TRUE@ $(AM_V_GEN) $(XSLTPROC) $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $< + +CLEANFILES ?= + +dist-hook-local: all-local + +gobject-docs-clean: clean + cd $(srcdir) && rm -rf xml html + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/docs/reference/gobject/glib-genmarshal.1 b/docs/reference/gobject/glib-genmarshal.1 new file mode 100644 index 0000000..29f7474 --- /dev/null +++ b/docs/reference/gobject/glib-genmarshal.1 @@ -0,0 +1,335 @@ +'\" t +.\" Title: glib-genmarshal +.\" Author: Tim Janik +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 03/22/2016 +.\" Manual: User Commands +.\" Source: GObject +.\" Language: English +.\" +.TH "GLIB\-GENMARSHAL" "1" "" "GObject" "User Commands" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +glib-genmarshal \- C code marshaller generation utility for GLib closures +.SH "SYNOPSIS" +.HP \w'\fBglib\-genmarshal\fR\ 'u +\fBglib\-genmarshal\fR [OPTION...] [FILE...] +.SH "DESCRIPTION" +.PP +\fBglib\-genmarshal\fR +is a small utility that generates C code marshallers for callback functions of the GClosure mechanism in the GObject sublibrary of GLib\&. The marshaller functions have a standard signature, they get passed in the invoking closure, an array of value structures holding the callback function parameters and a value structure for the return value of the callback\&. The marshaller is then responsible to call the respective C code function of the closure with all the parameters on the stack and to collect its return value\&. +.PP +\fBglib\-genmarshal\fR +takes a list of marshallers to generate as input\&. The marshaller list is either read from standard input or from files passed as additional arguments on the command line\&. +.SS "Marshaller list format" +.PP +The marshaller lists are processed line by line, a line can contain a comment in the form of +.sp .if n \{\ .RS 4 .\} .nf # this is a comment .fi .if n \{\ .RE .\} +or a marshaller specification of the form +.sp +.if n \{\ +.RS 4 +.\} +.nf +\fIRTYPE\fR:\fIPTYPE\fR +\fIRTYPE\fR:\fIPTYPE\fR,\fIPTYPE\fR +\fIRTYPE\fR:\fIPTYPE\fR,\fIPTYPE\fR,\fIPTYPE\fR +.fi +.if n \{\ +.RE +.\} +.sp +(up to 16 +\fIPTYPE\fRs may be present)\&. +.PP +The +\fIRTYPE\fR +part specifies the callback\*(Aqs return type and the +\fIPTYPE\fRs right to the colon specify the callback\*(Aqs parameter list, except for the first and the last arguments which are always pointers\&. +.SS "Parameter types" +.PP +Currently, the following types are supported: +.PP +\fIVOID\fR +.RS 4 +indicates no return type, or no extra parameters\&. If +\fIVOID\fR +is used as the parameter list, no additional parameters may be present\&. +.RE +.PP +\fIBOOLEAN\fR +.RS 4 +for boolean types (gboolean) +.RE +.PP +\fICHAR\fR +.RS 4 +for signed char types (gchar) +.RE +.PP +\fIUCHAR\fR +.RS 4 +for unsigned char types (guchar) +.RE +.PP +\fIINT\fR +.RS 4 +for signed integer types (gint) +.RE +.PP +\fIUINT\fR +.RS 4 +for unsigned integer types (guint) +.RE +.PP +\fILONG\fR +.RS 4 +for signed long integer types (glong) +.RE +.PP +\fIULONG\fR +.RS 4 +for unsigned long integer types (gulong) +.RE +.PP +\fIINT64\fR +.RS 4 +for signed 64bit integer types (gint64) +.RE +.PP +\fIUINT64\fR +.RS 4 +for unsigned 64bit integer types (guint64) +.RE +.PP +\fIENUM\fR +.RS 4 +for enumeration types (gint) +.RE +.PP +\fIFLAGS\fR +.RS 4 +for flag enumeration types (guint) +.RE +.PP +\fIFLOAT\fR +.RS 4 +for single\-precision float types (gfloat) +.RE +.PP +\fIDOUBLE\fR +.RS 4 +for double\-precision float types (gdouble) +.RE +.PP +\fISTRING\fR +.RS 4 +for string types (gchar*) +.RE +.PP +\fIBOXED\fR +.RS 4 +for boxed (anonymous but reference counted) types (GBoxed*) +.RE +.PP +\fIPARAM\fR +.RS 4 +for GParamSpec or derived types (GParamSpec*) +.RE +.PP +\fIPOINTER\fR +.RS 4 +for anonymous pointer types (gpointer) +.RE +.PP +\fIOBJECT\fR +.RS 4 +for GObject or derived types (GObject*) +.RE +.PP +\fIVARIANT\fR +.RS 4 +for GVariant types (GVariant*) +.RE +.PP +\fINONE\fR +.RS 4 +deprecated alias for +\fIVOID\fR +.RE +.PP +\fIBOOL\fR +.RS 4 +deprecated alias for +\fIBOOLEAN\fR +.RE +.SH "OPTIONS" +.PP +\fB\-\-header\fR +.RS 4 +Generate header file contents of the marshallers\&. +.RE +.PP +\fB\-\-body\fR +.RS 4 +Generate C code file contents of the marshallers\&. +.RE +.PP +\fB\-\-prefix=\fR\fB\fIPREFIX\fR\fR +.RS 4 +Specify marshaller prefix\&. The default prefix is +`g_cclosure_marshal\*(Aq\&. +.RE +.PP +\fB\-\-skip\-source\fR +.RS 4 +Skip source location remarks in generated comments\&. +.RE +.PP +\fB\-\-stdinc\fR +.RS 4 +Use the standard marshallers of the GObject library, and include +gmarshal\&.h +in generated header files\&. +.RE +.PP +\fB\-\-nostdinc\fR +.RS 4 +Do not use the standard marshallers of the GObject library, and skip +gmarshal\&.h +include directive in generated header files\&. +.RE +.PP +\fB\-\-internal\fR +.RS 4 +Mark generated functions as internal, using G_GNUC_INTERNAL\&. +.RE +.PP +\fB\-\-valist\-marshallers\fR +.RS 4 +Generate valist marshallers, for use with g_signal_set_va_marshaller()\&. +.RE +.PP +\fB\-v\fR, \fB\-\-version\fR +.RS 4 +Print version information\&. +.RE +.PP +\fB\-\-g\-fatal\-warnings\fR +.RS 4 +Make warnings fatal, that is, exit immediately once a warning occurs\&. +.RE +.PP +\fB\-h\fR, \fB\-\-help\fR +.RS 4 +Print brief help and exit\&. +.RE +.PP +\fB\-v\fR, \fB\-\-version\fR +.RS 4 +Print version and exit\&. +.RE +.SH "EXAMPLE" +.PP +To generate marshallers for the following callback functions: +.sp +.if n \{\ +.RS 4 +.\} +.nf +void foo (gpointer data1, + gpointer data2); +void bar (gpointer data1, + gint param1, + gpointer data2); +gfloat baz (gpointer data1, + gboolean param1, + guchar param2, + gpointer data2); +.fi +.if n \{\ +.RE +.\} +.PP +The +marshaller\&.list +file has to look like this: +.sp +.if n \{\ +.RS 4 +.\} +.nf +VOID:VOID +VOID:INT +FLOAT:BOOLEAN,UCHAR +.fi +.if n \{\ +.RE +.\} +.PP +and you call glib\-genmarshal like this: +.sp +.if n \{\ +.RS 4 +.\} +.nf +glib\-genmarshal \-\-header marshaller\&.list > marshaller\&.h +glib\-genmarshal \-\-body marshaller\&.list > marshaller\&.c +.fi +.if n \{\ +.RE +.\} +.PP +The generated marshallers have the arguments encoded in their function name\&. For this particular list, they are +.sp +.if n \{\ +.RS 4 +.\} +.nf +g_cclosure_user_marshal_VOID__VOID(), +g_cclosure_user_marshal_VOID__INT(), +g_cclosure_user_marshal_FLOAT__BOOLEAN_UCHAR()\&. +.fi +.if n \{\ +.RE +.\} +.PP +They can be used directly for GClosures or be passed in as the GSignalCMarshaller c_marshaller; argument upon creation of signals: +.sp +.if n \{\ +.RS 4 +.\} +.nf +GClosure *cc_foo, *cc_bar, *cc_baz; + +cc_foo = g_cclosure_new (NULL, foo, NULL); +g_closure_set_marshal (cc_foo, g_cclosure_user_marshal_VOID__VOID); +cc_bar = g_cclosure_new (NULL, bar, NULL); +g_closure_set_marshal (cc_bar, g_cclosure_user_marshal_VOID__INT); +cc_baz = g_cclosure_new (NULL, baz, NULL); +g_closure_set_marshal (cc_baz, g_cclosure_user_marshal_FLOAT__BOOLEAN_UCHAR); +.fi +.if n \{\ +.RE +.\} +.SH "SEE ALSO" +.PP +\fBglib-mkenums\fR(1) diff --git a/docs/reference/gobject/glib-mkenums.1 b/docs/reference/gobject/glib-mkenums.1 new file mode 100644 index 0000000..807e9fb --- /dev/null +++ b/docs/reference/gobject/glib-mkenums.1 @@ -0,0 +1,224 @@ +'\" t +.\" Title: glib-mkenums +.\" Author: Owen Taylor +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 03/22/2016 +.\" Manual: User Commands +.\" Source: GObject +.\" Language: English +.\" +.TH "GLIB\-MKENUMS" "1" "" "GObject" "User Commands" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +glib-mkenums \- C language enum description generation utility +.SH "SYNOPSIS" +.HP \w'\fBglib\-mkenums\fR\ 'u +\fBglib\-mkenums\fR [OPTION...] [FILE...] +.SH "DESCRIPTION" +.PP +\fBglib\-mkenums\fR +is a small perl\-script utility that parses C code to extract enum definitions and produces enum descriptions based on text templates specified by the user\&. Most frequently this script is used to produce C code that contains enum values as strings so programs can provide value name strings for introspection\&. +.PP +\fBglib\-mkenums\fR +takes a list of valid C code files as input\&. The options specified control the text that is output, certain substitutions are performed on the text templates for keywords enclosed in @ characters\&. +.SS "Production text substitutions" +.PP +Certain keywords enclosed in @ characters will be substituted in the emitted text\&. For the substitution examples of the keywords below, the following example enum definition is assumed: +.sp .if n \{\ .RS 4 .\} .nf typedef enum { PREFIX_THE_XVALUE = 1 << 3, PREFIX_ANOTHER_VALUE = 1 << 4 } PrefixTheXEnum; .fi .if n \{\ .RE .\} +.PP +@EnumName@ +.RS 4 +The name of the enum currently being processed, enum names are assumed to be properly namespaced and to use mixed capitalization to separate words (e\&.g\&. PrefixTheXEnum)\&. +.RE +.PP +@enum_name@ +.RS 4 +The enum name with words lowercase and word\-separated by underscores (e\&.g\&. prefix_the_xenum)\&. +.RE +.PP +@ENUMNAME@ +.RS 4 +The enum name with words uppercase and word\-separated by underscores (e\&.g\&. PREFIX_THE_XENUM)\&. +.RE +.PP +@ENUMSHORT@ +.RS 4 +The enum name with words uppercase and word\-separated by underscores, prefix stripped (e\&.g\&. THE_XENUM)\&. +.RE +.PP +@ENUMPREFIX@ +.RS 4 +The prefix of the enum name (e\&.g\&. PREFIX)\&. +.RE +.PP +@VALUENAME@ +.RS 4 +The enum value name currently being processed with words uppercase and word\-separated by underscores, this is the assumed literal notation of enum values in the C sources (e\&.g\&. PREFIX_THE_XVALUE)\&. +.RE +.PP +@valuenick@ +.RS 4 +A nick name for the enum value currently being processed, this is usually generated by stripping common prefix words of all the enum values of the current enum, the words are lowercase and underscores are substituted by a minus (e\&.g\&. the\-xvalue)\&. +.RE +.PP +@valuenum@ +.RS 4 +The integer value for the enum value currently being processed\&. This is calculated by using +\fBperl\fR +to attempt to evaluate the expression as it appears in the C source code\&. If evaluation fails then +\fBglib\-mkenums\fR +will exit with an error status, but this only happens if +@valuenum@ +appears in your value production template\&. (Since: 2\&.26) +.RE +.PP +@type@ +.RS 4 +This is substituted either by "enum" or "flags", depending on whether the enum value definitions contained bit\-shift operators or not (e\&.g\&. flags)\&. +.RE +.PP +@Type@ +.RS 4 +The same as +@type@ +with the first letter capitalized (e\&.g\&. Flags)\&. +.RE +.PP +@TYPE@ +.RS 4 +The same as +@type@ +with all letters uppercased (e\&.g\&. FLAGS)\&. +.RE +.PP +@filename@ +.RS 4 +The name of the input file currently being processed (e\&.g\&. foo\&.h)\&. +.RE +.PP +@basename@ +.RS 4 +The base name of the input file currently being processed (e\&.g\&. foo\&.h)\&. (Since: 2\&.22) +.RE +.SS "Trigraph extensions" +.PP +Some C comments are treated specially in the parsed enum definitions, such comments start out with the trigraph sequence +/*< +and end with the trigraph sequence +>*/\&. Per enum definition, the options "skip" and "flags" can be specified, to indicate this enum definition to be skipped, or for it to be treated as a flags definition, or to specify the common prefix to be stripped from all values to generate value nicknames, respectively\&. The "underscore_name" option can be used to specify the word separation used in the *_get_type() function\&. For instance, /*< underscore_name=gnome_vfs_uri_hide_options >*/\&. +.PP +Per value definition, the options "skip" and "nick" are supported\&. The former causes the value to be skipped, and the latter can be used to specify the otherwise auto\-generated nickname\&. Examples: +.sp .if n \{\ .RS 4 .\} .nf typedef enum /*< skip >*/ { PREFIX_FOO } PrefixThisEnumWillBeSkipped; typedef enum /*< flags,prefix=PREFIX >*/ { PREFIX_THE_ZEROTH_VALUE, /*< skip >*/ PREFIX_THE_FIRST_VALUE, PREFIX_THE_SECOND_VALUE, PREFIX_THE_THIRD_VALUE, /*< nick=the\-last\-value >*/ } PrefixTheFlagsEnum; .fi .if n \{\ .RE .\} +.SH "OPTIONS" +.PP +\fB\-\-fhead\fR \fITEXT\fR +.RS 4 +Put out +\fITEXT\fR +prior to processing input files\&. +.RE +.PP +\fB\-\-fprod\fR \fITEXT\fR +.RS 4 +Put out +\fITEXT\fR +everytime a new input file is being processed\&. +.RE +.PP +\fB\-\-ftail\fR \fITEXT\fR +.RS 4 +Put out +\fITEXT\fR +after all input files have been processed\&. +.RE +.PP +\fB\-\-eprod\fR \fITEXT\fR +.RS 4 +Put out +\fITEXT\fR +everytime an enum is encountered in the input files\&. +.RE +.PP +\fB\-\-vhead\fR \fITEXT\fR +.RS 4 +Put out +\fITEXT\fR +before iterating over the set of values of an enum\&. +.RE +.PP +\fB\-\-vprod\fR \fITEXT\fR +.RS 4 +Put out +\fITEXT\fR +for every value of an enum\&. +.RE +.PP +\fB\-\-vtail\fR \fITEXT\fR +.RS 4 +Put out +\fITEXT\fR +after iterating over all values of an enum\&. +.RE +.PP +\fB\-\-comments\fR \fITEXT\fR +.RS 4 +Template for auto\-generated comments, the default (for C code generations) is +"/* @comment@ */"\&. +.RE +.PP +\fB\-\-template\fR \fIFILE\fR +.RS 4 +Read templates from the given file\&. The templates are enclosed in specially\-formatted C comments +.sp .if n \{\ .RS 4 .\} .nf /*** BEGIN section ***/ /*** END section ***/ .fi .if n \{\ .RE .\} +where section may be +file\-header, +file\-production, +file\-tail, +enumeration\-production, +value\-header, +value\-production, +value\-tail +or +comment\&. +.RE +.PP +\fB\-\-identifier\-prefix\fR \fIPREFIX\fR +.RS 4 +Indicates what portion of the enum name should be intepreted as the prefix (eg, the "Gtk" in "GtkDirectionType")\&. Normally this will be figured out automatically, but you may need to override the default if your namespace is capitalized oddly\&. +.RE +.PP +\fB\-\-symbol\-prefix\fR \fIPREFIX\fR +.RS 4 +Indicates what prefix should be used to correspond to the identifier prefix in related C function names (eg, the "gtk" in "gtk_direction_type_get_type"\&. Equivalently, this is the lowercase version of the prefix component of the enum value names (eg, the "GTK" in "GTK_DIR_UP"\&. The default value is the identifier prefix, converted to lowercase\&. +.RE +.PP +\fB\-\-help\fR +.RS 4 +Print brief help and exit\&. +.RE +.PP +\fB\-\-version\fR +.RS 4 +Print version and exit\&. +.RE +.SH "SEE ALSO" +.PP +\fBglib-genmarshal\fR(1) diff --git a/docs/reference/gobject/gobject-docs.xml b/docs/reference/gobject/gobject-docs.xml index d443d2e..646d91a 100644 --- a/docs/reference/gobject/gobject-docs.xml +++ b/docs/reference/gobject/gobject-docs.xml @@ -184,6 +184,10 @@ Index of new symbols in 2.44 + + Index of new symbols in 2.46 + + diff --git a/docs/reference/gobject/gobject-query.1 b/docs/reference/gobject/gobject-query.1 new file mode 100644 index 0000000..1b2137f --- /dev/null +++ b/docs/reference/gobject/gobject-query.1 @@ -0,0 +1,90 @@ +'\" t +.\" Title: gobject-query +.\" Author: Tim Janik +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 03/22/2016 +.\" Manual: User Commands +.\" Source: GObject +.\" Language: English +.\" +.TH "GOBJECT\-QUERY" "1" "" "GObject" "User Commands" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +gobject-query \- display a tree of types +.SH "SYNOPSIS" +.HP \w'\fBgobject\-query\fR\ 'u +\fBgobject\-query\fR froots [OPTION...] +.HP \w'\fBgobject\-query\fR\ 'u +\fBgobject\-query\fR tree [OPTION...] +.SH "DESCRIPTION" +.PP +\fBgobject\-query\fR +is a small utility that draws a tree of types\&. +.PP +\fBgobject\-query\fR +takes a mandatory argument that specifies whether it should iterate over the fundamental types or print a type tree\&. +.SH "COMMANDS" +.PP +\fBfroots\fR +.RS 4 +iterate over fundamental roots +.RE +.PP +\fBtree\fR +.RS 4 +print type tree +.RE +.SH "OPTIONS" +.PP +\fB\-r\fR \fITYPE\fR +.RS 4 +specify the root type +.RE +.PP +\fB\-n\fR +.RS 4 +don\*(Aqt descend type tree +.RE +.PP +\fB\-b\fR \fISTRING\fR +.RS 4 +specify indent string +.RE +.PP +\fB\-i\fR \fISTRING\fR +.RS 4 +specify incremental indent string +.RE +.PP +\fB\-s\fR \fINUMBER\fR +.RS 4 +specify line spacing +.RE +.PP +\fB\-h\fR, \fB\-\-help\fR +.RS 4 +Print brief help and exit\&. +.RE +.PP +\fB\-v\fR, \fB\-\-version\fR +.RS 4 +Print version and exit\&. +.RE diff --git a/docs/reference/gobject/gobject-sections.txt b/docs/reference/gobject/gobject-sections.txt index ad31c23..0f14f93 100644 --- a/docs/reference/gobject/gobject-sections.txt +++ b/docs/reference/gobject/gobject-sections.txt @@ -398,7 +398,6 @@ G_TYPE_SOURCE G_TYPE_POLLFD G_TYPE_THREAD G_TYPE_OPTION_GROUP -GStrv G_TYPE_IS_BOXED @@ -513,6 +512,7 @@ g_param_value_validate g_param_value_convert g_param_values_cmp g_param_spec_get_name +g_param_spec_get_name_quark g_param_spec_get_nick g_param_spec_get_blurb g_param_spec_get_qdata diff --git a/docs/reference/gobject/html/GBinding.html b/docs/reference/gobject/html/GBinding.html new file mode 100644 index 0000000..e34f625 --- /dev/null +++ b/docs/reference/gobject/html/GBinding.html @@ -0,0 +1,976 @@ + + + + +GBinding: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GBinding

+

GBinding — Bind two object properties

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GObject * + +g_binding_get_source () +
const gchar * + +g_binding_get_source_property () +
+GObject * + +g_binding_get_target () +
const gchar * + +g_binding_get_target_property () +
+GBindingFlags + +g_binding_get_flags () +
+void + +g_binding_unbind () +
+GBinding * + +g_object_bind_property () +
+gboolean + +(*GBindingTransformFunc) () +
+GBinding * + +g_object_bind_property_full () +
+GBinding * + +g_object_bind_property_with_closures () +
+
+
+

Properties

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GBindingFlagsflagsRead / Write / Construct Only
+GObject *sourceRead / Write / Construct Only
+gchar *source-propertyRead / Write / Construct Only
+GObject *targetRead / Write / Construct Only
+gchar *target-propertyRead / Write / Construct Only
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GBinding
enumGBindingFlags
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GBinding
+
+
+
+

Includes

+
#include <glib-object.h>
+
+
+
+

Description

+

GBinding is the representation of a binding between a property on a +GObject instance (or source) and another property on another GObject +instance (or target). Whenever the source property changes, the same +value is applied to the target property; for instance, the following +binding:

+
+ + + + + + + +
1
+2
+3
g_object_bind_property (object1, "property-a",
+                        object2, "property-b",
+                        G_BINDING_DEFAULT);
+
+ +

+

will cause the property named "property-b" of object2 + to be updated +every time g_object_set() or the specific accessor changes the value of +the property "property-a" of object1 +.

+

It is possible to create a bidirectional binding between two properties +of two GObject instances, so that if either property changes, the +other is updated as well, for instance:

+
+ + + + + + + +
1
+2
+3
g_object_bind_property (object1, "property-a",
+                        object2, "property-b",
+                        G_BINDING_BIDIRECTIONAL);
+
+ +

+

will keep the two properties in sync.

+

It is also possible to set a custom transformation function (in both +directions, in case of a bidirectional binding) to apply a custom +transformation from the source value to the target value before +applying it; for instance, the following binding:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
g_object_bind_property_full (adjustment1, "value",
+                             adjustment2, "value",
+                             G_BINDING_BIDIRECTIONAL,
+                             celsius_to_fahrenheit,
+                             fahrenheit_to_celsius,
+                             NULL, NULL);
+
+ +

+

will keep the "value" property of the two adjustments in sync; the +celsius_to_fahrenheit + function will be called whenever the "value" +property of adjustment1 + changes and will transform the current value +of the property before applying it to the "value" property of adjustment2 +.

+

Vice versa, the fahrenheit_to_celsius + function will be called whenever +the "value" property of adjustment2 + changes, and will transform the +current value of the property before applying it to the "value" property +of adjustment1 +.

+

Note that GBinding does not resolve cycles by itself; a cycle like

+
+ + + + + + + +
1
+2
+3
object1:propertyA -> object2:propertyB
+object2:propertyB -> object3:propertyC
+object3:propertyC -> object1:propertyA
+
+ +

+

might lead to an infinite loop. The loop, in this particular case, +can be avoided if the objects emit the “notify” signal only +if the value has effectively been changed. A binding is implemented +using the “notify” signal, so it is susceptible to all the +various ways of blocking a signal emission, like g_signal_stop_emission() +or g_signal_handler_block().

+

A binding will be severed, and the resources it allocates freed, whenever +either one of the GObject instances it refers to are finalized, or when +the GBinding instance loses its last reference.

+

Bindings for languages with garbage collection can use +g_binding_unbind() to explicitly release a binding between the source +and target properties, instead of relying on the last reference on the +binding, source, and target instances to drop.

+

GBinding is available since GObject 2.26

+
+
+

Functions

+
+

g_binding_get_source ()

+
GObject *
+g_binding_get_source (GBinding *binding);
+

Retrieves the GObject instance used as the source of the binding.

+
+

Parameters

+
+++++ + + + + + +

binding

a GBinding

 
+
+
+

Returns

+

the source GObject.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_binding_get_source_property ()

+
const gchar *
+g_binding_get_source_property (GBinding *binding);
+

Retrieves the name of the property of “source” used as the source +of the binding.

+
+

Parameters

+
+++++ + + + + + +

binding

a GBinding

 
+
+
+

Returns

+

the name of the source property

+
+

Since: 2.26

+
+
+
+

g_binding_get_target ()

+
GObject *
+g_binding_get_target (GBinding *binding);
+

Retrieves the GObject instance used as the target of the binding.

+
+

Parameters

+
+++++ + + + + + +

binding

a GBinding

 
+
+
+

Returns

+

the target GObject.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_binding_get_target_property ()

+
const gchar *
+g_binding_get_target_property (GBinding *binding);
+

Retrieves the name of the property of “target” used as the target +of the binding.

+
+

Parameters

+
+++++ + + + + + +

binding

a GBinding

 
+
+
+

Returns

+

the name of the target property

+
+

Since: 2.26

+
+
+
+

g_binding_get_flags ()

+
GBindingFlags
+g_binding_get_flags (GBinding *binding);
+

Retrieves the flags passed when constructing the GBinding.

+
+

Parameters

+
+++++ + + + + + +

binding

a GBinding

 
+
+
+

Returns

+

the GBindingFlags used by the GBinding

+
+

Since: 2.26

+
+
+
+

g_binding_unbind ()

+
void
+g_binding_unbind (GBinding *binding);
+

Explicitly releases the binding between the source and the target +property expressed by binding +.

+

This function will release the reference that is being held on +the binding + instance; if you want to hold on to the GBinding instance +after calling g_binding_unbind(), you will need to hold a reference +to it.

+
+

Parameters

+
+++++ + + + + + +

binding

a GBinding

 
+
+

Since: 2.38

+
+
+
+

g_object_bind_property ()

+
GBinding *
+g_object_bind_property (gpointer source,
+                        const gchar *source_property,
+                        gpointer target,
+                        const gchar *target_property,
+                        GBindingFlags flags);
+

Creates a binding between source_property + on source + and target_property + +on target +. Whenever the source_property + is changed the target_property + is +updated using the same value. For instance:

+
+ + + + + + + +
1
g_object_bind_property (action, "active", widget, "sensitive", 0);
+
+ +

+

Will result in the "sensitive" property of the widget GObject instance to be +updated with the same value of the "active" property of the action GObject +instance.

+

If flags + contains G_BINDING_BIDIRECTIONAL then the binding will be mutual: +if target_property + on target + changes then the source_property + on source + +will be updated as well.

+

The binding will automatically be removed when either the source + or the +target + instances are finalized. To remove the binding without affecting the +source + and the target + you can just call g_object_unref() on the returned +GBinding instance.

+

A GObject can have multiple bindings.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

source

the source GObject.

[type GObject.Object]

source_property

the property on source +to bind

 

target

the target GObject.

[type GObject.Object]

target_property

the property on target +to bind

 

flags

flags to pass to GBinding

 
+
+
+

Returns

+

the GBinding instance representing the +binding between the two GObject instances. The binding is released +whenever the GBinding reference count reaches zero.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

GBindingTransformFunc ()

+
gboolean
+(*GBindingTransformFunc) (GBinding *binding,
+                          const GValue *from_value,
+                          GValue *to_value,
+                          gpointer user_data);
+

A function to be called to transform from_value + to to_value +. If +this is the transform_to + function of a binding, then from_value + +is the source_property + on the source + object, and to_value + is the +target_property + on the target + object. If this is the +transform_from + function of a G_BINDING_BIDIRECTIONAL binding, +then those roles are reversed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

binding

a GBinding

 

from_value

the GValue containing the value to transform

 

to_value

the GValue in which to store the transformed value

 

user_data

data passed to the transform function

 
+
+
+

Returns

+

TRUE if the transformation was successful, and FALSE +otherwise

+
+

Since: 2.26

+
+
+
+

g_object_bind_property_full ()

+
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);
+

Complete version of g_object_bind_property().

+

Creates a binding between source_property + on source + and target_property + +on target +, allowing you to set the transformation functions to be used by +the binding.

+

If flags + contains G_BINDING_BIDIRECTIONAL then the binding will be mutual: +if target_property + on target + changes then the source_property + on source + +will be updated as well. The transform_from + function is only used in case +of bidirectional bindings, otherwise it will be ignored

+

The binding will automatically be removed when either the source + or the +target + instances are finalized. To remove the binding without affecting the +source + and the target + you can just call g_object_unref() on the returned +GBinding instance.

+

A GObject can have multiple bindings.

+

The same user_data + parameter will be used for both transform_to + +and transform_from + transformation functions; the notify + function will +be called once, when the binding is removed. If you need different data +for each transformation function, please use +g_object_bind_property_with_closures() instead.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

source

the source GObject.

[type GObject.Object]

source_property

the property on source +to bind

 

target

the target GObject.

[type GObject.Object]

target_property

the property on target +to bind

 

flags

flags to pass to GBinding

 

transform_to

the transformation function +from the source +to the target +, or NULL to use the default.

[scope notified][allow-none]

transform_from

the transformation function +from the target +to the source +, or NULL to use the default.

[scope notified][allow-none]

user_data

custom data to be passed to the transformation functions, +or NULL

 

notify

function to be called when disposing the binding, to free the +resources used by the transformation functions

 
+
+
+

Returns

+

the GBinding instance representing the +binding between the two GObject instances. The binding is released +whenever the GBinding reference count reaches zero.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

g_object_bind_property_with_closures ()

+
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);
+

Creates a binding between source_property + on source + and target_property + +on target +, allowing you to set the transformation functions to be used by +the binding.

+

This function is the language bindings friendly version of +g_object_bind_property_full(), using GClosures instead of +function pointers.

+

[rename-to g_object_bind_property_full]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

source

the source GObject.

[type GObject.Object]

source_property

the property on source +to bind

 

target

the target GObject.

[type GObject.Object]

target_property

the property on target +to bind

 

flags

flags to pass to GBinding

 

transform_to

a GClosure wrapping the transformation function +from the source +to the target +, or NULL to use the default

 

transform_from

a GClosure wrapping the transformation function +from the target +to the source +, or NULL to use the default

 
+
+
+

Returns

+

the GBinding instance representing the +binding between the two GObject instances. The binding is released +whenever the GBinding reference count reaches zero.

+

[transfer none]

+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

GBinding

+
typedef struct _GBinding GBinding;
+

GBinding is an opaque structure whose members +cannot be accessed directly.

+

Since: 2.26

+
+
+
+

enum GBindingFlags

+

Flags to be passed to g_object_bind_property() or +g_object_bind_property_full().

+

This enumeration can be extended at later date.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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().

+
 
+
+

Since: 2.26

+
+
+
+

Property Details

+
+

The “flags” property

+
  “flags”                    GBindingFlags
+

Flags to be used to control the GBinding

+

Flags: Read / Write / Construct Only

+

Since: 2.26

+
+
+
+

The “source” property

+
  “source”                   GObject *
+

The GObject that should be used as the source of the binding

+

Flags: Read / Write / Construct Only

+

Since: 2.26

+
+
+
+

The “source-property” property

+
  “source-property”          gchar *
+

The name of the property of “source” that should be used +as the source of the binding

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.26

+
+
+
+

The “target” property

+
  “target”                   GObject *
+

The GObject that should be used as the target of the binding

+

Flags: Read / Write / Construct Only

+

Since: 2.26

+
+
+
+

The “target-property” property

+
  “target-property”          gchar *
+

The name of the property of “target” that should be used +as the target of the binding

+

Flags: Read / Write / Construct Only

+

Default value: NULL

+

Since: 2.26

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/GTypeModule.html b/docs/reference/gobject/html/GTypeModule.html new file mode 100644 index 0000000..244ff52 --- /dev/null +++ b/docs/reference/gobject/html/GTypeModule.html @@ -0,0 +1,843 @@ + + + + +GTypeModule: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTypeModule

+

GTypeModule — Type loading modules

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +g_type_module_use () +
+void + +g_type_module_unuse () +
+void + +g_type_module_set_name () +
+GType + +g_type_module_register_type () +
+void + +g_type_module_add_interface () +
+GType + +g_type_module_register_enum () +
+GType + +g_type_module_register_flags () +
#define +G_DEFINE_DYNAMIC_TYPE() +
#define +G_DEFINE_DYNAMIC_TYPE_EXTENDED() +
#define +G_IMPLEMENT_INTERFACE_DYNAMIC() +
#define +G_ADD_PRIVATE_DYNAMIC() +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
structGTypeModule
structGTypeModuleClass
+
+
+

Object Hierarchy

+
    GObject
+    ╰── GTypeModule
+
+
+
+

Implemented Interfaces

+

+GTypeModule implements + GTypePlugin.

+
+
+

Includes

+
#include <glib-object.h>
+
+
+
+

Description

+

GTypeModule provides a simple implementation of the GTypePlugin +interface. The model of GTypeModule is a dynamically loaded module +which implements some number of types and interface implementations. +When the module is loaded, it registers its types and interfaces +using g_type_module_register_type() and g_type_module_add_interface(). +As long as any instances of these types and interface implementations +are in use, the module is kept loaded. When the types and interfaces +are gone, the module may be unloaded. If the types and interfaces +become used again, the module will be reloaded. Note that the last +unref cannot happen in module code, since that would lead to the +caller's code being unloaded before g_object_unref() returns to it.

+

Keeping track of whether the module should be loaded or not is done by +using a use count - it starts at zero, and whenever it is greater than +zero, the module is loaded. The use count is maintained internally by +the type system, but also can be explicitly controlled by +g_type_module_use() and g_type_module_unuse(). Typically, when loading +a module for the first type, g_type_module_use() will be used to load +it so that it can initialize its types. At some later point, when the +module no longer needs to be loaded except for the type +implementations it contains, g_type_module_unuse() is called.

+

GTypeModule does not actually provide any implementation of module +loading and unloading. To create a particular module type you must +derive from GTypeModule and implement the load and unload functions +in GTypeModuleClass.

+
+
+

Functions

+
+

g_type_module_use ()

+
gboolean
+g_type_module_use (GTypeModule *module);
+

Increases the use count of a GTypeModule by one. If the +use count was zero before, the plugin will be loaded. +If loading the plugin fails, the use count is reset to +its prior value.

+
+

Parameters

+
+++++ + + + + + +

module

a GTypeModule

 
+
+
+

Returns

+

FALSE if the plugin needed to be loaded and +loading the plugin failed.

+
+
+
+
+

g_type_module_unuse ()

+
void
+g_type_module_unuse (GTypeModule *module);
+

Decreases the use count of a GTypeModule by one. If the +result is zero, the module will be unloaded. (However, the +GTypeModule will not be freed, and types associated with the +GTypeModule are not unregistered. Once a GTypeModule is +initialized, it must exist forever.)

+
+

Parameters

+
+++++ + + + + + +

module

a GTypeModule

 
+
+
+
+
+

g_type_module_set_name ()

+
void
+g_type_module_set_name (GTypeModule *module,
+                        const gchar *name);
+

Sets the name for a GTypeModule

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

module

a GTypeModule.

 

name

a human-readable name to use in error messages.

 
+
+
+
+
+

g_type_module_register_type ()

+
GType
+g_type_module_register_type (GTypeModule *module,
+                             GType parent_type,
+                             const gchar *type_name,
+                             const GTypeInfo *type_info,
+                             GTypeFlags flags);
+

Looks up or registers a type that is implemented with a particular +type plugin. If a type with name type_name + was previously registered, +the GType identifier for the type is returned, otherwise the type +is newly registered, and the resulting GType identifier returned.

+

When reregistering a type (typically because a module is unloaded +then reloaded, and reinitialized), module + and parent_type + must +be the same as they were previously.

+

As long as any instances of the type exist, the type plugin will +not be unloaded.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

module

a GTypeModule

 

parent_type

the type for the parent class

 

type_name

name for the type

 

type_info

type information structure

 

flags

flags field providing details about the type

 
+
+
+

Returns

+

the new or existing type ID

+
+
+
+
+

g_type_module_add_interface ()

+
void
+g_type_module_add_interface (GTypeModule *module,
+                             GType instance_type,
+                             GType interface_type,
+                             const GInterfaceInfo *interface_info);
+

Registers an additional interface for a type, whose interface lives +in the given type plugin. If the interface was already registered +for the type in this plugin, nothing will be done.

+

As long as any instances of the type exist, the type plugin will +not be unloaded.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

module

a GTypeModule

 

instance_type

type to which to add the interface.

 

interface_type

interface type to add

 

interface_info

type information structure

 
+
+
+
+
+

g_type_module_register_enum ()

+
GType
+g_type_module_register_enum (GTypeModule *module,
+                             const gchar *name,
+                             const GEnumValue *const_static_values);
+

Looks up or registers an enumeration that is implemented with a particular +type plugin. If a type with name type_name + was previously registered, +the GType identifier for the type is returned, otherwise the type +is newly registered, and the resulting GType identifier returned.

+

As long as any instances of the type exist, the type plugin will +not be unloaded.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

module

a GTypeModule

 

name

name for the type

 

const_static_values

an array of GEnumValue structs for the +possible enumeration values. The array is +terminated by a struct with all members being +0.

 
+
+
+

Returns

+

the new or existing type ID

+
+

Since: 2.6

+
+
+
+

g_type_module_register_flags ()

+
GType
+g_type_module_register_flags (GTypeModule *module,
+                              const gchar *name,
+                              const GFlagsValue *const_static_values);
+

Looks up or registers a flags type that is implemented with a particular +type plugin. If a type with name type_name + was previously registered, +the GType identifier for the type is returned, otherwise the type +is newly registered, and the resulting GType identifier returned.

+

As long as any instances of the type exist, the type plugin will +not be unloaded.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

module

a GTypeModule

 

name

name for the type

 

const_static_values

an array of GFlagsValue structs for the +possible flags values. The array is +terminated by a struct with all members being +0.

 
+
+
+

Returns

+

the new or existing type ID

+
+

Since: 2.6

+
+
+
+

G_DEFINE_DYNAMIC_TYPE()

+
#define G_DEFINE_DYNAMIC_TYPE(TN, t_n, T_P)          G_DEFINE_DYNAMIC_TYPE_EXTENDED (TN, t_n, T_P, 0, {})
+
+

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 *_get_type() and a static *_register_type() functions +for use in your module_init().

+

See G_DEFINE_DYNAMIC_TYPE_EXTENDED() for an example.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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.

 
+
+

Since: 2.14

+
+
+
+

G_DEFINE_DYNAMIC_TYPE_EXTENDED()

+
#define             G_DEFINE_DYNAMIC_TYPE_EXTENDED(TypeName, type_name, TYPE_PARENT, flags, CODE)
+

A more general version of G_DEFINE_DYNAMIC_TYPE() which +allows to specify GTypeFlags and custom code.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
G_DEFINE_DYNAMIC_TYPE_EXTENDED (GtkGadget,
+                                gtk_gadget,
+                                GTK_TYPE_THING,
+                                0,
+                                G_IMPLEMENT_INTERFACE_DYNAMIC (TYPE_GIZMO,
+                                                               gtk_gadget_gizmo_init));
+
+ +

+expands to

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
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);
+  }
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

 
+
+

Since: 2.14

+
+
+
+

G_IMPLEMENT_INTERFACE_DYNAMIC()

+
#define             G_IMPLEMENT_INTERFACE_DYNAMIC(TYPE_IFACE, iface_init)
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

TYPE_IFACE

The GType of the interface to add

 

iface_init

The interface init function

 
+
+

Since: 2.24

+
+
+
+

G_ADD_PRIVATE_DYNAMIC()

+
#define             G_ADD_PRIVATE_DYNAMIC(TypeName)
+

A convenience macro to ease adding private data to instances of a new dynamic +type in the _C_ + section of G_DEFINE_DYNAMIC_TYPE_EXTENDED(). See +G_ADD_PRIVATE() for details, it is similar but for static types.

+

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.

+
+

Parameters

+
+++++ + + + + + +

TypeName

the name of the type in CamelCase

 
+
+

Since: 2.38

+
+
+
+

Types and Values

+
+

struct GTypeModule

+
struct GTypeModule {
+  gchar *name;
+};
+
+

The members of the GTypeModule structure should not +be accessed directly, except for the name + field.

+
+

Members

+
+++++ + + + + + +

gchar *name;

the name of the module

 
+
+
+
+
+

struct GTypeModuleClass

+
struct GTypeModuleClass {
+  GObjectClass parent_class;
+
+  gboolean (* load)   (GTypeModule *module);
+  void     (* unload) (GTypeModule *module);
+};
+
+

In order to implement dynamic loading of types based on GTypeModule, +the load + and unload + functions in GTypeModuleClass must be implemented.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GObjectClass 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

 
+
+
+
+
+

See Also

+

GTypePlugin, GModule

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/GTypePlugin.html b/docs/reference/gobject/html/GTypePlugin.html new file mode 100644 index 0000000..eeb7402 --- /dev/null +++ b/docs/reference/gobject/html/GTypePlugin.html @@ -0,0 +1,557 @@ + + + + +GTypePlugin: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GTypePlugin

+

GTypePlugin — An interface for dynamically loadable types

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +(*GTypePluginUse) () +
+void + +(*GTypePluginUnuse) () +
+void + +(*GTypePluginCompleteTypeInfo) () +
+void + +(*GTypePluginCompleteInterfaceInfo) () +
+void + +g_type_plugin_use () +
+void + +g_type_plugin_unuse () +
+void + +g_type_plugin_complete_type_info () +
+void + +g_type_plugin_complete_interface_info () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GTypePlugin
structGTypePluginClass
+
+
+

Object Hierarchy

+
    GInterface
+    ╰── GTypePlugin
+
+
+
+

Known Implementations

+

+GTypePlugin is implemented by + GTypeModule.

+
+
+

Includes

+
#include <glib-object.h>
+
+
+
+

Description

+

The GObject type system supports dynamic loading of types. +The GTypePlugin interface is used to handle the lifecycle +of dynamically loaded types. It goes as follows:

+
    +
  1. +

    The type is initially introduced (usually upon loading the module +the first time, or by your main application that knows what modules +introduces what types), like this:

    +
    + + + + + + + +
    1
    +2
    +3
    +4
    new_type_id = g_type_register_dynamic (parent_type_id,
    +                                      "TypeName",
    +                                      new_type_plugin,
    +                                      type_flags);
    +
    + +

    +where new_type_plugin + is an implementation of the +GTypePlugin interface.

    +
  2. +
  3. The type's implementation is referenced, e.g. through +g_type_class_ref() or through g_type_create_instance() (this is +being called by g_object_new()) or through one of the above done on +a type derived from new_type_id +.

  4. +
  5. This causes the type system to load the type's implementation by +calling g_type_plugin_use() and g_type_plugin_complete_type_info() +on new_type_plugin +.

  6. +
  7. At some point the type's implementation isn't required anymore, +e.g. after g_type_class_unref() or g_type_free_instance() (called +when the reference count of an instance drops to zero).

  8. +
  9. This causes the type system to throw away the information retrieved +from g_type_plugin_complete_type_info() and then it calls +g_type_plugin_unuse() on new_type_plugin +.

  10. +
  11. Things may repeat from the second step.

  12. +
+

So basically, you need to implement a GTypePlugin type that +carries a use_count, once use_count goes from zero to one, you need +to load the implementation to successfully handle the upcoming +g_type_plugin_complete_type_info() call. Later, maybe after +succeeding use/unuse calls, once use_count drops to zero, you can +unload the implementation again. The type system makes sure to call +g_type_plugin_use() and g_type_plugin_complete_type_info() again +when the type is needed again.

+

GTypeModule is an implementation of GTypePlugin that already +implements most of this except for the actual module loading and +unloading. It even handles multiple registered types per module.

+
+
+

Functions

+
+

GTypePluginUse ()

+
void
+(*GTypePluginUse) (GTypePlugin *plugin);
+

The type of the use_plugin + function of GTypePluginClass, which gets called +to increase the use count of plugin +.

+
+

Parameters

+
+++++ + + + + + +

plugin

the GTypePlugin whose use count should be increased

 
+
+
+
+
+

GTypePluginUnuse ()

+
void
+(*GTypePluginUnuse) (GTypePlugin *plugin);
+

The type of the unuse_plugin + function of GTypePluginClass.

+
+

Parameters

+
+++++ + + + + + +

plugin

the GTypePlugin whose use count should be decreased

 
+
+
+
+
+

GTypePluginCompleteTypeInfo ()

+
void
+(*GTypePluginCompleteTypeInfo) (GTypePlugin *plugin,
+                                GType g_type,
+                                GTypeInfo *info,
+                                GTypeValueTable *value_table);
+

The type of the complete_type_info + function of GTypePluginClass.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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

 
+
+
+
+
+

GTypePluginCompleteInterfaceInfo ()

+
void
+(*GTypePluginCompleteInterfaceInfo) (GTypePlugin *plugin,
+                                     GType instance_type,
+                                     GType interface_type,
+                                     GInterfaceInfo *info);
+

The type of the complete_interface_info + function of GTypePluginClass.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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

 
+
+
+
+
+

g_type_plugin_use ()

+
void
+g_type_plugin_use (GTypePlugin *plugin);
+

Calls the use_plugin + function from the GTypePluginClass of +plugin +. There should be no need to use this function outside of +the GObject type system itself.

+
+

Parameters

+
+++++ + + + + + +

plugin

a GTypePlugin

 
+
+
+
+
+

g_type_plugin_unuse ()

+
void
+g_type_plugin_unuse (GTypePlugin *plugin);
+

Calls the unuse_plugin + function from the GTypePluginClass of +plugin +. There should be no need to use this function outside of +the GObject type system itself.

+
+

Parameters

+
+++++ + + + + + +

plugin

a GTypePlugin

 
+
+
+
+
+

g_type_plugin_complete_type_info ()

+
void
+g_type_plugin_complete_type_info (GTypePlugin *plugin,
+                                  GType g_type,
+                                  GTypeInfo *info,
+                                  GTypeValueTable *value_table);
+

Calls the complete_type_info + function from the GTypePluginClass of plugin +. +There should be no need to use this function outside of the GObject +type system itself.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

plugin

a GTypePlugin

 

g_type

the GType whose info is completed

 

info

the GTypeInfo struct to fill in

 

value_table

the GTypeValueTable to fill in

 
+
+
+
+
+

g_type_plugin_complete_interface_info ()

+
void
+g_type_plugin_complete_interface_info (GTypePlugin *plugin,
+                                       GType instance_type,
+                                       GType interface_type,
+                                       GInterfaceInfo *info);
+

Calls the complete_interface_info + function from the +GTypePluginClass of plugin +. There should be no need to use this +function outside of the GObject type system itself.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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

 
+
+
+
+
+

Types and Values

+
+

GTypePlugin

+
typedef struct _GTypePlugin GTypePlugin;
+

The GTypePlugin typedef is used as a placeholder +for objects that implement the GTypePlugin interface.

+
+
+
+

struct GTypePluginClass

+
struct GTypePluginClass {
+  GTypePluginUse		   use_plugin;
+  GTypePluginUnuse		   unuse_plugin;
+  GTypePluginCompleteTypeInfo	   complete_type_info;
+  GTypePluginCompleteInterfaceInfo complete_interface_info;
+};
+
+

The GTypePlugin interface is used by the type system in order to handle +the lifecycle of dynamically loaded types.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GTypePluginUse use_plugin;

Increases the use count of the plugin.

 

GTypePluginUnuse unuse_plugin;

Decreases the use count of the plugin.

 

GTypePluginCompleteTypeInfo complete_type_info;

Fills in the GTypeInfo and +GTypeValueTable structs for the type. The structs are initialized +with memset(s, 0, sizeof (s)) before calling this function.

 

GTypePluginCompleteInterfaceInfo complete_interface_info;

Fills in missing parts of the GInterfaceInfo +for the interface. The structs is initialized with +memset(s, 0, sizeof (s)) before calling this function.

 
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/annotation-glossary.html b/docs/reference/gobject/html/annotation-glossary.html new file mode 100644 index 0000000..85b7a54 --- /dev/null +++ b/docs/reference/gobject/html/annotation-glossary.html @@ -0,0 +1,89 @@ + + + + +Annotation Glossary: GObject Reference Manual + + + + + + + + + + + + + + + +
+

+Annotation Glossary

+

A

+
allow-none
+

NULL is OK, both for passing and for returning.

+
array
+

Parameter points to an array of items.

+

C

+
closure
+

This parameter is a 'user_data', for callbacks; many bindings can pass NULL here.

+

E

+
element-type
+

Generics and defining elements of containers and arrays.

+

I

+
inout
+

Parameter for input and for returning results. Default is transfer full.

+

N

+
nullable
+

NULL may be passed as the value in, out, in-out; or as a return value.

+

O

+
optional
+

NULL may be passed instead of a pointer to a location.

+
out
+

Parameter for returning results. Default is transfer full.

+
out callee-allocates
+

Out parameter, where caller must allocate storage.

+
out caller-allocates
+

Out parameter, where caller must allocate storage.

+

R

+
rename-to
+

Rename the original symbol's name to SYMBOL.

+

S

+
scope call
+

The callback is valid only during the call to the method.

+
scope notified
+

The callback is valid until the GDestroyNotify argument is called.

+
skip
+

Exposed in C code, not necessarily available in other languages.

+

T

+
transfer container
+

Free data container after the code is done.

+
transfer full
+

Free data after the code is done.

+
transfer none
+

Don't free data after the code is done.

+
type
+

Override the parsed C type with given type.

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-10.html b/docs/reference/gobject/html/api-index-2-10.html new file mode 100644 index 0000000..a1e4b32 --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-10.html @@ -0,0 +1,79 @@ + + + + +Index of new symbols in 2.10: GObject Reference Manual + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-12.html b/docs/reference/gobject/html/api-index-2-12.html new file mode 100644 index 0000000..f0b35ea --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-12.html @@ -0,0 +1,49 @@ + + + + +Index of new symbols in 2.12: GObject Reference Manual + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-14.html b/docs/reference/gobject/html/api-index-2-14.html new file mode 100644 index 0000000..6ef2465 --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-14.html @@ -0,0 +1,45 @@ + + + + +Index of new symbols in 2.14: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.14

+

D

+
+G_DEFINE_DYNAMIC_TYPE, macro in GTypeModule +
+
+
+G_DEFINE_DYNAMIC_TYPE_EXTENDED, macro in GTypeModule +
+
+

T

+
+G_TYPE_REGEX, macro in Boxed Types +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-18.html b/docs/reference/gobject/html/api-index-2-18.html new file mode 100644 index 0000000..16da129 --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-18.html @@ -0,0 +1,42 @@ + + + + +Index of new symbols in 2.18: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.18

+

S

+
+g_signal_chain_from_overridden_handler, function in Signals +
+
+
+g_signal_new_class_handler, function in Signals +
+
+
+g_signal_override_class_handler, function in Signals +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-2.html b/docs/reference/gobject/html/api-index-2-2.html new file mode 100644 index 0000000..5678b4d --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-2.html @@ -0,0 +1,34 @@ + + + + +Index of new symbols in 2.2: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.2

+

T

+
+g_type_interface_prerequisites, function in Type Information +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-22.html b/docs/reference/gobject/html/api-index-2-22.html new file mode 100644 index 0000000..fb07ab9 --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-22.html @@ -0,0 +1,42 @@ + + + + +Index of new symbols in 2.22: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.22

+

T

+
+G_TYPE_ARRAY, macro in Boxed Types +
+
+
+G_TYPE_BYTE_ARRAY, macro in Boxed Types +
+
+
+G_TYPE_PTR_ARRAY, macro in Boxed Types +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-24.html b/docs/reference/gobject/html/api-index-2-24.html new file mode 100644 index 0000000..40e0aad --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-24.html @@ -0,0 +1,67 @@ + + + + +Index of new symbols in 2.24: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.24

+

D

+
+G_DEFINE_INTERFACE, macro in Type Information +
+
+
+G_DEFINE_INTERFACE_WITH_CODE, macro in Type Information +
+
+

I

+
+G_IMPLEMENT_INTERFACE_DYNAMIC, macro in GTypeModule +
+
+

T

+
+g_type_add_class_private, function in Type Information +
+
+
+G_TYPE_CLASS_GET_PRIVATE, macro in Type Information +
+
+
+G_TYPE_VARIANT_TYPE, macro in Boxed Types +
+
+

V

+
+G_VALUE_COLLECT_INIT, macro in Varargs Value Collection +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-26.html b/docs/reference/gobject/html/api-index-2-26.html new file mode 100644 index 0000000..de4424d --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-26.html @@ -0,0 +1,195 @@ + + + + +Index of new symbols in 2.26: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.26

+

B

+
+GBinding, struct in GBinding +
+
+
+GBinding:flags, object property in GBinding +
+
+
+GBinding:source, object property in GBinding +
+
+
+GBinding:source-property, object property in GBinding +
+
+
+GBinding:target, object property in GBinding +
+
+
+GBinding:target-property, object property in GBinding +
+
+
+GBindingFlags, enum in GBinding +
+
+
+GBindingTransformFunc, user_function in GBinding +
+
+
+g_binding_get_flags, function in GBinding +
+
+
+g_binding_get_source, function in GBinding +
+
+
+g_binding_get_source_property, function in GBinding +
+
+
+g_binding_get_target, function in GBinding +
+
+
+g_binding_get_target_property, function in GBinding +
+
+

C

+
+g_cclosure_marshal_VOID__VARIANT, function in Closures +
+
+

D

+
+G_DEFINE_BOXED_TYPE, macro in Type Information +
+
+
+G_DEFINE_BOXED_TYPE_WITH_CODE, macro in Type Information +
+
+
+G_DEFINE_POINTER_TYPE, macro in Type Information +
+
+
+G_DEFINE_POINTER_TYPE_WITH_CODE, macro in Type Information +
+
+

I

+
+G_IS_PARAM_SPEC_VARIANT, macro in Standard Parameter and Value Types +
+
+

O

+
+g_object_bind_property, function in GBinding +
+
+
+g_object_bind_property_full, function in GBinding +
+
+
+g_object_bind_property_with_closures, function in GBinding +
+
+
+g_object_class_install_properties, function in The Base Object Type +
+
+
+g_object_notify_by_pspec, function in The Base Object Type +
+
+

P

+
+GParamSpecVariant, struct in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_VARIANT, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_variant, function in Standard Parameter and Value Types +
+
+

T

+
+G_TYPE_DATE_TIME, macro in Boxed Types +
+
+
+G_TYPE_ERROR, macro in Boxed Types +
+
+
+G_TYPE_PARAM_VARIANT, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_VARIANT, macro in Type Information +
+
+

V

+
+g_value_dup_variant, function in Standard Parameter and Value Types +
+
+
+g_value_get_variant, function in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_VARIANT, macro in Standard Parameter and Value Types +
+
+
+g_value_set_variant, function in Standard Parameter and Value Types +
+
+
+g_value_take_variant, function in Standard Parameter and Value Types +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-28.html b/docs/reference/gobject/html/api-index-2-28.html new file mode 100644 index 0000000..c6fbd5c --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-28.html @@ -0,0 +1,41 @@ + + + + +Index of new symbols in 2.28: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.28

+

C

+
+g_clear_object, function in The Base Object Type +
+
+

S

+
+g_signal_accumulator_first_wins, function in Signals +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-30.html b/docs/reference/gobject/html/api-index-2-30.html new file mode 100644 index 0000000..6f5952b --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-30.html @@ -0,0 +1,68 @@ + + + + +Index of new symbols in 2.30: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.30

+

C

+
+g_cclosure_marshal_generic, function in Closures +
+
+
+g_cclosure_marshal_generic_va, function in Closures +
+
+

T

+
+G_TYPE_MAIN_CONTEXT, macro in Boxed Types +
+
+
+G_TYPE_MAIN_LOOP, macro in Boxed Types +
+
+
+G_TYPE_MATCH_INFO, macro in Boxed Types +
+
+
+G_TYPE_SOURCE, macro in Boxed Types +
+
+
+G_TYPE_VARIANT_BUILDER, macro in Boxed Types +
+
+

V

+
+G_VALUE_INIT, macro in Generic values +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-32.html b/docs/reference/gobject/html/api-index-2-32.html new file mode 100644 index 0000000..b853860 --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-32.html @@ -0,0 +1,79 @@ + + + + +Index of new symbols in 2.32: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.32

+

S

+
+g_signal_handlers_disconnect_by_data, macro in Signals +
+
+
+g_signal_set_va_marshaller, function in Signals +
+
+

T

+
+G_TYPE_BYTES, macro in Boxed Types +
+
+
+G_TYPE_KEY_FILE, macro in Boxed Types +
+
+

V

+
+g_value_get_schar, function in Standard Parameter and Value Types +
+
+
+g_value_set_schar, function in Standard Parameter and Value Types +
+
+

W

+
+g_weak_ref_clear, function in The Base Object Type +
+
+
+g_weak_ref_get, function in The Base Object Type +
+
+
+g_weak_ref_init, function in The Base Object Type +
+
+
+g_weak_ref_set, function in The Base Object Type +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-34.html b/docs/reference/gobject/html/api-index-2-34.html new file mode 100644 index 0000000..e760ade --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-34.html @@ -0,0 +1,57 @@ + + + + +Index of new symbols in 2.34: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.34

+

O

+
+g_object_dup_data, function in The Base Object Type +
+
+
+g_object_dup_qdata, function in The Base Object Type +
+
+
+g_object_replace_data, function in The Base Object Type +
+
+
+g_object_replace_qdata, function in The Base Object Type +
+
+

T

+
+g_type_ensure, function in Type Information +
+
+
+G_TYPE_TIME_ZONE, macro in Boxed Types +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-36.html b/docs/reference/gobject/html/api-index-2-36.html new file mode 100644 index 0000000..b449104 --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-36.html @@ -0,0 +1,50 @@ + + + + +Index of new symbols in 2.36: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.36

+

T

+
+G_TYPE_CHECKSUM, macro in Type Information +
+
+
+g_type_get_type_registration_serial, function in Type Information +
+
+
+G_TYPE_MARKUP_PARSE_CONTEXT, macro in Boxed Types +
+
+
+G_TYPE_POLLFD, macro in Boxed Types +
+
+
+G_TYPE_THREAD, macro in Boxed Types +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-38.html b/docs/reference/gobject/html/api-index-2-38.html new file mode 100644 index 0000000..41863cb --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-38.html @@ -0,0 +1,75 @@ + + + + +Index of new symbols in 2.38: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.38

+

A

+
+G_ADD_PRIVATE, macro in Type Information +
+
+
+G_ADD_PRIVATE_DYNAMIC, macro in GTypeModule +
+
+

B

+
+g_binding_unbind, function in GBinding +
+
+

D

+
+G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE, macro in Type Information +
+
+
+G_DEFINE_TYPE_WITH_PRIVATE, macro in Type Information +
+
+

P

+
+g_param_spec_get_default_value, function in GParamSpec +
+
+
+G_PRIVATE_FIELD, macro in Type Information +
+
+
+G_PRIVATE_FIELD_P, macro in Type Information +
+
+
+G_PRIVATE_OFFSET, macro in Type Information +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-4.html b/docs/reference/gobject/html/api-index-2-4.html new file mode 100644 index 0000000..d9f0dba --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-4.html @@ -0,0 +1,172 @@ + + + + +Index of new symbols in 2.4: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.4

+

D

+
+G_DEFINE_ABSTRACT_TYPE, macro in Type Information +
+
+
+G_DEFINE_ABSTRACT_TYPE_WITH_CODE, macro in Type Information +
+
+
+G_DEFINE_TYPE, macro in Type Information +
+
+
+G_DEFINE_TYPE_EXTENDED, macro in Type Information +
+
+
+G_DEFINE_TYPE_WITH_CODE, macro in Type Information +
+
+

I

+
+G_IMPLEMENT_INTERFACE, macro in Type Information +
+
+
+G_IS_PARAM_SPEC_OVERRIDE, macro in Standard Parameter and Value Types +
+
+

O

+
+g_object_class_override_property, function in The Base Object Type +
+
+
+g_object_interface_find_property, function in The Base Object Type +
+
+
+g_object_interface_install_property, function in The Base Object Type +
+
+
+g_object_interface_list_properties, function in The Base Object Type +
+
+

P

+
+GParamSpecOverride, struct in Standard Parameter and Value Types +
+
+
+g_param_spec_get_redirect_target, function in GParamSpec +
+
+
+G_PARAM_SPEC_OVERRIDE, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_override, function in Standard Parameter and Value Types +
+
+

S

+
+g_signal_accumulator_true_handled, function in Signals +
+
+

T

+
+GTypeInterfaceCheckFunc, user_function in Type Information +
+
+
+g_type_add_interface_check, function in Type Information +
+
+
+g_type_class_add_private, function in Type Information +
+
+
+g_type_class_peek_static, function in Type Information +
+
+
+g_type_default_interface_peek, function in Type Information +
+
+
+g_type_default_interface_ref, function in Type Information +
+
+
+g_type_default_interface_unref, function in Type Information +
+
+
+G_TYPE_INSTANCE_GET_PRIVATE, macro in Type Information +
+
+
+G_TYPE_PARAM_OVERRIDE, macro in Standard Parameter and Value Types +
+
+
+g_type_remove_interface_check, function in Type Information +
+
+
+G_TYPE_STRV, macro in Boxed Types +
+
+

V

+
+g_value_take_boxed, function in Standard Parameter and Value Types +
+
+
+g_value_take_object, function in Standard Parameter and Value Types +
+
+
+g_value_take_param, function in Standard Parameter and Value Types +
+
+
+g_value_take_string, function in Standard Parameter and Value Types +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-40.html b/docs/reference/gobject/html/api-index-2-40.html new file mode 100644 index 0000000..37cfea2 --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-40.html @@ -0,0 +1,38 @@ + + + + +Index of new symbols in 2.40: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.40

+

T

+
+G_TYPE_MAPPED_FILE, macro in Boxed Types +
+
+
+G_TYPE_VARIANT_DICT, macro in Boxed Types +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-42.html b/docs/reference/gobject/html/api-index-2-42.html new file mode 100644 index 0000000..6c6cbc3 --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-42.html @@ -0,0 +1,34 @@ + + + + +Index of new symbols in 2.42: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.42

+

V

+
+g_value_init_from_instance, function in Generic values +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-44.html b/docs/reference/gobject/html/api-index-2-44.html new file mode 100644 index 0000000..52b99c7 --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-44.html @@ -0,0 +1,60 @@ + + + + +Index of new symbols in 2.44: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.44

+

D

+
+G_DECLARE_DERIVABLE_TYPE, macro in Type Information +
+
+
+G_DECLARE_FINAL_TYPE, macro in Type Information +
+
+
+G_DECLARE_INTERFACE, macro in Type Information +
+
+

S

+
+g_set_object, macro in The Base Object Type +
+
+

T

+
+g_type_get_instance_count, function in Type Information +
+
+
+G_TYPE_OPTION_GROUP, macro in Boxed Types +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-46.html b/docs/reference/gobject/html/api-index-2-46.html new file mode 100644 index 0000000..2ace1d0 --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-46.html @@ -0,0 +1,34 @@ + + + + +Index of new symbols in 2.46: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.46

+

P

+
+g_param_spec_get_name_quark, function in GParamSpec +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-6.html b/docs/reference/gobject/html/api-index-2-6.html new file mode 100644 index 0000000..0ddbab2 --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-6.html @@ -0,0 +1,38 @@ + + + + +Index of new symbols in 2.6: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.6

+

T

+
+g_type_module_register_enum, function in GTypeModule +
+
+
+g_type_module_register_flags, function in GTypeModule +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-2-8.html b/docs/reference/gobject/html/api-index-2-8.html new file mode 100644 index 0000000..9d72e94 --- /dev/null +++ b/docs/reference/gobject/html/api-index-2-8.html @@ -0,0 +1,38 @@ + + + + +Index of new symbols in 2.8: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of new symbols in 2.8

+

O

+
+g_object_add_toggle_ref, function in The Base Object Type +
+
+
+g_object_remove_toggle_ref, function in The Base Object Type +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-deprecated.html b/docs/reference/gobject/html/api-index-deprecated.html new file mode 100644 index 0000000..b355180 --- /dev/null +++ b/docs/reference/gobject/html/api-index-deprecated.html @@ -0,0 +1,131 @@ + + + + +Index of deprecated symbols: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index of deprecated symbols

+

I

+
+G_IS_PARAM_SPEC_VALUE_ARRAY, macro in Standard Parameter and Value Types +
+
+

P

+
+G_PARAM_SPEC_VALUE_ARRAY, macro in Standard Parameter and Value Types +
+
+

T

+
+GTypeDebugFlags, enum in Type Information +
+
+
+g_type_init, function in Type Information +
+
+
+g_type_init_with_debug_flags, function in Type Information +
+
+
+G_TYPE_PARAM_VALUE_ARRAY, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_VALUE_ARRAY, macro in Generic values +
+
+

V

+
+g_value_array_append, function in Value arrays +
+
+
+g_value_array_copy, function in Value arrays +
+
+
+g_value_array_free, function in Value arrays +
+
+
+g_value_array_get_nth, function in Value arrays +
+
+
+g_value_array_insert, function in Value arrays +
+
+
+g_value_array_new, function in Value arrays +
+
+
+g_value_array_prepend, function in Value arrays +
+
+
+g_value_array_remove, function in Value arrays +
+
+
+g_value_array_sort, function in Value arrays +
+
+
+g_value_array_sort_with_data, function in Value arrays +
+
+
+g_value_get_char, function in Standard Parameter and Value Types +
+
+
+g_value_set_boxed_take_ownership, function in Standard Parameter and Value Types +
+
+
+g_value_set_char, function in Standard Parameter and Value Types +
+
+
+g_value_set_object_take_ownership, function in Standard Parameter and Value Types +
+
+
+g_value_set_param_take_ownership, function in Standard Parameter and Value Types +
+
+
+g_value_set_string_take_ownership, function in Standard Parameter and Value Types +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/api-index-full.html b/docs/reference/gobject/html/api-index-full.html new file mode 100644 index 0000000..3735dc2 --- /dev/null +++ b/docs/reference/gobject/html/api-index-full.html @@ -0,0 +1,3030 @@ + + + + +Index: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Index

+

A

+
+G_ADD_PRIVATE, macro in Type Information +
+
+
+G_ADD_PRIVATE_DYNAMIC, macro in GTypeModule +
+
+

B

+
+GBaseFinalizeFunc, user_function in Type Information +
+
+
+GBaseInitFunc, user_function in Type Information +
+
+
+GBinding, struct in GBinding +
+
+
+GBinding:flags, object property in GBinding +
+
+
+GBinding:source, object property in GBinding +
+
+
+GBinding:source-property, object property in GBinding +
+
+
+GBinding:target, object property in GBinding +
+
+
+GBinding:target-property, object property in GBinding +
+
+
+GBindingFlags, enum in GBinding +
+
+
+GBindingTransformFunc, user_function in GBinding +
+
+
+g_binding_get_flags, function in GBinding +
+
+
+g_binding_get_source, function in GBinding +
+
+
+g_binding_get_source_property, function in GBinding +
+
+
+g_binding_get_target, function in GBinding +
+
+
+g_binding_get_target_property, function in GBinding +
+
+
+g_binding_unbind, function in GBinding +
+
+
+GBoxedCopyFunc, user_function in Boxed Types +
+
+
+GBoxedFreeFunc, user_function in Boxed Types +
+
+
+g_boxed_copy, function in Boxed Types +
+
+
+g_boxed_free, function in Boxed Types +
+
+
+g_boxed_type_register_static, function in Boxed Types +
+
+

C

+
+GCallback, user_function in Closures +
+
+
+G_CALLBACK, macro in Closures +
+
+
+GCClosure, struct in Closures +
+
+
+g_cclosure_marshal_BOOLEAN__BOXED_BOXED, function in Closures +
+
+
+g_cclosure_marshal_BOOLEAN__BOXED_BOXEDv, function in Closures +
+
+
+g_cclosure_marshal_BOOLEAN__FLAGS, function in Closures +
+
+
+g_cclosure_marshal_BOOLEAN__FLAGSv, function in Closures +
+
+
+g_cclosure_marshal_BOOL__BOXED_BOXED, macro in Closures +
+
+
+g_cclosure_marshal_BOOL__FLAGS, macro in Closures +
+
+
+g_cclosure_marshal_generic, function in Closures +
+
+
+g_cclosure_marshal_generic_va, function in Closures +
+
+
+g_cclosure_marshal_STRING__OBJECT_POINTER, function in Closures +
+
+
+g_cclosure_marshal_STRING__OBJECT_POINTERv, function in Closures +
+
+
+g_cclosure_marshal_VOID__BOOLEAN, function in Closures +
+
+
+g_cclosure_marshal_VOID__BOOLEANv, function in Closures +
+
+
+g_cclosure_marshal_VOID__BOXED, function in Closures +
+
+
+g_cclosure_marshal_VOID__BOXEDv, function in Closures +
+
+
+g_cclosure_marshal_VOID__CHAR, function in Closures +
+
+
+g_cclosure_marshal_VOID__CHARv, function in Closures +
+
+
+g_cclosure_marshal_VOID__DOUBLE, function in Closures +
+
+
+g_cclosure_marshal_VOID__DOUBLEv, function in Closures +
+
+
+g_cclosure_marshal_VOID__ENUM, function in Closures +
+
+
+g_cclosure_marshal_VOID__ENUMv, function in Closures +
+
+
+g_cclosure_marshal_VOID__FLAGS, function in Closures +
+
+
+g_cclosure_marshal_VOID__FLAGSv, function in Closures +
+
+
+g_cclosure_marshal_VOID__FLOAT, function in Closures +
+
+
+g_cclosure_marshal_VOID__FLOATv, function in Closures +
+
+
+g_cclosure_marshal_VOID__INT, function in Closures +
+
+
+g_cclosure_marshal_VOID__INTv, function in Closures +
+
+
+g_cclosure_marshal_VOID__LONG, function in Closures +
+
+
+g_cclosure_marshal_VOID__LONGv, function in Closures +
+
+
+g_cclosure_marshal_VOID__OBJECT, function in Closures +
+
+
+g_cclosure_marshal_VOID__OBJECTv, function in Closures +
+
+
+g_cclosure_marshal_VOID__PARAM, function in Closures +
+
+
+g_cclosure_marshal_VOID__PARAMv, function in Closures +
+
+
+g_cclosure_marshal_VOID__POINTER, function in Closures +
+
+
+g_cclosure_marshal_VOID__POINTERv, function in Closures +
+
+
+g_cclosure_marshal_VOID__STRING, function in Closures +
+
+
+g_cclosure_marshal_VOID__STRINGv, function in Closures +
+
+
+g_cclosure_marshal_VOID__UCHAR, function in Closures +
+
+
+g_cclosure_marshal_VOID__UCHARv, function in Closures +
+
+
+g_cclosure_marshal_VOID__UINT, function in Closures +
+
+
+g_cclosure_marshal_VOID__UINTv, function in Closures +
+
+
+g_cclosure_marshal_VOID__UINT_POINTER, function in Closures +
+
+
+g_cclosure_marshal_VOID__UINT_POINTERv, function in Closures +
+
+
+g_cclosure_marshal_VOID__ULONG, function in Closures +
+
+
+g_cclosure_marshal_VOID__ULONGv, function in Closures +
+
+
+g_cclosure_marshal_VOID__VARIANT, function in Closures +
+
+
+g_cclosure_marshal_VOID__VARIANTv, function in Closures +
+
+
+g_cclosure_marshal_VOID__VOID, function in Closures +
+
+
+g_cclosure_marshal_VOID__VOIDv, function in Closures +
+
+
+g_cclosure_new, function in Closures +
+
+
+g_cclosure_new_object, function in Closures +
+
+
+g_cclosure_new_object_swap, function in Closures +
+
+
+g_cclosure_new_swap, function in Closures +
+
+
+G_CCLOSURE_SWAP_DATA, macro in Closures +
+
+
+gchararray, typedef in Standard Parameter and Value Types +
+
+
+GClassFinalizeFunc, user_function in Type Information +
+
+
+GClassInitFunc, user_function in Type Information +
+
+
+g_clear_object, function in The Base Object Type +
+
+
+GClosure, struct in Closures +
+
+
+GClosureMarshal, user_function in Closures +
+
+
+GClosureNotify, user_function in Closures +
+
+
+g_closure_add_finalize_notifier, function in Closures +
+
+
+g_closure_add_invalidate_notifier, function in Closures +
+
+
+g_closure_add_marshal_guards, function in Closures +
+
+
+g_closure_invalidate, function in Closures +
+
+
+g_closure_invoke, function in Closures +
+
+
+G_CLOSURE_NEEDS_MARSHAL, macro in Closures +
+
+
+g_closure_new_object, function in Closures +
+
+
+g_closure_new_simple, function in Closures +
+
+
+G_CLOSURE_N_NOTIFIERS, macro in Closures +
+
+
+g_closure_ref, function in Closures +
+
+
+g_closure_remove_finalize_notifier, function in Closures +
+
+
+g_closure_remove_invalidate_notifier, function in Closures +
+
+
+g_closure_set_marshal, function in Closures +
+
+
+g_closure_set_meta_marshal, function in Closures +
+
+
+g_closure_sink, function in Closures +
+
+
+g_closure_unref, function in Closures +
+
+
+GConnectFlags, enum in Signals +
+
+

D

+
+G_DECLARE_DERIVABLE_TYPE, macro in Type Information +
+
+
+G_DECLARE_FINAL_TYPE, macro in Type Information +
+
+
+G_DECLARE_INTERFACE, macro in Type Information +
+
+
+G_DEFINE_ABSTRACT_TYPE, macro in Type Information +
+
+
+G_DEFINE_ABSTRACT_TYPE_WITH_CODE, macro in Type Information +
+
+
+G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE, macro in Type Information +
+
+
+G_DEFINE_BOXED_TYPE, macro in Type Information +
+
+
+G_DEFINE_BOXED_TYPE_WITH_CODE, macro in Type Information +
+
+
+G_DEFINE_DYNAMIC_TYPE, macro in GTypeModule +
+
+
+G_DEFINE_DYNAMIC_TYPE_EXTENDED, macro in GTypeModule +
+
+
+G_DEFINE_INTERFACE, macro in Type Information +
+
+
+G_DEFINE_INTERFACE_WITH_CODE, macro in Type Information +
+
+
+G_DEFINE_POINTER_TYPE, macro in Type Information +
+
+
+G_DEFINE_POINTER_TYPE_WITH_CODE, macro in Type Information +
+
+
+G_DEFINE_TYPE, macro in Type Information +
+
+
+G_DEFINE_TYPE_EXTENDED, macro in Type Information +
+
+
+G_DEFINE_TYPE_WITH_CODE, macro in Type Information +
+
+
+G_DEFINE_TYPE_WITH_PRIVATE, macro in Type Information +
+
+

E

+
+GEnumClass, struct in Enumeration and Flag Types +
+
+
+GEnumValue, struct in Enumeration and Flag Types +
+
+
+G_ENUM_CLASS, macro in Enumeration and Flag Types +
+
+
+G_ENUM_CLASS_TYPE, macro in Enumeration and Flag Types +
+
+
+G_ENUM_CLASS_TYPE_NAME, macro in Enumeration and Flag Types +
+
+
+g_enum_complete_type_info, function in Enumeration and Flag Types +
+
+
+g_enum_get_value, function in Enumeration and Flag Types +
+
+
+g_enum_get_value_by_name, function in Enumeration and Flag Types +
+
+
+g_enum_get_value_by_nick, function in Enumeration and Flag Types +
+
+
+g_enum_register_static, function in Enumeration and Flag Types +
+
+

F

+
+GFlagsClass, struct in Enumeration and Flag Types +
+
+
+GFlagsValue, struct in Enumeration and Flag Types +
+
+
+G_FLAGS_CLASS, macro in Enumeration and Flag Types +
+
+
+G_FLAGS_CLASS_TYPE, macro in Enumeration and Flag Types +
+
+
+G_FLAGS_CLASS_TYPE_NAME, macro in Enumeration and Flag Types +
+
+
+g_flags_complete_type_info, function in Enumeration and Flag Types +
+
+
+g_flags_get_first_value, function in Enumeration and Flag Types +
+
+
+g_flags_get_value_by_name, function in Enumeration and Flag Types +
+
+
+g_flags_get_value_by_nick, function in Enumeration and Flag Types +
+
+
+g_flags_register_static, function in Enumeration and Flag Types +
+
+

I

+
+G_IMPLEMENT_INTERFACE, macro in Type Information +
+
+
+G_IMPLEMENT_INTERFACE_DYNAMIC, macro in GTypeModule +
+
+
+GInitiallyUnowned, typedef in The Base Object Type +
+
+
+GInitiallyUnownedClass, typedef in The Base Object Type +
+
+
+GInstanceInitFunc, user_function in Type Information +
+
+
+GInterfaceFinalizeFunc, user_function in Type Information +
+
+
+GInterfaceInfo, struct in Type Information +
+
+
+GInterfaceInitFunc, user_function in Type Information +
+
+
+G_IS_ENUM_CLASS, macro in Enumeration and Flag Types +
+
+
+G_IS_FLAGS_CLASS, macro in Enumeration and Flag Types +
+
+
+G_IS_OBJECT, macro in The Base Object Type +
+
+
+G_IS_OBJECT_CLASS, macro in The Base Object Type +
+
+
+G_IS_PARAM_SPEC, macro in GParamSpec +
+
+
+G_IS_PARAM_SPEC_BOOLEAN, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_BOXED, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_CHAR, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_CLASS, macro in GParamSpec +
+
+
+G_IS_PARAM_SPEC_DOUBLE, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_ENUM, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_FLAGS, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_FLOAT, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_GTYPE, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_INT, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_INT64, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_LONG, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_OBJECT, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_OVERRIDE, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_PARAM, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_POINTER, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_STRING, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_UCHAR, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_UINT, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_UINT64, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_ULONG, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_UNICHAR, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_VALUE_ARRAY, macro in Standard Parameter and Value Types +
+
+
+G_IS_PARAM_SPEC_VARIANT, macro in Standard Parameter and Value Types +
+
+
+G_IS_VALUE, macro in Generic values +
+
+

O

+
+GObject, struct in The Base Object Type +
+
+
+G_OBJECT, macro in The Base Object Type +
+
+
+GObject::notify, object signal in The Base Object Type +
+
+
+GObjectClass, struct in The Base Object Type +
+
+
+GObjectConstructParam, struct in The Base Object Type +
+
+
+GObjectFinalizeFunc, user_function in The Base Object Type +
+
+
+GObjectGetPropertyFunc, user_function in The Base Object Type +
+
+
+GObjectSetPropertyFunc, user_function in The Base Object Type +
+
+
+g_object_add_toggle_ref, function in The Base Object Type +
+
+
+g_object_add_weak_pointer, function in The Base Object Type +
+
+
+g_object_bind_property, function in GBinding +
+
+
+g_object_bind_property_full, function in GBinding +
+
+
+g_object_bind_property_with_closures, function in GBinding +
+
+
+G_OBJECT_CLASS, macro in The Base Object Type +
+
+
+g_object_class_find_property, function in The Base Object Type +
+
+
+g_object_class_install_properties, function in The Base Object Type +
+
+
+g_object_class_install_property, function in The Base Object Type +
+
+
+g_object_class_list_properties, function in The Base Object Type +
+
+
+G_OBJECT_CLASS_NAME, macro in The Base Object Type +
+
+
+g_object_class_override_property, function in The Base Object Type +
+
+
+G_OBJECT_CLASS_TYPE, macro in The Base Object Type +
+
+
+g_object_connect, function in The Base Object Type +
+
+
+g_object_disconnect, function in The Base Object Type +
+
+
+g_object_dup_data, function in The Base Object Type +
+
+
+g_object_dup_qdata, function in The Base Object Type +
+
+
+g_object_force_floating, function in The Base Object Type +
+
+
+g_object_freeze_notify, function in The Base Object Type +
+
+
+g_object_get, function in The Base Object Type +
+
+
+G_OBJECT_GET_CLASS, macro in The Base Object Type +
+
+
+g_object_get_data, function in The Base Object Type +
+
+
+g_object_get_property, function in The Base Object Type +
+
+
+g_object_get_qdata, function in The Base Object Type +
+
+
+g_object_get_valist, function in The Base Object Type +
+
+
+g_object_interface_find_property, function in The Base Object Type +
+
+
+g_object_interface_install_property, function in The Base Object Type +
+
+
+g_object_interface_list_properties, function in The Base Object Type +
+
+
+g_object_is_floating, function in The Base Object Type +
+
+
+g_object_new, function in The Base Object Type +
+
+
+g_object_newv, function in The Base Object Type +
+
+
+g_object_new_valist, function in The Base Object Type +
+
+
+g_object_notify, function in The Base Object Type +
+
+
+g_object_notify_by_pspec, function in The Base Object Type +
+
+
+g_object_ref, function in The Base Object Type +
+
+
+g_object_ref_sink, function in The Base Object Type +
+
+
+g_object_remove_toggle_ref, function in The Base Object Type +
+
+
+g_object_remove_weak_pointer, function in The Base Object Type +
+
+
+g_object_replace_data, function in The Base Object Type +
+
+
+g_object_replace_qdata, function in The Base Object Type +
+
+
+g_object_run_dispose, function in The Base Object Type +
+
+
+g_object_set, function in The Base Object Type +
+
+
+g_object_set_data, function in The Base Object Type +
+
+
+g_object_set_data_full, function in The Base Object Type +
+
+
+g_object_set_property, function in The Base Object Type +
+
+
+g_object_set_qdata, function in The Base Object Type +
+
+
+g_object_set_qdata_full, function in The Base Object Type +
+
+
+g_object_set_valist, function in The Base Object Type +
+
+
+g_object_steal_data, function in The Base Object Type +
+
+
+g_object_steal_qdata, function in The Base Object Type +
+
+
+g_object_thaw_notify, function in The Base Object Type +
+
+
+G_OBJECT_TYPE, macro in The Base Object Type +
+
+
+G_OBJECT_TYPE_NAME, macro in The Base Object Type +
+
+
+g_object_unref, function in The Base Object Type +
+
+
+G_OBJECT_WARN_INVALID_PROPERTY_ID, macro in The Base Object Type +
+
+
+g_object_watch_closure, function in The Base Object Type +
+
+
+g_object_weak_ref, function in The Base Object Type +
+
+
+g_object_weak_unref, function in The Base Object Type +
+
+

P

+
+GParameter, struct in The Base Object Type +
+
+
+GParamFlags, enum in GParamSpec +
+
+
+GParamSpec, struct in GParamSpec +
+
+
+GParamSpecBoolean, struct in Standard Parameter and Value Types +
+
+
+GParamSpecBoxed, struct in Standard Parameter and Value Types +
+
+
+GParamSpecChar, struct in Standard Parameter and Value Types +
+
+
+GParamSpecClass, struct in GParamSpec +
+
+
+GParamSpecDouble, struct in Standard Parameter and Value Types +
+
+
+GParamSpecEnum, struct in Standard Parameter and Value Types +
+
+
+GParamSpecFlags, struct in Standard Parameter and Value Types +
+
+
+GParamSpecFloat, struct in Standard Parameter and Value Types +
+
+
+GParamSpecGType, struct in Standard Parameter and Value Types +
+
+
+GParamSpecInt, struct in Standard Parameter and Value Types +
+
+
+GParamSpecInt64, struct in Standard Parameter and Value Types +
+
+
+GParamSpecLong, struct in Standard Parameter and Value Types +
+
+
+GParamSpecObject, struct in Standard Parameter and Value Types +
+
+
+GParamSpecOverride, struct in Standard Parameter and Value Types +
+
+
+GParamSpecParam, struct in Standard Parameter and Value Types +
+
+
+GParamSpecPointer, struct in Standard Parameter and Value Types +
+
+
+GParamSpecPool, struct in GParamSpec +
+
+
+GParamSpecString, struct in Standard Parameter and Value Types +
+
+
+GParamSpecTypeInfo, struct in GParamSpec +
+
+
+GParamSpecUChar, struct in Standard Parameter and Value Types +
+
+
+GParamSpecUInt, struct in Standard Parameter and Value Types +
+
+
+GParamSpecUInt64, struct in Standard Parameter and Value Types +
+
+
+GParamSpecULong, struct in Standard Parameter and Value Types +
+
+
+GParamSpecUnichar, struct in Standard Parameter and Value Types +
+
+
+GParamSpecValueArray, struct in Standard Parameter and Value Types +
+
+
+GParamSpecVariant, struct in Standard Parameter and Value Types +
+
+
+G_PARAM_MASK, macro in GParamSpec +
+
+
+G_PARAM_SPEC, macro in GParamSpec +
+
+
+G_PARAM_SPEC_BOOLEAN, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_boolean, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_BOXED, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_boxed, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_CHAR, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_char, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_CLASS, macro in GParamSpec +
+
+
+G_PARAM_SPEC_DOUBLE, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_double, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_ENUM, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_enum, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_FLAGS, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_flags, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_FLOAT, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_float, function in Standard Parameter and Value Types +
+
+
+g_param_spec_get_blurb, function in GParamSpec +
+
+
+G_PARAM_SPEC_GET_CLASS, macro in GParamSpec +
+
+
+g_param_spec_get_default_value, function in GParamSpec +
+
+
+g_param_spec_get_name, function in GParamSpec +
+
+
+g_param_spec_get_name_quark, function in GParamSpec +
+
+
+g_param_spec_get_nick, function in GParamSpec +
+
+
+g_param_spec_get_qdata, function in GParamSpec +
+
+
+g_param_spec_get_redirect_target, function in GParamSpec +
+
+
+G_PARAM_SPEC_GTYPE, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_gtype, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_INT, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_int, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_INT64, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_int64, function in Standard Parameter and Value Types +
+
+
+g_param_spec_internal, function in GParamSpec +
+
+
+G_PARAM_SPEC_LONG, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_long, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_OBJECT, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_object, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_OVERRIDE, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_override, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_PARAM, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_param, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_POINTER, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_pointer, function in Standard Parameter and Value Types +
+
+
+g_param_spec_pool_insert, function in GParamSpec +
+
+
+g_param_spec_pool_list, function in GParamSpec +
+
+
+g_param_spec_pool_list_owned, function in GParamSpec +
+
+
+g_param_spec_pool_lookup, function in GParamSpec +
+
+
+g_param_spec_pool_new, function in GParamSpec +
+
+
+g_param_spec_pool_remove, function in GParamSpec +
+
+
+g_param_spec_ref, function in GParamSpec +
+
+
+g_param_spec_ref_sink, function in GParamSpec +
+
+
+g_param_spec_set_qdata, function in GParamSpec +
+
+
+g_param_spec_set_qdata_full, function in GParamSpec +
+
+
+g_param_spec_sink, function in GParamSpec +
+
+
+g_param_spec_steal_qdata, function in GParamSpec +
+
+
+G_PARAM_SPEC_STRING, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_string, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_TYPE, macro in GParamSpec +
+
+
+G_PARAM_SPEC_TYPE_NAME, macro in GParamSpec +
+
+
+G_PARAM_SPEC_UCHAR, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_uchar, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_UINT, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_uint, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_UINT64, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_uint64, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_ULONG, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_ulong, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_UNICHAR, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_unichar, function in Standard Parameter and Value Types +
+
+
+g_param_spec_unref, function in GParamSpec +
+
+
+G_PARAM_SPEC_VALUE_ARRAY, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_value_array, function in Standard Parameter and Value Types +
+
+
+G_PARAM_SPEC_VALUE_TYPE, macro in GParamSpec +
+
+
+G_PARAM_SPEC_VARIANT, macro in Standard Parameter and Value Types +
+
+
+g_param_spec_variant, function in Standard Parameter and Value Types +
+
+
+G_PARAM_STATIC_STRINGS, macro in GParamSpec +
+
+
+g_param_type_register_static, function in GParamSpec +
+
+
+G_PARAM_USER_SHIFT, macro in GParamSpec +
+
+
+g_param_values_cmp, function in GParamSpec +
+
+
+g_param_value_convert, function in GParamSpec +
+
+
+g_param_value_defaults, function in GParamSpec +
+
+
+g_param_value_set_default, function in GParamSpec +
+
+
+g_param_value_validate, function in GParamSpec +
+
+
+g_pointer_type_register_static, function in Boxed Types +
+
+
+G_PRIVATE_FIELD, macro in Type Information +
+
+
+G_PRIVATE_FIELD_P, macro in Type Information +
+
+
+G_PRIVATE_OFFSET, macro in Type Information +
+
+

S

+
+g_set_object, macro in The Base Object Type +
+
+
+GSignalAccumulator, user_function in Signals +
+
+
+GSignalCMarshaller, typedef in Signals +
+
+
+GSignalCVaMarshaller, typedef in Signals +
+
+
+GSignalEmissionHook, user_function in Signals +
+
+
+GSignalFlags, enum in Signals +
+
+
+GSignalInvocationHint, struct in Signals +
+
+
+GSignalMatchType, enum in Signals +
+
+
+GSignalQuery, struct in Signals +
+
+
+g_signal_accumulator_first_wins, function in Signals +
+
+
+g_signal_accumulator_true_handled, function in Signals +
+
+
+g_signal_add_emission_hook, function in Signals +
+
+
+g_signal_chain_from_overridden, function in Signals +
+
+
+g_signal_chain_from_overridden_handler, function in Signals +
+
+
+g_signal_connect, macro in Signals +
+
+
+g_signal_connect_after, macro in Signals +
+
+
+g_signal_connect_closure, function in Signals +
+
+
+g_signal_connect_closure_by_id, function in Signals +
+
+
+g_signal_connect_data, function in Signals +
+
+
+g_signal_connect_object, function in Signals +
+
+
+g_signal_connect_swapped, macro in Signals +
+
+
+g_signal_emit, function in Signals +
+
+
+g_signal_emitv, function in Signals +
+
+
+g_signal_emit_by_name, function in Signals +
+
+
+g_signal_emit_valist, function in Signals +
+
+
+G_SIGNAL_FLAGS_MASK, macro in Signals +
+
+
+g_signal_get_invocation_hint, function in Signals +
+
+
+g_signal_handlers_block_by_func, macro in Signals +
+
+
+g_signal_handlers_block_matched, function in Signals +
+
+
+g_signal_handlers_disconnect_by_data, macro in Signals +
+
+
+g_signal_handlers_disconnect_by_func, macro in Signals +
+
+
+g_signal_handlers_disconnect_matched, function in Signals +
+
+
+g_signal_handlers_unblock_by_func, macro in Signals +
+
+
+g_signal_handlers_unblock_matched, function in Signals +
+
+
+g_signal_handler_block, function in Signals +
+
+
+g_signal_handler_disconnect, function in Signals +
+
+
+g_signal_handler_find, function in Signals +
+
+
+g_signal_handler_is_connected, function in Signals +
+
+
+g_signal_handler_unblock, function in Signals +
+
+
+g_signal_has_handler_pending, function in Signals +
+
+
+g_signal_list_ids, function in Signals +
+
+
+g_signal_lookup, function in Signals +
+
+
+G_SIGNAL_MATCH_MASK, macro in Signals +
+
+
+g_signal_name, function in Signals +
+
+
+g_signal_new, function in Signals +
+
+
+g_signal_newv, function in Signals +
+
+
+g_signal_new_class_handler, function in Signals +
+
+
+g_signal_new_valist, function in Signals +
+
+
+g_signal_override_class_closure, function in Signals +
+
+
+g_signal_override_class_handler, function in Signals +
+
+
+g_signal_parse_name, function in Signals +
+
+
+g_signal_query, function in Signals +
+
+
+g_signal_remove_emission_hook, function in Signals +
+
+
+g_signal_set_va_marshaller, function in Signals +
+
+
+g_signal_stop_emission, function in Signals +
+
+
+g_signal_stop_emission_by_name, function in Signals +
+
+
+g_signal_type_cclosure_new, function in Signals +
+
+
+G_SIGNAL_TYPE_STATIC_SCOPE, macro in Signals +
+
+
+g_source_set_closure, function in Closures +
+
+
+g_source_set_dummy_callback, function in Closures +
+
+
+g_strdup_value_contents, function in Generic values +
+
+

T

+
+GToggleNotify, user_function in The Base Object Type +
+
+
+GType, typedef in Type Information +
+
+
+GTypeClass, struct in Type Information +
+
+
+GTypeClassCacheFunc, user_function in Type Information +
+
+
+GTypeCValue, union in Varargs Value Collection +
+
+
+GTypeDebugFlags, enum in Type Information +
+
+
+GTypeFlags, enum in Type Information +
+
+
+GTypeFundamentalFlags, enum in Type Information +
+
+
+GTypeFundamentalInfo, struct in Type Information +
+
+
+GTypeInfo, struct in Type Information +
+
+
+GTypeInstance, struct in Type Information +
+
+
+GTypeInterface, struct in Type Information +
+
+
+GTypeInterfaceCheckFunc, user_function in Type Information +
+
+
+GTypeModule, struct in GTypeModule +
+
+
+GTypeModuleClass, struct in GTypeModule +
+
+
+GTypePlugin, struct in GTypePlugin +
+
+
+GTypePluginClass, struct in GTypePlugin +
+
+
+GTypePluginCompleteInterfaceInfo, user_function in GTypePlugin +
+
+
+GTypePluginCompleteTypeInfo, user_function in GTypePlugin +
+
+
+GTypePluginUnuse, user_function in GTypePlugin +
+
+
+GTypePluginUse, user_function in GTypePlugin +
+
+
+GTypeQuery, struct in Type Information +
+
+
+GTypeValueTable, struct in Type Information +
+
+
+g_type_add_class_cache_func, function in Type Information +
+
+
+g_type_add_class_private, function in Type Information +
+
+
+g_type_add_interface_check, function in Type Information +
+
+
+g_type_add_interface_dynamic, function in Type Information +
+
+
+g_type_add_interface_static, function in Type Information +
+
+
+G_TYPE_ARRAY, macro in Boxed Types +
+
+
+G_TYPE_BOOLEAN, macro in Type Information +
+
+
+G_TYPE_BOXED, macro in Type Information +
+
+
+G_TYPE_BYTES, macro in Boxed Types +
+
+
+G_TYPE_BYTE_ARRAY, macro in Boxed Types +
+
+
+G_TYPE_CHAR, macro in Type Information +
+
+
+G_TYPE_CHECKSUM, macro in Type Information +
+
+
+G_TYPE_CHECK_CLASS_CAST, macro in Type Information +
+
+
+G_TYPE_CHECK_CLASS_TYPE, macro in Type Information +
+
+
+G_TYPE_CHECK_INSTANCE, macro in Type Information +
+
+
+G_TYPE_CHECK_INSTANCE_CAST, macro in Type Information +
+
+
+G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE, macro in Type Information +
+
+
+G_TYPE_CHECK_INSTANCE_TYPE, macro in Type Information +
+
+
+G_TYPE_CHECK_VALUE, macro in Type Information +
+
+
+G_TYPE_CHECK_VALUE_TYPE, macro in Type Information +
+
+
+g_type_children, function in Type Information +
+
+
+g_type_class_add_private, function in Type Information +
+
+
+G_TYPE_CLASS_GET_PRIVATE, macro in Type Information +
+
+
+g_type_class_peek, function in Type Information +
+
+
+g_type_class_peek_parent, function in Type Information +
+
+
+g_type_class_peek_static, function in Type Information +
+
+
+g_type_class_ref, function in Type Information +
+
+
+g_type_class_unref, function in Type Information +
+
+
+g_type_class_unref_uncached, function in Type Information +
+
+
+G_TYPE_CLOSURE, macro in Closures +
+
+
+g_type_create_instance, function in Type Information +
+
+
+G_TYPE_DATE, macro in Boxed Types +
+
+
+G_TYPE_DATE_TIME, macro in Boxed Types +
+
+
+g_type_default_interface_peek, function in Type Information +
+
+
+g_type_default_interface_ref, function in Type Information +
+
+
+g_type_default_interface_unref, function in Type Information +
+
+
+g_type_depth, function in Type Information +
+
+
+G_TYPE_DOUBLE, macro in Type Information +
+
+
+g_type_ensure, function in Type Information +
+
+
+G_TYPE_ENUM, macro in Type Information +
+
+
+G_TYPE_ERROR, macro in Boxed Types +
+
+
+G_TYPE_FLAGS, macro in Type Information +
+
+
+G_TYPE_FLAG_RESERVED_ID_BIT, macro in Type Information +
+
+
+G_TYPE_FLOAT, macro in Type Information +
+
+
+g_type_free_instance, function in Type Information +
+
+
+G_TYPE_FROM_CLASS, macro in Type Information +
+
+
+G_TYPE_FROM_INSTANCE, macro in Type Information +
+
+
+G_TYPE_FROM_INTERFACE, macro in Type Information +
+
+
+g_type_from_name, function in Type Information +
+
+
+G_TYPE_FUNDAMENTAL, macro in Type Information +
+
+
+g_type_fundamental, function in Type Information +
+
+
+G_TYPE_FUNDAMENTAL_MAX, macro in Type Information +
+
+
+g_type_fundamental_next, function in Type Information +
+
+
+g_type_get_instance_count, function in Type Information +
+
+
+g_type_get_plugin, function in Type Information +
+
+
+g_type_get_qdata, function in Type Information +
+
+
+g_type_get_type_registration_serial, function in Type Information +
+
+
+G_TYPE_GSTRING, macro in Boxed Types +
+
+
+G_TYPE_GTYPE, macro in Type Information +
+
+
+G_TYPE_HASH_TABLE, macro in Boxed Types +
+
+
+G_TYPE_HAS_VALUE_TABLE, macro in Type Information +
+
+
+g_type_init, function in Type Information +
+
+
+G_TYPE_INITIALLY_UNOWNED, macro in The Base Object Type +
+
+
+g_type_init_with_debug_flags, function in Type Information +
+
+
+G_TYPE_INSTANCE_GET_CLASS, macro in Type Information +
+
+
+G_TYPE_INSTANCE_GET_INTERFACE, macro in Type Information +
+
+
+G_TYPE_INSTANCE_GET_PRIVATE, macro in Type Information +
+
+
+G_TYPE_INT, macro in Type Information +
+
+
+G_TYPE_INT64, macro in Type Information +
+
+
+G_TYPE_INTERFACE, macro in Type Information +
+
+
+g_type_interfaces, function in Type Information +
+
+
+g_type_interface_add_prerequisite, function in Type Information +
+
+
+g_type_interface_get_plugin, function in Type Information +
+
+
+g_type_interface_peek, function in Type Information +
+
+
+g_type_interface_peek_parent, function in Type Information +
+
+
+g_type_interface_prerequisites, function in Type Information +
+
+
+G_TYPE_INVALID, macro in Type Information +
+
+
+G_TYPE_IO_CHANNEL, macro in Boxed Types +
+
+
+G_TYPE_IO_CONDITION, macro in Boxed Types +
+
+
+g_type_is_a, function in Type Information +
+
+
+G_TYPE_IS_ABSTRACT, macro in Type Information +
+
+
+G_TYPE_IS_CLASSED, macro in Type Information +
+
+
+G_TYPE_IS_DEEP_DERIVABLE, macro in Type Information +
+
+
+G_TYPE_IS_DERIVABLE, macro in Type Information +
+
+
+G_TYPE_IS_DERIVED, macro in Type Information +
+
+
+G_TYPE_IS_ENUM, macro in Enumeration and Flag Types +
+
+
+G_TYPE_IS_FLAGS, macro in Enumeration and Flag Types +
+
+
+G_TYPE_IS_FUNDAMENTAL, macro in Type Information +
+
+
+G_TYPE_IS_INSTANTIATABLE, macro in Type Information +
+
+
+G_TYPE_IS_INTERFACE, macro in Type Information +
+
+
+G_TYPE_IS_OBJECT, macro in The Base Object Type +
+
+
+G_TYPE_IS_PARAM, macro in GParamSpec +
+
+
+G_TYPE_IS_VALUE, macro in Generic values +
+
+
+G_TYPE_IS_VALUE_ABSTRACT, macro in Generic values +
+
+
+G_TYPE_IS_VALUE_TYPE, macro in Type Information +
+
+
+G_TYPE_KEY_FILE, macro in Boxed Types +
+
+
+G_TYPE_LONG, macro in Type Information +
+
+
+G_TYPE_MAIN_CONTEXT, macro in Boxed Types +
+
+
+G_TYPE_MAIN_LOOP, macro in Boxed Types +
+
+
+G_TYPE_MAKE_FUNDAMENTAL, macro in Type Information +
+
+
+G_TYPE_MAPPED_FILE, macro in Boxed Types +
+
+
+G_TYPE_MARKUP_PARSE_CONTEXT, macro in Boxed Types +
+
+
+G_TYPE_MATCH_INFO, macro in Boxed Types +
+
+
+g_type_module_add_interface, function in GTypeModule +
+
+
+g_type_module_register_enum, function in GTypeModule +
+
+
+g_type_module_register_flags, function in GTypeModule +
+
+
+g_type_module_register_type, function in GTypeModule +
+
+
+g_type_module_set_name, function in GTypeModule +
+
+
+g_type_module_unuse, function in GTypeModule +
+
+
+g_type_module_use, function in GTypeModule +
+
+
+g_type_name, function in Type Information +
+
+
+g_type_next_base, function in Type Information +
+
+
+G_TYPE_NONE, macro in Type Information +
+
+
+G_TYPE_OBJECT, macro in Type Information +
+
+
+G_TYPE_OPTION_GROUP, macro in Boxed Types +
+
+
+G_TYPE_PARAM, macro in Type Information +
+
+
+G_TYPE_PARAM_BOOLEAN, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_BOXED, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_CHAR, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_DOUBLE, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_ENUM, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_FLAGS, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_FLOAT, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_GTYPE, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_INT, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_INT64, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_LONG, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_OBJECT, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_OVERRIDE, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_PARAM, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_POINTER, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_STRING, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_UCHAR, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_UINT, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_UINT64, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_ULONG, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_UNICHAR, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_VALUE_ARRAY, macro in Standard Parameter and Value Types +
+
+
+G_TYPE_PARAM_VARIANT, macro in Standard Parameter and Value Types +
+
+
+g_type_parent, function in Type Information +
+
+
+g_type_plugin_complete_interface_info, function in GTypePlugin +
+
+
+g_type_plugin_complete_type_info, function in GTypePlugin +
+
+
+g_type_plugin_unuse, function in GTypePlugin +
+
+
+g_type_plugin_use, function in GTypePlugin +
+
+
+G_TYPE_POINTER, macro in Type Information +
+
+
+G_TYPE_POLLFD, macro in Boxed Types +
+
+
+G_TYPE_PTR_ARRAY, macro in Boxed Types +
+
+
+g_type_qname, function in Type Information +
+
+
+g_type_query, function in Type Information +
+
+
+G_TYPE_REGEX, macro in Boxed Types +
+
+
+g_type_register_dynamic, function in Type Information +
+
+
+g_type_register_fundamental, function in Type Information +
+
+
+g_type_register_static, function in Type Information +
+
+
+g_type_register_static_simple, function in Type Information +
+
+
+g_type_remove_class_cache_func, function in Type Information +
+
+
+g_type_remove_interface_check, function in Type Information +
+
+
+G_TYPE_RESERVED_BSE_FIRST, macro in Type Information +
+
+
+G_TYPE_RESERVED_BSE_LAST, macro in Type Information +
+
+
+G_TYPE_RESERVED_GLIB_FIRST, macro in Type Information +
+
+
+G_TYPE_RESERVED_GLIB_LAST, macro in Type Information +
+
+
+G_TYPE_RESERVED_USER_FIRST, macro in Type Information +
+
+
+g_type_set_qdata, function in Type Information +
+
+
+G_TYPE_SOURCE, macro in Boxed Types +
+
+
+G_TYPE_STRING, macro in Type Information +
+
+
+G_TYPE_STRV, macro in Boxed Types +
+
+
+G_TYPE_THREAD, macro in Boxed Types +
+
+
+G_TYPE_TIME_ZONE, macro in Boxed Types +
+
+
+G_TYPE_UCHAR, macro in Type Information +
+
+
+G_TYPE_UINT, macro in Type Information +
+
+
+G_TYPE_UINT64, macro in Type Information +
+
+
+G_TYPE_ULONG, macro in Type Information +
+
+
+G_TYPE_VALUE, macro in Generic values +
+
+
+G_TYPE_VALUE_ARRAY, macro in Generic values +
+
+
+g_type_value_table_peek, function in Type Information +
+
+
+G_TYPE_VARIANT, macro in Type Information +
+
+
+G_TYPE_VARIANT_BUILDER, macro in Boxed Types +
+
+
+G_TYPE_VARIANT_DICT, macro in Boxed Types +
+
+
+G_TYPE_VARIANT_TYPE, macro in Boxed Types +
+
+

V

+
+GVaClosureMarshal, user_function in Closures +
+
+
+GValue, struct in Generic values +
+
+
+GValueArray, struct in Value arrays +
+
+
+GValueTransform, user_function in Generic values +
+
+
+g_value_array_append, function in Value arrays +
+
+
+g_value_array_copy, function in Value arrays +
+
+
+g_value_array_free, function in Value arrays +
+
+
+g_value_array_get_nth, function in Value arrays +
+
+
+g_value_array_insert, function in Value arrays +
+
+
+g_value_array_new, function in Value arrays +
+
+
+g_value_array_prepend, function in Value arrays +
+
+
+g_value_array_remove, function in Value arrays +
+
+
+g_value_array_sort, function in Value arrays +
+
+
+g_value_array_sort_with_data, function in Value arrays +
+
+
+G_VALUE_COLLECT, macro in Varargs Value Collection +
+
+
+G_VALUE_COLLECT_FORMAT_MAX_LENGTH, macro in Varargs Value Collection +
+
+
+G_VALUE_COLLECT_INIT, macro in Varargs Value Collection +
+
+
+G_VALUE_COLLECT_SKIP, macro in Varargs Value Collection +
+
+
+g_value_copy, function in Generic values +
+
+
+g_value_dup_boxed, function in Standard Parameter and Value Types +
+
+
+g_value_dup_object, function in Standard Parameter and Value Types +
+
+
+g_value_dup_param, function in Standard Parameter and Value Types +
+
+
+g_value_dup_string, function in Standard Parameter and Value Types +
+
+
+g_value_dup_variant, function in Standard Parameter and Value Types +
+
+
+g_value_fits_pointer, function in Generic values +
+
+
+g_value_get_boolean, function in Standard Parameter and Value Types +
+
+
+g_value_get_boxed, function in Standard Parameter and Value Types +
+
+
+g_value_get_char, function in Standard Parameter and Value Types +
+
+
+g_value_get_double, function in Standard Parameter and Value Types +
+
+
+g_value_get_enum, function in Standard Parameter and Value Types +
+
+
+g_value_get_flags, function in Standard Parameter and Value Types +
+
+
+g_value_get_float, function in Standard Parameter and Value Types +
+
+
+g_value_get_gtype, function in Standard Parameter and Value Types +
+
+
+g_value_get_int, function in Standard Parameter and Value Types +
+
+
+g_value_get_int64, function in Standard Parameter and Value Types +
+
+
+g_value_get_long, function in Standard Parameter and Value Types +
+
+
+g_value_get_object, function in Standard Parameter and Value Types +
+
+
+g_value_get_param, function in Standard Parameter and Value Types +
+
+
+g_value_get_pointer, function in Standard Parameter and Value Types +
+
+
+g_value_get_schar, function in Standard Parameter and Value Types +
+
+
+g_value_get_string, function in Standard Parameter and Value Types +
+
+
+g_value_get_uchar, function in Standard Parameter and Value Types +
+
+
+g_value_get_uint, function in Standard Parameter and Value Types +
+
+
+g_value_get_uint64, function in Standard Parameter and Value Types +
+
+
+g_value_get_ulong, function in Standard Parameter and Value Types +
+
+
+g_value_get_variant, function in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS, macro in Generic values +
+
+
+G_VALUE_HOLDS_BOOLEAN, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_BOXED, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_CHAR, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_DOUBLE, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_ENUM, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_FLAGS, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_FLOAT, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_GTYPE, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_INT, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_INT64, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_LONG, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_OBJECT, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_PARAM, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_POINTER, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_STRING, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_UCHAR, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_UINT, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_UINT64, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_ULONG, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_HOLDS_VARIANT, macro in Standard Parameter and Value Types +
+
+
+G_VALUE_INIT, macro in Generic values +
+
+
+g_value_init, function in Generic values +
+
+
+g_value_init_from_instance, function in Generic values +
+
+
+G_VALUE_LCOPY, macro in Varargs Value Collection +
+
+
+g_value_peek_pointer, function in Generic values +
+
+
+g_value_register_transform_func, function in Generic values +
+
+
+g_value_reset, function in Generic values +
+
+
+g_value_set_boolean, function in Standard Parameter and Value Types +
+
+
+g_value_set_boxed, function in Standard Parameter and Value Types +
+
+
+g_value_set_boxed_take_ownership, function in Standard Parameter and Value Types +
+
+
+g_value_set_char, function in Standard Parameter and Value Types +
+
+
+g_value_set_double, function in Standard Parameter and Value Types +
+
+
+g_value_set_enum, function in Standard Parameter and Value Types +
+
+
+g_value_set_flags, function in Standard Parameter and Value Types +
+
+
+g_value_set_float, function in Standard Parameter and Value Types +
+
+
+g_value_set_gtype, function in Standard Parameter and Value Types +
+
+
+g_value_set_instance, function in Standard Parameter and Value Types +
+
+
+g_value_set_int, function in Standard Parameter and Value Types +
+
+
+g_value_set_int64, function in Standard Parameter and Value Types +
+
+
+g_value_set_long, function in Standard Parameter and Value Types +
+
+
+g_value_set_object, function in Standard Parameter and Value Types +
+
+
+g_value_set_object_take_ownership, function in Standard Parameter and Value Types +
+
+
+g_value_set_param, function in Standard Parameter and Value Types +
+
+
+g_value_set_param_take_ownership, function in Standard Parameter and Value Types +
+
+
+g_value_set_pointer, function in Standard Parameter and Value Types +
+
+
+g_value_set_schar, function in Standard Parameter and Value Types +
+
+
+g_value_set_static_boxed, function in Standard Parameter and Value Types +
+
+
+g_value_set_static_string, function in Standard Parameter and Value Types +
+
+
+g_value_set_string, function in Standard Parameter and Value Types +
+
+
+g_value_set_string_take_ownership, function in Standard Parameter and Value Types +
+
+
+g_value_set_uchar, function in Standard Parameter and Value Types +
+
+
+g_value_set_uint, function in Standard Parameter and Value Types +
+
+
+g_value_set_uint64, function in Standard Parameter and Value Types +
+
+
+g_value_set_ulong, function in Standard Parameter and Value Types +
+
+
+g_value_set_variant, function in Standard Parameter and Value Types +
+
+
+g_value_take_boxed, function in Standard Parameter and Value Types +
+
+
+g_value_take_object, function in Standard Parameter and Value Types +
+
+
+g_value_take_param, function in Standard Parameter and Value Types +
+
+
+g_value_take_string, function in Standard Parameter and Value Types +
+
+
+g_value_take_variant, function in Standard Parameter and Value Types +
+
+
+g_value_transform, function in Generic values +
+
+
+G_VALUE_TYPE, macro in Generic values +
+
+
+g_value_type_compatible, function in Generic values +
+
+
+G_VALUE_TYPE_NAME, macro in Generic values +
+
+
+g_value_type_transformable, function in Generic values +
+
+
+g_value_unset, function in Generic values +
+
+

W

+
+GWeakNotify, user_function in The Base Object Type +
+
+
+GWeakRef, struct in The Base Object Type +
+
+
+g_weak_ref_clear, function in The Base Object Type +
+
+
+g_weak_ref_get, function in The Base Object Type +
+
+
+g_weak_ref_init, function in The Base Object Type +
+
+
+g_weak_ref_set, function in The Base Object Type +
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/ch01s02.html b/docs/reference/gobject/html/ch01s02.html new file mode 100644 index 0000000..c6784ab --- /dev/null +++ b/docs/reference/gobject/html/ch01s02.html @@ -0,0 +1,161 @@ + + + + +Exporting a C API: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Exporting a C API

+

+ C APIs are defined by a set of functions and global variables which are usually exported from a + binary. C functions have an arbitrary number of arguments and one return value. Each function is thus + uniquely identified by the function name and the set of C types which describe the function arguments + and return value. The global variables exported by the API are similarly identified by their name and + their type. +

+

+ A C API is thus merely defined by a set of names to which a set of types are associated. If you know the + function calling convention and the mapping of the C types to the machine types used by the platform you + are on, you can resolve the name of each function to find where the code associated to this function + is located in memory, and then construct a valid argument list for the function. Finally, all you have to + do is trigger a call to the target C function with the argument list. +

+

+ For the sake of discussion, here is a sample C function and the associated 32 bit x86 + assembly code generated by GCC on a Linux computer: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
static void
+function_foo (int foo)
+{
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+	function_foo (10);
+
+	return 0;
+}
+
+push   $0xa
+call   0x80482f4 <function_foo>
+
+ +

+ The assembly code shown above is pretty straightforward: the first instruction pushes + the hexadecimal value 0xa (decimal value 10) as a 32-bit integer on the stack and calls + function_foo. As you can see, C function calls are implemented by + GCC as native function calls (this is probably the fastest implementation possible). +

+

+ Now, let's say we want to call the C function function_foo from + a Python program. To do this, the Python interpreter needs to: +

+
    +
  • Find where the function is located. This probably means finding the binary generated by the C compiler + which exports this function.

  • +
  • Load the code of the function in executable memory.

  • +
  • Convert the Python parameters to C-compatible parameters before calling + the function.

  • +
  • Call the function with the right calling convention.

  • +
  • Convert the return values of the C function to Python-compatible + variables to return them to the Python code.

  • +
+

+

+

+ The process described above is pretty complex and there are a lot of ways to make it entirely automatic + and transparent to C and Python programmers: +

+
    +
  • The first solution is to write by hand a lot of glue code, once for each function exported or imported, + which does the Python-to-C parameter conversion and the C-to-Python return value conversion. This glue code is then + linked with the interpreter which allows Python programs to call Python functions which delegate work to + C functions.

  • +
  • Another, nicer solution is to automatically generate the glue code, once for each function exported or + imported, with a special compiler which + reads the original function signature.

  • +
  • The solution used by GLib is to use the GType library which holds at runtime a description of + all the objects manipulated by the programmer. This so-called dynamic type + [1] + library is then used by special generic glue code to automatically convert function parameters and + function calling conventions between different runtime domains.

  • +
+

+ The greatest advantage of the solution implemented by GType is that the glue code sitting at the runtime domain + boundaries is written once: the figure below states this more clearly. +

+
+

Figure 1. 

+
+
+


+ + Currently, there exist at least Python and Perl generic glue code which makes it possible to use + C objects written with GType directly in Python or Perl, with a minimum amount of work: there + is no need to generate huge amounts of glue code either automatically or by hand. +

+

+ Although that goal was arguably laudable, its pursuit has had a major influence on + the whole GType/GObject library. C programmers are likely to be puzzled at the complexity + of the features exposed in the following chapters if they forget that the GType/GObject library + was not only designed to offer OO-like features to C programmers but also transparent + cross-language interoperability. +

+
+

+

[1] + There are numerous different implementations of dynamic type systems: all C++ + compilers have one, Java and .NET have one too. A dynamic type system allows you + to get information about every instantiated object at runtime. It can be implemented + by a process-specific database: every new object created registers the characteristics + of its associated type in the type system. It can also be implemented by introspection + interfaces. The common point between all these different type systems and implementations + is that they all allow you to query for object metadata at runtime. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/chapter-gobject.html b/docs/reference/gobject/html/chapter-gobject.html new file mode 100644 index 0000000..176a5ef --- /dev/null +++ b/docs/reference/gobject/html/chapter-gobject.html @@ -0,0 +1,321 @@ + + + + +The GObject base class: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+The GObject base class

+ +

+ The previous chapter discussed the details of GLib's Dynamic Type System. + The GObject library also contains an implementation for a base fundamental + type named GObject. +

+

+ GObject is a fundamental classed instantiable type. It implements: +

+
    +
  • Memory management with reference counting

  • +
  • Construction/Destruction of instances

  • +
  • Generic per-object properties with set/get function pairs

  • +
  • Easy use of signals

  • +
+

+ All the GNOME libraries which use the GLib type system (like GTK+ and GStreamer) + inherit from GObject which is why it is important to understand + the details of how it works. +

+
+

+Object instantiation

+

+ The g_object_new + family of functions can be used to instantiate any GType which inherits + from the GObject base type. All these functions make sure the class and + instance structures have been correctly initialized by GLib's type system + and then invoke at one point or another the constructor class method + which is used to: +

+
    +
  • + Allocate and clear memory through g_type_create_instance, +

  • +
  • + Initialize the object's instance with the construction properties. +

  • +
+

+ Although one can expect all class and instance members (except the fields + pointing to the parents) to be set to zero, some consider it good practice + to explicitly set them. +

+

+ Once all construction operations have been completed and constructor + properties set, the constructed class method is called. +

+

+ Objects which inherit from GObject are allowed to override this + constructed class method. + The example below shows how ViewerFile overrides the parent's construction process: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
#define VIEWER_TYPE_FILE viewer_file_get_type ()
+G_DECLARE_FINAL_TYPE (ViewerFile, viewer_file, VIEWER, FILE, GObject)
+
+struct _ViewerFile
+{
+  GObject parent_instance;
+
+  /* instance members */
+};
+
+/* will create viewer_file_get_type and set viewer_file_parent_class */
+G_DEFINE_TYPE (ViewerFile, viewer_file, G_TYPE_OBJECT)
+
+static void
+viewer_file_constructed (GObject *obj)
+{
+  /* update the object state depending on constructor properties */
+
+  /* Always chain up to the parent constructed function to complete object
+   * initialisation. */
+  G_OBJECT_CLASS (viewer_file_parent_class)->constructed (obj);
+}
+
+static void
+viewer_file_class_init (ViewerFileClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->constructed = viewer_file_constructed;
+}
+
+static void
+viewer_file_init (ViewerFile *self)
+{
+  /* initialize the object */
+}
+
+ +

+ If the user instantiates an object ViewerFile with: +

+
+ + + + + + + +
1
ViewerFile *file = g_object_new (VIEWER_TYPE_FILE, NULL);
+
+ +

+ If this is the first instantiation of such an object, the + viewer_file_class_init function will be invoked + after any viewer_file_base_class_init function. + This will make sure the class structure of this new object is + correctly initialized. Here, viewer_file_class_init + is expected to override the object's class methods and setup the + class' own methods. In the example above, the constructor method is + the only overridden method: it is set to + viewer_file_constructor. +

+

+ Once g_object_new has obtained a reference to an initialized + class structure, it invokes its constructor method to create an instance of the new + object, if the constructor has been overridden in viewer_file_class_init. + Overridden constructors must chain up to their parent’s constructor. In + order to find the parent class and chain up to the parent class + constructor, we can use the viewer_file_parent_class + pointer that has been set up for us by the + G_DEFINE_TYPE + macro. +

+

+ Finally, at one point or another, g_object_constructor is invoked + by the last constructor in the chain. This function allocates the object's instance buffer + through g_type_create_instance + which means that the instance_init function is invoked at this point if one + was registered. After instance_init returns, the object is fully initialized and should be + ready to have its methods called by the user. When + g_type_create_instance + returns, g_object_constructor sets the construction properties + (i.e. the properties which were given to g_object_new) and returns + to the user's constructor. +

+

+ The process described above might seem a bit complicated, but it can be + summarized easily by the table below which lists the functions invoked + by g_object_new + and their order of invocation: +

+

+

+
+

Table 4. g_object_new

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Invocation timeFunction invokedFunction's parametersRemark
First call to g_object_new for target typetarget type's base_init functionOn the inheritance tree of classes from fundamental type to target type. + base_init is invoked once for each class structure.Never used in practice. Unlikely you will need it.
target type's class_init functionOn target type's class structure + Here, you should make sure to initialize or override class methods (that is, + assign to each class' method its function pointer) and create the signals and + the properties associated to your object. +
interface's base_init functionOn interface's vtable 
interface's interface_init functionOn interface's vtable 
Each call to g_object_new for target typetarget type's class constructor method: GObjectClass->constructor +On object's instance + If you need to handle construct properties in a custom way, or implement a singleton class, override the constructor + method and make sure to chain up to the object's + parent class before doing your own initialization. + In doubt, do not override the constructor method. +
type's instance_init functionOn the inheritance tree of classes from fundamental type to target type. + the instance_init provided for each type is invoked once for each instance + structure. + Provide an instance_init function to initialize your object before its construction + properties are set. This is the preferred way to initialize a GObject instance. + This function is equivalent to C++ constructors. +
target type's class constructed method: GObjectClass->constructed +On object's instance + If you need to perform object initialization steps after all construct properties have been set. + This is the final step in the object initialization process, and is only called if the constructor + method returned a new object instance (rather than, for example, an existing singleton). +
+
+


+

+

+ Readers should feel concerned about one little twist in the order in + which functions are invoked: while, technically, the class' constructor + method is called before the GType's instance_init + function (since g_type_create_instance which calls instance_init is called by + g_object_constructor which is the top-level class + constructor method and to which users are expected to chain to), the + user's code which runs in a user-provided constructor will always + run after GType's instance_init function since the + user-provided constructor must (you've been warned) + chain up before doing anything useful. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/chapter-gtype.html b/docs/reference/gobject/html/chapter-gtype.html new file mode 100644 index 0000000..aee027e --- /dev/null +++ b/docs/reference/gobject/html/chapter-gtype.html @@ -0,0 +1,316 @@ + + + + +The GLib Dynamic Type System: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+The GLib Dynamic Type System

+ +

+ A type, as manipulated by the GLib type system, is much more generic than what + is usually understood as an Object type. It is best explained by looking at the + structure and the functions used to register new types in the type system. +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
typedef struct _GTypeInfo               GTypeInfo;
+struct _GTypeInfo
+{
+  /* interface types, classed types, instantiated types */
+  guint16                class_size;
+  
+  GBaseInitFunc          base_init;
+  GBaseFinalizeFunc      base_finalize;
+  
+  /* 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;
+};
+GType g_type_register_static (GType             parent_type,
+                              const gchar      *type_name,
+                              const GTypeInfo  *info,
+                              GTypeFlags        flags);
+GType g_type_register_fundamental (GType                       type_id,
+                                   const gchar                *type_name,
+                                   const GTypeInfo            *info,
+                                   const GTypeFundamentalInfo *finfo,
+                                   GTypeFlags                  flags);
+
+ +

+

+

+ g_type_register_static, + g_type_register_dynamic and + g_type_register_fundamental + are the C functions, defined in + gtype.h and implemented in gtype.c + which you should use to register a new GType in the program's type system. + It is not likely you will ever need to use + g_type_register_fundamental + but in case you want to, the last chapter explains how to create + new fundamental types. +

+

+ Fundamental types are top-level types which do not derive from any other type + while other non-fundamental types derive from other types. + Upon initialization, the type system not only initializes its + internal data structures but it also registers a number of core + types: some of these are fundamental types. Others are types derived from these + fundamental types. +

+

+ Fundamental and non-fundamental types are defined by: +

+
    +
  • + class size: the class_size field in GTypeInfo. +

  • +
  • + class initialization functions (C++ constructor): the base_init and + class_init fields in GTypeInfo. +

  • +
  • + class destruction functions (C++ destructor): the base_finalize and + class_finalize fields in GTypeInfo. +

  • +
  • + instance size (C++ parameter to new): the instance_size field in + GTypeInfo. +

  • +
  • + instantiation policy (C++ type of new operator): the n_preallocs + field in GTypeInfo. +

  • +
  • + copy functions (C++ copy operators): the value_table field in + GTypeInfo. +

  • +
  • + type characteristic flags: GTypeFlags. +

  • +
+

+ Fundamental types are also defined by a set of GTypeFundamentalFlags + which are stored in a GTypeFundamentalInfo. + Non-fundamental types are furthermore defined by the type of their parent which is + passed as the parent_type parameter to g_type_register_static + and g_type_register_dynamic. +

+
+

+Copy functions

+

+ The major common point between all GLib types (fundamental and + non-fundamental, classed and non-classed, instantiable and non-instantiable) is that + they can all be manipulated through a single API to copy/assign them. +

+

+ The GValue structure is used as an abstract container for all of these + types. Its simplistic API (defined in gobject/gvalue.h) can be + used to invoke the value_table functions registered + during type registration: for example g_value_copy copies the + content of a GValue to another GValue. This is similar + to a C++ assignment which invokes the C++ copy operator to modify the default + bit-by-bit copy semantics of C++/C structures/classes. +

+

+ The following code shows how you can copy around a 64 bit integer, as well as a GObject + instance pointer: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
static void test_int (void)
+{
+  GValue a_value = G_VALUE_INIT;
+  GValue b_value = G_VALUE_INIT;
+  guint64 a, b;
+
+  a = 0xdeadbeef;
+
+  g_value_init (&a_value, G_TYPE_UINT64);
+  g_value_set_uint64 (&a_value, a);
+
+  g_value_init (&b_value, G_TYPE_UINT64);
+  g_value_copy (&a_value, &b_value);
+
+  b = g_value_get_uint64 (&b_value);
+
+  if (a == b) {
+    g_print ("Yay !! 10 lines of code to copy around a uint64.\n");
+  } else {
+    g_print ("Are you sure this is not a Z80 ?\n");
+  }
+}
+
+static void test_object (void)
+{
+  GObject *obj;
+  GValue obj_vala = G_VALUE_INIT;
+  GValue obj_valb = G_VALUE_INIT;
+  obj = g_object_new (VIEWER_TYPE_FILE, NULL);
+
+  g_value_init (&obj_vala, VIEWER_TYPE_FILE);
+  g_value_set_object (&obj_vala, obj);
+
+  g_value_init (&obj_valb, G_TYPE_OBJECT);
+
+  /* g_value_copy's semantics for G_TYPE_OBJECT types is to copy the reference.
+   * This function thus calls g_object_ref.
+   * It is interesting to note that the assignment works here because
+   * VIEWER_TYPE_FILE is a G_TYPE_OBJECT.
+   */
+  g_value_copy (&obj_vala, &obj_valb);
+
+  g_object_unref (G_OBJECT (obj));
+  g_object_unref (G_OBJECT (obj));
+}
+
+ +

+ The important point about the above code is that the exact semantics of the copy calls + is undefined since they depend on the implementation of the copy function. Certain + copy functions might decide to allocate a new chunk of memory and then to copy the + data from the source to the destination. Others might want to simply increment + the reference count of the instance and copy the reference to the new GValue. +

+

+ The value table used to specify these assignment functions is + documented in + GTypeValueTable. +

+

+ Interestingly, it is also very unlikely + you will ever need to specify a value_table during type registration + because these value_tables are inherited from the parent types for + non-fundamental types. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/chapter-intro.html b/docs/reference/gobject/html/chapter-intro.html new file mode 100644 index 0000000..8859233 --- /dev/null +++ b/docs/reference/gobject/html/chapter-intro.html @@ -0,0 +1,100 @@ + + + + +Background: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Background

+ +

+ GObject, and its lower-level type system, GType, are used by GTK+ and most GNOME libraries to + provide: +

+
    +
  • object-oriented C-based APIs and

  • +
  • automatic transparent API bindings to other compiled + or interpreted languages.

  • +
+

+

+

+ A lot of programmers are used to working with compiled-only or dynamically interpreted-only + languages and do not understand the challenges associated with cross-language interoperability. + This introduction tries to provide an insight into these challenges and briefly describes + the solution chosen by GLib. +

+

+ The following chapters go into greater detail into how GType and GObject work and + how you can use them as a C programmer. It is useful to keep in mind that + allowing access to C objects from other interpreted languages was one of the major design + goals: this can often explain the sometimes rather convoluted APIs and features present + in this library. +

+
+

+Data types and programming

+

+ One could say + that a programming language is merely a way to create data types and manipulate them. Most languages + provide a number of language-native types and a few primitives to create more complex types based + on these primitive types. +

+

+ In C, the language provides types such as char, long, + pointer. During compilation of C code, the compiler maps these + language types to the compiler's target architecture machine types. If you are using a C interpreter + (assuming one exists), the interpreter (the program which interprets + the source code and executes it) maps the language types to the machine types of the target machine at + runtime, during the program execution (or just before execution if it uses a Just In Time compiler engine). +

+

+ Perl and Python are interpreted languages which do not really provide type definitions similar + to those used by C. Perl and Python programmers manipulate variables and the type of the variables + is decided only upon the first assignment or upon the first use which forces a type on the variable. + The interpreter also often provides a lot of automatic conversions from one type to the other. For example, + in Perl, a variable which holds an integer can be automatically converted to a string given the + required context: +

+
+ + + + + + + +
1
+2
my $tmp = 10;
+print "this is an integer converted to a string:" . $tmp . "\n";
+
+ +

+ Of course, it is also often possible to explicitly specify conversions when the default conversions provided + by the language are not intuitive. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/chapter-signal.html b/docs/reference/gobject/html/chapter-signal.html new file mode 100644 index 0000000..5e2b636 --- /dev/null +++ b/docs/reference/gobject/html/chapter-signal.html @@ -0,0 +1,253 @@ + + + + +The GObject messaging system: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+The GObject messaging system

+ +
+

+Closures

+

+ Closures are central to the concept of asynchronous signal delivery + which is widely used throughout GTK+ and GNOME applications. A closure is an + abstraction, a generic representation of a callback. It is a small structure + which contains three objects: +

+
    +
  • +

    a function pointer (the callback itself) whose prototype looks like: +

    +
    + + + + + + + +
    1
    return_type function_callback (… , gpointer user_data);
    +
    + +

    +

    +
  • +
  • + the user_data pointer which is passed to the callback upon invocation of the closure +

  • +
  • + a function pointer which represents the destructor of the closure: whenever the + closure's refcount reaches zero, this function will be called before the closure + structure is freed. +

  • +
+

+

+

+ The GClosure structure represents the common functionality of all + closure implementations: there exists a different closure implementation for + each separate runtime which wants to use the GObject type system. + [4] + The GObject library provides a simple GCClosure type which + is a specific implementation of closures to be used with C/C++ callbacks. +

+

+ A GClosure provides simple services: +

+
+

+

+
+

+C Closures

+

+ If you are using C or C++ + to connect a callback to a given event, you will either use simple GCClosures + which have a pretty minimal API or the even simpler g_signal_connect + functions (which will be presented a bit later). +

+

+ g_cclosure_new will create a new closure which can invoke the + user-provided callback_func with the user-provided + user_data as its last parameter. When the closure + is finalized (second stage of the destruction process), it will invoke + the destroy_data function if the user has + supplied one. +

+

+ g_cclosure_new_swap will create a new closure which can invoke the + user-provided callback_func with the + user-provided user_data as its first parameter + (instead of being the + last parameter as with g_cclosure_new). When the closure + is finalized (second stage of the destruction process), it will invoke + the destroy_data function if the user has + supplied one. +

+
+
+

+Non-C closures (for the fearless)

+

+ As was explained above, closures hide the details of callback invocation. In C, + callback invocation is just like function invocation: it is a matter of creating + the correct stack frame for the called function and executing a call + assembly instruction. +

+

+ C closure marshallers transform the array of GValues which represent + the parameters to the target function into a C-style function parameter list, invoke + the user-supplied C function with this new parameter list, get the return value of the + function, transform it into a GValue and return this GValue to the marshaller caller. +

+

+ A generic C closure marshaller is available as + g_cclosure_marshal_generic + which implements marshalling for all function types using libffi. Custom + marshallers for different types are not needed apart from performance + critical code where the libffi-based marshaller may be too slow. +

+

+ An example of a custom marshaller is given below, illustrating how + GValues can be converted to a C function call. The + marshaller is for a C function which takes an integer as its first + parameter and returns void. +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
g_cclosure_marshal_VOID__INT (GClosure     *closure,
+                              GValue       *return_value,
+                              guint         n_param_values,
+                              const GValue *param_values,
+                              gpointer      invocation_hint,
+                              gpointer      marshal_data)
+{
+  typedef void (*GMarshalFunc_VOID__INT) (gpointer     data1,
+                                          gint         arg_1,
+                                          gpointer     data2);
+  register GMarshalFunc_VOID__INT callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+
+  g_return_if_fail (n_param_values == 2);
+
+  data1 = g_value_peek_pointer (param_values + 0);
+  data2 = closure->data;
+
+  callback = (GMarshalFunc_VOID__INT) (marshal_data ? marshal_data : cc->callback);
+
+  callback (data1,
+            g_marshal_value_peek_int (param_values + 1),
+            data2);
+}
+
+ +

+

+

+ There exist other kinds of marshallers, for example there is a generic + Python marshaller which is used by all Python closures (a Python closure + is used to invoke a callback written in Python). This Python marshaller + transforms the input GValue list representing the function parameters + into a Python tuple which is the equivalent structure in Python. +

+
+
+
+

+

[4] + In practice, closures sit at the boundary of language runtimes: if you are + writing Python code and one of your Python callbacks receives a signal from + a GTK+ widget, the C code in GTK+ needs to execute your Python + code. The closure invoked by the GTK+ object invokes the Python callback: + it behaves as a normal C object for GTK+ and as a normal Python object for + Python code. +

+

[5] + Closures are reference counted and notify listeners of their destruction in a two-stage + process: the invalidation notifiers are invoked before the finalization notifiers. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/glib-genmarshal.html b/docs/reference/gobject/html/glib-genmarshal.html new file mode 100644 index 0000000..7354674 --- /dev/null +++ b/docs/reference/gobject/html/glib-genmarshal.html @@ -0,0 +1,418 @@ + + + + +glib-genmarshal: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

glib-genmarshal

+

glib-genmarshal — C code marshaller generation utility for GLib closures

+
+
+

Synopsis

+

glib-genmarshal [OPTION...] [FILE...]

+
+
+

Description

+

glib-genmarshal is a small utility that generates C code +marshallers for callback functions of the GClosure mechanism in the GObject +sublibrary of GLib. The marshaller functions have a standard signature, +they get passed in the invoking closure, an array of value structures holding +the callback function parameters and a value structure for the return value +of the callback. The marshaller is then responsible to call the respective C +code function of the closure with all the parameters on the stack and to +collect its return value. +

+

glib-genmarshal takes a list of marshallers to generate as +input. The marshaller list is either read from standard input or from files +passed as additional arguments on the command line. +

+
+

Marshaller list format

+

+The marshaller lists are processed line by line, a line can contain a +comment in the form of +

+
+ + + + + + + +
1
# this is a comment
+
+ +

+or a marshaller specification of the form +

+
+RTYPE:PTYPE
+RTYPE:PTYPE,PTYPE
+RTYPE:PTYPE,PTYPE,PTYPE
+
+

+(up to 16 PTYPEs may be present). +

+

+The RTYPE part specifies the callback's return +type and the PTYPEs right to the colon specify +the callback's parameter list, except for the first and the last arguments +which are always pointers. +

+
+
+
+

Parameter types

+

+Currently, the following types are supported: +

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

VOID

+indicates no return type, or no extra parameters. +If VOID is used as the parameter list, no +additional parameters may be present. +

BOOLEAN

+for boolean types (gboolean) +

CHAR

+for signed char types (gchar) +

UCHAR

+for unsigned char types (guchar) +

INT

+for signed integer types (gint) +

UINT

+for unsigned integer types (guint) +

LONG

+for signed long integer types (glong) +

ULONG

+for unsigned long integer types (gulong) +

INT64

+for signed 64bit integer types (gint64) +

UINT64

+for unsigned 64bit integer types (guint64) +

ENUM

+for enumeration types (gint) +

FLAGS

+for flag enumeration types (guint) +

FLOAT

+for single-precision float types (gfloat) +

DOUBLE

+for double-precision float types (gdouble) +

STRING

+for string types (gchar*) +

BOXED

+for boxed (anonymous but reference counted) types (GBoxed*) +

PARAM

+for GParamSpec or derived types (GParamSpec*) +

POINTER

+for anonymous pointer types (gpointer) +

OBJECT

+for GObject or derived types (GObject*) +

VARIANT

+for GVariant types (GVariant*) +

NONE

+deprecated alias for VOID +

BOOL

+deprecated alias for BOOLEAN +

+

+

+
+
+
+

Options

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

--header

+Generate header file contents of the marshallers. +

--body

+Generate C code file contents of the marshallers. +

--prefix=PREFIX

+Specify marshaller prefix. The default prefix is `g_cclosure_marshal'. +

--skip-source

+Skip source location remarks in generated comments. +

--stdinc

+Use the standard marshallers of the GObject library, and include +gmarshal.h in generated header files. +

--nostdinc

+Do not use the standard marshallers of the GObject library, and skip +gmarshal.h include directive in generated header files. +

--internal

+Mark generated functions as internal, using G_GNUC_INTERNAL. +

--valist-marshallers

+Generate valist marshallers, for use with g_signal_set_va_marshaller(). +

-v, --version

+Print version information. +

--g-fatal-warnings

+Make warnings fatal, that is, exit immediately once a warning occurs. +

-h, --help

+Print brief help and exit. +

-v, --version

+Print version and exit. +

+
+
+

Example

+

+To generate marshallers for the following callback functions: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
void   foo (gpointer data1,
+            gpointer data2);
+void   bar (gpointer data1,
+            gint     param1,
+            gpointer data2);
+gfloat baz (gpointer data1,
+            gboolean param1,
+            guchar   param2,
+            gpointer data2);
+
+ +

+The marshaller.list file has to look like this: +

+
+VOID:VOID
+VOID:INT
+FLOAT:BOOLEAN,UCHAR
+
+

+and you call glib-genmarshal like this: +

+
+glib-genmarshal --header marshaller.list > marshaller.h
+glib-genmarshal --body marshaller.list > marshaller.c
+
+

+The generated marshallers have the arguments encoded in their function name. +For this particular list, they are +

+
+g_cclosure_user_marshal_VOID__VOID(),
+g_cclosure_user_marshal_VOID__INT(),
+g_cclosure_user_marshal_FLOAT__BOOLEAN_UCHAR().
+
+

+They can be used directly for GClosures or be passed in as the +GSignalCMarshaller c_marshaller; argument upon creation of signals: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
GClosure *cc_foo, *cc_bar, *cc_baz;
+
+cc_foo = g_cclosure_new (NULL, foo, NULL);
+g_closure_set_marshal (cc_foo, g_cclosure_user_marshal_VOID__VOID);
+cc_bar = g_cclosure_new (NULL, bar, NULL);
+g_closure_set_marshal (cc_bar, g_cclosure_user_marshal_VOID__INT);
+cc_baz = g_cclosure_new (NULL, baz, NULL);
+g_closure_set_marshal (cc_baz, g_cclosure_user_marshal_FLOAT__BOOLEAN_UCHAR);
+
+ +
+
+

See also

+

+glib-mkenums(1) +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/glib-mkenums.html b/docs/reference/gobject/html/glib-mkenums.html new file mode 100644 index 0000000..6bac986 --- /dev/null +++ b/docs/reference/gobject/html/glib-mkenums.html @@ -0,0 +1,375 @@ + + + + +glib-mkenums: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

glib-mkenums

+

glib-mkenums — C language enum description generation utility

+
+
+

Synopsis

+

glib-mkenums [OPTION...] [FILE...]

+
+
+

Description

+

glib-mkenums is a small perl-script utility that +parses C code to extract enum definitions and produces enum descriptions based +on text templates specified by the user. Most frequently this script is used to +produce C code that contains enum values as strings so programs can provide +value name strings for introspection. +

+

glib-mkenums takes a list of valid C code files as +input. The options specified control the text that is output, certain +substitutions are performed on the text templates for keywords enclosed +in @ characters. +

+
+

Production text substitutions

+

+Certain keywords enclosed in @ characters will be substituted in the +emitted text. For the substitution examples of the keywords below, +the following example enum definition is assumed: +

+
+ + + + + + + +
1
+2
+3
+4
+5
typedef enum
+{
+  PREFIX_THE_XVALUE    = 1 << 3,
+  PREFIX_ANOTHER_VALUE = 1 << 4
+} PrefixTheXEnum;
+
+ +

+

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

@EnumName@

+The name of the enum currently being processed, enum names are assumed to be +properly namespaced and to use mixed capitalization to separate +words (e.g. PrefixTheXEnum). +

@enum_name@

+The enum name with words lowercase and word-separated by underscores +(e.g. prefix_the_xenum). +

@ENUMNAME@

+The enum name with words uppercase and word-separated by underscores +(e.g. PREFIX_THE_XENUM). +

@ENUMSHORT@

+The enum name with words uppercase and word-separated by underscores, +prefix stripped (e.g. THE_XENUM). +

@ENUMPREFIX@

+The prefix of the enum name (e.g. PREFIX). +

@VALUENAME@

+The enum value name currently being processed with words uppercase and +word-separated by underscores, +this is the assumed literal notation of enum values in the C sources +(e.g. PREFIX_THE_XVALUE). +

@valuenick@

+A nick name for the enum value currently being processed, this is usually +generated by stripping common prefix words of all the enum values of the +current enum, the words are lowercase and underscores are substituted by a +minus (e.g. the-xvalue). +

@valuenum@

+The integer value for the enum value currently being processed. This is +calculated by using perl to attempt to evaluate the +expression as it appears in the C source code. If evaluation fails then +glib-mkenums will exit with an error status, but this +only happens if @valuenum@ appears in your value +production template. (Since: 2.26) +

@type@

+This is substituted either by "enum" or "flags", depending on whether the +enum value definitions contained bit-shift operators or not (e.g. flags). +

@Type@

+The same as @type@ with the first letter capitalized (e.g. Flags). +

@TYPE@

+The same as @type@ with all letters uppercased (e.g. FLAGS). +

@filename@

+The name of the input file currently being processed (e.g. foo.h). +

@basename@

+The base name of the input file currently being processed (e.g. foo.h). (Since: 2.22) +

+

+

+
+
+
+

Trigraph extensions

+

+Some C comments are treated specially in the parsed enum definitions, +such comments start out with the trigraph sequence /*< +and end with the trigraph sequence >*/. +Per enum definition, the options "skip" and "flags" can be specified, to +indicate this enum definition to be skipped, or for it to be treated as +a flags definition, or to specify the common prefix to be stripped from +all values to generate value nicknames, respectively. The "underscore_name" +option can be used to specify the word separation used in the *_get_type() +function. For instance, /*< underscore_name=gnome_vfs_uri_hide_options >*/. +

+

+Per value definition, the options "skip" and "nick" are supported. +The former causes the value to be skipped, and the latter can be used to +specify the otherwise auto-generated nickname. +Examples: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
typedef enum /*< skip >*/
+{
+  PREFIX_FOO
+} PrefixThisEnumWillBeSkipped;
+typedef enum /*< flags,prefix=PREFIX >*/
+{
+  PREFIX_THE_ZEROTH_VALUE,	/*< skip >*/
+  PREFIX_THE_FIRST_VALUE,
+  PREFIX_THE_SECOND_VALUE,
+  PREFIX_THE_THIRD_VALUE,	/*< nick=the-last-value >*/
+} PrefixTheFlagsEnum;
+
+ +

+

+
+
+
+

Options

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

--fhead TEXT

+Put out TEXT prior to processing input files. +

--fprod TEXT

+Put out TEXT everytime a new input file +is being processed. +

--ftail TEXT

+Put out TEXT after all input files have been +processed. +

--eprod TEXT

+Put out TEXT everytime an enum is encountered +in the input files. +

--vhead TEXT

+Put out TEXT before iterating over the set of +values of an enum. +

--vprod TEXT

+Put out TEXT for every value of an enum. +

--vtail TEXT

+Put out TEXT after iterating over all values +of an enum. +

--comments TEXT

+Template for auto-generated comments, the default (for C code generations) is +"/* @comment@ */". +

--template FILE

+

+Read templates from the given file. The templates are enclosed in +specially-formatted C comments +

+
+ + + + + + + +
1
+2
/*** BEGIN section ***/
+/*** END section ***/
+
+ +

+where section may be file-header, +file-production, file-tail, +enumeration-production, value-header, +value-production, value-tail or +comment. +

+

--identifier-prefix PREFIX

+Indicates what portion of the enum name should be intepreted as the +prefix (eg, the "Gtk" in +"GtkDirectionType"). Normally this will be figured +out automatically, but you may need to override the default if your +namespace is capitalized oddly. +

--symbol-prefix PREFIX

+Indicates what prefix should be used to correspond to the identifier +prefix in related C function names (eg, the "gtk" +in "gtk_direction_type_get_type". Equivalently, +this is the lowercase version of the prefix component of the enum +value names (eg, the "GTK" in +"GTK_DIR_UP". The default value is the identifier +prefix, converted to lowercase. +

--help

+Print brief help and exit. +

--version

+Print version and exit. +

+
+
+

See also

+

+glib-genmarshal(1) +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/glue.png b/docs/reference/gobject/html/glue.png new file mode 100644 index 0000000000000000000000000000000000000000..f5f3aab2fa34fa43b3d08fc5ac1829aa9f5e5bd3 GIT binary patch literal 12722 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 literal 0 HcmV?d00001 diff --git a/docs/reference/gobject/html/gobject-Boxed-Types.html b/docs/reference/gobject/html/gobject-Boxed-Types.html new file mode 100644 index 0000000..1c4c22a --- /dev/null +++ b/docs/reference/gobject/html/gobject-Boxed-Types.html @@ -0,0 +1,680 @@ + + + + +Boxed Types: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Boxed Types

+

Boxed Types — A mechanism to wrap opaque C structures registered + by the type system

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gpointer + +(*GBoxedCopyFunc) () +
+void + +(*GBoxedFreeFunc) () +
+gpointer + +g_boxed_copy () +
+void + +g_boxed_free () +
+GType + +g_boxed_type_register_static () +
+GType + +g_pointer_type_register_static () +
#defineG_TYPE_HASH_TABLE
#defineG_TYPE_DATE
#defineG_TYPE_GSTRING
#defineG_TYPE_STRV
#defineG_TYPE_REGEX
#defineG_TYPE_MATCH_INFO
#defineG_TYPE_ARRAY
#defineG_TYPE_BYTE_ARRAY
#defineG_TYPE_PTR_ARRAY
#defineG_TYPE_BYTES
#defineG_TYPE_VARIANT_TYPE
#defineG_TYPE_ERROR
#defineG_TYPE_DATE_TIME
#defineG_TYPE_TIME_ZONE
#defineG_TYPE_IO_CHANNEL
#defineG_TYPE_IO_CONDITION
#defineG_TYPE_VARIANT_BUILDER
#defineG_TYPE_VARIANT_DICT
#defineG_TYPE_KEY_FILE
#defineG_TYPE_MAIN_CONTEXT
#defineG_TYPE_MAIN_LOOP
#defineG_TYPE_MAPPED_FILE
#defineG_TYPE_MARKUP_PARSE_CONTEXT
#defineG_TYPE_SOURCE
#defineG_TYPE_POLLFD
#defineG_TYPE_THREAD
#defineG_TYPE_OPTION_GROUP
+
+
+

Includes

+
#include <glib-object.h>
+
+
+
+

Description

+

GBoxed is a generic wrapper mechanism for arbitrary C structures. The only +thing the type system needs to know about the structures is how to copy and +free them, beyond that they are treated as opaque chunks of memory.

+

Boxed types are useful for simple value-holder structures like rectangles or +points. They can also be used for wrapping structures defined in non-GObject +based libraries.

+
+
+

Functions

+
+

GBoxedCopyFunc ()

+
gpointer
+(*GBoxedCopyFunc) (gpointer boxed);
+

This function is provided by the user and should produce a copy +of the passed in boxed structure.

+
+

Parameters

+
+++++ + + + + + +

boxed

The boxed structure to be copied.

[not nullable]
+
+
+

Returns

+

The newly created copy of the boxed structure.

+

[not nullable]

+
+
+
+
+

GBoxedFreeFunc ()

+
void
+(*GBoxedFreeFunc) (gpointer boxed);
+

This function is provided by the user and should free the boxed +structure passed.

+
+

Parameters

+
+++++ + + + + + +

boxed

The boxed structure to be freed.

[not nullable]
+
+
+
+
+

g_boxed_copy ()

+
gpointer
+g_boxed_copy (GType boxed_type,
+              gconstpointer src_boxed);
+

Provide a copy of a boxed structure src_boxed + which is of type boxed_type +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

boxed_type

The type of src_boxed +.

 

src_boxed

The boxed structure to be copied.

[not nullable]
+
+
+

Returns

+

The newly created copy of the boxed +structure.

+

[transfer full][not nullable]

+
+
+
+
+

g_boxed_free ()

+
void
+g_boxed_free (GType boxed_type,
+              gpointer boxed);
+

Free the boxed structure boxed + which is of type boxed_type +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

boxed_type

The type of boxed +.

 

boxed

The boxed structure to be freed.

[not nullable]
+
+
+
+
+

g_boxed_type_register_static ()

+
GType
+g_boxed_type_register_static (const gchar *name,
+                              GBoxedCopyFunc boxed_copy,
+                              GBoxedFreeFunc boxed_free);
+

This function creates a new G_TYPE_BOXED derived type id for a new +boxed type with name name +. Boxed type handling functions have to be +provided to copy and free opaque boxed structures of this type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

name

Name of the new boxed type.

 

boxed_copy

Boxed structure copy function.

 

boxed_free

Boxed structure free function.

 
+
+
+

Returns

+

New G_TYPE_BOXED derived type id for name +.

+
+
+
+
+

g_pointer_type_register_static ()

+
GType
+g_pointer_type_register_static (const gchar *name);
+

Creates a new G_TYPE_POINTER derived type id for a new +pointer type with name name +.

+
+

Parameters

+
+++++ + + + + + +

name

the name of the new pointer type.

 
+
+
+

Returns

+

a new G_TYPE_POINTER derived type id for name +.

+
+
+
+
+

G_TYPE_HASH_TABLE

+
#define G_TYPE_HASH_TABLE (g_hash_table_get_type ())
+
+

The GType for a boxed type holding a GHashTable reference.

+

Since: 2.10

+
+
+
+

G_TYPE_DATE

+
#define G_TYPE_DATE (g_date_get_type ())
+
+

The GType for GDate.

+
+
+
+

G_TYPE_GSTRING

+
#define G_TYPE_GSTRING (g_gstring_get_type ())
+
+

The GType for GString.

+
+
+
+

G_TYPE_STRV

+
#define G_TYPE_STRV (g_strv_get_type ())
+
+

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().

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
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);
+/* do something with writers */
+g_strfreev (writers);
+
+ +

+

Since: 2.4

+
+
+
+

G_TYPE_REGEX

+
#define G_TYPE_REGEX (g_regex_get_type ())
+
+

The GType for a boxed type holding a GRegex reference.

+

Since: 2.14

+
+
+
+

G_TYPE_MATCH_INFO

+
#define G_TYPE_MATCH_INFO (g_match_info_get_type ())
+
+

The GType for a boxed type holding a GMatchInfo reference.

+

Since: 2.30

+
+
+
+

G_TYPE_ARRAY

+
#define G_TYPE_ARRAY (g_array_get_type ())
+
+

The GType for a boxed type holding a GArray reference.

+

Since: 2.22

+
+
+
+

G_TYPE_BYTE_ARRAY

+
#define G_TYPE_BYTE_ARRAY (g_byte_array_get_type ())
+
+

The GType for a boxed type holding a GByteArray reference.

+

Since: 2.22

+
+
+
+

G_TYPE_PTR_ARRAY

+
#define G_TYPE_PTR_ARRAY (g_ptr_array_get_type ())
+
+

The GType for a boxed type holding a GPtrArray reference.

+

Since: 2.22

+
+
+
+

G_TYPE_BYTES

+
#define G_TYPE_BYTES (g_bytes_get_type ())
+
+

The GType for GBytes.

+

Since: 2.32

+
+
+
+

G_TYPE_VARIANT_TYPE

+
#define G_TYPE_VARIANT_TYPE (g_variant_type_get_gtype ())
+
+

The GType for a boxed type holding a GVariantType.

+

Since: 2.24

+
+
+
+

G_TYPE_ERROR

+
#define G_TYPE_ERROR (g_error_get_type ())
+
+

The GType for a boxed type holding a GError.

+

Since: 2.26

+
+
+
+

G_TYPE_DATE_TIME

+
#define G_TYPE_DATE_TIME (g_date_time_get_type ())
+
+

The GType for a boxed type holding a GDateTime.

+

Since: 2.26

+
+
+
+

G_TYPE_TIME_ZONE

+
#define G_TYPE_TIME_ZONE (g_time_zone_get_type ())
+
+

The GType for a boxed type holding a GTimeZone.

+

Since: 2.34

+
+
+
+

G_TYPE_IO_CHANNEL

+
#define G_TYPE_IO_CHANNEL (g_io_channel_get_type ())
+
+

The GType for GIOChannel.

+
+
+
+

G_TYPE_IO_CONDITION

+
#define G_TYPE_IO_CONDITION (g_io_condition_get_type ())
+
+

The GType for GIOCondition.

+
+
+
+

G_TYPE_VARIANT_BUILDER

+
#define G_TYPE_VARIANT_BUILDER (g_variant_builder_get_type ())
+
+

The GType for a boxed type holding a GVariantBuilder.

+

Since: 2.30

+
+
+
+

G_TYPE_VARIANT_DICT

+
#define G_TYPE_VARIANT_DICT (g_variant_dict_get_type ())
+
+

The GType for a boxed type holding a GVariantDict.

+

Since: 2.40

+
+
+
+

G_TYPE_KEY_FILE

+
#define G_TYPE_KEY_FILE (g_key_file_get_type ())
+
+

The GType for a boxed type holding a GKeyFile.

+

Since: 2.32

+
+
+
+

G_TYPE_MAIN_CONTEXT

+
#define G_TYPE_MAIN_CONTEXT (g_main_context_get_type ())
+
+

The GType for a boxed type holding a GMainContext.

+

Since: 2.30

+
+
+
+

G_TYPE_MAIN_LOOP

+
#define G_TYPE_MAIN_LOOP (g_main_loop_get_type ())
+
+

The GType for a boxed type holding a GMainLoop.

+

Since: 2.30

+
+
+
+

G_TYPE_MAPPED_FILE

+
#define G_TYPE_MAPPED_FILE (g_mapped_file_get_type ())
+
+

The GType for a boxed type holding a GMappedFile.

+

Since: 2.40

+
+
+
+

G_TYPE_MARKUP_PARSE_CONTEXT

+
#define G_TYPE_MARKUP_PARSE_CONTEXT (g_markup_parse_context_get_type ())
+
+

The GType for a boxed type holding a GMarkupParseContext.

+

Since: 2.36

+
+
+
+

G_TYPE_SOURCE

+
#define G_TYPE_SOURCE (g_source_get_type ())
+
+

The GType for a boxed type holding a GSource.

+

Since: 2.30

+
+
+
+

G_TYPE_POLLFD

+
#define G_TYPE_POLLFD (g_pollfd_get_type ())
+
+

The GType for a boxed type holding a GPollFD.

+

Since: 2.36

+
+
+
+

G_TYPE_THREAD

+
#define G_TYPE_THREAD (g_thread_get_type ())
+
+

The GType for a boxed type holding a GThread.

+

Since: 2.36

+
+
+
+

G_TYPE_OPTION_GROUP

+
#define G_TYPE_OPTION_GROUP (g_option_group_get_type ())
+
+

The GType for a boxed type holding a GOptionGroup.

+

Since: 2.44

+
+
+
+

Types and Values

+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gobject-Closures.html b/docs/reference/gobject/html/gobject-Closures.html new file mode 100644 index 0000000..914dbf6 --- /dev/null +++ b/docs/reference/gobject/html/gobject-Closures.html @@ -0,0 +1,5125 @@ + + + + +Closures: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Closures

+

Closures — Functions as first-class objects

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define +G_CLOSURE_NEEDS_MARSHAL() +
#define +G_CLOSURE_N_NOTIFIERS() +
#define +G_CCLOSURE_SWAP_DATA() +
#define +G_CALLBACK() +
+void + +(*GCallback) () +
#defineG_TYPE_CLOSURE
+void + +(*GClosureMarshal) () +
+void + +(*GVaClosureMarshal) () +
+void + +(*GClosureNotify) () +
+GClosure * + +g_cclosure_new () +
+GClosure * + +g_cclosure_new_swap () +
+GClosure * + +g_cclosure_new_object () +
+GClosure * + +g_cclosure_new_object_swap () +
+void + +g_cclosure_marshal_generic () +
+GClosure * + +g_closure_new_object () +
+GClosure * + +g_closure_ref () +
+void + +g_closure_sink () +
+void + +g_closure_unref () +
+void + +g_closure_invoke () +
+void + +g_closure_invalidate () +
+void + +g_closure_add_finalize_notifier () +
+void + +g_closure_add_invalidate_notifier () +
+void + +g_closure_remove_finalize_notifier () +
+void + +g_closure_remove_invalidate_notifier () +
+GClosure * + +g_closure_new_simple () +
+void + +g_closure_set_marshal () +
+void + +g_closure_add_marshal_guards () +
+void + +g_closure_set_meta_marshal () +
+void + +g_source_set_closure () +
+void + +g_source_set_dummy_callback () +
+void + +g_cclosure_marshal_VOID__VOID () +
+void + +g_cclosure_marshal_VOID__BOOLEAN () +
+void + +g_cclosure_marshal_VOID__CHAR () +
+void + +g_cclosure_marshal_VOID__UCHAR () +
+void + +g_cclosure_marshal_VOID__INT () +
+void + +g_cclosure_marshal_VOID__UINT () +
+void + +g_cclosure_marshal_VOID__LONG () +
+void + +g_cclosure_marshal_VOID__ULONG () +
+void + +g_cclosure_marshal_VOID__ENUM () +
+void + +g_cclosure_marshal_VOID__FLAGS () +
+void + +g_cclosure_marshal_VOID__FLOAT () +
+void + +g_cclosure_marshal_VOID__DOUBLE () +
+void + +g_cclosure_marshal_VOID__STRING () +
+void + +g_cclosure_marshal_VOID__PARAM () +
+void + +g_cclosure_marshal_VOID__BOXED () +
+void + +g_cclosure_marshal_VOID__POINTER () +
+void + +g_cclosure_marshal_VOID__OBJECT () +
+void + +g_cclosure_marshal_VOID__VARIANT () +
+void + +g_cclosure_marshal_STRING__OBJECT_POINTER () +
+void + +g_cclosure_marshal_VOID__UINT_POINTER () +
+void + +g_cclosure_marshal_BOOLEAN__FLAGS () +
+void + +g_cclosure_marshal_BOOLEAN__BOXED_BOXED () +
+void + +g_cclosure_marshal_generic_va () +
+void + +g_cclosure_marshal_VOID__VOIDv () +
+void + +g_cclosure_marshal_VOID__BOOLEANv () +
+void + +g_cclosure_marshal_VOID__CHARv () +
+void + +g_cclosure_marshal_VOID__UCHARv () +
+void + +g_cclosure_marshal_VOID__INTv () +
+void + +g_cclosure_marshal_VOID__UINTv () +
+void + +g_cclosure_marshal_VOID__LONGv () +
+void + +g_cclosure_marshal_VOID__ULONGv () +
+void + +g_cclosure_marshal_VOID__ENUMv () +
+void + +g_cclosure_marshal_VOID__FLAGSv () +
+void + +g_cclosure_marshal_VOID__FLOATv () +
+void + +g_cclosure_marshal_VOID__DOUBLEv () +
+void + +g_cclosure_marshal_VOID__STRINGv () +
+void + +g_cclosure_marshal_VOID__PARAMv () +
+void + +g_cclosure_marshal_VOID__BOXEDv () +
+void + +g_cclosure_marshal_VOID__POINTERv () +
+void + +g_cclosure_marshal_VOID__OBJECTv () +
+void + +g_cclosure_marshal_VOID__VARIANTv () +
+void + +g_cclosure_marshal_STRING__OBJECT_POINTERv () +
+void + +g_cclosure_marshal_VOID__UINT_POINTERv () +
+void + +g_cclosure_marshal_BOOLEAN__FLAGSv () +
+void + +g_cclosure_marshal_BOOLEAN__BOXED_BOXEDv () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + +
structGClosure
structGCClosure
#defineg_cclosure_marshal_BOOL__FLAGS
#defineg_cclosure_marshal_BOOL__BOXED_BOXED
+
+
+

Includes

+
#include <glib-object.h>
+
+
+
+

Description

+

A GClosure represents a callback supplied by the programmer. It +will generally comprise a function of some kind and a marshaller +used to call it. It is the responsibility of the marshaller to +convert the arguments for the invocation from GValues into +a suitable form, perform the callback on the converted arguments, +and transform the return value back into a GValue.

+

In the case of C programs, a closure usually just holds a pointer +to a function and maybe a data argument, and the marshaller +converts between GValue and native C types. The GObject +library provides the GCClosure type for this purpose. Bindings for +other languages need marshallers which convert between GValue<!-- +-->s and suitable representations in the runtime of the language in +order to use functions written in that languages as callbacks.

+

Within GObject, closures play an important role in the +implementation of signals. When a signal is registered, the +c_marshaller + argument to g_signal_new() specifies the default C +marshaller for any closure which is connected to this +signal. GObject provides a number of C marshallers for this +purpose, see the g_cclosure_marshal_*() functions. Additional C +marshallers can be generated with the glib-genmarshal +utility. Closures can be explicitly connected to signals with +g_signal_connect_closure(), but it usually more convenient to let +GObject create a closure automatically by using one of the +g_signal_connect_*() functions which take a callback function/user +data pair.

+

Using closures has a number of important advantages over a simple +callback function/data pointer combination:

+
    +
  • Closures allow the callee to get the types of the callback parameters, +which means that language bindings don't have to write individual glue +for each callback type.

  • +
  • The reference counting of GClosure makes it easy to handle reentrancy +right; if a callback is removed while it is being invoked, the closure +and its parameters won't be freed until the invocation finishes.

  • +
  • g_closure_invalidate() and invalidation notifiers allow callbacks to be +automatically removed when the objects they point to go away.

  • +
+
+
+

Functions

+
+

G_CLOSURE_NEEDS_MARSHAL()

+
#define G_CLOSURE_NEEDS_MARSHAL(closure) (((GClosure*) (closure))->marshal == NULL)
+
+

Check if the closure still needs a marshaller. See g_closure_set_marshal().

+
+

Parameters

+
+++++ + + + + + +

closure

a GClosure

 
+
+
+

Returns

+

TRUE if a GClosureMarshal marshaller has not yet been set on +closure +.

+
+
+
+
+

G_CLOSURE_N_NOTIFIERS()

+
#define             G_CLOSURE_N_NOTIFIERS(cl)
+

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().

+
+

Parameters

+
+++++ + + + + + +

cl

a GClosure

 
+
+
+

Returns

+

number of notifiers

+
+
+
+
+

G_CCLOSURE_SWAP_DATA()

+
#define G_CCLOSURE_SWAP_DATA(cclosure)	 (((GClosure*) (cclosure))->derivative_flag)
+
+

Checks whether the user data of the GCClosure should be passed as the +first parameter to the callback. See g_cclosure_new_swap().

+
+

Parameters

+
+++++ + + + + + +

cclosure

a GCClosure

 
+
+
+

Returns

+

TRUE if data has to be swapped.

+
+
+
+
+

G_CALLBACK()

+
#define G_CALLBACK(f)			 ((GCallback) (f))
+
+

Cast a function pointer to a GCallback.

+
+

Parameters

+
+++++ + + + + + +

f

a function pointer.

 
+
+
+
+
+

GCallback ()

+
void
+(*GCallback) (void);
+

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.

+
+
+
+

G_TYPE_CLOSURE

+
#define G_TYPE_CLOSURE (g_closure_get_type ())
+
+

The GType for GClosure.

+
+
+
+

GClosureMarshal ()

+
void
+(*GClosureMarshal) (GClosure *closure,
+                    GValue *return_value,
+                    guint n_param_values,
+                    const GValue *param_values,
+                    gpointer invocation_hint,
+                    gpointer marshal_data);
+

The type used for marshaller functions.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

n_param_values

the length of the param_values +array

 

param_values

an array of +GValues holding the arguments on which to invoke the +callback of closure +.

[array length=n_param_values]

invocation_hint

the invocation hint given as the +last argument to g_closure_invoke().

[allow-none]

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]
+
+
+
+
+

GVaClosureMarshal ()

+
void
+(*GVaClosureMarshal) (GClosure *closure,
+                      GValue *return_value,
+                      gpointer instance,
+                      va_list args,
+                      gpointer marshal_data,
+                      int n_params,
+                      GType *param_types);
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is +invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

GClosureNotify ()

+
void
+(*GClosureNotify) (gpointer data,
+                   GClosure *closure);
+

The type used for the various notification callbacks which can be registered +on closures.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

data

data specified when registering the notification callback

 

closure

the GClosure on which the notification is emitted

 
+
+
+
+
+

g_cclosure_new ()

+
GClosure *
+g_cclosure_new (GCallback callback_func,
+                gpointer user_data,
+                GClosureNotify destroy_data);
+

Creates a new closure which invokes callback_func + with user_data + as +the last parameter.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

callback_func

the function to invoke

 

user_data

user data to pass to callback_func +.

[closure callback_func]

destroy_data

destroy notify to be called when user_data +is no longer used

 
+
+
+

Returns

+

a new GCClosure

+
+
+
+
+

g_cclosure_new_swap ()

+
GClosure *
+g_cclosure_new_swap (GCallback callback_func,
+                     gpointer user_data,
+                     GClosureNotify destroy_data);
+

Creates a new closure which invokes callback_func + with user_data + as +the first parameter.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

callback_func

the function to invoke

 

user_data

user data to pass to callback_func +.

[closure callback_func]

destroy_data

destroy notify to be called when user_data +is no longer used

 
+
+
+

Returns

+

a new GCClosure.

+

[transfer full]

+
+
+
+
+

g_cclosure_new_object ()

+
GClosure *
+g_cclosure_new_object (GCallback callback_func,
+                       GObject *object);
+

A variant of g_cclosure_new() which uses object + as user_data + and +calls g_object_watch_closure() on object + and the created +closure. This function is useful when you have a callback closely +associated with a GObject, and want the callback to no longer run +after the object is is freed.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

callback_func

the function to invoke

 

object

a GObject pointer to pass to callback_func +

 
+
+
+

Returns

+

a new GCClosure

+
+
+
+
+

g_cclosure_new_object_swap ()

+
GClosure *
+g_cclosure_new_object_swap (GCallback callback_func,
+                            GObject *object);
+

A variant of g_cclosure_new_swap() which uses object + as user_data + +and calls g_object_watch_closure() on object + and the created +closure. This function is useful when you have a callback closely +associated with a GObject, and want the callback to no longer run +after the object is is freed.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

callback_func

the function to invoke

 

object

a GObject pointer to pass to callback_func +

 
+
+
+

Returns

+

a new GCClosure

+
+
+
+
+

g_cclosure_marshal_generic ()

+
void
+g_cclosure_marshal_generic (GClosure *closure,
+                            GValue *return_gvalue,
+                            guint n_param_values,
+                            const GValue *param_values,
+                            gpointer invocation_hint,
+                            gpointer marshal_data);
+

A generic marshaller function implemented via +libffi.

+

Normally this function is not passed explicitly to g_signal_new(), +but used automatically by GLib when specifying a NULL marshaller.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_gvalue

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+

Since: 2.30

+
+
+
+

g_closure_new_object ()

+
GClosure *
+g_closure_new_object (guint sizeof_closure,
+                      GObject *object);
+

A variant of g_closure_new_simple() which stores object + in the +data + field of the closure and calls g_object_watch_closure() on +object + and the created closure. This function is mainly useful +when implementing new types of closures.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

sizeof_closure

the size of the structure to allocate, must be at least +sizeof (GClosure)

 

object

a GObject pointer to store in the data +field of the newly +allocated GClosure

 
+
+
+

Returns

+

a newly allocated GClosure.

+

[transfer full]

+
+
+
+
+

g_closure_ref ()

+
GClosure *
+g_closure_ref (GClosure *closure);
+

Increments the reference count on a closure to force it staying +alive while the caller holds a pointer to it.

+
+

Parameters

+
+++++ + + + + + +

closure

GClosure to increment the reference count on

 
+
+
+

Returns

+

The closure +passed in, for convenience.

+

[transfer none]

+
+
+
+
+

g_closure_sink ()

+
void
+g_closure_sink (GClosure *closure);
+

Takes over the initial ownership of a closure. Each closure is +initially created in a "floating" state, which means that the initial +reference count is not owned by any caller. g_closure_sink() checks +to see if the object is still floating, and if so, unsets the +floating state and decreases the reference count. If the closure +is not floating, g_closure_sink() does nothing. The reason for the +existence of the floating state is to prevent cumbersome code +sequences like:

+
+ + + + + + + +
1
+2
+3
closure = g_cclosure_new (cb_func, cb_data);
+g_source_set_closure (source, closure);
+g_closure_unref (closure); // GObject doesn't really need this
+
+ +

+Because g_source_set_closure() (and similar functions) take ownership of the +initial reference count, if it is unowned, we instead can write:

+
+ + + + + + + +
1
g_source_set_closure (source, g_cclosure_new (cb_func, cb_data));
+
+ +

+

Generally, this function is used together with g_closure_ref(). Ane example +of storing a closure for later notification looks like:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
static GClosure *notify_closure = NULL;
+void
+foo_notify_set_closure (GClosure *closure)
+{
+  if (notify_closure)
+    g_closure_unref (notify_closure);
+  notify_closure = closure;
+  if (notify_closure)
+    {
+      g_closure_ref (notify_closure);
+      g_closure_sink (notify_closure);
+    }
+}
+
+ +

+

Because g_closure_sink() may decrement the reference count of a closure +(if it hasn't been called on closure + yet) just like g_closure_unref(), +g_closure_ref() should be called prior to this function.

+
+

Parameters

+
+++++ + + + + + +

closure

GClosure to decrement the initial reference count on, if it's +still being held

 
+
+
+
+
+

g_closure_unref ()

+
void
+g_closure_unref (GClosure *closure);
+

Decrements the reference count of a closure after it was previously +incremented by the same caller. If no other callers are using the +closure, then the closure will be destroyed and freed.

+
+

Parameters

+
+++++ + + + + + +

closure

GClosure to decrement the reference count on

 
+
+
+
+
+

g_closure_invoke ()

+
void
+g_closure_invoke (GClosure *closure,
+                  GValue *return_value,
+                  guint n_param_values,
+                  const GValue *param_values,
+                  gpointer invocation_hint);
+

Invokes the closure, i.e. executes the callback represented by the closure +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

a GClosure

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a value.

[optional][out]

n_param_values

the length of the param_values +array

 

param_values

an array of +GValues holding the arguments on which to +invoke the callback of closure +.

[array length=n_param_values]

invocation_hint

a context-dependent invocation hint.

[allow-none]
+
+
+
+
+

g_closure_invalidate ()

+
void
+g_closure_invalidate (GClosure *closure);
+

Sets a flag on the closure to indicate that its calling +environment has become invalid, and thus causes any future +invocations of g_closure_invoke() on this closure + to be +ignored. Also, invalidation notifiers installed on the closure will +be called at this point. Note that unless you are holding a +reference to the closure yourself, the invalidation notifiers may +unref the closure and cause it to be destroyed, so if you need to +access the closure after calling g_closure_invalidate(), make sure +that you've previously called g_closure_ref().

+

Note that g_closure_invalidate() will also be called when the +reference count of a closure drops to zero (unless it has already +been invalidated before).

+
+

Parameters

+
+++++ + + + + + +

closure

GClosure to invalidate

 
+
+
+
+
+

g_closure_add_finalize_notifier ()

+
void
+g_closure_add_finalize_notifier (GClosure *closure,
+                                 gpointer notify_data,
+                                 GClosureNotify notify_func);
+

Registers a finalization notifier which will be called when the +reference count of closure + goes down to 0. Multiple finalization +notifiers on a single closure are invoked in unspecified order. If +a single call to g_closure_unref() results in the closure being +both invalidated and finalized, then the invalidate notifiers will +be run before the finalize notifiers.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

closure

a GClosure

 

notify_data

data to pass to notify_func +.

[closure notify_func]

notify_func

the callback function to register

 
+
+
+
+
+

g_closure_add_invalidate_notifier ()

+
void
+g_closure_add_invalidate_notifier (GClosure *closure,
+                                   gpointer notify_data,
+                                   GClosureNotify notify_func);
+

Registers an invalidation notifier which will be called when the +closure + is invalidated with g_closure_invalidate(). Invalidation +notifiers are invoked before finalization notifiers, in an +unspecified order.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

closure

a GClosure

 

notify_data

data to pass to notify_func +.

[closure notify_func]

notify_func

the callback function to register

 
+
+
+
+
+

g_closure_remove_finalize_notifier ()

+
void
+g_closure_remove_finalize_notifier (GClosure *closure,
+                                    gpointer notify_data,
+                                    GClosureNotify notify_func);
+

Removes a finalization notifier.

+

Notice that notifiers are automatically removed after they are run.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

closure

a GClosure

 

notify_data

data which was passed to g_closure_add_finalize_notifier() +when registering notify_func +

 

notify_func

the callback function to remove

 
+
+
+
+
+

g_closure_remove_invalidate_notifier ()

+
void
+g_closure_remove_invalidate_notifier (GClosure *closure,
+                                      gpointer notify_data,
+                                      GClosureNotify notify_func);
+

Removes an invalidation notifier.

+

Notice that notifiers are automatically removed after they are run.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

closure

a GClosure

 

notify_data

data which was passed to g_closure_add_invalidate_notifier() +when registering notify_func +

 

notify_func

the callback function to remove

 
+
+
+
+
+

g_closure_new_simple ()

+
GClosure *
+g_closure_new_simple (guint sizeof_closure,
+                      gpointer data);
+

Allocates a struct of the given size and initializes the initial +part as a GClosure. This function is mainly useful when +implementing new types of closures.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
typedef struct _MyClosure MyClosure;
+struct _MyClosure
+{
+  GClosure closure;
+  // extra data goes here
+};
+
+static void
+my_closure_finalize (gpointer  notify_data,
+                     GClosure *closure)
+{
+  MyClosure *my_closure = (MyClosure *)closure;
+
+  // free extra data here
+}
+
+MyClosure *my_closure_new (gpointer data)
+{
+  GClosure *closure;
+  MyClosure *my_closure;
+
+  closure = g_closure_new_simple (sizeof (MyClosure), data);
+  my_closure = (MyClosure *) closure;
+
+  // initialize extra data here
+
+  g_closure_add_finalize_notifier (closure, notify_data,
+                                   my_closure_finalize);
+  return my_closure;
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

sizeof_closure

the size of the structure to allocate, must be at least +sizeof (GClosure)

 

data

data to store in the data +field of the newly allocated GClosure

 
+
+
+

Returns

+

a newly allocated GClosure.

+

[transfer full]

+
+
+
+
+

g_closure_set_marshal ()

+
void
+g_closure_set_marshal (GClosure *closure,
+                       GClosureMarshal marshal);
+

Sets the marshaller of closure +. The marshal_data +of marshal + provides a way for a meta marshaller to provide additional +information to the marshaller. (See g_closure_set_meta_marshal().) For +GObject's C predefined marshallers (the g_cclosure_marshal_*() +functions), what it provides is a callback function to use instead of +closure->callback +.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

closure

a GClosure

 

marshal

a GClosureMarshal function

 
+
+
+
+
+

g_closure_add_marshal_guards ()

+
void
+g_closure_add_marshal_guards (GClosure *closure,
+                              gpointer pre_marshal_data,
+                              GClosureNotify pre_marshal_notify,
+                              gpointer post_marshal_data,
+                              GClosureNotify post_marshal_notify);
+

Adds a pair of notifiers which get invoked before and after the +closure callback, respectively. This is typically used to protect +the extra arguments for the duration of the callback. See +g_object_watch_closure() for an example of marshal guards.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

a GClosure

 

pre_marshal_data

data to pass +to pre_marshal_notify +.

[closure pre_marshal_notify]

pre_marshal_notify

a function to call before the closure callback

 

post_marshal_data

data to pass +to post_marshal_notify +.

[closure post_marshal_notify]

post_marshal_notify

a function to call after the closure callback

 
+
+
+
+
+

g_closure_set_meta_marshal ()

+
void
+g_closure_set_meta_marshal (GClosure *closure,
+                            gpointer marshal_data,
+                            GClosureMarshal meta_marshal);
+

Sets the meta marshaller of closure +. A meta marshaller wraps +closure->marshal + and modifies the way it is called in some +fashion. The most common use of this facility is for C callbacks. +The same marshallers (generated by glib-genmarshal), +are used everywhere, but the way that we get the callback function +differs. In most cases we want to use closure->callback +, but in +other cases we want to use some different technique to retrieve the +callback function.

+

For example, class closures for signals (see +g_signal_type_cclosure_new()) retrieve the callback function from a +fixed offset in the class structure. The meta marshaller retrieves +the right callback and passes it to the marshaller as the +marshal_data + argument.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

closure

a GClosure

 

marshal_data

context-dependent data to pass +to meta_marshal +.

[closure meta_marshal]

meta_marshal

a GClosureMarshal function

 
+
+
+
+
+

g_source_set_closure ()

+
void
+g_source_set_closure (GSource *source,
+                      GClosure *closure);
+

Set the callback for a source as a GClosure.

+

If the source is not one of the standard GLib types, the closure_callback + +and closure_marshal + fields of the GSourceFuncs structure must have been +filled in with pointers to appropriate functions.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

source

the source

 

closure

a GClosure

 
+
+
+
+
+

g_source_set_dummy_callback ()

+
void
+g_source_set_dummy_callback (GSource *source);
+

Sets a dummy callback for source +. The callback will do nothing, and +if the source expects a gboolean return value, it will return TRUE. +(If the source expects any other type of return value, it will return +a 0/NULL value; whatever g_value_init() initializes a GValue to for +that type.)

+

If the source is not one of the standard GLib types, the +closure_callback + and closure_marshal + fields of the GSourceFuncs +structure must have been filled in with pointers to appropriate +functions.

+
+

Parameters

+
+++++ + + + + + +

source

the source

 
+
+
+
+
+

g_cclosure_marshal_VOID__VOID ()

+
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);
+

A GClosureMarshal function for use with signals with no arguments.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__BOOLEAN ()

+
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);
+

A GClosureMarshal function for use with signals with a single +boolean argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__CHAR ()

+
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);
+

A GClosureMarshal function for use with signals with a single +character argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__UCHAR ()

+
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);
+

A GClosureMarshal function for use with signals with a single +unsigned character argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__INT ()

+
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);
+

A GClosureMarshal function for use with signals with a single +integer argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__UINT ()

+
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);
+

A GClosureMarshal function for use with signals with with a single +unsigned integer argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__LONG ()

+
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);
+

A GClosureMarshal function for use with signals with with a single +long integer argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__ULONG ()

+
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);
+

A GClosureMarshal function for use with signals with a single +unsigned long integer argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__ENUM ()

+
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);
+

A GClosureMarshal function for use with signals with a single +argument with an enumerated type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__FLAGS ()

+
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);
+

A GClosureMarshal function for use with signals with a single +argument with a flags types.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__FLOAT ()

+
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);
+

A GClosureMarshal function for use with signals with one +single-precision floating point argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__DOUBLE ()

+
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);
+

A GClosureMarshal function for use with signals with one +double-precision floating point argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__STRING ()

+
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);
+

A GClosureMarshal function for use with signals with a single string +argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__PARAM ()

+
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);
+

A GClosureMarshal function for use with signals with a single +argument of type GParamSpec.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__BOXED ()

+
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);
+

A GClosureMarshal function for use with signals with a single +argument which is any boxed pointer type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__POINTER ()

+
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);
+

A GClosureMarshal function for use with signals with a single raw +pointer argument type.

+

If it is possible, it is better to use one of the more specific +functions such as g_cclosure_marshal_VOID__OBJECT() or +g_cclosure_marshal_VOID__OBJECT().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__OBJECT ()

+
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);
+

A GClosureMarshal function for use with signals with a single +GObject argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__VARIANT ()

+
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);
+

A GClosureMarshal function for use with signals with a single +GVariant argument.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+

Since: 2.26

+
+
+
+

g_cclosure_marshal_STRING__OBJECT_POINTER ()

+
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);
+

A GClosureMarshal function for use with signals with handlers that +take a GObject and a pointer and produce a string. It is highly +unlikely that your signal handler fits this description.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_VOID__UINT_POINTER ()

+
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);
+

A GClosureMarshal function for use with signals with a unsigned int +and a pointer as arguments.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_BOOLEAN__FLAGS ()

+
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);
+

A GClosureMarshal function for use with signals with handlers that +take a flags type as an argument and return a boolean. If you have +such a signal, you will probably also need to use an accumulator, +such as g_signal_accumulator_true_handled().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_BOOLEAN__BOXED_BOXED ()

+
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);
+

A GClosureMarshal function for use with signals with handlers that +take two boxed pointers as arguments and return a boolean. If you +have such a signal, you will probably also need to use an +accumulator, such as g_signal_accumulator_true_handled().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_generic_va ()

+
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);
+

A generic GVaClosureMarshal function implemented via +libffi.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is +invoked.

[type GObject.TypeInstance]

args_list

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args_list +.

[array length=n_params]
+
+

Since: 2.30

+
+
+
+

g_cclosure_marshal_VOID__VOIDv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__VOID().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__BOOLEANv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__BOOLEAN().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__CHARv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__CHAR().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__UCHARv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__UCHAR().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__INTv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__INT().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__UINTv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__UINT().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__LONGv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__LONG().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__ULONGv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__ULONG().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__ENUMv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__ENUM().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__FLAGSv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__FLAGS().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__FLOATv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__FLOAT().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__DOUBLEv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__DOUBLE().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__STRINGv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__STRING().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__PARAMv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__PARAM().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__BOXEDv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__BOXED().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__POINTERv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__POINTER().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__OBJECTv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__OBJECT().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__VARIANTv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__VARIANT().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_STRING__OBJECT_POINTERv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_STRING__OBJECT_POINTER().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_VOID__UINT_POINTERv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__UINT_POINTER().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_BOOLEAN__FLAGSv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_BOOLEAN__FLAGS().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

g_cclosure_marshal_BOOLEAN__BOXED_BOXEDv ()

+
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);
+

The GVaClosureMarshal equivalent to g_cclosure_marshal_BOOLEAN__BOXED_BOXED().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

the GClosure to which the marshaller belongs

 

return_value

a GValue to store the return +value. May be NULL if the callback of closure +doesn't return a +value.

[allow-none]

instance

the instance on which the closure is invoked.

[type GObject.TypeInstance]

args

va_list of arguments to be passed to the closure.

 

marshal_data

additional data specified when +registering the marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal().

[allow-none]

n_params

the length of the param_types +array

 

param_types

the GType of each argument from +args +.

[array length=n_params]
+
+
+
+
+

Types and Values

+
+

struct GClosure

+
struct GClosure {
+  volatile       	guint	 in_marshal : 1;
+  volatile       	guint	 is_invalid : 1;
+};
+
+

A GClosure represents a callback supplied by the programmer.

+
+

Members

+
+++++ + + + + + + + + + + + + +

volatile        guint in_marshal : 1;

Indicates whether the closure is currently being invoked with +g_closure_invoke()

 

volatile        guint is_invalid : 1;

Indicates whether the closure has been invalidated by +g_closure_invalidate()

 
+
+
+
+
+

struct GCClosure

+
struct GCClosure {
+  GClosure closure;
+  gpointer callback;
+};
+
+

A GCClosure is a specialization of GClosure for C function callbacks.

+
+

Members

+
+++++ + + + + + + + + + + + + +

GClosure closure;

the GClosure

 

gpointer callback;

the callback function

 
+
+
+
+
+

g_cclosure_marshal_BOOL__FLAGS

+
#define             g_cclosure_marshal_BOOL__FLAGS
+

An old alias for g_cclosure_marshal_BOOLEAN__FLAGS().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+

g_cclosure_marshal_BOOL__BOXED_BOXED

+
#define             g_cclosure_marshal_BOOL__BOXED_BOXED
+

An old alias for g_cclosure_marshal_BOOLEAN__BOXED_BOXED().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

closure

A GClosure.

 

return_value

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

An array of GValues holding the arguments +on which to invoke the callback of closure.

 

invocation_hint

The invocation hint given as the last argument to +g_closure_invoke().

 

marshal_data

Additional data specified when registering the +marshaller, see g_closure_set_marshal() and +g_closure_set_meta_marshal()

 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gobject-Enumeration-and-Flag-Types.html b/docs/reference/gobject/html/gobject-Enumeration-and-Flag-Types.html new file mode 100644 index 0000000..80ffd42 --- /dev/null +++ b/docs/reference/gobject/html/gobject-Enumeration-and-Flag-Types.html @@ -0,0 +1,1130 @@ + + + + +Enumeration and Flag Types: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Enumeration and Flag Types

+

Enumeration and Flag Types — Enumeration and flags types

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define +G_ENUM_CLASS_TYPE() +
#define +G_ENUM_CLASS_TYPE_NAME() +
#define +G_TYPE_IS_ENUM() +
#define +G_ENUM_CLASS() +
#define +G_IS_ENUM_CLASS() +
#define +G_TYPE_IS_FLAGS() +
#define +G_FLAGS_CLASS() +
#define +G_IS_FLAGS_CLASS() +
#define +G_FLAGS_CLASS_TYPE() +
#define +G_FLAGS_CLASS_TYPE_NAME() +
+GEnumValue * + +g_enum_get_value () +
+GEnumValue * + +g_enum_get_value_by_name () +
+GEnumValue * + +g_enum_get_value_by_nick () +
+GFlagsValue * + +g_flags_get_first_value () +
+GFlagsValue * + +g_flags_get_value_by_name () +
+GFlagsValue * + +g_flags_get_value_by_nick () +
+GType + +g_enum_register_static () +
+GType + +g_flags_register_static () +
+void + +g_enum_complete_type_info () +
+void + +g_flags_complete_type_info () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + +
structGEnumClass
structGFlagsClass
structGEnumValue
structGFlagsValue
+
+
+

Includes

+
#include <glib-object.h>
+
+
+
+

Description

+

The GLib type system provides fundamental types for enumeration and +flags types. (Flags types are like enumerations, but allow their +values to be combined by bitwise or). A registered enumeration or +flags type associates a name and a nickname with each allowed +value, and the methods g_enum_get_value_by_name(), +g_enum_get_value_by_nick(), g_flags_get_value_by_name() and +g_flags_get_value_by_nick() can look up values by their name or +nickname. When an enumeration or flags type is registered with the +GLib type system, it can be used as value type for object +properties, using g_param_spec_enum() or g_param_spec_flags().

+

GObject ships with a utility called glib-mkenums, +that can construct suitable type registration functions from C enumeration +definitions.

+

Example of how to get a string representation of an enum value:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
GEnumClass *enum_class;
+GEnumValue *enum_value;
+
+enum_class = g_type_class_ref (MAMAN_TYPE_MY_ENUM);
+enum_value = g_enum_get_value (enum_class, MAMAN_MY_ENUM_FOO);
+
+g_print ("Name: %s\n", enum_value->value_name);
+
+g_type_class_unref (enum_class);
+
+ +

+
+
+

Functions

+
+

G_ENUM_CLASS_TYPE()

+
#define G_ENUM_CLASS_TYPE(class)       (G_TYPE_FROM_CLASS (class))
+
+

Get the type identifier from a given GEnumClass structure.

+
+

Parameters

+
+++++ + + + + + +

class

a GEnumClass

 
+
+
+

Returns

+

the GType

+
+
+
+
+

G_ENUM_CLASS_TYPE_NAME()

+
#define G_ENUM_CLASS_TYPE_NAME(class)  (g_type_name (G_ENUM_CLASS_TYPE (class)))
+
+

Get the static type name from a given GEnumClass structure.

+
+

Parameters

+
+++++ + + + + + +

class

a GEnumClass

 
+
+
+

Returns

+

the type name.

+
+
+
+
+

G_TYPE_IS_ENUM()

+
#define G_TYPE_IS_ENUM(type)	       (G_TYPE_FUNDAMENTAL (type) == G_TYPE_ENUM)
+
+

Checks whether type + "is a" G_TYPE_ENUM.

+
+

Parameters

+
+++++ + + + + + +

type

a GType ID.

 
+
+
+

Returns

+

TRUE if type +"is a" G_TYPE_ENUM.

+
+
+
+
+

G_ENUM_CLASS()

+
#define G_ENUM_CLASS(class)	       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_ENUM, GEnumClass))
+
+

Casts a derived GEnumClass structure into a GEnumClass structure.

+
+

Parameters

+
+++++ + + + + + +

class

a valid GEnumClass

 
+
+
+
+
+

G_IS_ENUM_CLASS()

+
#define G_IS_ENUM_CLASS(class)	       (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_ENUM))
+
+

Checks whether class + "is a" valid GEnumClass structure of type G_TYPE_ENUM +or derived.

+
+

Parameters

+
+++++ + + + + + +

class

a GEnumClass

 
+
+
+
+
+

G_TYPE_IS_FLAGS()

+
#define G_TYPE_IS_FLAGS(type)	       (G_TYPE_FUNDAMENTAL (type) == G_TYPE_FLAGS)
+
+

Checks whether type + "is a" G_TYPE_FLAGS.

+
+

Parameters

+
+++++ + + + + + +

type

a GType ID.

 
+
+
+

Returns

+

TRUE if type +"is a" G_TYPE_FLAGS.

+
+
+
+
+

G_FLAGS_CLASS()

+
#define G_FLAGS_CLASS(class)	       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_FLAGS, GFlagsClass))
+
+

Casts a derived GFlagsClass structure into a GFlagsClass structure.

+
+

Parameters

+
+++++ + + + + + +

class

a valid GFlagsClass

 
+
+
+
+
+

G_IS_FLAGS_CLASS()

+
#define G_IS_FLAGS_CLASS(class)        (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_FLAGS))
+
+

Checks whether class + "is a" valid GFlagsClass structure of type G_TYPE_FLAGS +or derived.

+
+

Parameters

+
+++++ + + + + + +

class

a GFlagsClass

 
+
+
+
+
+

G_FLAGS_CLASS_TYPE()

+
#define G_FLAGS_CLASS_TYPE(class)      (G_TYPE_FROM_CLASS (class))
+
+

Get the type identifier from a given GFlagsClass structure.

+
+

Parameters

+
+++++ + + + + + +

class

a GFlagsClass

 
+
+
+

Returns

+

the GType

+
+
+
+
+

G_FLAGS_CLASS_TYPE_NAME()

+
#define G_FLAGS_CLASS_TYPE_NAME(class) (g_type_name (G_FLAGS_CLASS_TYPE (class)))
+
+

Get the static type name from a given GFlagsClass structure.

+
+

Parameters

+
+++++ + + + + + +

class

a GFlagsClass

 
+
+
+

Returns

+

the type name.

+
+
+
+
+

g_enum_get_value ()

+
GEnumValue *
+g_enum_get_value (GEnumClass *enum_class,
+                  gint value);
+

Returns the GEnumValue for a value.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

enum_class

a GEnumClass

 

value

the value to look up

 
+
+
+

Returns

+

the GEnumValue for value +, or NULL +if value +is not a member of the enumeration.

+

[transfer none]

+
+
+
+
+

g_enum_get_value_by_name ()

+
GEnumValue *
+g_enum_get_value_by_name (GEnumClass *enum_class,
+                          const gchar *name);
+

Looks up a GEnumValue by name.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

enum_class

a GEnumClass

 

name

the name to look up

 
+
+
+

Returns

+

the GEnumValue with name name +, +or NULL if the enumeration doesn't have a member +with that name.

+

[transfer none]

+
+
+
+
+

g_enum_get_value_by_nick ()

+
GEnumValue *
+g_enum_get_value_by_nick (GEnumClass *enum_class,
+                          const gchar *nick);
+

Looks up a GEnumValue by nickname.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

enum_class

a GEnumClass

 

nick

the nickname to look up

 
+
+
+

Returns

+

the GEnumValue with nickname nick +, +or NULL if the enumeration doesn't have a member +with that nickname.

+

[transfer none]

+
+
+
+
+

g_flags_get_first_value ()

+
GFlagsValue *
+g_flags_get_first_value (GFlagsClass *flags_class,
+                         guint value);
+

Returns the first GFlagsValue which is set in value +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

flags_class

a GFlagsClass

 

value

the value

 
+
+
+

Returns

+

the first GFlagsValue which is set in +value +, or NULL if none is set.

+

[transfer none]

+
+
+
+
+

g_flags_get_value_by_name ()

+
GFlagsValue *
+g_flags_get_value_by_name (GFlagsClass *flags_class,
+                           const gchar *name);
+

Looks up a GFlagsValue by name.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

flags_class

a GFlagsClass

 

name

the name to look up

 
+
+
+

Returns

+

the GFlagsValue with name name +, +or NULL if there is no flag with that name.

+

[transfer none]

+
+
+
+
+

g_flags_get_value_by_nick ()

+
GFlagsValue *
+g_flags_get_value_by_nick (GFlagsClass *flags_class,
+                           const gchar *nick);
+

Looks up a GFlagsValue by nickname.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

flags_class

a GFlagsClass

 

nick

the nickname to look up

 
+
+
+

Returns

+

the GFlagsValue with nickname nick +, +or NULL if there is no flag with that nickname.

+

[transfer none]

+
+
+
+
+

g_enum_register_static ()

+
GType
+g_enum_register_static (const gchar *name,
+                        const GEnumValue *const_static_values);
+

Registers a new static enumeration type with the name name +.

+

It is normally more convenient to let glib-mkenums, +generate a my_enum_get_type() function from a usual C enumeration +definition than to write one yourself using g_enum_register_static().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

name

A nul-terminated string used as the name of the new type.

 

const_static_values

An array of GEnumValue structs for the possible +enumeration values. The array is terminated by a struct with all +members being 0. GObject keeps a reference to the data, so it cannot +be stack-allocated.

 
+
+
+

Returns

+

The new type identifier.

+
+
+
+
+

g_flags_register_static ()

+
GType
+g_flags_register_static (const gchar *name,
+                         const GFlagsValue *const_static_values);
+

Registers a new static flags type with the name name +.

+

It is normally more convenient to let glib-mkenums +generate a my_flags_get_type() function from a usual C enumeration +definition than to write one yourself using g_flags_register_static().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

name

A nul-terminated string used as the name of the new type.

 

const_static_values

An array of GFlagsValue structs for the possible +flags values. The array is terminated by a struct with all members being 0. +GObject keeps a reference to the data, so it cannot be stack-allocated.

 
+
+
+

Returns

+

The new type identifier.

+
+
+
+
+

g_enum_complete_type_info ()

+
void
+g_enum_complete_type_info (GType g_enum_type,
+                           GTypeInfo *info,
+                           const GEnumValue *const_values);
+

This function is meant to be called from the complete_type_info +function of a GTypePlugin implementation, as in the following +example:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
static void
+my_enum_complete_type_info (GTypePlugin     *plugin,
+                            GType            g_type,
+                            GTypeInfo       *info,
+                            GTypeValueTable *value_table)
+{
+  static const GEnumValue values[] = {
+    { MY_ENUM_FOO, "MY_ENUM_FOO", "foo" },
+    { MY_ENUM_BAR, "MY_ENUM_BAR", "bar" },
+    { 0, NULL, NULL }
+  };
+
+  g_enum_complete_type_info (type, info, values);
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

g_enum_type

the type identifier of the type being completed

 

info

the GTypeInfo struct to be filled in.

[out callee-allocates]

const_values

An array of GEnumValue structs for the possible +enumeration values. The array is terminated by a struct with all +members being 0.

 
+
+
+
+
+

g_flags_complete_type_info ()

+
void
+g_flags_complete_type_info (GType g_flags_type,
+                            GTypeInfo *info,
+                            const GFlagsValue *const_values);
+

This function is meant to be called from the complete_type_info() +function of a GTypePlugin implementation, see the example for +g_enum_complete_type_info() above.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

g_flags_type

the type identifier of the type being completed

 

info

the GTypeInfo struct to be filled in.

[out callee-allocates]

const_values

An array of GFlagsValue structs for the possible +enumeration values. The array is terminated by a struct with all +members being 0.

 
+
+
+
+
+

Types and Values

+
+

struct GEnumClass

+
struct GEnumClass {
+  GTypeClass  g_type_class;
+
+  gint	      minimum;
+  gint	      maximum;
+  guint	      n_values;
+  GEnumValue *values;
+};
+
+

The class of an enumeration type holds information about its +possible values.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeClass g_type_class;

the parent class

 

gint minimum;

the smallest possible value.

 

gint maximum;

the largest possible value.

 

guint n_values;

the number of possible values.

 

GEnumValue *values;

an array of GEnumValue structs describing the +individual values.

 
+
+
+
+
+

struct GFlagsClass

+
struct GFlagsClass {
+  GTypeClass   g_type_class;
+  
+  guint	       mask;
+  guint	       n_values;
+  GFlagsValue *values;
+};
+
+

The class of a flags type holds information about its +possible values.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GTypeClass g_type_class;

the parent class

 

guint mask;

a mask covering all possible values.

 

guint n_values;

the number of possible values.

 

GFlagsValue *values;

an array of GFlagsValue structs describing the +individual values.

 
+
+
+
+
+

struct GEnumValue

+
struct GEnumValue {
+  gint	 value;
+  const gchar *value_name;
+  const gchar *value_nick;
+};
+
+

A structure which contains a single enum value, its name, and its +nickname.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

gint value;

the enum value

 

const gchar *value_name;

the name of the value

 

const gchar *value_nick;

the nickname of the value

 
+
+
+
+
+

struct GFlagsValue

+
struct GFlagsValue {
+  guint	 value;
+  const gchar *value_name;
+  const gchar *value_nick;
+};
+
+

A structure which contains a single flags value, its name, and its +nickname.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

guint value;

the flags value

 

const gchar *value_name;

the name of the value

 

const gchar *value_nick;

the nickname of the value

 
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gobject-GParamSpec.html b/docs/reference/gobject/html/gobject-GParamSpec.html new file mode 100644 index 0000000..814ec97 --- /dev/null +++ b/docs/reference/gobject/html/gobject-GParamSpec.html @@ -0,0 +1,1991 @@ + + + + +GParamSpec: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GParamSpec

+

GParamSpec — Metadata for parameter specifications

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define +G_TYPE_IS_PARAM() +
#define +G_PARAM_SPEC() +
#define +G_IS_PARAM_SPEC() +
#define +G_PARAM_SPEC_CLASS() +
#define +G_IS_PARAM_SPEC_CLASS() +
#define +G_PARAM_SPEC_GET_CLASS() +
#define +G_PARAM_SPEC_TYPE() +
#define +G_PARAM_SPEC_TYPE_NAME() +
#define +G_PARAM_SPEC_VALUE_TYPE() +
#defineG_PARAM_STATIC_STRINGS
+GParamSpec * + +g_param_spec_ref () +
+void + +g_param_spec_unref () +
+void + +g_param_spec_sink () +
+GParamSpec * + +g_param_spec_ref_sink () +
const GValue * + +g_param_spec_get_default_value () +
+void + +g_param_value_set_default () +
+gboolean + +g_param_value_defaults () +
+gboolean + +g_param_value_validate () +
+gboolean + +g_param_value_convert () +
+gint + +g_param_values_cmp () +
const gchar * + +g_param_spec_get_name () +
+GQuark + +g_param_spec_get_name_quark () +
const gchar * + +g_param_spec_get_nick () +
const gchar * + +g_param_spec_get_blurb () +
+gpointer + +g_param_spec_get_qdata () +
+void + +g_param_spec_set_qdata () +
+void + +g_param_spec_set_qdata_full () +
+gpointer + +g_param_spec_steal_qdata () +
+GParamSpec * + +g_param_spec_get_redirect_target () +
+gpointer + +g_param_spec_internal () +
+GType + +g_param_type_register_static () +
+GParamSpecPool * + +g_param_spec_pool_new () +
+void + +g_param_spec_pool_insert () +
+void + +g_param_spec_pool_remove () +
+GParamSpec * + +g_param_spec_pool_lookup () +
+GParamSpec ** + +g_param_spec_pool_list () +
+GList * + +g_param_spec_pool_list_owned () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
structGParamSpec
structGParamSpecClass
enumGParamFlags
#defineG_PARAM_MASK
#defineG_PARAM_USER_SHIFT
structGParamSpecTypeInfo
 GParamSpecPool
+
+
+

Includes

+
#include <glib-object.h>
+
+
+
+

Description

+

GParamSpec is an object structure that encapsulates the metadata +required to specify parameters, such as e.g. GObject properties.

+
+

Parameter names

+

Parameter names need to start with a letter (a-z or A-Z). +Subsequent characters can be letters, numbers or a '-'. +All other characters are replaced by a '-' during construction. +The result of this replacement is called the canonical name of +the parameter.

+
+
+
+

Functions

+
+

G_TYPE_IS_PARAM()

+
#define G_TYPE_IS_PARAM(type)		(G_TYPE_FUNDAMENTAL (type) == G_TYPE_PARAM)
+
+

Checks whether type + "is a" G_TYPE_PARAM.

+
+

Parameters

+
+++++ + + + + + +

type

a GType ID

 
+
+
+
+
+

G_PARAM_SPEC()

+
#define G_PARAM_SPEC(pspec)		(G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM, GParamSpec))
+
+

Casts a derived GParamSpec object (e.g. of type GParamSpecInt) into +a GParamSpec object.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec

 
+
+
+
+
+

G_IS_PARAM_SPEC()

+
#define G_IS_PARAM_SPEC(pspec)		(G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE ((pspec), G_TYPE_PARAM))
+
+

Checks whether pspec + "is a" valid GParamSpec structure of type G_TYPE_PARAM +or derived.

+
+

Parameters

+
+++++ + + + + + +

pspec

a GParamSpec

 
+
+
+
+
+

G_PARAM_SPEC_CLASS()

+
#define G_PARAM_SPEC_CLASS(pclass)      (G_TYPE_CHECK_CLASS_CAST ((pclass), G_TYPE_PARAM, GParamSpecClass))
+
+

Casts a derived GParamSpecClass structure into a GParamSpecClass structure.

+
+

Parameters

+
+++++ + + + + + +

pclass

a valid GParamSpecClass

 
+
+
+
+
+

G_IS_PARAM_SPEC_CLASS()

+
#define G_IS_PARAM_SPEC_CLASS(pclass)   (G_TYPE_CHECK_CLASS_TYPE ((pclass), G_TYPE_PARAM))
+
+

Checks whether pclass + "is a" valid GParamSpecClass structure of type +G_TYPE_PARAM or derived.

+
+

Parameters

+
+++++ + + + + + +

pclass

a GParamSpecClass

 
+
+
+
+
+

G_PARAM_SPEC_GET_CLASS()

+
#define G_PARAM_SPEC_GET_CLASS(pspec) (G_TYPE_INSTANCE_GET_CLASS ((pspec), G_TYPE_PARAM, GParamSpecClass))
+
+

Retrieves the GParamSpecClass of a GParamSpec.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec

 
+
+
+
+
+

G_PARAM_SPEC_TYPE()

+
#define G_PARAM_SPEC_TYPE(pspec) (G_TYPE_FROM_INSTANCE (pspec))
+
+

Retrieves the GType of this pspec +.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec

 
+
+
+
+
+

G_PARAM_SPEC_TYPE_NAME()

+
#define G_PARAM_SPEC_TYPE_NAME(pspec) (g_type_name (G_PARAM_SPEC_TYPE (pspec)))
+
+

Retrieves the GType name of this pspec +.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec

 
+
+
+
+
+

G_PARAM_SPEC_VALUE_TYPE()

+
#define G_PARAM_SPEC_VALUE_TYPE(pspec) (G_PARAM_SPEC (pspec)->value_type)
+
+

Retrieves the GType to initialize a GValue for this parameter.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec

 
+
+
+
+
+

G_PARAM_STATIC_STRINGS

+
#define G_PARAM_STATIC_STRINGS (G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)
+
+

GParamFlags value alias for G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB.

+

Since 2.13.0

+
+
+
+

g_param_spec_ref ()

+
GParamSpec *
+g_param_spec_ref (GParamSpec *pspec);
+

Increments the reference count of pspec +.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec

 
+
+
+

Returns

+

the GParamSpec that was passed into this function

+
+
+
+
+

g_param_spec_unref ()

+
void
+g_param_spec_unref (GParamSpec *pspec);
+

Decrements the reference count of a pspec +.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec

 
+
+
+
+
+

g_param_spec_sink ()

+
void
+g_param_spec_sink (GParamSpec *pspec);
+

The initial reference count of a newly created GParamSpec is 1, +even though no one has explicitly called g_param_spec_ref() on it +yet. So the initial reference count is flagged as "floating", until +someone calls g_param_spec_ref (pspec); g_param_spec_sink +(pspec); in sequence on it, taking over the initial +reference count (thus ending up with a pspec + that has a reference +count of 1 still, but is not flagged "floating" anymore).

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec

 
+
+
+
+
+

g_param_spec_ref_sink ()

+
GParamSpec *
+g_param_spec_ref_sink (GParamSpec *pspec);
+

Convenience function to ref and sink a GParamSpec.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec

 
+
+
+

Returns

+

the GParamSpec that was passed into this function

+
+

Since: 2.10

+
+
+
+

g_param_spec_get_default_value ()

+
const GValue *
+g_param_spec_get_default_value (GParamSpec *pspec);
+

Gets the default value of pspec + as a pointer to a GValue.

+

The GValue will remain value for the life of pspec +.

+
+

Parameters

+
+++++ + + + + + +

pspec

a GParamSpec

 
+
+
+

Returns

+

a pointer to a GValue which must not be modified

+
+

Since: 2.38

+
+
+
+

g_param_value_set_default ()

+
void
+g_param_value_set_default (GParamSpec *pspec,
+                           GValue *value);
+

Sets value + to its default value as specified in pspec +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

pspec

a valid GParamSpec

 

value

a GValue of correct type for pspec +

 
+
+
+
+
+

g_param_value_defaults ()

+
gboolean
+g_param_value_defaults (GParamSpec *pspec,
+                        GValue *value);
+

Checks whether value + contains the default value as specified in pspec +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

pspec

a valid GParamSpec

 

value

a GValue of correct type for pspec +

 
+
+
+

Returns

+

whether value +contains the canonical default for this pspec +

+
+
+
+
+

g_param_value_validate ()

+
gboolean
+g_param_value_validate (GParamSpec *pspec,
+                        GValue *value);
+

Ensures that the contents of value + comply with the specifications +set out by pspec +. For example, a GParamSpecInt might require +that integers stored in value + may not be smaller than -42 and not be +greater than +42. If value + contains an integer outside of this range, +it is modified accordingly, so the resulting value will fit into the +range -42 .. +42.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

pspec

a valid GParamSpec

 

value

a GValue of correct type for pspec +

 
+
+
+

Returns

+

whether modifying value +was necessary to ensure validity

+
+
+
+
+

g_param_value_convert ()

+
gboolean
+g_param_value_convert (GParamSpec *pspec,
+                       const GValue *src_value,
+                       GValue *dest_value,
+                       gboolean strict_validation);
+

Transforms src_value + into dest_value + if possible, and then +validates dest_value +, in order for it to conform to pspec +. If +strict_validation + is TRUE this function will only succeed if the +transformed dest_value + complied to pspec + without modifications.

+

See also g_value_type_transformable(), g_value_transform() and +g_param_value_validate().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

pspec

a valid GParamSpec

 

src_value

souce GValue

 

dest_value

destination GValue of correct type for pspec +

 

strict_validation

TRUE requires dest_value +to conform to pspec +without modifications

 
+
+
+

Returns

+

TRUE if transformation and validation were successful, +FALSE otherwise and dest_value +is left untouched.

+
+
+
+
+

g_param_values_cmp ()

+
gint
+g_param_values_cmp (GParamSpec *pspec,
+                    const GValue *value1,
+                    const GValue *value2);
+

Compares value1 + with value2 + according to pspec +, and return -1, 0 or +1, +if value1 + is found to be less than, equal to or greater than value2 +, +respectively.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

pspec

a valid GParamSpec

 

value1

a GValue of correct type for pspec +

 

value2

a GValue of correct type for pspec +

 
+
+
+

Returns

+

-1, 0 or +1, for a less than, equal to or greater than result

+
+
+
+
+

g_param_spec_get_name ()

+
const gchar *
+g_param_spec_get_name (GParamSpec *pspec);
+

Get the name of a GParamSpec.

+

The name is always an "interned" string (as per g_intern_string()). +This allows for pointer-value comparisons.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec

 
+
+
+

Returns

+

the name of pspec +.

+
+
+
+
+

g_param_spec_get_name_quark ()

+
GQuark
+g_param_spec_get_name_quark (GParamSpec *pspec);
+

Gets the GQuark for the name.

+
+

Parameters

+
+++++ + + + + + +

pspec

a GParamSpec

 
+
+
+

Returns

+

the GQuark for pspec->name +.

+
+

Since: 2.46

+
+
+
+

g_param_spec_get_nick ()

+
const gchar *
+g_param_spec_get_nick (GParamSpec *pspec);
+

Get the nickname of a GParamSpec.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec

 
+
+
+

Returns

+

the nickname of pspec +.

+
+
+
+
+

g_param_spec_get_blurb ()

+
const gchar *
+g_param_spec_get_blurb (GParamSpec *pspec);
+

Get the short description of a GParamSpec.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec

 
+
+
+

Returns

+

the short description of pspec +.

+
+
+
+
+

g_param_spec_get_qdata ()

+
gpointer
+g_param_spec_get_qdata (GParamSpec *pspec,
+                        GQuark quark);
+

Gets back user data pointers stored via g_param_spec_set_qdata().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

pspec

a valid GParamSpec

 

quark

a GQuark, naming the user data pointer

 
+
+
+

Returns

+

the user data pointer set, or NULL.

+

[transfer none]

+
+
+
+
+

g_param_spec_set_qdata ()

+
void
+g_param_spec_set_qdata (GParamSpec *pspec,
+                        GQuark quark,
+                        gpointer data);
+

Sets an opaque, named pointer on a GParamSpec. The name is +specified through a GQuark (retrieved e.g. via +g_quark_from_static_string()), and the pointer can be gotten back +from the pspec + with g_param_spec_get_qdata(). Setting a +previously set user data pointer, overrides (frees) the old pointer +set, using NULL as pointer essentially removes the data stored.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

pspec

the GParamSpec to set store a user data pointer

 

quark

a GQuark, naming the user data pointer

 

data

an opaque user data pointer

 
+
+
+
+
+

g_param_spec_set_qdata_full ()

+
void
+g_param_spec_set_qdata_full (GParamSpec *pspec,
+                             GQuark quark,
+                             gpointer data,
+                             GDestroyNotify destroy);
+

This function works like g_param_spec_set_qdata(), but in addition, +a void (*destroy) (gpointer) function may be +specified which is called with data + as argument when the pspec + is +finalized, or the data is being overwritten by a call to +g_param_spec_set_qdata() with the same quark +.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

pspec

the GParamSpec to set store a user data pointer

 

quark

a GQuark, naming the user data pointer

 

data

an opaque user data pointer

 

destroy

function to invoke with data +as argument, when data +needs to +be freed

 
+
+
+
+
+

g_param_spec_steal_qdata ()

+
gpointer
+g_param_spec_steal_qdata (GParamSpec *pspec,
+                          GQuark quark);
+

Gets back user data pointers stored via g_param_spec_set_qdata() +and removes the data + from pspec + without invoking its destroy() +function (if any was set). Usually, calling this function is only +required to update user data pointers with a destroy notifier.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

pspec

the GParamSpec to get a stored user data pointer from

 

quark

a GQuark, naming the user data pointer

 
+
+
+

Returns

+

the user data pointer set, or NULL.

+

[transfer none]

+
+
+
+
+

g_param_spec_get_redirect_target ()

+
GParamSpec *
+g_param_spec_get_redirect_target (GParamSpec *pspec);
+

If the paramspec redirects operations to another paramspec, +returns that paramspec. Redirect is used typically for +providing a new implementation of a property in a derived +type while preserving all the properties from the parent +type. Redirection is established by creating a property +of type GParamSpecOverride. See g_object_class_override_property() +for an example of the use of this capability.

+
+

Parameters

+
+++++ + + + + + +

pspec

a GParamSpec

 
+
+
+

Returns

+

paramspec to which requests on this +paramspec should be redirected, or NULL if none.

+

[transfer none]

+
+

Since: 2.4

+
+
+
+

g_param_spec_internal ()

+
gpointer
+g_param_spec_internal (GType param_type,
+                       const gchar *name,
+                       const gchar *nick,
+                       const gchar *blurb,
+                       GParamFlags flags);
+

Creates a new GParamSpec instance.

+

A property name consists of segments consisting of ASCII letters and +digits, separated by either the '-' or '_' character. The first +character of a property name must be a letter. Names which violate these +rules lead to undefined behaviour.

+

When creating and looking up a GParamSpec, either separator can be +used, but they cannot be mixed. Using '-' is considerably more +efficient and in fact required when using property names as detail +strings for signals.

+

Beyond the name, GParamSpecs have two more descriptive +strings associated with them, the nick +, which should be suitable +for use as a label for the property in a property editor, and the +blurb +, which should be a somewhat longer description, suitable for +e.g. a tooltip. The nick + and blurb + should ideally be localized.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

param_type

the GType for the property; must be derived from G_TYPE_PARAM

 

name

the canonical name of the property

 

nick

the nickname of the property

 

blurb

a short description of the property

 

flags

a combination of GParamFlags

 
+
+
+

Returns

+

a newly allocated GParamSpec instance.

+

[type GObject.ParamSpec]

+
+
+
+
+

g_param_type_register_static ()

+
GType
+g_param_type_register_static (const gchar *name,
+                              const GParamSpecTypeInfo *pspec_info);
+

Registers name + as the name of a new static type derived from +G_TYPE_PARAM. The type system uses the information contained in +the GParamSpecTypeInfo structure pointed to by info + to manage the +GParamSpec type and its instances.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

name

0-terminated string used as the name of the new GParamSpec type.

 

pspec_info

The GParamSpecTypeInfo for this GParamSpec type.

 
+
+
+

Returns

+

The new type identifier.

+
+
+
+
+

g_param_spec_pool_new ()

+
GParamSpecPool *
+g_param_spec_pool_new (gboolean type_prefixing);
+

Creates a new GParamSpecPool.

+

If type_prefixing + is TRUE, lookups in the newly created pool will +allow to specify the owner as a colon-separated prefix of the +property name, like "GtkContainer:border-width". This feature is +deprecated, so you should always set type_prefixing + to FALSE.

+
+

Parameters

+
+++++ + + + + + +

type_prefixing

Whether the pool will support type-prefixed property names.

 
+
+
+

Returns

+

a newly allocated GParamSpecPool.

+

[transfer none]

+
+
+
+
+

g_param_spec_pool_insert ()

+
void
+g_param_spec_pool_insert (GParamSpecPool *pool,
+                          GParamSpec *pspec,
+                          GType owner_type);
+

Inserts a GParamSpec in the pool.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

pool

a GParamSpecPool.

 

pspec

the GParamSpec to insert

 

owner_type

a GType identifying the owner of pspec +

 
+
+
+
+
+

g_param_spec_pool_remove ()

+
void
+g_param_spec_pool_remove (GParamSpecPool *pool,
+                          GParamSpec *pspec);
+

Removes a GParamSpec from the pool.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

pool

a GParamSpecPool

 

pspec

the GParamSpec to remove

 
+
+
+
+
+

g_param_spec_pool_lookup ()

+
GParamSpec *
+g_param_spec_pool_lookup (GParamSpecPool *pool,
+                          const gchar *param_name,
+                          GType owner_type,
+                          gboolean walk_ancestors);
+

Looks up a GParamSpec in the pool.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

pool

a GParamSpecPool

 

param_name

the name to look for

 

owner_type

the owner to look for

 

walk_ancestors

If TRUE, also try to find a GParamSpec with param_name +owned by an ancestor of owner_type +.

 
+
+
+

Returns

+

The found GParamSpec, or NULL if no +matching GParamSpec was found.

+

[transfer none]

+
+
+
+
+

g_param_spec_pool_list ()

+
GParamSpec **
+g_param_spec_pool_list (GParamSpecPool *pool,
+                        GType owner_type,
+                        guint *n_pspecs_p);
+

Gets an array of all GParamSpecs owned by owner_type + in +the pool.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

pool

a GParamSpecPool

 

owner_type

the owner to look for

 

n_pspecs_p

return location for the length of the returned array.

[out]
+
+
+

Returns

+

a newly +allocated array containing pointers to all GParamSpecs +owned by owner_type +in the pool.

+

[array length=n_pspecs_p][transfer container]

+
+
+
+
+

g_param_spec_pool_list_owned ()

+
GList *
+g_param_spec_pool_list_owned (GParamSpecPool *pool,
+                              GType owner_type);
+

Gets an GList of all GParamSpecs owned by owner_type + in +the pool.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

pool

a GParamSpecPool

 

owner_type

the owner to look for

 
+
+
+

Returns

+

a +GList of all GParamSpecs owned by owner_type +in +the poolGParamSpecs.

+

[transfer container][element-type GObject.ParamSpec]

+
+
+
+
+

Types and Values

+
+

struct GParamSpec

+
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 */
+};
+
+

All other fields of the GParamSpec struct are private and +should not be used directly.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeInstance g_type_instance;

private GTypeInstance portion

 

const gchar *name;

name of this parameter: always an interned string

 

GParamFlags flags;

GParamFlags flags for this parameter

 

GType value_type;

the GValue type for this parameter

 

GType owner_type;

GType type that uses (introduces) this parameter

 
+
+
+
+
+

struct GParamSpecClass

+
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);
+};
+
+

The class structure for the GParamSpec type. +Normally, GParamSpec classes are filled by +g_param_type_register_static().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeClass g_type_class;

the parent class

 

GType 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().

 
+
+
+
+
+

enum GParamFlags

+

Through the GParamFlags flag values, certain aspects of parameters +can be configured. See also G_PARAM_STATIC_STRINGS.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

G_PARAM_READABLE

+

the parameter is readable

+
 

G_PARAM_WRITABLE

+

the parameter is writable

+
 

G_PARAM_READWRITE

+

alias for G_PARAM_READABLE | G_PARAM_WRITABLE

+
 

G_PARAM_CONSTRUCT

+

the parameter will be set upon object construction

+
 

G_PARAM_CONSTRUCT_ONLY

+

the parameter can 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_PRIVATE

+

internal

+
 

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_EXPLICIT_NOTIFY

+

calls to g_object_set_property() for this + property will not automatically result in a "notify" signal being + emitted: the implementation must call g_object_notify() themselves + in case the property actually changes. Since: 2.42.

+
 

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

+
 
+
+
+
+
+

G_PARAM_MASK

+
#define G_PARAM_MASK		(0x000000ff)
+
+

Mask containing the bits of GParamSpec.flags which are reserved for GLib.

+
+
+
+

G_PARAM_USER_SHIFT

+
#define G_PARAM_USER_SHIFT (8)
+
+

Minimum shift count to be used for user defined flags, to be stored in +GParamSpec.flags. The maximum allowed is 10.

+
+
+
+

struct GParamSpecTypeInfo

+
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);
+};
+
+

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().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

guint16 instance_size;

Size of the instance (object) structure.

 

guint16 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 slice allocator now.

 

instance_init ()

Location of the instance initialization function (optional).

 

GType 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().

 
+
+
+
+
+

GParamSpecPool

+
typedef struct _GParamSpecPool GParamSpecPool;
+

A GParamSpecPool maintains a collection of GParamSpecs which can be +quickly accessed by owner and name. The implementation of the GObject property +system uses such a pool to store the GParamSpecs of the properties all object +types.

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gobject-Generic-values.html b/docs/reference/gobject/html/gobject-Generic-values.html new file mode 100644 index 0000000..e56afae --- /dev/null +++ b/docs/reference/gobject/html/gobject-Generic-values.html @@ -0,0 +1,1089 @@ + + + + +Generic values: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Generic values

+

Generic values — A polymorphic type that can hold values of any + other type

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define +G_VALUE_HOLDS() +
#define +G_VALUE_TYPE() +
#define +G_VALUE_TYPE_NAME() +
#define +G_TYPE_IS_VALUE() +
#define +G_TYPE_IS_VALUE_ABSTRACT() +
#define +G_IS_VALUE() +
#defineG_TYPE_VALUE
#defineG_TYPE_VALUE_ARRAY
+GValue * + +g_value_init () +
+void + +g_value_copy () +
+GValue * + +g_value_reset () +
+void + +g_value_unset () +
+void + +g_value_init_from_instance () +
+void + +g_value_set_instance () +
+gboolean + +g_value_fits_pointer () +
+gpointer + +g_value_peek_pointer () +
+gboolean + +g_value_type_compatible () +
+gboolean + +g_value_type_transformable () +
+gboolean + +g_value_transform () +
+void + +(*GValueTransform) () +
+void + +g_value_register_transform_func () +
+gchar * + +g_strdup_value_contents () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
#defineG_VALUE_INIT
 GValue
+
+
+

Includes

+
#include <glib-object.h>
+
+
+
+

Description

+

The GValue structure is basically a variable container that consists +of a type identifier and a specific value of that type. +The type identifier within a GValue structure always determines the +type of the associated value. +To create a undefined GValue structure, simply create a zero-filled +GValue structure. To initialize the GValue, use the g_value_init() +function. A GValue cannot be used until it is initialized. +The basic type operations (such as freeing and copying) are determined +by the GTypeValueTable associated with the type ID stored in the GValue. +Other GValue operations (such as converting values between types) are +provided by this interface.

+

The code in the example program below demonstrates GValue's +features.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
#include <glib-object.h>
+
+static void
+int2string (const GValue *src_value,
+            GValue       *dest_value)
+{
+  if (g_value_get_int (src_value) == 42)
+    g_value_set_static_string (dest_value, "An important number");
+  else
+    g_value_set_static_string (dest_value, "What's that?");
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+  // GValues must be initialized
+  GValue a = G_VALUE_INIT;
+  GValue b = G_VALUE_INIT;
+  const gchar *message;
+
+  // The GValue starts empty
+  g_assert (!G_VALUE_HOLDS_STRING (&a));
+
+  // Put a string in it
+  g_value_init (&a, G_TYPE_STRING);
+  g_assert (G_VALUE_HOLDS_STRING (&a));
+  g_value_set_static_string (&a, "Hello, world!");
+  g_printf ("%s\n", g_value_get_string (&a));
+
+  // Reset it to its pristine state
+  g_value_unset (&a);
+
+  // It can then be reused for another type
+  g_value_init (&a, G_TYPE_INT);
+  g_value_set_int (&a, 42);
+
+  // Attempt to transform it into a GValue of type STRING
+  g_value_init (&b, G_TYPE_STRING);
+
+  // An INT is transformable to a STRING
+  g_assert (g_value_type_transformable (G_TYPE_INT, G_TYPE_STRING));
+
+  g_value_transform (&a, &b);
+  g_printf ("%s\n", g_value_get_string (&b));
+
+  // Attempt to transform it again using a custom transform function
+  g_value_register_transform_func (G_TYPE_INT, G_TYPE_STRING, int2string);
+  g_value_transform (&a, &b);
+  g_printf ("%s\n", g_value_get_string (&b));
+  return 0;
+}
+
+ +

+
+
+

Functions

+
+

G_VALUE_HOLDS()

+
#define G_VALUE_HOLDS(value,type) (G_TYPE_CHECK_VALUE_TYPE ((value), (type)))
+
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

A GValue structure.

 

type

A GType value.

 
+
+
+

Returns

+

TRUE if value +holds the type +.

+
+
+
+
+

G_VALUE_TYPE()

+
#define G_VALUE_TYPE(value)		(((GValue*) (value))->g_type)
+
+

Get the type identifier of value +.

+
+

Parameters

+
+++++ + + + + + +

value

A GValue structure.

 
+
+
+

Returns

+

the GType.

+
+
+
+
+

G_VALUE_TYPE_NAME()

+
#define G_VALUE_TYPE_NAME(value) (g_type_name (G_VALUE_TYPE (value)))
+
+

Gets the type name of value +.

+
+

Parameters

+
+++++ + + + + + +

value

A GValue structure.

 
+
+
+

Returns

+

the type name.

+
+
+
+
+

G_TYPE_IS_VALUE()

+
#define G_TYPE_IS_VALUE(type)		(g_type_check_is_value_type (type))
+
+

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.

+
+

Parameters

+
+++++ + + + + + +

type

A GType value.

 
+
+
+

Returns

+

Whether type +is suitable as a GValue type.

+
+
+
+
+

G_TYPE_IS_VALUE_ABSTRACT()

+
#define G_TYPE_IS_VALUE_ABSTRACT(type)          (g_type_test_flags ((type), G_TYPE_FLAG_VALUE_ABSTRACT))
+
+

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.

+
+

Parameters

+
+++++ + + + + + +

type

A GType value

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_IS_VALUE()

+
#define G_IS_VALUE(value)		(G_TYPE_CHECK_VALUE (value))
+
+

Checks if value + is a valid and initialized GValue structure.

+
+

Parameters

+
+++++ + + + + + +

value

A GValue structure.

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_TYPE_VALUE

+
#define G_TYPE_VALUE (g_value_get_type ())
+
+

The type ID of the "GValue" type which is a boxed type, +used to pass around pointers to GValues.

+
+
+
+

G_TYPE_VALUE_ARRAY

+
#define G_TYPE_VALUE_ARRAY (g_value_array_get_type ())
+
+
+

G_TYPE_VALUE_ARRAY has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use GArray instead of GValueArray

+
+

The type ID of the "GValueArray" type which is a boxed type, +used to pass around pointers to GValueArrays.

+
+
+
+

g_value_init ()

+
GValue *
+g_value_init (GValue *value,
+              GType g_type);
+

Initializes value + with the default value of type +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

A zero-filled (uninitialized) GValue structure.

 

g_type

Type the GValue should hold values of.

 
+
+
+

Returns

+

the GValue structure that has been passed in.

+

[transfer none]

+
+
+
+
+

g_value_copy ()

+
void
+g_value_copy (const GValue *src_value,
+              GValue *dest_value);
+

Copies the value of src_value + into dest_value +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

src_value

An initialized GValue structure.

 

dest_value

An initialized GValue structure of the same type as src_value +.

 
+
+
+
+
+

g_value_reset ()

+
GValue *
+g_value_reset (GValue *value);
+

Clears the current value in value + and resets it to the default value +(as if the value had just been initialized).

+
+

Parameters

+
+++++ + + + + + +

value

An initialized GValue structure.

 
+
+
+

Returns

+

the GValue structure that has been passed in

+
+
+
+
+

g_value_unset ()

+
void
+g_value_unset (GValue *value);
+

Clears the current value in value + (if any) and "unsets" the type, +this releases all resources associated with this GValue. An unset +value is the same as an uninitialized (zero-filled) GValue +structure.

+
+

Parameters

+
+++++ + + + + + +

value

An initialized GValue structure.

 
+
+
+
+
+

g_value_init_from_instance ()

+
void
+g_value_init_from_instance (GValue *value,
+                            gpointer instance);
+

Initializes and sets value + from an instantiatable type via the +value_table's collect_value() function.

+

Note: The value + will be initialised with the exact type of +instance +. If you wish to set the value +'s type to a different GType +(such as a parent class GType), you need to manually call +g_value_init() and g_value_set_instance().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

An uninitialized GValue structure.

 

instance

the instance.

[type GObject.TypeInstance]
+
+

Since: 2.42

+
+
+
+

g_value_set_instance ()

+
void
+g_value_set_instance (GValue *value,
+                      gpointer instance);
+

Sets value + from an instantiatable type via the +value_table's collect_value() function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

An initialized GValue structure.

 

instance

the instance.

[allow-none]
+
+
+
+
+

g_value_fits_pointer ()

+
gboolean
+g_value_fits_pointer (const GValue *value);
+

Determines if value + will fit inside the size of a pointer value. +This is an internal function introduced mainly for C marshallers.

+
+

Parameters

+
+++++ + + + + + +

value

An initialized GValue structure.

 
+
+
+

Returns

+

TRUE if value +will fit inside a pointer value.

+
+
+
+
+

g_value_peek_pointer ()

+
gpointer
+g_value_peek_pointer (const GValue *value);
+

Returns the value contents as pointer. This function asserts that +g_value_fits_pointer() returned TRUE for the passed in value. +This is an internal function introduced mainly for C marshallers.

+
+

Parameters

+
+++++ + + + + + +

value

An initialized GValue structure

 
+
+
+

Returns

+

the value contents as pointer.

+

[transfer none]

+
+
+
+
+

g_value_type_compatible ()

+
gboolean
+g_value_type_compatible (GType src_type,
+                         GType dest_type);
+

Returns whether a GValue of type src_type + can be copied into +a GValue of type dest_type +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

src_type

source type to be copied.

 

dest_type

destination type for copying.

 
+
+
+

Returns

+

TRUE if g_value_copy() is possible with src_type +and dest_type +.

+
+
+
+
+

g_value_type_transformable ()

+
gboolean
+g_value_type_transformable (GType src_type,
+                            GType dest_type);
+

Check whether g_value_transform() is able to transform values +of type src_type + into values of type dest_type +. Note that for +the types to be transformable, they must be compatible and a +transform function must be registered.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

src_type

Source type.

 

dest_type

Target type.

 
+
+
+

Returns

+

TRUE if the transformation is possible, FALSE otherwise.

+
+
+
+
+

g_value_transform ()

+
gboolean
+g_value_transform (const GValue *src_value,
+                   GValue *dest_value);
+

Tries to cast the contents of src_value + into a type appropriate +to store in dest_value +, e.g. to transform a G_TYPE_INT value +into a G_TYPE_FLOAT value. Performing transformations between +value types might incur precision lossage. Especially +transformations into strings might reveal seemingly arbitrary +results and shouldn't be relied upon for production code (such +as rcfile value or object property serialization).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

src_value

Source value.

 

dest_value

Target value.

 
+
+
+

Returns

+

Whether a transformation rule was found and could be applied. +Upon failing transformations, dest_value +is left untouched.

+
+
+
+
+

GValueTransform ()

+
void
+(*GValueTransform) (const GValue *src_value,
+                    GValue *dest_value);
+

The type of value transformation functions which can be registered with +g_value_register_transform_func().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

src_value

Source value.

 

dest_value

Target value.

 
+
+
+
+
+

g_value_register_transform_func ()

+
void
+g_value_register_transform_func (GType src_type,
+                                 GType dest_type,
+                                 GValueTransform transform_func);
+

Registers a value transformation function for use in g_value_transform(). +A previously registered transformation function for src_type + and dest_type + +will be replaced.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

src_type

Source type.

 

dest_type

Target type.

 

transform_func

a function which transforms values of type src_type +into value of type dest_type +

 
+
+
+
+
+

g_strdup_value_contents ()

+
gchar *
+g_strdup_value_contents (const GValue *value);
+

Return a newly allocated string, which describes the contents of a +GValue. The main purpose of this function is to describe GValue +contents for debugging output, the way in which the contents are +described may change between different GLib versions.

+
+

Parameters

+
+++++ + + + + + +

value

GValue which contents are to be described.

 
+
+
+

Returns

+

Newly allocated string.

+
+
+
+
+

Types and Values

+
+

G_VALUE_INIT

+
#define G_VALUE_INIT  { 0, { { 0 } } }
+
+

A GValue must be initialized before it can be used. This macro can +be used as initializer instead of an explicit { 0 } when declaring +a variable, but it cannot be assigned to a variable.

+
+ + + + + + + +
1
GValue value = G_VALUE_INIT;
+
+ +

+

Since: 2.30

+
+
+
+

GValue

+
typedef struct {
+} 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.

+
+
+
+

See Also

+

The fundamental types which all support GValue + operations and thus can be used as a type initializer for + g_value_init() are defined by a separate interface. See the + standard values API + for details

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gobject-Signals.html b/docs/reference/gobject/html/gobject-Signals.html new file mode 100644 index 0000000..84ee85b --- /dev/null +++ b/docs/reference/gobject/html/gobject-Signals.html @@ -0,0 +1,3440 @@ + + + + +Signals: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Signals

+

Signals — A means for customization of object behaviour + and a general purpose notification mechanism

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+gboolean + +(*GSignalAccumulator) () +
+gboolean + +(*GSignalEmissionHook) () +
#defineG_SIGNAL_TYPE_STATIC_SCOPE
+guint + +g_signal_new () +
+guint + +g_signal_newv () +
+guint + +g_signal_new_valist () +
+void + +g_signal_set_va_marshaller () +
+void + +g_signal_query () +
+guint + +g_signal_lookup () +
const gchar * + +g_signal_name () +
+guint * + +g_signal_list_ids () +
+void + +g_signal_emit () +
+void + +g_signal_emit_by_name () +
+void + +g_signal_emitv () +
+void + +g_signal_emit_valist () +
#define +g_signal_connect() +
#define +g_signal_connect_after() +
#define +g_signal_connect_swapped() +
+gulong + +g_signal_connect_object () +
+gulong + +g_signal_connect_data () +
+gulong + +g_signal_connect_closure () +
+gulong + +g_signal_connect_closure_by_id () +
+void + +g_signal_handler_block () +
+void + +g_signal_handler_unblock () +
+void + +g_signal_handler_disconnect () +
+gulong + +g_signal_handler_find () +
+guint + +g_signal_handlers_block_matched () +
+guint + +g_signal_handlers_unblock_matched () +
+guint + +g_signal_handlers_disconnect_matched () +
+gboolean + +g_signal_handler_is_connected () +
#define +g_signal_handlers_block_by_func() +
#define +g_signal_handlers_unblock_by_func() +
#define +g_signal_handlers_disconnect_by_func() +
#define +g_signal_handlers_disconnect_by_data() +
+gboolean + +g_signal_has_handler_pending () +
+void + +g_signal_stop_emission () +
+void + +g_signal_stop_emission_by_name () +
+void + +g_signal_override_class_closure () +
+void + +g_signal_chain_from_overridden () +
+guint + +g_signal_new_class_handler () +
+void + +g_signal_override_class_handler () +
+void + +g_signal_chain_from_overridden_handler () +
+gulong + +g_signal_add_emission_hook () +
+void + +g_signal_remove_emission_hook () +
+gboolean + +g_signal_parse_name () +
+GSignalInvocationHint * + +g_signal_get_invocation_hint () +
+GClosure * + +g_signal_type_cclosure_new () +
+gboolean + +g_signal_accumulator_first_wins () +
+gboolean + +g_signal_accumulator_true_handled () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
structGSignalInvocationHint
typedefGSignalCMarshaller
typedefGSignalCVaMarshaller
enumGSignalFlags
enumGSignalMatchType
structGSignalQuery
#defineG_SIGNAL_MATCH_MASK
#defineG_SIGNAL_FLAGS_MASK
enumGConnectFlags
+
+
+

Includes

+
#include <glib-object.h>
+
+
+
+

Description

+

The basic concept of the signal system is that of the emission +of a signal. Signals are introduced per-type and are identified +through strings. Signals introduced for a parent type are available +in derived types as well, so basically they are a per-type facility +that is inherited.

+

A signal emission mainly involves invocation of a certain set of +callbacks in precisely defined manner. There are two main categories +of such callbacks, per-object ones and user provided ones. +(Although signals can deal with any kind of instantiatable type, I'm +referring to those types as "object types" in the following, simply +because that is the context most users will encounter signals in.) +The per-object callbacks are most often referred to as "object method +handler" or "default (signal) handler", while user provided callbacks are +usually just called "signal handler".

+

The object method handler is provided at signal creation time (this most +frequently happens at the end of an object class' creation), while user +provided handlers are frequently connected and disconnected to/from a +certain signal on certain object instances.

+

A signal emission consists of five stages, unless prematurely stopped:

+
    +
  1. Invocation of the object method handler for G_SIGNAL_RUN_FIRST signals

  2. +
  3. Invocation of normal user-provided signal handlers (where the after + +flag is not set)

  4. +
  5. Invocation of the object method handler for G_SIGNAL_RUN_LAST signals

  6. +
  7. Invocation of user provided signal handlers (where the after + flag is set)

  8. +
  9. Invocation of the object method handler for G_SIGNAL_RUN_CLEANUP signals

  10. +
+

The user-provided signal handlers are called in the order they were +connected in.

+

All handlers may prematurely stop a signal emission, and any number of +handlers may be connected, disconnected, blocked or unblocked during +a signal emission.

+

There are certain criteria for skipping user handlers in stages 2 and 4 +of a signal emission.

+

First, user handlers may be blocked. Blocked handlers are omitted during +callback invocation, to return from the blocked state, a handler has to +get unblocked exactly the same amount of times it has been blocked before.

+

Second, upon emission of a G_SIGNAL_DETAILED signal, an additional +detail + argument passed in to g_signal_emit() has to match the detail +argument of the signal handler currently subject to invocation. +Specification of no detail argument for signal handlers (omission of the +detail part of the signal specification upon connection) serves as a +wildcard and matches any detail argument passed in to emission.

+
+

Memory management of signal handlers

+

If you are connecting handlers to signals and using a GObject instance as +your signal handler user data, you should remember to pair calls to +g_signal_connect() with calls to g_signal_handler_disconnect() or +g_signal_handlers_disconnect_by_func(). While signal handlers are +automatically disconnected when the object emitting the signal is finalised, +they are not automatically disconnected when the signal handler user data is +destroyed. If this user data is a GObject instance, using it from a +signal handler after it has been finalised is an error.

+

There are two strategies for managing such user data. The first is to +disconnect the signal handler (using g_signal_handler_disconnect() or +g_signal_handlers_disconnect_by_func()) when the user data (object) is +finalised; this has to be implemented manually. For non-threaded programs, +g_signal_connect_object() can be used to implement this automatically. +Currently, however, it is unsafe to use in threaded programs.

+

The second is to hold a strong reference on the user data until after the +signal is disconnected for other reasons. This can be implemented +automatically using g_signal_connect_data().

+

The first approach is recommended, as the second approach can result in +effective memory leaks of the user data if the signal handler is never +disconnected for some reason.

+
+
+
+

Functions

+
+

GSignalAccumulator ()

+
gboolean
+(*GSignalAccumulator) (GSignalInvocationHint *ihint,
+                       GValue *return_accu,
+                       const GValue *handler_return,
+                       gpointer data);
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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.

 
+
+
+

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.

+
+
+
+
+

GSignalEmissionHook ()

+
gboolean
+(*GSignalEmissionHook) (GSignalInvocationHint *ihint,
+                        guint n_param_values,
+                        const GValue *param_values,
+                        gpointer data);
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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

the instance on which +the signal was emitted, followed by the parameters of the emission.

[array length=n_param_values]

data

user data associated with the hook.

 
+
+
+

Returns

+

whether it wants to stay connected. If it returns FALSE, the signal +hook is disconnected (and destroyed).

+
+
+
+
+

G_SIGNAL_TYPE_STATIC_SCOPE

+
#define G_SIGNAL_TYPE_STATIC_SCOPE (G_TYPE_FLAG_RESERVED_ID_BIT)
+
+

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 | G_SIGNAL_TYPE_STATIC_SCOPE +to the corresponding argument of g_signal_new().

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
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);
+
+ +

+
+
+
+

g_signal_new ()

+
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,
+              ...);
+

Creates a new signal. (This is usually done in the class initializer.)

+

A signal name consists of segments consisting of ASCII letters and +digits, separated by either the '-' or '_' character. The first +character of a signal name must be a letter. Names which violate these +rules lead to undefined behaviour of the GSignal system.

+

When registering a signal and looking up a signal, either separator can +be used, but they cannot be mixed.

+

If 0 is used for class_offset + subclasses cannot override the class handler +in their class_init method by doing super_class->signal_handler = my_signal_handler. +Instead they will have to use g_signal_override_class_handler().

+

If c_marshaller is NULL, g_cclosure_marshal_generic() will be used as +the marshaller for this signal.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

signal_name

the name for the signal

 

itype

the type this signal pertains to. It will also pertain to +types which are derived from this type.

 

signal_flags

a combination of GSignalFlags specifying detail of when +the default handler is to be invoked. You should at least specify +G_SIGNAL_RUN_FIRST or G_SIGNAL_RUN_LAST.

 

class_offset

The offset of the function pointer in the class structure +for this type. Used to invoke a class method generically. Pass 0 to +not associate a class method slot with this signal.

 

accumulator

the accumulator for this signal; may be NULL.

 

accu_data

user data for the accumulator +.

 

c_marshaller

the function to translate arrays of parameter +values to signal emissions into C language callback invocations or NULL.

[allow-none]

return_type

the type of return value, or G_TYPE_NONE for a signal +without a return value.

 

n_params

the number of parameter types to follow.

 

...

a list of types, one for each parameter.

 
+
+
+

Returns

+

the signal id

+
+
+
+
+

g_signal_newv ()

+
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);
+

Creates a new signal. (This is usually done in the class initializer.)

+

See g_signal_new() for details on allowed signal names.

+

If c_marshaller is NULL, g_cclosure_marshal_generic() will be used as +the marshaller for this signal.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

signal_name

the name for the signal

 

itype

the type this signal pertains to. It will also pertain to +types which are derived from this type

 

signal_flags

a combination of GSignalFlags specifying detail of when +the default handler is to be invoked. You should at least specify +G_SIGNAL_RUN_FIRST or G_SIGNAL_RUN_LAST

 

class_closure

The closure to invoke on signal emission; +may be NULL.

[allow-none]

accumulator

the accumulator for this signal; may be NULL.

[allow-none]

accu_data

user data for the accumulator +

 

c_marshaller

the function to translate arrays of +parameter values to signal emissions into C language callback +invocations or NULL.

[allow-none]

return_type

the type of return value, or G_TYPE_NONE for a signal +without a return value

 

n_params

the length of param_types +

 

param_types

an array of types, one for +each parameter.

[array length=n_params]
+
+
+

Returns

+

the signal id

+
+
+
+
+

g_signal_new_valist ()

+
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);
+

Creates a new signal. (This is usually done in the class initializer.)

+

See g_signal_new() for details on allowed signal names.

+

If c_marshaller is NULL, g_cclosure_marshal_generic() will be used as +the marshaller for this signal.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

signal_name

the name for the signal

 

itype

the type this signal pertains to. It will also pertain to +types which are derived from this type.

 

signal_flags

a combination of GSignalFlags specifying detail of when +the default handler is to be invoked. You should at least specify +G_SIGNAL_RUN_FIRST or G_SIGNAL_RUN_LAST.

 

class_closure

The closure to invoke on signal emission; may be NULL.

 

accumulator

the accumulator for this signal; may be NULL.

 

accu_data

user data for the accumulator +.

 

c_marshaller

the function to translate arrays of parameter +values to signal emissions into C language callback invocations or NULL.

[allow-none]

return_type

the type of return value, or G_TYPE_NONE for a signal +without a return value.

 

n_params

the number of parameter types in args +.

 

args

va_list of GType, one for each parameter.

 
+
+
+

Returns

+

the signal id

+
+
+
+
+

g_signal_set_va_marshaller ()

+
void
+g_signal_set_va_marshaller (guint signal_id,
+                            GType instance_type,
+                            GSignalCVaMarshaller va_marshaller);
+

Change the GSignalCVaMarshaller used for a given signal. This is a +specialised form of the marshaller that can often be used for the +common case of a single connected signal handler and avoids the +overhead of GValue. Its use is optional.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

signal_id

the signal id

 

instance_type

the instance type on which to set the marshaller.

 

va_marshaller

the marshaller to set.

 
+
+

Since: 2.32

+
+
+
+

g_signal_query ()

+
void
+g_signal_query (guint signal_id,
+                GSignalQuery *query);
+

Queries the signal system for in-depth information about a +specific signal. This function will fill in a user-provided +structure to hold signal-specific information. If an invalid +signal id is passed in, the signal_id + member of the GSignalQuery +is 0. All members filled into the GSignalQuery structure should +be considered constant and have to be left untouched.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

signal_id

The signal id of the signal to query information for.

 

query

A user provided structure that is +filled in with constant values upon success.

[out caller-allocates]
+
+
+
+
+

g_signal_lookup ()

+
guint
+g_signal_lookup (const gchar *name,
+                 GType itype);
+

Given the name of the signal and the type of object it connects to, gets +the signal's identifying integer. Emitting the signal by number is +somewhat faster than using the name each time.

+

Also tries the ancestors of the given type.

+

See g_signal_new() for details on allowed signal names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

name

the signal's name.

 

itype

the type that the signal operates on.

 
+
+
+

Returns

+

the signal's identifying number, or 0 if no signal was found.

+
+
+
+
+

g_signal_name ()

+
const gchar *
+g_signal_name (guint signal_id);
+

Given the signal's identifier, finds its name.

+

Two different signals may have the same name, if they have differing types.

+
+

Parameters

+
+++++ + + + + + +

signal_id

the signal's identifying number.

 
+
+
+

Returns

+

the signal name, or NULL if the signal number was invalid.

+
+
+
+
+

g_signal_list_ids ()

+
guint *
+g_signal_list_ids (GType itype,
+                   guint *n_ids);
+

Lists the signals by id that a certain instance or interface type +created. Further information about the signals can be acquired through +g_signal_query().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

itype

Instance or interface type.

 

n_ids

Location to store the number of signal ids for itype +.

 
+
+
+

Returns

+

Newly allocated array of signal IDs.

+

[array length=n_ids][transfer full]

+
+
+
+
+

g_signal_emit ()

+
void
+g_signal_emit (gpointer instance,
+               guint signal_id,
+               GQuark detail,
+               ...);
+

Emits a signal.

+

Note that g_signal_emit() resets the return value to the default +if no handlers are connected, in contrast to g_signal_emitv().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

instance

the instance the signal is being emitted on.

[type GObject.Object]

signal_id

the signal id

 

detail

the detail

 

...

parameters to be passed to the signal, followed by a +location for the return value. If the return type of the signal +is G_TYPE_NONE, the return value location can be omitted.

 
+
+
+
+
+

g_signal_emit_by_name ()

+
void
+g_signal_emit_by_name (gpointer instance,
+                       const gchar *detailed_signal,
+                       ...);
+

Emits a signal.

+

Note that g_signal_emit_by_name() resets the return value to the default +if no handlers are connected, in contrast to g_signal_emitv().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

instance

the instance the signal is being emitted on.

[type GObject.Object]

detailed_signal

a string of the form "signal-name::detail".

 

...

parameters to be passed to the signal, followed by a +location for the return value. If the return type of the signal +is G_TYPE_NONE, the return value location can be omitted.

 
+
+
+
+
+

g_signal_emitv ()

+
void
+g_signal_emitv (const GValue *instance_and_params,
+                guint signal_id,
+                GQuark detail,
+                GValue *return_value);
+

Emits a signal.

+

Note that g_signal_emitv() doesn't change return_value + if no handlers are +connected, in contrast to g_signal_emit() and g_signal_emit_valist().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

instance_and_params

argument list for the signal emission. +The first element in the array is a GValue for the instance the signal +is being emitted on. The rest are any arguments to be passed to the signal.

[array]

signal_id

the signal id

 

detail

the detail

 

return_value

Location to +store the return value of the signal emission. This must be provided if the +specified signal returns a value, but may be ignored otherwise.

[inout][optional]
+
+
+
+
+

g_signal_emit_valist ()

+
void
+g_signal_emit_valist (gpointer instance,
+                      guint signal_id,
+                      GQuark detail,
+                      va_list var_args);
+

Emits a signal.

+

Note that g_signal_emit_valist() resets the return value to the default +if no handlers are connected, in contrast to g_signal_emitv().

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

instance

the instance the signal is being +emitted on.

[type GObject.TypeInstance]

signal_id

the signal id

 

detail

the detail

 

var_args

a list of parameters to be passed to the signal, followed by a +location for the return value. If the return type of the signal +is G_TYPE_NONE, the return value location can be omitted.

 
+
+
+
+
+

g_signal_connect()

+
#define             g_signal_connect(instance, detailed_signal, c_handler, data)
+

Connects a GCallback function to a signal for a particular object.

+

The handler will be called before the default handler of the signal.

+

See memory management of signal handlers for +details on how to handle the return value and memory management of data +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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.

 
+
+
+

Returns

+

the handler id (always greater than 0 for successful connections)

+
+
+
+
+

g_signal_connect_after()

+
#define             g_signal_connect_after(instance, detailed_signal, c_handler, data)
+

Connects a GCallback function to a signal for a particular object.

+

The handler will be called after the default handler of the signal.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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.

 
+
+
+

Returns

+

the handler id (always greater than 0 for successful connections)

+
+
+
+
+

g_signal_connect_swapped()

+
#define             g_signal_connect_swapped(instance, detailed_signal, c_handler, data)
+

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. This is useful when calling pre-existing functions to +operate purely on the data +, rather than the instance +: swapping the +parameters avoids the need to write a wrapper function.

+

For example, this allows the shorter code:

+
+ + + + + + + +
1
+2
g_signal_connect_swapped (button, "clicked",
+                          (GCallback) gtk_widget_hide, other_widget);
+
+ +

+

Rather than the cumbersome:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
static void
+button_clicked_cb (GtkButton *button, GtkWidget *other_widget)
+{
+    gtk_widget_hide (other_widget);
+}
+
+…
+
+g_signal_connect (button, "clicked",
+                  (GCallback) button_clicked_cb, other_widget);
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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.

 
+
+
+

Returns

+

the handler ID (always greater than 0 for successful connections)

+
+
+
+
+

g_signal_connect_object ()

+
gulong
+g_signal_connect_object (gpointer instance,
+                         const gchar *detailed_signal,
+                         GCallback c_handler,
+                         gpointer gobject,
+                         GConnectFlags connect_flags);
+

This is similar to g_signal_connect_data(), but uses a closure which +ensures that the gobject + stays alive during the call to c_handler + +by temporarily adding a reference count to gobject +.

+

When the gobject + is destroyed the signal handler will be automatically +disconnected. Note that this is not currently threadsafe (ie: +emitting a signal while gobject + is being destroyed in another thread +is not safe).

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

instance

the instance to connect to.

[type GObject.TypeInstance]

detailed_signal

a string of the form "signal-name::detail".

 

c_handler

the GCallback to connect.

 

gobject

the object to pass as data +to c_handler +.

[type GObject.Object][nullable]

connect_flags

a combination of GConnectFlags.

 
+
+
+

Returns

+

the handler id.

+
+
+
+
+

g_signal_connect_data ()

+
gulong
+g_signal_connect_data (gpointer instance,
+                       const gchar *detailed_signal,
+                       GCallback c_handler,
+                       gpointer data,
+                       GClosureNotify destroy_data,
+                       GConnectFlags connect_flags);
+

Connects a GCallback function to a signal for a particular object. Similar +to g_signal_connect(), but allows to provide a GClosureNotify for the data +which will be called when the signal handler is disconnected and no longer +used. Specify connect_flags + if you need ..._after() or +..._swapped() variants of this function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

instance

the instance to connect to.

[type GObject.Object]

detailed_signal

a string of the form "signal-name::detail".

 

c_handler

the GCallback to connect.

 

data

data to pass to c_handler +calls.

 

destroy_data

a GClosureNotify for data +.

 

connect_flags

a combination of GConnectFlags.

 
+
+
+

Returns

+

the handler id (always greater than 0 for successful connections)

+
+
+
+
+

g_signal_connect_closure ()

+
gulong
+g_signal_connect_closure (gpointer instance,
+                          const gchar *detailed_signal,
+                          GClosure *closure,
+                          gboolean after);
+

Connects a closure to a signal for a particular object.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

instance

the instance to connect to.

[type GObject.Object]

detailed_signal

a string of the form "signal-name::detail".

 

closure

the closure to connect.

 

after

whether the handler should be called before or after the +default handler of the signal.

 
+
+
+

Returns

+

the handler id (always greater than 0 for successful connections)

+
+
+
+
+

g_signal_connect_closure_by_id ()

+
gulong
+g_signal_connect_closure_by_id (gpointer instance,
+                                guint signal_id,
+                                GQuark detail,
+                                GClosure *closure,
+                                gboolean after);
+

Connects a closure to a signal for a particular object.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

instance

the instance to connect to.

[type GObject.Object]

signal_id

the id of the signal.

 

detail

the detail.

 

closure

the closure to connect.

 

after

whether the handler should be called before or after the +default handler of the signal.

 
+
+
+

Returns

+

the handler id (always greater than 0 for successful connections)

+
+
+
+
+

g_signal_handler_block ()

+
void
+g_signal_handler_block (gpointer instance,
+                        gulong handler_id);
+

Blocks a handler of an instance so it will not be called during any +signal emissions unless it is unblocked again. Thus "blocking" a +signal handler means to temporarily deactive it, a signal handler +has to be unblocked exactly the same amount of times it has been +blocked before to become active again.

+

The handler_id + has to be a valid signal handler id, connected to a +signal of instance +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

instance

The instance to block the signal handler of.

[type GObject.Object]

handler_id

Handler id of the handler to be blocked.

 
+
+
+
+
+

g_signal_handler_unblock ()

+
void
+g_signal_handler_unblock (gpointer instance,
+                          gulong handler_id);
+

Undoes the effect of a previous g_signal_handler_block() call. A +blocked handler is skipped during signal emissions and will not be +invoked, unblocking it (for exactly the amount of times it has been +blocked before) reverts its "blocked" state, so the handler will be +recognized by the signal system and is called upon future or +currently ongoing signal emissions (since the order in which +handlers are called during signal emissions is deterministic, +whether the unblocked handler in question is called as part of a +currently ongoing emission depends on how far that emission has +proceeded yet).

+

The handler_id + has to be a valid id of a signal handler that is +connected to a signal of instance + and is currently blocked.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

instance

The instance to unblock the signal handler of.

[type GObject.Object]

handler_id

Handler id of the handler to be unblocked.

 
+
+
+
+
+

g_signal_handler_disconnect ()

+
void
+g_signal_handler_disconnect (gpointer instance,
+                             gulong handler_id);
+

Disconnects a handler from an instance so it will not be called during +any future or currently ongoing emissions of the signal it has been +connected to. The handler_id + becomes invalid and may be reused.

+

The handler_id + has to be a valid signal handler id, connected to a +signal of instance +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

instance

The instance to remove the signal handler from.

[type GObject.Object]

handler_id

Handler id of the handler to be disconnected.

 
+
+
+
+
+

g_signal_handler_find ()

+
gulong
+g_signal_handler_find (gpointer instance,
+                       GSignalMatchType mask,
+                       guint signal_id,
+                       GQuark detail,
+                       GClosure *closure,
+                       gpointer func,
+                       gpointer data);
+

Finds the first signal handler that matches certain selection criteria. +The criteria mask is passed as an OR-ed combination of GSignalMatchType +flags, and the criteria values are passed as arguments. +The match mask + has to be non-0 for successful matches. +If no handler was found, 0 is returned.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

instance

The instance owning the signal handler to be found.

[type GObject.Object]

mask

Mask indicating which of signal_id +, detail +, closure +, func +and/or data +the handler has to match.

 

signal_id

Signal the handler has to be connected to.

 

detail

Signal detail the handler has to be connected to.

 

closure

The closure the handler will invoke.

[allow-none]

func

The C closure callback of the handler (useless for non-C closures).

 

data

The closure data of the handler's closure.

 
+
+
+

Returns

+

A valid non-0 signal handler id for a successful match.

+
+
+
+
+

g_signal_handlers_block_matched ()

+
guint
+g_signal_handlers_block_matched (gpointer instance,
+                                 GSignalMatchType mask,
+                                 guint signal_id,
+                                 GQuark detail,
+                                 GClosure *closure,
+                                 gpointer func,
+                                 gpointer data);
+

Blocks all handlers on an instance that match a certain selection criteria. +The criteria mask is passed as an OR-ed combination of GSignalMatchType +flags, and the criteria values are passed as arguments. +Passing at least one of the G_SIGNAL_MATCH_CLOSURE, G_SIGNAL_MATCH_FUNC +or G_SIGNAL_MATCH_DATA match flags is required for successful matches. +If no handlers were found, 0 is returned, the number of blocked handlers +otherwise.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

instance

The instance to block handlers from.

[type GObject.Object]

mask

Mask indicating which of signal_id +, detail +, closure +, func +and/or data +the handlers have to match.

 

signal_id

Signal the handlers have to be connected to.

 

detail

Signal detail the handlers have to be connected to.

 

closure

The closure the handlers will invoke.

[allow-none]

func

The C closure callback of the handlers (useless for non-C closures).

 

data

The closure data of the handlers' closures.

 
+
+
+

Returns

+

The number of handlers that matched.

+
+
+
+
+

g_signal_handlers_unblock_matched ()

+
guint
+g_signal_handlers_unblock_matched (gpointer instance,
+                                   GSignalMatchType mask,
+                                   guint signal_id,
+                                   GQuark detail,
+                                   GClosure *closure,
+                                   gpointer func,
+                                   gpointer data);
+

Unblocks all handlers on an instance that match a certain selection +criteria. The criteria mask is passed as an OR-ed combination of +GSignalMatchType flags, and the criteria values are passed as arguments. +Passing at least one of the G_SIGNAL_MATCH_CLOSURE, G_SIGNAL_MATCH_FUNC +or G_SIGNAL_MATCH_DATA match flags is required for successful matches. +If no handlers were found, 0 is returned, the number of unblocked handlers +otherwise. The match criteria should not apply to any handlers that are +not currently blocked.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

instance

The instance to unblock handlers from.

[type GObject.Object]

mask

Mask indicating which of signal_id +, detail +, closure +, func +and/or data +the handlers have to match.

 

signal_id

Signal the handlers have to be connected to.

 

detail

Signal detail the handlers have to be connected to.

 

closure

The closure the handlers will invoke.

[allow-none]

func

The C closure callback of the handlers (useless for non-C closures).

 

data

The closure data of the handlers' closures.

 
+
+
+

Returns

+

The number of handlers that matched.

+
+
+
+
+

g_signal_handlers_disconnect_matched ()

+
guint
+g_signal_handlers_disconnect_matched (gpointer instance,
+                                      GSignalMatchType mask,
+                                      guint signal_id,
+                                      GQuark detail,
+                                      GClosure *closure,
+                                      gpointer func,
+                                      gpointer data);
+

Disconnects all handlers on an instance that match a certain +selection criteria. The criteria mask is passed as an OR-ed +combination of GSignalMatchType flags, and the criteria values are +passed as arguments. Passing at least one of the +G_SIGNAL_MATCH_CLOSURE, G_SIGNAL_MATCH_FUNC or +G_SIGNAL_MATCH_DATA match flags is required for successful +matches. If no handlers were found, 0 is returned, the number of +disconnected handlers otherwise.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

instance

The instance to remove handlers from.

[type GObject.Object]

mask

Mask indicating which of signal_id +, detail +, closure +, func +and/or data +the handlers have to match.

 

signal_id

Signal the handlers have to be connected to.

 

detail

Signal detail the handlers have to be connected to.

 

closure

The closure the handlers will invoke.

[allow-none]

func

The C closure callback of the handlers (useless for non-C closures).

 

data

The closure data of the handlers' closures.

 
+
+
+

Returns

+

The number of handlers that matched.

+
+
+
+
+

g_signal_handler_is_connected ()

+
gboolean
+g_signal_handler_is_connected (gpointer instance,
+                               gulong handler_id);
+

Returns whether handler_id + is the id of a handler connected to instance +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

instance

The instance where a signal handler is sought.

[type GObject.Object]

handler_id

the handler id.

 
+
+
+

Returns

+

whether handler_id +identifies a handler connected to instance +.

+
+
+
+
+

g_signal_handlers_block_by_func()

+
#define             g_signal_handlers_block_by_func(instance, func, data)
+

Blocks all handlers on an instance that match func + and data +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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.

 
+
+
+

Returns

+

The number of handlers that matched.

+
+
+
+
+

g_signal_handlers_unblock_by_func()

+
#define             g_signal_handlers_unblock_by_func(instance, func, data)
+

Unblocks all handlers on an instance that match func + and data +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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.

 
+
+
+

Returns

+

The number of handlers that matched.

+
+
+
+
+

g_signal_handlers_disconnect_by_func()

+
#define             g_signal_handlers_disconnect_by_func(instance, func, data)
+

Disconnects all handlers on an instance that match func + and data +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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.

 
+
+
+

Returns

+

The number of handlers that matched.

+
+
+
+
+

g_signal_handlers_disconnect_by_data()

+
#define             g_signal_handlers_disconnect_by_data(instance, data)
+

Disconnects all handlers on an instance that match data +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

instance

The instance to remove handlers from

 

data

the closure data of the handlers' closures

 
+
+
+

Returns

+

The number of handlers that matched.

+
+

Since: 2.32

+
+
+
+

g_signal_has_handler_pending ()

+
gboolean
+g_signal_has_handler_pending (gpointer instance,
+                              guint signal_id,
+                              GQuark detail,
+                              gboolean may_be_blocked);
+

Returns whether there are any handlers connected to instance + for the +given signal id and detail.

+

If detail + is 0 then it will only match handlers that were connected +without detail. If detail + is non-zero then it will match handlers +connected both without detail and with the given detail. This is +consistent with how a signal emitted with detail + would be delivered +to those handlers.

+

Since 2.46 this also checks for a non-default class closure being +installed, as this is basically always what you want.

+

One example of when you might use this is when the arguments to the +signal are difficult to compute. A class implementor may opt to not +emit the signal if no one is attached anyway, thus saving the cost +of building the arguments.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

instance

the object whose signal handlers are sought.

[type GObject.Object]

signal_id

the signal id.

 

detail

the detail.

 

may_be_blocked

whether blocked handlers should count as match.

 
+
+
+

Returns

+

TRUE if a handler is connected to the signal, FALSE +otherwise.

+
+
+
+
+

g_signal_stop_emission ()

+
void
+g_signal_stop_emission (gpointer instance,
+                        guint signal_id,
+                        GQuark detail);
+

Stops a signal's current emission.

+

This will prevent the default method from running, if the signal was +G_SIGNAL_RUN_LAST and you connected normally (i.e. without the "after" +flag).

+

Prints a warning if used on a signal which isn't being emitted.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

instance

the object whose signal handlers you wish to stop.

[type GObject.Object]

signal_id

the signal identifier, as returned by g_signal_lookup().

 

detail

the detail which the signal was emitted with.

 
+
+
+
+
+

g_signal_stop_emission_by_name ()

+
void
+g_signal_stop_emission_by_name (gpointer instance,
+                                const gchar *detailed_signal);
+

Stops a signal's current emission.

+

This is just like g_signal_stop_emission() except it will look up the +signal id for you.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

instance

the object whose signal handlers you wish to stop.

[type GObject.Object]

detailed_signal

a string of the form "signal-name::detail".

 
+
+
+
+
+

g_signal_override_class_closure ()

+
void
+g_signal_override_class_closure (guint signal_id,
+                                 GType instance_type,
+                                 GClosure *class_closure);
+

Overrides the class closure (i.e. the default handler) for the given signal +for emissions on instances of instance_type +. instance_type + must be derived +from the type to which the signal belongs.

+

See g_signal_chain_from_overridden() and +g_signal_chain_from_overridden_handler() for how to chain up to the +parent class closure from inside the overridden one.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

signal_id

the signal id

 

instance_type

the instance type on which to override the class closure +for the signal.

 

class_closure

the closure.

 
+
+
+
+
+

g_signal_chain_from_overridden ()

+
void
+g_signal_chain_from_overridden (const GValue *instance_and_params,
+                                GValue *return_value);
+

Calls the original class closure of a signal. This function should only +be called from an overridden class closure; see +g_signal_override_class_closure() and +g_signal_override_class_handler().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

instance_and_params

(array) the argument list of the signal emission. +The first element in the array is a GValue for the instance the signal +is being emitted on. The rest are any arguments to be passed to the signal.

 

return_value

Location for the return value.

 
+
+
+
+
+

g_signal_new_class_handler ()

+
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,
+                            ...);
+

Creates a new signal. (This is usually done in the class initializer.)

+

This is a variant of g_signal_new() that takes a C callback instead +off a class offset for the signal's class handler. This function +doesn't need a function pointer exposed in the class structure of +an object definition, instead the function pointer is passed +directly and can be overriden by derived classes with +g_signal_override_class_closure() or +g_signal_override_class_handler()and chained to with +g_signal_chain_from_overridden() or +g_signal_chain_from_overridden_handler().

+

See g_signal_new() for information about signal names.

+

If c_marshaller is NULL, g_cclosure_marshal_generic() will be used as +the marshaller for this signal.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

signal_name

the name for the signal

 

itype

the type this signal pertains to. It will also pertain to +types which are derived from this type.

 

signal_flags

a combination of GSignalFlags specifying detail of when +the default handler is to be invoked. You should at least specify +G_SIGNAL_RUN_FIRST or G_SIGNAL_RUN_LAST.

 

class_handler

a GCallback which acts as class implementation of +this signal. Used to invoke a class method generically. Pass NULL to +not associate a class method with this signal.

 

accumulator

the accumulator for this signal; may be NULL.

 

accu_data

user data for the accumulator +.

 

c_marshaller

the function to translate arrays of parameter +values to signal emissions into C language callback invocations or NULL.

[allow-none]

return_type

the type of return value, or G_TYPE_NONE for a signal +without a return value.

 

n_params

the number of parameter types to follow.

 

...

a list of types, one for each parameter.

 
+
+
+

Returns

+

the signal id

+
+

Since: 2.18

+
+
+
+

g_signal_override_class_handler ()

+
void
+g_signal_override_class_handler (const gchar *signal_name,
+                                 GType instance_type,
+                                 GCallback class_handler);
+

Overrides the class closure (i.e. the default handler) for the +given signal for emissions on instances of instance_type + with +callback class_handler +. instance_type + must be derived from the +type to which the signal belongs.

+

See g_signal_chain_from_overridden() and +g_signal_chain_from_overridden_handler() for how to chain up to the +parent class closure from inside the overridden one.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

signal_name

the name for the signal

 

instance_type

the instance type on which to override the class handler +for the signal.

 

class_handler

the handler.

 
+
+

Since: 2.18

+
+
+
+

g_signal_chain_from_overridden_handler ()

+
void
+g_signal_chain_from_overridden_handler
+                               (gpointer instance,
+                                ...);
+

Calls the original class closure of a signal. This function should +only be called from an overridden class closure; see +g_signal_override_class_closure() and +g_signal_override_class_handler().

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

instance

the instance the signal is being +emitted on.

[type GObject.TypeInstance]

...

parameters to be passed to the parent class closure, followed by a +location for the return value. If the return type of the signal +is G_TYPE_NONE, the return value location can be omitted.

 
+
+

Since: 2.18

+
+
+
+

g_signal_add_emission_hook ()

+
gulong
+g_signal_add_emission_hook (guint signal_id,
+                            GQuark detail,
+                            GSignalEmissionHook hook_func,
+                            gpointer hook_data,
+                            GDestroyNotify data_destroy);
+

Adds an emission hook for a signal, which will get called for any emission +of that signal, independent of the instance. This is possible only +for signals which don't have G_SIGNAL_NO_HOOKS flag set.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

signal_id

the signal identifier, as returned by g_signal_lookup().

 

detail

the detail on which to call the hook.

 

hook_func

a GSignalEmissionHook function.

 

hook_data

user data for hook_func +.

 

data_destroy

a GDestroyNotify for hook_data +.

 
+
+
+

Returns

+

the hook id, for later use with g_signal_remove_emission_hook().

+
+
+
+
+

g_signal_remove_emission_hook ()

+
void
+g_signal_remove_emission_hook (guint signal_id,
+                               gulong hook_id);
+

Deletes an emission hook.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

signal_id

the id of the signal

 

hook_id

the id of the emission hook, as returned by +g_signal_add_emission_hook()

 
+
+
+
+
+

g_signal_parse_name ()

+
gboolean
+g_signal_parse_name (const gchar *detailed_signal,
+                     GType itype,
+                     guint *signal_id_p,
+                     GQuark *detail_p,
+                     gboolean force_detail_quark);
+

Internal function to parse a signal name into its signal_id + +and detail + quark.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

detailed_signal

a string of the form "signal-name::detail".

 

itype

The interface/instance type that introduced "signal-name".

 

signal_id_p

Location to store the signal id.

[out]

detail_p

Location to store the detail quark.

[out]

force_detail_quark

TRUE forces creation of a GQuark for the detail.

 
+
+
+

Returns

+

Whether the signal name could successfully be parsed and signal_id_p +and detail_p +contain valid return values.

+
+
+
+
+

g_signal_get_invocation_hint ()

+
GSignalInvocationHint *
+g_signal_get_invocation_hint (gpointer instance);
+

Returns the invocation hint of the innermost signal emission of instance.

+
+

Parameters

+
+++++ + + + + + +

instance

the instance to query.

[type GObject.Object]
+
+
+

Returns

+

the invocation hint of the innermost signal emission.

+

[transfer none]

+
+
+
+
+

g_signal_type_cclosure_new ()

+
GClosure *
+g_signal_type_cclosure_new (GType itype,
+                            guint struct_offset);
+

Creates a new closure which invokes the function found at the offset +struct_offset + in the class structure of the interface or classed type +identified by itype +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

itype

the GType identifier of an interface or classed type

 

struct_offset

the offset of the member function of itype +'s class +structure which is to be invoked by the new closure

 
+
+
+

Returns

+

a new GCClosure

+
+
+
+
+

g_signal_accumulator_first_wins ()

+
gboolean
+g_signal_accumulator_first_wins (GSignalInvocationHint *ihint,
+                                 GValue *return_accu,
+                                 const GValue *handler_return,
+                                 gpointer dummy);
+

A predefined GSignalAccumulator for signals intended to be used as a +hook for application code to provide a particular value. Usually +only one such value is desired and multiple handlers for the same +signal don't make much sense (except for the case of the default +handler defined in the class structure, in which case you will +usually want the signal connection to override the class handler).

+

This accumulator will use the return value from the first signal +handler that is run as the return value for the signal and not run +any further handlers (ie: the first handler "wins").

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

ihint

standard GSignalAccumulator parameter

 

return_accu

standard GSignalAccumulator parameter

 

handler_return

standard GSignalAccumulator parameter

 

dummy

standard GSignalAccumulator parameter

 
+
+
+

Returns

+

standard GSignalAccumulator result

+
+

Since: 2.28

+
+
+
+

g_signal_accumulator_true_handled ()

+
gboolean
+g_signal_accumulator_true_handled (GSignalInvocationHint *ihint,
+                                   GValue *return_accu,
+                                   const GValue *handler_return,
+                                   gpointer dummy);
+

A predefined GSignalAccumulator for signals that return a +boolean values. The behavior that this accumulator gives is +that a return of TRUE stops the signal emission: no further +callbacks will be invoked, while a return of FALSE allows +the emission to continue. The idea here is that a TRUE return +indicates that the callback handled the signal, and no further +handling is needed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

ihint

standard GSignalAccumulator parameter

 

return_accu

standard GSignalAccumulator parameter

 

handler_return

standard GSignalAccumulator parameter

 

dummy

standard GSignalAccumulator parameter

 
+
+
+

Returns

+

standard GSignalAccumulator result

+
+

Since: 2.4

+
+
+
+

Types and Values

+
+

struct GSignalInvocationHint

+
struct GSignalInvocationHint {
+  guint		signal_id;
+  GQuark detail;
+  GSignalFlags run_type;
+};
+
+

The GSignalInvocationHint structure is used to pass on additional information +to callbacks during a signal emission.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

guint signal_id;

The signal id of the signal invoking the callback

 

GQuark detail;

The detail passed on for this emission

 

GSignalFlags 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.

 
+
+
+
+
+

GSignalCMarshaller

+
typedef GClosureMarshal			 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.

+
+
+
+

GSignalCVaMarshaller

+
typedef GVaClosureMarshal		 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.

+
+
+
+

enum GSignalFlags

+

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.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 
+
+
+
+
+

enum GSignalMatchType

+

The match types specify what g_signal_handlers_block_matched(), +g_signal_handlers_unblock_matched() and g_signal_handlers_disconnect_matched() +match signals by.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

+
 
+
+
+
+
+

struct GSignalQuery

+
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 */
+};
+
+

A structure holding in-depth information for a specific signal. It is +filled in by the g_signal_query() function.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

guint signal_id;

The signal id of the signal being queried, or 0 if the +signal to be queried was unknown.

 

const gchar *signal_name;

The signal name.

 

GType itype;

The interface/instance type that this signal can be emitted for.

 

GSignalFlags signal_flags;

The signal flags as passed in to g_signal_new().

 

GType return_type;

The return type for user callbacks.

 

guint n_params;

The number of parameters that user callbacks take.

 

const GType *param_types;

+

The individual parameter types for +user callbacks, note that the effective callback signature is:

+
+ + + + + + + +
1
+2
+3
@return_type callback (#gpointer     data1,
+[param_types param_names,]
+gpointer     data2);
+
+ +

.

+
[array length=n_params]
+
+
+
+
+

G_SIGNAL_MATCH_MASK

+
#define G_SIGNAL_MATCH_MASK  0x3f
+
+

A mask for all GSignalMatchType bits.

+
+
+
+

G_SIGNAL_FLAGS_MASK

+
#define G_SIGNAL_FLAGS_MASK  0x1ff
+
+

A mask for all GSignalFlags bits.

+
+
+
+

enum GConnectFlags

+

The connection flags are used to specify the behaviour of a signal's +connection.

+
+

Members

+
+++++ + + + + + + + + + + + + +

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; see g_signal_connect_swapped() for an example.

+
 
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gobject-Standard-Parameter-and-Value-Types.html b/docs/reference/gobject/html/gobject-Standard-Parameter-and-Value-Types.html new file mode 100644 index 0000000..c818970 --- /dev/null +++ b/docs/reference/gobject/html/gobject-Standard-Parameter-and-Value-Types.html @@ -0,0 +1,7208 @@ + + + + +Parameters and Values: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Parameters and Values

+

Parameters and Values — Standard Parameter and Value Types

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define +G_IS_PARAM_SPEC_BOOLEAN() +
#define +G_PARAM_SPEC_BOOLEAN() +
#define +G_VALUE_HOLDS_BOOLEAN() +
+GParamSpec * + +g_param_spec_boolean () +
+void + +g_value_set_boolean () +
+gboolean + +g_value_get_boolean () +
#define +G_IS_PARAM_SPEC_CHAR() +
#define +G_PARAM_SPEC_CHAR() +
#define +G_VALUE_HOLDS_CHAR() +
+GParamSpec * + +g_param_spec_char () +
+void + +g_value_set_char () +
+gchar + +g_value_get_char () +
+gint8 + +g_value_get_schar () +
+void + +g_value_set_schar () +
#define +G_IS_PARAM_SPEC_UCHAR() +
#define +G_PARAM_SPEC_UCHAR() +
#define +G_VALUE_HOLDS_UCHAR() +
+GParamSpec * + +g_param_spec_uchar () +
+void + +g_value_set_uchar () +
+guchar + +g_value_get_uchar () +
#define +G_IS_PARAM_SPEC_INT() +
#define +G_PARAM_SPEC_INT() +
#define +G_VALUE_HOLDS_INT() +
+GParamSpec * + +g_param_spec_int () +
+void + +g_value_set_int () +
+gint + +g_value_get_int () +
#define +G_IS_PARAM_SPEC_UINT() +
#define +G_PARAM_SPEC_UINT() +
#define +G_VALUE_HOLDS_UINT() +
+GParamSpec * + +g_param_spec_uint () +
+void + +g_value_set_uint () +
+guint + +g_value_get_uint () +
#define +G_IS_PARAM_SPEC_LONG() +
#define +G_PARAM_SPEC_LONG() +
#define +G_VALUE_HOLDS_LONG() +
+GParamSpec * + +g_param_spec_long () +
+void + +g_value_set_long () +
+glong + +g_value_get_long () +
#define +G_IS_PARAM_SPEC_ULONG() +
#define +G_PARAM_SPEC_ULONG() +
#define +G_VALUE_HOLDS_ULONG() +
+GParamSpec * + +g_param_spec_ulong () +
+void + +g_value_set_ulong () +
+gulong + +g_value_get_ulong () +
#define +G_IS_PARAM_SPEC_INT64() +
#define +G_PARAM_SPEC_INT64() +
#define +G_VALUE_HOLDS_INT64() +
+GParamSpec * + +g_param_spec_int64 () +
+void + +g_value_set_int64 () +
+gint64 + +g_value_get_int64 () +
#define +G_IS_PARAM_SPEC_UINT64() +
#define +G_PARAM_SPEC_UINT64() +
#define +G_VALUE_HOLDS_UINT64() +
+GParamSpec * + +g_param_spec_uint64 () +
+void + +g_value_set_uint64 () +
+guint64 + +g_value_get_uint64 () +
#define +G_IS_PARAM_SPEC_FLOAT() +
#define +G_PARAM_SPEC_FLOAT() +
#define +G_VALUE_HOLDS_FLOAT() +
+GParamSpec * + +g_param_spec_float () +
+void + +g_value_set_float () +
+gfloat + +g_value_get_float () +
#define +G_IS_PARAM_SPEC_DOUBLE() +
#define +G_PARAM_SPEC_DOUBLE() +
#define +G_VALUE_HOLDS_DOUBLE() +
+GParamSpec * + +g_param_spec_double () +
+void + +g_value_set_double () +
+gdouble + +g_value_get_double () +
#define +G_IS_PARAM_SPEC_ENUM() +
#define +G_PARAM_SPEC_ENUM() +
#define +G_VALUE_HOLDS_ENUM() +
+GParamSpec * + +g_param_spec_enum () +
+void + +g_value_set_enum () +
+gint + +g_value_get_enum () +
#define +G_IS_PARAM_SPEC_FLAGS() +
#define +G_PARAM_SPEC_FLAGS() +
#define +G_VALUE_HOLDS_FLAGS() +
+GParamSpec * + +g_param_spec_flags () +
+void + +g_value_set_flags () +
+guint + +g_value_get_flags () +
#define +G_IS_PARAM_SPEC_STRING() +
#define +G_PARAM_SPEC_STRING() +
#define +G_VALUE_HOLDS_STRING() +
+GParamSpec * + +g_param_spec_string () +
+void + +g_value_set_string () +
+void + +g_value_set_static_string () +
+void + +g_value_take_string () +
+void + +g_value_set_string_take_ownership () +
const gchar * + +g_value_get_string () +
+gchar * + +g_value_dup_string () +
#define +G_IS_PARAM_SPEC_PARAM() +
#define +G_PARAM_SPEC_PARAM() +
#define +G_VALUE_HOLDS_PARAM() +
+GParamSpec * + +g_param_spec_param () +
+void + +g_value_set_param () +
+void + +g_value_take_param () +
+void + +g_value_set_param_take_ownership () +
+GParamSpec * + +g_value_get_param () +
+GParamSpec * + +g_value_dup_param () +
#define +G_IS_PARAM_SPEC_BOXED() +
#define +G_PARAM_SPEC_BOXED() +
#define +G_VALUE_HOLDS_BOXED() +
+GParamSpec * + +g_param_spec_boxed () +
+void + +g_value_set_boxed () +
+void + +g_value_set_static_boxed () +
+void + +g_value_take_boxed () +
+void + +g_value_set_boxed_take_ownership () +
+gpointer + +g_value_get_boxed () +
+gpointer + +g_value_dup_boxed () +
#define +G_IS_PARAM_SPEC_POINTER() +
#define +G_PARAM_SPEC_POINTER() +
#define +G_VALUE_HOLDS_POINTER() +
+GParamSpec * + +g_param_spec_pointer () +
+void + +g_value_set_pointer () +
+gpointer + +g_value_get_pointer () +
#define +G_IS_PARAM_SPEC_OBJECT() +
#define +G_PARAM_SPEC_OBJECT() +
#define +G_VALUE_HOLDS_OBJECT() +
+GParamSpec * + +g_param_spec_object () +
+void + +g_value_set_object () +
+void + +g_value_take_object () +
+void + +g_value_set_object_take_ownership () +
+gpointer + +g_value_get_object () +
+gpointer + +g_value_dup_object () +
#define +G_IS_PARAM_SPEC_UNICHAR() +
#define +G_PARAM_SPEC_UNICHAR() +
+GParamSpec * + +g_param_spec_unichar () +
#define +G_IS_PARAM_SPEC_VALUE_ARRAY() +
#define +G_PARAM_SPEC_VALUE_ARRAY() +
+GParamSpec * + +g_param_spec_value_array () +
#define +G_IS_PARAM_SPEC_OVERRIDE() +
#define +G_PARAM_SPEC_OVERRIDE() +
+GParamSpec * + +g_param_spec_override () +
#define +G_IS_PARAM_SPEC_GTYPE() +
#define +G_PARAM_SPEC_GTYPE() +
#define +G_VALUE_HOLDS_GTYPE() +
+GParamSpec * + +g_param_spec_gtype () +
+GType + +g_value_get_gtype () +
+void + +g_value_set_gtype () +
#define +G_IS_PARAM_SPEC_VARIANT() +
#define +G_PARAM_SPEC_VARIANT() +
#define +G_VALUE_HOLDS_VARIANT() +
#defineG_TYPE_PARAM_VARIANT
+GParamSpec * + +g_param_spec_variant () +
+GVariant * + +g_value_get_variant () +
+GVariant * + +g_value_dup_variant () +
+void + +g_value_set_variant () +
+void + +g_value_take_variant () +
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#defineG_TYPE_PARAM_BOOLEAN
structGParamSpecBoolean
#defineG_TYPE_PARAM_CHAR
structGParamSpecChar
#defineG_TYPE_PARAM_UCHAR
structGParamSpecUChar
#defineG_TYPE_PARAM_INT
structGParamSpecInt
#defineG_TYPE_PARAM_UINT
structGParamSpecUInt
#defineG_TYPE_PARAM_LONG
structGParamSpecLong
#defineG_TYPE_PARAM_ULONG
structGParamSpecULong
#defineG_TYPE_PARAM_INT64
structGParamSpecInt64
#defineG_TYPE_PARAM_UINT64
structGParamSpecUInt64
#defineG_TYPE_PARAM_FLOAT
structGParamSpecFloat
#defineG_TYPE_PARAM_DOUBLE
structGParamSpecDouble
#defineG_TYPE_PARAM_ENUM
structGParamSpecEnum
#defineG_TYPE_PARAM_FLAGS
structGParamSpecFlags
#defineG_TYPE_PARAM_STRING
structGParamSpecString
typedefgchararray
#defineG_TYPE_PARAM_PARAM
structGParamSpecParam
#defineG_TYPE_PARAM_BOXED
structGParamSpecBoxed
#defineG_TYPE_PARAM_POINTER
structGParamSpecPointer
#defineG_TYPE_PARAM_OBJECT
structGParamSpecObject
#defineG_TYPE_PARAM_UNICHAR
structGParamSpecUnichar
#defineG_TYPE_PARAM_VALUE_ARRAY
structGParamSpecValueArray
#defineG_TYPE_PARAM_OVERRIDE
structGParamSpecOverride
#defineG_TYPE_PARAM_GTYPE
structGParamSpecGType
structGParamSpecVariant
+
+
+

Includes

+
#include <glib-object.h>
+
+
+
+

Description

+

GValue provides an abstract container structure which can be +copied, transformed and compared while holding a value of any +(derived) type, which is registered as a GType with a +GTypeValueTable in its GTypeInfo structure. Parameter +specifications for most value types can be created as GParamSpec +derived instances, to implement e.g. GObject properties which +operate on GValue containers.

+

Parameter names need to start with a letter (a-z or A-Z). Subsequent +characters can be letters, numbers or a '-'. +All other characters are replaced by a '-' during construction.

+
+
+

Functions

+
+

G_IS_PARAM_SPEC_BOOLEAN()

+
#define G_IS_PARAM_SPEC_BOOLEAN(pspec)     (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_BOOLEAN))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_BOOLEAN.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_BOOLEAN()

+
#define G_PARAM_SPEC_BOOLEAN(pspec)        (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_BOOLEAN, GParamSpecBoolean))
+
+

Cast a GParamSpec instance into a GParamSpecBoolean.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_BOOLEAN()

+
#define G_VALUE_HOLDS_BOOLEAN(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_BOOLEAN))
+
+

Checks whether the given GValue can hold values of type G_TYPE_BOOLEAN.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_boolean ()

+
GParamSpec *
+g_param_spec_boolean (const gchar *name,
+                      const gchar *nick,
+                      const gchar *blurb,
+                      gboolean default_value,
+                      GParamFlags flags);
+

Creates a new GParamSpecBoolean instance specifying a G_TYPE_BOOLEAN +property. In many cases, it may be more appropriate to use an enum with +g_param_spec_enum(), both to improve code clarity by using explicitly named +values, and to allow for more values to be added in future without breaking +API.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

default_value

default value for the property specified

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_boolean ()

+
void
+g_value_set_boolean (GValue *value,
+                     gboolean v_boolean);
+

Set the contents of a G_TYPE_BOOLEAN GValue to v_boolean +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_BOOLEAN

 

v_boolean

boolean value to be set

 
+
+
+
+
+

g_value_get_boolean ()

+
gboolean
+g_value_get_boolean (const GValue *value);
+

Get the contents of a G_TYPE_BOOLEAN GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_BOOLEAN

 
+
+
+

Returns

+

boolean contents of value +

+
+
+
+
+

G_IS_PARAM_SPEC_CHAR()

+
#define G_IS_PARAM_SPEC_CHAR(pspec)        (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_CHAR))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_CHAR.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_CHAR()

+
#define G_PARAM_SPEC_CHAR(pspec)           (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_CHAR, GParamSpecChar))
+
+

Cast a GParamSpec instance into a GParamSpecChar.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_CHAR()

+
#define G_VALUE_HOLDS_CHAR(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_CHAR))
+
+

Checks whether the given GValue can hold values of type G_TYPE_CHAR.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_char ()

+
GParamSpec *
+g_param_spec_char (const gchar *name,
+                   const gchar *nick,
+                   const gchar *blurb,
+                   gint8 minimum,
+                   gint8 maximum,
+                   gint8 default_value,
+                   GParamFlags flags);
+

Creates a new GParamSpecChar instance specifying a G_TYPE_CHAR property.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

minimum

minimum value for the property specified

 

maximum

maximum value for the property specified

 

default_value

default value for the property specified

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_char ()

+
void
+g_value_set_char (GValue *value,
+                  gchar v_char);
+
+

g_value_set_char has been deprecated since version 2.32 and should not be used in newly-written code.

+

This function's input type is broken, see g_value_set_schar()

+
+

Set the contents of a G_TYPE_CHAR GValue to v_char +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_CHAR

 

v_char

character value to be set

 
+
+
+
+
+

g_value_get_char ()

+
gchar
+g_value_get_char (const GValue *value);
+
+

g_value_get_char has been deprecated since version 2.32 and should not be used in newly-written code.

+

This function's return type is broken, see g_value_get_schar()

+
+

Do not use this function; it is broken on platforms where the char +type is unsigned, such as ARM and PowerPC. See g_value_get_schar().

+

Get the contents of a G_TYPE_CHAR GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_CHAR

 
+
+
+

Returns

+

character contents of value +

+
+
+
+
+

g_value_get_schar ()

+
gint8
+g_value_get_schar (const GValue *value);
+

Get the contents of a G_TYPE_CHAR GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_CHAR

 
+
+
+

Returns

+

signed 8 bit integer contents of value +

+
+

Since: 2.32

+
+
+
+

g_value_set_schar ()

+
void
+g_value_set_schar (GValue *value,
+                   gint8 v_char);
+

Set the contents of a G_TYPE_CHAR GValue to v_char +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_CHAR

 

v_char

signed 8 bit integer to be set

 
+
+

Since: 2.32

+
+
+
+

G_IS_PARAM_SPEC_UCHAR()

+
#define G_IS_PARAM_SPEC_UCHAR(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UCHAR))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_UCHAR.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_UCHAR()

+
#define G_PARAM_SPEC_UCHAR(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UCHAR, GParamSpecUChar))
+
+

Cast a GParamSpec instance into a GParamSpecUChar.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_UCHAR()

+
#define G_VALUE_HOLDS_UCHAR(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_UCHAR))
+
+

Checks whether the given GValue can hold values of type G_TYPE_UCHAR.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_uchar ()

+
GParamSpec *
+g_param_spec_uchar (const gchar *name,
+                    const gchar *nick,
+                    const gchar *blurb,
+                    guint8 minimum,
+                    guint8 maximum,
+                    guint8 default_value,
+                    GParamFlags flags);
+

Creates a new GParamSpecUChar instance specifying a G_TYPE_UCHAR property.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

minimum

minimum value for the property specified

 

maximum

maximum value for the property specified

 

default_value

default value for the property specified

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_uchar ()

+
void
+g_value_set_uchar (GValue *value,
+                   guchar v_uchar);
+

Set the contents of a G_TYPE_UCHAR GValue to v_uchar +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_UCHAR

 

v_uchar

unsigned character value to be set

 
+
+
+
+
+

g_value_get_uchar ()

+
guchar
+g_value_get_uchar (const GValue *value);
+

Get the contents of a G_TYPE_UCHAR GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_UCHAR

 
+
+
+

Returns

+

unsigned character contents of value +

+
+
+
+
+

G_IS_PARAM_SPEC_INT()

+
#define G_IS_PARAM_SPEC_INT(pspec)         (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_INT))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_INT.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_INT()

+
#define G_PARAM_SPEC_INT(pspec)            (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_INT, GParamSpecInt))
+
+

Cast a GParamSpec instance into a GParamSpecInt.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_INT()

+
#define G_VALUE_HOLDS_INT(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_INT))
+
+

Checks whether the given GValue can hold values of type G_TYPE_INT.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_int ()

+
GParamSpec *
+g_param_spec_int (const gchar *name,
+                  const gchar *nick,
+                  const gchar *blurb,
+                  gint minimum,
+                  gint maximum,
+                  gint default_value,
+                  GParamFlags flags);
+

Creates a new GParamSpecInt instance specifying a G_TYPE_INT property.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

minimum

minimum value for the property specified

 

maximum

maximum value for the property specified

 

default_value

default value for the property specified

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_int ()

+
void
+g_value_set_int (GValue *value,
+                 gint v_int);
+

Set the contents of a G_TYPE_INT GValue to v_int +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_INT

 

v_int

integer value to be set

 
+
+
+
+
+

g_value_get_int ()

+
gint
+g_value_get_int (const GValue *value);
+

Get the contents of a G_TYPE_INT GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_INT

 
+
+
+

Returns

+

integer contents of value +

+
+
+
+
+

G_IS_PARAM_SPEC_UINT()

+
#define G_IS_PARAM_SPEC_UINT(pspec)        (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UINT))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_UINT.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_UINT()

+
#define G_PARAM_SPEC_UINT(pspec)           (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UINT, GParamSpecUInt))
+
+

Cast a GParamSpec instance into a GParamSpecUInt.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_UINT()

+
#define G_VALUE_HOLDS_UINT(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_UINT))
+
+

Checks whether the given GValue can hold values of type G_TYPE_UINT.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_uint ()

+
GParamSpec *
+g_param_spec_uint (const gchar *name,
+                   const gchar *nick,
+                   const gchar *blurb,
+                   guint minimum,
+                   guint maximum,
+                   guint default_value,
+                   GParamFlags flags);
+

Creates a new GParamSpecUInt instance specifying a G_TYPE_UINT property.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

minimum

minimum value for the property specified

 

maximum

maximum value for the property specified

 

default_value

default value for the property specified

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_uint ()

+
void
+g_value_set_uint (GValue *value,
+                  guint v_uint);
+

Set the contents of a G_TYPE_UINT GValue to v_uint +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_UINT

 

v_uint

unsigned integer value to be set

 
+
+
+
+
+

g_value_get_uint ()

+
guint
+g_value_get_uint (const GValue *value);
+

Get the contents of a G_TYPE_UINT GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_UINT

 
+
+
+

Returns

+

unsigned integer contents of value +

+
+
+
+
+

G_IS_PARAM_SPEC_LONG()

+
#define G_IS_PARAM_SPEC_LONG(pspec)        (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_LONG))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_LONG.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_LONG()

+
#define G_PARAM_SPEC_LONG(pspec)           (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_LONG, GParamSpecLong))
+
+

Cast a GParamSpec instance into a GParamSpecLong.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_LONG()

+
#define G_VALUE_HOLDS_LONG(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_LONG))
+
+

Checks whether the given GValue can hold values of type G_TYPE_LONG.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_long ()

+
GParamSpec *
+g_param_spec_long (const gchar *name,
+                   const gchar *nick,
+                   const gchar *blurb,
+                   glong minimum,
+                   glong maximum,
+                   glong default_value,
+                   GParamFlags flags);
+

Creates a new GParamSpecLong instance specifying a G_TYPE_LONG property.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

minimum

minimum value for the property specified

 

maximum

maximum value for the property specified

 

default_value

default value for the property specified

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_long ()

+
void
+g_value_set_long (GValue *value,
+                  glong v_long);
+

Set the contents of a G_TYPE_LONG GValue to v_long +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_LONG

 

v_long

long integer value to be set

 
+
+
+
+
+

g_value_get_long ()

+
glong
+g_value_get_long (const GValue *value);
+

Get the contents of a G_TYPE_LONG GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_LONG

 
+
+
+

Returns

+

long integer contents of value +

+
+
+
+
+

G_IS_PARAM_SPEC_ULONG()

+
#define G_IS_PARAM_SPEC_ULONG(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_ULONG))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_ULONG.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_ULONG()

+
#define G_PARAM_SPEC_ULONG(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_ULONG, GParamSpecULong))
+
+

Cast a GParamSpec instance into a GParamSpecULong.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_ULONG()

+
#define G_VALUE_HOLDS_ULONG(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_ULONG))
+
+

Checks whether the given GValue can hold values of type G_TYPE_ULONG.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_ulong ()

+
GParamSpec *
+g_param_spec_ulong (const gchar *name,
+                    const gchar *nick,
+                    const gchar *blurb,
+                    gulong minimum,
+                    gulong maximum,
+                    gulong default_value,
+                    GParamFlags flags);
+

Creates a new GParamSpecULong instance specifying a G_TYPE_ULONG +property.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

minimum

minimum value for the property specified

 

maximum

maximum value for the property specified

 

default_value

default value for the property specified

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_ulong ()

+
void
+g_value_set_ulong (GValue *value,
+                   gulong v_ulong);
+

Set the contents of a G_TYPE_ULONG GValue to v_ulong +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_ULONG

 

v_ulong

unsigned long integer value to be set

 
+
+
+
+
+

g_value_get_ulong ()

+
gulong
+g_value_get_ulong (const GValue *value);
+

Get the contents of a G_TYPE_ULONG GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_ULONG

 
+
+
+

Returns

+

unsigned long integer contents of value +

+
+
+
+
+

G_IS_PARAM_SPEC_INT64()

+
#define G_IS_PARAM_SPEC_INT64(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_INT64))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_INT64.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_INT64()

+
#define G_PARAM_SPEC_INT64(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_INT64, GParamSpecInt64))
+
+

Cast a GParamSpec instance into a GParamSpecInt64.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_INT64()

+
#define G_VALUE_HOLDS_INT64(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_INT64))
+
+

Checks whether the given GValue can hold values of type G_TYPE_INT64.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_int64 ()

+
GParamSpec *
+g_param_spec_int64 (const gchar *name,
+                    const gchar *nick,
+                    const gchar *blurb,
+                    gint64 minimum,
+                    gint64 maximum,
+                    gint64 default_value,
+                    GParamFlags flags);
+

Creates a new GParamSpecInt64 instance specifying a G_TYPE_INT64 property.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

minimum

minimum value for the property specified

 

maximum

maximum value for the property specified

 

default_value

default value for the property specified

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_int64 ()

+
void
+g_value_set_int64 (GValue *value,
+                   gint64 v_int64);
+

Set the contents of a G_TYPE_INT64 GValue to v_int64 +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_INT64

 

v_int64

64bit integer value to be set

 
+
+
+
+
+

g_value_get_int64 ()

+
gint64
+g_value_get_int64 (const GValue *value);
+

Get the contents of a G_TYPE_INT64 GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_INT64

 
+
+
+

Returns

+

64bit integer contents of value +

+
+
+
+
+

G_IS_PARAM_SPEC_UINT64()

+
#define G_IS_PARAM_SPEC_UINT64(pspec)      (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UINT64))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_UINT64.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_UINT64()

+
#define G_PARAM_SPEC_UINT64(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UINT64, GParamSpecUInt64))
+
+

Cast a GParamSpec instance into a GParamSpecUInt64.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_UINT64()

+
#define G_VALUE_HOLDS_UINT64(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_UINT64))
+
+

Checks whether the given GValue can hold values of type G_TYPE_UINT64.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_uint64 ()

+
GParamSpec *
+g_param_spec_uint64 (const gchar *name,
+                     const gchar *nick,
+                     const gchar *blurb,
+                     guint64 minimum,
+                     guint64 maximum,
+                     guint64 default_value,
+                     GParamFlags flags);
+

Creates a new GParamSpecUInt64 instance specifying a G_TYPE_UINT64 +property.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

minimum

minimum value for the property specified

 

maximum

maximum value for the property specified

 

default_value

default value for the property specified

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_uint64 ()

+
void
+g_value_set_uint64 (GValue *value,
+                    guint64 v_uint64);
+

Set the contents of a G_TYPE_UINT64 GValue to v_uint64 +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_UINT64

 

v_uint64

unsigned 64bit integer value to be set

 
+
+
+
+
+

g_value_get_uint64 ()

+
guint64
+g_value_get_uint64 (const GValue *value);
+

Get the contents of a G_TYPE_UINT64 GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_UINT64

 
+
+
+

Returns

+

unsigned 64bit integer contents of value +

+
+
+
+
+

G_IS_PARAM_SPEC_FLOAT()

+
#define G_IS_PARAM_SPEC_FLOAT(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_FLOAT))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_FLOAT.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_FLOAT()

+
#define G_PARAM_SPEC_FLOAT(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_FLOAT, GParamSpecFloat))
+
+

Cast a GParamSpec instance into a GParamSpecFloat.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_FLOAT()

+
#define G_VALUE_HOLDS_FLOAT(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_FLOAT))
+
+

Checks whether the given GValue can hold values of type G_TYPE_FLOAT.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_float ()

+
GParamSpec *
+g_param_spec_float (const gchar *name,
+                    const gchar *nick,
+                    const gchar *blurb,
+                    gfloat minimum,
+                    gfloat maximum,
+                    gfloat default_value,
+                    GParamFlags flags);
+

Creates a new GParamSpecFloat instance specifying a G_TYPE_FLOAT property.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

minimum

minimum value for the property specified

 

maximum

maximum value for the property specified

 

default_value

default value for the property specified

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_float ()

+
void
+g_value_set_float (GValue *value,
+                   gfloat v_float);
+

Set the contents of a G_TYPE_FLOAT GValue to v_float +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_FLOAT

 

v_float

float value to be set

 
+
+
+
+
+

g_value_get_float ()

+
gfloat
+g_value_get_float (const GValue *value);
+

Get the contents of a G_TYPE_FLOAT GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_FLOAT

 
+
+
+

Returns

+

float contents of value +

+
+
+
+
+

G_IS_PARAM_SPEC_DOUBLE()

+
#define G_IS_PARAM_SPEC_DOUBLE(pspec)      (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_DOUBLE))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_DOUBLE.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_DOUBLE()

+
#define G_PARAM_SPEC_DOUBLE(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_DOUBLE, GParamSpecDouble))
+
+

Cast a GParamSpec instance into a GParamSpecDouble.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_DOUBLE()

+
#define G_VALUE_HOLDS_DOUBLE(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_DOUBLE))
+
+

Checks whether the given GValue can hold values of type G_TYPE_DOUBLE.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_double ()

+
GParamSpec *
+g_param_spec_double (const gchar *name,
+                     const gchar *nick,
+                     const gchar *blurb,
+                     gdouble minimum,
+                     gdouble maximum,
+                     gdouble default_value,
+                     GParamFlags flags);
+

Creates a new GParamSpecDouble instance specifying a G_TYPE_DOUBLE +property.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

minimum

minimum value for the property specified

 

maximum

maximum value for the property specified

 

default_value

default value for the property specified

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_double ()

+
void
+g_value_set_double (GValue *value,
+                    gdouble v_double);
+

Set the contents of a G_TYPE_DOUBLE GValue to v_double +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_DOUBLE

 

v_double

double value to be set

 
+
+
+
+
+

g_value_get_double ()

+
gdouble
+g_value_get_double (const GValue *value);
+

Get the contents of a G_TYPE_DOUBLE GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_DOUBLE

 
+
+
+

Returns

+

double contents of value +

+
+
+
+
+

G_IS_PARAM_SPEC_ENUM()

+
#define G_IS_PARAM_SPEC_ENUM(pspec)        (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_ENUM))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_ENUM.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_ENUM()

+
#define G_PARAM_SPEC_ENUM(pspec)           (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_ENUM, GParamSpecEnum))
+
+

Cast a GParamSpec instance into a GParamSpecEnum.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_ENUM()

+
#define G_VALUE_HOLDS_ENUM(value)      (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_ENUM))
+
+

Checks whether the given GValue can hold values derived from type G_TYPE_ENUM.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_enum ()

+
GParamSpec *
+g_param_spec_enum (const gchar *name,
+                   const gchar *nick,
+                   const gchar *blurb,
+                   GType enum_type,
+                   gint default_value,
+                   GParamFlags flags);
+

Creates a new GParamSpecEnum instance specifying a G_TYPE_ENUM +property.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

enum_type

a GType derived from G_TYPE_ENUM

 

default_value

default value for the property specified

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_enum ()

+
void
+g_value_set_enum (GValue *value,
+                  gint v_enum);
+

Set the contents of a G_TYPE_ENUM GValue to v_enum +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue whose type is derived from G_TYPE_ENUM

 

v_enum

enum value to be set

 
+
+
+
+
+

g_value_get_enum ()

+
gint
+g_value_get_enum (const GValue *value);
+

Get the contents of a G_TYPE_ENUM GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue whose type is derived from G_TYPE_ENUM

 
+
+
+

Returns

+

enum contents of value +

+
+
+
+
+

G_IS_PARAM_SPEC_FLAGS()

+
#define G_IS_PARAM_SPEC_FLAGS(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_FLAGS))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_FLAGS.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_FLAGS()

+
#define G_PARAM_SPEC_FLAGS(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_FLAGS, GParamSpecFlags))
+
+

Cast a GParamSpec instance into a GParamSpecFlags.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_FLAGS()

+
#define G_VALUE_HOLDS_FLAGS(value)     (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_FLAGS))
+
+

Checks whether the given GValue can hold values derived from type G_TYPE_FLAGS.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_flags ()

+
GParamSpec *
+g_param_spec_flags (const gchar *name,
+                    const gchar *nick,
+                    const gchar *blurb,
+                    GType flags_type,
+                    guint default_value,
+                    GParamFlags flags);
+

Creates a new GParamSpecFlags instance specifying a G_TYPE_FLAGS +property.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

flags_type

a GType derived from G_TYPE_FLAGS

 

default_value

default value for the property specified

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_flags ()

+
void
+g_value_set_flags (GValue *value,
+                   guint v_flags);
+

Set the contents of a G_TYPE_FLAGS GValue to v_flags +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue whose type is derived from G_TYPE_FLAGS

 

v_flags

flags value to be set

 
+
+
+
+
+

g_value_get_flags ()

+
guint
+g_value_get_flags (const GValue *value);
+

Get the contents of a G_TYPE_FLAGS GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue whose type is derived from G_TYPE_FLAGS

 
+
+
+

Returns

+

flags contents of value +

+
+
+
+
+

G_IS_PARAM_SPEC_STRING()

+
#define G_IS_PARAM_SPEC_STRING(pspec)      (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_STRING))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_STRING.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_STRING()

+
#define G_PARAM_SPEC_STRING(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_STRING, GParamSpecString))
+
+

Casts a GParamSpec instance into a GParamSpecString.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_STRING()

+
#define G_VALUE_HOLDS_STRING(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_STRING))
+
+

Checks whether the given GValue can hold values of type G_TYPE_STRING.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_string ()

+
GParamSpec *
+g_param_spec_string (const gchar *name,
+                     const gchar *nick,
+                     const gchar *blurb,
+                     const gchar *default_value,
+                     GParamFlags flags);
+

Creates a new GParamSpecString instance.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

default_value

default value for the property specified.

[nullable]

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_string ()

+
void
+g_value_set_string (GValue *value,
+                    const gchar *v_string);
+

Set the contents of a G_TYPE_STRING GValue to v_string +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_STRING

 

v_string

caller-owned string to be duplicated for the GValue.

[allow-none]
+
+
+
+
+

g_value_set_static_string ()

+
void
+g_value_set_static_string (GValue *value,
+                           const gchar *v_string);
+

Set the contents of a G_TYPE_STRING GValue to v_string +. +The string is assumed to be static, and is thus not duplicated +when setting the GValue.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_STRING

 

v_string

static string to be set.

[allow-none]
+
+
+
+
+

g_value_take_string ()

+
void
+g_value_take_string (GValue *value,
+                     gchar *v_string);
+

Sets the contents of a G_TYPE_STRING GValue to v_string +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_STRING

 

v_string

string to take ownership of.

[allow-none]
+
+

Since: 2.4

+
+
+
+

g_value_set_string_take_ownership ()

+
void
+g_value_set_string_take_ownership (GValue *value,
+                                   gchar *v_string);
+
+

g_value_set_string_take_ownership has been deprecated since version 2.4 and should not be used in newly-written code.

+

Use g_value_take_string() instead.

+
+

This is an internal function introduced mainly for C marshallers.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_STRING

 

v_string

duplicated unowned string to be set.

[allow-none]
+
+
+
+
+

g_value_get_string ()

+
const gchar *
+g_value_get_string (const GValue *value);
+

Get the contents of a G_TYPE_STRING GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_STRING

 
+
+
+

Returns

+

string content of value +

+
+
+
+
+

g_value_dup_string ()

+
gchar *
+g_value_dup_string (const GValue *value);
+

Get a copy the contents of a G_TYPE_STRING GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_STRING

 
+
+
+

Returns

+

a newly allocated copy of the string content of value +

+
+
+
+
+

G_IS_PARAM_SPEC_PARAM()

+
#define G_IS_PARAM_SPEC_PARAM(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_PARAM))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_PARAM.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_PARAM()

+
#define G_PARAM_SPEC_PARAM(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_PARAM, GParamSpecParam))
+
+

Casts a GParamSpec instance into a GParamSpecParam.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_PARAM()

+
#define G_VALUE_HOLDS_PARAM(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_PARAM))
+
+

Checks whether the given GValue can hold values derived from type G_TYPE_PARAM.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_param ()

+
GParamSpec *
+g_param_spec_param (const gchar *name,
+                    const gchar *nick,
+                    const gchar *blurb,
+                    GType param_type,
+                    GParamFlags flags);
+

Creates a new GParamSpecParam instance specifying a G_TYPE_PARAM +property.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

param_type

a GType derived from G_TYPE_PARAM

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_param ()

+
void
+g_value_set_param (GValue *value,
+                   GParamSpec *param);
+

Set the contents of a G_TYPE_PARAM GValue to param +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_PARAM

 

param

the GParamSpec to be set.

[allow-none]
+
+
+
+
+

g_value_take_param ()

+
void
+g_value_take_param (GValue *value,
+                    GParamSpec *param);
+

Sets the contents of a G_TYPE_PARAM GValue to param + and takes +over the ownership of the callers reference to param +; the caller +doesn't have to unref it any more.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_PARAM

 

param

the GParamSpec to be set.

[allow-none]
+
+

Since: 2.4

+
+
+
+

g_value_set_param_take_ownership ()

+
void
+g_value_set_param_take_ownership (GValue *value,
+                                  GParamSpec *param);
+
+

g_value_set_param_take_ownership has been deprecated since version 2.4 and should not be used in newly-written code.

+

Use g_value_take_param() instead.

+
+

This is an internal function introduced mainly for C marshallers.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_PARAM

 

param

the GParamSpec to be set.

[allow-none]
+
+
+
+
+

g_value_get_param ()

+
GParamSpec *
+g_value_get_param (const GValue *value);
+

Get the contents of a G_TYPE_PARAM GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue whose type is derived from G_TYPE_PARAM

 
+
+
+

Returns

+

GParamSpec content of value +.

+

[transfer none]

+
+
+
+
+

g_value_dup_param ()

+
GParamSpec *
+g_value_dup_param (const GValue *value);
+

Get the contents of a G_TYPE_PARAM GValue, increasing its +reference count.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue whose type is derived from G_TYPE_PARAM

 
+
+
+

Returns

+

GParamSpec content of value +, should be unreferenced when +no longer needed.

+
+
+
+
+

G_IS_PARAM_SPEC_BOXED()

+
#define G_IS_PARAM_SPEC_BOXED(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_BOXED))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_BOXED.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_BOXED()

+
#define G_PARAM_SPEC_BOXED(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_BOXED, GParamSpecBoxed))
+
+

Cast a GParamSpec instance into a GParamSpecBoxed.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_BOXED()

+
#define G_VALUE_HOLDS_BOXED(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_BOXED))
+
+

Checks whether the given GValue can hold values derived +from type G_TYPE_BOXED.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_boxed ()

+
GParamSpec *
+g_param_spec_boxed (const gchar *name,
+                    const gchar *nick,
+                    const gchar *blurb,
+                    GType boxed_type,
+                    GParamFlags flags);
+

Creates a new GParamSpecBoxed instance specifying a G_TYPE_BOXED +derived property.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

boxed_type

G_TYPE_BOXED derived type of this property

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_boxed ()

+
void
+g_value_set_boxed (GValue *value,
+                   gconstpointer v_boxed);
+

Set the contents of a G_TYPE_BOXED derived GValue to v_boxed +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of G_TYPE_BOXED derived type

 

v_boxed

boxed value to be set.

[allow-none]
+
+
+
+
+

g_value_set_static_boxed ()

+
void
+g_value_set_static_boxed (GValue *value,
+                          gconstpointer v_boxed);
+

Set the contents of a G_TYPE_BOXED derived GValue to v_boxed +. +The boxed value is assumed to be static, and is thus not duplicated +when setting the GValue.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of G_TYPE_BOXED derived type

 

v_boxed

static boxed value to be set.

[allow-none]
+
+
+
+
+

g_value_take_boxed ()

+
void
+g_value_take_boxed (GValue *value,
+                    gconstpointer v_boxed);
+

Sets the contents of a G_TYPE_BOXED derived GValue to v_boxed + +and takes over the ownership of the callers reference to v_boxed +; +the caller doesn't have to unref it any more.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of G_TYPE_BOXED derived type

 

v_boxed

duplicated unowned boxed value to be set.

[allow-none]
+
+

Since: 2.4

+
+
+
+

g_value_set_boxed_take_ownership ()

+
void
+g_value_set_boxed_take_ownership (GValue *value,
+                                  gconstpointer v_boxed);
+
+

g_value_set_boxed_take_ownership has been deprecated since version 2.4 and should not be used in newly-written code.

+

Use g_value_take_boxed() instead.

+
+

This is an internal function introduced mainly for C marshallers.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of G_TYPE_BOXED derived type

 

v_boxed

duplicated unowned boxed value to be set.

[allow-none]
+
+
+
+
+

g_value_get_boxed ()

+
gpointer
+g_value_get_boxed (const GValue *value);
+

Get the contents of a G_TYPE_BOXED derived GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of G_TYPE_BOXED derived type

 
+
+
+

Returns

+

boxed contents of value +.

+

[transfer none]

+
+
+
+
+

g_value_dup_boxed ()

+
gpointer
+g_value_dup_boxed (const GValue *value);
+

Get the contents of a G_TYPE_BOXED derived GValue. Upon getting, +the boxed value is duplicated and needs to be later freed with +g_boxed_free(), e.g. like: g_boxed_free (G_VALUE_TYPE (value +), +return_value);

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of G_TYPE_BOXED derived type

 
+
+
+

Returns

+

boxed contents of value +

+
+
+
+
+

G_IS_PARAM_SPEC_POINTER()

+
#define G_IS_PARAM_SPEC_POINTER(pspec)     (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_POINTER))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_POINTER.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_POINTER()

+
#define G_PARAM_SPEC_POINTER(pspec)        (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_POINTER, GParamSpecPointer))
+
+

Casts a GParamSpec instance into a GParamSpecPointer.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_POINTER()

+
#define G_VALUE_HOLDS_POINTER(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_POINTER))
+
+

Checks whether the given GValue can hold values of type G_TYPE_POINTER.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_pointer ()

+
GParamSpec *
+g_param_spec_pointer (const gchar *name,
+                      const gchar *nick,
+                      const gchar *blurb,
+                      GParamFlags flags);
+

Creates a new GParamSpecPointer instance specifying a pointer property. +Where possible, it is better to use g_param_spec_object() or +g_param_spec_boxed() to expose memory management information.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_pointer ()

+
void
+g_value_set_pointer (GValue *value,
+                     gpointer v_pointer);
+

Set the contents of a pointer GValue to v_pointer +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of G_TYPE_POINTER

 

v_pointer

pointer value to be set

 
+
+
+
+
+

g_value_get_pointer ()

+
gpointer
+g_value_get_pointer (const GValue *value);
+

Get the contents of a pointer GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of G_TYPE_POINTER

 
+
+
+

Returns

+

pointer contents of value +.

+

[transfer none]

+
+
+
+
+

G_IS_PARAM_SPEC_OBJECT()

+
#define G_IS_PARAM_SPEC_OBJECT(pspec)      (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_OBJECT))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_OBJECT.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_OBJECT()

+
#define G_PARAM_SPEC_OBJECT(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_OBJECT, GParamSpecObject))
+
+

Casts a GParamSpec instance into a GParamSpecObject.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

G_VALUE_HOLDS_OBJECT()

+
#define G_VALUE_HOLDS_OBJECT(value) (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_OBJECT))
+
+

Checks whether the given GValue can hold values derived from type G_TYPE_OBJECT.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

g_param_spec_object ()

+
GParamSpec *
+g_param_spec_object (const gchar *name,
+                     const gchar *nick,
+                     const gchar *blurb,
+                     GType object_type,
+                     GParamFlags flags);
+

Creates a new GParamSpecBoxed instance specifying a G_TYPE_OBJECT +derived property.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

object_type

G_TYPE_OBJECT derived type of this property

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

g_value_set_object ()

+
void
+g_value_set_object (GValue *value,
+                    gpointer v_object);
+

Set the contents of a G_TYPE_OBJECT derived GValue to v_object +.

+

g_value_set_object() increases the reference count of v_object + +(the GValue holds a reference to v_object +). If you do not wish +to increase the reference count of the object (i.e. you wish to +pass your current reference to the GValue because you no longer +need it), use g_value_take_object() instead.

+

It is important that your GValue holds a reference to v_object + (either its +own, or one it has taken) to ensure that the object won't be destroyed while +the GValue still exists).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of G_TYPE_OBJECT derived type

 

v_object

object value to be set.

[type GObject.Object][allow-none]
+
+
+
+
+

g_value_take_object ()

+
void
+g_value_take_object (GValue *value,
+                     gpointer v_object);
+

Sets the contents of a G_TYPE_OBJECT derived GValue to v_object + +and takes over the ownership of the callers reference to v_object +; +the caller doesn't have to unref it any more (i.e. the reference +count of the object is not increased).

+

If you want the GValue to hold its own reference to v_object +, use +g_value_set_object() instead.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of G_TYPE_OBJECT derived type

 

v_object

object value to be set.

[allow-none]
+
+

Since: 2.4

+
+
+
+

g_value_set_object_take_ownership ()

+
void
+g_value_set_object_take_ownership (GValue *value,
+                                   gpointer v_object);
+
+

g_value_set_object_take_ownership has been deprecated since version 2.4 and should not be used in newly-written code.

+

Use g_value_take_object() instead.

+
+

This is an internal function introduced mainly for C marshallers.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of G_TYPE_OBJECT derived type

 

v_object

object value to be set.

[allow-none]
+
+
+
+
+

g_value_get_object ()

+
gpointer
+g_value_get_object (const GValue *value);
+

Get the contents of a G_TYPE_OBJECT derived GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of G_TYPE_OBJECT derived type

 
+
+
+

Returns

+

object contents of value +.

+

[type GObject.Object][transfer none]

+
+
+
+
+

g_value_dup_object ()

+
gpointer
+g_value_dup_object (const GValue *value);
+

Get the contents of a G_TYPE_OBJECT derived GValue, increasing +its reference count. If the contents of the GValue are NULL, then +NULL will be returned.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue whose type is derived from G_TYPE_OBJECT

 
+
+
+

Returns

+

object content of value +, +should be unreferenced when no longer needed.

+

[type GObject.Object][transfer full]

+
+
+
+
+

G_IS_PARAM_SPEC_UNICHAR()

+
#define G_IS_PARAM_SPEC_UNICHAR(pspec)     (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_UNICHAR))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_UNICHAR.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_UNICHAR()

+
#define G_PARAM_SPEC_UNICHAR(pspec)        (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_UNICHAR, GParamSpecUnichar))
+
+

Cast a GParamSpec instance into a GParamSpecUnichar.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

g_param_spec_unichar ()

+
GParamSpec *
+g_param_spec_unichar (const gchar *name,
+                      const gchar *nick,
+                      const gchar *blurb,
+                      gunichar default_value,
+                      GParamFlags flags);
+

Creates a new GParamSpecUnichar instance specifying a G_TYPE_UINT +property. GValue structures for this property can be accessed with +g_value_set_uint() and g_value_get_uint().

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

default_value

default value for the property specified

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+
+
+
+

G_IS_PARAM_SPEC_VALUE_ARRAY()

+
#define G_IS_PARAM_SPEC_VALUE_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_VALUE_ARRAY))
+
+
+

G_IS_PARAM_SPEC_VALUE_ARRAY has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use GArray instead of GValueArray

+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_VALUE_ARRAY.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+

Returns

+

TRUE on success.

+
+
+
+
+

G_PARAM_SPEC_VALUE_ARRAY()

+
#define G_PARAM_SPEC_VALUE_ARRAY(pspec)    (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_VALUE_ARRAY, GParamSpecValueArray))
+
+
+

G_PARAM_SPEC_VALUE_ARRAY has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use GArray instead of GValueArray

+
+

Cast a GParamSpec instance into a GParamSpecValueArray.

+
+

Parameters

+
+++++ + + + + + +

pspec

a valid GParamSpec instance

 
+
+
+
+
+

g_param_spec_value_array ()

+
GParamSpec *
+g_param_spec_value_array (const gchar *name,
+                          const gchar *nick,
+                          const gchar *blurb,
+                          GParamSpec *element_spec,
+                          GParamFlags flags);
+

Creates a new GParamSpecValueArray instance specifying a +G_TYPE_VALUE_ARRAY property. G_TYPE_VALUE_ARRAY is a +G_TYPE_BOXED type, as such, GValue structures for this property +can be accessed with g_value_set_boxed() and g_value_get_boxed().

+

See g_param_spec_internal() for details on property names.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

element_spec

a GParamSpec describing the elements contained in +arrays of this property, may be NULL

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification

+
+
+
+
+

G_IS_PARAM_SPEC_OVERRIDE()

+
#define G_IS_PARAM_SPEC_OVERRIDE(pspec)    (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_OVERRIDE))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_OVERRIDE.

+
+

Parameters

+
+++++ + + + + + +

pspec

a GParamSpec

 
+
+
+

Returns

+

TRUE on success.

+
+

Since: 2.4

+
+
+
+

G_PARAM_SPEC_OVERRIDE()

+
#define G_PARAM_SPEC_OVERRIDE(pspec)       (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_OVERRIDE, GParamSpecOverride))
+
+

Casts a GParamSpec into a GParamSpecOverride.

+
+

Parameters

+
+++++ + + + + + +

pspec

a GParamSpec

 
+
+

Since: 2.4

+
+
+
+

g_param_spec_override ()

+
GParamSpec *
+g_param_spec_override (const gchar *name,
+                       GParamSpec *overridden);
+

Creates a new property of type GParamSpecOverride. This is used +to direct operations to another paramspec, and will not be directly +useful unless you are implementing a new base type similar to GObject.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

name

the name of the property.

 

overridden

The property that is being overridden

 
+
+
+

Returns

+

the newly created GParamSpec

+
+

Since: 2.4

+
+
+
+

G_IS_PARAM_SPEC_GTYPE()

+
#define G_IS_PARAM_SPEC_GTYPE(pspec)       (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_GTYPE))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_GTYPE.

+
+

Parameters

+
+++++ + + + + + +

pspec

a GParamSpec

 
+
+
+

Returns

+

TRUE on success.

+
+

Since: 2.10

+
+
+
+

G_PARAM_SPEC_GTYPE()

+
#define G_PARAM_SPEC_GTYPE(pspec)          (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_GTYPE, GParamSpecGType))
+
+

Casts a GParamSpec into a GParamSpecGType.

+
+

Parameters

+
+++++ + + + + + +

pspec

a GParamSpec

 
+
+

Since: 2.10

+
+
+
+

G_VALUE_HOLDS_GTYPE()

+
#define G_VALUE_HOLDS_GTYPE(value)	 (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_GTYPE))
+
+

Checks whether the given GValue can hold values of type G_TYPE_GTYPE.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+

Since: 2.12

+
+
+
+

g_param_spec_gtype ()

+
GParamSpec *
+g_param_spec_gtype (const gchar *name,
+                    const gchar *nick,
+                    const gchar *blurb,
+                    GType is_a_type,
+                    GParamFlags flags);
+

Creates a new GParamSpecGType instance specifying a +G_TYPE_GTYPE property.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

is_a_type

a GType whose subtypes are allowed as values +of the property (use G_TYPE_NONE for any type)

 

flags

flags for the property specified

 
+
+
+

Returns

+

a newly created parameter specification.

+

[transfer full]

+
+

Since: 2.10

+
+
+
+

g_value_get_gtype ()

+
GType
+g_value_get_gtype (const GValue *value);
+

Get the contents of a G_TYPE_GTYPE GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_GTYPE

 
+
+
+

Returns

+

the GType stored in value +

+
+

Since: 2.12

+
+
+
+

g_value_set_gtype ()

+
void
+g_value_set_gtype (GValue *value,
+                   GType v_gtype);
+

Set the contents of a G_TYPE_GTYPE GValue to v_gtype +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_GTYPE

 

v_gtype

GType to be set

 
+
+

Since: 2.12

+
+
+
+

G_IS_PARAM_SPEC_VARIANT()

+
#define G_IS_PARAM_SPEC_VARIANT(pspec)      (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), G_TYPE_PARAM_VARIANT))
+
+

Checks whether the given GParamSpec is of type G_TYPE_PARAM_VARIANT.

+
+

Parameters

+
+++++ + + + + + +

pspec

a GParamSpec

 
+
+
+

Returns

+

TRUE on success

+
+

Since: 2.26

+
+
+
+

G_PARAM_SPEC_VARIANT()

+
#define G_PARAM_SPEC_VARIANT(pspec)         (G_TYPE_CHECK_INSTANCE_CAST ((pspec), G_TYPE_PARAM_VARIANT, GParamSpecVariant))
+
+

Casts a GParamSpec into a GParamSpecVariant.

+
+

Parameters

+
+++++ + + + + + +

pspec

a GParamSpec

 
+
+

Since: 2.26

+
+
+
+

G_VALUE_HOLDS_VARIANT()

+
#define G_VALUE_HOLDS_VARIANT(value)     (G_TYPE_CHECK_VALUE_TYPE ((value), G_TYPE_VARIANT))
+
+

Checks whether the given GValue can hold values of type G_TYPE_VARIANT.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue structure

 
+
+
+

Returns

+

TRUE on success.

+
+

Since: 2.26

+
+
+
+

G_TYPE_PARAM_VARIANT

+
#define G_TYPE_PARAM_VARIANT                (g_param_spec_types[22])
+
+

The GType of GParamSpecVariant.

+

Since: 2.26

+
+
+
+

g_param_spec_variant ()

+
GParamSpec *
+g_param_spec_variant (const gchar *name,
+                      const gchar *nick,
+                      const gchar *blurb,
+                      const GVariantType *type,
+                      GVariant *default_value,
+                      GParamFlags flags);
+

Creates a new GParamSpecVariant instance specifying a GVariant +property.

+

If default_value + is floating, it is consumed.

+

See g_param_spec_internal() for details on property names.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

canonical name of the property specified

 

nick

nick name for the property specified

 

blurb

description of the property specified

 

type

a GVariantType

 

default_value

a GVariant of type type +to +use as the default value, or NULL.

[allow-none][transfer full]

flags

flags for the property specified

 
+
+
+

Returns

+

the newly created GParamSpec.

+

[transfer full]

+
+

Since: 2.26

+
+
+
+

g_value_get_variant ()

+
GVariant *
+g_value_get_variant (const GValue *value);
+

Get the contents of a variant GValue.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_VARIANT

 
+
+
+

Returns

+

variant contents of value +

+
+

Since: 2.26

+
+
+
+

g_value_dup_variant ()

+
GVariant *
+g_value_dup_variant (const GValue *value);
+

Get the contents of a variant GValue, increasing its refcount.

+
+

Parameters

+
+++++ + + + + + +

value

a valid GValue of type G_TYPE_VARIANT

 
+
+
+

Returns

+

variant contents of value +, should be unrefed using +g_variant_unref() when no longer needed

+
+

Since: 2.26

+
+
+
+

g_value_set_variant ()

+
void
+g_value_set_variant (GValue *value,
+                     GVariant *variant);
+

Set the contents of a variant GValue to variant +. +If the variant is floating, it is consumed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_VARIANT

 

variant

a GVariant, or NULL.

[allow-none]
+
+

Since: 2.26

+
+
+
+

g_value_take_variant ()

+
void
+g_value_take_variant (GValue *value,
+                      GVariant *variant);
+

Set the contents of a variant GValue to variant +, and takes over +the ownership of the caller's reference to variant +; +the caller doesn't have to unref it any more (i.e. the reference +count of the variant is not increased).

+

If variant + was floating then its floating reference is converted to +a hard reference.

+

If you want the GValue to hold its own reference to variant +, use +g_value_set_variant() instead.

+

This is an internal function introduced mainly for C marshallers.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a valid GValue of type G_TYPE_VARIANT

 

variant

a GVariant, or NULL.

[nullable][transfer full]
+
+

Since: 2.26

+
+
+
+

Types and Values

+
+

G_TYPE_PARAM_BOOLEAN

+
#define G_TYPE_PARAM_BOOLEAN		   (g_param_spec_types[2])
+
+

The GType of GParamSpecBoolean.

+
+
+
+

struct GParamSpecBoolean

+
struct GParamSpecBoolean {
+  GParamSpec    parent_instance;
+  
+  gboolean      default_value;
+};
+
+

A GParamSpec derived structure that contains the meta data for boolean properties.

+
+

Members

+
+++++ + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

gboolean default_value;

default value for the property specified

 
+
+
+
+
+

G_TYPE_PARAM_CHAR

+
#define G_TYPE_PARAM_CHAR		   (g_param_spec_types[0])
+
+

The GType of GParamSpecChar.

+
+
+
+

struct GParamSpecChar

+
struct GParamSpecChar {
+  GParamSpec    parent_instance;
+  
+  gint8         minimum;
+  gint8         maximum;
+  gint8         default_value;
+};
+
+

A GParamSpec derived structure that contains the meta data for character properties.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

gint8 minimum;

minimum value for the property specified

 

gint8 maximum;

maximum value for the property specified

 

gint8 default_value;

default value for the property specified

 
+
+
+
+
+

G_TYPE_PARAM_UCHAR

+
#define G_TYPE_PARAM_UCHAR		   (g_param_spec_types[1])
+
+

The GType of GParamSpecUChar.

+
+
+
+

struct GParamSpecUChar

+
struct GParamSpecUChar {
+  GParamSpec    parent_instance;
+  
+  guint8        minimum;
+  guint8        maximum;
+  guint8        default_value;
+};
+
+

A GParamSpec derived structure that contains the meta data for unsigned character properties.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

guint8 minimum;

minimum value for the property specified

 

guint8 maximum;

maximum value for the property specified

 

guint8 default_value;

default value for the property specified

 
+
+
+
+
+

G_TYPE_PARAM_INT

+
#define G_TYPE_PARAM_INT		   (g_param_spec_types[3])
+
+

The GType of GParamSpecInt.

+
+
+
+

struct GParamSpecInt

+
struct GParamSpecInt {
+  GParamSpec    parent_instance;
+  
+  gint          minimum;
+  gint          maximum;
+  gint          default_value;
+};
+
+

A GParamSpec derived structure that contains the meta data for integer properties.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

gint minimum;

minimum value for the property specified

 

gint maximum;

maximum value for the property specified

 

gint default_value;

default value for the property specified

 
+
+
+
+
+

G_TYPE_PARAM_UINT

+
#define G_TYPE_PARAM_UINT		   (g_param_spec_types[4])
+
+

The GType of GParamSpecUInt.

+
+
+
+

struct GParamSpecUInt

+
struct GParamSpecUInt {
+  GParamSpec    parent_instance;
+  
+  guint         minimum;
+  guint         maximum;
+  guint         default_value;
+};
+
+

A GParamSpec derived structure that contains the meta data for unsigned integer properties.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

guint minimum;

minimum value for the property specified

 

guint maximum;

maximum value for the property specified

 

guint default_value;

default value for the property specified

 
+
+
+
+
+

G_TYPE_PARAM_LONG

+
#define G_TYPE_PARAM_LONG		   (g_param_spec_types[5])
+
+

The GType of GParamSpecLong.

+
+
+
+

struct GParamSpecLong

+
struct GParamSpecLong {
+  GParamSpec    parent_instance;
+  
+  glong         minimum;
+  glong         maximum;
+  glong         default_value;
+};
+
+

A GParamSpec derived structure that contains the meta data for long integer properties.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

glong minimum;

minimum value for the property specified

 

glong maximum;

maximum value for the property specified

 

glong default_value;

default value for the property specified

 
+
+
+
+
+

G_TYPE_PARAM_ULONG

+
#define G_TYPE_PARAM_ULONG		   (g_param_spec_types[6])
+
+

The GType of GParamSpecULong.

+
+
+
+

struct GParamSpecULong

+
struct GParamSpecULong {
+  GParamSpec    parent_instance;
+  
+  gulong        minimum;
+  gulong        maximum;
+  gulong        default_value;
+};
+
+

A GParamSpec derived structure that contains the meta data for unsigned long integer properties.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

gulong minimum;

minimum value for the property specified

 

gulong maximum;

maximum value for the property specified

 

gulong default_value;

default value for the property specified

 
+
+
+
+
+

G_TYPE_PARAM_INT64

+
#define G_TYPE_PARAM_INT64		   (g_param_spec_types[7])
+
+

The GType of GParamSpecInt64.

+
+
+
+

struct GParamSpecInt64

+
struct GParamSpecInt64 {
+  GParamSpec    parent_instance;
+  
+  gint64        minimum;
+  gint64        maximum;
+  gint64        default_value;
+};
+
+

A GParamSpec derived structure that contains the meta data for 64bit integer properties.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

gint64 minimum;

minimum value for the property specified

 

gint64 maximum;

maximum value for the property specified

 

gint64 default_value;

default value for the property specified

 
+
+
+
+
+

G_TYPE_PARAM_UINT64

+
#define G_TYPE_PARAM_UINT64		   (g_param_spec_types[8])
+
+

The GType of GParamSpecUInt64.

+
+
+
+

struct GParamSpecUInt64

+
struct GParamSpecUInt64 {
+  GParamSpec    parent_instance;
+  
+  guint64       minimum;
+  guint64       maximum;
+  guint64       default_value;
+};
+
+

A GParamSpec derived structure that contains the meta data for unsigned 64bit integer properties.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

guint64 minimum;

minimum value for the property specified

 

guint64 maximum;

maximum value for the property specified

 

guint64 default_value;

default value for the property specified

 
+
+
+
+
+

G_TYPE_PARAM_FLOAT

+
#define G_TYPE_PARAM_FLOAT		   (g_param_spec_types[12])
+
+

The GType of GParamSpecFloat.

+
+
+
+

struct GParamSpecFloat

+
struct GParamSpecFloat {
+  GParamSpec    parent_instance;
+  
+  gfloat        minimum;
+  gfloat        maximum;
+  gfloat        default_value;
+  gfloat        epsilon;
+};
+
+

A GParamSpec derived structure that contains the meta data for float properties.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

gfloat minimum;

minimum value for the property specified

 

gfloat maximum;

maximum value for the property specified

 

gfloat default_value;

default value for the property specified

 

gfloat epsilon;

values closer than epsilon +will be considered identical +by g_param_values_cmp(); the default value is 1e-30.

 
+
+
+
+
+

G_TYPE_PARAM_DOUBLE

+
#define G_TYPE_PARAM_DOUBLE		   (g_param_spec_types[13])
+
+

The GType of GParamSpecDouble.

+
+
+
+

struct GParamSpecDouble

+
struct GParamSpecDouble {
+  GParamSpec    parent_instance;
+  
+  gdouble       minimum;
+  gdouble       maximum;
+  gdouble       default_value;
+  gdouble       epsilon;
+};
+
+

A GParamSpec derived structure that contains the meta data for double properties.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

gdouble minimum;

minimum value for the property specified

 

gdouble maximum;

maximum value for the property specified

 

gdouble default_value;

default value for the property specified

 

gdouble epsilon;

values closer than epsilon +will be considered identical +by g_param_values_cmp(); the default value is 1e-90.

 
+
+
+
+
+

G_TYPE_PARAM_ENUM

+
#define G_TYPE_PARAM_ENUM		   (g_param_spec_types[10])
+
+

The GType of GParamSpecEnum.

+
+
+
+

struct GParamSpecEnum

+
struct GParamSpecEnum {
+  GParamSpec    parent_instance;
+  
+  GEnumClass   *enum_class;
+  gint          default_value;
+};
+
+

A GParamSpec derived structure that contains the meta data for enum +properties.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

GEnumClass *enum_class;

the GEnumClass for the enum

 

gint default_value;

default value for the property specified

 
+
+
+
+
+

G_TYPE_PARAM_FLAGS

+
#define G_TYPE_PARAM_FLAGS		   (g_param_spec_types[11])
+
+

The GType of GParamSpecFlags.

+
+
+
+

struct GParamSpecFlags

+
struct GParamSpecFlags {
+  GParamSpec    parent_instance;
+  
+  GFlagsClass  *flags_class;
+  guint         default_value;
+};
+
+

A GParamSpec derived structure that contains the meta data for flags +properties.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

GFlagsClass *flags_class;

the GFlagsClass for the flags

 

guint default_value;

default value for the property specified

 
+
+
+
+
+

G_TYPE_PARAM_STRING

+
#define G_TYPE_PARAM_STRING		   (g_param_spec_types[14])
+
+

The GType of GParamSpecString.

+
+
+
+

struct GParamSpecString

+
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;
+};
+
+

A GParamSpec derived structure that contains the meta data for string +properties.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

gchar *default_value;

default value for the property specified

 

gchar *cset_first;

a string containing the allowed values for the first byte

 

gchar *cset_nth;

a string containing the allowed values for the subsequent bytes

 

gchar substitutor;

the replacement byte for bytes which don't match cset_first +or cset_nth +.

 

guint null_fold_if_empty : 1;

replace empty string by NULL

 

guint ensure_non_null : 1;

replace NULL strings by an empty string

 
+
+
+
+
+

gchararray

+
typedef gchar* gchararray;
+
+

A C representable type name for G_TYPE_STRING.

+
+
+
+

G_TYPE_PARAM_PARAM

+
#define G_TYPE_PARAM_PARAM		   (g_param_spec_types[15])
+
+

The GType of GParamSpecParam.

+
+
+
+

struct GParamSpecParam

+
struct GParamSpecParam {
+  GParamSpec    parent_instance;
+};
+
+

A GParamSpec derived structure that contains the meta data for G_TYPE_PARAM +properties.

+
+

Members

+
+++++ + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 
+
+
+
+
+

G_TYPE_PARAM_BOXED

+
#define G_TYPE_PARAM_BOXED		   (g_param_spec_types[16])
+
+

The GType of GParamSpecBoxed.

+
+
+
+

struct GParamSpecBoxed

+
struct GParamSpecBoxed {
+  GParamSpec    parent_instance;
+};
+
+

A GParamSpec derived structure that contains the meta data for boxed properties.

+
+

Members

+
+++++ + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 
+
+
+
+
+

G_TYPE_PARAM_POINTER

+
#define G_TYPE_PARAM_POINTER		   (g_param_spec_types[17])
+
+

The GType of GParamSpecPointer.

+
+
+
+

struct GParamSpecPointer

+
struct GParamSpecPointer {
+  GParamSpec    parent_instance;
+};
+
+

A GParamSpec derived structure that contains the meta data for pointer properties.

+
+

Members

+
+++++ + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 
+
+
+
+
+

G_TYPE_PARAM_OBJECT

+
#define G_TYPE_PARAM_OBJECT		   (g_param_spec_types[19])
+
+

The GType of GParamSpecObject.

+
+
+
+

struct GParamSpecObject

+
struct GParamSpecObject {
+  GParamSpec    parent_instance;
+};
+
+

A GParamSpec derived structure that contains the meta data for object properties.

+
+

Members

+
+++++ + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 
+
+
+
+
+

G_TYPE_PARAM_UNICHAR

+
#define G_TYPE_PARAM_UNICHAR		   (g_param_spec_types[9])
+
+

The GType of GParamSpecUnichar.

+
+
+
+

struct GParamSpecUnichar

+
struct GParamSpecUnichar {
+  GParamSpec    parent_instance;
+  
+  gunichar      default_value;
+};
+
+

A GParamSpec derived structure that contains the meta data for unichar (unsigned integer) properties.

+
+

Members

+
+++++ + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

gunichar default_value;

default value for the property specified

 
+
+
+
+
+

G_TYPE_PARAM_VALUE_ARRAY

+
#define G_TYPE_PARAM_VALUE_ARRAY	   (g_param_spec_types[18])
+
+
+

G_TYPE_PARAM_VALUE_ARRAY has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use GArray instead of GValueArray

+
+

The GType of GParamSpecValueArray.

+
+
+
+

struct GParamSpecValueArray

+
struct GParamSpecValueArray {
+  GParamSpec    parent_instance;
+  GParamSpec   *element_spec;
+  guint		fixed_n_elements;
+};
+
+

A GParamSpec derived structure that contains the meta data for GValueArray properties.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

GParamSpec *element_spec;

a GParamSpec describing the elements contained in arrays of this property, may be NULL

 

guint fixed_n_elements;

if greater than 0, arrays of this property will always have this many elements

 
+
+
+
+
+

G_TYPE_PARAM_OVERRIDE

+
#define G_TYPE_PARAM_OVERRIDE		   (g_param_spec_types[20])
+
+

The GType of GParamSpecOverride.

+

Since: 2.4

+
+
+
+

struct GParamSpecOverride

+
struct 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

+
+
+
+

G_TYPE_PARAM_GTYPE

+
#define G_TYPE_PARAM_GTYPE		   (g_param_spec_types[21])
+
+

The GType of GParamSpecGType.

+

Since: 2.10

+
+
+
+

struct GParamSpecGType

+
struct GParamSpecGType {
+  GParamSpec    parent_instance;
+  GType         is_a_type;
+};
+
+

A GParamSpec derived structure that contains the meta data for GType properties.

+
+

Members

+
+++++ + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

GType is_a_type;

a GType whose subtypes can occur as values

 
+
+

Since: 2.10

+
+
+
+

struct GParamSpecVariant

+
struct GParamSpecVariant {
+  GParamSpec    parent_instance;
+  GVariantType *type;
+  GVariant     *default_value;
+};
+
+

A GParamSpec derived structure that contains the meta data for GVariant properties.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GParamSpec parent_instance;

private GParamSpec portion

 

GVariantType *type;

a GVariantType, or NULL

 

GVariant *default_value;

a GVariant, or NULL

 
+
+

Since: 2.26

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gobject-The-Base-Object-Type.html b/docs/reference/gobject/html/gobject-The-Base-Object-Type.html new file mode 100644 index 0000000..b967dc5 --- /dev/null +++ b/docs/reference/gobject/html/gobject-The-Base-Object-Type.html @@ -0,0 +1,4225 @@ + + + + +GObject: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

GObject

+

GObject — The base object type

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+void + +(*GObjectGetPropertyFunc) () +
+void + +(*GObjectSetPropertyFunc) () +
+void + +(*GObjectFinalizeFunc) () +
#define +G_TYPE_IS_OBJECT() +
#define +G_OBJECT() +
#define +G_IS_OBJECT() +
#define +G_OBJECT_CLASS() +
#define +G_IS_OBJECT_CLASS() +
#define +G_OBJECT_GET_CLASS() +
#define +G_OBJECT_TYPE() +
#define +G_OBJECT_TYPE_NAME() +
#define +G_OBJECT_CLASS_TYPE() +
#define +G_OBJECT_CLASS_NAME() +
+void + +g_object_class_install_property () +
+void + +g_object_class_install_properties () +
+GParamSpec * + +g_object_class_find_property () +
+GParamSpec ** + +g_object_class_list_properties () +
+void + +g_object_class_override_property () +
+void + +g_object_interface_install_property () +
+GParamSpec * + +g_object_interface_find_property () +
+GParamSpec ** + +g_object_interface_list_properties () +
+gpointer + +g_object_new () +
+gpointer + +g_object_newv () +
+gpointer + +g_object_ref () +
+void + +g_object_unref () +
+gpointer + +g_object_ref_sink () +
#define +g_set_object() +
+void + +g_clear_object () +
+gboolean + +g_object_is_floating () +
+void + +g_object_force_floating () +
+void + +(*GWeakNotify) () +
+void + +g_object_weak_ref () +
+void + +g_object_weak_unref () +
+void + +g_object_add_weak_pointer () +
+void + +g_object_remove_weak_pointer () +
+void + +(*GToggleNotify) () +
+void + +g_object_add_toggle_ref () +
+void + +g_object_remove_toggle_ref () +
+gpointer + +g_object_connect () +
+void + +g_object_disconnect () +
+void + +g_object_set () +
+void + +g_object_get () +
+void + +g_object_notify () +
+void + +g_object_notify_by_pspec () +
+void + +g_object_freeze_notify () +
+void + +g_object_thaw_notify () +
+gpointer + +g_object_get_data () +
+void + +g_object_set_data () +
+void + +g_object_set_data_full () +
+gpointer + +g_object_steal_data () +
+gpointer + +g_object_dup_data () +
+gboolean + +g_object_replace_data () +
+gpointer + +g_object_get_qdata () +
+void + +g_object_set_qdata () +
+void + +g_object_set_qdata_full () +
+gpointer + +g_object_steal_qdata () +
+gpointer + +g_object_dup_qdata () +
+gboolean + +g_object_replace_qdata () +
+void + +g_object_set_property () +
+void + +g_object_get_property () +
+GObject * + +g_object_new_valist () +
+void + +g_object_set_valist () +
+void + +g_object_get_valist () +
+void + +g_object_watch_closure () +
+void + +g_object_run_dispose () +
#define +G_OBJECT_WARN_INVALID_PROPERTY_ID() +
+void + +g_weak_ref_init () +
+void + +g_weak_ref_clear () +
+gpointer + +g_weak_ref_get () +
+void + +g_weak_ref_set () +
+
+
+

Signals

+
+++++ + + + + + +
voidnotifyNo Hooks
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
structGObject
structGObjectClass
structGObjectConstructParam
structGParameter
typedefGInitiallyUnowned
typedefGInitiallyUnownedClass
#defineG_TYPE_INITIALLY_UNOWNED
 GWeakRef
+
+
+

Object Hierarchy

+
    GObject
+    ├── GBinding
+    ╰── GTypeModule
+
+
+
+

Includes

+
#include <glib-object.h>
+
+
+
+

Description

+

GObject is the fundamental type providing the common attributes and +methods for all object types in GTK+, Pango and other libraries +based on GObject. The GObject class provides methods for object +construction and destruction, property access methods, and signal +support. Signals are described in detail here.

+

For a tutorial on implementing a new GObject class, see How to define and +implement a new GObject. For a list of naming conventions for +GObjects and their methods, see the GType conventions. +For the high-level concepts behind GObject, read Instantiable classed types: +Objects.

+
+

Floating references

+

GInitiallyUnowned is derived from GObject. The only difference between +the two is that the initial reference of a GInitiallyUnowned is flagged +as a "floating" reference. This means that it is not specifically +claimed to be "owned" by any code portion. The main motivation for +providing floating references is C convenience. In particular, it +allows code to be written as:

+
+ + + + + + + +
1
+2
container = create_container ();
+container_add_child (container, create_child());
+
+ +

+If container_add_child() calls g_object_ref_sink() on the passed-in child, +no reference of the newly created child is leaked. Without floating +references, container_add_child() can only g_object_ref() the new child, +so to implement this code without reference leaks, it would have to be +written as:

+
+ + + + + + + +
1
+2
+3
+4
+5
Child *child;
+container = create_container ();
+child = create_child ();
+container_add_child (container, child);
+g_object_unref (child);
+
+ +

+The floating reference can be converted into an ordinary reference by +calling g_object_ref_sink(). For already sunken objects (objects that +don't have a floating reference anymore), g_object_ref_sink() is equivalent +to g_object_ref() and returns a new reference.

+

Since floating references are useful almost exclusively for C convenience, +language bindings that provide automated reference and memory ownership +maintenance (such as smart pointers or garbage collection) should not +expose floating references in their API.

+

Some object implementations may need to save an objects floating state +across certain code portions (an example is GtkMenu), to achieve this, +the following sequence can be used:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
// save floating state
+gboolean was_floating = g_object_is_floating (object);
+g_object_ref_sink (object);
+// protected code portion
+
+...
+
+// restore floating state
+if (was_floating)
+  g_object_force_floating (object);
+else
+  g_object_unref (object); // release previously acquired reference
+
+ +

+
+
+
+

Functions

+
+

GObjectGetPropertyFunc ()

+
void
+(*GObjectGetPropertyFunc) (GObject *object,
+                           guint property_id,
+                           GValue *value,
+                           GParamSpec *pspec);
+

The type of the get_property + function of GObjectClass.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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

 
+
+
+
+
+

GObjectSetPropertyFunc ()

+
void
+(*GObjectSetPropertyFunc) (GObject *object,
+                           guint property_id,
+                           const GValue *value,
+                           GParamSpec *pspec);
+

The type of the set_property + function of GObjectClass.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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

 
+
+
+
+
+

GObjectFinalizeFunc ()

+
void
+(*GObjectFinalizeFunc) (GObject *object);
+

The type of the finalize + function of GObjectClass.

+
+

Parameters

+
+++++ + + + + + +

object

the GObject being finalized

 
+
+
+
+
+

G_TYPE_IS_OBJECT()

+
#define G_TYPE_IS_OBJECT(type)      (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT)
+
+

Check if the passed in type id is a G_TYPE_OBJECT or derived from it.

+
+

Parameters

+
+++++ + + + + + +

type

Type id to check

 
+
+
+

Returns

+

FALSE or TRUE, indicating whether type +is a G_TYPE_OBJECT.

+
+
+
+
+

G_OBJECT()

+
#define G_OBJECT(object)            (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_OBJECT, GObject))
+
+

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.

+
+

Parameters

+
+++++ + + + + + +

object

Object which is subject to casting.

 
+
+
+
+
+

G_IS_OBJECT()

+
#define G_IS_OBJECT(object)         (G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE ((object), G_TYPE_OBJECT))
+
+

Checks whether a valid GTypeInstance pointer is of type G_TYPE_OBJECT.

+
+

Parameters

+
+++++ + + + + + +

object

Instance to check for being a G_TYPE_OBJECT.

 
+
+
+
+
+

G_OBJECT_CLASS()

+
#define G_OBJECT_CLASS(class)       (G_TYPE_CHECK_CLASS_CAST ((class), G_TYPE_OBJECT, GObjectClass))
+
+

Casts a derived GObjectClass structure into a GObjectClass structure.

+
+

Parameters

+
+++++ + + + + + +

class

a valid GObjectClass

 
+
+
+
+
+

G_IS_OBJECT_CLASS()

+
#define G_IS_OBJECT_CLASS(class)    (G_TYPE_CHECK_CLASS_TYPE ((class), G_TYPE_OBJECT))
+
+

Checks whether class + "is a" valid GObjectClass structure of type +G_TYPE_OBJECT or derived.

+
+

Parameters

+
+++++ + + + + + +

class

a GObjectClass

 
+
+
+
+
+

G_OBJECT_GET_CLASS()

+
#define G_OBJECT_GET_CLASS(object)  (G_TYPE_INSTANCE_GET_CLASS ((object), G_TYPE_OBJECT, GObjectClass))
+
+

Get the class structure associated to a GObject instance.

+
+

Parameters

+
+++++ + + + + + +

object

a GObject instance.

 
+
+
+

Returns

+

pointer to object class structure.

+
+
+
+
+

G_OBJECT_TYPE()

+
#define G_OBJECT_TYPE(object)       (G_TYPE_FROM_INSTANCE (object))
+
+

Get the type id of an object.

+
+

Parameters

+
+++++ + + + + + +

object

Object to return the type id for.

 
+
+
+

Returns

+

Type id of object +.

+
+
+
+
+

G_OBJECT_TYPE_NAME()

+
#define G_OBJECT_TYPE_NAME(object)  (g_type_name (G_OBJECT_TYPE (object)))
+
+

Get the name of an object's type.

+
+

Parameters

+
+++++ + + + + + +

object

Object to return the type name for.

 
+
+
+

Returns

+

Type name of object +. The string is owned by the type system and +should not be freed.

+
+
+
+
+

G_OBJECT_CLASS_TYPE()

+
#define G_OBJECT_CLASS_TYPE(class)  (G_TYPE_FROM_CLASS (class))
+
+

Get the type id of a class structure.

+
+

Parameters

+
+++++ + + + + + +

class

a valid GObjectClass

 
+
+
+

Returns

+

Type id of class +.

+
+
+
+
+

G_OBJECT_CLASS_NAME()

+
#define G_OBJECT_CLASS_NAME(class)  (g_type_name (G_OBJECT_CLASS_TYPE (class)))
+
+

Return the name of a class structure's type.

+
+

Parameters

+
+++++ + + + + + +

class

a valid GObjectClass

 
+
+
+

Returns

+

Type name of class +. The string is owned by the type system and +should not be freed.

+
+
+
+
+

g_object_class_install_property ()

+
void
+g_object_class_install_property (GObjectClass *oclass,
+                                 guint property_id,
+                                 GParamSpec *pspec);
+

Installs a new property.

+

All properties should be installed during the class initializer. It +is possible to install properties after that, but doing so is not +recommend, and specifically, is not guaranteed to be thread-safe vs. +use of properties on the same type on other threads.

+

Note that it is possible to redefine a property in a derived class, +by installing a property with the same name. This can be useful at times, +e.g. to change the range of allowed values or the default value.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

oclass

a GObjectClass

 

property_id

the id for the new property

 

pspec

the GParamSpec for the new property

 
+
+
+
+
+

g_object_class_install_properties ()

+
void
+g_object_class_install_properties (GObjectClass *oclass,
+                                   guint n_pspecs,
+                                   GParamSpec **pspecs);
+

Installs new properties from an array of GParamSpecs.

+

All properties should be installed during the class initializer. It +is possible to install properties after that, but doing so is not +recommend, and specifically, is not guaranteed to be thread-safe vs. +use of properties on the same type on other threads.

+

The property id of each property is the index of each GParamSpec in +the pspecs + array.

+

The property id of 0 is treated specially by GObject and it should not +be used to store a GParamSpec.

+

This function should be used if you plan to use a static array of +GParamSpecs and g_object_notify_by_pspec(). For instance, this +class initialization:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
enum {
+  PROP_0, PROP_FOO, PROP_BAR, N_PROPERTIES
+};
+
+static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, };
+
+static void
+my_object_class_init (MyObjectClass *klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  obj_properties[PROP_FOO] =
+    g_param_spec_int ("foo", "Foo", "Foo",
+                      -1, G_MAXINT,
+                      0,
+                      G_PARAM_READWRITE);
+
+  obj_properties[PROP_BAR] =
+    g_param_spec_string ("bar", "Bar", "Bar",
+                         NULL,
+                         G_PARAM_READWRITE);
+
+  gobject_class->set_property = my_object_set_property;
+  gobject_class->get_property = my_object_get_property;
+  g_object_class_install_properties (gobject_class,
+                                     N_PROPERTIES,
+                                     obj_properties);
+}
+
+ +

+

allows calling g_object_notify_by_pspec() to notify of property changes:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
void
+my_object_set_foo (MyObject *self, gint foo)
+{
+  if (self->foo != foo)
+    {
+      self->foo = foo;
+      g_object_notify_by_pspec (G_OBJECT (self), obj_properties[PROP_FOO]);
+    }
+ }
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

oclass

a GObjectClass

 

n_pspecs

the length of the GParamSpecs array

 

pspecs

the GParamSpecs array +defining the new properties.

[array length=n_pspecs]
+
+

Since: 2.26

+
+
+
+

g_object_class_find_property ()

+
GParamSpec *
+g_object_class_find_property (GObjectClass *oclass,
+                              const gchar *property_name);
+

Looks up the GParamSpec for a property of a class.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

oclass

a GObjectClass

 

property_name

the name of the property to look up

 
+
+
+

Returns

+

the GParamSpec for the property, or +NULL if the class doesn't have a property of that name.

+

[transfer none]

+
+
+
+
+

g_object_class_list_properties ()

+
GParamSpec **
+g_object_class_list_properties (GObjectClass *oclass,
+                                guint *n_properties);
+

Get an array of GParamSpec* for all properties of a class.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

oclass

a GObjectClass

 

n_properties

return location for the length of the returned array.

[out]
+
+
+

Returns

+

an array of +GParamSpec* which should be freed after use.

+

[array length=n_properties][transfer container]

+
+
+
+
+

g_object_class_override_property ()

+
void
+g_object_class_override_property (GObjectClass *oclass,
+                                  guint property_id,
+                                  const gchar *name);
+

Registers property_id + as referring to a property with the name +name + in a parent class or in an interface implemented by oclass +. +This allows this class to "override" a property implementation in +a parent class or to provide the implementation of a property from +an interface.

+

Internally, overriding is implemented by creating a property of type +GParamSpecOverride; generally operations that query the properties of +the object class, such as g_object_class_find_property() or +g_object_class_list_properties() will return the overridden +property. However, in one case, the construct_properties + argument of +the constructor + virtual function, the GParamSpecOverride is passed +instead, so that the param_id + field of the GParamSpec will be +correct. For virtually all uses, this makes no difference. If you +need to get the overridden property, you can call +g_param_spec_get_redirect_target().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

oclass

a GObjectClass

 

property_id

the new property ID

 

name

the name of a property registered in a parent class or +in an interface of this class.

 
+
+

Since: 2.4

+
+
+
+

g_object_interface_install_property ()

+
void
+g_object_interface_install_property (gpointer g_iface,
+                                     GParamSpec *pspec);
+

Add a property to an interface; this is only useful for interfaces +that are added to GObject-derived types. Adding a property to an +interface forces all objects classes with that interface to have a +compatible property. The compatible property could be a newly +created GParamSpec, but normally +g_object_class_override_property() will be used so that the object +class only needs to provide an implementation and inherits the +property description, default value, bounds, and so forth from the +interface property.

+

This function is meant to be called from the interface's default +vtable initialization function (the class_init + member of +GTypeInfo.) It must not be called after after class_init + has +been called for any object types implementing this interface.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

g_iface

any interface vtable for the +interface, or the default +vtable for the interface.

[type GObject.TypeInterface]

pspec

the GParamSpec for the new property

 
+
+

Since: 2.4

+
+
+
+

g_object_interface_find_property ()

+
GParamSpec *
+g_object_interface_find_property (gpointer g_iface,
+                                  const gchar *property_name);
+

Find the GParamSpec with the given name for an +interface. Generally, the interface vtable passed in as g_iface + +will be the default vtable from g_type_default_interface_ref(), or, +if you know the interface has already been loaded, +g_type_default_interface_peek().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

g_iface

any interface vtable for the +interface, or the default vtable for the interface.

[type GObject.TypeInterface]

property_name

name of a property to lookup.

 
+
+
+

Returns

+

the GParamSpec for the property of the +interface with the name property_name +, or NULL if no +such property exists.

+

[transfer none]

+
+

Since: 2.4

+
+
+
+

g_object_interface_list_properties ()

+
GParamSpec **
+g_object_interface_list_properties (gpointer g_iface,
+                                    guint *n_properties_p);
+

Lists the properties of an interface.Generally, the interface +vtable passed in as g_iface + will be the default vtable from +g_type_default_interface_ref(), or, if you know the interface has +already been loaded, g_type_default_interface_peek().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

g_iface

any interface vtable for the +interface, or the default vtable for the interface.

[type GObject.TypeInterface]

n_properties_p

location to store number of properties returned.

[out]
+
+
+

Returns

+

a +pointer to an array of pointers to GParamSpec +structures. The paramspecs are owned by GLib, but the +array should be freed with g_free() when you are done with +it.

+

[array length=n_properties_p][transfer container]

+
+

Since: 2.4

+
+
+
+

g_object_new ()

+
gpointer
+g_object_new (GType object_type,
+              const gchar *first_property_name,
+              ...);
+

Creates a new instance of a GObject subtype and sets its properties.

+

Construction parameters (see G_PARAM_CONSTRUCT, G_PARAM_CONSTRUCT_ONLY) +which are not explicitly specified are set to their default values.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object_type

the type id of the GObject subtype to instantiate

 

first_property_name

the name of the first property

 

...

the value of the first property, followed optionally by more +name/value pairs, followed by NULL

 
+
+
+

Returns

+

(transfer full) (type GObject.Object) : a new instance of +object_type +

+
+
+
+
+

g_object_newv ()

+
gpointer
+g_object_newv (GType object_type,
+               guint n_parameters,
+               GParameter *parameters);
+

Creates a new instance of a GObject subtype and sets its properties.

+

Construction parameters (see G_PARAM_CONSTRUCT, G_PARAM_CONSTRUCT_ONLY) +which are not explicitly specified are set to their default values.

+

[rename-to g_object_new]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object_type

the type id of the GObject subtype to instantiate

 

n_parameters

the length of the parameters +array

 

parameters

an array of GParameter.

[array length=n_parameters]
+
+
+

Returns

+

a new instance of +object_type +.

+

[type GObject.Object][transfer full]

+
+
+
+
+

g_object_ref ()

+
gpointer
+g_object_ref (gpointer object);
+

Increases the reference count of object +.

+
+

Parameters

+
+++++ + + + + + +

object

a GObject.

[type GObject.Object]
+
+
+

Returns

+

the same object +.

+

[type GObject.Object][transfer none]

+
+
+
+
+

g_object_unref ()

+
void
+g_object_unref (gpointer object);
+

Decreases the reference count of object +. When its reference count +drops to 0, the object is finalized (i.e. its memory is freed).

+

If the pointer to the GObject may be reused in future (for example, if it is +an instance variable of another object), it is recommended to clear the +pointer to NULL rather than retain a dangling pointer to a potentially +invalid GObject instance. Use g_clear_object() for this.

+
+

Parameters

+
+++++ + + + + + +

object

a GObject.

[type GObject.Object]
+
+
+
+
+

g_object_ref_sink ()

+
gpointer
+g_object_ref_sink (gpointer object);
+

Increase the reference count of object +, and possibly remove the +floating reference, if object + has a floating reference.

+

In other words, if the object is floating, then this call "assumes +ownership" of the floating reference, converting it to a normal +reference by clearing the floating flag while leaving the reference +count unchanged. If the object is not floating, then this call +adds a new normal reference increasing the reference count by one.

+
+

Parameters

+
+++++ + + + + + +

object

a GObject.

[type GObject.Object]
+
+
+

Returns

+

object +.

+

[type GObject.Object][transfer none]

+
+

Since: 2.10

+
+
+
+

g_set_object()

+
#define             g_set_object(object_ptr, new_object)
+

Updates a GObject pointer to refer to new_object +. It increments the +reference count of new_object + (if non-NULL), decrements the reference +count of the current value of object_ptr + (if non-NULL), and assigns +new_object + to object_ptr +. The assignment is not atomic.

+

object_ptr + must not be NULL.

+

A macro is also included that allows this function to be used without +pointer casts. The function itself is static inline, so its address may vary +between compilation units.

+

One convenient usage of this function is in implementing property setters:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
void
+foo_set_bar (Foo *foo,
+             Bar *new_bar)
+{
+  g_return_if_fail (IS_FOO (foo));
+  g_return_if_fail (new_bar == NULL || IS_BAR (new_bar));
+
+  if (g_set_object (&foo->bar, new_bar))
+    g_object_notify (foo, "bar");
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object_ptr

a pointer to a GObject reference

 

new_object

a pointer to the new GObject to +assign to it, or NULL to clear the pointer.

[nullable][transfer none]
+
+
+

Returns

+

TRUE if the value of object_ptr +changed, FALSE otherwise

+
+

Since: 2.44

+
+
+
+

g_clear_object ()

+
void
+g_clear_object (volatile GObject **object_ptr);
+

Clears a reference to a GObject.

+

object_ptr + must not be NULL.

+

If the reference is NULL then this function does nothing. +Otherwise, the reference count of the object is decreased and the +pointer is set to NULL.

+

A macro is also included that allows this function to be used without +pointer casts.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

object_ptr

a pointer to a GObject reference

 
+
+

Since: 2.28

+
+
+
+

g_object_is_floating ()

+
gboolean
+g_object_is_floating (gpointer object);
+

Checks whether object + has a floating reference.

+
+

Parameters

+
+++++ + + + + + +

object

a GObject.

[type GObject.Object]
+
+
+

Returns

+

TRUE if object +has a floating reference

+
+

Since: 2.10

+
+
+
+

g_object_force_floating ()

+
void
+g_object_force_floating (GObject *object);
+

This function is intended for GObject implementations to re-enforce +a floating object reference. Doing this is seldom +required: all GInitiallyUnowneds are created with a floating reference +which usually just needs to be sunken by calling g_object_ref_sink().

+
+

Parameters

+
+++++ + + + + + +

object

a GObject

 
+
+

Since: 2.10

+
+
+
+

GWeakNotify ()

+
void
+(*GWeakNotify) (gpointer data,
+                GObject *where_the_object_was);
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

data

data that was provided when the weak reference was established

 

where_the_object_was

the object being finalized

 
+
+
+
+
+

g_object_weak_ref ()

+
void
+g_object_weak_ref (GObject *object,
+                   GWeakNotify notify,
+                   gpointer data);
+

Adds a weak reference callback to an object. Weak references are +used for notification when an object is finalized. They are called +"weak references" because they allow you to safely hold a pointer +to an object without calling g_object_ref() (g_object_ref() adds a +strong reference, that is, forces the object to stay alive).

+

Note that the weak references created by this method are not +thread-safe: they cannot safely be used in one thread if the +object's last g_object_unref() might happen in another thread. +Use GWeakRef if thread-safety is required.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

GObject to reference weakly

 

notify

callback to invoke before the object is freed

 

data

extra data to pass to notify

 
+
+
+
+
+

g_object_weak_unref ()

+
void
+g_object_weak_unref (GObject *object,
+                     GWeakNotify notify,
+                     gpointer data);
+

Removes a weak reference callback to an object.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

GObject to remove a weak reference from

 

notify

callback to search for

 

data

data to search for

 
+
+
+
+
+

g_object_add_weak_pointer ()

+
void
+g_object_add_weak_pointer (GObject *object,
+                           gpointer *weak_pointer_location);
+

Adds a weak reference from weak_pointer to object + to indicate that +the pointer located at weak_pointer_location + is only valid during +the lifetime of object +. When the object + is finalized, +weak_pointer + will be set to NULL.

+

Note that as with g_object_weak_ref(), the weak references created by +this method are not thread-safe: they cannot safely be used in one +thread if the object's last g_object_unref() might happen in another +thread. Use GWeakRef if thread-safety is required.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object

The object that should be weak referenced.

 

weak_pointer_location

The memory address +of a pointer.

[inout][not optional][nullable]
+
+
+
+
+

g_object_remove_weak_pointer ()

+
void
+g_object_remove_weak_pointer (GObject *object,
+                              gpointer *weak_pointer_location);
+

Removes a weak reference from object + that was previously added +using g_object_add_weak_pointer(). The weak_pointer_location + has +to match the one used with g_object_add_weak_pointer().

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object

The object that is weak referenced.

 

weak_pointer_location

The memory address +of a pointer.

[inout][not optional][nullable]
+
+
+
+
+

GToggleNotify ()

+
void
+(*GToggleNotify) (gpointer data,
+                  GObject *object,
+                  gboolean is_last_ref);
+

A callback function used for notification when the state +of a toggle reference changes. See g_object_add_toggle_ref().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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.

 
+
+
+
+
+

g_object_add_toggle_ref ()

+
void
+g_object_add_toggle_ref (GObject *object,
+                         GToggleNotify notify,
+                         gpointer data);
+

Increases the reference count of the object by one and sets a +callback to be called when all other references to the object are +dropped, or when this is already the last reference to the object +and another reference is established.

+

This functionality is intended for binding object + to a proxy +object managed by another memory manager. This is done with two +paired references: the strong reference added by +g_object_add_toggle_ref() and a reverse reference to the proxy +object which is either a strong reference or weak reference.

+

The setup is that when there are no other references to object +, +only a weak reference is held in the reverse direction from object + +to the proxy object, but when there are other references held to +object +, a strong reference is held. The notify + callback is called +when the reference from object + to the proxy object should be +"toggled" from strong to weak (is_last_ref + true) or weak to strong +(is_last_ref + false).

+

Since a (normal) reference must be held to the object before +calling g_object_add_toggle_ref(), the initial state of the reverse +link is always strong.

+

Multiple toggle references may be added to the same gobject, +however if there are multiple toggle references to an object, none +of them will ever be notified until all but one are removed. For +this reason, you should only ever use a toggle reference if there +is important state in the proxy object.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

a GObject

 

notify

a function to call when this reference is the +last reference to the object, or is no longer +the last reference.

 

data

data to pass to notify +

 
+
+

Since: 2.8

+
+
+
+

g_object_remove_toggle_ref ()

+
void
+g_object_remove_toggle_ref (GObject *object,
+                            GToggleNotify notify,
+                            gpointer data);
+

Removes a reference added with g_object_add_toggle_ref(). The +reference count of the object is decreased by one.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

a GObject

 

notify

a function to call when this reference is the +last reference to the object, or is no longer +the last reference.

 

data

data to pass to notify +

 
+
+

Since: 2.8

+
+
+
+

g_object_connect ()

+
gpointer
+g_object_connect (gpointer object,
+                  const gchar *signal_spec,
+                  ...);
+

A convenience function to connect multiple signals at once.

+

The signal specs expected by this function have the form +"modifier::signal_name", where modifier can be one of the following:

+
    +
    • signal: equivalent to g_signal_connect_data (..., NULL, 0)

  • +
  • object-signal, object_signal: equivalent to g_signal_connect_object (..., 0)

  • +
  • swapped-signal, swapped_signal: equivalent to g_signal_connect_data (..., NULL, G_CONNECT_SWAPPED)

  • +
  • swapped_object_signal, swapped-object-signal: equivalent to g_signal_connect_object (..., G_CONNECT_SWAPPED)

  • +
  • signal_after, signal-after: equivalent to g_signal_connect_data (..., NULL, G_CONNECT_AFTER)

  • +
  • object_signal_after, object-signal-after: equivalent to g_signal_connect_object (..., G_CONNECT_AFTER)

  • +
  • swapped_signal_after, swapped-signal-after: equivalent to g_signal_connect_data (..., NULL, G_CONNECT_SWAPPED | G_CONNECT_AFTER)

  • +
  • swapped_object_signal_after, swapped-object-signal-after: equivalent to g_signal_connect_object (..., G_CONNECT_SWAPPED | G_CONNECT_AFTER)

  • +
+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
menu->toplevel = g_object_connect (g_object_new (GTK_TYPE_WINDOW,
+						   "type", GTK_WINDOW_POPUP,
+						   "child", menu,
+						   NULL),
+				     "signal::event", gtk_menu_window_event, menu,
+				     "signal::size_request", gtk_menu_window_size_request, menu,
+				     "signal::destroy", gtk_widget_destroyed, &menu->toplevel,
+				     NULL);
+
+ +

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

a GObject.

[type GObject.Object]

signal_spec

the spec for the first signal

 

...

GCallback for the first signal, followed by data for the +first signal, followed optionally by more signal +spec/callback/data triples, followed by NULL

 
+
+
+

Returns

+

object +.

+

[transfer none][type GObject.Object]

+
+
+
+
+

g_object_disconnect ()

+
void
+g_object_disconnect (gpointer object,
+                     const gchar *signal_spec,
+                     ...);
+

A convenience function to disconnect multiple signals at once.

+

The signal specs expected by this function have the form +"any_signal", which means to disconnect any signal with matching +callback and data, or "any_signal::signal_name", which only +disconnects the signal named "signal_name".

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

a GObject.

[type GObject.Object]

signal_spec

the spec for the first signal

 

...

GCallback for the first signal, followed by data for the first signal, +followed optionally by more signal spec/callback/data triples, +followed by NULL

 
+
+
+
+
+

g_object_set ()

+
void
+g_object_set (gpointer object,
+              const gchar *first_property_name,
+              ...);
+

Sets properties on an object.

+

Note that the "notify" signals are queued and only emitted (in +reverse order) after all properties have been set. See +g_object_freeze_notify().

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

a GObject.

[type GObject.Object]

first_property_name

name of the first property to set

 

...

value for the first property, followed optionally by more +name/value pairs, followed by NULL

 
+
+
+
+
+

g_object_get ()

+
void
+g_object_get (gpointer object,
+              const gchar *first_property_name,
+              ...);
+

Gets properties of an object.

+

In general, a copy is made of the property contents and the caller +is responsible for freeing the memory in the appropriate manner for +the type, for instance by calling g_free() or g_object_unref().

+

Here is an example of using g_object_get() to get the contents +of three properties: an integer, a string and an object:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
gint intval;
+gchar *strval;
+GObject *objval;
+
+g_object_get (my_object,
+              "int-property", &intval,
+              "str-property", &strval,
+              "obj-property", &objval,
+              NULL);
+
+// Do something with intval, strval, objval
+
+g_free (strval);
+g_object_unref (objval);
+
+ +

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

a GObject.

[type GObject.Object]

first_property_name

name of the first property to get

 

...

return location for the first property, followed optionally by more +name/return location pairs, followed by NULL

 
+
+
+
+
+

g_object_notify ()

+
void
+g_object_notify (GObject *object,
+                 const gchar *property_name);
+

Emits a "notify" signal for the property property_name + on object +.

+

When possible, eg. when signaling a property change from within the class +that registered the property, you should use g_object_notify_by_pspec() +instead.

+

Note that emission of the notify signal may be blocked with +g_object_freeze_notify(). In this case, the signal emissions are queued +and will be emitted (in reverse order) when g_object_thaw_notify() is +called.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object

a GObject

 

property_name

the name of a property installed on the class of object +.

 
+
+
+
+
+

g_object_notify_by_pspec ()

+
void
+g_object_notify_by_pspec (GObject *object,
+                          GParamSpec *pspec);
+

Emits a "notify" signal for the property specified by pspec + on object +.

+

This function omits the property name lookup, hence it is faster than +g_object_notify().

+

One way to avoid using g_object_notify() from within the +class that registered the properties, and using g_object_notify_by_pspec() +instead, is to store the GParamSpec used with +g_object_class_install_property() inside a static array, e.g.:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
enum
+{
+  PROP_0,
+  PROP_FOO,
+  PROP_LAST
+};
+
+static GParamSpec *properties[PROP_LAST];
+
+static void
+my_object_class_init (MyObjectClass *klass)
+{
+  properties[PROP_FOO] = g_param_spec_int ("foo", "Foo", "The foo",
+                                           0, 100,
+                                           50,
+                                           G_PARAM_READWRITE);
+  g_object_class_install_property (gobject_class,
+                                   PROP_FOO,
+                                   properties[PROP_FOO]);
+}
+
+ +

+

and then notify a change on the "foo" property with:

+
+ + + + + + + +
1
g_object_notify_by_pspec (self, properties[PROP_FOO]);
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object

a GObject

 

pspec

the GParamSpec of a property installed on the class of object +.

 
+
+

Since: 2.26

+
+
+
+

g_object_freeze_notify ()

+
void
+g_object_freeze_notify (GObject *object);
+

Increases the freeze count on object +. If the freeze count is +non-zero, the emission of "notify" signals on object + is +stopped. The signals are queued until the freeze count is decreased +to zero. Duplicate notifications are squashed so that at most one +“notify” signal is emitted for each property modified while the +object is frozen.

+

This is necessary for accessors that modify multiple properties to prevent +premature notification while the object is still being modified.

+
+

Parameters

+
+++++ + + + + + +

object

a GObject

 
+
+
+
+
+

g_object_thaw_notify ()

+
void
+g_object_thaw_notify (GObject *object);
+

Reverts the effect of a previous call to +g_object_freeze_notify(). The freeze count is decreased on object + +and when it reaches zero, queued "notify" signals are emitted.

+

Duplicate notifications for each property are squashed so that at most one +“notify” signal is emitted for each property, in the reverse order +in which they have been queued.

+

It is an error to call this function when the freeze count is zero.

+
+

Parameters

+
+++++ + + + + + +

object

a GObject

 
+
+
+
+
+

g_object_get_data ()

+
gpointer
+g_object_get_data (GObject *object,
+                   const gchar *key);
+

Gets a named field from the objects table of associations (see g_object_set_data()).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object

GObject containing the associations

 

key

name of the key for that association

 
+
+
+

Returns

+

the data if found, or NULL if no such data exists.

+

[transfer none]

+
+
+
+
+

g_object_set_data ()

+
void
+g_object_set_data (GObject *object,
+                   const gchar *key,
+                   gpointer data);
+

Each object carries around a table of associations from +strings to pointers. This function lets you set an association.

+

If the object already had an association with that name, +the old association will be destroyed.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

GObject containing the associations.

 

key

name of the key

 

data

data to associate with that key

 
+
+
+
+
+

g_object_set_data_full ()

+
void
+g_object_set_data_full (GObject *object,
+                        const gchar *key,
+                        gpointer data,
+                        GDestroyNotify destroy);
+

Like g_object_set_data() except it adds notification +for when the association is destroyed, either by setting it +to a different value or when the object is destroyed.

+

Note that the destroy + callback is not called if data + is NULL.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

object

GObject containing the associations

 

key

name of the key

 

data

data to associate with that key

 

destroy

function to call when the association is destroyed

 
+
+
+
+
+

g_object_steal_data ()

+
gpointer
+g_object_steal_data (GObject *object,
+                     const gchar *key);
+

Remove a specified datum from the object's data associations, +without invoking the association's destroy handler.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object

GObject containing the associations

 

key

name of the key

 
+
+
+

Returns

+

the data if found, or NULL if no such data exists.

+

[transfer full]

+
+
+
+
+

g_object_dup_data ()

+
gpointer
+g_object_dup_data (GObject *object,
+                   const gchar *key,
+                   GDuplicateFunc dup_func,
+                   gpointer user_data);
+

This is a variant of g_object_get_data() which returns +a 'duplicate' of the value. dup_func + defines the +meaning of 'duplicate' in this context, it could e.g. +take a reference on a ref-counted object.

+

If the key + is not set on the object then dup_func + +will be called with a NULL argument.

+

Note that dup_func + is called while user data of object + +is locked.

+

This function can be useful to avoid races when multiple +threads are using object data on the same key on the same +object.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

object

the GObject to store user data on

 

key

a string, naming the user data pointer

 

dup_func

function to dup the value.

[allow-none]

user_data

passed as user_data to dup_func +.

[allow-none]
+
+
+

Returns

+

the result of calling dup_func +on the value +associated with key +on object +, or NULL if not set. +If dup_func +is NULL, the value is returned +unmodified.

+
+

Since: 2.34

+
+
+
+

g_object_replace_data ()

+
gboolean
+g_object_replace_data (GObject *object,
+                       const gchar *key,
+                       gpointer oldval,
+                       gpointer newval,
+                       GDestroyNotify destroy,
+                       GDestroyNotify *old_destroy);
+

Compares the user data for the key key + on object + with +oldval +, and if they are the same, replaces oldval + with +newval +.

+

This is like a typical atomic compare-and-exchange +operation, for user data on an object.

+

If the previous value was replaced then ownership of the +old value (oldval +) is passed to the caller, including +the registered destroy notify for it (passed out in old_destroy +). +Its up to the caller to free this as he wishes, which may +or may not include using old_destroy + as sometimes replacement +should not destroy the object in the normal way.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

object

the GObject to store user data on

 

key

a string, naming the user data pointer

 

oldval

the old value to compare against.

[allow-none]

newval

the new value.

[allow-none]

destroy

a destroy notify for the new value.

[allow-none]

old_destroy

destroy notify for the existing value.

[allow-none]
+
+
+

Returns

+

TRUE if the existing value for key +was replaced +by newval +, FALSE otherwise.

+
+

Since: 2.34

+
+
+
+

g_object_get_qdata ()

+
gpointer
+g_object_get_qdata (GObject *object,
+                    GQuark quark);
+

This function gets back user data pointers stored via +g_object_set_qdata().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object

The GObject to get a stored user data pointer from

 

quark

A GQuark, naming the user data pointer

 
+
+
+

Returns

+

The user data pointer set, or NULL.

+

[transfer none]

+
+
+
+
+

g_object_set_qdata ()

+
void
+g_object_set_qdata (GObject *object,
+                    GQuark quark,
+                    gpointer data);
+

This sets an opaque, named pointer on an object. +The name is specified through a GQuark (retrived e.g. via +g_quark_from_static_string()), and the pointer +can be gotten back from the object + with g_object_get_qdata() +until the object + is finalized. +Setting a previously set user data pointer, overrides (frees) +the old pointer set, using NULL as pointer essentially +removes the data stored.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

The GObject to set store a user data pointer

 

quark

A GQuark, naming the user data pointer

 

data

An opaque user data pointer

 
+
+
+
+
+

g_object_set_qdata_full ()

+
void
+g_object_set_qdata_full (GObject *object,
+                         GQuark quark,
+                         gpointer data,
+                         GDestroyNotify destroy);
+

This function works like g_object_set_qdata(), but in addition, +a void (*destroy) (gpointer) function may be specified which is +called with data + as argument when the object + is finalized, or +the data is being overwritten by a call to g_object_set_qdata() +with the same quark +.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

object

The GObject to set store a user data pointer

 

quark

A GQuark, naming the user data pointer

 

data

An opaque user data pointer

 

destroy

Function to invoke with data +as argument, when data +needs to be freed

 
+
+
+
+
+

g_object_steal_qdata ()

+
gpointer
+g_object_steal_qdata (GObject *object,
+                      GQuark quark);
+

This function gets back user data pointers stored via +g_object_set_qdata() and removes the data + from object +without invoking its destroy() function (if any was +set). +Usually, calling this function is only required to update +user data pointers with a destroy notifier, for example:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
void
+object_add_to_user_list (GObject     *object,
+                         const gchar *new_string)
+{
+  // the quark, naming the object data
+  GQuark quark_string_list = g_quark_from_static_string ("my-string-list");
+  // retrive the old string list
+  GList *list = g_object_steal_qdata (object, quark_string_list);
+
+  // prepend new string
+  list = g_list_prepend (list, g_strdup (new_string));
+  // this changed 'list', so we need to set it again
+  g_object_set_qdata_full (object, quark_string_list, list, free_string_list);
+}
+static void
+free_string_list (gpointer data)
+{
+  GList *node, *list = data;
+
+  for (node = list; node; node = node->next)
+    g_free (node->data);
+  g_list_free (list);
+}
+
+ +

+Using g_object_get_qdata() in the above example, instead of +g_object_steal_qdata() would have left the destroy function set, +and thus the partial string list would have been freed upon +g_object_set_qdata_full().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object

The GObject to get a stored user data pointer from

 

quark

A GQuark, naming the user data pointer

 
+
+
+

Returns

+

The user data pointer set, or NULL.

+

[transfer full]

+
+
+
+
+

g_object_dup_qdata ()

+
gpointer
+g_object_dup_qdata (GObject *object,
+                    GQuark quark,
+                    GDuplicateFunc dup_func,
+                    gpointer user_data);
+

This is a variant of g_object_get_qdata() which returns +a 'duplicate' of the value. dup_func + defines the +meaning of 'duplicate' in this context, it could e.g. +take a reference on a ref-counted object.

+

If the quark + is not set on the object then dup_func + +will be called with a NULL argument.

+

Note that dup_func + is called while user data of object + +is locked.

+

This function can be useful to avoid races when multiple +threads are using object data on the same key on the same +object.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

object

the GObject to store user data on

 

quark

a GQuark, naming the user data pointer

 

dup_func

function to dup the value.

[allow-none]

user_data

passed as user_data to dup_func +.

[allow-none]
+
+
+

Returns

+

the result of calling dup_func +on the value +associated with quark +on object +, or NULL if not set. +If dup_func +is NULL, the value is returned +unmodified.

+
+

Since: 2.34

+
+
+
+

g_object_replace_qdata ()

+
gboolean
+g_object_replace_qdata (GObject *object,
+                        GQuark quark,
+                        gpointer oldval,
+                        gpointer newval,
+                        GDestroyNotify destroy,
+                        GDestroyNotify *old_destroy);
+

Compares the user data for the key quark + on object + with +oldval +, and if they are the same, replaces oldval + with +newval +.

+

This is like a typical atomic compare-and-exchange +operation, for user data on an object.

+

If the previous value was replaced then ownership of the +old value (oldval +) is passed to the caller, including +the registered destroy notify for it (passed out in old_destroy +). +Its up to the caller to free this as he wishes, which may +or may not include using old_destroy + as sometimes replacement +should not destroy the object in the normal way.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

object

the GObject to store user data on

 

quark

a GQuark, naming the user data pointer

 

oldval

the old value to compare against.

[allow-none]

newval

the new value.

[allow-none]

destroy

a destroy notify for the new value.

[allow-none]

old_destroy

destroy notify for the existing value.

[allow-none]
+
+
+

Returns

+

TRUE if the existing value for quark +was replaced +by newval +, FALSE otherwise.

+
+

Since: 2.34

+
+
+
+

g_object_set_property ()

+
void
+g_object_set_property (GObject *object,
+                       const gchar *property_name,
+                       const GValue *value);
+

Sets a property on an object.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

a GObject

 

property_name

the name of the property to set

 

value

the value

 
+
+
+
+
+

g_object_get_property ()

+
void
+g_object_get_property (GObject *object,
+                       const gchar *property_name,
+                       GValue *value);
+

Gets a property of an object. value + must have been initialized to the +expected type of the property (or a type to which the expected type can be +transformed) using g_value_init().

+

In general, a copy is made of the property contents and the caller is +responsible for freeing the memory by calling g_value_unset().

+

Note that g_object_get_property() is really intended for language +bindings, g_object_get() is much more convenient for C programming.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

a GObject

 

property_name

the name of the property to get

 

value

return location for the property value

 
+
+
+
+
+

g_object_new_valist ()

+
GObject *
+g_object_new_valist (GType object_type,
+                     const gchar *first_property_name,
+                     va_list var_args);
+

Creates a new instance of a GObject subtype and sets its properties.

+

Construction parameters (see G_PARAM_CONSTRUCT, G_PARAM_CONSTRUCT_ONLY) +which are not explicitly specified are set to their default values.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object_type

the type id of the GObject subtype to instantiate

 

first_property_name

the name of the first property

 

var_args

the value of the first property, followed optionally by more +name/value pairs, followed by NULL

 
+
+
+

Returns

+

a new instance of object_type +

+
+
+
+
+

g_object_set_valist ()

+
void
+g_object_set_valist (GObject *object,
+                     const gchar *first_property_name,
+                     va_list var_args);
+

Sets properties on an object.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

a GObject

 

first_property_name

name of the first property to set

 

var_args

value for the first property, followed optionally by more +name/value pairs, followed by NULL

 
+
+
+
+
+

g_object_get_valist ()

+
void
+g_object_get_valist (GObject *object,
+                     const gchar *first_property_name,
+                     va_list var_args);
+

Gets properties of an object.

+

In general, a copy is made of the property contents and the caller +is responsible for freeing the memory in the appropriate manner for +the type, for instance by calling g_free() or g_object_unref().

+

See g_object_get().

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

object

a GObject

 

first_property_name

name of the first property to get

 

var_args

return location for the first property, followed optionally by more +name/return location pairs, followed by NULL

 
+
+
+
+
+

g_object_watch_closure ()

+
void
+g_object_watch_closure (GObject *object,
+                        GClosure *closure);
+

This function essentially limits the life time of the closure + to +the life time of the object. That is, when the object is finalized, +the closure + is invalidated by calling g_closure_invalidate() on +it, in order to prevent invocations of the closure with a finalized +(nonexisting) object. Also, g_object_ref() and g_object_unref() are +added as marshal guards to the closure +, to ensure that an extra +reference count is held on object + during invocation of the +closure +. Usually, this function will be called on closures that +use this object + as closure data.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

object

GObject restricting lifetime of closure +

 

closure

GClosure to watch

 
+
+
+
+
+

g_object_run_dispose ()

+
void
+g_object_run_dispose (GObject *object);
+

Releases all references to other objects. This can be used to break +reference cycles.

+

This function should only be called from object system implementations.

+
+

Parameters

+
+++++ + + + + + +

object

a GObject

 
+
+
+
+
+

G_OBJECT_WARN_INVALID_PROPERTY_ID()

+
#define             G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec)
+

This macro should be used to emit a standard warning about unexpected +properties in set_property() and get_property() implementations.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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

 
+
+
+
+
+

g_weak_ref_init ()

+
void
+g_weak_ref_init (GWeakRef *weak_ref,
+                 gpointer object);
+

Initialise a non-statically-allocated GWeakRef.

+

This function also calls g_weak_ref_set() with object + on the +freshly-initialised weak reference.

+

This function should always be matched with a call to +g_weak_ref_clear(). It is not necessary to use this function for a +GWeakRef in static storage because it will already be +properly initialised. Just use g_weak_ref_set() directly.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

weak_ref

uninitialized or empty location for a weak +reference.

[inout]

object

a GObject or NULL.

[type GObject.Object][nullable]
+
+

Since: 2.32

+
+
+
+

g_weak_ref_clear ()

+
void
+g_weak_ref_clear (GWeakRef *weak_ref);
+

Frees resources associated with a non-statically-allocated GWeakRef. +After this call, the GWeakRef is left in an undefined state.

+

You should only call this on a GWeakRef that previously had +g_weak_ref_init() called on it.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

weak_ref

location of a weak reference, which +may be empty.

[inout]
+
+

Since: 2.32

+
+
+
+

g_weak_ref_get ()

+
gpointer
+g_weak_ref_get (GWeakRef *weak_ref);
+

If weak_ref + is not empty, atomically acquire a strong +reference to the object it points to, and return that reference.

+

This function is needed because of the potential race between taking +the pointer value and g_object_ref() on it, if the object was losing +its last reference at the same time in a different thread.

+

The caller should release the resulting reference in the usual way, +by using g_object_unref().

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

weak_ref

location of a weak reference to a GObject.

[inout]
+
+
+

Returns

+

the object pointed to +by weak_ref +, or NULL if it was empty.

+

[transfer full][type GObject.Object]

+
+

Since: 2.32

+
+
+
+

g_weak_ref_set ()

+
void
+g_weak_ref_set (GWeakRef *weak_ref,
+                gpointer object);
+

Change the object to which weak_ref + points, or set it to +NULL.

+

You must own a strong reference on object + while calling this +function.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

weak_ref

location for a weak reference

 

object

a GObject or NULL.

[type GObject.Object][nullable]
+
+

Since: 2.32

+
+
+
+

Types and Values

+
+

struct GObject

+
struct GObject;
+

All the fields in the GObject structure are private +to the GObject implementation and should never be accessed directly.

+
+
+
+

struct GObjectClass

+
struct GObjectClass {
+  GTypeClass   g_type_class;
+
+  /* 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);
+};
+
+

The class structure for the GObject 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>

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

GTypeClass 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.

 
+
+
+
+
+

struct GObjectConstructParam

+
struct GObjectConstructParam {
+  GParamSpec *pspec;
+  GValue     *value;
+};
+
+

The GObjectConstructParam struct is an auxiliary +structure used to hand GParamSpec/GValue pairs to the constructor + of +a GObjectClass.

+
+

Members

+
+++++ + + + + + + + + + + + + +

GParamSpec *pspec;

the GParamSpec of the construct parameter

 

GValue *value;

the value to set the parameter to

 
+
+
+
+
+

struct GParameter

+
struct GParameter {
+  const gchar *name;
+  GValue       value;
+};
+
+

The GParameter struct is an auxiliary structure used +to hand parameter name/value pairs to g_object_newv().

+
+

Members

+
+++++ + + + + + + + + + + + + +

const gchar *name;

the parameter name

 

GValue value;

the parameter value

 
+
+
+
+
+

GInitiallyUnowned

+
typedef struct _GObject                  GInitiallyUnowned;
+
+

All the fields in the GInitiallyUnowned structure +are private to the GInitiallyUnowned implementation and should never be +accessed directly.

+
+
+
+

GInitiallyUnownedClass

+
typedef struct _GObjectClass             GInitiallyUnownedClass;
+
+

The class structure for the GInitiallyUnowned type.

+
+
+
+

G_TYPE_INITIALLY_UNOWNED

+
#define G_TYPE_INITIALLY_UNOWNED	      (g_initially_unowned_get_type())
+
+

The type for GInitiallyUnowned.

+
+
+
+

GWeakRef

+
typedef struct {
+} GWeakRef;
+
+

A structure containing a weak reference to a GObject. It can either +be empty (i.e. point to NULL), or point to an object for as long as +at least one "strong" reference to that object exists. Before the +object's GObjectClass.dispose method is called, every GWeakRef +associated with becomes empty (i.e. points to NULL).

+

Like GValue, GWeakRef can be statically allocated, stack- or +heap-allocated, or embedded in larger structures.

+

Unlike g_object_weak_ref() and g_object_add_weak_pointer(), this weak +reference is thread-safe: converting a weak pointer to a reference is +atomic with respect to invalidation of weak pointers to destroyed +objects.

+

If the object's GObjectClass.dispose method results in additional +references to the object being held, any GWeakRefs taken +before it was disposed will continue to point to NULL. If +GWeakRefs are taken after the object is disposed and +re-referenced, they will continue to point to it until its refcount +goes back to zero, at which point they too will be invalidated.

+
+
+
+

Signal Details

+
+

The “notify” signal

+
void
+user_function (GObject    *gobject,
+               GParamSpec *pspec,
+               gpointer    user_data)
+

The notify signal is emitted on an object when one of its +properties has been changed. Note that getting this signal +doesn't guarantee that the value of the property has actually +changed, it may also be emitted when the setter for the property +is called to reinstate the previous value.

+

This signal is typically used to obtain change notification for a +single property, by specifying the property name as a detail in the +g_signal_connect() call, like this:

+
+ + + + + + + +
1
+2
+3
g_signal_connect (text_view->buffer, "notify::paste-target-list",
+                  G_CALLBACK (gtk_text_view_target_list_notify),
+                  text_view)
+
+ +

+It is important to note that you must use +canonical parameter names as +detail strings for the notify signal.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

gobject

the object which received the signal.

 

pspec

the GParamSpec of the property which changed.

 

user_data

user data set when the signal handler was connected.

 
+
+

Flags: No Hooks

+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gobject-Type-Information.html b/docs/reference/gobject/html/gobject-Type-Information.html new file mode 100644 index 0000000..463decb --- /dev/null +++ b/docs/reference/gobject/html/gobject-Type-Information.html @@ -0,0 +1,6487 @@ + + + + +Type Information: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Type Information

+

Type Information — The GLib Runtime type identification and + management system

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define +G_TYPE_FUNDAMENTAL() +
#define +G_TYPE_MAKE_FUNDAMENTAL() +
#define +G_TYPE_IS_ABSTRACT() +
#define +G_TYPE_IS_DERIVED() +
#define +G_TYPE_IS_FUNDAMENTAL() +
#define +G_TYPE_IS_VALUE_TYPE() +
#define +G_TYPE_HAS_VALUE_TABLE() +
#define +G_TYPE_IS_CLASSED() +
#define +G_TYPE_IS_INSTANTIATABLE() +
#define +G_TYPE_IS_DERIVABLE() +
#define +G_TYPE_IS_DEEP_DERIVABLE() +
#define +G_TYPE_IS_INTERFACE() +
#define +G_TYPE_FROM_INSTANCE() +
#define +G_TYPE_FROM_CLASS() +
#define +G_TYPE_FROM_INTERFACE() +
#define +G_TYPE_INSTANCE_GET_CLASS() +
#define +G_TYPE_INSTANCE_GET_INTERFACE() +
#define +G_TYPE_INSTANCE_GET_PRIVATE() +
#define +G_TYPE_CLASS_GET_PRIVATE() +
#define +G_TYPE_CHECK_INSTANCE() +
#define +G_TYPE_CHECK_INSTANCE_CAST() +
#define +G_TYPE_CHECK_INSTANCE_TYPE() +
#define +G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE() +
#define +G_TYPE_CHECK_CLASS_CAST() +
#define +G_TYPE_CHECK_CLASS_TYPE() +
#define +G_TYPE_CHECK_VALUE() +
#define +G_TYPE_CHECK_VALUE_TYPE() +
+void + +g_type_init () +
+void + +g_type_init_with_debug_flags () +
const gchar * + +g_type_name () +
+GQuark + +g_type_qname () +
+GType + +g_type_from_name () +
+GType + +g_type_parent () +
+guint + +g_type_depth () +
+GType + +g_type_next_base () +
+gboolean + +g_type_is_a () +
+gpointer + +g_type_class_ref () +
+gpointer + +g_type_class_peek () +
+gpointer + +g_type_class_peek_static () +
+void + +g_type_class_unref () +
+gpointer + +g_type_class_peek_parent () +
+void + +g_type_class_add_private () +
+void + +g_type_add_class_private () +
+gpointer + +g_type_interface_peek () +
+gpointer + +g_type_interface_peek_parent () +
+gpointer + +g_type_default_interface_ref () +
+gpointer + +g_type_default_interface_peek () +
+void + +g_type_default_interface_unref () +
+GType * + +g_type_children () +
+GType * + +g_type_interfaces () +
+GType * + +g_type_interface_prerequisites () +
+void + +g_type_set_qdata () +
+gpointer + +g_type_get_qdata () +
+void + +g_type_query () +
+void + +(*GBaseInitFunc) () +
+void + +(*GBaseFinalizeFunc) () +
+void + +(*GClassInitFunc) () +
+void + +(*GClassFinalizeFunc) () +
+void + +(*GInstanceInitFunc) () +
+void + +(*GInterfaceInitFunc) () +
+void + +(*GInterfaceFinalizeFunc) () +
+gboolean + +(*GTypeClassCacheFunc) () +
+GType + +g_type_register_static () +
+GType + +g_type_register_static_simple () +
+GType + +g_type_register_dynamic () +
+GType + +g_type_register_fundamental () +
+void + +g_type_add_interface_static () +
+void + +g_type_add_interface_dynamic () +
+void + +g_type_interface_add_prerequisite () +
+GTypePlugin * + +g_type_get_plugin () +
+GTypePlugin * + +g_type_interface_get_plugin () +
+GType + +g_type_fundamental_next () +
+GType + +g_type_fundamental () +
+GTypeInstance * + +g_type_create_instance () +
+void + +g_type_free_instance () +
+void + +g_type_add_class_cache_func () +
+void + +g_type_remove_class_cache_func () +
+void + +g_type_class_unref_uncached () +
+void + +g_type_add_interface_check () +
+void + +g_type_remove_interface_check () +
+void + +(*GTypeInterfaceCheckFunc) () +
+GTypeValueTable * + +g_type_value_table_peek () +
+void + +g_type_ensure () +
+guint + +g_type_get_type_registration_serial () +
+int + +g_type_get_instance_count () +
#define +G_DECLARE_FINAL_TYPE() +
#define +G_DECLARE_DERIVABLE_TYPE() +
#define +G_DECLARE_INTERFACE() +
#define +G_DEFINE_TYPE() +
#define +G_DEFINE_TYPE_WITH_PRIVATE() +
#define +G_DEFINE_TYPE_WITH_CODE() +
#define +G_DEFINE_ABSTRACT_TYPE() +
#define +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE() +
#define +G_DEFINE_ABSTRACT_TYPE_WITH_CODE() +
#define +G_ADD_PRIVATE() +
#define +G_PRIVATE_OFFSET() +
#define +G_PRIVATE_FIELD() +
#define +G_PRIVATE_FIELD_P() +
#define +G_DEFINE_INTERFACE() +
#define +G_DEFINE_INTERFACE_WITH_CODE() +
#define +G_IMPLEMENT_INTERFACE() +
#define +G_DEFINE_TYPE_EXTENDED() +
#define +G_DEFINE_BOXED_TYPE() +
#define +G_DEFINE_BOXED_TYPE_WITH_CODE() +
#define +G_DEFINE_POINTER_TYPE() +
#define +G_DEFINE_POINTER_TYPE_WITH_CODE() +
#defineG_TYPE_CHECKSUM
+
+
+

Types and Values

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
typedefGType
#defineG_TYPE_FUNDAMENTAL_MAX
structGTypeInterface
structGTypeInstance
structGTypeClass
structGTypeInfo
structGTypeFundamentalInfo
structGInterfaceInfo
structGTypeValueTable
#defineG_TYPE_FLAG_RESERVED_ID_BIT
enumGTypeDebugFlags
structGTypeQuery
enumGTypeFlags
enumGTypeFundamentalFlags
#defineG_TYPE_INVALID
#defineG_TYPE_NONE
#defineG_TYPE_INTERFACE
#defineG_TYPE_CHAR
#defineG_TYPE_UCHAR
#defineG_TYPE_BOOLEAN
#defineG_TYPE_INT
#defineG_TYPE_UINT
#defineG_TYPE_LONG
#defineG_TYPE_ULONG
#defineG_TYPE_INT64
#defineG_TYPE_UINT64
#defineG_TYPE_ENUM
#defineG_TYPE_FLAGS
#defineG_TYPE_FLOAT
#defineG_TYPE_DOUBLE
#defineG_TYPE_STRING
#defineG_TYPE_POINTER
#defineG_TYPE_BOXED
#defineG_TYPE_PARAM
#defineG_TYPE_OBJECT
#defineG_TYPE_GTYPE
#defineG_TYPE_VARIANT
#defineG_TYPE_RESERVED_GLIB_FIRST
#defineG_TYPE_RESERVED_GLIB_LAST
#defineG_TYPE_RESERVED_BSE_FIRST
#defineG_TYPE_RESERVED_BSE_LAST
#defineG_TYPE_RESERVED_USER_FIRST
+
+
+

Includes

+
#include <glib-object.h>
+
+
+
+

Description

+

The GType API is the foundation of the GObject system. It provides the +facilities for registering and managing all fundamental data types, +user-defined object and interface types.

+

For type creation and registration purposes, all types fall into one of +two categories: static or dynamic. Static types are never loaded or +unloaded at run-time as dynamic types may be. Static types are created +with g_type_register_static() that gets type specific information passed +in via a GTypeInfo structure.

+

Dynamic types are created with g_type_register_dynamic() which takes a +GTypePlugin structure instead. The remaining type information (the +GTypeInfo structure) is retrieved during runtime through GTypePlugin +and the g_type_plugin_*() API.

+

These registration functions are usually called only once from a +function whose only purpose is to return the type identifier for a +specific class. Once the type (or class or interface) is registered, +it may be instantiated, inherited, or implemented depending on exactly +what sort of type it is.

+

There is also a third registration function for registering fundamental +types called g_type_register_fundamental() which requires both a GTypeInfo +structure and a GTypeFundamentalInfo structure but it is seldom used +since most fundamental types are predefined rather than user-defined.

+

Type instance and class structs are limited to a total of 64 KiB, +including all parent types. Similarly, type instances' private data +(as created by g_type_class_add_private()) are limited to a total of +64 KiB. If a type instance needs a large static buffer, allocate it +separately (typically by using GArray or GPtrArray) and put a pointer +to the buffer in the structure.

+

As mentioned in the GType conventions, type names must +be at least three characters long. There is no upper length limit. The first +character must be a letter (a–z or A–Z) or an underscore (‘_’). Subsequent +characters can be letters, numbers or any of ‘-_+’.

+
+
+

Functions

+
+

G_TYPE_FUNDAMENTAL()

+
#define G_TYPE_FUNDAMENTAL(type) (g_type_fundamental (type))
+
+

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.

+
+

Parameters

+
+++++ + + + + + +

type

A GType value.

 
+
+
+
+
+

G_TYPE_MAKE_FUNDAMENTAL()

+
#define G_TYPE_MAKE_FUNDAMENTAL(x) ((GType) ((x) << G_TYPE_FUNDAMENTAL_SHIFT))
+
+

Get the type ID for the fundamental type number x +. +Use g_type_fundamental_next() instead of this macro to create new fundamental +types.

+
+

Parameters

+
+++++ + + + + + +

x

the fundamental type number.

 
+
+
+

Returns

+

the GType

+
+
+
+
+

G_TYPE_IS_ABSTRACT()

+
#define G_TYPE_IS_ABSTRACT(type)                (g_type_test_flags ((type), G_TYPE_FLAG_ABSTRACT))
+
+

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.

+
+

Parameters

+
+++++ + + + + + +

type

A GType value

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_TYPE_IS_DERIVED()

+
#define G_TYPE_IS_DERIVED(type)                 ((type) > G_TYPE_FUNDAMENTAL_MAX)
+
+

Checks if type + is derived (or in object-oriented terminology: +inherited) from another type (this holds true for all non-fundamental +types).

+
+

Parameters

+
+++++ + + + + + +

type

A GType value

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_TYPE_IS_FUNDAMENTAL()

+
#define G_TYPE_IS_FUNDAMENTAL(type)             ((type) <= G_TYPE_FUNDAMENTAL_MAX)
+
+

Checks if type + is a fundamental type.

+
+

Parameters

+
+++++ + + + + + +

type

A GType value

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_TYPE_IS_VALUE_TYPE()

+
#define G_TYPE_IS_VALUE_TYPE(type)              (g_type_check_is_value_type (type))
+
+

Checks if type + is a value type and can be used with g_value_init().

+
+

Parameters

+
+++++ + + + + + +

type

A GType value

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_TYPE_HAS_VALUE_TABLE()

+
#define G_TYPE_HAS_VALUE_TABLE(type)            (g_type_value_table_peek (type) != NULL)
+
+

Checks if type + has a GTypeValueTable.

+
+

Parameters

+
+++++ + + + + + +

type

A GType value

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_TYPE_IS_CLASSED()

+
#define G_TYPE_IS_CLASSED(type)                 (g_type_test_flags ((type), G_TYPE_FLAG_CLASSED))
+
+

Checks if type + is a classed type.

+
+

Parameters

+
+++++ + + + + + +

type

A GType value

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_TYPE_IS_INSTANTIATABLE()

+
#define G_TYPE_IS_INSTANTIATABLE(type)          (g_type_test_flags ((type), G_TYPE_FLAG_INSTANTIATABLE))
+
+

Checks if type + can be instantiated. Instantiation is the +process of creating an instance (object) of this type.

+
+

Parameters

+
+++++ + + + + + +

type

A GType value

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_TYPE_IS_DERIVABLE()

+
#define G_TYPE_IS_DERIVABLE(type)               (g_type_test_flags ((type), G_TYPE_FLAG_DERIVABLE))
+
+

Checks if type + is a derivable type. A derivable type can +be used as the base class of a flat (single-level) class hierarchy.

+
+

Parameters

+
+++++ + + + + + +

type

A GType value

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_TYPE_IS_DEEP_DERIVABLE()

+
#define G_TYPE_IS_DEEP_DERIVABLE(type)          (g_type_test_flags ((type), G_TYPE_FLAG_DEEP_DERIVABLE))
+
+

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.

+
+

Parameters

+
+++++ + + + + + +

type

A GType value

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_TYPE_IS_INTERFACE()

+
#define G_TYPE_IS_INTERFACE(type)               (G_TYPE_FUNDAMENTAL (type) == G_TYPE_INTERFACE)
+
+

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).

+
+

Parameters

+
+++++ + + + + + +

type

A GType value

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_TYPE_FROM_INSTANCE()

+
#define G_TYPE_FROM_INSTANCE(instance)                          (G_TYPE_FROM_CLASS (((GTypeInstance*) (instance))->g_class))
+
+

Get the type identifier from a given instance + structure.

+

This macro should only be used in type implementations.

+
+

Parameters

+
+++++ + + + + + +

instance

Location of a valid GTypeInstance structure

 
+
+
+

Returns

+

the GType

+
+
+
+
+

G_TYPE_FROM_CLASS()

+
#define G_TYPE_FROM_CLASS(g_class)                              (((GTypeClass*) (g_class))->g_type)
+
+

Get the type identifier from a given class + structure.

+

This macro should only be used in type implementations.

+
+

Parameters

+
+++++ + + + + + +

g_class

Location of a valid GTypeClass structure

 
+
+
+

Returns

+

the GType

+
+
+
+
+

G_TYPE_FROM_INTERFACE()

+
#define G_TYPE_FROM_INTERFACE(g_iface)                          (((GTypeInterface*) (g_iface))->g_type)
+
+

Get the type identifier from a given interface + structure.

+

This macro should only be used in type implementations.

+
+

Parameters

+
+++++ + + + + + +

g_iface

Location of a valid GTypeInterface structure

 
+
+
+

Returns

+

the GType

+
+
+
+
+

G_TYPE_INSTANCE_GET_CLASS()

+
#define G_TYPE_INSTANCE_GET_CLASS(instance, g_type, c_type)     (_G_TYPE_IGC ((instance), (g_type), c_type))
+
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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

 
+
+
+

Returns

+

a pointer to the class structure

+
+
+
+
+

G_TYPE_INSTANCE_GET_INTERFACE()

+
#define G_TYPE_INSTANCE_GET_INTERFACE(instance, g_type, c_type) (_G_TYPE_IGI ((instance), (g_type), c_type))
+
+

Get the interface structure for interface g_type + of a given instance +.

+

This macro should only be used in type implementations.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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

 
+
+
+

Returns

+

a pointer to the interface structure

+
+
+
+
+

G_TYPE_INSTANCE_GET_PRIVATE()

+
#define G_TYPE_INSTANCE_GET_PRIVATE(instance, g_type, c_type)   ((c_type*) g_type_instance_get_private ((GTypeInstance*) (instance), (g_type)))
+
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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

 
+
+
+

Returns

+

a pointer to the private data structure.

+

[not nullable]

+
+

Since: 2.4

+
+
+
+

G_TYPE_CLASS_GET_PRIVATE()

+
#define G_TYPE_CLASS_GET_PRIVATE(klass, g_type, c_type)   ((c_type*) g_type_class_get_private ((GTypeClass*) (klass), (g_type)))
+
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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

 
+
+
+

Returns

+

a pointer to the private data structure.

+

[not nullable]

+
+

Since: 2.24

+
+
+
+

G_TYPE_CHECK_INSTANCE()

+
#define G_TYPE_CHECK_INSTANCE(instance)				(_G_TYPE_CHI ((GTypeInstance*) (instance)))
+
+

Checks if instance + is a valid GTypeInstance structure, +otherwise issues a warning and returns FALSE.

+

This macro should only be used in type implementations.

+
+

Parameters

+
+++++ + + + + + +

instance

Location of a GTypeInstance structure

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_TYPE_CHECK_INSTANCE_CAST()

+
#define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type)    (_G_TYPE_CIC ((instance), (g_type), c_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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

instance

Location of a GTypeInstance structure

 

g_type

The type to be returned

 

c_type

The corresponding C type of g_type +

 
+
+
+
+
+

G_TYPE_CHECK_INSTANCE_TYPE()

+
#define G_TYPE_CHECK_INSTANCE_TYPE(instance, g_type)            (_G_TYPE_CIT ((instance), (g_type)))
+
+

Checks if instance + is an instance of the type identified by g_type +.

+

This macro should only be used in type implementations.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

instance

Location of a GTypeInstance structure.

 

g_type

The type to be checked

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE()

+
#define G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE(instance, g_type)            (_G_TYPE_CIFT ((instance), (g_type)))
+
+

Checks if instance + is an instance of the fundamental type identified by g_type +.

+

This macro should only be used in type implementations.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

instance

Location of a GTypeInstance structure.

 

g_type

The fundamental type to be checked

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_TYPE_CHECK_CLASS_CAST()

+
#define G_TYPE_CHECK_CLASS_CAST(g_class, g_type, c_type)        (_G_TYPE_CCC ((g_class), (g_type), c_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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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 +

 
+
+
+
+
+

G_TYPE_CHECK_CLASS_TYPE()

+
#define G_TYPE_CHECK_CLASS_TYPE(g_class, g_type)                (_G_TYPE_CCT ((g_class), (g_type)))
+
+

Checks if g_class + is a class structure of the type identified by +g_type +.

+

This macro should only be used in type implementations.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

g_class

Location of a GTypeClass structure

 

g_type

The type to be checked

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_TYPE_CHECK_VALUE()

+
#define G_TYPE_CHECK_VALUE(value)				(_G_TYPE_CHV ((value)))
+
+

Checks if value + has been initialized to hold values +of a value type.

+

This macro should only be used in type implementations.

+
+

Parameters

+
+++++ + + + + + +

value

a GValue

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

G_TYPE_CHECK_VALUE_TYPE()

+
#define G_TYPE_CHECK_VALUE_TYPE(value, g_type)			(_G_TYPE_CVH ((value), (g_type)))
+
+

Checks if value + has been initialized to hold values +of type g_type +.

+

This macro should only be used in type implementations.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value

a GValue

 

g_type

The type to be checked

 
+
+
+

Returns

+

TRUE on success

+
+
+
+
+

g_type_init ()

+
void
+g_type_init (void);
+
+

g_type_init has been deprecated since version 2.36 and should not be used in newly-written code.

+

the type system is now initialised automatically

+
+

This function used to initialise the type system. Since GLib 2.36, +the type system is initialised automatically and this function does +nothing.

+
+
+
+

g_type_init_with_debug_flags ()

+
void
+g_type_init_with_debug_flags (GTypeDebugFlags debug_flags);
+
+

g_type_init_with_debug_flags has been deprecated since version 2.36 and should not be used in newly-written code.

+

the type system is now initialised automatically

+
+

This function used to initialise the type system with debugging +flags. Since GLib 2.36, the type system is initialised automatically +and this function does nothing.

+

If you need to enable debugging features, use the GOBJECT_DEBUG +environment variable.

+
+

Parameters

+
+++++ + + + + + +

debug_flags

bitwise combination of GTypeDebugFlags values for +debugging purposes

 
+
+
+
+
+

g_type_name ()

+
const gchar *
+g_type_name (GType type);
+

Get the unique name that is assigned to a type ID. Note that this +function (like all other GType API) cannot cope with invalid type +IDs. G_TYPE_INVALID may be passed to this function, as may be any +other validly registered type ID, but randomized type IDs should +not be passed in and will most likely lead to a crash.

+
+

Parameters

+
+++++ + + + + + +

type

type to return name for

 
+
+
+

Returns

+

static type name or NULL

+
+
+
+
+

g_type_qname ()

+
GQuark
+g_type_qname (GType type);
+

Get the corresponding quark of the type IDs name.

+
+

Parameters

+
+++++ + + + + + +

type

type to return quark of type name for

 
+
+
+

Returns

+

the type names quark or 0

+
+
+
+
+

g_type_from_name ()

+
GType
+g_type_from_name (const gchar *name);
+

Lookup the type ID from a given type name, returning 0 if no type +has been registered under this name (this is the preferred method +to find out by name whether a specific type has been registered +yet).

+
+

Parameters

+
+++++ + + + + + +

name

type name to lookup

 
+
+
+

Returns

+

corresponding type ID or 0

+
+
+
+
+

g_type_parent ()

+
GType
+g_type_parent (GType type);
+

Return the direct parent type of the passed in type. If the passed +in type has no parent, i.e. is a fundamental type, 0 is returned.

+
+

Parameters

+
+++++ + + + + + +

type

the derived type

 
+
+
+

Returns

+

the parent type

+
+
+
+
+

g_type_depth ()

+
guint
+g_type_depth (GType type);
+

Returns the length of the ancestry of the passed in type. This +includes the type itself, so that e.g. a fundamental type has depth 1.

+
+

Parameters

+
+++++ + + + + + +

type

a GType

 
+
+
+

Returns

+

the depth of type +

+
+
+
+
+

g_type_next_base ()

+
GType
+g_type_next_base (GType leaf_type,
+                  GType root_type);
+

Given a leaf_type + and a root_type + which is contained in its +anchestry, return the type that root_type + is the immediate parent +of. In other words, this function determines the type that is +derived directly from root_type + which is also a base class of +leaf_type +. Given a root type and a leaf type, this function can +be used to determine the types and order in which the leaf type is +descended from the root type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

leaf_type

descendant of root_type +and the type to be returned

 

root_type

immediate parent of the returned type

 
+
+
+

Returns

+

immediate child of root_type +and anchestor of leaf_type +

+
+
+
+
+

g_type_is_a ()

+
gboolean
+g_type_is_a (GType type,
+             GType is_a_type);
+

If is_a_type + is a derivable type, check whether type + is a +descendant of is_a_type +. If is_a_type + is an interface, check +whether type + conforms to it.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

type

type to check anchestry for

 

is_a_type

possible anchestor of type +or interface that type +could conform to

 
+
+
+

Returns

+

TRUE if type +is a is_a_type +

+
+
+
+
+

g_type_class_ref ()

+
gpointer
+g_type_class_ref (GType type);
+

Increments the reference count of the class structure belonging to +type +. This function will demand-create the class if it doesn't +exist already.

+
+

Parameters

+
+++++ + + + + + +

type

type ID of a classed type

 
+
+
+

Returns

+

the GTypeClass +structure for the given type ID.

+

[type GObject.TypeClass][transfer none]

+
+
+
+
+

g_type_class_peek ()

+
gpointer
+g_type_class_peek (GType type);
+

This function is essentially the same as g_type_class_ref(), +except that the classes reference count isn't incremented. +As a consequence, this function may return NULL if the class +of the type passed in does not currently exist (hasn't been +referenced before).

+
+

Parameters

+
+++++ + + + + + +

type

type ID of a classed type

 
+
+
+

Returns

+

the GTypeClass +structure for the given type ID or NULL if the class does not +currently exist.

+

[type GObject.TypeClass][transfer none]

+
+
+
+
+

g_type_class_peek_static ()

+
gpointer
+g_type_class_peek_static (GType type);
+

A more efficient version of g_type_class_peek() which works only for +static types.

+
+

Parameters

+
+++++ + + + + + +

type

type ID of a classed type

 
+
+
+

Returns

+

the GTypeClass +structure for the given type ID or NULL if the class does not +currently exist or is dynamically loaded.

+

[type GObject.TypeClass][transfer none]

+
+

Since: 2.4

+
+
+
+

g_type_class_unref ()

+
void
+g_type_class_unref (gpointer g_class);
+

Decrements the reference count of the class structure being passed in. +Once the last reference count of a class has been released, classes +may be finalized by the type system, so further dereferencing of a +class pointer after g_type_class_unref() are invalid.

+
+

Parameters

+
+++++ + + + + + +

g_class

a GTypeClass structure to unref.

[type GObject.TypeClass]
+
+
+
+
+

g_type_class_peek_parent ()

+
gpointer
+g_type_class_peek_parent (gpointer g_class);
+

This is a convenience function often needed in class initializers. +It returns the class structure of the immediate parent type of the +class passed in. Since derived classes hold a reference count on +their parent classes as long as they are instantiated, the returned +class will always exist.

+

This function is essentially equivalent to: +g_type_class_peek (g_type_parent (G_TYPE_FROM_CLASS (g_class)))

+
+

Parameters

+
+++++ + + + + + +

g_class

the GTypeClass structure to +retrieve the parent class for.

[type GObject.TypeClass]
+
+
+

Returns

+

the parent class +of g_class +.

+

[type GObject.TypeClass][transfer none]

+
+
+
+
+

g_type_class_add_private ()

+
void
+g_type_class_add_private (gpointer g_class,
+                          gsize private_size);
+

Registers a private structure for an instantiatable type.

+

When an object is allocated, the private structures for +the type and all of its parent types are allocated +sequentially in the same memory block as the public +structures, and are zero-filled.

+

Note that the accumulated size of the private structures of +a type and all its parent types cannot exceed 64 KiB.

+

This function should be called in the type's class_init() function. +The private structure can be retrieved using the +G_TYPE_INSTANCE_GET_PRIVATE() macro.

+

The following example shows attaching a private structure +MyObjectPrivate to an object MyObject defined in the standard +GObject fashion in the type's class_init() function.

+

Note the use of a structure member "priv" to avoid the overhead +of repeatedly calling MY_OBJECT_GET_PRIVATE().

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
typedef struct _MyObject        MyObject;
+typedef struct _MyObjectPrivate MyObjectPrivate;
+
+struct _MyObject {
+ GObject parent;
+
+ MyObjectPrivate *priv;
+};
+
+struct _MyObjectPrivate {
+  int some_field;
+};
+
+static void
+my_object_class_init (MyObjectClass *klass)
+{
+  g_type_class_add_private (klass, sizeof (MyObjectPrivate));
+}
+
+static void
+my_object_init (MyObject *my_object)
+{
+  my_object->priv = G_TYPE_INSTANCE_GET_PRIVATE (my_object,
+                                                 MY_TYPE_OBJECT,
+                                                 MyObjectPrivate);
+  // my_object->priv->some_field will be automatically initialised to 0
+}
+
+static int
+my_object_get_some_field (MyObject *my_object)
+{
+  MyObjectPrivate *priv;
+
+  g_return_val_if_fail (MY_IS_OBJECT (my_object), 0);
+
+  priv = my_object->priv;
+
+  return priv->some_field;
+}
+
+ +

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

g_class

class structure for an instantiatable +type.

[type GObject.TypeClass]

private_size

size of private structure

 
+
+

Since: 2.4

+
+
+
+

g_type_add_class_private ()

+
void
+g_type_add_class_private (GType class_type,
+                          gsize private_size);
+

Registers a private class structure for a classed type; +when the class is allocated, the private structures for +the class and all of its parent types are allocated +sequentially in the same memory block as the public +structures, and are zero-filled.

+

This function should be called in the +type's get_type() function after the type is registered. +The private structure can be retrieved using the +G_TYPE_CLASS_GET_PRIVATE() macro.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

class_type

GType of an classed type

 

private_size

size of private structure

 
+
+

Since: 2.24

+
+
+
+

g_type_interface_peek ()

+
gpointer
+g_type_interface_peek (gpointer instance_class,
+                       GType iface_type);
+

Returns the GTypeInterface structure of an interface to which the +passed in class conforms.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

instance_class

a GTypeClass structure.

[type GObject.TypeClass]

iface_type

an interface ID which this class conforms to

 
+
+
+

Returns

+

the GTypeInterface +structure of iface_type +if implemented by instance_class +, NULL +otherwise.

+

[type GObject.TypeInterface][transfer none]

+
+
+
+
+

g_type_interface_peek_parent ()

+
gpointer
+g_type_interface_peek_parent (gpointer g_iface);
+

Returns the corresponding GTypeInterface structure of the parent type +of the instance type to which g_iface + belongs. This is useful when +deriving the implementation of an interface from the parent type and +then possibly overriding some methods.

+
+

Parameters

+
+++++ + + + + + +

g_iface

a GTypeInterface structure.

[type GObject.TypeInterface]
+
+
+

Returns

+

the +corresponding GTypeInterface structure of the parent type of the +instance type to which g_iface +belongs, or NULL if the parent +type doesn't conform to the interface.

+

[transfer none][type GObject.TypeInterface]

+
+
+
+
+

g_type_default_interface_ref ()

+
gpointer
+g_type_default_interface_ref (GType g_type);
+

Increments the reference count for the interface type g_type +, +and returns the default interface vtable for the type.

+

If the type is not currently in use, then the default vtable +for the type will be created and initalized by calling +the base interface init and default vtable init functions for +the type (the base_init + and class_init + members of GTypeInfo). +Calling g_type_default_interface_ref() is useful when you +want to make sure that signals and properties for an interface +have been installed.

+
+

Parameters

+
+++++ + + + + + +

g_type

an interface type

 
+
+
+

Returns

+

the default +vtable for the interface; call g_type_default_interface_unref() +when you are done using the interface.

+

[type GObject.TypeInterface][transfer none]

+
+

Since: 2.4

+
+
+
+

g_type_default_interface_peek ()

+
gpointer
+g_type_default_interface_peek (GType g_type);
+

If the interface type g_type + is currently in use, returns its +default interface vtable.

+
+

Parameters

+
+++++ + + + + + +

g_type

an interface type

 
+
+
+

Returns

+

the default +vtable for the interface, or NULL if the type is not currently +in use.

+

[type GObject.TypeInterface][transfer none]

+
+

Since: 2.4

+
+
+
+

g_type_default_interface_unref ()

+
void
+g_type_default_interface_unref (gpointer g_iface);
+

Decrements the reference count for the type corresponding to the +interface default vtable g_iface +. If the type is dynamic, then +when no one is using the interface and all references have +been released, the finalize function for the interface's default +vtable (the class_finalize + member of GTypeInfo) will be called.

+
+

Parameters

+
+++++ + + + + + +

g_iface

the default vtable +structure for a interface, as returned by g_type_default_interface_ref().

[type GObject.TypeInterface]
+
+

Since: 2.4

+
+
+
+

g_type_children ()

+
GType *
+g_type_children (GType type,
+                 guint *n_children);
+

Return a newly allocated and 0-terminated array of type IDs, listing +the child types of type +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

type

the parent type

 

n_children

location to store the length of +the returned array, or NULL.

[out][allow-none]
+
+
+

Returns

+

Newly allocated +and 0-terminated array of child types, free with g_free().

+

[array length=n_children][transfer full]

+
+
+
+
+

g_type_interfaces ()

+
GType *
+g_type_interfaces (GType type,
+                   guint *n_interfaces);
+

Return a newly allocated and 0-terminated array of type IDs, listing +the interface types that type + conforms to.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

type

the type to list interface types for

 

n_interfaces

location to store the length of +the returned array, or NULL.

[out][allow-none]
+
+
+

Returns

+

Newly allocated +and 0-terminated array of interface types, free with g_free().

+

[array length=n_interfaces][transfer full]

+
+
+
+
+

g_type_interface_prerequisites ()

+
GType *
+g_type_interface_prerequisites (GType interface_type,
+                                guint *n_prerequisites);
+

Returns the prerequisites of an interfaces type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

interface_type

an interface type

 

n_prerequisites

location to return the number +of prerequisites, or NULL.

[out][allow-none]
+
+
+

Returns

+

a +newly-allocated zero-terminated array of GType containing +the prerequisites of interface_type +.

+

[array length=n_prerequisites][transfer full]

+
+

Since: 2.2

+
+
+
+

g_type_set_qdata ()

+
void
+g_type_set_qdata (GType type,
+                  GQuark quark,
+                  gpointer data);
+

Attaches arbitrary data to a type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

type

a GType

 

quark

a GQuark id to identify the data

 

data

the data

 
+
+
+
+
+

g_type_get_qdata ()

+
gpointer
+g_type_get_qdata (GType type,
+                  GQuark quark);
+

Obtains data which has previously been attached to type + +with g_type_set_qdata().

+

Note that this does not take subtyping into account; data +attached to one type with g_type_set_qdata() cannot +be retrieved from a subtype using g_type_get_qdata().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

type

a GType

 

quark

a GQuark id to identify the data

 
+
+
+

Returns

+

the data, or NULL if no data was found.

+

[transfer none]

+
+
+
+
+

g_type_query ()

+
void
+g_type_query (GType type,
+              GTypeQuery *query);
+

Queries the type system for information about a specific type. +This function will fill in a user-provided structure to hold +type-specific information. If an invalid GType is passed in, the +type + member of the GTypeQuery is 0. All members filled into the +GTypeQuery structure should be considered constant and have to be +left untouched.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

type

GType of a static, classed type

 

query

a user provided structure that is +filled in with constant values upon success.

[out caller-allocates]
+
+
+
+
+

GBaseInitFunc ()

+
void
+(*GBaseInitFunc) (gpointer g_class);
+

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 +initialization process.

+
+

Parameters

+
+++++ + + + + + +

g_class

The GTypeClass structure to initialize.

[type GObject.TypeClass]
+
+
+
+
+

GBaseFinalizeFunc ()

+
void
+(*GBaseFinalizeFunc) (gpointer g_class);
+

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 initialization is performed. +See GClassInitFunc() for a discussion of the class initialization process.

+
+

Parameters

+
+++++ + + + + + +

g_class

The GTypeClass structure to finalize.

[type GObject.TypeClass]
+
+
+
+
+

GClassInitFunc ()

+
void
+(*GClassInitFunc) (gpointer g_class,
+                   gpointer class_data);
+

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:

+
    +
  • Copying common members from the parent class over to the +derived class structure.

  • +
  • Zero initialization of the remaining members not copied +over from the parent class.

  • +
  • Invocation of the GBaseInitFunc() initializers of all parent +types and the class' type.

  • +
  • Invocation of the class' GClassInitFunc() initializer.

  • +
+

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:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

g_class

The GTypeClass structure to initialize.

[type GObject.TypeClass]

class_data

The class_data +member supplied via the GTypeInfo structure.

 
+
+
+
+
+

GClassFinalizeFunc ()

+
void
+(*GClassFinalizeFunc) (gpointer g_class,
+                       gpointer class_data);
+

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).

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

g_class

The GTypeClass structure to finalize.

[type GObject.TypeClass]

class_data

The class_data +member supplied via the GTypeInfo structure

 
+
+
+
+
+

GInstanceInitFunc ()

+
void
+(*GInstanceInitFunc) (GTypeInstance *instance,
+                      gpointer g_class);
+

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.

+

The extended members of instance + are guaranteed to have been filled with +zeros before this function is called.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

instance

The instance to initialize

 

g_class

The class of the type the instance is +created for.

[type GObject.TypeClass]
+
+
+
+
+

GInterfaceInitFunc ()

+
void
+(*GInterfaceInitFunc) (gpointer g_iface,
+                       gpointer iface_data);
+

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.

+

The members of iface_data + are guaranteed to have been filled with +zeros before this function is called.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

g_iface

The interface structure to initialize.

[type GObject.TypeInterface]

iface_data

The interface_data +supplied via the GInterfaceInfo structure

 
+
+
+
+
+

GInterfaceFinalizeFunc ()

+
void
+(*GInterfaceFinalizeFunc) (gpointer g_iface,
+                           gpointer iface_data);
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

g_iface

The interface structure to finalize.

[type GObject.TypeInterface]

iface_data

The interface_data +supplied via the GInterfaceInfo structure

 
+
+
+
+
+

GTypeClassCacheFunc ()

+
gboolean
+(*GTypeClassCacheFunc) (gpointer cache_data,
+                        GTypeClass *g_class);
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cache_data

data that was given to the g_type_add_class_cache_func() call

 

g_class

The GTypeClass structure which is +unreferenced.

[type GObject.TypeClass]
+
+
+

Returns

+

TRUE to stop further GTypeClassCacheFuncs from being +called, FALSE to continue

+
+
+
+
+

g_type_register_static ()

+
GType
+g_type_register_static (GType parent_type,
+                        const gchar *type_name,
+                        const GTypeInfo *info,
+                        GTypeFlags flags);
+

Registers type_name + as the name of a new static type derived from +parent_type +. The type system uses the information contained in the +GTypeInfo structure pointed to by info + to manage the type and its +instances (if not abstract). The value of flags + determines the nature +(e.g. abstract or not) of the type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

parent_type

type from which this type will be derived

 

type_name

0-terminated string used as the name of the new type

 

info

GTypeInfo structure for this type

 

flags

bitwise combination of GTypeFlags values

 
+
+
+

Returns

+

the new type identifier

+
+
+
+
+

g_type_register_static_simple ()

+
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);
+

Registers type_name + as the name of a new static type derived from +parent_type +. The value of flags + determines the nature (e.g. +abstract or not) of the type. It works by filling a GTypeInfo +struct and calling g_type_register_static().

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

parent_type

type from which this type will be derived

 

type_name

0-terminated string used as the name of the new type

 

class_size

size of the class structure (see GTypeInfo)

 

class_init

location of the class initialization function (see GTypeInfo)

 

instance_size

size of the instance structure (see GTypeInfo)

 

instance_init

location of the instance initialization function (see GTypeInfo)

 

flags

bitwise combination of GTypeFlags values

 
+
+
+

Returns

+

the new type identifier

+
+

Since: 2.12

+
+
+
+

g_type_register_dynamic ()

+
GType
+g_type_register_dynamic (GType parent_type,
+                         const gchar *type_name,
+                         GTypePlugin *plugin,
+                         GTypeFlags flags);
+

Registers type_name + as the name of a new dynamic type derived from +parent_type +. The type system uses the information contained in the +GTypePlugin structure pointed to by plugin + to manage the type and its +instances (if not abstract). The value of flags + determines the nature +(e.g. abstract or not) of the type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

parent_type

type from which this type will be derived

 

type_name

0-terminated string used as the name of the new type

 

plugin

GTypePlugin structure to retrieve the GTypeInfo from

 

flags

bitwise combination of GTypeFlags values

 
+
+
+

Returns

+

the new type identifier or G_TYPE_INVALID if registration failed

+
+
+
+
+

g_type_register_fundamental ()

+
GType
+g_type_register_fundamental (GType type_id,
+                             const gchar *type_name,
+                             const GTypeInfo *info,
+                             const GTypeFundamentalInfo *finfo,
+                             GTypeFlags flags);
+

Registers type_id + as the predefined identifier and type_name + as the +name of a fundamental type. If type_id + is already registered, or a +type named type_name + is already registered, the behaviour is undefined. +The type system uses the information contained in the GTypeInfo structure +pointed to by info + and the GTypeFundamentalInfo structure pointed to by +finfo + to manage the type and its instances. The value of flags + determines +additional characteristics of the fundamental type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

type_id

a predefined type identifier

 

type_name

0-terminated string used as the name of the new type

 

info

GTypeInfo structure for this type

 

finfo

GTypeFundamentalInfo structure for this type

 

flags

bitwise combination of GTypeFlags values

 
+
+
+

Returns

+

the predefined type identifier

+
+
+
+
+

g_type_add_interface_static ()

+
void
+g_type_add_interface_static (GType instance_type,
+                             GType interface_type,
+                             const GInterfaceInfo *info);
+

Adds the static interface_type + to instantiable_type +. +The information contained in the GInterfaceInfo structure +pointed to by info + is used to manage the relationship.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

instance_type

GType value of an instantiable type

 

interface_type

GType value of an interface type

 

info

GInterfaceInfo structure for this +(instance_type +, interface_type +) combination

 
+
+
+
+
+

g_type_add_interface_dynamic ()

+
void
+g_type_add_interface_dynamic (GType instance_type,
+                              GType interface_type,
+                              GTypePlugin *plugin);
+

Adds the dynamic interface_type + to instantiable_type +. The information +contained in the GTypePlugin structure pointed to by plugin + +is used to manage the relationship.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

instance_type

GType value of an instantiable type

 

interface_type

GType value of an interface type

 

plugin

GTypePlugin structure to retrieve the GInterfaceInfo from

 
+
+
+
+
+

g_type_interface_add_prerequisite ()

+
void
+g_type_interface_add_prerequisite (GType interface_type,
+                                   GType prerequisite_type);
+

Adds prerequisite_type + to the list of prerequisites of interface_type +. +This means that any type implementing interface_type + must also implement +prerequisite_type +. Prerequisites can be thought of as an alternative to +interface derivation (which GType doesn't support). An interface can have +at most one instantiatable prerequisite type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

interface_type

GType value of an interface type

 

prerequisite_type

GType value of an interface or instantiatable type

 
+
+
+
+
+

g_type_get_plugin ()

+
GTypePlugin *
+g_type_get_plugin (GType type);
+

Returns the GTypePlugin structure for type +.

+
+

Parameters

+
+++++ + + + + + +

type

GType to retrieve the plugin for

 
+
+
+

Returns

+

the corresponding plugin +if type +is a dynamic type, NULL otherwise.

+

[transfer none]

+
+
+
+
+

g_type_interface_get_plugin ()

+
GTypePlugin *
+g_type_interface_get_plugin (GType instance_type,
+                             GType interface_type);
+

Returns the GTypePlugin structure for the dynamic interface +interface_type + which has been added to instance_type +, or NULL +if interface_type + has not been added to instance_type + or does +not have a GTypePlugin structure. See g_type_add_interface_dynamic().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

instance_type

GType of an instantiatable type

 

interface_type

GType of an interface type

 
+
+
+

Returns

+

the GTypePlugin for the dynamic +interface interface_type +of instance_type +.

+

[transfer none]

+
+
+
+
+

g_type_fundamental_next ()

+
GType
+g_type_fundamental_next (void);
+

Returns the next free fundamental type id which can be used to +register a new fundamental type with g_type_register_fundamental(). +The returned type ID represents the highest currently registered +fundamental type identifier.

+
+

Returns

+

the next available fundamental type ID to be registered, +or 0 if the type system ran out of fundamental type IDs

+
+
+
+
+

g_type_fundamental ()

+
GType
+g_type_fundamental (GType type_id);
+

Internal function, used to extract the fundamental type ID portion. +Use G_TYPE_FUNDAMENTAL() instead.

+
+

Parameters

+
+++++ + + + + + +

type_id

valid type ID

 
+
+
+

Returns

+

fundamental type ID

+
+
+
+
+

g_type_create_instance ()

+
GTypeInstance *
+g_type_create_instance (GType type);
+

Creates and initializes an instance of type + if type + is valid and +can be instantiated. The type system only performs basic allocation +and structure setups for instances: actual instance creation should +happen through functions supplied by the type's fundamental type +implementation. So use of g_type_create_instance() is reserved for +implementators of fundamental types only. E.g. instances of the +GObject hierarchy should be created via g_object_new() and never +directly through g_type_create_instance() which doesn't handle things +like singleton objects or object construction.

+

The extended members of the returned instance are guaranteed to be filled +with zeros.

+

Note: Do not use this function, unless you're implementing a +fundamental type. Also language bindings should not use this +function, but g_object_new() instead.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

type

an instantiatable type to create an instance for

 
+
+
+

Returns

+

an allocated and initialized instance, subject to further +treatment by the fundamental type implementation

+
+
+
+
+

g_type_free_instance ()

+
void
+g_type_free_instance (GTypeInstance *instance);
+

Frees an instance of a type, returning it to the instance pool for +the type, if there is one.

+

Like g_type_create_instance(), this function is reserved for +implementors of fundamental types.

+
+

Parameters

+
+++++ + + + + + +

instance

an instance of a type

 
+
+
+
+
+

g_type_add_class_cache_func ()

+
void
+g_type_add_class_cache_func (gpointer cache_data,
+                             GTypeClassCacheFunc cache_func);
+

Adds a GTypeClassCacheFunc to be called before the reference count of a +class goes from one to zero. This can be used to prevent premature class +destruction. All installed GTypeClassCacheFunc functions will be chained +until one of them returns TRUE. 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.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cache_data

data to be passed to cache_func +

 

cache_func

a GTypeClassCacheFunc

 
+
+
+
+
+

g_type_remove_class_cache_func ()

+
void
+g_type_remove_class_cache_func (gpointer cache_data,
+                                GTypeClassCacheFunc cache_func);
+

Removes a previously installed GTypeClassCacheFunc. The cache +maintained by cache_func + has to be empty when calling +g_type_remove_class_cache_func() to avoid leaks.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

cache_data

data that was given when adding cache_func +

 

cache_func

a GTypeClassCacheFunc

 
+
+
+
+
+

g_type_class_unref_uncached ()

+
void
+g_type_class_unref_uncached (gpointer g_class);
+

A variant of g_type_class_unref() for use in GTypeClassCacheFunc +implementations. It unreferences a class without consulting the chain +of GTypeClassCacheFuncs, avoiding the recursion which would occur +otherwise.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

g_class

a GTypeClass structure to unref.

[type GObject.TypeClass]
+
+
+
+
+

g_type_add_interface_check ()

+
void
+g_type_add_interface_check (gpointer check_data,
+                            GTypeInterfaceCheckFunc check_func);
+

Adds a function to be called after an interface vtable is +initialized for any class (i.e. after the interface_init + +member of GInterfaceInfo has been called).

+

This function is useful when you want to check an invariant +that depends on the interfaces of a class. For instance, the +implementation of GObject uses this facility to check that an +object implements all of the properties that are defined on its +interfaces.

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

check_data

data to pass to check_func +

 

check_func

function to be called after each interface +is initialized

 
+
+

Since: 2.4

+
+
+
+

g_type_remove_interface_check ()

+
void
+g_type_remove_interface_check (gpointer check_data,
+                               GTypeInterfaceCheckFunc check_func);
+

Removes an interface check function added with +g_type_add_interface_check().

+

[skip]

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

check_data

callback data passed to g_type_add_interface_check()

 

check_func

callback function passed to g_type_add_interface_check()

 
+
+

Since: 2.4

+
+
+
+

GTypeInterfaceCheckFunc ()

+
void
+(*GTypeInterfaceCheckFunc) (gpointer check_data,
+                            gpointer g_iface);
+

A callback called after an interface vtable is initialized. +See g_type_add_interface_check().

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

check_data

data passed to g_type_add_interface_check()

 

g_iface

the interface that has been +initialized.

[type GObject.TypeInterface]
+
+

Since: 2.4

+
+
+
+

g_type_value_table_peek ()

+
GTypeValueTable *
+g_type_value_table_peek (GType type);
+

Returns the location of the GTypeValueTable associated with type +.

+

Note that this function should only be used from source code +that implements or has internal knowledge of the implementation of +type +.

+

[skip]

+
+

Parameters

+
+++++ + + + + + +

type

a GType

 
+
+
+

Returns

+

location of the GTypeValueTable associated with type +or +NULL if there is no GTypeValueTable associated with type +

+
+
+
+
+

g_type_ensure ()

+
void
+g_type_ensure (GType type);
+

Ensures that the indicated type + has been registered with the +type system, and its _class_init() method has been run.

+

In theory, simply calling the type's _get_type() method (or using +the corresponding macro) is supposed take care of this. However, +_get_type() methods are often marked G_GNUC_CONST for performance +reasons, even though this is technically incorrect (since +G_GNUC_CONST requires that the function not have side effects, +which _get_type() methods do on the first call). As a result, if +you write a bare call to a _get_type() macro, it may get optimized +out by the compiler. Using g_type_ensure() guarantees that the +type's _get_type() method is called.

+
+

Parameters

+
+++++ + + + + + +

type

a GType

 
+
+

Since: 2.34

+
+
+
+

g_type_get_type_registration_serial ()

+
guint
+g_type_get_type_registration_serial (void);
+

Returns an opaque serial number that represents the state of the set +of registered types. Any time a type is registered this serial changes, +which means you can cache information based on type lookups (such as +g_type_from_name()) and know if the cache is still valid at a later +time by comparing the current serial with the one at the type lookup.

+
+

Returns

+

An unsigned int, representing the state of type registrations

+
+

Since: 2.36

+
+
+
+

g_type_get_instance_count ()

+
int
+g_type_get_instance_count (GType type);
+

Returns the number of instances allocated of the particular type; +this is only available if GLib is built with debugging support and +the instance_count debug flag is set (by setting the GOBJECT_DEBUG +variable to include instance-count).

+
+

Parameters

+
+++++ + + + + + +

type

a GType

 
+
+
+

Returns

+

the number of instances allocated of the given type; +if instance counts are not available, returns 0.

+
+

Since: 2.44

+
+
+
+

G_DECLARE_FINAL_TYPE()

+
#define             G_DECLARE_FINAL_TYPE(ModuleObjName, module_obj_name, MODULE, OBJ_NAME, ParentName)
+

A convenience macro for emitting the usual declarations in the header file for a type which is not (at the +present time) intended to be subclassed.

+

You might use it in a header as follows:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
#ifndef _myapp_window_h_
+#define _myapp_window_h_
+
+#include <gtk/gtk.h>
+
+#define MY_APP_TYPE_WINDOW my_app_window_get_type ()
+G_DECLARE_FINAL_TYPE (MyAppWindow, my_app_window, MY_APP, WINDOW, GtkWindow)
+
+MyAppWindow *    my_app_window_new    (void);
+
+...
+
+#endif
+
+ +

+

This results in the following things happening:

+
    +
  • the usual my_app_window_get_type() function is declared with a return type of GType

  • +
  • the MyAppWindow types is defined as a typedef of struct _MyAppWindow. The struct itself is not +defined and should be defined from the .c file before G_DEFINE_TYPE() is used.

  • +
  • the MY_APP_WINDOW() cast is emitted as static inline function along with the MY_APP_IS_WINDOW() type +checking function

  • +
  • the MyAppWindowClass type is defined as a struct containing GtkWindowClass. This is done for the +convenience of the person defining the type and should not be considered to be part of the ABI. In +particular, without a firm declaration of the instance structure, it is not possible to subclass the type +and therefore the fact that the size of the class structure is exposed is not a concern and it can be +freely changed at any point in the future.

  • +
  • g_autoptr() support being added for your type, based on the type of your parent class

  • +
+

You can only use this function if your parent type also supports g_autoptr().

+

Because the type macro (MY_APP_TYPE_WINDOW in the above example) is not a callable, you must continue to +manually define this as a macro for yourself.

+

The declaration of the _get_type() function is the first thing emitted by the macro. This allows this macro +to be used in the usual way with export control and API versioning macros.

+

If you want to declare your own class structure, use G_DECLARE_DERIVABLE_TYPE().

+

If you are writing a library, it is important to note that it is possible to convert a type from using +G_DECLARE_FINAL_TYPE() to G_DECLARE_DERIVABLE_TYPE() without breaking API or ABI. As a precaution, you +should therefore use G_DECLARE_FINAL_TYPE() until you are sure that it makes sense for your class to be +subclassed. Once a class structure has been exposed it is not possible to change its size or remove or +reorder items without breaking the API and/or ABI.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

ModuleObjName

The name of the new type, in camel case (like GtkWidget)

 

module_obj_name

The name of the new type in lowercase, with words +separated by '_' (like 'gtk_widget')

 

MODULE

The name of the module, in all caps (like 'GTK')

 

OBJ_NAME

The bare name of the type, in all caps (like 'WIDGET')

 

ParentName

the name of the parent type, in camel case (like GtkWidget)

 
+
+

Since: 2.44

+
+
+
+

G_DECLARE_DERIVABLE_TYPE()

+
#define             G_DECLARE_DERIVABLE_TYPE(ModuleObjName, module_obj_name, MODULE, OBJ_NAME, ParentName)
+

A convenience macro for emitting the usual declarations in the header file for a type which will is intended +to be subclassed.

+

You might use it in a header as follows:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
#ifndef _gtk_frobber_h_
+#define _gtk_frobber_h_
+
+#define GTK_TYPE_FROBBER gtk_frobber_get_type ()
+GDK_AVAILABLE_IN_3_12
+G_DECLARE_DERIVABLE_TYPE (GtkFrobber, gtk_frobber, GTK, FROBBER, GtkWidget)
+
+struct _GtkFrobberClass
+{
+  GtkWidgetClass parent_class;
+
+  void (* handle_frob)  (GtkFrobber *frobber,
+                         guint       n_frobs);
+
+  gpointer padding[12];
+};
+
+GtkWidget *    gtk_frobber_new   (void);
+
+...
+
+#endif
+
+ +

+

This results in the following things happening:

+
    +
  • the usual gtk_frobber_get_type() function is declared with a return type of GType

  • +
  • the GtkFrobber struct is created with GtkWidget as the first and only item. You are expected to use +a private structure from your .c file to store your instance variables.

  • +
  • the GtkFrobberClass type is defined as a typedef to struct _GtkFrobberClass, which is left undefined. +You should do this from the header file directly after you use the macro.

  • +
  • the GTK_FROBBER() and GTK_FROBBER_CLASS() casts are emitted as static inline functions along with +the GTK_IS_FROBBER() and GTK_IS_FROBBER_CLASS() type checking functions and GTK_FROBBER_GET_CLASS() +function.

  • +
  • g_autoptr() support being added for your type, based on the type of your parent class

  • +
+

You can only use this function if your parent type also supports g_autoptr().

+

Because the type macro (GTK_TYPE_FROBBER in the above example) is not a callable, you must continue to +manually define this as a macro for yourself.

+

The declaration of the _get_type() function is the first thing emitted by the macro. This allows this macro +to be used in the usual way with export control and API versioning macros.

+

If you are writing a library, it is important to note that it is possible to convert a type from using +G_DECLARE_FINAL_TYPE() to G_DECLARE_DERIVABLE_TYPE() without breaking API or ABI. As a precaution, you +should therefore use G_DECLARE_FINAL_TYPE() until you are sure that it makes sense for your class to be +subclassed. Once a class structure has been exposed it is not possible to change its size or remove or +reorder items without breaking the API and/or ABI. If you want to declare your own class structure, use +G_DECLARE_DERIVABLE_TYPE(). If you want to declare a class without exposing the class or instance +structures, use G_DECLARE_FINAL_TYPE().

+

If you must use G_DECLARE_DERIVABLE_TYPE() you should be sure to include some padding at the bottom of your +class structure to leave space for the addition of future virtual functions.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

ModuleObjName

The name of the new type, in camel case (like GtkWidget)

 

module_obj_name

The name of the new type in lowercase, with words +separated by '_' (like 'gtk_widget')

 

MODULE

The name of the module, in all caps (like 'GTK')

 

OBJ_NAME

The bare name of the type, in all caps (like 'WIDGET')

 

ParentName

the name of the parent type, in camel case (like GtkWidget)

 
+
+

Since: 2.44

+
+
+
+

G_DECLARE_INTERFACE()

+
#define             G_DECLARE_INTERFACE(ModuleObjName, module_obj_name, MODULE, OBJ_NAME, PrerequisiteName)
+

A convenience macro for emitting the usual declarations in the header file for a GInterface type.

+

You might use it in a header as follows:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
#ifndef _my_model_h_
+#define _my_model_h_
+
+#define MY_TYPE_MODEL my_model_get_type ()
+GDK_AVAILABLE_IN_3_12
+G_DECLARE_INTERFACE (MyModel, my_model, MY, MODEL, GObject)
+
+struct _MyModelInterface
+{
+  GTypeInterface g_iface;
+
+  gpointer (* get_item)  (MyModel *model);
+};
+
+gpointer my_model_get_item (MyModel *model);
+
+...
+
+#endif
+
+ +

+

This results in the following things happening:

+
    +
  • the usual my_model_get_type() function is declared with a return type of GType

  • +
  • the MyModelInterface type is defined as a typedef to struct _MyModelInterface, +which is left undefined. You should do this from the header file directly after +you use the macro.

  • +
  • the MY_MODEL() cast is emitted as static inline functions along with +the MY_IS_MODEL() type checking function and MY_MODEL_GET_IFACE() function.

  • +
  • g_autoptr() support being added for your type, based on your prerequisite type.

  • +
+

You can only use this function if your prerequisite type also supports g_autoptr().

+

Because the type macro (MY_TYPE_MODEL in the above example) is not a callable, you must continue to +manually define this as a macro for yourself.

+

The declaration of the _get_type() function is the first thing emitted by the macro. This allows this macro +to be used in the usual way with export control and API versioning macros.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

ModuleObjName

The name of the new type, in camel case (like GtkWidget)

 

module_obj_name

The name of the new type in lowercase, with words +separated by '_' (like 'gtk_widget')

 

MODULE

The name of the module, in all caps (like 'GTK')

 

OBJ_NAME

The bare name of the type, in all caps (like 'WIDGET')

 

PrerequisiteName

the name of the prerequisite type, in camel case (like GtkWidget)

 
+
+

Since: 2.44

+
+
+
+

G_DEFINE_TYPE()

+
#define G_DEFINE_TYPE(TN, t_n, T_P)			    G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, {})
+
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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.

 
+
+

Since: 2.4

+
+
+
+

G_DEFINE_TYPE_WITH_PRIVATE()

+
#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))
+
+

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.

+

Note that private structs added with this macros must have a struct +name of the form TN + Private.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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.

 
+
+

Since: 2.38

+
+
+
+

G_DEFINE_TYPE_WITH_CODE()

+
#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()
+
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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.

 
+
+

Since: 2.4

+
+
+
+

G_DEFINE_ABSTRACT_TYPE()

+
#define G_DEFINE_ABSTRACT_TYPE(TN, t_n, T_P)		    G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, {})
+
+

A convenience macro for type implementations. +Similar to G_DEFINE_TYPE(), but defines an abstract type. +See G_DEFINE_TYPE_EXTENDED() for an example.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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.

 
+
+

Since: 2.4

+
+
+
+

G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE()

+
#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))
+
+

Similar to G_DEFINE_TYPE_WITH_PRIVATE(), but defines an abstract type. +See G_DEFINE_TYPE_EXTENDED() for an example.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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.

 
+
+

Since: 2.38

+
+
+
+

G_DEFINE_ABSTRACT_TYPE_WITH_CODE()

+
#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()
+
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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.

 
+
+

Since: 2.4

+
+
+
+

G_ADD_PRIVATE()

+
#define             G_ADD_PRIVATE(TypeName)
+

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:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
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:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
gint
+my_object_get_foo (MyObject *obj)
+{
+  MyObjectPrivate *priv = my_object_get_instance_private (obj);
+
+  g_return_val_if_fail (MY_IS_OBJECT (obj), 0);
+
+  return priv->foo;
+}
+
+void
+my_object_set_bar (MyObject *obj,
+                   gint      bar)
+{
+  MyObjectPrivate *priv = my_object_get_instance_private (obj);
+
+  g_return_if_fail (MY_IS_OBJECT (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.

+

Also note that private structs added with these macros must have a struct +name of the form TypeNamePrivate.

+

It is safe to call _get_instance_private on NULL or invalid object since +it's only adding an offset to the instance pointer. In that case the returned +pointer must not be dereferenced.

+
+

Parameters

+
+++++ + + + + + +

TypeName

the name of the type in CamelCase

 
+
+

Since: 2.38

+
+
+
+

G_PRIVATE_OFFSET()

+
#define             G_PRIVATE_OFFSET(TypeName, field)
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

TypeName

the name of the type in CamelCase

 

field

the name of the field in the private data structure

 
+
+

Since: 2.38

+
+
+
+

G_PRIVATE_FIELD()

+
#define             G_PRIVATE_FIELD(TypeName, inst, field_type, field_name)
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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

 
+
+

Since: 2.38

+
+
+
+

G_PRIVATE_FIELD_P()

+
#define             G_PRIVATE_FIELD_P(TypeName, inst, field_name)
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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

 
+
+

Since: 2.38

+
+
+
+

G_DEFINE_INTERFACE()

+
#define G_DEFINE_INTERFACE(TN, t_n, T_P)		    G_DEFINE_INTERFACE_WITH_CODE(TN, t_n, T_P, ;)
+
+

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 t_n ## _default_init, and the interface structure to have the +name TN ## Interface.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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.

 
+
+

Since: 2.24

+
+
+
+

G_DEFINE_INTERFACE_WITH_CODE()

+
#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()
+
+

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().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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.

 
+
+

Since: 2.24

+
+
+
+

G_IMPLEMENT_INTERFACE()

+
#define             G_IMPLEMENT_INTERFACE(TYPE_IFACE, iface_init)
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

TYPE_IFACE

The GType of the interface to add

 

iface_init

The interface init function

 
+
+

Since: 2.4

+
+
+
+

G_DEFINE_TYPE_EXTENDED()

+
#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()
+
+

The most general convenience macro for type implementations, on which +G_DEFINE_TYPE(), etc are based.

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
G_DEFINE_TYPE_EXTENDED (GtkGadget,
+                        gtk_gadget,
+                        GTK_TYPE_WIDGET,
+                        0,
+                        G_IMPLEMENT_INTERFACE (TYPE_GIZMO,
+                                               gtk_gadget_gizmo_init));
+
+ +

+expands to

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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.

 
+
+

Since: 2.4

+
+
+
+

G_DEFINE_BOXED_TYPE()

+
#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, {})
+
+

A convenience macro for boxed type implementations, which defines a +type_name_get_type() function registering the boxed type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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

 
+
+

Since: 2.26

+
+
+
+

G_DEFINE_BOXED_TYPE_WITH_CODE()

+
#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()
+
+

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(), for instance:

+
+ + + + + + + +
1
+2
+3
+4
G_DEFINE_BOXED_TYPE_WITH_CODE (GdkRectangle, gdk_rectangle,
+                               gdk_rectangle_copy,
+                               gdk_rectangle_free,
+                               register_rectangle_transform_funcs (g_define_type_id))
+
+ +

+

Similarly to the G_DEFINE_TYPE family of macros, the GType of the newly +defined boxed type is exposed in the g_define_type_id variable.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

 
+
+

Since: 2.26

+
+
+
+

G_DEFINE_POINTER_TYPE()

+
#define G_DEFINE_POINTER_TYPE(TypeName, type_name) G_DEFINE_POINTER_TYPE_WITH_CODE (TypeName, type_name, {})
+
+

A convenience macro for pointer type implementations, which defines a +type_name_get_type() function registering the pointer type.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

TypeName

The name of the new type, in Camel case

 

type_name

The name of the new type, in lowercase, with words +separated by '_'

 
+
+

Since: 2.26

+
+
+
+

G_DEFINE_POINTER_TYPE_WITH_CODE()

+
#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()
+
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

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

 
+
+

Since: 2.26

+
+
+
+

G_TYPE_CHECKSUM

+
#define G_TYPE_CHECKSUM (g_checksum_get_type ())
+
+

The GType for a boxed type holding a GChecksum.

+

Since: 2.36

+
+
+
+

Types and Values

+
+

GType

+

A numerical value which represents the unique identifier of a registered +type.

+
+
+
+

G_TYPE_FUNDAMENTAL_MAX

+
#define G_TYPE_FUNDAMENTAL_MAX		(255 << G_TYPE_FUNDAMENTAL_SHIFT)
+
+

An integer constant that represents the number of identifiers reserved +for types that are assigned at compile-time.

+
+
+
+

struct GTypeInterface

+
struct GTypeInterface {
+};
+
+

An opaque structure used as the base of all interface types.

+
+
+
+

struct GTypeInstance

+
struct GTypeInstance {
+};
+
+

An opaque structure used as the base of all type instances.

+
+
+
+

struct GTypeClass

+
struct GTypeClass {
+};
+
+

An opaque structure used as the base of all classes.

+
+
+
+

struct GTypeInfo

+
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;
+};
+
+

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().

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

guint16 class_size;

Size of the class structure (required for interface, classed and instantiatable types)

 

GBaseInitFunc base_init;

Location of the base initialization function (optional)

 

GBaseFinalizeFunc base_finalize;

Location of the base finalization function (optional)

 

GClassInitFunc 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.

 

GClassFinalizeFunc class_finalize;

Location of the class finalization function for +classed and instantiatable types. Location of the default vtable +finalization function for interface types. (optional)

 

gconstpointer class_data;

User-supplied data passed to the class init/finalize functions

 

guint16 instance_size;

Size of the instance (object) structure (required for instantiatable types only)

 

guint16 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 slice allocator now.

 

GInstanceInitFunc instance_init;

Location of the instance initialization function (optional, for instantiatable types only)

 

const GTypeValueTable *value_table;

A GTypeValueTable function table for generic handling of GValues +of this type (usually only useful for fundamental types)

 
+
+
+
+
+

struct GTypeFundamentalInfo

+
struct GTypeFundamentalInfo {
+  GTypeFundamentalFlags  type_flags;
+};
+
+

A structure that provides information to the type system which is +used specifically for managing fundamental types.

+
+

Members

+
+++++ + + + + + +

GTypeFundamentalFlags type_flags;

GTypeFundamentalFlags describing the characteristics of the fundamental type

 
+
+
+
+
+

struct GInterfaceInfo

+
struct GInterfaceInfo {
+  GInterfaceInitFunc     interface_init;
+  GInterfaceFinalizeFunc interface_finalize;
+  gpointer               interface_data;
+};
+
+

A structure that provides information to the type system which is +used specifically for managing interface types.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + +

GInterfaceInitFunc interface_init;

location of the interface initialization function

 

GInterfaceFinalizeFunc interface_finalize;

location of the interface finalization function

 

gpointer interface_data;

user-supplied data passed to the interface init/finalize functions

 
+
+
+
+
+

struct GTypeValueTable

+
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);
+};
+
+

The GTypeValueTable provides the functions required by the GValue +implementation, to serve as a container for values of a type.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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 memset(), 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:

+
+ + + + + + + +
1
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:

+
+ + + + + + + +
1
+2
+3
// 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:

+
+ + + + + + + +
1
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:

+
+ + + + + + + +
1
return value->data[0].v_pointer;
+
+ +

+
 

const gchar *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:

+
    +
  • 'i' - Integers. passed as collect_values[].v_int.

  • +
  • 'l' - Longs. passed as collect_values[].v_long.

  • +
  • 'd' - Doubles. passed as collect_values[].v_double.

  • +
  • 'p' - Pointers. passed as collect_values[].v_pointer. +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:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
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:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
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.

+
 

const gchar *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:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
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:

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
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) // always honour
+*object_p = value->data[0].v_pointer;
+else
+*object_p = g_object_ref (value->data[0].v_pointer);
+return NULL;
+
+ +

+
 
+
+
+
+
+

G_TYPE_FLAG_RESERVED_ID_BIT

+
#define G_TYPE_FLAG_RESERVED_ID_BIT ((GType) (1 << 0))
+
+

A bit in the type number that's supposed to be left untouched.

+
+
+
+

enum GTypeDebugFlags

+
+

GTypeDebugFlags has been deprecated since version 2.36 and should not be used in newly-written code.

+

g_type_init() is now done automatically

+
+

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.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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_INSTANCE_COUNT

+

Keep a count of instances of each type

+
 

G_TYPE_DEBUG_MASK

+

Mask covering all debug flags

+
 
+
+
+
+
+

struct GTypeQuery

+
struct GTypeQuery {
+  GType		type;
+  const gchar  *type_name;
+  guint		class_size;
+  guint		instance_size;
+};
+
+

A structure holding information for a specific type. +It is filled in by the g_type_query() function.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

GType type;

the GType value of the type

 

const gchar *type_name;

the name of the type

 

guint class_size;

the size of the class structure

 

guint instance_size;

the size of the instance structure

 
+
+
+
+
+

enum GTypeFlags

+

Bit masks used to check or determine characteristics of a type.

+
+

Members

+
+++++ + + + + + + + + + + + + +

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()

+
 
+
+
+
+
+

enum GTypeFundamentalFlags

+

Bit masks used to check or determine specific characteristics of a +fundamental type.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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)

+
 
+
+
+
+
+

G_TYPE_INVALID

+
#define G_TYPE_INVALID			G_TYPE_MAKE_FUNDAMENTAL (0)
+
+

An invalid GType used as error return value in some functions which return +a GType.

+
+
+
+

G_TYPE_NONE

+
#define G_TYPE_NONE			G_TYPE_MAKE_FUNDAMENTAL (1)
+
+

A fundamental type which is used as a replacement for the C +void return type.

+
+
+
+

G_TYPE_INTERFACE

+
#define G_TYPE_INTERFACE		G_TYPE_MAKE_FUNDAMENTAL (2)
+
+

The fundamental type from which all interfaces are derived.

+
+
+
+

G_TYPE_CHAR

+
#define G_TYPE_CHAR			G_TYPE_MAKE_FUNDAMENTAL (3)
+
+

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".

+
+
+
+

G_TYPE_UCHAR

+
#define G_TYPE_UCHAR			G_TYPE_MAKE_FUNDAMENTAL (4)
+
+

The fundamental type corresponding to guchar.

+
+
+
+

G_TYPE_BOOLEAN

+
#define G_TYPE_BOOLEAN			G_TYPE_MAKE_FUNDAMENTAL (5)
+
+

The fundamental type corresponding to gboolean.

+
+
+
+

G_TYPE_INT

+
#define G_TYPE_INT			G_TYPE_MAKE_FUNDAMENTAL (6)
+
+

The fundamental type corresponding to gint.

+
+
+
+

G_TYPE_UINT

+
#define G_TYPE_UINT			G_TYPE_MAKE_FUNDAMENTAL (7)
+
+

The fundamental type corresponding to guint.

+
+
+
+

G_TYPE_LONG

+
#define G_TYPE_LONG			G_TYPE_MAKE_FUNDAMENTAL (8)
+
+

The fundamental type corresponding to glong.

+
+
+
+

G_TYPE_ULONG

+
#define G_TYPE_ULONG			G_TYPE_MAKE_FUNDAMENTAL (9)
+
+

The fundamental type corresponding to gulong.

+
+
+
+

G_TYPE_INT64

+
#define G_TYPE_INT64			G_TYPE_MAKE_FUNDAMENTAL (10)
+
+

The fundamental type corresponding to gint64.

+
+
+
+

G_TYPE_UINT64

+
#define G_TYPE_UINT64			G_TYPE_MAKE_FUNDAMENTAL (11)
+
+

The fundamental type corresponding to guint64.

+
+
+
+

G_TYPE_ENUM

+
#define G_TYPE_ENUM			G_TYPE_MAKE_FUNDAMENTAL (12)
+
+

The fundamental type from which all enumeration types are derived.

+
+
+
+

G_TYPE_FLAGS

+
#define G_TYPE_FLAGS			G_TYPE_MAKE_FUNDAMENTAL (13)
+
+

The fundamental type from which all flags types are derived.

+
+
+
+

G_TYPE_FLOAT

+
#define G_TYPE_FLOAT			G_TYPE_MAKE_FUNDAMENTAL (14)
+
+

The fundamental type corresponding to gfloat.

+
+
+
+

G_TYPE_DOUBLE

+
#define G_TYPE_DOUBLE			G_TYPE_MAKE_FUNDAMENTAL (15)
+
+

The fundamental type corresponding to gdouble.

+
+
+
+

G_TYPE_STRING

+
#define G_TYPE_STRING			G_TYPE_MAKE_FUNDAMENTAL (16)
+
+

The fundamental type corresponding to nul-terminated C strings.

+
+
+
+

G_TYPE_POINTER

+
#define G_TYPE_POINTER			G_TYPE_MAKE_FUNDAMENTAL (17)
+
+

The fundamental type corresponding to gpointer.

+
+
+
+

G_TYPE_BOXED

+
#define G_TYPE_BOXED			G_TYPE_MAKE_FUNDAMENTAL (18)
+
+

The fundamental type from which all boxed types are derived.

+
+
+
+

G_TYPE_PARAM

+
#define G_TYPE_PARAM			G_TYPE_MAKE_FUNDAMENTAL (19)
+
+

The fundamental type from which all GParamSpec types are derived.

+
+
+
+

G_TYPE_OBJECT

+
#define G_TYPE_OBJECT			G_TYPE_MAKE_FUNDAMENTAL (20)
+
+

The fundamental type for GObject.

+
+
+
+

G_TYPE_GTYPE

+
#define G_TYPE_GTYPE			 (g_gtype_get_type())
+
+

The type for GType.

+
+
+
+

G_TYPE_VARIANT

+
#define G_TYPE_VARIANT                  G_TYPE_MAKE_FUNDAMENTAL (21)
+
+

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

+
+
+
+

G_TYPE_RESERVED_GLIB_FIRST

+
#define G_TYPE_RESERVED_GLIB_FIRST (22)
+
+

First fundamental type number to create a new fundamental type id with +G_TYPE_MAKE_FUNDAMENTAL() reserved for GLib.

+
+
+
+

G_TYPE_RESERVED_GLIB_LAST

+
#define G_TYPE_RESERVED_GLIB_LAST (31)
+
+

Last fundamental type number reserved for GLib.

+
+
+
+

G_TYPE_RESERVED_BSE_FIRST

+
#define G_TYPE_RESERVED_BSE_FIRST (32)
+
+

First fundamental type number to create a new fundamental type id with +G_TYPE_MAKE_FUNDAMENTAL() reserved for BSE.

+
+
+
+

G_TYPE_RESERVED_BSE_LAST

+
#define G_TYPE_RESERVED_BSE_LAST (48)
+
+

Last fundamental type number reserved for BSE.

+
+
+
+

G_TYPE_RESERVED_USER_FIRST

+
#define G_TYPE_RESERVED_USER_FIRST (49)
+
+

First available fundamental type number to create new fundamental +type id with G_TYPE_MAKE_FUNDAMENTAL().

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gobject-Value-arrays.html b/docs/reference/gobject/html/gobject-Value-arrays.html new file mode 100644 index 0000000..26665f0 --- /dev/null +++ b/docs/reference/gobject/html/gobject-Value-arrays.html @@ -0,0 +1,642 @@ + + + + +Value arrays: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Value arrays

+

Value arrays — A container structure to maintain an array of + generic values

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+GValue * + +g_value_array_get_nth () +
+GValueArray * + +g_value_array_new () +
+GValueArray * + +g_value_array_copy () +
+void + +g_value_array_free () +
+GValueArray * + +g_value_array_append () +
+GValueArray * + +g_value_array_prepend () +
+GValueArray * + +g_value_array_insert () +
+GValueArray * + +g_value_array_remove () +
+GValueArray * + +g_value_array_sort () +
+GValueArray * + +g_value_array_sort_with_data () +
+
+
+

Types and Values

+
++++ + + + + +
structGValueArray
+
+
+

Includes

+
#include <glib-object.h>
+
+
+
+

Description

+

The prime purpose of a GValueArray is for it to be used as an +object property that holds an array of values. A GValueArray wraps +an array of GValue elements in order for it to be used as a boxed +type through G_TYPE_VALUE_ARRAY.

+

GValueArray is deprecated in favour of GArray since GLib 2.32. It +is possible to create a GArray that behaves like a GValueArray by +using the size of GValue as the element size, and by setting +g_value_unset() as the clear function using g_array_set_clear_func(), +for instance, the following code:

+
+ + + + + + + +
1
GValueArray *array = g_value_array_new (10);
+
+ +

+

can be replaced by:

+
+ + + + + + + +
1
+2
GArray *array = g_array_sized_new (FALSE, TRUE, sizeof (GValue), 10);
+g_array_set_clear_func (array, (GDestroyNotify) g_value_unset);
+
+ +

+
+
+

Functions

+
+

g_value_array_get_nth ()

+
GValue *
+g_value_array_get_nth (GValueArray *value_array,
+                       guint index_);
+
+

g_value_array_get_nth has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use g_array_index() instead.

+
+

Return a pointer to the value at index_ + containd in value_array +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value_array

GValueArray to get a value from

 

index_

index of the value of interest

 
+
+
+

Returns

+

pointer to a value at index_ +in value_array +.

+

[transfer none]

+
+
+
+
+

g_value_array_new ()

+
GValueArray *
+g_value_array_new (guint n_prealloced);
+
+

g_value_array_new has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use GArray and g_array_sized_new() instead.

+
+

Allocate and initialize a new GValueArray, optionally preserve space +for n_prealloced + elements. New arrays always contain 0 elements, +regardless of the value of n_prealloced +.

+
+

Parameters

+
+++++ + + + + + +

n_prealloced

number of values to preallocate space for

 
+
+
+

Returns

+

a newly allocated GValueArray with 0 values

+
+
+
+
+

g_value_array_copy ()

+
GValueArray *
+g_value_array_copy (const GValueArray *value_array);
+
+

g_value_array_copy has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use GArray and g_array_ref() instead.

+
+

Construct an exact copy of a GValueArray by duplicating all its +contents.

+
+

Parameters

+
+++++ + + + + + +

value_array

GValueArray to copy

 
+
+
+

Returns

+

Newly allocated copy of GValueArray.

+

[transfer full]

+
+
+
+
+

g_value_array_free ()

+
void
+g_value_array_free (GValueArray *value_array);
+
+

g_value_array_free has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use GArray and g_array_unref() instead.

+
+

Free a GValueArray including its contents.

+
+

Parameters

+
+++++ + + + + + +

value_array

GValueArray to free

 
+
+
+
+
+

g_value_array_append ()

+
GValueArray *
+g_value_array_append (GValueArray *value_array,
+                      const GValue *value);
+
+

g_value_array_append has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use GArray and g_array_append_val() instead.

+
+

Insert a copy of value + as last element of value_array +. If value + is +NULL, an uninitialized value is appended.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value_array

GValueArray to add an element to

 

value

GValue to copy into GValueArray, or NULL.

[allow-none]
+
+
+

Returns

+

the GValueArray passed in as value_array +.

+

[transfer none]

+
+
+
+
+

g_value_array_prepend ()

+
GValueArray *
+g_value_array_prepend (GValueArray *value_array,
+                       const GValue *value);
+
+

g_value_array_prepend has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use GArray and g_array_prepend_val() instead.

+
+

Insert a copy of value + as first element of value_array +. If value + is +NULL, an uninitialized value is prepended.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value_array

GValueArray to add an element to

 

value

GValue to copy into GValueArray, or NULL.

[allow-none]
+
+
+

Returns

+

the GValueArray passed in as value_array +.

+

[transfer none]

+
+
+
+
+

g_value_array_insert ()

+
GValueArray *
+g_value_array_insert (GValueArray *value_array,
+                      guint index_,
+                      const GValue *value);
+
+

g_value_array_insert has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use GArray and g_array_insert_val() instead.

+
+

Insert a copy of value + at specified position into value_array +. If value + +is NULL, an uninitialized value is inserted.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

value_array

GValueArray to add an element to

 

index_

insertion position, must be <= value_array->n_values

 

value

GValue to copy into GValueArray, or NULL.

[allow-none]
+
+
+

Returns

+

the GValueArray passed in as value_array +.

+

[transfer none]

+
+
+
+
+

g_value_array_remove ()

+
GValueArray *
+g_value_array_remove (GValueArray *value_array,
+                      guint index_);
+
+

g_value_array_remove has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use GArray and g_array_remove_index() instead.

+
+

Remove the value at position index_ + from value_array +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value_array

GValueArray to remove an element from

 

index_

position of value to remove, which must be less than +value_array->n_values +

 
+
+
+

Returns

+

the GValueArray passed in as value_array +.

+

[transfer none]

+
+
+
+
+

g_value_array_sort ()

+
GValueArray *
+g_value_array_sort (GValueArray *value_array,
+                    GCompareFunc compare_func);
+
+

g_value_array_sort has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use GArray and g_array_sort().

+
+

Sort value_array + using compare_func + to compare the elements according to +the semantics of GCompareFunc.

+

The current implementation uses the same sorting algorithm as standard +C qsort() function.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

value_array

GValueArray to sort

 

compare_func

function to compare elements.

[scope call]
+
+
+

Returns

+

the GValueArray passed in as value_array +.

+

[transfer none]

+
+
+
+
+

g_value_array_sort_with_data ()

+
GValueArray *
+g_value_array_sort_with_data (GValueArray *value_array,
+                              GCompareDataFunc compare_func,
+                              gpointer user_data);
+
+

g_value_array_sort_with_data has been deprecated since version 2.32 and should not be used in newly-written code.

+

Use GArray and g_array_sort_with_data().

+
+

Sort value_array + using compare_func + to compare the elements according +to the semantics of GCompareDataFunc.

+

The current implementation uses the same sorting algorithm as standard +C qsort() function.

+

[rename-to g_value_array_sort]

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + +

value_array

GValueArray to sort

 

compare_func

function to compare elements.

[scope call]

user_data

extra data argument provided for compare_func +.

[closure]
+
+
+

Returns

+

the GValueArray passed in as value_array +.

+

[transfer none]

+
+
+
+
+

Types and Values

+
+

struct GValueArray

+
struct GValueArray {
+  guint   n_values;
+  GValue *values;
+};
+
+

A GValueArray contains an array of GValue elements.

+
+

Members

+
+++++ + + + + + + + + + + + + +

guint n_values;

number of values contained in the array

 

GValue *values;

array of values

 
+
+
+
+ +
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gobject-Varargs-Value-Collection.html b/docs/reference/gobject/html/gobject-Varargs-Value-Collection.html new file mode 100644 index 0000000..c8832f3 --- /dev/null +++ b/docs/reference/gobject/html/gobject-Varargs-Value-Collection.html @@ -0,0 +1,333 @@ + + + + +Varargs Value Collection: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

Varargs Value Collection

+

Varargs Value Collection — Converting varargs to generic values

+
+
+

Functions

+
++++ + + + + + + + + + + + + + + + + + + +
#define +G_VALUE_COLLECT_INIT() +
#define +G_VALUE_COLLECT() +
#define +G_VALUE_COLLECT_SKIP() +
#define +G_VALUE_LCOPY() +
+
+
+

Types and Values

+
++++ + + + + + + + + + + +
 GTypeCValue
#defineG_VALUE_COLLECT_FORMAT_MAX_LENGTH
+
+
+

Includes

+
#include <glib-object.h>
+#include <gobject/gvaluecollector.h>
+
+
+
+

Description

+

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.

+
+
+

Functions

+
+

G_VALUE_COLLECT_INIT()

+
#define             G_VALUE_COLLECT_INIT(value, _value_type, var_args, flags, __error)
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

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

 
+
+

Since: 2.24

+
+
+
+

G_VALUE_COLLECT()

+
#define             G_VALUE_COLLECT(value, var_args, flags, __error)
+

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.

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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

 
+
+
+
+
+

G_VALUE_COLLECT_SKIP()

+
#define             G_VALUE_COLLECT_SKIP(_value_type, var_args)
+

Skip an argument of type _value_type + from var_args +.

+
+

Parameters

+
+++++ + + + + + + + + + + + + +

_value_type

the GType of the value to skip

 

var_args

the va_list variable; it may be evaluated multiple times

 
+
+
+
+
+

G_VALUE_LCOPY()

+
#define             G_VALUE_LCOPY(value, var_args, flags, __error)
+

Collects a value's variable argument locations from a va_list. Usage is +analogous to G_VALUE_COLLECT().

+
+

Parameters

+
+++++ + + + + + + + + + + + + + + + + + + + + + + +

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

 
+
+
+
+
+

Types and Values

+
+

GTypeCValue

+

A union holding one collected value.

+
+

Members

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

gint v_int;

the field for holding integer values

 

glong v_long;

the field for holding long integer values

 

gint64 v_int64;

the field for holding 64 bit integer values

 

gdouble v_double;

the field for holding floating point values

 

gpointer v_pointer;

the field for holding pointers

 
+
+
+
+
+

G_VALUE_COLLECT_FORMAT_MAX_LENGTH

+
#define G_VALUE_COLLECT_FORMAT_MAX_LENGTH (8)
+
+

The maximal number of GTypeCValues which can be collected for a +single GValue.

+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gobject-memory.html b/docs/reference/gobject/html/gobject-memory.html new file mode 100644 index 0000000..3c735e2 --- /dev/null +++ b/docs/reference/gobject/html/gobject-memory.html @@ -0,0 +1,208 @@ + + + + +Object memory management: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Object memory management

+

+ The memory-management API for GObjects is a bit complicated but the idea behind it + is pretty simple: the goal is to provide a flexible model based on reference counting + which can be integrated in applications which use or require different memory management + models (such as garbage collection). The methods which are used to + manipulate this reference count are described below. +

+
+

+Reference count

+

+ The functions g_object_ref/g_object_unref respectively + increase and decrease the reference count. These functions are + thread-safe. + g_clear_object + is a convenience wrapper around g_object_unref + which also clears the pointer passed to it. +

+

+ The reference count is initialized to one by + g_object_new which means that the caller + is currently the sole owner of the newly-created reference. + When the reference count reaches zero, that is, + when g_object_unref is called by the last client holding + a reference to the object, the dispose and the + finalize class methods are invoked. +

+

+ Finally, after finalize is invoked, + g_type_free_instance is called to free the object instance. + Depending on the memory allocation policy decided when the type was registered (through + one of the g_type_register_* functions), the object's instance + memory will be freed or returned to the object pool for this type. + Once the object has been freed, if it was the last instance of the type, the type's class + will be destroyed as described in the section called “Instantiable classed types: objects” and + the section called “Non-instantiable classed types: interfaces”. +

+

+ The table below summarizes the destruction process of a GObject: +

+
+

Table 5. g_object_unref

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Invocation timeFunction invokedFunction's parametersRemark
Last call to g_object_unref for an instance + of target type + target type's dispose class functionGObject instance + When dispose ends, the object should not hold any reference to any other + member object. The object is also expected to be able to answer client + method invocations (with possibly an error code but no memory violation) + until finalize is executed. dispose can be executed more than once. + dispose should chain up to its parent implementation just before returning + to the caller. +
target type's finalize class functionGObject instance + Finalize is expected to complete the destruction process initiated by + dispose. It should complete the object's destruction. finalize will be + executed only once. + finalize should chain up to its parent implementation just before returning + to the caller. + The reason why the destruction process is split is two different phases is + explained in the section called “Reference counts and cycles”. +
Last call to g_object_unref for the last + instance of target type + interface's interface_finalize functionOn interface's vtableNever used in practice. Unlikely you will need it.
interface's base_finalize functionOn interface's vtableNever used in practice. Unlikely you will need it.
target type's class_finalize functionOn target type's class structureNever used in practice. Unlikely you will need it.
type's base_finalize functionOn the inheritance tree of classes from fundamental type to target type. + base_init is invoked once for each class structure.Never used in practice. Unlikely you will need it.
+
+


+

+
+
+

+Weak References

+

+ Weak references are used to monitor object finalization: + g_object_weak_ref adds a monitoring callback which does + not hold a reference to the object but which is invoked when the object runs + its dispose method. As such, each weak ref can be invoked more than once upon + object finalization (since dispose can run more than once during object + finalization). +

+

+ g_object_weak_unref can be used to remove a monitoring + callback from the object. +

+

+ Weak references are also used to implement g_object_add_weak_pointer + and g_object_remove_weak_pointer. These functions add a weak reference + to the object they are applied to which makes sure to nullify the pointer given by the user + when object is finalized. +

+

+ Similarly, GWeakRef can be + used to implement weak references if thread safety is required. +

+
+
+

+Reference counts and cycles

+

+ GObject's memory management model was designed to be easily integrated in existing code + using garbage collection. This is why the destruction process is split in two phases: + the first phase, executed in the dispose handler is supposed to release all references + to other member objects. The second phase, executed by the finalize handler is supposed + to complete the object's destruction process. Object methods should be able to run + without program error in-between the two phases. +

+

+ This two-step destruction process is very useful to break reference counting cycles. + While the detection of the cycles is up to the external code, once the cycles have been + detected, the external code can invoke g_object_run_dispose which + will indeed break any existing cycles since it will run the dispose handler associated + to the object and thus release all references to other objects. +

+

+ This explains one of the rules about the dispose handler stated earlier: + the dispose handler can be invoked multiple times. Let's say we + have a reference count cycle: object A references B which itself references object A. + Let's say we have detected the cycle and we want to destroy the two objects. One way to + do this would be to invoke g_object_run_dispose on one of the + objects. +

+

+ If object A releases all its references to all objects, this means it releases its + reference to object B. If object B was not owned by anyone else, this is its last + reference count which means this last unref runs B's dispose handler which, in turn, + releases B's reference on object A. If this is A's last reference count, this last + unref runs A's dispose handler which is running for the second time before + A's finalize handler is invoked ! +

+

+ The above example, which might seem a bit contrived, can really happen if + GObjects are being handled by language bindings — hence the rules for + object destruction should be closely followed. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gobject-properties.html b/docs/reference/gobject/html/gobject-properties.html new file mode 100644 index 0000000..bc741e0 --- /dev/null +++ b/docs/reference/gobject/html/gobject-properties.html @@ -0,0 +1,406 @@ + + + + +Object properties: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Object properties

+

+ One of GObject's nice features is its generic get/set mechanism for object + properties. When an object + is instantiated, the object's class_init handler should be used to register + the object's properties with g_object_class_install_properties. +

+

+ The best way to understand how object properties work is by looking at a real example + of how it is used: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
/************************************************/
+/* Implementation                               */
+/************************************************/
+
+enum
+{
+  PROP_FILENAME = 1,
+  PROP_ZOOM_LEVEL,
+  N_PROPERTIES
+};
+
+static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, };
+
+static void
+viewer_file_set_property (GObject      *object,
+                          guint         property_id,
+                          const GValue *value,
+                          GParamSpec   *pspec)
+{
+  ViewerFile *self = VIEWER_FILE (object);
+
+  switch (property_id)
+    {
+    case PROP_FILENAME:
+      g_free (self->priv->filename);
+      self->priv->filename = g_value_dup_string (value);
+      g_print ("filename: %s\n", self->priv->filename);
+      break;
+
+    case PROP_ZOOM_LEVEL:
+      self->priv->zoom_level = g_value_get_uint (value);
+      g_print ("zoom level: %u\n", self->priv->zoom_level);
+      break;
+
+    default:
+      /* We don't have any other property... */
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+      break;
+    }
+}
+
+static void
+viewer_file_get_property (GObject    *object,
+                          guint       property_id,
+                          GValue     *value,
+                          GParamSpec *pspec)
+{
+  ViewerFile *self = VIEWER_FILE (object);
+
+  switch (property_id)
+    {
+    case PROP_FILENAME:
+      g_value_set_string (value, self->priv->filename);
+      break;
+
+    case PROP_ZOOM_LEVEL:
+      g_value_set_uint (value, self->priv->zoom_level);
+      break;
+
+    default:
+      /* We don't have any other property... */
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+      break;
+    }
+}
+
+static void
+viewer_file_class_init (ViewerFileClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->set_property = viewer_file_set_property;
+  object_class->get_property = viewer_file_get_property;
+
+  obj_properties[PROP_FILENAME] =
+    g_param_spec_string ("filename",
+                         "Filename",
+                         "Name of the file to load and display from.",
+                         NULL  /* default value */,
+                         G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+  obj_properties[PROP_ZOOM_LEVEL] =
+    g_param_spec_uint ("zoom-level",
+                       "Zoom level",
+                       "Zoom level to view the file at.",
+                       0  /* minimum value */,
+                       10 /* maximum value */,
+                       2  /* default value */,
+                       G_PARAM_READWRITE));
+
+  g_object_class_install_properties (object_class,
+                                     N_PROPERTIES,
+                                     obj_properties);
+}
+
+/************************************************/
+/* Use                                          */
+/************************************************/
+
+ViewerFile *file;
+GValue val = G_VALUE_INIT;
+
+file = g_object_new (VIEWER_TYPE_FILE, NULL);
+
+g_value_init (&val, G_TYPE_UINT);
+g_value_set_char (&val, 11);
+
+g_object_set_property (G_OBJECT (file), "zoom-level", &val);
+
+g_value_unset (&val);
+
+ +

+ The client code above looks simple but a lot of things happen under the hood: +

+

+ g_object_set_property first ensures a property + with this name was registered in file's class_init handler. If so it walks the class hierarchy, + from bottom-most most-derived type, to top-most fundamental type to find the class + which registered that property. It then tries to convert the user-provided + GValue + into a GValue whose type is that of the associated property. +

+

+ If the user provides a signed char GValue, as is shown + here, and if the object's property was registered as an unsigned int, + g_value_transform will try to transform the input signed char into + an unsigned int. Of course, the success of the transformation depends on the availability + of the required transform function. In practice, there will almost always be a transformation + [2] + which matches and conversion will be carried out if needed. +

+

+ After transformation, the GValue is validated by + g_param_value_validate which makes sure the user's + data stored in the GValue matches the characteristics specified by + the property's GParamSpec. + Here, the GParamSpec we + provided in class_init has a validation function which makes sure that the GValue + contains a value which respects the minimum and maximum bounds of the + GParamSpec. In the example above, the client's GValue does not + respect these constraints (it is set to 11, while the maximum is 10). As such, the + g_object_set_property function will return with an error. +

+

+ If the user's GValue had been set to a valid value, g_object_set_property + would have proceeded with calling the object's + set_property class method. Here, since our + implementation of ViewerFile did override this method, execution would jump to + viewer_file_set_property after having retrieved from the + GParamSpec the param_id + [3] + which had been stored by + g_object_class_install_property. +

+

+ Once the property has been set by the object's + set_property class method, execution + returns to g_object_set_property which makes sure that + the "notify" signal is emitted on the object's instance with the changed property as + parameter unless notifications were frozen by g_object_freeze_notify. +

+

+ g_object_thaw_notify can be used to re-enable notification of + property modifications through the + “notify” signal. It is important to remember that + even if properties are changed while property change notification is frozen, the "notify" + signal will be emitted once for each of these changed properties as soon as the property + change notification is thawed: no property change is lost for the "notify" + signal, although multiple notifications for a single property are + compressed. Signals can only be delayed by the notification freezing + mechanism. +

+

+ It sounds like a tedious task to set up GValues every time when one wants to modify a property. + In practice one will rarely do this. The functions g_object_set_property + and g_object_get_property + are meant to be used by language bindings. For application there is an easier way and + that is described next. +

+
+

+Accessing multiple properties at once

+

+ It is interesting to note that the g_object_set and + g_object_set_valist (variadic version) functions can be used to set + multiple properties at once. The client code shown above can then be re-written as: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
ViewerFile *file;
+file = /* */;
+g_object_set (G_OBJECT (file),
+              "zoom-level", 6, 
+              "filename", "~/some-file.txt", 
+              NULL);
+
+ +

+ This saves us from managing the GValues that we were needing to handle when using + g_object_set_property. + The code above will trigger one notify signal emission for each property modified. +

+

+ Equivalent _get versions are also available: + g_object_get + and g_object_get_valist (variadic version) can be used to get numerous + properties at once. +

+

+ These high level functions have one drawback — they don't provide a return value. + One should pay attention to the argument types and ranges when using them. + A known source of errors is to pass a different type from what the + property expects; for instance, passing an integer when the property + expects a floating point value and thus shifting all subsequent parameters + by some number of bytes. Also forgetting the terminating + NULL will lead to undefined behaviour. +

+

+ This explains how g_object_new, + g_object_newv and g_object_new_valist + work: they parse the user-provided variable number of parameters and invoke + g_object_set on the parameters only after the object has been successfully constructed. + The "notify" signal will be emitted for each property set. +

+
+
+

+

[2] Its behaviour might not be what you expect but it is up to you to actually avoid + relying on these transformations. +

+

[3] + It should be noted that the param_id used here need only to uniquely identify each + GParamSpec within the ViewerFileClass such that the switch + used in the set and get methods actually works. Of course, this locally-unique + integer is purely an optimization: it would have been possible to use a set of + if (strcmp (a, b) == 0) {} else if (strcmp (a, b) == 0) {} statements. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gobject-query.html b/docs/reference/gobject/html/gobject-query.html new file mode 100644 index 0000000..b22b49f --- /dev/null +++ b/docs/reference/gobject/html/gobject-query.html @@ -0,0 +1,127 @@ + + + + +gobject-query: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+
+ + +
+

gobject-query

+

gobject-query — display a tree of types

+
+
+

Synopsis

+

gobject-query froots [OPTION...]

+

gobject-query tree [OPTION...]

+
+
+

Description

+

+gobject-query is a small utility that draws a tree of +types. +

+

+gobject-query takes a mandatory argument that specifies +whether it should iterate over the fundamental types or print a type tree. +

+
+
+

Commands

+
++++ + + + + + + + + + + +

froots

+iterate over fundamental roots +

tree

+print type tree +

+
+
+

Options

+
++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

-r TYPE

+specify the root type +

-n

+don't descend type tree +

-b STRING

+specify indent string +

-i STRING

+specify incremental indent string +

-s NUMBER

+specify line spacing +

-h, --help

+Print brief help and exit. +

-v, --version

+Print version and exit. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gobject.devhelp2 b/docs/reference/gobject/html/gobject.devhelp2 new file mode 100644 index 0000000..e8cf728 --- /dev/null +++ b/docs/reference/gobject/html/gobject.devhelp2 @@ -0,0 +1,887 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/reference/gobject/html/gtype-conventions.html b/docs/reference/gobject/html/gtype-conventions.html new file mode 100644 index 0000000..2648a8a --- /dev/null +++ b/docs/reference/gobject/html/gtype-conventions.html @@ -0,0 +1,173 @@ + + + + +Conventions: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Conventions

+

+ There are a number of conventions users are expected to follow when creating new types + which are to be exported in a header file: +

+
    +
  • + Type names (including object names) must be at least three + characters long and start with ‘a–z’, ‘A–Z’ or ‘_’. +

  • +
  • + Use the object_method pattern for function names: to invoke + the method named save on an instance of object type file, call + file_save. +

  • +
  • Use prefixing to avoid namespace conflicts with other projects. + If your library (or application) is named Viewer, + prefix all your function names with viewer_. + For example: viewer_object_method. +

  • +
  • Create a macro named PREFIX_TYPE_OBJECT which always + returns the GType for the associated object type. For an object of type + File in the Viewer namespace, + use: VIEWER_TYPE_FILE. + This macro is implemented using a function named + prefix_object_get_type; for example, viewer_file_get_type. +

  • +
  • +

    + Use G_DECLARE_FINAL_TYPE + or G_DECLARE_DERIVABLE_TYPE + to define various other conventional macros for your object: +

    +
      +
    • PREFIX_OBJECT (obj), which + returns a pointer of type PrefixObject. This macro is used to enforce + static type safety by doing explicit casts wherever needed. It also enforces + dynamic type safety by doing runtime checks. It is possible to disable the dynamic + type checks in production builds (see building GLib). + For example, we would create + VIEWER_FILE (obj) to keep the previous example. +

    • +
    • PREFIX_OBJECT_CLASS (klass), which + is strictly equivalent to the previous casting macro: it does static casting with + dynamic type checking of class structures. It is expected to return a pointer + to a class structure of type PrefixObjectClass. An example is: + VIEWER_FILE_CLASS. +

    • +
    • PREFIX_IS_OBJECT (obj), which + returns a gboolean which indicates whether the input + object instance pointer is non-NULL and of type OBJECT. + For example, VIEWER_IS_FILE. +

    • +
    • PREFIX_IS_OBJECT_CLASS (klass), which returns a boolean + if the input class pointer is a pointer to a class of type OBJECT. + For example, VIEWER_IS_FILE_CLASS. +

    • +
    • PREFIX_OBJECT_GET_CLASS (obj), + which returns the class pointer associated to an instance of a given type. This macro + is used for static and dynamic type safety purposes (just like the previous casting + macros). + For example, VIEWER_FILE_GET_CLASS. +

    • +
    +
  • +
+

+ The implementation of these macros is pretty straightforward: a number of simple-to-use + macros are provided in gtype.h. For the example we used above, we would + write the following trivial code to declare the macros: +

+
+ + + + + + + +
1
+2
#define VIEWER_TYPE_FILE viewer_file_get_type ()
+G_DECLARE_FINAL_TYPE (ViewerFile, viewer_file, VIEWER, FILE, GObject)
+
+ +

+

+

+ Unless your code has special requirements, you can use the + G_DEFINE_TYPE + macro to define a class: +

+
+ + + + + + + +
1
G_DEFINE_TYPE (ViewerFile, viewer_file, G_TYPE_OBJECT)
+
+ +

+

+

+ Otherwise, the viewer_file_get_type function must be + implemented manually: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
GType viewer_file_get_type (void)
+{
+  static GType type = 0;
+  if (type == 0) {
+    const GTypeInfo info = {
+      /* You fill this structure. */
+    };
+    type = g_type_register_static (G_TYPE_OBJECT,
+                                   "ViewerFile",
+                                   &info, 0);
+  }
+  return type;
+}
+
+ +

+

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gtype-instantiable-classed.html b/docs/reference/gobject/html/gtype-instantiable-classed.html new file mode 100644 index 0000000..8984c00 --- /dev/null +++ b/docs/reference/gobject/html/gtype-instantiable-classed.html @@ -0,0 +1,412 @@ + + + + +Instantiable classed types: objects: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Instantiable classed types: objects

+

+ This section covers the theory behind objects. See + How to define and implement a new GObject for the recommended way to define a + GObject. +

+

+ Types which are registered with a class and are declared instantiable are + what most closely resembles an object. + Although GObjects (detailed in The GObject base class) + are the most well known type of instantiable + classed types, other kinds of similar objects used as the base of an inheritance + hierarchy have been externally developed and they are all built on the fundamental + features described below. +

+

+ For example, the code below shows how you could register + such a fundamental object type in the type system (using none of the + GObject convenience API): +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
typedef struct {
+  GObject parent;
+
+  /* instance members */
+  gchar *filename;
+} ViewerFile;
+
+typedef struct {
+  GObjectClass parent;
+
+  /* class members */
+  /* the first is public, pure and virtual */
+  void (*open)  (ViewerFile  *self,
+                 GError     **error);
+
+  /* the second is public and virtual */
+  void (*close) (ViewerFile  *self,
+                 GError     **error);
+} ViewerFileClass;
+
+#define VIEWER_TYPE_FILE (viewer_file_get_type ())
+
+GType 
+viewer_file_get_type (void)
+{
+  static GType type = 0;
+  if (type == 0) {
+    const GTypeInfo info = {
+      sizeof (ViewerFileClass),
+      NULL,           /* base_init */
+      NULL,           /* base_finalize */
+      (GClassInitFunc) viewer_file_class_init,
+      NULL,           /* class_finalize */
+      NULL,           /* class_data */
+      sizeof (ViewerFile),
+      0,              /* n_preallocs */
+      (GInstanceInitFunc) NULL /* instance_init */
+    };
+    type = g_type_register_static (G_TYPE_OBJECT,
+                                   "ViewerFile",
+                                   &info, 0);
+  }
+  return type;
+}
+
+ +

+ Upon the first call to viewer_file_get_type, the type named + ViewerFile will be registered in the type system as inheriting + from the type G_TYPE_OBJECT. +

+

+ Every object must define two structures: its class structure and its + instance structure. All class structures must contain as first member + a GTypeClass structure. All instance structures must contain as first + member a GTypeInstance structure. The declaration of these C types, + coming from gtype.h is shown below: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
struct _GTypeClass
+{
+  GType g_type;
+};
+struct _GTypeInstance
+{
+  GTypeClass *g_class;
+};
+
+ +

+ These constraints allow the type system to make sure that every object instance + (identified by a pointer to the object's instance structure) contains in its + first bytes a pointer to the object's class structure. +

+

+ This relationship is best explained by an example: let's take object B which + inherits from object A: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
/* A definitions */
+typedef struct {
+  GTypeInstance parent;
+  int field_a;
+  int field_b;
+} A;
+typedef struct {
+  GTypeClass parent_class;
+  void (*method_a) (void);
+  void (*method_b) (void);
+} AClass;
+
+/* B definitions. */
+typedef struct {
+  A parent;
+  int field_c;
+  int field_d;
+} B;
+typedef struct {
+  AClass parent_class;
+  void (*method_c) (void);
+  void (*method_d) (void);
+} BClass;
+
+ +

+ The C standard mandates that the first field of a C structure is stored starting + in the first byte of the buffer used to hold the structure's fields in memory. + This means that the first field of an instance of an object B is A's first field + which in turn is GTypeInstance's first field which in + turn is g_class, a pointer + to B's class structure. +

+

+ Thanks to these simple conditions, it is possible to detect the type of every + object instance by doing: +

+
+ + + + + + + +
1
+2
B *b;
+b->parent.parent.g_class->g_type
+
+ +

+ or, more quickly: +

+
+ + + + + + + +
1
+2
B *b;
+((GTypeInstance *) b)->g_class->g_type
+
+ +

+

+
+

+Initialization and Destruction

+

+ instantiation of these types can be done with + g_type_create_instance, + which will look up the type information + structure associated with the type requested. Then, the instance size and instantiation + policy (if the n_preallocs field is set + to a non-zero value, the type system allocates + the object's instance structures in chunks rather than mallocing for every instance) + declared by the user are used to get a buffer to hold the object's instance + structure. +

+

+ If this is the first instance of the object ever created, the type system must create a class structure. + It allocates a buffer to hold the object's class structure and initializes it. The first part of the + class structure (ie: the embedded parent class structure) is initialized by copying the contents from + the class structure of the parent class. The rest of class structure is initialized to zero. If there + is no parent, the entire class structure is initialized to zero. The type system then invokes the + base_class_initialization functions + (GBaseInitFunc) from topmost + fundamental object to bottom-most most derived object. The object's class_init + (GClassInitFunc) function is invoked afterwards to complete + initialization of the class structure. + Finally, the object's interfaces are initialized (we will discuss interface initialization + in more detail later). +

+

+ Once the type system has a pointer to an initialized class structure, it sets the object's + instance class pointer to the object's class structure and invokes the object's + instance_init + (GInstanceInitFunc) + functions, from top-most fundamental + type to bottom-most most-derived type. +

+

+ Object instance destruction through g_type_free_instance is very simple: + the instance structure is returned to the instance pool if there is one and if this was the + last living instance of the object, the class is destroyed. +

+

+ Class destruction (the concept of destruction is sometimes partly + referred to as finalization in GType) is the symmetric process of + the initialization: interfaces are destroyed first. + Then, the most derived + class_finalize (GClassFinalizeFunc) function is invoked. Finally, the + base_class_finalize (GBaseFinalizeFunc) functions are + invoked from bottom-most most-derived type to top-most fundamental type and + the class structure is freed. +

+

+ The base initialization/finalization process is + very similar to the C++ constructor/destructor paradigm. The practical details are different + though and it is important not to get confused by superficial similarities. + GTypes have no instance destruction mechanism. It is + the user's responsibility to implement correct destruction semantics on top + of the existing GType code. (This is what GObject does: see + The GObject base class.) + Furthermore, C++ code equivalent to the base_init + and class_init callbacks of GType is usually not needed because C++ cannot really create object + types at runtime. +

+

+ The instantiation/finalization process can be summarized as follows: +

+
+

Table 1. GType Instantiation/Finalization

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Invocation timeFunction invokedFunction's parameters
First call to g_type_create_instance for target typetype's base_init functionOn the inheritance tree of classes from fundamental type to target type. + base_init is invoked once for each class structure.
target type's class_init functionOn target type's class structure
interface initialization, see + the section called “Interface Initialization” + 
Each call to g_type_create_instance for target typetarget type's instance_init functionOn object's instance
Last call to g_type_free_instance for target typeinterface destruction, see + the section called “Interface Destruction” + 
target type's class_finalize functionOn target type's class structure
type's base_finalize functionOn the inheritance tree of classes from fundamental type to target type. + base_finalize is invoked once for each class structure.
+
+


+

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gtype-non-instantiable-classed.html b/docs/reference/gobject/html/gtype-non-instantiable-classed.html new file mode 100644 index 0000000..2496303 --- /dev/null +++ b/docs/reference/gobject/html/gtype-non-instantiable-classed.html @@ -0,0 +1,564 @@ + + + + +Non-instantiable classed types: interfaces: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Non-instantiable classed types: interfaces

+

+ This section covers the theory behind interfaces. See + How to define and implement interfaces for the recommended way to define an + interface. +

+

+ GType's interfaces are very similar to Java's interfaces. They allow + to describe a common API that several classes will adhere to. + Imagine the play, pause and stop buttons on hi-fi equipment — those can + be seen as a playback interface. Once you know what they do, you can + control your CD player, MP3 player or anything that uses these symbols. + To declare an interface you have to register a non-instantiable + classed type which derives from + GTypeInterface. The following piece of code declares such an interface. +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
#define VIEWER_TYPE_EDITABLE viewer_editable_get_type ()
+G_DECLARE_INTERFACE (ViewerEditable, viewer_editable, VIEWER, EDITABLE, GObject)
+
+struct _ViewerEditableInterface {
+  GTypeInterface parent;
+
+  void (*save) (ViewerEditable  *self,
+                GError         **error);
+};
+
+void viewer_editable_save (ViewerEditable  *self,
+                           GError         **error);
+
+ +

+ The interface function, viewer_editable_save is implemented + in a pretty simple way: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
void
+viewer_editable_save (ViewerEditable  *self,
+                      GError         **error)
+{
+  ViewerEditableinterface *iface;
+
+  g_return_if_fail (VIEWER_IS_EDITABLE (self));
+  g_return_if_fail (error == NULL || *error == NULL);
+
+  iface = VIEWER_EDITABLE_GET_INTERFACE (self);
+  g_return_if_fail (iface->save != NULL);
+  iface->save (self);
+}
+
+ +

+ viewer_editable_get_type registers a type named ViewerEditable + which inherits from G_TYPE_INTERFACE. All interfaces must + be children of G_TYPE_INTERFACE in the inheritance tree. +

+

+ An interface is defined by only one structure which must contain as first member + a GTypeInterface structure. The interface structure is expected to + contain the function pointers of the interface methods. It is good style to + define helper functions for each of the interface methods which simply call + the interface's method directly: viewer_editable_save + is one of these. +

+

+ If you have no special requirements you can use the + G_IMPLEMENT_INTERFACE macro + to implement an interface: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
static void
+viewer_file_save (ViewerEditable *self)
+{
+  g_print ("File implementation of editable interface save method.\n");
+}
+
+static void
+viewer_file_editable_interface_init (ViewerEditableInterface *iface)
+{
+  iface->save = viewer_file_save;
+}
+
+G_DEFINE_TYPE_WITH_CODE (ViewerFile, viewer_file, VIEWER_TYPE_FILE,
+                         G_IMPLEMENT_INTERFACE (VIEWER_TYPE_EDITABLE,
+                                                viewer_file_editable_interface_init));
+
+ +

+

+

+ If your code does have special requirements, you must write a custom + get_type function to register your GType which + inherits from some GObject + and which implements the interface ViewerEditable. For + example, this code registers a new ViewerFile class which + implements ViewerEditable: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
static void
+viewer_file_save (ViewerEditable *editable)
+{
+  g_print ("File implementation of editable interface save method.\n");
+}
+
+static void
+viewer_file_editable_interface_init (gpointer g_iface,
+                                     gpointer iface_data)
+{
+  ViewerEditableInterface *iface = g_iface;
+
+  iface->save = viewer_file_save;
+}
+
+GType 
+viewer_file_get_type (void)
+{
+  static GType type = 0;
+  if (type == 0) {
+    const GTypeInfo info = {
+      sizeof (ViewerFileClass),
+      NULL,   /* base_init */
+      NULL,   /* base_finalize */
+      NULL,   /* class_init */
+      NULL,   /* class_finalize */
+      NULL,   /* class_data */
+      sizeof (ViewerFile),
+      0,      /* n_preallocs */
+      NULL    /* instance_init */
+    };
+    const GInterfaceInfo editable_info = {
+      (GInterfaceInitFunc) viewer_file_editable_interface_init,  /* interface_init */
+      NULL,   /* interface_finalize */
+      NULL    /* interface_data */
+    };
+    type = g_type_register_static (VIEWER_TYPE_FILE,
+                                   "ViewerFile",
+                                   &info, 0);
+    g_type_add_interface_static (type,
+                                 VIEWER_TYPE_EDITABLE,
+                                 &editable_info);
+  }
+  return type;
+}
+
+ +

+

+

+ g_type_add_interface_static records in the type system that + a given type implements also FooInterface + (foo_interface_get_type returns the type of + FooInterface). + The GInterfaceInfo structure holds + information about the implementation of the interface: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
struct _GInterfaceInfo
+{
+  GInterfaceInitFunc     interface_init;
+  GInterfaceFinalizeFunc interface_finalize;
+  gpointer               interface_data;
+};
+
+ +

+

+
+

+Interface Initialization

+

+ When an instantiable classed type which implements an interface + (either directly or by inheriting an implementation from a superclass) + is created for the first time, its class structure is initialized + following the process described in the section called “Instantiable classed types: objects”. + After that, the interface implementations associated with + the type are initialized. +

+

+ First a memory buffer is allocated to hold the interface structure. The parent's + interface structure is then copied over to the new interface structure (the parent + interface is already initialized at that point). If there is no parent interface, + the interface structure is initialized with zeros. The + g_type and the + g_instance_type fields are then + initialized: g_type is set to the type of + the most-derived interface and + g_instance_type is set to the type of the + most derived type which implements this interface. +

+

+ The interface's base_init function is called, + and then the interface's default_init is invoked. + Finally if the type has registered an implementation of the interface, + the implementation's interface_init + function is invoked. If there are multiple implementations of an + interface the base_init and + interface_init functions will be invoked once + for each implementation initialized. +

+

+ It is thus recommended to use a default_init function to + initialize an interface. This function is called only once for the interface no + matter how many implementations there are. The + default_init function is declared by + G_DEFINE_INTERFACE + which can be used to define the interface: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
G_DEFINE_INTERFACE (ViewerEditable, viewer_editable, G_TYPE_OBJECT);
+
+static void
+viewer_editable_default_init (ViewerEditableInterface *iface)
+{
+  /* add properties and signals here, will only be called once */
+}
+
+ +

+

+

+ Or you can do that yourself in a GType function for your interface: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
GType
+viewer_editable_get_type (void)
+{
+  static volatile gsize type_id = 0;
+  if (g_once_init_enter (&type_id)) {
+    const GTypeInfo info = {
+      sizeof (ViewerEditableInterface),
+      NULL,   /* base_init */
+      NULL,   /* base_finalize */
+      viewer_editable_default_init, /* class_init */
+      NULL,   /* class_finalize */
+      NULL,   /* class_data */
+      0,      /* instance_size */
+      0,      /* n_preallocs */
+      NULL    /* instance_init */
+    };
+    GType type = g_type_register_static (G_TYPE_INTERFACE,
+                                         "ViewerEditable",
+                                         &info, 0);
+    g_once_init_leave (&type_id, type);
+  }
+  return type_id;
+}
+
+static void
+viewer_editable_default_init (ViewerEditableInterface *iface)
+{
+  /* add properties and signals here, will only called once */
+}
+
+ +

+

+

+ In summary, interface initialization uses the following functions: +

+

+

+
+

Table 2. Interface Initialization

+
+++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Invocation timeFunction InvokedFunction's parametersRemark
First call to g_type_create_instance + for any type implementing interface + interface's base_init functionOn interface's vtableRarely necessary to use this. Called once per instantiated classed type implementing the interface.
First call to g_type_create_instance + for each type implementing interface + interface's default_init functionOn interface's vtableRegister interface's signals, properties, etc. here. Will be called once.
First call to g_type_create_instance + for any type implementing interface + implementation's interface_init functionOn interface's vtable + Initialize interface implementation. Called for each class that that + implements the interface. Initialize the interface method pointers + in the interface structure to the implementing class's implementation. +
+
+


+

+
+
+

+Interface Destruction

+

+ When the last instance of an instantiable type which registered + an interface implementation is destroyed, the interface's + implementations associated to the type are destroyed. +

+

+ To destroy an interface implementation, GType first calls the + implementation's interface_finalize function + and then the interface's most-derived + base_finalize function. +

+

+ Again, it is important to understand, as in + the section called “Interface Initialization”, + that both interface_finalize and base_finalize + are invoked exactly once for the destruction of each implementation of an interface. Thus, + if you were to use one of these functions, you would need to use a static integer variable + which would hold the number of instances of implementations of an interface such that + the interface's class is destroyed only once (when the integer variable reaches zero). +

+

+ The above process can be summarized as follows: +

+
+

Table 3. Interface Finalization

+
+++++ + + + + + + + + + + + + + + + + +
Invocation timeFunction InvokedFunction's parameters
Last call to g_type_free_instance for type + implementing interface + interface's interface_finalize functionOn interface's vtable
interface's base_finalize functionOn interface's vtable
+
+


+

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/gtype-non-instantiable.html b/docs/reference/gobject/html/gtype-non-instantiable.html new file mode 100644 index 0000000..ac2d451 --- /dev/null +++ b/docs/reference/gobject/html/gtype-non-instantiable.html @@ -0,0 +1,107 @@ + + + + +Non-instantiable non-classed fundamental types: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Non-instantiable non-classed fundamental types

+

+ A lot of types are not instantiable by the type system and do not have + a class. Most of these types are fundamental trivial types such as gchar, + and are already registered by GLib. +

+

+ In the rare case of needing to register such a type in the type + system, fill a + GTypeInfo structure with zeros since these types are also most of the time + fundamental: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
GTypeInfo info = {
+  0,                                /* class_size */
+  NULL,                        /* base_init */
+  NULL,                        /* base_destroy */
+  NULL,                        /* class_init */
+  NULL,                        /* class_destroy */
+  NULL,                        /* class_data */
+  0,                                /* instance_size */
+  0,                                /* n_preallocs */
+  NULL,                        /* instance_init */
+  NULL,                        /* value_table */
+};
+static const GTypeValueTable value_table = {
+  value_init_long0,                /* value_init */
+  NULL,                        /* value_free */
+  value_copy_long0,                /* value_copy */
+  NULL,                        /* value_peek_pointer */
+  "i",                        /* collect_format */
+  value_collect_int,        /* collect_value */
+  "p",                        /* lcopy_format */
+  value_lcopy_char,                /* lcopy_value */
+};
+info.value_table = &value_table;
+type = g_type_register_fundamental (G_TYPE_CHAR, "gchar", &info, &finfo, 0);
+
+ +

+

+

+ Having non-instantiable types might seem a bit useless: what good is a type + if you cannot instantiate an instance of that type ? Most of these types + are used in conjunction with GValues: a GValue is initialized + with an integer or a string and it is passed around by using the registered + type's value_table. GValues (and by extension these trivial fundamental + types) are most useful when used in conjunction with object properties and signals. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/home.png b/docs/reference/gobject/html/home.png new file mode 100644 index 0000000000000000000000000000000000000000..9346b336a784463192c7daab5133a3673dd69845 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefRMbARQqaxysz9Q}BI-m)~Y zggoA|1V*z2{cQ=d;!=?fvu4~`n82RKrk1UubNXTJj1GP|o-=>$A29f{JgJ9K`^t{Q z-oWs>M&_hvT&MjX@T4-&sBW+1^4oB5G4r2q!qGktZ!n*!)hjrjd0_4L6;4%u<}orJ u%Vo~x?#i!!ww+1OGuHe}T=cKQUzn^_t)8|WlnDbmjKR~@&t;ucLK6T + + + +Chaining up: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Chaining up

+

Chaining up is often loosely defined by the following set of + conditions: +

+
    +
  • Parent class A defines a public virtual method named foo and + provides a default implementation.

  • +
  • Child class B re-implements method foo.

  • +
  • B’s implementation of foo calls (‘chains up to’) its parent class A’s implementation of foo.

  • +
+

+ There are various uses of this idiom: +

+
    +
  • You need to extend the behaviour of a class without modifying its code. You create + a subclass to inherit its implementation, re-implement a public virtual method to modify the behaviour + and chain up to ensure that the previous behaviour is not really modified, just extended. +

  • +
  • You need to implement the + Chain + Of Responsibility pattern: each object of the inheritance + tree chains up to its parent (typically, at the beginning or the end of the method) to ensure that + each handler is run in turn.

  • +
+

+

+

+ To explicitly chain up to the implementation of the virtual method in the parent class, + you first need a handle to the original parent class structure. This pointer can then be used to + access the original virtual function pointer and invoke it directly. + [7] +

+

+ Use the parent_class pointer created and initialized + by the + G_DEFINE_TYPE + family of macros, for instance: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
static void
+b_method_to_call (B *obj, gint some_param)
+{
+  /* do stuff before chain up */
+
+  /* call the method_to_call() virtual function on the
+   * parent of BClass, AClass.
+   *
+   * remember the explicit cast to AClass*
+   */
+  A_CLASS (b_parent_class)->method_to_call (obj, some_param);
+
+  /* do stuff after chain up */
+}
+
+ +

+

+
+

+

[7] + The original adjective used in this sentence is not innocuous. To fully + understand its meaning, recall how class structures are initialized: for each object type, + the class structure associated with this object is created by first copying the class structure of its + parent type (a simple memcpy) and then by invoking the class_init callback on + the resulting class structure. Since the class_init callback is responsible for overwriting the class structure + with the user re-implementations of the class methods, the modified copy of the parent class + structure stored in the derived instance cannot be used. A copy of the class structure of an instance of the parent + class is needed. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/howto-gobject-code.html b/docs/reference/gobject/html/howto-gobject-code.html new file mode 100644 index 0000000..b57603e --- /dev/null +++ b/docs/reference/gobject/html/howto-gobject-code.html @@ -0,0 +1,170 @@ + + + + +Boilerplate code: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Boilerplate code

+

+ In your code, the first step is to #include the + needed headers: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
/*
+ * Copyright information
+ */
+
+#include "viewer-file.h"
+
+/* Private structure definition. */
+typedef struct {
+  gchar *filename;
+  /* stuff */
+} ViewerFilePrivate;
+
+/* 
+ * forward definitions
+ */
+
+ +

+

+

+ If the class is being declared as final using + G_DECLARE_FINAL_TYPE, its instance structure should + be defined in the C file: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
struct _ViewerFile
+{
+  GObject parent_instance;
+
+  /* Other members, including private data. */
+}
+
+ +

+

+

+ Call the G_DEFINE_TYPE macro (or + G_DEFINE_TYPE_WITH_PRIVATE if your class needs + private data — final types do not need private data) + using the name + of the type, the prefix of the functions and the parent GType to + reduce the amount of boilerplate needed. This macro will: + +

+
    +
  • implement the viewer_file_get_type + function
  • +
  • define a parent class pointer accessible from + the whole .c file
  • +
  • add private instance data to the type (if using + G_DEFINE_TYPE_WITH_PRIVATE)
  • +
+

+

+

+ If the class has been declared as final using + G_DECLARE_FINAL_TYPE (see + the section called “Boilerplate header code”), private data should be placed in + the instance structure, ViewerFile, and + G_DEFINE_TYPE should be used instead of + G_DEFINE_TYPE_WITH_PRIVATE. The instance structure + for a final class is not exposed publicly, and is not embedded in the + instance structures of any derived classes (because the class is final); + so its size can vary without causing incompatibilities for code which uses + the class. Conversely, private data for derivable classes + must be included in a private structure, and + G_DEFINE_TYPE_WITH_PRIVATE must be used. + +

+
+ + + + + + + +
1
G_DEFINE_TYPE (ViewerFile, viewer_file, G_TYPE_OBJECT)
+
+ +

+or +

+
+ + + + + + + +
1
G_DEFINE_TYPE_WITH_PRIVATE (ViewerFile, viewer_file, G_TYPE_OBJECT)
+
+ +

+

+

+ It is also possible to use the + G_DEFINE_TYPE_WITH_CODE macro to control the + get_type function implementation — for instance, to + add a call to the G_IMPLEMENT_INTERFACE macro to + implement an interface. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/howto-gobject-construction.html b/docs/reference/gobject/html/howto-gobject-construction.html new file mode 100644 index 0000000..bd42541 --- /dev/null +++ b/docs/reference/gobject/html/howto-gobject-construction.html @@ -0,0 +1,214 @@ + + + + +Object construction: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Object construction

+

+ People often get confused when trying to construct their GObjects because of the + sheer number of different ways to hook into the objects's construction process: it is + difficult to figure which is the correct, recommended way. +

+

+ Table 4, “g_object_new” shows what user-provided functions + are invoked during object instantiation and in which order they are invoked. + A user looking for the equivalent of the simple C++ constructor function should use + the instance_init method. It will be invoked after + all the parents’ instance_init + functions have been invoked. It cannot take arbitrary construction parameters + (as in C++) but if your object needs arbitrary parameters to complete initialization, + you can use construction properties. +

+

+ Construction properties will be set only after all + instance_init functions have run. + No object reference will be returned to the client of g_object_new + until all the construction properties have been set. +

+

+ It is important to note that object construction cannot ever + fail. If you require a fallible GObject construction, you can use the + GInitable and + GAsyncInitable + interfaces provided by the GIO library. +

+

+ You should write the following code first: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
G_DEFINE_TYPE_WITH_PRIVATE (ViewerFile, viewer_file, G_TYPE_OBJECT)
+
+static void
+viewer_file_class_init (ViewerFileClass *klass)
+{
+}
+
+static void
+viewer_file_init (ViewerFile *self)
+{
+  ViewerFilePrivate *priv = viewer_file_get_instance_private (self);
+
+  /* initialize all public and private members to reasonable default values.
+   * They are all automatically initialized to 0 to begin with. */
+}
+
+ +

+

+

+ If you need special construction properties (with + G_PARAM_CONSTRUCT_ONLY + set), install the properties in + the class_init() function, override the set_property() + and get_property() methods of the GObject class, + and implement them as described by the section called “Object properties”. +

+

+ Property IDs must start from 1, as 0 is reserved for internal use by + GObject. +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
enum
+{
+  PROP_FILENAME = 1,
+  PROP_ZOOM_LEVEL,
+  N_PROPERTIES
+};
+
+static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, };
+
+static void
+viewer_file_class_init (ViewerFileClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->set_property = viewer_file_set_property;
+  object_class->get_property = viewer_file_get_property;
+
+  obj_properties[PROP_FILENAME] =
+    g_param_spec_string ("filename",
+                         "Filename",
+                         "Name of the file to load and display from.",
+                         NULL  /* default value */,
+                         G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+  obj_properties[PROP_ZOOM_LEVEL] =
+    g_param_spec_uint ("zoom-level",
+                       "Zoom level",
+                       "Zoom level to view the file at.",
+                       0  /* minimum value */,
+                       10 /* maximum value */,
+                       2  /* default value */,
+                       G_PARAM_READWRITE));
+
+  g_object_class_install_properties (object_class,
+                                     N_PROPERTIES,
+                                     obj_properties);
+}
+
+ +

+ If you need this, make sure you can build and run code similar to the + code shown above. Also, make sure your construct properties can be set + without side effects during construction. +

+

+ Some people sometimes need to complete the initialization of a instance + of a type only after the properties passed to the constructors have been + set. This is possible through the use of the constructor() + class method as described in the section called “Object instantiation” or, + more simply, using the constructed() class method. + Note that the constructed() + virtual function will only be invoked after the properties marked as + G_PARAM_CONSTRUCT_ONLY or + G_PARAM_CONSTRUCT have been consumed, but + before the regular properties passed to g_object_new() + have been set. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/howto-gobject-destruction.html b/docs/reference/gobject/html/howto-gobject-destruction.html new file mode 100644 index 0000000..7933ca4 --- /dev/null +++ b/docs/reference/gobject/html/howto-gobject-destruction.html @@ -0,0 +1,189 @@ + + + + +Object destruction: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Object destruction

+

+ Again, it is often difficult to figure out which mechanism to use to + hook into the object's destruction process: when the last + g_object_unref + function call is made, a lot of things happen as described in + Table 5, “g_object_unref”. +

+

+ The destruction process of your object is in two phases: dispose and + finalize. This split is necessary to handle + potential cycles due to the nature of the reference counting mechanism + used by GObject, as well as dealing with temporary revival of + instances in case of signal emission during the destruction sequence. + See the section called “Reference counts and cycles” for more information. +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
struct _ViewerFilePrivate
+{
+  gchar *filename;
+  guint zoom_level;
+
+  GInputStream *input_stream;
+};
+
+G_DEFINE_TYPE_WITH_PRIVATE (ViewerFile, viewer_file, G_TYPE_OBJECT)
+
+static void
+viewer_file_dispose (GObject *gobject)
+{
+  ViewerFilePrivate *priv = viewer_file_get_instance_private (VIEWER_FILE (gobject));
+
+  /* In dispose(), you are supposed to free all types referenced from this
+   * object which might themselves hold a reference to self. Generally,
+   * the most simple solution is to unref all members on which you own a 
+   * reference.
+   */
+
+  /* dispose() might be called multiple times, so we must guard against
+   * calling g_object_unref() on an invalid GObject by setting the member
+   * NULL; g_clear_object() does this for us.
+   */
+  g_clear_object (&priv->input_stream);
+
+  /* Always chain up to the parent class; there is no need to check if
+   * the parent class implements the dispose() virtual function: it is
+   * always guaranteed to do so
+   */
+  G_OBJECT_CLASS (viewer_file_parent_class)->dispose (gobject);
+}
+
+static void
+viewer_file_finalize (GObject *gobject)
+{
+  ViewerFilePrivate *priv = viewer_file_get_instance_private (VIEWER_FILE (gobject));
+
+  g_free (priv->filename);
+
+  /* Always chain up to the parent class; as with dispose(), finalize()
+   * is guaranteed to exist on the parent's class virtual function table
+   */
+  G_OBJECT_CLASS (viewer_file_parent_class)->finalize (gobject);
+}
+
+static void
+viewer_file_class_init (ViewerFileClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->dispose = viewer_file_dispose;
+  object_class->finalize = viewer_file_finalize;
+}
+
+static void
+viewer_file_init (ViewerFile *self);
+{
+  ViewerFilePrivate *priv = viewer_file_get_instance_private (self);
+
+  priv->input_stream = g_object_new (VIEWER_TYPE_INPUT_STREAM, NULL);
+  priv->filename = /* would be set as a property */;
+}
+
+ +

+

+

+ It is possible that object methods might be invoked after dispose is + run and before finalize runs. GObject does not consider this to be a + program error: you must gracefully detect this and neither crash nor + warn the user, by having a disposed instance revert to an inert state. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/howto-gobject-methods.html b/docs/reference/gobject/html/howto-gobject-methods.html new file mode 100644 index 0000000..eeb5161 --- /dev/null +++ b/docs/reference/gobject/html/howto-gobject-methods.html @@ -0,0 +1,543 @@ + + + + +Object methods: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Object methods

+

+ Just as with C++, there are many different ways to define object + methods and extend them: the following list and sections draw on + C++ vocabulary. (Readers are expected to know basic C++ concepts. + Those who have not had to write C++ code recently can refer to e.g. + http://www.cplusplus.com/doc/tutorial/ to refresh + their memories.) +

+
    +
  • + non-virtual public methods, +

  • +
  • + virtual public methods and +

  • +
  • + virtual private methods +

  • +
+

+

+
+

+Non-virtual public methods

+

+ These are the simplest, providing a simple method which + acts on the object. Provide a function + prototype in the header and an implementation of that prototype + in the source file. +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
/* declaration in the header. */
+void viewer_file_open (ViewerFile  *self,
+                       GError     **error);
+
+/* implementation in the source file */
+void
+viewer_file_open (ViewerFile  *self,
+                  GError     **error)
+{
+  g_return_if_fail (VIEWER_IS_FILE (self));
+  g_return_if_fail (error == NULL || *error == NULL);
+
+  /* do stuff here. */
+}
+
+ +

+

+
+
+

+Virtual public methods

+

+ This is the preferred way to create GObjects with overridable methods: +

+
    +
  • + Define the common method and its virtual function in the + class structure in the public header +

  • +
  • + Define the common method in the header file and implement it in the + source file +

  • +
  • + Implement a base version of the virtual function in the source + file and initialize the virtual function pointer to this + implementation in the object’s class_init + function; or leave it as NULL for a ‘pure + virtual’ method which must be overridden by derived classes +

  • +
  • + Re-implement the virtual function in each derived class which needs + to override it +

  • +
+

+

+

+ Note that virtual functions can only be defined if the class is + derivable, declared using + G_DECLARE_DERIVABLE_TYPE + so the class structure can be defined. +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
/* declaration in viewer-file.h. */
+#define VIEWER_TYPE_FILE viewer_file_get_type ()
+G_DECLARE_DERIVABLE_TYPE (ViewerFile, viewer_file, VIEWER, FILE, GObject)
+
+struct _ViewerFileClass
+{
+  GObjectClass parent_class;
+
+  /* stuff */
+  void (*open) (ViewerFile  *self,
+                GError     **error);
+
+  /* Padding to allow adding up to 12 new virtual functions without
+   * breaking ABI. */
+  gpointer padding[12];
+};
+
+void viewer_file_open (ViewerFile  *self,
+                       GError     **error);
+
+/* implementation in viewer-file.c */
+void
+viewer_file_open (ViewerFile  *self,
+                  GError     **error)
+{
+  ViewerFileClass *klass;
+
+  g_return_if_fail (VIEWER_IS_FILE (self));
+  g_return_if_fail (error == NULL || *error == NULL);
+
+  klass = VIEWER_FILE_GET_CLASS (self);
+  g_return_if_fail (klass->open != NULL);
+
+  klass->open (self, error);
+}
+
+ +

+ The code above simply redirects the open call + to the relevant virtual function. +

+

+ It is possible to provide a default + implementation for this class method in the object's + class_init function: initialize the + klass->open field to a pointer to the + actual implementation. + By default, class methods that are not inherited are initialized to + NULL, and thus are to be considered "pure virtual". +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
static void
+viewer_file_real_close (ViewerFile  *self,
+                        GError     **error)
+{
+  /* Default implementation for the virtual method. */
+}
+
+static void
+viewer_file_class_init (ViewerFileClass *klass)
+{
+  /* this is not necessary, except for demonstration purposes.
+   *
+   * pure virtual method: mandates implementation in children.
+   */
+  klass->open = NULL;
+
+  /* merely virtual method. */
+  klass->close = viewer_file_real_close;
+}
+
+void
+viewer_file_open (ViewerFile  *self,
+                  GError     **error)
+{
+  ViewerFileClass *klass;
+
+  g_return_if_fail (VIEWER_IS_FILE (self));
+  g_return_if_fail (error == NULL || *error == NULL);
+
+  klass = VIEWER_FILE_GET_CLASS (self);
+
+  /* if the method is purely virtual, then it is a good idea to
+   * check that it has been overridden before calling it, and,
+   * depending on the intent of the class, either ignore it silently
+   * or warn the user.
+   */
+  g_return_if_fail (klass->open != NULL);
+  klass->open (self, error);
+}
+
+void
+viewer_file_close (ViewerFile  *self,
+                   GError     **error)
+{
+  ViewerFileClass *klass;
+
+  g_return_if_fail (VIEWER_IS_FILE (self));
+  g_return_if_fail (error == NULL || *error == NULL);
+
+  klass = VIEWER_FILE_GET_CLASS (self);
+  if (klass->close != NULL)
+    klass->close (self, error);
+}
+
+ +

+

+
+
+

+Virtual private Methods

+

+ These are very similar to virtual + public methods. They just don't + have a public function to call directly. The header + file contains only a declaration of the virtual function: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
/* declaration in viewer-file.h. */
+struct _ViewerFileClass
+{
+  GObjectClass parent;
+
+  /* Public virtual method as before. */
+  void     (*open)           (ViewerFile  *self,
+                              GError     **error);
+
+  /* Private helper function to work out whether the file can be loaded via
+   * memory mapped I/O, or whether it has to be read as a stream. */
+  gboolean (*can_memory_map) (ViewerFile *self);
+
+  /* Padding to allow adding up to 12 new virtual functions without
+   * breaking ABI. */
+  gpointer padding[12];
+};
+
+void viewer_file_open (ViewerFile *self, GError **error);
+
+ +

+ These virtual functions are often used to delegate part of the job + to child classes: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
/* this accessor function is static: it is not exported outside of this file. */
+static gboolean 
+viewer_file_can_memory_map (ViewerFile *self)
+{
+  return VIEWER_FILE_GET_CLASS (self)->can_memory_map (self);
+}
+
+void
+viewer_file_open (ViewerFile  *self,
+                  GError     **error)
+{
+  g_return_if_fail (VIEWER_IS_FILE (self));
+  g_return_if_fail (error == NULL || *error == NULL);
+
+  /*
+   * Try to load the file using memory mapped I/O, if the implementation of the
+   * class determines that is possible using its private virtual method.
+   */
+  if (viewer_file_can_memory_map (self))
+    {
+      /* Load the file using memory mapped I/O. */
+    }
+  else
+    {
+      /* Fall back to trying to load the file using streaming I/O… */
+    }
+}
+
+ +

+

+

+ Again, it is possible to provide a default implementation for this + private virtual function: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
static gboolean
+viewer_file_real_can_memory_map (ViewerFile *self)
+{
+  /* As an example, always return false. Or, potentially return true if the
+   * file is local. */
+  return FALSE;
+}
+
+static void
+viewer_file_class_init (ViewerFileClass *klass)
+{
+  /* non-pure virtual method; does not have to be implemented in children. */
+  klass->can_memory_map = viewer_file_real_can_memory_map;
+}
+
+ +

+

+

+ Derived classes can then override the method with code such as: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
static void
+viewer_audio_file_class_init (ViewerAudioFileClass *klass)
+{
+  ViewerFileClass *file_class = VIEWER_FILE_CLASS (klass);
+
+  /* implement pure virtual function. */
+  file_class->can_memory_map = viewer_audio_file_can_memory_map;
+}
+
+ +

+

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/howto-gobject.html b/docs/reference/gobject/html/howto-gobject.html new file mode 100644 index 0000000..f157995 --- /dev/null +++ b/docs/reference/gobject/html/howto-gobject.html @@ -0,0 +1,286 @@ + + + + +How to define and implement a new GObject: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+How to define and implement a new GObject

+ +

+ This chapter focuses on the implementation of a subtype of GObject, for + example to create a custom class hierarchy, or to subclass a GTK+ widget. +

+

+ Throughout the chapter, a running example of a file viewer program is used, + which has a ViewerFile class to represent a single file being + viewed, and various derived classes for different types of files with + special functionality, such as audio files. The example application also + supports editing files (for example, to tweak a photo being viewed), using + a ViewerEditable interface. +

+
+

+Boilerplate header code

+

+ The first step before writing the code for your GObject is to write the + type's header which contains the needed type, function and macro + definitions. Each of these elements is nothing but a convention which + is followed by almost all users of GObject, and has been refined over + multiple years of experience developing GObject-based code. If you are + writing a library, it is particularly important for you to adhere closely + to these conventions; users of your library will assume that you have. + Even if not writing a library, it will help other people who want to work + on your project. +

+

+ Pick a name convention for your headers and source code and stick to it: +

+
    +
  • use a dash to separate the prefix from the typename: + viewer-file.h and viewer-file.c + (this is the convention used by Nautilus and most GNOME libraries).

  • +
  • use an underscore to separate the prefix from the + typename: viewer_file.h and + viewer_file.c.

  • +
  • Do not separate the prefix from the typename: + viewerfile.h and viewerfile.c. + (this is the convention used by GTK+)

  • +
+

+ Some people like the first two solutions better: it makes reading file + names easier for those with poor eyesight. +

+

+ The basic conventions for any header which exposes a GType are described + in the section called “Conventions”. +

+

+ If you want to declare a type named ‘file’ in namespace ‘viewer’, name the + type instance ViewerFile and its class + ViewerFileClass (names are case sensitive). The + recommended method of declaring a type differs based on whether the type + is final or derivable. +

+

+ Final types cannot be subclassed further, and should be the default choice + for new types — changing a final type to be derivable is always a change + that will be compatible with existing uses of the code, but the converse + will often cause problems. Final types are declared using + G_DECLARE_FINAL_TYPE, + and require a structure to hold the instance data to be declared in the + source code (not the header file). + +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
/*
+ * Copyright/Licensing information.
+ */
+
+/* inclusion guard */
+#ifndef __VIEWER_FILE_H__
+#define __VIEWER_FILE_H__
+
+#include <glib-object.h>
+/*
+ * Potentially, include other headers on which this header depends.
+ */
+
+G_BEGIN_DECLS
+
+/*
+ * Type declaration.
+ */
+#define VIEWER_TYPE_FILE viewer_file_get_type ()
+G_DECLARE_FINAL_TYPE (ViewerFile, viewer_file, VIEWER, FILE, GObject)
+
+/*
+ * Method definitions.
+ */
+ViewerFile *viewer_file_new (void);
+
+G_END_DECLS
+
+#endif /* __VIEWER_FILE_H__ */
+
+ +

+

+

+ Derivable types can be subclassed further, and their class and + instance structures form part of the public API which must not be changed + if API stability is cared about. They are declared using + G_DECLARE_DERIVABLE_TYPE: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
/*
+ * Copyright/Licensing information.
+ */
+
+/* inclusion guard */
+#ifndef __VIEWER_FILE_H__
+#define __VIEWER_FILE_H__
+
+#include <glib-object.h>
+/*
+ * Potentially, include other headers on which this header depends.
+ */
+
+G_BEGIN_DECLS
+
+/*
+ * Type declaration.
+ */
+#define VIEWER_TYPE_FILE viewer_file_get_type ()
+G_DECLARE_DERIVABLE_TYPE (ViewerFile, viewer_file, VIEWER, FILE, GObject)
+
+struct _ViewerFileClass
+{
+  GObjectClass parent_class;
+
+  /* Class virtual function fields. */
+  void (* open) (ViewerFile  *file,
+                 GError     **error);
+
+  /* Padding to allow adding up to 12 new virtual functions without
+   * breaking ABI. */
+  gpointer padding[12];
+};
+
+/*
+ * Method definitions.
+ */
+ViewerFile *viewer_file_new (void);
+
+G_END_DECLS
+
+#endif /* __VIEWER_FILE_H__ */
+
+ +

+

+

+ The convention for header includes is to add the minimum number of + #include directives to the top of your headers needed + to compile that header. This + allows client code to simply #include "viewer-file.h", + without needing to know the prerequisites for + viewer-file.h. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/howto-interface-implement.html b/docs/reference/gobject/html/howto-interface-implement.html new file mode 100644 index 0000000..25b43e7 --- /dev/null +++ b/docs/reference/gobject/html/howto-interface-implement.html @@ -0,0 +1,164 @@ + + + + +Implementing interfaces: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Implementing interfaces

+

+ Once the interface is defined, implementing it is rather trivial. +

+

+ The first step is to define a normal final GObject class exactly as in + the section called “Boilerplate header code”. +

+

+ The second step is to implement ViewerFile by defining + it using + G_DEFINE_TYPE_WITH_CODE + and + G_IMPLEMENT_INTERFACE + instead of + G_DEFINE_TYPE: +

+
+ + + + + + + +
1
+2
+3
+4
+5
static void viewer_file_editable_interface_init (ViewerEditableInterface *iface);
+
+G_DEFINE_TYPE_WITH_CODE (ViewerFile, viewer_file, G_TYPE_OBJECT,
+                         G_IMPLEMENT_INTERFACE (VIEWER_TYPE_EDITABLE,
+                                                viewer_file_editable_interface_init))
+
+ +

+ This definition is very much like all the similar functions seen + previously. The only interface-specific code present here is the use of + G_IMPLEMENT_INTERFACE. +

+

Classes can implement multiple interfaces by using multiple calls to + G_IMPLEMENT_INTERFACE + inside the call to + G_DEFINE_TYPE_WITH_CODE +

+

+ viewer_file_editable_interface_init, the interface + initialization function: inside it every virtual method of the interface + must be assigned to its implementation: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
static void
+viewer_file_editable_save (ViewerFile  *self,
+                           GError     **error)
+{
+  g_print ("File implementation of editable interface save method: %s.\n",
+           self->filename);
+}
+
+static void
+viewer_file_editable_undo (ViewerFile *self,
+                           guint       n_steps)
+{
+  g_print ("File implementation of editable interface undo method: %s.\n",
+           self->filename);
+}
+
+static void
+viewer_file_editable_redo (ViewerFile *self,
+                           guint       n_steps)
+{
+  g_print ("File implementation of editable interface redo method: %s.\n",
+           self->filename);
+}
+
+static void
+viewer_file_editable_interface_init (ViewerEditableInterface *iface)
+{
+  iface->save = viewer_file_editable_save;
+  iface->undo = viewer_file_editable_undo;
+  iface->redo = viewer_file_editable_redo;
+}
+
+static void
+viewer_file_init (ViewerFile *self)
+{
+  /* Instance variable initialisation code. */
+}
+
+ +

+

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/howto-interface-override.html b/docs/reference/gobject/html/howto-interface-override.html new file mode 100644 index 0000000..84375d1 --- /dev/null +++ b/docs/reference/gobject/html/howto-interface-override.html @@ -0,0 +1,227 @@ + + + + +Overriding interface methods: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Overriding interface methods

+

+ If a base class already implements an interface and a derived + class needs to implement the same interface but needs to override certain + methods, you must reimplement the interface and set only the interface + methods which need overriding. +

+

+ In this example, ViewerAudioFile is derived from + ViewerFile. Both implement the ViewerEditable + interface. ViewerAudioFile only implements one method of the + ViewerEditable interface and uses the base class implementation of + the other. +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
static void
+viewer_audio_file_editable_save (ViewerEditable  *editable,
+                                 GError         **error)
+{
+  ViewerAudioFile *self = VIEWER_AUDIO_FILE (editable);
+
+  g_print ("Audio file implementation of editable interface save method.\n");
+}
+
+static void
+viewer_audio_file_editable_interface_init (ViewerEditableInterface *iface)
+{
+  /* Override the implementation of save(). */
+  iface->save = viewer_audio_file_editable_save;
+
+  /*
+   * Leave iface->undo and ->redo alone, they are already set to the
+   * base class implementation.
+   */
+}
+
+G_DEFINE_TYPE_WITH_CODE (ViewerAudioFile, viewer_audio_file, VIEWER_TYPE_FILE,
+                         G_IMPLEMENT_INTERFACE (VIEWER_TYPE_EDITABLE,
+                                                viewer_audio_file_editable_interface_init))
+
+static void
+viewer_audio_file_class_init (ViewerAudioFileClass *klass)
+{
+  /* Nothing here. */
+}
+
+static void
+viewer_audio_file_init (ViewerAudioFile *self)
+{
+  /* Nothing here. */
+}
+
+ +

+

+

+ To access the base class interface implementation use + g_type_interface_peek_parent + from within an interface's default_init function. +

+

+ To call the base class implementation of an interface + method from an derived class where than interface method has been + overridden, stash away the pointer returned from + g_type_interface_peek_parent + in a global variable. +

+

+ In this example ViewerAudioFile overrides the + save interface method. In its overridden method + it calls the base class implementation of the same interface method. +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
static ViewerEditableInterface *viewer_editable_parent_interface = NULL;
+
+static void
+viewer_audio_file_editable_save (ViewerEditable  *editable,
+                                 GError         **error)
+{
+  ViewerAudioFile *self = VIEWER_AUDIO_FILE (editable);
+
+  g_print ("Audio file implementation of editable interface save method.\n");
+
+  /* Now call the base implementation */
+  viewer_editable_parent_interface->save (editable, error);
+}
+
+static void
+viewer_audio_file_editable_interface_init (ViewerEditableInterface *iface)
+{
+  viewer_editable_parent_interface = g_type_interface_peek_parent (iface);
+
+  iface->save = viewer_audio_file_editable_save;
+}
+
+G_DEFINE_TYPE_WITH_CODE (ViewerAudioFile, viewer_audio_file, VIEWER_TYPE_FILE,
+                         G_IMPLEMENT_INTERFACE (VIEWER_TYPE_EDITABLE,
+                                                viewer_audio_file_editable_interface_init))
+
+static void
+viewer_audio_file_class_init (ViewerAudioFileClass *klass)
+{
+  /* Nothing here. */
+}
+
+static void
+viewer_audio_file_init (ViewerAudioFile *self)
+{
+  /* Nothing here. */
+}
+
+ +

+

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/howto-interface-prerequisite.html b/docs/reference/gobject/html/howto-interface-prerequisite.html new file mode 100644 index 0000000..5ef0ab4 --- /dev/null +++ b/docs/reference/gobject/html/howto-interface-prerequisite.html @@ -0,0 +1,222 @@ + + + + +Interface definition prerequisites: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Interface definition prerequisites

+

+ To specify that an interface requires the presence of other interfaces + when implemented, GObject introduces the concept of + prerequisites: it is possible to associate + a list of prerequisite types to an interface. For example, if + object A wishes to implement interface I1, and if interface I1 has a + prerequisite on interface I2, A has to implement both I1 and I2. +

+

+ The mechanism described above is, in practice, very similar to + Java's interface I1 extends interface I2. The example below shows + the GObject equivalent: +

+
+ + + + + + + +
1
+2
/* Make the ViewerEditableLossy interface require ViewerEditable interface. */
+G_DEFINE_INTERFACE (ViewerEditableLossy, viewer_editable_lossy, VIEWER_TYPE_EDITABLE);
+
+ +

+ In the G_DEFINE_INTERFACE + call above, the third parameter defines the prerequisite type. This + is the GType of either an interface or a class. In this case + the ViewerEditable interface is a prerequisite of + ViewerEditableLossy. The code + below shows how an implementation can implement both interfaces and + register their implementations: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
static void
+viewer_file_editable_lossy_compress (ViewerEditableLossy *editable)
+{
+  ViewerFile *self = VIEWER_FILE (editable);
+
+  g_print ("File implementation of lossy editable interface compress method: %s.\n",
+           self->filename);
+}
+
+static void
+viewer_file_editable_lossy_interface_init (ViewerEditableLossyInterface *iface)
+{
+  iface->compress = viewer_file_editable_lossy_compress;
+}
+
+static void
+viewer_file_editable_save (ViewerEditable  *editable,
+                           GError         **error)
+{
+  ViewerFile *self = VIEWER_FILE (editable);
+
+  g_print ("File implementation of editable interface save method: %s.\n",
+           self->filename);
+}
+
+static void
+viewer_file_editable_undo (ViewerEditable *editable,
+                           guint           n_steps)
+{
+  ViewerFile *self = VIEWER_FILE (editable);
+
+  g_print ("File implementation of editable interface undo method: %s.\n",
+           self->filename);
+}
+
+static void
+viewer_file_editable_redo (ViewerEditable *editable,
+                           guint           n_steps)
+{
+  ViewerFile *self = VIEWER_FILE (editable);
+
+  g_print ("File implementation of editable interface redo method: %s.\n",
+           self->filename);
+}
+
+static void
+viewer_file_editable_interface_init (ViewerEditableInterface *iface)
+{
+  iface->save = viewer_file_editable_save;
+  iface->undo = viewer_file_editable_undo;
+  iface->redo = viewer_file_editable_redo;
+}
+
+static void
+viewer_file_class_init (ViewerFileClass *klass)
+{
+  /* Nothing here. */
+}
+
+static void
+viewer_file_init (ViewerFile *self)
+{
+  /* Instance variable initialisation code. */
+}
+
+G_DEFINE_TYPE_WITH_CODE (ViewerFile, viewer_file, G_TYPE_OBJECT,
+                         G_IMPLEMENT_INTERFACE (VIEWER_TYPE_EDITABLE,
+                                                viewer_file_editable_interface_init)
+                         G_IMPLEMENT_INTERFACE (VIEWER_TYPE_EDITABLE_LOSSY,
+                                                viewer_file_editable_lossy_interface_init))
+
+ +

+ It is very important to notice that the order in which interface + implementations are added to the main object is not random: + g_type_add_interface_static, + which is called by + G_IMPLEMENT_INTERFACE, + must be invoked first on the interfaces which have no prerequisites and then on + the others. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/howto-interface-properties.html b/docs/reference/gobject/html/howto-interface-properties.html new file mode 100644 index 0000000..08d1373 --- /dev/null +++ b/docs/reference/gobject/html/howto-interface-properties.html @@ -0,0 +1,235 @@ + + + + +Interface properties: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Interface properties

+

+ GObject interfaces can also have + properties. Declaration of the interface properties is similar to + declaring the properties of ordinary GObject types as explained in + the section called “Object properties”, except that + g_object_interface_install_property + is used to declare the properties instead of + g_object_class_install_property. +

+

+ To include a property named 'autosave-frequency' of type gdouble in the + ViewerEditable interface example code above, we only need to + add one call in viewer_editable_default_init as shown + below: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
static void
+viewer_editable_default_init (ViewerEditableInterface *iface)
+{
+  g_object_interface_install_property (iface,
+                                       g_param_spec_double ("autosave-frequency",
+                                                            "Autosave frequency",
+                                                            "Frequency (in per-seconds) to autosave backups of the editable content at. "
+                                                            "Or zero to disable autosaves.",
+                                                            0.0,  /* minimum */
+                                                            G_MAXDOUBLE,  /* maximum */
+                                                            0.0,  /* default */
+                                                            G_PARAM_READWRITE));
+}
+
+ +

+

+

+ One point worth noting is that the declared property wasn't assigned an + integer ID. The reason being that integer IDs of properties are used + only inside the get_property and + set_property virtual methods. Since interfaces + declare but do not implement properties, there is no + need to assign integer IDs to them. +

+

+ An implementation declares and defines its properties in the usual + way as explained in the section called “Object properties”, except for one + small change: it can declare the properties of the interface it + implements using g_object_class_override_property + instead of g_object_class_install_property. + The following code snippet shows the modifications needed in the + ViewerFile declaration and implementation above: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
struct _ViewerFile
+{
+  GObject parent_instance;
+
+  gdouble autosave_frequency;
+};
+
+enum
+{
+  PROP_AUTOSAVE_FREQUENCY = 1,
+  N_PROPERTIES
+};
+
+static void
+viewer_file_set_property (GObject      *object,
+                          guint         prop_id,
+                          const GValue *value,
+                          GParamSpec   *pspec)
+{
+  ViewerFile *file = VIEWER_FILE (object);
+
+  switch (prop_id)
+    {
+    case PROP_AUTOSAVE_FREQUENCY:
+      file->autosave_frequency = g_value_get_double (value);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+viewer_file_get_property (GObject    *object,
+                          guint       prop_id,
+                          GValue     *value,
+                          GParamSpec *pspec)
+{
+  ViewerFile *file = VIEWER_FILE (object);
+
+  switch (prop_id)
+    {
+    case PROP_AUTOSAVE_FREQUENCY:
+      g_value_set_double (value, file->autosave_frequency);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+viewer_file_class_init (ViewerFileClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->set_property = viewer_file_set_property;
+  object_class->get_property = viewer_file_get_property;
+
+  g_object_class_override_property (object_class, PROP_AUTOSAVE_FREQUENCY, "autosave-frequency");
+}
+
+ +

+

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/howto-interface.html b/docs/reference/gobject/html/howto-interface.html new file mode 100644 index 0000000..bc8cc40 --- /dev/null +++ b/docs/reference/gobject/html/howto-interface.html @@ -0,0 +1,278 @@ + + + + +How to define and implement interfaces: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+How to define and implement interfaces

+ +
+

+Defining interfaces

+

+ The theory behind how GObject interfaces work is given in + the section called “Non-instantiable classed types: interfaces”; this section covers how to + define and implement an interface. +

+

+ The first step is to get the header right. This interface + defines two methods: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
/*
+ * Copyright/Licensing information.
+ */
+
+#ifndef __VIEWER_EDITABLE_H__
+#define __VIEWER_EDITABLE_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define VIEWER_TYPE_EDITABLE viewer_editable_get_type ()
+G_DECLARE_INTERFACE (ViewerEditable, viewer_editable, VIEWER, EDITABLE, GObject)
+
+struct _ViewerEditableInterface
+{
+  GTypeInterface parent_iface;
+
+  void (*save) (ViewerEditable  *self,
+                GError         **error);
+  void (*undo) (ViewerEditable  *self,
+                guint            n_steps);
+  void (*redo) (ViewerEditable  *self,
+                guint            n_steps);
+};
+
+void viewer_editable_save (ViewerEditable  *self,
+                           GError         **error);
+void viewer_editable_undo (ViewerEditable  *self,
+                           guint            n_steps);
+void viewer_editable_redo (ViewerEditable  *self,
+                           guint            n_steps);
+
+G_END_DECLS
+
+#endif /* __VIEWER_EDITABLE_H__ */
+
+ +

+ This code is the same as the code for a normal GType + which derives from a GObject except for a few details: +

+
    +
  • + The _GET_CLASS function is called + _GET_IFACE (and is defined by + G_DECLARE_INTERFACE). +

  • +
  • + The instance type, ViewerEditable, is not fully defined: it is + used merely as an abstract type which represents an instance of + whatever object which implements the interface. +

  • +
  • + The parent of the ViewerEditableInterface is + GTypeInterface, not GObjectClass. +

  • +
+

+

+

+ The implementation of the ViewerEditable type itself is trivial: +

+
    +
  • G_DEFINE_INTERFACE + creates a viewer_editable_get_type function which registers the + type in the type system. The third argument is used to define a + prerequisite interface + (which we'll talk about more later). Just pass 0 for this + argument when an interface has no prerequisite. +

  • +
  • viewer_editable_default_init is expected + to register the interface's signals if there are any (we will see a bit + later how to use them).

  • +
  • The interface methods viewer_editable_save, + viewer_editable_undo and viewer_editable_redo dereference the interface + structure to access its associated interface function and call it. +

  • +
+

+

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
G_DEFINE_INTERFACE (ViewerEditable, viewer_editable, G_TYPE_OBJECT);
+
+static void
+viewer_editable_default_init (ViewerEditableInterface *iface)
+{
+    /* add properties and signals to the interface here */
+}
+
+void
+viewer_editable_save (ViewerEditable  *self,
+                      GError         **error)
+{
+  ViewerEditableInterface *iface;
+
+  g_return_if_fail (VIEWER_IS_EDITABLE (self));
+  g_return_if_fail (error == NULL || *error == NULL);
+
+  iface = VIEWER_EDITABLE_GET_IFACE (self);
+  g_return_if_fail (iface->save != NULL);
+  iface->save (self, error);
+}
+
+void
+viewer_editable_undo (ViewerEditable *self,
+                      guint           n_steps)
+{
+  ViewerEditableInterface *iface;
+
+  g_return_if_fail (VIEWER_IS_EDITABLE (self));
+
+  iface = VIEWER_EDITABLE_GET_IFACE (self);
+  g_return_if_fail (iface->undo != NULL);
+  iface->undo (self, n_steps);
+}
+
+void
+viewer_editable_redo (ViewerEditable *self,
+                      guint           n_steps)
+{
+  ViewerEditableInterface *iface;
+
+  g_return_if_fail (VIEWER_IS_EDITABLE (self));
+
+  iface = VIEWER_EDITABLE_GET_IFACE (self);
+  g_return_if_fail (iface->redo != NULL);
+  iface->redo (self, n_steps);
+}
+
+ +

+

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/howto-signals.html b/docs/reference/gobject/html/howto-signals.html new file mode 100644 index 0000000..96a9ff3 --- /dev/null +++ b/docs/reference/gobject/html/howto-signals.html @@ -0,0 +1,175 @@ + + + + +How to create and use signals: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+How to create and use signals

+ +

+ The signal system in GType is pretty complex and + flexible: it is possible for its users to connect at runtime any + number of callbacks (implemented in any language for which a binding + exists) + [8] + to any signal and to stop the emission of any signal at any + state of the signal emission process. This flexibility makes it + possible to use GSignal for much more than just emitting signals to + multiple clients. +

+
+

+Simple use of signals

+

+ The most basic use of signals is to implement event + notification. For example, given a ViewerFile object with + a write method, a signal could be emitted whenever + the file is changed using that method. + The code below shows how the user can connect a callback to the + "changed" signal. +

+
+ + + + + + + +
1
+2
+3
+4
+5
file = g_object_new (VIEWER_FILE_TYPE, NULL);
+
+g_signal_connect (file, "changed", (GCallback) changed_event, NULL);
+
+viewer_file_write (file, buffer, strlen (buffer));
+
+ +

+

+

+ The ViewerFile signal is registered in the + class_init function: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
file_signals[CHANGED] = 
+  g_signal_newv ("changed",
+                 G_TYPE_FROM_CLASS (object_class),
+                 G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS,
+                 NULL /* closure */,
+                 NULL /* accumulator */,
+                 NULL /* accumulator data */,
+                 NULL /* C marshaller */,
+                 G_TYPE_NONE /* return_type */,
+                 0     /* n_params */,
+                 NULL  /* param_types */);
+
+ +

+ and the signal is emitted in viewer_file_write: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
void
+viewer_file_write (ViewerFile   *self,
+                   const guint8 *buffer,
+                   gsize         size)
+{
+  g_return_if_fail (VIEWER_IS_FILE (self));
+  g_return_if_fail (buffer != NULL || size == 0);
+
+  /* First write data. */
+
+  /* Then, notify user of data written. */
+  g_signal_emit (self, file_signals[CHANGED], 0 /* details */);
+}
+
+ +

+ As shown above, the details parameter can safely be set to zero if no + detail needs to be conveyed. For a discussion of what it can be used for, + see the section called “The detail argument” +

+

+ The C signal marshaller should always be NULL, in which + case the best marshaller for the given closure type will be chosen by + GLib. This may be an internal marshaller specific to the closure type, or + g_cclosure_marshal_generic, which implements generic + conversion of arrays of parameters to C callback invocations. GLib used to + require the user to write or generate a type-specific marshaller and pass + that, but that has been deprecated in favour of automatic selection of + marshallers. +

+

+ Note that g_cclosure_marshal_generic is slower than + non-generic marshallers, so should be avoided for performance critical + code. However, performance critical code should rarely be using signals + anyway, as emitting a signal blocks on emitting it to all listeners, which + has potentially unbounded cost. +

+
+
+

+

[8] A Python callback can be connected to any signal on any + C-based GObject, and vice versa, assuming that the Python object + inherits from GObject.

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/index.html b/docs/reference/gobject/html/index.html new file mode 100644 index 0000000..c84d446 --- /dev/null +++ b/docs/reference/gobject/html/index.html @@ -0,0 +1,202 @@ + + + + +GObject Reference Manual: GObject Reference Manual + + + + + + + +
+
+
+
+

+ for GObject 2.48.0 + + The latest version of this documentation can be found on-line at + https://developer.gnome.org/gobject/unstable/. +

+
+
+
+
+
Introduction
+
I. Concepts
+
+
Background
+
+
Data types and programming
+
Exporting a C API
+
+
The GLib Dynamic Type System
+
+
Copy functions
+
Conventions
+
Non-instantiable non-classed fundamental types
+
Instantiable classed types: objects
+
Initialization and Destruction
+
Non-instantiable classed types: interfaces
+
+
Interface Initialization
+
Interface Destruction
+
+
+
The GObject base class
+
+
Object instantiation
+
Object memory management
+
+
Reference count
+
Weak References
+
Reference counts and cycles
+
+
Object properties
+
Accessing multiple properties at once
+
+
The GObject messaging system
+
+
Closures
+
+
C Closures
+
Non-C closures (for the fearless)
+
+
Signals
+
+
Signal registration
+
Signal connection
+
Signal emission
+
The detail argument
+
+
+
+
II. API Reference
+
+
+Type Information — The GLib Runtime type identification and + management system +
+
+GTypePlugin — An interface for dynamically loadable types +
+
+GTypeModule — Type loading modules +
+
+GObject — The base object type +
+
+Enumeration and Flag Types — Enumeration and flags types +
+
+Boxed Types — A mechanism to wrap opaque C structures registered + by the type system +
+
+Generic values — A polymorphic type that can hold values of any + other type +
+
+Parameters and Values — Standard Parameter and Value Types +
+
+GParamSpec — Metadata for parameter specifications +
+
+Varargs Value Collection — Converting varargs to generic values +
+
+Signals — A means for customization of object behaviour + and a general purpose notification mechanism +
+
+Closures — Functions as first-class objects +
+
+Value arrays — A container structure to maintain an array of + generic values +
+
+GBinding — Bind two object properties +
+
+
III. Tools Reference
+
+
+glib-mkenums — C language enum description generation utility +
+
+glib-genmarshal — C code marshaller generation utility for GLib closures +
+
+gobject-query — display a tree of types +
+
+
IV. Tutorial
+
+
How to define and implement a new GObject
+
+
Boilerplate header code
+
Boilerplate code
+
Object construction
+
Object destruction
+
Object methods
+
+
Non-virtual public methods
+
Virtual public methods
+
Virtual private Methods
+
+
Chaining up
+
+
How to define and implement interfaces
+
+
Defining interfaces
+
Implementing interfaces
+
Interface definition prerequisites
+
Interface properties
+
Overriding interface methods
+
+
How to create and use signals
+
Simple use of signals
+
+
V. Related Tools
+
+
Vala
+
GObject builder
+
Graphical inspection of GObjects
+
Debugging reference count problems
+
Writing API docs
+
+
Index
+
Index of deprecated symbols
+
Index of new symbols in 2.2
+
Index of new symbols in 2.4
+
Index of new symbols in 2.6
+
Index of new symbols in 2.8
+
Index of new symbols in 2.10
+
Index of new symbols in 2.12
+
Index of new symbols in 2.14
+
Index of new symbols in 2.18
+
Index of new symbols in 2.22
+
Index of new symbols in 2.24
+
Index of new symbols in 2.26
+
Index of new symbols in 2.28
+
Index of new symbols in 2.30
+
Index of new symbols in 2.32
+
Index of new symbols in 2.34
+
Index of new symbols in 2.36
+
Index of new symbols in 2.38
+
Index of new symbols in 2.40
+
Index of new symbols in 2.42
+
Index of new symbols in 2.44
+
Index of new symbols in 2.46
+
Annotation Glossary
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/index.sgml b/docs/reference/gobject/html/index.sgml new file mode 100644 index 0000000..704b71d --- /dev/null +++ b/docs/reference/gobject/html/index.sgml @@ -0,0 +1,924 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/reference/gobject/html/left-insensitive.png b/docs/reference/gobject/html/left-insensitive.png new file mode 100644 index 0000000000000000000000000000000000000000..3269393a7f72af744a772c437bd7b3976c23709d GIT binary patch literal 395 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefH0HbvDJm`3=E7Co-U3d7N^fnTIWJ3j{^~q!iyia4kV=mdU|Jhfgdm;SLIpiYJ7wv^kjFiECCc&8T30!RG0~&BG=X zlu#U4@Z`))V`EG9e^NqDr#{!5k|)wT* zYTNt0`@q%TAD$){%#eQ?;$^ly8}yZCU%T~u0XM^%t?f#e znB*EuLv2rP%K3BMvFO}YmnR}KSgH;`EHL$)^!tH~iBxZ#h^zJi*#P5Xb6B50U@nx2 mU;T=yfcwnSOsS9SKd{M#MlNkCuvG>I8-u5-pUXO@geCx5`k@p6 literal 0 HcmV?d00001 diff --git a/docs/reference/gobject/html/left.png b/docs/reference/gobject/html/left.png new file mode 100644 index 0000000000000000000000000000000000000000..2abde032b0c98b756b12d380da4318205cd78470 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefRMaSLay~*pwMJb7sn8b(^oI8=R24v(*CjE{-BFv z0BhvLm?o9(UC{-Ci?lD?Ve-7-xypA!PTC(0^;>UheG4Altep3@`rO0#Rjs1)RxCLr zE5mee>7m*=%yEk+GVvGkRy0O&*&MTd5SjH(lgq~7r%6oRW$l1p-*S}iC>@fyDsz%y z`UIW8^Ao=maGhj3E8{7Cd_qof`K4oa->23`>&M2+XBtd2J`8jogQu&X%Q~loCIG_? BVG#fT literal 0 HcmV?d00001 diff --git a/docs/reference/gobject/html/pr01.html b/docs/reference/gobject/html/pr01.html new file mode 100644 index 0000000..cf65fe5 --- /dev/null +++ b/docs/reference/gobject/html/pr01.html @@ -0,0 +1,71 @@ + + + + +Introduction: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Introduction

+

+ Most modern programming languages come with their own native object + systems and additional fundamental algorithmic language constructs. + Just as GLib serves as an implementation of such fundamental + types and algorithms (linked lists, hash tables and so forth), the + GLib Object System provides the required implementations of a + flexible, extensible, and intentionally easy to map (into other + languages) object-oriented framework for C. + The substantial elements that are provided can be summarized as: +

+
    +
  • + A generic type system to register arbitrary single-inherited + flat and deep derived types as well as interfaces for + structured types. + It takes care of creation, initialization and memory management + of the assorted object and class structures, maintains + parent/child relationships and deals with dynamic implementations + of such types. That is, their type specific implementations are + relocatable/unloadable during runtime. +

  • +
  • + A collection of fundamental type implementations, such as integers, + doubles, enums and structured types, to name a few. +

  • +
  • + A sample fundamental type implementation to base object hierarchies + upon - the GObject fundamental type. +

  • +
  • + A signal system that allows very flexible user customization of + virtual/overridable object methods and can serve as a powerful + notification mechanism. +

  • +
  • + An extensible parameter/value system, supporting all the provided + fundamental types that can be used to generically handle object + properties or otherwise parameterized types. +

  • +
+

+

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/pt01.html b/docs/reference/gobject/html/pt01.html new file mode 100644 index 0000000..3174a5b --- /dev/null +++ b/docs/reference/gobject/html/pt01.html @@ -0,0 +1,79 @@ + + + + +Part I. Concepts: GObject Reference Manual + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/reference/gobject/html/pt02.html b/docs/reference/gobject/html/pt02.html new file mode 100644 index 0000000..36bc6f1 --- /dev/null +++ b/docs/reference/gobject/html/pt02.html @@ -0,0 +1,66 @@ + + + + +Part IV. Tutorial: GObject Reference Manual + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/reference/gobject/html/pt03.html b/docs/reference/gobject/html/pt03.html new file mode 100644 index 0000000..39b0119 --- /dev/null +++ b/docs/reference/gobject/html/pt03.html @@ -0,0 +1,54 @@ + + + + +Part V. Related Tools: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Part V. Related Tools

+
+
+

+ Several useful developer tools have been build around GObject + technology. The next sections briefly introduce them and link to + the respective project pages. +

+

+ For example, writing GObjects is often seen as a tedious task. It + requires a lot of typing and just doing a copy/paste requires a + great deal of care. A lot of projects and scripts have been + written to generate GObject skeleton form boilerplate code, or + even translating higher-level language into plain C. +

+ +
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/right-insensitive.png b/docs/reference/gobject/html/right-insensitive.png new file mode 100644 index 0000000000000000000000000000000000000000..4c95785b907b978f36674cd98bf5302669c15c1b GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefG`u!(zUX23=E7+o-U3d7N^fn+URvSL8NuRG*{E) z?#-+97X-^pidQ*u@StO1(S@7g8g>nnA24$?ty?)cmuaa|Y>ez2*_Ia?6HP4j{3LIs zTr!s1ao_Sz^~3e4zRJGAjKZGn=XP#)Wmuo-QN>teTzzI!&R*jMI^Oa#7_ukLYdicf zOx;1mb-rt04s-c|uIH8fnX}$)XJa^0_-F3(pA%=sGI<|(n_*&=yYt96+n5InXn_GN+EraJI9q(O+n{6MQKErp&KxRvpfn0xh z`sSMqH(2Z%?kaFBTf06W^y=UDA9gR9YrwNS*1pjB((0K%&+SbAx3`XA&dKZ}j*nX7 QfdRze>FVdQ&MBb@09|aA9{>OV literal 0 HcmV?d00001 diff --git a/docs/reference/gobject/html/right.png b/docs/reference/gobject/html/right.png new file mode 100644 index 0000000000000000000000000000000000000000..76260ec8865f4e13cd269ec62eccd78a33adba3c GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefRMbR+#PqI2*V^#7sn8b(^oI8=W9$9IsUQVezxzH zy`G{eu0`y#boSlU-NAlQG~=D)BPJG4k(^0qdDa(AdQvI0d|vJT=i7_<_D6`Cy?Dm; zP0@1EeB~D|O$oQe*sxL-P;q{2UCr}fN-o#M~tpZzsGyfNz46SZlIJCbKH zZQscEqpOfBCPDgx + + + +API Reference: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+

+API Reference

+
+
+
+

Table of Contents

+
+
+Type Information — The GLib Runtime type identification and + management system +
+
+GTypePlugin — An interface for dynamically loadable types +
+
+GTypeModule — Type loading modules +
+
+GObject — The base object type +
+
+Enumeration and Flag Types — Enumeration and flags types +
+
+Boxed Types — A mechanism to wrap opaque C structures registered + by the type system +
+
+Generic values — A polymorphic type that can hold values of any + other type +
+
+Parameters and Values — Standard Parameter and Value Types +
+
+GParamSpec — Metadata for parameter specifications +
+
+Varargs Value Collection — Converting varargs to generic values +
+
+Signals — A means for customization of object behaviour + and a general purpose notification mechanism +
+
+Closures — Functions as first-class objects +
+
+Value arrays — A container structure to maintain an array of + generic values +
+
+GBinding — Bind two object properties +
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/rn02.html b/docs/reference/gobject/html/rn02.html new file mode 100644 index 0000000..1af198c --- /dev/null +++ b/docs/reference/gobject/html/rn02.html @@ -0,0 +1,46 @@ + + + + +Tools Reference: GObject Reference Manual + + + + + + + + + + + + + + + + +
+
+

+Tools Reference

+
+
+
+

Table of Contents

+
+
+glib-mkenums — C language enum description generation utility +
+
+glib-genmarshal — C code marshaller generation utility for GLib closures +
+
+gobject-query — display a tree of types +
+
+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/signal.html b/docs/reference/gobject/html/signal.html new file mode 100644 index 0000000..630afdb --- /dev/null +++ b/docs/reference/gobject/html/signal.html @@ -0,0 +1,372 @@ + + + + +Signals: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Signals

+

+ GObject's signals have nothing to do with standard UNIX signals: they connect + arbitrary application-specific events with any number of listeners. + For example, in GTK+, every user event (keystroke or mouse move) is received + from the windowing system and generates a GTK+ event in the form of a signal emission + on the widget object instance. +

+

+ Each signal is registered in the type system together with the type on which + it can be emitted: users of the type are said to connect + to the signal on a given type instance when they register a closure to be + invoked upon the signal emission. Users can also emit the signal by themselves + or stop the emission of the signal from within one of the closures connected + to the signal. +

+

+ When a signal is emitted on a given type instance, all the closures + connected to this signal on this type instance will be invoked. All the closures + connected to such a signal represent callbacks whose signature looks like: +

+
+ + + + + + + +
1
return_type function_callback (gpointer instance, …, gpointer user_data);
+
+ +

+

+
+

+Signal registration

+

+ To register a new signal on an existing type, we can use any of g_signal_newv, + g_signal_new_valist or g_signal_new functions: +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
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);
+
+ +

+ The number of parameters to these functions is a bit intimidating but they are relatively + simple: +

+
    +
  • + signal_name: is a string which can be used to uniquely identify a given signal. +

  • +
  • + itype: is the instance type on which this signal can be emitted. +

  • +
  • + signal_flags: partly defines the order in which closures which were connected to the + signal are invoked. +

  • +
  • + class_closure: this is the default closure for the signal: if it is not NULL upon + the signal emission, it will be invoked upon this emission of the signal. The + moment where this closure is invoked compared to other closures connected to that + signal depends partly on the signal_flags. +

  • +
  • + accumulator: this is a function pointer which is invoked after each closure + has been invoked. If it returns FALSE, signal emission is stopped. If it returns + TRUE, signal emission proceeds normally. It is also used to compute the return + value of the signal based on the return value of all the invoked closures. + For example, an accumulator could ignore + NULL returns from closures; or it + could build a list of the values returned by the + closures. +

  • +
  • + accumulator_data: this pointer will be passed down to each invocation of the + accumulator during emission. +

  • +
  • + c_marshaller: this is the default C marshaller for any closure which is connected to + this signal. +

  • +
  • + return_type: this is the type of the return value of the signal. +

  • +
  • + n_params: this is the number of parameters this signal takes. +

  • +
  • + param_types: this is an array of GTypes which indicate the type of each parameter + of the signal. The length of this array is indicated by n_params. +

  • +
+

+

+

+ As you can see from the above definition, a signal is basically a description + of the closures which can be connected to this signal and a description of the + order in which the closures connected to this signal will be invoked. +

+
+
+

+Signal connection

+

+ If you want to connect to a signal with a closure, you have three possibilities: +

+
    +
  • + You can register a class closure at signal registration: this is a + system-wide operation. i.e.: the class closure will be invoked during each emission + of a given signal on any of the instances of the type which supports that signal. +

  • +
  • + You can use g_signal_override_class_closure which + overrides the class closure of a given type. It is possible to call this function + only on a derived type of the type on which the signal was registered. + This function is of use only to language bindings. +

  • +
  • + You can register a closure with the g_signal_connect + family of functions. This is an instance-specific operation: the closure + will be invoked only during emission of a given signal on a given instance. +

  • +
+

+ It is also possible to connect a different kind of callback on a given signal: + emission hooks are invoked whenever a given signal is emitted whatever the instance on + which it is emitted. Emission hooks are used for example to get all mouse_clicked + emissions in an application to be able to emit the small mouse click sound. + Emission hooks are connected with g_signal_add_emission_hook + and removed with g_signal_remove_emission_hook. +

+
+
+

+Signal emission

+

+ Signal emission is done through the use of the g_signal_emit family + of functions. +

+
+ + + + + + + +
1
+2
+3
+4
void g_signal_emitv (const GValue *instance_and_params,
+                     guint         signal_id,
+                     GQuark        detail,
+                     GValue       *return_value);
+
+ +

+

+
    +
  • + The instance_and_params array of GValues contains the list of input + parameters to the signal. The first element of the array is the + instance pointer on which to invoke the signal. The following elements of + the array contain the list of parameters to the signal. +

  • +
  • + signal_id identifies the signal to invoke. +

  • +
  • + detail identifies the specific detail of the signal to invoke. A detail is a kind of + magic token/argument which is passed around during signal emission and which is used + by closures connected to the signal to filter out unwanted signal emissions. In most + cases, you can safely set this value to zero. See the section called “The detail argument” for + more details about this parameter. +

  • +
  • + return_value holds the return value of the last closure invoked during emission if + no accumulator was specified. If an accumulator was specified during signal creation, + this accumulator is used to calculate the return value as a function of the return + values of all the closures invoked during emission. + If no closure is invoked during + emission, the return_value is nonetheless initialized to zero/null. +

  • +
+

+

+

+ Signal emission can be decomposed in 5 steps: +

+
    +
  1. + RUN_FIRST: if the + G_SIGNAL_RUN_FIRST flag was used + during signal registration and if there exists a class closure for this signal, + the class closure is invoked. +

  2. +
  3. + EMISSION_HOOK: if any emission hook was added to + the signal, they are invoked from first to last added. Accumulate return values. +

  4. +
  5. + HANDLER_RUN_FIRST: if any closure were connected + with the g_signal_connect family of + functions, and if they are not blocked (with the g_signal_handler_block + family of functions) they are run here, from first to last connected. +

  6. +
  7. + RUN_LAST: if the G_SIGNAL_RUN_LAST + flag was set during registration and if a class closure + was set, it is invoked here. +

  8. +
  9. + HANDLER_RUN_LAST: if any closure were connected + with the g_signal_connect_after family of + functions, if they were not invoked during HANDLER_RUN_FIRST and if they + are not blocked, they are run here, from first to last connected. +

  10. +
  11. + RUN_CLEANUP: if the G_SIGNAL_RUN_CLEANUP flag + was set during registration and if a class closure was set, + it is invoked here. Signal emission is completed here. +

  12. +
+

+

+

+ If, at any point during emission (except in RUN_CLEANUP state), one of the + closures or emission hook stops the signal emission with + g_signal_stop_emission, + emission jumps to RUN_CLEANUP state. +

+

+ If, at any point during emission, one of the closures or emission hook + emits the same signal on the same instance, emission is restarted from + the RUN_FIRST state. +

+

+ The accumulator function is invoked in all states, after invocation + of each closure (except in RUN_EMISSION_HOOK and + RUN_CLEANUP). It accumulates + the closure return value into the signal return value and returns TRUE or + FALSE. If, at any point, it does not return TRUE, emission jumps + to RUN_CLEANUP state. +

+

+ If no accumulator function was provided, the value returned by the last handler + run will be returned by g_signal_emit. +

+
+
+

+The detail argument

+

All the functions related to signal emission or signal connection have a parameter + named the detail. Sometimes, this parameter is hidden by the API + but it is always there, in one form or another. +

+

+ Of the three main connection functions, + only one has an explicit detail parameter as a GQuark: + g_signal_connect_closure_by_id. + [6] +

+

+ The two other functions, + g_signal_connect_closure and + g_signal_connect_data + hide the detail parameter in the signal name identification. + Their detailed_signal parameter is a + string which identifies the name of the signal to connect to. + The format of this string should match + signal_name::detail_name. For example, + connecting to the signal named + notify::cursor_position will actually + connect to the signal named notify with the + cursor_position detail. + Internally, the detail string is transformed to a GQuark if it is present. +

+

+ Of the four main signal emission functions, one hides it in its + signal name parameter: + g_signal_connect. + The other three have an explicit detail parameter as a + GQuark again: + g_signal_emit, + g_signal_emitv and + g_signal_emit_valist. +

+

+ If a detail is provided by the user to the emission function, it is used during emission to match + against the closures which also provide a detail. + If a closure's detail does not match the detail provided by the user, it + will not be invoked (even though it is connected to a signal which is + being emitted). +

+

+ This completely optional filtering mechanism is mainly used as an optimization for signals + which are often emitted for many different reasons: the clients can filter out which events they are + interested in before the closure's marshalling code runs. For example, this is used extensively + by the notify signal of GObject: whenever a property is modified on a GObject, + instead of just emitting the notify signal, GObject associates as a detail to this + signal emission the name of the property modified. This allows clients who wish to be notified of changes + to only one property to filter most events before receiving them. +

+

+ As a simple rule, users can and should set the detail parameter to zero: this will disable completely + this optional filtering for that signal. +

+
+
+

+

[6] A GQuark is an integer which uniquely represents a string. It is possible to transform + back and forth between the integer and string representations with the functions + g_quark_from_string and g_quark_to_string. +

+
+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/style.css b/docs/reference/gobject/html/style.css new file mode 100644 index 0000000..3675420 --- /dev/null +++ b/docs/reference/gobject/html/style.css @@ -0,0 +1,479 @@ +body +{ + font-family: cantarell, sans-serif; +} +.synopsis, .classsynopsis +{ + /* tango:aluminium 1/2 */ + background: #eeeeec; + background: rgba(238, 238, 236, 0.5); + border: solid 1px rgb(238, 238, 236); + padding: 0.5em; +} +.programlisting +{ + /* tango:sky blue 0/1 */ + /* fallback for no rgba support */ + background: #e6f3ff; + border: solid 1px #729fcf; + background: rgba(114, 159, 207, 0.1); + border: solid 1px rgba(114, 159, 207, 0.2); + padding: 0.5em; +} +.variablelist +{ + padding: 4px; + margin-left: 3em; +} +.variablelist td:first-child +{ + vertical-align: top; +} + +div.gallery-float +{ + float: left; + padding: 10px; +} +div.gallery-float img +{ + border-style: none; +} +div.gallery-spacer +{ + clear: both; +} + +a, a:visited +{ + text-decoration: none; + /* tango:sky blue 2 */ + color: #3465a4; +} +a:hover +{ + text-decoration: underline; + /* tango:sky blue 1 */ + color: #729fcf; +} + +div.informaltable table +{ + border-collapse: separate; + border-spacing: 1em 0.3em; + border: none; +} + +div.informaltable table td, div.informaltable table th +{ + vertical-align: top; +} + +.function_type, +.variable_type, +.property_type, +.signal_type, +.parameter_name, +.struct_member_name, +.union_member_name, +.define_keyword, +.datatype_keyword, +.typedef_keyword +{ + text-align: right; +} + +/* dim non-primary columns */ +.c_punctuation, +.function_type, +.variable_type, +.property_type, +.signal_type, +.define_keyword, +.datatype_keyword, +.typedef_keyword, +.property_flags, +.signal_flags, +.parameter_annotations, +.enum_member_annotations, +.struct_member_annotations, +.union_member_annotations +{ + color: #888a85; +} + +.function_type a, +.function_type a:visited, +.function_type a:hover, +.property_type a, +.property_type a:visited, +.property_type a:hover, +.signal_type a, +.signal_type a:visited, +.signal_type a:hover, +.signal_flags a, +.signal_flags a:visited, +.signal_flags a:hover +{ + color: #729fcf; +} + +td p +{ + margin: 0.25em; +} + +div.table table +{ + border-collapse: collapse; + border-spacing: 0px; + /* tango:aluminium 3 */ + border: solid 1px #babdb6; +} + +div.table table td, div.table table th +{ + /* tango:aluminium 3 */ + border: solid 1px #babdb6; + padding: 3px; + vertical-align: top; +} + +div.table table th +{ + /* tango:aluminium 2 */ + background-color: #d3d7cf; +} + +h4 +{ + color: #555753; + margin-top: 1em; + margin-bottom: 1em; +} + +hr +{ + /* tango:aluminium 1 */ + color: #d3d7cf; + background: #d3d7cf; + border: none 0px; + height: 1px; + clear: both; + margin: 2.0em 0em 2.0em 0em; +} + +dl.toc dt +{ + padding-bottom: 0.25em; +} + +dl.toc > dt +{ + padding-top: 0.25em; + padding-bottom: 0.25em; + font-weight: bold; +} + +dl.toc > dl +{ + padding-bottom: 0.5em; +} + +.parameter +{ + font-style: normal; +} + +.footer +{ + padding-top: 3.5em; + /* tango:aluminium 3 */ + color: #babdb6; + text-align: center; + font-size: 80%; +} + +.informalfigure, +.figure +{ + margin: 1em; +} + +.informalexample, +.example +{ + margin-top: 1em; + margin-bottom: 1em; +} + +.warning +{ + /* tango:orange 0/1 */ + background: #ffeed9; + background: rgba(252, 175, 62, 0.1); + border-color: #ffb04f; + border-color: rgba(252, 175, 62, 0.2); +} +.note +{ + /* tango:chameleon 0/0.5 */ + background: #d8ffb2; + background: rgba(138, 226, 52, 0.1); + border-color: #abf562; + border-color: rgba(138, 226, 52, 0.2); +} +div.blockquote +{ + border-color: #eeeeec; +} +.note, .warning, div.blockquote +{ + padding: 0.5em; + border-width: 1px; + border-style: solid; + margin: 2em; +} +.note p, .warning p +{ + margin: 0; +} + +div.warning h3.title, +div.note h3.title +{ + display: none; +} + +p + div.section +{ + margin-top: 1em; +} + +div.refnamediv, +div.refsynopsisdiv, +div.refsect1, +div.refsect2, +div.toc, +div.section +{ + margin-bottom: 1em; +} + +/* blob links */ +h2 .extralinks, h3 .extralinks +{ + float: right; + /* tango:aluminium 3 */ + color: #babdb6; + font-size: 80%; + font-weight: normal; +} + +.lineart +{ + color: #d3d7cf; + font-weight: normal; +} + +.annotation +{ + /* tango:aluminium 5 */ + color: #555753; + font-weight: normal; +} + +.structfield +{ + font-style: normal; + font-weight: normal; +} + +acronym,abbr +{ + border-bottom: 1px dotted gray; +} + +/* code listings */ + +.listing_code .programlisting .normal, +.listing_code .programlisting .normal a, +.listing_code .programlisting .number, +.listing_code .programlisting .cbracket, +.listing_code .programlisting .symbol { color: #555753; } +.listing_code .programlisting .comment, +.listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ +.listing_code .programlisting .function, +.listing_code .programlisting .function a, +.listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ +.listing_code .programlisting .string { color: #ad7fa8; } /* tango: plum */ +.listing_code .programlisting .keyword, +.listing_code .programlisting .usertype, +.listing_code .programlisting .type, +.listing_code .programlisting .type a { color: #4e9a06; } /* tango: chameleon 3 */ + +.listing_frame { + /* tango:sky blue 1 */ + border: solid 1px #729fcf; + border: solid 1px rgba(114, 159, 207, 0.2); + padding: 0px; +} + +.listing_lines, .listing_code { + margin-top: 0px; + margin-bottom: 0px; + padding: 0.5em; +} +.listing_lines { + /* tango:sky blue 0.5 */ + background: #a6c5e3; + background: rgba(114, 159, 207, 0.2); + /* tango:aluminium 6 */ + color: #2e3436; +} +.listing_code { + /* tango:sky blue 0 */ + background: #e6f3ff; + background: rgba(114, 159, 207, 0.1); +} +.listing_code .programlisting { + /* override from previous */ + border: none 0px; + padding: 0px; + background: none; +} +.listing_lines pre, .listing_code pre { + margin: 0px; +} + +@media screen { + /* these have a as a first child, but since there are no parent selectors + * we can't use that. */ + a.footnote + { + position: relative; + top: 0em ! important; + } + /* this is needed so that the local anchors are displayed below the naviagtion */ + div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] + { + display: inline-block; + position: relative; + top:-5em; + } + /* this seems to be a bug in the xsl style sheets when generating indexes */ + div.index div.index + { + top: 0em; + } + /* make space for the fixed navigation bar and add space at the bottom so that + * link targets appear somewhat close to top + */ + body + { + padding-top: 2.5em; + padding-bottom: 500px; + max-width: 60em; + } + p + { + max-width: 60em; + } + /* style and size the navigation bar */ + table.navigation#top + { + position: fixed; + background: #e2e2e2; + border-bottom: solid 1px #babdb6; + border-spacing: 5px; + margin-top: 0; + margin-bottom: 0; + top: 0; + left: 0; + z-index: 10; + } + table.navigation#top td + { + padding-left: 6px; + padding-right: 6px; + } + .navigation a, .navigation a:visited + { + /* tango:sky blue 3 */ + color: #204a87; + } + .navigation a:hover + { + /* tango:sky blue 2 */ + color: #3465a4; + } + td.shortcuts + { + /* tango:sky blue 2 */ + color: #3465a4; + font-size: 80%; + white-space: nowrap; + } + td.shortcuts .dim + { + color: #babdb6; + } + .navigation .title + { + font-size: 80%; + max-width: none; + margin: 0px; + font-weight: normal; + } +} +@media screen and (min-width: 60em) { + /* screen larger than 60em */ + body { margin: auto; } +} +@media screen and (max-width: 60em) { + /* screen less than 60em */ + #nav_hierarchy { display: none; } + #nav_interfaces { display: none; } + #nav_prerequisites { display: none; } + #nav_derived_interfaces { display: none; } + #nav_implementations { display: none; } + #nav_child_properties { display: none; } + #nav_style_properties { display: none; } + #nav_index { display: none; } + #nav_glossary { display: none; } + .gallery_image { display: none; } + .property_flags { display: none; } + .signal_flags { display: none; } + .parameter_annotations { display: none; } + .enum_member_annotations { display: none; } + .struct_member_annotations { display: none; } + .union_member_annotations { display: none; } + /* now that a column is hidden, optimize space */ + col.parameters_name { width: auto; } + col.parameters_description { width: auto; } + col.struct_members_name { width: auto; } + col.struct_members_description { width: auto; } + col.enum_members_name { width: auto; } + col.enum_members_description { width: auto; } + col.union_members_name { width: auto; } + col.union_members_description { width: auto; } + .listing_lines { display: none; } +} +@media print { + table.navigation { + visibility: collapse; + display: none; + } + div.titlepage table.navigation { + visibility: visible; + display: table; + background: #e2e2e2; + border: solid 1px #babdb6; + margin-top: 0; + margin-bottom: 0; + top: 0; + left: 0; + height: 3em; + } +} + diff --git a/docs/reference/gobject/html/tools-ginspector.html b/docs/reference/gobject/html/tools-ginspector.html new file mode 100644 index 0000000..f853805 --- /dev/null +++ b/docs/reference/gobject/html/tools-ginspector.html @@ -0,0 +1,34 @@ + + + + +Graphical inspection of GObjects: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Graphical inspection of GObjects

+

+ Yet another tool that you may find helpful when working with + GObjects is G-Inspector. It + is able to display GLib/GTK+ objects and their properties. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/tools-gob.html b/docs/reference/gobject/html/tools-gob.html new file mode 100644 index 0000000..e1655ba --- /dev/null +++ b/docs/reference/gobject/html/tools-gob.html @@ -0,0 +1,39 @@ + + + + +GObject builder: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+GObject builder

+

+ In order to help a GObject class developer, one obvious idea is + to use some sort of templates for the skeletons and then run + them through a special tool to generate the real C files. GOB (or GOB2) is + such a tool. It is a preprocessor which can be used to build + GObjects with inline C code so that there is no need to edit the + generated C code. The syntax is inspired by Java and Yacc or + Lex. The implementation is intentionally kept simple: the inline C + code provided by the user is not parsed. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/tools-gtkdoc.html b/docs/reference/gobject/html/tools-gtkdoc.html new file mode 100644 index 0000000..7306d45 --- /dev/null +++ b/docs/reference/gobject/html/tools-gtkdoc.html @@ -0,0 +1,82 @@ + + + + +Writing API docs: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Writing API docs

+

The API documentation for most of the GLib, GObject, GTK+ and GNOME + libraries is built with a combination of complex tools. Typically, the part of + the documentation which describes the behavior of each function is extracted + from the specially-formatted source code comments by a tool named gtk-doc which + generates DocBook XML and merges this DocBook XML with a set of master XML + DocBook files. These XML DocBook files are finally processed with xsltproc + (a small program part of the libxslt library) to generate the final HTML + output. Other tools can be used to generate PDF output from the source XML. + The following code excerpt shows what these comments look like. +

+
+ + + + + + + +
1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
/**
+ * gtk_widget_freeze_child_notify:
+ * @widget: a #GtkWidget
+ * 
+ * Stops emission of "child-notify" signals on @widget. The signals are
+ * queued until gtk_widget_thaw_child_notify() is called on @widget. 
+ *
+ * This is the analogue of g_object_freeze_notify() for child properties.
+ **/
+void
+gtk_widget_freeze_child_notify (GtkWidget *widget)
+{
+...
+
+ +

+

+

+ Thorough + documentation + on how to set up and use gtk-doc in your project is provided on the + GNOME developer website. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/tools-refdb.html b/docs/reference/gobject/html/tools-refdb.html new file mode 100644 index 0000000..62b4f9f --- /dev/null +++ b/docs/reference/gobject/html/tools-refdb.html @@ -0,0 +1,47 @@ + + + + +Debugging reference count problems: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Debugging reference count problems

+

+ The reference counting scheme used by GObject does solve quite + a few memory management problems but also introduces new sources of bugs. + In large applications, finding the exact spot where the reference count + of an Object is not properly handled can be very difficult. +

+

+ A useful tool in debugging reference counting problems is to + set breakpoints in gdb on g_object_ref() and g_object_unref(). + Once you know the address of the object you are interested in, + you can make the breakpoints conditional: +

+
+break g_object_ref if _object == 0xcafebabe
+break g_object_unref if _object == 0xcafebabe
+      
+

+

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/tools-vala.html b/docs/reference/gobject/html/tools-vala.html new file mode 100644 index 0000000..05508cf --- /dev/null +++ b/docs/reference/gobject/html/tools-vala.html @@ -0,0 +1,42 @@ + + + + +Vala: GObject Reference Manual + + + + + + + + + + + + + + + + +
+

+Vala

+

+ From the Vala + homepage itself: “Vala is a new programming language + that aims to bring modern programming language features to GNOME + developers without imposing any additional runtime requirements + and without using a different ABI compared to applications and + libraries written in C.” +

+

+ The syntax of Vala is similar to C#. The available compiler + translates Vala into GObject C code. It can also compile + non-GObject C, using plain C API. +

+
+ + + \ No newline at end of file diff --git a/docs/reference/gobject/html/up-insensitive.png b/docs/reference/gobject/html/up-insensitive.png new file mode 100644 index 0000000000000000000000000000000000000000..f40498606db349a7321cf6b470523e836ee7ac2e GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefG~@Ex#w@70gTL^E{-7zACwHGSRJaopUzr*FR_KPpkxheNzTDP+%{a~ox zRb6~e-_l%s#;V|Jw-)bO$G_X=4F`Y7SBoCzyjAZQ8BPW>ywAP8?pbBsZ|wt?+h6S6&uqY)kkMnwQQEd@7k`4t@sCCO z@7MoiEI4Q_#IB70vhu7Ab+>SXLxu@LWH Qzz|~aboFyt=akR{08E^fv;Y7A literal 0 HcmV?d00001 diff --git a/docs/reference/gobject/html/up.png b/docs/reference/gobject/html/up.png new file mode 100644 index 0000000000000000000000000000000000000000..80b4b37e997d69b2e128bc3090bc447ccb74bbe9 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b zKpodXn9)gNb_Gz7y~NYkmHjTefRFevZLys@4W>+6GUE!tU04Ii{0w_tkMIDB?rA5 zttYTN - Objects which inherit from GObject are allowed to override this - constructor class method: they should however chain to their parent - constructor method before doing so: - - GObject *(* constructor) (GType gtype, - guint n_properties, - GObjectConstructParam *properties); - + Once all construction operations have been completed and constructor + properties set, the constructed class method is called. - The example below shows how MamanBar overrides the parent's constructor: + Objects which inherit from GObject are allowed to override this + constructed class method. + The example below shows how ViewerFile overrides the parent's construction process: -#define MAMAN_TYPE_BAR (maman_bar_get_type ()) -#define MAMAN_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAMAN_TYPE_BAR, MamanBar)) -#define MAMAN_IS_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAMAN_TYPE_BAR)) -#define MAMAN_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MAMAN_TYPE_BAR, MamanBarClass)) -#define MAMAN_IS_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MAMAN_TYPE_BAR)) -#define MAMAN_BAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MAMAN_TYPE_BAR, MamanBarClass)) - -typedef struct _MamanBar MamanBar; -typedef struct _MamanBarClass MamanBarClass; +#define VIEWER_TYPE_FILE viewer_file_get_type () +G_DECLARE_FINAL_TYPE (ViewerFile, viewer_file, VIEWER, FILE, GObject) -struct _MamanBar +struct _ViewerFile { GObject parent_instance; /* instance members */ }; -struct _MamanBarClass -{ - GObjectClass parent_class; - - /* class members */ -}; +/* will create viewer_file_get_type and set viewer_file_parent_class */ +G_DEFINE_TYPE (ViewerFile, viewer_file, G_TYPE_OBJECT) -/* will create maman_bar_get_type and set maman_bar_parent_class */ -G_DEFINE_TYPE (MamanBar, maman_bar, G_TYPE_OBJECT); - -static GObject * -maman_bar_constructor (GType gtype, - guint n_properties, - GObjectConstructParam *properties) +static void +viewer_file_constructed (GObject *obj) { - GObject *obj; - - { - /* Always chain up to the parent constructor */ - obj = G_OBJECT_CLASS (maman_bar_parent_class)->constructor (gtype, n_properties, properties); - } - /* update the object state depending on constructor properties */ - return obj; + /* Always chain up to the parent constructed function to complete object + * initialisation. */ + G_OBJECT_CLASS (viewer_file_parent_class)->constructed (obj); } static void -maman_bar_class_init (MamanBarClass *klass) +viewer_file_class_init (ViewerFileClass *klass) { - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); - gobject_class->constructor = maman_bar_constructor; + object_class->constructed = viewer_file_constructed; } static void -maman_bar_init (MamanBar *self) +viewer_file_init (ViewerFile *self) { /* initialize the object */ } - If the user instantiates an object MamanBar with: + If the user instantiates an object ViewerFile with: -MamanBar *bar = g_object_new (MAMAN_TYPE_BAR, NULL); +ViewerFile *file = g_object_new (VIEWER_TYPE_FILE, NULL); If this is the first instantiation of such an object, the - maman_bar_class_init function will be invoked - after any maman_bar_base_class_init function. + viewer_file_class_init function will be invoked + after any viewer_file_base_class_init function. This will make sure the class structure of this new object is - correctly initialized. Here, maman_bar_class_init + correctly initialized. Here, viewer_file_class_init is expected to override the object's class methods and setup the class' own methods. In the example above, the constructor method is the only overridden method: it is set to - maman_bar_constructor. + viewer_file_constructor. Once g_object_new has obtained a reference to an initialized class structure, it invokes its constructor method to create an instance of the new - object. Since it has just been overridden by maman_bar_class_init - to maman_bar_constructor, the latter is called and, because it - was implemented correctly, it chains up to its parent's constructor. In + object, if the constructor has been overridden in viewer_file_class_init. + Overridden constructors must chain up to their parent’s constructor. In order to find the parent class and chain up to the parent class - constructor, we can use the maman_bar_parent_class + constructor, we can use the viewer_file_parent_class pointer that has been set up for us by the - G_DEFINE_TYPE macro. + G_DEFINE_TYPE + macro. Finally, at one point or another, g_object_constructor is invoked - by the last constructor in the chain. This function allocates the object's instance' buffer + by the last constructor in the chain. This function allocates the object's instance buffer through g_type_create_instance - which means that the instance_init function is invoked at this point if one - was registered. After instance_init returns, the object is fully initialized and should be - ready to answer any user-request. When g_type_create_instance + which means that the instance_init function is invoked at this point if one + was registered. After instance_init returns, the object is fully initialized and should be + ready to have its methods called by the user. When + g_type_create_instance returns, g_object_constructor sets the construction properties (i.e. the properties which were given to g_object_new) and returns - to the user's constructor which is then allowed to do useful instance initialization... + to the user's constructor. @@ -177,7 +153,7 @@ MamanBar *bar = g_object_new (MAMAN_TYPE_BAR, NULL); Invocation time - Function Invoked + Function invoked Function's parameters Remark @@ -185,17 +161,14 @@ MamanBar *bar = g_object_new (MAMAN_TYPE_BAR, NULL); First call to g_object_new for target type - target type's base_init function + target type's base_init function On the inheritance tree of classes from fundamental type to target type. - base_init is invoked once for each class structure. - - I have no real idea on how this can be used. If you have a good real-life - example of how a class' base_init can be used, please, let me know. - + base_init is invoked once for each class structure. + Never used in practice. Unlikely you will need it. - target type's class_init function + target type's class_init function On target type's class structure Here, you should make sure to initialize or override class methods (that is, @@ -205,39 +178,49 @@ MamanBar *bar = g_object_new (MAMAN_TYPE_BAR, NULL); - interface' base_init function - On interface' vtable + interface's base_init function + On interface's vtable - interface' interface_init function - On interface' vtable + interface's interface_init function + On interface's vtable - Each call to g_object_new for target type - target type's class constructor method: GObjectClass->constructor + Each call to g_object_new for target type + target type's class constructor method: GObjectClass->constructor On object's instance - If you need to complete the object initialization after all the construction properties - are set, override the constructor method and make sure to chain up to the object's + If you need to handle construct properties in a custom way, or implement a singleton class, override the constructor + method and make sure to chain up to the object's parent class before doing your own initialization. In doubt, do not override the constructor method. - type's instance_init function + type's instance_init function On the inheritance tree of classes from fundamental type to target type. - the instance_init provided for each type is invoked once for each instance + the instance_init provided for each type is invoked once for each instance structure. - Provide an instance_init function to initialize your object before its construction + Provide an instance_init function to initialize your object before its construction properties are set. This is the preferred way to initialize a GObject instance. This function is equivalent to C++ constructors. + + + target type's class constructed method: GObjectClass->constructed + On object's instance + + If you need to perform object initialization steps after all construct properties have been set. + This is the final step in the object initialization process, and is only called if the constructor + method returned a new object instance (rather than, for example, an existing singleton). + + @@ -246,12 +229,12 @@ MamanBar *bar = g_object_new (MAMAN_TYPE_BAR, NULL); Readers should feel concerned about one little twist in the order in which functions are invoked: while, technically, the class' constructor - method is called before the GType's instance_init - function (since g_type_create_instance which calls instance_init is called by + method is called before the GType's instance_init + function (since g_type_create_instance which calls instance_init is called by g_object_constructor which is the top-level class constructor method and to which users are expected to chain to), the user's code which runs in a user-provided constructor will always - run after GType's instance_init function since the + run after GType's instance_init function since the user-provided constructor must (you've been warned) chain up before doing anything useful. @@ -266,34 +249,6 @@ MamanBar *bar = g_object_new (MAMAN_TYPE_BAR, NULL); which can be integrated in applications which use or require different memory management models (such as garbage collection). The methods which are used to manipulate this reference count are described below. - -/* - Refcounting -*/ -gpointer g_object_ref (gpointer object); -void g_object_unref (gpointer object); - -/* - * Weak References - */ -typedef void (*GWeakNotify) (gpointer data, - GObject *where_the_object_was); - -void g_object_weak_ref (GObject *object, - GWeakNotify notify, - gpointer data); -void g_object_weak_unref (GObject *object, - GWeakNotify notify, - gpointer data); -void g_object_add_weak_pointer (GObject *object, - gpointer *weak_pointer_location); -void g_object_remove_weak_pointer (GObject *object, - gpointer *weak_pointer_location); -/* - * Cycle handling - */ -void g_object_run_dispose (GObject *object); - @@ -301,8 +256,14 @@ void g_object_run_dispose (GObject *object); The functions g_object_ref/g_object_unref respectively - increase and decrease the reference count.These functions are thread-safe as of GLib 2.8. - The reference count is, unsurprisingly, initialized to one by + increase and decrease the reference count. These functions are + thread-safe. + g_clear_object + is a convenience wrapper around g_object_unref + which also clears the pointer passed to it. + + + The reference count is initialized to one by g_object_new which means that the caller is currently the sole owner of the newly-created reference. When the reference count reaches zero, that is, @@ -333,7 +294,7 @@ void g_object_run_dispose (GObject *object); Invocation time - Function Invoked + Function invoked Function's parameters Remark @@ -374,23 +335,23 @@ void g_object_run_dispose (GObject *object); Last call to g_object_unref for the last instance of target type - interface' interface_finalize function - On interface' vtable + interface's interface_finalize function + On interface's vtable Never used in practice. Unlikely you will need it. - interface' base_finalize function - On interface' vtable + interface's base_finalize function + On interface's vtable Never used in practice. Unlikely you will need it. - target type's class_finalize function + target type's class_finalize function On target type's class structure Never used in practice. Unlikely you will need it. @@ -398,9 +359,9 @@ void g_object_run_dispose (GObject *object); - type's base_finalize function + type's base_finalize function On the inheritance tree of classes from fundamental type to target type. - base_init is invoked once for each class structure. + base_init is invoked once for each class structure. Never used in practice. Unlikely you will need it. @@ -414,7 +375,7 @@ void g_object_run_dispose (GObject *object); Weak References - Weak References are used to monitor object finalization: + Weak references are used to monitor object finalization: g_object_weak_ref adds a monitoring callback which does not hold a reference to the object but which is invoked when the object runs its dispose method. As such, each weak ref can be invoked more than once upon @@ -428,29 +389,28 @@ void g_object_run_dispose (GObject *object); - Weak References are also used to implement g_object_add_weak_pointer + Weak references are also used to implement g_object_add_weak_pointer and g_object_remove_weak_pointer. These functions add a weak reference to the object they are applied to which makes sure to nullify the pointer given by the user when object is finalized. - + + + Similarly, GWeakRef can be + used to implement weak references if thread safety is required. + Reference counts and cycles - - - Note: the following section was inspired by James Henstridge. I guess this means that - all praise and all curses will be directly forwarded to him. - - + GObject's memory management model was designed to be easily integrated in existing code using garbage collection. This is why the destruction process is split in two phases: the first phase, executed in the dispose handler is supposed to release all references to other member objects. The second phase, executed by the finalize handler is supposed to complete the object's destruction process. Object methods should be able to run - without program error (that is, without segfault :) in-between the two phases. + without program error in-between the two phases. @@ -462,8 +422,8 @@ void g_object_run_dispose (GObject *object); - Attentive readers might now have understood one of the rules about the dispose handler - we stated a bit sooner: the dispose handler can be invoked multiple times. Let's say we + This explains one of the rules about the dispose handler stated earlier: + the dispose handler can be invoked multiple times. Let's say we have a reference count cycle: object A references B which itself references object A. Let's say we have detected the cycle and we want to destroy the two objects. One way to do this would be to invoke g_object_run_dispose on one of the @@ -480,10 +440,9 @@ void g_object_run_dispose (GObject *object); - The above example, which might seem a bit contrived can really happen if your - GObject's are being handled by language bindings. I would thus suggest the rules stated above - for object destruction are closely followed. Otherwise, Bad Bad Things - will happen. + The above example, which might seem a bit contrived, can really happen if + GObjects are being handled by language bindings — hence the rules for + object destruction should be closely followed. @@ -494,14 +453,13 @@ void g_object_run_dispose (GObject *object); One of GObject's nice features is its generic get/set mechanism for object properties. When an object - is instantiated, the object's class_init handler should be used to register - the object's properties with g_object_class_install_properties - (implemented in gobject.c). + is instantiated, the object's class_init handler should be used to register + the object's properties with g_object_class_install_properties. The best way to understand how object properties work is by looking at a real example - on how it is used: + of how it is used: /************************************************/ /* Implementation */ @@ -509,35 +467,32 @@ void g_object_run_dispose (GObject *object); enum { - PROP_0, - - PROP_MAMAN_NAME, - PROP_PAPA_NUMBER, - + PROP_FILENAME = 1, + PROP_ZOOM_LEVEL, N_PROPERTIES }; static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; static void -maman_bar_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) +viewer_file_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) { - MamanBar *self = MAMAN_BAR (object); + ViewerFile *self = VIEWER_FILE (object); switch (property_id) { - case PROP_MAMAN_NAME: - g_free (self->priv->name); - self->priv->name = g_value_dup_string (value); - g_print ("maman: %s\n", self->priv->name); + case PROP_FILENAME: + g_free (self->priv->filename); + self->priv->filename = g_value_dup_string (value); + g_print ("filename: %s\n", self->priv->filename); break; - case PROP_PAPA_NUMBER: - self->priv->papa_number = g_value_get_uchar (value); - g_print ("papa: %u\n", self->priv->papa_number); + case PROP_ZOOM_LEVEL: + self->priv->zoom_level = g_value_get_uint (value); + g_print ("zoom level: %u\n", self->priv->zoom_level); break; default: @@ -548,21 +503,21 @@ maman_bar_set_property (GObject *object, } static void -maman_bar_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) +viewer_file_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) { - MamanBar *self = MAMAN_BAR (object); + ViewerFile *self = VIEWER_FILE (object); switch (property_id) { - case PROP_MAMAN_NAME: - g_value_set_string (value, self->priv->name); + case PROP_FILENAME: + g_value_set_string (value, self->priv->filename); break; - case PROP_PAPA_NUMBER: - g_value_set_uchar (value, self->priv->papa_number); + case PROP_ZOOM_LEVEL: + g_value_set_uint (value, self->priv->zoom_level); break; default: @@ -573,30 +528,30 @@ maman_bar_get_property (GObject *object, } static void -maman_bar_class_init (MamanBarClass *klass) +viewer_file_class_init (ViewerFileClass *klass) { - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - - gobject_class->set_property = maman_bar_set_property; - gobject_class->get_property = maman_bar_get_property; - - obj_properties[PROP_NAME] = - g_param_spec_string ("maman-name", - "Maman construct prop", - "Set maman's name", - "no-name-set" /* default value */, - G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE); - - obj_properties[PROP_NUMBER] = - g_param_spec_uchar ("papa-number", - "Number of current Papa", - "Set/Get papa's number", - 0 /* minimum value */, - 10 /* maximum value */, - 2 /* default value */, - G_PARAM_READWRITE); - - g_object_class_install_properties (gobject_class, + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->set_property = viewer_file_set_property; + object_class->get_property = viewer_file_get_property; + + obj_properties[PROP_FILENAME] = + g_param_spec_string ("filename", + "Filename", + "Name of the file to load and display from.", + NULL /* default value */, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); + + obj_properties[PROP_ZOOM_LEVEL] = + g_param_spec_uint ("zoom-level", + "Zoom level", + "Zoom level to view the file at.", + 0 /* minimum value */, + 10 /* maximum value */, + 2 /* default value */, + G_PARAM_READWRITE)); + + g_object_class_install_properties (object_class, N_PROPERTIES, obj_properties); } @@ -605,32 +560,33 @@ maman_bar_class_init (MamanBarClass *klass) /* Use */ /************************************************/ -GObject *bar; +ViewerFile *file; GValue val = G_VALUE_INIT; -bar = g_object_new (MAMAN_TYPE_SUBBAR, NULL); +file = g_object_new (VIEWER_TYPE_FILE, NULL); -g_value_init (&val, G_TYPE_CHAR); +g_value_init (&val, G_TYPE_UINT); g_value_set_char (&val, 11); -g_object_set_property (G_OBJECT (bar), "papa-number", &val); +g_object_set_property (G_OBJECT (file), "zoom-level", &val); g_value_unset (&val); - The client code just above looks simple but a lot of things happen under the hood: + The client code above looks simple but a lot of things happen under the hood: g_object_set_property first ensures a property - with this name was registered in bar's class_init handler. If so it walks the class hierarchy, - from bottom, most derived type, to top, fundamental type to find the class - which registered that property. It then tries to convert the user-provided GValue - into a GValue whose type is that of the associated property. + with this name was registered in file's class_init handler. If so it walks the class hierarchy, + from bottom-most most-derived type, to top-most fundamental type to find the class + which registered that property. It then tries to convert the user-provided + GValue + into a GValue whose type is that of the associated property. - + - If the user provides a signed char GValue, as is shown - here, and if the object's property was registered as an unsigned int, + If the user provides a signed char GValue, as is shown + here, and if the object's property was registered as an unsigned int, g_value_transform will try to transform the input signed char into an unsigned int. Of course, the success of the transformation depends on the availability of the required transform function. In practice, there will almost always be a transformation @@ -648,7 +604,7 @@ g_value_unset (&val); data stored in the GValue matches the characteristics specified by the property's GParamSpec. Here, the GParamSpec we - provided in class_init has a validation function which makes sure that the GValue + provided in class_init has a validation function which makes sure that the GValue contains a value which respects the minimum and maximum bounds of the GParamSpec. In the example above, the client's GValue does not respect these constraints (it is set to 11, while the maximum is 10). As such, the @@ -657,14 +613,15 @@ g_value_unset (&val); If the user's GValue had been set to a valid value, g_object_set_property - would have proceeded with calling the object's set_property class method. Here, since our - implementation of Foo did override this method, the code path would jump to - foo_set_property after having retrieved from the + would have proceeded with calling the object's + set_property class method. Here, since our + implementation of ViewerFile did override this method, execution would jump to + viewer_file_set_property after having retrieved from the GParamSpec the param_id It should be noted that the param_id used here need only to uniquely identify each - GParamSpec within the FooClass such that the switch + GParamSpec within the ViewerFileClass such that the switch used in the set and get methods actually works. Of course, this locally-unique integer is purely an optimization: it would have been possible to use a set of if (strcmp (a, b) == 0) {} else if (strcmp (a, b) == 0) {} statements. @@ -675,7 +632,8 @@ g_value_unset (&val); - Once the property has been set by the object's set_property class method, the code path + Once the property has been set by the object's + set_property class method, execution returns to g_object_set_property which makes sure that the "notify" signal is emitted on the object's instance with the changed property as parameter unless notifications were frozen by g_object_freeze_notify. @@ -683,11 +641,14 @@ g_value_unset (&val); g_object_thaw_notify can be used to re-enable notification of - property modifications through the "notify" signal. It is important to remember that + property modifications through the + “notify” signal. It is important to remember that even if properties are changed while property change notification is frozen, the "notify" signal will be emitted once for each of these changed properties as soon as the property - change notification is thawed: no property change is lost for the "notify" signal. Signal - can only be delayed by the notification freezing mechanism. + change notification is thawed: no property change is lost for the "notify" + signal, although multiple notifications for a single property are + compressed. Signals can only be delayed by the notification freezing + mechanism. @@ -703,14 +664,14 @@ g_value_unset (&val); It is interesting to note that the g_object_set and - g_object_set_valist (vararg version) functions can be used to set + g_object_set_valist (variadic version) functions can be used to set multiple properties at once. The client code shown above can then be re-written as: -MamanBar *foo; -foo = /* */; -g_object_set (G_OBJECT (foo), - "papa-number", 2, - "maman-name", "test", +ViewerFile *file; +file = /* */; +g_object_set (G_OBJECT (file), + "zoom-level", 6, + "filename", "~/some-file.txt", NULL); This saves us from managing the GValues that we were needing to handle when using @@ -719,25 +680,28 @@ g_object_set (G_OBJECT (foo), - Of course, the _get versions are also available: g_object_get - and g_object_get_valist (vararg version) can be used to get numerous + Equivalent _get versions are also available: + g_object_get + and g_object_get_valist (variadic version) can be used to get numerous properties at once. - These high level functions have one drawback - they don't provide a return result. + These high level functions have one drawback — they don't provide a return value. One should pay attention to the argument types and ranges when using them. - A known source of errors is to e.g. pass a gfloat instead of a gdouble and thus - shifting all subsequent parameters by four bytes. Also forgetting the terminating - NULL will lead to unexpected behaviour. + A known source of errors is to pass a different type from what the + property expects; for instance, passing an integer when the property + expects a floating point value and thus shifting all subsequent parameters + by some number of bytes. Also forgetting the terminating + NULL will lead to undefined behaviour. - Really attentive readers now understand how g_object_new, + This explains how g_object_new, g_object_newv and g_object_new_valist work: they parse the user-provided variable number of parameters and invoke g_object_set on the parameters only after the object has been successfully constructed. - Of course, the "notify" signal will be emitted for each property set. + The "notify" signal will be emitted for each property set. diff --git a/docs/reference/gobject/tut_gsignal.xml b/docs/reference/gobject/tut_gsignal.xml index 0dd27b7..6a1420a 100644 --- a/docs/reference/gobject/tut_gsignal.xml +++ b/docs/reference/gobject/tut_gsignal.xml @@ -16,11 +16,11 @@ a function pointer (the callback itself) whose prototype looks like: -return_type function_callback (... , gpointer user_data); +return_type function_callback (… , gpointer user_data); - the user_data pointer which is passed to the callback upon invocation of the closure + the user_data pointer which is passed to the callback upon invocation of the closure a function pointer which represents the destructor of the closure: whenever the @@ -32,7 +32,7 @@ return_type function_callback (... , gpointer user_data); The GClosure structure represents the common functionality of all - closure implementations: there exists a different Closure implementation for + closure implementations: there exists a different closure implementation for each separate runtime which wants to use the GObject type system. In practice, closures sit at the boundary of language runtimes: if you are @@ -79,32 +79,27 @@ return_type function_callback (... , gpointer user_data); If you are using C or C++ to connect a callback to a given event, you will either use simple GCClosures which have a pretty minimal API or the even simpler g_signal_connect - functions (which will be presented a bit later :). - -GClosure *g_cclosure_new (GCallback callback_func, - gpointer user_data, - GClosureNotify destroy_data); -GClosure *g_cclosure_new_swap (GCallback callback_func, - gpointer user_data, - GClosureNotify destroy_data); -GClosure *g_signal_type_cclosure_new (GType itype, - guint struct_offset); - + functions (which will be presented a bit later). g_cclosure_new will create a new closure which can invoke the - user-provided callback_func with the user-provided user_data as last parameter. When the closure - is finalized (second stage of the destruction process), it will invoke the destroy_data function - if the user has supplied one. + user-provided callback_func with the user-provided + user_data as its last parameter. When the closure + is finalized (second stage of the destruction process), it will invoke + the destroy_data function if the user has + supplied one. g_cclosure_new_swap will create a new closure which can invoke the - user-provided callback_func with the user-provided user_data as first parameter (instead of being the + user-provided callback_func with the + user-provided user_data as its first parameter + (instead of being the last parameter as with g_cclosure_new). When the closure - is finalized (second stage of the destruction process), it will invoke the destroy_data - function if the user has supplied one. + is finalized (second stage of the destruction process), it will invoke + the destroy_data function if the user has + supplied one. @@ -124,10 +119,20 @@ GClosure *g_signal_type_cclosure_new (GType itype, the user-supplied C function with this new parameter list, get the return value of the function, transform it into a GValue and return this GValue to the marshaller caller. - + - The following code implements a simple marshaller in C for a C function which takes an - integer as first parameter and returns void. + A generic C closure marshaller is available as + g_cclosure_marshal_generic + which implements marshalling for all function types using libffi. Custom + marshallers for different types are not needed apart from performance + critical code where the libffi-based marshaller may be too slow. + + + + An example of a custom marshaller is given below, illustrating how + GValues can be converted to a C function call. The + marshaller is for a C function which takes an integer as its first + parameter and returns void. g_cclosure_marshal_VOID__INT (GClosure *closure, GValue *return_value, @@ -158,13 +163,11 @@ g_cclosure_marshal_VOID__INT (GClosure *closure, - Of course, there exist other kinds of marshallers. For example, James Henstridge - wrote a generic Python marshaller which is used by all Python closures (a Python closure - is used to have Python-based callback be invoked by the closure invocation process). - This Python marshaller transforms the input GValue list representing the function - parameters into a Python tuple which is the equivalent structure in Python (you can - look in pyg_closure_marshal in pygtype.c - in the pygobject module in the GNOME source code repository). + There exist other kinds of marshallers, for example there is a generic + Python marshaller which is used by all Python closures (a Python closure + is used to invoke a callback written in Python). This Python marshaller + transforms the input GValue list representing the function parameters + into a Python tuple which is the equivalent structure in Python. @@ -177,8 +180,8 @@ g_cclosure_marshal_VOID__INT (GClosure *closure, GObject's signals have nothing to do with standard UNIX signals: they connect arbitrary application-specific events with any number of listeners. For example, in GTK+, every user event (keystroke or mouse move) is received - from the X server and generates a GTK+ event under the form of a signal emission - on a given object instance. + from the windowing system and generates a GTK+ event in the form of a signal emission + on the widget object instance. @@ -195,7 +198,7 @@ g_cclosure_marshal_VOID__INT (GClosure *closure, connected to this signal on this type instance will be invoked. All the closures connected to such a signal represent callbacks whose signature looks like: -return_type function_callback (gpointer instance, ... , gpointer user_data); +return_type function_callback (gpointer instance, …, gpointer user_data); @@ -221,43 +224,47 @@ guint g_signal_newv (const gchar *signal_name, simple: - signal_name: is a string which can be used to uniquely identify a given signal. + signal_name: is a string which can be used to uniquely identify a given signal. - itype: is the instance type on which this signal can be emitted. + itype: is the instance type on which this signal can be emitted. - signal_flags: partly defines the order in which closures which were connected to the + signal_flags: partly defines the order in which closures which were connected to the signal are invoked. - class_closure: this is the default closure for the signal: if it is not NULL upon + class_closure: this is the default closure for the signal: if it is not NULL upon the signal emission, it will be invoked upon this emission of the signal. The moment where this closure is invoked compared to other closures connected to that signal depends partly on the signal_flags. - accumulator: this is a function pointer which is invoked after each closure + accumulator: this is a function pointer which is invoked after each closure has been invoked. If it returns FALSE, signal emission is stopped. If it returns TRUE, signal emission proceeds normally. It is also used to compute the return value of the signal based on the return value of all the invoked closures. + For example, an accumulator could ignore + NULL returns from closures; or it + could build a list of the values returned by the + closures. - accumulator_data: this pointer will be passed down to each invocation of the + accumulator_data: this pointer will be passed down to each invocation of the accumulator during emission. - c_marshaller: this is the default C marshaller for any closure which is connected to + c_marshaller: this is the default C marshaller for any closure which is connected to this signal. - return_type: this is the type of the return value of the signal. + return_type: this is the type of the return value of the signal. - n_params: this is the number of parameters this signal takes. + n_params: this is the number of parameters this signal takes. - param_types: this is an array of GTypes which indicate the type of each parameter + param_types: this is an array of GTypes which indicate the type of each parameter of the signal. The length of this array is indicated by n_params. @@ -279,12 +286,12 @@ guint g_signal_newv (const gchar *signal_name, You can register a class closure at signal registration: this is a - system-wide operation. i.e.: the class_closure will be invoked during each emission - of a given signal on all the instances of the type which supports that signal. + system-wide operation. i.e.: the class closure will be invoked during each emission + of a given signal on any of the instances of the type which supports that signal. You can use g_signal_override_class_closure which - overrides the class_closure of a given type. It is possible to call this function + overrides the class closure of a given type. It is possible to call this function only on a derived type of the type on which the signal was registered. This function is of use only to language bindings. @@ -318,101 +325,90 @@ void g_signal_emitv (const GValue *instance_and_params, - The instance_and_params array of GValues contains the list of input + The instance_and_params array of GValues contains the list of input parameters to the signal. The first element of the array is the instance pointer on which to invoke the signal. The following elements of the array contain the list of parameters to the signal. - signal_id identifies the signal to invoke. + signal_id identifies the signal to invoke. - detail identifies the specific detail of the signal to invoke. A detail is a kind of + detail identifies the specific detail of the signal to invoke. A detail is a kind of magic token/argument which is passed around during signal emission and which is used by closures connected to the signal to filter out unwanted signal emissions. In most cases, you can safely set this value to zero. See for more details about this parameter. - return_value holds the return value of the last closure invoked during emission if + return_value holds the return value of the last closure invoked during emission if no accumulator was specified. If an accumulator was specified during signal creation, - this accumulator is used to calculate the return_value as a function of the return + this accumulator is used to calculate the return value as a function of the return values of all the closures invoked during emission. - - James (again!!) gives a few non-trivial examples of accumulators: - - For instance, you may have an accumulator that ignores NULL returns from - closures, and only accumulates the non-NULL ones. Another accumulator may try - to return the list of values returned by the closures. - - If no closure is invoked during - emission, the return_value is nonetheless initialized to zero/null. + emission, the return_value is nonetheless initialized to zero/null. - Internally, the GValue array is passed to the emission function proper, - signal_emit_unlocked_R (implemented in gsignal.c). Signal emission can be decomposed in 5 steps: - + - RUN_FIRST: if the G_SIGNAL_RUN_FIRST flag was used - during signal registration and if there exist a class_closure for this signal, - the class_closure is invoked. Jump to EMISSION_HOOK state. + RUN_FIRST: if the + G_SIGNAL_RUN_FIRST flag was used + during signal registration and if there exists a class closure for this signal, + the class closure is invoked. - EMISSION_HOOK: if any emission hook was added to - the signal, they are invoked from first to last added. Accumulate return values - and jump to HANDLER_RUN_FIRST state. + EMISSION_HOOK: if any emission hook was added to + the signal, they are invoked from first to last added. Accumulate return values. - HANDLER_RUN_FIRST: if any closure were connected + HANDLER_RUN_FIRST: if any closure were connected with the g_signal_connect family of functions, and if they are not blocked (with the g_signal_handler_block family of functions) they are run here, from first to last connected. - Jump to RUN_LAST state. - RUN_LAST: if the G_SIGNAL_RUN_LAST - flag was set during registration and if a class_closure - was set, it is invoked here. Jump to - HANDLER_RUN_LAST state. + RUN_LAST: if the G_SIGNAL_RUN_LAST + flag was set during registration and if a class closure + was set, it is invoked here. - HANDLER_RUN_LAST: if any closure were connected + HANDLER_RUN_LAST: if any closure were connected with the g_signal_connect_after family of - functions, if they were not invoked during HANDLER_RUN_FIRST and if they + functions, if they were not invoked during HANDLER_RUN_FIRST and if they are not blocked, they are run here, from first to last connected. - Jump to RUN_CLEANUP state. - RUN_CLEANUP: if the G_SIGNAL_RUN_CLEANUP flag - was set during registration and if a class_closure was set, + RUN_CLEANUP: if the G_SIGNAL_RUN_CLEANUP flag + was set during registration and if a class closure was set, it is invoked here. Signal emission is completed here. - + - If, at any point during emission (except in RUN_CLEANUP state), one of the + If, at any point during emission (except in RUN_CLEANUP state), one of the closures or emission hook stops the signal emission with g_signal_stop_emission, - emission jumps to CLEANUP state. + emission jumps to RUN_CLEANUP state. If, at any point during emission, one of the closures or emission hook emits the same signal on the same instance, emission is restarted from - the RUN_FIRST state. + the RUN_FIRST state. The accumulator function is invoked in all states, after invocation - of each closure (except in EMISSION_HOOK and CLEANUP). It accumulates + of each closure (except in RUN_EMISSION_HOOK and + RUN_CLEANUP). It accumulates the closure return value into the signal return value and returns TRUE or - FALSE. If, at any point, it does not return TRUE, emission jumps to CLEANUP state. + FALSE. If, at any point, it does not return TRUE, emission jumps + to RUN_CLEANUP state. @@ -428,85 +424,60 @@ void g_signal_emitv (const GValue *instance_and_params, All the functions related to signal emission or signal connection have a parameter named the detail. Sometimes, this parameter is hidden by the API - but it is always there, under one form or another. + but it is always there, in one form or another. Of the three main connection functions, - only one has an explicit detail parameter as a GQuark + only one has an explicit detail parameter as a GQuark: + g_signal_connect_closure_by_id. A GQuark is an integer which uniquely represents a string. It is possible to transform back and forth between the integer and string representations with the functions g_quark_from_string and g_quark_to_string. - : - -gulong g_signal_connect_closure_by_id (gpointer instance, - guint signal_id, - GQuark detail, - GClosure *closure, - gboolean after); - - The two other functions hide the detail parameter in the signal name identification: - -gulong g_signal_connect_closure (gpointer instance, - const gchar *detailed_signal, - GClosure *closure, - gboolean after); -gulong g_signal_connect_data (gpointer instance, - const gchar *detailed_signal, - GCallback c_handler, - gpointer data, - GClosureNotify destroy_data, - GConnectFlags connect_flags); - - Their detailed_signal parameter is a string which identifies the name of the signal - to connect to. However, the format of this string is structured to look like - signal_name::detail_name. Connecting to the signal - named notify::cursor_position will actually connect to the signal - named notify with the cursor_position name. + + + + The two other functions, + g_signal_connect_closure and + g_signal_connect_data + hide the detail parameter in the signal name identification. + Their detailed_signal parameter is a + string which identifies the name of the signal to connect to. + The format of this string should match + signal_name::detail_name. For example, + connecting to the signal named + notify::cursor_position will actually + connect to the signal named notify with the + cursor_position detail. Internally, the detail string is transformed to a GQuark if it is present. - Of the four main signal emission functions, three have an explicit detail parameter as a - GQuark again: - -void g_signal_emitv (const GValue *instance_and_params, - guint signal_id, - GQuark detail, - GValue *return_value); -void g_signal_emit_valist (gpointer instance, - guint signal_id, - GQuark detail, - va_list var_args); -void g_signal_emit (gpointer instance, - guint signal_id, - GQuark detail, - ...); - - The fourth function hides it in its signal name parameter: - -void g_signal_emit_by_name (gpointer instance, - const gchar *detailed_signal, - ...); - - The format of the detailed_signal parameter is exactly the same as the format used by - the g_signal_connect functions: signal_name::detail_name. + Of the four main signal emission functions, one hides it in its + signal name parameter: + g_signal_connect. + The other three have an explicit detail parameter as a + GQuark again: + g_signal_emit, + g_signal_emitv and + g_signal_emit_valist. If a detail is provided by the user to the emission function, it is used during emission to match against the closures which also provide a detail. - If the closures' detail does not match the detail provided by the user, they will not be invoked - (even though they are connected to a signal which is being emitted). + If a closure's detail does not match the detail provided by the user, it + will not be invoked (even though it is connected to a signal which is + being emitted). This completely optional filtering mechanism is mainly used as an optimization for signals which are often emitted for many different reasons: the clients can filter out which events they are interested in before the closure's marshalling code runs. For example, this is used extensively - by the notify signal of GObject: whenever a property is modified on a GObject, + by the notify signal of GObject: whenever a property is modified on a GObject, instead of just emitting the notify signal, GObject associates as a detail to this signal emission the name of the property modified. This allows clients who wish to be notified of changes to only one property to filter most events before receiving them. @@ -514,7 +485,7 @@ void g_signal_emit_by_name (gpointer instance, As a simple rule, users can and should set the detail parameter to zero: this will disable completely - this optional filtering. + this optional filtering for that signal. diff --git a/docs/reference/gobject/tut_gtype.xml b/docs/reference/gobject/tut_gtype.xml index f6d529e..df63c2d 100644 --- a/docs/reference/gobject/tut_gtype.xml +++ b/docs/reference/gobject/tut_gtype.xml @@ -45,23 +45,16 @@ GType g_type_register_fundamental (GType type_id, - g_type_register_static and + g_type_register_static, + g_type_register_dynamic and g_type_register_fundamental are the C functions, defined in gtype.h and implemented in gtype.c which you should use to register a new GType in the program's type system. It is not likely you will ever need to use - g_type_register_fundamental (you have to be Tim Janik - to do that) but in case you want to, the last chapter explains how to create + g_type_register_fundamental + but in case you want to, the last chapter explains how to create new fundamental types. - - - Please note that there exists another registration function: the - g_type_register_dynamic. We will not discuss this - function here since its use is very similar to the _static - version. - - @@ -80,8 +73,8 @@ GType g_type_register_fundamental (GType type_id, class size: the class_size field in GTypeInfo. - class initialization functions (C++ constructor): the base_init and - class_init fields in GTypeInfo. + class initialization functions (C++ constructor): the base_init and + class_init fields in GTypeInfo. class destruction functions (C++ destructor): the base_finalize and @@ -131,8 +124,7 @@ GType g_type_register_fundamental (GType type_id, The following code shows how you can copy around a 64 bit integer, as well as a GObject - instance pointer (sample code for this is located in the source tarball for this document in - sample/gtype/test.c): + instance pointer: static void test_int (void) { @@ -140,7 +132,7 @@ static void test_int (void) GValue b_value = G_VALUE_INIT; guint64 a, b; - a = 0xdeadbeaf; + a = 0xdeadbeef; g_value_init (&a_value, G_TYPE_UINT64); g_value_set_uint64 (&a_value, a); @@ -162,17 +154,17 @@ static void test_object (void) GObject *obj; GValue obj_vala = G_VALUE_INIT; GValue obj_valb = G_VALUE_INIT; - obj = g_object_new (MAMAN_TYPE_BAR, NULL); + obj = g_object_new (VIEWER_TYPE_FILE, NULL); - g_value_init (&obj_vala, MAMAN_TYPE_BAR); + g_value_init (&obj_vala, VIEWER_TYPE_FILE); g_value_set_object (&obj_vala, obj); g_value_init (&obj_valb, G_TYPE_OBJECT); /* g_value_copy's semantics for G_TYPE_OBJECT types is to copy the reference. - This function thus calls g_object_ref. - It is interesting to note that the assignment works here because - MAMAN_TYPE_BAR is a G_TYPE_OBJECT. + * This function thus calls g_object_ref. + * It is interesting to note that the assignment works here because + * VIEWER_TYPE_FILE is a G_TYPE_OBJECT. */ g_value_copy (&obj_vala, &obj_valb); @@ -188,39 +180,15 @@ static void test_object (void) - The value_table used to specify these assignment functions is defined in - gtype.h and is thoroughly described in the - API documentation provided with GObject (for once ;-) which is why we will - not detail its exact semantics. - -typedef struct _GTypeValueTable GTypeValueTable; -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); - gchar *collect_format; - gchar* (*collect_value) (GValue *value, - guint n_collect_values, - GTypeCValue *collect_values, - guint collect_flags); - gchar *lcopy_format; - gchar* (*lcopy_value) (const GValue *value, - guint n_collect_values, - GTypeCValue *collect_values, - guint collect_flags); -}; - + The value table used to specify these assignment functions is + documented in + GTypeValueTable. + + Interestingly, it is also very unlikely you will ever need to specify a value_table during type registration because these value_tables are inherited from the parent types for - non-fundamental types which means that unless you want to write a - fundamental type (not a great idea!), you will not need to provide - a new value_table since you will inherit the value_table structure - from your parent type. + non-fundamental types. @@ -233,79 +201,88 @@ struct _GTypeValueTable which are to be exported in a header file: + Type names (including object names) must be at least three + characters long and start with ‘a–z’, ‘A–Z’ or ‘_’. + + Use the object_method pattern for function names: to invoke - the method named foo on an instance of object type bar, call - bar_foo. + the method named save on an instance of object type file, call + file_save. Use prefixing to avoid namespace conflicts with other projects. - If your library (or application) is named Maman, - - - Maman is the French word for mum - or mother - nothing more and nothing less. - - - - prefix all your function names with maman_. - For example: maman_object_method. + If your library (or application) is named Viewer, + prefix all your function names with viewer_. + For example: viewer_object_method. Create a macro named PREFIX_TYPE_OBJECT which always returns the GType for the associated object type. For an object of type - Bar in a library prefixed by maman, - use: MAMAN_TYPE_BAR. - It is common although not a convention to implement this macro using either a global - static variable or a function named prefix_object_get_type. - We will follow the function pattern wherever possible in this document. - - Create a macro named PREFIX_OBJECT (obj) which - returns a pointer of type PrefixObject. This macro is used to enforce - static type safety by doing explicit casts wherever needed. It also enforces - dynamic type safety by doing runtime checks. It is possible to disable the dynamic - type checks in production builds (see building glib). - For example, we would create - MAMAN_BAR (obj) to keep the previous example. - - If the type is classed, create a macro named - PREFIX_OBJECT_CLASS (klass). This macro - is strictly equivalent to the previous casting macro: it does static casting with - dynamic type checking of class structures. It is expected to return a pointer - to a class structure of type PrefixObjectClass. Again, an example is: - MAMAN_BAR_CLASS. - - Create a macro named PREFIX_IS_BAR (obj): this macro is expected - to return a gboolean which indicates whether or not the input - object instance pointer of type BAR. - - If the type is classed, create a macro named - PREFIX_IS_OBJECT_CLASS (klass) which, as above, returns a boolean - if the input class pointer is a pointer to a class of type OBJECT. - - If the type is classed, create a macro named - PREFIX_OBJECT_GET_CLASS (obj) - which returns the class pointer associated to an instance of a given type. This macro - is used for static and dynamic type safety purposes (just like the previous casting - macros). + File in the Viewer namespace, + use: VIEWER_TYPE_FILE. + This macro is implemented using a function named + prefix_object_get_type; for example, viewer_file_get_type. + + + Use G_DECLARE_FINAL_TYPE + or G_DECLARE_DERIVABLE_TYPE + to define various other conventional macros for your object: + + + PREFIX_OBJECT (obj), which + returns a pointer of type PrefixObject. This macro is used to enforce + static type safety by doing explicit casts wherever needed. It also enforces + dynamic type safety by doing runtime checks. It is possible to disable the dynamic + type checks in production builds (see building GLib). + For example, we would create + VIEWER_FILE (obj) to keep the previous example. + + PREFIX_OBJECT_CLASS (klass), which + is strictly equivalent to the previous casting macro: it does static casting with + dynamic type checking of class structures. It is expected to return a pointer + to a class structure of type PrefixObjectClass. An example is: + VIEWER_FILE_CLASS. + + PREFIX_IS_OBJECT (obj), which + returns a gboolean which indicates whether the input + object instance pointer is non-NULL and of type OBJECT. + For example, VIEWER_IS_FILE. + + PREFIX_IS_OBJECT_CLASS (klass), which returns a boolean + if the input class pointer is a pointer to a class of type OBJECT. + For example, VIEWER_IS_FILE_CLASS. + + PREFIX_OBJECT_GET_CLASS (obj), + which returns the class pointer associated to an instance of a given type. This macro + is used for static and dynamic type safety purposes (just like the previous casting + macros). + For example, VIEWER_FILE_GET_CLASS. + + + The implementation of these macros is pretty straightforward: a number of simple-to-use macros are provided in gtype.h. For the example we used above, we would write the following trivial code to declare the macros: -#define MAMAN_TYPE_BAR (maman_bar_get_type ()) -#define MAMAN_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAMAN_TYPE_BAR, MamanBar)) -#define MAMAN_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MAMAN_TYPE_BAR, MamanBarClass)) -#define MAMAN_IS_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAMAN_TYPE_BAR)) -#define MAMAN_IS_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MAMAN_TYPE_BAR)) -#define MAMAN_BAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MAMAN_TYPE_BAR, MamanBarClass)) +#define VIEWER_TYPE_FILE viewer_file_get_type () +G_DECLARE_FINAL_TYPE (ViewerFile, viewer_file, VIEWER, FILE, GObject) + + + + + Unless your code has special requirements, you can use the + G_DEFINE_TYPE + macro to define a class: + +G_DEFINE_TYPE (ViewerFile, viewer_file, G_TYPE_OBJECT) - Stick to the naming klass as class is a registered c++ keyword. - The following code shows how to implement the maman_bar_get_type - function: + Otherwise, the viewer_file_get_type function must be + implemented manually: -GType maman_bar_get_type (void) +GType viewer_file_get_type (void) { static GType type = 0; if (type == 0) { @@ -313,7 +290,7 @@ GType maman_bar_get_type (void) /* You fill this structure. */ }; type = g_type_register_static (G_TYPE_OBJECT, - "MamanBarType", + "ViewerFile", &info, 0); } return type; @@ -321,15 +298,6 @@ GType maman_bar_get_type (void) - - If you have no special requirements you can use the - G_DEFINE_TYPE - macro to define a class: - -G_DEFINE_TYPE (MamanBar, maman_bar, G_TYPE_OBJECT) - - - @@ -338,11 +306,12 @@ G_DEFINE_TYPE (MamanBar, maman_bar, G_TYPE_OBJECT) A lot of types are not instantiable by the type system and do not have a class. Most of these types are fundamental trivial types such as gchar, - registered in _g_value_types_init (in gvaluetypes.c). + and are already registered by GLib. - To register such a type in the type system, you just need to fill the + In the rare case of needing to register such a type in the type + system, fill a GTypeInfo structure with zeros since these types are also most of the time fundamental: @@ -389,6 +358,12 @@ G_DEFINE_TYPE (MamanBar, maman_bar, G_TYPE_OBJECT) Instantiable classed types: objects + This section covers the theory behind objects. See + for the recommended way to define a + GObject. + + + Types which are registered with a class and are declared instantiable are what most closely resembles an object. Although GObjects (detailed in ) @@ -400,49 +375,56 @@ G_DEFINE_TYPE (MamanBar, maman_bar, G_TYPE_OBJECT) For example, the code below shows how you could register - such a fundamental object type in the type system: + such a fundamental object type in the type system (using none of the + GObject convenience API): typedef struct { GObject parent; + /* instance members */ - int field_a; -} MamanBar; + gchar *filename; +} ViewerFile; typedef struct { GObjectClass parent; + /* class members */ - void (*do_action_public_virtual) (MamanBar *self, guint8 i); + /* the first is public, pure and virtual */ + void (*open) (ViewerFile *self, + GError **error); - void (*do_action_public_pure_virtual) (MamanBar *self, guint8 i); -} MamanBarClass; + /* the second is public and virtual */ + void (*close) (ViewerFile *self, + GError **error); +} ViewerFileClass; -#define MAMAN_TYPE_BAR (maman_bar_get_type ()) +#define VIEWER_TYPE_FILE (viewer_file_get_type ()) GType -maman_bar_get_type (void) +viewer_file_get_type (void) { static GType type = 0; if (type == 0) { const GTypeInfo info = { - sizeof (MamanBarClass), + sizeof (ViewerFileClass), NULL, /* base_init */ NULL, /* base_finalize */ - (GClassInitFunc) foo_class_init, + (GClassInitFunc) viewer_file_class_init, NULL, /* class_finalize */ NULL, /* class_data */ - sizeof (MamanBar), + sizeof (ViewerFile), 0, /* n_preallocs */ (GInstanceInitFunc) NULL /* instance_init */ }; type = g_type_register_static (G_TYPE_OBJECT, - "BarType", + "ViewerFile", &info, 0); } return type; } - Upon the first call to maman_bar_get_type, the type named - BarType will be registered in the type system as inheriting + Upon the first call to viewer_file_get_type, the type named + ViewerFile will be registered in the type system as inheriting from the type G_TYPE_OBJECT. @@ -497,7 +479,8 @@ typedef struct { The C standard mandates that the first field of a C structure is stored starting in the first byte of the buffer used to hold the structure's fields in memory. This means that the first field of an instance of an object B is A's first field - which in turn is GTypeInstance's first field which in turn is g_class, a pointer + which in turn is GTypeInstance's first field which in + turn is g_class, a pointer to B's class structure. @@ -511,7 +494,7 @@ b->parent.parent.g_class->g_type or, more quickly: B *b; -((GTypeInstance*)b)->g_class->g_type +((GTypeInstance *) b)->g_class->g_type @@ -520,14 +503,11 @@ B *b; instantiation of these types can be done with - g_type_create_instance: - -GTypeInstance* g_type_create_instance (GType type); -void g_type_free_instance (GTypeInstance *instance); - - g_type_create_instance will look up the type information - structure associated to the type requested. Then, the instance size and instantiation - policy (if the n_preallocs field is set to a non-zero value, the type system allocates + g_type_create_instance, + which will look up the type information + structure associated with the type requested. Then, the instance size and instantiation + policy (if the n_preallocs field is set + to a non-zero value, the type system allocates the object's instance structures in chunks rather than mallocing for every instance) declared by the user are used to get a buffer to hold the object's instance structure. @@ -539,8 +519,9 @@ void g_type_free_instance (GTypeInstance *instance); class structure (ie: the embedded parent class structure) is initialized by copying the contents from the class structure of the parent class. The rest of class structure is initialized to zero. If there is no parent, the entire class structure is initialized to zero. The type system then invokes the - base_class_initialization functions (GBaseInitFunc) from topmost - fundamental object to bottom-most most derived object. The object's class_init + base_class_initialization functions + (GBaseInitFunc) from topmost + fundamental object to bottom-most most derived object. The object's class_init (GClassInitFunc) function is invoked afterwards to complete initialization of the class structure. Finally, the object's interfaces are initialized (we will discuss interface initialization @@ -550,8 +531,10 @@ void g_type_free_instance (GTypeInstance *instance); Once the type system has a pointer to an initialized class structure, it sets the object's instance class pointer to the object's class structure and invokes the object's - instance_init (GInstanceInitFunc)functions, from top-most fundamental - type to bottom-most most derived type. + instance_init + (GInstanceInitFunc) + functions, from top-most fundamental + type to bottom-most most-derived type. @@ -573,15 +556,15 @@ void g_type_free_instance (GTypeInstance *instance); - As many readers have now understood it, the base initialization/finalization process is + The base initialization/finalization process is very similar to the C++ constructor/destructor paradigm. The practical details are different though and it is important not to get confused by superficial similarities. GTypes have no instance destruction mechanism. It is the user's responsibility to implement correct destruction semantics on top - of the existing GType code. (this is what GObject does. See - ) - Furthermore, C++ code equivalent to the base_init - and class_init callbacks of GType is usually not needed because C++ cannot really create object + of the existing GType code. (This is what GObject does: see + .) + Furthermore, C++ code equivalent to the base_init + and class_init callbacks of GType is usually not needed because C++ cannot really create object types at runtime. @@ -597,20 +580,20 @@ void g_type_free_instance (GTypeInstance *instance); Invocation time - Function Invoked + Function invoked Function's parameters First call to g_type_create_instance for target type - type's base_init function + type's base_init function On the inheritance tree of classes from fundamental type to target type. - base_init is invoked once for each class structure. + base_init is invoked once for each class structure. - target type's class_init function + target type's class_init function On target type's class structure @@ -621,7 +604,7 @@ void g_type_free_instance (GTypeInstance *instance); Each call to g_type_create_instance for target type - target type's instance_init function + target type's instance_init function On object's instance @@ -632,14 +615,14 @@ void g_type_free_instance (GTypeInstance *instance); - target type's class_finalize function + target type's class_finalize function On target type's class structure - type's base_finalize function + type's base_finalize function On the inheritance tree of classes from fundamental type to target type. - base_finalize is invoked once for each class structure. + base_finalize is invoked once for each class structure. @@ -654,44 +637,54 @@ void g_type_free_instance (GTypeInstance *instance); Non-instantiable classed types: interfaces + This section covers the theory behind interfaces. See + for the recommended way to define an + interface. + + + GType's interfaces are very similar to Java's interfaces. They allow to describe a common API that several classes will adhere to. - Imagine the play, pause and stop buttons on hi-fi equipment - those can + Imagine the play, pause and stop buttons on hi-fi equipment — those can be seen as a playback interface. Once you know what they do, you can control your CD player, MP3 player or anything that uses these symbols. To declare an interface you have to register a non-instantiable classed type which derives from GTypeInterface. The following piece of code declares such an interface. -#define MAMAN_TYPE_IBAZ (maman_ibaz_get_type ()) -#define MAMAN_IBAZ(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAMAN_TYPE_IBAZ, MamanIbaz)) -#define MAMAN_IS_IBAZ(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAMAN_TYPE_IBAZ)) -#define MAMAN_IBAZ_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), MAMAN_TYPE_IBAZ, MamanIbazInterface)) +#define VIEWER_TYPE_EDITABLE viewer_editable_get_type () +G_DECLARE_INTERFACE (ViewerEditable, viewer_editable, VIEWER, EDITABLE, GObject) -typedef struct _MamanIbaz MamanIbaz; /* dummy object */ -typedef struct _MamanIbazInterface MamanIbazInterface; - -struct _MamanIbazInterface { +struct _ViewerEditableInterface { GTypeInterface parent; - void (*do_action) (MamanIbaz *self); + void (*save) (ViewerEditable *self, + GError **error); }; -GType maman_ibaz_get_type (void); - -void maman_ibaz_do_action (MamanIbaz *self); +void viewer_editable_save (ViewerEditable *self, + GError **error); - The interface function, maman_ibaz_do_action is implemented + The interface function, viewer_editable_save is implemented in a pretty simple way: -void maman_ibaz_do_action (MamanIbaz *self) +void +viewer_editable_save (ViewerEditable *self, + GError **error) { - MAMAN_IBAZ_GET_INTERFACE (self)->do_action (self); + ViewerEditableinterface *iface; + + g_return_if_fail (VIEWER_IS_EDITABLE (self)); + g_return_if_fail (error == NULL || *error == NULL); + + iface = VIEWER_EDITABLE_GET_INTERFACE (self); + g_return_if_fail (iface->save != NULL); + iface->save (self); } - maman_ibaz_get_type registers a type named MamanIbaz - which inherits from G_TYPE_INTERFACE. All interfaces must be children of G_TYPE_INTERFACE in the - inheritance tree. + viewer_editable_get_type registers a type named ViewerEditable + which inherits from G_TYPE_INTERFACE. All interfaces must + be children of G_TYPE_INTERFACE in the inheritance tree. @@ -699,56 +692,83 @@ void maman_ibaz_do_action (MamanIbaz *self) a GTypeInterface structure. The interface structure is expected to contain the function pointers of the interface methods. It is good style to define helper functions for each of the interface methods which simply call - the interface' method directly: maman_ibaz_do_action + the interface's method directly: viewer_editable_save is one of these. - Once an interface type is registered, you must register implementations for these - interfaces. The function named maman_baz_get_type registers - a new GType named MamanBaz which inherits from GObject and which - implements the interface MamanIbaz. + If you have no special requirements you can use the + G_IMPLEMENT_INTERFACE macro + to implement an interface: -static void maman_baz_do_action (MamanIbaz *self) +static void +viewer_file_save (ViewerEditable *self) +{ + g_print ("File implementation of editable interface save method.\n"); +} + +static void +viewer_file_editable_interface_init (ViewerEditableInterface *iface) +{ + iface->save = viewer_file_save; +} + +G_DEFINE_TYPE_WITH_CODE (ViewerFile, viewer_file, VIEWER_TYPE_FILE, + G_IMPLEMENT_INTERFACE (VIEWER_TYPE_EDITABLE, + viewer_file_editable_interface_init)); + + + + + If your code does have special requirements, you must write a custom + get_type function to register your GType which + inherits from some GObject + and which implements the interface ViewerEditable. For + example, this code registers a new ViewerFile class which + implements ViewerEditable: + +static void +viewer_file_save (ViewerEditable *editable) { - g_print ("Baz implementation of Ibaz interface Action.\n"); + g_print ("File implementation of editable interface save method.\n"); } static void -baz_interface_init (gpointer g_iface, - gpointer iface_data) +viewer_file_editable_interface_init (gpointer g_iface, + gpointer iface_data) { - MamanIbazInterface *iface = (MamanIbazInterface *)g_iface; - iface->do_action = maman_baz_do_action; + ViewerEditableInterface *iface = g_iface; + + iface->save = viewer_file_save; } GType -maman_baz_get_type (void) +viewer_file_get_type (void) { static GType type = 0; if (type == 0) { const GTypeInfo info = { - sizeof (MamanBazClass), + sizeof (ViewerFileClass), NULL, /* base_init */ NULL, /* base_finalize */ NULL, /* class_init */ NULL, /* class_finalize */ NULL, /* class_data */ - sizeof (MamanBaz), + sizeof (ViewerFile), 0, /* n_preallocs */ NULL /* instance_init */ }; - const GInterfaceInfo ibaz_info = { - (GInterfaceInitFunc) baz_interface_init, /* interface_init */ - NULL, /* interface_finalize */ - NULL /* interface_data */ + const GInterfaceInfo editable_info = { + (GInterfaceInitFunc) viewer_file_editable_interface_init, /* interface_init */ + NULL, /* interface_finalize */ + NULL /* interface_data */ }; - type = g_type_register_static (G_TYPE_OBJECT, - "MamanBazType", + type = g_type_register_static (VIEWER_TYPE_FILE, + "ViewerFile", &info, 0); g_type_add_interface_static (type, - MAMAN_TYPE_IBAZ, - &ibaz_info); + VIEWER_TYPE_EDITABLE, + &editable_info); } return type; } @@ -772,29 +792,6 @@ struct _GInterfaceInfo - - If you have no special requirements you can use the - G_IMPLEMENT_INTERFACE macro - to implement an interface: - -static void -maman_baz_do_action (MamanIbaz *self) -{ - g_print ("Baz implementation of Ibaz interface Action.\n"); -} - -static void -maman_ibaz_interface_init (MamanIbazInterface *iface) -{ - iface->do_action = maman_baz_do_action; -} - -G_DEFINE_TYPE_WITH_CODE (MamanBaz, maman_baz, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (MAMAN_TYPE_IBAZ, - maman_ibaz_interface_init)); - - - Interface Initialization @@ -811,10 +808,13 @@ G_DEFINE_TYPE_WITH_CODE (MamanBaz, maman_baz, G_TYPE_OBJECT, First a memory buffer is allocated to hold the interface structure. The parent's interface structure is then copied over to the new interface structure (the parent interface is already initialized at that point). If there is no parent interface, - the interface structure is initialized with zeros. The g_type and the g_instance_type - fields are then initialized: g_type is set to the type of the most-derived interface - and g_instance_type is set to the type of the most derived type which implements - this interface. + the interface structure is initialized with zeros. The + g_type and the + g_instance_type fields are then + initialized: g_type is set to the type of + the most-derived interface and + g_instance_type is set to the type of the + most derived type which implements this interface. @@ -836,12 +836,12 @@ G_DEFINE_TYPE_WITH_CODE (MamanBaz, maman_baz, G_TYPE_OBJECT, G_DEFINE_INTERFACE which can be used to define the interface: -G_DEFINE_INTERFACE (MamanIbaz, maman_ibaz, G_TYPE_OBJECT); +G_DEFINE_INTERFACE (ViewerEditable, viewer_editable, G_TYPE_OBJECT); static void -maman_ibaz_default_init (MamanIbazInterface *iface) +viewer_editable_default_init (ViewerEditableInterface *iface) { - /* add properties and signals here, will only called once */ + /* add properties and signals here, will only be called once */ } @@ -850,15 +850,15 @@ maman_ibaz_default_init (MamanIbazInterface *iface) Or you can do that yourself in a GType function for your interface: GType -maman_ibaz_get_type (void) +viewer_editable_get_type (void) { static volatile gsize type_id = 0; if (g_once_init_enter (&type_id)) { const GTypeInfo info = { - sizeof (MamanIbazInterface), + sizeof (ViewerEditableInterface), NULL, /* base_init */ NULL, /* base_finalize */ - maman_ibaz_default_init, /* class_init */ + viewer_editable_default_init, /* class_init */ NULL, /* class_finalize */ NULL, /* class_data */ 0, /* instance_size */ @@ -866,15 +866,15 @@ maman_ibaz_get_type (void) NULL /* instance_init */ }; GType type = g_type_register_static (G_TYPE_INTERFACE, - "MamanIbaz", - &info, 0); + "ViewerEditable", + &info, 0); g_once_init_leave (&type_id, type); } return type_id; } static void -maman_ibaz_default_init (MamanIbazInterface *iface) +viewer_editable_default_init (ViewerEditableInterface *iface) { /* add properties and signals here, will only called once */ } @@ -882,9 +882,7 @@ maman_ibaz_default_init (MamanIbazInterface *iface) - If you have found the stuff about interface hairy, you are right: it is hairy but - there is not much I can do about it. What I can do is summarize what you need to know - about interfaces: + In summary, interface initialization uses the following functions: @@ -935,9 +933,6 @@ maman_ibaz_default_init (MamanIbazInterface *iface) - It is highly unlikely (i.e. I do not know of anyone who actually - used it) you will ever need other more fancy things such as the ones described in the - following section (). @@ -989,15 +984,15 @@ maman_ibaz_default_init (MamanIbazInterface *iface) Last call to g_type_free_instance for type implementing interface - interface' interface_finalize function - On interface' vtable + interface's interface_finalize function + On interface's vtable - interface' base_finalize function - On interface' vtable + interface's base_finalize function + On interface's vtable diff --git a/docs/reference/gobject/tut_howto.xml b/docs/reference/gobject/tut_howto.xml index 97987fc..d436984 100644 --- a/docs/reference/gobject/tut_howto.xml +++ b/docs/reference/gobject/tut_howto.xml @@ -7,8 +7,8 @@ This chapter tries to answer the real-life questions of users and presents - the most common scenario use cases I could come up with. - The use cases are presented from most likely to less likely. + the most common use cases in order from most likely to least + likely. @@ -16,11 +16,17 @@ How to define and implement a new GObject - Clearly, this is one of the most common questions people ask: they just - want to crank code and implement a subclass of a GObject. Sometimes because - they want to create their own class hierarchy, sometimes because they want - to subclass one of GTK+'s widget. This chapter will focus on the - implementation of a subtype of GObject. + This chapter focuses on the implementation of a subtype of GObject, for + example to create a custom class hierarchy, or to subclass a GTK+ widget. + + + + Throughout the chapter, a running example of a file viewer program is used, + which has a ViewerFile class to represent a single file being + viewed, and various derived classes for different types of files with + special functionality, such as audio files. The example application also + supports editing files (for example, to tweak a photo being viewed), using + a ViewerEditable interface. @@ -30,37 +36,25 @@ The first step before writing the code for your GObject is to write the type's header which contains the needed type, function and macro definitions. Each of these elements is nothing but a convention which - is followed not only by GTK+'s code but also by most users of GObject. - If you feel the need not to obey the rules stated below, think about it - twice: - - If your users are a bit accustomed to GTK+ code or any - GLib code, they will be a bit surprised and getting used to the - conventions you decided upon will take time (money) and will make them - grumpy (not a good thing) - You must assess the fact that these conventions might - have been designed by both smart and experienced people: maybe they - were at least partly right. Try to put your ego aside. - - It is, nevertheless, important to note that these rules generally apply - to code that is meant to be called by third parties; it is perfectly - possible to write a valid, self-contained GObject types without most of - the boilerplate used in this tutorial; most of the boilerplate is also - not strictly required if you plan to use the GObject types only through - language bindings based on introspection. + is followed by almost all users of GObject, and has been refined over + multiple years of experience developing GObject-based code. If you are + writing a library, it is particularly important for you to adhere closely + to these conventions; users of your library will assume that you have. + Even if not writing a library, it will help other people who want to work + on your project. Pick a name convention for your headers and source code and stick to it: use a dash to separate the prefix from the typename: - maman-bar.h and maman-bar.c + viewer-file.h and viewer-file.c (this is the convention used by Nautilus and most GNOME libraries). use an underscore to separate the prefix from the - typename: maman_bar.h and - maman_bar.c. + typename: viewer_file.h and + viewer_file.c. Do not separate the prefix from the typename: - mamanbar.h and mamanbar.c. + viewerfile.h and viewerfile.c. (this is the convention used by GTK+) Some people like the first two solutions better: it makes reading file @@ -68,127 +62,139 @@ - When you need some private (internal) declarations in several - (sub)classes, you can define them in a private header file which - is often named by appending the private keyword - to the public header name. For example, one could use - maman-bar-private.h, - maman_bar_private.h or - mamanbarprivate.h. Typically, such private header - files are not installed. + The basic conventions for any header which exposes a GType are described + in . - The basic conventions for any header which exposes a GType are described - in . + If you want to declare a type named ‘file’ in namespace ‘viewer’, name the + type instance ViewerFile and its class + ViewerFileClass (names are case sensitive). The + recommended method of declaring a type differs based on whether the type + is final or derivable. - If you want to declare a type named bar with prefix maman, name the type instance - MamanBar and its class MamanBarClass - (name is case-sensitive). It is customary to declare them with code similar to the - following: + Final types cannot be subclassed further, and should be the default choice + for new types — changing a final type to be derivable is always a change + that will be compatible with existing uses of the code, but the converse + will often cause problems. Final types are declared using + G_DECLARE_FINAL_TYPE, + and require a structure to hold the instance data to be declared in the + source code (not the header file). + /* * Copyright/Licensing information. */ /* inclusion guard */ -#ifndef __MAMAN_BAR_H__ -#define __MAMAN_BAR_H__ +#ifndef __VIEWER_FILE_H__ +#define __VIEWER_FILE_H__ #include <glib-object.h> /* * Potentially, include other headers on which this header depends. */ +G_BEGIN_DECLS + /* - * Type macros. + * Type declaration. */ -#define MAMAN_TYPE_BAR (maman_bar_get_type ()) -#define MAMAN_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAMAN_TYPE_BAR, MamanBar)) -#define MAMAN_IS_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAMAN_TYPE_BAR)) -#define MAMAN_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MAMAN_TYPE_BAR, MamanBarClass)) -#define MAMAN_IS_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MAMAN_TYPE_BAR)) -#define MAMAN_BAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MAMAN_TYPE_BAR, MamanBarClass)) +#define VIEWER_TYPE_FILE viewer_file_get_type () +G_DECLARE_FINAL_TYPE (ViewerFile, viewer_file, VIEWER, FILE, GObject) -typedef struct _MamanBar MamanBar; -typedef struct _MamanBarClass MamanBarClass; +/* + * Method definitions. + */ +ViewerFile *viewer_file_new (void); -struct _MamanBar -{ - /* Parent instance structure */ - GObject parent_instance; +G_END_DECLS - /* instance members */ -}; +#endif /* __VIEWER_FILE_H__ */ + + + + + Derivable types can be subclassed further, and their class and + instance structures form part of the public API which must not be changed + if API stability is cared about. They are declared using + G_DECLARE_DERIVABLE_TYPE: + +/* + * Copyright/Licensing information. + */ + +/* inclusion guard */ +#ifndef __VIEWER_FILE_H__ +#define __VIEWER_FILE_H__ -struct _MamanBarClass +#include <glib-object.h> +/* + * Potentially, include other headers on which this header depends. + */ + +G_BEGIN_DECLS + +/* + * Type declaration. + */ +#define VIEWER_TYPE_FILE viewer_file_get_type () +G_DECLARE_DERIVABLE_TYPE (ViewerFile, viewer_file, VIEWER, FILE, GObject) + +struct _ViewerFileClass { - /* Parent class structure */ GObjectClass parent_class; - /* class members */ -}; + /* Class virtual function fields. */ + void (* open) (ViewerFile *file, + GError **error); -/* used by MAMAN_TYPE_BAR */ -GType maman_bar_get_type (void); + /* Padding to allow adding up to 12 new virtual functions without + * breaking ABI. */ + gpointer padding[12]; +}; /* * Method definitions. */ +ViewerFile *viewer_file_new (void); -#endif /* __MAMAN_BAR_H__ */ +G_END_DECLS + +#endif /* __VIEWER_FILE_H__ */ - Finally, there are different header include conventions. Again, pick one - and stick to it. I personally use indifferently any of the two, depending - on the codebase I work on: the rule, as always, is consistency. - - - Some people add at the top of their headers a number of #include - directives to pull in all the headers needed to compile client - code. This allows client code to simply #include "maman-bar.h". - - - Other do not #include anything and expect the client to #include - themselves the headers they need before including your header. This - speeds up compilation because it minimizes the amount of - pre-processor work. This can be used in conjunction with the - re-declaration of certain unused types in the client code to - minimize compile-time dependencies and thus speed up compilation. - - + The convention for header includes is to add the minimum number of + #include directives to the top of your headers needed + to compile that header. This + allows client code to simply #include "viewer-file.h", + without needing to know the prerequisites for + viewer-file.h. - Boilerplate code - In your code, the first step is to #include the needed headers: depending - on your header include strategy, this can be as simple as - #include "maman-bar.h" or as complicated as tens - of #include lines ending with #include "maman-bar.h": + In your code, the first step is to #include the + needed headers: /* * Copyright information */ -#include "maman-bar.h" +#include "viewer-file.h" -/* If you use Pimpls, include the private structure - * definition here. Some people create a maman-bar-private.h header - * which is included by the maman-bar.c file and which contains the - * definition for this private structure. - */ -struct _MamanBarPrivate { - int member_1; +/* Private structure definition. */ +typedef struct { + gchar *filename; /* stuff */ -}; +} ViewerFilePrivate; /* * forward definitions @@ -197,35 +203,71 @@ struct _MamanBarPrivate { - Call the G_DEFINE_TYPE macro using the name + If the class is being declared as final using + G_DECLARE_FINAL_TYPE, its instance structure should + be defined in the C file: + +struct _ViewerFile +{ + GObject parent_instance; + + /* Other members, including private data. */ +} + + + + + Call the G_DEFINE_TYPE macro (or + G_DEFINE_TYPE_WITH_PRIVATE if your class needs + private data — final types do not need private data) + using the name of the type, the prefix of the functions and the parent GType to reduce the amount of boilerplate needed. This macro will: - implement the maman_bar_get_type + implement the viewer_file_get_type function define a parent class pointer accessible from the whole .c file + add private instance data to the type (if using + G_DEFINE_TYPE_WITH_PRIVATE) + + + If the class has been declared as final using + G_DECLARE_FINAL_TYPE (see + ), private data should be placed in + the instance structure, ViewerFile, and + G_DEFINE_TYPE should be used instead of + G_DEFINE_TYPE_WITH_PRIVATE. The instance structure + for a final class is not exposed publicly, and is not embedded in the + instance structures of any derived classes (because the class is final); + so its size can vary without causing incompatibilities for code which uses + the class. Conversely, private data for derivable classes + must be included in a private structure, and + G_DEFINE_TYPE_WITH_PRIVATE must be used. + + +G_DEFINE_TYPE (ViewerFile, viewer_file, G_TYPE_OBJECT) + +or -G_DEFINE_TYPE (MamanBar, maman_bar, G_TYPE_OBJECT) +G_DEFINE_TYPE_WITH_PRIVATE (ViewerFile, viewer_file, G_TYPE_OBJECT) It is also possible to use the G_DEFINE_TYPE_WITH_CODE macro to control the - get_type function implementation - for instance, to add a call to - G_IMPLEMENT_INTERFACE macro which will - call the g_type_implement_interface function, - or call the G_ADD_PRIVATE macro will add an - instance private data structure. + get_type function implementation — for instance, to + add a call to the G_IMPLEMENT_INTERFACE macro to + implement an interface. - Object Construction + Object construction People often get confused when trying to construct their GObjects because of the @@ -237,14 +279,16 @@ G_DEFINE_TYPE (MamanBar, maman_bar, G_TYPE_OBJECT) shows what user-provided functions are invoked during object instantiation and in which order they are invoked. A user looking for the equivalent of the simple C++ constructor function should use - the instance_init method. It will be invoked after all the parent's instance_init + the instance_init method. It will be invoked after + all the parents’ instance_init functions have been invoked. It cannot take arbitrary construction parameters (as in C++) but if your object needs arbitrary parameters to complete initialization, you can use construction properties. - Construction properties will be set only after all instance_init functions have run. + Construction properties will be set only after all + instance_init functions have run. No object reference will be returned to the client of g_object_new until all the construction properties have been set. @@ -252,23 +296,25 @@ G_DEFINE_TYPE (MamanBar, maman_bar, G_TYPE_OBJECT) It is important to note that object construction cannot ever fail. If you require a fallible GObject construction, you can use the - GInitable and GAsyncInitable interfaces provided by the GIO library + GInitable and + GAsyncInitable + interfaces provided by the GIO library. - As such, I would recommend writing the following code first: + You should write the following code first: -G_DEFINE_TYPE_WITH_PRIVATE (MamanBar, maman_bar, G_TYPE_OBJECT) +G_DEFINE_TYPE_WITH_PRIVATE (ViewerFile, viewer_file, G_TYPE_OBJECT) static void -maman_bar_class_init (MamanBarClass *klass) +viewer_file_class_init (ViewerFileClass *klass) { } static void -maman_bar_init (MamanBar *self) +viewer_file_init (ViewerFile *self) { - self->priv = maman_bar_get_instance_private (self); + ViewerFilePrivate *priv = viewer_file_get_instance_private (self); /* initialize all public and private members to reasonable default values. * They are all automatically initialized to 0 to begin with. */ @@ -277,40 +323,52 @@ maman_bar_init (MamanBar *self) - If you need special construction properties, install the properties in + If you need special construction properties (with + G_PARAM_CONSTRUCT_ONLY + set), install the properties in the class_init() function, override the set_property() and get_property() methods of the GObject class, and implement them as described by . - -enum { - PROP_0, - - PROP_MAMAN, + + + Property IDs must start from 1, as 0 is reserved for internal use by + GObject. + +enum +{ + PROP_FILENAME = 1, + PROP_ZOOM_LEVEL, N_PROPERTIES }; -/* Keep a pointer to the properties definition */ static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; static void -bar_class_init (MamanBarClass *klass) +viewer_file_class_init (ViewerFileClass *klass) { - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - - gobject_class->set_property = bar_set_property; - gobject_class->get_property = bar_get_property; - - obj_properties[PROP_MAMAN] = - g_param_spec_string ("maman", - "Maman construct prop", - "Set maman's name", - "no-name-set" /* default value */, - G_PARAM_CONSTRUCT_ONLY | - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS); - - g_object_class_install_properties (gobject_class, + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->set_property = viewer_file_set_property; + object_class->get_property = viewer_file_get_property; + + obj_properties[PROP_FILENAME] = + g_param_spec_string ("filename", + "Filename", + "Name of the file to load and display from.", + NULL /* default value */, + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE)); + + obj_properties[PROP_ZOOM_LEVEL] = + g_param_spec_uint ("zoom-level", + "Zoom level", + "Zoom level to view the file at.", + 0 /* minimum value */, + 10 /* maximum value */, + 2 /* default value */, + G_PARAM_READWRITE)); + + g_object_class_install_properties (object_class, N_PROPERTIES, obj_properties); } @@ -325,17 +383,18 @@ bar_class_init (MamanBarClass *klass) of a type only after the properties passed to the constructors have been set. This is possible through the use of the constructor() class method as described in or, - more simply, using the constructed() class method - available since GLib 2.12. Note that the constructed() + more simply, using the constructed() class method. + Note that the constructed() virtual function will only be invoked after the properties marked as - G_PARAM_CONSTRUCT_ONLY or G_PARAM_CONSTRUCT have been consumed, but + G_PARAM_CONSTRUCT_ONLY or + G_PARAM_CONSTRUCT have been consumed, but before the regular properties passed to g_object_new() have been set. - Object Destruction + Object destruction Again, it is often difficult to figure out which mechanism to use to @@ -346,25 +405,27 @@ bar_class_init (MamanBarClass *klass) - The destruction process of your object might be split in two different - phases: dispose and the finalize. This split is necessary to handle + The destruction process of your object is in two phases: dispose and + finalize. This split is necessary to handle potential cycles due to the nature of the reference counting mechanism - used by GObject, as well as dealing with temporary vivification of + used by GObject, as well as dealing with temporary revival of instances in case of signal emission during the destruction sequence. + See for more information. -struct _MamanBarPrivate +struct _ViewerFilePrivate { - GObject *an_object; + gchar *filename; + guint zoom_level; - gchar *a_string; + GInputStream *input_stream; }; -G_DEFINE_TYPE_WITH_PRIVATE (MamanBar, maman_bar, G_TYPE_OBJECT) +G_DEFINE_TYPE_WITH_PRIVATE (ViewerFile, viewer_file, G_TYPE_OBJECT) static void -maman_bar_dispose (GObject *gobject) +viewer_file_dispose (GObject *gobject) { - MamanBar *self = MAMAN_BAR (gobject); + ViewerFilePrivate *priv = viewer_file_get_instance_private (VIEWER_FILE (gobject)); /* In dispose(), you are supposed to free all types referenced from this * object which might themselves hold a reference to self. Generally, @@ -376,44 +437,44 @@ maman_bar_dispose (GObject *gobject) * calling g_object_unref() on an invalid GObject by setting the member * NULL; g_clear_object() does this for us. */ - g_clear_object (&self->priv->an_object); + g_clear_object (&priv->input_stream); /* Always chain up to the parent class; there is no need to check if * the parent class implements the dispose() virtual function: it is * always guaranteed to do so */ - G_OBJECT_CLASS (maman_bar_parent_class)->dispose (gobject); + G_OBJECT_CLASS (viewer_file_parent_class)->dispose (gobject); } static void -maman_bar_finalize (GObject *gobject) +viewer_file_finalize (GObject *gobject) { - MamanBar *self = MAMAN_BAR (gobject); + ViewerFilePrivate *priv = viewer_file_get_instance_private (VIEWER_FILE (gobject)); - g_free (self->priv->a_string); + g_free (priv->filename); /* Always chain up to the parent class; as with dispose(), finalize() * is guaranteed to exist on the parent's class virtual function table */ - G_OBJECT_CLASS (maman_bar_parent_class)->finalize (gobject); + G_OBJECT_CLASS (viewer_file_parent_class)->finalize (gobject); } static void -maman_bar_class_init (MamanBarClass *klass) +viewer_file_class_init (ViewerFileClass *klass) { - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); - gobject_class->dispose = maman_bar_dispose; - gobject_class->finalize = maman_bar_finalize; + object_class->dispose = viewer_file_dispose; + object_class->finalize = viewer_file_finalize; } static void -maman_bar_init (MamanBar *self); +viewer_file_init (ViewerFile *self); { - self->priv = maman_bar_get_instance_private (self); + ViewerFilePrivate *priv = viewer_file_get_instance_private (self); - self->priv->an_object = g_object_new (MAMAN_TYPE_BAZ, NULL); - self->priv->a_string = g_strdup ("Maman"); + priv->input_stream = g_object_new (VIEWER_TYPE_INPUT_STREAM, NULL); + priv->filename = /* would be set as a property */; } @@ -422,7 +483,7 @@ maman_bar_init (MamanBar *self); It is possible that object methods might be invoked after dispose is run and before finalize runs. GObject does not consider this to be a program error: you must gracefully detect this and neither crash nor - warn the user, by having a disposed instance revert to an inhert state. + warn the user, by having a disposed instance revert to an inert state. @@ -449,23 +510,26 @@ maman_bar_init (MamanBar *self); - + Non-virtual public methods - These are the simplest: you want to provide a simple method which - can act on your object. All you need to do is to provide a function + These are the simplest, providing a simple method which + acts on the object. Provide a function prototype in the header and an implementation of that prototype in the source file. /* declaration in the header. */ -void maman_bar_do_action (MamanBar *self, /* parameters */); +void viewer_file_open (ViewerFile *self, + GError **error); /* implementation in the source file */ void -maman_bar_do_action (MamanBar *self, /* parameters */) +viewer_file_open (ViewerFile *self, + GError **error) { - g_return_if_fail (MAMAN_IS_BAR (self)); + g_return_if_fail (VIEWER_IS_FILE (self)); + g_return_if_fail (error == NULL || *error == NULL); /* do stuff here. */ } @@ -473,168 +537,238 @@ maman_bar_do_action (MamanBar *self, /* parameters */) - + Virtual public methods - This is the preferred way to create polymorphic GObjects. All you - need to do is to define the common method and its class function in - the public header, implement the common method in the source file - and re-implement the class function in each object which inherits - from you. + This is the preferred way to create GObjects with overridable methods: + + + Define the common method and its virtual function in the + class structure in the public header + + + Define the common method in the header file and implement it in the + source file + + + Implement a base version of the virtual function in the source + file and initialize the virtual function pointer to this + implementation in the object’s class_init + function; or leave it as NULL for a ‘pure + virtual’ method which must be overridden by derived classes + + + Re-implement the virtual function in each derived class which needs + to override it + + + + + Note that virtual functions can only be defined if the class is + derivable, declared using + G_DECLARE_DERIVABLE_TYPE + so the class structure can be defined. -/* declaration in maman-bar.h. */ -struct _MamanBarClass +/* declaration in viewer-file.h. */ +#define VIEWER_TYPE_FILE viewer_file_get_type () +G_DECLARE_DERIVABLE_TYPE (ViewerFile, viewer_file, VIEWER, FILE, GObject) + +struct _ViewerFileClass { GObjectClass parent_class; /* stuff */ - void (*do_action) (MamanBar *self, /* parameters */); + void (*open) (ViewerFile *self, + GError **error); + + /* Padding to allow adding up to 12 new virtual functions without + * breaking ABI. */ + gpointer padding[12]; }; -void maman_bar_do_action (MamanBar *self, /* parameters */); +void viewer_file_open (ViewerFile *self, + GError **error); -/* implementation in maman-bar.c */ +/* implementation in viewer-file.c */ void -maman_bar_do_action (MamanBar *self, /* parameters */) +viewer_file_open (ViewerFile *self, + GError **error) { - g_return_if_fail (MAMAN_IS_BAR (self)); + ViewerFileClass *klass; + + g_return_if_fail (VIEWER_IS_FILE (self)); + g_return_if_fail (error == NULL || *error == NULL); + + klass = VIEWER_FILE_GET_CLASS (self); + g_return_if_fail (klass->open != NULL); - MAMAN_BAR_GET_CLASS (self)->do_action (self, /* parameters */); + klass->open (self, error); } - The code above simply redirects the do_action call to the relevant - class function. + The code above simply redirects the open call + to the relevant virtual function. - Please, note that it is possible for you to provide a default + It is possible to provide a default implementation for this class method in the object's class_init function: initialize the - klass->do_action field to a pointer to the actual implementation. + klass->open field to a pointer to the + actual implementation. By default, class methods that are not inherited are initialized to - NULL, and thus are to be considered "pure virtual". + NULL, and thus are to be considered "pure virtual". static void -maman_bar_real_do_action_two (MamanBar *self, /* parameters */) +viewer_file_real_close (ViewerFile *self, + GError **error) { /* Default implementation for the virtual method. */ } static void -maman_bar_class_init (BarClass *klass) +viewer_file_class_init (ViewerFileClass *klass) { /* this is not necessary, except for demonstration purposes. * * pure virtual method: mandates implementation in children. */ - klass->do_action_one = NULL; + klass->open = NULL; /* merely virtual method. */ - klass->do_action_two = maman_bar_real_do_action_two; + klass->close = viewer_file_real_close; } void -maman_bar_do_action_one (MamanBar *self, /* parameters */) +viewer_file_open (ViewerFile *self, + GError **error) { - g_return_if_fail (MAMAN_IS_BAR (self)); + ViewerFileClass *klass; + + g_return_if_fail (VIEWER_IS_FILE (self)); + g_return_if_fail (error == NULL || *error == NULL); + + klass = VIEWER_FILE_GET_CLASS (self); /* if the method is purely virtual, then it is a good idea to * check that it has been overridden before calling it, and, * depending on the intent of the class, either ignore it silently * or warn the user. - / - if (MAMAN_BAR_GET_CLASS (self)->do_action_one != NULL) - MAMAN_BAR_GET_CLASS (self)->do_action_one (self, /* parameters */); - else - g_warning ("Class '%s' does not override the mandatory " - "MamanBarClass.do_action_one() virtual function.", - G_OBJECT_TYPE_NAME (self)); + */ + g_return_if_fail (klass->open != NULL); + klass->open (self, error); } void -maman_bar_do_action_two (MamanBar *self, /* parameters */) +viewer_file_close (ViewerFile *self, + GError **error) { - g_return_if_fail (MAMAN_IS_BAR (self)); + ViewerFileClass *klass; - MAMAN_BAR_GET_CLASS (self)->do_action_two (self, /* parameters */); + g_return_if_fail (VIEWER_IS_FILE (self)); + g_return_if_fail (error == NULL || *error == NULL); + + klass = VIEWER_FILE_GET_CLASS (self); + if (klass->close != NULL) + klass->close (self, error); } - + Virtual private Methods - These are very similar to Virtual Public methods. They just don't - have a public function to call the function directly. The header - file contains only a declaration of the class function: + These are very similar to virtual + public methods. They just don't + have a public function to call directly. The header + file contains only a declaration of the virtual function: -/* declaration in maman-bar.h. */ -struct _MamanBarClass +/* declaration in viewer-file.h. */ +struct _ViewerFileClass { GObjectClass parent; - /* stuff */ - void (* helper_do_specific_action) (MamanBar *self, /* parameters */); + /* Public virtual method as before. */ + void (*open) (ViewerFile *self, + GError **error); + + /* Private helper function to work out whether the file can be loaded via + * memory mapped I/O, or whether it has to be read as a stream. */ + gboolean (*can_memory_map) (ViewerFile *self); + + /* Padding to allow adding up to 12 new virtual functions without + * breaking ABI. */ + gpointer padding[12]; }; -void maman_bar_do_any_action (MamanBar *self, /* parameters */); +void viewer_file_open (ViewerFile *self, GError **error); - These class functions are often used to delegate part of the job + These virtual functions are often used to delegate part of the job to child classes: /* this accessor function is static: it is not exported outside of this file. */ -static void -maman_bar_do_specific_action (MamanBar *self, /* parameters */) +static gboolean +viewer_file_can_memory_map (ViewerFile *self) { - MAMAN_BAR_GET_CLASS (self)->do_specific_action (self, /* parameters */); + return VIEWER_FILE_GET_CLASS (self)->can_memory_map (self); } void -maman_bar_do_any_action (MamanBar *self, /* parameters */) +viewer_file_open (ViewerFile *self, + GError **error) { - /* random code here */ + g_return_if_fail (VIEWER_IS_FILE (self)); + g_return_if_fail (error == NULL || *error == NULL); - /* - * Try to execute the requested action. Maybe the requested action - * cannot be implemented here. So, we delegate its implementation - * to the child class: + /* + * Try to load the file using memory mapped I/O, if the implementation of the + * class determines that is possible using its private virtual method. */ - maman_bar_do_specific_action (self, /* parameters */); - - /* other random code here */ + if (viewer_file_can_memory_map (self)) + { + /* Load the file using memory mapped I/O. */ + } + else + { + /* Fall back to trying to load the file using streaming I/O… */ + } } Again, it is possible to provide a default implementation for this - private virtual class function: + private virtual function: -static void -maman_bar_class_init (MamanBarClass *klass) +static gboolean +viewer_file_real_can_memory_map (ViewerFile *self) { - /* pure virtual method: mandates implementation in children. */ - klass->do_specific_action_one = NULL; + /* As an example, always return false. Or, potentially return true if the + * file is local. */ + return FALSE; +} - /* merely virtual method. */ - klass->do_specific_action_two = maman_bar_real_do_specific_action_two; +static void +viewer_file_class_init (ViewerFileClass *klass) +{ + /* non-pure virtual method; does not have to be implemented in children. */ + klass->can_memory_map = viewer_file_real_can_memory_map; } - Children can then implement the subclass with code such as: + Derived classes can then override the method with code such as: static void -maman_bar_subtype_class_init (MamanBarSubTypeClass *klass) +viewer_audio_file_class_init (ViewerAudioFileClass *klass) { - MamanBarClass *bar_class = MAMAN_BAR_CLASS (klass); + ViewerFileClass *file_class = VIEWER_FILE_CLASS (klass); - /* implement pure virtual class function. */ - bar_class->do_specific_action_one = maman_bar_subtype_do_specific_action_one; + /* implement pure virtual function. */ + file_class->can_memory_map = viewer_audio_file_can_memory_map; } @@ -650,48 +784,48 @@ maman_bar_subtype_class_init (MamanBarSubTypeClass *klass) Parent class A defines a public virtual method named foo and provides a default implementation. Child class B re-implements method foo. - In the method B::foo, the child class B calls its parent class method A::foo. + B’s implementation of foo calls (‘chains up to’) its parent class A’s implementation of foo. - There are various uses to this idiom: + There are various uses of this idiom: You need to extend the behaviour of a class without modifying its code. You create a subclass to inherit its implementation, re-implement a public virtual method to modify the behaviour and chain up to ensure that the previous behaviour is not really modified, just extended. - You need to implement the Chain Of Responsibility pattern: each object of the inheritance + You need to implement the + Chain + Of Responsibility pattern: each object of the inheritance tree chains up to its parent (typically, at the beginning or the end of the method) to ensure that - they each handler is run in turn. + each handler is run in turn. To explicitly chain up to the implementation of the virtual method in the parent class, you first need a handle to the original parent class structure. This pointer can then be used to - access the original class function pointer and invoke it directly. + access the original virtual function pointer and invoke it directly. The original adjective used in this sentence is not innocuous. To fully - understand its meaning, you need to recall how class structures are initialized: for each object type, - the class structure associated to this object is created by first copying the class structure of its - parent type (a simple memcpy) and then by invoking the class_init callback on - the resulting class structure. Since the class_init callback is responsible for overwriting the class structure - with the user re-implementations of the class methods, we cannot merely use the modified copy of the parent class - structure stored in our derived instance. We want to get a copy of the class structure of an instance of the parent - class. + understand its meaning, recall how class structures are initialized: for each object type, + the class structure associated with this object is created by first copying the class structure of its + parent type (a simple memcpy) and then by invoking the class_init callback on + the resulting class structure. Since the class_init callback is responsible for overwriting the class structure + with the user re-implementations of the class methods, the modified copy of the parent class + structure stored in the derived instance cannot be used. A copy of the class structure of an instance of the parent + class is needed. - The function g_type_class_peek_parent - is used to access the original parent class structure. Its input is a - pointer to the class of the derived object and it returns a pointer to - the original parent class structure. Instead of using this function - directly, though, you should use the parent_class - pointer created and initialized for us by the G_DEFINE_TYPE_* family of - macros, for instance: + + Use the parent_class pointer created and initialized + by the + G_DEFINE_TYPE + family of macros, for instance: static void -b_method_to_call (B *obj, int a) +b_method_to_call (B *obj, gint some_param) { /* do stuff before chain up */ @@ -700,7 +834,7 @@ b_method_to_call (B *obj, int a) * * remember the explicit cast to AClass* */ - A_CLASS (b_parent_class)->method_to_call (obj, a); + A_CLASS (b_parent_class)->method_to_call (obj, some_param); /* do stuff after chain up */ } @@ -719,104 +853,137 @@ b_method_to_call (B *obj, int a) Defining interfaces - The bulk of interface definition has already been shown in - but I feel it is needed to show exactly how to create an interface. + The theory behind how GObject interfaces work is given in + ; this section covers how to + define and implement an interface. - As above, the first step is to get the header right. This interface + The first step is to get the header right. This interface defines two methods: -#ifndef __MAMAN_IBAZ_H__ -#define __MAMAN_IBAZ_H__ +/* + * Copyright/Licensing information. + */ -#include <glib-object.h> +#ifndef __VIEWER_EDITABLE_H__ +#define __VIEWER_EDITABLE_H__ -#define MAMAN_TYPE_IBAZ (maman_ibaz_get_type ()) -#define MAMAN_IBAZ(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAMAN_TYPE_IBAZ, MamanIbaz)) -#define MAMAN_IS_IBAZ(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAMAN_TYPE_IBAZ)) -#define MAMAN_IBAZ_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), MAMAN_TYPE_IBAZ, MamanIbazInterface)) +#include <glib-object.h> +G_BEGIN_DECLS -typedef struct _MamanIbaz MamanIbaz; /* dummy object */ -typedef struct _MamanIbazInterface MamanIbazInterface; +#define VIEWER_TYPE_EDITABLE viewer_editable_get_type () +G_DECLARE_INTERFACE (ViewerEditable, viewer_editable, VIEWER, EDITABLE, GObject) -struct _MamanIbazInterface +struct _ViewerEditableInterface { GTypeInterface parent_iface; - void (*do_action) (MamanIbaz *self); - void (*do_something) (MamanIbaz *self); + void (*save) (ViewerEditable *self, + GError **error); + void (*undo) (ViewerEditable *self, + guint n_steps); + void (*redo) (ViewerEditable *self, + guint n_steps); }; -GType maman_ibaz_get_type (void); +void viewer_editable_save (ViewerEditable *self, + GError **error); +void viewer_editable_undo (ViewerEditable *self, + guint n_steps); +void viewer_editable_redo (ViewerEditable *self, + guint n_steps); -void maman_ibaz_do_action (MamanIbaz *self); -void maman_ibaz_do_something (MamanIbaz *self); +G_END_DECLS -#endif /* __MAMAN_IBAZ_H__ */ +#endif /* __VIEWER_EDITABLE_H__ */ This code is the same as the code for a normal GType which derives from a GObject except for a few details: - The _GET_CLASS macro is called _GET_INTERFACE - and not implemented with G_TYPE_INSTANCE_GET_CLASS - but with G_TYPE_INSTANCE_GET_INTERFACE. + The _GET_CLASS function is called + _GET_IFACE (and is defined by + G_DECLARE_INTERFACE). - The instance type, MamanIbaz is not fully defined: it is + The instance type, ViewerEditable, is not fully defined: it is used merely as an abstract type which represents an instance of whatever object which implements the interface. - The parent of the MamanIbazInterface is not - GObjectClass but GTypeInterface. + The parent of the ViewerEditableInterface is + GTypeInterface, not GObjectClass. - The implementation of the MamanIbaz type itself is trivial: + The implementation of the ViewerEditable type itself is trivial: G_DEFINE_INTERFACE - creates a maman_ibaz_get_type function which registers the + creates a viewer_editable_get_type function which registers the type in the type system. The third argument is used to define a prerequisite interface (which we'll talk about more later). Just pass 0 for this argument when an interface has no prerequisite. - maman_ibaz_default_init is expected + viewer_editable_default_init is expected to register the interface's signals if there are any (we will see a bit later how to use them). - The interface methods maman_ibaz_do_action - and maman_ibaz_do_something dereference the interface + The interface methods viewer_editable_save, + viewer_editable_undo and viewer_editable_redo dereference the interface structure to access its associated interface function and call it. -G_DEFINE_INTERFACE (MamanIbaz, maman_ibaz, 0); +G_DEFINE_INTERFACE (ViewerEditable, viewer_editable, G_TYPE_OBJECT); static void -maman_ibaz_default_init (MamanIbazInterface *iface) +viewer_editable_default_init (ViewerEditableInterface *iface) { /* add properties and signals to the interface here */ } void -maman_ibaz_do_action (MamanIbaz *self) +viewer_editable_save (ViewerEditable *self, + GError **error) { - g_return_if_fail (MAMAN_IS_IBAZ (self)); + ViewerEditableInterface *iface; - MAMAN_IBAZ_GET_INTERFACE (self)->do_action (self); + g_return_if_fail (VIEWER_IS_EDITABLE (self)); + g_return_if_fail (error == NULL || *error == NULL); + + iface = VIEWER_EDITABLE_GET_IFACE (self); + g_return_if_fail (iface->save != NULL); + iface->save (self, error); } void -maman_ibaz_do_something (MamanIbaz *self) +viewer_editable_undo (ViewerEditable *self, + guint n_steps) { - g_return_if_fail (MAMAN_IS_IBAZ (self)); + ViewerEditableInterface *iface; + + g_return_if_fail (VIEWER_IS_EDITABLE (self)); - MAMAN_IBAZ_GET_INTERFACE (self)->do_something (self); + iface = VIEWER_EDITABLE_GET_IFACE (self); + g_return_if_fail (iface->undo != NULL); + iface->undo (self, n_steps); +} + +void +viewer_editable_redo (ViewerEditable *self, + guint n_steps) +{ + ViewerEditableInterface *iface; + + g_return_if_fail (VIEWER_IS_EDITABLE (self)); + + iface = VIEWER_EDITABLE_GET_IFACE (self); + g_return_if_fail (iface->redo != NULL); + iface->redo (self, n_steps); } @@ -830,65 +997,27 @@ maman_ibaz_do_something (MamanIbaz *self) - The first step is to define a normal GObject class, like: - -#ifndef __MAMAN_BAZ_H__ -#define __MAMAN_BAZ_H__ - -#include <glib-object.h> - -#define MAMAN_TYPE_BAZ (maman_baz_get_type ()) -#define MAMAN_BAZ(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), MAMAN_TYPE_BAZ, Mamanbaz)) -#define MAMAN_IS_BAZ(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), MAMAN_TYPE_BAZ)) -#define MAMAN_BAZ_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), MAMAN_TYPE_BAZ, MamanbazClass)) -#define MAMAN_IS_BAZ_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), MAMAN_TYPE_BAZ)) -#define MAMAN_BAZ_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), MAMAN_TYPE_BAZ, MamanbazClass)) - - -typedef struct _MamanBaz MamanBaz; -typedef struct _MamanBazClass MamanBazClass; - -struct _MamanBaz -{ - GObject parent_instance; - - gint instance_member; -}; - -struct _MamanBazClass -{ - GObjectClass parent_class; -}; - -GType maman_baz_get_type (void); - -#endif /* __MAMAN_BAZ_H__ */ - - - There is clearly nothing specifically weird or scary about this header: - it does not define any weird API or derive from a weird type. + The first step is to define a normal final GObject class exactly as in + . - The second step is to implement MamanBaz by defining - its GType. Instead of using - G_DEFINE_TYPE - we use + The second step is to implement ViewerFile by defining + it using G_DEFINE_TYPE_WITH_CODE - and the + and G_IMPLEMENT_INTERFACE - macros. + instead of + G_DEFINE_TYPE: -static void maman_ibaz_interface_init (MamanIbazInterface *iface); +static void viewer_file_editable_interface_init (ViewerEditableInterface *iface); -G_DEFINE_TYPE_WITH_CODE (MamanBar, maman_bar, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (MAMAN_TYPE_IBAZ, - maman_ibaz_interface_init)) +G_DEFINE_TYPE_WITH_CODE (ViewerFile, viewer_file, G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (VIEWER_TYPE_EDITABLE, + viewer_file_editable_interface_init)) - This definition is very much like all the similar functions we looked - at previously. The only interface-specific code present here is the call to + This definition is very much like all the similar functions seen + previously. The only interface-specific code present here is the use of G_IMPLEMENT_INTERFACE. @@ -899,36 +1028,46 @@ G_DEFINE_TYPE_WITH_CODE (MamanBar, maman_bar, G_TYPE_OBJECT, - maman_baz_interface_init, the interface + viewer_file_editable_interface_init, the interface initialization function: inside it every virtual method of the interface must be assigned to its implementation: static void -maman_baz_do_action (MamanBaz *self) +viewer_file_editable_save (ViewerFile *self, + GError **error) +{ + g_print ("File implementation of editable interface save method: %s.\n", + self->filename); +} + +static void +viewer_file_editable_undo (ViewerFile *self, + guint n_steps) { - g_print ("Baz implementation of Ibaz interface Action: 0x%x.\n", - self->instance_member); + g_print ("File implementation of editable interface undo method: %s.\n", + self->filename); } static void -maman_baz_do_something (MamanBaz *self) +viewer_file_editable_redo (ViewerFile *self, + guint n_steps) { - g_print ("Baz implementation of Ibaz interface Something: 0x%x.\n", - self->instance_member); + g_print ("File implementation of editable interface redo method: %s.\n", + self->filename); } static void -maman_ibaz_interface_init (MamanIbazInterface *iface) +viewer_file_editable_interface_init (ViewerEditableInterface *iface) { - iface->do_action = maman_baz_do_action; - iface->do_something = maman_baz_do_something; + iface->save = viewer_file_editable_save; + iface->undo = viewer_file_editable_undo; + iface->redo = viewer_file_editable_redo; } static void -maman_baz_init (MamanBaz *self) +viewer_file_init (ViewerFile *self) { - MamanBaz *self = MAMAN_BAZ (instance); - self->instance_member = 0xdeadbeaf; + /* Instance variable initialisation code. */ } @@ -951,73 +1090,87 @@ maman_baz_init (MamanBaz *self) Java's interface I1 extends interface I2. The example below shows the GObject equivalent: -/* Make the MamanIbar interface require MamanIbaz interface. */ -G_DEFINE_INTERFACE (MamanIbar, maman_ibar, MAMAN_TYPE_IBAZ); +/* Make the ViewerEditableLossy interface require ViewerEditable interface. */ +G_DEFINE_INTERFACE (ViewerEditableLossy, viewer_editable_lossy, VIEWER_TYPE_EDITABLE); In the G_DEFINE_INTERFACE call above, the third parameter defines the prerequisite type. This is the GType of either an interface or a class. In this case - the MamanIbaz interface is a prerequisite of the MamanIbar. The code + the ViewerEditable interface is a prerequisite of + ViewerEditableLossy. The code below shows how an implementation can implement both interfaces and register their implementations: static void -maman_ibar_do_another_action (MamanIbar *ibar) +viewer_file_editable_lossy_compress (ViewerEditableLossy *editable) { - MamanBar *self = MAMAN_BAR (ibar); + ViewerFile *self = VIEWER_FILE (editable); - g_print ("Bar implementation of IBar interface Another Action: 0x%x.\n", - self->instance_member); + g_print ("File implementation of lossy editable interface compress method: %s.\n", + self->filename); } static void -maman_ibar_interface_init (MamanIbarInterface *iface) +viewer_file_editable_lossy_interface_init (ViewerEditableLossyInterface *iface) { - iface->do_another_action = maman_ibar_do_another_action; + iface->compress = viewer_file_editable_lossy_compress; } static void -maman_ibaz_do_action (MamanIbaz *ibaz) +viewer_file_editable_save (ViewerEditable *editable, + GError **error) { - MamanBar *self = MAMAN_BAR (ibaz); + ViewerFile *self = VIEWER_FILE (editable); - g_print ("Bar implementation of Ibaz interface Action: 0x%x.\n", - self->instance_member); + g_print ("File implementation of editable interface save method: %s.\n", + self->filename); } static void -maman_ibaz_do_something (MamanIbaz *ibaz) +viewer_file_editable_undo (ViewerEditable *editable, + guint n_steps) { - MamanBar *self = MAMAN_BAR (ibaz); + ViewerFile *self = VIEWER_FILE (editable); - g_print ("Bar implementation of Ibaz interface Something: 0x%x.\n", - self->instance_member); + g_print ("File implementation of editable interface undo method: %s.\n", + self->filename); } static void -maman_ibaz_interface_init (MamanIbazInterface *iface) +viewer_file_editable_redo (ViewerEditable *editable, + guint n_steps) { - iface->do_action = maman_ibaz_do_action; - iface->do_something = maman_ibaz_do_something; + ViewerFile *self = VIEWER_FILE (editable); + + g_print ("File implementation of editable interface redo method: %s.\n", + self->filename); } static void -maman_bar_class_init (MamanBarClass *klass) +viewer_file_editable_interface_init (ViewerEditableInterface *iface) { + iface->save = viewer_file_editable_save; + iface->undo = viewer_file_editable_undo; + iface->redo = viewer_file_editable_redo; +} +static void +viewer_file_class_init (ViewerFileClass *klass) +{ + /* Nothing here. */ } static void -maman_bar_init (MamanBar *self) +viewer_file_init (ViewerFile *self) { - self->instance_member = 0x666; + /* Instance variable initialisation code. */ } -G_DEFINE_TYPE_WITH_CODE (MamanBar, maman_bar, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (MAMAN_TYPE_IBAZ, - maman_ibaz_interface_init) - G_IMPLEMENT_INTERFACE (MAMAN_TYPE_IBAR, - maman_ibar_interface_init)) +G_DEFINE_TYPE_WITH_CODE (ViewerFile, viewer_file, G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (VIEWER_TYPE_EDITABLE, + viewer_file_editable_interface_init) + G_IMPLEMENT_INTERFACE (VIEWER_TYPE_EDITABLE_LOSSY, + viewer_file_editable_lossy_interface_init)) It is very important to notice that the order in which interface implementations are added to the main object is not random: @@ -1043,24 +1196,22 @@ G_DEFINE_TYPE_WITH_CODE (MamanBar, maman_bar, G_TYPE_OBJECT, - To include a property named 'name' of type string in the - maman_ibaz interface example code above, we only need to - add one - - - That really is one line extended to six for the sake of clarity - - - line in the maman_ibaz_default_init as shown below: + To include a property named 'autosave-frequency' of type gdouble in the + ViewerEditable interface example code above, we only need to + add one call in viewer_editable_default_init as shown + below: static void -maman_ibaz_default_init (MamanIbazInteface *iface) +viewer_editable_default_init (ViewerEditableInterface *iface) { g_object_interface_install_property (iface, - g_param_spec_string ("name", - "Name", - "Name of the MamanIbaz", - "maman", + g_param_spec_double ("autosave-frequency", + "Autosave frequency", + "Frequency (in per-seconds) to autosave backups of the editable content at. " + "Or zero to disable autosaves.", + 0.0, /* minimum */ + G_MAXDOUBLE, /* maximum */ + 0.0, /* default */ G_PARAM_READWRITE)); } @@ -1069,9 +1220,10 @@ maman_ibaz_default_init (MamanIbazInteface *iface) One point worth noting is that the declared property wasn't assigned an integer ID. The reason being that integer IDs of properties are used - only inside the get and set methods and since interfaces do not - implement properties, there is no need to assign integer IDs to - interface properties. + only inside the get_property and + set_property virtual methods. Since interfaces + declare but do not implement properties, there is no + need to assign integer IDs to them. @@ -1081,36 +1233,33 @@ maman_ibaz_default_init (MamanIbazInteface *iface) implements using g_object_class_override_property instead of g_object_class_install_property. The following code snippet shows the modifications needed in the - MamanBaz declaration and implementation above: + ViewerFile declaration and implementation above: - -struct _MamanBaz +struct _ViewerFile { GObject parent_instance; - gint instance_member; - gchar *name; + gdouble autosave_frequency; }; enum { - PROP_0, - PROP_NAME + PROP_AUTOSAVE_FREQUENCY = 1, + N_PROPERTIES }; static void -maman_baz_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) +viewer_file_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) { - MamanBaz *baz = MAMAN_BAZ (object); + ViewerFile *file = VIEWER_FILE (object); switch (prop_id) { - case PROP_NAME: - g_free (baz->name); - baz->name = g_value_dup_string (value); + case PROP_AUTOSAVE_FREQUENCY: + file->autosave_frequency = g_value_get_double (value); break; default: @@ -1120,17 +1269,17 @@ maman_baz_set_property (GObject *object, } static void -maman_baz_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) +viewer_file_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) { - MamanBaz *baz = MAMAN_BAZ (object); + ViewerFile *file = VIEWER_FILE (object); switch (prop_id) { - case PROP_NAME: - g_value_set_string (value, baz->name); + case PROP_AUTOSAVE_FREQUENCY: + g_value_set_double (value, file->autosave_frequency); break; default: @@ -1140,16 +1289,15 @@ maman_baz_get_property (GObject *object, } static void -maman_baz_class_init (MamanBazClass *klass) +viewer_file_class_init (ViewerFileClass *klass) { - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GObjectClass *object_class = G_OBJECT_CLASS (klass); - gobject_class->set_property = maman_baz_set_property; - gobject_class->get_property = maman_baz_get_property; + object_class->set_property = viewer_file_set_property; + object_class->get_property = viewer_file_get_property; - g_object_class_override_property (gobject_class, PROP_NAME, "name"); + g_object_class_override_property (object_class, PROP_AUTOSAVE_FREQUENCY, "autosave-frequency"); } - @@ -1159,51 +1307,54 @@ maman_baz_class_init (MamanBazClass *klass) Overriding interface methods - If a base class already implements an interface, and in a derived - class you wish to implement the same interface overriding only certain - methods of that interface, you just reimplement the interface and - set only the interface methods you wish to override. + If a base class already implements an interface and a derived + class needs to implement the same interface but needs to override certain + methods, you must reimplement the interface and set only the interface + methods which need overriding. - In this example MamanDerivedBaz is derived from MamanBaz. Both - implement the MamanIbaz interface. MamanDerivedBaz only implements one - method of the MamanIbaz interface and uses the base class implementation - of the other. + In this example, ViewerAudioFile is derived from + ViewerFile. Both implement the ViewerEditable + interface. ViewerAudioFile only implements one method of the + ViewerEditable interface and uses the base class implementation of + the other. static void -maman_derived_ibaz_do_action (MamanIbaz *ibaz) +viewer_audio_file_editable_save (ViewerEditable *editable, + GError **error) { - MamanDerivedBaz *self = MAMAN_DERIVED_BAZ (ibaz); - g_print ("DerivedBaz implementation of Ibaz interface Action\n"); + ViewerAudioFile *self = VIEWER_AUDIO_FILE (editable); + + g_print ("Audio file implementation of editable interface save method.\n"); } static void -maman_derived_ibaz_interface_init (MamanIbazInterface *iface) +viewer_audio_file_editable_interface_init (ViewerEditableInterface *iface) { - /* Override the implementation of do_action */ - iface->do_action = maman_derived_ibaz_do_action; + /* Override the implementation of save(). */ + iface->save = viewer_audio_file_editable_save; /* - * We simply leave iface->do_something alone, it is already set to the + * Leave iface->undo and ->redo alone, they are already set to the * base class implementation. */ } -G_DEFINE_TYPE_WITH_CODE (MamanDerivedBaz, maman_derived_baz, MAMAN_TYPE_BAZ, - G_IMPLEMENT_INTERFACE (MAMAN_TYPE_IBAZ, - maman_derived_ibaz_interface_init) +G_DEFINE_TYPE_WITH_CODE (ViewerAudioFile, viewer_audio_file, VIEWER_TYPE_FILE, + G_IMPLEMENT_INTERFACE (VIEWER_TYPE_EDITABLE, + viewer_audio_file_editable_interface_init)) static void -maman_derived_baz_class_init (MamanDerivedBazClass *klass) +viewer_audio_file_class_init (ViewerAudioFileClass *klass) { - + /* Nothing here. */ } static void -maman_derived_baz_init (MamanDerivedBaz *self) +viewer_audio_file_init (ViewerAudioFile *self) { - + /* Nothing here. */ } @@ -1215,49 +1366,54 @@ maman_derived_baz_init (MamanDerivedBaz *self) - If you wish to call the base class implementation of an interface + To call the base class implementation of an interface method from an derived class where than interface method has been - overridden then you can stash away the pointer returned from + overridden, stash away the pointer returned from g_type_interface_peek_parent in a global variable. - In this example MamanDerivedBaz overides the - do_action interface method. In its overridden method + In this example ViewerAudioFile overrides the + save interface method. In its overridden method it calls the base class implementation of the same interface method. -static MamanIbazInterface *maman_ibaz_parent_interface = NULL; +static ViewerEditableInterface *viewer_editable_parent_interface = NULL; static void -maman_derived_ibaz_do_action (MamanIbaz *ibaz) +viewer_audio_file_editable_save (ViewerEditable *editable, + GError **error) { - MamanDerivedBaz *self = MAMAN_DERIVED_BAZ (ibaz); - g_print ("DerivedBaz implementation of Ibaz interface Action\n"); + ViewerAudioFile *self = VIEWER_AUDIO_FILE (editable); - /* Now we call the base implementation */ - maman_ibaz_parent_interface->do_action (ibaz); + g_print ("Audio file implementation of editable interface save method.\n"); + + /* Now call the base implementation */ + viewer_editable_parent_interface->save (editable, error); } static void -maman_derived_ibaz_interface_init (MamanIbazInterface *iface) +viewer_audio_file_editable_interface_init (ViewerEditableInterface *iface) { - maman_ibaz_parent_interface = g_type_interface_peek_parent (iface); - iface->do_action = maman_derived_ibaz_do_action; + viewer_editable_parent_interface = g_type_interface_peek_parent (iface); + + iface->save = viewer_audio_file_editable_save; } -G_DEFINE_TYPE_WITH_CODE (MamanDerivedBaz, maman_derived_baz, MAMAN_TYPE_BAZ, - G_IMPLEMENT_INTERFACE (MAMAN_TYPE_IBAZ, - maman_derived_ibaz_interface_init)) +G_DEFINE_TYPE_WITH_CODE (ViewerAudioFile, viewer_audio_file, VIEWER_TYPE_FILE, + G_IMPLEMENT_INTERFACE (VIEWER_TYPE_EDITABLE, + viewer_audio_file_editable_interface_init)) static void -maman_derived_baz_class_init (MamanDerivedBazClass *klass) +viewer_audio_file_class_init (ViewerAudioFileClass *klass) { + /* Nothing here. */ } static void -maman_derived_baz_init (MamanDerivedBaz *self) +viewer_audio_file_init (ViewerAudioFile *self) { + /* Nothing here. */ } @@ -1271,7 +1427,7 @@ maman_derived_baz_init (MamanDerivedBaz *self) How to create and use signals - The signal system which was built in GType is pretty complex and + The signal system in GType is pretty complex and flexible: it is possible for its users to connect at runtime any number of callbacks (implemented in any language for which a binding exists) @@ -1282,481 +1438,84 @@ maman_derived_baz_init (MamanDerivedBaz *self) to any signal and to stop the emission of any signal at any state of the signal emission process. This flexibility makes it - possible to use GSignal for much more than just emit signals which - can be received by numerous clients. + possible to use GSignal for much more than just emitting signals to + multiple clients. Simple use of signals - The most basic use of signals is to implement simple event - notification: for example, if we have a MamanFile object, and - if this object has a write method, we might wish to be notified - whenever someone has changed something via our MamanFile instance. + The most basic use of signals is to implement event + notification. For example, given a ViewerFile object with + a write method, a signal could be emitted whenever + the file is changed using that method. The code below shows how the user can connect a callback to the "changed" signal. -file = g_object_new (MAMAN_FILE_TYPE, NULL); +file = g_object_new (VIEWER_FILE_TYPE, NULL); -g_signal_connect (file, "changed", G_CALLBACK (changed_event), NULL); +g_signal_connect (file, "changed", (GCallback) changed_event, NULL); -maman_file_write (file, buffer, strlen (buffer)); +viewer_file_write (file, buffer, strlen (buffer)); - The MamanFile signal is registered in the class_init - function: + The ViewerFile signal is registered in the + class_init function: file_signals[CHANGED] = g_signal_newv ("changed", - G_TYPE_FROM_CLASS (gobject_class), + G_TYPE_FROM_CLASS (object_class), G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS, NULL /* closure */, NULL /* accumulator */, NULL /* accumulator data */, - g_cclosure_marshal_VOID__VOID, + NULL /* C marshaller */, G_TYPE_NONE /* return_type */, 0 /* n_params */, NULL /* param_types */); - and the signal is emitted in maman_file_write: + and the signal is emitted in viewer_file_write: void -maman_file_write (MamanFile *self, - const guchar *buffer, - gssize size) +viewer_file_write (ViewerFile *self, + const guint8 *buffer, + gsize size) { + g_return_if_fail (VIEWER_IS_FILE (self)); + g_return_if_fail (buffer != NULL || size == 0); + /* First write data. */ /* Then, notify user of data written. */ g_signal_emit (self, file_signals[CHANGED], 0 /* details */); } - As shown above, you can safely set the details parameter to zero if - you do not know what it can be used for. For a discussion of what you - could used it for, see - - - - The signature of the signal handler in the above example is defined as - g_cclosure_marshal_VOID__VOID. Its name follows - a simple convention which encodes the function parameter and return value - types in the function name. Specifically, the value in front of the - double underscore is the type of the return value, while the value(s) - after the double underscore denote the parameter types. - - - - The header gobject/gmarshal.h defines a set of - commonly needed closures that one can use. If you want to have complex - marshallers for your signals you should probably use glib-genmarshal - to autogenerate them from a file containing their return and - parameter types. - - - - - - - - - - - diff --git a/docs/reference/gobject/tut_intro.xml b/docs/reference/gobject/tut_intro.xml index 6beff8d..7614bf0 100644 --- a/docs/reference/gobject/tut_intro.xml +++ b/docs/reference/gobject/tut_intro.xml @@ -34,7 +34,7 @@ Data types and programming - One could say (I have seen such definitions used in some textbooks on programming language theory) + One could say that a programming language is merely a way to create data types and manipulate them. Most languages provide a number of language-native types and a few primitives to create more complex types based on these primitive types. @@ -44,7 +44,7 @@ In C, the language provides types such as char, long, pointer. During compilation of C code, the compiler maps these language types to the compiler's target architecture machine types. If you are using a C interpreter - (I have never seen one myself but it is possible :), the interpreter (the program which interprets + (assuming one exists), the interpreter (the program which interprets the source code and executes it) maps the language types to the machine types of the target machine at runtime, during the program execution (or just before execution if it uses a Just In Time compiler engine). @@ -87,17 +87,20 @@ print "this is an integer converted to a string:" . $tmp . "\n"; For the sake of discussion, here is a sample C function and the associated 32 bit x86 - assembly code generated by GCC on my Linux box: + assembly code generated by GCC on a Linux computer: -static void function_foo (int foo) -{} - -int main (int argc, char *argv[]) +static void +function_foo (int foo) { +} - function_foo (10); +int +main (int argc, + char *argv[]) +{ + function_foo (10); - return 0; + return 0; } push $0xa @@ -106,7 +109,7 @@ call 0x80482f4 <function_foo> The assembly code shown above is pretty straightforward: the first instruction pushes the hexadecimal value 0xa (decimal value 10) as a 32-bit integer on the stack and calls function_foo. As you can see, C function calls are implemented by - gcc by native function calls (this is probably the fastest implementation possible). + GCC as native function calls (this is probably the fastest implementation possible). diff --git a/docs/reference/gobject/version.xml b/docs/reference/gobject/version.xml new file mode 100644 index 0000000..9a9feb0 --- /dev/null +++ b/docs/reference/gobject/version.xml @@ -0,0 +1 @@ +2.48.0 diff --git a/gio/.gitignore b/gio/.gitignore deleted file mode 100644 index 5aa5588..0000000 --- a/gio/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -gconstructor_as_data.h -gdbus -gdbus-example-objectmanager-generated-org.gtk.GDBus.Example.ObjectManager.Animal.xml -gdbus-example-objectmanager-generated-org.gtk.GDBus.Example.ObjectManager.Cat.xml -gdbus-example-objectmanager-generated.[ch] -gdbus-daemon-generated.[ch] -gio-marshal.[ch] -gio-public-headers.txt -gio-querymodules -gioenumtypes.[ch] -glib-compile-resources -glib-compile-schemas -gnetworking.h -gresource -gschema-compile -gsettings -gapplication diff --git a/gio/Makefile.am b/gio/Makefile.am index 28aea41..e911d91 100644 --- a/gio/Makefile.am +++ b/gio/Makefile.am @@ -185,8 +185,6 @@ application_sources = \ local_sources = \ ghttpproxy.c \ ghttpproxy.h \ - glocaldirectorymonitor.c \ - glocaldirectorymonitor.h \ glocalfile.c \ glocalfile.h \ glocalfileenumerator.c \ @@ -229,13 +227,6 @@ platform_libadd += kqueue/libkqueue.la platform_deps += kqueue/libkqueue.la endif -if HAVE_FEN -AM_CPPFLAGS += -DHAVE_FEN -SUBDIRS += fen -platform_libadd += fen/libfen.la -platform_deps += fen/libfen.la -endif - if OS_WIN32 SUBDIRS += win32 platform_libadd += win32/libgiowin32.la @@ -274,6 +265,9 @@ unix_sources = \ ggtknotificationbackend.c \ $(NULL) +if OS_COCOA +unix_sources += gcocoanotificationbackend.c +endif giounixincludedir=$(includedir)/gio-unix-2.0/gio giounixinclude_HEADERS = \ @@ -308,6 +302,8 @@ gdbus_daemon_sources = \ win32_actual_sources = \ $(gdbus_daemon_sources) \ + gwin32registrykey.c \ + gwin32registrykey.h \ gcontenttype-win32.c \ gwin32mount.c \ gwin32mount.h \ @@ -322,11 +318,12 @@ win32_actual_sources = \ win32_more_sources_for_vcproj = \ gwin32appinfo.c \ gregistrysettingsbackend.c \ - win32/gwin32directorymonitor.c \ win32/gwinhttpfile.c \ win32/gwinhttpfileinputstream.c \ win32/gwinhttpfileoutputstream.c \ - win32/gwinhttpvfs.c + win32/gwinhttpvfs.c \ + win32/gwin32fsmonitorutils.c \ + win32/gwin32filemonitor.c if OS_WIN32 appinfo_sources += gwin32appinfo.c gwin32appinfo.h @@ -360,6 +357,7 @@ libgio_2_0_la_SOURCES = \ gconverteroutputstream.c \ gcredentials.c \ gcredentialsprivate.h \ + gdatagrambased.c \ gdatainputstream.c \ gdataoutputstream.c \ gdrive.c \ @@ -408,6 +406,8 @@ libgio_2_0_la_SOURCES = \ gmountoperation.c \ gnativevolumemonitor.c \ gnativevolumemonitor.h \ + gnativesocketaddress.c \ + gnativesocketaddress.h \ gnetworkaddress.c \ gnetworking.c \ gnetworkingprivate.h \ @@ -468,6 +468,9 @@ libgio_2_0_la_SOURCES = \ gtlsinteraction.c \ gtlspassword.c \ gtlsserverconnection.c \ + gdtlsconnection.c \ + gdtlsclientconnection.c \ + gdtlsserverconnection.c \ gunionvolumemonitor.c \ gunionvolumemonitor.h \ gvfs.c \ @@ -528,7 +531,7 @@ libgio_2_0_la_LDFLAGS = $(GLIB_LINK_FLAGS) \ if OS_COCOA # This is dumb. The ObjC source file should be properly named .m libgio_2_0_la_CFLAGS += -xobjective-c -libgio_2_0_la_LDFLAGS += -Wl,-framework,Foundation +libgio_2_0_la_LDFLAGS += -Wl,-framework,Foundation -Wl,-framework,AppKit endif libgio_2_0_la_DEPENDENCIES = $(gio_win32_res) $(gio_def) $(platform_deps) @@ -549,6 +552,7 @@ gio_headers = \ gconverter.h \ gconverterinputstream.h \ gconverteroutputstream.h \ + gdatagrambased.h \ gdatainputstream.h \ gdataoutputstream.h \ gdrive.h \ @@ -631,6 +635,9 @@ gio_headers = \ gtlsinteraction.h \ gtlspassword.h \ gtlsserverconnection.h \ + gdtlsconnection.h \ + gdtlsclientconnection.h \ + gdtlsserverconnection.h \ gvfs.h \ gvolume.h \ gvolumemonitor.h \ @@ -707,6 +714,7 @@ bin_PROGRAMS = gio-querymodules glib-compile-schemas glib-compile-resources gset glib_compile_resources_LDADD = libgio-2.0.la \ $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ $(top_builddir)/glib/libglib-2.0.la \ $(NULL) @@ -736,6 +744,7 @@ glib_compile_schemas_SOURCES = \ gsettings_LDADD = libgio-2.0.la \ $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ $(top_builddir)/glib/libglib-2.0.la \ $(NULL) gsettings_SOURCES = gsettings-tool.c @@ -743,6 +752,9 @@ gsettings_SOURCES = gsettings-tool.c schemadir = $(datadir)/glib-2.0/schemas dist_schema_DATA = gschema.dtd +itsdir = $(datadir)/gettext/its +dist_its_DATA = gschema.loc gschema.its + # ------------------------------------------------------------------------ # gdbus(1) tool @@ -750,6 +762,7 @@ bin_PROGRAMS += gdbus gdbus_SOURCES = gdbus-tool.c gdbus_LDADD = libgio-2.0.la \ $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ $(top_builddir)/glib/libglib-2.0.la \ $(NULL) @@ -760,6 +773,7 @@ bin_PROGRAMS += gapplication gapplication_SOURCES = gapplication-tool.c gapplication_LDADD = libgio-2.0.la \ $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ $(top_builddir)/glib/libglib-2.0.la \ $(NULL) endif @@ -780,49 +794,45 @@ gresource_SOURCES = gresource-tool.c gresource_CPPFLAGS = $(LIBELF_CFLAGS) $(AM_CPPFLAGS) gresource_LDADD = libgio-2.0.la \ $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ $(top_builddir)/glib/libglib-2.0.la \ $(LIBELF_LIBS) # ------------------------------------------------------------------------ +# ------ MSVC Project File Generation ------ +MSVCPROJS = gio glib-compile-resources glib-compile-schemas + +gio_FILES = $(libgio_2_0_la_SOURCES) $(win32_actual_sources) $(win32_more_sources_for_vcproj) +gio_EXCLUDES = gunix*.c|gdesktopappinfo.c|gnetworkmonitornetlink.c|gcontenttype.c|gnetworkmonitornm.c + +gio_HEADERS_DIR = $(includedir)/glib-2.0/gio +gio_HEADERS_INST = $(gioinclude_HEADERS) $(nodist_gioinclude_HEADERS) +gio_HEADERS_EXCLUDES = dummy + +glib_compile_resources_FILES = $(glib_compile_resources_SOURCES) +glib_compile_resources_EXCLUDES = dummy -dist-hook: $(BUILT_EXTRA_DIST) ../build/win32/vs9/gio.vcproj ../build/win32/vs10/gio.vcxproj ../build/win32/vs10/gio.vcxproj.filters +glib_compile_schemas_FILES = $(glib_compile_schemas_SOURCES) +glib_compile_schemas_EXCLUDES = dummy + +include $(top_srcdir)/build/Makefile.msvcproj + +dist-hook: \ + $(BUILT_EXTRA_DIST) \ + $(top_builddir)/build/win32/vs9/gio.vcproj \ + $(top_builddir)/build/win32/vs9/gio.headers \ + $(top_builddir)/build/win32/vs9/glib-compile-schemas.vcproj \ + $(top_builddir)/build/win32/vs9/glib-compile-resources.vcproj files='$(BUILT_EXTRA_DIST)'; \ for f in $$files; do \ if test -f $$f; then d=.; else d=$(srcdir); fi; \ cp $$d/$$f $(distdir) || exit 1; done -../build/win32/vs9/gio.vcproj: $(top_srcdir)/build/win32/vs9/gio.vcprojin - for F in `echo $(libgio_2_0_la_SOURCES) $(win32_actual_sources) $(win32_more_sources_for_vcproj) | tr '/' '\\'`; do \ - case $$F in \ - gunix*.c|gdesktopappinfo.c|gnetworkmonitornetlink.c|gcontenttype.c|gnetworkmonitornm.c) ;; \ - *.c) echo ' ' \ - ;; \ - esac; \ - done | sort -u >libgio.sourcefiles - $(CPP) -P - <$(top_srcdir)/build/win32/vs9/gio.vcprojin >$@ - rm libgio.sourcefiles - -../build/win32/vs10/gio.vcxproj: $(top_srcdir)/build/win32/vs10/gio.vcxprojin - for F in `echo $(libgio_2_0_la_SOURCES) $(win32_actual_sources) $(win32_more_sources_for_vcproj) | tr '/' '\\'`; do \ - case $$F in \ - gunix*.c|gdesktopappinfo.c|gnetworkmonitornetlink.c|gcontenttype.c|gnetworkmonitornm.c) ;; \ - *.c) echo ' ' \ - ;; \ - esac; \ - done | sort -u >libgio.vs10.sourcefiles - $(CPP) -P - <$(top_srcdir)/build/win32/vs10/gio.vcxprojin >$@ - rm libgio.vs10.sourcefiles - -../build/win32/vs10/gio.vcxproj.filters: $(top_srcdir)/build/win32/vs10/gio.vcxproj.filtersin - for F in `echo $(libgio_2_0_la_SOURCES) $(win32_actual_sources) $(win32_more_sources_for_vcproj) | tr '/' '\\'`; do \ - case $$F in \ - gunix*.c|gdesktopappinfo.c|gnetworkmonitornetlink.c|gcontenttype.c|gnetworkmonitornm.c) ;; \ - *.c) echo ' Source Files' \ - ;; \ - esac; \ - done | sort -u >libgio.vs10.sourcefiles.filters - $(CPP) -P - <$(top_srcdir)/build/win32/vs10/gio.vcxproj.filtersin >$@ - rm libgio.vs10.sourcefiles.filters +if HAVE_GLIB_RUNTIME_LIBDIR +ABS_GLIB_RUNTIME_LIBDIR = $(realpath $(libdir)/$(GLIB_RUNTIME_LIBDIR)) +else +ABS_GLIB_RUNTIME_LIBDIR = $(libdir) +endif if HAVE_GLIB_RUNTIME_LIBDIR install-data-hook: diff --git a/gio/Makefile.in b/gio/Makefile.in new file mode 100644 index 0000000..693540f --- /dev/null +++ b/gio/Makefile.in @@ -0,0 +1,4821 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + +# Author: Fan, Chun-wei +# Common Autotools file used to generate Visual Studio 2008+ +# Projects from their templates + +# This autotools file, from GLib, can be used in other projects +# that have Visual Studio build support, and is copied into +# $(srcroot)/build/. + +# * Input variables: +# +# MSVCPROJS - List of Projects that should be generated +# +# * Simple tutorial +# +# Add this to Makefile.am where your library/program is built: +# include $(top_srcdir)/build/Makefile.msvcproj +# MSVCPROJS = YourProject (can be multiple projects in a single srcdir) +# YourProject_FILES = $(libyourlib_1_0_SOURCES) +# YourProject_EXCLUDES = ... # list of sources to exclude, separated by '|', wildcards allowed; use random unsed value if none +# YourProject_HEADERS_DIR = $(libyourlibincludedir) +# YourProject_HEADERS_INST = $(libyourlib_1_0_HEADERS) +# YourProject_HEADERS_EXCLUDES = ... # +# +# dist-hook: \ # (or add to it if it is already there, note the vs9 items will also call the vs10 items in the process) +# $(top_builddir)/build/win32/vs9/YourProject.vcproj \ +# $(top_builddir)/build/win32/vs9/YourProject.headers + +# Private functions + + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_2) +noinst_PROGRAMS = $(am__EXEEXT_4) +check_PROGRAMS = $(am__EXEEXT_3) +TESTS = $(am__EXEEXT_2) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +@OS_UNIX_TRUE@am__append_15 = xdgmime +@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@am__append_16 = gio-2.0.lib +@OS_WIN32_TRUE@am__append_17 = \ +@OS_WIN32_TRUE@ gregistrysettingsbackend.h \ +@OS_WIN32_TRUE@ gregistrysettingsbackend.c + +@OS_COCOA_TRUE@am__append_18 = \ +@OS_COCOA_TRUE@ gnextstepsettingsbackend.c + +@HAVE_INOTIFY_TRUE@am__append_19 = inotify +@HAVE_INOTIFY_TRUE@am__append_20 = inotify/libinotify.la +@HAVE_INOTIFY_TRUE@am__append_21 = inotify/libinotify.la +@HAVE_KQUEUE_TRUE@am__append_22 = kqueue +@HAVE_KQUEUE_TRUE@am__append_23 = kqueue/libkqueue.la +@HAVE_KQUEUE_TRUE@am__append_24 = kqueue/libkqueue.la +@OS_WIN32_TRUE@am__append_25 = win32 +@OS_WIN32_TRUE@am__append_26 = win32/libgiowin32.la +@OS_WIN32_TRUE@am__append_27 = win32/libgiowin32.la +@HAVE_FAM_TRUE@am__append_28 = fam +@OS_UNIX_TRUE@am__append_29 = gdesktopappinfo.c +@OS_UNIX_TRUE@am__append_30 = xdgmime/libxdgmime.la +@OS_UNIX_TRUE@am__append_31 = xdgmime/libxdgmime.la +@OS_COCOA_TRUE@@OS_UNIX_TRUE@am__append_32 = gcocoanotificationbackend.c +@HAVE_NETLINK_TRUE@@OS_UNIX_TRUE@am__append_33 = \ +@HAVE_NETLINK_TRUE@@OS_UNIX_TRUE@ gnetworkmonitornetlink.c \ +@HAVE_NETLINK_TRUE@@OS_UNIX_TRUE@ gnetworkmonitornetlink.h \ +@HAVE_NETLINK_TRUE@@OS_UNIX_TRUE@ gnetworkmonitornm.c \ +@HAVE_NETLINK_TRUE@@OS_UNIX_TRUE@ gnetworkmonitornm.h \ +@HAVE_NETLINK_TRUE@@OS_UNIX_TRUE@ $(NULL) + +@OS_WIN32_TRUE@am__append_34 = gwin32appinfo.c gwin32appinfo.h +@OS_WIN32_TRUE@am__append_35 = -lshlwapi -lws2_32 -ldnsapi -liphlpapi + +# This is dumb. The ObjC source file should be properly named .m +@OS_COCOA_TRUE@am__append_36 = -xobjective-c +@OS_COCOA_TRUE@am__append_37 = -Wl,-framework,Foundation -Wl,-framework,AppKit +bin_PROGRAMS = gio-querymodules$(EXEEXT) glib-compile-schemas$(EXEEXT) \ + glib-compile-resources$(EXEEXT) gsettings$(EXEEXT) \ + gdbus$(EXEEXT) $(am__EXEEXT_1) gresource$(EXEEXT) + +# ------------------------------------------------------------------------ +# gapplication(1) tool +@OS_UNIX_TRUE@am__append_38 = gapplication +subdir = gio +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_its_DATA) \ + $(dist_schema_DATA) $(gioinclude_HEADERS) \ + $(am__giounixinclude_HEADERS_DIST) \ + $(am__giowin32include_HEADERS_DIST) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = gnetworking.h gio.rc +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(completiondir)" \ + "$(DESTDIR)$(itsdir)" "$(DESTDIR)$(schemadir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(gioincludedir)" \ + "$(DESTDIR)$(giounixincludedir)" \ + "$(DESTDIR)$(giowin32includedir)" "$(DESTDIR)$(gioincludedir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(lib_LTLIBRARIES) \ + $(noinst_LTLIBRARIES) +am__DEPENDENCIES_1 = +am__DEPENDENCIES_2 = $(am__append_20) $(am__append_23) \ + $(am__append_26) $(am__append_30) $(am__DEPENDENCIES_1) +am__libgio_2_0_la_SOURCES_DIST = gappinfo.c gappinfoprivate.h \ + gasynchelper.c gasynchelper.h gasyncinitable.c gasyncresult.c \ + gbufferedinputstream.c gbufferedoutputstream.c gbytesicon.c \ + gcancellable.c gcharsetconverter.c gcontextspecificgroup.c \ + gcontextspecificgroup.h gconverter.c gconverterinputstream.c \ + gconverteroutputstream.c gcredentials.c gcredentialsprivate.h \ + gdatagrambased.c gdatainputstream.c gdataoutputstream.c \ + gdrive.c gdummyfile.h gdummyfile.c gdummyproxyresolver.c \ + gdummyproxyresolver.h gdummytlsbackend.c gdummytlsbackend.h \ + gemblem.h gemblem.c gemblemedicon.h gemblemedicon.c gfile.c \ + gfileattribute.c gfileattribute-priv.h gfileenumerator.c \ + gfileicon.c gfileinfo.c gfileinfo-priv.h gfileinputstream.c \ + gfilemonitor.c gfilenamecompleter.c gfileoutputstream.c \ + gfileiostream.c gfilterinputstream.c gfilteroutputstream.c \ + gicon.c ginetaddress.c ginetaddressmask.c ginetsocketaddress.c \ + ginitable.c ginputstream.c gioenums.h gioerror.c giomodule.c \ + giomodule-priv.h gioscheduler.c giostream.c gioprivate.h \ + giowin32-priv.h gloadableicon.c gmount.c gmemoryinputstream.c \ + gmemoryoutputstream.c gmountoperation.c gnativevolumemonitor.c \ + gnativevolumemonitor.h gnativesocketaddress.c \ + gnativesocketaddress.h gnetworkaddress.c gnetworking.c \ + gnetworkingprivate.h gnetworkmonitor.c gnetworkmonitorbase.c \ + gnetworkmonitorbase.h gnetworkservice.c goutputstream.c \ + gpermission.c gpollableinputstream.c gpollableoutputstream.c \ + gpollableutils.c gpollfilemonitor.c gpollfilemonitor.h \ + gproxy.c gproxyaddress.c gproxyaddressenumerator.c \ + gproxyresolver.c gresolver.c gresource.c gresourcefile.c \ + gresourcefile.h gseekable.c gsimpleasyncresult.c \ + gsimpleiostream.c gsimplepermission.c gsocket.c \ + gsocketaddress.c gsocketaddressenumerator.c gsocketclient.c \ + gsocketconnectable.c gsocketconnection.c \ + gsocketcontrolmessage.c gsocketinputstream.c \ + gsocketinputstream.h gsocketlistener.c gsocketoutputstream.c \ + gsocketoutputstream.h gsubprocesslauncher.c gsubprocess.c \ + gsubprocesslauncher-private.h gsocketservice.c gsrvtarget.c \ + gsimpleproxyresolver.c gtask.c gtcpconnection.c \ + gtcpwrapperconnection.c gthreadedsocketservice.c gthemedicon.c \ + gthreadedresolver.c gthreadedresolver.h gtlsbackend.c \ + gtlscertificate.c gtlsclientconnection.c gtlsconnection.c \ + gtlsdatabase.c gtlsfiledatabase.c gtlsinteraction.c \ + gtlspassword.c gtlsserverconnection.c gdtlsconnection.c \ + gdtlsclientconnection.c gdtlsserverconnection.c \ + gunionvolumemonitor.c gunionvolumemonitor.h gvfs.c gvolume.c \ + gvolumemonitor.c gzlibcompressor.c gzlibdecompressor.c \ + gmountprivate.h gioenumtypes.h gioenumtypes.c glistmodel.c \ + gliststore.c gdesktopappinfo.c gwin32appinfo.c gwin32appinfo.h \ + gfiledescriptorbased.c gunixconnection.c \ + gunixcredentialsmessage.c gunixfdlist.c gunixfdmessage.c \ + gunixmount.c gunixmount.h gunixmounts.c gunixsocketaddress.c \ + gunixvolume.c gunixvolume.h gunixvolumemonitor.c \ + gunixvolumemonitor.h gunixinputstream.c gunixoutputstream.c \ + gcontenttype.c gcontenttypeprivate.h gfdonotificationbackend.c \ + ggtknotificationbackend.c gcocoanotificationbackend.c \ + gnetworkmonitornetlink.c gnetworkmonitornetlink.h \ + gnetworkmonitornm.c gnetworkmonitornm.h gdbusdaemon.c \ + gdbusdaemon.h gdbus-daemon-generated.c \ + gdbus-daemon-generated.h gwin32registrykey.c \ + gwin32registrykey.h gcontenttype-win32.c gwin32mount.c \ + gwin32mount.h gwin32volumemonitor.c gwin32volumemonitor.h \ + gwin32inputstream.c gwin32outputstream.c gwin32outputstream.h \ + gwin32networking.h gapplication.c gapplicationcommandline.c \ + gapplicationimpl-dbus.c gapplicationimpl.h gactiongroup.c \ + gactionmap.c gsimpleactiongroup.c gremoteactiongroup.c \ + gactiongroupexporter.c gdbusactiongroup-private.h \ + gdbusactiongroup.c gaction.c gpropertyaction.c gsimpleaction.c \ + gmenumodel.c gmenu.c gmenuexporter.c gdbusmenumodel.c \ + gnotification-private.h gnotificationbackend.h gnotification.c \ + gnotificationbackend.c gvdb/gvdb-format.h gvdb/gvdb-reader.h \ + gvdb/gvdb-reader.c gdelayedsettingsbackend.h \ + gdelayedsettingsbackend.c gkeyfilesettingsbackend.c \ + gmemorysettingsbackend.c gnullsettingsbackend.c \ + gsettingsbackendinternal.h gsettingsbackend.c \ + gsettingsschema.h gsettingsschema-internal.h gsettingsschema.c \ + gsettings-mapping.h gsettings-mapping.c gsettings.c \ + gregistrysettingsbackend.h gregistrysettingsbackend.c \ + gnextstepsettingsbackend.c gdbusutils.h gdbusutils.c \ + gdbusaddress.h gdbusaddress.c gdbusauthobserver.h \ + gdbusauthobserver.c gdbusauth.h gdbusauth.c \ + gdbusauthmechanism.h gdbusauthmechanism.c \ + gdbusauthmechanismanon.h gdbusauthmechanismanon.c \ + gdbusauthmechanismexternal.h gdbusauthmechanismexternal.c \ + gdbusauthmechanismsha1.h gdbusauthmechanismsha1.c gdbuserror.h \ + gdbuserror.c gdbusconnection.h gdbusconnection.c \ + gdbusmessage.h gdbusmessage.c gdbusnameowning.h \ + gdbusnameowning.c gdbusnamewatching.h gdbusnamewatching.c \ + gdbusproxy.h gdbusproxy.c gdbusprivate.h gdbusprivate.c \ + gdbusintrospection.h gdbusintrospection.c \ + gdbusmethodinvocation.h gdbusmethodinvocation.c gdbusserver.h \ + gdbusserver.c gdbusinterface.h gdbusinterface.c \ + gdbusinterfaceskeleton.h gdbusinterfaceskeleton.c \ + gdbusobject.h gdbusobject.c gdbusobjectskeleton.h \ + gdbusobjectskeleton.c gdbusobjectproxy.h gdbusobjectproxy.c \ + gdbusobjectmanager.h gdbusobjectmanager.c \ + gdbusobjectmanagerclient.h gdbusobjectmanagerclient.c \ + gdbusobjectmanagerserver.h gdbusobjectmanagerserver.c \ + gtestdbus.h gtestdbus.c ghttpproxy.c ghttpproxy.h glocalfile.c \ + glocalfile.h glocalfileenumerator.c glocalfileenumerator.h \ + glocalfileinfo.c glocalfileinfo.h glocalfileinputstream.c \ + glocalfileinputstream.h glocalfilemonitor.c \ + glocalfilemonitor.h glocalfileoutputstream.c \ + glocalfileoutputstream.h glocalfileiostream.c \ + glocalfileiostream.h glocalvfs.c glocalvfs.h gsocks4proxy.c \ + gsocks4proxy.h gsocks4aproxy.c gsocks4aproxy.h gsocks5proxy.c \ + gsocks5proxy.h thumbnail-verify.h thumbnail-verify.c +@OS_UNIX_TRUE@am__objects_1 = libgio_2_0_la-gdesktopappinfo.lo +@OS_WIN32_TRUE@am__objects_2 = libgio_2_0_la-gwin32appinfo.lo +am__objects_3 = $(am__objects_1) $(am__objects_2) +am__objects_4 = +@OS_COCOA_TRUE@@OS_UNIX_TRUE@am__objects_5 = libgio_2_0_la-gcocoanotificationbackend.lo +@HAVE_NETLINK_TRUE@@OS_UNIX_TRUE@am__objects_6 = libgio_2_0_la-gnetworkmonitornetlink.lo \ +@HAVE_NETLINK_TRUE@@OS_UNIX_TRUE@ libgio_2_0_la-gnetworkmonitornm.lo \ +@HAVE_NETLINK_TRUE@@OS_UNIX_TRUE@ $(am__objects_4) +@OS_UNIX_TRUE@am__objects_7 = libgio_2_0_la-gfiledescriptorbased.lo \ +@OS_UNIX_TRUE@ libgio_2_0_la-gunixconnection.lo \ +@OS_UNIX_TRUE@ libgio_2_0_la-gunixcredentialsmessage.lo \ +@OS_UNIX_TRUE@ libgio_2_0_la-gunixfdlist.lo \ +@OS_UNIX_TRUE@ libgio_2_0_la-gunixfdmessage.lo \ +@OS_UNIX_TRUE@ libgio_2_0_la-gunixmount.lo \ +@OS_UNIX_TRUE@ libgio_2_0_la-gunixmounts.lo \ +@OS_UNIX_TRUE@ libgio_2_0_la-gunixsocketaddress.lo \ +@OS_UNIX_TRUE@ libgio_2_0_la-gunixvolume.lo \ +@OS_UNIX_TRUE@ libgio_2_0_la-gunixvolumemonitor.lo \ +@OS_UNIX_TRUE@ libgio_2_0_la-gunixinputstream.lo \ +@OS_UNIX_TRUE@ libgio_2_0_la-gunixoutputstream.lo \ +@OS_UNIX_TRUE@ libgio_2_0_la-gcontenttype.lo \ +@OS_UNIX_TRUE@ libgio_2_0_la-gfdonotificationbackend.lo \ +@OS_UNIX_TRUE@ libgio_2_0_la-ggtknotificationbackend.lo \ +@OS_UNIX_TRUE@ $(am__objects_4) $(am__objects_5) \ +@OS_UNIX_TRUE@ $(am__objects_6) +am__objects_8 = libgio_2_0_la-gdbusdaemon.lo \ + libgio_2_0_la-gdbus-daemon-generated.lo $(am__objects_4) +am__objects_9 = $(am__objects_8) libgio_2_0_la-gwin32registrykey.lo \ + libgio_2_0_la-gcontenttype-win32.lo \ + libgio_2_0_la-gwin32mount.lo \ + libgio_2_0_la-gwin32volumemonitor.lo \ + libgio_2_0_la-gwin32inputstream.lo \ + libgio_2_0_la-gwin32outputstream.lo $(am__objects_4) +@OS_WIN32_TRUE@am__objects_10 = $(am__objects_9) +am__objects_11 = libgio_2_0_la-gapplication.lo \ + libgio_2_0_la-gapplicationcommandline.lo \ + libgio_2_0_la-gapplicationimpl-dbus.lo \ + libgio_2_0_la-gactiongroup.lo libgio_2_0_la-gactionmap.lo \ + libgio_2_0_la-gsimpleactiongroup.lo \ + libgio_2_0_la-gremoteactiongroup.lo \ + libgio_2_0_la-gactiongroupexporter.lo \ + libgio_2_0_la-gdbusactiongroup.lo libgio_2_0_la-gaction.lo \ + libgio_2_0_la-gpropertyaction.lo \ + libgio_2_0_la-gsimpleaction.lo libgio_2_0_la-gmenumodel.lo \ + libgio_2_0_la-gmenu.lo libgio_2_0_la-gmenuexporter.lo \ + libgio_2_0_la-gdbusmenumodel.lo libgio_2_0_la-gnotification.lo \ + libgio_2_0_la-gnotificationbackend.lo $(am__objects_4) +@OS_WIN32_TRUE@am__objects_12 = \ +@OS_WIN32_TRUE@ libgio_2_0_la-gregistrysettingsbackend.lo +@OS_COCOA_TRUE@am__objects_13 = \ +@OS_COCOA_TRUE@ libgio_2_0_la-gnextstepsettingsbackend.lo +am__objects_14 = libgio_2_0_la-gvdb-reader.lo \ + libgio_2_0_la-gdelayedsettingsbackend.lo \ + libgio_2_0_la-gkeyfilesettingsbackend.lo \ + libgio_2_0_la-gmemorysettingsbackend.lo \ + libgio_2_0_la-gnullsettingsbackend.lo \ + libgio_2_0_la-gsettingsbackend.lo \ + libgio_2_0_la-gsettingsschema.lo \ + libgio_2_0_la-gsettings-mapping.lo libgio_2_0_la-gsettings.lo \ + $(am__objects_12) $(am__objects_13) +am__objects_15 = libgio_2_0_la-gdbusutils.lo \ + libgio_2_0_la-gdbusaddress.lo \ + libgio_2_0_la-gdbusauthobserver.lo libgio_2_0_la-gdbusauth.lo \ + libgio_2_0_la-gdbusauthmechanism.lo \ + libgio_2_0_la-gdbusauthmechanismanon.lo \ + libgio_2_0_la-gdbusauthmechanismexternal.lo \ + libgio_2_0_la-gdbusauthmechanismsha1.lo \ + libgio_2_0_la-gdbuserror.lo libgio_2_0_la-gdbusconnection.lo \ + libgio_2_0_la-gdbusmessage.lo libgio_2_0_la-gdbusnameowning.lo \ + libgio_2_0_la-gdbusnamewatching.lo libgio_2_0_la-gdbusproxy.lo \ + libgio_2_0_la-gdbusprivate.lo \ + libgio_2_0_la-gdbusintrospection.lo \ + libgio_2_0_la-gdbusmethodinvocation.lo \ + libgio_2_0_la-gdbusserver.lo libgio_2_0_la-gdbusinterface.lo \ + libgio_2_0_la-gdbusinterfaceskeleton.lo \ + libgio_2_0_la-gdbusobject.lo \ + libgio_2_0_la-gdbusobjectskeleton.lo \ + libgio_2_0_la-gdbusobjectproxy.lo \ + libgio_2_0_la-gdbusobjectmanager.lo \ + libgio_2_0_la-gdbusobjectmanagerclient.lo \ + libgio_2_0_la-gdbusobjectmanagerserver.lo \ + libgio_2_0_la-gtestdbus.lo $(am__objects_4) +am__objects_16 = libgio_2_0_la-ghttpproxy.lo \ + libgio_2_0_la-glocalfile.lo \ + libgio_2_0_la-glocalfileenumerator.lo \ + libgio_2_0_la-glocalfileinfo.lo \ + libgio_2_0_la-glocalfileinputstream.lo \ + libgio_2_0_la-glocalfilemonitor.lo \ + libgio_2_0_la-glocalfileoutputstream.lo \ + libgio_2_0_la-glocalfileiostream.lo libgio_2_0_la-glocalvfs.lo \ + libgio_2_0_la-gsocks4proxy.lo libgio_2_0_la-gsocks4aproxy.lo \ + libgio_2_0_la-gsocks5proxy.lo \ + libgio_2_0_la-thumbnail-verify.lo $(am__objects_4) +am_libgio_2_0_la_OBJECTS = libgio_2_0_la-gappinfo.lo \ + libgio_2_0_la-gasynchelper.lo libgio_2_0_la-gasyncinitable.lo \ + libgio_2_0_la-gasyncresult.lo \ + libgio_2_0_la-gbufferedinputstream.lo \ + libgio_2_0_la-gbufferedoutputstream.lo \ + libgio_2_0_la-gbytesicon.lo libgio_2_0_la-gcancellable.lo \ + libgio_2_0_la-gcharsetconverter.lo \ + libgio_2_0_la-gcontextspecificgroup.lo \ + libgio_2_0_la-gconverter.lo \ + libgio_2_0_la-gconverterinputstream.lo \ + libgio_2_0_la-gconverteroutputstream.lo \ + libgio_2_0_la-gcredentials.lo libgio_2_0_la-gdatagrambased.lo \ + libgio_2_0_la-gdatainputstream.lo \ + libgio_2_0_la-gdataoutputstream.lo libgio_2_0_la-gdrive.lo \ + libgio_2_0_la-gdummyfile.lo \ + libgio_2_0_la-gdummyproxyresolver.lo \ + libgio_2_0_la-gdummytlsbackend.lo libgio_2_0_la-gemblem.lo \ + libgio_2_0_la-gemblemedicon.lo libgio_2_0_la-gfile.lo \ + libgio_2_0_la-gfileattribute.lo \ + libgio_2_0_la-gfileenumerator.lo libgio_2_0_la-gfileicon.lo \ + libgio_2_0_la-gfileinfo.lo libgio_2_0_la-gfileinputstream.lo \ + libgio_2_0_la-gfilemonitor.lo \ + libgio_2_0_la-gfilenamecompleter.lo \ + libgio_2_0_la-gfileoutputstream.lo \ + libgio_2_0_la-gfileiostream.lo \ + libgio_2_0_la-gfilterinputstream.lo \ + libgio_2_0_la-gfilteroutputstream.lo libgio_2_0_la-gicon.lo \ + libgio_2_0_la-ginetaddress.lo \ + libgio_2_0_la-ginetaddressmask.lo \ + libgio_2_0_la-ginetsocketaddress.lo libgio_2_0_la-ginitable.lo \ + libgio_2_0_la-ginputstream.lo libgio_2_0_la-gioerror.lo \ + libgio_2_0_la-giomodule.lo libgio_2_0_la-gioscheduler.lo \ + libgio_2_0_la-giostream.lo libgio_2_0_la-gloadableicon.lo \ + libgio_2_0_la-gmount.lo libgio_2_0_la-gmemoryinputstream.lo \ + libgio_2_0_la-gmemoryoutputstream.lo \ + libgio_2_0_la-gmountoperation.lo \ + libgio_2_0_la-gnativevolumemonitor.lo \ + libgio_2_0_la-gnativesocketaddress.lo \ + libgio_2_0_la-gnetworkaddress.lo libgio_2_0_la-gnetworking.lo \ + libgio_2_0_la-gnetworkmonitor.lo \ + libgio_2_0_la-gnetworkmonitorbase.lo \ + libgio_2_0_la-gnetworkservice.lo \ + libgio_2_0_la-goutputstream.lo libgio_2_0_la-gpermission.lo \ + libgio_2_0_la-gpollableinputstream.lo \ + libgio_2_0_la-gpollableoutputstream.lo \ + libgio_2_0_la-gpollableutils.lo \ + libgio_2_0_la-gpollfilemonitor.lo libgio_2_0_la-gproxy.lo \ + libgio_2_0_la-gproxyaddress.lo \ + libgio_2_0_la-gproxyaddressenumerator.lo \ + libgio_2_0_la-gproxyresolver.lo libgio_2_0_la-gresolver.lo \ + libgio_2_0_la-gresource.lo libgio_2_0_la-gresourcefile.lo \ + libgio_2_0_la-gseekable.lo libgio_2_0_la-gsimpleasyncresult.lo \ + libgio_2_0_la-gsimpleiostream.lo \ + libgio_2_0_la-gsimplepermission.lo libgio_2_0_la-gsocket.lo \ + libgio_2_0_la-gsocketaddress.lo \ + libgio_2_0_la-gsocketaddressenumerator.lo \ + libgio_2_0_la-gsocketclient.lo \ + libgio_2_0_la-gsocketconnectable.lo \ + libgio_2_0_la-gsocketconnection.lo \ + libgio_2_0_la-gsocketcontrolmessage.lo \ + libgio_2_0_la-gsocketinputstream.lo \ + libgio_2_0_la-gsocketlistener.lo \ + libgio_2_0_la-gsocketoutputstream.lo \ + libgio_2_0_la-gsubprocesslauncher.lo \ + libgio_2_0_la-gsubprocess.lo libgio_2_0_la-gsocketservice.lo \ + libgio_2_0_la-gsrvtarget.lo \ + libgio_2_0_la-gsimpleproxyresolver.lo libgio_2_0_la-gtask.lo \ + libgio_2_0_la-gtcpconnection.lo \ + libgio_2_0_la-gtcpwrapperconnection.lo \ + libgio_2_0_la-gthreadedsocketservice.lo \ + libgio_2_0_la-gthemedicon.lo \ + libgio_2_0_la-gthreadedresolver.lo \ + libgio_2_0_la-gtlsbackend.lo libgio_2_0_la-gtlscertificate.lo \ + libgio_2_0_la-gtlsclientconnection.lo \ + libgio_2_0_la-gtlsconnection.lo libgio_2_0_la-gtlsdatabase.lo \ + libgio_2_0_la-gtlsfiledatabase.lo \ + libgio_2_0_la-gtlsinteraction.lo libgio_2_0_la-gtlspassword.lo \ + libgio_2_0_la-gtlsserverconnection.lo \ + libgio_2_0_la-gdtlsconnection.lo \ + libgio_2_0_la-gdtlsclientconnection.lo \ + libgio_2_0_la-gdtlsserverconnection.lo \ + libgio_2_0_la-gunionvolumemonitor.lo libgio_2_0_la-gvfs.lo \ + libgio_2_0_la-gvolume.lo libgio_2_0_la-gvolumemonitor.lo \ + libgio_2_0_la-gzlibcompressor.lo \ + libgio_2_0_la-gzlibdecompressor.lo \ + libgio_2_0_la-gioenumtypes.lo libgio_2_0_la-glistmodel.lo \ + libgio_2_0_la-gliststore.lo $(am__objects_3) $(am__objects_7) \ + $(am__objects_10) $(am__objects_11) $(am__objects_14) \ + $(am__objects_15) $(am__objects_16) $(am__objects_4) +libgio_2_0_la_OBJECTS = $(am_libgio_2_0_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libgio_2_0_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libgio_2_0_la_CFLAGS) \ + $(CFLAGS) $(libgio_2_0_la_LDFLAGS) $(LDFLAGS) -o $@ +@OS_UNIX_TRUE@am__EXEEXT_1 = gapplication$(EXEEXT) +am__EXEEXT_2 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_3 = $(am__EXEEXT_2) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_4 = $(am__EXEEXT_2) +PROGRAMS = $(bin_PROGRAMS) $(installed_test_PROGRAMS) \ + $(noinst_PROGRAMS) +am__gapplication_SOURCES_DIST = gapplication-tool.c +@OS_UNIX_TRUE@am_gapplication_OBJECTS = gapplication-tool.$(OBJEXT) +gapplication_OBJECTS = $(am_gapplication_OBJECTS) +@OS_UNIX_TRUE@gapplication_DEPENDENCIES = libgio-2.0.la \ +@OS_UNIX_TRUE@ $(top_builddir)/gobject/libgobject-2.0.la \ +@OS_UNIX_TRUE@ $(top_builddir)/gmodule/libgmodule-2.0.la \ +@OS_UNIX_TRUE@ $(top_builddir)/glib/libglib-2.0.la \ +@OS_UNIX_TRUE@ $(am__DEPENDENCIES_1) +am_gdbus_OBJECTS = gdbus-tool.$(OBJEXT) +gdbus_OBJECTS = $(am_gdbus_OBJECTS) +gdbus_DEPENDENCIES = libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am_gio_querymodules_OBJECTS = gio-querymodules.$(OBJEXT) +gio_querymodules_OBJECTS = $(am_gio_querymodules_OBJECTS) +gio_querymodules_DEPENDENCIES = libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am_glib_compile_resources_OBJECTS = gvdb-builder.$(OBJEXT) \ + glib-compile-resources.$(OBJEXT) +glib_compile_resources_OBJECTS = $(am_glib_compile_resources_OBJECTS) +glib_compile_resources_DEPENDENCIES = libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am_glib_compile_schemas_OBJECTS = gvdb-builder.$(OBJEXT) \ + glib-compile-schemas.$(OBJEXT) +glib_compile_schemas_OBJECTS = $(am_glib_compile_schemas_OBJECTS) +glib_compile_schemas_DEPENDENCIES = \ + $(top_builddir)/glib/libglib-2.0.la +am_gresource_OBJECTS = gresource-gresource-tool.$(OBJEXT) +gresource_OBJECTS = $(am_gresource_OBJECTS) +gresource_DEPENDENCIES = libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am_gsettings_OBJECTS = gsettings-tool.$(OBJEXT) +gsettings_OBJECTS = $(am_gsettings_OBJECTS) +gsettings_DEPENDENCIES = libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgio_2_0_la_SOURCES) $(gapplication_SOURCES) \ + $(gdbus_SOURCES) $(gio_querymodules_SOURCES) \ + $(glib_compile_resources_SOURCES) \ + $(glib_compile_schemas_SOURCES) $(gresource_SOURCES) \ + $(gsettings_SOURCES) +DIST_SOURCES = $(am__libgio_2_0_la_SOURCES_DIST) \ + $(am__gapplication_SOURCES_DIST) $(gdbus_SOURCES) \ + $(gio_querymodules_SOURCES) $(glib_compile_resources_SOURCES) \ + $(glib_compile_schemas_SOURCES) $(gresource_SOURCES) \ + $(gsettings_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(completion_DATA) $(dist_its_DATA) $(dist_schema_DATA) \ + $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +am__giounixinclude_HEADERS_DIST = gdesktopappinfo.h \ + gfiledescriptorbased.h gunixconnection.h \ + gunixcredentialsmessage.h gunixmounts.h gunixfdlist.h \ + gunixfdmessage.h gunixinputstream.h gunixoutputstream.h \ + gunixsocketaddress.h +am__giowin32include_HEADERS_DIST = gwin32inputstream.h \ + gwin32outputstream.h +HEADERS = $(gioinclude_HEADERS) $(giounixinclude_HEADERS) \ + $(giowin32include_HEADERS) $(nodist_gioinclude_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + check recheck distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +DIST_SUBDIRS = gdbus-2.0/codegen xdgmime inotify kqueue win32 . tests \ + fam +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/gio.rc.in \ + $(srcdir)/gnetworking.h.in \ + $(top_srcdir)/build/Makefile.msvcproj $(top_srcdir)/depcomp \ + $(top_srcdir)/glib.mk $(top_srcdir)/test-driver ChangeLog +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending + +# these sources (also mentioned above) are generated. +BUILT_SOURCES = gconstructor_as_data.h gioenumtypes.h gioenumtypes.c \ + gdbus-daemon-generated.c gdbus-daemon-generated.h \ + gnetworking.h $(NULL) +BUILT_EXTRA_DIST = gio.rc +CLEANFILES = *.log *.trs $(am__append_14) gdbus-daemon-generated.c \ + gdbus-daemon-generated.h gio-public-headers.txt \ + gconstructor_as_data.h +DISTCLEANFILES = gioenumtypes.h gioenumtypes.c +MAINTAINERCLEANFILES = + +# These are not built into the library yet +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \ + gdbusdaemon.c gdbusdaemon.h dbus-daemon.xml strinfo.c \ + data-to-c.pl gioenumtypes.h.template gioenumtypes.c.template \ + makefile.msc gio.rc.in gschema.dtd gconstructor_as_data.h \ + gnetworking.h.win32 $(NULL) $(completion_DATA) + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) $(am__append_16) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +SUBDIRS = gdbus-2.0/codegen $(am__append_15) $(am__append_19) \ + $(am__append_22) $(am__append_25) . tests $(am__append_28) +@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@install_ms_lib_cmd = $(INSTALL) gio-2.0.lib $(DESTDIR)$(libdir) +@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/gio-2.0.lib +AM_CPPFLAGS = \ + -DG_LOG_DOMAIN=\"GLib-GIO\" \ + $(gmodule_INCLUDES) \ + $(GLIB_DEBUG_FLAGS) \ + -DGIO_COMPILATION \ + -DGIO_MODULE_DIR=\"$(GIO_MODULE_DIR)\" + +AM_CFLAGS = $(GLIB_WARN_CFLAGS) +lib_LTLIBRARIES = libgio-2.0.la +gdbus_headers = \ + gdbusauthobserver.h \ + gcredentials.h \ + gdbusutils.h \ + gdbuserror.h \ + gdbusaddress.h \ + gdbusconnection.h \ + gdbusmessage.h \ + gdbusnameowning.h \ + gdbusnamewatching.h \ + gdbusproxy.h \ + gdbusintrospection.h \ + gdbusmethodinvocation.h \ + gdbusserver.h \ + gdbusinterface.h \ + gdbusinterfaceskeleton.h \ + gdbusobject.h \ + gdbusobjectskeleton.h \ + gdbusobjectproxy.h \ + gdbusobjectmanager.h \ + gdbusobjectmanagerclient.h \ + gdbusobjectmanagerserver.h \ + gtestdbus.h \ + $(NULL) + +gdbus_sources = \ + gdbusutils.h gdbusutils.c \ + gdbusaddress.h gdbusaddress.c \ + gdbusauthobserver.h gdbusauthobserver.c \ + gdbusauth.h gdbusauth.c \ + gdbusauthmechanism.h gdbusauthmechanism.c \ + gdbusauthmechanismanon.h gdbusauthmechanismanon.c \ + gdbusauthmechanismexternal.h gdbusauthmechanismexternal.c \ + gdbusauthmechanismsha1.h gdbusauthmechanismsha1.c \ + gdbuserror.h gdbuserror.c \ + gdbusconnection.h gdbusconnection.c \ + gdbusmessage.h gdbusmessage.c \ + gdbusnameowning.h gdbusnameowning.c \ + gdbusnamewatching.h gdbusnamewatching.c \ + gdbusproxy.h gdbusproxy.c \ + gdbusprivate.h gdbusprivate.c \ + gdbusintrospection.h gdbusintrospection.c \ + gdbusmethodinvocation.h gdbusmethodinvocation.c \ + gdbusserver.h gdbusserver.c \ + gdbusinterface.h gdbusinterface.c \ + gdbusinterfaceskeleton.h gdbusinterfaceskeleton.c \ + gdbusobject.h gdbusobject.c \ + gdbusobjectskeleton.h gdbusobjectskeleton.c \ + gdbusobjectproxy.h gdbusobjectproxy.c \ + gdbusobjectmanager.h gdbusobjectmanager.c \ + gdbusobjectmanagerclient.h gdbusobjectmanagerclient.c \ + gdbusobjectmanagerserver.h gdbusobjectmanagerserver.c \ + gtestdbus.h gtestdbus.c \ + $(NULL) + +settings_headers = \ + gsettingsbackend.h \ + gsettingsschema.h \ + gsettings.h + +settings_sources = gvdb/gvdb-format.h gvdb/gvdb-reader.h \ + gvdb/gvdb-reader.c gdelayedsettingsbackend.h \ + gdelayedsettingsbackend.c gkeyfilesettingsbackend.c \ + gmemorysettingsbackend.c gnullsettingsbackend.c \ + gsettingsbackendinternal.h gsettingsbackend.c \ + gsettingsschema.h gsettingsschema-internal.h gsettingsschema.c \ + gsettings-mapping.h gsettings-mapping.c gsettings.c \ + $(am__append_17) $(am__append_18) +application_headers = \ + gapplication.h \ + gapplicationcommandline.h \ + \ + gactiongroup.h \ + gactionmap.h \ + gsimpleactiongroup.h \ + gremoteactiongroup.h \ + gactiongroupexporter.h \ + gdbusactiongroup.h \ + gaction.h \ + gpropertyaction.h \ + gsimpleaction.h \ + \ + gmenumodel.h \ + gmenu.h \ + gmenuexporter.h \ + gdbusmenumodel.h \ + gnotification.h \ + $(NULL) + +application_sources = \ + gapplication.c \ + gapplicationcommandline.c \ + gapplicationimpl-dbus.c \ + gapplicationimpl.h \ + \ + gactiongroup.c \ + gactionmap.c \ + gsimpleactiongroup.c \ + gremoteactiongroup.c \ + gactiongroupexporter.c \ + gdbusactiongroup-private.h \ + gdbusactiongroup.c \ + gaction.c \ + gpropertyaction.c \ + gsimpleaction.c \ + \ + gmenumodel.c \ + gmenu.c \ + gmenuexporter.c \ + gdbusmenumodel.c \ + gnotification-private.h \ + gnotificationbackend.h \ + gnotification.c \ + gnotificationbackend.c \ + $(NULL) + +local_sources = \ + ghttpproxy.c \ + ghttpproxy.h \ + glocalfile.c \ + glocalfile.h \ + glocalfileenumerator.c \ + glocalfileenumerator.h \ + glocalfileinfo.c \ + glocalfileinfo.h \ + glocalfileinputstream.c \ + glocalfileinputstream.h \ + glocalfilemonitor.c \ + glocalfilemonitor.h \ + glocalfileoutputstream.c \ + glocalfileoutputstream.h \ + glocalfileiostream.c \ + glocalfileiostream.h \ + glocalvfs.c \ + glocalvfs.h \ + gsocks4proxy.c \ + gsocks4proxy.h \ + gsocks4aproxy.c \ + gsocks4aproxy.h \ + gsocks5proxy.c \ + gsocks5proxy.h \ + thumbnail-verify.h \ + thumbnail-verify.c \ + $(NULL) + +platform_libadd = $(am__append_20) $(am__append_23) $(am__append_26) \ + $(am__append_30) $(am__append_35) +platform_deps = $(am__append_21) $(am__append_24) $(am__append_27) \ + $(am__append_31) +appinfo_sources = $(am__append_29) $(am__append_34) +@OS_UNIX_TRUE@unix_sources = gfiledescriptorbased.c gunixconnection.c \ +@OS_UNIX_TRUE@ gunixcredentialsmessage.c gunixfdlist.c \ +@OS_UNIX_TRUE@ gunixfdmessage.c gunixmount.c gunixmount.h \ +@OS_UNIX_TRUE@ gunixmounts.c gunixsocketaddress.c gunixvolume.c \ +@OS_UNIX_TRUE@ gunixvolume.h gunixvolumemonitor.c \ +@OS_UNIX_TRUE@ gunixvolumemonitor.h gunixinputstream.c \ +@OS_UNIX_TRUE@ gunixoutputstream.c gcontenttype.c \ +@OS_UNIX_TRUE@ gcontenttypeprivate.h gfdonotificationbackend.c \ +@OS_UNIX_TRUE@ ggtknotificationbackend.c $(NULL) \ +@OS_UNIX_TRUE@ $(am__append_32) $(am__append_33) +@OS_UNIX_TRUE@giounixincludedir = $(includedir)/gio-unix-2.0/gio +@OS_UNIX_TRUE@giounixinclude_HEADERS = \ +@OS_UNIX_TRUE@ gdesktopappinfo.h \ +@OS_UNIX_TRUE@ gfiledescriptorbased.h \ +@OS_UNIX_TRUE@ gunixconnection.h \ +@OS_UNIX_TRUE@ gunixcredentialsmessage.h \ +@OS_UNIX_TRUE@ gunixmounts.h \ +@OS_UNIX_TRUE@ gunixfdlist.h \ +@OS_UNIX_TRUE@ gunixfdmessage.h \ +@OS_UNIX_TRUE@ gunixinputstream.h \ +@OS_UNIX_TRUE@ gunixoutputstream.h \ +@OS_UNIX_TRUE@ gunixsocketaddress.h \ +@OS_UNIX_TRUE@ $(NULL) + +gdbus_daemon_sources = \ + gdbusdaemon.c \ + gdbusdaemon.h \ + gdbus-daemon-generated.c \ + gdbus-daemon-generated.h \ + $(NULL) + +win32_actual_sources = \ + $(gdbus_daemon_sources) \ + gwin32registrykey.c \ + gwin32registrykey.h \ + gcontenttype-win32.c \ + gwin32mount.c \ + gwin32mount.h \ + gwin32volumemonitor.c \ + gwin32volumemonitor.h \ + gwin32inputstream.c \ + gwin32outputstream.c \ + gwin32outputstream.h \ + gwin32networking.h \ + $(NULL) + +win32_more_sources_for_vcproj = \ + gwin32appinfo.c \ + gregistrysettingsbackend.c \ + win32/gwinhttpfile.c \ + win32/gwinhttpfileinputstream.c \ + win32/gwinhttpfileoutputstream.c \ + win32/gwinhttpvfs.c \ + win32/gwin32fsmonitorutils.c \ + win32/gwin32filemonitor.c + +@OS_WIN32_TRUE@win32_sources = $(win32_actual_sources) +@OS_WIN32_TRUE@giowin32includedir = $(includedir)/gio-win32-2.0/gio +@OS_WIN32_TRUE@giowin32include_HEADERS = \ +@OS_WIN32_TRUE@ gwin32inputstream.h \ +@OS_WIN32_TRUE@ gwin32outputstream.h \ +@OS_WIN32_TRUE@ $(NULL) + +libgio_2_0_la_SOURCES = \ + gappinfo.c \ + gappinfoprivate.h \ + gasynchelper.c \ + gasynchelper.h \ + gasyncinitable.c \ + gasyncresult.c \ + gbufferedinputstream.c \ + gbufferedoutputstream.c \ + gbytesicon.c \ + gcancellable.c \ + gcharsetconverter.c \ + gcontextspecificgroup.c \ + gcontextspecificgroup.h \ + gconverter.c \ + gconverterinputstream.c \ + gconverteroutputstream.c \ + gcredentials.c \ + gcredentialsprivate.h \ + gdatagrambased.c \ + gdatainputstream.c \ + gdataoutputstream.c \ + gdrive.c \ + gdummyfile.h \ + gdummyfile.c \ + gdummyproxyresolver.c \ + gdummyproxyresolver.h \ + gdummytlsbackend.c \ + gdummytlsbackend.h \ + gemblem.h \ + gemblem.c \ + gemblemedicon.h \ + gemblemedicon.c \ + gfile.c \ + gfileattribute.c \ + gfileattribute-priv.h \ + gfileenumerator.c \ + gfileicon.c \ + gfileinfo.c \ + gfileinfo-priv.h \ + gfileinputstream.c \ + gfilemonitor.c \ + gfilenamecompleter.c \ + gfileoutputstream.c \ + gfileiostream.c \ + gfilterinputstream.c \ + gfilteroutputstream.c \ + gicon.c \ + ginetaddress.c \ + ginetaddressmask.c \ + ginetsocketaddress.c \ + ginitable.c \ + ginputstream.c \ + gioenums.h \ + gioerror.c \ + giomodule.c \ + giomodule-priv.h \ + gioscheduler.c \ + giostream.c \ + gioprivate.h \ + giowin32-priv.h \ + gloadableicon.c \ + gmount.c \ + gmemoryinputstream.c \ + gmemoryoutputstream.c \ + gmountoperation.c \ + gnativevolumemonitor.c \ + gnativevolumemonitor.h \ + gnativesocketaddress.c \ + gnativesocketaddress.h \ + gnetworkaddress.c \ + gnetworking.c \ + gnetworkingprivate.h \ + gnetworkmonitor.c \ + gnetworkmonitorbase.c \ + gnetworkmonitorbase.h \ + gnetworkservice.c \ + goutputstream.c \ + gpermission.c \ + gpollableinputstream.c \ + gpollableoutputstream.c \ + gpollableutils.c \ + gpollfilemonitor.c \ + gpollfilemonitor.h \ + gproxy.c \ + gproxyaddress.c \ + gproxyaddressenumerator.c \ + gproxyresolver.c \ + gresolver.c \ + gresource.c \ + gresourcefile.c \ + gresourcefile.h \ + gseekable.c \ + gsimpleasyncresult.c \ + gsimpleiostream.c \ + gsimplepermission.c \ + gsocket.c \ + gsocketaddress.c \ + gsocketaddressenumerator.c \ + gsocketclient.c \ + gsocketconnectable.c \ + gsocketconnection.c \ + gsocketcontrolmessage.c \ + gsocketinputstream.c \ + gsocketinputstream.h \ + gsocketlistener.c \ + gsocketoutputstream.c \ + gsocketoutputstream.h \ + gsubprocesslauncher.c \ + gsubprocess.c \ + gsubprocesslauncher-private.h \ + gsocketservice.c \ + gsrvtarget.c \ + gsimpleproxyresolver.c \ + gtask.c \ + gtcpconnection.c \ + gtcpwrapperconnection.c \ + gthreadedsocketservice.c\ + gthemedicon.c \ + gthreadedresolver.c \ + gthreadedresolver.h \ + gtlsbackend.c \ + gtlscertificate.c \ + gtlsclientconnection.c \ + gtlsconnection.c \ + gtlsdatabase.c \ + gtlsfiledatabase.c \ + gtlsinteraction.c \ + gtlspassword.c \ + gtlsserverconnection.c \ + gdtlsconnection.c \ + gdtlsclientconnection.c \ + gdtlsserverconnection.c \ + gunionvolumemonitor.c \ + gunionvolumemonitor.h \ + gvfs.c \ + gvolume.c \ + gvolumemonitor.c \ + gzlibcompressor.c \ + gzlibdecompressor.c \ + gmountprivate.h \ + gioenumtypes.h \ + gioenumtypes.c \ + glistmodel.c \ + gliststore.c \ + $(appinfo_sources) \ + $(unix_sources) \ + $(win32_sources) \ + $(application_sources) \ + $(settings_sources) \ + $(gdbus_sources) \ + $(local_sources) \ + $(NULL) + +libgio_2_0_la_LIBADD = \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la \ + $(platform_libadd) \ + $(ZLIB_LIBS) \ + $(SELINUX_LIBS) \ + $(GLIB_LIBS) \ + $(XATTR_LIBS) \ + $(NETWORK_LIBS) \ + $(NULL) + +libgio_2_0_la_CPPFLAGS = $(ZLIB_CFLAGS) $(AM_CPPFLAGS) +@PLATFORM_WIN32_TRUE@no_undefined = -no-undefined +@OS_WIN32_AND_DLL_COMPILATION_TRUE@gio_win32_res = gio-win32-res.o +@OS_WIN32_AND_DLL_COMPILATION_TRUE@gio_win32_res_ldflag = -Wl,$(gio_win32_res) +libgio_2_0_la_CFLAGS = $(AM_CFLAGS) $(GLIB_HIDDEN_VISIBILITY_CFLAGS) \ + $(am__append_36) +libgio_2_0_la_LDFLAGS = $(GLIB_LINK_FLAGS) $(gio_win32_res_ldflag) \ + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ + -export-dynamic $(no_undefined) $(am__append_37) +libgio_2_0_la_DEPENDENCIES = $(gio_win32_res) $(gio_def) $(platform_deps) +gio_headers = \ + gappinfo.h \ + gasyncinitable.h \ + gasyncresult.h \ + gbufferedinputstream.h \ + gbufferedoutputstream.h \ + gbytesicon.h \ + gcancellable.h \ + gcontenttype.h \ + gcharsetconverter.h \ + gconverter.h \ + gconverterinputstream.h \ + gconverteroutputstream.h \ + gdatagrambased.h \ + gdatainputstream.h \ + gdataoutputstream.h \ + gdrive.h \ + gemblem.h \ + gemblemedicon.h \ + gfile.h \ + gfileattribute.h \ + gfileenumerator.h \ + gfileicon.h \ + gfileinfo.h \ + gfileinputstream.h \ + gfilemonitor.h \ + gfilenamecompleter.h \ + gfileoutputstream.h \ + gfileiostream.h \ + gfilterinputstream.h \ + gfilteroutputstream.h \ + gicon.h \ + ginetaddress.h \ + ginetaddressmask.h \ + ginetsocketaddress.h \ + ginputstream.h \ + ginitable.h \ + gio.h \ + gio-autocleanups.h \ + giotypes.h \ + gioenums.h \ + gioerror.h \ + giomodule.h \ + gioscheduler.h \ + giostream.h \ + gloadableicon.h \ + gmount.h \ + gmemoryinputstream.h \ + gmemoryoutputstream.h \ + gmountoperation.h \ + gnativevolumemonitor.h \ + gnetworkaddress.h \ + gnetworkmonitor.h \ + gnetworkservice.h \ + goutputstream.h \ + gpermission.h \ + gpollableinputstream.h \ + gpollableoutputstream.h \ + gpollableutils.h \ + gproxyaddress.h \ + gproxy.h \ + gproxyaddressenumerator.h \ + gproxyresolver.h \ + gresolver.h \ + gresource.h \ + gseekable.h \ + gsimpleasyncresult.h \ + gsimpleiostream.h \ + gsimplepermission.h \ + gsocket.h \ + gsocketaddress.h \ + gsocketaddressenumerator.h \ + gsocketclient.h \ + gsocketconnectable.h \ + gsocketconnection.h \ + gsocketcontrolmessage.h \ + gsocketlistener.h \ + gsocketservice.h \ + gsrvtarget.h \ + gsimpleproxyresolver.h \ + gtask.h \ + gsubprocess.h \ + gsubprocesslauncher.h \ + gtcpconnection.h \ + gtcpwrapperconnection.h \ + gthreadedsocketservice.h\ + gthemedicon.h \ + gtlsbackend.h \ + gtlscertificate.h \ + gtlsclientconnection.h \ + gtlsconnection.h \ + gtlsdatabase.h \ + gtlsfiledatabase.h \ + gtlsinteraction.h \ + gtlspassword.h \ + gtlsserverconnection.h \ + gdtlsconnection.h \ + gdtlsclientconnection.h \ + gdtlsserverconnection.h \ + gvfs.h \ + gvolume.h \ + gvolumemonitor.h \ + gzlibcompressor.h \ + gzlibdecompressor.h \ + glistmodel.h \ + gliststore.h \ + $(application_headers) \ + $(settings_headers) \ + $(gdbus_headers) \ + $(NULL) + +gioincludedir = $(includedir)/glib-2.0/gio/ +gioinclude_HEADERS = \ + $(gio_headers) \ + gioenumtypes.h + +nodist_gioinclude_HEADERS = \ + gnetworking.h \ + $(NULL) + +glib_compile_resources_LDADD = libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la \ + $(NULL) + +glib_compile_resources_SOURCES = \ + gvdb/gvdb-format.h \ + gvdb/gvdb-builder.h \ + gvdb/gvdb-builder.c \ + glib-compile-resources.c + +gio_querymodules_SOURCES = gio-querymodules.c +gio_querymodules_LDADD = libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la \ + $(NULL) + +glib_compile_schemas_LDADD = $(top_builddir)/glib/libglib-2.0.la +glib_compile_schemas_SOURCES = \ + gconstructor_as_data.h \ + gvdb/gvdb-format.h \ + gvdb/gvdb-builder.h \ + gvdb/gvdb-builder.c \ + glib-compile-schemas.c + +gsettings_LDADD = libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la \ + $(NULL) + +gsettings_SOURCES = gsettings-tool.c +schemadir = $(datadir)/glib-2.0/schemas +dist_schema_DATA = gschema.dtd +itsdir = $(datadir)/gettext/its +dist_its_DATA = gschema.loc gschema.its +gdbus_SOURCES = gdbus-tool.c +gdbus_LDADD = libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la \ + $(NULL) + +@OS_UNIX_TRUE@gapplication_SOURCES = gapplication-tool.c +@OS_UNIX_TRUE@gapplication_LDADD = libgio-2.0.la \ +@OS_UNIX_TRUE@ $(top_builddir)/gobject/libgobject-2.0.la \ +@OS_UNIX_TRUE@ $(top_builddir)/gmodule/libgmodule-2.0.la \ +@OS_UNIX_TRUE@ $(top_builddir)/glib/libglib-2.0.la \ +@OS_UNIX_TRUE@ $(NULL) + +completiondir = $(datadir)/bash-completion/completions +completion_DATA = \ + completion/gapplication \ + completion/gdbus \ + completion/gsettings \ + completion/gresource + +gresource_SOURCES = gresource-tool.c +gresource_CPPFLAGS = $(LIBELF_CFLAGS) $(AM_CPPFLAGS) +gresource_LDADD = libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la \ + $(LIBELF_LIBS) + + +# ------------------------------------------------------------------------ +# ------ MSVC Project File Generation ------ +MSVCPROJS = gio glib-compile-resources glib-compile-schemas +gio_FILES = $(libgio_2_0_la_SOURCES) $(win32_actual_sources) $(win32_more_sources_for_vcproj) +gio_EXCLUDES = gunix*.c|gdesktopappinfo.c|gnetworkmonitornetlink.c|gcontenttype.c|gnetworkmonitornm.c +gio_HEADERS_DIR = $(includedir)/glib-2.0/gio +gio_HEADERS_INST = $(gioinclude_HEADERS) $(nodist_gioinclude_HEADERS) +gio_HEADERS_EXCLUDES = dummy +glib_compile_resources_FILES = $(glib_compile_resources_SOURCES) +glib_compile_resources_EXCLUDES = dummy +glib_compile_schemas_FILES = $(glib_compile_schemas_SOURCES) +glib_compile_schemas_EXCLUDES = dummy +_proj_name = $(subst /,_,$(subst -,_,$(subst .,_,$(1)))) +_proj_path_raw := $(subst $(abs_top_srcdir),,$(abs_srcdir)) +_proj_path = $(subst /,\\,$(_proj_path_raw)) +_proj_subdir_int = $(subst \\\\,\\,\\$(_proj_path)\\) +_proj_subdir = $(subst \\.\\,\\,$(_proj_subdir_int)) +_proj_files_raw = $(subst /,\\,$($(_proj_name)_FILES)) +_proj_files = $(subst $(srcdir)\\,,$(subst $(builddir)\\,,$(subst $(top_builddir)\\$(_proj_path)\\,\\,$(_proj_files_raw)))) +_proj_filters = $($(_proj_name)_EXCLUDES) +_proj_headers_raw = $(subst /,\\,$($(_proj_name)_HEADERS_INST)) +_proj_headers = $(subst $(srcdir)\\,,$(subst $(builddir)\\,,$(subst $(top_builddir)\\$(_proj_path)\\,\\,$(_proj_headers_raw)))) +_proj_headers_excludes = $($(_proj_name)_HEADERS_EXCLUDES) +_headers_dest_posix = $(subst $(includedir),,$($(_proj_name)_HEADERS_DIR)) +_headers_destdir = $(subst /,\\,$(_headers_dest_posix)) +@HAVE_GLIB_RUNTIME_LIBDIR_FALSE@ABS_GLIB_RUNTIME_LIBDIR = $(libdir) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ABS_GLIB_RUNTIME_LIBDIR = $(realpath $(libdir)/$(GLIB_RUNTIME_LIBDIR)) +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(top_srcdir)/build/Makefile.msvcproj $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gio/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gio/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(top_srcdir)/build/Makefile.msvcproj $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +gnetworking.h: $(top_builddir)/config.status $(srcdir)/gnetworking.h.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +gio.rc: $(top_builddir)/config.status $(srcdir)/gio.rc.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgio-2.0.la: $(libgio_2_0_la_OBJECTS) $(libgio_2_0_la_DEPENDENCIES) $(EXTRA_libgio_2_0_la_DEPENDENCIES) + $(AM_V_CCLD)$(libgio_2_0_la_LINK) -rpath $(libdir) $(libgio_2_0_la_OBJECTS) $(libgio_2_0_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +gapplication$(EXEEXT): $(gapplication_OBJECTS) $(gapplication_DEPENDENCIES) $(EXTRA_gapplication_DEPENDENCIES) + @rm -f gapplication$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gapplication_OBJECTS) $(gapplication_LDADD) $(LIBS) + +gdbus$(EXEEXT): $(gdbus_OBJECTS) $(gdbus_DEPENDENCIES) $(EXTRA_gdbus_DEPENDENCIES) + @rm -f gdbus$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_OBJECTS) $(gdbus_LDADD) $(LIBS) + +gio-querymodules$(EXEEXT): $(gio_querymodules_OBJECTS) $(gio_querymodules_DEPENDENCIES) $(EXTRA_gio_querymodules_DEPENDENCIES) + @rm -f gio-querymodules$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gio_querymodules_OBJECTS) $(gio_querymodules_LDADD) $(LIBS) + +glib-compile-resources$(EXEEXT): $(glib_compile_resources_OBJECTS) $(glib_compile_resources_DEPENDENCIES) $(EXTRA_glib_compile_resources_DEPENDENCIES) + @rm -f glib-compile-resources$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(glib_compile_resources_OBJECTS) $(glib_compile_resources_LDADD) $(LIBS) + +glib-compile-schemas$(EXEEXT): $(glib_compile_schemas_OBJECTS) $(glib_compile_schemas_DEPENDENCIES) $(EXTRA_glib_compile_schemas_DEPENDENCIES) + @rm -f glib-compile-schemas$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(glib_compile_schemas_OBJECTS) $(glib_compile_schemas_LDADD) $(LIBS) + +gresource$(EXEEXT): $(gresource_OBJECTS) $(gresource_DEPENDENCIES) $(EXTRA_gresource_DEPENDENCIES) + @rm -f gresource$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gresource_OBJECTS) $(gresource_LDADD) $(LIBS) + +gsettings$(EXEEXT): $(gsettings_OBJECTS) $(gsettings_DEPENDENCIES) $(EXTRA_gsettings_DEPENDENCIES) + @rm -f gsettings$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gsettings_OBJECTS) $(gsettings_LDADD) $(LIBS) +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gapplication-tool.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-tool.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gio-querymodules.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glib-compile-resources.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glib-compile-schemas.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gresource-gresource-tool.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsettings-tool.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvdb-builder.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gaction.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gactiongroup.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gactiongroupexporter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gactionmap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gappinfo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gapplication.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gapplicationcommandline.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gapplicationimpl-dbus.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gasynchelper.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gasyncinitable.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gasyncresult.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gbufferedinputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gbufferedoutputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gbytesicon.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gcancellable.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gcharsetconverter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gcocoanotificationbackend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gcontenttype-win32.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gcontenttype.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gcontextspecificgroup.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gconverter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gconverterinputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gconverteroutputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gcredentials.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdatagrambased.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdatainputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdataoutputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbus-daemon-generated.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusactiongroup.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusaddress.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusauth.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusauthmechanism.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusauthmechanismanon.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusauthmechanismexternal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusauthmechanismsha1.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusauthobserver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusconnection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusdaemon.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbuserror.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusinterface.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusinterfaceskeleton.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusintrospection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusmenumodel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusmessage.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusmethodinvocation.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusnameowning.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusnamewatching.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusobject.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusobjectmanager.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusobjectmanagerclient.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusobjectmanagerserver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusobjectproxy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusobjectskeleton.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusprivate.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusproxy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusserver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdbusutils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdelayedsettingsbackend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdesktopappinfo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdrive.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdtlsclientconnection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdtlsconnection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdtlsserverconnection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdummyfile.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdummyproxyresolver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gdummytlsbackend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gemblem.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gemblemedicon.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gfdonotificationbackend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gfile.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gfileattribute.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gfiledescriptorbased.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gfileenumerator.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gfileicon.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gfileinfo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gfileinputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gfileiostream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gfilemonitor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gfilenamecompleter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gfileoutputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gfilterinputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gfilteroutputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-ggtknotificationbackend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-ghttpproxy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gicon.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-ginetaddress.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-ginetaddressmask.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-ginetsocketaddress.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-ginitable.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-ginputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gioenumtypes.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gioerror.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-giomodule.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gioscheduler.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-giostream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gkeyfilesettingsbackend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-glistmodel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gliststore.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gloadableicon.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-glocalfile.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-glocalfileenumerator.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-glocalfileinfo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-glocalfileinputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-glocalfileiostream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-glocalfilemonitor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-glocalfileoutputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-glocalvfs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gmemoryinputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gmemoryoutputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gmemorysettingsbackend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gmenu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gmenuexporter.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gmenumodel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gmount.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gmountoperation.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gnativesocketaddress.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gnativevolumemonitor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gnetworkaddress.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gnetworking.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gnetworkmonitor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gnetworkmonitorbase.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gnetworkmonitornetlink.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gnetworkmonitornm.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gnetworkservice.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gnextstepsettingsbackend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gnotification.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gnotificationbackend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gnullsettingsbackend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-goutputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gpermission.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gpollableinputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gpollableoutputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gpollableutils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gpollfilemonitor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gpropertyaction.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gproxy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gproxyaddress.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gproxyaddressenumerator.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gproxyresolver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gregistrysettingsbackend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gremoteactiongroup.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gresolver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gresource.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gresourcefile.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gseekable.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsettings-mapping.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsettings.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsettingsbackend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsettingsschema.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsimpleaction.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsimpleactiongroup.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsimpleasyncresult.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsimpleiostream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsimplepermission.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsimpleproxyresolver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsocket.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsocketaddress.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsocketaddressenumerator.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsocketclient.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsocketconnectable.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsocketconnection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsocketcontrolmessage.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsocketinputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsocketlistener.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsocketoutputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsocketservice.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsocks4aproxy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsocks4proxy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsocks5proxy.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsrvtarget.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsubprocess.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gsubprocesslauncher.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gtask.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gtcpconnection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gtcpwrapperconnection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gtestdbus.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gthemedicon.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gthreadedresolver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gthreadedsocketservice.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gtlsbackend.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gtlscertificate.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gtlsclientconnection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gtlsconnection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gtlsdatabase.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gtlsfiledatabase.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gtlsinteraction.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gtlspassword.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gtlsserverconnection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gunionvolumemonitor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gunixconnection.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gunixcredentialsmessage.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gunixfdlist.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gunixfdmessage.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gunixinputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gunixmount.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gunixmounts.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gunixoutputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gunixsocketaddress.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gunixvolume.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gunixvolumemonitor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gvdb-reader.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gvfs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gvolume.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gvolumemonitor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gwin32appinfo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gwin32inputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gwin32mount.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gwin32outputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gwin32registrykey.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gwin32volumemonitor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gzlibcompressor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-gzlibdecompressor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgio_2_0_la-thumbnail-verify.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libgio_2_0_la-gappinfo.lo: gappinfo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gappinfo.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gappinfo.Tpo -c -o libgio_2_0_la-gappinfo.lo `test -f 'gappinfo.c' || echo '$(srcdir)/'`gappinfo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gappinfo.Tpo $(DEPDIR)/libgio_2_0_la-gappinfo.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gappinfo.c' object='libgio_2_0_la-gappinfo.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gappinfo.lo `test -f 'gappinfo.c' || echo '$(srcdir)/'`gappinfo.c + +libgio_2_0_la-gasynchelper.lo: gasynchelper.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gasynchelper.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gasynchelper.Tpo -c -o libgio_2_0_la-gasynchelper.lo `test -f 'gasynchelper.c' || echo '$(srcdir)/'`gasynchelper.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gasynchelper.Tpo $(DEPDIR)/libgio_2_0_la-gasynchelper.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gasynchelper.c' object='libgio_2_0_la-gasynchelper.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gasynchelper.lo `test -f 'gasynchelper.c' || echo '$(srcdir)/'`gasynchelper.c + +libgio_2_0_la-gasyncinitable.lo: gasyncinitable.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gasyncinitable.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gasyncinitable.Tpo -c -o libgio_2_0_la-gasyncinitable.lo `test -f 'gasyncinitable.c' || echo '$(srcdir)/'`gasyncinitable.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gasyncinitable.Tpo $(DEPDIR)/libgio_2_0_la-gasyncinitable.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gasyncinitable.c' object='libgio_2_0_la-gasyncinitable.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gasyncinitable.lo `test -f 'gasyncinitable.c' || echo '$(srcdir)/'`gasyncinitable.c + +libgio_2_0_la-gasyncresult.lo: gasyncresult.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gasyncresult.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gasyncresult.Tpo -c -o libgio_2_0_la-gasyncresult.lo `test -f 'gasyncresult.c' || echo '$(srcdir)/'`gasyncresult.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gasyncresult.Tpo $(DEPDIR)/libgio_2_0_la-gasyncresult.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gasyncresult.c' object='libgio_2_0_la-gasyncresult.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gasyncresult.lo `test -f 'gasyncresult.c' || echo '$(srcdir)/'`gasyncresult.c + +libgio_2_0_la-gbufferedinputstream.lo: gbufferedinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gbufferedinputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gbufferedinputstream.Tpo -c -o libgio_2_0_la-gbufferedinputstream.lo `test -f 'gbufferedinputstream.c' || echo '$(srcdir)/'`gbufferedinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gbufferedinputstream.Tpo $(DEPDIR)/libgio_2_0_la-gbufferedinputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gbufferedinputstream.c' object='libgio_2_0_la-gbufferedinputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gbufferedinputstream.lo `test -f 'gbufferedinputstream.c' || echo '$(srcdir)/'`gbufferedinputstream.c + +libgio_2_0_la-gbufferedoutputstream.lo: gbufferedoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gbufferedoutputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gbufferedoutputstream.Tpo -c -o libgio_2_0_la-gbufferedoutputstream.lo `test -f 'gbufferedoutputstream.c' || echo '$(srcdir)/'`gbufferedoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gbufferedoutputstream.Tpo $(DEPDIR)/libgio_2_0_la-gbufferedoutputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gbufferedoutputstream.c' object='libgio_2_0_la-gbufferedoutputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gbufferedoutputstream.lo `test -f 'gbufferedoutputstream.c' || echo '$(srcdir)/'`gbufferedoutputstream.c + +libgio_2_0_la-gbytesicon.lo: gbytesicon.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gbytesicon.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gbytesicon.Tpo -c -o libgio_2_0_la-gbytesicon.lo `test -f 'gbytesicon.c' || echo '$(srcdir)/'`gbytesicon.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gbytesicon.Tpo $(DEPDIR)/libgio_2_0_la-gbytesicon.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gbytesicon.c' object='libgio_2_0_la-gbytesicon.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gbytesicon.lo `test -f 'gbytesicon.c' || echo '$(srcdir)/'`gbytesicon.c + +libgio_2_0_la-gcancellable.lo: gcancellable.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gcancellable.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gcancellable.Tpo -c -o libgio_2_0_la-gcancellable.lo `test -f 'gcancellable.c' || echo '$(srcdir)/'`gcancellable.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gcancellable.Tpo $(DEPDIR)/libgio_2_0_la-gcancellable.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gcancellable.c' object='libgio_2_0_la-gcancellable.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gcancellable.lo `test -f 'gcancellable.c' || echo '$(srcdir)/'`gcancellable.c + +libgio_2_0_la-gcharsetconverter.lo: gcharsetconverter.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gcharsetconverter.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gcharsetconverter.Tpo -c -o libgio_2_0_la-gcharsetconverter.lo `test -f 'gcharsetconverter.c' || echo '$(srcdir)/'`gcharsetconverter.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gcharsetconverter.Tpo $(DEPDIR)/libgio_2_0_la-gcharsetconverter.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gcharsetconverter.c' object='libgio_2_0_la-gcharsetconverter.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gcharsetconverter.lo `test -f 'gcharsetconverter.c' || echo '$(srcdir)/'`gcharsetconverter.c + +libgio_2_0_la-gcontextspecificgroup.lo: gcontextspecificgroup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gcontextspecificgroup.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gcontextspecificgroup.Tpo -c -o libgio_2_0_la-gcontextspecificgroup.lo `test -f 'gcontextspecificgroup.c' || echo '$(srcdir)/'`gcontextspecificgroup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gcontextspecificgroup.Tpo $(DEPDIR)/libgio_2_0_la-gcontextspecificgroup.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gcontextspecificgroup.c' object='libgio_2_0_la-gcontextspecificgroup.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gcontextspecificgroup.lo `test -f 'gcontextspecificgroup.c' || echo '$(srcdir)/'`gcontextspecificgroup.c + +libgio_2_0_la-gconverter.lo: gconverter.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gconverter.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gconverter.Tpo -c -o libgio_2_0_la-gconverter.lo `test -f 'gconverter.c' || echo '$(srcdir)/'`gconverter.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gconverter.Tpo $(DEPDIR)/libgio_2_0_la-gconverter.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gconverter.c' object='libgio_2_0_la-gconverter.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gconverter.lo `test -f 'gconverter.c' || echo '$(srcdir)/'`gconverter.c + +libgio_2_0_la-gconverterinputstream.lo: gconverterinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gconverterinputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gconverterinputstream.Tpo -c -o libgio_2_0_la-gconverterinputstream.lo `test -f 'gconverterinputstream.c' || echo '$(srcdir)/'`gconverterinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gconverterinputstream.Tpo $(DEPDIR)/libgio_2_0_la-gconverterinputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gconverterinputstream.c' object='libgio_2_0_la-gconverterinputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gconverterinputstream.lo `test -f 'gconverterinputstream.c' || echo '$(srcdir)/'`gconverterinputstream.c + +libgio_2_0_la-gconverteroutputstream.lo: gconverteroutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gconverteroutputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gconverteroutputstream.Tpo -c -o libgio_2_0_la-gconverteroutputstream.lo `test -f 'gconverteroutputstream.c' || echo '$(srcdir)/'`gconverteroutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gconverteroutputstream.Tpo $(DEPDIR)/libgio_2_0_la-gconverteroutputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gconverteroutputstream.c' object='libgio_2_0_la-gconverteroutputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gconverteroutputstream.lo `test -f 'gconverteroutputstream.c' || echo '$(srcdir)/'`gconverteroutputstream.c + +libgio_2_0_la-gcredentials.lo: gcredentials.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gcredentials.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gcredentials.Tpo -c -o libgio_2_0_la-gcredentials.lo `test -f 'gcredentials.c' || echo '$(srcdir)/'`gcredentials.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gcredentials.Tpo $(DEPDIR)/libgio_2_0_la-gcredentials.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gcredentials.c' object='libgio_2_0_la-gcredentials.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gcredentials.lo `test -f 'gcredentials.c' || echo '$(srcdir)/'`gcredentials.c + +libgio_2_0_la-gdatagrambased.lo: gdatagrambased.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdatagrambased.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdatagrambased.Tpo -c -o libgio_2_0_la-gdatagrambased.lo `test -f 'gdatagrambased.c' || echo '$(srcdir)/'`gdatagrambased.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdatagrambased.Tpo $(DEPDIR)/libgio_2_0_la-gdatagrambased.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdatagrambased.c' object='libgio_2_0_la-gdatagrambased.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdatagrambased.lo `test -f 'gdatagrambased.c' || echo '$(srcdir)/'`gdatagrambased.c + +libgio_2_0_la-gdatainputstream.lo: gdatainputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdatainputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdatainputstream.Tpo -c -o libgio_2_0_la-gdatainputstream.lo `test -f 'gdatainputstream.c' || echo '$(srcdir)/'`gdatainputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdatainputstream.Tpo $(DEPDIR)/libgio_2_0_la-gdatainputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdatainputstream.c' object='libgio_2_0_la-gdatainputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdatainputstream.lo `test -f 'gdatainputstream.c' || echo '$(srcdir)/'`gdatainputstream.c + +libgio_2_0_la-gdataoutputstream.lo: gdataoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdataoutputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdataoutputstream.Tpo -c -o libgio_2_0_la-gdataoutputstream.lo `test -f 'gdataoutputstream.c' || echo '$(srcdir)/'`gdataoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdataoutputstream.Tpo $(DEPDIR)/libgio_2_0_la-gdataoutputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdataoutputstream.c' object='libgio_2_0_la-gdataoutputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdataoutputstream.lo `test -f 'gdataoutputstream.c' || echo '$(srcdir)/'`gdataoutputstream.c + +libgio_2_0_la-gdrive.lo: gdrive.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdrive.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdrive.Tpo -c -o libgio_2_0_la-gdrive.lo `test -f 'gdrive.c' || echo '$(srcdir)/'`gdrive.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdrive.Tpo $(DEPDIR)/libgio_2_0_la-gdrive.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdrive.c' object='libgio_2_0_la-gdrive.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdrive.lo `test -f 'gdrive.c' || echo '$(srcdir)/'`gdrive.c + +libgio_2_0_la-gdummyfile.lo: gdummyfile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdummyfile.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdummyfile.Tpo -c -o libgio_2_0_la-gdummyfile.lo `test -f 'gdummyfile.c' || echo '$(srcdir)/'`gdummyfile.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdummyfile.Tpo $(DEPDIR)/libgio_2_0_la-gdummyfile.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdummyfile.c' object='libgio_2_0_la-gdummyfile.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdummyfile.lo `test -f 'gdummyfile.c' || echo '$(srcdir)/'`gdummyfile.c + +libgio_2_0_la-gdummyproxyresolver.lo: gdummyproxyresolver.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdummyproxyresolver.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdummyproxyresolver.Tpo -c -o libgio_2_0_la-gdummyproxyresolver.lo `test -f 'gdummyproxyresolver.c' || echo '$(srcdir)/'`gdummyproxyresolver.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdummyproxyresolver.Tpo $(DEPDIR)/libgio_2_0_la-gdummyproxyresolver.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdummyproxyresolver.c' object='libgio_2_0_la-gdummyproxyresolver.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdummyproxyresolver.lo `test -f 'gdummyproxyresolver.c' || echo '$(srcdir)/'`gdummyproxyresolver.c + +libgio_2_0_la-gdummytlsbackend.lo: gdummytlsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdummytlsbackend.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdummytlsbackend.Tpo -c -o libgio_2_0_la-gdummytlsbackend.lo `test -f 'gdummytlsbackend.c' || echo '$(srcdir)/'`gdummytlsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdummytlsbackend.Tpo $(DEPDIR)/libgio_2_0_la-gdummytlsbackend.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdummytlsbackend.c' object='libgio_2_0_la-gdummytlsbackend.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdummytlsbackend.lo `test -f 'gdummytlsbackend.c' || echo '$(srcdir)/'`gdummytlsbackend.c + +libgio_2_0_la-gemblem.lo: gemblem.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gemblem.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gemblem.Tpo -c -o libgio_2_0_la-gemblem.lo `test -f 'gemblem.c' || echo '$(srcdir)/'`gemblem.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gemblem.Tpo $(DEPDIR)/libgio_2_0_la-gemblem.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gemblem.c' object='libgio_2_0_la-gemblem.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gemblem.lo `test -f 'gemblem.c' || echo '$(srcdir)/'`gemblem.c + +libgio_2_0_la-gemblemedicon.lo: gemblemedicon.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gemblemedicon.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gemblemedicon.Tpo -c -o libgio_2_0_la-gemblemedicon.lo `test -f 'gemblemedicon.c' || echo '$(srcdir)/'`gemblemedicon.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gemblemedicon.Tpo $(DEPDIR)/libgio_2_0_la-gemblemedicon.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gemblemedicon.c' object='libgio_2_0_la-gemblemedicon.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gemblemedicon.lo `test -f 'gemblemedicon.c' || echo '$(srcdir)/'`gemblemedicon.c + +libgio_2_0_la-gfile.lo: gfile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gfile.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gfile.Tpo -c -o libgio_2_0_la-gfile.lo `test -f 'gfile.c' || echo '$(srcdir)/'`gfile.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gfile.Tpo $(DEPDIR)/libgio_2_0_la-gfile.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfile.c' object='libgio_2_0_la-gfile.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gfile.lo `test -f 'gfile.c' || echo '$(srcdir)/'`gfile.c + +libgio_2_0_la-gfileattribute.lo: gfileattribute.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gfileattribute.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gfileattribute.Tpo -c -o libgio_2_0_la-gfileattribute.lo `test -f 'gfileattribute.c' || echo '$(srcdir)/'`gfileattribute.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gfileattribute.Tpo $(DEPDIR)/libgio_2_0_la-gfileattribute.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfileattribute.c' object='libgio_2_0_la-gfileattribute.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gfileattribute.lo `test -f 'gfileattribute.c' || echo '$(srcdir)/'`gfileattribute.c + +libgio_2_0_la-gfileenumerator.lo: gfileenumerator.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gfileenumerator.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gfileenumerator.Tpo -c -o libgio_2_0_la-gfileenumerator.lo `test -f 'gfileenumerator.c' || echo '$(srcdir)/'`gfileenumerator.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gfileenumerator.Tpo $(DEPDIR)/libgio_2_0_la-gfileenumerator.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfileenumerator.c' object='libgio_2_0_la-gfileenumerator.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gfileenumerator.lo `test -f 'gfileenumerator.c' || echo '$(srcdir)/'`gfileenumerator.c + +libgio_2_0_la-gfileicon.lo: gfileicon.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gfileicon.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gfileicon.Tpo -c -o libgio_2_0_la-gfileicon.lo `test -f 'gfileicon.c' || echo '$(srcdir)/'`gfileicon.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gfileicon.Tpo $(DEPDIR)/libgio_2_0_la-gfileicon.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfileicon.c' object='libgio_2_0_la-gfileicon.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gfileicon.lo `test -f 'gfileicon.c' || echo '$(srcdir)/'`gfileicon.c + +libgio_2_0_la-gfileinfo.lo: gfileinfo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gfileinfo.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gfileinfo.Tpo -c -o libgio_2_0_la-gfileinfo.lo `test -f 'gfileinfo.c' || echo '$(srcdir)/'`gfileinfo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gfileinfo.Tpo $(DEPDIR)/libgio_2_0_la-gfileinfo.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfileinfo.c' object='libgio_2_0_la-gfileinfo.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gfileinfo.lo `test -f 'gfileinfo.c' || echo '$(srcdir)/'`gfileinfo.c + +libgio_2_0_la-gfileinputstream.lo: gfileinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gfileinputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gfileinputstream.Tpo -c -o libgio_2_0_la-gfileinputstream.lo `test -f 'gfileinputstream.c' || echo '$(srcdir)/'`gfileinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gfileinputstream.Tpo $(DEPDIR)/libgio_2_0_la-gfileinputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfileinputstream.c' object='libgio_2_0_la-gfileinputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gfileinputstream.lo `test -f 'gfileinputstream.c' || echo '$(srcdir)/'`gfileinputstream.c + +libgio_2_0_la-gfilemonitor.lo: gfilemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gfilemonitor.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gfilemonitor.Tpo -c -o libgio_2_0_la-gfilemonitor.lo `test -f 'gfilemonitor.c' || echo '$(srcdir)/'`gfilemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gfilemonitor.Tpo $(DEPDIR)/libgio_2_0_la-gfilemonitor.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfilemonitor.c' object='libgio_2_0_la-gfilemonitor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gfilemonitor.lo `test -f 'gfilemonitor.c' || echo '$(srcdir)/'`gfilemonitor.c + +libgio_2_0_la-gfilenamecompleter.lo: gfilenamecompleter.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gfilenamecompleter.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gfilenamecompleter.Tpo -c -o libgio_2_0_la-gfilenamecompleter.lo `test -f 'gfilenamecompleter.c' || echo '$(srcdir)/'`gfilenamecompleter.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gfilenamecompleter.Tpo $(DEPDIR)/libgio_2_0_la-gfilenamecompleter.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfilenamecompleter.c' object='libgio_2_0_la-gfilenamecompleter.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gfilenamecompleter.lo `test -f 'gfilenamecompleter.c' || echo '$(srcdir)/'`gfilenamecompleter.c + +libgio_2_0_la-gfileoutputstream.lo: gfileoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gfileoutputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gfileoutputstream.Tpo -c -o libgio_2_0_la-gfileoutputstream.lo `test -f 'gfileoutputstream.c' || echo '$(srcdir)/'`gfileoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gfileoutputstream.Tpo $(DEPDIR)/libgio_2_0_la-gfileoutputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfileoutputstream.c' object='libgio_2_0_la-gfileoutputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gfileoutputstream.lo `test -f 'gfileoutputstream.c' || echo '$(srcdir)/'`gfileoutputstream.c + +libgio_2_0_la-gfileiostream.lo: gfileiostream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gfileiostream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gfileiostream.Tpo -c -o libgio_2_0_la-gfileiostream.lo `test -f 'gfileiostream.c' || echo '$(srcdir)/'`gfileiostream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gfileiostream.Tpo $(DEPDIR)/libgio_2_0_la-gfileiostream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfileiostream.c' object='libgio_2_0_la-gfileiostream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gfileiostream.lo `test -f 'gfileiostream.c' || echo '$(srcdir)/'`gfileiostream.c + +libgio_2_0_la-gfilterinputstream.lo: gfilterinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gfilterinputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gfilterinputstream.Tpo -c -o libgio_2_0_la-gfilterinputstream.lo `test -f 'gfilterinputstream.c' || echo '$(srcdir)/'`gfilterinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gfilterinputstream.Tpo $(DEPDIR)/libgio_2_0_la-gfilterinputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfilterinputstream.c' object='libgio_2_0_la-gfilterinputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gfilterinputstream.lo `test -f 'gfilterinputstream.c' || echo '$(srcdir)/'`gfilterinputstream.c + +libgio_2_0_la-gfilteroutputstream.lo: gfilteroutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gfilteroutputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gfilteroutputstream.Tpo -c -o libgio_2_0_la-gfilteroutputstream.lo `test -f 'gfilteroutputstream.c' || echo '$(srcdir)/'`gfilteroutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gfilteroutputstream.Tpo $(DEPDIR)/libgio_2_0_la-gfilteroutputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfilteroutputstream.c' object='libgio_2_0_la-gfilteroutputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gfilteroutputstream.lo `test -f 'gfilteroutputstream.c' || echo '$(srcdir)/'`gfilteroutputstream.c + +libgio_2_0_la-gicon.lo: gicon.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gicon.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gicon.Tpo -c -o libgio_2_0_la-gicon.lo `test -f 'gicon.c' || echo '$(srcdir)/'`gicon.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gicon.Tpo $(DEPDIR)/libgio_2_0_la-gicon.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gicon.c' object='libgio_2_0_la-gicon.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gicon.lo `test -f 'gicon.c' || echo '$(srcdir)/'`gicon.c + +libgio_2_0_la-ginetaddress.lo: ginetaddress.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-ginetaddress.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-ginetaddress.Tpo -c -o libgio_2_0_la-ginetaddress.lo `test -f 'ginetaddress.c' || echo '$(srcdir)/'`ginetaddress.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-ginetaddress.Tpo $(DEPDIR)/libgio_2_0_la-ginetaddress.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ginetaddress.c' object='libgio_2_0_la-ginetaddress.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-ginetaddress.lo `test -f 'ginetaddress.c' || echo '$(srcdir)/'`ginetaddress.c + +libgio_2_0_la-ginetaddressmask.lo: ginetaddressmask.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-ginetaddressmask.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-ginetaddressmask.Tpo -c -o libgio_2_0_la-ginetaddressmask.lo `test -f 'ginetaddressmask.c' || echo '$(srcdir)/'`ginetaddressmask.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-ginetaddressmask.Tpo $(DEPDIR)/libgio_2_0_la-ginetaddressmask.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ginetaddressmask.c' object='libgio_2_0_la-ginetaddressmask.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-ginetaddressmask.lo `test -f 'ginetaddressmask.c' || echo '$(srcdir)/'`ginetaddressmask.c + +libgio_2_0_la-ginetsocketaddress.lo: ginetsocketaddress.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-ginetsocketaddress.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-ginetsocketaddress.Tpo -c -o libgio_2_0_la-ginetsocketaddress.lo `test -f 'ginetsocketaddress.c' || echo '$(srcdir)/'`ginetsocketaddress.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-ginetsocketaddress.Tpo $(DEPDIR)/libgio_2_0_la-ginetsocketaddress.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ginetsocketaddress.c' object='libgio_2_0_la-ginetsocketaddress.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-ginetsocketaddress.lo `test -f 'ginetsocketaddress.c' || echo '$(srcdir)/'`ginetsocketaddress.c + +libgio_2_0_la-ginitable.lo: ginitable.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-ginitable.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-ginitable.Tpo -c -o libgio_2_0_la-ginitable.lo `test -f 'ginitable.c' || echo '$(srcdir)/'`ginitable.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-ginitable.Tpo $(DEPDIR)/libgio_2_0_la-ginitable.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ginitable.c' object='libgio_2_0_la-ginitable.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-ginitable.lo `test -f 'ginitable.c' || echo '$(srcdir)/'`ginitable.c + +libgio_2_0_la-ginputstream.lo: ginputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-ginputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-ginputstream.Tpo -c -o libgio_2_0_la-ginputstream.lo `test -f 'ginputstream.c' || echo '$(srcdir)/'`ginputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-ginputstream.Tpo $(DEPDIR)/libgio_2_0_la-ginputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ginputstream.c' object='libgio_2_0_la-ginputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-ginputstream.lo `test -f 'ginputstream.c' || echo '$(srcdir)/'`ginputstream.c + +libgio_2_0_la-gioerror.lo: gioerror.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gioerror.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gioerror.Tpo -c -o libgio_2_0_la-gioerror.lo `test -f 'gioerror.c' || echo '$(srcdir)/'`gioerror.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gioerror.Tpo $(DEPDIR)/libgio_2_0_la-gioerror.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gioerror.c' object='libgio_2_0_la-gioerror.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gioerror.lo `test -f 'gioerror.c' || echo '$(srcdir)/'`gioerror.c + +libgio_2_0_la-giomodule.lo: giomodule.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-giomodule.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-giomodule.Tpo -c -o libgio_2_0_la-giomodule.lo `test -f 'giomodule.c' || echo '$(srcdir)/'`giomodule.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-giomodule.Tpo $(DEPDIR)/libgio_2_0_la-giomodule.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giomodule.c' object='libgio_2_0_la-giomodule.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-giomodule.lo `test -f 'giomodule.c' || echo '$(srcdir)/'`giomodule.c + +libgio_2_0_la-gioscheduler.lo: gioscheduler.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gioscheduler.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gioscheduler.Tpo -c -o libgio_2_0_la-gioscheduler.lo `test -f 'gioscheduler.c' || echo '$(srcdir)/'`gioscheduler.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gioscheduler.Tpo $(DEPDIR)/libgio_2_0_la-gioscheduler.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gioscheduler.c' object='libgio_2_0_la-gioscheduler.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gioscheduler.lo `test -f 'gioscheduler.c' || echo '$(srcdir)/'`gioscheduler.c + +libgio_2_0_la-giostream.lo: giostream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-giostream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-giostream.Tpo -c -o libgio_2_0_la-giostream.lo `test -f 'giostream.c' || echo '$(srcdir)/'`giostream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-giostream.Tpo $(DEPDIR)/libgio_2_0_la-giostream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giostream.c' object='libgio_2_0_la-giostream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-giostream.lo `test -f 'giostream.c' || echo '$(srcdir)/'`giostream.c + +libgio_2_0_la-gloadableicon.lo: gloadableicon.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gloadableicon.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gloadableicon.Tpo -c -o libgio_2_0_la-gloadableicon.lo `test -f 'gloadableicon.c' || echo '$(srcdir)/'`gloadableicon.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gloadableicon.Tpo $(DEPDIR)/libgio_2_0_la-gloadableicon.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gloadableicon.c' object='libgio_2_0_la-gloadableicon.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gloadableicon.lo `test -f 'gloadableicon.c' || echo '$(srcdir)/'`gloadableicon.c + +libgio_2_0_la-gmount.lo: gmount.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gmount.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gmount.Tpo -c -o libgio_2_0_la-gmount.lo `test -f 'gmount.c' || echo '$(srcdir)/'`gmount.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gmount.Tpo $(DEPDIR)/libgio_2_0_la-gmount.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmount.c' object='libgio_2_0_la-gmount.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gmount.lo `test -f 'gmount.c' || echo '$(srcdir)/'`gmount.c + +libgio_2_0_la-gmemoryinputstream.lo: gmemoryinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gmemoryinputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gmemoryinputstream.Tpo -c -o libgio_2_0_la-gmemoryinputstream.lo `test -f 'gmemoryinputstream.c' || echo '$(srcdir)/'`gmemoryinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gmemoryinputstream.Tpo $(DEPDIR)/libgio_2_0_la-gmemoryinputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmemoryinputstream.c' object='libgio_2_0_la-gmemoryinputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gmemoryinputstream.lo `test -f 'gmemoryinputstream.c' || echo '$(srcdir)/'`gmemoryinputstream.c + +libgio_2_0_la-gmemoryoutputstream.lo: gmemoryoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gmemoryoutputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gmemoryoutputstream.Tpo -c -o libgio_2_0_la-gmemoryoutputstream.lo `test -f 'gmemoryoutputstream.c' || echo '$(srcdir)/'`gmemoryoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gmemoryoutputstream.Tpo $(DEPDIR)/libgio_2_0_la-gmemoryoutputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmemoryoutputstream.c' object='libgio_2_0_la-gmemoryoutputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gmemoryoutputstream.lo `test -f 'gmemoryoutputstream.c' || echo '$(srcdir)/'`gmemoryoutputstream.c + +libgio_2_0_la-gmountoperation.lo: gmountoperation.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gmountoperation.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gmountoperation.Tpo -c -o libgio_2_0_la-gmountoperation.lo `test -f 'gmountoperation.c' || echo '$(srcdir)/'`gmountoperation.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gmountoperation.Tpo $(DEPDIR)/libgio_2_0_la-gmountoperation.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmountoperation.c' object='libgio_2_0_la-gmountoperation.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gmountoperation.lo `test -f 'gmountoperation.c' || echo '$(srcdir)/'`gmountoperation.c + +libgio_2_0_la-gnativevolumemonitor.lo: gnativevolumemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gnativevolumemonitor.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gnativevolumemonitor.Tpo -c -o libgio_2_0_la-gnativevolumemonitor.lo `test -f 'gnativevolumemonitor.c' || echo '$(srcdir)/'`gnativevolumemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gnativevolumemonitor.Tpo $(DEPDIR)/libgio_2_0_la-gnativevolumemonitor.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnativevolumemonitor.c' object='libgio_2_0_la-gnativevolumemonitor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gnativevolumemonitor.lo `test -f 'gnativevolumemonitor.c' || echo '$(srcdir)/'`gnativevolumemonitor.c + +libgio_2_0_la-gnativesocketaddress.lo: gnativesocketaddress.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gnativesocketaddress.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gnativesocketaddress.Tpo -c -o libgio_2_0_la-gnativesocketaddress.lo `test -f 'gnativesocketaddress.c' || echo '$(srcdir)/'`gnativesocketaddress.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gnativesocketaddress.Tpo $(DEPDIR)/libgio_2_0_la-gnativesocketaddress.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnativesocketaddress.c' object='libgio_2_0_la-gnativesocketaddress.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gnativesocketaddress.lo `test -f 'gnativesocketaddress.c' || echo '$(srcdir)/'`gnativesocketaddress.c + +libgio_2_0_la-gnetworkaddress.lo: gnetworkaddress.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gnetworkaddress.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gnetworkaddress.Tpo -c -o libgio_2_0_la-gnetworkaddress.lo `test -f 'gnetworkaddress.c' || echo '$(srcdir)/'`gnetworkaddress.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gnetworkaddress.Tpo $(DEPDIR)/libgio_2_0_la-gnetworkaddress.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnetworkaddress.c' object='libgio_2_0_la-gnetworkaddress.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gnetworkaddress.lo `test -f 'gnetworkaddress.c' || echo '$(srcdir)/'`gnetworkaddress.c + +libgio_2_0_la-gnetworking.lo: gnetworking.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gnetworking.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gnetworking.Tpo -c -o libgio_2_0_la-gnetworking.lo `test -f 'gnetworking.c' || echo '$(srcdir)/'`gnetworking.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gnetworking.Tpo $(DEPDIR)/libgio_2_0_la-gnetworking.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnetworking.c' object='libgio_2_0_la-gnetworking.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gnetworking.lo `test -f 'gnetworking.c' || echo '$(srcdir)/'`gnetworking.c + +libgio_2_0_la-gnetworkmonitor.lo: gnetworkmonitor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gnetworkmonitor.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gnetworkmonitor.Tpo -c -o libgio_2_0_la-gnetworkmonitor.lo `test -f 'gnetworkmonitor.c' || echo '$(srcdir)/'`gnetworkmonitor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gnetworkmonitor.Tpo $(DEPDIR)/libgio_2_0_la-gnetworkmonitor.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnetworkmonitor.c' object='libgio_2_0_la-gnetworkmonitor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gnetworkmonitor.lo `test -f 'gnetworkmonitor.c' || echo '$(srcdir)/'`gnetworkmonitor.c + +libgio_2_0_la-gnetworkmonitorbase.lo: gnetworkmonitorbase.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gnetworkmonitorbase.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gnetworkmonitorbase.Tpo -c -o libgio_2_0_la-gnetworkmonitorbase.lo `test -f 'gnetworkmonitorbase.c' || echo '$(srcdir)/'`gnetworkmonitorbase.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gnetworkmonitorbase.Tpo $(DEPDIR)/libgio_2_0_la-gnetworkmonitorbase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnetworkmonitorbase.c' object='libgio_2_0_la-gnetworkmonitorbase.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gnetworkmonitorbase.lo `test -f 'gnetworkmonitorbase.c' || echo '$(srcdir)/'`gnetworkmonitorbase.c + +libgio_2_0_la-gnetworkservice.lo: gnetworkservice.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gnetworkservice.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gnetworkservice.Tpo -c -o libgio_2_0_la-gnetworkservice.lo `test -f 'gnetworkservice.c' || echo '$(srcdir)/'`gnetworkservice.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gnetworkservice.Tpo $(DEPDIR)/libgio_2_0_la-gnetworkservice.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnetworkservice.c' object='libgio_2_0_la-gnetworkservice.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gnetworkservice.lo `test -f 'gnetworkservice.c' || echo '$(srcdir)/'`gnetworkservice.c + +libgio_2_0_la-goutputstream.lo: goutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-goutputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-goutputstream.Tpo -c -o libgio_2_0_la-goutputstream.lo `test -f 'goutputstream.c' || echo '$(srcdir)/'`goutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-goutputstream.Tpo $(DEPDIR)/libgio_2_0_la-goutputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='goutputstream.c' object='libgio_2_0_la-goutputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-goutputstream.lo `test -f 'goutputstream.c' || echo '$(srcdir)/'`goutputstream.c + +libgio_2_0_la-gpermission.lo: gpermission.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gpermission.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gpermission.Tpo -c -o libgio_2_0_la-gpermission.lo `test -f 'gpermission.c' || echo '$(srcdir)/'`gpermission.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gpermission.Tpo $(DEPDIR)/libgio_2_0_la-gpermission.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpermission.c' object='libgio_2_0_la-gpermission.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gpermission.lo `test -f 'gpermission.c' || echo '$(srcdir)/'`gpermission.c + +libgio_2_0_la-gpollableinputstream.lo: gpollableinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gpollableinputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gpollableinputstream.Tpo -c -o libgio_2_0_la-gpollableinputstream.lo `test -f 'gpollableinputstream.c' || echo '$(srcdir)/'`gpollableinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gpollableinputstream.Tpo $(DEPDIR)/libgio_2_0_la-gpollableinputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpollableinputstream.c' object='libgio_2_0_la-gpollableinputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gpollableinputstream.lo `test -f 'gpollableinputstream.c' || echo '$(srcdir)/'`gpollableinputstream.c + +libgio_2_0_la-gpollableoutputstream.lo: gpollableoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gpollableoutputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gpollableoutputstream.Tpo -c -o libgio_2_0_la-gpollableoutputstream.lo `test -f 'gpollableoutputstream.c' || echo '$(srcdir)/'`gpollableoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gpollableoutputstream.Tpo $(DEPDIR)/libgio_2_0_la-gpollableoutputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpollableoutputstream.c' object='libgio_2_0_la-gpollableoutputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gpollableoutputstream.lo `test -f 'gpollableoutputstream.c' || echo '$(srcdir)/'`gpollableoutputstream.c + +libgio_2_0_la-gpollableutils.lo: gpollableutils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gpollableutils.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gpollableutils.Tpo -c -o libgio_2_0_la-gpollableutils.lo `test -f 'gpollableutils.c' || echo '$(srcdir)/'`gpollableutils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gpollableutils.Tpo $(DEPDIR)/libgio_2_0_la-gpollableutils.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpollableutils.c' object='libgio_2_0_la-gpollableutils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gpollableutils.lo `test -f 'gpollableutils.c' || echo '$(srcdir)/'`gpollableutils.c + +libgio_2_0_la-gpollfilemonitor.lo: gpollfilemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gpollfilemonitor.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gpollfilemonitor.Tpo -c -o libgio_2_0_la-gpollfilemonitor.lo `test -f 'gpollfilemonitor.c' || echo '$(srcdir)/'`gpollfilemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gpollfilemonitor.Tpo $(DEPDIR)/libgio_2_0_la-gpollfilemonitor.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpollfilemonitor.c' object='libgio_2_0_la-gpollfilemonitor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gpollfilemonitor.lo `test -f 'gpollfilemonitor.c' || echo '$(srcdir)/'`gpollfilemonitor.c + +libgio_2_0_la-gproxy.lo: gproxy.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gproxy.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gproxy.Tpo -c -o libgio_2_0_la-gproxy.lo `test -f 'gproxy.c' || echo '$(srcdir)/'`gproxy.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gproxy.Tpo $(DEPDIR)/libgio_2_0_la-gproxy.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gproxy.c' object='libgio_2_0_la-gproxy.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gproxy.lo `test -f 'gproxy.c' || echo '$(srcdir)/'`gproxy.c + +libgio_2_0_la-gproxyaddress.lo: gproxyaddress.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gproxyaddress.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gproxyaddress.Tpo -c -o libgio_2_0_la-gproxyaddress.lo `test -f 'gproxyaddress.c' || echo '$(srcdir)/'`gproxyaddress.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gproxyaddress.Tpo $(DEPDIR)/libgio_2_0_la-gproxyaddress.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gproxyaddress.c' object='libgio_2_0_la-gproxyaddress.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gproxyaddress.lo `test -f 'gproxyaddress.c' || echo '$(srcdir)/'`gproxyaddress.c + +libgio_2_0_la-gproxyaddressenumerator.lo: gproxyaddressenumerator.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gproxyaddressenumerator.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gproxyaddressenumerator.Tpo -c -o libgio_2_0_la-gproxyaddressenumerator.lo `test -f 'gproxyaddressenumerator.c' || echo '$(srcdir)/'`gproxyaddressenumerator.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gproxyaddressenumerator.Tpo $(DEPDIR)/libgio_2_0_la-gproxyaddressenumerator.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gproxyaddressenumerator.c' object='libgio_2_0_la-gproxyaddressenumerator.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gproxyaddressenumerator.lo `test -f 'gproxyaddressenumerator.c' || echo '$(srcdir)/'`gproxyaddressenumerator.c + +libgio_2_0_la-gproxyresolver.lo: gproxyresolver.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gproxyresolver.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gproxyresolver.Tpo -c -o libgio_2_0_la-gproxyresolver.lo `test -f 'gproxyresolver.c' || echo '$(srcdir)/'`gproxyresolver.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gproxyresolver.Tpo $(DEPDIR)/libgio_2_0_la-gproxyresolver.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gproxyresolver.c' object='libgio_2_0_la-gproxyresolver.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gproxyresolver.lo `test -f 'gproxyresolver.c' || echo '$(srcdir)/'`gproxyresolver.c + +libgio_2_0_la-gresolver.lo: gresolver.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gresolver.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gresolver.Tpo -c -o libgio_2_0_la-gresolver.lo `test -f 'gresolver.c' || echo '$(srcdir)/'`gresolver.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gresolver.Tpo $(DEPDIR)/libgio_2_0_la-gresolver.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gresolver.c' object='libgio_2_0_la-gresolver.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gresolver.lo `test -f 'gresolver.c' || echo '$(srcdir)/'`gresolver.c + +libgio_2_0_la-gresource.lo: gresource.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gresource.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gresource.Tpo -c -o libgio_2_0_la-gresource.lo `test -f 'gresource.c' || echo '$(srcdir)/'`gresource.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gresource.Tpo $(DEPDIR)/libgio_2_0_la-gresource.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gresource.c' object='libgio_2_0_la-gresource.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gresource.lo `test -f 'gresource.c' || echo '$(srcdir)/'`gresource.c + +libgio_2_0_la-gresourcefile.lo: gresourcefile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gresourcefile.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gresourcefile.Tpo -c -o libgio_2_0_la-gresourcefile.lo `test -f 'gresourcefile.c' || echo '$(srcdir)/'`gresourcefile.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gresourcefile.Tpo $(DEPDIR)/libgio_2_0_la-gresourcefile.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gresourcefile.c' object='libgio_2_0_la-gresourcefile.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gresourcefile.lo `test -f 'gresourcefile.c' || echo '$(srcdir)/'`gresourcefile.c + +libgio_2_0_la-gseekable.lo: gseekable.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gseekable.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gseekable.Tpo -c -o libgio_2_0_la-gseekable.lo `test -f 'gseekable.c' || echo '$(srcdir)/'`gseekable.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gseekable.Tpo $(DEPDIR)/libgio_2_0_la-gseekable.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gseekable.c' object='libgio_2_0_la-gseekable.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gseekable.lo `test -f 'gseekable.c' || echo '$(srcdir)/'`gseekable.c + +libgio_2_0_la-gsimpleasyncresult.lo: gsimpleasyncresult.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsimpleasyncresult.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsimpleasyncresult.Tpo -c -o libgio_2_0_la-gsimpleasyncresult.lo `test -f 'gsimpleasyncresult.c' || echo '$(srcdir)/'`gsimpleasyncresult.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsimpleasyncresult.Tpo $(DEPDIR)/libgio_2_0_la-gsimpleasyncresult.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsimpleasyncresult.c' object='libgio_2_0_la-gsimpleasyncresult.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsimpleasyncresult.lo `test -f 'gsimpleasyncresult.c' || echo '$(srcdir)/'`gsimpleasyncresult.c + +libgio_2_0_la-gsimpleiostream.lo: gsimpleiostream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsimpleiostream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsimpleiostream.Tpo -c -o libgio_2_0_la-gsimpleiostream.lo `test -f 'gsimpleiostream.c' || echo '$(srcdir)/'`gsimpleiostream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsimpleiostream.Tpo $(DEPDIR)/libgio_2_0_la-gsimpleiostream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsimpleiostream.c' object='libgio_2_0_la-gsimpleiostream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsimpleiostream.lo `test -f 'gsimpleiostream.c' || echo '$(srcdir)/'`gsimpleiostream.c + +libgio_2_0_la-gsimplepermission.lo: gsimplepermission.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsimplepermission.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsimplepermission.Tpo -c -o libgio_2_0_la-gsimplepermission.lo `test -f 'gsimplepermission.c' || echo '$(srcdir)/'`gsimplepermission.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsimplepermission.Tpo $(DEPDIR)/libgio_2_0_la-gsimplepermission.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsimplepermission.c' object='libgio_2_0_la-gsimplepermission.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsimplepermission.lo `test -f 'gsimplepermission.c' || echo '$(srcdir)/'`gsimplepermission.c + +libgio_2_0_la-gsocket.lo: gsocket.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsocket.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsocket.Tpo -c -o libgio_2_0_la-gsocket.lo `test -f 'gsocket.c' || echo '$(srcdir)/'`gsocket.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsocket.Tpo $(DEPDIR)/libgio_2_0_la-gsocket.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsocket.c' object='libgio_2_0_la-gsocket.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsocket.lo `test -f 'gsocket.c' || echo '$(srcdir)/'`gsocket.c + +libgio_2_0_la-gsocketaddress.lo: gsocketaddress.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsocketaddress.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsocketaddress.Tpo -c -o libgio_2_0_la-gsocketaddress.lo `test -f 'gsocketaddress.c' || echo '$(srcdir)/'`gsocketaddress.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsocketaddress.Tpo $(DEPDIR)/libgio_2_0_la-gsocketaddress.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsocketaddress.c' object='libgio_2_0_la-gsocketaddress.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsocketaddress.lo `test -f 'gsocketaddress.c' || echo '$(srcdir)/'`gsocketaddress.c + +libgio_2_0_la-gsocketaddressenumerator.lo: gsocketaddressenumerator.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsocketaddressenumerator.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsocketaddressenumerator.Tpo -c -o libgio_2_0_la-gsocketaddressenumerator.lo `test -f 'gsocketaddressenumerator.c' || echo '$(srcdir)/'`gsocketaddressenumerator.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsocketaddressenumerator.Tpo $(DEPDIR)/libgio_2_0_la-gsocketaddressenumerator.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsocketaddressenumerator.c' object='libgio_2_0_la-gsocketaddressenumerator.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsocketaddressenumerator.lo `test -f 'gsocketaddressenumerator.c' || echo '$(srcdir)/'`gsocketaddressenumerator.c + +libgio_2_0_la-gsocketclient.lo: gsocketclient.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsocketclient.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsocketclient.Tpo -c -o libgio_2_0_la-gsocketclient.lo `test -f 'gsocketclient.c' || echo '$(srcdir)/'`gsocketclient.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsocketclient.Tpo $(DEPDIR)/libgio_2_0_la-gsocketclient.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsocketclient.c' object='libgio_2_0_la-gsocketclient.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsocketclient.lo `test -f 'gsocketclient.c' || echo '$(srcdir)/'`gsocketclient.c + +libgio_2_0_la-gsocketconnectable.lo: gsocketconnectable.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsocketconnectable.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsocketconnectable.Tpo -c -o libgio_2_0_la-gsocketconnectable.lo `test -f 'gsocketconnectable.c' || echo '$(srcdir)/'`gsocketconnectable.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsocketconnectable.Tpo $(DEPDIR)/libgio_2_0_la-gsocketconnectable.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsocketconnectable.c' object='libgio_2_0_la-gsocketconnectable.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsocketconnectable.lo `test -f 'gsocketconnectable.c' || echo '$(srcdir)/'`gsocketconnectable.c + +libgio_2_0_la-gsocketconnection.lo: gsocketconnection.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsocketconnection.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsocketconnection.Tpo -c -o libgio_2_0_la-gsocketconnection.lo `test -f 'gsocketconnection.c' || echo '$(srcdir)/'`gsocketconnection.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsocketconnection.Tpo $(DEPDIR)/libgio_2_0_la-gsocketconnection.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsocketconnection.c' object='libgio_2_0_la-gsocketconnection.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsocketconnection.lo `test -f 'gsocketconnection.c' || echo '$(srcdir)/'`gsocketconnection.c + +libgio_2_0_la-gsocketcontrolmessage.lo: gsocketcontrolmessage.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsocketcontrolmessage.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsocketcontrolmessage.Tpo -c -o libgio_2_0_la-gsocketcontrolmessage.lo `test -f 'gsocketcontrolmessage.c' || echo '$(srcdir)/'`gsocketcontrolmessage.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsocketcontrolmessage.Tpo $(DEPDIR)/libgio_2_0_la-gsocketcontrolmessage.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsocketcontrolmessage.c' object='libgio_2_0_la-gsocketcontrolmessage.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsocketcontrolmessage.lo `test -f 'gsocketcontrolmessage.c' || echo '$(srcdir)/'`gsocketcontrolmessage.c + +libgio_2_0_la-gsocketinputstream.lo: gsocketinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsocketinputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsocketinputstream.Tpo -c -o libgio_2_0_la-gsocketinputstream.lo `test -f 'gsocketinputstream.c' || echo '$(srcdir)/'`gsocketinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsocketinputstream.Tpo $(DEPDIR)/libgio_2_0_la-gsocketinputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsocketinputstream.c' object='libgio_2_0_la-gsocketinputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsocketinputstream.lo `test -f 'gsocketinputstream.c' || echo '$(srcdir)/'`gsocketinputstream.c + +libgio_2_0_la-gsocketlistener.lo: gsocketlistener.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsocketlistener.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsocketlistener.Tpo -c -o libgio_2_0_la-gsocketlistener.lo `test -f 'gsocketlistener.c' || echo '$(srcdir)/'`gsocketlistener.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsocketlistener.Tpo $(DEPDIR)/libgio_2_0_la-gsocketlistener.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsocketlistener.c' object='libgio_2_0_la-gsocketlistener.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsocketlistener.lo `test -f 'gsocketlistener.c' || echo '$(srcdir)/'`gsocketlistener.c + +libgio_2_0_la-gsocketoutputstream.lo: gsocketoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsocketoutputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsocketoutputstream.Tpo -c -o libgio_2_0_la-gsocketoutputstream.lo `test -f 'gsocketoutputstream.c' || echo '$(srcdir)/'`gsocketoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsocketoutputstream.Tpo $(DEPDIR)/libgio_2_0_la-gsocketoutputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsocketoutputstream.c' object='libgio_2_0_la-gsocketoutputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsocketoutputstream.lo `test -f 'gsocketoutputstream.c' || echo '$(srcdir)/'`gsocketoutputstream.c + +libgio_2_0_la-gsubprocesslauncher.lo: gsubprocesslauncher.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsubprocesslauncher.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsubprocesslauncher.Tpo -c -o libgio_2_0_la-gsubprocesslauncher.lo `test -f 'gsubprocesslauncher.c' || echo '$(srcdir)/'`gsubprocesslauncher.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsubprocesslauncher.Tpo $(DEPDIR)/libgio_2_0_la-gsubprocesslauncher.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsubprocesslauncher.c' object='libgio_2_0_la-gsubprocesslauncher.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsubprocesslauncher.lo `test -f 'gsubprocesslauncher.c' || echo '$(srcdir)/'`gsubprocesslauncher.c + +libgio_2_0_la-gsubprocess.lo: gsubprocess.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsubprocess.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsubprocess.Tpo -c -o libgio_2_0_la-gsubprocess.lo `test -f 'gsubprocess.c' || echo '$(srcdir)/'`gsubprocess.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsubprocess.Tpo $(DEPDIR)/libgio_2_0_la-gsubprocess.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsubprocess.c' object='libgio_2_0_la-gsubprocess.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsubprocess.lo `test -f 'gsubprocess.c' || echo '$(srcdir)/'`gsubprocess.c + +libgio_2_0_la-gsocketservice.lo: gsocketservice.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsocketservice.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsocketservice.Tpo -c -o libgio_2_0_la-gsocketservice.lo `test -f 'gsocketservice.c' || echo '$(srcdir)/'`gsocketservice.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsocketservice.Tpo $(DEPDIR)/libgio_2_0_la-gsocketservice.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsocketservice.c' object='libgio_2_0_la-gsocketservice.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsocketservice.lo `test -f 'gsocketservice.c' || echo '$(srcdir)/'`gsocketservice.c + +libgio_2_0_la-gsrvtarget.lo: gsrvtarget.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsrvtarget.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsrvtarget.Tpo -c -o libgio_2_0_la-gsrvtarget.lo `test -f 'gsrvtarget.c' || echo '$(srcdir)/'`gsrvtarget.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsrvtarget.Tpo $(DEPDIR)/libgio_2_0_la-gsrvtarget.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsrvtarget.c' object='libgio_2_0_la-gsrvtarget.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsrvtarget.lo `test -f 'gsrvtarget.c' || echo '$(srcdir)/'`gsrvtarget.c + +libgio_2_0_la-gsimpleproxyresolver.lo: gsimpleproxyresolver.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsimpleproxyresolver.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsimpleproxyresolver.Tpo -c -o libgio_2_0_la-gsimpleproxyresolver.lo `test -f 'gsimpleproxyresolver.c' || echo '$(srcdir)/'`gsimpleproxyresolver.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsimpleproxyresolver.Tpo $(DEPDIR)/libgio_2_0_la-gsimpleproxyresolver.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsimpleproxyresolver.c' object='libgio_2_0_la-gsimpleproxyresolver.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsimpleproxyresolver.lo `test -f 'gsimpleproxyresolver.c' || echo '$(srcdir)/'`gsimpleproxyresolver.c + +libgio_2_0_la-gtask.lo: gtask.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gtask.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gtask.Tpo -c -o libgio_2_0_la-gtask.lo `test -f 'gtask.c' || echo '$(srcdir)/'`gtask.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gtask.Tpo $(DEPDIR)/libgio_2_0_la-gtask.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtask.c' object='libgio_2_0_la-gtask.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gtask.lo `test -f 'gtask.c' || echo '$(srcdir)/'`gtask.c + +libgio_2_0_la-gtcpconnection.lo: gtcpconnection.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gtcpconnection.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gtcpconnection.Tpo -c -o libgio_2_0_la-gtcpconnection.lo `test -f 'gtcpconnection.c' || echo '$(srcdir)/'`gtcpconnection.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gtcpconnection.Tpo $(DEPDIR)/libgio_2_0_la-gtcpconnection.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtcpconnection.c' object='libgio_2_0_la-gtcpconnection.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gtcpconnection.lo `test -f 'gtcpconnection.c' || echo '$(srcdir)/'`gtcpconnection.c + +libgio_2_0_la-gtcpwrapperconnection.lo: gtcpwrapperconnection.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gtcpwrapperconnection.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gtcpwrapperconnection.Tpo -c -o libgio_2_0_la-gtcpwrapperconnection.lo `test -f 'gtcpwrapperconnection.c' || echo '$(srcdir)/'`gtcpwrapperconnection.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gtcpwrapperconnection.Tpo $(DEPDIR)/libgio_2_0_la-gtcpwrapperconnection.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtcpwrapperconnection.c' object='libgio_2_0_la-gtcpwrapperconnection.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gtcpwrapperconnection.lo `test -f 'gtcpwrapperconnection.c' || echo '$(srcdir)/'`gtcpwrapperconnection.c + +libgio_2_0_la-gthreadedsocketservice.lo: gthreadedsocketservice.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gthreadedsocketservice.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gthreadedsocketservice.Tpo -c -o libgio_2_0_la-gthreadedsocketservice.lo `test -f 'gthreadedsocketservice.c' || echo '$(srcdir)/'`gthreadedsocketservice.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gthreadedsocketservice.Tpo $(DEPDIR)/libgio_2_0_la-gthreadedsocketservice.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gthreadedsocketservice.c' object='libgio_2_0_la-gthreadedsocketservice.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gthreadedsocketservice.lo `test -f 'gthreadedsocketservice.c' || echo '$(srcdir)/'`gthreadedsocketservice.c + +libgio_2_0_la-gthemedicon.lo: gthemedicon.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gthemedicon.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gthemedicon.Tpo -c -o libgio_2_0_la-gthemedicon.lo `test -f 'gthemedicon.c' || echo '$(srcdir)/'`gthemedicon.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gthemedicon.Tpo $(DEPDIR)/libgio_2_0_la-gthemedicon.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gthemedicon.c' object='libgio_2_0_la-gthemedicon.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gthemedicon.lo `test -f 'gthemedicon.c' || echo '$(srcdir)/'`gthemedicon.c + +libgio_2_0_la-gthreadedresolver.lo: gthreadedresolver.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gthreadedresolver.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gthreadedresolver.Tpo -c -o libgio_2_0_la-gthreadedresolver.lo `test -f 'gthreadedresolver.c' || echo '$(srcdir)/'`gthreadedresolver.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gthreadedresolver.Tpo $(DEPDIR)/libgio_2_0_la-gthreadedresolver.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gthreadedresolver.c' object='libgio_2_0_la-gthreadedresolver.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gthreadedresolver.lo `test -f 'gthreadedresolver.c' || echo '$(srcdir)/'`gthreadedresolver.c + +libgio_2_0_la-gtlsbackend.lo: gtlsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gtlsbackend.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gtlsbackend.Tpo -c -o libgio_2_0_la-gtlsbackend.lo `test -f 'gtlsbackend.c' || echo '$(srcdir)/'`gtlsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gtlsbackend.Tpo $(DEPDIR)/libgio_2_0_la-gtlsbackend.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtlsbackend.c' object='libgio_2_0_la-gtlsbackend.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gtlsbackend.lo `test -f 'gtlsbackend.c' || echo '$(srcdir)/'`gtlsbackend.c + +libgio_2_0_la-gtlscertificate.lo: gtlscertificate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gtlscertificate.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gtlscertificate.Tpo -c -o libgio_2_0_la-gtlscertificate.lo `test -f 'gtlscertificate.c' || echo '$(srcdir)/'`gtlscertificate.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gtlscertificate.Tpo $(DEPDIR)/libgio_2_0_la-gtlscertificate.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtlscertificate.c' object='libgio_2_0_la-gtlscertificate.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gtlscertificate.lo `test -f 'gtlscertificate.c' || echo '$(srcdir)/'`gtlscertificate.c + +libgio_2_0_la-gtlsclientconnection.lo: gtlsclientconnection.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gtlsclientconnection.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gtlsclientconnection.Tpo -c -o libgio_2_0_la-gtlsclientconnection.lo `test -f 'gtlsclientconnection.c' || echo '$(srcdir)/'`gtlsclientconnection.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gtlsclientconnection.Tpo $(DEPDIR)/libgio_2_0_la-gtlsclientconnection.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtlsclientconnection.c' object='libgio_2_0_la-gtlsclientconnection.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gtlsclientconnection.lo `test -f 'gtlsclientconnection.c' || echo '$(srcdir)/'`gtlsclientconnection.c + +libgio_2_0_la-gtlsconnection.lo: gtlsconnection.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gtlsconnection.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gtlsconnection.Tpo -c -o libgio_2_0_la-gtlsconnection.lo `test -f 'gtlsconnection.c' || echo '$(srcdir)/'`gtlsconnection.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gtlsconnection.Tpo $(DEPDIR)/libgio_2_0_la-gtlsconnection.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtlsconnection.c' object='libgio_2_0_la-gtlsconnection.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gtlsconnection.lo `test -f 'gtlsconnection.c' || echo '$(srcdir)/'`gtlsconnection.c + +libgio_2_0_la-gtlsdatabase.lo: gtlsdatabase.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gtlsdatabase.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gtlsdatabase.Tpo -c -o libgio_2_0_la-gtlsdatabase.lo `test -f 'gtlsdatabase.c' || echo '$(srcdir)/'`gtlsdatabase.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gtlsdatabase.Tpo $(DEPDIR)/libgio_2_0_la-gtlsdatabase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtlsdatabase.c' object='libgio_2_0_la-gtlsdatabase.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gtlsdatabase.lo `test -f 'gtlsdatabase.c' || echo '$(srcdir)/'`gtlsdatabase.c + +libgio_2_0_la-gtlsfiledatabase.lo: gtlsfiledatabase.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gtlsfiledatabase.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gtlsfiledatabase.Tpo -c -o libgio_2_0_la-gtlsfiledatabase.lo `test -f 'gtlsfiledatabase.c' || echo '$(srcdir)/'`gtlsfiledatabase.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gtlsfiledatabase.Tpo $(DEPDIR)/libgio_2_0_la-gtlsfiledatabase.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtlsfiledatabase.c' object='libgio_2_0_la-gtlsfiledatabase.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gtlsfiledatabase.lo `test -f 'gtlsfiledatabase.c' || echo '$(srcdir)/'`gtlsfiledatabase.c + +libgio_2_0_la-gtlsinteraction.lo: gtlsinteraction.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gtlsinteraction.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gtlsinteraction.Tpo -c -o libgio_2_0_la-gtlsinteraction.lo `test -f 'gtlsinteraction.c' || echo '$(srcdir)/'`gtlsinteraction.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gtlsinteraction.Tpo $(DEPDIR)/libgio_2_0_la-gtlsinteraction.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtlsinteraction.c' object='libgio_2_0_la-gtlsinteraction.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gtlsinteraction.lo `test -f 'gtlsinteraction.c' || echo '$(srcdir)/'`gtlsinteraction.c + +libgio_2_0_la-gtlspassword.lo: gtlspassword.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gtlspassword.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gtlspassword.Tpo -c -o libgio_2_0_la-gtlspassword.lo `test -f 'gtlspassword.c' || echo '$(srcdir)/'`gtlspassword.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gtlspassword.Tpo $(DEPDIR)/libgio_2_0_la-gtlspassword.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtlspassword.c' object='libgio_2_0_la-gtlspassword.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gtlspassword.lo `test -f 'gtlspassword.c' || echo '$(srcdir)/'`gtlspassword.c + +libgio_2_0_la-gtlsserverconnection.lo: gtlsserverconnection.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gtlsserverconnection.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gtlsserverconnection.Tpo -c -o libgio_2_0_la-gtlsserverconnection.lo `test -f 'gtlsserverconnection.c' || echo '$(srcdir)/'`gtlsserverconnection.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gtlsserverconnection.Tpo $(DEPDIR)/libgio_2_0_la-gtlsserverconnection.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtlsserverconnection.c' object='libgio_2_0_la-gtlsserverconnection.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gtlsserverconnection.lo `test -f 'gtlsserverconnection.c' || echo '$(srcdir)/'`gtlsserverconnection.c + +libgio_2_0_la-gdtlsconnection.lo: gdtlsconnection.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdtlsconnection.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdtlsconnection.Tpo -c -o libgio_2_0_la-gdtlsconnection.lo `test -f 'gdtlsconnection.c' || echo '$(srcdir)/'`gdtlsconnection.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdtlsconnection.Tpo $(DEPDIR)/libgio_2_0_la-gdtlsconnection.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdtlsconnection.c' object='libgio_2_0_la-gdtlsconnection.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdtlsconnection.lo `test -f 'gdtlsconnection.c' || echo '$(srcdir)/'`gdtlsconnection.c + +libgio_2_0_la-gdtlsclientconnection.lo: gdtlsclientconnection.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdtlsclientconnection.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdtlsclientconnection.Tpo -c -o libgio_2_0_la-gdtlsclientconnection.lo `test -f 'gdtlsclientconnection.c' || echo '$(srcdir)/'`gdtlsclientconnection.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdtlsclientconnection.Tpo $(DEPDIR)/libgio_2_0_la-gdtlsclientconnection.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdtlsclientconnection.c' object='libgio_2_0_la-gdtlsclientconnection.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdtlsclientconnection.lo `test -f 'gdtlsclientconnection.c' || echo '$(srcdir)/'`gdtlsclientconnection.c + +libgio_2_0_la-gdtlsserverconnection.lo: gdtlsserverconnection.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdtlsserverconnection.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdtlsserverconnection.Tpo -c -o libgio_2_0_la-gdtlsserverconnection.lo `test -f 'gdtlsserverconnection.c' || echo '$(srcdir)/'`gdtlsserverconnection.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdtlsserverconnection.Tpo $(DEPDIR)/libgio_2_0_la-gdtlsserverconnection.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdtlsserverconnection.c' object='libgio_2_0_la-gdtlsserverconnection.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdtlsserverconnection.lo `test -f 'gdtlsserverconnection.c' || echo '$(srcdir)/'`gdtlsserverconnection.c + +libgio_2_0_la-gunionvolumemonitor.lo: gunionvolumemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gunionvolumemonitor.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gunionvolumemonitor.Tpo -c -o libgio_2_0_la-gunionvolumemonitor.lo `test -f 'gunionvolumemonitor.c' || echo '$(srcdir)/'`gunionvolumemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gunionvolumemonitor.Tpo $(DEPDIR)/libgio_2_0_la-gunionvolumemonitor.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunionvolumemonitor.c' object='libgio_2_0_la-gunionvolumemonitor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gunionvolumemonitor.lo `test -f 'gunionvolumemonitor.c' || echo '$(srcdir)/'`gunionvolumemonitor.c + +libgio_2_0_la-gvfs.lo: gvfs.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gvfs.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gvfs.Tpo -c -o libgio_2_0_la-gvfs.lo `test -f 'gvfs.c' || echo '$(srcdir)/'`gvfs.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gvfs.Tpo $(DEPDIR)/libgio_2_0_la-gvfs.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvfs.c' object='libgio_2_0_la-gvfs.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gvfs.lo `test -f 'gvfs.c' || echo '$(srcdir)/'`gvfs.c + +libgio_2_0_la-gvolume.lo: gvolume.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gvolume.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gvolume.Tpo -c -o libgio_2_0_la-gvolume.lo `test -f 'gvolume.c' || echo '$(srcdir)/'`gvolume.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gvolume.Tpo $(DEPDIR)/libgio_2_0_la-gvolume.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvolume.c' object='libgio_2_0_la-gvolume.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gvolume.lo `test -f 'gvolume.c' || echo '$(srcdir)/'`gvolume.c + +libgio_2_0_la-gvolumemonitor.lo: gvolumemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gvolumemonitor.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gvolumemonitor.Tpo -c -o libgio_2_0_la-gvolumemonitor.lo `test -f 'gvolumemonitor.c' || echo '$(srcdir)/'`gvolumemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gvolumemonitor.Tpo $(DEPDIR)/libgio_2_0_la-gvolumemonitor.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvolumemonitor.c' object='libgio_2_0_la-gvolumemonitor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gvolumemonitor.lo `test -f 'gvolumemonitor.c' || echo '$(srcdir)/'`gvolumemonitor.c + +libgio_2_0_la-gzlibcompressor.lo: gzlibcompressor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gzlibcompressor.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gzlibcompressor.Tpo -c -o libgio_2_0_la-gzlibcompressor.lo `test -f 'gzlibcompressor.c' || echo '$(srcdir)/'`gzlibcompressor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gzlibcompressor.Tpo $(DEPDIR)/libgio_2_0_la-gzlibcompressor.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gzlibcompressor.c' object='libgio_2_0_la-gzlibcompressor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gzlibcompressor.lo `test -f 'gzlibcompressor.c' || echo '$(srcdir)/'`gzlibcompressor.c + +libgio_2_0_la-gzlibdecompressor.lo: gzlibdecompressor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gzlibdecompressor.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gzlibdecompressor.Tpo -c -o libgio_2_0_la-gzlibdecompressor.lo `test -f 'gzlibdecompressor.c' || echo '$(srcdir)/'`gzlibdecompressor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gzlibdecompressor.Tpo $(DEPDIR)/libgio_2_0_la-gzlibdecompressor.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gzlibdecompressor.c' object='libgio_2_0_la-gzlibdecompressor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gzlibdecompressor.lo `test -f 'gzlibdecompressor.c' || echo '$(srcdir)/'`gzlibdecompressor.c + +libgio_2_0_la-gioenumtypes.lo: gioenumtypes.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gioenumtypes.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gioenumtypes.Tpo -c -o libgio_2_0_la-gioenumtypes.lo `test -f 'gioenumtypes.c' || echo '$(srcdir)/'`gioenumtypes.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gioenumtypes.Tpo $(DEPDIR)/libgio_2_0_la-gioenumtypes.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gioenumtypes.c' object='libgio_2_0_la-gioenumtypes.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gioenumtypes.lo `test -f 'gioenumtypes.c' || echo '$(srcdir)/'`gioenumtypes.c + +libgio_2_0_la-glistmodel.lo: glistmodel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-glistmodel.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-glistmodel.Tpo -c -o libgio_2_0_la-glistmodel.lo `test -f 'glistmodel.c' || echo '$(srcdir)/'`glistmodel.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-glistmodel.Tpo $(DEPDIR)/libgio_2_0_la-glistmodel.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glistmodel.c' object='libgio_2_0_la-glistmodel.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-glistmodel.lo `test -f 'glistmodel.c' || echo '$(srcdir)/'`glistmodel.c + +libgio_2_0_la-gliststore.lo: gliststore.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gliststore.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gliststore.Tpo -c -o libgio_2_0_la-gliststore.lo `test -f 'gliststore.c' || echo '$(srcdir)/'`gliststore.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gliststore.Tpo $(DEPDIR)/libgio_2_0_la-gliststore.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gliststore.c' object='libgio_2_0_la-gliststore.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gliststore.lo `test -f 'gliststore.c' || echo '$(srcdir)/'`gliststore.c + +libgio_2_0_la-gdesktopappinfo.lo: gdesktopappinfo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdesktopappinfo.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdesktopappinfo.Tpo -c -o libgio_2_0_la-gdesktopappinfo.lo `test -f 'gdesktopappinfo.c' || echo '$(srcdir)/'`gdesktopappinfo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdesktopappinfo.Tpo $(DEPDIR)/libgio_2_0_la-gdesktopappinfo.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdesktopappinfo.c' object='libgio_2_0_la-gdesktopappinfo.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdesktopappinfo.lo `test -f 'gdesktopappinfo.c' || echo '$(srcdir)/'`gdesktopappinfo.c + +libgio_2_0_la-gwin32appinfo.lo: gwin32appinfo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gwin32appinfo.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gwin32appinfo.Tpo -c -o libgio_2_0_la-gwin32appinfo.lo `test -f 'gwin32appinfo.c' || echo '$(srcdir)/'`gwin32appinfo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gwin32appinfo.Tpo $(DEPDIR)/libgio_2_0_la-gwin32appinfo.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwin32appinfo.c' object='libgio_2_0_la-gwin32appinfo.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gwin32appinfo.lo `test -f 'gwin32appinfo.c' || echo '$(srcdir)/'`gwin32appinfo.c + +libgio_2_0_la-gfiledescriptorbased.lo: gfiledescriptorbased.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gfiledescriptorbased.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gfiledescriptorbased.Tpo -c -o libgio_2_0_la-gfiledescriptorbased.lo `test -f 'gfiledescriptorbased.c' || echo '$(srcdir)/'`gfiledescriptorbased.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gfiledescriptorbased.Tpo $(DEPDIR)/libgio_2_0_la-gfiledescriptorbased.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfiledescriptorbased.c' object='libgio_2_0_la-gfiledescriptorbased.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gfiledescriptorbased.lo `test -f 'gfiledescriptorbased.c' || echo '$(srcdir)/'`gfiledescriptorbased.c + +libgio_2_0_la-gunixconnection.lo: gunixconnection.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gunixconnection.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gunixconnection.Tpo -c -o libgio_2_0_la-gunixconnection.lo `test -f 'gunixconnection.c' || echo '$(srcdir)/'`gunixconnection.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gunixconnection.Tpo $(DEPDIR)/libgio_2_0_la-gunixconnection.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunixconnection.c' object='libgio_2_0_la-gunixconnection.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gunixconnection.lo `test -f 'gunixconnection.c' || echo '$(srcdir)/'`gunixconnection.c + +libgio_2_0_la-gunixcredentialsmessage.lo: gunixcredentialsmessage.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gunixcredentialsmessage.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gunixcredentialsmessage.Tpo -c -o libgio_2_0_la-gunixcredentialsmessage.lo `test -f 'gunixcredentialsmessage.c' || echo '$(srcdir)/'`gunixcredentialsmessage.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gunixcredentialsmessage.Tpo $(DEPDIR)/libgio_2_0_la-gunixcredentialsmessage.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunixcredentialsmessage.c' object='libgio_2_0_la-gunixcredentialsmessage.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gunixcredentialsmessage.lo `test -f 'gunixcredentialsmessage.c' || echo '$(srcdir)/'`gunixcredentialsmessage.c + +libgio_2_0_la-gunixfdlist.lo: gunixfdlist.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gunixfdlist.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gunixfdlist.Tpo -c -o libgio_2_0_la-gunixfdlist.lo `test -f 'gunixfdlist.c' || echo '$(srcdir)/'`gunixfdlist.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gunixfdlist.Tpo $(DEPDIR)/libgio_2_0_la-gunixfdlist.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunixfdlist.c' object='libgio_2_0_la-gunixfdlist.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gunixfdlist.lo `test -f 'gunixfdlist.c' || echo '$(srcdir)/'`gunixfdlist.c + +libgio_2_0_la-gunixfdmessage.lo: gunixfdmessage.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gunixfdmessage.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gunixfdmessage.Tpo -c -o libgio_2_0_la-gunixfdmessage.lo `test -f 'gunixfdmessage.c' || echo '$(srcdir)/'`gunixfdmessage.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gunixfdmessage.Tpo $(DEPDIR)/libgio_2_0_la-gunixfdmessage.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunixfdmessage.c' object='libgio_2_0_la-gunixfdmessage.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gunixfdmessage.lo `test -f 'gunixfdmessage.c' || echo '$(srcdir)/'`gunixfdmessage.c + +libgio_2_0_la-gunixmount.lo: gunixmount.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gunixmount.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gunixmount.Tpo -c -o libgio_2_0_la-gunixmount.lo `test -f 'gunixmount.c' || echo '$(srcdir)/'`gunixmount.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gunixmount.Tpo $(DEPDIR)/libgio_2_0_la-gunixmount.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunixmount.c' object='libgio_2_0_la-gunixmount.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gunixmount.lo `test -f 'gunixmount.c' || echo '$(srcdir)/'`gunixmount.c + +libgio_2_0_la-gunixmounts.lo: gunixmounts.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gunixmounts.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gunixmounts.Tpo -c -o libgio_2_0_la-gunixmounts.lo `test -f 'gunixmounts.c' || echo '$(srcdir)/'`gunixmounts.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gunixmounts.Tpo $(DEPDIR)/libgio_2_0_la-gunixmounts.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunixmounts.c' object='libgio_2_0_la-gunixmounts.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gunixmounts.lo `test -f 'gunixmounts.c' || echo '$(srcdir)/'`gunixmounts.c + +libgio_2_0_la-gunixsocketaddress.lo: gunixsocketaddress.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gunixsocketaddress.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gunixsocketaddress.Tpo -c -o libgio_2_0_la-gunixsocketaddress.lo `test -f 'gunixsocketaddress.c' || echo '$(srcdir)/'`gunixsocketaddress.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gunixsocketaddress.Tpo $(DEPDIR)/libgio_2_0_la-gunixsocketaddress.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunixsocketaddress.c' object='libgio_2_0_la-gunixsocketaddress.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gunixsocketaddress.lo `test -f 'gunixsocketaddress.c' || echo '$(srcdir)/'`gunixsocketaddress.c + +libgio_2_0_la-gunixvolume.lo: gunixvolume.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gunixvolume.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gunixvolume.Tpo -c -o libgio_2_0_la-gunixvolume.lo `test -f 'gunixvolume.c' || echo '$(srcdir)/'`gunixvolume.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gunixvolume.Tpo $(DEPDIR)/libgio_2_0_la-gunixvolume.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunixvolume.c' object='libgio_2_0_la-gunixvolume.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gunixvolume.lo `test -f 'gunixvolume.c' || echo '$(srcdir)/'`gunixvolume.c + +libgio_2_0_la-gunixvolumemonitor.lo: gunixvolumemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gunixvolumemonitor.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gunixvolumemonitor.Tpo -c -o libgio_2_0_la-gunixvolumemonitor.lo `test -f 'gunixvolumemonitor.c' || echo '$(srcdir)/'`gunixvolumemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gunixvolumemonitor.Tpo $(DEPDIR)/libgio_2_0_la-gunixvolumemonitor.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunixvolumemonitor.c' object='libgio_2_0_la-gunixvolumemonitor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gunixvolumemonitor.lo `test -f 'gunixvolumemonitor.c' || echo '$(srcdir)/'`gunixvolumemonitor.c + +libgio_2_0_la-gunixinputstream.lo: gunixinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gunixinputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gunixinputstream.Tpo -c -o libgio_2_0_la-gunixinputstream.lo `test -f 'gunixinputstream.c' || echo '$(srcdir)/'`gunixinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gunixinputstream.Tpo $(DEPDIR)/libgio_2_0_la-gunixinputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunixinputstream.c' object='libgio_2_0_la-gunixinputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gunixinputstream.lo `test -f 'gunixinputstream.c' || echo '$(srcdir)/'`gunixinputstream.c + +libgio_2_0_la-gunixoutputstream.lo: gunixoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gunixoutputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gunixoutputstream.Tpo -c -o libgio_2_0_la-gunixoutputstream.lo `test -f 'gunixoutputstream.c' || echo '$(srcdir)/'`gunixoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gunixoutputstream.Tpo $(DEPDIR)/libgio_2_0_la-gunixoutputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunixoutputstream.c' object='libgio_2_0_la-gunixoutputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gunixoutputstream.lo `test -f 'gunixoutputstream.c' || echo '$(srcdir)/'`gunixoutputstream.c + +libgio_2_0_la-gcontenttype.lo: gcontenttype.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gcontenttype.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gcontenttype.Tpo -c -o libgio_2_0_la-gcontenttype.lo `test -f 'gcontenttype.c' || echo '$(srcdir)/'`gcontenttype.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gcontenttype.Tpo $(DEPDIR)/libgio_2_0_la-gcontenttype.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gcontenttype.c' object='libgio_2_0_la-gcontenttype.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gcontenttype.lo `test -f 'gcontenttype.c' || echo '$(srcdir)/'`gcontenttype.c + +libgio_2_0_la-gfdonotificationbackend.lo: gfdonotificationbackend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gfdonotificationbackend.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gfdonotificationbackend.Tpo -c -o libgio_2_0_la-gfdonotificationbackend.lo `test -f 'gfdonotificationbackend.c' || echo '$(srcdir)/'`gfdonotificationbackend.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gfdonotificationbackend.Tpo $(DEPDIR)/libgio_2_0_la-gfdonotificationbackend.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfdonotificationbackend.c' object='libgio_2_0_la-gfdonotificationbackend.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gfdonotificationbackend.lo `test -f 'gfdonotificationbackend.c' || echo '$(srcdir)/'`gfdonotificationbackend.c + +libgio_2_0_la-ggtknotificationbackend.lo: ggtknotificationbackend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-ggtknotificationbackend.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-ggtknotificationbackend.Tpo -c -o libgio_2_0_la-ggtknotificationbackend.lo `test -f 'ggtknotificationbackend.c' || echo '$(srcdir)/'`ggtknotificationbackend.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-ggtknotificationbackend.Tpo $(DEPDIR)/libgio_2_0_la-ggtknotificationbackend.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ggtknotificationbackend.c' object='libgio_2_0_la-ggtknotificationbackend.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-ggtknotificationbackend.lo `test -f 'ggtknotificationbackend.c' || echo '$(srcdir)/'`ggtknotificationbackend.c + +libgio_2_0_la-gcocoanotificationbackend.lo: gcocoanotificationbackend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gcocoanotificationbackend.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gcocoanotificationbackend.Tpo -c -o libgio_2_0_la-gcocoanotificationbackend.lo `test -f 'gcocoanotificationbackend.c' || echo '$(srcdir)/'`gcocoanotificationbackend.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gcocoanotificationbackend.Tpo $(DEPDIR)/libgio_2_0_la-gcocoanotificationbackend.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gcocoanotificationbackend.c' object='libgio_2_0_la-gcocoanotificationbackend.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gcocoanotificationbackend.lo `test -f 'gcocoanotificationbackend.c' || echo '$(srcdir)/'`gcocoanotificationbackend.c + +libgio_2_0_la-gnetworkmonitornetlink.lo: gnetworkmonitornetlink.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gnetworkmonitornetlink.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gnetworkmonitornetlink.Tpo -c -o libgio_2_0_la-gnetworkmonitornetlink.lo `test -f 'gnetworkmonitornetlink.c' || echo '$(srcdir)/'`gnetworkmonitornetlink.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gnetworkmonitornetlink.Tpo $(DEPDIR)/libgio_2_0_la-gnetworkmonitornetlink.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnetworkmonitornetlink.c' object='libgio_2_0_la-gnetworkmonitornetlink.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gnetworkmonitornetlink.lo `test -f 'gnetworkmonitornetlink.c' || echo '$(srcdir)/'`gnetworkmonitornetlink.c + +libgio_2_0_la-gnetworkmonitornm.lo: gnetworkmonitornm.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gnetworkmonitornm.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gnetworkmonitornm.Tpo -c -o libgio_2_0_la-gnetworkmonitornm.lo `test -f 'gnetworkmonitornm.c' || echo '$(srcdir)/'`gnetworkmonitornm.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gnetworkmonitornm.Tpo $(DEPDIR)/libgio_2_0_la-gnetworkmonitornm.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnetworkmonitornm.c' object='libgio_2_0_la-gnetworkmonitornm.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gnetworkmonitornm.lo `test -f 'gnetworkmonitornm.c' || echo '$(srcdir)/'`gnetworkmonitornm.c + +libgio_2_0_la-gdbusdaemon.lo: gdbusdaemon.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusdaemon.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusdaemon.Tpo -c -o libgio_2_0_la-gdbusdaemon.lo `test -f 'gdbusdaemon.c' || echo '$(srcdir)/'`gdbusdaemon.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusdaemon.Tpo $(DEPDIR)/libgio_2_0_la-gdbusdaemon.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusdaemon.c' object='libgio_2_0_la-gdbusdaemon.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusdaemon.lo `test -f 'gdbusdaemon.c' || echo '$(srcdir)/'`gdbusdaemon.c + +libgio_2_0_la-gdbus-daemon-generated.lo: gdbus-daemon-generated.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbus-daemon-generated.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbus-daemon-generated.Tpo -c -o libgio_2_0_la-gdbus-daemon-generated.lo `test -f 'gdbus-daemon-generated.c' || echo '$(srcdir)/'`gdbus-daemon-generated.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbus-daemon-generated.Tpo $(DEPDIR)/libgio_2_0_la-gdbus-daemon-generated.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-daemon-generated.c' object='libgio_2_0_la-gdbus-daemon-generated.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbus-daemon-generated.lo `test -f 'gdbus-daemon-generated.c' || echo '$(srcdir)/'`gdbus-daemon-generated.c + +libgio_2_0_la-gwin32registrykey.lo: gwin32registrykey.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gwin32registrykey.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gwin32registrykey.Tpo -c -o libgio_2_0_la-gwin32registrykey.lo `test -f 'gwin32registrykey.c' || echo '$(srcdir)/'`gwin32registrykey.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gwin32registrykey.Tpo $(DEPDIR)/libgio_2_0_la-gwin32registrykey.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwin32registrykey.c' object='libgio_2_0_la-gwin32registrykey.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gwin32registrykey.lo `test -f 'gwin32registrykey.c' || echo '$(srcdir)/'`gwin32registrykey.c + +libgio_2_0_la-gcontenttype-win32.lo: gcontenttype-win32.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gcontenttype-win32.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gcontenttype-win32.Tpo -c -o libgio_2_0_la-gcontenttype-win32.lo `test -f 'gcontenttype-win32.c' || echo '$(srcdir)/'`gcontenttype-win32.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gcontenttype-win32.Tpo $(DEPDIR)/libgio_2_0_la-gcontenttype-win32.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gcontenttype-win32.c' object='libgio_2_0_la-gcontenttype-win32.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gcontenttype-win32.lo `test -f 'gcontenttype-win32.c' || echo '$(srcdir)/'`gcontenttype-win32.c + +libgio_2_0_la-gwin32mount.lo: gwin32mount.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gwin32mount.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gwin32mount.Tpo -c -o libgio_2_0_la-gwin32mount.lo `test -f 'gwin32mount.c' || echo '$(srcdir)/'`gwin32mount.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gwin32mount.Tpo $(DEPDIR)/libgio_2_0_la-gwin32mount.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwin32mount.c' object='libgio_2_0_la-gwin32mount.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gwin32mount.lo `test -f 'gwin32mount.c' || echo '$(srcdir)/'`gwin32mount.c + +libgio_2_0_la-gwin32volumemonitor.lo: gwin32volumemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gwin32volumemonitor.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gwin32volumemonitor.Tpo -c -o libgio_2_0_la-gwin32volumemonitor.lo `test -f 'gwin32volumemonitor.c' || echo '$(srcdir)/'`gwin32volumemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gwin32volumemonitor.Tpo $(DEPDIR)/libgio_2_0_la-gwin32volumemonitor.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwin32volumemonitor.c' object='libgio_2_0_la-gwin32volumemonitor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gwin32volumemonitor.lo `test -f 'gwin32volumemonitor.c' || echo '$(srcdir)/'`gwin32volumemonitor.c + +libgio_2_0_la-gwin32inputstream.lo: gwin32inputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gwin32inputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gwin32inputstream.Tpo -c -o libgio_2_0_la-gwin32inputstream.lo `test -f 'gwin32inputstream.c' || echo '$(srcdir)/'`gwin32inputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gwin32inputstream.Tpo $(DEPDIR)/libgio_2_0_la-gwin32inputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwin32inputstream.c' object='libgio_2_0_la-gwin32inputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gwin32inputstream.lo `test -f 'gwin32inputstream.c' || echo '$(srcdir)/'`gwin32inputstream.c + +libgio_2_0_la-gwin32outputstream.lo: gwin32outputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gwin32outputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gwin32outputstream.Tpo -c -o libgio_2_0_la-gwin32outputstream.lo `test -f 'gwin32outputstream.c' || echo '$(srcdir)/'`gwin32outputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gwin32outputstream.Tpo $(DEPDIR)/libgio_2_0_la-gwin32outputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwin32outputstream.c' object='libgio_2_0_la-gwin32outputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gwin32outputstream.lo `test -f 'gwin32outputstream.c' || echo '$(srcdir)/'`gwin32outputstream.c + +libgio_2_0_la-gapplication.lo: gapplication.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gapplication.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gapplication.Tpo -c -o libgio_2_0_la-gapplication.lo `test -f 'gapplication.c' || echo '$(srcdir)/'`gapplication.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gapplication.Tpo $(DEPDIR)/libgio_2_0_la-gapplication.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gapplication.c' object='libgio_2_0_la-gapplication.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gapplication.lo `test -f 'gapplication.c' || echo '$(srcdir)/'`gapplication.c + +libgio_2_0_la-gapplicationcommandline.lo: gapplicationcommandline.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gapplicationcommandline.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gapplicationcommandline.Tpo -c -o libgio_2_0_la-gapplicationcommandline.lo `test -f 'gapplicationcommandline.c' || echo '$(srcdir)/'`gapplicationcommandline.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gapplicationcommandline.Tpo $(DEPDIR)/libgio_2_0_la-gapplicationcommandline.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gapplicationcommandline.c' object='libgio_2_0_la-gapplicationcommandline.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gapplicationcommandline.lo `test -f 'gapplicationcommandline.c' || echo '$(srcdir)/'`gapplicationcommandline.c + +libgio_2_0_la-gapplicationimpl-dbus.lo: gapplicationimpl-dbus.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gapplicationimpl-dbus.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gapplicationimpl-dbus.Tpo -c -o libgio_2_0_la-gapplicationimpl-dbus.lo `test -f 'gapplicationimpl-dbus.c' || echo '$(srcdir)/'`gapplicationimpl-dbus.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gapplicationimpl-dbus.Tpo $(DEPDIR)/libgio_2_0_la-gapplicationimpl-dbus.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gapplicationimpl-dbus.c' object='libgio_2_0_la-gapplicationimpl-dbus.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gapplicationimpl-dbus.lo `test -f 'gapplicationimpl-dbus.c' || echo '$(srcdir)/'`gapplicationimpl-dbus.c + +libgio_2_0_la-gactiongroup.lo: gactiongroup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gactiongroup.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gactiongroup.Tpo -c -o libgio_2_0_la-gactiongroup.lo `test -f 'gactiongroup.c' || echo '$(srcdir)/'`gactiongroup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gactiongroup.Tpo $(DEPDIR)/libgio_2_0_la-gactiongroup.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gactiongroup.c' object='libgio_2_0_la-gactiongroup.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gactiongroup.lo `test -f 'gactiongroup.c' || echo '$(srcdir)/'`gactiongroup.c + +libgio_2_0_la-gactionmap.lo: gactionmap.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gactionmap.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gactionmap.Tpo -c -o libgio_2_0_la-gactionmap.lo `test -f 'gactionmap.c' || echo '$(srcdir)/'`gactionmap.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gactionmap.Tpo $(DEPDIR)/libgio_2_0_la-gactionmap.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gactionmap.c' object='libgio_2_0_la-gactionmap.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gactionmap.lo `test -f 'gactionmap.c' || echo '$(srcdir)/'`gactionmap.c + +libgio_2_0_la-gsimpleactiongroup.lo: gsimpleactiongroup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsimpleactiongroup.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsimpleactiongroup.Tpo -c -o libgio_2_0_la-gsimpleactiongroup.lo `test -f 'gsimpleactiongroup.c' || echo '$(srcdir)/'`gsimpleactiongroup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsimpleactiongroup.Tpo $(DEPDIR)/libgio_2_0_la-gsimpleactiongroup.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsimpleactiongroup.c' object='libgio_2_0_la-gsimpleactiongroup.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsimpleactiongroup.lo `test -f 'gsimpleactiongroup.c' || echo '$(srcdir)/'`gsimpleactiongroup.c + +libgio_2_0_la-gremoteactiongroup.lo: gremoteactiongroup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gremoteactiongroup.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gremoteactiongroup.Tpo -c -o libgio_2_0_la-gremoteactiongroup.lo `test -f 'gremoteactiongroup.c' || echo '$(srcdir)/'`gremoteactiongroup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gremoteactiongroup.Tpo $(DEPDIR)/libgio_2_0_la-gremoteactiongroup.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gremoteactiongroup.c' object='libgio_2_0_la-gremoteactiongroup.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gremoteactiongroup.lo `test -f 'gremoteactiongroup.c' || echo '$(srcdir)/'`gremoteactiongroup.c + +libgio_2_0_la-gactiongroupexporter.lo: gactiongroupexporter.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gactiongroupexporter.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gactiongroupexporter.Tpo -c -o libgio_2_0_la-gactiongroupexporter.lo `test -f 'gactiongroupexporter.c' || echo '$(srcdir)/'`gactiongroupexporter.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gactiongroupexporter.Tpo $(DEPDIR)/libgio_2_0_la-gactiongroupexporter.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gactiongroupexporter.c' object='libgio_2_0_la-gactiongroupexporter.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gactiongroupexporter.lo `test -f 'gactiongroupexporter.c' || echo '$(srcdir)/'`gactiongroupexporter.c + +libgio_2_0_la-gdbusactiongroup.lo: gdbusactiongroup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusactiongroup.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusactiongroup.Tpo -c -o libgio_2_0_la-gdbusactiongroup.lo `test -f 'gdbusactiongroup.c' || echo '$(srcdir)/'`gdbusactiongroup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusactiongroup.Tpo $(DEPDIR)/libgio_2_0_la-gdbusactiongroup.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusactiongroup.c' object='libgio_2_0_la-gdbusactiongroup.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusactiongroup.lo `test -f 'gdbusactiongroup.c' || echo '$(srcdir)/'`gdbusactiongroup.c + +libgio_2_0_la-gaction.lo: gaction.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gaction.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gaction.Tpo -c -o libgio_2_0_la-gaction.lo `test -f 'gaction.c' || echo '$(srcdir)/'`gaction.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gaction.Tpo $(DEPDIR)/libgio_2_0_la-gaction.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gaction.c' object='libgio_2_0_la-gaction.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gaction.lo `test -f 'gaction.c' || echo '$(srcdir)/'`gaction.c + +libgio_2_0_la-gpropertyaction.lo: gpropertyaction.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gpropertyaction.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gpropertyaction.Tpo -c -o libgio_2_0_la-gpropertyaction.lo `test -f 'gpropertyaction.c' || echo '$(srcdir)/'`gpropertyaction.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gpropertyaction.Tpo $(DEPDIR)/libgio_2_0_la-gpropertyaction.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpropertyaction.c' object='libgio_2_0_la-gpropertyaction.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gpropertyaction.lo `test -f 'gpropertyaction.c' || echo '$(srcdir)/'`gpropertyaction.c + +libgio_2_0_la-gsimpleaction.lo: gsimpleaction.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsimpleaction.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsimpleaction.Tpo -c -o libgio_2_0_la-gsimpleaction.lo `test -f 'gsimpleaction.c' || echo '$(srcdir)/'`gsimpleaction.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsimpleaction.Tpo $(DEPDIR)/libgio_2_0_la-gsimpleaction.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsimpleaction.c' object='libgio_2_0_la-gsimpleaction.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsimpleaction.lo `test -f 'gsimpleaction.c' || echo '$(srcdir)/'`gsimpleaction.c + +libgio_2_0_la-gmenumodel.lo: gmenumodel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gmenumodel.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gmenumodel.Tpo -c -o libgio_2_0_la-gmenumodel.lo `test -f 'gmenumodel.c' || echo '$(srcdir)/'`gmenumodel.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gmenumodel.Tpo $(DEPDIR)/libgio_2_0_la-gmenumodel.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmenumodel.c' object='libgio_2_0_la-gmenumodel.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gmenumodel.lo `test -f 'gmenumodel.c' || echo '$(srcdir)/'`gmenumodel.c + +libgio_2_0_la-gmenu.lo: gmenu.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gmenu.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gmenu.Tpo -c -o libgio_2_0_la-gmenu.lo `test -f 'gmenu.c' || echo '$(srcdir)/'`gmenu.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gmenu.Tpo $(DEPDIR)/libgio_2_0_la-gmenu.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmenu.c' object='libgio_2_0_la-gmenu.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gmenu.lo `test -f 'gmenu.c' || echo '$(srcdir)/'`gmenu.c + +libgio_2_0_la-gmenuexporter.lo: gmenuexporter.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gmenuexporter.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gmenuexporter.Tpo -c -o libgio_2_0_la-gmenuexporter.lo `test -f 'gmenuexporter.c' || echo '$(srcdir)/'`gmenuexporter.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gmenuexporter.Tpo $(DEPDIR)/libgio_2_0_la-gmenuexporter.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmenuexporter.c' object='libgio_2_0_la-gmenuexporter.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gmenuexporter.lo `test -f 'gmenuexporter.c' || echo '$(srcdir)/'`gmenuexporter.c + +libgio_2_0_la-gdbusmenumodel.lo: gdbusmenumodel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusmenumodel.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusmenumodel.Tpo -c -o libgio_2_0_la-gdbusmenumodel.lo `test -f 'gdbusmenumodel.c' || echo '$(srcdir)/'`gdbusmenumodel.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusmenumodel.Tpo $(DEPDIR)/libgio_2_0_la-gdbusmenumodel.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusmenumodel.c' object='libgio_2_0_la-gdbusmenumodel.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusmenumodel.lo `test -f 'gdbusmenumodel.c' || echo '$(srcdir)/'`gdbusmenumodel.c + +libgio_2_0_la-gnotification.lo: gnotification.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gnotification.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gnotification.Tpo -c -o libgio_2_0_la-gnotification.lo `test -f 'gnotification.c' || echo '$(srcdir)/'`gnotification.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gnotification.Tpo $(DEPDIR)/libgio_2_0_la-gnotification.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnotification.c' object='libgio_2_0_la-gnotification.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gnotification.lo `test -f 'gnotification.c' || echo '$(srcdir)/'`gnotification.c + +libgio_2_0_la-gnotificationbackend.lo: gnotificationbackend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gnotificationbackend.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gnotificationbackend.Tpo -c -o libgio_2_0_la-gnotificationbackend.lo `test -f 'gnotificationbackend.c' || echo '$(srcdir)/'`gnotificationbackend.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gnotificationbackend.Tpo $(DEPDIR)/libgio_2_0_la-gnotificationbackend.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnotificationbackend.c' object='libgio_2_0_la-gnotificationbackend.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gnotificationbackend.lo `test -f 'gnotificationbackend.c' || echo '$(srcdir)/'`gnotificationbackend.c + +libgio_2_0_la-gvdb-reader.lo: gvdb/gvdb-reader.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gvdb-reader.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gvdb-reader.Tpo -c -o libgio_2_0_la-gvdb-reader.lo `test -f 'gvdb/gvdb-reader.c' || echo '$(srcdir)/'`gvdb/gvdb-reader.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gvdb-reader.Tpo $(DEPDIR)/libgio_2_0_la-gvdb-reader.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvdb/gvdb-reader.c' object='libgio_2_0_la-gvdb-reader.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gvdb-reader.lo `test -f 'gvdb/gvdb-reader.c' || echo '$(srcdir)/'`gvdb/gvdb-reader.c + +libgio_2_0_la-gdelayedsettingsbackend.lo: gdelayedsettingsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdelayedsettingsbackend.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdelayedsettingsbackend.Tpo -c -o libgio_2_0_la-gdelayedsettingsbackend.lo `test -f 'gdelayedsettingsbackend.c' || echo '$(srcdir)/'`gdelayedsettingsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdelayedsettingsbackend.Tpo $(DEPDIR)/libgio_2_0_la-gdelayedsettingsbackend.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdelayedsettingsbackend.c' object='libgio_2_0_la-gdelayedsettingsbackend.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdelayedsettingsbackend.lo `test -f 'gdelayedsettingsbackend.c' || echo '$(srcdir)/'`gdelayedsettingsbackend.c + +libgio_2_0_la-gkeyfilesettingsbackend.lo: gkeyfilesettingsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gkeyfilesettingsbackend.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gkeyfilesettingsbackend.Tpo -c -o libgio_2_0_la-gkeyfilesettingsbackend.lo `test -f 'gkeyfilesettingsbackend.c' || echo '$(srcdir)/'`gkeyfilesettingsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gkeyfilesettingsbackend.Tpo $(DEPDIR)/libgio_2_0_la-gkeyfilesettingsbackend.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gkeyfilesettingsbackend.c' object='libgio_2_0_la-gkeyfilesettingsbackend.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gkeyfilesettingsbackend.lo `test -f 'gkeyfilesettingsbackend.c' || echo '$(srcdir)/'`gkeyfilesettingsbackend.c + +libgio_2_0_la-gmemorysettingsbackend.lo: gmemorysettingsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gmemorysettingsbackend.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gmemorysettingsbackend.Tpo -c -o libgio_2_0_la-gmemorysettingsbackend.lo `test -f 'gmemorysettingsbackend.c' || echo '$(srcdir)/'`gmemorysettingsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gmemorysettingsbackend.Tpo $(DEPDIR)/libgio_2_0_la-gmemorysettingsbackend.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmemorysettingsbackend.c' object='libgio_2_0_la-gmemorysettingsbackend.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gmemorysettingsbackend.lo `test -f 'gmemorysettingsbackend.c' || echo '$(srcdir)/'`gmemorysettingsbackend.c + +libgio_2_0_la-gnullsettingsbackend.lo: gnullsettingsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gnullsettingsbackend.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gnullsettingsbackend.Tpo -c -o libgio_2_0_la-gnullsettingsbackend.lo `test -f 'gnullsettingsbackend.c' || echo '$(srcdir)/'`gnullsettingsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gnullsettingsbackend.Tpo $(DEPDIR)/libgio_2_0_la-gnullsettingsbackend.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnullsettingsbackend.c' object='libgio_2_0_la-gnullsettingsbackend.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gnullsettingsbackend.lo `test -f 'gnullsettingsbackend.c' || echo '$(srcdir)/'`gnullsettingsbackend.c + +libgio_2_0_la-gsettingsbackend.lo: gsettingsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsettingsbackend.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsettingsbackend.Tpo -c -o libgio_2_0_la-gsettingsbackend.lo `test -f 'gsettingsbackend.c' || echo '$(srcdir)/'`gsettingsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsettingsbackend.Tpo $(DEPDIR)/libgio_2_0_la-gsettingsbackend.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsettingsbackend.c' object='libgio_2_0_la-gsettingsbackend.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsettingsbackend.lo `test -f 'gsettingsbackend.c' || echo '$(srcdir)/'`gsettingsbackend.c + +libgio_2_0_la-gsettingsschema.lo: gsettingsschema.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsettingsschema.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsettingsschema.Tpo -c -o libgio_2_0_la-gsettingsschema.lo `test -f 'gsettingsschema.c' || echo '$(srcdir)/'`gsettingsschema.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsettingsschema.Tpo $(DEPDIR)/libgio_2_0_la-gsettingsschema.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsettingsschema.c' object='libgio_2_0_la-gsettingsschema.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsettingsschema.lo `test -f 'gsettingsschema.c' || echo '$(srcdir)/'`gsettingsschema.c + +libgio_2_0_la-gsettings-mapping.lo: gsettings-mapping.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsettings-mapping.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsettings-mapping.Tpo -c -o libgio_2_0_la-gsettings-mapping.lo `test -f 'gsettings-mapping.c' || echo '$(srcdir)/'`gsettings-mapping.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsettings-mapping.Tpo $(DEPDIR)/libgio_2_0_la-gsettings-mapping.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsettings-mapping.c' object='libgio_2_0_la-gsettings-mapping.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsettings-mapping.lo `test -f 'gsettings-mapping.c' || echo '$(srcdir)/'`gsettings-mapping.c + +libgio_2_0_la-gsettings.lo: gsettings.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsettings.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsettings.Tpo -c -o libgio_2_0_la-gsettings.lo `test -f 'gsettings.c' || echo '$(srcdir)/'`gsettings.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsettings.Tpo $(DEPDIR)/libgio_2_0_la-gsettings.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsettings.c' object='libgio_2_0_la-gsettings.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsettings.lo `test -f 'gsettings.c' || echo '$(srcdir)/'`gsettings.c + +libgio_2_0_la-gregistrysettingsbackend.lo: gregistrysettingsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gregistrysettingsbackend.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gregistrysettingsbackend.Tpo -c -o libgio_2_0_la-gregistrysettingsbackend.lo `test -f 'gregistrysettingsbackend.c' || echo '$(srcdir)/'`gregistrysettingsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gregistrysettingsbackend.Tpo $(DEPDIR)/libgio_2_0_la-gregistrysettingsbackend.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gregistrysettingsbackend.c' object='libgio_2_0_la-gregistrysettingsbackend.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gregistrysettingsbackend.lo `test -f 'gregistrysettingsbackend.c' || echo '$(srcdir)/'`gregistrysettingsbackend.c + +libgio_2_0_la-gnextstepsettingsbackend.lo: gnextstepsettingsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gnextstepsettingsbackend.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gnextstepsettingsbackend.Tpo -c -o libgio_2_0_la-gnextstepsettingsbackend.lo `test -f 'gnextstepsettingsbackend.c' || echo '$(srcdir)/'`gnextstepsettingsbackend.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gnextstepsettingsbackend.Tpo $(DEPDIR)/libgio_2_0_la-gnextstepsettingsbackend.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnextstepsettingsbackend.c' object='libgio_2_0_la-gnextstepsettingsbackend.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gnextstepsettingsbackend.lo `test -f 'gnextstepsettingsbackend.c' || echo '$(srcdir)/'`gnextstepsettingsbackend.c + +libgio_2_0_la-gdbusutils.lo: gdbusutils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusutils.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusutils.Tpo -c -o libgio_2_0_la-gdbusutils.lo `test -f 'gdbusutils.c' || echo '$(srcdir)/'`gdbusutils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusutils.Tpo $(DEPDIR)/libgio_2_0_la-gdbusutils.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusutils.c' object='libgio_2_0_la-gdbusutils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusutils.lo `test -f 'gdbusutils.c' || echo '$(srcdir)/'`gdbusutils.c + +libgio_2_0_la-gdbusaddress.lo: gdbusaddress.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusaddress.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusaddress.Tpo -c -o libgio_2_0_la-gdbusaddress.lo `test -f 'gdbusaddress.c' || echo '$(srcdir)/'`gdbusaddress.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusaddress.Tpo $(DEPDIR)/libgio_2_0_la-gdbusaddress.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusaddress.c' object='libgio_2_0_la-gdbusaddress.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusaddress.lo `test -f 'gdbusaddress.c' || echo '$(srcdir)/'`gdbusaddress.c + +libgio_2_0_la-gdbusauthobserver.lo: gdbusauthobserver.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusauthobserver.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusauthobserver.Tpo -c -o libgio_2_0_la-gdbusauthobserver.lo `test -f 'gdbusauthobserver.c' || echo '$(srcdir)/'`gdbusauthobserver.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusauthobserver.Tpo $(DEPDIR)/libgio_2_0_la-gdbusauthobserver.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusauthobserver.c' object='libgio_2_0_la-gdbusauthobserver.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusauthobserver.lo `test -f 'gdbusauthobserver.c' || echo '$(srcdir)/'`gdbusauthobserver.c + +libgio_2_0_la-gdbusauth.lo: gdbusauth.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusauth.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusauth.Tpo -c -o libgio_2_0_la-gdbusauth.lo `test -f 'gdbusauth.c' || echo '$(srcdir)/'`gdbusauth.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusauth.Tpo $(DEPDIR)/libgio_2_0_la-gdbusauth.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusauth.c' object='libgio_2_0_la-gdbusauth.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusauth.lo `test -f 'gdbusauth.c' || echo '$(srcdir)/'`gdbusauth.c + +libgio_2_0_la-gdbusauthmechanism.lo: gdbusauthmechanism.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusauthmechanism.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusauthmechanism.Tpo -c -o libgio_2_0_la-gdbusauthmechanism.lo `test -f 'gdbusauthmechanism.c' || echo '$(srcdir)/'`gdbusauthmechanism.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusauthmechanism.Tpo $(DEPDIR)/libgio_2_0_la-gdbusauthmechanism.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusauthmechanism.c' object='libgio_2_0_la-gdbusauthmechanism.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusauthmechanism.lo `test -f 'gdbusauthmechanism.c' || echo '$(srcdir)/'`gdbusauthmechanism.c + +libgio_2_0_la-gdbusauthmechanismanon.lo: gdbusauthmechanismanon.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusauthmechanismanon.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusauthmechanismanon.Tpo -c -o libgio_2_0_la-gdbusauthmechanismanon.lo `test -f 'gdbusauthmechanismanon.c' || echo '$(srcdir)/'`gdbusauthmechanismanon.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusauthmechanismanon.Tpo $(DEPDIR)/libgio_2_0_la-gdbusauthmechanismanon.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusauthmechanismanon.c' object='libgio_2_0_la-gdbusauthmechanismanon.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusauthmechanismanon.lo `test -f 'gdbusauthmechanismanon.c' || echo '$(srcdir)/'`gdbusauthmechanismanon.c + +libgio_2_0_la-gdbusauthmechanismexternal.lo: gdbusauthmechanismexternal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusauthmechanismexternal.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusauthmechanismexternal.Tpo -c -o libgio_2_0_la-gdbusauthmechanismexternal.lo `test -f 'gdbusauthmechanismexternal.c' || echo '$(srcdir)/'`gdbusauthmechanismexternal.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusauthmechanismexternal.Tpo $(DEPDIR)/libgio_2_0_la-gdbusauthmechanismexternal.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusauthmechanismexternal.c' object='libgio_2_0_la-gdbusauthmechanismexternal.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusauthmechanismexternal.lo `test -f 'gdbusauthmechanismexternal.c' || echo '$(srcdir)/'`gdbusauthmechanismexternal.c + +libgio_2_0_la-gdbusauthmechanismsha1.lo: gdbusauthmechanismsha1.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusauthmechanismsha1.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusauthmechanismsha1.Tpo -c -o libgio_2_0_la-gdbusauthmechanismsha1.lo `test -f 'gdbusauthmechanismsha1.c' || echo '$(srcdir)/'`gdbusauthmechanismsha1.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusauthmechanismsha1.Tpo $(DEPDIR)/libgio_2_0_la-gdbusauthmechanismsha1.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusauthmechanismsha1.c' object='libgio_2_0_la-gdbusauthmechanismsha1.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusauthmechanismsha1.lo `test -f 'gdbusauthmechanismsha1.c' || echo '$(srcdir)/'`gdbusauthmechanismsha1.c + +libgio_2_0_la-gdbuserror.lo: gdbuserror.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbuserror.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbuserror.Tpo -c -o libgio_2_0_la-gdbuserror.lo `test -f 'gdbuserror.c' || echo '$(srcdir)/'`gdbuserror.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbuserror.Tpo $(DEPDIR)/libgio_2_0_la-gdbuserror.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbuserror.c' object='libgio_2_0_la-gdbuserror.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbuserror.lo `test -f 'gdbuserror.c' || echo '$(srcdir)/'`gdbuserror.c + +libgio_2_0_la-gdbusconnection.lo: gdbusconnection.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusconnection.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusconnection.Tpo -c -o libgio_2_0_la-gdbusconnection.lo `test -f 'gdbusconnection.c' || echo '$(srcdir)/'`gdbusconnection.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusconnection.Tpo $(DEPDIR)/libgio_2_0_la-gdbusconnection.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusconnection.c' object='libgio_2_0_la-gdbusconnection.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusconnection.lo `test -f 'gdbusconnection.c' || echo '$(srcdir)/'`gdbusconnection.c + +libgio_2_0_la-gdbusmessage.lo: gdbusmessage.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusmessage.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusmessage.Tpo -c -o libgio_2_0_la-gdbusmessage.lo `test -f 'gdbusmessage.c' || echo '$(srcdir)/'`gdbusmessage.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusmessage.Tpo $(DEPDIR)/libgio_2_0_la-gdbusmessage.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusmessage.c' object='libgio_2_0_la-gdbusmessage.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusmessage.lo `test -f 'gdbusmessage.c' || echo '$(srcdir)/'`gdbusmessage.c + +libgio_2_0_la-gdbusnameowning.lo: gdbusnameowning.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusnameowning.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusnameowning.Tpo -c -o libgio_2_0_la-gdbusnameowning.lo `test -f 'gdbusnameowning.c' || echo '$(srcdir)/'`gdbusnameowning.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusnameowning.Tpo $(DEPDIR)/libgio_2_0_la-gdbusnameowning.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusnameowning.c' object='libgio_2_0_la-gdbusnameowning.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusnameowning.lo `test -f 'gdbusnameowning.c' || echo '$(srcdir)/'`gdbusnameowning.c + +libgio_2_0_la-gdbusnamewatching.lo: gdbusnamewatching.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusnamewatching.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusnamewatching.Tpo -c -o libgio_2_0_la-gdbusnamewatching.lo `test -f 'gdbusnamewatching.c' || echo '$(srcdir)/'`gdbusnamewatching.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusnamewatching.Tpo $(DEPDIR)/libgio_2_0_la-gdbusnamewatching.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusnamewatching.c' object='libgio_2_0_la-gdbusnamewatching.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusnamewatching.lo `test -f 'gdbusnamewatching.c' || echo '$(srcdir)/'`gdbusnamewatching.c + +libgio_2_0_la-gdbusproxy.lo: gdbusproxy.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusproxy.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusproxy.Tpo -c -o libgio_2_0_la-gdbusproxy.lo `test -f 'gdbusproxy.c' || echo '$(srcdir)/'`gdbusproxy.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusproxy.Tpo $(DEPDIR)/libgio_2_0_la-gdbusproxy.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusproxy.c' object='libgio_2_0_la-gdbusproxy.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusproxy.lo `test -f 'gdbusproxy.c' || echo '$(srcdir)/'`gdbusproxy.c + +libgio_2_0_la-gdbusprivate.lo: gdbusprivate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusprivate.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusprivate.Tpo -c -o libgio_2_0_la-gdbusprivate.lo `test -f 'gdbusprivate.c' || echo '$(srcdir)/'`gdbusprivate.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusprivate.Tpo $(DEPDIR)/libgio_2_0_la-gdbusprivate.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusprivate.c' object='libgio_2_0_la-gdbusprivate.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusprivate.lo `test -f 'gdbusprivate.c' || echo '$(srcdir)/'`gdbusprivate.c + +libgio_2_0_la-gdbusintrospection.lo: gdbusintrospection.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusintrospection.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusintrospection.Tpo -c -o libgio_2_0_la-gdbusintrospection.lo `test -f 'gdbusintrospection.c' || echo '$(srcdir)/'`gdbusintrospection.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusintrospection.Tpo $(DEPDIR)/libgio_2_0_la-gdbusintrospection.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusintrospection.c' object='libgio_2_0_la-gdbusintrospection.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusintrospection.lo `test -f 'gdbusintrospection.c' || echo '$(srcdir)/'`gdbusintrospection.c + +libgio_2_0_la-gdbusmethodinvocation.lo: gdbusmethodinvocation.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusmethodinvocation.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusmethodinvocation.Tpo -c -o libgio_2_0_la-gdbusmethodinvocation.lo `test -f 'gdbusmethodinvocation.c' || echo '$(srcdir)/'`gdbusmethodinvocation.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusmethodinvocation.Tpo $(DEPDIR)/libgio_2_0_la-gdbusmethodinvocation.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusmethodinvocation.c' object='libgio_2_0_la-gdbusmethodinvocation.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusmethodinvocation.lo `test -f 'gdbusmethodinvocation.c' || echo '$(srcdir)/'`gdbusmethodinvocation.c + +libgio_2_0_la-gdbusserver.lo: gdbusserver.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusserver.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusserver.Tpo -c -o libgio_2_0_la-gdbusserver.lo `test -f 'gdbusserver.c' || echo '$(srcdir)/'`gdbusserver.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusserver.Tpo $(DEPDIR)/libgio_2_0_la-gdbusserver.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusserver.c' object='libgio_2_0_la-gdbusserver.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusserver.lo `test -f 'gdbusserver.c' || echo '$(srcdir)/'`gdbusserver.c + +libgio_2_0_la-gdbusinterface.lo: gdbusinterface.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusinterface.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusinterface.Tpo -c -o libgio_2_0_la-gdbusinterface.lo `test -f 'gdbusinterface.c' || echo '$(srcdir)/'`gdbusinterface.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusinterface.Tpo $(DEPDIR)/libgio_2_0_la-gdbusinterface.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusinterface.c' object='libgio_2_0_la-gdbusinterface.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusinterface.lo `test -f 'gdbusinterface.c' || echo '$(srcdir)/'`gdbusinterface.c + +libgio_2_0_la-gdbusinterfaceskeleton.lo: gdbusinterfaceskeleton.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusinterfaceskeleton.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusinterfaceskeleton.Tpo -c -o libgio_2_0_la-gdbusinterfaceskeleton.lo `test -f 'gdbusinterfaceskeleton.c' || echo '$(srcdir)/'`gdbusinterfaceskeleton.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusinterfaceskeleton.Tpo $(DEPDIR)/libgio_2_0_la-gdbusinterfaceskeleton.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusinterfaceskeleton.c' object='libgio_2_0_la-gdbusinterfaceskeleton.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusinterfaceskeleton.lo `test -f 'gdbusinterfaceskeleton.c' || echo '$(srcdir)/'`gdbusinterfaceskeleton.c + +libgio_2_0_la-gdbusobject.lo: gdbusobject.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusobject.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusobject.Tpo -c -o libgio_2_0_la-gdbusobject.lo `test -f 'gdbusobject.c' || echo '$(srcdir)/'`gdbusobject.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusobject.Tpo $(DEPDIR)/libgio_2_0_la-gdbusobject.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusobject.c' object='libgio_2_0_la-gdbusobject.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusobject.lo `test -f 'gdbusobject.c' || echo '$(srcdir)/'`gdbusobject.c + +libgio_2_0_la-gdbusobjectskeleton.lo: gdbusobjectskeleton.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusobjectskeleton.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusobjectskeleton.Tpo -c -o libgio_2_0_la-gdbusobjectskeleton.lo `test -f 'gdbusobjectskeleton.c' || echo '$(srcdir)/'`gdbusobjectskeleton.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusobjectskeleton.Tpo $(DEPDIR)/libgio_2_0_la-gdbusobjectskeleton.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusobjectskeleton.c' object='libgio_2_0_la-gdbusobjectskeleton.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusobjectskeleton.lo `test -f 'gdbusobjectskeleton.c' || echo '$(srcdir)/'`gdbusobjectskeleton.c + +libgio_2_0_la-gdbusobjectproxy.lo: gdbusobjectproxy.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusobjectproxy.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusobjectproxy.Tpo -c -o libgio_2_0_la-gdbusobjectproxy.lo `test -f 'gdbusobjectproxy.c' || echo '$(srcdir)/'`gdbusobjectproxy.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusobjectproxy.Tpo $(DEPDIR)/libgio_2_0_la-gdbusobjectproxy.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusobjectproxy.c' object='libgio_2_0_la-gdbusobjectproxy.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusobjectproxy.lo `test -f 'gdbusobjectproxy.c' || echo '$(srcdir)/'`gdbusobjectproxy.c + +libgio_2_0_la-gdbusobjectmanager.lo: gdbusobjectmanager.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusobjectmanager.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusobjectmanager.Tpo -c -o libgio_2_0_la-gdbusobjectmanager.lo `test -f 'gdbusobjectmanager.c' || echo '$(srcdir)/'`gdbusobjectmanager.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusobjectmanager.Tpo $(DEPDIR)/libgio_2_0_la-gdbusobjectmanager.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusobjectmanager.c' object='libgio_2_0_la-gdbusobjectmanager.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusobjectmanager.lo `test -f 'gdbusobjectmanager.c' || echo '$(srcdir)/'`gdbusobjectmanager.c + +libgio_2_0_la-gdbusobjectmanagerclient.lo: gdbusobjectmanagerclient.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusobjectmanagerclient.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusobjectmanagerclient.Tpo -c -o libgio_2_0_la-gdbusobjectmanagerclient.lo `test -f 'gdbusobjectmanagerclient.c' || echo '$(srcdir)/'`gdbusobjectmanagerclient.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusobjectmanagerclient.Tpo $(DEPDIR)/libgio_2_0_la-gdbusobjectmanagerclient.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusobjectmanagerclient.c' object='libgio_2_0_la-gdbusobjectmanagerclient.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusobjectmanagerclient.lo `test -f 'gdbusobjectmanagerclient.c' || echo '$(srcdir)/'`gdbusobjectmanagerclient.c + +libgio_2_0_la-gdbusobjectmanagerserver.lo: gdbusobjectmanagerserver.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gdbusobjectmanagerserver.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gdbusobjectmanagerserver.Tpo -c -o libgio_2_0_la-gdbusobjectmanagerserver.lo `test -f 'gdbusobjectmanagerserver.c' || echo '$(srcdir)/'`gdbusobjectmanagerserver.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gdbusobjectmanagerserver.Tpo $(DEPDIR)/libgio_2_0_la-gdbusobjectmanagerserver.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbusobjectmanagerserver.c' object='libgio_2_0_la-gdbusobjectmanagerserver.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gdbusobjectmanagerserver.lo `test -f 'gdbusobjectmanagerserver.c' || echo '$(srcdir)/'`gdbusobjectmanagerserver.c + +libgio_2_0_la-gtestdbus.lo: gtestdbus.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gtestdbus.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gtestdbus.Tpo -c -o libgio_2_0_la-gtestdbus.lo `test -f 'gtestdbus.c' || echo '$(srcdir)/'`gtestdbus.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gtestdbus.Tpo $(DEPDIR)/libgio_2_0_la-gtestdbus.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtestdbus.c' object='libgio_2_0_la-gtestdbus.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gtestdbus.lo `test -f 'gtestdbus.c' || echo '$(srcdir)/'`gtestdbus.c + +libgio_2_0_la-ghttpproxy.lo: ghttpproxy.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-ghttpproxy.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-ghttpproxy.Tpo -c -o libgio_2_0_la-ghttpproxy.lo `test -f 'ghttpproxy.c' || echo '$(srcdir)/'`ghttpproxy.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-ghttpproxy.Tpo $(DEPDIR)/libgio_2_0_la-ghttpproxy.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ghttpproxy.c' object='libgio_2_0_la-ghttpproxy.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-ghttpproxy.lo `test -f 'ghttpproxy.c' || echo '$(srcdir)/'`ghttpproxy.c + +libgio_2_0_la-glocalfile.lo: glocalfile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-glocalfile.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-glocalfile.Tpo -c -o libgio_2_0_la-glocalfile.lo `test -f 'glocalfile.c' || echo '$(srcdir)/'`glocalfile.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-glocalfile.Tpo $(DEPDIR)/libgio_2_0_la-glocalfile.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glocalfile.c' object='libgio_2_0_la-glocalfile.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-glocalfile.lo `test -f 'glocalfile.c' || echo '$(srcdir)/'`glocalfile.c + +libgio_2_0_la-glocalfileenumerator.lo: glocalfileenumerator.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-glocalfileenumerator.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-glocalfileenumerator.Tpo -c -o libgio_2_0_la-glocalfileenumerator.lo `test -f 'glocalfileenumerator.c' || echo '$(srcdir)/'`glocalfileenumerator.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-glocalfileenumerator.Tpo $(DEPDIR)/libgio_2_0_la-glocalfileenumerator.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glocalfileenumerator.c' object='libgio_2_0_la-glocalfileenumerator.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-glocalfileenumerator.lo `test -f 'glocalfileenumerator.c' || echo '$(srcdir)/'`glocalfileenumerator.c + +libgio_2_0_la-glocalfileinfo.lo: glocalfileinfo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-glocalfileinfo.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-glocalfileinfo.Tpo -c -o libgio_2_0_la-glocalfileinfo.lo `test -f 'glocalfileinfo.c' || echo '$(srcdir)/'`glocalfileinfo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-glocalfileinfo.Tpo $(DEPDIR)/libgio_2_0_la-glocalfileinfo.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glocalfileinfo.c' object='libgio_2_0_la-glocalfileinfo.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-glocalfileinfo.lo `test -f 'glocalfileinfo.c' || echo '$(srcdir)/'`glocalfileinfo.c + +libgio_2_0_la-glocalfileinputstream.lo: glocalfileinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-glocalfileinputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-glocalfileinputstream.Tpo -c -o libgio_2_0_la-glocalfileinputstream.lo `test -f 'glocalfileinputstream.c' || echo '$(srcdir)/'`glocalfileinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-glocalfileinputstream.Tpo $(DEPDIR)/libgio_2_0_la-glocalfileinputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glocalfileinputstream.c' object='libgio_2_0_la-glocalfileinputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-glocalfileinputstream.lo `test -f 'glocalfileinputstream.c' || echo '$(srcdir)/'`glocalfileinputstream.c + +libgio_2_0_la-glocalfilemonitor.lo: glocalfilemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-glocalfilemonitor.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-glocalfilemonitor.Tpo -c -o libgio_2_0_la-glocalfilemonitor.lo `test -f 'glocalfilemonitor.c' || echo '$(srcdir)/'`glocalfilemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-glocalfilemonitor.Tpo $(DEPDIR)/libgio_2_0_la-glocalfilemonitor.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glocalfilemonitor.c' object='libgio_2_0_la-glocalfilemonitor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-glocalfilemonitor.lo `test -f 'glocalfilemonitor.c' || echo '$(srcdir)/'`glocalfilemonitor.c + +libgio_2_0_la-glocalfileoutputstream.lo: glocalfileoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-glocalfileoutputstream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-glocalfileoutputstream.Tpo -c -o libgio_2_0_la-glocalfileoutputstream.lo `test -f 'glocalfileoutputstream.c' || echo '$(srcdir)/'`glocalfileoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-glocalfileoutputstream.Tpo $(DEPDIR)/libgio_2_0_la-glocalfileoutputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glocalfileoutputstream.c' object='libgio_2_0_la-glocalfileoutputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-glocalfileoutputstream.lo `test -f 'glocalfileoutputstream.c' || echo '$(srcdir)/'`glocalfileoutputstream.c + +libgio_2_0_la-glocalfileiostream.lo: glocalfileiostream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-glocalfileiostream.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-glocalfileiostream.Tpo -c -o libgio_2_0_la-glocalfileiostream.lo `test -f 'glocalfileiostream.c' || echo '$(srcdir)/'`glocalfileiostream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-glocalfileiostream.Tpo $(DEPDIR)/libgio_2_0_la-glocalfileiostream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glocalfileiostream.c' object='libgio_2_0_la-glocalfileiostream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-glocalfileiostream.lo `test -f 'glocalfileiostream.c' || echo '$(srcdir)/'`glocalfileiostream.c + +libgio_2_0_la-glocalvfs.lo: glocalvfs.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-glocalvfs.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-glocalvfs.Tpo -c -o libgio_2_0_la-glocalvfs.lo `test -f 'glocalvfs.c' || echo '$(srcdir)/'`glocalvfs.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-glocalvfs.Tpo $(DEPDIR)/libgio_2_0_la-glocalvfs.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glocalvfs.c' object='libgio_2_0_la-glocalvfs.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-glocalvfs.lo `test -f 'glocalvfs.c' || echo '$(srcdir)/'`glocalvfs.c + +libgio_2_0_la-gsocks4proxy.lo: gsocks4proxy.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsocks4proxy.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsocks4proxy.Tpo -c -o libgio_2_0_la-gsocks4proxy.lo `test -f 'gsocks4proxy.c' || echo '$(srcdir)/'`gsocks4proxy.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsocks4proxy.Tpo $(DEPDIR)/libgio_2_0_la-gsocks4proxy.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsocks4proxy.c' object='libgio_2_0_la-gsocks4proxy.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsocks4proxy.lo `test -f 'gsocks4proxy.c' || echo '$(srcdir)/'`gsocks4proxy.c + +libgio_2_0_la-gsocks4aproxy.lo: gsocks4aproxy.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsocks4aproxy.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsocks4aproxy.Tpo -c -o libgio_2_0_la-gsocks4aproxy.lo `test -f 'gsocks4aproxy.c' || echo '$(srcdir)/'`gsocks4aproxy.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsocks4aproxy.Tpo $(DEPDIR)/libgio_2_0_la-gsocks4aproxy.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsocks4aproxy.c' object='libgio_2_0_la-gsocks4aproxy.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsocks4aproxy.lo `test -f 'gsocks4aproxy.c' || echo '$(srcdir)/'`gsocks4aproxy.c + +libgio_2_0_la-gsocks5proxy.lo: gsocks5proxy.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-gsocks5proxy.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-gsocks5proxy.Tpo -c -o libgio_2_0_la-gsocks5proxy.lo `test -f 'gsocks5proxy.c' || echo '$(srcdir)/'`gsocks5proxy.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-gsocks5proxy.Tpo $(DEPDIR)/libgio_2_0_la-gsocks5proxy.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsocks5proxy.c' object='libgio_2_0_la-gsocks5proxy.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-gsocks5proxy.lo `test -f 'gsocks5proxy.c' || echo '$(srcdir)/'`gsocks5proxy.c + +libgio_2_0_la-thumbnail-verify.lo: thumbnail-verify.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -MT libgio_2_0_la-thumbnail-verify.lo -MD -MP -MF $(DEPDIR)/libgio_2_0_la-thumbnail-verify.Tpo -c -o libgio_2_0_la-thumbnail-verify.lo `test -f 'thumbnail-verify.c' || echo '$(srcdir)/'`thumbnail-verify.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgio_2_0_la-thumbnail-verify.Tpo $(DEPDIR)/libgio_2_0_la-thumbnail-verify.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='thumbnail-verify.c' object='libgio_2_0_la-thumbnail-verify.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libgio_2_0_la_CPPFLAGS) $(CPPFLAGS) $(libgio_2_0_la_CFLAGS) $(CFLAGS) -c -o libgio_2_0_la-thumbnail-verify.lo `test -f 'thumbnail-verify.c' || echo '$(srcdir)/'`thumbnail-verify.c + +gvdb-builder.o: gvdb/gvdb-builder.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gvdb-builder.o -MD -MP -MF $(DEPDIR)/gvdb-builder.Tpo -c -o gvdb-builder.o `test -f 'gvdb/gvdb-builder.c' || echo '$(srcdir)/'`gvdb/gvdb-builder.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gvdb-builder.Tpo $(DEPDIR)/gvdb-builder.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvdb/gvdb-builder.c' object='gvdb-builder.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gvdb-builder.o `test -f 'gvdb/gvdb-builder.c' || echo '$(srcdir)/'`gvdb/gvdb-builder.c + +gvdb-builder.obj: gvdb/gvdb-builder.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gvdb-builder.obj -MD -MP -MF $(DEPDIR)/gvdb-builder.Tpo -c -o gvdb-builder.obj `if test -f 'gvdb/gvdb-builder.c'; then $(CYGPATH_W) 'gvdb/gvdb-builder.c'; else $(CYGPATH_W) '$(srcdir)/gvdb/gvdb-builder.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gvdb-builder.Tpo $(DEPDIR)/gvdb-builder.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvdb/gvdb-builder.c' object='gvdb-builder.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gvdb-builder.obj `if test -f 'gvdb/gvdb-builder.c'; then $(CYGPATH_W) 'gvdb/gvdb-builder.c'; else $(CYGPATH_W) '$(srcdir)/gvdb/gvdb-builder.c'; fi` + +gresource-gresource-tool.o: gresource-tool.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gresource_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gresource-gresource-tool.o -MD -MP -MF $(DEPDIR)/gresource-gresource-tool.Tpo -c -o gresource-gresource-tool.o `test -f 'gresource-tool.c' || echo '$(srcdir)/'`gresource-tool.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gresource-gresource-tool.Tpo $(DEPDIR)/gresource-gresource-tool.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gresource-tool.c' object='gresource-gresource-tool.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gresource_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gresource-gresource-tool.o `test -f 'gresource-tool.c' || echo '$(srcdir)/'`gresource-tool.c + +gresource-gresource-tool.obj: gresource-tool.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gresource_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gresource-gresource-tool.obj -MD -MP -MF $(DEPDIR)/gresource-gresource-tool.Tpo -c -o gresource-gresource-tool.obj `if test -f 'gresource-tool.c'; then $(CYGPATH_W) 'gresource-tool.c'; else $(CYGPATH_W) '$(srcdir)/gresource-tool.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gresource-gresource-tool.Tpo $(DEPDIR)/gresource-gresource-tool.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gresource-tool.c' object='gresource-gresource-tool.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gresource_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gresource-gresource-tool.obj `if test -f 'gresource-tool.c'; then $(CYGPATH_W) 'gresource-tool.c'; else $(CYGPATH_W) '$(srcdir)/gresource-tool.c'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-completionDATA: $(completion_DATA) + @$(NORMAL_INSTALL) + @list='$(completion_DATA)'; test -n "$(completiondir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(completiondir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(completiondir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(completiondir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(completiondir)" || exit $$?; \ + done + +uninstall-completionDATA: + @$(NORMAL_UNINSTALL) + @list='$(completion_DATA)'; test -n "$(completiondir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(completiondir)'; $(am__uninstall_files_from_dir) +install-dist_itsDATA: $(dist_its_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_its_DATA)'; test -n "$(itsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(itsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(itsdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(itsdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(itsdir)" || exit $$?; \ + done + +uninstall-dist_itsDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_its_DATA)'; test -n "$(itsdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(itsdir)'; $(am__uninstall_files_from_dir) +install-dist_schemaDATA: $(dist_schema_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_schema_DATA)'; test -n "$(schemadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(schemadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(schemadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(schemadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(schemadir)" || exit $$?; \ + done + +uninstall-dist_schemaDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_schema_DATA)'; test -n "$(schemadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(schemadir)'; $(am__uninstall_files_from_dir) +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) +install-gioincludeHEADERS: $(gioinclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(gioinclude_HEADERS)'; test -n "$(gioincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(gioincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(gioincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(gioincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(gioincludedir)" || exit $$?; \ + done + +uninstall-gioincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(gioinclude_HEADERS)'; test -n "$(gioincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(gioincludedir)'; $(am__uninstall_files_from_dir) +install-giounixincludeHEADERS: $(giounixinclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(giounixinclude_HEADERS)'; test -n "$(giounixincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(giounixincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(giounixincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(giounixincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(giounixincludedir)" || exit $$?; \ + done + +uninstall-giounixincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(giounixinclude_HEADERS)'; test -n "$(giounixincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(giounixincludedir)'; $(am__uninstall_files_from_dir) +install-giowin32includeHEADERS: $(giowin32include_HEADERS) + @$(NORMAL_INSTALL) + @list='$(giowin32include_HEADERS)'; test -n "$(giowin32includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(giowin32includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(giowin32includedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(giowin32includedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(giowin32includedir)" || exit $$?; \ + done + +uninstall-giowin32includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(giowin32include_HEADERS)'; test -n "$(giowin32includedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(giowin32includedir)'; $(am__uninstall_files_from_dir) +install-nodist_gioincludeHEADERS: $(nodist_gioinclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(nodist_gioinclude_HEADERS)'; test -n "$(gioincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(gioincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(gioincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(gioincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(gioincludedir)" || exit $$?; \ + done + +uninstall-nodist_gioincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nodist_gioinclude_HEADERS)'; test -n "$(gioincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(gioincludedir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ + $(HEADERS) all-local +install-binPROGRAMS: install-libLTLIBRARIES + +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(completiondir)" "$(DESTDIR)$(itsdir)" "$(DESTDIR)$(schemadir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(gioincludedir)" "$(DESTDIR)$(giounixincludedir)" "$(DESTDIR)$(giowin32includedir)" "$(DESTDIR)$(gioincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +@HAVE_GLIB_RUNTIME_LIBDIR_FALSE@install-data-hook: +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-checkLTLIBRARIES clean-checkPROGRAMS \ + clean-generic clean-installed_testLTLIBRARIES \ + clean-installed_testPROGRAMS clean-libLTLIBRARIES \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-completionDATA install-data-local \ + install-dist_itsDATA install-dist_schemaDATA \ + install-gioincludeHEADERS install-giounixincludeHEADERS \ + install-giowin32includeHEADERS \ + install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA \ + install-nodist_gioincludeHEADERS + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-libLTLIBRARIES + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-completionDATA \ + uninstall-dist_itsDATA uninstall-dist_schemaDATA \ + uninstall-gioincludeHEADERS uninstall-giounixincludeHEADERS \ + uninstall-giowin32includeHEADERS \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-libLTLIBRARIES \ + uninstall-local uninstall-nobase_installed_testDATA \ + uninstall-nodist_gioincludeHEADERS + +.MAKE: $(am__recursive_targets) all check check-am install install-am \ + install-data-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ + check check-TESTS check-am check-local clean clean-binPROGRAMS \ + clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \ + clean-noinstPROGRAMS cscopelist-am ctags ctags-am dist-hook \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-completionDATA install-data install-data-am \ + install-data-hook install-data-local install-dist_itsDATA \ + install-dist_schemaDATA install-dvi install-dvi-am \ + install-exec install-exec-am install-gioincludeHEADERS \ + install-giounixincludeHEADERS install-giowin32includeHEADERS \ + install-html install-html-am install-info install-info-am \ + install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-libLTLIBRARIES \ + install-man install-nobase_installed_testDATA \ + install-nodist_gioincludeHEADERS install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-completionDATA \ + uninstall-dist_itsDATA uninstall-dist_schemaDATA \ + uninstall-gioincludeHEADERS uninstall-giounixincludeHEADERS \ + uninstall-giowin32includeHEADERS \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-libLTLIBRARIES \ + uninstall-local uninstall-nobase_installed_testDATA \ + uninstall-nodist_gioincludeHEADERS + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +install-ms-lib: + $(install_ms_lib_cmd) + +uninstall-ms-lib: + $(uninstall_ms_lib_cmd) + +gdbus-daemon-generated.h gdbus-daemon-generated.c: $(srcdir)/dbus-daemon.xml $(srcdir)/gdbus-2.0/codegen/gdbus-codegen.in + $(AM_V_GEN) UNINSTALLED_GLIB_SRCDIR=$(top_srcdir) \ + UNINSTALLED_GLIB_BUILDDIR=$(top_builddir) \ + $(PYTHON) $(srcdir)/gdbus-2.0/codegen/gdbus-codegen.in \ + --interface-prefix org. \ + --generate-c-code gdbus-daemon-generated \ + --c-namespace _G \ + $(srcdir)/dbus-daemon.xml \ + $(NULL) + +install-data-local: install-ms-lib + $(mkinstalldirs) $(DESTDIR)$(GIO_MODULE_DIR) + +uninstall-local: uninstall-ms-lib + +gio-win32-res.o: gio.rc + $(WINDRES) gio.rc $@ + +# This is read by gobject-introspection/misc/ and gtk-doc +gio-public-headers.txt: Makefile + $(AM_V_GEN) echo $(gioinclude_HEADERS) $(giowin32include_HEADERS) $(giounixinclude_HEADERS) > $@.tmp && mv $@.tmp $@ + +all-local: gio-public-headers.txt + +gioenumtypes.h: $(gio_headers) gioenumtypes.h.template + $(AM_V_GEN) $(top_builddir)/gobject/glib-mkenums --template $(filter %.template,$^) $(filter-out %.template,$^) > \ + gioenumtypes.h.tmp && mv gioenumtypes.h.tmp gioenumtypes.h + +gioenumtypes.c: $(gio_headers) gioenumtypes.c.template + $(AM_V_GEN) $(top_builddir)/gobject/glib-mkenums --template $(filter %.template,$^) $(filter-out %.template,$^) > \ + gioenumtypes.c.tmp && mv gioenumtypes.c.tmp gioenumtypes.c + +gio.def: libgio-2.0.la + $(AM_V_GEN) dumpbin.exe -exports .libs/libgio-2.0-0.dll | awk 'BEGIN { print "EXPORTS" } / +[[:digit:]]+ +[[:xdigit:]]+ +[[:xdigit:]]+/{ print $$4 }' > gio.def.tmp && mv gio.def.tmp gio.def + +gio-2.0.lib: libgio-2.0.la gio.def + $(AM_V_GEN) lib.exe -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgio-2.0-$(LT_CURRENT_MINUS_AGE).dll -def:$(builddir)/gio.def -out:$@ + +gconstructor_as_data.h: $(top_srcdir)/glib/gconstructor.h data-to-c.pl + $(AM_V_GEN) $(srcdir)/data-to-c.pl $(top_srcdir)/glib/gconstructor.h gconstructor_code > $@.tmp && mv $@.tmp $@ + +# +# Creates Visual Studio 2008/2010 projects from items passed in from autotools files +# $(1) - Base Name of the MSVC project files (outputs) +# + +define msvcproj-builder + +$(top_builddir)/build/win32/vs10/$(1).vcxproj: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(top_builddir)/build/win32/vs10/$(1).vcxproj.filters: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(1).sourcefiles: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(1).vs10.sourcefiles: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(1).vs10.sourcefiles.filters: $(top_builddir)/build/win32/vs9/$(1).vcproj + +$(top_builddir)/build/win32/vs9/$(1).vcproj: + -$(RM) $(top_builddir)/build/win32/vs9/$(1).vcproj + -$(RM) $(top_builddir)/build/win32/vs10/$(1).vcxproj + -$(RM) $(top_builddir)/build/win32/vs10/$(1).vcxproj.filters + + for F in $(_proj_files); do \ + case $$$$F in \ + $(_proj_filters)) \ + ;; \ + *.c|*.cpp|*.cc|*.cxx) \ + echo ' ' >>$(1).sourcefiles && \ + echo ' ' >>$(1).vs10.sourcefiles && \ + echo ' Source Files' >>$(1).vs10.sourcefiles.filters \ + ;; \ + esac; \ + done + + $(CPP) -P - <$(top_srcdir)/build/win32/vs9/$(1).vcprojin >$(top_builddir)/build/win32/vs9/$(1).vcproj + $(CPP) -P - <$(top_srcdir)/build/win32/vs10/$(1).vcxprojin >$(top_builddir)/build/win32/vs10/$(1).vcxproj + $(CPP) -P - <$(top_srcdir)/build/win32/vs10/$(1).vcxproj.filtersin >$(top_builddir)/build/win32/vs10/$(1).vcxproj.filters + $(RM) $(1).sourcefiles + $(RM) $(1).vs10.sourcefiles + $(RM) $(1).vs10.sourcefiles.filters + +$(top_builddir)/build/win32/vs10/$(1).vs10.headers: $(top_builddir)/build/win32/vs9/$(1).headers + +$(top_builddir)/build/win32/vs9/$(1).headers: + -$(RM) $(top_builddir)/build/win32/vs9/$(1).headers + -$(RM) $(top_builddir)/build/win32/vs10/$(1).vs10.headers + + for F in $(_proj_headers); do \ + case $$$$F in \ + $(_proj_headers_excludes)) \ + ;; \ + *.h|*.hpp|*.hh|*.hxx) \ + echo 'copy ..\..\..'$(_proj_subdir)$$$$F' $$$$(CopyDir)\include'$(_headers_destdir)'\'$$$$F' ' >>$(top_builddir)/build/win32/vs9/$(1).headers && \ + echo 'copy ..\..\..'$(_proj_subdir)$$$$F' $$$$(CopyDir)\include'$(_headers_destdir)'\'$$$$F >>$(top_builddir)/build/win32/vs10/$(1).vs10.headers \ + ;; \ + esac; \ + done + +endef + +$(foreach proj,$(MSVCPROJS),$(eval $(call msvcproj-builder,$(proj)))) + +dist-hook: \ + $(BUILT_EXTRA_DIST) \ + $(top_builddir)/build/win32/vs9/gio.vcproj \ + $(top_builddir)/build/win32/vs9/gio.headers \ + $(top_builddir)/build/win32/vs9/glib-compile-schemas.vcproj \ + $(top_builddir)/build/win32/vs9/glib-compile-resources.vcproj + files='$(BUILT_EXTRA_DIST)'; \ + for f in $$files; do \ + if test -f $$f; then d=.; else d=$(srcdir); fi; \ + cp $$d/$$f $(distdir) || exit 1; done + +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@install-data-hook: +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mkdir -p $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mv $(DESTDIR)$(libdir)/libgio-2.0.so.0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mv $(DESTDIR)$(libdir)/libgio-2.0.so.0.$(LT_CURRENT).$(LT_REVISION) $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ rm -f $(DESTDIR)$(libdir)/libgio-2.0.so +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ ln -s $(GLIB_RUNTIME_LIBDIR)/libgio-2.0.so.0.$(LT_CURRENT).$(LT_REVISION) $(DESTDIR)$(libdir)/libgio-2.0.so + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gio/fam/Makefile.am b/gio/fam/Makefile.am index 67e0d67..d064943 100644 --- a/gio/fam/Makefile.am +++ b/gio/fam/Makefile.am @@ -5,15 +5,7 @@ module_flags = -export_dynamic -avoid-version -module -no-undefined -export-symb giomodule_LTLIBRARIES = libgiofam.la giomoduledir = $(GIO_MODULE_DIR) -libgiofam_la_SOURCES = \ - fam-helper.c \ - fam-helper.h \ - fam-module.c \ - gfamdirectorymonitor.c \ - gfamdirectorymonitor.h \ - gfamfilemonitor.c \ - gfamfilemonitor.h \ - $(NULL) +libgiofam_la_SOURCES = gfamfilemonitor.c libgiofam_la_CFLAGS = \ -DG_LOG_DOMAIN=\"GLib-GIO\" \ diff --git a/gio/fam/Makefile.in b/gio/fam/Makefile.in new file mode 100644 index 0000000..e04b00f --- /dev/null +++ b/gio/fam/Makefile.in @@ -0,0 +1,1572 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +subdir = gio/fam +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(giomoduledir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(giomodule_LTLIBRARIES) $(installed_test_LTLIBRARIES) \ + $(noinst_LTLIBRARIES) +am__DEPENDENCIES_1 = +libgiofam_la_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) +am_libgiofam_la_OBJECTS = libgiofam_la-gfamfilemonitor.lo +libgiofam_la_OBJECTS = $(am_libgiofam_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libgiofam_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libgiofam_la_CFLAGS) \ + $(CFLAGS) $(libgiofam_la_LDFLAGS) $(LDFLAGS) -o $@ +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgiofam_la_SOURCES) +DIST_SOURCES = $(libgiofam_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/glib.mk $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = +BUILT_EXTRA_DIST = +CLEANFILES = *.log *.trs $(am__append_14) +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +module_flags = -export_dynamic -avoid-version -module -no-undefined -export-symbols-regex '^g_io_module_(load|unload|query)' +giomodule_LTLIBRARIES = libgiofam.la +giomoduledir = $(GIO_MODULE_DIR) +libgiofam_la_SOURCES = gfamfilemonitor.c +libgiofam_la_CFLAGS = \ + -DG_LOG_DOMAIN=\"GLib-GIO\" \ + $(gio_INCLUDES) \ + $(GLIB_DEBUG_FLAGS) \ + -DGIO_MODULE_DIR=\"$(GIO_MODULE_DIR)\" \ + -DGIO_COMPILATION \ + -DG_DISABLE_DEPRECATED + +libgiofam_la_LDFLAGS = $(module_flags) +libgiofam_la_LIBADD = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la \ + $(GLIB_LIBS) \ + $(FAM_LIBS) \ + $(NULL) + +@CROSS_COMPILING_FALSE@RUN_QUERY_MODULES = true +@CROSS_COMPILING_TRUE@RUN_QUERY_MODULES = false +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gio/fam/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gio/fam/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-giomoduleLTLIBRARIES: $(giomodule_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(giomodule_LTLIBRARIES)'; test -n "$(giomoduledir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(giomoduledir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(giomoduledir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(giomoduledir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(giomoduledir)"; \ + } + +uninstall-giomoduleLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(giomodule_LTLIBRARIES)'; test -n "$(giomoduledir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(giomoduledir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(giomoduledir)/$$f"; \ + done + +clean-giomoduleLTLIBRARIES: + -test -z "$(giomodule_LTLIBRARIES)" || rm -f $(giomodule_LTLIBRARIES) + @list='$(giomodule_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgiofam.la: $(libgiofam_la_OBJECTS) $(libgiofam_la_DEPENDENCIES) $(EXTRA_libgiofam_la_DEPENDENCIES) + $(AM_V_CCLD)$(libgiofam_la_LINK) -rpath $(giomoduledir) $(libgiofam_la_OBJECTS) $(libgiofam_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiofam_la-gfamfilemonitor.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libgiofam_la-gfamfilemonitor.lo: gfamfilemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgiofam_la_CFLAGS) $(CFLAGS) -MT libgiofam_la-gfamfilemonitor.lo -MD -MP -MF $(DEPDIR)/libgiofam_la-gfamfilemonitor.Tpo -c -o libgiofam_la-gfamfilemonitor.lo `test -f 'gfamfilemonitor.c' || echo '$(srcdir)/'`gfamfilemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiofam_la-gfamfilemonitor.Tpo $(DEPDIR)/libgiofam_la-gfamfilemonitor.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfamfilemonitor.c' object='libgiofam_la-gfamfilemonitor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgiofam_la_CFLAGS) $(CFLAGS) -c -o libgiofam_la-gfamfilemonitor.lo `test -f 'gfamfilemonitor.c' || echo '$(srcdir)/'`gfamfilemonitor.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(giomoduledir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-giomoduleLTLIBRARIES clean-installed_testLTLIBRARIES \ + clean-installed_testPROGRAMS clean-libtool \ + clean-noinstLTLIBRARIES clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-giomoduleLTLIBRARIES \ + install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-giomoduleLTLIBRARIES \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-local \ + uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-data-am \ + install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \ + check-local clean clean-checkLTLIBRARIES clean-checkPROGRAMS \ + clean-generic clean-giomoduleLTLIBRARIES \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-data-hook install-dvi \ + install-dvi-am install-exec install-exec-am \ + install-giomoduleLTLIBRARIES install-html install-html-am \ + install-info install-info-am install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-giomoduleLTLIBRARIES \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-local \ + uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +install-data-hook: + if $(RUN_QUERY_MODULES) && test -z "$(DESTDIR)" ; then \ + $(top_builddir)/gio/gio-querymodules$(EXEEXT) $(DESTDIR)$(GIO_MODULE_DIR) ; \ + fi + +uninstall-local: + $(RM) $(DESTDIR)$(GIO_MODULE_DIR)/giomodule.cache + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gio/fam/fam-helper.c b/gio/fam/fam-helper.c deleted file mode 100644 index c02d392..0000000 --- a/gio/fam/fam-helper.c +++ /dev/null @@ -1,274 +0,0 @@ -/* 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, see . - * - * Authors: Alexander Larsson - * John McCutchan - * Sebastian Dröge - */ - -#include "config.h" -#include -#include -#include - -#include "fam-helper.h" - -static FAMConnection* fam_connection = NULL; -static gint fam_watch_id = 0; -G_LOCK_DEFINE_STATIC(fam_connection); - -struct _fam_sub -{ - gchar *pathname; - gboolean directory; - gpointer user_data; - gboolean cancelled; - FAMRequest request; -}; - -/* This uses int as the argument type because the - real type differs between implementations: - gamin has "typedef enum FAMCodes {....} FAMCodes;" - fam has "enum FAMCodes { ... }". -*/ -static GFileMonitorEvent -fam_event_to_file_monitor_event (int code) -{ - switch (code) - { - case FAMChanged: - return G_FILE_MONITOR_EVENT_CHANGED; - break; - case FAMDeleted: - return G_FILE_MONITOR_EVENT_DELETED; - break; - case FAMCreated: - return G_FILE_MONITOR_EVENT_CREATED; - break; - default: - return -1; - break; - } -} - -static gboolean -fam_do_iter_unlocked (void) -{ - while (fam_connection != NULL && FAMPending (fam_connection)) - { - FAMEvent ev; - fam_sub* sub = NULL; - gboolean cancelled; - - if (FAMNextEvent (fam_connection, &ev) != 1) - { - FAMClose (fam_connection); - g_free (fam_connection); - g_source_remove (fam_watch_id); - fam_watch_id = 0; - fam_connection = NULL; - return FALSE; - } - - sub = (fam_sub*)ev.userdata; - cancelled = sub->cancelled; - if (ev.code == FAMAcknowledge && cancelled) - { - _fam_sub_free (sub); - continue; - } - - if (cancelled) - continue; - - if (sub->directory) - { - GFileMonitor* monitor = G_FILE_MONITOR (sub->user_data); - GFileMonitorEvent eflags = fam_event_to_file_monitor_event (ev.code); - gchar* path = NULL; - GFile *child, *parent; - - /* unsupported event */ - if (eflags == -1) - continue; - - if (ev.filename[0] == '/') - path = g_strdup (ev.filename); - else - path = g_strdup_printf ("%s/%s", sub->pathname, ev.filename); - - child = g_file_new_for_path (path); - parent = g_file_get_parent (child); - g_file_monitor_emit_event (monitor, child, NULL, eflags); - g_free (path); - g_object_unref (child); - g_object_unref (parent); - } - else - { - GFile *child; - GFileMonitor* monitor = G_FILE_MONITOR (sub->user_data); - GFileMonitorEvent eflags = fam_event_to_file_monitor_event (ev.code); - gchar* path = NULL; - - if (eflags == -1) - continue; - path = g_strdup (ev.filename); - child = g_file_new_for_path (path); - g_file_monitor_emit_event (monitor, child, NULL, eflags); - g_free (path); - g_object_unref (child); - } - } - - return TRUE; -} - -static gboolean -fam_callback (GIOChannel *source, - GIOCondition condition, - gpointer data) -{ - gboolean res; - G_LOCK (fam_connection); - - res = fam_do_iter_unlocked (); - - G_UNLOCK (fam_connection); - return res; -} - -gboolean -_fam_sub_startup (void) -{ - GIOChannel *ioc; - - G_LOCK (fam_connection); - - if (fam_connection == NULL) - { - fam_connection = g_new0 (FAMConnection, 1); - if (FAMOpen2 (fam_connection, "gvfs user") != 0) - { - g_warning ("FAMOpen failed, FAMErrno=%d\n", FAMErrno); - g_free (fam_connection); - fam_connection = NULL; - G_UNLOCK (fam_connection); - return FALSE; - } -#ifdef HAVE_FAM_NO_EXISTS - /* This is a gamin extension that avoids sending all the Exists event for dir monitors */ - FAMNoExists (fam_connection); -#endif - ioc = g_io_channel_unix_new (FAMCONNECTION_GETFD(fam_connection)); - fam_watch_id = g_io_add_watch (ioc, - G_IO_IN | G_IO_HUP | G_IO_ERR, - fam_callback, fam_connection); - g_io_channel_unref (ioc); - } - - G_UNLOCK (fam_connection); - - return TRUE; -} - -void -_fam_sub_shutdown (void) -{ - G_LOCK (fam_connection); - - if (fam_connection != NULL) - { - FAMClose (fam_connection); - g_free (fam_connection); - g_source_remove (fam_watch_id); - fam_watch_id = 0; - fam_connection = NULL; - } - - G_UNLOCK (fam_connection); -} - -fam_sub* -_fam_sub_add (const gchar *pathname, - gboolean directory, - gpointer user_data) -{ - fam_sub *sub; - - if (!_fam_sub_startup ()) - return NULL; - - G_LOCK (fam_connection); - /* We need to queue up incoming messages to avoid blocking on write - * if there are many monitors being canceled */ - fam_do_iter_unlocked (); - - if (fam_connection == NULL) - { - G_UNLOCK (fam_connection); - return NULL; - } - - sub = g_new0 (fam_sub, 1); - sub->pathname = g_strdup (pathname); - sub->directory = directory; - sub->user_data = user_data; - - if (directory) - FAMMonitorDirectory (fam_connection, pathname, &sub->request, sub); - else - FAMMonitorFile (fam_connection, pathname, &sub->request, sub); - - G_UNLOCK (fam_connection); - - return sub; -} - -gboolean -_fam_sub_cancel (fam_sub* sub) -{ - if (sub->cancelled) - return TRUE; - - sub->cancelled = TRUE; - - G_LOCK (fam_connection); - /* We need to queue up incoming messages to avoid blocking on write - * if there are many monitors being canceled */ - fam_do_iter_unlocked (); - - if (fam_connection == NULL) - { - G_UNLOCK (fam_connection); - return FALSE; - } - - FAMCancelMonitor (fam_connection, &sub->request); - - G_UNLOCK (fam_connection); - - return TRUE; -} - -void -_fam_sub_free (fam_sub* sub) -{ - g_free (sub->pathname); - g_free (sub); -} - diff --git a/gio/fam/fam-helper.h b/gio/fam/fam-helper.h deleted file mode 100644 index 030e315..0000000 --- a/gio/fam/fam-helper.h +++ /dev/null @@ -1,36 +0,0 @@ -/* 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, see . - * - * Authors: Alexander Larsson - * John McCutchan - * Sebastian Dröge - */ - -#ifndef __FAM_HELPER_H__ -#define __FAM_HELPER_H__ - -typedef struct _fam_sub fam_sub; - -gboolean _fam_sub_startup (void); -void _fam_sub_shutdown (void); -fam_sub* _fam_sub_add (const gchar* pathname, - gboolean directory, - gpointer user_data); -gboolean _fam_sub_cancel (fam_sub* sub); -void _fam_sub_free (fam_sub* sub); - -#endif /* __FAM_HELPER_H__ */ diff --git a/gio/fam/fam-module.c b/gio/fam/fam-module.c deleted file mode 100644 index 71c62bd..0000000 --- a/gio/fam/fam-module.c +++ /dev/null @@ -1,54 +0,0 @@ -/* GIO - GLib Input, Output and Streaming Library - * - * Copyright (C) 2006-2007 Red Hat, Inc. - * Copyright (C) 2007 Sebastian Dröge. - * - * 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, see . - * - * Authors: Alexander Larsson - * John McCutchan - * Sebastian Dröge - */ - -#include -#include "gfamdirectorymonitor.h" -#include "gfamfilemonitor.h" -#include "fam-helper.h" - -void -g_io_module_load (GIOModule *module) -{ - g_fam_file_monitor_register (module); - g_fam_directory_monitor_register (module); -} - -void -g_io_module_unload (GIOModule *module) -{ - _fam_sub_shutdown (); -} - -char ** -g_io_module_query (void) -{ - char *eps[] = { - G_LOCAL_DIRECTORY_MONITOR_EXTENSION_POINT_NAME, - G_LOCAL_FILE_MONITOR_EXTENSION_POINT_NAME, - G_NFS_DIRECTORY_MONITOR_EXTENSION_POINT_NAME, - G_NFS_FILE_MONITOR_EXTENSION_POINT_NAME, - NULL - }; - return g_strdupv (eps); -} - diff --git a/gio/fam/gfamdirectorymonitor.c b/gio/fam/gfamdirectorymonitor.c deleted file mode 100644 index 627d232..0000000 --- a/gio/fam/gfamdirectorymonitor.c +++ /dev/null @@ -1,155 +0,0 @@ -/* GIO - GLib Input, Output and Streaming Library - * - * Copyright (C) 2006-2007 Red Hat, Inc. - * Copyright (C) 2007 Sebastian Dröge. - * - * 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, see . - * - * Authors: Alexander Larsson - * John McCutchan - * Sebastian Dröge - */ - -#include "config.h" - -#include "gfamdirectorymonitor.h" -#include - -#include "fam-helper.h" - -struct _GFamDirectoryMonitor -{ - GLocalDirectoryMonitor parent_instance; - fam_sub *sub; -}; - -static gboolean g_fam_directory_monitor_cancel (GFileMonitor* monitor); - -G_DEFINE_DYNAMIC_TYPE (GFamDirectoryMonitor, g_fam_directory_monitor, G_TYPE_LOCAL_DIRECTORY_MONITOR) - -static void -g_fam_directory_monitor_finalize (GObject *object) -{ - GFamDirectoryMonitor *fam_monitor = G_FAM_DIRECTORY_MONITOR (object); - fam_sub *sub = fam_monitor->sub; - - if (sub) { - if (!_fam_sub_cancel (sub)) - g_warning ("Unexpected error cancelling fam monitor"); - - fam_monitor->sub = NULL; - } - - if (G_OBJECT_CLASS (g_fam_directory_monitor_parent_class)->finalize) - (*G_OBJECT_CLASS (g_fam_directory_monitor_parent_class)->finalize) (object); -} - -static GObject * -g_fam_directory_monitor_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam *construct_properties) -{ - GObject *obj; - GFamDirectoryMonitorClass *klass; - GObjectClass *parent_class; - GFamDirectoryMonitor *fam_monitor; - const gchar *dirname = NULL; - fam_sub *sub = NULL; - - klass = G_FAM_DIRECTORY_MONITOR_CLASS (g_type_class_peek (G_TYPE_FAM_DIRECTORY_MONITOR)); - parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass)); - obj = parent_class->constructor (type, - n_construct_properties, - construct_properties); - - fam_monitor = G_FAM_DIRECTORY_MONITOR (obj); - - dirname = G_LOCAL_DIRECTORY_MONITOR (obj)->dirname; - g_assert (dirname != NULL); - - sub = _fam_sub_add (dirname, TRUE, fam_monitor); - /* FIXME: what to do about errors here? we can't return NULL or another - * kind of error and an assertion is probably too hard */ - g_assert (sub != NULL); - - fam_monitor->sub = sub; - - return obj; -} - -static void -g_fam_directory_monitor_class_finalize (GFamDirectoryMonitorClass *klass) -{ -} - -static gboolean -g_fam_directory_monitor_is_supported (void) -{ - return _fam_sub_startup (); -} - -static void -g_fam_directory_monitor_class_init (GFamDirectoryMonitorClass* klass) -{ - GObjectClass* gobject_class = G_OBJECT_CLASS (klass); - GFileMonitorClass *file_monitor_class = G_FILE_MONITOR_CLASS (klass); - GLocalDirectoryMonitorClass *local_directory_monitor_class = G_LOCAL_DIRECTORY_MONITOR_CLASS (klass); - - gobject_class->finalize = g_fam_directory_monitor_finalize; - gobject_class->constructor = g_fam_directory_monitor_constructor; - file_monitor_class->cancel = g_fam_directory_monitor_cancel; - - local_directory_monitor_class->mount_notify = FALSE; - local_directory_monitor_class->is_supported = g_fam_directory_monitor_is_supported; -} - -static void -g_fam_directory_monitor_init (GFamDirectoryMonitor* monitor) -{ - -} - -static gboolean -g_fam_directory_monitor_cancel (GFileMonitor* monitor) -{ - GFamDirectoryMonitor *fam_monitor = G_FAM_DIRECTORY_MONITOR (monitor); - fam_sub *sub = fam_monitor->sub; - - if (sub) { - if (!_fam_sub_cancel (sub)) - g_warning ("Unexpected error cancelling fam monitor"); - - fam_monitor->sub = NULL; - } - - if (G_FILE_MONITOR_CLASS (g_fam_directory_monitor_parent_class)->cancel) - (*G_FILE_MONITOR_CLASS (g_fam_directory_monitor_parent_class)->cancel) (monitor); - - return TRUE; -} - -void -g_fam_directory_monitor_register (GIOModule *module) -{ - g_fam_directory_monitor_register_type (G_TYPE_MODULE (module)); - g_io_extension_point_implement (G_LOCAL_DIRECTORY_MONITOR_EXTENSION_POINT_NAME, - G_TYPE_FAM_DIRECTORY_MONITOR, - "fam", - 10); - g_io_extension_point_implement (G_NFS_DIRECTORY_MONITOR_EXTENSION_POINT_NAME, - G_TYPE_FAM_DIRECTORY_MONITOR, - "fam", - 10); -} - diff --git a/gio/fam/gfamdirectorymonitor.h b/gio/fam/gfamdirectorymonitor.h deleted file mode 100644 index 240412a..0000000 --- a/gio/fam/gfamdirectorymonitor.h +++ /dev/null @@ -1,52 +0,0 @@ -/* GIO - GLib Input, Output and Streaming Library - * - * Copyright (C) 2006-2007 Red Hat, Inc. - * Copyright (C) 2007 Sebastian Dröge. - * - * 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, see . - * - * Authors: Alexander Larsson - * John McCutchan - * Sebastian Dröge - */ - -#ifndef __G_FAM_DIRECTORY_MONITOR_H__ -#define __G_FAM_DIRECTORY_MONITOR_H__ - -#include -#include -#include -#include - -G_BEGIN_DECLS - -#define G_TYPE_FAM_DIRECTORY_MONITOR (g_fam_directory_monitor_get_type ()) -#define G_FAM_DIRECTORY_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FAM_DIRECTORY_MONITOR, GFamDirectoryMonitor)) -#define G_FAM_DIRECTORY_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), G_TYPE_FAM_DIRECTORY_MONITOR, GFamDirectoryMonitorClass)) -#define G_IS_FAM_DIRECTORY_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FAM_DIRECTORY_MONITOR)) -#define G_IS_FAM_DIRECTORY_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FAM_DIRECTORY_MONITOR)) - -typedef struct _GFamDirectoryMonitor GFamDirectoryMonitor; -typedef struct _GFamDirectoryMonitorClass GFamDirectoryMonitorClass; - -struct _GFamDirectoryMonitorClass { - GLocalDirectoryMonitorClass parent_class; -}; - -GType g_fam_directory_monitor_get_type (void); -void g_fam_directory_monitor_register (GIOModule *module); - -G_END_DECLS - -#endif /* __G_FAM_DIRECTORY_MONITOR_H__ */ diff --git a/gio/fam/gfamfilemonitor.c b/gio/fam/gfamfilemonitor.c index acdbf22..50474c8 100644 --- a/gio/fam/gfamfilemonitor.c +++ b/gio/fam/gfamfilemonitor.c @@ -1,7 +1,5 @@ -/* GIO - GLib Input, Output and Streaming Library - * - * Copyright (C) 2006-2007 Red Hat, Inc. - * Copyright (C) 2007 Sebastian Dröge. +/* + * Copyright © 2015 Canonical Limited * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -16,138 +14,224 @@ * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, see . * - * Authors: Alexander Larsson - * John McCutchan - * Sebastian Dröge + * Author: Ryan Lortie */ #include "config.h" -#include "gfamfilemonitor.h" +#include #include +#include "glib-private.h" +#include +#include -#include "fam-helper.h" +static GMutex fam_lock; +static gboolean fam_initialised; +static FAMConnection fam_connection; +static GSource *fam_source; -struct _GFamFileMonitor +#define G_TYPE_FAM_FILE_MONITOR (g_fam_file_monitor_get_type ()) +#define G_FAM_FILE_MONITOR(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_FAM_FILE_MONITOR, GFamFileMonitor)) + +typedef GLocalFileMonitorClass GFamFileMonitorClass; + +typedef struct { GLocalFileMonitor parent_instance; - fam_sub *sub; -}; -static gboolean g_fam_file_monitor_cancel (GFileMonitor* monitor); + FAMRequest request; +} GFamFileMonitor; +static GType g_fam_file_monitor_get_type (void); G_DEFINE_DYNAMIC_TYPE (GFamFileMonitor, g_fam_file_monitor, G_TYPE_LOCAL_FILE_MONITOR) -static void -g_fam_file_monitor_finalize (GObject *object) +static gboolean +g_fam_file_monitor_callback (gint fd, + GIOCondition condition, + gpointer user_data) { - GFamFileMonitor *fam_monitor = G_FAM_FILE_MONITOR (object); - fam_sub *sub = fam_monitor->sub; - - if (sub) { - if (!_fam_sub_cancel (sub)) - g_warning ("Unexpected error cancelling fam monitor"); - fam_monitor->sub = NULL; - } + gint64 now = g_source_get_time (fam_source); + + g_mutex_lock (&fam_lock); + + while (FAMPending (&fam_connection)) + { + const gchar *child; + FAMEvent ev; + + if (FAMNextEvent (&fam_connection, &ev) != 1) + { + /* The daemon died. We're in a really bad situation now + * because we potentially have a bunch of request structures + * outstanding which no longer make any sense to anyone. + * + * The best thing that we can do is do nothing. Notification + * won't work anymore for this process. + */ + g_mutex_unlock (&fam_lock); + + g_warning ("Lost connection to FAM (file monitoring) service. Expect no further file monitor events."); + + return FALSE; + } + + /* We expect ev.filename to be a relative path for children in a + * monitored directory, and an absolute path for a monitored file + * or the directory itself. + */ + if (ev.filename[0] != '/') + child = ev.filename; + else + child = NULL; + + switch (ev.code) + { + case FAMAcknowledge: + g_source_unref (ev.userdata); + break; + + case FAMChanged: + g_file_monitor_source_handle_event (ev.userdata, G_FILE_MONITOR_EVENT_CHANGED, child, NULL, NULL, now); + break; + + case FAMDeleted: + g_file_monitor_source_handle_event (ev.userdata, G_FILE_MONITOR_EVENT_DELETED, child, NULL, NULL, now); + break; + + case FAMCreated: + g_file_monitor_source_handle_event (ev.userdata, G_FILE_MONITOR_EVENT_CREATED, child, NULL, NULL, now); + break; + + default: + /* unknown type */ + break; + } + } + + g_mutex_unlock (&fam_lock); - if (G_OBJECT_CLASS (g_fam_file_monitor_parent_class)->finalize) - (*G_OBJECT_CLASS (g_fam_file_monitor_parent_class)->finalize) (object); + return TRUE; } -static GObject * -g_fam_file_monitor_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam *construct_properties) +static gboolean +g_fam_file_monitor_is_supported (void) { - GObject *obj; - GFamFileMonitorClass *klass; - GObjectClass *parent_class; - GFamFileMonitor *fam_monitor; - const gchar *filename = NULL; - fam_sub *sub = NULL; - - klass = G_FAM_FILE_MONITOR_CLASS (g_type_class_peek (G_TYPE_FAM_FILE_MONITOR)); - parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass)); - obj = parent_class->constructor (type, - n_construct_properties, - construct_properties); + g_mutex_lock (&fam_lock); - fam_monitor = G_FAM_FILE_MONITOR (obj); + if (!fam_initialised) + { + fam_initialised = FAMOpen2 (&fam_connection, "GLib GIO") == 0; - filename = G_LOCAL_FILE_MONITOR (obj)->filename; + if (fam_initialised) + { +#ifdef HAVE_FAM_NO_EXISTS + /* This is a gamin extension that avoids sending all the + * Exists event for dir monitors + */ + FAMNoExists (&fam_connection); +#endif - g_assert (filename != NULL); + fam_source = g_unix_fd_source_new (FAMCONNECTION_GETFD (&fam_connection), G_IO_IN); + g_source_set_callback (fam_source, (GSourceFunc) g_fam_file_monitor_callback, NULL, NULL); + g_source_attach (fam_source, GLIB_PRIVATE_CALL(g_get_worker_context) ()); + } + } - sub = _fam_sub_add (filename, FALSE, fam_monitor); - /* FIXME: what to do about errors here? we can't return NULL or another - * kind of error and an assertion is probably too hard */ - g_assert (sub != NULL); + g_mutex_unlock (&fam_lock); - fam_monitor->sub = sub; + g_print ("II %d\n", fam_initialised); - return obj; -} - -static void -g_fam_file_monitor_class_finalize (GFamFileMonitorClass *klass) -{ + return fam_initialised; } static gboolean -g_fam_file_monitor_is_supported (void) +g_fam_file_monitor_cancel (GFileMonitor *monitor) { - return _fam_sub_startup (); + GFamFileMonitor *gffm = G_FAM_FILE_MONITOR (monitor); + + g_mutex_lock (&fam_lock); + + g_assert (fam_initialised); + + FAMCancelMonitor (&fam_connection, &gffm->request); + + g_mutex_unlock (&fam_lock); + + return TRUE; } static void -g_fam_file_monitor_class_init (GFamFileMonitorClass* klass) +g_fam_file_monitor_start (GLocalFileMonitor *local_monitor, + const gchar *dirname, + const gchar *basename, + const gchar *filename, + GFileMonitorSource *source) { - GObjectClass* gobject_class = G_OBJECT_CLASS (klass); - GFileMonitorClass *file_monitor_class = G_FILE_MONITOR_CLASS (klass); - GLocalFileMonitorClass *local_file_monitor_class = G_LOCAL_FILE_MONITOR_CLASS (klass); - - gobject_class->finalize = g_fam_file_monitor_finalize; - gobject_class->constructor = g_fam_file_monitor_constructor; - file_monitor_class->cancel = g_fam_file_monitor_cancel; + GFamFileMonitor *gffm = G_FAM_FILE_MONITOR (local_monitor); + + g_mutex_lock (&fam_lock); + + g_assert (fam_initialised); - local_file_monitor_class->is_supported = g_fam_file_monitor_is_supported; + g_source_ref ((GSource *) source); + + if (dirname) + FAMMonitorDirectory (&fam_connection, dirname, &gffm->request, source); + else + FAMMonitorFile (&fam_connection, filename, &gffm->request, source); + + g_mutex_unlock (&fam_lock); } static void g_fam_file_monitor_init (GFamFileMonitor* monitor) { - } -static gboolean -g_fam_file_monitor_cancel (GFileMonitor* monitor) +static void +g_fam_file_monitor_class_init (GFamFileMonitorClass *class) { - GFamFileMonitor *fam_monitor = G_FAM_FILE_MONITOR (monitor); - fam_sub *sub = fam_monitor->sub; - - if (sub) { - if (!_fam_sub_cancel (sub)) - g_warning ("Unexpected error cancelling fam monitor"); - fam_monitor->sub = NULL; - } + GFileMonitorClass *file_monitor_class = G_FILE_MONITOR_CLASS (class); - if (G_FILE_MONITOR_CLASS (g_fam_file_monitor_parent_class)->cancel) - (*G_FILE_MONITOR_CLASS (g_fam_file_monitor_parent_class)->cancel) (monitor); + class->is_supported = g_fam_file_monitor_is_supported; + class->start = g_fam_file_monitor_start; + file_monitor_class->cancel = g_fam_file_monitor_cancel; +} - return TRUE; +static void +g_fam_file_monitor_class_finalize (GFamFileMonitorClass *class) +{ } void -g_fam_file_monitor_register (GIOModule *module) +g_io_module_load (GIOModule *module) { + g_type_module_use (G_TYPE_MODULE (module)); + g_fam_file_monitor_register_type (G_TYPE_MODULE (module)); + g_io_extension_point_implement (G_LOCAL_FILE_MONITOR_EXTENSION_POINT_NAME, - G_TYPE_FAM_FILE_MONITOR, - "fam", - 10); + G_TYPE_FAM_FILE_MONITOR, "fam", 10); + g_io_extension_point_implement (G_NFS_FILE_MONITOR_EXTENSION_POINT_NAME, - G_TYPE_FAM_FILE_MONITOR, - "fam", - 10); + G_TYPE_FAM_FILE_MONITOR, "fam", 10); +} + +void +g_io_module_unload (GIOModule *module) +{ + g_assert_not_reached (); } +char ** +g_io_module_query (void) +{ + char *eps[] = { + G_LOCAL_FILE_MONITOR_EXTENSION_POINT_NAME, + G_NFS_FILE_MONITOR_EXTENSION_POINT_NAME, + NULL + }; + + return g_strdupv (eps); +} diff --git a/gio/fam/gfamfilemonitor.h b/gio/fam/gfamfilemonitor.h deleted file mode 100644 index 0d1fd63..0000000 --- a/gio/fam/gfamfilemonitor.h +++ /dev/null @@ -1,53 +0,0 @@ -/* GIO - GLib Input, Output and Streaming Library - * - * Copyright (C) 2006-2007 Red Hat, Inc. - * Copyright (C) 2007 Sebastian Dröge. - * - * 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, see . - * - * Authors: Alexander Larsson - * John McCutchan - * Sebastian Dröge - */ - -#ifndef __G_FAM_FILE_MONITOR_H__ -#define __G_FAM_FILE_MONITOR_H__ - -#include -#include -#include -#include -#include - -G_BEGIN_DECLS - -#define G_TYPE_FAM_FILE_MONITOR (g_fam_file_monitor_get_type ()) -#define G_FAM_FILE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FAM_FILE_MONITOR, GFamFileMonitor)) -#define G_FAM_FILE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), G_TYPE_FAM_FILE_MONITOR, GFamFileMonitorClass)) -#define G_IS_FAM_FILE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FAM_FILE_MONITOR)) -#define G_IS_FAM_FILE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FAM_FILE_MONITOR)) - -typedef struct _GFamFileMonitor GFamFileMonitor; -typedef struct _GFamFileMonitorClass GFamFileMonitorClass; - -struct _GFamFileMonitorClass { - GLocalFileMonitorClass parent_class; -}; - -GType g_fam_file_monitor_get_type (void); -void g_fam_file_monitor_register (GIOModule *module); - -G_END_DECLS - -#endif /* __G_FAM_FILE_MONITOR_H__ */ diff --git a/gio/fen/Makefile.am b/gio/fen/Makefile.am deleted file mode 100644 index 2b5eb50..0000000 --- a/gio/fen/Makefile.am +++ /dev/null @@ -1,27 +0,0 @@ -include $(top_srcdir)/glib.mk - -noinst_LTLIBRARIES += libfen.la - -libfen_la_SOURCES = \ - fen-dump.c \ - fen-dump.h \ - fen-kernel.c \ - fen-kernel.h \ - fen-node.c \ - fen-node.h \ - fen-helper.c \ - fen-helper.h \ - gfenfilemonitor.c \ - gfenfilemonitor.h \ - gfendirectorymonitor.c \ - gfendirectorymonitor.h \ - $(NULL) - -libfen_la_CFLAGS = \ - $(GLIB_HIDDEN_VISIBILITY_CFLAGS) \ - -DG_LOG_DOMAIN=\"GLib-GIO\" \ - $(gio_INCLUDES) \ - $(GLIB_DEBUG_FLAGS) \ - -DGIO_MODULE_DIR=\"$(GIO_MODULE_DIR)\" \ - -DGIO_COMPILATION \ - -DG_DISABLE_DEPRECATED diff --git a/gio/fen/fen-dump.c b/gio/fen/fen-dump.c deleted file mode 100644 index 5c25662..0000000 --- a/gio/fen/fen-dump.c +++ /dev/null @@ -1,74 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim:set expandtab ts=4 shiftwidth=4: */ -/* - * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights - * reserved. - * - * 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, see . - * - * Authors: Lin Ma - */ - -#include "config.h" -#include -#include -#include "fen-node.h" -#include "fen-dump.h" - -G_LOCK_EXTERN (fen_lock); - -/*-------------------- node ------------------*/ -static void -dump_node (node_t* node, gpointer data) -{ - g_printf ("n:0x%p ds:0x%p s:0x%p %s\n", node, node->dir_subs, node->subs, NODE_NAME(node)); -} - -static void -dump_tree (node_t* node) -{ - if (G_TRYLOCK (fen_lock)) { - node_traverse(NULL, dump_node, NULL); - G_UNLOCK (fen_lock); - } -} - -/* ------------------ fdata port hash --------------------*/ -void -dump_hash_cb (gpointer key, - gpointer value, - gpointer user_data) -{ - g_printf ("k:0x%p v:0x%p >\n", key, value); -} - -gboolean -dump_hash (GHashTable* hash, gpointer user_data) -{ - if (G_TRYLOCK (fen_lock)) { - if (g_hash_table_size (hash) > 0) { - g_hash_table_foreach (hash, dump_hash_cb, user_data); - } - G_UNLOCK (fen_lock); - } - return TRUE; -} - -/* ------------------ event --------------------*/ -void -dump_event (node_event_t* ev, gpointer user_data) -{ - node_t* node = ev->user_data; - g_printf ("ne:0x%p e:%p n:0x%p ds:0x%p s:0x%p s\n", ev, ev->e, node, node->dir_subs, node->subs, NODE_NAME(node)); -} diff --git a/gio/fen/fen-dump.h b/gio/fen/fen-dump.h deleted file mode 100644 index 668e64f..0000000 --- a/gio/fen/fen-dump.h +++ /dev/null @@ -1,27 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim:set expandtab ts=4 shiftwidth=4: */ -/* - * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights - * reserved. - * - * 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, see . - * - * Authors: Lin Ma - */ - -#ifndef _FEN_DUMP_H_ -#define _FEN_DUMP_H_ - - -#endif /* _FEN_DUMP_H_ */ diff --git a/gio/fen/fen-helper.c b/gio/fen/fen-helper.c deleted file mode 100644 index 724e314..0000000 --- a/gio/fen/fen-helper.c +++ /dev/null @@ -1,193 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim:set expandtab ts=4 shiftwidth=4: */ -/* - * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights - * reserved. - * - * 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, see . - * - * Authors: Lin Ma - */ - -#include "config.h" -#include -#include "fen-helper.h" -#include "fen-kernel.h" -#ifdef GIO_COMPILATION -#include -#else -#include "gam_event.h" -#include "gam_server.h" -#include "gam_protocol.h" -#endif - -#ifdef GIO_COMPILATION -#define FH_W if (FALSE) g_debug -#else -#include "gam_error.h" -#define FH_W(...) GAM_DEBUG(DEBUG_INFO, __VA_ARGS__) -#endif - -G_LOCK_EXTERN (fen_lock); - -/* misc */ -static void -scan_children_init(node_t *f, gpointer sub) -{ - gboolean emit; - gint event; - - FH_W ("%s %s [0x%p]\n", __func__, NODE_NAME(f), f); - -#ifdef GIO_COMPILATION - emit = FALSE; - event = G_FILE_MONITOR_EVENT_CREATED; -#else - emit = TRUE; - event = GAMIN_EVENT_EXISTS; -#endif - - if (!NODE_HAS_FLAG(f, NODE_FLAG_SNAPSHOT_UPDATED)) { - /* TODO snapshot should also compare to the sub created timestamp. */ - /* GIO initially doesn't emit created/existed events. */ - node_create_children_snapshot(f, event, emit); - } else { - GHashTableIter iter; - gpointer value; - - g_hash_table_iter_init (&iter, f->children); - while (g_hash_table_iter_next (&iter, NULL, &value)) { - node_t *child = (node_t *)value; - -#ifdef GIO_COMPILATION - /* GIO initially doesn't emit created/existed events. */ - /* g_file_monitor_emit_event(G_FILE_MONITOR(sub), child->gfile, NULL, event); */ -#else - gam_server_emit_one_event(NODE_NAME(child), gam_subscription_is_dir(sub), event, sub, 1); -#endif - } - } -} - -/** - * fen_add - * - * Won't hold a ref, we have a timout callback to clean unused node_t. - * If there is no value for a key, add it and return it; else return the old - * one. - */ -void -fen_add (const gchar *filename, gpointer sub, gboolean is_mondir) -{ - node_t* f; - - g_assert (filename); - g_assert (sub); - - G_LOCK (fen_lock); - f = node_find(NULL, filename, TRUE); - FH_W ("%s 0x%p sub[0x%p] %s\n", __func__, f, sub, filename); - g_assert (f); - - /* Update timestamp, the events in global queue will compare itself to this - * timestamp to decide if be emitted. TODO, timestamp should be per sub. - */ - if (!NODE_IS_ACTIVE(f)) { - g_get_current_time(&f->atv); - } - - if (is_mondir) { - f->dir_subs = g_list_prepend(f->dir_subs, sub); - } else { - f->subs = g_list_prepend(f->subs, sub); - } - - if (NODE_HAS_STATE(f, NODE_STATE_ASSOCIATED) || - (node_lstat(f) == 0 && port_add(f) == 0)) { -#ifndef GIO_COMPILATION - gam_server_emit_one_event (NODE_NAME(f), - gam_subscription_is_dir (sub), GAMIN_EVENT_EXISTS, sub, 1); -#endif - if (is_mondir) { - scan_children_init (f, sub); - } - } else { -#ifndef GIO_COMPILATION - gam_server_emit_one_event (NODE_NAME(f), - gam_subscription_is_dir (sub), GAMIN_EVENT_DELETED, sub, 1); -#endif - node_adjust_deleted (f); - } -#ifndef GIO_COMPILATION - gam_server_emit_one_event (NODE_NAME(f), - gam_subscription_is_dir (sub), GAMIN_EVENT_ENDEXISTS, sub, 1); -#endif - G_UNLOCK (fen_lock); -} - -void -fen_remove (const gchar *filename, gpointer sub, gboolean is_mondir) -{ - node_t* f; - - g_assert (filename); - g_assert (sub); - - G_LOCK (fen_lock); - f = node_find(NULL, filename, FALSE); - FH_W ("%s 0x%p sub[0x%p] %s\n", __func__, f, sub, filename); - - if (f) { - if (is_mondir) { - f->dir_subs = g_list_remove(f->dir_subs, sub); - } else { - f->subs = g_list_remove(f->subs, sub); - } - - if (!NODE_IS_ACTIVE(f)) { - node_try_delete (f); - } - } - G_UNLOCK (fen_lock); -} - -/** - * fen_init: - * - * FEN subsystem initializing. - */ -gboolean -fen_init () -{ - static gboolean initialized = FALSE; - static gboolean result = FALSE; - - G_LOCK (fen_lock); - if (initialized) { - G_UNLOCK (fen_lock); - return result; - } - - result = node_class_init(); - - if (!result) { - G_UNLOCK (fen_lock); - return result; - } - - initialized = TRUE; - - G_UNLOCK (fen_lock); - return result; -} diff --git a/gio/fen/fen-helper.h b/gio/fen/fen-helper.h deleted file mode 100644 index 85a980a..0000000 --- a/gio/fen/fen-helper.h +++ /dev/null @@ -1,31 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim:set expandtab ts=4 shiftwidth=4: */ -/* - * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights - * reserved. - * - * 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, see . - * - * Authors: Lin Ma - */ - -#ifndef _FEN_HELPER_H_ -#define _FEN_HELPER_H_ - -void fen_add (const gchar *filename, gpointer sub, gboolean is_mondir); -void fen_remove (const gchar *filename, gpointer sub, gboolean is_mondir); - -gboolean fen_init (); - -#endif /* _FEN_HELPER_H_ */ diff --git a/gio/fen/fen-kernel.c b/gio/fen/fen-kernel.c deleted file mode 100644 index 3619211..0000000 --- a/gio/fen/fen-kernel.c +++ /dev/null @@ -1,550 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim:set expandtab ts=4 shiftwidth=4: */ -/* - * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights - * reserved. - * - * 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, see . - * - * Authors: Lin Ma - */ - -#include "config.h" -#include -#include -#include -#include -#include -#include -#include "fen-kernel.h" -#include "fen-dump.h" - -#ifdef GIO_COMPILATION -#define FK_W if (FALSE) g_debug -#else -#include "gam_error.h" -#define FK_W(...) GAM_DEBUG(DEBUG_INFO, __VA_ARGS__) -#endif - -G_LOCK_DEFINE (fen_lock); - -static ulong max_port_events = 512; -static GList *pn_visible_list; /* the queue of ports which don't have the max objs */ -static GQueue *g_eventq = NULL; -static timespec_t zero_wait; -static void (*user_process_events_cb) (gpointer, node_event_t*); -static port_event_t *pevents = NULL; -static gint PE_ALLOC = 2048; -static GHashTable *renamed_hash = NULL; /* */ - -typedef struct _PSource { - GSource source; /* Inherit from GSource, must be the first. */ - GPollFD gfd; - gboolean pending; - uint_t event_growing_factor; - uint_t pending_events; -} PSource; - -#define PGPFD(s) (&((PSource *)(s))->gfd) -#define SLEEP_BASE_TIME 10 /* in milliseconds */ -#define EXPECT_INC_EVENTS(pn) (1 << (pn->event_growing_factor)) - -#define RENAME_EVENTS_INTERVAL 500 /* in milliseconds */ -#define PROCESS_PORT_EVENTS_TIME 1000 /* in milliseconds */ -guint process_port_event_id = 0; - -static gchar* _event_strings(int event); -static const gchar* _event_string (int event); -static GSource *psource_new(); - -static gboolean port_prepare(GSource *source, gint *timeout_); -static gboolean port_check(GSource *source); -static gboolean port_dispatch(GSource *source, GSourceFunc callback, gpointer user_data); -static GSourceFuncs fen_source_func = { - port_prepare, - port_check, - port_dispatch, - NULL -}; - -static gboolean -port_prepare(GSource *source, gint *timeout_) -{ - return FALSE; -} - -static gboolean -port_check(GSource *source) -{ - PSource *pn = (PSource *)source; - uint_t nget; - - if (pn->pending) { - pn->pending = FALSE; - g_source_add_poll(source, PGPFD(source)); - g_source_unref(source); - return FALSE; - } - - if (!(PGPFD(pn)->revents & G_IO_IN)) - return FALSE; - - if (port_getn(PGPFD(source)->fd, NULL, 0, &nget, 0) == 0) { - if (nget - pn->pending_events > EXPECT_INC_EVENTS(pn)) { - /* Sleep for a while. */ - pn->pending_events = nget; - pn->event_growing_factor ++; - - pn->pending = TRUE; - g_source_ref(source); - g_source_remove_poll(source, PGPFD(source)); - g_timeout_add(SLEEP_BASE_TIME, - (GSourceFunc)port_check, - (gpointer)pn); - return FALSE; - } - } - - pn->pending_events = 0; - pn->event_growing_factor = 0; - - return TRUE; -} - -static gboolean -port_dispatch(GSource *source, GSourceFunc callback, gpointer user_data) -{ - node_t *f; - uint_t nget = 0; - uint_t total = 0; - - FK_W ("%s 0x%p fd %d\n", __func__, source, PGPFD(source)->fd); - - G_LOCK (fen_lock); - do { - nget = 1; - if (port_getn(PGPFD(source)->fd, pevents, PE_ALLOC, &nget, &zero_wait) == 0) { - int i; - for (i = 0; i < nget; i++) { - f = (node_t *)pevents[i].portev_user; - - if (pevents[i].portev_source == PORT_SOURCE_FILE) { - - NODE_CLE_STATE(f, NODE_STATE_ASSOCIATED); - NODE_SET_STATE(f, NODE_STATE_HAS_EVENTS); - - if (HAS_NO_EXCEPTION_EVENTS(pevents[i].portev_events)) { - /* If the events do not show it's deleted, update - * file timestamp to avoid missing events next time. - */ - if (node_lstat(f) != 0 /* || port_add(f) != 0 */) { - /* Included deleted event. */ - pevents[i].portev_events |= FILE_DELETE; - } - } - - /* Queue it and waiting for processing. */ - g_queue_push_tail(g_eventq, - node_event_new(pevents[i].portev_events, (gpointer)f)); - - } else { - FK_W ("[kernel] unknown portev_source %d\n", pevents[i].portev_source); - } - } - - total += nget; - - } else { - FK_W ("[kernel] port_getn %s\n", g_strerror (errno)); - break; - } - } while (nget == PE_ALLOC); - - G_UNLOCK (fen_lock); - - if (total > 0 && callback) { - FK_W ("[kernel] get total %ld events\n", total); - return callback (user_data); - } - return TRUE; -} - -static gboolean -process_renamed_hash_cb(gpointer key, gpointer value, gpointer user_data) -{ - node_event_t *ev = value; - -#if 0 - node_add_event(ev->user_data, ev); -#else - user_process_events_cb(ev->user_data, ev); -#endif - /* Always delete self from hash. */ - return TRUE; -} - -static gboolean -port_events_process_cb(gpointer user_data) -{ - node_event_t *ev; - - G_LOCK (fen_lock); - - /* Processing g_eventq */ - while ((ev = (node_event_t*)g_queue_pop_head (g_eventq)) != NULL) { - - /* FK_W ("[%s] 0x%p %s\n", __func__, ev, _event_string (ev->e)); */ - - { - gchar *log = _event_strings(ev->e); - FK_W ("%s %s %s\n", __func__, NODE_NAME(ev->user_data), log); - g_free(log); - } - -#ifdef GIO_COMPILATION - /* Use the parent node as a hash, because only the dir_subs in the - * parent node should receive MOVE event. - */ - if (NODE_PARENT(ev->user_data)) { - if (ev->e == FILE_RENAME_TO) { - g_hash_table_insert(renamed_hash, NODE_PARENT(ev->user_data), ev); - g_time_val_add(&ev->rename_tv, RENAME_EVENTS_INTERVAL); - continue; - } - if (ev->e == FILE_RENAME_FROM) { - node_event_t *pair_ev; - - pair_ev = g_hash_table_lookup(renamed_hash, NODE_PARENT(ev->user_data)); - if (pair_ev && node_timeval_lt(&ev->ctv, &pair_ev->rename_tv)) { - g_hash_table_remove(renamed_hash, NODE_PARENT(ev->user_data)); - pair_ev->pair_data = ev->user_data; - /* Free ev, exchange pair_ev and ev. */ - node_event_delete(ev); - ev = pair_ev; - } - } - } -#endif - -#if 0 - node_add_event(ev->user_data, ev); -#else - user_process_events_cb(ev->user_data, ev); -#endif - } - - /* Processing the events in renamed_hash. TODO we should delay it and wait - * for more possible pair. - */ - g_hash_table_foreach_remove(renamed_hash, process_renamed_hash_cb, NULL); - - G_UNLOCK (fen_lock); - - process_port_event_id = 0; - return FALSE; -} - -static gboolean -port_events_read_cb(gpointer user_data) -{ - - if (process_port_event_id == 0) { - process_port_event_id = g_timeout_add(PROCESS_PORT_EVENTS_TIME, - port_events_process_cb, - NULL); - } - - return TRUE; -} - -/* - * malloc PSource and port_create, start thread at pnode_ref. - * if psource_new succeeded, the PSource will never - * be freed. So PSource can be freed only in psource_new. - * Note pnode_monitor_remove_all can also free PSource, but currently no one - * invork it. - */ -static GSource* -psource_new() -{ - GSource *source = NULL; - int fd; - - if ((fd = port_create()) >= 0) { - source = g_source_new(&fen_source_func, sizeof(PSource)); - PGPFD(source)->fd = fd; - PGPFD(source)->events = G_IO_IN | G_IO_HUP | G_IO_ERR; - g_source_set_callback(source, port_events_read_cb, NULL, NULL); - g_source_attach(source, NULL); - g_source_unref(source); - g_source_add_poll(source, PGPFD(source)); - - FK_W ("%s 0x%p fd %d\n", __func__, source, PGPFD(source)->fd); - } else { - FK_W ("PORT_CREATE %s\n", g_strerror(errno)); - g_return_val_if_reached(NULL); - } - - return source; -} - -/** - * port_add: - * - * Unsafe, need lock fen_lock. - * port_add will associate a GSource to @f->source - */ -gint -port_add(node_t *f) -{ - GSource *source = f->source; - - FK_W ("%s [0x%p] %s\n", __func__, f, NODE_NAME(f)); - - g_assert(f); - g_assert(NODE_HAS_FLAG(f, NODE_FLAG_STAT_UPDATED)); - - /* if (!NODE_HAS_FLAG(f, NODE_FLAG_STAT_DONE)) { */ - /* if (NODE_STAT(f) != 0) { */ - /* return errno; */ - /* } */ - /* } */ - - /* Try re-use f->pn. f->pn may be used by other request, e.g. f is deleted - * for a long time. So if pn is full, we try to open a new one. - */ - if (!source) { -start_over: - /* Try the next visible source. */ - if (pn_visible_list) { - source = (GSource *)pn_visible_list->data; - } else { - if ((source = psource_new()) != NULL) { - g_assert (g_list_find (pn_visible_list, source) == NULL); - pn_visible_list = g_list_prepend (pn_visible_list, source); - } - } - } - - if (port_associate(PGPFD(source)->fd, PORT_SOURCE_FILE, (uintptr_t)FILE_OBJECT(f), - CONCERNED_EVENTS, - (void *)f) == 0) { - f->source = source; - NODE_SET_STATE(f, NODE_STATE_ASSOCIATED); - NODE_CLE_FLAG(f, NODE_FLAG_STAT_UPDATED); - FK_W ("PORT_ASSOCIATE 0x%p OK\n", f); - return 0; - } else if (errno == EAGAIN) { - /* Full, remove it. */ - pn_visible_list = g_list_remove (pn_visible_list, source); - /* Re-add to port */ - goto start_over; - - } else if (errno == ENOENT) { - /* File is not exist */ - } else if (errno == ENOTSUP) { - /* FS is not supported. Currently we think it no longer make sense to - * monitor it, so clean the stat info and return 0 to ignore this - * node. If there are requirement, we can consider to add polling - * method. - */ - NODE_CLE_FLAG(f, NODE_FLAG_STAT_UPDATED); - return 0; - } else { - FK_W ("PORT_ASSOCIATE 0x%p %s\n", f, g_strerror (errno)); - } - - /* No matter if associated successfully, stat info is out-of-date, so clean it. */ - NODE_CLE_FLAG(f, NODE_FLAG_STAT_UPDATED); - return errno; -} - -/** - * port_remove: - * - * < private > - * Unsafe, need lock fen_lock. - */ -void -port_remove (node_t *f) -{ - /* g_assert(f->source); */ - - if (NODE_HAS_STATE(f, NODE_STATE_ASSOCIATED)) { - /* Mark unregisted. */ - if (port_dissociate(PGPFD(f->source)->fd, PORT_SOURCE_FILE, (uintptr_t)FILE_OBJECT(f)) == 0) { - /* - * Note, we can run foode_delete if dissociating is failed, - * because there may be some pending events (mostly like - * FILE_DELETE) in the port_get. If we delete the foode - * the fnode may be deleted, then port_get will run on an invalid - * address. - */ - NODE_CLE_STATE(f, NODE_STATE_ASSOCIATED); - FK_W ("PORT_DISSOCIATE 0x%p OK\n", f); - } else if (errno == ENOENT) { - /* The file has been removed from port, after port_get or before - * port_get but DELETED event has been generated. - * Ignored. */ - } else { - FK_W ("PORT_DISSOCIATE 0x%p %s\n", f, g_strerror (errno)); - g_return_if_reached(); - } - } -} - -/* - * Get Solaris resouce values. - * - */ - -extern gboolean -port_class_init (void (*user_process_events_callback) (gpointer, node_event_t*)) -{ - rctlblk_t *rblk; - - if ((rblk = malloc (rctlblk_size ())) == NULL) { - FK_W ("[kernel] rblk malloc %s\n", g_strerror (errno)); - return FALSE; - } - if (getrctl ("process.max-port-events", NULL, rblk, RCTL_FIRST) == -1) { - FK_W ("[kernel] getrctl %s\n", g_strerror (errno)); - free (rblk); - return FALSE; - } else { - max_port_events = rctlblk_get_value(rblk); - FK_W ("max_port_events = %u\n", max_port_events); - free (rblk); - } - renamed_hash = g_hash_table_new_full(g_direct_hash, g_direct_equal, - NULL, NULL); - if (renamed_hash == NULL) { - FK_W ("[kernel] FEN global renamed queue initializing faild\n"); - return FALSE; - } - if ((g_eventq = g_queue_new ()) == NULL) { - FK_W ("[kernel] FEN global event queue initializing faild\n"); - return FALSE; - } - if (user_process_events_callback == NULL) { - FK_W ("[kernel] FEN global no user_process_events_callback\n"); - return FALSE; - } - user_process_events_cb = user_process_events_callback; - memset (&zero_wait, 0, sizeof (timespec_t)); - - pevents = g_malloc(PE_ALLOC * sizeof(port_event_t)); - if (pevents == NULL) { - FK_W ("[kernel] FEN global alloc pevents failed\n"); - return FALSE; - } - - return TRUE; -} - -static gchar* -printevent (const char *pname, int event, const char *tag) -{ - static gchar *event_string = NULL; - GString *str; - - g_free(event_string); - - str = g_string_new (""); - g_string_printf (str, "[%s] [%-20s]", tag, pname); - if (event & FILE_ACCESS) { - str = g_string_append (str, " ACCESS"); - } - if (event & FILE_MODIFIED) { - str = g_string_append (str, " MODIFIED"); - } - if (event & FILE_ATTRIB) { - str = g_string_append (str, " ATTRIB"); - } - if (event & FILE_DELETE) { - str = g_string_append (str, " DELETE"); - } - if (event & FILE_RENAME_TO) { - str = g_string_append (str, " RENAME_TO"); - } - if (event & FILE_RENAME_FROM) { - str = g_string_append (str, " RENAME_FROM"); - } - if (event & UNMOUNTED) { - str = g_string_append (str, " UNMOUNTED"); - } - if (event & MOUNTEDOVER) { - str = g_string_append (str, " MOUNTEDOVER"); - } - event_string = str->str; - g_string_free (str, FALSE); - return event_string; -} - -static gchar * -_event_strings(int event) -{ - GString *str = g_string_sized_new(80); - - if (event & FILE_DELETE) - g_string_append(str, " FILE_DELETE"); - - if (event & FILE_RENAME_FROM) - g_string_append(str, " FILE_RENAME_FROM"); - - if (event & FILE_MODIFIED) - g_string_append(str, " FILE_MODIFIED"); - - if (event & FILE_RENAME_TO) - g_string_append(str, " FILE_RENAME_TO"); - - if (event & MOUNTEDOVER) - g_string_append(str, " MOUNTEDOVER"); - - if (event & FILE_ATTRIB) - g_string_append(str, " FILE_ATTRIB"); - - if (event & UNMOUNTED) - g_string_append(str, " UNMOUNTED"); - - if (event & FILE_ACCESS) - g_string_append(str, " FILE_ACCESS"); - - return g_string_free(str, FALSE); -} - -static const gchar * -_event_string (int event) -{ - switch (event) { - case FILE_DELETE: - return "FILE_DELETE"; - case FILE_RENAME_FROM: - return "FILE_RENAME_FROM"; - case FILE_MODIFIED: - return "FILE_MODIFIED"; - case FILE_RENAME_TO: - return "FILE_RENAME_TO"; - case MOUNTEDOVER: - return "MOUNTEDOVER"; - case FILE_ATTRIB: - return "FILE_ATTRIB"; - case UNMOUNTED: - return "UNMOUNTED"; - case FILE_ACCESS: - return "FILE_ACCESS"; - default: - return "EVENT_UNKNOWN"; - } -} diff --git a/gio/fen/fen-kernel.h b/gio/fen/fen-kernel.h deleted file mode 100644 index 5a7eec0..0000000 --- a/gio/fen/fen-kernel.h +++ /dev/null @@ -1,41 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim:set expandtab ts=4 shiftwidth=4: */ -/* - * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights - * reserved. - * - * 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, see . - * - * Authors: Lin Ma - */ - -#include -#include - -#include "fen-node.h" - -#ifndef _FEN_KERNEL_H_ -#define _FEN_KERNEL_H_ - -#define CONCERNED_EVENTS (FILE_MODIFIED | FILE_ATTRIB | FILE_NOFOLLOW) -#define EXCEPTION_EVENTS (FILE_DELETE | FILE_RENAME_FROM) -#define HAS_EXCEPTION_EVENTS(e) ((e & EXCEPTION_EVENTS) != 0) -#define HAS_NO_EXCEPTION_EVENTS(e) ((e & EXCEPTION_EVENTS) == 0) - -gint port_add (node_t* f); -void port_remove (node_t *f); - -gboolean port_class_init (); - -#endif /* _FEN_KERNEL_H_ */ diff --git a/gio/fen/fen-node.c b/gio/fen/fen-node.c deleted file mode 100644 index c26ff80..0000000 --- a/gio/fen/fen-node.c +++ /dev/null @@ -1,638 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim:set expandtab ts=4 shiftwidth=4: */ -/* - * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights - * reserved. - * - * 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, see . - * - * Authors: Lin Ma - */ - -#include "config.h" -#include -#include -#include -#include -#include "fen-kernel.h" -#include "fen-node.h" -#include "fen-dump.h" - -#ifdef GIO_COMPILATION -#include -#else -#include "gam_event.h" -#include "gam_server.h" -#include "gam_protocol.h" -#endif - -#ifdef GIO_COMPILATION -#define FN_W if (FALSE) g_debug -#else -#include "gam_error.h" -#define FN_W(...) GAM_DEBUG(DEBUG_INFO, __VA_ARGS__) -#endif - -G_LOCK_EXTERN (fen_lock); - -/* Must continue monitoring if: - * 1) I'm subscribed, - * 2) The subscribed children (one of the children has subs) are missing, - * 3) my parent is subscribed (monitoring directory). - */ -#define NODE_NEED_MONITOR(f) \ - (NODE_IS_ACTIVE(f) || node_children_num(f) > 0 || NODE_IS_REQUIRED_BY_PARENT(f)) - -static int concern_events[] = { - FILE_DELETE, - FILE_RENAME_FROM, - UNMOUNTED, - MOUNTEDOVER, -#ifdef GIO_COMPILATION - FILE_MODIFIED, - FILE_ATTRIB, -#else - FILE_MODIFIED | FILE_ATTRIB, -#endif - FILE_RENAME_TO, -}; - -node_t *ROOT = NULL; - -static void node_emit_one_event(node_t *f, GList *subs, node_t *other, int event); -static void node_emit_events(node_t *f, const node_event_t *ne); -static int node_event_translate(int event, gboolean pair); -static void node_add_event (node_t *f, node_event_t *ev); -static node_t* node_new (node_t* parent, const gchar* basename); -static void node_delete (node_t* parent); -static node_t* node_get_child (node_t *f, const gchar *basename); -static void children_add (node_t *p, node_t *f); -static void children_remove (node_t *p, node_t *f); -static gboolean children_remove_cb (gpointer key, gpointer value, gpointer user_data); -static guint node_children_num (node_t *f); - -gboolean -node_timeval_lt(const GTimeVal *val1, const GTimeVal *val2) -{ - if (val1->tv_sec < val2->tv_sec) - return TRUE; - - if (val1->tv_sec > val2->tv_sec) - return FALSE; - - /* val1->tv_sec == val2->tv_sec */ - if (val1->tv_usec < val2->tv_usec) - return TRUE; - - return FALSE; -} - -void -node_traverse (node_t* node, void(*traverse_cb)(node_t*, gpointer), gpointer user_data) -{ - GHashTableIter iter; - gpointer value; - - g_assert(traverse_cb); - if (node == NULL) { - node = ROOT; - } - - if (node) { - traverse_cb(node, user_data); - } - - g_hash_table_iter_init (&iter, node->children); - while (g_hash_table_iter_next (&iter, NULL, &value)) { - node_traverse((node_t *)value, traverse_cb, user_data); - } -} - -node_t* -node_find(node_t* node, const gchar* filename, gboolean create_on_missing) -{ - gchar* str; - gchar* token; - gchar* lasts; - node_t* parent; - node_t* child; - - g_assert (filename && filename[0] == '/'); - - if (node == NULL) { - node = ROOT; - } - - FN_W ("%s %s\n", __func__, filename); - - parent = child = node; - str = g_strdup (filename); - - for (token = strtok_r (str, G_DIR_SEPARATOR_S, &lasts); - token != NULL && child != NULL; - token = strtok_r (NULL, G_DIR_SEPARATOR_S, &lasts)) { - child = node_get_child(parent, token); - if (child) { - parent = child; - } else if (create_on_missing) { - child = node_new (parent, token); - if (child) { - children_add (parent, child); - parent = child; - continue; - } else { - FN_W ("%s create %s failed", __func__, token); - } - } else { - break; - } - } - - g_free (str); - return child; -} - -gint -node_lstat(node_t *f) -{ - struct stat buf; - - g_assert(!NODE_HAS_STATE(f, NODE_STATE_ASSOCIATED)); - - if (lstat(NODE_NAME(f), &buf) == 0) { - FN_W ("%s %s\n", __func__, NODE_NAME(f)); - FILE_OBJECT(f)->fo_atime = buf.st_atim; - FILE_OBJECT(f)->fo_mtime = buf.st_mtim; - FILE_OBJECT(f)->fo_ctime = buf.st_ctim; - NODE_SET_FLAG(f, NODE_FLAG_STAT_UPDATED | - (S_ISDIR (buf.st_mode) ? NODE_FLAG_DIR : NODE_FLAG_NONE)); - return 0; - } else { - FN_W ("%s(lstat) %s %s\n", __func__, NODE_NAME(f), g_strerror (errno)); - } - return errno; -} - -void -node_create_children_snapshot(node_t *f, gint created_event, gboolean emit) -{ - GDir *dir; - GError *err = NULL; - - FN_W ("%s %s [0x%p]\n", __func__, NODE_NAME(f), f); - - dir = g_dir_open (NODE_NAME(f), 0, &err); - if (dir) { - const char *basename; - node_t *child = NULL; - - while ((basename = g_dir_read_name (dir))) { - node_t* data; - GList *idx; - - child = node_get_child (f, basename); - if (child == NULL) { - gchar *filename; - - child = node_new (f, basename); - children_add (f, child); - } - - if (f->dir_subs) { - /* We need monitor the new children, or the existed child which - * is in the DELETED mode. - */ - if (!NODE_HAS_STATE(child, NODE_STATE_ASSOCIATED) && - node_lstat(child) == 0 && port_add(child) == 0) { - if (emit) { - /* Emit the whatever event for the new found file. */ - node_emit_one_event(child, child->dir_subs, NULL, created_event); - node_emit_one_event(child, child->subs, NULL, created_event); - node_emit_one_event(child, f->dir_subs, NULL, created_event); - node_emit_one_event(child, f->subs, NULL, created_event); - } - } - /* else ignore, because it may be deleted. */ - } - } - g_dir_close (dir); - - /* We have finished children snapshot. Any other new added subs should - * directory iterate the snapshot instead of scan directory again. - */ - NODE_SET_FLAG(f, NODE_FLAG_SNAPSHOT_UPDATED); - - } else { - FN_W (err->message); - g_error_free (err); - } -} - -/* - * If all active children nodes are ported, then cancel monitor the parent - * node. If we know how many children are created, then we can stop accordingly. - * - * Unsafe, need lock. - */ -static void -foreach_known_children_scan(gpointer key, gpointer value, gpointer user_data) -{ - node_t* f = (node_t*)value; - - FN_W ("%s 0x%p %s\n", __func__, f, NODE_NAME(f)); - - if (!NODE_HAS_STATE(f, NODE_STATE_ASSOCIATED)) { - if (node_lstat(f) == 0 && port_add(f) == 0) { - node_emit_one_event(f, f->dir_subs, NULL, FN_EVENT_CREATED); - node_emit_one_event(f, f->subs, NULL, FN_EVENT_CREATED); - if (NODE_PARENT(f)) { - node_emit_one_event(f, NODE_PARENT(f)->dir_subs, NULL, FN_EVENT_CREATED); - node_emit_one_event(f, NODE_PARENT(f)->subs, NULL, FN_EVENT_CREATED); - } - } - } -} - -gboolean -node_try_delete(node_t* node) -{ - g_assert (node); - - FN_W ("%s 0x%p %s\n", __func__, node, NODE_NAME(node)); - - /* Try clean children */ - if (node_children_num (node) > 0) { - g_hash_table_foreach_remove(node->children, children_remove_cb, NULL); - } - if (!NODE_NEED_MONITOR(node)) { - /* Clean some flags. */ - /* NODE_CLE_FLAG(node, NODE_FLAG_HAS_SNAPSHOT | NODE_FLAG_STAT_DONE); */ - - /* Now we handle the state. */ - if (NODE_HAS_STATE(node, NODE_STATE_ASSOCIATED)) { - port_remove(node); - } - /* Actually ignore the ROOT node. */ - if (node->state == 0 && NODE_PARENT(node)) { - children_remove(NODE_PARENT(node), node); - /* Do clean instead of returning TRUE. */ - node_delete (node); - } - /* else, we have events, clean event queue? */ - } - return FALSE; -} - -static node_t* -node_new (node_t* parent, const gchar* basename) -{ - node_t *f = NULL; - - g_assert (basename && basename[0]); - - if ((f = g_new0(node_t, 1)) != NULL) { - if (parent) { - NODE_NAME(f) = g_build_filename(NODE_NAME(parent), basename, NULL); - } else { - NODE_NAME(f) = g_strdup(G_DIR_SEPARATOR_S); - } - f->basename = g_strdup (basename); - /* f->children = g_hash_table_new_full (g_str_hash, g_str_equal, */ - /* NULL, (GDestroyNotify)node_delete); */ - f->children = g_hash_table_new_full (g_str_hash, g_str_equal, - NULL, NULL); -#ifdef GIO_COMPILATION - f->gfile = g_file_new_for_path (NODE_NAME(f)); -#endif - FN_W ("%s 0x%p %s\n", __func__, f, NODE_NAME(f)); - } - return f; -} - -static void -node_delete (node_t *f) -{ - FN_W ("%s 0x%p %s\n", __func__, f, NODE_NAME(f)); - /* Clean flags. */ - f->flag = 0; - g_assert(f->state == 0); - g_assert(!NODE_IS_ACTIVE(f)); - g_assert(g_hash_table_size (f->children) == 0); - g_assert(NODE_PARENT(f) == NULL); - g_hash_table_unref(f->children); -#ifdef GIO_COMPILATION - g_object_unref (f->gfile); -#endif - g_free(f->basename); - g_free(NODE_NAME(f)); - g_free (f); -} - -static void -children_add (node_t *p, node_t *f) -{ - FN_W ("%s %s %s\n", __func__, NODE_NAME(p), f->basename); - g_hash_table_insert (p->children, f->basename, f); - NODE_PARENT(f) = p; -} - -static void -children_remove (node_t *p, node_t *f) -{ - FN_W ("%s %s %s\n", __func__, NODE_NAME(p), f->basename); - g_hash_table_steal (p->children, f->basename); - NODE_PARENT(f) = NULL; -} - -static node_t * -node_get_child (node_t *f, const gchar *basename) -{ - if (f->children) { - return (node_t *) g_hash_table_lookup (f->children, (gpointer)basename); - } - return NULL; -} - -static guint -node_children_num (node_t *f) -{ - return g_hash_table_size (f->children); -} - -/* - * depth first delete recursively - */ -static gboolean -children_remove_cb (gpointer key, gpointer value, gpointer user_data) -{ - return node_try_delete ((node_t*)value); -} - -gboolean -node_class_init() -{ - ROOT = node_new (NULL, G_DIR_SEPARATOR_S); - if (ROOT == NULL) { - FN_W ("[node] Create ROOT node failed.\n"); - return FALSE; - } - - return port_class_init (node_add_event); -} - -/* - * Adjust self on failing to Port - */ -void -node_adjust_deleted(node_t* f) -{ - node_t *ancestor; - - FN_W ("%s %s\n", __func__, NODE_NAME(f)); - - for (ancestor = NODE_PARENT(f); - ancestor != NULL; - ancestor = NODE_PARENT(ancestor)) { - /* Stop if we find a node which been already associated or is existed - * and can be associated. - */ - if (NODE_HAS_STATE(ancestor, NODE_STATE_ASSOCIATED) || - (node_lstat(ancestor) == 0 && port_add(ancestor) == 0)) { - break; - } - } - - /* We assume we shouldn't reach here, because Root is always existed and - * associated. But given bugster#6955199, if PORT FS has problems on root, - * we may reach here. So just return ROOT and the whole GIO fen backend will - * fail. - */ - /* g_assert(ancestor != NULL); */ -} - - -static void -node_emit_events(node_t *f, const node_event_t *ne) -{ - gsize num = sizeof(concern_events)/sizeof(int); - gint i; - int translated_e; - node_t *p; - - if (node_timeval_lt(&f->atv, &ne->ctv)) { - int event = ne->e; - - /* Emit DELETED on the pair_data */ - if (ne->pair_data) { - node_t *from = ne->pair_data; - node_emit_one_event(from, from->dir_subs, NULL, node_event_translate(FILE_DELETE, FALSE)); - node_emit_one_event(from, from->subs, NULL, node_event_translate(FILE_DELETE, FALSE)); - } - - for (i = 0; i < num; i++) { - if (event & concern_events[i]) { - translated_e = node_event_translate(concern_events[i], FALSE); - /* Neither GIO or gamin cares about modified events on a - * directory. - */ -#ifdef GIO_COMPILATION - if ((concern_events[i] & FILE_MODIFIED) == 0) { - node_emit_one_event(f, f->dir_subs, NULL, translated_e); - } -#else - /* Gamin doesn't care about attrib changed events on a directory - * either. - */ - if ((concern_events[i] & (FILE_MODIFIED | FILE_ATTRIB)) == 0) { - node_emit_one_event(f, f->dir_subs, NULL, translated_e); - } -#endif - node_emit_one_event(f, f->subs, NULL, translated_e); - } - event &= ~concern_events[i]; - } - } - - p = NODE_PARENT(f); - if (p != NULL && node_timeval_lt(&p->atv, &ne->ctv)) { - int event = ne->e; - for (i = 0; i < num; i++) { - if (event & concern_events[i]) { - translated_e = node_event_translate(concern_events[i], ne->pair_data != NULL); - node_emit_one_event(f, p->dir_subs, ne->pair_data, translated_e); - node_emit_one_event(f, p->subs, ne->pair_data, translated_e); - } - event &= ~concern_events[i]; - } - } -} - -/* - * node_add_event: - * - */ -static void -node_add_event (node_t *f, node_event_t *ev) -{ - FN_W ("%s %d\n", __func__, ev->e); - - /* Clean the events flag early, because all received events need be - * processed in this function. - */ - NODE_CLE_STATE(f, NODE_STATE_HAS_EVENTS); - - /* - * Node the node has been created, so we can delete create event in - * optimizing. To reduce the statings, we add it to Port on discoving - * it then emit CREATED event. So we don't need to do anything here. - */ - if (NODE_NEED_MONITOR(f)) { - if (HAS_NO_EXCEPTION_EVENTS(ev->e)) { - if (NODE_HAS_STATE(f, NODE_STATE_ASSOCIATED) || port_add(f) == 0) { - if ((ev->e & FILE_MODIFIED) && NODE_HAS_FLAG(f, NODE_FLAG_DIR)) { - if (f->dir_subs) { - node_create_children_snapshot(f, FN_EVENT_CREATED, TRUE); - } else { - g_hash_table_foreach(f->children, foreach_known_children_scan, NULL); - } - } - } else { - /* Emit delete event */ - ev->e |= FILE_DELETE; - - node_adjust_deleted(f); - } - - } else { - node_adjust_deleted(f); - } - - /* Send events to clients. */ - node_emit_events (f, ev); - - } else { - /* Send events to clients. */ - node_emit_events (f, ev); - - node_try_delete(f); - } - - if (ev->pair_data) { - node_t *from = ev->pair_data; - g_assert(ev->e == FILE_RENAME_TO); - - if (NODE_NEED_MONITOR(from)) { - /* Clean the events flag, since it may block free this node. */ - NODE_CLE_STATE(from, NODE_STATE_HAS_EVENTS); - node_adjust_deleted(from); - } else { - node_try_delete(from); - } - } - - node_event_delete (ev); -} - -static void -node_emit_one_event(node_t *f, GList *subs, node_t *other, int event) -{ - GList* idx; - - FN_W ("%s %s %d\n", __func__, NODE_NAME(f), event); - -#ifdef GIO_COMPILATION - for (idx = subs; idx; idx = idx->next) { - g_file_monitor_emit_event(G_FILE_MONITOR(idx->data), f->gfile, - (other == NULL ? NULL : other->gfile), event); - } -#else - for (idx = subs; idx; idx = idx->next) { - gam_server_emit_one_event(NODE_NAME(f), gam_subscription_is_dir(idx->data), event, idx->data, 1); - } -#endif -} - -static int -node_event_translate(int event, gboolean pair) -{ -#ifdef GIO_COMPILATION - switch (event) { - case FILE_DELETE: - case FILE_RENAME_FROM: - return G_FILE_MONITOR_EVENT_DELETED; - case UNMOUNTED: - return G_FILE_MONITOR_EVENT_UNMOUNTED; - case FILE_ATTRIB: - return G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED; - case MOUNTEDOVER: - case FILE_MODIFIED: - return G_FILE_MONITOR_EVENT_CHANGED; - case FILE_RENAME_TO: - if (pair) { - return G_FILE_MONITOR_EVENT_MOVED; - } else { - return G_FILE_MONITOR_EVENT_CREATED; - } - default: - /* case FILE_ACCESS: */ - g_assert_not_reached (); - return -1; - } -#else - switch (event) { - case FILE_DELETE: - case FILE_RENAME_FROM: - return GAMIN_EVENT_DELETED; - case MOUNTEDOVER: - case UNMOUNTED: - return GAMIN_EVENT_CHANGED; - case FILE_RENAME_TO: - if (pair) { - return GAMIN_EVENT_MOVED; - } else { - return GAMIN_EVENT_CREATED; - } - default: - if (event & (FILE_ATTRIB | FILE_MODIFIED)) { - return GAMIN_EVENT_CHANGED; - } - /* case FILE_ACCESS: */ - g_assert_not_reached (); - return -1; - } -#endif -} - -node_event_t* -node_event_new (int event, gpointer user_data) -{ - node_event_t *ev; - - if ((ev = g_new (node_event_t, 1)) != NULL) { - g_assert (ev); - ev->e = event; - ev->user_data = user_data; - ev->pair_data = NULL; /* For renamed file. */ - /* Created timestamp */ - g_get_current_time(&ev->ctv); - ev->rename_tv = ev->ctv; - } - return ev; -} - -void -node_event_delete (node_event_t* ev) -{ - g_free (ev); -} diff --git a/gio/fen/fen-node.h b/gio/fen/fen-node.h deleted file mode 100644 index dd20a7e..0000000 --- a/gio/fen/fen-node.h +++ /dev/null @@ -1,102 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim:set expandtab ts=4 shiftwidth=4: */ -/* - * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights - * reserved. - * - * 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, see . - * - * Authors: Lin Ma - */ - -#include -#include - -#ifndef _FEN_NODE_H_ -#define _FEN_NODE_H_ - -#ifdef GIO_COMPILATION -#define FN_EVENT_CREATED G_FILE_MONITOR_EVENT_CREATED -#else -#define FN_EVENT_CREATED GAMIN_EVENT_CREATED -#endif - -#define NODE_STATE_NONE 0x00000000 -#define NODE_STATE_ASSOCIATED 0x00000001 /* This is a confilct to NODE_FLAG_STAT_DONE */ -#define NODE_STATE_HAS_EVENTS 0x00000002 - -#define NODE_FLAG_NONE 0x00000000 -#define NODE_FLAG_SNAPSHOT_UPDATED 0x00000001 -#define NODE_FLAG_DIR 0x00000002 -#define NODE_FLAG_STAT_UPDATED 0x00000004 - -#define NODE_CLE_STATE(f, st) (f->state &= ~(st)) -#define NODE_SET_STATE(f, st) (f->state = ((f->state & ~(st)) | (st))) -#define NODE_HAS_STATE(f, st) (f->state & (st)) - -#define NODE_CLE_FLAG(f, fl) (f->flag &= ~(fl)) -#define NODE_SET_FLAG(f, fl) (f->flag = ((f->flag & ~(fl)) | (fl))) -#define NODE_HAS_FLAG(f, fl) (f->flag & (fl)) - -typedef struct node node_t; -struct node -{ - file_obj_t fobj; /* Inherit from file_obj_t, must be the first. */ - GSource *source; - gchar *basename; - guint32 state; - guint32 flag; - GTimeVal atv; /* Timestamp for the first added sub. */ - - /* the parent and children of node */ - node_t *parent; - GHashTable *children; /* children in basename */ - - /* List of subscriptions monitoring this fdata/path */ - GList *subs; - GList *dir_subs; - -#ifdef GIO_COMPILATION - GFile* gfile; -#endif -}; - -#define FILE_OBJECT(f) ((file_obj_t *)(f)) -#define NODE_NAME(f) (FILE_OBJECT(f)->fo_name) -#define NODE_PARENT(f) (((node_t *)f)->parent) -#define NODE_IS_ACTIVE(f) (f->dir_subs || f->subs) -#define NODE_IS_REQUIRED_BY_PARENT(f) (NODE_PARENT(f) && NODE_PARENT(f)->dir_subs) - -gboolean node_timeval_lt(const GTimeVal *val1, const GTimeVal *val2); -gboolean node_try_delete(node_t* node); -void node_traverse(node_t* node, void(*traverse_cb)(node_t*, gpointer), gpointer user_data); -node_t* node_find(node_t* node, const gchar* filename, gboolean create_on_missing); -gint node_lstat(node_t *f); -void node_create_children_snapshot(node_t *f, gint created_event, gboolean emit); -void node_adjust_deleted(node_t *f); -gboolean node_class_init(); - -typedef struct node_event -{ - int e; - gpointer user_data; - gpointer pair_data; - GTimeVal ctv; /* Created timestamp */ - GTimeVal rename_tv; /* Possible rename timestamp */ -} node_event_t; - -node_event_t* node_event_new (int event, gpointer user_data); -void node_event_delete (node_event_t* ev); - -#endif /* _FEN_NODE_H_ */ diff --git a/gio/fen/gfendirectorymonitor.c b/gio/fen/gfendirectorymonitor.c deleted file mode 100644 index ffd80c6..0000000 --- a/gio/fen/gfendirectorymonitor.c +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim:set expandtab ts=4 shiftwidth=4: */ -/* GIO - GLib Input, Output and Streaming Library - * - * Copyright (C) 2006-2007 Red Hat, Inc. - * Copyright (C) 2007 Sebastian Dröge. - * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights - * reserved. - * - * 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, see . - * - * Authors: Alexander Larsson - * John McCutchan - * Sebastian Dröge - * Lin Ma - */ - -#include "config.h" - -#include "gfendirectorymonitor.h" -#include - -#include "fen-helper.h" - -struct _GFenDirectoryMonitor -{ - GLocalDirectoryMonitor parent_instance; - gboolean enabled; -}; - -static gboolean g_fen_directory_monitor_cancel (GFileMonitor* monitor); - -#define g_fen_directory_monitor_get_type _g_fen_directory_monitor_get_type -G_DEFINE_TYPE_WITH_CODE (GFenDirectoryMonitor, g_fen_directory_monitor, G_TYPE_LOCAL_DIRECTORY_MONITOR, - g_io_extension_point_implement (G_LOCAL_DIRECTORY_MONITOR_EXTENSION_POINT_NAME, - g_define_type_id, - "fen", - 20)) - -static void -g_fen_directory_monitor_finalize (GObject *object) -{ - GFenDirectoryMonitor *self = G_FEN_DIRECTORY_MONITOR (object); - - if (self->enabled) { - fen_remove (G_LOCAL_DIRECTORY_MONITOR (self)->dirname, self, TRUE); - self->enabled = FALSE; - } - - if (G_OBJECT_CLASS (g_fen_directory_monitor_parent_class)->finalize) - (*G_OBJECT_CLASS (g_fen_directory_monitor_parent_class)->finalize) (object); -} - -static GObject * -g_fen_directory_monitor_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam *construct_properties) -{ - GObject *obj; - GFenDirectoryMonitorClass *klass; - GObjectClass *parent_class; - GFenDirectoryMonitor *self; - const gchar *dirname = NULL; - - klass = G_FEN_DIRECTORY_MONITOR_CLASS (g_type_class_peek (G_TYPE_FEN_DIRECTORY_MONITOR)); - parent_class = g_fen_directory_monitor_parent_class; - obj = parent_class->constructor (type, - n_construct_properties, - construct_properties); - - self = G_FEN_DIRECTORY_MONITOR (obj); - - dirname = G_LOCAL_DIRECTORY_MONITOR (self)->dirname; - g_assert (dirname != NULL); - - /* Will never fail as is_supported() should be called before instanciating - * anyway */ - if (!fen_init ()) - g_assert_not_reached (); - - /* FIXME: what to do about errors here? we can't return NULL or another - * kind of error and an assertion is probably too hard */ - fen_add (dirname, self, TRUE); - self->enabled = TRUE; - - return obj; -} - -static gboolean -g_fen_directory_monitor_is_supported (void) -{ - return fen_init (); -} - -static void -g_fen_directory_monitor_class_init (GFenDirectoryMonitorClass* klass) -{ - GObjectClass* gobject_class = G_OBJECT_CLASS (klass); - GFileMonitorClass *directory_monitor_class = G_FILE_MONITOR_CLASS (klass); - GLocalDirectoryMonitorClass *local_directory_monitor_class = G_LOCAL_DIRECTORY_MONITOR_CLASS (klass); - - gobject_class->finalize = g_fen_directory_monitor_finalize; - gobject_class->constructor = g_fen_directory_monitor_constructor; - directory_monitor_class->cancel = g_fen_directory_monitor_cancel; - - local_directory_monitor_class->mount_notify = TRUE; - local_directory_monitor_class->is_supported = g_fen_directory_monitor_is_supported; -} - -static void -g_fen_directory_monitor_init (GFenDirectoryMonitor* monitor) -{ -} - -static gboolean -g_fen_directory_monitor_cancel (GFileMonitor* monitor) -{ - GFenDirectoryMonitor *self = G_FEN_DIRECTORY_MONITOR (monitor); - - if (self->enabled) { - fen_remove (G_LOCAL_DIRECTORY_MONITOR (self)->dirname, self, TRUE); - self->enabled = FALSE; - } - - if (G_FILE_MONITOR_CLASS (g_fen_directory_monitor_parent_class)->cancel) - (*G_FILE_MONITOR_CLASS (g_fen_directory_monitor_parent_class)->cancel) (monitor); - - return TRUE; -} diff --git a/gio/fen/gfendirectorymonitor.h b/gio/fen/gfendirectorymonitor.h deleted file mode 100644 index 0bb7096..0000000 --- a/gio/fen/gfendirectorymonitor.h +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim:set expandtab ts=4 shiftwidth=4: */ -/* GIO - GLib Input, Output and Streaming Library - * - * Copyright (C) 2006-2007 Red Hat, Inc. - * Copyright (C) 2007 Sebastian Dröge. - * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights - * reserved. - * - * 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, see . - * - * Authors: Alexander Larsson - * John McCutchan - * Sebastian Dröge - * Lin Ma - */ - -#ifndef __G_FEN_DIRECTORY_MONITOR_H__ -#define __G_FEN_DIRECTORY_MONITOR_H__ - -#include -#include -#include -#include - -G_BEGIN_DECLS - -#define G_TYPE_FEN_DIRECTORY_MONITOR (_g_fen_directory_monitor_get_type ()) -#define G_FEN_DIRECTORY_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FEN_DIRECTORY_MONITOR, GFenDirectoryMonitor)) -#define G_FEN_DIRECTORY_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), G_TYPE_FEN_DIRECTORY_MONITOR, GFenDirectoryMonitorClass)) -#define G_IS_FEN_DIRECTORY_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FEN_DIRECTORY_MONITOR)) -#define G_IS_FEN_DIRECTORY_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FEN_DIRECTORY_MONITOR)) - -typedef struct _GFenDirectoryMonitor GFenDirectoryMonitor; -typedef struct _GFenDirectoryMonitorClass GFenDirectoryMonitorClass; - -struct _GFenDirectoryMonitorClass { - GLocalDirectoryMonitorClass parent_class; -}; - -GType _g_fen_directory_monitor_get_type (void) G_GNUC_CONST; - -G_END_DECLS - -#endif /* __G_FEN_DIRECTORY_MONITOR_H__ */ diff --git a/gio/fen/gfenfilemonitor.c b/gio/fen/gfenfilemonitor.c deleted file mode 100644 index 185555b..0000000 --- a/gio/fen/gfenfilemonitor.c +++ /dev/null @@ -1,140 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim:set expandtab ts=4 shiftwidth=4: */ -/* GIO - GLib Input, Output and Streaming Library - * - * Copyright (C) 2006-2007 Red Hat, Inc. - * Copyright (C) 2007 Sebastian Dröge. - * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights - * reserved. - * - * 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, see . - * - * Authors: Alexander Larsson - * John McCutchan - * Sebastian Dröge - * Lin Ma - */ - -#include "config.h" - -#include "gfenfilemonitor.h" -#include - -#include "fen-helper.h" - -struct _GFenFileMonitor -{ - GLocalFileMonitor parent_instance; - gboolean enabled; -}; - -static gboolean g_fen_file_monitor_cancel (GFileMonitor* monitor); - -#define g_fen_file_monitor_get_type _g_fen_file_monitor_get_type -G_DEFINE_TYPE_WITH_CODE (GFenFileMonitor, g_fen_file_monitor, G_TYPE_LOCAL_FILE_MONITOR, - g_io_extension_point_implement (G_LOCAL_FILE_MONITOR_EXTENSION_POINT_NAME, - g_define_type_id, - "fen", - 20)) - -static void -g_fen_file_monitor_finalize (GObject *object) -{ - GFenFileMonitor *self = G_FEN_FILE_MONITOR (object); - - if (self->enabled) { - fen_remove (G_LOCAL_FILE_MONITOR (self)->filename, self, FALSE); - self->enabled = FALSE; - } - - if (G_OBJECT_CLASS (g_fen_file_monitor_parent_class)->finalize) - (*G_OBJECT_CLASS (g_fen_file_monitor_parent_class)->finalize) (object); -} - -static GObject * -g_fen_file_monitor_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam *construct_properties) -{ - GObject *obj; - GFenFileMonitorClass *klass; - GObjectClass *parent_class; - GFenFileMonitor *self; - const gchar *filename = NULL; - - klass = G_FEN_FILE_MONITOR_CLASS (g_type_class_peek (G_TYPE_FEN_FILE_MONITOR)); - parent_class = g_fen_file_monitor_parent_class; - obj = parent_class->constructor (type, - n_construct_properties, - construct_properties); - - self = G_FEN_FILE_MONITOR (obj); - - filename = G_LOCAL_FILE_MONITOR (obj)->filename; - - g_assert (filename != NULL); - - /* Will never fail as is_supported() should be called before instanciating - * anyway */ - if (!fen_init ()) - g_assert_not_reached (); - - /* FIXME: what to do about errors here? we can't return NULL or another - * kind of error and an assertion is probably too hard */ - fen_add (filename, self, FALSE); - self->enabled = TRUE; - - return obj; -} - -static gboolean -g_fen_file_monitor_is_supported (void) -{ - return fen_init (); -} - -static void -g_fen_file_monitor_class_init (GFenFileMonitorClass* klass) -{ - GObjectClass* gobject_class = G_OBJECT_CLASS (klass); - GFileMonitorClass *file_monitor_class = G_FILE_MONITOR_CLASS (klass); - GLocalFileMonitorClass *local_file_monitor_class = G_LOCAL_FILE_MONITOR_CLASS (klass); - - gobject_class->finalize = g_fen_file_monitor_finalize; - gobject_class->constructor = g_fen_file_monitor_constructor; - file_monitor_class->cancel = g_fen_file_monitor_cancel; - - local_file_monitor_class->is_supported = g_fen_file_monitor_is_supported; -} - -static void -g_fen_file_monitor_init (GFenFileMonitor* monitor) -{ -} - -static gboolean -g_fen_file_monitor_cancel (GFileMonitor* monitor) -{ - GFenFileMonitor *self = G_FEN_FILE_MONITOR (monitor); - - if (self->enabled) { - fen_remove (G_LOCAL_FILE_MONITOR (self)->filename, self, FALSE); - self->enabled = FALSE; - } - - if (G_FILE_MONITOR_CLASS (g_fen_file_monitor_parent_class)->cancel) - (*G_FILE_MONITOR_CLASS (g_fen_file_monitor_parent_class)->cancel) (monitor); - - return TRUE; -} diff --git a/gio/fen/gfenfilemonitor.h b/gio/fen/gfenfilemonitor.h deleted file mode 100644 index d7b4e53..0000000 --- a/gio/fen/gfenfilemonitor.h +++ /dev/null @@ -1,57 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* vim:set expandtab ts=4 shiftwidth=4: */ -/* GIO - GLib Input, Output and Streaming Library - * - * Copyright (C) 2006-2007 Red Hat, Inc. - * Copyright (C) 2007 Sebastian Dröge. - * Copyright (c) 2008, 2010 Oracle and/or its affiliates, Inc. All rights - * reserved. - * - * 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, see . - * - * Authors: Alexander Larsson - * John McCutchan - * Sebastian Dröge - * Lin Ma - */ - -#ifndef __G_FEN_FILE_MONITOR_H__ -#define __G_FEN_FILE_MONITOR_H__ - -#include -#include -#include -#include -#include - -G_BEGIN_DECLS - -#define G_TYPE_FEN_FILE_MONITOR (_g_fen_file_monitor_get_type ()) -#define G_FEN_FILE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_FEN_FILE_MONITOR, GFenFileMonitor)) -#define G_FEN_FILE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), G_TYPE_FEN_FILE_MONITOR, GFenFileMonitorClass)) -#define G_IS_FEN_FILE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_FEN_FILE_MONITOR)) -#define G_IS_FEN_FILE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_FEN_FILE_MONITOR)) - -typedef struct _GFenFileMonitor GFenFileMonitor; -typedef struct _GFenFileMonitorClass GFenFileMonitorClass; - -struct _GFenFileMonitorClass { - GLocalFileMonitorClass parent_class; -}; - -GType _g_fen_file_monitor_get_type (void); - -G_END_DECLS - -#endif /* __G_FEN_FILE_MONITOR_H__ */ diff --git a/gio/gaction.c b/gio/gaction.c index a280256..f36f9ef 100644 --- a/gio/gaction.c +++ b/gio/gaction.c @@ -54,7 +54,7 @@ G_DEFINE_INTERFACE (GAction, g_action, G_TYPE_OBJECT) * In all cases, the implementing class is responsible for storing the * name of the action, the parameter type, the enabled state, the * optional state type and the state and emitting the appropriate - * signals when these change. The implementor responsible for filtering + * signals when these change. The implementor is responsible for filtering * calls to g_action_activate() and g_action_change_state() for type * safety and for the state being enabled. * diff --git a/gio/gactiongroup.c b/gio/gactiongroup.c index fcedb95..425a20a 100644 --- a/gio/gactiongroup.c +++ b/gio/gactiongroup.c @@ -343,7 +343,7 @@ g_action_group_default_init (GActionGroupInterface *iface) * it is no longer required. * * Returns: (transfer full): a %NULL-terminated array of the names of the - * actions in the groupb + * actions in the group * * Since: 2.28 **/ @@ -432,8 +432,7 @@ g_action_group_get_action_parameter_type (GActionGroup *action_group, * possible for an action to be removed and for a new action to be added * with the same name but a different state type. * - * Returns: (nullable) (transfer full): the state type, if the action - * is stateful + * Returns: (nullable): the state type, if the action is stateful * * Since: 2.28 **/ diff --git a/gio/gactiongroupexporter.c b/gio/gactiongroupexporter.c index 17a05fa..b68538c 100644 --- a/gio/gactiongroupexporter.c +++ b/gio/gactiongroupexporter.c @@ -208,6 +208,17 @@ g_action_group_exporter_dispatch_events (gpointer user_data) return FALSE; } +static void +g_action_group_exporter_flush_queue (GActionGroupExporter *exporter) +{ + if (exporter->pending_source) + { + g_source_destroy (exporter->pending_source); + g_action_group_exporter_dispatch_events (exporter); + g_assert (exporter->pending_source == NULL); + } +} + static guint g_action_group_exporter_get_events (GActionGroupExporter *exporter, const gchar *name) @@ -365,6 +376,8 @@ org_gtk_Actions_method_call (GDBusConnection *connection, GActionGroupExporter *exporter = user_data; GVariant *result = NULL; + g_action_group_exporter_flush_queue (exporter); + if (g_str_equal (method_name, "List")) { gchar **list; diff --git a/gio/gappinfo.c b/gio/gappinfo.c index 1b92a01..0bbb44d 100644 --- a/gio/gappinfo.c +++ b/gio/gappinfo.c @@ -837,7 +837,7 @@ g_app_launch_context_class_init (GAppLaunchContextClass *klass) * * Since: 2.36 */ - signals[LAUNCH_FAILED] = g_signal_new ("launch-failed", + signals[LAUNCH_FAILED] = g_signal_new (I_("launch-failed"), G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GAppLaunchContextClass, launch_failed), @@ -858,7 +858,7 @@ g_app_launch_context_class_init (GAppLaunchContextClass *klass) * * Since: 2.36 */ - signals[LAUNCHED] = g_signal_new ("launched", + signals[LAUNCHED] = g_signal_new (I_("launched"), G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GAppLaunchContextClass, launched), @@ -1102,7 +1102,7 @@ g_app_info_monitor_class_init (GAppInfoMonitorClass *class) * Signal emitted when the app info database for changes (ie: newly installed * or removed applications). **/ - g_app_info_monitor_changed_signal = g_signal_new ("changed", G_TYPE_APP_INFO_MONITOR, G_SIGNAL_RUN_FIRST, + g_app_info_monitor_changed_signal = g_signal_new (I_("changed"), G_TYPE_APP_INFO_MONITOR, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); object_class->finalize = g_app_info_monitor_finalize; diff --git a/gio/gapplication-tool.c b/gio/gapplication-tool.c index 9f6f8d1..35bdcc9 100644 --- a/gio/gapplication-tool.c +++ b/gio/gapplication-tool.c @@ -69,7 +69,7 @@ static const struct help_topic topics[] = { static const struct help_substvar substvars[] = { { N_("COMMAND"), N_("The command to print detailed help for") }, { N_("APPID"), N_("Application identifier in D-Bus format (eg: org.example.viewer)") }, - { N_("FILE"), N_("Optional relative or relative filenames, or URIs to open") }, + { N_("FILE"), N_("Optional relative or absolute filenames, or URIs to open") }, { N_("ACTION"), N_("The action name to invoke") }, { N_("PARAMETER"), N_("Optional parameter to the action invocation, in GVariant format") } }; diff --git a/gio/gapplication.c b/gio/gapplication.c index c72ff53..3151342 100644 --- a/gio/gapplication.c +++ b/gio/gapplication.c @@ -474,8 +474,10 @@ g_application_parse_command_line (GApplication *application, GError **error) { gboolean become_service = FALSE; + gchar *app_id = NULL; GVariantDict *dict = NULL; GOptionContext *context; + GOptionGroup *gapplication_group; /* Due to the memory management of GOptionGroup we can only parse * options once. That's because once you add a group to the @@ -487,6 +489,12 @@ g_application_parse_command_line (GApplication *application, context = g_option_context_new (NULL); + gapplication_group = g_option_group_new ("gapplication", + _("GApplication options"), _("Show GApplication options"), + NULL, NULL); + g_option_group_set_translation_domain (gapplication_group, GETTEXT_PACKAGE); + g_option_context_add_group (context, gapplication_group); + /* If the application has not registered local options and it has * G_APPLICATION_HANDLES_COMMAND_LINE then we have to assume that * their primary instance commandline handler may want to deal with @@ -525,20 +533,25 @@ g_application_parse_command_line (GApplication *application, */ if ((application->priv->flags & (G_APPLICATION_IS_SERVICE | G_APPLICATION_IS_LAUNCHER)) == 0) { - GOptionGroup *option_group; GOptionEntry entries[] = { { "gapplication-service", '\0', 0, G_OPTION_ARG_NONE, &become_service, N_("Enter GApplication service mode (use from D-Bus service files)") }, { NULL } }; - option_group = g_option_group_new ("gapplication", - _("GApplication options"), _("Show GApplication options"), - NULL, NULL); - g_option_group_set_translation_domain (option_group, GETTEXT_PACKAGE); - g_option_group_add_entries (option_group, entries); + g_option_group_add_entries (gapplication_group, entries); + } - g_option_context_add_group (context, option_group); + /* Allow overriding the ID if the application allows it */ + if (application->priv->flags & G_APPLICATION_CAN_OVERRIDE_APP_ID) + { + GOptionEntry entries[] = { + { "gapplication-app-id", '\0', 0, G_OPTION_ARG_STRING, &app_id, + N_("Override the application's ID") }, + { NULL } + }; + + g_option_group_add_entries (gapplication_group, entries); } /* Now we parse... */ @@ -549,6 +562,10 @@ g_application_parse_command_line (GApplication *application, if (become_service) application->priv->flags |= G_APPLICATION_IS_SERVICE; + /* Check for --gapplication-app-id */ + if (app_id) + g_application_set_application_id (application, app_id); + dict = g_variant_dict_new (NULL); if (application->priv->packed_options) { @@ -562,6 +579,7 @@ out: application->priv->options_parsed = TRUE; g_option_context_free (context); + g_free (app_id); return dict; } @@ -658,6 +676,17 @@ add_packed_option (GApplication *application, * consumed, they will no longer be visible to the default handling * (which treats them as filenames to be opened). * + * It is important to use the proper GVariant format when retrieving + * the options with g_variant_dict_lookup(): + * - for %G_OPTION_ARG_NONE, use b + * - for %G_OPTION_ARG_STRING, use &s + * - for %G_OPTION_ARG_INT, use i + * - for %G_OPTION_ARG_INT64, use x + * - for %G_OPTION_ARG_DOUBLE, use d + * - for %G_OPTION_ARG_FILENAME, use ^ay + * - for %G_OPTION_ARG_STRING_ARRAY, use &as + * - for %G_OPTION_ARG_FILENAME_ARRAY, use ^aay + * * Since: 2.40 */ void @@ -670,7 +699,10 @@ g_application_add_main_option_entries (GApplication *application, g_return_if_fail (entries != NULL); if (!application->priv->main_options) - application->priv->main_options = g_option_group_new (NULL, NULL, NULL, NULL, NULL); + { + application->priv->main_options = g_option_group_new (NULL, NULL, NULL, NULL, NULL); + g_option_group_set_translation_domain (application->priv->main_options, NULL); + } for (i = 0; entries[i].long_name; i++) { @@ -745,7 +777,7 @@ g_application_add_main_option (GApplication *application, /** * g_application_add_option_group: * @application: the #GApplication - * @group: a #GOptionGroup + * @group: (transfer full): a #GOptionGroup * * Adds a #GOptionGroup to the commandline handling of @application. * @@ -1276,7 +1308,7 @@ g_application_handle_local_options_accumulator (GSignalInvocationHint *ihint, value = g_value_get_int (handler_return); g_value_set_int (return_accu, value); - return value >= 0; + return value < 0; } static void @@ -1370,7 +1402,7 @@ g_application_class_init (GApplicationClass *class) * after registration. See g_application_register(). */ g_application_signals[SIGNAL_STARTUP] = - g_signal_new ("startup", G_TYPE_APPLICATION, G_SIGNAL_RUN_FIRST, + g_signal_new (I_("startup"), G_TYPE_APPLICATION, G_SIGNAL_RUN_FIRST, G_STRUCT_OFFSET (GApplicationClass, startup), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); @@ -1382,7 +1414,7 @@ g_application_class_init (GApplicationClass *class) * immediately after the main loop terminates. */ g_application_signals[SIGNAL_SHUTDOWN] = - g_signal_new ("shutdown", G_TYPE_APPLICATION, G_SIGNAL_RUN_LAST, + g_signal_new (I_("shutdown"), G_TYPE_APPLICATION, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GApplicationClass, shutdown), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); @@ -1394,7 +1426,7 @@ g_application_class_init (GApplicationClass *class) * activation occurs. See g_application_activate(). */ g_application_signals[SIGNAL_ACTIVATE] = - g_signal_new ("activate", G_TYPE_APPLICATION, G_SIGNAL_RUN_LAST, + g_signal_new (I_("activate"), G_TYPE_APPLICATION, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GApplicationClass, activate), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); @@ -1410,7 +1442,7 @@ g_application_class_init (GApplicationClass *class) * files to open. See g_application_open() for more information. */ g_application_signals[SIGNAL_OPEN] = - g_signal_new ("open", G_TYPE_APPLICATION, G_SIGNAL_RUN_LAST, + g_signal_new (I_("open"), G_TYPE_APPLICATION, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GApplicationClass, open), NULL, NULL, NULL, G_TYPE_NONE, 3, G_TYPE_POINTER, G_TYPE_INT, G_TYPE_STRING); @@ -1429,7 +1461,7 @@ g_application_class_init (GApplicationClass *class) * process. See g_application_command_line_set_exit_status(). */ g_application_signals[SIGNAL_COMMAND_LINE] = - g_signal_new ("command-line", G_TYPE_APPLICATION, G_SIGNAL_RUN_LAST, + g_signal_new (I_("command-line"), G_TYPE_APPLICATION, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GApplicationClass, command_line), g_signal_accumulator_first_wins, NULL, NULL, @@ -1454,8 +1486,8 @@ g_application_class_init (GApplicationClass *class) * * In the event that the application is marked * %G_APPLICATION_HANDLES_COMMAND_LINE the "normal processing" will - * send the @option dictionary to the primary instance where it can be - * read with g_application_command_line_get_options(). The signal + * send the @options dictionary to the primary instance where it can be + * read with g_application_command_line_get_options_dict(). The signal * handler can modify the dictionary before returning, and the * modified dictionary will be sent. * @@ -1490,7 +1522,7 @@ g_application_class_init (GApplicationClass *class) * Since: 2.40 **/ g_application_signals[SIGNAL_HANDLE_LOCAL_OPTIONS] = - g_signal_new ("handle-local-options", G_TYPE_APPLICATION, G_SIGNAL_RUN_LAST, + g_signal_new (I_("handle-local-options"), G_TYPE_APPLICATION, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GApplicationClass, handle_local_options), g_application_handle_local_options_accumulator, NULL, NULL, G_TYPE_INT, 1, G_TYPE_VARIANT_DICT); @@ -1753,7 +1785,12 @@ g_application_get_resource_base_path (GApplication *application) * * Changing the resource base path once the application is running is * not recommended. The point at which the resource path is consulted - * for forming paths for various purposes is unspecified. + * for forming paths for various purposes is unspecified. When writing + * a sub-class of #GApplication you should either set the + * #GApplication:resource-base-path property at construction time, or call + * this function during the instance initialization. Alternatively, you + * can call this function in the #GApplicationClass.startup virtual function, + * before chaining up to the parent implementation. * * Since: 2.42 */ @@ -2219,6 +2256,9 @@ g_application_open (GApplication *application, * This function sets the prgname (g_set_prgname()), if not already set, * to the basename of argv[0]. * + * Much like g_main_loop_run(), this function will acquire the main context + * for the duration that the application is running. + * * Since 2.40, applications that are not explicitly flagged as services * or launchers (ie: neither %G_APPLICATION_IS_SERVICE or * %G_APPLICATION_IS_LAUNCHER are given as flags) will check (from the @@ -2247,13 +2287,42 @@ g_application_run (GApplication *application, { gchar **arguments; int status; + GMainContext *context; + gboolean acquired_context; g_return_val_if_fail (G_IS_APPLICATION (application), 1); g_return_val_if_fail (argc == 0 || argv != NULL, 1); g_return_val_if_fail (!application->priv->must_quit_now, 1); #ifdef G_OS_WIN32 - arguments = g_win32_get_command_line (); + { + gint new_argc = 0; + + arguments = g_win32_get_command_line (); + + /* + * CommandLineToArgvW(), which is called by g_win32_get_command_line(), + * pulls in the whole command line that is used to call the program. This is + * fine in cases where the program is a .exe program, but in the cases where the + * program is a called via a script, such as PyGObject's gtk-demo.py, which is normally + * called using 'python gtk-demo.py' on Windows, the program name (argv[0]) + * returned by g_win32_get_command_line() will not be the argv[0] that ->local_command_line() + * would expect, causing the program to fail with "This application can not open files." + */ + new_argc = g_strv_length (arguments); + + if (new_argc > argc) + { + gint i; + + for (i = 0; i < new_argc - argc; i++) + g_free (arguments[i]); + + memmove (&arguments[0], + &arguments[new_argc - argc], + sizeof (arguments[0]) * (argc + 1)); + } + } #else { gint i; @@ -2274,6 +2343,10 @@ g_application_run (GApplication *application, g_free (prgname); } + context = g_main_context_default (); + acquired_context = g_main_context_acquire (context); + g_return_val_if_fail (acquired_context, 0); + if (!G_APPLICATION_GET_CLASS (application) ->local_command_line (application, &arguments, &status)) { @@ -2305,7 +2378,7 @@ g_application_run (GApplication *application, if (application->priv->must_quit_now) break; - g_main_context_iteration (NULL, TRUE); + g_main_context_iteration (context, TRUE); status = 0; } @@ -2320,14 +2393,20 @@ g_application_run (GApplication *application, } if (application->priv->impl) - g_application_impl_flush (application->priv->impl); + { + g_application_impl_flush (application->priv->impl); + g_application_impl_destroy (application->priv->impl); + application->priv->impl = NULL; + } g_settings_sync (); if (!application->priv->must_quit_now) - while (g_main_context_iteration (NULL, FALSE)) + while (g_main_context_iteration (context, FALSE)) ; + g_main_context_release (context); + return status; } @@ -2712,8 +2791,10 @@ g_application_withdraw_notification (GApplication *application, g_return_if_fail (G_IS_APPLICATION (application)); g_return_if_fail (id != NULL); - if (application->priv->notifications) - g_notification_backend_withdraw_notification (application->priv->notifications, id); + if (application->priv->notifications == NULL) + application->priv->notifications = g_notification_backend_new_default (application); + + g_notification_backend_withdraw_notification (application->priv->notifications, id); } /* Busy binding {{{1 */ diff --git a/gio/gasyncinitable.c b/gio/gasyncinitable.c index 259057a..6076fea 100644 --- a/gio/gasyncinitable.c +++ b/gio/gasyncinitable.c @@ -286,6 +286,7 @@ g_async_initable_real_init_finish (GAsyncInitable *initable, * even though g_async_initable_real_init_async doesn't generate * them any more. */ + G_GNUC_BEGIN_IGNORE_DEPRECATIONS if (G_IS_SIMPLE_ASYNC_RESULT (res)) { GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res); @@ -294,6 +295,7 @@ g_async_initable_real_init_finish (GAsyncInitable *initable, else return TRUE; } + G_GNUC_END_IGNORE_DEPRECATIONS g_return_val_if_fail (g_task_is_valid (res, initable), FALSE); @@ -379,6 +381,7 @@ g_async_initable_newv_async (GType object_type, g_async_initable_init_async (G_ASYNC_INITABLE (obj), io_priority, cancellable, callback, user_data); + g_object_unref (obj); /* Passed ownership to async call */ } /** diff --git a/gio/gasyncresult.c b/gio/gasyncresult.c index 0c18b0b..929dbe2 100644 --- a/gio/gasyncresult.c +++ b/gio/gasyncresult.c @@ -193,6 +193,7 @@ g_async_result_legacy_propagate_error (GAsyncResult *res, * deprecation warnings in the future.) */ + G_GNUC_BEGIN_IGNORE_DEPRECATIONS if (G_IS_SIMPLE_ASYNC_RESULT (res)) { return g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), @@ -200,6 +201,7 @@ g_async_result_legacy_propagate_error (GAsyncResult *res, } else return FALSE; + G_GNUC_END_IGNORE_DEPRECATIONS } /** diff --git a/gio/gcocoanotificationbackend.c b/gio/gcocoanotificationbackend.c new file mode 100644 index 0000000..8a78c99 --- /dev/null +++ b/gio/gcocoanotificationbackend.c @@ -0,0 +1,278 @@ +/* + * Copyright © 2015 Patrick Griffis + * + * 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, see . + * + * Authors: Patrick Griffis + */ + +#include "config.h" + +#import +#include "gnotificationbackend.h" +#include "gapplication.h" +#include "gaction.h" +#include "gactiongroup.h" +#include "giomodule-priv.h" +#include "gnotification-private.h" +#include "gthemedicon.h" +#include "gfileicon.h" +#include "gfile.h" + +#define G_TYPE_COCOA_NOTIFICATION_BACKEND (g_cocoa_notification_backend_get_type ()) +#define G_COCOA_NOTIFICATION_BACKEND(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_COCOA_NOTIFICATION_BACKEND, GCocoaNotificationBackend)) + +typedef struct _GCocoaNotificationBackend GCocoaNotificationBackend; +typedef GNotificationBackendClass GCocoaNotificationBackendClass; +struct _GCocoaNotificationBackend +{ + GNotificationBackend parent; +}; + +GType g_cocoa_notification_backend_get_type (void); + +G_DEFINE_TYPE_WITH_CODE (GCocoaNotificationBackend, g_cocoa_notification_backend, G_TYPE_NOTIFICATION_BACKEND, + _g_io_modules_ensure_extension_points_registered (); + g_io_extension_point_implement (G_NOTIFICATION_BACKEND_EXTENSION_POINT_NAME, g_define_type_id, "cocoa", 0)); + +static NSString * +nsstring_from_cstr (const char *cstr) +{ + if (!cstr) + return nil; + + return [[NSString alloc] initWithUTF8String:cstr]; +} + +static NSImage* +nsimage_from_gicon (GIcon *icon) +{ + if (G_IS_FILE_ICON (icon)) + { + NSImage *image = nil; + GFile *file; + char *path; + + file = g_file_icon_get_file (G_FILE_ICON (icon)); + path = g_file_get_path (file); + if (path) + { + NSString *str_path = nsstring_from_cstr (path); + image = [[NSImage alloc] initByReferencingFile:str_path]; + + [str_path release]; + g_free (path); + } + return image; + } + else + { + g_warning ("This icon type is not handled by this NotificationBackend"); + return nil; + } +} + +static void +activate_detailed_action (const char * action) +{ + char *name; + GVariant *target; + + if (!g_str_has_prefix (action, "app.")) + { + g_warning ("Notification action does not have \"app.\" prefix"); + return; + } + + if (g_action_parse_detailed_name (action, &name, &target, NULL)) + { + g_action_group_activate_action (G_ACTION_GROUP (g_application_get_default()), name + 4, target); + g_free (name); + if (target) + g_variant_unref (target); + } +} + +@interface GNotificationCenterDelegate : NSObject @end +@implementation GNotificationCenterDelegate + +-(void) userNotificationCenter:(NSUserNotificationCenter*) center + didActivateNotification:(NSUserNotification*) notification +{ + if ([notification activationType] == NSUserNotificationActivationTypeContentsClicked) + { + const char *action = [[notification userInfo][@"default"] UTF8String]; + if (action) + activate_detailed_action (action); + /* OSX Always activates the front window */ + } + else if ([notification activationType] == NSUserNotificationActivationTypeActionButtonClicked) + { + const char *action = [[notification userInfo][@"button0"] UTF8String]; + if (action) + activate_detailed_action (action); + } + + [center removeDeliveredNotification:notification]; +} + +@end + +static GNotificationCenterDelegate *cocoa_notification_delegate; + +static gboolean +g_cocoa_notification_backend_is_supported (void) +{ + NSBundle *bundle = [NSBundle mainBundle]; + + /* This is always actually supported, but without a bundle it does nothing */ + if (![bundle bundleIdentifier]) + return FALSE; + + return TRUE; +} + +static void +add_actions_to_notification (NSUserNotification *userNotification, + GNotification *notification) +{ + guint n_buttons = g_notification_get_n_buttons (notification); + char *action = NULL, *label = NULL; + GVariant *target = NULL; + NSMutableDictionary *user_info = nil; + + if (g_notification_get_default_action (notification, &action, &target)) + { + char *detailed_name = g_action_print_detailed_name (action, target); + NSString *action_name = nsstring_from_cstr (detailed_name); + user_info = [[NSMutableDictionary alloc] init]; + + user_info[@"default"] = action_name; + + [action_name release]; + g_free (detailed_name); + g_clear_pointer (&action, g_free); + g_clear_pointer (&target, g_variant_unref); + } + + if (n_buttons) + { + g_notification_get_button (notification, 0, &label, &action, &target); + if (label) + { + NSString *str_label = nsstring_from_cstr (label); + char *detailed_name = g_action_print_detailed_name (action, target); + NSString *action_name = nsstring_from_cstr (detailed_name); + + if (!user_info) + user_info = [[NSMutableDictionary alloc] init]; + + user_info[@"button0"] = action_name; + userNotification.actionButtonTitle = str_label; + + [str_label release]; + [action_name release]; + g_free (label); + g_free (action); + g_free (detailed_name); + g_clear_pointer (&target, g_variant_unref); + } + + if (n_buttons > 1) + g_warning ("Only a single button is currently supported by this NotificationBackend"); + } + + userNotification.userInfo = user_info; + [user_info release]; +} + +static void +g_cocoa_notification_backend_send_notification (GNotificationBackend *backend, + const gchar *cstr_id, + GNotification *notification) +{ + NSString *str_title = nil, *str_text = nil, *str_id = nil; + NSImage *content = nil; + const char *cstr; + GIcon *icon; + NSUserNotification *userNotification; + NSUserNotificationCenter *center; + + if ((cstr = g_notification_get_title (notification))) + str_title = nsstring_from_cstr (cstr); + if ((cstr = g_notification_get_body (notification))) + str_text = nsstring_from_cstr (cstr); + if (cstr_id != NULL) + str_id = nsstring_from_cstr (cstr_id); + if ((icon = g_notification_get_icon (notification))) + content = nsimage_from_gicon (icon); + /* NOTE: There is no priority */ + + userNotification = [NSUserNotification new]; + userNotification.title = str_title; + userNotification.informativeText = str_text; + userNotification.identifier = str_id; + userNotification.contentImage = content; + /* NOTE: Buttons only show up if your bundle has NSUserNotificationAlertStyle set to "alerts" */ + add_actions_to_notification (userNotification, notification); + + if (!cocoa_notification_delegate) + cocoa_notification_delegate = [[GNotificationCenterDelegate alloc] init]; + + center = [NSUserNotificationCenter defaultUserNotificationCenter]; + center.delegate = cocoa_notification_delegate; + [center deliverNotification:userNotification]; + + [str_title release]; + [str_text release]; + [str_id release]; + [content release]; + [userNotification release]; +} + +static void +g_cocoa_notification_backend_withdraw_notification (GNotificationBackend *backend, + const gchar *cstr_id) +{ + NSUserNotificationCenter *center = [NSUserNotificationCenter defaultUserNotificationCenter]; + NSArray *notifications = [center deliveredNotifications]; + NSString *str_id = nsstring_from_cstr (cstr_id); + + for (NSUserNotification *notification in notifications) + { + if ([notification.identifier compare:str_id] == NSOrderedSame) + { + [center removeDeliveredNotification:notification]; + break; + } + } + + [notifications release]; + [str_id release]; +} + +static void +g_cocoa_notification_backend_init (GCocoaNotificationBackend *backend) +{ +} + +static void +g_cocoa_notification_backend_class_init (GCocoaNotificationBackendClass *klass) +{ + GNotificationBackendClass *backend_class = G_NOTIFICATION_BACKEND_CLASS (klass); + + backend_class->is_supported = g_cocoa_notification_backend_is_supported; + backend_class->send_notification = g_cocoa_notification_backend_send_notification; + backend_class->withdraw_notification = g_cocoa_notification_backend_withdraw_notification; +} diff --git a/gio/gconstructor_as_data.h b/gio/gconstructor_as_data.h new file mode 100644 index 0000000..11d5555 --- /dev/null +++ b/gio/gconstructor_as_data.h @@ -0,0 +1 @@ +const char gconstructor_code[] = "\x2f\x2a\x0a\x20\x20\x49\x66\x20\x47\x5f\x48\x41\x53\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x53\x20\x69\x73\x20\x74\x72\x75\x65\x20\x74\x68\x65\x6e\x20\x74\x68\x65\x20\x63\x6f\x6d\x70\x69\x6c\x65\x72\x20\x73\x75\x70\x70\x6f\x72\x74\x20\x2a\x62\x6f\x74\x68\x2a\x20\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x73\x20\x61\x6e\x64\x0a\x20\x20\x64\x65\x73\x74\x72\x75\x63\x74\x6f\x72\x73\x2c\x20\x69\x6e\x20\x61\x20\x73\x61\x6e\x65\x20\x77\x61\x79\x2c\x20\x69\x6e\x63\x6c\x75\x64\x69\x6e\x67\x20\x65\x2e\x67\x2e\x20\x6f\x6e\x20\x6c\x69\x62\x72\x61\x72\x79\x20\x75\x6e\x6c\x6f\x61\x64\x2e\x20\x49\x66\x20\x6e\x6f\x74\x20\x79\x6f\x75\x27\x72\x65\x20\x6f\x6e\x0a\x20\x20\x79\x6f\x75\x72\x20\x6f\x77\x6e\x2e\x0a\x0a\x20\x20\x53\x6f\x6d\x65\x20\x63\x6f\x6d\x70\x69\x6c\x65\x72\x73\x20\x6e\x65\x65\x64\x20\x23\x70\x72\x61\x67\x6d\x61\x20\x74\x6f\x20\x68\x61\x6e\x64\x6c\x65\x20\x74\x68\x69\x73\x2c\x20\x77\x68\x69\x63\x68\x20\x64\x6f\x65\x73\x20\x6e\x6f\x74\x20\x77\x6f\x72\x6b\x20\x77\x69\x74\x68\x20\x6d\x61\x63\x72\x6f\x73\x2c\x0a\x20\x20\x73\x6f\x20\x74\x68\x65\x20\x77\x61\x79\x20\x79\x6f\x75\x20\x6e\x65\x65\x64\x20\x74\x6f\x20\x75\x73\x65\x20\x74\x68\x69\x73\x20\x69\x73\x20\x28\x66\x6f\x72\x20\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x73\x29\x3a\x0a\x0a\x20\x20\x23\x69\x66\x64\x65\x66\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x5f\x4e\x45\x45\x44\x53\x5f\x50\x52\x41\x47\x4d\x41\x0a\x20\x20\x23\x70\x72\x61\x67\x6d\x61\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x5f\x50\x52\x41\x47\x4d\x41\x5f\x41\x52\x47\x53\x28\x6d\x79\x5f\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x29\x0a\x20\x20\x23\x65\x6e\x64\x69\x66\x0a\x20\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x28\x6d\x79\x5f\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x29\x0a\x20\x20\x73\x74\x61\x74\x69\x63\x20\x76\x6f\x69\x64\x20\x6d\x79\x5f\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x28\x76\x6f\x69\x64\x29\x20\x7b\x0a\x20\x20\x20\x2e\x2e\x2e\x0a\x20\x20\x7d\x0a\x0a\x2a\x2f\x0a\x0a\x23\x69\x66\x6e\x64\x65\x66\x20\x5f\x5f\x47\x54\x4b\x5f\x44\x4f\x43\x5f\x49\x47\x4e\x4f\x52\x45\x5f\x5f\x0a\x0a\x23\x69\x66\x20\x20\x5f\x5f\x47\x4e\x55\x43\x5f\x5f\x20\x3e\x20\x32\x20\x7c\x7c\x20\x28\x5f\x5f\x47\x4e\x55\x43\x5f\x5f\x20\x3d\x3d\x20\x32\x20\x26\x26\x20\x5f\x5f\x47\x4e\x55\x43\x5f\x4d\x49\x4e\x4f\x52\x5f\x5f\x20\x3e\x3d\x20\x37\x29\x0a\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x48\x41\x53\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x53\x20\x31\x0a\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x28\x5f\x66\x75\x6e\x63\x29\x20\x73\x74\x61\x74\x69\x63\x20\x76\x6f\x69\x64\x20\x5f\x5f\x61\x74\x74\x72\x69\x62\x75\x74\x65\x5f\x5f\x28\x28\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x29\x29\x20\x5f\x66\x75\x6e\x63\x20\x28\x76\x6f\x69\x64\x29\x3b\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x44\x45\x53\x54\x52\x55\x43\x54\x4f\x52\x28\x5f\x66\x75\x6e\x63\x29\x20\x73\x74\x61\x74\x69\x63\x20\x76\x6f\x69\x64\x20\x5f\x5f\x61\x74\x74\x72\x69\x62\x75\x74\x65\x5f\x5f\x28\x28\x64\x65\x73\x74\x72\x75\x63\x74\x6f\x72\x29\x29\x20\x5f\x66\x75\x6e\x63\x20\x28\x76\x6f\x69\x64\x29\x3b\x0a\x0a\x23\x65\x6c\x69\x66\x20\x64\x65\x66\x69\x6e\x65\x64\x20\x28\x5f\x4d\x53\x43\x5f\x56\x45\x52\x29\x20\x26\x26\x20\x28\x5f\x4d\x53\x43\x5f\x56\x45\x52\x20\x3e\x3d\x20\x31\x35\x30\x30\x29\x0a\x2f\x2a\x20\x56\x69\x73\x75\x61\x6c\x20\x73\x74\x75\x64\x69\x6f\x20\x32\x30\x30\x38\x20\x61\x6e\x64\x20\x6c\x61\x74\x65\x72\x20\x68\x61\x73\x20\x5f\x50\x72\x61\x67\x6d\x61\x20\x2a\x2f\x0a\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x48\x41\x53\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x53\x20\x31\x0a\x0a\x2f\x2a\x20\x57\x65\x20\x64\x6f\x20\x73\x6f\x6d\x65\x20\x77\x65\x69\x72\x64\x20\x74\x68\x69\x6e\x67\x73\x20\x74\x6f\x20\x61\x76\x6f\x69\x64\x20\x74\x68\x65\x20\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x73\x20\x62\x65\x69\x6e\x67\x20\x6f\x70\x74\x69\x6d\x69\x7a\x65\x64\x0a\x20\x2a\x20\x61\x77\x61\x79\x20\x6f\x6e\x20\x56\x53\x32\x30\x31\x35\x20\x69\x66\x20\x57\x68\x6f\x6c\x65\x50\x72\x6f\x67\x72\x61\x6d\x4f\x70\x74\x69\x6d\x69\x7a\x61\x74\x69\x6f\x6e\x20\x69\x73\x20\x65\x6e\x61\x62\x6c\x65\x64\x2e\x20\x46\x69\x72\x73\x74\x20\x77\x65\x0a\x20\x2a\x20\x6d\x61\x6b\x65\x20\x61\x20\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x20\x74\x6f\x20\x74\x68\x65\x20\x61\x72\x72\x61\x79\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x77\x72\x61\x70\x70\x65\x72\x20\x74\x6f\x20\x6d\x61\x6b\x65\x20\x73\x75\x72\x65\x20\x69\x74\x73\x0a\x20\x2a\x20\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x73\x2e\x20\x54\x68\x65\x6e\x20\x77\x65\x20\x75\x73\x65\x20\x61\x20\x70\x72\x61\x67\x6d\x61\x20\x74\x6f\x20\x6d\x61\x6b\x65\x20\x73\x75\x72\x65\x20\x74\x68\x65\x20\x77\x72\x61\x70\x70\x65\x72\x20\x66\x75\x6e\x63\x74\x69\x6f\x6e\x0a\x20\x2a\x20\x73\x79\x6d\x62\x6f\x6c\x20\x69\x73\x20\x61\x6c\x77\x61\x79\x73\x20\x69\x6e\x63\x6c\x75\x64\x65\x64\x20\x61\x74\x20\x74\x68\x65\x20\x6c\x69\x6e\x6b\x20\x73\x74\x61\x67\x65\x2e\x20\x41\x6c\x73\x6f\x2c\x20\x74\x68\x65\x20\x73\x79\x6d\x62\x6f\x6c\x73\x0a\x20\x2a\x20\x6e\x65\x65\x64\x20\x74\x6f\x20\x62\x65\x20\x65\x78\x74\x65\x72\x6e\x20\x28\x62\x75\x74\x20\x6e\x6f\x74\x20\x64\x6c\x6c\x65\x78\x70\x6f\x72\x74\x29\x2c\x20\x65\x76\x65\x6e\x20\x74\x68\x6f\x75\x67\x68\x20\x74\x68\x65\x79\x20\x61\x72\x65\x20\x6e\x6f\x74\x0a\x20\x2a\x20\x72\x65\x61\x6c\x6c\x79\x20\x75\x73\x65\x64\x20\x66\x72\x6f\x6d\x20\x61\x6e\x6f\x74\x68\x65\x72\x20\x6f\x62\x6a\x65\x63\x74\x20\x66\x69\x6c\x65\x2e\x0a\x20\x2a\x2f\x0a\x0a\x2f\x2a\x20\x57\x65\x20\x6e\x65\x65\x64\x20\x74\x6f\x20\x61\x63\x63\x6f\x75\x6e\x74\x20\x66\x6f\x72\x20\x64\x69\x66\x66\x65\x72\x65\x6e\x63\x65\x73\x20\x62\x65\x74\x77\x65\x65\x6e\x20\x74\x68\x65\x20\x6d\x61\x6e\x67\x6c\x69\x6e\x67\x20\x6f\x66\x20\x73\x79\x6d\x62\x6f\x6c\x73\x0a\x20\x2a\x20\x66\x6f\x72\x20\x57\x69\x6e\x33\x32\x20\x28\x78\x38\x36\x29\x20\x61\x6e\x64\x20\x78\x36\x34\x20\x70\x72\x6f\x67\x72\x61\x6d\x73\x2c\x20\x61\x73\x20\x73\x79\x6d\x62\x6f\x6c\x73\x20\x6f\x6e\x20\x57\x69\x6e\x33\x32\x20\x61\x72\x65\x20\x70\x72\x65\x66\x69\x78\x65\x64\x0a\x20\x2a\x20\x77\x69\x74\x68\x20\x61\x6e\x20\x75\x6e\x64\x65\x72\x73\x63\x6f\x72\x65\x20\x62\x75\x74\x20\x73\x79\x6d\x62\x6f\x6c\x73\x20\x6f\x6e\x20\x78\x36\x34\x20\x61\x72\x65\x20\x6e\x6f\x74\x2e\x0a\x20\x2a\x2f\x0a\x23\x69\x66\x64\x65\x66\x20\x5f\x57\x49\x4e\x36\x34\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x4d\x53\x56\x43\x5f\x53\x59\x4d\x42\x4f\x4c\x5f\x50\x52\x45\x46\x49\x58\x20\x22\x22\x0a\x23\x65\x6c\x73\x65\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x4d\x53\x56\x43\x5f\x53\x59\x4d\x42\x4f\x4c\x5f\x50\x52\x45\x46\x49\x58\x20\x22\x5f\x22\x0a\x23\x65\x6e\x64\x69\x66\x0a\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x28\x5f\x66\x75\x6e\x63\x29\x20\x47\x5f\x4d\x53\x56\x43\x5f\x43\x54\x4f\x52\x20\x28\x5f\x66\x75\x6e\x63\x2c\x20\x47\x5f\x4d\x53\x56\x43\x5f\x53\x59\x4d\x42\x4f\x4c\x5f\x50\x52\x45\x46\x49\x58\x29\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x44\x45\x53\x54\x52\x55\x43\x54\x4f\x52\x28\x5f\x66\x75\x6e\x63\x29\x20\x47\x5f\x4d\x53\x56\x43\x5f\x44\x54\x4f\x52\x20\x28\x5f\x66\x75\x6e\x63\x2c\x20\x47\x5f\x4d\x53\x56\x43\x5f\x53\x59\x4d\x42\x4f\x4c\x5f\x50\x52\x45\x46\x49\x58\x29\x0a\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x4d\x53\x56\x43\x5f\x43\x54\x4f\x52\x28\x5f\x66\x75\x6e\x63\x2c\x5f\x73\x79\x6d\x5f\x70\x72\x65\x66\x69\x78\x29\x20\x5c\x0a\x20\x20\x73\x74\x61\x74\x69\x63\x20\x76\x6f\x69\x64\x20\x5f\x66\x75\x6e\x63\x28\x76\x6f\x69\x64\x29\x3b\x20\x5c\x0a\x20\x20\x65\x78\x74\x65\x72\x6e\x20\x69\x6e\x74\x20\x28\x2a\x20\x5f\x61\x72\x72\x61\x79\x20\x23\x23\x20\x5f\x66\x75\x6e\x63\x29\x28\x76\x6f\x69\x64\x29\x3b\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5c\x0a\x20\x20\x69\x6e\x74\x20\x5f\x66\x75\x6e\x63\x20\x23\x23\x20\x5f\x77\x72\x61\x70\x70\x65\x72\x28\x76\x6f\x69\x64\x29\x20\x7b\x20\x5f\x66\x75\x6e\x63\x28\x29\x3b\x20\x67\x5f\x73\x6c\x69\x73\x74\x5f\x66\x69\x6e\x64\x20\x28\x4e\x55\x4c\x4c\x2c\x20\x20\x5f\x61\x72\x72\x61\x79\x20\x23\x23\x20\x5f\x66\x75\x6e\x63\x29\x3b\x20\x72\x65\x74\x75\x72\x6e\x20\x30\x3b\x20\x7d\x20\x5c\x0a\x20\x20\x5f\x5f\x70\x72\x61\x67\x6d\x61\x28\x63\x6f\x6d\x6d\x65\x6e\x74\x28\x6c\x69\x6e\x6b\x65\x72\x2c\x22\x2f\x69\x6e\x63\x6c\x75\x64\x65\x3a\x22\x20\x5f\x73\x79\x6d\x5f\x70\x72\x65\x66\x69\x78\x20\x23\x20\x5f\x66\x75\x6e\x63\x20\x22\x5f\x77\x72\x61\x70\x70\x65\x72\x22\x29\x29\x20\x5c\x0a\x20\x20\x5f\x5f\x70\x72\x61\x67\x6d\x61\x28\x73\x65\x63\x74\x69\x6f\x6e\x28\x22\x2e\x43\x52\x54\x24\x58\x43\x55\x22\x2c\x72\x65\x61\x64\x29\x29\x20\x5c\x0a\x20\x20\x5f\x5f\x64\x65\x63\x6c\x73\x70\x65\x63\x28\x61\x6c\x6c\x6f\x63\x61\x74\x65\x28\x22\x2e\x43\x52\x54\x24\x58\x43\x55\x22\x29\x29\x20\x69\x6e\x74\x20\x28\x2a\x20\x5f\x61\x72\x72\x61\x79\x20\x23\x23\x20\x5f\x66\x75\x6e\x63\x29\x28\x76\x6f\x69\x64\x29\x20\x3d\x20\x5f\x66\x75\x6e\x63\x20\x23\x23\x20\x5f\x77\x72\x61\x70\x70\x65\x72\x3b\x0a\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x4d\x53\x56\x43\x5f\x44\x54\x4f\x52\x28\x5f\x66\x75\x6e\x63\x2c\x5f\x73\x79\x6d\x5f\x70\x72\x65\x66\x69\x78\x29\x20\x5c\x0a\x20\x20\x73\x74\x61\x74\x69\x63\x20\x76\x6f\x69\x64\x20\x5f\x66\x75\x6e\x63\x28\x76\x6f\x69\x64\x29\x3b\x20\x5c\x0a\x20\x20\x65\x78\x74\x65\x72\x6e\x20\x69\x6e\x74\x20\x28\x2a\x20\x5f\x61\x72\x72\x61\x79\x20\x23\x23\x20\x5f\x66\x75\x6e\x63\x29\x28\x76\x6f\x69\x64\x29\x3b\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x5c\x0a\x20\x20\x69\x6e\x74\x20\x5f\x66\x75\x6e\x63\x20\x23\x23\x20\x5f\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x28\x76\x6f\x69\x64\x29\x20\x7b\x20\x61\x74\x65\x78\x69\x74\x20\x28\x5f\x66\x75\x6e\x63\x29\x3b\x20\x67\x5f\x73\x6c\x69\x73\x74\x5f\x66\x69\x6e\x64\x20\x28\x4e\x55\x4c\x4c\x2c\x20\x20\x5f\x61\x72\x72\x61\x79\x20\x23\x23\x20\x5f\x66\x75\x6e\x63\x29\x3b\x20\x72\x65\x74\x75\x72\x6e\x20\x30\x3b\x20\x7d\x20\x5c\x0a\x20\x20\x20\x5f\x5f\x70\x72\x61\x67\x6d\x61\x28\x63\x6f\x6d\x6d\x65\x6e\x74\x28\x6c\x69\x6e\x6b\x65\x72\x2c\x22\x2f\x69\x6e\x63\x6c\x75\x64\x65\x3a\x22\x20\x5f\x73\x79\x6d\x5f\x70\x72\x65\x66\x69\x78\x20\x23\x20\x5f\x66\x75\x6e\x63\x20\x22\x5f\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x22\x29\x29\x20\x5c\x0a\x20\x20\x5f\x5f\x70\x72\x61\x67\x6d\x61\x28\x73\x65\x63\x74\x69\x6f\x6e\x28\x22\x2e\x43\x52\x54\x24\x58\x43\x55\x22\x2c\x72\x65\x61\x64\x29\x29\x20\x5c\x0a\x20\x20\x5f\x5f\x64\x65\x63\x6c\x73\x70\x65\x63\x28\x61\x6c\x6c\x6f\x63\x61\x74\x65\x28\x22\x2e\x43\x52\x54\x24\x58\x43\x55\x22\x29\x29\x20\x69\x6e\x74\x20\x28\x2a\x20\x5f\x61\x72\x72\x61\x79\x20\x23\x23\x20\x5f\x66\x75\x6e\x63\x29\x28\x76\x6f\x69\x64\x29\x20\x3d\x20\x5f\x66\x75\x6e\x63\x20\x23\x23\x20\x5f\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x3b\x0a\x0a\x23\x65\x6c\x69\x66\x20\x64\x65\x66\x69\x6e\x65\x64\x20\x28\x5f\x4d\x53\x43\x5f\x56\x45\x52\x29\x0a\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x48\x41\x53\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x53\x20\x31\x0a\x0a\x2f\x2a\x20\x50\x72\x65\x20\x56\x69\x73\x75\x61\x6c\x20\x73\x74\x75\x64\x69\x6f\x20\x32\x30\x30\x38\x20\x6d\x75\x73\x74\x20\x75\x73\x65\x20\x23\x70\x72\x61\x67\x6d\x61\x20\x73\x65\x63\x74\x69\x6f\x6e\x20\x2a\x2f\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x5f\x4e\x45\x45\x44\x53\x5f\x50\x52\x41\x47\x4d\x41\x20\x31\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x44\x45\x53\x54\x52\x55\x43\x54\x4f\x52\x5f\x4e\x45\x45\x44\x53\x5f\x50\x52\x41\x47\x4d\x41\x20\x31\x0a\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x5f\x50\x52\x41\x47\x4d\x41\x5f\x41\x52\x47\x53\x28\x5f\x66\x75\x6e\x63\x29\x20\x5c\x0a\x20\x20\x73\x65\x63\x74\x69\x6f\x6e\x28\x22\x2e\x43\x52\x54\x24\x58\x43\x55\x22\x2c\x72\x65\x61\x64\x29\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x28\x5f\x66\x75\x6e\x63\x29\x20\x5c\x0a\x20\x20\x73\x74\x61\x74\x69\x63\x20\x76\x6f\x69\x64\x20\x5f\x66\x75\x6e\x63\x28\x76\x6f\x69\x64\x29\x3b\x20\x5c\x0a\x20\x20\x73\x74\x61\x74\x69\x63\x20\x69\x6e\x74\x20\x5f\x66\x75\x6e\x63\x20\x23\x23\x20\x5f\x77\x72\x61\x70\x70\x65\x72\x28\x76\x6f\x69\x64\x29\x20\x7b\x20\x5f\x66\x75\x6e\x63\x28\x29\x3b\x20\x72\x65\x74\x75\x72\x6e\x20\x30\x3b\x20\x7d\x20\x5c\x0a\x20\x20\x5f\x5f\x64\x65\x63\x6c\x73\x70\x65\x63\x28\x61\x6c\x6c\x6f\x63\x61\x74\x65\x28\x22\x2e\x43\x52\x54\x24\x58\x43\x55\x22\x29\x29\x20\x73\x74\x61\x74\x69\x63\x20\x69\x6e\x74\x20\x28\x2a\x70\x29\x28\x76\x6f\x69\x64\x29\x20\x3d\x20\x5f\x66\x75\x6e\x63\x20\x23\x23\x20\x5f\x77\x72\x61\x70\x70\x65\x72\x3b\x0a\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x44\x45\x53\x54\x52\x55\x43\x54\x4f\x52\x5f\x50\x52\x41\x47\x4d\x41\x5f\x41\x52\x47\x53\x28\x5f\x66\x75\x6e\x63\x29\x20\x5c\x0a\x20\x20\x73\x65\x63\x74\x69\x6f\x6e\x28\x22\x2e\x43\x52\x54\x24\x58\x43\x55\x22\x2c\x72\x65\x61\x64\x29\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x44\x45\x53\x54\x52\x55\x43\x54\x4f\x52\x28\x5f\x66\x75\x6e\x63\x29\x20\x5c\x0a\x20\x20\x73\x74\x61\x74\x69\x63\x20\x76\x6f\x69\x64\x20\x5f\x66\x75\x6e\x63\x28\x76\x6f\x69\x64\x29\x3b\x20\x5c\x0a\x20\x20\x73\x74\x61\x74\x69\x63\x20\x69\x6e\x74\x20\x5f\x66\x75\x6e\x63\x20\x23\x23\x20\x5f\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x28\x76\x6f\x69\x64\x29\x20\x7b\x20\x61\x74\x65\x78\x69\x74\x20\x28\x5f\x66\x75\x6e\x63\x29\x3b\x20\x72\x65\x74\x75\x72\x6e\x20\x30\x3b\x20\x7d\x20\x5c\x0a\x20\x20\x5f\x5f\x64\x65\x63\x6c\x73\x70\x65\x63\x28\x61\x6c\x6c\x6f\x63\x61\x74\x65\x28\x22\x2e\x43\x52\x54\x24\x58\x43\x55\x22\x29\x29\x20\x73\x74\x61\x74\x69\x63\x20\x69\x6e\x74\x20\x28\x2a\x20\x5f\x61\x72\x72\x61\x79\x20\x23\x23\x20\x5f\x66\x75\x6e\x63\x29\x28\x76\x6f\x69\x64\x29\x20\x3d\x20\x5f\x66\x75\x6e\x63\x20\x23\x23\x20\x5f\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x3b\x0a\x0a\x23\x65\x6c\x69\x66\x20\x64\x65\x66\x69\x6e\x65\x64\x28\x5f\x5f\x53\x55\x4e\x50\x52\x4f\x5f\x43\x29\x0a\x0a\x2f\x2a\x20\x54\x68\x69\x73\x20\x69\x73\x20\x6e\x6f\x74\x20\x74\x65\x73\x74\x65\x64\x2c\x20\x62\x75\x74\x20\x69\x20\x62\x65\x6c\x69\x65\x76\x65\x20\x69\x74\x20\x73\x68\x6f\x75\x6c\x64\x20\x77\x6f\x72\x6b\x2c\x20\x62\x61\x73\x65\x64\x20\x6f\x6e\x3a\x0a\x20\x2a\x20\x68\x74\x74\x70\x3a\x2f\x2f\x6f\x70\x65\x6e\x73\x6f\x75\x72\x63\x65\x2e\x61\x70\x70\x6c\x65\x2e\x63\x6f\x6d\x2f\x73\x6f\x75\x72\x63\x65\x2f\x4f\x70\x65\x6e\x53\x53\x4c\x30\x39\x38\x2f\x4f\x70\x65\x6e\x53\x53\x4c\x30\x39\x38\x2d\x33\x35\x2f\x73\x72\x63\x2f\x66\x69\x70\x73\x2f\x66\x69\x70\x73\x5f\x70\x72\x65\x6d\x61\x69\x6e\x2e\x63\x0a\x20\x2a\x2f\x0a\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x48\x41\x53\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x53\x20\x31\x0a\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x5f\x4e\x45\x45\x44\x53\x5f\x50\x52\x41\x47\x4d\x41\x20\x31\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x44\x45\x53\x54\x52\x55\x43\x54\x4f\x52\x5f\x4e\x45\x45\x44\x53\x5f\x50\x52\x41\x47\x4d\x41\x20\x31\x0a\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x5f\x50\x52\x41\x47\x4d\x41\x5f\x41\x52\x47\x53\x28\x5f\x66\x75\x6e\x63\x29\x20\x5c\x0a\x20\x20\x69\x6e\x69\x74\x28\x5f\x66\x75\x6e\x63\x29\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x43\x4f\x4e\x53\x54\x52\x55\x43\x54\x4f\x52\x28\x5f\x66\x75\x6e\x63\x29\x20\x5c\x0a\x20\x20\x73\x74\x61\x74\x69\x63\x20\x76\x6f\x69\x64\x20\x5f\x66\x75\x6e\x63\x28\x76\x6f\x69\x64\x29\x3b\x0a\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x44\x45\x53\x54\x52\x55\x43\x54\x4f\x52\x5f\x50\x52\x41\x47\x4d\x41\x5f\x41\x52\x47\x53\x28\x5f\x66\x75\x6e\x63\x29\x20\x5c\x0a\x20\x20\x66\x69\x6e\x69\x28\x5f\x66\x75\x6e\x63\x29\x0a\x23\x64\x65\x66\x69\x6e\x65\x20\x47\x5f\x44\x45\x46\x49\x4e\x45\x5f\x44\x45\x53\x54\x52\x55\x43\x54\x4f\x52\x28\x5f\x66\x75\x6e\x63\x29\x20\x5c\x0a\x20\x20\x73\x74\x61\x74\x69\x63\x20\x76\x6f\x69\x64\x20\x5f\x66\x75\x6e\x63\x28\x76\x6f\x69\x64\x29\x3b\x0a\x0a\x23\x65\x6c\x73\x65\x0a\x0a\x2f\x2a\x20\x63\x6f\x6e\x73\x74\x72\x75\x63\x74\x6f\x72\x73\x20\x6e\x6f\x74\x20\x73\x75\x70\x70\x6f\x72\x74\x65\x64\x20\x66\x6f\x72\x20\x74\x68\x69\x73\x20\x63\x6f\x6d\x70\x69\x6c\x65\x72\x20\x2a\x2f\x0a\x0a\x23\x65\x6e\x64\x69\x66\x0a\x0a\x23\x65\x6e\x64\x69\x66\x20\x2f\x2a\x20\x5f\x5f\x47\x54\x4b\x5f\x44\x4f\x43\x5f\x49\x47\x4e\x4f\x52\x45\x5f\x5f\x20\x2a\x2f\x0a"; diff --git a/gio/gcontenttype-win32.c b/gio/gcontenttype-win32.c index 24a02ed..04d8fd3 100644 --- a/gio/gcontenttype-win32.c +++ b/gio/gcontenttype-win32.c @@ -158,6 +158,7 @@ g_content_type_get_description (const gchar *type) if (g_content_type_is_unknown (type)) return g_strdup (_("Unknown type")); + return g_strdup_printf (_("%s filetype"), type); } @@ -175,6 +176,8 @@ g_content_type_get_mime_type (const gchar *type) return g_strdup ("application/octet-stream"); else if (*type == '.') return g_strdup_printf ("application/x-ext-%s", type+1); + else if (strcmp ("inode/directory", type) == 0) + return g_strdup (type); /* TODO: Map "image" to "image/ *", etc? */ return g_strdup ("application/octet-stream"); @@ -224,19 +227,18 @@ g_content_type_get_icon (const gchar *type) g_free (key); } - /* icon-name similar to how it was with gtk-2-12 */ - if (name) - { - themed_icon = g_themed_icon_new (name); - } - else + if (!name) { - /* if not found an icon fall back to gtk-builtins */ - name = strcmp (type, "inode/directory") == 0 ? "gtk-directory" : - g_content_type_can_be_executable (type) ? "gtk-execute" : "gtk-file"; + /* if no icon found, fall back to standard generic names */ + if (strcmp (type, "inode/directory") == 0) + name = "folder"; + else if (g_content_type_can_be_executable (type)) + name = "system-run"; + else + name = "text-x-generic"; g_hash_table_insert (_type_icons, g_strdup (type), g_strdup (name)); - themed_icon = g_themed_icon_new_with_default_fallbacks (name); } + themed_icon = g_themed_icon_new (name); G_UNLOCK (_type_icons); return G_ICON (themed_icon); @@ -300,6 +302,10 @@ g_content_type_from_mime_type (const gchar *mime_type) g_return_val_if_fail (mime_type != NULL, NULL); + /* This is a hack to allow directories to have icons in filechooser */ + if (strcmp ("inode/directory", mime_type) == 0) + return g_strdup (mime_type); + key = g_strconcat ("MIME\\DataBase\\Content Type\\", mime_type, NULL); content_type = get_registry_classes_key (key, L"Extension"); g_free (key); diff --git a/gio/gconverter.c b/gio/gconverter.c index c397001..88b22c1 100644 --- a/gio/gconverter.c +++ b/gio/gconverter.c @@ -55,7 +55,8 @@ g_converter_default_init (GConverterInterface *iface) * @inbuf: (array length=inbuf_size) (element-type guint8): the buffer * containing the data to convert. * @inbuf_size: the number of bytes in @inbuf - * @outbuf: a buffer to write converted data in. + * @outbuf: (element-type guint8) (array length=outbuf_size): a buffer to write + * converted data in. * @outbuf_size: the number of bytes in @outbuf, must be at least one * @flags: a #GConverterFlags controlling the conversion details * @bytes_read: (out): will be set to the number of bytes read from @inbuf on success diff --git a/gio/gconverterinputstream.c b/gio/gconverterinputstream.c index 7e22aaa..d23b8f2 100644 --- a/gio/gconverterinputstream.c +++ b/gio/gconverterinputstream.c @@ -24,7 +24,6 @@ #include "gconverterinputstream.h" #include "gpollableinputstream.h" -#include "gsimpleasyncresult.h" #include "gcancellable.h" #include "gioenumtypes.h" #include "gioerror.h" diff --git a/gio/gconverteroutputstream.c b/gio/gconverteroutputstream.c index 6e17d55..46616b1 100644 --- a/gio/gconverteroutputstream.c +++ b/gio/gconverteroutputstream.c @@ -24,7 +24,6 @@ #include "gconverteroutputstream.h" #include "gpollableoutputstream.h" -#include "gsimpleasyncresult.h" #include "gcancellable.h" #include "gioenumtypes.h" #include "gioerror.h" diff --git a/gio/gcredentials.c b/gio/gcredentials.c index 6673afd..6d6b92a 100644 --- a/gio/gcredentials.c +++ b/gio/gcredentials.c @@ -393,7 +393,7 @@ g_credentials_get_native (GCredentials *credentials, * g_credentials_set_native: * @credentials: A #GCredentials. * @native_type: The type of native credentials to set. - * @native: A pointer to native credentials. + * @native: (not nullable): A pointer to native credentials. * * Copies the native credentials of type @native_type from @native * into @credentials. diff --git a/gio/gdatagrambased.c b/gio/gdatagrambased.c new file mode 100644 index 0000000..cd6e481 --- /dev/null +++ b/gio/gdatagrambased.c @@ -0,0 +1,473 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright 2015 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, see . + * + * Authors: Philip Withnall + */ + +#include "config.h" + +#include "gdatagrambased.h" + +#include "gcancellable.h" +#include "gioenumtypes.h" +#include "gioerror.h" +#include "gnetworkingprivate.h" +#include "gsocketaddress.h" +#include "glibintl.h" + +/** + * SECTION:gdatagrambased + * @short_description: Low-level datagram communications interface + * @include: gio/gio.h + * @see_also: #GSocket, [][gio-gnetworking.h] + * + * A #GDatagramBased is a networking interface for representing datagram-based + * communications. It is a more or less direct mapping of the core parts of the + * BSD socket API in a portable GObject interface. It is implemented by + * #GSocket, which wraps the UNIX socket API on UNIX and winsock2 on Windows. + * + * #GDatagramBased is entirely platform independent, and is intended to be used + * alongside higher-level networking APIs such as #GIOStream. + * + * It uses vectored scatter/gather I/O by default, allowing for many messages + * to be sent or received in a single call. Where possible, implementations of + * the interface should take advantage of vectored I/O to minimise processing + * or system calls. For example, #GSocket uses recvmmsg() and sendmmsg() where + * possible. Callers should take advantage of scatter/gather I/O (the use of + * multiple buffers per message) to avoid unnecessary copying of data to + * assemble or disassemble a message. + * + * Each #GDatagramBased operation has a timeout parameter which may be negative + * for blocking behaviour, zero for non-blocking behaviour, or positive for + * timeout behaviour. A blocking operation blocks until finished or there is an + * error. A non-blocking operation will return immediately with a + * %G_IO_ERROR_WOULD_BLOCK error if it cannot make progress. A timeout operation + * will block until the operation is complete or the timeout expires; if the + * timeout expires it will return what progress it made, or + * %G_IO_ERROR_TIMED_OUT if no progress was made. To know when a call would + * successfully run you can call g_datagram_based_condition_check() or + * g_datagram_based_condition_wait(). You can also use + * g_datagram_based_create_source() and attach it to a #GMainContext to get + * callbacks when I/O is possible. + * + * When running a non-blocking operation applications should always be able to + * handle getting a %G_IO_ERROR_WOULD_BLOCK error even when some other function + * said that I/O was possible. This can easily happen in case of a race + * condition in the application, but it can also happen for other reasons. For + * instance, on Windows a socket is always seen as writable until a write + * returns %G_IO_ERROR_WOULD_BLOCK. + * + * As with #GSocket, #GDatagramBaseds can be either connection oriented or + * connectionless. The interface does not cover connection establishment — use + * methods on the underlying type to establish a connection before sending and + * receiving data through the #GDatagramBased API. For connectionless socket + * types the target/source address is specified or received in each I/O + * operation. + * + * Like most other APIs in GLib, #GDatagramBased is not inherently thread safe. + * To use a #GDatagramBased concurrently from multiple threads, you must + * implement your own locking. + * + * Since: 2.48 + */ + +G_DEFINE_INTERFACE (GDatagramBased, g_datagram_based, G_TYPE_OBJECT) + +static void +g_datagram_based_default_init (GDatagramBasedInterface *iface) +{ + /* Nothing here. */ +} + +/** + * g_datagram_based_receive_messages: + * @datagram_based: a #GDatagramBased + * @messages: (array length=num_messages): an array of #GInputMessage structs + * @num_messages: the number of elements in @messages + * @flags: an int containing #GSocketMsgFlags flags for the overall operation + * @timeout: the maximum time (in microseconds) to wait, 0 to not block, or -1 + * to block indefinitely + * @cancellable: (allow-none): a %GCancellable + * @error: return location for a #GError + * + * Receive one or more data messages from @datagram_based in one go. + * + * @messages must point to an array of #GInputMessage structs and + * @num_messages must be the length of this array. Each #GInputMessage + * contains a pointer to an array of #GInputVector structs describing the + * buffers that the data received in each message will be written to. + * + * @flags modify how all messages are received. The commonly available + * arguments for this are available in the #GSocketMsgFlags enum, but the + * values there are the same as the system values, and the flags + * are passed in as-is, so you can pass in system-specific flags too. These + * flags affect the overall receive operation. Flags affecting individual + * messages are returned in #GInputMessage.flags. + * + * The other members of #GInputMessage are treated as described in its + * documentation. + * + * If @timeout is negative the call will block until @num_messages have been + * received, the connection is closed remotely (EOS), @cancellable is cancelled, + * or an error occurs. + * + * If @timeout is 0 the call will return up to @num_messages without blocking, + * or %G_IO_ERROR_WOULD_BLOCK if no messages are queued in the operating system + * to be received. + * + * If @timeout is positive the call will block on the same conditions as if + * @timeout were negative. If the timeout is reached + * before any messages are received, %G_IO_ERROR_TIMED_OUT is returned, + * otherwise it will return the number of messages received before timing out. + * (Note: This is effectively the behaviour of `MSG_WAITFORONE` with + * recvmmsg().) + * + * To be notified when messages are available, wait for the %G_IO_IN condition. + * Note though that you may still receive %G_IO_ERROR_WOULD_BLOCK from + * g_datagram_based_receive_messages() even if you were previously notified of a + * %G_IO_IN condition. + * + * If the remote peer closes the connection, any messages queued in the + * underlying receive buffer will be returned, and subsequent calls to + * g_datagram_based_receive_messages() will return 0 (with no error set). + * + * If the connection is shut down or closed (by calling g_socket_close() or + * g_socket_shutdown() with @shutdown_read set, if it’s a #GSocket, for + * example), all calls to this function will return %G_IO_ERROR_CLOSED. + * + * On error -1 is returned and @error is set accordingly. An error will only + * be returned if zero messages could be received; otherwise the number of + * messages successfully received before the error will be returned. If + * @cancellable is cancelled, %G_IO_ERROR_CANCELLED is returned as with any + * other error. + * + * Returns: number of messages received, or -1 on error. Note that the number + * of messages received may be smaller than @num_messages if @timeout is + * zero or positive, if the peer closed the connection, or if @num_messages + * was larger than `UIO_MAXIOV` (1024), in which case the caller may re-try + * to receive the remaining messages. + * + * Since: 2.48 + */ +gint +g_datagram_based_receive_messages (GDatagramBased *datagram_based, + GInputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error) +{ + GDatagramBasedInterface *iface; + gint retval; + GError *child_error = NULL; + + g_return_val_if_fail (G_IS_DATAGRAM_BASED (datagram_based), -1); + g_return_val_if_fail (num_messages == 0 || messages != NULL, -1); + g_return_val_if_fail (cancellable == NULL || + G_IS_CANCELLABLE (cancellable), -1); + g_return_val_if_fail (error == NULL || *error == NULL, -1); + + iface = G_DATAGRAM_BASED_GET_IFACE (datagram_based); + g_assert (iface->receive_messages != NULL); + + retval = iface->receive_messages (datagram_based, messages, num_messages, + flags, timeout, cancellable, &child_error); + + /* Postconditions. */ + g_return_val_if_fail ((retval < 0) == (child_error != NULL), -1); + g_return_val_if_fail (timeout == 0 || + !g_error_matches (child_error, G_IO_ERROR, + G_IO_ERROR_WOULD_BLOCK), -1); + g_return_val_if_fail (timeout > 0 || + !g_error_matches (child_error, G_IO_ERROR, + G_IO_ERROR_TIMED_OUT), -1); + g_return_val_if_fail (retval < 0 || (guint) retval <= num_messages, -1); + + if (child_error != NULL) + g_propagate_error (error, child_error); + + return retval; +} + +/** + * g_datagram_based_send_messages: + * @datagram_based: a #GDatagramBased + * @messages: (array length=num_messages): an array of #GOutputMessage structs + * @num_messages: the number of elements in @messages + * @flags: an int containing #GSocketMsgFlags flags + * @timeout: the maximum time (in microseconds) to wait, 0 to not block, or -1 + * to block indefinitely + * @cancellable: (nullable): a %GCancellable + * @error: return location for a #GError + * + * Send one or more data messages from @datagram_based in one go. + * + * @messages must point to an array of #GOutputMessage structs and + * @num_messages must be the length of this array. Each #GOutputMessage + * contains an address to send the data to, and a pointer to an array of + * #GOutputVector structs to describe the buffers that the data to be sent + * for each message will be gathered from. + * + * @flags modify how the message is sent. The commonly available arguments + * for this are available in the #GSocketMsgFlags enum, but the + * values there are the same as the system values, and the flags + * are passed in as-is, so you can pass in system-specific flags too. + * + * The other members of #GOutputMessage are treated as described in its + * documentation. + * + * If @timeout is negative the call will block until @num_messages have been + * sent, @cancellable is cancelled, or an error occurs. + * + * If @timeout is 0 the call will send up to @num_messages without blocking, + * or will return %G_IO_ERROR_WOULD_BLOCK if there is no space to send messages. + * + * If @timeout is positive the call will block on the same conditions as if + * @timeout were negative. If the timeout is reached before any messages are + * sent, %G_IO_ERROR_TIMED_OUT is returned, otherwise it will return the number + * of messages sent before timing out. + * + * To be notified when messages can be sent, wait for the %G_IO_OUT condition. + * Note though that you may still receive %G_IO_ERROR_WOULD_BLOCK from + * g_datagram_based_send_messages() even if you were previously notified of a + * %G_IO_OUT condition. (On Windows in particular, this is very common due to + * the way the underlying APIs work.) + * + * If the connection is shut down or closed (by calling g_socket_close() or + * g_socket_shutdown() with @shutdown_write set, if it’s a #GSocket, for + * example), all calls to this function will return %G_IO_ERROR_CLOSED. + * + * On error -1 is returned and @error is set accordingly. An error will only + * be returned if zero messages could be sent; otherwise the number of messages + * successfully sent before the error will be returned. If @cancellable is + * cancelled, %G_IO_ERROR_CANCELLED is returned as with any other error. + * + * Returns: number of messages sent, or -1 on error. Note that the number of + * messages sent may be smaller than @num_messages if @timeout is zero + * or positive, or if @num_messages was larger than `UIO_MAXIOV` (1024), in + * which case the caller may re-try to send the remaining messages. + * + * Since: 2.48 + */ +gint +g_datagram_based_send_messages (GDatagramBased *datagram_based, + GOutputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error) +{ + GDatagramBasedInterface *iface; + gint retval; + GError *child_error = NULL; + + g_return_val_if_fail (G_IS_DATAGRAM_BASED (datagram_based), -1); + g_return_val_if_fail (num_messages == 0 || messages != NULL, -1); + g_return_val_if_fail (cancellable == NULL || + G_IS_CANCELLABLE (cancellable), -1); + g_return_val_if_fail (error == NULL || *error == NULL, -1); + + iface = G_DATAGRAM_BASED_GET_IFACE (datagram_based); + g_assert (iface->send_messages != NULL); + + retval = iface->send_messages (datagram_based, messages, num_messages, flags, + timeout, cancellable, &child_error); + + /* Postconditions. */ + g_return_val_if_fail ((retval < 0) == (child_error != NULL), -1); + g_return_val_if_fail (timeout == 0 || + !g_error_matches (child_error, G_IO_ERROR, + G_IO_ERROR_WOULD_BLOCK), -1); + g_return_val_if_fail (timeout > 0 || + !g_error_matches (child_error, G_IO_ERROR, + G_IO_ERROR_TIMED_OUT), -1); + g_return_val_if_fail (retval < 0 || (guint) retval <= num_messages, -1); + g_return_val_if_fail (!(timeout < 0 && num_messages > 0) || retval != 0, -1); + + if (child_error != NULL) + g_propagate_error (error, child_error); + + return retval; +} + +/** + * g_datagram_based_create_source: + * @datagram_based: a #GDatagramBased + * @condition: a #GIOCondition mask to monitor + * @cancellable: (nullable): a #GCancellable + * + * Creates a #GSource that can be attached to a #GMainContext to monitor for + * the availability of the specified @condition on the #GDatagramBased. The + * #GSource keeps a reference to the @datagram_based. + * + * The callback on the source is of the #GDatagramBasedSourceFunc type. + * + * It is meaningless to specify %G_IO_ERR or %G_IO_HUP in @condition; these + * conditions will always be reported in the callback if they are true. + * + * If non-%NULL, @cancellable can be used to cancel the source, which will + * cause the source to trigger, reporting the current condition (which is + * likely 0 unless cancellation happened at the same time as a condition + * change). You can check for this in the callback using + * g_cancellable_is_cancelled(). + * + * Returns: (transfer full): a newly allocated #GSource + * + * Since: 2.48 + */ +GSource * +g_datagram_based_create_source (GDatagramBased *datagram_based, + GIOCondition condition, + GCancellable *cancellable) +{ + GDatagramBasedInterface *iface; + + g_return_val_if_fail (G_IS_DATAGRAM_BASED (datagram_based), NULL); + g_return_val_if_fail (cancellable == NULL || + G_IS_CANCELLABLE (cancellable), NULL); + + iface = G_DATAGRAM_BASED_GET_IFACE (datagram_based); + g_assert (iface->create_source != NULL); + + return iface->create_source (datagram_based, condition, cancellable); +} + +/** + * g_datagram_based_condition_check: + * @datagram_based: a #GDatagramBased + * @condition: a #GIOCondition mask to check + * + * Checks on the readiness of @datagram_based to perform operations. The + * operations specified in @condition are checked for and masked against the + * currently-satisfied conditions on @datagram_based. The result is returned. + * + * %G_IO_IN will be set in the return value if data is available to read with + * g_datagram_based_receive_messages(), or if the connection is closed remotely + * (EOS); and if the datagram_based has not been closed locally using some + * implementation-specific method (such as g_socket_close() or + * g_socket_shutdown() with @shutdown_read set, if it’s a #GSocket). + * + * If the connection is shut down or closed (by calling g_socket_close() or + * g_socket_shutdown() with @shutdown_read set, if it’s a #GSocket, for + * example), all calls to this function will return %G_IO_ERROR_CLOSED. + * + * %G_IO_OUT will be set if it is expected that at least one byte can be sent + * using g_datagram_based_send_messages() without blocking. It will not be set + * if the datagram_based has been closed locally. + * + * %G_IO_HUP will be set if the connection has been closed locally. + * + * %G_IO_ERR will be set if there was an asynchronous error in transmitting data + * previously enqueued using g_datagram_based_send_messages(). + * + * Note that on Windows, it is possible for an operation to return + * %G_IO_ERROR_WOULD_BLOCK even immediately after + * g_datagram_based_condition_check() has claimed that the #GDatagramBased is + * ready for writing. Rather than calling g_datagram_based_condition_check() and + * then writing to the #GDatagramBased if it succeeds, it is generally better to + * simply try writing right away, and try again later if the initial attempt + * returns %G_IO_ERROR_WOULD_BLOCK. + * + * It is meaningless to specify %G_IO_ERR or %G_IO_HUP in @condition; these + * conditions will always be set in the output if they are true. Apart from + * these flags, the output is guaranteed to be masked by @condition. + * + * This call never blocks. + * + * Returns: the #GIOCondition mask of the current state + * + * Since: 2.48 + */ +GIOCondition +g_datagram_based_condition_check (GDatagramBased *datagram_based, + GIOCondition condition) +{ + GDatagramBasedInterface *iface; + GIOCondition out; + + g_return_val_if_fail (G_IS_DATAGRAM_BASED (datagram_based), 0); + + iface = G_DATAGRAM_BASED_GET_IFACE (datagram_based); + g_assert (iface->condition_check != NULL); + + out = iface->condition_check (datagram_based, condition); + + /* Postconditions. G_IO_OUT and G_IO_HUP are mutually exclusive. G_IO_IN and + * G_IO_HUP are mutually exclusive. The return value must be a subset of + * (condition | G_IO_ERR | G_IO_HUP). */ + g_return_val_if_fail ((out & (G_IO_OUT | G_IO_HUP)) != (G_IO_OUT | G_IO_HUP), + out & ~G_IO_OUT); + g_return_val_if_fail ((out & (G_IO_IN | G_IO_HUP)) != (G_IO_IN | G_IO_HUP), + out & ~G_IO_IN); + g_return_val_if_fail ((out & ~(condition | G_IO_ERR | G_IO_HUP)) == 0, + out & (condition | G_IO_ERR | G_IO_HUP)); + + return out; +} + +/** + * g_datagram_based_condition_wait: + * @datagram_based: a #GDatagramBased + * @condition: a #GIOCondition mask to wait for + * @timeout: the maximum time (in microseconds) to wait, 0 to not block, or -1 + * to block indefinitely + * @cancellable: (nullable): a #GCancellable + * @error: return location for a #GError + * + * Waits for up to @timeout microseconds for condition to become true on + * @datagram_based. If the condition is met, %TRUE is returned. + * + * If @cancellable is cancelled before the condition is met, or if @timeout is + * reached before the condition is met, then %FALSE is returned and @error is + * set appropriately (%G_IO_ERROR_CANCELLED or %G_IO_ERROR_TIMED_OUT). + * + * Returns: %TRUE if the condition was met, %FALSE otherwise + * + * Since: 2.48 + */ +gboolean +g_datagram_based_condition_wait (GDatagramBased *datagram_based, + GIOCondition condition, + gint64 timeout, + GCancellable *cancellable, + GError **error) +{ + GDatagramBasedInterface *iface; + gboolean out; + GError *child_error = NULL; + + g_return_val_if_fail (G_IS_DATAGRAM_BASED (datagram_based), FALSE); + g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), + FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + iface = G_DATAGRAM_BASED_GET_IFACE (datagram_based); + g_assert (iface->condition_wait != NULL); + + out = iface->condition_wait (datagram_based, condition, timeout, + cancellable, &child_error); + + /* Postconditions. */ + g_return_val_if_fail (out == (child_error == NULL), FALSE); + + if (child_error != NULL) + g_propagate_error (error, child_error); + + return out; +} diff --git a/gio/gdatagrambased.h b/gio/gdatagrambased.h new file mode 100644 index 0000000..e5d80a0 --- /dev/null +++ b/gio/gdatagrambased.h @@ -0,0 +1,144 @@ +/* + * Copyright 2015 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, see . + * + * Authors: Philip Withnall + */ + +#ifndef __G_DATAGRAM_BASED_H__ +#define __G_DATAGRAM_BASED_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DATAGRAM_BASED (g_datagram_based_get_type ()) +#define G_DATAGRAM_BASED(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_DATAGRAM_BASED, GDatagramBased)) +#define G_IS_DATAGRAM_BASED(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ + G_TYPE_DATAGRAM_BASED)) +#define G_DATAGRAM_BASED_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), \ + G_TYPE_DATAGRAM_BASED, \ + GDatagramBasedInterface)) +#define G_TYPE_IS_DATAGRAM_BASED(type) (g_type_is_a ((type), \ + G_TYPE_DATAGRAM_BASED)) + +/** + * GDatagramBased: + * + * Interface for socket-like objects with datagram semantics. + * + * Since: 2.48 + */ +typedef struct _GDatagramBasedInterface GDatagramBasedInterface; + +/** + * GDatagramBasedInterface: + * @g_iface: The parent interface. + * @receive_messages: Virtual method for g_datagram_based_receive_messages(). + * @send_messages: Virtual method for g_datagram_based_send_messages(). + * @create_source: Virtual method for g_datagram_based_create_source(). + * @condition_check: Virtual method for g_datagram_based_condition_check(). + * @condition_wait: Virtual method for + * g_datagram_based_condition_wait(). + * + * Provides an interface for socket-like objects which have datagram semantics, + * following the Berkeley sockets API. The interface methods are thin wrappers + * around the corresponding virtual methods, and no pre-processing of inputs is + * implemented — so implementations of this API must handle all functionality + * documented in the interface methods. + * + * Since: 2.48 + */ +struct _GDatagramBasedInterface +{ + GTypeInterface g_iface; + + /* Virtual table */ + gint (*receive_messages) (GDatagramBased *datagram_based, + GInputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error); + gint (*send_messages) (GDatagramBased *datagram_based, + GOutputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error); + + GSource *(*create_source) (GDatagramBased *datagram_based, + GIOCondition condition, + GCancellable *cancellable); + GIOCondition (*condition_check) (GDatagramBased *datagram_based, + GIOCondition condition); + gboolean (*condition_wait) (GDatagramBased *datagram_based, + GIOCondition condition, + gint64 timeout, + GCancellable *cancellable, + GError **error); +}; + +GLIB_AVAILABLE_IN_2_48 +GType +g_datagram_based_get_type (void); + +GLIB_AVAILABLE_IN_2_48 +gint +g_datagram_based_receive_messages (GDatagramBased *datagram_based, + GInputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +gint +g_datagram_based_send_messages (GDatagramBased *datagram_based, + GOutputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +GSource * +g_datagram_based_create_source (GDatagramBased *datagram_based, + GIOCondition condition, + GCancellable *cancellable); +GLIB_AVAILABLE_IN_2_48 +GIOCondition +g_datagram_based_condition_check (GDatagramBased *datagram_based, + GIOCondition condition); +GLIB_AVAILABLE_IN_2_48 +gboolean +g_datagram_based_condition_wait (GDatagramBased *datagram_based, + GIOCondition condition, + gint64 timeout, + GCancellable *cancellable, + GError **error); + +G_END_DECLS + +#endif /* __G_DATAGRAM_BASED_H__ */ diff --git a/gio/gdbus-2.0/codegen/.gitignore b/gio/gdbus-2.0/codegen/.gitignore deleted file mode 100644 index 2d1abb9..0000000 --- a/gio/gdbus-2.0/codegen/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.pyc -gdbus-codegen diff --git a/gio/gdbus-2.0/codegen/Makefile.in b/gio/gdbus-2.0/codegen/Makefile.in new file mode 100644 index 0000000..94f22a0 --- /dev/null +++ b/gio/gdbus-2.0/codegen/Makefile.in @@ -0,0 +1,1469 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +subdir = gio/gdbus-2.0/codegen +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(codegen_PYTHON) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = config.py +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(codegendir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES) +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +SCRIPTS = $(bin_SCRIPTS) $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile) +am__pep3147_tweak = \ + sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|' +py_compile = $(top_srcdir)/py-compile +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.py.in \ + $(top_srcdir)/glib.mk $(top_srcdir)/py-compile \ + $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = +BUILT_EXTRA_DIST = +CLEANFILES = *.log *.trs $(am__append_14) config.pyc gdbus-codegen +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \ + gdbus-codegen.in + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +bin_SCRIPTS = gdbus-codegen +codegendir = $(datadir)/glib-2.0/codegen +codegen_PYTHON = \ + __init__.py \ + codegen.py \ + codegen_main.py \ + codegen_docbook.py \ + config.py \ + dbustypes.py \ + parser.py \ + utils.py \ + $(NULL) + +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .log .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gio/gdbus-2.0/codegen/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gio/gdbus-2.0/codegen/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +config.py: $(top_builddir)/config.status $(srcdir)/config.py.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-codegenPYTHON: $(codegen_PYTHON) + @$(NORMAL_INSTALL) + @list='$(codegen_PYTHON)'; dlist=; list2=; test -n "$(codegendir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(codegendir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(codegendir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \ + if test -f $$b$$p; then \ + $(am__strip_dir) \ + dlist="$$dlist $$f"; \ + list2="$$list2 $$b$$p"; \ + else :; fi; \ + done; \ + for file in $$list2; do echo $$file; done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(codegendir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(codegendir)" || exit $$?; \ + done || exit $$?; \ + if test -n "$$dlist"; then \ + $(am__py_compile) --destdir "$(DESTDIR)" \ + --basedir "$(codegendir)" $$dlist; \ + else :; fi + +uninstall-codegenPYTHON: + @$(NORMAL_UNINSTALL) + @list='$(codegen_PYTHON)'; test -n "$(codegendir)" || list=; \ + py_files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$py_files" || exit 0; \ + dir='$(DESTDIR)$(codegendir)'; \ + pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \ + pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \ + py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \ + echo "$$py_files_pep3147";\ + pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \ + pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \ + st=0; \ + for files in \ + "$$py_files" \ + "$$pyc_files" \ + "$$pyo_files" \ + "$$pyc_files_pep3147" \ + "$$pyo_files_pep3147" \ + ; do \ + $(am__uninstall_files_from_dir) || st=$$?; \ + done; \ + exit $$st +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(codegendir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-local clean-noinstLTLIBRARIES \ + clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-codegenPYTHON \ + install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binSCRIPTS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binSCRIPTS uninstall-codegenPYTHON \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-strip + +.PHONY: all all-am check check-TESTS check-am check-local clean \ + clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-local clean-noinstLTLIBRARIES \ + clean-noinstPROGRAMS cscopelist-am ctags-am distclean \ + distclean-generic distclean-libtool distdir dvi dvi-am html \ + html-am info info-am install install-am install-binSCRIPTS \ + install-codegenPYTHON install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \ + uninstall uninstall-am uninstall-binSCRIPTS \ + uninstall-codegenPYTHON uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +gdbus-codegen: gdbus-codegen.in Makefile $(codegen_PYTHON) + $(AM_V_GEN) sed -e 's,@datadir\@,$(datadir),' -e 's,@PYTHON\@,$(PYTHON),' $< > $@.tmp && mv $@.tmp $@ + @chmod a+x $@ + +clean-local: + rm -f *~ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gio/gdbus-2.0/codegen/codegen.py b/gio/gdbus-2.0/codegen/codegen.py index 3858bcf..9d1acbd 100644 --- a/gio/gdbus-2.0/codegen/codegen.py +++ b/gio/gdbus-2.0/codegen/codegen.py @@ -450,6 +450,10 @@ class CodeGenerator: 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') + self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n') + self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sProxy, g_object_unref)\n' % (i.camel_name)) + self.h.write('#endif\n') self.h.write('\n') if i.deprecated: @@ -538,6 +542,10 @@ class CodeGenerator: self.h.write('\n') self.h.write('GType %s_skeleton_get_type (void) G_GNUC_CONST;\n'%(i.name_lower)) self.h.write('\n') + self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n') + self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sSkeleton, g_object_unref)\n' % (i.camel_name)) + self.h.write('#endif\n') + 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)) @@ -601,6 +609,11 @@ class CodeGenerator: 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('\n') + self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n') + self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectProxy, g_object_unref)\n' % (self.namespace)) + self.h.write('#endif\n') + self.h.write('\n') 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)) @@ -627,6 +640,11 @@ class CodeGenerator: 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('\n') + self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n') + self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectSkeleton, g_object_unref)\n' % (self.namespace)) + self.h.write('#endif\n') + self.h.write('\n') self.h.write('%sObjectSkeleton *%sobject_skeleton_new (const gchar *object_path);\n' %(self.namespace, self.ns_lower)) for i in self.ifaces: @@ -661,6 +679,10 @@ class CodeGenerator: self.h.write(' GDBusObjectManagerClientClass parent_class;\n') self.h.write('};\n') self.h.write('\n') + self.h.write('#if GLIB_CHECK_VERSION(2, 44, 0)\n') + self.h.write('G_DEFINE_AUTOPTR_CLEANUP_FUNC (%sObjectManagerClient, g_object_unref)\n' % (self.namespace)) + self.h.write('#endif\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)) diff --git a/gio/gdbus-2.0/codegen/config.py b/gio/gdbus-2.0/codegen/config.py new file mode 100644 index 0000000..c3ee017 --- /dev/null +++ b/gio/gdbus-2.0/codegen/config.py @@ -0,0 +1,25 @@ +# -*- 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, see . +# +# Author: David Zeuthen + +DATADIR = "${prefix}/share" +DATADIR = DATADIR.replace( + "${prefix}", "/usr/local") +VERSION = "2.48.0" diff --git a/gio/gdbus-daemon-generated.c b/gio/gdbus-daemon-generated.c new file mode 100644 index 0000000..e551b80 --- /dev/null +++ b/gio/gdbus-daemon-generated.c @@ -0,0 +1,4336 @@ +/* + * Generated by gdbus-codegen 2.48.0. DO NOT EDIT. + * + * The license of this code is the same as for the source it was derived from. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "gdbus-daemon-generated.h" + +#include +#ifdef G_OS_UNIX +# include +#endif + +typedef struct +{ + GDBusArgInfo parent_struct; + gboolean use_gvariant; +} _ExtendedGDBusArgInfo; + +typedef struct +{ + GDBusMethodInfo parent_struct; + const gchar *signal_name; + gboolean pass_fdlist; +} _ExtendedGDBusMethodInfo; + +typedef struct +{ + GDBusSignalInfo parent_struct; + const gchar *signal_name; +} _ExtendedGDBusSignalInfo; + +typedef struct +{ + GDBusPropertyInfo parent_struct; + const gchar *hyphen_name; + gboolean use_gvariant; +} _ExtendedGDBusPropertyInfo; + +typedef struct +{ + GDBusInterfaceInfo parent_struct; + const gchar *hyphen_name; +} _ExtendedGDBusInterfaceInfo; + +typedef struct +{ + const _ExtendedGDBusPropertyInfo *info; + guint prop_id; + GValue orig_value; /* the value before the change */ +} ChangedProperty; + +static void +_changed_property_free (ChangedProperty *data) +{ + g_value_unset (&data->orig_value); + g_free (data); +} + +static gboolean +_g_strv_equal0 (gchar **a, gchar **b) +{ + gboolean ret = FALSE; + guint n; + if (a == NULL && b == NULL) + { + ret = TRUE; + goto out; + } + if (a == NULL || b == NULL) + goto out; + if (g_strv_length (a) != g_strv_length (b)) + goto out; + for (n = 0; a[n] != NULL; n++) + if (g_strcmp0 (a[n], b[n]) != 0) + goto out; + ret = TRUE; +out: + return ret; +} + +static gboolean +_g_variant_equal0 (GVariant *a, GVariant *b) +{ + gboolean ret = FALSE; + if (a == NULL && b == NULL) + { + ret = TRUE; + goto out; + } + if (a == NULL || b == NULL) + goto out; + ret = g_variant_equal (a, b); +out: + return ret; +} + +G_GNUC_UNUSED static gboolean +_g_value_equal (const GValue *a, const GValue *b) +{ + gboolean ret = FALSE; + g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b)); + switch (G_VALUE_TYPE (a)) + { + case G_TYPE_BOOLEAN: + ret = (g_value_get_boolean (a) == g_value_get_boolean (b)); + break; + case G_TYPE_UCHAR: + ret = (g_value_get_uchar (a) == g_value_get_uchar (b)); + break; + case G_TYPE_INT: + ret = (g_value_get_int (a) == g_value_get_int (b)); + break; + case G_TYPE_UINT: + ret = (g_value_get_uint (a) == g_value_get_uint (b)); + break; + case G_TYPE_INT64: + ret = (g_value_get_int64 (a) == g_value_get_int64 (b)); + break; + case G_TYPE_UINT64: + ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b)); + break; + case G_TYPE_DOUBLE: + { + /* Avoid -Wfloat-equal warnings by doing a direct bit compare */ + gdouble da = g_value_get_double (a); + gdouble db = g_value_get_double (b); + ret = memcmp (&da, &db, sizeof (gdouble)) == 0; + } + break; + case G_TYPE_STRING: + ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0); + break; + case G_TYPE_VARIANT: + ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b)); + break; + default: + if (G_VALUE_TYPE (a) == G_TYPE_STRV) + ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b)); + else + g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a))); + break; + } + return ret; +} + +/* ------------------------------------------------------------------------ + * Code for interface org.freedesktop.DBus + * ------------------------------------------------------------------------ + */ + +/** + * SECTION:_GFreedesktopDBus + * @title: _GFreedesktopDBus + * @short_description: Generated C code for the org.freedesktop.DBus D-Bus interface + * + * This section contains code for working with the org.freedesktop.DBus D-Bus interface in C. + */ + +/* ---- Introspection data for org.freedesktop.DBus ---- */ + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_hello_OUT_ARG_assigned_name = +{ + { + -1, + (gchar *) "assigned_name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_hello_OUT_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_hello_OUT_ARG_assigned_name, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_hello = +{ + { + -1, + (gchar *) "Hello", + NULL, + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_hello_OUT_ARG_pointers, + NULL + }, + "handle-hello", + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_request_name_IN_ARG_name = +{ + { + -1, + (gchar *) "name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_request_name_IN_ARG_flags = +{ + { + -1, + (gchar *) "flags", + (gchar *) "u", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_request_name_IN_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_request_name_IN_ARG_name, + &__g_freedesktop_dbus_method_info_request_name_IN_ARG_flags, + NULL +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_request_name_OUT_ARG_value = +{ + { + -1, + (gchar *) "value", + (gchar *) "u", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_request_name_OUT_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_request_name_OUT_ARG_value, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_request_name = +{ + { + -1, + (gchar *) "RequestName", + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_request_name_IN_ARG_pointers, + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_request_name_OUT_ARG_pointers, + NULL + }, + "handle-request-name", + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_release_name_IN_ARG_name = +{ + { + -1, + (gchar *) "name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_release_name_IN_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_release_name_IN_ARG_name, + NULL +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_release_name_OUT_ARG_value = +{ + { + -1, + (gchar *) "value", + (gchar *) "u", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_release_name_OUT_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_release_name_OUT_ARG_value, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_release_name = +{ + { + -1, + (gchar *) "ReleaseName", + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_release_name_IN_ARG_pointers, + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_release_name_OUT_ARG_pointers, + NULL + }, + "handle-release-name", + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_start_service_by_name_IN_ARG_name = +{ + { + -1, + (gchar *) "name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_start_service_by_name_IN_ARG_flags = +{ + { + -1, + (gchar *) "flags", + (gchar *) "u", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_start_service_by_name_IN_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_start_service_by_name_IN_ARG_name, + &__g_freedesktop_dbus_method_info_start_service_by_name_IN_ARG_flags, + NULL +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_start_service_by_name_OUT_ARG_value = +{ + { + -1, + (gchar *) "value", + (gchar *) "u", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_start_service_by_name_OUT_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_start_service_by_name_OUT_ARG_value, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_start_service_by_name = +{ + { + -1, + (gchar *) "StartServiceByName", + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_start_service_by_name_IN_ARG_pointers, + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_start_service_by_name_OUT_ARG_pointers, + NULL + }, + "handle-start-service-by-name", + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_name_has_owner_IN_ARG_name = +{ + { + -1, + (gchar *) "name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_name_has_owner_IN_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_name_has_owner_IN_ARG_name, + NULL +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_name_has_owner_OUT_ARG_has_owner = +{ + { + -1, + (gchar *) "has_owner", + (gchar *) "b", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_name_has_owner_OUT_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_name_has_owner_OUT_ARG_has_owner, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_name_has_owner = +{ + { + -1, + (gchar *) "NameHasOwner", + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_name_has_owner_IN_ARG_pointers, + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_name_has_owner_OUT_ARG_pointers, + NULL + }, + "handle-name-has-owner", + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_list_names_OUT_ARG_names = +{ + { + -1, + (gchar *) "names", + (gchar *) "as", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_list_names_OUT_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_list_names_OUT_ARG_names, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_list_names = +{ + { + -1, + (gchar *) "ListNames", + NULL, + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_list_names_OUT_ARG_pointers, + NULL + }, + "handle-list-names", + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_list_activatable_names_OUT_ARG_activatable_names = +{ + { + -1, + (gchar *) "activatable_names", + (gchar *) "as", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_list_activatable_names_OUT_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_list_activatable_names_OUT_ARG_activatable_names, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_list_activatable_names = +{ + { + -1, + (gchar *) "ListActivatableNames", + NULL, + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_list_activatable_names_OUT_ARG_pointers, + NULL + }, + "handle-list-activatable-names", + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_add_match_IN_ARG_rule = +{ + { + -1, + (gchar *) "rule", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_add_match_IN_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_add_match_IN_ARG_rule, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_add_match = +{ + { + -1, + (gchar *) "AddMatch", + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_add_match_IN_ARG_pointers, + NULL, + NULL + }, + "handle-add-match", + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_remove_match_IN_ARG_rule = +{ + { + -1, + (gchar *) "rule", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_remove_match_IN_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_remove_match_IN_ARG_rule, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_remove_match = +{ + { + -1, + (gchar *) "RemoveMatch", + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_remove_match_IN_ARG_pointers, + NULL, + NULL + }, + "handle-remove-match", + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_get_name_owner_IN_ARG_name = +{ + { + -1, + (gchar *) "name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_get_name_owner_IN_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_get_name_owner_IN_ARG_name, + NULL +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_get_name_owner_OUT_ARG_unique_name = +{ + { + -1, + (gchar *) "unique_name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_get_name_owner_OUT_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_get_name_owner_OUT_ARG_unique_name, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_get_name_owner = +{ + { + -1, + (gchar *) "GetNameOwner", + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_get_name_owner_IN_ARG_pointers, + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_get_name_owner_OUT_ARG_pointers, + NULL + }, + "handle-get-name-owner", + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_list_queued_owners_IN_ARG_name = +{ + { + -1, + (gchar *) "name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_list_queued_owners_IN_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_list_queued_owners_IN_ARG_name, + NULL +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_list_queued_owners_OUT_ARG_queued_owners = +{ + { + -1, + (gchar *) "queued_owners", + (gchar *) "as", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_list_queued_owners_OUT_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_list_queued_owners_OUT_ARG_queued_owners, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_list_queued_owners = +{ + { + -1, + (gchar *) "ListQueuedOwners", + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_list_queued_owners_IN_ARG_pointers, + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_list_queued_owners_OUT_ARG_pointers, + NULL + }, + "handle-list-queued-owners", + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_get_connection_unix_user_IN_ARG_name = +{ + { + -1, + (gchar *) "name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_get_connection_unix_user_IN_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_get_connection_unix_user_IN_ARG_name, + NULL +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_get_connection_unix_user_OUT_ARG_uid = +{ + { + -1, + (gchar *) "uid", + (gchar *) "u", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_get_connection_unix_user_OUT_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_get_connection_unix_user_OUT_ARG_uid, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_get_connection_unix_user = +{ + { + -1, + (gchar *) "GetConnectionUnixUser", + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_get_connection_unix_user_IN_ARG_pointers, + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_get_connection_unix_user_OUT_ARG_pointers, + NULL + }, + "handle-get-connection-unix-user", + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_get_connection_unix_process_id_IN_ARG_name = +{ + { + -1, + (gchar *) "name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_get_connection_unix_process_id_IN_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_get_connection_unix_process_id_IN_ARG_name, + NULL +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_get_connection_unix_process_id_OUT_ARG_pid = +{ + { + -1, + (gchar *) "pid", + (gchar *) "u", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_get_connection_unix_process_id_OUT_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_get_connection_unix_process_id_OUT_ARG_pid, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_get_connection_unix_process_id = +{ + { + -1, + (gchar *) "GetConnectionUnixProcessID", + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_get_connection_unix_process_id_IN_ARG_pointers, + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_get_connection_unix_process_id_OUT_ARG_pointers, + NULL + }, + "handle-get-connection-unix-process-id", + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_get_connection_selinux_security_context_IN_ARG_name = +{ + { + -1, + (gchar *) "name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_get_connection_selinux_security_context_IN_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_get_connection_selinux_security_context_IN_ARG_name, + NULL +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_get_connection_selinux_security_context_OUT_ARG_security_context = +{ + { + -1, + (gchar *) "security_context", + (gchar *) "ay", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_get_connection_selinux_security_context_OUT_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_get_connection_selinux_security_context_OUT_ARG_security_context, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_get_connection_selinux_security_context = +{ + { + -1, + (gchar *) "GetConnectionSELinuxSecurityContext", + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_get_connection_selinux_security_context_IN_ARG_pointers, + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_get_connection_selinux_security_context_OUT_ARG_pointers, + NULL + }, + "handle-get-connection-selinux-security-context", + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_update_activation_environment_IN_ARG_environment = +{ + { + -1, + (gchar *) "environment", + (gchar *) "a{ss}", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_update_activation_environment_IN_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_update_activation_environment_IN_ARG_environment, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_update_activation_environment = +{ + { + -1, + (gchar *) "UpdateActivationEnvironment", + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_update_activation_environment_IN_ARG_pointers, + NULL, + NULL + }, + "handle-update-activation-environment", + FALSE +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_reload_config = +{ + { + -1, + (gchar *) "ReloadConfig", + NULL, + NULL, + NULL + }, + "handle-reload-config", + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_method_info_get_id_OUT_ARG_unique_id = +{ + { + -1, + (gchar *) "unique_id", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_method_info_get_id_OUT_ARG_pointers[] = +{ + &__g_freedesktop_dbus_method_info_get_id_OUT_ARG_unique_id, + NULL +}; + +static const _ExtendedGDBusMethodInfo __g_freedesktop_dbus_method_info_get_id = +{ + { + -1, + (gchar *) "GetId", + NULL, + (GDBusArgInfo **) &__g_freedesktop_dbus_method_info_get_id_OUT_ARG_pointers, + NULL + }, + "handle-get-id", + FALSE +}; + +static const _ExtendedGDBusMethodInfo * const __g_freedesktop_dbus_method_info_pointers[] = +{ + &__g_freedesktop_dbus_method_info_hello, + &__g_freedesktop_dbus_method_info_request_name, + &__g_freedesktop_dbus_method_info_release_name, + &__g_freedesktop_dbus_method_info_start_service_by_name, + &__g_freedesktop_dbus_method_info_name_has_owner, + &__g_freedesktop_dbus_method_info_list_names, + &__g_freedesktop_dbus_method_info_list_activatable_names, + &__g_freedesktop_dbus_method_info_add_match, + &__g_freedesktop_dbus_method_info_remove_match, + &__g_freedesktop_dbus_method_info_get_name_owner, + &__g_freedesktop_dbus_method_info_list_queued_owners, + &__g_freedesktop_dbus_method_info_get_connection_unix_user, + &__g_freedesktop_dbus_method_info_get_connection_unix_process_id, + &__g_freedesktop_dbus_method_info_get_connection_selinux_security_context, + &__g_freedesktop_dbus_method_info_update_activation_environment, + &__g_freedesktop_dbus_method_info_reload_config, + &__g_freedesktop_dbus_method_info_get_id, + NULL +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_signal_info_name_owner_changed_ARG_name = +{ + { + -1, + (gchar *) "name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_signal_info_name_owner_changed_ARG_old_owner = +{ + { + -1, + (gchar *) "old_owner", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_signal_info_name_owner_changed_ARG_new_owner = +{ + { + -1, + (gchar *) "new_owner", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_signal_info_name_owner_changed_ARG_pointers[] = +{ + &__g_freedesktop_dbus_signal_info_name_owner_changed_ARG_name, + &__g_freedesktop_dbus_signal_info_name_owner_changed_ARG_old_owner, + &__g_freedesktop_dbus_signal_info_name_owner_changed_ARG_new_owner, + NULL +}; + +static const _ExtendedGDBusSignalInfo __g_freedesktop_dbus_signal_info_name_owner_changed = +{ + { + -1, + (gchar *) "NameOwnerChanged", + (GDBusArgInfo **) &__g_freedesktop_dbus_signal_info_name_owner_changed_ARG_pointers, + NULL + }, + "name-owner-changed" +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_signal_info_name_lost_ARG_name = +{ + { + -1, + (gchar *) "name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_signal_info_name_lost_ARG_pointers[] = +{ + &__g_freedesktop_dbus_signal_info_name_lost_ARG_name, + NULL +}; + +static const _ExtendedGDBusSignalInfo __g_freedesktop_dbus_signal_info_name_lost = +{ + { + -1, + (gchar *) "NameLost", + (GDBusArgInfo **) &__g_freedesktop_dbus_signal_info_name_lost_ARG_pointers, + NULL + }, + "name-lost" +}; + +static const _ExtendedGDBusArgInfo __g_freedesktop_dbus_signal_info_name_acquired_ARG_name = +{ + { + -1, + (gchar *) "name", + (gchar *) "s", + NULL + }, + FALSE +}; + +static const _ExtendedGDBusArgInfo * const __g_freedesktop_dbus_signal_info_name_acquired_ARG_pointers[] = +{ + &__g_freedesktop_dbus_signal_info_name_acquired_ARG_name, + NULL +}; + +static const _ExtendedGDBusSignalInfo __g_freedesktop_dbus_signal_info_name_acquired = +{ + { + -1, + (gchar *) "NameAcquired", + (GDBusArgInfo **) &__g_freedesktop_dbus_signal_info_name_acquired_ARG_pointers, + NULL + }, + "name-acquired" +}; + +static const _ExtendedGDBusSignalInfo * const __g_freedesktop_dbus_signal_info_pointers[] = +{ + &__g_freedesktop_dbus_signal_info_name_owner_changed, + &__g_freedesktop_dbus_signal_info_name_lost, + &__g_freedesktop_dbus_signal_info_name_acquired, + NULL +}; + +static const _ExtendedGDBusInterfaceInfo __g_freedesktop_dbus_interface_info = +{ + { + -1, + (gchar *) "org.freedesktop.DBus", + (GDBusMethodInfo **) &__g_freedesktop_dbus_method_info_pointers, + (GDBusSignalInfo **) &__g_freedesktop_dbus_signal_info_pointers, + NULL, + NULL + }, + "freedesktop-dbus", +}; + + +/** + * _g_freedesktop_dbus_interface_info: + * + * Gets a machine-readable description of the org.freedesktop.DBus D-Bus interface. + * + * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free. + */ +GDBusInterfaceInfo * +_g_freedesktop_dbus_interface_info (void) +{ + return (GDBusInterfaceInfo *) &__g_freedesktop_dbus_interface_info.parent_struct; +} + +/** + * _g_freedesktop_dbus_override_properties: + * @klass: The class structure for a #GObject-derived class. + * @property_id_begin: The property id to assign to the first overridden property. + * + * Overrides all #GObject properties in the #_GFreedesktopDBus interface for a concrete class. + * The properties are overridden in the order they are defined. + * + * Returns: The last property id. + */ +guint +_g_freedesktop_dbus_override_properties (GObjectClass *klass, guint property_id_begin) +{ + return property_id_begin - 1; +} + + + +/** + * _GFreedesktopDBus: + * + * Abstract interface type for the D-Bus interface org.freedesktop.DBus. + */ + +/** + * _GFreedesktopDBusIface: + * @parent_iface: The parent interface. + * @handle_add_match: Handler for the #_GFreedesktopDBus::handle-add-match signal. + * @handle_get_connection_selinux_security_context: Handler for the #_GFreedesktopDBus::handle-get-connection-selinux-security-context signal. + * @handle_get_connection_unix_process_id: Handler for the #_GFreedesktopDBus::handle-get-connection-unix-process-id signal. + * @handle_get_connection_unix_user: Handler for the #_GFreedesktopDBus::handle-get-connection-unix-user signal. + * @handle_get_id: Handler for the #_GFreedesktopDBus::handle-get-id signal. + * @handle_get_name_owner: Handler for the #_GFreedesktopDBus::handle-get-name-owner signal. + * @handle_hello: Handler for the #_GFreedesktopDBus::handle-hello signal. + * @handle_list_activatable_names: Handler for the #_GFreedesktopDBus::handle-list-activatable-names signal. + * @handle_list_names: Handler for the #_GFreedesktopDBus::handle-list-names signal. + * @handle_list_queued_owners: Handler for the #_GFreedesktopDBus::handle-list-queued-owners signal. + * @handle_name_has_owner: Handler for the #_GFreedesktopDBus::handle-name-has-owner signal. + * @handle_release_name: Handler for the #_GFreedesktopDBus::handle-release-name signal. + * @handle_reload_config: Handler for the #_GFreedesktopDBus::handle-reload-config signal. + * @handle_remove_match: Handler for the #_GFreedesktopDBus::handle-remove-match signal. + * @handle_request_name: Handler for the #_GFreedesktopDBus::handle-request-name signal. + * @handle_start_service_by_name: Handler for the #_GFreedesktopDBus::handle-start-service-by-name signal. + * @handle_update_activation_environment: Handler for the #_GFreedesktopDBus::handle-update-activation-environment signal. + * @name_acquired: Handler for the #_GFreedesktopDBus::name-acquired signal. + * @name_lost: Handler for the #_GFreedesktopDBus::name-lost signal. + * @name_owner_changed: Handler for the #_GFreedesktopDBus::name-owner-changed signal. + * + * Virtual table for the D-Bus interface org.freedesktop.DBus. + */ + +typedef _GFreedesktopDBusIface _GFreedesktopDBusInterface; +G_DEFINE_INTERFACE (_GFreedesktopDBus, _g_freedesktop_dbus, G_TYPE_OBJECT); + +static void +_g_freedesktop_dbus_default_init (_GFreedesktopDBusIface *iface) +{ + /* GObject signals for incoming D-Bus method calls: */ + /** + * _GFreedesktopDBus::handle-hello: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * + * Signal emitted when a remote caller is invoking the Hello() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_hello() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-hello", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_hello), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 1, + G_TYPE_DBUS_METHOD_INVOCATION); + + /** + * _GFreedesktopDBus::handle-request-name: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * @arg_name: Argument passed by remote caller. + * @arg_flags: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the RequestName() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_request_name() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-request-name", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_request_name), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 3, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_UINT); + + /** + * _GFreedesktopDBus::handle-release-name: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * @arg_name: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the ReleaseName() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_release_name() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-release-name", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_release_name), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 2, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); + + /** + * _GFreedesktopDBus::handle-start-service-by-name: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * @arg_name: Argument passed by remote caller. + * @arg_flags: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the StartServiceByName() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_start_service_by_name() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-start-service-by-name", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_start_service_by_name), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 3, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING, G_TYPE_UINT); + + /** + * _GFreedesktopDBus::handle-name-has-owner: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * @arg_name: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the NameHasOwner() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_name_has_owner() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-name-has-owner", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_name_has_owner), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 2, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); + + /** + * _GFreedesktopDBus::handle-list-names: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * + * Signal emitted when a remote caller is invoking the ListNames() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_list_names() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-list-names", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_list_names), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 1, + G_TYPE_DBUS_METHOD_INVOCATION); + + /** + * _GFreedesktopDBus::handle-list-activatable-names: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * + * Signal emitted when a remote caller is invoking the ListActivatableNames() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_list_activatable_names() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-list-activatable-names", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_list_activatable_names), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 1, + G_TYPE_DBUS_METHOD_INVOCATION); + + /** + * _GFreedesktopDBus::handle-add-match: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * @arg_rule: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the AddMatch() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_add_match() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-add-match", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_add_match), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 2, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); + + /** + * _GFreedesktopDBus::handle-remove-match: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * @arg_rule: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the RemoveMatch() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_remove_match() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-remove-match", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_remove_match), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 2, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); + + /** + * _GFreedesktopDBus::handle-get-name-owner: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * @arg_name: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the GetNameOwner() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_get_name_owner() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-get-name-owner", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_get_name_owner), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 2, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); + + /** + * _GFreedesktopDBus::handle-list-queued-owners: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * @arg_name: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the ListQueuedOwners() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_list_queued_owners() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-list-queued-owners", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_list_queued_owners), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 2, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); + + /** + * _GFreedesktopDBus::handle-get-connection-unix-user: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * @arg_name: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the GetConnectionUnixUser() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_get_connection_unix_user() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-get-connection-unix-user", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_get_connection_unix_user), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 2, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); + + /** + * _GFreedesktopDBus::handle-get-connection-unix-process-id: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * @arg_name: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the GetConnectionUnixProcessID() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_get_connection_unix_process_id() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-get-connection-unix-process-id", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_get_connection_unix_process_id), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 2, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); + + /** + * _GFreedesktopDBus::handle-get-connection-selinux-security-context: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * @arg_name: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the GetConnectionSELinuxSecurityContext() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_get_connection_selinux_security_context() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-get-connection-selinux-security-context", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_get_connection_selinux_security_context), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 2, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING); + + /** + * _GFreedesktopDBus::handle-update-activation-environment: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * @arg_environment: Argument passed by remote caller. + * + * Signal emitted when a remote caller is invoking the UpdateActivationEnvironment() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_update_activation_environment() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-update-activation-environment", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_update_activation_environment), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 2, + G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_VARIANT); + + /** + * _GFreedesktopDBus::handle-reload-config: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * + * Signal emitted when a remote caller is invoking the ReloadConfig() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_reload_config() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-reload-config", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_reload_config), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 1, + G_TYPE_DBUS_METHOD_INVOCATION); + + /** + * _GFreedesktopDBus::handle-get-id: + * @object: A #_GFreedesktopDBus. + * @invocation: A #GDBusMethodInvocation. + * + * Signal emitted when a remote caller is invoking the GetId() D-Bus method. + * + * 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 _g_freedesktop_dbus_complete_get_id() 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. + * + * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run. + */ + g_signal_new ("handle-get-id", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, handle_get_id), + g_signal_accumulator_true_handled, + NULL, + g_cclosure_marshal_generic, + G_TYPE_BOOLEAN, + 1, + G_TYPE_DBUS_METHOD_INVOCATION); + + /* GObject signals for received D-Bus signals: */ + /** + * _GFreedesktopDBus::name-owner-changed: + * @object: A #_GFreedesktopDBus. + * @arg_name: Argument. + * @arg_old_owner: Argument. + * @arg_new_owner: Argument. + * + * On the client-side, this signal is emitted whenever the D-Bus signal "NameOwnerChanged" is received. + * + * 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. + */ + g_signal_new ("name-owner-changed", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, name_owner_changed), + NULL, + NULL, + g_cclosure_marshal_generic, + G_TYPE_NONE, + 3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); + + /** + * _GFreedesktopDBus::name-lost: + * @object: A #_GFreedesktopDBus. + * @arg_name: Argument. + * + * On the client-side, this signal is emitted whenever the D-Bus signal "NameLost" is received. + * + * 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. + */ + g_signal_new ("name-lost", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, name_lost), + NULL, + NULL, + g_cclosure_marshal_generic, + G_TYPE_NONE, + 1, G_TYPE_STRING); + + /** + * _GFreedesktopDBus::name-acquired: + * @object: A #_GFreedesktopDBus. + * @arg_name: Argument. + * + * On the client-side, this signal is emitted whenever the D-Bus signal "NameAcquired" is received. + * + * 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. + */ + g_signal_new ("name-acquired", + G_TYPE_FROM_INTERFACE (iface), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (_GFreedesktopDBusIface, name_acquired), + NULL, + NULL, + g_cclosure_marshal_generic, + G_TYPE_NONE, + 1, G_TYPE_STRING); + +} + +/** + * _g_freedesktop_dbus_emit_name_owner_changed: + * @object: A #_GFreedesktopDBus. + * @arg_name: Argument to pass with the signal. + * @arg_old_owner: Argument to pass with the signal. + * @arg_new_owner: Argument to pass with the signal. + * + * Emits the "NameOwnerChanged" D-Bus signal. + */ +void +_g_freedesktop_dbus_emit_name_owner_changed ( + _GFreedesktopDBus *object, + const gchar *arg_name, + const gchar *arg_old_owner, + const gchar *arg_new_owner) +{ + g_signal_emit_by_name (object, "name-owner-changed", arg_name, arg_old_owner, arg_new_owner); +} + +/** + * _g_freedesktop_dbus_emit_name_lost: + * @object: A #_GFreedesktopDBus. + * @arg_name: Argument to pass with the signal. + * + * Emits the "NameLost" D-Bus signal. + */ +void +_g_freedesktop_dbus_emit_name_lost ( + _GFreedesktopDBus *object, + const gchar *arg_name) +{ + g_signal_emit_by_name (object, "name-lost", arg_name); +} + +/** + * _g_freedesktop_dbus_emit_name_acquired: + * @object: A #_GFreedesktopDBus. + * @arg_name: Argument to pass with the signal. + * + * Emits the "NameAcquired" D-Bus signal. + */ +void +_g_freedesktop_dbus_emit_name_acquired ( + _GFreedesktopDBus *object, + const gchar *arg_name) +{ + g_signal_emit_by_name (object, "name-acquired", arg_name); +} + +/** + * _g_freedesktop_dbus_call_hello: + * @proxy: A #_GFreedesktopDBusProxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the Hello() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_hello_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_hello_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_hello ( + _GFreedesktopDBus *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "Hello", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_hello_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_assigned_name: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_hello(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_hello(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_hello_finish ( + _GFreedesktopDBus *proxy, + gchar **out_assigned_name, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(s)", + out_assigned_name); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_hello_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_assigned_name: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the Hello() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_hello() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_hello_sync ( + _GFreedesktopDBus *proxy, + gchar **out_assigned_name, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "Hello", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(s)", + out_assigned_name); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_request_name: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @arg_flags: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the RequestName() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_request_name_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_request_name_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_request_name ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + guint arg_flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "RequestName", + g_variant_new ("(su)", + arg_name, + arg_flags), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_request_name_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_value: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_request_name(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_request_name(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_request_name_finish ( + _GFreedesktopDBus *proxy, + guint *out_value, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(u)", + out_value); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_request_name_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @arg_flags: Argument to pass with the method invocation. + * @out_value: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the RequestName() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_request_name() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_request_name_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + guint arg_flags, + guint *out_value, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "RequestName", + g_variant_new ("(su)", + arg_name, + arg_flags), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(u)", + out_value); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_release_name: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the ReleaseName() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_release_name_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_release_name_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_release_name ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "ReleaseName", + g_variant_new ("(s)", + arg_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_release_name_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_value: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_release_name(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_release_name(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_release_name_finish ( + _GFreedesktopDBus *proxy, + guint *out_value, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(u)", + out_value); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_release_name_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @out_value: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the ReleaseName() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_release_name() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_release_name_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + guint *out_value, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "ReleaseName", + g_variant_new ("(s)", + arg_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(u)", + out_value); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_start_service_by_name: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @arg_flags: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the StartServiceByName() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_start_service_by_name_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_start_service_by_name_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_start_service_by_name ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + guint arg_flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "StartServiceByName", + g_variant_new ("(su)", + arg_name, + arg_flags), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_start_service_by_name_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_value: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_start_service_by_name(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_start_service_by_name(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_start_service_by_name_finish ( + _GFreedesktopDBus *proxy, + guint *out_value, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(u)", + out_value); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_start_service_by_name_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @arg_flags: Argument to pass with the method invocation. + * @out_value: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the StartServiceByName() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_start_service_by_name() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_start_service_by_name_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + guint arg_flags, + guint *out_value, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "StartServiceByName", + g_variant_new ("(su)", + arg_name, + arg_flags), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(u)", + out_value); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_name_has_owner: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the NameHasOwner() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_name_has_owner_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_name_has_owner_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_name_has_owner ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "NameHasOwner", + g_variant_new ("(s)", + arg_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_name_has_owner_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_has_owner: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_name_has_owner(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_name_has_owner(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_name_has_owner_finish ( + _GFreedesktopDBus *proxy, + gboolean *out_has_owner, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(b)", + out_has_owner); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_name_has_owner_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @out_has_owner: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the NameHasOwner() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_name_has_owner() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_name_has_owner_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + gboolean *out_has_owner, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "NameHasOwner", + g_variant_new ("(s)", + arg_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(b)", + out_has_owner); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_list_names: + * @proxy: A #_GFreedesktopDBusProxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the ListNames() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_list_names_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_list_names_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_list_names ( + _GFreedesktopDBus *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "ListNames", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_list_names_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_names: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_list_names(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_list_names(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_list_names_finish ( + _GFreedesktopDBus *proxy, + gchar ***out_names, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(^as)", + out_names); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_list_names_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_names: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the ListNames() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_list_names() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_list_names_sync ( + _GFreedesktopDBus *proxy, + gchar ***out_names, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "ListNames", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(^as)", + out_names); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_list_activatable_names: + * @proxy: A #_GFreedesktopDBusProxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the ListActivatableNames() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_list_activatable_names_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_list_activatable_names_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_list_activatable_names ( + _GFreedesktopDBus *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "ListActivatableNames", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_list_activatable_names_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_activatable_names: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_list_activatable_names(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_list_activatable_names(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_list_activatable_names_finish ( + _GFreedesktopDBus *proxy, + gchar ***out_activatable_names, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(^as)", + out_activatable_names); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_list_activatable_names_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_activatable_names: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the ListActivatableNames() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_list_activatable_names() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_list_activatable_names_sync ( + _GFreedesktopDBus *proxy, + gchar ***out_activatable_names, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "ListActivatableNames", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(^as)", + out_activatable_names); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_add_match: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_rule: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the AddMatch() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_add_match_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_add_match_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_add_match ( + _GFreedesktopDBus *proxy, + const gchar *arg_rule, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "AddMatch", + g_variant_new ("(s)", + arg_rule), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_add_match_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_add_match(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_add_match(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_add_match_finish ( + _GFreedesktopDBus *proxy, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_add_match_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_rule: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the AddMatch() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_add_match() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_add_match_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_rule, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "AddMatch", + g_variant_new ("(s)", + arg_rule), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_remove_match: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_rule: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the RemoveMatch() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_remove_match_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_remove_match_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_remove_match ( + _GFreedesktopDBus *proxy, + const gchar *arg_rule, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "RemoveMatch", + g_variant_new ("(s)", + arg_rule), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_remove_match_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_remove_match(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_remove_match(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_remove_match_finish ( + _GFreedesktopDBus *proxy, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_remove_match_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_rule: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the RemoveMatch() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_remove_match() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_remove_match_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_rule, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "RemoveMatch", + g_variant_new ("(s)", + arg_rule), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_get_name_owner: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the GetNameOwner() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_get_name_owner_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_get_name_owner_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_get_name_owner ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "GetNameOwner", + g_variant_new ("(s)", + arg_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_get_name_owner_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_unique_name: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_get_name_owner(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_get_name_owner(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_get_name_owner_finish ( + _GFreedesktopDBus *proxy, + gchar **out_unique_name, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(s)", + out_unique_name); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_get_name_owner_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @out_unique_name: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the GetNameOwner() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_get_name_owner() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_get_name_owner_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + gchar **out_unique_name, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "GetNameOwner", + g_variant_new ("(s)", + arg_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(s)", + out_unique_name); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_list_queued_owners: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the ListQueuedOwners() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_list_queued_owners_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_list_queued_owners_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_list_queued_owners ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "ListQueuedOwners", + g_variant_new ("(s)", + arg_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_list_queued_owners_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_queued_owners: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_list_queued_owners(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_list_queued_owners(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_list_queued_owners_finish ( + _GFreedesktopDBus *proxy, + gchar ***out_queued_owners, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(^as)", + out_queued_owners); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_list_queued_owners_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @out_queued_owners: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the ListQueuedOwners() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_list_queued_owners() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_list_queued_owners_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + gchar ***out_queued_owners, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "ListQueuedOwners", + g_variant_new ("(s)", + arg_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(^as)", + out_queued_owners); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_get_connection_unix_user: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the GetConnectionUnixUser() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_get_connection_unix_user_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_get_connection_unix_user_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_get_connection_unix_user ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "GetConnectionUnixUser", + g_variant_new ("(s)", + arg_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_get_connection_unix_user_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_uid: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_get_connection_unix_user(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_get_connection_unix_user(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_get_connection_unix_user_finish ( + _GFreedesktopDBus *proxy, + guint *out_uid, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(u)", + out_uid); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_get_connection_unix_user_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @out_uid: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the GetConnectionUnixUser() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_get_connection_unix_user() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_get_connection_unix_user_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + guint *out_uid, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "GetConnectionUnixUser", + g_variant_new ("(s)", + arg_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(u)", + out_uid); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_get_connection_unix_process_id: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the GetConnectionUnixProcessID() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_get_connection_unix_process_id_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_get_connection_unix_process_id_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_get_connection_unix_process_id ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "GetConnectionUnixProcessID", + g_variant_new ("(s)", + arg_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_get_connection_unix_process_id_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_pid: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_get_connection_unix_process_id(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_get_connection_unix_process_id(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_get_connection_unix_process_id_finish ( + _GFreedesktopDBus *proxy, + guint *out_pid, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(u)", + out_pid); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_get_connection_unix_process_id_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @out_pid: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the GetConnectionUnixProcessID() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_get_connection_unix_process_id() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_get_connection_unix_process_id_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + guint *out_pid, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "GetConnectionUnixProcessID", + g_variant_new ("(s)", + arg_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(u)", + out_pid); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_get_connection_selinux_security_context: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the GetConnectionSELinuxSecurityContext() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_get_connection_selinux_security_context_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_get_connection_selinux_security_context_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_get_connection_selinux_security_context ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "GetConnectionSELinuxSecurityContext", + g_variant_new ("(s)", + arg_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_get_connection_selinux_security_context_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_security_context: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_get_connection_selinux_security_context(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_get_connection_selinux_security_context(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_get_connection_selinux_security_context_finish ( + _GFreedesktopDBus *proxy, + gchar **out_security_context, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(^ay)", + out_security_context); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_get_connection_selinux_security_context_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_name: Argument to pass with the method invocation. + * @out_security_context: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the GetConnectionSELinuxSecurityContext() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_get_connection_selinux_security_context() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_get_connection_selinux_security_context_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + gchar **out_security_context, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "GetConnectionSELinuxSecurityContext", + g_variant_new ("(s)", + arg_name), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(^ay)", + out_security_context); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_update_activation_environment: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_environment: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the UpdateActivationEnvironment() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_update_activation_environment_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_update_activation_environment_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_update_activation_environment ( + _GFreedesktopDBus *proxy, + GVariant *arg_environment, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "UpdateActivationEnvironment", + g_variant_new ("(@a{ss})", + arg_environment), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_update_activation_environment_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_update_activation_environment(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_update_activation_environment(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_update_activation_environment_finish ( + _GFreedesktopDBus *proxy, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_update_activation_environment_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @arg_environment: Argument to pass with the method invocation. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the UpdateActivationEnvironment() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_update_activation_environment() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_update_activation_environment_sync ( + _GFreedesktopDBus *proxy, + GVariant *arg_environment, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "UpdateActivationEnvironment", + g_variant_new ("(@a{ss})", + arg_environment), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_reload_config: + * @proxy: A #_GFreedesktopDBusProxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the ReloadConfig() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_reload_config_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_reload_config_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_reload_config ( + _GFreedesktopDBus *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "ReloadConfig", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_reload_config_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_reload_config(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_reload_config(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_reload_config_finish ( + _GFreedesktopDBus *proxy, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_reload_config_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the ReloadConfig() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_reload_config() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_reload_config_sync ( + _GFreedesktopDBus *proxy, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "ReloadConfig", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "()"); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_get_id: + * @proxy: A #_GFreedesktopDBusProxy. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL. + * @user_data: User data to pass to @callback. + * + * Asynchronously invokes the GetId() D-Bus method on @proxy. + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_call_get_id_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_call_get_id_sync() for the synchronous, blocking version of this method. + */ +void +_g_freedesktop_dbus_call_get_id ( + _GFreedesktopDBus *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_dbus_proxy_call (G_DBUS_PROXY (proxy), + "GetId", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + callback, + user_data); +} + +/** + * _g_freedesktop_dbus_call_get_id_finish: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_unique_id: (out): Return location for return parameter or %NULL to ignore. + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_get_id(). + * @error: Return location for error or %NULL. + * + * Finishes an operation started with _g_freedesktop_dbus_call_get_id(). + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_get_id_finish ( + _GFreedesktopDBus *proxy, + gchar **out_unique_id, + GAsyncResult *res, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(s)", + out_unique_id); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_call_get_id_sync: + * @proxy: A #_GFreedesktopDBusProxy. + * @out_unique_id: (out): Return location for return parameter or %NULL to ignore. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL. + * + * Synchronously invokes the GetId() D-Bus method on @proxy. The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_call_get_id() for the asynchronous version of this method. + * + * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set. + */ +gboolean +_g_freedesktop_dbus_call_get_id_sync ( + _GFreedesktopDBus *proxy, + gchar **out_unique_id, + GCancellable *cancellable, + GError **error) +{ + GVariant *_ret; + _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy), + "GetId", + g_variant_new ("()"), + G_DBUS_CALL_FLAGS_NONE, + -1, + cancellable, + error); + if (_ret == NULL) + goto _out; + g_variant_get (_ret, + "(s)", + out_unique_id); + g_variant_unref (_ret); +_out: + return _ret != NULL; +} + +/** + * _g_freedesktop_dbus_complete_hello: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @assigned_name: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the Hello() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_hello ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *assigned_name) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(s)", + assigned_name)); +} + +/** + * _g_freedesktop_dbus_complete_request_name: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @value: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the RequestName() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_request_name ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + guint value) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(u)", + value)); +} + +/** + * _g_freedesktop_dbus_complete_release_name: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @value: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the ReleaseName() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_release_name ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + guint value) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(u)", + value)); +} + +/** + * _g_freedesktop_dbus_complete_start_service_by_name: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @value: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the StartServiceByName() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_start_service_by_name ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + guint value) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(u)", + value)); +} + +/** + * _g_freedesktop_dbus_complete_name_has_owner: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @has_owner: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the NameHasOwner() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_name_has_owner ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + gboolean has_owner) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(b)", + has_owner)); +} + +/** + * _g_freedesktop_dbus_complete_list_names: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @names: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the ListNames() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_list_names ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *const *names) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(^as)", + names)); +} + +/** + * _g_freedesktop_dbus_complete_list_activatable_names: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @activatable_names: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the ListActivatableNames() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_list_activatable_names ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *const *activatable_names) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(^as)", + activatable_names)); +} + +/** + * _g_freedesktop_dbus_complete_add_match: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * + * Helper function used in service implementations to finish handling invocations of the AddMatch() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_add_match ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("()")); +} + +/** + * _g_freedesktop_dbus_complete_remove_match: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * + * Helper function used in service implementations to finish handling invocations of the RemoveMatch() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_remove_match ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("()")); +} + +/** + * _g_freedesktop_dbus_complete_get_name_owner: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @unique_name: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the GetNameOwner() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_get_name_owner ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *unique_name) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(s)", + unique_name)); +} + +/** + * _g_freedesktop_dbus_complete_list_queued_owners: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @queued_owners: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the ListQueuedOwners() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_list_queued_owners ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *const *queued_owners) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(^as)", + queued_owners)); +} + +/** + * _g_freedesktop_dbus_complete_get_connection_unix_user: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @uid: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the GetConnectionUnixUser() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_get_connection_unix_user ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + guint uid) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(u)", + uid)); +} + +/** + * _g_freedesktop_dbus_complete_get_connection_unix_process_id: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @pid: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the GetConnectionUnixProcessID() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_get_connection_unix_process_id ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + guint pid) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(u)", + pid)); +} + +/** + * _g_freedesktop_dbus_complete_get_connection_selinux_security_context: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @security_context: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the GetConnectionSELinuxSecurityContext() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_get_connection_selinux_security_context ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *security_context) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(^ay)", + security_context)); +} + +/** + * _g_freedesktop_dbus_complete_update_activation_environment: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * + * Helper function used in service implementations to finish handling invocations of the UpdateActivationEnvironment() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_update_activation_environment ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("()")); +} + +/** + * _g_freedesktop_dbus_complete_reload_config: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * + * Helper function used in service implementations to finish handling invocations of the ReloadConfig() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_reload_config ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("()")); +} + +/** + * _g_freedesktop_dbus_complete_get_id: + * @object: A #_GFreedesktopDBus. + * @invocation: (transfer full): A #GDBusMethodInvocation. + * @unique_id: Parameter to return. + * + * Helper function used in service implementations to finish handling invocations of the GetId() 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. + * + * This method will free @invocation, you cannot use it afterwards. + */ +void +_g_freedesktop_dbus_complete_get_id ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *unique_id) +{ + g_dbus_method_invocation_return_value (invocation, + g_variant_new ("(s)", + unique_id)); +} + +/* ------------------------------------------------------------------------ */ + +/** + * _GFreedesktopDBusProxy: + * + * The #_GFreedesktopDBusProxy structure contains only private data and should only be accessed using the provided API. + */ + +/** + * _GFreedesktopDBusProxyClass: + * @parent_class: The parent class. + * + * Class structure for #_GFreedesktopDBusProxy. + */ + +struct __GFreedesktopDBusProxyPrivate +{ + GData *qdata; +}; + +static void _g_freedesktop_dbus_proxy_iface_init (_GFreedesktopDBusIface *iface); + +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 +G_DEFINE_TYPE_WITH_CODE (_GFreedesktopDBusProxy, _g_freedesktop_dbus_proxy, G_TYPE_DBUS_PROXY, + G_ADD_PRIVATE (_GFreedesktopDBusProxy) + G_IMPLEMENT_INTERFACE (_G_TYPE_FREEDESKTOP_DBUS, _g_freedesktop_dbus_proxy_iface_init)); + +#else +G_DEFINE_TYPE_WITH_CODE (_GFreedesktopDBusProxy, _g_freedesktop_dbus_proxy, G_TYPE_DBUS_PROXY, + G_IMPLEMENT_INTERFACE (_G_TYPE_FREEDESKTOP_DBUS, _g_freedesktop_dbus_proxy_iface_init)); + +#endif +static void +_g_freedesktop_dbus_proxy_finalize (GObject *object) +{ + _GFreedesktopDBusProxy *proxy = _G_FREEDESKTOP_DBUS_PROXY (object); + g_datalist_clear (&proxy->priv->qdata); + G_OBJECT_CLASS (_g_freedesktop_dbus_proxy_parent_class)->finalize (object); +} + +static void +_g_freedesktop_dbus_proxy_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec G_GNUC_UNUSED) +{ +} + +static void +_g_freedesktop_dbus_proxy_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec G_GNUC_UNUSED) +{ +} + +static void +_g_freedesktop_dbus_proxy_g_signal (GDBusProxy *proxy, + const gchar *sender_name G_GNUC_UNUSED, + const gchar *signal_name, + GVariant *parameters) +{ + _ExtendedGDBusSignalInfo *info; + GVariantIter iter; + GVariant *child; + GValue *paramv; + guint num_params; + guint n; + guint signal_id; + info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &__g_freedesktop_dbus_interface_info.parent_struct, signal_name); + if (info == NULL) + return; + num_params = g_variant_n_children (parameters); + paramv = g_new0 (GValue, num_params + 1); + g_value_init (¶mv[0], _G_TYPE_FREEDESKTOP_DBUS); + g_value_set_object (¶mv[0], proxy); + g_variant_iter_init (&iter, parameters); + n = 1; + while ((child = g_variant_iter_next_value (&iter)) != NULL) + { + _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1]; + if (arg_info->use_gvariant) + { + g_value_init (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); + g_variant_unref (child); + } + signal_id = g_signal_lookup (info->signal_name, _G_TYPE_FREEDESKTOP_DBUS); + g_signal_emitv (paramv, signal_id, 0, NULL); + for (n = 0; n < num_params + 1; n++) + g_value_unset (¶mv[n]); + g_free (paramv); +} + +static void +_g_freedesktop_dbus_proxy_g_properties_changed (GDBusProxy *_proxy, + GVariant *changed_properties, + const gchar *const *invalidated_properties) +{ + _GFreedesktopDBusProxy *proxy = _G_FREEDESKTOP_DBUS_PROXY (_proxy); + guint n; + const gchar *key; + GVariantIter *iter; + _ExtendedGDBusPropertyInfo *info; + g_variant_get (changed_properties, "a{sv}", &iter); + while (g_variant_iter_next (iter, "{&sv}", &key, NULL)) + { + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &__g_freedesktop_dbus_interface_info.parent_struct, key); + g_datalist_remove_data (&proxy->priv->qdata, key); + if (info != NULL) + g_object_notify (G_OBJECT (proxy), info->hyphen_name); + } + g_variant_iter_free (iter); + for (n = 0; invalidated_properties[n] != NULL; n++) + { + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &__g_freedesktop_dbus_interface_info.parent_struct, invalidated_properties[n]); + g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]); + if (info != NULL) + g_object_notify (G_OBJECT (proxy), info->hyphen_name); + } +} + +static void +_g_freedesktop_dbus_proxy_init (_GFreedesktopDBusProxy *proxy) +{ +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 + proxy->priv = _g_freedesktop_dbus_proxy_get_instance_private (proxy); +#else + proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, _G_TYPE_FREEDESKTOP_DBUS_PROXY, _GFreedesktopDBusProxyPrivate); +#endif + + g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), _g_freedesktop_dbus_interface_info ()); +} + +static void +_g_freedesktop_dbus_proxy_class_init (_GFreedesktopDBusProxyClass *klass) +{ + GObjectClass *gobject_class; + GDBusProxyClass *proxy_class; + + gobject_class = G_OBJECT_CLASS (klass); + gobject_class->finalize = _g_freedesktop_dbus_proxy_finalize; + gobject_class->get_property = _g_freedesktop_dbus_proxy_get_property; + gobject_class->set_property = _g_freedesktop_dbus_proxy_set_property; + + proxy_class = G_DBUS_PROXY_CLASS (klass); + proxy_class->g_signal = _g_freedesktop_dbus_proxy_g_signal; + proxy_class->g_properties_changed = _g_freedesktop_dbus_proxy_g_properties_changed; + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 + g_type_class_add_private (klass, sizeof (_GFreedesktopDBusProxyPrivate)); +#endif +} + +static void +_g_freedesktop_dbus_proxy_iface_init (_GFreedesktopDBusIface *iface) +{ +} + +/** + * _g_freedesktop_dbus_proxy_new: + * @connection: A #GDBusConnection. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied. + * @user_data: User data to pass to @callback. + * + * Asynchronously creates a proxy for the D-Bus interface org.freedesktop.DBus. See g_dbus_proxy_new() for more details. + * + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_proxy_new_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_proxy_new_sync() for the synchronous, blocking version of this constructor. + */ +void +_g_freedesktop_dbus_proxy_new ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_async_initable_new_async (_G_TYPE_FREEDESKTOP_DBUS_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", "org.freedesktop.DBus", NULL); +} + +/** + * _g_freedesktop_dbus_proxy_new_finish: + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_proxy_new(). + * @error: Return location for error or %NULL + * + * Finishes an operation started with _g_freedesktop_dbus_proxy_new(). + * + * Returns: (transfer full) (type _GFreedesktopDBusProxy): The constructed proxy object or %NULL if @error is set. + */ +_GFreedesktopDBus * +_g_freedesktop_dbus_proxy_new_finish ( + GAsyncResult *res, + GError **error) +{ + GObject *ret; + GObject *source_object; + source_object = g_async_result_get_source_object (res); + ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); + g_object_unref (source_object); + if (ret != NULL) + return _G_FREEDESKTOP_DBUS (ret); + else + return NULL; +} + +/** + * _g_freedesktop_dbus_proxy_new_sync: + * @connection: A #GDBusConnection. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection. + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL + * + * Synchronously creates a proxy for the D-Bus interface org.freedesktop.DBus. See g_dbus_proxy_new_sync() for more details. + * + * The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_proxy_new() for the asynchronous version of this constructor. + * + * Returns: (transfer full) (type _GFreedesktopDBusProxy): The constructed proxy object or %NULL if @error is set. + */ +_GFreedesktopDBus * +_g_freedesktop_dbus_proxy_new_sync ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error) +{ + GInitable *ret; + ret = g_initable_new (_G_TYPE_FREEDESKTOP_DBUS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus", NULL); + if (ret != NULL) + return _G_FREEDESKTOP_DBUS (ret); + else + return NULL; +} + + +/** + * _g_freedesktop_dbus_proxy_new_for_bus: + * @bus_type: A #GBusType. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: A bus name (well-known or unique). + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @callback: A #GAsyncReadyCallback to call when the request is satisfied. + * @user_data: User data to pass to @callback. + * + * Like _g_freedesktop_dbus_proxy_new() but takes a #GBusType instead of a #GDBusConnection. + * + * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from. + * You can then call _g_freedesktop_dbus_proxy_new_for_bus_finish() to get the result of the operation. + * + * See _g_freedesktop_dbus_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor. + */ +void +_g_freedesktop_dbus_proxy_new_for_bus ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_async_initable_new_async (_G_TYPE_FREEDESKTOP_DBUS_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", "org.freedesktop.DBus", NULL); +} + +/** + * _g_freedesktop_dbus_proxy_new_for_bus_finish: + * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_proxy_new_for_bus(). + * @error: Return location for error or %NULL + * + * Finishes an operation started with _g_freedesktop_dbus_proxy_new_for_bus(). + * + * Returns: (transfer full) (type _GFreedesktopDBusProxy): The constructed proxy object or %NULL if @error is set. + */ +_GFreedesktopDBus * +_g_freedesktop_dbus_proxy_new_for_bus_finish ( + GAsyncResult *res, + GError **error) +{ + GObject *ret; + GObject *source_object; + source_object = g_async_result_get_source_object (res); + ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error); + g_object_unref (source_object); + if (ret != NULL) + return _G_FREEDESKTOP_DBUS (ret); + else + return NULL; +} + +/** + * _g_freedesktop_dbus_proxy_new_for_bus_sync: + * @bus_type: A #GBusType. + * @flags: Flags from the #GDBusProxyFlags enumeration. + * @name: A bus name (well-known or unique). + * @object_path: An object path. + * @cancellable: (allow-none): A #GCancellable or %NULL. + * @error: Return location for error or %NULL + * + * Like _g_freedesktop_dbus_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection. + * + * The calling thread is blocked until a reply is received. + * + * See _g_freedesktop_dbus_proxy_new_for_bus() for the asynchronous version of this constructor. + * + * Returns: (transfer full) (type _GFreedesktopDBusProxy): The constructed proxy object or %NULL if @error is set. + */ +_GFreedesktopDBus * +_g_freedesktop_dbus_proxy_new_for_bus_sync ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error) +{ + GInitable *ret; + ret = g_initable_new (_G_TYPE_FREEDESKTOP_DBUS_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.freedesktop.DBus", NULL); + if (ret != NULL) + return _G_FREEDESKTOP_DBUS (ret); + else + return NULL; +} + + +/* ------------------------------------------------------------------------ */ + +/** + * _GFreedesktopDBusSkeleton: + * + * The #_GFreedesktopDBusSkeleton structure contains only private data and should only be accessed using the provided API. + */ + +/** + * _GFreedesktopDBusSkeletonClass: + * @parent_class: The parent class. + * + * Class structure for #_GFreedesktopDBusSkeleton. + */ + +struct __GFreedesktopDBusSkeletonPrivate +{ + GValue *properties; + GList *changed_properties; + GSource *changed_properties_idle_source; + GMainContext *context; + GMutex lock; +}; + +static void +__g_freedesktop_dbus_skeleton_handle_method_call ( + GDBusConnection *connection G_GNUC_UNUSED, + const gchar *sender G_GNUC_UNUSED, + const gchar *object_path G_GNUC_UNUSED, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer user_data) +{ + _GFreedesktopDBusSkeleton *skeleton = _G_FREEDESKTOP_DBUS_SKELETON (user_data); + _ExtendedGDBusMethodInfo *info; + GVariantIter iter; + GVariant *child; + GValue *paramv; + guint num_params; + guint num_extra; + guint n; + guint signal_id; + GValue return_value = G_VALUE_INIT; + info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation); + g_assert (info != NULL); + num_params = g_variant_n_children (parameters); + num_extra = info->pass_fdlist ? 3 : 2; paramv = g_new0 (GValue, num_params + num_extra); + n = 0; + g_value_init (¶mv[n], _G_TYPE_FREEDESKTOP_DBUS); + g_value_set_object (¶mv[n++], skeleton); + g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶mv[n++], invocation); + if (info->pass_fdlist) + { +#ifdef G_OS_UNIX + g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST); + g_value_set_object (¶mv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation))); +#else + g_assert_not_reached (); +#endif + } + g_variant_iter_init (&iter, parameters); + while ((child = g_variant_iter_next_value (&iter)) != NULL) + { + _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra]; + if (arg_info->use_gvariant) + { + g_value_init (¶mv[n], G_TYPE_VARIANT); + g_value_set_variant (¶mv[n], child); + n++; + } + else + g_dbus_gvariant_to_gvalue (child, ¶mv[n++]); + g_variant_unref (child); + } + signal_id = g_signal_lookup (info->signal_name, _G_TYPE_FREEDESKTOP_DBUS); + g_value_init (&return_value, G_TYPE_BOOLEAN); + g_signal_emitv (paramv, signal_id, 0, &return_value); + if (!g_value_get_boolean (&return_value)) + 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); + g_value_unset (&return_value); + for (n = 0; n < num_params + num_extra; n++) + g_value_unset (¶mv[n]); + g_free (paramv); +} + +static GVariant * +__g_freedesktop_dbus_skeleton_handle_get_property ( + GDBusConnection *connection G_GNUC_UNUSED, + const gchar *sender G_GNUC_UNUSED, + const gchar *object_path G_GNUC_UNUSED, + const gchar *interface_name G_GNUC_UNUSED, + const gchar *property_name, + GError **error, + gpointer user_data) +{ + _GFreedesktopDBusSkeleton *skeleton = _G_FREEDESKTOP_DBUS_SKELETON (user_data); + GValue value = G_VALUE_INIT; + GParamSpec *pspec; + _ExtendedGDBusPropertyInfo *info; + GVariant *ret; + ret = NULL; + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &__g_freedesktop_dbus_interface_info.parent_struct, property_name); + g_assert (info != NULL); + pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); + if (pspec == NULL) + { + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); + } + else + { + g_value_init (&value, pspec->value_type); + g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value); + ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature)); + g_value_unset (&value); + } + return ret; +} + +static gboolean +__g_freedesktop_dbus_skeleton_handle_set_property ( + GDBusConnection *connection G_GNUC_UNUSED, + const gchar *sender G_GNUC_UNUSED, + const gchar *object_path G_GNUC_UNUSED, + const gchar *interface_name G_GNUC_UNUSED, + const gchar *property_name, + GVariant *variant, + GError **error, + gpointer user_data) +{ + _GFreedesktopDBusSkeleton *skeleton = _G_FREEDESKTOP_DBUS_SKELETON (user_data); + GValue value = G_VALUE_INIT; + GParamSpec *pspec; + _ExtendedGDBusPropertyInfo *info; + gboolean ret; + ret = FALSE; + info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &__g_freedesktop_dbus_interface_info.parent_struct, property_name); + g_assert (info != NULL); + pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name); + if (pspec == NULL) + { + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name); + } + else + { + if (info->use_gvariant) + g_value_set_variant (&value, variant); + else + g_dbus_gvariant_to_gvalue (variant, &value); + g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value); + g_value_unset (&value); + ret = TRUE; + } + return ret; +} + +static const GDBusInterfaceVTable __g_freedesktop_dbus_skeleton_vtable = +{ + __g_freedesktop_dbus_skeleton_handle_method_call, + __g_freedesktop_dbus_skeleton_handle_get_property, + __g_freedesktop_dbus_skeleton_handle_set_property, + {NULL} +}; + +static GDBusInterfaceInfo * +_g_freedesktop_dbus_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) +{ + return _g_freedesktop_dbus_interface_info (); +} + +static GDBusInterfaceVTable * +_g_freedesktop_dbus_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED) +{ + return (GDBusInterfaceVTable *) &__g_freedesktop_dbus_skeleton_vtable; +} + +static GVariant * +_g_freedesktop_dbus_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton) +{ + _GFreedesktopDBusSkeleton *skeleton = _G_FREEDESKTOP_DBUS_SKELETON (_skeleton); + + GVariantBuilder builder; + guint n; + g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}")); + if (__g_freedesktop_dbus_interface_info.parent_struct.properties == NULL) + goto out; + for (n = 0; __g_freedesktop_dbus_interface_info.parent_struct.properties[n] != NULL; n++) + { + GDBusPropertyInfo *info = __g_freedesktop_dbus_interface_info.parent_struct.properties[n]; + if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE) + { + GVariant *value; + value = __g_freedesktop_dbus_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)), "org.freedesktop.DBus", info->name, NULL, skeleton); + if (value != NULL) + { + g_variant_take_ref (value); + g_variant_builder_add (&builder, "{sv}", info->name, value); + g_variant_unref (value); + } + } + } +out: + return g_variant_builder_end (&builder); +} + +static void +_g_freedesktop_dbus_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton) +{ +} + +static void +__g_freedesktop_dbus_on_signal_name_owner_changed ( + _GFreedesktopDBus *object, + const gchar *arg_name, + const gchar *arg_old_owner, + const gchar *arg_new_owner) +{ + _GFreedesktopDBusSkeleton *skeleton = _G_FREEDESKTOP_DBUS_SKELETON (object); + + GList *connections, *l; + GVariant *signal_variant; + connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); + + signal_variant = g_variant_ref_sink (g_variant_new ("(sss)", + arg_name, + arg_old_owner, + arg_new_owner)); + for (l = connections; l != NULL; l = l->next) + { + GDBusConnection *connection = l->data; + g_dbus_connection_emit_signal (connection, + NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus", "NameOwnerChanged", + signal_variant, NULL); + } + g_variant_unref (signal_variant); + g_list_free_full (connections, g_object_unref); +} + +static void +__g_freedesktop_dbus_on_signal_name_lost ( + _GFreedesktopDBus *object, + const gchar *arg_name) +{ + _GFreedesktopDBusSkeleton *skeleton = _G_FREEDESKTOP_DBUS_SKELETON (object); + + GList *connections, *l; + GVariant *signal_variant; + connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); + + signal_variant = g_variant_ref_sink (g_variant_new ("(s)", + arg_name)); + for (l = connections; l != NULL; l = l->next) + { + GDBusConnection *connection = l->data; + g_dbus_connection_emit_signal (connection, + NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus", "NameLost", + signal_variant, NULL); + } + g_variant_unref (signal_variant); + g_list_free_full (connections, g_object_unref); +} + +static void +__g_freedesktop_dbus_on_signal_name_acquired ( + _GFreedesktopDBus *object, + const gchar *arg_name) +{ + _GFreedesktopDBusSkeleton *skeleton = _G_FREEDESKTOP_DBUS_SKELETON (object); + + GList *connections, *l; + GVariant *signal_variant; + connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton)); + + signal_variant = g_variant_ref_sink (g_variant_new ("(s)", + arg_name)); + for (l = connections; l != NULL; l = l->next) + { + GDBusConnection *connection = l->data; + g_dbus_connection_emit_signal (connection, + NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.freedesktop.DBus", "NameAcquired", + signal_variant, NULL); + } + g_variant_unref (signal_variant); + g_list_free_full (connections, g_object_unref); +} + +static void _g_freedesktop_dbus_skeleton_iface_init (_GFreedesktopDBusIface *iface); +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 +G_DEFINE_TYPE_WITH_CODE (_GFreedesktopDBusSkeleton, _g_freedesktop_dbus_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, + G_ADD_PRIVATE (_GFreedesktopDBusSkeleton) + G_IMPLEMENT_INTERFACE (_G_TYPE_FREEDESKTOP_DBUS, _g_freedesktop_dbus_skeleton_iface_init)); + +#else +G_DEFINE_TYPE_WITH_CODE (_GFreedesktopDBusSkeleton, _g_freedesktop_dbus_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON, + G_IMPLEMENT_INTERFACE (_G_TYPE_FREEDESKTOP_DBUS, _g_freedesktop_dbus_skeleton_iface_init)); + +#endif +static void +_g_freedesktop_dbus_skeleton_finalize (GObject *object) +{ + _GFreedesktopDBusSkeleton *skeleton = _G_FREEDESKTOP_DBUS_SKELETON (object); + g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free); + if (skeleton->priv->changed_properties_idle_source != NULL) + g_source_destroy (skeleton->priv->changed_properties_idle_source); + g_main_context_unref (skeleton->priv->context); + g_mutex_clear (&skeleton->priv->lock); + G_OBJECT_CLASS (_g_freedesktop_dbus_skeleton_parent_class)->finalize (object); +} + +static void +_g_freedesktop_dbus_skeleton_init (_GFreedesktopDBusSkeleton *skeleton) +{ +#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 + skeleton->priv = _g_freedesktop_dbus_skeleton_get_instance_private (skeleton); +#else + skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, _G_TYPE_FREEDESKTOP_DBUS_SKELETON, _GFreedesktopDBusSkeletonPrivate); +#endif + + g_mutex_init (&skeleton->priv->lock); + skeleton->priv->context = g_main_context_ref_thread_default (); +} + +static void +_g_freedesktop_dbus_skeleton_class_init (_GFreedesktopDBusSkeletonClass *klass) +{ + GObjectClass *gobject_class; + GDBusInterfaceSkeletonClass *skeleton_class; + + gobject_class = G_OBJECT_CLASS (klass); + gobject_class->finalize = _g_freedesktop_dbus_skeleton_finalize; + + skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass); + skeleton_class->get_info = _g_freedesktop_dbus_skeleton_dbus_interface_get_info; + skeleton_class->get_properties = _g_freedesktop_dbus_skeleton_dbus_interface_get_properties; + skeleton_class->flush = _g_freedesktop_dbus_skeleton_dbus_interface_flush; + skeleton_class->get_vtable = _g_freedesktop_dbus_skeleton_dbus_interface_get_vtable; + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38 + g_type_class_add_private (klass, sizeof (_GFreedesktopDBusSkeletonPrivate)); +#endif +} + +static void +_g_freedesktop_dbus_skeleton_iface_init (_GFreedesktopDBusIface *iface) +{ + iface->name_owner_changed = __g_freedesktop_dbus_on_signal_name_owner_changed; + iface->name_lost = __g_freedesktop_dbus_on_signal_name_lost; + iface->name_acquired = __g_freedesktop_dbus_on_signal_name_acquired; +} + +/** + * _g_freedesktop_dbus_skeleton_new: + * + * Creates a skeleton object for the D-Bus interface org.freedesktop.DBus. + * + * Returns: (transfer full) (type _GFreedesktopDBusSkeleton): The skeleton object. + */ +_GFreedesktopDBus * +_g_freedesktop_dbus_skeleton_new (void) +{ + return _G_FREEDESKTOP_DBUS (g_object_new (_G_TYPE_FREEDESKTOP_DBUS_SKELETON, NULL)); +} + diff --git a/gio/gdbus-daemon-generated.h b/gio/gdbus-daemon-generated.h new file mode 100644 index 0000000..c86ee48 --- /dev/null +++ b/gio/gdbus-daemon-generated.h @@ -0,0 +1,672 @@ +/* + * Generated by gdbus-codegen 2.48.0. DO NOT EDIT. + * + * The license of this code is the same as for the source it was derived from. + */ + +#ifndef __GDBUS_DAEMON_GENERATED_H__ +#define __GDBUS_DAEMON_GENERATED_H__ + +#include + +G_BEGIN_DECLS + + +/* ------------------------------------------------------------------------ */ +/* Declarations for org.freedesktop.DBus */ + +#define _G_TYPE_FREEDESKTOP_DBUS (_g_freedesktop_dbus_get_type ()) +#define _G_FREEDESKTOP_DBUS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), _G_TYPE_FREEDESKTOP_DBUS, _GFreedesktopDBus)) +#define _G_IS_FREEDESKTOP_DBUS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), _G_TYPE_FREEDESKTOP_DBUS)) +#define _G_FREEDESKTOP_DBUS_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), _G_TYPE_FREEDESKTOP_DBUS, _GFreedesktopDBusIface)) + +struct __GFreedesktopDBus; +typedef struct __GFreedesktopDBus _GFreedesktopDBus; +typedef struct __GFreedesktopDBusIface _GFreedesktopDBusIface; + +struct __GFreedesktopDBusIface +{ + GTypeInterface parent_iface; + + + gboolean (*handle_add_match) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *arg_rule); + + gboolean (*handle_get_connection_selinux_security_context) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *arg_name); + + gboolean (*handle_get_connection_unix_process_id) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *arg_name); + + gboolean (*handle_get_connection_unix_user) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *arg_name); + + gboolean (*handle_get_id) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation); + + gboolean (*handle_get_name_owner) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *arg_name); + + gboolean (*handle_hello) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation); + + gboolean (*handle_list_activatable_names) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation); + + gboolean (*handle_list_names) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation); + + gboolean (*handle_list_queued_owners) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *arg_name); + + gboolean (*handle_name_has_owner) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *arg_name); + + gboolean (*handle_release_name) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *arg_name); + + gboolean (*handle_reload_config) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation); + + gboolean (*handle_remove_match) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *arg_rule); + + gboolean (*handle_request_name) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *arg_name, + guint arg_flags); + + gboolean (*handle_start_service_by_name) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *arg_name, + guint arg_flags); + + gboolean (*handle_update_activation_environment) ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + GVariant *arg_environment); + + void (*name_acquired) ( + _GFreedesktopDBus *object, + const gchar *arg_name); + + void (*name_lost) ( + _GFreedesktopDBus *object, + const gchar *arg_name); + + void (*name_owner_changed) ( + _GFreedesktopDBus *object, + const gchar *arg_name, + const gchar *arg_old_owner, + const gchar *arg_new_owner); + +}; + +GType _g_freedesktop_dbus_get_type (void) G_GNUC_CONST; + +GDBusInterfaceInfo *_g_freedesktop_dbus_interface_info (void); +guint _g_freedesktop_dbus_override_properties (GObjectClass *klass, guint property_id_begin); + + +/* D-Bus method call completion functions: */ +void _g_freedesktop_dbus_complete_hello ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *assigned_name); + +void _g_freedesktop_dbus_complete_request_name ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + guint value); + +void _g_freedesktop_dbus_complete_release_name ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + guint value); + +void _g_freedesktop_dbus_complete_start_service_by_name ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + guint value); + +void _g_freedesktop_dbus_complete_name_has_owner ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + gboolean has_owner); + +void _g_freedesktop_dbus_complete_list_names ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *const *names); + +void _g_freedesktop_dbus_complete_list_activatable_names ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *const *activatable_names); + +void _g_freedesktop_dbus_complete_add_match ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation); + +void _g_freedesktop_dbus_complete_remove_match ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation); + +void _g_freedesktop_dbus_complete_get_name_owner ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *unique_name); + +void _g_freedesktop_dbus_complete_list_queued_owners ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *const *queued_owners); + +void _g_freedesktop_dbus_complete_get_connection_unix_user ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + guint uid); + +void _g_freedesktop_dbus_complete_get_connection_unix_process_id ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + guint pid); + +void _g_freedesktop_dbus_complete_get_connection_selinux_security_context ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *security_context); + +void _g_freedesktop_dbus_complete_update_activation_environment ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation); + +void _g_freedesktop_dbus_complete_reload_config ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation); + +void _g_freedesktop_dbus_complete_get_id ( + _GFreedesktopDBus *object, + GDBusMethodInvocation *invocation, + const gchar *unique_id); + + + +/* D-Bus signal emissions functions: */ +void _g_freedesktop_dbus_emit_name_owner_changed ( + _GFreedesktopDBus *object, + const gchar *arg_name, + const gchar *arg_old_owner, + const gchar *arg_new_owner); + +void _g_freedesktop_dbus_emit_name_lost ( + _GFreedesktopDBus *object, + const gchar *arg_name); + +void _g_freedesktop_dbus_emit_name_acquired ( + _GFreedesktopDBus *object, + const gchar *arg_name); + + + +/* D-Bus method calls: */ +void _g_freedesktop_dbus_call_hello ( + _GFreedesktopDBus *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_hello_finish ( + _GFreedesktopDBus *proxy, + gchar **out_assigned_name, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_hello_sync ( + _GFreedesktopDBus *proxy, + gchar **out_assigned_name, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_request_name ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + guint arg_flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_request_name_finish ( + _GFreedesktopDBus *proxy, + guint *out_value, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_request_name_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + guint arg_flags, + guint *out_value, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_release_name ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_release_name_finish ( + _GFreedesktopDBus *proxy, + guint *out_value, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_release_name_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + guint *out_value, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_start_service_by_name ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + guint arg_flags, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_start_service_by_name_finish ( + _GFreedesktopDBus *proxy, + guint *out_value, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_start_service_by_name_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + guint arg_flags, + guint *out_value, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_name_has_owner ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_name_has_owner_finish ( + _GFreedesktopDBus *proxy, + gboolean *out_has_owner, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_name_has_owner_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + gboolean *out_has_owner, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_list_names ( + _GFreedesktopDBus *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_list_names_finish ( + _GFreedesktopDBus *proxy, + gchar ***out_names, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_list_names_sync ( + _GFreedesktopDBus *proxy, + gchar ***out_names, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_list_activatable_names ( + _GFreedesktopDBus *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_list_activatable_names_finish ( + _GFreedesktopDBus *proxy, + gchar ***out_activatable_names, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_list_activatable_names_sync ( + _GFreedesktopDBus *proxy, + gchar ***out_activatable_names, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_add_match ( + _GFreedesktopDBus *proxy, + const gchar *arg_rule, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_add_match_finish ( + _GFreedesktopDBus *proxy, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_add_match_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_rule, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_remove_match ( + _GFreedesktopDBus *proxy, + const gchar *arg_rule, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_remove_match_finish ( + _GFreedesktopDBus *proxy, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_remove_match_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_rule, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_get_name_owner ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_get_name_owner_finish ( + _GFreedesktopDBus *proxy, + gchar **out_unique_name, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_get_name_owner_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + gchar **out_unique_name, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_list_queued_owners ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_list_queued_owners_finish ( + _GFreedesktopDBus *proxy, + gchar ***out_queued_owners, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_list_queued_owners_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + gchar ***out_queued_owners, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_get_connection_unix_user ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_get_connection_unix_user_finish ( + _GFreedesktopDBus *proxy, + guint *out_uid, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_get_connection_unix_user_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + guint *out_uid, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_get_connection_unix_process_id ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_get_connection_unix_process_id_finish ( + _GFreedesktopDBus *proxy, + guint *out_pid, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_get_connection_unix_process_id_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + guint *out_pid, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_get_connection_selinux_security_context ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_get_connection_selinux_security_context_finish ( + _GFreedesktopDBus *proxy, + gchar **out_security_context, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_get_connection_selinux_security_context_sync ( + _GFreedesktopDBus *proxy, + const gchar *arg_name, + gchar **out_security_context, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_update_activation_environment ( + _GFreedesktopDBus *proxy, + GVariant *arg_environment, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_update_activation_environment_finish ( + _GFreedesktopDBus *proxy, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_update_activation_environment_sync ( + _GFreedesktopDBus *proxy, + GVariant *arg_environment, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_reload_config ( + _GFreedesktopDBus *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_reload_config_finish ( + _GFreedesktopDBus *proxy, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_reload_config_sync ( + _GFreedesktopDBus *proxy, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_call_get_id ( + _GFreedesktopDBus *proxy, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + +gboolean _g_freedesktop_dbus_call_get_id_finish ( + _GFreedesktopDBus *proxy, + gchar **out_unique_id, + GAsyncResult *res, + GError **error); + +gboolean _g_freedesktop_dbus_call_get_id_sync ( + _GFreedesktopDBus *proxy, + gchar **out_unique_id, + GCancellable *cancellable, + GError **error); + + + +/* ---- */ + +#define _G_TYPE_FREEDESKTOP_DBUS_PROXY (_g_freedesktop_dbus_proxy_get_type ()) +#define _G_FREEDESKTOP_DBUS_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), _G_TYPE_FREEDESKTOP_DBUS_PROXY, _GFreedesktopDBusProxy)) +#define _G_FREEDESKTOP_DBUS_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), _G_TYPE_FREEDESKTOP_DBUS_PROXY, _GFreedesktopDBusProxyClass)) +#define _G_FREEDESKTOP_DBUS_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), _G_TYPE_FREEDESKTOP_DBUS_PROXY, _GFreedesktopDBusProxyClass)) +#define _G_IS_FREEDESKTOP_DBUS_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), _G_TYPE_FREEDESKTOP_DBUS_PROXY)) +#define _G_IS_FREEDESKTOP_DBUS_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), _G_TYPE_FREEDESKTOP_DBUS_PROXY)) + +typedef struct __GFreedesktopDBusProxy _GFreedesktopDBusProxy; +typedef struct __GFreedesktopDBusProxyClass _GFreedesktopDBusProxyClass; +typedef struct __GFreedesktopDBusProxyPrivate _GFreedesktopDBusProxyPrivate; + +struct __GFreedesktopDBusProxy +{ + /*< private >*/ + GDBusProxy parent_instance; + _GFreedesktopDBusProxyPrivate *priv; +}; + +struct __GFreedesktopDBusProxyClass +{ + GDBusProxyClass parent_class; +}; + +GType _g_freedesktop_dbus_proxy_get_type (void) G_GNUC_CONST; + +#if GLIB_CHECK_VERSION(2, 44, 0) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (_GFreedesktopDBusProxy, g_object_unref) +#endif + +void _g_freedesktop_dbus_proxy_new ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +_GFreedesktopDBus *_g_freedesktop_dbus_proxy_new_finish ( + GAsyncResult *res, + GError **error); +_GFreedesktopDBus *_g_freedesktop_dbus_proxy_new_sync ( + GDBusConnection *connection, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error); + +void _g_freedesktop_dbus_proxy_new_for_bus ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +_GFreedesktopDBus *_g_freedesktop_dbus_proxy_new_for_bus_finish ( + GAsyncResult *res, + GError **error); +_GFreedesktopDBus *_g_freedesktop_dbus_proxy_new_for_bus_sync ( + GBusType bus_type, + GDBusProxyFlags flags, + const gchar *name, + const gchar *object_path, + GCancellable *cancellable, + GError **error); + + +/* ---- */ + +#define _G_TYPE_FREEDESKTOP_DBUS_SKELETON (_g_freedesktop_dbus_skeleton_get_type ()) +#define _G_FREEDESKTOP_DBUS_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), _G_TYPE_FREEDESKTOP_DBUS_SKELETON, _GFreedesktopDBusSkeleton)) +#define _G_FREEDESKTOP_DBUS_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), _G_TYPE_FREEDESKTOP_DBUS_SKELETON, _GFreedesktopDBusSkeletonClass)) +#define _G_FREEDESKTOP_DBUS_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), _G_TYPE_FREEDESKTOP_DBUS_SKELETON, _GFreedesktopDBusSkeletonClass)) +#define _G_IS_FREEDESKTOP_DBUS_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), _G_TYPE_FREEDESKTOP_DBUS_SKELETON)) +#define _G_IS_FREEDESKTOP_DBUS_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), _G_TYPE_FREEDESKTOP_DBUS_SKELETON)) + +typedef struct __GFreedesktopDBusSkeleton _GFreedesktopDBusSkeleton; +typedef struct __GFreedesktopDBusSkeletonClass _GFreedesktopDBusSkeletonClass; +typedef struct __GFreedesktopDBusSkeletonPrivate _GFreedesktopDBusSkeletonPrivate; + +struct __GFreedesktopDBusSkeleton +{ + /*< private >*/ + GDBusInterfaceSkeleton parent_instance; + _GFreedesktopDBusSkeletonPrivate *priv; +}; + +struct __GFreedesktopDBusSkeletonClass +{ + GDBusInterfaceSkeletonClass parent_class; +}; + +GType _g_freedesktop_dbus_skeleton_get_type (void) G_GNUC_CONST; + +#if GLIB_CHECK_VERSION(2, 44, 0) +G_DEFINE_AUTOPTR_CLEANUP_FUNC (_GFreedesktopDBusSkeleton, g_object_unref) +#endif + +_GFreedesktopDBus *_g_freedesktop_dbus_skeleton_new (void); + + +G_END_DECLS + +#endif /* __GDBUS_DAEMON_GENERATED_H__ */ diff --git a/gio/gdbus-tool.c b/gio/gdbus-tool.c index f24dd71..c021f48 100644 --- a/gio/gdbus-tool.c +++ b/gio/gdbus-tool.c @@ -203,6 +203,12 @@ print_paths (GDBusConnection *c, GDBusNodeInfo *node; guint n; + if (!g_dbus_is_name (name)) + { + g_printerr (_("Error: %s is not a valid name\n"), name); + goto out; + } + error = NULL; result = g_dbus_connection_call_sync (c, name, @@ -863,6 +869,12 @@ handle_call (gint *argc, } } + if (!request_completion && !g_dbus_is_name (opt_call_dest)) + { + g_printerr (_("Error: %s is not a valid bus name\n"), opt_call_dest); + goto out; + } + /* validate and complete object path */ if (complete_paths) { @@ -1601,6 +1613,13 @@ handle_introspect (gint *argc, print_paths (c, opt_introspect_dest, "/"); goto out; } + + if (!request_completion && !g_dbus_is_name (opt_introspect_dest)) + { + g_printerr (_("Error: %s is not a valid bus name\n"), opt_introspect_dest); + goto out; + } + if (opt_introspect_object_path == NULL) { if (request_completion) @@ -1824,6 +1843,13 @@ handle_monitor (gint *argc, goto out; } } + + if (!request_completion && !g_dbus_is_name (opt_monitor_dest)) + { + g_printerr (_("Error: %s is not a valid bus name\n"), opt_monitor_dest); + goto out; + } + if (complete_paths) { print_paths (c, opt_monitor_dest, "/"); diff --git a/gio/gdbusaddress.c b/gio/gdbusaddress.c index 6d17b7c..7c294f7 100644 --- a/gio/gdbusaddress.c +++ b/gio/gdbusaddress.c @@ -34,13 +34,17 @@ #include "gsocketclient.h" #include "giostream.h" #include "gasyncresult.h" -#include "gsimpleasyncresult.h" +#include "gtask.h" #include "glib-private.h" #include "gdbusprivate.h" #include "giomodule-priv.h" #include "gdbusdaemon.h" +#include "gstdio.h" #ifdef G_OS_UNIX +#include +#include +#include #include #endif @@ -64,6 +68,7 @@ */ static gchar *get_session_address_platform_specific (GError **error); +static gchar *get_session_address_dbus_launch (GError **error); /* ---------------------------------------------------------------------------------------------------- */ @@ -638,7 +643,7 @@ g_dbus_address_connect (const gchar *address_entry, else if (g_strcmp0 (address_entry, "autolaunch:") == 0) { gchar *autolaunch_address; - autolaunch_address = get_session_address_platform_specific (error); + autolaunch_address = get_session_address_dbus_launch (error); if (autolaunch_address != NULL) { ret = g_dbus_address_try_connect_one (autolaunch_address, NULL, cancellable, error); @@ -794,7 +799,6 @@ out: typedef struct { gchar *address; - GIOStream *stream; gchar *guid; } GetStreamData; @@ -802,29 +806,28 @@ static void get_stream_data_free (GetStreamData *data) { g_free (data->address); - if (data->stream != NULL) - g_object_unref (data->stream); g_free (data->guid); g_free (data); } static void -get_stream_thread_func (GSimpleAsyncResult *res, - GObject *object, - GCancellable *cancellable) +get_stream_thread_func (GTask *task, + gpointer source_object, + gpointer task_data, + GCancellable *cancellable) { - GetStreamData *data; - GError *error; - - data = g_simple_async_result_get_op_res_gpointer (res); + GetStreamData *data = task_data; + GIOStream *stream; + GError *error = NULL; - error = NULL; - data->stream = g_dbus_address_get_stream_sync (data->address, - &data->guid, - cancellable, - &error); - if (data->stream == NULL) - g_simple_async_result_take_error (res, error); + stream = g_dbus_address_get_stream_sync (data->address, + &data->guid, + cancellable, + &error); + if (stream) + g_task_return_pointer (task, stream, g_object_unref); + else + g_task_return_error (task, error); } /** @@ -853,32 +856,24 @@ g_dbus_address_get_stream (const gchar *address, GAsyncReadyCallback callback, gpointer user_data) { - GSimpleAsyncResult *res; + GTask *task; GetStreamData *data; g_return_if_fail (address != NULL); - res = g_simple_async_result_new (NULL, - callback, - user_data, - g_dbus_address_get_stream); - g_simple_async_result_set_check_cancellable (res, cancellable); data = g_new0 (GetStreamData, 1); data->address = g_strdup (address); - g_simple_async_result_set_op_res_gpointer (res, - data, - (GDestroyNotify) get_stream_data_free); - g_simple_async_result_run_in_thread (res, - get_stream_thread_func, - G_PRIORITY_DEFAULT, - cancellable); - g_object_unref (res); + + task = g_task_new (NULL, cancellable, callback, user_data); + g_task_set_task_data (task, data, (GDestroyNotify) get_stream_data_free); + g_task_run_in_thread (task, get_stream_thread_func); + g_object_unref (task); } /** * g_dbus_address_get_stream_finish: * @res: A #GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_address_get_stream(). - * @out_guid: %NULL or return location to store the GUID extracted from @address, if any. + * @out_guid: (optional) (out): %NULL or return location to store the GUID extracted from @address, if any. * @error: Return location for error or %NULL. * * Finishes an operation started with g_dbus_address_get_stream(). @@ -892,33 +887,30 @@ g_dbus_address_get_stream_finish (GAsyncResult *res, gchar **out_guid, GError **error) { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res); + GTask *task; GetStreamData *data; GIOStream *ret; - g_return_val_if_fail (G_IS_ASYNC_RESULT (res), NULL); + g_return_val_if_fail (g_task_is_valid (res, NULL), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); - g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == g_dbus_address_get_stream); + task = G_TASK (res); + ret = g_task_propagate_pointer (task, error); - ret = NULL; - - data = g_simple_async_result_get_op_res_gpointer (simple); - if (g_simple_async_result_propagate_error (simple, error)) - goto out; - - ret = g_object_ref (data->stream); - if (out_guid != NULL) - *out_guid = g_strdup (data->guid); + if (ret != NULL && out_guid != NULL) + { + data = g_task_get_task_data (task); + *out_guid = data->guid; + data->guid = NULL; + } - out: return ret; } /** * g_dbus_address_get_stream_sync: * @address: A valid D-Bus address. - * @out_guid: %NULL or return location to store the GUID extracted from @address, if any. + * @out_guid: (optional) (out): %NULL or return location to store the GUID extracted from @address, if any. * @cancellable: (allow-none): A #GCancellable or %NULL. * @error: Return location for error or %NULL. * @@ -1000,6 +992,49 @@ g_dbus_address_get_stream_sync (const gchar *address, /* ---------------------------------------------------------------------------------------------------- */ +/* + * Return the address of XDG_RUNTIME_DIR/bus if it exists, belongs to + * us, and is a socket, and we are on Unix. + */ +static gchar * +get_session_address_xdg (void) +{ +#ifdef G_OS_UNIX + gchar *ret = NULL; + gchar *bus; + gchar *tmp; + GStatBuf buf; + + bus = g_build_filename (g_get_user_runtime_dir (), "bus", NULL); + + /* if ENOENT, EPERM, etc., quietly don't use it */ + if (g_stat (bus, &buf) < 0) + goto out; + + /* if it isn't ours, we have incorrectly inherited someone else's + * XDG_RUNTIME_DIR; silently don't use it + */ + if (buf.st_uid != geteuid ()) + goto out; + + /* if it isn't a socket, silently don't use it */ + if ((buf.st_mode & S_IFMT) != S_IFSOCK) + goto out; + + tmp = g_dbus_address_escape_value (bus); + ret = g_strconcat ("unix:path=", tmp, NULL); + g_free (tmp); + +out: + g_free (bus); + return ret; +#else + return NULL; +#endif +} + +/* ---------------------------------------------------------------------------------------------------- */ + #ifdef G_OS_UNIX static gchar * get_session_address_dbus_launch (GError **error) @@ -1126,9 +1161,9 @@ get_session_address_dbus_launch (GError **error) g_free (old_dbus_verbose); return ret; } -#endif -#ifdef G_OS_WIN32 +/* end of G_OS_UNIX case */ +#elif defined(G_OS_WIN32) #define DBUS_DAEMON_ADDRESS_INFO "DBusDaemonAddressInfo" #define DBUS_DAEMON_MUTEX "DBusDaemonMutex" @@ -1320,6 +1355,25 @@ idle_timeout_cb (GDBusDaemon *daemon, gpointer user_data) g_main_loop_quit (loop); } +/* Satisfies STARTF_FORCEONFEEDBACK */ +static void +turn_off_the_starting_cursor (void) +{ + MSG msg; + BOOL bRet; + + PostQuitMessage (0); + + while ((bRet = GetMessage (&msg, 0, 0, 0)) != 0) + { + if (bRet == -1) + continue; + + TranslateMessage (&msg); + DispatchMessage (&msg); + } +} + __declspec(dllexport) void CALLBACK g_win32_run_session_bus (HWND hwnd, HINSTANCE hinst, char *cmdline, int nCmdShow); __declspec(dllexport) void CALLBACK @@ -1330,6 +1384,8 @@ g_win32_run_session_bus (HWND hwnd, HINSTANCE hinst, char *cmdline, int nCmdShow const char *address; GError *error = NULL; + turn_off_the_starting_cursor (); + if (g_getenv ("GDBUS_DAEMON_DEBUG") != NULL) open_console_window (); @@ -1426,7 +1482,17 @@ get_session_address_dbus_launch (GError **error) return address; } -#endif +#else /* neither G_OS_UNIX nor G_OS_WIN32 */ +static gchar * +get_session_address_dbus_launch (GError **error) +{ + g_set_error (error, + G_IO_ERROR, + G_IO_ERROR_FAILED, + _("Cannot determine session bus address (not implemented for this OS)")); + return NULL; +} +#endif /* neither G_OS_UNIX nor G_OS_WIN32 */ /* ---------------------------------------------------------------------------------------------------- */ @@ -1434,18 +1500,31 @@ static gchar * get_session_address_platform_specific (GError **error) { gchar *ret; -#if defined (G_OS_UNIX) || defined(G_OS_WIN32) - /* need to handle OS X in a different way since 'dbus-launch --autolaunch' probably won't work there */ - ret = get_session_address_dbus_launch (error); -#else - /* TODO: implement for OS X */ - ret = NULL; - g_set_error (error, - G_IO_ERROR, - G_IO_ERROR_FAILED, - _("Cannot determine session bus address (not implemented for this OS)")); -#endif - return ret; + + /* Use XDG_RUNTIME_DIR/bus if it exists and is suitable. This is appropriate + * for systems using the "a session is a user-session" model described in + * , + * and implemented in dbus >= 1.9.14 and sd-bus. + * + * On systems following the more traditional "a session is a login-session" + * model, this will fail and we'll fall through to X11 autolaunching + * (dbus-launch) below. + */ + ret = get_session_address_xdg (); + + if (ret != NULL) + return ret; + + /* TODO (#694472): try launchd on OS X, like + * _dbus_lookup_session_address_launchd() does, since + * 'dbus-launch --autolaunch' probably won't work there + */ + + /* As a last resort, try the "autolaunch:" transport. On Unix this means + * X11 autolaunching; on Windows this means a different autolaunching + * mechanism based on shared memory. + */ + return get_session_address_dbus_launch (error); } /* ---------------------------------------------------------------------------------------------------- */ @@ -1470,7 +1549,7 @@ g_dbus_address_get_for_bus_sync (GBusType bus_type, GCancellable *cancellable, GError **error) { - gchar *ret; + gchar *ret, *s = NULL; const gchar *starter_bus; GError *local_error; @@ -1483,8 +1562,10 @@ g_dbus_address_get_for_bus_sync (GBusType bus_type, { guint n; _g_dbus_debug_print_lock (); + s = _g_dbus_enum_to_string (G_TYPE_BUS_TYPE, bus_type); g_print ("GDBus-debug:Address: In g_dbus_address_get_for_bus_sync() for bus type '%s'\n", - _g_dbus_enum_to_string (G_TYPE_BUS_TYPE, bus_type)); + s); + g_free (s); for (n = 0; n < 3; n++) { const gchar *k; @@ -1571,18 +1652,18 @@ g_dbus_address_get_for_bus_sync (GBusType bus_type, if (G_UNLIKELY (_g_dbus_debug_address ())) { _g_dbus_debug_print_lock (); + s = _g_dbus_enum_to_string (G_TYPE_BUS_TYPE, bus_type); if (ret != NULL) { g_print ("GDBus-debug:Address: Returning address '%s' for bus type '%s'\n", - ret, - _g_dbus_enum_to_string (G_TYPE_BUS_TYPE, bus_type)); + ret, s); } else { g_print ("GDBus-debug:Address: Cannot look-up address bus type '%s': %s\n", - _g_dbus_enum_to_string (G_TYPE_BUS_TYPE, bus_type), - local_error ? local_error->message : ""); + s, local_error ? local_error->message : ""); } + g_free (s); _g_dbus_debug_print_unlock (); } diff --git a/gio/gdbusauthobserver.c b/gio/gdbusauthobserver.c index 23e7f31..ffa3c64 100644 --- a/gio/gdbusauthobserver.c +++ b/gio/gdbusauthobserver.c @@ -166,7 +166,7 @@ g_dbus_auth_observer_class_init (GDBusAuthObserverClass *klass) * Since: 2.26 */ signals[AUTHORIZE_AUTHENTICATED_PEER_SIGNAL] = - g_signal_new ("authorize-authenticated-peer", + g_signal_new (I_("authorize-authenticated-peer"), G_TYPE_DBUS_AUTH_OBSERVER, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GDBusAuthObserverClass, authorize_authenticated_peer), @@ -190,7 +190,7 @@ g_dbus_auth_observer_class_init (GDBusAuthObserverClass *klass) * Since: 2.34 */ signals[ALLOW_MECHANISM_SIGNAL] = - g_signal_new ("allow-mechanism", + g_signal_new (I_("allow-mechanism"), G_TYPE_DBUS_AUTH_OBSERVER, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GDBusAuthObserverClass, allow_mechanism), diff --git a/gio/gdbusconnection.c b/gio/gdbusconnection.c index cd53c96..313670b 100644 --- a/gio/gdbusconnection.c +++ b/gio/gdbusconnection.c @@ -119,7 +119,7 @@ #include "gasyncinitable.h" #include "giostream.h" #include "gasyncresult.h" -#include "gsimpleasyncresult.h" +#include "gtask.h" #ifdef G_OS_UNIX #include "gunixconnection.h" @@ -219,10 +219,10 @@ static GWeakRef the_system_bus; * message, and we're being called from its thread, so no memory barrier is * required before accessing them. */ -#define SEND_MESSAGE_FLAGS_INITIALIZING (1<<31) +#define SEND_MESSAGE_FLAGS_INITIALIZING (1u << 31) /* Same as SEND_MESSAGE_FLAGS_INITIALIZING, but in GDBusCallFlags */ -#define CALL_FLAGS_INITIALIZING (1<<31) +#define CALL_FLAGS_INITIALIZING (1u << 31) /* ---------------------------------------------------------------------------------------------------- */ @@ -432,7 +432,7 @@ struct _GDBusConnection GDBusConnectionFlags flags; /* Map used for managing method replies, protected by @lock */ - GHashTable *map_method_serial_to_send_message_data; /* guint32 -> SendMessageData* */ + GHashTable *map_method_serial_to_task; /* guint32 -> GTask* */ /* Maps used for managing signal subscription, protected by @lock */ GHashTable *map_rule_to_signal_data; /* match rule (gchar*) -> SignalData */ @@ -679,7 +679,7 @@ g_dbus_connection_finalize (GObject *object) if (connection->initialization_error != NULL) g_error_free (connection->initialization_error); - g_hash_table_unref (connection->map_method_serial_to_send_message_data); + g_hash_table_unref (connection->map_method_serial_to_task); g_hash_table_unref (connection->map_rule_to_signal_data); g_hash_table_unref (connection->map_id_to_signal_data); @@ -804,17 +804,6 @@ g_dbus_connection_real_closed (GDBusConnection *connection, (flags & FLAG_INITIALIZED) != 0 && connection->initialization_error == NULL) { - if (error != NULL) - { - g_printerr ("%s: Remote peer vanished with error: %s (%s, %d). Exiting.\n", - G_STRFUNC, - error->message, - g_quark_to_string (error->domain), error->code); - } - else - { - g_printerr ("%s: Remote peer vanished. Exiting.\n", G_STRFUNC); - } raise (SIGTERM); } } @@ -1058,7 +1047,7 @@ g_dbus_connection_class_init (GDBusConnectionClass *klass) * * Since: 2.26 */ - signals[CLOSED_SIGNAL] = g_signal_new ("closed", + signals[CLOSED_SIGNAL] = g_signal_new (I_("closed"), G_TYPE_DBUS_CONNECTION, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GDBusConnectionClass, closed), @@ -1077,7 +1066,7 @@ g_dbus_connection_init (GDBusConnection *connection) g_mutex_init (&connection->lock); g_mutex_init (&connection->init_lock); - connection->map_method_serial_to_send_message_data = g_hash_table_new (g_direct_hash, g_direct_equal); + connection->map_method_serial_to_task = g_hash_table_new (g_direct_hash, g_direct_equal); connection->map_rule_to_signal_data = g_hash_table_new (g_str_hash, g_str_equal); @@ -1210,17 +1199,19 @@ g_dbus_connection_get_capabilities (GDBusConnection *connection) /* Called in a temporary thread without holding locks. */ static void -flush_in_thread_func (GSimpleAsyncResult *res, - GObject *object, - GCancellable *cancellable) +flush_in_thread_func (GTask *task, + gpointer source_object, + gpointer task_data, + GCancellable *cancellable) { - GError *error; + GError *error = NULL; - error = NULL; - if (!g_dbus_connection_flush_sync (G_DBUS_CONNECTION (object), - cancellable, - &error)) - g_simple_async_result_take_error (res, error); + if (g_dbus_connection_flush_sync (source_object, + cancellable, + &error)) + g_task_return_boolean (task, TRUE); + else + g_task_return_error (task, error); } /** @@ -1254,20 +1245,13 @@ g_dbus_connection_flush (GDBusConnection *connection, GAsyncReadyCallback callback, gpointer user_data) { - GSimpleAsyncResult *simple; + GTask *task; g_return_if_fail (G_IS_DBUS_CONNECTION (connection)); - simple = g_simple_async_result_new (G_OBJECT (connection), - callback, - user_data, - g_dbus_connection_flush); - g_simple_async_result_set_check_cancellable (simple, cancellable); - g_simple_async_result_run_in_thread (simple, - flush_in_thread_func, - G_PRIORITY_DEFAULT, - cancellable); - g_object_unref (simple); + task = g_task_new (connection, cancellable, callback, user_data); + g_task_run_in_thread (task, flush_in_thread_func); + g_object_unref (task); } /** @@ -1288,24 +1272,11 @@ g_dbus_connection_flush_finish (GDBusConnection *connection, GAsyncResult *res, GError **error) { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res); - gboolean ret; - - ret = FALSE; - g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), FALSE); - g_return_val_if_fail (G_IS_ASYNC_RESULT (res), FALSE); + g_return_val_if_fail (g_task_is_valid (res, connection), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == g_dbus_connection_flush); - - if (g_simple_async_result_propagate_error (simple, error)) - goto out; - - ret = TRUE; - - out: - return ret; + return g_task_propagate_boolean (G_TASK (res), error); } /** @@ -1464,7 +1435,7 @@ g_dbus_connection_close (GDBusConnection *connection, GAsyncReadyCallback callback, gpointer user_data) { - GSimpleAsyncResult *simple; + GTask *task; g_return_if_fail (G_IS_DBUS_CONNECTION (connection)); @@ -1474,13 +1445,9 @@ g_dbus_connection_close (GDBusConnection *connection, g_assert (connection->worker != NULL); - simple = g_simple_async_result_new (G_OBJECT (connection), - callback, - user_data, - g_dbus_connection_close); - g_simple_async_result_set_check_cancellable (simple, cancellable); - _g_dbus_worker_close (connection->worker, cancellable, simple); - g_object_unref (simple); + task = g_task_new (connection, cancellable, callback, user_data); + _g_dbus_worker_close (connection->worker, task); + g_object_unref (task); } /** @@ -1501,24 +1468,11 @@ g_dbus_connection_close_finish (GDBusConnection *connection, GAsyncResult *res, GError **error) { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res); - gboolean ret; - - ret = FALSE; - g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), FALSE); - g_return_val_if_fail (G_IS_ASYNC_RESULT (res), FALSE); + g_return_val_if_fail (g_task_is_valid (res, connection), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == g_dbus_connection_close); - - if (g_simple_async_result_propagate_error (simple, error)) - goto out; - - ret = TRUE; - - out: - return ret; + return g_task_propagate_boolean (G_TASK (res), error); } typedef struct { @@ -1781,14 +1735,7 @@ g_dbus_connection_send_message (GDBusConnection *connection, typedef struct { - volatile gint ref_count; - GDBusConnection *connection; guint32 serial; - GSimpleAsyncResult *simple; - - GMainContext *main_context; - - GCancellable *cancellable; gulong cancellable_handler_id; @@ -1798,46 +1745,30 @@ typedef struct } SendMessageData; /* Can be called from any thread with or without lock held */ -static SendMessageData * -send_message_data_ref (SendMessageData *data) -{ - g_atomic_int_inc (&data->ref_count); - return data; -} - -/* Can be called from any thread with or without lock held */ static void -send_message_data_unref (SendMessageData *data) +send_message_data_free (SendMessageData *data) { - if (g_atomic_int_dec_and_test (&data->ref_count)) - { - g_assert (data->timeout_source == NULL); - g_assert (data->simple == NULL); - g_assert (data->cancellable_handler_id == 0); - g_object_unref (data->connection); - if (data->cancellable != NULL) - g_object_unref (data->cancellable); - g_main_context_unref (data->main_context); - g_free (data); - } + g_assert (data->timeout_source == NULL); + g_assert (data->cancellable_handler_id == 0); + + g_slice_free (SendMessageData, data); } /* ---------------------------------------------------------------------------------------------------- */ -/* can be called from any thread with lock held - caller must have prepared GSimpleAsyncResult already */ +/* can be called from any thread with lock held */ static void -send_message_with_reply_deliver (SendMessageData *data, gboolean remove) +send_message_with_reply_cleanup (GTask *task, gboolean remove) { - CONNECTION_ENSURE_LOCK (data->connection); + GDBusConnection *connection = g_task_get_source_object (task); + SendMessageData *data = g_task_get_task_data (task); + + CONNECTION_ENSURE_LOCK (connection); g_assert (!data->delivered); data->delivered = TRUE; - g_simple_async_result_complete_in_idle (data->simple); - g_object_unref (data->simple); - data->simple = NULL; - if (data->timeout_source != NULL) { g_source_destroy (data->timeout_source); @@ -1845,60 +1776,75 @@ send_message_with_reply_deliver (SendMessageData *data, gboolean remove) } if (data->cancellable_handler_id > 0) { - g_cancellable_disconnect (data->cancellable, data->cancellable_handler_id); + g_cancellable_disconnect (g_task_get_cancellable (task), data->cancellable_handler_id); data->cancellable_handler_id = 0; } if (remove) { - g_warn_if_fail (g_hash_table_remove (data->connection->map_method_serial_to_send_message_data, - GUINT_TO_POINTER (data->serial))); + gboolean removed = g_hash_table_remove (connection->map_method_serial_to_task, + GUINT_TO_POINTER (data->serial)); + g_warn_if_fail (removed); } - send_message_data_unref (data); + g_object_unref (task); } /* ---------------------------------------------------------------------------------------------------- */ -/* Can be called from any thread with lock held */ +/* Called from GDBus worker thread with lock held */ static void -send_message_data_deliver_reply_unlocked (SendMessageData *data, +send_message_data_deliver_reply_unlocked (GTask *task, GDBusMessage *reply) { + SendMessageData *data = g_task_get_task_data (task); + if (data->delivered) goto out; - g_simple_async_result_set_op_res_gpointer (data->simple, - g_object_ref (reply), - g_object_unref); + g_task_return_pointer (task, g_object_ref (reply), g_object_unref); - send_message_with_reply_deliver (data, TRUE); + send_message_with_reply_cleanup (task, TRUE); out: ; } +/* Called from a user thread, lock is not held */ +static void +send_message_data_deliver_error (GTask *task, + GQuark domain, + gint code, + const char *message) +{ + GDBusConnection *connection = g_task_get_source_object (task); + SendMessageData *data = g_task_get_task_data (task); + + CONNECTION_LOCK (connection); + if (data->delivered) + { + CONNECTION_UNLOCK (connection); + return; + } + + g_object_ref (task); + send_message_with_reply_cleanup (task, TRUE); + CONNECTION_UNLOCK (connection); + + g_task_return_new_error (task, domain, code, "%s", message); + g_object_unref (task); +} + /* ---------------------------------------------------------------------------------------------------- */ /* Called from a user thread, lock is not held */ static gboolean send_message_with_reply_cancelled_idle_cb (gpointer user_data) { - SendMessageData *data = user_data; - - CONNECTION_LOCK (data->connection); - if (data->delivered) - goto out; + GTask *task = user_data; - g_simple_async_result_set_error (data->simple, - G_IO_ERROR, - G_IO_ERROR_CANCELLED, + send_message_data_deliver_error (task, G_IO_ERROR, G_IO_ERROR_CANCELLED, _("Operation was cancelled")); - - send_message_with_reply_deliver (data, TRUE); - - out: - CONNECTION_UNLOCK (data->connection); return FALSE; } @@ -1907,20 +1853,15 @@ static void send_message_with_reply_cancelled_cb (GCancellable *cancellable, gpointer user_data) { - SendMessageData *data = user_data; + GTask *task = user_data; GSource *idle_source; /* postpone cancellation to idle handler since we may be called directly * via g_cancellable_connect() (e.g. holding lock) */ idle_source = g_idle_source_new (); - g_source_set_priority (idle_source, G_PRIORITY_DEFAULT); - g_source_set_callback (idle_source, - send_message_with_reply_cancelled_idle_cb, - send_message_data_ref (data), - (GDestroyNotify) send_message_data_unref); g_source_set_name (idle_source, "[gio] send_message_with_reply_cancelled_idle_cb"); - g_source_attach (idle_source, data->main_context); + g_task_attach_source (task, idle_source, send_message_with_reply_cancelled_idle_cb); g_source_unref (idle_source); } @@ -1930,22 +1871,10 @@ send_message_with_reply_cancelled_cb (GCancellable *cancellable, static gboolean send_message_with_reply_timeout_cb (gpointer user_data) { - SendMessageData *data = user_data; - - CONNECTION_LOCK (data->connection); - if (data->delivered) - goto out; + GTask *task = user_data; - g_simple_async_result_set_error (data->simple, - G_IO_ERROR, - G_IO_ERROR_TIMED_OUT, + send_message_data_deliver_error (task, G_IO_ERROR, G_IO_ERROR_TIMED_OUT, _("Timeout was reached")); - - send_message_with_reply_deliver (data, TRUE); - - out: - CONNECTION_UNLOCK (data->connection); - return FALSE; } @@ -1962,79 +1891,54 @@ g_dbus_connection_send_message_with_reply_unlocked (GDBusConnection *connect GAsyncReadyCallback callback, gpointer user_data) { - GSimpleAsyncResult *simple; + GTask *task; SendMessageData *data; - GError *error; + GError *error = NULL; volatile guint32 serial; - data = NULL; - if (out_serial == NULL) out_serial = &serial; if (timeout_msec == -1) timeout_msec = 25 * 1000; - simple = g_simple_async_result_new (G_OBJECT (connection), - callback, - user_data, - g_dbus_connection_send_message_with_reply); - g_simple_async_result_set_check_cancellable (simple, cancellable); + data = g_slice_new0 (SendMessageData); + task = g_task_new (connection, cancellable, callback, user_data); + g_task_set_task_data (task, data, (GDestroyNotify) send_message_data_free); - if (g_cancellable_is_cancelled (cancellable)) + if (g_task_return_error_if_cancelled (task)) { - g_simple_async_result_set_error (simple, - G_IO_ERROR, - G_IO_ERROR_CANCELLED, - _("Operation was cancelled")); - g_simple_async_result_complete_in_idle (simple); - g_object_unref (simple); - goto out; + g_object_unref (task); + return; } - error = NULL; if (!g_dbus_connection_send_message_unlocked (connection, message, flags, out_serial, &error)) { - g_simple_async_result_take_error (simple, error); - g_simple_async_result_complete_in_idle (simple); - g_object_unref (simple); - goto out; + g_task_return_error (task, error); + g_object_unref (task); + return; } - - data = g_new0 (SendMessageData, 1); - data->ref_count = 1; - data->connection = g_object_ref (connection); - data->simple = simple; data->serial = *out_serial; - data->main_context = g_main_context_ref_thread_default (); if (cancellable != NULL) { - data->cancellable = g_object_ref (cancellable); data->cancellable_handler_id = g_cancellable_connect (cancellable, G_CALLBACK (send_message_with_reply_cancelled_cb), - send_message_data_ref (data), - (GDestroyNotify) send_message_data_unref); + g_object_ref (task), + g_object_unref); } if (timeout_msec != G_MAXINT) { data->timeout_source = g_timeout_source_new (timeout_msec); - g_source_set_priority (data->timeout_source, G_PRIORITY_DEFAULT); - g_source_set_callback (data->timeout_source, - send_message_with_reply_timeout_cb, - send_message_data_ref (data), - (GDestroyNotify) send_message_data_unref); - g_source_attach (data->timeout_source, data->main_context); + g_task_attach_source (task, data->timeout_source, + (GSourceFunc) send_message_with_reply_timeout_cb); g_source_unref (data->timeout_source); } - g_hash_table_insert (connection->map_method_serial_to_send_message_data, + g_hash_table_insert (connection->map_method_serial_to_task, GUINT_TO_POINTER (*out_serial), - data); - - out: - ; + task); } /** @@ -2135,23 +2039,11 @@ g_dbus_connection_send_message_with_reply_finish (GDBusConnection *connection, GAsyncResult *res, GError **error) { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res); - GDBusMessage *reply; - g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL); + g_return_val_if_fail (g_task_is_valid (res, connection), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); - reply = NULL; - - g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == g_dbus_connection_send_message_with_reply); - - if (g_simple_async_result_propagate_error (simple, error)) - goto out; - - reply = g_object_ref (g_simple_async_result_get_op_res_gpointer (simple)); - - out: - return reply; + return g_task_propagate_pointer (G_TASK (res), error); } /* ---------------------------------------------------------------------------------------------------- */ @@ -2229,7 +2121,7 @@ g_dbus_connection_send_message_with_reply_sync (GDBusConnection *connecti GCancellable *cancellable, GError **error) { - SendMessageSyncData *data; + SendMessageSyncData data; GDBusMessage *reply; g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL); @@ -2238,11 +2130,11 @@ g_dbus_connection_send_message_with_reply_sync (GDBusConnection *connecti g_return_val_if_fail (timeout_msec >= 0 || timeout_msec == -1, NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); - data = g_new0 (SendMessageSyncData, 1); - data->context = g_main_context_new (); - data->loop = g_main_loop_new (data->context, FALSE); + data.res = NULL; + data.context = g_main_context_new (); + data.loop = g_main_loop_new (data.context, FALSE); - g_main_context_push_thread_default (data->context); + g_main_context_push_thread_default (data.context); g_dbus_connection_send_message_with_reply (connection, message, @@ -2251,18 +2143,18 @@ g_dbus_connection_send_message_with_reply_sync (GDBusConnection *connecti out_serial, cancellable, (GAsyncReadyCallback) send_message_with_reply_sync_cb, - data); - g_main_loop_run (data->loop); + &data); + g_main_loop_run (data.loop); reply = g_dbus_connection_send_message_with_reply_finish (connection, - data->res, + data.res, error); - g_main_context_pop_thread_default (data->context); + g_main_context_pop_thread_default (data.context); - g_main_context_unref (data->context); - g_main_loop_unref (data->loop); - g_object_unref (data->res); - g_free (data); + g_main_context_unref (data.context); + g_main_loop_unref (data.loop); + if (data.res) + g_object_unref (data.res); return reply; } @@ -2271,18 +2163,53 @@ g_dbus_connection_send_message_with_reply_sync (GDBusConnection *connecti typedef struct { - GDBusMessageFilterFunction func; - gpointer user_data; -} FilterCallback; - -typedef struct -{ guint id; + guint ref_count; GDBusMessageFilterFunction filter_function; gpointer user_data; GDestroyNotify user_data_free_func; + GMainContext *context; } FilterData; +/* requires CONNECTION_LOCK */ +static FilterData ** +copy_filter_list (GPtrArray *filters) +{ + FilterData **copy; + guint n; + + copy = g_new (FilterData *, filters->len + 1); + for (n = 0; n < filters->len; n++) + { + copy[n] = filters->pdata[n]; + copy[n]->ref_count++; + } + copy[n] = NULL; + + return copy; +} + +/* requires CONNECTION_LOCK */ +static void +free_filter_list (FilterData **filters) +{ + guint n; + + for (n = 0; filters[n]; n++) + { + filters[n]->ref_count--; + if (filters[n]->ref_count == 0) + { + call_destroy_notify (filters[n]->context, + filters[n]->user_data_free_func, + filters[n]->user_data); + g_main_context_unref (filters[n]->context); + g_free (filters[n]); + } + } + g_free (filters); +} + /* Called in GDBusWorker's thread - we must not block - with no lock held */ static void on_worker_message_received (GDBusWorker *worker, @@ -2290,8 +2217,7 @@ on_worker_message_received (GDBusWorker *worker, gpointer user_data) { GDBusConnection *connection; - FilterCallback *filters; - guint num_filters; + FilterData **filters; guint n; gboolean alive; @@ -2315,28 +2241,25 @@ on_worker_message_received (GDBusWorker *worker, /* First collect the set of callback functions */ CONNECTION_LOCK (connection); - num_filters = connection->filters->len; - filters = g_new0 (FilterCallback, num_filters); - for (n = 0; n < num_filters; n++) - { - FilterData *data = connection->filters->pdata[n]; - filters[n].func = data->filter_function; - filters[n].user_data = data->user_data; - } + filters = copy_filter_list (connection->filters); CONNECTION_UNLOCK (connection); /* then call the filters in order (without holding the lock) */ - for (n = 0; n < num_filters; n++) + for (n = 0; filters[n]; n++) { - message = filters[n].func (connection, - message, - TRUE, - filters[n].user_data); + message = filters[n]->filter_function (connection, + message, + TRUE, + filters[n]->user_data); if (message == NULL) break; g_dbus_message_lock (message); } + CONNECTION_LOCK (connection); + free_filter_list (filters); + CONNECTION_UNLOCK (connection); + /* Standard dispatch unless the filter ate the message - no need to * do anything if the message was altered */ @@ -2348,16 +2271,16 @@ on_worker_message_received (GDBusWorker *worker, if (message_type == G_DBUS_MESSAGE_TYPE_METHOD_RETURN || message_type == G_DBUS_MESSAGE_TYPE_ERROR) { guint32 reply_serial; - SendMessageData *send_message_data; + GTask *task; reply_serial = g_dbus_message_get_reply_serial (message); CONNECTION_LOCK (connection); - send_message_data = g_hash_table_lookup (connection->map_method_serial_to_send_message_data, - GUINT_TO_POINTER (reply_serial)); - if (send_message_data != NULL) + task = g_hash_table_lookup (connection->map_method_serial_to_task, + GUINT_TO_POINTER (reply_serial)); + if (task != NULL) { //g_debug ("delivering reply/error for serial %d for %p", reply_serial, connection); - send_message_data_deliver_reply_unlocked (send_message_data, message); + send_message_data_deliver_reply_unlocked (task, message); } else { @@ -2382,7 +2305,6 @@ on_worker_message_received (GDBusWorker *worker, if (message != NULL) g_object_unref (message); g_object_unref (connection); - g_free (filters); } /* Called in GDBusWorker's thread, lock is not held */ @@ -2392,8 +2314,7 @@ on_worker_message_about_to_be_sent (GDBusWorker *worker, gpointer user_data) { GDBusConnection *connection; - FilterCallback *filters; - guint num_filters; + FilterData **filters; guint n; gboolean alive; @@ -2412,30 +2333,26 @@ on_worker_message_about_to_be_sent (GDBusWorker *worker, /* First collect the set of callback functions */ CONNECTION_LOCK (connection); - num_filters = connection->filters->len; - filters = g_new0 (FilterCallback, num_filters); - for (n = 0; n < num_filters; n++) - { - FilterData *data = connection->filters->pdata[n]; - filters[n].func = data->filter_function; - filters[n].user_data = data->user_data; - } + filters = copy_filter_list (connection->filters); CONNECTION_UNLOCK (connection); /* then call the filters in order (without holding the lock) */ - for (n = 0; n < num_filters; n++) + for (n = 0; filters[n]; n++) { g_dbus_message_lock (message); - message = filters[n].func (connection, - message, - FALSE, - filters[n].user_data); + message = filters[n]->filter_function (connection, + message, + FALSE, + filters[n]->user_data); if (message == NULL) break; } + CONNECTION_LOCK (connection); + free_filter_list (filters); + CONNECTION_UNLOCK (connection); + g_object_unref (connection); - g_free (filters); return message; } @@ -2444,21 +2361,22 @@ on_worker_message_about_to_be_sent (GDBusWorker *worker, static gboolean cancel_method_on_close (gpointer key, gpointer value, gpointer user_data) { - SendMessageData *data = value; + GTask *task = value; + SendMessageData *data = g_task_get_task_data (task); if (data->delivered) return FALSE; - g_simple_async_result_set_error (data->simple, - G_IO_ERROR, - G_IO_ERROR_CLOSED, - _("The connection is closed")); + g_task_return_new_error (task, + G_IO_ERROR, + G_IO_ERROR_CLOSED, + _("The connection is closed")); - /* Ask send_message_with_reply_deliver not to remove the element from the + /* Ask send_message_with_reply_cleanup not to remove the element from the * hash table - we're in the middle of a foreach; that would be unsafe. * Instead, return TRUE from this function so that it gets removed safely. */ - send_message_with_reply_deliver (data, FALSE); + send_message_with_reply_cleanup (task, FALSE); return TRUE; } @@ -2495,7 +2413,7 @@ on_worker_closed (GDBusWorker *worker, if (!(old_atomic_flags & FLAG_CLOSED)) { - g_hash_table_foreach_remove (connection->map_method_serial_to_send_message_data, cancel_method_on_close, NULL); + g_hash_table_foreach_remove (connection->map_method_serial_to_task, cancel_method_on_close, NULL); schedule_closed_unlocked (connection, remote_peer_vanished, error); } CONNECTION_UNLOCK (connection); @@ -3116,8 +3034,8 @@ g_dbus_connection_get_unique_name (GDBusConnection *connection) * each application is a client. So this method will always return * %NULL for message bus clients. * - * Returns: (transfer none): a #GCredentials or %NULL if not available. - * Do not free this object, it is owned by @connection. + * Returns: (transfer none) (nullable): a #GCredentials or %NULL if not + * available. Do not free this object, it is owned by @connection. * * Since: 2.26 */ @@ -3166,6 +3084,13 @@ static guint _global_filter_id = 1; * message. Similary, if a filter consumes an outgoing message, the * message will not be sent to the other peer. * + * If @user_data_free_func is non-%NULL, it will be called (in the + * thread-default main context of the thread you are calling this + * method from) at some point after @user_data is no longer + * needed. (It is not guaranteed to be called synchronously when the + * filter is removed, and may be called after @connection has been + * destroyed.) + * * Returns: a filter identifier that can be used with * g_dbus_connection_remove_filter() * @@ -3186,9 +3111,11 @@ g_dbus_connection_add_filter (GDBusConnection *connection, CONNECTION_LOCK (connection); data = g_new0 (FilterData, 1); data->id = _global_filter_id++; /* TODO: overflow etc. */ + data->ref_count = 1; data->filter_function = filter_function; data->user_data = user_data; data->user_data_free_func = user_data_free_func; + data->context = g_main_context_ref_thread_default (); g_ptr_array_add (connection->filters, data); CONNECTION_UNLOCK (connection); @@ -3203,8 +3130,11 @@ purge_all_filters (GDBusConnection *connection) for (n = 0; n < connection->filters->len; n++) { FilterData *data = connection->filters->pdata[n]; - if (data->user_data_free_func != NULL) - data->user_data_free_func (data->user_data); + + call_destroy_notify (data->context, + data->user_data_free_func, + data->user_data); + g_main_context_unref (data->context); g_free (data); } } @@ -3216,6 +3146,13 @@ purge_all_filters (GDBusConnection *connection) * * Removes a filter. * + * Note that since filters run in a different thread, there is a race + * condition where it is possible that the filter will be running even + * after calling g_dbus_connection_remove_filter(), so you cannot just + * free data that the filter might be using. Instead, you should pass + * a #GDestroyNotify to g_dbus_connection_add_filter(), which will be + * called when it is guaranteed that the data is no longer needed. + * * Since: 2.26 */ void @@ -3236,7 +3173,9 @@ g_dbus_connection_remove_filter (GDBusConnection *connection, if (data->id == filter_id) { g_ptr_array_remove_index (connection->filters, n); - to_destroy = data; + data->ref_count--; + if (data->ref_count == 0) + to_destroy = data; break; } } @@ -3247,6 +3186,7 @@ g_dbus_connection_remove_filter (GDBusConnection *connection, { if (to_destroy->user_data_free_func != NULL) to_destroy->user_data_free_func (to_destroy->user_data); + g_main_context_unref (to_destroy->context); g_free (to_destroy); } else @@ -3426,7 +3366,8 @@ is_signal_data_for_name_lost_or_acquired (SignalData *signal_data) * all object paths * @arg0: (allow-none): contents of first string argument to match on or %NULL * to match on all kinds of arguments - * @flags: flags describing how to subscribe to the signal (currently unused) + * @flags: #GDBusSignalFlags describing how arg0 is used in subscribing to the + * signal * @callback: callback to invoke when there is a signal matching the requested data * @user_data: user data to pass to @callback * @user_data_free_func: (allow-none): function to free @user_data with when @@ -3452,6 +3393,13 @@ is_signal_data_for_name_lost_or_acquired (SignalData *signal_data) * interpreted as part of a namespace or path. The first argument * of a signal is matched against that part as specified by D-Bus. * + * If @user_data_free_func is non-%NULL, it will be called (in the + * thread-default main context of the thread you are calling this + * method from) at some point after @user_data is no longer + * needed. (It is not guaranteed to be called synchronously when the + * signal is unsubscribed from, and may be called after @connection + * has been destroyed.) + * * Returns: a subscription identifier that can be used with g_dbus_connection_signal_unsubscribe() * * Since: 2.26 @@ -3799,10 +3747,10 @@ path_rule_matches (const gchar *path_a, len_a = strlen (path_a); len_b = strlen (path_b); - if (len_a < len_b && path_a[len_a - 1] != '/') + if (len_a < len_b && (len_a == 0 || path_a[len_a - 1] != '/')) return FALSE; - if (len_b < len_a && path_b[len_b - 1] != '/') + if (len_b < len_a && (len_b == 0 || path_b[len_b - 1] != '/')) return FALSE; return memcmp (path_a, path_b, MIN (len_a, len_b)) == 0; @@ -5278,6 +5226,259 @@ g_dbus_connection_unregister_object (GDBusConnection *connection, return ret; } +typedef struct { + GClosure *method_call_closure; + GClosure *get_property_closure; + GClosure *set_property_closure; +} RegisterObjectData; + +static RegisterObjectData * +register_object_data_new (GClosure *method_call_closure, + GClosure *get_property_closure, + GClosure *set_property_closure) +{ + RegisterObjectData *data; + + data = g_new0 (RegisterObjectData, 1); + + if (method_call_closure != NULL) + { + data->method_call_closure = g_closure_ref (method_call_closure); + g_closure_sink (method_call_closure); + if (G_CLOSURE_NEEDS_MARSHAL (method_call_closure)) + g_closure_set_marshal (method_call_closure, g_cclosure_marshal_generic); + } + + if (get_property_closure != NULL) + { + data->get_property_closure = g_closure_ref (get_property_closure); + g_closure_sink (get_property_closure); + if (G_CLOSURE_NEEDS_MARSHAL (get_property_closure)) + g_closure_set_marshal (get_property_closure, g_cclosure_marshal_generic); + } + + if (set_property_closure != NULL) + { + data->set_property_closure = g_closure_ref (set_property_closure); + g_closure_sink (set_property_closure); + if (G_CLOSURE_NEEDS_MARSHAL (set_property_closure)) + g_closure_set_marshal (set_property_closure, g_cclosure_marshal_generic); + } + + return data; +} + +static void +register_object_free_func (gpointer user_data) +{ + RegisterObjectData *data = user_data; + + g_clear_pointer (&data->method_call_closure, g_closure_unref); + g_clear_pointer (&data->get_property_closure, g_closure_unref); + g_clear_pointer (&data->set_property_closure, g_closure_unref); + + g_free (data); +} + +static void +register_with_closures_on_method_call (GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *method_name, + GVariant *parameters, + GDBusMethodInvocation *invocation, + gpointer user_data) +{ + RegisterObjectData *data = user_data; + GValue params[] = { G_VALUE_INIT, G_VALUE_INIT, G_VALUE_INIT, G_VALUE_INIT, G_VALUE_INIT, G_VALUE_INIT, G_VALUE_INIT }; + + g_value_init (¶ms[0], G_TYPE_DBUS_CONNECTION); + g_value_set_object (¶ms[0], connection); + + g_value_init (¶ms[1], G_TYPE_STRING); + g_value_set_string (¶ms[1], sender); + + g_value_init (¶ms[2], G_TYPE_STRING); + g_value_set_string (¶ms[2], object_path); + + g_value_init (¶ms[3], G_TYPE_STRING); + g_value_set_string (¶ms[3], interface_name); + + g_value_init (¶ms[4], G_TYPE_STRING); + g_value_set_string (¶ms[4], method_name); + + g_value_init (¶ms[5], G_TYPE_VARIANT); + g_value_set_variant (¶ms[5], parameters); + + g_value_init (¶ms[6], G_TYPE_DBUS_METHOD_INVOCATION); + g_value_set_object (¶ms[6], invocation); + + g_closure_invoke (data->method_call_closure, NULL, G_N_ELEMENTS (params), params, NULL); + + g_value_unset (params + 0); + g_value_unset (params + 1); + g_value_unset (params + 2); + g_value_unset (params + 3); + g_value_unset (params + 4); + g_value_unset (params + 5); + g_value_unset (params + 6); +} + +static GVariant * +register_with_closures_on_get_property (GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GError **error, + gpointer user_data) +{ + RegisterObjectData *data = user_data; + GValue params[] = { G_VALUE_INIT, G_VALUE_INIT, G_VALUE_INIT, G_VALUE_INIT, G_VALUE_INIT }; + GValue result_value = G_VALUE_INIT; + GVariant *result; + + g_value_init (¶ms[0], G_TYPE_DBUS_CONNECTION); + g_value_set_object (¶ms[0], connection); + + g_value_init (¶ms[1], G_TYPE_STRING); + g_value_set_string (¶ms[1], sender); + + g_value_init (¶ms[2], G_TYPE_STRING); + g_value_set_string (¶ms[2], object_path); + + g_value_init (¶ms[3], G_TYPE_STRING); + g_value_set_string (¶ms[3], interface_name); + + g_value_init (¶ms[4], G_TYPE_STRING); + g_value_set_string (¶ms[4], property_name); + + g_value_init (&result_value, G_TYPE_VARIANT); + + g_closure_invoke (data->get_property_closure, &result_value, G_N_ELEMENTS (params), params, NULL); + + result = g_value_get_variant (&result_value); + if (result) + g_variant_ref (result); + + g_value_unset (params + 0); + g_value_unset (params + 1); + g_value_unset (params + 2); + g_value_unset (params + 3); + g_value_unset (params + 4); + g_value_unset (&result_value); + + if (!result) + g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, + _("Unable to retrieve property %s.%s"), + interface_name, property_name); + + return result; +} + +static gboolean +register_with_closures_on_set_property (GDBusConnection *connection, + const gchar *sender, + const gchar *object_path, + const gchar *interface_name, + const gchar *property_name, + GVariant *value, + GError **error, + gpointer user_data) +{ + RegisterObjectData *data = user_data; + GValue params[] = { G_VALUE_INIT, G_VALUE_INIT, G_VALUE_INIT, G_VALUE_INIT, G_VALUE_INIT, G_VALUE_INIT }; + GValue result_value = G_VALUE_INIT; + gboolean result; + + g_value_init (¶ms[0], G_TYPE_DBUS_CONNECTION); + g_value_set_object (¶ms[0], connection); + + g_value_init (¶ms[1], G_TYPE_STRING); + g_value_set_string (¶ms[1], sender); + + g_value_init (¶ms[2], G_TYPE_STRING); + g_value_set_string (¶ms[2], object_path); + + g_value_init (¶ms[3], G_TYPE_STRING); + g_value_set_string (¶ms[3], interface_name); + + g_value_init (¶ms[4], G_TYPE_STRING); + g_value_set_string (¶ms[4], property_name); + + g_value_init (¶ms[5], G_TYPE_VARIANT); + g_value_set_variant (¶ms[5], value); + + g_value_init (&result_value, G_TYPE_BOOLEAN); + + g_closure_invoke (data->set_property_closure, &result_value, G_N_ELEMENTS (params), params, NULL); + + result = g_value_get_boolean (&result_value); + + g_value_unset (params + 0); + g_value_unset (params + 1); + g_value_unset (params + 2); + g_value_unset (params + 3); + g_value_unset (params + 4); + g_value_unset (params + 5); + g_value_unset (&result_value); + + if (!result) + g_set_error (error, + G_DBUS_ERROR, G_DBUS_ERROR_FAILED, + _("Unable to set property %s.%s"), + interface_name, property_name); + + return result; +} + +/** + * g_dbus_connection_register_object_with_closures: (rename-to g_dbus_connection_register_object) + * @connection: A #GDBusConnection. + * @object_path: The object path to register at. + * @interface_info: Introspection data for the interface. + * @method_call_closure: (nullable): #GClosure for handling incoming method calls. + * @get_property_closure: (nullable): #GClosure for getting a property. + * @set_property_closure: (nullable): #GClosure for setting a property. + * @error: Return location for error or %NULL. + * + * Version of g_dbus_connection_register_object() using closures instead of a + * #GDBusInterfaceVTable for easier binding in other languages. + * + * Returns: 0 if @error is set, otherwise a registration id (never 0) + * that can be used with g_dbus_connection_unregister_object() . + * + * Since: 2.46 + */ +guint +g_dbus_connection_register_object_with_closures (GDBusConnection *connection, + const gchar *object_path, + GDBusInterfaceInfo *interface_info, + GClosure *method_call_closure, + GClosure *get_property_closure, + GClosure *set_property_closure, + GError **error) +{ + RegisterObjectData *data; + GDBusInterfaceVTable vtable = + { + method_call_closure != NULL ? register_with_closures_on_method_call : NULL, + get_property_closure != NULL ? register_with_closures_on_get_property : NULL, + set_property_closure != NULL ? register_with_closures_on_set_property : NULL + }; + + data = register_object_data_new (method_call_closure, get_property_closure, set_property_closure); + + return g_dbus_connection_register_object (connection, + object_path, + interface_info, + &vtable, + data, + register_object_free_func, + error); +} + /* ---------------------------------------------------------------------------------------------------- */ /** @@ -5361,8 +5562,14 @@ static void add_call_flags (GDBusMessage *message, GDBusCallFlags flags) { + GDBusMessageFlags msg_flags = 0; + if (flags & G_DBUS_CALL_FLAGS_NO_AUTO_START) - g_dbus_message_set_flags (message, G_DBUS_MESSAGE_FLAGS_NO_AUTO_START); + msg_flags |= G_DBUS_MESSAGE_FLAGS_NO_AUTO_START; + if (flags & G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION) + msg_flags |= G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION; + if (msg_flags) + g_dbus_message_set_flags (message, msg_flags); } static GVariant * @@ -5432,12 +5639,10 @@ decode_method_reply (GDBusMessage *reply, typedef struct { - GSimpleAsyncResult *simple; GVariantType *reply_type; gchar *method_name; /* for error message */ guint32 serial; - GVariant *value; GUnixFDList *fd_list; } CallState; @@ -5447,8 +5652,6 @@ call_state_free (CallState *state) g_variant_type_free (state->reply_type); g_free (state->method_name); - if (state->value != NULL) - g_variant_unref (state->value); if (state->fd_list != NULL) g_object_unref (state->fd_list); g_slice_free (CallState, state); @@ -5460,13 +5663,13 @@ g_dbus_connection_call_done (GObject *source, GAsyncResult *result, gpointer user_data) { - GSimpleAsyncResult *simple; GDBusConnection *connection = G_DBUS_CONNECTION (source); - CallState *state = user_data; - GError *error; + GTask *task = user_data; + CallState *state = g_task_get_task_data (task); + GError *error = NULL; GDBusMessage *reply; + GVariant *value = NULL; - error = NULL; reply = g_dbus_connection_send_message_with_reply_finish (connection, result, &error); @@ -5493,22 +5696,15 @@ g_dbus_connection_call_done (GObject *source, } if (reply != NULL) - state->value = decode_method_reply (reply, state->method_name, state->reply_type, &state->fd_list, &error); + value = decode_method_reply (reply, state->method_name, state->reply_type, &state->fd_list, &error); - simple = state->simple; /* why? because state is freed before we unref simple.. */ if (error != NULL) - { - g_simple_async_result_take_error (state->simple, error); - g_simple_async_result_complete (state->simple); - call_state_free (state); - } + g_task_return_error (task, error); else - { - g_simple_async_result_set_op_res_gpointer (state->simple, state, (GDestroyNotify) call_state_free); - g_simple_async_result_complete (state->simple); - } + g_task_return_pointer (task, value, (GDestroyNotify) g_variant_unref); + g_clear_object (&reply); - g_object_unref (simple); + g_object_unref (task); } /* called in any thread, with the connection's lock not held */ @@ -5565,12 +5761,9 @@ g_dbus_connection_call_internal (GDBusConnection *connection, if (callback != NULL) { CallState *state; + GTask *task; state = g_slice_new0 (CallState); - state->simple = g_simple_async_result_new (G_OBJECT (connection), - callback, user_data, - g_dbus_connection_call_internal); - g_simple_async_result_set_check_cancellable (state->simple, cancellable); state->method_name = g_strjoin (".", interface_name, method_name, NULL); if (reply_type == NULL) @@ -5578,6 +5771,9 @@ g_dbus_connection_call_internal (GDBusConnection *connection, state->reply_type = g_variant_type_copy (reply_type); + task = g_task_new (connection, cancellable, callback, user_data); + g_task_set_task_data (task, state, (GDestroyNotify) call_state_free); + g_dbus_connection_send_message_with_reply (connection, message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, @@ -5585,7 +5781,7 @@ g_dbus_connection_call_internal (GDBusConnection *connection, &state->serial, cancellable, g_dbus_connection_call_done, - state); + task); serial = state->serial; } else @@ -5629,23 +5825,24 @@ g_dbus_connection_call_finish_internal (GDBusConnection *connection, GAsyncResult *res, GError **error) { - GSimpleAsyncResult *simple; + GTask *task; CallState *state; + GVariant *ret; g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL); - g_return_val_if_fail (g_simple_async_result_is_valid (res, G_OBJECT (connection), - g_dbus_connection_call_internal), NULL); + g_return_val_if_fail (g_task_is_valid (res, connection), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); - simple = G_SIMPLE_ASYNC_RESULT (res); + task = G_TASK (res); + state = g_task_get_task_data (task); - if (g_simple_async_result_propagate_error (simple, error)) + ret = g_task_propagate_pointer (task, error); + if (!ret) return NULL; - state = g_simple_async_result_get_op_res_gpointer (simple); if (out_fd_list != NULL) *out_fd_list = state->fd_list != NULL ? g_object_ref (state->fd_list) : NULL; - return g_variant_ref (state->value); + return ret; } /* called in any user thread, with the connection's lock not held */ @@ -7069,26 +7266,22 @@ bus_get_async_initable_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (user_data); - GError *error; + GTask *task = user_data; + GError *error = NULL; - error = NULL; if (!g_async_initable_init_finish (G_ASYNC_INITABLE (source_object), res, &error)) { g_assert (error != NULL); - g_simple_async_result_take_error (simple, error); + g_task_return_error (task, error); g_object_unref (source_object); } else { - g_simple_async_result_set_op_res_gpointer (simple, - source_object, - g_object_unref); + g_task_return_pointer (task, source_object, g_object_unref); } - g_simple_async_result_complete_in_idle (simple); - g_object_unref (simple); + g_object_unref (task); } /** @@ -7115,23 +7308,17 @@ g_bus_get (GBusType bus_type, gpointer user_data) { GDBusConnection *connection; - GSimpleAsyncResult *simple; - GError *error; + GTask *task; + GError *error = NULL; - simple = g_simple_async_result_new (NULL, - callback, - user_data, - g_bus_get); - g_simple_async_result_set_check_cancellable (simple, cancellable); + task = g_task_new (NULL, cancellable, callback, user_data); - error = NULL; connection = get_uninitialized_connection (bus_type, cancellable, &error); if (connection == NULL) { g_assert (error != NULL); - g_simple_async_result_take_error (simple, error); - g_simple_async_result_complete_in_idle (simple); - g_object_unref (simple); + g_task_return_error (task, error); + g_object_unref (task); } else { @@ -7139,7 +7326,7 @@ g_bus_get (GBusType bus_type, G_PRIORITY_DEFAULT, cancellable, bus_get_async_initable_cb, - simple); + task); } } @@ -7169,25 +7356,10 @@ GDBusConnection * g_bus_get_finish (GAsyncResult *res, GError **error) { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res); - GObject *object; - GDBusConnection *ret; - + g_return_val_if_fail (g_task_is_valid (res, NULL), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); - g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == g_bus_get); - - ret = NULL; - - if (g_simple_async_result_propagate_error (simple, error)) - goto out; - - object = g_simple_async_result_get_op_res_gpointer (simple); - g_assert (object != NULL); - ret = g_object_ref (G_DBUS_CONNECTION (object)); - - out: - return ret; + return g_task_propagate_pointer (G_TASK (res), error); } /* ---------------------------------------------------------------------------------------------------- */ diff --git a/gio/gdbusconnection.h b/gio/gdbusconnection.h index ba054db..abc8777 100644 --- a/gio/gdbusconnection.h +++ b/gio/gdbusconnection.h @@ -401,6 +401,14 @@ guint g_dbus_connection_register_object (GDBusConnection gpointer user_data, GDestroyNotify user_data_free_func, GError **error); +GLIB_AVAILABLE_IN_2_46 +guint g_dbus_connection_register_object_with_closures (GDBusConnection *connection, + const gchar *object_path, + GDBusInterfaceInfo *interface_info, + GClosure *method_call_closure, + GClosure *get_property_closure, + GClosure *set_property_closure, + GError **error); GLIB_AVAILABLE_IN_ALL gboolean g_dbus_connection_unregister_object (GDBusConnection *connection, guint registration_id); @@ -479,7 +487,7 @@ typedef GDBusInterfaceInfo ** (*GDBusSubtreeIntrospectFunc) (GDBusConnection * @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). + * @out_user_data: (nullable) (not optional): 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. diff --git a/gio/gdbusdaemon.c b/gio/gdbusdaemon.c index 3631a90..69a4f79 100644 --- a/gio/gdbusdaemon.c +++ b/gio/gdbusdaemon.c @@ -7,6 +7,7 @@ #include #include #include "gdbusdaemon.h" +#include "glibintl.h" #include "gdbus-daemon-generated.h" @@ -1695,7 +1696,7 @@ g_dbus_daemon_class_init (GDBusDaemonClass *klass) gobject_class->get_property = g_dbus_daemon_get_property; g_dbus_daemon_signals[SIGNAL_IDLE_TIMEOUT] = - g_signal_new ("idle-timeout", + g_signal_new (I_("idle-timeout"), G_TYPE_DBUS_DAEMON, G_SIGNAL_RUN_LAST, 0, diff --git a/gio/gdbusinterfaceskeleton.c b/gio/gdbusinterfaceskeleton.c index 0070e8b..e5f27af 100644 --- a/gio/gdbusinterfaceskeleton.c +++ b/gio/gdbusinterfaceskeleton.c @@ -242,7 +242,7 @@ g_dbus_interface_skeleton_class_init (GDBusInterfaceSkeletonClass *klass) * Since: 2.30 */ signals[G_AUTHORIZE_METHOD_SIGNAL] = - g_signal_new ("g-authorize-method", + g_signal_new (I_("g-authorize-method"), G_TYPE_DBUS_INTERFACE_SKELETON, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GDBusInterfaceSkeletonClass, g_authorize_method), diff --git a/gio/gdbusmenumodel.c b/gio/gdbusmenumodel.c index 18c68df..aafc9ae 100644 --- a/gio/gdbusmenumodel.c +++ b/gio/gdbusmenumodel.c @@ -625,7 +625,7 @@ g_dbus_menu_group_changed (GDBusMenuGroup *group, while (g_variant_iter_loop (&iter, "@a{sv}", &item)) g_sequence_insert_before (point, g_dbus_menu_group_create_item (item)); - if (g_sequence_get_length (items) == 0) + if (g_sequence_is_empty (items)) { g_hash_table_remove (group->menus, GINT_TO_POINTER (menu_id)); items = NULL; diff --git a/gio/gdbusmessage.c b/gio/gdbusmessage.c index 766609e..d9d8f37 100644 --- a/gio/gdbusmessage.c +++ b/gio/gdbusmessage.c @@ -2745,6 +2745,9 @@ g_dbus_message_to_blob (GDBusMessage *message, ret = (guchar *)mbuf.data; out: + if (ret == NULL) + g_free (mbuf.data); + return ret; } diff --git a/gio/gdbusmethodinvocation.c b/gio/gdbusmethodinvocation.c index 5bd850b..fc8bee2 100644 --- a/gio/gdbusmethodinvocation.c +++ b/gio/gdbusmethodinvocation.c @@ -29,6 +29,7 @@ #include "gdbusintrospection.h" #include "gdbuserror.h" #include "gdbusprivate.h" +#include "gioerror.h" #ifdef G_OS_UNIX #include "gunixfdlist.h" @@ -393,6 +394,16 @@ g_dbus_method_invocation_return_value_internal (GDBusMethodInvocation *invocatio g_return_if_fail (G_IS_DBUS_METHOD_INVOCATION (invocation)); g_return_if_fail ((parameters == NULL) || g_variant_is_of_type (parameters, G_VARIANT_TYPE_TUPLE)); + if (g_dbus_message_get_flags (invocation->message) & G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED) + { + if (parameters != NULL) + { + g_variant_ref_sink (parameters); + g_variant_unref (parameters); + } + goto out; + } + if (parameters == NULL) parameters = g_variant_new_tuple (NULL, 0); @@ -505,7 +516,8 @@ g_dbus_method_invocation_return_value_internal (GDBusMethodInvocation *invocatio error = NULL; if (!g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), reply, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, &error)) { - g_warning ("Error sending message: %s", error->message); + if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CLOSED)) + g_warning ("Error sending message: %s", error->message); g_error_free (error); } g_object_unref (reply); @@ -526,6 +538,11 @@ g_dbus_method_invocation_return_value_internal (GDBusMethodInvocation *invocatio * * This method will free @invocation, you cannot use it afterwards. * + * Since 2.48, if the method call requested for a reply not to be sent + * then this call will sink @parameters and free @invocation, but + * otherwise do nothing (as per the recommendations of the D-Bus + * specification). + * * Since: 2.26 */ void @@ -584,6 +601,10 @@ g_dbus_method_invocation_return_value_with_unix_fd_list (GDBusMethodInvocation * * * This method will free @invocation, you cannot use it afterwards. * + * Since 2.48, if the method call requested for a reply not to be sent + * then this call will free @invocation but otherwise do nothing (as per + * the recommendations of the D-Bus specification). + * * Since: 2.26 */ void @@ -745,6 +766,9 @@ g_dbus_method_invocation_return_dbus_error (GDBusMethodInvocation *invocation, g_return_if_fail (error_name != NULL && g_dbus_is_name (error_name)); g_return_if_fail (error_message != NULL); + if (g_dbus_message_get_flags (invocation->message) & G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED) + goto out; + if (G_UNLIKELY (_g_dbus_debug_return ())) { _g_dbus_debug_print_lock (); @@ -771,5 +795,6 @@ g_dbus_method_invocation_return_dbus_error (GDBusMethodInvocation *invocation, g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), reply, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL); g_object_unref (reply); +out: g_object_unref (invocation); } diff --git a/gio/gdbusobject.c b/gio/gdbusobject.c index 570d6b7..fe8fb3c 100644 --- a/gio/gdbusobject.c +++ b/gio/gdbusobject.c @@ -59,7 +59,7 @@ g_dbus_object_default_init (GDBusObjectIface *iface) * * Since: 2.30 */ - g_signal_new ("interface-added", + g_signal_new (I_("interface-added"), G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GDBusObjectIface, interface_added), @@ -79,7 +79,7 @@ g_dbus_object_default_init (GDBusObjectIface *iface) * * Since: 2.30 */ - g_signal_new ("interface-removed", + g_signal_new (I_("interface-removed"), G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GDBusObjectIface, interface_removed), diff --git a/gio/gdbusobjectmanager.c b/gio/gdbusobjectmanager.c index eb837f0..d899c00 100644 --- a/gio/gdbusobjectmanager.c +++ b/gio/gdbusobjectmanager.c @@ -63,7 +63,7 @@ g_dbus_object_manager_default_init (GDBusObjectManagerIface *iface) * * Since: 2.30 */ - g_signal_new ("object-added", + g_signal_new (I_("object-added"), G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GDBusObjectManagerIface, object_added), @@ -83,7 +83,7 @@ g_dbus_object_manager_default_init (GDBusObjectManagerIface *iface) * * Since: 2.30 */ - g_signal_new ("object-removed", + g_signal_new (I_("object-removed"), G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GDBusObjectManagerIface, object_removed), @@ -107,7 +107,7 @@ g_dbus_object_manager_default_init (GDBusObjectManagerIface *iface) * * Since: 2.30 */ - g_signal_new ("interface-added", + g_signal_new (I_("interface-added"), G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GDBusObjectManagerIface, interface_added), @@ -132,7 +132,7 @@ g_dbus_object_manager_default_init (GDBusObjectManagerIface *iface) * * Since: 2.30 */ - g_signal_new ("interface-removed", + g_signal_new (I_("interface-removed"), G_TYPE_FROM_INTERFACE (iface), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GDBusObjectManagerIface, interface_removed), diff --git a/gio/gdbusobjectmanagerclient.c b/gio/gdbusobjectmanagerclient.c index 5755e74..29bb1db 100644 --- a/gio/gdbusobjectmanagerclient.c +++ b/gio/gdbusobjectmanagerclient.c @@ -27,7 +27,6 @@ #include "gioenumtypes.h" #include "ginitable.h" #include "gasyncresult.h" -#include "gsimpleasyncresult.h" #include "gasyncinitable.h" #include "gdbusconnection.h" #include "gdbusutils.h" @@ -512,7 +511,7 @@ g_dbus_object_manager_client_class_init (GDBusObjectManagerClientClass *klass) * Since: 2.30 */ signals[INTERFACE_PROXY_SIGNAL_SIGNAL] = - g_signal_new ("interface-proxy-signal", + g_signal_new (I_("interface-proxy-signal"), G_TYPE_DBUS_OBJECT_MANAGER_CLIENT, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GDBusObjectManagerClientClass, interface_proxy_signal), @@ -550,7 +549,7 @@ g_dbus_object_manager_client_class_init (GDBusObjectManagerClientClass *klass) * Since: 2.30 */ signals[INTERFACE_PROXY_PROPERTIES_CHANGED_SIGNAL] = - g_signal_new ("interface-proxy-properties-changed", + g_signal_new (I_("interface-proxy-properties-changed"), G_TYPE_DBUS_OBJECT_MANAGER_CLIENT, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GDBusObjectManagerClientClass, interface_proxy_properties_changed), diff --git a/gio/gdbusobjectmanagerserver.c b/gio/gdbusobjectmanagerserver.c index bb6f8c2..1925805 100644 --- a/gio/gdbusobjectmanagerserver.c +++ b/gio/gdbusobjectmanagerserver.c @@ -30,6 +30,8 @@ #include "gdbusmethodinvocation.h" #include "gdbuserror.h" +#include "gioerror.h" + #include "glibintl.h" /** @@ -46,6 +48,14 @@ * clients can keep caches up to date by only listening to D-Bus * signals. * + * The recommended path to export an object manager at is the path form of the + * well-known name of a D-Bus service, or below. For example, if a D-Bus service + * is available at the well-known name `net.example.ExampleService1`, the object + * manager should typically be exported at `/net/example/ExampleService1`, or + * below (to allow for multiple object managers in a service). + * + * It is not supported to export an object manager at the root path, `/`. + * * See #GDBusObjectManagerClient for the client-side code that is * intended to be used with #GDBusObjectManagerServer or any D-Bus * object implementing the org.freedesktop.DBus.ObjectManager @@ -234,14 +244,15 @@ g_dbus_object_manager_server_init (GDBusObjectManagerServer *manager) /** * g_dbus_object_manager_server_new: - * @object_path: The object path to export the manager object at. + * @object_path: The object path to export the manager object at, which should + * not be `/`. * * Creates a new #GDBusObjectManagerServer object. * * The returned server isn't yet exported on any connection. To do so, * use g_dbus_object_manager_server_set_connection(). Normally you - * want to export all of your objects before doing so to avoid InterfacesAdded + * want to export all of your objects before doing so to avoid + * [InterfacesAdded](http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager) * signals being emitted. * * Returns: A #GDBusObjectManagerServer object. Free with g_object_unref(). @@ -927,7 +938,12 @@ g_dbus_object_manager_server_emit_interfaces_added (GDBusObjectManagerServer *ma object_path, &array_builder), &error); - g_assert_no_error (error); + if (error) + { + if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CLOSED)) + g_warning ("Couldn't emit InterfacesAdded signal: %s", error->message); + g_error_free (error); + } out: ; } @@ -960,7 +976,12 @@ g_dbus_object_manager_server_emit_interfaces_removed (GDBusObjectManagerServer * object_path, &array_builder), &error); - g_assert_no_error (error); + if (error) + { + if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CLOSED)) + g_warning ("Couldn't emit InterfacesRemoved signal: %s", error->message); + g_error_free (error); + } out: ; } diff --git a/gio/gdbusobjectskeleton.c b/gio/gdbusobjectskeleton.c index e0d0166..f740975 100644 --- a/gio/gdbusobjectskeleton.c +++ b/gio/gdbusobjectskeleton.c @@ -184,7 +184,7 @@ g_dbus_object_skeleton_class_init (GDBusObjectSkeletonClass *klass) * Since: 2.30 */ signals[AUTHORIZE_METHOD_SIGNAL] = - g_signal_new ("authorize-method", + g_signal_new (I_("authorize-method"), G_TYPE_DBUS_OBJECT_SKELETON, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GDBusObjectSkeletonClass, authorize_method), diff --git a/gio/gdbusprivate.c b/gio/gdbusprivate.c index 60af6c6..a52bec2 100644 --- a/gio/gdbusprivate.c +++ b/gio/gdbusprivate.c @@ -29,8 +29,7 @@ #include "gdbusmessage.h" #include "gdbuserror.h" #include "gdbusintrospection.h" -#include "gasyncresult.h" -#include "gsimpleasyncresult.h" +#include "gtask.h" #include "ginputstream.h" #include "gmemoryinputstream.h" #include "giostream.h" @@ -99,28 +98,17 @@ _g_dbus_hexdump (const gchar *data, gsize len, guint indent) typedef struct { - GSocket *socket; - GCancellable *cancellable; - void *buffer; gsize count; GSocketControlMessage ***messages; gint *num_messages; - - GSimpleAsyncResult *simple; - - gboolean from_mainloop; } ReadWithControlData; static void read_with_control_data_free (ReadWithControlData *data) { - g_object_unref (data->socket); - if (data->cancellable != NULL) - g_object_unref (data->cancellable); - g_object_unref (data->simple); - g_free (data); + g_slice_free (ReadWithControlData, data); } static gboolean @@ -128,7 +116,8 @@ _g_socket_read_with_control_messages_ready (GSocket *socket, GIOCondition condition, gpointer user_data) { - ReadWithControlData *data = user_data; + GTask *task = user_data; + ReadWithControlData *data = g_task_get_task_data (task); GError *error; gssize result; GInputVector vector; @@ -136,29 +125,28 @@ _g_socket_read_with_control_messages_ready (GSocket *socket, error = NULL; vector.buffer = data->buffer; vector.size = data->count; - result = g_socket_receive_message (data->socket, + result = g_socket_receive_message (socket, NULL, /* address */ &vector, 1, data->messages, data->num_messages, NULL, - data->cancellable, + g_task_get_cancellable (task), &error); - if (result >= 0) - { - g_simple_async_result_set_op_res_gssize (data->simple, result); - } - else + + if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)) { - g_assert (error != NULL); - g_simple_async_result_take_error (data->simple, error); + g_error_free (error); + return TRUE; } - if (data->from_mainloop) - g_simple_async_result_complete (data->simple); + g_assert (result >= 0 || error != NULL); + if (result >= 0) + g_task_return_int (task, result); else - g_simple_async_result_complete_in_idle (data->simple); + g_task_return_error (task, error); + g_object_unref (task); return FALSE; } @@ -174,41 +162,30 @@ _g_socket_read_with_control_messages (GSocket *socket, GAsyncReadyCallback callback, gpointer user_data) { + GTask *task; ReadWithControlData *data; + GSource *source; - data = g_new0 (ReadWithControlData, 1); - data->socket = g_object_ref (socket); - data->cancellable = cancellable != NULL ? g_object_ref (cancellable) : NULL; + data = g_slice_new0 (ReadWithControlData); data->buffer = buffer; data->count = count; data->messages = messages; data->num_messages = num_messages; - data->simple = g_simple_async_result_new (G_OBJECT (socket), - callback, - user_data, - _g_socket_read_with_control_messages); - g_simple_async_result_set_check_cancellable (data->simple, cancellable); + task = g_task_new (socket, cancellable, callback, user_data); + g_task_set_task_data (task, data, (GDestroyNotify) read_with_control_data_free); - if (!g_socket_condition_check (socket, G_IO_IN)) + if (g_socket_condition_check (socket, G_IO_IN)) { - GSource *source; - data->from_mainloop = TRUE; - source = g_socket_create_source (data->socket, - G_IO_IN | G_IO_HUP | G_IO_ERR, - cancellable); - g_source_set_callback (source, - (GSourceFunc) _g_socket_read_with_control_messages_ready, - data, - (GDestroyNotify) read_with_control_data_free); - g_source_attach (source, g_main_context_get_thread_default ()); - g_source_unref (source); - } - else - { - _g_socket_read_with_control_messages_ready (data->socket, G_IO_IN, data); - read_with_control_data_free (data); + if (!_g_socket_read_with_control_messages_ready (socket, G_IO_IN, task)) + return; } + + source = g_socket_create_source (socket, + G_IO_IN | G_IO_HUP | G_IO_ERR, + cancellable); + g_task_attach_source (task, source, (GSourceFunc) _g_socket_read_with_control_messages_ready); + g_source_unref (source); } static gssize @@ -216,15 +193,10 @@ _g_socket_read_with_control_messages_finish (GSocket *socket, GAsyncResult *result, GError **error) { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (result); - g_return_val_if_fail (G_IS_SOCKET (socket), -1); - g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == _g_socket_read_with_control_messages); + g_return_val_if_fail (g_task_is_valid (result, socket), -1); - if (g_simple_async_result_propagate_error (simple, error)) - return -1; - else - return g_simple_async_result_get_op_res_gssize (simple); + return g_task_propagate_int (G_TASK (result), error); } /* ---------------------------------------------------------------------------------------------------- */ @@ -252,7 +224,7 @@ ensure_required_types (void) { g_assert (ensured_classes == NULL); ensured_classes = g_ptr_array_new (); - ensure_type (G_TYPE_SIMPLE_ASYNC_RESULT); + ensure_type (G_TYPE_TASK); ensure_type (G_TYPE_MEMORY_INPUT_STREAM); } /* ---------------------------------------------------------------------------------------------------- */ @@ -422,17 +394,12 @@ static void write_message_print_transport_debug (gssize bytes_written, typedef struct { GDBusWorker *worker; - GCancellable *cancellable; - GSimpleAsyncResult *result; + GTask *task; } CloseData; static void close_data_free (CloseData *close_data) { - if (close_data->cancellable != NULL) - g_object_unref (close_data->cancellable); - - if (close_data->result != NULL) - g_object_unref (close_data->result); + g_clear_object (&close_data->task); _g_dbus_worker_unref (close_data->worker); g_slice_free (CloseData, close_data); @@ -890,9 +857,8 @@ struct _MessageToWriteData gchar *blob; gsize blob_size; - gsize total_written; - GSimpleAsyncResult *simple; - + gsize total_written; + GTask *task; }; static void @@ -902,7 +868,7 @@ message_to_write_data_free (MessageToWriteData *data) if (data->message) g_object_unref (data->message); g_free (data->blob); - g_free (data); + g_slice_free (MessageToWriteData, data); } /* ---------------------------------------------------------------------------------------------------- */ @@ -920,14 +886,14 @@ write_message_async_cb (GObject *source_object, gpointer user_data) { MessageToWriteData *data = user_data; - GSimpleAsyncResult *simple; + GTask *task; gssize bytes_written; GError *error; - /* Note: we can't access data->simple after calling g_async_result_complete () because the + /* Note: we can't access data->task after calling g_task_return_* () because the * callback can free @data and we're not completing in idle. So use a copy of the pointer. */ - simple = data->simple; + task = data->task; error = NULL; bytes_written = g_output_stream_write_finish (G_OUTPUT_STREAM (source_object), @@ -935,9 +901,8 @@ write_message_async_cb (GObject *source_object, &error); if (bytes_written == -1) { - g_simple_async_result_take_error (simple, error); - g_simple_async_result_complete (simple); - g_object_unref (simple); + g_task_return_error (task, error); + g_object_unref (task); goto out; } g_assert (bytes_written > 0); /* zero is never returned */ @@ -948,8 +913,8 @@ write_message_async_cb (GObject *source_object, g_assert (data->total_written <= data->blob_size); if (data->total_written == data->blob_size) { - g_simple_async_result_complete (simple); - g_object_unref (simple); + g_task_return_boolean (task, TRUE); + g_object_unref (task); goto out; } @@ -986,15 +951,15 @@ write_message_continue_writing (MessageToWriteData *data) { GOutputStream *ostream; #ifdef G_OS_UNIX - GSimpleAsyncResult *simple; + GTask *task; GUnixFDList *fd_list; #endif #ifdef G_OS_UNIX - /* Note: we can't access data->simple after calling g_async_result_complete () because the + /* Note: we can't access data->task after calling g_task_return_* () because the * callback can free @data and we're not completing in idle. So use a copy of the pointer. */ - simple = data->simple; + task = data->task; #endif ostream = g_io_stream_get_output_stream (data->worker->stream); @@ -1024,12 +989,11 @@ write_message_continue_writing (MessageToWriteData *data) { if (!(data->worker->capabilities & G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING)) { - g_simple_async_result_set_error (simple, - G_IO_ERROR, - G_IO_ERROR_FAILED, - "Tried sending a file descriptor but remote peer does not support this capability"); - g_simple_async_result_complete (simple); - g_object_unref (simple); + g_task_return_new_error (task, + G_IO_ERROR, + G_IO_ERROR_FAILED, + "Tried sending a file descriptor but remote peer does not support this capability"); + g_object_unref (task); goto out; } control_message = g_unix_fd_message_new_with_fd_list (fd_list); @@ -1066,9 +1030,8 @@ write_message_continue_writing (MessageToWriteData *data) g_error_free (error); goto out; } - g_simple_async_result_take_error (simple, error); - g_simple_async_result_complete (simple); - g_object_unref (simple); + g_task_return_error (task, error); + g_object_unref (task); goto out; } g_assert (bytes_written > 0); /* zero is never returned */ @@ -1079,8 +1042,8 @@ write_message_continue_writing (MessageToWriteData *data) g_assert (data->total_written <= data->blob_size); if (data->total_written == data->blob_size) { - g_simple_async_result_complete (simple); - g_object_unref (simple); + g_task_return_boolean (task, TRUE); + g_object_unref (task); goto out; } @@ -1092,13 +1055,12 @@ write_message_continue_writing (MessageToWriteData *data) #ifdef G_OS_UNIX if (fd_list != NULL) { - g_simple_async_result_set_error (simple, - G_IO_ERROR, - G_IO_ERROR_FAILED, - "Tried sending a file descriptor on unsupported stream of type %s", - g_type_name (G_TYPE_FROM_INSTANCE (ostream))); - g_simple_async_result_complete (simple); - g_object_unref (simple); + g_task_return_new_error (task, + G_IO_ERROR, + G_IO_ERROR_FAILED, + "Tried sending a file descriptor on unsupported stream of type %s", + g_type_name (G_TYPE_FROM_INSTANCE (ostream))); + g_object_unref (task); goto out; } #endif @@ -1128,10 +1090,7 @@ write_message_async (GDBusWorker *worker, GAsyncReadyCallback callback, gpointer user_data) { - data->simple = g_simple_async_result_new (NULL, - callback, - user_data, - write_message_async); + data->task = g_task_new (NULL, NULL, callback, user_data); data->total_written = 0; write_message_continue_writing (data); } @@ -1141,11 +1100,9 @@ static gboolean write_message_finish (GAsyncResult *res, GError **error) { - g_warn_if_fail (g_simple_async_result_get_source_tag (G_SIMPLE_ASYNC_RESULT (res)) == write_message_async); - if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error)) - return FALSE; - else - return TRUE; + g_return_val_if_fail (g_task_is_valid (res, NULL), FALSE); + + return g_task_propagate_boolean (G_TASK (res), error); } /* ---------------------------------------------------------------------------------------------------- */ @@ -1398,15 +1355,12 @@ iostream_close_cb (GObject *source_object, pending_close_attempts = g_list_delete_link (pending_close_attempts, pending_close_attempts); - if (close_data->result != NULL) + if (close_data->task != NULL) { if (error != NULL) - g_simple_async_result_set_from_error (close_data->result, error); - - /* this must be in an idle because the result is likely to be - * intended for another thread - */ - g_simple_async_result_complete_in_idle (close_data->result); + g_task_return_error (close_data->task, g_error_copy (error)); + else + g_task_return_boolean (close_data->task, TRUE); } close_data_free (close_data); @@ -1640,7 +1594,7 @@ _g_dbus_worker_send_message (GDBusWorker *worker, g_return_if_fail (blob != NULL); g_return_if_fail (blob_len > 16); - data = g_new0 (MessageToWriteData, 1); + data = g_slice_new0 (MessageToWriteData); data->worker = _g_dbus_worker_ref (worker); data->message = g_object_ref (message); data->blob = blob; /* steal! */ @@ -1717,16 +1671,13 @@ _g_dbus_worker_new (GIOStream *stream, */ void _g_dbus_worker_close (GDBusWorker *worker, - GCancellable *cancellable, - GSimpleAsyncResult *result) + GTask *task) { CloseData *close_data; close_data = g_slice_new0 (CloseData); close_data->worker = _g_dbus_worker_ref (worker); - close_data->cancellable = - (cancellable == NULL ? NULL : g_object_ref (cancellable)); - close_data->result = (result == NULL ? NULL : g_object_ref (result)); + close_data->task = (task == NULL ? NULL : g_object_ref (task)); /* Don't set worker->close_expected here - we're in the wrong thread. * It'll be set before the actual close happens. @@ -1752,7 +1703,7 @@ _g_dbus_worker_stop (GDBusWorker *worker) /* Cancel any pending operations and schedule a close of the underlying I/O * stream in the worker thread */ - _g_dbus_worker_close (worker, NULL, NULL); + _g_dbus_worker_close (worker, NULL); /* _g_dbus_worker_close holds a ref until after an idle in the worker * thread has run, so we no longer need to unref in an idle like in diff --git a/gio/gdbusprivate.h b/gio/gdbusprivate.h index 0e38121..b1f4890 100644 --- a/gio/gdbusprivate.h +++ b/gio/gdbusprivate.h @@ -76,8 +76,7 @@ gboolean _g_dbus_worker_flush_sync (GDBusWorker *worker, /* can be called from any thread */ void _g_dbus_worker_close (GDBusWorker *worker, - GCancellable *cancellable, - GSimpleAsyncResult *result); + GTask *task); /* ---------------------------------------------------------------------------------------------------- */ diff --git a/gio/gdbusproxy.c b/gio/gdbusproxy.c index 33492b7..7b1140f 100644 --- a/gio/gdbusproxy.c +++ b/gio/gdbusproxy.c @@ -32,10 +32,10 @@ #include "ginitable.h" #include "gasyncinitable.h" #include "gioerror.h" -#include "gasyncresult.h" -#include "gsimpleasyncresult.h" +#include "gtask.h" #include "gcancellable.h" #include "gdbusinterface.h" +#include "gasyncresult.h" #ifdef G_OS_UNIX #include "gunixfdlist.h" @@ -590,7 +590,7 @@ g_dbus_proxy_class_init (GDBusProxyClass *klass) * * Since: 2.26 */ - signals[PROPERTIES_CHANGED_SIGNAL] = g_signal_new ("g-properties-changed", + signals[PROPERTIES_CHANGED_SIGNAL] = g_signal_new (I_("g-properties-changed"), G_TYPE_DBUS_PROXY, G_SIGNAL_RUN_LAST | G_SIGNAL_MUST_COLLECT, G_STRUCT_OFFSET (GDBusProxyClass, g_properties_changed), @@ -613,7 +613,7 @@ g_dbus_proxy_class_init (GDBusProxyClass *klass) * * Since: 2.26 */ - signals[SIGNAL_SIGNAL] = g_signal_new ("g-signal", + signals[SIGNAL_SIGNAL] = g_signal_new (I_("g-signal"), G_TYPE_DBUS_PROXY, G_SIGNAL_RUN_LAST | G_SIGNAL_MUST_COLLECT, G_STRUCT_OFFSET (GDBusProxyClass, g_signal), @@ -1411,29 +1411,12 @@ on_name_owner_changed (GDBusConnection *connection, /* ---------------------------------------------------------------------------------------------------- */ -typedef struct -{ - GDBusProxy *proxy; - GCancellable *cancellable; - GSimpleAsyncResult *simple; -} AsyncInitData; - -static void -async_init_data_free (AsyncInitData *data) -{ - g_object_unref (data->proxy); - if (data->cancellable != NULL) - g_object_unref (data->cancellable); - g_object_unref (data->simple); - g_free (data); -} - static void async_init_get_all_cb (GDBusConnection *connection, GAsyncResult *res, gpointer user_data) { - AsyncInitData *data = user_data; + GTask *task = user_data; GVariant *result; GError *error; @@ -1456,40 +1439,35 @@ async_init_get_all_cb (GDBusConnection *connection, //g_debug ("error: %d %d %s", error->domain, error->code, error->message); g_error_free (error); } - else - { - g_simple_async_result_set_op_res_gpointer (data->simple, - result, - (GDestroyNotify) g_variant_unref); - } - g_simple_async_result_complete_in_idle (data->simple); - async_init_data_free (data); + g_task_return_pointer (task, result, + (GDestroyNotify) g_variant_unref); + g_object_unref (task); } static void -async_init_data_set_name_owner (AsyncInitData *data, - const gchar *name_owner) +async_init_data_set_name_owner (GTask *task, + const gchar *name_owner) { + GDBusProxy *proxy = g_task_get_source_object (task); gboolean get_all; - if (name_owner != NULL) { /* it starts as NULL anyway */ G_LOCK (properties_lock); - data->proxy->priv->name_owner = g_strdup (name_owner); + proxy->priv->name_owner = g_strdup (name_owner); G_UNLOCK (properties_lock); } get_all = TRUE; - if (data->proxy->priv->flags & G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES) + if (proxy->priv->flags & G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES) { /* Don't load properties if the API user doesn't want them */ get_all = FALSE; } - else if (name_owner == NULL && data->proxy->priv->name != NULL) + else if (name_owner == NULL && proxy->priv->name != NULL) { /* Don't attempt to load properties if the name_owner is NULL (which * usually means the name isn't owned), unless name is also NULL (which @@ -1502,23 +1480,23 @@ async_init_data_set_name_owner (AsyncInitData *data, if (get_all) { /* load all properties asynchronously */ - g_dbus_connection_call (data->proxy->priv->connection, + g_dbus_connection_call (proxy->priv->connection, name_owner, - data->proxy->priv->object_path, + proxy->priv->object_path, "org.freedesktop.DBus.Properties", "GetAll", - g_variant_new ("(s)", data->proxy->priv->interface_name), + g_variant_new ("(s)", proxy->priv->interface_name), G_VARIANT_TYPE ("(a{sv})"), G_DBUS_CALL_FLAGS_NONE, -1, /* timeout */ - data->cancellable, + g_task_get_cancellable (task), (GAsyncReadyCallback) async_init_get_all_cb, - data); + task); } else { - g_simple_async_result_complete_in_idle (data->simple); - async_init_data_free (data); + g_task_return_pointer (task, NULL, NULL); + g_object_unref (task); } } @@ -1527,7 +1505,7 @@ async_init_get_name_owner_cb (GDBusConnection *connection, GAsyncResult *res, gpointer user_data) { - AsyncInitData *data = user_data; + GTask *task = user_data; GError *error; GVariant *result; @@ -1541,13 +1519,12 @@ async_init_get_name_owner_cb (GDBusConnection *connection, error->code == G_DBUS_ERROR_NAME_HAS_NO_OWNER) { g_error_free (error); - async_init_data_set_name_owner (data, NULL); + async_init_data_set_name_owner (task, NULL); } else { - g_simple_async_result_take_error (data->simple, error); - g_simple_async_result_complete_in_idle (data->simple); - async_init_data_free (data); + g_task_return_error (task, error); + g_object_unref (task); } } else @@ -1556,27 +1533,29 @@ async_init_get_name_owner_cb (GDBusConnection *connection, const gchar *name_owner; g_variant_get (result, "(&s)", &name_owner); - async_init_data_set_name_owner (data, name_owner); + async_init_data_set_name_owner (task, name_owner); g_variant_unref (result); } } static void -async_init_call_get_name_owner (AsyncInitData *data) +async_init_call_get_name_owner (GTask *task) { - g_dbus_connection_call (data->proxy->priv->connection, + GDBusProxy *proxy = g_task_get_source_object (task); + + g_dbus_connection_call (proxy->priv->connection, "org.freedesktop.DBus", /* name */ "/org/freedesktop/DBus", /* object path */ "org.freedesktop.DBus", /* interface */ "GetNameOwner", g_variant_new ("(s)", - data->proxy->priv->name), + proxy->priv->name), G_VARIANT_TYPE ("(s)"), G_DBUS_CALL_FLAGS_NONE, -1, /* timeout */ - data->cancellable, + g_task_get_cancellable (task), (GAsyncReadyCallback) async_init_get_name_owner_cb, - data); + task); } static void @@ -1584,7 +1563,8 @@ async_init_start_service_by_name_cb (GDBusConnection *connection, GAsyncResult *res, gpointer user_data) { - AsyncInitData *data = user_data; + GTask *task = user_data; + GDBusProxy *proxy = g_task_get_source_object (task); GError *error; GVariant *result; @@ -1628,7 +1608,7 @@ async_init_start_service_by_name_cb (GDBusConnection *connection, { g_prefix_error (&error, _("Error calling StartServiceByName for %s: "), - data->proxy->priv->name); + proxy->priv->name); g_free (remote_error); goto failed; } @@ -1652,38 +1632,39 @@ async_init_start_service_by_name_cb (GDBusConnection *connection, G_IO_ERROR_FAILED, _("Unexpected reply %d from StartServiceByName(\"%s\") method"), start_service_result, - data->proxy->priv->name); + proxy->priv->name); goto failed; } } - async_init_call_get_name_owner (data); + async_init_call_get_name_owner (task); return; failed: g_warn_if_fail (error != NULL); - g_simple_async_result_take_error (data->simple, error); - g_simple_async_result_complete_in_idle (data->simple); - async_init_data_free (data); + g_task_return_error (task, error); + g_object_unref (task); } static void -async_init_call_start_service_by_name (AsyncInitData *data) +async_init_call_start_service_by_name (GTask *task) { - g_dbus_connection_call (data->proxy->priv->connection, + GDBusProxy *proxy = g_task_get_source_object (task); + + g_dbus_connection_call (proxy->priv->connection, "org.freedesktop.DBus", /* name */ "/org/freedesktop/DBus", /* object path */ "org.freedesktop.DBus", /* interface */ "StartServiceByName", g_variant_new ("(su)", - data->proxy->priv->name, + proxy->priv->name, 0), G_VARIANT_TYPE ("(u)"), G_DBUS_CALL_FLAGS_NONE, -1, /* timeout */ - data->cancellable, + g_task_get_cancellable (task), (GAsyncReadyCallback) async_init_start_service_by_name_cb, - data); + task); } static void @@ -1694,37 +1675,31 @@ async_initable_init_second_async (GAsyncInitable *initable, gpointer user_data) { GDBusProxy *proxy = G_DBUS_PROXY (initable); - AsyncInitData *data; + GTask *task; - data = g_new0 (AsyncInitData, 1); - data->proxy = g_object_ref (proxy); - data->cancellable = cancellable != NULL ? g_object_ref (cancellable) : NULL; - data->simple = g_simple_async_result_new (G_OBJECT (proxy), - callback, - user_data, - NULL); - g_simple_async_result_set_check_cancellable (data->simple, cancellable); + task = g_task_new (proxy, cancellable, callback, user_data); + g_task_set_priority (task, io_priority); /* Check name ownership asynchronously - possibly also start the service */ if (proxy->priv->name == NULL) { /* Do nothing */ - async_init_data_set_name_owner (data, NULL); + async_init_data_set_name_owner (task, NULL); } else if (g_dbus_is_unique_name (proxy->priv->name)) { - async_init_data_set_name_owner (data, proxy->priv->name); + async_init_data_set_name_owner (task, proxy->priv->name); } else { if ((proxy->priv->flags & G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START) || (proxy->priv->flags & G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION)) { - async_init_call_get_name_owner (data); + async_init_call_get_name_owner (task); } else { - async_init_call_start_service_by_name (data); + async_init_call_start_service_by_name (task); } } } @@ -1735,24 +1710,19 @@ async_initable_init_second_finish (GAsyncInitable *initable, GError **error) { GDBusProxy *proxy = G_DBUS_PROXY (initable); - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res); + GTask *task = G_TASK (res); GVariant *result; gboolean ret; - ret = FALSE; + ret = !g_task_had_error (task); - if (g_simple_async_result_propagate_error (simple, error)) - goto out; - - result = g_simple_async_result_get_op_res_gpointer (simple); + result = g_task_propagate_pointer (task, error); if (result != NULL) { process_get_all_reply (proxy, result); + g_variant_unref (result); } - ret = TRUE; - - out: proxy->priv->initialized = TRUE; return ret; } @@ -1815,7 +1785,7 @@ async_initable_init_first (GAsyncInitable *initable) /* ---------------------------------------------------------------------------------------------------- */ /* initialization is split into two parts - the first is the - * non-blocing part that requires the callers GMainContext - the + * non-blocking part that requires the callers GMainContext - the * second is a blocking part async part that doesn't require the * callers GMainContext.. we do this split so the code can be reused * in the GInitable implementation below. @@ -1824,52 +1794,46 @@ async_initable_init_first (GAsyncInitable *initable) * paths. */ -typedef struct +static void +init_second_async_cb (GObject *source_object, + GAsyncResult *res, + gpointer user_data) { - GDBusProxy *proxy; - gint io_priority; - GCancellable *cancellable; - GAsyncReadyCallback callback; - gpointer user_data; -} GetConnectionData; + GTask *task = user_data; + GError *error = NULL; + + if (async_initable_init_second_finish (G_ASYNC_INITABLE (source_object), res, &error)) + g_task_return_boolean (task, TRUE); + else + g_task_return_error (task, error); + g_object_unref (task); +} static void get_connection_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { - GetConnectionData *data = user_data; + GTask *task = user_data; + GDBusProxy *proxy = g_task_get_source_object (task); GError *error; error = NULL; - data->proxy->priv->connection = g_bus_get_finish (res, &error); - if (data->proxy->priv->connection == NULL) - { - GSimpleAsyncResult *simple; - simple = g_simple_async_result_new (G_OBJECT (data->proxy), - data->callback, - data->user_data, - NULL); - g_simple_async_result_set_check_cancellable (simple, data->cancellable); - g_simple_async_result_take_error (simple, error); - g_simple_async_result_complete_in_idle (simple); - g_object_unref (simple); + proxy->priv->connection = g_bus_get_finish (res, &error); + if (proxy->priv->connection == NULL) + { + g_task_return_error (task, error); + g_object_unref (task); } else { - async_initable_init_first (G_ASYNC_INITABLE (data->proxy)); - async_initable_init_second_async (G_ASYNC_INITABLE (data->proxy), - data->io_priority, - data->cancellable, - data->callback, - data->user_data); + async_initable_init_first (G_ASYNC_INITABLE (proxy)); + async_initable_init_second_async (G_ASYNC_INITABLE (proxy), + g_task_get_priority (task), + g_task_get_cancellable (task), + init_second_async_cb, + task); } - - if (data->cancellable != NULL) - g_object_unref (data->cancellable); - - g_object_unref (data->proxy); - g_free (data); } static void @@ -1880,28 +1844,25 @@ async_initable_init_async (GAsyncInitable *initable, gpointer user_data) { GDBusProxy *proxy = G_DBUS_PROXY (initable); + GTask *task; + + task = g_task_new (proxy, cancellable, callback, user_data); + g_task_set_priority (task, io_priority); if (proxy->priv->bus_type != G_BUS_TYPE_NONE) { - GetConnectionData *data; - g_assert (proxy->priv->connection == NULL); - data = g_new0 (GetConnectionData, 1); - data->proxy = g_object_ref (proxy); - data->io_priority = io_priority; - data->cancellable = cancellable != NULL ? g_object_ref (cancellable) : NULL; - data->callback = callback; - data->user_data = user_data; g_bus_get (proxy->priv->bus_type, cancellable, get_connection_cb, - data); + task); } else { async_initable_init_first (initable); - async_initable_init_second_async (initable, io_priority, cancellable, callback, user_data); + async_initable_init_second_async (initable, io_priority, cancellable, + init_second_async_cb, task); } } @@ -1910,7 +1871,7 @@ async_initable_init_finish (GAsyncInitable *initable, GAsyncResult *res, GError **error) { - return async_initable_init_second_finish (initable, res, error); + return g_task_propagate_boolean (G_TASK (res), error); } static void @@ -2586,7 +2547,7 @@ reply_cb (GDBusConnection *connection, GAsyncResult *res, gpointer user_data) { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (user_data); + GTask *task = user_data; GVariant *value; GError *error; #ifdef G_OS_UNIX @@ -2606,7 +2567,7 @@ reply_cb (GDBusConnection *connection, #endif if (error != NULL) { - g_simple_async_result_take_error (simple, error); + g_task_return_error (task, error); } else { @@ -2616,12 +2577,10 @@ reply_cb (GDBusConnection *connection, #ifdef G_OS_UNIX data->fd_list = fd_list; #endif - g_simple_async_result_set_op_res_gpointer (simple, data, (GDestroyNotify) reply_data_free); + g_task_return_pointer (task, data, (GDestroyNotify) reply_data_free); } - /* no need to complete in idle since the method GDBusConnection already does */ - g_simple_async_result_complete (simple); - g_object_unref (simple); + g_object_unref (task); } /* properties_lock must be held for as long as you will keep the @@ -2683,7 +2642,7 @@ g_dbus_proxy_call_internal (GDBusProxy *proxy, GAsyncReadyCallback callback, gpointer user_data) { - GSimpleAsyncResult *simple; + GTask *task; gboolean was_split; gchar *split_interface_name; const gchar *split_method_name; @@ -2713,16 +2672,12 @@ g_dbus_proxy_call_internal (GDBusProxy *proxy, if (callback != NULL) { my_callback = (GAsyncReadyCallback) reply_cb; - simple = g_simple_async_result_new (G_OBJECT (proxy), - callback, - user_data, - g_dbus_proxy_call_internal); - g_simple_async_result_set_check_cancellable (simple, cancellable); + task = g_task_new (proxy, cancellable, callback, user_data); } else { my_callback = NULL; - simple = NULL; + task = NULL; } G_LOCK (properties_lock); @@ -2746,14 +2701,13 @@ g_dbus_proxy_call_internal (GDBusProxy *proxy, destination = g_strdup (get_destination_for_call (proxy)); if (destination == NULL) { - if (simple != NULL) + if (task != NULL) { - g_simple_async_result_set_error (simple, - G_IO_ERROR, - G_IO_ERROR_FAILED, - _("Cannot invoke method; proxy is for a well-known name without an owner and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag")); - g_simple_async_result_complete_in_idle (simple); - g_object_unref (simple); + g_task_return_new_error (task, + G_IO_ERROR, + G_IO_ERROR_FAILED, + _("Cannot invoke method; proxy is for a well-known name without an owner and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag")); + g_object_unref (task); } G_UNLOCK (properties_lock); goto out; @@ -2775,7 +2729,7 @@ g_dbus_proxy_call_internal (GDBusProxy *proxy, fd_list, cancellable, my_callback, - simple); + task); #else g_dbus_connection_call (proxy->priv->connection, destination, @@ -2788,7 +2742,7 @@ g_dbus_proxy_call_internal (GDBusProxy *proxy, timeout_msec == -1 ? proxy->priv->timeout_msec : timeout_msec, cancellable, my_callback, - simple); + task); #endif out: @@ -2805,27 +2759,25 @@ g_dbus_proxy_call_finish_internal (GDBusProxy *proxy, GAsyncResult *res, GError **error) { - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (res); GVariant *value; ReplyData *data; g_return_val_if_fail (G_IS_DBUS_PROXY (proxy), NULL); - g_return_val_if_fail (G_IS_ASYNC_RESULT (res), NULL); + g_return_val_if_fail (g_task_is_valid (res, proxy), NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); - g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == g_dbus_proxy_call_internal); - value = NULL; - if (g_simple_async_result_propagate_error (simple, error)) + data = g_task_propagate_pointer (G_TASK (res), error); + if (!data) goto out; - data = g_simple_async_result_get_op_res_gpointer (simple); value = g_variant_ref (data->value); #ifdef G_OS_UNIX if (out_fd_list != NULL) *out_fd_list = data->fd_list != NULL ? g_object_ref (data->fd_list) : NULL; #endif + reply_data_free (data); out: return value; diff --git a/gio/gdbusserver.c b/gio/gdbusserver.c index cf82130..dbafc18 100644 --- a/gio/gdbusserver.c +++ b/gio/gdbusserver.c @@ -419,7 +419,7 @@ g_dbus_server_class_init (GDBusServerClass *klass) * * Since: 2.26 */ - _signals[NEW_CONNECTION_SIGNAL] = g_signal_new ("new-connection", + _signals[NEW_CONNECTION_SIGNAL] = g_signal_new (I_("new-connection"), G_TYPE_DBUS_SERVER, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GDBusServerClass, new_connection), diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c index 786ce0f..ac9c7eb 100644 --- a/gio/gdesktopappinfo.c +++ b/gio/gdesktopappinfo.c @@ -46,8 +46,7 @@ #include "giomodule-priv.h" #include "gappinfo.h" #include "gappinfoprivate.h" -#include "glocaldirectorymonitor.h" - +#include "glocalfilemonitor.h" /** * SECTION:gdesktopappinfo @@ -140,7 +139,7 @@ typedef struct gchar *alternatively_watching; gboolean is_config; gboolean is_setup; - GLocalDirectoryMonitor *monitor; + GFileMonitor *monitor; GHashTable *app_names; GHashTable *mime_tweaks; GHashTable *memory_index; @@ -1163,7 +1162,7 @@ desktop_file_dir_unindexed_mime_lookup (DesktopFileDir *dir, if (!desktop_file_dir_app_name_is_masked (dir, app_name) && !array_contains (blacklist, app_name) && !array_contains (hits, app_name)) - g_ptr_array_add (hits, g_strdup (app_name)); + g_ptr_array_add (hits, app_name); } } @@ -1198,7 +1197,7 @@ desktop_file_dir_unindexed_default_lookup (DesktopFileDir *dir, gchar *app_name = tweaks->defaults[i]; if (!array_contains (results, app_name)) - g_ptr_array_add (results, g_strdup (app_name)); + g_ptr_array_add (results, app_name); } } @@ -1335,13 +1334,8 @@ desktop_file_dir_init (DesktopFileDir *dir) * does (and we catch the unlikely race), the only degradation is that * we will fall back to polling. */ - dir->monitor = g_local_directory_monitor_new_in_worker (watch_dir, G_FILE_MONITOR_NONE, NULL); - - if (dir->monitor) - { - g_signal_connect (dir->monitor, "changed", G_CALLBACK (desktop_file_dir_changed), dir); - g_local_directory_monitor_start (dir->monitor); - } + dir->monitor = g_local_file_monitor_new_in_worker (watch_dir, TRUE, G_FILE_MONITOR_NONE, + desktop_file_dir_changed, dir, NULL); desktop_file_dir_unindexed_init (dir); @@ -2675,7 +2669,7 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo *info, GPid pid; GList *launched_uris; GList *iter; - char *display, *sn_id = NULL; + char *sn_id = NULL; old_uris = uris; if (!expand_application_parameters (info, exec_line, &uris, &argc, &argv, error)) @@ -2714,18 +2708,11 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo *info, data.pid_envvar = NULL; } - display = NULL; sn_id = NULL; if (launch_context) { GList *launched_files = create_files_for_uris (launched_uris); - display = g_app_launch_context_get_display (launch_context, - G_APP_INFO (info), - launched_files); - if (display) - envp = g_environ_setenv (envp, "DISPLAY", display, TRUE); - if (info->startup_notify) { sn_id = g_app_launch_context_get_startup_notify_id (launch_context, @@ -2750,7 +2737,6 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo *info, if (sn_id) g_app_launch_context_launch_failed (launch_context, sn_id); - g_free (display); g_free (sn_id); g_list_free (launched_uris); @@ -2777,11 +2763,10 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo *info, notify_desktop_launch (session_bus, info, pid, - display, + NULL, sn_id, launched_uris); - g_free (display); g_free (sn_id); g_list_free (launched_uris); @@ -3434,6 +3419,7 @@ run_update_command (char *command, * chance of debugging it. */ g_warning ("%s", error->message); + g_error_free (error); } g_free (argv[1]); @@ -3844,6 +3830,10 @@ g_desktop_app_info_get_desktop_ids_for_content_type (const gchar *content_type, for (j = 0; j < n_desktop_file_dirs; j++) desktop_file_dir_mime_lookup (&desktop_file_dirs[j], types[i], hits, blacklist); + /* We will keep the hits past unlocking, so we must dup them */ + for (i = 0; i < hits->len; i++) + hits->pdata[i] = g_strdup (hits->pdata[i]); + desktop_file_dirs_unlock (); g_ptr_array_add (hits, NULL); @@ -3854,30 +3844,6 @@ g_desktop_app_info_get_desktop_ids_for_content_type (const gchar *content_type, return (gchar **) g_ptr_array_free (hits, FALSE); } -static gchar ** -g_desktop_app_info_get_defaults_for_content_type (const gchar *content_type) -{ - GPtrArray *results; - gchar **types; - gint i, j; - - types = get_list_of_mimetypes (content_type, TRUE); - results = g_ptr_array_new (); - - desktop_file_dirs_lock (); - - for (i = 0; types[i]; i++) - for (j = 0; j < n_desktop_file_dirs; j++) - desktop_file_dir_default_lookup (&desktop_file_dirs[j], types[i], results); - - desktop_file_dirs_unlock (); - - g_ptr_array_add (results, NULL); - g_strfreev (types); - - return (gchar **) g_ptr_array_free (results, FALSE); -} - /** * g_app_info_get_recommended_for_type: * @content_type: the content type to find a #GAppInfo for @@ -4045,57 +4011,64 @@ GAppInfo * g_app_info_get_default_for_type (const char *content_type, gboolean must_support_uris) { - gchar **desktop_ids; + GPtrArray *blacklist; + GPtrArray *results; GAppInfo *info; - gint i; + gchar **types; + gint i, j, k; g_return_val_if_fail (content_type != NULL, NULL); - desktop_ids = g_desktop_app_info_get_defaults_for_content_type (content_type); + types = get_list_of_mimetypes (content_type, TRUE); + blacklist = g_ptr_array_new (); + results = g_ptr_array_new (); info = NULL; - for (i = 0; desktop_ids[i]; i++) - { - info = (GAppInfo *) g_desktop_app_info_new (desktop_ids[i]); - - if (info) - { - if (!must_support_uris || g_app_info_supports_uris (info)) - break; - - g_object_unref (info); - info = NULL; - } - } - g_strfreev (desktop_ids); + desktop_file_dirs_lock (); - /* If we can't find a default app for this content type, pick one from - * the list of all supported apps. This will be ordered by the user's - * preference and by "recommended" apps first, so the first one we - * find is probably the best fallback. - */ - if (info == NULL) + for (i = 0; types[i]; i++) { - desktop_ids = g_desktop_app_info_get_desktop_ids_for_content_type (content_type, TRUE); + /* Collect all the default apps for this type */ + for (j = 0; j < n_desktop_file_dirs; j++) + desktop_file_dir_default_lookup (&desktop_file_dirs[j], types[i], results); - for (i = 0; desktop_ids[i]; i++) + /* Consider the associations as well... */ + for (j = 0; j < n_desktop_file_dirs; j++) + desktop_file_dir_mime_lookup (&desktop_file_dirs[j], types[i], results, blacklist); + + /* (If any), see if one of those apps is installed... */ + for (j = 0; j < results->len; j++) { - info = (GAppInfo *) g_desktop_app_info_new (desktop_ids[i]); + const gchar *desktop_id = g_ptr_array_index (results, j); - if (info) + for (k = 0; k < n_desktop_file_dirs; k++) { - if (!must_support_uris || g_app_info_supports_uris (info)) - break; + info = (GAppInfo *) desktop_file_dir_get_app (&desktop_file_dirs[k], desktop_id); + + if (info) + { + if (!must_support_uris || g_app_info_supports_uris (info)) + goto out; - g_object_unref (info); - info = NULL; + g_clear_object (&info); + } } } - g_strfreev (desktop_ids); + /* Reset the list, ready to try again with the next (parent) + * mimetype, but keep the blacklist in place. + */ + g_ptr_array_set_size (results, 0); } +out: + desktop_file_dirs_unlock (); + + g_ptr_array_unref (blacklist); + g_ptr_array_unref (results); + g_strfreev (types); + return info; } diff --git a/gio/gdtlsclientconnection.c b/gio/gdtlsclientconnection.c new file mode 100644 index 0000000..70d9a51 --- /dev/null +++ b/gio/gdtlsclientconnection.c @@ -0,0 +1,273 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2010 Red Hat, Inc + * Copyright © 2015 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, see . + */ + +#include "config.h" +#include "glib.h" + +#include "gdtlsclientconnection.h" +#include "ginitable.h" +#include "gioenumtypes.h" +#include "gsocket.h" +#include "gsocketconnectable.h" +#include "gtlsbackend.h" +#include "gtlscertificate.h" +#include "glibintl.h" + +/** + * SECTION:gdtlsclientconnection + * @short_description: DTLS client-side connection + * @include: gio/gio.h + * + * #GDtlsClientConnection is the client-side subclass of + * #GDtlsConnection, representing a client-side DTLS connection. + * + * Since: 2.48 + */ + +/** + * GDtlsClientConnection: + * + * Abstract base class for the backend-specific client connection + * type. + * + * Since: 2.48 + */ + +G_DEFINE_INTERFACE (GDtlsClientConnection, g_dtls_client_connection, + G_TYPE_DTLS_CONNECTION) + +static void +g_dtls_client_connection_default_init (GDtlsClientConnectionInterface *iface) +{ + /** + * GDtlsClientConnection:validation-flags: + * + * What steps to perform when validating a certificate received from + * a server. Server certificates that fail to validate in all of the + * ways indicated here will be rejected unless the application + * overrides the default via #GDtlsConnection::accept-certificate. + * + * Since: 2.48 + */ + g_object_interface_install_property (iface, + g_param_spec_flags ("validation-flags", + P_("Validation flags"), + P_("What certificate validation to perform"), + G_TYPE_TLS_CERTIFICATE_FLAGS, + G_TLS_CERTIFICATE_VALIDATE_ALL, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS)); + + /** + * GDtlsClientConnection:server-identity: + * + * A #GSocketConnectable describing the identity of the server that + * is expected on the other end of the connection. + * + * If the %G_TLS_CERTIFICATE_BAD_IDENTITY flag is set in + * #GDtlsClientConnection:validation-flags, this object will be used + * to determine the expected identify of the remote end of the + * connection; if #GDtlsClientConnection:server-identity is not set, + * or does not match the identity presented by the server, then the + * %G_TLS_CERTIFICATE_BAD_IDENTITY validation will fail. + * + * In addition to its use in verifying the server certificate, + * this is also used to give a hint to the server about what + * certificate we expect, which is useful for servers that serve + * virtual hosts. + * + * Since: 2.48 + */ + g_object_interface_install_property (iface, + g_param_spec_object ("server-identity", + P_("Server identity"), + P_("GSocketConnectable identifying the server"), + G_TYPE_SOCKET_CONNECTABLE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS)); + + /** + * GDtlsClientConnection:accepted-cas: (type GLib.List) (element-type GLib.ByteArray) + * + * A list of the distinguished names of the Certificate Authorities + * that the server will accept client certificates signed by. If the + * server requests a client certificate during the handshake, then + * this property will be set after the handshake completes. + * + * Each item in the list is a #GByteArray which contains the complete + * subject DN of the certificate authority. + * + * Since: 2.48 + */ + g_object_interface_install_property (iface, + g_param_spec_pointer ("accepted-cas", + P_("Accepted CAs"), + P_("Distinguished names of the CAs the server accepts certificates from"), + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS)); +} + +/** + * g_dtls_client_connection_new: + * @base_socket: the #GDatagramBased to wrap + * @server_identity: (allow-none): the expected identity of the server + * @error: #GError for error reporting, or %NULL to ignore. + * + * Creates a new #GDtlsClientConnection wrapping @base_socket which is + * assumed to communicate with the server identified by @server_identity. + * + * Returns: (transfer full) (type GDtlsClientConnection): the new + * #GDtlsClientConnection, or %NULL on error + * + * Since: 2.48 + */ +GDatagramBased * +g_dtls_client_connection_new (GDatagramBased *base_socket, + GSocketConnectable *server_identity, + GError **error) +{ + GObject *conn; + GTlsBackend *backend; + + backend = g_tls_backend_get_default (); + conn = g_initable_new (g_tls_backend_get_dtls_client_connection_type (backend), + NULL, error, + "base-socket", base_socket, + "server-identity", server_identity, + NULL); + return G_DATAGRAM_BASED (conn); +} + +/** + * g_dtls_client_connection_get_validation_flags: + * @conn: the #GDtlsClientConnection + * + * Gets @conn's validation flags + * + * Returns: the validation flags + * + * Since: 2.48 + */ +GTlsCertificateFlags +g_dtls_client_connection_get_validation_flags (GDtlsClientConnection *conn) +{ + GTlsCertificateFlags flags = 0; + + g_return_val_if_fail (G_IS_DTLS_CLIENT_CONNECTION (conn), 0); + + g_object_get (G_OBJECT (conn), "validation-flags", &flags, NULL); + return flags; +} + +/** + * g_dtls_client_connection_set_validation_flags: + * @conn: the #GDtlsClientConnection + * @flags: the #GTlsCertificateFlags to use + * + * Sets @conn's validation flags, to override the default set of + * checks performed when validating a server certificate. By default, + * %G_TLS_CERTIFICATE_VALIDATE_ALL is used. + * + * Since: 2.48 + */ +void +g_dtls_client_connection_set_validation_flags (GDtlsClientConnection *conn, + GTlsCertificateFlags flags) +{ + g_return_if_fail (G_IS_DTLS_CLIENT_CONNECTION (conn)); + + g_object_set (G_OBJECT (conn), "validation-flags", flags, NULL); +} + +/** + * g_dtls_client_connection_get_server_identity: + * @conn: the #GDtlsClientConnection + * + * Gets @conn's expected server identity + * + * Returns: (transfer none): a #GSocketConnectable describing the + * expected server identity, or %NULL if the expected identity is not + * known. + * + * Since: 2.48 + */ +GSocketConnectable * +g_dtls_client_connection_get_server_identity (GDtlsClientConnection *conn) +{ + GSocketConnectable *identity = NULL; + + g_return_val_if_fail (G_IS_DTLS_CLIENT_CONNECTION (conn), 0); + + g_object_get (G_OBJECT (conn), "server-identity", &identity, NULL); + if (identity) + g_object_unref (identity); + return identity; +} + +/** + * g_dtls_client_connection_set_server_identity: + * @conn: the #GDtlsClientConnection + * @identity: a #GSocketConnectable describing the expected server identity + * + * Sets @conn's expected server identity, which is used both to tell + * servers on virtual hosts which certificate to present, and also + * to let @conn know what name to look for in the certificate when + * performing %G_TLS_CERTIFICATE_BAD_IDENTITY validation, if enabled. + * + * Since: 2.48 + */ +void +g_dtls_client_connection_set_server_identity (GDtlsClientConnection *conn, + GSocketConnectable *identity) +{ + g_return_if_fail (G_IS_DTLS_CLIENT_CONNECTION (conn)); + + g_object_set (G_OBJECT (conn), "server-identity", identity, NULL); +} + +/** + * g_dtls_client_connection_get_accepted_cas: + * @conn: the #GDtlsClientConnection + * + * Gets the list of distinguished names of the Certificate Authorities + * that the server will accept certificates from. This will be set + * during the TLS handshake if the server requests a certificate. + * Otherwise, it will be %NULL. + * + * Each item in the list is a #GByteArray which contains the complete + * subject DN of the certificate authority. + * + * Returns: (element-type GByteArray) (transfer full): the list of + * CA DNs. You should unref each element with g_byte_array_unref() and then + * the free the list with g_list_free(). + * + * Since: 2.48 + */ +GList * +g_dtls_client_connection_get_accepted_cas (GDtlsClientConnection *conn) +{ + GList *accepted_cas = NULL; + + g_return_val_if_fail (G_IS_DTLS_CLIENT_CONNECTION (conn), NULL); + + g_object_get (G_OBJECT (conn), "accepted-cas", &accepted_cas, NULL); + return accepted_cas; +} diff --git a/gio/gdtlsclientconnection.h b/gio/gdtlsclientconnection.h new file mode 100644 index 0000000..3296b59 --- /dev/null +++ b/gio/gdtlsclientconnection.h @@ -0,0 +1,75 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2010 Red Hat, Inc. + * Copyright © 2015 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, see . + */ + +#ifndef __G_DTLS_CLIENT_CONNECTION_H__ +#define __G_DTLS_CLIENT_CONNECTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DTLS_CLIENT_CONNECTION (g_dtls_client_connection_get_type ()) +#define G_DTLS_CLIENT_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_DTLS_CLIENT_CONNECTION, GDtlsClientConnection)) +#define G_IS_DTLS_CLIENT_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_DTLS_CLIENT_CONNECTION)) +#define G_DTLS_CLIENT_CONNECTION_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), G_TYPE_DTLS_CLIENT_CONNECTION, GDtlsClientConnectionInterface)) + +typedef struct _GDtlsClientConnectionInterface GDtlsClientConnectionInterface; + +/** + * GDtlsClientConnectionInterface: + * @g_iface: The parent interface. + * + * vtable for a #GDtlsClientConnection implementation. + * + * Since: 2.48 + */ +struct _GDtlsClientConnectionInterface +{ + GTypeInterface g_iface; +}; + +GLIB_AVAILABLE_IN_2_48 +GType g_dtls_client_connection_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_48 +GDatagramBased *g_dtls_client_connection_new (GDatagramBased *base_socket, + GSocketConnectable *server_identity, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +GTlsCertificateFlags g_dtls_client_connection_get_validation_flags (GDtlsClientConnection *conn); +GLIB_AVAILABLE_IN_2_48 +void g_dtls_client_connection_set_validation_flags (GDtlsClientConnection *conn, + GTlsCertificateFlags flags); +GLIB_AVAILABLE_IN_2_48 +GSocketConnectable *g_dtls_client_connection_get_server_identity (GDtlsClientConnection *conn); +GLIB_AVAILABLE_IN_2_48 +void g_dtls_client_connection_set_server_identity (GDtlsClientConnection *conn, + GSocketConnectable *identity); +GLIB_AVAILABLE_IN_2_48 +GList * g_dtls_client_connection_get_accepted_cas (GDtlsClientConnection *conn); + + +G_END_DECLS + +#endif /* __G_DTLS_CLIENT_CONNECTION_H__ */ diff --git a/gio/gdtlsconnection.c b/gio/gdtlsconnection.c new file mode 100644 index 0000000..08fa84f --- /dev/null +++ b/gio/gdtlsconnection.c @@ -0,0 +1,975 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2010 Red Hat, Inc + * Copyright © 2015 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, see . + */ + +#include "config.h" +#include "glib.h" + +#include "gdtlsconnection.h" +#include "gcancellable.h" +#include "gioenumtypes.h" +#include "gsocket.h" +#include "gtlsbackend.h" +#include "gtlscertificate.h" +#include "gdtlsclientconnection.h" +#include "gtlsdatabase.h" +#include "gtlsinteraction.h" +#include "glibintl.h" + +/** + * SECTION:gdtlsconnection + * @short_description: DTLS connection type + * @include: gio/gio.h + * + * #GDtlsConnection is the base DTLS connection class type, which wraps + * a #GDatagramBased and provides DTLS encryption on top of it. Its + * subclasses, #GDtlsClientConnection and #GDtlsServerConnection, + * implement client-side and server-side DTLS, respectively. + * + * For TLS support, see #GTlsConnection. + * + * As DTLS is datagram based, #GDtlsConnection implements #GDatagramBased, + * presenting a datagram-socket-like API for the encrypted connection. This + * operates over a base datagram connection, which is also a #GDatagramBased + * (#GDtlsConnection:base-socket). + * + * To close a DTLS connection, use g_dtls_connection_close(). + * + * Neither #GDtlsServerConnection or #GDtlsClientConnection set the peer address + * on their base #GDatagramBased if it is a #GSocket — it is up to the caller to + * do that if they wish. If they do not, and g_socket_close() is called on the + * base socket, the #GDtlsConnection will not raise a %G_IO_ERROR_NOT_CONNECTED + * error on further I/O. + * + * Since: 2.48 + */ + +/** + * GDtlsConnection: + * + * Abstract base class for the backend-specific #GDtlsClientConnection + * and #GDtlsServerConnection types. + * + * Since: 2.48 + */ + +G_DEFINE_INTERFACE (GDtlsConnection, g_dtls_connection, G_TYPE_DATAGRAM_BASED); + +enum { + ACCEPT_CERTIFICATE, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + +enum { + PROP_BASE_SOCKET = 1, + PROP_REQUIRE_CLOSE_NOTIFY, + PROP_REHANDSHAKE_MODE, + PROP_DATABASE, + PROP_INTERACTION, + PROP_CERTIFICATE, + PROP_PEER_CERTIFICATE, + PROP_PEER_CERTIFICATE_ERRORS, +}; + +static void +g_dtls_connection_default_init (GDtlsConnectionInterface *iface) +{ + /** + * GDtlsConnection:base-socket: + * + * The #GDatagramBased that the connection wraps. Note that this may be any + * implementation of #GDatagramBased, not just a #GSocket. + * + * Since: 2.48 + */ + g_object_interface_install_property (iface, + g_param_spec_object ("base-socket", + P_("Base Socket"), + P_("The GDatagramBased that the connection wraps"), + G_TYPE_DATAGRAM_BASED, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS)); + /** + * GDtlsConnection:database: + * + * The certificate database to use when verifying this TLS connection. + * If no certificate database is set, then the default database will be + * used. See g_dtls_backend_get_default_database(). + * + * Since: 2.48 + */ + g_object_interface_install_property (iface, + g_param_spec_object ("database", + P_("Database"), + P_("Certificate database to use for looking up or verifying certificates"), + G_TYPE_TLS_DATABASE, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); + /** + * GDtlsConnection:interaction: + * + * A #GTlsInteraction object to be used when the connection or certificate + * database need to interact with the user. This will be used to prompt the + * user for passwords where necessary. + * + * Since: 2.48 + */ + g_object_interface_install_property (iface, + g_param_spec_object ("interaction", + P_("Interaction"), + P_("Optional object for user interaction"), + G_TYPE_TLS_INTERACTION, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); + /** + * GDtlsConnection:require-close-notify: + * + * Whether or not proper TLS close notification is required. + * See g_dtls_connection_set_require_close_notify(). + * + * Since: 2.48 + */ + g_object_interface_install_property (iface, + g_param_spec_boolean ("require-close-notify", + P_("Require close notify"), + P_("Whether to require proper TLS close notification"), + TRUE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS)); + /** + * GDtlsConnection:rehandshake-mode: + * + * The rehandshaking mode. See + * g_dtls_connection_set_rehandshake_mode(). + * + * Since: 2.48 + */ + g_object_interface_install_property (iface, + g_param_spec_enum ("rehandshake-mode", + P_("Rehandshake mode"), + P_("When to allow rehandshaking"), + G_TYPE_TLS_REHANDSHAKE_MODE, + G_TLS_REHANDSHAKE_NEVER, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS)); + /** + * GDtlsConnection:certificate: + * + * The connection's certificate; see + * g_dtls_connection_set_certificate(). + * + * Since: 2.48 + */ + g_object_interface_install_property (iface, + g_param_spec_object ("certificate", + P_("Certificate"), + P_("The connection's certificate"), + G_TYPE_TLS_CERTIFICATE, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); + /** + * GDtlsConnection:peer-certificate: + * + * The connection's peer's certificate, after the TLS handshake has + * completed and the certificate has been accepted. Note in + * particular that this is not yet set during the emission of + * #GDtlsConnection::accept-certificate. + * + * (You can watch for a #GObject::notify signal on this property to + * detect when a handshake has occurred.) + * + * Since: 2.48 + */ + g_object_interface_install_property (iface, + g_param_spec_object ("peer-certificate", + P_("Peer Certificate"), + P_("The connection's peer's certificate"), + G_TYPE_TLS_CERTIFICATE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS)); + /** + * GDtlsConnection:peer-certificate-errors: + * + * The errors noticed-and-ignored while verifying + * #GDtlsConnection:peer-certificate. Normally this should be 0, but + * it may not be if #GDtlsClientConnection:validation-flags is not + * %G_TLS_CERTIFICATE_VALIDATE_ALL, or if + * #GDtlsConnection::accept-certificate overrode the default + * behavior. + * + * Since: 2.48 + */ + g_object_interface_install_property (iface, + g_param_spec_flags ("peer-certificate-errors", + P_("Peer Certificate Errors"), + P_("Errors found with the peer's certificate"), + G_TYPE_TLS_CERTIFICATE_FLAGS, + 0, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS)); + + /** + * GDtlsConnection::accept-certificate: + * @conn: a #GDtlsConnection + * @peer_cert: the peer's #GTlsCertificate + * @errors: the problems with @peer_cert. + * + * Emitted during the TLS handshake after the peer certificate has + * been received. You can examine @peer_cert's certification path by + * calling g_tls_certificate_get_issuer() on it. + * + * For a client-side connection, @peer_cert is the server's + * certificate, and the signal will only be emitted if the + * certificate was not acceptable according to @conn's + * #GDtlsClientConnection:validation_flags. If you would like the + * certificate to be accepted despite @errors, return %TRUE from the + * signal handler. Otherwise, if no handler accepts the certificate, + * the handshake will fail with %G_TLS_ERROR_BAD_CERTIFICATE. + * + * For a server-side connection, @peer_cert is the certificate + * presented by the client, if this was requested via the server's + * #GDtlsServerConnection:authentication_mode. On the server side, + * the signal is always emitted when the client presents a + * certificate, and the certificate will only be accepted if a + * handler returns %TRUE. + * + * Note that if this signal is emitted as part of asynchronous I/O + * in the main thread, then you should not attempt to interact with + * the user before returning from the signal handler. If you want to + * let the user decide whether or not to accept the certificate, you + * would have to return %FALSE from the signal handler on the first + * attempt, and then after the connection attempt returns a + * %G_TLS_ERROR_HANDSHAKE, you can interact with the user, and if + * the user decides to accept the certificate, remember that fact, + * create a new connection, and return %TRUE from the signal handler + * the next time. + * + * If you are doing I/O in another thread, you do not + * need to worry about this, and can simply block in the signal + * handler until the UI thread returns an answer. + * + * Returns: %TRUE to accept @peer_cert (which will also + * immediately end the signal emission). %FALSE to allow the signal + * emission to continue, which will cause the handshake to fail if + * no one else overrides it. + * + * Since: 2.48 + */ + signals[ACCEPT_CERTIFICATE] = + g_signal_new (I_("accept-certificate"), + G_TYPE_DTLS_CONNECTION, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GDtlsConnectionInterface, accept_certificate), + g_signal_accumulator_true_handled, NULL, + NULL, + G_TYPE_BOOLEAN, 2, + G_TYPE_TLS_CERTIFICATE, + G_TYPE_TLS_CERTIFICATE_FLAGS); +} + +/** + * g_dtls_connection_set_database: + * @conn: a #GDtlsConnection + * @database: a #GTlsDatabase + * + * Sets the certificate database that is used to verify peer certificates. + * This is set to the default database by default. See + * g_dtls_backend_get_default_database(). If set to %NULL, then + * peer certificate validation will always set the + * %G_TLS_CERTIFICATE_UNKNOWN_CA error (meaning + * #GDtlsConnection::accept-certificate will always be emitted on + * client-side connections, unless that bit is not set in + * #GDtlsClientConnection:validation-flags). + * + * Since: 2.48 + */ +void +g_dtls_connection_set_database (GDtlsConnection *conn, + GTlsDatabase *database) +{ + g_return_if_fail (G_IS_DTLS_CONNECTION (conn)); + g_return_if_fail (database == NULL || G_IS_TLS_DATABASE (database)); + + g_object_set (G_OBJECT (conn), + "database", database, + NULL); +} + +/** + * g_dtls_connection_get_database: + * @conn: a #GDtlsConnection + * + * Gets the certificate database that @conn uses to verify + * peer certificates. See g_dtls_connection_set_database(). + * + * Returns: (transfer none): the certificate database that @conn uses or %NULL + * + * Since: 2.48 + */ +GTlsDatabase* +g_dtls_connection_get_database (GDtlsConnection *conn) +{ + GTlsDatabase *database = NULL; + + g_return_val_if_fail (G_IS_DTLS_CONNECTION (conn), NULL); + + g_object_get (G_OBJECT (conn), + "database", &database, + NULL); + if (database) + g_object_unref (database); + return database; +} + +/** + * g_dtls_connection_set_certificate: + * @conn: a #GDtlsConnection + * @certificate: the certificate to use for @conn + * + * This sets the certificate that @conn will present to its peer + * during the TLS handshake. For a #GDtlsServerConnection, it is + * mandatory to set this, and that will normally be done at construct + * time. + * + * For a #GDtlsClientConnection, this is optional. If a handshake fails + * with %G_TLS_ERROR_CERTIFICATE_REQUIRED, that means that the server + * requires a certificate, and if you try connecting again, you should + * call this method first. You can call + * g_dtls_client_connection_get_accepted_cas() on the failed connection + * to get a list of Certificate Authorities that the server will + * accept certificates from. + * + * (It is also possible that a server will allow the connection with + * or without a certificate; in that case, if you don't provide a + * certificate, you can tell that the server requested one by the fact + * that g_dtls_client_connection_get_accepted_cas() will return + * non-%NULL.) + * + * Since: 2.48 + */ +void +g_dtls_connection_set_certificate (GDtlsConnection *conn, + GTlsCertificate *certificate) +{ + g_return_if_fail (G_IS_DTLS_CONNECTION (conn)); + g_return_if_fail (G_IS_TLS_CERTIFICATE (certificate)); + + g_object_set (G_OBJECT (conn), "certificate", certificate, NULL); +} + +/** + * g_dtls_connection_get_certificate: + * @conn: a #GDtlsConnection + * + * Gets @conn's certificate, as set by + * g_dtls_connection_set_certificate(). + * + * Returns: (transfer none): @conn's certificate, or %NULL + * + * Since: 2.48 + */ +GTlsCertificate * +g_dtls_connection_get_certificate (GDtlsConnection *conn) +{ + GTlsCertificate *certificate; + + g_return_val_if_fail (G_IS_DTLS_CONNECTION (conn), NULL); + + g_object_get (G_OBJECT (conn), "certificate", &certificate, NULL); + if (certificate) + g_object_unref (certificate); + + return certificate; +} + +/** + * g_dtls_connection_set_interaction: + * @conn: a connection + * @interaction: (allow-none): an interaction object, or %NULL + * + * Set the object that will be used to interact with the user. It will be used + * for things like prompting the user for passwords. + * + * The @interaction argument will normally be a derived subclass of + * #GTlsInteraction. %NULL can also be provided if no user interaction + * should occur for this connection. + * + * Since: 2.48 + */ +void +g_dtls_connection_set_interaction (GDtlsConnection *conn, + GTlsInteraction *interaction) +{ + g_return_if_fail (G_IS_DTLS_CONNECTION (conn)); + g_return_if_fail (interaction == NULL || G_IS_TLS_INTERACTION (interaction)); + + g_object_set (G_OBJECT (conn), "interaction", interaction, NULL); +} + +/** + * g_dtls_connection_get_interaction: + * @conn: a connection + * + * Get the object that will be used to interact with the user. It will be used + * for things like prompting the user for passwords. If %NULL is returned, then + * no user interaction will occur for this connection. + * + * Returns: (transfer none): The interaction object. + * + * Since: 2.48 + */ +GTlsInteraction * +g_dtls_connection_get_interaction (GDtlsConnection *conn) +{ + GTlsInteraction *interaction = NULL; + + g_return_val_if_fail (G_IS_DTLS_CONNECTION (conn), NULL); + + g_object_get (G_OBJECT (conn), "interaction", &interaction, NULL); + if (interaction) + g_object_unref (interaction); + + return interaction; +} + +/** + * g_dtls_connection_get_peer_certificate: + * @conn: a #GDtlsConnection + * + * Gets @conn's peer's certificate after the handshake has completed. + * (It is not set during the emission of + * #GDtlsConnection::accept-certificate.) + * + * Returns: (transfer none): @conn's peer's certificate, or %NULL + * + * Since: 2.48 + */ +GTlsCertificate * +g_dtls_connection_get_peer_certificate (GDtlsConnection *conn) +{ + GTlsCertificate *peer_certificate; + + g_return_val_if_fail (G_IS_DTLS_CONNECTION (conn), NULL); + + g_object_get (G_OBJECT (conn), "peer-certificate", &peer_certificate, NULL); + if (peer_certificate) + g_object_unref (peer_certificate); + + return peer_certificate; +} + +/** + * g_dtls_connection_get_peer_certificate_errors: + * @conn: a #GDtlsConnection + * + * Gets the errors associated with validating @conn's peer's + * certificate, after the handshake has completed. (It is not set + * during the emission of #GDtlsConnection::accept-certificate.) + * + * Returns: @conn's peer's certificate errors + * + * Since: 2.48 + */ +GTlsCertificateFlags +g_dtls_connection_get_peer_certificate_errors (GDtlsConnection *conn) +{ + GTlsCertificateFlags errors; + + g_return_val_if_fail (G_IS_DTLS_CONNECTION (conn), 0); + + g_object_get (G_OBJECT (conn), "peer-certificate-errors", &errors, NULL); + return errors; +} + +/** + * g_dtls_connection_set_require_close_notify: + * @conn: a #GDtlsConnection + * @require_close_notify: whether or not to require close notification + * + * Sets whether or not @conn expects a proper TLS close notification + * before the connection is closed. If this is %TRUE (the default), + * then @conn will expect to receive a TLS close notification from its + * peer before the connection is closed, and will return a + * %G_TLS_ERROR_EOF error if the connection is closed without proper + * notification (since this may indicate a network error, or + * man-in-the-middle attack). + * + * In some protocols, the application will know whether or not the + * connection was closed cleanly based on application-level data + * (because the application-level data includes a length field, or is + * somehow self-delimiting); in this case, the close notify is + * redundant and may be omitted. You + * can use g_dtls_connection_set_require_close_notify() to tell @conn + * to allow an "unannounced" connection close, in which case the close + * will show up as a 0-length read, as in a non-TLS + * #GDatagramBased, and it is up to the application to check that + * the data has been fully received. + * + * Note that this only affects the behavior when the peer closes the + * connection; when the application calls g_dtls_connection_close_async() on + * @conn itself, this will send a close notification regardless of the + * setting of this property. If you explicitly want to do an unclean + * close, you can close @conn's #GDtlsConnection:base-socket rather + * than closing @conn itself. + * + * Since: 2.48 + */ +void +g_dtls_connection_set_require_close_notify (GDtlsConnection *conn, + gboolean require_close_notify) +{ + g_return_if_fail (G_IS_DTLS_CONNECTION (conn)); + + g_object_set (G_OBJECT (conn), + "require-close-notify", require_close_notify, + NULL); +} + +/** + * g_dtls_connection_get_require_close_notify: + * @conn: a #GDtlsConnection + * + * Tests whether or not @conn expects a proper TLS close notification + * when the connection is closed. See + * g_dtls_connection_set_require_close_notify() for details. + * + * Returns: %TRUE if @conn requires a proper TLS close notification. + * + * Since: 2.48 + */ +gboolean +g_dtls_connection_get_require_close_notify (GDtlsConnection *conn) +{ + gboolean require_close_notify; + + g_return_val_if_fail (G_IS_DTLS_CONNECTION (conn), TRUE); + + g_object_get (G_OBJECT (conn), + "require-close-notify", &require_close_notify, + NULL); + return require_close_notify; +} + +/** + * g_dtls_connection_set_rehandshake_mode: + * @conn: a #GDtlsConnection + * @mode: the rehandshaking mode + * + * Sets how @conn behaves with respect to rehandshaking requests. + * + * %G_TLS_REHANDSHAKE_NEVER means that it will never agree to + * rehandshake after the initial handshake is complete. (For a client, + * this means it will refuse rehandshake requests from the server, and + * for a server, this means it will close the connection with an error + * if the client attempts to rehandshake.) + * + * %G_TLS_REHANDSHAKE_SAFELY means that the connection will allow a + * rehandshake only if the other end of the connection supports the + * TLS `renegotiation_info` extension. This is the default behavior, + * but means that rehandshaking will not work against older + * implementations that do not support that extension. + * + * %G_TLS_REHANDSHAKE_UNSAFELY means that the connection will allow + * rehandshaking even without the `renegotiation_info` extension. On + * the server side in particular, this is not recommended, since it + * leaves the server open to certain attacks. However, this mode is + * necessary if you need to allow renegotiation with older client + * software. + * + * Since: 2.48 + */ +void +g_dtls_connection_set_rehandshake_mode (GDtlsConnection *conn, + GTlsRehandshakeMode mode) +{ + g_return_if_fail (G_IS_DTLS_CONNECTION (conn)); + + g_object_set (G_OBJECT (conn), + "rehandshake-mode", mode, + NULL); +} + +/** + * g_dtls_connection_get_rehandshake_mode: + * @conn: a #GDtlsConnection + * + * Gets @conn rehandshaking mode. See + * g_dtls_connection_set_rehandshake_mode() for details. + * + * Returns: @conn's rehandshaking mode + * + * Since: 2.48 + */ +GTlsRehandshakeMode +g_dtls_connection_get_rehandshake_mode (GDtlsConnection *conn) +{ + GTlsRehandshakeMode mode; + + g_return_val_if_fail (G_IS_DTLS_CONNECTION (conn), G_TLS_REHANDSHAKE_NEVER); + + g_object_get (G_OBJECT (conn), + "rehandshake-mode", &mode, + NULL); + return mode; +} + +/** + * g_dtls_connection_handshake: + * @conn: a #GDtlsConnection + * @cancellable: (allow-none): a #GCancellable, or %NULL + * @error: a #GError, or %NULL + * + * Attempts a TLS handshake on @conn. + * + * On the client side, it is never necessary to call this method; + * although the connection needs to perform a handshake after + * connecting (or after sending a "STARTTLS"-type command) and may + * need to rehandshake later if the server requests it, + * #GDtlsConnection will handle this for you automatically when you try + * to send or receive data on the connection. However, you can call + * g_dtls_connection_handshake() manually if you want to know for sure + * whether the initial handshake succeeded or failed (as opposed to + * just immediately trying to write to @conn, in which + * case if it fails, it may not be possible to tell if it failed + * before or after completing the handshake). + * + * Likewise, on the server side, although a handshake is necessary at + * the beginning of the communication, you do not need to call this + * function explicitly unless you want clearer error reporting. + * However, you may call g_dtls_connection_handshake() later on to + * renegotiate parameters (encryption methods, etc) with the client. + * + * #GDtlsConnection::accept_certificate may be emitted during the + * handshake. + * + * Returns: success or failure + * + * Since: 2.48 + */ +gboolean +g_dtls_connection_handshake (GDtlsConnection *conn, + GCancellable *cancellable, + GError **error) +{ + g_return_val_if_fail (G_IS_DTLS_CONNECTION (conn), FALSE); + + return G_DTLS_CONNECTION_GET_INTERFACE (conn)->handshake (conn, cancellable, + error); +} + +/** + * g_dtls_connection_handshake_async: + * @conn: a #GDtlsConnection + * @io_priority: the [I/O priority][io-priority] of the request + * @cancellable: (allow-none): a #GCancellable, or %NULL + * @callback: callback to call when the handshake is complete + * @user_data: the data to pass to the callback function + * + * Asynchronously performs a TLS handshake on @conn. See + * g_dtls_connection_handshake() for more information. + * + * Since: 2.48 + */ +void +g_dtls_connection_handshake_async (GDtlsConnection *conn, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_return_if_fail (G_IS_DTLS_CONNECTION (conn)); + + G_DTLS_CONNECTION_GET_INTERFACE (conn)->handshake_async (conn, io_priority, + cancellable, + callback, user_data); +} + +/** + * g_dtls_connection_handshake_finish: + * @conn: a #GDtlsConnection + * @result: a #GAsyncResult. + * @error: a #GError pointer, or %NULL + * + * Finish an asynchronous TLS handshake operation. See + * g_dtls_connection_handshake() for more information. + * + * Returns: %TRUE on success, %FALSE on failure, in which + * case @error will be set. + * + * Since: 2.48 + */ +gboolean +g_dtls_connection_handshake_finish (GDtlsConnection *conn, + GAsyncResult *result, + GError **error) +{ + g_return_val_if_fail (G_IS_DTLS_CONNECTION (conn), FALSE); + + return G_DTLS_CONNECTION_GET_INTERFACE (conn)->handshake_finish (conn, + result, + error); +} + +/** + * g_dtls_connection_shutdown: + * @conn: a #GDtlsConnection + * @shutdown_read: %TRUE to stop reception of incoming datagrams + * @shutdown_write: %TRUE to stop sending outgoing datagrams + * @cancellable: (nullable): a #GCancellable, or %NULL + * @error: a #GError, or %NULL + * + * Shut down part or all of a DTLS connection. + * + * If @shutdown_read is %TRUE then the receiving side of the connection is shut + * down, and further reading is disallowed. Subsequent calls to + * g_datagram_based_receive_messages() will return %G_IO_ERROR_CLOSED. + * + * If @shutdown_write is %TRUE then the sending side of the connection is shut + * down, and further writing is disallowed. Subsequent calls to + * g_datagram_based_send_messages() will return %G_IO_ERROR_CLOSED. + * + * It is allowed for both @shutdown_read and @shutdown_write to be TRUE — this + * is equivalent to calling g_dtls_connection_close(). + * + * If @cancellable is cancelled, the #GDtlsConnection may be left + * partially-closed and any pending untransmitted data may be lost. Call + * g_dtls_connection_shutdown() again to complete closing the #GDtlsConnection. + * + * Returns: %TRUE on success, %FALSE otherwise + * + * Since: 2.48 + */ +gboolean +g_dtls_connection_shutdown (GDtlsConnection *conn, + gboolean shutdown_read, + gboolean shutdown_write, + GCancellable *cancellable, + GError **error) +{ + GDtlsConnectionInterface *iface; + + g_return_val_if_fail (G_IS_DTLS_CONNECTION (conn), FALSE); + g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), + FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + if (!shutdown_read && !shutdown_write) + return TRUE; + + iface = G_DTLS_CONNECTION_GET_INTERFACE (conn); + g_assert (iface->shutdown != NULL); + + return iface->shutdown (conn, shutdown_read, shutdown_write, + cancellable, error); +} + +/** + * g_dtls_connection_shutdown_async: + * @conn: a #GDtlsConnection + * @shutdown_read: %TRUE to stop reception of incoming datagrams + * @shutdown_write: %TRUE to stop sending outgoing datagrams + * @io_priority: the [I/O priority][io-priority] of the request + * @cancellable: (nullable): a #GCancellable, or %NULL + * @callback: callback to call when the shutdown operation is complete + * @user_data: the data to pass to the callback function + * + * Asynchronously shut down part or all of the DTLS connection. See + * g_dtls_connection_shutdown() for more information. + * + * Since: 2.48 + */ +void +g_dtls_connection_shutdown_async (GDtlsConnection *conn, + gboolean shutdown_read, + gboolean shutdown_write, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + GDtlsConnectionInterface *iface; + + g_return_if_fail (G_IS_DTLS_CONNECTION (conn)); + g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable)); + + iface = G_DTLS_CONNECTION_GET_INTERFACE (conn); + g_assert (iface->shutdown_async != NULL); + + iface->shutdown_async (conn, TRUE, TRUE, io_priority, cancellable, + callback, user_data); +} + +/** + * g_dtls_connection_shutdown_finish: + * @conn: a #GDtlsConnection + * @result: a #GAsyncResult + * @error: a #GError pointer, or %NULL + * + * Finish an asynchronous TLS shutdown operation. See + * g_dtls_connection_shutdown() for more information. + * + * Returns: %TRUE on success, %FALSE on failure, in which + * case @error will be set + * + * Since: 2.48 + */ +gboolean +g_dtls_connection_shutdown_finish (GDtlsConnection *conn, + GAsyncResult *result, + GError **error) +{ + GDtlsConnectionInterface *iface; + + g_return_val_if_fail (G_IS_DTLS_CONNECTION (conn), FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + iface = G_DTLS_CONNECTION_GET_INTERFACE (conn); + g_assert (iface->shutdown_finish != NULL); + + return iface->shutdown_finish (conn, result, error); +} + +/** + * g_dtls_connection_close: + * @conn: a #GDtlsConnection + * @cancellable: (nullable): a #GCancellable, or %NULL + * @error: a #GError, or %NULL + * + * Close the DTLS connection. This is equivalent to calling + * g_dtls_connection_shutdown() to shut down both sides of the connection. + * + * Closing a #GDtlsConnection waits for all buffered but untransmitted data to + * be sent before it completes. It then sends a `close_notify` DTLS alert to the + * peer and may wait for a `close_notify` to be received from the peer. It does + * not close the underlying #GDtlsConnection:base-socket; that must be closed + * separately. + * + * Once @conn is closed, all other operations will return %G_IO_ERROR_CLOSED. + * Closing a #GDtlsConnection multiple times will not return an error. + * + * #GDtlsConnections will be automatically closed when the last reference is + * dropped, but you might want to call this function to make sure resources are + * released as early as possible. + * + * If @cancellable is cancelled, the #GDtlsConnection may be left + * partially-closed and any pending untransmitted data may be lost. Call + * g_dtls_connection_close() again to complete closing the #GDtlsConnection. + * + * Returns: %TRUE on success, %FALSE otherwise + * + * Since: 2.48 + */ +gboolean +g_dtls_connection_close (GDtlsConnection *conn, + GCancellable *cancellable, + GError **error) +{ + g_return_val_if_fail (G_IS_DTLS_CONNECTION (conn), FALSE); + g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), + FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + return G_DTLS_CONNECTION_GET_INTERFACE (conn)->shutdown (conn, TRUE, TRUE, + cancellable, error); +} + +/** + * g_dtls_connection_close_async: + * @conn: a #GDtlsConnection + * @io_priority: the [I/O priority][io-priority] of the request + * @cancellable: (nullable): a #GCancellable, or %NULL + * @callback: callback to call when the close operation is complete + * @user_data: the data to pass to the callback function + * + * Asynchronously close the DTLS connection. See g_dtls_connection_close() for + * more information. + * + * Since: 2.48 + */ +void +g_dtls_connection_close_async (GDtlsConnection *conn, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) +{ + g_return_if_fail (G_IS_DTLS_CONNECTION (conn)); + g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable)); + + G_DTLS_CONNECTION_GET_INTERFACE (conn)->shutdown_async (conn, TRUE, TRUE, + io_priority, + cancellable, + callback, user_data); +} + +/** + * g_dtls_connection_close_finish: + * @conn: a #GDtlsConnection + * @result: a #GAsyncResult + * @error: a #GError pointer, or %NULL + * + * Finish an asynchronous TLS close operation. See g_dtls_connection_close() + * for more information. + * + * Returns: %TRUE on success, %FALSE on failure, in which + * case @error will be set + * + * Since: 2.48 + */ +gboolean +g_dtls_connection_close_finish (GDtlsConnection *conn, + GAsyncResult *result, + GError **error) +{ + g_return_val_if_fail (G_IS_DTLS_CONNECTION (conn), FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + return G_DTLS_CONNECTION_GET_INTERFACE (conn)->shutdown_finish (conn, result, + error); +} + +/** + * g_dtls_connection_emit_accept_certificate: + * @conn: a #GDtlsConnection + * @peer_cert: the peer's #GTlsCertificate + * @errors: the problems with @peer_cert + * + * Used by #GDtlsConnection implementations to emit the + * #GDtlsConnection::accept-certificate signal. + * + * Returns: %TRUE if one of the signal handlers has returned + * %TRUE to accept @peer_cert + * + * Since: 2.48 + */ +gboolean +g_dtls_connection_emit_accept_certificate (GDtlsConnection *conn, + GTlsCertificate *peer_cert, + GTlsCertificateFlags errors) +{ + gboolean accept = FALSE; + + g_signal_emit (conn, signals[ACCEPT_CERTIFICATE], 0, + peer_cert, errors, &accept); + return accept; +} diff --git a/gio/gdtlsconnection.h b/gio/gdtlsconnection.h new file mode 100644 index 0000000..835015c --- /dev/null +++ b/gio/gdtlsconnection.h @@ -0,0 +1,191 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2010 Red Hat, Inc. + * Copyright © 2015 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, see . + */ + +#ifndef __G_DTLS_CONNECTION_H__ +#define __G_DTLS_CONNECTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DTLS_CONNECTION (g_dtls_connection_get_type ()) +#define G_DTLS_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_DTLS_CONNECTION, GDtlsConnection)) +#define G_IS_DTLS_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_DTLS_CONNECTION)) +#define G_DTLS_CONNECTION_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), G_TYPE_DTLS_CONNECTION, GDtlsConnectionInterface)) + +typedef struct _GDtlsConnectionInterface GDtlsConnectionInterface; + +/** + * GDtlsConnectionInterface: + * @g_iface: The parent interface. + * @accept_certificate: Check whether to accept a certificate. + * @handshake: Perform a handshake operation. + * @handshake_async: Start an asynchronous handshake operation. + * @handshake_finish: Finish an asynchronous handshake operation. + * @shutdown: Shut down one or both directions of the connection. + * @shutdown_async: Start an asynchronous shutdown operation. + * @shutdown_finish: Finish an asynchronous shutdown operation. + * + * Virtual method table for a #GDtlsConnection implementation. + * + * Since: 2.48 + */ +struct _GDtlsConnectionInterface +{ + GTypeInterface g_iface; + + /* signals */ + gboolean (*accept_certificate) (GDtlsConnection *connection, + GTlsCertificate *peer_cert, + GTlsCertificateFlags errors); + + /* methods */ + gboolean (*handshake) (GDtlsConnection *conn, + GCancellable *cancellable, + GError **error); + + void (*handshake_async) (GDtlsConnection *conn, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (*handshake_finish) (GDtlsConnection *conn, + GAsyncResult *result, + GError **error); + + gboolean (*shutdown) (GDtlsConnection *conn, + gboolean shutdown_read, + gboolean shutdown_write, + GCancellable *cancellable, + GError **error); + + void (*shutdown_async) (GDtlsConnection *conn, + gboolean shutdown_read, + gboolean shutdown_write, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); + gboolean (*shutdown_finish) (GDtlsConnection *conn, + GAsyncResult *result, + GError **error); +}; + +GLIB_AVAILABLE_IN_2_48 +GType g_dtls_connection_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_48 +void g_dtls_connection_set_database (GDtlsConnection *conn, + GTlsDatabase *database); +GLIB_AVAILABLE_IN_2_48 +GTlsDatabase *g_dtls_connection_get_database (GDtlsConnection *conn); + +GLIB_AVAILABLE_IN_2_48 +void g_dtls_connection_set_certificate (GDtlsConnection *conn, + GTlsCertificate *certificate); +GLIB_AVAILABLE_IN_2_48 +GTlsCertificate *g_dtls_connection_get_certificate (GDtlsConnection *conn); + +GLIB_AVAILABLE_IN_2_48 +void g_dtls_connection_set_interaction (GDtlsConnection *conn, + GTlsInteraction *interaction); +GLIB_AVAILABLE_IN_2_48 +GTlsInteraction *g_dtls_connection_get_interaction (GDtlsConnection *conn); + +GLIB_AVAILABLE_IN_2_48 +GTlsCertificate *g_dtls_connection_get_peer_certificate (GDtlsConnection *conn); +GLIB_AVAILABLE_IN_2_48 +GTlsCertificateFlags g_dtls_connection_get_peer_certificate_errors (GDtlsConnection *conn); + +GLIB_AVAILABLE_IN_2_48 +void g_dtls_connection_set_require_close_notify (GDtlsConnection *conn, + gboolean require_close_notify); +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_get_require_close_notify (GDtlsConnection *conn); + +GLIB_AVAILABLE_IN_2_48 +void g_dtls_connection_set_rehandshake_mode (GDtlsConnection *conn, + GTlsRehandshakeMode mode); +GLIB_AVAILABLE_IN_2_48 +GTlsRehandshakeMode g_dtls_connection_get_rehandshake_mode (GDtlsConnection *conn); + +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_handshake (GDtlsConnection *conn, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +void g_dtls_connection_handshake_async (GDtlsConnection *conn, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_handshake_finish (GDtlsConnection *conn, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_shutdown (GDtlsConnection *conn, + gboolean shutdown_read, + gboolean shutdown_write, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +void g_dtls_connection_shutdown_async (GDtlsConnection *conn, + gboolean shutdown_read, + gboolean shutdown_write, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_shutdown_finish (GDtlsConnection *conn, + GAsyncResult *result, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_close (GDtlsConnection *conn, + GCancellable *cancellable, + GError **error); + +GLIB_AVAILABLE_IN_2_48 +void g_dtls_connection_close_async (GDtlsConnection *conn, + int io_priority, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data); +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_close_finish (GDtlsConnection *conn, + GAsyncResult *result, + GError **error); + +/*< protected >*/ +GLIB_AVAILABLE_IN_2_48 +gboolean g_dtls_connection_emit_accept_certificate (GDtlsConnection *conn, + GTlsCertificate *peer_cert, + GTlsCertificateFlags errors); +G_END_DECLS + +#endif /* __G_DTLS_CONNECTION_H__ */ diff --git a/gio/gdtlsserverconnection.c b/gio/gdtlsserverconnection.c new file mode 100644 index 0000000..dd736f8 --- /dev/null +++ b/gio/gdtlsserverconnection.c @@ -0,0 +1,95 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2010 Red Hat, Inc + * Copyright © 2015 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, see . + */ + +#include "config.h" +#include "glib.h" + +#include "gdtlsserverconnection.h" +#include "ginitable.h" +#include "gioenumtypes.h" +#include "gsocket.h" +#include "gtlsbackend.h" +#include "gtlscertificate.h" +#include "glibintl.h" + +/** + * SECTION:gdtlsserverconnection + * @short_description: DTLS server-side connection + * @include: gio/gio.h + * + * #GDtlsServerConnection is the server-side subclass of #GDtlsConnection, + * representing a server-side DTLS connection. + * + * Since: 2.48 + */ + +G_DEFINE_INTERFACE (GDtlsServerConnection, g_dtls_server_connection, + G_TYPE_DTLS_CONNECTION) + +static void +g_dtls_server_connection_default_init (GDtlsServerConnectionInterface *iface) +{ + /** + * GDtlsServerConnection:authentication-mode: + * + * The #GTlsAuthenticationMode for the server. This can be changed + * before calling g_dtls_connection_handshake() if you want to + * rehandshake with a different mode from the initial handshake. + * + * Since: 2.48 + */ + g_object_interface_install_property (iface, + g_param_spec_enum ("authentication-mode", + P_("Authentication Mode"), + P_("The client authentication mode"), + G_TYPE_TLS_AUTHENTICATION_MODE, + G_TLS_AUTHENTICATION_NONE, + G_PARAM_READWRITE | + G_PARAM_STATIC_STRINGS)); +} + +/** + * g_dtls_server_connection_new: + * @base_socket: the #GDatagramBased to wrap + * @certificate: (allow-none): the default server certificate, or %NULL + * @error: #GError for error reporting, or %NULL to ignore + * + * Creates a new #GDtlsServerConnection wrapping @base_socket. + * + * Returns: (transfer full) (type GDtlsServerConnection): the new + * #GDtlsServerConnection, or %NULL on error + * + * Since: 2.48 + */ +GDatagramBased * +g_dtls_server_connection_new (GDatagramBased *base_socket, + GTlsCertificate *certificate, + GError **error) +{ + GObject *conn; + GTlsBackend *backend; + + backend = g_tls_backend_get_default (); + conn = g_initable_new (g_tls_backend_get_dtls_server_connection_type (backend), + NULL, error, + "base-socket", base_socket, + "certificate", certificate, + NULL); + return G_DATAGRAM_BASED (conn); +} diff --git a/gio/gdtlsserverconnection.h b/gio/gdtlsserverconnection.h new file mode 100644 index 0000000..3082d26 --- /dev/null +++ b/gio/gdtlsserverconnection.h @@ -0,0 +1,69 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright © 2010 Red Hat, Inc. + * Copyright © 2015 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, see . + */ + +#ifndef __G_DTLS_SERVER_CONNECTION_H__ +#define __G_DTLS_SERVER_CONNECTION_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_DTLS_SERVER_CONNECTION (g_dtls_server_connection_get_type ()) +#define G_DTLS_SERVER_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), G_TYPE_DTLS_SERVER_CONNECTION, GDtlsServerConnection)) +#define G_IS_DTLS_SERVER_CONNECTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), G_TYPE_DTLS_SERVER_CONNECTION)) +#define G_DTLS_SERVER_CONNECTION_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), G_TYPE_DTLS_SERVER_CONNECTION, GDtlsServerConnectionInterface)) + +/** + * GDtlsServerConnection: + * + * DTLS server-side connection. This is the server-side implementation + * of a #GDtlsConnection. + * + * Since: 2.48 + */ +typedef struct _GDtlsServerConnectionInterface GDtlsServerConnectionInterface; + +/** + * GDtlsServerConnectionInterface: + * @g_iface: The parent interface. + * + * vtable for a #GDtlsServerConnection implementation. + * + * Since: 2.48 + */ +struct _GDtlsServerConnectionInterface +{ + GTypeInterface g_iface; +}; + +GLIB_AVAILABLE_IN_2_48 +GType g_dtls_server_connection_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_48 +GDatagramBased *g_dtls_server_connection_new (GDatagramBased *base_socket, + GTlsCertificate *certificate, + GError **error); + +G_END_DECLS + +#endif /* __G_DTLS_SERVER_CONNECTION_H__ */ diff --git a/gio/gdummytlsbackend.c b/gio/gdummytlsbackend.c index 9b39096..016dd21 100644 --- a/gio/gdummytlsbackend.c +++ b/gio/gdummytlsbackend.c @@ -1,6 +1,7 @@ /* GIO - GLib Input, Output and Streaming Library * * Copyright (C) 2010 Red Hat, Inc. + * Copyright © 2015 Collabora, Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -25,13 +26,15 @@ #include "gasyncresult.h" #include "gcancellable.h" #include "ginitable.h" +#include "gdtlsclientconnection.h" +#include "gdtlsconnection.h" +#include "gdtlsserverconnection.h" #include "gtlsbackend.h" #include "gtlscertificate.h" #include "gtlsclientconnection.h" #include "gtlsdatabase.h" #include "gtlsfiledatabase.h" #include "gtlsserverconnection.h" -#include "gsimpleasyncresult.h" #include "giomodule.h" #include "giomodule-priv.h" @@ -40,6 +43,7 @@ static GType _g_dummy_tls_certificate_get_type (void); static GType _g_dummy_tls_connection_get_type (void); +static GType _g_dummy_dtls_connection_get_type (void); static GType _g_dummy_tls_database_get_type (void); struct _GDummyTlsBackend { @@ -104,6 +108,8 @@ g_dummy_tls_backend_iface_init (GTlsBackendInterface *iface) iface->get_certificate_type = _g_dummy_tls_certificate_get_type; iface->get_client_connection_type = _g_dummy_tls_connection_get_type; iface->get_server_connection_type = _g_dummy_tls_connection_get_type; + iface->get_dtls_client_connection_type = _g_dummy_dtls_connection_get_type; + iface->get_dtls_server_connection_type = _g_dummy_dtls_connection_get_type; iface->get_file_database_type = _g_dummy_tls_database_get_type; iface->get_default_database = g_dummy_tls_backend_get_default_database; } @@ -318,6 +324,108 @@ g_dummy_tls_connection_initable_iface_init (GInitableIface *iface) iface->init = g_dummy_tls_connection_initable_init; } +/* Dummy DTLS connection type; since GDtlsClientConnection and + * GDtlsServerConnection are just interfaces, we can implement them + * both on a single object. + */ + +typedef struct _GDummyDtlsConnection GDummyDtlsConnection; +typedef struct _GDummyDtlsConnectionClass GDummyDtlsConnectionClass; + +struct _GDummyDtlsConnection { + GObject parent_instance; +}; + +struct _GDummyDtlsConnectionClass { + GObjectClass parent_class; +}; + +enum +{ + PROP_DTLS_CONN_BASE_SOCKET = 1, + PROP_DTLS_CONN_REQUIRE_CLOSE_NOTIFY, + PROP_DTLS_CONN_REHANDSHAKE_MODE, + PROP_DTLS_CONN_CERTIFICATE, + PROP_DTLS_CONN_DATABASE, + PROP_DTLS_CONN_INTERACTION, + PROP_DTLS_CONN_PEER_CERTIFICATE, + PROP_DTLS_CONN_PEER_CERTIFICATE_ERRORS, + PROP_DTLS_CONN_VALIDATION_FLAGS, + PROP_DTLS_CONN_SERVER_IDENTITY, + PROP_DTLS_CONN_ENABLE_NEGOTIATION, + PROP_DTLS_CONN_ACCEPTED_CAS, + PROP_DTLS_CONN_AUTHENTICATION_MODE, +}; + +static void g_dummy_dtls_connection_initable_iface_init (GInitableIface *iface); + +#define g_dummy_dtls_connection_get_type _g_dummy_dtls_connection_get_type +G_DEFINE_TYPE_WITH_CODE (GDummyDtlsConnection, g_dummy_dtls_connection, G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (G_TYPE_DTLS_CONNECTION, NULL); + G_IMPLEMENT_INTERFACE (G_TYPE_DTLS_CLIENT_CONNECTION, NULL); + G_IMPLEMENT_INTERFACE (G_TYPE_DTLS_SERVER_CONNECTION, NULL); + G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, + g_dummy_dtls_connection_initable_iface_init);) + +static void +g_dummy_dtls_connection_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ +} + +static void +g_dummy_dtls_connection_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ +} + +static void +g_dummy_dtls_connection_class_init (GDummyDtlsConnectionClass *connection_class) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (connection_class); + + gobject_class->get_property = g_dummy_dtls_connection_get_property; + gobject_class->set_property = g_dummy_dtls_connection_set_property; + + g_object_class_override_property (gobject_class, PROP_DTLS_CONN_BASE_SOCKET, "base-socket"); + g_object_class_override_property (gobject_class, PROP_DTLS_CONN_REQUIRE_CLOSE_NOTIFY, "require-close-notify"); + g_object_class_override_property (gobject_class, PROP_DTLS_CONN_REHANDSHAKE_MODE, "rehandshake-mode"); + g_object_class_override_property (gobject_class, PROP_DTLS_CONN_CERTIFICATE, "certificate"); + g_object_class_override_property (gobject_class, PROP_DTLS_CONN_DATABASE, "database"); + g_object_class_override_property (gobject_class, PROP_DTLS_CONN_INTERACTION, "interaction"); + g_object_class_override_property (gobject_class, PROP_DTLS_CONN_PEER_CERTIFICATE, "peer-certificate"); + g_object_class_override_property (gobject_class, PROP_DTLS_CONN_PEER_CERTIFICATE_ERRORS, "peer-certificate-errors"); + g_object_class_override_property (gobject_class, PROP_DTLS_CONN_VALIDATION_FLAGS, "validation-flags"); + g_object_class_override_property (gobject_class, PROP_DTLS_CONN_SERVER_IDENTITY, "server-identity"); + g_object_class_override_property (gobject_class, PROP_DTLS_CONN_ACCEPTED_CAS, "accepted-cas"); + g_object_class_override_property (gobject_class, PROP_DTLS_CONN_AUTHENTICATION_MODE, "authentication-mode"); +} + +static void +g_dummy_dtls_connection_init (GDummyDtlsConnection *connection) +{ +} + +static gboolean +g_dummy_dtls_connection_initable_init (GInitable *initable, + GCancellable *cancellable, + GError **error) +{ + g_set_error_literal (error, G_TLS_ERROR, G_TLS_ERROR_UNAVAILABLE, + _("DTLS support is not available")); + return FALSE; +} + +static void +g_dummy_dtls_connection_initable_iface_init (GInitableIface *iface) +{ + iface->init = g_dummy_dtls_connection_initable_init; +} + /* Dummy database type. */ diff --git a/gio/gfile.c b/gio/gfile.c index 8925215..db76aec 100644 --- a/gio/gfile.c +++ b/gio/gfile.c @@ -512,7 +512,8 @@ g_file_get_basename (GFile *file) * g_file_get_path: * @file: input #GFile * - * Gets the local pathname for #GFile, if one exists. + * Gets the local pathname for #GFile, if one exists. If non-%NULL, this is + * guaranteed to be an absolute, canonical path. It might contain symlinks. * * This call does no blocking I/O. * @@ -713,10 +714,10 @@ g_file_get_parent (GFile *file) * * If @parent is %NULL then this function returns %TRUE if @file has any * parent at all. If @parent is non-%NULL then %TRUE is only returned - * if @file is a child of @parent. + * if @file is an immediate child of @parent. * - * Returns: %TRUE if @file is a child of @parent (or any parent in the - * case that @parent is %NULL). + * Returns: %TRUE if @file is an immediate child of @parent (or any parent in + * the case that @parent is %NULL). * * Since: 2.24 */ @@ -4337,9 +4338,14 @@ g_file_query_writable_namespaces (GFile *file, if (list == NULL) { + g_warn_if_reached(); + list = g_file_attribute_info_list_new (); + } + + if (my_error != NULL) + { if (my_error->domain == G_IO_ERROR && my_error->code == G_IO_ERROR_NOT_SUPPORTED) { - list = g_file_attribute_info_list_new (); g_error_free (my_error); } else @@ -7132,7 +7138,9 @@ g_file_load_contents_finish (GFile *file, * or the error %G_IO_ERROR_WRONG_ETAG will be returned. * * If @make_backup is %TRUE, this function will attempt to make a backup - * of @file. + * of @file. Internally, it uses g_file_replace(), so will try to replace the + * file contents in the safest way possible. For example, atomic renames are + * used when replacing local files’ contents. * * If @cancellable is not %NULL, then the operation can be cancelled by * triggering the cancellable object from another thread. If the operation diff --git a/gio/gfileenumerator.c b/gio/gfileenumerator.c index c0d2550..b07b88a 100644 --- a/gio/gfileenumerator.c +++ b/gio/gfileenumerator.c @@ -657,11 +657,6 @@ g_file_enumerator_iterate (GFileEnumerator *direnum, if (ret_info) { - if (out_info != NULL) - { - g_object_set_qdata_full ((GObject*)direnum, cached_info_quark, ret_info, (GDestroyNotify)g_object_unref); - *out_info = ret_info; - } if (out_child != NULL) { const char *name = g_file_info_get_name (ret_info); @@ -674,6 +669,13 @@ g_file_enumerator_iterate (GFileEnumerator *direnum, g_object_set_qdata_full ((GObject*)direnum, cached_child_quark, *out_child, (GDestroyNotify)g_object_unref); } } + if (out_info != NULL) + { + g_object_set_qdata_full ((GObject*)direnum, cached_info_quark, ret_info, (GDestroyNotify)g_object_unref); + *out_info = ret_info; + } + else + g_object_unref (ret_info); } else { diff --git a/gio/gfileinfo-priv.h b/gio/gfileinfo-priv.h index 8a55d6b..1c1e4a1 100644 --- a/gio/gfileinfo-priv.h +++ b/gio/gfileinfo-priv.h @@ -43,6 +43,7 @@ #define G_FILE_ATTRIBUTE_ID_STANDARD_TARGET_URI (1048576 + 17) #define G_FILE_ATTRIBUTE_ID_STANDARD_SORT_ORDER (1048576 + 18) #define G_FILE_ATTRIBUTE_ID_STANDARD_SYMBOLIC_ICON (1048576 + 19) +#define G_FILE_ATTRIBUTE_ID_STANDARD_IS_VOLATILE (1048576 + 20) #define G_FILE_ATTRIBUTE_ID_ETAG_VALUE (2097152 + 1) #define G_FILE_ATTRIBUTE_ID_ID_FILE (3145728 + 1) #define G_FILE_ATTRIBUTE_ID_ID_FILESYSTEM (3145728 + 2) diff --git a/gio/gfileinfo.c b/gio/gfileinfo.c index 0cbf988..b8e3179 100644 --- a/gio/gfileinfo.c +++ b/gio/gfileinfo.c @@ -203,6 +203,7 @@ ensure_attribute_hash (void) REGISTER_ATTRIBUTE (STANDARD_TARGET_URI); REGISTER_ATTRIBUTE (STANDARD_SORT_ORDER); REGISTER_ATTRIBUTE (STANDARD_SYMBOLIC_ICON); + REGISTER_ATTRIBUTE (STANDARD_IS_VOLATILE); REGISTER_ATTRIBUTE (ETAG_VALUE); REGISTER_ATTRIBUTE (ID_FILE); REGISTER_ATTRIBUTE (ID_FILESYSTEM); @@ -364,8 +365,8 @@ g_file_info_new (void) * @src_info: source to copy attributes from. * @dest_info: destination to copy attributes to. * - * Copies all of the [GFileAttribute][gio-GFileAttribute] - * from @src_info to @dest_info. + * First clears all of the [GFileAttribute][gio-GFileAttribute] of @dest_info, + * and then copies all of the file attributes from @src_info to @dest_info. **/ void g_file_info_copy_into (GFileInfo *src_info, @@ -615,7 +616,8 @@ g_file_info_has_namespace (GFileInfo *info, /** * g_file_info_list_attributes: * @info: a #GFileInfo. - * @name_space: a file attribute key's namespace. + * @name_space: (nullable): a file attribute key's namespace, or %NULL to list + * all attributes. * * Lists the file info structure's attributes. * @@ -710,9 +712,10 @@ g_file_info_remove_attribute (GFileInfo *info, * g_file_info_get_attribute_data: * @info: a #GFileInfo * @attribute: a file attribute key - * @type: (out) (allow-none): return location for the attribute type, or %NULL - * @value_pp: (out) (allow-none): return location for the attribute value, or %NULL - * @status: (out) (allow-none): return location for the attribute status, or %NULL + * @type: (out) (optional): return location for the attribute type, or %NULL + * @value_pp: (out) (optional) (not nullable): return location for the + * attribute value, or %NULL; the attribute value will not be %NULL + * @status: (out) (optional): return location for the attribute status, or %NULL * * Gets the attribute type, value and status for an attribute key. * @@ -1107,7 +1110,7 @@ _g_file_info_set_attribute_by_id (GFileInfo *info, * @info: a #GFileInfo. * @attribute: a file attribute key. * @type: a #GFileAttributeType - * @value_p: pointer to the value + * @value_p: (not nullable): pointer to the value * * Sets the @attribute to contain the given value, if possible. To unset the * attribute, use %G_ATTRIBUTE_TYPE_INVALID for @type. diff --git a/gio/gfileinfo.h b/gio/gfileinfo.h index 1af56ae..cda63d6 100644 --- a/gio/gfileinfo.h +++ b/gio/gfileinfo.h @@ -89,6 +89,20 @@ typedef struct _GFileInfoClass GFileInfoClass; #define G_FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL "standard::is-virtual" /* boolean */ /** + * G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE: + * + * A key in the "standard" namespace for checking if a file is + * volatile. This is meant for opaque, non-POSIX-like backends to + * indicate that the URI is not persistent. Applications should look + * at #G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET for the persistent URI. + * + * Corresponding #GFileAttributeType is %G_FILE_ATTRIBUTE_TYPE_BOOLEAN. + * + * Since: 2.46 + **/ +#define G_FILE_ATTRIBUTE_STANDARD_IS_VOLATILE "standard::is-volatile" /* boolean */ + +/** * G_FILE_ATTRIBUTE_STANDARD_NAME: * * A key in the "standard" namespace for getting the name of the file. diff --git a/gio/gfilemonitor.c b/gio/gfilemonitor.c index c81f6fc..b05a896 100644 --- a/gio/gfilemonitor.c +++ b/gio/gfilemonitor.c @@ -27,11 +27,6 @@ #include "gvfs.h" #include "glibintl.h" - -struct _FileChange; -typedef struct _FileChange FileChange; -static void file_change_free (FileChange *change); - /** * SECTION:gfilemonitor * @short_description: File Monitor @@ -53,48 +48,23 @@ static void file_change_free (FileChange *change); * context is still running). **/ -G_LOCK_DEFINE_STATIC(cancelled); - -enum { - CHANGED, - LAST_SIGNAL -}; - -typedef struct { - GFile *file; - guint32 last_sent_change_time; /* 0 == not sent */ - guint32 send_delayed_change_at; /* 0 == never */ - guint32 send_virtual_changes_done_at; /* 0 == never */ -} RateLimiter; +#define DEFAULT_RATE_LIMIT_MSECS 800 -struct _GFileMonitorPrivate { +struct _GFileMonitorPrivate +{ gboolean cancelled; - int rate_limit_msec; - - /* Rate limiting change events */ - GHashTable *rate_limiter; - - GMutex mutex; - GSource *pending_file_change_source; - GSList *pending_file_changes; /* FileChange */ - - GSource *timeout; - guint32 timeout_fires_at; - - GMainContext *context; }; -enum { +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (GFileMonitor, g_file_monitor, G_TYPE_OBJECT) + +enum +{ PROP_0, PROP_RATE_LIMIT, - PROP_CANCELLED, - PROP_CONTEXT + PROP_CANCELLED }; -/* work around a limitation of the aliasing foo */ -#undef g_file_monitor - -G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (GFileMonitor, g_file_monitor, G_TYPE_OBJECT) +static guint g_file_monitor_changed_signal; static void g_file_monitor_set_property (GObject *object, @@ -102,20 +72,14 @@ g_file_monitor_set_property (GObject *object, const GValue *value, GParamSpec *pspec) { - GFileMonitor *monitor; + //GFileMonitor *monitor; - monitor = G_FILE_MONITOR (object); + //monitor = G_FILE_MONITOR (object); switch (prop_id) { case PROP_RATE_LIMIT: - g_file_monitor_set_rate_limit (monitor, g_value_get_int (value)); - break; - - case PROP_CONTEXT: - monitor->priv->context = g_value_dup_boxed (value); - if (monitor->priv->context == NULL) - monitor->priv->context = g_main_context_ref_thread_default (); + /* not supported by default */ break; default: @@ -130,22 +94,17 @@ g_file_monitor_get_property (GObject *object, GValue *value, GParamSpec *pspec) { - GFileMonitor *monitor; - GFileMonitorPrivate *priv; - - monitor = G_FILE_MONITOR (object); - priv = monitor->priv; - switch (prop_id) { case PROP_RATE_LIMIT: - g_value_set_int (value, priv->rate_limit_msec); + /* we expect this to be overridden... */ + g_value_set_int (value, DEFAULT_RATE_LIMIT_MSECS); break; case PROP_CANCELLED: - G_LOCK (cancelled); - g_value_set_boolean (value, priv->cancelled); - G_UNLOCK (cancelled); + //g_mutex_lock (&fms->lock); + g_value_set_boolean (value, FALSE);//fms->cancelled); + //g_mutex_unlock (&fms->lock); break; default: @@ -154,56 +113,10 @@ g_file_monitor_get_property (GObject *object, } } -#define DEFAULT_RATE_LIMIT_MSECS 800 -#define DEFAULT_VIRTUAL_CHANGES_DONE_DELAY_SECS 2 - -static guint signals[LAST_SIGNAL] = { 0 }; - -static void -rate_limiter_free (RateLimiter *limiter) -{ - g_object_unref (limiter->file); - g_slice_free (RateLimiter, limiter); -} - -static void -g_file_monitor_finalize (GObject *object) -{ - GFileMonitor *monitor; - - monitor = G_FILE_MONITOR (object); - - if (monitor->priv->timeout) - { - g_source_destroy (monitor->priv->timeout); - g_source_unref (monitor->priv->timeout); - } - - g_hash_table_destroy (monitor->priv->rate_limiter); - - g_main_context_unref (monitor->priv->context); - g_mutex_clear (&monitor->priv->mutex); - - G_OBJECT_CLASS (g_file_monitor_parent_class)->finalize (object); -} - static void g_file_monitor_dispose (GObject *object) { - GFileMonitor *monitor; - GFileMonitorPrivate *priv; - - monitor = G_FILE_MONITOR (object); - priv = monitor->priv; - - if (priv->pending_file_change_source) - { - g_source_destroy (priv->pending_file_change_source); - g_source_unref (priv->pending_file_change_source); - priv->pending_file_change_source = NULL; - } - g_slist_free_full (priv->pending_file_changes, (GDestroyNotify) file_change_free); - priv->pending_file_changes = NULL; + GFileMonitor *monitor = G_FILE_MONITOR (object); /* Make sure we cancel on last unref */ g_file_monitor_cancel (monitor); @@ -212,12 +125,17 @@ g_file_monitor_dispose (GObject *object) } static void +g_file_monitor_init (GFileMonitor *monitor) +{ + monitor->priv = g_file_monitor_get_instance_private (monitor); +} + +static void g_file_monitor_class_init (GFileMonitorClass *klass) { GObjectClass *object_class; object_class = G_OBJECT_CLASS (klass); - object_class->finalize = g_file_monitor_finalize; object_class->dispose = g_file_monitor_dispose; object_class->get_property = g_file_monitor_get_property; object_class->set_property = g_file_monitor_set_property; @@ -231,58 +149,54 @@ g_file_monitor_class_init (GFileMonitorClass *klass) * * Emitted when @file has been changed. * - * If using #G_FILE_MONITOR_SEND_MOVED flag and @event_type is + * If using %G_FILE_MONITOR_WATCH_RENAMES on a directory monitor, and + * the information is available (and if supported by the backend), + * @event_type may be %G_FILE_MONITOR_EVENT_RENAMED, + * %G_FILE_MONITOR_EVENT_MOVED_IN or %G_FILE_MONITOR_EVENT_MOVED_OUT. + * + * In all cases @file will be a child of the monitored directory. For + * renames, @file will be the old name and @other_file is the new + * name. For "moved in" events, @file is the name of the file that + * appeared and @other_file is the old name that it was moved from (in + * another directory). For "moved out" events, @file is the name of + * the file that used to be in this directory and @other_file is the + * name of the file at its new location. + * + * It makes sense to treat %G_FILE_MONITOR_EVENT_MOVED_IN as + * equivalent to %G_FILE_MONITOR_EVENT_CREATED and + * %G_FILE_MONITOR_EVENT_MOVED_OUT as equivalent to + * %G_FILE_MONITOR_EVENT_DELETED, with extra information. + * %G_FILE_MONITOR_EVENT_RENAMED is equivalent to a delete/create + * pair. This is exactly how the events will be reported in the case + * that the %G_FILE_MONITOR_WATCH_RENAMES flag is not in use. + * + * If using the deprecated flag %G_FILE_MONITOR_SEND_MOVED flag and @event_type is * #G_FILE_MONITOR_EVENT_MOVED, @file will be set to a #GFile containing the * old path, and @other_file will be set to a #GFile containing the new path. * * In all the other cases, @other_file will be set to #NULL. **/ - signals[CHANGED] = - g_signal_new (I_("changed"), - G_TYPE_FILE_MONITOR, - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GFileMonitorClass, changed), - NULL, NULL, - NULL, - G_TYPE_NONE, 3, - G_TYPE_FILE, G_TYPE_FILE, G_TYPE_FILE_MONITOR_EVENT); - - g_object_class_install_property (object_class, - PROP_RATE_LIMIT, + g_file_monitor_changed_signal = g_signal_new (I_("changed"), + G_TYPE_FILE_MONITOR, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GFileMonitorClass, changed), + NULL, NULL, + NULL, + G_TYPE_NONE, 3, + G_TYPE_FILE, G_TYPE_FILE, G_TYPE_FILE_MONITOR_EVENT); + + g_object_class_install_property (object_class, PROP_RATE_LIMIT, g_param_spec_int ("rate-limit", P_("Rate limit"), P_("The limit of the monitor to watch for changes, in milliseconds"), - 0, G_MAXINT, - DEFAULT_RATE_LIMIT_MSECS, - G_PARAM_READWRITE| - G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); + 0, G_MAXINT, DEFAULT_RATE_LIMIT_MSECS, G_PARAM_READWRITE | + G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS)); - g_object_class_install_property (object_class, - PROP_CANCELLED, + g_object_class_install_property (object_class, PROP_CANCELLED, g_param_spec_boolean ("cancelled", P_("Cancelled"), P_("Whether the monitor has been cancelled"), - FALSE, - G_PARAM_READABLE| - G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); - - g_object_class_install_property (object_class, - PROP_CONTEXT, - g_param_spec_boxed ("context", - P_("Context"), - P_("The main context to dispatch from"), - G_TYPE_MAIN_CONTEXT, G_PARAM_WRITABLE | - G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); -} - -static void -g_file_monitor_init (GFileMonitor *monitor) -{ - monitor->priv = g_file_monitor_get_instance_private (monitor); - monitor->priv->rate_limit_msec = DEFAULT_RATE_LIMIT_MSECS; - monitor->priv->rate_limiter = g_hash_table_new_full (g_file_hash, (GEqualFunc)g_file_equal, - NULL, (GDestroyNotify) rate_limiter_free); - g_mutex_init (&monitor->priv->mutex); + FALSE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); } /** @@ -300,42 +214,33 @@ g_file_monitor_is_cancelled (GFileMonitor *monitor) g_return_val_if_fail (G_IS_FILE_MONITOR (monitor), FALSE); - G_LOCK (cancelled); res = monitor->priv->cancelled; - G_UNLOCK (cancelled); - + return res; } /** * g_file_monitor_cancel: * @monitor: a #GFileMonitor. - * + * * Cancels a file monitor. - * - * Returns: %TRUE if monitor was cancelled. + * + * Returns: always %TRUE **/ gboolean -g_file_monitor_cancel (GFileMonitor* monitor) +g_file_monitor_cancel (GFileMonitor *monitor) { - GFileMonitorClass *klass; - g_return_val_if_fail (G_IS_FILE_MONITOR (monitor), FALSE); - - G_LOCK (cancelled); - if (monitor->priv->cancelled) + + if (!monitor->priv->cancelled) { - G_UNLOCK (cancelled); - return TRUE; + G_FILE_MONITOR_GET_CLASS (monitor)->cancel (monitor); + + monitor->priv->cancelled = TRUE; + g_object_notify (G_OBJECT (monitor), "cancelled"); } - - monitor->priv->cancelled = TRUE; - G_UNLOCK (cancelled); - - g_object_notify (G_OBJECT (monitor), "cancelled"); - - klass = G_FILE_MONITOR_GET_CLASS (monitor); - return (* klass->cancel) (monitor); + + return TRUE; } /** @@ -351,313 +256,7 @@ void g_file_monitor_set_rate_limit (GFileMonitor *monitor, gint limit_msecs) { - GFileMonitorPrivate *priv; - - g_return_if_fail (G_IS_FILE_MONITOR (monitor)); - g_return_if_fail (limit_msecs >= 0); - - priv = monitor->priv; - if (priv->rate_limit_msec != limit_msecs) - { - monitor->priv->rate_limit_msec = limit_msecs; - g_object_notify (G_OBJECT (monitor), "rate-limit"); - } -} - -struct _FileChange { - GFile *child; - GFile *other_file; - GFileMonitorEvent event_type; -}; - -static void -file_change_free (FileChange *change) -{ - g_object_unref (change->child); - if (change->other_file) - g_object_unref (change->other_file); - - g_slice_free (FileChange, change); -} - -static gboolean -emit_cb (gpointer data) -{ - GFileMonitor *monitor = G_FILE_MONITOR (data); - GSList *pending, *iter; - - g_mutex_lock (&monitor->priv->mutex); - pending = g_slist_reverse (monitor->priv->pending_file_changes); - monitor->priv->pending_file_changes = NULL; - if (monitor->priv->pending_file_change_source) - { - g_source_unref (monitor->priv->pending_file_change_source); - monitor->priv->pending_file_change_source = NULL; - } - g_mutex_unlock (&monitor->priv->mutex); - - g_object_ref (monitor); - for (iter = pending; iter; iter = iter->next) - { - FileChange *change = iter->data; - - g_signal_emit (monitor, signals[CHANGED], 0, - change->child, change->other_file, change->event_type); - file_change_free (change); - } - g_slist_free (pending); - g_object_unref (monitor); - - return FALSE; -} - -static void -emit_in_idle (GFileMonitor *monitor, - GFile *child, - GFile *other_file, - GFileMonitorEvent event_type) -{ - GSource *source; - FileChange *change; - GFileMonitorPrivate *priv; - - priv = monitor->priv; - - change = g_slice_new (FileChange); - - change->child = g_object_ref (child); - if (other_file) - change->other_file = g_object_ref (other_file); - else - change->other_file = NULL; - change->event_type = event_type; - - g_mutex_lock (&monitor->priv->mutex); - if (!priv->pending_file_change_source) - { - source = g_idle_source_new (); - priv->pending_file_change_source = source; - g_source_set_priority (source, 0); - - /* We don't ref monitor here - instead dispose will free any - * pending idles. - */ - g_source_set_callback (source, emit_cb, monitor, NULL); - g_source_set_name (source, "[gio] emit_cb"); - g_source_attach (source, monitor->priv->context); - } - /* We reverse this in the processor */ - priv->pending_file_changes = g_slist_prepend (priv->pending_file_changes, change); - g_mutex_unlock (&monitor->priv->mutex); -} - -static guint32 -get_time_msecs (void) -{ - return g_get_monotonic_time () / G_TIME_SPAN_MILLISECOND; -} - -static guint32 -time_difference (guint32 from, guint32 to) -{ - if (from > to) - return 0; - return to - from; -} - -/* Change event rate limiting support: */ - -static RateLimiter * -new_limiter (GFileMonitor *monitor, - GFile *file) -{ - RateLimiter *limiter; - - limiter = g_slice_new0 (RateLimiter); - limiter->file = g_object_ref (file); - g_hash_table_insert (monitor->priv->rate_limiter, file, limiter); - - return limiter; -} - -static void -rate_limiter_send_virtual_changes_done_now (GFileMonitor *monitor, - RateLimiter *limiter) -{ - if (limiter->send_virtual_changes_done_at != 0) - { - emit_in_idle (monitor, limiter->file, NULL, - G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT); - limiter->send_virtual_changes_done_at = 0; - } -} - -static void -rate_limiter_send_delayed_change_now (GFileMonitor *monitor, - RateLimiter *limiter, - guint32 time_now) -{ - if (limiter->send_delayed_change_at != 0) - { - emit_in_idle (monitor, - limiter->file, NULL, - G_FILE_MONITOR_EVENT_CHANGED); - limiter->send_delayed_change_at = 0; - limiter->last_sent_change_time = time_now; - } -} - -typedef struct { - guint32 min_time; - guint32 time_now; - GFileMonitor *monitor; -} ForEachData; - -static gboolean -calc_min_time (GFileMonitor *monitor, - RateLimiter *limiter, - guint32 time_now, - guint32 *min_time) -{ - gboolean delete_me; - guint32 expire_at; - - delete_me = TRUE; - - if (limiter->last_sent_change_time != 0) - { - /* Set a timeout at 2*rate limit so that we can clear out the change from the hash eventually */ - expire_at = limiter->last_sent_change_time + 2 * monitor->priv->rate_limit_msec; - - if (time_difference (time_now, expire_at) > 0) - { - delete_me = FALSE; - *min_time = MIN (*min_time, - time_difference (time_now, expire_at)); - } - } - - if (limiter->send_delayed_change_at != 0) - { - delete_me = FALSE; - *min_time = MIN (*min_time, - time_difference (time_now, limiter->send_delayed_change_at)); - } - - if (limiter->send_virtual_changes_done_at != 0) - { - delete_me = FALSE; - *min_time = MIN (*min_time, - time_difference (time_now, limiter->send_virtual_changes_done_at)); - } - - return delete_me; -} - -static gboolean -foreach_rate_limiter_fire (gpointer key, - gpointer value, - gpointer user_data) -{ - RateLimiter *limiter = value; - ForEachData *data = user_data; - - if (limiter->send_delayed_change_at != 0 && - time_difference (data->time_now, limiter->send_delayed_change_at) == 0) - rate_limiter_send_delayed_change_now (data->monitor, limiter, data->time_now); - - if (limiter->send_virtual_changes_done_at != 0 && - time_difference (data->time_now, limiter->send_virtual_changes_done_at) == 0) - rate_limiter_send_virtual_changes_done_now (data->monitor, limiter); - - return calc_min_time (data->monitor, limiter, data->time_now, &data->min_time); -} - -static gboolean -rate_limiter_timeout (gpointer timeout_data) -{ - GFileMonitor *monitor = timeout_data; - ForEachData data; - GSource *source; - - data.min_time = G_MAXUINT32; - data.monitor = monitor; - data.time_now = get_time_msecs (); - g_hash_table_foreach_remove (monitor->priv->rate_limiter, - foreach_rate_limiter_fire, - &data); - - /* Remove old timeout */ - if (monitor->priv->timeout) - { - g_source_destroy (monitor->priv->timeout); - g_source_unref (monitor->priv->timeout); - monitor->priv->timeout = NULL; - monitor->priv->timeout_fires_at = 0; - } - - /* Set up new timeout */ - if (data.min_time != G_MAXUINT32) - { - source = g_timeout_source_new (data.min_time + 1); /* + 1 to make sure we've really passed the time */ - g_source_set_callback (source, rate_limiter_timeout, monitor, NULL); - g_source_attach (source, monitor->priv->context); - - monitor->priv->timeout = source; - monitor->priv->timeout_fires_at = data.time_now + data.min_time; - } - - return FALSE; -} - -static gboolean -foreach_rate_limiter_update (gpointer key, - gpointer value, - gpointer user_data) -{ - RateLimiter *limiter = value; - ForEachData *data = user_data; - - return calc_min_time (data->monitor, limiter, data->time_now, &data->min_time); -} - -static void -update_rate_limiter_timeout (GFileMonitor *monitor, - guint new_time) -{ - ForEachData data; - GSource *source; - - if (monitor->priv->timeout_fires_at != 0 && new_time != 0 && - time_difference (new_time, monitor->priv->timeout_fires_at) == 0) - return; /* Nothing to do, we already fire earlier than that */ - - data.min_time = G_MAXUINT32; - data.monitor = monitor; - data.time_now = get_time_msecs (); - g_hash_table_foreach_remove (monitor->priv->rate_limiter, - foreach_rate_limiter_update, - &data); - - /* Remove old timeout */ - if (monitor->priv->timeout) - { - g_source_destroy (monitor->priv->timeout); - g_source_unref (monitor->priv->timeout); - monitor->priv->timeout_fires_at = 0; - monitor->priv->timeout = NULL; - } - - /* Set up new timeout */ - if (data.min_time != G_MAXUINT32) - { - source = g_timeout_source_new (data.min_time + 1); /* + 1 to make sure we've really passed the time */ - g_source_set_callback (source, rate_limiter_timeout, monitor, NULL); - g_source_attach (source, monitor->priv->context); - - monitor->priv->timeout = source; - monitor->priv->timeout_fires_at = data.time_now + data.min_time; - } + g_object_set (monitor, "rate-limit", limit_msecs, NULL); } /** @@ -666,81 +265,27 @@ update_rate_limiter_timeout (GFileMonitor *monitor, * @child: a #GFile. * @other_file: a #GFile. * @event_type: a set of #GFileMonitorEvent flags. - * + * * Emits the #GFileMonitor::changed signal if a change - * has taken place. Should be called from file monitor + * has taken place. Should be called from file monitor * implementations only. * - * The signal will be emitted from an idle handler (in the - * [thread-default main context][g-main-context-push-thread-default]). + * Implementations are responsible to call this method from the + * [thread-default main context][g-main-context-push-thread-default] of the + * thread that the monitor was created in. **/ void g_file_monitor_emit_event (GFileMonitor *monitor, - GFile *child, - GFile *other_file, - GFileMonitorEvent event_type) + GFile *child, + GFile *other_file, + GFileMonitorEvent event_type) { - guint32 time_now, since_last; - gboolean emit_now; - RateLimiter *limiter; - g_return_if_fail (G_IS_FILE_MONITOR (monitor)); g_return_if_fail (G_IS_FILE (child)); + g_return_if_fail (!other_file || G_IS_FILE (other_file)); - limiter = g_hash_table_lookup (monitor->priv->rate_limiter, child); + if (monitor->priv->cancelled) + return; - if (event_type != G_FILE_MONITOR_EVENT_CHANGED) - { - if (limiter) - { - rate_limiter_send_delayed_change_now (monitor, limiter, get_time_msecs ()); - if (event_type == G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT) - limiter->send_virtual_changes_done_at = 0; - else - rate_limiter_send_virtual_changes_done_now (monitor, limiter); - update_rate_limiter_timeout (monitor, 0); - } - emit_in_idle (monitor, child, other_file, event_type); - } - else - { - /* Changed event, rate limit */ - time_now = get_time_msecs (); - emit_now = TRUE; - - if (limiter) - { - since_last = time_difference (limiter->last_sent_change_time, time_now); - if (since_last < monitor->priv->rate_limit_msec) - { - /* We ignore this change, but arm a timer so that we can fire it later if we - don't get any other events (that kill this timeout) */ - emit_now = FALSE; - if (limiter->send_delayed_change_at == 0) - { - limiter->send_delayed_change_at = time_now + monitor->priv->rate_limit_msec; - update_rate_limiter_timeout (monitor, limiter->send_delayed_change_at); - } - } - } - - if (limiter == NULL) - limiter = new_limiter (monitor, child); - - if (emit_now) - { - emit_in_idle (monitor, child, other_file, event_type); - - limiter->last_sent_change_time = time_now; - limiter->send_delayed_change_at = 0; - /* Set a timeout of 2*rate limit so that we can clear out the change from the hash eventually */ - update_rate_limiter_timeout (monitor, time_now + 2 * monitor->priv->rate_limit_msec); - } - - /* Schedule a virtual change done. This is removed if we get a real one, and - postponed if we get more change events. */ - - limiter->send_virtual_changes_done_at = time_now + DEFAULT_VIRTUAL_CHANGES_DONE_DELAY_SECS * 1000; - update_rate_limiter_timeout (monitor, limiter->send_virtual_changes_done_at); - } + g_signal_emit (monitor, g_file_monitor_changed_signal, 0, child, other_file, event_type); } diff --git a/gio/gicon.c b/gio/gicon.c index b5080da..6c9a3ec 100644 --- a/gio/gicon.c +++ b/gio/gicon.c @@ -83,7 +83,7 @@ g_icon_default_init (GIconInterface *iface) /** * g_icon_hash: - * @icon: #gconstpointer to an icon object. + * @icon: (not nullable): #gconstpointer to an icon object. * * Gets a hash for an icon. * diff --git a/gio/ginetaddress.c b/gio/ginetaddress.c index 8723c28..671f228 100644 --- a/gio/ginetaddress.c +++ b/gio/ginetaddress.c @@ -398,38 +398,27 @@ inet_pton (gint family, struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&sa; gint len = sizeof (sa); - /* We need to make sure to not pass a string of the form - * "IPv4addr:port" or "[IPv6addr]:port" to WSAStringToAddress(), - * since it would accept them (returning both the address and the - * port), but we only want to accept standalone IP addresses. (In - * the IPv6 case, WINE actually only checks for the ']', not the - * '[', which is why we do the same here.) - */ if (family != AF_INET && family != AF_INET6) { WSASetLastError (WSAEAFNOSUPPORT); return -1; } - if (!strchr (addr_string, ':')) - { - if (WSAStringToAddress ((LPTSTR) addr_string, AF_INET, NULL, (LPSOCKADDR) &sa, &len) == 0) - { - /* XXX: Figure out when WSAStringToAddress() accepts a IPv4 address but the - numbers-and-dots address is actually not complete. This code will be - removed once XP/Server 2003 support is dropped... */ - addr = &sin->sin_addr; - return 1; - } - } - if (!strchr (addr_string, ']')) - { - if (WSAStringToAddress ((LPTSTR) addr_string, AF_INET6, NULL, (LPSOCKADDR) &sa, &len) == 0) - { - addr = &sin6->sin6_addr; - return 1; - } - } - return 0; + + /* WSAStringToAddress() will accept various not-an-IP-address + * strings like "127.0.0.1:80", "[1234::5678]:80", "127.1", etc. + */ + if (!g_hostname_is_ip_address (addr_string)) + return 0; + + if (WSAStringToAddress ((LPTSTR) addr_string, family, NULL, (LPSOCKADDR) &sa, &len) != 0) + return 0; + + if (family == AF_INET) + *(IN_ADDR *)addr = sin->sin_addr; + else + *(IN6_ADDR *)addr = sin6->sin6_addr; + + return 1; } } @@ -445,7 +434,7 @@ inet_ntop (gint family, else { /* Fallback codepath for XP/Server 2003 */ - DWORD buflen = sizeof (addr_str), addrlen; + DWORD buflen = size, addrlen; struct sockaddr_storage sa; struct sockaddr_in *sin = (struct sockaddr_in *)&sa; struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&sa; @@ -487,6 +476,7 @@ inet_ntop (gint family, * * Returns: a new #GInetAddress corresponding to @string, or %NULL if * @string could not be parsed. + * Free the returned object with g_object_unref(). * * Since: 2.22 */ @@ -524,6 +514,7 @@ g_inet_address_new_from_string (const gchar *string) * %G_SOCKET_FAMILY_IPV6. * * Returns: a new #GInetAddress corresponding to @family and @bytes. + * Free the returned object with g_object_unref(). * * Since: 2.22 */ @@ -547,6 +538,7 @@ g_inet_address_new_from_bytes (const guint8 *bytes, * * Returns: a new #GInetAddress corresponding to the loopback address * for @family. + * Free the returned object with g_object_unref(). * * Since: 2.22 */ @@ -574,6 +566,7 @@ g_inet_address_new_loopback (GSocketFamily family) * * Returns: a new #GInetAddress corresponding to the "any" address * for @family. + * Free the returned object with g_object_unref(). * * Since: 2.22 */ diff --git a/gio/ginetsocketaddress.c b/gio/ginetsocketaddress.c index 5cf26f7..c38fa60 100644 --- a/gio/ginetsocketaddress.c +++ b/gio/ginetsocketaddress.c @@ -26,6 +26,7 @@ #include "ginetsocketaddress.h" #include "ginetaddress.h" #include "gnetworkingprivate.h" +#include "gsocketconnectable.h" #include "gioerror.h" #include "glibintl.h" @@ -54,7 +55,13 @@ struct _GInetSocketAddressPrivate guint32 scope_id; }; -G_DEFINE_TYPE_WITH_PRIVATE (GInetSocketAddress, g_inet_socket_address, G_TYPE_SOCKET_ADDRESS) +static void g_inet_socket_address_connectable_iface_init (GSocketConnectableIface *iface); +static gchar *g_inet_socket_address_connectable_to_string (GSocketConnectable *connectable); + +G_DEFINE_TYPE_WITH_CODE (GInetSocketAddress, g_inet_socket_address, G_TYPE_SOCKET_ADDRESS, + G_ADD_PRIVATE (GInetSocketAddress) + G_IMPLEMENT_INTERFACE (G_TYPE_SOCKET_CONNECTABLE, + g_inet_socket_address_connectable_iface_init)) enum { PROP_0, @@ -302,6 +309,59 @@ g_inet_socket_address_class_init (GInetSocketAddressClass *klass) } static void +g_inet_socket_address_connectable_iface_init (GSocketConnectableIface *iface) +{ + GSocketConnectableIface *parent_iface = g_type_interface_peek_parent (iface); + + iface->enumerate = parent_iface->enumerate; + iface->proxy_enumerate = parent_iface->proxy_enumerate; + iface->to_string = g_inet_socket_address_connectable_to_string; +} + +static gchar * +g_inet_socket_address_connectable_to_string (GSocketConnectable *connectable) +{ + GInetSocketAddress *sa; + GInetAddress *a; + gchar *a_string; + GString *out; + guint16 port; + + sa = G_INET_SOCKET_ADDRESS (connectable); + a = g_inet_socket_address_get_address (sa); + out = g_string_new (""); + + /* Address. */ + a_string = g_inet_address_to_string (a); + g_string_append (out, a_string); + g_free (a_string); + + /* Scope ID (IPv6 only). */ + if (g_inet_address_get_family (a) == G_SOCKET_FAMILY_IPV6 && + g_inet_socket_address_get_scope_id (sa) != 0) + { + g_string_append_printf (out, "%%%u", + g_inet_socket_address_get_scope_id (sa)); + } + + /* Port. */ + port = g_inet_socket_address_get_port (sa); + if (port != 0) + { + /* Disambiguate ports from IPv6 addresses using square brackets. */ + if (g_inet_address_get_family (a) == G_SOCKET_FAMILY_IPV6) + { + g_string_prepend (out, "["); + g_string_append (out, "]"); + } + + g_string_append_printf (out, ":%u", port); + } + + return g_string_free (out, FALSE); +} + +static void g_inet_socket_address_init (GInetSocketAddress *address) { address->priv = g_inet_socket_address_get_instance_private (address); diff --git a/gio/ginputstream.c b/gio/ginputstream.c index 8030256..af89492 100644 --- a/gio/ginputstream.c +++ b/gio/ginputstream.c @@ -40,7 +40,10 @@ * (g_input_stream_skip()). * * To copy the content of an input stream to an output stream without - * manually handling the reads and writes, use g_output_stream_splice(). + * manually handling the reads and writes, use g_output_stream_splice(). + * + * See the documentation for #GIOStream for details of thread safety of + * streaming APIs. * * All of these functions have async variants too. **/ diff --git a/gio/gio-autocleanups.h b/gio/gio-autocleanups.h index a95ba65..60ab3ba 100644 --- a/gio/gio-autocleanups.h +++ b/gio/gio-autocleanups.h @@ -39,6 +39,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GConverter, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GConverterInputStream, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GConverterOutputStream, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GCredentials, g_object_unref) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDatagramBased, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDataInputStream, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDataOutputStream, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GDBusActionGroup, g_object_unref) diff --git a/gio/gio.h b/gio/gio.h index 9c4ee12..5c8b384 100644 --- a/gio/gio.h +++ b/gio/gio.h @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -59,6 +60,9 @@ #include #include #include +#include +#include +#include #include #include #include diff --git a/gio/gio.rc b/gio/gio.rc new file mode 100644 index 0000000..aeeda44 --- /dev/null +++ b/gio/gio.rc @@ -0,0 +1,30 @@ +#include + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 2,48,0,0 + PRODUCTVERSION 2,48,0,0 + FILEFLAGSMASK 0 + FILEFLAGS 0 + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE VFT2_UNKNOWN + BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "The GLib developer community" + VALUE "FileDescription", "Gio" + VALUE "FileVersion", "2.48.0.0" + VALUE "InternalName", "libgio-2.0-0" + VALUE "LegalCopyright", "Copyright © 2006-2011 Red Hat, Inc. and others." + VALUE "OriginalFilename", "libgio-2.0-0.dll" + VALUE "ProductName", "GLib" + VALUE "ProductVersion", "2.48.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END + END diff --git a/gio/gioenums.h b/gio/gioenums.h index 6b8ab72..4461f83 100644 --- a/gio/gioenums.h +++ b/gio/gioenums.h @@ -328,9 +328,14 @@ typedef enum { * 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). + * and CREATED events). Deprecated since 2.44: use + * %G_FILE_MONITOR_WATCH_MOVES instead. * @G_FILE_MONITOR_WATCH_HARD_LINKS: Watch for changes to the file made * via another hard link. Since 2.36. + * @G_FILE_MONITOR_WATCH_MOVES: Watch for rename operations on a + * monitored directory. This causes %G_FILE_MONITOR_EVENT_RENAMED, + * %G_FILE_MONITOR_EVENT_MOVED_IN and %G_FILE_MONITOR_EVENT_MOVED_OUT + * events to be emitted when possible. Since: 2.44. * * Flags used to set what a #GFileMonitor will watch for. */ @@ -338,7 +343,8 @@ 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) + G_FILE_MONITOR_WATCH_HARD_LINKS = (1 << 2), + G_FILE_MONITOR_WATCH_MOVES = (1 << 3) } GFileMonitorFlags; @@ -393,7 +399,17 @@ typedef enum { * @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. + * @G_FILE_MONITOR_EVENT_MOVED: the file was moved -- only sent if the + * (deprecated) %G_FILE_MONITOR_SEND_MOVED flag is set + * @G_FILE_MONITOR_EVENT_RENAMED: the file was renamed within the + * current directory -- only sent if the %G_FILE_MONITOR_WATCH_MOVES + * flag is set. Since: 2.44. + * @G_FILE_MONITOR_EVENT_MOVED_IN: the file was moved into the + * monitored directory from another location -- only sent if the + * %G_FILE_MONITOR_WATCH_MOVES flag is set. Since: 2.44. + * @G_FILE_MONITOR_EVENT_MOVED_OUT: the file was moved out of the + * monitored directory to another location -- only sent if the + * %G_FILE_MONITOR_WATCH_MOVES flag is set. Since: 2.44 * * Specifies what type of event a monitor event is. **/ @@ -405,7 +421,10 @@ typedef enum { G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED, G_FILE_MONITOR_EVENT_PRE_UNMOUNT, G_FILE_MONITOR_EVENT_UNMOUNTED, - G_FILE_MONITOR_EVENT_MOVED + G_FILE_MONITOR_EVENT_MOVED, + G_FILE_MONITOR_EVENT_RENAMED, + G_FILE_MONITOR_EVENT_MOVED_IN, + G_FILE_MONITOR_EVENT_MOVED_OUT } GFileMonitorEvent; @@ -476,6 +495,7 @@ typedef enum { * returned %G_IO_ERROR_FAILED. Now they should all return the same * value, which has this more logical name. Since 2.44. * @G_IO_ERROR_NOT_CONNECTED: Transport endpoint is not connected. Since 2.44 + * @G_IO_ERROR_MESSAGE_TOO_LARGE: Message too large. Since 2.48. * * Error codes returned by GIO functions. * @@ -540,7 +560,8 @@ typedef enum { G_IO_ERROR_PROXY_NOT_ALLOWED, G_IO_ERROR_BROKEN_PIPE, G_IO_ERROR_CONNECTION_CLOSED = G_IO_ERROR_BROKEN_PIPE, - G_IO_ERROR_NOT_CONNECTED + G_IO_ERROR_NOT_CONNECTED, + G_IO_ERROR_MESSAGE_TOO_LARGE, } GIOErrorEnum; @@ -965,14 +986,14 @@ typedef enum * @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_DO_NOT_AUTO_START: If the proxy is for a well-known name, + * do not ask the bus to launch an owner during proxy initialization or a method call. + * This flag is only meaningful in proxies for well-known names. * @G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES: If set, the property value for any invalidated property will be (asynchronously) retrieved upon receiving the PropertiesChanged 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. * @G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION: If the proxy is for a well-known name, * do not ask the bus to launch an owner during proxy initialization, but allow it to be * autostarted by a method call. This flag is only meaningful in proxies for well-known names, - * and only if %G_DBUS_PROXY_FLAGS_DO_NOT_AUTOSTART is not also specified. + * and only if %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START is not also specified. * * Flags used when constructing an instance of a #GDBusProxy derived class. * @@ -1193,6 +1214,8 @@ typedef enum { * @G_DBUS_CALL_FLAGS_NO_AUTO_START: The bus must not launch * an owner for the destination name in response to this method * invocation. + * @G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION: the caller is prepared to + * wait for interactive authorization. Since 2.46. * * Flags used in g_dbus_connection_call() and similar APIs. * @@ -1200,7 +1223,8 @@ typedef enum { */ typedef enum { G_DBUS_CALL_FLAGS_NONE = 0, - G_DBUS_CALL_FLAGS_NO_AUTO_START = (1<<0) + G_DBUS_CALL_FLAGS_NO_AUTO_START = (1<<0), + G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION = (1<<1) } GDBusCallFlags; /* (1<<31) is reserved for internal use by GDBusConnection, do not use it. */ @@ -1230,6 +1254,9 @@ typedef enum { * @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. + * @G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION: If set on a method + * call, this flag means that the caller is prepared to wait for interactive + * authorization. Since 2.46. * * Message flags used in #GDBusMessage. * @@ -1238,7 +1265,8 @@ typedef enum { 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) + G_DBUS_MESSAGE_FLAGS_NO_AUTO_START = (1<<1), + G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION = (1<<2) } GDBusMessageFlags; /** @@ -1426,7 +1454,7 @@ typedef enum * 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 GIT_COMMITTER_NAME environment variable + * to use the `GIT_COMMITTER_NAME` 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(). @@ -1436,6 +1464,9 @@ typedef enum * owner of the application ID nor does it check if an existing * owner already exists. Everything occurs in the local process. * Since: 2.30. + * @G_APPLICATION_CAN_OVERRIDE_APP_ID: Allow users to override the + * application ID from the command line with `--gapplication-app-id`. + * Since: 2.48 * * Flags used to define the behaviour of a #GApplication. * @@ -1451,7 +1482,9 @@ typedef enum G_APPLICATION_HANDLES_COMMAND_LINE = (1 << 3), G_APPLICATION_SEND_ENVIRONMENT = (1 << 4), - G_APPLICATION_NON_UNIQUE = (1 << 5) + G_APPLICATION_NON_UNIQUE = (1 << 5), + + G_APPLICATION_CAN_OVERRIDE_APP_ID = (1 << 6) } GApplicationFlags; /** @@ -1732,6 +1765,29 @@ typedef enum { } GSocketClientEvent; /** + * GSocketListenerEvent: + * @G_SOCKET_LISTENER_BINDING: The listener is about to bind a socket. + * @G_SOCKET_LISTENER_BOUND: The listener has bound a socket. + * @G_SOCKET_LISTENER_LISTENING: The listener is about to start + * listening on this socket. + * @G_SOCKET_LISTENER_LISTENED: The listener is now listening on + * this socket. + * + * Describes an event occurring on a #GSocketListener. See the + * #GSocketListener::event signal for more details. + * + * Additional values may be added to this type in the future. + * + * Since: 2.46 + */ +typedef enum { + G_SOCKET_LISTENER_BINDING, + G_SOCKET_LISTENER_BOUND, + G_SOCKET_LISTENER_LISTENING, + G_SOCKET_LISTENER_LISTENED +} GSocketListenerEvent; + +/** * GTestDBusFlags: * @G_TEST_DBUS_NONE: No flags. * diff --git a/gio/gioenumtypes.c b/gio/gioenumtypes.c new file mode 100644 index 0000000..f2cb9f8 --- /dev/null +++ b/gio/gioenumtypes.c @@ -0,0 +1,1768 @@ + +/* Generated data (by glib-mkenums) */ + +#include "config.h" +#include "gioenumtypes.h" +#include + +/* enumerations from "gioenums.h" */ +GType +g_app_info_create_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_APP_INFO_CREATE_NONE, "G_APP_INFO_CREATE_NONE", "none" }, + { G_APP_INFO_CREATE_NEEDS_TERMINAL, "G_APP_INFO_CREATE_NEEDS_TERMINAL", "needs-terminal" }, + { G_APP_INFO_CREATE_SUPPORTS_URIS, "G_APP_INFO_CREATE_SUPPORTS_URIS", "supports-uris" }, + { G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION, "G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION", "supports-startup-notification" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GAppInfoCreateFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_converter_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_CONVERTER_NO_FLAGS, "G_CONVERTER_NO_FLAGS", "none" }, + { G_CONVERTER_INPUT_AT_END, "G_CONVERTER_INPUT_AT_END", "input-at-end" }, + { G_CONVERTER_FLUSH, "G_CONVERTER_FLUSH", "flush" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GConverterFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_converter_result_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_CONVERTER_ERROR, "G_CONVERTER_ERROR", "error" }, + { G_CONVERTER_CONVERTED, "G_CONVERTER_CONVERTED", "converted" }, + { G_CONVERTER_FINISHED, "G_CONVERTER_FINISHED", "finished" }, + { G_CONVERTER_FLUSHED, "G_CONVERTER_FLUSHED", "flushed" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GConverterResult"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_data_stream_byte_order_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN, "G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN", "big-endian" }, + { G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN, "G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN", "little-endian" }, + { G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN, "G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN", "host-endian" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GDataStreamByteOrder"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_data_stream_newline_type_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_DATA_STREAM_NEWLINE_TYPE_LF, "G_DATA_STREAM_NEWLINE_TYPE_LF", "lf" }, + { G_DATA_STREAM_NEWLINE_TYPE_CR, "G_DATA_STREAM_NEWLINE_TYPE_CR", "cr" }, + { G_DATA_STREAM_NEWLINE_TYPE_CR_LF, "G_DATA_STREAM_NEWLINE_TYPE_CR_LF", "cr-lf" }, + { G_DATA_STREAM_NEWLINE_TYPE_ANY, "G_DATA_STREAM_NEWLINE_TYPE_ANY", "any" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GDataStreamNewlineType"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_file_attribute_type_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_FILE_ATTRIBUTE_TYPE_INVALID, "G_FILE_ATTRIBUTE_TYPE_INVALID", "invalid" }, + { G_FILE_ATTRIBUTE_TYPE_STRING, "G_FILE_ATTRIBUTE_TYPE_STRING", "string" }, + { G_FILE_ATTRIBUTE_TYPE_BYTE_STRING, "G_FILE_ATTRIBUTE_TYPE_BYTE_STRING", "byte-string" }, + { G_FILE_ATTRIBUTE_TYPE_BOOLEAN, "G_FILE_ATTRIBUTE_TYPE_BOOLEAN", "boolean" }, + { G_FILE_ATTRIBUTE_TYPE_UINT32, "G_FILE_ATTRIBUTE_TYPE_UINT32", "uint32" }, + { G_FILE_ATTRIBUTE_TYPE_INT32, "G_FILE_ATTRIBUTE_TYPE_INT32", "int32" }, + { G_FILE_ATTRIBUTE_TYPE_UINT64, "G_FILE_ATTRIBUTE_TYPE_UINT64", "uint64" }, + { G_FILE_ATTRIBUTE_TYPE_INT64, "G_FILE_ATTRIBUTE_TYPE_INT64", "int64" }, + { G_FILE_ATTRIBUTE_TYPE_OBJECT, "G_FILE_ATTRIBUTE_TYPE_OBJECT", "object" }, + { G_FILE_ATTRIBUTE_TYPE_STRINGV, "G_FILE_ATTRIBUTE_TYPE_STRINGV", "stringv" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GFileAttributeType"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_file_attribute_info_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_FILE_ATTRIBUTE_INFO_NONE, "G_FILE_ATTRIBUTE_INFO_NONE", "none" }, + { G_FILE_ATTRIBUTE_INFO_COPY_WITH_FILE, "G_FILE_ATTRIBUTE_INFO_COPY_WITH_FILE", "copy-with-file" }, + { G_FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED, "G_FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED", "copy-when-moved" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GFileAttributeInfoFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_file_attribute_status_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_FILE_ATTRIBUTE_STATUS_UNSET, "G_FILE_ATTRIBUTE_STATUS_UNSET", "unset" }, + { G_FILE_ATTRIBUTE_STATUS_SET, "G_FILE_ATTRIBUTE_STATUS_SET", "set" }, + { G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING, "G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING", "error-setting" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GFileAttributeStatus"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_file_query_info_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_FILE_QUERY_INFO_NONE, "G_FILE_QUERY_INFO_NONE", "none" }, + { G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, "G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS", "nofollow-symlinks" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GFileQueryInfoFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_file_create_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_FILE_CREATE_NONE, "G_FILE_CREATE_NONE", "none" }, + { G_FILE_CREATE_PRIVATE, "G_FILE_CREATE_PRIVATE", "private" }, + { G_FILE_CREATE_REPLACE_DESTINATION, "G_FILE_CREATE_REPLACE_DESTINATION", "replace-destination" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GFileCreateFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_file_measure_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_FILE_MEASURE_NONE, "G_FILE_MEASURE_NONE", "none" }, + { G_FILE_MEASURE_REPORT_ANY_ERROR, "G_FILE_MEASURE_REPORT_ANY_ERROR", "report-any-error" }, + { G_FILE_MEASURE_APPARENT_SIZE, "G_FILE_MEASURE_APPARENT_SIZE", "apparent-size" }, + { G_FILE_MEASURE_NO_XDEV, "G_FILE_MEASURE_NO_XDEV", "no-xdev" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GFileMeasureFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_mount_mount_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_MOUNT_MOUNT_NONE, "G_MOUNT_MOUNT_NONE", "none" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GMountMountFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_mount_unmount_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_MOUNT_UNMOUNT_NONE, "G_MOUNT_UNMOUNT_NONE", "none" }, + { G_MOUNT_UNMOUNT_FORCE, "G_MOUNT_UNMOUNT_FORCE", "force" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GMountUnmountFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_drive_start_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_DRIVE_START_NONE, "G_DRIVE_START_NONE", "none" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GDriveStartFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_drive_start_stop_type_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_DRIVE_START_STOP_TYPE_UNKNOWN, "G_DRIVE_START_STOP_TYPE_UNKNOWN", "unknown" }, + { G_DRIVE_START_STOP_TYPE_SHUTDOWN, "G_DRIVE_START_STOP_TYPE_SHUTDOWN", "shutdown" }, + { G_DRIVE_START_STOP_TYPE_NETWORK, "G_DRIVE_START_STOP_TYPE_NETWORK", "network" }, + { G_DRIVE_START_STOP_TYPE_MULTIDISK, "G_DRIVE_START_STOP_TYPE_MULTIDISK", "multidisk" }, + { G_DRIVE_START_STOP_TYPE_PASSWORD, "G_DRIVE_START_STOP_TYPE_PASSWORD", "password" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GDriveStartStopType"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_file_copy_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_FILE_COPY_NONE, "G_FILE_COPY_NONE", "none" }, + { G_FILE_COPY_OVERWRITE, "G_FILE_COPY_OVERWRITE", "overwrite" }, + { G_FILE_COPY_BACKUP, "G_FILE_COPY_BACKUP", "backup" }, + { G_FILE_COPY_NOFOLLOW_SYMLINKS, "G_FILE_COPY_NOFOLLOW_SYMLINKS", "nofollow-symlinks" }, + { G_FILE_COPY_ALL_METADATA, "G_FILE_COPY_ALL_METADATA", "all-metadata" }, + { G_FILE_COPY_NO_FALLBACK_FOR_MOVE, "G_FILE_COPY_NO_FALLBACK_FOR_MOVE", "no-fallback-for-move" }, + { G_FILE_COPY_TARGET_DEFAULT_PERMS, "G_FILE_COPY_TARGET_DEFAULT_PERMS", "target-default-perms" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GFileCopyFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_file_monitor_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_FILE_MONITOR_NONE, "G_FILE_MONITOR_NONE", "none" }, + { G_FILE_MONITOR_WATCH_MOUNTS, "G_FILE_MONITOR_WATCH_MOUNTS", "watch-mounts" }, + { G_FILE_MONITOR_SEND_MOVED, "G_FILE_MONITOR_SEND_MOVED", "send-moved" }, + { G_FILE_MONITOR_WATCH_HARD_LINKS, "G_FILE_MONITOR_WATCH_HARD_LINKS", "watch-hard-links" }, + { G_FILE_MONITOR_WATCH_MOVES, "G_FILE_MONITOR_WATCH_MOVES", "watch-moves" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GFileMonitorFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_file_type_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_FILE_TYPE_UNKNOWN, "G_FILE_TYPE_UNKNOWN", "unknown" }, + { G_FILE_TYPE_REGULAR, "G_FILE_TYPE_REGULAR", "regular" }, + { G_FILE_TYPE_DIRECTORY, "G_FILE_TYPE_DIRECTORY", "directory" }, + { G_FILE_TYPE_SYMBOLIC_LINK, "G_FILE_TYPE_SYMBOLIC_LINK", "symbolic-link" }, + { G_FILE_TYPE_SPECIAL, "G_FILE_TYPE_SPECIAL", "special" }, + { G_FILE_TYPE_SHORTCUT, "G_FILE_TYPE_SHORTCUT", "shortcut" }, + { G_FILE_TYPE_MOUNTABLE, "G_FILE_TYPE_MOUNTABLE", "mountable" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GFileType"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_filesystem_preview_type_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS, "G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS", "if-always" }, + { G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL, "G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL", "if-local" }, + { G_FILESYSTEM_PREVIEW_TYPE_NEVER, "G_FILESYSTEM_PREVIEW_TYPE_NEVER", "never" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GFilesystemPreviewType"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_file_monitor_event_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_FILE_MONITOR_EVENT_CHANGED, "G_FILE_MONITOR_EVENT_CHANGED", "changed" }, + { G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT, "G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT", "changes-done-hint" }, + { G_FILE_MONITOR_EVENT_DELETED, "G_FILE_MONITOR_EVENT_DELETED", "deleted" }, + { G_FILE_MONITOR_EVENT_CREATED, "G_FILE_MONITOR_EVENT_CREATED", "created" }, + { G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED, "G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED", "attribute-changed" }, + { G_FILE_MONITOR_EVENT_PRE_UNMOUNT, "G_FILE_MONITOR_EVENT_PRE_UNMOUNT", "pre-unmount" }, + { G_FILE_MONITOR_EVENT_UNMOUNTED, "G_FILE_MONITOR_EVENT_UNMOUNTED", "unmounted" }, + { G_FILE_MONITOR_EVENT_MOVED, "G_FILE_MONITOR_EVENT_MOVED", "moved" }, + { G_FILE_MONITOR_EVENT_RENAMED, "G_FILE_MONITOR_EVENT_RENAMED", "renamed" }, + { G_FILE_MONITOR_EVENT_MOVED_IN, "G_FILE_MONITOR_EVENT_MOVED_IN", "moved-in" }, + { G_FILE_MONITOR_EVENT_MOVED_OUT, "G_FILE_MONITOR_EVENT_MOVED_OUT", "moved-out" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GFileMonitorEvent"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_io_error_enum_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_IO_ERROR_FAILED, "G_IO_ERROR_FAILED", "failed" }, + { G_IO_ERROR_NOT_FOUND, "G_IO_ERROR_NOT_FOUND", "not-found" }, + { G_IO_ERROR_EXISTS, "G_IO_ERROR_EXISTS", "exists" }, + { G_IO_ERROR_IS_DIRECTORY, "G_IO_ERROR_IS_DIRECTORY", "is-directory" }, + { G_IO_ERROR_NOT_DIRECTORY, "G_IO_ERROR_NOT_DIRECTORY", "not-directory" }, + { G_IO_ERROR_NOT_EMPTY, "G_IO_ERROR_NOT_EMPTY", "not-empty" }, + { G_IO_ERROR_NOT_REGULAR_FILE, "G_IO_ERROR_NOT_REGULAR_FILE", "not-regular-file" }, + { G_IO_ERROR_NOT_SYMBOLIC_LINK, "G_IO_ERROR_NOT_SYMBOLIC_LINK", "not-symbolic-link" }, + { G_IO_ERROR_NOT_MOUNTABLE_FILE, "G_IO_ERROR_NOT_MOUNTABLE_FILE", "not-mountable-file" }, + { G_IO_ERROR_FILENAME_TOO_LONG, "G_IO_ERROR_FILENAME_TOO_LONG", "filename-too-long" }, + { G_IO_ERROR_INVALID_FILENAME, "G_IO_ERROR_INVALID_FILENAME", "invalid-filename" }, + { G_IO_ERROR_TOO_MANY_LINKS, "G_IO_ERROR_TOO_MANY_LINKS", "too-many-links" }, + { G_IO_ERROR_NO_SPACE, "G_IO_ERROR_NO_SPACE", "no-space" }, + { G_IO_ERROR_INVALID_ARGUMENT, "G_IO_ERROR_INVALID_ARGUMENT", "invalid-argument" }, + { G_IO_ERROR_PERMISSION_DENIED, "G_IO_ERROR_PERMISSION_DENIED", "permission-denied" }, + { G_IO_ERROR_NOT_SUPPORTED, "G_IO_ERROR_NOT_SUPPORTED", "not-supported" }, + { G_IO_ERROR_NOT_MOUNTED, "G_IO_ERROR_NOT_MOUNTED", "not-mounted" }, + { G_IO_ERROR_ALREADY_MOUNTED, "G_IO_ERROR_ALREADY_MOUNTED", "already-mounted" }, + { G_IO_ERROR_CLOSED, "G_IO_ERROR_CLOSED", "closed" }, + { G_IO_ERROR_CANCELLED, "G_IO_ERROR_CANCELLED", "cancelled" }, + { G_IO_ERROR_PENDING, "G_IO_ERROR_PENDING", "pending" }, + { G_IO_ERROR_READ_ONLY, "G_IO_ERROR_READ_ONLY", "read-only" }, + { G_IO_ERROR_CANT_CREATE_BACKUP, "G_IO_ERROR_CANT_CREATE_BACKUP", "cant-create-backup" }, + { G_IO_ERROR_WRONG_ETAG, "G_IO_ERROR_WRONG_ETAG", "wrong-etag" }, + { G_IO_ERROR_TIMED_OUT, "G_IO_ERROR_TIMED_OUT", "timed-out" }, + { G_IO_ERROR_WOULD_RECURSE, "G_IO_ERROR_WOULD_RECURSE", "would-recurse" }, + { G_IO_ERROR_BUSY, "G_IO_ERROR_BUSY", "busy" }, + { G_IO_ERROR_WOULD_BLOCK, "G_IO_ERROR_WOULD_BLOCK", "would-block" }, + { G_IO_ERROR_HOST_NOT_FOUND, "G_IO_ERROR_HOST_NOT_FOUND", "host-not-found" }, + { G_IO_ERROR_WOULD_MERGE, "G_IO_ERROR_WOULD_MERGE", "would-merge" }, + { G_IO_ERROR_FAILED_HANDLED, "G_IO_ERROR_FAILED_HANDLED", "failed-handled" }, + { G_IO_ERROR_TOO_MANY_OPEN_FILES, "G_IO_ERROR_TOO_MANY_OPEN_FILES", "too-many-open-files" }, + { G_IO_ERROR_NOT_INITIALIZED, "G_IO_ERROR_NOT_INITIALIZED", "not-initialized" }, + { G_IO_ERROR_ADDRESS_IN_USE, "G_IO_ERROR_ADDRESS_IN_USE", "address-in-use" }, + { G_IO_ERROR_PARTIAL_INPUT, "G_IO_ERROR_PARTIAL_INPUT", "partial-input" }, + { G_IO_ERROR_INVALID_DATA, "G_IO_ERROR_INVALID_DATA", "invalid-data" }, + { G_IO_ERROR_DBUS_ERROR, "G_IO_ERROR_DBUS_ERROR", "dbus-error" }, + { G_IO_ERROR_HOST_UNREACHABLE, "G_IO_ERROR_HOST_UNREACHABLE", "host-unreachable" }, + { G_IO_ERROR_NETWORK_UNREACHABLE, "G_IO_ERROR_NETWORK_UNREACHABLE", "network-unreachable" }, + { G_IO_ERROR_CONNECTION_REFUSED, "G_IO_ERROR_CONNECTION_REFUSED", "connection-refused" }, + { G_IO_ERROR_PROXY_FAILED, "G_IO_ERROR_PROXY_FAILED", "proxy-failed" }, + { G_IO_ERROR_PROXY_AUTH_FAILED, "G_IO_ERROR_PROXY_AUTH_FAILED", "proxy-auth-failed" }, + { G_IO_ERROR_PROXY_NEED_AUTH, "G_IO_ERROR_PROXY_NEED_AUTH", "proxy-need-auth" }, + { G_IO_ERROR_PROXY_NOT_ALLOWED, "G_IO_ERROR_PROXY_NOT_ALLOWED", "proxy-not-allowed" }, + { G_IO_ERROR_BROKEN_PIPE, "G_IO_ERROR_BROKEN_PIPE", "broken-pipe" }, + { G_IO_ERROR_CONNECTION_CLOSED, "G_IO_ERROR_CONNECTION_CLOSED", "connection-closed" }, + { G_IO_ERROR_NOT_CONNECTED, "G_IO_ERROR_NOT_CONNECTED", "not-connected" }, + { G_IO_ERROR_MESSAGE_TOO_LARGE, "G_IO_ERROR_MESSAGE_TOO_LARGE", "message-too-large" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GIOErrorEnum"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_ask_password_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_ASK_PASSWORD_NEED_PASSWORD, "G_ASK_PASSWORD_NEED_PASSWORD", "need-password" }, + { G_ASK_PASSWORD_NEED_USERNAME, "G_ASK_PASSWORD_NEED_USERNAME", "need-username" }, + { G_ASK_PASSWORD_NEED_DOMAIN, "G_ASK_PASSWORD_NEED_DOMAIN", "need-domain" }, + { G_ASK_PASSWORD_SAVING_SUPPORTED, "G_ASK_PASSWORD_SAVING_SUPPORTED", "saving-supported" }, + { G_ASK_PASSWORD_ANONYMOUS_SUPPORTED, "G_ASK_PASSWORD_ANONYMOUS_SUPPORTED", "anonymous-supported" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GAskPasswordFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_password_save_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_PASSWORD_SAVE_NEVER, "G_PASSWORD_SAVE_NEVER", "never" }, + { G_PASSWORD_SAVE_FOR_SESSION, "G_PASSWORD_SAVE_FOR_SESSION", "for-session" }, + { G_PASSWORD_SAVE_PERMANENTLY, "G_PASSWORD_SAVE_PERMANENTLY", "permanently" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GPasswordSave"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_mount_operation_result_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_MOUNT_OPERATION_HANDLED, "G_MOUNT_OPERATION_HANDLED", "handled" }, + { G_MOUNT_OPERATION_ABORTED, "G_MOUNT_OPERATION_ABORTED", "aborted" }, + { G_MOUNT_OPERATION_UNHANDLED, "G_MOUNT_OPERATION_UNHANDLED", "unhandled" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GMountOperationResult"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_output_stream_splice_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_OUTPUT_STREAM_SPLICE_NONE, "G_OUTPUT_STREAM_SPLICE_NONE", "none" }, + { G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE, "G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE", "close-source" }, + { G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET, "G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET", "close-target" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GOutputStreamSpliceFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_io_stream_splice_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_IO_STREAM_SPLICE_NONE, "G_IO_STREAM_SPLICE_NONE", "none" }, + { G_IO_STREAM_SPLICE_CLOSE_STREAM1, "G_IO_STREAM_SPLICE_CLOSE_STREAM1", "close-stream1" }, + { G_IO_STREAM_SPLICE_CLOSE_STREAM2, "G_IO_STREAM_SPLICE_CLOSE_STREAM2", "close-stream2" }, + { G_IO_STREAM_SPLICE_WAIT_FOR_BOTH, "G_IO_STREAM_SPLICE_WAIT_FOR_BOTH", "wait-for-both" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GIOStreamSpliceFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_emblem_origin_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_EMBLEM_ORIGIN_UNKNOWN, "G_EMBLEM_ORIGIN_UNKNOWN", "unknown" }, + { G_EMBLEM_ORIGIN_DEVICE, "G_EMBLEM_ORIGIN_DEVICE", "device" }, + { G_EMBLEM_ORIGIN_LIVEMETADATA, "G_EMBLEM_ORIGIN_LIVEMETADATA", "livemetadata" }, + { G_EMBLEM_ORIGIN_TAG, "G_EMBLEM_ORIGIN_TAG", "tag" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GEmblemOrigin"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_resolver_error_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_RESOLVER_ERROR_NOT_FOUND, "G_RESOLVER_ERROR_NOT_FOUND", "not-found" }, + { G_RESOLVER_ERROR_TEMPORARY_FAILURE, "G_RESOLVER_ERROR_TEMPORARY_FAILURE", "temporary-failure" }, + { G_RESOLVER_ERROR_INTERNAL, "G_RESOLVER_ERROR_INTERNAL", "internal" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GResolverError"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_resolver_record_type_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_RESOLVER_RECORD_SRV, "G_RESOLVER_RECORD_SRV", "srv" }, + { G_RESOLVER_RECORD_MX, "G_RESOLVER_RECORD_MX", "mx" }, + { G_RESOLVER_RECORD_TXT, "G_RESOLVER_RECORD_TXT", "txt" }, + { G_RESOLVER_RECORD_SOA, "G_RESOLVER_RECORD_SOA", "soa" }, + { G_RESOLVER_RECORD_NS, "G_RESOLVER_RECORD_NS", "ns" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GResolverRecordType"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_resource_error_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_RESOURCE_ERROR_NOT_FOUND, "G_RESOURCE_ERROR_NOT_FOUND", "not-found" }, + { G_RESOURCE_ERROR_INTERNAL, "G_RESOURCE_ERROR_INTERNAL", "internal" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GResourceError"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_resource_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_RESOURCE_FLAGS_NONE, "G_RESOURCE_FLAGS_NONE", "none" }, + { G_RESOURCE_FLAGS_COMPRESSED, "G_RESOURCE_FLAGS_COMPRESSED", "compressed" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GResourceFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_resource_lookup_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_RESOURCE_LOOKUP_FLAGS_NONE, "G_RESOURCE_LOOKUP_FLAGS_NONE", "none" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GResourceLookupFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_socket_family_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_SOCKET_FAMILY_INVALID, "G_SOCKET_FAMILY_INVALID", "invalid" }, + { G_SOCKET_FAMILY_UNIX, "G_SOCKET_FAMILY_UNIX", "unix" }, + { G_SOCKET_FAMILY_IPV4, "G_SOCKET_FAMILY_IPV4", "ipv4" }, + { G_SOCKET_FAMILY_IPV6, "G_SOCKET_FAMILY_IPV6", "ipv6" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GSocketFamily"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_socket_type_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_SOCKET_TYPE_INVALID, "G_SOCKET_TYPE_INVALID", "invalid" }, + { G_SOCKET_TYPE_STREAM, "G_SOCKET_TYPE_STREAM", "stream" }, + { G_SOCKET_TYPE_DATAGRAM, "G_SOCKET_TYPE_DATAGRAM", "datagram" }, + { G_SOCKET_TYPE_SEQPACKET, "G_SOCKET_TYPE_SEQPACKET", "seqpacket" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GSocketType"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_socket_msg_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_SOCKET_MSG_NONE, "G_SOCKET_MSG_NONE", "none" }, + { G_SOCKET_MSG_OOB, "G_SOCKET_MSG_OOB", "oob" }, + { G_SOCKET_MSG_PEEK, "G_SOCKET_MSG_PEEK", "peek" }, + { G_SOCKET_MSG_DONTROUTE, "G_SOCKET_MSG_DONTROUTE", "dontroute" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GSocketMsgFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_socket_protocol_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_SOCKET_PROTOCOL_UNKNOWN, "G_SOCKET_PROTOCOL_UNKNOWN", "unknown" }, + { G_SOCKET_PROTOCOL_DEFAULT, "G_SOCKET_PROTOCOL_DEFAULT", "default" }, + { G_SOCKET_PROTOCOL_TCP, "G_SOCKET_PROTOCOL_TCP", "tcp" }, + { G_SOCKET_PROTOCOL_UDP, "G_SOCKET_PROTOCOL_UDP", "udp" }, + { G_SOCKET_PROTOCOL_SCTP, "G_SOCKET_PROTOCOL_SCTP", "sctp" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GSocketProtocol"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_zlib_compressor_format_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_ZLIB_COMPRESSOR_FORMAT_ZLIB, "G_ZLIB_COMPRESSOR_FORMAT_ZLIB", "zlib" }, + { G_ZLIB_COMPRESSOR_FORMAT_GZIP, "G_ZLIB_COMPRESSOR_FORMAT_GZIP", "gzip" }, + { G_ZLIB_COMPRESSOR_FORMAT_RAW, "G_ZLIB_COMPRESSOR_FORMAT_RAW", "raw" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GZlibCompressorFormat"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_unix_socket_address_type_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_UNIX_SOCKET_ADDRESS_INVALID, "G_UNIX_SOCKET_ADDRESS_INVALID", "invalid" }, + { G_UNIX_SOCKET_ADDRESS_ANONYMOUS, "G_UNIX_SOCKET_ADDRESS_ANONYMOUS", "anonymous" }, + { G_UNIX_SOCKET_ADDRESS_PATH, "G_UNIX_SOCKET_ADDRESS_PATH", "path" }, + { G_UNIX_SOCKET_ADDRESS_ABSTRACT, "G_UNIX_SOCKET_ADDRESS_ABSTRACT", "abstract" }, + { G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED, "G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED", "abstract-padded" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GUnixSocketAddressType"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_bus_type_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_BUS_TYPE_STARTER, "G_BUS_TYPE_STARTER", "starter" }, + { G_BUS_TYPE_NONE, "G_BUS_TYPE_NONE", "none" }, + { G_BUS_TYPE_SYSTEM, "G_BUS_TYPE_SYSTEM", "system" }, + { G_BUS_TYPE_SESSION, "G_BUS_TYPE_SESSION", "session" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GBusType"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_bus_name_owner_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_BUS_NAME_OWNER_FLAGS_NONE, "G_BUS_NAME_OWNER_FLAGS_NONE", "none" }, + { G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT, "G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT", "allow-replacement" }, + { G_BUS_NAME_OWNER_FLAGS_REPLACE, "G_BUS_NAME_OWNER_FLAGS_REPLACE", "replace" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GBusNameOwnerFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_bus_name_watcher_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_BUS_NAME_WATCHER_FLAGS_NONE, "G_BUS_NAME_WATCHER_FLAGS_NONE", "none" }, + { G_BUS_NAME_WATCHER_FLAGS_AUTO_START, "G_BUS_NAME_WATCHER_FLAGS_AUTO_START", "auto-start" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GBusNameWatcherFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_proxy_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_DBUS_PROXY_FLAGS_NONE, "G_DBUS_PROXY_FLAGS_NONE", "none" }, + { G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, "G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES", "do-not-load-properties" }, + { G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS, "G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS", "do-not-connect-signals" }, + { G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START, "G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START", "do-not-auto-start" }, + { G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES, "G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES", "get-invalidated-properties" }, + { G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION, "G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION", "do-not-auto-start-at-construction" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GDBusProxyFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_error_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_DBUS_ERROR_FAILED, "G_DBUS_ERROR_FAILED", "failed" }, + { G_DBUS_ERROR_NO_MEMORY, "G_DBUS_ERROR_NO_MEMORY", "no-memory" }, + { G_DBUS_ERROR_SERVICE_UNKNOWN, "G_DBUS_ERROR_SERVICE_UNKNOWN", "service-unknown" }, + { G_DBUS_ERROR_NAME_HAS_NO_OWNER, "G_DBUS_ERROR_NAME_HAS_NO_OWNER", "name-has-no-owner" }, + { G_DBUS_ERROR_NO_REPLY, "G_DBUS_ERROR_NO_REPLY", "no-reply" }, + { G_DBUS_ERROR_IO_ERROR, "G_DBUS_ERROR_IO_ERROR", "io-error" }, + { G_DBUS_ERROR_BAD_ADDRESS, "G_DBUS_ERROR_BAD_ADDRESS", "bad-address" }, + { G_DBUS_ERROR_NOT_SUPPORTED, "G_DBUS_ERROR_NOT_SUPPORTED", "not-supported" }, + { G_DBUS_ERROR_LIMITS_EXCEEDED, "G_DBUS_ERROR_LIMITS_EXCEEDED", "limits-exceeded" }, + { G_DBUS_ERROR_ACCESS_DENIED, "G_DBUS_ERROR_ACCESS_DENIED", "access-denied" }, + { G_DBUS_ERROR_AUTH_FAILED, "G_DBUS_ERROR_AUTH_FAILED", "auth-failed" }, + { G_DBUS_ERROR_NO_SERVER, "G_DBUS_ERROR_NO_SERVER", "no-server" }, + { G_DBUS_ERROR_TIMEOUT, "G_DBUS_ERROR_TIMEOUT", "timeout" }, + { G_DBUS_ERROR_NO_NETWORK, "G_DBUS_ERROR_NO_NETWORK", "no-network" }, + { G_DBUS_ERROR_ADDRESS_IN_USE, "G_DBUS_ERROR_ADDRESS_IN_USE", "address-in-use" }, + { G_DBUS_ERROR_DISCONNECTED, "G_DBUS_ERROR_DISCONNECTED", "disconnected" }, + { G_DBUS_ERROR_INVALID_ARGS, "G_DBUS_ERROR_INVALID_ARGS", "invalid-args" }, + { G_DBUS_ERROR_FILE_NOT_FOUND, "G_DBUS_ERROR_FILE_NOT_FOUND", "file-not-found" }, + { G_DBUS_ERROR_FILE_EXISTS, "G_DBUS_ERROR_FILE_EXISTS", "file-exists" }, + { G_DBUS_ERROR_UNKNOWN_METHOD, "G_DBUS_ERROR_UNKNOWN_METHOD", "unknown-method" }, + { G_DBUS_ERROR_TIMED_OUT, "G_DBUS_ERROR_TIMED_OUT", "timed-out" }, + { G_DBUS_ERROR_MATCH_RULE_NOT_FOUND, "G_DBUS_ERROR_MATCH_RULE_NOT_FOUND", "match-rule-not-found" }, + { G_DBUS_ERROR_MATCH_RULE_INVALID, "G_DBUS_ERROR_MATCH_RULE_INVALID", "match-rule-invalid" }, + { G_DBUS_ERROR_SPAWN_EXEC_FAILED, "G_DBUS_ERROR_SPAWN_EXEC_FAILED", "spawn-exec-failed" }, + { G_DBUS_ERROR_SPAWN_FORK_FAILED, "G_DBUS_ERROR_SPAWN_FORK_FAILED", "spawn-fork-failed" }, + { G_DBUS_ERROR_SPAWN_CHILD_EXITED, "G_DBUS_ERROR_SPAWN_CHILD_EXITED", "spawn-child-exited" }, + { G_DBUS_ERROR_SPAWN_CHILD_SIGNALED, "G_DBUS_ERROR_SPAWN_CHILD_SIGNALED", "spawn-child-signaled" }, + { G_DBUS_ERROR_SPAWN_FAILED, "G_DBUS_ERROR_SPAWN_FAILED", "spawn-failed" }, + { G_DBUS_ERROR_SPAWN_SETUP_FAILED, "G_DBUS_ERROR_SPAWN_SETUP_FAILED", "spawn-setup-failed" }, + { G_DBUS_ERROR_SPAWN_CONFIG_INVALID, "G_DBUS_ERROR_SPAWN_CONFIG_INVALID", "spawn-config-invalid" }, + { G_DBUS_ERROR_SPAWN_SERVICE_INVALID, "G_DBUS_ERROR_SPAWN_SERVICE_INVALID", "spawn-service-invalid" }, + { G_DBUS_ERROR_SPAWN_SERVICE_NOT_FOUND, "G_DBUS_ERROR_SPAWN_SERVICE_NOT_FOUND", "spawn-service-not-found" }, + { G_DBUS_ERROR_SPAWN_PERMISSIONS_INVALID, "G_DBUS_ERROR_SPAWN_PERMISSIONS_INVALID", "spawn-permissions-invalid" }, + { G_DBUS_ERROR_SPAWN_FILE_INVALID, "G_DBUS_ERROR_SPAWN_FILE_INVALID", "spawn-file-invalid" }, + { G_DBUS_ERROR_SPAWN_NO_MEMORY, "G_DBUS_ERROR_SPAWN_NO_MEMORY", "spawn-no-memory" }, + { G_DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN, "G_DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN", "unix-process-id-unknown" }, + { G_DBUS_ERROR_INVALID_SIGNATURE, "G_DBUS_ERROR_INVALID_SIGNATURE", "invalid-signature" }, + { G_DBUS_ERROR_INVALID_FILE_CONTENT, "G_DBUS_ERROR_INVALID_FILE_CONTENT", "invalid-file-content" }, + { G_DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN, "G_DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN", "selinux-security-context-unknown" }, + { G_DBUS_ERROR_ADT_AUDIT_DATA_UNKNOWN, "G_DBUS_ERROR_ADT_AUDIT_DATA_UNKNOWN", "adt-audit-data-unknown" }, + { G_DBUS_ERROR_OBJECT_PATH_IN_USE, "G_DBUS_ERROR_OBJECT_PATH_IN_USE", "object-path-in-use" }, + { G_DBUS_ERROR_UNKNOWN_OBJECT, "G_DBUS_ERROR_UNKNOWN_OBJECT", "unknown-object" }, + { G_DBUS_ERROR_UNKNOWN_INTERFACE, "G_DBUS_ERROR_UNKNOWN_INTERFACE", "unknown-interface" }, + { G_DBUS_ERROR_UNKNOWN_PROPERTY, "G_DBUS_ERROR_UNKNOWN_PROPERTY", "unknown-property" }, + { G_DBUS_ERROR_PROPERTY_READ_ONLY, "G_DBUS_ERROR_PROPERTY_READ_ONLY", "property-read-only" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GDBusError"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_connection_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_DBUS_CONNECTION_FLAGS_NONE, "G_DBUS_CONNECTION_FLAGS_NONE", "none" }, + { G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT, "G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT", "authentication-client" }, + { G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER, "G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER", "authentication-server" }, + { G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS, "G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS", "authentication-allow-anonymous" }, + { G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION, "G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION", "message-bus-connection" }, + { G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING, "G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING", "delay-message-processing" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GDBusConnectionFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_capability_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_DBUS_CAPABILITY_FLAGS_NONE, "G_DBUS_CAPABILITY_FLAGS_NONE", "none" }, + { G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING, "G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING", "unix-fd-passing" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GDBusCapabilityFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_call_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_DBUS_CALL_FLAGS_NONE, "G_DBUS_CALL_FLAGS_NONE", "none" }, + { G_DBUS_CALL_FLAGS_NO_AUTO_START, "G_DBUS_CALL_FLAGS_NO_AUTO_START", "no-auto-start" }, + { G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION, "G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION", "allow-interactive-authorization" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GDBusCallFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_message_type_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_DBUS_MESSAGE_TYPE_INVALID, "G_DBUS_MESSAGE_TYPE_INVALID", "invalid" }, + { G_DBUS_MESSAGE_TYPE_METHOD_CALL, "G_DBUS_MESSAGE_TYPE_METHOD_CALL", "method-call" }, + { G_DBUS_MESSAGE_TYPE_METHOD_RETURN, "G_DBUS_MESSAGE_TYPE_METHOD_RETURN", "method-return" }, + { G_DBUS_MESSAGE_TYPE_ERROR, "G_DBUS_MESSAGE_TYPE_ERROR", "error" }, + { G_DBUS_MESSAGE_TYPE_SIGNAL, "G_DBUS_MESSAGE_TYPE_SIGNAL", "signal" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GDBusMessageType"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_message_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_DBUS_MESSAGE_FLAGS_NONE, "G_DBUS_MESSAGE_FLAGS_NONE", "none" }, + { G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED, "G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED", "no-reply-expected" }, + { G_DBUS_MESSAGE_FLAGS_NO_AUTO_START, "G_DBUS_MESSAGE_FLAGS_NO_AUTO_START", "no-auto-start" }, + { G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION, "G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION", "allow-interactive-authorization" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GDBusMessageFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_message_header_field_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_DBUS_MESSAGE_HEADER_FIELD_INVALID, "G_DBUS_MESSAGE_HEADER_FIELD_INVALID", "invalid" }, + { G_DBUS_MESSAGE_HEADER_FIELD_PATH, "G_DBUS_MESSAGE_HEADER_FIELD_PATH", "path" }, + { G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE, "G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE", "interface" }, + { G_DBUS_MESSAGE_HEADER_FIELD_MEMBER, "G_DBUS_MESSAGE_HEADER_FIELD_MEMBER", "member" }, + { G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME, "G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME", "error-name" }, + { G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL, "G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL", "reply-serial" }, + { G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION, "G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION", "destination" }, + { G_DBUS_MESSAGE_HEADER_FIELD_SENDER, "G_DBUS_MESSAGE_HEADER_FIELD_SENDER", "sender" }, + { G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE, "G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE", "signature" }, + { G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS, "G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS", "num-unix-fds" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GDBusMessageHeaderField"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_property_info_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_DBUS_PROPERTY_INFO_FLAGS_NONE, "G_DBUS_PROPERTY_INFO_FLAGS_NONE", "none" }, + { G_DBUS_PROPERTY_INFO_FLAGS_READABLE, "G_DBUS_PROPERTY_INFO_FLAGS_READABLE", "readable" }, + { G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE, "G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE", "writable" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GDBusPropertyInfoFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_subtree_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_DBUS_SUBTREE_FLAGS_NONE, "G_DBUS_SUBTREE_FLAGS_NONE", "none" }, + { G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES, "G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES", "dispatch-to-unenumerated-nodes" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GDBusSubtreeFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_server_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_DBUS_SERVER_FLAGS_NONE, "G_DBUS_SERVER_FLAGS_NONE", "none" }, + { G_DBUS_SERVER_FLAGS_RUN_IN_THREAD, "G_DBUS_SERVER_FLAGS_RUN_IN_THREAD", "run-in-thread" }, + { G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS, "G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS", "authentication-allow-anonymous" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GDBusServerFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_signal_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_DBUS_SIGNAL_FLAGS_NONE, "G_DBUS_SIGNAL_FLAGS_NONE", "none" }, + { G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE, "G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE", "no-match-rule" }, + { G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_NAMESPACE, "G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_NAMESPACE", "match-arg0-namespace" }, + { G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_PATH, "G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_PATH", "match-arg0-path" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GDBusSignalFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_send_message_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_DBUS_SEND_MESSAGE_FLAGS_NONE, "G_DBUS_SEND_MESSAGE_FLAGS_NONE", "none" }, + { G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL, "G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL", "preserve-serial" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GDBusSendMessageFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_credentials_type_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_CREDENTIALS_TYPE_INVALID, "G_CREDENTIALS_TYPE_INVALID", "invalid" }, + { G_CREDENTIALS_TYPE_LINUX_UCRED, "G_CREDENTIALS_TYPE_LINUX_UCRED", "linux-ucred" }, + { G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED, "G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED", "freebsd-cmsgcred" }, + { G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED, "G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED", "openbsd-sockpeercred" }, + { G_CREDENTIALS_TYPE_SOLARIS_UCRED, "G_CREDENTIALS_TYPE_SOLARIS_UCRED", "solaris-ucred" }, + { G_CREDENTIALS_TYPE_NETBSD_UNPCBID, "G_CREDENTIALS_TYPE_NETBSD_UNPCBID", "netbsd-unpcbid" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GCredentialsType"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_message_byte_order_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_DBUS_MESSAGE_BYTE_ORDER_BIG_ENDIAN, "G_DBUS_MESSAGE_BYTE_ORDER_BIG_ENDIAN", "big-endian" }, + { G_DBUS_MESSAGE_BYTE_ORDER_LITTLE_ENDIAN, "G_DBUS_MESSAGE_BYTE_ORDER_LITTLE_ENDIAN", "little-endian" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GDBusMessageByteOrder"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_application_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_APPLICATION_FLAGS_NONE, "G_APPLICATION_FLAGS_NONE", "flags-none" }, + { G_APPLICATION_IS_SERVICE, "G_APPLICATION_IS_SERVICE", "is-service" }, + { G_APPLICATION_IS_LAUNCHER, "G_APPLICATION_IS_LAUNCHER", "is-launcher" }, + { G_APPLICATION_HANDLES_OPEN, "G_APPLICATION_HANDLES_OPEN", "handles-open" }, + { G_APPLICATION_HANDLES_COMMAND_LINE, "G_APPLICATION_HANDLES_COMMAND_LINE", "handles-command-line" }, + { G_APPLICATION_SEND_ENVIRONMENT, "G_APPLICATION_SEND_ENVIRONMENT", "send-environment" }, + { G_APPLICATION_NON_UNIQUE, "G_APPLICATION_NON_UNIQUE", "non-unique" }, + { G_APPLICATION_CAN_OVERRIDE_APP_ID, "G_APPLICATION_CAN_OVERRIDE_APP_ID", "can-override-app-id" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GApplicationFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_tls_error_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_TLS_ERROR_UNAVAILABLE, "G_TLS_ERROR_UNAVAILABLE", "unavailable" }, + { G_TLS_ERROR_MISC, "G_TLS_ERROR_MISC", "misc" }, + { G_TLS_ERROR_BAD_CERTIFICATE, "G_TLS_ERROR_BAD_CERTIFICATE", "bad-certificate" }, + { G_TLS_ERROR_NOT_TLS, "G_TLS_ERROR_NOT_TLS", "not-tls" }, + { G_TLS_ERROR_HANDSHAKE, "G_TLS_ERROR_HANDSHAKE", "handshake" }, + { G_TLS_ERROR_CERTIFICATE_REQUIRED, "G_TLS_ERROR_CERTIFICATE_REQUIRED", "certificate-required" }, + { G_TLS_ERROR_EOF, "G_TLS_ERROR_EOF", "eof" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GTlsError"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_tls_certificate_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_TLS_CERTIFICATE_UNKNOWN_CA, "G_TLS_CERTIFICATE_UNKNOWN_CA", "unknown-ca" }, + { G_TLS_CERTIFICATE_BAD_IDENTITY, "G_TLS_CERTIFICATE_BAD_IDENTITY", "bad-identity" }, + { G_TLS_CERTIFICATE_NOT_ACTIVATED, "G_TLS_CERTIFICATE_NOT_ACTIVATED", "not-activated" }, + { G_TLS_CERTIFICATE_EXPIRED, "G_TLS_CERTIFICATE_EXPIRED", "expired" }, + { G_TLS_CERTIFICATE_REVOKED, "G_TLS_CERTIFICATE_REVOKED", "revoked" }, + { G_TLS_CERTIFICATE_INSECURE, "G_TLS_CERTIFICATE_INSECURE", "insecure" }, + { G_TLS_CERTIFICATE_GENERIC_ERROR, "G_TLS_CERTIFICATE_GENERIC_ERROR", "generic-error" }, + { G_TLS_CERTIFICATE_VALIDATE_ALL, "G_TLS_CERTIFICATE_VALIDATE_ALL", "validate-all" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GTlsCertificateFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_tls_authentication_mode_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_TLS_AUTHENTICATION_NONE, "G_TLS_AUTHENTICATION_NONE", "none" }, + { G_TLS_AUTHENTICATION_REQUESTED, "G_TLS_AUTHENTICATION_REQUESTED", "requested" }, + { G_TLS_AUTHENTICATION_REQUIRED, "G_TLS_AUTHENTICATION_REQUIRED", "required" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GTlsAuthenticationMode"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_tls_rehandshake_mode_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_TLS_REHANDSHAKE_NEVER, "G_TLS_REHANDSHAKE_NEVER", "never" }, + { G_TLS_REHANDSHAKE_SAFELY, "G_TLS_REHANDSHAKE_SAFELY", "safely" }, + { G_TLS_REHANDSHAKE_UNSAFELY, "G_TLS_REHANDSHAKE_UNSAFELY", "unsafely" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GTlsRehandshakeMode"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_tls_password_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_TLS_PASSWORD_NONE, "G_TLS_PASSWORD_NONE", "none" }, + { G_TLS_PASSWORD_RETRY, "G_TLS_PASSWORD_RETRY", "retry" }, + { G_TLS_PASSWORD_MANY_TRIES, "G_TLS_PASSWORD_MANY_TRIES", "many-tries" }, + { G_TLS_PASSWORD_FINAL_TRY, "G_TLS_PASSWORD_FINAL_TRY", "final-try" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GTlsPasswordFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_tls_interaction_result_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_TLS_INTERACTION_UNHANDLED, "G_TLS_INTERACTION_UNHANDLED", "unhandled" }, + { G_TLS_INTERACTION_HANDLED, "G_TLS_INTERACTION_HANDLED", "handled" }, + { G_TLS_INTERACTION_FAILED, "G_TLS_INTERACTION_FAILED", "failed" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GTlsInteractionResult"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_interface_skeleton_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_DBUS_INTERFACE_SKELETON_FLAGS_NONE, "G_DBUS_INTERFACE_SKELETON_FLAGS_NONE", "none" }, + { G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD, "G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD", "handle-method-invocations-in-thread" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GDBusInterfaceSkeletonFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_dbus_object_manager_client_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE, "G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE", "none" }, + { G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START, "G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START", "do-not-auto-start" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GDBusObjectManagerClientFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_tls_database_verify_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_TLS_DATABASE_VERIFY_NONE, "G_TLS_DATABASE_VERIFY_NONE", "none" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GTlsDatabaseVerifyFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_tls_database_lookup_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_TLS_DATABASE_LOOKUP_NONE, "G_TLS_DATABASE_LOOKUP_NONE", "none" }, + { G_TLS_DATABASE_LOOKUP_KEYPAIR, "G_TLS_DATABASE_LOOKUP_KEYPAIR", "keypair" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GTlsDatabaseLookupFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_tls_certificate_request_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_TLS_CERTIFICATE_REQUEST_NONE, "G_TLS_CERTIFICATE_REQUEST_NONE", "none" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GTlsCertificateRequestFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_io_module_scope_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_IO_MODULE_SCOPE_NONE, "G_IO_MODULE_SCOPE_NONE", "none" }, + { G_IO_MODULE_SCOPE_BLOCK_DUPLICATES, "G_IO_MODULE_SCOPE_BLOCK_DUPLICATES", "block-duplicates" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GIOModuleScopeFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_socket_client_event_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_SOCKET_CLIENT_RESOLVING, "G_SOCKET_CLIENT_RESOLVING", "resolving" }, + { G_SOCKET_CLIENT_RESOLVED, "G_SOCKET_CLIENT_RESOLVED", "resolved" }, + { G_SOCKET_CLIENT_CONNECTING, "G_SOCKET_CLIENT_CONNECTING", "connecting" }, + { G_SOCKET_CLIENT_CONNECTED, "G_SOCKET_CLIENT_CONNECTED", "connected" }, + { G_SOCKET_CLIENT_PROXY_NEGOTIATING, "G_SOCKET_CLIENT_PROXY_NEGOTIATING", "proxy-negotiating" }, + { G_SOCKET_CLIENT_PROXY_NEGOTIATED, "G_SOCKET_CLIENT_PROXY_NEGOTIATED", "proxy-negotiated" }, + { G_SOCKET_CLIENT_TLS_HANDSHAKING, "G_SOCKET_CLIENT_TLS_HANDSHAKING", "tls-handshaking" }, + { G_SOCKET_CLIENT_TLS_HANDSHAKED, "G_SOCKET_CLIENT_TLS_HANDSHAKED", "tls-handshaked" }, + { G_SOCKET_CLIENT_COMPLETE, "G_SOCKET_CLIENT_COMPLETE", "complete" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GSocketClientEvent"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_socket_listener_event_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_SOCKET_LISTENER_BINDING, "G_SOCKET_LISTENER_BINDING", "binding" }, + { G_SOCKET_LISTENER_BOUND, "G_SOCKET_LISTENER_BOUND", "bound" }, + { G_SOCKET_LISTENER_LISTENING, "G_SOCKET_LISTENER_LISTENING", "listening" }, + { G_SOCKET_LISTENER_LISTENED, "G_SOCKET_LISTENER_LISTENED", "listened" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GSocketListenerEvent"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_test_dbus_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_TEST_DBUS_NONE, "G_TEST_DBUS_NONE", "none" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GTestDBusFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_subprocess_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_SUBPROCESS_FLAGS_NONE, "G_SUBPROCESS_FLAGS_NONE", "none" }, + { G_SUBPROCESS_FLAGS_STDIN_PIPE, "G_SUBPROCESS_FLAGS_STDIN_PIPE", "stdin-pipe" }, + { G_SUBPROCESS_FLAGS_STDIN_INHERIT, "G_SUBPROCESS_FLAGS_STDIN_INHERIT", "stdin-inherit" }, + { G_SUBPROCESS_FLAGS_STDOUT_PIPE, "G_SUBPROCESS_FLAGS_STDOUT_PIPE", "stdout-pipe" }, + { G_SUBPROCESS_FLAGS_STDOUT_SILENCE, "G_SUBPROCESS_FLAGS_STDOUT_SILENCE", "stdout-silence" }, + { G_SUBPROCESS_FLAGS_STDERR_PIPE, "G_SUBPROCESS_FLAGS_STDERR_PIPE", "stderr-pipe" }, + { G_SUBPROCESS_FLAGS_STDERR_SILENCE, "G_SUBPROCESS_FLAGS_STDERR_SILENCE", "stderr-silence" }, + { G_SUBPROCESS_FLAGS_STDERR_MERGE, "G_SUBPROCESS_FLAGS_STDERR_MERGE", "stderr-merge" }, + { G_SUBPROCESS_FLAGS_INHERIT_FDS, "G_SUBPROCESS_FLAGS_INHERIT_FDS", "inherit-fds" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GSubprocessFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_notification_priority_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_NOTIFICATION_PRIORITY_NORMAL, "G_NOTIFICATION_PRIORITY_NORMAL", "normal" }, + { G_NOTIFICATION_PRIORITY_LOW, "G_NOTIFICATION_PRIORITY_LOW", "low" }, + { G_NOTIFICATION_PRIORITY_HIGH, "G_NOTIFICATION_PRIORITY_HIGH", "high" }, + { G_NOTIFICATION_PRIORITY_URGENT, "G_NOTIFICATION_PRIORITY_URGENT", "urgent" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GNotificationPriority"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +GType +g_network_connectivity_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GEnumValue values[] = { + { G_NETWORK_CONNECTIVITY_LOCAL, "G_NETWORK_CONNECTIVITY_LOCAL", "local" }, + { G_NETWORK_CONNECTIVITY_LIMITED, "G_NETWORK_CONNECTIVITY_LIMITED", "limited" }, + { G_NETWORK_CONNECTIVITY_PORTAL, "G_NETWORK_CONNECTIVITY_PORTAL", "portal" }, + { G_NETWORK_CONNECTIVITY_FULL, "G_NETWORK_CONNECTIVITY_FULL", "full" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_enum_register_static (g_intern_static_string ("GNetworkConnectivity"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + +/* enumerations from "gsettings.h" */ +GType +g_settings_bind_flags_get_type (void) +{ + static volatile gsize g_define_type_id__volatile = 0; + + if (g_once_init_enter (&g_define_type_id__volatile)) + { + static const GFlagsValue values[] = { + { G_SETTINGS_BIND_DEFAULT, "G_SETTINGS_BIND_DEFAULT", "default" }, + { G_SETTINGS_BIND_GET, "G_SETTINGS_BIND_GET", "get" }, + { G_SETTINGS_BIND_SET, "G_SETTINGS_BIND_SET", "set" }, + { G_SETTINGS_BIND_NO_SENSITIVITY, "G_SETTINGS_BIND_NO_SENSITIVITY", "no-sensitivity" }, + { G_SETTINGS_BIND_GET_NO_CHANGES, "G_SETTINGS_BIND_GET_NO_CHANGES", "get-no-changes" }, + { G_SETTINGS_BIND_INVERT_BOOLEAN, "G_SETTINGS_BIND_INVERT_BOOLEAN", "invert-boolean" }, + { 0, NULL, NULL } + }; + GType g_define_type_id = + g_flags_register_static (g_intern_static_string ("GSettingsBindFlags"), values); + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); + } + + return g_define_type_id__volatile; +} + + +/* Generated data ends here */ + diff --git a/gio/gioenumtypes.h b/gio/gioenumtypes.h new file mode 100644 index 0000000..02e30e9 --- /dev/null +++ b/gio/gioenumtypes.h @@ -0,0 +1,171 @@ + +/* Generated data (by glib-mkenums) */ + +#ifndef __GIO_ENUM_TYPES_H__ +#define __GIO_ENUM_TYPES_H__ + +#include + +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_file_measure_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_FILE_MEASURE_FLAGS (g_file_measure_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_tls_certificate_request_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_TLS_CERTIFICATE_REQUEST_FLAGS (g_tls_certificate_request_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_socket_listener_event_get_type (void) G_GNUC_CONST; +#define G_TYPE_SOCKET_LISTENER_EVENT (g_socket_listener_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 ()) +GLIB_AVAILABLE_IN_ALL GType g_subprocess_flags_get_type (void) G_GNUC_CONST; +#define G_TYPE_SUBPROCESS_FLAGS (g_subprocess_flags_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_notification_priority_get_type (void) G_GNUC_CONST; +#define G_TYPE_NOTIFICATION_PRIORITY (g_notification_priority_get_type ()) +GLIB_AVAILABLE_IN_ALL GType g_network_connectivity_get_type (void) G_GNUC_CONST; +#define G_TYPE_NETWORK_CONNECTIVITY (g_network_connectivity_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/gio/gioerror.c b/gio/gioerror.c index 0faff25..c2efa20 100644 --- a/gio/gioerror.c +++ b/gio/gioerror.c @@ -254,6 +254,12 @@ g_io_error_from_errno (gint err_no) break; #endif +#ifdef EMSGSIZE + case EMSGSIZE: + return G_IO_ERROR_MESSAGE_TOO_LARGE; + break; +#endif + default: return G_IO_ERROR_FAILED; break; @@ -301,6 +307,7 @@ g_io_error_from_win32_error (gint error_code) case WSA_INVALID_HANDLE: case WSA_INVALID_PARAMETER: + case WSAEINVAL: case WSAEBADF: case WSAENOTSOCK: return G_IO_ERROR_INVALID_ARGUMENT; @@ -320,9 +327,25 @@ g_io_error_from_win32_error (gint error_code) case WSAECONNRESET: return G_IO_ERROR_CONNECTION_CLOSED; + case WSAEHOSTUNREACH: + return G_IO_ERROR_HOST_UNREACHABLE; + + case WSAENETUNREACH: + return G_IO_ERROR_NETWORK_UNREACHABLE; + + case WSAECONNREFUSED: + return G_IO_ERROR_CONNECTION_REFUSED; + + case WSAETIMEDOUT: + return G_IO_ERROR_TIMED_OUT; + + case WSAENOTCONN: case ERROR_PIPE_LISTENING: return G_IO_ERROR_NOT_CONNECTED; + case WSAEMSGSIZE: + return G_IO_ERROR_MESSAGE_TOO_LARGE; + default: return G_IO_ERROR_FAILED; } diff --git a/gio/giomodule.c b/gio/giomodule.c index 4b16a83..da7c167 100644 --- a/gio/giomodule.c +++ b/gio/giomodule.c @@ -25,7 +25,6 @@ #include "giomodule.h" #include "giomodule-priv.h" #include "glocalfilemonitor.h" -#include "glocaldirectorymonitor.h" #include "gnativevolumemonitor.h" #include "gproxyresolver.h" #include "gproxy.h" @@ -37,6 +36,8 @@ #include "gtlsbackend.h" #include "gvfs.h" #include "gnotificationbackend.h" +#include "ginitable.h" +#include "gnetworkmonitor.h" #ifdef G_OS_WIN32 #include "gregistrysettingsbackend.h" #endif @@ -886,17 +887,15 @@ _g_io_module_get_default (const gchar *extension_point, G_LOCK_DEFINE_STATIC (registered_extensions); G_LOCK_DEFINE_STATIC (loaded_dirs); -extern GType _g_fen_directory_monitor_get_type (void); -extern GType _g_fen_file_monitor_get_type (void); -extern GType _g_inotify_directory_monitor_get_type (void); -extern GType _g_inotify_file_monitor_get_type (void); -extern GType _g_kqueue_directory_monitor_get_type (void); -extern GType _g_kqueue_file_monitor_get_type (void); +extern GType g_fen_file_monitor_get_type (void); +extern GType g_inotify_file_monitor_get_type (void); +extern GType g_kqueue_file_monitor_get_type (void); +extern GType g_win32_file_monitor_get_type (void); + extern GType _g_unix_volume_monitor_get_type (void); extern GType _g_local_vfs_get_type (void); extern GType _g_win32_volume_monitor_get_type (void); -extern GType g_win32_directory_monitor_get_type (void); extern GType _g_winhttp_vfs_get_type (void); extern GType _g_dummy_proxy_resolver_get_type (void); @@ -912,6 +911,10 @@ extern GType g_fdo_notification_backend_get_type (void); extern GType g_gtk_notification_backend_get_type (void); #endif +#ifdef HAVE_COCOA +extern GType g_cocoa_notification_backend_get_type (void); +#endif + #ifdef G_PLATFORM_WIN32 #include @@ -947,16 +950,6 @@ _g_io_win32_get_module (void) return gio_dll; } -#undef GIO_MODULE_DIR - -/* GIO_MODULE_DIR is used only in code called just once, - * so no problem leaking this - */ -#define GIO_MODULE_DIR \ - g_build_filename (g_win32_get_package_installation_directory_of_module (gio_dll), \ - "lib/gio/modules", \ - NULL) - #endif void @@ -979,15 +972,9 @@ _g_io_modules_ensure_extension_points_registered (void) G_GNUC_END_IGNORE_DEPRECATIONS #endif #endif - - ep = g_io_extension_point_register (G_LOCAL_DIRECTORY_MONITOR_EXTENSION_POINT_NAME); - g_io_extension_point_set_required_type (ep, G_TYPE_LOCAL_DIRECTORY_MONITOR); - + ep = g_io_extension_point_register (G_LOCAL_FILE_MONITOR_EXTENSION_POINT_NAME); g_io_extension_point_set_required_type (ep, G_TYPE_LOCAL_FILE_MONITOR); - - ep = g_io_extension_point_register (G_NFS_DIRECTORY_MONITOR_EXTENSION_POINT_NAME); - g_io_extension_point_set_required_type (ep, G_TYPE_LOCAL_DIRECTORY_MONITOR); ep = g_io_extension_point_register (G_NFS_FILE_MONITOR_EXTENSION_POINT_NAME); g_io_extension_point_set_required_type (ep, G_TYPE_LOCAL_FILE_MONITOR); @@ -1023,13 +1010,45 @@ _g_io_modules_ensure_extension_points_registered (void) G_UNLOCK (registered_extensions); } +static gchar * +get_gio_module_dir (void) +{ + gchar *module_dir; + + module_dir = g_strdup (g_getenv ("GIO_MODULE_DIR")); + if (module_dir == NULL) + { +#ifdef G_OS_WIN32 + gchar *install_dir; + + install_dir = g_win32_get_package_installation_directory_of_module (gio_dll); +#ifdef _MSC_VER + /* On Visual Studio builds we have all the libraries and binaries in bin + * so better load the gio modules from bin instead of lib + */ + module_dir = g_build_filename (install_dir, + "bin", "gio", "modules", + NULL); +#else + module_dir = g_build_filename (install_dir, + "lib", "gio", "modules", + NULL); +#endif + g_free (install_dir); +#else + module_dir = g_strdup (GIO_MODULE_DIR); +#endif + } + + return module_dir; +} + void _g_io_modules_ensure_loaded (void) { static gboolean loaded_dirs = FALSE; const char *module_path; GIOModuleScope *scope; - const gchar *module_dir; _g_io_modules_ensure_extension_points_registered (); @@ -1037,6 +1056,8 @@ _g_io_modules_ensure_loaded (void) if (!loaded_dirs) { + gchar *module_dir; + loaded_dirs = TRUE; scope = g_io_module_scope_new (G_IO_MODULE_SCOPE_BLOCK_DUPLICATES); @@ -1058,11 +1079,10 @@ _g_io_modules_ensure_loaded (void) } /* Then load the compiled in path */ - module_dir = g_getenv ("GIO_MODULE_DIR"); - if (module_dir == NULL) - module_dir = GIO_MODULE_DIR; + module_dir = get_gio_module_dir (); g_io_modules_scan_all_in_directory_with_scope (module_dir, scope); + g_free (module_dir); g_io_module_scope_free (scope); @@ -1070,20 +1090,17 @@ _g_io_modules_ensure_loaded (void) g_type_ensure (g_null_settings_backend_get_type ()); g_type_ensure (g_memory_settings_backend_get_type ()); #if defined(HAVE_INOTIFY_INIT1) - g_type_ensure (_g_inotify_directory_monitor_get_type ()); - g_type_ensure (_g_inotify_file_monitor_get_type ()); + g_type_ensure (g_inotify_file_monitor_get_type ()); #endif #if defined(HAVE_KQUEUE) - g_type_ensure (_g_kqueue_directory_monitor_get_type ()); - g_type_ensure (_g_kqueue_file_monitor_get_type ()); + g_type_ensure (g_kqueue_file_monitor_get_type ()); #endif #if defined(HAVE_FEN) - g_type_ensure (_g_fen_directory_monitor_get_type ()); - g_type_ensure (_g_fen_file_monitor_get_type ()); + g_type_ensure (g_fen_file_monitor_get_type ()); #endif #ifdef G_OS_WIN32 g_type_ensure (_g_win32_volume_monitor_get_type ()); - g_type_ensure (g_win32_directory_monitor_get_type ()); + g_type_ensure (g_win32_file_monitor_get_type ()); g_type_ensure (g_registry_backend_get_type ()); #endif #ifdef HAVE_COCOA @@ -1094,6 +1111,9 @@ _g_io_modules_ensure_loaded (void) g_type_ensure (g_fdo_notification_backend_get_type ()); g_type_ensure (g_gtk_notification_backend_get_type ()); #endif +#ifdef HAVE_COCOA + g_type_ensure (g_cocoa_notification_backend_get_type ()); +#endif #ifdef G_OS_WIN32 g_type_ensure (_g_winhttp_vfs_get_type ()); #endif diff --git a/gio/giostream.c b/gio/giostream.c index 185062f..19522cb 100644 --- a/gio/giostream.c +++ b/gio/giostream.c @@ -36,12 +36,12 @@ * @see_also: #GInputStream, #GOutputStream * * GIOStream represents an object that has both read and write streams. - * Generally the two streams acts as separate input and output streams, + * Generally the two streams act as separate input and output streams, * but they share some common resources and state. For instance, for - * seekable streams they may use the same position in both streams. + * seekable streams, both streams may use the same position. * - * Examples of #GIOStream objects are #GSocketConnection which represents - * a two-way network connection, and #GFileIOStream which represent a + * Examples of #GIOStream objects are #GSocketConnection, which represents + * a two-way network connection; and #GFileIOStream, which represents a * file handle opened in read-write mode. * * To do the actual reading and writing you need to get the substreams @@ -50,8 +50,8 @@ * The #GIOStream object owns the input and the output streams, not the other * way around, so keeping the substreams alive will not keep the #GIOStream * object alive. If the #GIOStream object is freed it will be closed, thus - * closing the substream, so even if the substreams stay alive they will - * always just return a %G_IO_ERROR_CLOSED for all operations. + * closing the substreams, so even if the substreams stay alive they will + * always return %G_IO_ERROR_CLOSED for all operations. * * To close a stream use g_io_stream_close() which will close the common * stream object and also the individual substreams. You can also close @@ -60,6 +60,28 @@ * #GIOStream may still be open. However, some streams may support * "half-closed" states where one direction of the stream is actually shut down. * + * Operations on #GIOStreams cannot be started while another operation on the + * #GIOStream or its substreams is in progress. Specifically, an application can + * read from the #GInputStream and write to the #GOutputStream simultaneously + * (either in separate threads, or as asynchronous operations in the same + * thread), but an application cannot start any #GIOStream operation while there + * is a #GIOStream, #GInputStream or #GOutputStream operation in progress, and + * an application can’t start any #GInputStream or #GOutputStream operation + * while there is a #GIOStream operation in progress. + * + * This is a product of individual stream operations being associated with a + * given #GMainContext (the thread-default context at the time the operation was + * started), rather than entire streams being associated with a single + * #GMainContext. + * + * GIO may run operations on #GIOStreams from other (worker) threads, and this + * may be exposed to application code in the behaviour of wrapper streams, such + * as #GBufferedInputStream or #GTlsConnection. With such wrapper APIs, + * application code may only run operations on the base (wrapped) stream when + * the wrapper stream is idle. Note that the semantics of such operations may + * not be well-defined due to the state the wrapper stream leaves the base + * stream in (though they are guaranteed not to crash). + * * Since: 2.22 */ @@ -337,7 +359,7 @@ g_io_stream_real_close (GIOStream *stream, * @error: location to store the error occurring, or %NULL to ignore * * Closes the stream, releasing resources related to it. This will also - * closes the individual input and output streams, if they are not already + * close the individual input and output streams, if they are not already * closed. * * Once the stream is closed, all other operations will return diff --git a/gio/giotypes.h b/gio/giotypes.h index 4342d47..d98ec4a 100644 --- a/gio/giotypes.h +++ b/gio/giotypes.h @@ -40,6 +40,7 @@ typedef struct _GCharsetConverter GCharsetConverter; typedef struct _GConverter GConverter; typedef struct _GConverterInputStream GConverterInputStream; typedef struct _GConverterOutputStream GConverterOutputStream; +typedef struct _GDatagramBased GDatagramBased; typedef struct _GDataInputStream GDataInputStream; typedef struct _GSimplePermission GSimplePermission; typedef struct _GZlibCompressor GZlibCompressor; @@ -61,8 +62,6 @@ typedef struct _GPermission GPermission; typedef struct _GMenuModel GMenuModel; typedef struct _GNotification GNotification; -typedef struct _GListModel GListModel; -typedef struct _GListStore GListStore; /** * GDrive: @@ -105,6 +104,7 @@ typedef struct _GIcon GIcon; /* Dummy typedef */ typedef struct _GInetAddress GInetAddress; typedef struct _GInetAddressMask GInetAddressMask; typedef struct _GInetSocketAddress GInetSocketAddress; +typedef struct _GNativeSocketAddress GNativeSocketAddress; typedef struct _GInputStream GInputStream; typedef struct _GInitable GInitable; typedef struct _GIOModule GIOModule; @@ -223,6 +223,9 @@ typedef struct _GTcpWrapperConnection GTcpWrapperConnectio * Since: 2.22 **/ typedef struct _GThreadedSocketService GThreadedSocketService; +typedef struct _GDtlsConnection GDtlsConnection; +typedef struct _GDtlsClientConnection GDtlsClientConnection; /* Dummy typedef */ +typedef struct _GDtlsServerConnection GDtlsServerConnection; /* Dummy typedef */ typedef struct _GThemedIcon GThemedIcon; typedef struct _GTlsCertificate GTlsCertificate; typedef struct _GTlsClientConnection GTlsClientConnection; /* Dummy typedef */ @@ -391,6 +394,24 @@ typedef gboolean (*GSocketSourceFunc) (GSocket *socket, gpointer user_data); /** + * GDatagramBasedSourceFunc: + * @datagram_based: the #GDatagramBased + * @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_datagram_based_create_source(). + * + * Returns: %G_SOURCE_REMOVE if the source should be removed, + * %G_SOURCE_CONTINUE otherwise + * + * Since: 2.48 + */ +typedef gboolean (*GDatagramBasedSourceFunc) (GDatagramBased *datagram_based, + GIOCondition condition, + gpointer user_data); + +/** * GInputVector: * @buffer: Pointer to a buffer where data will be written. * @size: the available size in @buffer. @@ -410,6 +431,60 @@ struct _GInputVector { }; /** + * GInputMessage: + * @address: (optional) (out) (transfer full): return location + * for a #GSocketAddress, or %NULL + * @vectors: (array length=num_vectors) (out): pointer to an + * array of input vectors + * @num_vectors: the number of input vectors pointed to by @vectors + * @bytes_received: (out): will be set to the number of bytes that have been + * received + * @flags: (out): collection of #GSocketMsgFlags for the received message, + * outputted by the call + * @control_messages: (array length=num_control_messages) (optional) + * (out) (transfer full): return location for a + * caller-allocated array of #GSocketControlMessages, or %NULL + * @num_control_messages: (out) (optional): return location for the number of + * elements in @control_messages + * + * Structure used for scatter/gather data input when receiving multiple + * messages or packets in one go. You generally pass in an array of empty + * #GInputVectors and the operation will use all the buffers as if they + * were one buffer, and will set @bytes_received to the total number of bytes + * received across all #GInputVectors. + * + * This structure closely mirrors `struct mmsghdr` and `struct msghdr` from + * the POSIX sockets API (see `man 2 recvmmsg`). + * + * If @address is non-%NULL then it is set to the source address the message + * was received from, and the caller must free it afterwards. + * + * If @control_messages is non-%NULL then it is set to an array of control + * messages received with the message (if any), and the caller must free it + * afterwards. @num_control_messages is set to the number of elements in + * this array, which may be zero. + * + * Flags relevant to this message will be returned in @flags. For example, + * `MSG_EOR` or `MSG_TRUNC`. + * + * Since: 2.48 + */ +typedef struct _GInputMessage GInputMessage; + +struct _GInputMessage { + GSocketAddress **address; + + GInputVector *vectors; + guint num_vectors; + + gsize bytes_received; + gint flags; + + GSocketControlMessage ***control_messages; + guint *num_control_messages; +}; + +/** * GOutputVector: * @buffer: Pointer to a buffer of data to read. * @size: the size of @buffer. diff --git a/gio/glib-compile-resources.c b/gio/glib-compile-resources.c index 6bad64f..e1223d6 100644 --- a/gio/glib-compile-resources.c +++ b/gio/glib-compile-resources.c @@ -216,7 +216,7 @@ end_element (GMarkupParseContext *context, { gchar *file, *real_file; gchar *key; - FileData *data; + FileData *data = NULL; char *tmp_file = NULL; char *tmp_file2 = NULL; @@ -238,8 +238,6 @@ end_element (GMarkupParseContext *context, return; } - data = g_new0 (FileData, 1); - if (sourcedirs != NULL) { real_file = find_file (file); @@ -263,6 +261,7 @@ end_element (GMarkupParseContext *context, real_file = g_strdup (file); } + data = g_new0 (FileData, 1); data->filename = g_strdup (real_file); if (!state->collect_data) goto done; @@ -416,6 +415,7 @@ end_element (GMarkupParseContext *context, done: g_hash_table_insert (state->table, key, data); + data = NULL; cleanup: /* Cleanup */ @@ -440,6 +440,9 @@ end_element (GMarkupParseContext *context, unlink (tmp_file2); g_free (tmp_file2); } + + if (data != NULL) + file_data_free (data); } } @@ -637,6 +640,7 @@ main (int argc, char **argv) if (argc != 2) { g_printerr (_("You should give exactly one file name\n")); + g_free (c_name); return 1; } @@ -669,6 +673,12 @@ main (int argc, char **argv) base[strlen(base) - strlen (".gresource")] = 0; target_basename = g_strconcat (base, ".c", NULL); } + else if (generate_header) + { + if (g_str_has_suffix (base, ".gresource")) + base[strlen(base) - strlen (".gresource")] = 0; + target_basename = g_strconcat (base, ".h", NULL); + } else { if (g_str_has_suffix (base, ".gresource")) @@ -695,6 +705,7 @@ main (int argc, char **argv) if ((table = parse_resource_file (srcfile, !generate_dependencies)) == NULL) { g_free (target); + g_free (c_name); return 1; } @@ -719,6 +730,7 @@ main (int argc, char **argv) if (fd == -1) { g_printerr ("Can't open temp file\n"); + g_free (c_name); return 1; } close (fd); @@ -764,6 +776,7 @@ main (int argc, char **argv) { g_printerr ("%s\n", error->message); g_free (target); + g_free (c_name); return 1; } @@ -775,6 +788,7 @@ main (int argc, char **argv) if (file == NULL) { g_printerr ("can't write to file %s", target); + g_free (c_name); return 1; } @@ -811,6 +825,7 @@ main (int argc, char **argv) &data_size, NULL)) { g_printerr ("can't read back temporary file"); + g_free (c_name); return 1; } g_unlink (binary_target); @@ -819,6 +834,7 @@ main (int argc, char **argv) if (file == NULL) { g_printerr ("can't write to file %s", target); + g_free (c_name); return 1; } @@ -914,6 +930,7 @@ main (int argc, char **argv) g_free (target); g_hash_table_destroy (table); g_free (xmllint); + g_free (c_name); return 0; } diff --git a/gio/glib-compile-schemas.c b/gio/glib-compile-schemas.c index e42949b..2262a3f 100644 --- a/gio/glib-compile-schemas.c +++ b/gio/glib-compile-schemas.c @@ -192,6 +192,9 @@ typedef struct gboolean checked; GVariant *serialised; + + gboolean summary_seen; + gboolean description_seen; } KeyState; static KeyState * @@ -208,6 +211,8 @@ key_state_new (const gchar *type_string, state->have_gettext_domain = gettext_domain != NULL; state->is_enum = is_enum; state->is_flags = is_flags; + state->summary_seen = FALSE; + state->description_seen = FALSE; if (strinfo) state->strinfo = g_string_new_len (strinfo->str, strinfo->len); @@ -464,6 +469,13 @@ key_state_end_default (KeyState *state, state->default_value = g_variant_parse (state->type, state->unparsed_default_value->str, NULL, NULL, error); + if (!state->default_value) + { + gchar *type = g_variant_type_dup_string (state->type); + g_prefix_error (error, "failed to parse value of type '%s': ", type); + g_free (type); + } + key_state_check_range (state, error); } @@ -1058,6 +1070,8 @@ override_state_end (KeyState **key_state, /* Handling of toplevel state {{{1 */ typedef struct { + gboolean strict; /* TRUE if --strict was given */ + GHashTable *schema_table; /* string -> SchemaState */ GHashTable *flags_table; /* string -> EnumState */ GHashTable *enum_table; /* string -> EnumState */ @@ -1374,11 +1388,35 @@ start_element (GMarkupParseContext *context, return; } - else if (strcmp (element_name, "summary") == 0 || - strcmp (element_name, "description") == 0) + else if (strcmp (element_name, "summary") == 0) + { + if (NO_ATTRS ()) + { + if (state->key_state->summary_seen && state->strict) + g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, + _("Only one <%s> element allowed inside <%s>"), + element_name, container); + else + state->string = g_string_new (NULL); + + state->key_state->summary_seen = TRUE; + } + return; + } + + else if (strcmp (element_name, "description") == 0) { if (NO_ATTRS ()) - state->string = g_string_new (NULL); + { + if (state->key_state->description_seen && state->strict) + g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT, + _("Only one <%s> element allowed inside <%s>"), + element_name, container); + else + state->string = g_string_new (NULL); + + state->key_state->description_seen = TRUE; + } return; } @@ -1698,6 +1736,8 @@ parse_gschema_files (gchar **files, const gchar *filename; GError *error = NULL; + state.strict = strict; + state.enum_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, enum_state_free); @@ -1712,6 +1752,7 @@ parse_gschema_files (gchar **files, GMarkupParseContext *context; gchar *contents; gsize size; + gint line, col; if (!g_file_get_contents (filename, &contents, &size, &error)) { @@ -1743,7 +1784,8 @@ parse_gschema_files (gchar **files, g_hash_table_remove (state.enum_table, item->data); /* let them know */ - fprintf (stderr, "%s: %s. ", filename, error->message); + g_markup_parse_context_get_position (context, &line, &col); + fprintf (stderr, "%s:%d:%d %s. ", filename, line, col, error->message); g_clear_error (&error); if (strict) diff --git a/gio/glistmodel.c b/gio/glistmodel.c index b43f3a3..e68ef02 100644 --- a/gio/glistmodel.c +++ b/gio/glistmodel.c @@ -23,6 +23,7 @@ #include "config.h" #include "glistmodel.h" +#include "glibintl.h" G_DEFINE_INTERFACE (GListModel, g_list_model, G_TYPE_OBJECT); @@ -60,7 +61,7 @@ G_DEFINE_INTERFACE (GListModel, g_list_model, G_TYPE_OBJECT); * interface, in which case all objects in the list must implement it. * * The semantics are close to that of an array: - * g_list_model_get_length() returns the number of items in the list and + * g_list_model_get_n_items() returns the number of items in the list and * g_list_model_get_item() returns an item at a (0-based) position. In * order to allow implementations to calculate the list length lazily, * you can also iterate over items: starting from 0, repeatedly call @@ -119,7 +120,7 @@ g_list_model_default_init (GListModelInterface *iface) * * Since: 2.44 */ - g_list_model_changed_signal = g_signal_new ("items-changed", + g_list_model_changed_signal = g_signal_new (I_("items-changed"), G_TYPE_LIST_MODEL, G_SIGNAL_RUN_LAST, 0, diff --git a/gio/gliststore.c b/gio/gliststore.c index fce4dc2..7f8c02a 100644 --- a/gio/gliststore.c +++ b/gio/gliststore.c @@ -245,7 +245,7 @@ g_list_store_new (GType item_type) * g_list_store_insert: * @store: a #GListStore * @position: the position at which to insert the new item - * @item: the new item + * @item: (type GObject): the new item * * Inserts @item into @store at @position. @item must be of type * #GListStore:item-type or derived from it. @position must be smaller @@ -278,8 +278,8 @@ g_list_store_insert (GListStore *store, /** * g_list_store_insert_sorted: * @store: a #GListStore - * @item: the new item - * @compare_func: pairwise comparison function for sorting + * @item: (type GObject): the new item + * @compare_func: (scope call): pairwise comparison function for sorting * @user_data: (closure): user data for @compare_func * * Inserts @item into @store at a position to be determined by the @@ -317,9 +317,35 @@ g_list_store_insert_sorted (GListStore *store, } /** + * g_list_store_sort: + * @store: a #GListStore + * @compare_func: (scope call): pairwise comparison function for sorting + * @user_data: (closure): user data for @compare_func + * + * Sort the items in @store according to @compare_func. + * + * Since: 2.46 + */ +void +g_list_store_sort (GListStore *store, + GCompareDataFunc compare_func, + gpointer user_data) +{ + gint n_items; + + g_return_if_fail (G_IS_LIST_STORE (store)); + g_return_if_fail (compare_func != NULL); + + g_sequence_sort (store->items, compare_func, user_data); + + n_items = g_sequence_get_length (store->items); + g_list_store_items_changed (store, 0, n_items, n_items); +} + +/** * g_list_store_append: * @store: a #GListStore - * @item: the new item + * @item: (type GObject): the new item * * Appends @item to @store. @item must be of type #GListStore:item-type. * @@ -400,7 +426,7 @@ g_list_store_remove_all (GListStore *store) * @store: a #GListStore * @position: the position at which to make the change * @n_removals: the number of items to remove - * @additions: (array length=n_additions): the items to add + * @additions: (array length=n_additions) (element-type GObject): the items to add * @n_additions: the number of items to add * * Changes @store by removing @n_removals items and adding @n_additions diff --git a/gio/gliststore.h b/gio/gliststore.h index 88ce941..cc8011e 100644 --- a/gio/gliststore.h +++ b/gio/gliststore.h @@ -49,6 +49,11 @@ guint g_list_store_insert_sorted (GListSt GCompareDataFunc compare_func, gpointer user_data); +GLIB_AVAILABLE_IN_2_46 +void g_list_store_sort (GListStore *store, + GCompareDataFunc compare_func, + gpointer user_data); + GLIB_AVAILABLE_IN_2_44 void g_list_store_append (GListStore *store, gpointer item); diff --git a/gio/glocaldirectorymonitor.c b/gio/glocaldirectorymonitor.c deleted file mode 100644 index 9bc9fa6..0000000 --- a/gio/glocaldirectorymonitor.c +++ /dev/null @@ -1,245 +0,0 @@ -/* 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, see . - * - * Author: Alexander Larsson - */ - -#include "config.h" - -#include "glocaldirectorymonitor.h" -#include "gunixmounts.h" -#include "giomodule-priv.h" -#include "gfile.h" -#include "gioerror.h" -#include "glibintl.h" - -#include - - -enum -{ - PROP_0, - PROP_DIRNAME, - PROP_FLAGS -}; - -static gboolean g_local_directory_monitor_cancel (GFileMonitor *monitor); -static void mounts_changed (GUnixMountMonitor *mount_monitor, - gpointer user_data); - -G_DEFINE_ABSTRACT_TYPE (GLocalDirectoryMonitor, g_local_directory_monitor, G_TYPE_FILE_MONITOR) - -static void -g_local_directory_monitor_finalize (GObject *object) -{ - GLocalDirectoryMonitor *local_monitor; - local_monitor = G_LOCAL_DIRECTORY_MONITOR (object); - - g_free (local_monitor->dirname); - - if (local_monitor->mount_monitor) - { - g_signal_handlers_disconnect_by_func (local_monitor->mount_monitor, mounts_changed, local_monitor); - g_object_unref (local_monitor->mount_monitor); - local_monitor->mount_monitor = NULL; - } - - G_OBJECT_CLASS (g_local_directory_monitor_parent_class)->finalize (object); -} - -static void -g_local_directory_monitor_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - GLocalDirectoryMonitor *local_monitor = G_LOCAL_DIRECTORY_MONITOR (object); - - switch (property_id) - { - case PROP_DIRNAME: - local_monitor->dirname = g_value_dup_string (value); - break; - - case PROP_FLAGS: - local_monitor->flags = g_value_get_flags (value); - break; - - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -void -g_local_directory_monitor_start (GLocalDirectoryMonitor *local_monitor) -{ - GLocalDirectoryMonitorClass *class; - - class = G_LOCAL_DIRECTORY_MONITOR_GET_CLASS (local_monitor); - - if (!class->mount_notify && (local_monitor->flags & G_FILE_MONITOR_WATCH_MOUNTS)) - { -#ifdef G_OS_WIN32 - /*claim everything was mounted */ - local_monitor->was_mounted = TRUE; -#else - GUnixMountEntry *mount; - - /* Emulate unmount detection */ - - mount = g_unix_mount_at (local_monitor->dirname, NULL); - - local_monitor->was_mounted = mount != NULL; - - if (mount) - g_unix_mount_free (mount); - - local_monitor->mount_monitor = g_unix_mount_monitor_get (); - g_signal_connect_object (local_monitor->mount_monitor, "mounts-changed", - G_CALLBACK (mounts_changed), local_monitor, 0); -#endif - } - - if (class->start) - class->start (local_monitor); -} - -static void -g_local_directory_monitor_class_init (GLocalDirectoryMonitorClass* klass) -{ - GObjectClass* gobject_class = G_OBJECT_CLASS (klass); - GFileMonitorClass *file_monitor_class = G_FILE_MONITOR_CLASS (klass); - - gobject_class->finalize = g_local_directory_monitor_finalize; - gobject_class->set_property = g_local_directory_monitor_set_property; - - file_monitor_class->cancel = g_local_directory_monitor_cancel; - - g_object_class_install_property (gobject_class, - PROP_DIRNAME, - g_param_spec_string ("dirname", - P_("Directory name"), - P_("Directory to monitor"), - NULL, - G_PARAM_CONSTRUCT_ONLY| - G_PARAM_WRITABLE| - G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); - g_object_class_install_property (gobject_class, - PROP_FLAGS, - g_param_spec_flags ("flags", - P_("Monitor flags"), - P_("Monitor flags"), - G_TYPE_FILE_MONITOR_FLAGS, - 0, - G_PARAM_CONSTRUCT_ONLY| - G_PARAM_WRITABLE| - G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); - - klass->mount_notify = FALSE; -} - -static void -g_local_directory_monitor_init (GLocalDirectoryMonitor *local_monitor) -{ -} - -static void -mounts_changed (GUnixMountMonitor *mount_monitor, - gpointer user_data) -{ - GLocalDirectoryMonitor *local_monitor = user_data; -#ifdef G_OS_UNIX - GUnixMountEntry *mount; -#endif - gboolean is_mounted; - GFile *file; - - /* Emulate unmount detection */ -#ifdef G_OS_UNIX - mount = g_unix_mount_at (local_monitor->dirname, NULL); - - is_mounted = mount != NULL; - - if (mount) - g_unix_mount_free (mount); -#else - /*claim everything was mounted */ - is_mounted = TRUE; -#endif - - if (local_monitor->was_mounted != is_mounted) - { - if (local_monitor->was_mounted && !is_mounted) - { - file = g_file_new_for_path (local_monitor->dirname); - g_file_monitor_emit_event (G_FILE_MONITOR (local_monitor), - file, NULL, - G_FILE_MONITOR_EVENT_UNMOUNTED); - g_object_unref (file); - } - local_monitor->was_mounted = is_mounted; - } -} - -GFileMonitor* -_g_local_directory_monitor_new (const char *dirname, - GFileMonitorFlags flags, - GMainContext *context, - gboolean is_remote_fs, - gboolean do_start, - GError **error) -{ - GFileMonitor *monitor = NULL; - GType type = G_TYPE_INVALID; - - if (is_remote_fs) - type = _g_io_module_get_default_type (G_NFS_DIRECTORY_MONITOR_EXTENSION_POINT_NAME, - "GIO_USE_FILE_MONITOR", - G_STRUCT_OFFSET (GLocalDirectoryMonitorClass, is_supported)); - - if (type == G_TYPE_INVALID) - type = _g_io_module_get_default_type (G_LOCAL_DIRECTORY_MONITOR_EXTENSION_POINT_NAME, - "GIO_USE_FILE_MONITOR", - G_STRUCT_OFFSET (GLocalDirectoryMonitorClass, is_supported)); - - if (type != G_TYPE_INVALID) - monitor = G_FILE_MONITOR (g_object_new (type, "dirname", dirname, "flags", flags, "context", context, NULL)); - else - g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, - _("Unable to find default local directory monitor type")); - - if (monitor && do_start) - g_local_directory_monitor_start (G_LOCAL_DIRECTORY_MONITOR (monitor)); - - return monitor; -} - -static gboolean -g_local_directory_monitor_cancel (GFileMonitor *monitor) -{ - GLocalDirectoryMonitor *local_monitor = G_LOCAL_DIRECTORY_MONITOR (monitor); - - if (local_monitor->mount_monitor) - { - g_signal_handlers_disconnect_by_func (local_monitor->mount_monitor, mounts_changed, local_monitor); - g_object_unref (local_monitor->mount_monitor); - local_monitor->mount_monitor = NULL; - } - - return TRUE; -} diff --git a/gio/glocaldirectorymonitor.h b/gio/glocaldirectorymonitor.h deleted file mode 100644 index b873404..0000000 --- a/gio/glocaldirectorymonitor.h +++ /dev/null @@ -1,84 +0,0 @@ -/* 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, see . - * - * Author: Alexander Larsson - */ - -#ifndef __G_LOCAL_DIRECTORY_MONITOR_H__ -#define __G_LOCAL_DIRECTORY_MONITOR_H__ - -#include - -#include "gunixmounts.h" - -G_BEGIN_DECLS - -#define G_TYPE_LOCAL_DIRECTORY_MONITOR (g_local_directory_monitor_get_type ()) -#define G_LOCAL_DIRECTORY_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_LOCAL_DIRECTORY_MONITOR, GLocalDirectoryMonitor)) -#define G_LOCAL_DIRECTORY_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), G_TYPE_LOCAL_DIRECTORY_MONITOR, GLocalDirectoryMonitorClass)) -#define G_IS_LOCAL_DIRECTORY_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_LOCAL_DIRECTORY_MONITOR)) -#define G_IS_LOCAL_DIRECTORY_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_LOCAL_DIRECTORY_MONITOR)) -#define G_LOCAL_DIRECTORY_MONITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_LOCAL_DIRECTORY_MONITOR, GLocalDirectoryMonitorClass)) - -#define G_LOCAL_DIRECTORY_MONITOR_EXTENSION_POINT_NAME "gio-local-directory-monitor" -#define G_NFS_DIRECTORY_MONITOR_EXTENSION_POINT_NAME "gio-nfs-directory-monitor" - -typedef struct _GLocalDirectoryMonitor GLocalDirectoryMonitor; -typedef struct _GLocalDirectoryMonitorClass GLocalDirectoryMonitorClass; - -struct _GLocalDirectoryMonitor -{ - GFileMonitor parent_instance; - - gchar *dirname; - GFileMonitorFlags flags; - /* For mount emulation */ - gboolean was_mounted; - GUnixMountMonitor *mount_monitor; -}; - -struct _GLocalDirectoryMonitorClass -{ - GFileMonitorClass parent_class; - - gboolean mount_notify; - - gboolean (* is_supported) (void); - void (* start) (GLocalDirectoryMonitor *local_monitor); -}; - -#ifdef G_OS_UNIX -GLIB_AVAILABLE_IN_ALL -#endif -GType g_local_directory_monitor_get_type (void) G_GNUC_CONST; - -GFileMonitor * _g_local_directory_monitor_new (const char *dirname, - GFileMonitorFlags flags, - GMainContext *context, - gboolean is_remote_fs, - gboolean do_start, - GError **error); -void g_local_directory_monitor_start (GLocalDirectoryMonitor *local_monitor); - -/* Actually in glocalfile.c */ -GLocalDirectoryMonitor * g_local_directory_monitor_new_in_worker (const char *pathname, - GFileMonitorFlags flags, - GError **error); - -G_END_DECLS - -#endif /* __G_LOCAL_DIRECTORY_MONITOR_H__ */ diff --git a/gio/glocalfile.c b/gio/glocalfile.c index 846eedb..a5a6beb 100644 --- a/gio/glocalfile.c +++ b/gio/glocalfile.c @@ -56,7 +56,6 @@ #include "glocalfileinputstream.h" #include "glocalfileoutputstream.h" #include "glocalfileiostream.h" -#include "glocaldirectorymonitor.h" #include "glocalfilemonitor.h" #include "gmountprivate.h" #include "gunixmounts.h" @@ -305,6 +304,38 @@ _g_local_file_new (const char *filename) return G_FILE (local); } +/*< internal > + * g_local_file_new_from_dirname_and_basename: + * @dirname: an absolute, canonical directory name + * @basename: the name of a child inside @dirname + * + * Creates a #GFile from @dirname and @basename. + * + * This is more efficient than pasting the fields together for yourself + * and creating a #GFile from the result, and also more efficient than + * creating a #GFile for the dirname and using g_file_get_child(). + * + * @dirname must be canonical, as per GLocalFile's opinion of what + * canonical means. This means that you should only pass strings that + * were returned by _g_local_file_get_filename(). + * + * Returns: a #GFile + */ +GFile * +g_local_file_new_from_dirname_and_basename (const gchar *dirname, + const gchar *basename) +{ + GLocalFile *local; + + g_return_val_if_fail (dirname != NULL, NULL); + g_return_val_if_fail (basename && basename[0] && !strchr (basename, '/'), NULL); + + local = g_object_new (G_TYPE_LOCAL_FILE, NULL); + local->filename = g_build_filename (dirname, basename, NULL); + + return G_FILE (local); +} + static gboolean g_local_file_is_native (GFile *file) { @@ -1674,13 +1705,17 @@ static char * find_topdir_for (const char *file) { char *dir; + char *mountpoint = NULL; dev_t dir_dev; dir = get_parent (file, &dir_dev); if (dir == NULL) return NULL; - return find_mountpoint_for (dir, dir_dev); + mountpoint = find_mountpoint_for (dir, dir_dev); + g_free (dir); + + return mountpoint; } static char * @@ -2068,6 +2103,34 @@ g_local_file_trash (GFile *file, (void) g_close (fd, NULL); + /* Write the full content of the info file before trashing to make + * sure someone doesn't read an empty file. See #749314 + */ + + /* Use absolute names for homedir */ + if (is_homedir_trash) + original_name = g_strdup (local->filename); + else + original_name = try_make_relative (local->filename, topdir); + original_name_escaped = g_uri_escape_string (original_name, "/", FALSE); + + g_free (original_name); + g_free (topdir); + + { + time_t t; + struct tm now; + t = time (NULL); + localtime_r (&t, &now); + delete_time[0] = 0; + strftime(delete_time, sizeof (delete_time), "%Y-%m-%dT%H:%M:%S", &now); + } + + data = g_strdup_printf ("[Trash Info]\nPath=%s\nDeletionDate=%s\n", + original_name_escaped, delete_time); + + g_file_set_contents (infofile, data, -1, NULL); + /* TODO: Maybe we should verify that you can delete the file from the trash before moving it? OTOH, that is hard, as it needs a recursive scan */ @@ -2081,7 +2144,6 @@ g_local_file_trash (GFile *file, g_unlink (infofile); - g_free (topdir); g_free (trashname); g_free (infofile); g_free (trashfile); @@ -2111,29 +2173,6 @@ g_local_file_trash (GFile *file, /* TODO: Do we need to update mtime/atime here after the move? */ - /* Use absolute names for homedir */ - if (is_homedir_trash) - original_name = g_strdup (local->filename); - else - original_name = try_make_relative (local->filename, topdir); - original_name_escaped = g_uri_escape_string (original_name, "/", FALSE); - - g_free (original_name); - g_free (topdir); - - { - time_t t; - struct tm now; - t = time (NULL); - localtime_r (&t, &now); - delete_time[0] = 0; - strftime(delete_time, sizeof (delete_time), "%Y-%m-%dT%H:%M:%S", &now); - } - - data = g_strdup_printf ("[Trash Info]\nPath=%s\nDeletionDate=%s\n", - original_name_escaped, delete_time); - - g_file_set_contents (infofile, data, -1, NULL); g_free (infofile); g_free (data); @@ -2419,8 +2458,8 @@ g_local_file_move (GFile *source, #ifdef G_OS_WIN32 -static gboolean -is_remote (const gchar *filename) +gboolean +g_local_file_is_remote (const gchar *filename) { return FALSE; } @@ -2476,8 +2515,8 @@ is_remote_fs (const gchar *filename) return FALSE; } -static gboolean -is_remote (const gchar *filename) +gboolean +g_local_file_is_remote (const gchar *filename) { static gboolean remote_home; static gsize initialized; @@ -2504,8 +2543,9 @@ g_local_file_monitor_dir (GFile *file, GCancellable *cancellable, GError **error) { - GLocalFile* local_file = G_LOCAL_FILE(file); - return _g_local_directory_monitor_new (local_file->filename, flags, NULL, is_remote (local_file->filename), TRUE, error); + GLocalFile *local_file = G_LOCAL_FILE (file); + + return g_local_file_monitor_new_for_path (local_file->filename, TRUE, flags, error); } static GFileMonitor* @@ -2514,31 +2554,11 @@ g_local_file_monitor_file (GFile *file, GCancellable *cancellable, GError **error) { - GLocalFile* local_file = G_LOCAL_FILE(file); - return _g_local_file_monitor_new (local_file->filename, flags, NULL, is_remote (local_file->filename), TRUE, error); -} - -GLocalDirectoryMonitor * -g_local_directory_monitor_new_in_worker (const char *pathname, - GFileMonitorFlags flags, - GError **error) -{ - return (gpointer) _g_local_directory_monitor_new (pathname, flags, - GLIB_PRIVATE_CALL (g_get_worker_context) (), - is_remote (pathname), FALSE, error); -} + GLocalFile *local_file = G_LOCAL_FILE (file); -GLocalFileMonitor * -g_local_file_monitor_new_in_worker (const char *pathname, - GFileMonitorFlags flags, - GError **error) -{ - return (gpointer) _g_local_file_monitor_new (pathname, flags, - GLIB_PRIVATE_CALL (g_get_worker_context) (), - is_remote (pathname), FALSE, error); + return g_local_file_monitor_new_for_path (local_file->filename, FALSE, flags, error); } - /* Here is the GLocalFile implementation of g_file_measure_disk_usage(). * * If available, we use fopenat() in preference to filenames for @@ -2648,10 +2668,38 @@ g_local_file_measure_size_of_file (gint parent_fd, #if defined (AT_FDCWD) if (fstatat (parent_fd, name->data, &buf, AT_SYMLINK_NOFOLLOW) != 0) -#else + return g_local_file_measure_size_error (state->flags, errno, name, error); +#elif defined (HAVE_LSTAT) || !defined (G_OS_WIN32) if (g_lstat (name->data, &buf) != 0) -#endif return g_local_file_measure_size_error (state->flags, errno, name, error); +#else + { + const char *filename = (const gchar *) name->data; + wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL); + int retval; + int save_errno; + int len; + + if (wfilename == NULL) + return g_local_file_measure_size_error (state->flags, errno, name, error); + + len = wcslen (wfilename); + while (len > 0 && G_IS_DIR_SEPARATOR (wfilename[len-1])) + len--; + if (len > 0 && + (!g_path_is_absolute (filename) || len > g_path_skip_root (filename) - filename)) + wfilename[len] = '\0'; + + retval = _wstati64 (wfilename, &buf); + save_errno = errno; + + g_free (wfilename); + + errno = save_errno; + if (retval != 0) + return g_local_file_measure_size_error (state->flags, errno, name, error); + } +#endif if (name->next) { diff --git a/gio/glocalfile.h b/gio/glocalfile.h index 8a8035b..6b14222 100644 --- a/gio/glocalfile.h +++ b/gio/glocalfile.h @@ -46,6 +46,11 @@ GFile * _g_local_file_new (const char *filename); const char * _g_local_file_get_filename (GLocalFile *file); +gboolean g_local_file_is_remote (const gchar *filename); + +GFile * g_local_file_new_from_dirname_and_basename (const char *dirname, + const char *basename); + G_END_DECLS #endif /* __G_LOCAL_FILE_H__ */ diff --git a/gio/glocalfileenumerator.c b/gio/glocalfileenumerator.c index 60c9b9a..8f0d091 100644 --- a/gio/glocalfileenumerator.c +++ b/gio/glocalfileenumerator.c @@ -232,11 +232,15 @@ _g_local_file_enumerator_new (GLocalFile *file, dir = opendir (filename); if (dir == NULL) { + gchar *utf8_filename; errsv = errno; - g_set_error_literal (error, G_IO_ERROR, - g_io_error_from_errno (errsv), - g_strerror (errsv)); + utf8_filename = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL); + g_set_error (error, G_IO_ERROR, + g_io_error_from_errno (errsv), + "Error opening directory '%s': %s", + utf8_filename, g_strerror (errsv)); + g_free (utf8_filename); g_free (filename); return NULL; } diff --git a/gio/glocalfileinfo.c b/gio/glocalfileinfo.c index f75a0d2..620320f 100644 --- a/gio/glocalfileinfo.c +++ b/gio/glocalfileinfo.c @@ -974,6 +974,18 @@ set_info_from_stat (GFileInfo *info, _g_file_info_set_attribute_uint32_by_id (info, G_FILE_ATTRIBUTE_ID_TIME_CHANGED_USEC, statbuf->st_ctim.tv_nsec / 1000); #endif +#if defined (HAVE_STRUCT_STAT_ST_BIRTHTIME) && defined (HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC) + _g_file_info_set_attribute_uint64_by_id (info, G_FILE_ATTRIBUTE_ID_TIME_CREATED, statbuf->st_birthtime); + _g_file_info_set_attribute_uint32_by_id (info, G_FILE_ATTRIBUTE_ID_TIME_CREATED_USEC, statbuf->st_birthtimensec / 1000); +#elif defined (HAVE_STRUCT_STAT_ST_BIRTHTIM) && defined (HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC) + _g_file_info_set_attribute_uint64_by_id (info, G_FILE_ATTRIBUTE_ID_TIME_CREATED, statbuf->st_birthtim.tv_sec); + _g_file_info_set_attribute_uint32_by_id (info, G_FILE_ATTRIBUTE_ID_TIME_CREATED_USEC, statbuf->st_birthtim.tv_nsec / 1000); +#elif defined (HAVE_STRUCT_STAT_ST_BIRTHTIME) + _g_file_info_set_attribute_uint64_by_id (info, G_FILE_ATTRIBUTE_ID_TIME_CREATED, statbuf->st_birthtime); +#elif defined (HAVE_STRUCT_STAT_ST_BIRTHTIM) + _g_file_info_set_attribute_uint64_by_id (info, G_FILE_ATTRIBUTE_ID_TIME_CREATED, statbuf->st_birthtim); +#endif + if (_g_file_attribute_matcher_matches_id (attribute_matcher, G_FILE_ATTRIBUTE_ID_ETAG_VALUE)) { @@ -1084,10 +1096,8 @@ lookup_uid_data (uid_t uid) data = g_new0 (UidData, 1); -#if defined(HAVE_POSIX_GETPWUID_R) +#if defined(HAVE_GETPWUID_R) getpwuid_r (uid, &pwbuf, buffer, sizeof(buffer), &pwbufp); -#elif defined(HAVE_NONPOSIX_GETPWUID_R) - pwbufp = getpwuid_r (uid, &pwbuf, buffer, sizeof(buffer)); #else pwbufp = getpwuid (uid); #endif @@ -1172,10 +1182,8 @@ lookup_gid_name (gid_t gid) if (name) return name; -#if defined (HAVE_POSIX_GETGRGID_R) +#if defined (HAVE_GETGRGID_R) getgrgid_r (gid, &gbuf, buffer, sizeof(buffer), &gbufp); -#elif defined (HAVE_NONPOSIX_GETGRGID_R) - gbufp = getgrgid_r (gid, &gbuf, buffer, sizeof(buffer)); #else gbufp = getgrgid (gid); #endif @@ -1228,6 +1236,17 @@ get_content_type (const char *basename, return g_content_type_from_mime_type ("inode/blockdevice"); else if (statbuf != NULL && S_ISFIFO(statbuf->st_mode)) return g_content_type_from_mime_type ("inode/fifo"); + else if (statbuf != NULL && S_ISREG(statbuf->st_mode) && statbuf->st_size == 0) + { + /* Don't sniff zero-length files in order to avoid reading files + * that appear normal but are not (eg: files in /proc and /sys) + * + * Note that we need to return text/plain here so that + * newly-created text files are opened by the text editor. + * See https://bugzilla.gnome.org/show_bug.cgi?id=755795 + */ + return g_content_type_from_mime_type ("text/plain"); + } #endif #ifdef S_ISSOCK else if (statbuf != NULL && S_ISSOCK(statbuf->st_mode)) @@ -1237,7 +1256,7 @@ get_content_type (const char *basename, { char *content_type; gboolean result_uncertain; - + content_type = g_content_type_guess (basename, NULL, 0, &result_uncertain); #ifndef G_OS_WIN32 diff --git a/gio/glocalfilemonitor.c b/gio/glocalfilemonitor.c index 818440b..49a4dd2 100644 --- a/gio/glocalfilemonitor.c +++ b/gio/glocalfilemonitor.c @@ -1,5 +1,5 @@ /* 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 @@ -25,57 +25,770 @@ #include "giomodule-priv.h" #include "gioerror.h" #include "glibintl.h" +#include "glocalfile.h" +#include "glib-private.h" #include +#define DEFAULT_RATE_LIMIT 800 * G_TIME_SPAN_MILLISECOND +#define VIRTUAL_CHANGES_DONE_DELAY 2 * G_TIME_SPAN_SECOND -enum -{ - PROP_0, - PROP_FILENAME, - PROP_FLAGS +/* GFileMonitorSource is a GSource responsible for emitting the changed + * signals in the owner-context of the GFileMonitor. + * + * It contains functionality for cross-thread queuing of events. It + * also handles merging of CHANGED events and emission of CHANGES_DONE + * events. + * + * We use the "priv" pointer in the external struct to store it. + */ +struct _GFileMonitorSource { + GSource source; + + GMutex lock; + gpointer instance; + GFileMonitorFlags flags; + gchar *dirname; + gchar *basename; + gchar *filename; + GSequence *pending_changes; /* sorted by ready time */ + GHashTable *pending_changes_table; + GQueue event_queue; + gint64 rate_limit; }; -G_DEFINE_ABSTRACT_TYPE (GLocalFileMonitor, g_local_file_monitor, G_TYPE_FILE_MONITOR) +/* PendingChange is a struct to keep track of a file that needs to have + * (at least) a CHANGES_DONE_HINT event sent for it in the near future. + * + * If 'dirty' is TRUE then a CHANGED event also needs to be sent. + * + * last_emission is the last time a CHANGED event was emitted. It is + * used to calculate the time to send the next event. + */ +typedef struct { + gchar *child; + guint64 last_emission : 63; + guint64 dirty : 1; +} PendingChange; + +/* QueuedEvent is a signal that will be sent immediately, as soon as the + * source gets a chance to dispatch. The existence of any queued event + * implies that the source is ready now. + */ +typedef struct +{ + GFileMonitorEvent event_type; + GFile *child; + GFile *other; +} QueuedEvent; + +static gint64 +pending_change_get_ready_time (const PendingChange *change, + GFileMonitorSource *fms) +{ + if (change->dirty) + return change->last_emission + fms->rate_limit; + else + return change->last_emission + VIRTUAL_CHANGES_DONE_DELAY; +} + +static int +pending_change_compare_ready_time (gconstpointer a_p, + gconstpointer b_p, + gpointer user_data) +{ + GFileMonitorSource *fms = user_data; + const PendingChange *a = a_p; + const PendingChange *b = b_p; + gint64 ready_time_a; + gint64 ready_time_b; + + ready_time_a = pending_change_get_ready_time (a, fms); + ready_time_b = pending_change_get_ready_time (b, fms); + + if (ready_time_a < ready_time_b) + return -1; + else + return ready_time_a > ready_time_b; +} static void -g_local_file_monitor_init (GLocalFileMonitor* local_monitor) +pending_change_free (gpointer data) { + PendingChange *change = data; + + g_free (change->child); + + g_slice_free (PendingChange, change); } static void -g_local_file_monitor_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) +queued_event_free (QueuedEvent *event) { - GLocalFileMonitor *local_monitor = G_LOCAL_FILE_MONITOR (object); + g_object_unref (event->child); + if (event->other) + g_object_unref (event->other); + + g_slice_free (QueuedEvent, event); +} + +static gint64 +g_file_monitor_source_get_ready_time (GFileMonitorSource *fms) +{ + GSequenceIter *iter; + + if (fms->event_queue.length) + return 0; + + iter = g_sequence_get_begin_iter (fms->pending_changes); + if (g_sequence_iter_is_end (iter)) + return -1; + + return pending_change_get_ready_time (g_sequence_get (iter), fms); +} + +static void +g_file_monitor_source_update_ready_time (GFileMonitorSource *fms) +{ + g_source_set_ready_time ((GSource *) fms, g_file_monitor_source_get_ready_time (fms)); +} + +static GSequenceIter * +g_file_monitor_source_find_pending_change (GFileMonitorSource *fms, + const gchar *child) +{ + return g_hash_table_lookup (fms->pending_changes_table, child); +} + +static void +g_file_monitor_source_add_pending_change (GFileMonitorSource *fms, + const gchar *child, + gint64 now) +{ + PendingChange *change; + GSequenceIter *iter; + + change = g_slice_new (PendingChange); + change->child = g_strdup (child); + change->last_emission = now; + change->dirty = FALSE; + + iter = g_sequence_insert_sorted (fms->pending_changes, change, pending_change_compare_ready_time, fms); + g_hash_table_insert (fms->pending_changes_table, change->child, iter); +} + +static gboolean +g_file_monitor_source_set_pending_change_dirty (GFileMonitorSource *fms, + GSequenceIter *iter) +{ + PendingChange *change; + + change = g_sequence_get (iter); + + /* if it was already dirty then this change is 'uninteresting' */ + if (change->dirty) + return FALSE; + + change->dirty = TRUE; + + g_sequence_sort_changed (iter, pending_change_compare_ready_time, fms); + + return TRUE; +} + +static gboolean +g_file_monitor_source_get_pending_change_dirty (GFileMonitorSource *fms, + GSequenceIter *iter) +{ + PendingChange *change; + + change = g_sequence_get (iter); + + return change->dirty; +} + +static void +g_file_monitor_source_remove_pending_change (GFileMonitorSource *fms, + GSequenceIter *iter, + const gchar *child) +{ + /* must remove the hash entry first -- its key is owned by the data + * which will be freed when removing the sequence iter + */ + g_hash_table_remove (fms->pending_changes_table, child); + g_sequence_remove (iter); +} + +static void +g_file_monitor_source_queue_event (GFileMonitorSource *fms, + GFileMonitorEvent event_type, + const gchar *child, + GFile *other) +{ + QueuedEvent *event; + + event = g_slice_new (QueuedEvent); + event->event_type = event_type; + if (child) + event->child = g_local_file_new_from_dirname_and_basename (fms->dirname, child); + else if (fms->dirname) + event->child = _g_local_file_new (fms->dirname); + else if (fms->filename) + event->child = _g_local_file_new (fms->filename); + event->other = other; + if (other) + g_object_ref (other); + + g_queue_push_tail (&fms->event_queue, event); +} - switch (property_id) +static gboolean +g_file_monitor_source_file_changed (GFileMonitorSource *fms, + const gchar *child, + gint64 now) +{ + GSequenceIter *pending; + gboolean interesting; + + pending = g_file_monitor_source_find_pending_change (fms, child); + + /* If there is no pending change, emit one and create a record, + * else: just mark the existing record as dirty. + */ + if (!pending) + { + g_file_monitor_source_queue_event (fms, G_FILE_MONITOR_EVENT_CHANGED, child, NULL); + g_file_monitor_source_add_pending_change (fms, child, now); + interesting = TRUE; + } + else + interesting = g_file_monitor_source_set_pending_change_dirty (fms, pending); + + g_file_monitor_source_update_ready_time (fms); + + return interesting; +} + +static void +g_file_monitor_source_file_changes_done (GFileMonitorSource *fms, + const gchar *child) +{ + GSequenceIter *pending; + + pending = g_file_monitor_source_find_pending_change (fms, child); + if (pending) { - case PROP_FILENAME: - local_monitor->filename = g_value_dup_string (value); + /* If it is dirty, make sure we push out the last CHANGED event */ + if (g_file_monitor_source_get_pending_change_dirty (fms, pending)) + g_file_monitor_source_queue_event (fms, G_FILE_MONITOR_EVENT_CHANGED, child, NULL); + + g_file_monitor_source_queue_event (fms, G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT, child, NULL); + g_file_monitor_source_remove_pending_change (fms, pending, child); + } +} + +static void +g_file_monitor_source_file_created (GFileMonitorSource *fms, + const gchar *child, + gint64 event_time) +{ + /* Unlikely, but if we have pending changes for this filename, make + * sure we flush those out first, before creating the new ones. + */ + g_file_monitor_source_file_changes_done (fms, child); + + /* Emit CREATE and add a pending changes record */ + g_file_monitor_source_queue_event (fms, G_FILE_MONITOR_EVENT_CREATED, child, NULL); + g_file_monitor_source_add_pending_change (fms, child, event_time); +} + +static void +g_file_monitor_source_send_event (GFileMonitorSource *fms, + GFileMonitorEvent event_type, + const gchar *child, + GFile *other) +{ + /* always flush any pending changes before we queue a new event */ + g_file_monitor_source_file_changes_done (fms, child); + g_file_monitor_source_queue_event (fms, event_type, child, other); +} + +static void +g_file_monitor_source_send_synthetic_created (GFileMonitorSource *fms, + const gchar *child) +{ + g_file_monitor_source_file_changes_done (fms, child); + g_file_monitor_source_queue_event (fms, G_FILE_MONITOR_EVENT_CREATED, child, NULL); + g_file_monitor_source_queue_event (fms, G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT, child, NULL); +} + +static gboolean +is_basename (const gchar *name) +{ + if (name[0] == '.' && ((name[1] == '.' && name[2] == '\0') || name[1] == '\0')) + return FALSE; + + return !strchr (name, '/'); +} + +gboolean +g_file_monitor_source_handle_event (GFileMonitorSource *fms, + GFileMonitorEvent event_type, + const gchar *child, + const gchar *rename_to, + GFile *other, + gint64 event_time) +{ + gboolean interesting = TRUE; + + g_assert (!child || is_basename (child)); + g_assert (!rename_to || is_basename (rename_to)); + + if (fms->basename && (!child || !g_str_equal (child, fms->basename)) + && (!rename_to || !g_str_equal (rename_to, fms->basename))) + return TRUE; + + g_mutex_lock (&fms->lock); + + /* monitor is already gone -- don't bother */ + if (!fms->instance) + { + g_mutex_unlock (&fms->lock); + return TRUE; + } + + switch (event_type) + { + case G_FILE_MONITOR_EVENT_CREATED: + g_assert (!other && !rename_to); + g_file_monitor_source_file_created (fms, child, event_time); break; - case PROP_FLAGS: - local_monitor->flags = g_value_get_flags (value); + case G_FILE_MONITOR_EVENT_CHANGED: + g_assert (!other && !rename_to); + interesting = g_file_monitor_source_file_changed (fms, child, event_time); break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + case G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT: + g_assert (!other && !rename_to); + g_file_monitor_source_file_changes_done (fms, child); + break; + + case G_FILE_MONITOR_EVENT_MOVED_IN: + g_assert (!rename_to); + if (fms->flags & G_FILE_MONITOR_WATCH_MOVES) + g_file_monitor_source_send_event (fms, G_FILE_MONITOR_EVENT_MOVED_IN, child, other); + else + g_file_monitor_source_send_synthetic_created (fms, child); + break; + + case G_FILE_MONITOR_EVENT_MOVED_OUT: + g_assert (!rename_to); + if (fms->flags & G_FILE_MONITOR_WATCH_MOVES) + g_file_monitor_source_send_event (fms, G_FILE_MONITOR_EVENT_MOVED_OUT, child, other); + else if (other && (fms->flags & G_FILE_MONITOR_SEND_MOVED)) + g_file_monitor_source_send_event (fms, G_FILE_MONITOR_EVENT_MOVED, child, other); + else + g_file_monitor_source_send_event (fms, G_FILE_MONITOR_EVENT_DELETED, child, NULL); + break; + + case G_FILE_MONITOR_EVENT_RENAMED: + g_assert (!other && rename_to); + if (fms->flags & G_FILE_MONITOR_WATCH_MOVES) + { + GFile *other; + + other = g_local_file_new_from_dirname_and_basename (fms->dirname, rename_to); + g_file_monitor_source_file_changes_done (fms, rename_to); + g_file_monitor_source_send_event (fms, G_FILE_MONITOR_EVENT_RENAMED, child, other); + g_object_unref (other); + } + else if (fms->flags & G_FILE_MONITOR_SEND_MOVED) + { + GFile *other; + + other = g_local_file_new_from_dirname_and_basename (fms->dirname, rename_to); + g_file_monitor_source_file_changes_done (fms, rename_to); + g_file_monitor_source_send_event (fms, G_FILE_MONITOR_EVENT_MOVED, child, other); + g_object_unref (other); + } + else + { + g_file_monitor_source_send_event (fms, G_FILE_MONITOR_EVENT_DELETED, child, NULL); + g_file_monitor_source_send_synthetic_created (fms, rename_to); + } + break; + + case G_FILE_MONITOR_EVENT_DELETED: + case G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED: + case G_FILE_MONITOR_EVENT_PRE_UNMOUNT: + case G_FILE_MONITOR_EVENT_UNMOUNTED: + g_assert (!other && !rename_to); + g_file_monitor_source_send_event (fms, event_type, child, NULL); break; + + case G_FILE_MONITOR_EVENT_MOVED: + /* was never available in this API */ + default: + g_assert_not_reached (); } + + g_file_monitor_source_update_ready_time (fms); + + g_mutex_unlock (&fms->lock); + + return interesting; } -void -g_local_file_monitor_start (GLocalFileMonitor *local_monitor) +static gint64 +g_file_monitor_source_get_rate_limit (GFileMonitorSource *fms) { - GLocalFileMonitorClass *class; + gint64 rate_limit; + + g_mutex_lock (&fms->lock); + rate_limit = fms->rate_limit; + g_mutex_unlock (&fms->lock); + + return rate_limit; +} + +static gboolean +g_file_monitor_source_set_rate_limit (GFileMonitorSource *fms, + gint64 rate_limit) +{ + gboolean changed; + + g_mutex_lock (&fms->lock); + + if (rate_limit != fms->rate_limit) + { + fms->rate_limit = rate_limit; + + g_sequence_sort (fms->pending_changes, pending_change_compare_ready_time, fms); + g_file_monitor_source_update_ready_time (fms); + + changed = TRUE; + } + else + changed = FALSE; - class = G_LOCAL_FILE_MONITOR_GET_CLASS (local_monitor); + g_mutex_unlock (&fms->lock); - if (class->start) - class->start (local_monitor); + return changed; +} + +static gboolean +g_file_monitor_source_dispatch (GSource *source, + GSourceFunc callback, + gpointer user_data) +{ + GFileMonitorSource *fms = (GFileMonitorSource *) source; + QueuedEvent *event; + GQueue event_queue; + gint64 now; + + /* make sure the monitor still exists */ + if (!fms->instance) + return FALSE; + + now = g_source_get_time (source); + + /* Acquire the lock once and grab all events in one go, handling the + * queued events first. This avoids strange possibilities in cases of + * long delays, such as CHANGED events coming before CREATED events. + * + * We do this by converting the applicable pending changes into queued + * events (after the ones already queued) and then stealing the entire + * event queue in one go. + */ + g_mutex_lock (&fms->lock); + + /* Create events for any pending changes that are due to fire */ + while (!g_sequence_is_empty (fms->pending_changes)) + { + GSequenceIter *iter = g_sequence_get_begin_iter (fms->pending_changes); + PendingChange *pending = g_sequence_get (iter); + + /* We've gotten to a pending change that's not ready. Stop. */ + if (pending_change_get_ready_time (pending, fms) > now) + break; + + if (pending->dirty) + { + /* It's time to send another CHANGED and update the record */ + g_file_monitor_source_queue_event (fms, G_FILE_MONITOR_EVENT_CHANGED, pending->child, NULL); + pending->last_emission = now; + pending->dirty = FALSE; + + g_sequence_sort_changed (iter, pending_change_compare_ready_time, fms); + } + else + { + /* It's time to send CHANGES_DONE and remove the pending record */ + g_file_monitor_source_queue_event (fms, G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT, pending->child, NULL); + g_file_monitor_source_remove_pending_change (fms, iter, pending->child); + } + } + + /* Steal the queue */ + memcpy (&event_queue, &fms->event_queue, sizeof event_queue); + memset (&fms->event_queue, 0, sizeof fms->event_queue); + + g_file_monitor_source_update_ready_time (fms); + + g_mutex_unlock (&fms->lock); + + /* We now have our list of events to deliver */ + while ((event = g_queue_pop_head (&event_queue))) + { + /* an event handler could destroy 'instance', so check each time */ + if (fms->instance) + g_file_monitor_emit_event (fms->instance, event->child, event->other, event->event_type); + + queued_event_free (event); + } + + return TRUE; +} + +static void +g_file_monitor_source_dispose (GFileMonitorSource *fms) +{ + g_mutex_lock (&fms->lock); + + if (fms->instance) + { + GHashTableIter iter; + gpointer seqiter; + QueuedEvent *event; + + g_hash_table_iter_init (&iter, fms->pending_changes_table); + while (g_hash_table_iter_next (&iter, NULL, &seqiter)) + { + g_hash_table_iter_remove (&iter); + g_sequence_remove (seqiter); + } + + while ((event = g_queue_pop_head (&fms->event_queue))) + queued_event_free (event); + + g_assert (g_sequence_is_empty (fms->pending_changes)); + g_assert (g_hash_table_size (fms->pending_changes_table) == 0); + g_assert (fms->event_queue.length == 0); + fms->instance = NULL; + + g_file_monitor_source_update_ready_time (fms); + } + + g_mutex_unlock (&fms->lock); + + g_source_destroy ((GSource *) fms); +} + +static void +g_file_monitor_source_finalize (GSource *source) +{ + GFileMonitorSource *fms = (GFileMonitorSource *) source; + + /* should already have been cleared in dispose of the monitor */ + g_assert (fms->instance == NULL); + g_assert (g_sequence_is_empty (fms->pending_changes)); + g_assert (g_hash_table_size (fms->pending_changes_table) == 0); + g_assert (fms->event_queue.length == 0); + + g_hash_table_unref (fms->pending_changes_table); + g_sequence_free (fms->pending_changes); + + g_free (fms->dirname); + g_free (fms->basename); + g_free (fms->filename); + + g_mutex_clear (&fms->lock); +} + +static guint +str_hash0 (gconstpointer str) +{ + return str ? g_str_hash (str) : 0; +} + +static gboolean +str_equal0 (gconstpointer a, + gconstpointer b) +{ + return g_strcmp0 (a, b) == 0; +} + +static GFileMonitorSource * +g_file_monitor_source_new (gpointer instance, + const gchar *filename, + gboolean is_directory, + GFileMonitorFlags flags) +{ + static GSourceFuncs source_funcs = { + NULL, NULL, + g_file_monitor_source_dispatch, + g_file_monitor_source_finalize + }; + GFileMonitorSource *fms; + GSource *source; + + source = g_source_new (&source_funcs, sizeof (GFileMonitorSource)); + fms = (GFileMonitorSource *) source; + + g_mutex_init (&fms->lock); + fms->instance = instance; + fms->pending_changes = g_sequence_new (pending_change_free); + fms->pending_changes_table = g_hash_table_new (str_hash0, str_equal0); + fms->rate_limit = DEFAULT_RATE_LIMIT; + fms->flags = flags; + + if (is_directory) + { + fms->dirname = g_strdup (filename); + fms->basename = NULL; + fms->filename = NULL; + } + else if (flags & G_FILE_MONITOR_WATCH_HARD_LINKS) + { + fms->dirname = NULL; + fms->basename = NULL; + fms->filename = g_strdup (filename); + } + else + { + fms->dirname = g_path_get_dirname (filename); + fms->basename = g_path_get_basename (filename); + fms->filename = NULL; + } + + return fms; +} + +G_DEFINE_ABSTRACT_TYPE (GLocalFileMonitor, g_local_file_monitor, G_TYPE_FILE_MONITOR) + +enum { + PROP_0, + PROP_RATE_LIMIT, +}; + +static void +g_local_file_monitor_get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) +{ + GLocalFileMonitor *monitor = G_LOCAL_FILE_MONITOR (object); + gint64 rate_limit; + + g_assert (prop_id == PROP_RATE_LIMIT); + + rate_limit = g_file_monitor_source_get_rate_limit (monitor->source); + rate_limit /= G_TIME_SPAN_MILLISECOND; + + g_value_set_int (value, rate_limit); +} + +static void +g_local_file_monitor_set_property (GObject *object, guint prop_id, + const GValue *value, GParamSpec *pspec) +{ + GLocalFileMonitor *monitor = G_LOCAL_FILE_MONITOR (object); + gint64 rate_limit; + + g_assert (prop_id == PROP_RATE_LIMIT); + + rate_limit = g_value_get_int (value); + rate_limit *= G_TIME_SPAN_MILLISECOND; + + if (g_file_monitor_source_set_rate_limit (monitor->source, rate_limit)) + g_object_notify (object, "rate-limit"); +} + +#ifndef G_OS_WIN32 +static void +g_local_file_monitor_mounts_changed (GUnixMountMonitor *mount_monitor, + gpointer user_data) +{ + GLocalFileMonitor *local_monitor = user_data; + GUnixMountEntry *mount; + gboolean is_mounted; + GFile *file; + + /* Emulate unmount detection */ + mount = g_unix_mount_at (local_monitor->source->dirname, NULL); + + is_mounted = mount != NULL; + + if (mount) + g_unix_mount_free (mount); + + if (local_monitor->was_mounted != is_mounted) + { + if (local_monitor->was_mounted && !is_mounted) + { + file = g_file_new_for_path (local_monitor->source->dirname); + g_file_monitor_emit_event (G_FILE_MONITOR (local_monitor), file, NULL, G_FILE_MONITOR_EVENT_UNMOUNTED); + g_object_unref (file); + } + local_monitor->was_mounted = is_mounted; + } +} +#endif + +static void +g_local_file_monitor_start (GLocalFileMonitor *local_monitor, + const gchar *filename, + gboolean is_directory, + GFileMonitorFlags flags, + GMainContext *context) +{ + GLocalFileMonitorClass *class = G_LOCAL_FILE_MONITOR_GET_CLASS (local_monitor); + GFileMonitorSource *source; + + g_return_if_fail (G_IS_LOCAL_FILE_MONITOR (local_monitor)); + + g_assert (!local_monitor->source); + + source = g_file_monitor_source_new (local_monitor, filename, is_directory, flags); + local_monitor->source = source; /* owns the ref */ + + if (is_directory && !class->mount_notify && (flags & G_FILE_MONITOR_WATCH_MOUNTS)) + { +#ifdef G_OS_WIN32 + /*claim everything was mounted */ + local_monitor->was_mounted = TRUE; +#else + GUnixMountEntry *mount; + + /* Emulate unmount detection */ + + mount = g_unix_mount_at (local_monitor->source->dirname, NULL); + + local_monitor->was_mounted = mount != NULL; + + if (mount) + g_unix_mount_free (mount); + + local_monitor->mount_monitor = g_unix_mount_monitor_get (); + g_signal_connect_object (local_monitor->mount_monitor, "mounts-changed", + G_CALLBACK (g_local_file_monitor_mounts_changed), local_monitor, 0); +#endif + } + + G_LOCAL_FILE_MONITOR_GET_CLASS (local_monitor)->start (local_monitor, + source->dirname, source->basename, source->filename, + source); + + g_source_attach ((GSource *) source, context); +} + +static void +g_local_file_monitor_dispose (GObject *object) +{ + GLocalFileMonitor *local_monitor = G_LOCAL_FILE_MONITOR (object); + + g_file_monitor_source_dispose (local_monitor->source); + + G_OBJECT_CLASS (g_local_file_monitor_parent_class)->dispose (object); } static void @@ -83,49 +796,32 @@ g_local_file_monitor_finalize (GObject *object) { GLocalFileMonitor *local_monitor = G_LOCAL_FILE_MONITOR (object); - g_free (local_monitor->filename); + g_source_unref ((GSource *) local_monitor->source); G_OBJECT_CLASS (g_local_file_monitor_parent_class)->finalize (object); } -static void g_local_file_monitor_class_init (GLocalFileMonitorClass *klass) +static void +g_local_file_monitor_init (GLocalFileMonitor* local_monitor) +{ +} + +static void g_local_file_monitor_class_init (GLocalFileMonitorClass *class) { - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GObjectClass *gobject_class = G_OBJECT_CLASS (class); + gobject_class->get_property = g_local_file_monitor_get_property; gobject_class->set_property = g_local_file_monitor_set_property; + gobject_class->dispose = g_local_file_monitor_dispose; gobject_class->finalize = g_local_file_monitor_finalize; - g_object_class_install_property (gobject_class, - PROP_FILENAME, - g_param_spec_string ("filename", - P_("File name"), - P_("File name to monitor"), - NULL, - G_PARAM_CONSTRUCT_ONLY| - G_PARAM_WRITABLE| - G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); - - g_object_class_install_property (gobject_class, - PROP_FLAGS, - g_param_spec_flags ("flags", - P_("Monitor flags"), - P_("Monitor flags"), - G_TYPE_FILE_MONITOR_FLAGS, - 0, - G_PARAM_CONSTRUCT_ONLY| - G_PARAM_WRITABLE| - G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB)); -} - -GFileMonitor* -_g_local_file_monitor_new (const char *pathname, - GFileMonitorFlags flags, - GMainContext *context, - gboolean is_remote_fs, - gboolean do_start, - GError **error) -{ - GFileMonitor *monitor = NULL; + g_object_class_override_property (gobject_class, PROP_RATE_LIMIT, "rate-limit"); +} + +static GLocalFileMonitor * +g_local_file_monitor_new (gboolean is_remote_fs, + GError **error) +{ GType type = G_TYPE_INVALID; if (is_remote_fs) @@ -138,14 +834,57 @@ _g_local_file_monitor_new (const char *pathname, "GIO_USE_FILE_MONITOR", G_STRUCT_OFFSET (GLocalFileMonitorClass, is_supported)); - if (type != G_TYPE_INVALID) - monitor = G_FILE_MONITOR (g_object_new (type, "filename", pathname, "flags", flags, "context", context, NULL)); - else - g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, - _("Unable to find default local file monitor type")); + if (type == G_TYPE_INVALID) + { + g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, + _("Unable to find default local file monitor type")); + return NULL; + } + + return g_object_new (type, NULL); +} + +GFileMonitor * +g_local_file_monitor_new_for_path (const gchar *pathname, + gboolean is_directory, + GFileMonitorFlags flags, + GError **error) +{ + GLocalFileMonitor *monitor; + gboolean is_remote_fs; - if (monitor && do_start) - g_local_file_monitor_start (G_LOCAL_FILE_MONITOR (monitor)); + is_remote_fs = g_local_file_is_remote (pathname); + + monitor = g_local_file_monitor_new (is_remote_fs, error); + + if (monitor) + g_local_file_monitor_start (monitor, pathname, is_directory, flags, g_main_context_get_thread_default ()); + + return G_FILE_MONITOR (monitor); +} + +GFileMonitor * +g_local_file_monitor_new_in_worker (const gchar *pathname, + gboolean is_directory, + GFileMonitorFlags flags, + GFileMonitorCallback callback, + gpointer user_data, + GError **error) +{ + GLocalFileMonitor *monitor; + gboolean is_remote_fs; + + is_remote_fs = g_local_file_is_remote (pathname); + + monitor = g_local_file_monitor_new (is_remote_fs, error); + + if (monitor) + { + if (callback) + g_signal_connect (monitor, "changed", G_CALLBACK (callback), user_data); + + g_local_file_monitor_start (monitor, pathname, is_directory, flags, GLIB_PRIVATE_CALL(g_get_worker_context) ()); + } - return monitor; + return G_FILE_MONITOR (monitor); } diff --git a/gio/glocalfilemonitor.h b/gio/glocalfilemonitor.h index aed2e9c..1eacaf6 100644 --- a/gio/glocalfilemonitor.h +++ b/gio/glocalfilemonitor.h @@ -22,6 +22,7 @@ #define __G_LOCAL_FILE_MONITOR_H__ #include +#include "gunixmounts.h" G_BEGIN_DECLS @@ -37,13 +38,15 @@ G_BEGIN_DECLS typedef struct _GLocalFileMonitor GLocalFileMonitor; typedef struct _GLocalFileMonitorClass GLocalFileMonitorClass; +typedef struct _GFileMonitorSource GFileMonitorSource; struct _GLocalFileMonitor { GFileMonitor parent_instance; - gchar *filename; - GFileMonitorFlags flags; + GFileMonitorSource *source; + GUnixMountMonitor *mount_monitor; + gboolean was_mounted; }; struct _GLocalFileMonitorClass @@ -51,7 +54,13 @@ struct _GLocalFileMonitorClass GFileMonitorClass parent_class; gboolean (* is_supported) (void); - void (* start) (GLocalFileMonitor *local_monitor); + void (* start) (GLocalFileMonitor *local_monitor, + const gchar *dirname, + const gchar *basename, + const gchar *filename, + GFileMonitorSource *source); + + gboolean mount_notify; }; #ifdef G_OS_UNIX @@ -59,18 +68,37 @@ GLIB_AVAILABLE_IN_ALL #endif GType g_local_file_monitor_get_type (void) G_GNUC_CONST; -GFileMonitor * _g_local_file_monitor_new (const char *pathname, - GFileMonitorFlags flags, - GMainContext *context, - gboolean is_remote_fs, - gboolean do_start, - GError **error); -void g_local_file_monitor_start (GLocalFileMonitor *local_monitor); - -/* Actually in glocalfile.c */ -GLocalFileMonitor * g_local_file_monitor_new_in_worker (const char *pathname, - GFileMonitorFlags flags, - GError **error); +/* for glocalfile.c */ +GFileMonitor * +g_local_file_monitor_new_for_path (const gchar *pathname, + gboolean is_directory, + GFileMonitorFlags flags, + GError **error); + +/* for various users in glib */ +typedef void (* GFileMonitorCallback) (GFileMonitor *monitor, + GFile *child, + GFile *other, + GFileMonitorEvent event, + gpointer user_data); +GFileMonitor * +g_local_file_monitor_new_in_worker (const gchar *pathname, + gboolean is_directory, + GFileMonitorFlags flags, + GFileMonitorCallback callback, + gpointer user_data, + GError **error); + +/* for implementations of GLocalFileMonitor */ +GLIB_AVAILABLE_IN_2_44 +gboolean +g_file_monitor_source_handle_event (GFileMonitorSource *fms, + GFileMonitorEvent event_type, + const gchar *child, + const gchar *rename_to, + GFile *other, + gint64 event_time); + G_END_DECLS diff --git a/gio/gmemoryoutputstream.c b/gio/gmemoryoutputstream.c index a89701d..90b5587 100644 --- a/gio/gmemoryoutputstream.c +++ b/gio/gmemoryoutputstream.c @@ -422,7 +422,8 @@ g_memory_output_stream_new_resizable (void) * Note that the returned pointer may become invalid on the next * write or truncate operation on the stream. * - * Returns: (transfer none): pointer to the stream's data + * Returns: (transfer none): pointer to the stream's data, or %NULL if the data + * has been stolen **/ gpointer g_memory_output_stream_get_data (GMemoryOutputStream *ostream) @@ -492,7 +493,8 @@ g_memory_output_stream_get_data_size (GMemoryOutputStream *ostream) * * @ostream must be closed before calling this function. * - * Returns: (transfer full): the stream's data + * Returns: (transfer full): the stream's data, or %NULL if it has previously + * been stolen * * Since: 2.26 **/ diff --git a/gio/gmenu.c b/gio/gmenu.c index fe82ba7..e90fb14 100644 --- a/gio/gmenu.c +++ b/gio/gmenu.c @@ -1375,7 +1375,7 @@ g_menu_item_set_icon (GMenuItem *menu_item, GVariant *value; g_return_if_fail (G_IS_MENU_ITEM (menu_item)); - g_return_if_fail (G_IS_ICON (icon)); + g_return_if_fail (icon == NULL || G_IS_ICON (icon)); if (icon != NULL) value = g_icon_serialize (icon); diff --git a/gio/gmenuexporter.c b/gio/gmenuexporter.c index 89cc309..68a59ae 100644 --- a/gio/gmenuexporter.c +++ b/gio/gmenuexporter.c @@ -377,7 +377,7 @@ g_menu_exporter_group_subscribe (GMenuExporterGroup *group, guint id = GPOINTER_TO_INT (key); GMenuExporterMenu *menu = val; - if (g_sequence_get_length (menu->item_links)) + if (!g_sequence_is_empty (menu->item_links)) { g_variant_builder_open (builder, G_VARIANT_TYPE ("(uuaa{sv})")); g_variant_builder_add (builder, "u", group->id); diff --git a/gio/gmenumodel.c b/gio/gmenumodel.c index 612f8e7..4ffe21f 100644 --- a/gio/gmenumodel.c +++ b/gio/gmenumodel.c @@ -21,6 +21,8 @@ #include "gmenumodel.h" +#include "glibintl.h" + /** * SECTION:gmenumodel * @title: GMenuModel @@ -448,7 +450,7 @@ g_menu_model_class_init (GMenuModelClass *class) * reported. The signal is emitted after the modification. **/ g_menu_model_items_changed_signal = - g_signal_new ("items-changed", G_TYPE_MENU_MODEL, + g_signal_new (I_("items-changed"), G_TYPE_MENU_MODEL, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_generic, G_TYPE_NONE, 3, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT); diff --git a/gio/gnativesocketaddress.c b/gio/gnativesocketaddress.c new file mode 100644 index 0000000..c1c1756 --- /dev/null +++ b/gio/gnativesocketaddress.c @@ -0,0 +1,160 @@ +/* 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, see . + * + * Authors: Christian Kellner + * Samuel Cormier-Iijima + */ + +#include +#include +#include + +#include "gnativesocketaddress.h" +#include "gnetworkingprivate.h" +#include "gioerror.h" +#include "glibintl.h" + + +/** + * SECTION:gnativesocketaddress + * @short_description: Native GSocketAddress + * @include: gio/gio.h + * + * An socket address of some unknown native type. + */ + +/** + * GNativeSocketAddress: + * + * An socket address, corresponding to a general struct + * sockadd address of a type not otherwise handled by glib. + */ + +struct _GNativeSocketAddressPrivate +{ + struct sockaddr *sockaddr; + struct sockaddr_storage storage; + gsize sockaddr_len; +}; + +G_DEFINE_TYPE_WITH_PRIVATE (GNativeSocketAddress, g_native_socket_address, G_TYPE_SOCKET_ADDRESS) + +static void +g_native_socket_address_dispose (GObject *object) +{ + GNativeSocketAddress *address = G_NATIVE_SOCKET_ADDRESS (object); + + if (address->priv->sockaddr != (struct sockaddr *)&address->priv->storage) + g_free (address->priv->sockaddr); + + G_OBJECT_CLASS (g_native_socket_address_parent_class)->dispose (object); +} + +static GSocketFamily +g_native_socket_address_get_family (GSocketAddress *address) +{ + GNativeSocketAddress *addr; + + g_return_val_if_fail (G_IS_NATIVE_SOCKET_ADDRESS (address), 0); + + addr = G_NATIVE_SOCKET_ADDRESS (address); + + return addr->priv->sockaddr->sa_family; +} + +static gssize +g_native_socket_address_get_native_size (GSocketAddress *address) +{ + GNativeSocketAddress *addr; + + g_return_val_if_fail (G_IS_NATIVE_SOCKET_ADDRESS (address), 0); + + addr = G_NATIVE_SOCKET_ADDRESS (address); + + return addr->priv->sockaddr_len; +} + +static gboolean +g_native_socket_address_to_native (GSocketAddress *address, + gpointer dest, + gsize destlen, + GError **error) +{ + GNativeSocketAddress *addr; + + g_return_val_if_fail (G_IS_NATIVE_SOCKET_ADDRESS (address), FALSE); + + addr = G_NATIVE_SOCKET_ADDRESS (address); + + if (destlen < addr->priv->sockaddr_len) + { + g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NO_SPACE, + _("Not enough space for socket address")); + return FALSE; + } + + memcpy (dest, addr->priv->sockaddr, addr->priv->sockaddr_len); + return TRUE; +} + +static void +g_native_socket_address_class_init (GNativeSocketAddressClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GSocketAddressClass *gsocketaddress_class = G_SOCKET_ADDRESS_CLASS (klass); + + gobject_class->dispose = g_native_socket_address_dispose; + + gsocketaddress_class->get_family = g_native_socket_address_get_family; + gsocketaddress_class->to_native = g_native_socket_address_to_native; + gsocketaddress_class->get_native_size = g_native_socket_address_get_native_size; +} + +static void +g_native_socket_address_init (GNativeSocketAddress *address) +{ + address->priv = g_native_socket_address_get_instance_private (address); +} + +/** + * g_native_socket_address_new: + * @native: a native address object + * @len: the length of @native, in bytes + * + * Creates a new #GNativeSocketAddress for @native and @len. + * + * Returns: a new #GNativeSocketAddress + * + * Since: 2.46 + */ +GSocketAddress * +g_native_socket_address_new (gpointer native, + gsize len) +{ + GNativeSocketAddress *addr; + + addr = g_object_new (G_TYPE_NATIVE_SOCKET_ADDRESS, NULL); + + if (len <= sizeof(addr->priv->storage)) + addr->priv->sockaddr = (struct sockaddr*)&addr->priv->storage; + else + addr->priv->sockaddr = g_malloc (len); + + memcpy (addr->priv->sockaddr, native, len); + addr->priv->sockaddr_len = len; + return G_SOCKET_ADDRESS (addr); +} diff --git a/gio/gnativesocketaddress.h b/gio/gnativesocketaddress.h new file mode 100644 index 0000000..74d1887 --- /dev/null +++ b/gio/gnativesocketaddress.h @@ -0,0 +1,65 @@ +/* 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, see . + * + * Authors: Christian Kellner + * Samuel Cormier-Iijima + */ + +#ifndef __G_NATIVE_SOCKET_ADDRESS_H__ +#define __G_NATIVE_SOCKET_ADDRESS_H__ + +#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION) +#error "Only can be included directly." +#endif + +#include + +G_BEGIN_DECLS + +#define G_TYPE_NATIVE_SOCKET_ADDRESS (g_native_socket_address_get_type ()) +#define G_NATIVE_SOCKET_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_NATIVE_SOCKET_ADDRESS, GNativeSocketAddress)) +#define G_NATIVE_SOCKET_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_TYPE_NATIVE_SOCKET_ADDRESS, GNativeSocketAddressClass)) +#define G_IS_NATIVE_SOCKET_ADDRESS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_NATIVE_SOCKET_ADDRESS)) +#define G_IS_NATIVE_SOCKET_ADDRESS_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_NATIVE_SOCKET_ADDRESS)) +#define G_NATIVE_SOCKET_ADDRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_NATIVE_SOCKET_ADDRESS, GNativeSocketAddressClass)) + +typedef struct _GNativeSocketAddressClass GNativeSocketAddressClass; +typedef struct _GNativeSocketAddressPrivate GNativeSocketAddressPrivate; + +struct _GNativeSocketAddress +{ + GSocketAddress parent_instance; + + /*< private >*/ + GNativeSocketAddressPrivate *priv; +}; + +struct _GNativeSocketAddressClass +{ + GSocketAddressClass parent_class; +}; + +GLIB_AVAILABLE_IN_2_46 +GType g_native_socket_address_get_type (void) G_GNUC_CONST; + +GLIB_AVAILABLE_IN_2_46 +GSocketAddress *g_native_socket_address_new (gpointer native, + gsize len); + +G_END_DECLS + +#endif /* __G_NATIVE_SOCKET_ADDRESS_H__ */ diff --git a/gio/gnetworkaddress.c b/gio/gnetworkaddress.c index 8e073fd..99c495a 100644 --- a/gio/gnetworkaddress.c +++ b/gio/gnetworkaddress.c @@ -86,6 +86,7 @@ static void g_network_address_get_property (GObject *object, static void g_network_address_connectable_iface_init (GSocketConnectableIface *iface); static GSocketAddressEnumerator *g_network_address_connectable_enumerate (GSocketConnectable *connectable); static GSocketAddressEnumerator *g_network_address_connectable_proxy_enumerate (GSocketConnectable *connectable); +static gchar *g_network_address_connectable_to_string (GSocketConnectable *connectable); G_DEFINE_TYPE_WITH_CODE (GNetworkAddress, g_network_address, G_TYPE_OBJECT, G_ADD_PRIVATE (GNetworkAddress) @@ -99,15 +100,7 @@ g_network_address_finalize (GObject *object) g_free (addr->priv->hostname); g_free (addr->priv->scheme); - - if (addr->priv->sockaddrs) - { - GList *a; - - for (a = addr->priv->sockaddrs; a; a = a->next) - g_object_unref (a->data); - g_list_free (addr->priv->sockaddrs); - } + g_list_free_full (addr->priv->sockaddrs, g_object_unref); G_OBJECT_CLASS (g_network_address_parent_class)->finalize (object); } @@ -153,6 +146,7 @@ g_network_address_connectable_iface_init (GSocketConnectableIface *connectable_i { connectable_iface->enumerate = g_network_address_connectable_enumerate; connectable_iface->proxy_enumerate = g_network_address_connectable_proxy_enumerate; + connectable_iface->to_string = g_network_address_connectable_to_string; } static void @@ -354,7 +348,8 @@ g_network_address_new_loopback (guint16 port) * is deprecated, because it depends on the contents of /etc/services, * which is generally quite sparse on platforms other than Linux.) * - * Returns: (transfer full): the new #GNetworkAddress, or %NULL on error + * Returns: (transfer full) (type GNetworkAddress): the new + * #GNetworkAddress, or %NULL on error * * Since: 2.22 */ @@ -772,7 +767,8 @@ _g_uri_from_authority (const gchar *protocol, * g_network_address_parse() allows #GSocketClient to determine * when to use application-specific proxy protocols. * - * Returns: (transfer full): the new #GNetworkAddress, or %NULL on error + * Returns: (transfer full) (type GNetworkAddress): the new + * #GNetworkAddress, or %NULL on error * * Since: 2.26 */ @@ -1117,3 +1113,27 @@ g_network_address_connectable_proxy_enumerate (GSocketConnectable *connectable) return proxy_enum; } + +static gchar * +g_network_address_connectable_to_string (GSocketConnectable *connectable) +{ + GNetworkAddress *addr; + const gchar *scheme; + guint16 port; + GString *out; /* owned */ + + addr = G_NETWORK_ADDRESS (connectable); + out = g_string_new (""); + + scheme = g_network_address_get_scheme (addr); + if (scheme != NULL) + g_string_append_printf (out, "%s:", scheme); + + g_string_append (out, g_network_address_get_hostname (addr)); + + port = g_network_address_get_port (addr); + if (port != 0) + g_string_append_printf (out, ":%u", port); + + return g_string_free (out, FALSE); +} diff --git a/gio/gnetworkmonitor.c b/gio/gnetworkmonitor.c index b08de47..42cfedc 100644 --- a/gio/gnetworkmonitor.c +++ b/gio/gnetworkmonitor.c @@ -115,6 +115,26 @@ g_network_monitor_get_network_available (GNetworkMonitor *monitor) } /** + * g_network_monitor_get_network_metered: + * @monitor: the #GNetworkMonitor + * + * Checks if the network is metered. + * See #GNetworkMonitor:network-metered for more details. + * + * Returns: whether the connection is metered + * + * Since: 2.46 + */ +gboolean +g_network_monitor_get_network_metered (GNetworkMonitor *monitor) +{ + gboolean metered = FALSE; + + g_object_get (G_OBJECT (monitor), "network-metered", &metered, NULL); + return metered; +} + +/** * g_network_monitor_get_connectivity: * @monitor: the #GNetworkMonitor * @@ -336,6 +356,37 @@ g_network_monitor_default_init (GNetworkMonitorInterface *iface) G_PARAM_STATIC_STRINGS)); /** + * GNetworkMonitor:network-metered: + * + * Whether the network is considered metered. That is, whether the + * system has traffic flowing through the default connection that is + * subject to limitations set by service providers. For example, traffic + * might be billed by the amount of data transmitted, or there might be a + * quota on the amount of traffic per month. This is typical with tethered + * connections (3G and 4G) and in such situations, bandwidth intensive + * applications may wish to avoid network activity where possible if it will + * cost the user money or use up their limited quota. + * + * If more information is required about specific devices then the + * system network management API should be used instead (for example, + * NetworkManager or ConnMan). + * + * If this information is not available then no networks will be + * marked as metered. + * + * See also #GNetworkMonitor:network-available. + * + * Since: 2.46 + */ + g_object_interface_install_property (iface, + g_param_spec_boolean ("network-metered", + P_("Network metered"), + P_("Whether the network is metered"), + FALSE, + G_PARAM_READABLE | + G_PARAM_STATIC_STRINGS)); + + /** * GNetworkMonitor:connectivity: * * More detailed information about the host's network connectivity. diff --git a/gio/gnetworkmonitor.h b/gio/gnetworkmonitor.h index 0a6a42c..10b180a 100644 --- a/gio/gnetworkmonitor.h +++ b/gio/gnetworkmonitor.h @@ -72,6 +72,9 @@ GNetworkMonitor *g_network_monitor_get_default (void); GLIB_AVAILABLE_IN_2_32 gboolean g_network_monitor_get_network_available (GNetworkMonitor *monitor); +GLIB_AVAILABLE_IN_2_46 +gboolean g_network_monitor_get_network_metered (GNetworkMonitor *monitor); + GLIB_AVAILABLE_IN_2_44 GNetworkConnectivity g_network_monitor_get_connectivity (GNetworkMonitor *monitor); diff --git a/gio/gnetworkmonitorbase.c b/gio/gnetworkmonitorbase.c index f0af804..7d34712 100644 --- a/gio/gnetworkmonitorbase.c +++ b/gio/gnetworkmonitorbase.c @@ -39,6 +39,7 @@ enum PROP_0, PROP_NETWORK_AVAILABLE, + PROP_NETWORK_METERED, PROP_CONNECTIVITY }; @@ -119,6 +120,11 @@ g_network_monitor_base_get_property (GObject *object, g_value_set_boolean (value, monitor->priv->is_available); break; + case PROP_NETWORK_METERED: + /* Default to FALSE in the unknown case. */ + g_value_set_boolean (value, FALSE); + break; + case PROP_CONNECTIVITY: g_value_set_enum (value, monitor->priv->is_available ? @@ -160,6 +166,7 @@ g_network_monitor_base_class_init (GNetworkMonitorBaseClass *monitor_class) gobject_class->finalize = g_network_monitor_base_finalize; g_object_class_override_property (gobject_class, PROP_NETWORK_AVAILABLE, "network-available"); + g_object_class_override_property (gobject_class, PROP_NETWORK_METERED, "network-metered"); g_object_class_override_property (gobject_class, PROP_CONNECTIVITY, "connectivity"); } diff --git a/gio/gnetworkmonitornetlink.c b/gio/gnetworkmonitornetlink.c index 21a7ad5..b9ff011 100644 --- a/gio/gnetworkmonitornetlink.c +++ b/gio/gnetworkmonitornetlink.c @@ -293,14 +293,13 @@ read_netlink_messages (GSocket *socket, GNetworkMonitorNetlink *nl = user_data; GInputVector iv; gssize len; - GSocketControlMessage **cmsgs = NULL; - gint num_cmsgs = 0, i, flags; + gint flags; GError *error = NULL; - GCredentials *creds; - uid_t sender; + GSocketAddress *addr; struct nlmsghdr *msg; struct rtmsg *rtmsg; struct rtattr *attr; + struct sockaddr_nl source_sockaddr; gsize attrlen; guint8 *dest, *gateway, *oif; gboolean retval = TRUE; @@ -322,8 +321,8 @@ read_netlink_messages (GSocket *socket, iv.buffer = g_malloc (len); iv.size = len; - len = g_socket_receive_message (nl->priv->sock, NULL, &iv, 1, - &cmsgs, &num_cmsgs, NULL, NULL, &error); + len = g_socket_receive_message (nl->priv->sock, &addr, &iv, 1, + NULL, NULL, NULL, NULL, &error); if (len < 0) { g_warning ("Error on netlink socket: %s", error->message); @@ -333,12 +332,17 @@ read_netlink_messages (GSocket *socket, return FALSE; } - if (num_cmsgs != 1 || !G_IS_UNIX_CREDENTIALS_MESSAGE (cmsgs[0])) - goto done; + if (!g_socket_address_to_native (addr, &source_sockaddr, sizeof (source_sockaddr), &error)) + { + g_warning ("Error on netlink socket: %s", error->message); + g_error_free (error); + if (nl->priv->dump_networks) + finish_dump (nl); + return FALSE; + } - creds = g_unix_credentials_message_get_credentials (G_UNIX_CREDENTIALS_MESSAGE (cmsgs[0])); - sender = g_credentials_get_unix_user (creds, NULL); - if (sender != 0) + /* If the sender port id is 0 (not fakeable) then the message is from the kernel */ + if (source_sockaddr.nl_pid != 0) goto done; msg = (struct nlmsghdr *) iv.buffer; @@ -420,10 +424,6 @@ read_netlink_messages (GSocket *socket, } done: - for (i = 0; i < num_cmsgs; i++) - g_object_unref (cmsgs[i]); - g_free (cmsgs); - g_free (iv.buffer); if (!retval && nl->priv->dump_networks) diff --git a/gio/gnetworkmonitornm.c b/gio/gnetworkmonitornm.c index d052716..afa23f7 100644 --- a/gio/gnetworkmonitornm.c +++ b/gio/gnetworkmonitornm.c @@ -40,6 +40,7 @@ enum PROP_0, PROP_NETWORK_AVAILABLE, + PROP_NETWORK_METERED, PROP_CONNECTIVITY }; @@ -57,6 +58,7 @@ struct _GNetworkMonitorNMPrivate GNetworkConnectivity connectivity; gboolean network_available; + gboolean network_metered; }; #define g_network_monitor_nm_get_type _g_network_monitor_nm_get_type @@ -92,6 +94,10 @@ g_network_monitor_nm_get_property (GObject *object, g_value_set_boolean (value, nm->priv->network_available); break; + case PROP_NETWORK_METERED: + g_value_set_boolean (value, nm->priv->network_metered); + break; + case PROP_CONNECTIVITY: g_value_set_enum (value, nm->priv->connectivity); break; @@ -123,6 +129,27 @@ nm_conn_to_g_conn (int nm_state) } } +static gboolean +nm_metered_to_bool (guint nm_metered) +{ + switch (nm_metered) + { + case 1: /* yes */ + case 3: /* guess-yes */ + return TRUE; + case 0: /* unknown */ + /* We default to FALSE in the unknown-because-you're-not-running-NM + * case, so we should return FALSE in the + * unknown-when-you-are-running-NM case too. */ + case 2: /* no */ + case 4: /* guess-no */ + return FALSE; + default: + g_warning ("Unknown NM metered state %d", nm_metered); + return FALSE; + } +} + static void sync_properties (GNetworkMonitorNM *nm, gboolean emit_signals) @@ -130,6 +157,7 @@ sync_properties (GNetworkMonitorNM *nm, GVariant *v; NMConnectivityState nm_connectivity; gboolean new_network_available; + gboolean new_network_metered; GNetworkConnectivity new_connectivity; v = g_dbus_proxy_get_cached_property (nm->priv->proxy, "Connectivity"); @@ -139,16 +167,31 @@ sync_properties (GNetworkMonitorNM *nm, if (nm_connectivity == NM_CONNECTIVITY_NONE) { new_network_available = FALSE; + new_network_metered = FALSE; new_connectivity = G_NETWORK_CONNECTIVITY_LOCAL; } else { + + /* this is only available post NM 1.0 */ + v = g_dbus_proxy_get_cached_property (nm->priv->proxy, "Metered"); + if (v == NULL) + { + new_network_metered = FALSE; + } + else + { + new_network_metered = nm_metered_to_bool (g_variant_get_uint32 (v)); + g_variant_unref (v); + } + new_network_available = TRUE; new_connectivity = nm_conn_to_g_conn (nm_connectivity); } if (!emit_signals) { + nm->priv->network_metered = new_network_metered; nm->priv->network_available = new_network_available; nm->priv->connectivity = new_connectivity; return; @@ -159,6 +202,11 @@ sync_properties (GNetworkMonitorNM *nm, nm->priv->network_available = new_network_available; g_object_notify (G_OBJECT (nm), "network-available"); } + if (new_network_metered != nm->priv->network_metered) + { + nm->priv->network_metered = new_network_metered; + g_object_notify (G_OBJECT (nm), "network-metered"); + } if (new_connectivity != nm->priv->connectivity) { nm->priv->connectivity = new_connectivity; @@ -307,6 +355,7 @@ g_network_monitor_nm_class_init (GNetworkMonitorNMClass *nl_class) gobject_class->get_property = g_network_monitor_nm_get_property; g_object_class_override_property (gobject_class, PROP_NETWORK_AVAILABLE, "network-available"); + g_object_class_override_property (gobject_class, PROP_NETWORK_METERED, "network-metered"); g_object_class_override_property (gobject_class, PROP_CONNECTIVITY, "connectivity"); } diff --git a/gio/gnetworkservice.c b/gio/gnetworkservice.c index 497d6fd..57c8e8f 100644 --- a/gio/gnetworkservice.c +++ b/gio/gnetworkservice.c @@ -89,6 +89,7 @@ static void g_network_service_get_property (GObject *object, static void g_network_service_connectable_iface_init (GSocketConnectableIface *iface); static GSocketAddressEnumerator *g_network_service_connectable_enumerate (GSocketConnectable *connectable); static GSocketAddressEnumerator *g_network_service_connectable_proxy_enumerate (GSocketConnectable *connectable); +static gchar *g_network_service_connectable_to_string (GSocketConnectable *connectable); G_DEFINE_TYPE_WITH_CODE (GNetworkService, g_network_service, G_TYPE_OBJECT, G_ADD_PRIVATE (GNetworkService) @@ -159,6 +160,7 @@ g_network_service_connectable_iface_init (GSocketConnectableIface *connectable_i { connectable_iface->enumerate = g_network_service_connectable_enumerate; connectable_iface->proxy_enumerate = g_network_service_connectable_proxy_enumerate; + connectable_iface->to_string = g_network_service_connectable_to_string; } static void @@ -478,6 +480,8 @@ g_network_service_address_enumerator_next (GSocketAddressEnumerator *enumerator { if (srv_enum->error == NULL) srv_enum->error = error; + else + g_error_free (error); continue; } @@ -743,3 +747,15 @@ g_network_service_connectable_proxy_enumerate (GSocketConnectable *connectable) return addr_enum; } + +static gchar * +g_network_service_connectable_to_string (GSocketConnectable *connectable) +{ + GNetworkService *service; + + service = G_NETWORK_SERVICE (connectable); + + return g_strdup_printf ("(%s, %s, %s, %s)", service->priv->service, + service->priv->protocol, service->priv->domain, + service->priv->scheme); +} diff --git a/gio/gnotification.c b/gio/gnotification.c index 53c5c6b..2cf03cf 100644 --- a/gio/gnotification.c +++ b/gio/gnotification.c @@ -714,6 +714,7 @@ g_notification_get_priority_nick (GNotification *notification) enum_class = g_type_class_ref (G_TYPE_NOTIFICATION_PRIORITY); value = g_enum_get_value (enum_class, g_notification_get_priority (notification)); + g_assert (value != NULL); nick = g_variant_new_string (value->value_nick); g_type_class_unref (enum_class); diff --git a/gio/gnotificationbackend.c b/gio/gnotificationbackend.c index c1e009d..c5d5b5b 100644 --- a/gio/gnotificationbackend.c +++ b/gio/gnotificationbackend.c @@ -55,7 +55,9 @@ g_notification_backend_new_default (GApplication *application) */ backend->application = application; - backend->dbus_connection = g_object_ref (g_application_get_dbus_connection (application)); + backend->dbus_connection = g_application_get_dbus_connection (application); + if (backend->dbus_connection) + g_object_ref (backend->dbus_connection); return backend; } diff --git a/gio/goutputstream.c b/gio/goutputstream.c index 035465d..9320f8e 100644 --- a/gio/goutputstream.c +++ b/gio/goutputstream.c @@ -40,7 +40,10 @@ * (g_output_stream_flush()). * * To copy the content of an input stream to an output stream without - * manually handling the reads and writes, use g_output_stream_splice(). + * manually handling the reads and writes, use g_output_stream_splice(). + * + * See the documentation for #GIOStream for details of thread safety of + * streaming APIs. * * All of these functions have async variants too. **/ @@ -605,7 +608,8 @@ g_output_stream_real_splice (GOutputStream *stream, if (flags & G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET) { /* But write errors on close are bad! */ - res = g_output_stream_internal_close (stream, cancellable, error); + if (!g_output_stream_internal_close (stream, cancellable, error)) + res = FALSE; } if (res) diff --git a/gio/gpermission.c b/gio/gpermission.c index 0fcd17e..6f3f2c2 100644 --- a/gio/gpermission.c +++ b/gio/gpermission.c @@ -24,7 +24,7 @@ #include "gioerror.h" #include "gioenums.h" #include "gasyncresult.h" -#include "gsimpleasyncresult.h" +#include "gtask.h" #include "glibintl.h" @@ -406,10 +406,11 @@ acquire_or_release_async (GPermission *permission, GAsyncReadyCallback callback, gpointer user_data) { - g_simple_async_report_error_in_idle (G_OBJECT (permission), - callback, user_data, - G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, - "Can't acquire or release permission"); + g_task_report_new_error (permission, + callback, user_data, + NULL, + G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + "Can't acquire or release permission"); } static gboolean @@ -417,8 +418,7 @@ acquire_or_release_finish (GPermission *permission, GAsyncResult *result, GError **error) { - g_async_result_legacy_propagate_error (result, error); - return FALSE; + return g_task_propagate_boolean (G_TASK (result), error); } static void diff --git a/gio/gpollfilemonitor.c b/gio/gpollfilemonitor.c index 10c2d86..f87649e 100644 --- a/gio/gpollfilemonitor.c +++ b/gio/gpollfilemonitor.c @@ -35,7 +35,7 @@ struct _GPollFileMonitor GFileMonitor parent_instance; GFile *file; GFileInfo *last_info; - guint timeout; + GSource *timeout; }; #define POLL_TIME_SECS 5 @@ -72,20 +72,6 @@ g_poll_file_monitor_init (GPollFileMonitor* poll_monitor) { } -static int -safe_strcmp (const char *a, - const char *b) -{ - if (a == NULL && b == NULL) - return 0; - if (a == NULL) - return -1; - if (b == NULL) - return 1; - - return strcmp (a, b); -} - static int calc_event_type (GFileInfo *last, GFileInfo *new) @@ -99,12 +85,10 @@ calc_event_type (GFileInfo *last, if (last != NULL && new == NULL) return G_FILE_MONITOR_EVENT_DELETED; - if (safe_strcmp (g_file_info_get_etag (last), - g_file_info_get_etag (new))) + if (g_strcmp0 (g_file_info_get_etag (last), g_file_info_get_etag (new))) return G_FILE_MONITOR_EVENT_CHANGED; - if (g_file_info_get_size (last) != - g_file_info_get_size (new)) + if (g_file_info_get_size (last) != g_file_info_get_size (new)) return G_FILE_MONITOR_EVENT_CHANGED; return -1; @@ -131,7 +115,8 @@ got_new_info (GObject *source_object, poll_monitor->file, NULL, event); /* We're polling so slowly anyway, so always emit the done hint */ - if (event == G_FILE_MONITOR_EVENT_CHANGED) + if (!g_file_monitor_is_cancelled (G_FILE_MONITOR (poll_monitor)) && + (event == G_FILE_MONITOR_EVENT_CHANGED || event == G_FILE_MONITOR_EVENT_CREATED)) g_file_monitor_emit_event (G_FILE_MONITOR (poll_monitor), poll_monitor->file, NULL, G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT); @@ -171,8 +156,10 @@ poll_file_timeout (gpointer data) static void schedule_poll_timeout (GPollFileMonitor* poll_monitor) { - poll_monitor->timeout = g_timeout_add_seconds (POLL_TIME_SECS, poll_file_timeout, poll_monitor); - } + poll_monitor->timeout = g_timeout_source_new_seconds (POLL_TIME_SECS); + g_source_set_callback (poll_monitor->timeout, poll_file_timeout, poll_monitor, NULL); + g_source_attach (poll_monitor->timeout, g_main_context_get_thread_default ()); +} static void got_initial_info (GObject *source_object, @@ -193,7 +180,7 @@ got_initial_info (GObject *source_object, } /** - * g_poll_file_monitor_new: + * _g_poll_file_monitor_new: * @file: a #GFile. * * Polls @file for changes. @@ -222,8 +209,9 @@ g_poll_file_monitor_cancel (GFileMonitor* monitor) if (poll_monitor->timeout) { - g_source_remove (poll_monitor->timeout); - poll_monitor->timeout = 0; + g_source_destroy (poll_monitor->timeout); + g_source_unref (poll_monitor->timeout); + poll_monitor->timeout = NULL; } return TRUE; diff --git a/gio/gpropertyaction.c b/gio/gpropertyaction.c index 8c4a495..52cee4b 100644 --- a/gio/gpropertyaction.c +++ b/gio/gpropertyaction.c @@ -93,6 +93,7 @@ struct _GPropertyAction gpointer object; GParamSpec *pspec; const GVariantType *state_type; + gboolean invert_boolean; }; /** @@ -118,9 +119,18 @@ enum PROP_STATE_TYPE, PROP_STATE, PROP_OBJECT, - PROP_PROPERTY_NAME + PROP_PROPERTY_NAME, + PROP_INVERT_BOOLEAN }; +static gboolean +g_property_action_get_invert_boolean (GAction *action) +{ + GPropertyAction *paction = G_PROPERTY_ACTION (action); + + return paction->invert_boolean; +} + static const gchar * g_property_action_get_name (GAction *action) { @@ -165,6 +175,10 @@ g_property_action_set_state (GPropertyAction *paction, g_value_init (&value, paction->pspec->value_type); g_settings_get_mapping (&value, variant, NULL); + + if (paction->pspec->value_type == G_TYPE_BOOLEAN && paction->invert_boolean) + g_value_set_boolean (&value, !g_value_get_boolean (&value)); + g_object_set_property (paction->object, paction->pspec->name, &value); g_value_unset (&value); } @@ -189,6 +203,10 @@ g_property_action_get_state (GAction *action) g_value_init (&value, paction->pspec->value_type); g_object_get_property (paction->object, paction->pspec->name, &value); + + if (paction->pspec->value_type == G_TYPE_BOOLEAN && paction->invert_boolean) + g_value_set_boolean (&value, !g_value_get_boolean (&value)); + result = g_settings_set_mapping (&value, paction->state_type, NULL); g_value_unset (&value); @@ -316,6 +334,10 @@ g_property_action_set_property (GObject *object, g_property_action_set_property_name (paction, g_value_get_string (value)); break; + case PROP_INVERT_BOOLEAN: + paction->invert_boolean = g_value_get_boolean (value); + break; + default: g_assert_not_reached (); } @@ -351,6 +373,10 @@ g_property_action_get_property (GObject *object, g_value_take_variant (value, g_property_action_get_state (action)); break; + case PROP_INVERT_BOOLEAN: + g_value_set_boolean (value, g_property_action_get_invert_boolean (action)); + break; + default: g_assert_not_reached (); } @@ -515,6 +541,23 @@ g_property_action_class_init (GPropertyActionClass *class) G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); + + /** + * GPropertyAction:invert-boolean: + * + * If %TRUE, the state of the action will be the negation of the + * property value, provided the property is boolean. + * + * Since: 2.46 + */ + g_object_class_install_property (object_class, PROP_INVERT_BOOLEAN, + g_param_spec_boolean ("invert-boolean", + P_("Invert boolean"), + P_("Whether to invert the value of a boolean property"), + FALSE, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS)); } /** diff --git a/gio/gproxyresolver.c b/gio/gproxyresolver.c index eb3552f..d5b19fd 100644 --- a/gio/gproxyresolver.c +++ b/gio/gproxyresolver.c @@ -29,7 +29,6 @@ #include "gcancellable.h" #include "giomodule.h" #include "giomodule-priv.h" -#include "gsimpleasyncresult.h" /** * SECTION:gproxyresolver diff --git a/gio/gregistrysettingsbackend.c b/gio/gregistrysettingsbackend.c index 96df52c..e35f48e 100644 --- a/gio/gregistrysettingsbackend.c +++ b/gio/gregistrysettingsbackend.c @@ -62,9 +62,8 @@ * allow [A-Za-z\-] so no escaping is needed. No attempt is made to solve * clashes between keys differing only in case. * - * - RegCreateKeyA is used - Windows can also handle UTF16LE strings. - * GSettings doesn't pay any attention to encoding, so by using ANSI we - * hopefully avoid passing any invalid Unicode. + * - RegCreateKeyW is used - We should always make the UTF-8 -> UTF-16 + * conversion ourselves to avoid problems when the system language changes. * * - The Windows registry has the following limitations: a key may not exceed * 255 characters, an entry's value may not exceed 16,383 characters, and @@ -91,7 +90,6 @@ #include "config.h" #include "gregistrysettingsbackend.h" -#include "gsimplepermission.h" #include "gsettingsbackend.h" #include "giomodule.h" @@ -113,12 +111,11 @@ typedef struct { HANDLE event; - HKEY hpath; - char *prefix; + HKEY hpath; + char *prefix; GNode *cache_node; } RegistryWatch; - /* Simple message passing for the watch thread. Not enough traffic to * justify a queue. */ @@ -136,11 +133,10 @@ typedef struct RegistryWatch watch; } WatchThreadMessage; - typedef struct { GSettingsBackend *owner; - HANDLE *thread; + HANDLE *thread; /* Details of the things we are watching. */ int watches_remaining; @@ -156,25 +152,24 @@ typedef struct HANDLE message_sent_event, message_received_event; } WatchThreadState; - #define G_TYPE_REGISTRY_BACKEND (g_registry_backend_get_type ()) #define G_REGISTRY_BACKEND(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ G_TYPE_REGISTRY_BACKEND, GRegistryBackend)) #define G_IS_REGISTRY_BACKEND(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), \ G_TYPE_REGISTRY_BACKEND)) - typedef GSettingsBackendClass GRegistryBackendClass; typedef struct { - GSettingsBackend parent_instance; + GSettingsBackend parent_instance; - char *base_path; + gchar *base_path; + gunichar2 *base_pathw; /* A stored copy of the whole tree being watched. When we receive a change notification * we have to check against this to see what has changed ... every time ...*/ CRITICAL_SECTION *cache_lock; - GNode *cache_root; + GNode *cache_root; WatchThreadState *watch; } GRegistryBackend; @@ -185,52 +180,53 @@ G_DEFINE_TYPE_WITH_CODE (GRegistryBackend, g_io_extension_point_implement (G_SETTINGS_BACKEND_EXTENSION_POINT_NAME, g_define_type_id, "registry", 90)) - /********************************************************************************** * Utility functions **********************************************************************************/ #include static void -trace (const char *format, ...) +trace (const char *format, + ...) { - #ifdef TRACE +#ifdef TRACE va_list va; va_start (va, format); - vprintf (format, va); fflush (stdout); + vprintf (format, va); + fflush (stdout); va_end (va); - #endif -}; +#endif +} /* g_message including a windows error message. It is not useful to have an * equivalent function for g_warning because none of the registry errors can * result from programmer error (Microsoft programmers don't count), instead * they will mostly occur from people messing with the registry by hand. */ static void -g_message_win32_error (DWORD result_code, +g_message_win32_error (DWORD result_code, const gchar *format, ...) { va_list va; - gint pos; - gchar win32_message[1024]; + gchar *message; + gchar *win32_error; + gchar *win32_message; - if (result_code == 0) - result_code = GetLastError (); + g_return_if_fail (result_code != 0); va_start (va, format); - pos = g_vsnprintf (win32_message, 512, format, va); - - win32_message[pos++] = ':'; win32_message[pos++] = ' '; - - FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, NULL, result_code, 0, (LPTSTR)(win32_message+pos), - 1023 - pos, NULL); + message = g_strdup_vprintf (format, va); + win32_error = g_win32_error_message (result_code); + win32_message = g_strdup_printf ("%s: %s", message, win32_error); + g_free (message); + g_free (win32_error); if (result_code == ERROR_KEY_DELETED) trace ("(%s)", win32_message); else - g_message (win32_message); -}; + g_message ("%s", win32_message); + g_free (win32_message); +} /* Make gsettings key into a registry path & value pair. * @@ -248,38 +244,48 @@ parse_key (const gchar *key_name, * preceding /. */ if (key_name[0] == '/') - key_name ++; + key_name++; if (registry_prefix == NULL) - path_name = g_strdup (key_name); + path_name = g_strdup (key_name); else - path_name = g_strjoin ("/", registry_prefix, key_name, NULL); + path_name = g_strjoin ("/", registry_prefix, key_name, NULL); /* Prefix is expected to be in registry format (\ separators) so don't escape that. */ - for (c=path_name+(registry_prefix?strlen(registry_prefix):0); *c!=0; c++) + for (c = path_name + (registry_prefix ? strlen (registry_prefix) : 0); *c != 0; c++) + { if (*c == '/') { *c = '\\'; - (*value_name) = c; + *value_name = c; } + } - **value_name = 0; (*value_name)++; - return path_name; -}; + **value_name = 0; + (*value_name)++; + return path_name; +} static DWORD g_variant_get_as_dword (GVariant *variant) { switch (g_variant_get_type_string (variant)[0]) { - case 'b': return g_variant_get_boolean (variant); - case 'y': return g_variant_get_byte (variant); - case 'n': return g_variant_get_int16 (variant); - case 'q': return g_variant_get_uint16 (variant); - case 'i': return g_variant_get_int32 (variant); - case 'u': return g_variant_get_uint32 (variant); - default: g_warn_if_reached (); + case 'b': + return g_variant_get_boolean (variant); + case 'y': + return g_variant_get_byte (variant); + case 'n': + return g_variant_get_int16 (variant); + case 'q': + return g_variant_get_uint16 (variant); + case 'i': + return g_variant_get_int32 (variant); + case 'u': + return g_variant_get_uint32 (variant); + default: + g_warn_if_reached (); } return 0; } @@ -289,14 +295,16 @@ g_variant_get_as_qword (GVariant *variant) { switch (g_variant_get_type_string (variant)[0]) { - case 'x': return g_variant_get_int64 (variant); - case 't': return g_variant_get_uint64 (variant); - default: g_warn_if_reached (); + case 'x': + return g_variant_get_int64 (variant); + case 't': + return g_variant_get_uint64 (variant); + default: + g_warn_if_reached (); } return 0; } - static void handle_read_error (LONG result, const gchar *path_name, @@ -304,8 +312,8 @@ handle_read_error (LONG result, { /* file not found means key value not set, this isn't an error for us. */ if (result != ERROR_FILE_NOT_FOUND) - g_message_win32_error (result, "Unable to query value %s/%s: %s.\n", - path_name, value_name); + g_message_win32_error (result, "Unable to query value %s/%s: %s.\n", + path_name, value_name); } /*************************************************************************** @@ -326,9 +334,9 @@ static char * registry_value_dump (RegistryValue value) { if (value.type == REG_DWORD) - return g_strdup_printf ("%i", value.dword); + return g_strdup_printf ("%d", value.dword); else if (value.type == REG_QWORD) - return g_strdup_printf ("%I64i", value.ptr==NULL? 0: *(DWORDLONG *)value.ptr); + return g_strdup_printf ("%"G_GINT64_FORMAT, value.ptr == NULL ? 0: *(DWORDLONG *)value.ptr); else if (value.type == REG_SZ) return g_strdup_printf ("%s", (char *)value.ptr); else if (value.type == REG_NONE) @@ -342,11 +350,11 @@ registry_value_free (RegistryValue value) { if (value.type == REG_SZ || value.type == REG_QWORD) g_free (value.ptr); + value.type = REG_NONE; value.ptr = NULL; } - /* The registry cache is stored as a tree, for easy traversal. Right now we * don't sort it in a clever way. Each node corresponds to a path element * ('key' in registry terms) or a value. @@ -358,39 +366,39 @@ registry_value_free (RegistryValue value) typedef struct { /* Component of path that this node represents */ - gchar *name; + gchar *name; /* If a watch is subscribed at this point (subscription_count > 0) we can * block its next notification. This is useful because if two watches cover * the same path, both will trigger when it changes. It also allows changes * done by the application to be ignored by the watch thread. */ - gint32 block_count : 8; + gint32 block_count : 8; /* Number of times g_settings_subscribe has been called for this location * (I guess you can't subscribe more than 16383 times) */ gint32 subscription_count : 14; - gint32 ref_count : 9; + gint32 ref_count : 9; - gint32 touched : 1; + gint32 readable : 1; RegistryValue value; } RegistryCacheItem; - - static GNode * -registry_cache_add_item (GNode *parent, - gchar *name, - RegistryValue value, - gint ref_count) +registry_cache_add_item (GNode *parent, + gchar *name, + RegistryValue value, + gint ref_count) { - RegistryCacheItem *item = g_slice_new (RegistryCacheItem); + RegistryCacheItem *item; GNode *cache_node; g_return_val_if_fail (name != NULL, NULL); g_return_val_if_fail (parent != NULL, NULL); + item = g_slice_new (RegistryCacheItem); + /* Ref count should be the number of watch points above this node */ item->ref_count = ref_count; @@ -398,11 +406,14 @@ registry_cache_add_item (GNode *parent, item->value = value; item->subscription_count = 0; item->block_count = 0; - item->touched = FALSE; - trace ("\treg cache: adding %s to %s\n", name, ((RegistryCacheItem *)parent->data)->name); + item->readable = FALSE; + + trace ("\treg cache: adding %s to %s\n", + name, ((RegistryCacheItem *)parent->data)->name); cache_node = g_node_new (item); g_node_append (parent, cache_node); + return cache_node; } @@ -412,15 +423,16 @@ registry_cache_add_item (GNode *parent, * well as each parent up to the root. */ - static void _ref_down (GNode *node) { RegistryCacheItem *item = node->data; + g_node_children_foreach (node, G_TRAVERSE_ALL, (GNodeForeachFunc)_ref_down, NULL); - item->ref_count ++; + item->ref_count++; } + static void registry_cache_ref_tree (GNode *tree) { @@ -429,22 +441,23 @@ registry_cache_ref_tree (GNode *tree) g_return_if_fail (tree != NULL); - item->ref_count ++; + item->ref_count++; g_node_children_foreach (tree, G_TRAVERSE_ALL, (GNodeForeachFunc)_ref_down, NULL); - for (node=tree->parent; node; node=node->parent) + for (node = tree->parent; node; node = node->parent) { item = node->data; - item->ref_count ++; + item->ref_count++; } } static void -_free_cache_item (RegistryCacheItem *item) +registry_cache_item_free (RegistryCacheItem *item) { trace ("\t -- Free node %s\n", item->name); + g_free (item->name); registry_value_free (item->value); g_slice_free (RegistryCacheItem, item); @@ -456,13 +469,13 @@ _unref_node (GNode *node) { RegistryCacheItem *item = node->data; - item->ref_count --; + item->ref_count--; g_warn_if_fail (item->ref_count >= 0); if (item->ref_count == 0) { - _free_cache_item (item); + registry_cache_item_free (item); g_node_destroy (node); } } @@ -539,6 +552,7 @@ registry_cache_find_compare (GNode *node, search->result = node; return TRUE; } + return FALSE; } @@ -547,13 +561,15 @@ registry_cache_find_immediate_child (GNode *node, gchar *name) { RegistryCacheSearch search; + search.result = NULL; search.name = name; + g_node_traverse (node, G_POST_ORDER, G_TRAVERSE_ALL, 2, registry_cache_find_compare, &search); - return search.result; -} + return search.result; +} static GNode * registry_cache_get_node_for_key_recursive (GNode *node, @@ -562,8 +578,8 @@ registry_cache_get_node_for_key_recursive (GNode *node, gint n_parent_watches) { RegistryCacheItem *item; - gchar *component = key_name, - *c = strchr (component, '/'); + gchar *component = key_name; + gchar *c = strchr (component, '/'); GNode *child; if (c != NULL) @@ -575,30 +591,28 @@ registry_cache_get_node_for_key_recursive (GNode *node, */ item = node->data; if (item->subscription_count > 0) - n_parent_watches ++; + n_parent_watches++; child = registry_cache_find_immediate_child (node, component); if (child == NULL && create_if_not_found) { - item = g_slice_new (RegistryCacheItem); - item->name = g_strdup (component); - item->value.type = REG_NONE; - item->value.ptr = NULL; - item->ref_count = n_parent_watches; - child = g_node_new (item); - g_node_append (node, child); - trace ("\tget node for key recursive: new %x = %s.\n", node, item->name); + RegistryValue null_value = { REG_NONE, {0} }; + + child = registry_cache_add_item (node, component, + null_value, n_parent_watches); + + trace ("\tget node for key recursive: new %x = %s.\n", node, component); } /* We are done if there are no more path components. Allow for a trailing /. */ - if (child==NULL || c == NULL || *(c+1)==0) + if (child == NULL || c == NULL || *(c + 1) == 0) return child; - else - { - trace ("get node for key recursive: next: %s.\n", c+1); - return registry_cache_get_node_for_key_recursive - (child, c+1, create_if_not_found, n_parent_watches); - } + + trace ("get node for key recursive: next: %s.\n", c + 1); + + return registry_cache_get_node_for_key_recursive (child, c + 1, + create_if_not_found, + n_parent_watches); } /* Look up a GSettings key in the cache. */ @@ -607,41 +621,45 @@ registry_cache_get_node_for_key (GNode *root, const gchar *key_name, gboolean create_if_not_found) { - GNode *child = NULL, - *result = NULL; + GNode *child = NULL; + GNode *result = NULL; gchar *component, *c; g_return_val_if_fail (key_name != NULL, NULL); if (key_name[0] == '/') - key_name ++; + key_name++; /* Ignore preceding / */ component = g_strdup (key_name); c = strchr (component, '/'); + + if (c == NULL) + { + g_free (component); + return root; + } + if (c != NULL) *c = 0; child = registry_cache_find_immediate_child (root, component); if (child == NULL && create_if_not_found) { + RegistryValue null_value = { REG_NONE, {0} }; + /* Reference count is set to 0, tree should be referenced by the caller */ - RegistryCacheItem *item = g_slice_new (RegistryCacheItem); - item->value.type = REG_NONE; - item->value.ptr = NULL; - item->name = g_strdup (component); - item->ref_count = 0; - trace ("get_node_for_key: New node for component '%s'\n", item->name); - child = g_node_new (item); - g_node_append (root, child); + child = registry_cache_add_item (root, component, + null_value, 0); + + trace ("get_node_for_key: New node for component '%s'\n", component); } - if (c == NULL) - result = root; - else if (*(c+1)==0) + if (*(c + 1) == 0) result = child; else if (child != NULL) - result = registry_cache_get_node_for_key_recursive (child, c+1, create_if_not_found, 0); + result = registry_cache_get_node_for_key_recursive (child, c + 1, + create_if_not_found, 0); g_free (component); @@ -655,10 +673,12 @@ static gboolean registry_cache_update_node (GNode *cache_node, RegistryValue registry_value) { - RegistryCacheItem *cache_item = cache_node->data; + RegistryCacheItem *cache_item; g_return_val_if_fail (cache_node != NULL, FALSE); - g_return_val_if_fail (cache_item != NULL, FALSE); + g_return_val_if_fail (cache_node->data != NULL, FALSE); + + cache_item = cache_node->data; if (registry_value.type != cache_item->value.type) { @@ -673,54 +693,54 @@ registry_cache_update_node (GNode *cache_node, switch (registry_value.type) { - case REG_DWORD: - { - if (cache_item->value.dword == registry_value.dword) - return FALSE; - else - { - cache_item->value.dword = registry_value.dword; - return TRUE; - } - } - case REG_QWORD: - { - g_return_val_if_fail (registry_value.ptr != NULL && - cache_item->value.ptr != NULL, FALSE); - - if (memcmp (registry_value.ptr, cache_item->value.ptr, 8)==0) - { - g_free (registry_value.ptr); - return FALSE; - } - else - { - g_free (cache_item->value.ptr); - cache_item->value.ptr = registry_value.ptr; - return TRUE; - } - } - case REG_SZ: - { - /* Value should not exist if it is NULL, an empty string is "" */ - g_return_val_if_fail (cache_item->value.ptr != NULL, FALSE); - g_return_val_if_fail (registry_value.ptr != NULL, FALSE); + case REG_DWORD: + { + if (cache_item->value.dword == registry_value.dword) + return FALSE; + else + { + cache_item->value.dword = registry_value.dword; + return TRUE; + } + } + case REG_QWORD: + { + g_return_val_if_fail (registry_value.ptr != NULL && + cache_item->value.ptr != NULL, FALSE); - if (strcmp (registry_value.ptr, cache_item->value.ptr) == 0) - { - g_free (registry_value.ptr); - return FALSE; - } - else - { - g_free (cache_item->value.ptr); - cache_item->value.ptr = registry_value.ptr; - return TRUE; - } - } - default: - g_warning ("gregistrybackend: registry_cache_update_node: Unhandled value type :("); - return FALSE; + if (memcmp (registry_value.ptr, cache_item->value.ptr, 8)==0) + { + g_free (registry_value.ptr); + return FALSE; + } + else + { + g_free (cache_item->value.ptr); + cache_item->value.ptr = registry_value.ptr; + return TRUE; + } + } + case REG_SZ: + { + /* Value should not exist if it is NULL, an empty string is "" */ + g_return_val_if_fail (cache_item->value.ptr != NULL, FALSE); + g_return_val_if_fail (registry_value.ptr != NULL, FALSE); + + if (strcmp (registry_value.ptr, cache_item->value.ptr) == 0) + { + g_free (registry_value.ptr); + return FALSE; + } + else + { + g_free (cache_item->value.ptr); + cache_item->value.ptr = registry_value.ptr; + return TRUE; + } + } + default: + g_warning ("gregistrybackend: registry_cache_update_node: Unhandled value type"); + return FALSE; } } @@ -739,15 +759,14 @@ registry_cache_block_notification (GNode *node) g_return_if_fail (node != NULL); if (item->subscription_count > 0) - item->block_count ++; + item->block_count++; if (node->parent != NULL) registry_cache_block_notification (node->parent); } -static void -registry_cache_destroy_tree (GNode *node, - WatchThreadState *self); +static void registry_cache_destroy_tree (GNode *node, + WatchThreadState *self); /*************************************************************************** * Reading and writing @@ -759,25 +778,30 @@ registry_read (HKEY hpath, const gchar *value_name, RegistryValue *p_value) { - LONG result; - DWORD value_data_size; + LONG result; + DWORD value_data_size; gpointer *buffer; + gunichar2 *value_namew; g_return_val_if_fail (p_value != NULL, FALSE); p_value->type = REG_NONE; p_value->ptr = NULL; - result = RegQueryValueExA (hpath, value_name, 0, &p_value->type, NULL, &value_data_size); + value_namew = g_utf8_to_utf16 (value_name, -1, NULL, NULL, NULL); + + result = RegQueryValueExW (hpath, value_namew, 0, &p_value->type, NULL, &value_data_size); if (result != ERROR_SUCCESS) - { + { handle_read_error (result, path_name, value_name); + g_free (value_namew); return FALSE; - } + } if (p_value->type == REG_SZ && value_data_size == 0) { p_value->ptr = g_strdup (""); + g_free (value_namew); return TRUE; } @@ -787,17 +811,29 @@ registry_read (HKEY hpath, else buffer = p_value->ptr = g_malloc (value_data_size); - result = RegQueryValueExA (hpath, value_name, 0, NULL, (LPBYTE)buffer, &value_data_size); + result = RegQueryValueExW (hpath, value_namew, 0, NULL, (LPBYTE)buffer, &value_data_size); + g_free (value_namew); + if (result != ERROR_SUCCESS) { handle_read_error (result, path_name, value_name); + + if (p_value->type != REG_DWORD) + g_free (buffer); + return FALSE; } + if (p_value->type == REG_SZ) + { + gchar *valueu8 = g_utf16_to_utf8 (p_value->ptr, -1, NULL, NULL, NULL); + g_free (p_value->ptr); + p_value->ptr = valueu8; + } + return TRUE; } - static GVariant * g_registry_backend_read (GSettingsBackend *backend, const gchar *key_name, @@ -805,11 +841,10 @@ g_registry_backend_read (GSettingsBackend *backend, gboolean default_value) { GRegistryBackend *self = G_REGISTRY_BACKEND (backend); - - GNode *cache_node; - RegistryValue registry_value; - GVariant *gsettings_value = NULL; - gchar *gsettings_type; + GNode *cache_node; + RegistryValue registry_value; + GVariant *gsettings_value = NULL; + gchar *gsettings_type; g_return_val_if_fail (expected_type != NULL, NULL); @@ -839,35 +874,43 @@ g_registry_backend_read (GSettingsBackend *backend, /* The registry is user-editable, so we need to be fault-tolerant here. */ switch (gsettings_type[0]) { - case 'b': case 'y': case 'n': case 'q': case 'i': case 'u': - if (registry_value.type == REG_DWORD) - gsettings_value = g_variant_new (gsettings_type, registry_value.dword); - break; + case 'b': + case 'y': + case 'n': + case 'q': + case 'i': + case 'u': + if (registry_value.type == REG_DWORD) + gsettings_value = g_variant_new (gsettings_type, registry_value.dword); + break; + + case 't': + case 'x': + if (registry_value.type == REG_QWORD) + { + DWORDLONG qword_value = *(DWORDLONG *)registry_value.ptr; + gsettings_value = g_variant_new (gsettings_type, qword_value); + } + break; - case 't': case 'x': - if (registry_value.type == REG_QWORD) - { - DWORDLONG qword_value = *(DWORDLONG *)registry_value.ptr; - gsettings_value = g_variant_new (gsettings_type, qword_value); - } - break; + default: + if (registry_value.type == REG_SZ) + { + if (gsettings_type[0] == 's') + gsettings_value = g_variant_new_string ((char *)registry_value.ptr); + else + { + GError *error = NULL; - default: - if (registry_value.type == REG_SZ) - { - if (gsettings_type[0]=='s') - gsettings_value = g_variant_new_string ((char *)registry_value.ptr); - else - { - GError *error = NULL; - gsettings_value = g_variant_parse (expected_type, registry_value.ptr, NULL, NULL, &error); - - if (error != NULL) - g_message ("gregistrysettingsbackend: error parsing key %s: %s\n", + gsettings_value = g_variant_parse (expected_type, registry_value.ptr, + NULL, NULL, &error); + + if (error != NULL) + g_message ("gregistrysettingsbackend: error parsing key %s: %s", key_name, error->message); - } - } - break; + } + } + break; } g_free (gsettings_type); @@ -878,8 +921,8 @@ g_registry_backend_read (GSettingsBackend *backend, typedef struct { - GRegistryBackend *self; - HKEY hroot; + GRegistryBackend *self; + HKEY hroot; } RegistryWrite; static gboolean @@ -888,20 +931,23 @@ g_registry_backend_write_one (const char *key_name, gpointer user_data) { GRegistryBackend *self; - RegistryWrite *action; - RegistryValue value; - - HKEY hroot, hpath; - gchar *path_name, *value_name = NULL; - DWORD value_data_size; - LPVOID value_data; - LONG result; - - GNode *node; - gboolean changed; - - const gchar *type_string = g_variant_get_type_string (variant); + RegistryWrite *action; + RegistryValue value; + HKEY hroot; + HKEY hpath; + gchar *path_name; + gunichar2 *path_namew; + gchar *value_name = NULL; + gunichar2 *value_namew; + DWORD value_data_size; + LPVOID value_data; + gunichar2 *value_dataw; + LONG result; + GNode *node; + gboolean changed; + const gchar *type_string; + type_string = g_variant_get_type_string (variant); action = user_data; self = G_REGISTRY_BACKEND (action->self); hroot = action->hroot; @@ -911,38 +957,44 @@ g_registry_backend_write_one (const char *key_name, switch (type_string[0]) { - case 'b': case 'y': case 'n': case 'q': case 'i': case 'u': - value.type = REG_DWORD; - value.dword = g_variant_get_as_dword (variant); - value_data_size = 4; - value_data = &value.dword; - break; - - case 'x': case 't': - value.type = REG_QWORD; - value.ptr = g_malloc (8); - *(DWORDLONG *)value.ptr = g_variant_get_as_qword (variant); - value_data_size = 8; - value_data = value.ptr; - break; - - default: - value.type = REG_SZ; - if (type_string[0]=='s') - { - gsize length; - value.ptr = g_strdup (g_variant_get_string (variant, &length)); - value_data_size = length + 1; - value_data = value.ptr; - } - else - { - GString *value_string; - value_string = g_variant_print_string (variant, NULL, FALSE); - value_data_size = value_string->len+1; - value.ptr = value_data = g_string_free (value_string, FALSE); - } - break; + case 'b': + case 'y': + case 'n': + case 'q': + case 'i': + case 'u': + value.type = REG_DWORD; + value.dword = g_variant_get_as_dword (variant); + value_data_size = 4; + value_data = &value.dword; + break; + + case 'x': + case 't': + value.type = REG_QWORD; + value.ptr = g_malloc (8); + *(DWORDLONG *)value.ptr = g_variant_get_as_qword (variant); + value_data_size = 8; + value_data = value.ptr; + break; + + default: + value.type = REG_SZ; + if (type_string[0] == 's') + { + gsize length; + value.ptr = g_strdup (g_variant_get_string (variant, &length)); + value_data_size = length + 1; + value_data = value.ptr; + } + else + { + GString *value_string; + value_string = g_variant_print_string (variant, NULL, FALSE); + value_data_size = value_string->len + 1; + value.ptr = value_data = g_string_free (value_string, FALSE); + } + break; } /* First update the cache, because the value may not have changed and we can @@ -969,20 +1021,49 @@ g_registry_backend_write_one (const char *key_name, trace ("Set key: %s / %s\n", path_name, value_name); + path_namew = g_utf8_to_utf16 (path_name, -1, NULL, NULL, NULL); + /* Store the value in the registry */ - result = RegCreateKeyExA (hroot, path_name, 0, NULL, 0, KEY_WRITE, NULL, &hpath, NULL); + result = RegCreateKeyExW (hroot, path_namew, 0, NULL, 0, KEY_WRITE, NULL, &hpath, NULL); if (result != ERROR_SUCCESS) { - g_message_win32_error (result, "gregistrybackend: opening key %s failed", path_name+1); + g_message_win32_error (result, "gregistrybackend: opening key %s failed", + path_name + 1); registry_value_free (value); + g_free (path_namew); g_free (path_name); return FALSE; } - result = RegSetValueExA (hpath, value_name, 0, value.type, value_data, value_data_size); + g_free (path_namew); + + value_namew = g_utf8_to_utf16 (value_name, -1, NULL, NULL, NULL); + + value_dataw = NULL; + + switch (type_string[0]) + { + case 'b': + case 'y': + case 'n': + case 'q': + case 'i': + case 'u': + case 'x': + case 't': + break; + default: + value_dataw = g_utf8_to_utf16 (value_data, -1, NULL, NULL, NULL); + value_data = value_dataw; + value_data_size = (DWORD)((wcslen (value_data) + 1) * sizeof (gunichar2)); + break; + } + + result = RegSetValueExW (hpath, value_namew, 0, value.type, value_data, value_data_size); + if (result != ERROR_SUCCESS) - g_message_win32_error (result, "gregistrybackend: setting value %s\\%s\\%s failed.\n", - self->base_path, path_name, value_name); + g_message_win32_error (result, "gregistrybackend: setting value %s\\%s\\%s failed.\n", + self->base_path, path_name, value_name); /* If the write fails then it will seem like the value has changed until the * next execution (because we wrote to the cache first). There's no reason @@ -991,9 +1072,11 @@ g_registry_backend_write_one (const char *key_name, RegCloseKey (hpath); g_free (path_name); + g_free (value_namew); + g_free (value_dataw); return FALSE; -}; +} /* The dconf write policy is to do the write while making out it succeeded, * and then backtrack if it didn't. The registry functions are synchronous so @@ -1010,12 +1093,13 @@ g_registry_backend_write (GSettingsBackend *backend, HKEY hroot; RegistryWrite action; - result = RegCreateKeyExA (HKEY_CURRENT_USER, self->base_path, 0, NULL, 0, + result = RegCreateKeyExW (HKEY_CURRENT_USER, self->base_pathw, 0, NULL, 0, KEY_WRITE, NULL, &hroot, NULL); - if (result != ERROR_SUCCESS) { - trace ("Error opening/creating key %s.\n", self->base_path); - return FALSE; - } + if (result != ERROR_SUCCESS) + { + trace ("Error opening/creating key %s.\n", self->base_path); + return FALSE; + } action.self = self; action.hroot = hroot; @@ -1037,12 +1121,13 @@ g_registry_backend_write_tree (GSettingsBackend *backend, HKEY hroot; RegistryWrite action; - result = RegCreateKeyExA (HKEY_CURRENT_USER, self->base_path, 0, NULL, 0, + result = RegCreateKeyExW (HKEY_CURRENT_USER, self->base_pathw, 0, NULL, 0, KEY_WRITE, NULL, &hroot, NULL); - if (result != ERROR_SUCCESS) { - trace ("Error opening/creating key %s.\n", self->base_path); - return FALSE; - } + if (result != ERROR_SUCCESS) + { + trace ("Error opening/creating key %s.\n", self->base_path); + return FALSE; + } action.self = self; action.hroot = hroot; @@ -1061,7 +1146,10 @@ g_registry_backend_reset (GSettingsBackend *backend, gpointer origin_tag) { GRegistryBackend *self = G_REGISTRY_BACKEND (backend); - gchar *path_name, *value_name = NULL; + gchar *path_name; + gunichar2 *path_namew; + gchar *value_name = NULL; + gunichar2 *value_namew; GNode *cache_node; LONG result; HKEY hpath; @@ -1075,8 +1163,11 @@ g_registry_backend_reset (GSettingsBackend *backend, /* Remove from the registry */ path_name = parse_key (key_name, self->base_path, &value_name); + path_namew = g_utf8_to_utf16 (path_name, -1, NULL, NULL, NULL); + + result = RegOpenKeyExW (HKEY_CURRENT_USER, path_namew, 0, KEY_SET_VALUE, &hpath); + g_free (path_namew); - result = RegOpenKeyExA (HKEY_CURRENT_USER, path_name, 0, KEY_SET_VALUE, &hpath); if (result != ERROR_SUCCESS) { g_message_win32_error (result, "Registry: resetting key '%s'", path_name); @@ -1084,7 +1175,10 @@ g_registry_backend_reset (GSettingsBackend *backend, return; } - result = RegDeleteValueA (hpath, value_name); + value_namew = g_utf8_to_utf16 (value_name, -1, NULL, NULL, NULL); + + result = RegDeleteValueW (hpath, value_namew); + g_free (value_namew); RegCloseKey (hpath); if (result != ERROR_SUCCESS) @@ -1096,25 +1190,45 @@ g_registry_backend_reset (GSettingsBackend *backend, g_free (path_name); - g_settings_backend_changed (backend, key_name, origin_tag); } -/* Not implemented and probably beyond the scope of this backend */ static gboolean g_registry_backend_get_writable (GSettingsBackend *backend, const gchar *key_name) { - return TRUE; -} + GRegistryBackend *self = G_REGISTRY_BACKEND (backend); + gchar *path_name; + gunichar2 *path_namew; + gchar *value_name; + HKEY hpath; + LONG result; -static GPermission * -g_registry_backend_get_permission (GSettingsBackend *backend, - const gchar *key_name) -{ - return g_simple_permission_new (TRUE); -} + path_name = parse_key (key_name, self->base_path, &value_name); + path_namew = g_utf8_to_utf16 (path_name, -1, NULL, NULL, NULL); + + /* Note: we create the key if it wasn't created yet, but it is not much + * of a problem since at the end of the day we have to create it anyway + * to read or to write from it + */ + result = RegCreateKeyExW (HKEY_CURRENT_USER, path_namew, 0, NULL, 0, + KEY_WRITE, NULL, &hpath, NULL); + g_free (path_namew); + + if (result != ERROR_SUCCESS) + { + trace ("Error opening/creating key to check writability: %s.\n", + path_name); + g_free (path_name); + + return FALSE; + } + + g_free (path_name); + RegCloseKey (hpath); + return TRUE; +} /******************************************************************************** * Spot-the-difference engine @@ -1122,15 +1236,15 @@ g_registry_backend_get_permission (GSettingsBackend *backend, static void _free_watch (WatchThreadState *self, - gint index, + guint index, GNode *cache_node); static void -registry_cache_item_reset_touched (GNode *node, - gpointer data) +registry_cache_item_reset_readable (GNode *node, + gpointer data) { RegistryCacheItem *item = node->data; - item->touched = FALSE; + item->readable = FALSE; } /* Delete a node and any children, for when it has been deleted from the registry */ @@ -1145,36 +1259,89 @@ registry_cache_destroy_tree (GNode *node, if (item->subscription_count > 0) { - gint i; + guint i; + /* There must be some watches active if this node is a watch point */ g_warn_if_fail (self->cache_nodes->len > 1); /* This is a watch point that has been deleted. Let's free the watch! */ - for (i=1; icache_nodes->len; i++) - if (g_ptr_array_index (self->cache_nodes, i) == node) - break; + for (i = 1; i < self->cache_nodes->len; i++) + { + if (g_ptr_array_index (self->cache_nodes, i) == node) + break; + } + if (i >= self->cache_nodes->len) g_warning ("watch thread: a watch point was deleted, but unable to " "find '%s' in the list of %i watch nodes\n", item->name, - self->cache_nodes->len-1); + self->cache_nodes->len - 1); else { _free_watch (self, i, node); g_atomic_int_inc (&self->watches_remaining); } } - _free_cache_item (node->data); + registry_cache_item_free (node->data); g_node_destroy (node); } +/* One of these is sent down the pipe when something happens in the registry. */ +typedef struct +{ + GRegistryBackend *self; + gchar *prefix; /* prefix is a gsettings path, all items are subkeys of this. */ + GPtrArray *items; /* each item is a subkey below prefix that has changed. */ +} RegistryEvent; + +typedef struct +{ + RegistryEvent *event; + gchar *current_key_name; +} DeletedItemData; + +static void +mark_all_subkeys_as_changed (GNode *node, + gpointer data) +{ + RegistryCacheItem *item = node->data; + DeletedItemData *item_data = data; + + if (item_data->current_key_name == NULL) + item_data->current_key_name = g_strdup (item->name); + else + { + gchar *name; + + name = g_build_path ("/", item_data->current_key_name, item->name, NULL); + g_free (item_data->current_key_name); + item_data->current_key_name = name; + } + + /* Iterate until we find an item that is a value */ + if (item->value.type == REG_NONE) + g_node_children_foreach (node, G_TRAVERSE_ALL, + mark_all_subkeys_as_changed, data); + else + g_ptr_array_add (item_data->event->items, item_data->current_key_name); +} + static void registry_cache_remove_deleted (GNode *node, gpointer data) { RegistryCacheItem *item = node->data; + RegistryEvent *event = data; + + if (!item->readable) + { + DeletedItemData item_data; + + item_data.event = event; + item_data.current_key_name = NULL; - if (!item->touched) - registry_cache_destroy_tree (node, data); + mark_all_subkeys_as_changed (node, &item_data); + registry_cache_destroy_tree (node, event->self->watch); + } } /* Update cache from registry, and optionally report on the changes. @@ -1197,18 +1364,20 @@ registry_cache_update (GRegistryBackend *self, const gchar *prefix, const gchar *partial_key_name, GNode *cache_node, - int n_watches, - GPtrArray *changes) + int n_watches, + RegistryEvent *event) { - gchar buffer[MAX_KEY_NAME_LENGTH + 1]; + gunichar2 bufferw[MAX_KEY_NAME_LENGTH + 1]; + gchar *buffer; gchar *key_name; - gint i; - LONG result; + gint i; + LONG result; + RegistryCacheItem *item; - RegistryCacheItem *item = cache_node->data; + item = cache_node->data; if (item->subscription_count > 0) - n_watches ++; + n_watches++; /* prefix is the level that all changes occur below; partial_key_name should * be NULL on the first call to this function */ @@ -1217,28 +1386,33 @@ registry_cache_update (GRegistryBackend *self, trace ("registry cache update: %s. Node %x has %i children\n", key_name, cache_node, g_node_n_children (cache_node)); - /* Start by zeroing 'touched' flag. When the registry traversal is done, any untouched nodes + /* Start by zeroing 'readable' flag. When the registry traversal is done, any unreadable nodes * must have been deleted from the registry. */ g_node_children_foreach (cache_node, G_TRAVERSE_ALL, - registry_cache_item_reset_touched, NULL); + registry_cache_item_reset_readable, NULL); /* Recurse into each subpath at the current level, if any */ i = 0; while (1) { - DWORD buffer_size = MAX_KEY_NAME_LENGTH; + DWORD bufferw_size = MAX_KEY_NAME_LENGTH + 1; HKEY hsubpath; - result = RegEnumKeyEx (hpath, i++, buffer, &buffer_size, NULL, NULL, NULL, NULL); + result = RegEnumKeyExW (hpath, i++, bufferw, &bufferw_size, NULL, NULL, NULL, NULL); if (result != ERROR_SUCCESS) break; - result = RegOpenKeyEx (hpath, buffer, 0, KEY_READ, &hsubpath); + result = RegOpenKeyExW (hpath, bufferw, 0, KEY_READ, &hsubpath); if (result == ERROR_SUCCESS) { - GNode *subkey_node; + GNode *subkey_node; RegistryCacheItem *child_item; + gchar *new_partial_key_name; + + buffer = g_utf16_to_utf8 (bufferw, -1, NULL, NULL, NULL); + if (buffer == NULL) + continue; subkey_node = registry_cache_find_immediate_child (cache_node, buffer); if (subkey_node == NULL) @@ -1248,13 +1422,17 @@ registry_cache_update (GRegistryBackend *self, null_value, n_watches); } + new_partial_key_name = g_build_path ("/", partial_key_name, buffer, NULL); + registry_cache_update (self, hsubpath, prefix, new_partial_key_name, + subkey_node, n_watches, event); + g_free (new_partial_key_name); - registry_cache_update (self, hsubpath, prefix, buffer, subkey_node, - n_watches, changes); child_item = subkey_node->data; - child_item->touched = TRUE; + child_item->readable = TRUE; + + g_free (buffer); + RegCloseKey (hsubpath); } - RegCloseKey (hsubpath); } if (result != ERROR_NO_MORE_ITEMS) @@ -1264,26 +1442,35 @@ registry_cache_update (GRegistryBackend *self, i = 0; while (1) { - DWORD buffer_size = MAX_KEY_NAME_LENGTH; - GNode *cache_child_node; + DWORD bufferw_size = MAX_KEY_NAME_LENGTH + 1; + GNode *cache_child_node; RegistryCacheItem *child_item; - RegistryValue value; - gboolean changed = FALSE; + RegistryValue value; + gboolean changed = FALSE; - result = RegEnumValue (hpath, i++, buffer, &buffer_size, NULL, NULL, NULL, NULL); + result = RegEnumValueW (hpath, i++, bufferw, &bufferw_size, NULL, NULL, NULL, NULL); if (result != ERROR_SUCCESS) break; - if (buffer[0]==0) - /* This is the key's 'default' value, for which we have no use. */ - continue; + buffer = g_utf16_to_utf8 (bufferw, -1, NULL, NULL, NULL); + + if (buffer == NULL || buffer[0] == 0) + { + /* This is the key's 'default' value, for which we have no use. */ + g_free (buffer); + continue; + } cache_child_node = registry_cache_find_immediate_child (cache_node, buffer); if (!registry_read (hpath, key_name, buffer, &value)) - continue; + { + g_free (buffer); + continue; + } - trace ("\tgot value %s for %s, node %x\n", registry_value_dump (value), buffer, cache_child_node); + trace ("\tgot value %s for %s, node %x\n", + registry_value_dump (value), buffer, cache_child_node); if (cache_child_node == NULL) { @@ -1305,30 +1492,33 @@ registry_cache_update (GRegistryBackend *self, } child_item = cache_child_node->data; - child_item->touched = TRUE; - if (changed == TRUE && changes != NULL) + child_item->readable = TRUE; + if (changed && event != NULL) { gchar *item; + if (partial_key_name == NULL) item = g_strdup (buffer); else item = g_build_path ("/", partial_key_name, buffer, NULL); - g_ptr_array_add (changes, item); + + g_ptr_array_add (event->items, item); } + + g_free (buffer); } if (result != ERROR_NO_MORE_ITEMS) g_message_win32_error (result, "gregistrybackend: error enumerating values for cache"); - /* Any nodes now left untouched must have been deleted, remove them from cache */ + /* Any nodes now left unreadable must have been deleted, remove them from cache */ g_node_children_foreach (cache_node, G_TRAVERSE_ALL, - registry_cache_remove_deleted, self->watch); + registry_cache_remove_deleted, event); trace ("registry cache update complete.\n"); - g_free (key_name); -}; - + g_free (key_name); +} /*********************************************************************************** * Thread to watch for registry change events @@ -1336,27 +1526,18 @@ registry_cache_update (GRegistryBackend *self, /* Called by watch thread. Apply for notifications on a registry key and its subkeys. */ static DWORD -registry_watch_key (HKEY hpath, HANDLE event) +registry_watch_key (HKEY hpath, + HANDLE event) { return RegNotifyChangeKeyValue (hpath, TRUE, REG_NOTIFY_CHANGE_NAME | REG_NOTIFY_CHANGE_LAST_SET, event, TRUE); } - -/* One of these is sent down the pipe when something happens in the registry. */ -typedef struct -{ - GRegistryBackend *self; - gchar *prefix; /* prefix is a gsettings path, all items are subkeys of this. */ - GPtrArray *items; /* each item is a subkey below prefix that has changed. */ -} RegistryEvent; - /* This handler runs in the main thread to emit the changed signals */ static gboolean watch_handler (RegistryEvent *event) { - gint i; trace ("Watch handler: got event in %s, items %i.\n", event->prefix, event->items->len); /* GSettings requires us to NULL-terminate the array. */ @@ -1364,32 +1545,28 @@ watch_handler (RegistryEvent *event) g_settings_backend_keys_changed (G_SETTINGS_BACKEND (event->self), event->prefix, (gchar const **)event->items->pdata, NULL); - for (i=0; iitems->len; i++) - g_free (g_ptr_array_index (event->items, i)); g_ptr_array_free (event->items, TRUE); - g_free (event->prefix); g_object_unref (event->self); - g_slice_free (RegistryEvent, event); - return G_SOURCE_REMOVE; -}; + return G_SOURCE_REMOVE; +} static void _free_watch (WatchThreadState *self, - gint index, + guint index, GNode *cache_node) { - HKEY hpath; - HANDLE cond; - gchar *prefix; + HKEY hpath; + HANDLE cond; + gchar *prefix; g_return_if_fail (index > 0 && index < self->events->len); - cond = g_ptr_array_index (self->events, index); - hpath = g_ptr_array_index (self->handles, index); - prefix = g_ptr_array_index (self->prefixes, index); + cond = g_ptr_array_index (self->events, index); + hpath = g_ptr_array_index (self->handles, index); + prefix = g_ptr_array_index (self->prefixes, index); trace ("Freeing watch %i [%s]\n", index, prefix); @@ -1413,9 +1590,9 @@ _free_watch (WatchThreadState *self, /* As long as we remove from each array at the same time, it doesn't matter that * their orders get messed up - they all get messed up the same. */ - g_ptr_array_remove_index_fast (self->handles, index); - g_ptr_array_remove_index_fast (self->events, index); - g_ptr_array_remove_index_fast (self->prefixes, index); + g_ptr_array_remove_index_fast (self->handles, index); + g_ptr_array_remove_index_fast (self->events, index); + g_ptr_array_remove_index_fast (self->prefixes, index); g_ptr_array_remove_index_fast (self->cache_nodes, index); } @@ -1424,98 +1601,104 @@ watch_thread_handle_message (WatchThreadState *self) { switch (self->message.type) { - case WATCH_THREAD_NONE: - trace ("watch thread: you woke me up for nothin', man!"); - break; + case WATCH_THREAD_NONE: + trace ("watch thread: you woke me up for nothin', man!"); + break; - case WATCH_THREAD_ADD_WATCH: - { - RegistryWatch *watch = &self->message.watch; - LONG result; - result = registry_watch_key (watch->hpath, watch->event); - if (result == ERROR_SUCCESS) - { - g_ptr_array_add (self->events, watch->event); - g_ptr_array_add (self->handles, watch->hpath); - g_ptr_array_add (self->prefixes, watch->prefix); - g_ptr_array_add (self->cache_nodes, watch->cache_node); - trace ("watch thread: new watch on %s, %i total\n", watch->prefix, - self->events->len); - } - else - { - g_message_win32_error (result, "watch thread: could not watch %s", watch->prefix); - CloseHandle (watch->event); - RegCloseKey (watch->hpath); - g_free (watch->prefix); - registry_cache_unref_tree (watch->cache_node); - } - break; - } + case WATCH_THREAD_ADD_WATCH: + { + RegistryWatch *watch = &self->message.watch; + LONG result; - case WATCH_THREAD_REMOVE_WATCH: - { - GNode *cache_node; - RegistryCacheItem *cache_item; - gint i; + result = registry_watch_key (watch->hpath, watch->event); - for (i=1; iprefixes->len; i++) + if (result == ERROR_SUCCESS) + { + g_ptr_array_add (self->events, watch->event); + g_ptr_array_add (self->handles, watch->hpath); + g_ptr_array_add (self->prefixes, watch->prefix); + g_ptr_array_add (self->cache_nodes, watch->cache_node); + + trace ("watch thread: new watch on %s, %i total\n", watch->prefix, + self->events->len); + } + else + { + g_message_win32_error (result, "watch thread: could not watch %s", watch->prefix); + + CloseHandle (watch->event); + RegCloseKey (watch->hpath); + g_free (watch->prefix); + registry_cache_unref_tree (watch->cache_node); + } + break; + } + + case WATCH_THREAD_REMOVE_WATCH: + { + GNode *cache_node; + RegistryCacheItem *cache_item; + guint i; + + for (i = 1; i < self->prefixes->len; i++) + { if (strcmp (g_ptr_array_index (self->prefixes, i), self->message.watch.prefix) == 0) - break; - - if (i >= self->prefixes->len) - { - /* Don't make a fuss if the prefix is not being watched because - * maybe the path was deleted so we removed the watch. - */ - trace ("unsubscribe: prefix %s is not being watched [%i things are]!\n", - self->message.watch.prefix, self->prefixes->len); - g_free (self->message.watch.prefix); break; - } + } - cache_node = g_ptr_array_index (self->cache_nodes, i); + if (i >= self->prefixes->len) + { + /* Don't make a fuss if the prefix is not being watched because + * maybe the path was deleted so we removed the watch. + */ + trace ("unsubscribe: prefix %s is not being watched [%i things are]!\n", + self->message.watch.prefix, self->prefixes->len); + g_free (self->message.watch.prefix); + break; + } - trace ("watch thread: unsubscribe: freeing node %x, prefix %s, index %i\n", - (guint)cache_node, self->message.watch.prefix, i); - if (cache_node != NULL) - { - cache_item = cache_node->data; + cache_node = g_ptr_array_index (self->cache_nodes, i); - /* There may be more than one GSettings object subscribed to this - * path, only free the watch when the last one unsubscribes. - */ - cache_item->subscription_count --; - if (cache_item->subscription_count > 0) - break; - } + trace ("watch thread: unsubscribe: freeing node %p, prefix %s, index %i\n", + cache_node, self->message.watch.prefix, i); - _free_watch (self, i, cache_node); - g_free (self->message.watch.prefix); + if (cache_node != NULL) + { + cache_item = cache_node->data; - g_atomic_int_inc (&self->watches_remaining); - break; - } + /* There may be more than one GSettings object subscribed to this + * path, only free the watch when the last one unsubscribes. + */ + cache_item->subscription_count--; + if (cache_item->subscription_count > 0) + break; + } - case WATCH_THREAD_STOP: - { - gint i; + _free_watch (self, i, cache_node); + g_free (self->message.watch.prefix); - /* Free any remaining cache and watch handles */ - for (i=1; ievents->len; i++) - _free_watch (self, i, g_ptr_array_index (self->cache_nodes, i)); + g_atomic_int_inc (&self->watches_remaining); + break; + } - SetEvent (self->message_received_event); - ExitThread (0); - } + case WATCH_THREAD_STOP: + { + guint i; + + /* Free any remaining cache and watch handles */ + for (i = 1; i < self->events->len; i++) + _free_watch (self, i, g_ptr_array_index (self->cache_nodes, i)); + + SetEvent (self->message_received_event); + ExitThread (0); + } } self->message.type = WATCH_THREAD_NONE; SetEvent (self->message_received_event); } - /* Thread which watches for win32 registry events */ static DWORD WINAPI watch_thread_function (LPVOID parameter) @@ -1547,22 +1730,23 @@ watch_thread_function (LPVOID parameter) } else if (result > WAIT_OBJECT_0 && result <= WAIT_OBJECT_0 + self->events->len) { - HKEY hpath; - HANDLE cond; - gchar *prefix; - GNode *cache_node; + HKEY hpath; + HANDLE cond; + gchar *prefix; + GNode *cache_node; RegistryCacheItem *cache_item; - RegistryEvent *event; + RegistryEvent *event; + gint notify_index; /* One of our notifications has triggered. All we know is which one, and which key * this is for. We do most of the processing here, because we may as well. If the * registry changes further while we are processing it doesn't matter - we will then * receive another change notification from the OS anyway. */ - gint notify_index = result - WAIT_OBJECT_0; - hpath = g_ptr_array_index (self->handles, notify_index); - cond = g_ptr_array_index (self->events, notify_index); - prefix = g_ptr_array_index (self->prefixes, notify_index); + notify_index = result - WAIT_OBJECT_0; + hpath = g_ptr_array_index (self->handles, notify_index); + cond = g_ptr_array_index (self->events, notify_index); + prefix = g_ptr_array_index (self->prefixes, notify_index); cache_node = g_ptr_array_index (self->cache_nodes, notify_index); trace ("Watch thread: notify received on prefix %i: %s.\n", notify_index, prefix); @@ -1570,7 +1754,7 @@ watch_thread_function (LPVOID parameter) if (cache_node == NULL) { /* This path has been deleted */ - trace ("Notify received on a path that was deleted :(\n"); + trace ("Notify received on a path that was deleted\n"); continue; } @@ -1591,6 +1775,7 @@ watch_thread_function (LPVOID parameter) */ if (result != ERROR_KEY_DELETED) g_message_win32_error (result, "watch thread: failed to watch %s", prefix); + _free_watch (self, notify_index, cache_node); g_atomic_int_inc (&self->watches_remaining); continue; @@ -1602,11 +1787,11 @@ watch_thread_function (LPVOID parameter) cache_item = cache_node->data; if (cache_item->block_count) { - cache_item->block_count --; + cache_item->block_count--; trace ("Watch thread: notify blocked at %s\n", prefix); continue; } - + /* Now we update our stored cache from registry data, and find which keys have * actually changed. If more changes happen while we are processing, we will get * another event because we have reapplied for change notifications already. @@ -1615,24 +1800,21 @@ watch_thread_function (LPVOID parameter) * likely to block (only when changing notification subscriptions). */ event = g_slice_new (RegistryEvent); - - event->self = G_REGISTRY_BACKEND (self->owner); - g_object_ref (self->owner); - - event->items = g_ptr_array_new (); + event->self = g_object_ref (self->owner); + event->prefix = g_strdup (prefix); + event->items = g_ptr_array_new_with_free_func (g_free); EnterCriticalSection (G_REGISTRY_BACKEND (self->owner)->cache_lock); registry_cache_update (G_REGISTRY_BACKEND (self->owner), hpath, - prefix, NULL, cache_node, 0, event->items); + prefix, NULL, cache_node, 0, event); LeaveCriticalSection (G_REGISTRY_BACKEND (self->owner)->cache_lock); if (event->items->len > 0) - { - event->prefix = g_strdup (prefix); - g_idle_add ((GSourceFunc) watch_handler, event); - } + g_idle_add ((GSourceFunc) watch_handler, event); else { + g_object_unref (event->self); + g_free (event->prefix); g_ptr_array_free (event->items, TRUE); g_slice_free (RegistryEvent, event); } @@ -1665,29 +1847,31 @@ watch_start (GRegistryBackend *self) watch->message_received_event = CreateEvent (NULL, FALSE, FALSE, NULL); if (watch->message_sent_event == NULL || watch->message_received_event == NULL) { - g_message_win32_error (0, "gregistrybackend: Failed to create sync objects."); - goto fail_1; + g_message_win32_error (GetLastError (), "gregistrybackend: Failed to create sync objects."); + goto fail; } /* Use a small stack to make the thread more lightweight. */ watch->thread = CreateThread (NULL, 1024, watch_thread_function, watch, 0, NULL); if (watch->thread == NULL) { - g_message_win32_error (0, "gregistrybackend: Failed to create notify watch thread."); - goto fail_2; + g_message_win32_error (GetLastError (), "gregistrybackend: Failed to create notify watch thread."); + goto fail; } self->watch = watch; return TRUE; -fail_2: +fail: DeleteCriticalSection (watch->message_lock); g_slice_free (CRITICAL_SECTION, watch->message_lock); - CloseHandle (watch->message_sent_event); - CloseHandle (watch->message_received_event); -fail_1: + if (watch->message_sent_event != NULL) + CloseHandle (watch->message_sent_event); + if (watch->message_received_event != NULL) + CloseHandle (watch->message_received_event); g_slice_free (WatchThreadState, watch); + return FALSE; } @@ -1697,6 +1881,7 @@ watch_stop_unlocked (GRegistryBackend *self) { WatchThreadState *watch = self->watch; DWORD result; + g_return_if_fail (watch != NULL); watch->message.type = WATCH_THREAD_STOP; @@ -1723,7 +1908,7 @@ watch_stop_unlocked (GRegistryBackend *self) trace ("\nwatch thread: %x: all data freed.\n", self); self->watch = NULL; -}; +} static gboolean watch_add_notify (GRegistryBackend *self, @@ -1731,14 +1916,15 @@ watch_add_notify (GRegistryBackend *self, HKEY hpath, gchar *gsettings_prefix) { - WatchThreadState *watch = self->watch; - GNode *cache_node; + WatchThreadState *watch = self->watch; + GNode *cache_node; RegistryCacheItem *cache_item; #ifdef TRACE - DWORD result; + DWORD result; #endif g_return_val_if_fail (watch != NULL, FALSE); + trace ("watch_add_notify: prefix %s.\n", gsettings_prefix); /* Duplicate tree into the cache in the main thread, before we add the notify: if we do it in the @@ -1756,7 +1942,7 @@ watch_add_notify (GRegistryBackend *self, cache_item = cache_node->data; - cache_item->subscription_count ++; + cache_item->subscription_count++; if (cache_item->subscription_count > 1) { trace ("watch_add_notify: prefix %s already watched, %i subscribers.\n", @@ -1772,9 +1958,9 @@ watch_add_notify (GRegistryBackend *self, EnterCriticalSection (watch->message_lock); watch->message.type = WATCH_THREAD_ADD_WATCH; - watch->message.watch.event = event; - watch->message.watch.hpath = hpath; - watch->message.watch.prefix = gsettings_prefix; + watch->message.watch.event = event; + watch->message.watch.hpath = hpath; + watch->message.watch.prefix = gsettings_prefix; watch->message.watch.cache_node = cache_node; SetEvent (watch->message_sent_event); @@ -1795,15 +1981,14 @@ watch_add_notify (GRegistryBackend *self, LeaveCriticalSection (watch->message_lock); return TRUE; -}; - +} static void watch_remove_notify (GRegistryBackend *self, const gchar *key_name) { WatchThreadState *watch = self->watch; - LONG result; + LONG result; if (self->watch == NULL) /* Here we assume that the unsubscribe message is for somewhere that was @@ -1824,11 +2009,11 @@ watch_remove_notify (GRegistryBackend *self, result = WaitForSingleObject (watch->message_received_event, INFINITE); if (result != ERROR_SUCCESS) - g_warning ("unsubscribe from %s: message not acknowledged\n", key_name); + g_warning ("unsubscribe from %s: message not acknowledged", key_name); if (g_atomic_int_get (&watch->watches_remaining) >= MAX_WATCHES) /* Stop it before any new ones can get added and confuse things */ - watch_stop_unlocked (self); + watch_stop_unlocked (self); else LeaveCriticalSection (watch->message_lock); } @@ -1841,19 +2026,20 @@ g_registry_backend_subscribe (GSettingsBackend *backend, const char *key_name) { GRegistryBackend *self = G_REGISTRY_BACKEND (backend); - gchar *path_name, *value_name = NULL; + gchar *path_name; + gunichar2 *path_namew; + gchar *value_name = NULL; HKEY hpath; HANDLE event; LONG result; - if (self->watch == NULL) - if (!watch_start (self)) - return; + if (self->watch == NULL && !watch_start (self)) + return; if (g_atomic_int_dec_and_test (&self->watch->watches_remaining)) { g_atomic_int_inc (&self->watch->watches_remaining); - g_warning ("subscribe() failed: only %i different paths may be watched.\n", MAX_WATCHES); + g_warning ("subscribe() failed: only %i different paths may be watched.", MAX_WATCHES); return; } @@ -1864,16 +2050,18 @@ g_registry_backend_subscribe (GSettingsBackend *backend, * end in a slash! */ if (value_name != NULL && *value_name != 0) - g_warning ("subscribe() failed: path must end in a /, got %s\n", key_name); + g_warning ("subscribe() failed: path must end in a /, got %s", key_name); trace ("Subscribing to %s [registry %s / %s] - watch %x\n", key_name, path_name, value_name, self->watch); + path_namew = g_utf8_to_utf16 (path_name, -1, NULL, NULL, NULL); + g_free (path_name); /* Give the caller the benefit of the doubt if the key doesn't exist and create it. The caller * is almost certainly a new g_settings with this path as base path. */ - result = RegCreateKeyExA (HKEY_CURRENT_USER, path_name, 0, NULL, 0, KEY_READ, NULL, &hpath, + result = RegCreateKeyExW (HKEY_CURRENT_USER, path_namew, 0, NULL, 0, KEY_READ, NULL, &hpath, NULL); - g_free (path_name); + g_free (path_namew); if (result != ERROR_SUCCESS) { @@ -1885,7 +2073,7 @@ g_registry_backend_subscribe (GSettingsBackend *backend, event = CreateEvent (NULL, FALSE, FALSE, NULL); if (event == NULL) { - g_message_win32_error (result, "gregistrybackend: CreateEvent failed.\n"); + g_message_win32_error (result, "gregistrybackend: CreateEvent failed."); g_atomic_int_inc (&self->watch->watches_remaining); RegCloseKey (hpath); return; @@ -1894,7 +2082,11 @@ g_registry_backend_subscribe (GSettingsBackend *backend, /* The actual watch is added by the thread, which has to re-subscribe each time it * receives a change. */ if (!watch_add_notify (self, event, hpath, g_strdup (key_name))) - g_atomic_int_inc (&self->watch->watches_remaining); + { + g_atomic_int_inc (&self->watch->watches_remaining); + RegCloseKey (hpath); + CloseHandle (event); + } } static void @@ -1906,7 +2098,6 @@ g_registry_backend_unsubscribe (GSettingsBackend *backend, watch_remove_notify (G_REGISTRY_BACKEND (backend), key_name); } - /******************************************************************************** * Object management junk ********************************************************************************/ @@ -1914,13 +2105,13 @@ g_registry_backend_unsubscribe (GSettingsBackend *backend, static void g_registry_backend_finalize (GObject *object) { - GRegistryBackend *self = G_REGISTRY_BACKEND (object); + GRegistryBackend *self = G_REGISTRY_BACKEND (object); RegistryCacheItem *item; item = self->cache_root->data; g_warn_if_fail (item->ref_count == 1); - _free_cache_item (item); + registry_cache_item_free (item); g_node_destroy (self->cache_root); if (self->watch != NULL) @@ -1933,6 +2124,7 @@ g_registry_backend_finalize (GObject *object) g_slice_free (CRITICAL_SECTION, self->cache_lock); g_free (self->base_path); + g_free (self->base_pathw); } static void @@ -1948,7 +2140,6 @@ g_registry_backend_class_init (GRegistryBackendClass *class) backend_class->write_tree = g_registry_backend_write_tree; backend_class->reset = g_registry_backend_reset; backend_class->get_writable = g_registry_backend_get_writable; - backend_class->get_permission = g_registry_backend_get_permission; backend_class->subscribe = g_registry_backend_subscribe; backend_class->unsubscribe = g_registry_backend_unsubscribe; } @@ -1957,7 +2148,9 @@ static void g_registry_backend_init (GRegistryBackend *self) { RegistryCacheItem *item; + self->base_path = g_strdup_printf ("Software\\GSettings"); + self->base_pathw = g_utf8_to_utf16 (self->base_path, -1, NULL, NULL, NULL); item = g_slice_new (RegistryCacheItem); item->value.type = REG_NONE; diff --git a/gio/gresolver.c b/gio/gresolver.c index a6b12d6..d5387c0 100644 --- a/gio/gresolver.c +++ b/gio/gresolver.c @@ -26,7 +26,6 @@ #include "gnetworkingprivate.h" #include "gasyncresult.h" #include "ginetaddress.h" -#include "gsimpleasyncresult.h" #include "gtask.h" #include "gsrvtarget.h" #include "gthreadedresolver.h" diff --git a/gio/gresource-tool.c b/gio/gresource-tool.c index cc4e78b..984db37 100644 --- a/gio/gresource-tool.c +++ b/gio/gresource-tool.c @@ -91,7 +91,10 @@ list_resource (GResource *resource, len = MIN (strlen (child), strlen (prefix)); if (strncmp (child, prefix, len) != 0) - continue; + { + g_free (child); + continue; + } if (g_resource_get_info (resource, child, 0, &size, &flags, NULL)) { diff --git a/gio/gresource.c b/gio/gresource.c index a611929..2a10664 100644 --- a/gio/gresource.c +++ b/gio/gresource.c @@ -24,7 +24,7 @@ #include "gresource.h" #include -#include +#include #include #include #include @@ -47,7 +47,7 @@ G_DEFINE_BOXED_TYPE (GResource, g_resource, g_resource_ref, g_resource_unref) * * Applications and libraries often contain binary or textual data that is * really part of the application, rather than user data. For instance - * #GtkBuilder .ui files, splashscreen images, GMenu markup xml, CSS files, + * #GtkBuilder .ui files, splashscreen images, GMenu markup XML, CSS files, * icons, etc. These are often shipped as files in `$datadir/appname`, or * manually included as literal strings in the code. * @@ -68,7 +68,7 @@ G_DEFINE_BOXED_TYPE (GResource, g_resource, g_resource_ref, g_resource_unref) * The only options currently supported are: * * `xml-stripblanks` which will use the xmllint command - * to strip ignorable whitespace from the xml file. For this to work, + * to strip ignorable whitespace from the XML file. For this to work, * the `XMLLINT` environment variable must be set to the full path to * the xmllint executable, or xmllint must be in the `PATH`; otherwise * the preprocessing step is skipped. @@ -81,7 +81,7 @@ G_DEFINE_BOXED_TYPE (GResource, g_resource, g_resource_ref, g_resource_unref) * abort. * * Resource bundles are created by the [glib-compile-resources][glib-compile-resources] program - * which takes an xml file that describes the bundle, and a set of files that the xml references. These + * which takes an XML file that describes the bundle, and a set of files that the XML references. These * are combined into a binary resource bundle. * * An example resource description: @@ -103,23 +103,29 @@ G_DEFINE_BOXED_TYPE (GResource, g_resource, g_resource_ref, g_resource_unref) * /org/gtk/Example/menumarkup.xml * ]| * - * Note that all resources in the process share the same namespace, so use java-style + * Note that all resources in the process share the same namespace, so use Java-style * path prefixes (like in the above example) to avoid conflicts. * - * You can then use [glib-compile-resources][glib-compile-resources] to compile the xml to a + * You can then use [glib-compile-resources][glib-compile-resources] to compile the XML to a * binary bundle that you can load with g_resource_load(). However, its more common to use the --generate-source and * --generate-header arguments to create a source file and header to link directly into your application. + * This will generate `get_resource()`, `register_resource()` and + * `unregister_resource()` functions, prefixed by the `--c-name` argument passed + * to [glib-compile-resources][glib-compile-resources]. `get_resource()` returns + * the generated #GResource object. The register and unregister functions + * register the resource so its files can be accessed using + * g_resources_lookup_data(). * * Once a #GResource has been created and registered all the data in it can be accessed globally in the process by * using API calls like g_resources_open_stream() to stream the data or g_resources_lookup_data() to get a direct pointer - * to the data. You can also use uris like "resource:///org/gtk/Example/data/splashscreen.png" with #GFile to access + * to the data. You can also use URIs like "resource:///org/gtk/Example/data/splashscreen.png" with #GFile to access * the resource data. * * There are two forms of the generated source, the default version uses the compiler support for constructor * and destructor functions (where available) to automatically create and register the #GResource on startup * or library load time. If you pass --manual-register two functions to register/unregister the resource is instead * created. This requires an explicit initialization call in your application/library, but it works on all platforms, - * even on the minor ones where this is not available. (Constructor support is available for at least Win32, MacOS and Linux.) + * even on the minor ones where this is not available. (Constructor support is available for at least Win32, Mac OS and Linux.) * * Note that resource data can point directly into the data segment of e.g. a library, so if you are unloading libraries * during runtime you need to be very careful with keeping around pointers to data from a resource, as this goes away @@ -151,7 +157,7 @@ G_DEFINE_QUARK (g-resource-error-quark, g_resource_error) * g_resource_ref: * @resource: A #GResource * - * Atomically increments the reference count of @array by one. This + * Atomically increments the reference count of @resource by one. This * function is MT-safe and may be called from any thread. * * Returns: The passed in #GResource @@ -170,7 +176,7 @@ g_resource_ref (GResource *resource) * @resource: A #GResource * * Atomically decrements the reference count of @resource by one. If the - * reference count drops to 0, all memory allocated by the array is + * reference count drops to 0, all memory allocated by the resource is * released. This function is MT-safe and may be called from any * thread. * @@ -524,6 +530,9 @@ g_resource_get_info (GResource *resource, * The return result is a %NULL terminated list of strings which should * be released with g_strfreev(). * + * If @path is invalid or does not exist in the #GResource, + * %G_RESOURCE_ERROR_NOT_FOUND will be returned. + * * @lookup_flags controls the behaviour of the lookup. * * Returns: (array zero-terminated=1) (transfer full): an array of constant strings diff --git a/gio/gresourcefile.c b/gio/gresourcefile.c index 380095c..6f211f4 100644 --- a/gio/gresourcefile.c +++ b/gio/gresourcefile.c @@ -28,6 +28,7 @@ #include #include #include "gfile.h" +#include "gfilemonitor.h" #include "gseekable.h" #include "gfileinputstream.h" #include "gfileinfo.h" @@ -517,6 +518,28 @@ g_resource_file_query_info (GFile *file, return info; } +static GFileInfo * +g_resource_file_query_filesystem_info (GFile *file, + const char *attributes, + GCancellable *cancellable, + GError **error) +{ + GFileInfo *info; + GFileAttributeMatcher *matcher; + + info = g_file_info_new (); + + matcher = g_file_attribute_matcher_new (attributes); + if (g_file_attribute_matcher_matches (matcher, G_FILE_ATTRIBUTE_FILESYSTEM_TYPE)) + g_file_info_set_attribute_string (info, G_FILE_ATTRIBUTE_FILESYSTEM_TYPE, "resource"); + + if (g_file_attribute_matcher_matches (matcher, G_FILE_ATTRIBUTE_FILESYSTEM_READONLY)) g_file_info_set_attribute_boolean (info, G_FILE_ATTRIBUTE_FILESYSTEM_READONLY, TRUE); + + g_file_attribute_matcher_unref (matcher); + + return info; +} + static GFileAttributeInfoList * g_resource_file_query_settable_attributes (GFile *file, GCancellable *cancellable, @@ -565,6 +588,39 @@ g_resource_file_read (GFile *file, return res; } +typedef GFileMonitor GResourceFileMonitor; +typedef GFileMonitorClass GResourceFileMonitorClass; + +GType g_resource_file_monitor_get_type (void); + +G_DEFINE_TYPE (GResourceFileMonitor, g_resource_file_monitor, G_TYPE_FILE_MONITOR) + +static gboolean +g_resource_file_monitor_cancel (GFileMonitor *monitor) +{ + return TRUE; +} + +static void +g_resource_file_monitor_init (GResourceFileMonitor *monitor) +{ +} + +static void +g_resource_file_monitor_class_init (GResourceFileMonitorClass *class) +{ + class->cancel = g_resource_file_monitor_cancel; +} + +static GFileMonitor * +g_resource_file_monitor_file (GFile *file, + GFileMonitorFlags flags, + GCancellable *cancellable, + GError **error) +{ + return g_object_new (g_resource_file_monitor_get_type (), NULL); +} + static void g_resource_file_file_iface_init (GFileIface *iface) { @@ -585,9 +641,11 @@ g_resource_file_file_iface_init (GFileIface *iface) iface->get_child_for_display_name = g_resource_file_get_child_for_display_name; iface->enumerate_children = g_resource_file_enumerate_children; iface->query_info = g_resource_file_query_info; + iface->query_filesystem_info = g_resource_file_query_filesystem_info; iface->query_settable_attributes = g_resource_file_query_settable_attributes; iface->query_writable_namespaces = g_resource_file_query_writable_namespaces; iface->read_fn = g_resource_file_read; + iface->monitor_file = g_resource_file_monitor_file; iface->supports_thread_contexts = TRUE; } diff --git a/gio/gschema.its b/gio/gschema.its new file mode 100644 index 0000000..344c54b --- /dev/null +++ b/gio/gschema.its @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + diff --git a/gio/gschema.loc b/gio/gschema.loc new file mode 100644 index 0000000..8945230 --- /dev/null +++ b/gio/gschema.loc @@ -0,0 +1,10 @@ + + + + + + + diff --git a/gio/gsettings-tool.c b/gio/gsettings-tool.c index cf3ef19..0026f55 100644 --- a/gio/gsettings-tool.c +++ b/gio/gsettings-tool.c @@ -155,7 +155,7 @@ gsettings_list_keys (void) { gchar **keys; - keys = g_settings_list_keys (global_settings); + keys = g_settings_schema_list_keys (global_schema); output_list (keys); g_strfreev (keys); } @@ -201,12 +201,12 @@ static void enumerate (GSettings *settings) { gchar **keys; - gchar *schema; + GSettingsSchema *schema; gint i; - g_object_get (settings, "schema-id", &schema, NULL); + g_object_get (settings, "settings-schema", &schema, NULL); - keys = g_settings_list_keys (settings); + keys = g_settings_schema_list_keys (schema); for (i = 0; keys[i]; i++) { GVariant *value; @@ -214,12 +214,12 @@ enumerate (GSettings *settings) value = g_settings_get_value (settings, keys[i]); printed = g_variant_print (value, TRUE); - g_print ("%s %s %s\n", schema, keys[i], printed); + g_print ("%s %s %s\n", g_settings_schema_get_id (schema), keys[i], printed); g_variant_unref (value); g_free (printed); } - g_free (schema); + g_settings_schema_unref (schema); g_strfreev (keys); } @@ -344,15 +344,19 @@ gsettings_reset (void) static void reset_all_keys (GSettings *settings) { + GSettingsSchema *schema; gchar **keys; gint i; - keys = g_settings_list_keys (settings); + g_object_get (settings, "settings-schema", &schema, NULL); + + keys = g_settings_schema_list_keys (schema); for (i = 0; keys[i]; i++) { g_settings_reset (settings, keys[i]); } + g_settings_schema_unref (schema); g_strfreev (keys); } @@ -408,8 +412,6 @@ value_changed (GSettings *settings, static void gsettings_monitor (void) { - gchar **keys; - if (global_key) { gchar *name; @@ -420,17 +422,6 @@ gsettings_monitor (void) else g_signal_connect (global_settings, "changed", G_CALLBACK (value_changed), NULL); - /* We have to read a value from GSettings before we start receiving - * signals... - * - * If the schema has zero keys then we won't be displaying any - * notifications anyway. - */ - keys = g_settings_list_keys (global_settings); - if (keys[0]) - g_variant_unref (g_settings_get_value (global_settings, keys[0])); - g_strfreev (keys); - for (;;) g_main_context_iteration (NULL, TRUE); } @@ -682,6 +673,7 @@ int main (int argc, char **argv) { void (* function) (void); + gboolean need_settings; #ifdef G_OS_WIN32 gchar *tmp; @@ -705,7 +697,7 @@ main (int argc, char **argv) if (argc < 2) return gsettings_help (FALSE, NULL); - global_schema_source = g_settings_schema_source_ref (g_settings_schema_source_get_default ()); + global_schema_source = g_settings_schema_source_get_default (); if (argc > 3 && g_str_equal (argv[1], "--schemadir")) { @@ -713,7 +705,6 @@ main (int argc, char **argv) GError *error = NULL; global_schema_source = g_settings_schema_source_new_from_directory (argv[2], parent, FALSE, &error); - g_settings_schema_source_unref (parent); if (global_schema_source == NULL) { @@ -727,6 +718,15 @@ main (int argc, char **argv) argv = argv + 2; argc -= 2; } + else if (global_schema_source == NULL) + { + g_printerr (_("No schemas installed\n")); + return 1; + } + else + g_settings_schema_source_ref (global_schema_source); + + need_settings = TRUE; if (strcmp (argv[1], "help") == 0) return gsettings_help (TRUE, argv[2]); @@ -741,7 +741,10 @@ main (int argc, char **argv) function = gsettings_list_relocatable_schemas; else if (argc == 3 && strcmp (argv[1], "list-keys") == 0) - function = gsettings_list_keys; + { + need_settings = FALSE; + function = gsettings_list_keys; + } else if (argc == 3 && strcmp (argv[1], "list-children") == 0) function = gsettings_list_children; @@ -750,7 +753,10 @@ main (int argc, char **argv) function = gsettings_list_recursively; else if (argc == 4 && strcmp (argv[1], "range") == 0) - function = gsettings_range; + { + need_settings = FALSE; + function = gsettings_range; + } else if (argc == 4 && strcmp (argv[1], "get") == 0) function = gsettings_get; @@ -786,19 +792,45 @@ main (int argc, char **argv) parts = g_strsplit (argv[2], ":", 2); global_schema = g_settings_schema_source_lookup (global_schema_source, parts[0], TRUE); - if (parts[1]) - { - if (!check_relocatable_schema (global_schema, parts[0]) || !check_path (parts[1])) - return 1; - global_settings = g_settings_new_full (global_schema, NULL, parts[1]); + if (need_settings) + { + if (parts[1]) + { + if (!check_relocatable_schema (global_schema, parts[0]) || !check_path (parts[1])) + return 1; + + global_settings = g_settings_new_full (global_schema, NULL, parts[1]); + } + else + { + if (!check_schema (global_schema, parts[0])) + return 1; + + global_settings = g_settings_new_full (global_schema, NULL, NULL); + } } else { - if (!check_schema (global_schema, parts[0])) - return 1; - - global_settings = g_settings_new_full (global_schema, NULL, NULL); + /* If the user has given a path then we enforce that we have a + * relocatable schema, but if they didn't give a path then it + * doesn't matter what type of schema we have (since it's + * reasonable to ask for introspection information on a + * relocatable schema without having to give the path). + */ + if (parts[1]) + { + if (!check_relocatable_schema (global_schema, parts[0]) || !check_path (parts[1])) + return 1; + } + else + { + if (global_schema == NULL) + { + g_printerr (_("No such schema '%s'\n"), parts[0]); + return 1; + } + } } g_strfreev (parts); diff --git a/gio/gsettings.c b/gio/gsettings.c index ad8c408..e421e0c 100644 --- a/gio/gsettings.c +++ b/gio/gsettings.c @@ -64,7 +64,8 @@ * * Normally, a schema has as fixed path that determines where the settings * are stored in the conceptual global tree of settings. However, schemas - * can also be 'relocatable', i.e. not equipped with a fixed path. This is + * can also be '[relocatable][gsettings-relocatable]', i.e. not equipped with + * a fixed path. This is * useful e.g. when the schema describes an 'account', and you want to be * able to store a arbitrary number of accounts. * @@ -83,22 +84,36 @@ * the names must begin with a lowercase character, must not end * with a '-', and must not contain consecutive dashes. * - * GSettings supports change notification. The primary mechanism to - * watch for changes is to connect to the "changed" signal. You can - * optionally watch for changes on only a single key by using a signal - * detail. Signals are only guaranteed to be emitted for a given key - * after you have read the value of that key while a signal handler was - * connected for that key. Signals may or may not be emitted in the - * case that the key "changed" to the value that you had previously - * read. Signals may be reported in additional cases as well and the - * "changed" signal should really be treated as "may have changed". - * * Similar to GConf, the default values in GSettings schemas can be * localized, but the localized values are stored in gettext catalogs * and looked up with the domain that is specified in the - * gettext-domain attribute of the or - * elements and the category that is specified in the l10n attribute of - * the element. + * `gettext-domain` attribute of the or + * elements and the category that is specified in the `l10n` attribute of + * the element. The string which is translated includes all text in + * the element, including any surrounding quotation marks. + * + * The `l10n` attribute must be set to `messages` or `time`, and sets the + * [locale category for + * translation](https://www.gnu.org/software/gettext/manual/html_node/Aspects.html#index-locale-categories-1). + * The `messages` category should be used by default; use `time` for + * translatable date or time formats. A translation comment can be added as an + * XML comment immediately above the element — it is recommended to + * add these comments to aid translators understand the meaning and + * implications of the default value. An optional translation `context` + * attribute can be set on the element to disambiguate multiple + * defaults which use the same string. + * + * For example: + * |[ + * + * ['bad', 'words'] + * ]| + * + * Translations of default values must remain syntactically valid serialized + * #GVariants (e.g. retaining any surrounding quotation marks) or runtime + * errors will occur. * * GSettings uses schemas in a compact binary form that is created * by the [glib-compile-schemas][glib-compile-schemas] @@ -228,6 +243,83 @@ * automatically binds it to the writability of the bound setting. * If this 'magic' gets in the way, it can be suppressed with the * #G_SETTINGS_BIND_NO_SENSITIVITY flag. + * + * ## Relocatable schemas # {#gsettings-relocatable} + * + * A relocatable schema is one with no `path` attribute specified on its + * element. By using g_settings_new_with_path(), a #GSettings object + * can be instantiated for a relocatable schema, assigning a path to the + * instance. Paths passed to g_settings_new_with_path() will typically be + * constructed dynamically from a constant prefix plus some form of instance + * identifier; but they must still be valid GSettings paths. Paths could also + * be constant and used with a globally installed schema originating from a + * dependency library. + * + * For example, a relocatable schema could be used to store geometry information + * for different windows in an application. If the schema ID was + * `org.foo.MyApp.Window`, it could be instantiated for paths + * `/org/foo/MyApp/main/`, `/org/foo/MyApp/document-1/`, + * `/org/foo/MyApp/document-2/`, etc. If any of the paths are well-known + * they can be specified as elements in the parent schema, e.g.: + * |[ + * + * + * + * ]| + * + * ## Build system integration # {#gsettings-build-system} + * + * GSettings comes with autotools integration to simplify compiling and + * installing schemas. To add GSettings support to an application, add the + * following to your `configure.ac`: + * |[ + * GLIB_GSETTINGS + * ]| + * + * In the appropriate `Makefile.am`, use the following snippet to compile and + * install the named schema: + * |[ + * gsettings_SCHEMAS = org.foo.MyApp.gschema.xml + * EXTRA_DIST = $(gsettings_SCHEMAS) + * + * @GSETTINGS_RULES@ + * ]| + * + * No changes are needed to the build system to mark a schema XML file for + * translation. Assuming it sets the `gettext-domain` attribute, a schema may + * be marked for translation by adding it to `POTFILES.in`, assuming gettext + * 0.19 is in use (the preferred method for translation): + * |[ + * data/org.foo.MyApp.gschema.xml + * ]| + * + * Alternatively, if intltool 0.50.1 is in use: + * |[ + * [type: gettext/gsettings]data/org.foo.MyApp.gschema.xml + * ]| + * + * GSettings will use gettext to look up translations for the and + * elements, and also any elements which have a `l10n` + * attribute set. Translations must not be included in the `.gschema.xml` file + * by the build system, for example by using intltool XML rules with a + * `.gschema.xml.in` template. + * + * If an enumerated type defined in a C header file is to be used in a GSettings + * schema, it can either be defined manually using an element in the + * schema XML, or it can be extracted automatically from the C header. This + * approach is preferred, as it ensures the two representations are always + * synchronised. To do so, add the following to the relevant `Makefile.am`: + * |[ + * gsettings_ENUM_NAMESPACE = org.foo.MyApp + * gsettings_ENUM_FILES = my-app-enums.h my-app-misc.h + * ]| + * + * `gsettings_ENUM_NAMESPACE` specifies the schema namespace for the enum files, + * which are specified in `gsettings_ENUM_FILES`. This will generate a + * `org.foo.MyApp.enums.xml` file containing the extracted enums, which will be + * automatically included in the schema compilation, install and uninstall + * rules. It should not be committed to version control or included in + * `EXTRA_DIST`. */ /** @@ -246,8 +338,6 @@ struct _GSettingsPrivate GSettingsSchema *schema; gchar *path; - gboolean is_subscribed; - GDelayedSettingsBackend *delayed; }; @@ -323,32 +413,6 @@ g_settings_real_writable_change_event (GSettings *settings, return FALSE; } -static gboolean -g_settings_has_signal_handlers (GSettings *settings, - const gchar *key) -{ - GSettingsClass *class = G_SETTINGS_GET_CLASS (settings); - GQuark keyq; - - if (class->change_event != g_settings_real_change_event || - class->writable_change_event != g_settings_real_writable_change_event) - return TRUE; - - keyq = g_quark_from_string (key); - - if (g_signal_has_handler_pending (settings, g_settings_signals[SIGNAL_WRITABLE_CHANGE_EVENT], 0, TRUE) || - g_signal_has_handler_pending (settings, g_settings_signals[SIGNAL_WRITABLE_CHANGED], 0, TRUE) || - g_signal_has_handler_pending (settings, g_settings_signals[SIGNAL_WRITABLE_CHANGED], keyq, TRUE) || - g_signal_has_handler_pending (settings, g_settings_signals[SIGNAL_CHANGE_EVENT], 0, TRUE) || - g_signal_has_handler_pending (settings, g_settings_signals[SIGNAL_CHANGED], 0, TRUE) || - g_signal_has_handler_pending (settings, g_settings_signals[SIGNAL_CHANGED], keyq, TRUE)) - return TRUE; - - /* None of that? Then surely nobody is watching.... */ - return FALSE; -} - - static void settings_backend_changed (GObject *target, GSettingsBackend *backend, @@ -615,6 +679,8 @@ g_settings_constructed (GObject *object) g_settings_backend_watch (settings->priv->backend, &listener_vtable, G_OBJECT (settings), settings->priv->main_context); + g_settings_backend_subscribe (settings->priv->backend, + settings->priv->path); } static void @@ -622,10 +688,8 @@ g_settings_finalize (GObject *object) { GSettings *settings = G_SETTINGS (object); - if (settings->priv->is_subscribed) - g_settings_backend_unsubscribe (settings->priv->backend, - settings->priv->path); - + g_settings_backend_unsubscribe (settings->priv->backend, + settings->priv->path); g_main_context_unref (settings->priv->main_context); g_object_unref (settings->priv->backend); g_settings_schema_unref (settings->priv->schema); @@ -668,7 +732,7 @@ g_settings_class_init (GSettingsClass *class) * when key "x" changes. */ g_settings_signals[SIGNAL_CHANGED] = - g_signal_new ("changed", G_TYPE_SETTINGS, + g_signal_new (I_("changed"), G_TYPE_SETTINGS, G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, G_STRUCT_OFFSET (GSettingsClass, changed), NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, @@ -701,7 +765,7 @@ g_settings_class_init (GSettingsClass *class) * event. FALSE to propagate the event further. */ g_settings_signals[SIGNAL_CHANGE_EVENT] = - g_signal_new ("change-event", G_TYPE_SETTINGS, + g_signal_new (I_("change-event"), G_TYPE_SETTINGS, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GSettingsClass, change_event), g_signal_accumulator_true_handled, NULL, @@ -722,7 +786,7 @@ g_settings_class_init (GSettingsClass *class) * callbacks when the writability of "x" changes. */ g_settings_signals[SIGNAL_WRITABLE_CHANGED] = - g_signal_new ("writable-changed", G_TYPE_SETTINGS, + g_signal_new (I_("writable-changed"), G_TYPE_SETTINGS, G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED, G_STRUCT_OFFSET (GSettingsClass, writable_changed), NULL, NULL, g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, @@ -756,7 +820,7 @@ g_settings_class_init (GSettingsClass *class) * event. FALSE to propagate the event further. */ g_settings_signals[SIGNAL_WRITABLE_CHANGE_EVENT] = - g_signal_new ("writable-change-event", G_TYPE_SETTINGS, + g_signal_new (I_("writable-change-event"), G_TYPE_SETTINGS, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GSettingsClass, writable_change_event), g_signal_accumulator_true_handled, NULL, @@ -1090,13 +1154,6 @@ g_settings_read_from_backend (GSettings *settings, GVariant *fixup; gchar *path; - /* If we are not yet watching for changes, consider doing it now... */ - if (!settings->priv->is_subscribed && g_settings_has_signal_handlers (settings, key->name)) - { - g_settings_backend_subscribe (settings->priv->backend, settings->priv->path); - settings->priv->is_subscribed = TRUE; - } - path = g_strconcat (settings->priv->path, key->name, NULL); if (user_value_only) value = g_settings_backend_read_user_value (settings->priv->backend, path, key->type); @@ -2284,23 +2341,7 @@ g_settings_get_child (GSettings *settings, gchar ** g_settings_list_keys (GSettings *settings) { - const GQuark *keys; - gchar **strv; - gint n_keys; - gint i, j; - - keys = g_settings_schema_list (settings->priv->schema, &n_keys); - strv = g_new (gchar *, n_keys + 1); - for (i = j = 0; i < n_keys; i++) - { - const gchar *key = g_quark_to_string (keys[i]); - - if (!g_str_has_suffix (key, "/")) - strv[j++] = g_strdup (key); - } - strv[j] = NULL; - - return strv; + return g_settings_schema_list_keys (settings->priv->schema); } /** diff --git a/gio/gsettings.h b/gio/gsettings.h index 02a0337..5e781d9 100644 --- a/gio/gsettings.h +++ b/gio/gsettings.h @@ -92,7 +92,7 @@ GSettings * g_settings_new_full (GSettin const gchar *path); GLIB_AVAILABLE_IN_ALL gchar ** g_settings_list_children (GSettings *settings); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46_FOR(g_settings_schema_list_keys) gchar ** g_settings_list_keys (GSettings *settings); GLIB_DEPRECATED_IN_2_40_FOR(g_settings_schema_key_get_range) GVariant * g_settings_get_range (GSettings *settings, diff --git a/gio/gsettingsschema.c b/gio/gsettingsschema.c index e3966fd..5b90d01 100644 --- a/gio/gsettingsschema.c +++ b/gio/gsettingsschema.c @@ -627,7 +627,7 @@ end_element (GMarkupParseContext *context, normalised = normalise_whitespace (info->string->str); - if (gettext_domain) + if (gettext_domain && normalised[0]) { gchar *translated; @@ -950,7 +950,7 @@ g_settings_schema_get_value (GSettingsSchema *schema, { GSettingsSchema *s = schema; GVariantIter *iter; - GVariant *value; + GVariant *value = NULL; g_return_val_if_fail (schema != NULL, NULL); @@ -1036,6 +1036,8 @@ g_settings_schema_list_children (GSettingsSchema *schema) gint n_keys; gint i, j; + g_return_val_if_fail (schema != NULL, NULL); + keys = g_settings_schema_list (schema, &n_keys); strv = g_new (gchar *, n_keys + 1); for (i = j = 0; i < n_keys; i++) @@ -1056,6 +1058,45 @@ g_settings_schema_list_children (GSettingsSchema *schema) return strv; } +/** + * g_settings_schema_list_keys: + * @schema: a #GSettingsSchema + * + * Introspects the list of keys on @schema. + * + * You should probably not be calling this function from "normal" code + * (since you should already know what keys are in your schema). This + * function is intended for introspection reasons. + * + * Returns: (transfer full) (element-type utf8): a list of the keys on + * @schema + * + * Since: 2.46 + */ +gchar ** +g_settings_schema_list_keys (GSettingsSchema *schema) +{ + const GQuark *keys; + gchar **strv; + gint n_keys; + gint i, j; + + g_return_val_if_fail (schema != NULL, NULL); + + keys = g_settings_schema_list (schema, &n_keys); + strv = g_new (gchar *, n_keys + 1); + for (i = j = 0; i < n_keys; i++) + { + const gchar *key = g_quark_to_string (keys[i]); + + if (!g_str_has_suffix (key, "/")) + strv[j++] = g_strdup (key); + } + strv[j] = NULL; + + return strv; +} + const GQuark * g_settings_schema_list (GSettingsSchema *schema, gint *n_items) @@ -1104,7 +1145,7 @@ g_settings_schema_list (GSettingsSchema *schema, child_table = NULL; - for (source = schema_sources; source; source = source->parent) + for (source = schema->source; source; source = source->parent) if ((child_table = gvdb_table_get_table (source->table, g_variant_get_string (child_schema, NULL)))) break; diff --git a/gio/gsettingsschema.h b/gio/gsettingsschema.h index d16d78a..de81e37 100644 --- a/gio/gsettingsschema.h +++ b/gio/gsettingsschema.h @@ -74,6 +74,9 @@ GSettingsSchemaKey * g_settings_schema_get_key (GSettin GLIB_AVAILABLE_IN_2_40 gboolean g_settings_schema_has_key (GSettingsSchema *schema, const gchar *name); +GLIB_AVAILABLE_IN_2_46 +gchar** g_settings_schema_list_keys (GSettingsSchema *schema); + GLIB_AVAILABLE_IN_2_44 gchar ** g_settings_schema_list_children (GSettingsSchema *schema); diff --git a/gio/gsimpleaction.c b/gio/gsimpleaction.c index e9eb360..2c0bc85 100644 --- a/gio/gsimpleaction.c +++ b/gio/gsimpleaction.c @@ -605,6 +605,8 @@ GSimpleAction * g_simple_action_new (const gchar *name, const GVariantType *parameter_type) { + g_return_val_if_fail (name != NULL, NULL); + return g_object_new (G_TYPE_SIMPLE_ACTION, "name", name, "parameter-type", parameter_type, diff --git a/gio/gsimpleactiongroup.c b/gio/gsimpleactiongroup.c index c542251..c62e66f 100644 --- a/gio/gsimpleactiongroup.c +++ b/gio/gsimpleactiongroup.c @@ -191,6 +191,13 @@ g_simple_action_group_add_action (GActionMap *action_map, GAction *old_action; action_name = g_action_get_name (action); + if (action_name == NULL) + { + g_critical ("The supplied action has no name. You must set the " + "GAction:name property when creating an action."); + return; + } + old_action = g_hash_table_lookup (simple->priv->table, action_name); if (old_action != action) diff --git a/gio/gsimpleasyncresult.c b/gio/gsimpleasyncresult.c index 5d43ad4..fdd83fc 100644 --- a/gio/gsimpleasyncresult.c +++ b/gio/gsimpleasyncresult.c @@ -36,7 +36,7 @@ * @include: gio/gio.h * @see_also: #GAsyncResult, #GTask * - * As of GLib 2.36, #GSimpleAsyncResult is deprecated in favor of + * As of GLib 2.46, #GSimpleAsyncResult is deprecated in favor of * #GTask, which provides a simpler API. * * #GSimpleAsyncResult implements #GAsyncResult. @@ -202,6 +202,8 @@ * ]| */ +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + static void g_simple_async_result_async_result_iface_init (GAsyncResultIface *iface); struct _GSimpleAsyncResult @@ -305,6 +307,8 @@ g_simple_async_result_init (GSimpleAsyncResult *simple) * this function returns. * * Returns: a #GSimpleAsyncResult. + * + * Deprecated: 2.46: Use g_task_new() instead. **/ GSimpleAsyncResult * g_simple_async_result_new (GObject *source_object, @@ -338,6 +342,8 @@ g_simple_async_result_new (GObject *source_object, * Creates a #GSimpleAsyncResult from an error condition. * * Returns: a #GSimpleAsyncResult. + * + * Deprecated: 2.46: Use g_task_new() and g_task_return_error() instead. **/ GSimpleAsyncResult * g_simple_async_result_new_from_error (GObject *source_object, @@ -370,6 +376,8 @@ g_simple_async_result_new_from_error (GObject *source_object, * Returns: a #GSimpleAsyncResult * * Since: 2.28 + * + * Deprecated: 2.46: Use g_task_new() and g_task_return_error() instead. **/ GSimpleAsyncResult * g_simple_async_result_new_take_error (GObject *source_object, @@ -402,6 +410,8 @@ g_simple_async_result_new_take_error (GObject *source_object, * Creates a new #GSimpleAsyncResult with a set error. * * Returns: a #GSimpleAsyncResult. + * + * Deprecated: 2.46: Use g_task_new() and g_task_return_new_error() instead. **/ GSimpleAsyncResult * g_simple_async_result_new_error (GObject *source_object, @@ -470,6 +480,8 @@ g_simple_async_result_async_result_iface_init (GAsyncResultIface *iface) * This function has nothing to do with * g_simple_async_result_set_check_cancellable(). It only refers to the * #GCancellable passed to g_simple_async_result_run_in_thread(). + * + * Deprecated: 2.46 **/ void g_simple_async_result_set_handle_cancellation (GSimpleAsyncResult *simple, @@ -486,6 +498,8 @@ g_simple_async_result_set_handle_cancellation (GSimpleAsyncResult *simple, * Gets the source tag for the #GSimpleAsyncResult. * * Returns: a #gpointer to the source object for the #GSimpleAsyncResult. + * + * Deprecated: 2.46. Use #GTask and g_task_get_source_tag() instead. **/ gpointer g_simple_async_result_get_source_tag (GSimpleAsyncResult *simple) @@ -507,6 +521,8 @@ g_simple_async_result_get_source_tag (GSimpleAsyncResult *simple) * function will return %TRUE with @dest set appropriately. * * Returns: %TRUE if the error was propagated to @dest. %FALSE otherwise. + * + * Deprecated: 2.46: Use #GTask instead. **/ gboolean g_simple_async_result_propagate_error (GSimpleAsyncResult *simple, @@ -534,6 +550,8 @@ g_simple_async_result_propagate_error (GSimpleAsyncResult *simple, * @destroy_op_res: a #GDestroyNotify function. * * Sets the operation result within the asynchronous result to a pointer. + * + * Deprecated: 2.46: Use #GTask and g_task_return_pointer() instead. **/ void g_simple_async_result_set_op_res_gpointer (GSimpleAsyncResult *simple, @@ -554,6 +572,8 @@ g_simple_async_result_set_op_res_gpointer (GSimpleAsyncResult *simple, * Gets a pointer result as returned by the asynchronous function. * * Returns: a pointer from the result. + * + * Deprecated: 2.46: Use #GTask and g_task_propagate_pointer() instead. **/ gpointer g_simple_async_result_get_op_res_gpointer (GSimpleAsyncResult *simple) @@ -569,6 +589,8 @@ g_simple_async_result_get_op_res_gpointer (GSimpleAsyncResult *simple) * * Sets the operation result within the asynchronous result to * the given @op_res. + * + * Deprecated: 2.46: Use #GTask and g_task_return_int() instead. **/ void g_simple_async_result_set_op_res_gssize (GSimpleAsyncResult *simple, @@ -586,6 +608,8 @@ g_simple_async_result_set_op_res_gssize (GSimpleAsyncResult *simple, * Gets a gssize from the asynchronous result. * * Returns: a gssize returned from the asynchronous function. + * + * Deprecated: 2.46: Use #GTask and g_task_propagate_int() instead. **/ gssize g_simple_async_result_get_op_res_gssize (GSimpleAsyncResult *simple) @@ -600,6 +624,8 @@ g_simple_async_result_get_op_res_gssize (GSimpleAsyncResult *simple) * @op_res: a #gboolean. * * Sets the operation result to a boolean within the asynchronous result. + * + * Deprecated: 2.46: Use #GTask and g_task_return_boolean() instead. **/ void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple, @@ -618,6 +644,8 @@ g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple, * * Returns: %TRUE if the operation's result was %TRUE, %FALSE * if the operation's result was %FALSE. + * + * Deprecated: 2.46: Use #GTask and g_task_propagate_boolean() instead. **/ gboolean g_simple_async_result_get_op_res_gboolean (GSimpleAsyncResult *simple) @@ -632,6 +660,8 @@ g_simple_async_result_get_op_res_gboolean (GSimpleAsyncResult *simple) * @error: #GError. * * Sets the result from a #GError. + * + * Deprecated: 2.46: Use #GTask and g_task_return_error() instead. **/ void g_simple_async_result_set_from_error (GSimpleAsyncResult *simple, @@ -655,6 +685,8 @@ g_simple_async_result_set_from_error (GSimpleAsyncResult *simple, * of @error, so the caller does not need to free it any more. * * Since: 2.28 + * + * Deprecated: 2.46: Use #GTask and g_task_return_error() instead. **/ void g_simple_async_result_take_error (GSimpleAsyncResult *simple, @@ -679,6 +711,8 @@ g_simple_async_result_take_error (GSimpleAsyncResult *simple, * * Sets an error within the asynchronous result without a #GError. * Unless writing a binding, see g_simple_async_result_set_error(). + * + * Deprecated: 2.46: Use #GTask and g_task_return_error() instead. **/ void g_simple_async_result_set_error_va (GSimpleAsyncResult *simple, @@ -706,6 +740,8 @@ g_simple_async_result_set_error_va (GSimpleAsyncResult *simple, * @...: a list of variables to fill in @format. * * Sets an error within the asynchronous result without a #GError. + * + * Deprecated: 2.46: Use #GTask and g_task_return_new_error() instead. **/ void g_simple_async_result_set_error (GSimpleAsyncResult *simple, @@ -736,6 +772,8 @@ g_simple_async_result_set_error (GSimpleAsyncResult *simple, * * Calling this function takes a reference to @simple for as long as * is needed to complete the call. + * + * Deprecated: 2.46: Use #GTask instead. **/ void g_simple_async_result_complete (GSimpleAsyncResult *simple) @@ -788,6 +826,8 @@ complete_in_idle_cb (gpointer data) * * Calling this function takes a reference to @simple for as long as * is needed to complete the call. + * + * Deprecated: 2.46: Use #GTask instead. */ void g_simple_async_result_complete_in_idle (GSimpleAsyncResult *simple) @@ -883,6 +923,8 @@ run_in_thread (GIOSchedulerJob *job, * * Calling this function takes a reference to @simple for as long as * is needed to run the job and report its completion. + * + * Deprecated: 2.46: Use #GTask and g_task_run_in_thread() instead. */ void g_simple_async_result_run_in_thread (GSimpleAsyncResult *simple, @@ -928,6 +970,8 @@ g_simple_async_result_run_in_thread (GSimpleAsyncResult *simple, * Returns: #TRUE if all checks passed or #FALSE if any failed. * * Since: 2.20 + * + * Deprecated: 2.46: Use #GTask and g_task_is_valid() instead. **/ gboolean g_simple_async_result_is_valid (GAsyncResult *result, @@ -970,6 +1014,8 @@ g_simple_async_result_is_valid (GAsyncResult *result, * Reports an error in an asynchronous function in an idle function by * directly setting the contents of the #GAsyncResult with the given error * information. + * + * Deprecated: 2.46: Use g_task_report_error(). **/ void g_simple_async_report_error_in_idle (GObject *object, @@ -1008,6 +1054,8 @@ g_simple_async_report_error_in_idle (GObject *object, * Reports an error in an idle function. Similar to * g_simple_async_report_error_in_idle(), but takes a #GError rather * than building a new one. + * + * Deprecated: 2.46: Use g_task_report_error(). **/ void g_simple_async_report_gerror_in_idle (GObject *object, @@ -1040,6 +1088,8 @@ g_simple_async_report_gerror_in_idle (GObject *object, * ownership of @error, so the caller does not have to free it any more. * * Since: 2.28 + * + * Deprecated: 2.46: Use g_task_report_error(). **/ void g_simple_async_report_take_gerror_in_idle (GObject *object, @@ -1082,6 +1132,8 @@ g_simple_async_report_take_gerror_in_idle (GObject *object, * unrelated g_simple_async_result_set_handle_cancellation() function. * * Since: 2.32 + * + * Deprecated: 2.46: Use #GTask instead. **/ void g_simple_async_result_set_check_cancellable (GSimpleAsyncResult *simple, @@ -1094,3 +1146,5 @@ g_simple_async_result_set_check_cancellable (GSimpleAsyncResult *simple, if (check_cancellable) simple->check_cancellable = g_object_ref (check_cancellable); } + +G_GNUC_END_IGNORE_DEPRECATIONS diff --git a/gio/gsimpleasyncresult.h b/gio/gsimpleasyncresult.h index 94412f4..7774004 100644 --- a/gio/gsimpleasyncresult.h +++ b/gio/gsimpleasyncresult.h @@ -47,12 +47,12 @@ typedef struct _GSimpleAsyncResultClass GSimpleAsyncResultClass; GLIB_AVAILABLE_IN_ALL GType g_simple_async_result_get_type (void) G_GNUC_CONST; -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46_FOR(g_task_new) GSimpleAsyncResult *g_simple_async_result_new (GObject *source_object, GAsyncReadyCallback callback, gpointer user_data, gpointer source_tag); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46_FOR(g_task_new) GSimpleAsyncResult *g_simple_async_result_new_error (GObject *source_object, GAsyncReadyCallback callback, gpointer user_data, @@ -60,83 +60,83 @@ GSimpleAsyncResult *g_simple_async_result_new_error (GObject gint code, const char *format, ...) G_GNUC_PRINTF (6, 7); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46_FOR(g_task_new) GSimpleAsyncResult *g_simple_async_result_new_from_error (GObject *source_object, GAsyncReadyCallback callback, gpointer user_data, const GError *error); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46_FOR(g_task_new) GSimpleAsyncResult *g_simple_async_result_new_take_error (GObject *source_object, GAsyncReadyCallback callback, gpointer user_data, GError *error); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 void g_simple_async_result_set_op_res_gpointer (GSimpleAsyncResult *simple, gpointer op_res, GDestroyNotify destroy_op_res); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 gpointer g_simple_async_result_get_op_res_gpointer (GSimpleAsyncResult *simple); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 void g_simple_async_result_set_op_res_gssize (GSimpleAsyncResult *simple, gssize op_res); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 gssize g_simple_async_result_get_op_res_gssize (GSimpleAsyncResult *simple); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 void g_simple_async_result_set_op_res_gboolean (GSimpleAsyncResult *simple, gboolean op_res); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 gboolean g_simple_async_result_get_op_res_gboolean (GSimpleAsyncResult *simple); -GLIB_AVAILABLE_IN_2_32 +GLIB_AVAILABLE_IN_2_32 /* Also deprecated, but can't mark something both AVAILABLE and DEPRECATED */ void g_simple_async_result_set_check_cancellable (GSimpleAsyncResult *simple, GCancellable *check_cancellable); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 gpointer g_simple_async_result_get_source_tag (GSimpleAsyncResult *simple); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 void g_simple_async_result_set_handle_cancellation (GSimpleAsyncResult *simple, gboolean handle_cancellation); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 void g_simple_async_result_complete (GSimpleAsyncResult *simple); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 void g_simple_async_result_complete_in_idle (GSimpleAsyncResult *simple); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 void g_simple_async_result_run_in_thread (GSimpleAsyncResult *simple, GSimpleAsyncThreadFunc func, int io_priority, GCancellable *cancellable); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 void g_simple_async_result_set_from_error (GSimpleAsyncResult *simple, const GError *error); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 void g_simple_async_result_take_error (GSimpleAsyncResult *simple, GError *error); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 gboolean g_simple_async_result_propagate_error (GSimpleAsyncResult *simple, GError **dest); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 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 +GLIB_DEPRECATED_IN_2_46 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 +GLIB_DEPRECATED_IN_2_46 gboolean g_simple_async_result_is_valid (GAsyncResult *result, GObject *source, gpointer source_tag); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46_FOR(g_task_report_error) void g_simple_async_report_error_in_idle (GObject *object, GAsyncReadyCallback callback, gpointer user_data, @@ -144,12 +144,12 @@ void g_simple_async_report_error_in_idle (GObject *object, gint code, const char *format, ...) G_GNUC_PRINTF(6, 7); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46_FOR(g_task_report_error) void g_simple_async_report_gerror_in_idle (GObject *object, GAsyncReadyCallback callback, gpointer user_data, const GError *error); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46_FOR(g_task_report_error) void g_simple_async_report_take_gerror_in_idle (GObject *object, GAsyncReadyCallback callback, gpointer user_data, diff --git a/gio/gsocket.c b/gio/gsocket.c index 06c7235..e7f2101 100644 --- a/gio/gsocket.c +++ b/gio/gsocket.c @@ -3,6 +3,7 @@ * Copyright (C) 2008 Christian Kellner, Samuel Cormier-Iijima * Copyright © 2009 Codethink Limited * Copyright © 2009 Red Hat, Inc + * Copyright © 2015 Collabora, Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -21,6 +22,7 @@ * Samuel Cormier-Iijima * Ryan Lortie * Alexander Larsson + * Philip Withnall */ #include "config.h" @@ -51,6 +53,7 @@ #endif #include "gcancellable.h" +#include "gdatagrambased.h" #include "gioenumtypes.h" #include "ginetaddress.h" #include "ginitable.h" @@ -92,7 +95,8 @@ * %NULL. * * Sockets operate in two general modes, blocking or non-blocking. When - * in blocking mode all operations block until the requested operation + * in blocking mode all operations (which don’t take an explicit blocking + * parameter) block until the requested operation * is finished or there is an error. In non-blocking mode all calls that * would block return immediately with a %G_IO_ERROR_WOULD_BLOCK error. * To know when a call would successfully run you can call g_socket_condition_check(), @@ -134,6 +138,74 @@ static gboolean g_socket_initable_init (GInitable *initable, GCancellable *cancellable, GError **error); +static void g_socket_datagram_based_iface_init (GDatagramBasedInterface *iface); +static gint g_socket_datagram_based_receive_messages (GDatagramBased *self, + GInputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error); +static gint g_socket_datagram_based_send_messages (GDatagramBased *self, + GOutputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error); +static GSource *g_socket_datagram_based_create_source (GDatagramBased *self, + GIOCondition condition, + GCancellable *cancellable); +static GIOCondition g_socket_datagram_based_condition_check (GDatagramBased *datagram_based, + GIOCondition condition); +static gboolean g_socket_datagram_based_condition_wait (GDatagramBased *datagram_based, + GIOCondition condition, + gint64 timeout, + GCancellable *cancellable, + GError **error); + +static GSocketAddress * +cache_recv_address (GSocket *socket, struct sockaddr *native, int native_len); + +static gssize +g_socket_receive_message_with_timeout (GSocket *socket, + GSocketAddress **address, + GInputVector *vectors, + gint num_vectors, + GSocketControlMessage ***messages, + gint *num_messages, + gint *flags, + gint64 timeout, + GCancellable *cancellable, + GError **error); +static gint +g_socket_receive_messages_with_timeout (GSocket *socket, + GInputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error); +static gssize +g_socket_send_message_with_timeout (GSocket *socket, + GSocketAddress *address, + GOutputVector *vectors, + gint num_vectors, + GSocketControlMessage **messages, + gint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error); +static gint +g_socket_send_messages_with_timeout (GSocket *socket, + GOutputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error); + enum { PROP_0, @@ -170,7 +242,8 @@ struct _GSocketPrivate guint blocking : 1; guint keepalive : 1; guint closed : 1; - guint connected : 1; + guint connected_read : 1; + guint connected_write : 1; guint listening : 1; guint timed_out : 1; guint connect_pending : 1; @@ -195,7 +268,9 @@ G_DEFINE_TYPE_WITH_CODE (GSocket, g_socket, G_TYPE_OBJECT, G_ADD_PRIVATE (GSocket) g_networking_init (); G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, - g_socket_initable_iface_init)); + g_socket_initable_iface_init); + G_IMPLEMENT_INTERFACE (G_TYPE_DATAGRAM_BASED, + g_socket_datagram_based_iface_init)); static int get_socket_errno (void) @@ -235,6 +310,24 @@ socket_strerror (int err) #endif } +/* Wrapper around g_set_error() to avoid doing excess work */ +#define socket_set_error_lazy(err, errsv, fmt) \ + G_STMT_START { \ + GError **__err = (err); \ + int __errsv = (errsv); \ + \ + if (__err) \ + { \ + int __code = socket_io_error_from_errno (__errsv); \ + const char *__strerr = socket_strerror (__errsv); \ + \ + if (__code == G_IO_ERROR_WOULD_BLOCK) \ + g_set_error_literal (__err, G_IO_ERROR, __code, __strerr); \ + else \ + g_set_error (__err, G_IO_ERROR, __code, fmt, __strerr); \ + } \ + } G_STMT_END + #ifdef G_OS_WIN32 #define win32_unset_event_mask(_socket, _mask) _win32_unset_event_mask (_socket, _mask) static void @@ -318,24 +411,6 @@ g_socket_details_from_fd (GSocket *socket) if (!g_socket_get_option (socket, SOL_SOCKET, SO_TYPE, &value, NULL)) { errsv = get_socket_errno (); - - switch (errsv) - { -#ifdef ENOTSOCK - case ENOTSOCK: -#else -#ifdef WSAENOTSOCK - case WSAENOTSOCK: -#endif -#endif - case EBADF: - /* programmer error */ - g_error ("creating GSocket from fd %d: %s\n", - fd, socket_strerror (errsv)); - default: - break; - } - goto err; } @@ -427,7 +502,10 @@ g_socket_details_from_fd (GSocket *socket) { addrlen = sizeof address; if (getpeername (fd, (struct sockaddr *) &address, &addrlen) >= 0) - socket->priv->connected = TRUE; + { + socket->priv->connected_read = TRUE; + socket->priv->connected_write = TRUE; + } } if (g_socket_get_option (socket, SOL_SOCKET, SO_KEEPALIVE, &value, NULL)) @@ -959,6 +1037,16 @@ g_socket_initable_iface_init (GInitableIface *iface) } static void +g_socket_datagram_based_iface_init (GDatagramBasedInterface *iface) +{ + iface->receive_messages = g_socket_datagram_based_receive_messages; + iface->send_messages = g_socket_datagram_based_send_messages; + iface->create_source = g_socket_datagram_based_create_source; + iface->condition_check = g_socket_datagram_based_condition_check; + iface->condition_wait = g_socket_datagram_based_condition_wait; +} + +static void g_socket_init (GSocket *socket) { socket->priv = g_socket_get_instance_private (socket); @@ -1004,6 +1092,109 @@ g_socket_initable_init (GInitable *initable, return TRUE; } +static gboolean +check_datagram_based (GDatagramBased *self, + GError **error) +{ + switch (g_socket_get_socket_type (G_SOCKET (self))) + { + case G_SOCKET_TYPE_INVALID: + case G_SOCKET_TYPE_STREAM: + g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + _("Cannot use datagram operations on a non-datagram " + "socket.")); + return FALSE; + case G_SOCKET_TYPE_DATAGRAM: + case G_SOCKET_TYPE_SEQPACKET: + /* Fall through. */ + break; + } + + /* Due to us sharing #GSocketSource with the #GSocket implementation, it is + * pretty tricky to split out #GSocket:timeout so that it does not affect + * #GDatagramBased operations (but still affects #GSocket operations). It is + * not worth that effort — just disallow it and require the user to specify + * timeouts on a per-operation basis. */ + if (g_socket_get_timeout (G_SOCKET (self)) != 0) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + _("Cannot use datagram operations on a socket with a " + "timeout set.")); + return FALSE; + } + + return TRUE; +} + +static gint +g_socket_datagram_based_receive_messages (GDatagramBased *self, + GInputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error) +{ + if (!check_datagram_based (self, error)) + return FALSE; + + return g_socket_receive_messages_with_timeout (G_SOCKET (self), messages, + num_messages, flags, timeout, + cancellable, error); +} + +static gint +g_socket_datagram_based_send_messages (GDatagramBased *self, + GOutputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error) +{ + if (!check_datagram_based (self, error)) + return FALSE; + + return g_socket_send_messages_with_timeout (G_SOCKET (self), messages, + num_messages, flags, timeout, + cancellable, error); +} + +static GSource * +g_socket_datagram_based_create_source (GDatagramBased *self, + GIOCondition condition, + GCancellable *cancellable) +{ + if (!check_datagram_based (self, NULL)) + return NULL; + + return g_socket_create_source (G_SOCKET (self), condition, cancellable); +} + +static GIOCondition +g_socket_datagram_based_condition_check (GDatagramBased *datagram_based, + GIOCondition condition) +{ + if (!check_datagram_based (datagram_based, NULL)) + return G_IO_ERR; + + return g_socket_condition_check (G_SOCKET (datagram_based), condition); +} + +static gboolean +g_socket_datagram_based_condition_wait (GDatagramBased *datagram_based, + GIOCondition condition, + gint64 timeout, + GCancellable *cancellable, + GError **error) +{ + if (!check_datagram_based (datagram_based, error)) + return FALSE; + + return g_socket_condition_timed_wait (G_SOCKET (datagram_based), condition, + timeout, cancellable, error); +} + /** * g_socket_new: * @family: the socket family to use, e.g. %G_SOCKET_FAMILY_IPV4. @@ -1057,6 +1248,12 @@ g_socket_new (GSocketFamily family, * will be set to non-blocking mode, independent on the blocking * mode of the #GSocket. * + * On success, the returned #GSocket takes ownership of @fd. On failure, the + * caller must close @fd themselves. + * + * Since GLib 2.46, it is no longer a fatal error to call this on a non-socket + * descriptor. Instead, a GError will be set with code %G_IO_ERROR_FAILED + * * Returns: a #GSocket or %NULL on error. * Free the returned object with g_object_unref(). * @@ -1078,7 +1275,8 @@ g_socket_new_from_fd (gint fd, * @blocking: Whether to use blocking I/O or not. * * Sets the blocking mode of the socket. In blocking mode - * all operations block until they succeed or there is an error. In + * all operations (which don’t take an explicit blocking parameter) block until + * they succeed or there is an error. In * non-blocking mode all functions return results immediately or * with a %G_IO_ERROR_WOULD_BLOCK error. * @@ -1784,6 +1982,11 @@ g_socket_get_remote_address (GSocket *socket, * Check whether the socket is connected. This is only useful for * connection-oriented sockets. * + * If using g_socket_shutdown(), this function will return %TRUE until the + * socket has been shut down for reading and writing. If you do a non-blocking + * connect, this function will not return %TRUE until after you call + * g_socket_check_connect_result(). + * * Returns: %TRUE if socket is connected, %FALSE otherwise. * * Since: 2.22 @@ -1793,7 +1996,7 @@ g_socket_is_connected (GSocket *socket) { g_return_val_if_fail (G_IS_SOCKET (socket), FALSE); - return socket->priv->connected; + return (socket->priv->connected_read || socket->priv->connected_write); } /** @@ -2264,9 +2467,7 @@ g_socket_accept (GSocket *socket, } } - g_set_error (error, G_IO_ERROR, - socket_io_error_from_errno (errsv), - _("Error accepting connection: %s"), socket_strerror (errsv)); + socket_set_error_lazy (error, errsv, _("Error accepting connection: %s")); return NULL; } break; @@ -2405,7 +2606,8 @@ g_socket_connect (GSocket *socket, win32_unset_event_mask (socket, FD_CONNECT); - socket->priv->connected = TRUE; + socket->priv->connected_read = TRUE; + socket->priv->connected_write = TRUE; return TRUE; } @@ -2455,7 +2657,9 @@ g_socket_check_connect_result (GSocket *socket, return FALSE; } - socket->priv->connected = TRUE; + socket->priv->connected_read = TRUE; + socket->priv->connected_write = TRUE; + return TRUE; } @@ -2463,7 +2667,7 @@ g_socket_check_connect_result (GSocket *socket, * g_socket_get_available_bytes: * @socket: a #GSocket * - * Get the amount of data pending in the OS input buffer. + * Get the amount of data pending in the OS input buffer, without blocking. * * If @socket is a UDP or SCTP socket, this will return the size of * just the next packet, even if additional packets are buffered after @@ -2520,6 +2724,107 @@ g_socket_get_available_bytes (GSocket *socket) return avail; } +/* Block on a timed wait for @condition until (@start_time + @timeout). + * Return %G_IO_ERROR_TIMED_OUT if the timeout is reached; otherwise %TRUE. + */ +static gboolean +block_on_timeout (GSocket *socket, + GIOCondition condition, + gint64 timeout, + gint64 start_time, + GCancellable *cancellable, + GError **error) +{ + gint64 wait_timeout = -1; + + g_return_val_if_fail (timeout != 0, TRUE); + + /* check if we've timed out or how much time to wait at most */ + if (timeout >= 0) + { + gint64 elapsed = g_get_monotonic_time () - start_time; + + if (elapsed >= timeout) + { + g_set_error_literal (error, + G_IO_ERROR, G_IO_ERROR_TIMED_OUT, + _("Socket I/O timed out")); + return FALSE; + } + + wait_timeout = timeout - elapsed; + } + + return g_socket_condition_timed_wait (socket, condition, wait_timeout, + cancellable, error); +} + +static gssize +g_socket_receive_with_timeout (GSocket *socket, + guint8 *buffer, + gsize size, + gint64 timeout, + GCancellable *cancellable, + GError **error) +{ + gssize ret; + gint64 start_time; + + g_return_val_if_fail (G_IS_SOCKET (socket) && buffer != NULL, -1); + + start_time = g_get_monotonic_time (); + + if (!check_socket (socket, error)) + return -1; + + if (!check_timeout (socket, error)) + return -1; + + if (g_cancellable_set_error_if_cancelled (cancellable, error)) + return -1; + + while (1) + { + if ((ret = recv (socket->priv->fd, buffer, size, 0)) < 0) + { + int errsv = get_socket_errno (); + + if (errsv == EINTR) + continue; + +#ifdef WSAEWOULDBLOCK + if (errsv == WSAEWOULDBLOCK) +#else + if (errsv == EWOULDBLOCK || + errsv == EAGAIN) +#endif + { + win32_unset_event_mask (socket, FD_READ); + + if (timeout != 0) + { + if (!block_on_timeout (socket, G_IO_IN, timeout, start_time, + cancellable, error)) + return -1; + + continue; + } + } + + win32_unset_event_mask (socket, FD_READ); + + socket_set_error_lazy (error, errsv, _("Error receiving data: %s")); + return -1; + } + + win32_unset_event_mask (socket, FD_READ); + + break; + } + + return ret; +} + /** * g_socket_receive: * @socket: a #GSocket @@ -2565,9 +2870,9 @@ g_socket_receive (GSocket *socket, GCancellable *cancellable, GError **error) { - return g_socket_receive_with_blocking (socket, buffer, size, - socket->priv->blocking, - cancellable, error); + return g_socket_receive_with_timeout (socket, (guint8 *) buffer, size, + socket->priv->blocking ? -1 : 0, + cancellable, error); } /** @@ -2597,61 +2902,8 @@ g_socket_receive_with_blocking (GSocket *socket, GCancellable *cancellable, GError **error) { - gssize ret; - - g_return_val_if_fail (G_IS_SOCKET (socket) && buffer != NULL, -1); - - if (!check_socket (socket, error)) - return -1; - - if (!check_timeout (socket, error)) - return -1; - - if (g_cancellable_set_error_if_cancelled (cancellable, error)) - return -1; - - while (1) - { - if ((ret = recv (socket->priv->fd, buffer, size, 0)) < 0) - { - int errsv = get_socket_errno (); - - if (errsv == EINTR) - continue; - -#ifdef WSAEWOULDBLOCK - if (errsv == WSAEWOULDBLOCK) -#else - if (errsv == EWOULDBLOCK || - errsv == EAGAIN) -#endif - { - win32_unset_event_mask (socket, FD_READ); - - if (blocking) - { - if (!g_socket_condition_wait (socket, - G_IO_IN, cancellable, error)) - return -1; - - continue; - } - } - - win32_unset_event_mask (socket, FD_READ); - - g_set_error (error, G_IO_ERROR, - socket_io_error_from_errno (errsv), - _("Error receiving data: %s"), socket_strerror (errsv)); - return -1; - } - - win32_unset_event_mask (socket, FD_READ); - - break; - } - - return ret; + return g_socket_receive_with_timeout (socket, (guint8 *) buffer, size, + blocking ? -1 : 0, cancellable, error); } /** @@ -2706,6 +2958,67 @@ g_socket_receive_from (GSocket *socket, #define G_SOCKET_DEFAULT_SEND_FLAGS 0 #endif +static gssize +g_socket_send_with_timeout (GSocket *socket, + const guint8 *buffer, + gsize size, + gint64 timeout, + GCancellable *cancellable, + GError **error) +{ + gssize ret; + gint64 start_time; + + g_return_val_if_fail (G_IS_SOCKET (socket) && buffer != NULL, -1); + + start_time = g_get_monotonic_time (); + + if (!check_socket (socket, error)) + return -1; + + if (!check_timeout (socket, error)) + return -1; + + if (g_cancellable_set_error_if_cancelled (cancellable, error)) + return -1; + + while (1) + { + if ((ret = send (socket->priv->fd, buffer, size, G_SOCKET_DEFAULT_SEND_FLAGS)) < 0) + { + int errsv = get_socket_errno (); + + if (errsv == EINTR) + continue; + +#ifdef WSAEWOULDBLOCK + if (errsv == WSAEWOULDBLOCK) +#else + if (errsv == EWOULDBLOCK || + errsv == EAGAIN) +#endif + { + win32_unset_event_mask (socket, FD_WRITE); + + if (timeout != 0) + { + if (!block_on_timeout (socket, G_IO_OUT, timeout, start_time, + cancellable, error)) + return -1; + + continue; + } + } + + socket_set_error_lazy (error, errsv, _("Error sending data: %s")); + return -1; + } + break; + } + + return ret; +} + /** * g_socket_send: * @socket: a #GSocket @@ -2774,57 +3087,9 @@ g_socket_send_with_blocking (GSocket *socket, GCancellable *cancellable, GError **error) { - gssize ret; - - g_return_val_if_fail (G_IS_SOCKET (socket) && buffer != NULL, -1); - - if (!check_socket (socket, error)) - return -1; - - if (!check_timeout (socket, error)) - return -1; - - if (g_cancellable_set_error_if_cancelled (cancellable, error)) - return -1; - - while (1) - { - if ((ret = send (socket->priv->fd, buffer, size, G_SOCKET_DEFAULT_SEND_FLAGS)) < 0) - { - int errsv = get_socket_errno (); - - if (errsv == EINTR) - continue; - -#ifdef WSAEWOULDBLOCK - if (errsv == WSAEWOULDBLOCK) -#else - if (errsv == EWOULDBLOCK || - errsv == EAGAIN) -#endif - { - win32_unset_event_mask (socket, FD_WRITE); - - if (blocking) - { - if (!g_socket_condition_wait (socket, - G_IO_OUT, cancellable, error)) - return -1; - - continue; - } - } - - g_set_error (error, G_IO_ERROR, - socket_io_error_from_errno (errsv), - _("Error sending data: %s"), socket_strerror (errsv)); - return -1; - } - break; - } - - return ret; -} + return g_socket_send_with_timeout (socket, (const guint8 *) buffer, size, + blocking ? -1 : 0, cancellable, error); +} /** * g_socket_send_to: @@ -2876,7 +3141,7 @@ g_socket_send_to (GSocket *socket, * @shutdown_write: whether to shut down the write side * @error: #GError for error reporting, or %NULL to ignore. * - * Shut down part of a full-duplex connection. + * Shut down part or all of a full-duplex connection. * * If @shutdown_read is %TRUE then the receiving side of the connection * is shut down, and further reading is disallowed. @@ -2886,9 +3151,10 @@ g_socket_send_to (GSocket *socket, * * It is allowed for both @shutdown_read and @shutdown_write to be %TRUE. * - * One example where this is used is graceful disconnect for TCP connections - * where you close the sending side, then wait for the other side to close - * the connection, thus ensuring that the other side saw all sent data. + * One example where it is useful to shut down only one side of a connection is + * graceful disconnect for TCP connections where you close the sending side, + * then wait for the other side to close the connection, thus ensuring that the + * other side saw all sent data. * * Returns: %TRUE on success, %FALSE on error * @@ -2935,8 +3201,10 @@ g_socket_shutdown (GSocket *socket, return FALSE; } - if (shutdown_read && shutdown_write) - socket->priv->connected = FALSE; + if (shutdown_read) + socket->priv->connected_read = FALSE; + if (shutdown_write) + socket->priv->connected_write = FALSE; return TRUE; } @@ -3017,7 +3285,8 @@ g_socket_close (GSocket *socket, break; } - socket->priv->connected = FALSE; + socket->priv->connected_read = FALSE; + socket->priv->connected_write = FALSE; socket->priv->closed = TRUE; if (socket->priv->remote_address) { @@ -3688,6 +3957,230 @@ g_socket_condition_timed_wait (GSocket *socket, #endif } +#ifndef G_OS_WIN32 + +/* Unfortunately these have to be macros rather than inline functions due to + * using alloca(). */ +#define output_message_to_msghdr(message, prev_message, msg, prev_msg, error) \ +G_STMT_START { \ + const GOutputMessage *_message = (message); \ + const GOutputMessage *_prev_message = (prev_message); \ + struct msghdr *_msg = (msg); \ + const struct msghdr *_prev_msg = (prev_msg); \ + GError **_error = (error); \ + \ + _msg->msg_flags = 0; \ + \ + /* name */ \ + if (_prev_message != NULL && _prev_message->address == _message->address) \ + { \ + _msg->msg_name = _prev_msg->msg_name; \ + _msg->msg_namelen = _prev_msg->msg_namelen; \ + } \ + else if (_message->address != NULL) \ + { \ + _msg->msg_namelen = g_socket_address_get_native_size (_message->address); \ + _msg->msg_name = g_alloca (_msg->msg_namelen); \ + if (!g_socket_address_to_native (_message->address, _msg->msg_name, \ + _msg->msg_namelen, _error)) \ + break; \ + } \ + else \ + { \ + _msg->msg_name = NULL; \ + _msg->msg_namelen = 0; \ + } \ + \ + /* iov */ \ + { \ + /* this entire expression will be evaluated at compile time */ \ + if (sizeof *_msg->msg_iov == sizeof *_message->vectors && \ + sizeof _msg->msg_iov->iov_base == sizeof _message->vectors->buffer && \ + G_STRUCT_OFFSET (struct iovec, iov_base) == \ + G_STRUCT_OFFSET (GOutputVector, buffer) && \ + sizeof _msg->msg_iov->iov_len == sizeof _message->vectors->size && \ + G_STRUCT_OFFSET (struct iovec, iov_len) == \ + G_STRUCT_OFFSET (GOutputVector, size)) \ + /* ABI is compatible */ \ + { \ + _msg->msg_iov = (struct iovec *) _message->vectors; \ + _msg->msg_iovlen = _message->num_vectors; \ + } \ + else \ + /* ABI is incompatible */ \ + { \ + gint i; \ + \ + _msg->msg_iov = g_newa (struct iovec, _message->num_vectors); \ + for (i = 0; i < _message->num_vectors; i++) \ + { \ + _msg->msg_iov[i].iov_base = (void *) _message->vectors[i].buffer; \ + _msg->msg_iov[i].iov_len = _message->vectors[i].size; \ + } \ + _msg->msg_iovlen = _message->num_vectors; \ + } \ + } \ + \ + /* control */ \ + { \ + struct cmsghdr *cmsg; \ + gint i; \ + \ + _msg->msg_controllen = 0; \ + for (i = 0; i < _message->num_control_messages; i++) \ + _msg->msg_controllen += CMSG_SPACE (g_socket_control_message_get_size (_message->control_messages[i])); \ + \ + if (_msg->msg_controllen == 0) \ + _msg->msg_control = NULL; \ + else \ + { \ + _msg->msg_control = g_alloca (_msg->msg_controllen); \ + memset (_msg->msg_control, '\0', _msg->msg_controllen); \ + } \ + \ + cmsg = CMSG_FIRSTHDR (_msg); \ + for (i = 0; i < _message->num_control_messages; i++) \ + { \ + cmsg->cmsg_level = g_socket_control_message_get_level (_message->control_messages[i]); \ + cmsg->cmsg_type = g_socket_control_message_get_msg_type (_message->control_messages[i]); \ + cmsg->cmsg_len = CMSG_LEN (g_socket_control_message_get_size (_message->control_messages[i])); \ + g_socket_control_message_serialize (_message->control_messages[i], \ + CMSG_DATA (cmsg)); \ + cmsg = CMSG_NXTHDR (_msg, cmsg); \ + } \ + g_assert (cmsg == NULL); \ + } \ +} G_STMT_END + +#define input_message_to_msghdr(message, msg) \ +G_STMT_START { \ + const GInputMessage *_message = (message); \ + struct msghdr *_msg = (msg); \ + \ + /* name */ \ + if (_message->address) \ + { \ + _msg->msg_namelen = sizeof (struct sockaddr_storage); \ + _msg->msg_name = g_alloca (_msg->msg_namelen); \ + } \ + else \ + { \ + _msg->msg_name = NULL; \ + _msg->msg_namelen = 0; \ + } \ + \ + /* iov */ \ + /* this entire expression will be evaluated at compile time */ \ + if (sizeof *_msg->msg_iov == sizeof *_message->vectors && \ + sizeof _msg->msg_iov->iov_base == sizeof _message->vectors->buffer && \ + G_STRUCT_OFFSET (struct iovec, iov_base) == \ + G_STRUCT_OFFSET (GInputVector, buffer) && \ + sizeof _msg->msg_iov->iov_len == sizeof _message->vectors->size && \ + G_STRUCT_OFFSET (struct iovec, iov_len) == \ + G_STRUCT_OFFSET (GInputVector, size)) \ + /* ABI is compatible */ \ + { \ + _msg->msg_iov = (struct iovec *) _message->vectors; \ + _msg->msg_iovlen = _message->num_vectors; \ + } \ + else \ + /* ABI is incompatible */ \ + { \ + guint i; \ + \ + _msg->msg_iov = g_newa (struct iovec, _message->num_vectors); \ + for (i = 0; i < _message->num_vectors; i++) \ + { \ + _msg->msg_iov[i].iov_base = _message->vectors[i].buffer; \ + _msg->msg_iov[i].iov_len = _message->vectors[i].size; \ + } \ + _msg->msg_iovlen = _message->num_vectors; \ + } \ + \ + /* control */ \ + _msg->msg_controllen = 2048; \ + _msg->msg_control = g_alloca (_msg->msg_controllen); \ + \ + /* flags */ \ + _msg->msg_flags = _message->flags; \ +} G_STMT_END + +static void +input_message_from_msghdr (const struct msghdr *msg, + GInputMessage *message, + GSocket *socket) +{ + /* decode address */ + if (message->address != NULL) + { + *message->address = cache_recv_address (socket, msg->msg_name, + msg->msg_namelen); + } + + /* decode control messages */ + { + GPtrArray *my_messages = NULL; + struct cmsghdr *cmsg; + + if (msg->msg_controllen >= sizeof (struct cmsghdr)) + { + for (cmsg = CMSG_FIRSTHDR (msg); + cmsg != NULL; + cmsg = CMSG_NXTHDR ((struct msghdr *) msg, cmsg)) + { + GSocketControlMessage *control_message; + + control_message = g_socket_control_message_deserialize (cmsg->cmsg_level, + cmsg->cmsg_type, + cmsg->cmsg_len - ((char *)CMSG_DATA (cmsg) - (char *)cmsg), + CMSG_DATA (cmsg)); + if (control_message == NULL) + /* We've already spewed about the problem in the + deserialization code, so just continue */ + continue; + + if (message->control_messages == NULL) + { + /* we have to do it this way if the user ignores the + * messages so that we will close any received fds. + */ + g_object_unref (control_message); + } + else + { + if (my_messages == NULL) + my_messages = g_ptr_array_new (); + g_ptr_array_add (my_messages, control_message); + } + } + } + + if (message->num_control_messages) + *message->num_control_messages = my_messages != NULL ? my_messages->len : 0; + + if (message->control_messages) + { + if (my_messages == NULL) + { + *message->control_messages = NULL; + } + else + { + g_ptr_array_add (my_messages, NULL); + *message->control_messages = (GSocketControlMessage **) g_ptr_array_free (my_messages, FALSE); + } + } + else + { + g_assert (my_messages == NULL); + } + } + + /* capture the flags */ + message->flags = msg->msg_flags; +} +#endif + /** * g_socket_send_message: * @socket: a #GSocket @@ -3701,8 +4194,8 @@ g_socket_condition_timed_wait (GSocket *socket, * @cancellable: (allow-none): a %GCancellable or %NULL * @error: #GError for error reporting, or %NULL to ignore. * - * Send data to @address on @socket. This is the most complicated and - * fully-featured version of this call. For easier use, see + * Send data to @address on @socket. For sending multiple messages see + * g_socket_send_messages(); for easier use, see * g_socket_send() and g_socket_send_to(). * * If @address is %NULL then the message is sent to the default receiver @@ -3755,8 +4248,28 @@ g_socket_send_message (GSocket *socket, GCancellable *cancellable, GError **error) { + return g_socket_send_message_with_timeout (socket, address, + vectors, num_vectors, + messages, num_messages, flags, + socket->priv->blocking ? -1 : 0, + cancellable, error); +} + +static gssize +g_socket_send_message_with_timeout (GSocket *socket, + GSocketAddress *address, + GOutputVector *vectors, + gint num_vectors, + GSocketControlMessage **messages, + gint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error) +{ GOutputVector one_vector; char zero; + gint64 start_time; g_return_val_if_fail (G_IS_SOCKET (socket), -1); g_return_val_if_fail (address == NULL || G_IS_SOCKET_ADDRESS (address), -1); @@ -3765,6 +4278,8 @@ g_socket_send_message (GSocket *socket, g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), -1); g_return_val_if_fail (error == NULL || *error == NULL, -1); + start_time = g_get_monotonic_time (); + if (!check_socket (socket, error)) return -1; @@ -3802,85 +4317,26 @@ g_socket_send_message (GSocket *socket, #ifndef G_OS_WIN32 { + GOutputMessage output_message; struct msghdr msg; gssize result; + GError *child_error = NULL; - msg.msg_flags = 0; + output_message.address = address; + output_message.vectors = vectors; + output_message.num_vectors = num_vectors; + output_message.bytes_sent = 0; + output_message.control_messages = messages; + output_message.num_control_messages = num_messages; - /* name */ - if (address) - { - msg.msg_namelen = g_socket_address_get_native_size (address); - msg.msg_name = g_alloca (msg.msg_namelen); - if (!g_socket_address_to_native (address, msg.msg_name, msg.msg_namelen, error)) - return -1; - } - else + output_message_to_msghdr (&output_message, NULL, &msg, NULL, &child_error); + + if (child_error != NULL) { - msg.msg_name = NULL; - msg.msg_namelen = 0; + g_propagate_error (error, child_error); + return -1; } - /* iov */ - { - /* this entire expression will be evaluated at compile time */ - if (sizeof *msg.msg_iov == sizeof *vectors && - sizeof msg.msg_iov->iov_base == sizeof vectors->buffer && - G_STRUCT_OFFSET (struct iovec, iov_base) == - G_STRUCT_OFFSET (GOutputVector, buffer) && - sizeof msg.msg_iov->iov_len == sizeof vectors->size && - G_STRUCT_OFFSET (struct iovec, iov_len) == - G_STRUCT_OFFSET (GOutputVector, size)) - /* ABI is compatible */ - { - msg.msg_iov = (struct iovec *) vectors; - msg.msg_iovlen = num_vectors; - } - else - /* ABI is incompatible */ - { - gint i; - - msg.msg_iov = g_newa (struct iovec, num_vectors); - for (i = 0; i < num_vectors; i++) - { - msg.msg_iov[i].iov_base = (void *) vectors[i].buffer; - msg.msg_iov[i].iov_len = vectors[i].size; - } - msg.msg_iovlen = num_vectors; - } - } - - /* control */ - { - struct cmsghdr *cmsg; - gint i; - - msg.msg_controllen = 0; - for (i = 0; i < num_messages; i++) - msg.msg_controllen += CMSG_SPACE (g_socket_control_message_get_size (messages[i])); - - if (msg.msg_controllen == 0) - msg.msg_control = NULL; - else - { - msg.msg_control = g_alloca (msg.msg_controllen); - memset (msg.msg_control, '\0', msg.msg_controllen); - } - - cmsg = CMSG_FIRSTHDR (&msg); - for (i = 0; i < num_messages; i++) - { - cmsg->cmsg_level = g_socket_control_message_get_level (messages[i]); - cmsg->cmsg_type = g_socket_control_message_get_msg_type (messages[i]); - cmsg->cmsg_len = CMSG_LEN (g_socket_control_message_get_size (messages[i])); - g_socket_control_message_serialize (messages[i], - CMSG_DATA (cmsg)); - cmsg = CMSG_NXTHDR (&msg, cmsg); - } - g_assert (cmsg == NULL); - } - while (1) { result = sendmsg (socket->priv->fd, &msg, flags | G_SOCKET_DEFAULT_SEND_FLAGS); @@ -3891,21 +4347,18 @@ g_socket_send_message (GSocket *socket, if (errsv == EINTR) continue; - if (socket->priv->blocking && + if (timeout != 0 && (errsv == EWOULDBLOCK || errsv == EAGAIN)) { - if (!g_socket_condition_wait (socket, - G_IO_OUT, cancellable, error)) + if (!block_on_timeout (socket, G_IO_OUT, timeout, start_time, + cancellable, error)) return -1; continue; } - g_set_error (error, G_IO_ERROR, - socket_io_error_from_errno (errsv), - _("Error sending message: %s"), socket_strerror (errsv)); - + socket_set_error_lazy (error, errsv, _("Error sending message: %s")); return -1; } break; @@ -3975,20 +4428,17 @@ g_socket_send_message (GSocket *socket, { win32_unset_event_mask (socket, FD_WRITE); - if (socket->priv->blocking) + if (timeout != 0) { - if (!g_socket_condition_wait (socket, - G_IO_OUT, cancellable, error)) + if (!block_on_timeout (socket, G_IO_OUT, timeout, + start_time, cancellable, error)) return -1; continue; } } - g_set_error (error, G_IO_ERROR, - socket_io_error_from_errno (errsv), - _("Error sending message: %s"), socket_strerror (errsv)); - + socket_set_error_lazy (error, errsv, _("Error sending message: %s")); return -1; } break; @@ -4039,7 +4489,9 @@ g_socket_send_message (GSocket *socket, * notified of a %G_IO_OUT condition. (On Windows in particular, this is * very common due to the way the underlying APIs work.) * - * On error -1 is returned and @error is set accordingly. + * On error -1 is returned and @error is set accordingly. An error will only + * be returned if zero messages could be sent; otherwise the number of messages + * successfully sent before the error will be returned. * * Returns: number of messages sent, or -1 on error. Note that the number of * messages sent may be smaller than @num_messages if the socket is @@ -4056,11 +4508,30 @@ g_socket_send_messages (GSocket *socket, GCancellable *cancellable, GError **error) { + return g_socket_send_messages_with_timeout (socket, messages, num_messages, + flags, + socket->priv->blocking ? -1 : 0, + cancellable, error); +} + +static gint +g_socket_send_messages_with_timeout (GSocket *socket, + GOutputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error) +{ + gint64 start_time; + g_return_val_if_fail (G_IS_SOCKET (socket), -1); g_return_val_if_fail (num_messages == 0 || messages != NULL, -1); g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), -1); g_return_val_if_fail (error == NULL || *error == NULL, -1); + start_time = g_get_monotonic_time (); + if (!check_socket (socket, error)) return -1; @@ -4076,7 +4547,7 @@ g_socket_send_messages (GSocket *socket, #if !defined (G_OS_WIN32) && defined (HAVE_SENDMMSG) { struct mmsghdr *msgvec; - gint i, num_sent, result, max_sent; + gint i, num_sent; #ifdef UIO_MAXIOV #define MAX_NUM_MESSAGES UIO_MAXIOV @@ -4093,103 +4564,25 @@ g_socket_send_messages (GSocket *socket, { GOutputMessage *msg = &messages[i]; struct msghdr *msg_hdr = &msgvec[i].msg_hdr; + GError *child_error = NULL; msgvec[i].msg_len = 0; - msg_hdr->msg_flags = 0; + output_message_to_msghdr (msg, (i > 0) ? &messages[i - 1] : NULL, + msg_hdr, (i > 0) ? &msgvec[i - 1].msg_hdr : NULL, + &child_error); - /* name */ - if (i > 0 && msg->address == messages[i-1].address) - { - msg_hdr->msg_name = msgvec[i-1].msg_hdr.msg_name; - msg_hdr->msg_namelen = msgvec[i-1].msg_hdr.msg_namelen; - } - else if (msg->address) - { - msg_hdr->msg_namelen = g_socket_address_get_native_size (msg->address); - msg_hdr->msg_name = g_alloca (msg_hdr->msg_namelen); - if (!g_socket_address_to_native (msg->address, msg_hdr->msg_name, msg_hdr->msg_namelen, error)) - return -1; - } - else + if (child_error != NULL) { - msg_hdr->msg_name = NULL; - msg_hdr->msg_namelen = 0; + g_propagate_error (error, child_error); + return -1; } - - /* iov */ - { - /* this entire expression will be evaluated at compile time */ - if (sizeof (struct iovec) == sizeof (GOutputVector) && - sizeof msg_hdr->msg_iov->iov_base == sizeof msg->vectors->buffer && - G_STRUCT_OFFSET (struct iovec, iov_base) == - G_STRUCT_OFFSET (GOutputVector, buffer) && - sizeof msg_hdr->msg_iov->iov_len == sizeof msg->vectors->size && - G_STRUCT_OFFSET (struct iovec, iov_len) == - G_STRUCT_OFFSET (GOutputVector, size)) - /* ABI is compatible */ - { - msg_hdr->msg_iov = (struct iovec *) msg->vectors; - msg_hdr->msg_iovlen = msg->num_vectors; - } - else - /* ABI is incompatible */ - { - gint j; - - msg_hdr->msg_iov = g_newa (struct iovec, msg->num_vectors); - for (j = 0; j < msg->num_vectors; j++) - { - msg_hdr->msg_iov[j].iov_base = (void *) msg->vectors[j].buffer; - msg_hdr->msg_iov[j].iov_len = msg->vectors[j].size; - } - msg_hdr->msg_iovlen = msg->num_vectors; - } - } - - /* control */ - { - struct cmsghdr *cmsg; - gint j; - - msg_hdr->msg_controllen = 0; - for (j = 0; j < msg->num_control_messages; j++) - msg_hdr->msg_controllen += CMSG_SPACE (g_socket_control_message_get_size (msg->control_messages[j])); - - if (msg_hdr->msg_controllen == 0) - msg_hdr->msg_control = NULL; - else - { - msg_hdr->msg_control = g_alloca (msg_hdr->msg_controllen); - memset (msg_hdr->msg_control, '\0', msg_hdr->msg_controllen); - } - - cmsg = CMSG_FIRSTHDR (msg_hdr); - for (j = 0; j < msg->num_control_messages; j++) - { - GSocketControlMessage *cm = msg->control_messages[j]; - - cmsg->cmsg_level = g_socket_control_message_get_level (cm); - cmsg->cmsg_type = g_socket_control_message_get_msg_type (cm); - cmsg->cmsg_len = CMSG_LEN (g_socket_control_message_get_size (cm)); - g_socket_control_message_serialize (cm, CMSG_DATA (cmsg)); - cmsg = CMSG_NXTHDR (msg_hdr, cmsg); - } - g_assert (cmsg == NULL); - } } - num_sent = result = 0; - max_sent = num_messages; - while (num_sent < num_messages) + for (num_sent = 0; num_sent < num_messages;) { gint ret; - if (socket->priv->blocking && - !g_socket_condition_wait (socket, - G_IO_OUT, cancellable, error)) - return -1; - ret = sendmmsg (socket->priv->fd, msgvec + num_sent, num_messages - num_sent, flags | G_SOCKET_DEFAULT_SEND_FLAGS); @@ -4200,61 +4593,77 @@ g_socket_send_messages (GSocket *socket, if (errsv == EINTR) continue; - if (socket->priv->blocking && - (errsv == EWOULDBLOCK || - errsv == EAGAIN)) - continue; - - if (num_sent > 0 && + if (timeout != 0 && (errsv == EWOULDBLOCK || errsv == EAGAIN)) { - max_sent = num_sent; - break; + if (!block_on_timeout (socket, G_IO_OUT, timeout, start_time, + cancellable, error)) + { + if (num_sent > 0) + { + g_clear_error (error); + break; + } + + return -1; + } + + continue; } - g_set_error (error, G_IO_ERROR, - socket_io_error_from_errno (errsv), - _("Error sending message: %s"), socket_strerror (errsv)); + /* If any messages were successfully sent, do not error. */ + if (num_sent > 0) + break; - /* we have to iterate over all messages below now, because we don't - * know where between num_sent and num_messages the error occured */ - max_sent = num_messages; + socket_set_error_lazy (error, errsv, _("Error sending message: %s")); - result = -1; - break; + return -1; } num_sent += ret; - result = num_sent; } - for (i = 0; i < max_sent; ++i) + for (i = 0; i < num_sent; ++i) messages[i].bytes_sent = msgvec[i].msg_len; - return result; + return num_sent; } #else { gssize result; gint i; + gint64 wait_timeout; + + wait_timeout = timeout; for (i = 0; i < num_messages; ++i) { GOutputMessage *msg = &messages[i]; GError *msg_error = NULL; - result = g_socket_send_message (socket, msg->address, - msg->vectors, msg->num_vectors, - msg->control_messages, - msg->num_control_messages, - flags, cancellable, &msg_error); + result = g_socket_send_message_with_timeout (socket, msg->address, + msg->vectors, + msg->num_vectors, + msg->control_messages, + msg->num_control_messages, + flags, wait_timeout, + cancellable, &msg_error); + + /* check if we've timed out or how much time to wait at most */ + if (timeout > 0) + { + gint64 elapsed = g_get_monotonic_time () - start_time; + wait_timeout = MAX (timeout - elapsed, 1); + } if (result < 0) { /* if we couldn't send all messages, just return how many we did * manage to send, provided we managed to send at least one */ - if (msg_error->code == G_IO_ERROR_WOULD_BLOCK && i > 0) + if (i > 0 && + (g_error_matches (msg_error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK) || + g_error_matches (msg_error, G_IO_ERROR, G_IO_ERROR_TIMED_OUT))) { g_error_free (msg_error); return i; @@ -4328,100 +4737,26 @@ cache_recv_address (GSocket *socket, struct sockaddr *native, int native_len) return saddr; } -/** - * g_socket_receive_message: - * @socket: a #GSocket - * @address: (out) (allow-none): a pointer to a #GSocketAddress - * pointer, or %NULL - * @vectors: (array length=num_vectors): an array of #GInputVector structs - * @num_vectors: the number of elements in @vectors, or -1 - * @messages: (array length=num_messages) (allow-none): a pointer which - * may be filled with an array of #GSocketControlMessages, or %NULL - * @num_messages: a pointer which will be filled with the number of - * elements in @messages, or %NULL - * @flags: a pointer to an int containing #GSocketMsgFlags flags - * @cancellable: (allow-none): a %GCancellable or %NULL - * @error: a #GError pointer, or %NULL - * - * Receive data from a socket. This is the most complicated and - * fully-featured version of this call. For easier use, see - * g_socket_receive() and g_socket_receive_from(). - * - * If @address is non-%NULL then @address will be set equal to the - * source address of the received packet. - * @address is owned by the caller. - * - * @vector must point to an array of #GInputVector structs and - * @num_vectors must be the length of this array. These structs - * describe the buffers that received data will be scattered into. - * If @num_vectors is -1, then @vectors is assumed to be terminated - * by a #GInputVector with a %NULL buffer pointer. - * - * As a special case, if @num_vectors is 0 (in which case, @vectors - * may of course be %NULL), then a single byte is received and - * discarded. This is to facilitate the common practice of sending a - * single '\0' byte for the purposes of transferring ancillary data. - * - * @messages, if non-%NULL, will be set to point to a newly-allocated - * array of #GSocketControlMessage instances or %NULL if no such - * messages was received. These correspond to the control messages - * received from the kernel, one #GSocketControlMessage per message - * from the kernel. This array is %NULL-terminated and must be freed - * by the caller using g_free() after calling g_object_unref() on each - * element. If @messages is %NULL, any control messages received will - * be discarded. - * - * @num_messages, if non-%NULL, will be set to the number of control - * messages received. - * - * If both @messages and @num_messages are non-%NULL, then - * @num_messages gives the number of #GSocketControlMessage instances - * in @messages (ie: not including the %NULL terminator). - * - * @flags is an in/out parameter. The commonly available arguments - * for this are available in the #GSocketMsgFlags enum, but the - * values there are the same as the system values, and the flags - * are passed in as-is, so you can pass in system-specific flags too - * (and g_socket_receive_message() may pass system-specific flags out). - * - * As with g_socket_receive(), data may be discarded if @socket is - * %G_SOCKET_TYPE_DATAGRAM or %G_SOCKET_TYPE_SEQPACKET and you do not - * provide enough buffer space to read a complete message. You can pass - * %G_SOCKET_MSG_PEEK in @flags to peek at the current message without - * removing it from the receive queue, but there is no portable way to find - * out the length of the message other than by reading it into a - * sufficiently-large buffer. - * - * If the socket is in blocking mode the call will block until there - * is some data to receive, the connection is closed, or there is an - * error. If there is no data available and the socket is in - * non-blocking mode, a %G_IO_ERROR_WOULD_BLOCK error will be - * returned. To be notified when data is available, wait for the - * %G_IO_IN condition. - * - * On error -1 is returned and @error is set accordingly. - * - * Returns: Number of bytes read, or 0 if the connection was closed by - * the peer, or -1 on error - * - * Since: 2.22 - */ -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) +static gssize +g_socket_receive_message_with_timeout (GSocket *socket, + GSocketAddress **address, + GInputVector *vectors, + gint num_vectors, + GSocketControlMessage ***messages, + gint *num_messages, + gint *flags, + gint64 timeout, + GCancellable *cancellable, + GError **error) { GInputVector one_vector; char one_byte; + gint64 start_time; g_return_val_if_fail (G_IS_SOCKET (socket), -1); + start_time = g_get_monotonic_time (); + if (!check_socket (socket, error)) return -1; @@ -4449,76 +4784,31 @@ g_socket_receive_message (GSocket *socket, #ifndef G_OS_WIN32 { + GInputMessage input_message; struct msghdr msg; gssize result; - struct sockaddr_storage one_sockaddr; - /* name */ - if (address) - { - msg.msg_name = &one_sockaddr; - msg.msg_namelen = sizeof (struct sockaddr_storage); - } - else - { - msg.msg_name = NULL; - msg.msg_namelen = 0; - } - - /* iov */ - /* this entire expression will be evaluated at compile time */ - if (sizeof *msg.msg_iov == sizeof *vectors && - sizeof msg.msg_iov->iov_base == sizeof vectors->buffer && - G_STRUCT_OFFSET (struct iovec, iov_base) == - G_STRUCT_OFFSET (GInputVector, buffer) && - sizeof msg.msg_iov->iov_len == sizeof vectors->size && - G_STRUCT_OFFSET (struct iovec, iov_len) == - G_STRUCT_OFFSET (GInputVector, size)) - /* ABI is compatible */ - { - msg.msg_iov = (struct iovec *) vectors; - msg.msg_iovlen = num_vectors; - } - else - /* ABI is incompatible */ - { - gint i; - - msg.msg_iov = g_newa (struct iovec, num_vectors); - for (i = 0; i < num_vectors; i++) - { - msg.msg_iov[i].iov_base = vectors[i].buffer; - msg.msg_iov[i].iov_len = vectors[i].size; - } - msg.msg_iovlen = num_vectors; - } - - /* control */ - msg.msg_control = g_alloca (2048); - msg.msg_controllen = 2048; - - /* flags */ - if (flags != NULL) - msg.msg_flags = *flags; - else - msg.msg_flags = 0; + input_message.address = address; + input_message.vectors = vectors; + input_message.num_vectors = num_vectors; + input_message.bytes_received = 0; + input_message.flags = (flags != NULL) ? *flags : 0; + input_message.control_messages = messages; + input_message.num_control_messages = (guint *) num_messages; /* We always set the close-on-exec flag so we don't leak file * descriptors into child processes. Note that gunixfdmessage.c * will later call fcntl (fd, FD_CLOEXEC), but that isn't atomic. */ #ifdef MSG_CMSG_CLOEXEC - msg.msg_flags |= MSG_CMSG_CLOEXEC; + input_message.flags |= MSG_CMSG_CLOEXEC; #endif + input_message_to_msghdr (&input_message, &msg); + /* do it */ while (1) { - if (socket->priv->blocking && - !g_socket_condition_wait (socket, - G_IO_IN, cancellable, error)) - return -1; - result = recvmsg (socket->priv->fd, &msg, msg.msg_flags); #ifdef MSG_CMSG_CLOEXEC if (result < 0 && get_socket_errno () == EINVAL) @@ -4536,86 +4826,27 @@ g_socket_receive_message (GSocket *socket, if (errsv == EINTR) continue; - if (socket->priv->blocking && + if (timeout != 0 && (errsv == EWOULDBLOCK || errsv == EAGAIN)) - continue; + { + if (!block_on_timeout (socket, G_IO_IN, timeout, start_time, + cancellable, error)) + return -1; - g_set_error (error, G_IO_ERROR, - socket_io_error_from_errno (errsv), - _("Error receiving message: %s"), socket_strerror (errsv)); + continue; + } + socket_set_error_lazy (error, errsv, _("Error receiving message: %s")); return -1; } break; } - /* decode address */ - if (address != NULL) - { - *address = cache_recv_address (socket, msg.msg_name, msg.msg_namelen); - } + input_message_from_msghdr (&msg, &input_message, socket); - /* decode control messages */ - { - GPtrArray *my_messages = NULL; - struct cmsghdr *cmsg; - - if (msg.msg_controllen >= sizeof (struct cmsghdr)) - { - for (cmsg = CMSG_FIRSTHDR (&msg); cmsg; cmsg = CMSG_NXTHDR (&msg, cmsg)) - { - GSocketControlMessage *message; - - message = g_socket_control_message_deserialize (cmsg->cmsg_level, - cmsg->cmsg_type, - cmsg->cmsg_len - ((char *)CMSG_DATA (cmsg) - (char *)cmsg), - CMSG_DATA (cmsg)); - if (message == NULL) - /* We've already spewed about the problem in the - deserialization code, so just continue */ - continue; - - if (messages == NULL) - { - /* we have to do it this way if the user ignores the - * messages so that we will close any received fds. - */ - g_object_unref (message); - } - else - { - if (my_messages == NULL) - my_messages = g_ptr_array_new (); - g_ptr_array_add (my_messages, message); - } - } - } - - if (num_messages) - *num_messages = my_messages != NULL ? my_messages->len : 0; - - if (messages) - { - if (my_messages == NULL) - { - *messages = NULL; - } - else - { - g_ptr_array_add (my_messages, NULL); - *messages = (GSocketControlMessage **) g_ptr_array_free (my_messages, FALSE); - } - } - else - { - g_assert (my_messages == NULL); - } - } - - /* capture the flags */ if (flags != NULL) - *flags = msg.msg_flags; + *flags = input_message.flags; return result; } @@ -4669,20 +4900,17 @@ g_socket_receive_message (GSocket *socket, { win32_unset_event_mask (socket, FD_READ); - if (socket->priv->blocking) + if (timeout != 0) { - if (!g_socket_condition_wait (socket, - G_IO_IN, cancellable, error)) + if (!block_on_timeout (socket, G_IO_IN, timeout, + start_time, cancellable, error)) return -1; continue; } } - g_set_error (error, G_IO_ERROR, - socket_io_error_from_errno (errsv), - _("Error receiving message: %s"), socket_strerror (errsv)); - + socket_set_error_lazy (error, errsv, _("Error receiving message: %s")); return -1; } win32_unset_event_mask (socket, FD_READ); @@ -4710,6 +4938,384 @@ g_socket_receive_message (GSocket *socket, } /** + * g_socket_receive_messages: + * @socket: a #GSocket + * @messages: (array length=num_messages): an array of #GInputMessage structs + * @num_messages: the number of elements in @messages + * @flags: an int containing #GSocketMsgFlags flags for the overall operation + * @cancellable: (allow-none): a %GCancellable or %NULL + * @error: #GError for error reporting, or %NULL to ignore + * + * Receive multiple data messages from @socket in one go. This is the most + * complicated and fully-featured version of this call. For easier use, see + * g_socket_receive(), g_socket_receive_from(), and g_socket_receive_message(). + * + * @messages must point to an array of #GInputMessage structs and + * @num_messages must be the length of this array. Each #GInputMessage + * contains a pointer to an array of #GInputVector structs describing the + * buffers that the data received in each message will be written to. Using + * multiple #GInputVectors is more memory-efficient than manually copying data + * out of a single buffer to multiple sources, and more system-call-efficient + * than making multiple calls to g_socket_receive(), such as in scenarios where + * a lot of data packets need to be received (e.g. high-bandwidth video + * streaming over RTP/UDP). + * + * @flags modify how all messages are received. The commonly available + * arguments for this are available in the #GSocketMsgFlags enum, but the + * values there are the same as the system values, and the flags + * are passed in as-is, so you can pass in system-specific flags too. These + * flags affect the overall receive operation. Flags affecting individual + * messages are returned in #GInputMessage.flags. + * + * The other members of #GInputMessage are treated as described in its + * documentation. + * + * If #GSocket:blocking is %TRUE the call will block until @num_messages have + * been received, or the end of the stream is reached. + * + * If #GSocket:blocking is %FALSE the call will return up to @num_messages + * without blocking, or %G_IO_ERROR_WOULD_BLOCK if no messages are queued in the + * operating system to be received. + * + * In blocking mode, if #GSocket:timeout is positive and is reached before any + * messages are received, %G_IO_ERROR_TIMED_OUT is returned, otherwise up to + * @num_messages are returned. (Note: This is effectively the + * behaviour of `MSG_WAITFORONE` with recvmmsg().) + * + * To be notified when messages are available, wait for the + * %G_IO_IN condition. Note though that you may still receive + * %G_IO_ERROR_WOULD_BLOCK from g_socket_receive_messages() even if you were + * previously notified of a %G_IO_IN condition. + * + * If the remote peer closes the connection, any messages queued in the + * operating system will be returned, and subsequent calls to + * g_socket_receive_messages() will return 0 (with no error set). + * + * On error -1 is returned and @error is set accordingly. An error will only + * be returned if zero messages could be received; otherwise the number of + * messages successfully received before the error will be returned. + * + * Returns: number of messages received, or -1 on error. Note that the number + * of messages received may be smaller than @num_messages if in non-blocking + * mode, if the peer closed the connection, or if @num_messages + * was larger than `UIO_MAXIOV` (1024), in which case the caller may re-try + * to receive the remaining messages. + * + * Since: 2.48 + */ +gint +g_socket_receive_messages (GSocket *socket, + GInputMessage *messages, + guint num_messages, + gint flags, + GCancellable *cancellable, + GError **error) +{ + if (!check_socket (socket, error) || + !check_timeout (socket, error)) + return -1; + + return g_socket_receive_messages_with_timeout (socket, messages, num_messages, + flags, + socket->priv->blocking ? -1 : 0, + cancellable, error); +} + +static gint +g_socket_receive_messages_with_timeout (GSocket *socket, + GInputMessage *messages, + guint num_messages, + gint flags, + gint64 timeout, + GCancellable *cancellable, + GError **error) +{ + gint64 start_time; + + g_return_val_if_fail (G_IS_SOCKET (socket), -1); + g_return_val_if_fail (num_messages == 0 || messages != NULL, -1); + g_return_val_if_fail (cancellable == NULL || + G_IS_CANCELLABLE (cancellable), -1); + g_return_val_if_fail (error == NULL || *error == NULL, -1); + + start_time = g_get_monotonic_time (); + + if (!check_socket (socket, error)) + return -1; + + if (!check_timeout (socket, error)) + return -1; + + if (g_cancellable_set_error_if_cancelled (cancellable, error)) + return -1; + + if (num_messages == 0) + return 0; + +#if !defined (G_OS_WIN32) && defined (HAVE_RECVMMSG) + { + struct mmsghdr *msgvec; + guint i, num_received; + +#ifdef UIO_MAXIOV +#define MAX_NUM_MESSAGES UIO_MAXIOV +#else +#define MAX_NUM_MESSAGES 1024 +#endif + + if (num_messages > MAX_NUM_MESSAGES) + num_messages = MAX_NUM_MESSAGES; + + msgvec = g_newa (struct mmsghdr, num_messages); + + for (i = 0; i < num_messages; ++i) + { + GInputMessage *msg = &messages[i]; + struct msghdr *msg_hdr = &msgvec[i].msg_hdr; + + input_message_to_msghdr (msg, msg_hdr); + msgvec[i].msg_len = 0; + } + + /* We always set the close-on-exec flag so we don't leak file + * descriptors into child processes. Note that gunixfdmessage.c + * will later call fcntl (fd, FD_CLOEXEC), but that isn't atomic. + */ +#ifdef MSG_CMSG_CLOEXEC + flags |= MSG_CMSG_CLOEXEC; +#endif + + for (num_received = 0; num_received < num_messages;) + { + gint ret; + + /* We operate in non-blocking mode and handle the timeout ourselves. */ + ret = recvmmsg (socket->priv->fd, + msgvec + num_received, + num_messages - num_received, + flags | G_SOCKET_DEFAULT_SEND_FLAGS, NULL); +#ifdef MSG_CMSG_CLOEXEC + if (ret < 0 && get_socket_errno () == EINVAL) + { + /* We must be running on an old kernel. Call without the flag. */ + flags &= ~(MSG_CMSG_CLOEXEC); + ret = recvmmsg (socket->priv->fd, + msgvec + num_received, + num_messages - num_received, + flags | G_SOCKET_DEFAULT_SEND_FLAGS, NULL); + } +#endif + + if (ret < 0) + { + int errsv = get_socket_errno (); + + if (errsv == EINTR) + continue; + + if (timeout != 0 && + (errsv == EWOULDBLOCK || + errsv == EAGAIN)) + { + if (!block_on_timeout (socket, G_IO_IN, timeout, start_time, + cancellable, error)) + { + if (num_received > 0) + { + g_clear_error (error); + break; + } + + return -1; + } + + continue; + } + + /* If any messages were successfully received, do not error. */ + if (num_received > 0) + break; + + socket_set_error_lazy (error, errsv, + _("Error receiving message: %s")); + + return -1; + } + else if (ret == 0) + { + /* EOS. */ + break; + } + + num_received += ret; + } + + for (i = 0; i < num_received; ++i) + { + input_message_from_msghdr (&msgvec[i].msg_hdr, &messages[i], socket); + messages[i].bytes_received = msgvec[i].msg_len; + } + + return num_received; + } +#else + { + guint i; + gint64 wait_timeout; + + wait_timeout = timeout; + + for (i = 0; i < num_messages; i++) + { + GInputMessage *msg = &messages[i]; + gssize len; + GError *msg_error = NULL; + + msg->flags = flags; /* in-out parameter */ + + len = g_socket_receive_message_with_timeout (socket, + msg->address, + msg->vectors, + msg->num_vectors, + msg->control_messages, + (gint *) msg->num_control_messages, + &msg->flags, + wait_timeout, + cancellable, + &msg_error); + + /* check if we've timed out or how much time to wait at most */ + if (timeout > 0) + { + gint64 elapsed = g_get_monotonic_time () - start_time; + wait_timeout = MAX (timeout - elapsed, 1); + } + + if (len >= 0) + msg->bytes_received = len; + + if (i != 0 && + (g_error_matches (msg_error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK) || + g_error_matches (msg_error, G_IO_ERROR, G_IO_ERROR_TIMED_OUT))) + { + g_clear_error (&msg_error); + break; + } + + if (msg_error != NULL) + { + g_propagate_error (error, msg_error); + return -1; + } + + if (len == 0) + break; + } + + return i; + } +#endif +} + +/** + * g_socket_receive_message: + * @socket: a #GSocket + * @address: (out) (nullable): a pointer to a #GSocketAddress + * pointer, or %NULL + * @vectors: (array length=num_vectors): an array of #GInputVector structs + * @num_vectors: the number of elements in @vectors, or -1 + * @messages: (array length=num_messages) (out) (nullable): a pointer which + * may be filled with an array of #GSocketControlMessages, or %NULL + * @num_messages: (out): a pointer which will be filled with the number of + * elements in @messages, or %NULL + * @flags: (inout): a pointer to an int containing #GSocketMsgFlags flags + * @cancellable: a %GCancellable or %NULL + * @error: a #GError pointer, or %NULL + * + * Receive data from a socket. For receiving multiple messages, see + * g_socket_receive_messages(); for easier use, see + * g_socket_receive() and g_socket_receive_from(). + * + * If @address is non-%NULL then @address will be set equal to the + * source address of the received packet. + * @address is owned by the caller. + * + * @vector must point to an array of #GInputVector structs and + * @num_vectors must be the length of this array. These structs + * describe the buffers that received data will be scattered into. + * If @num_vectors is -1, then @vectors is assumed to be terminated + * by a #GInputVector with a %NULL buffer pointer. + * + * As a special case, if @num_vectors is 0 (in which case, @vectors + * may of course be %NULL), then a single byte is received and + * discarded. This is to facilitate the common practice of sending a + * single '\0' byte for the purposes of transferring ancillary data. + * + * @messages, if non-%NULL, will be set to point to a newly-allocated + * array of #GSocketControlMessage instances or %NULL if no such + * messages was received. These correspond to the control messages + * received from the kernel, one #GSocketControlMessage per message + * from the kernel. This array is %NULL-terminated and must be freed + * by the caller using g_free() after calling g_object_unref() on each + * element. If @messages is %NULL, any control messages received will + * be discarded. + * + * @num_messages, if non-%NULL, will be set to the number of control + * messages received. + * + * If both @messages and @num_messages are non-%NULL, then + * @num_messages gives the number of #GSocketControlMessage instances + * in @messages (ie: not including the %NULL terminator). + * + * @flags is an in/out parameter. The commonly available arguments + * for this are available in the #GSocketMsgFlags enum, but the + * values there are the same as the system values, and the flags + * are passed in as-is, so you can pass in system-specific flags too + * (and g_socket_receive_message() may pass system-specific flags out). + * Flags passed in to the parameter affect the receive operation; flags returned + * out of it are relevant to the specific returned message. + * + * As with g_socket_receive(), data may be discarded if @socket is + * %G_SOCKET_TYPE_DATAGRAM or %G_SOCKET_TYPE_SEQPACKET and you do not + * provide enough buffer space to read a complete message. You can pass + * %G_SOCKET_MSG_PEEK in @flags to peek at the current message without + * removing it from the receive queue, but there is no portable way to find + * out the length of the message other than by reading it into a + * sufficiently-large buffer. + * + * If the socket is in blocking mode the call will block until there + * is some data to receive, the connection is closed, or there is an + * error. If there is no data available and the socket is in + * non-blocking mode, a %G_IO_ERROR_WOULD_BLOCK error will be + * returned. To be notified when data is available, wait for the + * %G_IO_IN condition. + * + * On error -1 is returned and @error is set accordingly. + * + * Returns: Number of bytes read, or 0 if the connection was closed by + * the peer, or -1 on error + * + * Since: 2.22 + */ +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) +{ + return g_socket_receive_message_with_timeout (socket, address, vectors, + num_vectors, messages, + num_messages, flags, + socket->priv->blocking ? -1 : 0, + cancellable, error); +} + +/** * g_socket_get_credentials: * @socket: a #GSocket. * @error: #GError for error reporting, or %NULL to ignore. diff --git a/gio/gsocket.h b/gio/gsocket.h index dd866e7..4e3fb6a 100644 --- a/gio/gsocket.h +++ b/gio/gsocket.h @@ -237,6 +237,13 @@ gssize g_socket_send_message (GSocket GCancellable *cancellable, GError **error); +GLIB_AVAILABLE_IN_2_48 +gint g_socket_receive_messages (GSocket *socket, + GInputMessage *messages, + guint num_messages, + gint flags, + GCancellable *cancellable, + GError **error); GLIB_AVAILABLE_IN_2_44 gint g_socket_send_messages (GSocket *socket, GOutputMessage *messages, diff --git a/gio/gsocketaddress.c b/gio/gsocketaddress.c index 676d94a..6f5c495 100644 --- a/gio/gsocketaddress.c +++ b/gio/gsocketaddress.c @@ -26,6 +26,7 @@ #include "gsocketaddress.h" #include "ginetaddress.h" #include "ginetsocketaddress.h" +#include "gnativesocketaddress.h" #include "gnetworkingprivate.h" #include "gproxyaddress.h" #include "gproxyaddressenumerator.h" @@ -128,6 +129,7 @@ g_socket_address_connectable_iface_init (GSocketConnectableIface *connectable_if { connectable_iface->enumerate = g_socket_address_connectable_enumerate; connectable_iface->proxy_enumerate = g_socket_address_connectable_proxy_enumerate; + /* to_string() is implemented by subclasses */ } static void @@ -190,7 +192,7 @@ g_socket_address_to_native (GSocketAddress *address, /** * g_socket_address_new_from_native: - * @native: a pointer to a struct sockaddr + * @native: (not nullable): a pointer to a struct sockaddr * @len: the size of the memory location pointed to by @native * * Creates a #GSocketAddress subclass corresponding to the native @@ -299,7 +301,7 @@ g_socket_address_new_from_native (gpointer native, } #endif - return NULL; + return g_native_socket_address_new (native, len); } diff --git a/gio/gsocketclient.c b/gio/gsocketclient.c index 7b3cf8b..2b339d7 100644 --- a/gio/gsocketclient.c +++ b/gio/gsocketclient.c @@ -767,7 +767,7 @@ g_socket_client_class_init (GSocketClientClass *class) * @client: the #GSocketClient * @event: the event that is occurring * @connectable: the #GSocketConnectable that @event is occurring on - * @connection: the current representation of the connection + * @connection: (nullable): the current representation of the connection * * Emitted when @client's activity on @connectable changes state. * Among other things, this can be used to provide progress diff --git a/gio/gsocketconnectable.c b/gio/gsocketconnectable.c index 79901aa..7554e34 100644 --- a/gio/gsocketconnectable.c +++ b/gio/gsocketconnectable.c @@ -146,3 +146,34 @@ g_socket_connectable_proxy_enumerate (GSocketConnectable *connectable) else return (* iface->enumerate) (connectable); } + +/** + * g_socket_connectable_to_string: + * @connectable: a #GSocketConnectable + * + * Format a #GSocketConnectable as a string. This is a human-readable format for + * use in debugging output, and is not a stable serialization format. It is not + * suitable for use in user interfaces as it exposes too much information for a + * user. + * + * If the #GSocketConnectable implementation does not support string formatting, + * the implementation’s type name will be returned as a fallback. + * + * Returns: (transfer full): the formatted string + * + * Since: 2.48 + */ +gchar * +g_socket_connectable_to_string (GSocketConnectable *connectable) +{ + GSocketConnectableIface *iface; + + g_return_val_if_fail (G_IS_SOCKET_CONNECTABLE (connectable), NULL); + + iface = G_SOCKET_CONNECTABLE_GET_IFACE (connectable); + + if (iface->to_string != NULL) + return iface->to_string (connectable); + else + return g_strdup (G_OBJECT_TYPE_NAME (connectable)); +} diff --git a/gio/gsocketconnectable.h b/gio/gsocketconnectable.h index f7db680..25805b7 100644 --- a/gio/gsocketconnectable.h +++ b/gio/gsocketconnectable.h @@ -44,6 +44,8 @@ typedef struct _GSocketConnectableIface GSocketConnectableIface; * @g_iface: The parent interface. * @enumerate: Creates a #GSocketAddressEnumerator * @proxy_enumerate: Creates a #GProxyAddressEnumerator + * @to_string: Format the connectable’s address as a string for debugging. + * Implementing this is optional. (Since: 2.48) * * Provides an interface for returning a #GSocketAddressEnumerator * and #GProxyAddressEnumerator @@ -58,6 +60,7 @@ struct _GSocketConnectableIface GSocketAddressEnumerator * (* proxy_enumerate) (GSocketConnectable *connectable); + gchar * (* to_string) (GSocketConnectable *connectable); }; GLIB_AVAILABLE_IN_ALL @@ -69,6 +72,9 @@ GSocketAddressEnumerator *g_socket_connectable_enumerate (GSocketConnectable *co GLIB_AVAILABLE_IN_ALL GSocketAddressEnumerator *g_socket_connectable_proxy_enumerate (GSocketConnectable *connectable); +GLIB_AVAILABLE_IN_2_48 +gchar *g_socket_connectable_to_string (GSocketConnectable *connectable); + G_END_DECLS diff --git a/gio/gsocketconnection.c b/gio/gsocketconnection.c index 9f490c8..4918279 100644 --- a/gio/gsocketconnection.c +++ b/gio/gsocketconnection.c @@ -272,7 +272,7 @@ g_socket_connection_connect_finish (GSocketConnection *connection, * This can be useful if you want to do something unusual on it * not supported by the #GSocketConnection APIs. * - * Returns: (transfer none): a #GSocketAddress or %NULL on error. + * Returns: (transfer none): a #GSocket or %NULL on error. * * Since: 2.22 */ diff --git a/gio/gsocketcontrolmessage.c b/gio/gsocketcontrolmessage.c index a526b4f..c9c4cc6 100644 --- a/gio/gsocketcontrolmessage.c +++ b/gio/gsocketcontrolmessage.c @@ -118,7 +118,7 @@ g_socket_control_message_get_msg_type (GSocketControlMessage *message) /** * g_socket_control_message_serialize: * @message: a #GSocketControlMessage - * @data: A buffer to write data to + * @data: (not nullable): A buffer to write data to * * Converts the data in the message to bytes placed in the * message. diff --git a/gio/gsocketlistener.c b/gio/gsocketlistener.c index 7185745..4cf51d1 100644 --- a/gio/gsocketlistener.c +++ b/gio/gsocketlistener.c @@ -26,6 +26,7 @@ #include "config.h" #include "gsocketlistener.h" +#include #include #include #include @@ -61,6 +62,13 @@ enum PROP_LISTEN_BACKLOG }; +enum +{ + EVENT, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; static GQuark source_quark = 0; @@ -131,7 +139,6 @@ g_socket_listener_set_property (GObject *object, } } - static void g_socket_listener_class_init (GSocketListenerClass *klass) { @@ -149,6 +156,29 @@ g_socket_listener_class_init (GSocketListenerClass *klass) 10, G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /** + * GSocketListener::event: + * @listener: the #GSocketListener + * @event: the event that is occurring + * @socket: the #GSocket the event is occurring on + * + * Emitted when @listener's activity on @socket changes state. + * Note that when @listener is used to listen on both IPv4 and + * IPv6, a separate set of signals will be emitted for each, and + * the order they happen in is undefined. + * + * Since: 2.46 + */ + signals[EVENT] = + g_signal_new (I_("event"), + G_TYPE_FROM_CLASS (gobject_class), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GSocketListenerClass, event), + NULL, NULL, NULL, + G_TYPE_NONE, 2, + G_TYPE_SOCKET_LISTENER_EVENT, + G_TYPE_SOCKET); + source_quark = g_quark_from_static_string ("g-socket-listener-source"); } @@ -306,13 +336,29 @@ g_socket_listener_add_address (GSocketListener *listener, g_socket_set_listen_backlog (socket, listener->priv->listen_backlog); - if (!g_socket_bind (socket, address, TRUE, error) || - !g_socket_listen (socket, error)) + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_BINDING, socket); + + if (!g_socket_bind (socket, address, TRUE, error)) + { + g_object_unref (socket); + return FALSE; + } + + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_BOUND, socket); + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_LISTENING, socket); + + if (!g_socket_listen (socket, error)) { g_object_unref (socket); return FALSE; } + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_LISTENED, socket); + local_address = NULL; if (effective_address) { @@ -392,7 +438,6 @@ g_socket_listener_add_inet_port (GSocketListener *listener, { GInetAddress *inet_address; GSocketAddress *address; - gboolean result; inet_address = g_inet_address_new_any (G_SOCKET_FAMILY_IPV6); address = g_inet_socket_address_new (inet_address, port); @@ -400,18 +445,32 @@ g_socket_listener_add_inet_port (GSocketListener *listener, g_socket_set_listen_backlog (socket6, listener->priv->listen_backlog); - result = g_socket_bind (socket6, address, TRUE, error) && - g_socket_listen (socket6, error); + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_BINDING, socket6); + + if (!g_socket_bind (socket6, address, TRUE, error)) + { + g_object_unref (address); + g_object_unref (socket6); + return FALSE; + } g_object_unref (address); - if (!result) + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_BOUND, socket6); + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_LISTENING, socket6); + + if (!g_socket_listen (socket6, error)) { g_object_unref (socket6); - return FALSE; } + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_LISTENED, socket6); + if (source_object) g_object_set_qdata_full (G_OBJECT (socket6), source_quark, g_object_ref (source_object), @@ -445,7 +504,6 @@ g_socket_listener_add_inet_port (GSocketListener *listener, { GInetAddress *inet_address; GSocketAddress *address; - gboolean result; inet_address = g_inet_address_new_any (G_SOCKET_FAMILY_IPV4); address = g_inet_socket_address_new (inet_address, port); @@ -454,21 +512,38 @@ g_socket_listener_add_inet_port (GSocketListener *listener, g_socket_set_listen_backlog (socket4, listener->priv->listen_backlog); - result = g_socket_bind (socket4, address, TRUE, error) && - g_socket_listen (socket4, error); + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_BINDING, socket4); + + if (!g_socket_bind (socket4, address, TRUE, error)) + { + g_object_unref (address); + g_object_unref (socket4); + if (socket6 != NULL) + g_object_unref (socket6); + + return FALSE; + } g_object_unref (address); - if (!result) + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_BOUND, socket4); + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_LISTENING, socket4); + + if (!g_socket_listen (socket4, error)) { g_object_unref (socket4); - if (socket6 != NULL) g_object_unref (socket6); return FALSE; } + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_LISTENED, socket4); + if (source_object) g_object_set_qdata_full (G_OBJECT (socket4), source_quark, g_object_ref (source_object), @@ -965,6 +1040,10 @@ g_socket_listener_add_any_inet_port (GSocketListener *listener, inet_address = g_inet_address_new_any (G_SOCKET_FAMILY_IPV6); address = g_inet_socket_address_new (inet_address, 0); g_object_unref (inet_address); + + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_BINDING, socket6); + result = g_socket_bind (socket6, address, TRUE, error); g_object_unref (address); @@ -976,6 +1055,9 @@ g_socket_listener_add_any_inet_port (GSocketListener *listener, break; } + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_BOUND, socket6); + g_assert (G_IS_INET_SOCKET_ADDRESS (address)); candidate_port = g_inet_socket_address_get_port (G_INET_SOCKET_ADDRESS (address)); @@ -1004,6 +1086,10 @@ g_socket_listener_add_any_inet_port (GSocketListener *listener, inet_address = g_inet_address_new_any (G_SOCKET_FAMILY_IPV4); address = g_inet_socket_address_new (inet_address, candidate_port); g_object_unref (inet_address); + + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_BINDING, socket4); + /* a note on the 'error' clause below: * * if candidate_port is 0 then we report the error right away @@ -1029,8 +1115,11 @@ g_socket_listener_add_any_inet_port (GSocketListener *listener, if (result) /* got our candidate port successfully */ - break; - + { + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_BOUND, socket4); + break; + } else /* we failed to bind to the specified port. try again. */ { @@ -1060,6 +1149,9 @@ g_socket_listener_add_any_inet_port (GSocketListener *listener, break; } + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_BOUND, socket4); + g_assert (G_IS_INET_SOCKET_ADDRESS (address)); candidate_port = g_inet_socket_address_get_port (G_INET_SOCKET_ADDRESS (address)); @@ -1083,6 +1175,10 @@ g_socket_listener_add_any_inet_port (GSocketListener *listener, if (socket6 != NULL) { g_socket_set_listen_backlog (socket6, listener->priv->listen_backlog); + + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_LISTENING, socket6); + if (!g_socket_listen (socket6, error)) { g_object_unref (socket6); @@ -1092,6 +1188,9 @@ g_socket_listener_add_any_inet_port (GSocketListener *listener, return 0; } + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_LISTENED, socket6); + if (source_object) g_object_set_qdata_full (G_OBJECT (socket6), source_quark, g_object_ref (source_object), @@ -1103,6 +1202,10 @@ g_socket_listener_add_any_inet_port (GSocketListener *listener, if (socket4 != NULL) { g_socket_set_listen_backlog (socket4, listener->priv->listen_backlog); + + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_LISTENING, socket4); + if (!g_socket_listen (socket4, error)) { g_object_unref (socket4); @@ -1112,6 +1215,9 @@ g_socket_listener_add_any_inet_port (GSocketListener *listener, return 0; } + g_signal_emit (listener, signals[EVENT], 0, + G_SOCKET_LISTENER_LISTENED, socket4); + if (source_object) g_object_set_qdata_full (G_OBJECT (socket4), source_quark, g_object_ref (source_object), diff --git a/gio/gsocketlistener.h b/gio/gsocketlistener.h index 82d309a..abf064a 100644 --- a/gio/gsocketlistener.h +++ b/gio/gsocketlistener.h @@ -61,8 +61,11 @@ struct _GSocketListenerClass void (* changed) (GSocketListener *listener); + void (* event) (GSocketListener *listener, + GSocketListenerEvent *event, + GSocket *socket); + /* Padding for future expansion */ - void (*_g_reserved1) (void); void (*_g_reserved2) (void); void (*_g_reserved3) (void); void (*_g_reserved4) (void); diff --git a/gio/gsocketservice.c b/gio/gsocketservice.c index 81053f0..746dd86 100644 --- a/gio/gsocketservice.c +++ b/gio/gsocketservice.c @@ -63,6 +63,7 @@ #include #include "gsocketlistener.h" #include "gsocketconnection.h" +#include "glibintl.h" struct _GSocketServicePrivate { @@ -77,6 +78,12 @@ G_LOCK_DEFINE_STATIC(active); G_DEFINE_TYPE_WITH_PRIVATE (GSocketService, g_socket_service, G_TYPE_SOCKET_LISTENER) +enum +{ + PROP_0, + PROP_ACTIVE +}; + static void g_socket_service_ready (GObject *object, GAsyncResult *result, gpointer user_data); @@ -117,6 +124,90 @@ do_accept (GSocketService *service) service->priv->outstanding_accept = TRUE; } +static gboolean +get_active (GSocketService *service) +{ + gboolean active; + + G_LOCK (active); + active = service->priv->active; + G_UNLOCK (active); + + return active; +} + +static void +set_active (GSocketService *service, gboolean active) +{ + gboolean notify = FALSE; + + active = !!active; + + G_LOCK (active); + + if (active != service->priv->active) + { + service->priv->active = active; + notify = TRUE; + + if (active) + { + if (service->priv->outstanding_accept) + g_cancellable_cancel (service->priv->cancellable); + else + do_accept (service); + } + else + { + if (service->priv->outstanding_accept) + g_cancellable_cancel (service->priv->cancellable); + } + } + + G_UNLOCK (active); + + if (notify) + g_object_notify (G_OBJECT (service), "active"); +} + +static void +g_socket_service_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GSocketService *service = G_SOCKET_SERVICE (object); + + switch (prop_id) + { + case PROP_ACTIVE: + g_value_set_boolean (value, get_active (service)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void +g_socket_service_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GSocketService *service = G_SOCKET_SERVICE (object); + + switch (prop_id) + { + case PROP_ACTIVE: + set_active (service, g_value_get_boolean (value)); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + static void g_socket_service_changed (GSocketListener *listener) { @@ -151,12 +242,9 @@ g_socket_service_changed (GSocketListener *listener) gboolean g_socket_service_is_active (GSocketService *service) { - gboolean active; + g_return_val_if_fail (G_IS_SOCKET_SERVICE (service), FALSE); - G_LOCK (active); - active = service->priv->active; - G_UNLOCK (active); - return active; + return get_active (service); } /** @@ -174,19 +262,9 @@ g_socket_service_is_active (GSocketService *service) void g_socket_service_start (GSocketService *service) { - G_LOCK (active); + g_return_if_fail (G_IS_SOCKET_SERVICE (service)); - if (!service->priv->active) - { - service->priv->active = TRUE; - - if (service->priv->outstanding_accept) - g_cancellable_cancel (service->priv->cancellable); - else - do_accept (service); - } - - G_UNLOCK (active); + set_active (service, TRUE); } /** @@ -210,20 +288,11 @@ g_socket_service_start (GSocketService *service) void g_socket_service_stop (GSocketService *service) { - G_LOCK (active); - - if (service->priv->active) - { - service->priv->active = FALSE; - - if (service->priv->outstanding_accept) - g_cancellable_cancel (service->priv->cancellable); - } + g_return_if_fail (G_IS_SOCKET_SERVICE (service)); - G_UNLOCK (active); + set_active (service, FALSE); } - static gboolean g_socket_service_incoming (GSocketService *service, GSocketConnection *connection, @@ -243,6 +312,8 @@ g_socket_service_class_init (GSocketServiceClass *class) GSocketListenerClass *listener_class = G_SOCKET_LISTENER_CLASS (class); gobject_class->finalize = g_socket_service_finalize; + gobject_class->set_property = g_socket_service_set_property; + gobject_class->get_property = g_socket_service_get_property; listener_class->changed = g_socket_service_changed; class->incoming = g_socket_service_real_incoming; @@ -266,11 +337,25 @@ g_socket_service_class_init (GSocketServiceClass *class) * Since: 2.22 */ g_socket_service_incoming_signal = - g_signal_new ("incoming", G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, + g_signal_new (I_("incoming"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GSocketServiceClass, incoming), g_signal_accumulator_true_handled, NULL, NULL, G_TYPE_BOOLEAN, 2, G_TYPE_SOCKET_CONNECTION, G_TYPE_OBJECT); + + /** + * GSocketService:active: + * + * Whether the service is currently accepting connections. + * + * Since: 2.46 + */ + g_object_class_install_property (gobject_class, PROP_ACTIVE, + g_param_spec_boolean ("active", + P_("Active"), + P_("Whether the service is currently accepting connections"), + TRUE, + G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); } static void @@ -309,7 +394,6 @@ g_socket_service_ready (GObject *object, G_UNLOCK (active); } - /** * g_socket_service_new: * diff --git a/gio/gsocks5proxy.c b/gio/gsocks5proxy.c index d093c81..764f9cf 100644 --- a/gio/gsocks5proxy.c +++ b/gio/gsocks5proxy.c @@ -205,7 +205,7 @@ set_auth_msg (guint8 *msg, g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_PROXY_FAILED, _("Username or password is too long for SOCKSv5 " "protocol.")); - return FALSE; + return -1; } msg[len++] = SOCKS5_AUTH_VERSION; diff --git a/gio/gsubprocesslauncher.c b/gio/gsubprocesslauncher.c index fbcbf6a..e32f9bd 100644 --- a/gio/gsubprocesslauncher.c +++ b/gio/gsubprocesslauncher.c @@ -237,9 +237,8 @@ g_subprocess_launcher_new (GSubprocessFlags flags) * As an alternative, you can use g_subprocess_launcher_setenv(), * g_subprocess_launcher_unsetenv(), etc. * - * All strings in this array are expected to be in the GLib file name - * encoding. On UNIX, this means that they can be arbitrary byte - * strings. On Windows, they should be in UTF-8. + * On UNIX, all strings in this array can be arbitrary byte strings. + * On Windows, they should be in UTF-8. * * Since: 2.40 **/ @@ -261,10 +260,9 @@ g_subprocess_launcher_set_environ (GSubprocessLauncher *self, * Sets the environment variable @variable in the environment of * processes launched from this launcher. * - * Both the variable's name and value should be in the GLib file name - * encoding. On UNIX, this means that they can be arbitrary byte - * strings. On Windows, they should be in UTF-8. - * + * On UNIX, both the variable's name and value can be arbitrary byte + * strings, except that the variable's name cannot contain '='. + * On Windows, they should be in UTF-8. * * Since: 2.40 **/ @@ -285,9 +283,8 @@ g_subprocess_launcher_setenv (GSubprocessLauncher *self, * Removes the environment variable @variable from the environment of * processes launched from this launcher. * - * The variable name should be in the GLib file name encoding. On UNIX, - * this means that they can be arbitrary byte strings. On Windows, they - * should be in UTF-8. + * On UNIX, the variable's name can be an arbitrary byte string not + * containing '='. On Windows, it should be in UTF-8. * * Since: 2.40 **/ @@ -306,9 +303,8 @@ g_subprocess_launcher_unsetenv (GSubprocessLauncher *self, * Returns the value of the environment variable @variable in the * environment of processes launched from this launcher. * - * The returned string is in the GLib file name encoding. On UNIX, this - * means that it can be an arbitrary byte string. On Windows, it will - * be UTF-8. + * On UNIX, the returned string can be an arbitrary byte string. + * On Windows, it will be UTF-8. * * Returns: the value of the environment variable, %NULL if unset * diff --git a/gio/gtask.c b/gio/gtask.c index 566f7cb..0318d97 100644 --- a/gio/gtask.c +++ b/gio/gtask.c @@ -22,6 +22,7 @@ #include "gasyncresult.h" #include "gcancellable.h" +#include "glib-private.h" #include "glibintl.h" @@ -193,11 +194,11 @@ * * // baking_data_free() will drop its ref on the cake, so we have to * // take another here to give to the caller. - * g_task_return_pointer (result, g_object_ref (cake), g_object_unref); + * g_task_return_pointer (task, g_object_ref (cake), g_object_unref); * g_object_unref (task); * } * - * static void + * static gboolean * decorator_ready (gpointer user_data) * { * GTask *task = user_data; @@ -206,6 +207,8 @@ * cake_decorate_async (bd->cake, bd->frosting, bd->message, * g_task_get_cancellable (task), * decorated_cb, task); + * + * return G_SOURCE_REMOVE; * } * * static void @@ -242,8 +245,7 @@ * source = cake_decorator_wait_source_new (cake); * // Attach @source to @task's GMainContext and have it call * // decorator_ready() when it is ready. - * g_task_attach_source (task, source, - * G_CALLBACK (decorator_ready)); + * g_task_attach_source (task, source, decorator_ready); * g_source_unref (source); * } * } @@ -582,8 +584,6 @@ typedef enum PROP_COMPLETED = 1, } GTaskProperty; -static void g_task_thread_pool_resort (void); - static void g_task_async_result_iface_init (GAsyncResultIface *iface); static void g_task_thread_pool_init (void); @@ -595,6 +595,25 @@ G_DEFINE_TYPE_WITH_CODE (GTask, g_task, G_TYPE_OBJECT, static GThreadPool *task_pool; static GMutex task_pool_mutex; static GPrivate task_private = G_PRIVATE_INIT (NULL); +static GSource *task_pool_manager; +static guint64 task_wait_time; +static gint tasks_running; + +/* When the task pool fills up and blocks, and the program keeps + * queueing more tasks, we will slowly add more threads to the pool + * (in case the existing tasks are trying to queue subtasks of their + * own) until tasks start completing again. These "overflow" threads + * will only run one task apiece, and then exit, so the pool will + * eventually get back down to its base size. + * + * The base and multiplier below gives us 10 extra threads after about + * a second of blocking, 30 after 5 seconds, 100 after a minute, and + * 200 after 20 minutes. + */ +#define G_TASK_POOL_SIZE 10 +#define G_TASK_WAIT_TIME_BASE 100000 +#define G_TASK_WAIT_TIME_MULTIPLIER 1.03 +#define G_TASK_WAIT_TIME_MAX (30 * 60 * 1000000) static void g_task_init (GTask *task) @@ -1200,15 +1219,6 @@ g_task_thread_complete (GTask *task) } task->thread_complete = TRUE; - - if (task->blocking_other_task) - { - g_mutex_lock (&task_pool_mutex); - g_thread_pool_set_max_threads (task_pool, - g_thread_pool_get_max_threads (task_pool) - 1, - NULL); - g_mutex_unlock (&task_pool_mutex); - } g_mutex_unlock (&task->lock); if (task->cancellable) @@ -1220,20 +1230,67 @@ g_task_thread_complete (GTask *task) g_task_return (task, G_TASK_RETURN_FROM_THREAD); } +static gboolean +task_pool_manager_timeout (gpointer user_data) +{ + g_mutex_lock (&task_pool_mutex); + g_thread_pool_set_max_threads (task_pool, tasks_running + 1, NULL); + g_source_set_ready_time (task_pool_manager, -1); + g_mutex_unlock (&task_pool_mutex); + + return TRUE; +} + +static void +g_task_thread_setup (void) +{ + g_private_set (&task_private, GUINT_TO_POINTER (TRUE)); + g_mutex_lock (&task_pool_mutex); + tasks_running++; + + if (tasks_running == G_TASK_POOL_SIZE) + task_wait_time = G_TASK_WAIT_TIME_BASE; + else if (tasks_running > G_TASK_POOL_SIZE && task_wait_time < G_TASK_WAIT_TIME_MAX) + task_wait_time *= G_TASK_WAIT_TIME_MULTIPLIER; + + if (tasks_running >= G_TASK_POOL_SIZE) + g_source_set_ready_time (task_pool_manager, g_get_monotonic_time () + task_wait_time); + + g_mutex_unlock (&task_pool_mutex); +} + +static void +g_task_thread_cleanup (void) +{ + gint tasks_pending; + + g_mutex_lock (&task_pool_mutex); + tasks_pending = g_thread_pool_unprocessed (task_pool); + + if (tasks_running > G_TASK_POOL_SIZE) + g_thread_pool_set_max_threads (task_pool, tasks_running - 1, NULL); + else if (tasks_running + tasks_pending < G_TASK_POOL_SIZE) + g_source_set_ready_time (task_pool_manager, -1); + + tasks_running--; + g_mutex_unlock (&task_pool_mutex); + g_private_set (&task_private, GUINT_TO_POINTER (FALSE)); +} + static void g_task_thread_pool_thread (gpointer thread_data, gpointer pool_data) { GTask *task = thread_data; - g_private_set (&task_private, task); + g_task_thread_setup (); task->task_func (task, task->source_object, task->task_data, task->cancellable); g_task_thread_complete (task); - - g_private_set (&task_private, NULL); g_object_unref (task); + + g_task_thread_cleanup (); } static void @@ -1242,7 +1299,10 @@ task_thread_cancelled (GCancellable *cancellable, { GTask *task = user_data; - g_task_thread_pool_resort (); + /* Move this task to the front of the queue - no need for + * a complete resorting of the queue. + */ + g_thread_pool_move_to_front (task_pool, task); g_mutex_lock (&task->lock); task->thread_cancelled = TRUE; @@ -1304,19 +1364,9 @@ g_task_start_task_thread (GTask *task, task_thread_cancelled_disconnect_notify, 0); } - g_thread_pool_push (task_pool, g_object_ref (task), NULL); if (g_private_get (&task_private)) - { - /* This thread is being spawned from another GTask thread, so - * bump up max-threads so we don't starve. - */ - g_mutex_lock (&task_pool_mutex); - if (g_thread_pool_set_max_threads (task_pool, - g_thread_pool_get_max_threads (task_pool) + 1, - NULL)) - task->blocking_other_task = TRUE; - g_mutex_unlock (&task_pool_mutex); - } + task->blocking_other_task = TRUE; + g_thread_pool_push (task_pool, g_object_ref (task), NULL); } /** @@ -1331,6 +1381,12 @@ g_task_start_task_thread (GTask *task, * * See #GTaskThreadFunc for more details about how @task_func is handled. * + * Although GLib currently rate-limits the tasks queued via + * g_task_run_in_thread(), you should not assume that it will always + * do this. If you have a very large number of tasks to run, but don't + * want them to all run at once, you should only queue a limited + * number of them at a time. + * * Since: 2.36 */ void @@ -1372,6 +1428,12 @@ g_task_run_in_thread (GTask *task, * have a callback, it will not be invoked when @task_func returns. * #GTask:completed will be set to %TRUE just before this function returns. * + * Although GLib currently rate-limits the tasks queued via + * g_task_run_in_thread_sync(), you should not assume that it will + * always do this. If you have a very large number of tasks to run, + * but don't want them to all run at once, you should only queue a + * limited number of them at a time. + * * Since: 2.36 */ void @@ -1816,20 +1878,36 @@ g_task_compare_priority (gconstpointer a, return ta->priority - tb->priority; } +static gboolean +trivial_source_dispatch (GSource *source, + GSourceFunc callback, + gpointer user_data) +{ + return callback (user_data); +} + +GSourceFuncs trivial_source_funcs = { + NULL, /* prepare */ + NULL, /* check */ + trivial_source_dispatch, + NULL +}; + static void g_task_thread_pool_init (void) { task_pool = g_thread_pool_new (g_task_thread_pool_thread, NULL, - 10, FALSE, NULL); + G_TASK_POOL_SIZE, FALSE, NULL); g_assert (task_pool != NULL); g_thread_pool_set_sort_function (task_pool, g_task_compare_priority, NULL); -} -static void -g_task_thread_pool_resort (void) -{ - g_thread_pool_set_sort_function (task_pool, g_task_compare_priority, NULL); + task_pool_manager = g_source_new (&trivial_source_funcs, sizeof (GSource)); + g_source_set_callback (task_pool_manager, task_pool_manager_timeout, NULL, NULL); + g_source_set_ready_time (task_pool_manager, -1); + g_source_attach (task_pool_manager, + GLIB_PRIVATE_CALL (g_get_worker_context ())); + g_source_unref (task_pool_manager); } static void diff --git a/gio/gtestdbus.c b/gio/gtestdbus.c index 4af270b..588bcfa 100644 --- a/gio/gtestdbus.c +++ b/gio/gtestdbus.c @@ -24,6 +24,8 @@ #include #include +#include +#include #include #ifdef G_OS_UNIX #include @@ -183,7 +185,7 @@ watch_parent (gint fd) for (n = 0; n < pids_to_kill->len; n++) { pid = g_array_index (pids_to_kill, guint, n); - g_print ("cleaning up pid %d\n", pid); + g_printerr ("cleaning up pid %d\n", pid); kill (pid, SIGTERM); } @@ -243,14 +245,14 @@ watcher_init (void) /* fork a child to clean up when we are killed */ if (pipe (pipe_fds) != 0) { - g_warning ("pipe() failed: %m"); + g_warning ("pipe() failed: %s", strerror (errno)); g_assert_not_reached (); } switch (fork ()) { case -1: - g_warning ("fork() failed: %m"); + g_warning ("fork() failed: %s", strerror (errno)); g_assert_not_reached (); break; @@ -838,4 +840,6 @@ g_test_dbus_unset (void) g_unsetenv ("DBUS_SESSION_BUS_ADDRESS"); g_unsetenv ("DBUS_STARTER_ADDRESS"); g_unsetenv ("DBUS_STARTER_BUS_TYPE"); + /* avoid using XDG_RUNTIME_DIR/bus */ + g_unsetenv ("XDG_RUNTIME_DIR"); } diff --git a/gio/gthreadedresolver.c b/gio/gthreadedresolver.c index c02c593..2ba42f1 100644 --- a/gio/gthreadedresolver.c +++ b/gio/gthreadedresolver.c @@ -263,7 +263,7 @@ lookup_by_address_finish (GResolver *resolver, #if defined(G_OS_UNIX) -#ifdef __BIONIC__ +#if defined __BIONIC__ && !defined BIND_4_COMPAT /* Copy from bionic/libc/private/arpa_nameser_compat.h * and bionic/libc/private/arpa_nameser.h */ typedef struct { diff --git a/gio/gthreadedsocketservice.c b/gio/gthreadedsocketservice.c index ab4bd00..c22d08b 100644 --- a/gio/gthreadedsocketservice.c +++ b/gio/gthreadedsocketservice.c @@ -231,7 +231,7 @@ g_threaded_socket_service_class_init (GThreadedSocketServiceClass *class) * Returns: %TRUE to stop further signal handlers from being called */ g_threaded_socket_service_run_signal = - g_signal_new ("run", G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, + g_signal_new (I_("run"), G_TYPE_FROM_CLASS (class), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GThreadedSocketServiceClass, run), g_signal_accumulator_true_handled, NULL, NULL, G_TYPE_BOOLEAN, diff --git a/gio/gtlsbackend.c b/gio/gtlsbackend.c index a2073ee..a0a4b46 100644 --- a/gio/gtlsbackend.c +++ b/gio/gtlsbackend.c @@ -1,6 +1,7 @@ /* GIO - GLib Input, Output and Streaming Library * * Copyright © 2010 Red Hat, Inc + * Copyright © 2015 Collabora, Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -34,7 +35,12 @@ * Security, previously known as SSL, Secure Sockets Layer) support for * gio-based network streams. * - * In the simplest case, for a client connection, you can just set the + * #GDtlsConnection and related classes provide DTLS (Datagram TLS) support for + * GIO-based network sockets, using the #GDatagramBased interface. The TLS and + * DTLS APIs are almost identical, except TLS is stream-based and DTLS is + * datagram-based. They share certificate and backend infrastructure. + * + * In the simplest case, for a client TLS connection, you can just set the * #GSocketClient:tls flag on a #GSocketClient, and then any * connections created by that client will have TLS negotiated * automatically, using appropriate default settings, and rejecting @@ -61,7 +67,7 @@ * @short_description: TLS backend implementation * @include: gio/gio.h * - * TLS (Transport Layer Security, aka SSL) backend + * TLS (Transport Layer Security, aka SSL) and DTLS backend. * * Since: 2.28 */ @@ -69,7 +75,7 @@ /** * GTlsBackend: * - * TLS (Transport Layer Security, aka SSL) backend. This is an + * TLS (Transport Layer Security, aka SSL) and DTLS backend. This is an * internal type used to coordinate the different classes implemented * by a TLS backend. * @@ -122,6 +128,28 @@ g_tls_backend_supports_tls (GTlsBackend *backend) } /** + * g_tls_backend_supports_dtls: + * @backend: the #GTlsBackend + * + * Checks if DTLS is supported. DTLS support may not be available even if TLS + * support is available, and vice-versa. + * + * Returns: whether DTLS is supported + * + * Since: 2.48 + */ +gboolean +g_tls_backend_supports_dtls (GTlsBackend *backend) +{ + if (G_TLS_BACKEND_GET_INTERFACE (backend)->supports_dtls) + return G_TLS_BACKEND_GET_INTERFACE (backend)->supports_dtls (backend); + else if (G_IS_DUMMY_TLS_BACKEND (backend)) + return FALSE; + else + return TRUE; +} + +/** * g_tls_backend_get_default_database: * @backend: the #GTlsBackend * @@ -196,6 +224,40 @@ g_tls_backend_get_server_connection_type (GTlsBackend *backend) } /** + * g_tls_backend_get_dtls_client_connection_type: + * @backend: the #GTlsBackend + * + * Gets the #GType of @backend’s #GDtlsClientConnection implementation. + * + * Returns: the #GType of @backend’s #GDtlsClientConnection + * implementation. + * + * Since: 2.48 + */ +GType +g_tls_backend_get_dtls_client_connection_type (GTlsBackend *backend) +{ + return G_TLS_BACKEND_GET_INTERFACE (backend)->get_dtls_client_connection_type (); +} + +/** + * g_tls_backend_get_dtls_server_connection_type: + * @backend: the #GTlsBackend + * + * Gets the #GType of @backend’s #GDtlsServerConnection implementation. + * + * Returns: the #GType of @backend’s #GDtlsServerConnection + * implementation. + * + * Since: 2.48 + */ +GType +g_tls_backend_get_dtls_server_connection_type (GTlsBackend *backend) +{ + return G_TLS_BACKEND_GET_INTERFACE (backend)->get_dtls_server_connection_type (); +} + +/** * g_tls_backend_get_file_database_type: * @backend: the #GTlsBackend * diff --git a/gio/gtlsbackend.h b/gio/gtlsbackend.h index 440d02d..e6fc9f3 100644 --- a/gio/gtlsbackend.h +++ b/gio/gtlsbackend.h @@ -1,6 +1,7 @@ /* GIO - GLib Input, Output and Streaming Library * * Copyright (C) 2010 Red Hat, Inc. + * Copyright © 2015 Collabora, Ltd. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -47,11 +48,14 @@ typedef struct _GTlsBackendInterface GTlsBackendInterface; * GTlsBackendInterface: * @g_iface: The parent interface. * @supports_tls: returns whether the backend supports TLS. + * @supports_dtls: returns whether the backend supports DTLS * @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. + * @get_dtls_client_connection_type: returns the #GDtlsClientConnection implementation type + * @get_dtls_server_connection_type: returns the #GDtlsServerConnection implementation type * * Provides an interface for describing TLS-related types. * @@ -68,6 +72,9 @@ struct _GTlsBackendInterface GType ( *get_server_connection_type) (void); GType ( *get_file_database_type) (void); GTlsDatabase * ( *get_default_database) (GTlsBackend *backend); + gboolean ( *supports_dtls) (GTlsBackend *backend); + GType ( *get_dtls_client_connection_type) (void); + GType ( *get_dtls_server_connection_type) (void); }; GLIB_AVAILABLE_IN_ALL @@ -81,6 +88,8 @@ GTlsDatabase * g_tls_backend_get_default_database (GTlsBackend *backend); GLIB_AVAILABLE_IN_ALL gboolean g_tls_backend_supports_tls (GTlsBackend *backend); +GLIB_AVAILABLE_IN_2_48 +gboolean g_tls_backend_supports_dtls (GTlsBackend *backend); GLIB_AVAILABLE_IN_ALL GType g_tls_backend_get_certificate_type (GTlsBackend *backend); @@ -91,6 +100,11 @@ GType g_tls_backend_get_server_connection_type (GTlsBackend *backend); GLIB_AVAILABLE_IN_ALL GType g_tls_backend_get_file_database_type (GTlsBackend *backend); +GLIB_AVAILABLE_IN_2_48 +GType g_tls_backend_get_dtls_client_connection_type (GTlsBackend *backend); +GLIB_AVAILABLE_IN_2_48 +GType g_tls_backend_get_dtls_server_connection_type (GTlsBackend *backend); + G_END_DECLS #endif /* __G_TLS_BACKEND_H__ */ diff --git a/gio/gtlscertificate.c b/gio/gtlscertificate.c index b3d0c2c..e43c2ce 100644 --- a/gio/gtlscertificate.c +++ b/gio/gtlscertificate.c @@ -335,13 +335,19 @@ parse_and_create_certificate_list (const gchar *data, while (p && *p) { gchar *cert_pem; + GError *error = NULL; - cert_pem = parse_next_pem_certificate (&p, end, FALSE, NULL); - if (!cert_pem) + cert_pem = parse_next_pem_certificate (&p, end, FALSE, &error); + if (error) { g_slist_free_full (pem_list, g_free); + g_error_free (error); return first_pem_list; } + else if (!cert_pem) + { + break; + } pem_list = g_slist_prepend (pem_list, cert_pem); } @@ -465,17 +471,22 @@ g_tls_certificate_new_from_pem (const gchar *data, gssize length, GError **error) { + GError *child_error = NULL; gchar *key_pem; GTlsCertificate *cert; g_return_val_if_fail (data != NULL, NULL); + g_return_val_if_fail (error == NULL || *error == NULL, NULL); if (length == -1) length = strlen (data); - key_pem = parse_private_key (data, length, FALSE, error); - if (error && *error) - return NULL; + key_pem = parse_private_key (data, length, FALSE, &child_error); + if (child_error != NULL) + { + g_propagate_error (error, child_error); + return NULL; + } cert = parse_and_create_certificate (data, length, key_pem, error); g_free (key_pem); diff --git a/gio/gtlsclientconnection.c b/gio/gtlsclientconnection.c index 4e2aadf..99ff9a8 100644 --- a/gio/gtlsclientconnection.c +++ b/gio/gtlsclientconnection.c @@ -156,6 +156,10 @@ g_tls_client_connection_default_init (GTlsClientConnectionInterface *iface) * must have pollable input and output streams) which is assumed to * communicate with the server identified by @server_identity. * + * See the documentation for #GTlsConnection:base-io-stream for restrictions + * on when application code can run operations on the @base_io_stream after + * this function has returned. + * * Returns: (transfer full) (type GTlsClientConnection): the new * #GTlsClientConnection, or %NULL on error * @@ -338,3 +342,29 @@ g_tls_client_connection_get_accepted_cas (GTlsClientConnection *conn) g_object_get (G_OBJECT (conn), "accepted-cas", &accepted_cas, NULL); return accepted_cas; } + +/** + * g_tls_client_connection_copy_session_state: + * @conn: a #GTlsClientConnection + * @source: a #GTlsClientConnection + * + * Copies session state from one connection to another. This is + * not normally needed, but may be used when the same session + * needs to be used between different endpoints as is required + * by some protocols such as FTP over TLS. @source should have + * already completed a handshake, and @conn should not have + * completed a handshake. + * + * Since: 2.46 + */ +void +g_tls_client_connection_copy_session_state (GTlsClientConnection *conn, + GTlsClientConnection *source) +{ + g_return_if_fail (G_IS_TLS_CLIENT_CONNECTION (conn)); + g_return_if_fail (G_IS_TLS_CLIENT_CONNECTION (source)); + g_return_if_fail (G_TLS_CLIENT_CONNECTION_GET_INTERFACE (conn)->copy_session_state != NULL); + + G_TLS_CLIENT_CONNECTION_GET_INTERFACE (conn)->copy_session_state (conn, + source); +} diff --git a/gio/gtlsclientconnection.h b/gio/gtlsclientconnection.h index 23e90f5..ae50f84 100644 --- a/gio/gtlsclientconnection.h +++ b/gio/gtlsclientconnection.h @@ -37,6 +37,7 @@ typedef struct _GTlsClientConnectionInterface GTlsClientConnectionInterface; /** * GTlsClientConnectionInterface: * @g_iface: The parent interface. + * @copy_session_state: Copies session state from one #GTlsClientConnection to another. * * vtable for a #GTlsClientConnection implementation. * @@ -46,6 +47,8 @@ struct _GTlsClientConnectionInterface { GTypeInterface g_iface; + void ( *copy_session_state ) (GTlsClientConnection *conn, + GTlsClientConnection *source); }; GLIB_AVAILABLE_IN_ALL @@ -74,6 +77,10 @@ void g_tls_client_connection_set_use_ssl3 (GTlsClientCo GLIB_AVAILABLE_IN_ALL GList * g_tls_client_connection_get_accepted_cas (GTlsClientConnection *conn); +GLIB_AVAILABLE_IN_2_46 +void g_tls_client_connection_copy_session_state (GTlsClientConnection *conn, + GTlsClientConnection *source); + G_END_DECLS #endif /* __G_TLS_CLIENT_CONNECTION_H__ */ diff --git a/gio/gtlsconnection.c b/gio/gtlsconnection.c index d614c05..c0c98f7 100644 --- a/gio/gtlsconnection.c +++ b/gio/gtlsconnection.c @@ -40,6 +40,8 @@ * subclasses, #GTlsClientConnection and #GTlsServerConnection, * implement client-side and server-side TLS, respectively. * + * For DTLS (Datagram TLS) support, see #GDtlsConnection. + * * Since: 2.28 */ @@ -95,7 +97,11 @@ g_tls_connection_class_init (GTlsConnectionClass *klass) /** * GTlsConnection:base-io-stream: * - * The #GIOStream that the connection wraps + * The #GIOStream that the connection wraps. The connection holds a reference + * to this stream, and may run operations on the stream from other threads + * throughout its lifetime. Consequently, after the #GIOStream has been + * constructed, application code may only run its own operations on this + * stream when no #GIOStream operations are running. * * Since: 2.28 */ @@ -128,7 +134,7 @@ g_tls_connection_class_init (GTlsConnectionClass *klass) * GTlsConnection:database: * * The certificate database to use when verifying this TLS connection. - * If no cerificate database is set, then the default database will be + * If no certificate database is set, then the default database will be * used. See g_tls_backend_get_default_database(). * * Since: 2.30 @@ -621,7 +627,8 @@ g_tls_connection_get_peer_certificate_errors (GTlsConnection *conn) * on @conn, this will send a close notification regardless of the * setting of this property. If you explicitly want to do an unclean * close, you can close @conn's #GTlsConnection:base-io-stream rather - * than closing @conn itself. + * than closing @conn itself, but note that this may only be done when no other + * operations are pending on @conn or the base I/O stream. * * Since: 2.28 */ diff --git a/gio/gtlsdatabase.c b/gio/gtlsdatabase.c index 20dc862..8441e24 100644 --- a/gio/gtlsdatabase.c +++ b/gio/gtlsdatabase.c @@ -53,6 +53,42 @@ * Since: 2.30 */ +/** + * GTlsDatabaseClass: + * @verify_chain: Virtual method implementing + * g_tls_database_verify_chain(). + * @verify_chain_async: Virtual method implementing + * g_tls_database_verify_chain_async(). + * @verify_chain_finish: Virtual method implementing + * g_tls_database_verify_chain_finish(). + * @create_certificate_handle: Virtual method implementing + * g_tls_database_create_certificate_handle(). + * @lookup_certificate_for_handle: Virtual method implementing + * g_tls_database_lookup_certificate_for_handle(). + * @lookup_certificate_for_handle_async: Virtual method implementing + * g_tls_database_lookup_certificate_for_handle_async(). + * @lookup_certificate_for_handle_finish: Virtual method implementing + * g_tls_database_lookup_certificate_for_handle_finish(). + * @lookup_certificate_issuer: Virtual method implementing + * g_tls_database_lookup_certificate_issuer(). + * @lookup_certificate_issuer_async: Virtual method implementing + * g_tls_database_lookup_certificate_issuer_async(). + * @lookup_certificate_issuer_finish: Virtual method implementing + * g_tls_database_lookup_certificate_issuer_finish(). + * @lookup_certificates_issued_by: Virtual method implementing + * g_tls_database_lookup_certificates_issued_by(). + * @lookup_certificates_issued_by_async: Virtual method implementing + * g_tls_database_lookup_certificates_issued_by_async(). + * @lookup_certificates_issued_by_finish: Virtual method implementing + * g_tls_database_lookup_certificates_issued_by_finish(). + * + * The class for #GTlsDatabase. Derived classes should implement the various + * virtual methods. _async and _finish methods have a default + * implementation that runs the corresponding sync method in a thread. + * + * Since: 2.30 + */ + G_DEFINE_ABSTRACT_TYPE (GTlsDatabase, g_tls_database, G_TYPE_OBJECT); enum { diff --git a/gio/gtlsinteraction.c b/gio/gtlsinteraction.c index ba94fe1..2538237 100644 --- a/gio/gtlsinteraction.c +++ b/gio/gtlsinteraction.c @@ -80,6 +80,15 @@ * If the implementation returns %G_TLS_INTERACTION_HANDLED, then the * password argument of the async method should have been filled in by using * g_tls_password_set_value() or a similar function. + * @request_certificate: ask for a certificate synchronously. If the + * implementation returns %G_TLS_INTERACTION_HANDLED, then the connection + * argument should have been filled in by using + * g_tls_connection_set_certificate(). + * @request_certificate_async: ask for a certificate asyncronously. + * @request_certificate_finish: complete operation to ask for a certificate + * asynchronously. If the implementation returns %G_TLS_INTERACTION_HANDLED, + * then the connection argument of the async method should have been + * filled in by using g_tls_connection_set_certificate(). * * The class for #GTlsInteraction. Derived classes implement the various * virtual interaction methods to handle TLS interactions. diff --git a/gio/gtlsserverconnection.c b/gio/gtlsserverconnection.c index 4c2f486..518af55 100644 --- a/gio/gtlsserverconnection.c +++ b/gio/gtlsserverconnection.c @@ -71,6 +71,10 @@ g_tls_server_connection_default_init (GTlsServerConnectionInterface *iface) * Creates a new #GTlsServerConnection wrapping @base_io_stream (which * must have pollable input and output streams). * + * See the documentation for #GTlsConnection:base-io-stream for restrictions + * on when application code can run operations on the @base_io_stream after + * this function has returned. + * * Returns: (transfer full) (type GTlsServerConnection): the new * #GTlsServerConnection, or %NULL on error * diff --git a/gio/gunionvolumemonitor.c b/gio/gunionvolumemonitor.c index 4c3049b..6af2664 100644 --- a/gio/gunionvolumemonitor.c +++ b/gio/gunionvolumemonitor.c @@ -591,11 +591,7 @@ _g_mount_get_for_mount_path (const gchar *mount_path, mount = NULL; if (klass->get_mount_for_mount_path) - { - g_rec_mutex_lock (&the_volume_monitor_mutex); - mount = klass->get_mount_for_mount_path (mount_path, cancellable); - g_rec_mutex_unlock (&the_volume_monitor_mutex); - } + mount = klass->get_mount_for_mount_path (mount_path, cancellable); /* TODO: How do we know this succeeded? Keep in mind that the native * volume monitor may fail (e.g. not being able to connect to diff --git a/gio/gunixinputstream.c b/gio/gunixinputstream.c index 24700ec..660111e 100644 --- a/gio/gunixinputstream.c +++ b/gio/gunixinputstream.c @@ -31,7 +31,6 @@ #include #include #include "gioerror.h" -#include "gsimpleasyncresult.h" #include "gunixinputstream.h" #include "gcancellable.h" #include "gasynchelper.h" diff --git a/gio/gunixmount.c b/gio/gunixmount.c index 2ec8e5c..216f8ed 100644 --- a/gio/gunixmount.c +++ b/gio/gunixmount.c @@ -39,7 +39,6 @@ #include "gfile.h" #include "gvolumemonitor.h" #include "gthemedicon.h" -#include "gsimpleasyncresult.h" #include "gioerror.h" #include "glibintl.h" /* for BUFSIZ */ diff --git a/gio/gunixmounts.c b/gio/gunixmounts.c index 93fae3b..2e2ff5e 100644 --- a/gio/gunixmounts.c +++ b/gio/gunixmounts.c @@ -210,7 +210,7 @@ gboolean g_unix_is_mount_path_system_internal (const char *mount_path) { const char *ignore_mountpoints[] = { - /* Includes all FHS 2.3 toplevel dirs and other specilized + /* Includes all FHS 2.3 toplevel dirs and other specialized * directories that we want to hide from the user. */ "/", /* we already have "Filesystem root" in Nautilus */ @@ -1481,7 +1481,7 @@ g_unix_mount_monitor_class_init (GUnixMountMonitorClass *klass) * Emitted when the unix mounts have changed. */ signals[MOUNTS_CHANGED] = - g_signal_new ("mounts-changed", + g_signal_new (I_("mounts-changed"), G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, @@ -1496,7 +1496,7 @@ g_unix_mount_monitor_class_init (GUnixMountMonitorClass *klass) * Emitted when the unix mount points have changed. */ signals[MOUNTPOINTS_CHANGED] = - g_signal_new ("mountpoints-changed", + g_signal_new (I_("mountpoints-changed"), G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, diff --git a/gio/gunixoutputstream.c b/gio/gunixoutputstream.c index 8aa7292..4b5519b 100644 --- a/gio/gunixoutputstream.c +++ b/gio/gunixoutputstream.c @@ -33,7 +33,6 @@ #include "gioerror.h" #include "gunixoutputstream.h" #include "gcancellable.h" -#include "gsimpleasyncresult.h" #include "gasynchelper.h" #include "gfiledescriptorbased.h" #include "glibintl.h" diff --git a/gio/gunixsocketaddress.c b/gio/gunixsocketaddress.c index 70973b8..f4fc077 100644 --- a/gio/gunixsocketaddress.c +++ b/gio/gunixsocketaddress.c @@ -24,6 +24,7 @@ #include #include "gunixsocketaddress.h" +#include "gsocketconnectable.h" #include "glibintl.h" #include "gnetworking.h" @@ -76,7 +77,13 @@ struct _GUnixSocketAddressPrivate GUnixSocketAddressType address_type; }; -G_DEFINE_TYPE_WITH_PRIVATE (GUnixSocketAddress, g_unix_socket_address, G_TYPE_SOCKET_ADDRESS) +static void g_unix_socket_address_connectable_iface_init (GSocketConnectableIface *iface); +static gchar *g_unix_socket_address_connectable_to_string (GSocketConnectable *connectable); + +G_DEFINE_TYPE_WITH_CODE (GUnixSocketAddress, g_unix_socket_address, G_TYPE_SOCKET_ADDRESS, + G_ADD_PRIVATE (GUnixSocketAddress) + G_IMPLEMENT_INTERFACE (G_TYPE_SOCKET_CONNECTABLE, + g_unix_socket_address_connectable_iface_init)) static void g_unix_socket_address_set_property (GObject *object, @@ -300,6 +307,49 @@ g_unix_socket_address_class_init (GUnixSocketAddressClass *klass) } static void +g_unix_socket_address_connectable_iface_init (GSocketConnectableIface *iface) +{ + GSocketConnectableIface *parent_iface = g_type_interface_peek_parent (iface); + + iface->enumerate = parent_iface->enumerate; + iface->proxy_enumerate = parent_iface->proxy_enumerate; + iface->to_string = g_unix_socket_address_connectable_to_string; +} + +static gchar * +g_unix_socket_address_connectable_to_string (GSocketConnectable *connectable) +{ + GUnixSocketAddress *ua; + GString *out; + const gchar *path; + gsize path_len, i; + + ua = G_UNIX_SOCKET_ADDRESS (connectable); + + /* Anonymous sockets have no path. */ + if (ua->priv->address_type == G_UNIX_SOCKET_ADDRESS_ANONYMOUS) + return g_strdup ("anonymous"); + + path = g_unix_socket_address_get_path (ua); + path_len = g_unix_socket_address_get_path_len (ua); + out = g_string_sized_new (path_len); + + /* Return the #GUnixSocketAddress:path, but with all non-printable characters + * (including nul bytes) escaped to hex. */ + for (i = 0; i < path_len; i++) + { + guint8 c = path[i]; + + if (g_ascii_isprint (path[i])) + g_string_append_c (out, c); + else + g_string_append_printf (out, "\\x%02x", (guint) c); + } + + return g_string_free (out, FALSE); +} + +static void g_unix_socket_address_init (GUnixSocketAddress *address) { address->priv = g_unix_socket_address_get_instance_private (address); @@ -362,6 +412,9 @@ g_unix_socket_address_new_abstract (const gchar *path, * If @type is %G_UNIX_SOCKET_ADDRESS_PATH, this is equivalent to * calling g_unix_socket_address_new(). * + * If @type is %G_UNIX_SOCKET_ADDRESS_ANONYMOUS, @path and @path_len will be + * ignored. + * * If @path_type is %G_UNIX_SOCKET_ADDRESS_ABSTRACT, then @path_len * bytes of @path will be copied to the socket's path, and only those * bytes will be considered part of the name. (If @path_len is -1, diff --git a/gio/gvdb/gvdb.doap b/gio/gvdb/gvdb.doap deleted file mode 100644 index b4ae60c..0000000 --- a/gio/gvdb/gvdb.doap +++ /dev/null @@ -1,32 +0,0 @@ - - - - - gvdb - GVariant Database file - - A simple database file format that stores a mapping from strings to - GVariant values in a way that is extremely efficient for lookups. - - The database is written once and can not be modified. - - Included here is reader code and a first-pass implementation of a - writer (that does not currently produce particularly optimised - output). - - It is intended that this code be used by copy-pasting into your - project or by making use of git-merge(1). - - - - - Ryan Lortie - - ryanl - - - - diff --git a/gio/gwin32appinfo.c b/gio/gwin32appinfo.c index f1697c8..b547012 100644 --- a/gio/gwin32appinfo.c +++ b/gio/gwin32appinfo.c @@ -1,6 +1,7 @@ /* GIO - GLib Input, Output and Streaming Library * * Copyright (C) 2006-2007 Red Hat, Inc. + * Copyright (C) 2014 Руслан Ижбулатов * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -15,7 +16,8 @@ * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, see . * - * Author: Alexander Larsson + * Authors: Alexander Larsson + * Руслан Ижбулатов */ #include "config.h" @@ -29,304 +31,4297 @@ #include "gfile.h" #include #include "glibintl.h" +#include #include -#include +/* We need to watch 8 places: + * 0) HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations + * (anything below that key) + * On change: re-enumerate subkeys, read their values. + * 1) HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts + * (anything below that key) + * On change: re-enumerate subkeys + * 2) HKEY_CURRENT_USER\\Software\\Clients (anything below that key) + * On change: re-read the whole hierarchy of handlers + * 3) HKEY_LOCAL_MACHINE\\Software\\Clients (anything below that key) + * On change: re-read the whole hierarchy of handlers + * 4) HKEY_LOCAL_MACHINE\\Software\\RegisteredApplications (values of that key) + * On change: re-read the value list of registered applications + * 5) HKEY_CURRENT_USER\\Software\\RegisteredApplications (values of that key) + * On change: re-read the value list of registered applications + * 6) HKEY_CLASSES_ROOT\\Applications (anything below that key) + * On change: re-read the whole hierarchy of apps + * 7) HKEY_CLASSES_ROOT (only its subkeys) + * On change: re-enumerate subkeys, try to filter out wrong names. + * + */ + +typedef struct _GWin32AppInfoURLSchema GWin32AppInfoURLSchema; +typedef struct _GWin32AppInfoFileExtension GWin32AppInfoFileExtension; +typedef struct _GWin32AppInfoHandler GWin32AppInfoHandler; +typedef struct _GWin32AppInfoApplication GWin32AppInfoApplication; + +typedef struct _GWin32AppInfoURLSchemaClass GWin32AppInfoURLSchemaClass; +typedef struct _GWin32AppInfoFileExtensionClass GWin32AppInfoFileExtensionClass; +typedef struct _GWin32AppInfoHandlerClass GWin32AppInfoHandlerClass; +typedef struct _GWin32AppInfoApplicationClass GWin32AppInfoApplicationClass; + +struct _GWin32AppInfoURLSchemaClass +{ + GObjectClass parent_class; +}; + +struct _GWin32AppInfoFileExtensionClass +{ + GObjectClass parent_class; +}; + +struct _GWin32AppInfoHandlerClass +{ + GObjectClass parent_class; +}; + +struct _GWin32AppInfoApplicationClass +{ + GObjectClass parent_class; +}; + +struct _GWin32AppInfoURLSchema { + GObject parent_instance; + + /* url schema (stuff before ':') */ + gunichar2 *schema; + + /* url schema (stuff before ':'), in UTF-8 */ + gchar *schema_u8; + + /* url schema (stuff before ':'), in UTF-8, folded */ + gchar *schema_folded; + + /* Handler currently selected for this schema */ + GWin32AppInfoHandler *chosen_handler; + + /* Maps folded handler IDs -> to other handlers for this schema */ + GHashTable *handlers; +}; + +struct _GWin32AppInfoHandler { + GObject parent_instance; + + /* Class name in HKCR */ + gunichar2 *handler_id; + + /* Handler registry key (HKCR\\handler_id). Can be used to watch this handler. */ + GWin32RegistryKey *key; + + /* Class name in HKCR, UTF-8, folded */ + gchar *handler_id_folded; + + /* shell/open/command default value for the class named by class_id */ + gunichar2 *handler_command; + + /* If handler_id class has no command, it might point to another class */ + gunichar2 *proxy_id; + + /* Proxy registry key (HKCR\\proxy_id). Can be used to watch handler's proxy. */ + GWin32RegistryKey *proxy_key; + + /* shell/open/command default value for the class named by proxy_id */ + gunichar2 *proxy_command; + + /* Executable of the program (for matching, in folded form; UTF-8) */ + gchar *executable_folded; + + /* Executable of the program (UTF-8) */ + gchar *executable; + + /* Pointer to a location within @executable */ + gchar *executable_basename; + + /* Icon of the application for this handler */ + GIcon *icon; + + /* The application that is linked to this handler. */ + GWin32AppInfoApplication *app; +}; + +struct _GWin32AppInfoFileExtension { + GObject parent_instance; + + /* File extension (with leading '.') */ + gunichar2 *extension; + + /* File extension (with leading '.'), in UTF-8 */ + gchar *extension_u8; + + /* handler currently selected for this extension */ + GWin32AppInfoHandler *chosen_handler; + + /* Maps folded handler IDs -> to other handlers for this extension */ + GHashTable *handlers; + + /* Maps folded app exename -> to apps that support this extension. + * ONLY for apps that are not reachable via handlers (i.e. apps from + * the HKCR/Applications, which have no handlers). */ + GHashTable *other_apps; +}; + +struct _GWin32AppInfoApplication { + GObject parent_instance; + + /* Canonical name (used for key names). Can be NULL. */ + gunichar2 *canonical_name; + + /* Canonical name (used for key names), in UTF-8. Can be NULL. */ + gchar *canonical_name_u8; + + /* Canonical name (used for key names), in UTF-8, folded. Can be NULL. */ + gchar *canonical_name_folded; + + /* Human-readable name in English. Can be NULL */ + gunichar2 *pretty_name; + + /* Human-readable name in English, UTF-8. Can be NULL */ + gchar *pretty_name_u8; + + /* Human-readable name in user's language. Can be NULL */ + gunichar2 *localized_pretty_name; + + /* Human-readable name in user's language, UTF-8. Can be NULL */ + gchar *localized_pretty_name_u8; + + /* Description, could be in user's language. Can be NULL */ + gunichar2 *description; + + /* Description, could be in user's language, UTF-8. Can be NULL */ + gchar *description_u8; + + /* shell/open/command for the application. Can be NULL (see executable). */ + gunichar2 *command; + + /* shell/open/command for the application. Can be NULL (see executable). */ + gchar *command_u8; + + /* Executable of the program (for matching, in folded form; + * UTF-8). Never NULL. */ + gchar *executable_folded; + + /* Executable of the program (UTF-8). Never NULL. */ + gchar *executable; + + /* Pointer to a location within @executable */ + gchar *executable_basename; + + /* Explicitly supported URLs, hashmap from map-owned gchar ptr (schema, + * UTF-8, folded) -> a GWin32AppInfoHandler + * Schema can be used as a key in the urls hashmap. + */ + GHashTable *supported_urls; + + /* Explicitly supported extensions, hashmap from map-owned gchar ptr + * (.extension, UTF-8, folded) -> a GWin32AppInfoHandler + * Extension can be used as a key in the extensions hashmap. + */ + GHashTable *supported_exts; + + /* Icon of the application (remember, handler can have its own icon too) */ + GIcon *icon; + + /* Set to TRUE to prevent this app from appearing in lists of apps for + * opening files. This will not prevent it from appearing in lists of apps + * just for running, or lists of apps for opening exts/urls for which this + * app reports explicit support. + */ + gboolean no_open_with; + + /* Set to TRUE for applications from HKEY_CURRENT_USER. + * Give them priority over applications from HKEY_LOCAL_MACHINE, when all + * other things are equal. + */ + gboolean user_specific; + + /* Set to TRUE for applications that are machine-wide defaults (i.e. default + * browser) */ + gboolean default_app; +}; + +#define G_TYPE_WIN32_APPINFO_URL_SCHEMA (g_win32_appinfo_url_schema_get_type ()) +#define G_WIN32_APPINFO_URL_SCHEMA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_WIN32_APPINFO_URL_SCHEMA, GWin32AppInfoURLSchema)) + +#define G_TYPE_WIN32_APPINFO_FILE_EXTENSION (g_win32_appinfo_file_extension_get_type ()) +#define G_WIN32_APPINFO_FILE_EXTENSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_WIN32_APPINFO_FILE_EXTENSION, GWin32AppInfoFileExtension)) + +#define G_TYPE_WIN32_APPINFO_HANDLER (g_win32_appinfo_handler_get_type ()) +#define G_WIN32_APPINFO_HANDLER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_WIN32_APPINFO_HANDLER, GWin32AppInfoHandler)) + +#define G_TYPE_WIN32_APPINFO_APPLICATION (g_win32_appinfo_application_get_type ()) +#define G_WIN32_APPINFO_APPLICATION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_WIN32_APPINFO_APPLICATION, GWin32AppInfoApplication)) + +GType g_win32_appinfo_url_schema_get_type (void) G_GNUC_CONST; +GType g_win32_appinfo_file_extension_get_type (void) G_GNUC_CONST; +GType g_win32_appinfo_handler_get_type (void) G_GNUC_CONST; +GType g_win32_appinfo_application_get_type (void) G_GNUC_CONST; + +G_DEFINE_TYPE (GWin32AppInfoURLSchema, g_win32_appinfo_url_schema, G_TYPE_OBJECT) +G_DEFINE_TYPE (GWin32AppInfoFileExtension, g_win32_appinfo_file_extension, G_TYPE_OBJECT) +G_DEFINE_TYPE (GWin32AppInfoHandler, g_win32_appinfo_handler, G_TYPE_OBJECT) +G_DEFINE_TYPE (GWin32AppInfoApplication, g_win32_appinfo_application, G_TYPE_OBJECT) + +static void +g_win32_appinfo_url_schema_dispose (GObject *object) +{ + GWin32AppInfoURLSchema *url = G_WIN32_APPINFO_URL_SCHEMA (object); + + g_clear_pointer (&url->schema, g_free); + g_clear_pointer (&url->schema_u8, g_free); + g_clear_pointer (&url->schema_folded, g_free); + g_clear_object (&url->chosen_handler); + g_clear_pointer (&url->handlers, g_hash_table_destroy); + G_OBJECT_CLASS (g_win32_appinfo_url_schema_parent_class)->dispose (object); +} + + +static void +g_win32_appinfo_handler_dispose (GObject *object) +{ + GWin32AppInfoHandler *handler = G_WIN32_APPINFO_HANDLER (object); + + g_clear_pointer (&handler->handler_id, g_free); + g_clear_pointer (&handler->handler_id_folded, g_free); + g_clear_pointer (&handler->handler_command, g_free); + g_clear_pointer (&handler->proxy_id, g_free); + g_clear_pointer (&handler->proxy_command, g_free); + g_clear_pointer (&handler->executable_folded, g_free); + g_clear_pointer (&handler->executable, g_free); + g_clear_object (&handler->key); + g_clear_object (&handler->proxy_key); + g_clear_object (&handler->icon); + g_clear_object (&handler->app); + G_OBJECT_CLASS (g_win32_appinfo_handler_parent_class)->dispose (object); +} + +static void +g_win32_appinfo_file_extension_dispose (GObject *object) +{ + GWin32AppInfoFileExtension *ext = G_WIN32_APPINFO_FILE_EXTENSION (object); + + g_clear_pointer (&ext->extension, g_free); + g_clear_pointer (&ext->extension_u8, g_free); + g_clear_object (&ext->chosen_handler); + g_clear_pointer (&ext->handlers, g_hash_table_destroy); + g_clear_pointer (&ext->other_apps, g_hash_table_destroy); + G_OBJECT_CLASS (g_win32_appinfo_file_extension_parent_class)->dispose (object); +} + +static void +g_win32_appinfo_application_dispose (GObject *object) +{ + GWin32AppInfoApplication *app = G_WIN32_APPINFO_APPLICATION (object); + + g_clear_pointer (&app->canonical_name_u8, g_free); + g_clear_pointer (&app->canonical_name_folded, g_free); + g_clear_pointer (&app->canonical_name, g_free); + g_clear_pointer (&app->pretty_name, g_free); + g_clear_pointer (&app->localized_pretty_name, g_free); + g_clear_pointer (&app->description, g_free); + g_clear_pointer (&app->command, g_free); + g_clear_pointer (&app->pretty_name_u8, g_free); + g_clear_pointer (&app->localized_pretty_name_u8, g_free); + g_clear_pointer (&app->description_u8, g_free); + g_clear_pointer (&app->command_u8, g_free); + g_clear_pointer (&app->executable_folded, g_free); + g_clear_pointer (&app->executable, g_free); + g_clear_pointer (&app->supported_urls, g_hash_table_destroy); + g_clear_pointer (&app->supported_exts, g_hash_table_destroy); + g_clear_object (&app->icon); + G_OBJECT_CLASS (g_win32_appinfo_application_parent_class)->dispose (object); +} + +static void +g_win32_appinfo_url_schema_class_init (GWin32AppInfoURLSchemaClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->dispose = g_win32_appinfo_url_schema_dispose; +} + +static void +g_win32_appinfo_file_extension_class_init (GWin32AppInfoFileExtensionClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->dispose = g_win32_appinfo_file_extension_dispose; +} + +static void +g_win32_appinfo_handler_class_init (GWin32AppInfoHandlerClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->dispose = g_win32_appinfo_handler_dispose; +} + +static void +g_win32_appinfo_application_class_init (GWin32AppInfoApplicationClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->dispose = g_win32_appinfo_application_dispose; +} + +static void +g_win32_appinfo_url_schema_init (GWin32AppInfoURLSchema *self) +{ + self->handlers = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_object_unref); +} + +static void +g_win32_appinfo_file_extension_init (GWin32AppInfoFileExtension *self) +{ + self->handlers = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_object_unref); + self->other_apps = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_object_unref); +} + +static void +g_win32_appinfo_handler_init (GWin32AppInfoHandler *self) +{ +} + +static void +g_win32_appinfo_application_init (GWin32AppInfoApplication *self) +{ + self->supported_urls = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_object_unref); + self->supported_exts = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + g_object_unref); +} + +G_LOCK_DEFINE_STATIC (gio_win32_appinfo); + +/* Map of owned ".ext" (with '.', UTF-8, folded) + * to GWin32AppInfoFileExtension ptr + */ +static GHashTable *extensions = NULL; + +/* Map of owned "schema" (without ':', UTF-8, folded) + * to GWin32AppInfoURLSchema ptr + */ +static GHashTable *urls = NULL; + +/* Map of owned "appID" (UTF-8, folded) to + * GWin32AppInfoApplication ptr + */ +static GHashTable *apps_by_id = NULL; + +/* Map of owned "app.exe" (UTF-8, folded) to + * GWin32AppInfoApplication ptr. + * This map and its values are separate from apps_by_id. The fact that an app + * with known ID has the same executable [base]name as an app in this map does + * not mean that they are the same application. + */ +static GHashTable *apps_by_exe = NULL; + +/* Map of owned "handler id" (UTF-8, folded) + * to GWin32AppInfoHandler ptr + */ +static GHashTable *handlers = NULL; + +/* Watch this whole subtree */ +static GWin32RegistryKey *url_associations_key; + +/* Watch this whole subtree */ +static GWin32RegistryKey *file_exts_key; + +/* Watch this whole subtree */ +static GWin32RegistryKey *user_clients_key; + +/* Watch this whole subtree */ +static GWin32RegistryKey *system_clients_key; + +/* Watch this key */ +static GWin32RegistryKey *user_registered_apps_key; + +/* Watch this key */ +static GWin32RegistryKey *system_registered_apps_key; + +/* Watch this whole subtree */ +static GWin32RegistryKey *applications_key; + +/* Watch this key */ +static GWin32RegistryKey *classes_root_key; + +static gunichar2 * +g_wcsdup (const gunichar2 *str, gssize str_size) +{ + if (str_size == -1) + { + str_size = wcslen (str) + 1; + str_size *= sizeof (gunichar2); + } + return g_memdup (str, str_size); +} + +#define URL_ASSOCIATIONS L"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\" +#define USER_CHOICE L"\\UserChoice" +#define OPEN_WITH_PROGIDS L"\\OpenWithProgids" +#define FILE_EXTS L"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\" +#define HKCR L"HKEY_CLASSES_ROOT\\" +#define HKCU L"HKEY_CURRENT_USER\\" +#define HKLM L"HKEY_LOCAL_MACHINE\\" +#define SHELL_OPEN_COMMAND L"\\shell\\open\\command" +#define REG_PATH_MAX 256 +#define REG_PATH_MAX_SIZE (REG_PATH_MAX * sizeof (gunichar2)) + +static gunichar2 * +read_resource_string (gunichar2 *res) +{ + gunichar2 *id_str; + gunichar2 *id_str_end; + gunichar2 *filename_str; + unsigned long id; + HMODULE resource_module; + gunichar2 *buffer; + int string_length; + int buffer_length; + + if (res == NULL || res[0] != L'@') + return res; + + id_str = wcsrchr (res, L'-'); + + if (id_str == NULL || id_str[-1] != L',') + return res; + + id_str += 1; + + id = wcstoul (id_str, &id_str_end, 10); + + if (id_str_end == id_str || id_str_end[0] != L'\0' || id == ULONG_MAX) + return res; + + filename_str = &res[1]; + id_str[-2] = L'\0'; + + resource_module = LoadLibraryExW (filename_str, + 0, + LOAD_LIBRARY_AS_DATAFILE | + LOAD_LIBRARY_AS_IMAGE_RESOURCE); + + g_free (res); + + if (resource_module == NULL) + return NULL; + + buffer_length = 256; + string_length = buffer_length - 1; + + while (TRUE) + { + buffer = g_malloc (buffer_length * sizeof (gunichar2)); + string_length = LoadStringW (resource_module, id, buffer, buffer_length); + + if (string_length != 0 && string_length == buffer_length - 1) + { + g_free (buffer); + buffer_length *= 2; + } + else + { + if (string_length == 0) + g_clear_pointer (&buffer, g_free); + + break; + } + } + + FreeLibrary (resource_module); + + if (buffer) + { + gunichar2 *result = g_wcsdup (buffer, -1); + g_free (buffer); + return result; + } + + return NULL; +} + +static void +read_handler_icon (GWin32RegistryKey *proxy_key, + GWin32RegistryKey *program_key, + GIcon **icon_out) +{ + gint counter; + GWin32RegistryKey *key; + + *icon_out = NULL; + + for (counter = 0; counter < 2; counter++) + { + GWin32RegistryKey *icon_key; + + if (counter == 0) + key = proxy_key; + else + key = program_key; + + if (!key) + continue; + + icon_key = g_win32_registry_key_get_child_w (key, L"DefaultIcon", NULL); + + if (icon_key != NULL) + { + GWin32RegistryValueType default_type; + gchar *default_value; + + if (g_win32_registry_key_get_value (icon_key, + TRUE, + "", + &default_type, + (gpointer *) &default_value, + NULL, + NULL)) + { + if (default_type == G_WIN32_REGISTRY_VALUE_STR || + default_value[0] != '\0') + *icon_out = g_themed_icon_new (default_value); + + g_clear_pointer (&default_value, g_free); + } + + g_object_unref (icon_key); + } + + if (*icon_out) + break; + } +} + +static gboolean build_registry_path (gunichar2 *output, gsize output_size, ...) G_GNUC_NULL_TERMINATED; +static gboolean build_registry_pathv (gunichar2 *output, gsize output_size, va_list components); + +static GWin32RegistryKey *_g_win32_registry_key_build_and_new_w (GError **error, ...) G_GNUC_NULL_TERMINATED; + +/* output_size is in *bytes*, not gunichar2s! */ +static gboolean +build_registry_path (gunichar2 *output, gsize output_size, ...) +{ + va_list ap; + gboolean result; + + va_start (ap, output_size); + + result = build_registry_pathv (output, output_size, ap); + + va_end (ap); + + return result; +} + +/* output_size is in *bytes*, not gunichar2s! */ +static gboolean +build_registry_pathv (gunichar2 *output, gsize output_size, va_list components) +{ + va_list lentest; + gunichar2 *p; + gunichar2 *component; + gsize length; + + if (output == NULL) + return FALSE; + + G_VA_COPY (lentest, components); + + for (length = 0, component = va_arg (lentest, gunichar2 *); + component != NULL; + component = va_arg (lentest, gunichar2 *)) + { + length += wcslen (component); + } + + va_end (lentest); + + if ((length >= REG_PATH_MAX_SIZE) || + (length * sizeof (gunichar2) >= output_size)) + return FALSE; + + output[0] = L'\0'; + + for (p = output, component = va_arg (components, gunichar2 *); + component != NULL; + component = va_arg (components, gunichar2 *)) + { + length = wcslen (component); + wcscat (p, component); + p += length; + } + + return TRUE; +} + + +static GWin32RegistryKey * +_g_win32_registry_key_build_and_new_w (GError **error, ...) +{ + va_list ap; + gunichar2 key_path[REG_PATH_MAX_SIZE + 1]; + GWin32RegistryKey *key; + + va_start (ap, error); + + key = NULL; + + if (build_registry_pathv (key_path, sizeof (key_path), ap)) + key = g_win32_registry_key_new_w (key_path, error); + + va_end (ap); + + return key; +} + + +static gboolean +utf8_and_fold (const gunichar2 *str, + gchar **str_u8, + gchar **str_u8_folded) +{ + gchar *u8; + gchar *folded; + u8 = g_utf16_to_utf8 (str, -1, NULL, NULL, NULL); + + if (u8 == NULL) + return FALSE; + + folded = g_utf8_casefold (u8, -1); + + if (folded == NULL) + { + g_free (u8); + return FALSE; + } + + if (str_u8) + *str_u8 = u8; + else + g_free (u8); + + if (str_u8_folded) + *str_u8_folded = folded; + else + g_free (folded); + + return TRUE; +} + + +static gboolean +follow_class_chain_to_handler (const gunichar2 *program_id, + gsize program_id_size, + gunichar2 **program_command, + GWin32RegistryKey **program_key, + gunichar2 **proxy_id, + gunichar2 **proxy_command, + GWin32RegistryKey **proxy_key, + gchar **program_id_u8, + gchar **program_id_folded) +{ + GWin32RegistryKey *key; + GWin32RegistryValueType val_type; + gsize proxy_id_size; + gboolean got_value; + + g_assert (program_id && program_command && proxy_id && proxy_command); + + *program_command = NULL; + *proxy_id = NULL; + *proxy_command = NULL; + + if (program_key) + *program_key = NULL; + + if (proxy_key) + *proxy_key = NULL; + + + key = _g_win32_registry_key_build_and_new_w (NULL, HKCR, program_id, + SHELL_OPEN_COMMAND, NULL); + + if (key != NULL) + { + got_value = g_win32_registry_key_get_value_w (key, + TRUE, + L"", + &val_type, + (void **) program_command, + NULL, + NULL); + if (got_value && val_type == G_WIN32_REGISTRY_VALUE_STR) + { + if ((program_id_u8 != NULL || program_id_folded != NULL) && + !utf8_and_fold (program_id, program_id_u8, program_id_folded)) + { + g_object_unref (key); + g_free (program_command); + + return FALSE; + } + if (program_key == NULL) + g_object_unref (key); + else + *program_key = key; + + return TRUE; + } + else if (got_value) + g_clear_pointer (program_command, g_free); + + g_object_unref (key); + } + + key = _g_win32_registry_key_build_and_new_w (NULL, HKCR, program_id, NULL); + + if (key == NULL) + return FALSE; + + got_value = g_win32_registry_key_get_value_w (key, + TRUE, + L"", + &val_type, + (void **) proxy_id, + &proxy_id_size, + NULL); + if (!got_value || + (val_type != G_WIN32_REGISTRY_VALUE_STR)) + { + g_object_unref (key); + g_clear_pointer (proxy_id, g_free); + return FALSE; + } + + if (proxy_key) + *proxy_key = key; + else + g_object_unref (key); + + key = _g_win32_registry_key_build_and_new_w (NULL, HKCR, *proxy_id, + SHELL_OPEN_COMMAND, NULL); + + if (key == NULL) + { + g_clear_pointer (proxy_id, g_free); + if (proxy_key) + g_clear_object (proxy_key); + return FALSE; + } + + got_value = g_win32_registry_key_get_value_w (key, + TRUE, + L"", + &val_type, + (void **) proxy_command, + NULL, + NULL); + g_object_unref (key); + + if (!got_value || + val_type != G_WIN32_REGISTRY_VALUE_STR || + ((program_id_u8 != NULL || program_id_folded != NULL) && + !utf8_and_fold (program_id, program_id_u8, program_id_folded))) + { + g_clear_pointer (proxy_id, g_free); + g_clear_pointer (proxy_command, g_free); + if (proxy_key) + g_clear_object (proxy_key); + return FALSE; + } + + return TRUE; +} + + +static void +extract_executable (gunichar2 *commandline, + gchar **ex_out, + gchar **ex_basename_out, + gchar **ex_folded_out, + gchar **ex_folded_basename_out) +{ + gchar *ex; + gchar *ex_folded; + gunichar2 *p; + gboolean quoted; + size_t len; + size_t execlen; + gunichar2 *exepart; + gboolean found; + + quoted = FALSE; + execlen = 0; + found = FALSE; + len = wcslen (commandline); + p = commandline; + + while (p < &commandline[len]) + { + switch (p[0]) + { + case L'"': + quoted = !quoted; + break; + case L' ': + if (!quoted) + { + execlen = p - commandline; + p = &commandline[len]; + found = TRUE; + } + break; + default: + break; + } + p += 1; + } + + if (!found) + execlen = len; + + exepart = g_wcsdup (commandline, (execlen + 1) * sizeof (gunichar2)); + exepart[execlen] = L'\0'; + + p = &exepart[0]; + + while (execlen > 0 && exepart[0] == L'"' && exepart[execlen - 1] == L'"') + { + p = &exepart[1]; + exepart[execlen - 1] = L'\0'; + execlen -= 2; + } + + if (!utf8_and_fold (p, &ex, &ex_folded)) + /* Currently no code to handle this case. It shouldn't happen though... */ + g_assert_not_reached (); + + g_free (exepart); + + if (ex_out) + { + *ex_out = ex; + + if (ex_basename_out) + { + *ex_basename_out = &ex[strlen (ex) - 1]; + + while (*ex_basename_out > ex) + { + if ((*ex_basename_out)[0] == '/' || + (*ex_basename_out)[0] == '\\') + { + *ex_basename_out += 1; + break; + } + + *ex_basename_out -= 1; + } + } + } + else + { + g_free (ex); + } + + if (ex_folded_out) + { + *ex_folded_out = ex_folded; + + if (ex_folded_basename_out) + { + *ex_folded_basename_out = &ex_folded[strlen (ex_folded) - 1]; + + while (*ex_folded_basename_out > ex_folded) + { + if ((*ex_folded_basename_out)[0] == '/' || + (*ex_folded_basename_out)[0] == '\\') + { + *ex_folded_basename_out += 1; + break; + } + + *ex_folded_basename_out -= 1; + } + } + } + else + { + g_free (ex_folded); + } +} + +static void +get_url_association (const gunichar2 *schema) +{ + GWin32AppInfoURLSchema *schema_rec; + GWin32AppInfoHandler *handler_rec; + GWin32AppInfoHandler *handler_rec_in_url; + gchar *schema_u8; + gchar *schema_folded; + GWin32RegistryKey *user_choice; + GWin32RegistryValueType val_type; + gunichar2 *program_id; + gsize program_id_size; + gunichar2 *program_command; + gunichar2 *proxy_id; + gunichar2 *proxy_command; + gchar *program_id_u8; + gchar *program_id_folded; + GWin32RegistryKey *program_key; + GWin32RegistryKey *proxy_key; + + user_choice = _g_win32_registry_key_build_and_new_w (NULL, URL_ASSOCIATIONS, + schema, USER_CHOICE, + NULL); + + if (user_choice == NULL) + return; + + if (!utf8_and_fold (schema, &schema_u8, &schema_folded)) + { + g_object_unref (user_choice); + return; + } + + schema_rec = g_hash_table_lookup (urls, schema_folded); + + if (!g_win32_registry_key_get_value_w (user_choice, + TRUE, + L"Progid", + &val_type, + (void **) &program_id, + &program_id_size, + NULL)) + { + g_free (schema_u8); + g_free (schema_folded); + g_object_unref (user_choice); + return; + } + + if (val_type != G_WIN32_REGISTRY_VALUE_STR) + { + g_free (schema_u8); + g_free (schema_folded); + g_free (program_id); + g_object_unref (user_choice); + return; + } + + program_key = proxy_key = NULL; + program_command = proxy_id = proxy_command = NULL; + + if (!follow_class_chain_to_handler (program_id, + program_id_size, + &program_command, + &program_key, + &proxy_id, + &proxy_command, + &proxy_key, + &program_id_u8, + &program_id_folded)) + { + g_free (schema_u8); + g_free (schema_folded); + g_free (program_id); + g_object_unref (user_choice); + return; + } + + handler_rec = g_hash_table_lookup (handlers, program_id_folded); + + if (handler_rec == NULL) + { + handler_rec = g_object_new (G_TYPE_WIN32_APPINFO_HANDLER, NULL); + + handler_rec->proxy_key = proxy_key; + handler_rec->key = program_key; + handler_rec->handler_id = g_wcsdup (program_id, program_id_size); + handler_rec->handler_id_folded = + g_strdup (program_id_folded); + handler_rec->handler_command = + program_command ? g_wcsdup (program_command, -1) : NULL; + handler_rec->proxy_id = proxy_id ? g_wcsdup (proxy_id, -1) : NULL; + handler_rec->proxy_command = + proxy_command ? g_wcsdup (proxy_command, -1) : NULL; + extract_executable (proxy_command ? proxy_command : program_command, + &handler_rec->executable, + &handler_rec->executable_basename, + &handler_rec->executable_folded, + NULL); + read_handler_icon (proxy_key, program_key, &handler_rec->icon); + g_hash_table_insert (handlers, + g_strdup (program_id_folded), + handler_rec); + } + else + { + g_clear_object (&program_key); + g_clear_object (&proxy_key); + } + + if (schema_rec == NULL) + { + schema_rec = g_object_new (G_TYPE_WIN32_APPINFO_URL_SCHEMA, NULL); + schema_rec->schema = g_wcsdup (schema, -1); + schema_rec->schema_u8 = g_strdup (schema_u8); + schema_rec->schema_folded = g_strdup (schema_folded); + schema_rec->chosen_handler = g_object_ref (handler_rec); + g_hash_table_insert (urls, g_strdup (schema_folded), schema_rec); + } + + if (schema_rec->chosen_handler == NULL) + schema_rec->chosen_handler = g_object_ref (handler_rec); + + handler_rec_in_url = g_hash_table_lookup (schema_rec->handlers, + program_id_folded); + + if (handler_rec_in_url == NULL && schema_rec->chosen_handler != handler_rec) + g_hash_table_insert (schema_rec->handlers, + g_strdup (program_id_folded), + g_object_ref (handler_rec)); + + g_free (schema_u8); + g_free (schema_folded); + g_free (program_id); + g_free (program_id_u8); + g_free (program_id_folded); + g_free (program_command); + g_free (proxy_id); + g_free (proxy_command); + g_object_unref (user_choice); +} + +static void +get_file_ext (const gunichar2 *ext) +{ + GWin32AppInfoFileExtension *file_extn; + gboolean file_ext_known; + GWin32AppInfoHandler *handler_rec; + GWin32AppInfoHandler *handler_rec_in_ext; + gchar *ext_u8; + gchar *ext_folded; + GWin32RegistryKey *user_choice; + GWin32RegistryKey *open_with_progids; + GWin32RegistryValueType val_type; + gsize program_id_size; + gboolean found_handler; + gunichar2 *program_id; + gunichar2 *proxy_id; + gchar *program_id_u8; + gchar *program_id_folded; + GWin32RegistryKey *program_key; + GWin32RegistryKey *proxy_key; + gunichar2 *program_command; + gunichar2 *proxy_command; + + open_with_progids = _g_win32_registry_key_build_and_new_w (NULL, FILE_EXTS, + ext, + OPEN_WITH_PROGIDS, + NULL); + + user_choice = _g_win32_registry_key_build_and_new_w (NULL, FILE_EXTS, ext, + USER_CHOICE, NULL); + + if (user_choice == NULL && open_with_progids == NULL) + return; + + if (!utf8_and_fold (ext, &ext_u8, &ext_folded)) + { + g_clear_object (&user_choice); + g_clear_object (&open_with_progids); + return; + } + + file_extn = NULL; + file_ext_known = g_hash_table_lookup_extended (extensions, + ext_folded, + NULL, + (void **) &file_extn); + + if (!file_ext_known) + file_extn = g_object_new (G_TYPE_WIN32_APPINFO_FILE_EXTENSION, NULL); + + found_handler = FALSE; + + if (user_choice != NULL) + { + if (g_win32_registry_key_get_value_w (user_choice, + TRUE, + L"Progid", + &val_type, + (void **) &program_id, + &program_id_size, + NULL)) + { + program_key = proxy_key = NULL; + + if (val_type == G_WIN32_REGISTRY_VALUE_STR && + follow_class_chain_to_handler (program_id, + program_id_size, + &program_command, + &program_key, + &proxy_id, + &proxy_command, + &proxy_key, + &program_id_u8, + &program_id_folded)) + { + handler_rec = g_hash_table_lookup (handlers, + program_id_folded); + + if (handler_rec == NULL) + { + handler_rec = g_object_new (G_TYPE_WIN32_APPINFO_HANDLER, + NULL); + handler_rec->proxy_key = proxy_key; + handler_rec->key = program_key; + handler_rec->handler_id = + g_wcsdup (program_id, program_id_size); + handler_rec->handler_id_folded = + g_strdup (program_id_folded); + handler_rec->handler_command = + program_command ? g_wcsdup (program_command, -1) : NULL; + handler_rec->proxy_id = + proxy_id ? g_wcsdup (proxy_id, -1) : NULL; + handler_rec->proxy_command = + proxy_command ? g_wcsdup (proxy_command, -1) : NULL; + extract_executable (proxy_command ? proxy_command : program_command, + &handler_rec->executable, + &handler_rec->executable_basename, + &handler_rec->executable_folded, + NULL); + read_handler_icon (proxy_key, + program_key, + &handler_rec->icon); + g_hash_table_insert (handlers, + g_strdup (program_id_folded), + handler_rec); + } + else + { + g_clear_object (&program_key); + g_clear_object (&proxy_key); + } + + found_handler = TRUE; + + handler_rec_in_ext = g_hash_table_lookup (file_extn->handlers, + program_id_folded); + + if (file_extn->chosen_handler == NULL) + { + g_hash_table_insert (file_extn->handlers, + g_strdup (program_id_folded), + g_object_ref (handler_rec)); + } + else if (handler_rec_in_ext == NULL) + { + if (file_extn->chosen_handler->handler_id_folded && + strcmp (file_extn->chosen_handler->handler_id_folded, + program_id_folded) != 0) + g_hash_table_insert (file_extn->handlers, + g_strdup (program_id_folded), + g_object_ref (handler_rec)); + } + + g_free (program_id_u8); + g_free (program_id_folded); + g_free (program_command); + g_free (proxy_id); + g_free (proxy_command); + } + + g_free (program_id); + } + + g_object_unref (user_choice); + } + + if (open_with_progids != NULL) + { + GWin32RegistryValueIter iter; + + if (g_win32_registry_value_iter_init (&iter, open_with_progids, NULL)) + { + gunichar2 *value_name; + gunichar2 *value_data; + gsize value_name_len; + gsize value_data_size; + GWin32RegistryValueType value_type; + + while (g_win32_registry_value_iter_next (&iter, TRUE, NULL)) + { + gsize value_name_size; + program_key = proxy_key = NULL; + + if ((!g_win32_registry_value_iter_get_value_type (&iter, + &value_type, + NULL)) || + ((val_type != G_WIN32_REGISTRY_VALUE_STR) && + (val_type != G_WIN32_REGISTRY_VALUE_EXPAND_STR)) || + (!g_win32_registry_value_iter_get_name_w (&iter, &value_name, + &value_name_len, + NULL)) || + (value_name_len <= 0) || + (!g_win32_registry_value_iter_get_data_w (&iter, TRUE, + (void **) &value_data, + &value_data_size, + NULL)) || + (value_data_size < sizeof (gunichar2)) || + (value_data[0] == L'\0')) + continue; + + value_name_size = sizeof (gunichar2) * (value_name_len + 1); + + if (!follow_class_chain_to_handler (value_name, + value_name_size, + &program_command, + &program_key, + &proxy_id, + &proxy_command, + &proxy_key, + &program_id_u8, + &program_id_folded)) + continue; + + handler_rec = g_hash_table_lookup (handlers, + program_id_folded); + + if (handler_rec == NULL) + { + handler_rec = g_object_new (G_TYPE_WIN32_APPINFO_HANDLER, NULL); + + handler_rec->proxy_key = proxy_key; + handler_rec->key = program_key; + handler_rec->handler_id = + g_wcsdup (value_name, value_name_size); + handler_rec->handler_id_folded = + g_strdup (program_id_folded); + handler_rec->handler_command = + program_command ? g_wcsdup (program_command, -1) : NULL; + handler_rec->proxy_id = + proxy_id ? g_wcsdup (proxy_id, -1) : NULL; + handler_rec->proxy_command = + proxy_command ? g_wcsdup (proxy_command, -1) : NULL; + extract_executable (proxy_command ? proxy_command : program_command, + &handler_rec->executable, + &handler_rec->executable_basename, + &handler_rec->executable_folded, + NULL); + read_handler_icon (proxy_key, + program_key, + &handler_rec->icon); + g_hash_table_insert (handlers, + g_strdup (program_id_folded), + handler_rec); + } + else + { + g_clear_object (&program_key); + g_clear_object (&proxy_key); + } + + found_handler = TRUE; + + handler_rec_in_ext = g_hash_table_lookup (file_extn->handlers, + program_id_folded); + + if (handler_rec_in_ext == NULL) + { + if (file_extn->chosen_handler == NULL) + g_hash_table_insert (file_extn->handlers, + g_strdup (program_id_folded), + g_object_ref (handler_rec)); + else if (file_extn->chosen_handler->handler_id_folded && + strcmp (file_extn->chosen_handler->handler_id_folded, + program_id_folded) != 0) + g_hash_table_insert (file_extn->handlers, + g_strdup (program_id_folded), + g_object_ref (handler_rec)); + } + + g_free (program_id_u8); + g_free (program_id_folded); + g_free (program_command); + g_free (proxy_id); + g_free (proxy_command); + } + + g_win32_registry_value_iter_clear (&iter); + } + + g_object_unref (open_with_progids); + } + + if (!found_handler) + { + if (!file_ext_known) + g_object_unref (file_extn); + } + else if (!file_ext_known) + { + file_extn->extension = g_wcsdup (ext, -1); + file_extn->extension_u8 = g_strdup (ext_u8); + g_hash_table_insert (extensions, g_strdup (ext_folded), file_extn); + } + + g_free (ext_u8); + g_free (ext_folded); +} + +static void +collect_capable_apps_from_clients (GPtrArray *capable_apps, + GPtrArray *priority_capable_apps, + gboolean user_registry) +{ + GWin32RegistryKey *clients; + GWin32RegistrySubkeyIter clients_iter; + + gunichar2 *client_type_name; + gsize client_type_name_len; + + + if (user_registry) + clients = + g_win32_registry_key_new_w (L"HKEY_CURRENT_USER\\Software\\Clients", + NULL); + else + clients = + g_win32_registry_key_new_w (L"HKEY_LOCAL_MACHINE\\Software\\Clients", + NULL); + + if (clients == NULL) + return; + + if (!g_win32_registry_subkey_iter_init (&clients_iter, clients, NULL)) + { + g_object_unref (clients); + return; + } + + while (g_win32_registry_subkey_iter_next (&clients_iter, TRUE, NULL)) + { + GWin32RegistrySubkeyIter subkey_iter; + GWin32RegistryKey *system_client_type; + GWin32RegistryValueType default_type; + gunichar2 *default_value; + gunichar2 *client_name; + gsize client_name_len; + + if (!g_win32_registry_subkey_iter_get_name_w (&clients_iter, + &client_type_name, + &client_type_name_len, + NULL)) + continue; + + system_client_type = g_win32_registry_key_get_child_w (clients, + client_type_name, + NULL); + + if (system_client_type == NULL) + continue; + + if (g_win32_registry_key_get_value_w (system_client_type, + TRUE, + L"", + &default_type, + (gpointer *) &default_value, + NULL, + NULL)) + { + if (default_type != G_WIN32_REGISTRY_VALUE_STR || + default_value[0] == L'\0') + g_clear_pointer (&default_value, g_free); + } + + if (!g_win32_registry_subkey_iter_init (&subkey_iter, + system_client_type, + NULL)) + { + g_clear_pointer (&default_value, g_free); + g_object_unref (system_client_type); + continue; + } + + while (g_win32_registry_subkey_iter_next (&subkey_iter, TRUE, NULL)) + { + GWin32RegistryKey *system_client; + GWin32RegistryKey *system_client_assoc; + gboolean add; + gunichar2 *keyname; + + if (!g_win32_registry_subkey_iter_get_name_w (&subkey_iter, + &client_name, + &client_name_len, + NULL)) + continue; + + system_client = g_win32_registry_key_get_child_w (system_client_type, + client_name, + NULL); + + if (system_client == NULL) + continue; + + add = FALSE; + + system_client_assoc = g_win32_registry_key_get_child_w (system_client, + L"Capabilities\\FileAssociations", + NULL); + + if (system_client_assoc != NULL) + { + add = TRUE; + g_object_unref (system_client_assoc); + } + else + { + system_client_assoc = g_win32_registry_key_get_child_w (system_client, + L"Capabilities\\UrlAssociations", + NULL); + + if (system_client_assoc != NULL) + { + add = TRUE; + g_object_unref (system_client_assoc); + } + } + + if (add) + { + keyname = g_wcsdup (g_win32_registry_key_get_path_w (system_client), -1); + + if (default_value && wcscmp (default_value, client_name) == 0) + g_ptr_array_add (priority_capable_apps, keyname); + else + g_ptr_array_add (capable_apps, keyname); + } + + g_object_unref (system_client); + } + + g_win32_registry_subkey_iter_clear (&subkey_iter); + g_clear_pointer (&default_value, g_free); + g_object_unref (system_client_type); + } + + g_win32_registry_subkey_iter_clear (&clients_iter); + g_object_unref (clients); +} + +static void +collect_capable_apps_from_registered_apps (GPtrArray *capable_apps, + gboolean user_registry) +{ + GWin32RegistryValueIter iter; + + gunichar2 *value_data; + gsize value_data_size; + GWin32RegistryValueType value_type; + GWin32RegistryKey *registered_apps; + + if (user_registry) + registered_apps = + g_win32_registry_key_new_w (L"HKEY_CURRENT_USER\\Software\\RegisteredApplications", + NULL); + else + registered_apps = + g_win32_registry_key_new_w (L"HKEY_LOCAL_MACHINE\\Software\\RegisteredApplications", + NULL); + + if (!registered_apps) + return; + + if (!g_win32_registry_value_iter_init (&iter, registered_apps, NULL)) + { + g_object_unref (registered_apps); + return; + } + + while (g_win32_registry_value_iter_next (&iter, TRUE, NULL)) + { + gunichar2 possible_location[REG_PATH_MAX_SIZE + 1]; + GWin32RegistryKey *location = NULL; + + if ((!g_win32_registry_value_iter_get_value_type (&iter, + &value_type, + NULL)) || + (value_type != G_WIN32_REGISTRY_VALUE_STR) || + (!g_win32_registry_value_iter_get_data_w (&iter, TRUE, + (void **) &value_data, + &value_data_size, + NULL)) || + (value_data_size < sizeof (gunichar2)) || + (value_data[0] == L'\0')) + continue; + + if (build_registry_path (possible_location, sizeof (possible_location), + HKCU, value_data, NULL)) + location = g_win32_registry_key_new_w (possible_location, NULL); + + if (location) + { + gunichar2 *p = wcsrchr (possible_location, L'\\'); + + if (p) + *p = L'\0'; + + g_ptr_array_add (capable_apps, g_wcsdup (possible_location, -1)); + g_object_unref (location); + continue; + } + + if (!build_registry_path (possible_location, sizeof (possible_location), + user_registry ? HKCU : HKLM, value_data, NULL)) + continue; + + location = g_win32_registry_key_new_w (possible_location, NULL); + + if (location) + { + gunichar2 *p = wcsrchr (possible_location, L'\\'); + if (p) + *p = L'\0'; + g_ptr_array_add (capable_apps, g_wcsdup (possible_location, -1)); + g_object_unref (location); + } + } + + g_win32_registry_value_iter_clear (&iter); + g_object_unref (registered_apps); +} + +static void +read_capable_app (gunichar2 *input_app_key_path, gboolean user_specific, gboolean default_app) +{ + GWin32AppInfoApplication *app; + gunichar2 *app_key_path; + gunichar2 *canonical_name; + gchar *canonical_name_u8; + gchar *canonical_name_folded; + GWin32RegistryKey *appkey; + gunichar2 *fallback_friendly_name; + GWin32RegistryValueType vtype; + gboolean success; + gunichar2 *friendly_name; + gunichar2 *description; + gunichar2 *narrow_application_name; + gunichar2 *icon_source; + GWin32RegistryKey *capabilities; + GWin32RegistryKey *default_icon_key; + GWin32RegistryKey *shell_open_command_key; + gunichar2 *shell_open_command; + gchar *app_executable; + gchar *app_executable_basename; + gchar *app_executable_folded; + gchar *app_executable_folded_basename; + GWin32RegistryKey *associations; + + app_key_path = g_wcsdup (input_app_key_path, -1); + + canonical_name = wcsrchr (app_key_path, L'\\'); + + if (canonical_name == NULL) + { + /* The key must have at least one '\\' */ + g_free (app_key_path); + return; + } + + canonical_name += 1; + + if (!utf8_and_fold (canonical_name, &canonical_name_u8, &canonical_name_folded)) + { + g_free (app_key_path); + return; + } + + appkey = g_win32_registry_key_new_w (app_key_path, NULL); + + if (appkey == NULL) + { + g_free (canonical_name_u8); + g_free (canonical_name_folded); + g_free (app_key_path); + return; + } + + capabilities = + g_win32_registry_key_get_child_w (appkey, L"Capabilities", NULL); + + if (capabilities == NULL) + { + /* Must have capabilities */ + g_free (canonical_name_u8); + g_free (canonical_name_folded); + g_free (app_key_path); + return; + } + + shell_open_command_key = + g_win32_registry_key_get_child_w (appkey, + L"shell\\open\\command", + NULL); + + if (shell_open_command_key == NULL) + { + g_object_unref (capabilities); + g_free (canonical_name_u8); + g_free (canonical_name_folded); + g_free (app_key_path); + g_object_unref (appkey); + return ; + } + + shell_open_command = NULL; + + success = g_win32_registry_key_get_value_w (shell_open_command_key, + TRUE, + L"", + &vtype, + (gpointer *) &shell_open_command, + NULL, + NULL); + + if (success && vtype != G_WIN32_REGISTRY_VALUE_STR) + { + /* Must have a command */ + g_clear_pointer (&shell_open_command, g_free); + g_object_unref (capabilities); + g_free (canonical_name_u8); + g_free (canonical_name_folded); + g_free (app_key_path); + g_object_unref (appkey); + return; + } + + extract_executable (shell_open_command, + &app_executable, + &app_executable_basename, + &app_executable_folded, + &app_executable_folded_basename); + + app = g_hash_table_lookup (apps_by_id, canonical_name_folded); + + if (app == NULL) + { + app = g_object_new (G_TYPE_WIN32_APPINFO_APPLICATION, NULL); + + app->canonical_name = g_wcsdup (canonical_name, -1); + app->canonical_name_u8 = g_strdup (canonical_name_u8); + app->canonical_name_folded = + g_strdup (canonical_name_folded); + + app->command = g_wcsdup (shell_open_command, -1); + app->command_u8 = + g_utf16_to_utf8 (shell_open_command, -1, NULL, NULL, NULL); + app->executable = g_strdup (app_executable); + app->executable_basename = + &app->executable[app_executable_basename - app_executable]; + app->executable_folded = + g_strdup (app_executable_folded); + + app->no_open_with = FALSE; + + app->user_specific = user_specific; + app->default_app = default_app; + + g_hash_table_insert (apps_by_id, + g_strdup (canonical_name_folded), + app); + } + + fallback_friendly_name = NULL; + success = g_win32_registry_key_get_value_w (appkey, + TRUE, + L"", + &vtype, + (void **) &fallback_friendly_name, + NULL, + NULL); + + if (success && vtype != G_WIN32_REGISTRY_VALUE_STR) + g_clear_pointer (&fallback_friendly_name, g_free); + + if (fallback_friendly_name && app->pretty_name == NULL) + { + app->pretty_name = g_wcsdup (fallback_friendly_name, -1); + g_clear_pointer (&app->pretty_name_u8, g_free); + app->pretty_name_u8 = g_utf16_to_utf8 (fallback_friendly_name, + -1, + NULL, + NULL, + NULL); + } + + friendly_name = NULL; + success = g_win32_registry_key_get_value_w (capabilities, + TRUE, + L"LocalizedString", + &vtype, + (void **) &friendly_name, + NULL, + NULL); + + if (success && (vtype != G_WIN32_REGISTRY_VALUE_STR || friendly_name[0] != L'@')) + g_clear_pointer (&friendly_name, g_free); + + friendly_name = read_resource_string (friendly_name); + + if (friendly_name && app->localized_pretty_name == NULL) + { + app->localized_pretty_name = g_wcsdup (friendly_name, -1); + g_clear_pointer (&app->localized_pretty_name_u8, g_free); + app->localized_pretty_name_u8 = g_utf16_to_utf8 (friendly_name, + -1, + NULL, + NULL, + NULL); + } + + description = NULL; + success = g_win32_registry_key_get_value_w (capabilities, + TRUE, + L"ApplicationDescription", + &vtype, + (void **) &description, + NULL, + NULL); + + if (success && vtype != G_WIN32_REGISTRY_VALUE_STR) + g_clear_pointer (&description, g_free); + + description = read_resource_string (description); + + if (description && app->description == NULL) + { + app->description = g_wcsdup (description, -1); + g_clear_pointer (&app->description_u8, g_free); + app->description_u8 = g_utf16_to_utf8 (description, -1, NULL, NULL, NULL); + } + + default_icon_key = g_win32_registry_key_get_child_w (appkey, + L"DefaultIcon", + NULL); + + icon_source = NULL; + + if (default_icon_key != NULL) + { + success = g_win32_registry_key_get_value_w (default_icon_key, + TRUE, + L"", + &vtype, + (void **) &icon_source, + NULL, + NULL); + + if (success && vtype != G_WIN32_REGISTRY_VALUE_STR) + g_clear_pointer (&icon_source, g_free); + + g_object_unref (default_icon_key); + } + + if (icon_source == NULL) + { + success = g_win32_registry_key_get_value_w (capabilities, + TRUE, + L"ApplicationIcon", + &vtype, + (void **) &icon_source, + NULL, + NULL); + + if (success && vtype != G_WIN32_REGISTRY_VALUE_STR) + g_clear_pointer (&icon_source, g_free); + } + + if (icon_source && app->icon == NULL) + { + gchar *name = g_utf16_to_utf8 (icon_source, -1, NULL, NULL, NULL); + app->icon = g_themed_icon_new (name); + g_free (name); + } + + narrow_application_name = NULL; + success = g_win32_registry_key_get_value_w (capabilities, + TRUE, + L"ApplicationName", + &vtype, + (void **) &narrow_application_name, + NULL, + NULL); + + if (success && vtype != G_WIN32_REGISTRY_VALUE_STR) + g_clear_pointer (&narrow_application_name, g_free); + + narrow_application_name = read_resource_string (narrow_application_name); + + /* TODO: do something with the narrow name. Maybe make a kind of sub-app? + * Narrow name is a more precise name of the application in given context. + * I.e. Thunderbird's name is "Thunderbird", whereas its narrow name is + * "Thunderbird (news)" when registering it as a news client. + * Maybe we should consider applications with different narrow names as + * different applications altogether? + */ + + associations = g_win32_registry_key_get_child_w (capabilities, + L"FileAssociations", + NULL); + + if (associations != NULL) + { + GWin32RegistryValueIter iter; + + if (g_win32_registry_value_iter_init (&iter, associations, NULL)) + { + gunichar2 *file_extension; + gunichar2 *extension_handler; + gsize file_extension_len; + gsize extension_handler_size; + GWin32RegistryValueType value_type; + + while (g_win32_registry_value_iter_next (&iter, TRUE, NULL)) + { + GWin32AppInfoHandler *handler_rec; + GWin32AppInfoHandler *handler_rec_in_ext; + GWin32AppInfoFileExtension *ext; + gunichar2 *program_command; + gunichar2 *proxy_id; + gunichar2 *proxy_command; + GWin32RegistryKey *program_key; + GWin32RegistryKey *proxy_key; + gchar *program_id_u8; + gchar *program_id_folded; + gchar *file_extension_u8; + gchar *file_extension_folded; + + if ((!g_win32_registry_value_iter_get_value_type (&iter, + &value_type, + NULL)) || + (value_type != G_WIN32_REGISTRY_VALUE_STR) || + (!g_win32_registry_value_iter_get_name_w (&iter, + &file_extension, + &file_extension_len, + NULL)) || + (file_extension_len <= 0) || + (file_extension[0] != L'.') || + (!g_win32_registry_value_iter_get_data_w (&iter, TRUE, + (void **) &extension_handler, + &extension_handler_size, + NULL)) || + (extension_handler_size < sizeof (gunichar2)) || + (extension_handler[0] == L'\0')) + continue; + + if (!follow_class_chain_to_handler (extension_handler, + extension_handler_size, + &program_command, + &program_key, + &proxy_id, + &proxy_command, + &proxy_key, + &program_id_u8, + &program_id_folded)) + continue; + + handler_rec = g_hash_table_lookup (handlers, + program_id_folded); + + if (handler_rec == NULL) + { + handler_rec = g_object_new (G_TYPE_WIN32_APPINFO_HANDLER, NULL); + + handler_rec->proxy_key = proxy_key; + handler_rec->key = program_key; + handler_rec->handler_id = + g_wcsdup (extension_handler,extension_handler_size); + handler_rec->handler_id_folded = + g_strdup (program_id_folded); + handler_rec->handler_command = + program_command ? g_wcsdup (program_command, -1) : NULL; + handler_rec->proxy_id = + proxy_id ? g_wcsdup (proxy_id, -1) : NULL; + handler_rec->proxy_command = + proxy_command ? g_wcsdup (proxy_command, -1) : NULL; + extract_executable (proxy_command ? proxy_command : program_command, + &handler_rec->executable, + &handler_rec->executable_basename, + &handler_rec->executable_folded, + NULL); + read_handler_icon (proxy_key, + program_key, + &handler_rec->icon); + g_hash_table_insert (handlers, + g_strdup (program_id_folded), + handler_rec); + } + else + { + g_clear_object (&program_key); + g_clear_object (&proxy_key); + } + + if (utf8_and_fold (file_extension, + &file_extension_u8, + &file_extension_folded)) + { + ext = g_hash_table_lookup (extensions, + file_extension_folded); + + if (ext == NULL) + { + ext = g_object_new (G_TYPE_WIN32_APPINFO_FILE_EXTENSION, NULL); + + ext->extension = g_wcsdup (file_extension, -1); + ext->extension_u8 = g_strdup (file_extension_u8); + g_hash_table_insert (extensions, g_strdup (file_extension_folded), ext); + } + + handler_rec_in_ext = + g_hash_table_lookup (ext->handlers, + program_id_folded); + + if (handler_rec_in_ext == NULL) + { + if (ext->chosen_handler == NULL) + g_hash_table_insert (ext->handlers, + g_strdup (program_id_folded), + g_object_ref (handler_rec)); + else if (ext->chosen_handler->handler_id_folded && + strcmp (ext->chosen_handler->handler_id_folded, + program_id_folded) != 0) + g_hash_table_insert (ext->handlers, + g_strdup (program_id_folded), + g_object_ref (handler_rec)); + } + + handler_rec_in_ext = + g_hash_table_lookup (app->supported_exts, + file_extension_folded); + + if (handler_rec_in_ext == NULL) + g_hash_table_insert (app->supported_exts, + g_strdup (file_extension_folded), + g_object_ref (handler_rec)); + + g_free (file_extension_u8); + g_free (file_extension_folded); + } + + g_free (program_id_u8); + g_free (program_id_folded); + g_free (program_command); + g_free (proxy_id); + g_free (proxy_command); + } + + g_win32_registry_value_iter_clear (&iter); + } + + g_object_unref (associations); + } + + associations = g_win32_registry_key_get_child_w (capabilities, L"URLAssociations", NULL); + + if (associations != NULL) + { + GWin32RegistryValueIter iter; + + if (g_win32_registry_value_iter_init (&iter, associations, NULL)) + { + gunichar2 *url_schema; + gunichar2 *schema_handler; + gsize url_schema_len; + gsize schema_handler_size; + GWin32RegistryValueType value_type; + + while (g_win32_registry_value_iter_next (&iter, TRUE, NULL)) + { + GWin32AppInfoHandler *handler_rec; + GWin32AppInfoHandler *handler_rec_in_url; + GWin32AppInfoURLSchema *schema; + gunichar2 *program_command; + gunichar2 *proxy_id; + gunichar2 *proxy_command; + GWin32RegistryKey *program_key; + GWin32RegistryKey *proxy_key; + gchar *program_id_u8; + gchar *program_id_folded; + gchar *schema_u8; + gchar *schema_folded; + + if ((!g_win32_registry_value_iter_get_value_type (&iter, + &value_type, + NULL)) || + ((value_type != G_WIN32_REGISTRY_VALUE_STR) && + (value_type != G_WIN32_REGISTRY_VALUE_EXPAND_STR)) || + (!g_win32_registry_value_iter_get_name_w (&iter, + &url_schema, + &url_schema_len, + NULL)) || + (url_schema_len <= 0) || + (url_schema[0] == L'\0') || + (!g_win32_registry_value_iter_get_data_w (&iter, TRUE, + (void **) &schema_handler, + &schema_handler_size, + NULL)) || + (schema_handler_size < sizeof (gunichar2)) || + (schema_handler[0] == L'\0')) + continue; + + if (!follow_class_chain_to_handler (schema_handler, + schema_handler_size, + &program_command, + &program_key, + &proxy_id, + &proxy_command, + &proxy_key, + &program_id_u8, + &program_id_folded)) + continue; + + + handler_rec = g_hash_table_lookup (handlers, program_id_folded); + + if (handler_rec == NULL) + { + handler_rec = g_object_new (G_TYPE_WIN32_APPINFO_HANDLER, NULL); + + handler_rec->proxy_key = proxy_key; + handler_rec->key = program_key; + handler_rec->handler_id = + g_wcsdup (schema_handler, schema_handler_size); + handler_rec->handler_id_folded = + g_strdup (program_id_folded); + handler_rec->handler_command = program_command ? + g_wcsdup (program_command, -1) : NULL; + handler_rec->proxy_id = + proxy_id ? g_wcsdup (proxy_id, -1) : NULL; + handler_rec->proxy_command = + proxy_command ? g_wcsdup (proxy_command, -1) : NULL; + extract_executable (proxy_command ? proxy_command : program_command, + &handler_rec->executable, + &handler_rec->executable_basename, + &handler_rec->executable_folded, + NULL); + read_handler_icon (proxy_key, + program_key, + &handler_rec->icon); + g_hash_table_insert (handlers, + g_strdup (program_id_folded), + handler_rec); + } + else + { + g_clear_object (&program_key); + g_clear_object (&proxy_key); + } + + if (utf8_and_fold (url_schema, + &schema_u8, + &schema_folded)) + { + schema = g_hash_table_lookup (urls, + schema_folded); + + if (schema == NULL) + { + schema = g_object_new (G_TYPE_WIN32_APPINFO_URL_SCHEMA, NULL); + + schema->schema = g_wcsdup (url_schema, -1); + schema->schema_u8 = g_strdup (schema_u8); + schema->schema_folded = + g_strdup (schema_folded); + g_hash_table_insert (urls, + g_strdup (schema_folded), + schema); + } + + handler_rec_in_url = + g_hash_table_lookup (schema->handlers, + program_id_folded); + + if (handler_rec_in_url == NULL) + g_hash_table_insert (schema->handlers, + g_strdup (program_id_folded), + g_object_ref (handler_rec)); + + handler_rec_in_url = + g_hash_table_lookup (app->supported_urls, + schema_folded); + + if (handler_rec_in_url == NULL) + g_hash_table_insert (app->supported_urls, + g_strdup (schema_folded), + g_object_ref (handler_rec)); + + g_free (schema_u8); + g_free (schema_folded); + } + + g_free (program_id_u8); + g_free (program_id_folded); + g_free (program_command); + g_free (proxy_id); + g_free (proxy_command); + } + + g_win32_registry_value_iter_clear (&iter); + } + + g_object_unref (associations); + } + + g_clear_pointer (&app_executable, g_free); + g_clear_pointer (&app_executable_folded, g_free); + g_clear_pointer (&fallback_friendly_name, g_free); + g_clear_pointer (&description, g_free); + g_clear_pointer (&icon_source, g_free); + g_clear_pointer (&narrow_application_name, g_free); + g_clear_pointer (&shell_open_command, g_free); + + g_object_unref (appkey); + g_object_unref (shell_open_command_key); + g_object_unref (capabilities); + g_free (canonical_name_u8); + g_free (canonical_name_folded); + g_free (app_key_path); +} + +static void +read_urls (GWin32RegistryKey *url_associations) +{ + GWin32RegistrySubkeyIter url_iter; + gunichar2 *url_schema; + gsize url_schema_len; + + if (url_associations == NULL) + return; + + if (!g_win32_registry_subkey_iter_init (&url_iter, url_associations, NULL)) + return; + + while (g_win32_registry_subkey_iter_next (&url_iter, TRUE, NULL)) + { + if (!g_win32_registry_subkey_iter_get_name_w (&url_iter, + &url_schema, + &url_schema_len, + NULL)) + continue; + + get_url_association (url_schema); + } + + g_win32_registry_subkey_iter_clear (&url_iter); +} + +static void +read_exeapps (void) +{ + GWin32RegistryKey *applications_key; + GWin32RegistrySubkeyIter app_iter; + gunichar2 *app_exe_basename; + gsize app_exe_basename_len; + + applications_key = + g_win32_registry_key_new_w (L"HKEY_CLASSES_ROOT\\Applications", NULL); + + if (applications_key == NULL) + return; + + if (!g_win32_registry_subkey_iter_init (&app_iter, applications_key, NULL)) + { + g_object_unref (applications_key); + return; + } + + while (g_win32_registry_subkey_iter_next (&app_iter, TRUE, NULL)) + { + GWin32RegistryKey *incapable_app; + gunichar2 *friendly_app_name; + gboolean success; + gboolean no_open_with; + GWin32RegistryValueType vtype; + GWin32RegistryKey *default_icon_key; + gunichar2 *icon_source; + GIcon *icon = NULL; + gchar *appexe; + gchar *appexe_basename; + gchar *appexe_folded; + gchar *appexe_folded_basename; + GWin32AppInfoApplication *app; + GWin32RegistryKey *shell_open_command_key; + gunichar2 *shell_open_command; + GWin32RegistryKey *supported_key; + + if (!g_win32_registry_subkey_iter_get_name_w (&app_iter, + &app_exe_basename, + &app_exe_basename_len, + NULL)) + continue; + + incapable_app = + g_win32_registry_key_get_child_w (applications_key, + app_exe_basename, + NULL); + + if (incapable_app == NULL) + continue; + + extract_executable (app_exe_basename, + &appexe, + &appexe_basename, + &appexe_folded, + &appexe_folded_basename); + + shell_open_command_key = + g_win32_registry_key_get_child_w (incapable_app, + L"shell\\open\\command", + NULL); + + shell_open_command = NULL; + + if (shell_open_command_key != NULL) + { + success = g_win32_registry_key_get_value_w (shell_open_command_key, + TRUE, + L"", + &vtype, + (gpointer *) &shell_open_command, + NULL, + NULL); + + if (success && vtype != G_WIN32_REGISTRY_VALUE_STR) + { + g_clear_pointer (&shell_open_command, g_free); + } + + g_object_unref (shell_open_command_key); + } + + friendly_app_name = NULL; + success = g_win32_registry_key_get_value_w (incapable_app, + TRUE, + L"FriendlyAppName", + &vtype, + (void **) &friendly_app_name, + NULL, + NULL); + + if (success && vtype != G_WIN32_REGISTRY_VALUE_STR) + g_clear_pointer (&friendly_app_name, g_free); + + friendly_app_name = read_resource_string (friendly_app_name); + + no_open_with = FALSE; + success = g_win32_registry_key_get_value_w (incapable_app, + TRUE, + L"NoOpenWith", + &vtype, + NULL, + NULL, + NULL); + + if (success) + no_open_with = TRUE; + + default_icon_key = + g_win32_registry_key_get_child_w (incapable_app, + L"DefaultIcon", + NULL); + + icon_source = NULL; + + if (default_icon_key != NULL) + { + success = + g_win32_registry_key_get_value_w (default_icon_key, + TRUE, + L"", + &vtype, + (void **) &icon_source, + NULL, + NULL); + + if (success && vtype != G_WIN32_REGISTRY_VALUE_STR) + g_clear_pointer (&icon_source, g_free); + + g_object_unref (default_icon_key); + } + + if (icon_source) + { + gchar *name = g_utf16_to_utf8 (icon_source, -1, NULL, NULL, NULL); + icon = g_themed_icon_new (name); + g_free (name); + } + + app = g_hash_table_lookup (apps_by_exe, appexe_folded_basename); + + if (app == NULL) + { + app = g_object_new (G_TYPE_WIN32_APPINFO_APPLICATION, NULL); + + app->command = + shell_open_command ? g_wcsdup (shell_open_command, -1) : NULL; + + if (shell_open_command) + app->command_u8 = g_utf16_to_utf8 (shell_open_command, -1, NULL, NULL, NULL); + + app->executable = g_strdup (appexe); + app->executable_basename = &app->executable[appexe_basename - appexe]; + app->executable_folded = g_strdup (appexe_folded); + + app->no_open_with = no_open_with; + + if (friendly_app_name) + { + app->localized_pretty_name = g_wcsdup (friendly_app_name, -1); + g_clear_pointer (&app->localized_pretty_name_u8, g_free); + app->localized_pretty_name_u8 = + g_utf16_to_utf8 (friendly_app_name, -1, NULL, NULL, NULL); + } + + if (icon) + app->icon = g_object_ref (icon); + + app->user_specific = FALSE; + app->default_app = FALSE; + + g_hash_table_insert (apps_by_exe, + g_strdup (appexe_folded_basename), + app); + } + + supported_key = + g_win32_registry_key_get_child_w (incapable_app, + L"SupportedTypes", + NULL); + + if (supported_key) + { + GWin32RegistryValueIter sup_iter; + if (g_win32_registry_value_iter_init (&sup_iter, supported_key, NULL)) + { + gunichar2 *ext_name; + gsize ext_name_len; + + while (g_win32_registry_value_iter_next (&sup_iter, TRUE, NULL)) + { + gchar *ext_u8; + gchar *ext_folded; + GWin32AppInfoFileExtension *file_extn; + gboolean file_ext_known; + + if ((!g_win32_registry_value_iter_get_name_w (&sup_iter, + &ext_name, + &ext_name_len, + NULL)) || + (ext_name_len <= 0) || + (ext_name[0] != L'.') || + (!utf8_and_fold (ext_name, + &ext_u8, + &ext_folded))) + continue; + + file_extn = NULL; + file_ext_known = + g_hash_table_lookup_extended (extensions, + ext_folded, + NULL, + (void **) &file_extn); + + if (!file_ext_known) + { + file_extn = + g_object_new (G_TYPE_WIN32_APPINFO_FILE_EXTENSION, NULL); + file_extn->extension = g_wcsdup (ext_name, -1); + file_extn->extension_u8 = g_strdup (ext_u8); + g_hash_table_insert (extensions, + g_strdup (ext_folded), + file_extn); + } + + g_hash_table_insert (file_extn->other_apps, + g_strdup (appexe_folded), + g_object_ref (app)); + + g_free (ext_u8); + g_free (ext_folded); + } + + g_win32_registry_value_iter_clear (&sup_iter); + } + + g_object_unref (supported_key); + } + + + g_free (appexe); + g_free (appexe_folded); + g_free (shell_open_command); + g_free (friendly_app_name); + g_free (icon_source); + + g_clear_object (&icon); + g_clear_object (&incapable_app); + } + + g_win32_registry_subkey_iter_clear (&app_iter); + g_object_unref (applications_key); +} + + +static void +read_exts (GWin32RegistryKey *file_exts) +{ + GWin32RegistrySubkeyIter ext_iter; + gunichar2 *file_extension; + gsize file_extension_len; + + if (file_exts == NULL) + return; + + if (!g_win32_registry_subkey_iter_init (&ext_iter, file_exts, NULL)) + return; + + while (g_win32_registry_subkey_iter_next (&ext_iter, TRUE, NULL)) + { + if (!g_win32_registry_subkey_iter_get_name_w (&ext_iter, + &file_extension, + &file_extension_len, + NULL)) + continue; + + get_file_ext (file_extension); + } + + g_win32_registry_subkey_iter_clear (&ext_iter); +} + +static void +read_class_extension (GWin32RegistryKey *classes_root, + gunichar2 *class_name, + gsize class_name_len) +{ + gchar *ext_u8; + gchar *ext_folded; + GWin32AppInfoFileExtension *file_extn; + GWin32AppInfoHandler *handler_rec; + GWin32AppInfoHandler *handler_rec_in_ext; + GWin32RegistryKey *class_key; + gsize program_id_size; + gunichar2 *program_id; + gunichar2 *proxy_id; + GWin32RegistryKey *program_key; + GWin32RegistryKey *proxy_key; + gunichar2 *program_command; + gunichar2 *proxy_command; + + class_key = g_win32_registry_key_get_child_w (classes_root, class_name, NULL); + + if (class_key == NULL) + return; + + program_id = class_name; + program_id_size = (class_name_len + 1) * sizeof (gunichar2); + program_key = proxy_key = NULL; + program_command = proxy_command = NULL; + + if (!follow_class_chain_to_handler (program_id, + program_id_size, + &program_command, + &program_key, + &proxy_id, + &proxy_command, + &proxy_key, + &ext_u8, + &ext_folded)) + { + g_object_unref (class_key); + return; + } + + + file_extn = g_hash_table_lookup (extensions, ext_folded); + handler_rec = g_hash_table_lookup (handlers, ext_folded); + + if (file_extn == NULL) + { + file_extn = g_object_new (G_TYPE_WIN32_APPINFO_FILE_EXTENSION, NULL); + file_extn->extension = g_wcsdup (class_name, -1); + file_extn->extension_u8 = g_strdup (ext_u8); + g_hash_table_insert (extensions, g_strdup (ext_folded), file_extn); + } + + if (handler_rec == NULL) + { + handler_rec = g_object_new (G_TYPE_WIN32_APPINFO_HANDLER, NULL); + + handler_rec->proxy_key = proxy_key; + handler_rec->key = program_key; + handler_rec->handler_id = g_wcsdup (program_id, program_id_size); + handler_rec->handler_id_folded = g_strdup (ext_folded); + handler_rec->handler_command = + program_command ? g_wcsdup (program_command, -1) : NULL; + handler_rec->proxy_id = proxy_id ? g_wcsdup (proxy_id, -1) : NULL; + handler_rec->proxy_command = + proxy_command ? g_wcsdup (proxy_command, -1) : NULL; + extract_executable (proxy_command ? proxy_command : program_command, + &handler_rec->executable, + &handler_rec->executable_basename, + &handler_rec->executable_folded, + NULL); + read_handler_icon (proxy_key, program_key, &handler_rec->icon); + g_hash_table_insert (handlers, + g_strdup (ext_folded), + handler_rec); + } + else + { + g_clear_object (&program_key); + g_clear_object (&proxy_key); + } + + handler_rec_in_ext = g_hash_table_lookup (file_extn->handlers, + ext_folded); + + if (file_extn->chosen_handler == NULL) + g_hash_table_insert (file_extn->handlers, + g_strdup (ext_folded), + g_object_ref (handler_rec)); + else if (handler_rec_in_ext == NULL) + { + if (file_extn->chosen_handler->handler_id_folded && + strcmp (file_extn->chosen_handler->handler_id_folded, + ext_folded) != 0) + g_hash_table_insert (file_extn->handlers, + g_strdup (ext_folded), + g_object_ref (handler_rec)); + } + + g_free (program_command); + g_free (proxy_id); + g_free (proxy_command); + g_free (ext_u8); + g_free (ext_folded); + g_object_unref (class_key); +} + +static void +read_class_url (GWin32RegistryKey *classes_root, + gunichar2 *class_name, + gsize class_name_len) +{ + GWin32RegistryKey *class_key; + gboolean success; + GWin32RegistryValueType vtype; + GWin32AppInfoURLSchema *schema_rec; + GWin32AppInfoHandler *handler_rec; + GWin32AppInfoHandler *handler_rec_in_url; + gunichar2 *program_id; + gsize program_id_size; + gunichar2 *program_command; + gunichar2 *proxy_id; + gunichar2 *proxy_command; + gchar *program_id_u8; + gchar *program_id_folded; + GWin32RegistryKey *program_key; + GWin32RegistryKey *proxy_key; + + class_key = g_win32_registry_key_get_child_w (classes_root, class_name, NULL); + + if (class_key == NULL) + return; + + success = g_win32_registry_key_get_value_w (class_key, + TRUE, + L"URL Protocol", + &vtype, + NULL, + NULL, + NULL); + + if (!success || + vtype != G_WIN32_REGISTRY_VALUE_STR) + { + g_object_unref (class_key); + return; + } + + program_id = class_name; + program_id_size = (class_name_len + 1) * sizeof (gunichar2); + proxy_key = program_key = NULL; + program_command = proxy_id = proxy_command = NULL; + + if (!follow_class_chain_to_handler (program_id, + program_id_size, + &program_command, + &program_key, + &proxy_id, + &proxy_command, + &proxy_key, + &program_id_u8, + &program_id_folded)) + { + g_object_unref (class_key); + return; + } + + schema_rec = g_hash_table_lookup (urls, program_id_folded); + handler_rec = g_hash_table_lookup (handlers, program_id_folded); + + if (handler_rec == NULL) + { + handler_rec = g_object_new (G_TYPE_WIN32_APPINFO_HANDLER, NULL); + + handler_rec->proxy_key = proxy_key; + handler_rec->key = program_key; + handler_rec->handler_id = g_wcsdup (program_id, program_id_size); + handler_rec->handler_id_folded = + g_strdup (program_id_folded); + handler_rec->handler_command = + program_command ? g_wcsdup (program_command, -1) : NULL; + handler_rec->proxy_id = proxy_id ? g_wcsdup (proxy_id, -1) : NULL; + handler_rec->proxy_command = + proxy_command ? g_wcsdup (proxy_command, -1) : NULL; + extract_executable (proxy_command ? proxy_command : program_command, + &handler_rec->executable, + &handler_rec->executable_basename, + &handler_rec->executable_folded, + NULL); + read_handler_icon (proxy_key, program_key, &handler_rec->icon); + g_hash_table_insert (handlers, + g_strdup (program_id_folded), + handler_rec); + } + else + { + g_clear_object (&program_key); + g_clear_object (&proxy_key); + } + + if (schema_rec == NULL) + { + schema_rec = g_object_new (G_TYPE_WIN32_APPINFO_URL_SCHEMA, NULL); + schema_rec->schema = g_wcsdup (class_name, -1); + schema_rec->schema_u8 = g_strdup (program_id_u8); + schema_rec->schema_folded = g_strdup (program_id_folded); + schema_rec->chosen_handler = g_object_ref (handler_rec); + g_hash_table_insert (urls, + g_strdup (program_id_folded), + schema_rec); + } + + if (schema_rec->chosen_handler == NULL) + schema_rec->chosen_handler = g_object_ref (handler_rec); + + handler_rec_in_url = g_hash_table_lookup (schema_rec->handlers, + program_id_folded); + + if (handler_rec_in_url == NULL && schema_rec->chosen_handler != handler_rec) + g_hash_table_insert (schema_rec->handlers, + g_strdup (program_id_folded), + g_object_ref (handler_rec)); + + g_free (program_id_u8); + g_free (program_id_folded); + g_free (program_command); + g_free (proxy_id); + g_free (proxy_command); + g_object_unref (class_key); +} + +static void +read_classes (GWin32RegistryKey *classes_root) +{ + GWin32RegistrySubkeyIter class_iter; + gunichar2 *class_name; + gsize class_name_len; + + if (classes_root == NULL) + return; + + if (!g_win32_registry_subkey_iter_init (&class_iter, classes_root, NULL)) + return; + + while (g_win32_registry_subkey_iter_next (&class_iter, TRUE, NULL)) + { + if ((!g_win32_registry_subkey_iter_get_name_w (&class_iter, + &class_name, + &class_name_len, + NULL)) || + (class_name_len <= 1)) + continue; + + if (class_name[0] == L'.') + read_class_extension (classes_root, class_name, class_name_len); + else + { + gsize i; + + for (i = 0; i < class_name_len; i++) + if (!iswalpha (class_name[i])) + break; + + if (i == class_name_len) + read_class_url (classes_root, class_name, class_name_len); + } + } + + g_win32_registry_subkey_iter_clear (&class_iter); +} + +static void +link_chosen_handlers (void) +{ + GHashTableIter iter; + GHashTableIter handler_iter; + gchar *schema_folded; + GWin32AppInfoURLSchema *schema; + gchar *handler_id_folded; + GWin32AppInfoHandler *handler; + gchar *ext_folded; + GWin32AppInfoFileExtension *ext; + + g_hash_table_iter_init (&iter, urls); + + while (g_hash_table_iter_next (&iter, + (gpointer *) &schema_folded, + (gpointer *) &schema)) + { + if (schema->chosen_handler != NULL) + continue; + + g_hash_table_iter_init (&handler_iter, schema->handlers); + + while (g_hash_table_iter_next (&handler_iter, + (gpointer *) &handler_id_folded, + (gpointer *) &handler)) + { + gchar *proxy_id_folded; + + if (schema->chosen_handler != NULL) + break; + + if (strcmp (handler_id_folded, schema_folded) != 0) + continue; + + if (handler->proxy_command && + handler->proxy_id && + utf8_and_fold (handler->proxy_id, + NULL, + &proxy_id_folded)) + { + GWin32AppInfoHandler *proxy; + + proxy = g_hash_table_lookup (handlers, proxy_id_folded); + + if (proxy) + { + schema->chosen_handler = g_object_ref (proxy); + g_debug ("Linking schema %s to proxy handler %c ? \"%S\" : %S\n", + schema->schema_u8, + schema->chosen_handler->proxy_id ? 'P' : 'T', + schema->chosen_handler->proxy_id ? schema->chosen_handler->proxy_id : schema->chosen_handler->handler_id, + schema->chosen_handler->proxy_command ? schema->chosen_handler->proxy_command : schema->chosen_handler->handler_command); + } + + g_free (proxy_id_folded); + } + + if (schema->chosen_handler == NULL) + { + schema->chosen_handler = g_object_ref (handler); + g_debug ("Linking schema %s to handler %c ? \"%S\" : %S\n", + schema->schema_u8, + schema->chosen_handler->proxy_id ? 'P' : 'T', + schema->chosen_handler->proxy_id ? schema->chosen_handler->proxy_id : schema->chosen_handler->handler_id, + schema->chosen_handler->proxy_command ? schema->chosen_handler->proxy_command : schema->chosen_handler->handler_command); + } + } + } + + g_hash_table_iter_init (&iter, extensions); + + while (g_hash_table_iter_next (&iter, + (gpointer *) &ext_folded, + (gpointer *) &ext)) + { + if (ext->chosen_handler != NULL) + continue; + + g_hash_table_iter_init (&handler_iter, ext->handlers); + + while (g_hash_table_iter_next (&handler_iter, + (gpointer *) &handler_id_folded, + (gpointer *) &handler)) + { + gchar *proxy_id_folded; + + if (ext->chosen_handler != NULL) + break; + + if (strcmp (handler_id_folded, ext_folded) != 0) + continue; + + if (handler->proxy_command && + handler->proxy_id && + utf8_and_fold (handler->proxy_id, + NULL, + &proxy_id_folded)) + { + GWin32AppInfoHandler *proxy; + + proxy = g_hash_table_lookup (handlers, proxy_id_folded); + + if (proxy) + { + ext->chosen_handler = g_object_ref (proxy); + g_debug ("Linking ext %s to proxy handler %c ? \"%S\" : %S\n", + ext->extension_u8, + ext->chosen_handler->proxy_id ? 'P' : 'T', + ext->chosen_handler->proxy_id ? ext->chosen_handler->proxy_id : ext->chosen_handler->handler_id, + ext->chosen_handler->proxy_command ? ext->chosen_handler->proxy_command : ext->chosen_handler->handler_command); + } + + g_free (proxy_id_folded); + } + + if (ext->chosen_handler == NULL) + { + ext->chosen_handler = g_object_ref (handler); + g_debug ("Linking ext %s to handler %c ? \"%S\" : %S\n", + ext->extension_u8, + ext->chosen_handler->proxy_id ? 'P' : 'T', + ext->chosen_handler->proxy_id ? ext->chosen_handler->proxy_id : ext->chosen_handler->handler_id, + ext->chosen_handler->proxy_command ? ext->chosen_handler->proxy_command : ext->chosen_handler->handler_command); + } + } + } +} + +static void +link_handlers_to_registered_apps (void) +{ + GHashTableIter iter; + GHashTableIter sup_iter; + gchar *app_id_folded; + GWin32AppInfoApplication *app; + gchar *schema_folded; + GWin32AppInfoURLSchema *schema; + gchar *ext_folded; + GWin32AppInfoFileExtension *ext; + gsize unhandled_exts; + + g_hash_table_iter_init (&sup_iter, urls); + while (g_hash_table_iter_next (&sup_iter, + (gpointer *) &schema_folded, + (gpointer *) &schema)) + { + if (schema->chosen_handler == NULL) + g_debug ("WARNING: schema %s has no chosen handler\n", schema->schema_u8); + } + unhandled_exts= 0; + g_hash_table_iter_init (&sup_iter, extensions); + while (g_hash_table_iter_next (&sup_iter, + (gpointer *) &ext_folded, + (gpointer *) &ext)) + { + if (ext->chosen_handler == NULL) + { + g_debug ("WARNING: extension %s has no chosen handler\n", + ext->extension_u8); + unhandled_exts += 1; + } + } + + g_hash_table_iter_init (&iter, apps_by_id); + while (g_hash_table_iter_next (&iter, + (gpointer *) &app_id_folded, + (gpointer *) &app)) + { + if (app->supported_urls) + { + GWin32AppInfoHandler *handler; + + g_hash_table_iter_init (&sup_iter, app->supported_urls); + while (g_hash_table_iter_next (&sup_iter, + (gpointer *) &schema_folded, + (gpointer *) &handler)) + { + schema = g_hash_table_lookup (urls, schema_folded); + + g_assert (schema != NULL); + + if (schema->chosen_handler != NULL && + schema->chosen_handler->app == NULL) + { + schema->chosen_handler->app = g_object_ref (app); + g_debug ("Linking %S", app->canonical_name); + + if (app->localized_pretty_name) + g_debug (" '%S'", app->localized_pretty_name); + else if (app->pretty_name) + g_debug (" '%S'", app->pretty_name); + else + g_debug (" '%s'", app->executable); + + if (app->command) + g_debug (" %S", app->command); + + g_debug ("\n to schema %s handler %c ? \"%S\" : %S\n", + schema->schema_u8, + schema->chosen_handler->proxy_id ? 'P' : 'T', + schema->chosen_handler->proxy_id ? schema->chosen_handler->proxy_id : schema->chosen_handler->handler_id, + schema->chosen_handler->proxy_command ? schema->chosen_handler->proxy_command : schema->chosen_handler->handler_command); + } + } + + g_hash_table_iter_init (&sup_iter, app->supported_urls); + while (g_hash_table_iter_next (&sup_iter, + (gpointer *) &schema_folded, + (gpointer *) &handler)) + { + if (handler->app == NULL) + { + handler->app = g_object_ref (app); + g_debug ("Linking %S", app->canonical_name); + + if (app->localized_pretty_name) + g_debug (" '%S'", app->localized_pretty_name); + else if (app->pretty_name) + g_debug (" '%S'", app->pretty_name); + else + g_debug (" '%s'", app->executable); + + if (app->command) + g_debug (" %S", app->command); + + g_debug ("\n directly to schema handler to %c ? \"%S\" : %S\n", + handler->proxy_id ? 'P' : 'T', + handler->proxy_id ? handler->proxy_id : handler->handler_id, + handler->proxy_command ? handler->proxy_command : handler->handler_command); + } + } + } + + if (app->supported_exts) + { + GWin32AppInfoHandler *handler; + + g_hash_table_iter_init (&sup_iter, app->supported_exts); + while (g_hash_table_iter_next (&sup_iter, + (gpointer *) &ext_folded, + (gpointer *) &handler)) + { + ext = g_hash_table_lookup (extensions, ext_folded); + + g_assert (ext != NULL); + + if (ext->chosen_handler != NULL && + ext->chosen_handler->app == NULL) + { + ext->chosen_handler->app = g_object_ref (app); + g_debug ("Linking %S", app->canonical_name); + + if (app->localized_pretty_name) + g_debug (" '%S'", app->localized_pretty_name); + else if (app->pretty_name) + g_debug (" '%S'", app->pretty_name); + else + g_debug (" '%s'", app->executable); + + if (app->command) + g_debug (" %S", app->command); + + g_debug ("\n to ext %s handler %c ? \"%S\" : %S\n", + ext->extension_u8, + ext->chosen_handler->proxy_id ? 'P' : 'T', + ext->chosen_handler->proxy_id ? ext->chosen_handler->proxy_id : ext->chosen_handler->handler_id, + ext->chosen_handler->proxy_command ? ext->chosen_handler->proxy_command : ext->chosen_handler->handler_command); + } + } + + g_hash_table_iter_init (&sup_iter, app->supported_exts); + while (g_hash_table_iter_next (&sup_iter, + (gpointer *) &ext_folded, + (gpointer *) &handler)) + { + if (handler->app == NULL) + { + handler->app = g_object_ref (app); + g_debug ("Linking %S", app->canonical_name); + + if (app->localized_pretty_name) + g_debug (" '%S'", app->localized_pretty_name); + else if (app->pretty_name) + g_debug (" '%S'", app->pretty_name); + else + g_debug (" '%s'", app->executable); + + if (app->command) + g_debug (" %S", app->command); + + g_debug ("\n directly to ext handler %c ? \"%S\" : %S\n", + handler->proxy_id ? 'P' : 'T', + handler->proxy_id ? handler->proxy_id : handler->handler_id, + handler->proxy_command ? handler->proxy_command : handler->handler_command); + } + } + } + } + + g_debug ("%" G_GSIZE_FORMAT "undefhandled extensions\n", unhandled_exts); + unhandled_exts= 0; + g_hash_table_iter_init (&sup_iter, extensions); + while (g_hash_table_iter_next (&sup_iter, + (gpointer *) &ext_folded, + (gpointer *) &ext)) + { + if (ext->chosen_handler == NULL) + { + g_debug ("WARNING: extension %s has no chosen handler\n", + ext->extension_u8); + unhandled_exts += 1; + } + } + g_debug ("%" G_GSIZE_FORMAT "undefhandled extensions\n", unhandled_exts); +} + +static void +link_handlers_to_unregistered_apps (void) +{ + GHashTableIter iter; + GHashTableIter app_iter; + GWin32AppInfoHandler *handler; + gchar *handler_id_fc; + GWin32AppInfoApplication *app; + gchar *canonical_name_fc; + gchar *appexe_fc_basename; + + g_hash_table_iter_init (&iter, handlers); + while (g_hash_table_iter_next (&iter, + (gpointer *) &handler_id_fc, + (gpointer *) &handler)) + { + gchar *hndexe_fc_basename; + + if ((handler->app != NULL) || + (handler->executable_folded == NULL)) + continue; + + hndexe_fc_basename = g_utf8_casefold (handler->executable_basename, -1); + + if (hndexe_fc_basename == NULL) + continue; + + g_hash_table_iter_init (&app_iter, apps_by_id); + + while (g_hash_table_iter_next (&app_iter, + (gpointer *) &canonical_name_fc, + (gpointer *) &app)) + { + if (app->executable_folded == NULL) + continue; + + if (strcmp (app->executable_folded, + handler->executable_folded) != 0) + continue; + + handler->app = app; + break; + } + + if (handler->app != NULL) + continue; + + g_hash_table_iter_init (&app_iter, apps_by_exe); + + while ((hndexe_fc_basename != NULL) && + (g_hash_table_iter_next (&app_iter, + (gpointer *) &appexe_fc_basename, + (gpointer *) &app))) + { + /* Use basename because apps_by_exe only has basenames */ + if (strcmp (hndexe_fc_basename, appexe_fc_basename) != 0) + continue; + + handler->app = app; + break; + } + + g_free (hndexe_fc_basename); + + if (handler->app == NULL) + g_debug ("WARNING: handler that runs %s has no corresponding app\n", + handler->executable); + } +} + + +static void +update_registry_data (void) +{ + guint i; + GPtrArray *capable_apps_keys; + GPtrArray *user_capable_apps_keys; + GPtrArray *priority_capable_apps_keys; + GWin32RegistryKey *url_associations; + GWin32RegistryKey *file_exts; + GWin32RegistryKey *classes_root; + DWORD collect_start, collect_end, alloc_end, capable_end, url_end, ext_end, exeapp_end, classes_end, postproc_end; + + url_associations = + g_win32_registry_key_new_w (L"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations", + NULL); + file_exts = + g_win32_registry_key_new_w (L"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts", + NULL); + classes_root = g_win32_registry_key_new_w (L"HKEY_CLASSES_ROOT", NULL); + + capable_apps_keys = g_ptr_array_new_with_free_func (g_free); + user_capable_apps_keys = g_ptr_array_new_with_free_func (g_free); + priority_capable_apps_keys = g_ptr_array_new_with_free_func (g_free); + + g_clear_pointer (&apps_by_id, g_hash_table_destroy); + g_clear_pointer (&apps_by_exe, g_hash_table_destroy); + g_clear_pointer (&urls, g_hash_table_destroy); + g_clear_pointer (&extensions, g_hash_table_destroy); + g_clear_pointer (&handlers, g_hash_table_destroy); + + collect_start = GetTickCount (); + collect_capable_apps_from_clients (capable_apps_keys, + priority_capable_apps_keys, + FALSE); + collect_capable_apps_from_clients (user_capable_apps_keys, + priority_capable_apps_keys, + TRUE); + collect_capable_apps_from_registered_apps (user_capable_apps_keys, + TRUE); + collect_capable_apps_from_registered_apps (capable_apps_keys, + FALSE); + collect_end = GetTickCount (); + + apps_by_id = + g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); + apps_by_exe = + g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); + urls = + g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); + extensions = + g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); + handlers = + g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); + alloc_end = GetTickCount (); + + for (i = 0; i < priority_capable_apps_keys->len; i++) + read_capable_app (g_ptr_array_index (priority_capable_apps_keys, i), + TRUE, + TRUE); + for (i = 0; i < user_capable_apps_keys->len; i++) + read_capable_app (g_ptr_array_index (user_capable_apps_keys, i), + TRUE, + FALSE); + for (i = 0; i < capable_apps_keys->len; i++) + read_capable_app (g_ptr_array_index (capable_apps_keys, i), + FALSE, + FALSE); + capable_end = GetTickCount (); + + read_urls (url_associations); + url_end = GetTickCount (); + read_exts (file_exts); + ext_end = GetTickCount (); + read_exeapps (); + exeapp_end = GetTickCount (); + read_classes (classes_root); + classes_end = GetTickCount (); + link_chosen_handlers (); + link_handlers_to_registered_apps (); + link_handlers_to_unregistered_apps (); + postproc_end = GetTickCount (); + + g_debug ("Collecting capable appnames: %lums\n" + "Allocating hashtables:...... %lums\n" + "Reading capable apps: %lums\n" + "Reading URL associations:... %lums\n" + "Reading extension assocs: %lums\n" + "Reading exe-only apps:...... %lums\n" + "Reading classes: %lums\n" + "Postprocessing:..............%lums\n" + "TOTAL: %lums\n", + collect_end - collect_start, + alloc_end - collect_end, + capable_end - alloc_end, + url_end - capable_end, + ext_end - url_end, + exeapp_end - ext_end, + classes_end - exeapp_end, + postproc_end - classes_end, + postproc_end - collect_start); + + g_clear_object (&classes_root); + g_clear_object (&url_associations); + g_clear_object (&file_exts); + g_ptr_array_free (capable_apps_keys, TRUE); + g_ptr_array_free (user_capable_apps_keys, TRUE); + g_ptr_array_free (priority_capable_apps_keys, TRUE); + + return; +} + +static void +watch_keys (void) +{ + if (url_associations_key) + g_win32_registry_key_watch (url_associations_key, + TRUE, + G_WIN32_REGISTRY_WATCH_NAME | + G_WIN32_REGISTRY_WATCH_ATTRIBUTES | + G_WIN32_REGISTRY_WATCH_VALUES, + NULL, + NULL, + NULL); + + if (file_exts_key) + g_win32_registry_key_watch (file_exts_key, + TRUE, + G_WIN32_REGISTRY_WATCH_NAME | + G_WIN32_REGISTRY_WATCH_ATTRIBUTES | + G_WIN32_REGISTRY_WATCH_VALUES, + NULL, + NULL, + NULL); + + if (user_clients_key) + g_win32_registry_key_watch (user_clients_key, + TRUE, + G_WIN32_REGISTRY_WATCH_NAME | + G_WIN32_REGISTRY_WATCH_ATTRIBUTES | + G_WIN32_REGISTRY_WATCH_VALUES, + NULL, + NULL, + NULL); + + if (system_clients_key) + g_win32_registry_key_watch (system_clients_key, + TRUE, + G_WIN32_REGISTRY_WATCH_NAME | + G_WIN32_REGISTRY_WATCH_ATTRIBUTES | + G_WIN32_REGISTRY_WATCH_VALUES, + NULL, + NULL, + NULL); + + if (applications_key) + g_win32_registry_key_watch (applications_key, + TRUE, + G_WIN32_REGISTRY_WATCH_NAME | + G_WIN32_REGISTRY_WATCH_ATTRIBUTES | + G_WIN32_REGISTRY_WATCH_VALUES, + NULL, + NULL, + NULL); + + if (user_registered_apps_key) + g_win32_registry_key_watch (user_registered_apps_key, + TRUE, + G_WIN32_REGISTRY_WATCH_NAME | + G_WIN32_REGISTRY_WATCH_ATTRIBUTES | + G_WIN32_REGISTRY_WATCH_VALUES, + NULL, + NULL, + NULL); + + if (system_registered_apps_key) + g_win32_registry_key_watch (system_registered_apps_key, + TRUE, + G_WIN32_REGISTRY_WATCH_NAME | + G_WIN32_REGISTRY_WATCH_ATTRIBUTES | + G_WIN32_REGISTRY_WATCH_VALUES, + NULL, + NULL, + NULL); + + if (classes_root_key) + g_win32_registry_key_watch (classes_root_key, + FALSE, + G_WIN32_REGISTRY_WATCH_NAME | + G_WIN32_REGISTRY_WATCH_ATTRIBUTES | + G_WIN32_REGISTRY_WATCH_VALUES, + NULL, + NULL, + NULL); +} + + +static void +g_win32_appinfo_init (void) +{ + static gsize initialized; + + if (g_once_init_enter (&initialized)) + { + url_associations_key = + g_win32_registry_key_new_w (L"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations", + NULL); + file_exts_key = + g_win32_registry_key_new_w (L"HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts", + NULL); + user_clients_key = + g_win32_registry_key_new_w (L"HKEY_CURRENT_USER\\Software\\Clients", + NULL); + system_clients_key = + g_win32_registry_key_new_w (L"HKEY_LOCAL_MACHINE\\Software\\Clients", + NULL); + applications_key = + g_win32_registry_key_new_w (L"HKEY_CLASSES_ROOT\\Applications", + NULL); + user_registered_apps_key = + g_win32_registry_key_new_w (L"HKEY_CURRENT_USER\\Software\\RegisteredApplications", + NULL); + system_registered_apps_key = + g_win32_registry_key_new_w (L"HKEY_LOCAL_MACHINE\\Software\\RegisteredApplications", + NULL); + classes_root_key = + g_win32_registry_key_new_w (L"HKEY_CLASSES_ROOT", + NULL); + + watch_keys (); + + update_registry_data (); + + g_once_init_leave (&initialized, TRUE); + } + + if ((url_associations_key && g_win32_registry_key_has_changed (url_associations_key)) || + (file_exts_key && g_win32_registry_key_has_changed (file_exts_key)) || + (user_clients_key && g_win32_registry_key_has_changed (user_clients_key)) || + (system_clients_key && g_win32_registry_key_has_changed (system_clients_key)) || + (applications_key && g_win32_registry_key_has_changed (applications_key)) || + (user_registered_apps_key && g_win32_registry_key_has_changed (user_registered_apps_key)) || + (system_registered_apps_key && g_win32_registry_key_has_changed (system_registered_apps_key)) || + (classes_root_key && g_win32_registry_key_has_changed (classes_root_key))) + { + G_LOCK (gio_win32_appinfo); + update_registry_data (); + watch_keys (); + G_UNLOCK (gio_win32_appinfo); + } +} + + +static void g_win32_app_info_iface_init (GAppInfoIface *iface); + +struct _GWin32AppInfo +{ + GObject parent_instance; + + /**/ + gchar **supported_types; + + GWin32AppInfoApplication *app; + + GWin32AppInfoHandler *handler; + + guint startup_notify : 1; +}; + +G_DEFINE_TYPE_WITH_CODE (GWin32AppInfo, g_win32_app_info, G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (G_TYPE_APP_INFO, + g_win32_app_info_iface_init)) + + +static void +g_win32_app_info_finalize (GObject *object) +{ + GWin32AppInfo *info; + + info = G_WIN32_APP_INFO (object); + + g_clear_pointer (&info->supported_types, g_free); + g_clear_object (&info->app); + g_clear_object (&info->handler); + + G_OBJECT_CLASS (g_win32_app_info_parent_class)->finalize (object); +} + +static void +g_win32_app_info_class_init (GWin32AppInfoClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->finalize = g_win32_app_info_finalize; +} + +static void +g_win32_app_info_init (GWin32AppInfo *local) +{ +} + +static GAppInfo * +g_win32_app_info_new_from_app (GWin32AppInfoApplication *app, + GWin32AppInfoHandler *handler) +{ + GWin32AppInfo *new_info; + GHashTableIter iter; + gpointer ext; + int i; + + new_info = g_object_new (G_TYPE_WIN32_APP_INFO, NULL); + + new_info->app = g_object_ref (app); + + g_win32_appinfo_init (); + G_LOCK (gio_win32_appinfo); + + i = 0; + g_hash_table_iter_init (&iter, new_info->app->supported_exts); + + while (g_hash_table_iter_next (&iter, &ext, NULL)) + { + if (ext) + i += 1; + } + + new_info->supported_types = g_malloc (sizeof (gchar *) * (i + 1)); + + i = 0; + g_hash_table_iter_init (&iter, new_info->app->supported_exts); + + while (g_hash_table_iter_next (&iter, &ext, NULL)) + { + if (!ext) + continue; + + new_info->supported_types[i] = (gchar *) ext; + i += 1; + } + + G_UNLOCK (gio_win32_appinfo); + + new_info->supported_types[i] = NULL; + + new_info->handler = handler ? g_object_ref (handler) : NULL; + + return G_APP_INFO (new_info); +} + + +static GAppInfo * +g_win32_app_info_dup (GAppInfo *appinfo) +{ + GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); + GWin32AppInfo *new_info; + + new_info = g_object_new (G_TYPE_WIN32_APP_INFO, NULL); + + if (info->app) + new_info->app = g_object_ref (info->app); + + if (info->handler) + new_info->handler = g_object_ref (info->handler); + + new_info->startup_notify = info->startup_notify; + + if (info->supported_types) + { + int i; + + for (i = 0; info->supported_types[i]; i++) + break; + + new_info->supported_types = g_malloc (sizeof (gchar *) * (i + 1)); + + for (i = 0; info->supported_types[i]; i++) + new_info->supported_types[i] = g_strdup (info->supported_types[i]); + + new_info->supported_types[i] = NULL; + } + + return G_APP_INFO (new_info); +} + +static gboolean +g_win32_app_info_equal (GAppInfo *appinfo1, + GAppInfo *appinfo2) +{ + GWin32AppInfo *info1 = G_WIN32_APP_INFO (appinfo1); + GWin32AppInfo *info2 = G_WIN32_APP_INFO (appinfo2); + + if (info1->app == NULL || + info2->app == NULL) + return info1 == info2; + + if (info1->app->canonical_name_folded != NULL && + info2->app->canonical_name_folded != NULL) + return (strcmp (info1->app->canonical_name_folded, + info2->app->canonical_name_folded)) == 0; + + if (info1->app->executable_folded != NULL && + info2->app->executable_folded != NULL) + return (strcmp (info1->app->executable_folded, + info2->app->executable_folded)) == 0; + + return info1->app == info2->app; +} + +static const char * +g_win32_app_info_get_id (GAppInfo *appinfo) +{ + GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); + + if (info->app == NULL) + return NULL; + + if (info->app->canonical_name_u8) + return info->app->canonical_name_u8; + + if (info->app->executable_basename) + return info->app->executable_basename; + + return NULL; +} + +static const char * +g_win32_app_info_get_name (GAppInfo *appinfo) +{ + GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); + + if (info->app && info->app->canonical_name_u8) + return info->app->canonical_name_u8; + else + return P_("Unnamed"); +} + +static const char * +g_win32_app_info_get_display_name (GAppInfo *appinfo) +{ + GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); + + if (info->app) + { + if (info->app->localized_pretty_name_u8) + return info->app->localized_pretty_name_u8; + else if (info->app->pretty_name_u8) + return info->app->pretty_name_u8; + } + + return g_win32_app_info_get_name (appinfo); +} + +static const char * +g_win32_app_info_get_description (GAppInfo *appinfo) +{ + GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); + + if (info->app == NULL) + return NULL; + + return info->app->description_u8; +} + +static const char * +g_win32_app_info_get_executable (GAppInfo *appinfo) +{ + GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); + + if (info->app == NULL) + return NULL; + + return info->app->executable; +} + +static const char * +g_win32_app_info_get_commandline (GAppInfo *appinfo) +{ + GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); + + if (info->app == NULL) + return NULL; + + return info->app->command_u8; +} + +static GIcon * +g_win32_app_info_get_icon (GAppInfo *appinfo) +{ + GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); + + if (info->app == NULL) + return NULL; + + return info->app->icon; +} + +typedef struct _file_or_uri { + gchar *uri; + gchar *file; +} file_or_uri; + +static char * +expand_macro_single (char macro, file_or_uri *obj) +{ + char *result = NULL; + + switch (macro) + { + case '*': + case '0': + case '1': + case 'l': + case 'd': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + /* TODO: handle 'l' and 'd' differently (longname and desktop name) */ + if (obj->uri) + result = g_strdup (obj->uri); + else if (obj->file) + result = g_strdup (obj->file); + break; + case 'u': + case 'U': + if (obj->uri) + result = g_shell_quote (obj->uri); + break; + case 'f': + case 'F': + if (obj->file) + result = g_shell_quote (obj->file); + break; + } + + return result; +} + +static gboolean +expand_macro (char macro, + GString *exec, + GWin32AppInfo *info, + GList **stat_obj_list, + GList **obj_list) +{ + GList *objs = *obj_list; + char *expanded; + gboolean result = FALSE; + + g_return_val_if_fail (exec != NULL, FALSE); + +/* +Legend: (from http://msdn.microsoft.com/en-us/library/windows/desktop/cc144101%28v=vs.85%29.aspx) +%* - replace with all parameters +%~ - replace with all parameters starting with and following the second parameter +%0 or %1 the first file parameter. For example "C:\\Users\\Eric\\Destop\\New Text Document.txt". Generally this should be in quotes and the applications command line parsing should accept quotes to disambiguate files with spaces in the name and different command line parameters (this is a security best practice and I believe mentioned in MSDN). +% (where N is 2 - 9), replace with the nth parameter +%s - show command +%h - hotkey value +%i - IDList stored in a shared memory handle is passed here. +%l - long file name form of the first parameter. Note win32 applications will be passed the long file name, win16 applications get the short file name. Specifying %L is preferred as it avoids the need to probe for the application type. +%d - desktop absolute parsing name of the first parameter (for items that don't have file system paths) +%v - for verbs that are none implies all, if there is no parameter passed this is the working directory +%w - the working directory +*/ + + switch (macro) + { + case '*': + case '~': + if (*stat_obj_list) + { + gint i; + GList *o; + + for (o = *stat_obj_list, i = 0; + macro == '~' && o && i < 2; + o = o->next, i++); + + for (; o; o = o->next) + { + expanded = expand_macro_single (macro, o->data); + + if (expanded) + { + if (o != *stat_obj_list) + g_string_append (exec, " "); + + g_string_append (exec, expanded); + g_free (expanded); + } + } + + objs = NULL; + result = TRUE; + } + break; + case '0': + case '1': + case 'l': + case 'd': + if (*stat_obj_list) + { + GList *o; + + o = *stat_obj_list; + + if (o) + { + expanded = expand_macro_single (macro, o->data); + + if (expanded) + { + if (o != *stat_obj_list) + g_string_append (exec, " "); + + g_string_append (exec, expanded); + g_free (expanded); + } + } + + if (objs) + objs = objs->next; + + result = TRUE; + } + break; + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (*stat_obj_list) + { + gint i; + GList *o; + gint n; + + switch (macro) + { + case '2': + n = 2; + break; + case '3': + n = 3; + break; + case '4': + n = 4; + break; + case '5': + n = 5; + break; + case '6': + n = 6; + break; + case '7': + n = 7; + break; + case '8': + n = 8; + break; + case '9': + n = 9; + break; + } + + for (o = *stat_obj_list, i = 0; o && i < n; o = o->next, i++); + + if (o) + { + expanded = expand_macro_single (macro, o->data); + + if (expanded) + { + if (o != *stat_obj_list) + g_string_append (exec, " "); + + g_string_append (exec, expanded); + g_free (expanded); + } + } + result = TRUE; + + if (objs) + objs = NULL; + } + break; + case 's': + break; + case 'h': + break; + case 'i': + break; + case 'v': + break; + case 'w': + expanded = g_get_current_dir (); + g_string_append (exec, expanded); + g_free (expanded); + break; + case 'u': + case 'f': + if (objs) + { + expanded = expand_macro_single (macro, objs->data); + + if (expanded) + { + g_string_append (exec, expanded); + g_free (expanded); + } + objs = objs->next; + result = TRUE; + } + + break; + + case 'U': + case 'F': + while (objs) + { + expanded = expand_macro_single (macro, objs->data); + + if (expanded) + { + g_string_append (exec, expanded); + g_free (expanded); + } + + objs = objs->next; + result = TRUE; + + if (objs != NULL && expanded) + g_string_append_c (exec, ' '); + } + + break; + + case 'c': + if (info->app && info->app->localized_pretty_name_u8) + { + expanded = g_shell_quote (info->app->localized_pretty_name_u8); + g_string_append (exec, expanded); + g_free (expanded); + } + break; + + case 'm': /* deprecated */ + case 'n': /* deprecated */ + case 'N': /* deprecated */ + /*case 'd': *//* deprecated */ + case 'D': /* deprecated */ + break; + + case '%': + g_string_append_c (exec, '%'); + break; + } + + *obj_list = objs; + + return result; +} + +static gboolean +expand_application_parameters (GWin32AppInfo *info, + const gchar *exec_line, + GList **objs, + int *argc, + char ***argv, + GError **error) +{ + GList *obj_list = *objs; + GList **stat_obj_list = objs; + const char *p = exec_line; + GString *expanded_exec; + gboolean res; + gchar *a_char; + + if (exec_line == NULL) + { + g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, + P_("Application registry did not specify" + " a shell\\open\\command")); + return FALSE; + } + + expanded_exec = g_string_new (NULL); + res = FALSE; + + while (*p) + { + if (p[0] == '%' && p[1] != '\0') + { + if (expand_macro (p[1], + expanded_exec, + info, stat_obj_list, + objs)) + res = TRUE; + + p++; + } + else + g_string_append_c (expanded_exec, *p); + + p++; + } + + /* No file substitutions */ + if (obj_list == *objs && obj_list != NULL && !res) + { + /* If there is no macro default to %f. This is also what KDE does */ + g_string_append_c (expanded_exec, ' '); + expand_macro ('f', expanded_exec, info, stat_obj_list, objs); + } + + /* Replace '\\' with '/', because g_shell_parse_argv considers them + * to be escape sequences. + */ + for (a_char = expanded_exec->str; + a_char <= &expanded_exec->str[expanded_exec->len]; + a_char++) + { + if (*a_char == '\\') + *a_char = '/'; + } + + res = g_shell_parse_argv (expanded_exec->str, argc, argv, error); + g_string_free (expanded_exec, TRUE); + return res; +} + + +static gchar * +get_appath_for_exe (gunichar2 *exe_basename) +{ + GWin32RegistryKey *apppath_key = NULL; + GWin32RegistryValueType val_type; + gunichar2 *appath = NULL; + gboolean got_value; + gchar *result = NULL; + + apppath_key = _g_win32_registry_key_build_and_new_w (NULL, L"HKEY_LOCAL_MACHINE\\" + L"\\SOFTWARE" + L"\\Microsoft" + L"\\Windows" + L"\\CurrentVersion" + L"\\App Paths\\", + exe_basename, NULL); -#ifndef ASSOCF_INIT_BYEXENAME -#define ASSOCF_INIT_BYEXENAME 0x00000002 -#endif + if (apppath_key == NULL) + return NULL; -/* These were wrong in MingW */ -#define REAL_ASSOCSTR_COMMAND 1 -#define REAL_ASSOCSTR_EXECUTABLE 2 -#define REAL_ASSOCSTR_FRIENDLYDOCNAME 3 -#define REAL_ASSOCSTR_FRIENDLYAPPNAME 4 + got_value = g_win32_registry_key_get_value_w (apppath_key, + TRUE, + L"Path", + &val_type, + (void **) &appath, + NULL, + NULL); -#ifndef AssocQueryString -#pragma message("AssocQueryString not available with SDK used") -#endif + g_object_unref (apppath_key); -static void g_win32_app_info_iface_init (GAppInfoIface *iface); + if (got_value && val_type == G_WIN32_REGISTRY_VALUE_STR) + result = g_utf16_to_utf8 (appath, -1, NULL,NULL, NULL); -struct _GWin32AppInfo -{ - GObject parent_instance; - wchar_t *id; - char *id_utf8; - gboolean id_is_exename; - char *executable; - char *name; - gboolean no_open_with; -}; + g_clear_pointer (&appath, g_free); -G_DEFINE_TYPE_WITH_CODE (GWin32AppInfo, g_win32_app_info, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (G_TYPE_APP_INFO, - g_win32_app_info_iface_init)) + return result; +} -static void -g_win32_app_info_finalize (GObject *object) +static gboolean +g_win32_app_info_launch_internal (GWin32AppInfo *info, + GList *objs, + GAppLaunchContext *launch_context, + GSpawnFlags spawn_flags, + GError **error) { - GWin32AppInfo *info; + gboolean completed = FALSE; + char **argv, **envp; + int argc; + gchar *command; + gchar *apppath; + gunichar2 *exe_basename; - info = G_WIN32_APP_INFO (object); + g_return_val_if_fail (info != NULL, FALSE); + g_return_val_if_fail (info->app != NULL, FALSE); - g_free (info->id); - g_free (info->id_utf8); - g_free (info->name); - g_free (info->executable); + argv = NULL; - G_OBJECT_CLASS (g_win32_app_info_parent_class)->finalize (object); -} + if (launch_context) + envp = g_app_launch_context_get_environment (launch_context); + else + envp = g_get_environ (); -static void -g_win32_app_info_class_init (GWin32AppInfoClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - - gobject_class->finalize = g_win32_app_info_finalize; -} + command = NULL; + exe_basename = NULL; -static void -g_win32_app_info_init (GWin32AppInfo *local) -{ -} + if (info->handler) + { + if (info->handler->handler_command) + { + command = g_utf16_to_utf8 (info->handler->handler_command, + -1, + NULL, + NULL, + NULL); + exe_basename = g_utf8_to_utf16 (info->handler->executable_basename, + -1, + NULL, + NULL, + NULL); + } + else if (info->handler->proxy_command) + { + command = g_utf16_to_utf8 (info->handler->proxy_command, + -1, + NULL, + NULL, + NULL); + exe_basename = g_utf8_to_utf16 (info->handler->executable_basename, + -1, + NULL, + NULL, + NULL); + } + } -static GAppInfo * -g_desktop_app_info_new_from_id (wchar_t *id /* takes ownership */, - gboolean id_is_exename) -{ -#ifdef AssocQueryString - ASSOCF flags; -#endif - wchar_t buffer[1024]; - DWORD buffer_size; - GWin32AppInfo *info; - HKEY app_key; - - info = g_object_new (G_TYPE_WIN32_APP_INFO, NULL); - info->id = id; /* Takes ownership */ - info->id_utf8 = g_utf16_to_utf8 (id, -1, NULL, NULL, NULL); - info->id_is_exename = id_is_exename; - -#ifdef AssocQueryString - flags = 0; - if (id_is_exename) - flags |= ASSOCF_INIT_BYEXENAME; - - buffer_size = 1024; - if (AssocQueryStringW(flags, - REAL_ASSOCSTR_EXECUTABLE, - id, - NULL, - buffer, - &buffer_size) == S_OK) - info->executable = g_utf16_to_utf8 (buffer, -1, NULL, NULL, NULL); - - buffer_size = 1024; - if (AssocQueryStringW(flags, - REAL_ASSOCSTR_FRIENDLYAPPNAME, - id, - NULL, - buffer, - &buffer_size) == S_OK) - info->name = g_utf16_to_utf8 (buffer, -1, NULL, NULL, NULL); -#endif - - if (info->name == NULL) - { - /* TODO: Should look up name from executable resources */ - if (info->executable) - info->name = g_path_get_basename (info->executable); + if (command == NULL) + { + command = g_strdup (info->app->command_u8); + exe_basename = g_utf8_to_utf16 (info->app->executable_basename, + -1, + NULL, + NULL, + NULL); + } + + apppath = get_appath_for_exe (exe_basename); + + g_free (exe_basename); + + if (apppath) + { + gchar **p; + gint p_index; + + for (p = envp, p_index = 0; p[0]; p++, p_index++) + if ((p[0][0] == 'p' || p[0][0] == 'P') && + (p[0][1] == 'a' || p[0][1] == 'A') && + (p[0][2] == 't' || p[0][2] == 'T') && + (p[0][3] == 'h' || p[0][3] == 'H') && + (p[0][4] == '=')) + break; + + if (p[0] == NULL) + { + gchar **new_envp; + new_envp = g_new (char *, g_strv_length (envp) + 2); + new_envp[0] = g_strdup_printf ("PATH=%s", apppath); + + for (p_index = 0; p_index <= g_strv_length (envp); p_index++) + new_envp[1 + p_index] = envp[p_index]; + + g_free (envp); + envp = new_envp; + } else - info->name = g_strdup (info->id_utf8); + { + gchar *p_path; + + p_path = &p[0][5]; + + if (p_path[0] != '\0') + envp[p_index] = g_strdup_printf ("PATH=%s%c%s", + apppath, + G_SEARCHPATH_SEPARATOR, + p_path); + else + envp[p_index] = g_strdup_printf ("PATH=%s", apppath); + + g_free (&p_path[-5]); + } } -#ifdef AssocQueryString - if (AssocQueryKeyW(flags, - ASSOCKEY_APP, - info->id, - NULL, - &app_key) == S_OK) + do { - if (RegQueryValueExW (app_key, L"NoOpenWith", 0, - NULL, NULL, NULL) == ERROR_SUCCESS) - info->no_open_with = TRUE; - RegCloseKey (app_key); + GPid pid; + + if (!expand_application_parameters (info, + command, + &objs, + &argc, + &argv, + error)) + goto out; + + if (!g_spawn_async (NULL, + argv, + envp, + spawn_flags, + NULL, + NULL, + &pid, + error)) + goto out; + + if (launch_context != NULL) + { + GVariantBuilder builder; + GVariant *platform_data; + + g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY); + g_variant_builder_add (&builder, "{sv}", "pid", g_variant_new_int32 ((gint32) pid)); + + platform_data = g_variant_ref_sink (g_variant_builder_end (&builder)); + g_signal_emit_by_name (launch_context, "launched", info, platform_data); + g_variant_unref (platform_data); + } + + g_strfreev (argv); + argv = NULL; } -#endif - - return G_APP_INFO (info); -} + while (objs != NULL); -static wchar_t * -dup_wstring (wchar_t *str) -{ - gsize len; - for (len = 0; str[len] != 0; len++) - ; - return (wchar_t *)g_memdup (str, (len + 1) * 2); + completed = TRUE; + + out: + g_strfreev (argv); + g_strfreev (envp); + g_free (command); + + return completed; } -static GAppInfo * -g_win32_app_info_dup (GAppInfo *appinfo) +static void +free_file_or_uri (gpointer ptr) { - GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); - GWin32AppInfo *new_info; - - new_info = g_object_new (G_TYPE_WIN32_APP_INFO, NULL); - - new_info->id = dup_wstring (info->id); - new_info->id_utf8 = g_strdup (info->id_utf8); - new_info->id_is_exename = info->id_is_exename; - new_info->name = g_strdup (info->name); - new_info->executable = g_strdup (info->executable); - new_info->no_open_with = info->no_open_with; - - return G_APP_INFO (new_info); + file_or_uri *obj = ptr; + g_free (obj->file); + g_free (obj->uri); + g_free (obj); } + static gboolean -g_win32_app_info_equal (GAppInfo *appinfo1, - GAppInfo *appinfo2) +g_win32_app_supports_uris (GWin32AppInfoApplication *app) { - GWin32AppInfo *info1 = G_WIN32_APP_INFO (appinfo1); - GWin32AppInfo *info2 = G_WIN32_APP_INFO (appinfo2); + gssize num_of_uris_supported; - if (info1->executable == NULL || - info2->executable == NULL) + if (app == NULL) return FALSE; - - return strcmp (info1->executable, info2->executable) == 0; -} -static const char * -g_win32_app_info_get_id (GAppInfo *appinfo) -{ - GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); + num_of_uris_supported = (gssize) g_hash_table_size (app->supported_urls); + + if (g_hash_table_lookup (app->supported_urls, "file")) + num_of_uris_supported -= 1; - return info->id_utf8; + return num_of_uris_supported > 0; } -static const char * -g_win32_app_info_get_name (GAppInfo *appinfo) + +static gboolean +g_win32_app_info_supports_uris (GAppInfo *appinfo) { GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); - if (info->name == NULL) - return _("Unnamed"); - - return info->name; -} + if (info->app == NULL) + return FALSE; -static const char * -g_win32_app_info_get_description (GAppInfo *appinfo) -{ - /* Win32 has no app descriptions */ - return NULL; + return g_win32_app_supports_uris (info->app); } -static const char * -g_win32_app_info_get_executable (GAppInfo *appinfo) + +static gboolean +g_win32_app_info_supports_files (GAppInfo *appinfo) { GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); - - return info->executable; -} -static GIcon * -g_win32_app_info_get_icon (GAppInfo *appinfo) -{ - /* GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); */ + if (info->app == NULL) + return FALSE; - /* TODO: How to handle icons */ - return NULL; + return g_hash_table_size (info->app->supported_exts) > 0; } + static gboolean -g_win32_app_info_launch_locations (GAppInfo *appinfo, - GList *locations, - GAppLaunchContext *launch_context, - GError **error) +g_win32_app_info_launch_uris (GAppInfo *appinfo, + GList *uris, + GAppLaunchContext *launch_context, + GError **error) { - GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); -#ifdef AssocQueryString - ASSOCF flags; -#endif - HKEY class_key; - SHELLEXECUTEINFOW exec_info = {0}; - GList *l; - - /* TODO: What might startup_id mean on win32? */ -#ifdef AssocQueryString - flags = 0; - if (info->id_is_exename) - flags |= ASSOCF_INIT_BYEXENAME; - - if (AssocQueryKeyW (flags, - ASSOCKEY_SHELLEXECCLASS, - info->id, - NULL, - &class_key) != S_OK) - { - g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, _("Can't find application")); - return FALSE; + gboolean res = FALSE; + gboolean do_files; + GList *objs; + + do_files = g_win32_app_info_supports_files (appinfo); + + objs = NULL; + while (uris) + { + file_or_uri *obj; + obj = g_new0 (file_or_uri, 1); + + if (do_files) + { + GFile *file; + gchar *path; + + file = g_file_new_for_uri (uris->data); + path = g_file_get_path (file); + obj->file = path; + g_object_unref (file); + } + + obj->uri = g_strdup (uris->data); + + objs = g_list_prepend (objs, obj); + uris = uris->next; } -#endif - /* FIXME: Need to do something with - * g_app_launch_context_get_environment()... ShellExecuteExW() - * doesn't have any way to pass an environment though. We need to - * either (a) update environment, ShellExecuteExW(), revert - * environment; or (b) find an API to figure out what app - * ShellExecuteExW() would launch, and then use g_spawn_async() - * instead. - */ + objs = g_list_reverse (objs); - for (l = locations; l != NULL; l = l->next) - { - wchar_t *wloc = g_utf8_to_utf16 (l->data, -1, NULL, NULL, NULL); - - memset (&exec_info, 0, sizeof (exec_info)); - exec_info.cbSize = sizeof (exec_info); - exec_info.fMask = SEE_MASK_FLAG_DDEWAIT | SEE_MASK_CLASSKEY; - exec_info.lpFile = wloc; - exec_info.nShow = SW_SHOWNORMAL; - exec_info.hkeyClass = class_key; - - if (!ShellExecuteExW (&exec_info)) - { - char *message_utf8 = g_win32_error_message (GetLastError ()); - - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, _("Error launching application: %s"), message_utf8); - g_free (message_utf8); - - g_free (wloc); - RegCloseKey (class_key); - return FALSE; - } - - g_free (wloc); - } - - RegCloseKey (class_key); - - return TRUE; -} + res = g_win32_app_info_launch_internal (G_WIN32_APP_INFO (appinfo), + objs, + launch_context, + G_SPAWN_SEARCH_PATH, + error); -static gboolean -g_win32_app_info_supports_uris (GAppInfo *appinfo) -{ - /* TODO: is there some way to determine this on windows? */ - return TRUE; -} + g_list_free_full (objs, free_file_or_uri); -static gboolean -g_win32_app_info_supports_files (GAppInfo *appinfo) -{ - return TRUE; + return res; } static gboolean @@ -335,62 +4330,93 @@ g_win32_app_info_launch (GAppInfo *appinfo, GAppLaunchContext *launch_context, GError **error) { - gboolean success; - GList *paths = g_list_copy_deep (files, (GCopyFunc) g_file_get_path, - NULL); + gboolean res = FALSE; + gboolean do_uris; + GList *objs; - success = g_win32_app_info_launch_locations (appinfo, paths, - launch_context, error); + do_uris = g_win32_app_info_supports_uris (appinfo); - g_list_free_full (paths, g_free); + objs = NULL; + while (files) + { + file_or_uri *obj; + obj = g_new0 (file_or_uri, 1); + obj->file = g_file_get_path (G_FILE (files->data)); - return success; -} + if (do_uris) + obj->uri = g_file_get_uri (G_FILE (files->data)); -static gboolean -g_win32_app_info_launch_uris (GAppInfo *appinfo, - GList *uris, - GAppLaunchContext *launch_context, - GError **error) -{ - return g_win32_app_info_launch_locations (appinfo, uris, - launch_context, error); -} + objs = g_list_prepend (objs, obj); + files = files->next; + } -static gboolean -g_win32_app_info_should_show (GAppInfo *appinfo) -{ - GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); + objs = g_list_reverse (objs); - if (info->no_open_with) - return FALSE; - - return TRUE; + res = g_win32_app_info_launch_internal (G_WIN32_APP_INFO (appinfo), + objs, + launch_context, + G_SPAWN_SEARCH_PATH, + error); + + g_list_free_full (objs, free_file_or_uri); + + return res; } -static gboolean -g_win32_app_info_set_as_default_for_type (GAppInfo *appinfo, - const char *content_type, - GError **error) +static const char ** +g_win32_app_info_get_supported_types (GAppInfo *appinfo) { - g_set_error_literal (error, G_IO_ERROR, - G_IO_ERROR_NOT_SUPPORTED, - _("association changes not supported on win32")); - return FALSE; + GWin32AppInfo *info = G_WIN32_APP_INFO (appinfo); + + return (const char**) info->supported_types; } GAppInfo * g_app_info_create_from_commandline (const char *commandline, - const char *application_name, - GAppInfoCreateFlags flags, - GError **error) + const char *application_name, + GAppInfoCreateFlags flags, + GError **error) { - g_set_error_literal (error, G_IO_ERROR, - G_IO_ERROR_NOT_SUPPORTED, - _("Association creation not supported on win32")); - return NULL; + GWin32AppInfo *info; + GWin32AppInfoApplication *app; + + g_return_val_if_fail (commandline, NULL); + + info = g_object_new (G_TYPE_WIN32_APP_INFO, NULL); + + app = g_object_new (G_TYPE_WIN32_APPINFO_APPLICATION, NULL); + + if (application_name) + { + app->canonical_name = g_utf8_to_utf16 (application_name, + -1, + NULL, + NULL, + NULL); + app->canonical_name_u8 = g_strdup (application_name); + app->canonical_name_folded = g_utf8_casefold (application_name, -1); + } + + app->command = g_utf8_to_utf16 (commandline, -1, NULL, NULL, NULL); + app->command_u8 = g_strdup (commandline); + + extract_executable (app->command, + &app->executable, + &app->executable_basename, + &app->executable_folded, + NULL); + + app->no_open_with = FALSE; + app->user_specific = FALSE; + app->default_app = FALSE; + + info->app = app; + info->handler = NULL; + + return G_APP_INFO (info); } +/* GAppInfo interface init */ static void g_win32_app_info_iface_init (GAppInfoIface *iface) @@ -406,312 +4432,240 @@ g_win32_app_info_iface_init (GAppInfoIface *iface) iface->supports_uris = g_win32_app_info_supports_uris; iface->supports_files = g_win32_app_info_supports_files; iface->launch_uris = g_win32_app_info_launch_uris; - iface->should_show = g_win32_app_info_should_show; - iface->set_as_default_for_type = g_win32_app_info_set_as_default_for_type; -} - -static void -enumerate_open_with_list (HKEY dir_key, - GList **prognames) -{ - DWORD index; - wchar_t name[256]; - DWORD name_len, nbytes; - wchar_t data[256]; - wchar_t *data_alloc; - DWORD type; - - /* Must also look inside for a,b,c, + MRUList */ - index = 0; - name_len = 256; - nbytes = sizeof (data) - 2; - while (RegEnumValueW (dir_key, - index, - name, - &name_len, - 0, - &type, - (LPBYTE)data, - &nbytes) == ERROR_SUCCESS) - { - data[nbytes/2] = '\0'; - if (type == REG_SZ && - /* Ignore things like MRUList, just look at 'a', 'b', 'c', etc */ - name_len == 1) - { - data_alloc = (wchar_t *)g_memdup (data, nbytes + 2); - data_alloc[nbytes/2] = 0; - *prognames = g_list_prepend (*prognames, data_alloc); - } - index++; - name_len = 256; - nbytes = sizeof (data) - 2; - } - - index = 0; - name_len = 256; - while (RegEnumKeyExW (dir_key, - index, - name, - &name_len, - NULL, - NULL, - NULL, - NULL) == ERROR_SUCCESS) - { - *prognames = g_list_prepend (*prognames, g_memdup (name, (name_len + 1) * 2)); - index++; - name_len = 256; - } +/* iface->should_show = g_win32_app_info_should_show;*/ +/* iface->set_as_default_for_type = g_win32_app_info_set_as_default_for_type;*/ +/* iface->set_as_default_for_extension = g_win32_app_info_set_as_default_for_extension;*/ +/* iface->add_supports_type = g_win32_app_info_add_supports_type;*/ +/* iface->can_remove_supports_type = g_win32_app_info_can_remove_supports_type;*/ +/* iface->remove_supports_type = g_win32_app_info_remove_supports_type;*/ +/* iface->can_delete = g_win32_app_info_can_delete;*/ +/* iface->do_delete = g_win32_app_info_delete;*/ + iface->get_commandline = g_win32_app_info_get_commandline; + iface->get_display_name = g_win32_app_info_get_display_name; +/* iface->set_as_last_used_for_type = g_win32_app_info_set_as_last_used_for_type;*/ + iface->get_supported_types = g_win32_app_info_get_supported_types; } -static void -enumerate_open_with_progids (HKEY dir_key, - GList **progids) +GAppInfo * +g_app_info_get_default_for_uri_scheme (const char *uri_scheme) { - DWORD index; - wchar_t name[256]; - DWORD name_len, type; + GWin32AppInfoURLSchema *scheme; + char *scheme_down; + GAppInfo *result; - index = 0; - name_len = 256; - while (RegEnumValueW (dir_key, - index, - name, - &name_len, - 0, - &type, - NULL, - 0) == ERROR_SUCCESS) - { - *progids = g_list_prepend (*progids, g_memdup (name, (name_len + 1) * 2)); - index++; - name_len = 256; - } -} + scheme_down = g_utf8_casefold (uri_scheme, -1); -static void -enumerate_open_with_root (HKEY dir_key, - GList **progids, - GList **prognames) -{ - HKEY reg_key = NULL; - - if (RegOpenKeyExW (dir_key, L"OpenWithList", 0, - KEY_READ, ®_key) == ERROR_SUCCESS) - { - enumerate_open_with_list (reg_key, prognames); - RegCloseKey (reg_key); - } - - if (RegOpenKeyExW (dir_key, L"OpenWithProgids", 0, - KEY_QUERY_VALUE, ®_key) == ERROR_SUCCESS) + if (!scheme_down) + return NULL; + + if (strcmp (scheme_down, "file") == 0) { - enumerate_open_with_progids (reg_key, progids); - RegCloseKey (reg_key); + g_free (scheme_down); + return NULL; } + + g_win32_appinfo_init (); + G_LOCK (gio_win32_appinfo); + + scheme = g_hash_table_lookup (urls, scheme_down); + g_free (scheme_down); + + if (scheme) + g_object_ref (scheme); + + G_UNLOCK (gio_win32_appinfo); + + result = NULL; + + if (scheme != NULL && + scheme->chosen_handler != NULL && + scheme->chosen_handler->app != NULL) + result = g_win32_app_info_new_from_app (scheme->chosen_handler->app, + scheme->chosen_handler); + + if (scheme) + g_object_unref (scheme); + + return result; } -static gboolean -app_info_in_list (GAppInfo *info, - GList *list) +GAppInfo * +g_app_info_get_default_for_type (const char *content_type, + gboolean must_support_uris) { - while (list != NULL) + GWin32AppInfoFileExtension *ext; + char *ext_down; + GWin32AppInfoHandler *handler; + GAppInfo *result; + GWin32AppInfoApplication *app; + GHashTableIter iter; + + ext_down = g_utf8_casefold (content_type, -1); + + if (!ext_down) + return NULL; + + g_win32_appinfo_init (); + G_LOCK (gio_win32_appinfo); + + /* Assuming that "content_type" is a file extension, not a MIME type */ + ext = g_hash_table_lookup (extensions, ext_down); + g_free (ext_down); + + result = NULL; + + if (ext != NULL) + g_object_ref (ext); + + G_UNLOCK (gio_win32_appinfo); + + if (ext != NULL) { - if (g_app_info_equal (info, list->data)) - return TRUE; - list = list->next; + if (ext->chosen_handler != NULL && + ext->chosen_handler->app != NULL && + (!must_support_uris || + g_win32_app_supports_uris (ext->chosen_handler->app))) + result = g_win32_app_info_new_from_app (ext->chosen_handler->app, + ext->chosen_handler); + else + { + g_hash_table_iter_init (&iter, ext->handlers); + + while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &handler)) + { + if (handler->app && + (!must_support_uris || + g_win32_app_supports_uris (ext->chosen_handler->app))) + { + result = g_win32_app_info_new_from_app (handler->app, handler); + break; + } + } + + if (result == NULL) + { + g_hash_table_iter_init (&iter, ext->other_apps); + while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &app)) + { + if (!must_support_uris || + g_win32_app_supports_uris (ext->chosen_handler->app)) + { + result = g_win32_app_info_new_from_app (app, NULL); + break; + } + } + } + } + g_object_unref (ext); } - return FALSE; + + return result; } GList * -g_app_info_get_all_for_type (const char *content_type) +g_app_info_get_all (void) { - GList *progids = NULL; - GList *prognames = NULL; - HKEY reg_key, sys_file_assoc_key, reg_key2; - wchar_t percieved_type[128]; - DWORD nchars, key_type; - wchar_t *wc_key; - GList *l; + GHashTableIter iter; + gpointer value; GList *infos; + GList *apps; + GList *apps_i; - wc_key = g_utf8_to_utf16 (content_type, -1, NULL, NULL, NULL); - if (RegOpenKeyExW (HKEY_CLASSES_ROOT, wc_key, 0, - KEY_QUERY_VALUE, ®_key) == ERROR_SUCCESS) - { - enumerate_open_with_root (reg_key, &progids, &prognames); - - nchars = sizeof (percieved_type) / sizeof(wchar_t); - if (RegQueryValueExW (reg_key, L"PerceivedType", 0, - &key_type, (LPBYTE) percieved_type, &nchars) == ERROR_SUCCESS) - { - if (key_type == REG_SZ && - RegOpenKeyExW (HKEY_CLASSES_ROOT, L"SystemFileAssociations", 0, - KEY_QUERY_VALUE, &sys_file_assoc_key) == ERROR_SUCCESS) - { - if (RegOpenKeyExW (sys_file_assoc_key, percieved_type, 0, - KEY_QUERY_VALUE, ®_key2) == ERROR_SUCCESS) - { - enumerate_open_with_root (reg_key2, &progids, &prognames); - RegCloseKey (reg_key2); - } - - RegCloseKey (sys_file_assoc_key); - } - } - RegCloseKey (reg_key); - } - - if (RegOpenKeyExW (HKEY_CURRENT_USER, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts", 0, - KEY_QUERY_VALUE, ®_key) == ERROR_SUCCESS) - { - if (RegOpenKeyExW (reg_key, wc_key, 0, - KEY_QUERY_VALUE, ®_key2) == ERROR_SUCCESS) - { - enumerate_open_with_root (reg_key2, &progids, &prognames); - RegCloseKey (reg_key2); - } - - RegCloseKey (reg_key); - } + g_win32_appinfo_init (); + G_LOCK (gio_win32_appinfo); - infos = NULL; - for (l = prognames; l != NULL; l = l->next) - { - GAppInfo *info; + apps = NULL; + g_hash_table_iter_init (&iter, apps_by_id); + while (g_hash_table_iter_next (&iter, NULL, &value)) + apps = g_list_prepend (apps, g_object_ref (G_OBJECT (value))); - /* l->data ownership is taken */ - info = g_desktop_app_info_new_from_id ((wchar_t *)l->data, TRUE); - if (app_info_in_list (info, infos)) - g_object_unref (info); - else - infos = g_list_prepend (infos, info); - } - g_list_free (prognames); + G_UNLOCK (gio_win32_appinfo); - for (l = progids; l != NULL; l = l->next) - { - GAppInfo *info; + infos = NULL; + for (apps_i = apps; apps_i; apps_i = apps_i->next) + infos = g_list_prepend (infos, + g_win32_app_info_new_from_app (apps_i->data, NULL)); - /* l->data ownership is taken */ - info = g_desktop_app_info_new_from_id ((wchar_t *)l->data, FALSE); - if (app_info_in_list (info, infos)) - g_object_unref (info); - else - infos = g_list_prepend (infos, info); - } - g_list_free (progids); - - g_free (wc_key); - return g_list_reverse (infos); -} + g_list_free_full (apps, g_object_unref); -GList * -g_app_info_get_recommended_for_type (const char *content_type) -{ - /* FIXME: this should generate a list of applications that are registered - * as direct handlers for the given content type, without using MIME subclassing. - * See g_app_info_get_recommended_for_type() in gdesktopappinfo.c for a reference - * UNIX implementation. - */ - return g_app_info_get_all_for_type (content_type); + return infos; } GList * -g_app_info_get_fallback_for_type (const char *content_type) +g_app_info_get_all_for_type (const char *content_type) { - /* FIXME: this should generate a list of applications that are registered - * as handlers for a superclass of the given content type, but are not - * direct handlers for the content type itself. See g_app_info_get_fallback_for_type() - * in gdesktopappinfo.c for a reference UNIX implementation. - */ - return g_app_info_get_all_for_type (content_type); -} + GWin32AppInfoFileExtension *ext; + char *ext_down; + GWin32AppInfoHandler *handler; + GWin32AppInfoApplication *app; + GHashTableIter iter; + GList *result; -/* - * The windows api (AssocQueryString) doesn't distinguish between uri schemes - * and file type extensions here, so we use the same implementation for both - * g_app_info_get_default_for_type and g_app_info_get_default_for_uri_scheme - */ -static GAppInfo * -get_default_for_association (const char *association) -{ - wchar_t *wtype; - wchar_t buffer[1024]; - DWORD buffer_size; - - wtype = g_utf8_to_utf16 (association, -1, NULL, NULL, NULL); - - /* Verify that we have some sort of app registered for this type */ -#ifdef AssocQueryString - buffer_size = 1024; - if (AssocQueryStringW (0, - REAL_ASSOCSTR_COMMAND, - wtype, - NULL, - buffer, - &buffer_size) == S_OK) - /* Takes ownership of wtype */ - return g_desktop_app_info_new_from_id (wtype, FALSE); -#endif - - g_free (wtype); - return NULL; -} + ext_down = g_utf8_casefold (content_type, -1); -GAppInfo * -g_app_info_get_default_for_type (const char *content_type, - gboolean must_support_uris) -{ - return get_default_for_association (content_type); + if (!ext_down) + return NULL; + + g_win32_appinfo_init (); + G_LOCK (gio_win32_appinfo); + + /* Assuming that "content_type" is a file extension, not a MIME type */ + ext = g_hash_table_lookup (extensions, ext_down); + g_free (ext_down); + + result = NULL; + + if (ext != NULL) + g_object_ref (ext); + + G_UNLOCK (gio_win32_appinfo); + + if (ext == NULL) + return NULL; + + if (ext->chosen_handler != NULL && + ext->chosen_handler->app != NULL) + result = g_list_prepend (result, + g_win32_app_info_new_from_app (ext->chosen_handler->app, + ext->chosen_handler)); + + g_hash_table_iter_init (&iter, ext->handlers); + + while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &handler)) + { + if (handler->app && + (ext->chosen_handler == NULL || ext->chosen_handler->app != handler->app)) + result = g_list_prepend (result, + g_win32_app_info_new_from_app (handler->app, + handler)); + } + + g_hash_table_iter_init (&iter, ext->other_apps); + + while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &app)) + { + result = g_list_prepend (result, g_win32_app_info_new_from_app (app, NULL)); + } + + g_object_unref (ext); + + result = g_list_reverse (result); + + return result; } -GAppInfo * -g_app_info_get_default_for_uri_scheme (const char *uri_scheme) +GList * +g_app_info_get_fallback_for_type (const gchar *content_type) { - return get_default_for_association (uri_scheme); + /* TODO: fix this once gcontenttype support is improved */ + return g_app_info_get_all_for_type (content_type); } GList * -g_app_info_get_all (void) +g_app_info_get_recommended_for_type (const gchar *content_type) { - DWORD index; - wchar_t name[256]; - DWORD name_len; - HKEY reg_key; - GList *infos; - GAppInfo *info; - - if (RegOpenKeyExW (HKEY_CLASSES_ROOT, L"Applications", 0, - KEY_READ, ®_key) != ERROR_SUCCESS) - return NULL; - - infos = NULL; - index = 0; - name_len = 256; - while (RegEnumKeyExW (reg_key, - index, - name, - &name_len, - NULL, - NULL, - NULL, - NULL) == ERROR_SUCCESS) - { - wchar_t *name_dup = g_memdup (name, (name_len+1)*2); - /* name_dup ownership is taken */ - info = g_desktop_app_info_new_from_id (name_dup, TRUE); - infos = g_list_prepend (infos, info); - - index++; - name_len = 256; - } - - RegCloseKey (reg_key); - - return g_list_reverse (infos); + /* TODO: fix this once gcontenttype support is improved */ + return g_app_info_get_all_for_type (content_type); } void diff --git a/gio/gwin32appinfo.h b/gio/gwin32appinfo.h index 5414f68..16c1181 100644 --- a/gio/gwin32appinfo.h +++ b/gio/gwin32appinfo.h @@ -1,6 +1,7 @@ /* GIO - GLib Input, Output and Streaming Library * * Copyright (C) 2006-2007 Red Hat, Inc. + * Copyright (C) 2014 Руслан Ижбулатов * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -15,7 +16,8 @@ * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, see . * - * Author: Alexander Larsson + * Authors: Alexander Larsson + * Руслан Ижбулатов */ #ifndef __G_WIN32_APP_INFO_H__ diff --git a/gio/gwin32inputstream.c b/gio/gwin32inputstream.c index 179e139..bd69730 100644 --- a/gio/gwin32inputstream.c +++ b/gio/gwin32inputstream.c @@ -27,14 +27,12 @@ #include #include "gioerror.h" -#include "gsimpleasyncresult.h" #include "gwin32inputstream.h" #include "giowin32-priv.h" #include "gcancellable.h" #include "gasynchelper.h" #include "glibintl.h" - /** * SECTION:gwin32inputstream * @short_description: Streaming input operations for Windows file handles @@ -49,78 +47,22 @@ * when using it. */ -enum { - PROP_0, - PROP_HANDLE, - PROP_CLOSE_HANDLE -}; - struct _GWin32InputStreamPrivate { HANDLE handle; gboolean close_handle; gint fd; }; -G_DEFINE_TYPE_WITH_PRIVATE (GWin32InputStream, g_win32_input_stream, G_TYPE_INPUT_STREAM) - -static void g_win32_input_stream_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void g_win32_input_stream_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); -static gssize g_win32_input_stream_read (GInputStream *stream, - void *buffer, - gsize count, - GCancellable *cancellable, - GError **error); -static gboolean g_win32_input_stream_close (GInputStream *stream, - GCancellable *cancellable, - GError **error); - -static void -g_win32_input_stream_class_init (GWin32InputStreamClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - GInputStreamClass *stream_class = G_INPUT_STREAM_CLASS (klass); - - gobject_class->get_property = g_win32_input_stream_get_property; - gobject_class->set_property = g_win32_input_stream_set_property; - - stream_class->read_fn = g_win32_input_stream_read; - stream_class->close_fn = g_win32_input_stream_close; +enum { + PROP_0, + PROP_HANDLE, + PROP_CLOSE_HANDLE, + LAST_PROP +}; - /** - * GWin32InputStream:handle: - * - * The handle that the stream reads from. - * - * Since: 2.26 - */ - g_object_class_install_property (gobject_class, - PROP_HANDLE, - g_param_spec_pointer ("handle", - P_("File handle"), - P_("The file handle to read from"), - G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)); +static GParamSpec *props[LAST_PROP]; - /** - * GWin32InputStream:close-handle: - * - * Whether to close the file handle when the stream is closed. - * - * Since: 2.26 - */ - g_object_class_install_property (gobject_class, - PROP_CLOSE_HANDLE, - g_param_spec_boolean ("close-handle", - P_("Close file handle"), - P_("Whether to close the file handle when the stream is closed"), - TRUE, - G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)); -} +G_DEFINE_TYPE_WITH_PRIVATE (GWin32InputStream, g_win32_input_stream, G_TYPE_INPUT_STREAM) static void g_win32_input_stream_set_property (GObject *object, @@ -169,107 +111,6 @@ g_win32_input_stream_get_property (GObject *object, } } -static void -g_win32_input_stream_init (GWin32InputStream *win32_stream) -{ - win32_stream->priv = g_win32_input_stream_get_instance_private (win32_stream); - win32_stream->priv->handle = NULL; - win32_stream->priv->close_handle = TRUE; - win32_stream->priv->fd = -1; -} - -/** - * g_win32_input_stream_new: - * @handle: a Win32 file handle - * @close_handle: %TRUE to close the handle when done - * - * Creates a new #GWin32InputStream for the given @handle. - * - * If @close_handle is %TRUE, the handle will be closed - * when the stream is closed. - * - * Note that "handle" here means a Win32 HANDLE, not a "file descriptor" - * as used in the Windows C libraries. - * - * Returns: a new #GWin32InputStream - **/ -GInputStream * -g_win32_input_stream_new (void *handle, - gboolean close_handle) -{ - GWin32InputStream *stream; - - g_return_val_if_fail (handle != NULL, NULL); - - stream = g_object_new (G_TYPE_WIN32_INPUT_STREAM, - "handle", handle, - "close-handle", close_handle, - NULL); - - return G_INPUT_STREAM (stream); -} - -/** - * g_win32_input_stream_set_close_handle: - * @stream: a #GWin32InputStream - * @close_handle: %TRUE to close the handle when done - * - * Sets whether the handle of @stream shall be closed - * when the stream is closed. - * - * Since: 2.26 - */ -void -g_win32_input_stream_set_close_handle (GWin32InputStream *stream, - gboolean close_handle) -{ - g_return_if_fail (G_IS_WIN32_INPUT_STREAM (stream)); - - close_handle = close_handle != FALSE; - if (stream->priv->close_handle != close_handle) - { - stream->priv->close_handle = close_handle; - g_object_notify (G_OBJECT (stream), "close-handle"); - } -} - -/** - * g_win32_input_stream_get_close_handle: - * @stream: a #GWin32InputStream - * - * Returns whether the handle of @stream will be - * closed when the stream is closed. - * - * Returns: %TRUE if the handle is closed when done - * - * Since: 2.26 - */ -gboolean -g_win32_input_stream_get_close_handle (GWin32InputStream *stream) -{ - g_return_val_if_fail (G_IS_WIN32_INPUT_STREAM (stream), FALSE); - - return stream->priv->close_handle; -} - -/** - * g_win32_input_stream_get_handle: - * @stream: a #GWin32InputStream - * - * Return the Windows file handle that the stream reads from. - * - * Returns: The file handle of @stream - * - * Since: 2.26 - */ -void * -g_win32_input_stream_get_handle (GWin32InputStream *stream) -{ - g_return_val_if_fail (G_IS_WIN32_INPUT_STREAM (stream), NULL); - - return stream->priv->handle; -} - static gssize g_win32_input_stream_read (GInputStream *stream, void *buffer, @@ -369,9 +210,12 @@ g_win32_input_stream_close (GInputStream *stream, { if (close (win32_stream->priv->fd) < 0) { - g_set_error_literal (error, G_IO_ERROR, - g_io_error_from_errno (errno), - g_strerror (errno)); + int errsv = errno; + + g_set_error (error, G_IO_ERROR, + g_io_error_from_errno (errsv), + _("Error closing file descriptor: %s"), + g_strerror (errsv)); return FALSE; } } @@ -395,6 +239,154 @@ g_win32_input_stream_close (GInputStream *stream, return TRUE; } +static void +g_win32_input_stream_class_init (GWin32InputStreamClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GInputStreamClass *stream_class = G_INPUT_STREAM_CLASS (klass); + + gobject_class->get_property = g_win32_input_stream_get_property; + gobject_class->set_property = g_win32_input_stream_set_property; + + stream_class->read_fn = g_win32_input_stream_read; + stream_class->close_fn = g_win32_input_stream_close; + + /** + * GWin32InputStream:handle: + * + * The handle that the stream reads from. + * + * Since: 2.26 + */ + props[PROP_HANDLE] = + g_param_spec_pointer ("handle", + P_("File handle"), + P_("The file handle to read from"), + G_PARAM_READABLE | + G_PARAM_WRITABLE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + /** + * GWin32InputStream:close-handle: + * + * Whether to close the file handle when the stream is closed. + * + * Since: 2.26 + */ + props[PROP_CLOSE_HANDLE] = + g_param_spec_boolean ("close-handle", + P_("Close file handle"), + P_("Whether to close the file handle when the stream is closed"), + TRUE, + G_PARAM_READABLE | + G_PARAM_WRITABLE | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (gobject_class, LAST_PROP, props); +} + +static void +g_win32_input_stream_init (GWin32InputStream *win32_stream) +{ + win32_stream->priv = g_win32_input_stream_get_instance_private (win32_stream); + win32_stream->priv->handle = NULL; + win32_stream->priv->close_handle = TRUE; + win32_stream->priv->fd = -1; +} + +/** + * g_win32_input_stream_new: + * @handle: a Win32 file handle + * @close_handle: %TRUE to close the handle when done + * + * Creates a new #GWin32InputStream for the given @handle. + * + * If @close_handle is %TRUE, the handle will be closed + * when the stream is closed. + * + * Note that "handle" here means a Win32 HANDLE, not a "file descriptor" + * as used in the Windows C libraries. + * + * Returns: a new #GWin32InputStream + **/ +GInputStream * +g_win32_input_stream_new (void *handle, + gboolean close_handle) +{ + GWin32InputStream *stream; + + g_return_val_if_fail (handle != NULL, NULL); + + stream = g_object_new (G_TYPE_WIN32_INPUT_STREAM, + "handle", handle, + "close-handle", close_handle, + NULL); + + return G_INPUT_STREAM (stream); +} + +/** + * g_win32_input_stream_set_close_handle: + * @stream: a #GWin32InputStream + * @close_handle: %TRUE to close the handle when done + * + * Sets whether the handle of @stream shall be closed + * when the stream is closed. + * + * Since: 2.26 + */ +void +g_win32_input_stream_set_close_handle (GWin32InputStream *stream, + gboolean close_handle) +{ + g_return_if_fail (G_IS_WIN32_INPUT_STREAM (stream)); + + close_handle = close_handle != FALSE; + if (stream->priv->close_handle != close_handle) + { + stream->priv->close_handle = close_handle; + g_object_notify (G_OBJECT (stream), "close-handle"); + } +} + +/** + * g_win32_input_stream_get_close_handle: + * @stream: a #GWin32InputStream + * + * Returns whether the handle of @stream will be + * closed when the stream is closed. + * + * Returns: %TRUE if the handle is closed when done + * + * Since: 2.26 + */ +gboolean +g_win32_input_stream_get_close_handle (GWin32InputStream *stream) +{ + g_return_val_if_fail (G_IS_WIN32_INPUT_STREAM (stream), FALSE); + + return stream->priv->close_handle; +} + +/** + * g_win32_input_stream_get_handle: + * @stream: a #GWin32InputStream + * + * Return the Windows file handle that the stream reads from. + * + * Returns: The file handle of @stream + * + * Since: 2.26 + */ +void * +g_win32_input_stream_get_handle (GWin32InputStream *stream) +{ + g_return_val_if_fail (G_IS_WIN32_INPUT_STREAM (stream), NULL); + + return stream->priv->handle; +} + GInputStream * g_win32_input_stream_new_from_fd (gint fd, gboolean close_fd) diff --git a/gio/gwin32mount.c b/gio/gwin32mount.c index 5ae80c8..b3d51ef 100644 --- a/gio/gwin32mount.c +++ b/gio/gwin32mount.c @@ -35,7 +35,6 @@ #include "gmountprivate.h" #include "gvolumemonitor.h" #include "gthemedicon.h" -#include "gsimpleasyncresult.h" #include "glibintl.h" diff --git a/gio/gwin32outputstream.c b/gio/gwin32outputstream.c index f69212b..083746c 100644 --- a/gio/gwin32outputstream.c +++ b/gio/gwin32outputstream.c @@ -31,11 +31,9 @@ #include "gwin32outputstream.h" #include "giowin32-priv.h" #include "gcancellable.h" -#include "gsimpleasyncresult.h" #include "gasynchelper.h" #include "glibintl.h" - /** * SECTION:gwin32outputstream * @short_description: Streaming output operations for Windows file handles @@ -50,79 +48,22 @@ * when using it. */ -enum { - PROP_0, - PROP_HANDLE, - PROP_CLOSE_HANDLE -}; - struct _GWin32OutputStreamPrivate { HANDLE handle; gboolean close_handle; gint fd; }; -G_DEFINE_TYPE_WITH_PRIVATE (GWin32OutputStream, g_win32_output_stream, G_TYPE_OUTPUT_STREAM) - -static void g_win32_output_stream_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void g_win32_output_stream_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); -static gssize g_win32_output_stream_write (GOutputStream *stream, - const void *buffer, - gsize count, - GCancellable *cancellable, - GError **error); -static gboolean g_win32_output_stream_close (GOutputStream *stream, - GCancellable *cancellable, - GError **error); - - -static void -g_win32_output_stream_class_init (GWin32OutputStreamClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - GOutputStreamClass *stream_class = G_OUTPUT_STREAM_CLASS (klass); - - gobject_class->get_property = g_win32_output_stream_get_property; - gobject_class->set_property = g_win32_output_stream_set_property; - - stream_class->write_fn = g_win32_output_stream_write; - stream_class->close_fn = g_win32_output_stream_close; +enum { + PROP_0, + PROP_HANDLE, + PROP_CLOSE_HANDLE, + LAST_PROP +}; - /** - * GWin32OutputStream:handle: - * - * The file handle that the stream writes to. - * - * Since: 2.26 - */ - g_object_class_install_property (gobject_class, - PROP_HANDLE, - g_param_spec_pointer ("handle", - P_("File handle"), - P_("The file handle to write to"), - G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)); +static GParamSpec *props[LAST_PROP]; - /** - * GWin32OutputStream:close-handle: - * - * Whether to close the file handle when the stream is closed. - * - * Since: 2.26 - */ - g_object_class_install_property (gobject_class, - PROP_CLOSE_HANDLE, - g_param_spec_boolean ("close-handle", - P_("Close file handle"), - P_("Whether to close the file handle when the stream is closed"), - TRUE, - G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)); -} +G_DEFINE_TYPE_WITH_PRIVATE (GWin32OutputStream, g_win32_output_stream, G_TYPE_OUTPUT_STREAM) static void g_win32_output_stream_set_property (GObject *object, @@ -171,106 +112,6 @@ g_win32_output_stream_get_property (GObject *object, } } -static void -g_win32_output_stream_init (GWin32OutputStream *win32_stream) -{ - win32_stream->priv = g_win32_output_stream_get_instance_private (win32_stream); - win32_stream->priv->handle = NULL; - win32_stream->priv->close_handle = TRUE; - win32_stream->priv->fd = -1; -} - -/** - * g_win32_output_stream_new: - * @handle: a Win32 file handle - * @close_handle: %TRUE to close the handle when done - * - * Creates a new #GWin32OutputStream for the given @handle. - * - * If @close_handle, is %TRUE, the handle will be closed when the - * output stream is destroyed. - * - * Returns: a new #GOutputStream - * - * Since: 2.26 -**/ -GOutputStream * -g_win32_output_stream_new (void *handle, - gboolean close_handle) -{ - GWin32OutputStream *stream; - - g_return_val_if_fail (handle != NULL, NULL); - - stream = g_object_new (G_TYPE_WIN32_OUTPUT_STREAM, - "handle", handle, - "close-handle", close_handle, - NULL); - - return G_OUTPUT_STREAM (stream); -} - -/** - * g_win32_output_stream_set_close_handle: - * @stream: a #GWin32OutputStream - * @close_handle: %TRUE to close the handle when done - * - * Sets whether the handle of @stream shall be closed when the stream - * is closed. - * - * Since: 2.26 - */ -void -g_win32_output_stream_set_close_handle (GWin32OutputStream *stream, - gboolean close_handle) -{ - g_return_if_fail (G_IS_WIN32_OUTPUT_STREAM (stream)); - - close_handle = close_handle != FALSE; - if (stream->priv->close_handle != close_handle) - { - stream->priv->close_handle = close_handle; - g_object_notify (G_OBJECT (stream), "close-handle"); - } -} - -/** - * g_win32_output_stream_get_close_handle: - * @stream: a #GWin32OutputStream - * - * Returns whether the handle of @stream will be closed when the - * stream is closed. - * - * Returns: %TRUE if the handle is closed when done - * - * Since: 2.26 - */ -gboolean -g_win32_output_stream_get_close_handle (GWin32OutputStream *stream) -{ - g_return_val_if_fail (G_IS_WIN32_OUTPUT_STREAM (stream), FALSE); - - return stream->priv->close_handle; -} - -/** - * g_win32_output_stream_get_handle: - * @stream: a #GWin32OutputStream - * - * Return the Windows handle that the stream writes to. - * - * Returns: The handle descriptor of @stream - * - * Since: 2.26 - */ -void * -g_win32_output_stream_get_handle (GWin32OutputStream *stream) -{ - g_return_val_if_fail (G_IS_WIN32_OUTPUT_STREAM (stream), NULL); - - return stream->priv->handle; -} - static gssize g_win32_output_stream_write (GOutputStream *stream, const void *buffer, @@ -356,9 +197,12 @@ g_win32_output_stream_close (GOutputStream *stream, { if (close (win32_stream->priv->fd) < 0) { - g_set_error_literal (error, G_IO_ERROR, - g_io_error_from_errno (errno), - g_strerror (errno)); + int errsv = errno; + + g_set_error (error, G_IO_ERROR, + g_io_error_from_errno (errsv), + _("Error closing file descriptor: %s"), + g_strerror (errsv)); return FALSE; } } @@ -382,9 +226,156 @@ g_win32_output_stream_close (GOutputStream *stream, return TRUE; } +static void +g_win32_output_stream_class_init (GWin32OutputStreamClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + GOutputStreamClass *stream_class = G_OUTPUT_STREAM_CLASS (klass); + + gobject_class->get_property = g_win32_output_stream_get_property; + gobject_class->set_property = g_win32_output_stream_set_property; + + stream_class->write_fn = g_win32_output_stream_write; + stream_class->close_fn = g_win32_output_stream_close; + + /** + * GWin32OutputStream:handle: + * + * The file handle that the stream writes to. + * + * Since: 2.26 + */ + props[PROP_HANDLE] = + g_param_spec_pointer ("handle", + P_("File handle"), + P_("The file handle to write to"), + G_PARAM_READABLE | + G_PARAM_WRITABLE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + + /** + * GWin32OutputStream:close-handle: + * + * Whether to close the file handle when the stream is closed. + * + * Since: 2.26 + */ + props[PROP_CLOSE_HANDLE] = + g_param_spec_boolean ("close-handle", + P_("Close file handle"), + P_("Whether to close the file handle when the stream is closed"), + TRUE, + G_PARAM_READABLE | + G_PARAM_WRITABLE | + G_PARAM_STATIC_STRINGS); + + g_object_class_install_properties (gobject_class, LAST_PROP, props); +} + +static void +g_win32_output_stream_init (GWin32OutputStream *win32_stream) +{ + win32_stream->priv = g_win32_output_stream_get_instance_private (win32_stream); + win32_stream->priv->handle = NULL; + win32_stream->priv->close_handle = TRUE; + win32_stream->priv->fd = -1; +} + +/** + * g_win32_output_stream_new: + * @handle: a Win32 file handle + * @close_handle: %TRUE to close the handle when done + * + * Creates a new #GWin32OutputStream for the given @handle. + * + * If @close_handle, is %TRUE, the handle will be closed when the + * output stream is destroyed. + * + * Returns: a new #GOutputStream + * + * Since: 2.26 +**/ +GOutputStream * +g_win32_output_stream_new (void *handle, + gboolean close_handle) +{ + GWin32OutputStream *stream; + + g_return_val_if_fail (handle != NULL, NULL); + + stream = g_object_new (G_TYPE_WIN32_OUTPUT_STREAM, + "handle", handle, + "close-handle", close_handle, + NULL); + + return G_OUTPUT_STREAM (stream); +} + +/** + * g_win32_output_stream_set_close_handle: + * @stream: a #GWin32OutputStream + * @close_handle: %TRUE to close the handle when done + * + * Sets whether the handle of @stream shall be closed when the stream + * is closed. + * + * Since: 2.26 + */ +void +g_win32_output_stream_set_close_handle (GWin32OutputStream *stream, + gboolean close_handle) +{ + g_return_if_fail (G_IS_WIN32_OUTPUT_STREAM (stream)); + + close_handle = close_handle != FALSE; + if (stream->priv->close_handle != close_handle) + { + stream->priv->close_handle = close_handle; + g_object_notify (G_OBJECT (stream), "close-handle"); + } +} + +/** + * g_win32_output_stream_get_close_handle: + * @stream: a #GWin32OutputStream + * + * Returns whether the handle of @stream will be closed when the + * stream is closed. + * + * Returns: %TRUE if the handle is closed when done + * + * Since: 2.26 + */ +gboolean +g_win32_output_stream_get_close_handle (GWin32OutputStream *stream) +{ + g_return_val_if_fail (G_IS_WIN32_OUTPUT_STREAM (stream), FALSE); + + return stream->priv->close_handle; +} + +/** + * g_win32_output_stream_get_handle: + * @stream: a #GWin32OutputStream + * + * Return the Windows handle that the stream writes to. + * + * Returns: The handle descriptor of @stream + * + * Since: 2.26 + */ +void * +g_win32_output_stream_get_handle (GWin32OutputStream *stream) +{ + g_return_val_if_fail (G_IS_WIN32_OUTPUT_STREAM (stream), NULL); + + return stream->priv->handle; +} + GOutputStream * g_win32_output_stream_new_from_fd (gint fd, - gboolean close_fd) + gboolean close_fd) { GWin32OutputStream *win32_stream; diff --git a/gio/gwin32registrykey.c b/gio/gwin32registrykey.c new file mode 100644 index 0000000..69cd9ed --- /dev/null +++ b/gio/gwin32registrykey.c @@ -0,0 +1,2419 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2014 Руслан Ижбулатов + * + * 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, see . + * + */ + +#include "config.h" +#include "ginitable.h" +#include "gwin32registrykey.h" +#include +#ifdef _MSC_VER +#pragma warning ( disable:4005 ) +#endif +#include +#include +#include + +#ifndef _WDMDDK_ +typedef enum _KEY_INFORMATION_CLASS { + KeyBasicInformation, + KeyNodeInformation, + KeyFullInformation, + KeyNameInformation, + KeyCachedInformation, + KeyFlagsInformation, + KeyVirtualizationInformation, + KeyHandleTagsInformation, + MaxKeyInfoClass +} KEY_INFORMATION_CLASS; + +typedef struct _KEY_BASIC_INFORMATION { + LARGE_INTEGER LastWriteTime; + ULONG TitleIndex; + ULONG NameLength; + WCHAR Name[1]; +} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION; +#endif + +#if !defined (__OBJECT_ATTRIBUTES_DEFINED) && defined (__MINGW32_) +#define __OBJECT_ATTRIBUTES_DEFINED + typedef struct _OBJECT_ATTRIBUTES { + ULONG Length; +#ifdef _WIN64 + ULONG pad1; +#endif + HANDLE RootDirectory; + PUNICODE_STRING ObjectName; + ULONG Attributes; +#ifdef _WIN64 + ULONG pad2; +#endif + PVOID SecurityDescriptor; + PVOID SecurityQualityOfService; + } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; +#endif + +#ifndef HKEY_CURRENT_USER_LOCAL_SETTINGS +#define HKEY_CURRENT_USER_LOCAL_SETTINGS ((HKEY) (ULONG_PTR)((LONG)0x80000007)) +#endif + +#if !defined (__UNICODE_STRING_DEFINED) && defined (__MINGW32_) +#define __UNICODE_STRING_DEFINED +typedef struct _UNICODE_STRING { + USHORT Length; + USHORT MaximumLength; + PWSTR Buffer; +} UNICODE_STRING, *PUNICODE_STRING; +#endif +typedef const UNICODE_STRING* PCUNICODE_STRING; + +typedef NTSTATUS +(NTAPI * NtQueryKeyFunc)(HANDLE key_handle, + KEY_INFORMATION_CLASS key_info_class, + PVOID key_info_buffer, + ULONG key_info_buffer_size, + PULONG result_size); + +typedef NTSTATUS +(* NtNotifyChangeMultipleKeysFunc)(HANDLE key_handle, + ULONG subkey_count, + POBJECT_ATTRIBUTES subkeys, + HANDLE event, + PIO_APC_ROUTINE apc_routine, + PVOID apc_closure, + PIO_STATUS_BLOCK status_block, + ULONG filter, + BOOLEAN watch_tree, + PVOID buffer, + ULONG buffer_size, + BOOLEAN async); + +static NtQueryKeyFunc nt_query_key = NULL; +static NtNotifyChangeMultipleKeysFunc nt_notify_change_multiple_keys = NULL; + +#define G_WIN32_KEY_UNWATCHED 0 +#define G_WIN32_KEY_WATCHED 1 +#define G_WIN32_KEY_UNCHANGED 0 +#define G_WIN32_KEY_CHANGED 1 +#define G_WIN32_KEY_UNKNOWN -1 + +enum +{ + PROP_0, + PROP_PATH, + PROP_PATH_UTF16, + PROP_MAX, +}; + +typedef enum +{ + G_WIN32_REGISTRY_UPDATED_NOTHING = 0, + G_WIN32_REGISTRY_UPDATED_PATH = 1, +} GWin32RegistryKeyUpdateFlag; + +static gunichar2 * +g_wcsdup (const gunichar2 *str, + gssize str_size) +{ + if (str_size == -1) + { + str_size = wcslen (str) + 1; + str_size *= sizeof (gunichar2); + } + return g_memdup (str, str_size); +} + +/** + * g_win32_registry_subkey_iter_copy: + * @iter: an iterator + * + * Creates a dynamically-allocated copy of an iterator. Dynamically-allocated + * state of the iterator is duplicated too. + * + * Returns: (transfer full): a copy of the @iter, + * free with g_win32_registry_subkey_iter_free () + * + * Since: 2.46 + **/ +GWin32RegistrySubkeyIter * +g_win32_registry_subkey_iter_copy (const GWin32RegistrySubkeyIter *iter) +{ + GWin32RegistrySubkeyIter *new_iter; + + g_return_val_if_fail (iter != NULL, NULL); + + new_iter = g_new0 (GWin32RegistrySubkeyIter, 1); + + new_iter->key = g_object_ref (iter->key); + new_iter->counter = iter->counter; + new_iter->subkey_count = iter->subkey_count; + new_iter->subkey_name = g_wcsdup (iter->subkey_name, iter->subkey_name_size); + new_iter->subkey_name_size = iter->subkey_name_size; + + if (iter->subkey_name_u8) + new_iter->subkey_name_u8 = iter->subkey_name_u8; + else + new_iter->subkey_name_u8 = NULL; + + return new_iter; +} + +/** + * g_win32_registry_subkey_iter_free: + * @iter: a dynamically-allocated iterator + * + * Free an iterator allocated on the heap. For iterators that are allocated + * on the stack use g_win32_registry_subkey_iter_clear () instead. + * + * Since: 2.46 + **/ +void +g_win32_registry_subkey_iter_free (GWin32RegistrySubkeyIter *iter) +{ + g_return_if_fail (iter != NULL); + + g_object_unref (iter->key); + g_free (iter->subkey_name); + g_free (iter->subkey_name_u8); + g_free (iter); +} + +/** + * g_win32_registry_subkey_iter_assign: + * @iter: a #GWin32RegistrySubkeyIter + * @other: another #GWin32RegistrySubkeyIter + * + * Assigns the value of @other to @iter. This function + * is not useful in applications, because iterators can be assigned + * with `GWin32RegistrySubkeyIter i = j;`. The + * function is used by language bindings. + * + * Since: 2.46 + **/ +void +g_win32_registry_subkey_iter_assign (GWin32RegistrySubkeyIter *iter, + const GWin32RegistrySubkeyIter *other) +{ + g_return_if_fail (iter != NULL); + g_return_if_fail (other != NULL); + + *iter = *other; +} + + +G_DEFINE_BOXED_TYPE (GWin32RegistrySubkeyIter, g_win32_registry_subkey_iter, + g_win32_registry_subkey_iter_copy, + g_win32_registry_subkey_iter_free) + +/** + * g_win32_registry_value_iter_copy: + * @iter: an iterator + * + * Creates a dynamically-allocated copy of an iterator. Dynamically-allocated + * state of the iterator is duplicated too. + * + * Returns: (transfer full): a copy of the @iter, + * free with g_win32_registry_value_iter_free (). + * + * Since: 2.46 + **/ +GWin32RegistryValueIter * +g_win32_registry_value_iter_copy (const GWin32RegistryValueIter *iter) +{ + GWin32RegistryValueIter *new_iter; + + g_return_val_if_fail (iter != NULL, NULL); + + new_iter = g_new0 (GWin32RegistryValueIter, 1); + + new_iter->key = g_object_ref (iter->key); + new_iter->counter = iter->counter; + new_iter->value_count = iter->value_count; + new_iter->value_name = g_wcsdup (iter->value_name, iter->value_name_size); + new_iter->value_name_size = iter->value_name_size; + + if (iter->value_data != NULL) + new_iter->value_data = g_memdup (iter->value_data, iter->value_data_size); + + new_iter->value_data_size = iter->value_data_size; + + if (iter->value_name_u8 != NULL) + new_iter->value_name_u8 = g_strdup (iter->value_name_u8); + + new_iter->value_name_u8_len = iter->value_name_u8_len; + + if (iter->value_data_u8 != NULL) + new_iter->value_data_u8 = g_strdup (iter->value_data_u8); + + new_iter->value_data_u8_size = iter->value_data_u8_size; + + if (iter->value_data_expanded != NULL) + new_iter->value_data_expanded = g_wcsdup ((gunichar2 *) iter->value_data_expanded, + iter->value_data_expanded_charsize * sizeof (gunichar2)); + + new_iter->value_data_expanded_charsize = iter->value_data_expanded_charsize; + + if (iter->value_data_expanded_u8 != NULL) + new_iter->value_data_expanded_u8 = g_memdup (iter->value_data_expanded_u8, + iter->value_data_expanded_charsize); + + new_iter->value_data_expanded_u8_size = iter->value_data_expanded_charsize; + + return new_iter; +} + +/** + * g_win32_registry_value_iter_free: + * @iter: a dynamically-allocated iterator + * + * Free an iterator allocated on the heap. For iterators that are allocated + * on the stack use g_win32_registry_value_iter_clear () instead. + * + * Since: 2.46 + **/ +void +g_win32_registry_value_iter_free (GWin32RegistryValueIter *iter) +{ + g_return_if_fail (iter != NULL); + + g_object_unref (iter->key); + g_free (iter->value_name); + g_free (iter->value_data); + g_free (iter->value_data_expanded); + g_free (iter->value_name_u8); + g_free (iter->value_data_u8); + g_free (iter->value_data_expanded_u8); + g_free (iter); +} + +/** + * g_win32_registry_value_iter_assign: + * @iter: a #GWin32RegistryValueIter + * @other: another #GWin32RegistryValueIter + * + * Assigns the value of @other to @iter. This function + * is not useful in applications, because iterators can be assigned + * with `GWin32RegistryValueIter i = j;`. The + * function is used by language bindings. + * + * Since: 2.46 + **/ +void +g_win32_registry_value_iter_assign (GWin32RegistryValueIter *iter, + const GWin32RegistryValueIter *other) +{ + g_return_if_fail (iter != NULL); + g_return_if_fail (other != NULL); + + *iter = *other; +} + +G_DEFINE_BOXED_TYPE (GWin32RegistryValueIter, g_win32_registry_value_iter, + g_win32_registry_value_iter_copy, + g_win32_registry_value_iter_free) + +/** + * SECTION:gwin32registrykey + * @title: GWin32RegistryKey + * @short_description: W32 registry access helper + * @include: gio/win32/gwin32registrykey.h + * + * #GWin32RegistryKey represents a single Windows Registry key. + * + * #GWin32RegistryKey is used by a number of helper functions that read + * Windows Registry. All keys are opened with read-only access, and at + * the moment there is no API for writing into registry keys or creating + * new ones. + * + * #GWin32RegistryKey implements the #GInitable interface, so if it is manually + * constructed by e.g. g_object_new() you must call g_initable_init() and check + * the results before using the object. This is done automatically + * in g_win32_registry_key_new() and g_win32_registry_key_get_child(), so these + * functions can return %NULL. + * + * To increase efficiency, a UTF-16 variant is available for all functions + * that deal with key or value names in the registry. Use these to perform + * deep registry queries or other operations that require querying a name + * of a key or a value and then opening it (or querying its data). The use + * of UTF-16 functions avoids the overhead of converting names to UTF-8 and + * back. + * + * All functions operate in current user's context (it is not possible to + * access registry tree of a different user). + * + * Key paths must use '\\' as a separator, '/' is not supported. Key names + * must not include '\\', because it's used as a separator. Value names + * can include '\\'. + * + * Key and value names are not case sensitive. + * + * Full key name (excluding the pre-defined ancestor's name) can't exceed + * 255 UTF-16 characters, give or take. Value name can't exceed 16383 UTF-16 + * characters. Tree depth is limited to 512 levels. + **/ + +struct _GWin32RegistryKeyPrivate { + /* Ancestor of this key. May not be the immediate parent, because + * RegOpenKeyEx() allows grand*-children to be opened transitively. + * May be NULL. + */ + GWin32RegistryKey *ancestor; + + /* Handle to the key */ + HKEY handle; + + /* Full absolute path of the key, in UTF-16. Always allocated. + * Can become out of sync if the key is renamed from while we have it + * open, check watch_indicator to see if anything changed. + */ + gunichar2 *absolute_path_w; + + /* Full absolute path of the key, in UTF-8. Allocated when needed by + * converting the UTF-16 value from absolute_path_w. */ + gchar *absolute_path; + + /* TRUE if this object represents one of the pre-defined keys + * (and thus must not be closed). + */ + gboolean predefined; + + /* Set to G_WIN32_KEY_UNWATCHED if the key is not being watched. + * Set to G_WIN32_KEY_WATCHED when the key is put on watch notification. + */ + gint watch_indicator; + + /* Set to G_WIN32_KEY_UNKNOWN while the key is not being watched. + * Set to G_WIN32_KEY_UNCHANGED once the key is put under watch. + * Set to G_WIN32_KEY_CHANGED by the watch notification APC on key change. + */ + gint change_indicator; + + /* Unset after the key is changed, individual bits are set when their + * respective key parameters are updated from the registry. + * This prevents GLib from re-querying things like key name each time + * one is requested by the client while key is in G_WIN32_KEY_CHANGED state. + */ + GWin32RegistryKeyUpdateFlag update_flags; + + GWin32RegistryKeyWatchCallbackFunc callback; + + gpointer user_data; +}; + +static void g_win32_registry_key_initable_iface_init (GInitableIface *iface); +static gboolean g_win32_registry_key_initable_init (GInitable *initable, + GCancellable *cancellable, + GError **error); + +G_DEFINE_TYPE_WITH_CODE (GWin32RegistryKey, g_win32_registry_key, G_TYPE_OBJECT, + G_ADD_PRIVATE (GWin32RegistryKey) + G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, + g_win32_registry_key_initable_iface_init)); + +static void +g_win32_registry_key_dispose (GObject *object) +{ + GWin32RegistryKey *key; + GWin32RegistryKeyPrivate *priv; + + key = G_WIN32_REGISTRY_KEY (object); + priv = key->priv; + + g_clear_object (&priv->ancestor); + g_clear_pointer (&priv->absolute_path_w, g_free); + g_clear_pointer (&priv->absolute_path, g_free); + + if (!priv->predefined && priv->handle != INVALID_HANDLE_VALUE) + { + RegCloseKey (priv->handle); + priv->handle = INVALID_HANDLE_VALUE; + } + + G_OBJECT_CLASS (g_win32_registry_key_parent_class)->dispose (object); +} + +/** + * g_win32_registry_key_new: + * @path: absolute full name of a key to open (in UTF-8) + * @error: (nullable): a pointer to a %NULL #GError, or %NULL + * + * Creates an object that represents a registry key specified by @path. + * @path must start with one of the following pre-defined names: + * - HKEY_CLASSES_ROOT + * - HKEY_CURRENT_CONFIG + * - HKEY_CURRENT_USER + * - HKEY_CURRENT_USER_LOCAL_SETTINGS + * - HKEY_LOCAL_MACHINE + * - HKEY_PERFORMANCE_DATA + * - HKEY_PERFORMANCE_NLSTEXT + * - HKEY_PERFORMANCE_TEXT + * - HKEY_USERS + * @path must not end with '\\'. + * + * Returns: (nullable) (transfer full): a #GWin32RegistryKey or %NULL if can't + * be opened. Free with g_object_unref(). + */ +GWin32RegistryKey * +g_win32_registry_key_new (const gchar *path, + GError **error) +{ + g_return_val_if_fail (path != NULL, NULL); + + return g_initable_new (G_TYPE_WIN32_REGISTRY_KEY, + NULL, + error, + "path", + path, + NULL); +} + +/** + * g_win32_registry_key_new_w: + * @path: (in) (transfer none): absolute full name of a key to open (in UTF-16) + * @error: (inout) (nullable): a pointer to a %NULL #GError, or %NULL + * + * Creates an object that represents a registry key specified by @path. + * @path must start with one of the following pre-defined names: + * - HKEY_CLASSES_ROOT + * - HKEY_CURRENT_CONFIG + * - HKEY_CURRENT_USER + * - HKEY_CURRENT_USER_LOCAL_SETTINGS + * - HKEY_LOCAL_MACHINE + * - HKEY_PERFORMANCE_DATA + * - HKEY_PERFORMANCE_NLSTEXT + * - HKEY_PERFORMANCE_TEXT + * - HKEY_USERS + * @path must not end with L'\\'. + * + * Returns: (nullable) (transfer full): a #GWin32RegistryKey or %NULL if can't + * be opened. Free with g_object_unref(). + */ +GWin32RegistryKey * +g_win32_registry_key_new_w (const gunichar2 *path, + GError **error) +{ + GObject *result; + + g_return_val_if_fail (path != NULL, NULL); + + result = g_initable_new (G_TYPE_WIN32_REGISTRY_KEY, + NULL, + error, + "path-utf16", + g_wcsdup (path, -1), + NULL); + + return result ? G_WIN32_REGISTRY_KEY (result) : NULL; +} + +static void +g_win32_registry_key_initable_iface_init (GInitableIface *iface) +{ + iface->init = g_win32_registry_key_initable_init; +} + +static gboolean +g_win32_registry_key_initable_init (GInitable *initable, + GCancellable *cancellable, + GError **error) +{ + GWin32RegistryKey *key; + GWin32RegistryKeyPrivate *priv; + gunichar2 *path; + gunichar2 *first_chunk_end; + gsize first_chunk_len; + gunichar2 *second_chunk_begin; + gunichar2 *first_chunk; + HKEY ancestor; + HKEY key_handle; + LONG opened; + + g_return_val_if_fail (G_IS_WIN32_REGISTRY_KEY (initable), FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + key = G_WIN32_REGISTRY_KEY (initable); + priv = key->priv; + + if (priv->absolute_path_w == NULL) + { + priv->absolute_path_w = g_utf8_to_utf16 (priv->absolute_path, + -1, + NULL, + NULL, + error); + + if (priv->absolute_path_w == NULL) + return FALSE; + } + + path = priv->absolute_path_w; + + first_chunk_end = wcschr (path, L'\\'); + + if (first_chunk_end == NULL) + first_chunk_end = &path[wcslen (path)]; + + first_chunk_len = first_chunk_end - path; + first_chunk = g_wcsdup (path, -1); + first_chunk[first_chunk_len] = L'\0'; + if (wcscmp (first_chunk, L"HKEY_CLASSES_ROOT") == 0) + ancestor = HKEY_CLASSES_ROOT; + else if (wcscmp (first_chunk, L"HKEY_LOCAL_MACHINE") == 0) + ancestor = HKEY_LOCAL_MACHINE; + else if (wcscmp (first_chunk, L"HKEY_CURRENT_USER") == 0) + ancestor = HKEY_CURRENT_USER; + else if (wcscmp (first_chunk, L"HKEY_CURRENT_CONFIG") == 0) + ancestor = HKEY_CURRENT_CONFIG; + else if (wcscmp (first_chunk, L"HKEY_CURRENT_USER_LOCAL_SETTINGS") == 0) + ancestor = HKEY_CURRENT_USER_LOCAL_SETTINGS; + else if (wcscmp (first_chunk, L"HKEY_USERS") == 0) + ancestor = HKEY_USERS; + else if (wcscmp (first_chunk, L"HKEY_PERFORMANCE_DATA") == 0) + ancestor = HKEY_PERFORMANCE_DATA; + else if (wcscmp (first_chunk, L"HKEY_PERFORMANCE_NLSTEXT") == 0) + ancestor = HKEY_PERFORMANCE_NLSTEXT; + else if (wcscmp (first_chunk, L"HKEY_PERFORMANCE_TEXT") == 0) + ancestor = HKEY_PERFORMANCE_TEXT; + else + { + g_critical ("Root key '%S' is not a pre-defined key", first_chunk); + g_free (first_chunk); + return FALSE; + } + + g_free (first_chunk); + + second_chunk_begin = first_chunk_end; + + while (second_chunk_begin[0] != L'\0' && second_chunk_begin[0] == L'\\') + second_chunk_begin++; + + if (second_chunk_begin != first_chunk_end && second_chunk_begin[0] == L'\0') + { + g_critical ("Key name '%S' ends with '\\'", path); + return FALSE; + } + + opened = RegOpenKeyExW (ancestor, second_chunk_begin, 0, KEY_READ, &key_handle); + + if (opened != ERROR_SUCCESS) + { + g_set_error (error, G_IO_ERROR, g_io_error_from_win32_error (opened), + "Failed to open registry key '%S'", path); + return FALSE; + } + + priv->ancestor = NULL; + priv->handle = key_handle; + priv->predefined = (second_chunk_begin[0] == L'\0'); + + return TRUE; +} + +/** + * g_win32_registry_key_get_child: + * @key: (in) (transfer none): a parent #GWin32RegistryKey + * @subkey: (in) (transfer none): name of a child key to open (in UTF-8), relative to @key + * @error: (inout) (nullable): a pointer to a %NULL #GError, or %NULL + * + * Opens a @subkey of the @key. + * + * Returns: (nullable): a #GWin32RegistryKey or %NULL if can't be opened. Free + * with g_object_unref(). + */ +GWin32RegistryKey * +g_win32_registry_key_get_child (GWin32RegistryKey *key, + const gchar *subkey, + GError **error) +{ + gunichar2 *subkey_w; + GWin32RegistryKey *result = NULL; + + g_return_val_if_fail (G_IS_WIN32_REGISTRY_KEY (key), NULL); + g_return_val_if_fail (subkey != NULL, NULL); + g_return_val_if_fail (error == NULL || *error == NULL, NULL); + + subkey_w = g_utf8_to_utf16 (subkey, -1, NULL, NULL, error); + + if (subkey_w != NULL) + { + result = g_win32_registry_key_get_child_w (key, subkey_w, error); + g_free (subkey_w); + } + + return result; +} + +/** + * g_win32_registry_key_get_child_w: + * @key: (in) (transfer none): a parent #GWin32RegistryKey + * @subkey: (in) (transfer none): name of a child key to open (in UTF-8), relative to @key + * @error: (inout) (nullable): a pointer to a %NULL #GError, or %NULL + * + * Opens a @subkey of the @key. + * + * Returns: (nullable): a #GWin32RegistryKey or %NULL if can't be opened. Free + * with g_object_unref(). + */ +GWin32RegistryKey * +g_win32_registry_key_get_child_w (GWin32RegistryKey *key, + const gunichar2 *subkey, + GError **error) +{ + HKEY key_handle; + LONG opened; + const gunichar2 *end_of_subkey; + gsize subkey_len; + GWin32RegistryKey *result; + const gunichar2 *key_path; + + g_return_val_if_fail (G_IS_WIN32_REGISTRY_KEY (key), NULL); + g_return_val_if_fail (subkey != NULL, NULL); + g_return_val_if_fail (error == NULL || *error == NULL, NULL); + + if (subkey[0] == L'\\') + { + g_critical ("Subkey name '%S' starts with '\\'", subkey); + return NULL; + } + + subkey_len = wcslen (subkey); + end_of_subkey = &subkey[subkey_len]; + + if (subkey_len == 0) + end_of_subkey = subkey; + + if (end_of_subkey[0] == L'\\') + { + g_critical ("Subkey name '%S' ends with '\\'", subkey); + return NULL; + } + + key_path = g_win32_registry_key_get_path_w (key); + opened = RegOpenKeyExW (key->priv->handle, subkey, 0, KEY_READ, &key_handle); + + if (opened != ERROR_SUCCESS) + { + g_set_error (error, G_IO_ERROR, g_io_error_from_win32_error (opened), + "Failed to open registry subkey '%S' of key '%S'", + subkey, key_path); + return NULL; + } + + result = g_object_new (G_TYPE_WIN32_REGISTRY_KEY, NULL); + + result->priv->handle = key_handle; + result->priv->absolute_path_w = + g_malloc ((wcslen (key_path) + 2 + subkey_len) * sizeof (gunichar2)); + result->priv->absolute_path_w[0] = L'\0'; + wcscat (&result->priv->absolute_path_w[0], key_path); + wcscat (&result->priv->absolute_path_w[wcslen (key_path)], L"\\"); + wcscat (&result->priv->absolute_path_w[wcslen (key_path) + 1], subkey); + result->priv->predefined = (subkey[0] == L'\0' && key->priv->predefined); + + if (subkey[0] != L'\0') + result->priv->ancestor = g_object_ref (key); + else + result->priv->ancestor = NULL; + + result->priv->change_indicator = G_WIN32_KEY_UNKNOWN; + + return result; +} + +/** + * g_win32_registry_subkey_iter_init: + * @iter: (in) (transfer none): a pointer to a #GWin32RegistrySubkeyIter + * @key: (in) (transfer none): a #GWin32RegistryKey to iterate over + * @error: (inout) (nullable): a pointer to %NULL #GError, or %NULL + * + * Initialises (without allocating) a #GWin32RegistrySubkeyIter. @iter may be + * completely uninitialised prior to this call; its old value is + * ignored. + * + * The iterator remains valid for as long as @key exists. + * Clean up its internal buffers with a call to + * g_win32_registry_subkey_iter_clear() when done. + * + * Returns: %TRUE if iterator was initialized successfully, %FALSE on error. + * + * Since: 2.46 + **/ +gboolean +g_win32_registry_subkey_iter_init (GWin32RegistrySubkeyIter *iter, + GWin32RegistryKey *key, + GError **error) +{ + LONG status; + DWORD subkey_count; + DWORD max_subkey_len; + + g_return_val_if_fail (iter != NULL, FALSE); + g_return_val_if_fail (G_IS_WIN32_REGISTRY_KEY (key), FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + status = RegQueryInfoKeyW (key->priv->handle, + NULL, NULL, NULL, + &subkey_count, &max_subkey_len, + NULL, NULL, NULL, NULL, NULL, NULL); + + if (status != ERROR_SUCCESS) + { + g_set_error (error, G_IO_ERROR, g_io_error_from_win32_error (status), + "Failed to query info for registry key '%S'", + g_win32_registry_key_get_path_w (key)); + return FALSE; + } + + iter->key = g_object_ref (key); + iter->counter = -1; + iter->subkey_count = subkey_count; + iter->subkey_name_size = sizeof (gunichar2) * (max_subkey_len + 1); + iter->subkey_name = g_malloc (iter->subkey_name_size); + iter->subkey_name_u8 = NULL; + + return TRUE; +} + +/** + * g_win32_registry_subkey_iter_clear: + * @iter: (in) (transfer none): a #GWin32RegistrySubkeyIter + * + * Frees internal buffers of a #GWin32RegistrySubkeyIter. + * + * Since: 2.46 + **/ +void +g_win32_registry_subkey_iter_clear (GWin32RegistrySubkeyIter *iter) +{ + g_return_if_fail (iter != NULL); + + g_free (iter->subkey_name); + g_free (iter->subkey_name_u8); + g_clear_object (&iter->key); +} + +/** + * g_win32_registry_subkey_iter_n_subkeys: + * @iter: (in) (transfer none): a #GWin32RegistrySubkeyIter + * + * Queries the number of subkeys items in the key that we are + * iterating over. This is the total number of subkeys -- not the number + * of items remaining. + * + * This information is accurate at the point of iterator initialization, + * and may go out of sync with reality even while subkeys are enumerated. + * + * Returns: the number of subkeys in the key + * + * Since: 2.46 + **/ +gsize +g_win32_registry_subkey_iter_n_subkeys (GWin32RegistrySubkeyIter *iter) +{ + g_return_val_if_fail (iter != NULL, 0); + + return iter->subkey_count; +} + +/** + * g_win32_registry_subkey_iter_next: + * @iter: (in) (transfer none): a #GWin32RegistrySubkeyIter + * @skip_errors: (in): %TRUE if iterator should silently ignore errors (such as + * the actual number of subkeys being less than expected) and + * proceed forward + * @error: (nullable): a pointer to %NULL #GError, or %NULL + * + * Moves iterator to the next subkey. + * Enumeration errors can be ignored if @skip_errors is %TRUE + * + * Here is an example for iterating with g_win32_registry_subkey_iter_next(): + * |[ + * // recursively iterate a key + * void + * iterate_key_recursive (GWin32RegistryKey *key) + * { + * GWin32RegistrySubkeyIter iter; + * gchar *name; + * GWin32RegistryKey *child; + * + * if (!g_win32_registry_subkey_iter_init (&iter, key, NULL)) + * return; + * + * while (g_win32_registry_subkey_iter_next (&iter, TRUE, NULL)) + * { + * if (!g_win32_registry_subkey_iter_get_name (&iter, &name, NULL, NULL)) + * continue; + * + * g_print ("subkey '%s'\n", name); + * child = g_win32_registry_key_get_child (key, name, NULL); + * + * if (child) + * iterate_key_recursive (child); + * } + * + * g_win32_registry_subkey_iter_clear (&iter); + * } + * ]| + * + * Returns: %TRUE if next subkey info was retrieved, %FALSE otherwise. + * + * Since: 2.46 + **/ +gboolean +g_win32_registry_subkey_iter_next (GWin32RegistrySubkeyIter *iter, + gboolean skip_errors, + GError **error) +{ + LONG status; + DWORD subkey_len; + + g_return_val_if_fail (iter != NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + if G_UNLIKELY (iter->counter >= iter->subkey_count) + { + g_critical ("g_win32_registry_subkey_iter_get_next_w: must not be called again " + "after FALSE has already been returned."); + return FALSE; + } + + while (TRUE) + { + iter->counter += 1; + + if (iter->counter >= iter->subkey_count) + return FALSE; + + /* Including 0-terminator */ + subkey_len = iter->subkey_name_size; + status = RegEnumKeyExW (iter->key->priv->handle, + iter->counter, + iter->subkey_name, + &subkey_len, + NULL, NULL, NULL, NULL); + + if (status == ERROR_SUCCESS) + { + iter->subkey_name_len = subkey_len; + + return TRUE; + } + + if (!skip_errors) + { + g_set_error (error, G_IO_ERROR, g_io_error_from_win32_error (status), + "Failed to enumerate subkey #%d for key '%S'", + iter->counter, g_win32_registry_key_get_path_w (iter->key)); + iter->subkey_count = 0; + + return FALSE; + } + } +} + +/** + * g_win32_registry_subkey_iter_get_name_w: + * @iter: (in) (transfer none): a #GWin32RegistrySubkeyIter + * @subkey_name: (out callee-allocates) (transfer none): Pointer to a location + * to store the name of a subkey (in UTF-16). + * @subkey_name_len: (out) (optional) (transfer none): Pointer to a location + * to store the length of @subkey_name, in gunichar2s, excluding + * NUL-terminator. + * %NULL if length is not needed. + * @error: (nullable): a pointer to %NULL #GError, or %NULL + * + * Same as g_win32_registry_subkey_iter_get_next(), but outputs UTF-16-encoded + * data, without converting it to UTF-8 first. + * + * Returns: %TRUE if the name was retrieved, %FALSE otherwise. + * + * Since: 2.46 + **/ +gboolean +g_win32_registry_subkey_iter_get_name_w (GWin32RegistrySubkeyIter *iter, + gunichar2 **subkey_name, + gsize *subkey_name_len, + GError **error) +{ + g_return_val_if_fail (iter != NULL, FALSE); + g_return_val_if_fail (subkey_name != NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + if G_UNLIKELY (iter->counter >= iter->subkey_count) + { + g_critical ("g_win32_registry_subkey_iter_get_name_w: must not be called " + "after FALSE has already been returned by " + "g_win32_registry_subkey_iter_next."); + return FALSE; + } + + *subkey_name = iter->subkey_name; + + if (subkey_name_len) + *subkey_name_len = iter->subkey_name_len; + + return TRUE; +} + +/** + * g_win32_registry_subkey_iter_get_name: + * @iter: (in) (transfer none): a #GWin32RegistrySubkeyIter + * @subkey_name: (out callee-allocates) (transfer none): Pointer to a location + * to store the name of a subkey (in UTF-8). Free with g_free(). + * @subkey_name_len: (out) (optional): Pointer to a location to store the + * length of @subkey_name, in gchars, excluding NUL-terminator. + * %NULL if length is not needed. + * @error: (nullable): a pointer to %NULL #GError, or %NULL + * + * Gets the name of the subkey at the @iter potision. + * + * Returns: %TRUE if the name was retrieved, %FALSE otherwise. + * + * Since: 2.46 + **/ +gboolean +g_win32_registry_subkey_iter_get_name (GWin32RegistrySubkeyIter *iter, + gchar **subkey_name, + gsize *subkey_name_len, + GError **error) +{ + glong subkey_name_len_glong; + + g_return_val_if_fail (iter != NULL, FALSE); + g_return_val_if_fail (subkey_name != NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + if G_UNLIKELY (iter->counter >= iter->subkey_count) + { + g_critical ("g_win32_registry_subkey_iter_get_name_w: must not be called " + "after FALSE has already been returned by " + "g_win32_registry_subkey_iter_next."); + return FALSE; + } + + g_clear_pointer (&iter->subkey_name_u8, g_free); + iter->subkey_name_u8 = g_utf16_to_utf8 (iter->subkey_name, + iter->subkey_name_len, + NULL, + &subkey_name_len_glong, + error); + + if (iter->subkey_name_u8 != NULL) + { + *subkey_name_len = subkey_name_len_glong; + return TRUE; + } + + return FALSE; +} + +/** + * g_win32_registry_value_iter_init: + * @iter: (in) (transfer none): a pointer to a #GWin32RegistryValueIter + * @key: (in) (transfer none): a #GWin32RegistryKey to iterate over + * @error: (nullable): a pointer to %NULL #GError, or %NULL + * + * Initialises (without allocating) a #GWin32RegistryValueIter. @iter may be + * completely uninitialised prior to this call; its old value is + * ignored. + * + * The iterator remains valid for as long as @key exists. + * Clean up its internal buffers with a call to + * g_win32_registry_value_iter_clear() when done. + * + * Returns: %TRUE if iterator was initialized successfully, %FALSE on error. + * + * Since: 2.46 + **/ +gboolean +g_win32_registry_value_iter_init (GWin32RegistryValueIter *iter, + GWin32RegistryKey *key, + GError **error) +{ + LONG status; + DWORD value_count; + DWORD max_value_len; + DWORD max_data_len; + + g_return_val_if_fail (iter != NULL, FALSE); + g_return_val_if_fail (G_IS_WIN32_REGISTRY_KEY (key), FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + status = RegQueryInfoKeyW (key->priv->handle, + NULL, NULL, NULL, NULL, NULL, NULL, + &value_count, &max_value_len, + &max_data_len, NULL, NULL); + + if (status != ERROR_SUCCESS) + { + g_set_error (error, G_IO_ERROR, g_io_error_from_win32_error (status), + "Failed to query info for registry key '%S'", + g_win32_registry_key_get_path_w (key)); + return FALSE; + } + + iter->key = g_object_ref (key); + iter->counter = -1; + iter->value_count = value_count; + iter->value_name_size = sizeof (gunichar2) * (max_value_len + 1); + iter->value_name = g_malloc (iter->value_name_size); + /* FIXME: max_value_data_len is said to have no size limit in newer W32 + * versions (and its size limit in older ones is 1MB!). Consider limiting it + * with a hard-coded value, or by allowing the user to choose a limit. + */ + /* Two extra gunichar2s is for cases when a string was stored in the + * Registry without a 0-terminator (for multiline strings - 00-terminator), + * and we need to terminate it ourselves. + */ + iter->value_data_size = max_data_len + sizeof (gunichar2) * 2; + iter->value_data = g_malloc (iter->value_data_size); + iter->value_name_u8 = NULL; + iter->value_data_u8 = NULL; + iter->value_data_expanded = NULL; + iter->value_data_expanded_charsize = 0; + iter->value_data_expanded_u8 = NULL; + iter->value_data_expanded_u8_size = 0; + return TRUE; +} + +/** + * g_win32_registry_value_iter_clear: + * @iter: (in) (transfer none): a #GWin32RegistryValueIter + * + * Frees internal buffers of a #GWin32RegistryValueIter. + * + * Since: 2.46 + **/ +void +g_win32_registry_value_iter_clear (GWin32RegistryValueIter *iter) +{ + g_return_if_fail (iter != NULL); + + g_free (iter->value_name); + g_free (iter->value_data); + g_free (iter->value_name_u8); + g_free (iter->value_data_u8); + g_free (iter->value_data_expanded); + g_free (iter->value_data_expanded_u8); + g_clear_object (&iter->key); +} + +/** + * g_win32_registry_value_iter_n_values: + * @iter: (in) (transfer none): a #GWin32RegistryValueIter + * + * Queries the number of values items in the key that we are + * iterating over. This is the total number of values -- not the number + * of items remaining. + * + * This information is accurate at the point of iterator initialization, + * and may go out of sync with reality even while values are enumerated. + * + * Returns: the number of values in the key + * + * Since: 2.46 + **/ +gsize +g_win32_registry_value_iter_n_values (GWin32RegistryValueIter *iter) +{ + g_return_val_if_fail (iter != NULL, 0); + + return iter->value_count; +} + +static GWin32RegistryValueType +_g_win32_registry_type_w_to_g (DWORD value_type) +{ + switch (value_type) + { + case REG_BINARY: + return G_WIN32_REGISTRY_VALUE_BINARY; + case REG_DWORD: + return G_WIN32_REGISTRY_VALUE_UINT32; +#if G_BYTE_ORDER == G_BIG_ENDIAN + case REG_DWORD_LITTLE_ENDIAN: + return G_WIN32_REGISTRY_VALUE_UINT32LE; +#else + case REG_DWORD_BIG_ENDIAN: + return G_WIN32_REGISTRY_VALUE_UINT32BE; +#endif + case REG_EXPAND_SZ: + return G_WIN32_REGISTRY_VALUE_EXPAND_STR; + case REG_LINK: + return G_WIN32_REGISTRY_VALUE_LINK; + case REG_MULTI_SZ: + return G_WIN32_REGISTRY_VALUE_MULTI_STR; + case REG_NONE: + return G_WIN32_REGISTRY_VALUE_NONE; + case REG_QWORD: + return G_WIN32_REGISTRY_VALUE_UINT64; +#if G_BYTE_ORDER == G_BIG_ENDIAN + case REG_QWORD_LITTLE_ENDIAN: + return G_WIN32_REGISTRY_VALUE_UINT64LE; +#endif + case REG_SZ: + return G_WIN32_REGISTRY_VALUE_STR; + default: + return G_WIN32_REGISTRY_VALUE_NONE; + } +} + +static gsize +ensure_nul_termination (GWin32RegistryValueType value_type, + guint8 *value_data, + gsize value_data_size) +{ + gsize new_size = value_data_size; + + if (value_type == G_WIN32_REGISTRY_VALUE_EXPAND_STR || + value_type == G_WIN32_REGISTRY_VALUE_LINK || + value_type == G_WIN32_REGISTRY_VALUE_STR) + { + if ((value_data_size < 2) || + (value_data[value_data_size - 1] != 0) || + (value_data[value_data_size - 2] != 0)) + { + value_data[value_data_size] = 0; + value_data[value_data_size + 1] = 0; + new_size += 2; + } + } + else if (value_type == G_WIN32_REGISTRY_VALUE_MULTI_STR) + { + if ((value_data_size < 4) || + (value_data[value_data_size - 1] != 0) || + (value_data[value_data_size - 2] != 0) || + (value_data[value_data_size - 3] != 0) || + (value_data[value_data_size - 4] != 0)) + { + value_data[value_data_size] = 0; + value_data[value_data_size + 1] = 0; + value_data[value_data_size + 2] = 0; + value_data[value_data_size + 3] = 0; + new_size += 4; + } + } + + return new_size; +} + +/** + * g_win32_registry_value_iter_next: + * @iter: (in) (transfer none): a #GWin32RegistryValueIter + * @skip_errors: (in): %TRUE if iterator should silently ignore errors (such as + * the actual number of values being less than expected) and + * proceed forward + * @error: (nullable): a pointer to %NULL #GError, or %NULL + * + * Advances iterator to the next value in the key. If no more values remain then + * FALSE is returned. + * Enumeration errors can be ignored if @skip_errors is %TRUE + * + * Here is an example for iterating with g_win32_registry_value_iter_next(): + * |[ + * // iterate values of a key + * void + * iterate_values_recursive (GWin32RegistryKey *key) + * { + * GWin32RegistryValueIter iter; + * gchar *name; + * GWin32RegistryValueType val_type; + * gchar *val_data; + * + * if (!g_win32_registry_value_iter_init (&iter, key, NULL)) + * return; + * + * while (g_win32_registry_value_iter_next (&iter, TRUE, NULL)) + * { + * if ((!g_win32_registry_value_iter_get_value_type (&iter, &value)) || + * ((val_type != G_WIN32_REGISTRY_VALUE_STR) && + * (val_type != G_WIN32_REGISTRY_VALUE_EXPAND_STR))) + * continue; + * + * if (g_win32_registry_value_iter_get_value (&iter, TRUE, &name, NULL, + * &val_data, NULL, NULL)) + * g_print ("value '%s' = '%s'\n", name, val_data); + * } + * + * g_win32_registry_value_iter_clear (&iter); + * } + * ]| + * + * Returns: %TRUE if next value info was retrieved, %FALSE otherwise. + * + * Since: 2.46 + **/ +gboolean +g_win32_registry_value_iter_next (GWin32RegistryValueIter *iter, + gboolean skip_errors, + GError **error) +{ + LONG status; + DWORD value_name_len_w; + DWORD value_data_size_w; + DWORD value_type_w; + GWin32RegistryValueType value_type_g; + + g_return_val_if_fail (iter != NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + if G_UNLIKELY (iter->counter >= iter->value_count) + { + g_critical ("g_win32_registry_value_iter_next: must not be called " + "again after FALSE has already been returned."); + return FALSE; + } + + while (TRUE) + { + iter->counter += 1; + + if (iter->counter >= iter->value_count) + return FALSE; + + g_clear_pointer (&iter->value_name_u8, g_free); + g_clear_pointer (&iter->value_data_u8, g_free); + g_clear_pointer (&iter->value_data_expanded_u8, g_free); + /* Including 0-terminator */ + value_name_len_w = iter->value_name_size / sizeof (gunichar2); + value_data_size_w = iter->value_data_size; + status = RegEnumValueW (iter->key->priv->handle, + iter->counter, + iter->value_name, + &value_name_len_w, + NULL, + &value_type_w, + (LPBYTE) iter->value_data, + &value_data_size_w); + + if (status != ERROR_SUCCESS && !skip_errors) + { + g_set_error (error, G_IO_ERROR, g_io_error_from_win32_error (status), + "Failed to enumerate value #%d for key '%S'", + iter->counter, g_win32_registry_key_get_path_w (iter->key)); + iter->value_count = 0; + + return FALSE; + } + else if (status != ERROR_SUCCESS && skip_errors) + continue; + + value_type_g = _g_win32_registry_type_w_to_g (value_type_w); + value_data_size_w = ensure_nul_termination (value_type_g, + iter->value_data, + value_data_size_w); + iter->value_type = value_type_g; + iter->value_expanded_type = value_type_g; + iter->value_actual_data_size = value_data_size_w; + iter->value_name_len = value_name_len_w; + + return TRUE; + } +} + +/** + * g_win32_registry_value_iter_get_value_type: + * @iter: (in) (transfer none): a #GWin32RegistryValueIter + * @value_type: (out): Pointer to a location to store the type of + * the value. + * @error: (nullable): a pointer to %NULL #GError, or %NULL + * + * Stores the type of the value currently being iterated over in @value_type. + * + * Returns: %TRUE if value type was retrieved, %FALSE otherwise. + * + * Since: 2.46 + **/ +gboolean +g_win32_registry_value_iter_get_value_type (GWin32RegistryValueIter *iter, + GWin32RegistryValueType *value_type, + GError **error) +{ + g_return_val_if_fail (iter != NULL, FALSE); + g_return_val_if_fail (value_type != NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + if G_UNLIKELY (iter->counter >= iter->value_count) + { + g_critical ("g_win32_registry_value_iter_get_type: must not be called " + "again after NULL has already been returned."); + return FALSE; + } + + *value_type = iter->value_type; + + return TRUE; +} + +/** + * g_win32_registry_value_iter_get_name_w: + * @iter: (in) (transfer none): a #GWin32RegistryValueIter + * @value_name: (out callee-allocates) (transfer none): Pointer to a location + * to store the name of a value (in UTF-16). + * @value_name_len: (out) (optional): Pointer to a location to store the length + * of @value_name, in gunichar2s, excluding NUL-terminator. + * %NULL if length is not needed. + * @error: (nullable): a pointer to %NULL #GError, or %NULL + * + * Stores the name of the value currently being iterated over in @value_name, + * and its length - in @value_name (if not %NULL). + * + * Returns: %TRUE if value name was retrieved, %FALSE otherwise. + * + * Since: 2.46 + **/ +gboolean +g_win32_registry_value_iter_get_name_w (GWin32RegistryValueIter *iter, + gunichar2 **value_name, + gsize *value_name_len, + GError **error) +{ + g_return_val_if_fail (iter != NULL, FALSE); + g_return_val_if_fail (value_name != NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + if G_UNLIKELY (iter->counter >= iter->value_count) + { + g_critical ("g_win32_registry_value_iter_get_name_w: must not be called " + "again after NULL has already been returned."); + return FALSE; + } + + *value_name = iter->value_name; + + if (value_name_len) + *value_name_len = iter->value_name_len; + + return TRUE; +} + +/** + * g_win32_registry_value_iter_get_name: + * @iter: (in) (transfer none): a #GWin32RegistryValueIter + * @value_name: (out callee-allocates) (transfer none): Pointer to a location + * to store the name of a value (in UTF-8). + * @value_name_len: (out) (optional): Pointer to a location to store the length + * of @value_name, in gchars, excluding NUL-terminator. + * %NULL if length is not needed. + * @error: (nullable): a pointer to %NULL #GError, or %NULL + * + * Stores the name of the value currently being iterated over in @value_name, + * and its length - in @value_name_len (if not %NULL). + * + * Returns: %TRUE if value name was retrieved, %FALSE otherwise. + * + * Since: 2.46 + **/ +gboolean +g_win32_registry_value_iter_get_name (GWin32RegistryValueIter *iter, + gchar **value_name, + gsize *value_name_len, + GError **error) +{ + glong value_name_len_glong; + + g_return_val_if_fail (iter != NULL, FALSE); + g_return_val_if_fail (value_name != NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + if G_UNLIKELY (iter->counter >= iter->value_count) + { + g_critical ("g_win32_registry_value_iter_get_name: must not be called " + "again after NULL has already been returned."); + return FALSE; + } + + if (iter->value_name_u8 == NULL) + { + iter->value_name_u8 = g_utf16_to_utf8 (iter->value_name, iter->value_name_len, NULL, + &value_name_len_glong, error); + + if (iter->value_name_u8 == NULL) + return FALSE; + } + + *value_name = iter->value_name_u8; + + if (value_name_len) + *value_name_len = iter->value_name_u8_len; + + return TRUE; +} + +static gboolean +expand_value (gunichar2 *value, + const gunichar2 *value_name, + gpointer *expanded_value, + gsize *expanded_charsize, + GError **error) +{ + DWORD value_data_expanded_charsize_w; + + value_data_expanded_charsize_w = + ExpandEnvironmentStringsW (value, + (gunichar2 *) *expanded_value, + *expanded_charsize); + + if (value_data_expanded_charsize_w > *expanded_charsize) + { + *expanded_value = g_realloc (*expanded_value, + value_data_expanded_charsize_w * sizeof (gunichar2)); + *expanded_charsize = value_data_expanded_charsize_w; + value_data_expanded_charsize_w = + ExpandEnvironmentStringsW (value, + (gunichar2 *) *expanded_value, + *expanded_charsize); + } + + if (value_data_expanded_charsize_w == 0) + { + g_set_error (error, G_IO_ERROR, + g_io_error_from_win32_error (GetLastError ()), + "Failed to expand data '%S' of value %S", + value, value_name); + return FALSE; + } + + return TRUE; +} + +/** + * g_win32_registry_value_iter_get_data_w: + * @iter: (in) (transfer none): a #GWin32RegistryValueIter + * @auto_expand: (in): %TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR to + * G_WIN32_REGISTRY_VALUE_STR + * @value_data: (out callee-allocates) (optional) (transfer none): Pointer to a + * location to store the data of the value (in UTF-16, if it's a string) + * @value_data_size: (out) (optional): Pointer to a location to store the size + * of @value_data, in bytes (including any NUL-terminators, if it's a string). + * %NULL if length is not needed. + * @error: (nullable): a pointer to %NULL #GError, or %NULL + * + * Stores the data of the value currently being iterated over in @value_data, + * and its length - in @value_data_len (if not %NULL). + * + * Returns: %TRUE if value data was retrieved, %FALSE otherwise. + * + * Since: 2.46 + **/ +gboolean +g_win32_registry_value_iter_get_data_w (GWin32RegistryValueIter *iter, + gboolean auto_expand, + gpointer *value_data, + gsize *value_data_size, + GError **error) +{ + g_return_val_if_fail (iter != NULL, FALSE); + g_return_val_if_fail (value_data != NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + if G_UNLIKELY (iter->counter >= iter->value_count) + { + g_critical ("g_win32_registry_value_iter_get_data_w: must not be called " + "again after FALSE has already been returned."); + return FALSE; + } + + if (!auto_expand || (iter->value_type != G_WIN32_REGISTRY_VALUE_EXPAND_STR)) + { + *value_data = iter->value_data; + + if (value_data_size) + *value_data_size = iter->value_actual_data_size; + + return TRUE; + } + + if (iter->value_type == iter->value_expanded_type) + { + if (!expand_value ((gunichar2 *) iter->value_data, + iter->value_name, + (gpointer *) &iter->value_data_expanded, + &iter->value_data_expanded_charsize, + error)) + return FALSE; + + iter->value_expanded_type = G_WIN32_REGISTRY_VALUE_STR; + } + + *value_data = iter->value_data_expanded; + + if (value_data_size) + *value_data_size = iter->value_data_expanded_charsize * sizeof (gunichar2); + + return TRUE; +} + +/** + * g_win32_registry_value_iter_get_data: + * @iter: (in) (transfer none): a #GWin32RegistryValueIter + * @auto_expand: (in): %TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR to + * G_WIN32_REGISTRY_VALUE_STR + * @value_data: (out callee-allocates) (optional) (transfer none): Pointer to a + * location to store the data of the value (in UTF-8, if it's a string) + * @value_data_size: (out) (optional): Pointer to a location to store the length + * of @value_data, in bytes (including any NUL-terminators, if it's a string). + * %NULL if length is not needed + * @error: (nullable): a pointer to %NULL #GError, or %NULL + * + * Stores the data of the value currently being iterated over in @value_data, + * and its length - in @value_data_len (if not %NULL). + * + * Returns: %TRUE if value data was retrieved, %FALSE otherwise. + * + * Since: 2.46 + **/ +gboolean +g_win32_registry_value_iter_get_data (GWin32RegistryValueIter *iter, + gboolean auto_expand, + gpointer *value_data, + gsize *value_data_size, + GError **error) +{ + gsize value_data_len_gsize; + gpointer tmp; + gsize tmp_size; + + g_return_val_if_fail (iter != NULL, FALSE); + g_return_val_if_fail (value_data != NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + if G_UNLIKELY (iter->counter >= iter->value_count) + { + g_critical ("g_win32_registry_value_iter_get_data: must not be called " + "again after FALSE has already been returned."); + return FALSE; + } + + if (iter->value_type != G_WIN32_REGISTRY_VALUE_EXPAND_STR && + iter->value_type != G_WIN32_REGISTRY_VALUE_LINK && + iter->value_type != G_WIN32_REGISTRY_VALUE_STR && + iter->value_type != G_WIN32_REGISTRY_VALUE_MULTI_STR) + { + *value_data = iter->value_data; + + if (value_data_size != NULL) + *value_data_size = iter->value_actual_data_size; + + return TRUE; + } + + if (!auto_expand || (iter->value_type != G_WIN32_REGISTRY_VALUE_EXPAND_STR)) + { + if (iter->value_data_u8 == NULL) + { + iter->value_data_u8 = g_convert ((const gchar *) iter->value_data, + iter->value_actual_data_size - sizeof (gunichar2) /* excl. 0 */, + "UTF8", "UTF16", NULL, + &value_data_len_gsize, + error); + + if (iter->value_data_u8 == NULL) + return FALSE; + + iter->value_data_u8_size = value_data_len_gsize + 1; /* incl. 0 */ + } + + *value_data = iter->value_data_u8; + + if (value_data_size != NULL) + *value_data_size = iter->value_data_u8_size; + + return TRUE; + } + + if (iter->value_data_expanded_u8 == NULL) + { + if (!g_win32_registry_value_iter_get_data_w (iter, + TRUE, + &tmp, + &tmp_size, + error)) + return FALSE; + + iter->value_data_expanded_u8 = g_convert ((const gchar *) iter->value_data_expanded, + iter->value_data_expanded_charsize * sizeof (gunichar2) - sizeof (gunichar2) /* excl. 0 */, + "UTF8", "UTF16", NULL, + &value_data_len_gsize, + error); + + if (iter->value_data_expanded_u8 == NULL) + return FALSE; + + iter->value_data_u8_size = value_data_len_gsize + 1; /* incl. 0 */ + } + + *value_data = iter->value_data_expanded_u8; + + if (value_data_size != NULL) + *value_data_size = iter->value_data_expanded_u8_size; + + return TRUE; +} + +static void +_g_win32_registry_key_reread_kernel (GWin32RegistryKey *key, + GWin32RegistryKeyPrivate *buf) +{ + NTSTATUS status; + KEY_BASIC_INFORMATION *basic_info; + ULONG basic_info_size; + ULONG datasize; + + basic_info_size = 256 * sizeof (gunichar2) + sizeof (KEY_BASIC_INFORMATION); + basic_info = g_malloc (basic_info_size + sizeof (gunichar2)); + status = nt_query_key (key->priv->handle, + KeyBasicInformation, + basic_info, + basic_info_size, + &datasize); + + if (status == STATUS_BUFFER_OVERFLOW || status == STATUS_BUFFER_TOO_SMALL) + { + g_free (basic_info); + basic_info_size = datasize; + /* +1 for 0-terminator */ + basic_info = g_malloc (basic_info_size + sizeof (gunichar2)); + status = nt_query_key (key->priv->handle, + KeyBasicInformation, + basic_info, + basic_info_size, + &datasize); + } + + if (status != STATUS_SUCCESS) + { + g_free (basic_info); + return; + } + + /* Ensure 0-termination */ + ((char *) basic_info)[datasize] = 0; + ((char *) basic_info)[datasize + 1] = 0; + + buf->absolute_path_w = g_wcsdup (&basic_info->Name[0], + basic_info->NameLength + sizeof (gunichar2)); + g_free (basic_info); +} + +static void +_g_win32_registry_key_reread_user (GWin32RegistryKey *key, + GWin32RegistryKeyPrivate *buf) +{ + /* Use RegQueryInfoKey(). It's just like NtQueryKey(), but can't query + * key name. + * Since right now we only need the name, this function is a noop. + */ +} + +static void +_g_win32_registry_key_reread (GWin32RegistryKey *key, + GWin32RegistryKeyPrivate *buf) +{ + if (g_once_init_enter (&nt_query_key)) + { + NtQueryKeyFunc func; + HMODULE ntdll = GetModuleHandleW (L"ntdll.dll"); + + if (ntdll != NULL) + func = (NtQueryKeyFunc) GetProcAddress (ntdll, "NtQueryKey"); + else + func = NULL; + + g_once_init_leave (&nt_query_key, func); + } + + /* Assume that predefined keys never get renamed. Also, their handles probably + * won't be accepted by NtQueryKey(), i suspect. + */ + if (nt_query_key != NULL && !key->priv->predefined) + _g_win32_registry_key_reread_kernel (key, buf); + else + _g_win32_registry_key_reread_user (key, buf); +} + +static gboolean +_g_win32_registry_key_update_path (GWin32RegistryKey *key) +{ + GWin32RegistryKeyPrivate tmp; + gboolean changed; + gint change_indicator; + + change_indicator = g_atomic_int_get (&key->priv->change_indicator); + + if (change_indicator == G_WIN32_KEY_UNCHANGED) + return FALSE; + + tmp.absolute_path_w = NULL; + _g_win32_registry_key_reread (key, &tmp); + changed = FALSE; + + if (wcscmp (key->priv->absolute_path_w, tmp.absolute_path_w) == 0) + g_free (tmp.absolute_path_w); + else + { + g_free (key->priv->absolute_path_w); + key->priv->absolute_path_w = tmp.absolute_path_w; + changed = TRUE; + } + + return changed; +} + +/** + * g_win32_registry_key_get_path: + * @key: (in) (transfer none): a #GWin32RegistryKey + * + * Get full path to the key + * + * Returns: (transfer none): a full path to the key (in UTF-8), + * or %NULL if it can't be converted to UTF-8. + * + * Since: 2.46 + **/ +const gchar * +g_win32_registry_key_get_path (GWin32RegistryKey *key) +{ + gint change_indicator; + + g_return_val_if_fail (G_IS_WIN32_REGISTRY_KEY (key), NULL); + + change_indicator = g_atomic_int_get (&key->priv->change_indicator); + + if (change_indicator == G_WIN32_KEY_CHANGED && + !(key->priv->update_flags & G_WIN32_REGISTRY_UPDATED_PATH)) + { + _g_win32_registry_key_update_path (key); + key->priv->update_flags |= G_WIN32_REGISTRY_UPDATED_PATH; + } + + if (key->priv->absolute_path == NULL) + { + g_free (key->priv->absolute_path); + key->priv->absolute_path = + g_utf16_to_utf8 (key->priv->absolute_path_w, -1, + NULL, NULL, NULL); + } + + return key->priv->absolute_path; +} + +/** + * g_win32_registry_key_get_path_w: + * @key: (in) (transfer none): a #GWin32RegistryKey + * + * Get full path to the key + * + * Returns: (transfer none): a full path to the key (in UTF-16) + * + * Since: 2.46 + **/ +const gunichar2 * +g_win32_registry_key_get_path_w (GWin32RegistryKey *key) +{ + gint change_indicator; + + g_return_val_if_fail (G_IS_WIN32_REGISTRY_KEY (key), NULL); + + change_indicator = g_atomic_int_get (&key->priv->change_indicator); + + if (change_indicator == G_WIN32_KEY_CHANGED) + _g_win32_registry_key_update_path (key); + + return key->priv->absolute_path_w; +} + +/** + * g_win32_registry_key_get_value: + * @key: (in) (transfer none): a #GWin32RegistryKey + * @auto_expand: (in) %TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR + * to G_WIN32_REGISTRY_VALUE_STR. + * @value_name: (in) (transfer none): name of the value to get (in UTF-8). + * Empty string means the '(Default)' value. + * @value_type: (out) (optional): type of the value retrieved. + * @value_data: (out callee-allocates) (optional): contents of the value. + * @value_data_size: (out) (optional): size of the buffer pointed + * by @value_data. + * @error: (nullable): a pointer to %NULL #GError, or %NULL + * + * Get data from a value of a key. String data is guaranteed to be + * appropriately terminated and will be in UTF-8. + * + * Returns: %TRUE on success, %FALSE on failure. + * + * Since: 2.46 + **/ +gboolean +g_win32_registry_key_get_value (GWin32RegistryKey *key, + gboolean auto_expand, + const gchar *value_name, + GWin32RegistryValueType *value_type, + gpointer *value_data, + gsize *value_data_size, + GError **error) +{ + GWin32RegistryValueType value_type_g; + gpointer value_data_w; + gsize value_data_w_size; + gunichar2 *value_name_w; + gchar *value_data_u8; + gsize value_data_u8_len; + gboolean result; + + g_return_val_if_fail (G_IS_WIN32_REGISTRY_KEY (key), FALSE); + g_return_val_if_fail (value_name != NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + /* No sense calling this function with all of these set to NULL */ + g_return_val_if_fail (value_type != NULL || + value_data != NULL || + value_data_size != NULL, FALSE); + + value_name_w = g_utf8_to_utf16 (value_name, -1, NULL, NULL, error); + + if (value_name_w == NULL) + return FALSE; + + result = g_win32_registry_key_get_value_w (key, + auto_expand, + value_name_w, + &value_type_g, + &value_data_w, + &value_data_w_size, + error); + + g_free (value_name_w); + + if (!result) + return FALSE; + + if (value_type_g == G_WIN32_REGISTRY_VALUE_EXPAND_STR || + value_type_g == G_WIN32_REGISTRY_VALUE_LINK || + value_type_g == G_WIN32_REGISTRY_VALUE_STR || + value_type_g == G_WIN32_REGISTRY_VALUE_MULTI_STR) + { + value_data_u8 = g_convert ((const gchar *) value_data_w, + value_data_w_size - sizeof (gunichar2) /* excl. 0 */, + "UTF8", + "UTF16", + NULL, + &value_data_u8_len, + error); + g_free (value_data_w); + + if (value_data_u8 == NULL) + return FALSE; + + if (value_data) + *value_data = value_data_u8; + else + g_free (value_data_u8); + + if (value_data_size) + *value_data_size = value_data_u8_len + 1; + } + else + { + if (value_data) + *value_data = value_data_w; + else + g_free (value_data_w); + + if (value_data_size) + *value_data_size = value_data_w_size; + } + + if (value_type) + *value_type = value_type_g; + + return TRUE; +} + +/** + * g_win32_registry_key_get_value_w: + * @key: (in) (transfer none): a #GWin32RegistryKey + * @auto_expand: (in) %TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR + * to G_WIN32_REGISTRY_VALUE_STR. + * @value_name: (in) (transfer none): name of the value to get (in UTF-16). + * Empty string means the '(Default)' value. + * @value_type: (out) (optional): type of the value retrieved. + * @value_data: (out callee-allocates) (optional): contents of the value. + * @value_data_size: (out) (optional): size of the buffer pointed + * by @value_data. + * @error: (nullable): a pointer to %NULL #GError, or %NULL + * + * Get data from a value of a key. + * + * Get data from a value of a key. String data is guaranteed to be + * appropriately terminated and will be in UTF-16. + * + * When calling with value_data == NULL (to get data size without getting + * the data itself) remember that returned size corresponds to possibly + * unterminated string data (if value is some kind of string), because + * termination cannot be checked and fixed unless the data is retreived + * too. + * + * Returns: %TRUE on success, %FALSE on failure. + * + * Since: 2.46 + **/ +gboolean +g_win32_registry_key_get_value_w (GWin32RegistryKey *key, + gboolean auto_expand, + const gunichar2 *value_name, + GWin32RegistryValueType *value_type, + gpointer *value_data, + gsize *value_data_size, + GError **error) +{ + LONG status; + DWORD value_type_w; + DWORD value_type_w2; + char *req_value_data; + GWin32RegistryValueType value_type_g; + GWin32RegistryValueType value_type_g2; + DWORD req_value_data_size; + DWORD req_value_data_size2; + + g_return_val_if_fail (G_IS_WIN32_REGISTRY_KEY (key), FALSE); + g_return_val_if_fail (value_name != NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + /* No sense calling this functions with all of these set to NULL */ + g_return_val_if_fail (value_type != NULL || + value_data != NULL || + value_data_size != NULL, FALSE); + + req_value_data_size = 0; + status = RegQueryValueExW (key->priv->handle, + value_name, + NULL, + &value_type_w, + NULL, + &req_value_data_size); + + if (status != ERROR_MORE_DATA && status != ERROR_SUCCESS) + { + g_set_error (error, G_IO_ERROR, g_io_error_from_win32_error (status), + "Failed to query value '%S' for key '%S'", + value_name, g_win32_registry_key_get_path_w (key)); + + return FALSE; + } + + value_type_g = _g_win32_registry_type_w_to_g (value_type_w); + + if (value_data == NULL && + (!auto_expand || value_type_g != G_WIN32_REGISTRY_VALUE_EXPAND_STR)) + { + if (value_type) + *value_type = value_type_g; + + if (value_data_size) + *value_data_size = req_value_data_size; + + return TRUE; + } + + req_value_data = g_malloc (req_value_data_size + sizeof (gunichar2) * 2); + req_value_data_size2 = req_value_data_size; + status = RegQueryValueExW (key->priv->handle, + value_name, + NULL, + &value_type_w2, + (gpointer) req_value_data, + &req_value_data_size2); + + if (status != ERROR_SUCCESS) + { + g_set_error (error, G_IO_ERROR, g_io_error_from_win32_error (status), + "Failed to query value '%S' of size %lu for key '%S'", + value_name, + req_value_data_size, + g_win32_registry_key_get_path_w (key)); + g_free (req_value_data); + return FALSE; + } + + value_type_g2 = _g_win32_registry_type_w_to_g (value_type_w2); + + if (value_type_w != value_type_w2) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "Type of value '%S' of key '%S' changed from %u to %u" + " between calls", + value_name, + g_win32_registry_key_get_path_w (key), + value_type_g, value_type_g2); + g_free (req_value_data); + return FALSE; + } + + req_value_data_size = ensure_nul_termination (value_type_g, + (guint8 *) req_value_data, + req_value_data_size2); + + if (value_type_g == G_WIN32_REGISTRY_VALUE_EXPAND_STR && auto_expand) + { + gsize value_data_expanded_charsize_w = 0; + gunichar2 *value_data_expanded = NULL; + + if (!expand_value ((gunichar2 *) req_value_data, + value_name, + (gpointer *) &value_data_expanded, + &value_data_expanded_charsize_w, + error)) + return FALSE; + + g_free (req_value_data); + + if (value_type) + *value_type = G_WIN32_REGISTRY_VALUE_STR; + + if (value_data) + *value_data = value_data_expanded; + else + g_free (value_data_expanded); + + if (value_data_size) + *value_data_size = value_data_expanded_charsize_w * sizeof (gunichar2); + + return TRUE; + } + + if (value_type) + *value_type = value_type_g; + + if (value_data_size) + *value_data_size = req_value_data_size; + + if (value_data) + *value_data = req_value_data; + else + g_free (req_value_data); + + return TRUE; +} + +static VOID NTAPI +key_changed (PVOID closure, + PIO_STATUS_BLOCK status_block, + ULONG reserved) +{ + GWin32RegistryKey *key = G_WIN32_REGISTRY_KEY (closure); + + g_free (status_block); + g_atomic_int_set (&key->priv->change_indicator, G_WIN32_KEY_CHANGED); + g_atomic_int_set (&key->priv->watch_indicator, G_WIN32_KEY_UNWATCHED); + key->priv->update_flags = G_WIN32_REGISTRY_UPDATED_NOTHING; + + if (key->priv->callback) + key->priv->callback (key, key->priv->user_data); + + key->priv->callback = NULL; + key->priv->user_data = NULL; + g_object_unref (key); +} + +/** + * g_win32_registry_key_watch: + * @key: (in) (transfer none): a #GWin32RegistryKey + * @watch_children: (in) %TRUE also watch the children of the @key, %FALSE + * to watch the key only. + * @watch_flags: (in): specifies the types of changes to watch for. + * @callback: (in) (nullable): a function to invoke when a change occurs. + * @user_data: (in) (nullable): a pointer to pass to @callback on invocation. + * @error: (nullable): a pointer to %NULL #GError, or %NULL + * + * Puts @key under a watch. + * + * When the key changes, an APC will be queued in the current thread. The APC + * will run when the current thread enters alertable state (GLib main loop + * should do that; if you are not using it, see MSDN documentation for W32API + * calls that put thread into alertable state). When it runs, it will + * atomically switch an indicator in the @key. If a callback was specified, + * it is invoked at that point. Subsequent calls to + * g_win32_registry_key_has_changed() will return %TRUE, and the callback (if + * it was specified) will not be invoked anymore. + * Calling g_win32_registry_key_erase_change_indicator() will reset the indicator, + * and g_win32_registry_key_has_changed() will start returning %FALSE. + * To resume the watch, call g_win32_registry_key_watch_for_changes() again. + * + * Calling g_win32_registry_key_watch_for_changes() for a key that is already + * being watched is allowed and affects nothing. + * + * The fact that the key is being watched will be used internally to update + * key path (if it changes). + * + * Returns: %TRUE on success, %FALSE on failure. + * + * Since: 2.46 + **/ +gboolean +g_win32_registry_key_watch (GWin32RegistryKey *key, + gboolean watch_children, + GWin32RegistryKeyWatcherFlags watch_flags, + GWin32RegistryKeyWatchCallbackFunc callback, + gpointer user_data, + GError **error) +{ + ULONG filter; + gboolean started_to_watch; + NTSTATUS status; + PIO_STATUS_BLOCK status_block; + + g_return_val_if_fail (G_IS_WIN32_REGISTRY_KEY (key), FALSE); + + filter = ((watch_flags & G_WIN32_REGISTRY_WATCH_NAME) ? REG_NOTIFY_CHANGE_NAME : 0) | + ((watch_flags & G_WIN32_REGISTRY_WATCH_ATTRIBUTES) ? REG_NOTIFY_CHANGE_ATTRIBUTES : 0) | + ((watch_flags & G_WIN32_REGISTRY_WATCH_VALUES) ? REG_NOTIFY_CHANGE_LAST_SET : 0) | + ((watch_flags & G_WIN32_REGISTRY_WATCH_SECURITY) ? REG_NOTIFY_CHANGE_SECURITY : 0); + + if (filter == 0) + { + g_critical ("No supported flags specified in watch_flags (%x)", (guint) watch_flags); + return FALSE; + } + + if (g_once_init_enter (&nt_notify_change_multiple_keys)) + { + NtNotifyChangeMultipleKeysFunc func; + HMODULE ntdll = GetModuleHandle ("ntdll.dll"); + + if (ntdll != NULL) + func = (NtNotifyChangeMultipleKeysFunc) GetProcAddress (ntdll, "NtNotifyChangeMultipleKeys"); + else + func = NULL; + + g_once_init_leave (&nt_notify_change_multiple_keys, func); + } + + if (nt_notify_change_multiple_keys== NULL) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, + "Couldn't get NtNotifyChangeMultipleKeys() from ntdll"); + return FALSE; + } + + started_to_watch = + g_atomic_int_compare_and_exchange (&key->priv->watch_indicator, + G_WIN32_KEY_UNWATCHED, + G_WIN32_KEY_WATCHED); + + if (!started_to_watch) + return TRUE; + + key->priv->callback = callback; + key->priv->user_data = user_data; + + g_atomic_int_set (&key->priv->change_indicator, G_WIN32_KEY_UNCHANGED); + + /* Keep it alive until APC is called */ + g_object_ref (key); + + status_block = g_malloc (sizeof (IO_STATUS_BLOCK)); + + status = nt_notify_change_multiple_keys (key->priv->handle, + 0, + NULL, + NULL, + key_changed, + (PVOID) key, + status_block, + filter, + watch_children, + NULL, + 0, + TRUE); + + g_assert (status != STATUS_SUCCESS); + + if (status == STATUS_PENDING) + return TRUE; + + g_atomic_int_set (&key->priv->change_indicator, G_WIN32_KEY_UNKNOWN); + g_atomic_int_set (&key->priv->watch_indicator, G_WIN32_KEY_UNWATCHED); + g_object_unref (key); + g_free (status_block); + + return FALSE; +} + +/** + * g_win32_registry_key_erase_change_indicator: + * @key: (in) (transfer none): a #GWin32RegistryKey + * + * Erases change indicator of the @key. + * + * Subsequent calls to g_win32_registry_key_has_changed() will return %FALSE + * until the key is put on watch again by calling + * g_win32_registry_key_watch() again. + * + * Since: 2.46 + */ +void +g_win32_registry_key_erase_change_indicator (GWin32RegistryKey *key) +{ + g_return_if_fail (G_IS_WIN32_REGISTRY_KEY (key)); + + g_atomic_int_set (&key->priv->change_indicator, G_WIN32_KEY_UNKNOWN); +} + +/** + * g_win32_registry_key_has_changed: + * @key: (in) (transfer none): a #GWin32RegistryKey + * + * Check the @key's status indicator. + * + * Returns: %TRUE if the @key was put under watch at some point and has changed + * since then, %FALSE if it either wasn't changed or wasn't watched at all. + * + * Since: 2.46 + */ +gboolean +g_win32_registry_key_has_changed (GWin32RegistryKey *key) +{ + gint changed; + + g_return_val_if_fail (G_IS_WIN32_REGISTRY_KEY (key), FALSE); + + changed = g_atomic_int_get (&key->priv->change_indicator); + + return (changed == G_WIN32_KEY_CHANGED ? TRUE : FALSE); +} + +static void +g_win32_registry_key_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GWin32RegistryKey *key = G_WIN32_REGISTRY_KEY (object); + + switch (prop_id) + { + case PROP_PATH: + g_value_set_string (value, g_win32_registry_key_get_path (key)); + break; + + case PROP_PATH_UTF16: + g_value_set_pointer (value, (gpointer) g_win32_registry_key_get_path_w (key)); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +g_win32_registry_key_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GWin32RegistryKey *key = G_WIN32_REGISTRY_KEY (object); + GWin32RegistryKeyPrivate *priv = key->priv; + const gchar *path; + gunichar2 *path_w; + + switch (prop_id) + { + case PROP_PATH: + g_assert (priv->absolute_path_w == NULL); + g_assert (priv->absolute_path == NULL); + path = g_value_get_string (value); + + if (path == NULL) + break; + + path_w = g_utf8_to_utf16 (path, -1, NULL, NULL, NULL); + + if (path_w == NULL) + break; + + g_free (priv->absolute_path_w); + g_free (priv->absolute_path); + priv->absolute_path_w = path_w; + priv->absolute_path = g_value_dup_string (value); + break; + + case PROP_PATH_UTF16: + g_assert (priv->absolute_path_w == NULL); + g_assert (priv->absolute_path == NULL); + path_w = (gunichar2 *) g_value_get_pointer (value); + + if (path_w == NULL) + break; + + priv->absolute_path_w = g_wcsdup (path_w, -1); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + +static void +g_win32_registry_key_class_init (GWin32RegistryKeyClass *klass) +{ + GObjectClass *gobject_class = G_OBJECT_CLASS (klass); + + gobject_class->dispose = g_win32_registry_key_dispose; + gobject_class->set_property = g_win32_registry_key_set_property; + gobject_class->get_property = g_win32_registry_key_get_property; + + /** + * GWin32RegistryKey:path: + * + * A path to the key in the registry, in UTF-8. + * + * Since: 2.46 + */ + g_object_class_install_property (gobject_class, + PROP_PATH, + g_param_spec_string ("path", + "Path", + "Path to the key in the registry", + NULL, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS)); + + /** + * GWin32RegistryKey:path-utf16: + * + * A path to the key in the registry, in UTF-16. + * + * Since: 2.46 + */ + g_object_class_install_property (gobject_class, + PROP_PATH_UTF16, + g_param_spec_pointer ("path-utf16", + "Path (UTF-16)", + "Path to the key in the registry, in UTF-16", + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS)); +} + +static void +g_win32_registry_key_init (GWin32RegistryKey *key) +{ + key->priv = g_win32_registry_key_get_instance_private (key); + key->priv->change_indicator = G_WIN32_KEY_UNKNOWN; +} diff --git a/gio/gwin32registrykey.h b/gio/gwin32registrykey.h new file mode 100644 index 0000000..1a0b0f0 --- /dev/null +++ b/gio/gwin32registrykey.h @@ -0,0 +1,283 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2014 Руслан Ижбулатов + * + * 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, see . + * + */ +#ifndef __G_WIN32_REGISTRY_KEY_H__ +#define __G_WIN32_REGISTRY_KEY_H__ + +#include + +#ifdef G_PLATFORM_WIN32 + +G_BEGIN_DECLS + +#define G_TYPE_WIN32_REGISTRY_KEY (g_win32_registry_key_get_type ()) +#define G_WIN32_REGISTRY_KEY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_WIN32_REGISTRY_KEY, GWin32RegistryKey)) +#define G_WIN32_REGISTRY_KEY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_WIN32_REGISTRY_KEY, GWin32RegistryKeyClass)) +#define G_IS_WIN32_REGISTRY_KEY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_WIN32_REGISTRY_KEY)) +#define G_IS_WIN32_REGISTRY_KEY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), G_TYPE_WIN32_REGISTRY_KEY)) +#define G_WIN32_REGISTRY_KEY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_TYPE_WIN32_REGISTRY_KEY, GWin32RegistryKeyClass)) + +typedef enum { + G_WIN32_REGISTRY_VALUE_NONE = 0, + G_WIN32_REGISTRY_VALUE_BINARY = 1, + G_WIN32_REGISTRY_VALUE_UINT32LE = 2, + G_WIN32_REGISTRY_VALUE_UINT32BE = 3, +#if G_BYTE_ORDER == G_BIG_ENDIAN + G_WIN32_REGISTRY_VALUE_UINT32 = G_WIN32_REGISTRY_VALUE_UINT32BE, +#else + G_WIN32_REGISTRY_VALUE_UINT32 = G_WIN32_REGISTRY_VALUE_UINT32LE, +#endif + G_WIN32_REGISTRY_VALUE_EXPAND_STR = 4, + G_WIN32_REGISTRY_VALUE_LINK = 5, + G_WIN32_REGISTRY_VALUE_MULTI_STR = 6, + G_WIN32_REGISTRY_VALUE_UINT64LE = 7, +#if G_BYTE_ORDER == G_LITTLE_ENDIAN + G_WIN32_REGISTRY_VALUE_UINT64 = G_WIN32_REGISTRY_VALUE_UINT64LE, +#endif + G_WIN32_REGISTRY_VALUE_STR = 8 +} GWin32RegistryValueType; + +typedef enum { + G_WIN32_REGISTRY_WATCH_NAME = 1 << 0, + G_WIN32_REGISTRY_WATCH_ATTRIBUTES = 1 << 1, + G_WIN32_REGISTRY_WATCH_VALUES = 1 << 2, + G_WIN32_REGISTRY_WATCH_SECURITY = 1 << 3, +} GWin32RegistryKeyWatcherFlags; + +typedef struct _GWin32RegistryKey GWin32RegistryKey; +typedef struct _GWin32RegistryKeyClass GWin32RegistryKeyClass; +typedef struct _GWin32RegistryKeyPrivate GWin32RegistryKeyPrivate; +typedef struct _GWin32RegistrySubkeyIter GWin32RegistrySubkeyIter; +typedef struct _GWin32RegistryValueIter GWin32RegistryValueIter; + +struct _GWin32RegistryKey { + GObject parent_instance; + + /*< private >*/ + GWin32RegistryKeyPrivate *priv; +}; + +struct _GWin32RegistryKeyClass { + GObjectClass parent_class; +}; + +/** + * GWin32RegistryKeyWatchCallbackFunc: + * @key: A #GWin32RegistryKey that was watched. + * @user_data: The @user_data #gpointer passed to g_win32_registry_key_watch(). + * + * The type of the callback passed to g_win32_registry_key_watch(). + * + * The callback is invoked after a change matching the watch flags and arguments + * occurs. If the children of the key were watched also, there is no way to know + * which one of them triggered the callback. + * + * Since: 2.42 + */ +typedef void (*GWin32RegistryKeyWatchCallbackFunc) (GWin32RegistryKey *key, + gpointer user_data); + +#define G_TYPE_WIN32_REGISTRY_SUBKEY_ITER (g_win32_registry_subkey_iter_get_type ()) + +struct _GWin32RegistrySubkeyIter { + /*< private >*/ + GWin32RegistryKey *key; + gint counter; + gint subkey_count; + + gunichar2 *subkey_name; + gsize subkey_name_size; + gsize subkey_name_len; + + gchar *subkey_name_u8; +}; + +#define G_TYPE_WIN32_REGISTRY_VALUE_ITER (g_win32_registry_value_iter_get_type ()) + +struct _GWin32RegistryValueIter { + /*< private >*/ + GWin32RegistryKey *key; + gint counter; + gint value_count; + + gunichar2 *value_name; + gsize value_name_size; + gsize value_name_len; + GWin32RegistryValueType value_type; + guint8 *value_data; + gsize value_data_size; + gsize value_actual_data_size; + GWin32RegistryValueType value_expanded_type; + gunichar2 *value_data_expanded; + gsize value_data_expanded_charsize; + + gchar *value_name_u8; + gsize value_name_u8_len; + gchar *value_data_u8; + gsize value_data_u8_size; + gchar *value_data_expanded_u8; + gsize value_data_expanded_u8_size; +}; + +GLIB_AVAILABLE_IN_2_46 +GWin32RegistrySubkeyIter *g_win32_registry_subkey_iter_copy (const GWin32RegistrySubkeyIter *iter); +GLIB_AVAILABLE_IN_2_46 +void g_win32_registry_subkey_iter_free (GWin32RegistrySubkeyIter *iter); +GLIB_AVAILABLE_IN_2_46 +void g_win32_registry_subkey_iter_assign (GWin32RegistrySubkeyIter *iter, + const GWin32RegistrySubkeyIter *other); +GLIB_AVAILABLE_IN_2_46 +GType g_win32_registry_subkey_iter_get_type (void) G_GNUC_CONST; + + +GLIB_AVAILABLE_IN_2_46 +GWin32RegistryValueIter *g_win32_registry_value_iter_copy (const GWin32RegistryValueIter *iter); +GLIB_AVAILABLE_IN_2_46 +void g_win32_registry_value_iter_free (GWin32RegistryValueIter *iter); +GLIB_AVAILABLE_IN_2_46 +void g_win32_registry_value_iter_assign (GWin32RegistryValueIter *iter, + const GWin32RegistryValueIter *other); +GLIB_AVAILABLE_IN_2_46 +GType g_win32_registry_value_iter_get_type (void) G_GNUC_CONST; + + +GLIB_AVAILABLE_IN_2_46 +GType g_win32_registry_key_get_type (void); + +GLIB_AVAILABLE_IN_2_46 +GWin32RegistryKey *g_win32_registry_key_new (const gchar *path, + GError **error); + +GLIB_AVAILABLE_IN_2_46 +GWin32RegistryKey *g_win32_registry_key_new_w (const gunichar2 *path, + GError **error); + +GLIB_AVAILABLE_IN_2_46 +GWin32RegistryKey *g_win32_registry_key_get_child (GWin32RegistryKey *key, + const gchar *subkey, + GError **error); + +GLIB_AVAILABLE_IN_2_46 +GWin32RegistryKey *g_win32_registry_key_get_child_w (GWin32RegistryKey *key, + const gunichar2 *subkey, + GError **error); + +GLIB_AVAILABLE_IN_2_46 +gboolean g_win32_registry_subkey_iter_init (GWin32RegistrySubkeyIter *iter, + GWin32RegistryKey *key, + GError **error); +GLIB_AVAILABLE_IN_2_46 +void g_win32_registry_subkey_iter_clear (GWin32RegistrySubkeyIter *iter); +GLIB_AVAILABLE_IN_2_46 +gsize g_win32_registry_subkey_iter_n_subkeys (GWin32RegistrySubkeyIter *iter); +GLIB_AVAILABLE_IN_2_46 +gboolean g_win32_registry_subkey_iter_next (GWin32RegistrySubkeyIter *iter, + gboolean skip_errors, + GError **error); +GLIB_AVAILABLE_IN_2_46 +gboolean g_win32_registry_subkey_iter_get_name (GWin32RegistrySubkeyIter *iter, + gchar **subkey_name, + gsize *subkey_name_len, + GError **error); +GLIB_AVAILABLE_IN_2_46 +gboolean g_win32_registry_subkey_iter_get_name_w (GWin32RegistrySubkeyIter *iter, + gunichar2 **subkey_name, + gsize *subkey_name_len, + GError **error); + +GLIB_AVAILABLE_IN_2_46 +gboolean g_win32_registry_value_iter_init (GWin32RegistryValueIter *iter, + GWin32RegistryKey *key, + GError **error); +GLIB_AVAILABLE_IN_2_46 +void g_win32_registry_value_iter_clear (GWin32RegistryValueIter *iter); +GLIB_AVAILABLE_IN_2_46 +gsize g_win32_registry_value_iter_n_values (GWin32RegistryValueIter *iter); +GLIB_AVAILABLE_IN_2_46 +gboolean g_win32_registry_value_iter_next (GWin32RegistryValueIter *iter, + gboolean skip_errors, + GError **error); +GLIB_AVAILABLE_IN_2_46 +gboolean g_win32_registry_value_iter_get_value_type (GWin32RegistryValueIter *iter, + GWin32RegistryValueType *value_type, + GError **error); +GLIB_AVAILABLE_IN_2_46 +gboolean g_win32_registry_value_iter_get_name (GWin32RegistryValueIter *iter, + gchar **value_name, + gsize *value_name_len, + GError **error); +GLIB_AVAILABLE_IN_2_46 +gboolean g_win32_registry_value_iter_get_name_w (GWin32RegistryValueIter *iter, + gunichar2 **value_name, + gsize *value_name_len, + GError **error); +GLIB_AVAILABLE_IN_2_46 +gboolean g_win32_registry_value_iter_get_data (GWin32RegistryValueIter *iter, + gboolean auto_expand, + gpointer *value_data, + gsize *value_data_size, + GError **error); +GLIB_AVAILABLE_IN_2_46 +gboolean g_win32_registry_value_iter_get_data_w (GWin32RegistryValueIter *iter, + gboolean auto_expand, + gpointer *value_data, + gsize *value_data_size, + GError **error); + +GLIB_AVAILABLE_IN_2_46 +gboolean g_win32_registry_key_get_value (GWin32RegistryKey *key, + gboolean auto_expand, + const gchar *value_name, + GWin32RegistryValueType *value_type, + gpointer *value_data, + gsize *value_data_size, + GError **error); + +GLIB_AVAILABLE_IN_2_46 +gboolean g_win32_registry_key_get_value_w (GWin32RegistryKey *key, + gboolean auto_expand, + const gunichar2 *value_name, + GWin32RegistryValueType *value_type, + gpointer *value_data, + gsize *value_data_size, + GError **error); + +GLIB_AVAILABLE_IN_2_46 +const gchar *g_win32_registry_key_get_path (GWin32RegistryKey *key); + +GLIB_AVAILABLE_IN_2_46 +const gunichar2 *g_win32_registry_key_get_path_w (GWin32RegistryKey *key); + +GLIB_AVAILABLE_IN_2_46 +gboolean g_win32_registry_key_watch (GWin32RegistryKey *key, + gboolean watch_children, + GWin32RegistryKeyWatcherFlags watch_flags, + GWin32RegistryKeyWatchCallbackFunc callback, + gpointer user_data, + GError **error); +GLIB_AVAILABLE_IN_2_46 +gboolean g_win32_registry_key_has_changed (GWin32RegistryKey *key); + +GLIB_AVAILABLE_IN_2_46 +void g_win32_registry_key_erase_change_indicator (GWin32RegistryKey *key); + +G_END_DECLS + +#endif /* G_PLATFORM_WIN32 */ + +#endif /* __G_WIN32_REGISTRY_KEY_H__ */ diff --git a/gio/inotify/Makefile.am b/gio/inotify/Makefile.am index 2838685..8b4b3ae 100644 --- a/gio/inotify/Makefile.am +++ b/gio/inotify/Makefile.am @@ -15,8 +15,6 @@ libinotify_la_SOURCES = \ inotify-helper.h \ ginotifyfilemonitor.c \ ginotifyfilemonitor.h \ - ginotifydirectorymonitor.c \ - ginotifydirectorymonitor.h \ $(NULL) libinotify_la_CFLAGS = \ diff --git a/gio/inotify/Makefile.in b/gio/inotify/Makefile.in new file mode 100644 index 0000000..c209d8d --- /dev/null +++ b/gio/inotify/Makefile.in @@ -0,0 +1,1563 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +subdir = gio/inotify +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES) +libinotify_la_LIBADD = +am__objects_1 = +am_libinotify_la_OBJECTS = libinotify_la-inotify-kernel.lo \ + libinotify_la-inotify-sub.lo libinotify_la-inotify-path.lo \ + libinotify_la-inotify-missing.lo \ + libinotify_la-inotify-helper.lo \ + libinotify_la-ginotifyfilemonitor.lo $(am__objects_1) +libinotify_la_OBJECTS = $(am_libinotify_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libinotify_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libinotify_la_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libinotify_la_SOURCES) +DIST_SOURCES = $(libinotify_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/glib.mk $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = +BUILT_EXTRA_DIST = +CLEANFILES = *.log *.trs $(am__append_14) +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) libinotify.la +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +libinotify_la_SOURCES = \ + inotify-kernel.c \ + inotify-sub.c \ + inotify-path.c \ + inotify-missing.c \ + inotify-helper.c \ + inotify-kernel.h \ + inotify-missing.h \ + inotify-path.h \ + inotify-sub.h \ + inotify-helper.h \ + ginotifyfilemonitor.c \ + ginotifyfilemonitor.h \ + $(NULL) + +libinotify_la_CFLAGS = \ + $(GLIB_HIDDEN_VISIBILITY_CFLAGS) \ + -DG_LOG_DOMAIN=\"GLib-GIO\" \ + $(gio_INCLUDES) \ + $(GLIB_DEBUG_FLAGS) \ + -DGIO_MODULE_DIR=\"$(GIO_MODULE_DIR)\" \ + -DGIO_COMPILATION \ + -DG_DISABLE_DEPRECATED + +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gio/inotify/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gio/inotify/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libinotify.la: $(libinotify_la_OBJECTS) $(libinotify_la_DEPENDENCIES) $(EXTRA_libinotify_la_DEPENDENCIES) + $(AM_V_CCLD)$(libinotify_la_LINK) $(libinotify_la_OBJECTS) $(libinotify_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinotify_la-ginotifyfilemonitor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinotify_la-inotify-helper.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinotify_la-inotify-kernel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinotify_la-inotify-missing.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinotify_la-inotify-path.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libinotify_la-inotify-sub.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libinotify_la-inotify-kernel.lo: inotify-kernel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinotify_la_CFLAGS) $(CFLAGS) -MT libinotify_la-inotify-kernel.lo -MD -MP -MF $(DEPDIR)/libinotify_la-inotify-kernel.Tpo -c -o libinotify_la-inotify-kernel.lo `test -f 'inotify-kernel.c' || echo '$(srcdir)/'`inotify-kernel.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libinotify_la-inotify-kernel.Tpo $(DEPDIR)/libinotify_la-inotify-kernel.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='inotify-kernel.c' object='libinotify_la-inotify-kernel.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinotify_la_CFLAGS) $(CFLAGS) -c -o libinotify_la-inotify-kernel.lo `test -f 'inotify-kernel.c' || echo '$(srcdir)/'`inotify-kernel.c + +libinotify_la-inotify-sub.lo: inotify-sub.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinotify_la_CFLAGS) $(CFLAGS) -MT libinotify_la-inotify-sub.lo -MD -MP -MF $(DEPDIR)/libinotify_la-inotify-sub.Tpo -c -o libinotify_la-inotify-sub.lo `test -f 'inotify-sub.c' || echo '$(srcdir)/'`inotify-sub.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libinotify_la-inotify-sub.Tpo $(DEPDIR)/libinotify_la-inotify-sub.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='inotify-sub.c' object='libinotify_la-inotify-sub.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinotify_la_CFLAGS) $(CFLAGS) -c -o libinotify_la-inotify-sub.lo `test -f 'inotify-sub.c' || echo '$(srcdir)/'`inotify-sub.c + +libinotify_la-inotify-path.lo: inotify-path.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinotify_la_CFLAGS) $(CFLAGS) -MT libinotify_la-inotify-path.lo -MD -MP -MF $(DEPDIR)/libinotify_la-inotify-path.Tpo -c -o libinotify_la-inotify-path.lo `test -f 'inotify-path.c' || echo '$(srcdir)/'`inotify-path.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libinotify_la-inotify-path.Tpo $(DEPDIR)/libinotify_la-inotify-path.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='inotify-path.c' object='libinotify_la-inotify-path.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinotify_la_CFLAGS) $(CFLAGS) -c -o libinotify_la-inotify-path.lo `test -f 'inotify-path.c' || echo '$(srcdir)/'`inotify-path.c + +libinotify_la-inotify-missing.lo: inotify-missing.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinotify_la_CFLAGS) $(CFLAGS) -MT libinotify_la-inotify-missing.lo -MD -MP -MF $(DEPDIR)/libinotify_la-inotify-missing.Tpo -c -o libinotify_la-inotify-missing.lo `test -f 'inotify-missing.c' || echo '$(srcdir)/'`inotify-missing.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libinotify_la-inotify-missing.Tpo $(DEPDIR)/libinotify_la-inotify-missing.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='inotify-missing.c' object='libinotify_la-inotify-missing.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinotify_la_CFLAGS) $(CFLAGS) -c -o libinotify_la-inotify-missing.lo `test -f 'inotify-missing.c' || echo '$(srcdir)/'`inotify-missing.c + +libinotify_la-inotify-helper.lo: inotify-helper.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinotify_la_CFLAGS) $(CFLAGS) -MT libinotify_la-inotify-helper.lo -MD -MP -MF $(DEPDIR)/libinotify_la-inotify-helper.Tpo -c -o libinotify_la-inotify-helper.lo `test -f 'inotify-helper.c' || echo '$(srcdir)/'`inotify-helper.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libinotify_la-inotify-helper.Tpo $(DEPDIR)/libinotify_la-inotify-helper.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='inotify-helper.c' object='libinotify_la-inotify-helper.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinotify_la_CFLAGS) $(CFLAGS) -c -o libinotify_la-inotify-helper.lo `test -f 'inotify-helper.c' || echo '$(srcdir)/'`inotify-helper.c + +libinotify_la-ginotifyfilemonitor.lo: ginotifyfilemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinotify_la_CFLAGS) $(CFLAGS) -MT libinotify_la-ginotifyfilemonitor.lo -MD -MP -MF $(DEPDIR)/libinotify_la-ginotifyfilemonitor.Tpo -c -o libinotify_la-ginotifyfilemonitor.lo `test -f 'ginotifyfilemonitor.c' || echo '$(srcdir)/'`ginotifyfilemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libinotify_la-ginotifyfilemonitor.Tpo $(DEPDIR)/libinotify_la-ginotifyfilemonitor.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ginotifyfilemonitor.c' object='libinotify_la-ginotifyfilemonitor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libinotify_la_CFLAGS) $(CFLAGS) -c -o libinotify_la-ginotifyfilemonitor.lo `test -f 'ginotifyfilemonitor.c' || echo '$(srcdir)/'`ginotifyfilemonitor.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \ + check-local clean clean-checkLTLIBRARIES clean-checkPROGRAMS \ + clean-generic clean-installed_testLTLIBRARIES \ + clean-installed_testPROGRAMS clean-libtool \ + clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gio/inotify/ginotifydirectorymonitor.c b/gio/inotify/ginotifydirectorymonitor.c deleted file mode 100644 index cd4a610..0000000 --- a/gio/inotify/ginotifydirectorymonitor.c +++ /dev/null @@ -1,138 +0,0 @@ -/* GIO - GLib Input, Output and Streaming Library - * - * Copyright (C) 2006-2007 Red Hat, Inc. - * Copyright (C) 2007 Sebastian Dröge. - * - * 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, see . - * - * Authors: Alexander Larsson - * John McCutchan - * Sebastian Dröge - */ - -#include "config.h" - -#include "ginotifydirectorymonitor.h" -#include - -#define USE_INOTIFY 1 -#include "inotify-helper.h" - -struct _GInotifyDirectoryMonitor -{ - GLocalDirectoryMonitor parent_instance; - inotify_sub *sub; -}; - -static gboolean g_inotify_directory_monitor_cancel (GFileMonitor* monitor); - -#define g_inotify_directory_monitor_get_type _g_inotify_directory_monitor_get_type -G_DEFINE_TYPE_WITH_CODE (GInotifyDirectoryMonitor, g_inotify_directory_monitor, G_TYPE_LOCAL_DIRECTORY_MONITOR, - g_io_extension_point_implement (G_LOCAL_DIRECTORY_MONITOR_EXTENSION_POINT_NAME, - g_define_type_id, - "inotify", - 20)) - -static void -g_inotify_directory_monitor_finalize (GObject *object) -{ - GInotifyDirectoryMonitor *inotify_monitor = G_INOTIFY_DIRECTORY_MONITOR (object); - inotify_sub *sub = inotify_monitor->sub; - - if (sub) - { - _ih_sub_cancel (sub); - _ih_sub_free (sub); - inotify_monitor->sub = NULL; - } - - G_OBJECT_CLASS (g_inotify_directory_monitor_parent_class)->finalize (object); -} - -static void -g_inotify_directory_monitor_start (GLocalDirectoryMonitor *local_monitor) -{ - GInotifyDirectoryMonitor *inotify_monitor = G_INOTIFY_DIRECTORY_MONITOR (local_monitor); - const gchar *dirname = NULL; - inotify_sub *sub = NULL; - gboolean ret_ih_startup; /* return value of _ih_startup, for asserting */ - gboolean pair_moves; - - dirname = local_monitor->dirname; - g_assert (dirname != NULL); - - /* Will never fail as is_supported() should be called before instantiating - * anyway */ - /* assert on return value */ - ret_ih_startup = _ih_startup(); - g_assert (ret_ih_startup); - - pair_moves = local_monitor->flags & G_FILE_MONITOR_SEND_MOVED; - - sub = _ih_sub_new (dirname, NULL, pair_moves, FALSE, inotify_monitor); - /* FIXME: what to do about errors here? we can't return NULL or another - * kind of error and an assertion is probably too hard */ - g_assert (sub != NULL); - - /* _ih_sub_add allways returns TRUE, see gio/inotify/inotify-helper.c line 109 - * g_assert (_ih_sub_add (sub)); */ - _ih_sub_add(sub); - - inotify_monitor->sub = sub; -} - -static gboolean -g_inotify_directory_monitor_is_supported (void) -{ - return _ih_startup (); -} - -static void -g_inotify_directory_monitor_class_init (GInotifyDirectoryMonitorClass* klass) -{ - GObjectClass* gobject_class = G_OBJECT_CLASS (klass); - GFileMonitorClass *directory_monitor_class = G_FILE_MONITOR_CLASS (klass); - GLocalDirectoryMonitorClass *local_directory_monitor_class = G_LOCAL_DIRECTORY_MONITOR_CLASS (klass); - - gobject_class->finalize = g_inotify_directory_monitor_finalize; - directory_monitor_class->cancel = g_inotify_directory_monitor_cancel; - - local_directory_monitor_class->mount_notify = TRUE; - local_directory_monitor_class->is_supported = g_inotify_directory_monitor_is_supported; - local_directory_monitor_class->start = g_inotify_directory_monitor_start; -} - -static void -g_inotify_directory_monitor_init (GInotifyDirectoryMonitor* monitor) -{ -} - -static gboolean -g_inotify_directory_monitor_cancel (GFileMonitor* monitor) -{ - GInotifyDirectoryMonitor *inotify_monitor = G_INOTIFY_DIRECTORY_MONITOR (monitor); - inotify_sub *sub = inotify_monitor->sub; - - if (sub) - { - _ih_sub_cancel (sub); - _ih_sub_free (sub); - inotify_monitor->sub = NULL; - } - - if (G_FILE_MONITOR_CLASS (g_inotify_directory_monitor_parent_class)->cancel) - (*G_FILE_MONITOR_CLASS (g_inotify_directory_monitor_parent_class)->cancel) (monitor); - - return TRUE; -} diff --git a/gio/inotify/ginotifydirectorymonitor.h b/gio/inotify/ginotifydirectorymonitor.h deleted file mode 100644 index eef566e..0000000 --- a/gio/inotify/ginotifydirectorymonitor.h +++ /dev/null @@ -1,51 +0,0 @@ -/* GIO - GLib Input, Output and Streaming Library - * - * Copyright (C) 2006-2007 Red Hat, Inc. - * Copyright (C) 2007 Sebastian Dröge. - * - * 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, see . - * - * Authors: Alexander Larsson - * John McCutchan - * Sebastian Dröge - */ - -#ifndef __G_INOTIFY_DIRECTORY_MONITOR_H__ -#define __G_INOTIFY_DIRECTORY_MONITOR_H__ - -#include -#include -#include -#include - -G_BEGIN_DECLS - -#define G_TYPE_INOTIFY_DIRECTORY_MONITOR (_g_inotify_directory_monitor_get_type ()) -#define G_INOTIFY_DIRECTORY_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_INOTIFY_DIRECTORY_MONITOR, GInotifyDirectoryMonitor)) -#define G_INOTIFY_DIRECTORY_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), G_TYPE_INOTIFY_DIRECTORY_MONITOR, GInotifyDirectoryMonitorClass)) -#define G_IS_INOTIFY_DIRECTORY_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_INOTIFY_DIRECTORY_MONITOR)) -#define G_IS_INOTIFY_DIRECTORY_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_INOTIFY_DIRECTORY_MONITOR)) - -typedef struct _GInotifyDirectoryMonitor GInotifyDirectoryMonitor; -typedef struct _GInotifyDirectoryMonitorClass GInotifyDirectoryMonitorClass; - -struct _GInotifyDirectoryMonitorClass { - GLocalDirectoryMonitorClass parent_class; -}; - -GType _g_inotify_directory_monitor_get_type (void); - -G_END_DECLS - -#endif /* __G_INOTIFY_DIRECTORY_MONITOR_H__ */ diff --git a/gio/inotify/ginotifyfilemonitor.c b/gio/inotify/ginotifyfilemonitor.c index e122d67..15a1131 100644 --- a/gio/inotify/ginotifyfilemonitor.c +++ b/gio/inotify/ginotifyfilemonitor.c @@ -19,6 +19,7 @@ * Authors: Alexander Larsson * John McCutchan * Sebastian Dröge + * Ryan Lortie */ #include "config.h" @@ -32,100 +33,62 @@ struct _GInotifyFileMonitor { GLocalFileMonitor parent_instance; - gchar *filename; - gchar *dirname; + inotify_sub *sub; - gboolean pair_moves; }; -static gboolean g_inotify_file_monitor_cancel (GFileMonitor* monitor); - -#define g_inotify_file_monitor_get_type _g_inotify_file_monitor_get_type G_DEFINE_TYPE_WITH_CODE (GInotifyFileMonitor, g_inotify_file_monitor, G_TYPE_LOCAL_FILE_MONITOR, - g_io_extension_point_implement (G_LOCAL_FILE_MONITOR_EXTENSION_POINT_NAME, - g_define_type_id, - "inotify", - 20)) + g_io_extension_point_implement (G_LOCAL_FILE_MONITOR_EXTENSION_POINT_NAME, + g_define_type_id, "inotify", 20)) -static void -g_inotify_file_monitor_finalize (GObject *object) +static gboolean +g_inotify_file_monitor_is_supported (void) { - GInotifyFileMonitor *inotify_monitor = G_INOTIFY_FILE_MONITOR (object); - inotify_sub *sub = inotify_monitor->sub; - - if (sub) - { - _ih_sub_cancel (sub); - _ih_sub_free (sub); - inotify_monitor->sub = NULL; - } - - g_free (inotify_monitor->filename); - g_free (inotify_monitor->dirname); - - G_OBJECT_CLASS (g_inotify_file_monitor_parent_class)->finalize (object); + return _ih_startup (); } static void -g_inotify_file_monitor_start (GLocalFileMonitor *local_monitor) +g_inotify_file_monitor_start (GLocalFileMonitor *local_monitor, + const gchar *dirname, + const gchar *basename, + const gchar *filename, + GFileMonitorSource *source) { GInotifyFileMonitor *inotify_monitor = G_INOTIFY_FILE_MONITOR (local_monitor); - const gchar *filename = NULL; - gboolean watch_hardlinks; - inotify_sub *sub = NULL; - gboolean pair_moves; - gboolean ret_ih_startup; /* return value of _ih_startup, for asserting */ - - filename = local_monitor->filename; - g_assert (filename != NULL); - - inotify_monitor->filename = g_path_get_basename (filename); - inotify_monitor->dirname = g_path_get_dirname (filename); - - /* Will never fail as is_supported() should be called before instantiating - * anyway */ - /* assert on return value */ - ret_ih_startup = _ih_startup(); - g_assert (ret_ih_startup); - - pair_moves = local_monitor->flags & G_FILE_MONITOR_SEND_MOVED; - watch_hardlinks = local_monitor->flags & G_FILE_MONITOR_WATCH_HARD_LINKS; - - sub = _ih_sub_new (inotify_monitor->dirname, - inotify_monitor->filename, - pair_moves, - watch_hardlinks, - inotify_monitor); - - /* FIXME: what to do about errors here? we can't return NULL or another - * kind of error and an assertion is probably too hard */ - g_assert (sub != NULL); - - /* _ih_sub_add allways returns TRUE, see gio/inotify/inotify-helper.c line 109 - * g_assert (_ih_sub_add (sub)); */ - _ih_sub_add (sub); - - inotify_monitor->sub = sub; + gboolean success; + + /* should already have been called, from is_supported() */ + success = _ih_startup (); + g_assert (success); + + inotify_monitor->sub = _ih_sub_new (dirname, basename, filename != NULL, source); + _ih_sub_add (inotify_monitor->sub); } static gboolean -g_inotify_file_monitor_is_supported (void) +g_inotify_file_monitor_cancel (GFileMonitor *monitor) { - return _ih_startup (); + GInotifyFileMonitor *inotify_monitor = G_INOTIFY_FILE_MONITOR (monitor); + + if (inotify_monitor->sub) + { + _ih_sub_cancel (inotify_monitor->sub); + _ih_sub_free (inotify_monitor->sub); + inotify_monitor->sub = NULL; + } + + return TRUE; } static void -g_inotify_file_monitor_class_init (GInotifyFileMonitorClass* klass) +g_inotify_file_monitor_finalize (GObject *object) { - GObjectClass* gobject_class = G_OBJECT_CLASS (klass); - GFileMonitorClass *file_monitor_class = G_FILE_MONITOR_CLASS (klass); - GLocalFileMonitorClass *local_file_monitor_class = G_LOCAL_FILE_MONITOR_CLASS (klass); + GInotifyFileMonitor *inotify_monitor = G_INOTIFY_FILE_MONITOR (object); - gobject_class->finalize = g_inotify_file_monitor_finalize; - file_monitor_class->cancel = g_inotify_file_monitor_cancel; + /* must surely have been cancelled already */ + g_assert (!inotify_monitor->sub); - local_file_monitor_class->is_supported = g_inotify_file_monitor_is_supported; - local_file_monitor_class->start = g_inotify_file_monitor_start; + G_OBJECT_CLASS (g_inotify_file_monitor_parent_class)->finalize (object); } static void @@ -133,21 +96,17 @@ g_inotify_file_monitor_init (GInotifyFileMonitor* monitor) { } -static gboolean -g_inotify_file_monitor_cancel (GFileMonitor* monitor) +static void +g_inotify_file_monitor_class_init (GInotifyFileMonitorClass* klass) { - GInotifyFileMonitor *inotify_monitor = G_INOTIFY_FILE_MONITOR (monitor); - inotify_sub *sub = inotify_monitor->sub; - - if (sub) - { - _ih_sub_cancel (sub); - _ih_sub_free (sub); - inotify_monitor->sub = NULL; - } + GObjectClass* gobject_class = G_OBJECT_CLASS (klass); + GFileMonitorClass *file_monitor_class = G_FILE_MONITOR_CLASS (klass); + GLocalFileMonitorClass *local_file_monitor_class = G_LOCAL_FILE_MONITOR_CLASS (klass); - if (G_FILE_MONITOR_CLASS (g_inotify_file_monitor_parent_class)->cancel) - (*G_FILE_MONITOR_CLASS (g_inotify_file_monitor_parent_class)->cancel) (monitor); + local_file_monitor_class->is_supported = g_inotify_file_monitor_is_supported; + local_file_monitor_class->start = g_inotify_file_monitor_start; + local_file_monitor_class->mount_notify = TRUE; + file_monitor_class->cancel = g_inotify_file_monitor_cancel; - return TRUE; + gobject_class->finalize = g_inotify_file_monitor_finalize; } diff --git a/gio/inotify/ginotifyfilemonitor.h b/gio/inotify/ginotifyfilemonitor.h index 05837b9..2ff8de8 100644 --- a/gio/inotify/ginotifyfilemonitor.h +++ b/gio/inotify/ginotifyfilemonitor.h @@ -32,7 +32,7 @@ G_BEGIN_DECLS -#define G_TYPE_INOTIFY_FILE_MONITOR (_g_inotify_file_monitor_get_type ()) +#define G_TYPE_INOTIFY_FILE_MONITOR (g_inotify_file_monitor_get_type ()) #define G_INOTIFY_FILE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_INOTIFY_FILE_MONITOR, GInotifyFileMonitor)) #define G_INOTIFY_FILE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), G_TYPE_INOTIFY_FILE_MONITOR, GInotifyFileMonitorClass)) #define G_IS_INOTIFY_FILE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_INOTIFY_FILE_MONITOR)) @@ -45,7 +45,7 @@ struct _GInotifyFileMonitorClass { GLocalFileMonitorClass parent_class; }; -GType _g_inotify_file_monitor_get_type (void); +GType g_inotify_file_monitor_get_type (void); G_END_DECLS diff --git a/gio/inotify/inotify-helper.c b/gio/inotify/inotify-helper.c index abf66c8..06f5fab 100644 --- a/gio/inotify/inotify-helper.c +++ b/gio/inotify/inotify-helper.c @@ -27,10 +27,10 @@ #include #include #include +#include /* Just include the local header to stop all the pain */ #include -#include -#include +#include #include #include "inotify-helper.h" #include "inotify-missing.h" @@ -39,9 +39,9 @@ static gboolean ih_debug_enabled = FALSE; #define IH_W if (ih_debug_enabled) g_warning -static void ih_event_callback (ik_event_t *event, - inotify_sub *sub, - gboolean file_event); +static gboolean ih_event_callback (ik_event_t *event, + inotify_sub *sub, + gboolean file_event); static void ih_not_missing_callback (inotify_sub *sub); /* We share this lock with inotify-kernel.c and inotify-missing.c @@ -109,6 +109,7 @@ _ih_sub_add (inotify_sub *sub) _im_add (sub); G_UNLOCK (inotify_lock); + return TRUE; } @@ -129,7 +130,7 @@ _ih_sub_cancel (inotify_sub *sub) } G_UNLOCK (inotify_lock); - + return TRUE; } @@ -150,113 +151,100 @@ _ih_fullpath_from_event (ik_event_t *event, return fullpath; } - static gboolean -ih_event_is_paired_move (ik_event_t *event) +ih_event_callback (ik_event_t *event, + inotify_sub *sub, + gboolean file_event) { - if (event->pair) - { - ik_event_t *paired = event->pair; - /* intofiy(7): IN_MOVE == IN_MOVED_FROM | IN_MOVED_TO */ - return (event->mask | paired->mask) & IN_MOVE; - } + gboolean interesting; - return FALSE; -} + g_assert (!file_event); /* XXX hardlink support */ -static void -ih_event_callback (ik_event_t *event, - inotify_sub *sub, - gboolean file_event) -{ - gchar *fullpath; - GFileMonitorEvent eflags; - GFile* child; - GFile* other; - - eflags = ih_mask_to_EventFlags (event->mask); - fullpath = _ih_fullpath_from_event (event, sub->dirname, - file_event ? sub->filename : NULL); - child = g_file_new_for_path (fullpath); - g_free (fullpath); - - if (ih_event_is_paired_move (event) && sub->pair_moves) + if (event->mask & IN_MOVE) { - const char *parent_dir = (char *) _ip_get_path_for_wd (event->pair->wd); - fullpath = _ih_fullpath_from_event (event->pair, parent_dir, NULL); - other = g_file_new_for_path (fullpath); - g_free (fullpath); - eflags = G_FILE_MONITOR_EVENT_MOVED; - event->pair = NULL; /* prevents the paired event to be emitted as well */ + /* We either have a rename (in the same directory) or a move + * (between different directories). + */ + if (event->pair && event->pair->wd == event->wd) + { + /* this is a rename */ + interesting = g_file_monitor_source_handle_event (sub->user_data, G_FILE_MONITOR_EVENT_RENAMED, + event->name, event->pair->name, NULL, event->timestamp); + } + else + { + GFile *other; + + if (event->pair) + { + const char *parent_dir; + gchar *fullpath; + + parent_dir = _ip_get_path_for_wd (event->pair->wd); + fullpath = _ih_fullpath_from_event (event->pair, parent_dir, NULL); + other = g_file_new_for_path (fullpath); + g_free (fullpath); + } + else + other = NULL; + + /* this is either an incoming or outgoing move */ + interesting = g_file_monitor_source_handle_event (sub->user_data, ih_mask_to_EventFlags (event->mask), + event->name, NULL, other, event->timestamp); + + if (other) + g_object_unref (other); + } } else - other = NULL; - - g_file_monitor_emit_event (G_FILE_MONITOR (sub->user_data), - child, other, eflags); - - /* For paired moves or moves whose mask has been changed from IN_MOVED_TO to - * IN_CREATE, notify also that it's probably the last change to the file, - * emitting CHANGES_DONE_HINT. - * The first (first part of the if's guard below) is the case of a normal - * move within the monitored tree and in the same mounted volume. - * The latter (second part of the guard) is the case of a move within the - * same mounted volume, but from a not monitored directory. - * - * It's not needed in cases like moves across mounted volumes as the IN_CREATE - * will be followed by a IN_MODIFY and IN_CLOSE_WRITE events. - * Also not needed if sub->pair_moves is set as EVENT_MOVED will be emitted - * instead of EVENT_CREATED which implies no further modification will be - * applied to the file - * See: https://bugzilla.gnome.org/show_bug.cgi?id=640077 - */ - if ((!sub->pair_moves && - event->is_second_in_pair && (event->mask & IN_MOVED_TO)) || - (!ih_event_is_paired_move (event) && - (event->original_mask & IN_MOVED_TO) && (event->mask & IN_CREATE))) + /* unpaired event -- no 'other' field */ + interesting = g_file_monitor_source_handle_event (sub->user_data, ih_mask_to_EventFlags (event->mask), + event->name, NULL, NULL, event->timestamp); + + if (event->mask & IN_CREATE) { - g_file_monitor_emit_event (G_FILE_MONITOR (sub->user_data), - child, NULL, G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT); + const gchar *parent_dir; + gchar *fullname; + struct stat buf; + gint s; + + /* The kernel reports IN_CREATE for two types of events: + * + * - creat(), in which case IN_CLOSE_WRITE will come soon; or + * - link(), mkdir(), mknod(), etc., in which case it won't + * + * We can attempt to detect the second case and send the + * CHANGES_DONE immediately so that the user isn't left waiting. + * + * The detection for link() is not 100% reliable since the link + * count could be 1 if the original link was deleted or if + * O_TMPFILE was being used, but in that case the virtual + * CHANGES_DONE will be emitted to close the loop. + */ + + parent_dir = _ip_get_path_for_wd (event->wd); + fullname = _ih_fullpath_from_event (event, parent_dir, NULL); + s = stat (fullname, &buf); + g_free (fullname); + + /* if it doesn't look like the result of creat()... */ + if (s != 0 || !S_ISREG (buf.st_mode) || buf.st_nlink != 1) + g_file_monitor_source_handle_event (sub->user_data, G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT, + event->name, NULL, NULL, event->timestamp); } - g_object_unref (child); - if (other) - g_object_unref (other); + return interesting; } static void ih_not_missing_callback (inotify_sub *sub) { - gchar *fullpath; - GFileMonitorEvent eflags; - guint32 mask; - GFile* child; + gint now = g_get_monotonic_time (); - if (sub->filename) - { - fullpath = g_strdup_printf ("%s/%s", sub->dirname, sub->filename); - g_warning ("Missing callback called fullpath = %s\n", fullpath); - if (!g_file_test (fullpath, G_FILE_TEST_EXISTS)) - { - g_free (fullpath); - return; - } - mask = IN_CREATE; - } - else - { - fullpath = g_strdup_printf ("%s", sub->dirname); - mask = IN_CREATE|IN_ISDIR; - } - - eflags = ih_mask_to_EventFlags (mask); - child = g_file_new_for_path (fullpath); - g_free (fullpath); - - g_file_monitor_emit_event (G_FILE_MONITOR (sub->user_data), - child, NULL, eflags); - - g_object_unref (child); + g_file_monitor_source_handle_event (sub->user_data, G_FILE_MONITOR_EVENT_CREATED, + sub->filename, NULL, NULL, now); + g_file_monitor_source_handle_event (sub->user_data, G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT, + sub->filename, NULL, NULL, now); } /* Transforms a inotify event to a GVFS event. */ @@ -273,13 +261,15 @@ ih_mask_to_EventFlags (guint32 mask) case IN_ATTRIB: return G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED; case IN_MOVE_SELF: - case IN_MOVED_FROM: case IN_DELETE: case IN_DELETE_SELF: return G_FILE_MONITOR_EVENT_DELETED; case IN_CREATE: - case IN_MOVED_TO: return G_FILE_MONITOR_EVENT_CREATED; + case IN_MOVED_FROM: + return G_FILE_MONITOR_EVENT_MOVED_OUT; + case IN_MOVED_TO: + return G_FILE_MONITOR_EVENT_MOVED_IN; case IN_UNMOUNT: return G_FILE_MONITOR_EVENT_UNMOUNTED; case IN_Q_OVERFLOW: diff --git a/gio/inotify/inotify-kernel.c b/gio/inotify/inotify-kernel.c index b672cb1..89fb9ca 100644 --- a/gio/inotify/inotify-kernel.c +++ b/gio/inotify/inotify-kernel.c @@ -1,5 +1,6 @@ /* Copyright (C) 2005 John McCutchan + Copyright © 2015 Canonical Limited The Gnome Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -15,8 +16,9 @@ License along with the Gnome Library; see the file COPYING.LIB. If not, see . - Authors:. - John McCutchan + Authors: + Ryan Lortie + John McCutchan */ #include "config.h" @@ -29,561 +31,422 @@ #include #include "inotify-kernel.h" #include +#include #include "glib-private.h" -/* Timings for pairing MOVED_TO / MOVED_FROM events */ -#define PROCESS_EVENTS_TIME 1000 /* 1000 milliseconds (1 hz) */ -#define DEFAULT_HOLD_UNTIL_TIME 0 /* 0 millisecond */ -#define MOVE_HOLD_UNTIL_TIME 500 /* 500 microseconds or 0.5 milliseconds */ +/* From inotify(7) */ +#define MAX_EVENT_SIZE (sizeof(struct inotify_event) + NAME_MAX + 1) -static int inotify_instance_fd = -1; -static GQueue *events_to_process = NULL; -static GQueue *event_queue = NULL; -static GHashTable * cookie_hash = NULL; -static GIOChannel *inotify_read_ioc; -static GPollFD ik_poll_fd; -static gboolean ik_poll_fd_enabled = TRUE; -static void (*user_cb)(ik_event_t *event); +/* Amount of time to sleep on receipt of uninteresting events */ +#define BOREDOM_SLEEP_TIME (100 * G_TIME_SPAN_MILLISECOND) -static gboolean ik_read_callback (gpointer user_data); -static gboolean ik_process_eq_callback (gpointer user_data); - -static guint32 ik_move_matches = 0; -static guint32 ik_move_misses = 0; - -static gboolean process_eq_running = FALSE; +/* Define limits on the maximum amount of time and maximum amount of + * interceding events between FROM/TO that can be merged. + */ +#define MOVE_PAIR_DELAY (10 * G_TIME_SPAN_MILLISECOND) +#define MOVE_PAIR_DISTANCE (100) /* We use the lock from inotify-helper.c * - * There are two places that we take this lock - * - * 1) In ik_read_callback - * - * 2) ik_process_eq_callback. - * + * We only have to take it on our read callback. * * The rest of locking is taken care of in inotify-helper.c */ G_LOCK_EXTERN (inotify_lock); -typedef struct ik_event_internal { - ik_event_t *event; - gboolean seen; - gboolean sent; - GTimeVal hold_until; - struct ik_event_internal *pair; -} ik_event_internal_t; - -/* In order to perform non-sleeping inotify event chunking we need - * a custom GSource - */ -static gboolean -ik_source_prepare (GSource *source, - gint *timeout) +static ik_event_t * +ik_event_new (struct inotify_event *kevent, + gint64 now) { - return FALSE; -} + ik_event_t *event = g_new0 (ik_event_t, 1); -static gboolean -ik_source_timeout (gpointer data) -{ - GSource *source = (GSource *)data; - - /* Re-active the PollFD */ - g_source_add_poll (source, &ik_poll_fd); - g_source_unref (source); - ik_poll_fd_enabled = TRUE; - - return FALSE; -} + event->wd = kevent->wd; + event->mask = kevent->mask; + event->cookie = kevent->cookie; + event->len = kevent->len; + event->timestamp = now; + if (event->len) + event->name = g_strdup (kevent->name); + else + event->name = NULL; -#define MAX_PENDING_COUNT 2 -#define PENDING_THRESHOLD(qsize) ((qsize) >> 1) -#define PENDING_MARGINAL_COST(p) ((unsigned int)(1 << (p))) -#define MAX_QUEUED_EVENTS 2048 -#define AVERAGE_EVENT_SIZE sizeof (struct inotify_event) + 16 -#define TIMEOUT_MILLISECONDS 10 + return event; +} -static gboolean -ik_source_check (GSource *source) +void +_ik_event_free (ik_event_t *event) { - static int prev_pending = 0, pending_count = 0; - - /* We already disabled the PollFD or - * nothing to be read from inotify */ - if (!ik_poll_fd_enabled || !(ik_poll_fd.revents & G_IO_IN)) - return FALSE; - - if (pending_count < MAX_PENDING_COUNT) + if (event->pair) { - GSource *timeout_source; - unsigned int pending; - - if (ioctl (inotify_instance_fd, FIONREAD, &pending) == -1) - goto do_read; - - pending /= AVERAGE_EVENT_SIZE; - - /* Don't wait if the number of pending events is too close - * to the maximum queue size. - */ - if (pending > PENDING_THRESHOLD (MAX_QUEUED_EVENTS)) - goto do_read; - - /* With each successive iteration, the minimum rate for - * further sleep doubles. - */ - if (pending-prev_pending < PENDING_MARGINAL_COST (pending_count)) - goto do_read; - - prev_pending = pending; - pending_count++; - - /* We are going to wait to read the events: */ - - /* Remove the PollFD from the source */ - g_source_remove_poll (source, &ik_poll_fd); - /* To avoid threading issues we need to flag that we've done that */ - ik_poll_fd_enabled = FALSE; - /* Set a timeout to re-add the PollFD to the source */ - g_source_ref (source); - - timeout_source = g_timeout_source_new (TIMEOUT_MILLISECONDS); - g_source_set_callback (timeout_source, ik_source_timeout, source, NULL); - g_source_attach (timeout_source, GLIB_PRIVATE_CALL (g_get_worker_context) ()); - g_source_unref (timeout_source); - - return FALSE; + event->pair->pair = NULL; + _ik_event_free (event->pair); } -do_read: - /* We are ready to read events from inotify */ - - prev_pending = 0; - pending_count = 0; - - return TRUE; + g_free (event->name); + g_free (event); } -static gboolean -ik_source_dispatch (GSource *source, - GSourceFunc callback, - gpointer user_data) +typedef struct { - if (callback) - return callback (user_data); - return TRUE; -} + GSource source; -static GSourceFuncs ik_source_funcs = -{ - ik_source_prepare, - ik_source_check, - ik_source_dispatch, - NULL -}; + GQueue queue; + gpointer fd_tag; + gint fd; -gboolean _ik_startup (void (*cb)(ik_event_t *event)) -{ - static gboolean initialized = FALSE; - GSource *source; - - user_cb = cb; - /* Ignore multi-calls */ - if (initialized) - return inotify_instance_fd >= 0; + GHashTable *unmatched_moves; + gboolean is_bored; +} InotifyKernelSource; - initialized = TRUE; +static InotifyKernelSource *inotify_source; - inotify_instance_fd = inotify_init1 (IN_CLOEXEC); +static gint64 +ik_source_get_dispatch_time (InotifyKernelSource *iks) +{ + ik_event_t *head; - if (inotify_instance_fd < 0) - inotify_instance_fd = inotify_init (); + head = g_queue_peek_head (&iks->queue); - if (inotify_instance_fd < 0) - return FALSE; + /* nothing in the queue: not ready */ + if (!head) + return -1; - inotify_read_ioc = g_io_channel_unix_new (inotify_instance_fd); - ik_poll_fd.fd = inotify_instance_fd; - ik_poll_fd.events = G_IO_IN | G_IO_HUP | G_IO_ERR; - g_io_channel_set_encoding (inotify_read_ioc, NULL, NULL); - g_io_channel_set_flags (inotify_read_ioc, G_IO_FLAG_NONBLOCK, NULL); + /* if it's not an unpaired move, it is ready now */ + if (~head->mask & IN_MOVED_FROM || head->pair) + return 0; - source = g_source_new (&ik_source_funcs, sizeof (GSource)); - g_source_set_name (source, "GIO Inotify"); - g_source_add_poll (source, &ik_poll_fd); - g_source_set_callback (source, ik_read_callback, NULL, NULL); - g_source_attach (source, GLIB_PRIVATE_CALL (g_get_worker_context) ()); - g_source_unref (source); + /* if the queue is too long then it's ready now */ + if (iks->queue.length > MOVE_PAIR_DISTANCE) + return 0; - cookie_hash = g_hash_table_new (g_direct_hash, g_direct_equal); - event_queue = g_queue_new (); - events_to_process = g_queue_new (); - - return TRUE; + /* otherwise, it's ready after the delay */ + return head->timestamp + MOVE_PAIR_DELAY; } -static ik_event_internal_t * -ik_event_internal_new (ik_event_t *event) +static gboolean +ik_source_can_dispatch_now (InotifyKernelSource *iks, + gint64 now) { - ik_event_internal_t *internal_event = g_new0 (ik_event_internal_t, 1); - GTimeVal tv; - - g_assert (event); - - g_get_current_time (&tv); - g_time_val_add (&tv, DEFAULT_HOLD_UNTIL_TIME); - internal_event->event = event; - internal_event->hold_until = tv; - - return internal_event; -} + gint64 dispatch_time; -static ik_event_t * -ik_event_new (char *buffer) -{ - struct inotify_event *kevent = (struct inotify_event *)buffer; - ik_event_t *event = g_new0 (ik_event_t, 1); - - g_assert (buffer); - - event->wd = kevent->wd; - event->mask = kevent->mask; - event->cookie = kevent->cookie; - event->len = kevent->len; - if (event->len) - event->name = g_strdup (kevent->name); - else - event->name = g_strdup (""); - - return event; -} + dispatch_time = ik_source_get_dispatch_time (iks); -void -_ik_event_free (ik_event_t *event) -{ - if (event->pair) - _ik_event_free (event->pair); - g_free (event->name); - g_free (event); + return 0 <= dispatch_time && dispatch_time <= now; } -gint32 -_ik_watch (const char *path, - guint32 mask, - int *err) +static gsize +ik_source_read_some_events (InotifyKernelSource *iks, + gchar *buffer, + gsize buffer_len) { - gint32 wd = -1; - - g_assert (path != NULL); - g_assert (inotify_instance_fd >= 0); - - wd = inotify_add_watch (inotify_instance_fd, path, mask); - - if (wd < 0) + gssize result; + +again: + result = read (iks->fd, buffer, buffer_len); + + if (result < 0) { - int e = errno; - /* FIXME: debug msg failed to add watch */ - if (err) - *err = e; - return wd; + if (errno == EINTR) + goto again; + + if (errno == EAGAIN) + return 0; + + g_error ("inotify read(): %s", g_strerror (errno)); } - - g_assert (wd >= 0); - return wd; + else if (result == 0) + g_error ("inotify unexpectedly hit eof"); + + return result; } -int -_ik_ignore (const char *path, - gint32 wd) +static gchar * +ik_source_read_all_the_events (InotifyKernelSource *iks, + gchar *buffer, + gsize buffer_len, + gsize *length_out) { - g_assert (wd >= 0); - g_assert (inotify_instance_fd >= 0); - - if (inotify_rm_watch (inotify_instance_fd, wd) < 0) + gsize n_read; + + n_read = ik_source_read_some_events (iks, buffer, buffer_len); + + /* Check if we might have gotten another event if we had passed in a + * bigger buffer... + */ + if (n_read + MAX_EVENT_SIZE > buffer_len) { - /* int e = errno; */ - /* failed to rm watch */ - return -1; + gchar *new_buffer; + guint n_readable; + gint result; + + /* figure out how many more bytes there are to read */ + result = ioctl (iks->fd, FIONREAD, &n_readable); + if (result != 0) + g_error ("inotify ioctl(FIONREAD): %s", g_strerror (errno)); + + if (n_readable != 0) + { + /* there is in fact more data. allocate a new buffer, copy + * the existing data, and then append the remaining. + */ + new_buffer = g_malloc (n_read + n_readable); + memcpy (new_buffer, buffer, n_read); + n_read += ik_source_read_some_events (iks, new_buffer + n_read, n_readable); + + buffer = new_buffer; + + /* There may be new events in the buffer that were added after + * the FIONREAD was performed, but we can't risk getting into + * a loop. We'll get them next time. + */ + } } - - return 0; + + *length_out = n_read; + + return buffer; } -static void -ik_read_events (gsize *buffer_size_out, - gchar **buffer_out) +static gboolean +ik_source_dispatch (GSource *source, + GSourceFunc func, + gpointer user_data) { - static gchar *buffer = NULL; - static gsize buffer_size; - - /* Initialize the buffer on our first call */ - if (buffer == NULL) + InotifyKernelSource *iks = (InotifyKernelSource *) source; + gboolean (*user_callback) (ik_event_t *event) = (void *) func; + gboolean interesting = FALSE; + gint64 now; + + now = g_source_get_time (source); + + if (iks->is_bored || g_source_query_unix_fd (source, iks->fd_tag)) { - buffer_size = AVERAGE_EVENT_SIZE; - buffer_size *= MAX_QUEUED_EVENTS; - buffer = g_malloc (buffer_size); + gchar stack_buffer[4096]; + gsize buffer_len; + gchar *buffer; + gsize offset; + + /* We want to read all of the available events. + * + * We need to do it in a finite number of steps so that we don't + * get caught in a loop of read() with another process + * continuously adding events each time we drain them. + * + * In the normal case we will have only a few events in the queue, + * so start out by reading into a small stack-allocated buffer. + * Even though we're on a fresh stack frame, there is no need to + * pointlessly blow up with the size of the worker thread stack + * with a huge buffer here. + * + * If the result is large enough to cause us to suspect that + * another event may be pending then we allocate a buffer on the + * heap that can hold all of the events and read (once!) into that + * buffer. + */ + buffer = ik_source_read_all_the_events (iks, stack_buffer, sizeof stack_buffer, &buffer_len); + + offset = 0; + + while (offset < buffer_len) + { + struct inotify_event *kevent = (struct inotify_event *) (buffer + offset); + ik_event_t *event; + + event = ik_event_new (kevent, now); + + offset += sizeof (struct inotify_event) + event->len; + + if (event->mask & IN_MOVED_TO) + { + ik_event_t *pair; + + pair = g_hash_table_lookup (iks->unmatched_moves, GUINT_TO_POINTER (event->cookie)); + if (pair != NULL) + { + g_assert (!pair->pair); + + g_hash_table_remove (iks->unmatched_moves, GUINT_TO_POINTER (event->cookie)); + event->is_second_in_pair = TRUE; + event->pair = pair; + pair->pair = event; + continue; + } + + interesting = TRUE; + } + + else if (event->mask & IN_MOVED_FROM) + { + gboolean new; + + new = g_hash_table_insert (iks->unmatched_moves, GUINT_TO_POINTER (event->cookie), event); + if G_UNLIKELY (!new) + g_warning ("inotify: got IN_MOVED_FROM event with already-pending cookie %#x", event->cookie); + + interesting = TRUE; + } + + g_queue_push_tail (&iks->queue, event); + } + + if (buffer_len == 0) + { + /* We can end up reading nothing if we arrived here due to a + * boredom timer but the stream of events stopped meanwhile. + * + * In that case, we need to switch back to polling the file + * descriptor in the usual way. + */ + g_assert (iks->is_bored); + interesting = TRUE; + } + + if (buffer != stack_buffer) + g_free (buffer); } - *buffer_size_out = 0; - *buffer_out = NULL; - - memset (buffer, 0, buffer_size); + while (ik_source_can_dispatch_now (iks, now)) + { + ik_event_t *event; - if (g_io_channel_read_chars (inotify_read_ioc, (char *)buffer, buffer_size, buffer_size_out, NULL) != G_IO_STATUS_NORMAL) { - /* error reading */ - } - *buffer_out = buffer; -} + /* callback will free the event */ + event = g_queue_pop_head (&iks->queue); -static gboolean -ik_read_callback (gpointer user_data) -{ - gchar *buffer; - gsize buffer_size, buffer_i, events; - - G_LOCK (inotify_lock); - ik_read_events (&buffer_size, &buffer); - - buffer_i = 0; - events = 0; - while (buffer_i < buffer_size) + if (event->mask & IN_MOVED_FROM && !event->pair) + g_hash_table_remove (iks->unmatched_moves, GUINT_TO_POINTER (event->cookie)); + + G_LOCK (inotify_lock); + + interesting |= (* user_callback) (event); + + G_UNLOCK (inotify_lock); + } + + /* The queue gets blocked iff we have unmatched moves */ + g_assert ((iks->queue.length > 0) == (g_hash_table_size (iks->unmatched_moves) > 0)); + + /* Here's where we decide what will wake us up next. + * + * If the last event was interesting then we will wake up on the fd or + * when the timeout is reached on an unpaired move (if any). + * + * If the last event was uninteresting then we will wake up after the + * shorter of the boredom sleep or any timeout for a unpaired move. + */ + if (interesting) { - struct inotify_event *event; - gsize event_size; - event = (struct inotify_event *)&buffer[buffer_i]; - event_size = sizeof(struct inotify_event) + event->len; - g_queue_push_tail (events_to_process, ik_event_internal_new (ik_event_new (&buffer[buffer_i]))); - buffer_i += event_size; - events++; + if (iks->is_bored) + { + g_source_modify_unix_fd (source, iks->fd_tag, G_IO_IN); + iks->is_bored = FALSE; + } + + g_source_set_ready_time (source, ik_source_get_dispatch_time (iks)); } - - /* If the event process callback is off, turn it back on */ - if (!process_eq_running && events) + else { - GSource *timeout_source; + guint64 dispatch_time = ik_source_get_dispatch_time (iks); + guint64 boredom_time = now + BOREDOM_SLEEP_TIME; - process_eq_running = TRUE; - timeout_source = g_timeout_source_new (PROCESS_EVENTS_TIME); - g_source_set_callback (timeout_source, ik_process_eq_callback, NULL, NULL); - g_source_attach (timeout_source, GLIB_PRIVATE_CALL (g_get_worker_context ())); - g_source_unref (timeout_source); + if (!iks->is_bored) + { + g_source_modify_unix_fd (source, iks->fd_tag, 0); + iks->is_bored = TRUE; + } + + g_source_set_ready_time (source, MIN (dispatch_time, boredom_time)); } - - G_UNLOCK (inotify_lock); - + return TRUE; } -static gboolean -g_timeval_lt (GTimeVal *val1, - GTimeVal *val2) +static InotifyKernelSource * +ik_source_new (gboolean (* callback) (ik_event_t *event)) { - if (val1->tv_sec < val2->tv_sec) - return TRUE; + static GSourceFuncs source_funcs = { + NULL, NULL, + ik_source_dispatch + /* should have a finalize, but it will never happen */ + }; + InotifyKernelSource *iks; + GSource *source; - if (val1->tv_sec > val2->tv_sec) - return FALSE; + source = g_source_new (&source_funcs, sizeof (InotifyKernelSource)); + iks = (InotifyKernelSource *) source; - /* val1->tv_sec == val2->tv_sec */ - if (val1->tv_usec < val2->tv_usec) - return TRUE; + g_source_set_name (source, "inotify kernel source"); - return FALSE; -} + iks->unmatched_moves = g_hash_table_new (NULL, NULL); + iks->fd = inotify_init1 (IN_CLOEXEC); -static gboolean -g_timeval_le (GTimeVal *val1, - GTimeVal *val2) -{ - if (val1->tv_sec < val2->tv_sec) - return TRUE; + if (iks->fd < 0) + iks->fd = inotify_init (); - if (val1->tv_sec > val2->tv_sec) - return FALSE; - - /* val1->tv_sec == val2->tv_sec */ - if (val1->tv_usec <= val2->tv_usec) - return TRUE; + if (iks->fd >= 0) + { + GError *error = NULL; - return FALSE; -} + g_unix_set_fd_nonblocking (iks->fd, TRUE, &error); + g_assert_no_error (error); -static void -ik_pair_events (ik_event_internal_t *event1, - ik_event_internal_t *event2) -{ - g_assert (event1 && event2); - /* We should only be pairing events that have the same cookie */ - g_assert (event1->event->cookie == event2->event->cookie); - /* We shouldn't pair an event that already is paired */ - g_assert (event1->pair == NULL && event2->pair == NULL); + iks->fd_tag = g_source_add_unix_fd (source, iks->fd, G_IO_IN); + } - /* Pair the internal structures and the ik_event_t structures */ - event1->pair = event2; - event1->event->pair = event2->event; - event2->event->is_second_in_pair = TRUE; + g_source_set_callback (source, (GSourceFunc) callback, NULL, NULL); - if (g_timeval_lt (&event1->hold_until, &event2->hold_until)) - event1->hold_until = event2->hold_until; + g_source_attach (source, GLIB_PRIVATE_CALL (g_get_worker_context) ()); - event2->hold_until = event1->hold_until; + return iks; } -static void -ik_event_add_microseconds (ik_event_internal_t *event, - glong ms) +gboolean +_ik_startup (gboolean (*cb)(ik_event_t *event)) { - g_assert (event); - g_time_val_add (&event->hold_until, ms); -} + if (g_once_init_enter (&inotify_source)) + g_once_init_leave (&inotify_source, ik_source_new (cb)); -static gboolean -ik_event_ready (ik_event_internal_t *event) -{ - GTimeVal tv; - g_assert (event); - - g_get_current_time (&tv); - - /* An event is ready if, - * - * it has no cookie -- there is nothing to be gained by holding it - * or, it is already paired -- we don't need to hold it anymore - * or, we have held it long enough - */ - return - event->event->cookie == 0 || - event->pair != NULL || - g_timeval_le (&event->hold_until, &tv); + return inotify_source->fd >= 0; } -static void -ik_pair_moves (gpointer data, - gpointer user_data) +gint32 +_ik_watch (const char *path, + guint32 mask, + int *err) { - ik_event_internal_t *event = (ik_event_internal_t *)data; - - if (event->seen == TRUE || event->sent == TRUE) - return; - - if (event->event->cookie != 0) - { - /* When we get a MOVED_FROM event we delay sending the event by - * MOVE_HOLD_UNTIL_TIME microseconds. We need to do this because a - * MOVED_TO pair _might_ be coming in the near future */ - if (event->event->mask & IN_MOVED_FROM) - { - g_hash_table_insert (cookie_hash, GINT_TO_POINTER (event->event->cookie), event); - /* because we don't deliver move events there is no point in waiting for the match right now. */ - ik_event_add_microseconds (event, MOVE_HOLD_UNTIL_TIME); - } - else if (event->event->mask & IN_MOVED_TO) - { - /* We need to check if we are waiting for this MOVED_TO events cookie to pair it with - * a MOVED_FROM */ - ik_event_internal_t *match = NULL; - match = g_hash_table_lookup (cookie_hash, GINT_TO_POINTER (event->event->cookie)); - if (match) - { - g_hash_table_remove (cookie_hash, GINT_TO_POINTER (event->event->cookie)); - ik_pair_events (match, event); - } - } - } - event->seen = TRUE; -} + gint32 wd = -1; -static void -ik_process_events (void) -{ - g_queue_foreach (events_to_process, ik_pair_moves, NULL); + g_assert (path != NULL); + g_assert (inotify_source && inotify_source->fd >= 0); + + wd = inotify_add_watch (inotify_source->fd, path, mask); - while (!g_queue_is_empty (events_to_process)) + if (wd < 0) { - ik_event_internal_t *event = g_queue_peek_head (events_to_process); - - /* This must have been sent as part of a MOVED_TO/MOVED_FROM */ - if (event->sent) - { - /* Pop event */ - g_queue_pop_head (events_to_process); - /* Free the internal event structure */ - g_free (event); - continue; - } - - /* The event isn't ready yet */ - if (!ik_event_ready (event)) - break; - - /* Pop it */ - event = g_queue_pop_head (events_to_process); - - /* Check if this is a MOVED_FROM that is also sitting in the cookie_hash */ - if (event->event->cookie && event->pair == NULL && - g_hash_table_lookup (cookie_hash, GINT_TO_POINTER (event->event->cookie))) - g_hash_table_remove (cookie_hash, GINT_TO_POINTER (event->event->cookie)); - - if (event->pair) - { - /* We send out paired MOVED_FROM/MOVED_TO events in the same event buffer */ - /* g_assert (event->event->mask == IN_MOVED_FROM && event->pair->event->mask == IN_MOVED_TO); */ - /* Copy the paired data */ - event->pair->sent = TRUE; - event->sent = TRUE; - ik_move_matches++; - } - else if (event->event->cookie) - { - /* If we couldn't pair a MOVED_FROM and MOVED_TO together, we change - * the event masks */ - /* Changeing MOVED_FROM to DELETE and MOVED_TO to create lets us make - * the gaurantee that you will never see a non-matched MOVE event */ - event->event->original_mask = event->event->mask; - - if (event->event->mask & IN_MOVED_FROM) - { - event->event->mask = IN_DELETE|(event->event->mask & IN_ISDIR); - ik_move_misses++; /* not super accurate, if we aren't watching the destination it still counts as a miss */ - } - if (event->event->mask & IN_MOVED_TO) - event->event->mask = IN_CREATE|(event->event->mask & IN_ISDIR); - } - - /* Push the ik_event_t onto the event queue */ - g_queue_push_tail (event_queue, event->event); - /* Free the internal event structure */ - g_free (event); + int e = errno; + /* FIXME: debug msg failed to add watch */ + if (err) + *err = e; + return wd; } + + g_assert (wd >= 0); + return wd; } -static gboolean -ik_process_eq_callback (gpointer user_data) +int +_ik_ignore (const char *path, + gint32 wd) { - gboolean res; - - /* Try and move as many events to the event queue */ - G_LOCK (inotify_lock); - ik_process_events (); - - while (!g_queue_is_empty (event_queue)) - { - ik_event_t *event = g_queue_pop_head (event_queue); - - user_cb (event); - } + g_assert (wd >= 0); + g_assert (inotify_source && inotify_source->fd >= 0); - res = TRUE; - - if (g_queue_get_length (events_to_process) == 0) + if (inotify_rm_watch (inotify_source->fd, wd) < 0) { - process_eq_running = FALSE; - res = FALSE; + /* int e = errno; */ + /* failed to rm watch */ + return -1; } - - G_UNLOCK (inotify_lock); - - return res; + + return 0; } diff --git a/gio/inotify/inotify-kernel.h b/gio/inotify/inotify-kernel.h index e1a2b9c..25ede29 100644 --- a/gio/inotify/inotify-kernel.h +++ b/gio/inotify/inotify-kernel.h @@ -37,9 +37,10 @@ typedef struct ik_event_s { * then event1->pair == event2 and event2->pair == NULL. * It will result also in event1->pair->is_second_in_pair == TRUE */ struct ik_event_s *pair; + gint64 timestamp; /* monotonic time that this was created */ } ik_event_t; -gboolean _ik_startup (void (*cb) (ik_event_t *event)); +gboolean _ik_startup (gboolean (*cb) (ik_event_t *event)); ik_event_t *_ik_event_new_dummy (const char *name, gint32 wd, diff --git a/gio/inotify/inotify-missing.c b/gio/inotify/inotify-missing.c index c2cb7ce..aec3b9a 100644 --- a/gio/inotify/inotify-missing.c +++ b/gio/inotify/inotify-missing.c @@ -1,6 +1,6 @@ /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 8 -*- */ -/* inotify-helper.c - Gnome VFS Monitor based on inotify. +/* inotify-missing.c - GVFS Monitor based on inotify. Copyright (C) 2005 John McCutchan diff --git a/gio/inotify/inotify-path.c b/gio/inotify/inotify-path.c index 9d6c00e..bed3ab3 100644 --- a/gio/inotify/inotify-path.c +++ b/gio/inotify/inotify-path.c @@ -1,6 +1,6 @@ /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 8 -*- */ -/* inotify-path.c - GVFS Directory Monitor based on inotify. +/* inotify-path.c - GVFS Monitor based on inotify. Copyright (C) 2006 John McCutchan Copyright (C) 2009 Codethink Limited @@ -100,13 +100,13 @@ static GHashTable * wd_file_hash = NULL; static ip_watched_dir_t *ip_watched_dir_new (const char *path, int wd); static void ip_watched_dir_free (ip_watched_dir_t *dir); -static void ip_event_callback (ik_event_t *event); +static gboolean ip_event_callback (ik_event_t *event); -static void (*event_callback)(ik_event_t *event, inotify_sub *sub, gboolean file_event); +static gboolean (*event_callback)(ik_event_t *event, inotify_sub *sub, gboolean file_event); gboolean -_ip_startup (void (*cb)(ik_event_t *event, inotify_sub *sub, gboolean file_event)) +_ip_startup (gboolean (*cb)(ik_event_t *event, inotify_sub *sub, gboolean file_event)) { static gboolean initialized = FALSE; static gboolean result = FALSE; @@ -436,17 +436,17 @@ ip_wd_delete (gpointer data, ip_watched_dir_free (dir); } -static void +static gboolean ip_event_dispatch (GList *dir_list, - GList *pair_dir_list, GList *file_list, - GList *pair_file_list, ik_event_t *event) { + gboolean interesting = FALSE; + GList *l; if (!event) - return; + return FALSE; for (l = dir_list; l; l = l->next) { @@ -463,7 +463,8 @@ ip_event_dispatch (GList *dir_list, */ if (sub->filename && event->name && - strcmp (sub->filename, event->name)) + strcmp (sub->filename, event->name) && + (!event->pair || !event->pair->name || strcmp (sub->filename, event->pair->name))) continue; /* If the subscription has a filename @@ -489,7 +490,7 @@ ip_event_dispatch (GList *dir_list, * the filename doesn't match */ - event_callback (event, sub, FALSE); + interesting |= event_callback (event, sub, FALSE); if (sub->hardlinks) { @@ -518,115 +519,43 @@ ip_event_dispatch (GList *dir_list, { inotify_sub *sub = subl->data; - event_callback (event, sub, TRUE); + interesting |= event_callback (event, sub, TRUE); } } - - if (!event->pair) - return; - - for (l = pair_dir_list; l; l = l->next) - { - GList *subl; - ip_watched_dir_t *dir = l->data; - - for (subl = dir->subs; subl; subl = subl->next) - { - inotify_sub *sub = subl->data; - - /* If the subscription and the event - * contain a filename and they don't - * match, we don't deliver this event. - */ - if (sub->filename && - event->pair->name && - strcmp (sub->filename, event->pair->name)) - continue; - - /* If the subscription has a filename - * but this event doesn't, we don't - * deliver this event. - */ - if (sub->filename && !event->pair->name) - continue; - - /* If we're also watching the file directly - * don't report events that will also be - * reported on the file itself. - */ - if (sub->hardlinks) - { - event->mask &= ~IP_INOTIFY_FILE_MASK; - if (!event->mask) - continue; - } - - /* FIXME: We might need to synthesize - * DELETE/UNMOUNT events when - * the filename doesn't match - */ - - event_callback (event->pair, sub, FALSE); - - if (sub->hardlinks) - { - ip_watched_file_t *file; - - file = g_hash_table_lookup (dir->files_hash, sub->filename); - - if (file != NULL) - { - if (event->pair->mask & (IN_MOVED_FROM | IN_DELETE)) - ip_watched_file_stop (file); - - if (event->pair->mask & (IN_MOVED_TO | IN_CREATE)) - ip_watched_file_start (file); - } - } - } - } - - for (l = pair_file_list; l; l = l->next) - { - ip_watched_file_t *file = l->data; - GList *subl; - - for (subl = file->subs; subl; subl = subl->next) - { - inotify_sub *sub = subl->data; - event_callback (event->pair, sub, TRUE); - } - } + return interesting; } -static void +static gboolean ip_event_callback (ik_event_t *event) { + gboolean interesting = FALSE; GList* dir_list = NULL; - GList* pair_dir_list = NULL; GList *file_list = NULL; - GList *pair_file_list = NULL; /* We can ignore the IGNORED events */ if (event->mask & IN_IGNORED) { _ik_event_free (event); - return; + return TRUE; } dir_list = g_hash_table_lookup (wd_dir_hash, GINT_TO_POINTER (event->wd)); file_list = g_hash_table_lookup (wd_file_hash, GINT_TO_POINTER (event->wd)); - if (event->pair) + if (event->mask & IP_INOTIFY_DIR_MASK) + interesting |= ip_event_dispatch (dir_list, file_list, event); + + /* Only deliver paired events if the wds are separate */ + if (event->pair && event->pair->wd != event->wd) { - pair_dir_list = g_hash_table_lookup (wd_dir_hash, GINT_TO_POINTER (event->pair->wd)); - pair_file_list = g_hash_table_lookup (wd_file_hash, GINT_TO_POINTER (event->pair->wd)); + dir_list = g_hash_table_lookup (wd_dir_hash, GINT_TO_POINTER (event->pair->wd)); + file_list = g_hash_table_lookup (wd_file_hash, GINT_TO_POINTER (event->pair->wd)); + + if (event->pair->mask & IP_INOTIFY_DIR_MASK) + interesting |= ip_event_dispatch (dir_list, file_list, event->pair); } - if (event->mask & IP_INOTIFY_DIR_MASK) - ip_event_dispatch (dir_list, pair_dir_list, file_list, pair_file_list, event); - /* We have to manage the missing list * when we get an event that means the * file has been deleted/moved/unmounted. @@ -642,6 +571,8 @@ ip_event_callback (ik_event_t *event) } _ik_event_free (event); + + return interesting; } const char * diff --git a/gio/inotify/inotify-path.h b/gio/inotify/inotify-path.h index e985149..1793ff7 100644 --- a/gio/inotify/inotify-path.h +++ b/gio/inotify/inotify-path.h @@ -25,7 +25,7 @@ #include "inotify-kernel.h" #include "inotify-sub.h" -gboolean _ip_startup (void (*event_cb)(ik_event_t *event, inotify_sub *sub, gboolean file_event)); +gboolean _ip_startup (gboolean (*event_cb)(ik_event_t *event, inotify_sub *sub, gboolean file_event)); gboolean _ip_start_watching (inotify_sub *sub); gboolean _ip_stop_watching (inotify_sub *sub); const char * _ip_get_path_for_wd (gint32 wd); diff --git a/gio/inotify/inotify-sub.c b/gio/inotify/inotify-sub.c index 85b3411..2036227 100644 --- a/gio/inotify/inotify-sub.c +++ b/gio/inotify/inotify-sub.c @@ -1,6 +1,6 @@ /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 8 -*- */ -/* inotify-sub.c - GMonitor based on inotify. +/* inotify-sub.c - GVFS Monitor based on inotify. Copyright (C) 2006 John McCutchan @@ -46,7 +46,6 @@ dup_dirname (const gchar *dirname) inotify_sub* _ih_sub_new (const gchar *dirname, const gchar *filename, - gboolean pair_moves, gboolean watch_hardlinks, gpointer user_data) { @@ -55,7 +54,6 @@ _ih_sub_new (const gchar *dirname, sub = g_new0 (inotify_sub, 1); sub->dirname = dup_dirname (dirname); sub->filename = g_strdup (filename); - sub->pair_moves = pair_moves; sub->hardlinks = watch_hardlinks; sub->user_data = user_data; diff --git a/gio/inotify/inotify-sub.h b/gio/inotify/inotify-sub.h index ff37567..ab24dd8 100644 --- a/gio/inotify/inotify-sub.h +++ b/gio/inotify/inotify-sub.h @@ -35,7 +35,6 @@ typedef struct inotify_sub *_ih_sub_new (const gchar *dirname, const gchar *filename, - gboolean pair_moves, gboolean watch_hardlinks, gpointer user_data); void _ih_sub_free (inotify_sub *sub); diff --git a/gio/kqueue/Makefile.am b/gio/kqueue/Makefile.am index 77f4cb2..d5657d7 100644 --- a/gio/kqueue/Makefile.am +++ b/gio/kqueue/Makefile.am @@ -5,8 +5,6 @@ noinst_LTLIBRARIES += libkqueue.la libkqueue_la_SOURCES = \ gkqueuefilemonitor.c \ gkqueuefilemonitor.h \ - gkqueuedirectorymonitor.c \ - gkqueuedirectorymonitor.h \ kqueue-helper.c \ kqueue-helper.h \ kqueue-thread.c \ diff --git a/gio/kqueue/Makefile.in b/gio/kqueue/Makefile.in new file mode 100644 index 0000000..214144c --- /dev/null +++ b/gio/kqueue/Makefile.in @@ -0,0 +1,1583 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +subdir = gio/kqueue +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES) +libkqueue_la_LIBADD = +am__objects_1 = +am_libkqueue_la_OBJECTS = libkqueue_la-gkqueuefilemonitor.lo \ + libkqueue_la-kqueue-helper.lo libkqueue_la-kqueue-thread.lo \ + libkqueue_la-kqueue-sub.lo libkqueue_la-kqueue-missing.lo \ + libkqueue_la-kqueue-utils.lo libkqueue_la-kqueue-exclusions.lo \ + libkqueue_la-dep-list.lo $(am__objects_1) +libkqueue_la_OBJECTS = $(am_libkqueue_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libkqueue_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libkqueue_la_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libkqueue_la_SOURCES) +DIST_SOURCES = $(libkqueue_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/glib.mk $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = +BUILT_EXTRA_DIST = +CLEANFILES = *.log *.trs $(am__append_14) +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) libkqueue.la +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +libkqueue_la_SOURCES = \ + gkqueuefilemonitor.c \ + gkqueuefilemonitor.h \ + kqueue-helper.c \ + kqueue-helper.h \ + kqueue-thread.c \ + kqueue-thread.h \ + kqueue-sub.c \ + kqueue-sub.h \ + kqueue-missing.c \ + kqueue-missing.h \ + kqueue-utils.c \ + kqueue-utils.h \ + kqueue-exclusions.c \ + kqueue-exclusions.h \ + dep-list.c \ + dep-list.h \ + $(NULL) + +libkqueue_la_CFLAGS = \ + $(GLIB_HIDDEN_VISIBILITY_CFLAGS) \ + -DG_LOG_DOMAIN=\"GLib-GIO\" \ + $(gio_INCLUDES) \ + $(GLIB_DEBUG_FLAGS) \ + -DGIO_MODULE_DIR=\"$(GIO_MODULE_DIR)\" \ + -DGIO_COMPILATION \ + -DG_DISABLE_DEPRECATED + +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gio/kqueue/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gio/kqueue/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libkqueue.la: $(libkqueue_la_OBJECTS) $(libkqueue_la_DEPENDENCIES) $(EXTRA_libkqueue_la_DEPENDENCIES) + $(AM_V_CCLD)$(libkqueue_la_LINK) $(libkqueue_la_OBJECTS) $(libkqueue_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-dep-list.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-gkqueuefilemonitor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-kqueue-exclusions.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-kqueue-helper.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-kqueue-missing.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-kqueue-sub.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-kqueue-thread.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libkqueue_la-kqueue-utils.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libkqueue_la-gkqueuefilemonitor.lo: gkqueuefilemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -MT libkqueue_la-gkqueuefilemonitor.lo -MD -MP -MF $(DEPDIR)/libkqueue_la-gkqueuefilemonitor.Tpo -c -o libkqueue_la-gkqueuefilemonitor.lo `test -f 'gkqueuefilemonitor.c' || echo '$(srcdir)/'`gkqueuefilemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkqueue_la-gkqueuefilemonitor.Tpo $(DEPDIR)/libkqueue_la-gkqueuefilemonitor.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gkqueuefilemonitor.c' object='libkqueue_la-gkqueuefilemonitor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -c -o libkqueue_la-gkqueuefilemonitor.lo `test -f 'gkqueuefilemonitor.c' || echo '$(srcdir)/'`gkqueuefilemonitor.c + +libkqueue_la-kqueue-helper.lo: kqueue-helper.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -MT libkqueue_la-kqueue-helper.lo -MD -MP -MF $(DEPDIR)/libkqueue_la-kqueue-helper.Tpo -c -o libkqueue_la-kqueue-helper.lo `test -f 'kqueue-helper.c' || echo '$(srcdir)/'`kqueue-helper.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkqueue_la-kqueue-helper.Tpo $(DEPDIR)/libkqueue_la-kqueue-helper.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kqueue-helper.c' object='libkqueue_la-kqueue-helper.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -c -o libkqueue_la-kqueue-helper.lo `test -f 'kqueue-helper.c' || echo '$(srcdir)/'`kqueue-helper.c + +libkqueue_la-kqueue-thread.lo: kqueue-thread.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -MT libkqueue_la-kqueue-thread.lo -MD -MP -MF $(DEPDIR)/libkqueue_la-kqueue-thread.Tpo -c -o libkqueue_la-kqueue-thread.lo `test -f 'kqueue-thread.c' || echo '$(srcdir)/'`kqueue-thread.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkqueue_la-kqueue-thread.Tpo $(DEPDIR)/libkqueue_la-kqueue-thread.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kqueue-thread.c' object='libkqueue_la-kqueue-thread.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -c -o libkqueue_la-kqueue-thread.lo `test -f 'kqueue-thread.c' || echo '$(srcdir)/'`kqueue-thread.c + +libkqueue_la-kqueue-sub.lo: kqueue-sub.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -MT libkqueue_la-kqueue-sub.lo -MD -MP -MF $(DEPDIR)/libkqueue_la-kqueue-sub.Tpo -c -o libkqueue_la-kqueue-sub.lo `test -f 'kqueue-sub.c' || echo '$(srcdir)/'`kqueue-sub.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkqueue_la-kqueue-sub.Tpo $(DEPDIR)/libkqueue_la-kqueue-sub.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kqueue-sub.c' object='libkqueue_la-kqueue-sub.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -c -o libkqueue_la-kqueue-sub.lo `test -f 'kqueue-sub.c' || echo '$(srcdir)/'`kqueue-sub.c + +libkqueue_la-kqueue-missing.lo: kqueue-missing.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -MT libkqueue_la-kqueue-missing.lo -MD -MP -MF $(DEPDIR)/libkqueue_la-kqueue-missing.Tpo -c -o libkqueue_la-kqueue-missing.lo `test -f 'kqueue-missing.c' || echo '$(srcdir)/'`kqueue-missing.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkqueue_la-kqueue-missing.Tpo $(DEPDIR)/libkqueue_la-kqueue-missing.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kqueue-missing.c' object='libkqueue_la-kqueue-missing.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -c -o libkqueue_la-kqueue-missing.lo `test -f 'kqueue-missing.c' || echo '$(srcdir)/'`kqueue-missing.c + +libkqueue_la-kqueue-utils.lo: kqueue-utils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -MT libkqueue_la-kqueue-utils.lo -MD -MP -MF $(DEPDIR)/libkqueue_la-kqueue-utils.Tpo -c -o libkqueue_la-kqueue-utils.lo `test -f 'kqueue-utils.c' || echo '$(srcdir)/'`kqueue-utils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkqueue_la-kqueue-utils.Tpo $(DEPDIR)/libkqueue_la-kqueue-utils.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kqueue-utils.c' object='libkqueue_la-kqueue-utils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -c -o libkqueue_la-kqueue-utils.lo `test -f 'kqueue-utils.c' || echo '$(srcdir)/'`kqueue-utils.c + +libkqueue_la-kqueue-exclusions.lo: kqueue-exclusions.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -MT libkqueue_la-kqueue-exclusions.lo -MD -MP -MF $(DEPDIR)/libkqueue_la-kqueue-exclusions.Tpo -c -o libkqueue_la-kqueue-exclusions.lo `test -f 'kqueue-exclusions.c' || echo '$(srcdir)/'`kqueue-exclusions.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkqueue_la-kqueue-exclusions.Tpo $(DEPDIR)/libkqueue_la-kqueue-exclusions.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='kqueue-exclusions.c' object='libkqueue_la-kqueue-exclusions.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -c -o libkqueue_la-kqueue-exclusions.lo `test -f 'kqueue-exclusions.c' || echo '$(srcdir)/'`kqueue-exclusions.c + +libkqueue_la-dep-list.lo: dep-list.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -MT libkqueue_la-dep-list.lo -MD -MP -MF $(DEPDIR)/libkqueue_la-dep-list.Tpo -c -o libkqueue_la-dep-list.lo `test -f 'dep-list.c' || echo '$(srcdir)/'`dep-list.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libkqueue_la-dep-list.Tpo $(DEPDIR)/libkqueue_la-dep-list.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dep-list.c' object='libkqueue_la-dep-list.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libkqueue_la_CFLAGS) $(CFLAGS) -c -o libkqueue_la-dep-list.lo `test -f 'dep-list.c' || echo '$(srcdir)/'`dep-list.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \ + check-local clean clean-checkLTLIBRARIES clean-checkPROGRAMS \ + clean-generic clean-installed_testLTLIBRARIES \ + clean-installed_testPROGRAMS clean-libtool \ + clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gio/kqueue/gkqueuedirectorymonitor.c b/gio/kqueue/gkqueuedirectorymonitor.c deleted file mode 100644 index ee0cf3a..0000000 --- a/gio/kqueue/gkqueuedirectorymonitor.c +++ /dev/null @@ -1,205 +0,0 @@ -/******************************************************************************* - Copyright (c) 2011, 2012 Dmitry Matveev - - 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. -*******************************************************************************/ - -#include "config.h" - -#include "gkqueuedirectorymonitor.h" -#include "kqueue-helper.h" -#include "kqueue-exclusions.h" -#include -#include -#include - - -struct _GKqueueDirectoryMonitor -{ - GLocalDirectoryMonitor parent_instance; - kqueue_sub *sub; - - GFileMonitor *fallback; - GFile *fbfile; - - gboolean pair_moves; -}; - -static gboolean g_kqueue_directory_monitor_cancel (GFileMonitor *monitor); - -#define g_kqueue_directory_monitor_get_type _g_kqueue_directory_monitor_get_type -G_DEFINE_TYPE_WITH_CODE (GKqueueDirectoryMonitor, g_kqueue_directory_monitor, G_TYPE_LOCAL_DIRECTORY_MONITOR, - g_io_extension_point_implement (G_LOCAL_DIRECTORY_MONITOR_EXTENSION_POINT_NAME, - g_define_type_id, - "kqueue", - 20)) - - -static void -_fallback_callback (GFileMonitor *unused, - GFile *first, - GFile *second, - GFileMonitorEvent event, - gpointer udata) -{ - GKqueueDirectoryMonitor *kq_mon = G_KQUEUE_DIRECTORY_MONITOR (udata); - GFileMonitor *mon = G_FILE_MONITOR (kq_mon); - g_assert (kq_mon != NULL); - g_assert (mon != NULL); - (void) unused; - - if (event == G_FILE_MONITOR_EVENT_CHANGED) - { - _kh_dir_diff (kq_mon->sub, mon); - } - else - g_file_monitor_emit_event (mon, first, second, event); -} - - -static void -g_kqueue_directory_monitor_finalize (GObject *object) -{ - GKqueueDirectoryMonitor *kqueue_monitor = G_KQUEUE_DIRECTORY_MONITOR (object); - - if (kqueue_monitor->sub) - { - _kh_cancel_sub (kqueue_monitor->sub); - _kh_sub_free (kqueue_monitor->sub); - kqueue_monitor->sub = NULL; - } - - if (kqueue_monitor->fallback) - g_object_unref (kqueue_monitor->fallback); - - if (kqueue_monitor->fbfile) - g_object_unref (kqueue_monitor->fbfile); - - if (G_OBJECT_CLASS (g_kqueue_directory_monitor_parent_class)->finalize) - (*G_OBJECT_CLASS (g_kqueue_directory_monitor_parent_class)->finalize) (object); -} - -static GObject* -g_kqueue_directory_monitor_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam *construct_properties) -{ - GObject *obj; - GKqueueDirectoryMonitorClass *klass; - GObjectClass *parent_class; - GKqueueDirectoryMonitor *kqueue_monitor; - kqueue_sub *sub = NULL; - gboolean ret_kh_startup; - const gchar *path = NULL; - - klass = G_KQUEUE_DIRECTORY_MONITOR_CLASS (g_type_class_peek (G_TYPE_KQUEUE_DIRECTORY_MONITOR)); - parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass)); - obj = parent_class->constructor (type, - n_construct_properties, - construct_properties); - - kqueue_monitor = G_KQUEUE_DIRECTORY_MONITOR (obj); - - ret_kh_startup = _kh_startup (); - g_assert (ret_kh_startup); - - kqueue_monitor->pair_moves = (G_LOCAL_DIRECTORY_MONITOR (obj)->flags & G_FILE_MONITOR_SEND_MOVED) - ? TRUE : FALSE; - - kqueue_monitor->sub = NULL; - kqueue_monitor->fallback = NULL; - kqueue_monitor->fbfile = NULL; - - path = G_LOCAL_DIRECTORY_MONITOR (obj)->dirname; - - /* For a directory monitor, create a subscription object anyway. - * It will be used for directory diff calculation routines. */ - - sub = _kh_sub_new (path, - kqueue_monitor->pair_moves, - kqueue_monitor); - - /* FIXME: what to do about errors here? we can't return NULL or another - * kind of error and an assertion is probably too hard (same issue as in - * the inotify backend) */ - g_assert (sub != NULL); - kqueue_monitor->sub = sub; - - if (!_ke_is_excluded (path)) - _kh_add_sub (sub); - else - { - GFile *file = g_file_new_for_path (path); - kqueue_monitor->fbfile = file; - kqueue_monitor->fallback = _g_poll_file_monitor_new (file); - g_signal_connect (kqueue_monitor->fallback, - "changed", - G_CALLBACK (_fallback_callback), - kqueue_monitor); - } - - return obj; -} - -static gboolean -g_kqueue_directory_monitor_is_supported (void) -{ - return _kh_startup (); -} - -static void -g_kqueue_directory_monitor_class_init (GKqueueDirectoryMonitorClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - GFileMonitorClass *directory_monitor_class = G_FILE_MONITOR_CLASS (klass); - GLocalDirectoryMonitorClass *local_directory_monitor_class = G_LOCAL_DIRECTORY_MONITOR_CLASS (klass); - - gobject_class->finalize = g_kqueue_directory_monitor_finalize; - gobject_class->constructor = g_kqueue_directory_monitor_constructor; - directory_monitor_class->cancel = g_kqueue_directory_monitor_cancel; - - local_directory_monitor_class->mount_notify = TRUE; /* TODO: ??? */ - local_directory_monitor_class->is_supported = g_kqueue_directory_monitor_is_supported; -} - -static void -g_kqueue_directory_monitor_init (GKqueueDirectoryMonitor *monitor) -{ -} - -static gboolean -g_kqueue_directory_monitor_cancel (GFileMonitor *monitor) -{ - GKqueueDirectoryMonitor *kqueue_monitor = G_KQUEUE_DIRECTORY_MONITOR (monitor); - - if (kqueue_monitor->sub) - { - _kh_cancel_sub (kqueue_monitor->sub); - _kh_sub_free (kqueue_monitor->sub); - kqueue_monitor->sub = NULL; - } - else if (kqueue_monitor->fallback) - g_file_monitor_cancel (kqueue_monitor->fallback); - - - if (G_FILE_MONITOR_CLASS (g_kqueue_directory_monitor_parent_class)->cancel) - (*G_FILE_MONITOR_CLASS (g_kqueue_directory_monitor_parent_class)->cancel) (monitor); - - return TRUE; -} diff --git a/gio/kqueue/gkqueuedirectorymonitor.h b/gio/kqueue/gkqueuedirectorymonitor.h deleted file mode 100644 index 7bd6a64..0000000 --- a/gio/kqueue/gkqueuedirectorymonitor.h +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************************* - Copyright (c) 2011, 2012 Dmitry Matveev - - 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 __G_KQUEUE_DIRECTORY_MONITOR_H__ -#define __G_KQUEUE_DIRECTORY_MONITOR_H__ - -#include -#include -#include - -G_BEGIN_DECLS - -#define G_TYPE_KQUEUE_DIRECTORY_MONITOR (_g_kqueue_directory_monitor_get_type ()) -#define G_KQUEUE_DIRECTORY_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_KQUEUE_DIRECTORY_MONITOR, GKqueueDirectoryMonitor)) -#define G_KQUEUE_DIRECTORY_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), G_TYPE_KQUEUE_DIRECTORY_MONITOR, GKqueueDirectoryMonitorClass)) -#define G_IS_KQUEUE_DIRECTORY_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_KQUEUE_DIRECTORY_MONITOR)) -#define G_IS_KQUEUE_DIRECTORY_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_TYPE_KQUEUE_DIRECTORY_MONITOR)) - -typedef struct _GKqueueDirectoryMonitor GKqueueDirectoryMonitor; -typedef struct _GKqueueDirectoryMonitorClass GKqueueDirectoryMonitorClass; - -struct _GKqueueDirectoryMonitorClass { - GLocalDirectoryMonitorClass parent_class; -}; - -GType _g_kqueue_directory_monitor_get_type (void); - -G_END_DECLS - -#endif /* __G_KQUEUE_DIRECTORY_MONITOR_H__ */ diff --git a/gio/kqueue/gkqueuefilemonitor.c b/gio/kqueue/gkqueuefilemonitor.c index d2d51a9..78b7496 100644 --- a/gio/kqueue/gkqueuefilemonitor.c +++ b/gio/kqueue/gkqueuefilemonitor.c @@ -35,16 +35,13 @@ struct _GKqueueFileMonitor GLocalFileMonitor parent_instance; kqueue_sub *sub; - + GFileMonitor *fallback; GFile *fbfile; - - gboolean pair_moves; }; static gboolean g_kqueue_file_monitor_cancel (GFileMonitor* monitor); -#define g_kqueue_file_monitor_get_type _g_kqueue_file_monitor_get_type G_DEFINE_TYPE_WITH_CODE (GKqueueFileMonitor, g_kqueue_file_monitor, G_TYPE_LOCAL_FILE_MONITOR, g_io_extension_point_implement (G_LOCAL_FILE_MONITOR_EXTENSION_POINT_NAME, g_define_type_id, @@ -59,16 +56,18 @@ _fallback_callback (GFileMonitor *unused, GFileMonitorEvent event, gpointer udata) { - GKqueueFileMonitor *kq_mon = G_KQUEUE_FILE_MONITOR (udata); + GKqueueFileMonitor *kq_mon = G_KQUEUE_FILE_MONITOR (udata); GFileMonitor *mon = G_FILE_MONITOR (kq_mon); g_assert (kq_mon != NULL); g_assert (mon != NULL); (void) unused; if (event == G_FILE_MONITOR_EVENT_CHANGED) - { - _kh_dir_diff (kq_mon->sub, mon); - } + { + GLocalFileMonitor *local_monitor = G_LOCAL_FILE_MONITOR (kq_mon); + + _kh_dir_diff (kq_mon->sub, local_monitor->source); + } else g_file_monitor_emit_event (mon, first, second, event); } @@ -96,38 +95,28 @@ g_kqueue_file_monitor_finalize (GObject *object) (*G_OBJECT_CLASS (g_kqueue_file_monitor_parent_class)->finalize) (object); } -static GObject* -g_kqueue_file_monitor_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam *construct_properties) +static void +g_kqueue_file_monitor_start (GLocalFileMonitor *local_monitor, + const gchar *dirname, + const gchar *basename, + const gchar *filename, + GFileMonitorSource *source) { + GKqueueFileMonitor *kqueue_monitor = G_KQUEUE_FILE_MONITOR (local_monitor); GObject *obj; GKqueueFileMonitorClass *klass; GObjectClass *parent_class; - GKqueueFileMonitor *kqueue_monitor; kqueue_sub *sub = NULL; gboolean ret_kh_startup = FALSE; const gchar *path = NULL; - klass = G_KQUEUE_FILE_MONITOR_CLASS (g_type_class_peek (G_TYPE_KQUEUE_FILE_MONITOR)); - parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass)); - obj = parent_class->constructor (type, - n_construct_properties, - construct_properties); - - kqueue_monitor = G_KQUEUE_FILE_MONITOR (obj); ret_kh_startup = _kh_startup (); g_assert (ret_kh_startup); - kqueue_monitor->pair_moves = G_LOCAL_FILE_MONITOR (obj)->flags & G_FILE_MONITOR_SEND_MOVED - ? TRUE : FALSE; - - kqueue_monitor->sub = NULL; - kqueue_monitor->fallback = NULL; - kqueue_monitor->fbfile = NULL; - - path = G_LOCAL_FILE_MONITOR (obj)->filename; + path = filename; + if (!path) + path = dirname; /* For a directory monitor, create a subscription object anyway. * It will be used for directory diff calculation routines. @@ -137,9 +126,7 @@ g_kqueue_file_monitor_constructor (GType type, * will be created under that path, GKqueueFileMonitor will have to * handle the directory notifications. */ - sub = _kh_sub_new (path, - kqueue_monitor->pair_moves, - kqueue_monitor); + sub = _kh_sub_new (path, TRUE, source); /* FIXME: what to do about errors here? we can't return NULL or another * kind of error and an assertion is probably too hard (same issue as in @@ -159,8 +146,6 @@ g_kqueue_file_monitor_constructor (GType type, G_CALLBACK (_fallback_callback), kqueue_monitor); } - - return obj; } static gboolean @@ -177,10 +162,11 @@ g_kqueue_file_monitor_class_init (GKqueueFileMonitorClass *klass) GLocalFileMonitorClass *local_file_monitor_class = G_LOCAL_FILE_MONITOR_CLASS (klass); gobject_class->finalize = g_kqueue_file_monitor_finalize; - gobject_class->constructor = g_kqueue_file_monitor_constructor; file_monitor_class->cancel = g_kqueue_file_monitor_cancel; local_file_monitor_class->is_supported = g_kqueue_file_monitor_is_supported; + local_file_monitor_class->start = g_kqueue_file_monitor_start; + local_file_monitor_class->mount_notify = TRUE; /* TODO: ??? */ } static void @@ -200,7 +186,10 @@ g_kqueue_file_monitor_cancel (GFileMonitor *monitor) kqueue_monitor->sub = NULL; } else if (kqueue_monitor->fallback) - g_file_monitor_cancel (kqueue_monitor->fallback); + { + g_signal_handlers_disconnect_by_func (kqueue_monitor->fallback, _fallback_callback, kqueue_monitor); + g_file_monitor_cancel (kqueue_monitor->fallback); + } if (G_FILE_MONITOR_CLASS (g_kqueue_file_monitor_parent_class)->cancel) (*G_FILE_MONITOR_CLASS (g_kqueue_file_monitor_parent_class)->cancel) (monitor); diff --git a/gio/kqueue/gkqueuefilemonitor.h b/gio/kqueue/gkqueuefilemonitor.h index 3c47377..32752f1 100644 --- a/gio/kqueue/gkqueuefilemonitor.h +++ b/gio/kqueue/gkqueuefilemonitor.h @@ -31,7 +31,7 @@ G_BEGIN_DECLS -#define G_TYPE_KQUEUE_FILE_MONITOR (_g_kqueue_file_monitor_get_type ()) +#define G_TYPE_KQUEUE_FILE_MONITOR (g_kqueue_file_monitor_get_type ()) #define G_KQUEUE_FILE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_KQUEUE_FILE_MONITOR, GKqueueFileMonitor)) #define G_KQUEUE_FILE_MONITOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), G_TYPE_KQUEUE_FILE_MONITOR, GKqueueFileMonitorClass)) #define G_IS_KQUEUE_FILE_MONITOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_KQUEUE_FILE_MONITOR)) @@ -44,7 +44,7 @@ struct _GKqueueFileMonitorClass { GLocalFileMonitorClass parent_class; }; -GType _g_kqueue_file_monitor_get_type (void); +GType g_kqueue_file_monitor_get_type (void); G_END_DECLS diff --git a/gio/kqueue/kqueue-helper.c b/gio/kqueue/kqueue-helper.c index 2bf9af5..4671396 100644 --- a/gio/kqueue/kqueue-helper.c +++ b/gio/kqueue/kqueue-helper.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -38,8 +39,6 @@ #include "kqueue-missing.h" #include "kqueue-exclusions.h" -#include "gkqueuedirectorymonitor.h" - static gboolean kh_debug_enabled = FALSE; #define KH_W if (kh_debug_enabled) g_warning @@ -113,7 +112,7 @@ convert_kqueue_events_to_gio (uint32_t flags, gboolean *done) typedef struct { kqueue_sub *sub; - GFileMonitor *monitor; + GFileMonitorSource *source; } handle_ctx; /** @@ -129,29 +128,15 @@ static void handle_created (void *udata, const char *path, ino_t inode) { handle_ctx *ctx = NULL; - GFile *file = NULL; - gchar *fpath = NULL; (void) inode; ctx = (handle_ctx *) udata; g_assert (udata != NULL); g_assert (ctx->sub != NULL); - g_assert (ctx->monitor != NULL); - - fpath = _ku_path_concat (ctx->sub->filename, path); - if (fpath == NULL) - { - KH_W ("Failed to allocate a string for a new event"); - return; - } + g_assert (ctx->source != NULL); - file = g_file_new_for_path (fpath); - g_file_monitor_emit_event (ctx->monitor, - file, - NULL, - G_FILE_MONITOR_EVENT_CREATED); - g_free (fpath); - g_object_unref (file); + g_file_monitor_source_handle_event (ctx->source, G_FILE_MONITOR_EVENT_CREATED, path, + NULL, NULL, g_get_monotonic_time ()); } /** @@ -167,29 +152,15 @@ static void handle_deleted (void *udata, const char *path, ino_t inode) { handle_ctx *ctx = NULL; - GFile *file = NULL; - gchar *fpath = NULL; (void) inode; ctx = (handle_ctx *) udata; g_assert (udata != NULL); g_assert (ctx->sub != NULL); - g_assert (ctx->monitor != NULL); - - fpath = _ku_path_concat (ctx->sub->filename, path); - if (fpath == NULL) - { - KH_W ("Failed to allocate a string for a new event"); - return; - } + g_assert (ctx->source != NULL); - file = g_file_new_for_path (fpath); - g_file_monitor_emit_event (ctx->monitor, - file, - NULL, - G_FILE_MONITOR_EVENT_DELETED); - g_free (fpath); - g_object_unref (file); + g_file_monitor_source_handle_event (ctx->source, G_FILE_MONITOR_EVENT_DELETED, path, + NULL, NULL, g_get_monotonic_time ()); } /** @@ -201,7 +172,7 @@ handle_deleted (void *udata, const char *path, ino_t inode) * @to_inode: inode number of the replaced file. * * A callback function for the directory diff calculation routine, - * produces G_FILE_MONITOR_EVENT_MOVED event on a move. + * produces G_FILE_MONITOR_EVENT_RENAMED event on a move. **/ static void handle_moved (void *udata, @@ -211,10 +182,6 @@ handle_moved (void *udata, ino_t to_inode) { handle_ctx *ctx = NULL; - GFile *file = NULL; - GFile *other = NULL; - gchar *path = NULL; - gchar *npath = NULL; (void) from_inode; (void) to_inode; @@ -222,47 +189,12 @@ handle_moved (void *udata, ctx = (handle_ctx *) udata; g_assert (udata != NULL); g_assert (ctx->sub != NULL); - g_assert (ctx->monitor != NULL); - - - path = _ku_path_concat (ctx->sub->filename, from_path); - npath = _ku_path_concat (ctx->sub->filename, to_path); - if (path == NULL || npath == NULL) - { - KH_W ("Failed to allocate strings for event"); - return; - } + g_assert (ctx->source != NULL); - file = g_file_new_for_path (path); - other = g_file_new_for_path (npath); - - if (ctx->sub->pair_moves) - { - g_file_monitor_emit_event (ctx->monitor, - file, - other, - G_FILE_MONITOR_EVENT_MOVED); - } - else - { - g_file_monitor_emit_event (ctx->monitor, - file, - NULL, - G_FILE_MONITOR_EVENT_DELETED); - g_file_monitor_emit_event (ctx->monitor, - other, - NULL, - G_FILE_MONITOR_EVENT_CREATED); - } - - g_free (path); - g_free (npath); - - g_object_unref (file); - g_object_unref (other); + g_file_monitor_source_handle_event (ctx->source, G_FILE_MONITOR_EVENT_RENAMED, + from_path, to_path, NULL, g_get_monotonic_time ()); } - /** * handle_overwritten: * @data: a pointer to user data (#handle_context). @@ -277,34 +209,18 @@ static void handle_overwritten (void *udata, const char *path, ino_t inode) { handle_ctx *ctx = NULL; - GFile *file = NULL; - gchar *fpath = NULL; (void) inode; ctx = (handle_ctx *) udata; g_assert (udata != NULL); g_assert (ctx->sub != NULL); - g_assert (ctx->monitor != NULL); + g_assert (ctx->source != NULL); - fpath = _ku_path_concat (ctx->sub->filename, path); - if (fpath == NULL) - { - KH_W ("Failed to allocate a string for a new event"); - return; - } + g_file_monitor_source_handle_event (ctx->source, G_FILE_MONITOR_EVENT_DELETED, + path, NULL, NULL, g_get_monotonic_time ()); - file = g_file_new_for_path (fpath); - g_file_monitor_emit_event (ctx->monitor, - file, - NULL, - G_FILE_MONITOR_EVENT_DELETED); - g_file_monitor_emit_event (ctx->monitor, - file, - NULL, - G_FILE_MONITOR_EVENT_CREATED); - - g_free (fpath); - g_object_unref (file); + g_file_monitor_source_handle_event (ctx->source, G_FILE_MONITOR_EVENT_CREATED, + path, NULL, NULL, g_get_monotonic_time ()); } static const traverse_cbs cbs = { @@ -320,17 +236,17 @@ static const traverse_cbs cbs = { void -_kh_dir_diff (kqueue_sub *sub, GFileMonitor *monitor) +_kh_dir_diff (kqueue_sub *sub, GFileMonitorSource *source) { dep_list *was; handle_ctx ctx; g_assert (sub != NULL); - g_assert (monitor != NULL); + g_assert (source != NULL); memset (&ctx, 0, sizeof (handle_ctx)); ctx.sub = sub; - ctx.monitor = monitor; + ctx.source = source; was = sub->deps; sub->deps = dl_listing (sub->filename); @@ -363,7 +279,7 @@ process_kqueue_notifications (GIOChannel *gioc, { struct kqueue_notification n; kqueue_sub *sub = NULL; - GFileMonitor *monitor = NULL; + GFileMonitorSource *source = NULL; GFileMonitorEvent mask = 0; g_assert (kqueue_socket_pair[0] != -1); @@ -384,8 +300,8 @@ process_kqueue_notifications (GIOChannel *gioc, return TRUE; } - monitor = G_FILE_MONITOR (sub->user_data); - g_assert (monitor != NULL); + source = sub->user_data; + g_assert (source != NULL); if (n.flags & (NOTE_DELETE | NOTE_REVOKE)) { @@ -408,7 +324,7 @@ process_kqueue_notifications (GIOChannel *gioc, if (sub->is_dir && n.flags & (NOTE_WRITE | NOTE_EXTEND)) { - _kh_dir_diff (sub, monitor); + _kh_dir_diff (sub, source); n.flags &= ~(NOTE_WRITE | NOTE_EXTEND); } @@ -417,11 +333,7 @@ process_kqueue_notifications (GIOChannel *gioc, gboolean done = FALSE; mask = convert_kqueue_events_to_gio (n.flags, &done); if (done == TRUE) - { - GFile *file = g_file_new_for_path (sub->filename); - g_file_monitor_emit_event (monitor, file, NULL, mask); - g_object_unref (file); - } + g_file_monitor_source_handle_event (source, mask, NULL, NULL, NULL, g_get_monotonic_time ()); } return TRUE; diff --git a/gio/kqueue/kqueue-helper.h b/gio/kqueue/kqueue-helper.h index fc33a8d..b12a28f 100644 --- a/gio/kqueue/kqueue-helper.h +++ b/gio/kqueue/kqueue-helper.h @@ -24,6 +24,7 @@ #define __KQUEUE_HELPER_H #include "kqueue-sub.h" +#include #include gboolean _kh_startup (void); @@ -32,6 +33,6 @@ gboolean _kh_cancel_sub (kqueue_sub *sub); gboolean _kh_start_watching (kqueue_sub *sub); -void _kh_dir_diff (kqueue_sub *sub, GFileMonitor *monitor); +void _kh_dir_diff (kqueue_sub *sub, GFileMonitorSource *source); #endif /* __KQUEUE_HELPER_H */ diff --git a/gio/kqueue/kqueue-utils.c b/gio/kqueue/kqueue-utils.c index 00b5c26..bba6522 100644 --- a/gio/kqueue/kqueue-utils.c +++ b/gio/kqueue/kqueue-utils.c @@ -208,35 +208,3 @@ _ku_file_information (int fd, int *is_dir, ino_t *inode) if (inode != NULL) *inode = st.st_ino; } - -/** - * Create a file path using its name and a path to its directory. - * - * @param[in] dir A path to a file directory. May end with a '/'. - * @param[in] file File name. - * @return A concatenated path. Should be freed with free(). - **/ -gchar* -_ku_path_concat (const gchar *dir, const gchar *file) -{ - int dir_len = strlen (dir); - int file_len = strlen (file); - - char *path = g_malloc (dir_len + file_len + 2); - if (path == NULL) - { - KU_W ("Failed to allocate memory path for concatenation"); - return NULL; - } - - strcpy (path, dir); - - if (dir[dir_len - 1] != '/') { - ++dir_len; - path[dir_len - 1] = '/'; - } - - strcpy (path + dir_len, file); - return path; -} - diff --git a/gio/kqueue/kqueue-utils.h b/gio/kqueue/kqueue-utils.h index 2c4f2c3..4e37f4a 100644 --- a/gio/kqueue/kqueue-utils.h +++ b/gio/kqueue/kqueue-utils.h @@ -50,8 +50,4 @@ gboolean _ku_write (int fd, gconstpointer data, gsize size); void _ku_file_information (int fd, int *is_dir, ino_t *inode); -gchar* _ku_path_concat (const gchar *dir, const gchar *file); - - - #endif /* __KQUEUE_UTILS_H */ diff --git a/gio/makefile.msc b/gio/makefile.msc index c545578..41a1f89 100644 --- a/gio/makefile.msc +++ b/gio/makefile.msc @@ -83,6 +83,7 @@ OBJECTS = \ gbufferedoutputstream.obj \ gcancellable.obj \ gcontenttype.obj \ + gdatagrambased.obj \ gdatainputstream.obj \ gdataoutputstream.obj \ # gdesktopappinfo.obj \ diff --git a/gio/tests/.gitignore b/gio/tests/.gitignore deleted file mode 100644 index cdddd4b..0000000 --- a/gio/tests/.gitignore +++ /dev/null @@ -1,139 +0,0 @@ -actions -appinfo -appinfo-test -appmonitor -apps -async-close-output-stream -async-splice-output-stream -basic-application -buffered-input-stream -buffered-output-stream -cancellable -connectable -contenttype -contexts -converter-stream -credentials -data-input-stream -data-output-stream -dbus-appinfo -de/ -defaultvalue -desktop-app-info -echo-server -file -fileattributematcher -filter-cat -filter-streams -gapplication -gapplication-example-actions -gapplication-example-cmdline -gapplication-example-cmdline2 -gapplication-example-cmdline3 -gapplication-example-dbushooks -gapplication-example-menu -gapplication-example-open -gdbus-addresses -gdbus-auth -gdbus-bz627724 -gdbus-close-pending -gdbus-connection -gdbus-connection-flush -gdbus-connection-flush-helper -gdbus-connection-loss -gdbus-connection-slow -gdbus-daemon -gdbus-error -gdbus-example-export -gdbus-example-objectmanager-client -gdbus-example-objectmanager-server -gdbus-example-own-name -gdbus-example-peer -gdbus-example-proxy-subclass -gdbus-example-server -gdbus-example-subtree -gdbus-example-unix-fd-client -gdbus-example-watch-name -gdbus-example-watch-proxy -gdbus-exit-on-close -gdbus-export -gdbus-introspection -gdbus-message -gdbus-names -gdbus-non-socket -gdbus-overflow -gdbus-peer -gdbus-peer-object-manager -gdbus-proxy -gdbus-proxy-threads -gdbus-proxy-well-known-name -gdbus-serialization -gdbus-test-codegen -gdbus-test-codegen-generated* -gdbus-test-codegen-old -gdbus-test-fixture -gdbus-testserver -gdbus-threading -glistmodel -gio-du -giomodule -giotypefuncs.c -gnotification -gsubprocess -gsubprocess-testprog -g-file -g-file-info -g-icon -gmenumodel -gschemas.compiled -gsettings -gsettings.store -httpd -icons -inet-address -io-stream -live-g-file -memory-input-stream -memory-output-stream -mimeapps -monitor -network-address -network-monitor -org.gtk.test.enums.xml -permission -pollable -plugin_resources.c -proxy -proxy-test -readwrite -resolver -resources -send-data -services/org.gtk.GDBus.Examples.ObjectManager.service -simple-async-result -simple-proxy -sleepy-stream -stream-rw_all -socket -socket-address -socket-client -socket-listener -socket-server -srvtarget -task -test.mo -test.gresource -test_resources.c -test_resources2.c -test_resources2.h -thumbnail-verification -tls-certificate -tls-interaction -unix-fd -unix-streams -vfs -volumemonitor -xdgdatadir -xdgdatahome -xgen-gio -xgen-giosrc.c diff --git a/gio/tests/Makefile.am b/gio/tests/Makefile.am index 3e873bb..29c7e47 100644 --- a/gio/tests/Makefile.am +++ b/gio/tests/Makefile.am @@ -27,6 +27,7 @@ test_programs = \ buffered-output-stream \ cancellable \ contexts \ + contenttype \ converter-stream \ credentials \ data-input-stream \ @@ -57,12 +58,14 @@ test_programs = \ sleepy-stream \ socket \ socket-listener \ + socket-service \ srvtarget \ task \ tls-interaction \ vfs \ volumemonitor \ glistmodel \ + testfilemonitor \ $(NULL) uninstalled_test_programs = \ @@ -74,7 +77,6 @@ dist_test_data = \ $(NULL) test_data = \ - test.gresource \ $(NULL) uninstalled_test_extra_programs = \ @@ -130,6 +132,7 @@ schema_tests = \ default-in-aliases.gschema.xml \ default-not-in-choices.gschema.xml \ default-out-of-range.gschema.xml \ + description-xmllang.gschema.xml \ empty-key.gschema.xml \ enum-with-aliases.gschema.xml \ enum-with-bad-default.gschema.xml \ @@ -180,6 +183,8 @@ schema_tests = \ range-parse-error.gschema.xml \ range-wrong-type.gschema.xml \ range.gschema.xml \ + summary-xmllang.gschema.xml \ + summary-xmllang-and-attrs.gschema.xml \ wrong-category.gschema.xml \ $(NULL) @@ -238,9 +243,9 @@ gdbus_daemon_SOURCES = \ if OS_UNIX test_programs += \ - contenttype \ file \ gdbus-peer-object-manager \ + gdbus-unix-addresses \ live-g-file \ socket-address \ stream-rw_all \ @@ -250,6 +255,7 @@ test_programs += \ test_extra_programs += \ basic-application \ + dbus-launch \ $(NULL) # Uninstalled because of the check-for-executable logic in DesktopAppInfo unable to find the installed executable @@ -368,6 +374,9 @@ gdbus_non_socket_SOURCES = \ uninstalled_test_extra_programs += gdbus-example-objectmanager-client gdbus_example_objectmanager_client_LDADD = gdbus-object-manager-example/libgdbus-example-objectmanager.la $(LDADD) +uninstalled_test_extra_programs += gdbus-example-objectmanager-server +gdbus_example_objectmanager_server_LDADD = gdbus-object-manager-example/libgdbus-example-objectmanager.la $(LDADD) + test_extra_programs += gsubprocess-testprog uninstalled_test_extra_programs += gdbus-test-fixture @@ -496,8 +505,10 @@ test_programs += \ endif # ----------------------------------------------------------------------------- -# The resources test is a bit more complicated... +# The resources test is a bit more complicated, and we cannot build it when +# cross-compiling GIO because it requires running a binary... +if !CROSS_COMPILING test_programs += resources resources_SOURCES = resources.c nodist_resources_SOURCES = test_resources.c test_resources2.c test_resources2.h @@ -508,6 +519,8 @@ libresourceplugin_la_SOURCES = resourceplugin.c plugin_resources.c libresourceplugin_la_LDFLAGS = -avoid-version -module -export-dynamic $(no_undefined) libresourceplugin_la_LIBADD = $(LDADD) +test_data += test.gresource + # libtool contains a bug whereby the created .la file doesn't contain the correct dlname='' in the case that # you're building a library but not installing it. This is apparently because the only considered use for an # uninstalled library is as a convenience library for linking (despite the fact that we give -module). The lack @@ -519,11 +532,7 @@ if !ENABLE_INSTALLED_TESTS libresourceplugin_la_LDFLAGS += -rpath / endif -if CROSS_COMPILING - glib_compile_resources=$(GLIB_COMPILE_RESOURCES) -else - glib_compile_resources=$(top_builddir)/gio/glib-compile-resources -endif +glib_compile_resources=$(top_builddir)/gio/glib-compile-resources resources.o: test_resources2.h test_resources.c: test2.gresource.xml Makefile $(shell $(glib_compile_resources) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/test2.gresource.xml) @@ -539,8 +548,8 @@ test.gresource: test.gresource.xml Makefile $(shell $(glib_compile_resources) -- $(AM_V_GEN) $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) $< EXTRA_DIST += test.gresource.xml test1.txt test2.gresource.xml test2.txt test3.gresource.xml test3.txt test4.gresource.xml - CLEANFILES += test_resources.c test_resources2.[ch] plugin_resources.c test.gresource +endif # !CROSS_COMPILING BUILT_SOURCES += giotypefuncs.c @@ -550,7 +559,7 @@ giotypefuncs.c: Makefile ${CPP} $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) xgen-giosrc.c | \ $(GREP) -o '\bg_[A-Za-z0-9_]*_get_type\b' | \ $(GREP) -v 'g_io_extension_get_type\|g_variant_get_type' | \ - sort | uniq | \ + LC_ALL=C sort | uniq | \ $(SED) -e 's/^/*tp++ = /' -e 's/$$/ ();/' >> xgen-gio && \ cp xgen-gio $@ # && rm -f xgen-gio xgen-giosrc.c diff --git a/gio/tests/Makefile.in b/gio/tests/Makefile.in new file mode 100644 index 0000000..ed7d9d9 --- /dev/null +++ b/gio/tests/Makefile.in @@ -0,0 +1,4704 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +TESTS = $(am__EXEEXT_8) $(am__EXEEXT_10) +installed_test_PROGRAMS = $(am__EXEEXT_17) +noinst_PROGRAMS = $(am__EXEEXT_18) +check_PROGRAMS = $(am__EXEEXT_16) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_1 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_5 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_9 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(installed_test_meta_DATA) + +# ----------------------------------------------------------------------------- +# Test programs buildable on UNIX only + +# This is peer to peer so it doesn't need a session bus (so we can run it normally) +@OS_UNIX_TRUE@am__append_14 = file gdbus-peer-object-manager \ +@OS_UNIX_TRUE@ gdbus-unix-addresses live-g-file socket-address \ +@OS_UNIX_TRUE@ stream-rw_all unix-fd unix-streams $(NULL) \ +@OS_UNIX_TRUE@ mimeapps gdbus-connection-flush gdbus-non-socket \ +@OS_UNIX_TRUE@ gdbus-peer + +# This test is currently unreliable +@OS_UNIX_TRUE@am__append_15 = basic-application dbus-launch $(NULL) \ +@OS_UNIX_TRUE@ appinfo-test apps $(NULL) gsubprocess-testprog \ +@OS_UNIX_TRUE@ gdbus-overflow + +# Uninstalled because of the check-for-executable logic in DesktopAppInfo unable to find the installed executable +@OS_UNIX_TRUE@am__append_16 = appinfo desktop-app-info $(NULL) \ +@OS_UNIX_TRUE@ gsettings gschema-compile +@OS_UNIX_TRUE@am__append_17 = $(addprefix \ +@OS_UNIX_TRUE@ desktop-files/usr/applications/,$(usr_desktop_files)) \ +@OS_UNIX_TRUE@ $(addprefix \ +@OS_UNIX_TRUE@ desktop-files/home/applications/,$(home_desktop_files)) \ +@OS_UNIX_TRUE@ appinfo-test-actions.desktop \ +@OS_UNIX_TRUE@ appinfo-test-gnome.desktop \ +@OS_UNIX_TRUE@ appinfo-test-notgnome.desktop \ +@OS_UNIX_TRUE@ appinfo-test.desktop appinfo-test2.desktop \ +@OS_UNIX_TRUE@ file.c org.gtk.test.dbusappinfo.desktop \ +@OS_UNIX_TRUE@ x-content/image-dcf/DCIM/Camera/20130831_203925.jpg \ +@OS_UNIX_TRUE@ x-content/image-dcf/DCIM/Camera/20130831_203928.jpg \ +@OS_UNIX_TRUE@ x-content/unix-software/autorun.sh \ +@OS_UNIX_TRUE@ x-content/win32-software/autorun.exe $(NULL) + +# These three are manual-run tests because they need a session bus but don't bring one up themselves +@OS_UNIX_TRUE@am__append_18 = gdbus-example-unix-fd-client $(NULL) \ +@OS_UNIX_TRUE@ gdbus-example-objectmanager-client \ +@OS_UNIX_TRUE@ gdbus-example-objectmanager-server \ +@OS_UNIX_TRUE@ gdbus-test-fixture +@OS_UNIX_FALSE@gsettings_DEPENDENCIES = \ +@OS_UNIX_FALSE@ $(top_builddir)/gio/libgio-2.0.la \ +@OS_UNIX_FALSE@ $(top_builddir)/gobject/libgobject-2.0.la \ +@OS_UNIX_FALSE@ $(top_builddir)/gmodule/libgmodule-2.0.la \ +@OS_UNIX_FALSE@ $(top_builddir)/glib/libglib-2.0.la \ +@OS_UNIX_FALSE@ $(am__DEPENDENCIES_1) +# Generated while running the testcase itself... +@OS_UNIX_TRUE@am__append_19 = test.mo de/LC_MESSAGES/test.mo \ +@OS_UNIX_TRUE@ keyfile/gsettings.store org.gtk.test.gschema.xml \ +@OS_UNIX_TRUE@ org.gtk.test.enums.xml gsettings.store \ +@OS_UNIX_TRUE@ gschemas.compiled \ +@OS_UNIX_TRUE@ schema-source/gschemas.compiled +@OS_UNIX_TRUE@am__append_20 = de.po +@OS_UNIX_TRUE@am__append_21 = \ +@OS_UNIX_TRUE@ org.gtk.test.gschema.xml.orig \ +@OS_UNIX_TRUE@ org.gtk.schemasourcecheck.gschema.xml \ +@OS_UNIX_TRUE@ testenum.h \ +@OS_UNIX_TRUE@ enums.xml.template + +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am__append_22 = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ actions \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ dbus-appinfo \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gapplication \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-auth \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-bz627724 \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-close-pending \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-connection \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-connection-loss \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-connection-slow \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-error \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-exit-on-close \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-export \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-introspection \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-names \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-proxy \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-proxy-threads \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-proxy-well-known-name \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-test-codegen \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-test-codegen-old \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-threading \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gmenumodel \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gnotification \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(NULL) + +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am__append_23 = gdbus-test-codegen-generated.c gdbus-test-codegen-generated.h +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am__append_24 = test-codegen.xml +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am__append_25 = gdbus-test-codegen-generated.[ch] gdbus-test-codegen-generated-doc-*.xml + +# ----------------------------------------------------------------------------- +@OS_WIN32_TRUE@am__append_26 = win32-streams +@HAVE_DBUS1_TRUE@am__append_27 = gdbus-serialization +@HAVE_GCC_TRUE@am__append_28 = \ +@HAVE_GCC_TRUE@ autoptr \ +@HAVE_GCC_TRUE@ $(NULL) + + +# ----------------------------------------------------------------------------- +# The resources test is a bit more complicated, and we cannot build it when +# cross-compiling GIO because it requires running a binary... +@CROSS_COMPILING_FALSE@am__append_29 = resources +@CROSS_COMPILING_TRUE@resources_DEPENDENCIES = \ +@CROSS_COMPILING_TRUE@ $(top_builddir)/gio/libgio-2.0.la \ +@CROSS_COMPILING_TRUE@ $(top_builddir)/gobject/libgobject-2.0.la \ +@CROSS_COMPILING_TRUE@ $(top_builddir)/gmodule/libgmodule-2.0.la \ +@CROSS_COMPILING_TRUE@ $(top_builddir)/glib/libglib-2.0.la \ +@CROSS_COMPILING_TRUE@ $(am__DEPENDENCIES_1) +@CROSS_COMPILING_FALSE@am__append_30 = libresourceplugin.la +@CROSS_COMPILING_FALSE@am__append_31 = test.gresource + +# libtool contains a bug whereby the created .la file doesn't contain the correct dlname='' in the case that +# you're building a library but not installing it. This is apparently because the only considered use for an +# uninstalled library is as a convenience library for linking (despite the fact that we give -module). The lack +# of dlname='' in the .la trips up libltdl and GModule as well. We can trick libtool into believing that we +# will install the module by giving it a bogus -rpath for the uninstalled cases. +# +# See http://lists.gnu.org/archive/html/bug-libtool/2013-05/msg00009.html +@CROSS_COMPILING_FALSE@@ENABLE_INSTALLED_TESTS_FALSE@am__append_32 = -rpath / +@CROSS_COMPILING_FALSE@am__append_33 = test.gresource.xml test1.txt test2.gresource.xml test2.txt test3.gresource.xml test3.txt test4.gresource.xml +@CROSS_COMPILING_FALSE@am__append_34 = test_resources.c test_resources2.[ch] plugin_resources.c test.gresource +subdir = gio/tests +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES) +am__DEPENDENCIES_1 = +am__DEPENDENCIES_2 = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +@CROSS_COMPILING_FALSE@libresourceplugin_la_DEPENDENCIES = \ +@CROSS_COMPILING_FALSE@ $(am__DEPENDENCIES_2) +am__libresourceplugin_la_SOURCES_DIST = resourceplugin.c \ + plugin_resources.c +@CROSS_COMPILING_FALSE@am_libresourceplugin_la_OBJECTS = \ +@CROSS_COMPILING_FALSE@ resourceplugin.lo plugin_resources.lo +libresourceplugin_la_OBJECTS = $(am_libresourceplugin_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libresourceplugin_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libresourceplugin_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +@CROSS_COMPILING_FALSE@@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am_libresourceplugin_la_rpath = +@CROSS_COMPILING_FALSE@@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am_libresourceplugin_la_rpath = +@CROSS_COMPILING_FALSE@@ENABLE_INSTALLED_TESTS_TRUE@am_libresourceplugin_la_rpath = \ +@CROSS_COMPILING_FALSE@@ENABLE_INSTALLED_TESTS_TRUE@ -rpath \ +@CROSS_COMPILING_FALSE@@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_testdir) +am__EXEEXT_1 = +@OS_UNIX_TRUE@am__EXEEXT_2 = file$(EXEEXT) \ +@OS_UNIX_TRUE@ gdbus-peer-object-manager$(EXEEXT) \ +@OS_UNIX_TRUE@ gdbus-unix-addresses$(EXEEXT) \ +@OS_UNIX_TRUE@ live-g-file$(EXEEXT) socket-address$(EXEEXT) \ +@OS_UNIX_TRUE@ stream-rw_all$(EXEEXT) unix-fd$(EXEEXT) \ +@OS_UNIX_TRUE@ unix-streams$(EXEEXT) $(am__EXEEXT_1) \ +@OS_UNIX_TRUE@ mimeapps$(EXEEXT) \ +@OS_UNIX_TRUE@ gdbus-connection-flush$(EXEEXT) \ +@OS_UNIX_TRUE@ gdbus-non-socket$(EXEEXT) gdbus-peer$(EXEEXT) +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am__EXEEXT_3 = actions$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ dbus-appinfo$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gapplication$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-auth$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-bz627724$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-close-pending$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-connection$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-connection-loss$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-connection-slow$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-error$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-exit-on-close$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-export$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-introspection$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-names$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-proxy$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-proxy-threads$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-proxy-well-known-name$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-test-codegen$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-test-codegen-old$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-threading$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gmenumodel$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gnotification$(EXEEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__EXEEXT_4 = win32-streams$(EXEEXT) +@HAVE_DBUS1_TRUE@am__EXEEXT_5 = gdbus-serialization$(EXEEXT) +@HAVE_GCC_TRUE@am__EXEEXT_6 = autoptr$(EXEEXT) $(am__EXEEXT_1) +@CROSS_COMPILING_FALSE@am__EXEEXT_7 = resources$(EXEEXT) +am__EXEEXT_8 = appmonitor$(EXEEXT) async-close-output-stream$(EXEEXT) \ + async-splice-output-stream$(EXEEXT) \ + buffered-input-stream$(EXEEXT) buffered-output-stream$(EXEEXT) \ + cancellable$(EXEEXT) contexts$(EXEEXT) contenttype$(EXEEXT) \ + converter-stream$(EXEEXT) credentials$(EXEEXT) \ + data-input-stream$(EXEEXT) data-output-stream$(EXEEXT) \ + defaultvalue$(EXEEXT) fileattributematcher$(EXEEXT) \ + filter-streams$(EXEEXT) giomodule$(EXEEXT) \ + gsubprocess$(EXEEXT) g-file$(EXEEXT) g-file-info$(EXEEXT) \ + g-icon$(EXEEXT) gdbus-addresses$(EXEEXT) \ + gdbus-message$(EXEEXT) inet-address$(EXEEXT) \ + io-stream$(EXEEXT) memory-input-stream$(EXEEXT) \ + memory-output-stream$(EXEEXT) monitor$(EXEEXT) \ + network-address$(EXEEXT) network-monitor$(EXEEXT) \ + permission$(EXEEXT) pollable$(EXEEXT) proxy-test$(EXEEXT) \ + readwrite$(EXEEXT) simple-async-result$(EXEEXT) \ + simple-proxy$(EXEEXT) sleepy-stream$(EXEEXT) socket$(EXEEXT) \ + socket-listener$(EXEEXT) socket-service$(EXEEXT) \ + srvtarget$(EXEEXT) task$(EXEEXT) tls-interaction$(EXEEXT) \ + vfs$(EXEEXT) volumemonitor$(EXEEXT) glistmodel$(EXEEXT) \ + testfilemonitor$(EXEEXT) $(am__EXEEXT_1) \ + thumbnail-verification$(EXEEXT) tls-certificate$(EXEEXT) \ + $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) \ + $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) +@OS_UNIX_TRUE@am__EXEEXT_9 = appinfo$(EXEEXT) \ +@OS_UNIX_TRUE@ desktop-app-info$(EXEEXT) $(am__EXEEXT_1) \ +@OS_UNIX_TRUE@ gsettings$(EXEEXT) gschema-compile$(EXEEXT) +am__EXEEXT_10 = $(am__EXEEXT_1) $(am__EXEEXT_9) +@OS_UNIX_TRUE@am__EXEEXT_11 = basic-application$(EXEEXT) \ +@OS_UNIX_TRUE@ dbus-launch$(EXEEXT) $(am__EXEEXT_1) \ +@OS_UNIX_TRUE@ appinfo-test$(EXEEXT) apps$(EXEEXT) \ +@OS_UNIX_TRUE@ $(am__EXEEXT_1) gsubprocess-testprog$(EXEEXT) \ +@OS_UNIX_TRUE@ gdbus-overflow$(EXEEXT) +am__EXEEXT_12 = gdbus-connection-flush-helper$(EXEEXT) \ + gdbus-testserver$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_11) +@OS_UNIX_TRUE@am__EXEEXT_13 = gdbus-example-unix-fd-client$(EXEEXT) \ +@OS_UNIX_TRUE@ $(am__EXEEXT_1) \ +@OS_UNIX_TRUE@ gdbus-example-objectmanager-client$(EXEEXT) \ +@OS_UNIX_TRUE@ gdbus-example-objectmanager-server$(EXEEXT) \ +@OS_UNIX_TRUE@ gdbus-test-fixture$(EXEEXT) +am__EXEEXT_14 = gio-du$(EXEEXT) echo-server$(EXEEXT) \ + filter-cat$(EXEEXT) gapplication-example-actions$(EXEEXT) \ + gapplication-example-cmdline$(EXEEXT) \ + gapplication-example-cmdline2$(EXEEXT) \ + gapplication-example-cmdline3$(EXEEXT) \ + gapplication-example-dbushooks$(EXEEXT) \ + gapplication-example-open$(EXEEXT) \ + gdbus-example-export$(EXEEXT) gdbus-example-own-name$(EXEEXT) \ + gdbus-example-peer$(EXEEXT) \ + gdbus-example-proxy-subclass$(EXEEXT) \ + gdbus-example-server$(EXEEXT) gdbus-example-subtree$(EXEEXT) \ + gdbus-example-watch-name$(EXEEXT) \ + gdbus-example-watch-proxy$(EXEEXT) \ + gsubprocess-testprog$(EXEEXT) httpd$(EXEEXT) proxy$(EXEEXT) \ + resolver$(EXEEXT) send-data$(EXEEXT) socket-server$(EXEEXT) \ + $(am__EXEEXT_1) socket-client$(EXEEXT) gdbus-daemon$(EXEEXT) \ + $(am__EXEEXT_13) +am__EXEEXT_15 = $(am__EXEEXT_8) $(am__EXEEXT_10) $(am__EXEEXT_12) \ + $(am__EXEEXT_14) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_16 = $(am__EXEEXT_15) +@ENABLE_INSTALLED_TESTS_TRUE@am__EXEEXT_17 = $(am__EXEEXT_8) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(am__EXEEXT_12) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_18 = $(am__EXEEXT_15) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +am__actions_SOURCES_DIST = gdbus-sessionbus.c gdbus-sessionbus.h \ + gdbus-tests.h gdbus-tests.c actions.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am__objects_1 = gdbus-sessionbus.$(OBJEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-tests.$(OBJEXT) +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_actions_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ actions.$(OBJEXT) +actions_OBJECTS = $(am_actions_OBJECTS) +actions_LDADD = $(LDADD) +actions_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +appinfo_SOURCES = appinfo.c +appinfo_OBJECTS = appinfo.$(OBJEXT) +appinfo_LDADD = $(LDADD) +appinfo_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +appinfo_test_SOURCES = appinfo-test.c +appinfo_test_OBJECTS = appinfo-test.$(OBJEXT) +appinfo_test_LDADD = $(LDADD) +appinfo_test_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +appmonitor_SOURCES = appmonitor.c +appmonitor_OBJECTS = appmonitor.$(OBJEXT) +appmonitor_LDADD = $(LDADD) +appmonitor_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +apps_SOURCES = apps.c +apps_OBJECTS = apps.$(OBJEXT) +apps_LDADD = $(LDADD) +apps_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +async_close_output_stream_SOURCES = async-close-output-stream.c +async_close_output_stream_OBJECTS = \ + async-close-output-stream.$(OBJEXT) +async_close_output_stream_LDADD = $(LDADD) +async_close_output_stream_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +async_splice_output_stream_SOURCES = async-splice-output-stream.c +async_splice_output_stream_OBJECTS = \ + async-splice-output-stream.$(OBJEXT) +async_splice_output_stream_LDADD = $(LDADD) +async_splice_output_stream_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +autoptr_SOURCES = autoptr.c +autoptr_OBJECTS = autoptr.$(OBJEXT) +autoptr_LDADD = $(LDADD) +autoptr_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +basic_application_SOURCES = basic-application.c +basic_application_OBJECTS = basic-application.$(OBJEXT) +basic_application_LDADD = $(LDADD) +basic_application_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +buffered_input_stream_SOURCES = buffered-input-stream.c +buffered_input_stream_OBJECTS = buffered-input-stream.$(OBJEXT) +buffered_input_stream_LDADD = $(LDADD) +buffered_input_stream_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +buffered_output_stream_SOURCES = buffered-output-stream.c +buffered_output_stream_OBJECTS = buffered-output-stream.$(OBJEXT) +buffered_output_stream_LDADD = $(LDADD) +buffered_output_stream_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +cancellable_SOURCES = cancellable.c +cancellable_OBJECTS = cancellable.$(OBJEXT) +cancellable_LDADD = $(LDADD) +cancellable_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +contenttype_SOURCES = contenttype.c +contenttype_OBJECTS = contenttype.$(OBJEXT) +contenttype_LDADD = $(LDADD) +contenttype_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +contexts_SOURCES = contexts.c +contexts_OBJECTS = contexts.$(OBJEXT) +contexts_LDADD = $(LDADD) +contexts_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +converter_stream_SOURCES = converter-stream.c +converter_stream_OBJECTS = converter-stream.$(OBJEXT) +converter_stream_LDADD = $(LDADD) +converter_stream_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +credentials_SOURCES = credentials.c +credentials_OBJECTS = credentials.$(OBJEXT) +credentials_LDADD = $(LDADD) +credentials_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +data_input_stream_SOURCES = data-input-stream.c +data_input_stream_OBJECTS = data-input-stream.$(OBJEXT) +data_input_stream_LDADD = $(LDADD) +data_input_stream_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +data_output_stream_SOURCES = data-output-stream.c +data_output_stream_OBJECTS = data-output-stream.$(OBJEXT) +data_output_stream_LDADD = $(LDADD) +data_output_stream_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__dbus_appinfo_SOURCES_DIST = gdbus-sessionbus.c gdbus-sessionbus.h \ + gdbus-tests.h gdbus-tests.c dbus-appinfo.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_dbus_appinfo_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ dbus-appinfo.$(OBJEXT) +dbus_appinfo_OBJECTS = $(am_dbus_appinfo_OBJECTS) +dbus_appinfo_LDADD = $(LDADD) +dbus_appinfo_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +dbus_launch_SOURCES = dbus-launch.c +dbus_launch_OBJECTS = dbus-launch.$(OBJEXT) +dbus_launch_LDADD = $(LDADD) +dbus_launch_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +defaultvalue_SOURCES = defaultvalue.c +defaultvalue_OBJECTS = defaultvalue.$(OBJEXT) +defaultvalue_LDADD = $(LDADD) +defaultvalue_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +desktop_app_info_SOURCES = desktop-app-info.c +desktop_app_info_OBJECTS = desktop-app-info.$(OBJEXT) +desktop_app_info_LDADD = $(LDADD) +desktop_app_info_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +echo_server_SOURCES = echo-server.c +echo_server_OBJECTS = echo-server.$(OBJEXT) +echo_server_LDADD = $(LDADD) +echo_server_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +file_SOURCES = file.c +file_OBJECTS = file.$(OBJEXT) +file_LDADD = $(LDADD) +file_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +fileattributematcher_SOURCES = fileattributematcher.c +fileattributematcher_OBJECTS = fileattributematcher.$(OBJEXT) +fileattributematcher_LDADD = $(LDADD) +fileattributematcher_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +filter_cat_SOURCES = filter-cat.c +filter_cat_OBJECTS = filter-cat.$(OBJEXT) +filter_cat_LDADD = $(LDADD) +filter_cat_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +filter_streams_SOURCES = filter-streams.c +filter_streams_OBJECTS = filter-streams.$(OBJEXT) +filter_streams_LDADD = $(LDADD) +filter_streams_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +g_file_SOURCES = g-file.c +g_file_OBJECTS = g-file.$(OBJEXT) +g_file_LDADD = $(LDADD) +g_file_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +g_file_info_SOURCES = g-file-info.c +g_file_info_OBJECTS = g-file-info.$(OBJEXT) +g_file_info_LDADD = $(LDADD) +g_file_info_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +g_icon_SOURCES = g-icon.c +g_icon_OBJECTS = g-icon.$(OBJEXT) +g_icon_LDADD = $(LDADD) +g_icon_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gapplication_SOURCES_DIST = gdbus-sessionbus.c gdbus-sessionbus.h \ + gdbus-tests.h gdbus-tests.c gapplication.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gapplication_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gapplication.$(OBJEXT) +gapplication_OBJECTS = $(am_gapplication_OBJECTS) +gapplication_LDADD = $(LDADD) +gapplication_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gapplication_example_actions_SOURCES = gapplication-example-actions.c +gapplication_example_actions_OBJECTS = \ + gapplication-example-actions.$(OBJEXT) +gapplication_example_actions_LDADD = $(LDADD) +gapplication_example_actions_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gapplication_example_cmdline_SOURCES = gapplication-example-cmdline.c +gapplication_example_cmdline_OBJECTS = \ + gapplication-example-cmdline.$(OBJEXT) +gapplication_example_cmdline_LDADD = $(LDADD) +gapplication_example_cmdline_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gapplication_example_cmdline2_SOURCES = \ + gapplication-example-cmdline2.c +gapplication_example_cmdline2_OBJECTS = \ + gapplication-example-cmdline2.$(OBJEXT) +gapplication_example_cmdline2_LDADD = $(LDADD) +gapplication_example_cmdline2_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gapplication_example_cmdline3_SOURCES = \ + gapplication-example-cmdline3.c +gapplication_example_cmdline3_OBJECTS = \ + gapplication-example-cmdline3.$(OBJEXT) +gapplication_example_cmdline3_LDADD = $(LDADD) +gapplication_example_cmdline3_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gapplication_example_dbushooks_SOURCES = \ + gapplication-example-dbushooks.c +gapplication_example_dbushooks_OBJECTS = \ + gapplication-example-dbushooks.$(OBJEXT) +gapplication_example_dbushooks_LDADD = $(LDADD) +gapplication_example_dbushooks_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gapplication_example_open_SOURCES = gapplication-example-open.c +gapplication_example_open_OBJECTS = \ + gapplication-example-open.$(OBJEXT) +gapplication_example_open_LDADD = $(LDADD) +gapplication_example_open_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_addresses_SOURCES = gdbus-addresses.c +gdbus_addresses_OBJECTS = gdbus-addresses.$(OBJEXT) +gdbus_addresses_LDADD = $(LDADD) +gdbus_addresses_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_auth_SOURCES_DIST = gdbus-sessionbus.c gdbus-sessionbus.h \ + gdbus-tests.h gdbus-tests.c gdbus-auth.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_auth_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-auth.$(OBJEXT) +gdbus_auth_OBJECTS = $(am_gdbus_auth_OBJECTS) +gdbus_auth_LDADD = $(LDADD) +gdbus_auth_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_bz627724_SOURCES_DIST = gdbus-sessionbus.c \ + gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c \ + gdbus-bz627724.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_bz627724_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-bz627724.$(OBJEXT) +gdbus_bz627724_OBJECTS = $(am_gdbus_bz627724_OBJECTS) +gdbus_bz627724_LDADD = $(LDADD) +gdbus_bz627724_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_close_pending_SOURCES_DIST = gdbus-sessionbus.c \ + gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c \ + gdbus-close-pending.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_close_pending_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-close-pending.$(OBJEXT) +gdbus_close_pending_OBJECTS = $(am_gdbus_close_pending_OBJECTS) +gdbus_close_pending_LDADD = $(LDADD) +gdbus_close_pending_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_connection_SOURCES_DIST = gdbus-sessionbus.c \ + gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c \ + gdbus-connection.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_connection_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-connection.$(OBJEXT) +gdbus_connection_OBJECTS = $(am_gdbus_connection_OBJECTS) +gdbus_connection_LDADD = $(LDADD) +gdbus_connection_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_connection_flush_SOURCES_DIST = gdbus-connection-flush.c \ + test-io-stream.c test-io-stream.h test-pipe-unix.c \ + test-pipe-unix.h +@OS_UNIX_TRUE@am_gdbus_connection_flush_OBJECTS = \ +@OS_UNIX_TRUE@ gdbus-connection-flush.$(OBJEXT) \ +@OS_UNIX_TRUE@ test-io-stream.$(OBJEXT) \ +@OS_UNIX_TRUE@ test-pipe-unix.$(OBJEXT) +gdbus_connection_flush_OBJECTS = $(am_gdbus_connection_flush_OBJECTS) +gdbus_connection_flush_LDADD = $(LDADD) +gdbus_connection_flush_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_connection_flush_helper_SOURCES = \ + gdbus-connection-flush-helper.c +gdbus_connection_flush_helper_OBJECTS = \ + gdbus-connection-flush-helper.$(OBJEXT) +gdbus_connection_flush_helper_LDADD = $(LDADD) +gdbus_connection_flush_helper_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_connection_loss_SOURCES_DIST = gdbus-sessionbus.c \ + gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c \ + gdbus-connection-loss.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_connection_loss_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-connection-loss.$(OBJEXT) +gdbus_connection_loss_OBJECTS = $(am_gdbus_connection_loss_OBJECTS) +gdbus_connection_loss_LDADD = $(LDADD) +gdbus_connection_loss_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_connection_slow_SOURCES_DIST = gdbus-sessionbus.c \ + gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c \ + gdbus-connection-slow.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_connection_slow_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-connection-slow.$(OBJEXT) +gdbus_connection_slow_OBJECTS = $(am_gdbus_connection_slow_OBJECTS) +gdbus_connection_slow_LDADD = $(LDADD) +gdbus_connection_slow_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am_gdbus_daemon_OBJECTS = gdbus-daemon.$(OBJEXT) gdbusdaemon.$(OBJEXT) +nodist_gdbus_daemon_OBJECTS = gdbus-daemon-generated.$(OBJEXT) +gdbus_daemon_OBJECTS = $(am_gdbus_daemon_OBJECTS) \ + $(nodist_gdbus_daemon_OBJECTS) +gdbus_daemon_LDADD = $(LDADD) +gdbus_daemon_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_error_SOURCES_DIST = gdbus-sessionbus.c gdbus-sessionbus.h \ + gdbus-tests.h gdbus-tests.c gdbus-error.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_error_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-error.$(OBJEXT) +gdbus_error_OBJECTS = $(am_gdbus_error_OBJECTS) +gdbus_error_LDADD = $(LDADD) +gdbus_error_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_example_export_SOURCES = gdbus-example-export.c +gdbus_example_export_OBJECTS = gdbus-example-export.$(OBJEXT) +gdbus_example_export_LDADD = $(LDADD) +gdbus_example_export_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_example_objectmanager_client_SOURCES = \ + gdbus-example-objectmanager-client.c +gdbus_example_objectmanager_client_OBJECTS = \ + gdbus-example-objectmanager-client.$(OBJEXT) +@OS_UNIX_TRUE@gdbus_example_objectmanager_client_DEPENDENCIES = gdbus-object-manager-example/libgdbus-example-objectmanager.la \ +@OS_UNIX_TRUE@ $(am__DEPENDENCIES_2) +gdbus_example_objectmanager_server_SOURCES = \ + gdbus-example-objectmanager-server.c +gdbus_example_objectmanager_server_OBJECTS = \ + gdbus-example-objectmanager-server.$(OBJEXT) +@OS_UNIX_TRUE@gdbus_example_objectmanager_server_DEPENDENCIES = gdbus-object-manager-example/libgdbus-example-objectmanager.la \ +@OS_UNIX_TRUE@ $(am__DEPENDENCIES_2) +gdbus_example_own_name_SOURCES = gdbus-example-own-name.c +gdbus_example_own_name_OBJECTS = gdbus-example-own-name.$(OBJEXT) +gdbus_example_own_name_LDADD = $(LDADD) +gdbus_example_own_name_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_example_peer_SOURCES = gdbus-example-peer.c +gdbus_example_peer_OBJECTS = gdbus-example-peer.$(OBJEXT) +gdbus_example_peer_LDADD = $(LDADD) +gdbus_example_peer_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_example_proxy_subclass_SOURCES = gdbus-example-proxy-subclass.c +gdbus_example_proxy_subclass_OBJECTS = \ + gdbus-example-proxy-subclass.$(OBJEXT) +gdbus_example_proxy_subclass_LDADD = $(LDADD) +gdbus_example_proxy_subclass_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_example_server_SOURCES = gdbus-example-server.c +gdbus_example_server_OBJECTS = gdbus-example-server.$(OBJEXT) +gdbus_example_server_LDADD = $(LDADD) +gdbus_example_server_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_example_subtree_SOURCES = gdbus-example-subtree.c +gdbus_example_subtree_OBJECTS = gdbus-example-subtree.$(OBJEXT) +gdbus_example_subtree_LDADD = $(LDADD) +gdbus_example_subtree_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_example_unix_fd_client_SOURCES = gdbus-example-unix-fd-client.c +gdbus_example_unix_fd_client_OBJECTS = \ + gdbus-example-unix-fd-client.$(OBJEXT) +gdbus_example_unix_fd_client_LDADD = $(LDADD) +gdbus_example_unix_fd_client_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_example_watch_name_SOURCES = gdbus-example-watch-name.c +gdbus_example_watch_name_OBJECTS = gdbus-example-watch-name.$(OBJEXT) +gdbus_example_watch_name_LDADD = $(LDADD) +gdbus_example_watch_name_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_example_watch_proxy_SOURCES = gdbus-example-watch-proxy.c +gdbus_example_watch_proxy_OBJECTS = \ + gdbus-example-watch-proxy.$(OBJEXT) +gdbus_example_watch_proxy_LDADD = $(LDADD) +gdbus_example_watch_proxy_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_exit_on_close_SOURCES_DIST = gdbus-sessionbus.c \ + gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c \ + gdbus-exit-on-close.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_exit_on_close_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-exit-on-close.$(OBJEXT) +gdbus_exit_on_close_OBJECTS = $(am_gdbus_exit_on_close_OBJECTS) +gdbus_exit_on_close_LDADD = $(LDADD) +gdbus_exit_on_close_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_export_SOURCES_DIST = gdbus-sessionbus.c gdbus-sessionbus.h \ + gdbus-tests.h gdbus-tests.c gdbus-export.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_export_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-export.$(OBJEXT) +gdbus_export_OBJECTS = $(am_gdbus_export_OBJECTS) +gdbus_export_LDADD = $(LDADD) +gdbus_export_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_introspection_SOURCES_DIST = gdbus-sessionbus.c \ + gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c \ + gdbus-introspection.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_introspection_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-introspection.$(OBJEXT) +gdbus_introspection_OBJECTS = $(am_gdbus_introspection_OBJECTS) +gdbus_introspection_LDADD = $(LDADD) +gdbus_introspection_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_message_SOURCES = gdbus-message.c +gdbus_message_OBJECTS = gdbus-message.$(OBJEXT) +gdbus_message_LDADD = $(LDADD) +gdbus_message_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_names_SOURCES_DIST = gdbus-sessionbus.c gdbus-sessionbus.h \ + gdbus-tests.h gdbus-tests.c gdbus-names.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_names_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-names.$(OBJEXT) +gdbus_names_OBJECTS = $(am_gdbus_names_OBJECTS) +gdbus_names_LDADD = $(LDADD) +gdbus_names_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_non_socket_SOURCES_DIST = gdbus-non-socket.c gdbus-tests.c \ + gdbus-tests.h test-io-stream.c test-io-stream.h \ + test-pipe-unix.c test-pipe-unix.h +@OS_UNIX_TRUE@am_gdbus_non_socket_OBJECTS = \ +@OS_UNIX_TRUE@ gdbus-non-socket.$(OBJEXT) gdbus-tests.$(OBJEXT) \ +@OS_UNIX_TRUE@ test-io-stream.$(OBJEXT) \ +@OS_UNIX_TRUE@ test-pipe-unix.$(OBJEXT) +gdbus_non_socket_OBJECTS = $(am_gdbus_non_socket_OBJECTS) +gdbus_non_socket_LDADD = $(LDADD) +gdbus_non_socket_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_overflow_SOURCES = gdbus-overflow.c +gdbus_overflow_OBJECTS = gdbus-overflow.$(OBJEXT) +gdbus_overflow_LDADD = $(LDADD) +gdbus_overflow_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_peer_SOURCES = gdbus-peer.c +gdbus_peer_OBJECTS = gdbus-peer.$(OBJEXT) +@OS_UNIX_TRUE@gdbus_peer_DEPENDENCIES = gdbus-object-manager-example/libgdbus-example-objectmanager.la \ +@OS_UNIX_TRUE@ $(am__DEPENDENCIES_2) +gdbus_peer_object_manager_SOURCES = gdbus-peer-object-manager.c +gdbus_peer_object_manager_OBJECTS = \ + gdbus-peer-object-manager.$(OBJEXT) +gdbus_peer_object_manager_LDADD = $(LDADD) +gdbus_peer_object_manager_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_proxy_SOURCES_DIST = gdbus-sessionbus.c gdbus-sessionbus.h \ + gdbus-tests.h gdbus-tests.c gdbus-proxy.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_proxy_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-proxy.$(OBJEXT) +gdbus_proxy_OBJECTS = $(am_gdbus_proxy_OBJECTS) +gdbus_proxy_LDADD = $(LDADD) +gdbus_proxy_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_proxy_threads_SOURCES_DIST = gdbus-sessionbus.c \ + gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c \ + gdbus-proxy-threads.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am__objects_2 = gdbus_proxy_threads-gdbus-sessionbus.$(OBJEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus_proxy_threads-gdbus-tests.$(OBJEXT) +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_proxy_threads_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_2) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus_proxy_threads-gdbus-proxy-threads.$(OBJEXT) +gdbus_proxy_threads_OBJECTS = $(am_gdbus_proxy_threads_OBJECTS) +gdbus_proxy_threads_LDADD = $(LDADD) +gdbus_proxy_threads_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_proxy_threads_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(gdbus_proxy_threads_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__gdbus_proxy_well_known_name_SOURCES_DIST = gdbus-sessionbus.c \ + gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c \ + gdbus-proxy-well-known-name.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_proxy_well_known_name_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-proxy-well-known-name.$(OBJEXT) +gdbus_proxy_well_known_name_OBJECTS = \ + $(am_gdbus_proxy_well_known_name_OBJECTS) +gdbus_proxy_well_known_name_LDADD = $(LDADD) +gdbus_proxy_well_known_name_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_serialization_SOURCES_DIST = gdbus-serialization.c \ + gdbus-tests.h gdbus-tests.c +@HAVE_DBUS1_TRUE@am_gdbus_serialization_OBJECTS = gdbus_serialization-gdbus-serialization.$(OBJEXT) \ +@HAVE_DBUS1_TRUE@ gdbus_serialization-gdbus-tests.$(OBJEXT) +gdbus_serialization_OBJECTS = $(am_gdbus_serialization_OBJECTS) +@HAVE_DBUS1_TRUE@gdbus_serialization_DEPENDENCIES = \ +@HAVE_DBUS1_TRUE@ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) +gdbus_serialization_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(gdbus_serialization_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__gdbus_test_codegen_SOURCES_DIST = gdbus-sessionbus.c \ + gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c \ + gdbus-test-codegen.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_test_codegen_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-test-codegen.$(OBJEXT) +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@nodist_gdbus_test_codegen_OBJECTS = gdbus-test-codegen-generated.$(OBJEXT) +gdbus_test_codegen_OBJECTS = $(am_gdbus_test_codegen_OBJECTS) \ + $(nodist_gdbus_test_codegen_OBJECTS) +gdbus_test_codegen_LDADD = $(LDADD) +gdbus_test_codegen_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_test_codegen_old_SOURCES_DIST = gdbus-sessionbus.c \ + gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c \ + gdbus-test-codegen.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am__objects_3 = gdbus_test_codegen_old-gdbus-sessionbus.$(OBJEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus_test_codegen_old-gdbus-tests.$(OBJEXT) +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_test_codegen_old_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_3) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus_test_codegen_old-gdbus-test-codegen.$(OBJEXT) +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@nodist_gdbus_test_codegen_old_OBJECTS = gdbus_test_codegen_old-gdbus-test-codegen-generated.$(OBJEXT) +gdbus_test_codegen_old_OBJECTS = $(am_gdbus_test_codegen_old_OBJECTS) \ + $(nodist_gdbus_test_codegen_old_OBJECTS) +gdbus_test_codegen_old_LDADD = $(LDADD) +gdbus_test_codegen_old_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_test_fixture_SOURCES = gdbus-test-fixture.c +gdbus_test_fixture_OBJECTS = gdbus-test-fixture.$(OBJEXT) +@OS_UNIX_TRUE@gdbus_test_fixture_DEPENDENCIES = gdbus-object-manager-example/libgdbus-example-objectmanager.la \ +@OS_UNIX_TRUE@ $(am__DEPENDENCIES_2) +gdbus_testserver_SOURCES = gdbus-testserver.c +gdbus_testserver_OBJECTS = gdbus-testserver.$(OBJEXT) +gdbus_testserver_LDADD = $(LDADD) +gdbus_testserver_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gdbus_threading_SOURCES_DIST = gdbus-sessionbus.c \ + gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c \ + gdbus-threading.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gdbus_threading_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gdbus-threading.$(OBJEXT) +gdbus_threading_OBJECTS = $(am_gdbus_threading_OBJECTS) +gdbus_threading_LDADD = $(LDADD) +gdbus_threading_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gdbus_unix_addresses_SOURCES = gdbus-unix-addresses.c +gdbus_unix_addresses_OBJECTS = gdbus-unix-addresses.$(OBJEXT) +gdbus_unix_addresses_LDADD = $(LDADD) +gdbus_unix_addresses_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gio_du_SOURCES = gio-du.c +gio_du_OBJECTS = gio-du.$(OBJEXT) +gio_du_LDADD = $(LDADD) +gio_du_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +giomodule_SOURCES = giomodule.c +giomodule_OBJECTS = giomodule.$(OBJEXT) +giomodule_LDADD = $(LDADD) +giomodule_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +glistmodel_SOURCES = glistmodel.c +glistmodel_OBJECTS = glistmodel.$(OBJEXT) +glistmodel_LDADD = $(LDADD) +glistmodel_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gmenumodel_SOURCES_DIST = gdbus-sessionbus.c gdbus-sessionbus.h \ + gdbus-tests.h gdbus-tests.c gmenumodel.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gmenumodel_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gmenumodel.$(OBJEXT) +gmenumodel_OBJECTS = $(am_gmenumodel_OBJECTS) +gmenumodel_LDADD = $(LDADD) +gmenumodel_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__gnotification_SOURCES_DIST = gdbus-sessionbus.c gdbus-sessionbus.h \ + gdbus-tests.h gdbus-tests.c gnotification.c \ + gnotification-server.h gnotification-server.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@am_gnotification_OBJECTS = \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(am__objects_1) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gnotification.$(OBJEXT) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ gnotification-server.$(OBJEXT) +gnotification_OBJECTS = $(am_gnotification_OBJECTS) +gnotification_LDADD = $(LDADD) +gnotification_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gschema_compile_SOURCES = gschema-compile.c +gschema_compile_OBJECTS = gschema-compile.$(OBJEXT) +gschema_compile_LDADD = $(LDADD) +gschema_compile_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gsettings_SOURCES = gsettings.c +gsettings_OBJECTS = gsettings-gsettings.$(OBJEXT) +gsettings_LDADD = $(LDADD) +gsettings_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(gsettings_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +gsubprocess_SOURCES = gsubprocess.c +gsubprocess_OBJECTS = gsubprocess.$(OBJEXT) +gsubprocess_LDADD = $(LDADD) +gsubprocess_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +gsubprocess_testprog_SOURCES = gsubprocess-testprog.c +gsubprocess_testprog_OBJECTS = gsubprocess-testprog.$(OBJEXT) +gsubprocess_testprog_LDADD = $(LDADD) +gsubprocess_testprog_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +httpd_SOURCES = httpd.c +httpd_OBJECTS = httpd.$(OBJEXT) +httpd_LDADD = $(LDADD) +httpd_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +inet_address_SOURCES = inet-address.c +inet_address_OBJECTS = inet-address.$(OBJEXT) +inet_address_LDADD = $(LDADD) +inet_address_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +io_stream_SOURCES = io-stream.c +io_stream_OBJECTS = io-stream.$(OBJEXT) +io_stream_LDADD = $(LDADD) +io_stream_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +live_g_file_SOURCES = live-g-file.c +live_g_file_OBJECTS = live-g-file.$(OBJEXT) +live_g_file_LDADD = $(LDADD) +live_g_file_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +memory_input_stream_SOURCES = memory-input-stream.c +memory_input_stream_OBJECTS = memory-input-stream.$(OBJEXT) +memory_input_stream_LDADD = $(LDADD) +memory_input_stream_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +memory_output_stream_SOURCES = memory-output-stream.c +memory_output_stream_OBJECTS = memory-output-stream.$(OBJEXT) +memory_output_stream_LDADD = $(LDADD) +memory_output_stream_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +mimeapps_SOURCES = mimeapps.c +mimeapps_OBJECTS = mimeapps.$(OBJEXT) +mimeapps_LDADD = $(LDADD) +mimeapps_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +monitor_SOURCES = monitor.c +monitor_OBJECTS = monitor.$(OBJEXT) +monitor_LDADD = $(LDADD) +monitor_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +network_address_SOURCES = network-address.c +network_address_OBJECTS = network-address.$(OBJEXT) +network_address_LDADD = $(LDADD) +network_address_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +network_monitor_SOURCES = network-monitor.c +network_monitor_OBJECTS = network-monitor.$(OBJEXT) +network_monitor_LDADD = $(LDADD) +network_monitor_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +permission_SOURCES = permission.c +permission_OBJECTS = permission.$(OBJEXT) +permission_LDADD = $(LDADD) +permission_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +pollable_SOURCES = pollable.c +pollable_OBJECTS = pollable.$(OBJEXT) +pollable_LDADD = $(LDADD) +pollable_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +proxy_SOURCES = proxy.c +proxy_OBJECTS = proxy.$(OBJEXT) +proxy_LDADD = $(LDADD) +proxy_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +proxy_test_SOURCES = proxy-test.c +proxy_test_OBJECTS = proxy-test.$(OBJEXT) +proxy_test_LDADD = $(LDADD) +proxy_test_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +readwrite_SOURCES = readwrite.c +readwrite_OBJECTS = readwrite.$(OBJEXT) +readwrite_LDADD = $(LDADD) +readwrite_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +resolver_SOURCES = resolver.c +resolver_OBJECTS = resolver.$(OBJEXT) +resolver_LDADD = $(LDADD) +resolver_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am__resources_SOURCES_DIST = resources.c +@CROSS_COMPILING_FALSE@am_resources_OBJECTS = resources.$(OBJEXT) +@CROSS_COMPILING_FALSE@nodist_resources_OBJECTS = \ +@CROSS_COMPILING_FALSE@ test_resources.$(OBJEXT) \ +@CROSS_COMPILING_FALSE@ test_resources2.$(OBJEXT) +resources_OBJECTS = $(am_resources_OBJECTS) \ + $(nodist_resources_OBJECTS) +resources_LDADD = $(LDADD) +send_data_SOURCES = send-data.c +send_data_OBJECTS = send-data.$(OBJEXT) +send_data_LDADD = $(LDADD) +send_data_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +simple_async_result_SOURCES = simple-async-result.c +simple_async_result_OBJECTS = simple-async-result.$(OBJEXT) +simple_async_result_LDADD = $(LDADD) +simple_async_result_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +simple_proxy_SOURCES = simple-proxy.c +simple_proxy_OBJECTS = simple-proxy.$(OBJEXT) +simple_proxy_LDADD = $(LDADD) +simple_proxy_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +sleepy_stream_SOURCES = sleepy-stream.c +sleepy_stream_OBJECTS = sleepy-stream.$(OBJEXT) +sleepy_stream_LDADD = $(LDADD) +sleepy_stream_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +socket_SOURCES = socket.c +socket_OBJECTS = socket.$(OBJEXT) +socket_LDADD = $(LDADD) +socket_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +socket_address_SOURCES = socket-address.c +socket_address_OBJECTS = socket-address.$(OBJEXT) +socket_address_LDADD = $(LDADD) +socket_address_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am_socket_client_OBJECTS = socket-client.$(OBJEXT) \ + gtlsconsoleinteraction.$(OBJEXT) +socket_client_OBJECTS = $(am_socket_client_OBJECTS) +socket_client_LDADD = $(LDADD) +socket_client_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +socket_listener_SOURCES = socket-listener.c +socket_listener_OBJECTS = socket-listener.$(OBJEXT) +socket_listener_LDADD = $(LDADD) +socket_listener_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +socket_server_SOURCES = socket-server.c +socket_server_OBJECTS = socket-server.$(OBJEXT) +socket_server_LDADD = $(LDADD) +socket_server_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +socket_service_SOURCES = socket-service.c +socket_service_OBJECTS = socket-service.$(OBJEXT) +socket_service_LDADD = $(LDADD) +socket_service_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +srvtarget_SOURCES = srvtarget.c +srvtarget_OBJECTS = srvtarget.$(OBJEXT) +srvtarget_LDADD = $(LDADD) +srvtarget_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +stream_rw_all_SOURCES = stream-rw_all.c +stream_rw_all_OBJECTS = stream-rw_all.$(OBJEXT) +stream_rw_all_LDADD = $(LDADD) +stream_rw_all_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +task_SOURCES = task.c +task_OBJECTS = task.$(OBJEXT) +task_LDADD = $(LDADD) +task_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +testfilemonitor_SOURCES = testfilemonitor.c +testfilemonitor_OBJECTS = testfilemonitor.$(OBJEXT) +testfilemonitor_LDADD = $(LDADD) +testfilemonitor_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +thumbnail_verification_SOURCES = thumbnail-verification.c +thumbnail_verification_OBJECTS = thumbnail-verification.$(OBJEXT) +thumbnail_verification_LDADD = $(LDADD) +thumbnail_verification_DEPENDENCIES = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am_tls_certificate_OBJECTS = tls-certificate.$(OBJEXT) \ + gtesttlsbackend.$(OBJEXT) +tls_certificate_OBJECTS = $(am_tls_certificate_OBJECTS) +tls_certificate_LDADD = $(LDADD) +tls_certificate_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +am_tls_interaction_OBJECTS = tls-interaction.$(OBJEXT) \ + gtesttlsbackend.$(OBJEXT) +tls_interaction_OBJECTS = $(am_tls_interaction_OBJECTS) +tls_interaction_LDADD = $(LDADD) +tls_interaction_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +unix_fd_SOURCES = unix-fd.c +unix_fd_OBJECTS = unix-fd.$(OBJEXT) +unix_fd_LDADD = $(LDADD) +unix_fd_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +unix_streams_SOURCES = unix-streams.c +unix_streams_OBJECTS = unix-streams.$(OBJEXT) +unix_streams_LDADD = $(LDADD) +unix_streams_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +vfs_SOURCES = vfs.c +vfs_OBJECTS = vfs.$(OBJEXT) +vfs_LDADD = $(LDADD) +vfs_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +volumemonitor_SOURCES = volumemonitor.c +volumemonitor_OBJECTS = volumemonitor.$(OBJEXT) +volumemonitor_LDADD = $(LDADD) +volumemonitor_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +win32_streams_SOURCES = win32-streams.c +win32_streams_OBJECTS = win32-streams.$(OBJEXT) +win32_streams_LDADD = $(LDADD) +win32_streams_DEPENDENCIES = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libresourceplugin_la_SOURCES) $(actions_SOURCES) appinfo.c \ + appinfo-test.c appmonitor.c apps.c async-close-output-stream.c \ + async-splice-output-stream.c autoptr.c basic-application.c \ + buffered-input-stream.c buffered-output-stream.c cancellable.c \ + contenttype.c contexts.c converter-stream.c credentials.c \ + data-input-stream.c data-output-stream.c \ + $(dbus_appinfo_SOURCES) dbus-launch.c defaultvalue.c \ + desktop-app-info.c echo-server.c file.c fileattributematcher.c \ + filter-cat.c filter-streams.c g-file.c g-file-info.c g-icon.c \ + $(gapplication_SOURCES) gapplication-example-actions.c \ + gapplication-example-cmdline.c gapplication-example-cmdline2.c \ + gapplication-example-cmdline3.c \ + gapplication-example-dbushooks.c gapplication-example-open.c \ + gdbus-addresses.c $(gdbus_auth_SOURCES) \ + $(gdbus_bz627724_SOURCES) $(gdbus_close_pending_SOURCES) \ + $(gdbus_connection_SOURCES) $(gdbus_connection_flush_SOURCES) \ + gdbus-connection-flush-helper.c \ + $(gdbus_connection_loss_SOURCES) \ + $(gdbus_connection_slow_SOURCES) $(gdbus_daemon_SOURCES) \ + $(nodist_gdbus_daemon_SOURCES) $(gdbus_error_SOURCES) \ + gdbus-example-export.c gdbus-example-objectmanager-client.c \ + gdbus-example-objectmanager-server.c gdbus-example-own-name.c \ + gdbus-example-peer.c gdbus-example-proxy-subclass.c \ + gdbus-example-server.c gdbus-example-subtree.c \ + gdbus-example-unix-fd-client.c gdbus-example-watch-name.c \ + gdbus-example-watch-proxy.c $(gdbus_exit_on_close_SOURCES) \ + $(gdbus_export_SOURCES) $(gdbus_introspection_SOURCES) \ + gdbus-message.c $(gdbus_names_SOURCES) \ + $(gdbus_non_socket_SOURCES) gdbus-overflow.c gdbus-peer.c \ + gdbus-peer-object-manager.c $(gdbus_proxy_SOURCES) \ + $(gdbus_proxy_threads_SOURCES) \ + $(gdbus_proxy_well_known_name_SOURCES) \ + $(gdbus_serialization_SOURCES) $(gdbus_test_codegen_SOURCES) \ + $(nodist_gdbus_test_codegen_SOURCES) \ + $(gdbus_test_codegen_old_SOURCES) \ + $(nodist_gdbus_test_codegen_old_SOURCES) gdbus-test-fixture.c \ + gdbus-testserver.c $(gdbus_threading_SOURCES) \ + gdbus-unix-addresses.c gio-du.c giomodule.c glistmodel.c \ + $(gmenumodel_SOURCES) $(gnotification_SOURCES) \ + gschema-compile.c gsettings.c gsubprocess.c \ + gsubprocess-testprog.c httpd.c inet-address.c io-stream.c \ + live-g-file.c memory-input-stream.c memory-output-stream.c \ + mimeapps.c monitor.c network-address.c network-monitor.c \ + permission.c pollable.c proxy.c proxy-test.c readwrite.c \ + resolver.c $(resources_SOURCES) $(nodist_resources_SOURCES) \ + send-data.c simple-async-result.c simple-proxy.c \ + sleepy-stream.c socket.c socket-address.c \ + $(socket_client_SOURCES) socket-listener.c socket-server.c \ + socket-service.c srvtarget.c stream-rw_all.c task.c \ + testfilemonitor.c thumbnail-verification.c \ + $(tls_certificate_SOURCES) $(tls_interaction_SOURCES) \ + unix-fd.c unix-streams.c vfs.c volumemonitor.c win32-streams.c +DIST_SOURCES = $(am__libresourceplugin_la_SOURCES_DIST) \ + $(am__actions_SOURCES_DIST) appinfo.c appinfo-test.c \ + appmonitor.c apps.c async-close-output-stream.c \ + async-splice-output-stream.c autoptr.c basic-application.c \ + buffered-input-stream.c buffered-output-stream.c cancellable.c \ + contenttype.c contexts.c converter-stream.c credentials.c \ + data-input-stream.c data-output-stream.c \ + $(am__dbus_appinfo_SOURCES_DIST) dbus-launch.c defaultvalue.c \ + desktop-app-info.c echo-server.c file.c fileattributematcher.c \ + filter-cat.c filter-streams.c g-file.c g-file-info.c g-icon.c \ + $(am__gapplication_SOURCES_DIST) \ + gapplication-example-actions.c gapplication-example-cmdline.c \ + gapplication-example-cmdline2.c \ + gapplication-example-cmdline3.c \ + gapplication-example-dbushooks.c gapplication-example-open.c \ + gdbus-addresses.c $(am__gdbus_auth_SOURCES_DIST) \ + $(am__gdbus_bz627724_SOURCES_DIST) \ + $(am__gdbus_close_pending_SOURCES_DIST) \ + $(am__gdbus_connection_SOURCES_DIST) \ + $(am__gdbus_connection_flush_SOURCES_DIST) \ + gdbus-connection-flush-helper.c \ + $(am__gdbus_connection_loss_SOURCES_DIST) \ + $(am__gdbus_connection_slow_SOURCES_DIST) \ + $(gdbus_daemon_SOURCES) $(am__gdbus_error_SOURCES_DIST) \ + gdbus-example-export.c gdbus-example-objectmanager-client.c \ + gdbus-example-objectmanager-server.c gdbus-example-own-name.c \ + gdbus-example-peer.c gdbus-example-proxy-subclass.c \ + gdbus-example-server.c gdbus-example-subtree.c \ + gdbus-example-unix-fd-client.c gdbus-example-watch-name.c \ + gdbus-example-watch-proxy.c \ + $(am__gdbus_exit_on_close_SOURCES_DIST) \ + $(am__gdbus_export_SOURCES_DIST) \ + $(am__gdbus_introspection_SOURCES_DIST) gdbus-message.c \ + $(am__gdbus_names_SOURCES_DIST) \ + $(am__gdbus_non_socket_SOURCES_DIST) gdbus-overflow.c \ + gdbus-peer.c gdbus-peer-object-manager.c \ + $(am__gdbus_proxy_SOURCES_DIST) \ + $(am__gdbus_proxy_threads_SOURCES_DIST) \ + $(am__gdbus_proxy_well_known_name_SOURCES_DIST) \ + $(am__gdbus_serialization_SOURCES_DIST) \ + $(am__gdbus_test_codegen_SOURCES_DIST) \ + $(am__gdbus_test_codegen_old_SOURCES_DIST) \ + gdbus-test-fixture.c gdbus-testserver.c \ + $(am__gdbus_threading_SOURCES_DIST) gdbus-unix-addresses.c \ + gio-du.c giomodule.c glistmodel.c \ + $(am__gmenumodel_SOURCES_DIST) \ + $(am__gnotification_SOURCES_DIST) gschema-compile.c \ + gsettings.c gsubprocess.c gsubprocess-testprog.c httpd.c \ + inet-address.c io-stream.c live-g-file.c memory-input-stream.c \ + memory-output-stream.c mimeapps.c monitor.c network-address.c \ + network-monitor.c permission.c pollable.c proxy.c proxy-test.c \ + readwrite.c resolver.c $(am__resources_SOURCES_DIST) \ + send-data.c simple-async-result.c simple-proxy.c \ + sleepy-stream.c socket.c socket-address.c \ + $(socket_client_SOURCES) socket-listener.c socket-server.c \ + socket-service.c srvtarget.c stream-rw_all.c task.c \ + testfilemonitor.c thumbnail-verification.c \ + $(tls_certificate_SOURCES) $(tls_interaction_SOURCES) \ + unix-fd.c unix-streams.c vfs.c volumemonitor.c win32-streams.c +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + check recheck distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/glib-tap.mk $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = -DG_LOG_DOMAIN=\"GLib-GIO\" -DTEST_SERVICES=\""$(abs_top_builddir)/gio/tests/services"\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +TESTS_ENVIRONMENT = \ + G_TEST_SRCDIR="$(abs_srcdir)" \ + G_TEST_BUILDDIR="$(abs_builddir)" \ + G_DEBUG=gc-friendly \ + MALLOC_CHECK_=2 \ + MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) + +LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/tap-driver.sh +LOG_COMPILER = $(top_srcdir)/tap-test +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = $(am__append_23) giotypefuncs.c +BUILT_EXTRA_DIST = +CLEANFILES = *.log *.trs $(am__append_13) $(am__append_19) \ + $(am__append_25) $(am__append_34) xgen-giosrc.c xgen-gio \ + giotypefuncs.c +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \ + socket-common.c $(am__append_20) $(am__append_24) \ + $(am__append_33) +installed_test_LTLIBRARIES = $(am__append_12) +installed_test_SCRIPTS = $(am__append_10) +nobase_installed_test_DATA = $(am__append_11) +noinst_LTLIBRARIES = $(am__append_1) +noinst_SCRIPTS = $(am__append_3) +noinst_DATA = $(am__append_4) +check_LTLIBRARIES = $(am__append_5) +check_SCRIPTS = $(am__append_7) +check_DATA = $(am__append_8) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +dist_uninstalled_test_data = $(addprefix \ + schema-tests/,$(schema_tests)) $(am__append_21) +test_ltlibraries = $(am__append_30) +SUBDIRS = gdbus-object-manager-example services modules +LDADD = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la \ + $(NULL) + +AM_CPPFLAGS = $(gio_INCLUDES) $(GLIB_DEBUG_FLAGS) -I$(top_builddir)/gio -I$(top_srcdir)/gio +AM_CFLAGS = $(GLIB_WARN_CFLAGS) + +# ----------------------------------------------------------------------------- +# Test programs buildable on all platforms +test_programs = appmonitor async-close-output-stream \ + async-splice-output-stream buffered-input-stream \ + buffered-output-stream cancellable contexts contenttype \ + converter-stream credentials data-input-stream \ + data-output-stream defaultvalue fileattributematcher \ + filter-streams giomodule gsubprocess g-file g-file-info g-icon \ + gdbus-addresses gdbus-message inet-address io-stream \ + memory-input-stream memory-output-stream monitor \ + network-address network-monitor permission pollable proxy-test \ + readwrite simple-async-result simple-proxy sleepy-stream \ + socket socket-listener socket-service srvtarget task \ + tls-interaction vfs volumemonitor glistmodel testfilemonitor \ + $(NULL) thumbnail-verification tls-certificate \ + $(am__append_14) $(am__append_22) $(am__append_26) \ + $(am__append_27) $(am__append_28) $(am__append_29) +uninstalled_test_programs = $(NULL) $(am__append_16) +dist_test_data = contexts.c g-icon.c $(NULL) $(thumbnail_data_files) \ + $(cert_data_files) $(am__append_17) +test_data = $(NULL) $(am__append_31) +uninstalled_test_extra_programs = gio-du echo-server filter-cat \ + gapplication-example-actions gapplication-example-cmdline \ + gapplication-example-cmdline2 gapplication-example-cmdline3 \ + gapplication-example-dbushooks gapplication-example-open \ + gdbus-example-export gdbus-example-own-name gdbus-example-peer \ + gdbus-example-proxy-subclass gdbus-example-server \ + gdbus-example-subtree gdbus-example-watch-name \ + gdbus-example-watch-proxy gsubprocess-testprog httpd proxy \ + resolver send-data socket-server $(NULL) socket-client \ + gdbus-daemon $(am__append_18) +test_extra_programs = gdbus-connection-flush-helper gdbus-testserver \ + $(NULL) $(am__append_15) +schema_tests = \ + array-default-not-in-choices.gschema.xml \ + bad-choice.gschema.xml \ + bad-key.gschema.xml \ + bad-key2.gschema.xml \ + bad-key3.gschema.xml \ + bad-key4.gschema.xml \ + bad-type.gschema.xml \ + bare-alias.gschema.xml \ + choice-alias.gschema.xml \ + choice-bad.gschema.xml \ + choice-badtype.gschema.xml \ + choice-invalid-alias.gschema.xml \ + choice-missing-value.gschema.xml \ + choice-shadowed-alias.gschema.xml \ + choice-upside-down.gschema.xml \ + choice.gschema.xml \ + choices-wrong-type.gschema.xml \ + default-in-aliases.gschema.xml \ + default-not-in-choices.gschema.xml \ + default-out-of-range.gschema.xml \ + description-xmllang.gschema.xml \ + empty-key.gschema.xml \ + enum-with-aliases.gschema.xml \ + enum-with-bad-default.gschema.xml \ + enum-with-chained-alias.gschema.xml \ + enum-with-choice.gschema.xml \ + enum-with-invalid-alias.gschema.xml \ + enum-with-repeated-alias.gschema.xml \ + enum-with-repeated-nick.gschema.xml \ + enum-with-repeated-value.gschema.xml \ + enum-with-shadow-alias.gschema.xml \ + enum.gschema.xml \ + extend-and-shadow-indirect.gschema.xml \ + extend-and-shadow.gschema.xml \ + extend-missing.gschema.xml \ + extend-nonlist.gschema.xml \ + extend-self.gschema.xml \ + extend-wrong-list-indirect.gschema.xml \ + extend-wrong-list.gschema.xml \ + extending.gschema.xml \ + flags-aliased-default.gschema.xml \ + flags-bad-default.gschema.xml \ + flags-more-than-one-bit.gschema.xml \ + flags-with-enum-attr.gschema.xml \ + flags-with-enum-tag.gschema.xml \ + from-docs.gschema.xml \ + incomplete-list.gschema.xml \ + inherit-gettext-domain.gschema.xml \ + invalid-path.gschema.xml \ + key-in-list-indirect.gschema.xml \ + key-in-list.gschema.xml \ + list-of-missing.gschema.xml \ + missing-quotes.gschema.xml \ + no-default.gschema.xml \ + overflow.gschema.xml \ + override-missing.gschema.xml \ + override-range-error.gschema.xml \ + override-then-key.gschema.xml \ + override-twice.gschema.xml \ + override-type-error.gschema.xml \ + override.gschema.xml \ + range-badtype.gschema.xml \ + range-default-high.gschema.xml \ + range-default-low.gschema.xml \ + range-high-default.gschema.xml \ + range-low-default.gschema.xml \ + range-missing-max.gschema.xml \ + range-missing-min.gschema.xml \ + range-parse-error.gschema.xml \ + range-wrong-type.gschema.xml \ + range.gschema.xml \ + summary-xmllang.gschema.xml \ + summary-xmllang-and-attrs.gschema.xml \ + wrong-category.gschema.xml \ + $(NULL) + +thumbnail_data_files = $(addprefix thumbnails/,$(thumbnail_tests)) +thumbnail_tests = \ + bad-header.png \ + empty-key.png \ + header-and-chunk-size.png \ + header-only.png \ + huge-chunk-size.png \ + mtime-zero.png \ + no-text-data.png \ + overlong-value.png \ + uri-mismatch.png \ + valid.png \ + valid-no-size.png \ + $(NULL) + +tls_certificate_SOURCES = \ + tls-certificate.c \ + gtesttlsbackend.c \ + gtesttlsbackend.h + +cert_data_files = $(addprefix cert-tests/,$(cert_tests)) +cert_tests = \ + cert1.pem \ + cert2.pem \ + cert3.pem \ + cert-key.pem \ + cert-list.pem \ + key8.pem \ + key-cert.pem \ + key.pem \ + nothing.pem \ + $(NULL) + +socket_client_SOURCES = \ + socket-client.c \ + gtlsconsoleinteraction.c \ + gtlsconsoleinteraction.h + +nodist_gdbus_daemon_SOURCES = \ + $(top_builddir)/gio/gdbus-daemon-generated.c + +gdbus_daemon_SOURCES = \ + gdbus-daemon.c \ + $(top_srcdir)/gio/gdbusdaemon.c + +@OS_UNIX_TRUE@home_desktop_files = \ +@OS_UNIX_TRUE@ epiphany-weather-for-toronto-island-9c6a4e022b17686306243dada811d550d25eb1fb.desktop \ +@OS_UNIX_TRUE@ eog.desktop + +@OS_UNIX_TRUE@usr_desktop_files = \ +@OS_UNIX_TRUE@ baobab.desktop \ +@OS_UNIX_TRUE@ cheese.desktop \ +@OS_UNIX_TRUE@ dconf-editor.desktop \ +@OS_UNIX_TRUE@ eog.desktop \ +@OS_UNIX_TRUE@ evince-previewer.desktop \ +@OS_UNIX_TRUE@ evince.desktop \ +@OS_UNIX_TRUE@ file-roller.desktop \ +@OS_UNIX_TRUE@ gcr-prompter.desktop \ +@OS_UNIX_TRUE@ gcr-viewer.desktop \ +@OS_UNIX_TRUE@ gedit.desktop \ +@OS_UNIX_TRUE@ glade.desktop \ +@OS_UNIX_TRUE@ gnome-clocks.desktop \ +@OS_UNIX_TRUE@ gnome-contacts.desktop \ +@OS_UNIX_TRUE@ gnome-font-viewer.desktop \ +@OS_UNIX_TRUE@ gnome-music.desktop \ +@OS_UNIX_TRUE@ gnome-terminal.desktop \ +@OS_UNIX_TRUE@ gucharmap.desktop \ +@OS_UNIX_TRUE@ kde4/dolphin.desktop \ +@OS_UNIX_TRUE@ kde4/kate.desktop \ +@OS_UNIX_TRUE@ kde4/konqbrowser.desktop \ +@OS_UNIX_TRUE@ kde4/okular.desktop \ +@OS_UNIX_TRUE@ mimeinfo.cache \ +@OS_UNIX_TRUE@ nautilus-autorun-software.desktop \ +@OS_UNIX_TRUE@ nautilus-classic.desktop \ +@OS_UNIX_TRUE@ nautilus-connect-server.desktop \ +@OS_UNIX_TRUE@ nautilus.desktop \ +@OS_UNIX_TRUE@ totem.desktop \ +@OS_UNIX_TRUE@ yelp.desktop + +@OS_UNIX_TRUE@gsettings_DEPENDENCIES = test.mo +@OS_UNIX_TRUE@gsettings_CFLAGS = $(AM_CFLAGS) -DSRCDIR=\"$(abs_srcdir)\" +@OS_UNIX_TRUE@gdbus_connection_flush_SOURCES = \ +@OS_UNIX_TRUE@ gdbus-connection-flush.c \ +@OS_UNIX_TRUE@ test-io-stream.c \ +@OS_UNIX_TRUE@ test-io-stream.h \ +@OS_UNIX_TRUE@ test-pipe-unix.c \ +@OS_UNIX_TRUE@ test-pipe-unix.h + +@OS_UNIX_TRUE@gdbus_non_socket_SOURCES = \ +@OS_UNIX_TRUE@ gdbus-non-socket.c \ +@OS_UNIX_TRUE@ gdbus-tests.c \ +@OS_UNIX_TRUE@ gdbus-tests.h \ +@OS_UNIX_TRUE@ test-io-stream.c \ +@OS_UNIX_TRUE@ test-io-stream.h \ +@OS_UNIX_TRUE@ test-pipe-unix.c \ +@OS_UNIX_TRUE@ test-pipe-unix.h + +@OS_UNIX_TRUE@gdbus_example_objectmanager_client_LDADD = gdbus-object-manager-example/libgdbus-example-objectmanager.la $(LDADD) +@OS_UNIX_TRUE@gdbus_example_objectmanager_server_LDADD = gdbus-object-manager-example/libgdbus-example-objectmanager.la $(LDADD) +@OS_UNIX_TRUE@gdbus_test_fixture_LDADD = gdbus-object-manager-example/libgdbus-example-objectmanager.la $(LDADD) +@OS_UNIX_TRUE@gdbus_peer_LDADD = gdbus-object-manager-example/libgdbus-example-objectmanager.la $(LDADD) + +# ----------------------------------------------------------------------------- +# Test programs that need to bring up a session bus (requires dbus-daemon) +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_sessionbus_sources = gdbus-sessionbus.c gdbus-sessionbus.h gdbus-tests.h gdbus-tests.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_proxy_threads_CFLAGS = $(AM_CFLAGS) $(DBUS1_CFLAGS) +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@actions_SOURCES = $(gdbus_sessionbus_sources) actions.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@dbus_appinfo_SOURCES = $(gdbus_sessionbus_sources) dbus-appinfo.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gapplication_SOURCES = $(gdbus_sessionbus_sources) gapplication.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_auth_SOURCES = $(gdbus_sessionbus_sources) gdbus-auth.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_bz627724_SOURCES = $(gdbus_sessionbus_sources) gdbus-bz627724.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_close_pending_SOURCES = $(gdbus_sessionbus_sources) gdbus-close-pending.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_connection_SOURCES = $(gdbus_sessionbus_sources) gdbus-connection.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_connection_loss_SOURCES = $(gdbus_sessionbus_sources) gdbus-connection-loss.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_connection_slow_SOURCES = $(gdbus_sessionbus_sources) gdbus-connection-slow.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_error_SOURCES = $(gdbus_sessionbus_sources) gdbus-error.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_exit_on_close_SOURCES = $(gdbus_sessionbus_sources) gdbus-exit-on-close.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_export_SOURCES = $(gdbus_sessionbus_sources) gdbus-export.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_introspection_SOURCES = $(gdbus_sessionbus_sources) gdbus-introspection.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_names_SOURCES = $(gdbus_sessionbus_sources) gdbus-names.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_proxy_SOURCES = $(gdbus_sessionbus_sources) gdbus-proxy.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_proxy_threads_SOURCES = $(gdbus_sessionbus_sources) gdbus-proxy-threads.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_proxy_well_known_name_SOURCES = $(gdbus_sessionbus_sources) gdbus-proxy-well-known-name.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_test_codegen_SOURCES = $(gdbus_sessionbus_sources) gdbus-test-codegen.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@nodist_gdbus_test_codegen_SOURCES = gdbus-test-codegen-generated.c gdbus-test-codegen-generated.h +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_test_codegen_old_SOURCES = $(gdbus_sessionbus_sources) gdbus-test-codegen.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@nodist_gdbus_test_codegen_old_SOURCES = gdbus-test-codegen-generated.c gdbus-test-codegen-generated.h +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_test_codegen_old_CPPFLAGS = $(AM_CPPFLAGS) -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_36 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_36 +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus_threading_SOURCES = $(gdbus_sessionbus_sources) gdbus-threading.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gmenumodel_SOURCES = $(gdbus_sessionbus_sources) gmenumodel.c +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gnotification_SOURCES = $(gdbus_sessionbus_sources) gnotification.c gnotification-server.h gnotification-server.c +tls_interaction_SOURCES = tls-interaction.c gtesttlsbackend.c gtesttlsbackend.h +@PLATFORM_WIN32_TRUE@no_undefined = -no-undefined +@HAVE_DBUS1_TRUE@gdbus_serialization_CFLAGS = $(AM_CFLAGS) $(DBUS1_CFLAGS) +@HAVE_DBUS1_TRUE@gdbus_serialization_LDADD = $(LDADD) $(DBUS1_LIBS) +@HAVE_DBUS1_TRUE@gdbus_serialization_SOURCES = \ +@HAVE_DBUS1_TRUE@ gdbus-serialization.c \ +@HAVE_DBUS1_TRUE@ gdbus-tests.h \ +@HAVE_DBUS1_TRUE@ gdbus-tests.c + +@CROSS_COMPILING_FALSE@resources_SOURCES = resources.c +@CROSS_COMPILING_FALSE@nodist_resources_SOURCES = test_resources.c test_resources2.c test_resources2.h +@CROSS_COMPILING_FALSE@resources_DEPENDENCIES = test.gresource +@CROSS_COMPILING_FALSE@libresourceplugin_la_SOURCES = resourceplugin.c plugin_resources.c +@CROSS_COMPILING_FALSE@libresourceplugin_la_LDFLAGS = -avoid-version \ +@CROSS_COMPILING_FALSE@ -module -export-dynamic $(no_undefined) \ +@CROSS_COMPILING_FALSE@ $(am__append_32) +@CROSS_COMPILING_FALSE@libresourceplugin_la_LIBADD = $(LDADD) +@CROSS_COMPILING_FALSE@glib_compile_resources = $(top_builddir)/gio/glib-compile-resources +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib-tap.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gio/tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gio/tests/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib-tap.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libresourceplugin.la: $(libresourceplugin_la_OBJECTS) $(libresourceplugin_la_DEPENDENCIES) $(EXTRA_libresourceplugin_la_DEPENDENCIES) + $(AM_V_CCLD)$(libresourceplugin_la_LINK) $(am_libresourceplugin_la_rpath) $(libresourceplugin_la_OBJECTS) $(libresourceplugin_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +actions$(EXEEXT): $(actions_OBJECTS) $(actions_DEPENDENCIES) $(EXTRA_actions_DEPENDENCIES) + @rm -f actions$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(actions_OBJECTS) $(actions_LDADD) $(LIBS) + +appinfo$(EXEEXT): $(appinfo_OBJECTS) $(appinfo_DEPENDENCIES) $(EXTRA_appinfo_DEPENDENCIES) + @rm -f appinfo$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(appinfo_OBJECTS) $(appinfo_LDADD) $(LIBS) + +appinfo-test$(EXEEXT): $(appinfo_test_OBJECTS) $(appinfo_test_DEPENDENCIES) $(EXTRA_appinfo_test_DEPENDENCIES) + @rm -f appinfo-test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(appinfo_test_OBJECTS) $(appinfo_test_LDADD) $(LIBS) + +appmonitor$(EXEEXT): $(appmonitor_OBJECTS) $(appmonitor_DEPENDENCIES) $(EXTRA_appmonitor_DEPENDENCIES) + @rm -f appmonitor$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(appmonitor_OBJECTS) $(appmonitor_LDADD) $(LIBS) + +apps$(EXEEXT): $(apps_OBJECTS) $(apps_DEPENDENCIES) $(EXTRA_apps_DEPENDENCIES) + @rm -f apps$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(apps_OBJECTS) $(apps_LDADD) $(LIBS) + +async-close-output-stream$(EXEEXT): $(async_close_output_stream_OBJECTS) $(async_close_output_stream_DEPENDENCIES) $(EXTRA_async_close_output_stream_DEPENDENCIES) + @rm -f async-close-output-stream$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(async_close_output_stream_OBJECTS) $(async_close_output_stream_LDADD) $(LIBS) + +async-splice-output-stream$(EXEEXT): $(async_splice_output_stream_OBJECTS) $(async_splice_output_stream_DEPENDENCIES) $(EXTRA_async_splice_output_stream_DEPENDENCIES) + @rm -f async-splice-output-stream$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(async_splice_output_stream_OBJECTS) $(async_splice_output_stream_LDADD) $(LIBS) + +autoptr$(EXEEXT): $(autoptr_OBJECTS) $(autoptr_DEPENDENCIES) $(EXTRA_autoptr_DEPENDENCIES) + @rm -f autoptr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(autoptr_OBJECTS) $(autoptr_LDADD) $(LIBS) + +basic-application$(EXEEXT): $(basic_application_OBJECTS) $(basic_application_DEPENDENCIES) $(EXTRA_basic_application_DEPENDENCIES) + @rm -f basic-application$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(basic_application_OBJECTS) $(basic_application_LDADD) $(LIBS) + +buffered-input-stream$(EXEEXT): $(buffered_input_stream_OBJECTS) $(buffered_input_stream_DEPENDENCIES) $(EXTRA_buffered_input_stream_DEPENDENCIES) + @rm -f buffered-input-stream$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(buffered_input_stream_OBJECTS) $(buffered_input_stream_LDADD) $(LIBS) + +buffered-output-stream$(EXEEXT): $(buffered_output_stream_OBJECTS) $(buffered_output_stream_DEPENDENCIES) $(EXTRA_buffered_output_stream_DEPENDENCIES) + @rm -f buffered-output-stream$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(buffered_output_stream_OBJECTS) $(buffered_output_stream_LDADD) $(LIBS) + +cancellable$(EXEEXT): $(cancellable_OBJECTS) $(cancellable_DEPENDENCIES) $(EXTRA_cancellable_DEPENDENCIES) + @rm -f cancellable$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(cancellable_OBJECTS) $(cancellable_LDADD) $(LIBS) + +contenttype$(EXEEXT): $(contenttype_OBJECTS) $(contenttype_DEPENDENCIES) $(EXTRA_contenttype_DEPENDENCIES) + @rm -f contenttype$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(contenttype_OBJECTS) $(contenttype_LDADD) $(LIBS) + +contexts$(EXEEXT): $(contexts_OBJECTS) $(contexts_DEPENDENCIES) $(EXTRA_contexts_DEPENDENCIES) + @rm -f contexts$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(contexts_OBJECTS) $(contexts_LDADD) $(LIBS) + +converter-stream$(EXEEXT): $(converter_stream_OBJECTS) $(converter_stream_DEPENDENCIES) $(EXTRA_converter_stream_DEPENDENCIES) + @rm -f converter-stream$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(converter_stream_OBJECTS) $(converter_stream_LDADD) $(LIBS) + +credentials$(EXEEXT): $(credentials_OBJECTS) $(credentials_DEPENDENCIES) $(EXTRA_credentials_DEPENDENCIES) + @rm -f credentials$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(credentials_OBJECTS) $(credentials_LDADD) $(LIBS) + +data-input-stream$(EXEEXT): $(data_input_stream_OBJECTS) $(data_input_stream_DEPENDENCIES) $(EXTRA_data_input_stream_DEPENDENCIES) + @rm -f data-input-stream$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(data_input_stream_OBJECTS) $(data_input_stream_LDADD) $(LIBS) + +data-output-stream$(EXEEXT): $(data_output_stream_OBJECTS) $(data_output_stream_DEPENDENCIES) $(EXTRA_data_output_stream_DEPENDENCIES) + @rm -f data-output-stream$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(data_output_stream_OBJECTS) $(data_output_stream_LDADD) $(LIBS) + +dbus-appinfo$(EXEEXT): $(dbus_appinfo_OBJECTS) $(dbus_appinfo_DEPENDENCIES) $(EXTRA_dbus_appinfo_DEPENDENCIES) + @rm -f dbus-appinfo$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dbus_appinfo_OBJECTS) $(dbus_appinfo_LDADD) $(LIBS) + +dbus-launch$(EXEEXT): $(dbus_launch_OBJECTS) $(dbus_launch_DEPENDENCIES) $(EXTRA_dbus_launch_DEPENDENCIES) + @rm -f dbus-launch$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dbus_launch_OBJECTS) $(dbus_launch_LDADD) $(LIBS) + +defaultvalue$(EXEEXT): $(defaultvalue_OBJECTS) $(defaultvalue_DEPENDENCIES) $(EXTRA_defaultvalue_DEPENDENCIES) + @rm -f defaultvalue$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(defaultvalue_OBJECTS) $(defaultvalue_LDADD) $(LIBS) + +desktop-app-info$(EXEEXT): $(desktop_app_info_OBJECTS) $(desktop_app_info_DEPENDENCIES) $(EXTRA_desktop_app_info_DEPENDENCIES) + @rm -f desktop-app-info$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(desktop_app_info_OBJECTS) $(desktop_app_info_LDADD) $(LIBS) + +echo-server$(EXEEXT): $(echo_server_OBJECTS) $(echo_server_DEPENDENCIES) $(EXTRA_echo_server_DEPENDENCIES) + @rm -f echo-server$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(echo_server_OBJECTS) $(echo_server_LDADD) $(LIBS) + +file$(EXEEXT): $(file_OBJECTS) $(file_DEPENDENCIES) $(EXTRA_file_DEPENDENCIES) + @rm -f file$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(file_OBJECTS) $(file_LDADD) $(LIBS) + +fileattributematcher$(EXEEXT): $(fileattributematcher_OBJECTS) $(fileattributematcher_DEPENDENCIES) $(EXTRA_fileattributematcher_DEPENDENCIES) + @rm -f fileattributematcher$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fileattributematcher_OBJECTS) $(fileattributematcher_LDADD) $(LIBS) + +filter-cat$(EXEEXT): $(filter_cat_OBJECTS) $(filter_cat_DEPENDENCIES) $(EXTRA_filter_cat_DEPENDENCIES) + @rm -f filter-cat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(filter_cat_OBJECTS) $(filter_cat_LDADD) $(LIBS) + +filter-streams$(EXEEXT): $(filter_streams_OBJECTS) $(filter_streams_DEPENDENCIES) $(EXTRA_filter_streams_DEPENDENCIES) + @rm -f filter-streams$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(filter_streams_OBJECTS) $(filter_streams_LDADD) $(LIBS) + +g-file$(EXEEXT): $(g_file_OBJECTS) $(g_file_DEPENDENCIES) $(EXTRA_g_file_DEPENDENCIES) + @rm -f g-file$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(g_file_OBJECTS) $(g_file_LDADD) $(LIBS) + +g-file-info$(EXEEXT): $(g_file_info_OBJECTS) $(g_file_info_DEPENDENCIES) $(EXTRA_g_file_info_DEPENDENCIES) + @rm -f g-file-info$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(g_file_info_OBJECTS) $(g_file_info_LDADD) $(LIBS) + +g-icon$(EXEEXT): $(g_icon_OBJECTS) $(g_icon_DEPENDENCIES) $(EXTRA_g_icon_DEPENDENCIES) + @rm -f g-icon$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(g_icon_OBJECTS) $(g_icon_LDADD) $(LIBS) + +gapplication$(EXEEXT): $(gapplication_OBJECTS) $(gapplication_DEPENDENCIES) $(EXTRA_gapplication_DEPENDENCIES) + @rm -f gapplication$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gapplication_OBJECTS) $(gapplication_LDADD) $(LIBS) + +gapplication-example-actions$(EXEEXT): $(gapplication_example_actions_OBJECTS) $(gapplication_example_actions_DEPENDENCIES) $(EXTRA_gapplication_example_actions_DEPENDENCIES) + @rm -f gapplication-example-actions$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gapplication_example_actions_OBJECTS) $(gapplication_example_actions_LDADD) $(LIBS) + +gapplication-example-cmdline$(EXEEXT): $(gapplication_example_cmdline_OBJECTS) $(gapplication_example_cmdline_DEPENDENCIES) $(EXTRA_gapplication_example_cmdline_DEPENDENCIES) + @rm -f gapplication-example-cmdline$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gapplication_example_cmdline_OBJECTS) $(gapplication_example_cmdline_LDADD) $(LIBS) + +gapplication-example-cmdline2$(EXEEXT): $(gapplication_example_cmdline2_OBJECTS) $(gapplication_example_cmdline2_DEPENDENCIES) $(EXTRA_gapplication_example_cmdline2_DEPENDENCIES) + @rm -f gapplication-example-cmdline2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gapplication_example_cmdline2_OBJECTS) $(gapplication_example_cmdline2_LDADD) $(LIBS) + +gapplication-example-cmdline3$(EXEEXT): $(gapplication_example_cmdline3_OBJECTS) $(gapplication_example_cmdline3_DEPENDENCIES) $(EXTRA_gapplication_example_cmdline3_DEPENDENCIES) + @rm -f gapplication-example-cmdline3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gapplication_example_cmdline3_OBJECTS) $(gapplication_example_cmdline3_LDADD) $(LIBS) + +gapplication-example-dbushooks$(EXEEXT): $(gapplication_example_dbushooks_OBJECTS) $(gapplication_example_dbushooks_DEPENDENCIES) $(EXTRA_gapplication_example_dbushooks_DEPENDENCIES) + @rm -f gapplication-example-dbushooks$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gapplication_example_dbushooks_OBJECTS) $(gapplication_example_dbushooks_LDADD) $(LIBS) + +gapplication-example-open$(EXEEXT): $(gapplication_example_open_OBJECTS) $(gapplication_example_open_DEPENDENCIES) $(EXTRA_gapplication_example_open_DEPENDENCIES) + @rm -f gapplication-example-open$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gapplication_example_open_OBJECTS) $(gapplication_example_open_LDADD) $(LIBS) + +gdbus-addresses$(EXEEXT): $(gdbus_addresses_OBJECTS) $(gdbus_addresses_DEPENDENCIES) $(EXTRA_gdbus_addresses_DEPENDENCIES) + @rm -f gdbus-addresses$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_addresses_OBJECTS) $(gdbus_addresses_LDADD) $(LIBS) + +gdbus-auth$(EXEEXT): $(gdbus_auth_OBJECTS) $(gdbus_auth_DEPENDENCIES) $(EXTRA_gdbus_auth_DEPENDENCIES) + @rm -f gdbus-auth$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_auth_OBJECTS) $(gdbus_auth_LDADD) $(LIBS) + +gdbus-bz627724$(EXEEXT): $(gdbus_bz627724_OBJECTS) $(gdbus_bz627724_DEPENDENCIES) $(EXTRA_gdbus_bz627724_DEPENDENCIES) + @rm -f gdbus-bz627724$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_bz627724_OBJECTS) $(gdbus_bz627724_LDADD) $(LIBS) + +gdbus-close-pending$(EXEEXT): $(gdbus_close_pending_OBJECTS) $(gdbus_close_pending_DEPENDENCIES) $(EXTRA_gdbus_close_pending_DEPENDENCIES) + @rm -f gdbus-close-pending$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_close_pending_OBJECTS) $(gdbus_close_pending_LDADD) $(LIBS) + +gdbus-connection$(EXEEXT): $(gdbus_connection_OBJECTS) $(gdbus_connection_DEPENDENCIES) $(EXTRA_gdbus_connection_DEPENDENCIES) + @rm -f gdbus-connection$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_connection_OBJECTS) $(gdbus_connection_LDADD) $(LIBS) + +gdbus-connection-flush$(EXEEXT): $(gdbus_connection_flush_OBJECTS) $(gdbus_connection_flush_DEPENDENCIES) $(EXTRA_gdbus_connection_flush_DEPENDENCIES) + @rm -f gdbus-connection-flush$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_connection_flush_OBJECTS) $(gdbus_connection_flush_LDADD) $(LIBS) + +gdbus-connection-flush-helper$(EXEEXT): $(gdbus_connection_flush_helper_OBJECTS) $(gdbus_connection_flush_helper_DEPENDENCIES) $(EXTRA_gdbus_connection_flush_helper_DEPENDENCIES) + @rm -f gdbus-connection-flush-helper$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_connection_flush_helper_OBJECTS) $(gdbus_connection_flush_helper_LDADD) $(LIBS) + +gdbus-connection-loss$(EXEEXT): $(gdbus_connection_loss_OBJECTS) $(gdbus_connection_loss_DEPENDENCIES) $(EXTRA_gdbus_connection_loss_DEPENDENCIES) + @rm -f gdbus-connection-loss$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_connection_loss_OBJECTS) $(gdbus_connection_loss_LDADD) $(LIBS) + +gdbus-connection-slow$(EXEEXT): $(gdbus_connection_slow_OBJECTS) $(gdbus_connection_slow_DEPENDENCIES) $(EXTRA_gdbus_connection_slow_DEPENDENCIES) + @rm -f gdbus-connection-slow$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_connection_slow_OBJECTS) $(gdbus_connection_slow_LDADD) $(LIBS) + +gdbus-daemon$(EXEEXT): $(gdbus_daemon_OBJECTS) $(gdbus_daemon_DEPENDENCIES) $(EXTRA_gdbus_daemon_DEPENDENCIES) + @rm -f gdbus-daemon$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_daemon_OBJECTS) $(gdbus_daemon_LDADD) $(LIBS) + +gdbus-error$(EXEEXT): $(gdbus_error_OBJECTS) $(gdbus_error_DEPENDENCIES) $(EXTRA_gdbus_error_DEPENDENCIES) + @rm -f gdbus-error$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_error_OBJECTS) $(gdbus_error_LDADD) $(LIBS) + +gdbus-example-export$(EXEEXT): $(gdbus_example_export_OBJECTS) $(gdbus_example_export_DEPENDENCIES) $(EXTRA_gdbus_example_export_DEPENDENCIES) + @rm -f gdbus-example-export$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_example_export_OBJECTS) $(gdbus_example_export_LDADD) $(LIBS) + +gdbus-example-objectmanager-client$(EXEEXT): $(gdbus_example_objectmanager_client_OBJECTS) $(gdbus_example_objectmanager_client_DEPENDENCIES) $(EXTRA_gdbus_example_objectmanager_client_DEPENDENCIES) + @rm -f gdbus-example-objectmanager-client$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_example_objectmanager_client_OBJECTS) $(gdbus_example_objectmanager_client_LDADD) $(LIBS) + +gdbus-example-objectmanager-server$(EXEEXT): $(gdbus_example_objectmanager_server_OBJECTS) $(gdbus_example_objectmanager_server_DEPENDENCIES) $(EXTRA_gdbus_example_objectmanager_server_DEPENDENCIES) + @rm -f gdbus-example-objectmanager-server$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_example_objectmanager_server_OBJECTS) $(gdbus_example_objectmanager_server_LDADD) $(LIBS) + +gdbus-example-own-name$(EXEEXT): $(gdbus_example_own_name_OBJECTS) $(gdbus_example_own_name_DEPENDENCIES) $(EXTRA_gdbus_example_own_name_DEPENDENCIES) + @rm -f gdbus-example-own-name$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_example_own_name_OBJECTS) $(gdbus_example_own_name_LDADD) $(LIBS) + +gdbus-example-peer$(EXEEXT): $(gdbus_example_peer_OBJECTS) $(gdbus_example_peer_DEPENDENCIES) $(EXTRA_gdbus_example_peer_DEPENDENCIES) + @rm -f gdbus-example-peer$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_example_peer_OBJECTS) $(gdbus_example_peer_LDADD) $(LIBS) + +gdbus-example-proxy-subclass$(EXEEXT): $(gdbus_example_proxy_subclass_OBJECTS) $(gdbus_example_proxy_subclass_DEPENDENCIES) $(EXTRA_gdbus_example_proxy_subclass_DEPENDENCIES) + @rm -f gdbus-example-proxy-subclass$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_example_proxy_subclass_OBJECTS) $(gdbus_example_proxy_subclass_LDADD) $(LIBS) + +gdbus-example-server$(EXEEXT): $(gdbus_example_server_OBJECTS) $(gdbus_example_server_DEPENDENCIES) $(EXTRA_gdbus_example_server_DEPENDENCIES) + @rm -f gdbus-example-server$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_example_server_OBJECTS) $(gdbus_example_server_LDADD) $(LIBS) + +gdbus-example-subtree$(EXEEXT): $(gdbus_example_subtree_OBJECTS) $(gdbus_example_subtree_DEPENDENCIES) $(EXTRA_gdbus_example_subtree_DEPENDENCIES) + @rm -f gdbus-example-subtree$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_example_subtree_OBJECTS) $(gdbus_example_subtree_LDADD) $(LIBS) + +gdbus-example-unix-fd-client$(EXEEXT): $(gdbus_example_unix_fd_client_OBJECTS) $(gdbus_example_unix_fd_client_DEPENDENCIES) $(EXTRA_gdbus_example_unix_fd_client_DEPENDENCIES) + @rm -f gdbus-example-unix-fd-client$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_example_unix_fd_client_OBJECTS) $(gdbus_example_unix_fd_client_LDADD) $(LIBS) + +gdbus-example-watch-name$(EXEEXT): $(gdbus_example_watch_name_OBJECTS) $(gdbus_example_watch_name_DEPENDENCIES) $(EXTRA_gdbus_example_watch_name_DEPENDENCIES) + @rm -f gdbus-example-watch-name$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_example_watch_name_OBJECTS) $(gdbus_example_watch_name_LDADD) $(LIBS) + +gdbus-example-watch-proxy$(EXEEXT): $(gdbus_example_watch_proxy_OBJECTS) $(gdbus_example_watch_proxy_DEPENDENCIES) $(EXTRA_gdbus_example_watch_proxy_DEPENDENCIES) + @rm -f gdbus-example-watch-proxy$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_example_watch_proxy_OBJECTS) $(gdbus_example_watch_proxy_LDADD) $(LIBS) + +gdbus-exit-on-close$(EXEEXT): $(gdbus_exit_on_close_OBJECTS) $(gdbus_exit_on_close_DEPENDENCIES) $(EXTRA_gdbus_exit_on_close_DEPENDENCIES) + @rm -f gdbus-exit-on-close$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_exit_on_close_OBJECTS) $(gdbus_exit_on_close_LDADD) $(LIBS) + +gdbus-export$(EXEEXT): $(gdbus_export_OBJECTS) $(gdbus_export_DEPENDENCIES) $(EXTRA_gdbus_export_DEPENDENCIES) + @rm -f gdbus-export$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_export_OBJECTS) $(gdbus_export_LDADD) $(LIBS) + +gdbus-introspection$(EXEEXT): $(gdbus_introspection_OBJECTS) $(gdbus_introspection_DEPENDENCIES) $(EXTRA_gdbus_introspection_DEPENDENCIES) + @rm -f gdbus-introspection$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_introspection_OBJECTS) $(gdbus_introspection_LDADD) $(LIBS) + +gdbus-message$(EXEEXT): $(gdbus_message_OBJECTS) $(gdbus_message_DEPENDENCIES) $(EXTRA_gdbus_message_DEPENDENCIES) + @rm -f gdbus-message$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_message_OBJECTS) $(gdbus_message_LDADD) $(LIBS) + +gdbus-names$(EXEEXT): $(gdbus_names_OBJECTS) $(gdbus_names_DEPENDENCIES) $(EXTRA_gdbus_names_DEPENDENCIES) + @rm -f gdbus-names$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_names_OBJECTS) $(gdbus_names_LDADD) $(LIBS) + +gdbus-non-socket$(EXEEXT): $(gdbus_non_socket_OBJECTS) $(gdbus_non_socket_DEPENDENCIES) $(EXTRA_gdbus_non_socket_DEPENDENCIES) + @rm -f gdbus-non-socket$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_non_socket_OBJECTS) $(gdbus_non_socket_LDADD) $(LIBS) + +gdbus-overflow$(EXEEXT): $(gdbus_overflow_OBJECTS) $(gdbus_overflow_DEPENDENCIES) $(EXTRA_gdbus_overflow_DEPENDENCIES) + @rm -f gdbus-overflow$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_overflow_OBJECTS) $(gdbus_overflow_LDADD) $(LIBS) + +gdbus-peer$(EXEEXT): $(gdbus_peer_OBJECTS) $(gdbus_peer_DEPENDENCIES) $(EXTRA_gdbus_peer_DEPENDENCIES) + @rm -f gdbus-peer$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_peer_OBJECTS) $(gdbus_peer_LDADD) $(LIBS) + +gdbus-peer-object-manager$(EXEEXT): $(gdbus_peer_object_manager_OBJECTS) $(gdbus_peer_object_manager_DEPENDENCIES) $(EXTRA_gdbus_peer_object_manager_DEPENDENCIES) + @rm -f gdbus-peer-object-manager$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_peer_object_manager_OBJECTS) $(gdbus_peer_object_manager_LDADD) $(LIBS) + +gdbus-proxy$(EXEEXT): $(gdbus_proxy_OBJECTS) $(gdbus_proxy_DEPENDENCIES) $(EXTRA_gdbus_proxy_DEPENDENCIES) + @rm -f gdbus-proxy$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_proxy_OBJECTS) $(gdbus_proxy_LDADD) $(LIBS) + +gdbus-proxy-threads$(EXEEXT): $(gdbus_proxy_threads_OBJECTS) $(gdbus_proxy_threads_DEPENDENCIES) $(EXTRA_gdbus_proxy_threads_DEPENDENCIES) + @rm -f gdbus-proxy-threads$(EXEEXT) + $(AM_V_CCLD)$(gdbus_proxy_threads_LINK) $(gdbus_proxy_threads_OBJECTS) $(gdbus_proxy_threads_LDADD) $(LIBS) + +gdbus-proxy-well-known-name$(EXEEXT): $(gdbus_proxy_well_known_name_OBJECTS) $(gdbus_proxy_well_known_name_DEPENDENCIES) $(EXTRA_gdbus_proxy_well_known_name_DEPENDENCIES) + @rm -f gdbus-proxy-well-known-name$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_proxy_well_known_name_OBJECTS) $(gdbus_proxy_well_known_name_LDADD) $(LIBS) + +gdbus-serialization$(EXEEXT): $(gdbus_serialization_OBJECTS) $(gdbus_serialization_DEPENDENCIES) $(EXTRA_gdbus_serialization_DEPENDENCIES) + @rm -f gdbus-serialization$(EXEEXT) + $(AM_V_CCLD)$(gdbus_serialization_LINK) $(gdbus_serialization_OBJECTS) $(gdbus_serialization_LDADD) $(LIBS) + +gdbus-test-codegen$(EXEEXT): $(gdbus_test_codegen_OBJECTS) $(gdbus_test_codegen_DEPENDENCIES) $(EXTRA_gdbus_test_codegen_DEPENDENCIES) + @rm -f gdbus-test-codegen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_test_codegen_OBJECTS) $(gdbus_test_codegen_LDADD) $(LIBS) + +gdbus-test-codegen-old$(EXEEXT): $(gdbus_test_codegen_old_OBJECTS) $(gdbus_test_codegen_old_DEPENDENCIES) $(EXTRA_gdbus_test_codegen_old_DEPENDENCIES) + @rm -f gdbus-test-codegen-old$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_test_codegen_old_OBJECTS) $(gdbus_test_codegen_old_LDADD) $(LIBS) + +gdbus-test-fixture$(EXEEXT): $(gdbus_test_fixture_OBJECTS) $(gdbus_test_fixture_DEPENDENCIES) $(EXTRA_gdbus_test_fixture_DEPENDENCIES) + @rm -f gdbus-test-fixture$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_test_fixture_OBJECTS) $(gdbus_test_fixture_LDADD) $(LIBS) + +gdbus-testserver$(EXEEXT): $(gdbus_testserver_OBJECTS) $(gdbus_testserver_DEPENDENCIES) $(EXTRA_gdbus_testserver_DEPENDENCIES) + @rm -f gdbus-testserver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_testserver_OBJECTS) $(gdbus_testserver_LDADD) $(LIBS) + +gdbus-threading$(EXEEXT): $(gdbus_threading_OBJECTS) $(gdbus_threading_DEPENDENCIES) $(EXTRA_gdbus_threading_DEPENDENCIES) + @rm -f gdbus-threading$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_threading_OBJECTS) $(gdbus_threading_LDADD) $(LIBS) + +gdbus-unix-addresses$(EXEEXT): $(gdbus_unix_addresses_OBJECTS) $(gdbus_unix_addresses_DEPENDENCIES) $(EXTRA_gdbus_unix_addresses_DEPENDENCIES) + @rm -f gdbus-unix-addresses$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdbus_unix_addresses_OBJECTS) $(gdbus_unix_addresses_LDADD) $(LIBS) + +gio-du$(EXEEXT): $(gio_du_OBJECTS) $(gio_du_DEPENDENCIES) $(EXTRA_gio_du_DEPENDENCIES) + @rm -f gio-du$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gio_du_OBJECTS) $(gio_du_LDADD) $(LIBS) + +giomodule$(EXEEXT): $(giomodule_OBJECTS) $(giomodule_DEPENDENCIES) $(EXTRA_giomodule_DEPENDENCIES) + @rm -f giomodule$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(giomodule_OBJECTS) $(giomodule_LDADD) $(LIBS) + +glistmodel$(EXEEXT): $(glistmodel_OBJECTS) $(glistmodel_DEPENDENCIES) $(EXTRA_glistmodel_DEPENDENCIES) + @rm -f glistmodel$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(glistmodel_OBJECTS) $(glistmodel_LDADD) $(LIBS) + +gmenumodel$(EXEEXT): $(gmenumodel_OBJECTS) $(gmenumodel_DEPENDENCIES) $(EXTRA_gmenumodel_DEPENDENCIES) + @rm -f gmenumodel$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gmenumodel_OBJECTS) $(gmenumodel_LDADD) $(LIBS) + +gnotification$(EXEEXT): $(gnotification_OBJECTS) $(gnotification_DEPENDENCIES) $(EXTRA_gnotification_DEPENDENCIES) + @rm -f gnotification$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gnotification_OBJECTS) $(gnotification_LDADD) $(LIBS) + +gschema-compile$(EXEEXT): $(gschema_compile_OBJECTS) $(gschema_compile_DEPENDENCIES) $(EXTRA_gschema_compile_DEPENDENCIES) + @rm -f gschema-compile$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gschema_compile_OBJECTS) $(gschema_compile_LDADD) $(LIBS) + +gsettings$(EXEEXT): $(gsettings_OBJECTS) $(gsettings_DEPENDENCIES) $(EXTRA_gsettings_DEPENDENCIES) + @rm -f gsettings$(EXEEXT) + $(AM_V_CCLD)$(gsettings_LINK) $(gsettings_OBJECTS) $(gsettings_LDADD) $(LIBS) + +gsubprocess$(EXEEXT): $(gsubprocess_OBJECTS) $(gsubprocess_DEPENDENCIES) $(EXTRA_gsubprocess_DEPENDENCIES) + @rm -f gsubprocess$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gsubprocess_OBJECTS) $(gsubprocess_LDADD) $(LIBS) + +gsubprocess-testprog$(EXEEXT): $(gsubprocess_testprog_OBJECTS) $(gsubprocess_testprog_DEPENDENCIES) $(EXTRA_gsubprocess_testprog_DEPENDENCIES) + @rm -f gsubprocess-testprog$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gsubprocess_testprog_OBJECTS) $(gsubprocess_testprog_LDADD) $(LIBS) + +httpd$(EXEEXT): $(httpd_OBJECTS) $(httpd_DEPENDENCIES) $(EXTRA_httpd_DEPENDENCIES) + @rm -f httpd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(httpd_OBJECTS) $(httpd_LDADD) $(LIBS) + +inet-address$(EXEEXT): $(inet_address_OBJECTS) $(inet_address_DEPENDENCIES) $(EXTRA_inet_address_DEPENDENCIES) + @rm -f inet-address$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(inet_address_OBJECTS) $(inet_address_LDADD) $(LIBS) + +io-stream$(EXEEXT): $(io_stream_OBJECTS) $(io_stream_DEPENDENCIES) $(EXTRA_io_stream_DEPENDENCIES) + @rm -f io-stream$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(io_stream_OBJECTS) $(io_stream_LDADD) $(LIBS) + +live-g-file$(EXEEXT): $(live_g_file_OBJECTS) $(live_g_file_DEPENDENCIES) $(EXTRA_live_g_file_DEPENDENCIES) + @rm -f live-g-file$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(live_g_file_OBJECTS) $(live_g_file_LDADD) $(LIBS) + +memory-input-stream$(EXEEXT): $(memory_input_stream_OBJECTS) $(memory_input_stream_DEPENDENCIES) $(EXTRA_memory_input_stream_DEPENDENCIES) + @rm -f memory-input-stream$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(memory_input_stream_OBJECTS) $(memory_input_stream_LDADD) $(LIBS) + +memory-output-stream$(EXEEXT): $(memory_output_stream_OBJECTS) $(memory_output_stream_DEPENDENCIES) $(EXTRA_memory_output_stream_DEPENDENCIES) + @rm -f memory-output-stream$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(memory_output_stream_OBJECTS) $(memory_output_stream_LDADD) $(LIBS) + +mimeapps$(EXEEXT): $(mimeapps_OBJECTS) $(mimeapps_DEPENDENCIES) $(EXTRA_mimeapps_DEPENDENCIES) + @rm -f mimeapps$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(mimeapps_OBJECTS) $(mimeapps_LDADD) $(LIBS) + +monitor$(EXEEXT): $(monitor_OBJECTS) $(monitor_DEPENDENCIES) $(EXTRA_monitor_DEPENDENCIES) + @rm -f monitor$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(monitor_OBJECTS) $(monitor_LDADD) $(LIBS) + +network-address$(EXEEXT): $(network_address_OBJECTS) $(network_address_DEPENDENCIES) $(EXTRA_network_address_DEPENDENCIES) + @rm -f network-address$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(network_address_OBJECTS) $(network_address_LDADD) $(LIBS) + +network-monitor$(EXEEXT): $(network_monitor_OBJECTS) $(network_monitor_DEPENDENCIES) $(EXTRA_network_monitor_DEPENDENCIES) + @rm -f network-monitor$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(network_monitor_OBJECTS) $(network_monitor_LDADD) $(LIBS) + +permission$(EXEEXT): $(permission_OBJECTS) $(permission_DEPENDENCIES) $(EXTRA_permission_DEPENDENCIES) + @rm -f permission$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(permission_OBJECTS) $(permission_LDADD) $(LIBS) + +pollable$(EXEEXT): $(pollable_OBJECTS) $(pollable_DEPENDENCIES) $(EXTRA_pollable_DEPENDENCIES) + @rm -f pollable$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(pollable_OBJECTS) $(pollable_LDADD) $(LIBS) + +proxy$(EXEEXT): $(proxy_OBJECTS) $(proxy_DEPENDENCIES) $(EXTRA_proxy_DEPENDENCIES) + @rm -f proxy$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(proxy_OBJECTS) $(proxy_LDADD) $(LIBS) + +proxy-test$(EXEEXT): $(proxy_test_OBJECTS) $(proxy_test_DEPENDENCIES) $(EXTRA_proxy_test_DEPENDENCIES) + @rm -f proxy-test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(proxy_test_OBJECTS) $(proxy_test_LDADD) $(LIBS) + +readwrite$(EXEEXT): $(readwrite_OBJECTS) $(readwrite_DEPENDENCIES) $(EXTRA_readwrite_DEPENDENCIES) + @rm -f readwrite$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(readwrite_OBJECTS) $(readwrite_LDADD) $(LIBS) + +resolver$(EXEEXT): $(resolver_OBJECTS) $(resolver_DEPENDENCIES) $(EXTRA_resolver_DEPENDENCIES) + @rm -f resolver$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(resolver_OBJECTS) $(resolver_LDADD) $(LIBS) + +resources$(EXEEXT): $(resources_OBJECTS) $(resources_DEPENDENCIES) $(EXTRA_resources_DEPENDENCIES) + @rm -f resources$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(resources_OBJECTS) $(resources_LDADD) $(LIBS) + +send-data$(EXEEXT): $(send_data_OBJECTS) $(send_data_DEPENDENCIES) $(EXTRA_send_data_DEPENDENCIES) + @rm -f send-data$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(send_data_OBJECTS) $(send_data_LDADD) $(LIBS) + +simple-async-result$(EXEEXT): $(simple_async_result_OBJECTS) $(simple_async_result_DEPENDENCIES) $(EXTRA_simple_async_result_DEPENDENCIES) + @rm -f simple-async-result$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(simple_async_result_OBJECTS) $(simple_async_result_LDADD) $(LIBS) + +simple-proxy$(EXEEXT): $(simple_proxy_OBJECTS) $(simple_proxy_DEPENDENCIES) $(EXTRA_simple_proxy_DEPENDENCIES) + @rm -f simple-proxy$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(simple_proxy_OBJECTS) $(simple_proxy_LDADD) $(LIBS) + +sleepy-stream$(EXEEXT): $(sleepy_stream_OBJECTS) $(sleepy_stream_DEPENDENCIES) $(EXTRA_sleepy_stream_DEPENDENCIES) + @rm -f sleepy-stream$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sleepy_stream_OBJECTS) $(sleepy_stream_LDADD) $(LIBS) + +socket$(EXEEXT): $(socket_OBJECTS) $(socket_DEPENDENCIES) $(EXTRA_socket_DEPENDENCIES) + @rm -f socket$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(socket_OBJECTS) $(socket_LDADD) $(LIBS) + +socket-address$(EXEEXT): $(socket_address_OBJECTS) $(socket_address_DEPENDENCIES) $(EXTRA_socket_address_DEPENDENCIES) + @rm -f socket-address$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(socket_address_OBJECTS) $(socket_address_LDADD) $(LIBS) + +socket-client$(EXEEXT): $(socket_client_OBJECTS) $(socket_client_DEPENDENCIES) $(EXTRA_socket_client_DEPENDENCIES) + @rm -f socket-client$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(socket_client_OBJECTS) $(socket_client_LDADD) $(LIBS) + +socket-listener$(EXEEXT): $(socket_listener_OBJECTS) $(socket_listener_DEPENDENCIES) $(EXTRA_socket_listener_DEPENDENCIES) + @rm -f socket-listener$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(socket_listener_OBJECTS) $(socket_listener_LDADD) $(LIBS) + +socket-server$(EXEEXT): $(socket_server_OBJECTS) $(socket_server_DEPENDENCIES) $(EXTRA_socket_server_DEPENDENCIES) + @rm -f socket-server$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(socket_server_OBJECTS) $(socket_server_LDADD) $(LIBS) + +socket-service$(EXEEXT): $(socket_service_OBJECTS) $(socket_service_DEPENDENCIES) $(EXTRA_socket_service_DEPENDENCIES) + @rm -f socket-service$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(socket_service_OBJECTS) $(socket_service_LDADD) $(LIBS) + +srvtarget$(EXEEXT): $(srvtarget_OBJECTS) $(srvtarget_DEPENDENCIES) $(EXTRA_srvtarget_DEPENDENCIES) + @rm -f srvtarget$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(srvtarget_OBJECTS) $(srvtarget_LDADD) $(LIBS) + +stream-rw_all$(EXEEXT): $(stream_rw_all_OBJECTS) $(stream_rw_all_DEPENDENCIES) $(EXTRA_stream_rw_all_DEPENDENCIES) + @rm -f stream-rw_all$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(stream_rw_all_OBJECTS) $(stream_rw_all_LDADD) $(LIBS) + +task$(EXEEXT): $(task_OBJECTS) $(task_DEPENDENCIES) $(EXTRA_task_DEPENDENCIES) + @rm -f task$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(task_OBJECTS) $(task_LDADD) $(LIBS) + +testfilemonitor$(EXEEXT): $(testfilemonitor_OBJECTS) $(testfilemonitor_DEPENDENCIES) $(EXTRA_testfilemonitor_DEPENDENCIES) + @rm -f testfilemonitor$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(testfilemonitor_OBJECTS) $(testfilemonitor_LDADD) $(LIBS) + +thumbnail-verification$(EXEEXT): $(thumbnail_verification_OBJECTS) $(thumbnail_verification_DEPENDENCIES) $(EXTRA_thumbnail_verification_DEPENDENCIES) + @rm -f thumbnail-verification$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(thumbnail_verification_OBJECTS) $(thumbnail_verification_LDADD) $(LIBS) + +tls-certificate$(EXEEXT): $(tls_certificate_OBJECTS) $(tls_certificate_DEPENDENCIES) $(EXTRA_tls_certificate_DEPENDENCIES) + @rm -f tls-certificate$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tls_certificate_OBJECTS) $(tls_certificate_LDADD) $(LIBS) + +tls-interaction$(EXEEXT): $(tls_interaction_OBJECTS) $(tls_interaction_DEPENDENCIES) $(EXTRA_tls_interaction_DEPENDENCIES) + @rm -f tls-interaction$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tls_interaction_OBJECTS) $(tls_interaction_LDADD) $(LIBS) + +unix-fd$(EXEEXT): $(unix_fd_OBJECTS) $(unix_fd_DEPENDENCIES) $(EXTRA_unix_fd_DEPENDENCIES) + @rm -f unix-fd$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(unix_fd_OBJECTS) $(unix_fd_LDADD) $(LIBS) + +unix-streams$(EXEEXT): $(unix_streams_OBJECTS) $(unix_streams_DEPENDENCIES) $(EXTRA_unix_streams_DEPENDENCIES) + @rm -f unix-streams$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(unix_streams_OBJECTS) $(unix_streams_LDADD) $(LIBS) + +vfs$(EXEEXT): $(vfs_OBJECTS) $(vfs_DEPENDENCIES) $(EXTRA_vfs_DEPENDENCIES) + @rm -f vfs$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(vfs_OBJECTS) $(vfs_LDADD) $(LIBS) + +volumemonitor$(EXEEXT): $(volumemonitor_OBJECTS) $(volumemonitor_DEPENDENCIES) $(EXTRA_volumemonitor_DEPENDENCIES) + @rm -f volumemonitor$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(volumemonitor_OBJECTS) $(volumemonitor_LDADD) $(LIBS) + +win32-streams$(EXEEXT): $(win32_streams_OBJECTS) $(win32_streams_DEPENDENCIES) $(EXTRA_win32_streams_DEPENDENCIES) + @rm -f win32-streams$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(win32_streams_OBJECTS) $(win32_streams_LDADD) $(LIBS) +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/actions.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/appinfo-test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/appinfo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/appmonitor.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/apps.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/async-close-output-stream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/async-splice-output-stream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/autoptr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basic-application.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buffered-input-stream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/buffered-output-stream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cancellable.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contenttype.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/contexts.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/converter-stream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/credentials.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data-input-stream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/data-output-stream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus-appinfo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus-launch.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/defaultvalue.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/desktop-app-info.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/echo-server.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileattributematcher.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-cat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filter-streams.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/g-file-info.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/g-file.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/g-icon.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gapplication-example-actions.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gapplication-example-cmdline.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gapplication-example-cmdline2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gapplication-example-cmdline3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gapplication-example-dbushooks.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gapplication-example-open.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gapplication.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-addresses.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-auth.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-bz627724.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-close-pending.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-connection-flush-helper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-connection-flush.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-connection-loss.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-connection-slow.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-connection.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-daemon-generated.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-daemon.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-error.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-example-export.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-example-objectmanager-client.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-example-objectmanager-server.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-example-own-name.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-example-peer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-example-proxy-subclass.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-example-server.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-example-subtree.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-example-unix-fd-client.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-example-watch-name.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-example-watch-proxy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-exit-on-close.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-export.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-introspection.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-message.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-names.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-non-socket.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-overflow.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-peer-object-manager.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-peer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-proxy-well-known-name.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-proxy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-sessionbus.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-test-codegen-generated.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-test-codegen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-test-fixture.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-tests.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-testserver.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-threading.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-unix-addresses.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus_proxy_threads-gdbus-proxy-threads.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus_proxy_threads-gdbus-sessionbus.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus_proxy_threads-gdbus-tests.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus_serialization-gdbus-serialization.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus_serialization-gdbus-tests.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus_test_codegen_old-gdbus-sessionbus.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus_test_codegen_old-gdbus-test-codegen-generated.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus_test_codegen_old-gdbus-test-codegen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus_test_codegen_old-gdbus-tests.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbusdaemon.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gio-du.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/giomodule.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glistmodel.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gmenumodel.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnotification-server.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gnotification.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gschema-compile.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsettings-gsettings.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsubprocess-testprog.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gsubprocess.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtesttlsbackend.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtlsconsoleinteraction.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httpd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/inet-address.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/io-stream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/live-g-file.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory-input-stream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory-output-stream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mimeapps.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/monitor.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/network-address.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/network-monitor.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/permission.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin_resources.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pollable.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proxy-test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proxy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readwrite.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resolver.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resourceplugin.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resources.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/send-data.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple-async-result.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple-proxy.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleepy-stream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socket-address.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socket-client.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socket-listener.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socket-server.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socket-service.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socket.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srvtarget.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream-rw_all.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/task.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-io-stream.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-pipe-unix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_resources.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_resources2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testfilemonitor.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thumbnail-verification.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tls-certificate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tls-interaction.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix-fd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix-streams.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vfs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/volumemonitor.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win32-streams.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +gdbusdaemon.o: $(top_srcdir)/gio/gdbusdaemon.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gdbusdaemon.o -MD -MP -MF $(DEPDIR)/gdbusdaemon.Tpo -c -o gdbusdaemon.o `test -f '$(top_srcdir)/gio/gdbusdaemon.c' || echo '$(srcdir)/'`$(top_srcdir)/gio/gdbusdaemon.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbusdaemon.Tpo $(DEPDIR)/gdbusdaemon.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/gio/gdbusdaemon.c' object='gdbusdaemon.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gdbusdaemon.o `test -f '$(top_srcdir)/gio/gdbusdaemon.c' || echo '$(srcdir)/'`$(top_srcdir)/gio/gdbusdaemon.c + +gdbusdaemon.obj: $(top_srcdir)/gio/gdbusdaemon.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gdbusdaemon.obj -MD -MP -MF $(DEPDIR)/gdbusdaemon.Tpo -c -o gdbusdaemon.obj `if test -f '$(top_srcdir)/gio/gdbusdaemon.c'; then $(CYGPATH_W) '$(top_srcdir)/gio/gdbusdaemon.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/gio/gdbusdaemon.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbusdaemon.Tpo $(DEPDIR)/gdbusdaemon.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_srcdir)/gio/gdbusdaemon.c' object='gdbusdaemon.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gdbusdaemon.obj `if test -f '$(top_srcdir)/gio/gdbusdaemon.c'; then $(CYGPATH_W) '$(top_srcdir)/gio/gdbusdaemon.c'; else $(CYGPATH_W) '$(srcdir)/$(top_srcdir)/gio/gdbusdaemon.c'; fi` + +gdbus-daemon-generated.o: $(top_builddir)/gio/gdbus-daemon-generated.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gdbus-daemon-generated.o -MD -MP -MF $(DEPDIR)/gdbus-daemon-generated.Tpo -c -o gdbus-daemon-generated.o `test -f '$(top_builddir)/gio/gdbus-daemon-generated.c' || echo '$(srcdir)/'`$(top_builddir)/gio/gdbus-daemon-generated.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus-daemon-generated.Tpo $(DEPDIR)/gdbus-daemon-generated.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_builddir)/gio/gdbus-daemon-generated.c' object='gdbus-daemon-generated.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gdbus-daemon-generated.o `test -f '$(top_builddir)/gio/gdbus-daemon-generated.c' || echo '$(srcdir)/'`$(top_builddir)/gio/gdbus-daemon-generated.c + +gdbus-daemon-generated.obj: $(top_builddir)/gio/gdbus-daemon-generated.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gdbus-daemon-generated.obj -MD -MP -MF $(DEPDIR)/gdbus-daemon-generated.Tpo -c -o gdbus-daemon-generated.obj `if test -f '$(top_builddir)/gio/gdbus-daemon-generated.c'; then $(CYGPATH_W) '$(top_builddir)/gio/gdbus-daemon-generated.c'; else $(CYGPATH_W) '$(srcdir)/$(top_builddir)/gio/gdbus-daemon-generated.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus-daemon-generated.Tpo $(DEPDIR)/gdbus-daemon-generated.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$(top_builddir)/gio/gdbus-daemon-generated.c' object='gdbus-daemon-generated.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gdbus-daemon-generated.obj `if test -f '$(top_builddir)/gio/gdbus-daemon-generated.c'; then $(CYGPATH_W) '$(top_builddir)/gio/gdbus-daemon-generated.c'; else $(CYGPATH_W) '$(srcdir)/$(top_builddir)/gio/gdbus-daemon-generated.c'; fi` + +gdbus_proxy_threads-gdbus-sessionbus.o: gdbus-sessionbus.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_proxy_threads_CFLAGS) $(CFLAGS) -MT gdbus_proxy_threads-gdbus-sessionbus.o -MD -MP -MF $(DEPDIR)/gdbus_proxy_threads-gdbus-sessionbus.Tpo -c -o gdbus_proxy_threads-gdbus-sessionbus.o `test -f 'gdbus-sessionbus.c' || echo '$(srcdir)/'`gdbus-sessionbus.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_proxy_threads-gdbus-sessionbus.Tpo $(DEPDIR)/gdbus_proxy_threads-gdbus-sessionbus.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-sessionbus.c' object='gdbus_proxy_threads-gdbus-sessionbus.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_proxy_threads_CFLAGS) $(CFLAGS) -c -o gdbus_proxy_threads-gdbus-sessionbus.o `test -f 'gdbus-sessionbus.c' || echo '$(srcdir)/'`gdbus-sessionbus.c + +gdbus_proxy_threads-gdbus-sessionbus.obj: gdbus-sessionbus.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_proxy_threads_CFLAGS) $(CFLAGS) -MT gdbus_proxy_threads-gdbus-sessionbus.obj -MD -MP -MF $(DEPDIR)/gdbus_proxy_threads-gdbus-sessionbus.Tpo -c -o gdbus_proxy_threads-gdbus-sessionbus.obj `if test -f 'gdbus-sessionbus.c'; then $(CYGPATH_W) 'gdbus-sessionbus.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-sessionbus.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_proxy_threads-gdbus-sessionbus.Tpo $(DEPDIR)/gdbus_proxy_threads-gdbus-sessionbus.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-sessionbus.c' object='gdbus_proxy_threads-gdbus-sessionbus.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_proxy_threads_CFLAGS) $(CFLAGS) -c -o gdbus_proxy_threads-gdbus-sessionbus.obj `if test -f 'gdbus-sessionbus.c'; then $(CYGPATH_W) 'gdbus-sessionbus.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-sessionbus.c'; fi` + +gdbus_proxy_threads-gdbus-tests.o: gdbus-tests.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_proxy_threads_CFLAGS) $(CFLAGS) -MT gdbus_proxy_threads-gdbus-tests.o -MD -MP -MF $(DEPDIR)/gdbus_proxy_threads-gdbus-tests.Tpo -c -o gdbus_proxy_threads-gdbus-tests.o `test -f 'gdbus-tests.c' || echo '$(srcdir)/'`gdbus-tests.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_proxy_threads-gdbus-tests.Tpo $(DEPDIR)/gdbus_proxy_threads-gdbus-tests.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-tests.c' object='gdbus_proxy_threads-gdbus-tests.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_proxy_threads_CFLAGS) $(CFLAGS) -c -o gdbus_proxy_threads-gdbus-tests.o `test -f 'gdbus-tests.c' || echo '$(srcdir)/'`gdbus-tests.c + +gdbus_proxy_threads-gdbus-tests.obj: gdbus-tests.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_proxy_threads_CFLAGS) $(CFLAGS) -MT gdbus_proxy_threads-gdbus-tests.obj -MD -MP -MF $(DEPDIR)/gdbus_proxy_threads-gdbus-tests.Tpo -c -o gdbus_proxy_threads-gdbus-tests.obj `if test -f 'gdbus-tests.c'; then $(CYGPATH_W) 'gdbus-tests.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-tests.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_proxy_threads-gdbus-tests.Tpo $(DEPDIR)/gdbus_proxy_threads-gdbus-tests.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-tests.c' object='gdbus_proxy_threads-gdbus-tests.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_proxy_threads_CFLAGS) $(CFLAGS) -c -o gdbus_proxy_threads-gdbus-tests.obj `if test -f 'gdbus-tests.c'; then $(CYGPATH_W) 'gdbus-tests.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-tests.c'; fi` + +gdbus_proxy_threads-gdbus-proxy-threads.o: gdbus-proxy-threads.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_proxy_threads_CFLAGS) $(CFLAGS) -MT gdbus_proxy_threads-gdbus-proxy-threads.o -MD -MP -MF $(DEPDIR)/gdbus_proxy_threads-gdbus-proxy-threads.Tpo -c -o gdbus_proxy_threads-gdbus-proxy-threads.o `test -f 'gdbus-proxy-threads.c' || echo '$(srcdir)/'`gdbus-proxy-threads.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_proxy_threads-gdbus-proxy-threads.Tpo $(DEPDIR)/gdbus_proxy_threads-gdbus-proxy-threads.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-proxy-threads.c' object='gdbus_proxy_threads-gdbus-proxy-threads.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_proxy_threads_CFLAGS) $(CFLAGS) -c -o gdbus_proxy_threads-gdbus-proxy-threads.o `test -f 'gdbus-proxy-threads.c' || echo '$(srcdir)/'`gdbus-proxy-threads.c + +gdbus_proxy_threads-gdbus-proxy-threads.obj: gdbus-proxy-threads.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_proxy_threads_CFLAGS) $(CFLAGS) -MT gdbus_proxy_threads-gdbus-proxy-threads.obj -MD -MP -MF $(DEPDIR)/gdbus_proxy_threads-gdbus-proxy-threads.Tpo -c -o gdbus_proxy_threads-gdbus-proxy-threads.obj `if test -f 'gdbus-proxy-threads.c'; then $(CYGPATH_W) 'gdbus-proxy-threads.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-proxy-threads.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_proxy_threads-gdbus-proxy-threads.Tpo $(DEPDIR)/gdbus_proxy_threads-gdbus-proxy-threads.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-proxy-threads.c' object='gdbus_proxy_threads-gdbus-proxy-threads.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_proxy_threads_CFLAGS) $(CFLAGS) -c -o gdbus_proxy_threads-gdbus-proxy-threads.obj `if test -f 'gdbus-proxy-threads.c'; then $(CYGPATH_W) 'gdbus-proxy-threads.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-proxy-threads.c'; fi` + +gdbus_serialization-gdbus-serialization.o: gdbus-serialization.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_serialization_CFLAGS) $(CFLAGS) -MT gdbus_serialization-gdbus-serialization.o -MD -MP -MF $(DEPDIR)/gdbus_serialization-gdbus-serialization.Tpo -c -o gdbus_serialization-gdbus-serialization.o `test -f 'gdbus-serialization.c' || echo '$(srcdir)/'`gdbus-serialization.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_serialization-gdbus-serialization.Tpo $(DEPDIR)/gdbus_serialization-gdbus-serialization.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-serialization.c' object='gdbus_serialization-gdbus-serialization.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_serialization_CFLAGS) $(CFLAGS) -c -o gdbus_serialization-gdbus-serialization.o `test -f 'gdbus-serialization.c' || echo '$(srcdir)/'`gdbus-serialization.c + +gdbus_serialization-gdbus-serialization.obj: gdbus-serialization.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_serialization_CFLAGS) $(CFLAGS) -MT gdbus_serialization-gdbus-serialization.obj -MD -MP -MF $(DEPDIR)/gdbus_serialization-gdbus-serialization.Tpo -c -o gdbus_serialization-gdbus-serialization.obj `if test -f 'gdbus-serialization.c'; then $(CYGPATH_W) 'gdbus-serialization.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-serialization.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_serialization-gdbus-serialization.Tpo $(DEPDIR)/gdbus_serialization-gdbus-serialization.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-serialization.c' object='gdbus_serialization-gdbus-serialization.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_serialization_CFLAGS) $(CFLAGS) -c -o gdbus_serialization-gdbus-serialization.obj `if test -f 'gdbus-serialization.c'; then $(CYGPATH_W) 'gdbus-serialization.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-serialization.c'; fi` + +gdbus_serialization-gdbus-tests.o: gdbus-tests.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_serialization_CFLAGS) $(CFLAGS) -MT gdbus_serialization-gdbus-tests.o -MD -MP -MF $(DEPDIR)/gdbus_serialization-gdbus-tests.Tpo -c -o gdbus_serialization-gdbus-tests.o `test -f 'gdbus-tests.c' || echo '$(srcdir)/'`gdbus-tests.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_serialization-gdbus-tests.Tpo $(DEPDIR)/gdbus_serialization-gdbus-tests.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-tests.c' object='gdbus_serialization-gdbus-tests.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_serialization_CFLAGS) $(CFLAGS) -c -o gdbus_serialization-gdbus-tests.o `test -f 'gdbus-tests.c' || echo '$(srcdir)/'`gdbus-tests.c + +gdbus_serialization-gdbus-tests.obj: gdbus-tests.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_serialization_CFLAGS) $(CFLAGS) -MT gdbus_serialization-gdbus-tests.obj -MD -MP -MF $(DEPDIR)/gdbus_serialization-gdbus-tests.Tpo -c -o gdbus_serialization-gdbus-tests.obj `if test -f 'gdbus-tests.c'; then $(CYGPATH_W) 'gdbus-tests.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-tests.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_serialization-gdbus-tests.Tpo $(DEPDIR)/gdbus_serialization-gdbus-tests.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-tests.c' object='gdbus_serialization-gdbus-tests.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gdbus_serialization_CFLAGS) $(CFLAGS) -c -o gdbus_serialization-gdbus-tests.obj `if test -f 'gdbus-tests.c'; then $(CYGPATH_W) 'gdbus-tests.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-tests.c'; fi` + +gdbus_test_codegen_old-gdbus-sessionbus.o: gdbus-sessionbus.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gdbus_test_codegen_old-gdbus-sessionbus.o -MD -MP -MF $(DEPDIR)/gdbus_test_codegen_old-gdbus-sessionbus.Tpo -c -o gdbus_test_codegen_old-gdbus-sessionbus.o `test -f 'gdbus-sessionbus.c' || echo '$(srcdir)/'`gdbus-sessionbus.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_test_codegen_old-gdbus-sessionbus.Tpo $(DEPDIR)/gdbus_test_codegen_old-gdbus-sessionbus.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-sessionbus.c' object='gdbus_test_codegen_old-gdbus-sessionbus.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gdbus_test_codegen_old-gdbus-sessionbus.o `test -f 'gdbus-sessionbus.c' || echo '$(srcdir)/'`gdbus-sessionbus.c + +gdbus_test_codegen_old-gdbus-sessionbus.obj: gdbus-sessionbus.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gdbus_test_codegen_old-gdbus-sessionbus.obj -MD -MP -MF $(DEPDIR)/gdbus_test_codegen_old-gdbus-sessionbus.Tpo -c -o gdbus_test_codegen_old-gdbus-sessionbus.obj `if test -f 'gdbus-sessionbus.c'; then $(CYGPATH_W) 'gdbus-sessionbus.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-sessionbus.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_test_codegen_old-gdbus-sessionbus.Tpo $(DEPDIR)/gdbus_test_codegen_old-gdbus-sessionbus.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-sessionbus.c' object='gdbus_test_codegen_old-gdbus-sessionbus.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gdbus_test_codegen_old-gdbus-sessionbus.obj `if test -f 'gdbus-sessionbus.c'; then $(CYGPATH_W) 'gdbus-sessionbus.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-sessionbus.c'; fi` + +gdbus_test_codegen_old-gdbus-tests.o: gdbus-tests.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gdbus_test_codegen_old-gdbus-tests.o -MD -MP -MF $(DEPDIR)/gdbus_test_codegen_old-gdbus-tests.Tpo -c -o gdbus_test_codegen_old-gdbus-tests.o `test -f 'gdbus-tests.c' || echo '$(srcdir)/'`gdbus-tests.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_test_codegen_old-gdbus-tests.Tpo $(DEPDIR)/gdbus_test_codegen_old-gdbus-tests.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-tests.c' object='gdbus_test_codegen_old-gdbus-tests.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gdbus_test_codegen_old-gdbus-tests.o `test -f 'gdbus-tests.c' || echo '$(srcdir)/'`gdbus-tests.c + +gdbus_test_codegen_old-gdbus-tests.obj: gdbus-tests.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gdbus_test_codegen_old-gdbus-tests.obj -MD -MP -MF $(DEPDIR)/gdbus_test_codegen_old-gdbus-tests.Tpo -c -o gdbus_test_codegen_old-gdbus-tests.obj `if test -f 'gdbus-tests.c'; then $(CYGPATH_W) 'gdbus-tests.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-tests.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_test_codegen_old-gdbus-tests.Tpo $(DEPDIR)/gdbus_test_codegen_old-gdbus-tests.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-tests.c' object='gdbus_test_codegen_old-gdbus-tests.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gdbus_test_codegen_old-gdbus-tests.obj `if test -f 'gdbus-tests.c'; then $(CYGPATH_W) 'gdbus-tests.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-tests.c'; fi` + +gdbus_test_codegen_old-gdbus-test-codegen.o: gdbus-test-codegen.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gdbus_test_codegen_old-gdbus-test-codegen.o -MD -MP -MF $(DEPDIR)/gdbus_test_codegen_old-gdbus-test-codegen.Tpo -c -o gdbus_test_codegen_old-gdbus-test-codegen.o `test -f 'gdbus-test-codegen.c' || echo '$(srcdir)/'`gdbus-test-codegen.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_test_codegen_old-gdbus-test-codegen.Tpo $(DEPDIR)/gdbus_test_codegen_old-gdbus-test-codegen.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-test-codegen.c' object='gdbus_test_codegen_old-gdbus-test-codegen.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gdbus_test_codegen_old-gdbus-test-codegen.o `test -f 'gdbus-test-codegen.c' || echo '$(srcdir)/'`gdbus-test-codegen.c + +gdbus_test_codegen_old-gdbus-test-codegen.obj: gdbus-test-codegen.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gdbus_test_codegen_old-gdbus-test-codegen.obj -MD -MP -MF $(DEPDIR)/gdbus_test_codegen_old-gdbus-test-codegen.Tpo -c -o gdbus_test_codegen_old-gdbus-test-codegen.obj `if test -f 'gdbus-test-codegen.c'; then $(CYGPATH_W) 'gdbus-test-codegen.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-test-codegen.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_test_codegen_old-gdbus-test-codegen.Tpo $(DEPDIR)/gdbus_test_codegen_old-gdbus-test-codegen.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-test-codegen.c' object='gdbus_test_codegen_old-gdbus-test-codegen.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gdbus_test_codegen_old-gdbus-test-codegen.obj `if test -f 'gdbus-test-codegen.c'; then $(CYGPATH_W) 'gdbus-test-codegen.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-test-codegen.c'; fi` + +gdbus_test_codegen_old-gdbus-test-codegen-generated.o: gdbus-test-codegen-generated.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gdbus_test_codegen_old-gdbus-test-codegen-generated.o -MD -MP -MF $(DEPDIR)/gdbus_test_codegen_old-gdbus-test-codegen-generated.Tpo -c -o gdbus_test_codegen_old-gdbus-test-codegen-generated.o `test -f 'gdbus-test-codegen-generated.c' || echo '$(srcdir)/'`gdbus-test-codegen-generated.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_test_codegen_old-gdbus-test-codegen-generated.Tpo $(DEPDIR)/gdbus_test_codegen_old-gdbus-test-codegen-generated.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-test-codegen-generated.c' object='gdbus_test_codegen_old-gdbus-test-codegen-generated.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gdbus_test_codegen_old-gdbus-test-codegen-generated.o `test -f 'gdbus-test-codegen-generated.c' || echo '$(srcdir)/'`gdbus-test-codegen-generated.c + +gdbus_test_codegen_old-gdbus-test-codegen-generated.obj: gdbus-test-codegen-generated.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gdbus_test_codegen_old-gdbus-test-codegen-generated.obj -MD -MP -MF $(DEPDIR)/gdbus_test_codegen_old-gdbus-test-codegen-generated.Tpo -c -o gdbus_test_codegen_old-gdbus-test-codegen-generated.obj `if test -f 'gdbus-test-codegen-generated.c'; then $(CYGPATH_W) 'gdbus-test-codegen-generated.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-test-codegen-generated.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gdbus_test_codegen_old-gdbus-test-codegen-generated.Tpo $(DEPDIR)/gdbus_test_codegen_old-gdbus-test-codegen-generated.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdbus-test-codegen-generated.c' object='gdbus_test_codegen_old-gdbus-test-codegen-generated.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gdbus_test_codegen_old_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gdbus_test_codegen_old-gdbus-test-codegen-generated.obj `if test -f 'gdbus-test-codegen-generated.c'; then $(CYGPATH_W) 'gdbus-test-codegen-generated.c'; else $(CYGPATH_W) '$(srcdir)/gdbus-test-codegen-generated.c'; fi` + +gsettings-gsettings.o: gsettings.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsettings_CFLAGS) $(CFLAGS) -MT gsettings-gsettings.o -MD -MP -MF $(DEPDIR)/gsettings-gsettings.Tpo -c -o gsettings-gsettings.o `test -f 'gsettings.c' || echo '$(srcdir)/'`gsettings.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gsettings-gsettings.Tpo $(DEPDIR)/gsettings-gsettings.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsettings.c' object='gsettings-gsettings.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsettings_CFLAGS) $(CFLAGS) -c -o gsettings-gsettings.o `test -f 'gsettings.c' || echo '$(srcdir)/'`gsettings.c + +gsettings-gsettings.obj: gsettings.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsettings_CFLAGS) $(CFLAGS) -MT gsettings-gsettings.obj -MD -MP -MF $(DEPDIR)/gsettings-gsettings.Tpo -c -o gsettings-gsettings.obj `if test -f 'gsettings.c'; then $(CYGPATH_W) 'gsettings.c'; else $(CYGPATH_W) '$(srcdir)/gsettings.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gsettings-gsettings.Tpo $(DEPDIR)/gsettings-gsettings.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsettings.c' object='gsettings-gsettings.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gsettings_CFLAGS) $(CFLAGS) -c -o gsettings-gsettings.obj `if test -f 'gsettings.c'; then $(CYGPATH_W) 'gsettings.c'; else $(CYGPATH_W) '$(srcdir)/gsettings.c'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +appmonitor.log: appmonitor$(EXEEXT) + @p='appmonitor$(EXEEXT)'; \ + b='appmonitor'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +async-close-output-stream.log: async-close-output-stream$(EXEEXT) + @p='async-close-output-stream$(EXEEXT)'; \ + b='async-close-output-stream'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +async-splice-output-stream.log: async-splice-output-stream$(EXEEXT) + @p='async-splice-output-stream$(EXEEXT)'; \ + b='async-splice-output-stream'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +buffered-input-stream.log: buffered-input-stream$(EXEEXT) + @p='buffered-input-stream$(EXEEXT)'; \ + b='buffered-input-stream'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +buffered-output-stream.log: buffered-output-stream$(EXEEXT) + @p='buffered-output-stream$(EXEEXT)'; \ + b='buffered-output-stream'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +cancellable.log: cancellable$(EXEEXT) + @p='cancellable$(EXEEXT)'; \ + b='cancellable'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +contexts.log: contexts$(EXEEXT) + @p='contexts$(EXEEXT)'; \ + b='contexts'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +contenttype.log: contenttype$(EXEEXT) + @p='contenttype$(EXEEXT)'; \ + b='contenttype'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +converter-stream.log: converter-stream$(EXEEXT) + @p='converter-stream$(EXEEXT)'; \ + b='converter-stream'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +credentials.log: credentials$(EXEEXT) + @p='credentials$(EXEEXT)'; \ + b='credentials'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +data-input-stream.log: data-input-stream$(EXEEXT) + @p='data-input-stream$(EXEEXT)'; \ + b='data-input-stream'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +data-output-stream.log: data-output-stream$(EXEEXT) + @p='data-output-stream$(EXEEXT)'; \ + b='data-output-stream'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +defaultvalue.log: defaultvalue$(EXEEXT) + @p='defaultvalue$(EXEEXT)'; \ + b='defaultvalue'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +fileattributematcher.log: fileattributematcher$(EXEEXT) + @p='fileattributematcher$(EXEEXT)'; \ + b='fileattributematcher'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +filter-streams.log: filter-streams$(EXEEXT) + @p='filter-streams$(EXEEXT)'; \ + b='filter-streams'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +giomodule.log: giomodule$(EXEEXT) + @p='giomodule$(EXEEXT)'; \ + b='giomodule'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gsubprocess.log: gsubprocess$(EXEEXT) + @p='gsubprocess$(EXEEXT)'; \ + b='gsubprocess'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +g-file.log: g-file$(EXEEXT) + @p='g-file$(EXEEXT)'; \ + b='g-file'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +g-file-info.log: g-file-info$(EXEEXT) + @p='g-file-info$(EXEEXT)'; \ + b='g-file-info'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +g-icon.log: g-icon$(EXEEXT) + @p='g-icon$(EXEEXT)'; \ + b='g-icon'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-addresses.log: gdbus-addresses$(EXEEXT) + @p='gdbus-addresses$(EXEEXT)'; \ + b='gdbus-addresses'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-message.log: gdbus-message$(EXEEXT) + @p='gdbus-message$(EXEEXT)'; \ + b='gdbus-message'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +inet-address.log: inet-address$(EXEEXT) + @p='inet-address$(EXEEXT)'; \ + b='inet-address'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +io-stream.log: io-stream$(EXEEXT) + @p='io-stream$(EXEEXT)'; \ + b='io-stream'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +memory-input-stream.log: memory-input-stream$(EXEEXT) + @p='memory-input-stream$(EXEEXT)'; \ + b='memory-input-stream'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +memory-output-stream.log: memory-output-stream$(EXEEXT) + @p='memory-output-stream$(EXEEXT)'; \ + b='memory-output-stream'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +monitor.log: monitor$(EXEEXT) + @p='monitor$(EXEEXT)'; \ + b='monitor'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +network-address.log: network-address$(EXEEXT) + @p='network-address$(EXEEXT)'; \ + b='network-address'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +network-monitor.log: network-monitor$(EXEEXT) + @p='network-monitor$(EXEEXT)'; \ + b='network-monitor'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +permission.log: permission$(EXEEXT) + @p='permission$(EXEEXT)'; \ + b='permission'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +pollable.log: pollable$(EXEEXT) + @p='pollable$(EXEEXT)'; \ + b='pollable'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +proxy-test.log: proxy-test$(EXEEXT) + @p='proxy-test$(EXEEXT)'; \ + b='proxy-test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +readwrite.log: readwrite$(EXEEXT) + @p='readwrite$(EXEEXT)'; \ + b='readwrite'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +simple-async-result.log: simple-async-result$(EXEEXT) + @p='simple-async-result$(EXEEXT)'; \ + b='simple-async-result'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +simple-proxy.log: simple-proxy$(EXEEXT) + @p='simple-proxy$(EXEEXT)'; \ + b='simple-proxy'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +sleepy-stream.log: sleepy-stream$(EXEEXT) + @p='sleepy-stream$(EXEEXT)'; \ + b='sleepy-stream'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +socket.log: socket$(EXEEXT) + @p='socket$(EXEEXT)'; \ + b='socket'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +socket-listener.log: socket-listener$(EXEEXT) + @p='socket-listener$(EXEEXT)'; \ + b='socket-listener'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +socket-service.log: socket-service$(EXEEXT) + @p='socket-service$(EXEEXT)'; \ + b='socket-service'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +srvtarget.log: srvtarget$(EXEEXT) + @p='srvtarget$(EXEEXT)'; \ + b='srvtarget'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +task.log: task$(EXEEXT) + @p='task$(EXEEXT)'; \ + b='task'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +tls-interaction.log: tls-interaction$(EXEEXT) + @p='tls-interaction$(EXEEXT)'; \ + b='tls-interaction'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +vfs.log: vfs$(EXEEXT) + @p='vfs$(EXEEXT)'; \ + b='vfs'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +volumemonitor.log: volumemonitor$(EXEEXT) + @p='volumemonitor$(EXEEXT)'; \ + b='volumemonitor'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +glistmodel.log: glistmodel$(EXEEXT) + @p='glistmodel$(EXEEXT)'; \ + b='glistmodel'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +testfilemonitor.log: testfilemonitor$(EXEEXT) + @p='testfilemonitor$(EXEEXT)'; \ + b='testfilemonitor'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +thumbnail-verification.log: thumbnail-verification$(EXEEXT) + @p='thumbnail-verification$(EXEEXT)'; \ + b='thumbnail-verification'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +tls-certificate.log: tls-certificate$(EXEEXT) + @p='tls-certificate$(EXEEXT)'; \ + b='tls-certificate'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +file.log: file$(EXEEXT) + @p='file$(EXEEXT)'; \ + b='file'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-peer-object-manager.log: gdbus-peer-object-manager$(EXEEXT) + @p='gdbus-peer-object-manager$(EXEEXT)'; \ + b='gdbus-peer-object-manager'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-unix-addresses.log: gdbus-unix-addresses$(EXEEXT) + @p='gdbus-unix-addresses$(EXEEXT)'; \ + b='gdbus-unix-addresses'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +live-g-file.log: live-g-file$(EXEEXT) + @p='live-g-file$(EXEEXT)'; \ + b='live-g-file'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +socket-address.log: socket-address$(EXEEXT) + @p='socket-address$(EXEEXT)'; \ + b='socket-address'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +stream-rw_all.log: stream-rw_all$(EXEEXT) + @p='stream-rw_all$(EXEEXT)'; \ + b='stream-rw_all'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +unix-fd.log: unix-fd$(EXEEXT) + @p='unix-fd$(EXEEXT)'; \ + b='unix-fd'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +unix-streams.log: unix-streams$(EXEEXT) + @p='unix-streams$(EXEEXT)'; \ + b='unix-streams'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +mimeapps.log: mimeapps$(EXEEXT) + @p='mimeapps$(EXEEXT)'; \ + b='mimeapps'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-connection-flush.log: gdbus-connection-flush$(EXEEXT) + @p='gdbus-connection-flush$(EXEEXT)'; \ + b='gdbus-connection-flush'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-non-socket.log: gdbus-non-socket$(EXEEXT) + @p='gdbus-non-socket$(EXEEXT)'; \ + b='gdbus-non-socket'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-peer.log: gdbus-peer$(EXEEXT) + @p='gdbus-peer$(EXEEXT)'; \ + b='gdbus-peer'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +actions.log: actions$(EXEEXT) + @p='actions$(EXEEXT)'; \ + b='actions'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +dbus-appinfo.log: dbus-appinfo$(EXEEXT) + @p='dbus-appinfo$(EXEEXT)'; \ + b='dbus-appinfo'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gapplication.log: gapplication$(EXEEXT) + @p='gapplication$(EXEEXT)'; \ + b='gapplication'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-auth.log: gdbus-auth$(EXEEXT) + @p='gdbus-auth$(EXEEXT)'; \ + b='gdbus-auth'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-bz627724.log: gdbus-bz627724$(EXEEXT) + @p='gdbus-bz627724$(EXEEXT)'; \ + b='gdbus-bz627724'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-close-pending.log: gdbus-close-pending$(EXEEXT) + @p='gdbus-close-pending$(EXEEXT)'; \ + b='gdbus-close-pending'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-connection.log: gdbus-connection$(EXEEXT) + @p='gdbus-connection$(EXEEXT)'; \ + b='gdbus-connection'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-connection-loss.log: gdbus-connection-loss$(EXEEXT) + @p='gdbus-connection-loss$(EXEEXT)'; \ + b='gdbus-connection-loss'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-connection-slow.log: gdbus-connection-slow$(EXEEXT) + @p='gdbus-connection-slow$(EXEEXT)'; \ + b='gdbus-connection-slow'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-error.log: gdbus-error$(EXEEXT) + @p='gdbus-error$(EXEEXT)'; \ + b='gdbus-error'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-exit-on-close.log: gdbus-exit-on-close$(EXEEXT) + @p='gdbus-exit-on-close$(EXEEXT)'; \ + b='gdbus-exit-on-close'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-export.log: gdbus-export$(EXEEXT) + @p='gdbus-export$(EXEEXT)'; \ + b='gdbus-export'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-introspection.log: gdbus-introspection$(EXEEXT) + @p='gdbus-introspection$(EXEEXT)'; \ + b='gdbus-introspection'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-names.log: gdbus-names$(EXEEXT) + @p='gdbus-names$(EXEEXT)'; \ + b='gdbus-names'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-proxy.log: gdbus-proxy$(EXEEXT) + @p='gdbus-proxy$(EXEEXT)'; \ + b='gdbus-proxy'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-proxy-threads.log: gdbus-proxy-threads$(EXEEXT) + @p='gdbus-proxy-threads$(EXEEXT)'; \ + b='gdbus-proxy-threads'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-proxy-well-known-name.log: gdbus-proxy-well-known-name$(EXEEXT) + @p='gdbus-proxy-well-known-name$(EXEEXT)'; \ + b='gdbus-proxy-well-known-name'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-test-codegen.log: gdbus-test-codegen$(EXEEXT) + @p='gdbus-test-codegen$(EXEEXT)'; \ + b='gdbus-test-codegen'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-test-codegen-old.log: gdbus-test-codegen-old$(EXEEXT) + @p='gdbus-test-codegen-old$(EXEEXT)'; \ + b='gdbus-test-codegen-old'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-threading.log: gdbus-threading$(EXEEXT) + @p='gdbus-threading$(EXEEXT)'; \ + b='gdbus-threading'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gmenumodel.log: gmenumodel$(EXEEXT) + @p='gmenumodel$(EXEEXT)'; \ + b='gmenumodel'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gnotification.log: gnotification$(EXEEXT) + @p='gnotification$(EXEEXT)'; \ + b='gnotification'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +win32-streams.log: win32-streams$(EXEEXT) + @p='win32-streams$(EXEEXT)'; \ + b='win32-streams'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdbus-serialization.log: gdbus-serialization$(EXEEXT) + @p='gdbus-serialization$(EXEEXT)'; \ + b='gdbus-serialization'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +autoptr.log: autoptr$(EXEEXT) + @p='autoptr$(EXEEXT)'; \ + b='autoptr'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +resources.log: resources$(EXEEXT) + @p='resources$(EXEEXT)'; \ + b='resources'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +appinfo.log: appinfo$(EXEEXT) + @p='appinfo$(EXEEXT)'; \ + b='appinfo'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +desktop-app-info.log: desktop-app-info$(EXEEXT) + @p='desktop-app-info$(EXEEXT)'; \ + b='desktop-app-info'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gsettings.log: gsettings$(EXEEXT) + @p='gsettings$(EXEEXT)'; \ + b='gsettings'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gschema-compile.log: gschema-compile$(EXEEXT) + @p='gschema-compile$(EXEEXT)'; \ + b='gschema-compile'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +@OS_UNIX_FALSE@clean-local: +@ENABLE_INSTALLED_TESTS_FALSE@install-data-hook: +@OS_UNIX_FALSE@install-data-hook: +clean: clean-recursive + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-local clean-noinstLTLIBRARIES \ + clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.MAKE: $(am__recursive_targets) all check check-am install install-am \ + install-data-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-TESTS check-am clean clean-checkLTLIBRARIES \ + clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-local clean-noinstLTLIBRARIES \ + clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-data-hook install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<) --tap' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Output=TAP' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) +@OS_UNIX_TRUE@clean-local: clean-mimeapps +@OS_UNIX_TRUE@clean-mimeapps: +@OS_UNIX_TRUE@ rm -rf xdgdatadir xdgdatahome xdgconfighome +@OS_UNIX_TRUE@test.mo: de.po +@OS_UNIX_TRUE@ $(AM_V_GEN) $(MSGFMT) -o test.mo $(srcdir)/de.po; \ +@OS_UNIX_TRUE@ $(MKDIR_P) de/LC_MESSAGES; \ +@OS_UNIX_TRUE@ cp -f test.mo de/LC_MESSAGES +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus-test-codegen.o: gdbus-test-codegen-generated.h +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus-test-codegen-generated.h: test-codegen.xml Makefile $(top_builddir)/gio/gdbus-2.0/codegen/gdbus-codegen +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(AM_V_GEN) UNINSTALLED_GLIB_SRCDIR=$(top_srcdir) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ UNINSTALLED_GLIB_BUILDDIR=$(top_builddir) \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(PYTHON) $(top_builddir)/gio/gdbus-2.0/codegen/gdbus-codegen \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ --interface-prefix org.project. \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ --generate-c-code gdbus-test-codegen-generated \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ --c-generate-object-manager \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ --c-namespace Foo_iGen \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ --generate-docbook gdbus-test-codegen-generated-doc \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ --annotate "org.project.Bar" Key1 Value1 \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ --annotate "org.project.Bar" org.gtk.GDBus.Internal Value2 \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ --annotate "org.project.Bar.HelloWorld()" Key3 Value3 \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ --annotate "org.project.Bar::TestSignal" Key4 Value4 \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ --annotate "org.project.Bar:ay" Key5 Value5 \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ --annotate "org.project.Bar.TestPrimitiveTypes()[val_int32]" Key6 Value6 \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ --annotate "org.project.Bar.TestPrimitiveTypes()[ret_uint32]" Key7 Value7 \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ --annotate "org.project.Bar::TestSignal[array_of_strings]" Key8 Value8 \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(srcdir)/test-codegen.xml \ +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ $(NULL) +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@gdbus-test-codegen-generated.c: gdbus-test-codegen-generated.h +@HAVE_DBUS_DAEMON_TRUE@@OS_UNIX_TRUE@ @: # Generated as side-effect of .h + +@CROSS_COMPILING_FALSE@resources.o: test_resources2.h +@CROSS_COMPILING_FALSE@test_resources.c: test2.gresource.xml Makefile $(shell $(glib_compile_resources) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/test2.gresource.xml) +@CROSS_COMPILING_FALSE@ $(AM_V_GEN) $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) --generate-source --c-name _g_test1 $< + +@CROSS_COMPILING_FALSE@test_resources2.h test_resources2.c: test3.gresource.xml Makefile $(shell $(glib_compile_resources) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/test3.gresource.xml) +@CROSS_COMPILING_FALSE@ $(AM_V_GEN) $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) --generate --c-name _g_test2 --manual-register $< + +@CROSS_COMPILING_FALSE@plugin_resources.c: test4.gresource.xml Makefile $(shell $(glib_compile_resources) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/test4.gresource.xml) +@CROSS_COMPILING_FALSE@ $(AM_V_GEN) $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) --generate-source --c-name _g_plugin $< + +@CROSS_COMPILING_FALSE@test.gresource: test.gresource.xml Makefile $(shell $(glib_compile_resources) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/test.gresource.xml) +@CROSS_COMPILING_FALSE@ $(AM_V_GEN) $(glib_compile_resources) --target=$@ --sourcedir=$(srcdir) $< + +giotypefuncs.c: Makefile + $(AM_V_GEN) echo '#include ' > xgen-giosrc.c && \ + echo "G_GNUC_BEGIN_IGNORE_DEPRECATIONS" > xgen-gio && \ + ${CPP} $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) xgen-giosrc.c | \ + $(GREP) -o '\bg_[A-Za-z0-9_]*_get_type\b' | \ + $(GREP) -v 'g_io_extension_get_type\|g_variant_get_type' | \ + LC_ALL=C sort | uniq | \ + $(SED) -e 's/^/*tp++ = /' -e 's/$$/ ();/' >> xgen-gio && \ + cp xgen-gio $@ # && rm -f xgen-gio xgen-giosrc.c + +@ENABLE_INSTALLED_TESTS_TRUE@@OS_UNIX_TRUE@install-data-hook: +@ENABLE_INSTALLED_TESTS_TRUE@@OS_UNIX_TRUE@ $(AM_V_at) chmod a+x $(DESTDIR)$(installed_testdir)/x-content/win32-software/autorun.exe + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gio/tests/actions.c b/gio/tests/actions.c index 35de47f..8b5339e 100644 --- a/gio/tests/actions.c +++ b/gio/tests/actions.c @@ -1050,6 +1050,16 @@ test_property_actions (void) g_action_map_add_action (G_ACTION_MAP (group), G_ACTION (action)); g_object_unref (action); + /* inverted */ + action = g_object_new (G_TYPE_PROPERTY_ACTION, + "name", "disable-proxy", + "object", client, + "property-name", "enable-proxy", + "invert-boolean", TRUE, + NULL); + g_action_map_add_action (G_ACTION_MAP (group), G_ACTION (action)); + g_object_unref (action); + /* enum... */ action = g_property_action_new ("type", client, "type"); g_action_map_add_action (G_ACTION_MAP (group), G_ACTION (action)); @@ -1062,6 +1072,7 @@ test_property_actions (void) ensure_state (group, "app-id", "'org.gtk.test'"); ensure_state (group, "keepalive", "uint32 0"); ensure_state (group, "tls", "false"); + ensure_state (group, "disable-proxy", "false"); ensure_state (group, "type", "'stream'"); verify_changed (NULL); @@ -1102,6 +1113,11 @@ test_property_actions (void) g_assert (g_socket_client_get_tls (client)); ensure_state (group, "tls", "true"); + g_action_group_change_action_state (G_ACTION_GROUP (group), "disable-proxy", g_variant_new ("b", TRUE)); + verify_changed ("disable-proxy:true"); + ensure_state (group, "disable-proxy", "true"); + g_assert (!g_socket_client_get_enable_proxy (client)); + /* test toggle true->false */ g_action_group_activate_action (G_ACTION_GROUP (group), "tls", NULL); verify_changed ("tls:false"); @@ -1118,6 +1134,21 @@ test_property_actions (void) verify_changed ("tls:false"); ensure_state (group, "tls", "false"); + /* now do the same for the inverted action */ + g_action_group_activate_action (G_ACTION_GROUP (group), "disable-proxy", NULL); + verify_changed ("disable-proxy:false"); + g_assert (g_socket_client_get_enable_proxy (client)); + ensure_state (group, "disable-proxy", "false"); + + g_action_group_activate_action (G_ACTION_GROUP (group), "disable-proxy", NULL); + verify_changed ("disable-proxy:true"); + g_assert (!g_socket_client_get_enable_proxy (client)); + ensure_state (group, "disable-proxy", "true"); + + g_socket_client_set_enable_proxy (client, TRUE); + verify_changed ("disable-proxy:false"); + ensure_state (group, "disable-proxy", "false"); + /* enum tests */ g_action_group_change_action_state (G_ACTION_GROUP (group), "type", g_variant_new ("s", "datagram")); verify_changed ("type:'datagram'"); diff --git a/gio/tests/appmonitor.c b/gio/tests/appmonitor.c index 425a600..9ce6ff0 100644 --- a/gio/tests/appmonitor.c +++ b/gio/tests/appmonitor.c @@ -24,7 +24,7 @@ create_app (gpointer data) return G_SOURCE_REMOVE; } -static gboolean +static void delete_app (gpointer data) { const gchar *path = data; @@ -35,8 +35,6 @@ delete_app (gpointer data) g_remove (file); g_free (file); - - return G_SOURCE_REMOVE; } static gboolean changed_fired; @@ -53,7 +51,8 @@ quit_loop (gpointer data) { GMainLoop *loop = data; - g_main_loop_quit (loop); + if (g_main_loop_is_running (loop)) + g_main_loop_quit (loop); return G_SOURCE_REMOVE; } @@ -86,15 +85,18 @@ test_app_monitor (void) /* FIXME: this shouldn't be required */ g_list_free_full (g_app_info_get_all (), g_object_unref); - g_idle_add (delete_app, path); g_timeout_add_seconds (3, quit_loop, loop); + delete_app (path); + g_main_loop_run (loop); + g_assert (changed_fired); g_main_loop_unref (loop); g_object_unref (monitor); + g_free (path); } diff --git a/gio/tests/async-close-output-stream.c b/gio/tests/async-close-output-stream.c index 507214c..5f66202 100644 --- a/gio/tests/async-close-output-stream.c +++ b/gio/tests/async-close-output-stream.c @@ -100,15 +100,10 @@ compare_output (SetupData *data) gsize size; gpointer written; - size = g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (data->data_stream)); - - /* compare the size of the data */ - g_assert_cmpint (size, ==, data->expected_size); - written = g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (data->data_stream)); + size = g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (data->data_stream)); - /* compare the data itself */ - g_assert (memcmp (written, data->expected_output, size) == 0); + g_assert_cmpmem (written, size, data->expected_output, data->expected_size); } static void diff --git a/gio/tests/cert-tests/cert-list.pem b/gio/tests/cert-tests/cert-list.pem index bf2fb31..ffab3f4 100644 --- a/gio/tests/cert-tests/cert-list.pem +++ b/gio/tests/cert-tests/cert-list.pem @@ -50,3 +50,19 @@ E6GlY2rvjCf0BpW0t4zKL/wvA5tBmuOWYg93psHgIdSNgkmfbA1kvD6kXehQlt1F 5yZJP91/VND5LHvXf5TcAmr/KeQAPYvqfiGYXuvHDLA9y9OOyTBMURLYfWuo9HZt xeI14sZ9udXwtUhgcvXrBFzlRfkbojuMZw== -----END CERTIFICATE----- +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQCslrTl+gp3lQsEGMegjhQMow5yhinpQ7yji36soGuUpUynQPs7 +P5tm3ojZPeQGNmYof3Csc2yTrMLrCidt8xFkcgtZydOJ9sQSEgwc2of4nlvffIZb +dIR+13WOPVRmS5tBVkQWFrlSFtQ70BDhNK3SZfkAb4+QmLSR1MJFaUPWrQIDAQAB +AoGAUTnskYAIhRdEQ/1Vlp7HmNr05bl26C3VDjOMvroRZ7gUR3MxykS5YsTBK10R +gEsB8XVpFgCMzUO1yODShdCsEg9kCB3fzSWkunK8+TF2TKOM5uWlQwifKJvcNisR +Nbg3r8WygMMXaWSFA3xWoRuZ5It0jOX18v+x5RHHon/kaRECQQDl6FSwgJLeNAkR +pMNQGdRhmMesHWmNNBv3Wozqm6Wpkwo5ZXPsLt3pprd0GN5jX0IG7clT1/eMD9/G ++3UGqTj3AkEAwC0M2gv+QUhbaB+KSlOZDOi4gsnhnsnaM7HQGDJJ5no4y2EvnYI3 +Y5rPJWedeYlCV3ccMitjnjcIJHInRZBIewJBANgsamVDn9Ua7GQQni1U/COAek7V +oQfKNXmRROrbyxr1TSnGwQcU0kf+IIUjVQfu67CEKUeSzAqAapM4oULQHuUCQQC9 +J9qdiO6DXXAzRdA9pplgHnT2rzV3sSEoft3f4yfgRu8+KHPQqkpQrSE1pQ5YgWUe +aGwFabXNFkfab839562fAkBl8jPidQdKWEgSa6h5pm4++sXLdWl7p6jiyetH64W7 +HnhRryE3ptrRGO0hSV1v4bx3DKzeJiJRlWUWiSl7828t +-----END RSA PRIVATE KEY----- +>>>> Garbage to be ignore <<<< diff --git a/gio/tests/contenttype.c b/gio/tests/contenttype.c index 52487ca..8c08da6 100644 --- a/gio/tests/contenttype.c +++ b/gio/tests/contenttype.c @@ -18,6 +18,7 @@ test_guess (void) { gchar *res; gchar *expected; + gchar *existing_directory; gboolean uncertain; guchar data[] = "[Desktop Entry]\n" @@ -25,7 +26,17 @@ test_guess (void) "Name=appinfo-test\n" "Exec=./appinfo-test --option\n"; - res = g_content_type_guess ("/etc/", NULL, 0, &uncertain); +#ifdef G_OS_WIN32 + existing_directory = (gchar *) g_getenv ("SYSTEMROOT"); + + if (existing_directory) + existing_directory = g_strdup_printf ("%s/", existing_directory); +#else + existing_directory = g_strdup ("/etc/"); +#endif + + res = g_content_type_guess (existing_directory, NULL, 0, &uncertain); + g_free (existing_directory); expected = g_content_type_from_mime_type ("inode/directory"); g_assert_content_type_equals (expected, res); g_assert (uncertain); @@ -237,6 +248,7 @@ test_icon (void) static void test_symbolic_icon (void) { +#ifndef G_OS_WIN32 gchar *type; GIcon *icon; @@ -271,6 +283,7 @@ test_symbolic_icon (void) } g_object_unref (icon); g_free (type); +#endif } static void diff --git a/gio/tests/converter-stream.c b/gio/tests/converter-stream.c index c867249..8bec95c 100644 --- a/gio/tests/converter-stream.c +++ b/gio/tests/converter-stream.c @@ -341,8 +341,7 @@ test_expander (void) total_read += res; } - g_assert (total_read == n_written); - g_assert (memcmp (converted1, converted2, n_written) == 0); + g_assert_cmpmem (converted1, n_written, converted2, total_read); g_converter_reset (expander); @@ -371,10 +370,9 @@ test_expander (void) g_output_stream_close (cstream_out, NULL, NULL); - g_assert (g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (mem_out)) == n_written); - g_assert (memcmp (g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (mem_out)), - converted1, - n_written) == 0); + g_assert_cmpmem (g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (mem_out)), + g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (mem_out)), + converted1, n_written); g_free (converted1); g_free (converted2); @@ -433,8 +431,8 @@ test_compressor (void) total_read += res; } - g_assert (total_read == n_read - 1); /* Last 2 zeros are combined */ - g_assert (memcmp (converted, unexpanded_data, total_read) == 0); + /* "n_read - 1" because last 2 zeros are combined */ + g_assert_cmpmem (unexpanded_data, n_read - 1, converted, total_read); g_object_unref (cstream); @@ -461,10 +459,11 @@ test_compressor (void) g_output_stream_close (cstream_out, NULL, NULL); - g_assert (g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (mem_out)) == n_read - 1); /* Last 2 zeros are combined */ - g_assert (memcmp (g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (mem_out)), - unexpanded_data, - g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (mem_out))) == 0); + /* "n_read - 1" because last 2 zeros are combined */ + g_assert_cmpmem (g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (mem_out)), + g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (mem_out)), + unexpanded_data, + n_read - 1); g_object_unref (cstream_out); @@ -717,8 +716,7 @@ test_converter_leftover (void) total_read += res; } - g_assert_cmpint (total_read, ==, LEFTOVER_BUFSIZE); - g_assert (memcmp (converted, orig, LEFTOVER_BUFSIZE) == 0); + g_assert_cmpmem (orig, LEFTOVER_BUFSIZE, converted, total_read); g_object_unref (cstream); g_free (orig); @@ -795,10 +793,9 @@ test_roundtrip (gconstpointer data) g_output_stream_splice (ostream2, cistream1, 0, NULL, &error); g_assert_no_error (error); - g_assert_cmpuint (DATA_LENGTH * sizeof (guint32), ==, - g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (ostream2))); - g_assert (memcmp (data0, g_memory_output_stream_get_data ( - G_MEMORY_OUTPUT_STREAM (ostream2)), DATA_LENGTH * sizeof (guint32)) == 0); + g_assert_cmpmem (data0, DATA_LENGTH * sizeof (guint32), + g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (ostream2)), + g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (ostream2))); g_object_unref (istream1); g_converter_reset (decompressor); g_object_get (decompressor, "format", &fmt, NULL); @@ -1057,8 +1054,8 @@ test_converter_pollable (void) total_read += res; } - g_assert (total_read == n_read - 1); /* Last 2 zeros are combined */ - g_assert (memcmp (converted, unexpanded_data, total_read) == 0); + /* "n_read - 1" because last 2 zeros are combined */ + g_assert_cmpmem (unexpanded_data, n_read - 1, converted, total_read); g_object_unref (cstream); g_object_unref (left); @@ -1094,10 +1091,11 @@ test_converter_pollable (void) g_output_stream_close (cstream_out, NULL, NULL); - g_assert (g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (mem_out)) == n_read - 1); /* Last 2 zeros are combined */ - g_assert (memcmp (g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (mem_out)), - unexpanded_data, - g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (mem_out))) == 0); + /* "n_read - 1" because last 2 zeros are combined */ + g_assert_cmpmem (g_memory_output_stream_get_data (G_MEMORY_OUTPUT_STREAM (mem_out)), + g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (mem_out)), + unexpanded_data, + n_read - 1); g_object_unref (cstream_out); diff --git a/gio/tests/dbus-launch.c b/gio/tests/dbus-launch.c new file mode 100644 index 0000000..fa83065 --- /dev/null +++ b/gio/tests/dbus-launch.c @@ -0,0 +1,77 @@ +/* + * Mock version of dbus-launch, for gdbus-unix-addresses test + * + * Copyright © 2015 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, see . + */ + +#include + +#ifndef G_OS_UNIX +#error This is a Unix-specific test helper +#endif + +#include +#include +#include +#include + +#define ME "GDBus mock version of dbus-launch" + +static void +write_all (const void *ptr, + size_t len) +{ + const char *p = ptr; + + while (len > 0) + { + ssize_t done = write (STDOUT_FILENO, p, len); + + if (done == 0) + { + g_error ("%s: write: EOF", ME); + } + else if (done < 0) + { + if (errno == EINTR) + continue; + + g_error ("%s: write: %s", ME, g_strerror (errno)); + } + else + { + if (len < (size_t) done) + g_error ("%s: wrote too many bytes?", ME); + + len -= done; + p += done; + } + } +} + +int +main (int argc, + char *argv[]) +{ + pid_t pid = 0x2323; + long window_id = 0x42424242; + const char *addr = "hello:this=address-is-from-the,mock=dbus-launch"; + + write_all (addr, strlen (addr) + 1); + write_all (&pid, sizeof (pid)); + write_all (&window_id, sizeof (window_id)); + return 0; +} diff --git a/gio/tests/defaultvalue.c b/gio/tests/defaultvalue.c index f83327b..965402b 100644 --- a/gio/tests/defaultvalue.c +++ b/gio/tests/defaultvalue.c @@ -153,7 +153,7 @@ test_type (gconstpointer data) } if (g_test_verbose ()) - g_print ("Property %s.%s\n", g_type_name (pspec->owner_type), pspec->name); + g_printerr ("Property %s.%s\n", g_type_name (pspec->owner_type), pspec->name); g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec)); g_object_get_property (instance, pspec->name, &value); check_property ("Property", pspec, &value); diff --git a/gio/tests/desktop-app-info.c b/gio/tests/desktop-app-info.c index 31ea215..5f34ed1 100644 --- a/gio/tests/desktop-app-info.c +++ b/gio/tests/desktop-app-info.c @@ -172,14 +172,15 @@ test_fallback (void) apps = g_app_info_get_all_for_type ("text/x-python"); g_assert_cmpint (g_list_length (apps), ==, old_length + 2); - /* check the ordering */ - app = g_list_nth_data (apps, 0); - g_assert (g_app_info_equal (info1, app)); - - /* check that Test1 is the first recommended app */ + /* check that Test1 is among the recommended apps */ recomm = g_app_info_get_recommended_for_type ("text/x-python"); g_assert (recomm != NULL); - app = g_list_nth_data (recomm, 0); + for (l = recomm; l; l = l->next) + { + app = l->data; + if (g_app_info_equal (info1, app)) + break; + } g_assert (g_app_info_equal (info1, app)); /* and that Test2 is among the fallback apps */ diff --git a/gio/tests/file.c b/gio/tests/file.c index cba82d1..04eaea9 100644 --- a/gio/tests/file.c +++ b/gio/tests/file.c @@ -456,7 +456,7 @@ test_create_delete (gconstpointer d) */ if (!strcmp (G_OBJECT_TYPE_NAME (data->monitor), "GPollFileMonitor")) { - g_print ("skipping test for this GFileMonitor implementation"); + g_test_skip ("skipping test for this GFileMonitor implementation"); goto skip; } diff --git a/gio/tests/g-file.c b/gio/tests/g-file.c index 9e3a633..f87c1b1 100644 --- a/gio/tests/g-file.c +++ b/gio/tests/g-file.c @@ -290,7 +290,7 @@ resolve_arg (const gboolean is_uri_only, const char *arg) /* Test if we get URI string */ uri = g_file_get_uri (file1); g_assert_cmpstr (uri, !=, NULL); - g_print ("%s\n",uri); + g_printerr ("%s\n",uri); /* Test if we get correct value of the local path */ path = g_file_get_path (file1); @@ -371,7 +371,7 @@ get_relative_path (const gboolean use_uri, const gboolean should_have_prefix, co g_assert (file2 != NULL); has_prefix = g_file_has_prefix (file2, file1); - g_print ("%s %s\n", dir1, dir2); + g_printerr ("%s %s\n", dir1, dir2); g_assert (has_prefix == should_have_prefix); relative_path = g_file_get_relative_path (file1, file2); diff --git a/gio/tests/gapplication.c b/gio/tests/gapplication.c index 39e1ff4..33d757e 100644 --- a/gio/tests/gapplication.c +++ b/gio/tests/gapplication.c @@ -808,6 +808,159 @@ test_busy (void) session_bus_down (); } +/* + * Test that handle-local-options works as expected + */ + +static gint +test_local_options (GApplication *app, + GVariantDict *options, + gpointer data) +{ + gboolean *called = data; + + *called = TRUE; + + if (g_variant_dict_contains (options, "success")) + return 0; + else if (g_variant_dict_contains (options, "failure")) + return 1; + else + return -1; +} + +static gint +second_handler (GApplication *app, + GVariantDict *options, + gpointer data) +{ + gboolean *called = data; + + *called = TRUE; + + return 2; +} + +static void +test_handle_local_options_success (void) +{ + if (g_test_subprocess ()) + { + char *binpath = g_test_build_filename (G_TEST_BUILT, "unimportant", NULL); + gchar *argv[] = { binpath, "--success", NULL }; + GApplication *app; + gboolean called = FALSE; + gboolean called2 = FALSE; + int status; + + app = g_application_new ("org.gtk.TestApplication", 0); + g_application_add_main_option (app, "success", 0, G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, "", ""); + g_application_add_main_option (app, "failure", 0, G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, "", ""); + g_signal_connect (app, "handle-local-options", G_CALLBACK (test_local_options), &called); + g_signal_connect (app, "handle-local-options", G_CALLBACK (second_handler), &called2); + + status = g_application_run (app, G_N_ELEMENTS (argv) -1, argv); + g_assert (called); + g_assert (!called2); + g_assert_cmpint (status, ==, 0); + + g_object_unref (app); + g_free (binpath); + return; + } + + g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_INHERIT_STDOUT | G_TEST_SUBPROCESS_INHERIT_STDERR); + g_test_trap_assert_passed (); +} + +static void +test_handle_local_options_failure (void) +{ + if (g_test_subprocess ()) + { + char *binpath = g_test_build_filename (G_TEST_BUILT, "unimportant", NULL); + gchar *argv[] = { binpath, "--failure", NULL }; + GApplication *app; + gboolean called = FALSE; + gboolean called2 = FALSE; + int status; + + app = g_application_new ("org.gtk.TestApplication", 0); + g_application_add_main_option (app, "success", 0, G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, "", ""); + g_application_add_main_option (app, "failure", 0, G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, "", ""); + g_signal_connect (app, "handle-local-options", G_CALLBACK (test_local_options), &called); + g_signal_connect (app, "handle-local-options", G_CALLBACK (second_handler), &called2); + + status = g_application_run (app, G_N_ELEMENTS (argv) -1, argv); + g_assert (called); + g_assert (!called2); + g_assert_cmpint (status, ==, 1); + + g_object_unref (app); + g_free (binpath); + return; + } + + g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_INHERIT_STDOUT | G_TEST_SUBPROCESS_INHERIT_STDERR); + g_test_trap_assert_passed (); +} + +static void +test_handle_local_options_passthrough (void) +{ + if (g_test_subprocess ()) + { + char *binpath = g_test_build_filename (G_TEST_BUILT, "unimportant", NULL); + gchar *argv[] = { binpath, NULL }; + GApplication *app; + gboolean called = FALSE; + gboolean called2 = FALSE; + int status; + + app = g_application_new ("org.gtk.TestApplication", 0); + g_application_add_main_option (app, "success", 0, G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, "", ""); + g_application_add_main_option (app, "failure", 0, G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, "", ""); + g_signal_connect (app, "handle-local-options", G_CALLBACK (test_local_options), &called); + g_signal_connect (app, "handle-local-options", G_CALLBACK (second_handler), &called2); + + status = g_application_run (app, G_N_ELEMENTS (argv) -1, argv); + g_assert (called); + g_assert (called2); + g_assert_cmpint (status, ==, 2); + + g_object_unref (app); + g_free (binpath); + return; + } + + g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_INHERIT_STDOUT | G_TEST_SUBPROCESS_INHERIT_STDERR); + g_test_trap_assert_passed (); +} + +static void +test_api (void) +{ + GApplication *app; + GSimpleAction *action; + + app = g_application_new ("org.gtk.TestApplication", 0); + + /* add an action without a name */ + g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, "*assertion*failed*"); + action = g_simple_action_new (NULL, NULL); + g_assert (action == NULL); + g_test_assert_expected_messages (); + + /* also, gapplication shouldn't accept actions without names */ + action = g_object_new (G_TYPE_SIMPLE_ACTION, NULL); + g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, "*action has no name*"); + g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (action)); + g_test_assert_expected_messages (); + + g_object_unref (action); + g_object_unref (app); +} + int main (int argc, char **argv) { @@ -829,6 +982,10 @@ main (int argc, char **argv) g_test_add_func ("/gapplication/resource-path", test_resource_path); g_test_add_func ("/gapplication/test-help", test_help); g_test_add_func ("/gapplication/test-busy", test_busy); + g_test_add_func ("/gapplication/test-handle-local-options1", test_handle_local_options_success); + g_test_add_func ("/gapplication/test-handle-local-options2", test_handle_local_options_failure); + g_test_add_func ("/gapplication/test-handle-local-options3", test_handle_local_options_passthrough); + g_test_add_func ("/gapplication/api", test_api); return g_test_run (); } diff --git a/gio/tests/gdbus-connection-loss.c b/gio/tests/gdbus-connection-loss.c index d807193..8ebb870 100644 --- a/gio/tests/gdbus-connection-loss.c +++ b/gio/tests/gdbus-connection-loss.c @@ -124,8 +124,7 @@ main (int argc, g_assert (g_spawn_command_line_async (path, NULL)); g_free (path); - /* wait for the service to come up */ - usleep (500 * 1000); + ensure_gdbus_testserver_up (); /* Create the connection in the main thread */ error = NULL; diff --git a/gio/tests/gdbus-connection.c b/gio/tests/gdbus-connection.c index 8d0b0df..488f213 100644 --- a/gio/tests/gdbus-connection.c +++ b/gio/tests/gdbus-connection.c @@ -49,7 +49,7 @@ _log (const gchar *format, ...) now_tm = localtime (&now_time); strftime (time_buf, sizeof time_buf, "%H:%M:%S", now_tm); - g_print ("%s.%06d: %s\n", + g_printerr ("%s.%06d: %s\n", time_buf, (gint) now.tv_usec / 1000, str); g_free (str); @@ -291,6 +291,9 @@ msg_cb_expect_error_disconnected (GDBusConnection *connection, GError *error; GVariant *result; + /* Make sure gdbusconnection isn't holding @connection's lock. (#747349) */ + g_dbus_connection_get_last_serial (connection); + error = NULL; result = g_dbus_connection_call_finish (connection, res, @@ -311,6 +314,9 @@ msg_cb_expect_error_unknown_method (GDBusConnection *connection, GError *error; GVariant *result; + /* Make sure gdbusconnection isn't holding @connection's lock. (#747349) */ + g_dbus_connection_get_last_serial (connection); + error = NULL; result = g_dbus_connection_call_finish (connection, res, @@ -331,6 +337,9 @@ msg_cb_expect_success (GDBusConnection *connection, GError *error; GVariant *result; + /* Make sure gdbusconnection isn't holding @connection's lock. (#747349) */ + g_dbus_connection_get_last_serial (connection); + error = NULL; result = g_dbus_connection_call_finish (connection, res, @@ -350,6 +359,9 @@ msg_cb_expect_error_cancelled (GDBusConnection *connection, GError *error; GVariant *result; + /* Make sure gdbusconnection isn't holding @connection's lock. (#747349) */ + g_dbus_connection_get_last_serial (connection); + error = NULL; result = g_dbus_connection_call_finish (connection, res, @@ -370,6 +382,9 @@ msg_cb_expect_error_cancelled_2 (GDBusConnection *connection, GError *error; GVariant *result; + /* Make sure gdbusconnection isn't holding @connection's lock. (#747349) */ + g_dbus_connection_get_last_serial (connection); + error = NULL; result = g_dbus_connection_call_finish (connection, res, @@ -1100,10 +1115,13 @@ send_bogus_message (GDBusConnection *c, guint32 *out_serial) g_object_unref (m); } +#define SLEEP_USEC (100 * 1000) + static gpointer serials_thread_func (GDBusConnection *c) { guint32 message_serial; + guint i; /* No calls on this thread yet */ g_assert_cmpint (g_dbus_connection_get_last_serial(c), ==, 0); @@ -1112,8 +1130,15 @@ serials_thread_func (GDBusConnection *c) message_serial = 0; send_bogus_message (c, &message_serial); - /* Give it some time to actually send the message out */ - g_usleep (250000); + /* Give it some time to actually send the message out. 10 seconds + * should be plenty, even on slow machines. */ + for (i = 0; i < 10 * G_USEC_PER_SEC / SLEEP_USEC; i++) + { + if (g_dbus_connection_get_last_serial(c) != 0) + break; + + g_usleep (SLEEP_USEC); + } g_assert_cmpint (g_dbus_connection_get_last_serial(c), !=, 0); g_assert_cmpint (g_dbus_connection_get_last_serial(c), ==, message_serial); diff --git a/gio/tests/gdbus-exit-on-close.c b/gio/tests/gdbus-exit-on-close.c index 5ec6e93..291cc8f 100644 --- a/gio/tests/gdbus-exit-on-close.c +++ b/gio/tests/gdbus-exit-on-close.c @@ -60,8 +60,6 @@ quit_later_cb (gpointer data G_GNUC_UNUSED) return FALSE; } -#define VANISHED_PATTERN "*Remote peer vanished with error: Underlying GIOStream returned 0 bytes on an async read (g-io-error-quark, 0). Exiting.*" - static void closed_cb (GDBusConnection *c G_GNUC_UNUSED, gboolean remote_peer_vanished, @@ -188,15 +186,9 @@ test_exit_on_close (gconstpointer test_data) if (td->exit_on_close == EXPLICITLY_FALSE || td->who_closes == LOCAL) - { - g_test_trap_assert_stderr_unmatched (VANISHED_PATTERN); - g_test_trap_assert_passed (); - } + g_test_trap_assert_passed (); else - { - g_test_trap_assert_stderr (VANISHED_PATTERN); - g_test_trap_assert_failed(); - } + g_test_trap_assert_failed(); } /* ---------------------------------------------------------------------------------------------------- */ diff --git a/gio/tests/gdbus-export.c b/gio/tests/gdbus-export.c index 7502023..921ba40 100644 --- a/gio/tests/gdbus-export.c +++ b/gio/tests/gdbus-export.c @@ -733,10 +733,17 @@ static const GDBusSubtreeVTable dynamic_subtree_vtable = /* -------------------- */ +typedef struct +{ + const gchar *object_path; + gboolean check_remote_errors; +} TestDispatchThreadFuncArgs; + static gpointer test_dispatch_thread_func (gpointer user_data) { - const gchar *object_path = user_data; + TestDispatchThreadFuncArgs *args = user_data; + const gchar *object_path = args->object_path; GDBusProxy *foo_proxy; GVariant *value; GVariant *inner; @@ -897,8 +904,13 @@ test_dispatch_thread_func (gpointer user_data) NULL, &error); g_assert (value == NULL); - g_assert_error (error, G_DBUS_ERROR, G_DBUS_ERROR_SPAWN_FILE_INVALID); - g_assert_cmpstr (error->message, ==, "GDBus.Error:org.freedesktop.DBus.Error.Spawn.FileInvalid: Returning some error instead of writing the value 'NotReadable' to the property ''But Writable you are!''"); + if (args->check_remote_errors) + { + /* _with_closures variant doesn't support customizing error data. */ + g_assert_error (error, G_DBUS_ERROR, G_DBUS_ERROR_SPAWN_FILE_INVALID); + g_assert_cmpstr (error->message, ==, "GDBus.Error:org.freedesktop.DBus.Error.Spawn.FileInvalid: Returning some error instead of writing the value 'NotReadable' to the property ''But Writable you are!''"); + } + g_assert (error != NULL && error->domain == G_DBUS_ERROR); g_error_free (error); error = NULL; @@ -941,14 +953,17 @@ test_dispatch_thread_func (gpointer user_data) } static void -test_dispatch (const gchar *object_path) +test_dispatch (const gchar *object_path, + gboolean check_remote_errors) { GThread *thread; + + TestDispatchThreadFuncArgs args = {object_path, check_remote_errors}; /* run this in a thread to avoid deadlocks */ thread = g_thread_new ("test_dispatch", test_dispatch_thread_func, - (gpointer) object_path); + (gpointer) &args); g_main_loop_run (loop); g_thread_join (thread); } @@ -1344,8 +1359,8 @@ test_object_registration (void) * We do this for both a regular registered object (/foo/boss) and also for an object * registered through the subtree mechanism. */ - test_dispatch ("/foo/boss"); - test_dispatch ("/foo/boss/executives/vp0"); + test_dispatch ("/foo/boss", TRUE); + test_dispatch ("/foo/boss/executives/vp0", TRUE); /* To prevent from exiting and attaching a D-Bus tool like D-Feet; uncomment: */ #if 0 @@ -1392,6 +1407,34 @@ test_object_registration (void) g_object_unref (c); } +static void +test_object_registration_with_closures (void) +{ + GError *error; + guint registration_id; + + error = NULL; + c = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); + g_assert_no_error (error); + g_assert (c != NULL); + + registration_id = g_dbus_connection_register_object_with_closures (c, + "/foo/boss", + (GDBusInterfaceInfo *) &foo_interface_info, + g_cclosure_new (G_CALLBACK (foo_method_call), NULL, NULL), + g_cclosure_new (G_CALLBACK (foo_get_property), NULL, NULL), + g_cclosure_new (G_CALLBACK (foo_set_property), NULL, NULL), + &error); + g_assert_no_error (error); + g_assert (registration_id > 0); + + test_dispatch ("/foo/boss", FALSE); + + g_assert (g_dbus_connection_unregister_object (c, registration_id)); + + g_object_unref (c); +} + static const GDBusInterfaceInfo test_interface_info1 = { -1, @@ -1458,13 +1501,13 @@ check_interfaces (GDBusConnection *c, #if 0 if (g_strv_length ((gchar**)interfaces) != i - 1) { - g_print ("expected "); + g_printerr ("expected "); for (i = 0; interfaces[i]; i++) - g_print ("%s ", interfaces[i]); - g_print ("\ngot "); + g_printerr ("%s ", interfaces[i]); + g_printerr ("\ngot "); for (i = 0; node_info->interfaces[i]; i++) - g_print ("%s ", node_info->interfaces[i]->name); - g_print ("\n"); + g_printerr ("%s ", node_info->interfaces[i]->name); + g_printerr ("\n"); } #endif g_assert_cmpint (g_strv_length ((gchar**)interfaces), ==, i - 1); @@ -1738,6 +1781,7 @@ main (int argc, loop = g_main_loop_new (NULL, FALSE); g_test_add_func ("/gdbus/object-registration", test_object_registration); + g_test_add_func ("/gdbus/object-registration-with-closures", test_object_registration_with_closures); g_test_add_func ("/gdbus/registered-interfaces", test_registered_interfaces); g_test_add_func ("/gdbus/async-properties", test_async_properties); diff --git a/gio/tests/gdbus-object-manager-example/Makefile.in b/gio/tests/gdbus-object-manager-example/Makefile.in new file mode 100644 index 0000000..42d335c --- /dev/null +++ b/gio/tests/gdbus-object-manager-example/Makefile.in @@ -0,0 +1,1535 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) + +# The docs pull these in, so we need them even if not doing 'make check' +@ENABLE_GTK_DOC_TRUE@am__append_15 = $(GDBUS_GENERATED) +@ENABLE_GTK_DOC_TRUE@am__append_16 = libgdbus-example-objectmanager.la +subdir = gio/tests/gdbus-object-manager-example +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES) +am__DEPENDENCIES_1 = +libgdbus_example_objectmanager_la_DEPENDENCIES = \ + $(top_builddir)/glib/libglib-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/gio/libgio-2.0.la $(am__DEPENDENCIES_1) +nodist_libgdbus_example_objectmanager_la_OBJECTS = \ + gdbus-example-objectmanager-generated.lo +libgdbus_example_objectmanager_la_OBJECTS = \ + $(nodist_libgdbus_example_objectmanager_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am_libgdbus_example_objectmanager_la_rpath = +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am_libgdbus_example_objectmanager_la_rpath = +@ENABLE_GTK_DOC_TRUE@am_libgdbus_example_objectmanager_la_rpath = +@ENABLE_INSTALLED_TESTS_TRUE@am_libgdbus_example_objectmanager_la_rpath = \ +@ENABLE_INSTALLED_TESTS_TRUE@ -rpath $(installed_testdir) +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(nodist_libgdbus_example_objectmanager_la_SOURCES) +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/glib.mk $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = $(am__append_15) +BUILT_EXTRA_DIST = +CLEANFILES = *.log *.trs $(am__append_14) $(GDBUS_GENERATED) +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \ + gdbus-example-objectmanager.xml + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) $(am__append_16) +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +AM_CPPFLAGS = -g $(gio_INCLUDES) $(GLIB_DEBUG_FLAGS) -I$(top_builddir)/gio -I$(top_srcdir)/gio + +# ------------------------------------------------------------------------ +GDBUS_GENERATED = \ + gdbus-example-objectmanager-generated.h \ + gdbus-example-objectmanager-generated.c \ + gdbus-example-objectmanager-generated-org.gtk.GDBus.Example.ObjectManager.Animal.xml \ + gdbus-example-objectmanager-generated-org.gtk.GDBus.Example.ObjectManager.Cat.xml \ + $(NULL) + +test_ltlibraries = libgdbus-example-objectmanager.la +nodist_libgdbus_example_objectmanager_la_SOURCES = \ + gdbus-example-objectmanager-generated.h \ + gdbus-example-objectmanager-generated.c + +libgdbus_example_objectmanager_la_LIBADD = \ + $(top_builddir)/glib/libglib-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/gio/libgio-2.0.la \ + $(NULL) + +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gio/tests/gdbus-object-manager-example/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gio/tests/gdbus-object-manager-example/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgdbus-example-objectmanager.la: $(libgdbus_example_objectmanager_la_OBJECTS) $(libgdbus_example_objectmanager_la_DEPENDENCIES) $(EXTRA_libgdbus_example_objectmanager_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(am_libgdbus_example_objectmanager_la_rpath) $(libgdbus_example_objectmanager_la_OBJECTS) $(libgdbus_example_objectmanager_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdbus-example-objectmanager-generated.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \ + check-local clean clean-checkLTLIBRARIES clean-checkPROGRAMS \ + clean-generic clean-installed_testLTLIBRARIES \ + clean-installed_testPROGRAMS clean-libtool \ + clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +$(GDBUS_GENERATED) : gdbus-example-objectmanager.xml Makefile $(top_builddir)/gio/gdbus-2.0/codegen/gdbus-codegen + $(AM_V_GEN) UNINSTALLED_GLIB_SRCDIR=$(top_srcdir) \ + UNINSTALLED_GLIB_BUILDDIR=$(top_builddir) \ + $(PYTHON) $(top_builddir)/gio/gdbus-2.0/codegen/gdbus-codegen \ + --interface-prefix org.gtk.GDBus.Example.ObjectManager. \ + --c-namespace Example \ + --c-generate-object-manager \ + --generate-c-code gdbus-example-objectmanager-generated \ + --generate-docbook gdbus-example-objectmanager-generated \ + $< \ + $(NULL) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gio/tests/gdbus-peer.c b/gio/tests/gdbus-peer.c index 6c6f3b0..841c40c 100644 --- a/gio/tests/gdbus-peer.c +++ b/gio/tests/gdbus-peer.c @@ -298,7 +298,7 @@ on_new_connection (GDBusServer *server, GError *error; guint reg_id; - //g_print ("Client connected.\n" + //g_printerr ("Client connected.\n" // "Negotiated capabilities: unix-fd-passing=%d\n", // g_dbus_connection_get_capabilities (connection) & G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING); @@ -335,14 +335,34 @@ on_new_connection (GDBusServer *server, return TRUE; } -static void -create_service_loop (GMainContext *service_context) +/* We don't tell the main thread about the new GDBusServer until it has + * had a chance to start listening. */ +static gboolean +idle_in_service_loop (gpointer loop) { g_assert (service_loop == NULL); g_mutex_lock (&service_loop_lock); - service_loop = g_main_loop_new (service_context, FALSE); + service_loop = loop; g_cond_broadcast (&service_loop_cond); g_mutex_unlock (&service_loop_lock); + + return G_SOURCE_REMOVE; +} + +static void +run_service_loop (GMainContext *service_context) +{ + GMainLoop *loop; + GSource *source; + + g_assert (service_loop == NULL); + + loop = g_main_loop_new (service_context, FALSE); + source = g_idle_source_new (); + g_source_set_callback (source, idle_in_service_loop, loop, NULL); + g_source_attach (source, service_context); + g_source_unref (source); + g_main_loop_run (loop); } static void @@ -417,8 +437,7 @@ service_thread_func (gpointer user_data) g_dbus_server_start (server); - create_service_loop (service_context); - g_main_loop_run (service_loop); + run_service_loop (service_context); g_main_context_pop_thread_default (service_context); @@ -512,8 +531,7 @@ service_thread_func (gpointer data) data); g_socket_service_start (service); - create_service_loop (service_context); - g_main_loop_run (service_loop); + run_service_loop (service_context); g_main_context_pop_thread_default (service_context); @@ -817,8 +835,7 @@ test_peer (void) &len2, &error); g_assert_no_error (error); - g_assert_cmpint (len, ==, len2); - g_assert (memcmp (buf, buf2, len) == 0); + g_assert_cmpmem (buf, len, buf2, len2); g_free (buf2); g_free (buf); } @@ -1212,8 +1229,7 @@ nonce_tcp_service_thread_func (gpointer user_data) g_dbus_server_start (server); - create_service_loop (service_context); - g_main_loop_run (service_loop); + run_service_loop (service_context); g_main_context_pop_thread_default (service_context); @@ -1405,8 +1421,7 @@ tcp_anonymous_service_thread_func (gpointer user_data) g_dbus_server_start (server); - create_service_loop (service_context); - g_main_loop_run (service_loop); + run_service_loop (service_context); g_main_context_pop_thread_default (service_context); @@ -1519,7 +1534,7 @@ codegen_on_new_connection (GDBusServer *server, ExampleAnimal *animal = user_data; GError *error = NULL; - /* g_print ("Client connected.\n" */ + /* g_printerr ("Client connected.\n" */ /* "Negotiated capabilities: unix-fd-passing=%d\n", */ /* g_dbus_connection_get_capabilities (connection) & G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING); */ @@ -1561,8 +1576,7 @@ codegen_service_thread_func (gpointer user_data) G_CALLBACK (codegen_on_new_connection), animal); - create_service_loop (service_context); - g_main_loop_run (service_loop); + run_service_loop (service_context); g_object_unref (animal); diff --git a/gio/tests/gdbus-proxy-threads.c b/gio/tests/gdbus-proxy-threads.c index 5181a9a..c25b8e7 100644 --- a/gio/tests/gdbus-proxy-threads.c +++ b/gio/tests/gdbus-proxy-threads.c @@ -71,8 +71,8 @@ run_proxy_thread (gpointer data) GError *error = NULL; GVariant *ret; - if (!g_test_quiet ()) - g_print ("."); + if (g_test_verbose ()) + g_printerr ("."); proxy = g_dbus_proxy_new_sync (connection, G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START | @@ -232,8 +232,8 @@ test_proxy (void) /* TODO: should call session_bus_down() but that requires waiting * for all the oustanding method calls to complete... */ - if (!g_test_quiet ()) - g_print ("\n"); + if (g_test_verbose ()) + g_printerr ("\n"); } int diff --git a/gio/tests/gdbus-serialization.c b/gio/tests/gdbus-serialization.c index e31dbe4..a405189 100644 --- a/gio/tests/gdbus-serialization.c +++ b/gio/tests/gdbus-serialization.c @@ -511,6 +511,7 @@ get_body_signature (GVariant *value) return ret; } +/* If @value is floating, this assumes ownership. */ static void check_serialization (GVariant *value, const gchar *expected_dbus_1_output) @@ -628,6 +629,7 @@ check_serialization (GVariant *value, } } g_object_unref (recovered_message); + g_free (blob); } g_object_unref (message); @@ -692,6 +694,7 @@ message_serialize_complex (void) " dict_entry:\n" " string: 'two'\n" " string: 'black'\n"); + g_variant_unref (value); value = g_variant_parse (G_VARIANT_TYPE ("(sa{sv}as)"), "('01234567890123456', {}, ['Something'])", @@ -703,6 +706,7 @@ message_serialize_complex (void) "value 1: array:\n" "value 2: array:\n" " string: 'Something'\n"); + g_variant_unref (value); /* https://bugzilla.gnome.org/show_bug.cgi?id=621838 */ check_serialization (g_variant_new_parsed ("(@aay [], {'cwd': <'/home/davidz/Hacking/glib/gio/tests'>})"), @@ -727,6 +731,7 @@ message_serialize_complex (void) "value 1: array:\n" " unix-fd: (not extracted)\n" " unix-fd: (not extracted)\n"); + g_variant_unref (value); #endif } @@ -838,6 +843,7 @@ message_serialize_invalid (void) g_assert (message == NULL); dbus_free (blob); + dbus_message_unref (dbus_message); } } @@ -1015,6 +1021,7 @@ message_parse_empty_arrays_of_arrays (void) " array:\n" " array:\n" " array:\n"); + g_variant_unref (body); body = g_variant_parse (G_VARIANT_TYPE ("(aaa{uu})"), "([@aa{uu} [], [], []],)", NULL, NULL, &error); @@ -1024,6 +1031,7 @@ message_parse_empty_arrays_of_arrays (void) " array:\n" " array:\n" " array:\n"); + g_variant_unref (body); /* Due to the same bug, g_dbus_message_new_from_blob() would fail for this * message because it would try to read past the end of the string. Hence, @@ -1044,6 +1052,7 @@ message_parse_empty_arrays_of_arrays (void) " struct:\n" " array:\n" " array:\n"); + g_variant_unref (body); } /* ---------------------------------------------------------------------------------------------------- */ @@ -1051,32 +1060,23 @@ message_parse_empty_arrays_of_arrays (void) static void test_double_array (void) { - GDBusConnection *conn; - GError *error = NULL; GVariantBuilder builder; + GVariant *body; g_test_bug ("732754"); - conn = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); - g_assert_no_error (error); - g_variant_builder_init (&builder, G_VARIANT_TYPE ("ad")); g_variant_builder_add (&builder, "d", (gdouble)0.0); g_variant_builder_add (&builder, "d", (gdouble)8.0); g_variant_builder_add (&builder, "d", (gdouble)22.0); g_variant_builder_add (&builder, "d", (gdouble)0.0); - - /* - * Some versions of glib encoded arrays of doubles wrong. Here we send such - * a message and check that we didn't get bumped from the connection. - */ - g_dbus_connection_call_sync (conn, "org.freedesktop.DBus", "/path", - "org.freedesktop.DBus", "InvalidNonExistantMethod", - g_variant_new ("(@ad)", g_variant_builder_end (&builder)), - NULL, G_DBUS_CALL_FLAGS_NO_AUTO_START, -1, NULL, &error); - g_assert_error (error, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD); - - g_object_unref (conn); + body = g_variant_new ("(@ad)", g_variant_builder_end (&builder)); + check_serialization (body, + "value 0: array:\n" + " double: 0.000000\n" + " double: 8.000000\n" + " double: 22.000000\n" + " double: 0.000000\n"); } /* ---------------------------------------------------------------------------------------------------- */ diff --git a/gio/tests/gdbus-test-codegen.c b/gio/tests/gdbus-test-codegen.c index 62c17e0..4abe5a1 100644 --- a/gio/tests/gdbus-test-codegen.c +++ b/gio/tests/gdbus-test-codegen.c @@ -1572,7 +1572,7 @@ om_on_signal (GDBusConnection *connection, { default: case 0: - g_print ("failing and om_data->state=%d on signal %s, params=%s\n", + g_printerr ("failing and om_data->state=%d on signal %s, params=%s\n", om_data->state, signal_name, g_variant_print (parameters, TRUE)); diff --git a/gio/tests/gdbus-tests.c b/gio/tests/gdbus-tests.c index 8b64e85..8237dd0 100644 --- a/gio/tests/gdbus-tests.c +++ b/gio/tests/gdbus-tests.c @@ -77,6 +77,58 @@ _g_assert_property_notify_run (gpointer object, return data.timed_out; } +static gboolean +_give_up (gpointer data) +{ + g_error ("%s", (const gchar *) data); + g_return_val_if_reached (TRUE); +} + +void +ensure_gdbus_testserver_up (void) +{ + guint id; + gchar *name_owner; + GDBusConnection *connection; + GDBusProxy *proxy; + GError *error = NULL; + + connection = g_bus_get_sync (G_BUS_TYPE_SESSION, + NULL, + &error); + + g_assert_no_error (error); + error = NULL; + + proxy = g_dbus_proxy_new_sync (connection, + G_DBUS_PROXY_FLAGS_NONE, + NULL, /* GDBusInterfaceInfo */ + "com.example.TestService", /* name */ + "/com/example/TestObject", /* object path */ + "com.example.Frob", /* interface */ + NULL, /* GCancellable */ + &error); + g_assert_no_error (error); + + id = g_timeout_add_seconds (60, _give_up, + "waited more than ~ 60s for gdbus-testserver to take its bus name"); + + while (TRUE) + { + name_owner = g_dbus_proxy_get_name_owner (proxy); + + if (name_owner != NULL) + break; + + g_main_context_iteration (NULL, TRUE); + } + + g_source_remove (id); + g_free (name_owner); + g_object_unref (proxy); + g_object_unref (connection); +} + /* ---------------------------------------------------------------------------------------------------- */ typedef struct diff --git a/gio/tests/gdbus-tests.h b/gio/tests/gdbus-tests.h index 538b265..6e31d7b 100644 --- a/gio/tests/gdbus-tests.h +++ b/gio/tests/gdbus-tests.h @@ -114,6 +114,8 @@ GDBusConnection *_g_bus_get_priv (GBusType bus_type, GCancellable *cancellable, GError **error); +void ensure_gdbus_testserver_up (void); + G_END_DECLS #endif /* __TESTS_H__ */ diff --git a/gio/tests/gdbus-threading.c b/gio/tests/gdbus-threading.c index c62b223..0e9b8b4 100644 --- a/gio/tests/gdbus-threading.c +++ b/gio/tests/gdbus-threading.c @@ -295,8 +295,8 @@ test_sleep_in_thread_func (gpointer _data) (GAsyncReadyCallback) sleep_cb, data); g_main_loop_run (data->thread_loop); - if (!g_test_quiet ()) - g_print ("A"); + if (g_test_verbose ()) + g_printerr ("A"); //g_debug ("done invoking async (%p)", g_thread_self ()); } else @@ -313,8 +313,8 @@ test_sleep_in_thread_func (gpointer _data) -1, NULL, &error); - if (!g_test_quiet ()) - g_print ("S"); + if (g_test_verbose ()) + g_printerr ("S"); //g_debug ("done invoking sync (%p)", g_thread_self ()); g_assert_no_error (error); g_assert (result != NULL); @@ -408,8 +408,8 @@ test_method_calls_on_proxy (GDBusProxy *proxy) g_assert_cmpint (elapsed_msec, >=, 3950); g_assert_cmpint (elapsed_msec, <, 8000); - if (!g_test_quiet ()) - g_print (" "); + if (g_test_verbose ()) + g_printerr (" "); } } @@ -419,7 +419,6 @@ test_method_calls_in_thread (void) GDBusProxy *proxy; GDBusConnection *connection; GError *error; - gchar *name_owner; error = NULL; connection = g_bus_get_sync (G_BUS_TYPE_SESSION, @@ -437,17 +436,13 @@ test_method_calls_in_thread (void) &error); g_assert_no_error (error); - name_owner = g_dbus_proxy_get_name_owner (proxy); - g_assert_cmpstr (name_owner, !=, NULL); - g_free (name_owner); - test_method_calls_on_proxy (proxy); g_object_unref (proxy); g_object_unref (connection); - if (!g_test_quiet ()) - g_print ("\n"); + if (g_test_verbose ()) + g_printerr ("\n"); } #define SLEEP_MIN_USEC 1 @@ -532,7 +527,7 @@ test_threaded_singleton (void) g_error ("connection had too many refs"); if (g_test_verbose () && (i % (n/50)) == 0) - g_print ("%u%%\n", ((i * 100) / n)); + g_printerr ("%u%%\n", ((i * 100) / n)); /* Delay for a random time on each side of the race, to perturb the * timing. Ideally, we want each side to win half the races; these @@ -574,7 +569,7 @@ test_threaded_singleton (void) } if (g_test_verbose ()) - g_print ("Unref won %u races; Get won %u races\n", unref_wins, get_wins); + g_printerr ("Unref won %u races; Get won %u races\n", unref_wins, get_wins); } /* ---------------------------------------------------------------------------------------------------- */ @@ -596,8 +591,7 @@ main (int argc, g_assert (g_spawn_command_line_async (path, NULL)); g_free (path); - /* wait for the service to come up */ - usleep (500 * 1000); + ensure_gdbus_testserver_up (); /* Create the connection in the main thread */ error = NULL; diff --git a/gio/tests/gdbus-unix-addresses.c b/gio/tests/gdbus-unix-addresses.c new file mode 100644 index 0000000..e083287 --- /dev/null +++ b/gio/tests/gdbus-unix-addresses.c @@ -0,0 +1,170 @@ +/* GLib testing framework examples and tests + * + * Copyright © 2015 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, see . + */ + +#include + +#ifndef G_OS_UNIX +#error This is a Unix-specific test +#endif + +#include + +#include +#include +#include + +static void +print_address (void) +{ + GError *error = NULL; + gchar *addr; + + addr = g_dbus_address_get_for_bus_sync (G_BUS_TYPE_SESSION, NULL, + &error); + + g_assert_no_error (error); + g_assert_nonnull (addr); + g_print ("%s\n", addr); + g_free (addr); +} + +static GSocket *mock_bus = NULL; +static gchar *mock_bus_path = NULL; +/* this is deliberately something that needs escaping */ +static gchar tmpdir[] = "/tmp/gdbus,unix,test.XXXXXX"; + +static void +set_up_mock_xdg_runtime_dir (void) +{ + GError *error = NULL; + GSocketAddress *addr; + + mock_bus = g_socket_new (G_SOCKET_FAMILY_UNIX, G_SOCKET_TYPE_STREAM, 0, + &error); + g_assert_no_error (error); + g_assert_true (G_IS_SOCKET (mock_bus)); + + /* alters tmpdir in-place */ + if (g_mkdtemp_full (tmpdir, 0700) == NULL) + g_error ("g_mkdtemp_full: %s", g_strerror (errno)); + + mock_bus_path = g_strconcat (tmpdir, "/bus", NULL); + addr = g_unix_socket_address_new (mock_bus_path); + g_socket_bind (mock_bus, addr, FALSE, &error); + g_assert_no_error (error); + g_object_unref (addr); + + g_setenv ("XDG_RUNTIME_DIR", tmpdir, TRUE); +} + +static void +tear_down_mock_xdg_runtime_dir (void) +{ + GError *error = NULL; + + g_socket_close (mock_bus, &error); + g_assert_no_error (error); + + if (g_unlink (mock_bus_path) < 0) + g_error ("g_unlink(\"%s\"): %s", mock_bus_path, g_strerror (errno)); + + if (g_rmdir (tmpdir) < 0) + g_error ("g_rmdir(\"%s\"): %s", tmpdir, g_strerror (errno)); + + g_clear_object (&mock_bus); + g_clear_pointer (&mock_bus_path, g_free); +} + +static gchar *path = NULL; + +static void +set_up_mock_dbus_launch (void) +{ + path = g_strconcat (g_test_get_dir (G_TEST_BUILT), ":", + g_getenv ("PATH"), NULL); + g_debug ("PATH=%s", path); + g_setenv ("PATH", path, TRUE); + + /* libdbus won't even try X11 autolaunch if DISPLAY is unset; GDBus + * does the same in Debian derivatives (proposed upstream in + * GNOME#723506) */ + g_setenv ("DISPLAY", "an unrealistic mock X11 display", TRUE); +} + +static void +tear_down_mock_dbus_launch (void) +{ + g_clear_pointer (&path, g_free); +} + +static void +test_x11_autolaunch (void) +{ + if (g_test_subprocess ()) + { + g_unsetenv ("DISPLAY"); + g_unsetenv ("DBUS_SESSION_BUS_ADDRESS"); + g_unsetenv ("XDG_RUNTIME_DIR"); + set_up_mock_dbus_launch (); + + print_address (); + + tear_down_mock_dbus_launch (); + return; + } + + g_test_trap_subprocess (NULL, 0, 0); + g_test_trap_assert_stderr_unmatched ("?*"); + g_test_trap_assert_stdout ("hello:this=address-is-from-the,mock=dbus-launch\n"); + g_test_trap_assert_passed (); +} + +static void +test_xdg_runtime (void) +{ + if (g_test_subprocess ()) + { + g_unsetenv ("DISPLAY"); + g_unsetenv ("DBUS_SESSION_BUS_ADDRESS"); + set_up_mock_xdg_runtime_dir (); + set_up_mock_dbus_launch (); + + print_address (); + + tear_down_mock_dbus_launch (); + tear_down_mock_xdg_runtime_dir (); + return; + } + + g_test_trap_subprocess (NULL, 0, 0); + g_test_trap_assert_stderr_unmatched ("?*"); + g_test_trap_assert_stdout ("unix:path=/tmp/gdbus%2Cunix%2Ctest.*/bus\n"); + g_test_trap_assert_passed (); +} + +int +main (int argc, + char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/gdbus/x11-autolaunch", test_x11_autolaunch); + g_test_add_func ("/gdbus/xdg-runtime", test_xdg_runtime); + + return g_test_run(); +} diff --git a/gio/tests/gio-du.c b/gio/tests/gio-du.c index 3454108..58d1797 100644 --- a/gio/tests/gio-du.c +++ b/gio/tests/gio-du.c @@ -6,21 +6,6 @@ static gint option_format_size; static gint outstanding_asyncs; -#ifdef G_OS_WIN32 -typedef struct { - int newmode; -} _startupinfo; - -#ifndef _MSC_VER - -extern void __wgetmainargs(int *argc, - wchar_t ***wargv, - wchar_t ***wenviron, - int expand_wildcards, - _startupinfo *startupinfo); -#endif -#endif - static void print_result (const gchar *filename, guint64 disk_usage, @@ -91,12 +76,10 @@ main (int argc, char **argv) GFileMeasureProgressCallback progress = NULL; GFileMeasureFlags flags = 0; gint i; -#ifdef G_OS_WIN32 - int wargc; - wchar_t **wargv, **wenvp; - _startupinfo si = { 0 }; - __wgetmainargs (&wargc, &wargv, &wenvp, 0, &si); +#ifdef G_OS_WIN32 + argv = g_win32_get_command_line (); + argc = g_strv_length (argv); #endif setlocale (LC_ALL, ""); @@ -111,6 +94,9 @@ main (int argc, char **argv) if (g_str_equal (argv[i], "--help")) { g_print ("usage: du [--progress] [--async] [-x] [-h] [-h] [--apparent-size] [--any-error] [--] files...\n"); +#ifdef G_OS_WIN32 + g_strfreev (argv); +#endif return 0; } else if (g_str_equal (argv[i], "-x")) @@ -134,24 +120,20 @@ main (int argc, char **argv) if (!argv[i]) { g_printerr ("usage: du [--progress] [--async] [-x] [-h] [-h] [--apparent-size] [--any-error] [--] files...\n"); +#ifdef G_OS_WIN32 + g_strfreev (argv); +#endif return 1; } -#ifdef G_OS_WIN32 - while (wargv[i]) - { - gchar *argv_utf8 = g_utf16_to_utf8 (wargv[i], -1, NULL, NULL, NULL); -#else while (argv[i]) { - gchar *argv_utf8 = g_strdup (argv[i]); -#endif - GFile *file = g_file_new_for_commandline_arg (argv_utf8); + GFile *file = g_file_new_for_commandline_arg (argv[i]); if (option_use_async) { g_file_measure_disk_usage_async (file, flags, G_PRIORITY_DEFAULT, NULL, - progress, argv_utf8, async_ready_func, argv_utf8); + progress, argv[i], async_ready_func, argv[i]); outstanding_asyncs++; } else @@ -161,10 +143,9 @@ main (int argc, char **argv) guint64 num_dirs; guint64 num_files; - g_file_measure_disk_usage (file, flags, NULL, progress, argv_utf8, + g_file_measure_disk_usage (file, flags, NULL, progress, argv[i], &disk_usage, &num_dirs, &num_files, &error); - print_result (argv_utf8, disk_usage, num_dirs, num_files, error, '\n'); - g_free (argv_utf8); + print_result (argv[i], disk_usage, num_dirs, num_files, error, '\n'); } g_object_unref (file); @@ -175,5 +156,9 @@ main (int argc, char **argv) while (outstanding_asyncs) g_main_context_iteration (NULL, TRUE); +#ifdef G_OS_WIN32 + g_strfreev (argv); +#endif + return 0; } diff --git a/gio/tests/gschema-compile.c b/gio/tests/gschema-compile.c index 1d3cc19..a215a84 100644 --- a/gio/tests/gschema-compile.c +++ b/gio/tests/gschema-compile.c @@ -44,6 +44,8 @@ test_schema (gpointer data) if (test->err) { g_test_trap_assert_failed (); + g_test_trap_assert_stderr_unmatched ("*CRITICAL*"); + g_test_trap_assert_stderr_unmatched ("*WARNING*"); g_test_trap_assert_stderr (test->err); } else @@ -126,6 +128,9 @@ static const SchemaTest tests[] = { { "flags-more-than-one-bit", NULL, "*flags values must have at most 1 bit set*" }, { "flags-with-enum-attr", NULL, "* not (yet) defined*" }, { "flags-with-enum-tag", NULL, "* not (yet) defined*" }, + { "summary-xmllang", NULL, "*Only one element allowed*" }, + { "description-xmllang", NULL, "*Only one element allowed*" }, + { "summary-xmllang-and-attrs", NULL, "*attribute 'lang' invalid for element 'summary'*" }, { "inherit-gettext-domain", NULL, NULL }, { "range-type-test", NULL, NULL }, { "cdata", NULL, NULL } diff --git a/gio/tests/gsettings.c b/gio/tests/gsettings.c index 4b20795..ee8e8fa 100644 --- a/gio/tests/gsettings.c +++ b/gio/tests/gsettings.c @@ -1761,9 +1761,7 @@ test_strinfo (void) strinfo_builder_append_item (builder, "foo", 1); strinfo_builder_append_item (builder, "bar", 2); g_assert (strinfo_builder_append_alias (builder, "baz", "bar")); - g_assert_cmpint (builder->len % 4, ==, 0); - g_assert_cmpint (builder->len / 4, ==, length); - g_assert (memcmp (builder->str, strinfo, length * 4) == 0); + g_assert_cmpmem (builder->str, builder->len, strinfo, length * 4); g_string_free (builder, TRUE); } @@ -2107,13 +2105,15 @@ strv_set_equal (gchar **strv, ...) static void test_list_items (void) { + GSettingsSchema *schema; GSettings *settings; gchar **children; gchar **keys; settings = g_settings_new ("org.gtk.test"); + g_object_get (settings, "settings-schema", &schema, NULL); children = g_settings_list_children (settings); - keys = g_settings_list_keys (settings); + keys = g_settings_schema_list_keys (schema); g_assert (strv_set_equal (children, "basic-types", "complex-types", "localized", NULL)); g_assert (strv_set_equal (keys, "greeting", "farewell", NULL)); @@ -2121,6 +2121,7 @@ test_list_items (void) g_strfreev (children); g_strfreev (keys); + g_settings_schema_unref (schema); g_object_unref (settings); } @@ -2322,6 +2323,27 @@ test_schema_source (void) } static void +test_schema_list_keys (void) +{ + gchar **keys; + GSettingsSchemaSource *src = g_settings_schema_source_get_default (); + GSettingsSchema *schema = g_settings_schema_source_lookup (src, "org.gtk.test", TRUE); + g_assert (schema != NULL); + + keys = g_settings_schema_list_keys (schema); + + g_assert (strv_set_equal ((gchar **)keys, + "greeting", + "farewell", + NULL)); + + + g_strfreev (keys); + g_settings_schema_unref (schema); + g_settings_schema_source_unref (src); +} + +static void test_actions (void) { GAction *string, *toggle; @@ -2526,14 +2548,17 @@ test_default_value (void) static void test_extended_schema (void) { + GSettingsSchema *schema; GSettings *settings; gchar **keys; settings = g_settings_new_with_path ("org.gtk.test.extends.extended", "/test/extendes/"); - keys = g_settings_list_keys (settings); + g_object_get (settings, "settings-schema", &schema, NULL); + keys = g_settings_schema_list_keys (schema); g_assert (strv_set_equal (keys, "int32", "string", "another-int32", NULL)); g_strfreev (keys); g_object_unref (settings); + g_settings_schema_unref (schema); } int @@ -2646,6 +2671,7 @@ main (int argc, char *argv[]) g_test_add_func ("/gsettings/mapped", test_get_mapped); g_test_add_func ("/gsettings/get-range", test_get_range); g_test_add_func ("/gsettings/schema-source", test_schema_source); + g_test_add_func ("/gsettings/schema-list-keys", test_schema_list_keys); g_test_add_func ("/gsettings/actions", test_actions); g_test_add_func ("/gsettings/null-backend", test_null_backend); g_test_add_func ("/gsettings/memory-backend", test_memory_backend); diff --git a/gio/tests/gsubprocess.c b/gio/tests/gsubprocess.c index 92bddd0..e1270b1 100644 --- a/gio/tests/gsubprocess.c +++ b/gio/tests/gsubprocess.c @@ -331,8 +331,9 @@ test_cat_utf8 (void) output_buf = g_memory_output_stream_steal_as_bytes ((GMemoryOutputStream*)output_buf_stream); - g_assert_cmpint (g_bytes_get_size (output_buf), ==, 13); - g_assert_cmpint (memcmp (g_bytes_get_data (output_buf, NULL), "hello, world!", 13), ==, 0); + g_assert_cmpmem (g_bytes_get_data (output_buf, NULL), + g_bytes_get_size (output_buf), + "hello, world!", 13); g_bytes_unref (output_buf); g_main_loop_unref (data.loop); @@ -611,8 +612,7 @@ on_communicate_complete (GObject *proc, stdout_len = strlen (stdout_str); } - g_assert_cmpint (stdout_len, ==, 11); - g_assert (memcmp (stdout_data, "hello world", 11) == 0); + g_assert_cmpmem (stdout_data, stdout_len, "hello world", 11); if (stdout) g_bytes_unref (stdout); g_free (stdout_str); @@ -683,8 +683,7 @@ test_communicate (void) g_assert_no_error (error); stdout_data = g_bytes_get_data (stdout, &stdout_len); - g_assert_cmpint (stdout_len, ==, 11); - g_assert (memcmp (stdout_data, "hello world", 11) == 0); + g_assert_cmpmem (stdout_data, stdout_len, "hello world", 11); g_bytes_unref (stdout); g_bytes_unref (input); diff --git a/gio/tests/gtesttlsbackend.c b/gio/tests/gtesttlsbackend.c index d5417fd..b97e4ef 100644 --- a/gio/tests/gtesttlsbackend.c +++ b/gio/tests/gtesttlsbackend.c @@ -68,6 +68,7 @@ struct _GTestTlsCertificate { GTlsCertificate parent_instance; gchar *key_pem; gchar *cert_pem; + GTlsCertificate *issuer; }; struct _GTestTlsCertificateClass { @@ -117,6 +118,9 @@ g_test_tls_certificate_get_property (GObject *object, case PROP_CERT_PRIVATE_KEY_PEM: g_value_set_string (value, cert->key_pem); break; + case PROP_CERT_ISSUER: + g_value_set_object (value, cert->issuer); + break; default: g_assert_not_reached (); break; @@ -139,9 +143,11 @@ g_test_tls_certificate_set_property (GObject *object, case PROP_CERT_PRIVATE_KEY_PEM: cert->key_pem = g_value_dup_string (value); break; + case PROP_CERT_ISSUER: + cert->issuer = g_value_dup_object (value); + break; case PROP_CERT_CERTIFICATE: case PROP_CERT_PRIVATE_KEY: - case PROP_CERT_ISSUER: /* ignore */ break; default: @@ -157,6 +163,7 @@ g_test_tls_certificate_finalize (GObject *object) g_free (cert->cert_pem); g_free (cert->key_pem); + g_clear_object (&cert->issuer); } static void diff --git a/gio/tests/inet-address.c b/gio/tests/inet-address.c index addcbb4..6e4c424 100644 --- a/gio/tests/inet-address.c +++ b/gio/tests/inet-address.c @@ -236,6 +236,55 @@ test_socket_address (void) } static void +test_socket_address_to_string (void) +{ + GSocketAddress *sa = NULL; + GInetAddress *ia = NULL; + gchar *str = NULL; + + /* IPv4. */ + ia = g_inet_address_new_from_string ("123.1.123.1"); + sa = g_inet_socket_address_new (ia, 80); + str = g_socket_connectable_to_string (G_SOCKET_CONNECTABLE (sa)); + g_assert_cmpstr (str, ==, "123.1.123.1:80"); + g_free (str); + g_object_unref (sa); + g_object_unref (ia); + + /* IPv6. */ + ia = g_inet_address_new_from_string ("::80"); + sa = g_inet_socket_address_new (ia, 80); + str = g_socket_connectable_to_string (G_SOCKET_CONNECTABLE (sa)); + g_assert_cmpstr (str, ==, "[::80]:80"); + g_free (str); + g_object_unref (sa); + g_object_unref (ia); + + /* IPv6 without port. */ + ia = g_inet_address_new_from_string ("::80"); + sa = g_inet_socket_address_new (ia, 0); + str = g_socket_connectable_to_string (G_SOCKET_CONNECTABLE (sa)); + g_assert_cmpstr (str, ==, "::80"); + g_free (str); + g_object_unref (sa); + g_object_unref (ia); + + /* IPv6 with scope. */ + ia = g_inet_address_new_from_string ("::1"); + sa = G_SOCKET_ADDRESS (g_object_new (G_TYPE_INET_SOCKET_ADDRESS, + "address", ia, + "port", 123, + "flowinfo", 10, + "scope-id", 25, + NULL)); + str = g_socket_connectable_to_string (G_SOCKET_CONNECTABLE (sa)); + g_assert_cmpstr (str, ==, "[::1%25]:123"); + g_free (str); + g_object_unref (sa); + g_object_unref (ia); +} + +static void test_mask_parse (void) { GInetAddressMask *mask; @@ -368,6 +417,7 @@ main (int argc, char *argv[]) g_test_add_func ("/inet-address/bytes", test_bytes); g_test_add_func ("/inet-address/property", test_property); g_test_add_func ("/socket-address/basic", test_socket_address); + g_test_add_func ("/socket-address/to-string", test_socket_address_to_string); g_test_add_func ("/address-mask/parse", test_mask_parse); g_test_add_func ("/address-mask/property", test_mask_property); g_test_add_func ("/address-mask/equal", test_mask_equal); diff --git a/gio/tests/live-g-file.c b/gio/tests/live-g-file.c index 6edc99a..ba9d8d2 100644 --- a/gio/tests/live-g-file.c +++ b/gio/tests/live-g-file.c @@ -116,15 +116,15 @@ static gboolean verbose; static gboolean posix_compat; #ifdef G_HAVE_ISO_VARARGS -#define log(...) if (verbose) g_print (__VA_ARGS__) +#define log(...) if (verbose) g_printerr (__VA_ARGS__) #elif defined(G_HAVE_GNUC_VARARGS) -#define log(msg...) if (verbose) g_print (msg) +#define log(msg...) if (verbose) g_printerr (msg) #else /* no varargs macros */ static void log (const g_char *format, ...) { va_list args; va_start (args, format); - if (verbose) g_print (format, args); + if (verbose) g_printerr (format, args); va_end (args); } #endif @@ -1295,7 +1295,7 @@ main (int argc, char *argv[]) g_option_context_add_main_entries (context, cmd_entries, NULL); if (!g_option_context_parse (context, &argc, &argv, &error)) { - g_print ("option parsing failed: %s\n", error->message); + g_printerr ("option parsing failed: %s\n", error->message); return g_test_run (); } @@ -1305,8 +1305,8 @@ main (int argc, char *argv[]) if (! target_path) { - g_print ("error: target path was not specified\n"); - g_print ("%s", g_option_context_get_help (context, TRUE, NULL)); + g_printerr ("error: target path was not specified\n"); + g_printerr ("%s", g_option_context_get_help (context, TRUE, NULL)); return g_test_run (); } diff --git a/gio/tests/live-g-file.txt b/gio/tests/live-g-file.txt deleted file mode 100644 index 95da0e0..0000000 --- a/gio/tests/live-g-file.txt +++ /dev/null @@ -1,27 +0,0 @@ -Before you start testing it would be good to explain how it works. - -The script works in three modes: - 1. read-only (no special arguments) - suitable for read-only backends. Just - create the sample structure using the second mode, pack it (tar -p is - preffered to preserve unix modes) and put it on a reachable place. - 2. create-structure - only creates reference structure for later testing - in read-only mode - 3. write mode - full test suite, creates testing structure and performs all - read and write tests. Please note the delete/move tests are included - in this mode and target directory structure is unusable after the script - is finished. - - -To see the list of available parameters just run 'live-g-file --help' - - -Notes: - - it's advised to clean target directory first, otherwise some tests might fail - (i.e. the tests creating testing structure) - - -Tested: - - local filesystem (/tmp/...) - - file:// uri (file:///tmp/...) - - locatest:// gvfs backend (localtest:///tmp/...) - - FAT16 filesystem (no POSIX extensions) diff --git a/gio/tests/modules/Makefile.in b/gio/tests/modules/Makefile.in new file mode 100644 index 0000000..ee07cb6 --- /dev/null +++ b/gio/tests/modules/Makefile.in @@ -0,0 +1,858 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = gio/tests/modules +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(testmoduledir)" +LTLIBRARIES = $(noinst_LTLIBRARIES) $(testmodule_LTLIBRARIES) +am__DEPENDENCIES_1 = +am__DEPENDENCIES_2 = $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la $(am__DEPENDENCIES_1) +libtestmodulea_la_DEPENDENCIES = $(am__DEPENDENCIES_2) +am_libtestmodulea_la_OBJECTS = test-module-a.lo +libtestmodulea_la_OBJECTS = $(am_libtestmodulea_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libtestmodulea_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libtestmodulea_la_LDFLAGS) $(LDFLAGS) \ + -o $@ +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am_libtestmodulea_la_rpath = +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am_libtestmodulea_la_rpath = +@ENABLE_INSTALLED_TESTS_TRUE@am_libtestmodulea_la_rpath = -rpath \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(testmoduledir) +libtestmoduleb_la_DEPENDENCIES = $(am__DEPENDENCIES_2) +am_libtestmoduleb_la_OBJECTS = test-module-b.lo +libtestmoduleb_la_OBJECTS = $(am_libtestmoduleb_la_OBJECTS) +libtestmoduleb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libtestmoduleb_la_LDFLAGS) $(LDFLAGS) \ + -o $@ +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am_libtestmoduleb_la_rpath = +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am_libtestmoduleb_la_rpath = +@ENABLE_INSTALLED_TESTS_TRUE@am_libtestmoduleb_la_rpath = -rpath \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(testmoduledir) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libtestmodulea_la_SOURCES) $(libtestmoduleb_la_SOURCES) +DIST_SOURCES = $(libtestmodulea_la_SOURCES) \ + $(libtestmoduleb_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +NULL = +LDADD = \ + $(top_builddir)/gio/libgio-2.0.la \ + $(top_builddir)/gobject/libgobject-2.0.la \ + $(top_builddir)/gmodule/libgmodule-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la \ + $(NULL) + +AM_CPPFLAGS = \ + $(gio_INCLUDES) $(GLIB_DEBUG_FLAGS) \ + -I$(top_builddir)/gio \ + -I$(top_srcdir)/gio \ + $(NULL) + +modules = \ + libtestmodulea.la \ + libtestmoduleb.la \ + $(NULL) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@noinst_LTLIBRARIES = $(modules) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@check_LTLIBRARIES = $(modules) +@ENABLE_INSTALLED_TESTS_TRUE@testmoduledir = $(installed_testdir)/modules +@ENABLE_INSTALLED_TESTS_TRUE@testmodule_LTLIBRARIES = $(modules) +# See comment in Makefile.am one level up +@ENABLE_INSTALLED_TESTS_FALSE@rpath_hack = -rpath / +libtestmodulea_la_SOURCES = test-module-a.c +libtestmodulea_la_LIBADD = $(LDADD) +libtestmodulea_la_LDFLAGS = $(LDFLAGS) -no-undefined -avoid-version $(rpath_hack) +libtestmoduleb_la_SOURCES = test-module-b.c +libtestmoduleb_la_LIBADD = $(LDADD) +libtestmoduleb_la_LDFLAGS = $(LDFLAGS) -no-undefined -avoid-version $(rpath_hack) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gio/tests/modules/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gio/tests/modules/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-testmoduleLTLIBRARIES: $(testmodule_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(testmodule_LTLIBRARIES)'; test -n "$(testmoduledir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(testmoduledir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(testmoduledir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(testmoduledir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(testmoduledir)"; \ + } + +uninstall-testmoduleLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(testmodule_LTLIBRARIES)'; test -n "$(testmoduledir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(testmoduledir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(testmoduledir)/$$f"; \ + done + +clean-testmoduleLTLIBRARIES: + -test -z "$(testmodule_LTLIBRARIES)" || rm -f $(testmodule_LTLIBRARIES) + @list='$(testmodule_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libtestmodulea.la: $(libtestmodulea_la_OBJECTS) $(libtestmodulea_la_DEPENDENCIES) $(EXTRA_libtestmodulea_la_DEPENDENCIES) + $(AM_V_CCLD)$(libtestmodulea_la_LINK) $(am_libtestmodulea_la_rpath) $(libtestmodulea_la_OBJECTS) $(libtestmodulea_la_LIBADD) $(LIBS) + +libtestmoduleb.la: $(libtestmoduleb_la_OBJECTS) $(libtestmoduleb_la_DEPENDENCIES) $(EXTRA_libtestmoduleb_la_DEPENDENCIES) + $(AM_V_CCLD)$(libtestmoduleb_la_LINK) $(am_libtestmoduleb_la_rpath) $(libtestmoduleb_la_OBJECTS) $(libtestmoduleb_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-module-a.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-module-b.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: + for dir in "$(DESTDIR)$(testmoduledir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-generic clean-libtool \ + clean-noinstLTLIBRARIES clean-testmoduleLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-testmoduleLTLIBRARIES + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-testmoduleLTLIBRARIES + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-checkLTLIBRARIES clean-generic clean-libtool \ + clean-noinstLTLIBRARIES clean-testmoduleLTLIBRARIES \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + install-testmoduleLTLIBRARIES installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-testmoduleLTLIBRARIES + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gio/tests/network-address.c b/gio/tests/network-address.c index 73e323c..622af17 100644 --- a/gio/tests/network-address.c +++ b/gio/tests/network-address.c @@ -477,6 +477,43 @@ test_loopback_async (void) g_object_unref (addr); } +static void +test_to_string (void) +{ + GSocketConnectable *addr = NULL; + gchar *str = NULL; + GError *error = NULL; + + /* Without port. */ + addr = g_network_address_new ("some-hostname", 0); + str = g_socket_connectable_to_string (addr); + g_assert_cmpstr (str, ==, "some-hostname"); + g_free (str); + g_object_unref (addr); + + /* With port. */ + addr = g_network_address_new ("some-hostname", 123); + str = g_socket_connectable_to_string (addr); + g_assert_cmpstr (str, ==, "some-hostname:123"); + g_free (str); + g_object_unref (addr); + + /* With scheme and port. */ + addr = g_network_address_parse_uri ("http://some-hostname:123", 80, &error); + g_assert_no_error (error); + str = g_socket_connectable_to_string (addr); + g_assert_cmpstr (str, ==, "http:some-hostname:123"); + g_free (str); + g_object_unref (addr); + + /* Loopback. */ + addr = g_network_address_new ("localhost", 456); + str = g_socket_connectable_to_string (addr); + g_assert_cmpstr (str, ==, "localhost:456"); + g_free (str); + g_object_unref (addr); +} + int main (int argc, char *argv[]) { @@ -520,6 +557,7 @@ main (int argc, char *argv[]) g_test_add_func ("/network-address/loopback/basic", test_loopback_basic); g_test_add_func ("/network-address/loopback/sync", test_loopback_sync); g_test_add_func ("/network-address/loopback/async", test_loopback_async); + g_test_add_func ("/network-address/to-string", test_to_string); return g_test_run (); } diff --git a/gio/tests/network-monitor.c b/gio/tests/network-monitor.c index 04f75f1..2e38e39 100644 --- a/gio/tests/network-monitor.c +++ b/gio/tests/network-monitor.c @@ -500,6 +500,14 @@ watch_connectivity_changed (GNetworkMonitor *monitor, } static void +watch_metered_changed (GNetworkMonitor *monitor, + GParamSpec *pspec, + gpointer user_data) +{ + g_print ("Metered is %d\n", g_network_monitor_get_network_metered (monitor)); +} + +static void do_watch_network (void) { GNetworkMonitor *monitor = g_network_monitor_get_default (); @@ -511,8 +519,11 @@ do_watch_network (void) G_CALLBACK (watch_network_changed), NULL); g_signal_connect (monitor, "notify::connectivity", G_CALLBACK (watch_connectivity_changed), NULL); + g_signal_connect (monitor, "notify::network-metered", + G_CALLBACK (watch_metered_changed), NULL); watch_network_changed (monitor, g_network_monitor_get_network_available (monitor), NULL); watch_connectivity_changed (monitor, NULL, NULL); + watch_metered_changed (monitor, NULL, NULL); loop = g_main_loop_new (NULL, FALSE); g_main_loop_run (loop); diff --git a/gio/tests/plugin_resources.c b/gio/tests/plugin_resources.c new file mode 100644 index 0000000..4c1b021 --- /dev/null +++ b/gio/tests/plugin_resources.c @@ -0,0 +1,185 @@ +#include + +#if defined (__ELF__) && ( __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 6)) +# define SECTION __attribute__ ((section (".gresource.g_plugin"), aligned (8))) +#else +# define SECTION +#endif + +static const SECTION union { const guint8 data[180]; const double alignment; void * const ptr;} _g_plugin_resource_data = { { + 0x47, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xba, 0x2c, 0xfd, 0xa6, + 0x02, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, + 0x0f, 0x00, 0x4c, 0x00, 0x84, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, 0x59, 0xea, 0x29, 0x39, + 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, + 0x09, 0x00, 0x76, 0x00, 0x98, 0x00, 0x00, 0x00, + 0xae, 0x00, 0x00, 0x00, 0xd4, 0xb5, 0x02, 0x00, + 0xff, 0xff, 0xff, 0xff, 0xae, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x4c, 0x00, 0xb0, 0x00, 0x00, 0x00, + 0xb4, 0x00, 0x00, 0x00, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x70, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x2f, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x74, 0x65, 0x73, 0x74, 0x31, 0x2e, 0x74, 0x78, + 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x74, 0x65, 0x73, 0x74, 0x31, 0x0a, 0x00, 0x00, + 0x28, 0x75, 0x75, 0x61, 0x79, 0x29, 0x2f, 0x00, + 0x00, 0x00, 0x00, 0x00 +} }; + +static GStaticResource static_resource = { _g_plugin_resource_data.data, sizeof (_g_plugin_resource_data.data), NULL, NULL, NULL }; +extern GResource *_g_plugin_get_resource (void); +GResource *_g_plugin_get_resource (void) +{ + return g_static_resource_get_resource (&static_resource); +} +/* + If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and + destructors, in a sane way, including e.g. on library unload. If not you're on + your own. + + Some compilers need #pragma to handle this, which does not work with macros, + so the way you need to use this is (for constructors): + + #ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA + #pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(my_constructor) + #endif + G_DEFINE_CONSTRUCTOR(my_constructor) + static void my_constructor(void) { + ... + } + +*/ + +#ifndef __GTK_DOC_IGNORE__ + +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) + +#define G_HAS_CONSTRUCTORS 1 + +#define G_DEFINE_CONSTRUCTOR(_func) static void __attribute__((constructor)) _func (void); +#define G_DEFINE_DESTRUCTOR(_func) static void __attribute__((destructor)) _func (void); + +#elif defined (_MSC_VER) && (_MSC_VER >= 1500) +/* Visual studio 2008 and later has _Pragma */ + +#define G_HAS_CONSTRUCTORS 1 + +/* We do some weird things to avoid the constructors being optimized + * away on VS2015 if WholeProgramOptimization is enabled. First we + * make a reference to the array from the wrapper to make sure its + * references. Then we use a pragma to make sure the wrapper function + * symbol is always included at the link stage. Also, the symbols + * need to be extern (but not dllexport), even though they are not + * really used from another object file. + */ + +/* We need to account for differences between the mangling of symbols + * for Win32 (x86) and x64 programs, as symbols on Win32 are prefixed + * with an underscore but symbols on x64 are not. + */ +#ifdef _WIN64 +#define G_MSVC_SYMBOL_PREFIX "" +#else +#define G_MSVC_SYMBOL_PREFIX "_" +#endif + +#define G_DEFINE_CONSTRUCTOR(_func) G_MSVC_CTOR (_func, G_MSVC_SYMBOL_PREFIX) +#define G_DEFINE_DESTRUCTOR(_func) G_MSVC_DTOR (_func, G_MSVC_SYMBOL_PREFIX) + +#define G_MSVC_CTOR(_func,_sym_prefix) \ + static void _func(void); \ + extern int (* _array ## _func)(void); \ + int _func ## _wrapper(void) { _func(); g_slist_find (NULL, _array ## _func); return 0; } \ + __pragma(comment(linker,"/include:" _sym_prefix # _func "_wrapper")) \ + __pragma(section(".CRT$XCU",read)) \ + __declspec(allocate(".CRT$XCU")) int (* _array ## _func)(void) = _func ## _wrapper; + +#define G_MSVC_DTOR(_func,_sym_prefix) \ + static void _func(void); \ + extern int (* _array ## _func)(void); \ + int _func ## _constructor(void) { atexit (_func); g_slist_find (NULL, _array ## _func); return 0; } \ + __pragma(comment(linker,"/include:" _sym_prefix # _func "_constructor")) \ + __pragma(section(".CRT$XCU",read)) \ + __declspec(allocate(".CRT$XCU")) int (* _array ## _func)(void) = _func ## _constructor; + +#elif defined (_MSC_VER) + +#define G_HAS_CONSTRUCTORS 1 + +/* Pre Visual studio 2008 must use #pragma section */ +#define G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA 1 +#define G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA 1 + +#define G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(_func) \ + section(".CRT$XCU",read) +#define G_DEFINE_CONSTRUCTOR(_func) \ + static void _func(void); \ + static int _func ## _wrapper(void) { _func(); return 0; } \ + __declspec(allocate(".CRT$XCU")) static int (*p)(void) = _func ## _wrapper; + +#define G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(_func) \ + section(".CRT$XCU",read) +#define G_DEFINE_DESTRUCTOR(_func) \ + static void _func(void); \ + static int _func ## _constructor(void) { atexit (_func); return 0; } \ + __declspec(allocate(".CRT$XCU")) static int (* _array ## _func)(void) = _func ## _constructor; + +#elif defined(__SUNPRO_C) + +/* This is not tested, but i believe it should work, based on: + * http://opensource.apple.com/source/OpenSSL098/OpenSSL098-35/src/fips/fips_premain.c + */ + +#define G_HAS_CONSTRUCTORS 1 + +#define G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA 1 +#define G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA 1 + +#define G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(_func) \ + init(_func) +#define G_DEFINE_CONSTRUCTOR(_func) \ + static void _func(void); + +#define G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(_func) \ + fini(_func) +#define G_DEFINE_DESTRUCTOR(_func) \ + static void _func(void); + +#else + +/* constructors not supported for this compiler */ + +#endif + +#endif /* __GTK_DOC_IGNORE__ */ + +#ifdef G_HAS_CONSTRUCTORS + +#ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA +#pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(resource_constructor) +#endif +G_DEFINE_CONSTRUCTOR(resource_constructor) +#ifdef G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA +#pragma G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(resource_destructor) +#endif +G_DEFINE_DESTRUCTOR(resource_destructor) + +#else +#warning "Constructor not supported on this compiler, linking in resources will not work" +#endif + +static void resource_constructor (void) +{ + g_static_resource_init (&static_resource); +} + +static void resource_destructor (void) +{ + g_static_resource_fini (&static_resource); +} diff --git a/gio/tests/readwrite.c b/gio/tests/readwrite.c index ad156d3..9f674c3 100644 --- a/gio/tests/readwrite.c +++ b/gio/tests/readwrite.c @@ -46,9 +46,7 @@ verify_iostream (GFileIOStream *file_iostream) res = g_input_stream_read_all (in, buffer, 20, &n_bytes, NULL, NULL); g_assert (res); - g_assert_cmpint ((int)n_bytes, ==, 20); - - g_assert (memcmp (buffer, original_data, 20) == 0); + g_assert_cmpmem (buffer, n_bytes, original_data, 20); verify_pos (iostream, 20); @@ -60,8 +58,7 @@ verify_iostream (GFileIOStream *file_iostream) res = g_input_stream_read_all (in, buffer, 20, &n_bytes, NULL, NULL); g_assert (res); - g_assert_cmpint ((int)n_bytes, ==, 10); - g_assert (memcmp (buffer, original_data + strlen (original_data) - 10, 10) == 0); + g_assert_cmpmem (buffer, n_bytes, original_data + strlen (original_data) - 10, 10); verify_pos (iostream, strlen (original_data)); @@ -118,8 +115,7 @@ verify_iostream (GFileIOStream *file_iostream) res = g_input_stream_read_all (in, buffer, 15, &n_bytes, NULL, NULL); g_assert (res); - g_assert_cmpint ((int)n_bytes, ==, 15); - g_assert (memcmp (buffer, modified_data, 15) == 0); + g_assert_cmpmem (buffer, n_bytes, modified_data, 15); error = NULL; res = g_output_stream_write_all (out, new_data, strlen (new_data), diff --git a/gio/tests/resources.c b/gio/tests/resources.c index daa0e9d..4d2649d 100644 --- a/gio/tests/resources.c +++ b/gio/tests/resources.c @@ -449,6 +449,8 @@ test_uri_query_info (void) GFile *file; GFileInfo *info; const char *content_type, *mime_type; + const char *fs_type; + gboolean readonly; loaded_file = g_file_get_contents (g_test_get_filename (G_TEST_BUILT, "test.gresource", NULL), &content, &content_size, NULL); @@ -475,6 +477,16 @@ test_uri_query_info (void) g_object_unref (info); + info = g_file_query_filesystem_info (file, "*", NULL, &error); + g_assert_no_error (error); + + fs_type = g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_FILESYSTEM_TYPE); + g_assert_cmpstr (fs_type, ==, "resource"); + readonly = g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_FILESYSTEM_READONLY); + g_assert_true (readonly); + + g_object_unref (info); + g_assert_cmpuint (g_file_hash (file), !=, 0); g_object_unref (file); diff --git a/gio/tests/schema-tests/cdata.gschema.xml b/gio/tests/schema-tests/cdata.gschema.xml deleted file mode 100644 index be2aac8..0000000 --- a/gio/tests/schema-tests/cdata.gschema.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - ','']]]> - - - diff --git a/gio/tests/schema-tests/description-xmllang.gschema.xml b/gio/tests/schema-tests/description-xmllang.gschema.xml new file mode 100644 index 0000000..29e771b --- /dev/null +++ b/gio/tests/schema-tests/description-xmllang.gschema.xml @@ -0,0 +1,13 @@ + + + + false + Bla + Window-specific screenshot (deprecated) + Captura especifica de finestra (obsoleto) + لقطة شاشة مختصّة بنافذة (مُبطل) + উইন্ডোৰ ক্ষেত্ৰত নিৰ্দিষ্ট স্ক্ৰিনশ্বট (স্খলিত) + Captura específica de ventana (obsoleto) + + + diff --git a/gio/tests/schema-tests/range-type-test.gschema.xml b/gio/tests/schema-tests/range-type-test.gschema.xml deleted file mode 100644 index 80072bb..0000000 --- a/gio/tests/schema-tests/range-type-test.gschema.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - 0 - - - - 0 - - - - - 0 - - - - 0 - - - - - 0 - - - - 0 - - - - - 0 - - - - 0 - - - - - 0 - - - - 0 - - - - - 0 - - - - 0 - - - - - 0 - - - - 0 - - - - - 0 - - - - 0 - - - diff --git a/gio/tests/schema-tests/summary-xmllang-and-attrs.gschema.xml b/gio/tests/schema-tests/summary-xmllang-and-attrs.gschema.xml new file mode 100644 index 0000000..b1da54e --- /dev/null +++ b/gio/tests/schema-tests/summary-xmllang-and-attrs.gschema.xml @@ -0,0 +1,13 @@ + + + + false + Window-specific screenshot (deprecated) + Captura especifica de finestra (obsoleto) + لقطة شاشة مختصّة بنافذة (مُبطل) + উইন্ডোৰ ক্ষেত্ৰত নিৰ্দিষ্ট স্ক্ৰিনশ্বট (স্খলিত) + Captura específica de ventana (obsoleto) + Bla + + + diff --git a/gio/tests/schema-tests/summary-xmllang.gschema.xml b/gio/tests/schema-tests/summary-xmllang.gschema.xml new file mode 100644 index 0000000..a3a8675 --- /dev/null +++ b/gio/tests/schema-tests/summary-xmllang.gschema.xml @@ -0,0 +1,13 @@ + + + + false + Window-specific screenshot (deprecated) + Captura especifica de finestra (obsoleto) + لقطة شاشة مختصّة بنافذة (مُبطل) + উইন্ডোৰ ক্ষেত্ৰত নিৰ্দিষ্ট স্ক্ৰিনশ্বট (স্খলিত) + Captura específica de ventana (obsoleto) + Bla + + + diff --git a/gio/tests/services/Makefile.in b/gio/tests/services/Makefile.in new file mode 100644 index 0000000..1164b88 --- /dev/null +++ b/gio/tests/services/Makefile.in @@ -0,0 +1,577 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = gio/tests/services +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = org.gtk.GDBus.Examples.ObjectManager.service +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(srcdir)/org.gtk.GDBus.Examples.ObjectManager.service.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = \ + org.gtk.GDBus.Examples.ObjectManager.service.in + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gio/tests/services/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gio/tests/services/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +org.gtk.GDBus.Examples.ObjectManager.service: $(top_builddir)/config.status $(srcdir)/org.gtk.GDBus.Examples.ObjectManager.service.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gio/tests/simple-async-result.c b/gio/tests/simple-async-result.c index 7506004..e9396dc 100644 --- a/gio/tests/simple-async-result.c +++ b/gio/tests/simple-async-result.c @@ -14,6 +14,8 @@ #include #include +G_GNUC_BEGIN_IGNORE_DEPRECATIONS + static GObject *got_source; static GAsyncResult *got_result; static gpointer got_user_data; @@ -193,3 +195,5 @@ main (int argc, char **argv) return g_test_run(); } + +G_GNUC_END_IGNORE_DEPRECATIONS diff --git a/gio/tests/socket-address.c b/gio/tests/socket-address.c index c3cd809..b3323c2 100644 --- a/gio/tests/socket-address.c +++ b/gio/tests/socket-address.c @@ -67,6 +67,45 @@ test_unix_socket_address_construct (void) g_object_unref (a); } +static void +test_unix_socket_address_to_string (void) +{ + GSocketAddress *addr = NULL; + gchar *str = NULL; + + /* ADDRESS_PATH. */ + addr = g_unix_socket_address_new_with_type ("/some/path", -1, + G_UNIX_SOCKET_ADDRESS_PATH); + str = g_socket_connectable_to_string (G_SOCKET_CONNECTABLE (addr)); + g_assert_cmpstr (str, ==, "/some/path"); + g_free (str); + g_object_unref (addr); + + /* ADDRESS_ANONYMOUS. */ + addr = g_unix_socket_address_new_with_type ("", 0, + G_UNIX_SOCKET_ADDRESS_ANONYMOUS); + str = g_socket_connectable_to_string (G_SOCKET_CONNECTABLE (addr)); + g_assert_cmpstr (str, ==, "anonymous"); + g_free (str); + g_object_unref (addr); + + /* ADDRESS_ABSTRACT. */ + addr = g_unix_socket_address_new_with_type ("abstract-path\0✋", 17, + G_UNIX_SOCKET_ADDRESS_ABSTRACT); + str = g_socket_connectable_to_string (G_SOCKET_CONNECTABLE (addr)); + g_assert_cmpstr (str, ==, "abstract-path\\x00\\xe2\\x9c\\x8b"); + g_free (str); + g_object_unref (addr); + + /* ADDRESS_ABSTRACT_PADDED. */ + addr = g_unix_socket_address_new_with_type ("abstract-path\0✋", 17, + G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED); + str = g_socket_connectable_to_string (G_SOCKET_CONNECTABLE (addr)); + g_assert_cmpstr (str, ==, "abstract-path\\x00\\xe2\\x9c\\x8b"); + g_free (str); + g_object_unref (addr); +} + int main (int argc, char **argv) @@ -74,6 +113,7 @@ main (int argc, g_test_init (&argc, &argv, NULL); g_test_add_func ("/socket/address/unix/construct", test_unix_socket_address_construct); + g_test_add_func ("/socket/address/unix/to-string", test_unix_socket_address_to_string); return g_test_run (); } diff --git a/gio/tests/socket-listener.c b/gio/tests/socket-listener.c index 98e3396..519d9a9 100644 --- a/gio/tests/socket-listener.c +++ b/gio/tests/socket-listener.c @@ -19,137 +19,68 @@ #include -GMutex mutex_712570; -GCond cond_712570; -volatile gboolean finalized; - -GType test_threaded_socket_service_get_type (void); -typedef GThreadedSocketService TestThreadedSocketService; -typedef GThreadedSocketServiceClass TestThreadedSocketServiceClass; - -G_DEFINE_TYPE (TestThreadedSocketService, test_threaded_socket_service, G_TYPE_THREADED_SOCKET_SERVICE); - -static void -test_threaded_socket_service_init (TestThreadedSocketService *service) -{ -} - -static void -test_threaded_socket_service_finalize (GObject *object) -{ - G_OBJECT_CLASS (test_threaded_socket_service_parent_class)->finalize (object); - - /* Signal the main thread that finalization completed successfully - * rather than hanging. - */ - finalized = TRUE; - g_cond_signal (&cond_712570); - g_mutex_unlock (&mutex_712570); -} - -static void -test_threaded_socket_service_class_init (TestThreadedSocketServiceClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - object_class->finalize = test_threaded_socket_service_finalize; -} - -static gboolean -connection_cb (GThreadedSocketService *service, - GSocketConnection *connection, - GObject *source_object, - gpointer user_data) -{ - /* Block until the main thread has dropped its ref to @service, so that we - * will drop the final ref from this thread. - */ - g_mutex_lock (&mutex_712570); - - /* The service should now have 1 ref owned by the current "run" - * signal emission, and another added by GThreadedSocketService for - * this thread. Both will be dropped after we return. - */ - g_assert_cmpint (G_OBJECT (service)->ref_count, ==, 2); - - return FALSE; -} - static void -client_connected_cb (GObject *client, - GAsyncResult *result, - gpointer user_data) +event_cb (GSocketListener *listener, + GSocketListenerEvent event, + GSocket *socket, + gpointer data) { - GMainLoop *loop = user_data; - GSocketConnection *conn; - GError *error = NULL; - - conn = g_socket_client_connect_finish (G_SOCKET_CLIENT (client), result, &error); - g_assert_no_error (error); - - g_object_unref (conn); - g_main_loop_quit (loop); + static GSocketListenerEvent expected_event = G_SOCKET_LISTENER_BINDING; + gboolean *success = (gboolean *)data; + + g_assert (G_IS_SOCKET_LISTENER (listener)); + g_assert (G_IS_SOCKET (socket)); + g_assert (event == expected_event); + + switch (event) + { + case G_SOCKET_LISTENER_BINDING: + expected_event = G_SOCKET_LISTENER_BOUND; + break; + case G_SOCKET_LISTENER_BOUND: + expected_event = G_SOCKET_LISTENER_LISTENING; + break; + case G_SOCKET_LISTENER_LISTENING: + expected_event = G_SOCKET_LISTENER_LISTENED; + break; + case G_SOCKET_LISTENER_LISTENED: + *success = TRUE; + break; + } } static void -test_threaded_712570 (void) +test_event_signal (void) { - GSocketService *service; - GSocketAddress *addr, *listening_addr; - GMainLoop *loop; - GSocketClient *client; + gboolean success = FALSE; + GInetAddress *iaddr; + GSocketAddress *saddr; + GSocketListener *listener; GError *error = NULL; - g_test_bug ("712570"); + iaddr = g_inet_address_new_loopback (G_SOCKET_FAMILY_IPV4); + saddr = g_inet_socket_address_new (iaddr, 0); + g_object_unref (iaddr); - g_mutex_lock (&mutex_712570); + listener = g_socket_listener_new (); - service = g_object_new (test_threaded_socket_service_get_type (), NULL); + g_signal_connect (listener, "event", G_CALLBACK (event_cb), &success); - addr = g_inet_socket_address_new_from_string ("127.0.0.1", 0); - g_socket_listener_add_address (G_SOCKET_LISTENER (service), - addr, + g_socket_listener_add_address (listener, + saddr, G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_TCP, NULL, - &listening_addr, + NULL, &error); g_assert_no_error (error); - g_object_unref (addr); - - g_signal_connect (service, "run", G_CALLBACK (connection_cb), NULL); + g_object_unref (saddr); - loop = g_main_loop_new (NULL, FALSE); - - client = g_socket_client_new (); - g_socket_client_connect_async (client, - G_SOCKET_CONNECTABLE (listening_addr), - NULL, - client_connected_cb, loop); - g_object_unref (client); - g_object_unref (listening_addr); - - g_main_loop_run (loop); - g_main_loop_unref (loop); - - /* Stop the service and then wait for it to asynchronously cancel - * its outstanding accept() call (and drop the associated ref). - * At least one main context iteration is required in some circumstances - * to ensure that the cancellation actually happens. - */ - g_socket_service_stop (G_SOCKET_SERVICE (service)); do g_main_context_iteration (NULL, TRUE); - while (G_OBJECT (service)->ref_count > 3); - - /* Drop our ref, then unlock the mutex and wait for the service to be - * finalized. (Without the fix for 712570 it would hang forever here.) - */ - g_object_unref (service); + while (!success); - while (!finalized) - g_cond_wait (&cond_712570, &mutex_712570); - g_mutex_unlock (&mutex_712570); + g_object_unref (listener); } int @@ -160,7 +91,7 @@ main (int argc, g_test_bug_base ("http://bugzilla.gnome.org/"); - g_test_add_func ("/socket-listener/threaded/712570", test_threaded_712570); + g_test_add_func ("/socket-listener/event-signal", test_event_signal); return g_test_run(); } diff --git a/gio/tests/socket-service.c b/gio/tests/socket-service.c new file mode 100644 index 0000000..f14cedf --- /dev/null +++ b/gio/tests/socket-service.c @@ -0,0 +1,247 @@ +/* GLib testing framework examples and tests + * + * Copyright 2014 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, see + * . + */ + +#include + +static void +active_notify_cb (GSocketService *service, + GParamSpec *pspec, + gpointer data) +{ + gboolean *success = (gboolean *)data; + + if (g_socket_service_is_active (service)) + *success = TRUE; +} + +static void +connected_cb (GObject *client, + GAsyncResult *result, + gpointer user_data) +{ + GSocketService *service = G_SOCKET_SERVICE (user_data); + GSocketConnection *conn; + GError *error = NULL; + + g_assert_true (g_socket_service_is_active (service)); + + conn = g_socket_client_connect_finish (G_SOCKET_CLIENT (client), result, &error); + g_assert_no_error (error); + g_object_unref (conn); + + g_socket_service_stop (service); + g_assert_false (g_socket_service_is_active (service)); +} + +static void +test_start_stop (void) +{ + gboolean success = FALSE; + GInetAddress *iaddr; + GSocketAddress *saddr, *listening_addr; + GSocketService *service; + GError *error = NULL; + GSocketClient *client; + + iaddr = g_inet_address_new_loopback (G_SOCKET_FAMILY_IPV4); + saddr = g_inet_socket_address_new (iaddr, 0); + g_object_unref (iaddr); + + /* instanciate with g_object_new so we can pass active = false */ + service = g_object_new (G_TYPE_SOCKET_SERVICE, "active", FALSE, NULL); + g_assert_false (g_socket_service_is_active (service)); + + g_signal_connect (service, "notify::active", G_CALLBACK (active_notify_cb), &success); + + g_socket_listener_add_address (G_SOCKET_LISTENER (service), + saddr, + G_SOCKET_TYPE_STREAM, + G_SOCKET_PROTOCOL_TCP, + NULL, + &listening_addr, + &error); + g_assert_no_error (error); + g_object_unref (saddr); + + client = g_socket_client_new (); + g_socket_client_connect_async (client, + G_SOCKET_CONNECTABLE (listening_addr), + NULL, + connected_cb, service); + g_object_unref (client); + g_object_unref (listening_addr); + + g_socket_service_start (service); + g_assert_true (g_socket_service_is_active (service)); + + do + g_main_context_iteration (NULL, TRUE); + while (!success); + + g_object_unref (service); +} + +GMutex mutex_712570; +GCond cond_712570; +volatile gboolean finalized; + +GType test_threaded_socket_service_get_type (void); +typedef GThreadedSocketService TestThreadedSocketService; +typedef GThreadedSocketServiceClass TestThreadedSocketServiceClass; + +G_DEFINE_TYPE (TestThreadedSocketService, test_threaded_socket_service, G_TYPE_THREADED_SOCKET_SERVICE); + +static void +test_threaded_socket_service_init (TestThreadedSocketService *service) +{ +} + +static void +test_threaded_socket_service_finalize (GObject *object) +{ + G_OBJECT_CLASS (test_threaded_socket_service_parent_class)->finalize (object); + + /* Signal the main thread that finalization completed successfully + * rather than hanging. + */ + finalized = TRUE; + g_cond_signal (&cond_712570); + g_mutex_unlock (&mutex_712570); +} + +static void +test_threaded_socket_service_class_init (TestThreadedSocketServiceClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->finalize = test_threaded_socket_service_finalize; +} + +static gboolean +connection_cb (GThreadedSocketService *service, + GSocketConnection *connection, + GObject *source_object, + gpointer user_data) +{ + /* Block until the main thread has dropped its ref to @service, so that we + * will drop the final ref from this thread. + */ + g_mutex_lock (&mutex_712570); + + /* The service should now have 1 ref owned by the current "run" + * signal emission, and another added by GThreadedSocketService for + * this thread. Both will be dropped after we return. + */ + g_assert_cmpint (G_OBJECT (service)->ref_count, ==, 2); + + return FALSE; +} + +static void +client_connected_cb (GObject *client, + GAsyncResult *result, + gpointer user_data) +{ + GMainLoop *loop = user_data; + GSocketConnection *conn; + GError *error = NULL; + + conn = g_socket_client_connect_finish (G_SOCKET_CLIENT (client), result, &error); + g_assert_no_error (error); + + g_object_unref (conn); + g_main_loop_quit (loop); +} + +static void +test_threaded_712570 (void) +{ + GSocketService *service; + GSocketAddress *addr, *listening_addr; + GMainLoop *loop; + GSocketClient *client; + GError *error = NULL; + + g_test_bug ("712570"); + + g_mutex_lock (&mutex_712570); + + service = g_object_new (test_threaded_socket_service_get_type (), NULL); + + addr = g_inet_socket_address_new_from_string ("127.0.0.1", 0); + g_socket_listener_add_address (G_SOCKET_LISTENER (service), + addr, + G_SOCKET_TYPE_STREAM, + G_SOCKET_PROTOCOL_TCP, + NULL, + &listening_addr, + &error); + g_assert_no_error (error); + g_object_unref (addr); + + g_signal_connect (service, "run", G_CALLBACK (connection_cb), NULL); + + loop = g_main_loop_new (NULL, FALSE); + + client = g_socket_client_new (); + g_socket_client_connect_async (client, + G_SOCKET_CONNECTABLE (listening_addr), + NULL, + client_connected_cb, loop); + g_object_unref (client); + g_object_unref (listening_addr); + + g_main_loop_run (loop); + g_main_loop_unref (loop); + + /* Stop the service and then wait for it to asynchronously cancel + * its outstanding accept() call (and drop the associated ref). + * At least one main context iteration is required in some circumstances + * to ensure that the cancellation actually happens. + */ + g_socket_service_stop (G_SOCKET_SERVICE (service)); + g_assert_false (g_socket_service_is_active (G_SOCKET_SERVICE (service))); + + do + g_main_context_iteration (NULL, TRUE); + while (G_OBJECT (service)->ref_count > 3); + + /* Drop our ref, then unlock the mutex and wait for the service to be + * finalized. (Without the fix for 712570 it would hang forever here.) + */ + g_object_unref (service); + + while (!finalized) + g_cond_wait (&cond_712570, &mutex_712570); + g_mutex_unlock (&mutex_712570); +} + +int +main (int argc, + char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + g_test_bug_base ("http://bugzilla.gnome.org/"); + + g_test_add_func ("/socket-service/start-stop", test_start_stop); + g_test_add_func ("/socket-service/threaded/712570", test_threaded_712570); + + return g_test_run(); +} diff --git a/gio/tests/socket.c b/gio/tests/socket.c index a1f48bc..a5b2573 100644 --- a/gio/tests/socket.c +++ b/gio/tests/socket.c @@ -588,7 +588,9 @@ test_ip_sync_dgram (GSocketFamily family) { GOutputMessage m[3] = { { NULL, }, }; + GInputMessage im[3] = { { NULL, }, }; GOutputVector v[7] = { { NULL, }, }; + GInputVector iv[7] = { { NULL, }, }; v[0].buffer = testbuf2 + 0; v[0].size = 3; @@ -605,6 +607,21 @@ test_ip_sync_dgram (GSocketFamily family) v[6].buffer = testbuf2 + 3 + 5 + 6 + 2 + 1; v[6].size = strlen (testbuf2) - (3 + 5 + 6 + 2 + 1); + iv[0].buffer = buf + 0; + iv[0].size = 3; + iv[1].buffer = buf + 3; + iv[1].size = 5; + iv[2].buffer = buf + 3 + 5; + iv[2].size = 0; + iv[3].buffer = buf + 3 + 5; + iv[3].size = 6; + iv[4].buffer = buf + 3 + 5 + 6; + iv[4].size = 2; + iv[5].buffer = buf + 3 + 5 + 6 + 2; + iv[5].size = 1; + iv[6].buffer = buf + 3 + 5 + 6 + 2 + 1; + iv[6].size = sizeof (buf) - (3 + 5 + 6 + 2 + 1); + len = g_socket_send_message (client, dest_addr, v, G_N_ELEMENTS (v), NULL, 0, 0, NULL, &error); g_assert_no_error (error); g_assert_cmpint (len, ==, strlen (testbuf2)); @@ -655,14 +672,62 @@ test_ip_sync_dgram (GSocketFamily family) m[1].bytes_sent = 0; m[2].bytes_sent = 0; - /* now try to generate an error by omitting the destination address on [1] */ + /* now try receiving multiple messages */ + len = g_socket_send_messages (client, m, G_N_ELEMENTS (m), 0, NULL, &error); + g_assert_no_error (error); + g_assert_cmpint (len, ==, G_N_ELEMENTS (m)); + g_assert_cmpint (m[0].bytes_sent, ==, 3); + g_assert_cmpint (m[1].bytes_sent, ==, 17); + g_assert_cmpint (m[2].bytes_sent, ==, v[6].size); + + im[0].vectors = &iv[0]; + im[0].num_vectors = 1; + im[1].vectors = &iv[0]; + im[1].num_vectors = 6; + im[2].vectors = &iv[6]; + im[2].num_vectors = 1; + + memset (buf, 0, sizeof (buf)); + len = g_socket_receive_messages (client, im, G_N_ELEMENTS (im), 0, + NULL, &error); + g_assert_no_error (error); + g_assert_cmpint (len, ==, G_N_ELEMENTS (im)); + + g_assert_cmpuint (im[0].bytes_received, ==, 3); + /* v[0].size + v[1].size + v[2].size + v[3].size + v[4].size + v[5].size */ + g_assert_cmpuint (im[1].bytes_received, ==, 17); + g_assert_cmpuint (im[2].bytes_received, ==, v[6].size); + + /* reset since we're re-using the message structs */ + m[0].bytes_sent = 0; + m[1].bytes_sent = 0; + m[2].bytes_sent = 0; + + /* now try to generate an early return by omitting the destination address on [1] */ m[1].address = NULL; len = g_socket_send_messages (client, m, G_N_ELEMENTS (m), 0, NULL, &error); + g_assert_no_error (error); + g_assert_cmpint (len, ==, 1); + + g_assert_cmpint (m[0].bytes_sent, ==, 3); + g_assert_cmpint (m[1].bytes_sent, ==, 0); + g_assert_cmpint (m[2].bytes_sent, ==, 0); + + /* reset since we're re-using the message structs */ + m[0].bytes_sent = 0; + m[1].bytes_sent = 0; + m[2].bytes_sent = 0; + + /* now try to generate an error by omitting all destination addresses */ + m[0].address = NULL; + m[1].address = NULL; + m[2].address = NULL; + len = g_socket_send_messages (client, m, G_N_ELEMENTS (m), 0, NULL, &error); g_assert_error (error, G_IO_ERROR, G_IO_ERROR_FAILED); g_clear_error (&error); g_assert_cmpint (len, ==, -1); - g_assert_cmpint (m[0].bytes_sent, ==, 3); + g_assert_cmpint (m[0].bytes_sent, ==, 0); g_assert_cmpint (m[1].bytes_sent, ==, 0); g_assert_cmpint (m[2].bytes_sent, ==, 0); @@ -706,6 +771,119 @@ test_ipv6_sync_dgram (void) } static gpointer +cancellable_thread_cb (gpointer data) +{ + GCancellable *cancellable = data; + + g_usleep (0.1 * G_USEC_PER_SEC); + g_cancellable_cancel (cancellable); + g_object_unref (cancellable); + + return NULL; +} + +static void +test_ip_sync_dgram_timeouts (GSocketFamily family) +{ + GError *error = NULL; + GSocket *client = NULL; + GCancellable *cancellable = NULL; + GThread *cancellable_thread = NULL; + gssize len; + + client = g_socket_new (family, + G_SOCKET_TYPE_DATAGRAM, + G_SOCKET_PROTOCOL_DEFAULT, + &error); + g_assert_no_error (error); + + g_assert_cmpint (g_socket_get_family (client), ==, family); + g_assert_cmpint (g_socket_get_socket_type (client), ==, G_SOCKET_TYPE_DATAGRAM); + g_assert_cmpint (g_socket_get_protocol (client), ==, G_SOCKET_PROTOCOL_DEFAULT); + + /* No overall timeout: test the per-operation timeouts instead. */ + g_socket_set_timeout (client, 0); + + cancellable = g_cancellable_new (); + + /* Check for timeouts when no server is running. */ + { + gint64 start_time; + GInputMessage im = { NULL, }; + GInputVector iv = { NULL, }; + guint8 buf[128]; + + iv.buffer = buf; + iv.size = sizeof (buf); + + im.vectors = &iv; + im.num_vectors = 1; + + memset (buf, 0, sizeof (buf)); + + /* Try a non-blocking read. */ + g_socket_set_blocking (client, FALSE); + len = g_socket_receive_messages (client, &im, 1, 0 /* flags */, + NULL, &error); + g_assert_error (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK); + g_assert_cmpint (len, ==, -1); + g_clear_error (&error); + + /* Try a timeout read. Can’t really validate the time taken more than + * checking it’s positive. */ + g_socket_set_timeout (client, 1); + g_socket_set_blocking (client, TRUE); + start_time = g_get_monotonic_time (); + len = g_socket_receive_messages (client, &im, 1, 0 /* flags */, + NULL, &error); + g_assert_error (error, G_IO_ERROR, G_IO_ERROR_TIMED_OUT); + g_assert_cmpint (len, ==, -1); + g_assert_cmpint (g_get_monotonic_time () - start_time, >, 0); + g_clear_error (&error); + + /* Try a blocking read, cancelled from another thread. */ + g_socket_set_timeout (client, 0); + cancellable_thread = g_thread_new ("cancellable", + cancellable_thread_cb, + g_object_ref (cancellable)); + + start_time = g_get_monotonic_time (); + len = g_socket_receive_messages (client, &im, 1, 0 /* flags */, + cancellable, &error); + g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED); + g_assert_cmpint (len, ==, -1); + g_assert_cmpint (g_get_monotonic_time () - start_time, >, 0); + g_clear_error (&error); + + g_thread_join (cancellable_thread); + } + + g_socket_close (client, &error); + g_assert_no_error (error); + + g_object_unref (client); + g_object_unref (cancellable); +} + +static void +test_ipv4_sync_dgram_timeouts (void) +{ + test_ip_sync_dgram_timeouts (G_SOCKET_FAMILY_IPV4); +} + +static void +test_ipv6_sync_dgram_timeouts (void) +{ + if (!ipv6_supported) + { + g_test_skip ("No support for IPv6"); + return; + } + + test_ip_sync_dgram_timeouts (G_SOCKET_FAMILY_IPV6); +} + +static gpointer graceful_server_thread (gpointer user_data) { IPTestData *data = user_data; @@ -930,30 +1108,30 @@ test_timed_wait (void) } static int -duplicate_fd(int fd) +duplicate_fd (int fd) { #ifdef G_OS_WIN32 - HANDLE newfd; - - if (!DuplicateHandle (GetCurrentProcess (), - (HANDLE)fd, - GetCurrentProcess (), - &newfd, - 0, - FALSE, - DUPLICATE_SAME_ACCESS)) + HANDLE newfd; + + if (!DuplicateHandle (GetCurrentProcess (), + (HANDLE)fd, + GetCurrentProcess (), + &newfd, + 0, + FALSE, + DUPLICATE_SAME_ACCESS)) { - return -1; + return -1; } - return (int)newfd; + return (int)newfd; #else - return dup(fd); + return dup (fd); #endif } static void -test_fd_roundtrip (void) +test_fd_reuse (void) { IPTestData *data; GError *error = NULL; @@ -964,6 +1142,8 @@ test_fd_roundtrip (void) gssize len; gchar buf[128]; + g_test_bug ("741707"); + data = create_server (G_SOCKET_FAMILY_IPV4, echo_server_thread, FALSE); addr = g_socket_get_local_address (data->server, &error); g_assert_no_error (error); @@ -1003,8 +1183,10 @@ test_fd_roundtrip (void) g_socket_shutdown (client, FALSE, TRUE, &error); g_assert_no_error (error); - g_socket_shutdown (client2, FALSE, TRUE, &error); - g_assert_no_error (error); + /* The semantics of dup()+shutdown() are ambiguous; this call will succeed + * on Linux, but return ENOTCONN on OS X. + */ + g_socket_shutdown (client2, FALSE, TRUE, NULL); g_thread_join (data->thread); @@ -1421,6 +1603,7 @@ main (int argc, GError *error = NULL; g_test_init (&argc, &argv, NULL); + g_test_bug_base ("https://bugzilla.gnome.org/"); sock = g_socket_new (G_SOCKET_FAMILY_IPV6, G_SOCKET_TYPE_STREAM, @@ -1442,13 +1625,15 @@ main (int argc, g_test_add_func ("/socket/ipv6_sync", test_ipv6_sync); g_test_add_func ("/socket/ipv6_async", test_ipv6_async); g_test_add_func ("/socket/ipv4_sync/datagram", test_ipv4_sync_dgram); + g_test_add_func ("/socket/ipv4_sync/datagram/timeouts", test_ipv4_sync_dgram_timeouts); g_test_add_func ("/socket/ipv6_sync/datagram", test_ipv6_sync_dgram); + g_test_add_func ("/socket/ipv6_sync/datagram/timeouts", test_ipv6_sync_dgram_timeouts); #if defined (IPPROTO_IPV6) && defined (IPV6_V6ONLY) g_test_add_func ("/socket/ipv6_v4mapped", test_ipv6_v4mapped); #endif g_test_add_func ("/socket/close_graceful", test_close_graceful); g_test_add_func ("/socket/timed_wait", test_timed_wait); - g_test_add_func ("/socket/fd_roundtrip", test_fd_roundtrip); + g_test_add_func ("/socket/fd_reuse", test_fd_reuse); g_test_add_func ("/socket/address", test_sockaddr); #ifdef G_OS_UNIX g_test_add_func ("/socket/unix-from-fd", test_unix_from_fd); diff --git a/gio/tests/task.c b/gio/tests/task.c index 9493fed..66221a9 100644 --- a/gio/tests/task.c +++ b/gio/tests/task.c @@ -10,6 +10,7 @@ */ #include +#include static GMainLoop *loop; static GThread *main_thread; @@ -1097,6 +1098,95 @@ test_run_in_thread_nested (void) unclog_thread_pool (); } +/* test_run_in_thread_overflow: if you queue lots and lots and lots of + * tasks, they won't all run at once. + */ +static GMutex overflow_mutex; + +static void +run_overflow_task_thread (GTask *task, + gpointer source_object, + gpointer task_data, + GCancellable *cancellable) +{ + gchar *result = task_data; + + if (g_task_return_error_if_cancelled (task)) + { + *result = 'X'; + return; + } + + /* Block until the main thread is ready. */ + g_mutex_lock (&overflow_mutex); + g_mutex_unlock (&overflow_mutex); + + *result = '.'; + + g_task_return_boolean (task, TRUE); +} + +#define NUM_OVERFLOW_TASKS 1024 + +static void +test_run_in_thread_overflow (void) +{ + GCancellable *cancellable; + GTask *task; + gchar buf[NUM_OVERFLOW_TASKS + 1]; + gint i; + + /* Queue way too many tasks and then sleep for a bit. The first 10 + * tasks will be dispatched to threads and will then block on + * overflow_mutex, so more threads will be created while this thread + * is sleeping. Then we cancel the cancellable, unlock the mutex, + * wait for all of the tasks to complete, and make sure that we got + * the behavior we expected. + */ + + memset (buf, 0, sizeof (buf)); + cancellable = g_cancellable_new (); + + g_mutex_lock (&overflow_mutex); + + for (i = 0; i < NUM_OVERFLOW_TASKS; i++) + { + task = g_task_new (NULL, cancellable, NULL, NULL); + g_task_set_task_data (task, buf + i, NULL); + g_task_run_in_thread (task, run_overflow_task_thread); + g_object_unref (task); + } + + if (g_test_slow ()) + g_usleep (5000000); /* 5 s */ + else + g_usleep (500000); /* 0.5 s */ + g_cancellable_cancel (cancellable); + g_object_unref (cancellable); + + g_mutex_unlock (&overflow_mutex); + + /* Wait for all tasks to complete. */ + while (strlen (buf) != NUM_OVERFLOW_TASKS) + g_usleep (1000); + + i = strspn (buf, "."); + /* Given the sleep times above, i should be 14 for normal, 40 for + * slow. But if the machine is too slow/busy then the scheduling + * might get messed up and we'll get more or fewer threads than + * expected. But there are limits to how messed up it could + * plausibly get (and we hope that if gtask is actually broken then + * it will exceed those limits). + */ + g_assert_cmpint (i, >=, 10); + if (g_test_slow ()) + g_assert_cmpint (i, <, 50); + else + g_assert_cmpint (i, <, 20); + + g_assert_cmpint (i + strspn (buf + i, "X"), ==, NUM_OVERFLOW_TASKS); +} + /* test_return_on_cancel */ GMutex roc_init_mutex, roc_finish_mutex; @@ -1893,6 +1983,7 @@ main (int argc, char **argv) g_test_add_func ("/gtask/run-in-thread-sync", test_run_in_thread_sync); g_test_add_func ("/gtask/run-in-thread-priority", test_run_in_thread_priority); g_test_add_func ("/gtask/run-in-thread-nested", test_run_in_thread_nested); + g_test_add_func ("/gtask/run-in-thread-overflow", test_run_in_thread_overflow); g_test_add_func ("/gtask/return-on-cancel", test_return_on_cancel); g_test_add_func ("/gtask/return-on-cancel-sync", test_return_on_cancel_sync); g_test_add_func ("/gtask/return-on-cancel-atomic", test_return_on_cancel_atomic); diff --git a/gio/tests/testfilemonitor.c b/gio/tests/testfilemonitor.c new file mode 100644 index 0000000..229fd21 --- /dev/null +++ b/gio/tests/testfilemonitor.c @@ -0,0 +1,667 @@ +#include +#include + +/* These tests were written for the inotify implementation. + * Other implementations may require slight adjustments in + * the tests, e.g. the length of timeouts + */ + +typedef struct +{ + gint event_type; + gchar *file; + gchar *other_file; + gint step; +} RecordedEvent; + +static void +free_recorded_event (RecordedEvent *event) +{ + g_free (event->file); + g_free (event->other_file); + g_free (event); +} + +typedef struct +{ + GFile *file; + GFileMonitor *monitor; + GMainLoop *loop; + gint step; + GList *events; +} TestData; + +#if 0 +static void +output_event (RecordedEvent *event) +{ + if (event->step >= 0) + g_print (">>>> step %d\n", event->step); + else + { + GTypeClass *class; + + class = g_type_class_ref (g_type_from_name ("GFileMonitorEvent")); + g_print ("%s file=%s other_file=%s\n", + g_enum_get_value (G_ENUM_CLASS (class), event->event_type)->value_nick, + event->file, + event->other_file); + g_type_class_unref (class); + } +} + +static void +output_events (GList *list) +{ + GList *l; + + g_print (">>>output events\n"); + for (l = list; l; l = l->next) + output_event ((RecordedEvent *)l->data); +} +#endif + +/* a placeholder for temp file names we don't want to compare */ +static const gchar DONT_CARE[] = ""; + +static void +check_expected_event (gint i, + RecordedEvent *e1, + RecordedEvent *e2) +{ + g_assert_cmpint (e1->step, ==, e2->step); + if (e1->step < 0) + return; + + g_assert_cmpint (e1->event_type, ==, e2->event_type); + + if (e1->file != DONT_CARE) + g_assert_cmpstr (e1->file, ==, e2->file); + + if (e1->other_file != DONT_CARE) + g_assert_cmpstr (e1->other_file, ==, e2->other_file); +} + +static void +check_expected_events (RecordedEvent *expected, + gsize n_expected, + GList *recorded) +{ + gint i; + GList *l; + + g_assert_cmpint (n_expected, ==, g_list_length (recorded)); + + for (i = 0, l = recorded; i < n_expected; i++, l = l->next) + { + RecordedEvent *e1 = &expected[i]; + RecordedEvent *e2 = (RecordedEvent *)l->data; + + check_expected_event (i, e1, e2); + } +} + +static void +record_event (TestData *data, + gint event_type, + const gchar *file, + const gchar *other_file, + gint step) +{ + RecordedEvent *event; + + event = g_new0 (RecordedEvent, 1); + event->event_type = event_type; + event->file = g_strdup (file); + event->other_file = g_strdup (other_file); + event->step = step; + + data->events = g_list_append (data->events, event); +} + +static void +monitor_changed (GFileMonitor *monitor, + GFile *file, + GFile *other_file, + GFileMonitorEvent event_type, + gpointer user_data) +{ + TestData *data = user_data; + gchar *basename, *other_base; + + basename = g_file_get_basename (file); + if (other_file) + other_base = g_file_get_basename (other_file); + else + other_base = NULL; + + record_event (data, event_type, basename, other_base, -1); + + g_free (basename); + g_free (other_base); +} + +static gboolean +atomic_replace_step (gpointer user_data) +{ + TestData *data = user_data; + GError *error = NULL; + + switch (data->step) + { + case 0: + record_event (data, -1, NULL, NULL, 0); + g_file_replace_contents (data->file, "step 0", 6, NULL, FALSE, G_FILE_CREATE_NONE, NULL, NULL, &error); + g_assert_no_error (error); + break; + case 1: + record_event (data, -1, NULL, NULL, 1); + g_file_replace_contents (data->file, "step 1", 6, NULL, FALSE, G_FILE_CREATE_NONE, NULL, NULL, &error); + g_assert_no_error (error); + break; + case 2: + record_event (data, -1, NULL, NULL, 2); + g_file_delete (data->file, NULL, NULL); + break; + case 3: + record_event (data, -1, NULL, NULL, 3); + g_main_loop_quit (data->loop); + return G_SOURCE_REMOVE; + } + + data->step++; + + return G_SOURCE_CONTINUE; +} + +/* this is the output we expect from the above steps */ +static RecordedEvent atomic_replace_output[] = { + { -1, NULL, NULL, 0 }, + { G_FILE_MONITOR_EVENT_CREATED, "atomic_replace_file", NULL, -1 }, + { G_FILE_MONITOR_EVENT_CHANGED, "atomic_replace_file", NULL, -1 }, + { G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT, "atomic_replace_file", NULL, -1 }, + { -1, NULL, NULL, 1 }, + { G_FILE_MONITOR_EVENT_RENAMED, (gchar*)DONT_CARE, "atomic_replace_file", -1 }, + { -1, NULL, NULL, 2 }, + { G_FILE_MONITOR_EVENT_DELETED, "atomic_replace_file", NULL, -1 }, + { -1, NULL, NULL, 3 } +}; + +static void +test_atomic_replace (void) +{ + GError *error = NULL; + TestData data; + + data.step = 0; + data.events = NULL; + + data.file = g_file_new_for_path ("atomic_replace_file"); + g_file_delete (data.file, NULL, NULL); + + data.monitor = g_file_monitor_file (data.file, G_FILE_MONITOR_WATCH_MOVES, NULL, &error); + g_assert_no_error (error); + + g_file_monitor_set_rate_limit (data.monitor, 200); + g_signal_connect (data.monitor, "changed", G_CALLBACK (monitor_changed), &data); + + data.loop = g_main_loop_new (NULL, TRUE); + + g_timeout_add (500, atomic_replace_step, &data); + + g_main_loop_run (data.loop); + + /*output_events (data.events);*/ + check_expected_events (atomic_replace_output, G_N_ELEMENTS (atomic_replace_output), data.events); + + g_list_free_full (data.events, (GDestroyNotify)free_recorded_event); + g_main_loop_unref (data.loop); + g_object_unref (data.monitor); + g_object_unref (data.file); +} + +static gboolean +change_step (gpointer user_data) +{ + TestData *data = user_data; + GOutputStream *stream; + GError *error = NULL; + guint32 mode = 0660; + + switch (data->step) + { + case 0: + record_event (data, -1, NULL, NULL, 0); + g_file_replace_contents (data->file, "step 0", 6, NULL, FALSE, G_FILE_CREATE_NONE, NULL, NULL, &error); + g_assert_no_error (error); + break; + case 1: + record_event (data, -1, NULL, NULL, 1); + stream = (GOutputStream *)g_file_append_to (data->file, G_FILE_CREATE_NONE, NULL, &error); + g_assert_no_error (error); + g_output_stream_write_all (stream, " step 1", 7, NULL, NULL, &error); + g_assert_no_error (error); + g_output_stream_close (stream, NULL, &error); + g_assert_no_error (error); + break; + case 2: + record_event (data, -1, NULL, NULL, 2); + g_file_set_attribute (data->file, + G_FILE_ATTRIBUTE_UNIX_MODE, + G_FILE_ATTRIBUTE_TYPE_UINT32, + &mode, + G_FILE_QUERY_INFO_NONE, + NULL, + &error); + g_assert_no_error (error); + break; + case 3: + record_event (data, -1, NULL, NULL, 3); + g_file_delete (data->file, NULL, NULL); + break; + case 4: + record_event (data, -1, NULL, NULL, 4); + g_main_loop_quit (data->loop); + return G_SOURCE_REMOVE; + } + + data->step++; + + return G_SOURCE_CONTINUE; +} + +/* this is the output we expect from the above steps */ +static RecordedEvent change_output[] = { + { -1, NULL, NULL, 0 }, + { G_FILE_MONITOR_EVENT_CREATED, "change_file", NULL, -1 }, + { G_FILE_MONITOR_EVENT_CHANGED, "change_file", NULL, -1 }, + { G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT, "change_file", NULL, -1 }, + { -1, NULL, NULL, 1 }, + { G_FILE_MONITOR_EVENT_CHANGED, "change_file", NULL, -1 }, + { G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT, "change_file", NULL, -1 }, + { -1, NULL, NULL, 2 }, + { G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED, "change_file", NULL, -1 }, + { -1, NULL, NULL, 3 }, + { G_FILE_MONITOR_EVENT_DELETED, "change_file", NULL, -1 }, + { -1, NULL, NULL, 4 } +}; + +static void +test_file_changes (void) +{ + GError *error = NULL; + TestData data; + + data.step = 0; + data.events = NULL; + + data.file = g_file_new_for_path ("change_file"); + g_file_delete (data.file, NULL, NULL); + + data.monitor = g_file_monitor_file (data.file, G_FILE_MONITOR_WATCH_MOVES, NULL, &error); + g_assert_no_error (error); + + g_file_monitor_set_rate_limit (data.monitor, 200); + g_signal_connect (data.monitor, "changed", G_CALLBACK (monitor_changed), &data); + + data.loop = g_main_loop_new (NULL, TRUE); + + g_timeout_add (500, change_step, &data); + + g_main_loop_run (data.loop); + + /*output_events (data.events);*/ + check_expected_events (change_output, G_N_ELEMENTS (change_output), data.events); + + g_list_free_full (data.events, (GDestroyNotify)free_recorded_event); + g_main_loop_unref (data.loop); + g_object_unref (data.monitor); + g_object_unref (data.file); +} + +static gboolean +dir_step (gpointer user_data) +{ + TestData *data = user_data; + GFile *parent, *file, *file2; + GError *error = NULL; + + switch (data->step) + { + case 1: + record_event (data, -1, NULL, NULL, 1); + parent = g_file_get_parent (data->file); + file = g_file_get_child (parent, "dir_test_file"); + g_file_replace_contents (file, "step 1", 6, NULL, FALSE, G_FILE_CREATE_NONE, NULL, NULL, &error); + g_assert_no_error (error); + g_object_unref (file); + g_object_unref (parent); + break; + case 2: + record_event (data, -1, NULL, NULL, 2); + parent = g_file_get_parent (data->file); + file = g_file_get_child (parent, "dir_test_file"); + file2 = g_file_get_child (data->file, "dir_test_file"); + g_file_move (file, file2, G_FILE_COPY_NONE, NULL, NULL, NULL, &error); + g_assert_no_error (error); + g_object_unref (file); + g_object_unref (file2); + g_object_unref (parent); + break; + case 3: + record_event (data, -1, NULL, NULL, 3); + file = g_file_get_child (data->file, "dir_test_file"); + file2 = g_file_get_child (data->file, "dir_test_file2"); + g_file_move (file, file2, G_FILE_COPY_NONE, NULL, NULL, NULL, &error); + g_assert_no_error (error); + g_object_unref (file); + g_object_unref (file2); + break; + case 4: + record_event (data, -1, NULL, NULL, 4); + parent = g_file_get_parent (data->file); + file = g_file_get_child (data->file, "dir_test_file2"); + file2 = g_file_get_child (parent, "dir_test_file2"); + g_file_move (file, file2, G_FILE_COPY_NONE, NULL, NULL, NULL, &error); + g_assert_no_error (error); + g_file_delete (file2, NULL, NULL); + g_object_unref (file); + g_object_unref (file2); + g_object_unref (parent); + break; + case 5: + record_event (data, -1, NULL, NULL, 5); + g_file_delete (data->file, NULL, NULL); + break; + case 6: + record_event (data, -1, NULL, NULL, 6); + g_main_loop_quit (data->loop); + return G_SOURCE_REMOVE; + } + + data->step++; + + return G_SOURCE_CONTINUE; +} + +/* this is the output we expect from the above steps */ +static RecordedEvent dir_output[] = { + { -1, NULL, NULL, 1 }, + { -1, NULL, NULL, 2 }, + { G_FILE_MONITOR_EVENT_MOVED_IN, "dir_test_file", NULL, -1 }, + { -1, NULL, NULL, 3 }, + { G_FILE_MONITOR_EVENT_RENAMED, "dir_test_file", "dir_test_file2", -1 }, + { -1, NULL, NULL, 4 }, + { G_FILE_MONITOR_EVENT_MOVED_OUT, "dir_test_file2", NULL, -1 }, + { -1, NULL, NULL, 5 }, + { G_FILE_MONITOR_EVENT_DELETED, "dir_monitor_test", NULL, -1 }, + { -1, NULL, NULL, 6 } +}; + +static void +test_dir_monitor (void) +{ + GError *error = NULL; + TestData data; + + data.step = 0; + data.events = NULL; + + data.file = g_file_new_for_path ("dir_monitor_test"); + g_file_delete (data.file, NULL, NULL); + g_file_make_directory (data.file, NULL, &error); + + data.monitor = g_file_monitor_directory (data.file, G_FILE_MONITOR_WATCH_MOVES, NULL, &error); + g_assert_no_error (error); + + g_file_monitor_set_rate_limit (data.monitor, 200); + g_signal_connect (data.monitor, "changed", G_CALLBACK (monitor_changed), &data); + + data.loop = g_main_loop_new (NULL, TRUE); + + g_timeout_add (500, dir_step, &data); + + g_main_loop_run (data.loop); + + /*output_events (data.events);*/ + check_expected_events (dir_output, G_N_ELEMENTS (dir_output), data.events); + + g_list_free_full (data.events, (GDestroyNotify)free_recorded_event); + g_main_loop_unref (data.loop); + g_object_unref (data.monitor); + g_object_unref (data.file); +} + +static gboolean +nodir_step (gpointer user_data) +{ + TestData *data = user_data; + GFile *parent; + GError *error = NULL; + + switch (data->step) + { + case 0: + record_event (data, -1, NULL, NULL, 0); + parent = g_file_get_parent (data->file); + g_file_make_directory (parent, NULL, &error); + g_assert_no_error (error); + g_object_unref (parent); + break; + case 1: + record_event (data, -1, NULL, NULL, 1); + g_file_replace_contents (data->file, "step 1", 6, NULL, FALSE, G_FILE_CREATE_NONE, NULL, NULL, &error); + g_assert_no_error (error); + break; + case 2: + record_event (data, -1, NULL, NULL, 2); + g_file_delete (data->file, NULL, &error); + g_assert_no_error (error); + break; + case 3: + record_event (data, -1, NULL, NULL, 3); + parent = g_file_get_parent (data->file); + g_file_delete (parent, NULL, &error); + g_assert_no_error (error); + g_object_unref (parent); + break; + case 4: + record_event (data, -1, NULL, NULL, 4); + g_main_loop_quit (data->loop); + return G_SOURCE_REMOVE; + } + + data->step++; + + return G_SOURCE_CONTINUE; +} + +static RecordedEvent nodir_output[] = { + { -1, NULL, NULL, 0 }, + { G_FILE_MONITOR_EVENT_CREATED, "nosuchfile", NULL, -1 }, + { G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT, "nosuchfile", NULL, -1 }, + { -1, NULL, NULL, 1 }, + { G_FILE_MONITOR_EVENT_CREATED, "nosuchfile", NULL, -1 }, + { G_FILE_MONITOR_EVENT_CHANGED, "nosuchfile", NULL, -1 }, + { G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT, "nosuchfile", NULL, -1 }, + { -1, NULL, NULL, 2 }, + { G_FILE_MONITOR_EVENT_DELETED, "nosuchfile", NULL, -1 }, + { -1, NULL, NULL, 3 }, + { -1, NULL, NULL, 4 } +}; + +static void +test_dir_non_existent (void) +{ + TestData data; + GError *error = NULL; + + data.step = 0; + data.events = NULL; + + data.file = g_file_new_for_path ("nosuchdir/nosuchfile"); + data.monitor = g_file_monitor_file (data.file, G_FILE_MONITOR_WATCH_MOVES, NULL, &error); + g_assert_no_error (error); + + g_file_monitor_set_rate_limit (data.monitor, 200); + g_signal_connect (data.monitor, "changed", G_CALLBACK (monitor_changed), &data); + + data.loop = g_main_loop_new (NULL, TRUE); + + /* we need a long timeout here, since the inotify implementation only scans + * for missing files every 4 seconds. + */ + g_timeout_add (5000, nodir_step, &data); + + g_main_loop_run (data.loop); + + /*output_events (data.events);*/ + check_expected_events (nodir_output, G_N_ELEMENTS (nodir_output), data.events); + + g_list_free_full (data.events, (GDestroyNotify)free_recorded_event); + g_main_loop_unref (data.loop); + g_object_unref (data.monitor); + g_object_unref (data.file); +} + +static gboolean +cross_dir_step (gpointer user_data) +{ + TestData *data = user_data; + GFile *file, *file2; + GError *error = NULL; + + switch (data[0].step) + { + case 0: + record_event (&data[0], -1, NULL, NULL, 0); + record_event (&data[1], -1, NULL, NULL, 0); + file = g_file_get_child (data[1].file, "a"); + g_file_replace_contents (file, "step 0", 6, NULL, FALSE, G_FILE_CREATE_NONE, NULL, NULL, &error); + g_assert_no_error (error); + g_object_unref (file); + break; + case 1: + record_event (&data[0], -1, NULL, NULL, 1); + record_event (&data[1], -1, NULL, NULL, 1); + file = g_file_get_child (data[1].file, "a"); + file2 = g_file_get_child (data[0].file, "a"); + g_file_move (file, file2, 0, NULL, NULL, NULL, &error); + g_assert_no_error (error); + g_object_unref (file); + g_object_unref (file2); + break; + case 2: + record_event (&data[0], -1, NULL, NULL, 2); + record_event (&data[1], -1, NULL, NULL, 2); + file2 = g_file_get_child (data[0].file, "a"); + g_file_delete (file2, NULL, NULL); + g_file_delete (data[0].file, NULL, NULL); + g_file_delete (data[1].file, NULL, NULL); + g_object_unref (file2); + break; + case 3: + record_event (&data[0], -1, NULL, NULL, 3); + record_event (&data[1], -1, NULL, NULL, 3); + g_main_loop_quit (data->loop); + return G_SOURCE_REMOVE; + } + + data->step++; + + return G_SOURCE_CONTINUE; +} + +static RecordedEvent cross_dir_a_output[] = { + { -1, NULL, NULL, 0 }, + { -1, NULL, NULL, 1 }, + { G_FILE_MONITOR_EVENT_CREATED, "a", NULL, -1 }, + { G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT, "a", NULL, -1 }, + { -1, NULL, NULL, 2 }, + { G_FILE_MONITOR_EVENT_DELETED, "a", NULL, -1 }, + { G_FILE_MONITOR_EVENT_DELETED, "cross_dir_a", NULL, -1 }, + { -1, NULL, NULL, 3 }, +}; + +static RecordedEvent cross_dir_b_output[] = { + { -1, NULL, NULL, 0 }, + { G_FILE_MONITOR_EVENT_CREATED, "a", NULL, -1 }, + { G_FILE_MONITOR_EVENT_CHANGED, "a", NULL, -1 }, + { G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT, "a", NULL, -1 }, + { -1, NULL, NULL, 1 }, + { G_FILE_MONITOR_EVENT_MOVED_OUT, "a", "a", -1 }, + { -1, NULL, NULL, 2 }, + { G_FILE_MONITOR_EVENT_DELETED, "cross_dir_b", NULL, -1 }, + { -1, NULL, NULL, 3 }, +}; +static void +test_cross_dir_moves (void) +{ + GError *error = NULL; + TestData data[2]; + + data[0].step = 0; + data[0].events = NULL; + + data[0].file = g_file_new_for_path ("cross_dir_a"); + g_file_delete (data[0].file, NULL, NULL); + g_file_make_directory (data[0].file, NULL, &error); + + data[0].monitor = g_file_monitor_directory (data[0].file, 0, NULL, &error); + g_assert_no_error (error); + + g_file_monitor_set_rate_limit (data[0].monitor, 200); + g_signal_connect (data[0].monitor, "changed", G_CALLBACK (monitor_changed), &data[0]); + + data[1].step = 0; + data[1].events = NULL; + + data[1].file = g_file_new_for_path ("cross_dir_b"); + g_file_delete (data[1].file, NULL, NULL); + g_file_make_directory (data[1].file, NULL, &error); + + data[1].monitor = g_file_monitor_directory (data[1].file, G_FILE_MONITOR_WATCH_MOVES, NULL, &error); + g_assert_no_error (error); + + g_file_monitor_set_rate_limit (data[1].monitor, 200); + g_signal_connect (data[1].monitor, "changed", G_CALLBACK (monitor_changed), &data[1]); + + data[0].loop = g_main_loop_new (NULL, TRUE); + + g_timeout_add (500, cross_dir_step, data); + + g_main_loop_run (data[0].loop); + +#if 0 + g_print ("monitor a:\n"); + output_events (data[0].events); + g_print ("monitor b:\n"); + output_events (data[1].events); +#endif + + check_expected_events (cross_dir_a_output, G_N_ELEMENTS (cross_dir_a_output), data[0].events); + check_expected_events (cross_dir_b_output, G_N_ELEMENTS (cross_dir_b_output), data[1].events); + + g_list_free_full (data[0].events, (GDestroyNotify)free_recorded_event); + g_main_loop_unref (data[0].loop); + g_object_unref (data[0].monitor); + g_object_unref (data[0].file); + + g_list_free_full (data[1].events, (GDestroyNotify)free_recorded_event); + g_object_unref (data[1].monitor); + g_object_unref (data[1].file); +} + +int +main (int argc, char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/monitor/atomic-replace", test_atomic_replace); + g_test_add_func ("/monitor/file-changes", test_file_changes); + g_test_add_func ("/monitor/dir-monitor", test_dir_monitor); + g_test_add_func ("/monitor/dir-not-existent", test_dir_non_existent); + g_test_add_func ("/monitor/cross-dir-moves", test_cross_dir_moves); + + return g_test_run (); +} diff --git a/gio/tests/thumbnail-verification.c b/gio/tests/thumbnail-verification.c index c9f51c8..ef2ca70 100644 --- a/gio/tests/thumbnail-verification.c +++ b/gio/tests/thumbnail-verification.c @@ -91,7 +91,7 @@ test_validity (void) /* Run all the tests. */ for (i = 0; i < G_N_ELEMENTS (tests); i++) { - GStatBuf stat_buf; + GLocalFileStat stat_buf; const gchar *thumbnail_path; gchar *file_uri; gboolean result; diff --git a/gio/tests/tls-certificate.c b/gio/tests/tls-certificate.c index 4d1de1d..9770272 100644 --- a/gio/tests/tls-certificate.c +++ b/gio/tests/tls-certificate.c @@ -123,6 +123,73 @@ pem_parser (const Reference *ref) } static void +pem_parser_handles_chain (const Reference *ref) +{ + GTlsCertificate *cert; + GTlsCertificate *issuer; + GTlsCertificate *original_cert; + gchar *pem; + gchar *parsed_cert_pem = NULL; + const gchar *parsed_key_pem = NULL; + GError *error = NULL; + + /* Check that a chain with exactly three certificates is returned */ + g_file_get_contents (g_test_get_filename (G_TEST_DIST, "cert-tests", "cert-list.pem", NULL), &pem, NULL, &error); + g_assert_no_error (error); + g_assert (pem); + + cert = original_cert = g_tls_certificate_new_from_pem (pem, -1, &error); + g_free (pem); + g_assert_no_error (error); + g_assert (cert); + + g_object_get (cert, + "certificate-pem", &parsed_cert_pem, + NULL); + g_assert_cmpstr (parsed_cert_pem, ==, ref->cert_pems[0]); + g_clear_pointer (&parsed_cert_pem, g_free); + + /* Make sure the private key was parsed */ + parsed_key_pem = g_test_tls_connection_get_private_key_pem (cert); + g_assert_cmpstr (parsed_key_pem, ==, ref->key_pem); + parsed_key_pem = NULL; + + /* Now test the second cert */ + issuer = g_tls_certificate_get_issuer (cert); + g_assert (issuer); + + cert = issuer; + issuer = g_tls_certificate_get_issuer (cert); + g_assert (issuer); + + g_object_get (cert, + "certificate-pem", &parsed_cert_pem, + NULL); + g_assert_cmpstr (parsed_cert_pem, ==, ref->cert_pems[1]); + g_clear_pointer (&parsed_cert_pem, g_free); + + /* Only the first cert should have a private key */ + parsed_key_pem = g_test_tls_connection_get_private_key_pem (cert); + g_assert (!parsed_key_pem); + + /* Now test the final cert */ + cert = issuer; + issuer = g_tls_certificate_get_issuer (cert); + g_assert (!issuer); + + g_object_get (cert, + "certificate-pem", &parsed_cert_pem, + NULL); + g_assert_cmpstr (parsed_cert_pem, ==, ref->cert_pems[2]); + g_clear_pointer (&parsed_cert_pem, g_free); + + parsed_key_pem = g_test_tls_connection_get_private_key_pem (cert); + g_assert (!parsed_key_pem); + + g_object_unref (original_cert); +} + +static void from_file (const Reference *ref) { GTlsCertificate *cert; @@ -305,6 +372,8 @@ main (int argc, g_test_add_data_func ("/tls-certificate/pem-parser", &ref, (GTestDataFunc)pem_parser); + g_test_add_data_func ("/tls-certificate/pem-parser-handles-chain", + &ref, (GTestDataFunc)pem_parser_handles_chain); g_test_add_data_func ("/tls-certificate/from_file", &ref, (GTestDataFunc)from_file); g_test_add_data_func ("/tls-certificate/from_files", diff --git a/gio/win32/Makefile.am b/gio/win32/Makefile.am index a48c68f..2fc10f6 100644 --- a/gio/win32/Makefile.am +++ b/gio/win32/Makefile.am @@ -3,8 +3,10 @@ include $(top_srcdir)/glib.mk noinst_LTLIBRARIES += libgiowin32.la libgiowin32_la_SOURCES = \ - gwin32directorymonitor.c \ - gwin32directorymonitor.h \ + gwin32fsmonitorutils.c \ + gwin32fsmonitorutils.h \ + gwin32filemonitor.c \ + gwin32filemonitor.h \ gwinhttpvfs.c \ gwinhttpvfs.h \ gwinhttpfile.c \ diff --git a/gio/win32/Makefile.in b/gio/win32/Makefile.in new file mode 100644 index 0000000..33871ed --- /dev/null +++ b/gio/win32/Makefile.in @@ -0,0 +1,1565 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +subdir = gio/win32 +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES) +libgiowin32_la_LIBADD = +am__objects_1 = +am_libgiowin32_la_OBJECTS = libgiowin32_la-gwin32fsmonitorutils.lo \ + libgiowin32_la-gwin32filemonitor.lo \ + libgiowin32_la-gwinhttpvfs.lo libgiowin32_la-gwinhttpfile.lo \ + libgiowin32_la-gwinhttpfileinputstream.lo \ + libgiowin32_la-gwinhttpfileoutputstream.lo $(am__objects_1) +libgiowin32_la_OBJECTS = $(am_libgiowin32_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libgiowin32_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(libgiowin32_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \ + $@ +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgiowin32_la_SOURCES) +DIST_SOURCES = $(libgiowin32_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/glib.mk $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = +BUILT_EXTRA_DIST = +CLEANFILES = *.log *.trs $(am__append_14) +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) libgiowin32.la +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +libgiowin32_la_SOURCES = \ + gwin32fsmonitorutils.c \ + gwin32fsmonitorutils.h \ + gwin32filemonitor.c \ + gwin32filemonitor.h \ + gwinhttpvfs.c \ + gwinhttpvfs.h \ + gwinhttpfile.c \ + gwinhttpfile.h \ + gwinhttpfileinputstream.c \ + gwinhttpfileinputstream.h \ + gwinhttpfileoutputstream.c \ + gwinhttpfileoutputstream.h \ + winhttp.h \ + $(NULL) + +libgiowin32_la_CFLAGS = \ + $(GLIB_HIDDEN_VISIBILITY_CFLAGS) \ + -DG_LOG_DOMAIN=\"GLib-GIO\" \ + $(gio_INCLUDES) \ + $(GLIB_DEBUG_FLAGS) \ + -DGIO_MODULE_DIR=\"$(GIO_MODULE_DIR)\" \ + -DGIO_COMPILATION \ + -DG_DISABLE_DEPRECATED + +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gio/win32/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gio/win32/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgiowin32.la: $(libgiowin32_la_OBJECTS) $(libgiowin32_la_DEPENDENCIES) $(EXTRA_libgiowin32_la_DEPENDENCIES) + $(AM_V_CCLD)$(libgiowin32_la_LINK) $(libgiowin32_la_OBJECTS) $(libgiowin32_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiowin32_la-gwin32filemonitor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiowin32_la-gwin32fsmonitorutils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiowin32_la-gwinhttpfile.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiowin32_la-gwinhttpfileinputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiowin32_la-gwinhttpfileoutputstream.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgiowin32_la-gwinhttpvfs.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libgiowin32_la-gwin32fsmonitorutils.lo: gwin32fsmonitorutils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgiowin32_la_CFLAGS) $(CFLAGS) -MT libgiowin32_la-gwin32fsmonitorutils.lo -MD -MP -MF $(DEPDIR)/libgiowin32_la-gwin32fsmonitorutils.Tpo -c -o libgiowin32_la-gwin32fsmonitorutils.lo `test -f 'gwin32fsmonitorutils.c' || echo '$(srcdir)/'`gwin32fsmonitorutils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiowin32_la-gwin32fsmonitorutils.Tpo $(DEPDIR)/libgiowin32_la-gwin32fsmonitorutils.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwin32fsmonitorutils.c' object='libgiowin32_la-gwin32fsmonitorutils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgiowin32_la_CFLAGS) $(CFLAGS) -c -o libgiowin32_la-gwin32fsmonitorutils.lo `test -f 'gwin32fsmonitorutils.c' || echo '$(srcdir)/'`gwin32fsmonitorutils.c + +libgiowin32_la-gwin32filemonitor.lo: gwin32filemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgiowin32_la_CFLAGS) $(CFLAGS) -MT libgiowin32_la-gwin32filemonitor.lo -MD -MP -MF $(DEPDIR)/libgiowin32_la-gwin32filemonitor.Tpo -c -o libgiowin32_la-gwin32filemonitor.lo `test -f 'gwin32filemonitor.c' || echo '$(srcdir)/'`gwin32filemonitor.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiowin32_la-gwin32filemonitor.Tpo $(DEPDIR)/libgiowin32_la-gwin32filemonitor.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwin32filemonitor.c' object='libgiowin32_la-gwin32filemonitor.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgiowin32_la_CFLAGS) $(CFLAGS) -c -o libgiowin32_la-gwin32filemonitor.lo `test -f 'gwin32filemonitor.c' || echo '$(srcdir)/'`gwin32filemonitor.c + +libgiowin32_la-gwinhttpvfs.lo: gwinhttpvfs.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgiowin32_la_CFLAGS) $(CFLAGS) -MT libgiowin32_la-gwinhttpvfs.lo -MD -MP -MF $(DEPDIR)/libgiowin32_la-gwinhttpvfs.Tpo -c -o libgiowin32_la-gwinhttpvfs.lo `test -f 'gwinhttpvfs.c' || echo '$(srcdir)/'`gwinhttpvfs.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiowin32_la-gwinhttpvfs.Tpo $(DEPDIR)/libgiowin32_la-gwinhttpvfs.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwinhttpvfs.c' object='libgiowin32_la-gwinhttpvfs.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgiowin32_la_CFLAGS) $(CFLAGS) -c -o libgiowin32_la-gwinhttpvfs.lo `test -f 'gwinhttpvfs.c' || echo '$(srcdir)/'`gwinhttpvfs.c + +libgiowin32_la-gwinhttpfile.lo: gwinhttpfile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgiowin32_la_CFLAGS) $(CFLAGS) -MT libgiowin32_la-gwinhttpfile.lo -MD -MP -MF $(DEPDIR)/libgiowin32_la-gwinhttpfile.Tpo -c -o libgiowin32_la-gwinhttpfile.lo `test -f 'gwinhttpfile.c' || echo '$(srcdir)/'`gwinhttpfile.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiowin32_la-gwinhttpfile.Tpo $(DEPDIR)/libgiowin32_la-gwinhttpfile.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwinhttpfile.c' object='libgiowin32_la-gwinhttpfile.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgiowin32_la_CFLAGS) $(CFLAGS) -c -o libgiowin32_la-gwinhttpfile.lo `test -f 'gwinhttpfile.c' || echo '$(srcdir)/'`gwinhttpfile.c + +libgiowin32_la-gwinhttpfileinputstream.lo: gwinhttpfileinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgiowin32_la_CFLAGS) $(CFLAGS) -MT libgiowin32_la-gwinhttpfileinputstream.lo -MD -MP -MF $(DEPDIR)/libgiowin32_la-gwinhttpfileinputstream.Tpo -c -o libgiowin32_la-gwinhttpfileinputstream.lo `test -f 'gwinhttpfileinputstream.c' || echo '$(srcdir)/'`gwinhttpfileinputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiowin32_la-gwinhttpfileinputstream.Tpo $(DEPDIR)/libgiowin32_la-gwinhttpfileinputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwinhttpfileinputstream.c' object='libgiowin32_la-gwinhttpfileinputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgiowin32_la_CFLAGS) $(CFLAGS) -c -o libgiowin32_la-gwinhttpfileinputstream.lo `test -f 'gwinhttpfileinputstream.c' || echo '$(srcdir)/'`gwinhttpfileinputstream.c + +libgiowin32_la-gwinhttpfileoutputstream.lo: gwinhttpfileoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgiowin32_la_CFLAGS) $(CFLAGS) -MT libgiowin32_la-gwinhttpfileoutputstream.lo -MD -MP -MF $(DEPDIR)/libgiowin32_la-gwinhttpfileoutputstream.Tpo -c -o libgiowin32_la-gwinhttpfileoutputstream.lo `test -f 'gwinhttpfileoutputstream.c' || echo '$(srcdir)/'`gwinhttpfileoutputstream.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgiowin32_la-gwinhttpfileoutputstream.Tpo $(DEPDIR)/libgiowin32_la-gwinhttpfileoutputstream.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwinhttpfileoutputstream.c' object='libgiowin32_la-gwinhttpfileoutputstream.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgiowin32_la_CFLAGS) $(CFLAGS) -c -o libgiowin32_la-gwinhttpfileoutputstream.lo `test -f 'gwinhttpfileoutputstream.c' || echo '$(srcdir)/'`gwinhttpfileoutputstream.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \ + check-local clean clean-checkLTLIBRARIES clean-checkPROGRAMS \ + clean-generic clean-installed_testLTLIBRARIES \ + clean-installed_testPROGRAMS clean-libtool \ + clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gio/win32/gwin32directorymonitor.c b/gio/win32/gwin32directorymonitor.c deleted file mode 100644 index b5f192e..0000000 --- a/gio/win32/gwin32directorymonitor.c +++ /dev/null @@ -1,244 +0,0 @@ -/* 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, see . - * - * Author: Vlad Grecescu - * - */ - -#include "config.h" -#include "gwin32directorymonitor.h" -#include - -G_DEFINE_TYPE_WITH_CODE (GWin32DirectoryMonitor, - g_win32_directory_monitor, - G_TYPE_LOCAL_DIRECTORY_MONITOR, - g_io_extension_point_implement (G_LOCAL_DIRECTORY_MONITOR_EXTENSION_POINT_NAME, - g_define_type_id, - "readdirectorychanges", - 20)) - -struct _GWin32DirectoryMonitorPrivate { - OVERLAPPED overlapped; - DWORD buffer_allocated_bytes; - gchar *file_notify_buffer; - DWORD buffer_filled_bytes; - HANDLE hDirectory; - /* Needed in the APC where we only have this private struct */ - GFileMonitor *self; -}; - -static void g_win32_directory_monitor_finalize (GObject *base); -static gboolean g_win32_directory_monitor_cancel (GFileMonitor *base); - -static GObject *g_win32_directory_monitor_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam *construct_properties); - -static gboolean -g_win32_directory_monitor_is_supported (void) -{ - return TRUE; -} - -static void -g_win32_directory_monitor_finalize (GObject *base) -{ - GWin32DirectoryMonitor *self; - self = G_WIN32_DIRECTORY_MONITOR (base); - - if (self->priv->hDirectory == INVALID_HANDLE_VALUE) - { - /* If we don't have a directory handle we can free - * self->priv->file_notify_buffer and self->priv here. The - * callback won't be called obviously any more (and presumably - * never has been called). - */ - g_free (self->priv->file_notify_buffer); - self->priv->file_notify_buffer = NULL; - g_free (self->priv); - } - else - { - /* If we have a directory handle, the OVERLAPPED struct is - * passed once more to the callback as a result of the - * CloseHandle() done in the cancel method, so self->priv has to - * be kept around. The GWin32DirectoryMonitor object is - * disappearing, so can't leave a pointer to it in - * self->priv->self. - */ - self->priv->self = NULL; - } - - if (G_OBJECT_CLASS (g_win32_directory_monitor_parent_class)->finalize) - (*G_OBJECT_CLASS (g_win32_directory_monitor_parent_class)->finalize) (base); -} - -static gboolean -g_win32_directory_monitor_cancel (GFileMonitor *base) -{ - GWin32DirectoryMonitor *self; - self = G_WIN32_DIRECTORY_MONITOR (base); - - /* This triggers a last callback() with nBytes==0. */ - - /* Actually I am not so sure about that, it seems to trigger a last - * callback allright, but the way to recognize that it is the final - * one is not to check for nBytes==0, I think that was a - * misunderstanding. - */ - if (self->priv->hDirectory != INVALID_HANDLE_VALUE) - CloseHandle (self->priv->hDirectory); - - if (G_FILE_MONITOR_CLASS (g_win32_directory_monitor_parent_class)->cancel) - (*G_FILE_MONITOR_CLASS (g_win32_directory_monitor_parent_class)->cancel) (base); - return TRUE; -} - -static void CALLBACK -g_win32_directory_monitor_callback (DWORD error, - DWORD nBytes, - LPOVERLAPPED lpOverlapped) -{ - gulong offset; - PFILE_NOTIFY_INFORMATION pfile_notify_walker; - glong file_name_len; - gchar *file_name; - gchar *path; - GFile *file; - GWin32DirectoryMonitorPrivate *priv = (GWin32DirectoryMonitorPrivate *) lpOverlapped; - - static GFileMonitorEvent events[] = - { - 0, - G_FILE_MONITOR_EVENT_CREATED, /* FILE_ACTION_ADDED */ - G_FILE_MONITOR_EVENT_DELETED, /* FILE_ACTION_REMOVED */ - G_FILE_MONITOR_EVENT_CHANGED, /* FILE_ACTION_MODIFIED */ - G_FILE_MONITOR_EVENT_DELETED, /* FILE_ACTION_RENAMED_OLD_NAME */ - G_FILE_MONITOR_EVENT_CREATED, /* FILE_ACTION_RENAMED_NEW_NAME */ - }; - - /* If priv->self is NULL the GWin32DirectoryMonitor object has been destroyed. */ - if (priv->self == NULL || - g_file_monitor_is_cancelled (priv->self) || - priv->file_notify_buffer == NULL) - { - g_free (priv->file_notify_buffer); - g_free (priv); - return; - } - - offset = 0; - do { - pfile_notify_walker = (PFILE_NOTIFY_INFORMATION)(priv->file_notify_buffer + offset); - if (pfile_notify_walker->Action > 0) - { - file_name = g_utf16_to_utf8 (pfile_notify_walker->FileName, pfile_notify_walker->FileNameLength / sizeof(WCHAR), NULL, &file_name_len, NULL); - path = g_build_filename(G_LOCAL_DIRECTORY_MONITOR (priv->self)->dirname, file_name, NULL); - file = g_file_new_for_path (path); - g_file_monitor_emit_event (priv->self, file, NULL, events [pfile_notify_walker->Action]); - g_object_unref (file); - g_free (path); - g_free (file_name); - } - offset += pfile_notify_walker->NextEntryOffset; - } while (pfile_notify_walker->NextEntryOffset); - - ReadDirectoryChangesW (priv->hDirectory, - (gpointer)priv->file_notify_buffer, - priv->buffer_allocated_bytes, - FALSE, - FILE_NOTIFY_CHANGE_FILE_NAME | - FILE_NOTIFY_CHANGE_DIR_NAME | - FILE_NOTIFY_CHANGE_ATTRIBUTES | - FILE_NOTIFY_CHANGE_SIZE, - &priv->buffer_filled_bytes, - &priv->overlapped, - g_win32_directory_monitor_callback); -} - -static GObject * -g_win32_directory_monitor_constructor (GType type, - guint n_construct_properties, - GObjectConstructParam *construct_properties) { - GObject *obj; - GWin32DirectoryMonitorClass *klass; - GObjectClass *parent_class; - GWin32DirectoryMonitor *self; - wchar_t *wdirname; - - klass = G_WIN32_DIRECTORY_MONITOR_CLASS (g_type_class_peek (G_TYPE_WIN32_DIRECTORY_MONITOR)); - parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass)); - obj = parent_class->constructor (type, n_construct_properties, construct_properties); - self = G_WIN32_DIRECTORY_MONITOR (obj); - wdirname = g_utf8_to_utf16 (G_LOCAL_DIRECTORY_MONITOR (obj)->dirname, -1, NULL, NULL, NULL); - - self->priv->hDirectory = CreateFileW (wdirname, - FILE_LIST_DIRECTORY, - FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, - - NULL, - OPEN_EXISTING, - FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, - NULL); - g_free (wdirname); - if (self->priv->hDirectory == INVALID_HANDLE_VALUE) - { - /* Ignore errors */ - return obj; - } - - ReadDirectoryChangesW (self->priv->hDirectory, - (gpointer)self->priv->file_notify_buffer, - self->priv->buffer_allocated_bytes, - FALSE, - FILE_NOTIFY_CHANGE_FILE_NAME | - FILE_NOTIFY_CHANGE_DIR_NAME | - FILE_NOTIFY_CHANGE_ATTRIBUTES | - FILE_NOTIFY_CHANGE_SIZE, - &self->priv->buffer_filled_bytes, - &self->priv->overlapped, - g_win32_directory_monitor_callback); - /* Ignore errors */ - - return obj; -} - -static void -g_win32_directory_monitor_class_init (GWin32DirectoryMonitorClass *klass) -{ - g_win32_directory_monitor_parent_class = g_type_class_peek_parent (klass); - - G_OBJECT_CLASS (klass)->constructor = g_win32_directory_monitor_constructor; - G_OBJECT_CLASS (klass)->finalize = g_win32_directory_monitor_finalize; - G_FILE_MONITOR_CLASS (klass)->cancel = g_win32_directory_monitor_cancel; - - G_LOCAL_DIRECTORY_MONITOR_CLASS (klass)->mount_notify = FALSE; - G_LOCAL_DIRECTORY_MONITOR_CLASS (klass)->is_supported = g_win32_directory_monitor_is_supported; -} - -static void -g_win32_directory_monitor_init (GWin32DirectoryMonitor *self) -{ - self->priv = (GWin32DirectoryMonitorPrivate*)g_new0 (GWin32DirectoryMonitorPrivate, 1); - g_assert (self->priv != 0); - - self->priv->buffer_allocated_bytes = 32768; - self->priv->file_notify_buffer = g_new0 (gchar, self->priv->buffer_allocated_bytes); - g_assert (self->priv->file_notify_buffer); - - self->priv->self = G_FILE_MONITOR (self); -} diff --git a/gio/win32/gwin32directorymonitor.h b/gio/win32/gwin32directorymonitor.h deleted file mode 100644 index 3e07748..0000000 --- a/gio/win32/gwin32directorymonitor.h +++ /dev/null @@ -1,60 +0,0 @@ -/* 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, see . - * - * Author: Vlad Grecescu - * - */ -#ifndef __G_WIN32_DIRECTORY_MONITOR_H__ -#define __G_WIN32_DIRECTORY_MONITOR_H__ - -#include -#include -#include -#include -#include - -#include "gio/glocaldirectorymonitor.h" -#include "gio/giomodule.h" - -G_BEGIN_DECLS - - -#define G_TYPE_WIN32_DIRECTORY_MONITOR (g_win32_directory_monitor_get_type ()) -#define G_WIN32_DIRECTORY_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_WIN32_DIRECTORY_MONITOR, GWin32DirectoryMonitor)) -#define G_WIN32_DIRECTORY_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_WIN32_DIRECTORY_MONITOR, GWin32DirectoryMonitorClass)) -#define G_IS_WIN32_DIRECTORY_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_WIN32_DIRECTORY_MONITOR)) -#define G_IS_WIN32_DIRECTORY_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), G_TYPE_WIN32_DIRECTORY_MONITOR)) -#define G_WIN32_DIRECTORY_MONITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), G_TYPE_WIN32_DIRECTORY_MONITOR, GWin32DirectoryMonitorClass)) - -typedef struct _GWin32DirectoryMonitor GWin32DirectoryMonitor; -typedef struct _GWin32DirectoryMonitorClass GWin32DirectoryMonitorClass; -typedef struct _GWin32DirectoryMonitorPrivate GWin32DirectoryMonitorPrivate; - -struct _GWin32DirectoryMonitor { - GLocalDirectoryMonitor parent_instance; - GWin32DirectoryMonitorPrivate * priv; -}; -struct _GWin32DirectoryMonitorClass { - GLocalDirectoryMonitorClass parent_class; -}; - -GType g_win32_directory_monitor_get_type (void); -void g_win32_directory_monitor_register (GIOModule *module); - -G_END_DECLS - -#endif /* __G_WIN32_DIRECTORY_MONITOR_H__ */ diff --git a/gio/win32/gwin32filemonitor.c b/gio/win32/gwin32filemonitor.c new file mode 100644 index 0000000..abaafa3 --- /dev/null +++ b/gio/win32/gwin32filemonitor.c @@ -0,0 +1,104 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * 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, see . + * + * Author: Vlad Grecescu + * Author: Chun-wei Fan + * + */ + +#include "config.h" + +#include "gwin32filemonitor.h" +#include "gwin32fsmonitorutils.h" + +#include + +G_DEFINE_TYPE_WITH_CODE (GWin32FileMonitor, g_win32_file_monitor, G_TYPE_LOCAL_FILE_MONITOR, + g_io_extension_point_implement (G_LOCAL_FILE_MONITOR_EXTENSION_POINT_NAME, + g_define_type_id, "win32filemonitor", 20)) + +static void +g_win32_file_monitor_start (GLocalFileMonitor *monitor, + const gchar *dirname, + const gchar *basename, + const gchar *filename, + GFileMonitorSource *source) +{ + GWin32FileMonitor *win32_monitor = G_WIN32_FILE_MONITOR (monitor); + + win32_monitor->priv->fms = source; + + if (filename == NULL && basename == NULL) + g_win32_fs_monitor_init (win32_monitor->priv, dirname, NULL, FALSE); + else if (basename != NULL) + g_win32_fs_monitor_init (win32_monitor->priv, dirname, basename, TRUE); + else + g_win32_fs_monitor_init (win32_monitor->priv, NULL, filename, TRUE); +} + +static gboolean +g_win32_file_monitor_is_supported (void) +{ + return TRUE; +} + +static void +g_win32_file_monitor_init (GWin32FileMonitor *monitor) +{ + monitor->priv = g_win32_fs_monitor_create (TRUE); + + monitor->priv->self = G_FILE_MONITOR (monitor); +} + +static void +g_win32_file_monitor_finalize (GObject *object) +{ + GWin32FileMonitor *monitor; + + monitor = G_WIN32_FILE_MONITOR (object); + + g_win32_fs_monitor_finalize (monitor->priv); + + G_OBJECT_CLASS (g_win32_file_monitor_parent_class)->finalize (object); +} + +static gboolean +g_win32_file_monitor_cancel (GFileMonitor* monitor) +{ + GWin32FileMonitor *file_monitor; + + file_monitor = G_WIN32_FILE_MONITOR (monitor); + + g_win32_fs_monitor_close_handle (file_monitor->priv); + + return TRUE; +} + +static void +g_win32_file_monitor_class_init (GWin32FileMonitorClass *klass) +{ + GObjectClass* gobject_class = G_OBJECT_CLASS (klass); + GFileMonitorClass *file_monitor_class = G_FILE_MONITOR_CLASS (klass); + GLocalFileMonitorClass *local_file_monitor_class = G_LOCAL_FILE_MONITOR_CLASS (klass); + + gobject_class->finalize = g_win32_file_monitor_finalize; + file_monitor_class->cancel = g_win32_file_monitor_cancel; + + local_file_monitor_class->is_supported = g_win32_file_monitor_is_supported; + local_file_monitor_class->start = g_win32_file_monitor_start; +} diff --git a/gio/win32/gwin32filemonitor.h b/gio/win32/gwin32filemonitor.h new file mode 100644 index 0000000..5aef2ba --- /dev/null +++ b/gio/win32/gwin32filemonitor.h @@ -0,0 +1,62 @@ +/* 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, see . + * + * Author: Chun-wei Fan + * + */ +#ifndef __G_WIN32_FILE_MONITOR_H__ +#define __G_WIN32_FILE_MONITOR_H__ + +#include +#include +#include +#include +#include + +#include "gio/gfilemonitor.h" +#include "gio/glocalfilemonitor.h" +#include "gio/giomodule.h" + +#include "gwin32fsmonitorutils.h" + +G_BEGIN_DECLS + +#define G_TYPE_WIN32_FILE_MONITOR (g_win32_file_monitor_get_type ()) +#define G_WIN32_FILE_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_WIN32_FILE_MONITOR, GWin32FileMonitor)) +#define G_WIN32_FILE_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), G_TYPE_WIN32_FILE_MONITOR, GWin32FileMonitorClass)) +#define G_IS_WIN32_FILE_MONITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_WIN32_FILE_MONITOR)) +#define G_IS_WIN32_FILE_MONITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), G_TYPE_WIN32_FILE_MONITOR)) +#define G_WIN32_FILE_MONITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), G_TYPE_WIN32_FILE_MONITOR, GWin32FileMonitorClass)) + +typedef struct _GWin32FileMonitor GWin32FileMonitor; +typedef struct _GWin32FileMonitorClass GWin32FileMonitorClass; +typedef struct _GWin32FileMonitorPrivate GWin32FileMonitorPrivate; + +struct _GWin32FileMonitor { + GLocalFileMonitor parent_instance; + GWin32FSMonitorPrivate * priv; +}; +struct _GWin32FileMonitorClass { + GLocalFileMonitorClass parent_class; +}; + +GType g_win32_file_monitor_get_type (void); +void g_win32_file_monitor_register (GIOModule *module); + +G_END_DECLS + +#endif /* __G_WIN32_FILE_MONITOR_H__ */ diff --git a/gio/win32/gwin32fsmonitorutils.c b/gio/win32/gwin32fsmonitorutils.c new file mode 100644 index 0000000..6cdcbc8 --- /dev/null +++ b/gio/win32/gwin32fsmonitorutils.c @@ -0,0 +1,425 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * Copyright (C) 2015 Chun-wei Fan + * + * 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, see . + * + * Author: Vlad Grecescu + * Author: Chun-wei Fan + * + */ + +#include "config.h" + +#include "gwin32fsmonitorutils.h" +#include "gio/gfile.h" + +#include + +#define MAX_PATH_LONG 32767 /* Support Paths longer than MAX_PATH (260) characters */ + +static gboolean +g_win32_fs_monitor_handle_event (GWin32FSMonitorPrivate *monitor, + const gchar *filename, + PFILE_NOTIFY_INFORMATION pfni) +{ + GFileMonitorEvent fme; + PFILE_NOTIFY_INFORMATION pfni_next; + WIN32_FILE_ATTRIBUTE_DATA attrib_data = {0, }; + gchar *renamed_file = NULL; + + switch (pfni->Action) + { + case FILE_ACTION_ADDED: + fme = G_FILE_MONITOR_EVENT_CREATED; + break; + + case FILE_ACTION_REMOVED: + fme = G_FILE_MONITOR_EVENT_DELETED; + break; + + case FILE_ACTION_MODIFIED: + { + gboolean success_attribs = GetFileAttributesExW (monitor->wfullpath_with_long_prefix, + GetFileExInfoStandard, + &attrib_data); + + if (monitor->file_attribs != INVALID_FILE_ATTRIBUTES && + success_attribs && + attrib_data.dwFileAttributes != monitor->file_attribs) + fme = G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED; + else + fme = G_FILE_MONITOR_EVENT_CHANGED; + + monitor->file_attribs = attrib_data.dwFileAttributes; + } + break; + + case FILE_ACTION_RENAMED_OLD_NAME: + if (pfni->NextEntryOffset != 0) + { + /* If the file was renamed in the same directory, we would get a + * FILE_ACTION_RENAMED_NEW_NAME action in the next FILE_NOTIFY_INFORMATION + * structure. + */ + glong file_name_len = 0; + + pfni_next = (PFILE_NOTIFY_INFORMATION) ((BYTE*)pfni + pfni->NextEntryOffset); + renamed_file = g_utf16_to_utf8 (pfni_next->FileName, pfni_next->FileNameLength / sizeof(WCHAR), NULL, &file_name_len, NULL); + if (pfni_next->Action == FILE_ACTION_RENAMED_NEW_NAME) + fme = G_FILE_MONITOR_EVENT_RENAMED; + else + fme = G_FILE_MONITOR_EVENT_MOVED_OUT; + } + else + fme = G_FILE_MONITOR_EVENT_MOVED_OUT; + break; + + case FILE_ACTION_RENAMED_NEW_NAME: + if (monitor->pfni_prev != NULL && + monitor->pfni_prev->Action == FILE_ACTION_RENAMED_OLD_NAME) + { + /* don't bother sending events, was already sent (rename) */ + fme = -1; + } + else + fme = G_FILE_MONITOR_EVENT_MOVED_IN; + break; + + default: + /* The possible Windows actions are all above, so shouldn't get here */ + g_assert_not_reached (); + break; + } + + if (fme != -1) + return g_file_monitor_source_handle_event (monitor->fms, + fme, + filename, + renamed_file, + NULL, + g_get_monotonic_time ()); + else + return FALSE; +} + + +static void CALLBACK +g_win32_fs_monitor_callback (DWORD error, + DWORD nBytes, + LPOVERLAPPED lpOverlapped) +{ + gulong offset; + PFILE_NOTIFY_INFORMATION pfile_notify_walker; + GWin32FSMonitorPrivate *monitor = (GWin32FSMonitorPrivate *) lpOverlapped; + + DWORD notify_filter = monitor->isfile ? + (FILE_NOTIFY_CHANGE_FILE_NAME | + FILE_NOTIFY_CHANGE_ATTRIBUTES | + FILE_NOTIFY_CHANGE_SIZE) : + (FILE_NOTIFY_CHANGE_FILE_NAME | + FILE_NOTIFY_CHANGE_DIR_NAME | + FILE_NOTIFY_CHANGE_ATTRIBUTES | + FILE_NOTIFY_CHANGE_SIZE); + + /* If monitor->self is NULL the GWin32FileMonitor object has been destroyed. */ + if (monitor->self == NULL || + g_file_monitor_is_cancelled (monitor->self) || + monitor->file_notify_buffer == NULL) + { + g_free (monitor->file_notify_buffer); + g_free (monitor); + return; + } + + offset = 0; + + do + { + pfile_notify_walker = (PFILE_NOTIFY_INFORMATION)((BYTE *)monitor->file_notify_buffer + offset); + if (pfile_notify_walker->Action > 0) + { + glong file_name_len; + gchar *changed_file; + + changed_file = g_utf16_to_utf8 (pfile_notify_walker->FileName, + pfile_notify_walker->FileNameLength / sizeof(WCHAR), + NULL, &file_name_len, NULL); + + if (monitor->isfile) + { + gint long_filename_length = wcslen (monitor->wfilename_long); + gint short_filename_length = wcslen (monitor->wfilename_short); + enum GWin32FileMonitorFileAlias alias_state; + + /* If monitoring a file, check that the changed file + * in the directory matches the file that is to be monitored + * We need to check both the long and short file names for the same file. + * + * We need to send in the name of the monitored file, not its long (or short) variant, + * if they exist. + */ + + if (_wcsnicmp (pfile_notify_walker->FileName, + monitor->wfilename_long, + long_filename_length) == 0) + { + if (_wcsnicmp (pfile_notify_walker->FileName, + monitor->wfilename_short, + short_filename_length) == 0) + { + alias_state = G_WIN32_FILE_MONITOR_NO_ALIAS; + } + else + alias_state = G_WIN32_FILE_MONITOR_LONG_FILENAME; + } + else if (_wcsnicmp (pfile_notify_walker->FileName, + monitor->wfilename_short, + short_filename_length) == 0) + { + alias_state = G_WIN32_FILE_MONITOR_SHORT_FILENAME; + } + else + alias_state = G_WIN32_FILE_MONITOR_NO_MATCH_FOUND; + + if (alias_state != G_WIN32_FILE_MONITOR_NO_MATCH_FOUND) + { + wchar_t *monitored_file_w; + gchar *monitored_file; + + switch (alias_state) + { + case G_WIN32_FILE_MONITOR_NO_ALIAS: + monitored_file = g_strdup (changed_file); + break; + case G_WIN32_FILE_MONITOR_LONG_FILENAME: + case G_WIN32_FILE_MONITOR_SHORT_FILENAME: + monitored_file_w = wcsrchr (monitor->wfullpath_with_long_prefix, L'\\'); + monitored_file = g_utf16_to_utf8 (monitored_file_w + 1, -1, NULL, NULL, NULL); + break; + default: + g_assert_not_reached (); + break; + } + + g_win32_fs_monitor_handle_event (monitor, monitored_file, pfile_notify_walker); + g_free (monitored_file); + } + } + else + g_win32_fs_monitor_handle_event (monitor, changed_file, pfile_notify_walker); + + g_free (changed_file); + } + + monitor->pfni_prev = pfile_notify_walker; + offset += pfile_notify_walker->NextEntryOffset; + } + while (pfile_notify_walker->NextEntryOffset); + + ReadDirectoryChangesW (monitor->hDirectory, + monitor->file_notify_buffer, + monitor->buffer_allocated_bytes, + FALSE, + notify_filter, + &monitor->buffer_filled_bytes, + &monitor->overlapped, + g_win32_fs_monitor_callback); +} + +void +g_win32_fs_monitor_init (GWin32FSMonitorPrivate *monitor, + const gchar *dirname, + const gchar *filename, + gboolean isfile) +{ + wchar_t *wdirname_with_long_prefix = NULL; + const gchar LONGPFX[] = "\\\\?\\"; + gchar *fullpath_with_long_prefix, *dirname_with_long_prefix; + DWORD notify_filter = isfile ? + (FILE_NOTIFY_CHANGE_FILE_NAME | + FILE_NOTIFY_CHANGE_ATTRIBUTES | + FILE_NOTIFY_CHANGE_SIZE) : + (FILE_NOTIFY_CHANGE_FILE_NAME | + FILE_NOTIFY_CHANGE_DIR_NAME | + FILE_NOTIFY_CHANGE_ATTRIBUTES | + FILE_NOTIFY_CHANGE_SIZE); + + gboolean success_attribs; + WIN32_FILE_ATTRIBUTE_DATA attrib_data = {0, }; + + + if (dirname != NULL) + { + dirname_with_long_prefix = g_strconcat (LONGPFX, dirname, NULL); + wdirname_with_long_prefix = g_utf8_to_utf16 (dirname_with_long_prefix, -1, NULL, NULL, NULL); + + if (isfile) + { + gchar *fullpath; + wchar_t wlongname[MAX_PATH_LONG]; + wchar_t wshortname[MAX_PATH_LONG]; + wchar_t *wfullpath, *wbasename_long, *wbasename_short; + + fullpath = g_build_filename (dirname, filename, NULL); + fullpath_with_long_prefix = g_strconcat (LONGPFX, fullpath, NULL); + + wfullpath = g_utf8_to_utf16 (fullpath, -1, NULL, NULL, NULL); + + monitor->wfullpath_with_long_prefix = + g_utf8_to_utf16 (fullpath_with_long_prefix, -1, NULL, NULL, NULL); + + /* ReadDirectoryChangesW() can return the normal filename or the + * "8.3" format filename, so we need to keep track of both these names + * so that we can check against them later when it returns + */ + if (GetLongPathNameW (monitor->wfullpath_with_long_prefix, wlongname, MAX_PATH_LONG) == 0) + { + wbasename_long = wcsrchr (monitor->wfullpath_with_long_prefix, L'\\'); + monitor->wfilename_long = wbasename_long != NULL ? + wcsdup (wbasename_long + 1) : + wcsdup (wfullpath); + } + else + { + wbasename_long = wcsrchr (wlongname, L'\\'); + monitor->wfilename_long = wbasename_long != NULL ? + wcsdup (wbasename_long + 1) : + wcsdup (wlongname); + + } + + if (GetShortPathNameW (monitor->wfullpath_with_long_prefix, wshortname, MAX_PATH_LONG) == 0) + { + wbasename_short = wcsrchr (monitor->wfullpath_with_long_prefix, L'\\'); + monitor->wfilename_short = wbasename_short != NULL ? + wcsdup (wbasename_short + 1) : + wcsdup (wfullpath); + } + else + { + wbasename_short = wcsrchr (wshortname, L'\\'); + monitor->wfilename_short = wbasename_short != NULL ? + wcsdup (wbasename_short + 1) : + wcsdup (wshortname); + } + + g_free (fullpath); + } + else + { + monitor->wfilename_short = NULL; + monitor->wfilename_long = NULL; + monitor->wfullpath_with_long_prefix = g_utf8_to_utf16 (dirname_with_long_prefix, -1, NULL, NULL, NULL); + } + + monitor->isfile = isfile; + } + else + { + dirname_with_long_prefix = g_strconcat (LONGPFX, filename, NULL); + monitor->wfullpath_with_long_prefix = g_utf8_to_utf16 (dirname_with_long_prefix, -1, NULL, NULL, NULL); + monitor->wfilename_long = NULL; + monitor->wfilename_short = NULL; + monitor->isfile = FALSE; + } + + success_attribs = GetFileAttributesExW (monitor->wfullpath_with_long_prefix, + GetFileExInfoStandard, + &attrib_data); + if (success_attribs) + monitor->file_attribs = attrib_data.dwFileAttributes; /* Store up original attributes */ + else + monitor->file_attribs = INVALID_FILE_ATTRIBUTES; + monitor->pfni_prev = NULL; + monitor->hDirectory = CreateFileW (wdirname_with_long_prefix != NULL ? wdirname_with_long_prefix : monitor->wfullpath_with_long_prefix, + FILE_GENERIC_READ | FILE_GENERIC_WRITE, + FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, + NULL, + OPEN_EXISTING, + FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, + NULL); + + g_free (wdirname_with_long_prefix); + g_free (dirname_with_long_prefix); + + if (monitor->hDirectory != INVALID_HANDLE_VALUE) + { + ReadDirectoryChangesW (monitor->hDirectory, + monitor->file_notify_buffer, + monitor->buffer_allocated_bytes, + FALSE, + notify_filter, + &monitor->buffer_filled_bytes, + &monitor->overlapped, + g_win32_fs_monitor_callback); + } +} + +GWin32FSMonitorPrivate * +g_win32_fs_monitor_create (gboolean isfile) +{ + GWin32FSMonitorPrivate *monitor = g_new0 (GWin32FSMonitorPrivate, 1); + + monitor->buffer_allocated_bytes = 32784; + monitor->file_notify_buffer = g_new0 (FILE_NOTIFY_INFORMATION, monitor->buffer_allocated_bytes); + + return monitor; +} + +void +g_win32_fs_monitor_finalize (GWin32FSMonitorPrivate *monitor) +{ + g_free (monitor->wfullpath_with_long_prefix); + g_free (monitor->wfilename_long); + g_free (monitor->wfilename_short); + + if (monitor->hDirectory == INVALID_HANDLE_VALUE) + { + /* If we don't have a directory handle we can free + * monitor->file_notify_buffer and monitor here. The + * callback won't be called obviously any more (and presumably + * never has been called). + */ + g_free (monitor->file_notify_buffer); + monitor->file_notify_buffer = NULL; + g_free (monitor); + } + else + { + /* If we have a directory handle, the OVERLAPPED struct is + * passed once more to the callback as a result of the + * CloseHandle() done in the cancel method, so monitor has to + * be kept around. The GWin32DirectoryMonitor object is + * disappearing, so can't leave a pointer to it in + * monitor->self. + */ + monitor->self = NULL; + } +} + +void +g_win32_fs_monitor_close_handle (GWin32FSMonitorPrivate *monitor) +{ + /* This triggers a last callback() with nBytes==0. */ + + /* Actually I am not so sure about that, it seems to trigger a last + * callback allright, but the way to recognize that it is the final + * one is not to check for nBytes==0, I think that was a + * misunderstanding. + */ + if (monitor->hDirectory != INVALID_HANDLE_VALUE) + CloseHandle (monitor->hDirectory); +} diff --git a/gio/win32/gwin32fsmonitorutils.h b/gio/win32/gwin32fsmonitorutils.h new file mode 100644 index 0000000..96e0716 --- /dev/null +++ b/gio/win32/gwin32fsmonitorutils.h @@ -0,0 +1,76 @@ +/* GIO - GLib Input, Output and Streaming Library + * + * Copyright (C) 2006-2007 Red Hat, Inc. + * Copyright (C) 2014 Chun-wei Fan + * + * 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, see . + * + * Author: Vlad Grecescu + * Author: Chun-wei Fan + * + */ + +#ifndef __G_WIN32_FS_MONITOR_UTILS_H__ +#define __G_WIN32_FS_MONITOR_UTILS_H__ + +#include + +#include "gio/glocalfilemonitor.h" + +#include "gio/gfilemonitor.h" + +G_BEGIN_DECLS + +typedef struct _GWin32FSMonitorPrivate GWin32FSMonitorPrivate; + +struct _GWin32FSMonitorPrivate +{ + OVERLAPPED overlapped; + DWORD buffer_allocated_bytes; + PFILE_NOTIFY_INFORMATION file_notify_buffer; + DWORD buffer_filled_bytes; + HANDLE hDirectory; + gboolean isfile; + wchar_t *wfullpath_with_long_prefix; + wchar_t *wfilename_short; + wchar_t *wfilename_long; + DWORD file_attribs; + PFILE_NOTIFY_INFORMATION pfni_prev; + /* Needed in the APC where we only have this private struct */ + GFileMonitor *self; + GFileMonitorSource *fms; +}; + +enum GWin32FileMonitorFileAlias +{ + G_WIN32_FILE_MONITOR_NO_ALIAS = 0, + G_WIN32_FILE_MONITOR_LONG_FILENAME, + G_WIN32_FILE_MONITOR_SHORT_FILENAME, + G_WIN32_FILE_MONITOR_NO_MATCH_FOUND +}; + +GWin32FSMonitorPrivate* g_win32_fs_monitor_create (gboolean isfile); + +void g_win32_fs_monitor_init (GWin32FSMonitorPrivate *monitor, + const gchar *dirname, + const gchar *filename, + gboolean isfile); + +void g_win32_fs_monitor_finalize (GWin32FSMonitorPrivate *monitor); + +void g_win32_fs_monitor_close_handle (GWin32FSMonitorPrivate *monitor); + +G_END_DECLS + +#endif diff --git a/gio/win32/gwinhttpfile.c b/gio/win32/gwinhttpfile.c index 160168d..fd97593 100644 --- a/gio/win32/gwinhttpfile.c +++ b/gio/win32/gwinhttpfile.c @@ -548,12 +548,15 @@ g_winhttp_file_query_info (GFile *file, { gint64 cl; int n; + const char *gint64_format = "%"G_GINT64_FORMAT"%n"; + wchar_t *gint64_format_w = g_utf8_to_utf16 (gint64_format, -1, NULL, NULL, NULL); - if (swscanf (content_length, L"%I64d%n", &cl, &n) == 1 && + if (swscanf (content_length, gint64_format_w, &cl, &n) == 1 && n == wcslen (content_length)) g_file_info_set_size (info, cl); g_free (content_length); + g_free (gint64_format_w); } if (matcher == NULL) diff --git a/gio/win32/makefile.msc b/gio/win32/makefile.msc deleted file mode 100644 index d3946a2..0000000 --- a/gio/win32/makefile.msc +++ /dev/null @@ -1,35 +0,0 @@ -TOP = ..\..\.. -PRJ_TOP = ..\.. -PACKAGE = giowin32 -PKG_VER = 2.0 -!INCLUDE $(TOP)\glib\build\win32\make.msc - -INCLUDES = \ - -FImsvc_recommended_pragmas.h \ - -I .. -I ..\.. -I ..\..\glib -I ..\..\gmodule -I . \ - $(INTL_CFLAGS) - -DEFINES = \ - -DG_LOG_DOMAIN=\"GLib-GIO\" \ - -DGIO_MODULE_DIR=\"$(libdir)/gio/modules\" \ - -DGIO_COMPILATION - -OBJECTS = \ - gwin32directorymonitor.obj \ - gwinhttpfile.obj \ - gwinhttpfileinputstream.obj \ - gwinhttpfileoutputstream.obj \ - gwinhttpvfs.obj \ - -all : \ - $(PRJ_TOP)\config.h \ - $(PACKAGE).lib - -$(PRJ_TOP)\config.h: $(PRJ_TOP)\config.h.win32 - copy $(PRJ_TOP)\config.h.win32 $(PRJ_TOP)\config.h - -$(PACKAGE).lib : $(OBJECTS) - lib /out:$(PACKAGE).lib $(OBJECTS) - -.c.obj : - $(CC) $(CFLAGS) -c $(PKG_CFLAGS) $< diff --git a/gio/xdgmime/.gitignore b/gio/xdgmime/.gitignore deleted file mode 100644 index 56e6945..0000000 --- a/gio/xdgmime/.gitignore +++ /dev/null @@ -1 +0,0 @@ -test-mime diff --git a/gio/xdgmime/Makefile.in b/gio/xdgmime/Makefile.in new file mode 100644 index 0000000..a4be04d --- /dev/null +++ b/gio/xdgmime/Makefile.in @@ -0,0 +1,1574 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +subdir = gio/xdgmime +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES) +libxdgmime_la_LIBADD = +am_libxdgmime_la_OBJECTS = libxdgmime_la-xdgmime.lo \ + libxdgmime_la-xdgmimealias.lo libxdgmime_la-xdgmimecache.lo \ + libxdgmime_la-xdgmimeglob.lo libxdgmime_la-xdgmimeicon.lo \ + libxdgmime_la-xdgmimeint.lo libxdgmime_la-xdgmimemagic.lo \ + libxdgmime_la-xdgmimeparent.lo +libxdgmime_la_OBJECTS = $(am_libxdgmime_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libxdgmime_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libxdgmime_la_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libxdgmime_la_SOURCES) +DIST_SOURCES = $(libxdgmime_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/glib.mk $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = +BUILT_EXTRA_DIST = +CLEANFILES = *.log *.trs $(am__append_14) +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) libxdgmime.la +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +AM_CPPFLAGS = -DXDG_PREFIX=_gio_xdg +libxdgmime_la_CFLAGS = $(GLIB_HIDDEN_VISIBILITY_CFLAGS) +libxdgmime_la_SOURCES = \ + xdgmime.c \ + xdgmime.h \ + xdgmimealias.c \ + xdgmimealias.h \ + xdgmimecache.c \ + xdgmimecache.h \ + xdgmimeglob.c \ + xdgmimeglob.h \ + xdgmimeicon.c \ + xdgmimeicon.h \ + xdgmimeint.c \ + xdgmimeint.h \ + xdgmimemagic.c \ + xdgmimemagic.h \ + xdgmimeparent.c \ + xdgmimeparent.h + +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gio/xdgmime/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gio/xdgmime/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libxdgmime.la: $(libxdgmime_la_OBJECTS) $(libxdgmime_la_DEPENDENCIES) $(EXTRA_libxdgmime_la_DEPENDENCIES) + $(AM_V_CCLD)$(libxdgmime_la_LINK) $(libxdgmime_la_OBJECTS) $(libxdgmime_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxdgmime_la-xdgmime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxdgmime_la-xdgmimealias.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxdgmime_la-xdgmimecache.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxdgmime_la-xdgmimeglob.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxdgmime_la-xdgmimeicon.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxdgmime_la-xdgmimeint.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxdgmime_la-xdgmimemagic.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libxdgmime_la-xdgmimeparent.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libxdgmime_la-xdgmime.lo: xdgmime.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -MT libxdgmime_la-xdgmime.lo -MD -MP -MF $(DEPDIR)/libxdgmime_la-xdgmime.Tpo -c -o libxdgmime_la-xdgmime.lo `test -f 'xdgmime.c' || echo '$(srcdir)/'`xdgmime.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libxdgmime_la-xdgmime.Tpo $(DEPDIR)/libxdgmime_la-xdgmime.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xdgmime.c' object='libxdgmime_la-xdgmime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -c -o libxdgmime_la-xdgmime.lo `test -f 'xdgmime.c' || echo '$(srcdir)/'`xdgmime.c + +libxdgmime_la-xdgmimealias.lo: xdgmimealias.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -MT libxdgmime_la-xdgmimealias.lo -MD -MP -MF $(DEPDIR)/libxdgmime_la-xdgmimealias.Tpo -c -o libxdgmime_la-xdgmimealias.lo `test -f 'xdgmimealias.c' || echo '$(srcdir)/'`xdgmimealias.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libxdgmime_la-xdgmimealias.Tpo $(DEPDIR)/libxdgmime_la-xdgmimealias.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xdgmimealias.c' object='libxdgmime_la-xdgmimealias.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -c -o libxdgmime_la-xdgmimealias.lo `test -f 'xdgmimealias.c' || echo '$(srcdir)/'`xdgmimealias.c + +libxdgmime_la-xdgmimecache.lo: xdgmimecache.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -MT libxdgmime_la-xdgmimecache.lo -MD -MP -MF $(DEPDIR)/libxdgmime_la-xdgmimecache.Tpo -c -o libxdgmime_la-xdgmimecache.lo `test -f 'xdgmimecache.c' || echo '$(srcdir)/'`xdgmimecache.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libxdgmime_la-xdgmimecache.Tpo $(DEPDIR)/libxdgmime_la-xdgmimecache.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xdgmimecache.c' object='libxdgmime_la-xdgmimecache.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -c -o libxdgmime_la-xdgmimecache.lo `test -f 'xdgmimecache.c' || echo '$(srcdir)/'`xdgmimecache.c + +libxdgmime_la-xdgmimeglob.lo: xdgmimeglob.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -MT libxdgmime_la-xdgmimeglob.lo -MD -MP -MF $(DEPDIR)/libxdgmime_la-xdgmimeglob.Tpo -c -o libxdgmime_la-xdgmimeglob.lo `test -f 'xdgmimeglob.c' || echo '$(srcdir)/'`xdgmimeglob.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libxdgmime_la-xdgmimeglob.Tpo $(DEPDIR)/libxdgmime_la-xdgmimeglob.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xdgmimeglob.c' object='libxdgmime_la-xdgmimeglob.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -c -o libxdgmime_la-xdgmimeglob.lo `test -f 'xdgmimeglob.c' || echo '$(srcdir)/'`xdgmimeglob.c + +libxdgmime_la-xdgmimeicon.lo: xdgmimeicon.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -MT libxdgmime_la-xdgmimeicon.lo -MD -MP -MF $(DEPDIR)/libxdgmime_la-xdgmimeicon.Tpo -c -o libxdgmime_la-xdgmimeicon.lo `test -f 'xdgmimeicon.c' || echo '$(srcdir)/'`xdgmimeicon.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libxdgmime_la-xdgmimeicon.Tpo $(DEPDIR)/libxdgmime_la-xdgmimeicon.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xdgmimeicon.c' object='libxdgmime_la-xdgmimeicon.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -c -o libxdgmime_la-xdgmimeicon.lo `test -f 'xdgmimeicon.c' || echo '$(srcdir)/'`xdgmimeicon.c + +libxdgmime_la-xdgmimeint.lo: xdgmimeint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -MT libxdgmime_la-xdgmimeint.lo -MD -MP -MF $(DEPDIR)/libxdgmime_la-xdgmimeint.Tpo -c -o libxdgmime_la-xdgmimeint.lo `test -f 'xdgmimeint.c' || echo '$(srcdir)/'`xdgmimeint.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libxdgmime_la-xdgmimeint.Tpo $(DEPDIR)/libxdgmime_la-xdgmimeint.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xdgmimeint.c' object='libxdgmime_la-xdgmimeint.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -c -o libxdgmime_la-xdgmimeint.lo `test -f 'xdgmimeint.c' || echo '$(srcdir)/'`xdgmimeint.c + +libxdgmime_la-xdgmimemagic.lo: xdgmimemagic.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -MT libxdgmime_la-xdgmimemagic.lo -MD -MP -MF $(DEPDIR)/libxdgmime_la-xdgmimemagic.Tpo -c -o libxdgmime_la-xdgmimemagic.lo `test -f 'xdgmimemagic.c' || echo '$(srcdir)/'`xdgmimemagic.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libxdgmime_la-xdgmimemagic.Tpo $(DEPDIR)/libxdgmime_la-xdgmimemagic.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xdgmimemagic.c' object='libxdgmime_la-xdgmimemagic.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -c -o libxdgmime_la-xdgmimemagic.lo `test -f 'xdgmimemagic.c' || echo '$(srcdir)/'`xdgmimemagic.c + +libxdgmime_la-xdgmimeparent.lo: xdgmimeparent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -MT libxdgmime_la-xdgmimeparent.lo -MD -MP -MF $(DEPDIR)/libxdgmime_la-xdgmimeparent.Tpo -c -o libxdgmime_la-xdgmimeparent.lo `test -f 'xdgmimeparent.c' || echo '$(srcdir)/'`xdgmimeparent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libxdgmime_la-xdgmimeparent.Tpo $(DEPDIR)/libxdgmime_la-xdgmimeparent.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='xdgmimeparent.c' object='libxdgmime_la-xdgmimeparent.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libxdgmime_la_CFLAGS) $(CFLAGS) -c -o libxdgmime_la-xdgmimeparent.lo `test -f 'xdgmimeparent.c' || echo '$(srcdir)/'`xdgmimeparent.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \ + check-local clean clean-checkLTLIBRARIES clean-checkPROGRAMS \ + clean-generic clean-installed_testLTLIBRARIES \ + clean-installed_testPROGRAMS clean-libtool \ + clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gio/xdgmime/xdgmimecache.c b/gio/xdgmime/xdgmimecache.c index 7998f29..9ea32c8 100644 --- a/gio/xdgmime/xdgmimecache.c +++ b/gio/xdgmime/xdgmimecache.c @@ -155,6 +155,12 @@ _xdg_mime_cache_new_from_file (const char *file_name) if (fd != -1) close (fd); +#else /* HAVE_MMAP */ + cache = (XdgMimeCache *) malloc (sizeof (XdgMimeCache)); + cache->minor = 0; + cache->ref_count = 1; + cache->buffer = NULL; + cache->size = 0; #endif /* HAVE_MMAP */ return cache; @@ -324,10 +330,16 @@ cache_alias_lookup (const char *alias) for (i = 0; _caches[i]; i++) { XdgMimeCache *cache = _caches[i]; - xdg_uint32_t list_offset = GET_UINT32 (cache->buffer, 4); - xdg_uint32_t n_entries = GET_UINT32 (cache->buffer, list_offset); + xdg_uint32_t list_offset; + xdg_uint32_t n_entries; xdg_uint32_t offset; + if (cache->buffer == NULL) + continue; + + list_offset = GET_UINT32 (cache->buffer, 4); + n_entries = GET_UINT32 (cache->buffer, list_offset); + min = 0; max = n_entries - 1; while (max >= min) @@ -370,10 +382,16 @@ cache_glob_lookup_literal (const char *file_name, for (i = 0; _caches[i]; i++) { XdgMimeCache *cache = _caches[i]; - xdg_uint32_t list_offset = GET_UINT32 (cache->buffer, 12); - xdg_uint32_t n_entries = GET_UINT32 (cache->buffer, list_offset); + xdg_uint32_t list_offset; + xdg_uint32_t n_entries; xdg_uint32_t offset; + if (cache->buffer == NULL) + continue; + + list_offset = GET_UINT32 (cache->buffer, 12); + n_entries = GET_UINT32 (cache->buffer, list_offset); + min = 0; max = n_entries - 1; while (max >= min) @@ -424,8 +442,14 @@ cache_glob_lookup_fnmatch (const char *file_name, { XdgMimeCache *cache = _caches[i]; - xdg_uint32_t list_offset = GET_UINT32 (cache->buffer, 20); - xdg_uint32_t n_entries = GET_UINT32 (cache->buffer, list_offset); + xdg_uint32_t list_offset; + xdg_uint32_t n_entries; + + if (cache->buffer == NULL) + continue; + + list_offset = GET_UINT32 (cache->buffer, 20); + n_entries = GET_UINT32 (cache->buffer, list_offset); for (j = 0; j < n_entries && n < n_mime_types; j++) { @@ -545,9 +569,16 @@ cache_glob_lookup_suffix (const char *file_name, { XdgMimeCache *cache = _caches[i]; - xdg_uint32_t list_offset = GET_UINT32 (cache->buffer, 16); - xdg_uint32_t n_entries = GET_UINT32 (cache->buffer, list_offset); - xdg_uint32_t offset = GET_UINT32 (cache->buffer, list_offset + 4); + xdg_uint32_t list_offset; + xdg_uint32_t n_entries; + xdg_uint32_t offset; + + if (cache->buffer == NULL) + continue; + + list_offset = GET_UINT32 (cache->buffer, 16); + n_entries = GET_UINT32 (cache->buffer, list_offset); + offset = GET_UINT32 (cache->buffer, list_offset + 4); n += cache_glob_node_lookup_suffix (cache, n_entries, offset, @@ -682,6 +713,9 @@ _xdg_mime_cache_get_max_buffer_extents (void) { XdgMimeCache *cache = _caches[i]; + if (cache->buffer == NULL) + continue; + offset = GET_UINT32 (cache->buffer, 24); max_extent = MAX (max_extent, GET_UINT32 (cache->buffer, offset + 4)); } @@ -708,6 +742,9 @@ cache_get_mime_type_for_data (const void *data, int prio; const char *match; + if (cache->buffer == NULL) + continue; + match = cache_magic_lookup_data (cache, data, len, &prio, mime_types, n_mime_types); if (prio > priority) @@ -894,11 +931,16 @@ _xdg_mime_cache_mime_type_subclass (const char *mime, for (i = 0; _caches[i]; i++) { XdgMimeCache *cache = _caches[i]; - - xdg_uint32_t list_offset = GET_UINT32 (cache->buffer, 8); - xdg_uint32_t n_entries = GET_UINT32 (cache->buffer, list_offset); + xdg_uint32_t list_offset; + xdg_uint32_t n_entries; xdg_uint32_t offset, n_parents, parent_offset; + if (cache->buffer == NULL) + continue; + + list_offset = GET_UINT32 (cache->buffer, 8); + n_entries = GET_UINT32 (cache->buffer, list_offset); + min = 0; max = n_entries - 1; while (max >= min) @@ -957,9 +999,14 @@ _xdg_mime_cache_list_mime_parents (const char *mime) for (i = 0; _caches[i]; i++) { XdgMimeCache *cache = _caches[i]; - - xdg_uint32_t list_offset = GET_UINT32 (cache->buffer, 8); - xdg_uint32_t n_entries = GET_UINT32 (cache->buffer, list_offset); + xdg_uint32_t list_offset; + xdg_uint32_t n_entries; + + if (cache->buffer == NULL) + continue; + + list_offset = GET_UINT32 (cache->buffer, 8); + n_entries = GET_UINT32 (cache->buffer, list_offset); for (j = 0; j < n_entries; j++) { @@ -1009,10 +1056,16 @@ cache_lookup_icon (const char *mime, int header) for (i = 0; _caches[i]; i++) { XdgMimeCache *cache = _caches[i]; - xdg_uint32_t list_offset = GET_UINT32 (cache->buffer, header); - xdg_uint32_t n_entries = GET_UINT32 (cache->buffer, list_offset); + xdg_uint32_t list_offset; + xdg_uint32_t n_entries; xdg_uint32_t offset; + if (cache->buffer == NULL) + continue; + + list_offset = GET_UINT32 (cache->buffer, header); + n_entries = GET_UINT32 (cache->buffer, list_offset); + min = 0; max = n_entries - 1; while (max >= min) @@ -1090,6 +1143,10 @@ _xdg_mime_cache_glob_dump (void) xdg_uint32_t list_offset; xdg_uint32_t n_entries; xdg_uint32_t offset; + + if (cache->buffer == NULL) + continue; + list_offset = GET_UINT32 (cache->buffer, 16); n_entries = GET_UINT32 (cache->buffer, list_offset); offset = GET_UINT32 (cache->buffer, list_offset + 4); diff --git a/glib.doap b/glib.doap deleted file mode 100644 index bcd7cb6..0000000 --- a/glib.doap +++ /dev/null @@ -1,47 +0,0 @@ - - - - GLib - glib - - Low level core library - - GLib is the low-level core library that forms the basis for projects such as GTK+ and GNOME. It provides data structure handling for C, portability wrappers, and interfaces for such runtime functionality as an event loop, threads, dynamic loading, and an object system. - - - - - - - - - C - - - - Matthias Clasen - - matthiasc - - - - - - Ryan Lortie - - ryanl - - - - - - - - - - - diff --git a/glib/.gitignore b/glib/.gitignore deleted file mode 100644 index bdecc0b..0000000 --- a/glib/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -glibconfig.h -glibconfig.h.win32 -glibconfig-stamp - -gtester -libglib-gdb.py -makefile.msc -gspawn-win32-helper-console.c -gspawn-win64-helper-console.c -gspawn-win64-helper.c -glib_probes.h -glib-public-headers.txt diff --git a/glib/Makefile.am b/glib/Makefile.am index 9c728f8..d2295cb 100644 --- a/glib/Makefile.am +++ b/glib/Makefile.am @@ -9,13 +9,15 @@ include $(top_srcdir)/glib.mk # to config.status will not result in changes to glibconfig.h so we # avoid touching its timestamp (in order not to rebuild the whole tree). # -DISTCLEANFILES += glibconfig-stamp glibconfig.h +DISTCLEANFILES += glibconfig-stamp glibconfig.h glibconfig.h.win32 BUILT_SOURCES += glibconfig-stamp configexecincludedir = $(libdir)/glib-2.0/include nodist_configexecinclude_HEADERS = glibconfig.h glibconfig-stamp: ../config.status $(AM_V_GEN) cd $(top_builddir) && \ $(SHELL) ./config.status glib/glibconfig.h + $(AM_V_GEN) cd $(top_builddir) && \ + $(SHELL) ./config.status glib/glibconfig.h.win32 @touch glibconfig-stamp @@ -375,11 +377,20 @@ CLEANFILES += glib_probes.h glib_probes.h.tmp libglib_2_0_la_LIBADD += glib_probes.lo endif -if ENABLE_SYSTEMTAP tapset_in_files = glib.stp.in tapsetdir = @ABS_TAPSET_DIR@ -tapset_DATA = $(tapset_in_files:.stp.in=.stp) EXTRA_DIST += $(tapset_in_files) + +if ENABLE_SYSTEMTAP +tapset_DATA = $(tapset_in_files:.stp.in=.stp) +CLEANFILES += $(tapset_in_files:.stp.in=.stp) + +$(tapset_DATA): %.stp: %.stp.in Makefile + $(AM_V_GEN)$(SED) \ + -e 's|[@]ABS_GLIB_RUNTIME_LIBDIR[@]|$(ABS_GLIB_RUNTIME_LIBDIR)|g' \ + -e 's|[@]LT_CURRENT[@]|$(LT_CURRENT)|g' \ + -e 's|[@]LT_REVISION[@]|$(LT_REVISION)|g' \ + $< > $@ endif gspawn-win32-helper-console.c: @@ -446,48 +457,24 @@ glib.def: libglib-2.0.la glib-2.0.lib: libglib-2.0.la glib.def $(AM_V_GEN) lib.exe -machine:@LIB_EXE_MACHINE_FLAG@ -name:libglib-2.0-$(LT_CURRENT_MINUS_AGE).dll -def:$(builddir)/glib.def -out:$@ -dist-hook: $(BUILT_EXTRA_DIST) ../build/win32/vs9/glib.vcproj ../build/win32/vs10/glib.vcxproj ../build/win32/vs10/glib.vcxproj.filters +# ------ MSVC Project File Generation ------ +MSVCPROJS = glib + +glib_FILES = $(libglib_2_0_la_SOURCES) +glib_EXCLUDES = *-unix.c|gthread-*.c + +glib_HEADERS_DIR = $(glibsubincludedir) +glib_HEADERS_INST = $(deprecatedinclude_HEADERS) $(glibsubinclude_HEADERS) +glib_HEADERS_EXCLUDES = dummy + +include $(top_srcdir)/build/Makefile.msvcproj + +dist-hook: $(BUILT_EXTRA_DIST) $(top_builddir)/build/win32/vs9/glib.vcproj $(top_builddir)/build/win32/vs9/glib.headers files='$(BUILT_EXTRA_DIST)'; \ for f in $$files; do \ if test -f $$f; then d=.; else d=$(srcdir); fi; \ cp $$d/$$f $(distdir) || exit 1; done -../build/win32/vs9/glib.vcproj: $(top_srcdir)/build/win32/vs9/glib.vcprojin - for F in `echo $(libglib_2_0_la_SOURCES) | tr '/' '\\'`; do \ - case $$F in \ - *-unix.c|gthread-*.c) \ - ;; \ - *.c) echo ' ' \ - ;; \ - esac; \ - done >libglib.sourcefiles - $(CPP) -P - <$(top_srcdir)/build/win32/vs9/glib.vcprojin >$@ - rm libglib.sourcefiles - -../build/win32/vs10/glib.vcxproj: $(top_srcdir)/build/win32/vs10/glib.vcxprojin - for F in `echo $(libglib_2_0_la_SOURCES) | tr '/' '\\'`; do \ - case $$F in \ - *-unix.c|gthread-*.c) \ - ;; \ - *.c) echo ' ' \ - ;; \ - esac; \ - done >libglib.vs10.sourcefiles - $(CPP) -P - <$(top_srcdir)/build/win32/vs10/glib.vcxprojin >$@ - rm libglib.vs10.sourcefiles - -../build/win32/vs10/glib.vcxproj.filters: $(top_srcdir)/build/win32/vs10/glib.vcxproj.filtersin - for F in `echo $(libglib_2_0_la_SOURCES) | tr '/' '\\'`; do \ - case $$F in \ - *-unix.c|gthread-*.c) \ - ;; \ - *.c) echo ' Source Files' \ - ;; \ - esac; \ - done >libglib.vs10.sourcefiles.filters - $(CPP) -P - <$(top_srcdir)/build/win32/vs10/glib.vcxproj.filtersin >$@ - rm libglib.vs10.sourcefiles.filters - # install gdb scripts gdbdir = $(datadir)/glib-2.0/gdb dist_gdb_SCRIPTS = glib.py @@ -495,6 +482,11 @@ dist_gdb_SCRIPTS = glib.py libglib-gdb.py: libglib-gdb.py.in $(AM_V_GEN) $(SED) -e "s|\@datadir\@|$(datadir)|" $(srcdir)/libglib-gdb.py.in > $(builddir)/libglib-gdb.py +if HAVE_GLIB_RUNTIME_LIBDIR +ABS_GLIB_RUNTIME_LIBDIR = $(realpath $(libdir)/$(GLIB_RUNTIME_LIBDIR)) +else +ABS_GLIB_RUNTIME_LIBDIR = $(libdir) +endif install-data-hook: libglib-gdb.py mkdir -p $(DESTDIR)$(datadir)/gdb/auto-load$(ABS_GLIB_RUNTIME_LIBDIR) diff --git a/glib/Makefile.in b/glib/Makefile.in new file mode 100644 index 0000000..34a1ae9 --- /dev/null +++ b/glib/Makefile.in @@ -0,0 +1,3193 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + +# Author: Fan, Chun-wei +# Common Autotools file used to generate Visual Studio 2008+ +# Projects from their templates + +# This autotools file, from GLib, can be used in other projects +# that have Visual Studio build support, and is copied into +# $(srcroot)/build/. + +# * Input variables: +# +# MSVCPROJS - List of Projects that should be generated +# +# * Simple tutorial +# +# Add this to Makefile.am where your library/program is built: +# include $(top_srcdir)/build/Makefile.msvcproj +# MSVCPROJS = YourProject (can be multiple projects in a single srcdir) +# YourProject_FILES = $(libyourlib_1_0_SOURCES) +# YourProject_EXCLUDES = ... # list of sources to exclude, separated by '|', wildcards allowed; use random unsed value if none +# YourProject_HEADERS_DIR = $(libyourlibincludedir) +# YourProject_HEADERS_INST = $(libyourlib_1_0_HEADERS) +# YourProject_HEADERS_EXCLUDES = ... # +# +# dist-hook: \ # (or add to it if it is already there, note the vs9 items will also call the vs10 items in the process) +# $(top_builddir)/build/win32/vs9/YourProject.vcproj \ +# $(top_builddir)/build/win32/vs9/YourProject.headers + +# Private functions + + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_5) +noinst_PROGRAMS = $(am__EXEEXT_7) +check_PROGRAMS = $(am__EXEEXT_6) +TESTS = $(am__EXEEXT_5) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@am__append_15 = glib-2.0.lib +@OS_UNIX_TRUE@am__append_16 = glib-unix.c +@THREADS_WIN32_TRUE@am__append_17 = gthread-win32.c +@THREADS_POSIX_TRUE@@THREADS_WIN32_FALSE@am__append_18 = gthread-posix.c +@ENABLE_DTRACE_TRUE@am__append_19 = glib_probes.h glib_probes.lo +@ENABLE_DTRACE_TRUE@am__append_20 = glib_probes.h glib_probes.h.tmp +@ENABLE_DTRACE_TRUE@am__append_21 = glib_probes.lo +@ENABLE_SYSTEMTAP_TRUE@am__append_22 = $(tapset_in_files:.stp.in=.stp) +@OS_WIN32_TRUE@@OS_WIN32_X64_TRUE@am__append_23 = gspawn-win64-helper gspawn-win64-helper-console +@OS_WIN32_TRUE@@OS_WIN32_X64_FALSE@am__append_24 = gspawn-win32-helper gspawn-win32-helper-console +bin_PROGRAMS = $(am__EXEEXT_4) +@OS_UNIX_TRUE@am__append_25 = gtester +@OS_UNIX_TRUE@am__append_26 = ${auto_config_binscripts} +subdir = glib +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_gdb_SCRIPTS) \ + $(deprecatedinclude_HEADERS) $(glibinclude_HEADERS) \ + $(glibsubinclude_HEADERS) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = glibconfig.h.win32 makefile.msc glib.rc +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(gdbdir)" "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(tapsetdir)" \ + "$(DESTDIR)$(deprecatedincludedir)" \ + "$(DESTDIR)$(glibincludedir)" "$(DESTDIR)$(glibsubincludedir)" \ + "$(DESTDIR)$(configexecincludedir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(lib_LTLIBRARIES) \ + $(noinst_LTLIBRARIES) +am__DEPENDENCIES_1 = +@USE_SYSTEM_PCRE_FALSE@am__DEPENDENCIES_2 = pcre/libpcre.la +@USE_SYSTEM_PCRE_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) +am__libglib_2_0_la_SOURCES_DIST = deprecated/gallocator.c \ + deprecated/gcache.c deprecated/gcompletion.c deprecated/grel.c \ + deprecated/gthread-deprecated.c glib_probes.d garray.c \ + gasyncqueue.c gasyncqueueprivate.h gatomic.c gbacktrace.c \ + gbase64.c gbitlock.c gbookmarkfile.c gbsearcharray.h gbytes.c \ + gbytes.h gcharset.c gcharsetprivate.h gchecksum.c gconvert.c \ + gdataset.c gdatasetprivate.h gdate.c gdatetime.c gdir.c \ + genviron.c gerror.c gfileutils.c ggettext.c ghash.c ghmac.c \ + ghook.c ghostutils.c giochannel.c gkeyfile.c glibintl.h \ + glib_trace.h glib-init.h glib-init.c glib-private.h \ + glib-private.c glist.c gmain-internal.h gmain.c gmappedfile.c \ + gmarkup.c gmem.c gmessages.c gmirroringtable.h gnode.c \ + goption.c gpattern.c gpoll.c gprimes.c gqsort.c gquark.c \ + gqueue.c grand.c gregex.c gscanner.c gscripttable.h \ + gsequence.c gshell.c gslice.c gslist.c gstdio.c gstrfuncs.c \ + gstring.c gstringchunk.c gtestutils.c gthread.c \ + gthreadprivate.h gthreadpool.c gtimer.c gtimezone.c \ + gtranslit.c gtranslit-data.h gtrashstack.c gtree.c guniprop.c \ + gutf8.c gunibreak.h gunibreak.c gunichartables.h gunicollate.c \ + gunicomp.h gunidecomp.h gunidecomp.c gunicodeprivate.h \ + gurifuncs.c gutils.c gvariant.h gvariant.c gvariant-core.h \ + gvariant-core.c gvariant-internal.h gvariant-parser.c \ + gvariant-serialiser.h gvariant-serialiser.c gvarianttypeinfo.h \ + gvarianttypeinfo.c gvarianttype.c gversion.c gwakeup.h \ + gwakeup.c gprintf.c gprintfint.h valgrind.h glib-unix.c \ + gthread-win32.c gthread-posix.c +am__objects_1 = libglib_2_0_la-gallocator.lo libglib_2_0_la-gcache.lo \ + libglib_2_0_la-gcompletion.lo libglib_2_0_la-grel.lo \ + libglib_2_0_la-gthread-deprecated.lo +@OS_UNIX_TRUE@am__objects_2 = libglib_2_0_la-glib-unix.lo +@THREADS_WIN32_TRUE@am__objects_3 = libglib_2_0_la-gthread-win32.lo +@THREADS_POSIX_TRUE@@THREADS_WIN32_FALSE@am__objects_4 = libglib_2_0_la-gthread-posix.lo +am_libglib_2_0_la_OBJECTS = $(am__objects_1) libglib_2_0_la-garray.lo \ + libglib_2_0_la-gasyncqueue.lo libglib_2_0_la-gatomic.lo \ + libglib_2_0_la-gbacktrace.lo libglib_2_0_la-gbase64.lo \ + libglib_2_0_la-gbitlock.lo libglib_2_0_la-gbookmarkfile.lo \ + libglib_2_0_la-gbytes.lo libglib_2_0_la-gcharset.lo \ + libglib_2_0_la-gchecksum.lo libglib_2_0_la-gconvert.lo \ + libglib_2_0_la-gdataset.lo libglib_2_0_la-gdate.lo \ + libglib_2_0_la-gdatetime.lo libglib_2_0_la-gdir.lo \ + libglib_2_0_la-genviron.lo libglib_2_0_la-gerror.lo \ + libglib_2_0_la-gfileutils.lo libglib_2_0_la-ggettext.lo \ + libglib_2_0_la-ghash.lo libglib_2_0_la-ghmac.lo \ + libglib_2_0_la-ghook.lo libglib_2_0_la-ghostutils.lo \ + libglib_2_0_la-giochannel.lo libglib_2_0_la-gkeyfile.lo \ + libglib_2_0_la-glib-init.lo libglib_2_0_la-glib-private.lo \ + libglib_2_0_la-glist.lo libglib_2_0_la-gmain.lo \ + libglib_2_0_la-gmappedfile.lo libglib_2_0_la-gmarkup.lo \ + libglib_2_0_la-gmem.lo libglib_2_0_la-gmessages.lo \ + libglib_2_0_la-gnode.lo libglib_2_0_la-goption.lo \ + libglib_2_0_la-gpattern.lo libglib_2_0_la-gpoll.lo \ + libglib_2_0_la-gprimes.lo libglib_2_0_la-gqsort.lo \ + libglib_2_0_la-gquark.lo libglib_2_0_la-gqueue.lo \ + libglib_2_0_la-grand.lo libglib_2_0_la-gregex.lo \ + libglib_2_0_la-gscanner.lo libglib_2_0_la-gsequence.lo \ + libglib_2_0_la-gshell.lo libglib_2_0_la-gslice.lo \ + libglib_2_0_la-gslist.lo libglib_2_0_la-gstdio.lo \ + libglib_2_0_la-gstrfuncs.lo libglib_2_0_la-gstring.lo \ + libglib_2_0_la-gstringchunk.lo libglib_2_0_la-gtestutils.lo \ + libglib_2_0_la-gthread.lo libglib_2_0_la-gthreadpool.lo \ + libglib_2_0_la-gtimer.lo libglib_2_0_la-gtimezone.lo \ + libglib_2_0_la-gtranslit.lo libglib_2_0_la-gtrashstack.lo \ + libglib_2_0_la-gtree.lo libglib_2_0_la-guniprop.lo \ + libglib_2_0_la-gutf8.lo libglib_2_0_la-gunibreak.lo \ + libglib_2_0_la-gunicollate.lo libglib_2_0_la-gunidecomp.lo \ + libglib_2_0_la-gurifuncs.lo libglib_2_0_la-gutils.lo \ + libglib_2_0_la-gvariant.lo libglib_2_0_la-gvariant-core.lo \ + libglib_2_0_la-gvariant-parser.lo \ + libglib_2_0_la-gvariant-serialiser.lo \ + libglib_2_0_la-gvarianttypeinfo.lo \ + libglib_2_0_la-gvarianttype.lo libglib_2_0_la-gversion.lo \ + libglib_2_0_la-gwakeup.lo libglib_2_0_la-gprintf.lo \ + $(am__objects_2) $(am__objects_3) $(am__objects_4) +libglib_2_0_la_OBJECTS = $(am_libglib_2_0_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libglib_2_0_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(libglib_2_0_la_CFLAGS) $(CFLAGS) $(libglib_2_0_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +@OS_WIN32_TRUE@@OS_WIN32_X64_TRUE@am__EXEEXT_1 = gspawn-win64-helper$(EXEEXT) \ +@OS_WIN32_TRUE@@OS_WIN32_X64_TRUE@ gspawn-win64-helper-console$(EXEEXT) +@OS_WIN32_TRUE@@OS_WIN32_X64_FALSE@am__EXEEXT_2 = gspawn-win32-helper$(EXEEXT) \ +@OS_WIN32_TRUE@@OS_WIN32_X64_FALSE@ gspawn-win32-helper-console$(EXEEXT) +@OS_UNIX_TRUE@am__EXEEXT_3 = gtester$(EXEEXT) +am__EXEEXT_4 = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) +am__EXEEXT_5 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_6 = $(am__EXEEXT_5) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_7 = $(am__EXEEXT_5) +PROGRAMS = $(bin_PROGRAMS) $(installed_test_PROGRAMS) \ + $(noinst_PROGRAMS) +gspawn_win32_helper_SOURCES = gspawn-win32-helper.c +gspawn_win32_helper_OBJECTS = gspawn-win32-helper.$(OBJEXT) +@OS_WIN32_TRUE@@OS_WIN32_X64_FALSE@gspawn_win32_helper_DEPENDENCIES = \ +@OS_WIN32_TRUE@@OS_WIN32_X64_FALSE@ libglib-2.0.la +gspawn_win32_helper_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(gspawn_win32_helper_LDFLAGS) \ + $(LDFLAGS) -o $@ +gspawn_win32_helper_console_SOURCES = gspawn-win32-helper-console.c +gspawn_win32_helper_console_OBJECTS = \ + gspawn-win32-helper-console.$(OBJEXT) +@OS_WIN32_TRUE@@OS_WIN32_X64_FALSE@gspawn_win32_helper_console_DEPENDENCIES = \ +@OS_WIN32_TRUE@@OS_WIN32_X64_FALSE@ libglib-2.0.la +gspawn_win64_helper_SOURCES = gspawn-win64-helper.c +gspawn_win64_helper_OBJECTS = gspawn-win64-helper.$(OBJEXT) +@OS_WIN32_TRUE@@OS_WIN32_X64_TRUE@gspawn_win64_helper_DEPENDENCIES = \ +@OS_WIN32_TRUE@@OS_WIN32_X64_TRUE@ libglib-2.0.la +gspawn_win64_helper_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(gspawn_win64_helper_LDFLAGS) \ + $(LDFLAGS) -o $@ +gspawn_win64_helper_console_SOURCES = gspawn-win64-helper-console.c +gspawn_win64_helper_console_OBJECTS = \ + gspawn-win64-helper-console.$(OBJEXT) +@OS_WIN32_TRUE@@OS_WIN32_X64_TRUE@gspawn_win64_helper_console_DEPENDENCIES = \ +@OS_WIN32_TRUE@@OS_WIN32_X64_TRUE@ libglib-2.0.la +am__gtester_SOURCES_DIST = gtester.c +@OS_UNIX_TRUE@am_gtester_OBJECTS = gtester.$(OBJEXT) +gtester_OBJECTS = $(am_gtester_OBJECTS) +@OS_UNIX_TRUE@gtester_DEPENDENCIES = libglib-2.0.la +SCRIPTS = $(bin_SCRIPTS) $(dist_gdb_SCRIPTS) $(installed_test_SCRIPTS) \ + $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libglib_2_0_la_SOURCES) $(EXTRA_libglib_2_0_la_SOURCES) \ + gspawn-win32-helper.c gspawn-win32-helper-console.c \ + gspawn-win64-helper.c gspawn-win64-helper-console.c \ + $(gtester_SOURCES) +DIST_SOURCES = $(am__libglib_2_0_la_SOURCES_DIST) \ + $(EXTRA_libglib_2_0_la_SOURCES) gspawn-win32-helper.c \ + gspawn-win32-helper-console.c gspawn-win64-helper.c \ + gspawn-win64-helper-console.c $(am__gtester_SOURCES_DIST) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) $(tapset_DATA) +HEADERS = $(deprecatedinclude_HEADERS) $(glibinclude_HEADERS) \ + $(glibsubinclude_HEADERS) $(nodist_configexecinclude_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + check recheck distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/glib.rc.in \ + $(srcdir)/glibconfig.h.win32.in $(srcdir)/makefile.msc.in \ + $(top_srcdir)/build/Makefile.msvcproj $(top_srcdir)/depcomp \ + $(top_srcdir)/glib.mk $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = glibconfig-stamp $(am__append_19) + +# These may be in the builddir too +BUILT_EXTRA_DIST = makefile.msc glibconfig.h.win32 glib.rc +CLEANFILES = *.log *.trs $(am__append_14) libglib-gdb.py \ + glib-public-headers.txt $(am__append_20) $(am__append_22) + +# +# Generate glibconfig.h +# +# The timestamp of the stamp file is used to indicate if glibconfig.h is +# up to date with respect to config.status. In the usual case, changes +# to config.status will not result in changes to glibconfig.h so we +# avoid touching its timestamp (in order not to rebuild the whole tree). +# +DISTCLEANFILES = glibconfig-stamp glibconfig.h glibconfig.h.win32 +MAINTAINERCLEANFILES = + +# The compilation of GRegex can be disabled, but the source files must +# be distributed. +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \ + makefile.msc.in glib.rc.in gen-unicode-tables.pl \ + glibconfig.h.win32.in gregex.c gregex.h win_iconv.c \ + libglib-gdb.py.in docs.c gconstructor.h \ + $(MIRRORING_TAB_SOURCE) $(tapset_in_files) $(am__append_26) + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) $(am__append_15) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +configexecincludedir = $(libdir)/glib-2.0/include +nodist_configexecinclude_HEADERS = glibconfig.h +@HAVE_GOOD_PRINTF_FALSE@PRINTF_SUBDIR = gnulib +@HAVE_GOOD_PRINTF_FALSE@printf_la = gnulib/libgnulib.la +@USE_SYSTEM_PCRE_FALSE@MAYBE_PCRE = pcre +SUBDIRS = libcharset $(PRINTF_SUBDIR) $(MAYBE_PCRE) update-pcre . tests +DIST_SUBDIRS = libcharset gnulib pcre update-pcre tests +AM_CPPFLAGS = \ + $(glib_INCLUDES) \ + $(pcre_inc) \ + -DG_LOG_DOMAIN=\"GLib\" \ + $(GLIB_DEBUG_FLAGS) \ + -DGLIB_COMPILATION \ + -DPCRE_STATIC + +AM_CFLAGS = $(GLIB_WARN_CFLAGS) +MIRRORING_TAB_SOURCE = \ + glib-mirroring-tab/Makefile \ + glib-mirroring-tab/gen-mirroring-tab.c \ + glib-mirroring-tab/packtab.h \ + glib-mirroring-tab/packtab.c + +lib_LTLIBRARIES = libglib-2.0.la +@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@install_ms_lib_cmd = $(INSTALL) glib-2.0.lib $(DESTDIR)$(libdir) +@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/glib-2.0.lib +deprecated_sources = \ + deprecated/gallocator.c \ + deprecated/gcache.c \ + deprecated/gcompletion.c \ + deprecated/grel.c \ + deprecated/gthread-deprecated.c + +libglib_2_0_la_SOURCES = $(deprecated_sources) glib_probes.d garray.c \ + gasyncqueue.c gasyncqueueprivate.h gatomic.c gbacktrace.c \ + gbase64.c gbitlock.c gbookmarkfile.c gbsearcharray.h gbytes.c \ + gbytes.h gcharset.c gcharsetprivate.h gchecksum.c gconvert.c \ + gdataset.c gdatasetprivate.h gdate.c gdatetime.c gdir.c \ + genviron.c gerror.c gfileutils.c ggettext.c ghash.c ghmac.c \ + ghook.c ghostutils.c giochannel.c gkeyfile.c glibintl.h \ + glib_trace.h glib-init.h glib-init.c glib-private.h \ + glib-private.c glist.c gmain-internal.h gmain.c gmappedfile.c \ + gmarkup.c gmem.c gmessages.c gmirroringtable.h gnode.c \ + goption.c gpattern.c gpoll.c gprimes.c gqsort.c gquark.c \ + gqueue.c grand.c gregex.c gscanner.c gscripttable.h \ + gsequence.c gshell.c gslice.c gslist.c gstdio.c gstrfuncs.c \ + gstring.c gstringchunk.c gtestutils.c gthread.c \ + gthreadprivate.h gthreadpool.c gtimer.c gtimezone.c \ + gtranslit.c gtranslit-data.h gtrashstack.c gtree.c guniprop.c \ + gutf8.c gunibreak.h gunibreak.c gunichartables.h gunicollate.c \ + gunicomp.h gunidecomp.h gunidecomp.c gunicodeprivate.h \ + gurifuncs.c gutils.c gvariant.h gvariant.c gvariant-core.h \ + gvariant-core.c gvariant-internal.h gvariant-parser.c \ + gvariant-serialiser.h gvariant-serialiser.c gvarianttypeinfo.h \ + gvarianttypeinfo.c gvarianttype.c gversion.c gwakeup.h \ + gwakeup.c gprintf.c gprintfint.h valgrind.h $(am__append_16) \ + $(am__append_17) $(am__append_18) +EXTRA_libglib_2_0_la_SOURCES = \ + giounix.c \ + giowin32.c \ + gspawn.c \ + gspawn-win32.c \ + gwin32.c + +glibincludedir = $(includedir)/glib-2.0 +glibinclude_HEADERS = \ + glib-unix.h \ + glib-object.h \ + glib.h + +deprecatedincludedir = $(includedir)/glib-2.0/glib/deprecated +deprecatedinclude_HEADERS = \ + deprecated/gallocator.h \ + deprecated/gcache.h \ + deprecated/gcompletion.h \ + deprecated/gmain.h \ + deprecated/grel.h \ + deprecated/gthread.h + +glibsubincludedir = $(includedir)/glib-2.0/glib +glibsubinclude_HEADERS = \ + glib-autocleanups.h \ + galloca.h \ + garray.h \ + gasyncqueue.h \ + gatomic.h \ + gbacktrace.h \ + gbase64.h \ + gbitlock.h \ + gbookmarkfile.h \ + gbytes.h \ + gcharset.h \ + gchecksum.h \ + gconvert.h \ + gdataset.h \ + gdate.h \ + gdatetime.h \ + gdir.h \ + genviron.h \ + gerror.h \ + gfileutils.h \ + ggettext.h \ + ghash.h \ + ghmac.h \ + ghook.h \ + ghostutils.h \ + gi18n.h \ + gi18n-lib.h \ + giochannel.h \ + gkeyfile.h \ + glist.h \ + gmacros.h \ + gmain.h \ + gmappedfile.h \ + gmarkup.h \ + gmem.h \ + gmessages.h \ + gnode.h \ + goption.h \ + gpattern.h \ + gpoll.h \ + gprimes.h \ + gqsort.h \ + gquark.h \ + gqueue.h \ + grand.h \ + gregex.h \ + gscanner.h \ + gsequence.h \ + gshell.h \ + gslice.h \ + gslist.h \ + gspawn.h \ + gstdio.h \ + gstrfuncs.h \ + gtestutils.h \ + gstring.h \ + gstringchunk.h \ + gthread.h \ + gthreadpool.h \ + gtimer.h \ + gtimezone.h \ + gtrashstack.h \ + gtree.h \ + gtypes.h \ + gunicode.h \ + gurifuncs.h \ + gutils.h \ + gvarianttype.h \ + gvariant.h \ + gversion.h \ + gversionmacros.h \ + gwin32.h \ + gprintf.h + +@PLATFORM_WIN32_TRUE@no_undefined = -no-undefined +@OS_WIN32_AND_DLL_COMPILATION_TRUE@glib_win32_res = glib-win32-res.o +@OS_WIN32_AND_DLL_COMPILATION_TRUE@glib_win32_res_ldflag = -Wl,$(glib_win32_res) +@USE_SYSTEM_PCRE_FALSE@pcre_lib = pcre/libpcre.la +@USE_SYSTEM_PCRE_TRUE@pcre_lib = $(PCRE_LIBS) +@USE_SYSTEM_PCRE_FALSE@pcre_inc = +@USE_SYSTEM_PCRE_TRUE@pcre_inc = $(PCRE_CFLAGS) +libglib_2_0_la_CFLAGS = $(AM_CFLAGS) $(GLIB_HIDDEN_VISIBILITY_CFLAGS) +libglib_2_0_la_LIBADD = libcharset/libcharset.la $(printf_la) @GIO@ \ + @GSPAWN@ @PLATFORMDEP@ @ICONV_LIBS@ @G_LIBS_EXTRA@ $(pcre_lib) \ + $(G_THREAD_LIBS_EXTRA) $(G_THREAD_LIBS_FOR_GTHREAD) \ + $(am__append_21) +libglib_2_0_la_DEPENDENCIES = libcharset/libcharset.la $(printf_la) @GIO@ @GSPAWN@ @PLATFORMDEP@ $(glib_win32_res) $(glib_def) +libglib_2_0_la_LDFLAGS = $(GLIB_LINK_FLAGS) \ + $(glib_win32_res_ldflag) \ + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ + -export-dynamic $(no_undefined) + +INSTALL_PROGS = $(am__append_23) $(am__append_24) $(am__append_25) +@ENABLE_DTRACE_TRUE@DTCOMPILE = $(patsubst -W%,,$(LTCOMPILE)) +@ENABLE_DTRACE_TRUE@DTCFLAGS = $(patsubst -W%,,$(CFLAGS)) +tapset_in_files = glib.stp.in +tapsetdir = @ABS_TAPSET_DIR@ +@ENABLE_SYSTEMTAP_TRUE@tapset_DATA = $(tapset_in_files:.stp.in=.stp) +@OS_WIN32_TRUE@@OS_WIN32_X64_TRUE@gspawn_win64_helper_LDADD = libglib-2.0.la +@OS_WIN32_TRUE@@OS_WIN32_X64_TRUE@gspawn_win64_helper_LDFLAGS = -mwindows +@OS_WIN32_TRUE@@OS_WIN32_X64_TRUE@gspawn_win64_helper_console_LDADD = libglib-2.0.la +@OS_WIN32_TRUE@@OS_WIN32_X64_FALSE@gspawn_win32_helper_LDADD = libglib-2.0.la +@OS_WIN32_TRUE@@OS_WIN32_X64_FALSE@gspawn_win32_helper_LDFLAGS = -mwindows +@OS_WIN32_TRUE@@OS_WIN32_X64_FALSE@gspawn_win32_helper_console_LDADD = libglib-2.0.la +@OS_UNIX_TRUE@gtester_SOURCES = gtester.c +@OS_UNIX_TRUE@gtester_LDADD = libglib-2.0.la +@OS_UNIX_TRUE@auto_config_binscripts = gtester-report +@OS_UNIX_TRUE@bin_SCRIPTS = ${auto_config_binscripts} +@OS_UNIX_TRUE@CONFIGVARS = \ +@OS_UNIX_TRUE@ "bindir" : "${bindir}", \ +@OS_UNIX_TRUE@ "glib-version" : "${GLIB_VERSION}" + + +# ------ MSVC Project File Generation ------ +MSVCPROJS = glib +glib_FILES = $(libglib_2_0_la_SOURCES) +glib_EXCLUDES = *-unix.c|gthread-*.c +glib_HEADERS_DIR = $(glibsubincludedir) +glib_HEADERS_INST = $(deprecatedinclude_HEADERS) $(glibsubinclude_HEADERS) +glib_HEADERS_EXCLUDES = dummy +_proj_name = $(subst /,_,$(subst -,_,$(subst .,_,$(1)))) +_proj_path_raw := $(subst $(abs_top_srcdir),,$(abs_srcdir)) +_proj_path = $(subst /,\\,$(_proj_path_raw)) +_proj_subdir_int = $(subst \\\\,\\,\\$(_proj_path)\\) +_proj_subdir = $(subst \\.\\,\\,$(_proj_subdir_int)) +_proj_files_raw = $(subst /,\\,$($(_proj_name)_FILES)) +_proj_files = $(subst $(srcdir)\\,,$(subst $(builddir)\\,,$(subst $(top_builddir)\\$(_proj_path)\\,\\,$(_proj_files_raw)))) +_proj_filters = $($(_proj_name)_EXCLUDES) +_proj_headers_raw = $(subst /,\\,$($(_proj_name)_HEADERS_INST)) +_proj_headers = $(subst $(srcdir)\\,,$(subst $(builddir)\\,,$(subst $(top_builddir)\\$(_proj_path)\\,\\,$(_proj_headers_raw)))) +_proj_headers_excludes = $($(_proj_name)_HEADERS_EXCLUDES) +_headers_dest_posix = $(subst $(includedir),,$($(_proj_name)_HEADERS_DIR)) +_headers_destdir = $(subst /,\\,$(_headers_dest_posix)) + +# install gdb scripts +gdbdir = $(datadir)/glib-2.0/gdb +dist_gdb_SCRIPTS = glib.py +@HAVE_GLIB_RUNTIME_LIBDIR_FALSE@ABS_GLIB_RUNTIME_LIBDIR = $(libdir) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ABS_GLIB_RUNTIME_LIBDIR = $(realpath $(libdir)/$(GLIB_RUNTIME_LIBDIR)) +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(top_srcdir)/build/Makefile.msvcproj $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glib/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu glib/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(top_srcdir)/build/Makefile.msvcproj $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +glibconfig.h.win32: $(top_builddir)/config.status $(srcdir)/glibconfig.h.win32.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +makefile.msc: $(top_builddir)/config.status $(srcdir)/makefile.msc.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +glib.rc: $(top_builddir)/config.status $(srcdir)/glib.rc.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libglib-2.0.la: $(libglib_2_0_la_OBJECTS) $(libglib_2_0_la_DEPENDENCIES) $(EXTRA_libglib_2_0_la_DEPENDENCIES) + $(AM_V_CCLD)$(libglib_2_0_la_LINK) -rpath $(libdir) $(libglib_2_0_la_OBJECTS) $(libglib_2_0_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +gspawn-win32-helper$(EXEEXT): $(gspawn_win32_helper_OBJECTS) $(gspawn_win32_helper_DEPENDENCIES) $(EXTRA_gspawn_win32_helper_DEPENDENCIES) + @rm -f gspawn-win32-helper$(EXEEXT) + $(AM_V_CCLD)$(gspawn_win32_helper_LINK) $(gspawn_win32_helper_OBJECTS) $(gspawn_win32_helper_LDADD) $(LIBS) + +gspawn-win32-helper-console$(EXEEXT): $(gspawn_win32_helper_console_OBJECTS) $(gspawn_win32_helper_console_DEPENDENCIES) $(EXTRA_gspawn_win32_helper_console_DEPENDENCIES) + @rm -f gspawn-win32-helper-console$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gspawn_win32_helper_console_OBJECTS) $(gspawn_win32_helper_console_LDADD) $(LIBS) + +gspawn-win64-helper$(EXEEXT): $(gspawn_win64_helper_OBJECTS) $(gspawn_win64_helper_DEPENDENCIES) $(EXTRA_gspawn_win64_helper_DEPENDENCIES) + @rm -f gspawn-win64-helper$(EXEEXT) + $(AM_V_CCLD)$(gspawn_win64_helper_LINK) $(gspawn_win64_helper_OBJECTS) $(gspawn_win64_helper_LDADD) $(LIBS) + +gspawn-win64-helper-console$(EXEEXT): $(gspawn_win64_helper_console_OBJECTS) $(gspawn_win64_helper_console_DEPENDENCIES) $(EXTRA_gspawn_win64_helper_console_DEPENDENCIES) + @rm -f gspawn-win64-helper-console$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gspawn_win64_helper_console_OBJECTS) $(gspawn_win64_helper_console_LDADD) $(LIBS) + +gtester$(EXEEXT): $(gtester_OBJECTS) $(gtester_DEPENDENCIES) $(EXTRA_gtester_DEPENDENCIES) + @rm -f gtester$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gtester_OBJECTS) $(gtester_LDADD) $(LIBS) +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) +install-dist_gdbSCRIPTS: $(dist_gdb_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(dist_gdb_SCRIPTS)'; test -n "$(gdbdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(gdbdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(gdbdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(gdbdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(gdbdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-dist_gdbSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(dist_gdb_SCRIPTS)'; test -n "$(gdbdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(gdbdir)'; $(am__uninstall_files_from_dir) +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gspawn-win32-helper-console.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gspawn-win32-helper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gspawn-win64-helper-console.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gspawn-win64-helper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtester.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gallocator.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-garray.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gasyncqueue.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gatomic.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gbacktrace.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gbase64.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gbitlock.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gbookmarkfile.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gbytes.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gcache.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gcharset.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gchecksum.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gcompletion.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gconvert.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gdataset.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gdate.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gdatetime.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gdir.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-genviron.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gerror.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gfileutils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-ggettext.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-ghash.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-ghmac.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-ghook.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-ghostutils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-giochannel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-giounix.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-giowin32.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gkeyfile.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-glib-init.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-glib-private.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-glib-unix.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-glist.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gmain.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gmappedfile.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gmarkup.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gmem.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gmessages.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gnode.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-goption.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gpattern.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gpoll.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gprimes.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gprintf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gqsort.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gquark.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gqueue.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-grand.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gregex.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-grel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gscanner.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gsequence.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gshell.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gslice.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gslist.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gspawn-win32.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gspawn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gstdio.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gstrfuncs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gstring.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gstringchunk.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gtestutils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gthread-deprecated.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gthread-posix.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gthread-win32.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gthread.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gthreadpool.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gtimer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gtimezone.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gtranslit.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gtrashstack.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gtree.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gunibreak.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gunicollate.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gunidecomp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-guniprop.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gurifuncs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gutf8.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gutils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gvariant-core.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gvariant-parser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gvariant-serialiser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gvariant.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gvarianttype.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gvarianttypeinfo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gversion.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gwakeup.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libglib_2_0_la-gwin32.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libglib_2_0_la-gallocator.lo: deprecated/gallocator.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gallocator.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gallocator.Tpo -c -o libglib_2_0_la-gallocator.lo `test -f 'deprecated/gallocator.c' || echo '$(srcdir)/'`deprecated/gallocator.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gallocator.Tpo $(DEPDIR)/libglib_2_0_la-gallocator.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deprecated/gallocator.c' object='libglib_2_0_la-gallocator.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gallocator.lo `test -f 'deprecated/gallocator.c' || echo '$(srcdir)/'`deprecated/gallocator.c + +libglib_2_0_la-gcache.lo: deprecated/gcache.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gcache.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gcache.Tpo -c -o libglib_2_0_la-gcache.lo `test -f 'deprecated/gcache.c' || echo '$(srcdir)/'`deprecated/gcache.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gcache.Tpo $(DEPDIR)/libglib_2_0_la-gcache.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deprecated/gcache.c' object='libglib_2_0_la-gcache.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gcache.lo `test -f 'deprecated/gcache.c' || echo '$(srcdir)/'`deprecated/gcache.c + +libglib_2_0_la-gcompletion.lo: deprecated/gcompletion.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gcompletion.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gcompletion.Tpo -c -o libglib_2_0_la-gcompletion.lo `test -f 'deprecated/gcompletion.c' || echo '$(srcdir)/'`deprecated/gcompletion.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gcompletion.Tpo $(DEPDIR)/libglib_2_0_la-gcompletion.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deprecated/gcompletion.c' object='libglib_2_0_la-gcompletion.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gcompletion.lo `test -f 'deprecated/gcompletion.c' || echo '$(srcdir)/'`deprecated/gcompletion.c + +libglib_2_0_la-grel.lo: deprecated/grel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-grel.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-grel.Tpo -c -o libglib_2_0_la-grel.lo `test -f 'deprecated/grel.c' || echo '$(srcdir)/'`deprecated/grel.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-grel.Tpo $(DEPDIR)/libglib_2_0_la-grel.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deprecated/grel.c' object='libglib_2_0_la-grel.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-grel.lo `test -f 'deprecated/grel.c' || echo '$(srcdir)/'`deprecated/grel.c + +libglib_2_0_la-gthread-deprecated.lo: deprecated/gthread-deprecated.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gthread-deprecated.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gthread-deprecated.Tpo -c -o libglib_2_0_la-gthread-deprecated.lo `test -f 'deprecated/gthread-deprecated.c' || echo '$(srcdir)/'`deprecated/gthread-deprecated.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gthread-deprecated.Tpo $(DEPDIR)/libglib_2_0_la-gthread-deprecated.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='deprecated/gthread-deprecated.c' object='libglib_2_0_la-gthread-deprecated.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gthread-deprecated.lo `test -f 'deprecated/gthread-deprecated.c' || echo '$(srcdir)/'`deprecated/gthread-deprecated.c + +libglib_2_0_la-garray.lo: garray.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-garray.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-garray.Tpo -c -o libglib_2_0_la-garray.lo `test -f 'garray.c' || echo '$(srcdir)/'`garray.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-garray.Tpo $(DEPDIR)/libglib_2_0_la-garray.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='garray.c' object='libglib_2_0_la-garray.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-garray.lo `test -f 'garray.c' || echo '$(srcdir)/'`garray.c + +libglib_2_0_la-gasyncqueue.lo: gasyncqueue.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gasyncqueue.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gasyncqueue.Tpo -c -o libglib_2_0_la-gasyncqueue.lo `test -f 'gasyncqueue.c' || echo '$(srcdir)/'`gasyncqueue.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gasyncqueue.Tpo $(DEPDIR)/libglib_2_0_la-gasyncqueue.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gasyncqueue.c' object='libglib_2_0_la-gasyncqueue.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gasyncqueue.lo `test -f 'gasyncqueue.c' || echo '$(srcdir)/'`gasyncqueue.c + +libglib_2_0_la-gatomic.lo: gatomic.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gatomic.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gatomic.Tpo -c -o libglib_2_0_la-gatomic.lo `test -f 'gatomic.c' || echo '$(srcdir)/'`gatomic.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gatomic.Tpo $(DEPDIR)/libglib_2_0_la-gatomic.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gatomic.c' object='libglib_2_0_la-gatomic.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gatomic.lo `test -f 'gatomic.c' || echo '$(srcdir)/'`gatomic.c + +libglib_2_0_la-gbacktrace.lo: gbacktrace.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gbacktrace.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gbacktrace.Tpo -c -o libglib_2_0_la-gbacktrace.lo `test -f 'gbacktrace.c' || echo '$(srcdir)/'`gbacktrace.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gbacktrace.Tpo $(DEPDIR)/libglib_2_0_la-gbacktrace.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gbacktrace.c' object='libglib_2_0_la-gbacktrace.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gbacktrace.lo `test -f 'gbacktrace.c' || echo '$(srcdir)/'`gbacktrace.c + +libglib_2_0_la-gbase64.lo: gbase64.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gbase64.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gbase64.Tpo -c -o libglib_2_0_la-gbase64.lo `test -f 'gbase64.c' || echo '$(srcdir)/'`gbase64.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gbase64.Tpo $(DEPDIR)/libglib_2_0_la-gbase64.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gbase64.c' object='libglib_2_0_la-gbase64.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gbase64.lo `test -f 'gbase64.c' || echo '$(srcdir)/'`gbase64.c + +libglib_2_0_la-gbitlock.lo: gbitlock.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gbitlock.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gbitlock.Tpo -c -o libglib_2_0_la-gbitlock.lo `test -f 'gbitlock.c' || echo '$(srcdir)/'`gbitlock.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gbitlock.Tpo $(DEPDIR)/libglib_2_0_la-gbitlock.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gbitlock.c' object='libglib_2_0_la-gbitlock.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gbitlock.lo `test -f 'gbitlock.c' || echo '$(srcdir)/'`gbitlock.c + +libglib_2_0_la-gbookmarkfile.lo: gbookmarkfile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gbookmarkfile.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gbookmarkfile.Tpo -c -o libglib_2_0_la-gbookmarkfile.lo `test -f 'gbookmarkfile.c' || echo '$(srcdir)/'`gbookmarkfile.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gbookmarkfile.Tpo $(DEPDIR)/libglib_2_0_la-gbookmarkfile.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gbookmarkfile.c' object='libglib_2_0_la-gbookmarkfile.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gbookmarkfile.lo `test -f 'gbookmarkfile.c' || echo '$(srcdir)/'`gbookmarkfile.c + +libglib_2_0_la-gbytes.lo: gbytes.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gbytes.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gbytes.Tpo -c -o libglib_2_0_la-gbytes.lo `test -f 'gbytes.c' || echo '$(srcdir)/'`gbytes.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gbytes.Tpo $(DEPDIR)/libglib_2_0_la-gbytes.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gbytes.c' object='libglib_2_0_la-gbytes.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gbytes.lo `test -f 'gbytes.c' || echo '$(srcdir)/'`gbytes.c + +libglib_2_0_la-gcharset.lo: gcharset.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gcharset.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gcharset.Tpo -c -o libglib_2_0_la-gcharset.lo `test -f 'gcharset.c' || echo '$(srcdir)/'`gcharset.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gcharset.Tpo $(DEPDIR)/libglib_2_0_la-gcharset.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gcharset.c' object='libglib_2_0_la-gcharset.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gcharset.lo `test -f 'gcharset.c' || echo '$(srcdir)/'`gcharset.c + +libglib_2_0_la-gchecksum.lo: gchecksum.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gchecksum.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gchecksum.Tpo -c -o libglib_2_0_la-gchecksum.lo `test -f 'gchecksum.c' || echo '$(srcdir)/'`gchecksum.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gchecksum.Tpo $(DEPDIR)/libglib_2_0_la-gchecksum.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gchecksum.c' object='libglib_2_0_la-gchecksum.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gchecksum.lo `test -f 'gchecksum.c' || echo '$(srcdir)/'`gchecksum.c + +libglib_2_0_la-gconvert.lo: gconvert.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gconvert.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gconvert.Tpo -c -o libglib_2_0_la-gconvert.lo `test -f 'gconvert.c' || echo '$(srcdir)/'`gconvert.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gconvert.Tpo $(DEPDIR)/libglib_2_0_la-gconvert.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gconvert.c' object='libglib_2_0_la-gconvert.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gconvert.lo `test -f 'gconvert.c' || echo '$(srcdir)/'`gconvert.c + +libglib_2_0_la-gdataset.lo: gdataset.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gdataset.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gdataset.Tpo -c -o libglib_2_0_la-gdataset.lo `test -f 'gdataset.c' || echo '$(srcdir)/'`gdataset.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gdataset.Tpo $(DEPDIR)/libglib_2_0_la-gdataset.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdataset.c' object='libglib_2_0_la-gdataset.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gdataset.lo `test -f 'gdataset.c' || echo '$(srcdir)/'`gdataset.c + +libglib_2_0_la-gdate.lo: gdate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gdate.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gdate.Tpo -c -o libglib_2_0_la-gdate.lo `test -f 'gdate.c' || echo '$(srcdir)/'`gdate.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gdate.Tpo $(DEPDIR)/libglib_2_0_la-gdate.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdate.c' object='libglib_2_0_la-gdate.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gdate.lo `test -f 'gdate.c' || echo '$(srcdir)/'`gdate.c + +libglib_2_0_la-gdatetime.lo: gdatetime.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gdatetime.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gdatetime.Tpo -c -o libglib_2_0_la-gdatetime.lo `test -f 'gdatetime.c' || echo '$(srcdir)/'`gdatetime.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gdatetime.Tpo $(DEPDIR)/libglib_2_0_la-gdatetime.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdatetime.c' object='libglib_2_0_la-gdatetime.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gdatetime.lo `test -f 'gdatetime.c' || echo '$(srcdir)/'`gdatetime.c + +libglib_2_0_la-gdir.lo: gdir.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gdir.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gdir.Tpo -c -o libglib_2_0_la-gdir.lo `test -f 'gdir.c' || echo '$(srcdir)/'`gdir.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gdir.Tpo $(DEPDIR)/libglib_2_0_la-gdir.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gdir.c' object='libglib_2_0_la-gdir.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gdir.lo `test -f 'gdir.c' || echo '$(srcdir)/'`gdir.c + +libglib_2_0_la-genviron.lo: genviron.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-genviron.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-genviron.Tpo -c -o libglib_2_0_la-genviron.lo `test -f 'genviron.c' || echo '$(srcdir)/'`genviron.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-genviron.Tpo $(DEPDIR)/libglib_2_0_la-genviron.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genviron.c' object='libglib_2_0_la-genviron.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-genviron.lo `test -f 'genviron.c' || echo '$(srcdir)/'`genviron.c + +libglib_2_0_la-gerror.lo: gerror.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gerror.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gerror.Tpo -c -o libglib_2_0_la-gerror.lo `test -f 'gerror.c' || echo '$(srcdir)/'`gerror.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gerror.Tpo $(DEPDIR)/libglib_2_0_la-gerror.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gerror.c' object='libglib_2_0_la-gerror.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gerror.lo `test -f 'gerror.c' || echo '$(srcdir)/'`gerror.c + +libglib_2_0_la-gfileutils.lo: gfileutils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gfileutils.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gfileutils.Tpo -c -o libglib_2_0_la-gfileutils.lo `test -f 'gfileutils.c' || echo '$(srcdir)/'`gfileutils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gfileutils.Tpo $(DEPDIR)/libglib_2_0_la-gfileutils.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gfileutils.c' object='libglib_2_0_la-gfileutils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gfileutils.lo `test -f 'gfileutils.c' || echo '$(srcdir)/'`gfileutils.c + +libglib_2_0_la-ggettext.lo: ggettext.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-ggettext.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-ggettext.Tpo -c -o libglib_2_0_la-ggettext.lo `test -f 'ggettext.c' || echo '$(srcdir)/'`ggettext.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-ggettext.Tpo $(DEPDIR)/libglib_2_0_la-ggettext.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ggettext.c' object='libglib_2_0_la-ggettext.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-ggettext.lo `test -f 'ggettext.c' || echo '$(srcdir)/'`ggettext.c + +libglib_2_0_la-ghash.lo: ghash.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-ghash.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-ghash.Tpo -c -o libglib_2_0_la-ghash.lo `test -f 'ghash.c' || echo '$(srcdir)/'`ghash.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-ghash.Tpo $(DEPDIR)/libglib_2_0_la-ghash.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ghash.c' object='libglib_2_0_la-ghash.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-ghash.lo `test -f 'ghash.c' || echo '$(srcdir)/'`ghash.c + +libglib_2_0_la-ghmac.lo: ghmac.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-ghmac.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-ghmac.Tpo -c -o libglib_2_0_la-ghmac.lo `test -f 'ghmac.c' || echo '$(srcdir)/'`ghmac.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-ghmac.Tpo $(DEPDIR)/libglib_2_0_la-ghmac.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ghmac.c' object='libglib_2_0_la-ghmac.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-ghmac.lo `test -f 'ghmac.c' || echo '$(srcdir)/'`ghmac.c + +libglib_2_0_la-ghook.lo: ghook.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-ghook.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-ghook.Tpo -c -o libglib_2_0_la-ghook.lo `test -f 'ghook.c' || echo '$(srcdir)/'`ghook.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-ghook.Tpo $(DEPDIR)/libglib_2_0_la-ghook.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ghook.c' object='libglib_2_0_la-ghook.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-ghook.lo `test -f 'ghook.c' || echo '$(srcdir)/'`ghook.c + +libglib_2_0_la-ghostutils.lo: ghostutils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-ghostutils.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-ghostutils.Tpo -c -o libglib_2_0_la-ghostutils.lo `test -f 'ghostutils.c' || echo '$(srcdir)/'`ghostutils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-ghostutils.Tpo $(DEPDIR)/libglib_2_0_la-ghostutils.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ghostutils.c' object='libglib_2_0_la-ghostutils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-ghostutils.lo `test -f 'ghostutils.c' || echo '$(srcdir)/'`ghostutils.c + +libglib_2_0_la-giochannel.lo: giochannel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-giochannel.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-giochannel.Tpo -c -o libglib_2_0_la-giochannel.lo `test -f 'giochannel.c' || echo '$(srcdir)/'`giochannel.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-giochannel.Tpo $(DEPDIR)/libglib_2_0_la-giochannel.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giochannel.c' object='libglib_2_0_la-giochannel.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-giochannel.lo `test -f 'giochannel.c' || echo '$(srcdir)/'`giochannel.c + +libglib_2_0_la-gkeyfile.lo: gkeyfile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gkeyfile.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gkeyfile.Tpo -c -o libglib_2_0_la-gkeyfile.lo `test -f 'gkeyfile.c' || echo '$(srcdir)/'`gkeyfile.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gkeyfile.Tpo $(DEPDIR)/libglib_2_0_la-gkeyfile.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gkeyfile.c' object='libglib_2_0_la-gkeyfile.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gkeyfile.lo `test -f 'gkeyfile.c' || echo '$(srcdir)/'`gkeyfile.c + +libglib_2_0_la-glib-init.lo: glib-init.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-glib-init.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-glib-init.Tpo -c -o libglib_2_0_la-glib-init.lo `test -f 'glib-init.c' || echo '$(srcdir)/'`glib-init.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-glib-init.Tpo $(DEPDIR)/libglib_2_0_la-glib-init.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glib-init.c' object='libglib_2_0_la-glib-init.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-glib-init.lo `test -f 'glib-init.c' || echo '$(srcdir)/'`glib-init.c + +libglib_2_0_la-glib-private.lo: glib-private.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-glib-private.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-glib-private.Tpo -c -o libglib_2_0_la-glib-private.lo `test -f 'glib-private.c' || echo '$(srcdir)/'`glib-private.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-glib-private.Tpo $(DEPDIR)/libglib_2_0_la-glib-private.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glib-private.c' object='libglib_2_0_la-glib-private.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-glib-private.lo `test -f 'glib-private.c' || echo '$(srcdir)/'`glib-private.c + +libglib_2_0_la-glist.lo: glist.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-glist.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-glist.Tpo -c -o libglib_2_0_la-glist.lo `test -f 'glist.c' || echo '$(srcdir)/'`glist.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-glist.Tpo $(DEPDIR)/libglib_2_0_la-glist.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glist.c' object='libglib_2_0_la-glist.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-glist.lo `test -f 'glist.c' || echo '$(srcdir)/'`glist.c + +libglib_2_0_la-gmain.lo: gmain.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gmain.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gmain.Tpo -c -o libglib_2_0_la-gmain.lo `test -f 'gmain.c' || echo '$(srcdir)/'`gmain.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gmain.Tpo $(DEPDIR)/libglib_2_0_la-gmain.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmain.c' object='libglib_2_0_la-gmain.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gmain.lo `test -f 'gmain.c' || echo '$(srcdir)/'`gmain.c + +libglib_2_0_la-gmappedfile.lo: gmappedfile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gmappedfile.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gmappedfile.Tpo -c -o libglib_2_0_la-gmappedfile.lo `test -f 'gmappedfile.c' || echo '$(srcdir)/'`gmappedfile.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gmappedfile.Tpo $(DEPDIR)/libglib_2_0_la-gmappedfile.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmappedfile.c' object='libglib_2_0_la-gmappedfile.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gmappedfile.lo `test -f 'gmappedfile.c' || echo '$(srcdir)/'`gmappedfile.c + +libglib_2_0_la-gmarkup.lo: gmarkup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gmarkup.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gmarkup.Tpo -c -o libglib_2_0_la-gmarkup.lo `test -f 'gmarkup.c' || echo '$(srcdir)/'`gmarkup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gmarkup.Tpo $(DEPDIR)/libglib_2_0_la-gmarkup.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmarkup.c' object='libglib_2_0_la-gmarkup.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gmarkup.lo `test -f 'gmarkup.c' || echo '$(srcdir)/'`gmarkup.c + +libglib_2_0_la-gmem.lo: gmem.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gmem.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gmem.Tpo -c -o libglib_2_0_la-gmem.lo `test -f 'gmem.c' || echo '$(srcdir)/'`gmem.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gmem.Tpo $(DEPDIR)/libglib_2_0_la-gmem.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmem.c' object='libglib_2_0_la-gmem.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gmem.lo `test -f 'gmem.c' || echo '$(srcdir)/'`gmem.c + +libglib_2_0_la-gmessages.lo: gmessages.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gmessages.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gmessages.Tpo -c -o libglib_2_0_la-gmessages.lo `test -f 'gmessages.c' || echo '$(srcdir)/'`gmessages.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gmessages.Tpo $(DEPDIR)/libglib_2_0_la-gmessages.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmessages.c' object='libglib_2_0_la-gmessages.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gmessages.lo `test -f 'gmessages.c' || echo '$(srcdir)/'`gmessages.c + +libglib_2_0_la-gnode.lo: gnode.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gnode.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gnode.Tpo -c -o libglib_2_0_la-gnode.lo `test -f 'gnode.c' || echo '$(srcdir)/'`gnode.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gnode.Tpo $(DEPDIR)/libglib_2_0_la-gnode.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gnode.c' object='libglib_2_0_la-gnode.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gnode.lo `test -f 'gnode.c' || echo '$(srcdir)/'`gnode.c + +libglib_2_0_la-goption.lo: goption.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-goption.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-goption.Tpo -c -o libglib_2_0_la-goption.lo `test -f 'goption.c' || echo '$(srcdir)/'`goption.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-goption.Tpo $(DEPDIR)/libglib_2_0_la-goption.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='goption.c' object='libglib_2_0_la-goption.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-goption.lo `test -f 'goption.c' || echo '$(srcdir)/'`goption.c + +libglib_2_0_la-gpattern.lo: gpattern.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gpattern.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gpattern.Tpo -c -o libglib_2_0_la-gpattern.lo `test -f 'gpattern.c' || echo '$(srcdir)/'`gpattern.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gpattern.Tpo $(DEPDIR)/libglib_2_0_la-gpattern.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpattern.c' object='libglib_2_0_la-gpattern.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gpattern.lo `test -f 'gpattern.c' || echo '$(srcdir)/'`gpattern.c + +libglib_2_0_la-gpoll.lo: gpoll.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gpoll.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gpoll.Tpo -c -o libglib_2_0_la-gpoll.lo `test -f 'gpoll.c' || echo '$(srcdir)/'`gpoll.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gpoll.Tpo $(DEPDIR)/libglib_2_0_la-gpoll.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpoll.c' object='libglib_2_0_la-gpoll.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gpoll.lo `test -f 'gpoll.c' || echo '$(srcdir)/'`gpoll.c + +libglib_2_0_la-gprimes.lo: gprimes.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gprimes.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gprimes.Tpo -c -o libglib_2_0_la-gprimes.lo `test -f 'gprimes.c' || echo '$(srcdir)/'`gprimes.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gprimes.Tpo $(DEPDIR)/libglib_2_0_la-gprimes.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gprimes.c' object='libglib_2_0_la-gprimes.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gprimes.lo `test -f 'gprimes.c' || echo '$(srcdir)/'`gprimes.c + +libglib_2_0_la-gqsort.lo: gqsort.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gqsort.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gqsort.Tpo -c -o libglib_2_0_la-gqsort.lo `test -f 'gqsort.c' || echo '$(srcdir)/'`gqsort.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gqsort.Tpo $(DEPDIR)/libglib_2_0_la-gqsort.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gqsort.c' object='libglib_2_0_la-gqsort.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gqsort.lo `test -f 'gqsort.c' || echo '$(srcdir)/'`gqsort.c + +libglib_2_0_la-gquark.lo: gquark.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gquark.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gquark.Tpo -c -o libglib_2_0_la-gquark.lo `test -f 'gquark.c' || echo '$(srcdir)/'`gquark.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gquark.Tpo $(DEPDIR)/libglib_2_0_la-gquark.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gquark.c' object='libglib_2_0_la-gquark.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gquark.lo `test -f 'gquark.c' || echo '$(srcdir)/'`gquark.c + +libglib_2_0_la-gqueue.lo: gqueue.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gqueue.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gqueue.Tpo -c -o libglib_2_0_la-gqueue.lo `test -f 'gqueue.c' || echo '$(srcdir)/'`gqueue.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gqueue.Tpo $(DEPDIR)/libglib_2_0_la-gqueue.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gqueue.c' object='libglib_2_0_la-gqueue.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gqueue.lo `test -f 'gqueue.c' || echo '$(srcdir)/'`gqueue.c + +libglib_2_0_la-grand.lo: grand.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-grand.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-grand.Tpo -c -o libglib_2_0_la-grand.lo `test -f 'grand.c' || echo '$(srcdir)/'`grand.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-grand.Tpo $(DEPDIR)/libglib_2_0_la-grand.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='grand.c' object='libglib_2_0_la-grand.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-grand.lo `test -f 'grand.c' || echo '$(srcdir)/'`grand.c + +libglib_2_0_la-gregex.lo: gregex.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gregex.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gregex.Tpo -c -o libglib_2_0_la-gregex.lo `test -f 'gregex.c' || echo '$(srcdir)/'`gregex.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gregex.Tpo $(DEPDIR)/libglib_2_0_la-gregex.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gregex.c' object='libglib_2_0_la-gregex.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gregex.lo `test -f 'gregex.c' || echo '$(srcdir)/'`gregex.c + +libglib_2_0_la-gscanner.lo: gscanner.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gscanner.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gscanner.Tpo -c -o libglib_2_0_la-gscanner.lo `test -f 'gscanner.c' || echo '$(srcdir)/'`gscanner.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gscanner.Tpo $(DEPDIR)/libglib_2_0_la-gscanner.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gscanner.c' object='libglib_2_0_la-gscanner.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gscanner.lo `test -f 'gscanner.c' || echo '$(srcdir)/'`gscanner.c + +libglib_2_0_la-gsequence.lo: gsequence.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gsequence.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gsequence.Tpo -c -o libglib_2_0_la-gsequence.lo `test -f 'gsequence.c' || echo '$(srcdir)/'`gsequence.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gsequence.Tpo $(DEPDIR)/libglib_2_0_la-gsequence.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsequence.c' object='libglib_2_0_la-gsequence.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gsequence.lo `test -f 'gsequence.c' || echo '$(srcdir)/'`gsequence.c + +libglib_2_0_la-gshell.lo: gshell.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gshell.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gshell.Tpo -c -o libglib_2_0_la-gshell.lo `test -f 'gshell.c' || echo '$(srcdir)/'`gshell.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gshell.Tpo $(DEPDIR)/libglib_2_0_la-gshell.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gshell.c' object='libglib_2_0_la-gshell.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gshell.lo `test -f 'gshell.c' || echo '$(srcdir)/'`gshell.c + +libglib_2_0_la-gslice.lo: gslice.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gslice.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gslice.Tpo -c -o libglib_2_0_la-gslice.lo `test -f 'gslice.c' || echo '$(srcdir)/'`gslice.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gslice.Tpo $(DEPDIR)/libglib_2_0_la-gslice.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gslice.c' object='libglib_2_0_la-gslice.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gslice.lo `test -f 'gslice.c' || echo '$(srcdir)/'`gslice.c + +libglib_2_0_la-gslist.lo: gslist.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gslist.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gslist.Tpo -c -o libglib_2_0_la-gslist.lo `test -f 'gslist.c' || echo '$(srcdir)/'`gslist.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gslist.Tpo $(DEPDIR)/libglib_2_0_la-gslist.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gslist.c' object='libglib_2_0_la-gslist.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gslist.lo `test -f 'gslist.c' || echo '$(srcdir)/'`gslist.c + +libglib_2_0_la-gstdio.lo: gstdio.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gstdio.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gstdio.Tpo -c -o libglib_2_0_la-gstdio.lo `test -f 'gstdio.c' || echo '$(srcdir)/'`gstdio.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gstdio.Tpo $(DEPDIR)/libglib_2_0_la-gstdio.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstdio.c' object='libglib_2_0_la-gstdio.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gstdio.lo `test -f 'gstdio.c' || echo '$(srcdir)/'`gstdio.c + +libglib_2_0_la-gstrfuncs.lo: gstrfuncs.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gstrfuncs.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gstrfuncs.Tpo -c -o libglib_2_0_la-gstrfuncs.lo `test -f 'gstrfuncs.c' || echo '$(srcdir)/'`gstrfuncs.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gstrfuncs.Tpo $(DEPDIR)/libglib_2_0_la-gstrfuncs.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstrfuncs.c' object='libglib_2_0_la-gstrfuncs.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gstrfuncs.lo `test -f 'gstrfuncs.c' || echo '$(srcdir)/'`gstrfuncs.c + +libglib_2_0_la-gstring.lo: gstring.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gstring.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gstring.Tpo -c -o libglib_2_0_la-gstring.lo `test -f 'gstring.c' || echo '$(srcdir)/'`gstring.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gstring.Tpo $(DEPDIR)/libglib_2_0_la-gstring.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstring.c' object='libglib_2_0_la-gstring.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gstring.lo `test -f 'gstring.c' || echo '$(srcdir)/'`gstring.c + +libglib_2_0_la-gstringchunk.lo: gstringchunk.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gstringchunk.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gstringchunk.Tpo -c -o libglib_2_0_la-gstringchunk.lo `test -f 'gstringchunk.c' || echo '$(srcdir)/'`gstringchunk.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gstringchunk.Tpo $(DEPDIR)/libglib_2_0_la-gstringchunk.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstringchunk.c' object='libglib_2_0_la-gstringchunk.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gstringchunk.lo `test -f 'gstringchunk.c' || echo '$(srcdir)/'`gstringchunk.c + +libglib_2_0_la-gtestutils.lo: gtestutils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gtestutils.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gtestutils.Tpo -c -o libglib_2_0_la-gtestutils.lo `test -f 'gtestutils.c' || echo '$(srcdir)/'`gtestutils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gtestutils.Tpo $(DEPDIR)/libglib_2_0_la-gtestutils.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtestutils.c' object='libglib_2_0_la-gtestutils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gtestutils.lo `test -f 'gtestutils.c' || echo '$(srcdir)/'`gtestutils.c + +libglib_2_0_la-gthread.lo: gthread.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gthread.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gthread.Tpo -c -o libglib_2_0_la-gthread.lo `test -f 'gthread.c' || echo '$(srcdir)/'`gthread.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gthread.Tpo $(DEPDIR)/libglib_2_0_la-gthread.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gthread.c' object='libglib_2_0_la-gthread.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gthread.lo `test -f 'gthread.c' || echo '$(srcdir)/'`gthread.c + +libglib_2_0_la-gthreadpool.lo: gthreadpool.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gthreadpool.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gthreadpool.Tpo -c -o libglib_2_0_la-gthreadpool.lo `test -f 'gthreadpool.c' || echo '$(srcdir)/'`gthreadpool.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gthreadpool.Tpo $(DEPDIR)/libglib_2_0_la-gthreadpool.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gthreadpool.c' object='libglib_2_0_la-gthreadpool.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gthreadpool.lo `test -f 'gthreadpool.c' || echo '$(srcdir)/'`gthreadpool.c + +libglib_2_0_la-gtimer.lo: gtimer.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gtimer.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gtimer.Tpo -c -o libglib_2_0_la-gtimer.lo `test -f 'gtimer.c' || echo '$(srcdir)/'`gtimer.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gtimer.Tpo $(DEPDIR)/libglib_2_0_la-gtimer.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtimer.c' object='libglib_2_0_la-gtimer.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gtimer.lo `test -f 'gtimer.c' || echo '$(srcdir)/'`gtimer.c + +libglib_2_0_la-gtimezone.lo: gtimezone.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gtimezone.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gtimezone.Tpo -c -o libglib_2_0_la-gtimezone.lo `test -f 'gtimezone.c' || echo '$(srcdir)/'`gtimezone.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gtimezone.Tpo $(DEPDIR)/libglib_2_0_la-gtimezone.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtimezone.c' object='libglib_2_0_la-gtimezone.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gtimezone.lo `test -f 'gtimezone.c' || echo '$(srcdir)/'`gtimezone.c + +libglib_2_0_la-gtranslit.lo: gtranslit.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gtranslit.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gtranslit.Tpo -c -o libglib_2_0_la-gtranslit.lo `test -f 'gtranslit.c' || echo '$(srcdir)/'`gtranslit.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gtranslit.Tpo $(DEPDIR)/libglib_2_0_la-gtranslit.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtranslit.c' object='libglib_2_0_la-gtranslit.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gtranslit.lo `test -f 'gtranslit.c' || echo '$(srcdir)/'`gtranslit.c + +libglib_2_0_la-gtrashstack.lo: gtrashstack.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gtrashstack.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gtrashstack.Tpo -c -o libglib_2_0_la-gtrashstack.lo `test -f 'gtrashstack.c' || echo '$(srcdir)/'`gtrashstack.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gtrashstack.Tpo $(DEPDIR)/libglib_2_0_la-gtrashstack.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtrashstack.c' object='libglib_2_0_la-gtrashstack.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gtrashstack.lo `test -f 'gtrashstack.c' || echo '$(srcdir)/'`gtrashstack.c + +libglib_2_0_la-gtree.lo: gtree.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gtree.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gtree.Tpo -c -o libglib_2_0_la-gtree.lo `test -f 'gtree.c' || echo '$(srcdir)/'`gtree.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gtree.Tpo $(DEPDIR)/libglib_2_0_la-gtree.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtree.c' object='libglib_2_0_la-gtree.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gtree.lo `test -f 'gtree.c' || echo '$(srcdir)/'`gtree.c + +libglib_2_0_la-guniprop.lo: guniprop.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-guniprop.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-guniprop.Tpo -c -o libglib_2_0_la-guniprop.lo `test -f 'guniprop.c' || echo '$(srcdir)/'`guniprop.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-guniprop.Tpo $(DEPDIR)/libglib_2_0_la-guniprop.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='guniprop.c' object='libglib_2_0_la-guniprop.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-guniprop.lo `test -f 'guniprop.c' || echo '$(srcdir)/'`guniprop.c + +libglib_2_0_la-gutf8.lo: gutf8.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gutf8.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gutf8.Tpo -c -o libglib_2_0_la-gutf8.lo `test -f 'gutf8.c' || echo '$(srcdir)/'`gutf8.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gutf8.Tpo $(DEPDIR)/libglib_2_0_la-gutf8.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gutf8.c' object='libglib_2_0_la-gutf8.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gutf8.lo `test -f 'gutf8.c' || echo '$(srcdir)/'`gutf8.c + +libglib_2_0_la-gunibreak.lo: gunibreak.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gunibreak.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gunibreak.Tpo -c -o libglib_2_0_la-gunibreak.lo `test -f 'gunibreak.c' || echo '$(srcdir)/'`gunibreak.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gunibreak.Tpo $(DEPDIR)/libglib_2_0_la-gunibreak.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunibreak.c' object='libglib_2_0_la-gunibreak.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gunibreak.lo `test -f 'gunibreak.c' || echo '$(srcdir)/'`gunibreak.c + +libglib_2_0_la-gunicollate.lo: gunicollate.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gunicollate.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gunicollate.Tpo -c -o libglib_2_0_la-gunicollate.lo `test -f 'gunicollate.c' || echo '$(srcdir)/'`gunicollate.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gunicollate.Tpo $(DEPDIR)/libglib_2_0_la-gunicollate.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunicollate.c' object='libglib_2_0_la-gunicollate.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gunicollate.lo `test -f 'gunicollate.c' || echo '$(srcdir)/'`gunicollate.c + +libglib_2_0_la-gunidecomp.lo: gunidecomp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gunidecomp.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gunidecomp.Tpo -c -o libglib_2_0_la-gunidecomp.lo `test -f 'gunidecomp.c' || echo '$(srcdir)/'`gunidecomp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gunidecomp.Tpo $(DEPDIR)/libglib_2_0_la-gunidecomp.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gunidecomp.c' object='libglib_2_0_la-gunidecomp.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gunidecomp.lo `test -f 'gunidecomp.c' || echo '$(srcdir)/'`gunidecomp.c + +libglib_2_0_la-gurifuncs.lo: gurifuncs.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gurifuncs.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gurifuncs.Tpo -c -o libglib_2_0_la-gurifuncs.lo `test -f 'gurifuncs.c' || echo '$(srcdir)/'`gurifuncs.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gurifuncs.Tpo $(DEPDIR)/libglib_2_0_la-gurifuncs.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gurifuncs.c' object='libglib_2_0_la-gurifuncs.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gurifuncs.lo `test -f 'gurifuncs.c' || echo '$(srcdir)/'`gurifuncs.c + +libglib_2_0_la-gutils.lo: gutils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gutils.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gutils.Tpo -c -o libglib_2_0_la-gutils.lo `test -f 'gutils.c' || echo '$(srcdir)/'`gutils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gutils.Tpo $(DEPDIR)/libglib_2_0_la-gutils.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gutils.c' object='libglib_2_0_la-gutils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gutils.lo `test -f 'gutils.c' || echo '$(srcdir)/'`gutils.c + +libglib_2_0_la-gvariant.lo: gvariant.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gvariant.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gvariant.Tpo -c -o libglib_2_0_la-gvariant.lo `test -f 'gvariant.c' || echo '$(srcdir)/'`gvariant.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gvariant.Tpo $(DEPDIR)/libglib_2_0_la-gvariant.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvariant.c' object='libglib_2_0_la-gvariant.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gvariant.lo `test -f 'gvariant.c' || echo '$(srcdir)/'`gvariant.c + +libglib_2_0_la-gvariant-core.lo: gvariant-core.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gvariant-core.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gvariant-core.Tpo -c -o libglib_2_0_la-gvariant-core.lo `test -f 'gvariant-core.c' || echo '$(srcdir)/'`gvariant-core.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gvariant-core.Tpo $(DEPDIR)/libglib_2_0_la-gvariant-core.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvariant-core.c' object='libglib_2_0_la-gvariant-core.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gvariant-core.lo `test -f 'gvariant-core.c' || echo '$(srcdir)/'`gvariant-core.c + +libglib_2_0_la-gvariant-parser.lo: gvariant-parser.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gvariant-parser.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gvariant-parser.Tpo -c -o libglib_2_0_la-gvariant-parser.lo `test -f 'gvariant-parser.c' || echo '$(srcdir)/'`gvariant-parser.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gvariant-parser.Tpo $(DEPDIR)/libglib_2_0_la-gvariant-parser.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvariant-parser.c' object='libglib_2_0_la-gvariant-parser.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gvariant-parser.lo `test -f 'gvariant-parser.c' || echo '$(srcdir)/'`gvariant-parser.c + +libglib_2_0_la-gvariant-serialiser.lo: gvariant-serialiser.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gvariant-serialiser.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gvariant-serialiser.Tpo -c -o libglib_2_0_la-gvariant-serialiser.lo `test -f 'gvariant-serialiser.c' || echo '$(srcdir)/'`gvariant-serialiser.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gvariant-serialiser.Tpo $(DEPDIR)/libglib_2_0_la-gvariant-serialiser.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvariant-serialiser.c' object='libglib_2_0_la-gvariant-serialiser.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gvariant-serialiser.lo `test -f 'gvariant-serialiser.c' || echo '$(srcdir)/'`gvariant-serialiser.c + +libglib_2_0_la-gvarianttypeinfo.lo: gvarianttypeinfo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gvarianttypeinfo.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gvarianttypeinfo.Tpo -c -o libglib_2_0_la-gvarianttypeinfo.lo `test -f 'gvarianttypeinfo.c' || echo '$(srcdir)/'`gvarianttypeinfo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gvarianttypeinfo.Tpo $(DEPDIR)/libglib_2_0_la-gvarianttypeinfo.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvarianttypeinfo.c' object='libglib_2_0_la-gvarianttypeinfo.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gvarianttypeinfo.lo `test -f 'gvarianttypeinfo.c' || echo '$(srcdir)/'`gvarianttypeinfo.c + +libglib_2_0_la-gvarianttype.lo: gvarianttype.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gvarianttype.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gvarianttype.Tpo -c -o libglib_2_0_la-gvarianttype.lo `test -f 'gvarianttype.c' || echo '$(srcdir)/'`gvarianttype.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gvarianttype.Tpo $(DEPDIR)/libglib_2_0_la-gvarianttype.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvarianttype.c' object='libglib_2_0_la-gvarianttype.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gvarianttype.lo `test -f 'gvarianttype.c' || echo '$(srcdir)/'`gvarianttype.c + +libglib_2_0_la-gversion.lo: gversion.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gversion.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gversion.Tpo -c -o libglib_2_0_la-gversion.lo `test -f 'gversion.c' || echo '$(srcdir)/'`gversion.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gversion.Tpo $(DEPDIR)/libglib_2_0_la-gversion.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gversion.c' object='libglib_2_0_la-gversion.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gversion.lo `test -f 'gversion.c' || echo '$(srcdir)/'`gversion.c + +libglib_2_0_la-gwakeup.lo: gwakeup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gwakeup.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gwakeup.Tpo -c -o libglib_2_0_la-gwakeup.lo `test -f 'gwakeup.c' || echo '$(srcdir)/'`gwakeup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gwakeup.Tpo $(DEPDIR)/libglib_2_0_la-gwakeup.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwakeup.c' object='libglib_2_0_la-gwakeup.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gwakeup.lo `test -f 'gwakeup.c' || echo '$(srcdir)/'`gwakeup.c + +libglib_2_0_la-gprintf.lo: gprintf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gprintf.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gprintf.Tpo -c -o libglib_2_0_la-gprintf.lo `test -f 'gprintf.c' || echo '$(srcdir)/'`gprintf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gprintf.Tpo $(DEPDIR)/libglib_2_0_la-gprintf.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gprintf.c' object='libglib_2_0_la-gprintf.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gprintf.lo `test -f 'gprintf.c' || echo '$(srcdir)/'`gprintf.c + +libglib_2_0_la-glib-unix.lo: glib-unix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-glib-unix.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-glib-unix.Tpo -c -o libglib_2_0_la-glib-unix.lo `test -f 'glib-unix.c' || echo '$(srcdir)/'`glib-unix.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-glib-unix.Tpo $(DEPDIR)/libglib_2_0_la-glib-unix.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glib-unix.c' object='libglib_2_0_la-glib-unix.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-glib-unix.lo `test -f 'glib-unix.c' || echo '$(srcdir)/'`glib-unix.c + +libglib_2_0_la-gthread-win32.lo: gthread-win32.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gthread-win32.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gthread-win32.Tpo -c -o libglib_2_0_la-gthread-win32.lo `test -f 'gthread-win32.c' || echo '$(srcdir)/'`gthread-win32.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gthread-win32.Tpo $(DEPDIR)/libglib_2_0_la-gthread-win32.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gthread-win32.c' object='libglib_2_0_la-gthread-win32.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gthread-win32.lo `test -f 'gthread-win32.c' || echo '$(srcdir)/'`gthread-win32.c + +libglib_2_0_la-gthread-posix.lo: gthread-posix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gthread-posix.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gthread-posix.Tpo -c -o libglib_2_0_la-gthread-posix.lo `test -f 'gthread-posix.c' || echo '$(srcdir)/'`gthread-posix.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gthread-posix.Tpo $(DEPDIR)/libglib_2_0_la-gthread-posix.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gthread-posix.c' object='libglib_2_0_la-gthread-posix.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gthread-posix.lo `test -f 'gthread-posix.c' || echo '$(srcdir)/'`gthread-posix.c + +libglib_2_0_la-giounix.lo: giounix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-giounix.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-giounix.Tpo -c -o libglib_2_0_la-giounix.lo `test -f 'giounix.c' || echo '$(srcdir)/'`giounix.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-giounix.Tpo $(DEPDIR)/libglib_2_0_la-giounix.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giounix.c' object='libglib_2_0_la-giounix.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-giounix.lo `test -f 'giounix.c' || echo '$(srcdir)/'`giounix.c + +libglib_2_0_la-giowin32.lo: giowin32.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-giowin32.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-giowin32.Tpo -c -o libglib_2_0_la-giowin32.lo `test -f 'giowin32.c' || echo '$(srcdir)/'`giowin32.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-giowin32.Tpo $(DEPDIR)/libglib_2_0_la-giowin32.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='giowin32.c' object='libglib_2_0_la-giowin32.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-giowin32.lo `test -f 'giowin32.c' || echo '$(srcdir)/'`giowin32.c + +libglib_2_0_la-gspawn.lo: gspawn.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gspawn.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gspawn.Tpo -c -o libglib_2_0_la-gspawn.lo `test -f 'gspawn.c' || echo '$(srcdir)/'`gspawn.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gspawn.Tpo $(DEPDIR)/libglib_2_0_la-gspawn.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gspawn.c' object='libglib_2_0_la-gspawn.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gspawn.lo `test -f 'gspawn.c' || echo '$(srcdir)/'`gspawn.c + +libglib_2_0_la-gspawn-win32.lo: gspawn-win32.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gspawn-win32.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gspawn-win32.Tpo -c -o libglib_2_0_la-gspawn-win32.lo `test -f 'gspawn-win32.c' || echo '$(srcdir)/'`gspawn-win32.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gspawn-win32.Tpo $(DEPDIR)/libglib_2_0_la-gspawn-win32.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gspawn-win32.c' object='libglib_2_0_la-gspawn-win32.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gspawn-win32.lo `test -f 'gspawn-win32.c' || echo '$(srcdir)/'`gspawn-win32.c + +libglib_2_0_la-gwin32.lo: gwin32.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -MT libglib_2_0_la-gwin32.lo -MD -MP -MF $(DEPDIR)/libglib_2_0_la-gwin32.Tpo -c -o libglib_2_0_la-gwin32.lo `test -f 'gwin32.c' || echo '$(srcdir)/'`gwin32.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libglib_2_0_la-gwin32.Tpo $(DEPDIR)/libglib_2_0_la-gwin32.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwin32.c' object='libglib_2_0_la-gwin32.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libglib_2_0_la_CFLAGS) $(CFLAGS) -c -o libglib_2_0_la-gwin32.lo `test -f 'gwin32.c' || echo '$(srcdir)/'`gwin32.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) +install-tapsetDATA: $(tapset_DATA) + @$(NORMAL_INSTALL) + @list='$(tapset_DATA)'; test -n "$(tapsetdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(tapsetdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(tapsetdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tapsetdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(tapsetdir)" || exit $$?; \ + done + +uninstall-tapsetDATA: + @$(NORMAL_UNINSTALL) + @list='$(tapset_DATA)'; test -n "$(tapsetdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(tapsetdir)'; $(am__uninstall_files_from_dir) +install-deprecatedincludeHEADERS: $(deprecatedinclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(deprecatedinclude_HEADERS)'; test -n "$(deprecatedincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(deprecatedincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(deprecatedincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(deprecatedincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(deprecatedincludedir)" || exit $$?; \ + done + +uninstall-deprecatedincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(deprecatedinclude_HEADERS)'; test -n "$(deprecatedincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(deprecatedincludedir)'; $(am__uninstall_files_from_dir) +install-glibincludeHEADERS: $(glibinclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(glibinclude_HEADERS)'; test -n "$(glibincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(glibincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(glibincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(glibincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(glibincludedir)" || exit $$?; \ + done + +uninstall-glibincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(glibinclude_HEADERS)'; test -n "$(glibincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(glibincludedir)'; $(am__uninstall_files_from_dir) +install-glibsubincludeHEADERS: $(glibsubinclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(glibsubinclude_HEADERS)'; test -n "$(glibsubincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(glibsubincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(glibsubincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(glibsubincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(glibsubincludedir)" || exit $$?; \ + done + +uninstall-glibsubincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(glibsubinclude_HEADERS)'; test -n "$(glibsubincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(glibsubincludedir)'; $(am__uninstall_files_from_dir) +install-nodist_configexecincludeHEADERS: $(nodist_configexecinclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(nodist_configexecinclude_HEADERS)'; test -n "$(configexecincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(configexecincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(configexecincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(configexecincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(configexecincludedir)" || exit $$?; \ + done + +uninstall-nodist_configexecincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nodist_configexecinclude_HEADERS)'; test -n "$(configexecincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(configexecincludedir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ + $(HEADERS) all-local +install-binPROGRAMS: install-libLTLIBRARIES + +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(gdbdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(tapsetdir)" "$(DESTDIR)$(deprecatedincludedir)" "$(DESTDIR)$(glibincludedir)" "$(DESTDIR)$(glibsubincludedir)" "$(DESTDIR)$(configexecincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +@OS_UNIX_FALSE@install-exec-hook: +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-checkLTLIBRARIES clean-checkPROGRAMS \ + clean-generic clean-installed_testLTLIBRARIES \ + clean-installed_testPROGRAMS clean-libLTLIBRARIES \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-data-local install-deprecatedincludeHEADERS \ + install-dist_gdbSCRIPTS install-glibincludeHEADERS \ + install-glibsubincludeHEADERS \ + install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA install-tapsetDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-binSCRIPTS \ + install-libLTLIBRARIES install-nodist_configexecincludeHEADERS + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-exec-hook +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ + uninstall-deprecatedincludeHEADERS uninstall-dist_gdbSCRIPTS \ + uninstall-glibincludeHEADERS uninstall-glibsubincludeHEADERS \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-libLTLIBRARIES \ + uninstall-local uninstall-nobase_installed_testDATA \ + uninstall-nodist_configexecincludeHEADERS uninstall-tapsetDATA + +.MAKE: $(am__recursive_targets) all check check-am install install-am \ + install-data-am install-exec-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ + check check-TESTS check-am check-local clean clean-binPROGRAMS \ + clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \ + clean-noinstPROGRAMS cscopelist-am ctags ctags-am dist-hook \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-binSCRIPTS install-data install-data-am \ + install-data-hook install-data-local \ + install-deprecatedincludeHEADERS install-dist_gdbSCRIPTS \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-exec-hook install-glibincludeHEADERS \ + install-glibsubincludeHEADERS install-html install-html-am \ + install-info install-info-am install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-libLTLIBRARIES \ + install-man install-nobase_installed_testDATA \ + install-nodist_configexecincludeHEADERS install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + install-tapsetDATA installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \ + uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-binSCRIPTS uninstall-deprecatedincludeHEADERS \ + uninstall-dist_gdbSCRIPTS uninstall-glibincludeHEADERS \ + uninstall-glibsubincludeHEADERS \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-libLTLIBRARIES \ + uninstall-local uninstall-nobase_installed_testDATA \ + uninstall-nodist_configexecincludeHEADERS uninstall-tapsetDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) +glibconfig-stamp: ../config.status + $(AM_V_GEN) cd $(top_builddir) && \ + $(SHELL) ./config.status glib/glibconfig.h + $(AM_V_GEN) cd $(top_builddir) && \ + $(SHELL) ./config.status glib/glibconfig.h.win32 + @touch glibconfig-stamp + +install-ms-lib: + $(install_ms_lib_cmd) + +uninstall-ms-lib: + $(uninstall_ms_lib_cmd) + +# This is read by gobject-introspection/misc/ and gtk-doc +glib-public-headers.txt: Makefile + $(AM_V_GEN) echo $(glibinclude_HEADERS) $(glibsubinclude_HEADERS) > $@.tmp && mv $@.tmp $@ + +all-local: glib-public-headers.txt + +install-data-local: install-ms-lib + @if test -f $(glibincludedir)/glist.h ; then \ + echo "*** Old headers found in $(glibincludedir). You should remove the" ; \ + echo "*** contents of this directory and type 'make install' again." ; \ + false ; \ + fi + +uninstall-local: uninstall-ms-lib uninstall-gdb + +@ENABLE_DTRACE_TRUE@glib_probes.h: glib_probes.d +@ENABLE_DTRACE_TRUE@ $(AM_V_GEN) $(DTRACE) -C -h -s $< -o $@.tmp +@ENABLE_DTRACE_TRUE@ @$(SED) -e "s,define STAP_HAS_SEMAPHORES 1,undef STAP_HAS_SEMAPHORES," < $@.tmp > $@ && rm -f $@.tmp + +@ENABLE_DTRACE_TRUE@glib_probes.lo: glib_probes.d +@ENABLE_DTRACE_TRUE@ $(AM_V_GEN) env CC="$(DTCOMPILE)" CFLAGS="$(DTCFLAGS)" $(DTRACE) -G -s $< -o $@ + +@ENABLE_SYSTEMTAP_TRUE@$(tapset_DATA): %.stp: %.stp.in Makefile +@ENABLE_SYSTEMTAP_TRUE@ $(AM_V_GEN)$(SED) \ +@ENABLE_SYSTEMTAP_TRUE@ -e 's|[@]ABS_GLIB_RUNTIME_LIBDIR[@]|$(ABS_GLIB_RUNTIME_LIBDIR)|g' \ +@ENABLE_SYSTEMTAP_TRUE@ -e 's|[@]LT_CURRENT[@]|$(LT_CURRENT)|g' \ +@ENABLE_SYSTEMTAP_TRUE@ -e 's|[@]LT_REVISION[@]|$(LT_REVISION)|g' \ +@ENABLE_SYSTEMTAP_TRUE@ $< > $@ + +gspawn-win32-helper-console.c: + echo '#define HELPER_CONSOLE' >$@ + echo '#include "gspawn-win32-helper.c"' >>$@ + +gspawn-win64-helper.c: + echo '#include "gspawn-win32-helper.c"' >$@ + +gspawn-win64-helper-console.c: + echo '#define HELPER_CONSOLE' >$@ + echo '#include "gspawn-win32-helper.c"' >>$@ + +glib-win32-res.o: glib.rc + $(WINDRES) glib.rc $@ + +@OS_UNIX_TRUE@install-exec-hook: +@OS_UNIX_TRUE@ for sf in ${auto_config_binscripts} ; do \ +@OS_UNIX_TRUE@ mv -f "$(DESTDIR)$(bindir)/$$sf" "$(DESTDIR)$(bindir)/$$sf".tmp \ +@OS_UNIX_TRUE@ && sed < "$(DESTDIR)$(bindir)/$$sf".tmp > "$(DESTDIR)$(bindir)/$$sf" \ +@OS_UNIX_TRUE@ -e '1,24s|^ *#@PKGINSTALL_CONFIGVARS_IN24LINES@| ${CONFIGVARS}|' \ +@OS_UNIX_TRUE@ -e '1,1s|#! /usr/bin/env python.*|#!${PYTHON}|' \ +@OS_UNIX_TRUE@ || exit $$? ; \ +@OS_UNIX_TRUE@ chmod a+x $(DESTDIR)$(bindir)/$$sf ; \ +@OS_UNIX_TRUE@ rm -f "$(DESTDIR)$(bindir)/$$sf".tmp ; \ +@OS_UNIX_TRUE@ done + +glib.def: libglib-2.0.la + $(AM_V_GEN) dumpbin.exe -exports .libs/libglib-2.0-0.dll | awk 'BEGIN { print "EXPORTS" } / +[[:digit:]]+ +[[:xdigit:]]+ +[[:xdigit:]]+/{ print $$4 }' > glib.def.tmp && mv glib.def.tmp glib.def + +glib-2.0.lib: libglib-2.0.la glib.def + $(AM_V_GEN) lib.exe -machine:@LIB_EXE_MACHINE_FLAG@ -name:libglib-2.0-$(LT_CURRENT_MINUS_AGE).dll -def:$(builddir)/glib.def -out:$@ + +# +# Creates Visual Studio 2008/2010 projects from items passed in from autotools files +# $(1) - Base Name of the MSVC project files (outputs) +# + +define msvcproj-builder + +$(top_builddir)/build/win32/vs10/$(1).vcxproj: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(top_builddir)/build/win32/vs10/$(1).vcxproj.filters: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(1).sourcefiles: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(1).vs10.sourcefiles: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(1).vs10.sourcefiles.filters: $(top_builddir)/build/win32/vs9/$(1).vcproj + +$(top_builddir)/build/win32/vs9/$(1).vcproj: + -$(RM) $(top_builddir)/build/win32/vs9/$(1).vcproj + -$(RM) $(top_builddir)/build/win32/vs10/$(1).vcxproj + -$(RM) $(top_builddir)/build/win32/vs10/$(1).vcxproj.filters + + for F in $(_proj_files); do \ + case $$$$F in \ + $(_proj_filters)) \ + ;; \ + *.c|*.cpp|*.cc|*.cxx) \ + echo ' ' >>$(1).sourcefiles && \ + echo ' ' >>$(1).vs10.sourcefiles && \ + echo ' Source Files' >>$(1).vs10.sourcefiles.filters \ + ;; \ + esac; \ + done + + $(CPP) -P - <$(top_srcdir)/build/win32/vs9/$(1).vcprojin >$(top_builddir)/build/win32/vs9/$(1).vcproj + $(CPP) -P - <$(top_srcdir)/build/win32/vs10/$(1).vcxprojin >$(top_builddir)/build/win32/vs10/$(1).vcxproj + $(CPP) -P - <$(top_srcdir)/build/win32/vs10/$(1).vcxproj.filtersin >$(top_builddir)/build/win32/vs10/$(1).vcxproj.filters + $(RM) $(1).sourcefiles + $(RM) $(1).vs10.sourcefiles + $(RM) $(1).vs10.sourcefiles.filters + +$(top_builddir)/build/win32/vs10/$(1).vs10.headers: $(top_builddir)/build/win32/vs9/$(1).headers + +$(top_builddir)/build/win32/vs9/$(1).headers: + -$(RM) $(top_builddir)/build/win32/vs9/$(1).headers + -$(RM) $(top_builddir)/build/win32/vs10/$(1).vs10.headers + + for F in $(_proj_headers); do \ + case $$$$F in \ + $(_proj_headers_excludes)) \ + ;; \ + *.h|*.hpp|*.hh|*.hxx) \ + echo 'copy ..\..\..'$(_proj_subdir)$$$$F' $$$$(CopyDir)\include'$(_headers_destdir)'\'$$$$F' ' >>$(top_builddir)/build/win32/vs9/$(1).headers && \ + echo 'copy ..\..\..'$(_proj_subdir)$$$$F' $$$$(CopyDir)\include'$(_headers_destdir)'\'$$$$F >>$(top_builddir)/build/win32/vs10/$(1).vs10.headers \ + ;; \ + esac; \ + done + +endef + +$(foreach proj,$(MSVCPROJS),$(eval $(call msvcproj-builder,$(proj)))) + +dist-hook: $(BUILT_EXTRA_DIST) $(top_builddir)/build/win32/vs9/glib.vcproj $(top_builddir)/build/win32/vs9/glib.headers + files='$(BUILT_EXTRA_DIST)'; \ + for f in $$files; do \ + if test -f $$f; then d=.; else d=$(srcdir); fi; \ + cp $$d/$$f $(distdir) || exit 1; done + +libglib-gdb.py: libglib-gdb.py.in + $(AM_V_GEN) $(SED) -e "s|\@datadir\@|$(datadir)|" $(srcdir)/libglib-gdb.py.in > $(builddir)/libglib-gdb.py + +install-data-hook: libglib-gdb.py + mkdir -p $(DESTDIR)$(datadir)/gdb/auto-load$(ABS_GLIB_RUNTIME_LIBDIR) + $(INSTALL) $(builddir)/libglib-gdb.py $(DESTDIR)$(datadir)/gdb/auto-load$(ABS_GLIB_RUNTIME_LIBDIR)/libglib-2.0.so.0.$(LT_CURRENT).$(LT_REVISION)-gdb.py +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mkdir -p $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mv $(DESTDIR)$(libdir)/libglib-2.0.so.0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mv $(DESTDIR)$(libdir)/libglib-2.0.so.0.$(LT_CURRENT).$(LT_REVISION) $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ rm -f $(DESTDIR)$(libdir)/libglib-2.0.so +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ ln -s $(GLIB_RUNTIME_LIBDIR)/libglib-2.0.so.0.$(LT_CURRENT).$(LT_REVISION) $(DESTDIR)$(libdir)/libglib-2.0.so + +uninstall-gdb: + -rm -r $(DESTDIR)$(datadir)/gdb + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/glib/docs.c b/glib/docs.c index 9169d85..875504a 100644 --- a/glib/docs.c +++ b/glib/docs.c @@ -1423,6 +1423,130 @@ * Returns: @val converted to the opposite byte order */ +/* Bounds-checked integer arithmetic {{{1 */ +/** + * SECTION:checkedmath + * @title: Bounds-checking integer arithmetic + * @short_description: a set of helpers for performing checked integer arithmetic + * + * GLib offers a set of macros for doing additions and multiplications + * of unsigned integers, with checks for overflows. + * + * The helpers all have three arguments. A pointer to the destination + * is always the first argument and the operands to the operation are + * the other two. + * + * Following standard GLib convention, the helpers return %TRUE in case + * of success (ie: no overflow). + * + * The helpers may be macros, normal functions or inlines. They may be + * implemented with inline assembly or compiler intrinsics where + * available. + * + * Since: 2.48 + */ + +/** + * g_uint_checked_add + * @dest: a pointer to the #guint destination + * @a: the #guint left operand + * @b: the #guint right operand + * + * Performs a checked addition of @a and @b, storing the result in + * @dest. + * + * If the operation is successful, %TRUE is returned. If the operation + * overflows then the state of @dest is undefined and %FALSE is + * returned. + * + * Returns: %TRUE if there was no overflow + * Since: 2.48 + */ + +/** + * g_uint_checked_mul + * @dest: a pointer to the #guint destination + * @a: the #guint left operand + * @b: the #guint right operand + * + * Performs a checked multiplication of @a and @b, storing the result in + * @dest. + * + * If the operation is successful, %TRUE is returned. If the operation + * overflows then the state of @dest is undefined and %FALSE is + * returned. + * + * Returns: %TRUE if there was no overflow + * Since: 2.48 + */ + +/** + * g_uint64_checked_add + * @dest: a pointer to the #guint64 destination + * @a: the #guint64 left operand + * @b: the #guint64 right operand + * + * Performs a checked addition of @a and @b, storing the result in + * @dest. + * + * If the operation is successful, %TRUE is returned. If the operation + * overflows then the state of @dest is undefined and %FALSE is + * returned. + * + * Returns: %TRUE if there was no overflow + * Since: 2.48 + */ + +/** + * g_uint64_checked_mul + * @dest: a pointer to the #guint64 destination + * @a: the #guint64 left operand + * @b: the #guint64 right operand + * + * Performs a checked multiplication of @a and @b, storing the result in + * @dest. + * + * If the operation is successful, %TRUE is returned. If the operation + * overflows then the state of @dest is undefined and %FALSE is + * returned. + * + * Returns: %TRUE if there was no overflow + * Since: 2.48 + */ + +/** + * g_size_checked_add + * @dest: a pointer to the #gsize destination + * @a: the #gsize left operand + * @b: the #gsize right operand + * + * Performs a checked addition of @a and @b, storing the result in + * @dest. + * + * If the operation is successful, %TRUE is returned. If the operation + * overflows then the state of @dest is undefined and %FALSE is + * returned. + * + * Returns: %TRUE if there was no overflow + * Since: 2.48 + */ + +/** + * g_size_checked_mul + * @dest: a pointer to the #gsize destination + * @a: the #gsize left operand + * @b: the #gsize right operand + * + * Performs a checked multiplication of @a and @b, storing the result in + * @dest. + * + * If the operation is successful, %TRUE is returned. If the operation + * overflows then the state of @dest is undefined and %FALSE is + * returned. + * + * Returns: %TRUE if there was no overflow + * Since: 2.48 + */ /* Numerical Definitions {{{1 */ /** @@ -1726,16 +1850,15 @@ /** * G_INLINE_FUNC: * - * This macro is used to export function prototypes so they can be linked - * with an external version when no inlining is performed. The file which - * implements the functions should define %G_IMPLEMENTS_INLINES - * before including the headers which contain %G_INLINE_FUNC declarations. - * Since inlining is very compiler-dependent using these macros correctly - * is very difficult. Their use is strongly discouraged. + * This macro used to be used to conditionally define inline functions + * in a compatible way before this feature was supported in all + * compilers. These days, GLib requires inlining support from the + * compiler, so your GLib-using programs can safely assume that the + * "inline" keywork works properly. * - * This macro is often mistaken for a replacement for the inline keyword; - * inline is already declared in a portable manner in the GLib headers - * and can be used normally. + * Never use this macro anymore. Just say "static inline". + * + * Deprecated: 2.48: Use "static inline" instead */ /** @@ -1873,6 +1996,21 @@ */ /** + * G_GNUC_CHECK_VERSION: + * + * Expands to a a check for a compiler with __GNUC__ defined and a version + * greater than or equal to the major and minor numbers provided. For example, + * the following would only match on compilers such as GCC 4.8 or newer. + * + * |[ + * #if G_GNUC_CHECK_VERSION(4, 8) + * #endif + * ]| + * + * Since: 2.42 + */ + +/** * G_GNUC_CONST: * * Expands to the GNU C const function attribute if the compiler is gcc. @@ -2343,8 +2481,10 @@ * { * g_auto(GQueue) queue = G_QUEUE_INIT; * g_auto(GVariantBuilder) builder; + * g_auto(GStrv) strv; * * g_variant_builder_init (&builder, G_VARIANT_TYPE_VARDICT); + * strv = g_strsplit("a:b:c", ":", -1); * * ... * @@ -2357,7 +2497,7 @@ * } * ]| * - * You must initialise the variable in some way -- either by use of an + * You must initialize the variable in some way -- either by use of an * initialiser or by ensuring that an _init function will be called on * it unconditionally before it goes out of scope. * @@ -2393,9 +2533,8 @@ * gboolean * check_exists(GVariant *dict) * { - * g_autoptr(GVariant) dirname; - * g_autoptr(GVariant) basename = NULL; - * g_autoptr(gchar) path = NULL; + * g_autoptr(GVariant) dirname, basename = NULL; + * g_autofree gchar *path = NULL; * * dirname = g_variant_lookup_value (dict, "dirname", G_VARIANT_TYPE_STRING); * @@ -2419,6 +2558,8 @@ * initialiser or by ensuring that it is assigned to unconditionally * before it goes out of scope. * + * See also g_auto(), g_autofree() and g_steal_pointer(). + * * Since: 2.44 */ diff --git a/glib/garray.c b/glib/garray.c index 8a94720..727c102 100644 --- a/glib/garray.c +++ b/glib/garray.c @@ -385,7 +385,7 @@ array_free (GRealArray *array, /** * g_array_append_vals: * @array: a #GArray - * @data: a pointer to the elements to append to the end of the array + * @data: (not nullable): a pointer to the elements to append to the end of the array * @len: the number of elements to append * * Adds @len elements onto the end of the array. @@ -430,7 +430,7 @@ g_array_append_vals (GArray *farray, /** * g_array_prepend_vals: * @array: a #GArray - * @data: a pointer to the elements to prepend to the start of the array + * @data: (not nullable): a pointer to the elements to prepend to the start of the array * @len: the number of elements to prepend * * Adds @len elements onto the start of the array. @@ -486,7 +486,7 @@ g_array_prepend_vals (GArray *farray, * g_array_insert_vals: * @array: a #GArray * @index_: the index to place the elements at - * @data: a pointer to the elements to insert + * @data: (not nullable): a pointer to the elements to insert * @len: the number of elements to insert * * Inserts @len elements into a #GArray at the given index. @@ -666,7 +666,7 @@ g_array_remove_range (GArray *farray, GRealArray *array = (GRealArray*) farray; g_return_val_if_fail (array, NULL); - g_return_val_if_fail (index_ < array->len, NULL); + g_return_val_if_fail (index_ <= array->len, NULL); g_return_val_if_fail (index_ + length <= array->len, NULL); if (array->clear_func != NULL) @@ -1263,7 +1263,7 @@ g_ptr_array_remove_range (GPtrArray *array, guint n; g_return_val_if_fail (rarray != NULL, NULL); - g_return_val_if_fail (index_ < rarray->len, NULL); + g_return_val_if_fail (index_ <= rarray->len, NULL); g_return_val_if_fail (index_ + length <= rarray->len, NULL); if (rarray->element_free_func != NULL) @@ -1813,7 +1813,7 @@ g_byte_array_remove_range (GByteArray *array, guint length) { g_return_val_if_fail (array, NULL); - g_return_val_if_fail (index_ < array->len, NULL); + g_return_val_if_fail (index_ <= array->len, NULL); g_return_val_if_fail (index_ + length <= array->len, NULL); return (GByteArray *)g_array_remove_range ((GArray *)array, index_, length); diff --git a/glib/gasyncqueue.c b/glib/gasyncqueue.c index 8ed66ab..aff2f02 100644 --- a/glib/gasyncqueue.c +++ b/glib/gasyncqueue.c @@ -785,6 +785,106 @@ g_async_queue_sort_unlocked (GAsyncQueue *queue, &sd); } +/** + * g_async_queue_remove: + * @queue: a #GAsyncQueue + * @item: the data to remove from the @queue + * + * Remove an item from the queue. + * + * Returns: %TRUE if the item was removed + * + * Since: 2.46 + */ +gboolean +g_async_queue_remove (GAsyncQueue *queue, + gpointer item) +{ + gboolean ret; + + g_return_val_if_fail (queue != NULL, FALSE); + g_return_val_if_fail (item != NULL, FALSE); + + g_mutex_lock (&queue->mutex); + ret = g_async_queue_remove_unlocked (queue, item); + g_mutex_unlock (&queue->mutex); + + return ret; +} + +/** + * g_async_queue_remove_unlocked: + * @queue: a #GAsyncQueue + * @item: the data to remove from the @queue + * + * Remove an item from the queue. + * + * This function must be called while holding the @queue's lock. + * + * Returns: %TRUE if the item was removed + * + * Since: 2.46 + */ +gboolean +g_async_queue_remove_unlocked (GAsyncQueue *queue, + gpointer item) +{ + g_return_val_if_fail (queue != NULL, FALSE); + g_return_val_if_fail (item != NULL, FALSE); + + return g_queue_remove (&queue->queue, item); +} + +/** + * g_async_queue_push_front: + * @queue: a #GAsyncQueue + * @item: data to push into the @queue + * + * Pushes the @item into the @queue. @item must not be %NULL. + * In contrast to g_async_queue_push(), this function + * pushes the new item ahead of the items already in the queue, + * so that it will be the next one to be popped off the queue. + * + * Since: 2.46 + */ +void +g_async_queue_push_front (GAsyncQueue *queue, + gpointer item) +{ + g_return_if_fail (queue != NULL); + g_return_if_fail (item != NULL); + + g_mutex_lock (&queue->mutex); + g_async_queue_push_front_unlocked (queue, item); + g_mutex_unlock (&queue->mutex); +} + +/** + * g_async_queue_push_front_unlocked: + * @queue: a #GAsyncQueue + * @item: data to push into the @queue + * + * Pushes the @item into the @queue. @item must not be %NULL. + * In contrast to g_async_queue_push_unlocked(), this function + * pushes the new item ahead of the items already in the queue, + * so that it will be the next one to be popped off the queue. + * + * This function must be called while holding the @queue's lock. + * + * Since: 2.46 + */ +void +g_async_queue_push_front_unlocked (GAsyncQueue *queue, + gpointer item) +{ + g_return_if_fail (queue != NULL); + g_return_if_fail (item != NULL); + + g_queue_push_tail (&queue->queue, item); + if (queue->waiting_threads > 0) + g_cond_signal (&queue->cond); +} + /* * Private API */ diff --git a/glib/gasyncqueue.h b/glib/gasyncqueue.h index fa9565f..0c71e14 100644 --- a/glib/gasyncqueue.h +++ b/glib/gasyncqueue.h @@ -97,6 +97,19 @@ void g_async_queue_sort_unlocked (GAsyncQueue *queue, GCompareDataFunc func, gpointer user_data); +GLIB_AVAILABLE_IN_2_46 +gboolean g_async_queue_remove (GAsyncQueue *queue, + gpointer item); +GLIB_AVAILABLE_IN_2_46 +gboolean g_async_queue_remove_unlocked (GAsyncQueue *queue, + gpointer item); +GLIB_AVAILABLE_IN_2_46 +void g_async_queue_push_front (GAsyncQueue *queue, + gpointer item); +GLIB_AVAILABLE_IN_2_46 +void g_async_queue_push_front_unlocked (GAsyncQueue *queue, + gpointer item); + GLIB_DEPRECATED_FOR(g_async_queue_timeout_pop) gpointer g_async_queue_timed_pop (GAsyncQueue *queue, GTimeVal *end_time); diff --git a/glib/gatomic.c b/glib/gatomic.c index 30a5c5d..e70e809 100644 --- a/glib/gatomic.c +++ b/glib/gatomic.c @@ -58,7 +58,8 @@ * fall outside of simple reference counting patterns are prone to * subtle bugs and occasionally undefined behaviour. It is also worth * noting that since all of these operations require global - * synchronisation of the entire machine, they can be quite slow. In * the case of performing multiple atomic operations it can often be + * synchronisation of the entire machine, they can be quite slow. In + * the case of performing multiple atomic operations it can often be * faster to simply acquire a mutex lock around the critical area, * perform the operations normally and then release the lock. **/ @@ -300,7 +301,7 @@ guint /** * g_atomic_pointer_get: - * @atomic: a pointer to a #gpointer-sized value + * @atomic: (not nullable): a pointer to a #gpointer-sized value * * Gets the current value of @atomic. * @@ -319,7 +320,7 @@ gpointer /** * g_atomic_pointer_set: - * @atomic: a pointer to a #gpointer-sized value + * @atomic: (not nullable): a pointer to a #gpointer-sized value * @newval: a new value to store * * Sets the value of @atomic to @newval. @@ -338,7 +339,7 @@ void /** * g_atomic_pointer_compare_and_exchange: - * @atomic: a pointer to a #gpointer-sized value + * @atomic: (not nullable): a pointer to a #gpointer-sized value * @oldval: the value to compare with * @newval: the value to conditionally replace with * @@ -367,7 +368,7 @@ gboolean /** * g_atomic_pointer_add: - * @atomic: a pointer to a #gpointer-sized value + * @atomic: (not nullable): a pointer to a #gpointer-sized value * @val: the value to add * * Atomically adds @val to the value of @atomic. @@ -390,7 +391,7 @@ gssize /** * g_atomic_pointer_and: - * @atomic: a pointer to a #gpointer-sized value + * @atomic: (not nullable): a pointer to a #gpointer-sized value * @val: the value to 'and' * * Performs an atomic bitwise 'and' of the value of @atomic and @val, @@ -414,7 +415,7 @@ gsize /** * g_atomic_pointer_or: - * @atomic: a pointer to a #gpointer-sized value + * @atomic: (not nullable): a pointer to a #gpointer-sized value * @val: the value to 'or' * * Performs an atomic bitwise 'or' of the value of @atomic and @val, @@ -438,7 +439,7 @@ gsize /** * g_atomic_pointer_xor: - * @atomic: a pointer to a #gpointer-sized value + * @atomic: (not nullable): a pointer to a #gpointer-sized value * @val: the value to 'xor' * * Performs an atomic bitwise 'xor' of the value of @atomic and @val, diff --git a/glib/gbacktrace.h b/glib/gbacktrace.h index 03b6029..1a4f534 100644 --- a/glib/gbacktrace.h +++ b/glib/gbacktrace.h @@ -55,6 +55,8 @@ void g_on_error_stack_trace (const gchar *prg_name); # 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 +#elif defined (__APPLE__) +# define G_BREAKPOINT() G_STMT_START{ __builtin_trap(); }G_STMT_END #else /* !__i386__ && !__alpha__ */ # define G_BREAKPOINT() G_STMT_START{ raise (SIGTRAP); }G_STMT_END #endif /* __i386__ */ diff --git a/glib/gbitlock.c b/glib/gbitlock.c index b0b5350..d5b4dac 100644 --- a/glib/gbitlock.c +++ b/glib/gbitlock.c @@ -385,7 +385,7 @@ g_futex_int_address (const volatile void *address) /** * g_pointer_bit_lock: - * @address: a pointer to a #gpointer-sized value + * @address: (not nullable): a pointer to a #gpointer-sized value * @lock_bit: a bit value between 0 and 31 * * This is equivalent to g_bit_lock, but working on pointers (or other @@ -454,7 +454,7 @@ void /** * g_pointer_bit_trylock: - * @address: a pointer to a #gpointer-sized value + * @address: (not nullable): a pointer to a #gpointer-sized value * @lock_bit: a bit value between 0 and 31 * * This is equivalent to g_bit_trylock, but working on pointers (or @@ -501,7 +501,7 @@ gboolean /** * g_pointer_bit_unlock: - * @address: a pointer to a #gpointer-sized value + * @address: (not nullable): a pointer to a #gpointer-sized value * @lock_bit: a bit value between 0 and 31 * * This is equivalent to g_bit_unlock, but working on pointers (or other diff --git a/glib/gbytes.c b/glib/gbytes.c index 1520d76..b9ca4eb 100644 --- a/glib/gbytes.c +++ b/glib/gbytes.c @@ -75,7 +75,7 @@ struct _GBytes /** * g_bytes_new: - * @data: (transfer none) (array length=size) (element-type guint8) (allow-none): + * @data: (transfer none) (array length=size) (element-type guint8) (nullable): * the data to be used for the bytes * @size: the size of @data * @@ -98,7 +98,7 @@ g_bytes_new (gconstpointer data, /** * g_bytes_new_take: - * @data: (transfer full) (array length=size) (element-type guint8) (allow-none): + * @data: (transfer full) (array length=size) (element-type guint8) (nullable): the data to be used for the bytes * @size: the size of @data * @@ -129,7 +129,7 @@ g_bytes_new_take (gpointer data, /** * g_bytes_new_static: (skip) - * @data: (transfer full) (array length=size) (element-type guint8) (allow-none): + * @data: (transfer full) (array length=size) (element-type guint8) (nullable): the data to be used for the bytes * @size: the size of @data * @@ -150,8 +150,9 @@ g_bytes_new_static (gconstpointer data, } /** - * g_bytes_new_with_free_func: - * @data: (array length=size) (allow-none): the data to be used for the bytes + * g_bytes_new_with_free_func: (skip) + * @data: (array length=size) (element-type guint8) (nullable): + the data to be used for the bytes * @size: the size of @data * @free_func: the function to call to release the data * @user_data: data to pass to @free_func @@ -223,7 +224,7 @@ g_bytes_new_from_bytes (GBytes *bytes, /** * g_bytes_get_data: * @bytes: a #GBytes - * @size: (out) (allow-none): location to return size of byte data + * @size: (out) (optional): location to return size of byte data * * Get the byte data in the #GBytes. This data should not be modified. * @@ -233,8 +234,8 @@ g_bytes_new_from_bytes (GBytes *bytes, * may represent an empty string with @data non-%NULL and @size as 0. %NULL will * not be returned if @size is non-zero. * - * Returns: (transfer none) (array length=size) (type guint8) (allow-none): a pointer to the - * byte data, or %NULL + * Returns: (transfer none) (array length=size) (element-type guint8) (nullable): + * a pointer to the byte data, or %NULL * * Since: 2.32 */ @@ -290,7 +291,7 @@ g_bytes_ref (GBytes *bytes) /** * g_bytes_unref: - * @bytes: (allow-none): a #GBytes + * @bytes: (nullable): a #GBytes * * Releases a reference on @bytes. This may result in the bytes being * freed. @@ -425,7 +426,7 @@ try_steal_and_unref (GBytes *bytes, /** * g_bytes_unref_to_data: * @bytes: (transfer full): a #GBytes - * @size: location to place the length of the returned data + * @size: (out): location to place the length of the returned data * * Unreferences the bytes, and returns a pointer the same byte data * contents. @@ -435,8 +436,9 @@ try_steal_and_unref (GBytes *bytes, * g_bytes_new_take() or g_byte_array_free_to_bytes(). In all other cases the * data is copied. * - * Returns: (transfer full): a pointer to the same byte data, which should - * be freed with g_free() + * Returns: (transfer full) (array length=size) (element-type guint8) + * (not nullable): a pointer to the same byte data, which should be + * freed with g_free() * * Since: 2.32 */ diff --git a/glib/gconstructor.h b/glib/gconstructor.h index df98f83..dccb031 100644 --- a/glib/gconstructor.h +++ b/glib/gconstructor.h @@ -30,17 +30,43 @@ #define G_HAS_CONSTRUCTORS 1 -#define G_DEFINE_CONSTRUCTOR(_func) \ +/* We do some weird things to avoid the constructors being optimized + * away on VS2015 if WholeProgramOptimization is enabled. First we + * make a reference to the array from the wrapper to make sure its + * references. Then we use a pragma to make sure the wrapper function + * symbol is always included at the link stage. Also, the symbols + * need to be extern (but not dllexport), even though they are not + * really used from another object file. + */ + +/* We need to account for differences between the mangling of symbols + * for Win32 (x86) and x64 programs, as symbols on Win32 are prefixed + * with an underscore but symbols on x64 are not. + */ +#ifdef _WIN64 +#define G_MSVC_SYMBOL_PREFIX "" +#else +#define G_MSVC_SYMBOL_PREFIX "_" +#endif + +#define G_DEFINE_CONSTRUCTOR(_func) G_MSVC_CTOR (_func, G_MSVC_SYMBOL_PREFIX) +#define G_DEFINE_DESTRUCTOR(_func) G_MSVC_DTOR (_func, G_MSVC_SYMBOL_PREFIX) + +#define G_MSVC_CTOR(_func,_sym_prefix) \ static void _func(void); \ - static int _func ## _wrapper(void) { _func(); return 0; } \ + extern int (* _array ## _func)(void); \ + int _func ## _wrapper(void) { _func(); g_slist_find (NULL, _array ## _func); return 0; } \ + __pragma(comment(linker,"/include:" _sym_prefix # _func "_wrapper")) \ __pragma(section(".CRT$XCU",read)) \ - __declspec(allocate(".CRT$XCU")) static int (* _array ## _func)(void) = _func ## _wrapper; + __declspec(allocate(".CRT$XCU")) int (* _array ## _func)(void) = _func ## _wrapper; -#define G_DEFINE_DESTRUCTOR(_func) \ +#define G_MSVC_DTOR(_func,_sym_prefix) \ static void _func(void); \ - static int _func ## _constructor(void) { atexit (_func); return 0; } \ + extern int (* _array ## _func)(void); \ + int _func ## _constructor(void) { atexit (_func); g_slist_find (NULL, _array ## _func); return 0; } \ + __pragma(comment(linker,"/include:" _sym_prefix # _func "_constructor")) \ __pragma(section(".CRT$XCU",read)) \ - __declspec(allocate(".CRT$XCU")) static int (* _array ## _func)(void) = _func ## _constructor; + __declspec(allocate(".CRT$XCU")) int (* _array ## _func)(void) = _func ## _constructor; #elif defined (_MSC_VER) diff --git a/glib/gconvert.c b/glib/gconvert.c index 1d55fda..11841c5 100644 --- a/glib/gconvert.c +++ b/glib/gconvert.c @@ -872,7 +872,7 @@ strdup_len (const gchar *string, * nul-terminated (Note that some encodings may allow nul * bytes to occur inside strings. In that case, using -1 * for the @len parameter is unsafe) - * @bytes_read: location to store the number of bytes in the + * @bytes_read: (out) (optional): location to store the number of bytes in the * input string that were successfully converted, or %NULL. * Even if the conversion was successful, this may be * less than @len if there were partial characters @@ -880,8 +880,8 @@ strdup_len (const gchar *string, * #G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value * stored will the byte offset after the last valid * input sequence. - * @bytes_written: the number of bytes stored in the output buffer (not - * including the terminating nul). + * @bytes_written: (out) (optional): the number of bytes stored in the output + * buffer (not including the terminating nul). * @error: location to store the error occurring, or %NULL to ignore * errors. Any of the errors in #GConvertError may occur. * @@ -915,7 +915,7 @@ g_locale_to_utf8 (const gchar *opsysstring, * nul-terminated (Note that some encodings may allow nul * bytes to occur inside strings. In that case, using -1 * for the @len parameter is unsafe) - * @bytes_read: location to store the number of bytes in the + * @bytes_read: (out) (optional): location to store the number of bytes in the * input string that were successfully converted, or %NULL. * Even if the conversion was successful, this may be * less than @len if there were partial characters @@ -923,8 +923,8 @@ g_locale_to_utf8 (const gchar *opsysstring, * #G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value * stored will the byte offset after the last valid * input sequence. - * @bytes_written: the number of bytes stored in the output buffer (not - * including the terminating nul). + * @bytes_written: (out) (optional): the number of bytes stored in the output + * buffer (not including the terminating nul). * @error: location to store the error occurring, or %NULL to ignore * errors. Any of the errors in #GConvertError may occur. * @@ -1119,7 +1119,7 @@ get_filename_charset (const gchar **filename_charset) * nul-terminated (Note that some encodings may allow nul * bytes to occur inside strings. In that case, using -1 * for the @len parameter is unsafe) - * @bytes_read: location to store the number of bytes in the + * @bytes_read: (out) (optional): location to store the number of bytes in the * input string that were successfully converted, or %NULL. * Even if the conversion was successful, this may be * less than @len if there were partial characters @@ -1127,8 +1127,8 @@ get_filename_charset (const gchar **filename_charset) * #G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value * stored will the byte offset after the last valid * input sequence. - * @bytes_written: the number of bytes stored in the output buffer (not - * including the terminating nul). + * @bytes_written: (out) (optional): the number of bytes stored in the output + * buffer (not including the terminating nul). * @error: location to store the error occurring, or %NULL to ignore * errors. Any of the errors in #GConvertError may occur. * @@ -1191,7 +1191,7 @@ g_filename_to_utf8 (const gchar *opsysstring, * @utf8string: a UTF-8 encoded string. * @len: the length of the string, or -1 if the string is * nul-terminated. - * @bytes_read: (out) (allow-none): location to store the number of bytes in + * @bytes_read: (out) (optional): location to store the number of bytes in * the input string that were successfully converted, or %NULL. * Even if the conversion was successful, this may be * less than @len if there were partial characters @@ -1530,7 +1530,8 @@ hostname_validate (const char *hostname) /** * g_filename_from_uri: * @uri: a uri describing a filename (escaped, encoded in ASCII). - * @hostname: (out) (allow-none): Location to store hostname for the URI, or %NULL. + * @hostname: (out) (optional) (nullable): Location to store hostname for the + * URI. * If there is no hostname in the URI, %NULL will be * stored in this location. * @error: location to store the error occurring, or %NULL to ignore diff --git a/glib/gdataset.c b/glib/gdataset.c index 4c02d36..4f00d99 100644 --- a/glib/gdataset.c +++ b/glib/gdataset.c @@ -318,7 +318,7 @@ g_dataset_destroy_internal (GDataset *dataset) /** * g_dataset_destroy: - * @dataset_location: the location identifying the dataset. + * @dataset_location: (not nullable): the location identifying the dataset. * * Destroys the dataset, freeing all memory allocated, and calling any * destroy functions set for data elements. @@ -487,7 +487,7 @@ g_data_set_internal (GData **datalist, /** * g_dataset_id_set_data_full: - * @dataset_location: the location identifying the dataset. + * @dataset_location: (not nullable): the location identifying the dataset. * @key_id: the #GQuark id to identify the data element. * @data: the data element. * @destroy_func: the function to call when the data element is @@ -672,7 +672,7 @@ g_datalist_id_set_data_full (GData **datalist, /** * g_dataset_id_remove_no_notify: - * @dataset_location: the location identifying the dataset. + * @dataset_location: (not nullable): the location identifying the dataset. * @key_id: the #GQuark ID identifying the data element. * * Removes an element, without calling its destroy notification @@ -742,7 +742,7 @@ g_datalist_id_remove_no_notify (GData **datalist, /** * g_dataset_id_get_data: - * @dataset_location: the location identifying the dataset. + * @dataset_location: (not nullable): the location identifying the dataset. * @key_id: the #GQuark id to identify the data element. * * Gets the data element corresponding to a #GQuark. @@ -849,16 +849,14 @@ g_datalist_id_dup_data (GData **datalist, GData *d; GDataElt *data, *data_end; - g_return_val_if_fail (datalist != NULL, NULL); - g_datalist_lock (datalist); d = G_DATALIST_GET_POINTER (datalist); if (d) { data = d->data; - data_end = data + d->len - 1; - while (data <= data_end) + data_end = data + d->len; + do { if (data->key == key_id) { @@ -867,6 +865,7 @@ g_datalist_id_dup_data (GData **datalist, } data++; } + while (data < data_end); } if (dup_func) @@ -1055,7 +1054,7 @@ g_datalist_get_data (GData **datalist, /** * g_dataset_foreach: - * @dataset_location: the location identifying the dataset. + * @dataset_location: (not nullable): the location identifying the dataset. * @func: the function to call for each data element. * @user_data: user data to pass to the function. * diff --git a/glib/gdate.c b/glib/gdate.c index 670f7aa..92c34d2 100644 --- a/glib/gdate.c +++ b/glib/gdate.c @@ -698,8 +698,8 @@ g_date_get_day_of_year (const GDate *d) * @date: a #GDate * * Returns the week of the year, where weeks are understood to start on - * Monday. If the date is before the first Monday of the year, return - * 0. The date must be valid. + * Monday. If the date is before the first Monday of the year, return 0. + * The date must be valid. * * Returns: week of the year */ @@ -731,9 +731,9 @@ g_date_get_monday_week_of_year (const GDate *d) * g_date_get_sunday_week_of_year: * @date: a #GDate * - * Returns the week of the year during which this date falls, if weeks - * are understood to being on Sunday. The date must be valid. Can return - * 0 if the day is before the first Sunday of the year. + * Returns the week of the year during which this date falls, if + * weeks are understood to being on Sunday. The date must be valid. + * Can return 0 if the day is before the first Sunday of the year. * * Returns: week number */ @@ -1938,7 +1938,7 @@ g_date_compare (const GDate *lhs, /** * g_date_to_struct_tm: * @date: a #GDate to set the struct tm from - * @tm: struct tm to fill + * @tm: (not nullable): struct tm to fill * * Fills in the date-related bits of a struct tm using the @date value. * Initializes the non-date parts with something sane but meaningless. @@ -2439,6 +2439,9 @@ win32_strftime_helper (const GDate *d, * * Returns: number of characters written to the buffer, or 0 the buffer was too small */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wformat-nonliteral" + gsize g_date_strftime (gchar *s, gsize slen, @@ -2549,3 +2552,5 @@ g_date_strftime (gchar *s, return retval; #endif } + +#pragma GCC diagnostic pop diff --git a/glib/gdatetime.c b/glib/gdatetime.c index a4e2e6e..ebc4837 100644 --- a/glib/gdatetime.c +++ b/glib/gdatetime.c @@ -1363,8 +1363,8 @@ g_date_time_add_full (GDateTime *datetime, /* Compare, difference, hash, equal {{{1 */ /** * g_date_time_compare: - * @dt1: first #GDateTime to compare - * @dt2: second #GDateTime to compare + * @dt1: (not nullable): first #GDateTime to compare + * @dt2: (not nullable): second #GDateTime to compare * * A comparison function for #GDateTimes that is suitable * as a #GCompareFunc. Both #GDateTimes must be non-%NULL. @@ -1419,7 +1419,7 @@ g_date_time_difference (GDateTime *end, /** * g_date_time_hash: - * @datetime: a #GDateTime + * @datetime: (not nullable): a #GDateTime * * Hashes @datetime into a #guint, suitable for use within #GHashTable. * @@ -1435,8 +1435,8 @@ g_date_time_hash (gconstpointer datetime) /** * g_date_time_equal: - * @dt1: a #GDateTime - * @dt2: a #GDateTime + * @dt1: (not nullable): a #GDateTime + * @dt2: (not nullable): a #GDateTime * * Checks to see if @dt1 and @dt2 are equal. * @@ -2546,7 +2546,7 @@ g_date_time_format_locale (GDateTime *datetime, * - \%A: the full weekday name according to the current locale * - \%b: the abbreviated month name according to the current locale * - \%B: the full month name according to the current locale - * - \%c: the preferred date and time rpresentation for the current locale + * - \%c: the preferred date and time representation for the current locale * - \%C: the century number (year/100) as a 2-digit integer (00-99) * - \%d: the day of the month as a decimal number (range 01 to 31) * - \%e: the day of the month as a decimal number (range 1 to 31) diff --git a/glib/genviron.c b/glib/genviron.c index 0a83ac9..8c64cda 100644 --- a/glib/genviron.c +++ b/glib/genviron.c @@ -70,8 +70,7 @@ g_environ_find (gchar **envp, * @envp: (allow-none) (array zero-terminated=1) (transfer none): an environment * list (eg, as returned from g_get_environ()), or %NULL * for an empty environment list - * @variable: the environment variable to get, in the GLib file name - * encoding + * @variable: the environment variable to get * * Returns the value of the environment variable @variable in the * provided list @envp. @@ -218,14 +217,13 @@ g_environ_unsetenv (gchar **envp, /** * g_getenv: - * @variable: the environment variable to get, in the GLib file name - * encoding + * @variable: the environment variable to get * * Returns the value of an environment variable. * - * The name and value are in the GLib file name encoding. On UNIX, - * this means the actual bytes which might or might not be in some - * consistent character set and encoding. On Windows, it is in UTF-8. + * On UNIX, the name and value are byte strings which might or might not + * be in some consistent character set and encoding. On Windows, they are + * in UTF-8. * On Windows, in case the environment variable's value contains * references to other environment variables, they are expanded. * @@ -248,10 +246,9 @@ g_getenv (const gchar *variable) * @value: the value for to set the variable to. * @overwrite: whether to change the variable if it already exists. * - * Sets an environment variable. Both the variable's name and value - * should be in the GLib file name encoding. On UNIX, this means that - * they can be arbitrary byte strings. On Windows, they should be in - * UTF-8. + * Sets an environment variable. On UNIX, both the variable's name and + * value can be arbitrary byte strings, except that the variable's name + * cannot contain '='. On Windows, they should be in UTF-8. * * Note that on some systems, when variables are overwritten, the memory * used for the previous variables and its value isn't reclaimed. diff --git a/glib/gerror.c b/glib/gerror.c index 958f776..380382b 100644 --- a/glib/gerror.c +++ b/glib/gerror.c @@ -30,10 +30,12 @@ * GLib provides a standard method of reporting errors from a called * function to the calling code. (This is the same problem solved by * exceptions in other languages.) It's important to understand that - * this method is both a data type (the #GError struct) and a set of - * rules. If you use #GError incorrectly, then your code will not + * this method is both a data type (the #GError struct) and a [set of + * rules][gerror-rules]. If you use #GError incorrectly, then your code will not * properly interoperate with other code that uses #GError, and users - * of your API will probably get confused. + * of your API will probably get confused. In most cases, [using #GError is + * preferred over numeric error codes][gerror-comparison], but there are + * situations where numeric error codes are useful for performance. * * First and foremost: #GError should only be used to report recoverable * runtime errors, never to report programming errors. If the programmer @@ -279,6 +281,29 @@ * instead treat any unrecognized error code as equivalent to * FAILED. * + * ## Comparison of #GError and traditional error handling # {#gerror-comparison} + * + * #GError has several advantages over traditional numeric error codes: + * importantly, tools like + * [gobject-introspection](https://developer.gnome.org/gi/stable/) understand + * #GErrors and convert them to exceptions in bindings; the message includes + * more information than just a code; and use of a domain helps prevent + * misinterpretation of error codes. + * + * #GError has disadvantages though: it requires a memory allocation, and + * formatting the error message string has a performance overhead. This makes it + * unsuitable for use in retry loops where errors are a common case, rather than + * being unusual. For example, using %G_IO_ERROR_WOULD_BLOCK means hitting these + * overheads in the normal control flow. String formatting overhead can be + * eliminated by using g_set_error_literal() in some cases. + * + * These performance issues can be compounded if a function wraps the #GErrors + * returned by the functions it calls: this multiplies the number of allocations + * and string formatting operations. This can be partially mitigated by using + * g_prefix_error(). + * + * ## Rules for use of #GError # {#gerror-rules} + * * Summary of rules for use of #GError: * * - Do not report programming errors via #GError. @@ -316,22 +341,19 @@ * g_set_error() will complain if you pile up errors. * * - By convention, if you return a boolean value indicating success - * then %TRUE means success and %FALSE means failure. - * Avoid creating functions which have a boolean - * return value and a GError parameter, but where the boolean does - * something other than signal whether the GError is set. Among other - * problems, it requires C callers to allocate a temporary error. Instead, - * provide a "gboolean *" out parameter. There are functions in GLib - * itself such as g_key_file_has_key() that are deprecated because of this. - * - * If %FALSE is - * returned, the error must be set to a non-%NULL value. - * One exception to this is that in situations that are - * already considered to be undefined behaviour (such as when a + * then %TRUE means success and %FALSE means failure. Avoid creating + * functions which have a boolean return value and a GError parameter, + * but where the boolean does something other than signal whether the + * GError is set. Among other problems, it requires C callers to allocate + * a temporary error. Instead, provide a "gboolean *" out parameter. + * There are functions in GLib itself such as g_key_file_has_key() that + * are deprecated because of this. If %FALSE is returned, the error must + * be set to a non-%NULL value. One exception to this is that in situations + * that are already considered to be undefined behaviour (such as when a * g_return_val_if_fail() check fails), the error need not be set. * Instead of checking separately whether the error is set, callers * should ensure that they do not provoke undefined behaviour, then - * assume that the error will be set on failure. + * assume that the error will be set on failure. * * - A %NULL return value is also frequently used to mean that an error * occurred. You should make clear in your documentation whether %NULL @@ -500,7 +522,7 @@ g_error_copy (const GError *error) /** * g_error_matches: - * @error: (allow-none): a #GError or %NULL + * @error: (nullable): a #GError * @domain: an error domain * @code: an error code * @@ -511,7 +533,7 @@ g_error_copy (const GError *error) * If @domain contains a `FAILED` (or otherwise generic) error code, * you should generally not check for it explicitly, but should * instead treat any not-explicitly-recognized error code as being - * equilalent to the `FAILED` code. This way, if the domain is + * equivalent to the `FAILED` code. This way, if the domain is * extended in the future to provide a more specific error code for * a certain case, your code will still work. * @@ -533,7 +555,7 @@ g_error_matches (const GError *error, /** * g_set_error: - * @err: (allow-none): a return location for a #GError, or %NULL + * @err: (out callee-allocates) (optional): a return location for a #GError * @domain: error domain * @code: error code * @format: printf()-style format @@ -571,7 +593,7 @@ g_set_error (GError **err, /** * g_set_error_literal: - * @err: (allow-none): a return location for a #GError, or %NULL + * @err: (out callee-allocates) (optional): a return location for a #GError * @domain: error domain * @code: error code * @message: error message @@ -601,12 +623,14 @@ g_set_error_literal (GError **err, /** * g_propagate_error: - * @dest: error return location - * @src: error to move into the return location + * @dest: (out callee-allocates) (optional) (nullable): error return location + * @src: (transfer full): error to move into the return location * * If @dest is %NULL, free @src; otherwise, moves @src into *@dest. * The error variable @dest points to must be %NULL. * + * @src must be non-%NULL. + * * Note that @src is no longer valid after this call. If you want * to keep using the same GError*, you need to set it to %NULL * after calling this function on it. @@ -639,7 +663,7 @@ g_propagate_error (GError **dest, * g_clear_error: * @err: a #GError return location * - * If @err is %NULL, does nothing. If @err is non-%NULL, + * If @err or *@err is %NULL, does nothing. Otherwise, * calls g_error_free() on *@err and sets *@err to %NULL. */ void @@ -670,7 +694,7 @@ g_error_add_prefix (gchar **string, /** * g_prefix_error: - * @err: (allow-none): a return location for a #GError, or %NULL + * @err: (inout) (optional) (nullable): a return location for a #GError * @format: printf()-style format string * @...: arguments to @format * diff --git a/glib/ghash.c b/glib/ghash.c index 78d7f38..3edba87 100644 --- a/glib/ghash.c +++ b/glib/ghash.c @@ -679,10 +679,10 @@ g_hash_table_new (GHashFunc hash_func, * g_hash_table_new_full: * @hash_func: a function to create a hash value from a key * @key_equal_func: a function to check two keys for equality - * @key_destroy_func: (allow-none): a function to free the memory allocated for the key + * @key_destroy_func: (nullable): a function to free the memory allocated for the key * used when removing the entry from the #GHashTable, or %NULL * if you don't want to supply such a function. - * @value_destroy_func: (allow-none): a function to free the memory allocated for the + * @value_destroy_func: (nullable): a function to free the memory allocated for the * value used when removing the entry from the #GHashTable, or %NULL * if you don't want to supply such a function. * @@ -767,8 +767,8 @@ g_hash_table_iter_init (GHashTableIter *iter, /** * g_hash_table_iter_next: * @iter: an initialized #GHashTableIter - * @key: (allow-none): a location to store the key, or %NULL - * @value: (allow-none): a location to store the value, or %NULL + * @key: (out) (optional): a location to store the key + * @value: (out) (nullable) (optional): a location to store the value * * Advances @iter and retrieves the key and/or value that are now * pointed to as a result of this advancement. If %FALSE is returned, @@ -886,7 +886,7 @@ g_hash_table_iter_remove (GHashTableIter *iter) * @hash_table: our #GHashTable * @node_index: pointer to node to insert/replace * @key_hash: key hash - * @key: (allow-none): key to replace with, or %NULL + * @key: (nullable): key to replace with, or %NULL * @value: value to replace with * @keep_new_key: whether to replace the key in the node with @key * @reusing_key: whether @key was taken out of the existing node @@ -1133,7 +1133,7 @@ g_hash_table_destroy (GHashTable *hash_table) * and has the value %NULL. If you need this distinction, use * g_hash_table_lookup_extended(). * - * Returns: (allow-none): the associated value, or %NULL if the key is not found + * Returns: (nullable): the associated value, or %NULL if the key is not found */ gpointer g_hash_table_lookup (GHashTable *hash_table, @@ -1155,8 +1155,9 @@ g_hash_table_lookup (GHashTable *hash_table, * g_hash_table_lookup_extended: * @hash_table: a #GHashTable * @lookup_key: the key to look up - * @orig_key: (allow-none): return location for the original key, or %NULL - * @value: (allow-none): return location for the value associated with the key, or %NULL + * @orig_key: (out) (optional) (nullable): return location for the original key + * @value: (out) (optional) (nullable): return location for the value associated + * with the key * * Looks up a key in the #GHashTable, returning the original key and the * associated value and a #gboolean which is %TRUE if the key was found. This @@ -1267,7 +1268,7 @@ g_hash_table_insert (GHashTable *hash_table, * If you supplied a @key_destroy_func when creating the * #GHashTable, the old key is freed using that function. * - * Returns: %TRUE of the key did not exist yet + * Returns: %TRUE if the key did not exist yet */ gboolean g_hash_table_replace (GHashTable *hash_table, @@ -1632,7 +1633,7 @@ g_hash_table_foreach (GHashTable *hash_table, * (keep in mind that an O(n) find/foreach operation issued for all n * values in a hash table ends up needing O(n*n) operations). * - * Returns: (allow-none): The value of the first key/value pair is returned, + * Returns: (nullable): The value of the first key/value pair is returned, * for which @predicate evaluates to %TRUE. If no pair with the * requested property is found, %NULL is returned. * @@ -1705,10 +1706,10 @@ g_hash_table_size (GHashTable *hash_table) * To iterate over the entries in a #GHashTable more efficiently, use a * #GHashTableIter. * - * Returns: a #GList containing all the keys inside the hash - * table. The content of the list is owned by the hash table and - * should not be modified or freed. Use g_list_free() when done - * using the list. + * Returns: (transfer container): a #GList containing all the keys + * inside the hash table. The content of the list is owned by the + * hash table and should not be modified or freed. Use g_list_free() + * when done using the list. * * Since: 2.14 */ @@ -1791,10 +1792,10 @@ g_hash_table_get_keys_as_array (GHashTable *hash_table, * To iterate over the entries in a #GHashTable more efficiently, use a * #GHashTableIter. * - * Returns: a #GList containing all the values inside the hash - * table. The content of the list is owned by the hash table and - * should not be modified or freed. Use g_list_free() when done - * using the list. + * Returns: (transfer container): a #GList containing all the values + * inside the hash table. The content of the list is owned by the + * hash table and should not be modified or freed. Use g_list_free() + * when done using the list. * * Since: 2.14 */ @@ -1821,8 +1822,8 @@ g_hash_table_get_values (GHashTable *hash_table) /** * g_str_equal: - * @v1: a key - * @v2: a key to compare with @v1 + * @v1: (not nullable): a key + * @v2: (not nullable): a key to compare with @v1 * * Compares two strings for byte-by-byte equality and returns %TRUE * if they are equal. It can be passed to g_hash_table_new() as the @@ -1847,7 +1848,7 @@ g_str_equal (gconstpointer v1, /** * g_str_hash: - * @v: a string key + * @v: (not nullable): a string key * * Converts a string to a hash value. * @@ -1860,6 +1861,10 @@ g_str_equal (gconstpointer v1, * It can be passed to g_hash_table_new() as the @hash_func parameter, * when using non-%NULL strings as keys in a #GHashTable. * + * Note that this function may not be a perfect fit for all use cases. + * For example, it produces some hash collisions with strings as short + * as 2. + * * Returns: a hash value corresponding to the key */ guint @@ -1876,7 +1881,7 @@ g_str_hash (gconstpointer v) /** * g_direct_hash: - * @v: (allow-none): a #gpointer key + * @v: (nullable): a #gpointer key * * Converts a gpointer to a hash value. * It can be passed to g_hash_table_new() as the @hash_func parameter, @@ -1896,8 +1901,8 @@ g_direct_hash (gconstpointer v) /** * g_direct_equal: - * @v1: (allow-none): a key - * @v2: (allow-none): a key to compare with @v1 + * @v1: (nullable): a key + * @v2: (nullable): a key to compare with @v1 * * Compares two #gpointer arguments and returns %TRUE if they are equal. * It can be passed to g_hash_table_new() as the @key_equal_func @@ -1918,8 +1923,8 @@ g_direct_equal (gconstpointer v1, /** * g_int_equal: - * @v1: a pointer to a #gint key - * @v2: a pointer to a #gint key to compare with @v1 + * @v1: (not nullable): a pointer to a #gint key + * @v2: (not nullable): a pointer to a #gint key to compare with @v1 * * Compares the two #gint values being pointed to and returns * %TRUE if they are equal. @@ -1942,7 +1947,7 @@ g_int_equal (gconstpointer v1, /** * g_int_hash: - * @v: a pointer to a #gint key + * @v: (not nullable): a pointer to a #gint key * * Converts a pointer to a #gint to a hash value. * It can be passed to g_hash_table_new() as the @hash_func parameter, @@ -1962,8 +1967,8 @@ g_int_hash (gconstpointer v) /** * g_int64_equal: - * @v1: a pointer to a #gint64 key - * @v2: a pointer to a #gint64 key to compare with @v1 + * @v1: (not nullable): a pointer to a #gint64 key + * @v2: (not nullable): a pointer to a #gint64 key to compare with @v1 * * Compares the two #gint64 values being pointed to and returns * %TRUE if they are equal. @@ -1984,7 +1989,7 @@ g_int64_equal (gconstpointer v1, /** * g_int64_hash: - * @v: a pointer to a #gint64 key + * @v: (not nullable): a pointer to a #gint64 key * * Converts a pointer to a #gint64 to a hash value. * @@ -2004,8 +2009,8 @@ g_int64_hash (gconstpointer v) /** * g_double_equal: - * @v1: a pointer to a #gdouble key - * @v2: a pointer to a #gdouble key to compare with @v1 + * @v1: (not nullable): a pointer to a #gdouble key + * @v2: (not nullable): a pointer to a #gdouble key to compare with @v1 * * Compares the two #gdouble values being pointed to and returns * %TRUE if they are equal. @@ -2026,7 +2031,7 @@ g_double_equal (gconstpointer v1, /** * g_double_hash: - * @v: a pointer to a #gdouble key + * @v: (not nullable): a pointer to a #gdouble key * * Converts a pointer to a #gdouble to a hash value. * It can be passed to g_hash_table_new() as the @hash_func parameter, diff --git a/glib/ghook.c b/glib/ghook.c index 44a2665..588f451 100644 --- a/glib/ghook.c +++ b/glib/ghook.c @@ -453,7 +453,7 @@ g_hook_prepend (GHookList *hook_list, /** * g_hook_insert_before: * @hook_list: a #GHookList - * @sibling: the #GHook to insert the new #GHook before + * @sibling: (nullable): the #GHook to insert the new #GHook before * @hook: the #GHook to insert * * Inserts a #GHook into a #GHookList, before a given #GHook. @@ -930,7 +930,7 @@ g_hook_find_func (GHookList *hook_list, * @hook_list: a #GHookList * @need_valids: %TRUE if #GHook elements which have been destroyed * should be skipped - * @func: the function to find + * @func: (not nullable): the function to find * @data: the data to find * * Finds a #GHook in a #GHookList with the given function and data. diff --git a/glib/giowin32.c b/glib/giowin32.c index 171fb68..b839e94 100644 --- a/glib/giowin32.c +++ b/glib/giowin32.c @@ -1033,7 +1033,9 @@ g_io_win32_msg_read (GIOChannel *channel, { GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel; MSG msg; /* In case of alignment problems */ - + + *bytes_read = 0; + if (count < sizeof (MSG)) { g_set_error_literal (err, G_IO_CHANNEL_ERROR, G_IO_CHANNEL_ERROR_INVAL, @@ -1062,7 +1064,9 @@ g_io_win32_msg_write (GIOChannel *channel, { GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel; MSG msg; - + + *bytes_written = 0; + if (count != sizeof (MSG)) { g_set_error_literal (err, G_IO_CHANNEL_ERROR, G_IO_CHANNEL_ERROR_INVAL, diff --git a/glib/gkeyfile.c b/glib/gkeyfile.c index b1383b0..4b25fd7 100644 --- a/glib/gkeyfile.c +++ b/glib/gkeyfile.c @@ -970,6 +970,7 @@ g_key_file_load_from_dirs (GKeyFile *key_file, while (*data_dirs != NULL && !found_file) { g_free (output_path); + output_path = NULL; fd = find_file_in_data_dirs (file, data_dirs, &output_path, &key_file_error); @@ -1546,7 +1547,7 @@ g_key_file_get_keys (GKeyFile *key_file, g_set_error (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_GROUP_NOT_FOUND, _("Key file does not have group '%s'"), - group_name ? group_name : "(null)"); + group_name); return NULL; } @@ -1719,7 +1720,7 @@ g_key_file_get_value (GKeyFile *key_file, g_set_error (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_GROUP_NOT_FOUND, _("Key file does not have group '%s'"), - group_name ? group_name : "(null)"); + group_name); return NULL; } @@ -3230,10 +3231,14 @@ g_key_file_set_top_comment (GKeyFile *key_file, * @error: return location for a #GError * * Places a comment above @key from @group_name. - * If @key is %NULL then @comment will be written above @group_name. - * If both @key and @group_name are %NULL, then @comment will be + * + * If @key is %NULL then @comment will be written above @group_name. + * If both @key and @group_name are %NULL, then @comment will be * written above the first group in the file. * + * Note that this function prepends a '#' comment marker to + * each line of @comment. + * * Returns: %TRUE if the comment was written, %FALSE otherwise * * Since: 2.6 @@ -3456,10 +3461,12 @@ g_key_file_get_top_comment (GKeyFile *key_file, * @error: return location for a #GError * * Retrieves a comment above @key from @group_name. - * If @key is %NULL then @comment will be read from above - * @group_name. If both @key and @group_name are %NULL, then + * If @key is %NULL then @comment will be read from above + * @group_name. If both @key and @group_name are %NULL, then * @comment will be read from above the first group in the file. * + * Note that the returned string includes the '#' comment markers. + * * Returns: a comment that should be freed with g_free() * * Since: 2.6 @@ -3558,7 +3565,7 @@ g_key_file_has_key_full (GKeyFile *key_file, g_set_error (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_GROUP_NOT_FOUND, _("Key file does not have group '%s'"), - group_name ? group_name : "(null)"); + group_name); return FALSE; } @@ -3854,7 +3861,7 @@ g_key_file_remove_key (GKeyFile *key_file, g_set_error (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_GROUP_NOT_FOUND, _("Key file does not have group '%s'"), - group_name ? group_name : "(null)"); + group_name); return FALSE; } @@ -4313,16 +4320,29 @@ g_key_file_parse_value_as_double (GKeyFile *key_file, return double_value; } +static gint +strcmp_sized (const gchar *s1, size_t len1, const gchar *s2) +{ + size_t len2 = strlen (s2); + return strncmp (s1, s2, MAX (len1, len2)); +} + static gboolean g_key_file_parse_value_as_boolean (GKeyFile *key_file, const gchar *value, GError **error) { gchar *value_utf8; + gint i, length = 0; + + /* Count the number of non-whitespace characters */ + for (i = 0; value[i]; i++) + if (!g_ascii_isspace (value[i])) + length = i + 1; - if (strcmp (value, "true") == 0 || strcmp (value, "1") == 0) + if (strcmp_sized (value, length, "true") == 0 || strcmp_sized (value, length, "1") == 0) return TRUE; - else if (strcmp (value, "false") == 0 || strcmp (value, "0") == 0) + else if (strcmp_sized (value, length, "false") == 0 || strcmp_sized (value, length, "0") == 0) return FALSE; value_utf8 = _g_utf8_make_valid (value); diff --git a/glib/glib-autocleanups.h b/glib/glib-autocleanups.h index 8b80b38..6355f75 100644 --- a/glib/glib-autocleanups.h +++ b/glib/glib-autocleanups.h @@ -23,14 +23,20 @@ static inline void g_autoptr_cleanup_generic_gfree (void *p) -{ +{ void **pp = (void**)p; - if (*pp) - g_free (*pp); + g_free (*pp); +} + +static inline void +g_autoptr_cleanup_gstring_free (GString *string) +{ + if (string) + g_string_free (string, TRUE); } /* If adding a cleanup here, please also add a test case to - * glib/glib/autoptr.c + * glib/tests/autoptr.c */ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GAsyncQueue, g_async_queue_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GBookmarkFile, g_bookmark_file_free) @@ -64,6 +70,7 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GMatchInfo, g_match_info_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GScanner, g_scanner_destroy) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSequence, g_sequence_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GSList, g_slist_free) +G_DEFINE_AUTOPTR_CLEANUP_FUNC(GString, g_autoptr_cleanup_gstring_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GStringChunk, g_string_chunk_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GThread, g_thread_unref) G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(GMutex, g_mutex_clear) @@ -79,3 +86,4 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(GVariantIter, g_variant_iter_free) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GVariantDict, g_variant_dict_unref) G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(GVariantDict, g_variant_dict_clear) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GVariantType, g_variant_type_free) +G_DEFINE_AUTO_CLEANUP_FREE_FUNC(GStrv, g_strfreev, NULL) diff --git a/glib/glib-init.c b/glib/glib-init.c index 24efe9d..33dd4bf 100644 --- a/glib/glib-init.c +++ b/glib/glib-init.c @@ -125,7 +125,7 @@ g_parse_debug_string (const gchar *string, /* using stdio directly for the reason stated above */ fprintf (stderr, "Supported debug values:"); for (i = 0; i < nkeys; i++) - fprintf (stderr, " %s", keys[i].key); + fprintf (stderr, " %s", keys[i].key); fprintf (stderr, " all help\n"); } else @@ -228,11 +228,19 @@ g_debug_init (void) g_mem_gc_friendly = flags & 1; } -static void +void glib_init (void) { + static gboolean glib_inited; + + if (glib_inited) + return; + + glib_inited = TRUE; + g_messages_prefixed_init (); g_debug_init (); + g_quark_init (); } #if defined (G_OS_WIN32) diff --git a/glib/glib-init.h b/glib/glib-init.h index de6be78..e893d55 100644 --- a/glib/glib-init.h +++ b/glib/glib-init.h @@ -25,6 +25,9 @@ extern GLogLevelFlags g_log_always_fatal; extern GLogLevelFlags g_log_msg_prefix; +void glib_init (void); +void g_quark_init (void); + #ifdef G_OS_WIN32 #include diff --git a/glib/glib-private.c b/glib/glib-private.c index bbf879f..3dbf744 100644 --- a/glib/glib-private.c +++ b/glib/glib-private.c @@ -20,6 +20,7 @@ #include "config.h" #include "glib-private.h" +#include "glib-init.h" /** * glib__private__: @@ -44,7 +45,9 @@ glib__private__ (void) g_main_context_new_with_next_id, g_dir_open_with_errno, - g_dir_new_from_dirp + g_dir_new_from_dirp, + + glib_init, }; return &table; diff --git a/glib/glib-private.h b/glib/glib-private.h index 0a28008..198e07f 100644 --- a/glib/glib-private.h +++ b/glib/glib-private.h @@ -61,6 +61,9 @@ typedef struct { guint flags); GDir * (* g_dir_new_from_dirp) (gpointer dirp); + /* See glib-init.c */ + void (* glib_init) (void); + /* Add other private functions here, initialize them in glib-private.c */ } GLibPrivateVTable; diff --git a/glib/glib.py b/glib/glib.py index f7fe22b..38f101a 100644 --- a/glib/glib.py +++ b/glib/glib.py @@ -67,6 +67,8 @@ class GListPrinter: self.count = self.count + 1 return ('[%d]' % count, data) + __next__ = next + def __init__ (self, val, listtype): self.val = val self.listtype = listtype @@ -121,6 +123,8 @@ class GHashPrinter: return ('[%dk]'% (self.pos), key) raise StopIteration + __next__ = next + def __init__ (self, val): self.val = val self.keys_are_strings = False diff --git a/glib/glib.rc b/glib/glib.rc new file mode 100644 index 0000000..d43ab8b --- /dev/null +++ b/glib/glib.rc @@ -0,0 +1,30 @@ +#include + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 2,48,0,0 + PRODUCTVERSION 2,48,0,0 + FILEFLAGSMASK 0 + FILEFLAGS 0 + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE VFT2_UNKNOWN + BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "The GLib developer community" + VALUE "FileDescription", "GLib" + VALUE "FileVersion", "2.48.0.0" + VALUE "InternalName", "libglib-2.0-0" + VALUE "LegalCopyright", "Copyright © 1995-2011 Peter Mattis, Spencer Kimball, Josh MacDonald and others." + VALUE "OriginalFilename", "libglib-2.0-0.dll" + VALUE "ProductName", "GLib" + VALUE "ProductVersion", "2.48.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END + END diff --git a/glib/glibconfig.h.win32 b/glib/glibconfig.h.win32 new file mode 100644 index 0000000..dd2a543 --- /dev/null +++ b/glib/glibconfig.h.win32 @@ -0,0 +1,256 @@ +/* glibconfig.h.win32.in. Originally merged from two versions of + * glibconfig.h, generated by the GLib configure script, for gcc and + * MSVC. + */ + +/* glibconfig.h + * + * This is a generated file. Please modify 'glibconfig.h.win32.in' + */ + +#ifndef __G_LIBCONFIG_H__ +#define __G_LIBCONFIG_H__ + +#include + +#include +#include + +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 */ + +#ifndef _MSC_VER +G_GNUC_EXTENSION typedef signed long long gint64; +G_GNUC_EXTENSION typedef unsigned long long guint64; +#else /* _MSC_VER */ +typedef signed __int64 gint64; +typedef unsigned __int64 guint64; +#endif /* _MSC_VER */ + +#ifndef _MSC_VER +#define G_GINT64_CONSTANT(val) (G_GNUC_EXTENSION (val##LL)) +#else /* _MSC_VER */ +#define G_GINT64_CONSTANT(val) (val##i64) +#endif /* _MSC_VER */ +#ifndef _MSC_VER +#define G_GUINT64_CONSTANT(val) (G_GNUC_EXTENSION (val##ULL)) +#else /* _MSC_VER */ +#define G_GUINT64_CONSTANT(val) (val##Ui64) +#endif /* _MSC_VER */ +#define G_GINT64_MODIFIER "I64" +#define G_GINT64_FORMAT "I64i" +#define G_GUINT64_FORMAT "I64u" + +#if defined(_WIN64) || defined(_M_X64) || defined(_M_AMD64) + +#define GLIB_SIZEOF_VOID_P 8 +#define GLIB_SIZEOF_LONG 4 +#define GLIB_SIZEOF_SIZE_T 8 + +typedef signed long long gssize; +typedef unsigned long long gsize; +#define G_GSIZE_MODIFIER "I64" +#define G_GSSIZE_MODIFIER "I64" +#define G_GSIZE_FORMAT "I64u" +#define G_GSSIZE_FORMAT "I64d" + +#define G_MAXSIZE G_MAXUINT64 +#define G_MINSSIZE G_MININT64 +#define G_MAXSSIZE G_MAXINT64 + +#else + +#define GLIB_SIZEOF_VOID_P 4 +#define GLIB_SIZEOF_LONG 4 +#define GLIB_SIZEOF_SIZE_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 + +#endif + +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) + + +#ifndef _WIN64 + +#define G_POLLFD_FORMAT "%#x" + +#define GPOINTER_TO_INT(p) ((gint) (p)) +#define GPOINTER_TO_UINT(p) ((guint) (p)) + +#define GINT_TO_POINTER(i) ((gpointer) (i)) +#define GUINT_TO_POINTER(u) ((gpointer) (u)) + +typedef signed int gintptr; +typedef unsigned int guintptr; + +#define G_GINTPTR_MODIFIER "" +#define G_GINTPTR_FORMAT "i" +#define G_GUINTPTR_FORMAT "u" + +#else + +#define G_POLLFD_FORMAT "%#I64x" + +#define GPOINTER_TO_INT(p) ((gint) (gint64) (p)) +#define GPOINTER_TO_UINT(p) ((guint) (guint64) (p)) + +#define GINT_TO_POINTER(i) ((gpointer) (gint64) (i)) +#define GUINT_TO_POINTER(u) ((gpointer) (guint64) (u)) + +#ifndef _MSC_VER +typedef signed long long gintptr; +typedef unsigned long long guintptr; +#else +typedef signed __int64 gintptr; +typedef unsigned __int64 guintptr; +#endif + +#define G_GINTPTR_MODIFIER "I64" +#define G_GINTPTR_FORMAT "I64i" +#define G_GUINTPTR_FORMAT "I64u" + +#endif + +#ifndef G_DISABLE_DEPRECATED +#define g_ATEXIT(proc) (atexit (proc)) + +#define g_memmove(dest,src,len) G_STMT_START { memmove ((dest), (src), (len)); } G_STMT_END +#endif + +#define GLIB_MAJOR_VERSION 2 +#define GLIB_MINOR_VERSION 48 +#define GLIB_MICRO_VERSION 0 + +#define G_OS_WIN32 +#define G_PLATFORM_WIN32 + + +#ifndef _MSC_VER +#define G_VA_COPY va_copy +#endif /* not _MSC_VER */ + +#ifndef _MSC_VER +#define G_HAVE_ISO_VARARGS 1 + +/* 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 +#else /* _MSC_VER */ +/* varargs macros available since msvc8 (vs2005) */ +# if _MSC_VER >= 1400 +# define G_HAVE_ISO_VARARGS 1 +# endif +#endif /* not _MSC_VER */ +#define G_HAVE_GROWING_STACK 0 + +#define G_GNUC_INTERNAL + +#define G_THREADS_ENABLED +#define G_THREADS_IMPL_WIN32 + +#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 "dll" + +/* A GPid is an abstraction for a process "handle". It is *not* an + * abstraction for a process identifier in general. GPid is used in + * GLib only for descendant processes spawned with the g_spawn* + * functions. On POSIX there is no "process handle" concept as such, + * but on Windows a GPid is a handle to a process, a kind of pointer, + * not a process identifier. + */ +typedef void * GPid; + +#define GLIB_SYSDEF_AF_UNIX 1 +#define GLIB_SYSDEF_AF_INET 2 +#define GLIB_SYSDEF_AF_INET6 23 + +#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/glib/glibconfig.h.win32.in b/glib/glibconfig.h.win32.in index 418cbe0..302d8df 100644 --- a/glib/glibconfig.h.win32.in +++ b/glib/glibconfig.h.win32.in @@ -115,6 +115,8 @@ typedef gint64 goffset; #ifndef _WIN64 +#define G_POLLFD_FORMAT "%#x" + #define GPOINTER_TO_INT(p) ((gint) (p)) #define GPOINTER_TO_UINT(p) ((guint) (p)) @@ -130,6 +132,8 @@ typedef unsigned int guintptr; #else +#define G_POLLFD_FORMAT "%#I64x" + #define GPOINTER_TO_INT(p) ((gint) (gint64) (p)) #define GPOINTER_TO_UINT(p) ((guint) (guint64) (p)) @@ -168,20 +172,6 @@ typedef unsigned __int64 guintptr; #define G_VA_COPY va_copy #endif /* not _MSC_VER */ -#ifdef __cplusplus -#define G_HAVE_INLINE 1 -#else /* !__cplusplus */ -#ifndef _MSC_VER -#define G_HAVE_INLINE 1 -#endif /* _MSC_VER */ -#define G_HAVE___INLINE 1 -#if !defined(_MSC_VER) && !defined(__DMC__) -#define G_HAVE___INLINE__ 1 -#endif /* !_MSC_VER and !__DMC__ */ -#endif /* !__cplusplus */ - -#define G_CAN_INLINE 1 - #ifndef _MSC_VER #define G_HAVE_ISO_VARARGS 1 diff --git a/glib/gmacros.h b/glib/gmacros.h index b34cc77..4570d25 100644 --- a/glib/gmacros.h +++ b/glib/gmacros.h @@ -37,6 +37,12 @@ */ #include +#define G_GNUC_CHECK_VERSION(major, minor) \ + (defined(__GNUC__) && \ + ((__GNUC__ > (major)) || \ + ((__GNUC__ == (major)) && \ + (__GNUC_MINOR__ >= (minor))))) + /* 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'. @@ -47,6 +53,27 @@ #define G_GNUC_EXTENSION #endif +/* Every compiler that we target supports inlining, but some of them may + * complain about it if we don't say "__inline". If we have C99, then + * we can use "inline" directly. Otherwise, we say "__inline" to avoid + * the warning. + */ +#define G_CAN_INLINE +#if !defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199900) +#undef inline +#define inline __inline +#endif + +/* For historical reasons we need to continue to support those who + * define G_IMPLEMENT_INLINES to mean "don't implement this here". + */ +#ifdef G_IMPLEMENT_INLINES +# define G_INLINE_FUNC extern +# undef G_CAN_INLINE +#else +# define G_INLINE_FUNC static inline +#endif /* G_IMPLEMENT_INLINES */ + /* Provide macros to feature the GCC function attribute. */ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) @@ -63,7 +90,21 @@ #define G_GNUC_NULL_TERMINATED #endif -#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3) +/* Clang feature detection: http://clang.llvm.org/docs/LanguageExtensions.html */ +#ifndef __has_attribute +#define __has_attribute(x) 0 +#endif + +#ifndef __has_feature +#define __has_feature(x) 0 +#endif + +#ifndef __has_builtin +#define __has_builtin(x) 0 +#endif + +#if (!defined(__clang__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))) || \ + (defined(__clang__) && __has_attribute(__alloc_size__)) #define G_GNUC_ALLOC_SIZE(x) __attribute__((__alloc_size__(x))) #define G_GNUC_ALLOC_SIZE2(x,y) __attribute__((__alloc_size__(x,y))) #else @@ -158,12 +199,7 @@ #endif /* !__GNUC__ */ #endif /* !G_DISABLE_DEPRECATED */ -/* Clang feature detection: http://clang.llvm.org/docs/LanguageExtensions.html */ -#ifndef __has_feature -#define __has_feature(x) 0 -#endif - -#if __has_feature(attribute_analyzer_noreturn) +#if __has_feature(attribute_analyzer_noreturn) && defined(__clang_analyzer__) #define G_ANALYZER_ANALYZING 1 #define G_ANALYZER_NORETURN __attribute__((analyzer_noreturn)) #else @@ -279,7 +315,7 @@ * 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. - * MSVC complains about "while(0)": C4127: “Conditional expression is constant”, + * MSVC complains about "while(0)": C4127: "Conditional expression is constant", * so we use __pragma to avoid the warning since the use here is intentional. */ #if !(defined (G_STMT_START) && defined (G_STMT_END)) @@ -322,8 +358,8 @@ _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)) +#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) diff --git a/glib/gmain.c b/glib/gmain.c index f1bb254..29ccee0 100644 --- a/glib/gmain.c +++ b/glib/gmain.c @@ -182,6 +182,35 @@ * On UNIX, the GLib mainloop is incompatible with fork(). Any program * using the mainloop must either exec() or exit() from the child * without returning to the mainloop. + * + * ## Memory management of sources # {#mainloop-memory-management} + * + * There are two options for memory management of the user data passed to a + * #GSource to be passed to its callback on invocation. This data is provided + * in calls to g_timeout_add(), g_timeout_add_full(), g_idle_add(), etc. and + * more generally, using g_source_set_callback(). This data is typically an + * object which ‘owns’ the timeout or idle callback, such as a widget or a + * network protocol implementation. In many cases, it is an error for the + * callback to be invoked after this owning object has been destroyed, as that + * results in use of freed memory. + * + * The first, and preferred, option is to store the source ID returned by + * functions such as g_timeout_add() or g_source_attach(), and explicitly + * remove that source from the main context using g_source_remove() when the + * owning object is finalized. This ensures that the callback can only be + * invoked while the object is still alive. + * + * The second option is to hold a strong reference to the object in the + * callback, and to release it in the callback’s #GDestroyNotify. This ensures + * that the object is kept alive until after the source is finalized, which is + * guaranteed to be after it is invoked for the final time. The #GDestroyNotify + * is another callback passed to the ‘full’ variants of #GSource functions (for + * example, g_timeout_add_full()). It is called when the source is finalized, + * and is designed for releasing references like this. + * + * One important caveat of this second approach is that it will keep the object + * alive indefinitely if the main loop is stopped before the #GSource is + * invoked, which may be undesirable. */ /* Types */ @@ -1565,6 +1594,9 @@ static GSourceCallbackFuncs g_source_callback_funcs = { * The exact type of @func depends on the type of source; ie. you * should not count on @func being called with @data as its first * parameter. + * + * See [memory management of sources][mainloop-memory-management] for details + * on how to handle memory management of @data. * * Typically, you won't use this function. Instead use functions specific * to the type of source you are using. @@ -2329,7 +2361,7 @@ g_source_remove_by_funcs_user_data (GSourceFuncs *funcs, * * As the name suggests, this function is not available on Windows. * - * Returns: an opaque tag + * Returns: (not nullable): an opaque tag * * Since: 2.36 **/ @@ -2369,7 +2401,7 @@ g_source_add_unix_fd (GSource *source, /** * g_source_modify_unix_fd: * @source: a #GSource - * @tag: the tag from g_source_add_unix_fd() + * @tag: (not nullable): the tag from g_source_add_unix_fd() * @new_events: the new event mask to watch * * Updates the event mask to watch for the fd identified by @tag. @@ -2409,7 +2441,7 @@ g_source_modify_unix_fd (GSource *source, /** * g_source_remove_unix_fd: * @source: a #GSource - * @tag: the tag from g_source_add_unix_fd() + * @tag: (not nullable): the tag from g_source_add_unix_fd() * * Reverses the effect of a previous call to g_source_add_unix_fd(). * @@ -2456,7 +2488,7 @@ g_source_remove_unix_fd (GSource *source, /** * g_source_query_unix_fd: * @source: a #GSource - * @tag: the tag from g_source_add_unix_fd() + * @tag: (not nullable): the tag from g_source_add_unix_fd() * * Queries the events reported for the fd corresponding to @tag on * @source during the last poll. @@ -3487,7 +3519,7 @@ g_main_context_prepare (GMainContext *context, * @timeout_: (out): location to store timeout to be used in polling * @fds: (out caller-allocates) (array length=n_fds): location to * store #GPollFD records that need to be polled. - * @n_fds: length of @fds. + * @n_fds: (in): length of @fds. * * Determines information necessary to poll this main loop. * @@ -4635,6 +4667,9 @@ g_timeout_source_new_seconds (guint interval) * timeout is recalculated based on the current time and the given interval * (it does not try to 'catch up' time lost in delays). * + * See [memory management of sources][mainloop-memory-management] for details + * on how to handle the return value and memory management of @data. + * * This internally creates a main loop source using g_timeout_source_new() * and attaches it to the global #GMainContext using g_source_attach(), so * the callback will be invoked in whichever thread is running that main @@ -4689,6 +4724,9 @@ g_timeout_add_full (gint priority, * timeout is recalculated based on the current time and the given interval * (it does not try to 'catch up' time lost in delays). * + * See [memory management of sources][mainloop-memory-management] for details + * on how to handle the return value and memory management of @data. + * * If you want to have a timer in the "seconds" range and do not care * about the exact time of the first call of the timer, use the * g_timeout_add_seconds() function; this function allows for more @@ -4741,6 +4779,9 @@ g_timeout_add (guint32 interval, * After each call to the timeout function, the time of the next * timeout is recalculated based on the current time and the given @interval * + * See [memory management of sources][mainloop-memory-management] for details + * on how to handle the return value and memory management of @data. + * * If you want timing more precise than whole seconds, use g_timeout_add() * instead. * @@ -4805,6 +4846,9 @@ g_timeout_add_seconds_full (gint priority, * of one second. If you need finer precision and have such a timeout, * you may want to use g_timeout_add() instead. * + * See [memory management of sources][mainloop-memory-management] for details + * on how to handle the return value and memory management of @data. + * * The interval given is in terms of monotonic time, not wall clock * time. See g_get_monotonic_time(). * @@ -5185,10 +5229,14 @@ g_child_watch_dispatch (GSource *source, static void g_unix_signal_handler (int signum) { + gint saved_errno = errno; + unix_signal_pending[signum] = TRUE; any_unix_signal_pending = TRUE; g_wakeup_signal (glib_worker_context->wakeup); + + errno = saved_errno; } #endif /* !G_OS_WIN32 */ @@ -5428,6 +5476,9 @@ g_idle_source_new (void) * Adds a function to be called whenever there are no higher priority * events pending. If the function returns %FALSE it is automatically * removed from the list of event sources and will not be called again. + * + * See [memory management of sources][mainloop-memory-management] for details + * on how to handle the return value and memory management of @data. * * This internally creates a main loop source using g_idle_source_new() * and attaches it to the global #GMainContext using g_source_attach(), so @@ -5470,6 +5521,9 @@ g_idle_add_full (gint priority, * default idle priority, #G_PRIORITY_DEFAULT_IDLE. If the function * returns %FALSE it is automatically removed from the list of event * sources and will not be called again. + * + * See [memory management of sources][mainloop-memory-management] for details + * on how to handle the return value and memory management of @data. * * This internally creates a main loop source using g_idle_source_new() * and attaches it to the global #GMainContext using g_source_attach(), so diff --git a/glib/gmain.h b/glib/gmain.h index 603fdfc..746edd7 100644 --- a/glib/gmain.h +++ b/glib/gmain.h @@ -101,7 +101,9 @@ typedef struct _GSourceCallbackFuncs GSourceCallbackFuncs; * 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. + * are needed for this type of event source. The return value of the + * @dispatch function should be #G_SOURCE_REMOVE if the source should be + * removed or #G_SOURCE_CONTINUE to keep it. * @finalize: Called when the source is finalized. * * The `GSourceFuncs` struct contains a table of diff --git a/glib/gmarkup.c b/glib/gmarkup.c index 9b60387..7103d48 100644 --- a/glib/gmarkup.c +++ b/glib/gmarkup.c @@ -618,7 +618,6 @@ unescape_gstring_inplace (GMarkupParseContext *context, GError **error) { char mask, *to; - int line_num = 1; const char *from; gboolean normalize_attribute; @@ -642,8 +641,6 @@ unescape_gstring_inplace (GMarkupParseContext *context, *to = *from; mask |= *to; - if (*to == '\n') - line_num++; if (normalize_attribute && (*to == '\t' || *to == '\n')) *to = ' '; if (*to == '\r') @@ -657,7 +654,7 @@ unescape_gstring_inplace (GMarkupParseContext *context, from++; if (*from == '#') { - gboolean is_hex = FALSE; + gint base = 10; gulong l; gchar *end = NULL; @@ -665,16 +662,12 @@ unescape_gstring_inplace (GMarkupParseContext *context, if (*from == 'x') { - is_hex = TRUE; + base = 16; from++; } - /* digit is between start and p */ errno = 0; - if (is_hex) - l = strtoul (from, &end, 16); - else - l = strtoul (from, &end, 10); + l = strtoul (from, &end, base); if (end == from || errno != 0) { @@ -2157,7 +2150,7 @@ append_escaped_text (GString *str, p = text; end = text + length; - while (p != end) + while (p < end) { const gchar *next; next = g_utf8_next_char (p); diff --git a/glib/gmem.c b/glib/gmem.c index dd031ba..e51f0cd 100644 --- a/glib/gmem.c +++ b/glib/gmem.c @@ -40,9 +40,6 @@ #include "gthread.h" #include "glib_trace.h" -#define MEM_PROFILE_TABLE_SIZE 4096 - - /* notes on macros: * having G_DISABLE_CHECKS defined disables use of glib_mem_profiler_table and * g_mem_profile(). @@ -74,7 +71,7 @@ static GMemVTable glib_mem_vtable = { * g_slice_free(), plain malloc() with free(), and (if you're using C++) * new with delete and new[] with delete[]. Otherwise bad things can happen, * since these allocators may use different memory pools (and new/delete call - * constructors and destructors). See also g_mem_set_vtable(). + * constructors and destructors). */ /* --- functions --- */ @@ -94,7 +91,7 @@ g_malloc (gsize n_bytes) { gpointer mem; - mem = glib_mem_vtable.malloc (n_bytes); + mem = malloc (n_bytes); TRACE (GLIB_MEM_ALLOC((void*) mem, (unsigned int) n_bytes, 0, 0)); if (mem) return mem; @@ -124,7 +121,7 @@ g_malloc0 (gsize n_bytes) { gpointer mem; - mem = glib_mem_vtable.calloc (1, n_bytes); + mem = calloc (1, n_bytes); TRACE (GLIB_MEM_ALLOC((void*) mem, (unsigned int) n_bytes, 1, 0)); if (mem) return mem; @@ -159,7 +156,7 @@ g_realloc (gpointer mem, if (G_LIKELY (n_bytes)) { - newmem = glib_mem_vtable.realloc (mem, n_bytes); + newmem = realloc (mem, n_bytes); TRACE (GLIB_MEM_REALLOC((void*) newmem, (void*)mem, (unsigned int) n_bytes, 0)); if (newmem) return newmem; @@ -169,7 +166,7 @@ g_realloc (gpointer mem, } if (mem) - glib_mem_vtable.free (mem); + free (mem); TRACE (GLIB_MEM_REALLOC((void*) NULL, (void*)mem, 0, 0)); @@ -189,13 +186,14 @@ void g_free (gpointer mem) { if (G_LIKELY (mem)) - glib_mem_vtable.free (mem); + free (mem); TRACE(GLIB_MEM_FREE((void*) mem)); } /** * g_clear_pointer: (skip) - * @pp: a pointer to a variable, struct member etc. holding a pointer + * @pp: (not nullable): a pointer to a variable, struct member etc. holding a + * pointer * @destroy: a function to which a gpointer can be passed, to destroy *@pp * * Clears a reference to a variable. @@ -241,7 +239,7 @@ g_try_malloc (gsize n_bytes) gpointer mem; if (G_LIKELY (n_bytes)) - mem = glib_mem_vtable.try_malloc (n_bytes); + mem = malloc (n_bytes); else mem = NULL; @@ -266,13 +264,10 @@ g_try_malloc0 (gsize n_bytes) gpointer mem; if (G_LIKELY (n_bytes)) - mem = glib_mem_vtable.try_malloc (n_bytes); + mem = calloc (1, n_bytes); else mem = NULL; - if (mem) - memset (mem, 0, n_bytes); - return mem; } @@ -296,12 +291,12 @@ g_try_realloc (gpointer mem, gpointer newmem; if (G_LIKELY (n_bytes)) - newmem = glib_mem_vtable.try_realloc (mem, n_bytes); + newmem = realloc (mem, n_bytes); else { newmem = NULL; if (mem) - glib_mem_vtable.free (mem); + free (mem); } TRACE (GLIB_MEM_REALLOC((void*) newmem, (void*)mem, (unsigned int) n_bytes, 1)); @@ -451,23 +446,6 @@ g_try_realloc_n (gpointer mem, return g_try_realloc (mem, n_blocks * n_block_bytes); } - - -static gpointer -fallback_calloc (gsize n_blocks, - gsize n_block_bytes) -{ - gsize l = n_blocks * n_block_bytes; - gpointer mem = glib_mem_vtable.malloc (l); - - if (mem) - memset (mem, 0, l); - - return mem; -} - -static gboolean vtable_set = FALSE; - /** * g_mem_is_system_malloc: * @@ -477,358 +455,56 @@ static gboolean vtable_set = FALSE; * This function is useful for avoiding an extra copy of allocated memory returned * by a non-GLib-based API. * - * A different allocator can be set using g_mem_set_vtable(). - * * Returns: if %TRUE, malloc() and g_malloc() can be mixed. + * + * Deprecated: 2.46: GLib always uses the system malloc, so this function always + * returns %TRUE. **/ gboolean g_mem_is_system_malloc (void) { - return !vtable_set; + return TRUE; } /** * g_mem_set_vtable: * @vtable: table of memory allocation routines. * - * Sets the #GMemVTable to use for memory allocation. You can use this - * to provide custom memory allocation routines. - * - * The @vtable only needs to provide malloc(), realloc(), and free() - * functions; GLib can provide default implementations of the others. - * The malloc() and realloc() implementations should return %NULL on - * failure, GLib will handle error-checking for you. @vtable is copied, - * so need not persist after this function has been called. + * This function used to let you override the memory allocation function. + * However, its use was incompatible with the use of global constructors + * in GLib and GIO, because those use the GLib allocators before main is + * reached. Therefore this function is now deprecated and is just a stub. * - * Note that this function must be called before using any other GLib - * functions. + * Deprecated: 2.46: Use other memory profiling tools instead */ void g_mem_set_vtable (GMemVTable *vtable) { - if (!vtable_set) - { - if (vtable->malloc && vtable->realloc && vtable->free) - { - glib_mem_vtable.malloc = vtable->malloc; - glib_mem_vtable.realloc = vtable->realloc; - glib_mem_vtable.free = vtable->free; - glib_mem_vtable.calloc = vtable->calloc ? vtable->calloc : fallback_calloc; - glib_mem_vtable.try_malloc = vtable->try_malloc ? vtable->try_malloc : glib_mem_vtable.malloc; - glib_mem_vtable.try_realloc = vtable->try_realloc ? vtable->try_realloc : glib_mem_vtable.realloc; - vtable_set = TRUE; - } - else - g_warning (G_STRLOC ": memory allocation vtable lacks one of malloc(), realloc() or free()"); - } - else - g_warning (G_STRLOC ": memory allocation vtable can only be set once at startup"); + g_warning (G_STRLOC ": custom memory allocation vtable not supported"); } -/* --- memory profiling and checking --- */ -#ifdef G_DISABLE_CHECKS /** * glib_mem_profiler_table: - * - * A #GMemVTable containing profiling variants of the memory - * allocation functions. Use them together with g_mem_profile() - * in order to get information about the memory allocation pattern - * of your program. + * + * Used to be a #GMemVTable containing profiling variants of the memory + * allocation functions, but this variable shouldn't be modified anymore. + * + * Deprecated: 2.46: Use other memory profiling tools instead */ GMemVTable *glib_mem_profiler_table = &glib_mem_vtable; -void -g_mem_profile (void) -{ -} -#else /* !G_DISABLE_CHECKS */ -typedef enum { - PROFILER_FREE = 0, - PROFILER_ALLOC = 1, - PROFILER_RELOC = 2, - PROFILER_ZINIT = 4 -} ProfilerJob; -static guint *profile_data = NULL; -static gsize profile_allocs = 0; -static gsize profile_zinit = 0; -static gsize profile_frees = 0; -static GMutex gmem_profile_mutex; - -#define PROFILE_TABLE(f1,f2,f3) ( ( ((f3) << 2) | ((f2) << 1) | (f1) ) * (MEM_PROFILE_TABLE_SIZE + 1)) - -static void -profiler_log (ProfilerJob job, - gsize n_bytes, - gboolean success) -{ - g_mutex_lock (&gmem_profile_mutex); - if (!profile_data) - { - profile_data = calloc ((MEM_PROFILE_TABLE_SIZE + 1) * 8, - sizeof (profile_data[0])); - if (!profile_data) /* memory system kiddin' me, eh? */ - { - g_mutex_unlock (&gmem_profile_mutex); - return; - } - } - - if (n_bytes < MEM_PROFILE_TABLE_SIZE) - profile_data[n_bytes + PROFILE_TABLE ((job & PROFILER_ALLOC) != 0, - (job & PROFILER_RELOC) != 0, - success != 0)] += 1; - else - profile_data[MEM_PROFILE_TABLE_SIZE + PROFILE_TABLE ((job & PROFILER_ALLOC) != 0, - (job & PROFILER_RELOC) != 0, - success != 0)] += 1; - if (success) - { - if (job & PROFILER_ALLOC) - { - profile_allocs += n_bytes; - if (job & PROFILER_ZINIT) - profile_zinit += n_bytes; - } - else - profile_frees += n_bytes; - } - g_mutex_unlock (&gmem_profile_mutex); -} - -static void -profile_print_locked (guint *local_data, - gboolean success) -{ - gboolean need_header = TRUE; - guint i; - - for (i = 0; i <= MEM_PROFILE_TABLE_SIZE; i++) - { - glong t_malloc = local_data[i + PROFILE_TABLE (1, 0, success)]; - glong t_realloc = local_data[i + PROFILE_TABLE (1, 1, success)]; - glong t_free = local_data[i + PROFILE_TABLE (0, 0, success)]; - glong t_refree = local_data[i + PROFILE_TABLE (0, 1, success)]; - - if (!t_malloc && !t_realloc && !t_free && !t_refree) - continue; - else if (need_header) - { - need_header = FALSE; - g_print (" blocks of | allocated | freed | allocated | freed | n_bytes \n"); - g_print (" n_bytes | n_times by | n_times by | n_times by | n_times by | remaining \n"); - g_print (" | malloc() | free() | realloc() | realloc() | \n"); - g_print ("===========|============|============|============|============|===========\n"); - } - if (i < MEM_PROFILE_TABLE_SIZE) - g_print ("%10u | %10ld | %10ld | %10ld | %10ld |%+11ld\n", - i, t_malloc, t_free, t_realloc, t_refree, - (t_malloc - t_free + t_realloc - t_refree) * i); - else if (i >= MEM_PROFILE_TABLE_SIZE) - g_print (" >%6u | %10ld | %10ld | %10ld | %10ld | ***\n", - i, t_malloc, t_free, t_realloc, t_refree); - } - if (need_header) - g_print (" --- none ---\n"); -} /** * g_mem_profile: - * - * Outputs a summary of memory usage. - * - * It outputs the frequency of allocations of different sizes, - * the total number of bytes which have been allocated, - * the total number of bytes which have been freed, - * and the difference between the previous two values, i.e. the number of bytes - * still in use. - * - * Note that this function will not output anything unless you have - * previously installed the #glib_mem_profiler_table with g_mem_set_vtable(). + * + * GLib used to support some tools for memory profiling, but this + * no longer works. There are many other useful tools for memory + * profiling these days which can be used instead. + * + * Deprecated: 2.46: Use other memory profiling tools instead */ - void g_mem_profile (void) { - guint local_data[(MEM_PROFILE_TABLE_SIZE + 1) * 8]; - gsize local_allocs; - gsize local_zinit; - gsize local_frees; - - g_mutex_lock (&gmem_profile_mutex); - - local_allocs = profile_allocs; - local_zinit = profile_zinit; - local_frees = profile_frees; - - if (!profile_data) - { - g_mutex_unlock (&gmem_profile_mutex); - return; - } - - memcpy (local_data, profile_data, - (MEM_PROFILE_TABLE_SIZE + 1) * 8 * sizeof (profile_data[0])); - - g_mutex_unlock (&gmem_profile_mutex); - - g_print ("GLib Memory statistics (successful operations):\n"); - profile_print_locked (local_data, TRUE); - g_print ("GLib Memory statistics (failing operations):\n"); - profile_print_locked (local_data, FALSE); - g_print ("Total bytes: allocated=%"G_GSIZE_FORMAT", " - "zero-initialized=%"G_GSIZE_FORMAT" (%.2f%%), " - "freed=%"G_GSIZE_FORMAT" (%.2f%%), " - "remaining=%"G_GSIZE_FORMAT"\n", - local_allocs, - local_zinit, - ((gdouble) local_zinit) / local_allocs * 100.0, - local_frees, - ((gdouble) local_frees) / local_allocs * 100.0, - local_allocs - local_frees); -} - -static gpointer -profiler_try_malloc (gsize n_bytes) -{ - gsize *p; - - p = malloc (sizeof (gsize) * 2 + n_bytes); - - if (p) - { - p[0] = 0; /* free count */ - p[1] = n_bytes; /* length */ - profiler_log (PROFILER_ALLOC, n_bytes, TRUE); - p += 2; - } - else - profiler_log (PROFILER_ALLOC, n_bytes, FALSE); - - return p; -} - -static gpointer -profiler_malloc (gsize n_bytes) -{ - gpointer mem = profiler_try_malloc (n_bytes); - - if (!mem) - g_mem_profile (); - - return mem; -} - -static gpointer -profiler_calloc (gsize n_blocks, - gsize n_block_bytes) -{ - gsize l = n_blocks * n_block_bytes; - gsize *p; - - p = calloc (1, sizeof (gsize) * 2 + l); - - if (p) - { - p[0] = 0; /* free count */ - p[1] = l; /* length */ - profiler_log (PROFILER_ALLOC | PROFILER_ZINIT, l, TRUE); - p += 2; - } - else - { - profiler_log (PROFILER_ALLOC | PROFILER_ZINIT, l, FALSE); - g_mem_profile (); - } - - return p; -} - -static void -profiler_free (gpointer mem) -{ - gsize *p = mem; - - p -= 2; - if (p[0]) /* free count */ - { - g_warning ("free(%p): memory has been freed %"G_GSIZE_FORMAT" times already", - p + 2, p[0]); - profiler_log (PROFILER_FREE, - p[1], /* length */ - FALSE); - } - else - { - profiler_log (PROFILER_FREE, - p[1], /* length */ - TRUE); - memset (p + 2, 0xaa, p[1]); - - /* for all those that miss free (p); in this place, yes, - * we do leak all memory when profiling, and that is intentional - * to catch double frees. patch submissions are futile. - */ - } - p[0] += 1; + g_warning (G_STRLOC ": memory profiling not supported"); } - -static gpointer -profiler_try_realloc (gpointer mem, - gsize n_bytes) -{ - gsize *p = mem; - - p -= 2; - - if (mem && p[0]) /* free count */ - { - g_warning ("realloc(%p, %"G_GSIZE_FORMAT"): " - "memory has been freed %"G_GSIZE_FORMAT" times already", - p + 2, (gsize) n_bytes, p[0]); - profiler_log (PROFILER_ALLOC | PROFILER_RELOC, n_bytes, FALSE); - - return NULL; - } - else - { - p = realloc (mem ? p : NULL, sizeof (gsize) * 2 + n_bytes); - - if (p) - { - if (mem) - profiler_log (PROFILER_FREE | PROFILER_RELOC, p[1], TRUE); - p[0] = 0; - p[1] = n_bytes; - profiler_log (PROFILER_ALLOC | PROFILER_RELOC, p[1], TRUE); - p += 2; - } - else - profiler_log (PROFILER_ALLOC | PROFILER_RELOC, n_bytes, FALSE); - - return p; - } -} - -static gpointer -profiler_realloc (gpointer mem, - gsize n_bytes) -{ - mem = profiler_try_realloc (mem, n_bytes); - - if (!mem) - g_mem_profile (); - - return mem; -} - -static GMemVTable profiler_table = { - profiler_malloc, - profiler_realloc, - profiler_free, - profiler_calloc, - profiler_try_malloc, - profiler_try_realloc, -}; -GMemVTable *glib_mem_profiler_table = &profiler_table; - -#endif /* !G_DISABLE_CHECKS */ diff --git a/glib/gmem.h b/glib/gmem.h index 10fee07..835624b 100644 --- a/glib/gmem.h +++ b/glib/gmem.h @@ -45,6 +45,8 @@ G_BEGIN_DECLS * 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. + * + * This functions related to this has been deprecated in 2.46, and no longer work. */ typedef struct _GMemVTable GMemVTable; @@ -127,7 +129,7 @@ gpointer g_try_realloc_n (gpointer mem, /** * g_steal_pointer: - * @pp: a pointer to a pointer + * @pp: (not nullable): a pointer to a pointer * * Sets @pp to %NULL, returning the value that was there before. * @@ -311,7 +313,7 @@ g_steal_pointer (gpointer pp) * 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. + * The function returns %NULL when @n_structs is 0 or if an overflow occurs. * * Since: 2.8 * Returns: a pointer to the allocated memory, cast to a pointer to @struct_type @@ -351,9 +353,9 @@ struct _GMemVTable { gpointer (*try_realloc) (gpointer mem, gsize n_bytes); }; -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 void g_mem_set_vtable (GMemVTable *vtable); -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 gboolean g_mem_is_system_malloc (void); GLIB_VAR gboolean g_mem_gc_friendly; @@ -361,7 +363,7 @@ GLIB_VAR gboolean g_mem_gc_friendly; /* Memory profiler and checker, has to be enabled via g_mem_set_vtable() */ GLIB_VAR GMemVTable *glib_mem_profiler_table; -GLIB_AVAILABLE_IN_ALL +GLIB_DEPRECATED_IN_2_46 void g_mem_profile (void); G_END_DECLS diff --git a/glib/gmessages.c b/glib/gmessages.c index c1b5622..6720a26 100644 --- a/glib/gmessages.c +++ b/glib/gmessages.c @@ -106,7 +106,7 @@ * * For example, GTK+ uses this in its Makefile.am: * |[ - * INCLUDES = -DG_LOG_DOMAIN=\"Gtk\" + * AM_CPPFLAGS = -DG_LOG_DOMAIN=\"Gtk\" * ]| */ @@ -139,7 +139,8 @@ * @G_LOG_FLAG_FATAL: internal flag * @G_LOG_LEVEL_ERROR: log level for errors, see g_error(). * This level is also used for messages produced by g_assert(). - * @G_LOG_LEVEL_CRITICAL: log level for critical messages, see g_critical(). + * @G_LOG_LEVEL_CRITICAL: log level for critical warning messages, see + * g_critical(). * This level is also used for messages produced by g_return_if_fail() * and g_return_val_if_fail(). * @G_LOG_LEVEL_WARNING: log level for warnings, see g_warning() @@ -180,6 +181,10 @@ * * A convenience function/macro to log a warning message. * + * This is not intended for end user error reporting. Use of #GError is + * preferred for that instead, as it allows calling functions to perform actions + * conditional on the type of error. + * * You can make warnings fatal at runtime by setting the `G_DEBUG` * environment variable (see * [Running GLib Applications](glib-running.html)). @@ -217,6 +222,10 @@ * * A convenience function/macro to log an error message. * + * This is not intended for end user error reporting. Use of #GError is + * preferred for that instead, as it allows calling functions to perform actions + * conditional on the type of error. + * * Error messages are always fatal, resulting in a call to * abort() to terminate the application. This function will * result in a core dump; don't use it for errors you expect. @@ -279,6 +288,7 @@ struct _GLogHandler GLogLevelFlags log_level; GLogFunc log_func; gpointer data; + GDestroyNotify destroy; GLogHandler *next; }; @@ -351,13 +361,10 @@ dowrite (int fd, #endif static void -write_string (int fd, +write_string (FILE *stream, const gchar *string) { - int res; - do - res = write (fd, string, strlen (string)); - while (G_UNLIKELY (res == -1 && errno == EINTR)); + fputs (string, stream); } static GLogDomain* @@ -566,9 +573,37 @@ g_log_set_fatal_mask (const gchar *log_domain, */ guint g_log_set_handler (const gchar *log_domain, - GLogLevelFlags log_levels, - GLogFunc log_func, - gpointer user_data) + GLogLevelFlags log_levels, + GLogFunc log_func, + gpointer user_data) +{ + return g_log_set_handler_full (log_domain, log_levels, log_func, user_data, NULL); +} + +/** + * g_log_set_handler_full: (rename-to g_log_set_handler) + * @log_domain: (allow-none): the log domain, or %NULL for the default "" + * application domain + * @log_levels: the log levels to apply the log handler for. + * To handle fatal and recursive messages as well, combine + * the log levels with the #G_LOG_FLAG_FATAL and + * #G_LOG_FLAG_RECURSION bit flags. + * @log_func: the log handler function + * @user_data: data passed to the log handler + * @destroy: destroy notify for @user_data, or %NULL + * + * Like g_log_sets_handler(), but takes a destroy notify for the @user_data. + * + * Returns: the id of the new handler + * + * Since: 2.46 + */ +guint +g_log_set_handler_full (const gchar *log_domain, + GLogLevelFlags log_levels, + GLogFunc log_func, + gpointer user_data, + GDestroyNotify destroy) { static guint handler_id = 0; GLogDomain *domain; @@ -592,6 +627,7 @@ g_log_set_handler (const gchar *log_domain, handler->log_level = log_levels; handler->log_func = log_func; handler->data = user_data; + handler->destroy = destroy; handler->next = domain->handlers; domain->handlers = handler; @@ -699,6 +735,8 @@ g_log_remove_handler (const gchar *log_domain, domain->handlers = work->next; g_log_domain_check_free_L (domain); g_mutex_unlock (&g_messages_lock); + if (work->destroy) + work->destroy (work->data); g_free (work); return; } @@ -841,7 +879,7 @@ format_unsigned (gchar *buf, /* these are filtered by G_MESSAGES_DEBUG by the default log handler */ #define INFO_LEVELS (G_LOG_LEVEL_INFO | G_LOG_LEVEL_DEBUG) -static int +static FILE * mklevel_prefix (gchar level_prefix[STRING_BUFFER_SIZE], GLogLevelFlags log_level) { @@ -892,7 +930,7 @@ mklevel_prefix (gchar level_prefix[STRING_BUFFER_SIZE], if ((log_level & G_LOG_FLAG_FATAL) != 0 && !g_test_initialized ()) win32_keep_fatal_message = TRUE; #endif - return to_stdout ? 1 : 2; + return to_stdout ? stdout : stderr; } typedef struct { @@ -905,7 +943,8 @@ static GSList *expected_messages = NULL; /** * g_logv: - * @log_domain: the log domain + * @log_domain: (nullable): the log domain, or %NULL for the default "" + * application domain * @log_level: the log level * @format: the message format. See the printf() documentation * @args: the parameters to insert into the format string @@ -1052,7 +1091,8 @@ g_logv (const gchar *log_domain, /** * g_log: - * @log_domain: the log domain, usually #G_LOG_DOMAIN + * @log_domain: (nullable): the log domain, usually #G_LOG_DOMAIN, or %NULL + * for the default * @log_level: the log level, either from #GLogLevelFlags * or a user-defined level * @format: the message format. See the printf() documentation @@ -1080,6 +1120,12 @@ g_log (const gchar *log_domain, va_end (args); } +/** + * g_return_if_fail_warning: (skip) + * @log_domain: (nullable): + * @pretty_function: + * @expression: (nullable): + */ void g_return_if_fail_warning (const char *log_domain, const char *pretty_function, @@ -1092,6 +1138,14 @@ g_return_if_fail_warning (const char *log_domain, expression); } +/** + * g_warn_message: (skip) + * @domain: (nullable): + * @file: + * @line: + * @func: + * @warnexpr: (nullable): + */ void g_warn_message (const char *domain, const char *file, @@ -1242,7 +1296,7 @@ _g_log_fallback_handler (const gchar *log_domain, #ifndef G_OS_WIN32 gchar pid_string[FORMAT_UNSIGNED_BUFSIZE]; #endif - int fd; + FILE *stream; /* we cannot call _any_ GLib functions in this fallback handler, * which is why we skip UTF-8 conversion, etc. @@ -1251,7 +1305,7 @@ _g_log_fallback_handler (const gchar *log_domain, * the process ID unconditionally however. */ - fd = mklevel_prefix (level_prefix, log_level); + stream = mklevel_prefix (level_prefix, log_level); if (!message) message = "(NULL) message"; @@ -1260,24 +1314,24 @@ _g_log_fallback_handler (const gchar *log_domain, #endif if (log_domain) - write_string (fd, "\n"); + write_string (stream, "\n"); else - write_string (fd, "\n** "); + write_string (stream, "\n** "); #ifndef G_OS_WIN32 - write_string (fd, "(process:"); - write_string (fd, pid_string); - write_string (fd, "): "); + write_string (stream, "(process:"); + write_string (stream, pid_string); + write_string (stream, "): "); #endif if (log_domain) { - write_string (fd, log_domain); - write_string (fd, "-"); + write_string (stream, log_domain); + write_string (stream, "-"); } - write_string (fd, level_prefix); - write_string (fd, ": "); - write_string (fd, message); + write_string (stream, level_prefix); + write_string (stream, ": "); + write_string (stream, message); } static void @@ -1342,10 +1396,11 @@ escape_string (GString *string) /** * g_log_default_handler: - * @log_domain: the log domain of the message + * @log_domain: (nullable): the log domain of the message, or %NULL for the + * default "" application domain * @log_level: the level of the message - * @message: the message - * @unused_data: data passed from g_log() which is unused + * @message: (nullable): the message + * @unused_data: (nullable): data passed from g_log() which is unused * * The default log handler set up by GLib; g_log_set_default_handler() * allows to install an alternate default log handler. @@ -1378,7 +1433,7 @@ g_log_default_handler (const gchar *log_domain, { gchar level_prefix[STRING_BUFFER_SIZE], *string; GString *gstring; - int fd; + FILE *stream; const gchar *domains; if ((log_level & DEFAULT_LEVELS) || (log_level >> G_LOG_LEVEL_USER_SHIFT)) @@ -1398,7 +1453,7 @@ g_log_default_handler (const gchar *log_domain, return; } - fd = mklevel_prefix (level_prefix, log_level); + stream = mklevel_prefix (level_prefix, log_level); gstring = g_string_new (NULL); if (log_level & ALERT_LEVELS) @@ -1449,7 +1504,7 @@ g_log_default_handler (const gchar *log_domain, string = g_string_free (gstring, FALSE); - write_string (fd, string); + write_string (stream, string); g_free (string); } diff --git a/glib/gmessages.h b/glib/gmessages.h index 497c669..1c5a9ee 100644 --- a/glib/gmessages.h +++ b/glib/gmessages.h @@ -33,12 +33,6 @@ #include #include -/* 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. @@ -86,6 +80,12 @@ guint g_log_set_handler (const gchar *log_domain, GLogLevelFlags log_levels, GLogFunc log_func, gpointer user_data); +GLIB_AVAILABLE_IN_2_46 +guint g_log_set_handler_full (const gchar *log_domain, + GLogLevelFlags log_levels, + GLogFunc log_func, + gpointer user_data, + GDestroyNotify destroy); GLIB_AVAILABLE_IN_ALL void g_log_remove_handler (const gchar *log_domain, guint handler_id); @@ -192,7 +192,7 @@ void g_assert_warning (const char *log_domain, G_LOG_LEVEL_DEBUG, \ format) #else /* no varargs macros */ -static void g_error (const gchar *format, ...) G_ANALYZER_NORETURN; +static void g_error (const gchar *format, ...) G_GNUC_NORETURN G_ANALYZER_NORETURN; static void g_critical (const gchar *format, ...) G_ANALYZER_NORETURN; static void @@ -275,7 +275,7 @@ GPrintFunc g_set_printerr_handler (GPrintFunc func); /** * g_warn_if_reached: * - * Logs a critical warning. + * Logs a warning. * * Since: 2.16 */ diff --git a/glib/gnode.h b/glib/gnode.h index 763ac90..50ad1bd 100644 --- a/glib/gnode.h +++ b/glib/gnode.h @@ -62,13 +62,13 @@ typedef void (*GNodeForeachFunc) (GNode *node, /** * GCopyFunc: - * @src: A pointer to the data which should be copied + * @src: (not nullable): 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 + * Returns: (not nullable): A pointer to the copy * * Since: 2.4 */ diff --git a/glib/gnulib/Makefile.am b/glib/gnulib/Makefile.am index 931230e..3182af5 100644 --- a/glib/gnulib/Makefile.am +++ b/glib/gnulib/Makefile.am @@ -21,6 +21,8 @@ libgnulib_la_SOURCES = \ vasnprintf.h \ printf.c \ printf.h \ + verify.h \ + xsize.h \ g-gnulib.h diff --git a/glib/gnulib/Makefile.in b/glib/gnulib/Makefile.in new file mode 100644 index 0000000..c5938ec --- /dev/null +++ b/glib/gnulib/Makefile.in @@ -0,0 +1,1551 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +subdir = glib/gnulib +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES) +libgnulib_la_LIBADD = +am_libgnulib_la_OBJECTS = libgnulib_la-asnprintf.lo \ + libgnulib_la-printf-args.lo libgnulib_la-printf-parse.lo \ + libgnulib_la-vasnprintf.lo libgnulib_la-printf.lo +libgnulib_la_OBJECTS = $(am_libgnulib_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libgnulib_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libgnulib_la_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgnulib_la_SOURCES) +DIST_SOURCES = $(libgnulib_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/glib.mk $(top_srcdir)/test-driver README +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = +BUILT_EXTRA_DIST = +CLEANFILES = *.log *.trs $(am__append_14) +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \ + makefile.msc + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) libgnulib.la +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +AM_CPPFLAGS = \ + $(glib_INCLUDES) \ + -DG_LOG_DOMAIN=\"GLib\" \ + $(GLIB_DEBUG_FLAGS) \ + -DG_DISABLE_DEPRECATED \ + -DGLIB_COMPILATION + +libgnulib_la_CFLAGS = $(GLIB_HIDDEN_VISIBILITY_CFLAGS) +libgnulib_la_SOURCES = \ + asnprintf.c \ + printf-args.c \ + printf-args.h \ + printf-parse.c \ + printf-parse.h \ + vasnprintf.c \ + vasnprintf.h \ + printf.c \ + printf.h \ + verify.h \ + xsize.h \ + g-gnulib.h + +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glib/gnulib/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu glib/gnulib/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgnulib.la: $(libgnulib_la_OBJECTS) $(libgnulib_la_DEPENDENCIES) $(EXTRA_libgnulib_la_DEPENDENCIES) + $(AM_V_CCLD)$(libgnulib_la_LINK) $(libgnulib_la_OBJECTS) $(libgnulib_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnulib_la-asnprintf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnulib_la-printf-args.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnulib_la-printf-parse.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnulib_la-printf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnulib_la-vasnprintf.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libgnulib_la-asnprintf.lo: asnprintf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -MT libgnulib_la-asnprintf.lo -MD -MP -MF $(DEPDIR)/libgnulib_la-asnprintf.Tpo -c -o libgnulib_la-asnprintf.lo `test -f 'asnprintf.c' || echo '$(srcdir)/'`asnprintf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnulib_la-asnprintf.Tpo $(DEPDIR)/libgnulib_la-asnprintf.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='asnprintf.c' object='libgnulib_la-asnprintf.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -c -o libgnulib_la-asnprintf.lo `test -f 'asnprintf.c' || echo '$(srcdir)/'`asnprintf.c + +libgnulib_la-printf-args.lo: printf-args.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -MT libgnulib_la-printf-args.lo -MD -MP -MF $(DEPDIR)/libgnulib_la-printf-args.Tpo -c -o libgnulib_la-printf-args.lo `test -f 'printf-args.c' || echo '$(srcdir)/'`printf-args.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnulib_la-printf-args.Tpo $(DEPDIR)/libgnulib_la-printf-args.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printf-args.c' object='libgnulib_la-printf-args.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -c -o libgnulib_la-printf-args.lo `test -f 'printf-args.c' || echo '$(srcdir)/'`printf-args.c + +libgnulib_la-printf-parse.lo: printf-parse.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -MT libgnulib_la-printf-parse.lo -MD -MP -MF $(DEPDIR)/libgnulib_la-printf-parse.Tpo -c -o libgnulib_la-printf-parse.lo `test -f 'printf-parse.c' || echo '$(srcdir)/'`printf-parse.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnulib_la-printf-parse.Tpo $(DEPDIR)/libgnulib_la-printf-parse.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printf-parse.c' object='libgnulib_la-printf-parse.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -c -o libgnulib_la-printf-parse.lo `test -f 'printf-parse.c' || echo '$(srcdir)/'`printf-parse.c + +libgnulib_la-vasnprintf.lo: vasnprintf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -MT libgnulib_la-vasnprintf.lo -MD -MP -MF $(DEPDIR)/libgnulib_la-vasnprintf.Tpo -c -o libgnulib_la-vasnprintf.lo `test -f 'vasnprintf.c' || echo '$(srcdir)/'`vasnprintf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnulib_la-vasnprintf.Tpo $(DEPDIR)/libgnulib_la-vasnprintf.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vasnprintf.c' object='libgnulib_la-vasnprintf.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -c -o libgnulib_la-vasnprintf.lo `test -f 'vasnprintf.c' || echo '$(srcdir)/'`vasnprintf.c + +libgnulib_la-printf.lo: printf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -MT libgnulib_la-printf.lo -MD -MP -MF $(DEPDIR)/libgnulib_la-printf.Tpo -c -o libgnulib_la-printf.lo `test -f 'printf.c' || echo '$(srcdir)/'`printf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgnulib_la-printf.Tpo $(DEPDIR)/libgnulib_la-printf.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='printf.c' object='libgnulib_la-printf.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -c -o libgnulib_la-printf.lo `test -f 'printf.c' || echo '$(srcdir)/'`printf.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \ + check-local clean clean-checkLTLIBRARIES clean-checkPROGRAMS \ + clean-generic clean-installed_testLTLIBRARIES \ + clean-installed_testPROGRAMS clean-libtool \ + clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/glib/gnulib/printf-args.c b/glib/gnulib/printf-args.c index 0530d37..e250a48 100644 --- a/glib/gnulib/printf-args.c +++ b/glib/gnulib/printf-args.c @@ -1,131 +1,189 @@ /* Decomposed printf argument list. - Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc. + Copyright (C) 1999, 2002-2003, 2005-2007, 2009-2015 Free Software + Foundation, Inc. - This program 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, or (at your option) + 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 - Library General Public License for more details. + 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 Library General Public - License along with this program; if not, see . */ + You should have received a copy of the GNU General Public License along + with this program; if not, see . */ -#ifdef HAVE_CONFIG_H +/* This file can be parametrized with the following macros: + ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. + PRINTF_FETCHARGS Name of the function to be defined. + STATIC Set to 'static' to declare the function static. */ + +#ifndef PRINTF_FETCHARGS # include #endif #include "g-gnulib.h" /* Specification. */ -#include "printf-args.h" +#ifndef PRINTF_FETCHARGS +# include "printf-args.h" +#endif #ifdef STATIC STATIC #endif int -printf_fetchargs (va_list args, arguments *a) +PRINTF_FETCHARGS (va_list args, arguments *a) { - unsigned int i; + size_t i; argument *ap; for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++) switch (ap->type) { case TYPE_SCHAR: - ap->a.a_schar = va_arg (args, /*signed char*/ int); - break; + ap->a.a_schar = va_arg (args, /*signed char*/ int); + break; case TYPE_UCHAR: - ap->a.a_uchar = va_arg (args, /*unsigned char*/ int); - break; + ap->a.a_uchar = va_arg (args, /*unsigned char*/ int); + break; case TYPE_SHORT: - ap->a.a_short = va_arg (args, /*short*/ int); - break; + ap->a.a_short = va_arg (args, /*short*/ int); + break; case TYPE_USHORT: - ap->a.a_ushort = va_arg (args, /*unsigned short*/ int); - break; + ap->a.a_ushort = va_arg (args, /*unsigned short*/ int); + break; case TYPE_INT: - ap->a.a_int = va_arg (args, int); - break; + ap->a.a_int = va_arg (args, int); + break; case TYPE_UINT: - ap->a.a_uint = va_arg (args, unsigned int); - break; + ap->a.a_uint = va_arg (args, unsigned int); + break; case TYPE_LONGINT: - ap->a.a_longint = va_arg (args, long int); - break; + ap->a.a_longint = va_arg (args, long int); + break; case TYPE_ULONGINT: - ap->a.a_ulongint = va_arg (args, unsigned long int); - break; -#ifdef HAVE_LONG_LONG + ap->a.a_ulongint = va_arg (args, unsigned long int); + break; +#if HAVE_LONG_LONG case TYPE_LONGLONGINT: - ap->a.a_longlongint = va_arg (args, long long int); - break; + ap->a.a_longlongint = va_arg (args, long long int); + break; case TYPE_ULONGLONGINT: - ap->a.a_ulonglongint = va_arg (args, unsigned long long int); - break; -#endif -#ifdef HAVE_INT64_AND_I64 - case TYPE_INT64: - ap->a.a_int64 = va_arg (args, __int64); - break; - case TYPE_UINT64: - ap->a.a_uint64 = va_arg (args, unsigned __int64); - break; + ap->a.a_ulonglongint = va_arg (args, unsigned long long int); + break; #endif case TYPE_DOUBLE: - ap->a.a_double = va_arg (args, double); - break; -#ifdef HAVE_LONG_DOUBLE + ap->a.a_double = va_arg (args, double); + break; case TYPE_LONGDOUBLE: - ap->a.a_longdouble = va_arg (args, long double); - break; -#endif + ap->a.a_longdouble = va_arg (args, long double); + break; case TYPE_CHAR: - ap->a.a_char = va_arg (args, int); - break; -#ifdef HAVE_WINT_T + ap->a.a_char = va_arg (args, int); + break; +#if HAVE_WINT_T case TYPE_WIDE_CHAR: -#ifdef _WIN32 - ap->a.a_wide_char = va_arg (args, int); -#else - ap->a.a_wide_char = va_arg (args, wint_t); -#endif - break; + /* Although ISO C 99 7.24.1.(2) says that wint_t is "unchanged by + default argument promotions", this is not the case in mingw32, + where wint_t is 'unsigned short'. */ + ap->a.a_wide_char = + (sizeof (wint_t) < sizeof (int) + ? (wint_t) va_arg (args, int) + : va_arg (args, wint_t)); + break; #endif case TYPE_STRING: - ap->a.a_string = va_arg (args, const char *); - break; -#ifdef HAVE_WCHAR_T + ap->a.a_string = va_arg (args, const char *); + /* A null pointer is an invalid argument for "%s", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_string == NULL) + ap->a.a_string = "(NULL)"; + break; +#if HAVE_WCHAR_T case TYPE_WIDE_STRING: - ap->a.a_wide_string = va_arg (args, const wchar_t *); - break; + ap->a.a_wide_string = va_arg (args, const wchar_t *); + /* A null pointer is an invalid argument for "%ls", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_wide_string == NULL) + { + static const wchar_t wide_null_string[] = + { + (wchar_t)'(', + (wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L', + (wchar_t)')', + (wchar_t)0 + }; + ap->a.a_wide_string = wide_null_string; + } + break; #endif case TYPE_POINTER: - ap->a.a_pointer = va_arg (args, void *); - break; + ap->a.a_pointer = va_arg (args, void *); + break; case TYPE_COUNT_SCHAR_POINTER: - ap->a.a_count_schar_pointer = va_arg (args, signed char *); - break; + ap->a.a_count_schar_pointer = va_arg (args, signed char *); + break; case TYPE_COUNT_SHORT_POINTER: - ap->a.a_count_short_pointer = va_arg (args, short *); - break; + ap->a.a_count_short_pointer = va_arg (args, short *); + break; case TYPE_COUNT_INT_POINTER: - ap->a.a_count_int_pointer = va_arg (args, int *); - break; + ap->a.a_count_int_pointer = va_arg (args, int *); + break; case TYPE_COUNT_LONGINT_POINTER: - ap->a.a_count_longint_pointer = va_arg (args, long int *); - break; -#ifdef HAVE_LONG_LONG + ap->a.a_count_longint_pointer = va_arg (args, long int *); + break; +#if HAVE_LONG_LONG case TYPE_COUNT_LONGLONGINT_POINTER: - ap->a.a_count_longlongint_pointer = va_arg (args, long long int *); - break; + ap->a.a_count_longlongint_pointer = va_arg (args, long long int *); + break; +#endif +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + case TYPE_U8_STRING: + ap->a.a_u8_string = va_arg (args, const uint8_t *); + /* A null pointer is an invalid argument for "%U", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_u8_string == NULL) + { + static const uint8_t u8_null_string[] = + { '(', 'N', 'U', 'L', 'L', ')', 0 }; + ap->a.a_u8_string = u8_null_string; + } + break; + case TYPE_U16_STRING: + ap->a.a_u16_string = va_arg (args, const uint16_t *); + /* A null pointer is an invalid argument for "%lU", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_u16_string == NULL) + { + static const uint16_t u16_null_string[] = + { '(', 'N', 'U', 'L', 'L', ')', 0 }; + ap->a.a_u16_string = u16_null_string; + } + break; + case TYPE_U32_STRING: + ap->a.a_u32_string = va_arg (args, const uint32_t *); + /* A null pointer is an invalid argument for "%llU", but in practice + it occurs quite frequently in printf statements that produce + debug output. Use a fallback in this case. */ + if (ap->a.a_u32_string == NULL) + { + static const uint32_t u32_null_string[] = + { '(', 'N', 'U', 'L', 'L', ')', 0 }; + ap->a.a_u32_string = u32_null_string; + } + break; #endif default: - /* Unknown type. */ - return -1; + /* Unknown type. */ + return -1; } return 0; } diff --git a/glib/gnulib/printf-args.h b/glib/gnulib/printf-args.h index 250ce7e..8d268e9 100644 --- a/glib/gnulib/printf-args.h +++ b/glib/gnulib/printf-args.h @@ -1,29 +1,43 @@ /* Decomposed printf argument list. - Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc. + Copyright (C) 1999, 2002-2003, 2006-2007, 2011-2015 Free Software + Foundation, Inc. - This program 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, or (at your option) + 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 - Library General Public License for more details. + 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 Library General Public - License along with this program; if not, see . */ + You should have received a copy of the GNU General Public License along + with this program; if not, see . */ #ifndef _PRINTF_ARGS_H #define _PRINTF_ARGS_H +/* This file can be parametrized with the following macros: + ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. + PRINTF_FETCHARGS Name of the function to be declared. + STATIC Set to 'static' to declare the function static. */ + +/* Default parameters. */ +#ifndef PRINTF_FETCHARGS +# define PRINTF_FETCHARGS printf_fetchargs +#endif + +/* Get size_t. */ +#include + /* Get wchar_t. */ -#ifdef HAVE_WCHAR_T +#if HAVE_WCHAR_T # include #endif /* Get wint_t. */ -#ifdef HAVE_WINT_T +#if HAVE_WINT_T # include #endif @@ -43,24 +57,18 @@ typedef enum TYPE_UINT, TYPE_LONGINT, TYPE_ULONGINT, -#ifdef HAVE_LONG_LONG +#if HAVE_LONG_LONG TYPE_LONGLONGINT, TYPE_ULONGLONGINT, #endif -#ifdef HAVE_INT64_AND_I64 - TYPE_INT64, - TYPE_UINT64, -#endif TYPE_DOUBLE, -#ifdef HAVE_LONG_DOUBLE TYPE_LONGDOUBLE, -#endif TYPE_CHAR, -#ifdef HAVE_WINT_T +#if HAVE_WINT_T TYPE_WIDE_CHAR, #endif TYPE_STRING, -#ifdef HAVE_WCHAR_T +#if HAVE_WCHAR_T TYPE_WIDE_STRING, #endif TYPE_POINTER, @@ -68,9 +76,15 @@ typedef enum TYPE_COUNT_SHORT_POINTER, TYPE_COUNT_INT_POINTER, TYPE_COUNT_LONGINT_POINTER -#ifdef HAVE_LONG_LONG +#if HAVE_LONG_LONG , TYPE_COUNT_LONGLONGINT_POINTER #endif +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ +, TYPE_U8_STRING +, TYPE_U16_STRING +, TYPE_U32_STRING +#endif } arg_type; /* Polymorphic argument */ @@ -79,52 +93,56 @@ typedef struct arg_type type; union { - signed char a_schar; - unsigned char a_uchar; - short a_short; - unsigned short a_ushort; - int a_int; - unsigned int a_uint; - long int a_longint; - unsigned long int a_ulongint; -#ifdef HAVE_LONG_LONG - long long int a_longlongint; - unsigned long long int a_ulonglongint; + signed char a_schar; + unsigned char a_uchar; + short a_short; + unsigned short a_ushort; + int a_int; + unsigned int a_uint; + long int a_longint; + unsigned long int a_ulongint; +#if HAVE_LONG_LONG + long long int a_longlongint; + unsigned long long int a_ulonglongint; #endif -#ifdef HAVE_INT64_AND_I64 - __int64 a_int64; - unsigned __int64 a_uint64; + float a_float; + double a_double; + long double a_longdouble; + int a_char; +#if HAVE_WINT_T + wint_t a_wide_char; #endif - float a_float; - double a_double; -#ifdef HAVE_LONG_DOUBLE - long double a_longdouble; + const char* a_string; +#if HAVE_WCHAR_T + const wchar_t* a_wide_string; #endif - int a_char; -#ifdef HAVE_WINT_T - wint_t a_wide_char; + void* a_pointer; + signed char * a_count_schar_pointer; + short * a_count_short_pointer; + int * a_count_int_pointer; + long int * a_count_longint_pointer; +#if HAVE_LONG_LONG + long long int * a_count_longlongint_pointer; #endif - const char* a_string; -#ifdef HAVE_WCHAR_T - const wchar_t* a_wide_string; -#endif - void* a_pointer; - signed char * a_count_schar_pointer; - short * a_count_short_pointer; - int * a_count_int_pointer; - long int * a_count_longint_pointer; -#ifdef HAVE_LONG_LONG - long long int * a_count_longlongint_pointer; +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + const uint8_t * a_u8_string; + const uint16_t * a_u16_string; + const uint32_t * a_u32_string; #endif } a; } argument; +/* Number of directly allocated arguments (no malloc() needed). */ +#define N_DIRECT_ALLOC_ARGUMENTS 7 + typedef struct { - unsigned int count; + size_t count; argument *arg; + argument direct_alloc_arg[N_DIRECT_ALLOC_ARGUMENTS]; } arguments; @@ -135,6 +153,6 @@ STATIC #else extern #endif -int printf_fetchargs (va_list args, arguments *a); +int PRINTF_FETCHARGS (va_list args, arguments *a); #endif /* _PRINTF_ARGS_H */ diff --git a/glib/gnulib/printf-parse.c b/glib/gnulib/printf-parse.c index da7b4e0..83629d2 100644 --- a/glib/gnulib/printf-parse.c +++ b/glib/gnulib/printf-parse.c @@ -1,18 +1,31 @@ /* Formatted output to strings. - Copyright (C) 1999-2000, 2002-2003 Free Software Foundation, Inc. + Copyright (C) 1999-2000, 2002-2003, 2006-2015 Free Software Foundation, Inc. - This program 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, or (at your option) + 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this program; if not, see . */ + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, see . */ + +/* This file can be parametrized with the following macros: + CHAR_T The element type of the format string. + CHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters + in the format string are ASCII. + DIRECTIVE Structure denoting a format directive. + Depends on CHAR_T. + DIRECTIVES Structure denoting the set of format directives of a + format string. Depends on CHAR_T. + PRINTF_PARSE Function that parses a format string. + Depends on CHAR_T. + STATIC Set to 'static' to declare the function static. + ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. */ #ifdef HAVE_CONFIG_H # include @@ -21,465 +34,580 @@ #include "g-gnulib.h" /* Specification. */ -#include "printf-parse.h" +#ifndef PRINTF_PARSE +# include "printf-parse.h" +#endif + +#include "xsize.h" + +/* Default parameters. */ +#ifndef PRINTF_PARSE +# define PRINTF_PARSE printf_parse +# define CHAR_T char +# define DIRECTIVE char_directive +# define DIRECTIVES char_directives +#endif /* Get size_t, NULL. */ #include /* Get intmax_t. */ -#if HAVE_STDINT_H_WITH_UINTMAX +#if defined IN_LIBINTL || defined IN_LIBASPRINTF +# if HAVE_STDINT_H_WITH_UINTMAX +# include +# endif +# if HAVE_INTTYPES_H_WITH_UINTMAX +# include +# endif +#else # include #endif -#if HAVE_INTTYPES_H_WITH_UINTMAX -# include -#endif /* malloc(), realloc(), free(). */ #include +/* memcpy(). */ +#include + +/* errno. */ +#include + +#if CHAR_T_ONLY_ASCII +/* c_isascii(). */ +# include "c-ctype.h" +#endif + #ifdef STATIC STATIC #endif int -printf_parse (const char *format, char_directives *d, arguments *a) +PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a) { - const char *cp = format; /* pointer into format */ - int arg_posn = 0; /* number of regular arguments consumed */ - unsigned int d_allocated; /* allocated elements of d->dir */ - unsigned int a_allocated; /* allocated elements of a->arg */ - unsigned int max_width_length = 0; - unsigned int max_precision_length = 0; + const CHAR_T *cp = format; /* pointer into format */ + size_t arg_posn = 0; /* number of regular arguments consumed */ + size_t d_allocated; /* allocated elements of d->dir */ + size_t a_allocated; /* allocated elements of a->arg */ + size_t max_width_length = 0; + size_t max_precision_length = 0; d->count = 0; - d_allocated = 1; - d->dir = malloc (d_allocated * sizeof (char_directive)); - if (d->dir == NULL) - /* Out of memory. */ - return -1; + d_allocated = N_DIRECT_ALLOC_DIRECTIVES; + d->dir = d->direct_alloc_dir; a->count = 0; - a_allocated = 0; - a->arg = NULL; + a_allocated = N_DIRECT_ALLOC_ARGUMENTS; + a->arg = a->direct_alloc_arg; #define REGISTER_ARG(_index_,_type_) \ - { \ - unsigned int n = (_index_); \ - if (n >= a_allocated) \ - { \ - argument *memory; \ - a_allocated = 2 * a_allocated; \ - if (a_allocated <= n) \ - a_allocated = n + 1; \ - memory = (a->arg \ - ? realloc (a->arg, a_allocated * sizeof (argument)) \ - : malloc (a_allocated * sizeof (argument))); \ - if (memory == NULL) \ - /* Out of memory. */ \ - goto error; \ - a->arg = memory; \ - } \ - while (a->count <= n) \ - a->arg[a->count++].type = TYPE_NONE; \ - if (a->arg[n].type == TYPE_NONE) \ - a->arg[n].type = (_type_); \ - else if (a->arg[n].type != (_type_)) \ - /* Ambiguous type for positional argument. */ \ - goto error; \ + { \ + size_t n = (_index_); \ + if (n >= a_allocated) \ + { \ + size_t memory_size; \ + argument *memory; \ + \ + a_allocated = xtimes (a_allocated, 2); \ + if (a_allocated <= n) \ + a_allocated = xsum (n, 1); \ + memory_size = xtimes (a_allocated, sizeof (argument)); \ + if (size_overflow_p (memory_size)) \ + /* Overflow, would lead to out of memory. */ \ + goto out_of_memory; \ + memory = (argument *) (a->arg != a->direct_alloc_arg \ + ? realloc (a->arg, memory_size) \ + : malloc (memory_size)); \ + if (memory == NULL) \ + /* Out of memory. */ \ + goto out_of_memory; \ + if (a->arg == a->direct_alloc_arg) \ + memcpy (memory, a->arg, a->count * sizeof (argument)); \ + a->arg = memory; \ + } \ + while (a->count <= n) \ + a->arg[a->count++].type = TYPE_NONE; \ + if (a->arg[n].type == TYPE_NONE) \ + a->arg[n].type = (_type_); \ + else if (a->arg[n].type != (_type_)) \ + /* Ambiguous type for positional argument. */ \ + goto error; \ } while (*cp != '\0') { - char c = *cp++; + CHAR_T c = *cp++; if (c == '%') - { - int arg_index = -1; - char_directive *dp = &d->dir[d->count];/* pointer to next directive */ - - /* Initialize the next directive. */ - dp->dir_start = cp - 1; - dp->flags = 0; - dp->width_start = NULL; - dp->width_end = NULL; - dp->width_arg_index = -1; - dp->precision_start = NULL; - dp->precision_end = NULL; - dp->precision_arg_index = -1; - dp->arg_index = -1; - - /* Test for positional argument. */ - if (*cp >= '0' && *cp <= '9') - { - const char *np; - - for (np = cp; *np >= '0' && *np <= '9'; np++) - ; - if (*np == '$') - { - unsigned int n = 0; - - for (np = cp; *np >= '0' && *np <= '9'; np++) - n = 10 * n + (*np - '0'); - if (n == 0) - /* Positional argument 0. */ - goto error; - arg_index = n - 1; - cp = np + 1; - } - } - - /* Read the flags. */ - for (;;) - { - if (*cp == '\'') - { - dp->flags |= FLAG_GROUP; - cp++; - } - else if (*cp == '-') - { - dp->flags |= FLAG_LEFT; - cp++; - } - else if (*cp == '+') - { - dp->flags |= FLAG_SHOWSIGN; - cp++; - } - else if (*cp == ' ') - { - dp->flags |= FLAG_SPACE; - cp++; - } - else if (*cp == '#') - { - dp->flags |= FLAG_ALT; - cp++; - } - else if (*cp == '0') - { - dp->flags |= FLAG_ZERO; - cp++; - } - else - break; - } - - /* Parse the field width. */ - if (*cp == '*') - { - dp->width_start = cp; - cp++; - dp->width_end = cp; - if (max_width_length < 1) - max_width_length = 1; - - /* Test for positional argument. */ - if (*cp >= '0' && *cp <= '9') - { - const char *np; - - for (np = cp; *np >= '0' && *np <= '9'; np++) - ; - if (*np == '$') - { - unsigned int n = 0; - - for (np = cp; *np >= '0' && *np <= '9'; np++) - n = 10 * n + (*np - '0'); - if (n == 0) - /* Positional argument 0. */ - goto error; - dp->width_arg_index = n - 1; - cp = np + 1; - } - } - if (dp->width_arg_index < 0) - dp->width_arg_index = arg_posn++; - REGISTER_ARG (dp->width_arg_index, TYPE_INT); - } - else if (*cp >= '0' && *cp <= '9') - { - unsigned int width_length; - - dp->width_start = cp; - for (; *cp >= '0' && *cp <= '9'; cp++) - ; - dp->width_end = cp; - width_length = dp->width_end - dp->width_start; - if (max_width_length < width_length) - max_width_length = width_length; - } - - /* Parse the precision. */ - if (*cp == '.') - { - cp++; - if (*cp == '*') - { - dp->precision_start = cp - 1; - cp++; - dp->precision_end = cp; - if (max_precision_length < 2) - max_precision_length = 2; - - /* Test for positional argument. */ - if (*cp >= '0' && *cp <= '9') - { - const char *np; - - for (np = cp; *np >= '0' && *np <= '9'; np++) - ; - if (*np == '$') - { - unsigned int n = 0; - - for (np = cp; *np >= '0' && *np <= '9'; np++) - n = 10 * n + (*np - '0'); - if (n == 0) - /* Positional argument 0. */ - goto error; - dp->precision_arg_index = n - 1; - cp = np + 1; - } - } - if (dp->precision_arg_index < 0) - dp->precision_arg_index = arg_posn++; - REGISTER_ARG (dp->precision_arg_index, TYPE_INT); - } - else - { - unsigned int precision_length; - - dp->precision_start = cp - 1; - for (; *cp >= '0' && *cp <= '9'; cp++) - ; - dp->precision_end = cp; - precision_length = dp->precision_end - dp->precision_start; - if (max_precision_length < precision_length) - max_precision_length = precision_length; - } - } - - { - arg_type type; - - /* Parse argument type/size specifiers. */ - { - int flags = 0; - - for (;;) - { - if (*cp == 'h') - { - flags |= (1 << (flags & 1)); - cp++; - } - else if (*cp == 'L') - { - flags |= 4; - cp++; - } - else if (*cp == 'l') - { - flags += 8; - cp++; - } -#ifdef HAVE_INT64_AND_I64 - else if (cp[0] == 'I' && - cp[1] == '6' && - cp[2] == '4') - { - flags = 64; - cp += 3; - } + { + size_t arg_index = ARG_NONE; + DIRECTIVE *dp = &d->dir[d->count]; /* pointer to next directive */ + + /* Initialize the next directive. */ + dp->dir_start = cp - 1; + dp->flags = 0; + dp->width_start = NULL; + dp->width_end = NULL; + dp->width_arg_index = ARG_NONE; + dp->precision_start = NULL; + dp->precision_end = NULL; + dp->precision_arg_index = ARG_NONE; + dp->arg_index = ARG_NONE; + + /* Test for positional argument. */ + if (*cp >= '0' && *cp <= '9') + { + const CHAR_T *np; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + ; + if (*np == '$') + { + size_t n = 0; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + n = xsum (xtimes (n, 10), *np - '0'); + if (n == 0) + /* Positional argument 0. */ + goto error; + if (size_overflow_p (n)) + /* n too large, would lead to out of memory later. */ + goto error; + arg_index = n - 1; + cp = np + 1; + } + } + + /* Read the flags. */ + for (;;) + { + if (*cp == '\'') + { + dp->flags |= FLAG_GROUP; + cp++; + } + else if (*cp == '-') + { + dp->flags |= FLAG_LEFT; + cp++; + } + else if (*cp == '+') + { + dp->flags |= FLAG_SHOWSIGN; + cp++; + } + else if (*cp == ' ') + { + dp->flags |= FLAG_SPACE; + cp++; + } + else if (*cp == '#') + { + dp->flags |= FLAG_ALT; + cp++; + } + else if (*cp == '0') + { + dp->flags |= FLAG_ZERO; + cp++; + } +#if __GLIBC__ >= 2 && !defined __UCLIBC__ + else if (*cp == 'I') + { + dp->flags |= FLAG_LOCALIZED; + cp++; + } #endif -#ifdef HAVE_INTMAX_T - else if (*cp == 'j') - { - if (sizeof (intmax_t) > sizeof (long)) - { - /* intmax_t = long long */ - flags += 16; - } - else if (sizeof (intmax_t) > sizeof (int)) - { - /* intmax_t = long */ - flags += 8; - } - cp++; - } + else + break; + } + + /* Parse the field width. */ + if (*cp == '*') + { + dp->width_start = cp; + cp++; + dp->width_end = cp; + if (max_width_length < 1) + max_width_length = 1; + + /* Test for positional argument. */ + if (*cp >= '0' && *cp <= '9') + { + const CHAR_T *np; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + ; + if (*np == '$') + { + size_t n = 0; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + n = xsum (xtimes (n, 10), *np - '0'); + if (n == 0) + /* Positional argument 0. */ + goto error; + if (size_overflow_p (n)) + /* n too large, would lead to out of memory later. */ + goto error; + dp->width_arg_index = n - 1; + cp = np + 1; + } + } + if (dp->width_arg_index == ARG_NONE) + { + dp->width_arg_index = arg_posn++; + if (dp->width_arg_index == ARG_NONE) + /* arg_posn wrapped around. */ + goto error; + } + REGISTER_ARG (dp->width_arg_index, TYPE_INT); + } + else if (*cp >= '0' && *cp <= '9') + { + size_t width_length; + + dp->width_start = cp; + for (; *cp >= '0' && *cp <= '9'; cp++) + ; + dp->width_end = cp; + width_length = dp->width_end - dp->width_start; + if (max_width_length < width_length) + max_width_length = width_length; + } + + /* Parse the precision. */ + if (*cp == '.') + { + cp++; + if (*cp == '*') + { + dp->precision_start = cp - 1; + cp++; + dp->precision_end = cp; + if (max_precision_length < 2) + max_precision_length = 2; + + /* Test for positional argument. */ + if (*cp >= '0' && *cp <= '9') + { + const CHAR_T *np; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + ; + if (*np == '$') + { + size_t n = 0; + + for (np = cp; *np >= '0' && *np <= '9'; np++) + n = xsum (xtimes (n, 10), *np - '0'); + if (n == 0) + /* Positional argument 0. */ + goto error; + if (size_overflow_p (n)) + /* n too large, would lead to out of memory + later. */ + goto error; + dp->precision_arg_index = n - 1; + cp = np + 1; + } + } + if (dp->precision_arg_index == ARG_NONE) + { + dp->precision_arg_index = arg_posn++; + if (dp->precision_arg_index == ARG_NONE) + /* arg_posn wrapped around. */ + goto error; + } + REGISTER_ARG (dp->precision_arg_index, TYPE_INT); + } + else + { + size_t precision_length; + + dp->precision_start = cp - 1; + for (; *cp >= '0' && *cp <= '9'; cp++) + ; + dp->precision_end = cp; + precision_length = dp->precision_end - dp->precision_start; + if (max_precision_length < precision_length) + max_precision_length = precision_length; + } + } + + { + arg_type type; + + /* Parse argument type/size specifiers. */ + { + int flags = 0; + + for (;;) + { + if (*cp == 'h') + { + flags |= (1 << (flags & 1)); + cp++; + } + else if (*cp == 'L') + { + flags |= 4; + cp++; + } + else if (*cp == 'l') + { + flags += 8; + cp++; + } + else if (*cp == 'j') + { + if (sizeof (intmax_t) > sizeof (long)) + { + /* intmax_t = long long */ + flags += 16; + } + else if (sizeof (intmax_t) > sizeof (int)) + { + /* intmax_t = long */ + flags += 8; + } + cp++; + } + else if (*cp == 'z' || *cp == 'Z') + { + /* 'z' is standardized in ISO C 99, but glibc uses 'Z' + because the warning facility in gcc-2.95.2 understands + only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784). */ + if (sizeof (size_t) > sizeof (long)) + { + /* size_t = long long */ + flags += 16; + } + else if (sizeof (size_t) > sizeof (int)) + { + /* size_t = long */ + flags += 8; + } + cp++; + } + else if (*cp == 't') + { + if (sizeof (ptrdiff_t) > sizeof (long)) + { + /* ptrdiff_t = long long */ + flags += 16; + } + else if (sizeof (ptrdiff_t) > sizeof (int)) + { + /* ptrdiff_t = long */ + flags += 8; + } + cp++; + } +#if defined __APPLE__ && defined __MACH__ + /* On Mac OS X 10.3, PRIdMAX is defined as "qd". + We cannot change it to "lld" because PRIdMAX must also + be understood by the system's printf routines. */ + else if (*cp == 'q') + { + if (64 / 8 > sizeof (long)) + { + /* int64_t = long long */ + flags += 16; + } + else + { + /* int64_t = long */ + flags += 8; + } + cp++; + } #endif - else if (*cp == 'z' || *cp == 'Z') - { - /* 'z' is standardized in ISO C 99, but glibc uses 'Z' - because the warning facility in gcc-2.95.2 understands - only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784). */ - if (sizeof (size_t) > sizeof (long)) - { - /* size_t = long long */ - flags += 16; - } - else if (sizeof (size_t) > sizeof (int)) - { - /* size_t = long */ - flags += 8; - } - cp++; - } - else if (*cp == 't') - { - if (sizeof (ptrdiff_t) > sizeof (long)) - { - /* ptrdiff_t = long long */ - flags += 16; - } - else if (sizeof (ptrdiff_t) > sizeof (int)) - { - /* ptrdiff_t = long */ - flags += 8; - } - cp++; - } - else - break; - } - - /* Read the conversion character. */ - c = *cp++; - switch (c) - { - case 'd': case 'i': -#ifdef HAVE_INT64_AND_I64 - if (flags == 64) - type = TYPE_INT64; - else +#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + /* On native Windows, PRIdMAX is defined as "I64d". + We cannot change it to "lld" because PRIdMAX must also + be understood by the system's printf routines. */ + else if (*cp == 'I' && cp[1] == '6' && cp[2] == '4') + { + if (64 / 8 > sizeof (long)) + { + /* __int64 = long long */ + flags += 16; + } + else + { + /* __int64 = long */ + flags += 8; + } + cp += 3; + } #endif -#ifdef HAVE_LONG_LONG - if (flags >= 16 || (flags & 4)) - type = TYPE_LONGLONGINT; - else + else + break; + } + + /* Read the conversion character. */ + c = *cp++; + switch (c) + { + case 'd': case 'i': +#if HAVE_LONG_LONG + /* If 'long long' exists and is larger than 'long': */ + if (flags >= 16 || (flags & 4)) + type = TYPE_LONGLONGINT; + else #endif - if (flags >= 8) - type = TYPE_LONGINT; - else if (flags & 2) - type = TYPE_SCHAR; - else if (flags & 1) - type = TYPE_SHORT; - else - type = TYPE_INT; - break; - case 'o': case 'u': case 'x': case 'X': -#ifdef HAVE_INT64_AND_I64 - if (flags == 64) - type = TYPE_UINT64; - else + /* If 'long long' exists and is the same as 'long', we parse + "lld" into TYPE_LONGINT. */ + if (flags >= 8) + type = TYPE_LONGINT; + else if (flags & 2) + type = TYPE_SCHAR; + else if (flags & 1) + type = TYPE_SHORT; + else + type = TYPE_INT; + break; + case 'o': case 'u': case 'x': case 'X': +#if HAVE_LONG_LONG + /* If 'long long' exists and is larger than 'long': */ + if (flags >= 16 || (flags & 4)) + type = TYPE_ULONGLONGINT; + else #endif -#ifdef HAVE_LONG_LONG - if (flags >= 16 || (flags & 4)) - type = TYPE_ULONGLONGINT; - else + /* If 'unsigned long long' exists and is the same as + 'unsigned long', we parse "llu" into TYPE_ULONGINT. */ + if (flags >= 8) + type = TYPE_ULONGINT; + else if (flags & 2) + type = TYPE_UCHAR; + else if (flags & 1) + type = TYPE_USHORT; + else + type = TYPE_UINT; + break; + case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': + case 'a': case 'A': + if (flags >= 16 || (flags & 4)) + type = TYPE_LONGDOUBLE; + else + type = TYPE_DOUBLE; + break; + case 'c': + if (flags >= 8) +#if HAVE_WINT_T + type = TYPE_WIDE_CHAR; +#else + goto error; #endif - if (flags >= 8) - type = TYPE_ULONGINT; - else if (flags & 2) - type = TYPE_UCHAR; - else if (flags & 1) - type = TYPE_USHORT; - else - type = TYPE_UINT; - break; - case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': - case 'a': case 'A': -#ifdef HAVE_LONG_DOUBLE - if (flags >= 16 || (flags & 4)) - type = TYPE_LONGDOUBLE; - else + else + type = TYPE_CHAR; + break; +#if HAVE_WINT_T + case 'C': + type = TYPE_WIDE_CHAR; + c = 'c'; + break; #endif - type = TYPE_DOUBLE; - break; - case 'c': - if (flags >= 8) -#ifdef HAVE_WINT_T - type = TYPE_WIDE_CHAR; + case 's': + if (flags >= 8) +#if HAVE_WCHAR_T + type = TYPE_WIDE_STRING; #else - goto error; + goto error; #endif - else - type = TYPE_CHAR; - break; -#ifdef HAVE_WINT_T - case 'C': - type = TYPE_WIDE_CHAR; - c = 'c'; - break; + else + type = TYPE_STRING; + break; +#if HAVE_WCHAR_T + case 'S': + type = TYPE_WIDE_STRING; + c = 's'; + break; #endif - case 's': - if (flags >= 8) -#ifdef HAVE_WCHAR_T - type = TYPE_WIDE_STRING; -#else - goto error; + case 'p': + type = TYPE_POINTER; + break; + case 'n': +#if HAVE_LONG_LONG + /* If 'long long' exists and is larger than 'long': */ + if (flags >= 16 || (flags & 4)) + type = TYPE_COUNT_LONGLONGINT_POINTER; + else #endif - else - type = TYPE_STRING; - break; -#ifdef HAVE_WCHAR_T - case 'S': - type = TYPE_WIDE_STRING; - c = 's'; - break; + /* If 'long long' exists and is the same as 'long', we parse + "lln" into TYPE_COUNT_LONGINT_POINTER. */ + if (flags >= 8) + type = TYPE_COUNT_LONGINT_POINTER; + else if (flags & 2) + type = TYPE_COUNT_SCHAR_POINTER; + else if (flags & 1) + type = TYPE_COUNT_SHORT_POINTER; + else + type = TYPE_COUNT_INT_POINTER; + break; +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + case 'U': + if (flags >= 16) + type = TYPE_U32_STRING; + else if (flags >= 8) + type = TYPE_U16_STRING; + else + type = TYPE_U8_STRING; + break; #endif - case 'p': - type = TYPE_POINTER; - break; - case 'n': -#ifdef HAVE_LONG_LONG - if (flags >= 16 || (flags & 4)) - type = TYPE_COUNT_LONGLONGINT_POINTER; - else + case '%': + type = TYPE_NONE; + break; + default: + /* Unknown conversion character. */ + goto error; + } + } + + if (type != TYPE_NONE) + { + dp->arg_index = arg_index; + if (dp->arg_index == ARG_NONE) + { + dp->arg_index = arg_posn++; + if (dp->arg_index == ARG_NONE) + /* arg_posn wrapped around. */ + goto error; + } + REGISTER_ARG (dp->arg_index, type); + } + dp->conversion = c; + dp->dir_end = cp; + } + + d->count++; + if (d->count >= d_allocated) + { + size_t memory_size; + DIRECTIVE *memory; + + d_allocated = xtimes (d_allocated, 2); + memory_size = xtimes (d_allocated, sizeof (DIRECTIVE)); + if (size_overflow_p (memory_size)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + memory = (DIRECTIVE *) (d->dir != d->direct_alloc_dir + ? realloc (d->dir, memory_size) + : malloc (memory_size)); + if (memory == NULL) + /* Out of memory. */ + goto out_of_memory; + if (d->dir == d->direct_alloc_dir) + memcpy (memory, d->dir, d->count * sizeof (DIRECTIVE)); + d->dir = memory; + } + } +#if CHAR_T_ONLY_ASCII + else if (!c_isascii (c)) + { + /* Non-ASCII character. Not supported. */ + goto error; + } #endif - if (flags >= 8) - type = TYPE_COUNT_LONGINT_POINTER; - else if (flags & 2) - type = TYPE_COUNT_SCHAR_POINTER; - else if (flags & 1) - type = TYPE_COUNT_SHORT_POINTER; - else - type = TYPE_COUNT_INT_POINTER; - break; - case '%': - type = TYPE_NONE; - break; - default: - /* Unknown conversion character. */ - goto error; - } - } - - if (type != TYPE_NONE) - { - dp->arg_index = arg_index; - if (dp->arg_index < 0) - dp->arg_index = arg_posn++; - REGISTER_ARG (dp->arg_index, type); - } - dp->conversion = c; - dp->dir_end = cp; - } - - d->count++; - if (d->count >= d_allocated) - { - char_directive *memory; - - d_allocated = 2 * d_allocated; - memory = realloc (d->dir, d_allocated * sizeof (char_directive)); - if (memory == NULL) - /* Out of memory. */ - goto error; - d->dir = memory; - } - } } d->dir[d->count].dir_start = cp; @@ -488,9 +616,24 @@ printf_parse (const char *format, char_directives *d, arguments *a) return 0; error: - if (a->arg) + if (a->arg != a->direct_alloc_arg) free (a->arg); - if (d->dir) + if (d->dir != d->direct_alloc_dir) free (d->dir); + errno = EINVAL; + return -1; + +out_of_memory: + if (a->arg != a->direct_alloc_arg) + free (a->arg); + if (d->dir != d->direct_alloc_dir) + free (d->dir); + errno = ENOMEM; return -1; } + +#undef PRINTF_PARSE +#undef DIRECTIVES +#undef DIRECTIVE +#undef CHAR_T_ONLY_ASCII +#undef CHAR_T diff --git a/glib/gnulib/printf-parse.h b/glib/gnulib/printf-parse.h index 90f92a9..665789b 100644 --- a/glib/gnulib/printf-parse.h +++ b/glib/gnulib/printf-parse.h @@ -1,34 +1,53 @@ /* Parse printf format string. - Copyright (C) 1999, 2002 Free Software Foundation, Inc. + Copyright (C) 1999, 2002-2003, 2005, 2007, 2010-2015 Free Software + Foundation, Inc. - This program 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, or (at your option) + 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 - Library General Public License for more details. + 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 Library General Public - License along with this program; if not, see . */ + You should have received a copy of the GNU General Public License along + with this program; if not, see . */ #ifndef _PRINTF_PARSE_H #define _PRINTF_PARSE_H +/* This file can be parametrized with the following macros: + ENABLE_UNISTDIO Set to 1 to enable the unistdio extensions. + STATIC Set to 'static' to declare the function static. */ + +#if HAVE_FEATURES_H +# include /* for __GLIBC__, __UCLIBC__ */ +#endif + #include "printf-args.h" -/* Private namespace for gnulib functions */ -#define printf_parse _g_gnulib_printf_parse /* Flags */ -#define FLAG_GROUP 1 /* ' flag */ -#define FLAG_LEFT 2 /* - flag */ -#define FLAG_SHOWSIGN 4 /* + flag */ -#define FLAG_SPACE 8 /* space flag */ -#define FLAG_ALT 16 /* # flag */ -#define FLAG_ZERO 32 +#define FLAG_GROUP 1 /* ' flag */ +#define FLAG_LEFT 2 /* - flag */ +#define FLAG_SHOWSIGN 4 /* + flag */ +#define FLAG_SPACE 8 /* space flag */ +#define FLAG_ALT 16 /* # flag */ +#define FLAG_ZERO 32 +#if __GLIBC__ >= 2 && !defined __UCLIBC__ +# define FLAG_LOCALIZED 64 /* I flag, uses localized digits */ +#endif + +/* arg_index value indicating that no argument is consumed. */ +#define ARG_NONE (~(size_t)0) + +/* xxx_directive: A parsed directive. + xxx_directives: A parsed format string. */ + +/* Number of directly allocated directives (no malloc() needed). */ +#define N_DIRECT_ALLOC_DIRECTIVES 7 /* A parsed directive. */ typedef struct @@ -38,35 +57,137 @@ typedef struct int flags; const char* width_start; const char* width_end; - int width_arg_index; + size_t width_arg_index; const char* precision_start; const char* precision_end; - int precision_arg_index; - char conversion; /* d i o u x X f e E g G c s p n U % but not C S */ - int arg_index; + size_t precision_arg_index; + char conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */ + size_t arg_index; } char_directive; /* A parsed format string. */ typedef struct { - unsigned int count; + size_t count; char_directive *dir; - unsigned int max_width_length; - unsigned int max_precision_length; + size_t max_width_length; + size_t max_precision_length; + char_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES]; } char_directives; +#if ENABLE_UNISTDIO + +/* A parsed directive. */ +typedef struct +{ + const uint8_t* dir_start; + const uint8_t* dir_end; + int flags; + const uint8_t* width_start; + const uint8_t* width_end; + size_t width_arg_index; + const uint8_t* precision_start; + const uint8_t* precision_end; + size_t precision_arg_index; + uint8_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */ + size_t arg_index; +} +u8_directive; + +/* A parsed format string. */ +typedef struct +{ + size_t count; + u8_directive *dir; + size_t max_width_length; + size_t max_precision_length; + u8_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES]; +} +u8_directives; + +/* A parsed directive. */ +typedef struct +{ + const uint16_t* dir_start; + const uint16_t* dir_end; + int flags; + const uint16_t* width_start; + const uint16_t* width_end; + size_t width_arg_index; + const uint16_t* precision_start; + const uint16_t* precision_end; + size_t precision_arg_index; + uint16_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */ + size_t arg_index; +} +u16_directive; + +/* A parsed format string. */ +typedef struct +{ + size_t count; + u16_directive *dir; + size_t max_width_length; + size_t max_precision_length; + u16_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES]; +} +u16_directives; + +/* A parsed directive. */ +typedef struct +{ + const uint32_t* dir_start; + const uint32_t* dir_end; + int flags; + const uint32_t* width_start; + const uint32_t* width_end; + size_t width_arg_index; + const uint32_t* precision_start; + const uint32_t* precision_end; + size_t precision_arg_index; + uint32_t conversion; /* d i o u x X f F e E g G a A c s p n U % but not C S */ + size_t arg_index; +} +u32_directive; + +/* A parsed format string. */ +typedef struct +{ + size_t count; + u32_directive *dir; + size_t max_width_length; + size_t max_precision_length; + u32_directive direct_alloc_dir[N_DIRECT_ALLOC_DIRECTIVES]; +} +u32_directives; + +#endif + /* Parses the format string. Fills in the number N of directives, and fills in directives[0], ..., directives[N-1], and sets directives[N].dir_start to the end of the format string. Also fills in the arg_type fields of the arguments and the needed count of arguments. */ -#ifdef STATIC -STATIC +#if ENABLE_UNISTDIO +extern int + ulc_printf_parse (const char *format, char_directives *d, arguments *a); +extern int + u8_printf_parse (const uint8_t *format, u8_directives *d, arguments *a); +extern int + u16_printf_parse (const uint16_t *format, u16_directives *d, + arguments *a); +extern int + u32_printf_parse (const uint32_t *format, u32_directives *d, + arguments *a); #else +# ifdef STATIC +STATIC +# else extern -#endif +# endif int printf_parse (const char *format, char_directives *d, arguments *a); +#endif #endif /* _PRINTF_PARSE_H */ diff --git a/glib/gnulib/printf.c b/glib/gnulib/printf.c index 6edca1a..66261b8 100644 --- a/glib/gnulib/printf.c +++ b/glib/gnulib/printf.c @@ -88,16 +88,16 @@ int _g_gnulib_vprintf (char const *format, va_list args) int _g_gnulib_vfprintf (FILE *file, char const *format, va_list args) { char *result; - size_t length; + size_t length, rlength; result = vasnprintf (NULL, &length, format, args); if (result == NULL) return -1; - fwrite (result, 1, length, file); + rlength = fwrite (result, 1, length, file); free (result); - return length; + return rlength; } int _g_gnulib_vsprintf (char *string, char const *format, va_list args) diff --git a/glib/gnulib/vasnprintf.c b/glib/gnulib/vasnprintf.c index 018e0d9..9933d16 100644 --- a/glib/gnulib/vasnprintf.c +++ b/glib/gnulib/vasnprintf.c @@ -1,18 +1,47 @@ /* vsprintf with automatic memory allocation. - Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc. + Copyright (C) 1999, 2002-2015 Free Software Foundation, Inc. - This program 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, or (at your option) + 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 - Library General Public License for more details. + 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 Library General Public - License along with this program; if not, see . */ + You should have received a copy of the GNU General Public License along + with this program; if not, see . */ + +/* This file can be parametrized with the following macros: + VASNPRINTF The name of the function being defined. + FCHAR_T The element type of the format string. + DCHAR_T The element type of the destination (result) string. + FCHAR_T_ONLY_ASCII Set to 1 to enable verification that all characters + in the format string are ASCII. MUST be set if + FCHAR_T and DCHAR_T are not the same type. + DIRECTIVE Structure denoting a format directive. + Depends on FCHAR_T. + DIRECTIVES Structure denoting the set of format directives of a + format string. Depends on FCHAR_T. + PRINTF_PARSE Function that parses a format string. + Depends on FCHAR_T. + DCHAR_CPY memcpy like function for DCHAR_T[] arrays. + DCHAR_SET memset like function for DCHAR_T[] arrays. + DCHAR_MBSNLEN mbsnlen like function for DCHAR_T[] arrays. + SNPRINTF The system's snprintf (or similar) function. + This may be either snprintf or swprintf. + TCHAR_T The element type of the argument and result string + of the said SNPRINTF function. This may be either + char or wchar_t. The code exploits that + sizeof (TCHAR_T) | sizeof (DCHAR_T) and + alignof (TCHAR_T) <= alignof (DCHAR_T). + DCHAR_IS_TCHAR Set to 1 if DCHAR_T and TCHAR_T are the same type. + DCHAR_CONV_FROM_ENCODING A function to convert from char[] to DCHAR[]. + DCHAR_IS_UINT8_T Set to 1 if DCHAR_T is uint8_t. + DCHAR_IS_UINT16_T Set to 1 if DCHAR_T is uint16_t. + DCHAR_IS_UINT32_T Set to 1 if DCHAR_T is uint32_t. */ #ifndef _WIN32 /* Tell glibc's to provide a prototype for snprintf(). @@ -23,7 +52,7 @@ #endif #endif -#ifdef HAVE_CONFIG_H +#ifndef VASNPRINTF # include #endif #include "glib/galloca.h" @@ -33,16 +62,156 @@ /* Specification. */ #include "vasnprintf.h" -#include /* snprintf(), sprintf() */ -#include /* abort(), malloc(), realloc(), free() */ -#include /* memcpy(), strlen() */ -#include /* errno */ -#include /* CHAR_BIT */ -#include /* DBL_MAX_EXP, LDBL_MAX_EXP */ -#include "printf-parse.h" +#include /* localeconv() */ +#include /* snprintf(), sprintf() */ +#include /* abort(), malloc(), realloc(), free() */ +#include /* memcpy(), strlen() */ +#include /* errno */ +#include /* CHAR_BIT */ +#include /* DBL_MAX_EXP, LDBL_MAX_EXP */ +# include "printf-parse.h" + +#include "xsize.h" + +#include "verify.h" + +#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL +# include +# include "float+.h" +#endif + +#if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnand-nolibm.h" +#endif + +#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnanl-nolibm.h" +# include "fpucw.h" +#endif + +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnand-nolibm.h" +# include "printf-frexp.h" +#endif + +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL +# include +# include "isnanl-nolibm.h" +# include "printf-frexpl.h" +# include "fpucw.h" +#endif + +/* Default parameters. */ +#ifndef VASNPRINTF +# if WIDE_CHAR_VERSION +# define VASNPRINTF vasnwprintf +# define FCHAR_T wchar_t +# define DCHAR_T wchar_t +# define TCHAR_T wchar_t +# define DCHAR_IS_TCHAR 1 +# define DIRECTIVE wchar_t_directive +# define DIRECTIVES wchar_t_directives +# define PRINTF_PARSE wprintf_parse +# define DCHAR_CPY wmemcpy +# define DCHAR_SET wmemset +# else +# define VASNPRINTF vasnprintf +# define FCHAR_T char +# define DCHAR_T char +# define TCHAR_T char +# define DCHAR_IS_TCHAR 1 +# define DIRECTIVE char_directive +# define DIRECTIVES char_directives +# define PRINTF_PARSE printf_parse +# define DCHAR_CPY memcpy +# define DCHAR_SET memset +# endif +#endif +#if WIDE_CHAR_VERSION + /* TCHAR_T is wchar_t. */ +# define USE_SNPRINTF 1 +# if HAVE_DECL__SNWPRINTF + /* On Windows, the function swprintf() has a different signature than + on Unix; we use the function _snwprintf() or - on mingw - snwprintf() + instead. The mingw function snwprintf() has fewer bugs than the + MSVCRT function _snwprintf(), so prefer that. */ +# if defined __MINGW32__ +# define SNPRINTF snwprintf +# else +# define SNPRINTF _snwprintf +# endif +# else + /* Unix. */ +# define SNPRINTF swprintf +# endif +#else + /* TCHAR_T is char. */ + /* Use snprintf if it exists under the name 'snprintf' or '_snprintf'. + But don't use it on BeOS, since BeOS snprintf produces no output if the + size argument is >= 0x3000000. + Also don't use it on Linux libc5, since there snprintf with size = 1 + writes any output without bounds, like sprintf. */ +# if (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF) && !defined __BEOS__ && !(__GNU_LIBRARY__ == 1) +# define USE_SNPRINTF 1 +# else +# define USE_SNPRINTF 0 +# endif +# if HAVE_DECL__SNPRINTF + /* Windows. The mingw function snprintf() has fewer bugs than the MSVCRT + function _snprintf(), so prefer that. */ +# if defined __MINGW32__ +# define SNPRINTF snprintf + /* Here we need to call the native snprintf, not rpl_snprintf. */ +# undef snprintf +# else +# define SNPRINTF _snprintf +# endif +# else + /* Unix. */ +# define SNPRINTF snprintf + /* Here we need to call the native snprintf, not rpl_snprintf. */ +# undef snprintf +# endif +#endif +/* Here we need to call the native sprintf, not rpl_sprintf. */ +#undef sprintf + +/* GCC >= 4.0 with -Wall emits unjustified "... may be used uninitialized" + warnings in this file. Use -Dlint to suppress them. */ +#ifdef lint +# define IF_LINT(Code) Code +#else +# define IF_LINT(Code) /* empty */ +#endif + +/* Avoid some warnings from "gcc -Wshadow". + This file doesn't use the exp() and remainder() functions. */ +#undef exp +#define exp expo +#undef remainder +#define remainder rem + +#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && !WIDE_CHAR_VERSION +# if (HAVE_STRNLEN && !defined _AIX) +# define local_strnlen strnlen +# else +# ifndef local_strnlen_defined +# define local_strnlen_defined 1 +static size_t +local_strnlen (const char *string, size_t maxlen) +{ + const char *end = memchr (string, '\0', maxlen); + return end ? (size_t) (end - string) : maxlen; +} +# endif +# endif +#endif -#ifdef HAVE_WCHAR_T -# ifdef HAVE_WCSLEN +#if (((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && WIDE_CHAR_VERSION) || ((!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && !WIDE_CHAR_VERSION && DCHAR_IS_TCHAR)) && HAVE_WCHAR_T +# if HAVE_WCSLEN # define local_wcslen wcslen # else /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid @@ -64,1024 +233,5352 @@ local_wcslen (const wchar_t *s) # endif #endif -/* For those losing systems which don't have 'alloca' we have to add - some additional code emulating it. */ -#ifdef HAVE_ALLOCA -# define freea(p) /* nothing */ -#else -# define alloca(n) malloc (n) -# define freea(p) free (p) +#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99) && HAVE_WCHAR_T && WIDE_CHAR_VERSION +# if HAVE_WCSNLEN +# define local_wcsnlen wcsnlen +# else +# ifndef local_wcsnlen_defined +# define local_wcsnlen_defined 1 +static size_t +local_wcsnlen (const wchar_t *s, size_t maxlen) +{ + const wchar_t *ptr; + + for (ptr = s; maxlen > 0 && *ptr != (wchar_t) 0; ptr++, maxlen--) + ; + return ptr - s; +} +# endif +# endif +#endif + +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && !defined IN_LIBINTL +/* Determine the decimal-point character according to the current locale. */ +# ifndef decimal_point_char_defined +# define decimal_point_char_defined 1 +static char +decimal_point_char (void) +{ + const char *point; + /* Determine it in a multithread-safe way. We know nl_langinfo is + multithread-safe on glibc systems and Mac OS X systems, but is not required + to be multithread-safe by POSIX. sprintf(), however, is multithread-safe. + localeconv() is rarely multithread-safe. */ +# if HAVE_NL_LANGINFO && (__GLIBC__ || defined __UCLIBC__ || (defined __APPLE__ && defined __MACH__)) + point = nl_langinfo (RADIXCHAR); +# elif 1 + char pointbuf[5]; + sprintf (pointbuf, "%#.0f", 1.0); + point = &pointbuf[1]; +# else + point = localeconv () -> decimal_point; +# endif + /* The decimal point is always a single byte: either '.' or ','. */ + return (point[0] != '\0' ? point[0] : '.'); +} +# endif #endif -#ifndef HAVE_LONG_LONG_FORMAT +#if NEED_PRINTF_INFINITE_DOUBLE && !NEED_PRINTF_DOUBLE && !defined IN_LIBINTL + +/* Equivalent to !isfinite(x) || x == 0, but does not require libm. */ +static int +is_infinite_or_zero (double x) +{ + return isnand (x) || x + x == x; +} + +#endif + +#if NEED_PRINTF_INFINITE_LONG_DOUBLE && !NEED_PRINTF_LONG_DOUBLE && !defined IN_LIBINTL + +/* Equivalent to !isfinite(x) || x == 0, but does not require libm. */ static int -print_long_long (char *buf, - int len, - int width, - int precision, - unsigned long flags, - char conversion, - unsigned long long number) +is_infinite_or_zerol (long double x) { - int negative = FALSE; - char buffer[128]; - char *bufferend; - char *pointer; - int base; - static const char *upper = "0123456789ABCDEFX"; - static const char *lower = "0123456789abcdefx"; - const char *digits; - int i; - char *p; - int count; - -#define EMIT(c) \ - if (p - buf == len - 1) \ - { \ - *p++ = '\0'; \ - return len; \ - } \ - else \ - *p++ = c; - - p = buf; - - switch (conversion) + return isnanl (x) || x + x == x; +} + +#endif + +#if (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL + +/* Converting 'long double' to decimal without rare rounding bugs requires + real bignums. We use the naming conventions of GNU gmp, but vastly simpler + (and slower) algorithms. */ + +typedef unsigned int mp_limb_t; +# define GMP_LIMB_BITS 32 +verify (sizeof (mp_limb_t) * CHAR_BIT == GMP_LIMB_BITS); + +typedef unsigned long long mp_twolimb_t; +# define GMP_TWOLIMB_BITS 64 +verify (sizeof (mp_twolimb_t) * CHAR_BIT == GMP_TWOLIMB_BITS); + +/* Representation of a bignum >= 0. */ +typedef struct +{ + size_t nlimbs; + mp_limb_t *limbs; /* Bits in little-endian order, allocated with malloc(). */ +} mpn_t; + +/* Compute the product of two bignums >= 0. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +multiply (mpn_t src1, mpn_t src2, mpn_t *dest) +{ + const mp_limb_t *p1; + const mp_limb_t *p2; + size_t len1; + size_t len2; + + if (src1.nlimbs <= src2.nlimbs) { - case 'o': - base = 8; - digits = lower; - negative = FALSE; - break; - case 'x': - base = 16; - digits = lower; - negative = FALSE; - break; - case 'X': - base = 16; - digits = upper; - negative = FALSE; - break; - case 'u': - base = 10; - digits = lower; - negative = FALSE; - break; - default: - base = 10; - digits = lower; - negative = (long long)number < 0; - if (negative) - number = -((long long)number); - break; + len1 = src1.nlimbs; + p1 = src1.limbs; + len2 = src2.nlimbs; + p2 = src2.limbs; } - - /* Build number */ - pointer = bufferend = &buffer[sizeof(buffer) - 1]; - *pointer-- = '\0'; - for (i = 1; i < (int)sizeof(buffer); i++) + else + { + len1 = src2.nlimbs; + p1 = src2.limbs; + len2 = src1.nlimbs; + p2 = src1.limbs; + } + /* Now 0 <= len1 <= len2. */ + if (len1 == 0) + { + /* src1 or src2 is zero. */ + dest->nlimbs = 0; + dest->limbs = (mp_limb_t *) malloc (1); + } + else { - *pointer-- = digits[number % base]; - number /= base; - if (number == 0) - break; + /* Here 1 <= len1 <= len2. */ + size_t dlen; + mp_limb_t *dp; + size_t k, i, j; + + dlen = len1 + len2; + dp = (mp_limb_t *) malloc (dlen * sizeof (mp_limb_t)); + if (dp == NULL) + return NULL; + for (k = len2; k > 0; ) + dp[--k] = 0; + for (i = 0; i < len1; i++) + { + mp_limb_t digit1 = p1[i]; + mp_twolimb_t carry = 0; + for (j = 0; j < len2; j++) + { + mp_limb_t digit2 = p2[j]; + carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2; + carry += dp[i + j]; + dp[i + j] = (mp_limb_t) carry; + carry = carry >> GMP_LIMB_BITS; + } + dp[i + len2] = (mp_limb_t) carry; + } + /* Normalise. */ + while (dlen > 0 && dp[dlen - 1] == 0) + dlen--; + dest->nlimbs = dlen; + dest->limbs = dp; } + return dest->limbs; +} + +/* Compute the quotient of a bignum a >= 0 and a bignum b > 0. + a is written as a = q * b + r with 0 <= r < b. q is the quotient, r + the remainder. + Finally, round-to-even is performed: If r > b/2 or if r = b/2 and q is odd, + q is incremented. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +divide (mpn_t a, mpn_t b, mpn_t *q) +{ + /* Algorithm: + First normalise a and b: a=[a[m-1],...,a[0]], b=[b[n-1],...,b[0]] + with m>=0 and n>0 (in base beta = 2^GMP_LIMB_BITS). + If m=n=1, perform a single-precision division: + r:=0, j:=m, + while j>0 do + {Here (q[m-1]*beta^(m-1)+...+q[j]*beta^j) * b[0] + r*beta^j = + = a[m-1]*beta^(m-1)+...+a[j]*beta^j und 0<=r=n>1, perform a multiple-precision division: + We have a/b < beta^(m-n+1). + s:=intDsize-1-(highest bit in b[n-1]), 0<=s=beta/2. + For j=m-n,...,0: {Here 0 <= r < b*beta^(j+1).} + Compute q* : + q* := floor((r[j+n]*beta+r[j+n-1])/b[n-1]). + In case of overflow (q* >= beta) set q* := beta-1. + Compute c2 := ((r[j+n]*beta+r[j+n-1]) - q* * b[n-1])*beta + r[j+n-2] + and c3 := b[n-2] * q*. + {We have 0 <= c2 < 2*beta^2, even 0 <= c2 < beta^2 if no overflow + occurred. Furthermore 0 <= c3 < beta^2. + If there was overflow and + r[j+n]*beta+r[j+n-1] - q* * b[n-1] >= beta, i.e. c2 >= beta^2, + the next test can be skipped.} + While c3 > c2, {Here 0 <= c2 < c3 < beta^2} + Put q* := q* - 1, c2 := c2 + b[n-1]*beta, c3 := c3 - b[n-2]. + If q* > 0: + Put r := r - b * q* * beta^j. In detail: + [r[n+j],...,r[j]] := [r[n+j],...,r[j]] - q* * [b[n-1],...,b[0]]. + hence: u:=0, for i:=0 to n-1 do + u := u + q* * b[i], + r[j+i]:=r[j+i]-(u mod beta) (+ beta, if carry), + u:=u div beta (+ 1, if carry in subtraction) + r[n+j]:=r[n+j]-u. + {Since always u = (q* * [b[i-1],...,b[0]] div beta^i) + 1 + < q* + 1 <= beta, + the carry u does not overflow.} + If a negative carry occurs, put q* := q* - 1 + and [r[n+j],...,r[j]] := [r[n+j],...,r[j]] + [0,b[n-1],...,b[0]]. + Set q[j] := q*. + Normalise [q[m-n],..,q[0]]; this yields the quotient q. + Shift [r[n-1],...,r[0]] right by s bits and normalise; this yields the + rest r. + The room for q[j] can be allocated at the memory location of r[n+j]. + Finally, round-to-even: + Shift r left by 1 bit. + If r > b or if r = b and q[0] is odd, q := q+1. + */ + const mp_limb_t *a_ptr = a.limbs; + size_t a_len = a.nlimbs; + const mp_limb_t *b_ptr = b.limbs; + size_t b_len = b.nlimbs; + mp_limb_t *roomptr; + mp_limb_t *tmp_roomptr = NULL; + mp_limb_t *q_ptr; + size_t q_len; + mp_limb_t *r_ptr; + size_t r_len; - /* Adjust width */ - width -= (bufferend - pointer) - 1; + /* Allocate room for a_len+2 digits. + (Need a_len+1 digits for the real division and 1 more digit for the + final rounding of q.) */ + roomptr = (mp_limb_t *) malloc ((a_len + 2) * sizeof (mp_limb_t)); + if (roomptr == NULL) + return NULL; - /* Adjust precision */ - if (precision != -1) + /* Normalise a. */ + while (a_len > 0 && a_ptr[a_len - 1] == 0) + a_len--; + + /* Normalise b. */ + for (;;) { - precision -= (bufferend - pointer) - 1; - if (precision < 0) - precision = 0; - flags |= FLAG_ZERO; + if (b_len == 0) + /* Division by zero. */ + abort (); + if (b_ptr[b_len - 1] == 0) + b_len--; + else + break; } - /* Adjust width further */ - if (negative || (flags & FLAG_SHOWSIGN) || (flags & FLAG_SPACE)) - width--; - if (flags & FLAG_ALT) + /* Here m = a_len >= 0 and n = b_len > 0. */ + + if (a_len < b_len) + { + /* m beta^(m-2) <= a/b < beta^m */ + r_ptr = roomptr; + q_ptr = roomptr + 1; + { + mp_limb_t den = b_ptr[0]; + mp_limb_t remainder = 0; + const mp_limb_t *sourceptr = a_ptr + a_len; + mp_limb_t *destptr = q_ptr + a_len; + size_t count; + for (count = a_len; count > 0; count--) + { + mp_twolimb_t num = + ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--sourceptr; + *--destptr = num / den; + remainder = num % den; + } + /* Normalise and store r. */ + if (remainder > 0) + { + r_ptr[0] = remainder; + r_len = 1; + } + else + r_len = 0; + /* Normalise q. */ + q_len = a_len; + if (q_ptr[q_len - 1] == 0) + q_len--; + } } + else + { + /* n>1: multiple precision division. + beta^(m-1) <= a < beta^m, beta^(n-1) <= b < beta^n ==> + beta^(m-n-1) <= a/b < beta^(m-n+1). */ + /* Determine s. */ + size_t s; + { + mp_limb_t msd = b_ptr[b_len - 1]; /* = b[n-1], > 0 */ + /* Determine s = GMP_LIMB_BITS - integer_length (msd). + Code copied from gnulib's integer_length.c. */ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) + s = __builtin_clz (msd); +# else +# if defined DBL_EXPBIT0_WORD && defined DBL_EXPBIT0_BIT + if (GMP_LIMB_BITS <= DBL_MANT_BIT) + { + /* Use 'double' operations. + Assumes an IEEE 754 'double' implementation. */ +# define DBL_EXP_MASK ((DBL_MAX_EXP - DBL_MIN_EXP) | 7) +# define DBL_EXP_BIAS (DBL_EXP_MASK / 2 - 1) +# define NWORDS \ + ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + union { double value; unsigned int word[NWORDS]; } m; + + /* Use a single integer to floating-point conversion. */ + m.value = msd; - /* Output prefixes spaces if needed */ - if (! ((flags & FLAG_LEFT) || - ((flags & FLAG_ZERO) && (precision == -1)))) + s = GMP_LIMB_BITS + - (((m.word[DBL_EXPBIT0_WORD] >> DBL_EXPBIT0_BIT) & DBL_EXP_MASK) + - DBL_EXP_BIAS); + } + else +# undef NWORDS +# endif + { + s = 31; + if (msd >= 0x10000) + { + msd = msd >> 16; + s -= 16; + } + if (msd >= 0x100) + { + msd = msd >> 8; + s -= 8; + } + if (msd >= 0x10) + { + msd = msd >> 4; + s -= 4; + } + if (msd >= 0x4) + { + msd = msd >> 2; + s -= 2; + } + if (msd >= 0x2) + { + msd = msd >> 1; + s -= 1; + } + } +# endif + } + /* 0 <= s < GMP_LIMB_BITS. + Copy b, shifting it left by s bits. */ + if (s > 0) + { + tmp_roomptr = (mp_limb_t *) malloc (b_len * sizeof (mp_limb_t)); + if (tmp_roomptr == NULL) + { + free (roomptr); + return NULL; + } + { + const mp_limb_t *sourceptr = b_ptr; + mp_limb_t *destptr = tmp_roomptr; + mp_twolimb_t accu = 0; + size_t count; + for (count = b_len; count > 0; count--) + { + accu += (mp_twolimb_t) *sourceptr++ << s; + *destptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + /* accu must be zero, since that was how s was determined. */ + if (accu != 0) + abort (); + } + b_ptr = tmp_roomptr; + } + /* Copy a, shifting it left by s bits, yields r. + Memory layout: + At the beginning: r = roomptr[0..a_len], + at the end: r = roomptr[0..b_len-1], q = roomptr[b_len..a_len] */ + r_ptr = roomptr; + if (s == 0) + { + memcpy (r_ptr, a_ptr, a_len * sizeof (mp_limb_t)); + r_ptr[a_len] = 0; + } + else + { + const mp_limb_t *sourceptr = a_ptr; + mp_limb_t *destptr = r_ptr; + mp_twolimb_t accu = 0; + size_t count; + for (count = a_len; count > 0; count--) + { + accu += (mp_twolimb_t) *sourceptr++ << s; + *destptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + *destptr++ = (mp_limb_t) accu; + } + q_ptr = roomptr + b_len; + q_len = a_len - b_len + 1; /* q will have m-n+1 limbs */ + { + size_t j = a_len - b_len; /* m-n */ + mp_limb_t b_msd = b_ptr[b_len - 1]; /* b[n-1] */ + mp_limb_t b_2msd = b_ptr[b_len - 2]; /* b[n-2] */ + mp_twolimb_t b_msdd = /* b[n-1]*beta+b[n-2] */ + ((mp_twolimb_t) b_msd << GMP_LIMB_BITS) | b_2msd; + /* Division loop, traversed m-n+1 times. + j counts down, b is unchanged, beta/2 <= b[n-1] < beta. */ + for (;;) + { + mp_limb_t q_star; + mp_limb_t c1; + if (r_ptr[j + b_len] < b_msd) /* r[j+n] < b[n-1] ? */ + { + /* Divide r[j+n]*beta+r[j+n-1] by b[n-1], no overflow. */ + mp_twolimb_t num = + ((mp_twolimb_t) r_ptr[j + b_len] << GMP_LIMB_BITS) + | r_ptr[j + b_len - 1]; + q_star = num / b_msd; + c1 = num % b_msd; + } + else + { + /* Overflow, hence r[j+n]*beta+r[j+n-1] >= beta*b[n-1]. */ + q_star = (mp_limb_t)~(mp_limb_t)0; /* q* = beta-1 */ + /* Test whether r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] >= beta + <==> r[j+n]*beta+r[j+n-1] + b[n-1] >= beta*b[n-1]+beta + <==> b[n-1] < floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) + {<= beta !}. + If yes, jump directly to the subtraction loop. + (Otherwise, r[j+n]*beta+r[j+n-1] - (beta-1)*b[n-1] < beta + <==> floor((r[j+n]*beta+r[j+n-1]+b[n-1])/beta) = b[n-1] ) */ + if (r_ptr[j + b_len] > b_msd + || (c1 = r_ptr[j + b_len - 1] + b_msd) < b_msd) + /* r[j+n] >= b[n-1]+1 or + r[j+n] = b[n-1] and the addition r[j+n-1]+b[n-1] gives a + carry. */ + goto subtract; + } + /* q_star = q*, + c1 = (r[j+n]*beta+r[j+n-1]) - q* * b[n-1] (>=0, 0, decrease it by + b[n-1]*beta+b[n-2]. Because of b[n-1]*beta+b[n-2] >= beta^2/2 + this can happen only twice. */ + if (c3 > c2) + { + q_star = q_star - 1; /* q* := q* - 1 */ + if (c3 - c2 > b_msdd) + q_star = q_star - 1; /* q* := q* - 1 */ + } + } + if (q_star > 0) + subtract: + { + /* Subtract r := r - b * q* * beta^j. */ + mp_limb_t cr; + { + const mp_limb_t *sourceptr = b_ptr; + mp_limb_t *destptr = r_ptr + j; + mp_twolimb_t carry = 0; + size_t count; + for (count = b_len; count > 0; count--) + { + /* Here 0 <= carry <= q*. */ + carry = + carry + + (mp_twolimb_t) q_star * (mp_twolimb_t) *sourceptr++ + + (mp_limb_t) ~(*destptr); + /* Here 0 <= carry <= beta*q* + beta-1. */ + *destptr++ = ~(mp_limb_t) carry; + carry = carry >> GMP_LIMB_BITS; /* <= q* */ + } + cr = (mp_limb_t) carry; + } + /* Subtract cr from r_ptr[j + b_len], then forget about + r_ptr[j + b_len]. */ + if (cr > r_ptr[j + b_len]) + { + /* Subtraction gave a carry. */ + q_star = q_star - 1; /* q* := q* - 1 */ + /* Add b back. */ + { + const mp_limb_t *sourceptr = b_ptr; + mp_limb_t *destptr = r_ptr + j; + mp_limb_t carry = 0; + size_t count; + for (count = b_len; count > 0; count--) + { + mp_limb_t source1 = *sourceptr++; + mp_limb_t source2 = *destptr; + *destptr++ = source1 + source2 + carry; + carry = + (carry + ? source1 >= (mp_limb_t) ~source2 + : source1 > (mp_limb_t) ~source2); + } + } + /* Forget about the carry and about r[j+n]. */ + } + } + /* q* is determined. Store it as q[j]. */ + q_ptr[j] = q_star; + if (j == 0) + break; + j--; + } + } + r_len = b_len; + /* Normalise q. */ + if (q_ptr[q_len - 1] == 0) + q_len--; +# if 0 /* Not needed here, since we need r only to compare it with b/2, and + b is shifted left by s bits. */ + /* Shift r right by s bits. */ + if (s > 0) + { + mp_limb_t ptr = r_ptr + r_len; + mp_twolimb_t accu = 0; + size_t count; + for (count = r_len; count > 0; count--) + { + accu = (mp_twolimb_t) (mp_limb_t) accu << GMP_LIMB_BITS; + accu += (mp_twolimb_t) *--ptr << (GMP_LIMB_BITS - s); + *ptr = (mp_limb_t) (accu >> GMP_LIMB_BITS); + } + } +# endif + /* Normalise r. */ + while (r_len > 0 && r_ptr[r_len - 1] == 0) + r_len--; + } + /* Compare r << 1 with b. */ + if (r_len > b_len) + goto increment_q; + { + size_t i; + for (i = b_len;;) + { + mp_limb_t r_i = + (i <= r_len && i > 0 ? r_ptr[i - 1] >> (GMP_LIMB_BITS - 1) : 0) + | (i < r_len ? r_ptr[i] << 1 : 0); + mp_limb_t b_i = (i < b_len ? b_ptr[i] : 0); + if (r_i > b_i) + goto increment_q; + if (r_i < b_i) + goto keep_q; + if (i == 0) + break; + i--; + } + } + if (q_len > 0 && ((q_ptr[0] & 1) != 0)) + /* q is odd. */ + increment_q: { - count = (precision == -1) ? 0 : precision; - while (width-- > count) - *p++ = ' '; + size_t i; + for (i = 0; i < q_len; i++) + if (++(q_ptr[i]) != 0) + goto keep_q; + q_ptr[q_len++] = 1; } + keep_q: + if (tmp_roomptr != NULL) + free (tmp_roomptr); + q->limbs = q_ptr; + q->nlimbs = q_len; + return roomptr; +} - /* width has been adjusted for signs and alternatives */ - if (negative) +/* Convert a bignum a >= 0, multiplied with 10^extra_zeroes, to decimal + representation. + Destroys the contents of a. + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +convert_to_decimal (mpn_t a, size_t extra_zeroes) +{ + mp_limb_t *a_ptr = a.limbs; + size_t a_len = a.nlimbs; + /* 0.03345 is slightly larger than log(2)/(9*log(10)). */ + size_t c_len = 9 * ((size_t)(a_len * (GMP_LIMB_BITS * 0.03345f)) + 1); + char *c_ptr = (char *) malloc (xsum (c_len, extra_zeroes)); + if (c_ptr != NULL) { - EMIT ('-'); + char *d_ptr = c_ptr; + for (; extra_zeroes > 0; extra_zeroes--) + *d_ptr++ = '0'; + while (a_len > 0) + { + /* Divide a by 10^9, in-place. */ + mp_limb_t remainder = 0; + mp_limb_t *ptr = a_ptr + a_len; + size_t count; + for (count = a_len; count > 0; count--) + { + mp_twolimb_t num = + ((mp_twolimb_t) remainder << GMP_LIMB_BITS) | *--ptr; + *ptr = num / 1000000000; + remainder = num % 1000000000; + } + /* Store the remainder as 9 decimal digits. */ + for (count = 9; count > 0; count--) + { + *d_ptr++ = '0' + (remainder % 10); + remainder = remainder / 10; + } + /* Normalize a. */ + if (a_ptr[a_len - 1] == 0) + a_len--; + } + /* Remove leading zeroes. */ + while (d_ptr > c_ptr && d_ptr[-1] == '0') + d_ptr--; + /* But keep at least one zero. */ + if (d_ptr == c_ptr) + *d_ptr++ = '0'; + /* Terminate the string. */ + *d_ptr = '\0'; } - else if (flags & FLAG_SHOWSIGN) + return c_ptr; +} + +# if NEED_PRINTF_LONG_DOUBLE + +/* Assuming x is finite and >= 0: + write x as x = 2^e * m, where m is a bignum. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +decode_long_double (long double x, int *ep, mpn_t *mp) +{ + mpn_t m; + int exp; + long double y; + size_t i; + + /* Allocate memory for result. */ + m.nlimbs = (LDBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS; + m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t)); + if (m.limbs == NULL) + return NULL; + /* Split into exponential part and mantissa. */ + y = frexpl (x, &exp); + if (!(y >= 0.0L && y < 1.0L)) + abort (); + /* x = 2^exp * y = 2^(exp - LDBL_MANT_BIT) * (y * 2^LDBL_MANT_BIT), and the + latter is an integer. */ + /* Convert the mantissa (y * 2^LDBL_MANT_BIT) to a sequence of limbs. + I'm not sure whether it's safe to cast a 'long double' value between + 2^31 and 2^32 to 'unsigned int', therefore play safe and cast only + 'long double' values between 0 and 2^16 (to 'unsigned int' or 'int', + doesn't matter). */ +# if (LDBL_MANT_BIT % GMP_LIMB_BITS) != 0 +# if (LDBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2 { - EMIT('+'); + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % (GMP_LIMB_BITS / 2)); + hi = (int) y; + y -= hi; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo; } - else if (flags & FLAG_SPACE) +# else { - EMIT(' '); + mp_limb_t d; + y *= (mp_limb_t) 1 << (LDBL_MANT_BIT % GMP_LIMB_BITS); + d = (int) y; + y -= d; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + m.limbs[LDBL_MANT_BIT / GMP_LIMB_BITS] = d; } - - if (flags & FLAG_ALT) +# endif +# endif + for (i = LDBL_MANT_BIT / GMP_LIMB_BITS; i > 0; ) { - switch (base) - { - case 8: - EMIT('0'); - break; - case 16: - EMIT('0'); - EMIT(digits[16]); - break; - default: - break; - } /* switch base */ + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + hi = (int) y; + y -= hi; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0L && y < 1.0L)) + abort (); + m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo; } - - /* Output prefixed zero padding if needed */ - if (flags & FLAG_ZERO) +# if 0 /* On FreeBSD 6.1/x86, 'long double' numbers sometimes have excess + precision. */ + if (!(y == 0.0L)) + abort (); +# endif + /* Normalise. */ + while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0) + m.nlimbs--; + *mp = m; + *ep = exp - LDBL_MANT_BIT; + return m.limbs; +} + +# endif + +# if NEED_PRINTF_DOUBLE + +/* Assuming x is finite and >= 0: + write x as x = 2^e * m, where m is a bignum. + Return the allocated memory in case of success, NULL in case of memory + allocation failure. */ +static void * +decode_double (double x, int *ep, mpn_t *mp) +{ + mpn_t m; + int exp; + double y; + size_t i; + + /* Allocate memory for result. */ + m.nlimbs = (DBL_MANT_BIT + GMP_LIMB_BITS - 1) / GMP_LIMB_BITS; + m.limbs = (mp_limb_t *) malloc (m.nlimbs * sizeof (mp_limb_t)); + if (m.limbs == NULL) + return NULL; + /* Split into exponential part and mantissa. */ + y = frexp (x, &exp); + if (!(y >= 0.0 && y < 1.0)) + abort (); + /* x = 2^exp * y = 2^(exp - DBL_MANT_BIT) * (y * 2^DBL_MANT_BIT), and the + latter is an integer. */ + /* Convert the mantissa (y * 2^DBL_MANT_BIT) to a sequence of limbs. + I'm not sure whether it's safe to cast a 'double' value between + 2^31 and 2^32 to 'unsigned int', therefore play safe and cast only + 'double' values between 0 and 2^16 (to 'unsigned int' or 'int', + doesn't matter). */ +# if (DBL_MANT_BIT % GMP_LIMB_BITS) != 0 +# if (DBL_MANT_BIT % GMP_LIMB_BITS) > GMP_LIMB_BITS / 2 { - if (precision == -1) - precision = width; - while (precision-- > 0) - { - EMIT('0'); - width--; - } + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (DBL_MANT_BIT % (GMP_LIMB_BITS / 2)); + hi = (int) y; + y -= hi; + if (!(y >= 0.0 && y < 1.0)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0 && y < 1.0)) + abort (); + m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = (hi << (GMP_LIMB_BITS / 2)) | lo; } - - /* Output the number itself */ - while (*(++pointer)) +# else { - EMIT(*pointer); + mp_limb_t d; + y *= (mp_limb_t) 1 << (DBL_MANT_BIT % GMP_LIMB_BITS); + d = (int) y; + y -= d; + if (!(y >= 0.0 && y < 1.0)) + abort (); + m.limbs[DBL_MANT_BIT / GMP_LIMB_BITS] = d; } - - /* Output trailing spaces if needed */ - if (flags & FLAG_LEFT) +# endif +# endif + for (i = DBL_MANT_BIT / GMP_LIMB_BITS; i > 0; ) { - while (width-- > 0) - EMIT(' '); + mp_limb_t hi, lo; + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + hi = (int) y; + y -= hi; + if (!(y >= 0.0 && y < 1.0)) + abort (); + y *= (mp_limb_t) 1 << (GMP_LIMB_BITS / 2); + lo = (int) y; + y -= lo; + if (!(y >= 0.0 && y < 1.0)) + abort (); + m.limbs[--i] = (hi << (GMP_LIMB_BITS / 2)) | lo; } - - EMIT('\0'); - - return p - buf - 1; + if (!(y == 0.0)) + abort (); + /* Normalise. */ + while (m.nlimbs > 0 && m.limbs[m.nlimbs - 1] == 0) + m.nlimbs--; + *mp = m; + *ep = exp - DBL_MANT_BIT; + return m.limbs; } -#endif -char * -vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args) +# endif + +/* Assuming x = 2^e * m is finite and >= 0, and n is an integer: + Returns the decimal representation of round (x * 10^n). + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +scale10_round_decimal_decoded (int e, mpn_t m, void *memory, int n) { - char_directives d; - arguments a; + int s; + size_t extra_zeroes; + unsigned int abs_n; + unsigned int abs_s; + mp_limb_t *pow5_ptr; + size_t pow5_len; + unsigned int s_limbs; + unsigned int s_bits; + mpn_t pow5; + mpn_t z; + void *z_memory; + char *digits; - if (printf_parse (format, &d, &a) < 0) + if (memory == NULL) + return NULL; + /* x = 2^e * m, hence + y = round (2^e * 10^n * m) = round (2^(e+n) * 5^n * m) + = round (2^s * 5^n * m). */ + s = e + n; + extra_zeroes = 0; + /* Factor out a common power of 10 if possible. */ + if (s > 0 && n > 0) { - errno = EINVAL; - return NULL; + extra_zeroes = (s < n ? s : n); + s -= extra_zeroes; + n -= extra_zeroes; } - -#define CLEANUP() \ - free (d.dir); \ - if (a.arg) \ - free (a.arg); - - if (printf_fetchargs (args, &a) < 0) + /* Here y = round (2^s * 5^n * m) * 10^extra_zeroes. + Before converting to decimal, we need to compute + z = round (2^s * 5^n * m). */ + /* Compute 5^|n|, possibly shifted by |s| bits if n and s have the same + sign. 2.322 is slightly larger than log(5)/log(2). */ + abs_n = (n >= 0 ? n : -n); + abs_s = (s >= 0 ? s : -s); + pow5_ptr = (mp_limb_t *) malloc (((int)(abs_n * (2.322f / GMP_LIMB_BITS)) + 1 + + abs_s / GMP_LIMB_BITS + 1) + * sizeof (mp_limb_t)); + if (pow5_ptr == NULL) { - CLEANUP (); - errno = EINVAL; + free (memory); return NULL; } + /* Initialize with 1. */ + pow5_ptr[0] = 1; + pow5_len = 1; + /* Multiply with 5^|n|. */ + if (abs_n > 0) + { + static mp_limb_t const small_pow5[13 + 1] = + { + 1, 5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, + 48828125, 244140625, 1220703125 + }; + unsigned int n13; + for (n13 = 0; n13 <= abs_n; n13 += 13) + { + mp_limb_t digit1 = small_pow5[n13 + 13 <= abs_n ? 13 : abs_n - n13]; + size_t j; + mp_twolimb_t carry = 0; + for (j = 0; j < pow5_len; j++) + { + mp_limb_t digit2 = pow5_ptr[j]; + carry += (mp_twolimb_t) digit1 * (mp_twolimb_t) digit2; + pow5_ptr[j] = (mp_limb_t) carry; + carry = carry >> GMP_LIMB_BITS; + } + if (carry > 0) + pow5_ptr[pow5_len++] = (mp_limb_t) carry; + } + } + s_limbs = abs_s / GMP_LIMB_BITS; + s_bits = abs_s % GMP_LIMB_BITS; + if (n >= 0 ? s >= 0 : s <= 0) + { + /* Multiply with 2^|s|. */ + if (s_bits > 0) + { + mp_limb_t *ptr = pow5_ptr; + mp_twolimb_t accu = 0; + size_t count; + for (count = pow5_len; count > 0; count--) + { + accu += (mp_twolimb_t) *ptr << s_bits; + *ptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + if (accu > 0) + { + *ptr = (mp_limb_t) accu; + pow5_len++; + } + } + if (s_limbs > 0) + { + size_t count; + for (count = pow5_len; count > 0;) + { + count--; + pow5_ptr[s_limbs + count] = pow5_ptr[count]; + } + for (count = s_limbs; count > 0;) + { + count--; + pow5_ptr[count] = 0; + } + pow5_len += s_limbs; + } + pow5.limbs = pow5_ptr; + pow5.nlimbs = pow5_len; + if (n >= 0) + { + /* Multiply m with pow5. No division needed. */ + z_memory = multiply (m, pow5, &z); + } + else + { + /* Divide m by pow5 and round. */ + z_memory = divide (m, pow5, &z); + } + } + else + { + pow5.limbs = pow5_ptr; + pow5.nlimbs = pow5_len; + if (n >= 0) + { + /* n >= 0, s < 0. + Multiply m with pow5, then divide by 2^|s|. */ + mpn_t numerator; + mpn_t denominator; + void *tmp_memory; + tmp_memory = multiply (m, pow5, &numerator); + if (tmp_memory == NULL) + { + free (pow5_ptr); + free (memory); + return NULL; + } + /* Construct 2^|s|. */ + { + mp_limb_t *ptr = pow5_ptr + pow5_len; + size_t i; + for (i = 0; i < s_limbs; i++) + ptr[i] = 0; + ptr[s_limbs] = (mp_limb_t) 1 << s_bits; + denominator.limbs = ptr; + denominator.nlimbs = s_limbs + 1; + } + z_memory = divide (numerator, denominator, &z); + free (tmp_memory); + } + else + { + /* n < 0, s > 0. + Multiply m with 2^s, then divide by pow5. */ + mpn_t numerator; + mp_limb_t *num_ptr; + num_ptr = (mp_limb_t *) malloc ((m.nlimbs + s_limbs + 1) + * sizeof (mp_limb_t)); + if (num_ptr == NULL) + { + free (pow5_ptr); + free (memory); + return NULL; + } + { + mp_limb_t *destptr = num_ptr; + { + size_t i; + for (i = 0; i < s_limbs; i++) + *destptr++ = 0; + } + if (s_bits > 0) + { + const mp_limb_t *sourceptr = m.limbs; + mp_twolimb_t accu = 0; + size_t count; + for (count = m.nlimbs; count > 0; count--) + { + accu += (mp_twolimb_t) *sourceptr++ << s_bits; + *destptr++ = (mp_limb_t) accu; + accu = accu >> GMP_LIMB_BITS; + } + if (accu > 0) + *destptr++ = (mp_limb_t) accu; + } + else + { + const mp_limb_t *sourceptr = m.limbs; + size_t count; + for (count = m.nlimbs; count > 0; count--) + *destptr++ = *sourceptr++; + } + numerator.limbs = num_ptr; + numerator.nlimbs = destptr - num_ptr; + } + z_memory = divide (numerator, pow5, &z); + free (num_ptr); + } + } + free (pow5_ptr); + free (memory); - { - char *buf = - (char *) alloca (7 + d.max_width_length + d.max_precision_length + 6); - const char *cp; - unsigned int i; - char_directive *dp; - /* Output string accumulator. */ - char *result; - size_t allocated; - size_t length; + /* Here y = round (x * 10^n) = z * 10^extra_zeroes. */ - if (resultbuf != NULL) - { - result = resultbuf; - allocated = *lengthp; - } - else - { - result = NULL; - allocated = 0; - } - length = 0; - /* Invariants: - result is either == resultbuf or == NULL or malloc-allocated. - If length > 0, then result != NULL. */ + if (z_memory == NULL) + return NULL; + digits = convert_to_decimal (z, extra_zeroes); + free (z_memory); + return digits; +} -#define ENSURE_ALLOCATION(needed) \ - if ((needed) > allocated) \ - { \ - char *memory; \ - \ - allocated = (allocated > 0 ? 2 * allocated : 12); \ - if ((needed) > allocated) \ - allocated = (needed); \ - if (result == resultbuf || result == NULL) \ - memory = (char *) malloc (allocated); \ - else \ - memory = (char *) realloc (result, allocated); \ - \ - if (memory == NULL) \ - { \ - if (!(result == resultbuf || result == NULL)) \ - free (result); \ - freea (buf); \ - CLEANUP (); \ - errno = ENOMEM; \ - return NULL; \ - } \ - if (result == resultbuf && length > 0) \ - memcpy (memory, result, length); \ - result = memory; \ - } +# if NEED_PRINTF_LONG_DOUBLE + +/* Assuming x is finite and >= 0, and n is an integer: + Returns the decimal representation of round (x * 10^n). + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +scale10_round_decimal_long_double (long double x, int n) +{ + int e IF_LINT(= 0); + mpn_t m; + void *memory = decode_long_double (x, &e, &m); + return scale10_round_decimal_decoded (e, m, memory, n); +} - for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++) - { - if (cp != dp->dir_start) - { - size_t n = dp->dir_start - cp; - - ENSURE_ALLOCATION (length + n); - memcpy (result + length, cp, n); - length += n; - } - if (i == d.count) - break; - - /* Execute a single directive. */ - if (dp->conversion == '%') - { - if (!(dp->arg_index < 0)) - abort (); - ENSURE_ALLOCATION (length + 1); - result[length] = '%'; - length += 1; - } - else - { - if (!(dp->arg_index >= 0)) - abort (); - - if (dp->conversion == 'n') - { - switch (a.arg[dp->arg_index].type) - { - case TYPE_COUNT_SCHAR_POINTER: - *a.arg[dp->arg_index].a.a_count_schar_pointer = length; - break; - case TYPE_COUNT_SHORT_POINTER: - *a.arg[dp->arg_index].a.a_count_short_pointer = length; - break; - case TYPE_COUNT_INT_POINTER: - *a.arg[dp->arg_index].a.a_count_int_pointer = length; - break; - case TYPE_COUNT_LONGINT_POINTER: - *a.arg[dp->arg_index].a.a_count_longint_pointer = length; - break; -#ifdef HAVE_LONG_LONG - case TYPE_COUNT_LONGLONGINT_POINTER: - *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length; - break; -#endif - default: - abort (); - } - } - else - { - arg_type type = a.arg[dp->arg_index].type; - char *p; - unsigned int prefix_count; - int prefixes[2]; -#if !HAVE_SNPRINTF - unsigned int tmp_length; - char tmpbuf[700]; - char *tmp; - - /* Allocate a temporary buffer of sufficient size for calling - sprintf. */ - { - unsigned int width; - unsigned int precision; - - width = 0; - if (dp->width_start != dp->width_end) - { - if (dp->width_arg_index >= 0) - { - int arg; - - if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) - abort (); - arg = a.arg[dp->width_arg_index].a.a_int; - width = (arg < 0 ? -arg : arg); - } - else - { - const char *digitp = dp->width_start; - - do - width = width * 10 + (*digitp++ - '0'); - while (digitp != dp->width_end); - } - } - - precision = 6; - if (dp->precision_start != dp->precision_end) - { - if (dp->precision_arg_index >= 0) - { - int arg; - - if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) - abort (); - arg = a.arg[dp->precision_arg_index].a.a_int; - precision = (arg < 0 ? 0 : arg); - } - else - { - const char *digitp = dp->precision_start + 1; - - precision = 0; - while (digitp != dp->precision_end) - precision = precision * 10 + (*digitp++ - '0'); - } - } - - switch (dp->conversion) - { - case 'd': case 'i': case 'u': -# ifdef HAVE_LONG_LONG - if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) - tmp_length = - (unsigned int) (sizeof (unsigned long long) * CHAR_BIT - * 0.30103 /* binary -> decimal */ - * 2 /* estimate for FLAG_GROUP */ - ) - + 1 /* turn floor into ceil */ - + 1; /* account for leading sign */ - else -# endif - if (type == TYPE_LONGINT || type == TYPE_ULONGINT) - tmp_length = - (unsigned int) (sizeof (unsigned long) * CHAR_BIT - * 0.30103 /* binary -> decimal */ - * 2 /* estimate for FLAG_GROUP */ - ) - + 1 /* turn floor into ceil */ - + 1; /* account for leading sign */ - else - tmp_length = - (unsigned int) (sizeof (unsigned int) * CHAR_BIT - * 0.30103 /* binary -> decimal */ - * 2 /* estimate for FLAG_GROUP */ - ) - + 1 /* turn floor into ceil */ - + 1; /* account for leading sign */ - break; - - case 'o': -# ifdef HAVE_LONG_LONG - if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) - tmp_length = - (unsigned int) (sizeof (unsigned long long) * CHAR_BIT - * 0.333334 /* binary -> octal */ - ) - + 1 /* turn floor into ceil */ - + 1; /* account for leading sign */ - else -# endif - if (type == TYPE_LONGINT || type == TYPE_ULONGINT) - tmp_length = - (unsigned int) (sizeof (unsigned long) * CHAR_BIT - * 0.333334 /* binary -> octal */ - ) - + 1 /* turn floor into ceil */ - + 1; /* account for leading sign */ - else - tmp_length = - (unsigned int) (sizeof (unsigned int) * CHAR_BIT - * 0.333334 /* binary -> octal */ - ) - + 1 /* turn floor into ceil */ - + 1; /* account for leading sign */ - break; - - case 'x': case 'X': -# ifdef HAVE_LONG_LONG - if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) - tmp_length = - (unsigned int) (sizeof (unsigned long long) * CHAR_BIT - * 0.25 /* binary -> hexadecimal */ - ) - + 1 /* turn floor into ceil */ - + 2; /* account for leading sign or alternate form */ - else -# endif -# ifdef HAVE_INT64_AND_I64 - if (type == TYPE_INT64 || type == TYPE_UINT64) - tmp_length = - (unsigned int) (sizeof (unsigned __int64) * CHAR_BIT - * 0.25 /* binary -> hexadecimal */ - ) - + 1 /* turn floor into ceil */ - + 2; /* account for leading sign or alternate form */ - else -# endif - if (type == TYPE_LONGINT || type == TYPE_ULONGINT) - tmp_length = - (unsigned int) (sizeof (unsigned long) * CHAR_BIT - * 0.25 /* binary -> hexadecimal */ - ) - + 1 /* turn floor into ceil */ - + 2; /* account for leading sign or alternate form */ - else - tmp_length = - (unsigned int) (sizeof (unsigned int) * CHAR_BIT - * 0.25 /* binary -> hexadecimal */ - ) - + 1 /* turn floor into ceil */ - + 2; /* account for leading sign or alternate form */ - break; - - case 'f': case 'F': -# ifdef HAVE_LONG_DOUBLE - if (type == TYPE_LONGDOUBLE) - tmp_length = - (unsigned int) (LDBL_MAX_EXP - * 0.30103 /* binary -> decimal */ - * 2 /* estimate for FLAG_GROUP */ - ) - + 1 /* turn floor into ceil */ - + precision - + 10; /* sign, decimal point etc. */ - else -# endif - tmp_length = - (unsigned int) (DBL_MAX_EXP - * 0.30103 /* binary -> decimal */ - * 2 /* estimate for FLAG_GROUP */ - ) - + 1 /* turn floor into ceil */ - + precision - + 10; /* sign, decimal point etc. */ - break; - - case 'e': case 'E': case 'g': case 'G': - case 'a': case 'A': - tmp_length = - precision - + 12; /* sign, decimal point, exponent etc. */ - break; - - case 'c': -# ifdef HAVE_WINT_T - if (type == TYPE_WIDE_CHAR) - tmp_length = MB_CUR_MAX; - else # endif - tmp_length = 1; - break; - - case 's': -# ifdef HAVE_WCHAR_T - if (type == TYPE_WIDE_STRING) - tmp_length = - (a.arg[dp->arg_index].a.a_wide_string == NULL - ? 6 /* wcslen(L"(null)") */ - : local_wcslen (a.arg[dp->arg_index].a.a_wide_string)) - * MB_CUR_MAX; - else + +# if NEED_PRINTF_DOUBLE + +/* Assuming x is finite and >= 0, and n is an integer: + Returns the decimal representation of round (x * 10^n). + Return the allocated memory - containing the decimal digits in low-to-high + order, terminated with a NUL character - in case of success, NULL in case + of memory allocation failure. */ +static char * +scale10_round_decimal_double (double x, int n) +{ + int e IF_LINT(= 0); + mpn_t m; + void *memory = decode_double (x, &e, &m); + return scale10_round_decimal_decoded (e, m, memory, n); +} + # endif - tmp_length = a.arg[dp->arg_index].a.a_string == NULL - ? 6 /* strlen("(null)") */ - : strlen (a.arg[dp->arg_index].a.a_string); - break; - - case 'p': - tmp_length = - (unsigned int) (sizeof (void *) * CHAR_BIT - * 0.25 /* binary -> hexadecimal */ - ) - + 1 /* turn floor into ceil */ - + 2; /* account for leading 0x */ - break; - - default: - abort (); - } - - if (tmp_length < width) - tmp_length = width; - - tmp_length++; /* account for trailing NUL */ - } - - if (tmp_length <= sizeof (tmpbuf)) - tmp = tmpbuf; - else - { - tmp = (char *) malloc (tmp_length); - if (tmp == NULL) - { - /* Out of memory. */ - if (!(result == resultbuf || result == NULL)) - free (result); - freea (buf); - CLEANUP (); - errno = ENOMEM; - return NULL; - } - } -#endif - /* Construct the format string for calling snprintf or - sprintf. */ - p = buf; - *p++ = '%'; - if (dp->flags & FLAG_GROUP) - *p++ = '\''; - if (dp->flags & FLAG_LEFT) - *p++ = '-'; - if (dp->flags & FLAG_SHOWSIGN) - *p++ = '+'; - if (dp->flags & FLAG_SPACE) - *p++ = ' '; - if (dp->flags & FLAG_ALT) - *p++ = '#'; - if (dp->flags & FLAG_ZERO) - *p++ = '0'; - if (dp->width_start != dp->width_end) - { - size_t n = dp->width_end - dp->width_start; - memcpy (p, dp->width_start, n); - p += n; - } - if (dp->precision_start != dp->precision_end) - { - size_t n = dp->precision_end - dp->precision_start; - memcpy (p, dp->precision_start, n); - p += n; - } - - switch (type) - { -#ifdef HAVE_INT64_AND_I64 - case TYPE_INT64: - case TYPE_UINT64: - *p++ = 'I'; - *p++ = '6'; - *p++ = '4'; - break; -#endif -#ifdef HAVE_LONG_LONG - case TYPE_LONGLONGINT: - case TYPE_ULONGLONGINT: -#ifdef HAVE_INT64_AND_I64 /* The system (sn)printf uses %I64. Also assume - * that long long == __int64. - */ - *p++ = 'I'; - *p++ = '6'; - *p++ = '4'; - break; -#else - *p++ = 'l'; - /*FALLTHROUGH*/ -#endif -#endif - case TYPE_LONGINT: - case TYPE_ULONGINT: -#ifdef HAVE_WINT_T - case TYPE_WIDE_CHAR: -#endif -#ifdef HAVE_WCHAR_T - case TYPE_WIDE_STRING: -#endif - *p++ = 'l'; - break; -#ifdef HAVE_LONG_DOUBLE - case TYPE_LONGDOUBLE: - *p++ = 'L'; - break; -#endif - default: - break; - } - *p = dp->conversion; -#if HAVE_SNPRINTF - p[1] = '%'; - p[2] = 'n'; - p[3] = '\0'; -#else - p[1] = '\0'; -#endif +# if NEED_PRINTF_LONG_DOUBLE - /* Construct the arguments for calling snprintf or sprintf. */ - prefix_count = 0; - if (dp->width_arg_index >= 0) - { - if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) - abort (); - prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int; - } - if (dp->precision_arg_index >= 0) - { - if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) - abort (); - prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int; - } - -#if HAVE_SNPRINTF - /* Prepare checking whether snprintf returns the count - via %n. */ - ENSURE_ALLOCATION (length + 1); - result[length] = '\0'; -#endif +/* Assuming x is finite and > 0: + Return an approximation for n with 10^n <= x < 10^(n+1). + The approximation is usually the right n, but may be off by 1 sometimes. */ +static int +floorlog10l (long double x) +{ + int exp; + long double y; + double z; + double l; - for (;;) - { - size_t maxlen; - int count; -#if HAVE_SNPRINTF - int retcount; -#endif + /* Split into exponential part and mantissa. */ + y = frexpl (x, &exp); + if (!(y >= 0.0L && y < 1.0L)) + abort (); + if (y == 0.0L) + return INT_MIN; + if (y < 0.5L) + { + while (y < (1.0L / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2)))) + { + y *= 1.0L * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2)); + exp -= GMP_LIMB_BITS; + } + if (y < (1.0L / (1 << 16))) + { + y *= 1.0L * (1 << 16); + exp -= 16; + } + if (y < (1.0L / (1 << 8))) + { + y *= 1.0L * (1 << 8); + exp -= 8; + } + if (y < (1.0L / (1 << 4))) + { + y *= 1.0L * (1 << 4); + exp -= 4; + } + if (y < (1.0L / (1 << 2))) + { + y *= 1.0L * (1 << 2); + exp -= 2; + } + if (y < (1.0L / (1 << 1))) + { + y *= 1.0L * (1 << 1); + exp -= 1; + } + } + if (!(y >= 0.5L && y < 1.0L)) + abort (); + /* Compute an approximation for l = log2(x) = exp + log2(y). */ + l = exp; + z = y; + if (z < 0.70710678118654752444) + { + z *= 1.4142135623730950488; + l -= 0.5; + } + if (z < 0.8408964152537145431) + { + z *= 1.1892071150027210667; + l -= 0.25; + } + if (z < 0.91700404320467123175) + { + z *= 1.0905077326652576592; + l -= 0.125; + } + if (z < 0.9576032806985736469) + { + z *= 1.0442737824274138403; + l -= 0.0625; + } + /* Now 0.95 <= z <= 1.01. */ + z = 1 - z; + /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...) + Four terms are enough to get an approximation with error < 10^-7. */ + l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25))); + /* Finally multiply with log(2)/log(10), yields an approximation for + log10(x). */ + l *= 0.30102999566398119523; + /* Round down to the next integer. */ + return (int) l + (l < 0 ? -1 : 0); +} - maxlen = allocated - length; - count = -1; - -#if HAVE_SNPRINTF - retcount = 0; - -#define SNPRINTF_BUF(arg) \ - switch (prefix_count) \ - { \ - case 0: \ - retcount = snprintf (result + length, maxlen, buf, \ - arg, &count); \ - break; \ - case 1: \ - retcount = snprintf (result + length, maxlen, buf, \ - prefixes[0], arg, &count); \ - break; \ - case 2: \ - retcount = snprintf (result + length, maxlen, buf, \ - prefixes[0], prefixes[1], arg, \ - &count); \ - break; \ - default: \ - abort (); \ - } -#else -#define SNPRINTF_BUF(arg) \ - switch (prefix_count) \ - { \ - case 0: \ - count = sprintf (tmp, buf, arg); \ - break; \ - case 1: \ - count = sprintf (tmp, buf, prefixes[0], arg); \ - break; \ - case 2: \ - count = sprintf (tmp, buf, prefixes[0], prefixes[1],\ - arg); \ - break; \ - default: \ - abort (); \ - } -#endif +# endif - switch (type) - { - case TYPE_SCHAR: - { - int arg = a.arg[dp->arg_index].a.a_schar; - SNPRINTF_BUF (arg); - } - break; - case TYPE_UCHAR: - { - unsigned int arg = a.arg[dp->arg_index].a.a_uchar; - SNPRINTF_BUF (arg); - } - break; - case TYPE_SHORT: - { - int arg = a.arg[dp->arg_index].a.a_short; - SNPRINTF_BUF (arg); - } - break; - case TYPE_USHORT: - { - unsigned int arg = a.arg[dp->arg_index].a.a_ushort; - SNPRINTF_BUF (arg); - } - break; - case TYPE_INT: - { - int arg = a.arg[dp->arg_index].a.a_int; - SNPRINTF_BUF (arg); - } - break; - case TYPE_UINT: - { - unsigned int arg = a.arg[dp->arg_index].a.a_uint; - SNPRINTF_BUF (arg); - } - break; - case TYPE_LONGINT: - { - long int arg = a.arg[dp->arg_index].a.a_longint; - SNPRINTF_BUF (arg); - } - break; - case TYPE_ULONGINT: - { - unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint; - SNPRINTF_BUF (arg); - } - break; -#ifdef HAVE_INT64_AND_I64 - case TYPE_INT64: - { - __int64 arg = a.arg[dp->arg_index].a.a_int64; - SNPRINTF_BUF (arg); - } - break; - case TYPE_UINT64: - { - unsigned __int64 arg = a.arg[dp->arg_index].a.a_uint64; - SNPRINTF_BUF (arg); - } - break; -#endif -#ifdef HAVE_LONG_LONG -#ifndef HAVE_LONG_LONG_FORMAT - case TYPE_LONGLONGINT: - case TYPE_ULONGLONGINT: - { - unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint; - int width; - int precision; - - width = 0; - if (dp->width_start != dp->width_end) - { - if (dp->width_arg_index >= 0) - { - int arg; - - if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) - abort (); - arg = a.arg[dp->width_arg_index].a.a_int; - width = (arg < 0 ? -arg : arg); - } - else - { - const char *digitp = dp->width_start; - - do - width = width * 10 + (*digitp++ - '0'); - while (digitp != dp->width_end); - } - } - - precision = -1; - if (dp->precision_start != dp->precision_end) - { - if (dp->precision_arg_index >= 0) - { - int arg; - - if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) - abort (); - arg = a.arg[dp->precision_arg_index].a.a_int; - precision = (arg < 0 ? 0 : arg); - } - else - { - const char *digitp = dp->precision_start + 1; - - precision = 0; - do - precision = precision * 10 + (*digitp++ - '0'); - while (digitp != dp->precision_end); - } - } - -#if HAVE_SNPRINTF - count = print_long_long (result + length, maxlen, - width, precision, - dp->flags, - dp->conversion, - arg); -#else - count = print_long_long (tmp, tmp_length, - width, precision, - dp->flags, - dp->conversion, - arg); -#endif - } - break; -#else - case TYPE_LONGLONGINT: - { - long long int arg = a.arg[dp->arg_index].a.a_longlongint; - SNPRINTF_BUF (arg); - } - break; - case TYPE_ULONGLONGINT: - { - unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint; - SNPRINTF_BUF (arg); - } - break; -#endif -#endif - case TYPE_DOUBLE: - { - double arg = a.arg[dp->arg_index].a.a_double; - SNPRINTF_BUF (arg); - } - break; -#ifdef HAVE_LONG_DOUBLE - case TYPE_LONGDOUBLE: - { - long double arg = a.arg[dp->arg_index].a.a_longdouble; - SNPRINTF_BUF (arg); - } - break; -#endif - case TYPE_CHAR: - { - int arg = a.arg[dp->arg_index].a.a_char; - SNPRINTF_BUF (arg); - } - break; -#ifdef HAVE_WINT_T - case TYPE_WIDE_CHAR: - { - wint_t arg = a.arg[dp->arg_index].a.a_wide_char; - SNPRINTF_BUF (arg); - } - break; -#endif - case TYPE_STRING: - { - const char *arg = a.arg[dp->arg_index].a.a_string == NULL - ? "(null)" - : a.arg[dp->arg_index].a.a_string; - SNPRINTF_BUF (arg); - } - break; -#ifdef HAVE_WCHAR_T - case TYPE_WIDE_STRING: - { - const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string == NULL - ? L"(null)" - : a.arg[dp->arg_index].a.a_wide_string; - SNPRINTF_BUF (arg); - } - break; -#endif - case TYPE_POINTER: - { - void *arg = a.arg[dp->arg_index].a.a_pointer; - SNPRINTF_BUF (arg); - } - break; - default: - abort (); - } - -#if HAVE_SNPRINTF - /* Portability: Not all implementations of snprintf() - are ISO C 99 compliant. Determine the number of - bytes that snprintf() has produced or would have - produced. */ - if (count >= 0) - { - /* Verify that snprintf() has NUL-terminated its - result. */ - if (count < maxlen && result[length + count] != '\0') - abort (); - /* Portability hack. */ - if (retcount > count) - count = retcount; - } - else - { - /* snprintf() doesn't understand the '%n' - directive. */ - if (p[1] != '\0') - { - /* Don't use the '%n' directive; instead, look - at the snprintf() return value. */ - p[1] = '\0'; - continue; - } - count = retcount; - } -#endif +# if NEED_PRINTF_DOUBLE - /* Attempt to handle failure. */ - if (count < 0) - { - if (!(result == resultbuf || result == NULL)) - free (result); - freea (buf); - CLEANUP (); - errno = EINVAL; - return NULL; - } - -#if !HAVE_SNPRINTF - if (count >= tmp_length) - /* tmp_length was incorrectly calculated - fix the - code above! */ - abort (); -#endif +/* Assuming x is finite and > 0: + Return an approximation for n with 10^n <= x < 10^(n+1). + The approximation is usually the right n, but may be off by 1 sometimes. */ +static int +floorlog10 (double x) +{ + int exp; + double y; + double z; + double l; - /* Make room for the result. */ - if (count >= maxlen) - { - /* Need at least count bytes. But allocate - proportionally, to avoid looping eternally if - snprintf() reports a too small count. */ - size_t n = length + count; + /* Split into exponential part and mantissa. */ + y = frexp (x, &exp); + if (!(y >= 0.0 && y < 1.0)) + abort (); + if (y == 0.0) + return INT_MIN; + if (y < 0.5) + { + while (y < (1.0 / (1 << (GMP_LIMB_BITS / 2)) / (1 << (GMP_LIMB_BITS / 2)))) + { + y *= 1.0 * (1 << (GMP_LIMB_BITS / 2)) * (1 << (GMP_LIMB_BITS / 2)); + exp -= GMP_LIMB_BITS; + } + if (y < (1.0 / (1 << 16))) + { + y *= 1.0 * (1 << 16); + exp -= 16; + } + if (y < (1.0 / (1 << 8))) + { + y *= 1.0 * (1 << 8); + exp -= 8; + } + if (y < (1.0 / (1 << 4))) + { + y *= 1.0 * (1 << 4); + exp -= 4; + } + if (y < (1.0 / (1 << 2))) + { + y *= 1.0 * (1 << 2); + exp -= 2; + } + if (y < (1.0 / (1 << 1))) + { + y *= 1.0 * (1 << 1); + exp -= 1; + } + } + if (!(y >= 0.5 && y < 1.0)) + abort (); + /* Compute an approximation for l = log2(x) = exp + log2(y). */ + l = exp; + z = y; + if (z < 0.70710678118654752444) + { + z *= 1.4142135623730950488; + l -= 0.5; + } + if (z < 0.8408964152537145431) + { + z *= 1.1892071150027210667; + l -= 0.25; + } + if (z < 0.91700404320467123175) + { + z *= 1.0905077326652576592; + l -= 0.125; + } + if (z < 0.9576032806985736469) + { + z *= 1.0442737824274138403; + l -= 0.0625; + } + /* Now 0.95 <= z <= 1.01. */ + z = 1 - z; + /* log2(1-z) = 1/log(2) * (- z - z^2/2 - z^3/3 - z^4/4 - ...) + Four terms are enough to get an approximation with error < 10^-7. */ + l -= 1.4426950408889634074 * z * (1.0 + z * (0.5 + z * ((1.0 / 3) + z * 0.25))); + /* Finally multiply with log(2)/log(10), yields an approximation for + log10(x). */ + l *= 0.30102999566398119523; + /* Round down to the next integer. */ + return (int) l + (l < 0 ? -1 : 0); +} - if (n < 2 * allocated) - n = 2 * allocated; +# endif - ENSURE_ALLOCATION (n); -#if HAVE_SNPRINTF - continue; -#endif - } +/* Tests whether a string of digits consists of exactly PRECISION zeroes and + a single '1' digit. */ +static int +is_borderline (const char *digits, size_t precision) +{ + for (; precision > 0; precision--, digits++) + if (*digits != '0') + return 0; + if (*digits != '1') + return 0; + digits++; + return *digits == '\0'; +} -#if HAVE_SNPRINTF - /* The snprintf() result did fit. */ -#else - /* Append the sprintf() result. */ - memcpy (result + length, tmp, count); - if (tmp != tmpbuf) - free (tmp); #endif - length += count; - break; - } - } - } - } +#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 - /* Add the final NUL. */ - ENSURE_ALLOCATION (length + 1); - result[length] = '\0'; +/* Use a different function name, to make it possible that the 'wchar_t' + parametrization and the 'char' parametrization get compiled in the same + translation unit. */ +# if WIDE_CHAR_VERSION +# define MAX_ROOM_NEEDED wmax_room_needed +# else +# define MAX_ROOM_NEEDED max_room_needed +# endif - if (result != resultbuf && length + 1 < allocated) - { - /* Shrink the allocated memory if possible. */ - char *memory; +/* Returns the number of TCHAR_T units needed as temporary space for the result + of sprintf or SNPRINTF of a single conversion directive. */ +static size_t +MAX_ROOM_NEEDED (const arguments *ap, size_t arg_index, FCHAR_T conversion, + arg_type type, int flags, size_t width, int has_precision, + size_t precision, int pad_ourselves) +{ + size_t tmp_length; - memory = (char *) realloc (result, length + 1); - if (memory != NULL) - result = memory; - } + switch (conversion) + { + case 'd': case 'i': case 'u': +# if HAVE_LONG_LONG + if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long long) * CHAR_BIT + * 0.30103 /* binary -> decimal */ + ) + + 1; /* turn floor into ceil */ + else +# endif + if (type == TYPE_LONGINT || type == TYPE_ULONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long) * CHAR_BIT + * 0.30103 /* binary -> decimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (sizeof (unsigned int) * CHAR_BIT + * 0.30103 /* binary -> decimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Multiply by 2, as an estimate for FLAG_GROUP. */ + tmp_length = xsum (tmp_length, tmp_length); + /* Add 1, to account for a leading sign. */ + tmp_length = xsum (tmp_length, 1); + break; - freea (buf); - CLEANUP (); - *lengthp = length; - return result; - } + case 'o': +# if HAVE_LONG_LONG + if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long long) * CHAR_BIT + * 0.333334 /* binary -> octal */ + ) + + 1; /* turn floor into ceil */ + else +# endif + if (type == TYPE_LONGINT || type == TYPE_ULONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long) * CHAR_BIT + * 0.333334 /* binary -> octal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (sizeof (unsigned int) * CHAR_BIT + * 0.333334 /* binary -> octal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Add 1, to account for a leading sign. */ + tmp_length = xsum (tmp_length, 1); + break; + + case 'x': case 'X': +# if HAVE_LONG_LONG + if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long long) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else +# endif + if (type == TYPE_LONGINT || type == TYPE_ULONGINT) + tmp_length = + (unsigned int) (sizeof (unsigned long) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (sizeof (unsigned int) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Add 2, to account for a leading sign or alternate form. */ + tmp_length = xsum (tmp_length, 2); + break; + + case 'f': case 'F': + if (type == TYPE_LONGDOUBLE) + tmp_length = + (unsigned int) (LDBL_MAX_EXP + * 0.30103 /* binary -> decimal */ + * 2 /* estimate for FLAG_GROUP */ + ) + + 1 /* turn floor into ceil */ + + 10; /* sign, decimal point etc. */ + else + tmp_length = + (unsigned int) (DBL_MAX_EXP + * 0.30103 /* binary -> decimal */ + * 2 /* estimate for FLAG_GROUP */ + ) + + 1 /* turn floor into ceil */ + + 10; /* sign, decimal point etc. */ + tmp_length = xsum (tmp_length, precision); + break; + + case 'e': case 'E': case 'g': case 'G': + tmp_length = + 12; /* sign, decimal point, exponent etc. */ + tmp_length = xsum (tmp_length, precision); + break; + + case 'a': case 'A': + if (type == TYPE_LONGDOUBLE) + tmp_length = + (unsigned int) (LDBL_DIG + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) (DBL_DIG + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Account for sign, decimal point etc. */ + tmp_length = xsum (tmp_length, 12); + break; + + case 'c': +# if HAVE_WINT_T && !WIDE_CHAR_VERSION + if (type == TYPE_WIDE_CHAR) + tmp_length = MB_CUR_MAX; + else +# endif + tmp_length = 1; + break; + + case 's': +# if HAVE_WCHAR_T + if (type == TYPE_WIDE_STRING) + { +# if WIDE_CHAR_VERSION + /* ISO C says about %ls in fwprintf: + "If the precision is not specified or is greater than the size + of the array, the array shall contain a null wide character." + So if there is a precision, we must not use wcslen. */ + const wchar_t *arg = ap->arg[arg_index].a.a_wide_string; + + if (has_precision) + tmp_length = local_wcsnlen (arg, precision); + else + tmp_length = local_wcslen (arg); +# else + /* ISO C says about %ls in fprintf: + "If a precision is specified, no more than that many bytes are + written (including shift sequences, if any), and the array + shall contain a null wide character if, to equal the multibyte + character sequence length given by the precision, the function + would need to access a wide character one past the end of the + array." + So if there is a precision, we must not use wcslen. */ + /* This case has already been handled separately in VASNPRINTF. */ + abort (); +# endif + } + else +# endif + { +# if WIDE_CHAR_VERSION + /* ISO C says about %s in fwprintf: + "If the precision is not specified or is greater than the size + of the converted array, the converted array shall contain a + null wide character." + So if there is a precision, we must not use strlen. */ + /* This case has already been handled separately in VASNPRINTF. */ + abort (); +# else + /* ISO C says about %s in fprintf: + "If the precision is not specified or greater than the size of + the array, the array shall contain a null character." + So if there is a precision, we must not use strlen. */ + const char *arg = ap->arg[arg_index].a.a_string; + + if (has_precision) + tmp_length = local_strnlen (arg, precision); + else + tmp_length = strlen (arg); +# endif + } + break; + + case 'p': + tmp_length = + (unsigned int) (sizeof (void *) * CHAR_BIT + * 0.25 /* binary -> hexadecimal */ + ) + + 1 /* turn floor into ceil */ + + 2; /* account for leading 0x */ + break; + + default: + abort (); + } + + if (!pad_ourselves) + { +# if ENABLE_UNISTDIO + /* Padding considers the number of characters, therefore the number of + elements after padding may be + > max (tmp_length, width) + but is certainly + <= tmp_length + width. */ + tmp_length = xsum (tmp_length, width); +# else + /* Padding considers the number of elements, says POSIX. */ + if (tmp_length < width) + tmp_length = width; +# endif + } + + tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ + + return tmp_length; +} + +#endif + +DCHAR_T * +VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp, + const FCHAR_T *format, va_list args) +{ + DIRECTIVES d; + arguments a; + + if (PRINTF_PARSE (format, &d, &a) < 0) + /* errno is already set. */ + return NULL; + +#define CLEANUP() \ + if (d.dir != d.direct_alloc_dir) \ + free (d.dir); \ + if (a.arg != a.direct_alloc_arg) \ + free (a.arg); + + if (PRINTF_FETCHARGS (args, &a) < 0) + { + CLEANUP (); + errno = EINVAL; + return NULL; + } + + { + size_t buf_neededlength; + TCHAR_T *buf; + TCHAR_T *buf_malloced; + const FCHAR_T *cp; + size_t i; + DIRECTIVE *dp; + /* Output string accumulator. */ + DCHAR_T *result; + size_t allocated; + size_t length; + + /* Allocate a small buffer that will hold a directive passed to + sprintf or snprintf. */ + buf_neededlength = + xsum4 (7, d.max_width_length, d.max_precision_length, 6); +#if HAVE_ALLOCA + if (buf_neededlength < 4000 / sizeof (TCHAR_T)) + { + buf = (TCHAR_T *) alloca (buf_neededlength * sizeof (TCHAR_T)); + buf_malloced = NULL; + } + else +#endif + { + size_t buf_memsize = xtimes (buf_neededlength, sizeof (TCHAR_T)); + if (size_overflow_p (buf_memsize)) + goto out_of_memory_1; + buf = (TCHAR_T *) malloc (buf_memsize); + if (buf == NULL) + goto out_of_memory_1; + buf_malloced = buf; + } + + if (resultbuf != NULL) + { + result = resultbuf; + allocated = *lengthp; + } + else + { + result = NULL; + allocated = 0; + } + length = 0; + /* Invariants: + result is either == resultbuf or == NULL or malloc-allocated. + If length > 0, then result != NULL. */ + + /* Ensures that allocated >= needed. Aborts through a jump to + out_of_memory if needed is SIZE_MAX or otherwise too big. */ +#define ENSURE_ALLOCATION(needed) \ + if ((needed) > allocated) \ + { \ + size_t memory_size; \ + DCHAR_T *memory; \ + \ + allocated = (allocated > 0 ? xtimes (allocated, 2) : 12); \ + if ((needed) > allocated) \ + allocated = (needed); \ + memory_size = xtimes (allocated, sizeof (DCHAR_T)); \ + if (size_overflow_p (memory_size)) \ + goto out_of_memory; \ + if (result == resultbuf || result == NULL) \ + memory = (DCHAR_T *) malloc (memory_size); \ + else \ + memory = (DCHAR_T *) realloc (result, memory_size); \ + if (memory == NULL) \ + goto out_of_memory; \ + if (result == resultbuf && length > 0) \ + DCHAR_CPY (memory, result, length); \ + result = memory; \ + } + + for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++) + { + if (cp != dp->dir_start) + { + size_t n = dp->dir_start - cp; + size_t augmented_length = xsum (length, n); + + ENSURE_ALLOCATION (augmented_length); + /* This copies a piece of FCHAR_T[] into a DCHAR_T[]. Here we + need that the format string contains only ASCII characters + if FCHAR_T and DCHAR_T are not the same type. */ + if (sizeof (FCHAR_T) == sizeof (DCHAR_T)) + { + DCHAR_CPY (result + length, (const DCHAR_T *) cp, n); + length = augmented_length; + } + else + { + do + result[length++] = *cp++; + while (--n > 0); + } + } + if (i == d.count) + break; + + /* Execute a single directive. */ + if (dp->conversion == '%') + { + size_t augmented_length; + + if (!(dp->arg_index == ARG_NONE)) + abort (); + augmented_length = xsum (length, 1); + ENSURE_ALLOCATION (augmented_length); + result[length] = '%'; + length = augmented_length; + } + else + { + if (!(dp->arg_index != ARG_NONE)) + abort (); + + if (dp->conversion == 'n') + { + switch (a.arg[dp->arg_index].type) + { + case TYPE_COUNT_SCHAR_POINTER: + *a.arg[dp->arg_index].a.a_count_schar_pointer = length; + break; + case TYPE_COUNT_SHORT_POINTER: + *a.arg[dp->arg_index].a.a_count_short_pointer = length; + break; + case TYPE_COUNT_INT_POINTER: + *a.arg[dp->arg_index].a.a_count_int_pointer = length; + break; + case TYPE_COUNT_LONGINT_POINTER: + *a.arg[dp->arg_index].a.a_count_longint_pointer = length; + break; +#if HAVE_LONG_LONG + case TYPE_COUNT_LONGLONGINT_POINTER: + *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length; + break; +#endif + default: + abort (); + } + } +#if ENABLE_UNISTDIO + /* The unistdio extensions. */ + else if (dp->conversion == 'U') + { + arg_type type = a.arg[dp->arg_index].type; + int flags = dp->flags; + int has_width; + size_t width; + int has_precision; + size_t precision; + + has_width = 0; + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + width = arg; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = -width; + } + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + has_width = 1; + } + + has_precision = 0; + precision = 0; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } + + switch (type) + { + case TYPE_U8_STRING: + { + const uint8_t *arg = a.arg[dp->arg_index].a.a_u8_string; + const uint8_t *arg_end; + size_t characters; + + if (has_precision) + { + /* Use only PRECISION characters, from the left. */ + arg_end = arg; + characters = 0; + for (; precision > 0; precision--) + { + int count = u8_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else if (has_width) + { + /* Use the entire string, and count the number of + characters. */ + arg_end = arg; + characters = 0; + for (;;) + { + int count = u8_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else + { + /* Use the entire string. */ + arg_end = arg + u8_strlen (arg); + /* The number of characters doesn't matter. */ + characters = 0; + } + + if (characters < width && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + +# if DCHAR_IS_UINT8_T + { + size_t n = arg_end - arg; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_CPY (result + length, arg, n); + length += n; + } +# else + { /* Convert. */ + DCHAR_T *converted = result + length; + size_t converted_len = allocated - length; +# if DCHAR_IS_TCHAR + /* Convert from UTF-8 to locale encoding. */ + converted = + u8_conv_to_encoding (locale_charset (), + iconveh_question_mark, + arg, arg_end - arg, NULL, + converted, &converted_len); +# else + /* Convert from UTF-8 to UTF-16/UTF-32. */ + converted = + U8_TO_DCHAR (arg, arg_end - arg, + converted, &converted_len); +# endif + if (converted == NULL) + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + if (converted != result + length) + { + ENSURE_ALLOCATION (xsum (length, converted_len)); + DCHAR_CPY (result + length, converted, converted_len); + free (converted); + } + length += converted_len; + } +# endif + + if (characters < width && (dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } + break; + + case TYPE_U16_STRING: + { + const uint16_t *arg = a.arg[dp->arg_index].a.a_u16_string; + const uint16_t *arg_end; + size_t characters; + + if (has_precision) + { + /* Use only PRECISION characters, from the left. */ + arg_end = arg; + characters = 0; + for (; precision > 0; precision--) + { + int count = u16_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else if (has_width) + { + /* Use the entire string, and count the number of + characters. */ + arg_end = arg; + characters = 0; + for (;;) + { + int count = u16_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else + { + /* Use the entire string. */ + arg_end = arg + u16_strlen (arg); + /* The number of characters doesn't matter. */ + characters = 0; + } + + if (characters < width && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + +# if DCHAR_IS_UINT16_T + { + size_t n = arg_end - arg; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_CPY (result + length, arg, n); + length += n; + } +# else + { /* Convert. */ + DCHAR_T *converted = result + length; + size_t converted_len = allocated - length; +# if DCHAR_IS_TCHAR + /* Convert from UTF-16 to locale encoding. */ + converted = + u16_conv_to_encoding (locale_charset (), + iconveh_question_mark, + arg, arg_end - arg, NULL, + converted, &converted_len); +# else + /* Convert from UTF-16 to UTF-8/UTF-32. */ + converted = + U16_TO_DCHAR (arg, arg_end - arg, + converted, &converted_len); +# endif + if (converted == NULL) + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + if (converted != result + length) + { + ENSURE_ALLOCATION (xsum (length, converted_len)); + DCHAR_CPY (result + length, converted, converted_len); + free (converted); + } + length += converted_len; + } +# endif + + if (characters < width && (dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } + break; + + case TYPE_U32_STRING: + { + const uint32_t *arg = a.arg[dp->arg_index].a.a_u32_string; + const uint32_t *arg_end; + size_t characters; + + if (has_precision) + { + /* Use only PRECISION characters, from the left. */ + arg_end = arg; + characters = 0; + for (; precision > 0; precision--) + { + int count = u32_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else if (has_width) + { + /* Use the entire string, and count the number of + characters. */ + arg_end = arg; + characters = 0; + for (;;) + { + int count = u32_strmblen (arg_end); + if (count == 0) + break; + if (count < 0) + { + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else + { + /* Use the entire string. */ + arg_end = arg + u32_strlen (arg); + /* The number of characters doesn't matter. */ + characters = 0; + } + + if (characters < width && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + +# if DCHAR_IS_UINT32_T + { + size_t n = arg_end - arg; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_CPY (result + length, arg, n); + length += n; + } +# else + { /* Convert. */ + DCHAR_T *converted = result + length; + size_t converted_len = allocated - length; +# if DCHAR_IS_TCHAR + /* Convert from UTF-32 to locale encoding. */ + converted = + u32_conv_to_encoding (locale_charset (), + iconveh_question_mark, + arg, arg_end - arg, NULL, + converted, &converted_len); +# else + /* Convert from UTF-32 to UTF-8/UTF-16. */ + converted = + U32_TO_DCHAR (arg, arg_end - arg, + converted, &converted_len); +# endif + if (converted == NULL) + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + if (converted != result + length) + { + ENSURE_ALLOCATION (xsum (length, converted_len)); + DCHAR_CPY (result + length, converted, converted_len); + free (converted); + } + length += converted_len; + } +# endif + + if (characters < width && (dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } + break; + + default: + abort (); + } + } +#endif +#if (!USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || (NEED_PRINTF_DIRECTIVE_LS && !defined IN_LIBINTL)) && HAVE_WCHAR_T + else if (dp->conversion == 's' +# if WIDE_CHAR_VERSION + && a.arg[dp->arg_index].type != TYPE_WIDE_STRING +# else + && a.arg[dp->arg_index].type == TYPE_WIDE_STRING +# endif + ) + { + /* The normal handling of the 's' directive below requires + allocating a temporary buffer. The determination of its + length (tmp_length), in the case when a precision is + specified, below requires a conversion between a char[] + string and a wchar_t[] wide string. It could be done, but + we have no guarantee that the implementation of sprintf will + use the exactly same algorithm. Without this guarantee, it + is possible to have buffer overrun bugs. In order to avoid + such bugs, we implement the entire processing of the 's' + directive ourselves. */ + int flags = dp->flags; + int has_width; + size_t width; + int has_precision; + size_t precision; + + has_width = 0; + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + width = arg; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = -width; + } + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + has_width = 1; + } + + has_precision = 0; + precision = 6; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } + +# if WIDE_CHAR_VERSION + /* %s in vasnwprintf. See the specification of fwprintf. */ + { + const char *arg = a.arg[dp->arg_index].a.a_string; + const char *arg_end; + size_t characters; + + if (has_precision) + { + /* Use only as many bytes as needed to produce PRECISION + wide characters, from the left. */ +# if HAVE_MBRTOWC + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + arg_end = arg; + characters = 0; + for (; precision > 0; precision--) + { + int count; +# if HAVE_MBRTOWC + count = mbrlen (arg_end, MB_CUR_MAX, &state); +# else + count = mblen (arg_end, MB_CUR_MAX); +# endif + if (count == 0) + /* Found the terminating NUL. */ + break; + if (count < 0) + { + /* Invalid or incomplete multibyte character. */ + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else if (has_width) + { + /* Use the entire string, and count the number of wide + characters. */ +# if HAVE_MBRTOWC + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + arg_end = arg; + characters = 0; + for (;;) + { + int count; +# if HAVE_MBRTOWC + count = mbrlen (arg_end, MB_CUR_MAX, &state); +# else + count = mblen (arg_end, MB_CUR_MAX); +# endif + if (count == 0) + /* Found the terminating NUL. */ + break; + if (count < 0) + { + /* Invalid or incomplete multibyte character. */ + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end += count; + characters++; + } + } + else + { + /* Use the entire string. */ + arg_end = arg + strlen (arg); + /* The number of characters doesn't matter. */ + characters = 0; + } + + if (characters < width && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + + if (has_precision || has_width) + { + /* We know the number of wide characters in advance. */ + size_t remaining; +# if HAVE_MBRTOWC + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + ENSURE_ALLOCATION (xsum (length, characters)); + for (remaining = characters; remaining > 0; remaining--) + { + wchar_t wc; + int count; +# if HAVE_MBRTOWC + count = mbrtowc (&wc, arg, arg_end - arg, &state); +# else + count = mbtowc (&wc, arg, arg_end - arg); +# endif + if (count <= 0) + /* mbrtowc not consistent with mbrlen, or mbtowc + not consistent with mblen. */ + abort (); + result[length++] = wc; + arg += count; + } + if (!(arg == arg_end)) + abort (); + } + else + { +# if HAVE_MBRTOWC + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + while (arg < arg_end) + { + wchar_t wc; + int count; +# if HAVE_MBRTOWC + count = mbrtowc (&wc, arg, arg_end - arg, &state); +# else + count = mbtowc (&wc, arg, arg_end - arg); +# endif + if (count <= 0) + /* mbrtowc not consistent with mbrlen, or mbtowc + not consistent with mblen. */ + abort (); + ENSURE_ALLOCATION (xsum (length, 1)); + result[length++] = wc; + arg += count; + } + } + + if (characters < width && (dp->flags & FLAG_LEFT)) + { + size_t n = width - characters; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } +# else + /* %ls in vasnprintf. See the specification of fprintf. */ + { + const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string; + const wchar_t *arg_end; + size_t characters; +# if !DCHAR_IS_TCHAR + /* This code assumes that TCHAR_T is 'char'. */ + verify (sizeof (TCHAR_T) == 1); + TCHAR_T *tmpsrc; + DCHAR_T *tmpdst; + size_t tmpdst_len; +# endif + size_t w; + + if (has_precision) + { + /* Use only as many wide characters as needed to produce + at most PRECISION bytes, from the left. */ +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + arg_end = arg; + characters = 0; + while (precision > 0) + { + char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ + int count; + + if (*arg_end == 0) + /* Found the terminating null wide character. */ + break; +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + count = wcrtomb (cbuf, *arg_end, &state); +# else + count = wctomb (cbuf, *arg_end); +# endif + if (count < 0) + { + /* Cannot convert. */ + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + if (precision < count) + break; + arg_end++; + characters += count; + precision -= count; + } + } +# if DCHAR_IS_TCHAR + else if (has_width) +# else + else +# endif + { + /* Use the entire string, and count the number of + bytes. */ +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + arg_end = arg; + characters = 0; + for (;;) + { + char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ + int count; + + if (*arg_end == 0) + /* Found the terminating null wide character. */ + break; +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + count = wcrtomb (cbuf, *arg_end, &state); +# else + count = wctomb (cbuf, *arg_end); +# endif + if (count < 0) + { + /* Cannot convert. */ + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + arg_end++; + characters += count; + } + } +# if DCHAR_IS_TCHAR + else + { + /* Use the entire string. */ + arg_end = arg + local_wcslen (arg); + /* The number of bytes doesn't matter. */ + characters = 0; + } +# endif + +# if !DCHAR_IS_TCHAR + /* Convert the string into a piece of temporary memory. */ + tmpsrc = (TCHAR_T *) malloc (characters * sizeof (TCHAR_T)); + if (tmpsrc == NULL) + goto out_of_memory; + { + TCHAR_T *tmpptr = tmpsrc; + size_t remaining; +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + for (remaining = characters; remaining > 0; ) + { + char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ + int count; + + if (*arg == 0) + abort (); +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + count = wcrtomb (cbuf, *arg, &state); +# else + count = wctomb (cbuf, *arg); +# endif + if (count <= 0) + /* Inconsistency. */ + abort (); + memcpy (tmpptr, cbuf, count); + tmpptr += count; + arg++; + remaining -= count; + } + if (!(arg == arg_end)) + abort (); + } + + /* Convert from TCHAR_T[] to DCHAR_T[]. */ + tmpdst = + DCHAR_CONV_FROM_ENCODING (locale_charset (), + iconveh_question_mark, + tmpsrc, characters, + NULL, + NULL, &tmpdst_len); + if (tmpdst == NULL) + { + int saved_errno = errno; + free (tmpsrc); + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + free (tmpsrc); +# endif + + if (has_width) + { +# if ENABLE_UNISTDIO + /* Outside POSIX, it's preferable to compare the width + against the number of _characters_ of the converted + value. */ + w = DCHAR_MBSNLEN (result + length, characters); +# else + /* The width is compared against the number of _bytes_ + of the converted value, says POSIX. */ + w = characters; +# endif + } + else + /* w doesn't matter. */ + w = 0; + + if (w < width && !(dp->flags & FLAG_LEFT)) + { + size_t n = width - w; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + +# if DCHAR_IS_TCHAR + if (has_precision || has_width) + { + /* We know the number of bytes in advance. */ + size_t remaining; +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + ENSURE_ALLOCATION (xsum (length, characters)); + for (remaining = characters; remaining > 0; ) + { + char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ + int count; + + if (*arg == 0) + abort (); +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + count = wcrtomb (cbuf, *arg, &state); +# else + count = wctomb (cbuf, *arg); +# endif + if (count <= 0) + /* Inconsistency. */ + abort (); + memcpy (result + length, cbuf, count); + length += count; + arg++; + remaining -= count; + } + if (!(arg == arg_end)) + abort (); + } + else + { +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + mbstate_t state; + memset (&state, '\0', sizeof (mbstate_t)); +# endif + while (arg < arg_end) + { + char cbuf[64]; /* Assume MB_CUR_MAX <= 64. */ + int count; + + if (*arg == 0) + abort (); +# if HAVE_WCRTOMB && !defined GNULIB_defined_mbstate_t + count = wcrtomb (cbuf, *arg, &state); +# else + count = wctomb (cbuf, *arg); +# endif + if (count <= 0) + { + /* Cannot convert. */ + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EILSEQ; + return NULL; + } + ENSURE_ALLOCATION (xsum (length, count)); + memcpy (result + length, cbuf, count); + length += count; + arg++; + } + } +# else + ENSURE_ALLOCATION (xsum (length, tmpdst_len)); + DCHAR_CPY (result + length, tmpdst, tmpdst_len); + free (tmpdst); + length += tmpdst_len; +# endif + + if (w < width && (dp->flags & FLAG_LEFT)) + { + size_t n = width - w; + ENSURE_ALLOCATION (xsum (length, n)); + DCHAR_SET (result + length, ' ', n); + length += n; + } + } +# endif + } +#endif +#if (NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE) && !defined IN_LIBINTL + else if ((dp->conversion == 'a' || dp->conversion == 'A') +# if !(NEED_PRINTF_DIRECTIVE_A || (NEED_PRINTF_LONG_DOUBLE && NEED_PRINTF_DOUBLE)) + && (0 +# if NEED_PRINTF_DOUBLE + || a.arg[dp->arg_index].type == TYPE_DOUBLE +# endif +# if NEED_PRINTF_LONG_DOUBLE + || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE +# endif + ) +# endif + ) + { + arg_type type = a.arg[dp->arg_index].type; + int flags = dp->flags; + size_t width; + int has_precision; + size_t precision; + size_t tmp_length; + size_t count; + DCHAR_T tmpbuf[700]; + DCHAR_T *tmp; + DCHAR_T *pad_ptr; + DCHAR_T *p; + + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + width = arg; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = -width; + } + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + } + + has_precision = 0; + precision = 0; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } + + /* Allocate a temporary buffer of sufficient size. */ + if (type == TYPE_LONGDOUBLE) + tmp_length = + (unsigned int) ((LDBL_DIG + 1) + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + else + tmp_length = + (unsigned int) ((DBL_DIG + 1) + * 0.831 /* decimal -> hexadecimal */ + ) + + 1; /* turn floor into ceil */ + if (tmp_length < precision) + tmp_length = precision; + /* Account for sign, decimal point etc. */ + tmp_length = xsum (tmp_length, 12); + + if (tmp_length < width) + tmp_length = width; + + tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ + + if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T)) + tmp = tmpbuf; + else + { + size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T)); + + if (size_overflow_p (tmp_memsize)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + tmp = (DCHAR_T *) malloc (tmp_memsize); + if (tmp == NULL) + /* Out of memory. */ + goto out_of_memory; + } + + pad_ptr = NULL; + p = tmp; + if (type == TYPE_LONGDOUBLE) + { +# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_LONG_DOUBLE + long double arg = a.arg[dp->arg_index].a.a_longdouble; + + if (isnanl (arg)) + { + if (dp->conversion == 'A') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + DECL_LONG_DOUBLE_ROUNDING + + BEGIN_LONG_DOUBLE_ROUNDING (); + + if (signbit (arg)) /* arg < 0.0L or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0L && arg + arg == arg) + { + if (dp->conversion == 'A') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { + int exponent; + long double mantissa; + + if (arg > 0.0L) + mantissa = printf_frexpl (arg, &exponent); + else + { + exponent = 0; + mantissa = 0.0L; + } + + if (has_precision + && precision < (unsigned int) ((LDBL_DIG + 1) * 0.831) + 1) + { + /* Round the mantissa. */ + long double tail = mantissa; + size_t q; + + for (q = precision; ; q--) + { + int digit = (int) tail; + tail -= digit; + if (q == 0) + { + if (digit & 1 ? tail >= 0.5L : tail > 0.5L) + tail = 1 - tail; + else + tail = - tail; + break; + } + tail *= 16.0L; + } + if (tail != 0.0L) + for (q = precision; q > 0; q--) + tail *= 0.0625L; + mantissa += tail; + } + + *p++ = '0'; + *p++ = dp->conversion - 'A' + 'X'; + pad_ptr = p; + { + int digit; + + digit = (int) mantissa; + mantissa -= digit; + *p++ = '0' + digit; + if ((flags & FLAG_ALT) + || mantissa > 0.0L || precision > 0) + { + *p++ = decimal_point_char (); + /* This loop terminates because we assume + that FLT_RADIX is a power of 2. */ + while (mantissa > 0.0L) + { + mantissa *= 16.0L; + digit = (int) mantissa; + mantissa -= digit; + *p++ = digit + + (digit < 10 + ? '0' + : dp->conversion - 10); + if (precision > 0) + precision--; + } + while (precision > 0) + { + *p++ = '0'; + precision--; + } + } + } + *p++ = dp->conversion - 'A' + 'P'; +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + + END_LONG_DOUBLE_ROUNDING (); + } +# else + abort (); +# endif + } + else + { +# if NEED_PRINTF_DIRECTIVE_A || NEED_PRINTF_DOUBLE + double arg = a.arg[dp->arg_index].a.a_double; + + if (isnand (arg)) + { + if (dp->conversion == 'A') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + + if (signbit (arg)) /* arg < 0.0 or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0 && arg + arg == arg) + { + if (dp->conversion == 'A') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { + int exponent; + double mantissa; + + if (arg > 0.0) + mantissa = printf_frexp (arg, &exponent); + else + { + exponent = 0; + mantissa = 0.0; + } + + if (has_precision + && precision < (unsigned int) ((DBL_DIG + 1) * 0.831) + 1) + { + /* Round the mantissa. */ + double tail = mantissa; + size_t q; + + for (q = precision; ; q--) + { + int digit = (int) tail; + tail -= digit; + if (q == 0) + { + if (digit & 1 ? tail >= 0.5 : tail > 0.5) + tail = 1 - tail; + else + tail = - tail; + break; + } + tail *= 16.0; + } + if (tail != 0.0) + for (q = precision; q > 0; q--) + tail *= 0.0625; + mantissa += tail; + } + + *p++ = '0'; + *p++ = dp->conversion - 'A' + 'X'; + pad_ptr = p; + { + int digit; + + digit = (int) mantissa; + mantissa -= digit; + *p++ = '0' + digit; + if ((flags & FLAG_ALT) + || mantissa > 0.0 || precision > 0) + { + *p++ = decimal_point_char (); + /* This loop terminates because we assume + that FLT_RADIX is a power of 2. */ + while (mantissa > 0.0) + { + mantissa *= 16.0; + digit = (int) mantissa; + mantissa -= digit; + *p++ = digit + + (digit < 10 + ? '0' + : dp->conversion - 10); + if (precision > 0) + precision--; + } + while (precision > 0) + { + *p++ = '0'; + precision--; + } + } + } + *p++ = dp->conversion - 'A' + 'P'; +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + } +# else + abort (); +# endif + } + + /* The generated string now extends from tmp to p, with the + zero padding insertion point being at pad_ptr. */ + count = p - tmp; + + if (count < width) + { + size_t pad = width - count; + DCHAR_T *end = p + pad; + + if (flags & FLAG_LEFT) + { + /* Pad with spaces on the right. */ + for (; pad > 0; pad--) + *p++ = ' '; + } + else if ((flags & FLAG_ZERO) && pad_ptr != NULL) + { + /* Pad with zeroes. */ + DCHAR_T *q = end; + + while (p > pad_ptr) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = '0'; + } + else + { + /* Pad with spaces on the left. */ + DCHAR_T *q = end; + + while (p > tmp) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = ' '; + } + + p = end; + } + + count = p - tmp; + + if (count >= tmp_length) + /* tmp_length was incorrectly calculated - fix the + code above! */ + abort (); + + /* Make room for the result. */ + if (count >= allocated - length) + { + size_t n = xsum (length, count); + + ENSURE_ALLOCATION (n); + } + + /* Append the result. */ + memcpy (result + length, tmp, count * sizeof (DCHAR_T)); + if (tmp != tmpbuf) + free (tmp); + length += count; + } +#endif +#if (NEED_PRINTF_INFINITE_DOUBLE || NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE || NEED_PRINTF_LONG_DOUBLE) && !defined IN_LIBINTL + else if ((dp->conversion == 'f' || dp->conversion == 'F' + || dp->conversion == 'e' || dp->conversion == 'E' + || dp->conversion == 'g' || dp->conversion == 'G' + || dp->conversion == 'a' || dp->conversion == 'A') + && (0 +# if NEED_PRINTF_DOUBLE + || a.arg[dp->arg_index].type == TYPE_DOUBLE +# elif NEED_PRINTF_INFINITE_DOUBLE + || (a.arg[dp->arg_index].type == TYPE_DOUBLE + /* The systems (mingw) which produce wrong output + for Inf, -Inf, and NaN also do so for -0.0. + Therefore we treat this case here as well. */ + && is_infinite_or_zero (a.arg[dp->arg_index].a.a_double)) +# endif +# if NEED_PRINTF_LONG_DOUBLE + || a.arg[dp->arg_index].type == TYPE_LONGDOUBLE +# elif NEED_PRINTF_INFINITE_LONG_DOUBLE + || (a.arg[dp->arg_index].type == TYPE_LONGDOUBLE + /* Some systems produce wrong output for Inf, + -Inf, and NaN. Some systems in this category + (IRIX 5.3) also do so for -0.0. Therefore we + treat this case here as well. */ + && is_infinite_or_zerol (a.arg[dp->arg_index].a.a_longdouble)) +# endif + )) + { +# if (NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE) && (NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE) + arg_type type = a.arg[dp->arg_index].type; +# endif + int flags = dp->flags; + size_t width; + size_t count; + int has_precision; + size_t precision; + size_t tmp_length; + DCHAR_T tmpbuf[700]; + DCHAR_T *tmp; + DCHAR_T *pad_ptr; + DCHAR_T *p; + + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + width = arg; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = -width; + } + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } + } + + has_precision = 0; + precision = 0; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } + + /* POSIX specifies the default precision to be 6 for %f, %F, + %e, %E, but not for %g, %G. Implementations appear to use + the same default precision also for %g, %G. But for %a, %A, + the default precision is 0. */ + if (!has_precision) + if (!(dp->conversion == 'a' || dp->conversion == 'A')) + precision = 6; + + /* Allocate a temporary buffer of sufficient size. */ +# if NEED_PRINTF_DOUBLE && NEED_PRINTF_LONG_DOUBLE + tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : DBL_DIG + 1); +# elif NEED_PRINTF_INFINITE_DOUBLE && NEED_PRINTF_LONG_DOUBLE + tmp_length = (type == TYPE_LONGDOUBLE ? LDBL_DIG + 1 : 0); +# elif NEED_PRINTF_LONG_DOUBLE + tmp_length = LDBL_DIG + 1; +# elif NEED_PRINTF_DOUBLE + tmp_length = DBL_DIG + 1; +# else + tmp_length = 0; +# endif + if (tmp_length < precision) + tmp_length = precision; +# if NEED_PRINTF_LONG_DOUBLE +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + if (type == TYPE_LONGDOUBLE) +# endif + if (dp->conversion == 'f' || dp->conversion == 'F') + { + long double arg = a.arg[dp->arg_index].a.a_longdouble; + if (!(isnanl (arg) || arg + arg == arg)) + { + /* arg is finite and nonzero. */ + int exponent = floorlog10l (arg < 0 ? -arg : arg); + if (exponent >= 0 && tmp_length < exponent + precision) + tmp_length = exponent + precision; + } + } +# endif +# if NEED_PRINTF_DOUBLE +# if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE + if (type == TYPE_DOUBLE) +# endif + if (dp->conversion == 'f' || dp->conversion == 'F') + { + double arg = a.arg[dp->arg_index].a.a_double; + if (!(isnand (arg) || arg + arg == arg)) + { + /* arg is finite and nonzero. */ + int exponent = floorlog10 (arg < 0 ? -arg : arg); + if (exponent >= 0 && tmp_length < exponent + precision) + tmp_length = exponent + precision; + } + } +# endif + /* Account for sign, decimal point etc. */ + tmp_length = xsum (tmp_length, 12); + + if (tmp_length < width) + tmp_length = width; + + tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ + + if (tmp_length <= sizeof (tmpbuf) / sizeof (DCHAR_T)) + tmp = tmpbuf; + else + { + size_t tmp_memsize = xtimes (tmp_length, sizeof (DCHAR_T)); + + if (size_overflow_p (tmp_memsize)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + tmp = (DCHAR_T *) malloc (tmp_memsize); + if (tmp == NULL) + /* Out of memory. */ + goto out_of_memory; + } + + pad_ptr = NULL; + p = tmp; + +# if NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_INFINITE_LONG_DOUBLE +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + if (type == TYPE_LONGDOUBLE) +# endif + { + long double arg = a.arg[dp->arg_index].a.a_longdouble; + + if (isnanl (arg)) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + DECL_LONG_DOUBLE_ROUNDING + + BEGIN_LONG_DOUBLE_ROUNDING (); + + if (signbit (arg)) /* arg < 0.0L or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0L && arg + arg == arg) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { +# if NEED_PRINTF_LONG_DOUBLE + pad_ptr = p; + + if (dp->conversion == 'f' || dp->conversion == 'F') + { + char *digits; + size_t ndigits; + + digits = + scale10_round_decimal_long_double (arg, precision); + if (digits == NULL) + { + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + ndigits = strlen (digits); + + if (ndigits > precision) + do + { + --ndigits; + *p++ = digits[ndigits]; + } + while (ndigits > precision); + else + *p++ = '0'; + /* Here ndigits <= precision. */ + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > ndigits; precision--) + *p++ = '0'; + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + else if (dp->conversion == 'e' || dp->conversion == 'E') + { + int exponent; + + if (arg == 0.0L) + { + exponent = 0; + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + } + else + { + /* arg > 0.0L. */ + int adjusted; + char *digits; + size_t ndigits; + + exponent = floorlog10l (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_long_double (arg, + (int)precision - exponent); + if (digits == NULL) + { + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + ndigits = strlen (digits); + + if (ndigits == precision + 1) + break; + if (ndigits < precision + || ndigits > precision + 2) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits == precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + /* Here ndigits = precision+1. */ + if (is_borderline (digits, precision)) + { + /* Maybe the exponent guess was too high + and a smaller exponent can be reached + by turning a 10...0 into 9...9x. */ + char *digits2 = + scale10_round_decimal_long_double (arg, + (int)precision - exponent + 1); + if (digits2 == NULL) + { + free (digits); + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + if (strlen (digits2) == precision + 1) + { + free (digits); + digits = digits2; + exponent -= 1; + } + else + free (digits2); + } + /* Here ndigits = precision+1. */ + + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + + *p++ = dp->conversion; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', '.', '2', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+.2d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+.2d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + else if (dp->conversion == 'g' || dp->conversion == 'G') + { + if (precision == 0) + precision = 1; + /* precision >= 1. */ + + if (arg == 0.0L) + /* The exponent is 0, >= -4, < precision. + Use fixed-point notation. */ + { + size_t ndigits = precision; + /* Number of trailing zeroes that have to be + dropped. */ + size_t nzeroes = + (flags & FLAG_ALT ? 0 : precision - 1); + + --ndigits; + *p++ = '0'; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = '0'; + } + } + } + else + { + /* arg > 0.0L. */ + int exponent; + int adjusted; + char *digits; + size_t ndigits; + size_t nzeroes; + + exponent = floorlog10l (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_long_double (arg, + (int)(precision - 1) - exponent); + if (digits == NULL) + { + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + ndigits = strlen (digits); + + if (ndigits == precision) + break; + if (ndigits < precision - 1 + || ndigits > precision + 1) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits < precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + /* Here ndigits = precision. */ + if (is_borderline (digits, precision - 1)) + { + /* Maybe the exponent guess was too high + and a smaller exponent can be reached + by turning a 10...0 into 9...9x. */ + char *digits2 = + scale10_round_decimal_long_double (arg, + (int)(precision - 1) - exponent + 1); + if (digits2 == NULL) + { + free (digits); + END_LONG_DOUBLE_ROUNDING (); + goto out_of_memory; + } + if (strlen (digits2) == precision) + { + free (digits); + digits = digits2; + exponent -= 1; + } + else + free (digits2); + } + /* Here ndigits = precision. */ + + /* Determine the number of trailing zeroes + that have to be dropped. */ + nzeroes = 0; + if ((flags & FLAG_ALT) == 0) + while (nzeroes < ndigits + && digits[nzeroes] == '0') + nzeroes++; + + /* The exponent is now determined. */ + if (exponent >= -4 + && exponent < (long)precision) + { + /* Fixed-point notation: + max(exponent,0)+1 digits, then the + decimal point, then the remaining + digits without trailing zeroes. */ + if (exponent >= 0) + { + size_t ecount = exponent + 1; + /* Note: count <= precision = ndigits. */ + for (; ecount > 0; ecount--) + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + size_t ecount = -exponent - 1; + *p++ = '0'; + *p++ = decimal_point_char (); + for (; ecount > 0; ecount--) + *p++ = '0'; + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + /* Exponential notation. */ + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + { '%', '+', '.', '2', 'd', '\0' }; + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, "%+.2d", exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, "%+.2d", exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } +# endif + } + + free (digits); + } + } + else + abort (); +# else + /* arg is finite. */ + if (!(arg == 0.0L)) + abort (); + + pad_ptr = p; + + if (dp->conversion == 'f' || dp->conversion == 'F') + { + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + } + else if (dp->conversion == 'e' || dp->conversion == 'E') + { + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + *p++ = dp->conversion; /* 'e' or 'E' */ + *p++ = '+'; + *p++ = '0'; + *p++ = '0'; + } + else if (dp->conversion == 'g' || dp->conversion == 'G') + { + *p++ = '0'; + if (flags & FLAG_ALT) + { + size_t ndigits = + (precision > 0 ? precision - 1 : 0); + *p++ = decimal_point_char (); + for (; ndigits > 0; --ndigits) + *p++ = '0'; + } + } + else if (dp->conversion == 'a' || dp->conversion == 'A') + { + *p++ = '0'; + *p++ = dp->conversion - 'A' + 'X'; + pad_ptr = p; + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + *p++ = dp->conversion - 'A' + 'P'; + *p++ = '+'; + *p++ = '0'; + } + else + abort (); +# endif + } + + END_LONG_DOUBLE_ROUNDING (); + } + } +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + else +# endif +# endif +# if NEED_PRINTF_DOUBLE || NEED_PRINTF_INFINITE_DOUBLE + { + double arg = a.arg[dp->arg_index].a.a_double; + + if (isnand (arg)) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'N'; *p++ = 'A'; *p++ = 'N'; + } + else + { + *p++ = 'n'; *p++ = 'a'; *p++ = 'n'; + } + } + else + { + int sign = 0; + + if (signbit (arg)) /* arg < 0.0 or negative zero */ + { + sign = -1; + arg = -arg; + } + + if (sign < 0) + *p++ = '-'; + else if (flags & FLAG_SHOWSIGN) + *p++ = '+'; + else if (flags & FLAG_SPACE) + *p++ = ' '; + + if (arg > 0.0 && arg + arg == arg) + { + if (dp->conversion >= 'A' && dp->conversion <= 'Z') + { + *p++ = 'I'; *p++ = 'N'; *p++ = 'F'; + } + else + { + *p++ = 'i'; *p++ = 'n'; *p++ = 'f'; + } + } + else + { +# if NEED_PRINTF_DOUBLE + pad_ptr = p; + + if (dp->conversion == 'f' || dp->conversion == 'F') + { + char *digits; + size_t ndigits; + + digits = + scale10_round_decimal_double (arg, precision); + if (digits == NULL) + goto out_of_memory; + ndigits = strlen (digits); + + if (ndigits > precision) + do + { + --ndigits; + *p++ = digits[ndigits]; + } + while (ndigits > precision); + else + *p++ = '0'; + /* Here ndigits <= precision. */ + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > ndigits; precision--) + *p++ = '0'; + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + else if (dp->conversion == 'e' || dp->conversion == 'E') + { + int exponent; + + if (arg == 0.0) + { + exponent = 0; + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + } + else + { + /* arg > 0.0. */ + int adjusted; + char *digits; + size_t ndigits; + + exponent = floorlog10 (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_double (arg, + (int)precision - exponent); + if (digits == NULL) + goto out_of_memory; + ndigits = strlen (digits); + + if (ndigits == precision + 1) + break; + if (ndigits < precision + || ndigits > precision + 2) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits == precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + /* Here ndigits = precision+1. */ + if (is_borderline (digits, precision)) + { + /* Maybe the exponent guess was too high + and a smaller exponent can be reached + by turning a 10...0 into 9...9x. */ + char *digits2 = + scale10_round_decimal_double (arg, + (int)precision - exponent + 1); + if (digits2 == NULL) + { + free (digits); + goto out_of_memory; + } + if (strlen (digits2) == precision + 1) + { + free (digits); + digits = digits2; + exponent -= 1; + } + else + free (digits2); + } + /* Here ndigits = precision+1. */ + + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + while (ndigits > 0) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + + free (digits); + } + + *p++ = dp->conversion; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + { '%', '+', '.', '3', 'd', '\0' }; +# else + { '%', '+', '.', '2', 'd', '\0' }; +# endif + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + { + static const char decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + "%+.3d"; +# else + "%+.2d"; +# endif + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, decimal_format, exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, decimal_format, exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } + } +# endif + } + else if (dp->conversion == 'g' || dp->conversion == 'G') + { + if (precision == 0) + precision = 1; + /* precision >= 1. */ + + if (arg == 0.0) + /* The exponent is 0, >= -4, < precision. + Use fixed-point notation. */ + { + size_t ndigits = precision; + /* Number of trailing zeroes that have to be + dropped. */ + size_t nzeroes = + (flags & FLAG_ALT ? 0 : precision - 1); + + --ndigits; + *p++ = '0'; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = '0'; + } + } + } + else + { + /* arg > 0.0. */ + int exponent; + int adjusted; + char *digits; + size_t ndigits; + size_t nzeroes; + + exponent = floorlog10 (arg); + adjusted = 0; + for (;;) + { + digits = + scale10_round_decimal_double (arg, + (int)(precision - 1) - exponent); + if (digits == NULL) + goto out_of_memory; + ndigits = strlen (digits); + + if (ndigits == precision) + break; + if (ndigits < precision - 1 + || ndigits > precision + 1) + /* The exponent was not guessed + precisely enough. */ + abort (); + if (adjusted) + /* None of two values of exponent is + the right one. Prevent an endless + loop. */ + abort (); + free (digits); + if (ndigits < precision) + exponent -= 1; + else + exponent += 1; + adjusted = 1; + } + /* Here ndigits = precision. */ + if (is_borderline (digits, precision - 1)) + { + /* Maybe the exponent guess was too high + and a smaller exponent can be reached + by turning a 10...0 into 9...9x. */ + char *digits2 = + scale10_round_decimal_double (arg, + (int)(precision - 1) - exponent + 1); + if (digits2 == NULL) + { + free (digits); + goto out_of_memory; + } + if (strlen (digits2) == precision) + { + free (digits); + digits = digits2; + exponent -= 1; + } + else + free (digits2); + } + /* Here ndigits = precision. */ + + /* Determine the number of trailing zeroes + that have to be dropped. */ + nzeroes = 0; + if ((flags & FLAG_ALT) == 0) + while (nzeroes < ndigits + && digits[nzeroes] == '0') + nzeroes++; + + /* The exponent is now determined. */ + if (exponent >= -4 + && exponent < (long)precision) + { + /* Fixed-point notation: + max(exponent,0)+1 digits, then the + decimal point, then the remaining + digits without trailing zeroes. */ + if (exponent >= 0) + { + size_t ecount = exponent + 1; + /* Note: ecount <= precision = ndigits. */ + for (; ecount > 0; ecount--) + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + size_t ecount = -exponent - 1; + *p++ = '0'; + *p++ = decimal_point_char (); + for (; ecount > 0; ecount--) + *p++ = '0'; + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + } + else + { + /* Exponential notation. */ + *p++ = digits[--ndigits]; + if ((flags & FLAG_ALT) || ndigits > nzeroes) + { + *p++ = decimal_point_char (); + while (ndigits > nzeroes) + { + --ndigits; + *p++ = digits[ndigits]; + } + } + *p++ = dp->conversion - 'G' + 'E'; /* 'e' or 'E' */ +# if WIDE_CHAR_VERSION + { + static const wchar_t decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + { '%', '+', '.', '3', 'd', '\0' }; +# else + { '%', '+', '.', '2', 'd', '\0' }; +# endif + SNPRINTF (p, 6 + 1, decimal_format, exponent); + } + while (*p != '\0') + p++; +# else + { + static const char decimal_format[] = + /* Produce the same number of exponent digits + as the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + "%+.3d"; +# else + "%+.2d"; +# endif + if (sizeof (DCHAR_T) == 1) + { + sprintf ((char *) p, decimal_format, exponent); + while (*p != '\0') + p++; + } + else + { + char expbuf[6 + 1]; + const char *ep; + sprintf (expbuf, decimal_format, exponent); + for (ep = expbuf; (*p = *ep) != '\0'; ep++) + p++; + } + } +# endif + } + + free (digits); + } + } + else + abort (); +# else + /* arg is finite. */ + if (!(arg == 0.0)) + abort (); + + pad_ptr = p; + + if (dp->conversion == 'f' || dp->conversion == 'F') + { + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + } + else if (dp->conversion == 'e' || dp->conversion == 'E') + { + *p++ = '0'; + if ((flags & FLAG_ALT) || precision > 0) + { + *p++ = decimal_point_char (); + for (; precision > 0; precision--) + *p++ = '0'; + } + *p++ = dp->conversion; /* 'e' or 'E' */ + *p++ = '+'; + /* Produce the same number of exponent digits as + the native printf implementation. */ +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + *p++ = '0'; +# endif + *p++ = '0'; + *p++ = '0'; + } + else if (dp->conversion == 'g' || dp->conversion == 'G') + { + *p++ = '0'; + if (flags & FLAG_ALT) + { + size_t ndigits = + (precision > 0 ? precision - 1 : 0); + *p++ = decimal_point_char (); + for (; ndigits > 0; --ndigits) + *p++ = '0'; + } + } + else + abort (); +# endif + } + } + } +# endif + + /* The generated string now extends from tmp to p, with the + zero padding insertion point being at pad_ptr. */ + count = p - tmp; + + if (count < width) + { + size_t pad = width - count; + DCHAR_T *end = p + pad; + + if (flags & FLAG_LEFT) + { + /* Pad with spaces on the right. */ + for (; pad > 0; pad--) + *p++ = ' '; + } + else if ((flags & FLAG_ZERO) && pad_ptr != NULL) + { + /* Pad with zeroes. */ + DCHAR_T *q = end; + + while (p > pad_ptr) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = '0'; + } + else + { + /* Pad with spaces on the left. */ + DCHAR_T *q = end; + + while (p > tmp) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = ' '; + } + + p = end; + } + + count = p - tmp; + + if (count >= tmp_length) + /* tmp_length was incorrectly calculated - fix the + code above! */ + abort (); + + /* Make room for the result. */ + if (count >= allocated - length) + { + size_t n = xsum (length, count); + + ENSURE_ALLOCATION (n); + } + + /* Append the result. */ + memcpy (result + length, tmp, count * sizeof (DCHAR_T)); + if (tmp != tmpbuf) + free (tmp); + length += count; + } +#endif + else + { + arg_type type = a.arg[dp->arg_index].type; + int flags = dp->flags; +#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + int has_width; +#endif +#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + size_t width; +#endif +#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || NEED_PRINTF_UNBOUNDED_PRECISION + int has_precision; + size_t precision; +#endif +#if NEED_PRINTF_UNBOUNDED_PRECISION + int prec_ourselves; +#else +# define prec_ourselves 0 +#endif +#if NEED_PRINTF_FLAG_LEFTADJUST +# define pad_ourselves 1 +#elif !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + int pad_ourselves; +#else +# define pad_ourselves 0 +#endif + TCHAR_T *fbp; + unsigned int prefix_count; + int prefixes[2] IF_LINT (= { 0 }); + int orig_errno; +#if !USE_SNPRINTF + size_t tmp_length; + TCHAR_T tmpbuf[700]; + TCHAR_T *tmp; +#endif + +#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + has_width = 0; +#endif +#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + width = 0; + if (dp->width_start != dp->width_end) + { + if (dp->width_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->width_arg_index].a.a_int; + width = arg; + if (arg < 0) + { + /* "A negative field width is taken as a '-' flag + followed by a positive field width." */ + flags |= FLAG_LEFT; + width = -width; + } + } + else + { + const FCHAR_T *digitp = dp->width_start; + + do + width = xsum (xtimes (width, 10), *digitp++ - '0'); + while (digitp != dp->width_end); + } +#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + has_width = 1; +#endif + } +#endif + +#if !USE_SNPRINTF || !HAVE_SNPRINTF_RETVAL_C99 || NEED_PRINTF_UNBOUNDED_PRECISION + has_precision = 0; + precision = 6; + if (dp->precision_start != dp->precision_end) + { + if (dp->precision_arg_index != ARG_NONE) + { + int arg; + + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + arg = a.arg[dp->precision_arg_index].a.a_int; + /* "A negative precision is taken as if the precision + were omitted." */ + if (arg >= 0) + { + precision = arg; + has_precision = 1; + } + } + else + { + const FCHAR_T *digitp = dp->precision_start + 1; + + precision = 0; + while (digitp != dp->precision_end) + precision = xsum (xtimes (precision, 10), *digitp++ - '0'); + has_precision = 1; + } + } +#endif + + /* Decide whether to handle the precision ourselves. */ +#if NEED_PRINTF_UNBOUNDED_PRECISION + switch (dp->conversion) + { + case 'd': case 'i': case 'u': + case 'o': + case 'x': case 'X': case 'p': + prec_ourselves = has_precision && (precision > 0); + break; + default: + prec_ourselves = 0; + break; + } +#endif + + /* Decide whether to perform the padding ourselves. */ +#if !NEED_PRINTF_FLAG_LEFTADJUST && (!DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION) + switch (dp->conversion) + { +# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO + /* If we need conversion from TCHAR_T[] to DCHAR_T[], we need + to perform the padding after this conversion. Functions + with unistdio extensions perform the padding based on + character count rather than element count. */ + case 'c': case 's': +# endif +# if NEED_PRINTF_FLAG_ZERO + case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': + case 'a': case 'A': +# endif + pad_ourselves = 1; + break; + default: + pad_ourselves = prec_ourselves; + break; + } +#endif + +#if !USE_SNPRINTF + /* Allocate a temporary buffer of sufficient size for calling + sprintf. */ + tmp_length = + MAX_ROOM_NEEDED (&a, dp->arg_index, dp->conversion, type, + flags, width, has_precision, precision, + pad_ourselves); + + if (tmp_length <= sizeof (tmpbuf) / sizeof (TCHAR_T)) + tmp = tmpbuf; + else + { + size_t tmp_memsize = xtimes (tmp_length, sizeof (TCHAR_T)); + + if (size_overflow_p (tmp_memsize)) + /* Overflow, would lead to out of memory. */ + goto out_of_memory; + tmp = (TCHAR_T *) malloc (tmp_memsize); + if (tmp == NULL) + /* Out of memory. */ + goto out_of_memory; + } +#endif + + /* Construct the format string for calling snprintf or + sprintf. */ + fbp = buf; + *fbp++ = '%'; +#if NEED_PRINTF_FLAG_GROUPING + /* The underlying implementation doesn't support the ' flag. + Produce no grouping characters in this case; this is + acceptable because the grouping is locale dependent. */ +#else + if (flags & FLAG_GROUP) + *fbp++ = '\''; +#endif + if (flags & FLAG_LEFT) + *fbp++ = '-'; + if (flags & FLAG_SHOWSIGN) + *fbp++ = '+'; + if (flags & FLAG_SPACE) + *fbp++ = ' '; + if (flags & FLAG_ALT) + *fbp++ = '#'; +#if __GLIBC__ >= 2 && !defined __UCLIBC__ + if (flags & FLAG_LOCALIZED) + *fbp++ = 'I'; +#endif + if (!pad_ourselves) + { + if (flags & FLAG_ZERO) + *fbp++ = '0'; + if (dp->width_start != dp->width_end) + { + size_t n = dp->width_end - dp->width_start; + /* The width specification is known to consist only + of standard ASCII characters. */ + if (sizeof (FCHAR_T) == sizeof (TCHAR_T)) + { + memcpy (fbp, dp->width_start, n * sizeof (TCHAR_T)); + fbp += n; + } + else + { + const FCHAR_T *mp = dp->width_start; + do + *fbp++ = *mp++; + while (--n > 0); + } + } + } + if (!prec_ourselves) + { + if (dp->precision_start != dp->precision_end) + { + size_t n = dp->precision_end - dp->precision_start; + /* The precision specification is known to consist only + of standard ASCII characters. */ + if (sizeof (FCHAR_T) == sizeof (TCHAR_T)) + { + memcpy (fbp, dp->precision_start, n * sizeof (TCHAR_T)); + fbp += n; + } + else + { + const FCHAR_T *mp = dp->precision_start; + do + *fbp++ = *mp++; + while (--n > 0); + } + } + } + + switch (type) + { +#if HAVE_LONG_LONG + case TYPE_LONGLONGINT: + case TYPE_ULONGLONGINT: +# if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ + *fbp++ = 'I'; + *fbp++ = '6'; + *fbp++ = '4'; + break; +# else + *fbp++ = 'l'; + /*FALLTHROUGH*/ +# endif +#endif + case TYPE_LONGINT: + case TYPE_ULONGINT: +#if HAVE_WINT_T + case TYPE_WIDE_CHAR: +#endif +#if HAVE_WCHAR_T + case TYPE_WIDE_STRING: +#endif + *fbp++ = 'l'; + break; + case TYPE_LONGDOUBLE: + *fbp++ = 'L'; + break; + default: + break; + } +#if NEED_PRINTF_DIRECTIVE_F + if (dp->conversion == 'F') + *fbp = 'f'; + else +#endif + *fbp = dp->conversion; +#if USE_SNPRINTF +# if !(((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined __UCLIBC__) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__)) + fbp[1] = '%'; + fbp[2] = 'n'; + fbp[3] = '\0'; +# else + /* On glibc2 systems from glibc >= 2.3 - probably also older + ones - we know that snprintf's return value conforms to + ISO C 99: the tests gl_SNPRINTF_RETVAL_C99 and + gl_SNPRINTF_TRUNCATION_C99 pass. + Therefore we can avoid using %n in this situation. + On glibc2 systems from 2004-10-18 or newer, the use of %n + in format strings in writable memory may crash the program + (if compiled with _FORTIFY_SOURCE=2), so we should avoid it + in this situation. */ + /* On native Windows systems (such as mingw), we can avoid using + %n because: + - Although the gl_SNPRINTF_TRUNCATION_C99 test fails, + snprintf does not write more than the specified number + of bytes. (snprintf (buf, 3, "%d %d", 4567, 89) writes + '4', '5', '6' into buf, not '4', '5', '\0'.) + - Although the gl_SNPRINTF_RETVAL_C99 test fails, snprintf + allows us to recognize the case of an insufficient + buffer size: it returns -1 in this case. + On native Windows systems (such as mingw) where the OS is + Windows Vista, the use of %n in format strings by default + crashes the program. See + and + + So we should avoid %n in this situation. */ + fbp[1] = '\0'; +# endif +#else + fbp[1] = '\0'; +#endif + + /* Construct the arguments for calling snprintf or sprintf. */ + prefix_count = 0; + if (!pad_ourselves && dp->width_arg_index != ARG_NONE) + { + if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) + abort (); + prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int; + } + if (!prec_ourselves && dp->precision_arg_index != ARG_NONE) + { + if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) + abort (); + prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int; + } + +#if USE_SNPRINTF + /* The SNPRINTF result is appended after result[0..length]. + The latter is an array of DCHAR_T; SNPRINTF appends an + array of TCHAR_T to it. This is possible because + sizeof (TCHAR_T) divides sizeof (DCHAR_T) and + alignof (TCHAR_T) <= alignof (DCHAR_T). */ +# define TCHARS_PER_DCHAR (sizeof (DCHAR_T) / sizeof (TCHAR_T)) + /* Ensure that maxlen below will be >= 2. Needed on BeOS, + where an snprintf() with maxlen==1 acts like sprintf(). */ + ENSURE_ALLOCATION (xsum (length, + (2 + TCHARS_PER_DCHAR - 1) + / TCHARS_PER_DCHAR)); + /* Prepare checking whether snprintf returns the count + via %n. */ + *(TCHAR_T *) (result + length) = '\0'; +#endif + + orig_errno = errno; + + for (;;) + { + int count = -1; + +#if USE_SNPRINTF + int retcount = 0; + size_t maxlen = allocated - length; + /* SNPRINTF can fail if its second argument is + > INT_MAX. */ + if (maxlen > INT_MAX / TCHARS_PER_DCHAR) + maxlen = INT_MAX / TCHARS_PER_DCHAR; + maxlen = maxlen * TCHARS_PER_DCHAR; +# define SNPRINTF_BUF(arg) \ + switch (prefix_count) \ + { \ + case 0: \ + retcount = SNPRINTF ((TCHAR_T *) (result + length), \ + maxlen, buf, \ + arg, &count); \ + break; \ + case 1: \ + retcount = SNPRINTF ((TCHAR_T *) (result + length), \ + maxlen, buf, \ + prefixes[0], arg, &count); \ + break; \ + case 2: \ + retcount = SNPRINTF ((TCHAR_T *) (result + length), \ + maxlen, buf, \ + prefixes[0], prefixes[1], arg, \ + &count); \ + break; \ + default: \ + abort (); \ + } +#else +# define SNPRINTF_BUF(arg) \ + switch (prefix_count) \ + { \ + case 0: \ + count = sprintf (tmp, buf, arg); \ + break; \ + case 1: \ + count = sprintf (tmp, buf, prefixes[0], arg); \ + break; \ + case 2: \ + count = sprintf (tmp, buf, prefixes[0], prefixes[1],\ + arg); \ + break; \ + default: \ + abort (); \ + } +#endif + + errno = 0; + switch (type) + { + case TYPE_SCHAR: + { + int arg = a.arg[dp->arg_index].a.a_schar; + SNPRINTF_BUF (arg); + } + break; + case TYPE_UCHAR: + { + unsigned int arg = a.arg[dp->arg_index].a.a_uchar; + SNPRINTF_BUF (arg); + } + break; + case TYPE_SHORT: + { + int arg = a.arg[dp->arg_index].a.a_short; + SNPRINTF_BUF (arg); + } + break; + case TYPE_USHORT: + { + unsigned int arg = a.arg[dp->arg_index].a.a_ushort; + SNPRINTF_BUF (arg); + } + break; + case TYPE_INT: + { + int arg = a.arg[dp->arg_index].a.a_int; + SNPRINTF_BUF (arg); + } + break; + case TYPE_UINT: + { + unsigned int arg = a.arg[dp->arg_index].a.a_uint; + SNPRINTF_BUF (arg); + } + break; + case TYPE_LONGINT: + { + long int arg = a.arg[dp->arg_index].a.a_longint; + SNPRINTF_BUF (arg); + } + break; + case TYPE_ULONGINT: + { + unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint; + SNPRINTF_BUF (arg); + } + break; +#if HAVE_LONG_LONG + case TYPE_LONGLONGINT: + { + long long int arg = a.arg[dp->arg_index].a.a_longlongint; + SNPRINTF_BUF (arg); + } + break; + case TYPE_ULONGLONGINT: + { + unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_DOUBLE: + { + double arg = a.arg[dp->arg_index].a.a_double; + SNPRINTF_BUF (arg); + } + break; + case TYPE_LONGDOUBLE: + { + long double arg = a.arg[dp->arg_index].a.a_longdouble; + SNPRINTF_BUF (arg); + } + break; + case TYPE_CHAR: + { + int arg = a.arg[dp->arg_index].a.a_char; + SNPRINTF_BUF (arg); + } + break; +#if HAVE_WINT_T + case TYPE_WIDE_CHAR: + { + wint_t arg = a.arg[dp->arg_index].a.a_wide_char; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_STRING: + { + const char *arg = a.arg[dp->arg_index].a.a_string; + SNPRINTF_BUF (arg); + } + break; +#if HAVE_WCHAR_T + case TYPE_WIDE_STRING: + { + const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string; + SNPRINTF_BUF (arg); + } + break; +#endif + case TYPE_POINTER: + { + void *arg = a.arg[dp->arg_index].a.a_pointer; + SNPRINTF_BUF (arg); + } + break; + default: + abort (); + } + +#if USE_SNPRINTF + /* Portability: Not all implementations of snprintf() + are ISO C 99 compliant. Determine the number of + bytes that snprintf() has produced or would have + produced. */ + if (count >= 0) + { + /* Verify that snprintf() has NUL-terminated its + result. */ + if (count < maxlen + && ((TCHAR_T *) (result + length)) [count] != '\0') + abort (); + /* Portability hack. */ + if (retcount > count) + count = retcount; + } + else + { + /* snprintf() doesn't understand the '%n' + directive. */ + if (fbp[1] != '\0') + { + /* Don't use the '%n' directive; instead, look + at the snprintf() return value. */ + fbp[1] = '\0'; + continue; + } + else + { + /* Look at the snprintf() return value. */ + if (retcount < 0) + { +# if !HAVE_SNPRINTF_RETVAL_C99 + /* HP-UX 10.20 snprintf() is doubly deficient: + It doesn't understand the '%n' directive, + *and* it returns -1 (rather than the length + that would have been required) when the + buffer is too small. + But a failure at this point can also come + from other reasons than a too small buffer, + such as an invalid wide string argument to + the %ls directive, or possibly an invalid + floating-point argument. */ + size_t tmp_length = + MAX_ROOM_NEEDED (&a, dp->arg_index, + dp->conversion, type, flags, + width, + has_precision, + precision, pad_ourselves); + + if (maxlen < tmp_length) + { + /* Make more room. But try to do through + this reallocation only once. */ + size_t bigger_need = + xsum (length, + xsum (tmp_length, + TCHARS_PER_DCHAR - 1) + / TCHARS_PER_DCHAR); + /* And always grow proportionally. + (There may be several arguments, each + needing a little more room than the + previous one.) */ + size_t bigger_need2 = + xsum (xtimes (allocated, 2), 12); + if (bigger_need < bigger_need2) + bigger_need = bigger_need2; + ENSURE_ALLOCATION (bigger_need); + continue; + } +# endif + } + else + count = retcount; + } + } +#endif + + /* Attempt to handle failure. */ + if (count < 0) + { + /* SNPRINTF or sprintf failed. Save and use the errno + that it has set, if any. */ + int saved_errno = errno; + if (saved_errno == 0) + { + if (dp->conversion == 'c' || dp->conversion == 's') + saved_errno = EILSEQ; + else + saved_errno = EINVAL; + } + + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + + errno = saved_errno; + return NULL; + } + +#if USE_SNPRINTF + /* Handle overflow of the allocated buffer. + If such an overflow occurs, a C99 compliant snprintf() + returns a count >= maxlen. However, a non-compliant + snprintf() function returns only count = maxlen - 1. To + cover both cases, test whether count >= maxlen - 1. */ + if ((unsigned int) count + 1 >= maxlen) + { + /* If maxlen already has attained its allowed maximum, + allocating more memory will not increase maxlen. + Instead of looping, bail out. */ + if (maxlen == INT_MAX / TCHARS_PER_DCHAR) + goto overflow; + else + { + /* Need at least (count + 1) * sizeof (TCHAR_T) + bytes. (The +1 is for the trailing NUL.) + But ask for (count + 2) * sizeof (TCHAR_T) + bytes, so that in the next round, we likely get + maxlen > (unsigned int) count + 1 + and so we don't get here again. + And allocate proportionally, to avoid looping + eternally if snprintf() reports a too small + count. */ + size_t n = + xmax (xsum (length, + ((unsigned int) count + 2 + + TCHARS_PER_DCHAR - 1) + / TCHARS_PER_DCHAR), + xtimes (allocated, 2)); + + ENSURE_ALLOCATION (n); + continue; + } + } +#endif + +#if NEED_PRINTF_UNBOUNDED_PRECISION + if (prec_ourselves) + { + /* Handle the precision. */ + TCHAR_T *prec_ptr = +# if USE_SNPRINTF + (TCHAR_T *) (result + length); +# else + tmp; +# endif + size_t prefix_count; + size_t move; + + prefix_count = 0; + /* Put the additional zeroes after the sign. */ + if (count >= 1 + && (*prec_ptr == '-' || *prec_ptr == '+' + || *prec_ptr == ' ')) + prefix_count = 1; + /* Put the additional zeroes after the 0x prefix if + (flags & FLAG_ALT) || (dp->conversion == 'p'). */ + else if (count >= 2 + && prec_ptr[0] == '0' + && (prec_ptr[1] == 'x' || prec_ptr[1] == 'X')) + prefix_count = 2; + + move = count - prefix_count; + if (precision > move) + { + /* Insert zeroes. */ + size_t insert = precision - move; + TCHAR_T *prec_end; + +# if USE_SNPRINTF + size_t n = + xsum (length, + (count + insert + TCHARS_PER_DCHAR - 1) + / TCHARS_PER_DCHAR); + length += (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR; + ENSURE_ALLOCATION (n); + length -= (count + TCHARS_PER_DCHAR - 1) / TCHARS_PER_DCHAR; + prec_ptr = (TCHAR_T *) (result + length); +# endif + + prec_end = prec_ptr + count; + prec_ptr += prefix_count; + + while (prec_end > prec_ptr) + { + prec_end--; + prec_end[insert] = prec_end[0]; + } + + prec_end += insert; + do + *--prec_end = '0'; + while (prec_end > prec_ptr); + + count += insert; + } + } +#endif + +#if !USE_SNPRINTF + if (count >= tmp_length) + /* tmp_length was incorrectly calculated - fix the + code above! */ + abort (); +#endif + +#if !DCHAR_IS_TCHAR + /* Convert from TCHAR_T[] to DCHAR_T[]. */ + if (dp->conversion == 'c' || dp->conversion == 's') + { + /* type = TYPE_CHAR or TYPE_WIDE_CHAR or TYPE_STRING + TYPE_WIDE_STRING. + The result string is not certainly ASCII. */ + const TCHAR_T *tmpsrc; + DCHAR_T *tmpdst; + size_t tmpdst_len; + /* This code assumes that TCHAR_T is 'char'. */ + verify (sizeof (TCHAR_T) == 1); +# if USE_SNPRINTF + tmpsrc = (TCHAR_T *) (result + length); +# else + tmpsrc = tmp; +# endif + tmpdst = + DCHAR_CONV_FROM_ENCODING (locale_charset (), + iconveh_question_mark, + tmpsrc, count, + NULL, + NULL, &tmpdst_len); + if (tmpdst == NULL) + { + int saved_errno = errno; + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = saved_errno; + return NULL; + } + ENSURE_ALLOCATION (xsum (length, tmpdst_len)); + DCHAR_CPY (result + length, tmpdst, tmpdst_len); + free (tmpdst); + count = tmpdst_len; + } + else + { + /* The result string is ASCII. + Simple 1:1 conversion. */ +# if USE_SNPRINTF + /* If sizeof (DCHAR_T) == sizeof (TCHAR_T), it's a + no-op conversion, in-place on the array starting + at (result + length). */ + if (sizeof (DCHAR_T) != sizeof (TCHAR_T)) +# endif + { + const TCHAR_T *tmpsrc; + DCHAR_T *tmpdst; + size_t n; + +# if USE_SNPRINTF + if (result == resultbuf) + { + tmpsrc = (TCHAR_T *) (result + length); + /* ENSURE_ALLOCATION will not move tmpsrc + (because it's part of resultbuf). */ + ENSURE_ALLOCATION (xsum (length, count)); + } + else + { + /* ENSURE_ALLOCATION will move the array + (because it uses realloc(). */ + ENSURE_ALLOCATION (xsum (length, count)); + tmpsrc = (TCHAR_T *) (result + length); + } +# else + tmpsrc = tmp; + ENSURE_ALLOCATION (xsum (length, count)); +# endif + tmpdst = result + length; + /* Copy backwards, because of overlapping. */ + tmpsrc += count; + tmpdst += count; + for (n = count; n > 0; n--) + *--tmpdst = *--tmpsrc; + } + } +#endif + +#if DCHAR_IS_TCHAR && !USE_SNPRINTF + /* Make room for the result. */ + if (count > allocated - length) + { + /* Need at least count elements. But allocate + proportionally. */ + size_t n = + xmax (xsum (length, count), xtimes (allocated, 2)); + + ENSURE_ALLOCATION (n); + } +#endif + + /* Here count <= allocated - length. */ + + /* Perform padding. */ +#if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO || NEED_PRINTF_FLAG_LEFTADJUST || NEED_PRINTF_FLAG_ZERO || NEED_PRINTF_UNBOUNDED_PRECISION + if (pad_ourselves && has_width) + { + size_t w; +# if ENABLE_UNISTDIO + /* Outside POSIX, it's preferable to compare the width + against the number of _characters_ of the converted + value. */ + w = DCHAR_MBSNLEN (result + length, count); +# else + /* The width is compared against the number of _bytes_ + of the converted value, says POSIX. */ + w = count; +# endif + if (w < width) + { + size_t pad = width - w; + + /* Make room for the result. */ + if (xsum (count, pad) > allocated - length) + { + /* Need at least count + pad elements. But + allocate proportionally. */ + size_t n = + xmax (xsum3 (length, count, pad), + xtimes (allocated, 2)); + +# if USE_SNPRINTF + length += count; + ENSURE_ALLOCATION (n); + length -= count; +# else + ENSURE_ALLOCATION (n); +# endif + } + /* Here count + pad <= allocated - length. */ + + { +# if !DCHAR_IS_TCHAR || USE_SNPRINTF + DCHAR_T * const rp = result + length; +# else + DCHAR_T * const rp = tmp; +# endif + DCHAR_T *p = rp + count; + DCHAR_T *end = p + pad; + DCHAR_T *pad_ptr; +# if !DCHAR_IS_TCHAR || ENABLE_UNISTDIO + if (dp->conversion == 'c' + || dp->conversion == 's') + /* No zero-padding for string directives. */ + pad_ptr = NULL; + else +# endif + { + pad_ptr = (*rp == '-' ? rp + 1 : rp); + /* No zero-padding of "inf" and "nan". */ + if ((*pad_ptr >= 'A' && *pad_ptr <= 'Z') + || (*pad_ptr >= 'a' && *pad_ptr <= 'z')) + pad_ptr = NULL; + } + /* The generated string now extends from rp to p, + with the zero padding insertion point being at + pad_ptr. */ + + count = count + pad; /* = end - rp */ + + if (flags & FLAG_LEFT) + { + /* Pad with spaces on the right. */ + for (; pad > 0; pad--) + *p++ = ' '; + } + else if ((flags & FLAG_ZERO) && pad_ptr != NULL) + { + /* Pad with zeroes. */ + DCHAR_T *q = end; + + while (p > pad_ptr) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = '0'; + } + else + { + /* Pad with spaces on the left. */ + DCHAR_T *q = end; + + while (p > rp) + *--q = *--p; + for (; pad > 0; pad--) + *p++ = ' '; + } + } + } + } +#endif + + /* Here still count <= allocated - length. */ + +#if !DCHAR_IS_TCHAR || USE_SNPRINTF + /* The snprintf() result did fit. */ +#else + /* Append the sprintf() result. */ + memcpy (result + length, tmp, count * sizeof (DCHAR_T)); +#endif +#if !USE_SNPRINTF + if (tmp != tmpbuf) + free (tmp); +#endif + +#if NEED_PRINTF_DIRECTIVE_F + if (dp->conversion == 'F') + { + /* Convert the %f result to upper case for %F. */ + DCHAR_T *rp = result + length; + size_t rc; + for (rc = count; rc > 0; rc--, rp++) + if (*rp >= 'a' && *rp <= 'z') + *rp = *rp - 'a' + 'A'; + } +#endif + + length += count; + break; + } + errno = orig_errno; +#undef pad_ourselves +#undef prec_ourselves + } + } + } + + /* Add the final NUL. */ + ENSURE_ALLOCATION (xsum (length, 1)); + result[length] = '\0'; + + if (result != resultbuf && length + 1 < allocated) + { + /* Shrink the allocated memory if possible. */ + DCHAR_T *memory; + + memory = (DCHAR_T *) realloc (result, (length + 1) * sizeof (DCHAR_T)); + if (memory != NULL) + result = memory; + } + + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + *lengthp = length; + /* Note that we can produce a big string of a length > INT_MAX. POSIX + says that snprintf() fails with errno = EOVERFLOW in this case, but + that's only because snprintf() returns an 'int'. This function does + not have this limitation. */ + return result; + +#if USE_SNPRINTF + overflow: + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + CLEANUP (); + errno = EOVERFLOW; + return NULL; +#endif + + out_of_memory: + if (!(result == resultbuf || result == NULL)) + free (result); + if (buf_malloced != NULL) + free (buf_malloced); + out_of_memory_1: + CLEANUP (); + errno = ENOMEM; + return NULL; + } } + +#undef MAX_ROOM_NEEDED +#undef TCHARS_PER_DCHAR +#undef SNPRINTF +#undef USE_SNPRINTF +#undef DCHAR_SET +#undef DCHAR_CPY +#undef PRINTF_PARSE +#undef DIRECTIVES +#undef DIRECTIVE +#undef DCHAR_IS_TCHAR +#undef TCHAR_T +#undef DCHAR_T +#undef FCHAR_T +#undef VASNPRINTF diff --git a/glib/gnulib/vasnprintf.h b/glib/gnulib/vasnprintf.h index 7affec1..ec19d70 100644 --- a/glib/gnulib/vasnprintf.h +++ b/glib/gnulib/vasnprintf.h @@ -1,18 +1,18 @@ /* vsprintf with automatic memory allocation. - Copyright (C) 2002-2003 Free Software Foundation, Inc. + Copyright (C) 2002-2004, 2007-2015 Free Software Foundation, Inc. - This program 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, or (at your option) + 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 - Library General Public License for more details. + 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 Library General Public - License along with this program; if not, see . */ + You should have received a copy of the GNU General Public License along + with this program; if not, see . */ #ifndef _VASNPRINTF_H #define _VASNPRINTF_H @@ -23,20 +23,19 @@ /* Get size_t. */ #include -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ -# define __attribute__(Spec) /* empty */ -# endif -/* The __-protected variants of `format' and `printf' attributes - are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) -# define __format__ format -# define __printf__ printf -# endif +/* The __attribute__ feature is available in gcc versions 2.5 and later. + The __-protected variants of the attributes 'format' and 'printf' are + accepted by gcc versions 2.6.4 (effectively 2.7) and later. + We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because + gnulib and libintl do '#define printf __printf__' when they override + the 'printf' function. */ +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +#else +# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */ #endif -#ifdef __cplusplus +#ifdef __cplusplus extern "C" { #endif @@ -46,13 +45,34 @@ extern "C" { If successful, return the address of the string (this may be = RESULTBUF if no dynamic memory allocation was necessary) and set *LENGTHP to the number of resulting bytes, excluding the trailing NUL. Upon error, set - errno and return NULL. */ + errno and return NULL. + + When dynamic memory allocation occurs, the preallocated buffer is left + alone (with possibly modified contents). This makes it possible to use + a statically allocated or stack-allocated buffer, like this: + + char buf[100]; + size_t len = sizeof (buf); + char *output = vasnprintf (buf, &len, format, args); + if (output == NULL) + ... error handling ...; + else + { + ... use the output string ...; + if (output != buf) + free (output); + } + */ +#if REPLACE_VASNPRINTF +# define asnprintf rpl_asnprintf +# define vasnprintf rpl_vasnprintf +#endif extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...) - __attribute__ ((__format__ (__printf__, 3, 4))); + _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 4)); extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args) - __attribute__ ((__format__ (__printf__, 3, 0))); + _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 0)); -#ifdef __cplusplus +#ifdef __cplusplus } #endif diff --git a/glib/gnulib/verify.h b/glib/gnulib/verify.h new file mode 100644 index 0000000..60eba49 --- /dev/null +++ b/glib/gnulib/verify.h @@ -0,0 +1,279 @@ +/* Compile-time assert-like macros. + + Copyright (C) 2005-2006, 2009-2015 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */ + +#ifndef _GL_VERIFY_H +#define _GL_VERIFY_H + + +/* Define _GL_HAVE__STATIC_ASSERT to 1 if _Static_assert works as per C11. + This is supported by GCC 4.6.0 and later, in C mode, and its use + here generates easier-to-read diagnostics when verify (R) fails. + + Define _GL_HAVE_STATIC_ASSERT to 1 if static_assert works as per C++11. + This will likely be supported by future GCC versions, in C++ mode. + + Use this only with GCC. If we were willing to slow 'configure' + down we could also use it with other compilers, but since this + affects only the quality of diagnostics, why bother? */ +#if (4 < __GNUC__ + (6 <= __GNUC_MINOR__) \ + && (201112L <= __STDC_VERSION__ || !defined __STRICT_ANSI__) \ + && !defined __cplusplus) +# define _GL_HAVE__STATIC_ASSERT 1 +#endif +/* The condition (99 < __GNUC__) is temporary, until we know about the + first G++ release that supports static_assert. */ +#if (99 < __GNUC__) && defined __cplusplus +# define _GL_HAVE_STATIC_ASSERT 1 +#endif + +/* FreeBSD 9.1 , included by and lots of other + system headers, defines a conflicting _Static_assert that is no + better than ours; override it. */ +#ifndef _GL_HAVE_STATIC_ASSERT +# include +# undef _Static_assert +#endif + +/* Each of these macros verifies that its argument R is nonzero. To + be portable, R should be an integer constant expression. Unlike + assert (R), there is no run-time overhead. + + If _Static_assert works, verify (R) uses it directly. Similarly, + _GL_VERIFY_TRUE works by packaging a _Static_assert inside a struct + that is an operand of sizeof. + + The code below uses several ideas for C++ compilers, and for C + compilers that do not support _Static_assert: + + * The first step is ((R) ? 1 : -1). Given an expression R, of + integral or boolean or floating-point type, this yields an + expression of integral type, whose value is later verified to be + constant and nonnegative. + + * Next this expression W is wrapped in a type + struct _gl_verify_type { + unsigned int _gl_verify_error_if_negative: W; + }. + If W is negative, this yields a compile-time error. No compiler can + deal with a bit-field of negative size. + + One might think that an array size check would have the same + effect, that is, that the type struct { unsigned int dummy[W]; } + would work as well. However, inside a function, some compilers + (such as C++ compilers and GNU C) allow local parameters and + variables inside array size expressions. With these compilers, + an array size check would not properly diagnose this misuse of + the verify macro: + + void function (int n) { verify (n < 0); } + + * For the verify macro, the struct _gl_verify_type will need to + somehow be embedded into a declaration. To be portable, this + declaration must declare an object, a constant, a function, or a + typedef name. If the declared entity uses the type directly, + such as in + + struct dummy {...}; + typedef struct {...} dummy; + extern struct {...} *dummy; + extern void dummy (struct {...} *); + extern struct {...} *dummy (void); + + two uses of the verify macro would yield colliding declarations + if the entity names are not disambiguated. A workaround is to + attach the current line number to the entity name: + + #define _GL_CONCAT0(x, y) x##y + #define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y) + extern struct {...} * _GL_CONCAT (dummy, __LINE__); + + But this has the problem that two invocations of verify from + within the same macro would collide, since the __LINE__ value + would be the same for both invocations. (The GCC __COUNTER__ + macro solves this problem, but is not portable.) + + A solution is to use the sizeof operator. It yields a number, + getting rid of the identity of the type. Declarations like + + extern int dummy [sizeof (struct {...})]; + extern void dummy (int [sizeof (struct {...})]); + extern int (*dummy (void)) [sizeof (struct {...})]; + + can be repeated. + + * Should the implementation use a named struct or an unnamed struct? + Which of the following alternatives can be used? + + extern int dummy [sizeof (struct {...})]; + extern int dummy [sizeof (struct _gl_verify_type {...})]; + extern void dummy (int [sizeof (struct {...})]); + extern void dummy (int [sizeof (struct _gl_verify_type {...})]); + extern int (*dummy (void)) [sizeof (struct {...})]; + extern int (*dummy (void)) [sizeof (struct _gl_verify_type {...})]; + + In the second and sixth case, the struct type is exported to the + outer scope; two such declarations therefore collide. GCC warns + about the first, third, and fourth cases. So the only remaining + possibility is the fifth case: + + extern int (*dummy (void)) [sizeof (struct {...})]; + + * GCC warns about duplicate declarations of the dummy function if + -Wredundant-decls is used. GCC 4.3 and later have a builtin + __COUNTER__ macro that can let us generate unique identifiers for + each dummy function, to suppress this warning. + + * This implementation exploits the fact that older versions of GCC, + which do not support _Static_assert, also do not warn about the + last declaration mentioned above. + + * GCC warns if -Wnested-externs is enabled and verify() is used + within a function body; but inside a function, you can always + arrange to use verify_expr() instead. + + * In C++, any struct definition inside sizeof is invalid. + Use a template type to work around the problem. */ + +/* Concatenate two preprocessor tokens. */ +#define _GL_CONCAT(x, y) _GL_CONCAT0 (x, y) +#define _GL_CONCAT0(x, y) x##y + +/* _GL_COUNTER is an integer, preferably one that changes each time we + use it. Use __COUNTER__ if it works, falling back on __LINE__ + otherwise. __LINE__ isn't perfect, but it's better than a + constant. */ +#if defined __COUNTER__ && __COUNTER__ != __COUNTER__ +# define _GL_COUNTER __COUNTER__ +#else +# define _GL_COUNTER __LINE__ +#endif + +/* Generate a symbol with the given prefix, making it unique if + possible. */ +#define _GL_GENSYM(prefix) _GL_CONCAT (prefix, _GL_COUNTER) + +/* Verify requirement R at compile-time, as an integer constant expression + that returns 1. If R is false, fail at compile-time, preferably + with a diagnostic that includes the string-literal DIAGNOSTIC. */ + +#define _GL_VERIFY_TRUE(R, DIAGNOSTIC) \ + (!!sizeof (_GL_VERIFY_TYPE (R, DIAGNOSTIC))) + +#ifdef __cplusplus +# if !GNULIB_defined_struct__gl_verify_type +template + struct _gl_verify_type { + unsigned int _gl_verify_error_if_negative: w; + }; +# define GNULIB_defined_struct__gl_verify_type 1 +# endif +# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \ + _gl_verify_type<(R) ? 1 : -1> +#elif defined _GL_HAVE__STATIC_ASSERT +# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \ + struct { \ + _Static_assert (R, DIAGNOSTIC); \ + int _gl_dummy; \ + } +#else +# define _GL_VERIFY_TYPE(R, DIAGNOSTIC) \ + struct { unsigned int _gl_verify_error_if_negative: (R) ? 1 : -1; } +#endif + +/* Verify requirement R at compile-time, as a declaration without a + trailing ';'. If R is false, fail at compile-time, preferably + with a diagnostic that includes the string-literal DIAGNOSTIC. + + Unfortunately, unlike C11, this implementation must appear as an + ordinary declaration, and cannot appear inside struct { ... }. */ + +#ifdef _GL_HAVE__STATIC_ASSERT +# define _GL_VERIFY _Static_assert +#else +# define _GL_VERIFY(R, DIAGNOSTIC) \ + extern int (*_GL_GENSYM (_gl_verify_function) (void)) \ + [_GL_VERIFY_TRUE (R, DIAGNOSTIC)] +#endif + +/* _GL_STATIC_ASSERT_H is defined if this code is copied into assert.h. */ +#ifdef _GL_STATIC_ASSERT_H +# if !defined _GL_HAVE__STATIC_ASSERT && !defined _Static_assert +# define _Static_assert(R, DIAGNOSTIC) _GL_VERIFY (R, DIAGNOSTIC) +# endif +# if !defined _GL_HAVE_STATIC_ASSERT && !defined static_assert +# define static_assert _Static_assert /* C11 requires this #define. */ +# endif +#endif + +/* @assert.h omit start@ */ + +/* Each of these macros verifies that its argument R is nonzero. To + be portable, R should be an integer constant expression. Unlike + assert (R), there is no run-time overhead. + + There are two macros, since no single macro can be used in all + contexts in C. verify_true (R) is for scalar contexts, including + integer constant expression contexts. verify (R) is for declaration + contexts, e.g., the top level. */ + +/* Verify requirement R at compile-time, as an integer constant expression. + Return 1. This is equivalent to verify_expr (R, 1). + + verify_true is obsolescent; please use verify_expr instead. */ + +#define verify_true(R) _GL_VERIFY_TRUE (R, "verify_true (" #R ")") + +/* Verify requirement R at compile-time. Return the value of the + expression E. */ + +#define verify_expr(R, E) \ + (_GL_VERIFY_TRUE (R, "verify_expr (" #R ", " #E ")") ? (E) : (E)) + +/* Verify requirement R at compile-time, as a declaration without a + trailing ';'. */ + +#define verify(R) _GL_VERIFY (R, "verify (" #R ")") + +#ifndef __has_builtin +# define __has_builtin(x) 0 +#endif + +/* Assume that R always holds. This lets the compiler optimize + accordingly. R should not have side-effects; it may or may not be + evaluated. Behavior is undefined if R is false. */ + +#if (__has_builtin (__builtin_unreachable) \ + || 4 < __GNUC__ + (5 <= __GNUC_MINOR__)) +# define assume(R) ((R) ? (void) 0 : __builtin_unreachable ()) +#elif 1200 <= _MSC_VER +# define assume(R) __assume (R) +#elif (defined lint \ + && (__has_builtin (__builtin_trap) \ + || 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__)))) + /* Doing it this way helps various packages when configured with + --enable-gcc-warnings, which compiles with -Dlint. It's nicer + when 'assume' silences warnings even with older GCCs. */ +# define assume(R) ((R) ? (void) 0 : __builtin_trap ()) +#else +# define assume(R) ((void) (0 && (R))) +#endif + +/* @assert.h omit end@ */ + +#endif diff --git a/glib/gnulib/xsize.h b/glib/gnulib/xsize.h new file mode 100644 index 0000000..244a7b1 --- /dev/null +++ b/glib/gnulib/xsize.h @@ -0,0 +1,101 @@ +/* xsize.h -- Checked size_t computations. + + Copyright (C) 2003, 2008-2015 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . */ + +#ifndef _XSIZE_H +#define _XSIZE_H + +#include + +/* Get size_t. */ +#include + +/* Get G_MAXSIZE. */ +#include +#if HAVE_STDINT_H +# include +#endif + +#ifndef XSIZE_INLINE +# define XSIZE_INLINE _GL_INLINE +#endif + +/* The size of memory objects is often computed through expressions of + type size_t. Example: + void* p = malloc (header_size + n * element_size). + These computations can lead to overflow. When this happens, malloc() + returns a piece of memory that is way too small, and the program then + crashes while attempting to fill the memory. + To avoid this, the functions and macros in this file check for overflow. + The convention is that G_MAXSIZE represents overflow. + malloc (G_MAXSIZE) is not guaranteed to fail -- think of a malloc + implementation that uses mmap --, it's recommended to use size_overflow_p() + or size_in_bounds_p() before invoking malloc(). + The example thus becomes: + size_t size = xsum (header_size, xtimes (n, element_size)); + void *p = (size_in_bounds_p (size) ? malloc (size) : NULL); +*/ + +/* Convert an arbitrary value >= 0 to type size_t. */ +#define xcast_size_t(N) \ + ((N) <= G_MAXSIZE ? (size_t) (N) : G_MAXSIZE) + +/* Sum of two sizes, with overflow check. */ +static inline size_t +xsum (size_t size1, size_t size2) +{ + size_t sum = size1 + size2; + return (sum >= size1 ? sum : G_MAXSIZE); +} + +/* Sum of three sizes, with overflow check. */ +static inline size_t +xsum3 (size_t size1, size_t size2, size_t size3) +{ + return xsum (xsum (size1, size2), size3); +} + +/* Sum of four sizes, with overflow check. */ +static inline size_t +xsum4 (size_t size1, size_t size2, size_t size3, size_t size4) +{ + return xsum (xsum (xsum (size1, size2), size3), size4); +} + +/* Maximum of two sizes, with overflow check. */ +static inline size_t +xmax (size_t size1, size_t size2) +{ + /* No explicit check is needed here, because for any n: + max (G_MAXSIZE, n) == G_MAXSIZE and max (n, G_MAXSIZE) == G_MAXSIZE. */ + return (size1 >= size2 ? size1 : size2); +} + +/* Multiplication of a count with an element size, with overflow check. + The count must be >= 0 and the element size must be > 0. + This is a macro, not a function, so that it works correctly even + when N is of a wider type and N > G_MAXSIZE. */ +#define xtimes(N, ELSIZE) \ + ((N) <= G_MAXSIZE / (ELSIZE) ? (size_t) (N) * (ELSIZE) : G_MAXSIZE) + +/* Check for overflow. */ +#define size_overflow_p(SIZE) \ + ((SIZE) == G_MAXSIZE) +/* Check against overflow. */ +#define size_in_bounds_p(SIZE) \ + ((SIZE) != G_MAXSIZE) + +#endif /* _XSIZE_H */ diff --git a/glib/goption.c b/glib/goption.c index 7d59eee..0464c2e 100644 --- a/glib/goption.c +++ b/glib/goption.c @@ -854,8 +854,11 @@ g_option_context_get_help (GOptionContext *context, } } - g_string_append_printf (string, "%s\n %s %s", - _("Usage:"), g_get_prgname(), _("[OPTION...]")); + g_string_append_printf (string, "%s\n %s", _("Usage:"), g_get_prgname ()); + if (context->help_enabled || + (context->main_group && context->main_group->n_entries > 0) || + context->groups != NULL) + g_string_append_printf (string, " %s", _("[OPTION...]")); if (rest_description) { @@ -1040,7 +1043,10 @@ g_option_context_get_help (GOptionContext *context, { list = context->groups; - g_string_append (string, _("Application Options:")); + if (context->help_enabled || list) + g_string_append (string, _("Application Options:")); + else + g_string_append (string, _("Options:")); g_string_append (string, "\n"); if (context->main_group) for (i = 0; i < context->main_group->n_entries; i++) diff --git a/glib/gpoll.h b/glib/gpoll.h index f28e3c5..95fe01c 100644 --- a/glib/gpoll.h +++ b/glib/gpoll.h @@ -22,6 +22,7 @@ #error "Only can be included directly." #endif +#include #include G_BEGIN_DECLS @@ -106,15 +107,7 @@ struct _GPollFD * A format specifier that can be used in printf()-style format strings * when printing the @fd member of a #GPollFD. */ -#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 +/* defined in glibconfig.h */ GLIB_AVAILABLE_IN_ALL gint diff --git a/glib/gprintf.c b/glib/gprintf.c index cf4bf21..71b3322 100644 --- a/glib/gprintf.c +++ b/glib/gprintf.c @@ -58,7 +58,7 @@ g_printf (gchar const *format, /** * g_fprintf: - * @file: the stream to write to. + * @file: (not nullable): the stream to write to. * @format: a standard printf() format string, but notice * [string precision pitfalls][string-precision] * @...: the arguments to insert in the output. @@ -191,7 +191,7 @@ g_vprintf (gchar const *format, /** * g_vfprintf: - * @file: the stream to write to. + * @file: (not nullable): the stream to write to. * @format: a standard printf() format string, but notice * [string precision pitfalls][string-precision] * @args: the list of arguments to insert in the output. @@ -316,13 +316,6 @@ g_vasprintf (gchar **string, len = vasprintf (string, format, args); if (len < 0) *string = NULL; - else if (!g_mem_is_system_malloc ()) - { - /* vasprintf returns malloc-allocated memory */ - gchar *string1 = g_strndup (*string, len); - free (*string); - *string = string1; - } #else diff --git a/glib/gqsort.c b/glib/gqsort.c index e63264e..27347bf 100644 --- a/glib/gqsort.c +++ b/glib/gqsort.c @@ -282,7 +282,7 @@ msort_r (void *b, size_t n, size_t s, GCompareDataFunc cmp, void *arg) /** * g_qsort_with_data: - * @pbase: start of array to sort + * @pbase: (not nullable): start of array to sort * @total_elems: elements in the array * @size: size of each element * @compare_func: function to compare elements diff --git a/glib/gquark.c b/glib/gquark.c index d620533..9e51a92 100644 --- a/glib/gquark.c +++ b/glib/gquark.c @@ -40,6 +40,7 @@ #include "gthread.h" #include "gtestutils.h" #include "glib_trace.h" +#include "glib-init.h" #define QUARK_BLOCK_SIZE 2048 #define QUARK_STRING_BLOCK_SIZE (4096 - sizeof (gsize)) @@ -53,6 +54,16 @@ static gint quark_seq_id = 0; static gchar *quark_block = NULL; static gint quark_block_offset = 0; +void +g_quark_init (void) +{ + g_assert (quark_seq_id == 0); + quark_ht = g_hash_table_new (g_str_hash, g_str_equal); + quarks = g_new (gchar*, QUARK_BLOCK_SIZE); + quarks[0] = NULL; + quark_seq_id = 1; +} + /** * SECTION:quarks * @title: Quarks @@ -127,10 +138,9 @@ g_quark_try_string (const gchar *string) return 0; G_LOCK (quark_global); - if (quark_ht) - quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string)); + quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string)); G_UNLOCK (quark_global); - + return quark; } @@ -169,8 +179,7 @@ quark_from_string (const gchar *string, { GQuark quark = 0; - if (quark_ht) - quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string)); + quark = GPOINTER_TO_UINT (g_hash_table_lookup (quark_ht, string)); if (!quark) { @@ -283,13 +292,6 @@ quark_new (gchar *string) */ g_atomic_pointer_set (&quarks, quarks_new); } - if (!quark_ht) - { - g_assert (quark_seq_id == 0); - quark_ht = g_hash_table_new (g_str_hash, g_str_equal); - quarks[quark_seq_id] = NULL; - g_atomic_int_inc (&quark_seq_id); - } quark = quark_seq_id; g_atomic_pointer_set (&quarks[quark], string); diff --git a/glib/grand.c b/glib/grand.c index ac1053d..0cb833e 100644 --- a/glib/grand.c +++ b/glib/grand.c @@ -262,8 +262,10 @@ g_rand_new (void) seed[3] = getppid (); } #else /* G_OS_WIN32 */ - /* rand_s() is only available since Visual Studio 2005 */ -#if defined(_MSC_VER) && _MSC_VER >= 1400 + /* rand_s() is only available since Visual Studio 2005 and + * MinGW-w64 has a wrapper that will emulate rand_s() if it's not in msvcrt + */ +#if (defined(_MSC_VER) && _MSC_VER >= 1400) || defined(__MINGW64_VERSION_MAJOR) gint i; for (i = 0; i < G_N_ELEMENTS (seed); i++) diff --git a/glib/gregex.c b/glib/gregex.c index 41bf67e..9f787a5 100644 --- a/glib/gregex.c +++ b/glib/gregex.c @@ -1267,6 +1267,15 @@ g_regex_unref (GRegex *regex) } } +/* + * @match_options: (inout) (optional): + */ +static pcre *regex_compile (const gchar *pattern, + GRegexCompileFlags compile_options, + GRegexCompileFlags *compile_options_out, + GRegexMatchFlags *match_options, + GError **error); + /** * g_regex_new: * @pattern: the regular expression @@ -1277,8 +1286,8 @@ g_regex_unref (GRegex *regex) * Compiles the regular expression to an internal form, and does * the initial setup of the #GRegex structure. * - * Returns: a #GRegex structure. Call g_regex_unref() when you - * are done with it + * Returns: (nullable): a #GRegex structure or %NULL if an error occured. Call + * g_regex_unref() when you are done with it * * Since: 2.14 */ @@ -1291,12 +1300,8 @@ g_regex_new (const gchar *pattern, GRegex *regex; pcre *re; const gchar *errmsg; - gint erroffset; - gint errcode; gboolean optimize = FALSE; static volatile gsize initialised = 0; - unsigned long int pcre_compile_options; - GRegexCompileFlags nonpcre_compile_options; g_return_val_if_fail (pattern != NULL, NULL); g_return_val_if_fail (error == NULL || *error == NULL, NULL); @@ -1325,13 +1330,61 @@ g_regex_new (const gchar *pattern, return NULL; } - nonpcre_compile_options = compile_options & G_REGEX_COMPILE_NONPCRE_MASK; - /* G_REGEX_OPTIMIZE has the same numeric value of PCRE_NO_UTF8_CHECK, * as we do not need to wrap PCRE_NO_UTF8_CHECK. */ if (compile_options & G_REGEX_OPTIMIZE) optimize = TRUE; + re = regex_compile (pattern, compile_options, &compile_options, + &match_options, error); + + if (re == NULL) + return NULL; + + regex = g_new0 (GRegex, 1); + regex->ref_count = 1; + regex->pattern = g_strdup (pattern); + regex->pcre_re = re; + regex->compile_opts = compile_options; + regex->match_opts = match_options; + + if (optimize) + { + regex->extra = pcre_study (regex->pcre_re, 0, &errmsg); + if (errmsg != NULL) + { + GError *tmp_error = g_error_new (G_REGEX_ERROR, + G_REGEX_ERROR_OPTIMIZE, + _("Error while optimizing " + "regular expression %s: %s"), + regex->pattern, + errmsg); + g_propagate_error (error, tmp_error); + + g_regex_unref (regex); + return NULL; + } + } + + return regex; +} + +static pcre * +regex_compile (const gchar *pattern, + GRegexCompileFlags compile_options, + GRegexCompileFlags *compile_options_out, + GRegexMatchFlags *match_options, + GError **error) +{ + pcre *re; + const gchar *errmsg; + gint erroffset; + gint errcode; + GRegexCompileFlags nonpcre_compile_options; + unsigned long int pcre_compile_options; + + nonpcre_compile_options = compile_options & G_REGEX_COMPILE_NONPCRE_MASK; + /* In GRegex the string are, by default, UTF-8 encoded. PCRE * instead uses UTF-8 only if required with PCRE_UTF8. */ if (compile_options & G_REGEX_RAW) @@ -1343,7 +1396,9 @@ g_regex_new (const gchar *pattern, { /* enable utf-8 */ compile_options |= PCRE_UTF8 | PCRE_NO_UTF8_CHECK; - match_options |= PCRE_NO_UTF8_CHECK; + + if (match_options != NULL) + *match_options |= PCRE_NO_UTF8_CHECK; } /* PCRE_NEWLINE_ANY is the default for the internal PCRE but @@ -1408,32 +1463,10 @@ g_regex_new (const gchar *pattern, compile_options |= G_REGEX_DUPNAMES; } - regex = g_new0 (GRegex, 1); - regex->ref_count = 1; - regex->pattern = g_strdup (pattern); - regex->pcre_re = re; - regex->compile_opts = compile_options; - regex->match_opts = match_options; - - if (optimize) - { - regex->extra = pcre_study (regex->pcre_re, 0, &errmsg); - if (errmsg != NULL) - { - GError *tmp_error = g_error_new (G_REGEX_ERROR, - G_REGEX_ERROR_OPTIMIZE, - _("Error while optimizing " - "regular expression %s: %s"), - regex->pattern, - errmsg); - g_propagate_error (error, tmp_error); - - g_regex_unref (regex); - return NULL; - } - } + if (compile_options_out != 0) + *compile_options_out = compile_options; - return regex; + return re; } /** @@ -1684,7 +1717,7 @@ g_regex_match (const GRegex *regex, * @regex: a #GRegex structure from g_regex_new() * @string: (array length=string_len): the string to scan for matches * @string_len: the length of @string, or -1 if @string is nul-terminated - * @start_position: starting index of the string to match + * @start_position: starting index of the string to match, in bytes * @match_options: match options * @match_info: (out) (allow-none): pointer to location where to store * the #GMatchInfo, or %NULL if you do not need it @@ -1815,7 +1848,7 @@ g_regex_match_all (const GRegex *regex, * @regex: a #GRegex structure from g_regex_new() * @string: (array length=string_len): the string to scan for matches * @string_len: the length of @string, or -1 if @string is nul-terminated - * @start_position: starting index of the string to match + * @start_position: starting index of the string to match, in bytes * @match_options: match options * @match_info: (out) (allow-none): pointer to location where to store * the #GMatchInfo, or %NULL if you do not need it @@ -1873,6 +1906,8 @@ g_regex_match_all_full (const GRegex *regex, { GMatchInfo *info; gboolean done; + pcre *pcre_re; + pcre_extra *extra; g_return_val_if_fail (regex != NULL, FALSE); g_return_val_if_fail (string != NULL, FALSE); @@ -1880,6 +1915,29 @@ g_regex_match_all_full (const GRegex *regex, g_return_val_if_fail (error == NULL || *error == NULL, FALSE); g_return_val_if_fail ((match_options & ~G_REGEX_MATCH_MASK) == 0, FALSE); +#ifdef PCRE_NO_AUTO_POSSESS + /* For PCRE >= 8.34 we need to turn off PCRE_NO_AUTO_POSSESS, which + * is an optimization for normal regex matching, but results in omitting + * some shorter matches here, and an observable behaviour change. + * + * DFA matching is rather niche, and very rarely used according to + * codesearch.debian.net, so don't bother caching the recompiled RE. */ + pcre_re = regex_compile (regex->pattern, + regex->compile_opts | PCRE_NO_AUTO_POSSESS, + NULL, NULL, error); + + if (pcre_re == NULL) + return FALSE; + + /* Not bothering to cache the optimization data either, with similar + * reasoning */ + extra = NULL; +#else + /* For PCRE < 8.33 the precompiled regex is fine. */ + pcre_re = regex->pcre_re; + extra = regex->extra; +#endif + info = match_info_new (regex, string, string_len, start_position, match_options, TRUE); @@ -1887,7 +1945,7 @@ g_regex_match_all_full (const GRegex *regex, while (!done) { done = TRUE; - info->matches = pcre_dfa_exec (regex->pcre_re, regex->extra, + info->matches = pcre_dfa_exec (pcre_re, extra, info->string, info->string_len, info->pos, regex->match_opts | match_options, @@ -1917,6 +1975,10 @@ g_regex_match_all_full (const GRegex *regex, } } +#ifdef PCRE_NO_AUTO_POSSESS + pcre_free (pcre_re); +#endif + /* set info->pos to -1 so that a call to g_match_info_next() fails. */ info->pos = -1; @@ -2057,7 +2119,7 @@ g_regex_split (const GRegex *regex, * @regex: a #GRegex structure * @string: (array length=string_len): the string to split with the pattern * @string_len: the length of @string, or -1 if @string is nul-terminated - * @start_position: starting index of the string to match + * @start_position: starting index of the string to match, in bytes * @match_options: match time option flags * @max_tokens: the maximum number of tokens to split @string into. * If this is less than 1, the string is split completely @@ -2687,7 +2749,7 @@ interpolation_list_needs_match (GList *list) * @regex: a #GRegex structure * @string: (array length=string_len): the string to perform matches against * @string_len: the length of @string, or -1 if @string is nul-terminated - * @start_position: starting index of the string to match + * @start_position: starting index of the string to match, in bytes * @replacement: text to replace each match with * @match_options: options for the match * @error: location to store the error occurring, or %NULL to ignore errors @@ -2778,7 +2840,7 @@ literal_replacement (const GMatchInfo *match_info, * @regex: a #GRegex structure * @string: (array length=string_len): the string to perform matches against * @string_len: the length of @string, or -1 if @string is nul-terminated - * @start_position: starting index of the string to match + * @start_position: starting index of the string to match, in bytes * @replacement: text to replace each match with * @match_options: options for the match * @error: location to store the error occurring, or %NULL to ignore errors @@ -2821,7 +2883,7 @@ g_regex_replace_literal (const GRegex *regex, * @regex: a #GRegex structure from g_regex_new() * @string: (array length=string_len): string to perform matches against * @string_len: the length of @string, or -1 if @string is nul-terminated - * @start_position: starting index of the string to match + * @start_position: starting index of the string to match, in bytes * @match_options: options for the match * @eval: a function to call for each match * @user_data: user data to pass to the function diff --git a/glib/gscripttable.h b/glib/gscripttable.h index 01e30e3..d52442d 100644 --- a/glib/gscripttable.h +++ b/glib/gscripttable.h @@ -552,10 +552,10 @@ static const guchar g_script_easy_table[8192] = { G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, - G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_COMMON, - G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_COMMON, - G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_COMMON, - G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, + G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, + G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, + G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, + G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, @@ -750,7 +750,7 @@ static const guchar g_script_easy_table[8192] = { G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, - G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, + G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, @@ -766,7 +766,7 @@ static const guchar g_script_easy_table[8192] = { G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, - G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_ARABIC, + G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, @@ -944,7 +944,7 @@ static const guchar g_script_easy_table[8192] = { G_UNICODE_SCRIPT_GUJARATI, G_UNICODE_SCRIPT_GUJARATI, G_UNICODE_SCRIPT_GUJARATI, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, - G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, + G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_GUJARATI, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_ORIYA, G_UNICODE_SCRIPT_ORIYA, G_UNICODE_SCRIPT_ORIYA, @@ -1062,7 +1062,7 @@ static const guchar g_script_easy_table[8192] = { G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU, - G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, + G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, @@ -1149,7 +1149,7 @@ static const guchar g_script_easy_table[8192] = { G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_MALAYALAM, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, - G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_MALAYALAM, G_UNICODE_SCRIPT_MALAYALAM, + G_UNICODE_SCRIPT_MALAYALAM, G_UNICODE_SCRIPT_MALAYALAM, G_UNICODE_SCRIPT_MALAYALAM, G_UNICODE_SCRIPT_MALAYALAM, G_UNICODE_SCRIPT_MALAYALAM, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_MALAYALAM, G_UNICODE_SCRIPT_MALAYALAM, G_UNICODE_SCRIPT_MALAYALAM, G_UNICODE_SCRIPT_MALAYALAM, G_UNICODE_SCRIPT_MALAYALAM, @@ -1711,9 +1711,9 @@ static const guchar g_script_easy_table[8192] = { G_UNICODE_SCRIPT_CHEROKEE, G_UNICODE_SCRIPT_CHEROKEE, G_UNICODE_SCRIPT_CHEROKEE, G_UNICODE_SCRIPT_CHEROKEE, G_UNICODE_SCRIPT_CHEROKEE, G_UNICODE_SCRIPT_CHEROKEE, G_UNICODE_SCRIPT_CHEROKEE, G_UNICODE_SCRIPT_CHEROKEE, G_UNICODE_SCRIPT_CHEROKEE, - G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, - G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, - G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, + G_UNICODE_SCRIPT_CHEROKEE, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, + G_UNICODE_SCRIPT_CHEROKEE, G_UNICODE_SCRIPT_CHEROKEE, G_UNICODE_SCRIPT_CHEROKEE, + G_UNICODE_SCRIPT_CHEROKEE, G_UNICODE_SCRIPT_CHEROKEE, G_UNICODE_SCRIPT_CHEROKEE, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL, G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL, G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL, G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL, G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL, G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL, G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL, @@ -2755,7 +2755,7 @@ static const struct { { 0x207f, 1, G_UNICODE_SCRIPT_LATIN }, { 0x2080, 15, G_UNICODE_SCRIPT_COMMON }, { 0x2090, 13, G_UNICODE_SCRIPT_LATIN }, - { 0x20a0, 30, G_UNICODE_SCRIPT_COMMON }, + { 0x20a0, 31, G_UNICODE_SCRIPT_COMMON }, { 0x20d0, 33, G_UNICODE_SCRIPT_INHERITED }, { 0x2100, 38, G_UNICODE_SCRIPT_COMMON }, { 0x2126, 1, G_UNICODE_SCRIPT_GREEK }, @@ -2767,7 +2767,7 @@ static const struct { { 0x214e, 1, G_UNICODE_SCRIPT_LATIN }, { 0x214f, 17, G_UNICODE_SCRIPT_COMMON }, { 0x2160, 41, G_UNICODE_SCRIPT_LATIN }, - { 0x2189, 1, G_UNICODE_SCRIPT_COMMON }, + { 0x2189, 3, G_UNICODE_SCRIPT_COMMON }, { 0x2190, 619, G_UNICODE_SCRIPT_COMMON }, { 0x2400, 39, G_UNICODE_SCRIPT_COMMON }, { 0x2440, 11, G_UNICODE_SCRIPT_COMMON }, @@ -2778,6 +2778,7 @@ static const struct { { 0x2b98, 34, G_UNICODE_SCRIPT_COMMON }, { 0x2bbd, 12, G_UNICODE_SCRIPT_COMMON }, { 0x2bca, 8, G_UNICODE_SCRIPT_COMMON }, + { 0x2bec, 4, G_UNICODE_SCRIPT_COMMON }, { 0x2c00, 47, G_UNICODE_SCRIPT_GLAGOLITIC }, { 0x2c30, 47, G_UNICODE_SCRIPT_GLAGOLITIC }, { 0x2c60, 32, G_UNICODE_SCRIPT_LATIN }, @@ -2838,27 +2839,25 @@ static const struct { { 0x3358, 168, G_UNICODE_SCRIPT_COMMON }, { 0x3400, 6582, G_UNICODE_SCRIPT_HAN }, { 0x4dc0, 64, G_UNICODE_SCRIPT_COMMON }, - { 0x4e00, 20941, G_UNICODE_SCRIPT_HAN }, + { 0x4e00, 20950, G_UNICODE_SCRIPT_HAN }, { 0xa000, 1165, G_UNICODE_SCRIPT_YI }, { 0xa490, 55, G_UNICODE_SCRIPT_YI }, { 0xa4d0, 48, G_UNICODE_SCRIPT_LISU }, { 0xa500, 300, G_UNICODE_SCRIPT_VAI }, - { 0xa640, 94, G_UNICODE_SCRIPT_CYRILLIC }, - { 0xa69f, 1, G_UNICODE_SCRIPT_CYRILLIC }, + { 0xa640, 96, G_UNICODE_SCRIPT_CYRILLIC }, { 0xa6a0, 88, G_UNICODE_SCRIPT_BAMUM }, { 0xa700, 34, G_UNICODE_SCRIPT_COMMON }, { 0xa722, 102, G_UNICODE_SCRIPT_LATIN }, { 0xa788, 3, G_UNICODE_SCRIPT_COMMON }, - { 0xa78b, 4, G_UNICODE_SCRIPT_LATIN }, - { 0xa790, 30, G_UNICODE_SCRIPT_LATIN }, - { 0xa7b0, 2, G_UNICODE_SCRIPT_LATIN }, + { 0xa78b, 35, G_UNICODE_SCRIPT_LATIN }, + { 0xa7b0, 8, G_UNICODE_SCRIPT_LATIN }, { 0xa7f7, 9, G_UNICODE_SCRIPT_LATIN }, { 0xa800, 44, G_UNICODE_SCRIPT_SYLOTI_NAGRI }, { 0xa830, 10, G_UNICODE_SCRIPT_COMMON }, { 0xa840, 56, G_UNICODE_SCRIPT_PHAGS_PA }, { 0xa880, 69, G_UNICODE_SCRIPT_SAURASHTRA }, { 0xa8ce, 12, G_UNICODE_SCRIPT_SAURASHTRA }, - { 0xa8e0, 28, G_UNICODE_SCRIPT_DEVANAGARI }, + { 0xa8e0, 30, G_UNICODE_SCRIPT_DEVANAGARI }, { 0xa900, 46, G_UNICODE_SCRIPT_KAYAH_LI }, { 0xa92e, 1, G_UNICODE_SCRIPT_COMMON }, { 0xa92f, 1, G_UNICODE_SCRIPT_KAYAH_LI }, @@ -2885,9 +2884,9 @@ static const struct { { 0xab28, 7, G_UNICODE_SCRIPT_ETHIOPIC }, { 0xab30, 43, G_UNICODE_SCRIPT_LATIN }, { 0xab5b, 1, G_UNICODE_SCRIPT_COMMON }, - { 0xab5c, 4, G_UNICODE_SCRIPT_LATIN }, - { 0xab64, 1, G_UNICODE_SCRIPT_LATIN }, + { 0xab5c, 9, G_UNICODE_SCRIPT_LATIN }, { 0xab65, 1, G_UNICODE_SCRIPT_GREEK }, + { 0xab70, 80, G_UNICODE_SCRIPT_CHEROKEE }, { 0xabc0, 46, G_UNICODE_SCRIPT_MEETEI_MAYEK }, { 0xabf0, 10, G_UNICODE_SCRIPT_MEETEI_MAYEK }, { 0xac00, 11172, G_UNICODE_SCRIPT_HANGUL }, @@ -2912,6 +2911,7 @@ static const struct { { 0xfe00, 16, G_UNICODE_SCRIPT_INHERITED }, { 0xfe10, 10, G_UNICODE_SCRIPT_COMMON }, { 0xfe20, 14, G_UNICODE_SCRIPT_INHERITED }, + { 0xfe2e, 2, G_UNICODE_SCRIPT_CYRILLIC }, { 0xfe30, 35, G_UNICODE_SCRIPT_COMMON }, { 0xfe54, 19, G_UNICODE_SCRIPT_COMMON }, { 0xfe68, 4, G_UNICODE_SCRIPT_COMMON }, @@ -2982,13 +2982,17 @@ static const struct { { 0x10860, 32, G_UNICODE_SCRIPT_PALMYRENE }, { 0x10880, 31, G_UNICODE_SCRIPT_NABATAEAN }, { 0x108a7, 9, G_UNICODE_SCRIPT_NABATAEAN }, + { 0x108e0, 19, G_UNICODE_SCRIPT_HATRAN }, + { 0x108f4, 2, G_UNICODE_SCRIPT_HATRAN }, + { 0x108fb, 5, G_UNICODE_SCRIPT_HATRAN }, { 0x10900, 28, G_UNICODE_SCRIPT_PHOENICIAN }, { 0x1091f, 1, G_UNICODE_SCRIPT_PHOENICIAN }, { 0x10920, 26, G_UNICODE_SCRIPT_LYDIAN }, { 0x1093f, 1, G_UNICODE_SCRIPT_LYDIAN }, { 0x10980, 32, G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS }, { 0x109a0, 24, G_UNICODE_SCRIPT_MEROITIC_CURSIVE }, - { 0x109be, 2, G_UNICODE_SCRIPT_MEROITIC_CURSIVE }, + { 0x109bc, 20, G_UNICODE_SCRIPT_MEROITIC_CURSIVE }, + { 0x109d2, 46, G_UNICODE_SCRIPT_MEROITIC_CURSIVE }, { 0x10a00, 4, G_UNICODE_SCRIPT_KHAROSHTHI }, { 0x10a05, 2, G_UNICODE_SCRIPT_KHAROSHTHI }, { 0x10a0c, 8, G_UNICODE_SCRIPT_KHAROSHTHI }, @@ -3011,6 +3015,9 @@ static const struct { { 0x10b99, 4, G_UNICODE_SCRIPT_PSALTER_PAHLAVI }, { 0x10ba9, 7, G_UNICODE_SCRIPT_PSALTER_PAHLAVI }, { 0x10c00, 73, G_UNICODE_SCRIPT_OLD_TURKIC }, + { 0x10c80, 51, G_UNICODE_SCRIPT_OLD_HUNGARIAN }, + { 0x10cc0, 51, G_UNICODE_SCRIPT_OLD_HUNGARIAN }, + { 0x10cfa, 6, G_UNICODE_SCRIPT_OLD_HUNGARIAN }, { 0x10e60, 31, G_UNICODE_SCRIPT_ARABIC }, { 0x11000, 78, G_UNICODE_SCRIPT_BRAHMI }, { 0x11052, 30, G_UNICODE_SCRIPT_BRAHMI }, @@ -3021,15 +3028,19 @@ static const struct { { 0x11100, 53, G_UNICODE_SCRIPT_CHAKMA }, { 0x11136, 14, G_UNICODE_SCRIPT_CHAKMA }, { 0x11150, 39, G_UNICODE_SCRIPT_MAHAJANI }, - { 0x11180, 73, G_UNICODE_SCRIPT_SHARADA }, - { 0x111cd, 1, G_UNICODE_SCRIPT_SHARADA }, - { 0x111d0, 11, G_UNICODE_SCRIPT_SHARADA }, + { 0x11180, 78, G_UNICODE_SCRIPT_SHARADA }, + { 0x111d0, 16, G_UNICODE_SCRIPT_SHARADA }, { 0x111e1, 20, G_UNICODE_SCRIPT_SINHALA }, { 0x11200, 18, G_UNICODE_SCRIPT_KHOJKI }, { 0x11213, 43, G_UNICODE_SCRIPT_KHOJKI }, + { 0x11280, 7, G_UNICODE_SCRIPT_MULTANI }, + { 0x11288, 1, G_UNICODE_SCRIPT_MULTANI }, + { 0x1128a, 4, G_UNICODE_SCRIPT_MULTANI }, + { 0x1128f, 15, G_UNICODE_SCRIPT_MULTANI }, + { 0x1129f, 11, G_UNICODE_SCRIPT_MULTANI }, { 0x112b0, 59, G_UNICODE_SCRIPT_KHUDAWADI }, { 0x112f0, 10, G_UNICODE_SCRIPT_KHUDAWADI }, - { 0x11301, 3, G_UNICODE_SCRIPT_GRANTHA }, + { 0x11300, 4, G_UNICODE_SCRIPT_GRANTHA }, { 0x11305, 8, G_UNICODE_SCRIPT_GRANTHA }, { 0x1130f, 2, G_UNICODE_SCRIPT_GRANTHA }, { 0x11313, 22, G_UNICODE_SCRIPT_GRANTHA }, @@ -3039,6 +3050,7 @@ static const struct { { 0x1133c, 9, G_UNICODE_SCRIPT_GRANTHA }, { 0x11347, 2, G_UNICODE_SCRIPT_GRANTHA }, { 0x1134b, 3, G_UNICODE_SCRIPT_GRANTHA }, + { 0x11350, 1, G_UNICODE_SCRIPT_GRANTHA }, { 0x11357, 1, G_UNICODE_SCRIPT_GRANTHA }, { 0x1135d, 7, G_UNICODE_SCRIPT_GRANTHA }, { 0x11366, 7, G_UNICODE_SCRIPT_GRANTHA }, @@ -3046,18 +3058,23 @@ static const struct { { 0x11480, 72, G_UNICODE_SCRIPT_TIRHUTA }, { 0x114d0, 10, G_UNICODE_SCRIPT_TIRHUTA }, { 0x11580, 54, G_UNICODE_SCRIPT_SIDDHAM }, - { 0x115b8, 18, G_UNICODE_SCRIPT_SIDDHAM }, + { 0x115b8, 38, G_UNICODE_SCRIPT_SIDDHAM }, { 0x11600, 69, G_UNICODE_SCRIPT_MODI }, { 0x11650, 10, G_UNICODE_SCRIPT_MODI }, { 0x11680, 56, G_UNICODE_SCRIPT_TAKRI }, { 0x116c0, 10, G_UNICODE_SCRIPT_TAKRI }, + { 0x11700, 26, G_UNICODE_SCRIPT_AHOM }, + { 0x1171d, 15, G_UNICODE_SCRIPT_AHOM }, + { 0x11730, 16, G_UNICODE_SCRIPT_AHOM }, { 0x118a0, 83, G_UNICODE_SCRIPT_WARANG_CITI }, { 0x118ff, 1, G_UNICODE_SCRIPT_WARANG_CITI }, { 0x11ac0, 57, G_UNICODE_SCRIPT_PAU_CIN_HAU }, - { 0x12000, 921, G_UNICODE_SCRIPT_CUNEIFORM }, + { 0x12000, 922, G_UNICODE_SCRIPT_CUNEIFORM }, { 0x12400, 111, G_UNICODE_SCRIPT_CUNEIFORM }, { 0x12470, 5, G_UNICODE_SCRIPT_CUNEIFORM }, + { 0x12480, 196, G_UNICODE_SCRIPT_CUNEIFORM }, { 0x13000, 1071, G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS }, + { 0x14400, 583, G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS }, { 0x16800, 569, G_UNICODE_SCRIPT_BAMUM }, { 0x16a40, 31, G_UNICODE_SCRIPT_MRO }, { 0x16a60, 10, G_UNICODE_SCRIPT_MRO }, @@ -3090,7 +3107,7 @@ static const struct { { 0x1d185, 7, G_UNICODE_SCRIPT_INHERITED }, { 0x1d18c, 30, G_UNICODE_SCRIPT_COMMON }, { 0x1d1aa, 4, G_UNICODE_SCRIPT_INHERITED }, - { 0x1d1ae, 48, G_UNICODE_SCRIPT_COMMON }, + { 0x1d1ae, 59, G_UNICODE_SCRIPT_COMMON }, { 0x1d200, 70, G_UNICODE_SCRIPT_GREEK }, { 0x1d300, 87, G_UNICODE_SCRIPT_COMMON }, { 0x1d360, 18, G_UNICODE_SCRIPT_COMMON }, @@ -3115,6 +3132,9 @@ static const struct { { 0x1d552, 340, G_UNICODE_SCRIPT_COMMON }, { 0x1d6a8, 292, G_UNICODE_SCRIPT_COMMON }, { 0x1d7ce, 50, G_UNICODE_SCRIPT_COMMON }, + { 0x1d800, 652, G_UNICODE_SCRIPT_SIGNWRITING }, + { 0x1da9b, 5, G_UNICODE_SCRIPT_SIGNWRITING }, + { 0x1daa1, 15, G_UNICODE_SCRIPT_SIGNWRITING }, { 0x1e800, 197, G_UNICODE_SCRIPT_MENDE_KIKAKUI }, { 0x1e8c7, 16, G_UNICODE_SCRIPT_MENDE_KIKAKUI }, { 0x1ee00, 4, G_UNICODE_SCRIPT_ARABIC }, @@ -3167,16 +3187,9 @@ static const struct { { 0x1f210, 43, G_UNICODE_SCRIPT_COMMON }, { 0x1f240, 9, G_UNICODE_SCRIPT_COMMON }, { 0x1f250, 2, G_UNICODE_SCRIPT_COMMON }, - { 0x1f300, 45, G_UNICODE_SCRIPT_COMMON }, - { 0x1f330, 78, G_UNICODE_SCRIPT_COMMON }, - { 0x1f380, 79, G_UNICODE_SCRIPT_COMMON }, - { 0x1f3d4, 36, G_UNICODE_SCRIPT_COMMON }, - { 0x1f400, 255, G_UNICODE_SCRIPT_COMMON }, - { 0x1f500, 75, G_UNICODE_SCRIPT_COMMON }, - { 0x1f550, 42, G_UNICODE_SCRIPT_COMMON }, + { 0x1f300, 634, G_UNICODE_SCRIPT_COMMON }, { 0x1f57b, 41, G_UNICODE_SCRIPT_COMMON }, - { 0x1f5a5, 158, G_UNICODE_SCRIPT_COMMON }, - { 0x1f645, 139, G_UNICODE_SCRIPT_COMMON }, + { 0x1f5a5, 300, G_UNICODE_SCRIPT_COMMON }, { 0x1f6e0, 13, G_UNICODE_SCRIPT_COMMON }, { 0x1f6f0, 4, G_UNICODE_SCRIPT_COMMON }, { 0x1f700, 116, G_UNICODE_SCRIPT_COMMON }, @@ -3186,9 +3199,13 @@ static const struct { { 0x1f850, 10, G_UNICODE_SCRIPT_COMMON }, { 0x1f860, 40, G_UNICODE_SCRIPT_COMMON }, { 0x1f890, 30, G_UNICODE_SCRIPT_COMMON }, + { 0x1f910, 9, G_UNICODE_SCRIPT_COMMON }, + { 0x1f980, 5, G_UNICODE_SCRIPT_COMMON }, + { 0x1f9c0, 1, G_UNICODE_SCRIPT_COMMON }, { 0x20000, 42711, G_UNICODE_SCRIPT_HAN }, { 0x2a700, 4149, G_UNICODE_SCRIPT_HAN }, { 0x2b740, 222, G_UNICODE_SCRIPT_HAN }, + { 0x2b820, 5762, G_UNICODE_SCRIPT_HAN }, { 0x2f800, 542, G_UNICODE_SCRIPT_HAN }, { 0xe0001, 1, G_UNICODE_SCRIPT_COMMON }, { 0xe0020, 96, G_UNICODE_SCRIPT_COMMON }, diff --git a/glib/gsequence.c b/glib/gsequence.c index 76e24e7..81f3e42 100644 --- a/glib/gsequence.c +++ b/glib/gsequence.c @@ -883,7 +883,7 @@ g_sequence_sort_iter (GSequence *seq, seq->access_prohibited = TRUE; tmp->access_prohibited = TRUE; - while (g_sequence_get_length (tmp) > 0) + while (!g_sequence_is_empty (tmp)) { GSequenceNode *node = g_sequence_get_begin_iter (tmp); @@ -1231,7 +1231,9 @@ g_sequence_set (GSequenceIter *iter, * g_sequence_get_length: * @seq: a #GSequence * - * Returns the length of @seq + * Returns the length of @seq. Note that this method is O(h) where `h' is the + * height of the tree. It is thus more efficient to use g_sequence_is_empty() + * when comparing the length to zero. * * Returns: the length of @seq * @@ -1244,6 +1246,26 @@ g_sequence_get_length (GSequence *seq) } /** + * g_sequence_is_empty: + * @seq: a #GSequence + * + * Returns %TRUE if the sequence contains zero items. + * + * This function is functionally identical to checking the result of + * g_sequence_get_length() being equal to zero. However this function is + * implemented in O(1) running time. + * + * Returns: %TRUE if the sequence is empty, otherwise %FALSE. + * + * Since: 2.48 + */ +gboolean +g_sequence_is_empty (GSequence *seq) +{ + return (seq->end_node->parent == NULL) && (seq->end_node->left == NULL); +} + +/** * g_sequence_get_end_iter: * @seq: a #GSequence * diff --git a/glib/gsequence.h b/glib/gsequence.h index 9939132..879bb04 100644 --- a/glib/gsequence.h +++ b/glib/gsequence.h @@ -59,6 +59,8 @@ GLIB_AVAILABLE_IN_ALL void g_sequence_sort_iter (GSequence *seq, GSequenceIterCompareFunc cmp_func, gpointer cmp_data); +GLIB_AVAILABLE_IN_2_48 +gboolean g_sequence_is_empty (GSequence *seq); /* Getting iters */ diff --git a/glib/gshell.c b/glib/gshell.c index a1c7e79..2c50af8 100644 --- a/glib/gshell.c +++ b/glib/gshell.c @@ -619,10 +619,10 @@ tokenize_command_line (const gchar *command_line, /** * g_shell_parse_argv: * @command_line: command line to parse - * @argcp: (out) (optional): return location for number of args, or %NULL + * @argcp: (out) (optional): return location for number of args * @argvp: (out) (optional) (array length=argcp zero-terminated=1): return - * location for array of args, or %NULL - * @error: (optional): return location for error, or %NULL + * location for array of args + * @error: (optional): return location for error * * Parses a command line into an argument vector, in much the same way * the shell would, but without many of the expansions the shell would diff --git a/glib/gslice.c b/glib/gslice.c index 0563d80..9022062 100644 --- a/glib/gslice.c +++ b/glib/gslice.c @@ -873,7 +873,11 @@ thread_memory_magazine2_free (ThreadMemory *tmem, * mechanism can be changed with the [`G_SLICE=always-malloc`][G_SLICE] * environment variable. * - * Returns: a pointer to the allocated block, cast to a pointer to @type + * This can never return %NULL as the minimum allocation size from + * `sizeof (@type)` is 1 byte. + * + * Returns: (not nullable): a pointer to the allocated block, cast to a pointer + * to @type * * Since: 2.10 */ @@ -892,13 +896,19 @@ thread_memory_magazine2_free (ThreadMemory *tmem, * be changed with the [`G_SLICE=always-malloc`][G_SLICE] * environment variable. * + * This can never return %NULL as the minimum allocation size from + * `sizeof (@type)` is 1 byte. + * + * Returns: (not nullable): a pointer to the allocated block, cast to a pointer + * to @type + * * Since: 2.10 */ /** * g_slice_dup: * @type: the type to duplicate, typically a structure name - * @mem: the memory to copy into the allocated block + * @mem: (not nullable): the memory to copy into the allocated block * * A convenience macro to duplicate a block of memory using * the slice allocator. @@ -910,7 +920,10 @@ thread_memory_magazine2_free (ThreadMemory *tmem, * be changed with the [`G_SLICE=always-malloc`][G_SLICE] * environment variable. * - * Returns: a pointer to the allocated block, cast to a pointer to @type + * This can never return %NULL. + * + * Returns: (not nullable): a pointer to the allocated block, cast to a pointer + * to @type * * Since: 2.14 */ @@ -929,6 +942,8 @@ thread_memory_magazine2_free (ThreadMemory *tmem, * [`G_DEBUG=gc-friendly`][G_DEBUG] environment variable, also see * [`G_SLICE`][G_SLICE] for related debugging options. * + * If @mem is %NULL, this macro does nothing. + * * Since: 2.10 */ @@ -947,6 +962,8 @@ thread_memory_magazine2_free (ThreadMemory *tmem, * [`G_DEBUG=gc-friendly`][G_DEBUG] environment variable, also see * [`G_SLICE`][G_SLICE] for related debugging options. * + * If @mem_chain is %NULL, this function does nothing. + * * Since: 2.10 */ @@ -964,7 +981,8 @@ thread_memory_magazine2_free (ThreadMemory *tmem, * be changed with the [`G_SLICE=always-malloc`][G_SLICE] * environment variable. * - * Returns: a pointer to the allocated memory block + * Returns: a pointer to the allocated memory block, which will be %NULL if and + * only if @mem_size is 0 * * Since: 2.10 */ @@ -1022,7 +1040,8 @@ g_slice_alloc (gsize mem_size) * mechanism can be changed with the [`G_SLICE=always-malloc`][G_SLICE] * environment variable. * - * Returns: a pointer to the allocated block + * Returns: a pointer to the allocated block, which will be %NULL if and only + * if @mem_size is 0 * * Since: 2.10 */ @@ -1043,7 +1062,10 @@ g_slice_alloc0 (gsize mem_size) * Allocates a block of memory from the slice allocator * and copies @block_size bytes into it from @mem_block. * - * Returns: a pointer to the allocated memory block + * @mem_block must be non-%NULL if @block_size is non-zero. + * + * Returns: a pointer to the allocated memory block, which will be %NULL if and + * only if @mem_size is 0 * * Since: 2.14 */ @@ -1070,6 +1092,8 @@ g_slice_copy (gsize mem_size, * can be changed with the [`G_DEBUG=gc-friendly`][G_DEBUG] environment * variable, also see [`G_SLICE`][G_SLICE] for related debugging options. * + * If @mem_block is %NULL, this function does nothing. + * * Since: 2.10 */ void @@ -1130,6 +1154,8 @@ g_slice_free1 (gsize mem_size, * [`G_DEBUG=gc-friendly`][G_DEBUG] environment variable, also see * [`G_SLICE`][G_SLICE] for related debugging options. * + * If @mem_chain is %NULL, this function does nothing. + * * Since: 2.10 */ void diff --git a/glib/gspawn-win32-helper-console.c b/glib/gspawn-win32-helper-console.c new file mode 100644 index 0000000..dca4499 --- /dev/null +++ b/glib/gspawn-win32-helper-console.c @@ -0,0 +1,2 @@ +#define HELPER_CONSOLE +#include "gspawn-win32-helper.c" diff --git a/glib/gspawn-win32-helper.c b/glib/gspawn-win32-helper.c index 76191f9..2a3af47 100644 --- a/glib/gspawn-win32-helper.c +++ b/glib/gspawn-win32-helper.c @@ -67,20 +67,6 @@ write_err_and_exit (gint fd, * but a WinMain(). */ -/* Info peeked from mingw runtime's source code. __wgetmainargs() is a - * function to get the program's argv in wide char format. - */ - -typedef struct { - int newmode; -} _startupinfo; - -extern void __wgetmainargs(int *argc, - wchar_t ***wargv, - wchar_t ***wenviron, - int expand_wildcards, - _startupinfo *startupinfo); - /* Copy of protect_argv that handles wchar_t strings */ static gint @@ -211,8 +197,7 @@ main (int ignored_argc, char **ignored_argv) wchar_t **new_wargv; int argc; char **argv; - wchar_t **wargv, **wenvp; - _startupinfo si = { 0 }; + wchar_t **wargv; char c; #if (defined (_MSC_VER) && _MSC_VER >= 1400) @@ -226,7 +211,7 @@ main (int ignored_argc, char **ignored_argv) #endif /* Fetch the wide-char argument vector */ - __wgetmainargs (&argc, &wargv, &wenvp, 0, &si); + wargv = CommandLineToArgvW (GetCommandLineW(), &argc); g_assert (argc >= ARG_COUNT); @@ -382,6 +367,7 @@ main (int ignored_argc, char **ignored_argv) read (helper_sync_fd, &c, 1); + LocalFree (wargv); g_strfreev (argv); return 0; diff --git a/glib/gspawn-win64-helper-console.c b/glib/gspawn-win64-helper-console.c new file mode 100644 index 0000000..dca4499 --- /dev/null +++ b/glib/gspawn-win64-helper-console.c @@ -0,0 +1,2 @@ +#define HELPER_CONSOLE +#include "gspawn-win32-helper.c" diff --git a/glib/gspawn-win64-helper.c b/glib/gspawn-win64-helper.c new file mode 100644 index 0000000..d8641ff --- /dev/null +++ b/glib/gspawn-win64-helper.c @@ -0,0 +1 @@ +#include "gspawn-win32-helper.c" diff --git a/glib/gspawn.c b/glib/gspawn.c index 3cd43a4..5aed1a9 100644 --- a/glib/gspawn.c +++ b/glib/gspawn.c @@ -509,13 +509,8 @@ g_spawn_sync (const gchar *working_directory, * main(). wmain() has a wide character argument vector as parameter. * * At least currently, mingw doesn't support wmain(), so if you use - * mingw to develop the spawned program, it will have to call the - * undocumented function __wgetmainargs() to get the wide character - * argument vector and environment. See gspawn-win32-helper.c in the - * GLib sources or init.c in the mingw runtime sources for a prototype - * for that function. Alternatively, you can retrieve the Win32 system - * level wide character command line passed to the spawned program - * using the GetCommandLineW() function. + * mingw to develop the spawned program, it should call + * g_win32_get_command_line() to get arguments in UTF-8. * * On Windows the low-level child process creation API CreateProcess() * doesn't use argument vectors, but a command line. The C runtime diff --git a/glib/gstdio.h b/glib/gstdio.h index 7601f5e..a0caf73 100644 --- a/glib/gstdio.h +++ b/glib/gstdio.h @@ -26,7 +26,7 @@ G_BEGIN_DECLS -#if defined (_MSC_VER) && !defined(_WIN64) +#if (defined (__MINGW64_VERSION_MAJOR) || 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 diff --git a/glib/gstrfuncs.c b/glib/gstrfuncs.c index 9498d81..975be0b 100644 --- a/glib/gstrfuncs.c +++ b/glib/gstrfuncs.c @@ -84,6 +84,13 @@ * certain number of columns, then \%Ns is not a correct solution * anyway, since it fails to take wide characters (see g_unichar_iswide()) * into account. + * + * Note also that there are various printf() parameters which are platform + * dependent. GLib provides platform independent macros for these parameters + * which should be used instead. A common example is %G_GUINT64_FORMAT, which + * should be used instead of `%llu` or similar parameters for formatting + * 64-bit integers. These macros are all named `G_*_FORMAT`; see + * [Basic Types][glib-Basic-Types]. */ /** @@ -336,7 +343,7 @@ get_C_locale (void) /** * g_strdup: - * @str: the string to duplicate + * @str: (nullable): the string to duplicate * * Duplicates a string. If @str is %NULL it returns %NULL. * The returned string should be freed with g_free() @@ -594,8 +601,8 @@ g_strconcat (const gchar *string1, ...) /** * g_strtod: * @nptr: the string to convert to a numeric value. - * @endptr: if non-%NULL, it returns the character after - * the last character used in the conversion. + * @endptr: (out) (transfer none) (optional): if non-%NULL, it returns the + * character after the last character used in the conversion. * * Converts a string to a #gdouble value. * It calls the standard strtod() function to handle the conversion, but @@ -647,8 +654,8 @@ g_strtod (const gchar *nptr, /** * g_ascii_strtod: * @nptr: the string to convert to a numeric value. - * @endptr: if non-%NULL, it returns the character after - * the last character used in the conversion. + * @endptr: (out) (transfer none) (optional): if non-%NULL, it returns the + * character after the last character used in the conversion. * * Converts a string to a #gdouble value. * @@ -1123,8 +1130,8 @@ g_parse_long_long (const gchar *nptr, /** * g_ascii_strtoull: * @nptr: the string to convert to a numeric value. - * @endptr: if non-%NULL, it returns the character after - * the last character used in the conversion. + * @endptr: (out) (transfer none) (optional): if non-%NULL, it returns the + * character after the last character used in the conversion. * @base: to be used for the conversion, 2..36 or 0 * * Converts a string to a #guint64 value. @@ -1170,8 +1177,8 @@ g_ascii_strtoull (const gchar *nptr, /** * g_ascii_strtoll: * @nptr: the string to convert to a numeric value. - * @endptr: if non-%NULL, it returns the character after - * the last character used in the conversion. + * @endptr: (out) (transfer none) (optional): if non-%NULL, it returns the + * character after the last character used in the conversion. * @base: to be used for the conversion, 2..36 or 0 * * Converts a string to a #gint64 value. @@ -1231,30 +1238,70 @@ g_ascii_strtoll (const gchar *nptr, * @errnum: the system error number. See the standard C %errno * documentation * - * Returns a string corresponding to the given error code, e.g. - * "no such process". You should use this function in preference to - * strerror(), because it returns a string in UTF-8 encoding, and since - * not all platforms support the strerror() function. + * Returns a string corresponding to the given error code, e.g. "no + * such process". Unlike strerror(), this always returns a string in + * UTF-8 encoding, and the pointer is guaranteed to remain valid for + * the lifetime of the process. + * + * Note that the string may be translated according to the current locale. + * + * The value of %errno will not be changed by this function. * * Returns: a UTF-8 string describing the error code. If the error code - * is unknown, it returns "unknown error ()". + * is unknown, it returns a string like "unknown error ()". */ const gchar * g_strerror (gint errnum) { - gchar *msg; - gchar *tofree = NULL; - const gchar *ret; + static GHashTable *errors; + G_LOCK_DEFINE_STATIC (errors); + const gchar *msg; gint saved_errno = errno; - msg = strerror (errnum); - if (!g_get_charset (NULL)) - msg = tofree = g_locale_to_utf8 (msg, -1, NULL, NULL, NULL); + G_LOCK (errors); + if (errors) + msg = g_hash_table_lookup (errors, GINT_TO_POINTER (errnum)); + else + { + errors = g_hash_table_new (NULL, NULL); + msg = NULL; + } + + if (!msg) + { + gchar buf[1024]; + GError *error = NULL; + +#if defined(G_OS_WIN32) + strerror_s (buf, sizeof (buf), errnum); + msg = buf; +#elif defined(HAVE_STRERROR_R) + /* Match the condition in strerror_r(3) for glibc */ +# if defined(__GLIBC__) && !((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && ! _GNU_SOURCE) + msg = strerror_r (errnum, buf, sizeof (buf)); +# else + strerror_r (errnum, buf, sizeof (buf)); + msg = buf; +# endif /* HAVE_STRERROR_R */ +#else + g_strlcpy (buf, strerror (errnum), sizeof (buf)); + msg = buf; +#endif + if (!g_get_charset (NULL)) + { + msg = g_locale_to_utf8 (msg, -1, NULL, NULL, &error); + if (error) + g_print ("%s\n", error->message); + } + else if (msg == (const gchar *)buf) + msg = g_strdup (buf); + + g_hash_table_insert (errors, GINT_TO_POINTER (errnum), (char *) msg); + } + G_UNLOCK (errors); - ret = g_intern_string (msg); - g_free (tofree); errno = saved_errno; - return ret; + return msg; } /** @@ -2069,7 +2116,7 @@ out: /** * g_strescape: * @source: a string to escape - * @exceptions: a string of characters not to escape in @source + * @exceptions: (nullable): a string of characters not to escape in @source * * Escapes the special characters '\b', '\f', '\n', '\r', '\t', '\v', '\' * and '"' in the string @source by inserting a '\' before @@ -2414,8 +2461,15 @@ g_strsplit_set (const gchar *string, } /** + * GStrv: + * + * A typedef alias for gchar**. This is mostly useful when used together with + * g_auto(). + */ + +/** * g_strfreev: - * @str_array: a %NULL-terminated array of strings to free + * @str_array: (nullable): a %NULL-terminated array of strings to free * * Frees a %NULL-terminated array of strings, as well as each * string it contains. @@ -2438,14 +2492,14 @@ g_strfreev (gchar **str_array) /** * g_strdupv: - * @str_array: a %NULL-terminated array of strings + * @str_array: (nullable): a %NULL-terminated array of strings * * Copies %NULL-terminated array of strings. The copy is a deep copy; * the new array should be freed by first freeing each string, then * the array itself. g_strfreev() does this for you. If called * on a %NULL value, g_strdupv() simply returns %NULL. * - * Returns: a new %NULL-terminated array of strings. + * Returns: (nullable): a new %NULL-terminated array of strings. */ gchar** g_strdupv (gchar **str_array) diff --git a/glib/gstrfuncs.h b/glib/gstrfuncs.h index 76004aa..bc0c48e 100644 --- a/glib/gstrfuncs.h +++ b/glib/gstrfuncs.h @@ -265,6 +265,7 @@ gpointer g_memdup (gconstpointer mem, * g_strdupv() copies a NULL-terminated array of strings * g_strv_length() returns the length of a NULL-terminated array of strings */ +typedef gchar** GStrv; GLIB_AVAILABLE_IN_ALL gchar** g_strsplit (const gchar *string, const gchar *delimiter, diff --git a/glib/gstring.c b/glib/gstring.c index dc60957..9ba7b0a 100644 --- a/glib/gstring.c +++ b/glib/gstring.c @@ -132,8 +132,8 @@ g_string_sized_new (gsize dfl_size) /** * g_string_new: - * @init: (allow-none): the initial text to copy into the string, or %NULL to - * start with an empty string. + * @init: (nullable): the initial text to copy into the string, or %NULL to + * start with an empty string * * Creates a new #GString, initialized with the given string. * @@ -195,7 +195,7 @@ g_string_new_len (const gchar *init, /** * g_string_free: - * @string: a #GString + * @string: (transfer full): a #GString * @free_segment: if %TRUE, the actual character data is freed as well * * Frees the memory allocated for the #GString. @@ -240,7 +240,7 @@ g_string_free (GString *string, * #GBytes does not include this extra nul; i.e. it has length exactly * equal to the "len" member. * - * Returns: A newly allocated #GBytes containing contents of @string; @string itself is freed + * Returns: (transfer full): A newly allocated #GBytes containing contents of @string; @string itself is freed * Since: 2.34 */ GBytes* @@ -330,7 +330,7 @@ g_string_hash (const GString *str) * the standard strcpy() function, except that you do not * have to worry about having enough space to copy the string. * - * Returns: @string + * Returns: (transfer none): @string */ GString * g_string_assign (GString *string, @@ -359,7 +359,7 @@ g_string_assign (GString *string, * * Cuts off the end of the GString, leaving the first @len bytes. * - * Returns: @string + * Returns: (transfer none): @string */ GString * g_string_truncate (GString *string, @@ -384,7 +384,7 @@ g_string_truncate (GString *string, * of the newly added area are undefined. (However, as * always, string->str[string->len] will be a nul byte.) * - * Returns: @string + * Returns: (transfer none): @string */ GString * g_string_set_size (GString *string, @@ -418,7 +418,7 @@ g_string_set_size (GString *string, * the caller's responsibility to ensure that @val has at * least @len addressable bytes. * - * Returns: @string + * Returns: (transfer none): @string */ GString * g_string_insert_len (GString *string, @@ -445,7 +445,7 @@ g_string_insert_len (GString *string, * since ">=" and "<=" are only valid when val really is a substring. * In practice, it will work on modern archs. */ - if (val >= string->str && val <= string->str + string->len) + if (G_UNLIKELY (val >= string->str && val <= string->str + string->len)) { gsize offset = val - string->str; gsize precount = 0; @@ -534,7 +534,7 @@ gunichar_ok (gunichar c) * Appends @unescaped to @string, escaped any characters that * are reserved in URIs using URI-style escape sequences. * - * Returns: @string + * Returns: (transfer none): @string * * Since: 2.16 */ @@ -587,15 +587,12 @@ g_string_append_uri_escaped (GString *string, * Adds a string onto the end of a #GString, expanding * it if necessary. * - * Returns: @string + * Returns: (transfer none): @string */ GString * g_string_append (GString *string, const gchar *val) { - g_return_val_if_fail (string != NULL, NULL); - g_return_val_if_fail (val != NULL, string); - return g_string_insert_len (string, -1, val, -1); } @@ -613,16 +610,13 @@ g_string_append (GString *string, * the caller's responsibility to ensure that @val has at * least @len addressable bytes. * - * Returns: @string + * Returns: (transfer none): @string */ GString * g_string_append_len (GString *string, const gchar *val, gssize len) { - g_return_val_if_fail (string != NULL, NULL); - g_return_val_if_fail (len == 0 || val != NULL, string); - return g_string_insert_len (string, -1, val, len); } @@ -634,7 +628,7 @@ g_string_append_len (GString *string, * Adds a byte onto the end of a #GString, expanding * it if necessary. * - * Returns: @string + * Returns: (transfer none): @string */ #undef g_string_append_c GString * @@ -654,7 +648,7 @@ g_string_append_c (GString *string, * Converts a Unicode character into UTF-8, and appends it * to the string. * - * Returns: @string + * Returns: (transfer none): @string */ GString * g_string_append_unichar (GString *string, @@ -673,15 +667,12 @@ g_string_append_unichar (GString *string, * Adds a string on to the start of a #GString, * expanding it if necessary. * - * Returns: @string + * Returns: (transfer none): @string */ GString * g_string_prepend (GString *string, const gchar *val) { - g_return_val_if_fail (string != NULL, NULL); - g_return_val_if_fail (val != NULL, string); - return g_string_insert_len (string, 0, val, -1); } @@ -699,16 +690,13 @@ g_string_prepend (GString *string, * it is the caller's responsibility to ensure that * @val has at least @len addressable bytes. * - * Returns: @string + * Returns: (transfer none): @string */ GString * g_string_prepend_len (GString *string, const gchar *val, gssize len) { - g_return_val_if_fail (string != NULL, NULL); - g_return_val_if_fail (val != NULL, string); - return g_string_insert_len (string, 0, val, len); } @@ -720,7 +708,7 @@ g_string_prepend_len (GString *string, * Adds a byte onto the start of a #GString, * expanding it if necessary. * - * Returns: @string + * Returns: (transfer none): @string */ GString * g_string_prepend_c (GString *string, @@ -739,7 +727,7 @@ g_string_prepend_c (GString *string, * Converts a Unicode character into UTF-8, and prepends it * to the string. * - * Returns: @string + * Returns: (transfer none): @string */ GString * g_string_prepend_unichar (GString *string, @@ -759,19 +747,13 @@ g_string_prepend_unichar (GString *string, * Inserts a copy of a string into a #GString, * expanding it if necessary. * - * Returns: @string + * Returns: (transfer none): @string */ GString * g_string_insert (GString *string, gssize pos, const gchar *val) { - g_return_val_if_fail (string != NULL, NULL); - g_return_val_if_fail (val != NULL, string); - - if (pos >= 0) - g_return_val_if_fail (pos <= string->len, string); - return g_string_insert_len (string, pos, val, -1); } @@ -783,7 +765,7 @@ g_string_insert (GString *string, * * Inserts a byte into a #GString, expanding it if necessary. * - * Returns: @string + * Returns: (transfer none): @string */ GString * g_string_insert_c (GString *string, @@ -822,7 +804,7 @@ g_string_insert_c (GString *string, * Converts a Unicode character into UTF-8, and insert it * into the string at the given position. * - * Returns: @string + * Returns: (transfer none): @string */ GString * g_string_insert_unichar (GString *string, @@ -903,7 +885,7 @@ g_string_insert_unichar (GString *string, * * Overwrites part of a string, lengthening it if necessary. * - * Returns: @string + * Returns: (transfer none): @string * * Since: 2.14 */ @@ -926,7 +908,7 @@ g_string_overwrite (GString *string, * Overwrites part of a string, lengthening it if necessary. * This function will work with embedded nuls. * - * Returns: @string + * Returns: (transfer none): @string * * Since: 2.14 */ @@ -975,7 +957,7 @@ g_string_overwrite_len (GString *string, * Removes @len bytes from a #GString, starting at position @pos. * The rest of the #GString is shifted down to fill the gap. * - * Returns: @string + * Returns: (transfer none): @string */ GString * g_string_erase (GString *string, @@ -1009,7 +991,7 @@ g_string_erase (GString *string, * * Converts all uppercase ASCII letters to lowercase ASCII letters. * - * Returns: passed-in @string pointer, with all the + * Returns: (transfer none): passed-in @string pointer, with all the * uppercase characters converted to lowercase in place, * with semantics that exactly match g_ascii_tolower(). */ @@ -1040,7 +1022,7 @@ g_string_ascii_down (GString *string) * * Converts all lowercase ASCII letters to uppercase ASCII letters. * - * Returns: passed-in @string pointer, with all the + * Returns: (transfer none): passed-in @string pointer, with all the * lowercase characters converted to uppercase in place, * with semantics that exactly match g_ascii_toupper(). */ @@ -1071,7 +1053,7 @@ g_string_ascii_up (GString *string) * * Converts a #GString to lowercase. * - * Returns: the #GString + * Returns: (transfer none): the #GString * * Deprecated:2.2: This function uses the locale-specific * tolower() function, which is almost never the right thing. @@ -1105,7 +1087,7 @@ g_string_down (GString *string) * * Converts a #GString to uppercase. * - * Returns: @string + * Returns: (transfer none): @string * * Deprecated:2.2: This function uses the locale-specific * toupper() function, which is almost never the right thing. diff --git a/glib/gtester-report b/glib/gtester-report index 5bf076c..b910284 100755 --- a/glib/gtester-report +++ b/glib/gtester-report @@ -306,20 +306,20 @@ class HTMLReportWriter(ReportWriter): if binary.success_cases: oklink = 'href="javascript:toggle_display (\'ResultTable\', \'tr\', \'b%u_\', \'success\')"' % self.bcounter if real_cases != 0: - self.oprint ('ER\n' % erlink) - self.oprint ('OK\n' % oklink) - self.oprint ('\n') - perc = binary.success_cases * 100.0 / real_cases - pcolor = { - 100 : 'bgcolor="lightgreen"', - 0 : 'bgcolor="red"', - }.get (int (perc), 'bgcolor="yellow"') - self.oprint ('%.2f%%\n' % (pcolor, perc)) - self.oprint ('\n') + self.oprint ('ER\n' % erlink) + self.oprint ('OK\n' % oklink) + self.oprint ('\n') + perc = binary.success_cases * 100.0 / real_cases + pcolor = { + 100 : 'bgcolor="lightgreen"', + 0 : 'bgcolor="red"', + }.get (int (perc), 'bgcolor="yellow"') + self.oprint ('%.2f%%\n' % (pcolor, perc)) + self.oprint ('\n') else: - self.oprint ('Empty\n') - self.oprint ('\n') - self.oprint ('\n') + self.oprint ('Empty\n') + self.oprint ('\n') + self.oprint ('\n') for tc in binary.testcases: self.handle_testcase (tc, binary) def handle_totals (self): @@ -464,7 +464,7 @@ def parse_opts(): " Needs python-subunit]") options, files = parser.parse_args() if options.version: - print parser.epilog + print(parser.epilog) return None, None if len(files) != 1: parser.error("Must supply a log file to parse.") diff --git a/glib/gtestutils.c b/glib/gtestutils.c index be60e74..5b91505 100644 --- a/glib/gtestutils.c +++ b/glib/gtestutils.c @@ -88,11 +88,11 @@ * "assertions", which consists of running the test_assertions function. * * In addition to the traditional g_assert(), the test framework provides - * an extended set of assertions for string and numerical comparisons: - * g_assert_cmpfloat(), g_assert_cmpint(), g_assert_cmpuint(), - * g_assert_cmphex(), g_assert_cmpstr(). The advantage of these variants - * over plain g_assert() is that the assertion messages can be more - * elaborate, and include the values of the compared entities. + * an extended set of assertions for comparisons: g_assert_cmpfloat(), + * g_assert_cmpint(), g_assert_cmpuint(), g_assert_cmphex(), + * g_assert_cmpstr(), and g_assert_cmpmem(). The advantage of these + * variants over plain g_assert() is that the assertion messages can be + * more elaborate, and include the values of the compared entities. * * GLib ships with two utilities called [gtester][gtester] and * [gtester-report][gtester-report] to facilitate running tests and producing @@ -545,6 +545,29 @@ */ /** + * g_assert_cmpmem: + * @m1: pointer to a buffer + * @l1: length of @m1 + * @m2: pointer to another buffer + * @l2: length of @m2 + * + * Debugging macro to compare memory regions. If the comparison fails, + * an error message is logged and the application is either terminated + * or the testcase marked as failed. + * + * The effect of `g_assert_cmpmem (m1, l1, m2, l2)` is + * the same as `g_assert_true (l1 == l2 && memcmp (m1, m2, l1) == 0)`. + * The advantage of this macro is that it can produce a message that + * includes the actual values of @l1 and @l2. + * + * |[ + * g_assert_cmpmem (buf->data, buf->len, expected, sizeof (expected)); + * ]| + * + * Since: 2.46 + */ + +/** * g_assert_no_error: * @err: a #GError, possibly %NULL * @@ -645,6 +668,12 @@ typedef enum { G_TEST_RUN_FAILURE, G_TEST_RUN_INCOMPLETE } GTestResult; +static const char * const g_test_result_names[] = { + "OK", + "SKIP", + "FAIL", + "TODO" +}; /* --- variables --- */ static int test_log_fd = -1; @@ -657,6 +686,7 @@ static gchar *test_run_name = ""; static GSList **test_filename_free_list; static guint test_run_forks = 0; static guint test_run_count = 0; +static guint test_count = 0; static guint test_skipped_count = 0; static GTestResult test_run_success = G_TEST_RUN_FAILURE; static gchar *test_run_msg = NULL; @@ -764,6 +794,7 @@ g_test_log (GTestLogType lbit, guint n_args, long double *largs) { + GTestResult result; gboolean fail; GTestLogMsg msg; gchar *astrings[3] = { NULL, NULL, NULL }; @@ -783,6 +814,8 @@ g_test_log (GTestLogType lbit, { if (string1[0] != 0) g_print ("# Start of %s tests\n", string1); + else + g_print ("1..%d\n", test_count); } break; case G_TEST_LOG_STOP_SUITE: @@ -790,33 +823,32 @@ g_test_log (GTestLogType lbit, { if (string1[0] != 0) g_print ("# End of %s tests\n", string1); - else - g_print ("1..%d\n", test_run_count); } break; case G_TEST_LOG_STOP_CASE: - fail = largs[0] != G_TEST_RUN_SUCCESS && largs[0] != G_TEST_RUN_SKIPPED; + result = largs[0]; + fail = result == G_TEST_RUN_FAILURE; if (test_tap_log) { g_print ("%s %d %s", fail ? "not ok" : "ok", test_run_count, string1); - if (largs[0] == G_TEST_RUN_INCOMPLETE) + if (result == G_TEST_RUN_INCOMPLETE) g_print (" # TODO %s\n", string2 ? string2 : ""); - else if (largs[0] == G_TEST_RUN_SKIPPED) + else if (result == G_TEST_RUN_SKIPPED) g_print (" # SKIP %s\n", string2 ? string2 : ""); else g_print ("\n"); } else if (g_test_verbose()) - g_print ("GTest: result: %s\n", fail ? "FAIL" : "OK"); + g_print ("GTest: result: %s\n", g_test_result_names[result]); else if (!g_test_quiet()) - g_print ("%s\n", fail ? "FAIL" : "OK"); + g_print ("%s\n", g_test_result_names[result]); if (fail && test_mode_fatal) { if (test_tap_log) g_print ("Bail out!\n"); abort(); } - if (largs[0] == G_TEST_RUN_SKIPPED) + if (result == G_TEST_RUN_SKIPPED) test_skipped_count++; break; case G_TEST_LOG_MIN_RESULT: @@ -1142,6 +1174,17 @@ g_test_init (int *argc, if (!g_get_prgname() && !no_g_set_prgname) g_set_prgname ((*argv)[0]); + /* sanity check */ + if (test_tap_log) + { + if (test_paths || test_paths_skipped || test_startup_skip_count) + { + g_printerr ("%s: options that skip some tests are incompatible with --tap\n", + (*argv)[0]); + exit (1); + } + } + /* verify GRand reliability, needed for reliable seeds */ if (1) { @@ -1627,9 +1670,18 @@ find_suite (gconstpointer l, gconstpointer s) return strcmp (suite->name, str); } +static gint +find_case (gconstpointer l, gconstpointer s) +{ + const GTestCase *tc = l; + const gchar *str = s; + + return strcmp (tc->name, str); +} + /** * GTestFixtureFunc: - * @fixture: the test fixture + * @fixture: (not nullable): the test fixture * @user_data: the data provided when registering the test * * The type used for functions that operate on test fixtures. This is @@ -1692,7 +1744,12 @@ g_test_add_vtable (const char *testpath, } else /* islast */ { - GTestCase *tc = g_test_create_case (seg, data_size, test_data, data_setup, fixture_test_func, data_teardown); + GTestCase *tc; + + if (g_slist_find_custom (suite->cases, seg, find_case)) + g_error ("duplicate test case path: %s", testpath); + + tc = g_test_create_case (seg, data_size, test_data, data_setup, fixture_test_func, data_teardown); g_test_suite_add (suite, tc); } } @@ -1998,7 +2055,7 @@ g_test_suite_add (GTestSuite *suite, g_return_if_fail (suite != NULL); g_return_if_fail (test_case != NULL); - suite->cases = g_slist_prepend (suite->cases, test_case); + suite->cases = g_slist_append (suite->cases, test_case); } /** @@ -2017,7 +2074,7 @@ g_test_suite_add_suite (GTestSuite *suite, g_return_if_fail (suite != NULL); g_return_if_fail (nestedsuite != NULL); - suite->suites = g_slist_prepend (suite->suites, nestedsuite); + suite->suites = g_slist_append (suite->suites, nestedsuite); } /** @@ -2069,36 +2126,13 @@ g_test_queue_destroy (GDestroyNotify destroy_func, static gboolean test_case_run (GTestCase *tc) { - gchar *old_name = test_run_name, *old_base = g_strdup (test_uri_base); + gchar *old_base = g_strdup (test_uri_base); GSList **old_free_list, *filename_free_list = NULL; gboolean success = G_TEST_RUN_SUCCESS; old_free_list = test_filename_free_list; test_filename_free_list = &filename_free_list; - test_run_name = g_strconcat (old_name, "/", tc->name, NULL); - if (strstr (test_run_name, "/subprocess")) - { - GSList *iter; - gboolean found = FALSE; - - for (iter = test_paths; iter; iter = iter->next) - { - if (!strcmp (test_run_name, iter->data)) - { - found = TRUE; - break; - } - } - - if (!found) - { - if (g_test_verbose ()) - g_print ("GTest: skipping: %s\n", test_run_name); - goto out; - } - } - if (++test_run_count <= test_startup_skip_count) g_test_log (G_TEST_LOG_SKIP_CASE, test_run_name, NULL, 0, NULL); else if (test_run_list) @@ -2145,11 +2179,8 @@ test_case_run (GTestCase *tc) g_timer_destroy (test_run_timer); } - out: g_slist_free_full (filename_free_list, g_free); test_filename_free_list = old_free_list; - g_free (test_run_name); - test_run_name = old_name; g_free (test_uri_base); test_uri_base = old_base; @@ -2157,46 +2188,72 @@ test_case_run (GTestCase *tc) success == G_TEST_RUN_SKIPPED); } +static gboolean +path_has_prefix (const char *path, + const char *prefix) +{ + int prefix_len = strlen (prefix); + + return (strncmp (path, prefix, prefix_len) == 0 && + (path[prefix_len] == '\0' || + path[prefix_len] == '/')); +} + +static gboolean +test_should_run (const char *test_path, + const char *cmp_path) +{ + if (strstr (test_run_name, "/subprocess")) + { + if (g_strcmp0 (test_path, cmp_path) == 0) + return TRUE; + + if (g_test_verbose ()) + g_print ("GTest: skipping: %s\n", test_run_name); + return FALSE; + } + + return !cmp_path || path_has_prefix (test_path, cmp_path); +} + +/* Recurse through @suite, running tests matching @path (or all tests + * if @path is %NULL). + */ static int g_test_run_suite_internal (GTestSuite *suite, const char *path) { - guint n_bad = 0, l; - gchar *rest, *old_name = test_run_name; - GSList *slist, *reversed; + guint n_bad = 0; + gchar *old_name = test_run_name; + GSList *iter; g_return_val_if_fail (suite != NULL, -1); g_test_log (G_TEST_LOG_START_SUITE, suite->name, NULL, 0, NULL); - while (path[0] == '/') - path++; - l = strlen (path); - rest = strchr (path, '/'); - l = rest ? MIN (l, rest - path) : l; - test_run_name = suite->name[0] == 0 ? g_strdup (test_run_name) : g_strconcat (old_name, "/", suite->name, NULL); - reversed = g_slist_reverse (g_slist_copy (suite->cases)); - for (slist = reversed; slist; slist = slist->next) + for (iter = suite->cases; iter; iter = iter->next) { - GTestCase *tc = slist->data; - guint n = l ? strlen (tc->name) : 0; - if (l == n && !rest && strncmp (path, tc->name, n) == 0) + GTestCase *tc = iter->data; + + test_run_name = g_build_path ("/", old_name, tc->name, NULL); + if (test_should_run (test_run_name, path)) { if (!test_case_run (tc)) n_bad++; } + g_free (test_run_name); } - g_slist_free (reversed); - reversed = g_slist_reverse (g_slist_copy (suite->suites)); - for (slist = reversed; slist; slist = slist->next) + + for (iter = suite->suites; iter; iter = iter->next) { - GTestSuite *ts = slist->data; - guint n = l ? strlen (ts->name) : 0; - if (l == n && strncmp (path, ts->name, n) == 0) - n_bad += g_test_run_suite_internal (ts, rest ? rest : ""); + GTestSuite *ts = iter->data; + + test_run_name = g_build_path ("/", old_name, ts->name, NULL); + if (!path || path_has_prefix (path, test_run_name)) + n_bad += g_test_run_suite_internal (ts, path); + g_free (test_run_name); } - g_slist_free (reversed); - g_free (test_run_name); + test_run_name = old_name; g_test_log (G_TEST_LOG_STOP_SUITE, suite->name, NULL, 0, NULL); @@ -2204,6 +2261,33 @@ g_test_run_suite_internal (GTestSuite *suite, return n_bad; } +static int +g_test_suite_count (GTestSuite *suite) +{ + int n = 0; + GSList *iter; + + g_return_val_if_fail (suite != NULL, -1); + + for (iter = suite->cases; iter; iter = iter->next) + { + GTestCase *tc = iter->data; + + if (strcmp (tc->name, "subprocess") != 0) + n++; + } + + for (iter = suite->suites; iter; iter = iter->next) + { + GTestSuite *ts = iter->data; + + if (strcmp (ts->name, "subprocess") != 0) + n += g_test_suite_count (ts); + } + + return n; +} + /** * g_test_run_suite: * @suite: a #GTestSuite @@ -2224,38 +2308,27 @@ g_test_run_suite_internal (GTestSuite *suite, int g_test_run_suite (GTestSuite *suite) { - GSList *my_test_paths; - guint n_bad = 0; + int n_bad = 0; - g_return_val_if_fail (g_test_config_vars->test_initialized, -1); g_return_val_if_fail (g_test_run_once == TRUE, -1); g_test_run_once = FALSE; + test_count = g_test_suite_count (suite); - if (test_paths) - my_test_paths = g_slist_copy (test_paths); - else - my_test_paths = g_slist_prepend (NULL, ""); + test_run_name = g_strdup_printf ("/%s", suite->name); - while (my_test_paths) + if (test_paths) { - const char *rest, *path = my_test_paths->data; - guint l, n = strlen (suite->name); - my_test_paths = g_slist_delete_link (my_test_paths, my_test_paths); - while (path[0] == '/') - path++; - if (!n) /* root suite, run unconditionally */ - { - n_bad += g_test_run_suite_internal (suite, path); - continue; - } - /* regular suite, match path */ - rest = strchr (path, '/'); - l = strlen (path); - l = rest ? MIN (l, rest - path) : l; - if ((!l || l == n) && strncmp (path, suite->name, n) == 0) - n_bad += g_test_run_suite_internal (suite, rest ? rest : ""); + GSList *iter; + + for (iter = test_paths; iter; iter = iter->next) + n_bad += g_test_run_suite_internal (suite, iter->data); } + else + n_bad = g_test_run_suite_internal (suite, NULL); + + g_free (test_run_name); + test_run_name = NULL; return n_bad; } @@ -2356,6 +2429,14 @@ g_assertion_message (const char *domain, abort (); } +/** + * g_assertion_message_expr: (skip) + * @domain: (nullable): + * @file: + * @line: + * @func: + * @expr: (nullable): + */ void g_assertion_message_expr (const char *domain, const char *file, @@ -2822,7 +2903,7 @@ g_test_trap_fork (guint64 usec_timeout, * * |[ * static void - * test_create_large_object_subprocess (void) + * test_create_large_object (void) * { * if (g_test_subprocess ()) * { @@ -2964,6 +3045,24 @@ g_test_trap_reached_timeout (void) return test_trap_last_status == G_TEST_STATUS_TIMED_OUT; } +static gboolean +log_child_output (const gchar *process_id) +{ + gchar *escaped; + + escaped = g_strescape (test_trap_last_stdout, NULL); + g_test_message ("child process (%s) stdout: \"%s\"", process_id, escaped); + g_free (escaped); + + escaped = g_strescape (test_trap_last_stderr, NULL); + g_test_message ("child process (%s) stderr: \"%s\"", process_id, escaped); + g_free (escaped); + + /* so we can use short-circuiting: + * logged_child_output = logged_child_output || log_child_output (...) */ + return TRUE; +} + void g_test_trap_assertions (const char *domain, const char *file, @@ -2975,6 +3074,7 @@ g_test_trap_assertions (const char *domain, gboolean must_pass = assertion_flags == 0; gboolean must_fail = assertion_flags == 1; gboolean match_result = 0 == (assertion_flags & 1); + gboolean logged_child_output = FALSE; const char *stdout_pattern = (assertion_flags & 2) ? pattern : NULL; const char *stderr_pattern = (assertion_flags & 4) ? pattern : NULL; const char *match_error = match_result ? "failed to match" : "contains invalid match"; @@ -2997,25 +3097,41 @@ g_test_trap_assertions (const char *domain, if (must_pass && !g_test_trap_has_passed()) { - char *msg = g_strdup_printf ("child process (%s) failed unexpectedly", process_id); + char *msg; + + logged_child_output = logged_child_output || log_child_output (process_id); + + msg = g_strdup_printf ("child process (%s) failed unexpectedly", process_id); g_assertion_message (domain, file, line, func, msg); g_free (msg); } if (must_fail && g_test_trap_has_passed()) { - char *msg = g_strdup_printf ("child process (%s) did not fail as expected", process_id); + char *msg; + + logged_child_output = logged_child_output || log_child_output (process_id); + + msg = g_strdup_printf ("child process (%s) did not fail as expected", process_id); g_assertion_message (domain, file, line, func, msg); g_free (msg); } if (stdout_pattern && match_result == !g_pattern_match_simple (stdout_pattern, test_trap_last_stdout)) { - char *msg = g_strdup_printf ("stdout of child process (%s) %s: %s", process_id, match_error, stdout_pattern); + char *msg; + + logged_child_output = logged_child_output || log_child_output (process_id); + + msg = g_strdup_printf ("stdout of child process (%s) %s: %s", process_id, match_error, stdout_pattern); g_assertion_message (domain, file, line, func, msg); g_free (msg); } if (stderr_pattern && match_result == !g_pattern_match_simple (stderr_pattern, test_trap_last_stderr)) { - char *msg = g_strdup_printf ("stderr of child process (%s) %s: %s", process_id, match_error, stderr_pattern); + char *msg; + + logged_child_output = logged_child_output || log_child_output (process_id); + + msg = g_strdup_printf ("stderr of child process (%s) %s: %s", process_id, match_error, stderr_pattern); g_assertion_message (domain, file, line, func, msg); g_free (msg); } diff --git a/glib/gtestutils.h b/glib/gtestutils.h index 6e1d786..d788eb9 100644 --- a/glib/gtestutils.h +++ b/glib/gtestutils.h @@ -68,6 +68,16 @@ typedef void (*GTestFixtureFunc) (gpointer fixture, g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ #n1 " " #cmp " " #n2, __n1, #cmp, __n2, 'f'); \ } G_STMT_END +#define g_assert_cmpmem(m1, l1, m2, l2) G_STMT_START {\ + gconstpointer __m1 = m1, __m2 = m2; \ + int __l1 = l1, __l2 = l2; \ + if (__l1 != __l2) \ + g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + #l1 " (len(" #m1 ")) == " #l2 " (len(" #m2 "))", __l1, "==", __l2, 'i'); \ + else if (memcmp (__m1, __m2, __l1) != 0) \ + g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ + "assertion failed (" #m1 " == " #m2 ")"); \ + } G_STMT_END #define g_assert_no_error(err) G_STMT_START { \ if (err) \ g_assertion_message_error (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \ @@ -253,7 +263,11 @@ GLIB_AVAILABLE_IN_ALL double g_test_rand_double_range (double range_start, double range_end); -/* semi-internal API */ +/* + * semi-internal API: non-documented symbols with stable ABI. You + * should use the non-internal helper macros instead. However, for + * compatibility reason, you may use this semi-internal API. + */ GLIB_AVAILABLE_IN_ALL GTestCase* g_test_create_case (const char *test_name, gsize data_size, @@ -274,7 +288,6 @@ void g_test_suite_add_suite (GTestSuite *suite, 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, diff --git a/glib/gthread-posix.c b/glib/gthread-posix.c index ae5d805..bd3c9a1 100644 --- a/glib/gthread-posix.c +++ b/glib/gthread-posix.c @@ -1159,7 +1159,9 @@ g_system_thread_new (GThreadFunc thread_func, if (stack_size) { #ifdef _SC_THREAD_STACK_MIN - stack_size = MAX (sysconf (_SC_THREAD_STACK_MIN), stack_size); + long min_stack_size = sysconf (_SC_THREAD_STACK_MIN); + if (min_stack_size >= 0) + stack_size = MAX (min_stack_size, stack_size); #endif /* _SC_THREAD_STACK_MIN */ /* No error check here, because some systems can't do it and * we simply don't want threads to fail because of that. */ diff --git a/glib/gthread.c b/glib/gthread.c index 6419006..b9ae4df 100644 --- a/glib/gthread.c +++ b/glib/gthread.c @@ -140,6 +140,20 @@ * and #GAsyncQueue, which are thread-safe and need no further * application-level locking to be accessed from multiple threads. * Most refcounting functions such as g_object_ref() are also thread-safe. + * + * A common use for #GThreads is to move a long-running blocking operation out + * of the main thread and into a worker thread. For GLib functions, such as + * single GIO operations, this is not necessary, and complicates the code. + * Instead, the `…_async()` version of the function should be used from the main + * thread, eliminating the need for locking and synchronisation between multiple + * threads. If an operation does need to be moved to a worker thread, consider + * using g_task_run_in_thread(), or a #GThreadPool. #GThreadPool is often a + * better choice than #GThread, as it handles thread reuse and task queueing; + * #GTask uses this internally. + * + * However, if multiple blocking operations need to be performed in sequence, + * and it is not possible to use #GTask for them, moving them to a worker thread + * can clarify the code. */ /* G_LOCK Documentation {{{1 ---------------------------------------------- */ @@ -601,7 +615,8 @@ g_once_impl (GOnce *once, /** * g_once_init_enter: - * @location: location of a static initializable variable containing 0 + * @location: (not nullable): location of a static initializable variable + * containing 0 * * Function to be called when starting a critical initialization * section. The argument @location must point to a static @@ -655,7 +670,8 @@ gboolean /** * g_once_init_leave: - * @location: location of a static initializable variable containing 0 + * @location: (not nullable): location of a static initializable variable + * containing 0 * @result: new non-0 value for *@value_location * * Counterpart to g_once_init_enter(). Expects a location of a static @@ -785,6 +801,10 @@ g_thread_proxy (gpointer data) * If the thread can not be created the program aborts. See * g_thread_try_new() if you want to attempt to deal with failures. * + * If you are using threads to offload (potentially many) short-lived tasks, + * #GThreadPool may be more appropriate than manually spawning and tracking + * multiple #GThreads. + * * To free the struct returned by this function, use g_thread_unref(). * Note that g_thread_join() implicitly unrefs the #GThread as well. * diff --git a/glib/gthreadpool.c b/glib/gthreadpool.c index dad424d..725f627 100644 --- a/glib/gthreadpool.c +++ b/glib/gthreadpool.c @@ -963,6 +963,36 @@ g_thread_pool_set_sort_function (GThreadPool *pool, } /** + * g_thread_pool_move_to_front: + * @pool: a #GThreadPool + * @data: an unprocessed item in the pool + * + * Moves the item to the front of the queue of unprocessed + * items, so that it will be processed next. + * + * Returns: %TRUE if the item was found and moved + * + * Since: 2.46 + */ +gboolean +g_thread_pool_move_to_front (GThreadPool *pool, + gpointer data) +{ + GRealThreadPool *real = (GRealThreadPool*) pool; + gboolean found; + + g_async_queue_lock (real->queue); + + found = g_async_queue_remove_unlocked (real->queue, data); + if (found) + g_async_queue_push_front_unlocked (real->queue, data); + + g_async_queue_unlock (real->queue); + + return found; +} + +/** * g_thread_pool_set_max_idle_time: * @interval: the maximum @interval (in milliseconds) * a thread can be idle diff --git a/glib/gthreadpool.h b/glib/gthreadpool.h index b46987d..95c10a0 100644 --- a/glib/gthreadpool.h +++ b/glib/gthreadpool.h @@ -65,6 +65,10 @@ GLIB_AVAILABLE_IN_ALL void g_thread_pool_set_sort_function (GThreadPool *pool, GCompareDataFunc func, gpointer user_data); +GLIB_AVAILABLE_IN_2_46 +gboolean g_thread_pool_move_to_front (GThreadPool *pool, + gpointer data); + GLIB_AVAILABLE_IN_ALL gboolean g_thread_pool_set_max_threads (GThreadPool *pool, gint max_threads, diff --git a/glib/gtranslit.c b/glib/gtranslit.c index 5831456..c9f07f8 100644 --- a/glib/gtranslit.c +++ b/glib/gtranslit.c @@ -323,6 +323,8 @@ get_default_item_id (void) * @from_locale. * * Returns: a string in plain ASCII + * + * Since: 2.40 **/ gchar * g_str_to_ascii (const gchar *str, diff --git a/glib/gtrashstack.c b/glib/gtrashstack.c index 896ed6f..3a0d0bf 100644 --- a/glib/gtrashstack.c +++ b/glib/gtrashstack.c @@ -24,6 +24,8 @@ #include "config.h" +#include "gtrashstack.h" + /** * SECTION:trash_stack * @title: Trash Stacks @@ -36,6 +38,11 @@ * * There is no function to create a #GTrashStack. A %NULL #GTrashStack* * is a perfectly valid empty stack. + * + * There is no longer any good reason to use #GTrashStack. If you have + * extra pieces of memory, free() them and allocate them again later. + * + * Deprecated: 2.48: #GTrashStack is deprecated without replacement */ /** @@ -46,15 +53,27 @@ * * Each piece of memory that is pushed onto the stack * is cast to a GTrashStack*. + * + * Deprecated: 2.48: #GTrashStack is deprecated without replacement */ /** * g_trash_stack_push: * @stack_p: a #GTrashStack - * @data_p: the piece of memory to push on the stack + * @data_p: (not nullable): the piece of memory to push on the stack * * Pushes a piece of memory onto a #GTrashStack. + * Deprecated: 2.48: #GTrashStack is deprecated without replacement */ +void +g_trash_stack_push (GTrashStack **stack_p, + gpointer data_p) +{ + GTrashStack *data = (GTrashStack *) data_p; + + data->next = *stack_p; + *stack_p = data; +} /** * g_trash_stack_pop: @@ -63,7 +82,25 @@ * Pops a piece of memory off a #GTrashStack. * * Returns: the element at the top of the stack + * Deprecated: 2.48: #GTrashStack is deprecated without replacement */ +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_trash_stack_peek: @@ -73,7 +110,17 @@ * which may be %NULL. * * Returns: the element at the top of the stack + * Deprecated: 2.48: #GTrashStack is deprecated without replacement */ +gpointer +g_trash_stack_peek (GTrashStack **stack_p) +{ + GTrashStack *data; + + data = *stack_p; + + return data; +} /** * g_trash_stack_height: @@ -85,8 +132,16 @@ * where N denotes the number of items on the stack. * * Returns: the height of the stack + * Deprecated: 2.48: #GTrashStack is deprecated without replacement */ +guint +g_trash_stack_height (GTrashStack **stack_p) +{ + GTrashStack *data; + guint i = 0; -#define G_IMPLEMENT_INLINES 1 -#define __G_TRASH_STACK_C__ -#include "gtrashstack.h" + for (data = *stack_p; data; data = data->next) + i++; + + return i; +} diff --git a/glib/gtrashstack.h b/glib/gtrashstack.h index 3e513a0..c1150d5 100644 --- a/glib/gtrashstack.h +++ b/glib/gtrashstack.h @@ -39,63 +39,16 @@ 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__ */ +GLIB_DEPRECATED_IN_2_48 +void g_trash_stack_push (GTrashStack **stack_p, + gpointer data_p); +GLIB_DEPRECATED_IN_2_48 +gpointer g_trash_stack_pop (GTrashStack **stack_p); +GLIB_DEPRECATED_IN_2_48 +gpointer g_trash_stack_peek (GTrashStack **stack_p); +GLIB_DEPRECATED_IN_2_48 +guint g_trash_stack_height (GTrashStack **stack_p); G_END_DECLS -#endif /* __G_UTILS_H__ */ +#endif /* __G_TRASH_STACK_H_ */ diff --git a/glib/gtree.c b/glib/gtree.c index 7fb41c2..6978d06 100644 --- a/glib/gtree.c +++ b/glib/gtree.c @@ -853,8 +853,8 @@ g_tree_lookup (GTree *tree, * g_tree_lookup_extended: * @tree: a #GTree * @lookup_key: the key to look up - * @orig_key: returns the original key - * @value: returns the value associated with the key + * @orig_key: (optional) (nullable): returns the original key + * @value: (optional) (nullable): returns the value associated with the key * * Looks up a key in the #GTree, returning the original key and the * associated value. This is useful if you need to free the memory diff --git a/glib/gtypes.h b/glib/gtypes.h index 0e73b40..c20217b 100644 --- a/glib/gtypes.h +++ b/glib/gtypes.h @@ -58,21 +58,21 @@ typedef float gfloat; typedef double gdouble; /* Define min and max constants for the fixed size numerical types */ -#define G_MININT8 ((gint8) 0x80) +#define G_MININT8 ((gint8) -0x80) #define G_MAXINT8 ((gint8) 0x7f) #define G_MAXUINT8 ((guint8) 0xff) -#define G_MININT16 ((gint16) 0x8000) +#define G_MININT16 ((gint16) -0x8000) #define G_MAXINT16 ((gint16) 0x7fff) #define G_MAXUINT16 ((guint16) 0xffff) -#define G_MININT32 ((gint32) 0x80000000) +#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_MININT64 ((gint64) G_GINT64_CONSTANT(-0x8000000000000000)) #define G_MAXINT64 G_GINT64_CONSTANT(0x7fffffffffffffff) -#define G_MAXUINT64 G_GINT64_CONSTANT(0xffffffffffffffffU) +#define G_MAXUINT64 G_GUINT64_CONSTANT(0xffffffffffffffff) typedef void* gpointer; typedef const void *gconstpointer; @@ -371,7 +371,6 @@ typedef const gchar * (*GTranslateFunc) (const gchar *str, #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)) @@ -379,6 +378,62 @@ typedef const gchar * (*GTranslateFunc) (const gchar *str, #define g_htonl(val) (GUINT32_TO_BE (val)) #define g_htons(val) (GUINT16_TO_BE (val)) +/* Overflow-checked unsigned integer arithmetic + */ +#ifndef _GLIB_TEST_OVERFLOW_FALLBACK +#if __GNUC__ >= 5 +#define _GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS +#elif __has_builtin(__builtin_uadd_overflow) +#define _GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS +#endif +#endif + +#define g_uint_checked_add(dest, a, b) \ + _GLIB_CHECKED_ADD_U32(dest, a, b) +#define g_uint_checked_mul(dest, a, b) \ + _GLIB_CHECKED_MUL_U32(dest, a, b) + +#define g_uint64_checked_add(dest, a, b) \ + _GLIB_CHECKED_ADD_U64(dest, a, b) +#define g_uint64_checked_mul(dest, a, b) \ + _GLIB_CHECKED_MUL_U64(dest, a, b) + +#if GLIB_SIZEOF_SIZE_T == 8 +#define g_size_checked_add(dest, a, b) \ + _GLIB_CHECKED_ADD_U64(dest, a, b) +#define g_size_checked_mul(dest, a, b) \ + _GLIB_CHECKED_MUL_U64(dest, a, b) +#else +#define g_size_checked_add(dest, a, b) \ + _GLIB_CHECKED_ADD_U32(dest, a, b) +#define g_size_checked_mul(dest, a, b) \ + _GLIB_CHECKED_MUL_U32(dest, a, b) +#endif + +/* The names of the following inlines are private. Use the macro + * definitions above. + */ +#ifdef _GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS +static inline gboolean _GLIB_CHECKED_ADD_U32 (guint32 *dest, guint32 a, guint32 b) { + return !__builtin_uadd_overflow(a, b, dest); } +static inline gboolean _GLIB_CHECKED_MUL_U32 (guint32 *dest, guint32 a, guint32 b) { + return !__builtin_umul_overflow(a, b, dest); } +static inline gboolean _GLIB_CHECKED_ADD_U64 (guint64 *dest, guint64 a, guint64 b) { + G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64)); + return !__builtin_uaddll_overflow(a, b, (unsigned long long *) dest); } +static inline gboolean _GLIB_CHECKED_MUL_U64 (guint64 *dest, guint64 a, guint64 b) { + return !__builtin_umulll_overflow(a, b, (unsigned long long *) dest); } +#else +static inline gboolean _GLIB_CHECKED_ADD_U32 (guint32 *dest, guint32 a, guint32 b) { + *dest = a + b; return *dest >= a; } +static inline gboolean _GLIB_CHECKED_MUL_U32 (guint32 *dest, guint32 a, guint32 b) { + *dest = a * b; return !a || *dest / a == b; } +static inline gboolean _GLIB_CHECKED_ADD_U64 (guint64 *dest, guint64 a, guint64 b) { + *dest = a + b; return *dest >= a; } +static inline gboolean _GLIB_CHECKED_MUL_U64 (guint64 *dest, guint64 a, guint64 b) { + *dest = a * b; return !a || *dest / a == b; } +#endif + /* IEEE Standard 754 Single Precision Storage Format (gfloat): * * 31 30 23 22 0 diff --git a/glib/gunibreak.h b/glib/gunibreak.h index ec30d6f..40e35f8 100644 --- a/glib/gunibreak.h +++ b/glib/gunibreak.h @@ -7,7 +7,7 @@ #include #include -#define G_UNICODE_DATA_VERSION "7.0.0" +#define G_UNICODE_DATA_VERSION "8.0.0" #define G_UNICODE_LAST_CHAR 0x10FFFF @@ -1017,6 +1017,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -1040,8 +1041,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, @@ -1311,7 +1311,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN @@ -1492,7 +1492,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -1624,7 +1624,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -2476,11 +2476,11 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, { /* page 20, index 19 */ @@ -3868,7 +3868,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_POSTFIX, - G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, + G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, @@ -3970,7 +3970,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AMBIGUOUS, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, @@ -4150,7 +4150,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_INSEPARABLE, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -5059,8 +5059,8 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -6475,7 +6475,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -6596,7 +6596,6 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -6612,11 +6611,12 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -6780,7 +6780,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_BEFORE, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, { /* page 169, index 52 */ @@ -7091,54 +7091,54 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -13176,7 +13176,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, @@ -14439,22 +14439,22 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC }, { /* page 265, index 111 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -14551,40 +14551,40 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC }, { /* page 266, index 112 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, @@ -14908,70 +14908,70 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC }, { /* page 270, index 115 */ G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -15332,8 +15332,8 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AFTER, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, @@ -15341,10 +15341,9 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_BEFORE, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -15354,12 +15353,12 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, { /* page 274, index 118 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -15425,27 +15424,27 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -15491,7 +15490,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, { /* page 275, index 119 */ - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -15531,7 +15530,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, @@ -15851,17 +15850,15 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_EXCLAMATION, G_UNICODE_BREAK_EXCLAMATION, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AFTER, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -15878,7 +15875,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_BREAK_UNKNOWN }, { /* page 278, index 122 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -16010,13 +16007,39 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 280, index 123 */ - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + { /* page 279, index 123 */ + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -16091,56 +16114,11 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC - }, - { /* page 282, index 124 */ G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -16157,6 +16135,9 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN + }, + { /* page 280, index 124 */ G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -16265,27 +16246,174 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN - }, - { /* page 291, index 125 */ - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 282, index 125 */ + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 291, index 126 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -16347,7 +16475,6 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -16400,7 +16527,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 292, index 126 */ + { /* page 292, index 127 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -16464,6 +16591,136 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 293, index 128 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -16529,7 +16786,161 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 306, index 127 */ + { /* page 306, index 129 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 307, index 130 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -16566,6 +16977,8 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, + G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -16574,9 +16987,6 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, - G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, - G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -16595,10 +17005,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, - G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -16637,6 +17044,9 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + }, + { /* page 308, index 131 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -16657,9 +17067,117 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 307, index 128 */ + { /* page 325, index 132 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -16720,8 +17238,6 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_OPEN_PUNCTUATION, - G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -16764,6 +17280,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_OPEN_PUNCTUATION, G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -16789,7 +17306,19 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC }, - { /* page 308, index 129 */ + { /* page 326, index 133 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -16905,21 +17434,9 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 362, index 130 */ + { /* page 362, index 134 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -17048,7 +17565,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 363, index 131 */ + { /* page 363, index 135 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -17178,7 +17695,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 367, index 132 */ + { /* page 367, index 136 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -17308,7 +17825,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 432, index 133 */ + { /* page 432, index 137 */ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -17438,7 +17955,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 444, index 134 */ + { /* page 444, index 138 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -17568,7 +18085,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 464, index 135 */ + { /* page 464, index 139 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -17698,7 +18215,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 465, index 136 */ + { /* page 465, index 140 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -17810,12 +18327,12 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -17828,7 +18345,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 466, index 137 */ + { /* page 466, index 141 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -17958,7 +18475,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 467, index 138 */ + { /* page 467, index 142 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -18088,7 +18605,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 468, index 139 */ + { /* page 468, index 143 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -18218,7 +18735,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC }, - { /* page 469, index 140 */ + { /* page 469, index 144 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -18348,7 +18865,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC }, - { /* page 470, index 141 */ + { /* page 470, index 145 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -18478,7 +18995,8 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC }, - { /* page 471, index 142 */ + { /* page 471, index 146 */ + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -18580,35 +19098,163 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, + G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC + }, + { /* page 474, index 147 */ + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, + G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, - G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 488, index 143 */ + { /* page 488, index 148 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -18738,7 +19384,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 494, index 144 */ + { /* page 494, index 149 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, @@ -18868,7 +19514,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 496, index 145 */ + { /* page 496, index 150 */ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, @@ -18998,7 +19644,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 497, index 146 */ + { /* page 497, index 151 */ G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, @@ -19128,7 +19774,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR }, - { /* page 498, index 147 */ + { /* page 498, index 152 */ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -19258,7 +19904,10 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 499, index 148 */ + { /* page 499, index 153 */ + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, @@ -19281,8 +19930,6 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, - G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, @@ -19322,7 +19969,6 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, @@ -19362,9 +20008,6 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, - G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, @@ -19383,12 +20026,15 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, + G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC }, - { /* page 500, index 149 */ + { /* page 500, index 154 */ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, @@ -19516,9 +20162,9 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, - G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC }, - { /* page 501, index 150 */ + { /* page 501, index 155 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -19556,9 +20202,9 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, - G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, @@ -19648,7 +20294,9 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC }, - { /* page 502, index 151 */ + { /* page 502, index 156 */ + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, @@ -19682,8 +20330,6 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, - G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, @@ -19753,7 +20399,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, - G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -19778,7 +20424,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 503, index 152 */ + { /* page 503, index 157 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -19908,7 +20554,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 504, index 153 */ + { /* page 504, index 158 */ G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, @@ -20038,7 +20684,137 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 767, index 154 */ + { /* page 505, index 159 */ + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, + G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN + }, + { /* page 767, index 160 */ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, @@ -20168,7 +20944,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 1023, index 155 */ + { /* page 1023, index 161 */ G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, @@ -20298,7 +21074,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 3584, index 156 */ + { /* page 3584, index 162 */ G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, @@ -20428,7 +21204,7 @@ static const gint8 break_property_data[][256] = { G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN }, - { /* page 3585, index 157 */ + { /* page 3585, index 163 */ G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, @@ -20841,10 +21617,10 @@ static const gint16 break_property_table_part1[763] = { 120 /* page 276 */, 121 /* page 277 */, 122 /* page 278 */, + 123 /* page 279 */, + 124 /* page 280 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, - 123 /* page 280 */, - G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, - 124 /* page 282 */, + 125 /* page 282 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, @@ -20853,9 +21629,9 @@ static const gint16 break_property_table_part1[763] = { G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX, - 125 /* page 291 */, - 126 /* page 292 */, - G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + 126 /* page 291 */, + 127 /* page 292 */, + 128 /* page 293 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, @@ -20868,12 +21644,9 @@ static const gint16 break_property_table_part1[763] = { G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX, - 127 /* page 306 */, - 128 /* page 307 */, - 129 /* page 308 */, - G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + 129 /* page 306 */, + 130 /* page 307 */, + 131 /* page 308 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, @@ -20889,6 +21662,9 @@ static const gint16 break_property_table_part1[763] = { G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX, + 132 /* page 325 */, + 133 /* page 326 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, @@ -20924,14 +21700,12 @@ static const gint16 break_property_table_part1[763] = { G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX, - 130 /* page 362 */, - 131 /* page 363 */, - G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + 134 /* page 362 */, + 135 /* page 363 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, - 132 /* page 367 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + 136 /* page 367 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, @@ -20994,9 +21768,9 @@ static const gint16 break_property_table_part1[763] = { G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, - 133 /* page 432 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + 137 /* page 432 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, @@ -21006,9 +21780,9 @@ static const gint16 break_property_table_part1[763] = { G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, - 134 /* page 444 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + 138 /* page 444 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, @@ -21026,18 +21800,19 @@ static const gint16 break_property_table_part1[763] = { G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, - 135 /* page 464 */, - 136 /* page 465 */, - 137 /* page 466 */, - 138 /* page 467 */, - 139 /* page 468 */, - 140 /* page 469 */, - 141 /* page 470 */, - 142 /* page 471 */, - G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + 139 /* page 464 */, + 140 /* page 465 */, + 141 /* page 466 */, + 142 /* page 467 */, + 143 /* page 468 */, + 144 /* page 469 */, + 145 /* page 470 */, + 146 /* page 471 */, + G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX, + 147 /* page 474 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, @@ -21050,24 +21825,25 @@ static const gint16 break_property_table_part1[763] = { G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, - 143 /* page 488 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + 148 /* page 488 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, - 144 /* page 494 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, - 145 /* page 496 */, - 146 /* page 497 */, - 147 /* page 498 */, - 148 /* page 499 */, - 149 /* page 500 */, - 150 /* page 501 */, - 151 /* page 502 */, - 152 /* page 503 */, - 153 /* page 504 */, + 149 /* page 494 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, + 150 /* page 496 */, + 151 /* page 497 */, + 152 /* page 498 */, + 153 /* page 499 */, + 154 /* page 500 */, + 155 /* page 501 */, + 156 /* page 502 */, + 157 /* page 503 */, + 158 /* page 504 */, + 159 /* page 505 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, @@ -21329,8 +22105,8 @@ static const gint16 break_property_table_part1[763] = { /* U+E0000 through U+10FFFF */ static const gint16 break_property_table_part2[768] = { - 156 /* page 3584 */, - 157 /* page 3585 */, + 162 /* page 3584 */, + 163 /* page 3585 */, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX, diff --git a/glib/gunichartables.h b/glib/gunichartables.h index 3e59dd1..f71b41c 100644 --- a/glib/gunichartables.h +++ b/glib/gunichartables.h @@ -4,7 +4,7 @@ #ifndef CHARTABLES_H #define CHARTABLES_H -#define G_UNICODE_DATA_VERSION "7.0.0" +#define G_UNICODE_DATA_VERSION "8.0.0" #define G_UNICODE_LAST_CHAR 0x10ffff @@ -1044,6 +1044,7 @@ static const char type_data[][256] = { G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -1059,8 +1060,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, @@ -1265,7 +1265,7 @@ static const char type_data[][256] = { G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, @@ -1395,7 +1395,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, @@ -1491,7 +1491,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, @@ -2005,39 +2005,54 @@ static const char type_data[][256] = { G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED + G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, { /* page 20, index 19 */ G_UNICODE_DASH_PUNCTUATION, G_UNICODE_OTHER_LETTER, @@ -2468,15 +2483,15 @@ static const char type_data[][256] = { G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, - G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, - G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, - G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, - G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, - G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_UNASSIGNED, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, @@ -3272,13 +3287,13 @@ static const char type_data[][256] = { G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL, - G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, @@ -3364,8 +3379,8 @@ static const char type_data[][256] = { G_UNICODE_LETTER_NUMBER, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER, - G_UNICODE_LETTER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_LETTER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, @@ -4023,8 +4038,8 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -4881,6 +4896,9 @@ static const char type_data[][256] = { G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -4895,9 +4913,6 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, { /* page 160, index 48 */ @@ -5148,7 +5163,7 @@ static const char type_data[][256] = { G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_MODIFIER_LETTER, - G_UNICODE_MODIFIER_LETTER, G_UNICODE_UNASSIGNED, + G_UNICODE_MODIFIER_LETTER, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -5258,7 +5273,7 @@ static const char type_data[][256] = { G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, - G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, @@ -5275,9 +5290,10 @@ static const char type_data[][256] = { G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER, - G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -5397,8 +5413,8 @@ static const char type_data[][256] = { G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_LETTER, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_LETTER, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, { /* page 169, index 53 */ G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, @@ -5642,39 +5658,53 @@ static const char type_data[][256] = { G_UNICODE_LOWERCASE_LETTER, G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_LOWERCASE_LETTER, - G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_UNASSIGNED, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -5686,7 +5716,7 @@ static const char type_data[][256] = { G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, + G_UNICODE_OTHER_LETTER, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, @@ -6081,39 +6111,40 @@ static const char type_data[][256] = { G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION, - G_UNICODE_DASH_PUNCTUATION, G_UNICODE_DASH_PUNCTUATION, - G_UNICODE_CONNECT_PUNCTUATION, G_UNICODE_CONNECT_PUNCTUATION, - G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION, - G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION, - G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION, - G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION, - G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION, - G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION, - G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION, - G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_DASH_PUNCTUATION, + G_UNICODE_DASH_PUNCTUATION, G_UNICODE_CONNECT_PUNCTUATION, + G_UNICODE_CONNECT_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, + G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, + G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, + G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, + G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, + G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, + G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, + G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, + G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, + G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, - G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_CONNECT_PUNCTUATION, + G_UNICODE_CONNECT_PUNCTUATION, G_UNICODE_CONNECT_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, - G_UNICODE_CONNECT_PUNCTUATION, G_UNICODE_CONNECT_PUNCTUATION, - G_UNICODE_CONNECT_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, - G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_DASH_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, + G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, + G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, + G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, - G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_DASH_PUNCTUATION, - G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION, - G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION, - G_UNICODE_OPEN_PUNCTUATION, G_UNICODE_CLOSE_PUNCTUATION, + G_UNICODE_MATH_SYMBOL, G_UNICODE_DASH_PUNCTUATION, G_UNICODE_MATH_SYMBOL, + G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, G_UNICODE_UNASSIGNED, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, - G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_MATH_SYMBOL, - G_UNICODE_DASH_PUNCTUATION, G_UNICODE_MATH_SYMBOL, G_UNICODE_MATH_SYMBOL, - G_UNICODE_MATH_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION, - G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_OTHER_PUNCTUATION, - G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, + G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -6158,8 +6189,8 @@ static const char type_data[][256] = { G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_FORMAT + G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_FORMAT }, { /* page 255, index 61 */ G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION, @@ -6984,17 +7015,17 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER }, { /* page 265, index 70 */ G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -7060,29 +7091,29 @@ static const char type_data[][256] = { G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER }, { /* page 266, index 71 */ G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK, @@ -7310,50 +7341,67 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, + G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, + G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED + G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_NUMBER }, { /* page 270, index 74 */ G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -7617,15 +7665,17 @@ static const char type_data[][256] = { G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, - G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, @@ -7684,21 +7734,21 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, + G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -7733,34 +7783,34 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED }, { /* page 275, index 78 */ - G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, G_UNICODE_SPACING_MARK, - G_UNICODE_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -7986,13 +8036,16 @@ static const char type_data[][256] = { G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, - G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -8101,10 +8154,102 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 280, index 82 */ - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + { /* page 279, index 82 */ + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, + G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, + G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, + G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, + G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, + G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED + }, + { /* page 280, index 83 */ + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -8201,7 +8346,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER }, - { /* page 282, index 83 */ + { /* page 282, index 84 */ G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -8289,7 +8434,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 291, index 84 */ + { /* page 291, index 85 */ G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -8341,7 +8486,7 @@ static const char type_data[][256] = { G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -8377,7 +8522,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 292, index 85 */ + { /* page 292, index 86 */ G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER, @@ -8440,6 +8585,77 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER + }, + { /* page 293, index 87 */ + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -8482,9 +8698,26 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED }, - { /* page 308, index 86 */ + { /* page 308, index 88 */ G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -8572,7 +8805,95 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 362, index 87 */ + { /* page 326, index 89 */ + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED + }, + { /* page 362, index 90 */ G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -8662,7 +8983,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 363, index 88 */ + { /* page 363, index 91 */ G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -8754,7 +9075,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 367, index 89 */ + { /* page 367, index 92 */ G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -8844,7 +9165,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 432, index 90 */ + { /* page 432, index 93 */ G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -8932,7 +9253,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 444, index 91 */ + { /* page 444, index 94 */ G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -9020,7 +9341,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 464, index 92 */ + { /* page 464, index 95 */ G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, @@ -9108,7 +9429,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 465, index 93 */ + { /* page 465, index 96 */ G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, @@ -9187,10 +9508,10 @@ static const char type_data[][256] = { G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -9200,7 +9521,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 466, index 94 */ + { /* page 466, index 97 */ G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, @@ -9288,7 +9609,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 467, index 95 */ + { /* page 467, index 98 */ G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, @@ -9376,7 +9697,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 468, index 96 */ + { /* page 468, index 99 */ G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, @@ -9505,7 +9826,7 @@ static const char type_data[][256] = { G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER }, - { /* page 469, index 97 */ + { /* page 469, index 100 */ G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, @@ -9634,7 +9955,7 @@ static const char type_data[][256] = { G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER }, - { /* page 470, index 98 */ + { /* page 470, index 101 */ G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, @@ -9764,7 +10085,7 @@ static const char type_data[][256] = { G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER }, - { /* page 471, index 99 */ + { /* page 471, index 102 */ G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, @@ -9894,7 +10215,118 @@ static const char type_data[][256] = { G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER }, - { /* page 488, index 100 */ + { /* page 474, index 103 */ + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, + G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED + }, + { /* page 488, index 104 */ G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -9983,7 +10415,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 494, index 101 */ + { /* page 494, index 105 */ G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -10071,7 +10503,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 496, index 102 */ + { /* page 496, index 106 */ G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, @@ -10159,7 +10591,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 497, index 103 */ + { /* page 497, index 107 */ G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, @@ -10247,7 +10679,7 @@ static const char type_data[][256] = { G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL }, - { /* page 498, index 104 */ + { /* page 498, index 108 */ G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -10335,95 +10767,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 499, index 105 */ - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED - }, - { /* page 500, index 106 */ + { /* page 499, index 109 */ G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, @@ -10507,11 +10851,14 @@ static const char type_data[][256] = { G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL, + G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL, + G_UNICODE_MODIFIER_SYMBOL + }, + { /* page 501, index 110 */ G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_UNASSIGNED - }, - { /* page 501, index 107 */ G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, @@ -10537,8 +10884,6 @@ static const char type_data[][256] = { G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, @@ -10599,7 +10944,7 @@ static const char type_data[][256] = { G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL }, - { /* page 502, index 108 */ + { /* page 502, index 111 */ G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, @@ -10622,7 +10967,6 @@ static const char type_data[][256] = { G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, @@ -10669,7 +11013,8 @@ static const char type_data[][256] = { G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, - G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -10687,7 +11032,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 503, index 109 */ + { /* page 503, index 112 */ G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, @@ -10775,7 +11120,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 504, index 110 */ + { /* page 504, index 113 */ G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, @@ -10863,7 +11208,191 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 678, index 111 */ + { /* page 505, index 114 */ + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED + }, + { /* page 678, index 115 */ + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED + }, + { /* page 695, index 116 */ + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -10873,6 +11402,11 @@ static const char type_data[][256] = { G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, + G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -10935,23 +11469,10 @@ static const char type_data[][256] = { G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER }, - { /* page 695, index 112 */ + { /* page 696, index 117 */ G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -10962,6 +11483,11 @@ static const char type_data[][256] = { G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -10969,11 +11495,6 @@ static const char type_data[][256] = { G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -11039,7 +11560,51 @@ static const char type_data[][256] = { G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER }, - { /* page 696, index 113 */ + { /* page 718, index 118 */ + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, + G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -11050,50 +11615,6 @@ static const char type_data[][256] = { G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, - G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -11127,7 +11648,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 762, index 114 */ + { /* page 762, index 119 */ G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, @@ -11215,7 +11736,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 3584, index 115 */ + { /* page 3584, index 120 */ G_UNICODE_UNASSIGNED, G_UNICODE_FORMAT, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, @@ -11295,7 +11816,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 3585, index 116 */ + { /* page 3585, index 121 */ G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, @@ -11423,7 +11944,7 @@ static const char type_data[][256] = { G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 4095, index 117 */ + { /* page 4095, index 122 */ G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, @@ -11511,7 +12032,7 @@ static const char type_data[][256] = { G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED }, - { /* page 4351, index 118 */ + { /* page 4351, index 123 */ G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, @@ -11882,10 +12403,10 @@ static const gint16 type_table_part1[763] = { 79 /* page 276 */, 80 /* page 277 */, 81 /* page 278 */, + 82 /* page 279 */, + 83 /* page 280 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - 82 /* page 280 */, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - 83 /* page 282 */, + 84 /* page 282 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, @@ -11894,9 +12415,9 @@ static const gint16 type_table_part1[763] = { G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, - 84 /* page 291 */, - 85 /* page 292 */, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, + 85 /* page 291 */, + 86 /* page 292 */, + 87 /* page 293 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, @@ -11911,10 +12432,7 @@ static const gint16 type_table_part1[763] = { G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, - 86 /* page 308 */, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, + 88 /* page 308 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, @@ -11930,6 +12448,9 @@ static const gint16 type_table_part1[763] = { G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + 89 /* page 326 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, @@ -11965,13 +12486,12 @@ static const gint16 type_table_part1[763] = { G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, - 87 /* page 362 */, - 88 /* page 363 */, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, + 90 /* page 362 */, + 91 /* page 363 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - 89 /* page 367 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, + 92 /* page 367 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, @@ -12035,8 +12555,8 @@ static const gint16 type_table_part1[763] = { G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - 90 /* page 432 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, + 93 /* page 432 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, @@ -12047,8 +12567,8 @@ static const gint16 type_table_part1[763] = { G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - 91 /* page 444 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, + 94 /* page 444 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, @@ -12067,18 +12587,18 @@ static const gint16 type_table_part1[763] = { G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - 92 /* page 464 */, - 93 /* page 465 */, - 94 /* page 466 */, - 95 /* page 467 */, - 96 /* page 468 */, - 97 /* page 469 */, - 98 /* page 470 */, - 99 /* page 471 */, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, + 95 /* page 464 */, + 96 /* page 465 */, + 97 /* page 466 */, + 98 /* page 467 */, + 99 /* page 468 */, + 100 /* page 469 */, + 101 /* page 470 */, + 102 /* page 471 */, + G_UNICODE_OTHER_SYMBOL + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_SYMBOL + G_UNICODE_MAX_TABLE_INDEX, + 103 /* page 474 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, @@ -12091,24 +12611,25 @@ static const gint16 type_table_part1[763] = { G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - 100 /* page 488 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, + 104 /* page 488 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - 101 /* page 494 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - 102 /* page 496 */, - 103 /* page 497 */, - 104 /* page 498 */, - 105 /* page 499 */, - 106 /* page 500 */, - 107 /* page 501 */, - 108 /* page 502 */, - 109 /* page 503 */, - 110 /* page 504 */, + 105 /* page 494 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, + 106 /* page 496 */, + 107 /* page 497 */, + 108 /* page 498 */, + 109 /* page 499 */, + G_UNICODE_OTHER_SYMBOL + G_UNICODE_MAX_TABLE_INDEX, + 110 /* page 501 */, + 111 /* page 502 */, + 112 /* page 503 */, + 113 /* page 504 */, + 114 /* page 505 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, @@ -12281,7 +12802,7 @@ static const gint16 type_table_part1[763] = { G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, - 111 /* page 678 */, + 115 /* page 678 */, G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, @@ -12298,30 +12819,30 @@ static const gint16 type_table_part1[763] = { G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, - 112 /* page 695 */, - 113 /* page 696 */, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, - G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, + 116 /* page 695 */, + 117 /* page 696 */, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, + 118 /* page 718 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, @@ -12365,13 +12886,13 @@ static const gint16 type_table_part1[763] = { G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX, - 114 /* page 762 */ + 119 /* page 762 */ }; /* U+E0000 through U+10FFFF */ static const gint16 type_table_part2[768] = { - 115 /* page 3584 */, - 116 /* page 3585 */, + 120 /* page 3584 */, + 121 /* page 3585 */, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX, @@ -12881,7 +13402,7 @@ static const gint16 type_table_part2[768] = { G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX, - 117 /* page 4095 */, + 122 /* page 4095 */, G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX, @@ -13137,7 +13658,7 @@ static const gint16 type_table_part2[768] = { G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX, G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX, - 118 /* page 4351 */ + 123 /* page 4351 */ }; static const gunichar attr_data[][256] = { @@ -13221,7 +13742,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x01a6, 0x0000, 0x0000, 0x01a9, 0x0000, 0x0000, 0x0000, 0xa7b1, 0x01ae, 0x0244, 0x01b1, 0x01b2, 0x0245, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x01b7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa7b0, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xa7b2, 0xa7b0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -13637,7 +14158,38 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 23, index 16 */ + { /* page 19, index 16 */ + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xab70, 0xab71, + 0xab72, 0xab73, 0xab74, 0xab75, 0xab76, 0xab77, 0xab78, 0xab79, 0xab7a, + 0xab7b, 0xab7c, 0xab7d, 0xab7e, 0xab7f, 0xab80, 0xab81, 0xab82, 0xab83, + 0xab84, 0xab85, 0xab86, 0xab87, 0xab88, 0xab89, 0xab8a, 0xab8b, 0xab8c, + 0xab8d, 0xab8e, 0xab8f, 0xab90, 0xab91, 0xab92, 0xab93, 0xab94, 0xab95, + 0xab96, 0xab97, 0xab98, 0xab99, 0xab9a, 0xab9b, 0xab9c, 0xab9d, 0xab9e, + 0xab9f, 0xaba0, 0xaba1, 0xaba2, 0xaba3, 0xaba4, 0xaba5, 0xaba6, 0xaba7, + 0xaba8, 0xaba9, 0xabaa, 0xabab, 0xabac, 0xabad, 0xabae, 0xabaf, 0xabb0, + 0xabb1, 0xabb2, 0xabb3, 0xabb4, 0xabb5, 0xabb6, 0xabb7, 0xabb8, 0xabb9, + 0xabba, 0xabbb, 0xabbc, 0xabbd, 0xabbe, 0xabbf, 0x13f8, 0x13f9, 0x13fa, + 0x13fb, 0x13fc, 0x13fd, 0x0000, 0x0000, 0x13f0, 0x13f1, 0x13f2, 0x13f3, + 0x13f4, 0x13f5, 0x0000, 0x0000 + }, + { /* page 23, index 17 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -13668,7 +14220,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 24, index 17 */ + { /* page 24, index 18 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, @@ -13699,7 +14251,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 25, index 18 */ + { /* page 25, index 19 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -13730,7 +14282,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 26, index 19 */ + { /* page 26, index 20 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -13761,7 +14313,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 27, index 20 */ + { /* page 27, index 21 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -13792,7 +14344,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 28, index 21 */ + { /* page 28, index 22 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -13823,7 +14375,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 29, index 22 */ + { /* page 29, index 23 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -13854,7 +14406,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 30, index 23 */ + { /* page 30, index 24 */ 0x1e01, 0x1e00, 0x1e03, 0x1e02, 0x1e05, 0x1e04, 0x1e07, 0x1e06, 0x1e09, 0x1e08, 0x1e0b, 0x1e0a, 0x1e0d, 0x1e0c, 0x1e0f, 0x1e0e, 0x1e11, 0x1e10, 0x1e13, 0x1e12, 0x1e15, 0x1e14, 0x1e17, 0x1e16, 0x1e19, 0x1e18, 0x1e1b, @@ -13885,7 +14437,7 @@ static const gunichar attr_data[][256] = { 0x1ef0, 0x1ef3, 0x1ef2, 0x1ef5, 0x1ef4, 0x1ef7, 0x1ef6, 0x1ef9, 0x1ef8, 0x1efb, 0x1efa, 0x1efd, 0x1efc, 0x1eff, 0x1efe }, - { /* page 31, index 24 */ + { /* page 31, index 25 */ 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f, 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07, 0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0x0000, 0x0000, 0x1f10, 0x1f11, 0x1f12, @@ -13920,7 +14472,7 @@ static const gunichar attr_data[][256] = { 0x100045b, 0x0000, 0x10001ac, 0x1000484, 0x1f78, 0x1f79, 0x1f7c, 0x1f7d, 0x1000415, 0x0000, 0x0000, 0x0000 }, - { /* page 33, index 25 */ + { /* page 33, index 26 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -13951,7 +14503,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 44, index 26 */ + { /* page 44, index 27 */ 0x2c30, 0x2c31, 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37, 0x2c38, 0x2c39, 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f, 0x2c40, 0x2c41, 0x2c42, 0x2c43, 0x2c44, 0x2c45, 0x2c46, 0x2c47, 0x2c48, 0x2c49, 0x2c4a, @@ -13982,7 +14534,7 @@ static const gunichar attr_data[][256] = { 0x2cf2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 45, index 27 */ + { /* page 45, index 28 */ 0x10a0, 0x10a1, 0x10a2, 0x10a3, 0x10a4, 0x10a5, 0x10a6, 0x10a7, 0x10a8, 0x10a9, 0x10aa, 0x10ab, 0x10ac, 0x10ad, 0x10ae, 0x10af, 0x10b0, 0x10b1, 0x10b2, 0x10b3, 0x10b4, 0x10b5, 0x10b6, 0x10b7, 0x10b8, 0x10b9, 0x10ba, @@ -14013,7 +14565,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 166, index 28 */ + { /* page 166, index 29 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14044,7 +14596,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 167, index 29 */ + { /* page 167, index 30 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14064,8 +14616,8 @@ static const gunichar attr_data[][256] = { 0xa791, 0xa790, 0xa793, 0xa792, 0x0000, 0x0000, 0xa797, 0xa796, 0xa799, 0xa798, 0xa79b, 0xa79a, 0xa79d, 0xa79c, 0xa79f, 0xa79e, 0xa7a1, 0xa7a0, 0xa7a3, 0xa7a2, 0xa7a5, 0xa7a4, 0xa7a7, 0xa7a6, 0xa7a9, 0xa7a8, 0x0266, - 0x025c, 0x0261, 0x026c, 0x0000, 0x0000, 0x029e, 0x0287, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x025c, 0x0261, 0x026c, 0x0000, 0x0000, 0x029e, 0x0287, 0x029d, 0xab53, + 0xa7b5, 0xa7b4, 0xa7b7, 0xa7b6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14075,7 +14627,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 168, index 30 */ + { /* page 168, index 31 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14106,7 +14658,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 169, index 31 */ + { /* page 169, index 32 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14137,7 +14689,7 @@ static const gunichar attr_data[][256] = { 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 170, index 32 */ + { /* page 170, index 33 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14168,18 +14720,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 171, index 33 */ - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + { /* page 171, index 34 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14189,8 +14730,19 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0xa7b3, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x13a0, 0x13a1, 0x13a2, 0x13a3, 0x13a4, + 0x13a5, 0x13a6, 0x13a7, 0x13a8, 0x13a9, 0x13aa, 0x13ab, 0x13ac, 0x13ad, + 0x13ae, 0x13af, 0x13b0, 0x13b1, 0x13b2, 0x13b3, 0x13b4, 0x13b5, 0x13b6, + 0x13b7, 0x13b8, 0x13b9, 0x13ba, 0x13bb, 0x13bc, 0x13bd, 0x13be, 0x13bf, + 0x13c0, 0x13c1, 0x13c2, 0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, 0x13c8, + 0x13c9, 0x13ca, 0x13cb, 0x13cc, 0x13cd, 0x13ce, 0x13cf, 0x13d0, 0x13d1, + 0x13d2, 0x13d3, 0x13d4, 0x13d5, 0x13d6, 0x13d7, 0x13d8, 0x13d9, 0x13da, + 0x13db, 0x13dc, 0x13dd, 0x13de, 0x13df, 0x13e0, 0x13e1, 0x13e2, 0x13e3, + 0x13e4, 0x13e5, 0x13e6, 0x13e7, 0x13e8, 0x13e9, 0x13ea, 0x13eb, 0x13ec, + 0x13ed, 0x13ee, 0x13ef, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14199,7 +14751,7 @@ static const gunichar attr_data[][256] = { 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 251, index 34 */ + { /* page 251, index 35 */ 0x100000f, 0x1000016, 0x100001d, 0x1000024, 0x100002d, 0x1000036, 0x100003d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x100004f, 0x100005a, 0x1000065, @@ -14231,7 +14783,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 255, index 35 */ + { /* page 255, index 36 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, @@ -14262,7 +14814,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 260, index 36 */ + { /* page 260, index 37 */ 0x10428, 0x10429, 0x1042a, 0x1042b, 0x1042c, 0x1042d, 0x1042e, 0x1042f, 0x10430, 0x10431, 0x10432, 0x10433, 0x10434, 0x10435, 0x10436, 0x10437, 0x10438, 0x10439, 0x1043a, 0x1043b, 0x1043c, 0x1043d, 0x1043e, 0x1043f, @@ -14294,7 +14846,39 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 272, index 37 */ + { /* page 268, index 38 */ + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x10cc0, 0x10cc1, 0x10cc2, 0x10cc3, 0x10cc4, 0x10cc5, + 0x10cc6, 0x10cc7, 0x10cc8, 0x10cc9, 0x10cca, 0x10ccb, 0x10ccc, 0x10ccd, + 0x10cce, 0x10ccf, 0x10cd0, 0x10cd1, 0x10cd2, 0x10cd3, 0x10cd4, 0x10cd5, + 0x10cd6, 0x10cd7, 0x10cd8, 0x10cd9, 0x10cda, 0x10cdb, 0x10cdc, 0x10cdd, + 0x10cde, 0x10cdf, 0x10ce0, 0x10ce1, 0x10ce2, 0x10ce3, 0x10ce4, 0x10ce5, + 0x10ce6, 0x10ce7, 0x10ce8, 0x10ce9, 0x10cea, 0x10ceb, 0x10cec, 0x10ced, + 0x10cee, 0x10cef, 0x10cf0, 0x10cf1, 0x10cf2, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x10c80, 0x10c81, 0x10c82, 0x10c83, 0x10c84, 0x10c85, 0x10c86, + 0x10c87, 0x10c88, 0x10c89, 0x10c8a, 0x10c8b, 0x10c8c, 0x10c8d, 0x10c8e, + 0x10c8f, 0x10c90, 0x10c91, 0x10c92, 0x10c93, 0x10c94, 0x10c95, 0x10c96, + 0x10c97, 0x10c98, 0x10c99, 0x10c9a, 0x10c9b, 0x10c9c, 0x10c9d, 0x10c9e, + 0x10c9f, 0x10ca0, 0x10ca1, 0x10ca2, 0x10ca3, 0x10ca4, 0x10ca5, 0x10ca6, + 0x10ca7, 0x10ca8, 0x10ca9, 0x10caa, 0x10cab, 0x10cac, 0x10cad, 0x10cae, + 0x10caf, 0x10cb0, 0x10cb1, 0x10cb2, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 + }, + { /* page 272, index 39 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14325,7 +14909,7 @@ static const gunichar attr_data[][256] = { 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 273, index 38 */ + { /* page 273, index 40 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14356,7 +14940,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 274, index 39 */ + { /* page 274, index 41 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14387,7 +14971,7 @@ static const gunichar attr_data[][256] = { 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 276, index 40 */ + { /* page 276, index 42 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14418,7 +15002,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 278, index 41 */ + { /* page 278, index 43 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14449,7 +15033,38 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 280, index 42 */ + { /* page 279, index 44 */ + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, + 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000 + }, + { /* page 280, index 45 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14481,7 +15096,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 362, index 43 */ + { /* page 362, index 46 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14512,7 +15127,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 363, index 44 */ + { /* page 363, index 47 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14543,7 +15158,7 @@ static const gunichar attr_data[][256] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, - { /* page 471, index 45 */ + { /* page 471, index 48 */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -14597,23 +15212,21 @@ static const gint16 attr_table_part1[763] = { 15 /* page 16 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, + 16 /* page 19 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, + 17 /* page 23 */, + 18 /* page 24 */, + 19 /* page 25 */, + 20 /* page 26 */, + 21 /* page 27 */, + 22 /* page 28 */, + 23 /* page 29 */, + 24 /* page 30 */, + 25 /* page 31 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, - 16 /* page 23 */, - 17 /* page 24 */, - 18 /* page 25 */, - 19 /* page 26 */, - 20 /* page 27 */, - 21 /* page 28 */, - 22 /* page 29 */, - 23 /* page 30 */, - 24 /* page 31 */, - 0x0000 + G_UNICODE_MAX_TABLE_INDEX, - 25 /* page 33 */, - 0x0000 + G_UNICODE_MAX_TABLE_INDEX, - 0x0000 + G_UNICODE_MAX_TABLE_INDEX, + 26 /* page 33 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, @@ -14622,10 +15235,10 @@ static const gint16 attr_table_part1[763] = { 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, - 26 /* page 44 */, - 27 /* page 45 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, + 27 /* page 44 */, + 28 /* page 45 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, @@ -14744,14 +15357,14 @@ static const gint16 attr_table_part1[763] = { 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, - 28 /* page 166 */, - 29 /* page 167 */, - 30 /* page 168 */, - 31 /* page 169 */, - 32 /* page 170 */, - 33 /* page 171 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, + 29 /* page 166 */, + 30 /* page 167 */, + 31 /* page 168 */, + 32 /* page 169 */, + 33 /* page 170 */, + 34 /* page 171 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, @@ -14829,18 +15442,18 @@ static const gint16 attr_table_part1[763] = { 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, - 34 /* page 251 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, + 35 /* page 251 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, - 35 /* page 255 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, + 36 /* page 255 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, - 36 /* page 260 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, + 37 /* page 260 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, @@ -14848,17 +15461,19 @@ static const gint16 attr_table_part1[763] = { 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, + 38 /* page 268 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, - 37 /* page 272 */, - 38 /* page 273 */, - 39 /* page 274 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, - 40 /* page 276 */, + 39 /* page 272 */, + 40 /* page 273 */, + 41 /* page 274 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, - 41 /* page 278 */, + 42 /* page 276 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, - 42 /* page 280 */, + 43 /* page 278 */, + 44 /* page 279 */, + 45 /* page 280 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, @@ -14940,8 +15555,8 @@ static const gint16 attr_table_part1[763] = { 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, - 43 /* page 362 */, - 44 /* page 363 */, + 46 /* page 362 */, + 47 /* page 363 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, @@ -15049,7 +15664,7 @@ static const gint16 attr_table_part1[763] = { 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, - 45 /* page 471 */, + 48 /* page 471 */, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, 0x0000 + G_UNICODE_MAX_TABLE_INDEX, @@ -16287,6 +16902,12 @@ static const struct { { 0x03f1, "\xcf\x81" }, { 0x03f5, "\xce\xb5" }, { 0x0587, "\xd5\xa5\xd6\x82" }, + { 0x13f8, "\xe1\x8f\xb0" }, + { 0x13f9, "\xe1\x8f\xb1" }, + { 0x13fa, "\xe1\x8f\xb2" }, + { 0x13fb, "\xe1\x8f\xb3" }, + { 0x13fc, "\xe1\x8f\xb4" }, + { 0x13fd, "\xe1\x8f\xb5" }, { 0x1e96, "\x68\xcc\xb1" }, { 0x1e97, "\x74\xcc\x88" }, { 0x1e98, "\x77\xcc\x8a" }, @@ -16416,6 +17037,86 @@ static const struct { { 0x24cd, "\xe2\x93\xa7" }, { 0x24ce, "\xe2\x93\xa8" }, { 0x24cf, "\xe2\x93\xa9" }, + { 0xab70, "\xe1\x8e\xa0" }, + { 0xab71, "\xe1\x8e\xa1" }, + { 0xab72, "\xe1\x8e\xa2" }, + { 0xab73, "\xe1\x8e\xa3" }, + { 0xab74, "\xe1\x8e\xa4" }, + { 0xab75, "\xe1\x8e\xa5" }, + { 0xab76, "\xe1\x8e\xa6" }, + { 0xab77, "\xe1\x8e\xa7" }, + { 0xab78, "\xe1\x8e\xa8" }, + { 0xab79, "\xe1\x8e\xa9" }, + { 0xab7a, "\xe1\x8e\xaa" }, + { 0xab7b, "\xe1\x8e\xab" }, + { 0xab7c, "\xe1\x8e\xac" }, + { 0xab7d, "\xe1\x8e\xad" }, + { 0xab7e, "\xe1\x8e\xae" }, + { 0xab7f, "\xe1\x8e\xaf" }, + { 0xab80, "\xe1\x8e\xb0" }, + { 0xab81, "\xe1\x8e\xb1" }, + { 0xab82, "\xe1\x8e\xb2" }, + { 0xab83, "\xe1\x8e\xb3" }, + { 0xab84, "\xe1\x8e\xb4" }, + { 0xab85, "\xe1\x8e\xb5" }, + { 0xab86, "\xe1\x8e\xb6" }, + { 0xab87, "\xe1\x8e\xb7" }, + { 0xab88, "\xe1\x8e\xb8" }, + { 0xab89, "\xe1\x8e\xb9" }, + { 0xab8a, "\xe1\x8e\xba" }, + { 0xab8b, "\xe1\x8e\xbb" }, + { 0xab8c, "\xe1\x8e\xbc" }, + { 0xab8d, "\xe1\x8e\xbd" }, + { 0xab8e, "\xe1\x8e\xbe" }, + { 0xab8f, "\xe1\x8e\xbf" }, + { 0xab90, "\xe1\x8f\x80" }, + { 0xab91, "\xe1\x8f\x81" }, + { 0xab92, "\xe1\x8f\x82" }, + { 0xab93, "\xe1\x8f\x83" }, + { 0xab94, "\xe1\x8f\x84" }, + { 0xab95, "\xe1\x8f\x85" }, + { 0xab96, "\xe1\x8f\x86" }, + { 0xab97, "\xe1\x8f\x87" }, + { 0xab98, "\xe1\x8f\x88" }, + { 0xab99, "\xe1\x8f\x89" }, + { 0xab9a, "\xe1\x8f\x8a" }, + { 0xab9b, "\xe1\x8f\x8b" }, + { 0xab9c, "\xe1\x8f\x8c" }, + { 0xab9d, "\xe1\x8f\x8d" }, + { 0xab9e, "\xe1\x8f\x8e" }, + { 0xab9f, "\xe1\x8f\x8f" }, + { 0xaba0, "\xe1\x8f\x90" }, + { 0xaba1, "\xe1\x8f\x91" }, + { 0xaba2, "\xe1\x8f\x92" }, + { 0xaba3, "\xe1\x8f\x93" }, + { 0xaba4, "\xe1\x8f\x94" }, + { 0xaba5, "\xe1\x8f\x95" }, + { 0xaba6, "\xe1\x8f\x96" }, + { 0xaba7, "\xe1\x8f\x97" }, + { 0xaba8, "\xe1\x8f\x98" }, + { 0xaba9, "\xe1\x8f\x99" }, + { 0xabaa, "\xe1\x8f\x9a" }, + { 0xabab, "\xe1\x8f\x9b" }, + { 0xabac, "\xe1\x8f\x9c" }, + { 0xabad, "\xe1\x8f\x9d" }, + { 0xabae, "\xe1\x8f\x9e" }, + { 0xabaf, "\xe1\x8f\x9f" }, + { 0xabb0, "\xe1\x8f\xa0" }, + { 0xabb1, "\xe1\x8f\xa1" }, + { 0xabb2, "\xe1\x8f\xa2" }, + { 0xabb3, "\xe1\x8f\xa3" }, + { 0xabb4, "\xe1\x8f\xa4" }, + { 0xabb5, "\xe1\x8f\xa5" }, + { 0xabb6, "\xe1\x8f\xa6" }, + { 0xabb7, "\xe1\x8f\xa7" }, + { 0xabb8, "\xe1\x8f\xa8" }, + { 0xabb9, "\xe1\x8f\xa9" }, + { 0xabba, "\xe1\x8f\xaa" }, + { 0xabbb, "\xe1\x8f\xab" }, + { 0xabbc, "\xe1\x8f\xac" }, + { 0xabbd, "\xe1\x8f\xad" }, + { 0xabbe, "\xe1\x8f\xae" }, + { 0xabbf, "\xe1\x8f\xaf" }, { 0xfb00, "\x66\x66" }, { 0xfb01, "\x66\x69" }, { 0xfb02, "\x66\x6c" }, diff --git a/glib/gunicode.h b/glib/gunicode.h index 3109233..5f04536 100644 --- a/glib/gunicode.h +++ b/glib/gunicode.h @@ -394,6 +394,12 @@ typedef enum * @G_UNICODE_SCRIPT_SIDDHAM: Siddham. Since: 2.42 * @G_UNICODE_SCRIPT_TIRHUTA: Tirhuta. Since: 2.42 * @G_UNICODE_SCRIPT_WARANG_CITI: Warang Citi. Since: 2.42 + * @G_UNICODE_SCRIPT_AHOM: Ahom. Since: 2.48 + * @G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS: Anatolian Hieroglyphs. Since: 2.48 + * @G_UNICODE_SCRIPT_HATRAN: Hatran. Since: 2.48 + * @G_UNICODE_SCRIPT_MULTANI: Multani. Since: 2.48 + * @G_UNICODE_SCRIPT_OLD_HUNGARIAN: Old Hungarian. Since: 2.48 + * @G_UNICODE_SCRIPT_SIGNWRITING: Signwriting. Since: 2.48 * * The #GUnicodeScript enumeration identifies different writing * systems. The values correspond to the names as defined in the @@ -550,7 +556,15 @@ typedef enum G_UNICODE_SCRIPT_PSALTER_PAHLAVI, /* Phlp */ G_UNICODE_SCRIPT_SIDDHAM, /* Sidd */ G_UNICODE_SCRIPT_TIRHUTA, /* Tirh */ - G_UNICODE_SCRIPT_WARANG_CITI /* Wara */ + G_UNICODE_SCRIPT_WARANG_CITI, /* Wara */ + + /* Unicode 8.0 additions */ + G_UNICODE_SCRIPT_AHOM, /* Ahom */ + G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS, /* Hluw */ + G_UNICODE_SCRIPT_HATRAN, /* Hatr */ + G_UNICODE_SCRIPT_MULTANI, /* Mult */ + G_UNICODE_SCRIPT_OLD_HUNGARIAN, /* Hung */ + G_UNICODE_SCRIPT_SIGNWRITING /* Sgnw */ } GUnicodeScript; GLIB_AVAILABLE_IN_ALL diff --git a/glib/gunidecomp.h b/glib/gunidecomp.h index 1e81f42..818a249 100644 --- a/glib/gunidecomp.h +++ b/glib/gunidecomp.h @@ -96,7 +96,7 @@ static const guchar cclass_data[][256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 230, 230, 220, 230, 230, 220, 230, 230, 230, 220, 220, 220, + 0, 0, 0, 220, 230, 230, 220, 230, 230, 220, 230, 230, 230, 220, 220, 220, 27, 28, 29, 230, 230, 230, 220, 230, 230, 220, 220, 230, 230, 230, 230, 230 }, @@ -374,11 +374,12 @@ static const guchar cclass_data[][256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0 }, { /* page 168, index 27 */ 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -449,7 +450,7 @@ static const guchar cclass_data[][256] = { { /* page 254, index 32 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 220, 220, 220, - 220, 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 220, 220, 220, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -457,7 +458,8 @@ static const guchar cclass_data[][256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 }, { /* page 257, index 33 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -533,7 +535,7 @@ static const guchar cclass_data[][256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, @@ -602,7 +604,20 @@ static const guchar cclass_data[][256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { /* page 362, index 44 */ + { /* page 279, index 44 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }, + { /* page 362, index 45 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -615,7 +630,7 @@ static const guchar cclass_data[][256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { /* page 363, index 45 */ + { /* page 363, index 46 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -628,7 +643,7 @@ static const guchar cclass_data[][256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { /* page 444, index 46 */ + { /* page 444, index 47 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -641,7 +656,7 @@ static const guchar cclass_data[][256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { /* page 465, index 47 */ + { /* page 465, index 48 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -655,7 +670,7 @@ static const guchar cclass_data[][256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { /* page 466, index 48 */ + { /* page 466, index 49 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 0, @@ -668,7 +683,7 @@ static const guchar cclass_data[][256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { /* page 488, index 49 */ + { /* page 488, index 50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -963,6 +978,7 @@ static const gint16 combining_class_table_part1[763] = { 41 /* page 276 */, 42 /* page 277 */, 43 /* page 278 */, + 44 /* page 279 */, 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, @@ -1045,9 +1061,8 @@ static const gint16 combining_class_table_part1[763] = { 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, - 0 + G_UNICODE_MAX_TABLE_INDEX, - 44 /* page 362 */, - 45 /* page 363 */, + 45 /* page 362 */, + 46 /* page 363 */, 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, @@ -1128,7 +1143,7 @@ static const gint16 combining_class_table_part1[763] = { 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, - 46 /* page 444 */, + 47 /* page 444 */, 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, @@ -1149,8 +1164,8 @@ static const gint16 combining_class_table_part1[763] = { 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, - 47 /* page 465 */, - 48 /* page 466 */, + 48 /* page 465 */, + 49 /* page 466 */, 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, @@ -1172,7 +1187,7 @@ static const gint16 combining_class_table_part1[763] = { 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, - 49 /* page 488 */, + 50 /* page 488 */, 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, 0 + G_UNICODE_MAX_TABLE_INDEX, diff --git a/glib/guniprop.c b/glib/guniprop.c index 98dff21..51725ec 100644 --- a/glib/guniprop.c +++ b/glib/guniprop.c @@ -433,6 +433,32 @@ interval_compare (const void *key, const void *elt) return 0; } +#define G_WIDTH_TABLE_MIDPOINT (G_N_ELEMENTS (g_unicode_width_table_wide) / 2) + +static inline gboolean +g_unichar_iswide_bsearch (gunichar ch) +{ + int lower = 0; + int upper = G_N_ELEMENTS (g_unicode_width_table_wide) + 1; + static int saved_mid = G_WIDTH_TABLE_MIDPOINT; + int mid = saved_mid; + + do + { + if (ch < g_unicode_width_table_wide[mid].start) + upper = mid - 1; + else if (ch > g_unicode_width_table_wide[mid].end) + lower = mid + 1; + else + return TRUE; + + mid = (lower + upper) / 2; + } + while (lower <= upper); + + return FALSE; +} + /** * g_unichar_iswide: * @c: a Unicode character @@ -445,14 +471,10 @@ interval_compare (const void *key, const void *elt) gboolean g_unichar_iswide (gunichar c) { - if (bsearch (GUINT_TO_POINTER (c), - g_unicode_width_table_wide, - G_N_ELEMENTS (g_unicode_width_table_wide), - sizeof g_unicode_width_table_wide[0], - interval_compare)) - return TRUE; - - return FALSE; + if (c < g_unicode_width_table_wide[0].start) + return FALSE; + else + return g_unichar_iswide_bsearch (c); } @@ -1392,6 +1414,13 @@ static const guint32 iso15924_tags[] = PACK ('T','i','r','h'), /* G_UNICODE_SCRIPT_TIRHUTA */ PACK ('W','a','r','a'), /* G_UNICODE_SCRIPT_WARANG_CITI */ + /* Unicode 8.0 additions */ + PACK ('A','h','o','m'), /* G_UNICODE_SCRIPT_AHOM */ + PACK ('H','l','u','w'), /* G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS */ + PACK ('H','a','t','r'), /* G_UNICODE_SCRIPT_HATRAN */ + PACK ('M','u','l','t'), /* G_UNICODE_SCRIPT_MULTANI */ + PACK ('H','u','n','g'), /* G_UNICODE_SCRIPT_OLD_HUNGARIAN */ + PACK ('S','g','n','w'), /* G_UNICODE_SCRIPT_SIGNWRITING */ #undef PACK }; diff --git a/glib/gutf8.c b/glib/gutf8.c index 579c017..99b89da 100644 --- a/glib/gutf8.c +++ b/glib/gutf8.c @@ -153,7 +153,7 @@ g_utf8_find_prev_char (const char *str, /** * g_utf8_find_next_char: * @p: a pointer to a position within a UTF-8 encoded string - * @end: a pointer to the byte following the end of the string, + * @end: (nullable): a pointer to the byte following the end of the string, * or %NULL to indicate that the string is nul-terminated * * Finds the start of the next UTF-8 character in the string after @p. @@ -436,9 +436,9 @@ g_utf8_strncpy (gchar *dest, /** * g_unichar_to_utf8: * @c: a Unicode character code - * @outbuf: output buffer, must have at least 6 bytes of space. - * If %NULL, the length will be computed and returned - * and nothing will be written to @outbuf. + * @outbuf: (out caller-allocates) (optional): output buffer, must have at + * least 6 bytes of space. If %NULL, the length will be computed and + * returned and nothing will be written to @outbuf. * * Converts a single character to UTF-8. * @@ -677,13 +677,15 @@ g_utf8_get_char_validated (const gchar *p, return result; } +#define CONT_BYTE_FAST(p) ((guchar)*p++ & 0x3f) + /** * g_utf8_to_ucs4_fast: * @str: a UTF-8 encoded string * @len: the maximum length of @str to use, in bytes. If @len < 0, * then the string is nul-terminated. - * @items_written: (allow-none): location to store the number of - * characters in the result, or %NULL. + * @items_written: (out caller-allocates) (optional): location to store the + * number of characters in the result, or %NULL. * * Convert a string from UTF-8 to a 32-bit fixed width * representation as UCS-4, assuming valid UTF-8 input. @@ -729,39 +731,52 @@ g_utf8_to_ucs4_fast (const gchar *str, p = str; for (i=0; i < n_chars; i++) { - gunichar wc = (guchar)*p++; + guchar first = (guchar)*p++; + gunichar wc; - if (wc < 0x80) + if (first < 0xc0) { - result[i] = wc; + /* We really hope first < 0x80, but we don't want to test an + * extra branch for invalid input, which this function + * does not care about. Handling unexpected continuation bytes + * here will do the least damage. */ + wc = first; } else - { - gunichar mask = 0x40; - - if (G_UNLIKELY ((wc & mask) == 0)) - { - /* It's an out-of-sequence 10xxxxxxx byte. - * Rather than making an ugly hash of this and the next byte - * and overrunning the buffer, it's more useful to treat it - * with a replacement character - */ - result[i] = 0xfffd; - continue; - } - - do - { - wc <<= 6; - wc |= (guchar)(*p++) & 0x3f; - mask <<= 5; - } - while((wc & mask) != 0); - - wc &= mask - 1; - - result[i] = wc; + { + gunichar c1 = CONT_BYTE_FAST(p); + if (first < 0xe0) + { + wc = ((first & 0x1f) << 6) | c1; + } + else + { + gunichar c2 = CONT_BYTE_FAST(p); + if (first < 0xf0) + { + wc = ((first & 0x0f) << 12) | (c1 << 6) | c2; + } + else + { + gunichar c3 = CONT_BYTE_FAST(p); + wc = ((first & 0x07) << 18) | (c1 << 12) | (c2 << 6) | c3; + if (G_UNLIKELY (first >= 0xf8)) + { + /* This can't be valid UTF-8, but g_utf8_next_char() + * and company allow out-of-range sequences */ + gunichar mask = 1 << 20; + while ((wc & mask) != 0) + { + wc <<= 6; + wc |= CONT_BYTE_FAST(p); + mask <<= 5; + } + wc &= mask - 1; + } + } + } } + result[i] = wc; } result[i] = 0; @@ -786,14 +801,15 @@ try_malloc_n (gsize n_blocks, gsize n_block_bytes, GError **error) * @str: a UTF-8 encoded string * @len: the maximum length of @str to use, in bytes. If @len < 0, * then the string is nul-terminated. - * @items_read: (allow-none): location to store number of bytes read, or %NULL. + * @items_read: (out caller-allocates) (optional): location to store number of + * bytes read, or %NULL. * If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be * returned in case @str contains a trailing partial * character. If an error occurs then the index of the * invalid input is stored here. - * @items_written: (allow-none): location to store number of characters - * written or %NULL. The value here stored does not include the - * trailing 0 character. + * @items_written: (out caller-allocates) (optional): location to store number + * of characters written or %NULL. The value here stored does not include + * the trailing 0 character. * @error: location to store the error occurring, or %NULL to ignore * errors. Any of the errors in #GConvertError other than * %G_CONVERT_ERROR_NO_CONVERSION may occur. @@ -871,11 +887,11 @@ g_utf8_to_ucs4 (const gchar *str, * @str: a UCS-4 encoded string * @len: the maximum length (number of characters) of @str to use. * If @len < 0, then the string is nul-terminated. - * @items_read: (allow-none): location to store number of characters - * read, or %NULL. - * @items_written: (allow-none): location to store number of bytes - * written or %NULL. The value here stored does not include the - * trailing 0 byte. + * @items_read: (out caller-allocates) (optional): location to store number of + * characters read, or %NULL. + * @items_written: (out caller-allocates) (optional): location to store number + * of bytes written or %NULL. The value here stored does not include the + * trailing 0 byte. * @error: location to store the error occurring, or %NULL to ignore * errors. Any of the errors in #GConvertError other than * %G_CONVERT_ERROR_NO_CONVERSION may occur. @@ -945,12 +961,13 @@ g_ucs4_to_utf8 (const gunichar *str, * @str: a UTF-16 encoded string * @len: the maximum length (number of #gunichar2) of @str to use. * If @len < 0, then the string is nul-terminated. - * @items_read: (allow-none): location to store number of words read, - * or %NULL. If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be - * returned in case @str contains a trailing partial character. If + * @items_read: (out caller-allocates) (optional): location to store number of + * words read, or %NULL. If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will + * be returned in case @str contains a trailing partial character. If * an error occurs then the index of the invalid input is stored here. - * @items_written: (allow-none): location to store number of bytes written, - * or %NULL. The value stored here does not include the trailing 0 byte. + * @items_written: (out caller-allocates) (optional): location to store number + * of bytes written, or %NULL. The value stored here does not include the + * trailing 0 byte. * @error: location to store the error occurring, or %NULL to ignore * errors. Any of the errors in #GConvertError other than * %G_CONVERT_ERROR_NO_CONVERSION may occur. @@ -1099,13 +1116,13 @@ g_utf16_to_utf8 (const gunichar2 *str, * @str: a UTF-16 encoded string * @len: the maximum length (number of #gunichar2) of @str to use. * If @len < 0, then the string is nul-terminated. - * @items_read: (allow-none): location to store number of words read, - * or %NULL. If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be - * returned in case @str contains a trailing partial character. If + * @items_read: (out caller-allocates) (optional): location to store number of + * words read, or %NULL. If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will + * be returned in case @str contains a trailing partial character. If * an error occurs then the index of the invalid input is stored here. - * @items_written: (allow-none): location to store number of characters - * written, or %NULL. The value stored here does not include the trailing - * 0 character. + * @items_written: (out caller-allocates) (optional): location to store number + * of characters written, or %NULL. The value stored here does not include + * the trailing 0 character. * @error: location to store the error occurring, or %NULL to ignore * errors. Any of the errors in #GConvertError other than * %G_CONVERT_ERROR_NO_CONVERSION may occur. @@ -1237,13 +1254,13 @@ g_utf16_to_ucs4 (const gunichar2 *str, * @str: a UTF-8 encoded string * @len: the maximum length (number of bytes) of @str to use. * If @len < 0, then the string is nul-terminated. - * @items_read: (allow-none): location to store number of bytes read, - * or %NULL. If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be - * returned in case @str contains a trailing partial character. If + * @items_read: (out caller-allocates) (optional): location to store number of + * bytes read, or %NULL. If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will + * be returned in case @str contains a trailing partial character. If * an error occurs then the index of the invalid input is stored here. - * @items_written: (allow-none): location to store number of #gunichar2 - * written, or %NULL. The value stored here does not include the - * trailing 0. + * @items_written: (out caller-allocates) (optional): location to store number + * of #gunichar2 written, or %NULL. The value stored here does not include + * the trailing 0. * @error: location to store the error occurring, or %NULL to ignore * errors. Any of the errors in #GConvertError other than * %G_CONVERT_ERROR_NO_CONVERSION may occur. @@ -1354,12 +1371,12 @@ g_utf8_to_utf16 (const gchar *str, * @str: a UCS-4 encoded string * @len: the maximum length (number of characters) of @str to use. * If @len < 0, then the string is nul-terminated. - * @items_read: (allow-none): location to store number of bytes read, - * or %NULL. If an error occurs then the index of the invalid input - * is stored here. - * @items_written: (allow-none): location to store number of #gunichar2 - * written, or %NULL. The value stored here does not include the - * trailing 0. + * @items_read: (out caller-allocates) (optional): location to store number of + * bytes read, or %NULL. If an error occurs then the index of the invalid + * input is stored here. + * @items_written: (out caller-allocates) (optional): location to store number + * of #gunichar2 written, or %NULL. The value stored here does not include + * the trailing 0. * @error: location to store the error occurring, or %NULL to ignore * errors. Any of the errors in #GConvertError other than * %G_CONVERT_ERROR_NO_CONVERSION may occur. @@ -1442,20 +1459,18 @@ g_ucs4_to_utf16 (const gunichar *str, return result; } -#define CONTINUATION_CHAR \ - G_STMT_START { \ - if ((*(guchar *)p & 0xc0) != 0x80) /* 10xxxxxx */ \ - goto error; \ - val <<= 6; \ - val |= (*(guchar *)p) & 0x3f; \ - } G_STMT_END +#define VALIDATE_BYTE(mask, expect) \ + G_STMT_START { \ + if (G_UNLIKELY((*(guchar *)p & (mask)) != (expect))) \ + goto error; \ + } G_STMT_END + +/* see IETF RFC 3629 Section 4 */ static const gchar * fast_validate (const char *str) { - gunichar val = 0; - gunichar min = 0; const gchar *p; for (p = str; *p; p++) @@ -1465,49 +1480,56 @@ fast_validate (const char *str) else { const gchar *last; - + last = p; - if ((*(guchar *)p & 0xe0) == 0xc0) /* 110xxxxx */ + if (*(guchar *)p < 0xe0) /* 110xxxxx */ { - if (G_UNLIKELY ((*(guchar *)p & 0x1e) == 0)) - goto error; - p++; - if (G_UNLIKELY ((*(guchar *)p & 0xc0) != 0x80)) /* 10xxxxxx */ + if (G_UNLIKELY (*(guchar *)p < 0xc2)) goto error; } else { - if ((*(guchar *)p & 0xf0) == 0xe0) /* 1110xxxx */ + if (*(guchar *)p < 0xf0) /* 1110xxxx */ { - min = (1 << 11); - val = *(guchar *)p & 0x0f; - goto TWO_REMAINING; + switch (*(guchar *)p++ & 0x0f) + { + case 0: + VALIDATE_BYTE(0xe0, 0xa0); /* 0xa0 ... 0xbf */ + break; + case 0x0d: + VALIDATE_BYTE(0xe0, 0x80); /* 0x80 ... 0x9f */ + break; + default: + VALIDATE_BYTE(0xc0, 0x80); /* 10xxxxxx */ + } } - else if ((*(guchar *)p & 0xf8) == 0xf0) /* 11110xxx */ + else if (*(guchar *)p < 0xf5) /* 11110xxx excluding out-of-range */ { - min = (1 << 16); - val = *(guchar *)p & 0x07; + switch (*(guchar *)p++ & 0x07) + { + case 0: + VALIDATE_BYTE(0xc0, 0x80); /* 10xxxxxx */ + if (G_UNLIKELY((*(guchar *)p & 0x30) == 0)) + goto error; + break; + case 4: + VALIDATE_BYTE(0xf0, 0x80); /* 0x80 ... 0x8f */ + break; + default: + VALIDATE_BYTE(0xc0, 0x80); /* 10xxxxxx */ + } + p++; + VALIDATE_BYTE(0xc0, 0x80); /* 10xxxxxx */ } else goto error; - - p++; - CONTINUATION_CHAR; - TWO_REMAINING: - p++; - CONTINUATION_CHAR; - p++; - CONTINUATION_CHAR; - - if (G_UNLIKELY (val < min)) - goto error; + } + + p++; + VALIDATE_BYTE(0xc0, 0x80); /* 10xxxxxx */ - if (G_UNLIKELY (!UNICODE_VALID(val))) - goto error; - } - continue; - + error: return last; } @@ -1521,8 +1543,6 @@ fast_validate_len (const char *str, gssize max_len) { - gunichar val = 0; - gunichar min = 0; const gchar *p; g_assert (max_len >= 0); @@ -1534,57 +1554,65 @@ fast_validate_len (const char *str, else { const gchar *last; - + last = p; - if ((*(guchar *)p & 0xe0) == 0xc0) /* 110xxxxx */ + if (*(guchar *)p < 0xe0) /* 110xxxxx */ { if (G_UNLIKELY (max_len - (p - str) < 2)) goto error; - if (G_UNLIKELY ((*(guchar *)p & 0x1e) == 0)) - goto error; - p++; - if (G_UNLIKELY ((*(guchar *)p & 0xc0) != 0x80)) /* 10xxxxxx */ + if (G_UNLIKELY (*(guchar *)p < 0xc2)) goto error; } else { - if ((*(guchar *)p & 0xf0) == 0xe0) /* 1110xxxx */ + if (*(guchar *)p < 0xf0) /* 1110xxxx */ { if (G_UNLIKELY (max_len - (p - str) < 3)) goto error; - - min = (1 << 11); - val = *(guchar *)p & 0x0f; - goto TWO_REMAINING; + + switch (*(guchar *)p++ & 0x0f) + { + case 0: + VALIDATE_BYTE(0xe0, 0xa0); /* 0xa0 ... 0xbf */ + break; + case 0x0d: + VALIDATE_BYTE(0xe0, 0x80); /* 0x80 ... 0x9f */ + break; + default: + VALIDATE_BYTE(0xc0, 0x80); /* 10xxxxxx */ + } } - else if ((*(guchar *)p & 0xf8) == 0xf0) /* 11110xxx */ + else if (*(guchar *)p < 0xf5) /* 11110xxx excluding out-of-range */ { if (G_UNLIKELY (max_len - (p - str) < 4)) goto error; - - min = (1 << 16); - val = *(guchar *)p & 0x07; + + switch (*(guchar *)p++ & 0x07) + { + case 0: + VALIDATE_BYTE(0xc0, 0x80); /* 10xxxxxx */ + if (G_UNLIKELY((*(guchar *)p & 0x30) == 0)) + goto error; + break; + case 4: + VALIDATE_BYTE(0xf0, 0x80); /* 0x80 ... 0x8f */ + break; + default: + VALIDATE_BYTE(0xc0, 0x80); /* 10xxxxxx */ + } + p++; + VALIDATE_BYTE(0xc0, 0x80); /* 10xxxxxx */ } else goto error; - - p++; - CONTINUATION_CHAR; - TWO_REMAINING: - p++; - CONTINUATION_CHAR; - p++; - CONTINUATION_CHAR; - - if (G_UNLIKELY (val < min)) - goto error; - if (G_UNLIKELY (!UNICODE_VALID(val))) - goto error; - } - + } + + p++; + VALIDATE_BYTE(0xc0, 0x80); /* 10xxxxxx */ + continue; - + error: return last; } diff --git a/glib/gutils.c b/glib/gutils.c index e229d0d..43a2776 100644 --- a/glib/gutils.c +++ b/glib/gutils.c @@ -27,7 +27,8 @@ */ #include "config.h" -#include "glibconfig.h" + +#include "gutils.h" #include #include @@ -50,12 +51,6 @@ #include /* for _NSGetEnviron */ #endif -/* implement gutils's inline functions - */ -#define G_IMPLEMENT_INLINES 1 -#define __G_UTILS_C__ -#include "gutils.h" - #include "glib-init.h" #include "glib-private.h" #include "genviron.h" @@ -483,6 +478,10 @@ g_find_program_in_path (const gchar *program) return NULL; } +/* The functions below are defined this way for compatibility reasons. + * See the note in gutils.h. + */ + /** * g_bit_nth_lsf: * @mask: a #gulong containing flags @@ -493,8 +492,15 @@ g_find_program_in_path (const gchar *program) * from 0 (least significant) to sizeof(#gulong) * 8 - 1 (31 or 63, * usually). To start searching from the 0th bit, set @nth_bit to -1. * - * Returns: the index of the first bit set which is higher than @nth_bit + * Returns: the index of the first bit set which is higher than @nth_bit, or -1 + * if no higher bits are set */ +gint +(g_bit_nth_lsf) (gulong mask, + gint nth_bit) +{ + return g_bit_nth_lsf_impl (mask, nth_bit); +} /** * g_bit_nth_msf: @@ -507,8 +513,16 @@ g_find_program_in_path (const gchar *program) * usually). To start searching from the last bit, set @nth_bit to * -1 or GLIB_SIZEOF_LONG * 8. * - * Returns: the index of the first bit set which is lower than @nth_bit + * Returns: the index of the first bit set which is lower than @nth_bit, or -1 + * if no lower bits are set */ +gint +(g_bit_nth_msf) (gulong mask, + gint nth_bit) +{ + return g_bit_nth_msf_impl (mask, nth_bit); +} + /** * g_bit_storage: @@ -519,6 +533,11 @@ g_find_program_in_path (const gchar *program) * * Returns: the number of bits used to hold @number */ +guint +(g_bit_storage) (gulong number) +{ + return g_bit_storage_impl (number); +} G_LOCK_DEFINE_STATIC (g_utils_global); @@ -607,7 +626,7 @@ g_get_user_database_entry (void) gint error; gchar *logname; -# if defined (HAVE_POSIX_GETPWUID_R) || defined (HAVE_NONPOSIX_GETPWUID_R) +# if defined (HAVE_GETPWUID_R) struct passwd pwd; # ifdef _SC_GETPW_R_SIZE_MAX /* This reurns the maximum length */ @@ -630,7 +649,6 @@ g_get_user_database_entry (void) buffer = g_malloc (bufsize + 6); errno = 0; -# ifdef HAVE_POSIX_GETPWUID_R if (logname) { error = getpwnam_r (logname, &pwd, buffer, bufsize, &pw); if (!pw || (pw->pw_uid != getuid ())) { @@ -641,23 +659,6 @@ g_get_user_database_entry (void) error = getpwuid_r (getuid (), &pwd, buffer, bufsize, &pw); } error = error < 0 ? errno : error; -# else /* HAVE_NONPOSIX_GETPWUID_R */ -# if defined(_AIX) - error = getpwuid_r (getuid (), &pwd, buffer, bufsize); - pw = error == 0 ? &pwd : NULL; -# else /* !_AIX */ - if (logname) { - pw = getpwnam_r (logname, &pwd, buffer, bufsize); - if (!pw || (pw->pw_uid != getuid ())) { - /* LOGNAME is lying, fall back to looking up the uid */ - pw = getpwuid_r (getuid (), &pwd, buffer, bufsize); - } - } else { - pw = getpwuid_r (getuid (), &pwd, buffer, bufsize); - } - error = pw ? 0 : errno; -# endif /* !_AIX */ -# endif /* HAVE_NONPOSIX_GETPWUID_R */ if (!pw) { @@ -683,7 +684,7 @@ g_get_user_database_entry (void) } } while (!pw); -# endif /* HAVE_POSIX_GETPWUID_R || HAVE_NONPOSIX_GETPWUID_R */ +# endif /* HAVE_GETPWUID_R */ if (!pw) { @@ -1313,8 +1314,8 @@ g_get_user_cache_dir (void) * [XDG Base Directory Specification](http://www.freedesktop.org/Standards/basedir-spec). * This is the directory * specified in the `XDG_RUNTIME_DIR` environment variable. - * In the case that this variable is not set, GLib will issue a warning - * message to stderr and return the value of g_get_user_cache_dir(). + * In the case that this variable is not set, we return the value of + * g_get_user_cache_dir(), after verifying that it exists. * * On Windows this is the folder to use for local (as opposed to * roaming) application data. See documentation for @@ -1330,24 +1331,40 @@ g_get_user_runtime_dir (void) { #ifndef G_OS_WIN32 static const gchar *runtime_dir; - static gsize initialised; - if (g_once_init_enter (&initialised)) + if (g_once_init_enter (&runtime_dir)) { - runtime_dir = g_strdup (getenv ("XDG_RUNTIME_DIR")); - - g_once_init_leave (&initialised, 1); - } + const gchar *dir; - if (runtime_dir) - return runtime_dir; + dir = g_strdup (getenv ("XDG_RUNTIME_DIR")); - /* Both fallback for UNIX and the default - * in Windows: use the user cache directory. - */ -#endif + if (dir == NULL) + { + /* No need to strdup this one since it is valid forever. */ + dir = g_get_user_cache_dir (); + + /* The user should be able to rely on the directory existing + * when the function returns. Probably it already does, but + * let's make sure. Just do mkdir() directly since it will be + * no more expensive than a stat() in the case that the + * directory already exists and is a lot easier. + * + * $XDG_CACHE_HOME is probably ~/.cache/ so as long as $HOME + * exists this will work. If the user changed $XDG_CACHE_HOME + * then they can make sure that it exists... + */ + (void) mkdir (dir, 0700); + } + + g_assert (dir != NULL); + g_once_init_leave (&runtime_dir, dir); + } + + return runtime_dir; +#else /* Windows */ return g_get_user_cache_dir (); +#endif } #ifdef HAVE_CARBON @@ -2016,7 +2033,7 @@ g_get_system_config_dirs (void) /** * g_nullify_pointer: - * @nullify_location: the memory address of the pointer. + * @nullify_location: (not nullable): the memory address of the pointer. * * Set the pointer at the specified location to %NULL. **/ diff --git a/glib/gutils.h b/glib/gutils.h index 4a6e93b..b24bc0b 100644 --- a/glib/gutils.h +++ b/glib/gutils.h @@ -47,41 +47,6 @@ G_BEGIN_DECLS # 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 @@ -254,7 +219,7 @@ int atexit (void (*)(void)); #define g_atexit(func) atexit(func) #endif -#endif /* G_DISABLE_DEPRECATED */ +#endif /* Look for an executable in PATH, following execvp() rules */ @@ -262,19 +227,32 @@ GLIB_AVAILABLE_IN_ALL gchar* g_find_program_in_path (const gchar *program); /* Bit tests + * + * These are defined in a convoluted way because we want the compiler to + * be able to inline the code for performance reasons, but for + * historical reasons, we must continue to provide non-inline versions + * on our ABI. + * + * We define these as functions in gutils.c which are just implemented + * as calls to the _impl() versions in order to preserve the ABI. */ -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) +#define g_bit_nth_lsf(mask, nth_bit) g_bit_nth_lsf_impl(mask, nth_bit) +#define g_bit_nth_msf(mask, nth_bit) g_bit_nth_msf_impl(mask, nth_bit) +#define g_bit_storage(number) g_bit_storage_impl(number) + +GLIB_AVAILABLE_IN_ALL +gint (g_bit_nth_lsf) (gulong mask, + gint nth_bit); +GLIB_AVAILABLE_IN_ALL +gint (g_bit_nth_msf) (gulong mask, + gint nth_bit); +GLIB_AVAILABLE_IN_ALL +guint (g_bit_storage) (gulong number); + +static inline gint +g_bit_nth_lsf_impl (gulong mask, + gint nth_bit) { if (G_UNLIKELY (nth_bit < -1)) nth_bit = -1; @@ -282,13 +260,14 @@ g_bit_nth_lsf (gulong mask, { nth_bit++; if (mask & (1UL << nth_bit)) - return nth_bit; + return nth_bit; } return -1; } -G_INLINE_FUNC gint -g_bit_nth_msf (gulong mask, - gint nth_bit) + +static inline gint +g_bit_nth_msf_impl (gulong mask, + gint nth_bit) { if (nth_bit < 0 || G_UNLIKELY (nth_bit > GLIB_SIZEOF_LONG * 8)) nth_bit = GLIB_SIZEOF_LONG * 8; @@ -296,19 +275,20 @@ g_bit_nth_msf (gulong mask, { nth_bit--; if (mask & (1UL << nth_bit)) - return nth_bit; + return nth_bit; } return -1; } -G_INLINE_FUNC guint -g_bit_storage (gulong number) + +static inline guint +g_bit_storage_impl (gulong number) { #if defined(__GNUC__) && (__GNUC__ >= 4) && defined(__OPTIMIZE__) return G_LIKELY (number) ? - ((GLIB_SIZEOF_LONG * 8U - 1) ^ (guint) __builtin_clzl(number)) + 1 : 1; + ((GLIB_SIZEOF_LONG * 8U - 1) ^ (guint) __builtin_clzl(number)) + 1 : 1; #else guint n_bits = 0; - + do { n_bits++; @@ -318,7 +298,6 @@ g_bit_storage (gulong number) return n_bits; #endif } -#endif /* G_CAN_INLINE || __G_UTILS_C__ */ #ifndef G_DISABLE_DEPRECATED diff --git a/glib/gvariant-core.c b/glib/gvariant-core.c index a9f5d94..8301250 100644 --- a/glib/gvariant-core.c +++ b/glib/gvariant-core.c @@ -1023,7 +1023,7 @@ g_variant_get_child_value (GVariant *value, /** * g_variant_store: * @value: the #GVariant to store - * @data: the location to store the serialised data at + * @data: (not nullable): the location to store the serialised data at * * Stores the serialised form of @value at @data. @data should be * large enough. See g_variant_get_size(). diff --git a/glib/gvariant-parser.c b/glib/gvariant-parser.c index 3a8c63d..9f4bcc5 100644 --- a/glib/gvariant-parser.c +++ b/glib/gvariant-parser.c @@ -237,7 +237,7 @@ token_stream_prepare (TokenStream *stream) * Also: ] and > are never in format strings. */ for (end = stream->stream + 1; - end != stream->end && *end != ',' && + end != stream->end && *end != '\0' && *end != ',' && *end != ':' && *end != '>' && *end != ']' && !g_ascii_isspace (*end); end++) @@ -2346,7 +2346,8 @@ parse (TokenStream *stream, * with empty arrays). * * In the event that the parsing is successful, the resulting #GVariant - * is returned. + * is returned. It is never floating, and must be freed with + * g_variant_unref(). * * In case of any error, %NULL will be returned. If @error is non-%NULL * then it will be set to reflect the error that occurred. @@ -2354,7 +2355,7 @@ parse (TokenStream *stream, * Officially, the language understood by the parser is "any string * produced by g_variant_print()". * - * Returns: a reference to a #GVariant, or %NULL + * Returns: a non-floating reference to a #GVariant, or %NULL **/ GVariant * g_variant_parse (const GVariantType *type, diff --git a/glib/gvariant.c b/glib/gvariant.c index d5aee7d..85bb1ca 100644 --- a/glib/gvariant.c +++ b/glib/gvariant.c @@ -1217,7 +1217,9 @@ g_variant_new_fixed_array (const GVariantType *element_type, * * Creates a string #GVariant with the contents of @string. * - * @string must be valid UTF-8. + * @string must be valid UTF-8, and must not be %NULL. To encode + * potentially-%NULL strings, use g_variant_new() with `ms` as the + * [format string][gvariant-format-strings-maybe-types]. * * Returns: (transfer none): a floating reference to a new string #GVariant instance * @@ -1239,7 +1241,8 @@ g_variant_new_string (const gchar *string) * * Creates a string #GVariant with the contents of @string. * - * @string must be valid UTF-8. + * @string must be valid UTF-8, and must not be %NULL. To encode + * potentially-%NULL strings, use this with g_variant_new_maybe(). * * This function consumes @string. g_free() will be called on @string * when it is no longer required. @@ -1407,7 +1410,7 @@ g_variant_is_signature (const gchar *string) * type. This includes the types %G_VARIANT_TYPE_STRING, * %G_VARIANT_TYPE_OBJECT_PATH and %G_VARIANT_TYPE_SIGNATURE. * - * The string will always be UTF-8 encoded. + * The string will always be UTF-8 encoded, and will never be %NULL. * * If @length is non-%NULL then the length of the string (in bytes) is * returned there. For trusted values, this information is already @@ -5443,6 +5446,10 @@ g_variant_get_child (GVariant *value, GVariant *child; va_list ap; + /* if any direct-pointer-access formats are in use, flatten first */ + if (strchr (format_string, '&')) + g_variant_get_data (value); + child = g_variant_get_child_value (value, index_); g_return_if_fail (valid_format_string (format_string, TRUE, child)); diff --git a/glib/gversionmacros.h b/glib/gversionmacros.h index c4c04ad..a9a8c01 100644 --- a/glib/gversionmacros.h +++ b/glib/gversionmacros.h @@ -125,6 +125,36 @@ */ #define GLIB_VERSION_2_42 (G_ENCODE_VERSION (2, 42)) +/** + * GLIB_VERSION_2_44: + * + * A macro that evaluates to the 2.44 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.44 + */ +#define GLIB_VERSION_2_44 (G_ENCODE_VERSION (2, 44)) + +/** + * GLIB_VERSION_2_46: + * + * A macro that evaluates to the 2.46 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.46 + */ +#define GLIB_VERSION_2_46 (G_ENCODE_VERSION (2, 46)) + +/** + * GLIB_VERSION_2_48: + * + * A macro that evaluates to the 2.48 version of GLib, in a format + * that can be used by the C pre-processor. + * + * Since: 2.48 + */ +#define GLIB_VERSION_2_48 (G_ENCODE_VERSION (2, 48)) + /* evaluates to the current stable version; for development cycles, * this means the next stable target */ @@ -142,16 +172,6 @@ #endif /** - * GLIB_VERSION_2_44: - * - * A macro that evaluates to the 2.44 version of GLib, in a format - * that can be used by the C pre-processor. - * - * Since: 2.44 - */ -#define GLIB_VERSION_2_44 (G_ENCODE_VERSION (2, 44)) - -/** * GLIB_VERSION_MIN_REQUIRED: * * A macro that should be defined by the user prior to including @@ -366,4 +386,33 @@ # define GLIB_AVAILABLE_IN_2_44 _GLIB_EXTERN #endif +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_46 +# define GLIB_DEPRECATED_IN_2_46 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_46_FOR(f) GLIB_DEPRECATED_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_46 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_46_FOR(f) _GLIB_EXTERN +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_46 +# define GLIB_AVAILABLE_IN_2_46 GLIB_UNAVAILABLE(2, 46) +#else +# define GLIB_AVAILABLE_IN_2_46 _GLIB_EXTERN +#endif + +#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_48 +# define GLIB_DEPRECATED_IN_2_48 GLIB_DEPRECATED +# define GLIB_DEPRECATED_IN_2_48_FOR(f) GLIB_DEPRECATED_FOR(f) +#else +# define GLIB_DEPRECATED_IN_2_48 _GLIB_EXTERN +# define GLIB_DEPRECATED_IN_2_48_FOR(f) _GLIB_EXTERN +#endif + +#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_48 +# define GLIB_AVAILABLE_IN_2_48 GLIB_UNAVAILABLE(2, 48) +#else +# define GLIB_AVAILABLE_IN_2_48 _GLIB_EXTERN +#endif + + #endif /* __G_VERSION_MACROS_H__ */ diff --git a/glib/gwin32.c b/glib/gwin32.c index fc4416b..e9081cc 100644 --- a/glib/gwin32.c +++ b/glib/gwin32.c @@ -49,6 +49,23 @@ # include #endif /* _MSC_VER || __DMC__ */ +#define MODERN_API_FAMILY 2 + +#if WINAPI_FAMILY == MODERN_API_FAMILY +/* This is for modern UI Builds, where we can't use LoadLibraryW()/GetProcAddress() */ +/* ntddk.h is found in the WDK, and MinGW */ +#include + +#ifdef _MSC_VER +#pragma comment (lib, "ntoskrnl.lib") +#endif +#elif defined (__MINGW32__) +/* mingw-w64, not MinGW, has winternl.h */ +#include +#else +#include +#endif + #include "glib.h" #include "gthreadprivate.h" @@ -175,7 +192,7 @@ g_win32_error_message (gint error) { gchar *retval; wchar_t *msg = NULL; - int nchars; + size_t nchars; FormatMessageW (FORMAT_MESSAGE_ALLOCATE_BUFFER |FORMAT_MESSAGE_IGNORE_INSERTS @@ -185,12 +202,12 @@ g_win32_error_message (gint error) if (msg != NULL) { nchars = wcslen (msg); - - if (nchars > 2 && msg[nchars-1] == '\n' && msg[nchars-2] == '\r') - msg[nchars-2] = '\0'; - + + if (nchars >= 2 && msg[nchars-1] == L'\n' && msg[nchars-2] == L'\r') + msg[nchars-2] = L'\0'; + retval = g_utf16_to_utf8 (msg, -1, NULL, NULL, NULL); - + LocalFree (msg); } else @@ -516,8 +533,6 @@ g_win32_get_package_installation_subdirectory (const gchar *package, #endif -#define gwin32condmask(base,var) VerSetConditionMask (base, var, VER_GREATER_EQUAL) - /** * g_win32_check_windows_version: * @major: major version of Windows @@ -550,42 +565,77 @@ g_win32_check_windows_version (const gint major, const GWin32OSType os_type) { OSVERSIONINFOEXW osverinfo; - gboolean test_os_type; - const DWORDLONG conds = gwin32condmask (gwin32condmask (gwin32condmask (0, VER_MAJORVERSION), VER_MINORVERSION), VER_SERVICEPACKMAJOR); + gboolean is_ver_checked = FALSE; + gboolean is_type_checked = FALSE; + +#if WINAPI_FAMILY != MODERN_API_FAMILY + /* For non-modern UI Apps, use the LoadLibraryW()/GetProcAddress() thing */ + typedef NTSTATUS (WINAPI fRtlGetVersion) (PRTL_OSVERSIONINFOEXW); + + fRtlGetVersion *RtlGetVersion; + HMODULE hmodule; +#endif + /* We Only Support Checking for XP or later */ + g_return_val_if_fail (major >= 5 && (major <=6 || major == 10), FALSE); + g_return_val_if_fail ((major >= 5 && minor >= 1) || major >= 6, FALSE); + + /* Check for Service Pack Version >= 0 */ + g_return_val_if_fail (spver >= 0, FALSE); + +#if WINAPI_FAMILY != MODERN_API_FAMILY + hmodule = LoadLibraryW (L"ntdll.dll"); + g_return_val_if_fail (hmodule != NULL, FALSE); + + RtlGetVersion = (fRtlGetVersion *) GetProcAddress (hmodule, "RtlGetVersion"); + g_return_val_if_fail (RtlGetVersion != NULL, FALSE); +#endif memset (&osverinfo, 0, sizeof (OSVERSIONINFOEXW)); osverinfo.dwOSVersionInfoSize = sizeof (OSVERSIONINFOEXW); - osverinfo.dwPlatformId = VER_PLATFORM_WIN32_NT; - osverinfo.dwMajorVersion = major; - osverinfo.dwMinorVersion = minor; - osverinfo.wServicePackMajor = spver; + RtlGetVersion (&osverinfo); - switch (os_type) + /* check the OS and Service Pack Versions */ + if (osverinfo.dwMajorVersion > major) + is_ver_checked = TRUE; + else if (osverinfo.dwMajorVersion == major) { - case G_WIN32_OS_WORKSTATION: - osverinfo.wProductType = VER_NT_WORKSTATION; - test_os_type = TRUE; - break; - case G_WIN32_OS_SERVER: - osverinfo.wProductType = VER_NT_SERVER; - test_os_type = TRUE; - break; - default: - test_os_type = FALSE; - break; + if (osverinfo.dwMinorVersion > minor) + is_ver_checked = TRUE; + else if (osverinfo.dwMinorVersion == minor) + if (osverinfo.wServicePackMajor >= spver) + is_ver_checked = TRUE; } - if (test_os_type) - return VerifyVersionInfoW (&osverinfo, - VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR | VER_PRODUCT_TYPE, - gwin32condmask (conds, VER_PRODUCT_TYPE)); - else - return VerifyVersionInfoW (&osverinfo, - VER_MAJORVERSION | VER_MINORVERSION | VER_SERVICEPACKMAJOR, - conds); -} + /* Check OS Type */ + if (is_ver_checked) + { + switch (os_type) + { + case G_WIN32_OS_ANY: + is_type_checked = TRUE; + break; + case G_WIN32_OS_WORKSTATION: + if (osverinfo.wProductType == VER_NT_WORKSTATION) + is_type_checked = TRUE; + break; + case G_WIN32_OS_SERVER: + if (osverinfo.wProductType == VER_NT_SERVER || + osverinfo.wProductType == VER_NT_DOMAIN_CONTROLLER) + is_type_checked = TRUE; + break; + default: + /* shouldn't get here normally */ + g_warning ("Invalid os_type specified"); + break; + } + } -#undef gwin32condmask +#if WINAPI_FAMILY != MODERN_API_FAMILY + FreeLibrary (hmodule); +#endif + + return is_ver_checked && is_type_checked; +} /** * g_win32_get_windows_version: @@ -729,5 +779,6 @@ g_win32_get_command_line (void) result[i] = g_utf16_to_utf8 (args[i], -1, NULL, NULL, NULL); result[i] = NULL; + LocalFree (args); return result; } diff --git a/glib/libcharset/.gitignore b/glib/libcharset/.gitignore deleted file mode 100644 index 0cef440..0000000 --- a/glib/libcharset/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -charset.alias -ref-add.sed -ref-del.sed diff --git a/glib/libcharset/Makefile.in b/glib/libcharset/Makefile.in new file mode 100644 index 0000000..e2685df --- /dev/null +++ b/glib/libcharset/Makefile.in @@ -0,0 +1,1546 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +subdir = glib/libcharset +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES) +libcharset_la_LIBADD = +am_libcharset_la_OBJECTS = libcharset_la-localcharset.lo +libcharset_la_OBJECTS = $(am_libcharset_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libcharset_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libcharset_la_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libcharset_la_SOURCES) +DIST_SOURCES = $(libcharset_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/glib.mk $(top_srcdir)/test-driver README +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = +BUILT_EXTRA_DIST = +CLEANFILES = *.log *.trs $(am__append_14) charset.alias ref-add.sed \ + ref-del.sed +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) README \ + config.charset ref-add.sin ref-del.sin glibc21.m4 codeset.m4 \ + update.sh make-patch.sh libcharset-glib.patch + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) libcharset.la +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +AM_CPPFLAGS = \ + -DLIBDIR=\"$(libdir)\" \ + $(config_h_INCLUDES) + +libcharset_la_CFLAGS = $(GLIB_HIDDEN_VISIBILITY_CFLAGS) +libcharset_la_SOURCES = \ + libcharset.h \ + localcharset.h \ + localcharset.c + +charset_alias = $(DESTDIR)$(libdir)/charset.alias +charset_tmp = $(DESTDIR)$(libdir)/charset.tmp +SUFFIXES = .sed .sin +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .sed .sin .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glib/libcharset/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu glib/libcharset/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libcharset.la: $(libcharset_la_OBJECTS) $(libcharset_la_DEPENDENCIES) $(EXTRA_libcharset_la_DEPENDENCIES) + $(AM_V_CCLD)$(libcharset_la_LINK) $(libcharset_la_OBJECTS) $(libcharset_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcharset_la-localcharset.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libcharset_la-localcharset.lo: localcharset.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcharset_la_CFLAGS) $(CFLAGS) -MT libcharset_la-localcharset.lo -MD -MP -MF $(DEPDIR)/libcharset_la-localcharset.Tpo -c -o libcharset_la-localcharset.lo `test -f 'localcharset.c' || echo '$(srcdir)/'`localcharset.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcharset_la-localcharset.Tpo $(DEPDIR)/libcharset_la-localcharset.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='localcharset.c' object='libcharset_la-localcharset.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libcharset_la_CFLAGS) $(CFLAGS) -c -o libcharset_la-localcharset.lo `test -f 'localcharset.c' || echo '$(srcdir)/'`localcharset.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ + all-local +installdirs: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-exec-local + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-local \ + uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \ + check-am check-local clean clean-checkLTLIBRARIES \ + clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-exec-local install-html \ + install-html-am install-info install-info-am \ + install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-local \ + uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) +install-exec-local: all-local + $(mkinstalldirs) $(DESTDIR)$(libdir) + if test -f $(charset_alias); then \ + sed -f ref-add.sed $(charset_alias) > $(charset_tmp) ; \ + $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \ + rm -f $(charset_tmp) ; \ + else \ + if test @GLIBC21@ = no; then \ + sed -f ref-add.sed charset.alias > $(charset_tmp) ; \ + $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \ + rm -f $(charset_tmp) ; \ + fi ; \ + fi + +uninstall-local: all-local + if test -f $(charset_alias); then \ + sed -f ref-del.sed $(charset_alias) > $(charset_tmp); \ + if grep '^# Packages using this file: $$' $(charset_tmp) \ + > /dev/null; then \ + rm -f $(charset_alias); \ + else \ + $(INSTALL_DATA) $(charset_tmp) $(charset_alias); \ + fi; \ + rm -f $(charset_tmp); \ + fi + +charset.alias: config.charset + $(AM_V_GEN) $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ + @mv t-$@ $@ + +all-local: ref-add.sed ref-del.sed charset.alias +.sin.sed: + $(AM_V_GEN) $(SED) -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > t-$@ + @mv t-$@ $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/glib/makefile.msc b/glib/makefile.msc new file mode 100644 index 0000000..0eb2ad0 --- /dev/null +++ b/glib/makefile.msc @@ -0,0 +1,143 @@ +## Makefile for building the GLib dlls with Microsoft C +## Use: nmake -f makefile.msc + +TOP = ..\.. + +!INCLUDE ..\build\win32\make.msc + +################################################################ + +INCLUDES = -FImsvc_recommended_pragmas.h -I . -I .. +DEFINES = \ + -DHAVE_CONFIG_H -DGLIB_COMPILATION -DG_LOG_DOMAIN=\"GLib\" \ + -DG_ENABLE_DEBUG -DPCRE_STATIC -DG_DISABLE_DEPRECATED \ + -DDLL_EXPORT=1 + +DEPCFLAGS = -Zm400 $(INTL_CFLAGS) $(DIRENT_CFLAGS) + +all : \ + ..\config.h \ + ..\glibconfig.h \ + gnulib\gnulib.lib \ + pcre\pcre.lib \ + libglib-2.0-0.dll \ + glib-2.48s.lib \ + gspawn-win32-helper.exe \ + gspawn-win32-helper-console.exe \ + + +gnulib\gnulib.lib : + cd gnulib + nmake -f makefile.msc + cd .. + +pcre\pcre.lib : + cd pcre + nmake -f makefile.msc + cd .. + +glib_OBJECTS = \ + garray.obj \ + gasyncqueue.obj \ + gatomic.obj \ + gbacktrace.obj \ + gbase64.obj \ + gbookmarkfile.obj \ + gcache.obj \ + gchecksum.obj \ + gcompletion.obj \ + gconvert.obj \ + gdataset.obj \ + gdate.obj \ + gdir.obj \ + gerror.obj \ + gfileutils.obj \ + ghash.obj \ + ghostutils.obj \ + ghook.obj \ + giochannel.obj \ + giowin32.obj \ + gpoll.obj \ + gkeyfile.obj \ + glist.obj \ + gmain.obj \ + gmappedfile.obj \ + gmarkup.obj \ + gmem.obj \ + gmessages.obj \ + gnode.obj \ + goption.obj \ + gpattern.obj \ + gprimes.obj \ + gprintf.obj \ + gqsort.obj \ + gqueue.obj \ + grand.obj \ + gregex.obj \ + grel.obj \ + gscanner.obj \ + gsequence.obj \ + gshell.obj \ + gslice.obj \ + gslist.obj \ + gspawn-win32.obj \ + gstdio.obj \ + gstrfuncs.obj \ + gstring.obj \ + gtestutils.obj \ + gthread.obj \ + gthreadpool.obj \ + gtimer.obj \ + gtree.obj \ + gunibreak.obj \ + gunicollate.obj \ + gunidecomp.obj \ + guniprop.obj \ + gurifuncs.obj \ + gutf8.obj \ + gutils.obj \ + gwin32.obj \ + localcharset.obj + +..\glibconfig.h: ..\glibconfig.h.win32 + copy ..\glibconfig.h.win32 ..\glibconfig.h + +..\config.h: ..\config.h.win32 + copy ..\config.h.win32 ..\config.h + +localcharset.obj : libcharset\localcharset.c + $(CC) $(CFLAGS) -DLIBDIR=\".\" -c libcharset\localcharset.c + +glib.def: glib.symbols + echo EXPORTS > glib.def + cl /EP -DINCLUDE_VARIABLES -DG_OS_WIN32 -DINCLUDE_INTERNAL_SYMBOLS -DALL_FILES \ + -DG_GNUC_MALLOC= -DG_GNUC_CONST= -DG_GNUC_NULL_TERMINATED= -DG_GNUC_NORETURN= \ + -DG_GNUC_PRINTF=;G_GNUC_PRINTF -DG_GNUC_FORMAT=;G_GNUC_FORMAT glib.symbols >> glib.def + +glib.res : glib.rc + rc -DBUILDNUMBER=0 -r -fo glib.res glib.rc + +################ glib + +# create a static libary +# static library can well have the real version number in the name +glib-2.48s.lib : $(glib_OBJECTS) gnulib\gnulib.lib pcre\pcre.lib + lib /out:glib-2.48s.lib $(glib_OBJECTS) gnulib\gnulib.lib pcre\pcre.lib + +libglib-2.0-0.dll : $(glib_OBJECTS) gnulib\gnulib.lib pcre\pcre.lib glib.def glib.res + $(CC) $(CFLAGS) -LD -Fe$@ $(glib_OBJECTS) glib.res $(INTL_LIBS) \ + gnulib\gnulib.lib pcre\pcre.lib $(DIRENT_LIBS) user32.lib advapi32.lib shell32.lib wsock32.lib ole32.lib ws2_32.lib winmm.lib \ + $(LDFLAGS) /implib:glib-2.0.lib /def:glib.def + +gspawn-win32-helper.exe : gspawn-win32-helper.c libglib-2.0-0.dll + $(CC) $(CFLAGS) -Fe$@ -DG_LOG_DOMAIN=\"gspawn-win32-helper\" gspawn-win32-helper.c glib-2.0.lib $(LDFLAGS) /subsystem:windows user32.lib + +gspawn-win32-helper-console.exe : gspawn-win32-helper.c libglib-2.0-0.dll + $(CC) $(CFLAGS) -Fe$@ -DG_LOG_DOMAIN=\"gspawn-win32-helper\" gspawn-win32-helper.c glib-2.0.lib $(LDFLAGS) /subsystem:console user32.lib + +################ other stuff + +clean:: + del ..\config.h + del ..\glibconfig.h + diff --git a/glib/pcre/Makefile.am b/glib/pcre/Makefile.am index 386b7ab..5e1e98d 100644 --- a/glib/pcre/Makefile.am +++ b/glib/pcre/Makefile.am @@ -52,6 +52,7 @@ libpcre_la_SOURCES = \ pcre_study.c \ pcre_tables.c \ pcre_valid_utf8.c \ + pcre_version.c \ pcre_xclass.c \ pcre.h \ pcre_internal.h \ diff --git a/glib/pcre/Makefile.in b/glib/pcre/Makefile.in new file mode 100644 index 0000000..e70ea78 --- /dev/null +++ b/glib/pcre/Makefile.in @@ -0,0 +1,1697 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +subdir = glib/pcre +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES) +libpcre_la_DEPENDENCIES = +am_libpcre_la_OBJECTS = libpcre_la-pcre_byte_order.lo \ + libpcre_la-pcre_chartables.lo libpcre_la-pcre_compile.lo \ + libpcre_la-pcre_config.lo libpcre_la-pcre_dfa_exec.lo \ + libpcre_la-pcre_exec.lo libpcre_la-pcre_fullinfo.lo \ + libpcre_la-pcre_get.lo libpcre_la-pcre_globals.lo \ + libpcre_la-pcre_jit_compile.lo libpcre_la-pcre_newline.lo \ + libpcre_la-pcre_ord2utf8.lo libpcre_la-pcre_string_utils.lo \ + libpcre_la-pcre_study.lo libpcre_la-pcre_tables.lo \ + libpcre_la-pcre_valid_utf8.lo libpcre_la-pcre_version.lo \ + libpcre_la-pcre_xclass.lo +libpcre_la_OBJECTS = $(am_libpcre_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libpcre_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libpcre_la_CFLAGS) \ + $(CFLAGS) $(libpcre_la_LDFLAGS) $(LDFLAGS) -o $@ +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libpcre_la_SOURCES) +DIST_SOURCES = $(libpcre_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/glib.mk $(top_srcdir)/test-driver COPYING +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = +BUILT_EXTRA_DIST = +CLEANFILES = *.log *.trs $(am__append_14) +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) COPYING \ + makefile.msc + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) libpcre.la +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +libpcre_la_CPPFLAGS = \ + -DG_LOG_DOMAIN=\"GLib-GRegex\" \ + -DHAVE_CONFIG_H \ + -DHAVE_MEMMOVE \ + -DSUPPORT_UCP \ + -DSUPPORT_UTF \ + -DSUPPORT_UTF8 \ + -DNEWLINE=-1 \ + -DMATCH_LIMIT=10000000 \ + -DMATCH_LIMIT_RECURSION=8192 \ + -DMAX_NAME_SIZE=32 \ + -DMAX_NAME_COUNT=10000 \ + -DMAX_DUPLENGTH=30000 \ + -DLINK_SIZE=2 \ + -DPOSIX_MALLOC_THRESHOLD=10 \ + -DPCRE_STATIC \ + -UBSR_ANYCRLF \ + -UEBCDIC \ + $(glib_INCLUDES) \ + @GLIB_DEBUG_FLAGS@ \ + -DGLIB_COMPILATION \ + $(AM_CPPFLAGS) + +libpcre_la_CFLAGS = \ + $(GLIB_HIDDEN_VISIBILITY_CFLAGS) \ + $(PCRE_WARN_CFLAGS) \ + $(DEP_CFLAGS) \ + $(AM_CFLAGS) + +libpcre_la_LDFLAGS = \ + -no-undefined \ + $(AM_LDFLAGS) + +libpcre_la_SOURCES = \ + pcre_byte_order.c \ + pcre_chartables.c \ + pcre_compile.c \ + pcre_config.c \ + pcre_dfa_exec.c \ + pcre_exec.c \ + pcre_fullinfo.c \ + pcre_get.c \ + pcre_globals.c \ + pcre_jit_compile.c \ + pcre_newline.c \ + pcre_ord2utf8.c \ + pcre_string_utils.c \ + pcre_study.c \ + pcre_tables.c \ + pcre_valid_utf8.c \ + pcre_version.c \ + pcre_xclass.c \ + pcre.h \ + pcre_internal.h \ + ucp.h + +libpcre_la_LIBADD = $(DEP_LIBS) +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glib/pcre/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu glib/pcre/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libpcre.la: $(libpcre_la_OBJECTS) $(libpcre_la_DEPENDENCIES) $(EXTRA_libpcre_la_DEPENDENCIES) + $(AM_V_CCLD)$(libpcre_la_LINK) $(libpcre_la_OBJECTS) $(libpcre_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_byte_order.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_chartables.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_compile.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_config.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_dfa_exec.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_exec.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_fullinfo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_get.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_globals.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_jit_compile.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_newline.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_ord2utf8.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_string_utils.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_study.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_tables.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_valid_utf8.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_version.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpcre_la-pcre_xclass.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libpcre_la-pcre_byte_order.lo: pcre_byte_order.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_byte_order.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_byte_order.Tpo -c -o libpcre_la-pcre_byte_order.lo `test -f 'pcre_byte_order.c' || echo '$(srcdir)/'`pcre_byte_order.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_byte_order.Tpo $(DEPDIR)/libpcre_la-pcre_byte_order.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_byte_order.c' object='libpcre_la-pcre_byte_order.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_byte_order.lo `test -f 'pcre_byte_order.c' || echo '$(srcdir)/'`pcre_byte_order.c + +libpcre_la-pcre_chartables.lo: pcre_chartables.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_chartables.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_chartables.Tpo -c -o libpcre_la-pcre_chartables.lo `test -f 'pcre_chartables.c' || echo '$(srcdir)/'`pcre_chartables.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_chartables.Tpo $(DEPDIR)/libpcre_la-pcre_chartables.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_chartables.c' object='libpcre_la-pcre_chartables.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_chartables.lo `test -f 'pcre_chartables.c' || echo '$(srcdir)/'`pcre_chartables.c + +libpcre_la-pcre_compile.lo: pcre_compile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_compile.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_compile.Tpo -c -o libpcre_la-pcre_compile.lo `test -f 'pcre_compile.c' || echo '$(srcdir)/'`pcre_compile.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_compile.Tpo $(DEPDIR)/libpcre_la-pcre_compile.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_compile.c' object='libpcre_la-pcre_compile.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_compile.lo `test -f 'pcre_compile.c' || echo '$(srcdir)/'`pcre_compile.c + +libpcre_la-pcre_config.lo: pcre_config.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_config.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_config.Tpo -c -o libpcre_la-pcre_config.lo `test -f 'pcre_config.c' || echo '$(srcdir)/'`pcre_config.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_config.Tpo $(DEPDIR)/libpcre_la-pcre_config.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_config.c' object='libpcre_la-pcre_config.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_config.lo `test -f 'pcre_config.c' || echo '$(srcdir)/'`pcre_config.c + +libpcre_la-pcre_dfa_exec.lo: pcre_dfa_exec.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_dfa_exec.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_dfa_exec.Tpo -c -o libpcre_la-pcre_dfa_exec.lo `test -f 'pcre_dfa_exec.c' || echo '$(srcdir)/'`pcre_dfa_exec.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_dfa_exec.Tpo $(DEPDIR)/libpcre_la-pcre_dfa_exec.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_dfa_exec.c' object='libpcre_la-pcre_dfa_exec.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_dfa_exec.lo `test -f 'pcre_dfa_exec.c' || echo '$(srcdir)/'`pcre_dfa_exec.c + +libpcre_la-pcre_exec.lo: pcre_exec.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_exec.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_exec.Tpo -c -o libpcre_la-pcre_exec.lo `test -f 'pcre_exec.c' || echo '$(srcdir)/'`pcre_exec.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_exec.Tpo $(DEPDIR)/libpcre_la-pcre_exec.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_exec.c' object='libpcre_la-pcre_exec.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_exec.lo `test -f 'pcre_exec.c' || echo '$(srcdir)/'`pcre_exec.c + +libpcre_la-pcre_fullinfo.lo: pcre_fullinfo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_fullinfo.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_fullinfo.Tpo -c -o libpcre_la-pcre_fullinfo.lo `test -f 'pcre_fullinfo.c' || echo '$(srcdir)/'`pcre_fullinfo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_fullinfo.Tpo $(DEPDIR)/libpcre_la-pcre_fullinfo.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_fullinfo.c' object='libpcre_la-pcre_fullinfo.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_fullinfo.lo `test -f 'pcre_fullinfo.c' || echo '$(srcdir)/'`pcre_fullinfo.c + +libpcre_la-pcre_get.lo: pcre_get.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_get.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_get.Tpo -c -o libpcre_la-pcre_get.lo `test -f 'pcre_get.c' || echo '$(srcdir)/'`pcre_get.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_get.Tpo $(DEPDIR)/libpcre_la-pcre_get.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_get.c' object='libpcre_la-pcre_get.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_get.lo `test -f 'pcre_get.c' || echo '$(srcdir)/'`pcre_get.c + +libpcre_la-pcre_globals.lo: pcre_globals.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_globals.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_globals.Tpo -c -o libpcre_la-pcre_globals.lo `test -f 'pcre_globals.c' || echo '$(srcdir)/'`pcre_globals.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_globals.Tpo $(DEPDIR)/libpcre_la-pcre_globals.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_globals.c' object='libpcre_la-pcre_globals.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_globals.lo `test -f 'pcre_globals.c' || echo '$(srcdir)/'`pcre_globals.c + +libpcre_la-pcre_jit_compile.lo: pcre_jit_compile.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_jit_compile.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_jit_compile.Tpo -c -o libpcre_la-pcre_jit_compile.lo `test -f 'pcre_jit_compile.c' || echo '$(srcdir)/'`pcre_jit_compile.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_jit_compile.Tpo $(DEPDIR)/libpcre_la-pcre_jit_compile.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_jit_compile.c' object='libpcre_la-pcre_jit_compile.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_jit_compile.lo `test -f 'pcre_jit_compile.c' || echo '$(srcdir)/'`pcre_jit_compile.c + +libpcre_la-pcre_newline.lo: pcre_newline.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_newline.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_newline.Tpo -c -o libpcre_la-pcre_newline.lo `test -f 'pcre_newline.c' || echo '$(srcdir)/'`pcre_newline.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_newline.Tpo $(DEPDIR)/libpcre_la-pcre_newline.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_newline.c' object='libpcre_la-pcre_newline.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_newline.lo `test -f 'pcre_newline.c' || echo '$(srcdir)/'`pcre_newline.c + +libpcre_la-pcre_ord2utf8.lo: pcre_ord2utf8.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_ord2utf8.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_ord2utf8.Tpo -c -o libpcre_la-pcre_ord2utf8.lo `test -f 'pcre_ord2utf8.c' || echo '$(srcdir)/'`pcre_ord2utf8.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_ord2utf8.Tpo $(DEPDIR)/libpcre_la-pcre_ord2utf8.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_ord2utf8.c' object='libpcre_la-pcre_ord2utf8.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_ord2utf8.lo `test -f 'pcre_ord2utf8.c' || echo '$(srcdir)/'`pcre_ord2utf8.c + +libpcre_la-pcre_string_utils.lo: pcre_string_utils.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_string_utils.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_string_utils.Tpo -c -o libpcre_la-pcre_string_utils.lo `test -f 'pcre_string_utils.c' || echo '$(srcdir)/'`pcre_string_utils.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_string_utils.Tpo $(DEPDIR)/libpcre_la-pcre_string_utils.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_string_utils.c' object='libpcre_la-pcre_string_utils.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_string_utils.lo `test -f 'pcre_string_utils.c' || echo '$(srcdir)/'`pcre_string_utils.c + +libpcre_la-pcre_study.lo: pcre_study.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_study.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_study.Tpo -c -o libpcre_la-pcre_study.lo `test -f 'pcre_study.c' || echo '$(srcdir)/'`pcre_study.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_study.Tpo $(DEPDIR)/libpcre_la-pcre_study.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_study.c' object='libpcre_la-pcre_study.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_study.lo `test -f 'pcre_study.c' || echo '$(srcdir)/'`pcre_study.c + +libpcre_la-pcre_tables.lo: pcre_tables.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_tables.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_tables.Tpo -c -o libpcre_la-pcre_tables.lo `test -f 'pcre_tables.c' || echo '$(srcdir)/'`pcre_tables.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_tables.Tpo $(DEPDIR)/libpcre_la-pcre_tables.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_tables.c' object='libpcre_la-pcre_tables.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_tables.lo `test -f 'pcre_tables.c' || echo '$(srcdir)/'`pcre_tables.c + +libpcre_la-pcre_valid_utf8.lo: pcre_valid_utf8.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_valid_utf8.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_valid_utf8.Tpo -c -o libpcre_la-pcre_valid_utf8.lo `test -f 'pcre_valid_utf8.c' || echo '$(srcdir)/'`pcre_valid_utf8.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_valid_utf8.Tpo $(DEPDIR)/libpcre_la-pcre_valid_utf8.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_valid_utf8.c' object='libpcre_la-pcre_valid_utf8.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_valid_utf8.lo `test -f 'pcre_valid_utf8.c' || echo '$(srcdir)/'`pcre_valid_utf8.c + +libpcre_la-pcre_version.lo: pcre_version.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_version.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_version.Tpo -c -o libpcre_la-pcre_version.lo `test -f 'pcre_version.c' || echo '$(srcdir)/'`pcre_version.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_version.Tpo $(DEPDIR)/libpcre_la-pcre_version.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_version.c' object='libpcre_la-pcre_version.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_version.lo `test -f 'pcre_version.c' || echo '$(srcdir)/'`pcre_version.c + +libpcre_la-pcre_xclass.lo: pcre_xclass.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -MT libpcre_la-pcre_xclass.lo -MD -MP -MF $(DEPDIR)/libpcre_la-pcre_xclass.Tpo -c -o libpcre_la-pcre_xclass.lo `test -f 'pcre_xclass.c' || echo '$(srcdir)/'`pcre_xclass.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpcre_la-pcre_xclass.Tpo $(DEPDIR)/libpcre_la-pcre_xclass.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pcre_xclass.c' object='libpcre_la-pcre_xclass.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpcre_la_CPPFLAGS) $(CPPFLAGS) $(libpcre_la_CFLAGS) $(CFLAGS) -c -o libpcre_la-pcre_xclass.lo `test -f 'pcre_xclass.c' || echo '$(srcdir)/'`pcre_xclass.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \ + check-local clean clean-checkLTLIBRARIES clean-checkPROGRAMS \ + clean-generic clean-installed_testLTLIBRARIES \ + clean-installed_testPROGRAMS clean-libtool \ + clean-noinstLTLIBRARIES clean-noinstPROGRAMS cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/glib/pcre/pcre_version.c b/glib/pcre/pcre_version.c new file mode 100644 index 0000000..58a0eaa --- /dev/null +++ b/glib/pcre/pcre_version.c @@ -0,0 +1,95 @@ +/************************************************* +* Perl-Compatible Regular Expressions * +*************************************************/ + +/* PCRE is a library of functions to support regular expressions whose syntax +and semantics are as close as possible to those of the Perl 5 language. + + Written by Philip Hazel + Copyright (c) 1997-2012 University of Cambridge + +----------------------------------------------------------------------------- +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the University of Cambridge nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +----------------------------------------------------------------------------- +*/ + + +/* This module contains the external function pcre_version(), which returns a +string that identifies the PCRE version that is in use. */ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "pcre_internal.h" + + +/************************************************* +* Return version string * +*************************************************/ + +/* These macros are the standard way of turning unquoted text into C strings. +They allow macros like PCRE_MAJOR to be defined without quotes, which is +convenient for user programs that want to test its value. */ + +#define STRING(a) # a +#define XSTRING(s) STRING(s) + +/* A problem turned up with PCRE_PRERELEASE, which is defined empty for +production releases. Originally, it was used naively in this code: + + return XSTRING(PCRE_MAJOR) + "." XSTRING(PCRE_MINOR) + XSTRING(PCRE_PRERELEASE) + " " XSTRING(PCRE_DATE); + +However, when PCRE_PRERELEASE is empty, this leads to an attempted expansion of +STRING(). The C standard states: "If (before argument substitution) any +argument consists of no preprocessing tokens, the behavior is undefined." It +turns out the gcc treats this case as a single empty string - which is what we +really want - but Visual C grumbles about the lack of an argument for the +macro. Unfortunately, both are within their rights. To cope with both ways of +handling this, I had resort to some messy hackery that does a test at run time. +I could find no way of detecting that a macro is defined as an empty string at +pre-processor time. This hack uses a standard trick for avoiding calling +the STRING macro with an empty argument when doing the test. */ + +#ifdef COMPILE_PCRE8 +PCRE_EXP_DEFN const char * PCRE_CALL_CONVENTION +pcre_version(void) +#else +PCRE_EXP_DEFN const char * PCRE_CALL_CONVENTION +pcre16_version(void) +#endif +{ +return (XSTRING(Z PCRE_PRERELEASE)[1] == 0)? + XSTRING(PCRE_MAJOR.PCRE_MINOR PCRE_DATE) : + XSTRING(PCRE_MAJOR.PCRE_MINOR) XSTRING(PCRE_PRERELEASE PCRE_DATE); +} + +/* End of pcre_version.c */ diff --git a/glib/tests/.gitignore b/glib/tests/.gitignore deleted file mode 100644 index 33ef15e..0000000 --- a/glib/tests/.gitignore +++ /dev/null @@ -1,85 +0,0 @@ -1bit-emufutex -1bit-mutex -642026 -642026-ec -array-test -asyncqueue -atomic -base64 -bitlock -bookmarkfile -bytes -cache -checksum -collate -cond -convert -dataset -date -dir -environment -error -fileutils -gdatetime -gvariant -gwakeup -gwakeup-fallback -hash -hmac -hook -hostutils -include -keyfile -list -logging -mainloop -malloc -mappedfile -markup -markup-collect -markup-escape -markup-parse -markup-subparser -mem-overflow -mutex -node -once -option-argv0 -option-context -pattern -private -protocol -queue -rand -rec-mutex -regex -rwlock -scannerapi -search-utils -sequence -shell -slice -slist -sort -spawn-multithreaded -spawn-singlethread -strfuncs -string -testing -test-printf -test-spawn-echo -thread -timeout -timer -tmpsample.xml -tree -unicode -unix -unix-multithreaded -unix-nothreads -uri -utf8-misc -utf8-performance -utf8-pointer -utf8-validate -utils diff --git a/glib/tests/1bit-mutex.c b/glib/tests/1bit-mutex.c index 897bd4b..fb29ec1 100644 --- a/glib/tests/1bit-mutex.c +++ b/glib/tests/1bit-mutex.c @@ -76,7 +76,7 @@ acquire (int nr, : g_bit_trylock (&locks[nr], bits[nr]))) { if (g_test_verbose ()) - g_print ("thread %p going to block on lock %d\n", self, nr); + g_printerr ("thread %p going to block on lock %d\n", self, nr); if (use_pointers) g_pointer_bit_lock (&ptrs[nr], bits[nr]); diff --git a/glib/tests/Makefile.am b/glib/tests/Makefile.am index bdcd0cb..ff3cba7 100644 --- a/glib/tests/Makefile.am +++ b/glib/tests/Makefile.am @@ -1,9 +1,20 @@ include $(top_srcdir)/glib-tap.mk +if USE_SYSTEM_PCRE +pcre_lib = $(PCRE_LIBS) +pcre_inc = $(PCRE_CFLAGS) +else +pcre_lib = $(top_builddir)/glib/pcre/libpcre.la +pcre_inc = +endif + LDADD = $(top_builddir)/glib/libglib-2.0.la -lm AM_CPPFLAGS = -g $(glib_INCLUDES) $(GLIB_DEBUG_FLAGS) DEFS = -DG_LOG_DOMAIN=\"GLib\" -DEXEEXT=\"$(EXEEXT)\" -AM_CFLAGS = $(GLIB_WARN_CFLAGS) +AM_CFLAGS = $(GLIB_WARN_CFLAGS) $(pcre_inc) + +# The regex test uses pcre_version() +regex_LDADD = $(LDADD) $(pcre_lib) # These tests corrupt the gcov bookkeeping, so we # skip them. See bug 682133 @@ -57,7 +68,6 @@ test_programs = \ list \ logging \ mainloop \ - malloc \ mappedfile \ markup \ markup-parse \ @@ -70,6 +80,8 @@ test_programs = \ once \ option-context \ option-argv0 \ + overflow \ + overflow-fallback \ pattern \ private \ protocol \ @@ -166,6 +178,9 @@ if HAVE_GCC atomic_CFLAGS += -Wstrict-aliasing=2 endif +overflow_fallback_SOURCES = overflow.c +overflow_fallback_FALGS = $(AM_CFLAGS) -D_GLIB_TEST_OVERFLOW_FALLBACK + test_programs += 642026-ec 642026_ec_SOURCES = 642026.c 642026_ec_CFLAGS = -DG_ERRORCHECK_MUTEXES @@ -193,7 +208,7 @@ gtester-xmllint-check: # check testreport xml with xmllint if present ${GTESTER} -k --quiet -o tmpsample.xml --test-arg=--gtester-selftest ${GTESTER} ${XMLLINT} --version 2>/dev/null; test "$$?" != 0 || ${XMLLINT} --noout tmpsample.xml -CLEANFILES += tmpsample.xml key_file_* out.xbel +CLEANFILES += tmpsample.xml check-am: gtester-xmllint-check diff --git a/glib/tests/Makefile.in b/glib/tests/Makefile.in new file mode 100644 index 0000000..1073d06 --- /dev/null +++ b/glib/tests/Makefile.in @@ -0,0 +1,3048 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +TESTS = $(am__EXEEXT_4) $(am__EXEEXT_6) +installed_test_PROGRAMS = $(am__EXEEXT_10) +noinst_PROGRAMS = $(am__EXEEXT_11) +check_PROGRAMS = $(am__EXEEXT_9) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_1 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_5 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_9 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(installed_test_meta_DATA) +@HAVE_GCC_TRUE@am__append_14 = -Wstrict-aliasing=2 + +# ----------------------------------------------------------------------------- +@OS_UNIX_TRUE@am__append_15 = \ +@OS_UNIX_TRUE@ unix \ +@OS_UNIX_TRUE@ include \ +@OS_UNIX_TRUE@ $(NULL) + +@OS_UNIX_TRUE@am__append_16 = tmpsample.xml +@HAVE_GCC_TRUE@am__append_17 = \ +@HAVE_GCC_TRUE@ autoptr \ +@HAVE_GCC_TRUE@ $(NULL) + + +# ----------------------------------------------------------------------------- +@HAVE_EVENTFD_TRUE@am__append_18 = gwakeup-fallback +subdir = glib/tests +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES) +am__EXEEXT_1 = +@OS_UNIX_TRUE@am__EXEEXT_2 = unix$(EXEEXT) include$(EXEEXT) \ +@OS_UNIX_TRUE@ $(am__EXEEXT_1) +@HAVE_GCC_TRUE@am__EXEEXT_3 = autoptr$(EXEEXT) $(am__EXEEXT_1) +am__EXEEXT_4 = array-test$(EXEEXT) asyncqueue$(EXEEXT) base64$(EXEEXT) \ + bitlock$(EXEEXT) bookmarkfile$(EXEEXT) bytes$(EXEEXT) \ + cache$(EXEEXT) checksum$(EXEEXT) collate$(EXEEXT) \ + cond$(EXEEXT) convert$(EXEEXT) dataset$(EXEEXT) date$(EXEEXT) \ + dir$(EXEEXT) environment$(EXEEXT) error$(EXEEXT) \ + fileutils$(EXEEXT) gdatetime$(EXEEXT) gvariant$(EXEEXT) \ + hash$(EXEEXT) hmac$(EXEEXT) hook$(EXEEXT) hostutils$(EXEEXT) \ + keyfile$(EXEEXT) list$(EXEEXT) logging$(EXEEXT) \ + mainloop$(EXEEXT) mappedfile$(EXEEXT) markup$(EXEEXT) \ + markup-parse$(EXEEXT) markup-collect$(EXEEXT) \ + markup-escape$(EXEEXT) markup-subparser$(EXEEXT) \ + mem-overflow$(EXEEXT) mutex$(EXEEXT) node$(EXEEXT) \ + once$(EXEEXT) option-context$(EXEEXT) option-argv0$(EXEEXT) \ + overflow$(EXEEXT) overflow-fallback$(EXEEXT) pattern$(EXEEXT) \ + private$(EXEEXT) protocol$(EXEEXT) queue$(EXEEXT) \ + rand$(EXEEXT) rec-mutex$(EXEEXT) regex$(EXEEXT) \ + rwlock$(EXEEXT) scannerapi$(EXEEXT) search-utils$(EXEEXT) \ + sequence$(EXEEXT) shell$(EXEEXT) slice$(EXEEXT) slist$(EXEEXT) \ + sort$(EXEEXT) spawn-multithreaded$(EXEEXT) \ + spawn-singlethread$(EXEEXT) strfuncs$(EXEEXT) string$(EXEEXT) \ + testing$(EXEEXT) test-printf$(EXEEXT) thread$(EXEEXT) \ + timeout$(EXEEXT) timer$(EXEEXT) tree$(EXEEXT) \ + utf8-performance$(EXEEXT) utf8-pointer$(EXEEXT) \ + utf8-validate$(EXEEXT) utf8-misc$(EXEEXT) utils$(EXEEXT) \ + unicode$(EXEEXT) uri$(EXEEXT) 1bit-mutex$(EXEEXT) \ + 642026$(EXEEXT) $(am__EXEEXT_1) atomic$(EXEEXT) \ + 642026-ec$(EXEEXT) $(am__EXEEXT_2) $(am__EXEEXT_3) +@HAVE_EVENTFD_TRUE@am__EXEEXT_5 = gwakeup-fallback$(EXEEXT) +am__EXEEXT_6 = $(am__EXEEXT_1) 1bit-emufutex$(EXEEXT) gwakeup$(EXEEXT) \ + $(am__EXEEXT_5) +am__EXEEXT_7 = test-spawn-echo$(EXEEXT) $(am__EXEEXT_1) +am__EXEEXT_8 = $(am__EXEEXT_4) $(am__EXEEXT_6) $(am__EXEEXT_7) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_9 = $(am__EXEEXT_8) +@ENABLE_INSTALLED_TESTS_TRUE@am__EXEEXT_10 = $(am__EXEEXT_4) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(am__EXEEXT_7) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_11 = $(am__EXEEXT_8) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +am_1bit_emufutex_OBJECTS = 1bit_emufutex-1bit-mutex.$(OBJEXT) +1bit_emufutex_OBJECTS = $(am_1bit_emufutex_OBJECTS) +1bit_emufutex_LDADD = $(LDADD) +1bit_emufutex_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +1bit_emufutex_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(1bit_emufutex_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +1bit_mutex_SOURCES = 1bit-mutex.c +1bit_mutex_OBJECTS = 1bit-mutex.$(OBJEXT) +1bit_mutex_LDADD = $(LDADD) +1bit_mutex_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +642026_SOURCES = 642026.c +642026_OBJECTS = 642026.$(OBJEXT) +642026_LDADD = $(LDADD) +642026_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +am_642026_ec_OBJECTS = 642026_ec-642026.$(OBJEXT) +642026_ec_OBJECTS = $(am_642026_ec_OBJECTS) +642026_ec_LDADD = $(LDADD) +642026_ec_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +642026_ec_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(642026_ec_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +array_test_SOURCES = array-test.c +array_test_OBJECTS = array-test.$(OBJEXT) +array_test_LDADD = $(LDADD) +array_test_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +asyncqueue_SOURCES = asyncqueue.c +asyncqueue_OBJECTS = asyncqueue.$(OBJEXT) +asyncqueue_LDADD = $(LDADD) +asyncqueue_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +atomic_SOURCES = atomic.c +atomic_OBJECTS = atomic-atomic.$(OBJEXT) +atomic_LDADD = $(LDADD) +atomic_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +atomic_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(atomic_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +autoptr_SOURCES = autoptr.c +autoptr_OBJECTS = autoptr.$(OBJEXT) +autoptr_LDADD = $(LDADD) +autoptr_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +base64_SOURCES = base64.c +base64_OBJECTS = base64.$(OBJEXT) +base64_LDADD = $(LDADD) +base64_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +bitlock_SOURCES = bitlock.c +bitlock_OBJECTS = bitlock.$(OBJEXT) +bitlock_LDADD = $(LDADD) +bitlock_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +bookmarkfile_SOURCES = bookmarkfile.c +bookmarkfile_OBJECTS = bookmarkfile.$(OBJEXT) +bookmarkfile_LDADD = $(LDADD) +bookmarkfile_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +bytes_SOURCES = bytes.c +bytes_OBJECTS = bytes.$(OBJEXT) +bytes_LDADD = $(LDADD) +bytes_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +cache_SOURCES = cache.c +cache_OBJECTS = cache.$(OBJEXT) +cache_LDADD = $(LDADD) +cache_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +checksum_SOURCES = checksum.c +checksum_OBJECTS = checksum.$(OBJEXT) +checksum_LDADD = $(LDADD) +checksum_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +collate_SOURCES = collate.c +collate_OBJECTS = collate.$(OBJEXT) +collate_LDADD = $(LDADD) +collate_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +cond_SOURCES = cond.c +cond_OBJECTS = cond.$(OBJEXT) +cond_LDADD = $(LDADD) +cond_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +convert_SOURCES = convert.c +convert_OBJECTS = convert.$(OBJEXT) +convert_LDADD = $(LDADD) +convert_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +dataset_SOURCES = dataset.c +dataset_OBJECTS = dataset.$(OBJEXT) +dataset_LDADD = $(LDADD) +dataset_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +date_SOURCES = date.c +date_OBJECTS = date.$(OBJEXT) +date_LDADD = $(LDADD) +date_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +dir_SOURCES = dir.c +dir_OBJECTS = dir.$(OBJEXT) +dir_LDADD = $(LDADD) +dir_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +environment_SOURCES = environment.c +environment_OBJECTS = environment.$(OBJEXT) +environment_LDADD = $(LDADD) +environment_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +error_SOURCES = error.c +error_OBJECTS = error.$(OBJEXT) +error_LDADD = $(LDADD) +error_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +fileutils_SOURCES = fileutils.c +fileutils_OBJECTS = fileutils.$(OBJEXT) +fileutils_LDADD = $(LDADD) +fileutils_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +gdatetime_SOURCES = gdatetime.c +gdatetime_OBJECTS = gdatetime.$(OBJEXT) +gdatetime_LDADD = $(LDADD) +gdatetime_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +gvariant_SOURCES = gvariant.c +gvariant_OBJECTS = gvariant.$(OBJEXT) +gvariant_LDADD = $(LDADD) +gvariant_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +am_gwakeup_OBJECTS = gwakeuptest.$(OBJEXT) gwakeup.$(OBJEXT) +gwakeup_OBJECTS = $(am_gwakeup_OBJECTS) +gwakeup_LDADD = $(LDADD) +gwakeup_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +am__gwakeup_fallback_SOURCES_DIST = gwakeuptest.c ../../glib/gwakeup.c +@HAVE_EVENTFD_TRUE@am_gwakeup_fallback_OBJECTS = \ +@HAVE_EVENTFD_TRUE@ gwakeup_fallback-gwakeuptest.$(OBJEXT) \ +@HAVE_EVENTFD_TRUE@ gwakeup_fallback-gwakeup.$(OBJEXT) +gwakeup_fallback_OBJECTS = $(am_gwakeup_fallback_OBJECTS) +gwakeup_fallback_LDADD = $(LDADD) +gwakeup_fallback_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +gwakeup_fallback_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(gwakeup_fallback_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +hash_SOURCES = hash.c +hash_OBJECTS = hash.$(OBJEXT) +hash_LDADD = $(LDADD) +hash_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +hmac_SOURCES = hmac.c +hmac_OBJECTS = hmac.$(OBJEXT) +hmac_LDADD = $(LDADD) +hmac_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +hook_SOURCES = hook.c +hook_OBJECTS = hook.$(OBJEXT) +hook_LDADD = $(LDADD) +hook_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +hostutils_SOURCES = hostutils.c +hostutils_OBJECTS = hostutils.$(OBJEXT) +hostutils_LDADD = $(LDADD) +hostutils_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +include_SOURCES = include.c +include_OBJECTS = include.$(OBJEXT) +include_LDADD = $(LDADD) +include_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +keyfile_SOURCES = keyfile.c +keyfile_OBJECTS = keyfile.$(OBJEXT) +keyfile_LDADD = $(LDADD) +keyfile_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +list_SOURCES = list.c +list_OBJECTS = list.$(OBJEXT) +list_LDADD = $(LDADD) +list_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +logging_SOURCES = logging.c +logging_OBJECTS = logging.$(OBJEXT) +logging_LDADD = $(LDADD) +logging_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +mainloop_SOURCES = mainloop.c +mainloop_OBJECTS = mainloop.$(OBJEXT) +mainloop_LDADD = $(LDADD) +mainloop_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +mappedfile_SOURCES = mappedfile.c +mappedfile_OBJECTS = mappedfile.$(OBJEXT) +mappedfile_LDADD = $(LDADD) +mappedfile_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +markup_SOURCES = markup.c +markup_OBJECTS = markup.$(OBJEXT) +markup_LDADD = $(LDADD) +markup_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +markup_collect_SOURCES = markup-collect.c +markup_collect_OBJECTS = markup-collect.$(OBJEXT) +markup_collect_LDADD = $(LDADD) +markup_collect_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +markup_escape_SOURCES = markup-escape.c +markup_escape_OBJECTS = markup-escape.$(OBJEXT) +markup_escape_LDADD = $(LDADD) +markup_escape_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +markup_parse_SOURCES = markup-parse.c +markup_parse_OBJECTS = markup-parse.$(OBJEXT) +markup_parse_LDADD = $(LDADD) +markup_parse_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +markup_subparser_SOURCES = markup-subparser.c +markup_subparser_OBJECTS = markup-subparser.$(OBJEXT) +markup_subparser_LDADD = $(LDADD) +markup_subparser_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +mem_overflow_SOURCES = mem-overflow.c +mem_overflow_OBJECTS = mem-overflow.$(OBJEXT) +mem_overflow_LDADD = $(LDADD) +mem_overflow_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +mutex_SOURCES = mutex.c +mutex_OBJECTS = mutex.$(OBJEXT) +mutex_LDADD = $(LDADD) +mutex_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +node_SOURCES = node.c +node_OBJECTS = node.$(OBJEXT) +node_LDADD = $(LDADD) +node_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +once_SOURCES = once.c +once_OBJECTS = once.$(OBJEXT) +once_LDADD = $(LDADD) +once_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +option_argv0_SOURCES = option-argv0.c +option_argv0_OBJECTS = option-argv0.$(OBJEXT) +option_argv0_LDADD = $(LDADD) +option_argv0_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +option_context_SOURCES = option-context.c +option_context_OBJECTS = option-context.$(OBJEXT) +option_context_LDADD = $(LDADD) +option_context_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +overflow_SOURCES = overflow.c +overflow_OBJECTS = overflow.$(OBJEXT) +overflow_LDADD = $(LDADD) +overflow_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +am_overflow_fallback_OBJECTS = overflow.$(OBJEXT) +overflow_fallback_OBJECTS = $(am_overflow_fallback_OBJECTS) +overflow_fallback_LDADD = $(LDADD) +overflow_fallback_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +pattern_SOURCES = pattern.c +pattern_OBJECTS = pattern.$(OBJEXT) +pattern_LDADD = $(LDADD) +pattern_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +private_SOURCES = private.c +private_OBJECTS = private.$(OBJEXT) +private_LDADD = $(LDADD) +private_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +private_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(private_LDFLAGS) $(LDFLAGS) -o $@ +protocol_SOURCES = protocol.c +protocol_OBJECTS = protocol.$(OBJEXT) +protocol_LDADD = $(LDADD) +protocol_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +queue_SOURCES = queue.c +queue_OBJECTS = queue.$(OBJEXT) +queue_LDADD = $(LDADD) +queue_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +rand_SOURCES = rand.c +rand_OBJECTS = rand.$(OBJEXT) +rand_LDADD = $(LDADD) +rand_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +rec_mutex_SOURCES = rec-mutex.c +rec_mutex_OBJECTS = rec-mutex.$(OBJEXT) +rec_mutex_LDADD = $(LDADD) +rec_mutex_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +regex_SOURCES = regex.c +regex_OBJECTS = regex.$(OBJEXT) +am__DEPENDENCIES_1 = $(top_builddir)/glib/libglib-2.0.la +am__DEPENDENCIES_2 = +@USE_SYSTEM_PCRE_FALSE@am__DEPENDENCIES_3 = \ +@USE_SYSTEM_PCRE_FALSE@ $(top_builddir)/glib/pcre/libpcre.la +@USE_SYSTEM_PCRE_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_2) +regex_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_3) +rwlock_SOURCES = rwlock.c +rwlock_OBJECTS = rwlock.$(OBJEXT) +rwlock_LDADD = $(LDADD) +rwlock_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +scannerapi_SOURCES = scannerapi.c +scannerapi_OBJECTS = scannerapi.$(OBJEXT) +scannerapi_LDADD = $(LDADD) +scannerapi_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +search_utils_SOURCES = search-utils.c +search_utils_OBJECTS = search-utils.$(OBJEXT) +search_utils_LDADD = $(LDADD) +search_utils_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +sequence_SOURCES = sequence.c +sequence_OBJECTS = sequence.$(OBJEXT) +sequence_LDADD = $(LDADD) +sequence_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +shell_SOURCES = shell.c +shell_OBJECTS = shell.$(OBJEXT) +shell_LDADD = $(LDADD) +shell_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +slice_SOURCES = slice.c +slice_OBJECTS = slice.$(OBJEXT) +slice_LDADD = $(LDADD) +slice_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +slist_SOURCES = slist.c +slist_OBJECTS = slist.$(OBJEXT) +slist_LDADD = $(LDADD) +slist_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +sort_SOURCES = sort.c +sort_OBJECTS = sort.$(OBJEXT) +sort_LDADD = $(LDADD) +sort_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +spawn_multithreaded_SOURCES = spawn-multithreaded.c +spawn_multithreaded_OBJECTS = spawn-multithreaded.$(OBJEXT) +spawn_multithreaded_LDADD = $(LDADD) +spawn_multithreaded_DEPENDENCIES = \ + $(top_builddir)/glib/libglib-2.0.la +spawn_multithreaded_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(spawn_multithreaded_LDFLAGS) \ + $(LDFLAGS) -o $@ +spawn_singlethread_SOURCES = spawn-singlethread.c +spawn_singlethread_OBJECTS = spawn-singlethread.$(OBJEXT) +spawn_singlethread_LDADD = $(LDADD) +spawn_singlethread_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +spawn_singlethread_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(spawn_singlethread_LDFLAGS) \ + $(LDFLAGS) -o $@ +strfuncs_SOURCES = strfuncs.c +strfuncs_OBJECTS = strfuncs.$(OBJEXT) +strfuncs_LDADD = $(LDADD) +strfuncs_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +string_SOURCES = string.c +string_OBJECTS = string.$(OBJEXT) +string_LDADD = $(LDADD) +string_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +test_printf_SOURCES = test-printf.c +test_printf_OBJECTS = test-printf.$(OBJEXT) +test_printf_LDADD = $(LDADD) +test_printf_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +test_spawn_echo_SOURCES = test-spawn-echo.c +test_spawn_echo_OBJECTS = test-spawn-echo.$(OBJEXT) +test_spawn_echo_LDADD = $(LDADD) +test_spawn_echo_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +testing_SOURCES = testing.c +testing_OBJECTS = testing.$(OBJEXT) +testing_LDADD = $(LDADD) +testing_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +thread_SOURCES = thread.c +thread_OBJECTS = thread.$(OBJEXT) +thread_LDADD = $(LDADD) +thread_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +timeout_SOURCES = timeout.c +timeout_OBJECTS = timeout.$(OBJEXT) +timeout_LDADD = $(LDADD) +timeout_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +timer_SOURCES = timer.c +timer_OBJECTS = timer.$(OBJEXT) +timer_LDADD = $(LDADD) +timer_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +tree_SOURCES = tree.c +tree_OBJECTS = tree.$(OBJEXT) +tree_LDADD = $(LDADD) +tree_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +unicode_SOURCES = unicode.c +unicode_OBJECTS = unicode.$(OBJEXT) +unicode_LDADD = $(LDADD) +unicode_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +unix_SOURCES = unix.c +unix_OBJECTS = unix.$(OBJEXT) +unix_LDADD = $(LDADD) +unix_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +uri_SOURCES = uri.c +uri_OBJECTS = uri.$(OBJEXT) +uri_LDADD = $(LDADD) +uri_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +utf8_misc_SOURCES = utf8-misc.c +utf8_misc_OBJECTS = utf8-misc.$(OBJEXT) +utf8_misc_LDADD = $(LDADD) +utf8_misc_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +utf8_performance_SOURCES = utf8-performance.c +utf8_performance_OBJECTS = utf8-performance.$(OBJEXT) +utf8_performance_LDADD = $(LDADD) +utf8_performance_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +utf8_pointer_SOURCES = utf8-pointer.c +utf8_pointer_OBJECTS = utf8-pointer.$(OBJEXT) +utf8_pointer_LDADD = $(LDADD) +utf8_pointer_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +utf8_validate_SOURCES = utf8-validate.c +utf8_validate_OBJECTS = utf8-validate.$(OBJEXT) +utf8_validate_LDADD = $(LDADD) +utf8_validate_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +utils_SOURCES = utils.c +utils_OBJECTS = utils.$(OBJEXT) +utils_LDADD = $(LDADD) +utils_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(1bit_emufutex_SOURCES) 1bit-mutex.c 642026.c \ + $(642026_ec_SOURCES) array-test.c asyncqueue.c atomic.c \ + autoptr.c base64.c bitlock.c bookmarkfile.c bytes.c cache.c \ + checksum.c collate.c cond.c convert.c dataset.c date.c dir.c \ + environment.c error.c fileutils.c gdatetime.c gvariant.c \ + $(gwakeup_SOURCES) $(gwakeup_fallback_SOURCES) hash.c hmac.c \ + hook.c hostutils.c include.c keyfile.c list.c logging.c \ + mainloop.c mappedfile.c markup.c markup-collect.c \ + markup-escape.c markup-parse.c markup-subparser.c \ + mem-overflow.c mutex.c node.c once.c option-argv0.c \ + option-context.c overflow.c $(overflow_fallback_SOURCES) \ + pattern.c private.c protocol.c queue.c rand.c rec-mutex.c \ + regex.c rwlock.c scannerapi.c search-utils.c sequence.c \ + shell.c slice.c slist.c sort.c spawn-multithreaded.c \ + spawn-singlethread.c strfuncs.c string.c test-printf.c \ + test-spawn-echo.c testing.c thread.c timeout.c timer.c tree.c \ + unicode.c unix.c uri.c utf8-misc.c utf8-performance.c \ + utf8-pointer.c utf8-validate.c utils.c +DIST_SOURCES = $(1bit_emufutex_SOURCES) 1bit-mutex.c 642026.c \ + $(642026_ec_SOURCES) array-test.c asyncqueue.c atomic.c \ + autoptr.c base64.c bitlock.c bookmarkfile.c bytes.c cache.c \ + checksum.c collate.c cond.c convert.c dataset.c date.c dir.c \ + environment.c error.c fileutils.c gdatetime.c gvariant.c \ + $(gwakeup_SOURCES) $(am__gwakeup_fallback_SOURCES_DIST) hash.c \ + hmac.c hook.c hostutils.c include.c keyfile.c list.c logging.c \ + mainloop.c mappedfile.c markup.c markup-collect.c \ + markup-escape.c markup-parse.c markup-subparser.c \ + mem-overflow.c mutex.c node.c once.c option-argv0.c \ + option-context.c overflow.c $(overflow_fallback_SOURCES) \ + pattern.c private.c protocol.c queue.c rand.c rec-mutex.c \ + regex.c rwlock.c scannerapi.c search-utils.c sequence.c \ + shell.c slice.c slist.c sort.c spawn-multithreaded.c \ + spawn-singlethread.c strfuncs.c string.c test-printf.c \ + test-spawn-echo.c testing.c thread.c timeout.c timer.c tree.c \ + unicode.c unix.c uri.c utf8-misc.c utf8-performance.c \ + utf8-pointer.c utf8-validate.c utils.c +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/glib-tap.mk $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = -DG_LOG_DOMAIN=\"GLib\" -DEXEEXT=\"$(EXEEXT)\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +TESTS_ENVIRONMENT = \ + G_TEST_SRCDIR="$(abs_srcdir)" \ + G_TEST_BUILDDIR="$(abs_builddir)" \ + G_DEBUG=gc-friendly \ + MALLOC_CHECK_=2 \ + MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) + +LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/tap-driver.sh +LOG_COMPILER = $(top_srcdir)/tap-test +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = +BUILT_EXTRA_DIST = +CLEANFILES = *.log *.trs $(am__append_13) $(am__append_16) +DISTCLEANFILES = +MAINTAINERCLEANFILES = + +# ----------------------------------------------------------------------------- +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \ + bookmarks.xbel +installed_test_LTLIBRARIES = $(am__append_12) +installed_test_SCRIPTS = $(am__append_10) +nobase_installed_test_DATA = $(am__append_11) +noinst_LTLIBRARIES = $(am__append_1) +noinst_SCRIPTS = $(am__append_3) +noinst_DATA = $(am__append_4) +check_LTLIBRARIES = $(am__append_5) +check_SCRIPTS = $(am__append_7) +check_DATA = $(am__append_8) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +@USE_SYSTEM_PCRE_FALSE@pcre_lib = $(top_builddir)/glib/pcre/libpcre.la +@USE_SYSTEM_PCRE_TRUE@pcre_lib = $(PCRE_LIBS) +@USE_SYSTEM_PCRE_FALSE@pcre_inc = +@USE_SYSTEM_PCRE_TRUE@pcre_inc = $(PCRE_CFLAGS) +LDADD = $(top_builddir)/glib/libglib-2.0.la -lm +AM_CPPFLAGS = -g $(glib_INCLUDES) $(GLIB_DEBUG_FLAGS) +AM_CFLAGS = $(GLIB_WARN_CFLAGS) $(pcre_inc) + +# The regex test uses pcre_version() +regex_LDADD = $(LDADD) $(pcre_lib) + +# These tests corrupt the gcov bookkeeping, so we +# skip them. See bug 682133 +spawn_singlethread_LDFLAGS = $(patsubst -lgcov,,$(LDFLAGS)) +spawn_multithreaded_LDFLAGS = $(patsubst -lgcov,,$(LDFLAGS)) + +# ----------------------------------------------------------------------------- +dist_test_data = keyfiletest.ini pages.ini keyfile.c empty \ + 4096-random-bytes $(NULL) bookmarks/fail-01.xbel \ + bookmarks/fail-02.xbel bookmarks/fail-03.xbel \ + bookmarks/fail-04.xbel bookmarks/fail-05.xbel \ + bookmarks/fail-06.xbel bookmarks/fail-07.xbel \ + bookmarks/fail-08.xbel bookmarks/fail-09.xbel \ + bookmarks/fail-10.xbel bookmarks/fail-11.xbel \ + bookmarks/fail-12.xbel bookmarks/fail-13.xbel \ + bookmarks/fail-14.xbel bookmarks/fail-15.xbel \ + bookmarks/fail-16.xbel bookmarks/fail-17.xbel \ + bookmarks/valid-01.xbel bookmarks/valid-02.xbel \ + bookmarks/valid-03.xbel $(NULL) $(all_markup_data) +dist_test_extra_scripts = \ + echo-script \ + echo-script.bat \ + $(NULL) + +test_extra_programs = \ + test-spawn-echo \ + $(NULL) + + +# ----------------------------------------------------------------------------- +test_programs = array-test asyncqueue base64 bitlock bookmarkfile \ + bytes cache checksum collate cond convert dataset date dir \ + environment error fileutils gdatetime gvariant hash hmac hook \ + hostutils keyfile list logging mainloop mappedfile markup \ + markup-parse markup-collect markup-escape markup-subparser \ + mem-overflow mutex node once option-context option-argv0 \ + overflow overflow-fallback pattern private protocol queue rand \ + rec-mutex regex rwlock scannerapi search-utils sequence shell \ + slice slist sort spawn-multithreaded spawn-singlethread \ + strfuncs string testing test-printf thread timeout timer tree \ + utf8-performance utf8-pointer utf8-validate utf8-misc utils \ + unicode uri 1bit-mutex 642026 $(NULL) atomic 642026-ec \ + $(am__append_15) $(am__append_17) +uninstalled_test_programs = $(NULL) 1bit-emufutex gwakeup \ + $(am__append_18) +markup_tests = \ + fail-1 fail-2 fail-3 fail-4 fail-5 \ + fail-6 fail-7 fail-8 fail-9 fail-10 \ + fail-11 fail-12 fail-13 fail-14 fail-15 \ + fail-16 fail-17 fail-18 fail-19 fail-20 \ + fail-21 fail-22 fail-23 fail-24 fail-25 \ + fail-26 fail-27 fail-28 fail-29 fail-30 \ + fail-31 fail-32 fail-33 fail-34 fail-35 \ + fail-36 fail-37 fail-38 fail-39 fail-40 \ + fail-41 fail-42 fail-43 fail-44 fail-45 \ + fail-46 fail-47 fail-48 fail-49 \ + valid-1 valid-2 valid-3 valid-4 valid-5 \ + valid-6 valid-7 valid-8 valid-9 valid-10 \ + valid-11 valid-12 valid-13 valid-14 valid-15 \ + valid-16 \ + $(NULL) + +cdata_markup_tests = \ + valid-8 valid-16 \ + $(NULL) + +all_markup_data = \ + $(addprefix markups/,$(markup_tests:=.gmarkup) $(markup_tests:=.expected)) \ + $(addprefix markups/,$(cdata_markup_tests.=.cdata-as-text)) + +atomic_CFLAGS = $(AM_CFLAGS) $(am__append_14) +overflow_fallback_SOURCES = overflow.c +overflow_fallback_FALGS = $(AM_CFLAGS) -D_GLIB_TEST_OVERFLOW_FALLBACK +642026_ec_SOURCES = 642026.c +642026_ec_CFLAGS = -DG_ERRORCHECK_MUTEXES +1bit_emufutex_SOURCES = 1bit-mutex.c +1bit_emufutex_CFLAGS = $(AM_CFLAGS) -DTEST_EMULATED_FUTEX +gwakeup_SOURCES = gwakeuptest.c ../../glib/gwakeup.c + +# some testing of gtester functionality +@OS_UNIX_TRUE@XMLLINT = xmllint +@OS_UNIX_TRUE@GTESTER = $(top_builddir)/glib/gtester +@OS_UNIX_TRUE@private_LDFLAGS = @G_THREAD_LIBS@ +@HAVE_EVENTFD_TRUE@gwakeup_fallback_SOURCES = gwakeuptest.c ../../glib/gwakeup.c +@HAVE_EVENTFD_TRUE@gwakeup_fallback_CFLAGS = $(AM_CFLAGS) -DTEST_EVENTFD_FALLBACK +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib-tap.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glib/tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu glib/tests/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib-tap.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +1bit-emufutex$(EXEEXT): $(1bit_emufutex_OBJECTS) $(1bit_emufutex_DEPENDENCIES) $(EXTRA_1bit_emufutex_DEPENDENCIES) + @rm -f 1bit-emufutex$(EXEEXT) + $(AM_V_CCLD)$(1bit_emufutex_LINK) $(1bit_emufutex_OBJECTS) $(1bit_emufutex_LDADD) $(LIBS) + +1bit-mutex$(EXEEXT): $(1bit_mutex_OBJECTS) $(1bit_mutex_DEPENDENCIES) $(EXTRA_1bit_mutex_DEPENDENCIES) + @rm -f 1bit-mutex$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(1bit_mutex_OBJECTS) $(1bit_mutex_LDADD) $(LIBS) + +642026$(EXEEXT): $(642026_OBJECTS) $(642026_DEPENDENCIES) $(EXTRA_642026_DEPENDENCIES) + @rm -f 642026$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(642026_OBJECTS) $(642026_LDADD) $(LIBS) + +642026-ec$(EXEEXT): $(642026_ec_OBJECTS) $(642026_ec_DEPENDENCIES) $(EXTRA_642026_ec_DEPENDENCIES) + @rm -f 642026-ec$(EXEEXT) + $(AM_V_CCLD)$(642026_ec_LINK) $(642026_ec_OBJECTS) $(642026_ec_LDADD) $(LIBS) + +array-test$(EXEEXT): $(array_test_OBJECTS) $(array_test_DEPENDENCIES) $(EXTRA_array_test_DEPENDENCIES) + @rm -f array-test$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(array_test_OBJECTS) $(array_test_LDADD) $(LIBS) + +asyncqueue$(EXEEXT): $(asyncqueue_OBJECTS) $(asyncqueue_DEPENDENCIES) $(EXTRA_asyncqueue_DEPENDENCIES) + @rm -f asyncqueue$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(asyncqueue_OBJECTS) $(asyncqueue_LDADD) $(LIBS) + +atomic$(EXEEXT): $(atomic_OBJECTS) $(atomic_DEPENDENCIES) $(EXTRA_atomic_DEPENDENCIES) + @rm -f atomic$(EXEEXT) + $(AM_V_CCLD)$(atomic_LINK) $(atomic_OBJECTS) $(atomic_LDADD) $(LIBS) + +autoptr$(EXEEXT): $(autoptr_OBJECTS) $(autoptr_DEPENDENCIES) $(EXTRA_autoptr_DEPENDENCIES) + @rm -f autoptr$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(autoptr_OBJECTS) $(autoptr_LDADD) $(LIBS) + +base64$(EXEEXT): $(base64_OBJECTS) $(base64_DEPENDENCIES) $(EXTRA_base64_DEPENDENCIES) + @rm -f base64$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(base64_OBJECTS) $(base64_LDADD) $(LIBS) + +bitlock$(EXEEXT): $(bitlock_OBJECTS) $(bitlock_DEPENDENCIES) $(EXTRA_bitlock_DEPENDENCIES) + @rm -f bitlock$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(bitlock_OBJECTS) $(bitlock_LDADD) $(LIBS) + +bookmarkfile$(EXEEXT): $(bookmarkfile_OBJECTS) $(bookmarkfile_DEPENDENCIES) $(EXTRA_bookmarkfile_DEPENDENCIES) + @rm -f bookmarkfile$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(bookmarkfile_OBJECTS) $(bookmarkfile_LDADD) $(LIBS) + +bytes$(EXEEXT): $(bytes_OBJECTS) $(bytes_DEPENDENCIES) $(EXTRA_bytes_DEPENDENCIES) + @rm -f bytes$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(bytes_OBJECTS) $(bytes_LDADD) $(LIBS) + +cache$(EXEEXT): $(cache_OBJECTS) $(cache_DEPENDENCIES) $(EXTRA_cache_DEPENDENCIES) + @rm -f cache$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(cache_OBJECTS) $(cache_LDADD) $(LIBS) + +checksum$(EXEEXT): $(checksum_OBJECTS) $(checksum_DEPENDENCIES) $(EXTRA_checksum_DEPENDENCIES) + @rm -f checksum$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(checksum_OBJECTS) $(checksum_LDADD) $(LIBS) + +collate$(EXEEXT): $(collate_OBJECTS) $(collate_DEPENDENCIES) $(EXTRA_collate_DEPENDENCIES) + @rm -f collate$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(collate_OBJECTS) $(collate_LDADD) $(LIBS) + +cond$(EXEEXT): $(cond_OBJECTS) $(cond_DEPENDENCIES) $(EXTRA_cond_DEPENDENCIES) + @rm -f cond$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(cond_OBJECTS) $(cond_LDADD) $(LIBS) + +convert$(EXEEXT): $(convert_OBJECTS) $(convert_DEPENDENCIES) $(EXTRA_convert_DEPENDENCIES) + @rm -f convert$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(convert_OBJECTS) $(convert_LDADD) $(LIBS) + +dataset$(EXEEXT): $(dataset_OBJECTS) $(dataset_DEPENDENCIES) $(EXTRA_dataset_DEPENDENCIES) + @rm -f dataset$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dataset_OBJECTS) $(dataset_LDADD) $(LIBS) + +date$(EXEEXT): $(date_OBJECTS) $(date_DEPENDENCIES) $(EXTRA_date_DEPENDENCIES) + @rm -f date$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(date_OBJECTS) $(date_LDADD) $(LIBS) + +dir$(EXEEXT): $(dir_OBJECTS) $(dir_DEPENDENCIES) $(EXTRA_dir_DEPENDENCIES) + @rm -f dir$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dir_OBJECTS) $(dir_LDADD) $(LIBS) + +environment$(EXEEXT): $(environment_OBJECTS) $(environment_DEPENDENCIES) $(EXTRA_environment_DEPENDENCIES) + @rm -f environment$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(environment_OBJECTS) $(environment_LDADD) $(LIBS) + +error$(EXEEXT): $(error_OBJECTS) $(error_DEPENDENCIES) $(EXTRA_error_DEPENDENCIES) + @rm -f error$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(error_OBJECTS) $(error_LDADD) $(LIBS) + +fileutils$(EXEEXT): $(fileutils_OBJECTS) $(fileutils_DEPENDENCIES) $(EXTRA_fileutils_DEPENDENCIES) + @rm -f fileutils$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(fileutils_OBJECTS) $(fileutils_LDADD) $(LIBS) + +gdatetime$(EXEEXT): $(gdatetime_OBJECTS) $(gdatetime_DEPENDENCIES) $(EXTRA_gdatetime_DEPENDENCIES) + @rm -f gdatetime$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gdatetime_OBJECTS) $(gdatetime_LDADD) $(LIBS) + +gvariant$(EXEEXT): $(gvariant_OBJECTS) $(gvariant_DEPENDENCIES) $(EXTRA_gvariant_DEPENDENCIES) + @rm -f gvariant$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gvariant_OBJECTS) $(gvariant_LDADD) $(LIBS) + +gwakeup$(EXEEXT): $(gwakeup_OBJECTS) $(gwakeup_DEPENDENCIES) $(EXTRA_gwakeup_DEPENDENCIES) + @rm -f gwakeup$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gwakeup_OBJECTS) $(gwakeup_LDADD) $(LIBS) + +gwakeup-fallback$(EXEEXT): $(gwakeup_fallback_OBJECTS) $(gwakeup_fallback_DEPENDENCIES) $(EXTRA_gwakeup_fallback_DEPENDENCIES) + @rm -f gwakeup-fallback$(EXEEXT) + $(AM_V_CCLD)$(gwakeup_fallback_LINK) $(gwakeup_fallback_OBJECTS) $(gwakeup_fallback_LDADD) $(LIBS) + +hash$(EXEEXT): $(hash_OBJECTS) $(hash_DEPENDENCIES) $(EXTRA_hash_DEPENDENCIES) + @rm -f hash$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(hash_OBJECTS) $(hash_LDADD) $(LIBS) + +hmac$(EXEEXT): $(hmac_OBJECTS) $(hmac_DEPENDENCIES) $(EXTRA_hmac_DEPENDENCIES) + @rm -f hmac$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(hmac_OBJECTS) $(hmac_LDADD) $(LIBS) + +hook$(EXEEXT): $(hook_OBJECTS) $(hook_DEPENDENCIES) $(EXTRA_hook_DEPENDENCIES) + @rm -f hook$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(hook_OBJECTS) $(hook_LDADD) $(LIBS) + +hostutils$(EXEEXT): $(hostutils_OBJECTS) $(hostutils_DEPENDENCIES) $(EXTRA_hostutils_DEPENDENCIES) + @rm -f hostutils$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(hostutils_OBJECTS) $(hostutils_LDADD) $(LIBS) + +include$(EXEEXT): $(include_OBJECTS) $(include_DEPENDENCIES) $(EXTRA_include_DEPENDENCIES) + @rm -f include$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(include_OBJECTS) $(include_LDADD) $(LIBS) + +keyfile$(EXEEXT): $(keyfile_OBJECTS) $(keyfile_DEPENDENCIES) $(EXTRA_keyfile_DEPENDENCIES) + @rm -f keyfile$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(keyfile_OBJECTS) $(keyfile_LDADD) $(LIBS) + +list$(EXEEXT): $(list_OBJECTS) $(list_DEPENDENCIES) $(EXTRA_list_DEPENDENCIES) + @rm -f list$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(list_OBJECTS) $(list_LDADD) $(LIBS) + +logging$(EXEEXT): $(logging_OBJECTS) $(logging_DEPENDENCIES) $(EXTRA_logging_DEPENDENCIES) + @rm -f logging$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(logging_OBJECTS) $(logging_LDADD) $(LIBS) + +mainloop$(EXEEXT): $(mainloop_OBJECTS) $(mainloop_DEPENDENCIES) $(EXTRA_mainloop_DEPENDENCIES) + @rm -f mainloop$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(mainloop_OBJECTS) $(mainloop_LDADD) $(LIBS) + +mappedfile$(EXEEXT): $(mappedfile_OBJECTS) $(mappedfile_DEPENDENCIES) $(EXTRA_mappedfile_DEPENDENCIES) + @rm -f mappedfile$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(mappedfile_OBJECTS) $(mappedfile_LDADD) $(LIBS) + +markup$(EXEEXT): $(markup_OBJECTS) $(markup_DEPENDENCIES) $(EXTRA_markup_DEPENDENCIES) + @rm -f markup$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(markup_OBJECTS) $(markup_LDADD) $(LIBS) + +markup-collect$(EXEEXT): $(markup_collect_OBJECTS) $(markup_collect_DEPENDENCIES) $(EXTRA_markup_collect_DEPENDENCIES) + @rm -f markup-collect$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(markup_collect_OBJECTS) $(markup_collect_LDADD) $(LIBS) + +markup-escape$(EXEEXT): $(markup_escape_OBJECTS) $(markup_escape_DEPENDENCIES) $(EXTRA_markup_escape_DEPENDENCIES) + @rm -f markup-escape$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(markup_escape_OBJECTS) $(markup_escape_LDADD) $(LIBS) + +markup-parse$(EXEEXT): $(markup_parse_OBJECTS) $(markup_parse_DEPENDENCIES) $(EXTRA_markup_parse_DEPENDENCIES) + @rm -f markup-parse$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(markup_parse_OBJECTS) $(markup_parse_LDADD) $(LIBS) + +markup-subparser$(EXEEXT): $(markup_subparser_OBJECTS) $(markup_subparser_DEPENDENCIES) $(EXTRA_markup_subparser_DEPENDENCIES) + @rm -f markup-subparser$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(markup_subparser_OBJECTS) $(markup_subparser_LDADD) $(LIBS) + +mem-overflow$(EXEEXT): $(mem_overflow_OBJECTS) $(mem_overflow_DEPENDENCIES) $(EXTRA_mem_overflow_DEPENDENCIES) + @rm -f mem-overflow$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(mem_overflow_OBJECTS) $(mem_overflow_LDADD) $(LIBS) + +mutex$(EXEEXT): $(mutex_OBJECTS) $(mutex_DEPENDENCIES) $(EXTRA_mutex_DEPENDENCIES) + @rm -f mutex$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(mutex_OBJECTS) $(mutex_LDADD) $(LIBS) + +node$(EXEEXT): $(node_OBJECTS) $(node_DEPENDENCIES) $(EXTRA_node_DEPENDENCIES) + @rm -f node$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(node_OBJECTS) $(node_LDADD) $(LIBS) + +once$(EXEEXT): $(once_OBJECTS) $(once_DEPENDENCIES) $(EXTRA_once_DEPENDENCIES) + @rm -f once$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(once_OBJECTS) $(once_LDADD) $(LIBS) + +option-argv0$(EXEEXT): $(option_argv0_OBJECTS) $(option_argv0_DEPENDENCIES) $(EXTRA_option_argv0_DEPENDENCIES) + @rm -f option-argv0$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(option_argv0_OBJECTS) $(option_argv0_LDADD) $(LIBS) + +option-context$(EXEEXT): $(option_context_OBJECTS) $(option_context_DEPENDENCIES) $(EXTRA_option_context_DEPENDENCIES) + @rm -f option-context$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(option_context_OBJECTS) $(option_context_LDADD) $(LIBS) + +overflow$(EXEEXT): $(overflow_OBJECTS) $(overflow_DEPENDENCIES) $(EXTRA_overflow_DEPENDENCIES) + @rm -f overflow$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(overflow_OBJECTS) $(overflow_LDADD) $(LIBS) + +overflow-fallback$(EXEEXT): $(overflow_fallback_OBJECTS) $(overflow_fallback_DEPENDENCIES) $(EXTRA_overflow_fallback_DEPENDENCIES) + @rm -f overflow-fallback$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(overflow_fallback_OBJECTS) $(overflow_fallback_LDADD) $(LIBS) + +pattern$(EXEEXT): $(pattern_OBJECTS) $(pattern_DEPENDENCIES) $(EXTRA_pattern_DEPENDENCIES) + @rm -f pattern$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(pattern_OBJECTS) $(pattern_LDADD) $(LIBS) + +private$(EXEEXT): $(private_OBJECTS) $(private_DEPENDENCIES) $(EXTRA_private_DEPENDENCIES) + @rm -f private$(EXEEXT) + $(AM_V_CCLD)$(private_LINK) $(private_OBJECTS) $(private_LDADD) $(LIBS) + +protocol$(EXEEXT): $(protocol_OBJECTS) $(protocol_DEPENDENCIES) $(EXTRA_protocol_DEPENDENCIES) + @rm -f protocol$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(protocol_OBJECTS) $(protocol_LDADD) $(LIBS) + +queue$(EXEEXT): $(queue_OBJECTS) $(queue_DEPENDENCIES) $(EXTRA_queue_DEPENDENCIES) + @rm -f queue$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(queue_OBJECTS) $(queue_LDADD) $(LIBS) + +rand$(EXEEXT): $(rand_OBJECTS) $(rand_DEPENDENCIES) $(EXTRA_rand_DEPENDENCIES) + @rm -f rand$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rand_OBJECTS) $(rand_LDADD) $(LIBS) + +rec-mutex$(EXEEXT): $(rec_mutex_OBJECTS) $(rec_mutex_DEPENDENCIES) $(EXTRA_rec_mutex_DEPENDENCIES) + @rm -f rec-mutex$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rec_mutex_OBJECTS) $(rec_mutex_LDADD) $(LIBS) + +regex$(EXEEXT): $(regex_OBJECTS) $(regex_DEPENDENCIES) $(EXTRA_regex_DEPENDENCIES) + @rm -f regex$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(regex_OBJECTS) $(regex_LDADD) $(LIBS) + +rwlock$(EXEEXT): $(rwlock_OBJECTS) $(rwlock_DEPENDENCIES) $(EXTRA_rwlock_DEPENDENCIES) + @rm -f rwlock$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(rwlock_OBJECTS) $(rwlock_LDADD) $(LIBS) + +scannerapi$(EXEEXT): $(scannerapi_OBJECTS) $(scannerapi_DEPENDENCIES) $(EXTRA_scannerapi_DEPENDENCIES) + @rm -f scannerapi$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(scannerapi_OBJECTS) $(scannerapi_LDADD) $(LIBS) + +search-utils$(EXEEXT): $(search_utils_OBJECTS) $(search_utils_DEPENDENCIES) $(EXTRA_search_utils_DEPENDENCIES) + @rm -f search-utils$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(search_utils_OBJECTS) $(search_utils_LDADD) $(LIBS) + +sequence$(EXEEXT): $(sequence_OBJECTS) $(sequence_DEPENDENCIES) $(EXTRA_sequence_DEPENDENCIES) + @rm -f sequence$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sequence_OBJECTS) $(sequence_LDADD) $(LIBS) + +shell$(EXEEXT): $(shell_OBJECTS) $(shell_DEPENDENCIES) $(EXTRA_shell_DEPENDENCIES) + @rm -f shell$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shell_OBJECTS) $(shell_LDADD) $(LIBS) + +slice$(EXEEXT): $(slice_OBJECTS) $(slice_DEPENDENCIES) $(EXTRA_slice_DEPENDENCIES) + @rm -f slice$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(slice_OBJECTS) $(slice_LDADD) $(LIBS) + +slist$(EXEEXT): $(slist_OBJECTS) $(slist_DEPENDENCIES) $(EXTRA_slist_DEPENDENCIES) + @rm -f slist$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(slist_OBJECTS) $(slist_LDADD) $(LIBS) + +sort$(EXEEXT): $(sort_OBJECTS) $(sort_DEPENDENCIES) $(EXTRA_sort_DEPENDENCIES) + @rm -f sort$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(sort_OBJECTS) $(sort_LDADD) $(LIBS) + +spawn-multithreaded$(EXEEXT): $(spawn_multithreaded_OBJECTS) $(spawn_multithreaded_DEPENDENCIES) $(EXTRA_spawn_multithreaded_DEPENDENCIES) + @rm -f spawn-multithreaded$(EXEEXT) + $(AM_V_CCLD)$(spawn_multithreaded_LINK) $(spawn_multithreaded_OBJECTS) $(spawn_multithreaded_LDADD) $(LIBS) + +spawn-singlethread$(EXEEXT): $(spawn_singlethread_OBJECTS) $(spawn_singlethread_DEPENDENCIES) $(EXTRA_spawn_singlethread_DEPENDENCIES) + @rm -f spawn-singlethread$(EXEEXT) + $(AM_V_CCLD)$(spawn_singlethread_LINK) $(spawn_singlethread_OBJECTS) $(spawn_singlethread_LDADD) $(LIBS) + +strfuncs$(EXEEXT): $(strfuncs_OBJECTS) $(strfuncs_DEPENDENCIES) $(EXTRA_strfuncs_DEPENDENCIES) + @rm -f strfuncs$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(strfuncs_OBJECTS) $(strfuncs_LDADD) $(LIBS) + +string$(EXEEXT): $(string_OBJECTS) $(string_DEPENDENCIES) $(EXTRA_string_DEPENDENCIES) + @rm -f string$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(string_OBJECTS) $(string_LDADD) $(LIBS) + +test-printf$(EXEEXT): $(test_printf_OBJECTS) $(test_printf_DEPENDENCIES) $(EXTRA_test_printf_DEPENDENCIES) + @rm -f test-printf$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_printf_OBJECTS) $(test_printf_LDADD) $(LIBS) + +test-spawn-echo$(EXEEXT): $(test_spawn_echo_OBJECTS) $(test_spawn_echo_DEPENDENCIES) $(EXTRA_test_spawn_echo_DEPENDENCIES) + @rm -f test-spawn-echo$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_spawn_echo_OBJECTS) $(test_spawn_echo_LDADD) $(LIBS) + +testing$(EXEEXT): $(testing_OBJECTS) $(testing_DEPENDENCIES) $(EXTRA_testing_DEPENDENCIES) + @rm -f testing$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(testing_OBJECTS) $(testing_LDADD) $(LIBS) + +thread$(EXEEXT): $(thread_OBJECTS) $(thread_DEPENDENCIES) $(EXTRA_thread_DEPENDENCIES) + @rm -f thread$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(thread_OBJECTS) $(thread_LDADD) $(LIBS) + +timeout$(EXEEXT): $(timeout_OBJECTS) $(timeout_DEPENDENCIES) $(EXTRA_timeout_DEPENDENCIES) + @rm -f timeout$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(timeout_OBJECTS) $(timeout_LDADD) $(LIBS) + +timer$(EXEEXT): $(timer_OBJECTS) $(timer_DEPENDENCIES) $(EXTRA_timer_DEPENDENCIES) + @rm -f timer$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(timer_OBJECTS) $(timer_LDADD) $(LIBS) + +tree$(EXEEXT): $(tree_OBJECTS) $(tree_DEPENDENCIES) $(EXTRA_tree_DEPENDENCIES) + @rm -f tree$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(tree_OBJECTS) $(tree_LDADD) $(LIBS) + +unicode$(EXEEXT): $(unicode_OBJECTS) $(unicode_DEPENDENCIES) $(EXTRA_unicode_DEPENDENCIES) + @rm -f unicode$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(unicode_OBJECTS) $(unicode_LDADD) $(LIBS) + +unix$(EXEEXT): $(unix_OBJECTS) $(unix_DEPENDENCIES) $(EXTRA_unix_DEPENDENCIES) + @rm -f unix$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(unix_OBJECTS) $(unix_LDADD) $(LIBS) + +uri$(EXEEXT): $(uri_OBJECTS) $(uri_DEPENDENCIES) $(EXTRA_uri_DEPENDENCIES) + @rm -f uri$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(uri_OBJECTS) $(uri_LDADD) $(LIBS) + +utf8-misc$(EXEEXT): $(utf8_misc_OBJECTS) $(utf8_misc_DEPENDENCIES) $(EXTRA_utf8_misc_DEPENDENCIES) + @rm -f utf8-misc$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(utf8_misc_OBJECTS) $(utf8_misc_LDADD) $(LIBS) + +utf8-performance$(EXEEXT): $(utf8_performance_OBJECTS) $(utf8_performance_DEPENDENCIES) $(EXTRA_utf8_performance_DEPENDENCIES) + @rm -f utf8-performance$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(utf8_performance_OBJECTS) $(utf8_performance_LDADD) $(LIBS) + +utf8-pointer$(EXEEXT): $(utf8_pointer_OBJECTS) $(utf8_pointer_DEPENDENCIES) $(EXTRA_utf8_pointer_DEPENDENCIES) + @rm -f utf8-pointer$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(utf8_pointer_OBJECTS) $(utf8_pointer_LDADD) $(LIBS) + +utf8-validate$(EXEEXT): $(utf8_validate_OBJECTS) $(utf8_validate_DEPENDENCIES) $(EXTRA_utf8_validate_DEPENDENCIES) + @rm -f utf8-validate$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(utf8_validate_OBJECTS) $(utf8_validate_LDADD) $(LIBS) + +utils$(EXEEXT): $(utils_OBJECTS) $(utils_DEPENDENCIES) $(EXTRA_utils_DEPENDENCIES) + @rm -f utils$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(utils_OBJECTS) $(utils_LDADD) $(LIBS) +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/1bit-mutex.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/1bit_emufutex-1bit-mutex.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/642026.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/642026_ec-642026.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array-test.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asyncqueue.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atomic-atomic.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/autoptr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base64.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitlock.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bookmarkfile.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bytes.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cache.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/checksum.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/collate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cond.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convert.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dataset.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/date.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dir.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/environment.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileutils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdatetime.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvariant.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gwakeup.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gwakeup_fallback-gwakeup.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gwakeup_fallback-gwakeuptest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gwakeuptest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hmac.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hook.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hostutils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/include.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyfile.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logging.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mainloop.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mappedfile.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/markup-collect.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/markup-escape.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/markup-parse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/markup-subparser.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/markup.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mem-overflow.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mutex.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/node.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/once.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/option-argv0.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/option-context.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/overflow.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pattern.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/private.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/protocol.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/queue.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rand.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rec-mutex.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regex.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rwlock.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scannerapi.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/search-utils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sequence.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shell.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slice.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/slist.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sort.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawn-multithreaded.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spawn-singlethread.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strfuncs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/string.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-printf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-spawn-echo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testing.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thread.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timeout.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tree.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unicode.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uri.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf8-misc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf8-performance.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf8-pointer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utf8-validate.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +1bit_emufutex-1bit-mutex.o: 1bit-mutex.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(1bit_emufutex_CFLAGS) $(CFLAGS) -MT 1bit_emufutex-1bit-mutex.o -MD -MP -MF $(DEPDIR)/1bit_emufutex-1bit-mutex.Tpo -c -o 1bit_emufutex-1bit-mutex.o `test -f '1bit-mutex.c' || echo '$(srcdir)/'`1bit-mutex.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/1bit_emufutex-1bit-mutex.Tpo $(DEPDIR)/1bit_emufutex-1bit-mutex.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='1bit-mutex.c' object='1bit_emufutex-1bit-mutex.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(1bit_emufutex_CFLAGS) $(CFLAGS) -c -o 1bit_emufutex-1bit-mutex.o `test -f '1bit-mutex.c' || echo '$(srcdir)/'`1bit-mutex.c + +1bit_emufutex-1bit-mutex.obj: 1bit-mutex.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(1bit_emufutex_CFLAGS) $(CFLAGS) -MT 1bit_emufutex-1bit-mutex.obj -MD -MP -MF $(DEPDIR)/1bit_emufutex-1bit-mutex.Tpo -c -o 1bit_emufutex-1bit-mutex.obj `if test -f '1bit-mutex.c'; then $(CYGPATH_W) '1bit-mutex.c'; else $(CYGPATH_W) '$(srcdir)/1bit-mutex.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/1bit_emufutex-1bit-mutex.Tpo $(DEPDIR)/1bit_emufutex-1bit-mutex.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='1bit-mutex.c' object='1bit_emufutex-1bit-mutex.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(1bit_emufutex_CFLAGS) $(CFLAGS) -c -o 1bit_emufutex-1bit-mutex.obj `if test -f '1bit-mutex.c'; then $(CYGPATH_W) '1bit-mutex.c'; else $(CYGPATH_W) '$(srcdir)/1bit-mutex.c'; fi` + +642026_ec-642026.o: 642026.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(642026_ec_CFLAGS) $(CFLAGS) -MT 642026_ec-642026.o -MD -MP -MF $(DEPDIR)/642026_ec-642026.Tpo -c -o 642026_ec-642026.o `test -f '642026.c' || echo '$(srcdir)/'`642026.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/642026_ec-642026.Tpo $(DEPDIR)/642026_ec-642026.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='642026.c' object='642026_ec-642026.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(642026_ec_CFLAGS) $(CFLAGS) -c -o 642026_ec-642026.o `test -f '642026.c' || echo '$(srcdir)/'`642026.c + +642026_ec-642026.obj: 642026.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(642026_ec_CFLAGS) $(CFLAGS) -MT 642026_ec-642026.obj -MD -MP -MF $(DEPDIR)/642026_ec-642026.Tpo -c -o 642026_ec-642026.obj `if test -f '642026.c'; then $(CYGPATH_W) '642026.c'; else $(CYGPATH_W) '$(srcdir)/642026.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/642026_ec-642026.Tpo $(DEPDIR)/642026_ec-642026.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='642026.c' object='642026_ec-642026.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(642026_ec_CFLAGS) $(CFLAGS) -c -o 642026_ec-642026.obj `if test -f '642026.c'; then $(CYGPATH_W) '642026.c'; else $(CYGPATH_W) '$(srcdir)/642026.c'; fi` + +atomic-atomic.o: atomic.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atomic_CFLAGS) $(CFLAGS) -MT atomic-atomic.o -MD -MP -MF $(DEPDIR)/atomic-atomic.Tpo -c -o atomic-atomic.o `test -f 'atomic.c' || echo '$(srcdir)/'`atomic.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/atomic-atomic.Tpo $(DEPDIR)/atomic-atomic.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atomic.c' object='atomic-atomic.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atomic_CFLAGS) $(CFLAGS) -c -o atomic-atomic.o `test -f 'atomic.c' || echo '$(srcdir)/'`atomic.c + +atomic-atomic.obj: atomic.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atomic_CFLAGS) $(CFLAGS) -MT atomic-atomic.obj -MD -MP -MF $(DEPDIR)/atomic-atomic.Tpo -c -o atomic-atomic.obj `if test -f 'atomic.c'; then $(CYGPATH_W) 'atomic.c'; else $(CYGPATH_W) '$(srcdir)/atomic.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/atomic-atomic.Tpo $(DEPDIR)/atomic-atomic.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='atomic.c' object='atomic-atomic.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(atomic_CFLAGS) $(CFLAGS) -c -o atomic-atomic.obj `if test -f 'atomic.c'; then $(CYGPATH_W) 'atomic.c'; else $(CYGPATH_W) '$(srcdir)/atomic.c'; fi` + +gwakeup.o: ../../glib/gwakeup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gwakeup.o -MD -MP -MF $(DEPDIR)/gwakeup.Tpo -c -o gwakeup.o `test -f '../../glib/gwakeup.c' || echo '$(srcdir)/'`../../glib/gwakeup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gwakeup.Tpo $(DEPDIR)/gwakeup.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../glib/gwakeup.c' object='gwakeup.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gwakeup.o `test -f '../../glib/gwakeup.c' || echo '$(srcdir)/'`../../glib/gwakeup.c + +gwakeup.obj: ../../glib/gwakeup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gwakeup.obj -MD -MP -MF $(DEPDIR)/gwakeup.Tpo -c -o gwakeup.obj `if test -f '../../glib/gwakeup.c'; then $(CYGPATH_W) '../../glib/gwakeup.c'; else $(CYGPATH_W) '$(srcdir)/../../glib/gwakeup.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gwakeup.Tpo $(DEPDIR)/gwakeup.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../glib/gwakeup.c' object='gwakeup.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gwakeup.obj `if test -f '../../glib/gwakeup.c'; then $(CYGPATH_W) '../../glib/gwakeup.c'; else $(CYGPATH_W) '$(srcdir)/../../glib/gwakeup.c'; fi` + +gwakeup_fallback-gwakeuptest.o: gwakeuptest.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gwakeup_fallback_CFLAGS) $(CFLAGS) -MT gwakeup_fallback-gwakeuptest.o -MD -MP -MF $(DEPDIR)/gwakeup_fallback-gwakeuptest.Tpo -c -o gwakeup_fallback-gwakeuptest.o `test -f 'gwakeuptest.c' || echo '$(srcdir)/'`gwakeuptest.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gwakeup_fallback-gwakeuptest.Tpo $(DEPDIR)/gwakeup_fallback-gwakeuptest.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwakeuptest.c' object='gwakeup_fallback-gwakeuptest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gwakeup_fallback_CFLAGS) $(CFLAGS) -c -o gwakeup_fallback-gwakeuptest.o `test -f 'gwakeuptest.c' || echo '$(srcdir)/'`gwakeuptest.c + +gwakeup_fallback-gwakeuptest.obj: gwakeuptest.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gwakeup_fallback_CFLAGS) $(CFLAGS) -MT gwakeup_fallback-gwakeuptest.obj -MD -MP -MF $(DEPDIR)/gwakeup_fallback-gwakeuptest.Tpo -c -o gwakeup_fallback-gwakeuptest.obj `if test -f 'gwakeuptest.c'; then $(CYGPATH_W) 'gwakeuptest.c'; else $(CYGPATH_W) '$(srcdir)/gwakeuptest.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gwakeup_fallback-gwakeuptest.Tpo $(DEPDIR)/gwakeup_fallback-gwakeuptest.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gwakeuptest.c' object='gwakeup_fallback-gwakeuptest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gwakeup_fallback_CFLAGS) $(CFLAGS) -c -o gwakeup_fallback-gwakeuptest.obj `if test -f 'gwakeuptest.c'; then $(CYGPATH_W) 'gwakeuptest.c'; else $(CYGPATH_W) '$(srcdir)/gwakeuptest.c'; fi` + +gwakeup_fallback-gwakeup.o: ../../glib/gwakeup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gwakeup_fallback_CFLAGS) $(CFLAGS) -MT gwakeup_fallback-gwakeup.o -MD -MP -MF $(DEPDIR)/gwakeup_fallback-gwakeup.Tpo -c -o gwakeup_fallback-gwakeup.o `test -f '../../glib/gwakeup.c' || echo '$(srcdir)/'`../../glib/gwakeup.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gwakeup_fallback-gwakeup.Tpo $(DEPDIR)/gwakeup_fallback-gwakeup.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../glib/gwakeup.c' object='gwakeup_fallback-gwakeup.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gwakeup_fallback_CFLAGS) $(CFLAGS) -c -o gwakeup_fallback-gwakeup.o `test -f '../../glib/gwakeup.c' || echo '$(srcdir)/'`../../glib/gwakeup.c + +gwakeup_fallback-gwakeup.obj: ../../glib/gwakeup.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gwakeup_fallback_CFLAGS) $(CFLAGS) -MT gwakeup_fallback-gwakeup.obj -MD -MP -MF $(DEPDIR)/gwakeup_fallback-gwakeup.Tpo -c -o gwakeup_fallback-gwakeup.obj `if test -f '../../glib/gwakeup.c'; then $(CYGPATH_W) '../../glib/gwakeup.c'; else $(CYGPATH_W) '$(srcdir)/../../glib/gwakeup.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gwakeup_fallback-gwakeup.Tpo $(DEPDIR)/gwakeup_fallback-gwakeup.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../../glib/gwakeup.c' object='gwakeup_fallback-gwakeup.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gwakeup_fallback_CFLAGS) $(CFLAGS) -c -o gwakeup_fallback-gwakeup.obj `if test -f '../../glib/gwakeup.c'; then $(CYGPATH_W) '../../glib/gwakeup.c'; else $(CYGPATH_W) '$(srcdir)/../../glib/gwakeup.c'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +array-test.log: array-test$(EXEEXT) + @p='array-test$(EXEEXT)'; \ + b='array-test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +asyncqueue.log: asyncqueue$(EXEEXT) + @p='asyncqueue$(EXEEXT)'; \ + b='asyncqueue'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +base64.log: base64$(EXEEXT) + @p='base64$(EXEEXT)'; \ + b='base64'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +bitlock.log: bitlock$(EXEEXT) + @p='bitlock$(EXEEXT)'; \ + b='bitlock'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +bookmarkfile.log: bookmarkfile$(EXEEXT) + @p='bookmarkfile$(EXEEXT)'; \ + b='bookmarkfile'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +bytes.log: bytes$(EXEEXT) + @p='bytes$(EXEEXT)'; \ + b='bytes'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +cache.log: cache$(EXEEXT) + @p='cache$(EXEEXT)'; \ + b='cache'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +checksum.log: checksum$(EXEEXT) + @p='checksum$(EXEEXT)'; \ + b='checksum'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +collate.log: collate$(EXEEXT) + @p='collate$(EXEEXT)'; \ + b='collate'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +cond.log: cond$(EXEEXT) + @p='cond$(EXEEXT)'; \ + b='cond'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +convert.log: convert$(EXEEXT) + @p='convert$(EXEEXT)'; \ + b='convert'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +dataset.log: dataset$(EXEEXT) + @p='dataset$(EXEEXT)'; \ + b='dataset'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +date.log: date$(EXEEXT) + @p='date$(EXEEXT)'; \ + b='date'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +dir.log: dir$(EXEEXT) + @p='dir$(EXEEXT)'; \ + b='dir'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +environment.log: environment$(EXEEXT) + @p='environment$(EXEEXT)'; \ + b='environment'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +error.log: error$(EXEEXT) + @p='error$(EXEEXT)'; \ + b='error'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +fileutils.log: fileutils$(EXEEXT) + @p='fileutils$(EXEEXT)'; \ + b='fileutils'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gdatetime.log: gdatetime$(EXEEXT) + @p='gdatetime$(EXEEXT)'; \ + b='gdatetime'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gvariant.log: gvariant$(EXEEXT) + @p='gvariant$(EXEEXT)'; \ + b='gvariant'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +hash.log: hash$(EXEEXT) + @p='hash$(EXEEXT)'; \ + b='hash'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +hmac.log: hmac$(EXEEXT) + @p='hmac$(EXEEXT)'; \ + b='hmac'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +hook.log: hook$(EXEEXT) + @p='hook$(EXEEXT)'; \ + b='hook'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +hostutils.log: hostutils$(EXEEXT) + @p='hostutils$(EXEEXT)'; \ + b='hostutils'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +keyfile.log: keyfile$(EXEEXT) + @p='keyfile$(EXEEXT)'; \ + b='keyfile'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +list.log: list$(EXEEXT) + @p='list$(EXEEXT)'; \ + b='list'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +logging.log: logging$(EXEEXT) + @p='logging$(EXEEXT)'; \ + b='logging'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +mainloop.log: mainloop$(EXEEXT) + @p='mainloop$(EXEEXT)'; \ + b='mainloop'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +mappedfile.log: mappedfile$(EXEEXT) + @p='mappedfile$(EXEEXT)'; \ + b='mappedfile'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +markup.log: markup$(EXEEXT) + @p='markup$(EXEEXT)'; \ + b='markup'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +markup-parse.log: markup-parse$(EXEEXT) + @p='markup-parse$(EXEEXT)'; \ + b='markup-parse'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +markup-collect.log: markup-collect$(EXEEXT) + @p='markup-collect$(EXEEXT)'; \ + b='markup-collect'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +markup-escape.log: markup-escape$(EXEEXT) + @p='markup-escape$(EXEEXT)'; \ + b='markup-escape'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +markup-subparser.log: markup-subparser$(EXEEXT) + @p='markup-subparser$(EXEEXT)'; \ + b='markup-subparser'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +mem-overflow.log: mem-overflow$(EXEEXT) + @p='mem-overflow$(EXEEXT)'; \ + b='mem-overflow'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +mutex.log: mutex$(EXEEXT) + @p='mutex$(EXEEXT)'; \ + b='mutex'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +node.log: node$(EXEEXT) + @p='node$(EXEEXT)'; \ + b='node'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +once.log: once$(EXEEXT) + @p='once$(EXEEXT)'; \ + b='once'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +option-context.log: option-context$(EXEEXT) + @p='option-context$(EXEEXT)'; \ + b='option-context'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +option-argv0.log: option-argv0$(EXEEXT) + @p='option-argv0$(EXEEXT)'; \ + b='option-argv0'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +overflow.log: overflow$(EXEEXT) + @p='overflow$(EXEEXT)'; \ + b='overflow'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +overflow-fallback.log: overflow-fallback$(EXEEXT) + @p='overflow-fallback$(EXEEXT)'; \ + b='overflow-fallback'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +pattern.log: pattern$(EXEEXT) + @p='pattern$(EXEEXT)'; \ + b='pattern'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +private.log: private$(EXEEXT) + @p='private$(EXEEXT)'; \ + b='private'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +protocol.log: protocol$(EXEEXT) + @p='protocol$(EXEEXT)'; \ + b='protocol'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +queue.log: queue$(EXEEXT) + @p='queue$(EXEEXT)'; \ + b='queue'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +rand.log: rand$(EXEEXT) + @p='rand$(EXEEXT)'; \ + b='rand'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +rec-mutex.log: rec-mutex$(EXEEXT) + @p='rec-mutex$(EXEEXT)'; \ + b='rec-mutex'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +regex.log: regex$(EXEEXT) + @p='regex$(EXEEXT)'; \ + b='regex'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +rwlock.log: rwlock$(EXEEXT) + @p='rwlock$(EXEEXT)'; \ + b='rwlock'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +scannerapi.log: scannerapi$(EXEEXT) + @p='scannerapi$(EXEEXT)'; \ + b='scannerapi'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +search-utils.log: search-utils$(EXEEXT) + @p='search-utils$(EXEEXT)'; \ + b='search-utils'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +sequence.log: sequence$(EXEEXT) + @p='sequence$(EXEEXT)'; \ + b='sequence'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +shell.log: shell$(EXEEXT) + @p='shell$(EXEEXT)'; \ + b='shell'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +slice.log: slice$(EXEEXT) + @p='slice$(EXEEXT)'; \ + b='slice'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +slist.log: slist$(EXEEXT) + @p='slist$(EXEEXT)'; \ + b='slist'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +sort.log: sort$(EXEEXT) + @p='sort$(EXEEXT)'; \ + b='sort'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +spawn-multithreaded.log: spawn-multithreaded$(EXEEXT) + @p='spawn-multithreaded$(EXEEXT)'; \ + b='spawn-multithreaded'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +spawn-singlethread.log: spawn-singlethread$(EXEEXT) + @p='spawn-singlethread$(EXEEXT)'; \ + b='spawn-singlethread'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +strfuncs.log: strfuncs$(EXEEXT) + @p='strfuncs$(EXEEXT)'; \ + b='strfuncs'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +string.log: string$(EXEEXT) + @p='string$(EXEEXT)'; \ + b='string'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +testing.log: testing$(EXEEXT) + @p='testing$(EXEEXT)'; \ + b='testing'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test-printf.log: test-printf$(EXEEXT) + @p='test-printf$(EXEEXT)'; \ + b='test-printf'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +thread.log: thread$(EXEEXT) + @p='thread$(EXEEXT)'; \ + b='thread'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +timeout.log: timeout$(EXEEXT) + @p='timeout$(EXEEXT)'; \ + b='timeout'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +timer.log: timer$(EXEEXT) + @p='timer$(EXEEXT)'; \ + b='timer'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +tree.log: tree$(EXEEXT) + @p='tree$(EXEEXT)'; \ + b='tree'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +utf8-performance.log: utf8-performance$(EXEEXT) + @p='utf8-performance$(EXEEXT)'; \ + b='utf8-performance'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +utf8-pointer.log: utf8-pointer$(EXEEXT) + @p='utf8-pointer$(EXEEXT)'; \ + b='utf8-pointer'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +utf8-validate.log: utf8-validate$(EXEEXT) + @p='utf8-validate$(EXEEXT)'; \ + b='utf8-validate'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +utf8-misc.log: utf8-misc$(EXEEXT) + @p='utf8-misc$(EXEEXT)'; \ + b='utf8-misc'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +utils.log: utils$(EXEEXT) + @p='utils$(EXEEXT)'; \ + b='utils'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +unicode.log: unicode$(EXEEXT) + @p='unicode$(EXEEXT)'; \ + b='unicode'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +uri.log: uri$(EXEEXT) + @p='uri$(EXEEXT)'; \ + b='uri'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +1bit-mutex.log: 1bit-mutex$(EXEEXT) + @p='1bit-mutex$(EXEEXT)'; \ + b='1bit-mutex'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +642026.log: 642026$(EXEEXT) + @p='642026$(EXEEXT)'; \ + b='642026'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +atomic.log: atomic$(EXEEXT) + @p='atomic$(EXEEXT)'; \ + b='atomic'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +642026-ec.log: 642026-ec$(EXEEXT) + @p='642026-ec$(EXEEXT)'; \ + b='642026-ec'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +unix.log: unix$(EXEEXT) + @p='unix$(EXEEXT)'; \ + b='unix'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +include.log: include$(EXEEXT) + @p='include$(EXEEXT)'; \ + b='include'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +autoptr.log: autoptr$(EXEEXT) + @p='autoptr$(EXEEXT)'; \ + b='autoptr'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +1bit-emufutex.log: 1bit-emufutex$(EXEEXT) + @p='1bit-emufutex$(EXEEXT)'; \ + b='1bit-emufutex'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gwakeup.log: gwakeup$(EXEEXT) + @p='gwakeup$(EXEEXT)'; \ + b='gwakeup'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +gwakeup-fallback.log: gwakeup-fallback$(EXEEXT) + @p='gwakeup-fallback$(EXEEXT)'; \ + b='gwakeup-fallback'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<) --tap' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Output=TAP' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +@OS_UNIX_TRUE@gtester-xmllint-check: # check testreport xml with xmllint if present +@OS_UNIX_TRUE@ ${GTESTER} -k --quiet -o tmpsample.xml --test-arg=--gtester-selftest ${GTESTER} +@OS_UNIX_TRUE@ ${XMLLINT} --version 2>/dev/null; test "$$?" != 0 || ${XMLLINT} --noout tmpsample.xml + +@OS_UNIX_TRUE@check-am: gtester-xmllint-check + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/glib/tests/array-test.c b/glib/tests/array-test.c index a819835..a0074d4 100644 --- a/glib/tests/array-test.c +++ b/glib/tests/array-test.c @@ -168,6 +168,10 @@ array_remove_range (void) prev = cur; } + /* Ensure the entire array can be cleared, even when empty. */ + g_array_remove_range (garray, 0, garray->len); + g_array_remove_range (garray, 0, garray->len); + g_array_free (garray, TRUE); } @@ -198,42 +202,6 @@ array_ref_count (void) g_array_unref (garray2); } -static gpointer -array_large_size_remalloc_impl (gpointer mem, - gsize n_bytes) -{ - /* We only care that g_array_set_size() doesn't hang before - * calling g_realloc(). So if we got here, we already won. - */ - exit (0); -} - -static GMemVTable array_large_size_mem_vtable = { - malloc, array_large_size_remalloc_impl, free, - NULL, NULL, NULL -}; - -static void -array_large_size (void) -{ - g_test_bug ("568760"); - - if (g_test_subprocess ()) - { - GArray *array; - - array = g_array_new (FALSE, FALSE, sizeof (char)); - - g_mem_set_vtable (&array_large_size_mem_vtable); - g_array_set_size (array, 1073750016); - g_assert_not_reached (); - return; - } - - g_test_trap_subprocess (NULL, 5000000, 0); - g_test_trap_assert_passed (); -} - static int int_compare (gconstpointer p1, gconstpointer p2) { @@ -747,6 +715,10 @@ byte_array_remove_range (void) g_assert (gbarray->data[4*i+3] == 'd'); } + /* Ensure the entire array can be cleared, even when empty. */ + g_byte_array_remove_range (gbarray, 0, gbarray->len); + g_byte_array_remove_range (gbarray, 0, gbarray->len); + g_byte_array_free (gbarray, TRUE); } @@ -871,7 +843,6 @@ main (int argc, char *argv[]) g_test_add_func ("/array/remove-fast", array_remove_fast); g_test_add_func ("/array/remove-range", array_remove_range); g_test_add_func ("/array/ref-count", array_ref_count); - g_test_add_func ("/array/large-size", array_large_size); g_test_add_func ("/array/sort", array_sort); g_test_add_func ("/array/sort-with-data", array_sort_with_data); g_test_add_func ("/array/clear-func", array_clear_func); diff --git a/glib/tests/asyncqueue.c b/glib/tests/asyncqueue.c index 5ccbb23..4a81d23 100644 --- a/glib/tests/asyncqueue.c +++ b/glib/tests/asyncqueue.c @@ -220,6 +220,52 @@ test_async_queue_timed (void) g_async_queue_unref (q); } +static void +test_async_queue_remove (void) +{ + GAsyncQueue *q; + + q = g_async_queue_new (); + + g_async_queue_push (q, GINT_TO_POINTER (10)); + g_async_queue_push (q, GINT_TO_POINTER (2)); + g_async_queue_push (q, GINT_TO_POINTER (7)); + g_async_queue_push (q, GINT_TO_POINTER (1)); + + g_async_queue_remove (q, GINT_TO_POINTER (7)); + + g_assert_cmpint (GPOINTER_TO_INT (g_async_queue_pop (q)), ==, 10); + g_assert_cmpint (GPOINTER_TO_INT (g_async_queue_pop (q)), ==, 2); + g_assert_cmpint (GPOINTER_TO_INT (g_async_queue_pop (q)), ==, 1); + + g_assert (g_async_queue_try_pop (q) == NULL); + + g_async_queue_unref (q); +} + +static void +test_async_queue_push_front (void) +{ + GAsyncQueue *q; + + q = g_async_queue_new (); + + g_async_queue_push (q, GINT_TO_POINTER (10)); + g_async_queue_push (q, GINT_TO_POINTER (2)); + g_async_queue_push (q, GINT_TO_POINTER (7)); + + g_async_queue_push_front (q, GINT_TO_POINTER (1)); + + g_assert_cmpint (GPOINTER_TO_INT (g_async_queue_pop (q)), ==, 1); + g_assert_cmpint (GPOINTER_TO_INT (g_async_queue_pop (q)), ==, 10); + g_assert_cmpint (GPOINTER_TO_INT (g_async_queue_pop (q)), ==, 2); + g_assert_cmpint (GPOINTER_TO_INT (g_async_queue_pop (q)), ==, 7); + + g_assert (g_async_queue_try_pop (q) == NULL); + + g_async_queue_unref (q); +} + int main (int argc, char *argv[]) { @@ -229,6 +275,8 @@ main (int argc, char *argv[]) g_test_add_func ("/asyncqueue/destroy", test_async_queue_destroy); g_test_add_func ("/asyncqueue/threads", test_async_queue_threads); g_test_add_func ("/asyncqueue/timed", test_async_queue_timed); + g_test_add_func ("/asyncqueue/remove", test_async_queue_remove); + g_test_add_func ("/asyncqueue/push_front", test_async_queue_push_front); return g_test_run (); } diff --git a/glib/tests/autoptr.c b/glib/tests/autoptr.c index df9edd8..b44cf13 100644 --- a/glib/tests/autoptr.c +++ b/glib/tests/autoptr.c @@ -277,6 +277,13 @@ test_g_slist (void) } static void +test_g_string (void) +{ + g_autoptr(GString) val = g_string_new (""); + g_assert (val != NULL); +} + +static void test_g_string_chunk (void) { g_autoptr(GStringChunk) val = g_string_chunk_new (42); @@ -391,6 +398,13 @@ test_g_variant_type (void) g_assert (val != NULL); } +static void +test_strv (void) +{ + g_auto(GStrv) val = g_strsplit("a:b:c", ":", -1); + g_assert (val != NULL); +} + int main (int argc, gchar *argv[]) { @@ -428,6 +442,7 @@ main (int argc, gchar *argv[]) g_test_add_func ("/autoptr/g_scanner", test_g_scanner); g_test_add_func ("/autoptr/g_sequence", test_g_sequence); g_test_add_func ("/autoptr/g_slist", test_g_slist); + g_test_add_func ("/autoptr/g_string", test_g_string); g_test_add_func ("/autoptr/g_string_chunk", test_g_string_chunk); g_test_add_func ("/autoptr/g_thread", test_g_thread); g_test_add_func ("/autoptr/g_mutex", test_g_mutex); @@ -438,10 +453,10 @@ main (int argc, gchar *argv[]) g_test_add_func ("/autoptr/g_tree", test_g_tree); g_test_add_func ("/autoptr/g_variant", test_g_variant); g_test_add_func ("/autoptr/g_variant_builder", test_g_variant_builder); - g_test_add_func ("/autoptr/g_variant_builder", test_g_variant_builder); g_test_add_func ("/autoptr/g_variant_iter", test_g_variant_iter); g_test_add_func ("/autoptr/g_variant_dict", test_g_variant_dict); g_test_add_func ("/autoptr/g_variant_type", test_g_variant_type); + g_test_add_func ("/autoptr/strv", test_strv); return g_test_run (); } diff --git a/glib/tests/base64.c b/glib/tests/base64.c index e1420e1..ffb00d5 100644 --- a/glib/tests/base64.c +++ b/glib/tests/base64.c @@ -57,10 +57,7 @@ test_incremental (gboolean line_break, len -= chunk_len; } - /* Check decoded length */ - g_assert_cmpint (decoded_len, ==, length); - /* Check decoded data */ - g_assert (memcmp (data, data2, length) == 0); + g_assert_cmpmem (data, length, data2, decoded_len); g_free (text); g_free (data2); @@ -94,10 +91,7 @@ test_full (gconstpointer d) data2 = g_base64_decode (text, &len); g_free (text); - /* Check decoded length */ - g_assert_cmpint (len, ==, length); - /* Check decoded base64 data */ - g_assert (memcmp (data, data2, length) == 0); + g_assert_cmpmem (data, length, data2, len); g_free (data2); } @@ -249,13 +243,9 @@ decode_and_compare (const gchar *datap, { guchar *data2; gsize len; - int memcmp_decode; data2 = g_base64_decode (datap, &len); - g_assert_cmpint (len, ==, p->length); - /* g_print ("length: got %d, expected %d\n",len, length); */ - memcmp_decode = memcmp (p->data, data2, p->length); - g_assert_cmpint (memcmp_decode, ==, 0); + g_assert_cmpmem (p->data, p->length, data2, len); g_free (data2); } @@ -266,14 +256,10 @@ decode_inplace_and_compare (const gchar *datap, gchar *data; guchar *data2; gsize len; - int memcmp_decode; data = g_strdup (datap); data2 = g_base64_decode_inplace (data, &len); - g_assert_cmpint (len, ==, p->length); - /* g_print ("length: got %d, expected %d\n",len, length); */ - memcmp_decode = memcmp (p->data, data2, p->length); - g_assert_cmpint (memcmp_decode, ==, 0); + g_assert_cmpmem (p->data, p->length, data2, len); g_free (data2); } @@ -361,8 +347,7 @@ test_base64_decode_smallblock (gconstpointer blocksize_p) decoded_atonce = g_base64_decode (str, &decoded_atonce_size); - g_assert_cmpint (decoded_size, ==, decoded_atonce_size); - g_assert (memcmp (decoded, decoded_atonce, decoded_size) == 0); + g_assert_cmpmem (decoded, decoded_size, decoded_atonce, decoded_atonce_size); g_free (decoded); g_free (decoded_atonce); @@ -394,9 +379,9 @@ main (int argc, char *argv[]) g_test_add_data_func ("/base64/incremental/nobreak/3", GINT_TO_POINTER (DATA_SIZE - 2), test_incremental_nobreak); g_test_add_data_func ("/base64/incremental/break/3", GINT_TO_POINTER (DATA_SIZE - 2), test_incremental_break); - g_test_add_data_func ("/base64/incremental/nobreak/4", GINT_TO_POINTER (1), test_incremental_nobreak); - g_test_add_data_func ("/base64/incremental/nobreak/4", GINT_TO_POINTER (2), test_incremental_nobreak); - g_test_add_data_func ("/base64/incremental/nobreak/4", GINT_TO_POINTER (3), test_incremental_nobreak); + g_test_add_data_func ("/base64/incremental/nobreak/4-a", GINT_TO_POINTER (1), test_incremental_nobreak); + g_test_add_data_func ("/base64/incremental/nobreak/4-b", GINT_TO_POINTER (2), test_incremental_nobreak); + g_test_add_data_func ("/base64/incremental/nobreak/4-c", GINT_TO_POINTER (3), test_incremental_nobreak); g_test_add_func ("/base64/encode", test_base64_encode); g_test_add_func ("/base64/decode", test_base64_decode); diff --git a/glib/tests/bookmarkfile.c b/glib/tests/bookmarkfile.c index 7c2f8d7..c81561e 100644 --- a/glib/tests/bookmarkfile.c +++ b/glib/tests/bookmarkfile.c @@ -63,6 +63,7 @@ test_to_file (void) res = g_file_get_contents ("out.xbel", &out, NULL, &error); g_assert (res); g_assert_no_error (error); + remove ("out.xbel"); g_assert_cmpstr (in, ==, out); g_free (in); @@ -277,7 +278,7 @@ test_load (GBookmarkFile *bookmark, res = g_bookmark_file_load_from_file (bookmark, filename, &error); if (error && g_test_verbose ()) - g_print ("Load error: %s\n", error->message); + g_printerr ("Load error: %s\n", error->message); g_clear_error (&error); return res; @@ -332,7 +333,7 @@ test_modify (GBookmarkFile *bookmark) gchar *mime; if (g_test_verbose ()) - g_print ("\t=> check global title/description..."); + g_printerr ("\t=> check global title/description..."); g_bookmark_file_set_title (bookmark, NULL, "a file"); g_bookmark_file_set_description (bookmark, NULL, "a bookmark file"); @@ -346,10 +347,10 @@ test_modify (GBookmarkFile *bookmark) g_assert_cmpstr (text, ==, "a bookmark file"); g_free (text); if (g_test_verbose ()) - g_print ("ok\n"); + g_printerr ("ok\n"); if (g_test_verbose ()) - g_print ("\t=> check bookmark title/description..."); + g_printerr ("\t=> check bookmark title/description..."); g_bookmark_file_set_title (bookmark, TEST_URI_0, "a title"); g_bookmark_file_set_description (bookmark, TEST_URI_0, "a description"); g_bookmark_file_set_is_private (bookmark, TEST_URI_0, TRUE); @@ -385,10 +386,10 @@ test_modify (GBookmarkFile *bookmark) g_free (icon); g_free (mime); if (g_test_verbose ()) - g_print ("ok\n"); + g_printerr ("ok\n"); if (g_test_verbose ()) - g_print ("\t=> check non existing bookmark..."); + g_printerr ("\t=> check non existing bookmark..."); g_bookmark_file_get_description (bookmark, TEST_URI_1, &error); g_assert_error (error, G_BOOKMARK_FILE_ERROR, G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND); g_clear_error (&error); @@ -405,10 +406,10 @@ test_modify (GBookmarkFile *bookmark) g_assert_error (error, G_BOOKMARK_FILE_ERROR, G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND); g_clear_error (&error); if (g_test_verbose ()) - g_print ("ok\n"); + g_printerr ("ok\n"); if (g_test_verbose ()) - g_print ("\t=> check application..."); + g_printerr ("\t=> check application..."); g_bookmark_file_set_mime_type (bookmark, TEST_URI_0, TEST_MIME); g_assert (!g_bookmark_file_has_application (bookmark, TEST_URI_0, TEST_APP_NAME, NULL)); g_bookmark_file_add_application (bookmark, TEST_URI_0, @@ -442,10 +443,10 @@ test_modify (GBookmarkFile *bookmark) g_clear_error (&error); if (g_test_verbose ()) - g_print ("ok\n"); + g_printerr ("ok\n"); if (g_test_verbose ()) - g_print ("\t=> check groups..."); + g_printerr ("\t=> check groups..."); g_assert (!g_bookmark_file_has_group (bookmark, TEST_URI_1, "Test", NULL)); g_bookmark_file_add_group (bookmark, TEST_URI_1, "Test"); g_assert (g_bookmark_file_has_group (bookmark, TEST_URI_1, "Test", NULL)); @@ -467,17 +468,17 @@ test_modify (GBookmarkFile *bookmark) g_assert_no_error (error); if (g_test_verbose ()) - g_print ("ok\n"); + g_printerr ("ok\n"); if (g_test_verbose ()) - g_print ("\t=> check remove..."); + g_printerr ("\t=> check remove..."); g_assert (g_bookmark_file_remove_item (bookmark, TEST_URI_1, &error) == TRUE); g_assert_no_error (error); g_assert (g_bookmark_file_remove_item (bookmark, TEST_URI_1, &error) == FALSE); g_assert_error (error, G_BOOKMARK_FILE_ERROR, G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND); g_clear_error (&error); if (g_test_verbose ()) - g_print ("ok\n"); + g_printerr ("ok\n"); return TRUE; } diff --git a/glib/tests/bytes.c b/glib/tests/bytes.c index 044450d..58f3bed 100644 --- a/glib/tests/bytes.c +++ b/glib/tests/bytes.c @@ -33,7 +33,7 @@ test_new (void) g_assert (g_bytes_get_data (bytes, &size) != data); g_assert_cmpuint (size, ==, 4); g_assert_cmpuint (g_bytes_get_size (bytes), ==, 4); - g_assert (memcmp (data, g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes)) == 0); + g_assert_cmpmem (data, 4, g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes)); g_bytes_unref (bytes); } @@ -84,10 +84,9 @@ test_new_from_bytes (void) g_assert (sub != NULL); g_assert (g_bytes_get_data (sub, NULL) == ((gchar *)g_bytes_get_data (bytes, NULL)) + 10); - g_assert (g_bytes_get_size (sub) == 4); g_bytes_unref (bytes); - g_assert (memcmp (g_bytes_get_data (sub, NULL), "wave", 4) == 0); + g_assert_cmpmem (g_bytes_get_data (sub, NULL), g_bytes_get_size (sub), "wave", 4); g_bytes_unref (sub); } @@ -212,8 +211,7 @@ test_to_data_transferred (void) memory = g_bytes_get_data (bytes, NULL); data = g_bytes_unref_to_data (bytes, &size); g_assert (data == memory); - g_assert_cmpuint (size, ==, N_NYAN); - g_assert (memcmp (data, NYAN, N_NYAN) == 0); + g_assert_cmpmem (data, size, NYAN, N_NYAN); g_free (data); } @@ -231,8 +229,7 @@ test_to_data_two_refs (void) memory = g_bytes_get_data (bytes, NULL); data = g_bytes_unref_to_data (bytes, &size); g_assert (data != memory); - g_assert_cmpuint (size, ==, N_NYAN); - g_assert (memcmp (data, NYAN, N_NYAN) == 0); + g_assert_cmpmem (data, size, NYAN, N_NYAN); g_free (data); g_assert (g_bytes_get_data (bytes, &size) == memory); g_assert_cmpuint (size, ==, N_NYAN); @@ -252,8 +249,7 @@ test_to_data_non_malloc (void) g_assert (g_bytes_get_data (bytes, NULL) == NYAN); data = g_bytes_unref_to_data (bytes, &size); g_assert (data != (gpointer)NYAN); - g_assert_cmpuint (size, ==, N_NYAN); - g_assert (memcmp (data, NYAN, N_NYAN) == 0); + g_assert_cmpmem (data, size, NYAN, N_NYAN); g_free (data); } @@ -270,8 +266,7 @@ test_to_array_transferred (void) array = g_bytes_unref_to_array (bytes); g_assert (array != NULL); g_assert (array->data == memory); - g_assert_cmpuint (array->len, ==, N_NYAN); - g_assert (memcmp (array->data, NYAN, N_NYAN) == 0); + g_assert_cmpmem (array->data, array->len, NYAN, N_NYAN); g_byte_array_unref (array); } @@ -290,8 +285,7 @@ test_to_array_two_refs (void) array = g_bytes_unref_to_array (bytes); g_assert (array != NULL); g_assert (array->data != memory); - g_assert_cmpuint (array->len, ==, N_NYAN); - g_assert (memcmp (array->data, NYAN, N_NYAN) == 0); + g_assert_cmpmem (array->data, array->len, NYAN, N_NYAN); g_byte_array_unref (array); g_assert (g_bytes_get_data (bytes, &size) == memory); g_assert_cmpuint (size, ==, N_NYAN); @@ -311,8 +305,7 @@ test_to_array_non_malloc (void) array = g_bytes_unref_to_array (bytes); g_assert (array != NULL); g_assert (array->data != (gpointer)NYAN); - g_assert_cmpuint (array->len, ==, N_NYAN); - g_assert (memcmp (array->data, NYAN, N_NYAN) == 0); + g_assert_cmpmem (array->data, array->len, NYAN, N_NYAN); g_byte_array_unref (array); } diff --git a/glib/tests/checksum.c b/glib/tests/checksum.c index b6ae3ef..347b41d 100644 --- a/glib/tests/checksum.c +++ b/glib/tests/checksum.c @@ -868,8 +868,7 @@ test_checksum_reset (gconstpointer d) g_assert_cmpint (len, ==, len2); digest2 = g_malloc (len2); g_checksum_get_digest (checksum, digest2, &len2); - g_assert_cmpint (len, ==, len2); - g_assert (memcmp (digest, digest2, len) == 0); + g_assert_cmpmem (digest, len, digest2, len); g_free (digest); g_free (digest2); diff --git a/glib/tests/cond.c b/glib/tests/cond.c index f9ef3e2..0987f01 100644 --- a/glib/tests/cond.c +++ b/glib/tests/cond.c @@ -37,7 +37,7 @@ push_value (gint value) g_cond_wait (&cond, &mutex); next = value; if (g_test_verbose ()) - g_print ("Thread %p producing next value: %d\n", g_thread_self (), value); + g_printerr ("Thread %p producing next value: %d\n", g_thread_self (), value); if (value % 10 == 0) g_cond_broadcast (&cond); else @@ -54,14 +54,14 @@ pop_value (void) while (next == 0) { if (g_test_verbose ()) - g_print ("Thread %p waiting for cond\n", g_thread_self ()); + g_printerr ("Thread %p waiting for cond\n", g_thread_self ()); g_cond_wait (&cond, &mutex); } value = next; next = 0; g_cond_broadcast (&cond); if (g_test_verbose ()) - g_print ("Thread %p consuming value %d\n", g_thread_self (), value); + g_printerr ("Thread %p consuming value %d\n", g_thread_self (), value); g_mutex_unlock (&mutex); return value; @@ -85,7 +85,7 @@ produce_values (gpointer data) push_value (-1); if (g_test_verbose ()) - g_print ("Thread %p produced %d altogether\n", g_thread_self (), total); + g_printerr ("Thread %p produced %d altogether\n", g_thread_self (), total); return GINT_TO_POINTER (total); } @@ -106,7 +106,7 @@ consume_values (gpointer data) } if (g_test_verbose ()) - g_print ("Thread %p accumulated %d\n", g_thread_self (), accum); + g_printerr ("Thread %p accumulated %d\n", g_thread_self (), accum); return GINT_TO_POINTER (accum); } @@ -190,21 +190,21 @@ cond2_func (gpointer data) g_atomic_int_inc (&check); if (g_test_verbose ()) - g_print ("thread %d starting, check %d\n", value, g_atomic_int_get (&check)); + g_printerr ("thread %d starting, check %d\n", value, g_atomic_int_get (&check)); g_usleep (10000 * value); g_atomic_int_inc (&check); if (g_test_verbose ()) - g_print ("thread %d reaching barrier, check %d\n", value, g_atomic_int_get (&check)); + g_printerr ("thread %d reaching barrier, check %d\n", value, g_atomic_int_get (&check)); ret = barrier_wait (&b); g_assert_cmpint (g_atomic_int_get (&check), ==, 10); if (g_test_verbose ()) - g_print ("thread %d leaving barrier (%d), check %d\n", value, ret, g_atomic_int_get (&check)); + g_printerr ("thread %d leaving barrier (%d), check %d\n", value, ret, g_atomic_int_get (&check)); return NULL; } diff --git a/glib/tests/date.c b/glib/tests/date.c index 6239d51..012e707 100644 --- a/glib/tests/date.c +++ b/glib/tests/date.c @@ -379,7 +379,7 @@ main (int argc, char** argv) 3000, 3001, 3002, 3998, 3999, 4000, 4001, 4002, 4003 }; - g_setenv ("LANG", "en_US.utf-8", TRUE); + g_setenv ("LC_ALL", "en_US.utf-8", TRUE); setlocale (LC_ALL, ""); #ifdef G_OS_WIN32 SetThreadLocale (MAKELCID (MAKELANGID (LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT)); diff --git a/glib/tests/fileutils.c b/glib/tests/fileutils.c index fff4217..d218e78 100644 --- a/glib/tests/fileutils.c +++ b/glib/tests/fileutils.c @@ -488,18 +488,18 @@ test_mkdir_with_parents (void) { gchar *cwd; if (g_test_verbose()) - g_print ("checking g_mkdir_with_parents() in subdir ./hum/"); + g_printerr ("checking g_mkdir_with_parents() in subdir ./hum/"); test_mkdir_with_parents_1 ("hum"); g_remove ("hum"); if (g_test_verbose()) - g_print ("checking g_mkdir_with_parents() in subdir ./hii///haa/hee/"); + g_printerr ("checking g_mkdir_with_parents() in subdir ./hii///haa/hee/"); test_mkdir_with_parents_1 ("hii///haa/hee"); g_remove ("hii/haa/hee"); g_remove ("hii/haa"); g_remove ("hii"); cwd = g_get_current_dir (); if (g_test_verbose()) - g_print ("checking g_mkdir_with_parents() in cwd: %s", cwd); + g_printerr ("checking g_mkdir_with_parents() in cwd: %s", cwd); test_mkdir_with_parents_1 (cwd); g_free (cwd); @@ -827,6 +827,7 @@ test_read_link (void) g_assert_null (path); g_error_free (error); + remove (newpath); g_free (cwd); g_free (newpath); g_free (badpath); @@ -904,6 +905,7 @@ int main (int argc, char *argv[]) { + g_setenv ("LC_ALL", "C", TRUE); g_test_init (&argc, &argv, NULL); g_test_add_func ("/fileutils/build-path", test_build_path); diff --git a/glib/tests/gdatetime.c b/glib/tests/gdatetime.c index f615299..16a163c 100644 --- a/glib/tests/gdatetime.c +++ b/glib/tests/gdatetime.c @@ -70,19 +70,32 @@ test_GDateTime_now (void) { GDateTime *dt; struct tm tm; + time_t before; + time_t after; + + /* before <= dt.to_unix() <= after, but the inequalities might not be + * equality if we're close to the boundary between seconds. + * We loop until before == after (and hence dt.to_unix() should equal both) + * to guard against that. */ + do + { + before = g_get_real_time () / G_TIME_SPAN_SECOND; - memset (&tm, 0, sizeof (tm)); - get_localtime_tm (time (NULL), &tm); + memset (&tm, 0, sizeof (tm)); + get_localtime_tm (before, &tm); - dt = g_date_time_new_now_local (); + dt = g_date_time_new_now_local (); + + after = g_get_real_time () / G_TIME_SPAN_SECOND; + } + while (before != after); g_assert_cmpint (g_date_time_get_year (dt), ==, 1900 + tm.tm_year); g_assert_cmpint (g_date_time_get_month (dt), ==, 1 + tm.tm_mon); g_assert_cmpint (g_date_time_get_day_of_month (dt), ==, tm.tm_mday); g_assert_cmpint (g_date_time_get_hour (dt), ==, tm.tm_hour); g_assert_cmpint (g_date_time_get_minute (dt), ==, tm.tm_min); - /* XXX we need some fuzzyness here */ - g_assert_cmpint (g_date_time_get_second (dt), >=, tm.tm_sec); + g_assert_cmpint (g_date_time_get_second (dt), ==, tm.tm_sec); g_date_time_unref (dt); } @@ -326,7 +339,7 @@ test_GDateTime_new_from_timeval (void) dt = g_date_time_new_from_timeval_local (&tv); if (g_test_verbose ()) - g_print ("\nDT%04d-%02d-%02dT%02d:%02d:%02d%s\n", + g_printerr ("\nDT%04d-%02d-%02dT%02d:%02d:%02d%s\n", g_date_time_get_year (dt), g_date_time_get_month (dt), g_date_time_get_day_of_month (dt), @@ -351,7 +364,7 @@ test_GDateTime_new_from_timeval_utc (void) dt = g_date_time_new_from_timeval_utc (&tv); if (g_test_verbose ()) - g_print ("\nDT%04d-%02d-%02dT%02d:%02d:%02d%s\n", + g_printerr ("\nDT%04d-%02d-%02dT%02d:%02d:%02d%s\n", g_date_time_get_year (dt), g_date_time_get_month (dt), g_date_time_get_day_of_month (dt), @@ -649,23 +662,35 @@ static void test_GDateTime_now_utc (void) { GDateTime *dt; - time_t t; struct tm tm; + time_t t; + time_t after; - t = time (NULL); + /* t <= dt.to_unix() <= after, but the inequalities might not be + * equality if we're close to the boundary between seconds. + * We loop until t == after (and hence dt.to_unix() should equal both) + * to guard against that. */ + do + { + t = g_get_real_time () / G_TIME_SPAN_SECOND; #ifdef HAVE_GMTIME_R - gmtime_r (&t, &tm); + gmtime_r (&t, &tm); #else - { - struct tm *tmp = gmtime (&t); - /* Assume gmtime() can't fail as we got t from time(NULL). (Note - * that on Windows, gmtime() *is* MT-safe, it uses a thread-local - * buffer.) - */ - memcpy (&tm, tmp, sizeof (struct tm)); - } + { + struct tm *tmp = gmtime (&t); + /* Assume gmtime() can't fail as we got t from time(NULL). (Note + * that on Windows, gmtime() *is* MT-safe, it uses a thread-local + * buffer.) + */ + memcpy (&tm, tmp, sizeof (struct tm)); + } #endif - dt = g_date_time_new_now_utc (); + dt = g_date_time_new_now_utc (); + + after = g_get_real_time () / G_TIME_SPAN_SECOND; + } + while (t != after); + g_assert_cmpint (tm.tm_year + 1900, ==, g_date_time_get_year (dt)); g_assert_cmpint (tm.tm_mon + 1, ==, g_date_time_get_month (dt)); g_assert_cmpint (tm.tm_mday, ==, g_date_time_get_day_of_month (dt)); @@ -708,7 +733,7 @@ test_GDateTime_get_utc_offset (void) struct tm tm; memset (&tm, 0, sizeof (tm)); - get_localtime_tm (time (NULL), &tm); + get_localtime_tm (g_get_real_time () / G_TIME_SPAN_SECOND, &tm); dt = g_date_time_new_now_local (); ts = g_date_time_get_utc_offset (dt); @@ -742,10 +767,24 @@ test_GDateTime_to_timeval (void) static void test_GDateTime_to_local (void) { - GDateTime *utc, *now, *dt; + GDateTime *utc = NULL, *now = NULL, *dt; + time_t before, after; + + /* before <= utc.to_unix() <= now.to_unix() <= after, but the inequalities + * might not be equality if we're close to the boundary between seconds. + * We loop until before == after (and hence the GDateTimes should match) + * to guard against that. */ + do + { + before = g_get_real_time () / G_TIME_SPAN_SECOND; + g_clear_pointer (&utc, g_date_time_unref); + g_clear_pointer (&now, g_date_time_unref); + utc = g_date_time_new_now_utc (); + now = g_date_time_new_now_local (); + after = g_get_real_time () / G_TIME_SPAN_SECOND; + } + while (before != after); - utc = g_date_time_new_now_utc (); - now = g_date_time_new_now_local (); dt = g_date_time_to_local (utc); g_assert_cmpint (g_date_time_get_year (now), ==, g_date_time_get_year (dt)); @@ -1146,7 +1185,7 @@ test_all_dates (void) dt = g_date_time_new (timezone, year, month, day, 0, 0, 0); #if 0 - g_print ("%04d-%02d-%02d = %04d-W%02d-%d = %04d-%03d\n", + g_printerr ("%04d-%02d-%02d = %04d-W%02d-%d = %04d-%03d\n", year, month, day, week_year, week_num, weekday, year, day_of_year); diff --git a/glib/tests/gvariant.c b/glib/tests/gvariant.c index e13aa82..889b28b 100644 --- a/glib/tests/gvariant.c +++ b/glib/tests/gvariant.c @@ -2224,8 +2224,7 @@ test_byteswap (void) g_variant_serialised_byteswap (two); - g_assert_cmpint (one.size, ==, two.size); - g_assert (memcmp (one.data, two.data, one.size) == 0); + g_assert_cmpmem (one.data, one.size, two.data, two.size); tree_instance_free (tree); g_free (one.data); diff --git a/glib/tests/hash.c b/glib/tests/hash.c index c1c8539..a3ccc89 100644 --- a/glib/tests/hash.c +++ b/glib/tests/hash.c @@ -823,6 +823,10 @@ test_remove_all (void) g_assert_cmpint (destroy_counter, ==, 2); g_assert_cmpint (destroy_key_counter, ==, 2); + g_hash_table_remove_all (h); + g_assert_cmpint (destroy_counter, ==, 2); + g_assert_cmpint (destroy_key_counter, ==, 2); + g_hash_table_unref (h); } diff --git a/glib/tests/hmac.c b/glib/tests/hmac.c index cb5cc0d..269c3e4 100644 --- a/glib/tests/hmac.c +++ b/glib/tests/hmac.c @@ -352,8 +352,7 @@ test_hmac (HmacCase *t) g_hmac_update (hmac, t->data, t->data_len); g_hmac_get_digest (hmac, digest, &digest_len); - g_assert_cmpuint (digest_len, ==, hmac_len); - g_assert (memcmp (digest, t->result, digest_len) == 0); + g_assert_cmpmem (digest, hmac_len, t->result, digest_len); g_free (digest); g_hmac_unref (hmac); diff --git a/glib/tests/keyfile.c b/glib/tests/keyfile.c index a0a0aa7..a5cc646 100644 --- a/glib/tests/keyfile.c +++ b/glib/tests/keyfile.c @@ -508,7 +508,11 @@ test_string (void) GKeyFile *keyfile; GError *error = NULL; gchar *value; - const gchar const *list[3]; + const gchar * const list[3] = { + "one", + "two;andahalf", + "3", + }; const gchar *data = "[valid]\n" "key1=\\s\\n\\t\\r\\\\\n" @@ -544,9 +548,6 @@ test_string (void) g_key_file_set_string (keyfile, "inserted", "key4", "new\nline"); g_key_file_set_string (keyfile, "inserted", "key5", "carriage\rreturn"); g_key_file_set_string (keyfile, "inserted", "key6", "slash\\yay!"); - list[0] = "one"; - list[1] = "two;andahalf"; - list[2] = "3"; g_key_file_set_string_list (keyfile, "inserted", "key7", list, 3); check_string_value (keyfile, "inserted", "key1", "simple"); @@ -573,6 +574,8 @@ test_boolean (void) "key2=false\n" "key3=1\n" "key4=0\n" + "key5= true\n" + "key6=true \n" "[invalid]\n" "key1=t\n" "key2=f\n" @@ -585,6 +588,8 @@ test_boolean (void) check_boolean_value (keyfile, "valid", "key2", FALSE); check_boolean_value (keyfile, "valid", "key3", TRUE); check_boolean_value (keyfile, "valid", "key4", FALSE); + check_boolean_value (keyfile, "valid", "key5", TRUE); + check_boolean_value (keyfile, "valid", "key6", TRUE); g_key_file_get_boolean (keyfile, "invalid", "key1", &error); check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE); @@ -619,6 +624,8 @@ test_number (void) "key4=2324431\n" "key5=-2324431\n" "key6=000111\n" + "key7= 1\n" + "key8=1 \n" "dkey1=000111\n" "dkey2=145.45\n" "dkey3=-3453.7\n" @@ -640,6 +647,8 @@ test_number (void) check_integer_value (keyfile, "valid", "key4", 2324431); check_integer_value (keyfile, "valid", "key5", -2324431); check_integer_value (keyfile, "valid", "key6", 111); + check_integer_value (keyfile, "valid", "key7", 1); + check_integer_value (keyfile, "valid", "key8", 1); check_double_value (keyfile, "valid", "dkey1", 111.0); check_double_value (keyfile, "valid", "dkey2", 145.45); check_double_value (keyfile, "valid", "dkey3", -3453.7); @@ -1396,6 +1405,7 @@ test_save (void) c = g_key_file_get_uint64 (kf2, "bees", "c", NULL); g_assert (c == G_GUINT64_CONSTANT (123456789123456789)); + remove (file); g_free (file); g_key_file_free (kf); g_key_file_free (kf2); diff --git a/glib/tests/malloc.c b/glib/tests/malloc.c deleted file mode 100644 index 0a95d96..0000000 --- a/glib/tests/malloc.c +++ /dev/null @@ -1,117 +0,0 @@ -/* Unit tests for g_malloc - * Copyright (C) 2013 Red Hat, Inc. - * - * This work is provided "as is"; redistribution and modification - * in whole or in part, in any medium, physical or electronic is - * permitted without restriction. - * - * This work is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * - * In no event shall the authors or contributors be liable for any - * direct, indirect, incidental, special, exemplary, or consequential - * damages (including, but not limited to, procurement of substitute - * goods or services; loss of use, data, or profits; or business - * interruption) however caused and on any theory of liability, whether - * in contract, strict liability, or tort (including negligence or - * otherwise) arising in any way out of the use of this software, even - * if advised of the possibility of such damage. - * - * Author: Matthias Clasen - */ - -#include "glib.h" -#include - -static void -test_profiler (void) -{ - if (g_test_subprocess ()) - { - gpointer p; - g_mem_set_vtable (glib_mem_profiler_table); - p = g_malloc (100); - p = g_realloc (p, 200); - g_free (p); - p = g_malloc0 (1000); - g_free (p); - p = g_try_malloc (2000); - p = g_try_realloc (p, 3000); - g_free (p); - p = g_malloc (0); - p = g_malloc0 (0); - p = g_realloc (NULL, 0); - p = g_try_malloc (0); - p = g_try_realloc (NULL, 0); - g_mem_profile (); - exit (0); - } - g_test_trap_subprocess (NULL, 0, 0); - g_test_trap_assert_passed (); - g_test_trap_assert_stdout ("*GLib Memory statistics*"); -} - -static void -test_fallback_calloc (void) -{ - if (g_test_subprocess ()) - { - GMemVTable vtable = { malloc, realloc, free, NULL, NULL, NULL }; - gpointer p; - - g_mem_set_vtable (&vtable); - p = g_malloc0 (1000); - g_free (p); - exit (0); - } - g_test_trap_subprocess (NULL, 0, 0); - g_test_trap_assert_passed (); -} - -static void -test_incomplete_vtable (void) -{ - if (g_test_subprocess ()) - { - GMemVTable vtable = { malloc, realloc, NULL, NULL, NULL, NULL }; - gpointer p; - - g_mem_set_vtable (&vtable); - p = g_malloc0 (1000); - g_free (p); - exit (0); - } - g_test_trap_subprocess (NULL, 0, 0); - g_test_trap_assert_failed (); - g_test_trap_assert_stderr ("*lacks one of*"); -} - -static void -test_double_vtable (void) -{ - if (g_test_subprocess ()) - { - GMemVTable vtable = { malloc, realloc, free, NULL, NULL, NULL }; - - g_mem_set_vtable (&vtable); - g_mem_set_vtable (&vtable); - exit (0); - } - g_test_trap_subprocess (NULL, 0, 0); - g_test_trap_assert_failed (); - g_test_trap_assert_stderr ("*can only be set once*"); -} - -int -main (int argc, char *argv[]) -{ - g_test_init (&argc, &argv, NULL); - - g_test_add_func ("/malloc/incomplete-vtable", test_incomplete_vtable); - g_test_add_func ("/malloc/double-vtable", test_double_vtable); - g_test_add_func ("/malloc/fallback-calloc", test_fallback_calloc); - g_test_add_func ("/malloc/profiler", test_profiler); - - return g_test_run (); -} diff --git a/glib/tests/markup-subparser.c b/glib/tests/markup-subparser.c index 3218880..1336266 100644 --- a/glib/tests/markup-subparser.c +++ b/glib/tests/markup-subparser.c @@ -373,6 +373,7 @@ TestCase error_cases[] = /* error cases */ int main (int argc, char **argv) { + g_setenv ("LC_ALL", "C", TRUE); g_test_init (&argc, &argv, NULL); add_tests (test, "/glib/markup/subparser/success", test_cases); add_tests (test, "/glib/markup/subparser/failure", error_cases); diff --git a/glib/tests/markups/valid-16.cdata-as-text b/glib/tests/markups/valid-16.cdata-as-text deleted file mode 100644 index ef35ffc..0000000 --- a/glib/tests/markups/valid-16.cdata-as-text +++ /dev/null @@ -1,42 +0,0 @@ -ELEMENT 'a' - TEXT ' - ' - ELEMENT 'b' - TEXT ' - ' - ELEMENT 'c1' - TEXT 'c1' - END 'c1' - TEXT ' - ' - ELEMENT 'c2' - TEXT 'c2' - END 'c2' - TEXT ' - ' - END 'b' - TEXT ' - ' - ELEMENT 'b1' - TEXT 'b1' - END 'b1' - TEXT ' - ' - ELEMENT 'b2' - TEXT 'b2' - END 'b2' - TEXT ' - ' - ELEMENT 'b3' - TEXT 'b3' - END 'b3' - TEXT ' - ' - ELEMENT 'b4' - TEXT '' - TEXT 'This is CDATA' - TEXT '' - END 'b4' - TEXT ' -' -END 'a' diff --git a/glib/tests/markups/valid-8.cdata-as-text b/glib/tests/markups/valid-8.cdata-as-text deleted file mode 100644 index e4c4639..0000000 --- a/glib/tests/markups/valid-8.cdata-as-text +++ /dev/null @@ -1,5 +0,0 @@ -ELEMENT 'foo' - TEXT '' - TEXT ' some <<<<>>>> CDATA ' - TEXT '' -END 'foo' diff --git a/glib/tests/mutex.c b/glib/tests/mutex.c index 3bd2e2f..14e83cf 100644 --- a/glib/tests/mutex.c +++ b/glib/tests/mutex.c @@ -98,7 +98,7 @@ acquire (gint nr) if (!g_mutex_trylock (&locks[nr])) { if (g_test_verbose ()) - g_print ("thread %p going to block on lock %d\n", self, nr); + g_printerr ("thread %p going to block on lock %d\n", self, nr); g_mutex_lock (&locks[nr]); } diff --git a/glib/tests/option-context.c b/glib/tests/option-context.c index 0ca29ca..12b8622 100644 --- a/glib/tests/option-context.c +++ b/glib/tests/option-context.c @@ -71,8 +71,6 @@ print_help (GOptionContext *options, gchar **argv) gint argc = 3; GError *error = NULL; - g_setenv ("LANG", "C", TRUE); - g_option_context_parse (options, &argc, &argv, &error); g_option_context_free (options); exit(0); @@ -624,7 +622,7 @@ arg_test5 (void) gchar **argv_copy; int argc; char *old_locale, *current_locale; - const char *locale = "de_DE"; + const char *locale = "de_DE.UTF-8"; GOptionEntry entries [] = { { "test", 0, 0, G_OPTION_ARG_DOUBLE, &arg_test5_double, NULL, NULL }, { NULL } }; @@ -2487,6 +2485,7 @@ main (int argc, int i; gchar *test_name; + g_setenv ("LC_ALL", "C", TRUE); g_test_init (&argc, &argv, NULL); g_test_bug_base ("http://bugzilla.gnome.org/"); diff --git a/glib/tests/overflow.c b/glib/tests/overflow.c new file mode 100644 index 0000000..5c68d95 --- /dev/null +++ b/glib/tests/overflow.c @@ -0,0 +1,199 @@ +/* + * Copyright 2015 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. + * + * See the included COPYING file for more information. + * + * Author: Allison Ryan Lortie + */ + +#include + +typedef struct +{ + gboolean success; + guint64 c, a, b; +} Case; + +static void +test_checked_guint_add (void) +{ + static const Case cases[] = { + /* success c = a + b */ + { TRUE, 0, 0, 0 }, + { TRUE, G_MAXINT, G_MAXINT, 0 }, + { TRUE, G_MAXINT, 0, G_MAXINT }, + { TRUE, G_MAXUINT, G_MAXUINT, 0 }, + { TRUE, G_MAXUINT, 0, G_MAXUINT }, + { TRUE, G_MAXUINT - 1, G_MAXINT, G_MAXINT }, + { FALSE, 0, G_MAXUINT, 1 }, + { FALSE, 0, 1, G_MAXUINT }, + { FALSE, 0, G_MAXUINT, G_MAXUINT } + }; + guint i; + + for (i = 0; i < G_N_ELEMENTS (cases); i++) + { + guint result; + + g_assert_cmpuint (cases[i].success, ==, g_uint_checked_add (&result, cases[i].a, cases[i].b)); + if (cases[i].success) + g_assert_cmpuint (cases[i].c, ==, result); + } +} + +static void +test_checked_guint_mul (void) +{ + static const Case cases[] = { + /* success c = a * b */ + { TRUE, 0, 0, 0 }, + { TRUE, 0, G_MAXINT, 0 }, + { TRUE, G_MAXINT, G_MAXINT, 1 }, + { TRUE, 0, G_MAXUINT, 0 }, + { TRUE, G_MAXUINT, G_MAXUINT, 1 }, + { TRUE, 2 * (guint) G_MAXINT, 2, G_MAXINT }, + { TRUE, 2 * (guint) G_MAXINT, G_MAXINT, 2 }, + { FALSE, 0, 3, G_MAXINT }, + { FALSE, 0, G_MAXINT, 3 } + }; + guint i; + + for (i = 0; i < G_N_ELEMENTS (cases); i++) + { + guint result; + + g_assert_cmpuint (cases[i].success, ==, g_uint_checked_mul (&result, cases[i].a, cases[i].b)); + if (cases[i].success) + g_assert_cmpuint (cases[i].c, ==, result); + } +} + + +static void +test_checked_guint64_add (void) +{ + static const Case cases[] = { + /* success c = a + b */ + { TRUE, 0, 0, 0 }, + { TRUE, G_MAXINT64, G_MAXINT64, 0 }, + { TRUE, G_MAXINT64, 0, G_MAXINT64 }, + { TRUE, G_MAXUINT64, G_MAXUINT64, 0 }, + { TRUE, G_MAXUINT64, 0, G_MAXUINT64 }, + { TRUE, G_MAXUINT64 - 1, G_MAXINT64, G_MAXINT64 }, + { FALSE, 0, G_MAXUINT64, 1 }, + { FALSE, 0, 1, G_MAXUINT64 }, + { FALSE, 0, G_MAXUINT64, G_MAXUINT64 } + }; + guint i; + + for (i = 0; i < G_N_ELEMENTS (cases); i++) + { + guint64 result; + + g_assert_cmpuint (cases[i].success, ==, g_uint64_checked_add (&result, cases[i].a, cases[i].b)); + if (cases[i].success) + g_assert_cmpuint (cases[i].c, ==, result); + } +} + +static void +test_checked_guint64_mul (void) +{ + static const Case cases[] = { + /* success c = a * b */ + { TRUE, 0, 0, 0 }, + { TRUE, 0, G_MAXINT64, 0 }, + { TRUE, G_MAXINT64, G_MAXINT64, 1 }, + { TRUE, 0, G_MAXUINT64, 0 }, + { TRUE, G_MAXUINT64, G_MAXUINT64, 1 }, + { TRUE, 2 * (guint64) G_MAXINT64, 2, G_MAXINT64 }, + { TRUE, 2 * (guint64) G_MAXINT64, G_MAXINT64, 2 }, + { FALSE, 0, 3, G_MAXINT64 }, + { FALSE, 0, G_MAXINT64, 3 } + }; + guint i; + + for (i = 0; i < G_N_ELEMENTS (cases); i++) + { + guint64 result; + + g_assert_cmpuint (cases[i].success, ==, g_uint64_checked_mul (&result, cases[i].a, cases[i].b)); + if (cases[i].success) + g_assert_cmpuint (cases[i].c, ==, result); + } +} + + +static void +test_checked_gsize_add (void) +{ + static const Case cases[] = { + /* success c = a + b */ + { TRUE, 0, 0, 0 }, + { TRUE, G_MAXSSIZE, G_MAXSSIZE, 0 }, + { TRUE, G_MAXSSIZE, 0, G_MAXSSIZE }, + { TRUE, G_MAXSIZE, G_MAXSIZE, 0 }, + { TRUE, G_MAXSIZE, 0, G_MAXSIZE }, + { TRUE, G_MAXSIZE - 1, G_MAXSSIZE, G_MAXSSIZE }, + { FALSE, 0, G_MAXSIZE, 1 }, + { FALSE, 0, 1, G_MAXSIZE }, + { FALSE, 0, G_MAXSIZE, G_MAXSIZE } + }; + guint i; + + for (i = 0; i < G_N_ELEMENTS (cases); i++) + { + gsize result; + + g_assert_cmpuint (cases[i].success, ==, g_size_checked_add (&result, cases[i].a, cases[i].b)); + if (cases[i].success) + g_assert_cmpuint (cases[i].c, ==, result); + } +} + +static void +test_checked_gsize_mul (void) +{ + static const Case cases[] = { + /* success c = a * b */ + { TRUE, 0, 0, 0 }, + { TRUE, 0, G_MAXSSIZE, 0 }, + { TRUE, G_MAXSSIZE, G_MAXSSIZE, 1 }, + { TRUE, 0, G_MAXSIZE, 0 }, + { TRUE, G_MAXSIZE, G_MAXSIZE, 1 }, + { TRUE, 2 * (gsize) G_MAXSSIZE, 2, G_MAXSSIZE }, + { TRUE, 2 * (gsize) G_MAXSSIZE, G_MAXSSIZE, 2 }, + { FALSE, 0, 3, G_MAXSSIZE }, + { FALSE, 0, G_MAXSSIZE, 3 } + }; + guint i; + + for (i = 0; i < G_N_ELEMENTS (cases); i++) + { + gsize result; + + g_assert_cmpuint (cases[i].success, ==, g_size_checked_mul (&result, cases[i].a, cases[i].b)); + if (cases[i].success) + g_assert_cmpuint (cases[i].c, ==, result); + } +} + +int +main (int argc, char **argv) +{ + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/glib/checked-math/guint-add", test_checked_guint_add); + g_test_add_func ("/glib/checked-math/guint-mul", test_checked_guint_mul); + g_test_add_func ("/glib/checked-math/guint64-add", test_checked_guint64_add); + g_test_add_func ("/glib/checked-math/guint64-mul", test_checked_guint64_mul); + g_test_add_func ("/glib/checked-math/gsize-add", test_checked_gsize_add); + g_test_add_func ("/glib/checked-math/gsize-mul", test_checked_gsize_mul); + + return g_test_run (); +} diff --git a/glib/tests/private.c b/glib/tests/private.c index d23259c..6e6eba1 100644 --- a/glib/tests/private.c +++ b/glib/tests/private.c @@ -328,7 +328,7 @@ sp5_func (gpointer data) g_assert_cmpint (GPOINTER_TO_INT (value), ==, v); if (g_test_verbose ()) - g_print ("thread %d set sp5\n", v); + g_printerr ("thread %d set sp5\n", v); g_mutex_lock (&m5); g_atomic_int_inc (&count5); g_cond_signal (&c5a); @@ -336,7 +336,7 @@ sp5_func (gpointer data) g_mutex_unlock (&m5); if (g_test_verbose ()) - g_print ("thread %d get sp5\n", v); + g_printerr ("thread %d get sp5\n", v); value = g_static_private_get (&sp5); g_assert (value == NULL); @@ -359,7 +359,7 @@ test_static_private5 (void) g_cond_wait (&c5a, &m5); if (g_test_verbose ()) - g_print ("sp5 gets nuked\n"); + g_printerr ("sp5 gets nuked\n"); g_static_private_free (&sp5); diff --git a/glib/tests/queue.c b/glib/tests/queue.c index 4f5e753..9f4d3c2 100644 --- a/glib/tests/queue.c +++ b/glib/tests/queue.c @@ -722,7 +722,7 @@ random_test (gconstpointer d) if (qinf->head != q->head || qinf->tail != q->tail || qinf->length != q->length) - g_print ("op: %d\n", op); + g_printerr ("op: %d\n", op); g_assert (qinf->head == q->head); g_assert (qinf->tail == q->tail); diff --git a/glib/tests/rec-mutex.c b/glib/tests/rec-mutex.c index 95ac03f..5b2f9c2 100644 --- a/glib/tests/rec-mutex.c +++ b/glib/tests/rec-mutex.c @@ -85,7 +85,7 @@ acquire (gint nr) if (!g_rec_mutex_trylock (&locks[nr])) { if (g_test_verbose ()) - g_print ("thread %p going to block on lock %d\n", self, nr); + g_printerr ("thread %p going to block on lock %d\n", self, nr); g_rec_mutex_lock (&locks[nr]); } @@ -100,7 +100,7 @@ acquire (gint nr) g_assert (owners[nr] == self); /* hopefully this is still us... */ if (g_test_verbose ()) - g_print ("thread %p recursively taking lock %d\n", self, nr); + g_printerr ("thread %p recursively taking lock %d\n", self, nr); g_rec_mutex_lock (&locks[nr]); /* we're recursive, after all */ diff --git a/glib/tests/regex.c b/glib/tests/regex.c index cc76077..bd42230 100644 --- a/glib/tests/regex.c +++ b/glib/tests/regex.c @@ -25,6 +25,12 @@ #include #include "glib.h" +#ifdef USE_SYSTEM_PCRE +#include +#else +#include "glib/pcre/pcre.h" +#endif + /* U+20AC EURO SIGN (symbol, currency) */ #define EURO "\xe2\x82\xac" /* U+00E0 LATIN SMALL LETTER A WITH GRAVE (letter, lowercase) */ @@ -194,7 +200,32 @@ test_match (gconstpointer d) match = g_regex_match_full (regex, data->string, data->string_len, data->start_position, data->match_opts2, NULL, NULL); - g_assert_cmpint (match, ==, data->expected); + if (data->expected) + { + if (!match) + g_error ("Regex '%s' (with compile options %u and " + "match options %u) should have matched '%.*s' " + "(of length %d, at position %d, with match options %u) but did not", + data->pattern, data->compile_opts, data->match_opts, + data->string_len == -1 ? (int) strlen (data->string) : + (int) data->string_len, + data->string, (int) data->string_len, + data->start_position, data->match_opts2); + + g_assert_cmpint (match, ==, TRUE); + } + else + { + if (match) + g_error ("Regex '%s' (with compile options %u and " + "match options %u) should not have matched '%.*s' " + "(of length %d, at position %d, with match options %u) but did", + data->pattern, data->compile_opts, data->match_opts, + data->string_len == -1 ? (int) strlen (data->string) : + (int) data->string_len, + data->string, (int) data->string_len, + data->start_position, data->match_opts2); + } if (data->string_len == -1 && data->start_position == 0) { @@ -1020,10 +1051,13 @@ test_expand (gconstpointer d) GRegex *regex = NULL; GMatchInfo *match_info = NULL; gchar *res; + GError *error = NULL; if (data->pattern) { - regex = g_regex_new (data->pattern, data->raw ? G_REGEX_RAW : 0, 0, NULL); + regex = g_regex_new (data->pattern, data->raw ? G_REGEX_RAW : 0, 0, + &error); + g_assert_no_error (error); g_regex_match (regex, data->string, 0, &match_info); } @@ -1279,7 +1313,38 @@ test_match_all (gconstpointer d) g_assert (match_ok); match_count = g_match_info_get_match_count (match_info); - g_assert_cmpint (match_count, ==, g_slist_length (data->expected)); + + if (match_count != g_slist_length (data->expected)) + { + g_message ("regex: %s", data->pattern); + g_message ("string: %s", data->string); + g_message ("matched strings:"); + + for (i = 0; i < match_count; i++) + { + gint start, end; + gchar *matched_string; + + matched_string = g_match_info_fetch (match_info, i); + g_match_info_fetch_pos (match_info, i, &start, &end); + g_message ("%d. %d-%d '%s'", i, start, end, matched_string); + g_free (matched_string); + } + + g_message ("expected strings:"); + i = 0; + + for (l_exp = data->expected; l_exp != NULL; l_exp = l_exp->next) + { + Match *exp = l_exp->data; + + g_message ("%d. %d-%d '%s'", i, exp->start, exp->end, exp->string); + i++; + } + + g_error ("match_count not as expected: %d != %d", + match_count, g_slist_length (data->expected)); + } l_exp = data->expected; for (i = 0; i < match_count; i++) @@ -2100,6 +2165,24 @@ test_max_lookbehind (void) g_regex_unref (regex); } +static gboolean +pcre_ge (guint64 major, guint64 minor) +{ + const char *version; + gchar *ptr; + guint64 pcre_major, pcre_minor; + + /* e.g. 8.35 2014-04-04 */ + version = pcre_version (); + + pcre_major = g_ascii_strtoull (version, &ptr, 10); + /* ptr points to ".MINOR (release date)" */ + g_assert (ptr[0] == '.'); + pcre_minor = g_ascii_strtoull (ptr + 1, NULL, 10); + + return (pcre_major > major) || (pcre_major == major && pcre_minor >= minor); +} + int main (int argc, char *argv[]) { @@ -2196,7 +2279,25 @@ main (int argc, char *argv[]) TEST_NEW_FAIL ("^(?(0)f|b)oo", 0, G_REGEX_ERROR_INVALID_CONDITION); TEST_NEW_FAIL ("(?<=\\C)X", 0, G_REGEX_ERROR_SINGLE_BYTE_MATCH_IN_LOOKBEHIND); TEST_NEW_FAIL ("(?!\\w)(?R)", 0, G_REGEX_ERROR_INFINITE_LOOP); - TEST_NEW_FAIL ("(?(?foo)\\gfoo)\\geks)(?Peccs)", 0, G_REGEX_ERROR_DUPLICATE_SUBPATTERN_NAME); #if 0 TEST_NEW_FAIL (?, 0, G_REGEX_ERROR_MALFORMED_PROPERTY); @@ -2314,16 +2415,16 @@ main (int argc, char *argv[]) TEST_MATCH("a", 0, 0, "ba", 1, 0, 0, FALSE); TEST_MATCH("a", 0, 0, "bab", -1, 0, 0, TRUE); TEST_MATCH("a", 0, 0, "b", -1, 0, 0, FALSE); - TEST_MATCH("a", 0, G_REGEX_ANCHORED, "a", -1, 0, 0, TRUE); - TEST_MATCH("a", 0, G_REGEX_ANCHORED, "ab", -1, 1, 0, FALSE); - TEST_MATCH("a", 0, G_REGEX_ANCHORED, "ba", 1, 0, 0, FALSE); - TEST_MATCH("a", 0, G_REGEX_ANCHORED, "bab", -1, 0, 0, FALSE); - TEST_MATCH("a", 0, G_REGEX_ANCHORED, "b", -1, 0, 0, FALSE); - TEST_MATCH("a", 0, 0, "a", -1, 0, G_REGEX_ANCHORED, TRUE); - TEST_MATCH("a", 0, 0, "ab", -1, 1, G_REGEX_ANCHORED, FALSE); - TEST_MATCH("a", 0, 0, "ba", 1, 0, G_REGEX_ANCHORED, FALSE); - TEST_MATCH("a", 0, 0, "bab", -1, 0, G_REGEX_ANCHORED, FALSE); - TEST_MATCH("a", 0, 0, "b", -1, 0, G_REGEX_ANCHORED, FALSE); + TEST_MATCH("a", 0, G_REGEX_MATCH_ANCHORED, "a", -1, 0, 0, TRUE); + TEST_MATCH("a", 0, G_REGEX_MATCH_ANCHORED, "ab", -1, 1, 0, FALSE); + TEST_MATCH("a", 0, G_REGEX_MATCH_ANCHORED, "ba", 1, 0, 0, FALSE); + TEST_MATCH("a", 0, G_REGEX_MATCH_ANCHORED, "bab", -1, 0, 0, FALSE); + TEST_MATCH("a", 0, G_REGEX_MATCH_ANCHORED, "b", -1, 0, 0, FALSE); + TEST_MATCH("a", 0, 0, "a", -1, 0, G_REGEX_MATCH_ANCHORED, TRUE); + TEST_MATCH("a", 0, 0, "ab", -1, 1, G_REGEX_MATCH_ANCHORED, FALSE); + TEST_MATCH("a", 0, 0, "ba", 1, 0, G_REGEX_MATCH_ANCHORED, FALSE); + TEST_MATCH("a", 0, 0, "bab", -1, 0, G_REGEX_MATCH_ANCHORED, FALSE); + TEST_MATCH("a", 0, 0, "b", -1, 0, G_REGEX_MATCH_ANCHORED, FALSE); TEST_MATCH("a|b", 0, 0, "a", -1, 0, 0, TRUE); TEST_MATCH("\\d", 0, 0, EURO, -1, 0, 0, FALSE); TEST_MATCH("^.$", 0, 0, EURO, -1, 0, 0, TRUE); @@ -2387,8 +2488,12 @@ main (int argc, char *argv[]) /* Test that othercasing in our pcre/glib integration is bug-for-bug compatible * with pcre's internal tables. Bug #678273 */ TEST_MATCH("[DŽ]", G_REGEX_CASELESS, 0, "DŽ", -1, 0, 0, TRUE); - TEST_MATCH("[DŽ]", G_REGEX_CASELESS, 0, "Dž", -1, 0, 0, FALSE); TEST_MATCH("[DŽ]", G_REGEX_CASELESS, 0, "dž", -1, 0, 0, TRUE); +#if PCRE_MAJOR > 8 || (PCRE_MAJOR == 8 && PCRE_MINOR >= 32) + /* This would incorrectly fail to match in pcre < 8.32, so only assert + * this for known-good pcre. */ + TEST_MATCH("[DŽ]", G_REGEX_CASELESS, 0, "Dž", -1, 0, 0, TRUE); +#endif /* TEST_MATCH_NEXT#(pattern, string, string_len, start_position, ...) */ TEST_MATCH_NEXT0("a", "x", -1, 0); @@ -2569,8 +2674,11 @@ main (int argc, char *argv[]) TEST_EXPAND("a", "a", "\\0130", FALSE, "X"); TEST_EXPAND("a", "a", "\\\\\\0", FALSE, "\\a"); TEST_EXPAND("a(?P.)c", "xabcy", "X\\gX", FALSE, "XbX"); +#ifndef USE_SYSTEM_PCRE + /* PCRE >= 8.34 no longer allows this usage. */ TEST_EXPAND("(.)(?P<1>.)", "ab", "\\1", FALSE, "a"); TEST_EXPAND("(.)(?P<1>.)", "ab", "\\g<1>", FALSE, "a"); +#endif TEST_EXPAND(".", EURO, "\\0", FALSE, EURO); TEST_EXPAND("(.)", EURO, "\\1", FALSE, EURO); TEST_EXPAND("(?P.)", EURO, "\\g", FALSE, EURO); diff --git a/glib/tests/rwlock.c b/glib/tests/rwlock.c index 658009d..1ddc3a0 100644 --- a/glib/tests/rwlock.c +++ b/glib/tests/rwlock.c @@ -125,7 +125,7 @@ acquire (gint nr) if (!g_rw_lock_writer_trylock (&locks[nr])) { if (g_test_verbose ()) - g_print ("thread %p going to block on lock %d\n", self, nr); + g_printerr ("thread %p going to block on lock %d\n", self, nr); g_rw_lock_writer_lock (&locks[nr]); } diff --git a/glib/tests/sequence.c b/glib/tests/sequence.c index fcc8385..f01738f 100644 --- a/glib/tests/sequence.c +++ b/glib/tests/sequence.c @@ -133,7 +133,7 @@ check_integrity (SequenceInfo *info) #if 0 if (g_sequence_get_length (info->sequence) != info->n_items) - g_print ("%d %d\n", + g_printerr ("%d %d\n", g_sequence_get_length (info->sequence), info->n_items); #endif g_assert (info->n_items == g_queue_get_length (info->queue)); @@ -402,7 +402,7 @@ dump_info (SequenceInfo *seq) while (iter != g_sequence_get_end_iter (seq->sequence)) { Item *item = get_item (iter); - g_print ("%p %p %d\n", list->data, iter, item->number); + g_printerr ("%p %p %d\n", list->data, iter, item->number); iter = g_sequence_iter_next (iter); list = list->next; @@ -422,7 +422,7 @@ run_random_tests (gconstpointer d) int k; #if 0 - g_print (" seed: %u\n", seed); + g_printerr (" seed: %u\n", seed); #endif g_random_set_seed (seed); @@ -443,7 +443,7 @@ run_random_tests (gconstpointer d) int op = g_random_int_range (0, N_OPS); #if 0 - g_print ("%d on %p\n", op, seq); + g_printerr ("%d on %p\n", op, seq); #endif switch (op) @@ -1356,6 +1356,31 @@ test_stable_sort (void) g_sequence_free (seq); } +static void +test_empty (void) +{ + GSequence *seq; + int i; + + seq = g_sequence_new (NULL); + g_assert_true (g_sequence_is_empty (seq)); + + for (i = 0; i < 1000; i++) + { + g_sequence_append (seq, GINT_TO_POINTER (i)); + g_assert_false (g_sequence_is_empty (seq)); + } + + for (i = 0; i < 1000; i++) + { + GSequenceIter *end = g_sequence_get_end_iter (seq); + g_assert_false (g_sequence_is_empty (seq)); + g_sequence_remove (g_sequence_iter_prev (end)); + } + + g_assert_true (g_sequence_is_empty (seq)); +} + int main (int argc, char **argv) @@ -1371,6 +1396,7 @@ main (int argc, g_test_add_func ("/sequence/iter-move", test_iter_move); g_test_add_func ("/sequence/insert-sorted-non-pointer", test_insert_sorted_non_pointer); g_test_add_func ("/sequence/stable-sort", test_stable_sort); + g_test_add_func ("/sequence/is_empty", test_empty); /* Regression tests */ for (i = 0; i < G_N_ELEMENTS (seeds); ++i) diff --git a/glib/tests/shell.c b/glib/tests/shell.c index a1b92dd..c8b2bcc 100644 --- a/glib/tests/shell.c +++ b/glib/tests/shell.c @@ -93,7 +93,7 @@ do_cmdline_test (gconstpointer d) gboolean res; err = NULL; -g_print ("test cmdline: %s\n", test->cmdline); + g_printerr ("test cmdline: %s\n", test->cmdline); res = g_shell_parse_argv (test->cmdline, &argc, &argv, &err); if (test->error_code == -1) { diff --git a/glib/tests/slice.c b/glib/tests/slice.c index 4777224..b0ad3da 100644 --- a/glib/tests/slice.c +++ b/glib/tests/slice.c @@ -4,18 +4,6 @@ /* We test deprecated functionality here */ G_GNUC_BEGIN_IGNORE_DEPRECATIONS -static void -test_slice_config (void) -{ - if (g_test_subprocess ()) - { - g_slice_set_config (G_SLICE_CONFIG_ALWAYS_MALLOC, TRUE); - return; - } - g_test_trap_subprocess (NULL, 1000000, 0); - g_test_trap_assert_failed (); -} - #ifdef G_ENABLE_DEBUG static void test_slice_nodebug (void) @@ -165,17 +153,8 @@ test_allocate (void) int main (int argc, char **argv) { - /* have to do this before using gtester since it uses gslice */ - gboolean was; - - was = g_slice_get_config (G_SLICE_CONFIG_ALWAYS_MALLOC); - g_slice_set_config (G_SLICE_CONFIG_ALWAYS_MALLOC, !was); - g_assert_cmpint (g_slice_get_config (G_SLICE_CONFIG_ALWAYS_MALLOC), !=, was); - g_slice_set_config (G_SLICE_CONFIG_ALWAYS_MALLOC, was); - g_test_init (&argc, &argv, NULL); - g_test_add_func ("/slice/config", test_slice_config); #ifdef G_ENABLE_DEBUG g_test_add_func ("/slice/nodebug", test_slice_nodebug); g_test_add_func ("/slice/debug", test_slice_debug); diff --git a/glib/tests/strfuncs.c b/glib/tests/strfuncs.c index 27dfb45..cbf5be7 100644 --- a/glib/tests/strfuncs.c +++ b/glib/tests/strfuncs.c @@ -1262,8 +1262,7 @@ test_bounds (void) tmp = g_strjoinv (".", array); g_strfreev (array); - g_assert_cmpint (strlen (tmp), ==, 4095); - g_assert (memcmp (tmp, string, 4095) == 0); + g_assert_cmpmem (tmp, strlen (tmp), string, 4095); g_free (tmp); tmp = g_strconcat (string, string, string, NULL); @@ -1318,15 +1317,28 @@ test_strip_context (void) static void test_strerror (void) { + GHashTable *strs; gint i; const gchar *str; + GHashTableIter iter; + + setlocale (LC_ALL, "C"); - for (i = 1; i < 100; i++) + strs = g_hash_table_new (g_str_hash, g_str_equal); + for (i = 1; i < 200; i++) { str = g_strerror (i); g_assert (str != NULL); g_assert (g_utf8_validate (str, -1, NULL)); + g_assert_false (g_hash_table_contains (strs, str)); + g_hash_table_add (strs, (char *)str); } + + g_hash_table_iter_init (&iter, strs); + while (g_hash_table_iter_next (&iter, (gpointer *)&str, NULL)) + g_assert (g_utf8_validate (str, -1, NULL)); + + g_hash_table_unref (strs); } static void diff --git a/glib/tests/string.c b/glib/tests/string.c index ba55d3d..017fdff 100644 --- a/glib/tests/string.c +++ b/glib/tests/string.c @@ -423,13 +423,11 @@ test_string_nul_handling (void) g_assert (!g_string_equal (string1, string2)); g_assert (string1->len == 8); g_string_append (string1, "yzzy"); - g_assert (string1->len == 12); - g_assert (memcmp (string1->str, "fiddle\0xyzzy", 13) == 0); + g_assert_cmpmem (string1->str, string1->len + 1, "fiddle\0xyzzy", 13); g_string_insert (string1, 1, "QED"); - g_assert (memcmp (string1->str, "fQEDiddle\0xyzzy", 16) == 0); + g_assert_cmpmem (string1->str, string1->len + 1, "fQEDiddle\0xyzzy", 16); g_string_printf (string1, "fiddle%cxyzzy", '\0'); - g_assert (string1->len == 12); - g_assert (memcmp (string1->str, "fiddle\0xyzzy", 13) == 0); + g_assert_cmpmem (string1->str, string1->len + 1, "fiddle\0xyzzy", 13); g_string_free (string1, TRUE); g_string_free (string2, TRUE); @@ -490,7 +488,7 @@ test_string_to_bytes (void) g_assert_cmpint (byte_len, ==, 7); - g_assert_cmpint (memcmp (byte_data, "foo-bar", byte_len), ==, 0); + g_assert_cmpmem (byte_data, byte_len, "foo-bar", 7); g_bytes_unref (bytes); } diff --git a/glib/tests/testing.c b/glib/tests/testing.c index 85acb4a..3913506 100644 --- a/glib/tests/testing.c +++ b/glib/tests/testing.c @@ -47,6 +47,20 @@ test_assertions_bad_cmpint (void) } static void +test_assertions_bad_cmpmem_len (void) +{ + g_assert_cmpmem ("foo", 3, "foot", 4); + exit (0); +} + +static void +test_assertions_bad_cmpmem_data (void) +{ + g_assert_cmpmem ("foo", 3, "fzz", 3); + exit (0); +} + +static void test_assertions (void) { gchar *fuu; @@ -66,6 +80,7 @@ test_assertions (void) g_assert_cmpstr ("foo", <, "fzz"); g_assert_cmpstr ("fzz", >, "faa"); g_assert_cmpstr ("fzz", ==, "fzz"); + g_assert_cmpmem ("foo", 3, "foot", 3); g_test_trap_subprocess ("/misc/assertions/subprocess/bad_cmpstr", 0, 0); g_test_trap_assert_failed (); @@ -74,6 +89,15 @@ test_assertions (void) g_test_trap_subprocess ("/misc/assertions/subprocess/bad_cmpint", 0, 0); g_test_trap_assert_failed (); g_test_trap_assert_stderr ("*assertion failed*"); + + g_test_trap_subprocess ("/misc/assertions/subprocess/bad_cmpmem_len", 0, 0); + g_test_trap_assert_failed (); + g_test_trap_assert_stderr ("*assertion failed*len*"); + + g_test_trap_subprocess ("/misc/assertions/subprocess/bad_cmpmem_data", 0, 0); + g_test_trap_assert_failed (); + g_test_trap_assert_stderr ("*assertion failed*"); + g_test_trap_assert_stderr_unmatched ("*assertion failed*len*"); } /* test g_test_timer* API */ @@ -714,6 +738,8 @@ main (int argc, g_test_add_func ("/misc/assertions", test_assertions); g_test_add_func ("/misc/assertions/subprocess/bad_cmpstr", test_assertions_bad_cmpstr); g_test_add_func ("/misc/assertions/subprocess/bad_cmpint", test_assertions_bad_cmpint); + g_test_add_func ("/misc/assertions/subprocess/bad_cmpmem_len", test_assertions_bad_cmpmem_len); + g_test_add_func ("/misc/assertions/subprocess/bad_cmpmem_data", test_assertions_bad_cmpmem_data); g_test_add_data_func ("/misc/test-data", (void*) 0xc0c0baba, test_data_test); g_test_add ("/misc/primetoul", Fixturetest, (void*) 0xc0cac01a, fixturetest_setup, fixturetest_test, fixturetest_teardown); if (g_test_perf()) diff --git a/glib/tests/unicode.c b/glib/tests/unicode.c index 533ec1f..fee5aa4 100644 --- a/glib/tests/unicode.c +++ b/glib/tests/unicode.c @@ -276,11 +276,17 @@ test_unichar_script (void) { G_UNICODE_SCRIPT_SIDDHAM, 0x11580 }, { G_UNICODE_SCRIPT_TIRHUTA, 0x11480 }, { G_UNICODE_SCRIPT_WARANG_CITI, 0x118A0 }, + { G_UNICODE_SCRIPT_CHEROKEE, 0x0AB71 }, + { G_UNICODE_SCRIPT_HATRAN, 0x108E0 }, + { G_UNICODE_SCRIPT_OLD_HUNGARIAN, 0x10C80 }, + { G_UNICODE_SCRIPT_MULTANI, 0x11280 }, + { G_UNICODE_SCRIPT_AHOM, 0x11700 }, + { G_UNICODE_SCRIPT_CUNEIFORM, 0x12480 }, + { G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS, 0x14400 }, + { G_UNICODE_SCRIPT_SIGNWRITING, 0x1D800 }, }; for (i = 0; i < G_N_ELEMENTS (examples); i++) - { - g_assert_cmpint (g_unichar_get_script (examples[i].c), ==, examples[i].script); - } + g_assert_cmpint (g_unichar_get_script (examples[i].c), ==, examples[i].script); } static void @@ -852,6 +858,14 @@ test_iso15924 (void) { G_UNICODE_SCRIPT_SIDDHAM, "Sidd" }, { G_UNICODE_SCRIPT_TIRHUTA, "Tirh" }, { G_UNICODE_SCRIPT_WARANG_CITI, "Wara" }, + + /* Unicode 8.0 additions */ + { G_UNICODE_SCRIPT_AHOM, "Ahom" }, + { G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS, "Hluw" }, + { G_UNICODE_SCRIPT_HATRAN, "Hatr" }, + { G_UNICODE_SCRIPT_MULTANI, "Mult" }, + { G_UNICODE_SCRIPT_OLD_HUNGARIAN, "Hung" }, + { G_UNICODE_SCRIPT_SIGNWRITING, "Sgnw" }, }; guint i; diff --git a/glib/tests/utf8-performance.c b/glib/tests/utf8-performance.c index 20e5e02..5049b99 100644 --- a/glib/tests/utf8-performance.c +++ b/glib/tests/utf8-performance.c @@ -35,24 +35,33 @@ static const char str_cyrillic[] = /* First sentence from the Wikipedia article: * http://zh.wikipedia.org/w/index.php?title=%E6%B1%89%E5%AD%97&oldid=13053137 */ -static const char str_chinese[] = +static const char str_han[] = "漢字,亦稱中文字、中国字,在台灣又被稱為國字,是漢字文化圈廣泛使用的一種文字,屬於表意文字的詞素音節文字"; typedef int (* GrindFunc) (const char *, gsize); +#define GRIND_LOOP_BEGIN \ + { \ + int i; \ + for (i = 0; i < NUM_ITERATIONS; i++) + +#define GRIND_LOOP_END \ + } + static int grind_get_char (const char *str, gsize len) { gunichar acc = 0; - int i; - for (i = 0; i < NUM_ITERATIONS; i++) + GRIND_LOOP_BEGIN { const char *p = str; - while (*p) { - acc += g_utf8_get_char (p); - p = g_utf8_next_char (p); - } + while (*p) + { + acc += g_utf8_get_char (p); + p = g_utf8_next_char (p); + } } + GRIND_LOOP_END; return acc; } @@ -60,28 +69,29 @@ static int grind_get_char_validated (const char *str, gsize len) { gunichar acc = 0; - int i; - for (i = 0; i < NUM_ITERATIONS; i++) + GRIND_LOOP_BEGIN { const char *p = str; - while (*p) { - acc += g_utf8_get_char_validated (p, -1); - p = g_utf8_next_char (p); - } + while (*p) + { + acc += g_utf8_get_char_validated (p, -1); + p = g_utf8_next_char (p); + } } + GRIND_LOOP_END; return acc; } static int grind_utf8_to_ucs4 (const char *str, gsize len) { - int i; - for (i = 0; i < NUM_ITERATIONS; i++) + GRIND_LOOP_BEGIN { gunichar *ustr; ustr = g_utf8_to_ucs4 (str, -1, NULL, NULL, NULL); g_free (ustr); } + GRIND_LOOP_END; return 0; } @@ -89,8 +99,7 @@ static int grind_get_char_backwards (const char *str, gsize len) { gunichar acc = 0; - int i; - for (i = 0; i < NUM_ITERATIONS; i++) + GRIND_LOOP_BEGIN { const char *p = str + len; do @@ -100,51 +109,78 @@ grind_get_char_backwards (const char *str, gsize len) } while (p != str); } + GRIND_LOOP_END; return acc; } static int grind_utf8_to_ucs4_sized (const char *str, gsize len) { - int i; - for (i = 0; i < NUM_ITERATIONS; i++) + GRIND_LOOP_BEGIN { gunichar *ustr; ustr = g_utf8_to_ucs4 (str, len, NULL, NULL, NULL); g_free (ustr); } + GRIND_LOOP_END; return 0; } static int grind_utf8_to_ucs4_fast (const char *str, gsize len) { - int i; - for (i = 0; i < NUM_ITERATIONS; i++) + GRIND_LOOP_BEGIN { gunichar *ustr; ustr = g_utf8_to_ucs4_fast (str, -1, NULL); g_free (ustr); } + GRIND_LOOP_END; return 0; } static int grind_utf8_to_ucs4_fast_sized (const char *str, gsize len) { - int i; - for (i = 0; i < NUM_ITERATIONS; i++) + GRIND_LOOP_BEGIN { gunichar *ustr; ustr = g_utf8_to_ucs4_fast (str, len, NULL); g_free (ustr); } + GRIND_LOOP_END; + return 0; +} + +static int +grind_utf8_validate (const char *str, gsize len) +{ + GRIND_LOOP_BEGIN + g_utf8_validate (str, -1, NULL); + GRIND_LOOP_END; + return 0; +} + +static int +grind_utf8_validate_sized (const char *str, gsize len) +{ + GRIND_LOOP_BEGIN + g_utf8_validate (str, len, NULL); + GRIND_LOOP_END; return 0; } +typedef struct _GrindData { + GrindFunc func; + const char *str; +} GrindData; + static void -perform_for (GrindFunc grind_func, const char *str, const char *label) +perform (gconstpointer data) { + GrindData *gd = (GrindData *) data; + GrindFunc grind_func = gd->func; + const char *str = gd->str; gsize len; gulong bytes_ground; gdouble time_elapsed; @@ -161,21 +197,32 @@ perform_for (GrindFunc grind_func, const char *str, const char *label) result = ((gdouble) bytes_ground / time_elapsed) * 1.0e-6; - g_test_maximized_result (result, "%-9s %6.1f MB/s", label, result); + g_test_maximized_result (result, "%7.1f MB/s", result); + + g_slice_free (GrindData, gd); } static void -perform (gconstpointer data) +add_cases(const char *path, GrindFunc func) { - GrindFunc grind_func = (GrindFunc) data; - - if (!g_test_perf ()) - return; - - perform_for (grind_func, str_ascii, "ASCII:"); - perform_for (grind_func, str_latin1, "Latin-1:"); - perform_for (grind_func, str_cyrillic, "Cyrillic:"); - perform_for (grind_func, str_chinese, "Chinese:"); +#define ADD_CASE(script) \ + G_STMT_START { \ + GrindData *gd; \ + gchar *full_path; \ + gd = g_slice_new0(GrindData); \ + gd->func = func; \ + gd->str = str_##script; \ + full_path = g_strdup_printf("%s/" #script, path); \ + g_test_add_data_func (full_path, gd, perform); \ + g_free (full_path); \ + } G_STMT_END + + ADD_CASE(ascii); + ADD_CASE(latin1); + ADD_CASE(cyrillic); + ADD_CASE(han); + +#undef ADD_CASE } int @@ -185,13 +232,15 @@ main (int argc, char **argv) if (g_test_perf ()) { - g_test_add_data_func ("/utf8/perf/get_char", grind_get_char, perform); - g_test_add_data_func ("/utf8/perf/get_char-backwards", grind_get_char_backwards, perform); - g_test_add_data_func ("/utf8/perf/get_char_validated", grind_get_char_validated, perform); - g_test_add_data_func ("/utf8/perf/utf8_to_ucs4", grind_utf8_to_ucs4, perform); - g_test_add_data_func ("/utf8/perf/utf8_to_ucs4-sized", grind_utf8_to_ucs4_sized, perform); - g_test_add_data_func ("/utf8/perf/utf8_to_ucs4_fast", grind_utf8_to_ucs4_fast, perform); - g_test_add_data_func ("/utf8/perf/utf8_to_ucs4_fast-sized", grind_utf8_to_ucs4_fast_sized, perform); + add_cases ("/utf8/perf/get_char", grind_get_char); + add_cases ("/utf8/perf/get_char-backwards", grind_get_char_backwards); + add_cases ("/utf8/perf/get_char_validated", grind_get_char_validated); + add_cases ("/utf8/perf/utf8_to_ucs4", grind_utf8_to_ucs4); + add_cases ("/utf8/perf/utf8_to_ucs4-sized", grind_utf8_to_ucs4_sized); + add_cases ("/utf8/perf/utf8_to_ucs4_fast", grind_utf8_to_ucs4_fast); + add_cases ("/utf8/perf/utf8_to_ucs4_fast-sized", grind_utf8_to_ucs4_fast_sized); + add_cases ("/utf8/perf/utf8_validate", grind_utf8_validate); + add_cases ("/utf8/perf/utf8_validate-sized", grind_utf8_validate_sized); } return g_test_run (); diff --git a/glib/tests/utf8-validate.c b/glib/tests/utf8-validate.c index 331d919..8c97b40 100644 --- a/glib/tests/utf8-validate.c +++ b/glib/tests/utf8-validate.c @@ -16,6 +16,7 @@ */ #include "glib.h" +#include #define UNICODE_VALID(Char) \ ((Char) < 0x110000 && \ @@ -84,6 +85,7 @@ Test test[] = { /* continuation bytes */ { "\x80", -1, 0, FALSE }, { "\xbf", -1, 0, FALSE }, + { "\xbf\x80", -1, 0, FALSE }, { "\x80\xbf", -1, 0, FALSE }, { "\x80\xbf\x80", -1, 0, FALSE }, { "\x80\xbf\x80\xbf", -1, 0, FALSE }, @@ -280,6 +282,14 @@ do_test (gconstpointer d) g_assert (result == test->valid); g_assert (end - test->text == test->offset); + + if (test->max_len < 0) + { + result = g_utf8_validate (test->text, strlen (test->text), &end); + + g_assert (result == test->valid); + g_assert (end - test->text == test->offset); + } } int diff --git a/glib/tests/utils.c b/glib/tests/utils.c index 0441cd3..65ca806 100644 --- a/glib/tests/utils.c +++ b/glib/tests/utils.c @@ -95,7 +95,7 @@ static void test_version (void) { if (g_test_verbose ()) - g_print ("(header %d.%d.%d library %d.%d.%d) ", + g_printerr ("(header %d.%d.%d library %d.%d.%d) ", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION, GLIB_MICRO_VERSION, glib_major_version, glib_minor_version, glib_micro_version); diff --git a/glib/update-gtranslit.py b/glib/update-gtranslit.py deleted file mode 100755 index 01f7c7f..0000000 --- a/glib/update-gtranslit.py +++ /dev/null @@ -1,410 +0,0 @@ -#!/usr/bin/env python3 - -# Run this script like so: -# -# ./update-gtranslit.py /path/to/glibc/localedata/locales > gtranslit-data.h - -import sys, os - -localedir = sys.argv[1] - -# returns true if the name looks like a POSIX locale name -def looks_like_locale(name): - name, _, variant = name.partition('@') - - if '_' not in name: - return False - - lang, _, land = name.partition('_') - - return len(lang) == 2 or len(lang) == 3 and len(land) == 2 - -# handles style escapes -def unescape(string): - chunks = [] - - n = len(string) - i = 0 - - while i < n: - start_escape = string.find('<', i) - - if start_escape == -1: - chunks.append(string[i:]) - break - - assert string[start_escape:start_escape + 2] == '', start_escape) - assert end_escape != -1 - - chunks.append(chr(int(string[start_escape:end_escape], 16))) - i = end_escape + 1 - - return ''.join(chunks) - -# Checks if a string is ascii -def is_ascii(string): - return all(ord(c) < 0x80 for c in string) - -# A Mapping is a map from non-ascii strings to ascii strings. -# -# It corresponds to a sequence of one or more mapping lines: -# -# "";"" -# -# in a file. -class Mapping: - def __init__(self): - self.serialised = None - self.mapping = {} - - # Scans a string like - # - # "";"" % LATIN CAPITAL LETTER A WITH DIAERESIS. - # - # and adds the first all-ascii choice (or IGNORE) to the mapping - # dictionary, with the origin string as the key. In the case of - # IGNORE, stores the empty string. - def consider_mapping_line(self, line): - key, value, rest = (line + ' % comment').split(maxsplit=2) - - key = unescape(key) - - for alternative in value.split(';'): - if alternative[0] == '"' and alternative[-1] == '"': - unescaped = unescape(alternative[1:-1]) - if is_ascii(unescaped): - self.mapping[key] = unescaped - break - - elif alternative[0] == '<' and alternative[-1] == '>': - unescaped = unescape(alternative) - if is_ascii(unescaped): - self.mapping[key] = unescaped - break - - elif alternative == 'IGNORE': - self.mapping[key] = '' - break - - # Performs a normal dictionary merge, but ensures that there are no - # conflicting entries between the original dictionary and the requested - # changes - def merge_mapping(self, changes): - for key in changes.mapping: - if key in self.mapping: - assert self.mapping[key] == changes.mapping[key] - - self.mapping.update(changes.mapping) - - # Can't get much flatter... - def get_flattened(self): - return [self] - - def serialise(self, serialiser): - if self.serialised == None: - self.serialised = serialiser.add_mapping(self.mapping) - - return self.serialised - -# A Chain is a sequence of mappings and chains. -# -# A chain contains another chain whenever "copy" or "include" is -# encountered in a source file. -# -# A chain contains a mapping whenever a sequence of mapping lines: -# -# "";"" -# -# is encountered in a file. -# -# The order of lookup is reverse: later entries override earlier ones. -class Chain: - def __init__(self, name): - self.serialised = None - self.name = name - self.chain = [] - self.links = 0 - - self.read_from_file(os.path.join(localedir, name)) - - def read_from_file(self, filename): - current_mapping = None - in_lc_ctype = False - in_translit = False - - fp = open(filename, encoding='ascii', errors='surrogateescape') - - for line in fp: - line = line.strip() - - if in_lc_ctype: - if line == 'END LC_CTYPE': - break - - if line.startswith('copy') or line.startswith('include'): - if current_mapping: - self.chain.append(current_mapping) - - copyname = unescape(line.split('"', 3)[1]) - copyfile = get_chain(copyname) - self.chain.append(copyfile) - copyfile.links += 1 - - current_mapping = None - - elif line == 'translit_start': - in_translit = True - - elif line == 'translit_end': - in_translit = False - - elif in_translit and line.startswith('': - pass - - elif in_translit: - print('unknown line:', line) - assert False - - elif line == 'LC_CTYPE': - in_lc_ctype = True - - if current_mapping: - self.chain.append(current_mapping) - - # If there is only one link to this chain, we may as well just - # return the contents of the chain so that they can be merged into - # our sole parent directly. Otherwise, return ourselves. - def get_flattened(self): - if self.links == 1: - return sum((item.get_flattened() for item in self.chain), []) - else: - return [self] - - def serialise(self, serialiser): - if self.serialised == None: - # Before we serialise, see if we can optimise a bit - self.chain = sum((item.get_flattened() for item in self.chain), []) - - i = 0 - while i < len(self.chain) - 1: - if isinstance(self.chain[i], Mapping) and isinstance(self.chain[i + 1], Mapping): - # We have two mappings in a row. Try to merge them. - self.chain[i].merge_mapping(self.chain[i + 1]) - del self.chain[i + 1] - else: - i += 1 - - # If all that is left is one item, just serialise that directly - if len(self.chain) == 1: - self.serialised = self.chain[0].serialise(serialiser) - else: - ids = [item.serialise(serialiser) for item in self.chain] - self.serialised = serialiser.add_chain(ids) - - return self.serialised - -# Chain cache -- allows sharing of common chains -chains = {} -def get_chain(name): - if not name in chains: - chains[name] = Chain(name) - - return chains[name] - - -# Remove the country name from a locale, preserving variant -# eg: 'sr_RS@latin' -> 'sr@latin' -def remove_country(string): - base, at, variant = string.partition('@') - lang, _, land = base.partition('_') - return lang + at + variant - -def encode_range(start, end): - assert start <= end - length = end - start - - assert start < 0x1000 - assert length < 0x8 - - result = 0x8000 + (length << 12) + start - - assert result < 0x10000 - - return result - -def c_pair_array(array): - return '{ ' + ', '.join ('{ %u, %u }' % pair for pair in array) + ' };' - -class Serialiser: - def __init__(self): - self.mappings = [] - self.chains = [] - self.locales = {} - - def add_mapping(self, mapping): - if mapping in self.mappings: - mapping_id = self.mappings.index(mapping) - else: - mapping_id = len(self.mappings) - self.mappings.append(mapping) - - assert mapping_id < 128 - return mapping_id - - def add_chain(self, chain): - if chain in self.chains: - chain_id = self.chains.index(chain) - else: - chain_id = len(self.chains) - self.chains.append(chain) - - assert chain_id < 128 - return 128 + chain_id - - def add_locale(self, name, item_id): - self.locales[name] = item_id - - def add_default(self, item_id): - self.default = item_id - - def optimise_locales(self): - # Check if all regions of a language/variant agree - languages = list(set(remove_country(locale) for locale in self.locales)) - - for language in languages: - locales = [locale for locale in self.locales if remove_country(locale) == language] - - item_id = self.locales[locales[0]] - if all(self.locales[locale] == item_id for locale in locales): - self.locales[language] = item_id - for locale in locales: - del self.locales[locale] - - # Check if a variant is the same as the non-variant form - # eg: 'de@euro' and 'de' - for variant in list(locale for locale in self.locales if '@' in locale): - base, _, _ = variant.partition('@') - if base in self.locales and self.locales[base] == self.locales[variant]: - del self.locales[variant] - - # Eliminate any entries that are just the same as the C locale - for locale in list(self.locales): - if self.locales[locale] == self.default: - del self.locales[locale] - - def to_c(self): - src_table = '' - ascii_table = '' - mappings_table = [] - mapping_ranges = [] - chains_table = [] - chain_starts = [] - locale_names = '' - locale_index = [] - max_lookup = 0 - max_localename = 0 - - for mapping in self.mappings: - mapping_ranges.append ((len(mappings_table), len(mapping))) - - for key in sorted(mapping): - if len(key) == 1 and ord(key[0]) < 0x8000: - src_range = ord(key[0]) - else: - existing = src_table.find(key) - if existing == -1: - start = len(src_table) - assert all(ord(c) <= 0x10ffff for c in key) - src_table += key - src_range = encode_range(start, len(src_table)) - max_lookup = max(max_lookup, len(key)) - else: - src_range = encode_range(existing, existing + len(key)) - - value = mapping[key] - if len(value) == 1 and ord(value[0]) < 0x80: - ascii_range = ord(value[0]) - else: - existing = ascii_table.find(value) - if existing == -1: - start = len(ascii_table) - assert all(ord(c) < 0x80 for c in value) - ascii_table += value - ascii_range = encode_range(start, len(ascii_table)) - else: - ascii_range = encode_range(existing, existing + len(value)) - - mappings_table.append ((src_range, ascii_range)) - - mapping_end = len(mappings_table) - - for chain in self.chains: - chain_starts.append(len(chains_table)) - - for item_id in reversed(chain): - assert item_id < 0xff - chains_table.append(item_id) - chains_table.append(0xff) - - for locale in sorted(self.locales): - max_localename = max(max_localename, len(locale)) - name_offset = len(locale_names) - assert all(ord(c) <= 0x7f for c in locale) - locale_names += (locale + '\0') - - item_id = self.locales[locale] - - assert name_offset < 256 - assert item_id < 256 - locale_index.append((name_offset, item_id)) - - print('/* Generated by update-gtranslit.py */') - print('#define MAX_KEY_SIZE', max_lookup) - print('#define MAX_LOCALE_NAME', max_localename) - print('static const gunichar src_table[] = {', ', '.join(str(ord(c)) for c in src_table), '};') - # cannot do this in plain ascii because of trigraphs... :( - print('static const gchar ascii_table[] = {', ', '.join(str(ord(c)) for c in ascii_table), '};') - print('static const struct mapping_entry mappings_table[] =', c_pair_array (mappings_table)) - print('static const struct mapping_range mapping_ranges[] =', c_pair_array (mapping_ranges)) - print('static const guint8 chains_table[] = {', ', '.join(str(i) for i in chains_table), '};') - print('static const guint8 chain_starts[] = {', ', '.join(str(i) for i in chain_starts), '};') - print('static const gchar locale_names[] = "' + locale_names.replace('\0', '\\0') + '";') - print('static const struct locale_entry locale_index[] = ', c_pair_array (locale_index)) - print('static const guint8 default_item_id = %u;' % (self.default,)) - - def dump(self): - print(self.mappings) - print(self.chains) - print(self.locales) - -locales = [] -for name in os.listdir(localedir): - if looks_like_locale(name): - chain = get_chain(name) - locales.append (chain) - chain.links += 1 - -serialiser = Serialiser() - -for locale in locales: - serialiser.add_locale(locale.name, locale.serialise(serialiser)) - -i18n = get_chain('i18n').serialise(serialiser) -combining = get_chain('translit_combining').serialise(serialiser) -serialiser.add_default(serialiser.add_chain([i18n, combining])) - -serialiser.optimise_locales() - -serialiser.to_c() diff --git a/glib/update-pcre/Makefile.in b/glib/update-pcre/Makefile.in new file mode 100644 index 0000000..87b5c2f --- /dev/null +++ b/glib/update-pcre/Makefile.in @@ -0,0 +1,1354 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +subdir = glib/update-pcre +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES) +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/glib.mk \ + $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = +BUILT_EXTRA_DIST = +CLEANFILES = *.log *.trs $(am__append_14) +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) update.sh \ + digitab.patch memory.patch + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .log .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glib/update-pcre/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu glib/update-pcre/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-strip + +.PHONY: all all-am check check-TESTS check-am check-local clean \ + clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \ + uninstall uninstall-am uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/glib/update-pcre/ucp.patch b/glib/update-pcre/ucp.patch deleted file mode 100644 index 402020f..0000000 --- a/glib/update-pcre/ucp.patch +++ /dev/null @@ -1,834 +0,0 @@ -From 23d48c5fc7aa889dc7798f9c64acd43d9cb34683 Mon Sep 17 00:00:00 2001 -From: Christian Persch -Date: Sun, 12 Feb 2012 21:20:33 +0100 -Subject: [PATCH] regex: Use glib for unicode data - -Use g_unichar_type() and g_unichar_get_script() instead of pcre tables. ---- - glib/pcre/pcre_compile.c | 26 +++--- - glib/pcre/pcre_dfa_exec.c | 96 ++++++++-------- - glib/pcre/pcre_exec.c | 26 +++--- - glib/pcre/pcre_internal.h | 11 +-- - glib/pcre/pcre_tables.c | 16 +++ - glib/pcre/pcre_xclass.c | 24 ++-- - glib/pcre/ucp.h | 265 +++++++++++++++++++++++---------------------- - 7 files changed, 239 insertions(+), 225 deletions(-) - -diff --git a/glib/pcre/pcre_compile.c b/glib/pcre/pcre_compile.c -index 21bef80..a6c84e1 100644 ---- a/glib/pcre/pcre_compile.c -+++ b/glib/pcre/pcre_compile.c -@@ -2920,43 +2920,43 @@ Returns: TRUE if auto-possessifying is OK - static BOOL - check_char_prop(int c, int ptype, int pdata, BOOL negated) - { --const ucd_record *prop = GET_UCD(c); -+const pcre_uint8 chartype = UCD_CHARTYPE(c); - switch(ptype) - { - case PT_LAMP: -- return (prop->chartype == ucp_Lu || -- prop->chartype == ucp_Ll || -- prop->chartype == ucp_Lt) == negated; -+ return (chartype == ucp_Lu || -+ chartype == ucp_Ll || -+ chartype == ucp_Lt) == negated; - - case PT_GC: -- return (pdata == PRIV(ucp_gentype)[prop->chartype]) == negated; -+ return (pdata == PRIV(ucp_gentype)[chartype]) == negated; - - case PT_PC: -- return (pdata == prop->chartype) == negated; -+ return (pdata == chartype) == negated; - - case PT_SC: -- return (pdata == prop->script) == negated; -+ return (pdata == UCD_SCRIPT(c)) == negated; - - /* These are specials */ - - case PT_ALNUM: -- return (PRIV(ucp_gentype)[prop->chartype] == ucp_L || -- PRIV(ucp_gentype)[prop->chartype] == ucp_N) == negated; -+ return (PRIV(ucp_gentype)[chartype] == ucp_L || -+ PRIV(ucp_gentype)[chartype] == ucp_N) == negated; - - case PT_SPACE: /* Perl space */ -- return (PRIV(ucp_gentype)[prop->chartype] == ucp_Z || -+ return (PRIV(ucp_gentype)[chartype] == ucp_Z || - c == CHAR_HT || c == CHAR_NL || c == CHAR_FF || c == CHAR_CR) - == negated; - - case PT_PXSPACE: /* POSIX space */ -- return (PRIV(ucp_gentype)[prop->chartype] == ucp_Z || -+ return (PRIV(ucp_gentype)[chartype] == ucp_Z || - c == CHAR_HT || c == CHAR_NL || c == CHAR_VT || - c == CHAR_FF || c == CHAR_CR) - == negated; - - case PT_WORD: -- return (PRIV(ucp_gentype)[prop->chartype] == ucp_L || -- PRIV(ucp_gentype)[prop->chartype] == ucp_N || -+ return (PRIV(ucp_gentype)[chartype] == ucp_L || -+ PRIV(ucp_gentype)[chartype] == ucp_N || - c == CHAR_UNDERSCORE) == negated; - } - return FALSE; -diff --git a/glib/pcre/pcre_dfa_exec.c b/glib/pcre/pcre_dfa_exec.c -index 9565d46..3f913ce 100644 ---- a/glib/pcre/pcre_dfa_exec.c -+++ b/glib/pcre/pcre_dfa_exec.c -@@ -1060,7 +1060,7 @@ for (;;) - if (clen > 0) - { - BOOL OK; -- const ucd_record * prop = GET_UCD(c); -+ const pcre_uint8 chartype = UCD_CHARTYPE(c); - switch(code[1]) - { - case PT_ANY: -@@ -1068,43 +1068,43 @@ for (;;) - break; - - case PT_LAMP: -- OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || -- prop->chartype == ucp_Lt; -+ OK = chartype == ucp_Lu || chartype == ucp_Ll || -+ chartype == ucp_Lt; - break; - - case PT_GC: -- OK = PRIV(ucp_gentype)[prop->chartype] == code[2]; -+ OK = PRIV(ucp_gentype)[chartype] == code[2]; - break; - - case PT_PC: -- OK = prop->chartype == code[2]; -+ OK = chartype == code[2]; - break; - - case PT_SC: -- OK = prop->script == code[2]; -+ OK = UCD_SCRIPT(c) == code[2]; - break; - - /* These are specials for combination cases. */ - - case PT_ALNUM: -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || -- PRIV(ucp_gentype)[prop->chartype] == ucp_N; -+ OK = PRIV(ucp_gentype)[chartype] == ucp_L || -+ PRIV(ucp_gentype)[chartype] == ucp_N; - break; - - case PT_SPACE: /* Perl space */ -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_Z || -+ OK = PRIV(ucp_gentype)[chartype] == ucp_Z || - c == CHAR_HT || c == CHAR_NL || c == CHAR_FF || c == CHAR_CR; - break; - - case PT_PXSPACE: /* POSIX space */ -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_Z || -+ OK = PRIV(ucp_gentype)[chartype] == ucp_Z || - c == CHAR_HT || c == CHAR_NL || c == CHAR_VT || - c == CHAR_FF || c == CHAR_CR; - break; - - case PT_WORD: -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || -- PRIV(ucp_gentype)[prop->chartype] == ucp_N || -+ OK = PRIV(ucp_gentype)[chartype] == ucp_L || -+ PRIV(ucp_gentype)[chartype] == ucp_N || - c == CHAR_UNDERSCORE; - break; - -@@ -1294,7 +1294,7 @@ for (;;) - if (clen > 0) - { - BOOL OK; -- const ucd_record * prop = GET_UCD(c); -+ const pcre_uint8 chartype = UCD_CHARTYPE(c); - switch(code[2]) - { - case PT_ANY: -@@ -1302,43 +1302,43 @@ for (;;) - break; - - case PT_LAMP: -- OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || -- prop->chartype == ucp_Lt; -+ OK = chartype == ucp_Lu || chartype == ucp_Ll || -+ chartype == ucp_Lt; - break; - - case PT_GC: -- OK = PRIV(ucp_gentype)[prop->chartype] == code[3]; -+ OK = PRIV(ucp_gentype)[chartype] == code[3]; - break; - - case PT_PC: -- OK = prop->chartype == code[3]; -+ OK = chartype == code[3]; - break; - - case PT_SC: -- OK = prop->script == code[3]; -+ OK = UCD_SCRIPT(c) == code[3]; - break; - - /* These are specials for combination cases. */ - - case PT_ALNUM: -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || -- PRIV(ucp_gentype)[prop->chartype] == ucp_N; -+ OK = PRIV(ucp_gentype)[chartype] == ucp_L || -+ PRIV(ucp_gentype)[chartype] == ucp_N; - break; - - case PT_SPACE: /* Perl space */ -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_Z || -+ OK = PRIV(ucp_gentype)[chartype] == ucp_Z || - c == CHAR_HT || c == CHAR_NL || c == CHAR_FF || c == CHAR_CR; - break; - - case PT_PXSPACE: /* POSIX space */ -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_Z || -+ OK = PRIV(ucp_gentype)[chartype] == ucp_Z || - c == CHAR_HT || c == CHAR_NL || c == CHAR_VT || - c == CHAR_FF || c == CHAR_CR; - break; - - case PT_WORD: -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || -- PRIV(ucp_gentype)[prop->chartype] == ucp_N || -+ OK = PRIV(ucp_gentype)[chartype] == ucp_L || -+ PRIV(ucp_gentype)[chartype] == ucp_N || - c == CHAR_UNDERSCORE; - break; - -@@ -1541,7 +1541,7 @@ for (;;) - if (clen > 0) - { - BOOL OK; -- const ucd_record * prop = GET_UCD(c); -+ const pcre_uint8 chartype = UCD_CHARTYPE(c); - switch(code[2]) - { - case PT_ANY: -@@ -1549,43 +1549,43 @@ for (;;) - break; - - case PT_LAMP: -- OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || -- prop->chartype == ucp_Lt; -+ OK = chartype == ucp_Lu || chartype == ucp_Ll || -+ chartype == ucp_Lt; - break; - - case PT_GC: -- OK = PRIV(ucp_gentype)[prop->chartype] == code[3]; -+ OK = PRIV(ucp_gentype)[chartype] == code[3]; - break; - - case PT_PC: -- OK = prop->chartype == code[3]; -+ OK = chartype == code[3]; - break; - - case PT_SC: -- OK = prop->script == code[3]; -+ OK = UCD_SCRIPT(c) == code[3]; - break; - - /* These are specials for combination cases. */ - - case PT_ALNUM: -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || -- PRIV(ucp_gentype)[prop->chartype] == ucp_N; -+ OK = PRIV(ucp_gentype)[chartype] == ucp_L || -+ PRIV(ucp_gentype)[chartype] == ucp_N; - break; - - case PT_SPACE: /* Perl space */ -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_Z || -+ OK = PRIV(ucp_gentype)[chartype] == ucp_Z || - c == CHAR_HT || c == CHAR_NL || c == CHAR_FF || c == CHAR_CR; - break; - - case PT_PXSPACE: /* POSIX space */ -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_Z || -+ OK = PRIV(ucp_gentype)[chartype] == ucp_Z || - c == CHAR_HT || c == CHAR_NL || c == CHAR_VT || - c == CHAR_FF || c == CHAR_CR; - break; - - case PT_WORD: -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || -- PRIV(ucp_gentype)[prop->chartype] == ucp_N || -+ OK = PRIV(ucp_gentype)[chartype] == ucp_L || -+ PRIV(ucp_gentype)[chartype] == ucp_N || - c == CHAR_UNDERSCORE; - break; - -@@ -1813,7 +1813,7 @@ for (;;) - if (clen > 0) - { - BOOL OK; -- const ucd_record * prop = GET_UCD(c); -+ const pcre_uint8 chartype = UCD_CHARTYPE(c); - switch(code[1 + IMM2_SIZE + 1]) - { - case PT_ANY: -@@ -1821,43 +1821,43 @@ for (;;) - break; - - case PT_LAMP: -- OK = prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || -- prop->chartype == ucp_Lt; -+ OK = chartype == ucp_Lu || chartype == ucp_Ll || -+ chartype == ucp_Lt; - break; - - case PT_GC: -- OK = PRIV(ucp_gentype)[prop->chartype] == code[1 + IMM2_SIZE + 2]; -+ OK = PRIV(ucp_gentype)[chartype] == code[1 + IMM2_SIZE + 2]; - break; - - case PT_PC: -- OK = prop->chartype == code[1 + IMM2_SIZE + 2]; -+ OK = chartype == code[1 + IMM2_SIZE + 2]; - break; - - case PT_SC: -- OK = prop->script == code[1 + IMM2_SIZE + 2]; -+ OK = UCD_SCRIPT(c) == code[1 + IMM2_SIZE + 2]; - break; - - /* These are specials for combination cases. */ - - case PT_ALNUM: -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || -- PRIV(ucp_gentype)[prop->chartype] == ucp_N; -+ OK = PRIV(ucp_gentype)[chartype] == ucp_L || -+ PRIV(ucp_gentype)[chartype] == ucp_N; - break; - - case PT_SPACE: /* Perl space */ -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_Z || -+ OK = PRIV(ucp_gentype)[chartype] == ucp_Z || - c == CHAR_HT || c == CHAR_NL || c == CHAR_FF || c == CHAR_CR; - break; - - case PT_PXSPACE: /* POSIX space */ -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_Z || -+ OK = PRIV(ucp_gentype)[chartype] == ucp_Z || - c == CHAR_HT || c == CHAR_NL || c == CHAR_VT || - c == CHAR_FF || c == CHAR_CR; - break; - - case PT_WORD: -- OK = PRIV(ucp_gentype)[prop->chartype] == ucp_L || -- PRIV(ucp_gentype)[prop->chartype] == ucp_N || -+ OK = PRIV(ucp_gentype)[chartype] == ucp_L || -+ PRIV(ucp_gentype)[chartype] == ucp_N || - c == CHAR_UNDERSCORE; - break; - -diff --git a/glib/pcre/pcre_exec.c b/glib/pcre/pcre_exec.c -index 830b8b5..c89a3f9 100644 ---- a/glib/pcre/pcre_exec.c -+++ b/glib/pcre/pcre_exec.c -@@ -2565,7 +2565,7 @@ for (;;) - } - GETCHARINCTEST(c, eptr); - { -- const ucd_record *prop = GET_UCD(c); -+ const pcre_uint8 chartype = UCD_CHARTYPE(c); - - switch(ecode[1]) - { -@@ -2574,44 +2574,44 @@ for (;;) - break; - - case PT_LAMP: -- if ((prop->chartype == ucp_Lu || -- prop->chartype == ucp_Ll || -- prop->chartype == ucp_Lt) == (op == OP_NOTPROP)) -+ if ((chartype == ucp_Lu || -+ chartype == ucp_Ll || -+ chartype == ucp_Lt) == (op == OP_NOTPROP)) - RRETURN(MATCH_NOMATCH); - break; - - case PT_GC: -- if ((ecode[2] != PRIV(ucp_gentype)[prop->chartype]) == (op == OP_PROP)) -+ if ((ecode[2] != PRIV(ucp_gentype)[chartype]) == (op == OP_PROP)) - RRETURN(MATCH_NOMATCH); - break; - - case PT_PC: -- if ((ecode[2] != prop->chartype) == (op == OP_PROP)) -+ if ((ecode[2] != chartype) == (op == OP_PROP)) - RRETURN(MATCH_NOMATCH); - break; - - case PT_SC: -- if ((ecode[2] != prop->script) == (op == OP_PROP)) -+ if ((ecode[2] != UCD_SCRIPT(c)) == (op == OP_PROP)) - RRETURN(MATCH_NOMATCH); - break; - - /* These are specials */ - - case PT_ALNUM: -- if ((PRIV(ucp_gentype)[prop->chartype] == ucp_L || -- PRIV(ucp_gentype)[prop->chartype] == ucp_N) == (op == OP_NOTPROP)) -+ if ((PRIV(ucp_gentype)[chartype] == ucp_L || -+ PRIV(ucp_gentype)[chartype] == ucp_N) == (op == OP_NOTPROP)) - RRETURN(MATCH_NOMATCH); - break; - - case PT_SPACE: /* Perl space */ -- if ((PRIV(ucp_gentype)[prop->chartype] == ucp_Z || -+ if ((PRIV(ucp_gentype)[chartype] == ucp_Z || - c == CHAR_HT || c == CHAR_NL || c == CHAR_FF || c == CHAR_CR) - == (op == OP_NOTPROP)) - RRETURN(MATCH_NOMATCH); - break; - - case PT_PXSPACE: /* POSIX space */ -- if ((PRIV(ucp_gentype)[prop->chartype] == ucp_Z || -+ if ((PRIV(ucp_gentype)[chartype] == ucp_Z || - c == CHAR_HT || c == CHAR_NL || c == CHAR_VT || - c == CHAR_FF || c == CHAR_CR) - == (op == OP_NOTPROP)) -@@ -2619,8 +2619,8 @@ for (;;) - break; - - case PT_WORD: -- if ((PRIV(ucp_gentype)[prop->chartype] == ucp_L || -- PRIV(ucp_gentype)[prop->chartype] == ucp_N || -+ if ((PRIV(ucp_gentype)[chartype] == ucp_L || -+ PRIV(ucp_gentype)[chartype] == ucp_N || - c == CHAR_UNDERSCORE) == (op == OP_NOTPROP)) - RRETURN(MATCH_NOMATCH); - break; -diff --git a/glib/pcre/pcre_internal.h b/glib/pcre/pcre_internal.h -index 181c312..234af1b 100644 ---- a/glib/pcre/pcre_internal.h -+++ b/glib/pcre/pcre_internal.h -@@ -2329,15 +2329,12 @@ extern const int PRIV(ucp_typerange)[]; - #ifdef SUPPORT_UCP - /* UCD access macros */ - --#define UCD_BLOCK_SIZE 128 --#define GET_UCD(ch) (PRIV(ucd_records) + \ -- PRIV(ucd_stage2)[PRIV(ucd_stage1)[(ch) / UCD_BLOCK_SIZE] * \ -- UCD_BLOCK_SIZE + (ch) % UCD_BLOCK_SIZE]) -+unsigned int _pcre_ucp_othercase(const unsigned int c); - --#define UCD_CHARTYPE(ch) GET_UCD(ch)->chartype --#define UCD_SCRIPT(ch) GET_UCD(ch)->script -+#define UCD_CHARTYPE(ch) (pcre_uint8)g_unichar_type((gunichar)(ch)) -+#define UCD_SCRIPT(ch) (pcre_uint8)g_unichar_get_script((gunichar)(ch)) - #define UCD_CATEGORY(ch) PRIV(ucp_gentype)[UCD_CHARTYPE(ch)] --#define UCD_OTHERCASE(ch) (ch + GET_UCD(ch)->other_case) -+#define UCD_OTHERCASE(ch) (_pcre_ucp_othercase(ch)) - - #endif /* SUPPORT_UCP */ - -diff --git a/glib/pcre/pcre_tables.c b/glib/pcre/pcre_tables.c -index 7ac2d89..e401974 100644 ---- a/glib/pcre/pcre_tables.c -+++ b/glib/pcre/pcre_tables.c -@@ -584,6 +584,22 @@ const ucp_type_table PRIV(utt)[] = { - - const int PRIV(utt_size) = sizeof(PRIV(utt)) / sizeof(ucp_type_table); - -+unsigned int -+_pcre_ucp_othercase(const unsigned int c) -+{ -+ int other_case = NOTACHAR; -+ -+ if (g_unichar_islower(c)) -+ other_case = g_unichar_toupper(c); -+ else if (g_unichar_isupper(c)) -+ other_case = g_unichar_tolower(c); -+ -+ if (other_case == c) -+ other_case = NOTACHAR; -+ -+ return other_case; -+} -+ - #endif /* SUPPORT_UTF */ - - /* End of pcre_tables.c */ -diff --git a/glib/pcre/pcre_xclass.c b/glib/pcre/pcre_xclass.c -index dca7a39..e5a55d7 100644 ---- a/glib/pcre/pcre_xclass.c -+++ b/glib/pcre/pcre_xclass.c -@@ -127,7 +127,7 @@ while ((t = *data++) != XCL_END) - #ifdef SUPPORT_UCP - else /* XCL_PROP & XCL_NOTPROP */ - { -- const ucd_record *prop = GET_UCD(c); -+ const pcre_uint8 chartype = UCD_CHARTYPE(c); - - switch(*data) - { -@@ -136,46 +136,46 @@ while ((t = *data++) != XCL_END) - break; - - case PT_LAMP: -- if ((prop->chartype == ucp_Lu || prop->chartype == ucp_Ll || -- prop->chartype == ucp_Lt) == (t == XCL_PROP)) return !negated; -+ if ((chartype == ucp_Lu || chartype == ucp_Ll || -+ chartype == ucp_Lt) == (t == XCL_PROP)) return !negated; - break; - - case PT_GC: -- if ((data[1] == PRIV(ucp_gentype)[prop->chartype]) == (t == XCL_PROP)) -+ if ((data[1] == PRIV(ucp_gentype)[chartype]) == (t == XCL_PROP)) - return !negated; - break; - - case PT_PC: -- if ((data[1] == prop->chartype) == (t == XCL_PROP)) return !negated; -+ if ((data[1] == chartype) == (t == XCL_PROP)) return !negated; - break; - - case PT_SC: -- if ((data[1] == prop->script) == (t == XCL_PROP)) return !negated; -+ if ((data[1] == UCD_SCRIPT(c)) == (t == XCL_PROP)) return !negated; - break; - - case PT_ALNUM: -- if ((PRIV(ucp_gentype)[prop->chartype] == ucp_L || -- PRIV(ucp_gentype)[prop->chartype] == ucp_N) == (t == XCL_PROP)) -+ if ((PRIV(ucp_gentype)[chartype] == ucp_L || -+ PRIV(ucp_gentype)[chartype] == ucp_N) == (t == XCL_PROP)) - return !negated; - break; - - case PT_SPACE: /* Perl space */ -- if ((PRIV(ucp_gentype)[prop->chartype] == ucp_Z || -+ if ((PRIV(ucp_gentype)[chartype] == ucp_Z || - c == CHAR_HT || c == CHAR_NL || c == CHAR_FF || c == CHAR_CR) - == (t == XCL_PROP)) - return !negated; - break; - - case PT_PXSPACE: /* POSIX space */ -- if ((PRIV(ucp_gentype)[prop->chartype] == ucp_Z || -+ if ((PRIV(ucp_gentype)[chartype] == ucp_Z || - c == CHAR_HT || c == CHAR_NL || c == CHAR_VT || - c == CHAR_FF || c == CHAR_CR) == (t == XCL_PROP)) - return !negated; - break; - - case PT_WORD: -- if ((PRIV(ucp_gentype)[prop->chartype] == ucp_L || -- PRIV(ucp_gentype)[prop->chartype] == ucp_N || c == CHAR_UNDERSCORE) -+ if ((PRIV(ucp_gentype)[chartype] == ucp_L || -+ PRIV(ucp_gentype)[chartype] == ucp_N || c == CHAR_UNDERSCORE) - == (t == XCL_PROP)) - return !negated; - break; -diff --git a/glib/pcre/ucp.h b/glib/pcre/ucp.h -index 59c3bec..53a48c9 100644 ---- a/glib/pcre/ucp.h -+++ b/glib/pcre/ucp.h -@@ -10,6 +10,7 @@ the UCD access macros. New values that are added for new releases of Unicode - should always be at the end of each enum, for backwards compatibility. */ - - /* These are the general character categories. */ -+#include "gunicode.h" - - enum { - ucp_C, /* Other */ -@@ -24,148 +25,148 @@ enum { - /* These are the particular character types. */ - - enum { -- ucp_Cc, /* Control */ -- ucp_Cf, /* Format */ -- ucp_Cn, /* Unassigned */ -- ucp_Co, /* Private use */ -- ucp_Cs, /* Surrogate */ -- ucp_Ll, /* Lower case letter */ -- ucp_Lm, /* Modifier letter */ -- ucp_Lo, /* Other letter */ -- ucp_Lt, /* Title case letter */ -- ucp_Lu, /* Upper case letter */ -- ucp_Mc, /* Spacing mark */ -- ucp_Me, /* Enclosing mark */ -- ucp_Mn, /* Non-spacing mark */ -- ucp_Nd, /* Decimal number */ -- ucp_Nl, /* Letter number */ -- ucp_No, /* Other number */ -- ucp_Pc, /* Connector punctuation */ -- ucp_Pd, /* Dash punctuation */ -- ucp_Pe, /* Close punctuation */ -- ucp_Pf, /* Final punctuation */ -- ucp_Pi, /* Initial punctuation */ -- ucp_Po, /* Other punctuation */ -- ucp_Ps, /* Open punctuation */ -- ucp_Sc, /* Currency symbol */ -- ucp_Sk, /* Modifier symbol */ -- ucp_Sm, /* Mathematical symbol */ -- ucp_So, /* Other symbol */ -- ucp_Zl, /* Line separator */ -- ucp_Zp, /* Paragraph separator */ -- ucp_Zs /* Space separator */ -+ ucp_Cc = G_UNICODE_CONTROL, /* Control */ -+ ucp_Cf = G_UNICODE_FORMAT, /* Format */ -+ ucp_Cn = G_UNICODE_UNASSIGNED, /* Unassigned */ -+ ucp_Co = G_UNICODE_PRIVATE_USE, /* Private use */ -+ ucp_Cs = G_UNICODE_SURROGATE, /* Surrogate */ -+ ucp_Ll = G_UNICODE_LOWERCASE_LETTER, /* Lower case letter */ -+ ucp_Lm = G_UNICODE_MODIFIER_LETTER, /* Modifier letter */ -+ ucp_Lo = G_UNICODE_OTHER_LETTER, /* Other letter */ -+ ucp_Lt = G_UNICODE_TITLECASE_LETTER, /* Title case letter */ -+ ucp_Lu = G_UNICODE_UPPERCASE_LETTER, /* Upper case letter */ -+ ucp_Mc = G_UNICODE_SPACING_MARK, /* Spacing mark */ -+ ucp_Me = G_UNICODE_ENCLOSING_MARK, /* Enclosing mark */ -+ ucp_Mn = G_UNICODE_NON_SPACING_MARK, /* Non-spacing mark */ -+ ucp_Nd = G_UNICODE_DECIMAL_NUMBER, /* Decimal number */ -+ ucp_Nl = G_UNICODE_LETTER_NUMBER, /* Letter number */ -+ ucp_No = G_UNICODE_OTHER_NUMBER, /* Other number */ -+ ucp_Pc = G_UNICODE_CONNECT_PUNCTUATION, /* Connector punctuation */ -+ ucp_Pd = G_UNICODE_DASH_PUNCTUATION, /* Dash punctuation */ -+ ucp_Pe = G_UNICODE_CLOSE_PUNCTUATION, /* Close punctuation */ -+ ucp_Pf = G_UNICODE_FINAL_PUNCTUATION, /* Final punctuation */ -+ ucp_Pi = G_UNICODE_INITIAL_PUNCTUATION, /* Initial punctuation */ -+ ucp_Po = G_UNICODE_OTHER_PUNCTUATION, /* Other punctuation */ -+ ucp_Ps = G_UNICODE_OPEN_PUNCTUATION, /* Open punctuation */ -+ ucp_Sc = G_UNICODE_CURRENCY_SYMBOL, /* Currency symbol */ -+ ucp_Sk = G_UNICODE_MODIFIER_SYMBOL, /* Modifier symbol */ -+ ucp_Sm = G_UNICODE_MATH_SYMBOL, /* Mathematical symbol */ -+ ucp_So = G_UNICODE_OTHER_SYMBOL, /* Other symbol */ -+ ucp_Zl = G_UNICODE_LINE_SEPARATOR, /* Line separator */ -+ ucp_Zp = G_UNICODE_PARAGRAPH_SEPARATOR, /* Paragraph separator */ -+ ucp_Zs = G_UNICODE_SPACE_SEPARATOR /* Space separator */ - }; - - /* These are the script identifications. */ - - enum { -- ucp_Arabic, -- ucp_Armenian, -- ucp_Bengali, -- ucp_Bopomofo, -- ucp_Braille, -- ucp_Buginese, -- ucp_Buhid, -- ucp_Canadian_Aboriginal, -- ucp_Cherokee, -- ucp_Common, -- ucp_Coptic, -- ucp_Cypriot, -- ucp_Cyrillic, -- ucp_Deseret, -- ucp_Devanagari, -- ucp_Ethiopic, -- ucp_Georgian, -- ucp_Glagolitic, -- ucp_Gothic, -- ucp_Greek, -- ucp_Gujarati, -- ucp_Gurmukhi, -- ucp_Han, -- ucp_Hangul, -- ucp_Hanunoo, -- ucp_Hebrew, -- ucp_Hiragana, -- ucp_Inherited, -- ucp_Kannada, -- ucp_Katakana, -- ucp_Kharoshthi, -- ucp_Khmer, -- ucp_Lao, -- ucp_Latin, -- ucp_Limbu, -- ucp_Linear_B, -- ucp_Malayalam, -- ucp_Mongolian, -- ucp_Myanmar, -- ucp_New_Tai_Lue, -- ucp_Ogham, -- ucp_Old_Italic, -- ucp_Old_Persian, -- ucp_Oriya, -- ucp_Osmanya, -- ucp_Runic, -- ucp_Shavian, -- ucp_Sinhala, -- ucp_Syloti_Nagri, -- ucp_Syriac, -- ucp_Tagalog, -- ucp_Tagbanwa, -- ucp_Tai_Le, -- ucp_Tamil, -- ucp_Telugu, -- ucp_Thaana, -- ucp_Thai, -- ucp_Tibetan, -- ucp_Tifinagh, -- ucp_Ugaritic, -- ucp_Yi, -+ ucp_Arabic = G_UNICODE_SCRIPT_ARABIC, -+ ucp_Armenian = G_UNICODE_SCRIPT_ARMENIAN, -+ ucp_Bengali = G_UNICODE_SCRIPT_BENGALI, -+ ucp_Bopomofo = G_UNICODE_SCRIPT_BOPOMOFO, -+ ucp_Braille = G_UNICODE_SCRIPT_BRAILLE, -+ ucp_Buginese = G_UNICODE_SCRIPT_BUGINESE, -+ ucp_Buhid = G_UNICODE_SCRIPT_BUHID, -+ ucp_Canadian_Aboriginal = G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL, -+ ucp_Cherokee = G_UNICODE_SCRIPT_CHEROKEE, -+ ucp_Common = G_UNICODE_SCRIPT_COMMON, -+ ucp_Coptic = G_UNICODE_SCRIPT_COPTIC, -+ ucp_Cypriot = G_UNICODE_SCRIPT_CYPRIOT, -+ ucp_Cyrillic = G_UNICODE_SCRIPT_CYRILLIC, -+ ucp_Deseret = G_UNICODE_SCRIPT_DESERET, -+ ucp_Devanagari = G_UNICODE_SCRIPT_DEVANAGARI, -+ ucp_Ethiopic = G_UNICODE_SCRIPT_ETHIOPIC, -+ ucp_Georgian = G_UNICODE_SCRIPT_GEORGIAN, -+ ucp_Glagolitic = G_UNICODE_SCRIPT_GLAGOLITIC, -+ ucp_Gothic = G_UNICODE_SCRIPT_GOTHIC, -+ ucp_Greek = G_UNICODE_SCRIPT_GREEK, -+ ucp_Gujarati = G_UNICODE_SCRIPT_GUJARATI, -+ ucp_Gurmukhi = G_UNICODE_SCRIPT_GURMUKHI, -+ ucp_Han = G_UNICODE_SCRIPT_HAN, -+ ucp_Hangul = G_UNICODE_SCRIPT_HANGUL, -+ ucp_Hanunoo = G_UNICODE_SCRIPT_HANUNOO, -+ ucp_Hebrew = G_UNICODE_SCRIPT_HEBREW, -+ ucp_Hiragana = G_UNICODE_SCRIPT_HIRAGANA, -+ ucp_Inherited = G_UNICODE_SCRIPT_INHERITED, -+ ucp_Kannada = G_UNICODE_SCRIPT_KANNADA, -+ ucp_Katakana = G_UNICODE_SCRIPT_KATAKANA, -+ ucp_Kharoshthi = G_UNICODE_SCRIPT_KHAROSHTHI, -+ ucp_Khmer = G_UNICODE_SCRIPT_KHMER, -+ ucp_Lao = G_UNICODE_SCRIPT_LAO, -+ ucp_Latin = G_UNICODE_SCRIPT_LATIN, -+ ucp_Limbu = G_UNICODE_SCRIPT_LIMBU, -+ ucp_Linear_B = G_UNICODE_SCRIPT_LINEAR_B, -+ ucp_Malayalam = G_UNICODE_SCRIPT_MALAYALAM, -+ ucp_Mongolian = G_UNICODE_SCRIPT_MONGOLIAN, -+ ucp_Myanmar = G_UNICODE_SCRIPT_MYANMAR, -+ ucp_New_Tai_Lue = G_UNICODE_SCRIPT_NEW_TAI_LUE, -+ ucp_Ogham = G_UNICODE_SCRIPT_OGHAM, -+ ucp_Old_Italic = G_UNICODE_SCRIPT_OLD_ITALIC, -+ ucp_Old_Persian = G_UNICODE_SCRIPT_OLD_PERSIAN, -+ ucp_Oriya = G_UNICODE_SCRIPT_ORIYA, -+ ucp_Osmanya = G_UNICODE_SCRIPT_OSMANYA, -+ ucp_Runic = G_UNICODE_SCRIPT_RUNIC, -+ ucp_Shavian = G_UNICODE_SCRIPT_SHAVIAN, -+ ucp_Sinhala = G_UNICODE_SCRIPT_SINHALA, -+ ucp_Syloti_Nagri = G_UNICODE_SCRIPT_SYLOTI_NAGRI, -+ ucp_Syriac = G_UNICODE_SCRIPT_SYRIAC, -+ ucp_Tagalog = G_UNICODE_SCRIPT_TAGALOG, -+ ucp_Tagbanwa = G_UNICODE_SCRIPT_TAGBANWA, -+ ucp_Tai_Le = G_UNICODE_SCRIPT_TAI_LE, -+ ucp_Tamil = G_UNICODE_SCRIPT_TAMIL, -+ ucp_Telugu = G_UNICODE_SCRIPT_TELUGU, -+ ucp_Thaana = G_UNICODE_SCRIPT_THAANA, -+ ucp_Thai = G_UNICODE_SCRIPT_THAI, -+ ucp_Tibetan = G_UNICODE_SCRIPT_TIBETAN, -+ ucp_Tifinagh = G_UNICODE_SCRIPT_TIFINAGH, -+ ucp_Ugaritic = G_UNICODE_SCRIPT_UGARITIC, -+ ucp_Yi = G_UNICODE_SCRIPT_YI, - /* New for Unicode 5.0: */ -- ucp_Balinese, -- ucp_Cuneiform, -- ucp_Nko, -- ucp_Phags_Pa, -- ucp_Phoenician, -+ ucp_Balinese = G_UNICODE_SCRIPT_BALINESE, -+ ucp_Cuneiform = G_UNICODE_SCRIPT_CUNEIFORM, -+ ucp_Nko = G_UNICODE_SCRIPT_NKO, -+ ucp_Phags_Pa = G_UNICODE_SCRIPT_PHAGS_PA, -+ ucp_Phoenician = G_UNICODE_SCRIPT_PHOENICIAN, - /* New for Unicode 5.1: */ -- ucp_Carian, -- ucp_Cham, -- ucp_Kayah_Li, -- ucp_Lepcha, -- ucp_Lycian, -- ucp_Lydian, -- ucp_Ol_Chiki, -- ucp_Rejang, -- ucp_Saurashtra, -- ucp_Sundanese, -- ucp_Vai, -+ ucp_Carian = G_UNICODE_SCRIPT_CARIAN, -+ ucp_Cham = G_UNICODE_SCRIPT_CHAM, -+ ucp_Kayah_Li = G_UNICODE_SCRIPT_KAYAH_LI, -+ ucp_Lepcha = G_UNICODE_SCRIPT_LEPCHA, -+ ucp_Lycian = G_UNICODE_SCRIPT_LYCIAN, -+ ucp_Lydian = G_UNICODE_SCRIPT_LYDIAN, -+ ucp_Ol_Chiki = G_UNICODE_SCRIPT_OL_CHIKI, -+ ucp_Rejang = G_UNICODE_SCRIPT_REJANG, -+ ucp_Saurashtra = G_UNICODE_SCRIPT_SAURASHTRA, -+ ucp_Sundanese = G_UNICODE_SCRIPT_SUNDANESE, -+ ucp_Vai = G_UNICODE_SCRIPT_VAI, - /* New for Unicode 5.2: */ -- ucp_Avestan, -- ucp_Bamum, -- ucp_Egyptian_Hieroglyphs, -- ucp_Imperial_Aramaic, -- ucp_Inscriptional_Pahlavi, -- ucp_Inscriptional_Parthian, -- ucp_Javanese, -- ucp_Kaithi, -- ucp_Lisu, -- ucp_Meetei_Mayek, -- ucp_Old_South_Arabian, -- ucp_Old_Turkic, -- ucp_Samaritan, -- ucp_Tai_Tham, -- ucp_Tai_Viet, -+ ucp_Avestan = G_UNICODE_SCRIPT_AVESTAN, -+ ucp_Bamum = G_UNICODE_SCRIPT_BAMUM, -+ ucp_Egyptian_Hieroglyphs = G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS, -+ ucp_Imperial_Aramaic = G_UNICODE_SCRIPT_IMPERIAL_ARAMAIC, -+ ucp_Inscriptional_Pahlavi = G_UNICODE_SCRIPT_INSCRIPTIONAL_PAHLAVI, -+ ucp_Inscriptional_Parthian = G_UNICODE_SCRIPT_INSCRIPTIONAL_PARTHIAN, -+ ucp_Javanese = G_UNICODE_SCRIPT_JAVANESE, -+ ucp_Kaithi = G_UNICODE_SCRIPT_KAITHI, -+ ucp_Lisu = G_UNICODE_SCRIPT_LISU, -+ ucp_Meetei_Mayek = G_UNICODE_SCRIPT_MEETEI_MAYEK, -+ ucp_Old_South_Arabian = G_UNICODE_SCRIPT_OLD_SOUTH_ARABIAN, -+ ucp_Old_Turkic = G_UNICODE_SCRIPT_OLD_TURKIC, -+ ucp_Samaritan = G_UNICODE_SCRIPT_SAMARITAN, -+ ucp_Tai_Tham = G_UNICODE_SCRIPT_TAI_THAM, -+ ucp_Tai_Viet = G_UNICODE_SCRIPT_TAI_VIET, - /* New for Unicode 6.0.0: */ -- ucp_Batak, -- ucp_Brahmi, -- ucp_Mandaic, -+ ucp_Batak = G_UNICODE_SCRIPT_BATAK, -+ ucp_Brahmi = G_UNICODE_SCRIPT_BRAHMI, -+ ucp_Mandaic = G_UNICODE_SCRIPT_MANDAIC, - /* New for Unicode 6.1.0: */ -- ucp_Chakma, -- ucp_Meroitic_Cursive, -- ucp_Meroitic_Hieroglyphs, -- ucp_Miao, -- ucp_Sharada, -- ucp_Sora_Sompeng, -- ucp_Takri -+ ucp_Chakma = G_UNICODE_SCRIPT_CHAKMA, -+ ucp_Meroitic_Cursive = G_UNICODE_SCRIPT_MEROITIC_CURSIVE, -+ ucp_Meroitic_Hieroglyphs = G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS, -+ ucp_Miao = G_UNICODE_SCRIPT_MIAO, -+ ucp_Sharada = G_UNICODE_SCRIPT_SHARADA, -+ ucp_Sora_Sompeng = G_UNICODE_SCRIPT_SORA_SOMPENG, -+ ucp_Takri = G_UNICODE_SCRIPT_TAKRI, - }; - - #endif --- -1.7.5.1.217.g4e3aa.dirty - diff --git a/glib/win_iconv.c b/glib/win_iconv.c index e04a315..63023ca 100644 --- a/glib/win_iconv.c +++ b/glib/win_iconv.c @@ -30,6 +30,17 @@ #include #include +#ifdef __GNUC__ +#define UNUSED __attribute__((unused)) +#else +#define UNUSED +#endif + +/* WORKAROUND: */ +#ifndef UNDER_CE +#define GetProcAddressA GetProcAddress +#endif + #if 0 # define MAKE_EXE # define MAKE_DLL @@ -45,29 +56,9 @@ #define UNICODE_MODE_BOM_DONE 1 #define UNICODE_MODE_SWAPPED 2 -#define FLAG_USE_BOM_ENDIAN 1 +#define FLAG_USE_BOM 1 #define FLAG_TRANSLIT 2 /* //TRANSLIT */ -#define FLAG_IGNORE 4 /* //IGNORE (not implemented) */ - -#define return_error(code) \ - do { \ - errno = code; \ - return -1; \ - } while (0) - -#define xstrlcpy(dst, src, size) \ - do { \ - strncpy(dst, src, size); \ - dst[size - 1] = 0; \ - } while (0) - -#define xstrlcpyn(dst, src, srclen, size) \ - xstrlcpy(dst, src, xmin((srclen) + 1, size)) - -#define xmin(a, b) ((a) < (b) ? (a) : (b)) -#define xmax(a, b) ((a) > (b) ? (a) : (b)) - -#define STATIC_STRLEN(arr) (sizeof(arr) - 1) +#define FLAG_IGNORE 4 /* //IGNORE */ typedef unsigned char uchar; typedef unsigned short ushort; @@ -140,23 +131,22 @@ static int win_iconv_close(iconv_t cd); static size_t win_iconv(iconv_t cd, /* const */ char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); static int load_mlang(void); -static csconv_t make_csconv(const char *name); +static int make_csconv(const char *name, csconv_t *cv); static int name_to_codepage(const char *name); static uint utf16_to_ucs4(const ushort *wbuf); static void ucs4_to_utf16(uint wc, ushort *wbuf, int *wbufsize); -static int is_unicode(int codepage); static int mbtowc_flags(int codepage); static int must_use_null_useddefaultchar(int codepage); -static void check_utf_bom(rec_iconv_t *cd, ushort *wbuf, int *wbufsize); static char *strrstr(const char *str, const char *token); +static char *xstrndup(const char *s, size_t n); +static int seterror(int err); #if defined(USE_LIBICONV_DLL) static int libiconv_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode); static PVOID MyImageDirectoryEntryToData(LPVOID Base, BOOLEAN MappedAsImage, USHORT DirectoryEntry, PULONG Size); -static HMODULE find_imported_module_by_funcname(HMODULE hModule, const char *funcname); +static FARPROC find_imported_function(HMODULE hModule, const char *funcname); static HMODULE hwiniconv; -static HMODULE hlastdll; /* keep dll loaded for efficiency (unnecessary?) */ #endif static int sbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize); @@ -217,6 +207,8 @@ static struct { */ {1201, "UTF16"}, {1201, "UTF-16"}, + {1201, "UCS2"}, + {1201, "UCS-2"}, {12001, "UTF32"}, {12001, "UTF-32"}, {12001, "UCS-4"}, @@ -357,6 +349,8 @@ static struct { {950, "CP950"}, {950, "BIG5"}, + {950, "BIG5HKSCS"}, + {950, "BIG5-HKSCS"}, {949, "CP949"}, {949, "UHC"}, @@ -465,6 +459,8 @@ static struct { {936, "gb2312"}, /* ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312) */ {949, "ks_c_5601-1987"}, /* ANSI/OEM Korean (Unified Hangul Code) */ {950, "big5"}, /* ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5) */ + {950, "big5hkscs"}, /* ANSI/OEM Traditional Chinese (Hong Kong SAR); Chinese Traditional (Big5-HKSCS) */ + {950, "big5-hkscs"}, /* alternative name for it */ {1026, "IBM1026"}, /* IBM EBCDIC Turkish (Latin 5) */ {1047, "IBM01047"}, /* IBM EBCDIC Latin 1/Open System */ {1140, "IBM01140"}, /* IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro) */ @@ -542,29 +538,53 @@ static struct { {21866, "koi8-u"}, /* Ukrainian (KOI8-U); Cyrillic (KOI8-U) */ {28591, "iso-8859-1"}, /* ISO 8859-1 Latin 1; Western European (ISO) */ {28591, "iso8859-1"}, /* ISO 8859-1 Latin 1; Western European (ISO) */ + {28591, "iso_8859-1"}, + {28591, "iso_8859_1"}, {28592, "iso-8859-2"}, /* ISO 8859-2 Central European; Central European (ISO) */ {28592, "iso8859-2"}, /* ISO 8859-2 Central European; Central European (ISO) */ + {28592, "iso_8859-2"}, + {28592, "iso_8859_2"}, {28593, "iso-8859-3"}, /* ISO 8859-3 Latin 3 */ {28593, "iso8859-3"}, /* ISO 8859-3 Latin 3 */ + {28593, "iso_8859-3"}, + {28593, "iso_8859_3"}, {28594, "iso-8859-4"}, /* ISO 8859-4 Baltic */ {28594, "iso8859-4"}, /* ISO 8859-4 Baltic */ + {28594, "iso_8859-4"}, + {28594, "iso_8859_4"}, {28595, "iso-8859-5"}, /* ISO 8859-5 Cyrillic */ {28595, "iso8859-5"}, /* ISO 8859-5 Cyrillic */ + {28595, "iso_8859-5"}, + {28595, "iso_8859_5"}, {28596, "iso-8859-6"}, /* ISO 8859-6 Arabic */ {28596, "iso8859-6"}, /* ISO 8859-6 Arabic */ + {28596, "iso_8859-6"}, + {28596, "iso_8859_6"}, {28597, "iso-8859-7"}, /* ISO 8859-7 Greek */ {28597, "iso8859-7"}, /* ISO 8859-7 Greek */ + {28597, "iso_8859-7"}, + {28597, "iso_8859_7"}, {28598, "iso-8859-8"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ {28598, "iso8859-8"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Visual) */ + {28598, "iso_8859-8"}, + {28598, "iso_8859_8"}, {28599, "iso-8859-9"}, /* ISO 8859-9 Turkish */ {28599, "iso8859-9"}, /* ISO 8859-9 Turkish */ + {28599, "iso_8859-9"}, + {28599, "iso_8859_9"}, {28603, "iso-8859-13"}, /* ISO 8859-13 Estonian */ {28603, "iso8859-13"}, /* ISO 8859-13 Estonian */ + {28603, "iso_8859-13"}, + {28603, "iso_8859_13"}, {28605, "iso-8859-15"}, /* ISO 8859-15 Latin 9 */ {28605, "iso8859-15"}, /* ISO 8859-15 Latin 9 */ + {28605, "iso_8859-15"}, + {28605, "iso_8859_15"}, {29001, "x-Europa"}, /* Europa 3 */ {38598, "iso-8859-8-i"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ {38598, "iso8859-8-i"}, /* ISO 8859-8 Hebrew; Hebrew (ISO-Logical) */ + {38598, "iso_8859-8-i"}, + {38598, "iso_8859_8-i"}, {50220, "iso-2022-jp"}, /* ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS) */ {50221, "csISO2022JP"}, /* ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana) */ {50222, "iso-2022-jp"}, /* ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI) */ @@ -706,28 +726,18 @@ static RFC1766TOLCIDA Rfc1766ToLcidA; static int load_mlang(void) { - HMODULE h = NULL; - char mlang_dll[MAX_PATH + 100]; - int n; + HMODULE h; if (ConvertINetString != NULL) return TRUE; - n = GetSystemDirectory(mlang_dll, MAX_PATH); - if (n > 0 && n < MAX_PATH) - { - if (mlang_dll[n-1] != '\\' && - mlang_dll[n-1] != '/') - strcat(mlang_dll, "\\"); - strcat(mlang_dll, "mlang.dll"); - h = LoadLibrary(mlang_dll); - } + h = LoadLibrary(TEXT("mlang.dll")); if (!h) return FALSE; - ConvertINetString = (CONVERTINETSTRING)GetProcAddress(h, "ConvertINetString"); - ConvertINetMultiByteToUnicode = (CONVERTINETMULTIBYTETOUNICODE)GetProcAddress(h, "ConvertINetMultiByteToUnicode"); - ConvertINetUnicodeToMultiByte = (CONVERTINETUNICODETOMULTIBYTE)GetProcAddress(h, "ConvertINetUnicodeToMultiByte"); - IsConvertINetStringAvailable = (ISCONVERTINETSTRINGAVAILABLE)GetProcAddress(h, "IsConvertINetStringAvailable"); - LcidToRfc1766A = (LCIDTORFC1766A)GetProcAddress(h, "LcidToRfc1766A"); - Rfc1766ToLcidA = (RFC1766TOLCIDA)GetProcAddress(h, "Rfc1766ToLcidA"); + ConvertINetString = (CONVERTINETSTRING)GetProcAddressA(h, "ConvertINetString"); + ConvertINetMultiByteToUnicode = (CONVERTINETMULTIBYTETOUNICODE)GetProcAddressA(h, "ConvertINetMultiByteToUnicode"); + ConvertINetUnicodeToMultiByte = (CONVERTINETUNICODETOMULTIBYTE)GetProcAddressA(h, "ConvertINetUnicodeToMultiByte"); + IsConvertINetStringAvailable = (ISCONVERTINETSTRINGAVAILABLE)GetProcAddressA(h, "IsConvertINetStringAvailable"); + LcidToRfc1766A = (LCIDTORFC1766A)GetProcAddressA(h, "LcidToRfc1766A"); + Rfc1766ToLcidA = (RFC1766TOLCIDA)GetProcAddressA(h, "Rfc1766ToLcidA"); return TRUE; } @@ -738,21 +748,22 @@ iconv_open(const char *tocode, const char *fromcode) cd = (rec_iconv_t *)calloc(1, sizeof(rec_iconv_t)); if (cd == NULL) - { - errno = ENOMEM; return (iconv_t)(-1); - } #if defined(USE_LIBICONV_DLL) + errno = 0; if (libiconv_iconv_open(cd, tocode, fromcode)) return (iconv_t)cd; #endif + /* reset the errno to prevent reporting wrong error code. + * 0 for unsorted error. */ + errno = 0; if (win_iconv_open(cd, tocode, fromcode)) return (iconv_t)cd; free(cd); - errno = EINVAL; + return (iconv_t)(-1); } @@ -783,9 +794,7 @@ iconv(iconv_t _cd, /* const */ char **inbuf, size_t *inbytesleft, char **outbuf, static int win_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode) { - cd->from = make_csconv(fromcode); - cd->to = make_csconv(tocode); - if (cd->from.codepage == -1 || cd->to.codepage == -1) + if (!make_csconv(fromcode, &cd->from) || !make_csconv(tocode, &cd->to)) return FALSE; cd->iconv_close = win_iconv_close; cd->iconv = win_iconv; @@ -795,7 +804,7 @@ win_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode) } static int -win_iconv_close(iconv_t cd) +win_iconv_close(iconv_t cd UNUSED) { return 0; } @@ -808,7 +817,8 @@ win_iconv(iconv_t _cd, /* const */ char **inbuf, size_t *inbytesleft, char **out int insize; int outsize; int wsize; - DWORD mode; + DWORD frommode; + DWORD tomode; uint wc; compat_t *cp; int i; @@ -817,14 +827,23 @@ win_iconv(iconv_t _cd, /* const */ char **inbuf, size_t *inbytesleft, char **out { if (outbuf != NULL && *outbuf != NULL && cd->to.flush != NULL) { + tomode = cd->to.mode; outsize = cd->to.flush(&cd->to, (uchar *)*outbuf, *outbytesleft); if (outsize == -1) - return (size_t)(-1); + { + if ((cd->to.flags & FLAG_IGNORE) && errno != E2BIG) + { + outsize = 0; + } + else + { + cd->to.mode = tomode; + return (size_t)(-1); + } + } *outbuf += outsize; *outbytesleft -= outsize; } - if (is_unicode(cd->from.codepage) && (cd->from.mode & UNICODE_MODE_SWAPPED)) - cd->from.codepage ^= 1; cd->from.mode = 0; cd->to.mode = 0; return 0; @@ -832,17 +851,24 @@ win_iconv(iconv_t _cd, /* const */ char **inbuf, size_t *inbytesleft, char **out while (*inbytesleft != 0) { - mode = cd->from.mode; + frommode = cd->from.mode; + tomode = cd->to.mode; wsize = MB_CHAR_MAX; insize = cd->from.mbtowc(&cd->from, (const uchar *)*inbuf, *inbytesleft, wbuf, &wsize); if (insize == -1) - return (size_t)(-1); - - if (is_unicode(cd->from.codepage) && !(cd->from.mode & UNICODE_MODE_BOM_DONE)) { - check_utf_bom(cd, wbuf, &wsize); - cd->from.mode |= UNICODE_MODE_BOM_DONE; + if (cd->to.flags & FLAG_IGNORE) + { + cd->from.mode = frommode; + insize = 1; + wsize = 0; + } + else + { + cd->from.mode = frommode; + return (size_t)(-1); + } } if (wsize == 0) @@ -883,8 +909,17 @@ win_iconv(iconv_t _cd, /* const */ char **inbuf, size_t *inbytesleft, char **out outsize = cd->to.wctomb(&cd->to, wbuf, wsize, (uchar *)*outbuf, *outbytesleft); if (outsize == -1) { - cd->from.mode = mode; - return (size_t)(-1); + if ((cd->to.flags & FLAG_IGNORE) && errno != E2BIG) + { + cd->to.mode = tomode; + outsize = 0; + } + else + { + cd->from.mode = frommode; + cd->to.mode = tomode; + return (size_t)(-1); + } } *inbuf += insize; @@ -896,17 +931,18 @@ win_iconv(iconv_t _cd, /* const */ char **inbuf, size_t *inbytesleft, char **out return 0; } -static csconv_t -make_csconv(const char *_name) +static int +make_csconv(const char *_name, csconv_t *cv) { - CPINFOEX cpinfoex; - csconv_t cv; + CPINFO cpinfo; int use_compat = TRUE; int flag = 0; - char name[128]; + char *name; char *p; - xstrlcpy(name, _name, sizeof(name)); + name = xstrndup(_name, strlen(_name)); + if (name == NULL) + return FALSE; /* check for option "enc_name//opt1//opt2" */ while ((p = strrstr(name, "//")) != NULL) @@ -920,78 +956,80 @@ make_csconv(const char *_name) *p = 0; } - cv.mode = 0; - cv.flags = flag; - cv.mblen = NULL; - cv.flush = NULL; - cv.compat = NULL; - cv.codepage = name_to_codepage(name); - if (cv.codepage == 1200 || cv.codepage == 1201) + cv->mode = 0; + cv->flags = flag; + cv->mblen = NULL; + cv->flush = NULL; + cv->compat = NULL; + cv->codepage = name_to_codepage(name); + if (cv->codepage == 1200 || cv->codepage == 1201) { - cv.mbtowc = utf16_mbtowc; - cv.wctomb = utf16_wctomb; - if (_stricmp(name, "UTF-16") == 0 || - _stricmp(name, "UTF16") == 0 || - _stricmp(name, "UCS-2") == 0 || - _stricmp(name, "UCS2") == 0) - cv.flags |= FLAG_USE_BOM_ENDIAN; + cv->mbtowc = utf16_mbtowc; + cv->wctomb = utf16_wctomb; + if (_stricmp(name, "UTF-16") == 0 || _stricmp(name, "UTF16") == 0 || + _stricmp(name, "UCS-2") == 0 || _stricmp(name, "UCS2") == 0) + cv->flags |= FLAG_USE_BOM; } - else if (cv.codepage == 12000 || cv.codepage == 12001) + else if (cv->codepage == 12000 || cv->codepage == 12001) { - cv.mbtowc = utf32_mbtowc; - cv.wctomb = utf32_wctomb; - if (_stricmp(name, "UTF-32") == 0 || - _stricmp(name, "UTF32") == 0 || - _stricmp(name, "UCS-4") == 0 || - _stricmp(name, "UCS4") == 0) - cv.flags |= FLAG_USE_BOM_ENDIAN; + cv->mbtowc = utf32_mbtowc; + cv->wctomb = utf32_wctomb; + if (_stricmp(name, "UTF-32") == 0 || _stricmp(name, "UTF32") == 0 || + _stricmp(name, "UCS-4") == 0 || _stricmp(name, "UCS4") == 0) + cv->flags |= FLAG_USE_BOM; } - else if (cv.codepage == 65001) + else if (cv->codepage == 65001) { - cv.mbtowc = kernel_mbtowc; - cv.wctomb = kernel_wctomb; - cv.mblen = utf8_mblen; + cv->mbtowc = kernel_mbtowc; + cv->wctomb = kernel_wctomb; + cv->mblen = utf8_mblen; } - else if ((cv.codepage == 50220 || cv.codepage == 50221 || cv.codepage == 50222) && load_mlang()) + else if ((cv->codepage == 50220 || cv->codepage == 50221 || cv->codepage == 50222) && load_mlang()) { - cv.mbtowc = iso2022jp_mbtowc; - cv.wctomb = iso2022jp_wctomb; - cv.flush = iso2022jp_flush; + cv->mbtowc = iso2022jp_mbtowc; + cv->wctomb = iso2022jp_wctomb; + cv->flush = iso2022jp_flush; } - else if (cv.codepage == 51932 && load_mlang()) + else if (cv->codepage == 51932 && load_mlang()) { - cv.mbtowc = mlang_mbtowc; - cv.wctomb = mlang_wctomb; - cv.mblen = eucjp_mblen; + cv->mbtowc = mlang_mbtowc; + cv->wctomb = mlang_wctomb; + cv->mblen = eucjp_mblen; } - else if (IsValidCodePage(cv.codepage) - && GetCPInfoEx(cv.codepage, 0, &cpinfoex) != 0) + else if (IsValidCodePage(cv->codepage) + && GetCPInfo(cv->codepage, &cpinfo) != 0) { - cv.mbtowc = kernel_mbtowc; - cv.wctomb = kernel_wctomb; - if (cpinfoex.MaxCharSize == 1) - cv.mblen = sbcs_mblen; - else if (cpinfoex.MaxCharSize == 2) - cv.mblen = dbcs_mblen; - else - cv.mblen = mbcs_mblen; + cv->mbtowc = kernel_mbtowc; + cv->wctomb = kernel_wctomb; + if (cpinfo.MaxCharSize == 1) + cv->mblen = sbcs_mblen; + else if (cpinfo.MaxCharSize == 2) + cv->mblen = dbcs_mblen; + else + cv->mblen = mbcs_mblen; } else { /* not supported */ - cv.codepage = -1; + free(name); + errno = EINVAL; + return FALSE; } + if (use_compat) { - switch (cv.codepage) + switch (cv->codepage) { - case 932: cv.compat = cp932_compat; break; - case 20932: cv.compat = cp20932_compat; break; - case 51932: cv.compat = cp51932_compat; break; - case 50220: case 50221: case 50222: cv.compat = cp5022x_compat; break; + case 932: cv->compat = cp932_compat; break; + case 20932: cv->compat = cp20932_compat; break; + case 51932: cv->compat = cp51932_compat; break; + case 50220: case 50221: case 50222: cv->compat = cp5022x_compat; break; } } - return cv; + + free(name); + + return TRUE; } static int @@ -1046,14 +1084,6 @@ ucs4_to_utf16(uint wc, ushort *wbuf, int *wbufsize) } } -static int -is_unicode(int codepage) -{ - return (codepage == 1200 || codepage == 1201 || - codepage == 12000 || codepage == 12001 || - codepage == 65000 || codepage == 65001); -} - /* * Check if codepage is one of those for which the dwFlags parameter * to MultiByteToWideChar() must be zero. Return zero or @@ -1078,7 +1108,7 @@ mbtowc_flags(int codepage) /* * Check if codepage is one those for which the lpUsedDefaultChar * parameter to WideCharToMultiByte() must be NULL. The docs in - * Platform SDK for for Windows Server 2003 R2 claims that this is the + * Platform SDK for Windows Server 2003 R2 claims that this is the * list below, while the MSDN docs for MSVS2008 claim that it is only * for 65000 (UTF-7) and 65001 (UTF-8). This time the earlier Platform * SDK seems to be correct, at least for XP. @@ -1095,27 +1125,6 @@ must_use_null_useddefaultchar(int codepage) codepage == 42); } -static void -check_utf_bom(rec_iconv_t *cd, ushort *wbuf, int *wbufsize) -{ - /* If we have a BOM, trust it, despite what the caller said */ - if (wbuf[0] == 0xFFFE && (cd->from.flags & FLAG_USE_BOM_ENDIAN)) - { - /* swap endian: 1200 <-> 1201 or 12000 <-> 12001 */ - cd->from.codepage ^= 1; - cd->from.mode |= UNICODE_MODE_SWAPPED; - wbuf[0] = 0xFEFF; - } - - /* - * Remove BOM. - * Don't do this if "to" is Unicode, - * except if "to" is UTF-8. - */ - if (wbuf[0] == 0xFEFF && (!is_unicode(cd->to.codepage) || cd->to.codepage == 65001)) - *wbufsize = 0; -} - static char * strrstr(const char *str, const char *token) { @@ -1128,13 +1137,32 @@ strrstr(const char *str, const char *token) return NULL; } +static char * +xstrndup(const char *s, size_t n) +{ + char *p; + + p = (char *)malloc(n + 1); + if (p == NULL) + return NULL; + memcpy(p, s, n); + p[n] = '\0'; + return p; +} + +static int +seterror(int err) +{ + errno = err; + return -1; +} + #if defined(USE_LIBICONV_DLL) static int -libiconv_iconv_open(rec_iconv_t *cd, const char *fromcode, const char *tocode) +libiconv_iconv_open(rec_iconv_t *cd, const char *tocode, const char *fromcode) { HMODULE hlibiconv = NULL; - HMODULE hmsvcrt = NULL; - char dllname[_MAX_PATH]; + char *dllname; const char *p; const char *e; f_iconv_open _iconv_open; @@ -1155,8 +1183,11 @@ libiconv_iconv_open(rec_iconv_t *cd, const char *fromcode, const char *tocode) continue; else if (e == NULL) e = p + strlen(p); - xstrlcpyn(dllname, p, e - p, sizeof(dllname)); - hlibiconv = LoadLibrary(dllname); + dllname = xstrndup(p, e - p); + if (dllname == NULL) + return FALSE; + hlibiconv = LoadLibraryA(dllname); + free(dllname); if (hlibiconv != NULL) { if (hlibiconv == hwiniconv) @@ -1169,37 +1200,23 @@ libiconv_iconv_open(rec_iconv_t *cd, const char *fromcode, const char *tocode) } } - if (hlastdll != NULL) - { - /* decrement reference count */ - FreeLibrary(hlastdll); - hlastdll = NULL; - } - if (hlibiconv == NULL) goto failed; - hmsvcrt = find_imported_module_by_funcname(hlibiconv, "_errno"); - if (hmsvcrt == NULL) - goto failed; - - _iconv_open = (f_iconv_open)GetProcAddress(hlibiconv, "libiconv_open"); + _iconv_open = (f_iconv_open)GetProcAddressA(hlibiconv, "libiconv_open"); if (_iconv_open == NULL) - _iconv_open = (f_iconv_open)GetProcAddress(hlibiconv, "iconv_open"); - cd->iconv_close = (f_iconv_close)GetProcAddress(hlibiconv, "libiconv_close"); + _iconv_open = (f_iconv_open)GetProcAddressA(hlibiconv, "iconv_open"); + cd->iconv_close = (f_iconv_close)GetProcAddressA(hlibiconv, "libiconv_close"); if (cd->iconv_close == NULL) - cd->iconv_close = (f_iconv_close)GetProcAddress(hlibiconv, "iconv_close"); - cd->iconv = (f_iconv)GetProcAddress(hlibiconv, "libiconv"); + cd->iconv_close = (f_iconv_close)GetProcAddressA(hlibiconv, "iconv_close"); + cd->iconv = (f_iconv)GetProcAddressA(hlibiconv, "libiconv"); if (cd->iconv == NULL) - cd->iconv = (f_iconv)GetProcAddress(hlibiconv, "iconv"); - cd->_errno = (f_errno)GetProcAddress(hmsvcrt, "_errno"); + cd->iconv = (f_iconv)GetProcAddressA(hlibiconv, "iconv"); + cd->_errno = (f_errno)find_imported_function(hlibiconv, "_errno"); if (_iconv_open == NULL || cd->iconv_close == NULL || cd->iconv == NULL || cd->_errno == NULL) goto failed; - /* increment reference count */ - hlastdll = LoadLibrary(dllname); - cd->cd = _iconv_open(tocode, fromcode); if (cd->cd == (iconv_t)(-1)) goto failed; @@ -1210,7 +1227,6 @@ libiconv_iconv_open(rec_iconv_t *cd, const char *fromcode, const char *tocode) failed: if (hlibiconv != NULL) FreeLibrary(hlibiconv); - /* do not free hmsvcrt which is obtained by GetModuleHandle() */ return FALSE; } @@ -1240,17 +1256,18 @@ MyImageDirectoryEntryToData(LPVOID Base, BOOLEAN MappedAsImage, USHORT Directory return (PVOID)((LPBYTE)Base + p->VirtualAddress); } -static HMODULE -find_imported_module_by_funcname(HMODULE hModule, const char *funcname) +static FARPROC +find_imported_function(HMODULE hModule, const char *funcname) { - DWORD Base; + DWORD_PTR Base; ULONG Size; PIMAGE_IMPORT_DESCRIPTOR Imp; + PIMAGE_THUNK_DATA Address; /* Import Address Table */ PIMAGE_THUNK_DATA Name; /* Import Name Table */ PIMAGE_IMPORT_BY_NAME ImpName; - Base = (DWORD)hModule; - Imp = MyImageDirectoryEntryToData( + Base = (DWORD_PTR)hModule; + Imp = (PIMAGE_IMPORT_DESCRIPTOR)MyImageDirectoryEntryToData( (LPVOID)Base, TRUE, IMAGE_DIRECTORY_ENTRY_IMPORT, @@ -1259,15 +1276,16 @@ find_imported_module_by_funcname(HMODULE hModule, const char *funcname) return NULL; for ( ; Imp->OriginalFirstThunk != 0; ++Imp) { + Address = (PIMAGE_THUNK_DATA)(Base + Imp->FirstThunk); Name = (PIMAGE_THUNK_DATA)(Base + Imp->OriginalFirstThunk); - for ( ; Name->u1.Ordinal != 0; ++Name) + for ( ; Name->u1.Ordinal != 0; ++Name, ++Address) { if (!IMAGE_SNAP_BY_ORDINAL(Name->u1.Ordinal)) { ImpName = (PIMAGE_IMPORT_BY_NAME) - (Base + (DWORD)Name->u1.AddressOfData); + (Base + (DWORD_PTR)Name->u1.AddressOfData); if (strcmp((char *)ImpName->Name, funcname) == 0) - return GetModuleHandle((char *)(Base + Imp->Name)); + return (FARPROC)Address->u1.Function; } } } @@ -1276,7 +1294,7 @@ find_imported_module_by_funcname(HMODULE hModule, const char *funcname) #endif static int -sbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize) +sbcs_mblen(csconv_t *cv UNUSED, const uchar *buf UNUSED, int bufsize UNUSED) { return 1; } @@ -1286,7 +1304,7 @@ dbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize) { int len = IsDBCSLeadByteEx(cv->codepage, buf[0]) ? 2 : 1; if (bufsize < len) - return_error(EINVAL); + return seterror(EINVAL); return len; } @@ -1305,15 +1323,15 @@ mbcs_mblen(csconv_t *cv, const uchar *buf, int bufsize) bufsize >= 4 && buf[1] >= 0x30 && buf[1] <= 0x39) len = 4; else - return_error(EINVAL); + return seterror(EINVAL); return len; } else - return_error(EINVAL); + return seterror(EINVAL); } static int -utf8_mblen(csconv_t *cv, const uchar *buf, int bufsize) +utf8_mblen(csconv_t *cv UNUSED, const uchar *buf, int bufsize) { int len = 0; @@ -1325,41 +1343,41 @@ utf8_mblen(csconv_t *cv, const uchar *buf, int bufsize) else if ((buf[0] & 0xFE) == 0xFC) len = 6; if (len == 0) - return_error(EILSEQ); + return seterror(EILSEQ); else if (bufsize < len) - return_error(EINVAL); + return seterror(EINVAL); return len; } static int -eucjp_mblen(csconv_t *cv, const uchar *buf, int bufsize) +eucjp_mblen(csconv_t *cv UNUSED, const uchar *buf, int bufsize) { if (buf[0] < 0x80) /* ASCII */ return 1; else if (buf[0] == 0x8E) /* JIS X 0201 */ { if (bufsize < 2) - return_error(EINVAL); + return seterror(EINVAL); else if (!(0xA1 <= buf[1] && buf[1] <= 0xDF)) - return_error(EILSEQ); + return seterror(EILSEQ); return 2; } else if (buf[0] == 0x8F) /* JIS X 0212 */ { if (bufsize < 3) - return_error(EINVAL); + return seterror(EINVAL); else if (!(0xA1 <= buf[1] && buf[1] <= 0xFE) || !(0xA1 <= buf[2] && buf[2] <= 0xFE)) - return_error(EILSEQ); + return seterror(EILSEQ); return 3; } else /* JIS X 0208 */ { if (bufsize < 2) - return_error(EINVAL); + return seterror(EINVAL); else if (!(0xA1 <= buf[0] && buf[0] <= 0xFE) || !(0xA1 <= buf[1] && buf[1] <= 0xFE)) - return_error(EILSEQ); + return seterror(EILSEQ); return 2; } } @@ -1377,11 +1395,11 @@ kernel_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wb * know that the mblen function is sbcs_mblen() so len is 1. */ if (cv->codepage == 20127 && buf[0] >= 0x80) - return_error(EILSEQ); + return seterror(EILSEQ); *wbufsize = MultiByteToWideChar(cv->codepage, mbtowc_flags (cv->codepage), (const char *)buf, len, (wchar_t *)wbuf, *wbufsize); if (*wbufsize == 0) - return_error(EILSEQ); + return seterror(EILSEQ); return len; } @@ -1394,7 +1412,7 @@ kernel_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) int len; if (bufsize == 0) - return_error(E2BIG); + return seterror(E2BIG); if (!must_use_null_useddefaultchar(cv->codepage)) { p = &usedDefaultChar; @@ -1408,13 +1426,13 @@ kernel_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) if (len == 0) { if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) - return_error(E2BIG); - return_error(EILSEQ); + return seterror(E2BIG); + return seterror(EILSEQ); } - else if (usedDefaultChar) - return_error(EILSEQ); + else if (usedDefaultChar && !(cv->flags & FLAG_TRANSLIT)) + return seterror(EILSEQ); else if (cv->mblen(cv, buf, len) != len) /* validate result */ - return_error(EILSEQ); + return seterror(EILSEQ); return len; } @@ -1440,7 +1458,7 @@ mlang_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbu hr = ConvertINetMultiByteToUnicode(&cv->mode, cv->codepage, (const char *)buf, &insize, (wchar_t *)wbuf, wbufsize); if (hr != S_OK || insize != len) - return_error(EILSEQ); + return seterror(EILSEQ); return len; } @@ -1455,11 +1473,11 @@ mlang_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) hr = ConvertINetUnicodeToMultiByte(&cv->mode, cv->codepage, (const wchar_t *)wbuf, &wbufsize, tmpbuf, &tmpsize); if (hr != S_OK || insize != wbufsize) - return_error(EILSEQ); + return seterror(EILSEQ); else if (bufsize < tmpsize) - return_error(E2BIG); + return seterror(E2BIG); else if (cv->mblen(cv, (uchar *)tmpbuf, tmpsize) != tmpsize) - return_error(EILSEQ); + return seterror(EILSEQ); memcpy(buf, tmpbuf, tmpsize); return tmpsize; } @@ -1467,24 +1485,47 @@ mlang_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) static int utf16_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) { + int codepage = cv->codepage; + + /* swap endian: 1200 <-> 1201 */ + if (cv->mode & UNICODE_MODE_SWAPPED) + codepage ^= 1; + if (bufsize < 2) - return_error(EINVAL); - if (cv->codepage == 1200) /* little endian */ + return seterror(EINVAL); + if (codepage == 1200) /* little endian */ wbuf[0] = (buf[1] << 8) | buf[0]; - else if (cv->codepage == 1201) /* big endian */ + else if (codepage == 1201) /* big endian */ wbuf[0] = (buf[0] << 8) | buf[1]; + + if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) + { + cv->mode |= UNICODE_MODE_BOM_DONE; + if (wbuf[0] == 0xFFFE) + { + cv->mode |= UNICODE_MODE_SWAPPED; + *wbufsize = 0; + return 2; + } + else if (wbuf[0] == 0xFEFF) + { + *wbufsize = 0; + return 2; + } + } + if (0xDC00 <= wbuf[0] && wbuf[0] <= 0xDFFF) - return_error(EILSEQ); + return seterror(EILSEQ); if (0xD800 <= wbuf[0] && wbuf[0] <= 0xDBFF) { if (bufsize < 4) - return_error(EINVAL); - if (cv->codepage == 1200) /* little endian */ + return seterror(EINVAL); + if (codepage == 1200) /* little endian */ wbuf[1] = (buf[3] << 8) | buf[2]; - else if (cv->codepage == 1201) /* big endian */ + else if (codepage == 1201) /* big endian */ wbuf[1] = (buf[2] << 8) | buf[3]; if (!(0xDC00 <= wbuf[1] && wbuf[1] <= 0xDFFF)) - return_error(EILSEQ); + return seterror(EILSEQ); *wbufsize = 2; return 4; } @@ -1495,8 +1536,26 @@ utf16_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbu static int utf16_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) { + if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) + { + int r; + + cv->mode |= UNICODE_MODE_BOM_DONE; + if (bufsize < 2) + return seterror(E2BIG); + if (cv->codepage == 1200) /* little endian */ + memcpy(buf, "\xFF\xFE", 2); + else if (cv->codepage == 1201) /* big endian */ + memcpy(buf, "\xFE\xFF", 2); + + r = utf16_wctomb(cv, wbuf, wbufsize, buf + 2, bufsize - 2); + if (r == -1) + return -1; + return r + 2; + } + if (bufsize < 2) - return_error(E2BIG); + return seterror(E2BIG); if (cv->codepage == 1200) /* little endian */ { buf[0] = (wbuf[0] & 0x00FF); @@ -1510,7 +1569,7 @@ utf16_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) if (0xD800 <= wbuf[0] && wbuf[0] <= 0xDBFF) { if (bufsize < 4) - return_error(E2BIG); + return seterror(E2BIG); if (cv->codepage == 1200) /* little endian */ { buf[2] = (wbuf[1] & 0x00FF); @@ -1529,16 +1588,38 @@ utf16_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) static int utf32_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int *wbufsize) { + int codepage = cv->codepage; uint wc = 0xD800; + /* swap endian: 12000 <-> 12001 */ + if (cv->mode & UNICODE_MODE_SWAPPED) + codepage ^= 1; + if (bufsize < 4) - return_error(EINVAL); - if (cv->codepage == 12000) /* little endian */ + return seterror(EINVAL); + if (codepage == 12000) /* little endian */ wc = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0]; - else if (cv->codepage == 12001) /* big endian */ + else if (codepage == 12001) /* big endian */ wc = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; + + if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) + { + cv->mode |= UNICODE_MODE_BOM_DONE; + if (wc == 0xFFFE0000) + { + cv->mode |= UNICODE_MODE_SWAPPED; + *wbufsize = 0; + return 4; + } + else if (wc == 0x0000FEFF) + { + *wbufsize = 0; + return 4; + } + } + if ((0xD800 <= wc && wc <= 0xDFFF) || 0x10FFFF < wc) - return_error(EILSEQ); + return seterror(EILSEQ); ucs4_to_utf16(wc, wbuf, wbufsize); return 4; } @@ -1548,8 +1629,26 @@ utf32_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize) { uint wc; + if ((cv->flags & FLAG_USE_BOM) && !(cv->mode & UNICODE_MODE_BOM_DONE)) + { + int r; + + cv->mode |= UNICODE_MODE_BOM_DONE; + if (bufsize < 4) + return seterror(E2BIG); + if (cv->codepage == 12000) /* little endian */ + memcpy(buf, "\xFF\xFE\x00\x00", 4); + else if (cv->codepage == 12001) /* big endian */ + memcpy(buf, "\x00\x00\xFE\xFF", 4); + + r = utf32_wctomb(cv, wbuf, wbufsize, buf + 4, bufsize - 4); + if (r == -1) + return -1; + return r + 4; + } + if (bufsize < 4) - return_error(E2BIG); + return seterror(E2BIG); wc = utf16_to_ucs4(wbuf); if (cv->codepage == 12000) /* little endian */ { @@ -1640,7 +1739,7 @@ iso2022jp_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int if (bufsize < esc_len) { if (strncmp((char *)buf, iesc[i].esc, bufsize) == 0) - return_error(EINVAL); + return seterror(EINVAL); } else { @@ -1653,7 +1752,7 @@ iso2022jp_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int } } /* not supported escape sequence */ - return_error(EILSEQ); + return seterror(EILSEQ); } else if (buf[0] == iso2022_SO_seq[0]) { @@ -1680,10 +1779,10 @@ iso2022jp_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int len = iesc[cs].len; if (bufsize < len) - return_error(EINVAL); + return seterror(EINVAL); for (i = 0; i < len; ++i) if (!(buf[i] < 0x80)) - return_error(EILSEQ); + return seterror(EILSEQ); esc_len = iesc[cs].esc_len; memcpy(tmp, iesc[cs].esc, esc_len); if (shift == ISO2022_SO) @@ -1707,13 +1806,13 @@ iso2022jp_mbtowc(csconv_t *cv, const uchar *buf, int bufsize, ushort *wbuf, int hr = ConvertINetMultiByteToUnicode(&dummy, cv->codepage, (const char *)tmp, &insize, (wchar_t *)wbuf, wbufsize); if (hr != S_OK || insize != len + esc_len) - return_error(EILSEQ); + return seterror(EILSEQ); /* Check for conversion error. Assuming defaultChar is 0x3F. */ /* ascii should be converted from ascii */ if (wbuf[0] == buf[0] && cv->mode != ISO2022_MODE(ISO2022JP_CS_ASCII, ISO2022_SI)) - return_error(EILSEQ); + return seterror(EILSEQ); /* reset the mode for informal sequence */ if (cv->mode != ISO2022_MODE(cs, shift)) @@ -1746,9 +1845,9 @@ iso2022jp_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsi hr = ConvertINetUnicodeToMultiByte(&dummy, cv->codepage, (const wchar_t *)wbuf, &wbufsize, tmp, &tmpsize); if (hr != S_OK || insize != wbufsize) - return_error(EILSEQ); + return seterror(EILSEQ); else if (bufsize < tmpsize) - return_error(E2BIG); + return seterror(E2BIG); if (tmpsize == 1) { @@ -1768,7 +1867,7 @@ iso2022jp_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsi } if (iesc[i].esc == NULL) /* not supported escape sequence */ - return_error(EILSEQ); + return seterror(EILSEQ); } shift = ISO2022_SI; @@ -1783,9 +1882,9 @@ iso2022jp_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsi /* Check for converting error. Assuming defaultChar is 0x3F. */ /* ascii should be converted from ascii */ if (cs == ISO2022JP_CS_ASCII && !(wbuf[0] < 0x80)) - return_error(EILSEQ); + return seterror(EILSEQ); else if (tmpsize < esc_len + len) - return_error(EILSEQ); + return seterror(EILSEQ); if (cv->mode == ISO2022_MODE(cs, shift)) { @@ -1812,7 +1911,7 @@ iso2022jp_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsi } if (bufsize < len + esc_len) - return_error(E2BIG); + return seterror(E2BIG); memcpy(buf, tmp, len + esc_len); cv->mode = ISO2022_MODE(cs, shift); return len + esc_len; @@ -1832,7 +1931,7 @@ iso2022jp_flush(csconv_t *cv, uchar *buf, int bufsize) if (ISO2022_MODE_CS(cv->mode) != ISO2022JP_CS_ASCII) esc_len += iesc[ISO2022JP_CS_ASCII].esc_len; if (bufsize < esc_len) - return_error(E2BIG); + return seterror(E2BIG); esc_len = 0; if (ISO2022_MODE_SHIFT(cv->mode) != ISO2022_SI) @@ -1889,6 +1988,9 @@ main(int argc, char **argv) iconv_t cd; size_t r; FILE *in = stdin; + FILE *out = stdout; + int ignore = 0; + char *p; _setmode(_fileno(stdin), _O_BINARY); _setmode(_fileno(stdout), _O_BINARY); @@ -1906,6 +2008,17 @@ main(int argc, char **argv) fromcode = argv[++i]; else if (strcmp(argv[i], "-t") == 0) tocode = argv[++i]; + else if (strcmp(argv[i], "-c") == 0) + ignore = 1; + else if (strcmp(argv[i], "--output") == 0) + { + out = fopen(argv[++i], "wb"); + if(out == NULL) + { + fprintf(stderr, "cannot open %s\n", argv[i]); + return 1; + } + } else { in = fopen(argv[i], "rb"); @@ -1920,10 +2033,23 @@ main(int argc, char **argv) if (fromcode == NULL || tocode == NULL) { - printf("usage: %s -f from-enc -t to-enc [file]\n", argv[0]); + printf("usage: %s [-c] -f from-enc -t to-enc [file]\n", argv[0]); return 0; } + if (ignore) + { + p = tocode; + tocode = (char *)malloc(strlen(p) + strlen("//IGNORE") + 1); + if (tocode == NULL) + { + perror("fatal error"); + return 1; + } + strcpy(tocode, p); + strcat(tocode, "//IGNORE"); + } + cd = iconv_open(tocode, fromcode); if (cd == (iconv_t)(-1)) { @@ -1939,8 +2065,8 @@ main(int argc, char **argv) pout = outbuf; outbytesleft = sizeof(outbuf); r = iconv(cd, &pin, &inbytesleft, &pout, &outbytesleft); - fwrite(outbuf, 1, sizeof(outbuf) - outbytesleft, stdout); - if (r == (size_t)(-1) && errno != EINVAL && errno != E2BIG) + fwrite(outbuf, 1, sizeof(outbuf) - outbytesleft, out); + if (r == (size_t)(-1) && errno != E2BIG && (errno != EINVAL || feof(in))) { perror("conversion error"); return 1; @@ -1951,7 +2077,7 @@ main(int argc, char **argv) pout = outbuf; outbytesleft = sizeof(outbuf); r = iconv(cd, NULL, NULL, &pout, &outbytesleft); - fwrite(outbuf, 1, sizeof(outbuf) - outbytesleft, stdout); + fwrite(outbuf, 1, sizeof(outbuf) - outbytesleft, out); if (r == (size_t)(-1)) { perror("conversion error"); diff --git a/gmodule/.gitignore b/gmodule/.gitignore deleted file mode 100644 index bd1e253..0000000 --- a/gmodule/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -gmoduleconf.h -makefile.msc diff --git a/gmodule/Makefile.in b/gmodule/Makefile.in new file mode 100644 index 0000000..54d4af0 --- /dev/null +++ b/gmodule/Makefile.in @@ -0,0 +1,1650 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@am__append_15 = gmodule-2.0.lib +subdir = gmodule +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(glibinclude_HEADERS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = gmoduleconf.h makefile.msc gmodule.rc +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(libdir)" "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(glibincludedir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(lib_LTLIBRARIES) \ + $(noinst_LTLIBRARIES) +am__DEPENDENCIES_1 = +am_libgmodule_2_0_la_OBJECTS = libgmodule_2_0_la-gmodule.lo +libgmodule_2_0_la_OBJECTS = $(am_libgmodule_2_0_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libgmodule_2_0_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(libgmodule_2_0_la_CFLAGS) $(CFLAGS) \ + $(libgmodule_2_0_la_LDFLAGS) $(LDFLAGS) -o $@ +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgmodule_2_0_la_SOURCES) +DIST_SOURCES = $(libgmodule_2_0_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +HEADERS = $(glibinclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/gmodule.rc.in \ + $(srcdir)/gmoduleconf.h.in $(srcdir)/makefile.msc.in \ + $(top_srcdir)/depcomp $(top_srcdir)/glib.mk \ + $(top_srcdir)/test-driver AUTHORS COPYING ChangeLog +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = gmoduleconf.h +BUILT_EXTRA_DIST = makefile.msc gmodule.rc +CLEANFILES = *.log *.trs $(am__append_14) +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \ + makefile.msc.in gmoduleconf.h.in gmodule-dl.c gmodule-dyld.c \ + gmodule-win32.c gmodule-ar.c gmoduleconf.h.win32 gmodule.rc.in + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) $(am__append_15) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +AM_CPPFLAGS = \ + $(glib_INCLUDES) \ + -DG_LOG_DOMAIN=\"GModule\" \ + @GLIB_DEBUG_FLAGS@ \ + -DG_DISABLE_DEPRECATED + +AM_CFLAGS = $(GLIB_WARN_CFLAGS) +glibincludedir = $(includedir)/glib-2.0 +glibinclude_HEADERS = \ + gmodule.h + +libglib = $(top_builddir)/glib/libglib-2.0.la +top_builddir_full = `cd \$(top_builddir); pwd` +lib_LTLIBRARIES = libgmodule-2.0.la +@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@install_ms_lib_cmd = $(INSTALL) gmodule-2.0.lib $(DESTDIR)$(libdir) +@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/gmodule-2.0.lib +@PLATFORM_WIN32_TRUE@no_undefined = -no-undefined +@OS_WIN32_AND_DLL_COMPILATION_TRUE@gmodule_win32_res = gmodule-win32-res.o +@OS_WIN32_AND_DLL_COMPILATION_TRUE@gmodule_win32_res_ldflag = -Wl,$(gmodule_win32_res) +libgmodule_2_0_la_CFLAGS = $(AM_CFLAGS) $(GLIB_HIDDEN_VISIBILITY_CFLAGS) +libgmodule_2_0_la_SOURCES = gmodule.c +libgmodule_2_0_la_LDFLAGS = $(GLIB_LINK_FLAGS) \ + $(gmodule_win32_res_ldflag) \ + $(G_MODULE_LDFLAGS) \ + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ + -export-dynamic $(no_undefined) + +libgmodule_2_0_la_LIBADD = $(G_MODULE_LIBS_EXTRA) $(G_MODULE_LIBS) $(libglib) +libgmodule_2_0_la_DEPENDENCIES = $(gmodule_win32_res) $(gmodule_def) +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gmodule/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gmodule/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +gmoduleconf.h: $(top_builddir)/config.status $(srcdir)/gmoduleconf.h.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +makefile.msc: $(top_builddir)/config.status $(srcdir)/makefile.msc.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +gmodule.rc: $(top_builddir)/config.status $(srcdir)/gmodule.rc.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgmodule-2.0.la: $(libgmodule_2_0_la_OBJECTS) $(libgmodule_2_0_la_DEPENDENCIES) $(EXTRA_libgmodule_2_0_la_DEPENDENCIES) + $(AM_V_CCLD)$(libgmodule_2_0_la_LINK) -rpath $(libdir) $(libgmodule_2_0_la_OBJECTS) $(libgmodule_2_0_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgmodule_2_0_la-gmodule.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libgmodule_2_0_la-gmodule.lo: gmodule.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmodule_2_0_la_CFLAGS) $(CFLAGS) -MT libgmodule_2_0_la-gmodule.lo -MD -MP -MF $(DEPDIR)/libgmodule_2_0_la-gmodule.Tpo -c -o libgmodule_2_0_la-gmodule.lo `test -f 'gmodule.c' || echo '$(srcdir)/'`gmodule.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgmodule_2_0_la-gmodule.Tpo $(DEPDIR)/libgmodule_2_0_la-gmodule.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmodule.c' object='libgmodule_2_0_la-gmodule.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgmodule_2_0_la_CFLAGS) $(CFLAGS) -c -o libgmodule_2_0_la-gmodule.lo `test -f 'gmodule.c' || echo '$(srcdir)/'`gmodule.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) +install-glibincludeHEADERS: $(glibinclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(glibinclude_HEADERS)'; test -n "$(glibincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(glibincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(glibincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(glibincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(glibincludedir)" || exit $$?; \ + done + +uninstall-glibincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(glibinclude_HEADERS)'; test -n "$(glibincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(glibincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ + $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(glibincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +@HAVE_GLIB_RUNTIME_LIBDIR_FALSE@install-data-hook: +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \ + clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-glibincludeHEADERS \ + install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-glibincludeHEADERS \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-libLTLIBRARIES \ + uninstall-local uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-data-am \ + install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \ + check-local clean clean-checkLTLIBRARIES clean-checkPROGRAMS \ + clean-generic clean-installed_testLTLIBRARIES \ + clean-installed_testPROGRAMS clean-libLTLIBRARIES \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + cscopelist-am ctags ctags-am dist-hook distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-data-hook install-data-local install-dvi \ + install-dvi-am install-exec install-exec-am \ + install-glibincludeHEADERS install-html install-html-am \ + install-info install-info-am install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-libLTLIBRARIES \ + install-man install-nobase_installed_testDATA install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-glibincludeHEADERS \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-libLTLIBRARIES \ + uninstall-local uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) +gmoduleconf.h: gmoduleconf.h.in + +install-ms-lib: + $(install_ms_lib_cmd) + +uninstall-ms-lib: + $(uninstall_ms_lib_cmd) + +gmodule-win32-res.o: gmodule.rc + $(AM_V_GEN) $(WINDRES) gmodule.rc $@ + +gmodule.def: libgmodule-2.0.la + $(AM_V_GEN) dumpbin.exe -exports .libs/libgmodule-2.0-0.dll | awk 'BEGIN { print "EXPORTS" } / +[[:digit:]]+ +[[:xdigit:]]+ +[[:xdigit:]]+/{ print $$4 }' > gmodule.def.tmp && mv gmodule.def.tmp gmodule.def + +gmodule-2.0.lib: libgmodule-2.0.la gmodule.def + $(AM_V_GEN) lib.exe -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgmodule-2.0-$(LT_CURRENT_MINUS_AGE).dll -def:$(builddir)/gmodule.def -out:$@ + +.PHONY: files release + +files: + @files=`ls $(DISTFILES) 2> /dev/null `; for p in $$files; do \ + echo $$p; \ + done + +release: + $(MAKE) dist distdir=$(PACKAGE)`date +"%y%m%d"` + +dist-hook: $(BUILT_EXTRA_DIST) + @files='$(BUILT_EXTRA_DIST)'; \ + for f in $$files; do \ + if test -f $$f; then d=.; else d=$(srcdir); fi; \ + cp $$d/$$f $(distdir) || exit 1; done + +install-data-local: install-ms-lib + +uninstall-local: uninstall-ms-lib + +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@install-data-hook: +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mkdir -p $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mv $(DESTDIR)$(libdir)/libgmodule-2.0.so.0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mv $(DESTDIR)$(libdir)/libgmodule-2.0.so.0.$(LT_CURRENT).$(LT_REVISION) $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ rm -f $(DESTDIR)$(libdir)/libgmodule-2.0.so +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ ln -s $(GLIB_RUNTIME_LIBDIR)/libgmodule-2.0.so.0.$(LT_CURRENT).$(LT_REVISION) $(DESTDIR)$(libdir)/libgmodule-2.0.so + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gmodule/gmodule.rc b/gmodule/gmodule.rc new file mode 100644 index 0000000..ea31d61 --- /dev/null +++ b/gmodule/gmodule.rc @@ -0,0 +1,30 @@ +#include + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 2,48,0,0 + PRODUCTVERSION 2,48,0,0 + FILEFLAGSMASK 0 + FILEFLAGS 0 + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE VFT2_UNKNOWN + BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "The GLib developer community" + VALUE "FileDescription", "GModule" + VALUE "FileVersion", "2.48.0.0" + VALUE "InternalName", "libgmodule-2.0-0" + VALUE "LegalCopyright", "Copyright © 1998-2011 Tim Janik and others." + VALUE "OriginalFilename", "libgmodule-2.0-0.dll" + VALUE "ProductName", "GLib" + VALUE "ProductVersion", "2.48.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END + END diff --git a/gmodule/makefile.msc b/gmodule/makefile.msc new file mode 100644 index 0000000..daa1846 --- /dev/null +++ b/gmodule/makefile.msc @@ -0,0 +1,37 @@ +## Makefile for building the gmodule dll with Microsoft C +## Use: nmake -f makefile.msc install + +TOP = ..\.. + +!INCLUDE ..\build\win32\make.msc + +################################################################ + +INCLUDES = -FImsvc_recommended_pragmas.h -I .. -I . -I ..\glib +DEFINES = -DHAVE_CONFIG_H -DG_LOG_DOMAIN=\"GModule\" + +all : \ + gmoduleconf.h \ + libgmodule-2.0-0.dll + +gmodule_OBJECTS = \ + gmodule.obj +gmodule.def: gmodule.symbols + echo EXPORTS > gmodule.def + cl /EP -DINCLUDE_VARIABLES -DG_OS_WIN32 -DINCLUDE_INTERNAL_SYMBOLS -DALL_FILES \ + -DG_GNUC_MALLOC= -DG_GNUC_CONST= -DG_GNUC_NULL_TERMINATED= -DG_GNUC_NORETURN= \ + -DG_GNUC_PRINTF=;G_GNUC_PRINTF gmodule.symbols >> gmodule.def + + +gmoduleconf.h: gmoduleconf.h.win32 + copy gmoduleconf.h.win32 gmoduleconf.h + +gmodule.res : gmodule.rc + rc -DBUILDNUMBER=0 -r -fo gmodule.res gmodule.rc + +libgmodule-2.0-0.dll : $(gmodule_OBJECTS) gmodule.def gmodule.res + $(CC) $(CFLAGS) -LD -Fe$@ $(gmodule_OBJECTS) gmodule.res \ + ..\glib\glib-2.0.lib $(LDFLAGS) /implib:gmodule-2.0.lib /def:gmodule.def + +clean:: + del gmoduleconf.h diff --git a/gobject/.gitignore b/gobject/.gitignore deleted file mode 100644 index 6ecf1fb..0000000 --- a/gobject/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -glib-genmarshal -glib-mkenums -gmarshal.strings -gobject-query -testgobject -libgobject-gdb.py -makefile.msc -gobject_probes.h -gobject-public-headers.txt diff --git a/gobject/Makefile.am b/gobject/Makefile.am index 72ad2cd..c19ece5 100644 --- a/gobject/Makefile.am +++ b/gobject/Makefile.am @@ -45,7 +45,6 @@ endif libgobjectincludedir = $(includedir)/glib-2.0/gobject libgobject_2_0_la_LDFLAGS = $(GLIB_LINK_FLAGS) \ - $(GOBJECT_LINK_FLAGS) \ $(gobject_win32_res_ldflag) \ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ -export-dynamic $(no_undefined) @@ -131,6 +130,14 @@ tapset_in_files = gobject.stp.in tapsetdir = @ABS_TAPSET_DIR@ tapset_DATA = $(tapset_in_files:.stp.in=.stp) EXTRA_DIST += $(tapset_in_files) +CLEANFILES += $(tapset_in_files:.stp.in=.stp) + +$(tapset_DATA): %.stp: %.stp.in Makefile + $(AM_V_GEN)$(SED) \ + -e 's|[@]ABS_GLIB_RUNTIME_LIBDIR[@]|$(ABS_GLIB_RUNTIME_LIBDIR)|g' \ + -e 's|[@]LT_CURRENT[@]|$(LT_CURRENT)|g' \ + -e 's|[@]LT_REVISION[@]|$(LT_REVISION)|g' \ + $< > $@ endif # non-header sources (headers should be specified in the above variables) @@ -224,42 +231,24 @@ gobject.def: libgobject-2.0.la gobject-2.0.lib: libgobject-2.0.la gobject.def $(AM_V_GEN) lib.exe -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgobject-2.0-$(LT_CURRENT_MINUS_AGE).dll -def:$(builddir)/gobject.def -out:$@ -dist-hook: $(BUILT_EXTRA_DIST) ../build/win32/vs9/gobject.vcproj ../build/win32/vs10/gobject.vcxproj ../build/win32/vs10/gobject.vcxproj.filters +# ------ MSVC Project File Generation ------ +MSVCPROJS = gobject + +gobject_FILES = $(libgobject_2_0_la_SOURCES) +gobject_EXCLUDES = dummy + +gobject_HEADERS_DIR = $(libgobjectincludedir) +gobject_HEADERS_INST = $(gobject_public_h_sources) +gobject_HEADERS_EXCLUDES = dummy + +include $(top_srcdir)/build/Makefile.msvcproj + +dist-hook: $(BUILT_EXTRA_DIST) $(top_builddir)/build/win32/vs9/gobject.vcproj $(top_builddir)/build/win32/vs9/gobject.headers files='$(BUILT_EXTRA_DIST)'; \ for f in $$files; do \ if test -f $$f; then d=.; else d=$(srcdir); fi; \ cp $$d/$$f $(distdir) || exit 1; done -../build/win32/vs9/gobject.vcproj: $(top_srcdir)/build/win32/vs9/gobject.vcprojin - for F in $(libgobject_2_0_la_SOURCES); do \ - case $$F in \ - *.c) echo ' ' \ - ;; \ - esac; \ - done >libgobject.sourcefiles - $(CPP) -P - <$(top_srcdir)/build/win32/vs9/gobject.vcprojin >$@ - rm libgobject.sourcefiles - -../build/win32/vs10/gobject.vcxproj: $(top_srcdir)/build/win32/vs10/gobject.vcxprojin - for F in $(libgobject_2_0_la_SOURCES); do \ - case $$F in \ - *.c) echo ' ' \ - ;; \ - esac; \ - done >libgobject.vs10.sourcefiles - $(CPP) -P - <$(top_srcdir)/build/win32/vs10/gobject.vcxprojin >$@ - rm libgobject.vs10.sourcefiles - -../build/win32/vs10/gobject.vcxproj.filters: $(top_srcdir)/build/win32/vs10/gobject.vcxproj.filtersin - for F in $(libgobject_2_0_la_SOURCES); do \ - case $$F in \ - *.c) echo ' Source Files' \ - ;; \ - esac; \ - done >libgobject.vs10.sourcefiles.filters - $(CPP) -P - <$(top_srcdir)/build/win32/vs10/gobject.vcxproj.filtersin >$@ - rm libgobject.vs10.sourcefiles.filters - install-data-local: install-ms-lib uninstall-local: uninstall-ms-lib uninstall-gdb @@ -279,6 +268,12 @@ libgobject-gdb.py: libgobject-gdb.py.in uninstall-gdb: -rm -r $(DESTDIR)$(datadir)/gdb +if HAVE_GLIB_RUNTIME_LIBDIR +ABS_GLIB_RUNTIME_LIBDIR = $(realpath $(libdir)/$(GLIB_RUNTIME_LIBDIR)) +else +ABS_GLIB_RUNTIME_LIBDIR = $(libdir) +endif + install-data-hook: libgobject-gdb.py mkdir -p $(DESTDIR)$(datadir)/gdb/auto-load/$(ABS_GLIB_RUNTIME_LIBDIR) $(INSTALL) $(builddir)/libgobject-gdb.py $(DESTDIR)$(datadir)/gdb/auto-load/$(ABS_GLIB_RUNTIME_LIBDIR)/libgobject-2.0.so.0.$(LT_CURRENT).$(LT_REVISION)-gdb.py diff --git a/gobject/Makefile.in b/gobject/Makefile.in new file mode 100644 index 0000000..52f017e --- /dev/null +++ b/gobject/Makefile.in @@ -0,0 +1,2343 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + +# Author: Fan, Chun-wei +# Common Autotools file used to generate Visual Studio 2008+ +# Projects from their templates + +# This autotools file, from GLib, can be used in other projects +# that have Visual Studio build support, and is copied into +# $(srcroot)/build/. + +# * Input variables: +# +# MSVCPROJS - List of Projects that should be generated +# +# * Simple tutorial +# +# Add this to Makefile.am where your library/program is built: +# include $(top_srcdir)/build/Makefile.msvcproj +# MSVCPROJS = YourProject (can be multiple projects in a single srcdir) +# YourProject_FILES = $(libyourlib_1_0_SOURCES) +# YourProject_EXCLUDES = ... # list of sources to exclude, separated by '|', wildcards allowed; use random unsed value if none +# YourProject_HEADERS_DIR = $(libyourlibincludedir) +# YourProject_HEADERS_INST = $(libyourlib_1_0_HEADERS) +# YourProject_HEADERS_EXCLUDES = ... # +# +# dist-hook: \ # (or add to it if it is already there, note the vs9 items will also call the vs10 items in the process) +# $(top_builddir)/build/win32/vs9/YourProject.vcproj \ +# $(top_builddir)/build/win32/vs9/YourProject.headers + +# Private functions + + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@am__append_15 = gobject-2.0.lib +@ENABLE_DTRACE_TRUE@am__append_16 = gobject_probes.h gobject_probes.lo +@ENABLE_DTRACE_TRUE@am__append_17 = gobject_probes.h +@ENABLE_DTRACE_TRUE@am__append_18 = gobject_probes.lo +@ENABLE_SYSTEMTAP_TRUE@am__append_19 = $(tapset_in_files) +@ENABLE_SYSTEMTAP_TRUE@am__append_20 = $(tapset_in_files:.stp.in=.stp) +bin_PROGRAMS = gobject-query$(EXEEXT) glib-genmarshal$(EXEEXT) +subdir = gobject +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_gdb_SCRIPTS) \ + $(libgobjectinclude_HEADERS) $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = glib-mkenums makefile.msc gobject.rc +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(bindir)" \ + "$(DESTDIR)$(gdbdir)" "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(tapsetdir)" \ + "$(DESTDIR)$(libgobjectincludedir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(lib_LTLIBRARIES) \ + $(noinst_LTLIBRARIES) +am__DEPENDENCIES_1 = +am__objects_1 = libgobject_2_0_la-gatomicarray.lo \ + libgobject_2_0_la-gbinding.lo libgobject_2_0_la-gboxed.lo \ + libgobject_2_0_la-gclosure.lo libgobject_2_0_la-genums.lo \ + libgobject_2_0_la-gmarshal.lo libgobject_2_0_la-gobject.lo \ + libgobject_2_0_la-gparam.lo libgobject_2_0_la-gparamspecs.lo \ + libgobject_2_0_la-gsignal.lo \ + libgobject_2_0_la-gsourceclosure.lo libgobject_2_0_la-gtype.lo \ + libgobject_2_0_la-gtypemodule.lo \ + libgobject_2_0_la-gtypeplugin.lo libgobject_2_0_la-gvalue.lo \ + libgobject_2_0_la-gvaluearray.lo \ + libgobject_2_0_la-gvaluetransform.lo \ + libgobject_2_0_la-gvaluetypes.lo +am__objects_2 = $(am__objects_1) +am_libgobject_2_0_la_OBJECTS = $(am__objects_2) +libgobject_2_0_la_OBJECTS = $(am_libgobject_2_0_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libgobject_2_0_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(libgobject_2_0_la_CFLAGS) $(CFLAGS) \ + $(libgobject_2_0_la_LDFLAGS) $(LDFLAGS) -o $@ +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(bin_PROGRAMS) $(installed_test_PROGRAMS) \ + $(noinst_PROGRAMS) +am_glib_genmarshal_OBJECTS = glib-genmarshal.$(OBJEXT) +glib_genmarshal_OBJECTS = $(am_glib_genmarshal_OBJECTS) +glib_genmarshal_DEPENDENCIES = $(libglib) +am_gobject_query_OBJECTS = gobject-query.$(OBJEXT) +gobject_query_OBJECTS = $(am_gobject_query_OBJECTS) +gobject_query_DEPENDENCIES = $(progs_LDADD) +SCRIPTS = $(bin_SCRIPTS) $(dist_gdb_SCRIPTS) $(installed_test_SCRIPTS) \ + $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgobject_2_0_la_SOURCES) $(glib_genmarshal_SOURCES) \ + $(gobject_query_SOURCES) +DIST_SOURCES = $(libgobject_2_0_la_SOURCES) $(glib_genmarshal_SOURCES) \ + $(gobject_query_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) $(tapset_DATA) +HEADERS = $(libgobjectinclude_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + check recheck distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/glib-mkenums.in \ + $(srcdir)/gobject.rc.in $(srcdir)/makefile.msc.in \ + $(top_srcdir)/build/Makefile.msvcproj $(top_srcdir)/depcomp \ + $(top_srcdir)/glib.mk $(top_srcdir)/test-driver ChangeLog +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = $(am__append_16) +BUILT_EXTRA_DIST = makefile.msc gobject.rc +CLEANFILES = *.log *.trs $(am__append_14) $(am__append_17) \ + $(am__append_20) gobject-public-headers.txt $(gen_sources) \ + libgobject-gdb.py +DISTCLEANFILES = +MAINTAINERCLEANFILES = + +# +# auxillary files +# +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \ + $(am__append_19) $(gobject_private_h_sources) \ + $(gobject_extra_sources) marshal-genstrings.pl makefile.msc.in \ + gobject.rc.in libgobject-gdb.py.in glib-mkenums.in + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) $(am__append_15) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) + +# GObject - GLib Type, Object, Parameter and Signal Library +# Copyright (C) 1997,98,99,2000 Tim Janik and Red Hat, Inc. +# +SUBDIRS = . tests +AM_CPPFLAGS = \ + -DG_LOG_DOMAIN=\"GLib-GObject\" \ + $(glib_INCLUDES) \ + $(GLIB_DEBUG_FLAGS) \ + -DGOBJECT_COMPILATION + +AM_CFLAGS = $(GLIB_WARN_CFLAGS) +libglib = $(top_builddir)/glib/libglib-2.0.la + +# libraries to compile and install +lib_LTLIBRARIES = libgobject-2.0.la +@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@install_ms_lib_cmd = $(INSTALL) gobject-2.0.lib $(DESTDIR)$(libdir) +@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/gobject-2.0.lib +@PLATFORM_WIN32_TRUE@no_undefined = -no-undefined +@OS_WIN32_AND_DLL_COMPILATION_TRUE@gobject_win32_res = gobject-win32-res.o +@OS_WIN32_AND_DLL_COMPILATION_TRUE@gobject_win32_res_ldflag = -Wl,$(gobject_win32_res) +libgobjectincludedir = $(includedir)/glib-2.0/gobject +libgobject_2_0_la_LDFLAGS = $(GLIB_LINK_FLAGS) \ + $(gobject_win32_res_ldflag) \ + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ + -export-dynamic $(no_undefined) + +libgobject_2_0_la_CFLAGS = $(AM_CFLAGS) $(LIBFFI_CFLAGS) $(GLIB_HIDDEN_VISIBILITY_CFLAGS) +libgobject_2_0_la_LIBADD = $(libglib) $(LIBFFI_LIBS) $(am__append_18) +libgobject_2_0_la_DEPENDENCIES = $(gobject_win32_res) + +# +# setup source file variables +# +# GObject library header files for public installation +gobject_public_h_sources = \ + gobject-autocleanups.h \ + glib-types.h \ + gbinding.h \ + gboxed.h \ + gclosure.h \ + genums.h \ + gmarshal.h \ + gobject.h \ + gparam.h \ + gparamspecs.h \ + gsignal.h \ + gsourceclosure.h \ + gtype.h \ + gtypemodule.h \ + gtypeplugin.h \ + gvalue.h \ + gvaluearray.h \ + gvaluecollector.h \ + gvaluetypes.h \ + gobjectnotifyqueue.c + + +# GObject library header files that don't get installed +gobject_private_h_sources = \ + gatomicarray.h \ + gtype-private.h + + +# GObject library C sources to build the library from +gobject_c_sources = \ + gobject_probes.d \ + gatomicarray.c \ + gbinding.c \ + gboxed.c \ + gclosure.c \ + genums.c \ + gmarshal.c \ + gobject.c \ + gobject_trace.h \ + gparam.c \ + gparamspecs.c \ + gsignal.c \ + gsourceclosure.c \ + gtype.c \ + gtypemodule.c \ + gtypeplugin.c \ + gvalue.c \ + gvaluearray.c \ + gvaluetransform.c \ + gvaluetypes.c + +@ENABLE_DTRACE_TRUE@DTCOMPILE = $(patsubst -W%,,$(LTCOMPILE)) +@ENABLE_DTRACE_TRUE@DTCFLAGS = $(patsubst -W%,,$(CFLAGS)) +@ENABLE_SYSTEMTAP_TRUE@tapset_in_files = gobject.stp.in +@ENABLE_SYSTEMTAP_TRUE@tapsetdir = @ABS_TAPSET_DIR@ +@ENABLE_SYSTEMTAP_TRUE@tapset_DATA = $(tapset_in_files:.stp.in=.stp) + +# non-header sources (headers should be specified in the above variables) +# that don't serve as direct make target sources, i.e. they don't have +# their own .lo rules and don't get publically installed +gobject_extra_sources = \ + gmarshal.list \ + gmarshal.strings + + +# +# setup GObject library sources and their dependancies +# +gobject_target_headers = $(gobject_public_h_sources) +gobject_target_sources = $(gobject_c_sources) +EXTRA_HEADERS = + +# +# rules to generate built sources +# +# setup autogeneration dependancies +gen_sources = xgen-gmh xgen-gmc xgen-gms + +# target platform: +libgobjectinclude_HEADERS = $(gobject_target_headers) +libgobject_2_0_la_SOURCES = $(gobject_target_sources) +bin_SCRIPTS = glib-mkenums +# source files +gobject_query_SOURCES = gobject-query.c +glib_genmarshal_SOURCES = glib-genmarshal.c +# link programs against libgobject +progs_LDADD = ./libgobject-2.0.la $(libglib) +glib_genmarshal_LDADD = $(libglib) +gobject_query_LDADD = $(progs_LDADD) + +# ------ MSVC Project File Generation ------ +MSVCPROJS = gobject +gobject_FILES = $(libgobject_2_0_la_SOURCES) +gobject_EXCLUDES = dummy +gobject_HEADERS_DIR = $(libgobjectincludedir) +gobject_HEADERS_INST = $(gobject_public_h_sources) +gobject_HEADERS_EXCLUDES = dummy +_proj_name = $(subst /,_,$(subst -,_,$(subst .,_,$(1)))) +_proj_path_raw := $(subst $(abs_top_srcdir),,$(abs_srcdir)) +_proj_path = $(subst /,\\,$(_proj_path_raw)) +_proj_subdir_int = $(subst \\\\,\\,\\$(_proj_path)\\) +_proj_subdir = $(subst \\.\\,\\,$(_proj_subdir_int)) +_proj_files_raw = $(subst /,\\,$($(_proj_name)_FILES)) +_proj_files = $(subst $(srcdir)\\,,$(subst $(builddir)\\,,$(subst $(top_builddir)\\$(_proj_path)\\,\\,$(_proj_files_raw)))) +_proj_filters = $($(_proj_name)_EXCLUDES) +_proj_headers_raw = $(subst /,\\,$($(_proj_name)_HEADERS_INST)) +_proj_headers = $(subst $(srcdir)\\,,$(subst $(builddir)\\,,$(subst $(top_builddir)\\$(_proj_path)\\,\\,$(_proj_headers_raw)))) +_proj_headers_excludes = $($(_proj_name)_HEADERS_EXCLUDES) +_headers_dest_posix = $(subst $(includedir),,$($(_proj_name)_HEADERS_DIR)) +_headers_destdir = $(subst /,\\,$(_headers_dest_posix)) + +# install gdb scripts +gdbdir = $(datadir)/glib-2.0/gdb +dist_gdb_SCRIPTS = gobject.py +@HAVE_GLIB_RUNTIME_LIBDIR_FALSE@ABS_GLIB_RUNTIME_LIBDIR = $(libdir) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ABS_GLIB_RUNTIME_LIBDIR = $(realpath $(libdir)/$(GLIB_RUNTIME_LIBDIR)) +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(top_srcdir)/build/Makefile.msvcproj $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gobject/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gobject/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(top_srcdir)/build/Makefile.msvcproj $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +glib-mkenums: $(top_builddir)/config.status $(srcdir)/glib-mkenums.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +makefile.msc: $(top_builddir)/config.status $(srcdir)/makefile.msc.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +gobject.rc: $(top_builddir)/config.status $(srcdir)/gobject.rc.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgobject-2.0.la: $(libgobject_2_0_la_OBJECTS) $(libgobject_2_0_la_DEPENDENCIES) $(EXTRA_libgobject_2_0_la_DEPENDENCIES) + $(AM_V_CCLD)$(libgobject_2_0_la_LINK) -rpath $(libdir) $(libgobject_2_0_la_OBJECTS) $(libgobject_2_0_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +glib-genmarshal$(EXEEXT): $(glib_genmarshal_OBJECTS) $(glib_genmarshal_DEPENDENCIES) $(EXTRA_glib_genmarshal_DEPENDENCIES) + @rm -f glib-genmarshal$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(glib_genmarshal_OBJECTS) $(glib_genmarshal_LDADD) $(LIBS) + +gobject-query$(EXEEXT): $(gobject_query_OBJECTS) $(gobject_query_DEPENDENCIES) $(EXTRA_gobject_query_DEPENDENCIES) + @rm -f gobject-query$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(gobject_query_OBJECTS) $(gobject_query_LDADD) $(LIBS) +install-binSCRIPTS: $(bin_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) +install-dist_gdbSCRIPTS: $(dist_gdb_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(dist_gdb_SCRIPTS)'; test -n "$(gdbdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(gdbdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(gdbdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(gdbdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(gdbdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-dist_gdbSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(dist_gdb_SCRIPTS)'; test -n "$(gdbdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(gdbdir)'; $(am__uninstall_files_from_dir) +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glib-genmarshal.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gobject-query.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gatomicarray.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gbinding.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gboxed.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gclosure.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-genums.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gmarshal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gobject.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gparam.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gparamspecs.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gsignal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gsourceclosure.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gtype.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gtypemodule.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gtypeplugin.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gvalue.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gvaluearray.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gvaluetransform.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgobject_2_0_la-gvaluetypes.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libgobject_2_0_la-gatomicarray.lo: gatomicarray.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gatomicarray.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gatomicarray.Tpo -c -o libgobject_2_0_la-gatomicarray.lo `test -f 'gatomicarray.c' || echo '$(srcdir)/'`gatomicarray.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gatomicarray.Tpo $(DEPDIR)/libgobject_2_0_la-gatomicarray.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gatomicarray.c' object='libgobject_2_0_la-gatomicarray.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gatomicarray.lo `test -f 'gatomicarray.c' || echo '$(srcdir)/'`gatomicarray.c + +libgobject_2_0_la-gbinding.lo: gbinding.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gbinding.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gbinding.Tpo -c -o libgobject_2_0_la-gbinding.lo `test -f 'gbinding.c' || echo '$(srcdir)/'`gbinding.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gbinding.Tpo $(DEPDIR)/libgobject_2_0_la-gbinding.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gbinding.c' object='libgobject_2_0_la-gbinding.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gbinding.lo `test -f 'gbinding.c' || echo '$(srcdir)/'`gbinding.c + +libgobject_2_0_la-gboxed.lo: gboxed.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gboxed.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gboxed.Tpo -c -o libgobject_2_0_la-gboxed.lo `test -f 'gboxed.c' || echo '$(srcdir)/'`gboxed.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gboxed.Tpo $(DEPDIR)/libgobject_2_0_la-gboxed.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gboxed.c' object='libgobject_2_0_la-gboxed.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gboxed.lo `test -f 'gboxed.c' || echo '$(srcdir)/'`gboxed.c + +libgobject_2_0_la-gclosure.lo: gclosure.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gclosure.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gclosure.Tpo -c -o libgobject_2_0_la-gclosure.lo `test -f 'gclosure.c' || echo '$(srcdir)/'`gclosure.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gclosure.Tpo $(DEPDIR)/libgobject_2_0_la-gclosure.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gclosure.c' object='libgobject_2_0_la-gclosure.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gclosure.lo `test -f 'gclosure.c' || echo '$(srcdir)/'`gclosure.c + +libgobject_2_0_la-genums.lo: genums.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-genums.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-genums.Tpo -c -o libgobject_2_0_la-genums.lo `test -f 'genums.c' || echo '$(srcdir)/'`genums.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-genums.Tpo $(DEPDIR)/libgobject_2_0_la-genums.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='genums.c' object='libgobject_2_0_la-genums.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-genums.lo `test -f 'genums.c' || echo '$(srcdir)/'`genums.c + +libgobject_2_0_la-gmarshal.lo: gmarshal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gmarshal.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gmarshal.Tpo -c -o libgobject_2_0_la-gmarshal.lo `test -f 'gmarshal.c' || echo '$(srcdir)/'`gmarshal.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gmarshal.Tpo $(DEPDIR)/libgobject_2_0_la-gmarshal.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gmarshal.c' object='libgobject_2_0_la-gmarshal.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gmarshal.lo `test -f 'gmarshal.c' || echo '$(srcdir)/'`gmarshal.c + +libgobject_2_0_la-gobject.lo: gobject.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gobject.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gobject.Tpo -c -o libgobject_2_0_la-gobject.lo `test -f 'gobject.c' || echo '$(srcdir)/'`gobject.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gobject.Tpo $(DEPDIR)/libgobject_2_0_la-gobject.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gobject.c' object='libgobject_2_0_la-gobject.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gobject.lo `test -f 'gobject.c' || echo '$(srcdir)/'`gobject.c + +libgobject_2_0_la-gparam.lo: gparam.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gparam.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gparam.Tpo -c -o libgobject_2_0_la-gparam.lo `test -f 'gparam.c' || echo '$(srcdir)/'`gparam.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gparam.Tpo $(DEPDIR)/libgobject_2_0_la-gparam.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gparam.c' object='libgobject_2_0_la-gparam.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gparam.lo `test -f 'gparam.c' || echo '$(srcdir)/'`gparam.c + +libgobject_2_0_la-gparamspecs.lo: gparamspecs.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gparamspecs.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gparamspecs.Tpo -c -o libgobject_2_0_la-gparamspecs.lo `test -f 'gparamspecs.c' || echo '$(srcdir)/'`gparamspecs.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gparamspecs.Tpo $(DEPDIR)/libgobject_2_0_la-gparamspecs.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gparamspecs.c' object='libgobject_2_0_la-gparamspecs.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gparamspecs.lo `test -f 'gparamspecs.c' || echo '$(srcdir)/'`gparamspecs.c + +libgobject_2_0_la-gsignal.lo: gsignal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gsignal.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gsignal.Tpo -c -o libgobject_2_0_la-gsignal.lo `test -f 'gsignal.c' || echo '$(srcdir)/'`gsignal.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gsignal.Tpo $(DEPDIR)/libgobject_2_0_la-gsignal.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsignal.c' object='libgobject_2_0_la-gsignal.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gsignal.lo `test -f 'gsignal.c' || echo '$(srcdir)/'`gsignal.c + +libgobject_2_0_la-gsourceclosure.lo: gsourceclosure.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gsourceclosure.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gsourceclosure.Tpo -c -o libgobject_2_0_la-gsourceclosure.lo `test -f 'gsourceclosure.c' || echo '$(srcdir)/'`gsourceclosure.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gsourceclosure.Tpo $(DEPDIR)/libgobject_2_0_la-gsourceclosure.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsourceclosure.c' object='libgobject_2_0_la-gsourceclosure.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gsourceclosure.lo `test -f 'gsourceclosure.c' || echo '$(srcdir)/'`gsourceclosure.c + +libgobject_2_0_la-gtype.lo: gtype.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gtype.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gtype.Tpo -c -o libgobject_2_0_la-gtype.lo `test -f 'gtype.c' || echo '$(srcdir)/'`gtype.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gtype.Tpo $(DEPDIR)/libgobject_2_0_la-gtype.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtype.c' object='libgobject_2_0_la-gtype.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gtype.lo `test -f 'gtype.c' || echo '$(srcdir)/'`gtype.c + +libgobject_2_0_la-gtypemodule.lo: gtypemodule.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gtypemodule.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gtypemodule.Tpo -c -o libgobject_2_0_la-gtypemodule.lo `test -f 'gtypemodule.c' || echo '$(srcdir)/'`gtypemodule.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gtypemodule.Tpo $(DEPDIR)/libgobject_2_0_la-gtypemodule.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtypemodule.c' object='libgobject_2_0_la-gtypemodule.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gtypemodule.lo `test -f 'gtypemodule.c' || echo '$(srcdir)/'`gtypemodule.c + +libgobject_2_0_la-gtypeplugin.lo: gtypeplugin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gtypeplugin.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gtypeplugin.Tpo -c -o libgobject_2_0_la-gtypeplugin.lo `test -f 'gtypeplugin.c' || echo '$(srcdir)/'`gtypeplugin.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gtypeplugin.Tpo $(DEPDIR)/libgobject_2_0_la-gtypeplugin.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gtypeplugin.c' object='libgobject_2_0_la-gtypeplugin.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gtypeplugin.lo `test -f 'gtypeplugin.c' || echo '$(srcdir)/'`gtypeplugin.c + +libgobject_2_0_la-gvalue.lo: gvalue.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gvalue.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gvalue.Tpo -c -o libgobject_2_0_la-gvalue.lo `test -f 'gvalue.c' || echo '$(srcdir)/'`gvalue.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gvalue.Tpo $(DEPDIR)/libgobject_2_0_la-gvalue.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvalue.c' object='libgobject_2_0_la-gvalue.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gvalue.lo `test -f 'gvalue.c' || echo '$(srcdir)/'`gvalue.c + +libgobject_2_0_la-gvaluearray.lo: gvaluearray.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gvaluearray.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gvaluearray.Tpo -c -o libgobject_2_0_la-gvaluearray.lo `test -f 'gvaluearray.c' || echo '$(srcdir)/'`gvaluearray.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gvaluearray.Tpo $(DEPDIR)/libgobject_2_0_la-gvaluearray.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvaluearray.c' object='libgobject_2_0_la-gvaluearray.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gvaluearray.lo `test -f 'gvaluearray.c' || echo '$(srcdir)/'`gvaluearray.c + +libgobject_2_0_la-gvaluetransform.lo: gvaluetransform.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gvaluetransform.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gvaluetransform.Tpo -c -o libgobject_2_0_la-gvaluetransform.lo `test -f 'gvaluetransform.c' || echo '$(srcdir)/'`gvaluetransform.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gvaluetransform.Tpo $(DEPDIR)/libgobject_2_0_la-gvaluetransform.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvaluetransform.c' object='libgobject_2_0_la-gvaluetransform.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gvaluetransform.lo `test -f 'gvaluetransform.c' || echo '$(srcdir)/'`gvaluetransform.c + +libgobject_2_0_la-gvaluetypes.lo: gvaluetypes.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -MT libgobject_2_0_la-gvaluetypes.lo -MD -MP -MF $(DEPDIR)/libgobject_2_0_la-gvaluetypes.Tpo -c -o libgobject_2_0_la-gvaluetypes.lo `test -f 'gvaluetypes.c' || echo '$(srcdir)/'`gvaluetypes.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgobject_2_0_la-gvaluetypes.Tpo $(DEPDIR)/libgobject_2_0_la-gvaluetypes.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gvaluetypes.c' object='libgobject_2_0_la-gvaluetypes.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgobject_2_0_la_CFLAGS) $(CFLAGS) -c -o libgobject_2_0_la-gvaluetypes.lo `test -f 'gvaluetypes.c' || echo '$(srcdir)/'`gvaluetypes.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) +install-tapsetDATA: $(tapset_DATA) + @$(NORMAL_INSTALL) + @list='$(tapset_DATA)'; test -n "$(tapsetdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(tapsetdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(tapsetdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tapsetdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(tapsetdir)" || exit $$?; \ + done + +uninstall-tapsetDATA: + @$(NORMAL_UNINSTALL) + @list='$(tapset_DATA)'; test -n "$(tapsetdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(tapsetdir)'; $(am__uninstall_files_from_dir) +install-libgobjectincludeHEADERS: $(libgobjectinclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(libgobjectinclude_HEADERS)'; test -n "$(libgobjectincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(libgobjectincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libgobjectincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libgobjectincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(libgobjectincludedir)" || exit $$?; \ + done + +uninstall-libgobjectincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(libgobjectinclude_HEADERS)'; test -n "$(libgobjectincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(libgobjectincludedir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ + $(HEADERS) all-local +install-binPROGRAMS: install-libLTLIBRARIES + +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(gdbdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(tapsetdir)" "$(DESTDIR)$(libgobjectincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-checkLTLIBRARIES clean-checkPROGRAMS \ + clean-generic clean-installed_testLTLIBRARIES \ + clean-installed_testPROGRAMS clean-libLTLIBRARIES \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-local distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-data-local install-dist_gdbSCRIPTS \ + install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-libgobjectincludeHEADERS \ + install-nobase_installed_testDATA install-tapsetDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-binSCRIPTS \ + install-libLTLIBRARIES + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ + uninstall-dist_gdbSCRIPTS uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-libLTLIBRARIES \ + uninstall-libgobjectincludeHEADERS uninstall-local \ + uninstall-nobase_installed_testDATA uninstall-tapsetDATA + +.MAKE: $(am__recursive_targets) all check check-am install install-am \ + install-data-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ + check check-TESTS check-am check-local clean clean-binPROGRAMS \ + clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \ + clean-noinstPROGRAMS cscopelist-am ctags ctags-am dist-hook \ + distclean distclean-compile distclean-generic \ + distclean-libtool distclean-local distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-binSCRIPTS install-data \ + install-data-am install-data-hook install-data-local \ + install-dist_gdbSCRIPTS install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-libLTLIBRARIES \ + install-libgobjectincludeHEADERS install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip install-tapsetDATA \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am recheck tags tags-am uninstall \ + uninstall-am uninstall-binPROGRAMS uninstall-binSCRIPTS \ + uninstall-dist_gdbSCRIPTS uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-libLTLIBRARIES \ + uninstall-libgobjectincludeHEADERS uninstall-local \ + uninstall-nobase_installed_testDATA uninstall-tapsetDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +install-ms-lib: + $(install_ms_lib_cmd) + +uninstall-ms-lib: + $(uninstall_ms_lib_cmd) + +@ENABLE_DTRACE_TRUE@gobject_probes.h: gobject_probes.d +@ENABLE_DTRACE_TRUE@ $(AM_V_GEN) $(DTRACE) -C -h -s $< -o $@.tmp +@ENABLE_DTRACE_TRUE@ @$(SED) -e "s,define STAP_HAS_SEMAPHORES 1,undef STAP_HAS_SEMAPHORES," < $@.tmp > $@ && rm -f $@.tmp + +@ENABLE_DTRACE_TRUE@gobject_probes.lo: gobject_probes.d +@ENABLE_DTRACE_TRUE@ $(AM_V_GEN) env CC="$(DTCOMPILE)" CFLAGS="$(DTCFLAGS)" $(DTRACE) -G -s $< -o $@ + +@ENABLE_SYSTEMTAP_TRUE@$(tapset_DATA): %.stp: %.stp.in Makefile +@ENABLE_SYSTEMTAP_TRUE@ $(AM_V_GEN)$(SED) \ +@ENABLE_SYSTEMTAP_TRUE@ -e 's|[@]ABS_GLIB_RUNTIME_LIBDIR[@]|$(ABS_GLIB_RUNTIME_LIBDIR)|g' \ +@ENABLE_SYSTEMTAP_TRUE@ -e 's|[@]LT_CURRENT[@]|$(LT_CURRENT)|g' \ +@ENABLE_SYSTEMTAP_TRUE@ -e 's|[@]LT_REVISION[@]|$(LT_REVISION)|g' \ +@ENABLE_SYSTEMTAP_TRUE@ $< > $@ + +# This is read by gobject-introspection/misc/ and gtk-doc +gobject-public-headers.txt: Makefile + $(AM_V_GEN) echo $(gobject_public_h_sources) > $@.tmp && mv $@.tmp $@ + +all-local: gobject-public-headers.txt + +# normal autogeneration rules +# all autogenerated files need to be generated in the srcdir, +# so old versions get remade and are not confused with newer +# versions in the build dir. thus a development setup requires +# srcdir to be writable, passing --disable-rebuilds to +# ../configure will supress all autogeneration rules. + +gmarshal.strings: @REBUILD@ $(srcdir)/gmarshal.list + $(AM_V_GEN) grep '^[A-Z]' $(srcdir)/gmarshal.list \ + | $(SED) -e 's/^/"g_cclosure_marshal_/' -e 's/:/__/' -e 's/,/_/g' -e 's/$$/",/' > xgen-gms \ + && cp xgen-gms gmarshal.strings \ + && rm -f xgen-gms xgen-gms~ + +glib-genmarshal.o: gmarshal.strings + +gobject-win32-res.o: gobject.rc + $(AM_V_GEN) $(WINDRES) gobject.rc $@ + +gobject.def: libgobject-2.0.la + $(AM_V_GEN) dumpbin.exe -exports .libs/libgobject-2.0-0.dll | awk 'BEGIN { print "EXPORTS" } / +[[:digit:]]+ +[[:xdigit:]]+ +[[:xdigit:]]+/{ print $$4 }' > gobject.def.tmp && mv gobject.def.tmp gobject.def + +gobject-2.0.lib: libgobject-2.0.la gobject.def + $(AM_V_GEN) lib.exe -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgobject-2.0-$(LT_CURRENT_MINUS_AGE).dll -def:$(builddir)/gobject.def -out:$@ + +# +# Creates Visual Studio 2008/2010 projects from items passed in from autotools files +# $(1) - Base Name of the MSVC project files (outputs) +# + +define msvcproj-builder + +$(top_builddir)/build/win32/vs10/$(1).vcxproj: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(top_builddir)/build/win32/vs10/$(1).vcxproj.filters: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(1).sourcefiles: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(1).vs10.sourcefiles: $(top_builddir)/build/win32/vs9/$(1).vcproj +$(1).vs10.sourcefiles.filters: $(top_builddir)/build/win32/vs9/$(1).vcproj + +$(top_builddir)/build/win32/vs9/$(1).vcproj: + -$(RM) $(top_builddir)/build/win32/vs9/$(1).vcproj + -$(RM) $(top_builddir)/build/win32/vs10/$(1).vcxproj + -$(RM) $(top_builddir)/build/win32/vs10/$(1).vcxproj.filters + + for F in $(_proj_files); do \ + case $$$$F in \ + $(_proj_filters)) \ + ;; \ + *.c|*.cpp|*.cc|*.cxx) \ + echo ' ' >>$(1).sourcefiles && \ + echo ' ' >>$(1).vs10.sourcefiles && \ + echo ' Source Files' >>$(1).vs10.sourcefiles.filters \ + ;; \ + esac; \ + done + + $(CPP) -P - <$(top_srcdir)/build/win32/vs9/$(1).vcprojin >$(top_builddir)/build/win32/vs9/$(1).vcproj + $(CPP) -P - <$(top_srcdir)/build/win32/vs10/$(1).vcxprojin >$(top_builddir)/build/win32/vs10/$(1).vcxproj + $(CPP) -P - <$(top_srcdir)/build/win32/vs10/$(1).vcxproj.filtersin >$(top_builddir)/build/win32/vs10/$(1).vcxproj.filters + $(RM) $(1).sourcefiles + $(RM) $(1).vs10.sourcefiles + $(RM) $(1).vs10.sourcefiles.filters + +$(top_builddir)/build/win32/vs10/$(1).vs10.headers: $(top_builddir)/build/win32/vs9/$(1).headers + +$(top_builddir)/build/win32/vs9/$(1).headers: + -$(RM) $(top_builddir)/build/win32/vs9/$(1).headers + -$(RM) $(top_builddir)/build/win32/vs10/$(1).vs10.headers + + for F in $(_proj_headers); do \ + case $$$$F in \ + $(_proj_headers_excludes)) \ + ;; \ + *.h|*.hpp|*.hh|*.hxx) \ + echo 'copy ..\..\..'$(_proj_subdir)$$$$F' $$$$(CopyDir)\include'$(_headers_destdir)'\'$$$$F' ' >>$(top_builddir)/build/win32/vs9/$(1).headers && \ + echo 'copy ..\..\..'$(_proj_subdir)$$$$F' $$$$(CopyDir)\include'$(_headers_destdir)'\'$$$$F >>$(top_builddir)/build/win32/vs10/$(1).vs10.headers \ + ;; \ + esac; \ + done + +endef + +$(foreach proj,$(MSVCPROJS),$(eval $(call msvcproj-builder,$(proj)))) + +dist-hook: $(BUILT_EXTRA_DIST) $(top_builddir)/build/win32/vs9/gobject.vcproj $(top_builddir)/build/win32/vs9/gobject.headers + files='$(BUILT_EXTRA_DIST)'; \ + for f in $$files; do \ + if test -f $$f; then d=.; else d=$(srcdir); fi; \ + cp $$d/$$f $(distdir) || exit 1; done + +install-data-local: install-ms-lib + +uninstall-local: uninstall-ms-lib uninstall-gdb + +distclean-local: + if test $(srcdir) = .; then :; else \ + rm -f $(BUILT_EXTRA_DIST); \ + fi + +libgobject-gdb.py: libgobject-gdb.py.in + $(AM_V_GEN) $(SED) -e "s|\@datadir\@|$(datadir)|" $(srcdir)/libgobject-gdb.py.in > $(builddir)/libgobject-gdb.py + +uninstall-gdb: + -rm -r $(DESTDIR)$(datadir)/gdb + +install-data-hook: libgobject-gdb.py + mkdir -p $(DESTDIR)$(datadir)/gdb/auto-load/$(ABS_GLIB_RUNTIME_LIBDIR) + $(INSTALL) $(builddir)/libgobject-gdb.py $(DESTDIR)$(datadir)/gdb/auto-load/$(ABS_GLIB_RUNTIME_LIBDIR)/libgobject-2.0.so.0.$(LT_CURRENT).$(LT_REVISION)-gdb.py +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mkdir -p $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mv $(DESTDIR)$(libdir)/libgobject-2.0.so.0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mv $(DESTDIR)$(libdir)/libgobject-2.0.so.0.$(LT_CURRENT).$(LT_REVISION) $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ rm -f $(DESTDIR)$(libdir)/libgobject-2.0.so +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ ln -s $(GLIB_RUNTIME_LIBDIR)/libgobject-2.0.so.0.$(LT_CURRENT).$(LT_REVISION) $(DESTDIR)$(libdir)/libgobject-2.0.so + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gobject/gbinding.c b/gobject/gbinding.c index 7bcdb4c..01f00a1 100644 --- a/gobject/gbinding.c +++ b/gobject/gbinding.c @@ -191,40 +191,10 @@ enum PROP_FLAGS }; -static GQuark quark_gbinding = 0; +static guint gobject_notify_signal_id; G_DEFINE_TYPE (GBinding, g_binding, G_TYPE_OBJECT); -static inline void -add_binding_qdata (GObject *gobject, - GBinding *binding) -{ - GHashTable *bindings; - - bindings = g_object_get_qdata (gobject, quark_gbinding); - if (bindings == NULL) - { - bindings = g_hash_table_new (NULL, NULL); - - g_object_set_qdata_full (gobject, quark_gbinding, - bindings, - (GDestroyNotify) g_hash_table_unref); - } - - g_hash_table_add (bindings, binding); -} - -static inline void -remove_binding_qdata (GObject *gobject, - GBinding *binding) -{ - GHashTable *bindings; - - bindings = g_object_get_qdata (gobject, quark_gbinding); - if (binding != NULL) - g_hash_table_remove (bindings, binding); -} - /* the basic assumption is that if either the source or the target * goes away then the binding does not exist any more and it should * be reaped as well @@ -247,7 +217,6 @@ weak_unbind (gpointer user_data, g_signal_handler_disconnect (binding->source, binding->source_notify); g_object_weak_unref (binding->source, weak_unbind, user_data); - remove_binding_qdata (binding->source, binding); binding->source_notify = 0; binding->source = NULL; @@ -262,7 +231,6 @@ weak_unbind (gpointer user_data, g_signal_handler_disconnect (binding->target, binding->target_notify); g_object_weak_unref (binding->target, weak_unbind, user_data); - remove_binding_qdata (binding->target, binding); binding->target_notify = 0; binding->target = NULL; @@ -272,9 +240,11 @@ weak_unbind (gpointer user_data, g_object_unref (binding); } -static inline gboolean -default_transform (const GValue *value_a, - GValue *value_b) +static gboolean +default_transform (GBinding *binding, + const GValue *value_a, + GValue *value_b, + gpointer user_data G_GNUC_UNUSED) { /* if it's not the same type, try to convert it using the GValue * transformation API; otherwise just copy it @@ -286,14 +256,14 @@ default_transform (const GValue *value_a, G_VALUE_TYPE (value_b))) { g_value_copy (value_a, value_b); - goto done; + return TRUE; } if (g_value_type_transformable (G_VALUE_TYPE (value_a), G_VALUE_TYPE (value_b))) { if (g_value_transform (value_a, value_b)) - goto done; + return TRUE; } g_warning ("%s: Unable to convert a value of type %s to a " @@ -304,16 +274,16 @@ default_transform (const GValue *value_a, return FALSE; } - else - g_value_copy (value_a, value_b); -done: + g_value_copy (value_a, value_b); return TRUE; } -static inline gboolean -default_invert_boolean_transform (const GValue *value_a, - GValue *value_b) +static gboolean +default_invert_boolean_transform (GBinding *binding, + const GValue *value_a, + GValue *value_b, + gpointer user_data G_GNUC_UNUSED) { gboolean value; @@ -328,36 +298,11 @@ default_invert_boolean_transform (const GValue *value_a, return TRUE; } -static gboolean -default_transform_to (GBinding *binding, - const GValue *value_a, - GValue *value_b, - gpointer user_data G_GNUC_UNUSED) -{ - if (binding->flags & G_BINDING_INVERT_BOOLEAN) - return default_invert_boolean_transform (value_a, value_b); - - return default_transform (value_a, value_b); -} - -static gboolean -default_transform_from (GBinding *binding, - const GValue *value_a, - GValue *value_b, - gpointer user_data G_GNUC_UNUSED) -{ - if (binding->flags & G_BINDING_INVERT_BOOLEAN) - return default_invert_boolean_transform (value_a, value_b); - - return default_transform (value_a, value_b); -} - static void on_source_notify (GObject *gobject, GParamSpec *pspec, GBinding *binding) { - const gchar *p_name; GValue from_value = G_VALUE_INIT; GValue to_value = G_VALUE_INIT; gboolean res; @@ -365,11 +310,6 @@ on_source_notify (GObject *gobject, if (binding->is_frozen) return; - p_name = g_intern_string (pspec->name); - - if (p_name != binding->source_property) - return; - g_value_init (&from_value, G_PARAM_SPEC_VALUE_TYPE (binding->source_pspec)); g_value_init (&to_value, G_PARAM_SPEC_VALUE_TYPE (binding->target_pspec)); @@ -398,7 +338,6 @@ on_target_notify (GObject *gobject, GParamSpec *pspec, GBinding *binding) { - const gchar *p_name; GValue from_value = G_VALUE_INIT; GValue to_value = G_VALUE_INIT; gboolean res; @@ -406,11 +345,6 @@ on_target_notify (GObject *gobject, if (binding->is_frozen) return; - p_name = g_intern_string (pspec->name); - - if (p_name != binding->target_property) - return; - g_value_init (&from_value, G_PARAM_SPEC_VALUE_TYPE (binding->target_pspec)); g_value_init (&to_value, G_PARAM_SPEC_VALUE_TYPE (binding->source_pspec)); @@ -438,6 +372,8 @@ static inline void g_binding_unbind_internal (GBinding *binding, gboolean unref_binding) { + gboolean source_is_target = binding->source == binding->target; + /* dispose of the transformation data */ if (binding->notify != NULL) { @@ -453,7 +389,6 @@ g_binding_unbind_internal (GBinding *binding, g_signal_handler_disconnect (binding->source, binding->source_notify); g_object_weak_unref (binding->source, weak_unbind, binding); - remove_binding_qdata (binding->source, binding); binding->source_notify = 0; binding->source = NULL; @@ -464,8 +399,8 @@ g_binding_unbind_internal (GBinding *binding, if (binding->target_notify != 0) g_signal_handler_disconnect (binding->target, binding->target_notify); - g_object_weak_unref (binding->target, weak_unbind, binding); - remove_binding_qdata (binding->target, binding); + if (!source_is_target) + g_object_weak_unref (binding->target, weak_unbind, binding); binding->target_notify = 0; binding->target = NULL; @@ -561,6 +496,9 @@ static void g_binding_constructed (GObject *gobject) { GBinding *binding = G_BINDING (gobject); + GBindingTransformFunc transform_func = default_transform; + GQuark source_property_detail; + GClosure *source_notify_closure; /* assert that we were constructed correctly */ g_assert (binding->source != NULL); @@ -577,30 +515,45 @@ g_binding_constructed (GObject *gobject) g_assert (binding->source_pspec != NULL); g_assert (binding->target_pspec != NULL); + /* switch to the invert boolean transform if needed */ + if (binding->flags & G_BINDING_INVERT_BOOLEAN) + transform_func = default_invert_boolean_transform; + /* set the default transformation functions here */ - binding->transform_s2t = default_transform_to; - binding->transform_t2s = default_transform_from; + binding->transform_s2t = transform_func; + binding->transform_t2s = transform_func; binding->transform_data = NULL; binding->notify = NULL; - binding->source_notify = g_signal_connect (binding->source, "notify", - G_CALLBACK (on_source_notify), - binding); + source_property_detail = g_quark_from_string (binding->source_property); + source_notify_closure = g_cclosure_new (G_CALLBACK (on_source_notify), + binding, NULL); + binding->source_notify = g_signal_connect_closure_by_id (binding->source, + gobject_notify_signal_id, + source_property_detail, + source_notify_closure, + FALSE); g_object_weak_ref (binding->source, weak_unbind, binding); - add_binding_qdata (binding->source, binding); if (binding->flags & G_BINDING_BIDIRECTIONAL) - binding->target_notify = g_signal_connect (binding->target, "notify", - G_CALLBACK (on_target_notify), - binding); - - if (binding->target != binding->source) { - g_object_weak_ref (binding->target, weak_unbind, binding); - add_binding_qdata (binding->target, binding); + GQuark target_property_detail; + GClosure *target_notify_closure; + + target_property_detail = g_quark_from_string (binding->target_property); + target_notify_closure = g_cclosure_new (G_CALLBACK (on_target_notify), + binding, NULL); + binding->target_notify = g_signal_connect_closure_by_id (binding->target, + gobject_notify_signal_id, + target_property_detail, + target_notify_closure, + FALSE); } + + if (binding->target != binding->source) + g_object_weak_ref (binding->target, weak_unbind, binding); } static void @@ -608,7 +561,8 @@ g_binding_class_init (GBindingClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - quark_gbinding = g_quark_from_static_string ("g-binding"); + gobject_notify_signal_id = g_signal_lookup ("notify", G_TYPE_OBJECT); + g_assert (gobject_notify_signal_id != 0); gobject_class->constructed = g_binding_constructed; gobject_class->set_property = g_binding_set_property; diff --git a/gobject/gboxed.c b/gobject/gboxed.c index 54f658e..40723f5 100644 --- a/gobject/gboxed.c +++ b/gobject/gboxed.c @@ -322,11 +322,12 @@ g_boxed_type_register_static (const gchar *name, /** * g_boxed_copy: * @boxed_type: The type of @src_boxed. - * @src_boxed: The boxed structure to be copied. + * @src_boxed: (not nullable): The boxed structure to be copied. * * Provide a copy of a boxed structure @src_boxed which is of type @boxed_type. * - * Returns: (transfer full): The newly created copy of the boxed structure. + * Returns: (transfer full) (not nullable): The newly created copy of the boxed + * structure. */ gpointer g_boxed_copy (GType boxed_type, @@ -383,7 +384,7 @@ g_boxed_copy (GType boxed_type, /** * g_boxed_free: * @boxed_type: The type of @boxed. - * @boxed: The boxed structure to be freed. + * @boxed: (not nullable): The boxed structure to be freed. * * Free the boxed structure @boxed which is of type @boxed_type. */ diff --git a/gobject/gboxed.h b/gobject/gboxed.h index d398da5..d169d03 100644 --- a/gobject/gboxed.h +++ b/gobject/gboxed.h @@ -46,18 +46,18 @@ G_BEGIN_DECLS /* --- typedefs --- */ /** * GBoxedCopyFunc: - * @boxed: The boxed structure to be copied. + * @boxed: (not nullable): 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. + * Returns: (not nullable): The newly created copy of the boxed structure. */ typedef gpointer (*GBoxedCopyFunc) (gpointer boxed); /** * GBoxedFreeFunc: - * @boxed: The boxed structure to be freed. + * @boxed: (not nullable): The boxed structure to be freed. * * This function is provided by the user and should free the boxed * structure passed. diff --git a/gobject/gclosure.c b/gobject/gclosure.c index 33353bb..8152424 100644 --- a/gobject/gclosure.c +++ b/gobject/gclosure.c @@ -22,6 +22,7 @@ #include "config.h" +#include "../glib/valgrind.h" #include #include @@ -189,14 +190,31 @@ GClosure* g_closure_new_simple (guint sizeof_closure, gpointer data) { - GRealClosure *real_closure; GClosure *closure; + gint private_size; + gchar *allocated; g_return_val_if_fail (sizeof_closure >= sizeof (GClosure), NULL); - sizeof_closure = sizeof_closure + sizeof (GRealClosure) - sizeof (GClosure); - real_closure = g_malloc0 (sizeof_closure); - closure = &real_closure->closure; + private_size = sizeof (GRealClosure) - sizeof (GClosure); + + /* See comments in gtype.c about what's going on here... */ + if (RUNNING_ON_VALGRIND) + { + private_size += sizeof (gpointer); + + allocated = g_malloc0 (private_size + sizeof_closure + sizeof (gpointer)); + + *(gpointer *) (allocated + private_size + sizeof_closure) = allocated + sizeof (gpointer); + + VALGRIND_MALLOCLIKE_BLOCK (allocated + private_size, sizeof_closure + sizeof (gpointer), 0, TRUE); + VALGRIND_MALLOCLIKE_BLOCK (allocated + sizeof (gpointer), private_size - sizeof (gpointer), 0, TRUE); + } + else + allocated = g_malloc0 (private_size + sizeof_closure); + + closure = (GClosure *) (allocated + private_size); + SET (closure, ref_count, 1); SET (closure, floating, TRUE); closure->data = data; @@ -301,7 +319,8 @@ g_closure_set_meta_va_marshal (GClosure *closure, /** * g_closure_set_meta_marshal: (skip) * @closure: a #GClosure - * @marshal_data: context-dependent data to pass to @meta_marshal + * @marshal_data: (closure meta_marshal): context-dependent data to pass + * to @meta_marshal * @meta_marshal: a #GClosureMarshal function * * Sets the meta marshaller of @closure. A meta marshaller wraps @@ -342,9 +361,11 @@ g_closure_set_meta_marshal (GClosure *closure, /** * g_closure_add_marshal_guards: (skip) * @closure: a #GClosure - * @pre_marshal_data: data to pass to @pre_marshal_notify + * @pre_marshal_data: (closure pre_marshal_notify): data to pass + * to @pre_marshal_notify * @pre_marshal_notify: a function to call before the closure callback - * @post_marshal_data: data to pass to @post_marshal_notify + * @post_marshal_data: (closure post_marshal_notify): data to pass + * to @post_marshal_notify * @post_marshal_notify: a function to call after the closure callback * * Adds a pair of notifiers which get invoked before and after the @@ -399,7 +420,7 @@ g_closure_add_marshal_guards (GClosure *closure, /** * g_closure_add_finalize_notifier: (skip) * @closure: a #GClosure - * @notify_data: data to pass to @notify_func + * @notify_data: (closure notify_func): data to pass to @notify_func * @notify_func: the callback function to register * * Registers a finalization notifier which will be called when the @@ -435,7 +456,7 @@ g_closure_add_finalize_notifier (GClosure *closure, /** * g_closure_add_invalidate_notifier: (skip) * @closure: a #GClosure - * @notify_data: data to pass to @notify_func + * @notify_data: (closure notify_func): data to pass to @notify_func * @notify_func: the callback function to register * * Registers an invalidation notifier which will be called when the @@ -589,7 +610,22 @@ g_closure_unref (GClosure *closure) { closure_invoke_notifiers (closure, FNOTIFY); g_free (closure->notifiers); - g_free (G_REAL_CLOSURE (closure)); + + /* See comments in gtype.c about what's going on here... */ + if (RUNNING_ON_VALGRIND) + { + gchar *allocated; + + allocated = (gchar *) G_REAL_CLOSURE (closure); + allocated -= sizeof (gpointer); + + g_free (allocated); + + VALGRIND_FREELIKE_BLOCK (allocated + sizeof (gpointer), 0); + VALGRIND_FREELIKE_BLOCK (closure, 0); + } + else + g_free (G_REAL_CLOSURE (closure)); } } @@ -719,7 +755,7 @@ g_closure_remove_finalize_notifier (GClosure *closure, /** * g_closure_invoke: * @closure: a #GClosure - * @return_value: (allow-none): a #GValue to store the return + * @return_value: (optional) (out): 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 @@ -888,7 +924,7 @@ _g_closure_set_va_marshal (GClosure *closure, /** * g_cclosure_new: (skip) * @callback_func: the function to invoke - * @user_data: user data to pass to @callback_func + * @user_data: (closure callback_func): user data to pass to @callback_func * @destroy_data: destroy notify to be called when @user_data is no longer used * * Creates a new closure which invokes @callback_func with @user_data as @@ -916,7 +952,7 @@ g_cclosure_new (GCallback callback_func, /** * g_cclosure_new_swap: (skip) * @callback_func: the function to invoke - * @user_data: user data to pass to @callback_func + * @user_data: (closure callback_func): user data to pass to @callback_func * @destroy_data: destroy notify to be called when @user_data is no longer used * * Creates a new closure which invokes @callback_func with @user_data as @@ -1153,9 +1189,15 @@ value_to_ffi_type (const GValue *gvalue, *value = enum_tmpval; *tmpval_used = TRUE; break; + case G_TYPE_FLAGS: + g_assert (enum_tmpval != NULL); + rettype = &ffi_type_uint; + *enum_tmpval = g_value_get_flags (gvalue); + *value = enum_tmpval; + *tmpval_used = TRUE; + break; case G_TYPE_UCHAR: case G_TYPE_UINT: - case G_TYPE_FLAGS: rettype = &ffi_type_uint; *value = (gpointer)&(gvalue->data[0].v_uint); break; @@ -1457,7 +1499,8 @@ g_cclosure_marshal_generic (GClosure *closure, * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is + * invoked. * @args_list: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and diff --git a/gobject/gclosure.h b/gobject/gclosure.h index 41f0799..3195809 100644 --- a/gobject/gclosure.h +++ b/gobject/gclosure.h @@ -125,7 +125,8 @@ typedef void (*GClosureMarshal) (GClosure *closure, * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is + * invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and diff --git a/gobject/glib-genmarshal.c b/gobject/glib-genmarshal.c index be4151a..ba13e44 100644 --- a/gobject/glib-genmarshal.c +++ b/gobject/glib-genmarshal.c @@ -412,9 +412,9 @@ generate_marshal (const gchar *signame, g_fprintf (fout, "%s%s data2);\n", indent (ind), pad ("gpointer")); /* cfile marshal variables */ - g_fprintf (fout, " register GMarshalFunc_%s callback;\n", signame); - g_fprintf (fout, " register GCClosure *cc = (GCClosure*) closure;\n"); - g_fprintf (fout, " register gpointer data1, data2;\n"); + g_fprintf (fout, " GMarshalFunc_%s callback;\n", signame); + g_fprintf (fout, " GCClosure *cc = (GCClosure*) closure;\n"); + g_fprintf (fout, " gpointer data1, data2;\n"); if (sig->rarg->setter) g_fprintf (fout, " %s v_return;\n", sig->rarg->ctype); @@ -993,10 +993,10 @@ parse_args (gint *argc_p, gchar *equal = argv[i] + 8; if (*equal == '=') - marshaller_prefix = g_strdup (equal + 1); + marshaller_prefix = equal + 1; else if (i + 1 < argc) { - marshaller_prefix = g_strdup (argv[i + 1]); + marshaller_prefix = argv[i + 1]; argv[i] = NULL; i += 1; } diff --git a/gobject/glib-mkenums.in b/gobject/glib-mkenums.in index b776e1f..357ef90 100755 --- a/gobject/glib-mkenums.in +++ b/gobject/glib-mkenums.in @@ -148,7 +148,7 @@ sub usage { print " --fhead Output file header\n"; print " --fprod Per input file production\n"; print " --ftail Output file trailer\n"; - print " --eprod Per enum text (produced prior to value itarations)\n"; + print " --eprod Per enum text (produced prior to value iterations)\n"; print " --vhead Value header, produced before iterating over enum values\n"; print " --vprod Value text, produced for each enum value\n"; print " --vtail Value tail, produced after iterating over enum values\n"; diff --git a/gobject/glib-types.h b/gobject/glib-types.h index ac222b8..36d7e6e 100644 --- a/gobject/glib-types.h +++ b/gobject/glib-types.h @@ -357,13 +357,6 @@ GType g_option_group_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/gobject/gmarshal.c b/gobject/gmarshal.c index 122f73f..f270f2e 100644 --- a/gobject/gmarshal.c +++ b/gobject/gmarshal.c @@ -426,7 +426,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -444,7 +444,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -461,7 +461,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -478,7 +478,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -495,7 +495,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -512,7 +512,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -529,7 +529,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -546,7 +546,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -563,7 +563,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -580,7 +580,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -597,7 +597,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -614,7 +614,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -631,7 +631,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -648,7 +648,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -665,7 +665,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -682,7 +682,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -699,7 +699,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -716,7 +716,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -733,7 +733,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -750,7 +750,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -767,7 +767,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and @@ -784,7 +784,7 @@ * @return_value: (allow-none): a #GValue to store the return * value. May be %NULL if the callback of @closure doesn't return a * value. - * @instance: the instance on which the closure is invoked. + * @instance: (type GObject.TypeInstance): the instance on which the closure is invoked. * @args: va_list of arguments to be passed to the closure. * @marshal_data: (allow-none): additional data specified when * registering the marshaller, see g_closure_set_marshal() and diff --git a/gobject/gmarshal.strings b/gobject/gmarshal.strings new file mode 100644 index 0000000..65ca49d --- /dev/null +++ b/gobject/gmarshal.strings @@ -0,0 +1,22 @@ +"g_cclosure_marshal_VOID__VOID", +"g_cclosure_marshal_VOID__BOOLEAN", +"g_cclosure_marshal_VOID__CHAR", +"g_cclosure_marshal_VOID__UCHAR", +"g_cclosure_marshal_VOID__INT", +"g_cclosure_marshal_VOID__UINT", +"g_cclosure_marshal_VOID__LONG", +"g_cclosure_marshal_VOID__ULONG", +"g_cclosure_marshal_VOID__ENUM", +"g_cclosure_marshal_VOID__FLAGS", +"g_cclosure_marshal_VOID__FLOAT", +"g_cclosure_marshal_VOID__DOUBLE", +"g_cclosure_marshal_VOID__STRING", +"g_cclosure_marshal_VOID__PARAM", +"g_cclosure_marshal_VOID__BOXED", +"g_cclosure_marshal_VOID__POINTER", +"g_cclosure_marshal_VOID__OBJECT", +"g_cclosure_marshal_VOID__VARIANT", +"g_cclosure_marshal_VOID__UINT_POINTER", +"g_cclosure_marshal_BOOL__FLAGS", +"g_cclosure_marshal_STRING__OBJECT_POINTER", +"g_cclosure_marshal_BOOL__BOXED_BOXED", diff --git a/gobject/gobject-autocleanups.h b/gobject/gobject-autocleanups.h index 797f315..980203f 100644 --- a/gobject/gobject-autocleanups.h +++ b/gobject/gobject-autocleanups.h @@ -21,7 +21,6 @@ #error "Only can be included directly." #endif -G_DEFINE_AUTO_CLEANUP_FREE_FUNC(GStrv, g_strfreev, NULL) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GObject, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(GInitiallyUnowned, g_object_unref) G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(GValue, g_value_unset) diff --git a/gobject/gobject.c b/gobject/gobject.c index c321aa7..8163d3d 100644 --- a/gobject/gobject.c +++ b/gobject/gobject.c @@ -45,6 +45,12 @@ * construction and destruction, property access methods, and signal * support. Signals are described in detail [here][gobject-Signals]. * + * For a tutorial on implementing a new GObject class, see [How to define and + * implement a new GObject][howto-gobject]. For a list of naming conventions for + * GObjects and their methods, see the [GType conventions][gtype-conventions]. + * For the high-level concepts behind GObject, read [Instantiable classed types: + * Objects][gtype-instantiable-classed]. + * * ## Floating references # {#floating-ref} * * GInitiallyUnowned is derived from GObject. The only difference between @@ -298,7 +304,7 @@ g_object_notify_queue_add (GObject *object, { G_LOCK(notify_lock); - g_return_if_fail (nqueue->n_pspecs < 65535); + g_assert (nqueue->n_pspecs < 65535); if (g_slist_find (nqueue->pspecs, pspec) == NULL) { @@ -696,7 +702,8 @@ g_object_class_install_properties (GObjectClass *oclass, /** * g_object_interface_install_property: - * @g_iface: any interface vtable for the interface, or the default + * @g_iface: (type GObject.TypeInterface): any interface vtable for the + * interface, or the default * vtable for the interface. * @pspec: the #GParamSpec for the new property * @@ -775,8 +782,8 @@ g_object_class_find_property (GObjectClass *class, /** * g_object_interface_find_property: - * @g_iface: any interface vtable for the interface, or the default - * vtable for the interface + * @g_iface: (type GObject.TypeInterface): any interface vtable for the + * interface, or the default vtable for the interface * @property_name: name of a property to lookup. * * Find the #GParamSpec with the given name for an @@ -913,8 +920,8 @@ g_object_class_list_properties (GObjectClass *class, /** * g_object_interface_list_properties: - * @g_iface: any interface vtable for the interface, or the default - * vtable for the interface + * @g_iface: (type GObject.TypeInterface): any interface vtable for the + * interface, or the default vtable for the interface * @n_properties_p: (out): location to store number of properties returned. * * Lists the properties of an interface.Generally, the interface @@ -1044,7 +1051,6 @@ g_object_finalize (GObject *object) #endif /* G_ENABLE_DEBUG */ } - static void g_object_dispatch_properties_changed (GObject *object, guint n_pspecs, @@ -1053,7 +1059,7 @@ g_object_dispatch_properties_changed (GObject *object, guint i; for (i = 0; i < n_pspecs; i++) - g_signal_emit (object, gobject_signals[NOTIFY], g_quark_from_string (pspecs[i]->name), pspecs[i]); + g_signal_emit (object, gobject_signals[NOTIFY], g_param_spec_get_name_quark (pspecs[i]), pspecs[i]); } /** @@ -1311,7 +1317,7 @@ consider_issuing_property_deprecation_warning (const GParamSpec *pspec) const gchar *value = g_getenv ("G_ENABLE_DIAGNOSTIC"); if (!value) - value = "-"; + value = "0"; g_once_init_leave (&enable_diagnostic, value); } @@ -1498,7 +1504,7 @@ object_interface_check_properties (gpointer check_data, * * If the interface was not writable to begin with then we don't * really have any problems here because "writable at construct - * type only" is still more permissive than "read only". + * time only" is still more permissive than "read only". */ if (pspecs[n]->flags & G_PARAM_WRITABLE) { @@ -1597,7 +1603,8 @@ g_object_get_type (void) * Construction parameters (see #G_PARAM_CONSTRUCT, #G_PARAM_CONSTRUCT_ONLY) * which are not explicitly specified are set to their default values. * - * Returns: (transfer full): a new instance of @object_type + * Returns: (transfer full) (type GObject.Object) : a new instance of + * @object_type */ gpointer g_object_new (GType object_type, @@ -2243,7 +2250,7 @@ g_object_get_valist (GObject *object, /** * g_object_set: (skip) - * @object: a #GObject + * @object: (type GObject.Object): a #GObject * @first_property_name: name of the first property to set * @...: value for the first property, followed optionally by more * name/value pairs, followed by %NULL @@ -2271,7 +2278,7 @@ g_object_set (gpointer _object, /** * g_object_get: (skip) - * @object: a #GObject + * @object: (type GObject.Object): a #GObject * @first_property_name: name of the first property to get * @...: return location for the first property, followed optionally by more * name/return location pairs, followed by %NULL @@ -2447,7 +2454,7 @@ g_object_get_property (GObject *object, /** * g_object_connect: (skip) - * @object: a #GObject + * @object: (type GObject.Object): a #GObject * @signal_spec: the spec for the first signal * @...: #GCallback for the first signal, followed by data for the * first signal, followed optionally by more signal @@ -2477,7 +2484,7 @@ g_object_get_property (GObject *object, * NULL); * ]| * - * Returns: (transfer none): @object + * Returns: (transfer none) (type GObject.Object): @object */ gpointer g_object_connect (gpointer _object, @@ -2549,7 +2556,7 @@ g_object_connect (gpointer _object, /** * g_object_disconnect: (skip) - * @object: a #GObject + * @object: (type GObject.Object): a #GObject * @signal_spec: the spec for the first signal * @...: #GCallback for the first signal, followed by data for the first signal, * followed optionally by more signal spec/callback/data triples, @@ -2724,7 +2731,8 @@ g_object_weak_unref (GObject *object, /** * g_object_add_weak_pointer: (skip) * @object: The object that should be weak referenced. - * @weak_pointer_location: (inout): The memory address of a pointer. + * @weak_pointer_location: (inout) (not optional) (nullable): The memory address + * of a pointer. * * Adds a weak reference from weak_pointer to @object to indicate that * the pointer located at @weak_pointer_location is only valid during @@ -2751,7 +2759,8 @@ g_object_add_weak_pointer (GObject *object, /** * g_object_remove_weak_pointer: (skip) * @object: The object that is weak referenced. - * @weak_pointer_location: (inout): The memory address of a pointer. + * @weak_pointer_location: (inout) (not optional) (nullable): The memory address + * of a pointer. * * Removes a weak reference from @object that was previously added * using g_object_add_weak_pointer(). The @weak_pointer_location has @@ -3825,10 +3834,11 @@ g_value_dup_object (const GValue *value) /** * g_signal_connect_object: (skip) - * @instance: the instance to connect to. + * @instance: (type GObject.TypeInstance): the instance to connect to. * @detailed_signal: a string of the form "signal-name::detail". * @c_handler: the #GCallback to connect. - * @gobject: the object to pass as data to @c_handler. + * @gobject: (type GObject.Object) (nullable): the object to pass as data + * to @c_handler. * @connect_flags: a combination of #GConnectFlags. * * This is similar to g_signal_connect_data(), but uses a closure which @@ -4135,7 +4145,7 @@ g_initially_unowned_class_init (GInitiallyUnownedClass *klass) * g_weak_ref_init: (skip) * @weak_ref: (inout): uninitialized or empty location for a weak * reference - * @object: (allow-none): a #GObject or %NULL + * @object: (type GObject.Object) (nullable): a #GObject or %NULL * * Initialise a non-statically-allocated #GWeakRef. * @@ -4221,7 +4231,7 @@ g_weak_ref_get (GWeakRef *weak_ref) /** * g_weak_ref_set: (skip) * @weak_ref: location for a weak reference - * @object: (allow-none): a #GObject or %NULL + * @object: (type GObject.Object) (nullable): a #GObject or %NULL * * Change the object to which @weak_ref points, or set it to * %NULL. diff --git a/gobject/gobject.h b/gobject/gobject.h index a889d3c..32ab997 100644 --- a/gobject/gobject.h +++ b/gobject/gobject.h @@ -690,21 +690,25 @@ static inline gboolean (g_set_object) (GObject **object_ptr, GObject *new_object) { + GObject *old_object = *object_ptr; + /* rely on g_object_[un]ref() to check the pointers are actually GObjects; * elide a (object_ptr != NULL) check because most of the time we will be * operating on struct members with a constant offset, so a NULL check would - * not catch bugs */ + * not catch bugs + */ - if (*object_ptr == new_object) + if (old_object == new_object) return FALSE; if (new_object != NULL) g_object_ref (new_object); - if (*object_ptr != NULL) - g_object_unref (*object_ptr); *object_ptr = new_object; + if (old_object != NULL) + g_object_unref (old_object); + return TRUE; } diff --git a/gobject/gobject.rc b/gobject/gobject.rc new file mode 100644 index 0000000..b6a2426 --- /dev/null +++ b/gobject/gobject.rc @@ -0,0 +1,30 @@ +#include + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 2,48,0,0 + PRODUCTVERSION 2,48,0,0 + FILEFLAGSMASK 0 + FILEFLAGS 0 + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE VFT2_UNKNOWN + BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "The GLib developer community" + VALUE "FileDescription", "GObject" + VALUE "FileVersion", "2.48.0.0" + VALUE "InternalName", "libgobject-2.0-0" + VALUE "LegalCopyright", "Copyright © 1998-2011 Tim Janik, Red Hat, Inc. and others" + VALUE "OriginalFilename", "libgobject-2.0-0.dll" + VALUE "ProductName", "GLib" + VALUE "ProductVersion", "2.48.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END + END diff --git a/gobject/gobject.stp.in b/gobject/gobject.stp.in deleted file mode 100644 index edcdb50..0000000 --- a/gobject/gobject.stp.in +++ /dev/null @@ -1,199 +0,0 @@ -global gtypes -global gtypenames -global gsignalnames - -/* These are needed to keep track of gtype and signal names for the below - * probes. - */ -probe process("@ABS_GLIB_RUNTIME_LIBDIR@/libgobject-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("type__new") -{ - gtypes[pid(),user_string($arg1)] = $arg3; - gtypenames[pid(),$arg3] = user_string($arg1); -} -probe process("@ABS_GLIB_RUNTIME_LIBDIR@/libgobject-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("signal__new") -{ - gsignalnames[pid(),$arg1] = user_string($arg2); -} - -/** - * probe gobject.type_new - Called when any entity registered with the #GType system is created - * @name: String name of type - * @parent_gtype: The parent #GType of this type - * @gtype: The #GType for this type - */ -probe gobject.type_new = process("@ABS_GLIB_RUNTIME_LIBDIR@/libgobject-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("type__new") -{ - name = user_string($arg1); - parent_gtype = $arg2; - gtype = $arg3; - probestr = sprintf("gobject.type_new(%s, %d) -> %d", name, parent_gtype, gtype); -} - -/** - * probe gobject.object_new - Called when a #GObject is created - * @object: Raw pointer to object - * @gtype: #GType for this object - * @type: String name of object type - */ -probe gobject.object_new = process("@ABS_GLIB_RUNTIME_LIBDIR@/libgobject-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("object__new") -{ - object = $arg1; - gtype = $arg2; - type = gtypenames[pid(),$arg2]; - probestr = sprintf("gobject.object_new(%s) -> %p", type, object); -} - -/** - * probe gobject.object_ref - Called when a new reference is added to a #GObject - * @object: Raw pointer to object - * @gtype: #GType for this object - * @type: String name of object type - * @old_refcount: Original value of the reference count - * @refcount: New value of the reference count - */ -probe gobject.object_ref = process("@ABS_GLIB_RUNTIME_LIBDIR@/libgobject-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("object__ref") -{ - object = $arg1; - gtype = $arg2; - type = gtypenames[pid(),gtype]; - old_refcount = $arg3; - refcount = old_refcount+1; - probestr = sprintf("gobject.object_ref(%p[%s]) -> %d", object, type, refcount); -} - -/** - * probe gobject.object_unref - Called when a reference is removed from a #GObject - * @object: Raw pointer to object - * @gtype: #GType for this object - * @type: String name of object type - * @old_refcount: Original value of the reference count - */ -probe gobject.object_unref = process("@ABS_GLIB_RUNTIME_LIBDIR@/libgobject-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("object__unref") -{ - object = $arg1; - gtype = $arg2; - type = gtypenames[pid(),gtype]; - old_refcount = $arg3; - refcount = old_refcount-1; - probestr = sprintf("gobject.object_unref(%p [%s]) -> %d", object, type, refcount); -} - -/** - * probe gobject.object_dispose - Called when a g_object_dispose() run for a #GObject is initiated - * @object: Raw pointer to object - * @gtype: #GType for this object - * @type: String name of object type - * @last_unref: FIXME - */ -probe gobject.object_dispose = process("@ABS_GLIB_RUNTIME_LIBDIR@/libgobject-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("object__dispose") -{ - object = $arg1; - gtype = $arg2; - type = gtypenames[pid(),$arg2]; - last_unref = $arg3; - probestr = sprintf("gobject.object_dispose(%p[%s])", object, type); -} - -/** - * probe gobject.object_dispose_end - Called when a g_object_dispose() run for a #GObject is completed - * @object: Raw pointer to object - * @gtype: #GType for this object - * @type: String name of object type - * @last_unref: FIXME - */ -probe gobject.object_dispose_end = process("@ABS_GLIB_RUNTIME_LIBDIR@/libgobject-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("object__dispose__end") -{ - object = $arg1; - gtype = $arg2; - type = gtypenames[pid(),$arg2]; - last_unref = $arg3; - probestr = sprintf("gobject.object_dispose_end(%p[%s])", object, type); -} - -/** - * probe gobject.object_finalize - Called when finalization for a #GObject is started - * @object: Raw pointer to object - * @gtype: #GType for this object - * @type: String name of object type - */ -probe gobject.object_finalize = process("@ABS_GLIB_RUNTIME_LIBDIR@/libgobject-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("object__finalize") -{ - object = $arg1; - gtype = $arg2; - type = gtypenames[pid(),$arg2]; - probestr = sprintf("gobject.object_finalize(%p[%s])", object, type); -} - -/** - * probe gobject.object_finalize - Called when finalization for a #GObject is completed - * @object: Raw pointer to object - * @gtype: #GType for this object - * @type: String name of object type - */ -probe gobject.object_finalize_end = process("@ABS_GLIB_RUNTIME_LIBDIR@/libgobject-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("object__finalize__end") -{ - object = $arg1; - gtype = $arg2; - type = gtypenames[pid(),$arg2]; - probestr = sprintf("gobject.object_finalize_end(%p[%s])", object, type); -} - -/** - * probe gobject.signal_new - Called when a new signal is registered for a #GObject - * @gsignal: Integer value for this signal - * @name: String name for this signal - * @gtype: #GType for the type which will gain the new signal - * @type: String name of the type which will gain the new signal - */ -probe gobject.signal_new = process("@ABS_GLIB_RUNTIME_LIBDIR@/libgobject-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("signal__new") -{ - gsignal = $arg1; - name = user_string($arg2); - gtype = $arg3; - type = gtypenames[pid(),$arg3]; - probestr = sprintf("gobject.signal_new(%s, %s) -> %d", name, type, gsignal); -} - -/** - * probe gobject.signal_emit - Called when a signal emission for a #GObject is started - * @gsignal: Integer value for this signal - * @detail: String containing signal "detail" - * @signal: String name of the signal - * @object: Raw pointer for object emitting signal - * @gtype: #GType for the type emitting the signal - * @type: String name of the type emitting the signal - */ -probe gobject.signal_emit = process("@ABS_GLIB_RUNTIME_LIBDIR@/libgobject-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("signal__emit") -{ - gsignal = $arg1; - detail = $arg2; - signal = gsignalnames[pid(),$arg1]; - if (detail != 0) - signal = signal . "::" . gquarks[pid(), detail] - object = $arg3; - gtype = $arg4; - type = gtypenames[pid(),$arg4]; - probestr = sprintf("gobject.signal_emit(%p[%s], %s)", object, type, signal); -} - -/** - * probe gobject.signal_emit_end - Called when a signal emission for a #GObject is completed - * @gsignal: Integer value for this signal - * @detail: String containing signal "detail" - * @signal: String name of the signal - * @object: Raw pointer for object emitting signal - * @gtype: #GType for the type emitting the signal - * @type: String name of the type emitting the signal - */ -probe gobject.signal_emit_end = process("@ABS_GLIB_RUNTIME_LIBDIR@/libgobject-2.0.so.0.@LT_CURRENT@.@LT_REVISION@").mark("signal__emit__end") -{ - gsignal = $arg1; - detail = $arg2; - signal = gsignalnames[pid(),$arg1]; - if (detail != 0) - signal = signal . "::" . gquarks[pid(), detail] - object = $arg3; - gtype = $arg4; - type = gtypenames[pid(),$arg4]; - probestr = sprintf("gobject.signal_emit_end(%p[%s], %s)", object, type, signal); -} diff --git a/gobject/gparam.c b/gobject/gparam.c index 677f16c..46c359b 100644 --- a/gobject/gparam.c +++ b/gobject/gparam.c @@ -81,6 +81,7 @@ static gchar* value_param_lcopy_value (const GValue *value, typedef struct { GValue default_value; + GQuark name_quark; } GParamSpecPrivate; static gint g_param_private_offset; @@ -416,7 +417,7 @@ is_canonical (const gchar *key) * @blurb, which should be a somewhat longer description, suitable for * e.g. a tooltip. The @nick and @blurb should ideally be localized. * - * Returns: a newly allocated #GParamSpec instance + * Returns: (type GObject.ParamSpec): a newly allocated #GParamSpec instance */ gpointer g_param_spec_internal (GType param_type, @@ -426,6 +427,7 @@ g_param_spec_internal (GType param_type, GParamFlags flags) { GParamSpec *pspec; + GParamSpecPrivate *priv; g_return_val_if_fail (G_TYPE_IS_PARAM (param_type) && param_type != G_TYPE_PARAM, NULL); g_return_val_if_fail (name != NULL, NULL); @@ -454,6 +456,9 @@ g_param_spec_internal (GType param_type, } } + priv = g_param_spec_get_private (pspec); + priv->name_quark = g_quark_from_string (pspec->name); + if (flags & G_PARAM_STATIC_NICK) pspec->_nick = (gchar*) nick; else @@ -579,14 +584,10 @@ g_param_spec_steal_qdata (GParamSpec *pspec, GParamSpec* g_param_spec_get_redirect_target (GParamSpec *pspec) { - g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), NULL); + GTypeInstance *inst = (GTypeInstance *)pspec; - if (G_IS_PARAM_SPEC_OVERRIDE (pspec)) - { - GParamSpecOverride *ospec = G_PARAM_SPEC_OVERRIDE (pspec); - - return ospec->overridden; - } + if (inst && inst->g_class && inst->g_class->g_type == G_TYPE_PARAM_OVERRIDE) + return ((GParamSpecOverride*)pspec)->overridden; else return NULL; } @@ -1524,11 +1525,11 @@ g_value_dup_param (const GValue *value) /** * g_param_spec_get_default_value: - * @param: a #GParamSpec + * @pspec: a #GParamSpec * - * Gets the default value of @param as a pointer to a #GValue. + * Gets the default value of @pspec as a pointer to a #GValue. * - * The #GValue will remain value for the life of @param. + * The #GValue will remain value for the life of @pspec. * * Returns: a pointer to a #GValue which must not be modified * @@ -1568,3 +1569,26 @@ g_param_spec_get_default_value (GParamSpec *pspec) return &priv->default_value; } + +/** + * g_param_spec_get_name_quark: + * @pspec: a #GParamSpec + * + * Gets the GQuark for the name. + * + * Returns: the GQuark for @pspec->name. + * + * Since: 2.46 + */ +GQuark +g_param_spec_get_name_quark (GParamSpec *pspec) +{ + GParamSpecPrivate *priv = g_param_spec_get_private (pspec); + + /* Return the quark that we've stashed away at creation time. + * This lets us avoid a lock and a hash table lookup when + * dispatching property change notification. + */ + + return priv->name_quark; +} diff --git a/gobject/gparam.h b/gobject/gparam.h index 88b18fd..c473a52 100644 --- a/gobject/gparam.h +++ b/gobject/gparam.h @@ -195,7 +195,7 @@ typedef struct _GParamSpecClass GParamSpecClass; typedef struct _GParameter GParameter; typedef struct _GParamSpecPool GParamSpecPool; /** - * GParamSpec: + * GParamSpec: (ref-func g_param_spec_ref_sink) (unref-func g_param_spec_uref) (set-value-func g_value_set_param) (get-value-func g_value_get_param) * @g_type_instance: private #GTypeInstance portion * @name: name of this parameter: always an interned string * @flags: #GParamFlags flags for this parameter @@ -341,7 +341,10 @@ 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); +const GValue * g_param_spec_get_default_value (GParamSpec *pspec); + +GLIB_AVAILABLE_IN_2_46 +GQuark g_param_spec_get_name_quark (GParamSpec *pspec); /* --- convenience functions --- */ typedef struct _GParamSpecTypeInfo GParamSpecTypeInfo; diff --git a/gobject/gparamspecs.c b/gobject/gparamspecs.c index b299b2a..16c1f55 100644 --- a/gobject/gparamspecs.c +++ b/gobject/gparamspecs.c @@ -1174,7 +1174,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_CHAR */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecChar), /* instance_size */ 16, /* n_preallocs */ param_char_init, /* instance_init */ @@ -1192,7 +1192,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_UCHAR */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecUChar), /* instance_size */ 16, /* n_preallocs */ param_uchar_init, /* instance_init */ @@ -1210,7 +1210,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_BOOLEAN */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecBoolean), /* instance_size */ 16, /* n_preallocs */ NULL, /* instance_init */ @@ -1228,7 +1228,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_INT */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecInt), /* instance_size */ 16, /* n_preallocs */ param_int_init, /* instance_init */ @@ -1246,7 +1246,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_UINT */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecUInt), /* instance_size */ 16, /* n_preallocs */ param_uint_init, /* instance_init */ @@ -1264,7 +1264,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_LONG */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecLong), /* instance_size */ 16, /* n_preallocs */ param_long_init, /* instance_init */ @@ -1282,7 +1282,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_ULONG */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecULong), /* instance_size */ 16, /* n_preallocs */ param_ulong_init, /* instance_init */ @@ -1300,7 +1300,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_INT64 */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecInt64), /* instance_size */ 16, /* n_preallocs */ param_int64_init, /* instance_init */ @@ -1318,7 +1318,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_UINT64 */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecUInt64), /* instance_size */ 16, /* n_preallocs */ param_uint64_init, /* instance_init */ @@ -1336,7 +1336,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_UNICHAR */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecUnichar), /* instance_size */ 16, /* n_preallocs */ param_unichar_init, /* instance_init */ @@ -1354,7 +1354,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_ENUM */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecEnum), /* instance_size */ 16, /* n_preallocs */ param_enum_init, /* instance_init */ @@ -1372,7 +1372,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_FLAGS */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecFlags), /* instance_size */ 16, /* n_preallocs */ param_flags_init, /* instance_init */ @@ -1390,7 +1390,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_FLOAT */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecFloat), /* instance_size */ 16, /* n_preallocs */ param_float_init, /* instance_init */ @@ -1408,7 +1408,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_DOUBLE */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecDouble), /* instance_size */ 16, /* n_preallocs */ param_double_init, /* instance_init */ @@ -1426,7 +1426,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_STRING */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecString), /* instance_size */ 16, /* n_preallocs */ param_string_init, /* instance_init */ @@ -1444,7 +1444,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_PARAM */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecParam), /* instance_size */ 16, /* n_preallocs */ param_param_init, /* instance_init */ @@ -1462,7 +1462,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_BOXED */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecBoxed), /* instance_size */ 4, /* n_preallocs */ param_boxed_init, /* instance_init */ @@ -1480,7 +1480,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_POINTER */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecPointer), /* instance_size */ 0, /* n_preallocs */ param_pointer_init, /* instance_init */ @@ -1498,7 +1498,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_VALUE_ARRAY */ { - static /* const */ GParamSpecTypeInfo pspec_info = { + /* const */ GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecValueArray), /* instance_size */ 0, /* n_preallocs */ param_value_array_init, /* instance_init */ @@ -1517,7 +1517,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_OBJECT */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecObject), /* instance_size */ 16, /* n_preallocs */ param_object_init, /* instance_init */ @@ -1535,7 +1535,7 @@ _g_param_spec_types_init (void) /* G_TYPE_PARAM_OVERRIDE */ { - static const GParamSpecTypeInfo pspec_info = { + const GParamSpecTypeInfo pspec_info = { sizeof (GParamSpecOverride), /* instance_size */ 16, /* n_preallocs */ param_override_init, /* instance_init */ @@ -2212,7 +2212,7 @@ g_param_spec_double (const gchar *name, * @name: canonical name of the property specified * @nick: nick name for the property specified * @blurb: description of the property specified - * @default_value: default value for the property specified + * @default_value: (nullable): default value for the property specified * @flags: flags for the property specified * * Creates a new #GParamSpecString instance. diff --git a/gobject/gsignal.c b/gobject/gsignal.c index e02a700..03fe09f 100644 --- a/gobject/gsignal.c +++ b/gobject/gsignal.c @@ -97,6 +97,32 @@ * Specification of no detail argument for signal handlers (omission of the * detail part of the signal specification upon connection) serves as a * wildcard and matches any detail argument passed in to emission. + * + * ## Memory management of signal handlers # {#signal-memory-management} + * + * If you are connecting handlers to signals and using a #GObject instance as + * your signal handler user data, you should remember to pair calls to + * g_signal_connect() with calls to g_signal_handler_disconnect() or + * g_signal_handlers_disconnect_by_func(). While signal handlers are + * automatically disconnected when the object emitting the signal is finalised, + * they are not automatically disconnected when the signal handler user data is + * destroyed. If this user data is a #GObject instance, using it from a + * signal handler after it has been finalised is an error. + * + * There are two strategies for managing such user data. The first is to + * disconnect the signal handler (using g_signal_handler_disconnect() or + * g_signal_handlers_disconnect_by_func()) when the user data (object) is + * finalised; this has to be implemented manually. For non-threaded programs, + * g_signal_connect_object() can be used to implement this automatically. + * Currently, however, it is unsafe to use in threaded programs. + * + * The second is to hold a strong reference on the user data until after the + * signal is disconnected for other reasons. This can be implemented + * automatically using g_signal_connect_data(). + * + * The first approach is recommended, as the second approach can result in + * effective memory leaks of the user data if the signal handler is never + * disconnected for some reason. */ @@ -126,7 +152,9 @@ static inline HandlerList* handler_list_ensure (guint signal_id, gpointer instance); static inline HandlerList* handler_list_lookup (guint signal_id, gpointer instance); -static inline Handler* handler_new (gboolean after); +static inline Handler* handler_new (guint signal_id, + gpointer instance, + gboolean after); static void handler_insert (guint signal_id, gpointer instance, Handler *handler); @@ -247,12 +275,14 @@ struct _Handler Handler *next; Handler *prev; GQuark detail; + guint signal_id; guint ref_count; guint block_count : 16; #define HANDLER_MAX_BLOCK_COUNT (1 << 16) guint after : 1; guint has_invalid_closure_notify : 1; GClosure *closure; + gpointer instance; }; struct _HandlerMatch { @@ -288,6 +318,8 @@ static GBSearchConfig g_class_closure_bconfig = { static GHashTable *g_handler_list_bsa_ht = NULL; static Emission *g_emissions = NULL; static gulong g_handler_sequential_number = 1; +static GHashTable *g_handlers = NULL; + G_LOCK_DEFINE_STATIC (g_signal_mutex); #define SIGNAL_LOCK() G_LOCK (g_signal_mutex) #define SIGNAL_UNLOCK() G_UNLOCK (g_signal_mutex) @@ -411,13 +443,39 @@ handler_list_lookup (guint signal_id, return hlbsa ? g_bsearch_array_lookup (hlbsa, &g_signal_hlbsa_bconfig, &key) : NULL; } +static guint +handler_hash (gconstpointer key) +{ + return (guint)((Handler*)key)->sequential_number; +} + +static gboolean +handler_equal (gconstpointer a, gconstpointer b) +{ + Handler *ha = (Handler *)a; + Handler *hb = (Handler *)b; + return (ha->sequential_number == hb->sequential_number) && + (ha->instance == hb->instance); +} + static Handler* handler_lookup (gpointer instance, gulong handler_id, GClosure *closure, guint *signal_id_p) { - GBSearchArray *hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance); + GBSearchArray *hlbsa; + + if (handler_id) + { + Handler key; + key.sequential_number = handler_id; + key.instance = instance; + return g_hash_table_lookup (g_handlers, &key); + + } + + hlbsa = g_hash_table_lookup (g_handler_list_bsa_ht, instance); if (hlbsa) { @@ -433,7 +491,7 @@ handler_lookup (gpointer instance, { if (signal_id_p) *signal_id_p = hlist->signal_id; - + return handler; } } @@ -554,7 +612,7 @@ handlers_find (gpointer instance, } static inline Handler* -handler_new (gboolean after) +handler_new (guint signal_id, gpointer instance, gboolean after) { Handler *handler = g_slice_new (Handler); #ifndef G_DISABLE_CHECKS @@ -566,11 +624,15 @@ handler_new (gboolean after) handler->prev = NULL; handler->next = NULL; handler->detail = 0; + handler->signal_id = signal_id; + handler->instance = instance; handler->ref_count = 1; handler->block_count = 0; handler->after = after != FALSE; handler->closure = NULL; handler->has_invalid_closure_notify = 0; + + g_hash_table_add (g_handlers, handler); return handler; } @@ -603,6 +665,7 @@ handler_unref_R (guint signal_id, else { hlist = handler_list_lookup (signal_id, instance); + g_assert (hlist != NULL); hlist->handlers = handler->next; } @@ -803,6 +866,7 @@ _g_signal_init (void) g_n_signal_nodes = 1; g_signal_nodes = g_renew (SignalNode*, g_signal_nodes, g_n_signal_nodes); g_signal_nodes[0] = NULL; + g_handlers = g_hash_table_new (handler_hash, handler_equal); } SIGNAL_UNLOCK (); } @@ -1201,7 +1265,7 @@ g_signal_lookup (const gchar *name, * created. Further information about the signals can be acquired through * g_signal_query(). * - * Returns: (array length=n_ids): Newly allocated array of signal IDs. + * Returns: (array length=n_ids) (transfer full): Newly allocated array of signal IDs. */ guint* g_signal_list_ids (GType itype, @@ -1462,7 +1526,14 @@ signal_find_class_closure (SignalNode *node, ClassClosure key; /* cc->instance_type is 0 for default closure */ - + + if (g_bsearch_array_get_n_nodes (bsa) == 1) + { + cc = g_bsearch_array_get_nth (bsa, &g_class_closure_bconfig, 0); + if (cc && cc->instance_type == 0) /* check for default closure */ + return cc; + } + key.instance_type = itype; cc = g_bsearch_array_lookup (bsa, &g_class_closure_bconfig, &key); while (!cc && key.instance_type) @@ -1482,12 +1553,6 @@ signal_lookup_closure (SignalNode *node, { ClassClosure *cc; - if (node->class_closure_bsa && g_bsearch_array_get_n_nodes (node->class_closure_bsa) == 1) - { - cc = g_bsearch_array_get_nth (node->class_closure_bsa, &g_class_closure_bconfig, 0); - if (cc && cc->instance_type == 0) /* check for default closure */ - return cc->closure; - } cc = signal_find_class_closure (node, G_TYPE_FROM_INSTANCE (instance)); return cc ? cc->closure : NULL; } @@ -2047,7 +2112,8 @@ g_signal_chain_from_overridden (const GValue *instance_and_params, /** * g_signal_chain_from_overridden_handler: (skip) - * @instance: the instance the signal is being emitted on. + * @instance: (type GObject.TypeInstance): the instance the signal is being + * emitted on. * @...: parameters to be passed to the parent class closure, followed by a * location for the return value. If the return type of the signal * is #G_TYPE_NONE, the return value location can be omitted. @@ -2266,7 +2332,7 @@ g_signal_connect_closure_by_id (gpointer instance, g_warning ("%s: signal id '%u' is invalid for instance '%p'", G_STRLOC, signal_id, instance); else { - Handler *handler = handler_new (after); + Handler *handler = handler_new (signal_id, instance, after); handler_seq_no = handler->sequential_number; handler->detail = detail; @@ -2330,7 +2396,7 @@ g_signal_connect_closure (gpointer instance, G_STRLOC, detailed_signal, instance, g_type_name (itype)); else { - Handler *handler = handler_new (after); + Handler *handler = handler_new (signal_id, instance, after); handler_seq_no = handler->sequential_number; handler->detail = detail; @@ -2431,7 +2497,7 @@ g_signal_connect_data (gpointer instance, G_STRLOC, detailed_signal, instance, g_type_name (itype)); else { - Handler *handler = handler_new (after); + Handler *handler = handler_new (signal_id, instance, after); handler_seq_no = handler->sequential_number; handler->detail = detail; @@ -2551,19 +2617,19 @@ g_signal_handler_disconnect (gpointer instance, gulong handler_id) { Handler *handler; - guint signal_id; g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance)); g_return_if_fail (handler_id > 0); SIGNAL_LOCK (); - handler = handler_lookup (instance, handler_id, NULL, &signal_id); + handler = handler_lookup (instance, handler_id, 0, 0); if (handler) { + g_hash_table_remove (g_handlers, handler); handler->sequential_number = 0; handler->block_count = 1; remove_invalid_closure_notify (handler, instance); - handler_unref_R (signal_id, instance, handler); + handler_unref_R (handler->signal_id, instance, handler); } else g_warning ("%s: instance '%p' has no handler with id '%lu'", G_STRLOC, instance, handler_id); @@ -2636,6 +2702,7 @@ g_signal_handlers_destroy (gpointer instance) tmp->prev = tmp; if (tmp->sequential_number) { + g_hash_table_remove (g_handlers, tmp); remove_invalid_closure_notify (tmp, instance); tmp->sequential_number = 0; handler_unref_R (0, NULL, tmp); @@ -2886,6 +2953,9 @@ g_signal_handlers_disconnect_matched (gpointer instance, * consistent with how a signal emitted with @detail would be delivered * to those handlers. * + * Since 2.46 this also checks for a non-default class closure being + * installed, as this is basically always what you want. + * * One example of when you might use this is when the arguments to the * signal are difficult to compute. A class implementor may opt to not * emit the signal if no one is attached anyway, thus saving the cost @@ -2902,15 +2972,16 @@ g_signal_has_handler_pending (gpointer instance, { HandlerMatch *mlist; gboolean has_pending; + SignalNode *node; g_return_val_if_fail (G_TYPE_CHECK_INSTANCE (instance), FALSE); g_return_val_if_fail (signal_id > 0, FALSE); SIGNAL_LOCK (); + + node = LOOKUP_SIGNAL_NODE (signal_id); if (detail) { - SignalNode *node = LOOKUP_SIGNAL_NODE (signal_id); - if (!(node->flags & G_SIGNAL_DETAILED)) { g_warning ("%s: signal id '%u' does not support detail (%u)", G_STRLOC, signal_id, detail); @@ -2927,9 +2998,15 @@ g_signal_has_handler_pending (gpointer instance, handler_match_free1_R (mlist, instance); } else - has_pending = FALSE; + { + ClassClosure *class_closure = signal_find_class_closure (node, G_TYPE_FROM_INSTANCE (instance)); + if (class_closure != NULL && class_closure->instance_type != 0) + has_pending = TRUE; + else + has_pending = FALSE; + } SIGNAL_UNLOCK (); - + return has_pending; } @@ -2940,7 +3017,9 @@ g_signal_has_handler_pending (gpointer instance, * is being emitted on. The rest are any arguments to be passed to the signal. * @signal_id: the signal id * @detail: the detail - * @return_value: Location to store the return value of the signal emission. + * @return_value: (inout) (optional): Location to + * store the return value of the signal emission. This must be provided if the + * specified signal returns a value, but may be ignored otherwise. * * Emits a signal. * @@ -3063,7 +3142,8 @@ accumulate (GSignalInvocationHint *ihint, /** * g_signal_emit_valist: (skip) - * @instance: the instance the signal is being emitted on. + * @instance: (type GObject.TypeInstance): the instance the signal is being + * emitted on. * @signal_id: the signal id * @detail: the detail * @var_args: a list of parameters to be passed to the signal, followed by a diff --git a/gobject/gsignal.h b/gobject/gsignal.h index c0b0681..c934b42 100644 --- a/gobject/gsignal.h +++ b/gobject/gsignal.h @@ -465,6 +465,9 @@ void g_signal_chain_from_overridden_handler (gpointer instance, * Connects a #GCallback function to a signal for a particular object. * * The handler will be called before the default handler of the signal. + * + * See [memory management of signal handlers][signal-memory-management] for + * details on how to handle the return value and memory management of @data. * * Returns: the handler id (always greater than 0 for successful connections) */ diff --git a/gobject/gsourceclosure.c b/gobject/gsourceclosure.c index b74bdb6..910b6b2 100644 --- a/gobject/gsourceclosure.c +++ b/gobject/gsourceclosure.c @@ -32,8 +32,9 @@ G_DEFINE_BOXED_TYPE (GIOChannel, g_io_channel, g_io_channel_ref, g_io_channel_un GType g_io_condition_get_type (void) { - static GType etype = 0; - if (etype == 0) + static volatile GType etype = 0; + + if (g_once_init_enter (&etype)) { static const GFlagsValue values[] = { { G_IO_IN, "G_IO_IN", "in" }, @@ -44,7 +45,8 @@ g_io_condition_get_type (void) { G_IO_NVAL, "G_IO_NVAL", "nval" }, { 0, NULL, NULL } }; - etype = g_flags_register_static ("GIOCondition", values); + GType type_id = g_flags_register_static ("GIOCondition", values); + g_once_init_leave (&etype, type_id); } return etype; } diff --git a/gobject/gtype.c b/gobject/gtype.c index dc58524..eb416ab 100644 --- a/gobject/gtype.c +++ b/gobject/gtype.c @@ -31,8 +31,13 @@ #include "gatomicarray.h" #include "gobject_trace.h" +#include "glib-private.h" #include "gconstructor.h" +#ifdef G_OS_WIN32 +#include +#endif + #ifdef G_ENABLE_DEBUG #define IF_DEBUG(debug_type) if (_g_type_debug_flags & G_TYPE_DEBUG_ ## debug_type) #endif @@ -76,10 +81,10 @@ * separately (typically by using #GArray or #GPtrArray) and put a pointer * to the buffer in the structure. * - * A final word about type names: Such an identifier needs to be at least - * three characters long. There is no upper length limit. The first character - * needs to be a letter (a-z or A-Z) or an underscore '_'. Subsequent - * characters can be letters, numbers or any of '-_+'. + * As mentioned in the [GType conventions][gtype-conventions], type names must + * be at least three characters long. There is no upper length limit. The first + * character must be a letter (a–z or A–Z) or an underscore (‘_’). Subsequent + * characters can be letters, numbers or any of ‘-_+’. */ @@ -250,7 +255,7 @@ struct _TypeNode #define SIZEOF_BASE_TYPE_NODE() (G_STRUCT_OFFSET (TypeNode, supers)) #define MAX_N_SUPERS (255) -#define MAX_N_CHILDREN (4095) +#define MAX_N_CHILDREN (G_MAXUINT) #define MAX_N_INTERFACES (255) /* Limited by offsets being 8 bits */ #define MAX_N_PREREQUISITES (511) #define NODE_TYPE(node) (node->supers[0]) @@ -4359,23 +4364,19 @@ g_type_init (void) g_assert_type_system_initialized (); } -#if defined (G_HAS_CONSTRUCTORS) -#ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA -#pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(gobject_init_ctor) -#endif -G_DEFINE_CONSTRUCTOR(gobject_init_ctor) -#else -# error Your platform/compiler is missing constructor support -#endif - static void -gobject_init_ctor (void) +gobject_init (void) { const gchar *env_string; GTypeInfo info; TypeNode *node; GType type; + /* Ensure GLib is initialized first, see + * https://bugzilla.gnome.org/show_bug.cgi?id=756139 + */ + GLIB_PRIVATE_CALL (glib_init) (); + G_WRITE_LOCK (&type_rw_lock); /* setup GObject library wide debugging flags */ @@ -4390,25 +4391,25 @@ gobject_init_ctor (void) _g_type_debug_flags = g_parse_debug_string (env_string, debug_keys, G_N_ELEMENTS (debug_keys)); } - + /* quarks */ static_quark_type_flags = g_quark_from_static_string ("-g-type-private--GTypeFlags"); static_quark_iface_holder = g_quark_from_static_string ("-g-type-private--IFaceHolder"); static_quark_dependants_array = g_quark_from_static_string ("-g-type-private--dependants-array"); - + /* type qname hash table */ static_type_nodes_ht = g_hash_table_new (g_str_hash, g_str_equal); - + /* invalid type G_TYPE_INVALID (0) */ static_fundamental_type_nodes[0] = NULL; - + /* void type G_TYPE_NONE */ node = type_node_fundamental_new_W (G_TYPE_NONE, g_intern_static_string ("void"), 0); type = NODE_TYPE (node); g_assert (type == G_TYPE_NONE); - + /* interface fundamental type G_TYPE_INTERFACE (!classed) */ memset (&info, 0, sizeof (info)); @@ -4416,51 +4417,93 @@ gobject_init_ctor (void) type = NODE_TYPE (node); type_data_make_W (node, &info, NULL); g_assert (type == G_TYPE_INTERFACE); - + G_WRITE_UNLOCK (&type_rw_lock); - + _g_value_c_init (); /* G_TYPE_TYPE_PLUGIN */ g_type_ensure (g_type_plugin_get_type ()); - + /* G_TYPE_* value types */ _g_value_types_init (); - + /* G_TYPE_ENUM & G_TYPE_FLAGS */ _g_enum_types_init (); - + /* G_TYPE_BOXED */ _g_boxed_type_init (); - + /* G_TYPE_PARAM */ _g_param_type_init (); - + /* G_TYPE_OBJECT */ _g_object_type_init (); - + /* G_TYPE_PARAM_* pspec types */ _g_param_spec_types_init (); - + /* Value Transformations */ _g_value_transforms_init (); - + /* Signal system */ _g_signal_init (); } +#if defined (G_OS_WIN32) + +BOOL WINAPI DllMain (HINSTANCE hinstDLL, + DWORD fdwReason, + LPVOID lpvReserved); + +BOOL WINAPI +DllMain (HINSTANCE hinstDLL, + DWORD fdwReason, + LPVOID lpvReserved) +{ + switch (fdwReason) + { + case DLL_PROCESS_ATTACH: + gobject_init (); + break; + + default: + /* do nothing */ + ; + } + + return TRUE; +} + +#elif defined (G_HAS_CONSTRUCTORS) +#ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA +#pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(gobject_init_ctor) +#endif +G_DEFINE_CONSTRUCTOR(gobject_init_ctor) + +static void +gobject_init_ctor (void) +{ + gobject_init (); +} + +#else +# error Your platform/compiler is missing constructor support +#endif + /** * g_type_class_add_private: - * @g_class: class structure for an instantiatable type + * @g_class: (type GObject.TypeClass): class structure for an instantiatable + * type * @private_size: size of private structure * * Registers a private structure for an instantiatable type. @@ -4692,7 +4735,7 @@ g_type_instance_get_private (GTypeInstance *instance, /** * g_type_class_get_instance_private_offset: (skip) - * @g_class: a #GTypeClass + * @g_class: (type GObject.TypeClass): a #GTypeClass * * Gets the offset of the private data for instances of @g_class. * diff --git a/gobject/gtype.h b/gobject/gtype.h index 68bc051..b564bbb 100644 --- a/gobject/gtype.h +++ b/gobject/gtype.h @@ -629,7 +629,7 @@ struct _GTypeQuery * This macro should only be used in type implementations. * * Since: 2.4 - * Returns: a pointer to the private data structure + * Returns: (not nullable): 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))) @@ -646,7 +646,7 @@ struct _GTypeQuery * This macro should only be used in type implementations. * * Since: 2.24 - * Returns: a pointer to the private data structure + * Returns: (not nullable): 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))) @@ -746,7 +746,7 @@ int g_type_get_instance_count (GType type); /* --- type registration --- */ /** * GBaseInitFunc: - * @g_class: The #GTypeClass structure to initialize + * @g_class: (type GObject.TypeClass): 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 @@ -755,23 +755,23 @@ int g_type_get_instance_count (GType type); * 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. + * initialization process. */ typedef void (*GBaseInitFunc) (gpointer g_class); /** * GBaseFinalizeFunc: - * @g_class: The #GTypeClass structure to finalize + * @g_class: (type GObject.TypeClass): 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. + * way in which class initialization is performed. + * See GClassInitFunc() for a discussion of the class initialization process. */ typedef void (*GBaseFinalizeFunc) (gpointer g_class); /** * GClassInitFunc: - * @g_class: The #GTypeClass structure to initialize. + * @g_class: (type GObject.TypeClass): 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 @@ -874,7 +874,7 @@ typedef void (*GClassInitFunc) (gpointer g_class, gpointer class_data); /** * GClassFinalizeFunc: - * @g_class: The #GTypeClass structure to finalize + * @g_class: (type GObject.TypeClass): 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. @@ -890,7 +890,8 @@ typedef void (*GClassFinalizeFunc) (gpointer g_class, /** * GInstanceInitFunc: * @instance: The instance to initialize - * @g_class: The class of the type the instance is created for + * @g_class: (type GObject.TypeClass): 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 @@ -908,7 +909,7 @@ typedef void (*GInstanceInitFunc) (GTypeInstance *instance, gpointer g_class); /** * GInterfaceInitFunc: - * @g_iface: The interface structure to initialize + * @g_iface: (type GObject.TypeInterface): 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 @@ -922,7 +923,7 @@ typedef void (*GInterfaceInitFunc) (gpointer g_iface, gpointer iface_data); /** * GInterfaceFinalizeFunc: - * @g_iface: The interface structure to finalize + * @g_iface: (type GObject.TypeInterface): 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. @@ -934,7 +935,8 @@ typedef void (*GInterfaceFinalizeFunc) (gpointer g_iface, /** * GTypeClassCacheFunc: * @cache_data: data that was given to the g_type_add_class_cache_func() call - * @g_class: The #GTypeClass structure which is unreferenced + * @g_class: (type GObject.TypeClass): 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 @@ -954,7 +956,8 @@ typedef gboolean (*GTypeClassCacheFunc) (gpointer cache_data, /** * GTypeInterfaceCheckFunc: * @check_data: data passed to g_type_add_interface_check() - * @g_iface: the interface that has been initialized + * @g_iface: (type GObject.TypeInterface): the interface that has been + * initialized * * A callback called after an interface vtable is initialized. * See g_type_add_interface_check(). @@ -1392,9 +1395,9 @@ guint g_type_get_type_registration_serial (void); \ _GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, ParentName) \ \ - static inline ModuleObjName * MODULE##_##OBJ_NAME (gconstpointer ptr) { \ + static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \ return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); } \ - static inline gboolean MODULE##_IS_##OBJ_NAME (gconstpointer ptr) { \ + static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \ return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); } \ G_GNUC_END_IGNORE_DEPRECATIONS @@ -1483,15 +1486,15 @@ guint g_type_get_type_registration_serial (void); \ _GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, ParentName) \ \ - static inline ModuleObjName * MODULE##_##OBJ_NAME (gconstpointer ptr) { \ + static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \ return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); } \ - static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gconstpointer ptr) { \ + static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_CLASS (gpointer ptr) { \ return G_TYPE_CHECK_CLASS_CAST (ptr, module_obj_name##_get_type (), ModuleObjName##Class); } \ - static inline gboolean MODULE##_IS_##OBJ_NAME (gconstpointer ptr) { \ + static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \ return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); } \ - static inline gboolean MODULE##_IS_##OBJ_NAME##_CLASS (gconstpointer ptr) { \ + static inline gboolean MODULE##_IS_##OBJ_NAME##_CLASS (gpointer ptr) { \ return G_TYPE_CHECK_CLASS_TYPE (ptr, module_obj_name##_get_type ()); } \ - static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_GET_CLASS (gconstpointer ptr) { \ + static inline ModuleObjName##Class * MODULE##_##OBJ_NAME##_GET_CLASS (gpointer ptr) { \ return G_TYPE_INSTANCE_GET_CLASS (ptr, module_obj_name##_get_type (), ModuleObjName##Class); } \ G_GNUC_END_IGNORE_DEPRECATIONS @@ -1561,11 +1564,11 @@ guint g_type_get_type_registration_serial (void); \ _GLIB_DEFINE_AUTOPTR_CHAINUP (ModuleObjName, PrerequisiteName) \ \ - static inline ModuleObjName * MODULE##_##OBJ_NAME (gconstpointer ptr) { \ + static inline ModuleObjName * MODULE##_##OBJ_NAME (gpointer ptr) { \ return G_TYPE_CHECK_INSTANCE_CAST (ptr, module_obj_name##_get_type (), ModuleObjName); } \ - static inline gboolean MODULE##_IS_##OBJ_NAME (gconstpointer ptr) { \ + static inline gboolean MODULE##_IS_##OBJ_NAME (gpointer ptr) { \ return G_TYPE_CHECK_INSTANCE_TYPE (ptr, module_obj_name##_get_type ()); } \ - static inline ModuleObjName##Interface * MODULE##_##OBJ_NAME##_GET_IFACE (gconstpointer ptr) { \ + static inline ModuleObjName##Interface * MODULE##_##OBJ_NAME##_GET_IFACE (gpointer ptr) { \ return G_TYPE_INSTANCE_GET_INTERFACE (ptr, module_obj_name##_get_type (), ModuleObjName##Interface); } \ G_GNUC_END_IGNORE_DEPRECATIONS @@ -1823,6 +1826,8 @@ guint g_type_get_type_registration_serial (void); * { * MyObjectPrivate *priv = my_object_get_instance_private (obj); * + * g_return_val_if_fail (MY_IS_OBJECT (obj), 0); + * * return priv->foo; * } * @@ -1832,6 +1837,8 @@ guint g_type_get_type_registration_serial (void); * { * MyObjectPrivate *priv = my_object_get_instance_private (obj); * + * g_return_if_fail (MY_IS_OBJECT (obj)); + * * if (priv->bar != bar) * priv->bar = bar; * } @@ -1843,6 +1850,10 @@ guint g_type_get_type_registration_serial (void); * Also note that private structs added with these macros must have a struct * name of the form `TypeNamePrivate`. * + * It is safe to call _get_instance_private on %NULL or invalid object since + * it's only adding an offset to the instance pointer. In that case the returned + * pointer must not be dereferenced. + * * Since: 2.38 */ #define G_ADD_PRIVATE(TypeName) { \ @@ -1938,7 +1949,7 @@ _G_DEFINE_TYPE_EXTENDED_CLASS_INIT(TypeName, type_name) \ \ G_GNUC_UNUSED \ static inline gpointer \ -type_name##_get_instance_private (const TypeName *self) \ +type_name##_get_instance_private (TypeName *self) \ { \ return (G_STRUCT_MEMBER_P (self, TypeName##_private_offset)); \ } \ @@ -2021,7 +2032,17 @@ type_name##_get_type (void) \ * 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(). + * g_value_register_transform_func(), for instance: + * + * |[ + * G_DEFINE_BOXED_TYPE_WITH_CODE (GdkRectangle, gdk_rectangle, + * gdk_rectangle_copy, + * gdk_rectangle_free, + * register_rectangle_transform_funcs (g_define_type_id)) + * ]| + * + * Similarly to the %G_DEFINE_TYPE family of macros, the #GType of the newly + * defined boxed type is exposed in the `g_define_type_id` variable. * * Since: 2.26 */ diff --git a/gobject/gtypemodule.h b/gobject/gtypemodule.h index 9c63bac..3ef0e84 100644 --- a/gobject/gtypemodule.h +++ b/gobject/gtypemodule.h @@ -182,6 +182,7 @@ static gint TypeName##_private_offset; \ \ _G_DEFINE_TYPE_EXTENDED_CLASS_INIT(TypeName, type_name) \ \ +G_GNUC_UNUSED \ static inline gpointer \ type_name##_get_instance_private (TypeName *self) \ { \ diff --git a/gobject/gvalue.c b/gobject/gvalue.c index 5277b77..7276cc1 100644 --- a/gobject/gvalue.c +++ b/gobject/gvalue.c @@ -254,16 +254,19 @@ g_value_reset (GValue *value) * g_value_unset: * @value: An initialized #GValue structure. * - * Clears the current value in @value and "unsets" the type, - * this releases all resources associated with this GValue. - * An unset value is the same as an uninitialized (zero-filled) - * #GValue structure. + * Clears the current value in @value (if any) and "unsets" the type, + * this releases all resources associated with this GValue. An unset + * value is the same as an uninitialized (zero-filled) #GValue + * structure. */ void g_value_unset (GValue *value) { GTypeValueTable *value_table; + if (value->g_type == 0) + return; + g_return_if_fail (G_IS_VALUE (value)); value_table = g_type_value_table_peek (G_VALUE_TYPE (value)); @@ -376,7 +379,7 @@ g_value_set_instance (GValue *value, /** * g_value_init_from_instance: * @value: An uninitialized #GValue structure. - * @instance: the instance + * @instance: (type GObject.TypeInstance): the instance * * Initializes and sets @value from an instantiatable type via the * value_table's collect_value() function. diff --git a/gobject/gvaluetypes.c b/gobject/gvaluetypes.c index 4b234a3..fd452fa 100644 --- a/gobject/gvaluetypes.c +++ b/gobject/gvaluetypes.c @@ -1239,7 +1239,7 @@ g_value_set_variant (GValue *value, /** * g_value_take_variant: * @value: a valid #GValue of type %G_TYPE_VARIANT - * @variant: (allow-none): a #GVariant, or %NULL + * @variant: (nullable) (transfer full): a #GVariant, or %NULL * * Set the contents of a variant #GValue to @variant, and takes over * the ownership of the caller's reference to @variant; diff --git a/gobject/makefile.msc b/gobject/makefile.msc new file mode 100644 index 0000000..11b60c1 --- /dev/null +++ b/gobject/makefile.msc @@ -0,0 +1,83 @@ +## Makefile for building the gobject dll with Microsoft C +## Use: nmake -f makefile.msc install + +TOP = ..\.. + +!INCLUDE ..\build\win32\make.msc + +################################################################ + +INCLUDES = -FImsvc_recommended_pragmas.h -I .. -I . -I ..\glib +DEFINES = -DHAVE_CONFIG_H -DGOBJECT_COMPILATION -DG_LOG_DOMAIN=\"GLib-GObject\" \ + -DG_ENABLE_DEBUG +# -DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS +# -DG_DISABLE_CAST_CHECKS + +all : \ + glib-genmarshal.exe \ + gmarshal.h \ + gmarshal.c \ + gmarshal.strings \ + gobject-query.exe \ + libgobject-2.0-0.dll \ + gobject-2.48s.lib \ + testgobject.exe + +gobject_OBJECTS = \ + gboxed.obj \ + gclosure.obj \ + genums.obj \ + gobject.obj \ + gparam.obj \ + gparamspecs.obj \ + gsignal.obj \ + gsourceclosure.obj \ + gtype.obj \ + gtypemodule.obj \ + gtypeplugin.obj \ + gvalue.obj \ + gvaluearray.obj \ + gvaluetypes.obj \ + gvaluetransform.obj + +gobject.def: gobject.symbols + echo EXPORTS > gobject.def + cl /EP -DINCLUDE_VARIABLES -DG_OS_WIN32 -DALL_FILES \ + -DG_GNUC_MALLOC= -DG_GNUC_CONST= -DG_GNUC_NULL_TERMINATED= -DG_GNUC_NORETURN= \ + -DG_GNUC_PRINTF=;G_GNUC_PRINTF gobject.symbols >> gobject.def + +gobject.res : gobject.rc + rc -DBUILDNUMBER=0 -r -fo gobject.res gobject.rc + +gmarshal.h : gmarshal.list glib-genmarshal.exe + echo #ifndef __G_MARSHAL_H__ > xgen-gmh + echo #define __G_MARSHAL_H__ >> xgen-gmh + glib-genmarshal --nostdinc --prefix=g_cclosure_marshal gmarshal.list --header >> xgen-gmh + echo #endif /* __G_MARSHAL_H__ */ >> xgen-gmh + copy xgen-gmh gmarshal.h + +gmarshal.c: gmarshal.list gmarshal.h glib-genmarshal.exe + glib-genmarshal --nostdinc --prefix=g_cclosure_marshal gmarshal.list --body > gmarshal.c + +libgobject-2.0-0.dll : $(gobject_OBJECTS) gobject.def gobject.res + $(CC) $(CFLAGS) -Fm -LD -Fe$@ $(gobject_OBJECTS) gobject.res \ + ..\glib\glib-2.0.lib $(LDFLAGS) /implib:gobject-2.0.lib /def:gobject.def || del $@ + +gobject-2.48s.lib : $(gobject_OBJECTS) + lib /out:$@ $(gobject_OBJECTS) + +# link glib's static version to avoid installing +glib-genmarshal.exe : glib-genmarshal.c gmarshal.strings + $(CC) -Fe$@ $(CFLAGS) -UGOBJECT_COMPILATION glib-genmarshal.c \ + ..\glib\glib-2.48s.lib user32.lib advapi32.lib ole32.lib shell32.lib $(INTL_LIBS) + +gobject-query.exe : gobject-query.c libgobject-2.0-0.dll + $(CC) -Fe$@ $(CFLAGS) -UGOBJECT_COMPILATION gobject-query.c \ + ..\glib\glib-2.0.lib gobject-2.0.lib user32.lib advapi32.lib $(INTL_LIBS) + +gmarshal.strings : gmarshal.list + perl marshal-genstrings.pl > gmarshal.strings + +.c.exe : + $(CC) $(CFLAGS) -c $< + $(CC) $(CFLAGS) -Fe$@ $< gobject-2.0.lib ..\glib\glib-2.0.lib ..\gmodule\gmodule-2.0.lib $(LDFLAGS) user32.lib /subsystem:console diff --git a/gobject/tests/.gitignore b/gobject/tests/.gitignore deleted file mode 100644 index a3f8db3..0000000 --- a/gobject/tests/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -binding -boxed -closure -dynamictests -enums -ifaceproperties -object -param -properties -qdata -reference -signals -threadtests -type -valuearray -private -marshalers.[ch] diff --git a/gobject/tests/Makefile.am b/gobject/tests/Makefile.am index 2c5cc1a..da36e19 100644 --- a/gobject/tests/Makefile.am +++ b/gobject/tests/Makefile.am @@ -17,11 +17,12 @@ test_programs = \ binding \ properties \ reference \ - valuearray \ + value \ type \ private \ closure \ object \ + signal-handler \ $(NULL) # ----------------------------------------------------------------------------- @@ -31,6 +32,12 @@ ifaceproperties_SOURCES = ifaceproperties.c testcommon.h # ----------------------------------------------------------------------------- +# The marshalers test requires running a binary, so we cannot build it when +# cross-compiling + +if !CROSS_COMPILING +glib_genmarshal=$(top_builddir)/gobject/glib-genmarshal + test_programs += signals signals_SOURCES = signals.c nodist_signals_SOURCES = marshalers.c marshalers.h @@ -38,14 +45,10 @@ signals.o: marshalers.h CLEANFILES += marshalers.h marshalers.c EXTRA_DIST += marshalers.list -if CROSS_COMPILING - glib_genmarshal=$(GLIB_GENMARSHAL) -else - glib_genmarshal=$(top_builddir)/gobject/glib-genmarshal -endif - marshalers.h: Makefile.am marshalers.list $(AM_V_GEN) $(glib_genmarshal) --prefix=test $(srcdir)/marshalers.list --header --valist-marshallers > marshalers.h marshalers.c: Makefile.am marshalers.h marshalers.list $(AM_V_GEN) (echo "#include \"marshalers.h\""; $(glib_genmarshal) --prefix=test $(srcdir)/marshalers.list --body --valist-marshallers) > $@.tmp && mv $@.tmp $@ + +endif # !CROSS_COMPILING diff --git a/gobject/tests/Makefile.in b/gobject/tests/Makefile.in new file mode 100644 index 0000000..f765650 --- /dev/null +++ b/gobject/tests/Makefile.in @@ -0,0 +1,1741 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +TESTS = $(am__EXEEXT_3) +installed_test_PROGRAMS = $(am__EXEEXT_6) +noinst_PROGRAMS = $(am__EXEEXT_7) +check_PROGRAMS = $(am__EXEEXT_5) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_1 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_5 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_9 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(installed_test_meta_DATA) +@CROSS_COMPILING_FALSE@am__append_14 = signals +@CROSS_COMPILING_FALSE@am__append_15 = marshalers.h marshalers.c +@CROSS_COMPILING_FALSE@am__append_16 = marshalers.list +subdir = gobject/tests +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES) +am__EXEEXT_1 = +@CROSS_COMPILING_FALSE@am__EXEEXT_2 = signals$(EXEEXT) +am__EXEEXT_3 = qdata$(EXEEXT) boxed$(EXEEXT) enums$(EXEEXT) \ + param$(EXEEXT) threadtests$(EXEEXT) dynamictests$(EXEEXT) \ + binding$(EXEEXT) properties$(EXEEXT) reference$(EXEEXT) \ + value$(EXEEXT) type$(EXEEXT) private$(EXEEXT) closure$(EXEEXT) \ + object$(EXEEXT) signal-handler$(EXEEXT) $(am__EXEEXT_1) \ + ifaceproperties$(EXEEXT) $(am__EXEEXT_2) +am__EXEEXT_4 = $(am__EXEEXT_3) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_5 = $(am__EXEEXT_4) +@ENABLE_INSTALLED_TESTS_TRUE@am__EXEEXT_6 = $(am__EXEEXT_3) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_7 = $(am__EXEEXT_4) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +binding_SOURCES = binding.c +binding_OBJECTS = binding.$(OBJEXT) +binding_LDADD = $(LDADD) +binding_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +boxed_SOURCES = boxed.c +boxed_OBJECTS = boxed.$(OBJEXT) +boxed_LDADD = $(LDADD) +boxed_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +closure_SOURCES = closure.c +closure_OBJECTS = closure.$(OBJEXT) +closure_LDADD = $(LDADD) +closure_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +dynamictests_SOURCES = dynamictests.c +dynamictests_OBJECTS = dynamictests.$(OBJEXT) +dynamictests_LDADD = $(LDADD) +dynamictests_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +enums_SOURCES = enums.c +enums_OBJECTS = enums.$(OBJEXT) +enums_LDADD = $(LDADD) +enums_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +am_ifaceproperties_OBJECTS = ifaceproperties.$(OBJEXT) +ifaceproperties_OBJECTS = $(am_ifaceproperties_OBJECTS) +ifaceproperties_LDADD = $(LDADD) +ifaceproperties_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +object_SOURCES = object.c +object_OBJECTS = object.$(OBJEXT) +object_LDADD = $(LDADD) +object_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +param_SOURCES = param.c +param_OBJECTS = param.$(OBJEXT) +param_LDADD = $(LDADD) +param_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +private_SOURCES = private.c +private_OBJECTS = private.$(OBJEXT) +private_LDADD = $(LDADD) +private_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +properties_SOURCES = properties.c +properties_OBJECTS = properties.$(OBJEXT) +properties_LDADD = $(LDADD) +properties_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +qdata_SOURCES = qdata.c +qdata_OBJECTS = qdata.$(OBJEXT) +qdata_LDADD = $(LDADD) +qdata_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +reference_SOURCES = reference.c +reference_OBJECTS = reference.$(OBJEXT) +reference_LDADD = $(LDADD) +reference_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +signal_handler_SOURCES = signal-handler.c +signal_handler_OBJECTS = signal-handler.$(OBJEXT) +signal_handler_LDADD = $(LDADD) +signal_handler_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +am__signals_SOURCES_DIST = signals.c +@CROSS_COMPILING_FALSE@am_signals_OBJECTS = signals.$(OBJEXT) +@CROSS_COMPILING_FALSE@nodist_signals_OBJECTS = marshalers.$(OBJEXT) +signals_OBJECTS = $(am_signals_OBJECTS) $(nodist_signals_OBJECTS) +signals_LDADD = $(LDADD) +signals_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +threadtests_SOURCES = threadtests.c +threadtests_OBJECTS = threadtests.$(OBJEXT) +threadtests_LDADD = $(LDADD) +threadtests_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +type_SOURCES = type.c +type_OBJECTS = type.$(OBJEXT) +type_LDADD = $(LDADD) +type_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +value_SOURCES = value.c +value_OBJECTS = value.$(OBJEXT) +value_LDADD = $(LDADD) +value_DEPENDENCIES = ../libgobject-2.0.la \ + $(top_builddir)/glib/libglib-2.0.la +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = binding.c boxed.c closure.c dynamictests.c enums.c \ + $(ifaceproperties_SOURCES) object.c param.c private.c \ + properties.c qdata.c reference.c signal-handler.c \ + $(signals_SOURCES) $(nodist_signals_SOURCES) threadtests.c \ + type.c value.c +DIST_SOURCES = binding.c boxed.c closure.c dynamictests.c enums.c \ + $(ifaceproperties_SOURCES) object.c param.c private.c \ + properties.c qdata.c reference.c signal-handler.c \ + $(am__signals_SOURCES_DIST) threadtests.c type.c value.c +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp \ + $(top_srcdir)/glib-tap.mk $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = -DG_LOG_DOMAIN=\"GLib-GObject\" +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +TESTS_ENVIRONMENT = \ + G_TEST_SRCDIR="$(abs_srcdir)" \ + G_TEST_BUILDDIR="$(abs_builddir)" \ + G_DEBUG=gc-friendly \ + MALLOC_CHECK_=2 \ + MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) + +LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/tap-driver.sh +LOG_COMPILER = $(top_srcdir)/tap-test +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = +BUILT_EXTRA_DIST = +CLEANFILES = *.log *.trs $(am__append_13) $(am__append_15) +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \ + $(am__append_16) +installed_test_LTLIBRARIES = $(am__append_12) +installed_test_SCRIPTS = $(am__append_10) +nobase_installed_test_DATA = $(am__append_11) +noinst_LTLIBRARIES = $(am__append_1) +noinst_SCRIPTS = $(am__append_3) +noinst_DATA = $(am__append_4) +check_LTLIBRARIES = $(am__append_5) +check_SCRIPTS = $(am__append_7) +check_DATA = $(am__append_8) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +LDADD = ../libgobject-2.0.la $(top_builddir)/glib/libglib-2.0.la +AM_CPPFLAGS = -g $(gobject_INCLUDES) $(GLIB_DEBUG_FLAGS) +AM_CFLAGS = $(GLIB_WARN_CFLAGS) + +# ----------------------------------------------------------------------------- + +# ----------------------------------------------------------------------------- +test_programs = qdata boxed enums param threadtests dynamictests \ + binding properties reference value type private closure object \ + signal-handler $(NULL) ifaceproperties $(am__append_14) +ifaceproperties_SOURCES = ifaceproperties.c testcommon.h + +# ----------------------------------------------------------------------------- + +# The marshalers test requires running a binary, so we cannot build it when +# cross-compiling +@CROSS_COMPILING_FALSE@glib_genmarshal = $(top_builddir)/gobject/glib-genmarshal +@CROSS_COMPILING_FALSE@signals_SOURCES = signals.c +@CROSS_COMPILING_FALSE@nodist_signals_SOURCES = marshalers.c marshalers.h +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib-tap.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gobject/tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gobject/tests/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib-tap.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +binding$(EXEEXT): $(binding_OBJECTS) $(binding_DEPENDENCIES) $(EXTRA_binding_DEPENDENCIES) + @rm -f binding$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(binding_OBJECTS) $(binding_LDADD) $(LIBS) + +boxed$(EXEEXT): $(boxed_OBJECTS) $(boxed_DEPENDENCIES) $(EXTRA_boxed_DEPENDENCIES) + @rm -f boxed$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(boxed_OBJECTS) $(boxed_LDADD) $(LIBS) + +closure$(EXEEXT): $(closure_OBJECTS) $(closure_DEPENDENCIES) $(EXTRA_closure_DEPENDENCIES) + @rm -f closure$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(closure_OBJECTS) $(closure_LDADD) $(LIBS) + +dynamictests$(EXEEXT): $(dynamictests_OBJECTS) $(dynamictests_DEPENDENCIES) $(EXTRA_dynamictests_DEPENDENCIES) + @rm -f dynamictests$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(dynamictests_OBJECTS) $(dynamictests_LDADD) $(LIBS) + +enums$(EXEEXT): $(enums_OBJECTS) $(enums_DEPENDENCIES) $(EXTRA_enums_DEPENDENCIES) + @rm -f enums$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(enums_OBJECTS) $(enums_LDADD) $(LIBS) + +ifaceproperties$(EXEEXT): $(ifaceproperties_OBJECTS) $(ifaceproperties_DEPENDENCIES) $(EXTRA_ifaceproperties_DEPENDENCIES) + @rm -f ifaceproperties$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(ifaceproperties_OBJECTS) $(ifaceproperties_LDADD) $(LIBS) + +object$(EXEEXT): $(object_OBJECTS) $(object_DEPENDENCIES) $(EXTRA_object_DEPENDENCIES) + @rm -f object$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(object_OBJECTS) $(object_LDADD) $(LIBS) + +param$(EXEEXT): $(param_OBJECTS) $(param_DEPENDENCIES) $(EXTRA_param_DEPENDENCIES) + @rm -f param$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(param_OBJECTS) $(param_LDADD) $(LIBS) + +private$(EXEEXT): $(private_OBJECTS) $(private_DEPENDENCIES) $(EXTRA_private_DEPENDENCIES) + @rm -f private$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(private_OBJECTS) $(private_LDADD) $(LIBS) + +properties$(EXEEXT): $(properties_OBJECTS) $(properties_DEPENDENCIES) $(EXTRA_properties_DEPENDENCIES) + @rm -f properties$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(properties_OBJECTS) $(properties_LDADD) $(LIBS) + +qdata$(EXEEXT): $(qdata_OBJECTS) $(qdata_DEPENDENCIES) $(EXTRA_qdata_DEPENDENCIES) + @rm -f qdata$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(qdata_OBJECTS) $(qdata_LDADD) $(LIBS) + +reference$(EXEEXT): $(reference_OBJECTS) $(reference_DEPENDENCIES) $(EXTRA_reference_DEPENDENCIES) + @rm -f reference$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(reference_OBJECTS) $(reference_LDADD) $(LIBS) + +signal-handler$(EXEEXT): $(signal_handler_OBJECTS) $(signal_handler_DEPENDENCIES) $(EXTRA_signal_handler_DEPENDENCIES) + @rm -f signal-handler$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(signal_handler_OBJECTS) $(signal_handler_LDADD) $(LIBS) + +signals$(EXEEXT): $(signals_OBJECTS) $(signals_DEPENDENCIES) $(EXTRA_signals_DEPENDENCIES) + @rm -f signals$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(signals_OBJECTS) $(signals_LDADD) $(LIBS) + +threadtests$(EXEEXT): $(threadtests_OBJECTS) $(threadtests_DEPENDENCIES) $(EXTRA_threadtests_DEPENDENCIES) + @rm -f threadtests$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(threadtests_OBJECTS) $(threadtests_LDADD) $(LIBS) + +type$(EXEEXT): $(type_OBJECTS) $(type_DEPENDENCIES) $(EXTRA_type_DEPENDENCIES) + @rm -f type$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(type_OBJECTS) $(type_LDADD) $(LIBS) + +value$(EXEEXT): $(value_OBJECTS) $(value_DEPENDENCIES) $(EXTRA_value_DEPENDENCIES) + @rm -f value$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(value_OBJECTS) $(value_LDADD) $(LIBS) +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binding.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/boxed.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/closure.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dynamictests.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/enums.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ifaceproperties.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/marshalers.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/object.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/param.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/private.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/properties.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qdata.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reference.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signal-handler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signals.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threadtests.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/type.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/value.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +qdata.log: qdata$(EXEEXT) + @p='qdata$(EXEEXT)'; \ + b='qdata'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +boxed.log: boxed$(EXEEXT) + @p='boxed$(EXEEXT)'; \ + b='boxed'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +enums.log: enums$(EXEEXT) + @p='enums$(EXEEXT)'; \ + b='enums'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +param.log: param$(EXEEXT) + @p='param$(EXEEXT)'; \ + b='param'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +threadtests.log: threadtests$(EXEEXT) + @p='threadtests$(EXEEXT)'; \ + b='threadtests'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +dynamictests.log: dynamictests$(EXEEXT) + @p='dynamictests$(EXEEXT)'; \ + b='dynamictests'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +binding.log: binding$(EXEEXT) + @p='binding$(EXEEXT)'; \ + b='binding'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +properties.log: properties$(EXEEXT) + @p='properties$(EXEEXT)'; \ + b='properties'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +reference.log: reference$(EXEEXT) + @p='reference$(EXEEXT)'; \ + b='reference'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +value.log: value$(EXEEXT) + @p='value$(EXEEXT)'; \ + b='value'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +type.log: type$(EXEEXT) + @p='type$(EXEEXT)'; \ + b='type'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +private.log: private$(EXEEXT) + @p='private$(EXEEXT)'; \ + b='private'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +closure.log: closure$(EXEEXT) + @p='closure$(EXEEXT)'; \ + b='closure'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +object.log: object$(EXEEXT) + @p='object$(EXEEXT)'; \ + b='object'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +signal-handler.log: signal-handler$(EXEEXT) + @p='signal-handler$(EXEEXT)'; \ + b='signal-handler'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +ifaceproperties.log: ifaceproperties$(EXEEXT) + @p='ifaceproperties$(EXEEXT)'; \ + b='ifaceproperties'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +signals.log: signals$(EXEEXT) + @p='signals$(EXEEXT)'; \ + b='signals'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \ + clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA \ + uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<) --tap' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Output=TAP' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) +@CROSS_COMPILING_FALSE@signals.o: marshalers.h + +@CROSS_COMPILING_FALSE@marshalers.h: Makefile.am marshalers.list +@CROSS_COMPILING_FALSE@ $(AM_V_GEN) $(glib_genmarshal) --prefix=test $(srcdir)/marshalers.list --header --valist-marshallers > marshalers.h + +@CROSS_COMPILING_FALSE@marshalers.c: Makefile.am marshalers.h marshalers.list +@CROSS_COMPILING_FALSE@ $(AM_V_GEN) (echo "#include \"marshalers.h\""; $(glib_genmarshal) --prefix=test $(srcdir)/marshalers.list --body --valist-marshallers) > $@.tmp && mv $@.tmp $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gobject/tests/binding.c b/gobject/tests/binding.c index f79640b..b327faf 100644 --- a/gobject/tests/binding.c +++ b/gobject/tests/binding.c @@ -250,7 +250,7 @@ celsius_to_fahrenheit (GBinding *binding, fahrenheit = (9 * celsius / 5) + 32.0; if (g_test_verbose ()) - g_print ("Converting %.2fC to %.2fF\n", celsius, fahrenheit); + g_printerr ("Converting %.2fC to %.2fF\n", celsius, fahrenheit); g_value_set_double (to_value, fahrenheit); @@ -272,7 +272,7 @@ fahrenheit_to_celsius (GBinding *binding, celsius = 5 * (fahrenheit - 32.0) / 9; if (g_test_verbose ()) - g_print ("Converting %.2fF to %.2fC\n", fahrenheit, celsius); + g_printerr ("Converting %.2fF to %.2fC\n", fahrenheit, celsius); g_value_set_double (to_value, celsius); @@ -610,6 +610,19 @@ binding_unbind (void) g_object_unref (source); g_object_unref (target); + + + /* g_binding_unbind() has a special case for this */ + source = g_object_new (binding_source_get_type (), NULL); + binding = g_object_bind_property (source, "foo", + source, "bar", + G_BINDING_DEFAULT); + g_object_add_weak_pointer (G_OBJECT (binding), (gpointer *) &binding); + + g_binding_unbind (binding); + g_assert (binding == NULL); + + g_object_unref (source); } static void diff --git a/gobject/tests/dynamictests.c b/gobject/tests/dynamictests.c index a052e1a..d299c3f 100644 --- a/gobject/tests/dynamictests.c +++ b/gobject/tests/dynamictests.c @@ -169,22 +169,22 @@ ref_unref_thread (gpointer data) /* first, syncronize with other threads, */ if (g_test_verbose()) - g_print ("WAITING!\n"); + g_printerr ("WAITING!\n"); g_mutex_lock (&sync_mutex); g_mutex_unlock (&sync_mutex); if (g_test_verbose ()) - g_print ("STARTING\n"); + g_printerr ("STARTING\n"); /* ref/unref the klass 10000000 times */ for (i = N_REFS; i; i--) { if (g_test_verbose ()) if (i % 10) - g_print ("%d\n", i); + g_printerr ("%d\n", i); g_type_class_unref (g_type_class_ref ((GType) data)); } if (g_test_verbose()) - g_print ("DONE !\n"); + g_printerr ("DONE !\n"); return NULL; } diff --git a/gobject/tests/private.c b/gobject/tests/private.c index a960e50..ecf5e7b 100644 --- a/gobject/tests/private.c +++ b/gobject/tests/private.c @@ -29,7 +29,7 @@ test_object_init (TestObject *self) TestObjectPrivate *priv = test_object_get_instance_private (self); if (g_test_verbose ()) - g_print ("Offset of %sPrivate for type '%s': %d\n", + g_printerr ("Offset of %sPrivate for type '%s': %d\n", G_OBJECT_TYPE_NAME (self), G_OBJECT_TYPE_NAME (self), TestObject_private_offset); @@ -93,7 +93,7 @@ test_derived_init (TestDerived *self) TestDerivedPrivate *priv = test_derived_get_instance_private (self); if (g_test_verbose ()) - g_print ("Offset of %sPrivate for type '%s': %d\n", + g_printerr ("Offset of %sPrivate for type '%s': %d\n", G_OBJECT_TYPE_NAME (self), G_OBJECT_TYPE_NAME (self), TestDerived_private_offset); @@ -137,7 +137,7 @@ test_mixed_init (TestMixed *self) TestMixedPrivate *priv = G_TYPE_INSTANCE_GET_PRIVATE (self, test_mixed_get_type (), TestMixedPrivate); if (g_test_verbose ()) - g_print ("Offset of %sPrivate for type '%s': %d\n", + g_printerr ("Offset of %sPrivate for type '%s': %d\n", G_OBJECT_TYPE_NAME (self), G_OBJECT_TYPE_NAME (self), TestMixed_private_offset); @@ -181,7 +181,7 @@ test_mixed_derived_init (TestMixedDerived *self) TestMixedDerivedPrivate *priv = test_mixed_derived_get_instance_private (self); if (g_test_verbose ()) - g_print ("Offset of %sPrivate for type '%s': %d\n", + g_printerr ("Offset of %sPrivate for type '%s': %d\n", G_OBJECT_TYPE_NAME (self), G_OBJECT_TYPE_NAME (self), TestMixedDerived_private_offset); diff --git a/gobject/tests/signal-handler.c b/gobject/tests/signal-handler.c new file mode 100644 index 0000000..7a236ee --- /dev/null +++ b/gobject/tests/signal-handler.c @@ -0,0 +1,299 @@ +#include + +typedef struct { + GObject instance; +} MyObj; + +typedef struct { + GObjectClass parent_class; +} MyObjClass; + +enum { + SIGNAL1, + SIGNAL2, + LAST_SIGNAL +}; + +guint signals[LAST_SIGNAL]; + +GType my_obj_get_type (void); + +G_DEFINE_TYPE (MyObj, my_obj, G_TYPE_OBJECT) + +static void +my_obj_init (MyObj *o) +{ +} + +static void +my_obj_class_init (MyObjClass *class) +{ + signals[SIGNAL1] = + g_signal_new ("signal1", + G_TYPE_FROM_CLASS (class), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, NULL, G_TYPE_NONE, 0); + signals[SIGNAL2] = + g_signal_new ("signal2", + G_TYPE_FROM_CLASS (class), + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, NULL, G_TYPE_NONE, 0); +} + +static void +nop (void) +{ +} + +#define HANDLERS 500000 + +static void +test_connect_many (void) +{ + MyObj *o; + gdouble time_elapsed; + gint i; + + o = g_object_new (my_obj_get_type (), NULL); + + g_test_timer_start (); + + for (i = 0; i < HANDLERS; i++) + g_signal_connect (o, "signal1", G_CALLBACK (nop), NULL); + + time_elapsed = g_test_timer_elapsed (); + + g_object_unref (o); + + g_test_minimized_result (time_elapsed, "connected %u handlers in %6.3f seconds", HANDLERS, time_elapsed); +} + +static void +test_disconnect_many_ordered (void) +{ + MyObj *o; + gulong handlers[HANDLERS]; + gdouble time_elapsed; + gint i; + + o = g_object_new (my_obj_get_type (), NULL); + + for (i = 0; i < HANDLERS; i++) + handlers[i] = g_signal_connect (o, "signal1", G_CALLBACK (nop), NULL); + + g_test_timer_start (); + + for (i = 0; i < HANDLERS; i++) + g_signal_handler_disconnect (o, handlers[i]); + + time_elapsed = g_test_timer_elapsed (); + + g_object_unref (o); + + g_test_minimized_result (time_elapsed, "disconnected %u handlers in %6.3f seconds", HANDLERS, time_elapsed); +} + +static void +test_disconnect_many_inverse (void) +{ + MyObj *o; + gulong handlers[HANDLERS]; + gdouble time_elapsed; + gint i; + + o = g_object_new (my_obj_get_type (), NULL); + + for (i = 0; i < HANDLERS; i++) + handlers[i] = g_signal_connect (o, "signal1", G_CALLBACK (nop), NULL); + + g_test_timer_start (); + + for (i = HANDLERS - 1; i >= 0; i--) + g_signal_handler_disconnect (o, handlers[i]); + + time_elapsed = g_test_timer_elapsed (); + + g_object_unref (o); + + g_test_minimized_result (time_elapsed, "disconnected %u handlers in %6.3f seconds", HANDLERS, time_elapsed); +} + +static void +test_disconnect_many_random (void) +{ + MyObj *o; + gulong handlers[HANDLERS]; + gulong id; + gdouble time_elapsed; + gint i, j; + + o = g_object_new (my_obj_get_type (), NULL); + + for (i = 0; i < HANDLERS; i++) + handlers[i] = g_signal_connect (o, "signal1", G_CALLBACK (nop), NULL); + + for (i = 0; i < HANDLERS; i++) + { + j = g_test_rand_int_range (0, HANDLERS); + id = handlers[i]; + handlers[i] = handlers[j]; + handlers[j] = id; + } + + g_test_timer_start (); + + for (i = 0; i < HANDLERS; i++) + g_signal_handler_disconnect (o, handlers[i]); + + time_elapsed = g_test_timer_elapsed (); + + g_object_unref (o); + + g_test_minimized_result (time_elapsed, "disconnected %u handlers in %6.3f seconds", HANDLERS, time_elapsed); +} + +static void +test_disconnect_2_signals (void) +{ + MyObj *o; + gulong handlers[HANDLERS]; + gulong id; + gdouble time_elapsed; + gint i, j; + + o = g_object_new (my_obj_get_type (), NULL); + + for (i = 0; i < HANDLERS; i++) + { + if (i % 2 == 0) + handlers[i] = g_signal_connect (o, "signal1", G_CALLBACK (nop), NULL); + else + handlers[i] = g_signal_connect (o, "signal2", G_CALLBACK (nop), NULL); + } + + for (i = 0; i < HANDLERS; i++) + { + j = g_test_rand_int_range (0, HANDLERS); + id = handlers[i]; + handlers[i] = handlers[j]; + handlers[j] = id; + } + + g_test_timer_start (); + + for (i = 0; i < HANDLERS; i++) + g_signal_handler_disconnect (o, handlers[i]); + + time_elapsed = g_test_timer_elapsed (); + + g_object_unref (o); + + g_test_minimized_result (time_elapsed, "disconnected %u handlers in %6.3f seconds", HANDLERS, time_elapsed); +} + +static void +test_disconnect_2_objects (void) +{ + MyObj *o1, *o2, *o; + gulong handlers[HANDLERS]; + MyObj *objects[HANDLERS]; + gulong id; + gdouble time_elapsed; + gint i, j; + + o1 = g_object_new (my_obj_get_type (), NULL); + o2 = g_object_new (my_obj_get_type (), NULL); + + for (i = 0; i < HANDLERS; i++) + { + if (i % 2 == 0) + { + handlers[i] = g_signal_connect (o1, "signal1", G_CALLBACK (nop), NULL); + objects[i] = o1; + } + else + { + handlers[i] = g_signal_connect (o2, "signal1", G_CALLBACK (nop), NULL); + objects[i] = o2; + } + } + + for (i = 0; i < HANDLERS; i++) + { + j = g_test_rand_int_range (0, HANDLERS); + id = handlers[i]; + handlers[i] = handlers[j]; + handlers[j] = id; + o = objects[i]; + objects[i] = objects[j]; + objects[j] = o; + } + + g_test_timer_start (); + + for (i = 0; i < HANDLERS; i++) + g_signal_handler_disconnect (objects[i], handlers[i]); + + time_elapsed = g_test_timer_elapsed (); + + g_object_unref (o1); + g_object_unref (o2); + + g_test_minimized_result (time_elapsed, "disconnected %u handlers in %6.3f seconds", HANDLERS, time_elapsed); +} + +static void +test_block_many (void) +{ + MyObj *o; + gulong handlers[HANDLERS]; + gulong id; + gdouble time_elapsed; + gint i, j; + + o = g_object_new (my_obj_get_type (), NULL); + + for (i = 0; i < HANDLERS; i++) + handlers[i] = g_signal_connect (o, "signal1", G_CALLBACK (nop), NULL); + + for (i = 0; i < HANDLERS; i++) + { + j = g_test_rand_int_range (0, HANDLERS); + id = handlers[i]; + handlers[i] = handlers[j]; + handlers[j] = id; + } + + g_test_timer_start (); + + for (i = 0; i < HANDLERS; i++) + g_signal_handler_block (o, handlers[i]); + + for (i = HANDLERS - 1; i >= 0; i--) + g_signal_handler_unblock (o, handlers[i]); + + time_elapsed = g_test_timer_elapsed (); + + g_object_unref (o); + + g_test_minimized_result (time_elapsed, "blocked and unblocked %u handlers in %6.3f seconds", HANDLERS, time_elapsed); +} + +int +main (int argc, char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + if (g_test_perf ()) + { + g_test_add_func ("/signal/handler/connect-many", test_connect_many); + g_test_add_func ("/signal/handler/disconnect-many-ordered", test_disconnect_many_ordered); + g_test_add_func ("/signal/handler/disconnect-many-inverse", test_disconnect_many_inverse); + g_test_add_func ("/signal/handler/disconnect-many-random", test_disconnect_many_random); + g_test_add_func ("/signal/handler/disconnect-2-signals", test_disconnect_2_signals); + g_test_add_func ("/signal/handler/disconnect-2-objects", test_disconnect_2_objects); + g_test_add_func ("/signal/handler/block-many", test_block_many); + } + + return g_test_run (); +} diff --git a/gobject/tests/signals.c b/gobject/tests/signals.c index 45f4846..cae8eca 100644 --- a/gobject/tests/signals.c +++ b/gobject/tests/signals.c @@ -1,6 +1,19 @@ #include #include "marshalers.h" +#define g_assert_cmpflags(type,n1, cmp, n2) G_STMT_START { \ + type __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'); \ + } G_STMT_END +#define g_assert_cmpenum(type,n1, cmp, n2) G_STMT_START { \ + type __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'); \ + } G_STMT_END + typedef enum { TEST_ENUM_NEGATIVE = -30, TEST_ENUM_NONE = 0, @@ -58,16 +71,27 @@ test_unsigned_enum_get_type (void) return g_define_type_id__volatile; } +typedef enum { + MY_ENUM_VALUE = 1, +} MyEnum; static const GEnumValue my_enum_values[] = { - { 1, "the first value", "one" }, + { MY_ENUM_VALUE, "the first value", "one" }, { 0, NULL, NULL } }; +typedef enum { + MY_FLAGS_FIRST_BIT = (1 << 0), + MY_FLAGS_THIRD_BIT = (1 << 2), + MY_FLAGS_LAST_BIT = (1 << 31) +} MyFlags; + static const GFlagsValue my_flag_values[] = { - { 1, "the first value", "one" }, + { MY_FLAGS_FIRST_BIT, "the first bit", "first-bit" }, + { MY_FLAGS_THIRD_BIT, "the third bit", "third-bit" }, + { MY_FLAGS_LAST_BIT, "the last bit", "last-bit" }, { 0, NULL, NULL } }; @@ -85,15 +109,15 @@ struct _Test GObject parent_instance; }; -static void all_types_handler (Test *test, int i, gboolean b, char c, guchar uc, guint ui, glong l, gulong ul, gint e, guint f, float fl, double db, char *str, GParamSpec *param, GBytes *bytes, gpointer ptr, Test *obj, GVariant *var, gint64 i64, guint64 ui64); +static void all_types_handler (Test *test, int i, gboolean b, char c, guchar uc, guint ui, glong l, gulong ul, MyEnum e, MyFlags f, float fl, double db, char *str, GParamSpec *param, GBytes *bytes, gpointer ptr, Test *obj, GVariant *var, gint64 i64, guint64 ui64); struct _TestClass { GObjectClass parent_class; void (* variant_changed) (Test *, GVariant *); - void (* all_types) (Test *test, int i, gboolean b, char c, guchar uc, guint ui, glong l, gulong ul, gint e, guint f, float fl, double db, char *str, GParamSpec *param, GBytes *bytes, gpointer ptr, Test *obj, GVariant *var, gint64 i64, guint64 ui64); - void (* all_types_null) (Test *test, int i, gboolean b, char c, guchar uc, guint ui, glong l, gulong ul, gint e, guint f, float fl, double db, char *str, GParamSpec *param, GBytes *bytes, gpointer ptr, Test *obj, GVariant *var, gint64 i64, guint64 ui64); + void (* all_types) (Test *test, int i, gboolean b, char c, guchar uc, guint ui, glong l, gulong ul, MyEnum e, MyFlags f, float fl, double db, char *str, GParamSpec *param, GBytes *bytes, gpointer ptr, Test *obj, GVariant *var, gint64 i64, guint64 ui64); + void (* all_types_null) (Test *test, int i, gboolean b, char c, guchar uc, guint ui, glong l, gulong ul, MyEnum e, MyFlags f, float fl, double db, char *str, GParamSpec *param, GBytes *bytes, gpointer ptr, Test *obj, GVariant *var, gint64 i64, guint64 ui64); }; static GType test_get_type (void); @@ -358,6 +382,22 @@ test_class_init (TestClass *klass) G_TYPE_UINT64); } +typedef struct _Test Test2; +typedef struct _TestClass Test2Class; + +static GType test2_get_type (void); +G_DEFINE_TYPE (Test2, test2, G_TYPE_OBJECT) + +static void +test2_init (Test2 *test) +{ +} + +static void +test2_class_init (Test2Class *klass) +{ +} + static void test_variant_signal (void) { @@ -665,7 +705,7 @@ test_generic_marshaller_signal_uint_return (void) static int all_type_handlers_count = 0; static void -all_types_handler (Test *test, int i, gboolean b, char c, guchar uc, guint ui, glong l, gulong ul, gint e, guint f, float fl, double db, char *str, GParamSpec *param, GBytes *bytes, gpointer ptr, Test *obj, GVariant *var, gint64 i64, guint64 ui64) +all_types_handler (Test *test, int i, gboolean b, char c, guchar uc, guint ui, glong l, gulong ul, MyEnum e, MyFlags f, float fl, double db, char *str, GParamSpec *param, GBytes *bytes, gpointer ptr, Test *obj, GVariant *var, gint64 i64, guint64 ui64) { all_type_handlers_count++; @@ -676,8 +716,8 @@ all_types_handler (Test *test, int i, gboolean b, char c, guchar uc, guint ui, g g_assert_cmpuint (ui, ==, G_MAXUINT - 42); g_assert_cmpint (l, ==, -1117); g_assert_cmpuint (ul, ==, G_MAXULONG - 999); - g_assert_cmpint (e, ==, 1); - g_assert_cmpuint (f, ==, 0); + g_assert_cmpenum (MyEnum, e, ==, MY_ENUM_VALUE); + g_assert_cmpflags (MyFlags, f, ==, MY_FLAGS_FIRST_BIT | MY_FLAGS_THIRD_BIT | MY_FLAGS_LAST_BIT); g_assert_cmpfloat (fl, ==, 0.25); g_assert_cmpfloat (db, ==, 1.5); g_assert_cmpstr (str, ==, "Test"); @@ -690,7 +730,7 @@ all_types_handler (Test *test, int i, gboolean b, char c, guchar uc, guint ui, g } static void -all_types_handler_cb (Test *test, int i, gboolean b, char c, guchar uc, guint ui, glong l, gulong ul, gint e, guint f, float fl, double db, char *str, GParamSpec *param, GBytes *bytes, gpointer ptr, Test *obj, GVariant *var, gint64 i64, guint64 ui64, gpointer user_data) +all_types_handler_cb (Test *test, int i, gboolean b, char c, guchar uc, guint ui, glong l, gulong ul, MyEnum e, guint f, float fl, double db, char *str, GParamSpec *param, GBytes *bytes, gpointer ptr, Test *obj, GVariant *var, gint64 i64, guint64 ui64, gpointer user_data) { g_assert (user_data == &flags_type); all_types_handler (test, i, b, c, uc, ui, l, ul, e, f, fl, db, str, param, bytes, ptr, obj, var, i64, ui64); @@ -708,8 +748,8 @@ test_all_types (void) guint ui = G_MAXUINT - 42; glong l = -1117; gulong ul = G_MAXULONG - 999; - gint e = 1; - guint f = 0; + MyEnum e = MY_ENUM_VALUE; + MyFlags f = MY_FLAGS_FIRST_BIT | MY_FLAGS_THIRD_BIT | MY_FLAGS_LAST_BIT; float fl = 0.25; double db = 1.5; char *str = "Test"; @@ -1090,6 +1130,42 @@ test_stop_emission (void) g_object_unref (test1); } +static void +test_signal_disconnect_wrong_object (void) +{ + Test *object, *object2; + Test2 *object3; + guint signal_id; + + object = g_object_new (test_get_type (), NULL); + object2 = g_object_new (test_get_type (), NULL); + object3 = g_object_new (test2_get_type (), NULL); + + signal_id = g_signal_connect (object, + "simple", + G_CALLBACK (simple_handler1), + NULL); + + /* disconnect from the wrong object (same type), should warn */ + g_test_expect_message ("GLib-GObject", G_LOG_LEVEL_WARNING, + "*: instance '*' has no handler with id '*'"); + g_signal_handler_disconnect (object2, signal_id); + g_test_assert_expected_messages (); + + /* and from an object of the wrong type */ + g_test_expect_message ("GLib-GObject", G_LOG_LEVEL_WARNING, + "*: instance '*' has no handler with id '*'"); + g_signal_handler_disconnect (object3, signal_id); + g_test_assert_expected_messages (); + + /* it's still connected */ + g_assert (g_signal_handler_is_connected (object, signal_id)); + + g_object_unref (object); + g_object_unref (object2); + g_object_unref (object3); +} + /* --- */ int @@ -1113,6 +1189,7 @@ main (int argc, g_test_add_func ("/gobject/signals/block-handler", test_block_handler); g_test_add_func ("/gobject/signals/stop-emission", test_stop_emission); g_test_add_func ("/gobject/signals/invocation-hint", test_invocation_hint); + g_test_add_func ("/gobject/signals/test-disconnection-wrong-object", test_signal_disconnect_wrong_object); return g_test_run (); } diff --git a/gobject/tests/threadtests.c b/gobject/tests/threadtests.c index e075c57..7408c0a 100644 --- a/gobject/tests/threadtests.c +++ b/gobject/tests/threadtests.c @@ -132,11 +132,11 @@ test_threaded_class_init (void) while (g_atomic_int_get (&mtsafe_call_counter) < (3 + 3 + 3 * 3) * NUM_COUNTER_INCREMENTS) { if (g_test_verbose()) - g_print ("Initializers counted: %u\n", g_atomic_int_get (&mtsafe_call_counter)); + g_printerr ("Initializers counted: %u\n", g_atomic_int_get (&mtsafe_call_counter)); g_usleep (50 * 1000); /* wait for threads to complete */ } if (g_test_verbose()) - g_print ("Total initializers: %u\n", g_atomic_int_get (&mtsafe_call_counter)); + g_printerr ("Total initializers: %u\n", g_atomic_int_get (&mtsafe_call_counter)); /* ensure non-corrupted counter updates */ g_assert_cmpint (g_atomic_int_get (&mtsafe_call_counter), ==, unsafe_call_counter); @@ -265,7 +265,7 @@ test_threaded_weak_ref (void) GError *error = NULL; if (g_test_verbose () && (i % (n/20)) == 0) - g_print ("%u%%\n", ((i * 100) / n)); + g_printerr ("%u%%\n", ((i * 100) / n)); /* Have an object and a weak ref to it */ data.strong = g_object_new (my_tester0_get_type (), NULL); @@ -332,7 +332,7 @@ test_threaded_weak_ref (void) } if (g_test_verbose ()) - g_print ("Race won by get %u times, unref %u times\n", + g_printerr ("Race won by get %u times, unref %u times\n", get_wins, unref_wins); } diff --git a/gobject/tests/valuearray.c b/gobject/tests/value.c similarity index 56% rename from gobject/tests/valuearray.c rename to gobject/tests/value.c index cce7087..b5a1364 100644 --- a/gobject/tests/valuearray.c +++ b/gobject/tests/value.c @@ -1,6 +1,36 @@ #define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_30 #include +static void +test_value_basic (void) +{ + GValue value = G_VALUE_INIT; + + g_assert_false (G_IS_VALUE (&value)); + g_assert_false (G_VALUE_HOLDS_INT (&value)); + g_value_unset (&value); + g_assert_false (G_IS_VALUE (&value)); + g_assert_false (G_VALUE_HOLDS_INT (&value)); + + g_value_init (&value, G_TYPE_INT); + g_assert_true (G_IS_VALUE (&value)); + g_assert_true (G_VALUE_HOLDS_INT (&value)); + g_assert_false (G_VALUE_HOLDS_UINT (&value)); + g_assert_cmpint (g_value_get_int (&value), ==, 0); + + g_value_set_int (&value, 10); + g_assert_cmpint (g_value_get_int (&value), ==, 10); + + g_value_reset (&value); + g_assert_true (G_IS_VALUE (&value)); + g_assert_true (G_VALUE_HOLDS_INT (&value)); + g_assert_cmpint (g_value_get_int (&value), ==, 0); + + g_value_unset (&value); + g_assert_false (G_IS_VALUE (&value)); + g_assert_false (G_VALUE_HOLDS_INT (&value)); +} + static gint cmpint (gconstpointer a, gconstpointer b) { @@ -11,7 +41,7 @@ cmpint (gconstpointer a, gconstpointer b) } static void -test_basic (void) +test_valuearray_basic (void) { GValueArray *a; GValueArray *a2; @@ -58,7 +88,8 @@ main (int argc, char *argv[]) { g_test_init (&argc, &argv, NULL); - g_test_add_func ("/valuearray/basic", test_basic); + g_test_add_func ("/value/basic", test_value_basic); + g_test_add_func ("/value/array/basic", test_valuearray_basic); return g_test_run (); } diff --git a/gthread/.gitignore b/gthread/.gitignore deleted file mode 100644 index 8f2ed21..0000000 --- a/gthread/.gitignore +++ /dev/null @@ -1 +0,0 @@ -makefile.msc diff --git a/gthread/Makefile.in b/gthread/Makefile.in new file mode 100644 index 0000000..a7f5451 --- /dev/null +++ b/gthread/Makefile.in @@ -0,0 +1,1609 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@am__append_15 = gthread-2.0.lib +subdir = gthread +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = makefile.msc gthread.rc +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(libdir)" "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(lib_LTLIBRARIES) \ + $(noinst_LTLIBRARIES) +am__DEPENDENCIES_1 = +am_libgthread_2_0_la_OBJECTS = libgthread_2_0_la-gthread-impl.lo +libgthread_2_0_la_OBJECTS = $(am_libgthread_2_0_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libgthread_2_0_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(libgthread_2_0_la_CFLAGS) $(CFLAGS) \ + $(libgthread_2_0_la_LDFLAGS) $(LDFLAGS) -o $@ +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libgthread_2_0_la_SOURCES) +DIST_SOURCES = $(libgthread_2_0_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(nobase_installed_test_DATA) \ + $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/gthread.rc.in \ + $(srcdir)/makefile.msc.in $(top_srcdir)/depcomp \ + $(top_srcdir)/glib.mk $(top_srcdir)/test-driver ChangeLog +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = +BUILT_EXTRA_DIST = makefile.msc gthread.rc +CLEANFILES = *.log *.trs $(am__append_14) +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \ + makefile.msc.in gthread.def gthread.rc.in + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) $(am__append_15) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +AM_CPPFLAGS = \ + $(glib_INCLUDES) \ + -DG_LOG_DOMAIN=\"GThread\" \ + @GTHREAD_COMPILE_IMPL_DEFINES@ \ + @GLIB_DEBUG_FLAGS@ + +AM_CFLAGS = $(GLIB_WARN_CFLAGS) +libglib = $(top_builddir)/glib/libglib-2.0.la +top_builddir_full = `cd \$(top_builddir); pwd` +lib_LTLIBRARIES = libgthread-2.0.la +@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@install_ms_lib_cmd = $(INSTALL) gthread-2.0.lib $(DESTDIR)$(libdir) +@MS_LIB_AVAILABLE_TRUE@@OS_WIN32_AND_DLL_COMPILATION_TRUE@uninstall_ms_lib_cmd = -rm $(DESTDIR)$(libdir)/gthread-2.0.lib +@PLATFORM_WIN32_TRUE@no_undefined = -no-undefined +@OS_WIN32_AND_DLL_COMPILATION_TRUE@export_symbols = -export-symbols $(srcdir)/gthread.def +@OS_WIN32_AND_DLL_COMPILATION_TRUE@gthread_def = gthread.def +@OS_WIN32_AND_DLL_COMPILATION_TRUE@gthread_win32_res = gthread-win32-res.o +@OS_WIN32_AND_DLL_COMPILATION_TRUE@gthread_win32_res_ldflag = -Wl,$(gthread_win32_res) +libgthread_2_0_la_CFLAGS = $(AM_CFLAGS) $(GLIB_HIDDEN_VISIBILITY_CFLAGS) +libgthread_2_0_la_SOURCES = gthread-impl.c +libgthread_2_0_la_LDFLAGS = $(GLIB_LINK_FLAGS) \ + $(gthread_win32_res_ldflag) \ + -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \ + -export-dynamic $(no_undefined) $(export_symbols) + +libgthread_2_0_la_LIBADD = $(G_THREAD_LIBS_EXTRA) $(G_THREAD_LIBS_FOR_GTHREAD) $(libglib) +libgthread_2_0_la_DEPENDENCIES = $(gthread_win32_res) $(gthread_def) +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu gthread/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu gthread/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +makefile.msc: $(top_builddir)/config.status $(srcdir)/makefile.msc.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +gthread.rc: $(top_builddir)/config.status $(srcdir)/gthread.rc.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libgthread-2.0.la: $(libgthread_2_0_la_OBJECTS) $(libgthread_2_0_la_DEPENDENCIES) $(EXTRA_libgthread_2_0_la_DEPENDENCIES) + $(AM_V_CCLD)$(libgthread_2_0_la_LINK) -rpath $(libdir) $(libgthread_2_0_la_OBJECTS) $(libgthread_2_0_la_LIBADD) $(LIBS) + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgthread_2_0_la-gthread-impl.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libgthread_2_0_la-gthread-impl.lo: gthread-impl.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgthread_2_0_la_CFLAGS) $(CFLAGS) -MT libgthread_2_0_la-gthread-impl.lo -MD -MP -MF $(DEPDIR)/libgthread_2_0_la-gthread-impl.Tpo -c -o libgthread_2_0_la-gthread-impl.lo `test -f 'gthread-impl.c' || echo '$(srcdir)/'`gthread-impl.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgthread_2_0_la-gthread-impl.Tpo $(DEPDIR)/libgthread_2_0_la-gthread-impl.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gthread-impl.c' object='libgthread_2_0_la-gthread-impl.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgthread_2_0_la_CFLAGS) $(CFLAGS) -c -o libgthread_2_0_la-gthread-impl.lo `test -f 'gthread-impl.c' || echo '$(srcdir)/'`gthread-impl.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +@HAVE_GLIB_RUNTIME_LIBDIR_FALSE@install-data-hook: +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \ + clean-noinstPROGRAMS mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA \ + install-nobase_installed_testDATA + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-data-hook +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-libLTLIBRARIES \ + uninstall-local uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-data-am \ + install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am \ + check-local clean clean-checkLTLIBRARIES clean-checkPROGRAMS \ + clean-generic clean-installed_testLTLIBRARIES \ + clean-installed_testPROGRAMS clean-libLTLIBRARIES \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + cscopelist-am ctags ctags-am dist-hook distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-data-hook install-data-local install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-libLTLIBRARIES \ + install-man install-nobase_installed_testDATA install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-libLTLIBRARIES \ + uninstall-local uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +install-ms-lib: + $(install_ms_lib_cmd) + +uninstall-ms-lib: + $(uninstall_ms_lib_cmd) + +@OS_WIN32_AND_DLL_COMPILATION_TRUE@install-def-file: +@OS_WIN32_AND_DLL_COMPILATION_TRUE@ $(INSTALL) $(srcdir)/gthread.def $(DESTDIR)$(libdir)/gthread-2.0.def + +@OS_WIN32_AND_DLL_COMPILATION_TRUE@uninstall-def-file: +@OS_WIN32_AND_DLL_COMPILATION_TRUE@ -rm $(DESTDIR)$(libdir)/gthread-2.0.def +@OS_WIN32_AND_DLL_COMPILATION_FALSE@install-def-file: +@OS_WIN32_AND_DLL_COMPILATION_FALSE@uninstall-def-file: + +gthread-win32-res.o: gthread.rc + $(AM_V_GEN) $(WINDRES) gthread.rc $@ + +gthread-2.0.lib: libgthread-2.0.la gthread.def + $(AM_V_GEN) lib.exe -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgthread-2.0-$(LT_CURRENT_MINUS_AGE).dll -def:$(srcdir)/gthread.def -out:$@ + +dist-hook: $(BUILT_EXTRA_DIST) + files='$(BUILT_EXTRA_DIST)'; \ + for f in $$files; do \ + if test -f $$f; then d=.; else d=$(srcdir); fi; \ + cp $$d/$$f $(distdir) || exit 1; done + +install-data-local: install-ms-lib install-def-file + +uninstall-local: uninstall-ms-lib uninstall-def-file + +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@install-data-hook: +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mkdir -p $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mv $(DESTDIR)$(libdir)/libgthread-2.0.so.0 $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ mv $(DESTDIR)$(libdir)/libgthread-2.0.so.0.$(LT_CURRENT).$(LT_REVISION) $(DESTDIR)$(libdir)/$(GLIB_RUNTIME_LIBDIR) +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ rm -f $(DESTDIR)$(libdir)/libgthread-2.0.so +@HAVE_GLIB_RUNTIME_LIBDIR_TRUE@ ln -s $(GLIB_RUNTIME_LIBDIR)/libgthread-2.0.so.0.$(LT_CURRENT).$(LT_REVISION) $(DESTDIR)$(libdir)/libgthread-2.0.so + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/gthread/gthread.rc b/gthread/gthread.rc new file mode 100644 index 0000000..2868bc0 --- /dev/null +++ b/gthread/gthread.rc @@ -0,0 +1,30 @@ +#include + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 2,48,0,0 + PRODUCTVERSION 2,48,0,0 + FILEFLAGSMASK 0 + FILEFLAGS 0 + FILEOS VOS__WINDOWS32 + FILETYPE VFT_DLL + FILESUBTYPE VFT2_UNKNOWN + BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "The GLib developer community" + VALUE "FileDescription", "GThread" + VALUE "FileVersion", "2.48.0.0" + VALUE "InternalName", "libgthread-2.0-0" + VALUE "LegalCopyright", "Copyright © 1995-2011 Peter Mattis, Spencer Kimball, Josh MacDonald, Sebastian Wilhelmi and others." + VALUE "OriginalFilename", "libgthread-2.0-0.dll" + VALUE "ProductName", "GLib" + VALUE "ProductVersion", "2.48.0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END + END diff --git a/gthread/makefile.msc b/gthread/makefile.msc new file mode 100644 index 0000000..edcc6c9 --- /dev/null +++ b/gthread/makefile.msc @@ -0,0 +1,26 @@ +## Makefile for building the gthread dll with Microsoft C +## Use: nmake -f makefile.msc install + +TOP = ..\.. + +!INCLUDE ..\build\win32\make.msc + +################################################################ + +INCLUDES = -FImsvc_recommended_pragmas.h -I .. -I . -I ..\glib +DEFINES = -DHAVE_CONFIG_H -DG_LOG_DOMAIN=\"GThread\" +all : \ + libgthread-2.0-0.dll + +gthread_OBJECTS = \ + gthread-impl.obj + +gthread-impl.obj : gthread-impl.c gthread-win32.c + $(CC) -c $(CFLAGS) gthread-impl.c + +gthread.res : gthread.rc + rc -DBUILDNUMBER=0 -r -fo gthread.res gthread.rc + +libgthread-2.0-0.dll : $(gthread_OBJECTS) gthread.def gthread.res + $(CC) $(CFLAGS) -LD -Fe$@ $(gthread_OBJECTS) gthread.res \ + ..\glib\glib-2.0.lib $(DEPCLIBS) user32.lib $(LDFLAGS) /implib:gthread-2.0.lib /def:gthread.def diff --git a/gtk-doc.make b/gtk-doc.make new file mode 100644 index 0000000..45a3350 --- /dev/null +++ b/gtk-doc.make @@ -0,0 +1,304 @@ +# -*- mode: makefile -*- + +#################################### +# Everything below here is generic # +#################################### + +if GTK_DOC_USE_LIBTOOL +GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +GTKDOC_RUN = $(LIBTOOL) --mode=execute +else +GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) +GTKDOC_RUN = +endif + +# We set GPATH here; this gives us semantics for GNU make +# which are more like other make's VPATH, when it comes to +# whether a source that is a target of one rule is then +# searched for in VPATH/GPATH. +# +GPATH = $(srcdir) + +TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE) + +SETUP_FILES = \ + $(content_files) \ + $(expand_content_files) \ + $(DOC_MAIN_SGML_FILE) \ + $(DOC_MODULE)-sections.txt \ + $(DOC_MODULE)-overrides.txt + +EXTRA_DIST = \ + $(HTML_IMAGES) \ + $(SETUP_FILES) + +DOC_STAMPS=setup-build.stamp scan-build.stamp sgml-build.stamp \ + html-build.stamp pdf-build.stamp \ + sgml.stamp html.stamp pdf.stamp + +SCANOBJ_FILES = \ + $(DOC_MODULE).args \ + $(DOC_MODULE).hierarchy \ + $(DOC_MODULE).interfaces \ + $(DOC_MODULE).prerequisites \ + $(DOC_MODULE).signals + +REPORT_FILES = \ + $(DOC_MODULE)-undocumented.txt \ + $(DOC_MODULE)-undeclared.txt \ + $(DOC_MODULE)-unused.txt + +gtkdoc-check.test: Makefile + $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \ + echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \ + chmod +x $@ + +CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test + +if GTK_DOC_BUILD_HTML +HTML_BUILD_STAMP=html-build.stamp +else +HTML_BUILD_STAMP= +endif +if GTK_DOC_BUILD_PDF +PDF_BUILD_STAMP=pdf-build.stamp +else +PDF_BUILD_STAMP= +endif + +all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) +.PHONY: all-gtk-doc + +if ENABLE_GTK_DOC +all-local: all-gtk-doc +endif + +docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) + +$(REPORT_FILES): sgml-build.stamp + +#### setup #### + +GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_$(V)) +GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SETUP_0=@echo " DOC Preparing build"; + +setup-build.stamp: + -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ + files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ + if test "x$$files" != "x" ; then \ + for file in $$files ; do \ + destdir=`dirname $(abs_builddir)/$$file`; \ + test -d "$$destdir" || mkdir -p "$$destdir"; \ + test -f $(abs_srcdir)/$$file && \ + cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ + done; \ + fi; \ + fi + $(AM_V_at)touch setup-build.stamp + + +#### scan #### + +GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_$(V)) +GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files"; + +GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_$(V)) +GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects"; + +scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) + $(GTK_DOC_V_SCAN)_source_dir='' ; \ + for i in $(DOC_SOURCE_DIR) ; do \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ + done ; \ + gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) + $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ + scanobj_options=""; \ + gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + scanobj_options="--verbose"; \ + fi; \ + fi; \ + CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ + gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ + else \ + for i in $(SCANOBJ_FILES) ; do \ + test -f $$i || touch $$i ; \ + done \ + fi + $(AM_V_at)touch scan-build.stamp + +$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp + @true + +#### xml #### + +GTK_DOC_V_XML=$(GTK_DOC_V_XML_$(V)) +GTK_DOC_V_XML_=$(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XML_0=@echo " DOC Building XML"; + +sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent + $(GTK_DOC_V_XML)_source_dir='' ; \ + for i in $(DOC_SOURCE_DIR) ; do \ + _source_dir="$${_source_dir} --source-dir=$$i" ; \ + done ; \ + gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) + $(AM_V_at)touch sgml-build.stamp + +sgml.stamp: sgml-build.stamp + @true + +xml/gtkdocentities.ent: Makefile + $(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + echo ""; \ + ) > $@ + +#### html #### + +GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_$(V)) +GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_HTML_0=@echo " DOC Building HTML"; + +GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_$(V)) +GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references"; + +html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) + $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ + mkhtml_options=""; \ + gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + mkhtml_options="$$mkhtml_options --verbose"; \ + fi; \ + fi; \ + gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ + if test "$$?" = "0"; then \ + mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ + fi; \ + cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) + -@test "x$(HTML_IMAGES)" = "x" || \ + for file in $(HTML_IMAGES) ; do \ + if test -f $(abs_srcdir)/$$file ; then \ + cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ + fi; \ + if test -f $(abs_builddir)/$$file ; then \ + cp $(abs_builddir)/$$file $(abs_builddir)/html; \ + fi; \ + done; + $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) + $(AM_V_at)touch html-build.stamp + +#### pdf #### + +GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_$(V)) +GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) +GTK_DOC_V_PDF_0=@echo " DOC Building PDF"; + +pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) + $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ + mkpdf_options=""; \ + gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ + if test "$$?" = "0"; then \ + if test "x$(V)" = "x1"; then \ + mkpdf_options="$$mkpdf_options --verbose"; \ + fi; \ + fi; \ + if test "x$(HTML_IMAGES)" != "x"; then \ + for img in $(HTML_IMAGES); do \ + part=`dirname $$img`; \ + echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ + if test $$? != 0; then \ + mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ + fi; \ + done; \ + fi; \ + gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) + $(AM_V_at)touch pdf-build.stamp + +############## + +clean-local: + @rm -f *~ *.bak + @rm -rf .libs + @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \ + rm -f $(DOC_MODULE).types; \ + fi + @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-sections" ; then \ + rm -f $(DOC_MODULE)-sections.txt; \ + fi + +distclean-local: + @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ + $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt + @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ + rm -f $(SETUP_FILES) $(DOC_MODULE).types; \ + fi + +maintainer-clean-local: + @rm -rf xml html + +install-data-local: + @installfiles=`echo $(builddir)/html/*`; \ + if test "$$installfiles" = '$(builddir)/html/*'; \ + then echo 1>&2 'Nothing to install' ; \ + else \ + if test -n "$(DOC_MODULE_VERSION)"; then \ + installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ + else \ + installdir="$(DESTDIR)$(TARGET_DIR)"; \ + fi; \ + $(mkinstalldirs) $${installdir} ; \ + for i in $$installfiles; do \ + echo ' $(INSTALL_DATA) '$$i ; \ + $(INSTALL_DATA) $$i $${installdir}; \ + done; \ + if test -n "$(DOC_MODULE_VERSION)"; then \ + mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ + $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ + fi; \ + $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ + fi + +uninstall-local: + @if test -n "$(DOC_MODULE_VERSION)"; then \ + installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ + else \ + installdir="$(DESTDIR)$(TARGET_DIR)"; \ + fi; \ + rm -rf $${installdir} + +# +# Require gtk-doc when making dist +# +if HAVE_GTK_DOC +dist-check-gtkdoc: docs +else +dist-check-gtkdoc: + @echo "*** gtk-doc is needed to run 'make dist'. ***" + @echo "*** gtk-doc was not found when 'configure' ran. ***" + @echo "*** please install gtk-doc and rerun 'configure'. ***" + @false +endif + +dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local + @mkdir $(distdir)/html + @cp ./html/* $(distdir)/html + @-cp ./$(DOC_MODULE).pdf $(distdir)/ + @-cp ./$(DOC_MODULE).types $(distdir)/ + @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ + @cd $(distdir) && rm -f $(DISTCLEANFILES) + @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html + +.PHONY : dist-hook-local docs diff --git a/install-sh b/install-sh new file mode 100755 index 0000000..59990a1 --- /dev/null +++ b/install-sh @@ -0,0 +1,508 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2014-09-12.12; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# 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 +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + # $RANDOM is not portable (e.g. dash); use it when possible to + # lower collision chance + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 + + # As "mkdir -p" follows symlinks and we work in /tmp possibly; so + # create the $tmpdir first (and fail if unsuccessful) to make sure + # that nobody tries to guess the $tmpdir name. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/ltmain.sh b/ltmain.sh new file mode 100644 index 0000000..147d758 --- /dev/null +++ b/ltmain.sh @@ -0,0 +1,11156 @@ +#! /bin/sh +## DO NOT EDIT - This file generated from ./build-aux/ltmain.in +## by inline-source v2014-01-03.01 + +# libtool (GNU libtool) 2.4.6 +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +PROGRAM=libtool +PACKAGE=libtool +VERSION="2.4.6 Debian-2.4.6-0.1" +package_revision=2.4.6 + + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2015-01-20.17; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# Copyright (C) 2004-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# 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 3 of the License, or +# (at your option) any later version. + +# As a special exception to the GNU General Public License, if you distribute +# this file as part of a program or library that is built using GNU Libtool, +# you may include this file under the same distribution terms that you use +# for the rest of that program. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac +fi + +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + fi" +done + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" + +# There are apparently some retarded systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + + +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. + +: ${CP="cp -f"} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} + + +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## + +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' + +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" + + +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: + +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 + +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` + +# Make sure we have an absolute progpath for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` + progdir=`cd "$progdir" && pwd` + progpath=$progdir/$progname + ;; + *) + _G_IFS=$IFS + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS=$_G_IFS + test -x "$progdir/$progname" && break + done + IFS=$_G_IFS + test -n "$progdir" || progdir=`pwd` + progpath=$progdir/$progname + ;; +esac + + +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. + +opt_dry_run=false +opt_quiet=false +opt_verbose=false + +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } + + require_term_colors=: +} + + +## ----------------- ## +## Function library. ## +## ----------------- ## + +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. + + +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. + + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # useable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $debug_cmd + + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= + + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then + + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$_G_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + _G_dir_list=$_G_directory_path:$_G_dir_list + + # If the last portion added has no slash in it, the list is done + case $_G_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` + done + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` + + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$_G_dir" 2>/dev/null || : + done + IFS=$func_mkdir_p_IFS + + # Bail out if we (or some other process) failed to create a directory. + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" + fi +} + + +# func_mktempdir [BASENAME] +# ------------------------- +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, BASENAME is the basename for that directory. +func_mktempdir () +{ + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} + + if test : = "$opt_dry_run"; then + # Return a directory name, but don't create it in dry-run mode + _G_tmpdir=$_G_template-$$ + else + + # If mktemp works, use that first and foremost + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` + + if test ! -d "$_G_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () +{ + $debug_cmd + + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in + *[\\\`\"\$]*) + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + fi + + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" + ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; + esac + + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" + else + func_append func_quote_for_eval_result "$_G_quoted_arg" + fi + shift + done +} + + +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# Set a version string for this script. +scriptversion=2014-01-07.03; # UTC + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# Copyright (C) 2010-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# 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 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# warranty; '. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# to the main code. A hook is just a named list of of function, that can +# be run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It is assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook funcions.n" ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + eval $_G_hook '"$@"' + + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + done + + func_quote_for_eval ${1+"$@"} + func_run_hooks_result=$func_quote_for_eval_result +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list in your hook function, remove any +# options that you action, and then pass back the remaining unprocessed +# options in '_result', escaped suitably for +# 'eval'. Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# +# func_quote_for_eval ${1+"$@"} +# my_options_prep_result=$func_quote_for_eval_result +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# # Note that for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# ;; +# *) set dummy "$_G_opt" "$*"; shift; break ;; +# esac +# done +# +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# +# func_quote_for_eval ${1+"$@"} +# my_option_validation_result=$func_quote_for_eval_result +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll alse need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd + + func_options_prep ${1+"$@"} + eval func_parse_options \ + ${func_options_prep_result+"$func_options_prep_result"} + eval func_validate_options \ + ${func_parse_options_result+"$func_parse_options_result"} + + eval func_run_hooks func_options \ + ${func_validate_options_result+"$func_validate_options_result"} + + # save modified positional parameters for caller + func_options_result=$func_run_hooks_result +} + + +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propogate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before +# returning. +func_hookable func_options_prep +func_options_prep () +{ + $debug_cmd + + # Option defaults: + opt_verbose=false + opt_warning_types= + + func_run_hooks func_options_prep ${1+"$@"} + + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result +} + + +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () +{ + $debug_cmd + + func_parse_options_result= + + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + func_run_hooks func_parse_options ${1+"$@"} + + # Adjust func_parse_options positional parameters to match + eval set dummy "$func_run_hooks_result"; shift + + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break + + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; + + --warnings|--warning|-W) + test $# = 0 && func_missing_arg $_G_opt && break + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result +} + + +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () +{ + $debug_cmd + + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" + + func_run_hooks func_validate_options ${1+"$@"} + + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE + + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result +} + + + +## ----------------- ## +## Helper functions. ## +## ----------------- ## + +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + + +# func_help +# --------- +# Echo long help message to standard output and exit. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message" + exit 0 +} + + +# func_missing_arg ARGNAME +# ------------------------ +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $debug_cmd + + func_error "Missing argument for '$1'." + exit_cmd=exit +} + + +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +# splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + test "x$func_split_equals_lhs" = "x$1" \ + && func_split_equals_rhs= + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () +{ + $debug_cmd + + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} + + +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} + + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /(C)/!b go + :more + /\./!{ + N + s|\n# | | + b more + } + :go + /^# Written by /,/# warranty; / { + s|^# || + s|^# *$|| + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + p + } + /^# Written by / { + s|^# || + p + } + /^warranty; /q' < "$progpath" + + exit $? +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: + +# Set a version string. +scriptversion='(GNU libtool) 2.4.6' + + +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + $debug_cmd + + $warning_func ${1+"$@"} +} + + +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --mode=MODE use operation mode MODE + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" + +# Additional text appended to 'usage_message' in response to '--help'. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname (GNU libtool) 2.4.6 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi + + +# func_fatal_configuration ARG... +# ------------------------------- +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func__fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." +} + + +# func_config +# ----------- +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + + +# func_features +# ------------- +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test yes = "$build_libtool_libs"; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test yes = "$build_old_libs"; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + + +# func_enable_tag TAGNAME +# ----------------------- +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname=$1 + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + + +# func_check_version_match +# ------------------------ +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_preserve_dup_deps=false + opt_quiet=false + + nonopt= + preserve_args= + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + esac + + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result +} +func_add_hook func_options_prep libtool_options_prep + + +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd + + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $_G_opt" + exit_cmd=exit + break + ;; + esac + shift + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; + + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; + esac + done + + + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result +} +func_add_hook func_parse_options libtool_parse_options + + + +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift + fi + + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } + + # Pass back the unparsed argument list + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result +} +func_add_hook func_validate_options libtool_validate_options + + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + + + +## ----------- ## +## Main. ## +## ----------- ## + +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if 'file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case $lalib_p_line in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test yes = "$lalib_p" +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $debug_cmd + + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# 'FILE.' does not work on cygwin managed mounts. +func_source () +{ + $debug_cmd + + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case $lt_sysroot:$1 in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result='='$func_stripname_result + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $debug_cmd + + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with '--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' + else + write_lobj=none + fi + + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $debug_cmd + + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result= + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result"; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $debug_cmd + + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $debug_cmd + + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $debug_cmd + + if test -z "$2" && test -n "$1"; then + func_error "Could not determine host file name corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result=$1 + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $debug_cmd + + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " '$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result=$3 + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $debug_cmd + + case $4 in + $1 ) func_to_host_path_result=$3$func_to_host_path_result + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via '$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $debug_cmd + + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $debug_cmd + + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result=$1 +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via '$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $debug_cmd + + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd=func_convert_path_$func_stripname_result + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $debug_cmd + + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result=$1 +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + +# func_mode_compile arg... +func_mode_compile () +{ + $debug_cmd + + # Get the compilation command and the source file. + base_compile= + srcfile=$nonopt # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg=$arg + arg_mode=normal + ;; + + target ) + libobj=$arg + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify '-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs=$IFS; IFS=, + for arg in $args; do + IFS=$save_ifs + func_append_quoted lastarg "$arg" + done + IFS=$save_ifs + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg=$srcfile + srcfile=$arg + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with '-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj=$func_basename_result + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from '$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name '$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test yes = "$build_old_libs"; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test yes = "$need_locks"; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test warn = "$need_locks"; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test yes = "$build_libtool_libs"; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test no != "$pic_mode"; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test yes = "$suppress_opt"; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test yes = "$compiler_c_o"; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test no != "$need_locks"; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a 'standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to '-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the '--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the 'install' or 'cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with '-') are ignored. + +Every other argument is treated as a filename. Files ending in '.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. + +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode '$opt_mode'" + ;; + esac + + echo + $ECHO "Try '$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test : = "$opt_help"; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + $SED '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $debug_cmd + + # The first argument is the command name. + cmd=$nonopt + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "'$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "'$file' was not linked with '-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir=$func_dirname_result + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir=$func_dirname_result + ;; + + *) + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir=$absdir + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic=$magic + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file=$progdir/$program + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file=$progdir/$program + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd=\$cmd$args + fi +} + +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $debug_cmd + + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "'$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument '$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and '=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_quiet && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the '$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the '$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the '$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $debug_cmd + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac + then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=false + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=: ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the '$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir=$func_dirname_result + destname=$func_basename_result + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "'$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "'$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir=$func_dirname_result + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking '$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname=$1 + shift + + srcname=$realname + test -n "$relink_command" && srcname=${realname}T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme=$stripme + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try 'ln -sf' first, because the 'ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib=$destdir/$realname + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name=$func_basename_result + instname=$dir/${name}i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest=$destfile + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to '$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test yes = "$build_old_libs"; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext= + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=.exe + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script '$wrapper'" + + finalize=: + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test no = "$fast_install" && test -n "$relink_command"; then + $opt_dry_run || { + if $finalize; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file=$func_basename_result + outputname=$tmpdir/$file + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_quiet || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink '$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file=$outputname + else + func_warning "cannot relink '$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name=$func_basename_result + + # Set up the ranlib parameters. + oldlib=$destdir/$name + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run '$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test install = "$opt_mode" && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms=${my_outputname}S.c + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist=$output_objdir/$my_outputname.nm + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* External symbol declarations for the compiler. */\ +" + + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols=$output_objdir/$outputname.exp + $opt_dry_run || { + $RM $export_symbols + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from '$dlprefile'" + func_basename "$dlprefile" + name=$func_basename_result + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename= + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname"; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename=$func_basename_result + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename"; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + $my_pic_p && pic_flag_for_symtable=" $pic_flag" + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' + + # Transform the symbol file into the correct name. + symfileobj=$output_objdir/${my_outputname}S.$objext + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for '$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $debug_cmd + + win32_libid_type=unknown + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s|.*|import| + p + q + } + }'` + ;; + esac + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $debug_cmd + + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $debug_cmd + + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1"; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result= + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test yes = "$lock_old_archive_extraction"; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $debug_cmd + + my_gentop=$1; shift + my_oldlibs=${1+"$@"} + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib=$func_basename_result + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" + cd "$darwin_curdir" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result=$my_oldobjs +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory where it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test yes = "$fast_install"; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + \$ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* declarations of non-ANSI functions */ +#if defined __MINGW32__ +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined __CYGWIN__ +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined other_platform || defined ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined _MSC_VER +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +#elif defined __MINGW32__ +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined __CYGWIN__ +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined other platforms ... */ +#endif + +#if defined PATH_MAX +# define LT_PATHMAX PATH_MAX +#elif defined MAXPATHLEN +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free (stale); stale = 0; } \ +} while (0) + +#if defined LT_DEBUGWRAPPER +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + size_t tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined HAVE_DOS_BASED_FILE_SYSTEM + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined HAVE_DOS_BASED_FILE_SYSTEM + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = (size_t) (q - p); + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (STREQ (str, pat)) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + size_t len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + size_t orig_value_len = strlen (orig_value); + size_t add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[--len] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $debug_cmd + + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $debug_cmd + + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # what system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll that has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + os2dllname= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=false + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module=$wl-single_module + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg=$1 + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir=$arg + prev= + continue + ;; + dlfiles|dlprefiles) + $preload || { + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=: + } + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test no = "$dlself"; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test dlprefiles = "$prev"; then + dlself=yes + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test dlfiles = "$prev"; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols=$arg + test -f "$arg" \ + || func_fatal_error "symbol file '$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex=$arg + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + if test none != "$pic_object"; then + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + fi + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file '$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; + precious_regex) + precious_files_regex=$arg + prev= + continue + ;; + release) + release=-$arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test rpath = "$prev"; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds=$arg + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg=$arg + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "'-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test X-export-symbols = "X$arg"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between '-L' and '$1'" + else + func_fatal_error "need path for '-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test X-lc = "X$arg" || test X-lm = "X$arg"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test X-lc = "X$arg" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc due to us having libc/libc_r. + test X-lc = "X$arg" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test X-lc = "X$arg" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test X-lc = "X$arg" && continue + ;; + esac + elif test X-lc_r = "X$arg"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -mllvm) + prev=mllvm + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module=$wl-multi_module + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "'-no-install' is ignored for $host" + func_warning "assuming '-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -os2dllname) + prev=os2dllname + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -specs=* GCC specs files + # -stdlib=* select c++ std lib with clang + # -fsanitize=* Clang/GCC memory and address sanitizer + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ + -specs=*|-fsanitize=*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + -Z*) + if test os2 = "`expr $host : '.*\(os2\)'`"; then + # OS/2 uses -Zxxx to specify OS/2-specific options + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case $arg in + -Zlinker | -Zstack) + prev=xcompiler + ;; + esac + continue + else + # Otherwise treat like 'Some other compiler flag' below + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + fi + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + test none = "$pic_object" || { + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + } + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test dlfiles = "$prev"; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test dlprefiles = "$prev"; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the '$prevarg' option requires an argument" + + if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname=$func_basename_result + libobjs_save=$libobjs + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + # Definition is injected by LT_CONFIG during libtool generation. + func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" + + func_dirname "$output" "/" "" + output_objdir=$func_dirname_result$objdir + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test lib = "$linkmode"; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=false + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test lib,link = "$linkmode,$pass"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs=$tmp_deplibs + fi + + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass"; then + libs=$deplibs + deplibs= + fi + if test prog = "$linkmode"; then + case $pass in + dlopen) libs=$dlfiles ;; + dlpreopen) libs=$dlprefiles ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test lib,dlpreopen = "$linkmode,$pass"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs=$dlprefiles + fi + if test dlopen = "$pass"; then + # Collect dlpreopened libraries + save_deplibs=$deplibs + deplibs= + fi + + for deplib in $libs; do + lib= + found=false + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test lib != "$linkmode" && test prog != "$linkmode"; then + func_warning "'-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test lib = "$linkmode"; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib=$searchdir/lib$name$search_ext + if test -f "$lib"; then + if test .la = "$search_ext"; then + found=: + else + found=false + fi + break 2 + fi + done + done + if $found; then + # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll=$l + done + if test "X$ll" = "X$old_library"; then # only static version available + found=false + func_dirname "$lib" "" "." + ladir=$func_dirname_result + lib=$ladir/$old_library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + else + # deplib doesn't seem to be a libtool library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + ;; # -l + *.ltframework) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test conv = "$pass" && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + if test scan = "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "'-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test link = "$pass"; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=false + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=: + fi + ;; + pass_all) + valid_a_lib=: + ;; + esac + if $valid_a_lib; then + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + else + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + fi + ;; + esac + continue + ;; + prog) + if test link != "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + elif test prog = "$linkmode"; then + if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=: + continue + ;; + esac # case $deplib + + $found || test -f "$lib" \ + || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "'$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir=$func_dirname_result + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass" || + { test prog != "$linkmode" && test lib != "$linkmode"; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test conv = "$pass"; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + elif test prog != "$linkmode" && test lib != "$linkmode"; then + func_fatal_error "'$lib' is not a convenience library" + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test yes = "$prefer_static_libs" || + test built,no = "$prefer_static_libs,$installed"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib=$l + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + + # This library was specified with -dlopen. + if test dlopen = "$pass"; then + test -z "$libdir" \ + && func_fatal_error "cannot -dlopen a convenience library: '$lib'" + if test -z "$dlname" || + test yes != "$dlopen_support" || + test no = "$build_libtool_libs" + then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of '$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir=$ladir + fi + ;; + esac + func_basename "$lib" + laname=$func_basename_result + + # Find the relevant object directory and library name. + if test yes = "$installed"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir + else + dir=$lt_sysroot$libdir + absdir=$lt_sysroot$libdir + fi + test yes = "$hardcode_automatic" && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir=$ladir + absdir=$abs_ladir + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir=$ladir/$objdir + absdir=$abs_ladir/$objdir + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test dlpreopen = "$pass"; then + if test -z "$libdir" && test prog = "$linkmode"; then + func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" + fi + case $host in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test lib = "$linkmode"; then + deplibs="$dir/$old_library $deplibs" + elif test prog,link = "$linkmode,$pass"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test prog = "$linkmode" && test link != "$pass"; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=false + if test no != "$link_all_deplibs" || test -z "$library_names" || + test no = "$build_libtool_libs"; then + linkalldeplibs=: + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if $linkalldeplibs; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test prog,link = "$linkmode,$pass"; then + if test -n "$library_names" && + { { test no = "$prefer_static_libs" || + test built,yes = "$prefer_static_libs,$installed"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then + # Make sure the rpath contains only unique directories. + case $temp_rpath: in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if $alldeplibs && + { test pass_all = "$deplibs_check_method" || + { test yes = "$build_libtool_libs" && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test built = "$use_static_libs" && test yes = "$installed"; then + use_static_libs=no + fi + if test -n "$library_names" && + { test no = "$use_static_libs" || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc* | *os2*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test no = "$installed"; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule= + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule=$dlpremoduletest + break + fi + done + if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then + echo + if test prog = "$linkmode"; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test lib = "$linkmode" && + test yes = "$hardcode_into_libs"; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname=$1 + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname=$dlname + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc* | *os2*) + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + esac + eval soname=\"$soname_spec\" + else + soname=$realname + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot=$soname + func_basename "$soroot" + soname=$func_basename_result + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from '$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for '$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test prog = "$linkmode" || test relink != "$opt_mode"; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test no = "$hardcode_direct"; then + add=$dir/$linklib + case $host in + *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; + *-*-sysv4*uw2*) add_dir=-L$dir ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir=-L$dir ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we cannot + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library"; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add=$dir/$old_library + fi + elif test -n "$old_library"; then + add=$dir/$old_library + fi + fi + esac + elif test no = "$hardcode_minus_L"; then + case $host in + *-*-sunos*) add_shlibpath=$dir ;; + esac + add_dir=-L$dir + add=-l$name + elif test no = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + relink) + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$dir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$absdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test yes != "$lib_linked"; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test prog = "$linkmode"; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test yes != "$hardcode_direct" && + test yes != "$hardcode_minus_L" && + test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test prog = "$linkmode" || test relink = "$opt_mode"; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$libdir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$libdir + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add=-l$name + elif test yes = "$hardcode_automatic"; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib"; then + add=$inst_prefix_dir$libdir/$linklib + else + add=$libdir/$linklib + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir=-L$libdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + fi + + if test prog = "$linkmode"; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test prog = "$linkmode"; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test unsupported != "$hardcode_direct"; then + test -n "$old_library" && linklib=$old_library + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test yes = "$build_libtool_libs"; then + # Not a shared library + if test pass_all != "$deplibs_check_method"; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system cannot link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test yes = "$module"; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test lib = "$linkmode"; then + if test -n "$dependency_libs" && + { test yes != "$hardcode_into_libs" || + test yes = "$build_old_libs" || + test yes = "$link_static"; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs=$temp_deplibs + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test no != "$link_all_deplibs"; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path=$deplib ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of '$dir'" + absdir=$dir + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names"; then + for tmp in $deplibrary_names; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl"; then + depdepl=$absdir/$objdir/$depdepl + darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" + func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" + path= + fi + fi + ;; + *) + path=-L$absdir/$objdir + ;; + esac + else + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "'$deplib' seems to be moved" + + path=-L$absdir + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test link = "$pass"; then + if test prog = "$linkmode"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs=$newdependency_libs + if test dlpreopen = "$pass"; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test dlopen != "$pass"; then + test conv = "$pass" || { + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + } + + if test prog,link = "$linkmode,$pass"; then + vars="compile_deplibs finalize_deplibs" + else + vars=deplibs + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + + # Add Sun CC postdeps if required: + test CXX = "$tagname" && { + case $host_os in + linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + + solaris*) + func_cc_basename "$CC" + case $func_cc_basename_result in + CC* | sunCC*) + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + esac + } + + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i= + ;; + esac + if test -n "$i"; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test prog = "$linkmode"; then + dlfiles=$newdlfiles + fi + if test prog = "$linkmode" || test lib = "$linkmode"; then + dlprefiles=$newdlprefiles + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "'-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "'-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs=$output + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form 'libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test no = "$module" \ + && func_fatal_help "libtool library '$output' must begin with 'lib'" + + if test no != "$need_lib_prefix"; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test pass_all != "$deplibs_check_method"; then + func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test no = "$dlself" \ + || func_warning "'-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test 1 -lt "$#" \ + && func_warning "ignoring multiple '-rpath's for a libtool library" + + install_libdir=$1 + + oldlibs= + if test -z "$rpath"; then + if test yes = "$build_libtool_libs"; then + # Building a libtool convenience library. + # Some compilers have problems with a '.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "'-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs=$IFS; IFS=: + set dummy $vinfo 0 0 0 + shift + IFS=$save_ifs + + test -n "$7" && \ + func_fatal_help "too many parameters to '-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major=$1 + number_minor=$2 + number_revision=$3 + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # that has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|freebsd-elf|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_revision + ;; + freebsd-aout|qnx|sunos) + current=$number_major + revision=$number_minor + age=0 + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_minor + lt_irix_increment=no + ;; + *) + func_fatal_configuration "$modename: unknown library version type '$version_type'" + ;; + esac + ;; + no) + current=$1 + revision=$2 + age=$3 + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT '$current' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION '$revision' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE '$age' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE '$age' is greater than the current interface number '$current'" + func_fatal_error "'$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + # On Darwin other compilers + case $CC in + nagfor*) + verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + ;; + *) + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + esac + ;; + + freebsd-aout) + major=.$current + versuffix=.$current.$revision + ;; + + freebsd-elf) + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + irix | nonstopux) + if test no = "$lt_irix_increment"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring=$verstring_prefix$major.$revision + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test 0 -ne "$loop"; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring_prefix$major.$iface:$verstring + done + + # Before this point, $major must not contain '.'. + major=.$major + versuffix=$major.$revision + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=.$current.$age.$revision + verstring=$current.$age.$revision + + # Add in all the interfaces that we are compatible with. + loop=$age + while test 0 -ne "$loop"; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring:$iface.0 + done + + # Make executables depend on our current version. + func_append verstring ":$current.0" + ;; + + qnx) + major=.$current + versuffix=.$current + ;; + + sco) + major=.$current + versuffix=.$current + ;; + + sunos) + major=.$current + versuffix=.$current.$revision + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 file systems. + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + + *) + func_fatal_configuration "unknown library version type '$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring=0.0 + ;; + esac + if test no = "$need_version"; then + versuffix= + else + versuffix=.0.0 + fi + fi + + # Remove version info from name if versioning should be avoided + if test yes,no = "$avoid_version,$need_version"; then + major= + versuffix= + verstring= + fi + + # Check to see if the archive will have undefined symbols. + if test yes = "$allow_undefined"; then + if test unsupported = "$allow_undefined_flag"; then + if test yes = "$build_old_libs"; then + func_warning "undefined symbols not allowed in $host shared libraries; building static only" + build_libtool_libs=no + else + func_fatal_error "can't build $host shared library unless -no-undefined is specified" + fi + fi + else + # Don't allow undefined symbols. + allow_undefined_flag=$no_undefined_flag + fi + + fi + + func_generate_dlsyms "$libname" "$libname" : + func_append libobjs " $symfileobj" + test " " = "$libobjs" && libobjs= + + if test relink != "$opt_mode"; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) + if test -n "$precious_files_regex"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles=$dlfiles + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles=$dlprefiles + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test yes = "$build_libtool_libs"; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test yes = "$build_libtool_need_lc"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release= + versuffix= + major= + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib=$potent_lib + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | $SED 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; + *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib= + ;; + esac + fi + if test -n "$a_deplib"; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib=$potent_lib # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs= + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + for i in $predeps $postdeps; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test none = "$deplibs_check_method"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test yes = "$droppeddeps"; then + if test yes = "$module"; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test no = "$allow_undefined"; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs=$new_libs + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test yes = "$build_libtool_libs"; then + # Remove $wl instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test yes = "$hardcode_into_libs"; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath=$finalize_rpath + test relink = "$opt_mode" || rpath=$compile_rpath$rpath + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath=$finalize_shlibpath + test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname=$1 + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname=$realname + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib=$output_objdir/$realname + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols=$output_objdir/$libname.uexp + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + func_dll_def_p "$export_symbols" || { + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols=$export_symbols + export_symbols= + always_export_symbols=yes + } + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs=$IFS; IFS='~' + for cmd1 in $cmds; do + IFS=$save_ifs + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test yes = "$try_normal_branch" \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=$output_objdir/$output_la.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS=$save_ifs + if test -n "$export_symbols_regex" && test : != "$skipped_export"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test : != "$skipped_export" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs=$tmp_deplibs + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test yes = "$compiler_needs_object" && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test : != "$skipped_export" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then + output=$output_objdir/$output_la.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then + output=$output_objdir/$output_la.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test yes = "$compiler_needs_object"; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-$k.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test -z "$objlist" || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test 1 -eq "$k"; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-$k.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-$k.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + ${skipped_export-false} && { + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + } + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs=$IFS; IFS='~' + for cmd in $concat_cmds; do + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + ${skipped_export-false} && { + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + } + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs=$IFS; IFS='~' + for cmd in $cmds; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test yes = "$module" || test yes = "$export_dynamic"; then + # On all known operating systems, these are identical. + dlname=$soname + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "'-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object '$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj=$output + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # if reload_cmds runs $LD directly, get rid of -Wl from + # whole_archive_flag_spec and hope we can get by with turning comma + # into space. + case $reload_cmds in + *\$LD[\ \$]*) wl= ;; + esac + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags + else + gentop=$output_objdir/${obj}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test yes = "$build_libtool_libs" || libobjs=$non_pic_objects + + # Create the old-style object. + reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs + + output=$obj + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + test yes = "$build_libtool_libs" || { + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + } + + if test -n "$pic_flag" || test default != "$pic_mode"; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output=$libobj + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "'-release' is ignored for programs" + + $preload \ + && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ + && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test CXX = "$tagname"; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " $wl-bind_at_load" + func_append finalize_command " $wl-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs=$new_libs + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath=$rpath + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath=$rpath + + if test -n "$libobjs" && test yes = "$build_old_libs"; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" false + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=: + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=false + ;; + *cygwin* | *mingw* ) + test yes = "$build_libtool_libs" || wrappers_required=false + ;; + *) + if test no = "$need_relink" || test yes != "$build_libtool_libs"; then + wrappers_required=false + fi + ;; + esac + $wrappers_required || { + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command=$compile_command$compile_rpath + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.$objext"; then + func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' + fi + + exit $exit_status + } + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test yes = "$no_install"; then + # We don't need to create a wrapper script. + link_command=$compile_var$compile_command$compile_rpath + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + case $hardcode_action,$fast_install in + relink,*) + # Fast installation is not supported + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "'$output' will be relinked during installation" + ;; + *,yes) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + ;; + *,no) + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + ;; + *,needless) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command= + ;; + esac + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource=$output_path/$objdir/lt-$output_name.c + cwrapper=$output_path/$output_name.exe + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host"; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + case $build_libtool_libs in + convenience) + oldobjs="$libobjs_save $symfileobj" + addlibs=$convenience + build_libtool_libs=no + ;; + module) + oldobjs=$libobjs_save + addlibs=$old_convenience + build_libtool_libs=no + ;; + *) + oldobjs="$old_deplibs $non_pic_objects" + $preload && test -f "$symfileobj" \ + && func_append oldobjs " $symfileobj" + addlibs=$old_convenience + ;; + esac + + if test -n "$addlibs"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase=$func_basename_result + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj"; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test -z "$oldobjs"; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test yes = "$build_old_libs" && old_library=$libname.$libext + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test yes = "$hardcode_automatic"; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test yes = "$installed"; then + if test -z "$install_libdir"; then + break + fi + output=$output_objdir/${outputname}i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name=$func_basename_result + func_resolve_sysroot "$deplib" + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs=$newdependency_libs + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles=$newdlprefiles + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles=$newdlprefiles + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test -n "$bindir"; then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result/$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test no,yes = "$installed,$need_relink"; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +if test link = "$opt_mode" || test relink = "$opt_mode"; then + func_mode_link ${1+"$@"} +fi + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $debug_cmd + + RM=$nonopt + files= + rmforce=false + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=: ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir=$func_dirname_result + if test . = "$dir"; then + odir=$objdir + else + odir=$dir/$objdir + fi + func_basename "$file" + name=$func_basename_result + test uninstall = "$opt_mode" && odir=$dir + + # Remember odir for removal later, being careful to avoid duplicates + if test clean = "$opt_mode"; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif $rmforce; then + continue + fi + + rmfiles=$file + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case $opt_mode in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && test none != "$pic_object"; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && test none != "$non_pic_object"; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test clean = "$opt_mode"; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.$objext" + if test yes = "$fast_install" && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name"; then + func_append rmfiles " $odir/lt-$noexename.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the $objdir's in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then + func_mode_uninstall ${1+"$@"} +fi + +test -z "$opt_mode" && { + help=$generic_help + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode '$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# where we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/m4macros/.gitignore b/m4macros/.gitignore deleted file mode 100644 index d59889a..0000000 --- a/m4macros/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -libtool.m4 -ltoptions.m4 -ltsugar.m4 -ltversion.m4 -lt~obsolete.m4 -gtk-doc.m4 diff --git a/m4macros/Makefile.in b/m4macros/Makefile.in new file mode 100644 index 0000000..4f7dbb8 --- /dev/null +++ b/m4macros/Makefile.in @@ -0,0 +1,1378 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# GLIB - Library of useful C routines + + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +installed_test_PROGRAMS = $(am__EXEEXT_1) +noinst_PROGRAMS = $(am__EXEEXT_3) +check_PROGRAMS = $(am__EXEEXT_2) +TESTS = $(am__EXEEXT_1) +@OS_WIN32_TRUE@am__append_1 = $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \ +@OS_WIN32_TRUE@ $(dist_test_scripts) $(dist_uninstalled_test_scripts) + +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_4 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_5 = $(all_test_data) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_6 = $(all_test_ltlibs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_7 = $(all_test_programs) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_8 = $(all_test_scripts) +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__append_9 = $(all_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_10 = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_programs) $(installed_test_extra_programs) + +@ENABLE_INSTALLED_TESTS_TRUE@am__append_11 = $(test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_installed_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_extra_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_extra_scripts) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_12 = $(test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(installed_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_data) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_installed_test_data) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_13 = $(test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@am__append_14 = $(installed_test_meta_DATA) +subdir = m4macros +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \ + $(top_srcdir)/m4macros/glibtests.m4 \ + $(top_srcdir)/m4macros/gtk-doc.m4 \ + $(top_srcdir)/m4macros/libtool.m4 \ + $(top_srcdir)/m4macros/ltoptions.m4 \ + $(top_srcdir)/m4macros/ltsugar.m4 \ + $(top_srcdir)/m4macros/ltversion.m4 \ + $(top_srcdir)/m4macros/lt~obsolete.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \ + $(top_srcdir)/glib/libcharset/codeset.m4 \ + $(top_srcdir)/glib/libcharset/glibc21.m4 \ + $(top_srcdir)/m4macros/glib-gettext.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_testdir)" \ + "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(m4datadir)" \ + "$(DESTDIR)$(installed_testdir)" +LTLIBRARIES = $(installed_test_LTLIBRARIES) $(noinst_LTLIBRARIES) +am__EXEEXT_1 = +@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_2 = $(am__EXEEXT_1) +@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_3 = $(am__EXEEXT_1) +PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS) +SCRIPTS = $(installed_test_SCRIPTS) $(noinst_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(installed_test_meta_DATA) $(m4data_DATA) \ + $(nobase_installed_test_DATA) $(noinst_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/glib.mk \ + $(top_srcdir)/test-driver +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ABS_TAPSET_DIR = @ABS_TAPSET_DIR@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CARBON_LIBS = @CARBON_LIBS@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +COCOA_LIBS = @COCOA_LIBS@ +CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DATADIRNAME = @DATADIRNAME@ +DBUS1_CFLAGS = @DBUS1_CFLAGS@ +DBUS1_LIBS = @DBUS1_LIBS@ +DBUS_DAEMON = @DBUS_DAEMON@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DTRACE = @DTRACE@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FAM_LIBS = @FAM_LIBS@ +FGREP = @FGREP@ +GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ +GIO = @GIO@ +GIO_MODULE_DIR = @GIO_MODULE_DIR@ +GLIBC21 = @GLIBC21@ +GLIB_BINARY_AGE = @GLIB_BINARY_AGE@ +GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@ +GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@ +GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@ +GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@ +GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@ +GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@ +GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@ +GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@ +GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@ +GLIB_VERSION = @GLIB_VERSION@ +GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@ +GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GREP = @GREP@ +GSPAWN = @GSPAWN@ +GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@ +GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ +GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ +GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ +GTKDOC_MKPDF = @GTKDOC_MKPDF@ +GTKDOC_REBASE = @GTKDOC_REBASE@ +G_LIBS_EXTRA = @G_LIBS_EXTRA@ +G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@ +G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@ +G_MODULE_IMPL = @G_MODULE_IMPL@ +G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@ +G_MODULE_LIBS = @G_MODULE_LIBS@ +G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@ +G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@ +G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@ +G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@ +G_THREAD_CFLAGS = @G_THREAD_CFLAGS@ +G_THREAD_LIBS = @G_THREAD_LIBS@ +G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@ +G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@ +HTML_DIR = @HTML_DIR@ +ICONV_LIBS = @ICONV_LIBS@ +INDENT = @INDENT@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTOBJEXT = @INSTOBJEXT@ +INTLLIBS = @INTLLIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBELF_CFLAGS = @LIBELF_CFLAGS@ +LIBELF_LIBS = @LIBELF_LIBS@ +LIBFFI_CFLAGS = @LIBFFI_CFLAGS@ +LIBFFI_LIBS = @LIBFFI_LIBS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LTP = @LTP@ +LTP_GENHTML = @LTP_GENHTML@ +LT_AGE = @LT_AGE@ +LT_CURRENT = @LT_CURRENT@ +LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@ +LT_RELEASE = @LT_RELEASE@ +LT_REVISION = @LT_REVISION@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_OPTS = @MSGFMT_OPTS@ +NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@ +NETWORK_LIBS = @NETWORK_LIBS@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PCRE_CFLAGS = @PCRE_CFLAGS@ +PCRE_LIBS = @PCRE_LIBS@ +PCRE_REQUIRES = @PCRE_REQUIRES@ +PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@ +PERL = @PERL@ +PERL_PATH = @PERL_PATH@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +PLATFORMDEP = @PLATFORMDEP@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ +PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ +PYTHON = @PYTHON@ +PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@ +PYTHON_PLATFORM = @PYTHON_PLATFORM@ +PYTHON_PREFIX = @PYTHON_PREFIX@ +PYTHON_VERSION = @PYTHON_VERSION@ +RANLIB = @RANLIB@ +REBUILD = @REBUILD@ +SED = @SED@ +SELINUX_LIBS = @SELINUX_LIBS@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SHTOOL = @SHTOOL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +WINDRES = @WINDRES@ +WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@ +XATTR_LIBS = @XATTR_LIBS@ +XGETTEXT = @XGETTEXT@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +config_h_INCLUDES = @config_h_INCLUDES@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gio_INCLUDES = @gio_INCLUDES@ +glib_INCLUDES = @glib_INCLUDES@ +gmodule_INCLUDES = @gmodule_INCLUDES@ +gobject_INCLUDES = @gobject_INCLUDES@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +installed_test_metadir = @installed_test_metadir@ +installed_testdir = @installed_testdir@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +ms_librarian = @ms_librarian@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +pkgpyexecdir = @pkgpyexecdir@ +pkgpythondir = @pkgpythondir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +pyexecdir = @pyexecdir@ +pythondir = @pythondir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +#GTESTER = gtester # for non-GLIB packages +#GTESTER_REPORT = gtester-report # for non-GLIB packages +GTESTER = $(top_builddir)/glib/gtester # for the GLIB package +GTESTER_REPORT = $(top_builddir)/glib/gtester-report # for the GLIB package +NULL = + +# initialize variables for unconditional += appending +BUILT_SOURCES = +BUILT_EXTRA_DIST = +CLEANFILES = *.log *.trs $(am__append_14) +DISTCLEANFILES = +MAINTAINERCLEANFILES = +EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \ + $(installed_m4) + +# We support a fairly large range of possible variables. It is expected that all types of files in a test suite +# will belong in exactly one of the following variables. +# +# First, we support the usual automake suffixes, but in lowercase, with the customary meaning: +# +# test_programs, test_scripts, test_data, test_ltlibraries +# +# The above are used to list files that are involved in both uninstalled and installed testing. The +# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite. +# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is +# installed in the same way as it appears in the package layout. +# +# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled', +# like so: +# +# installed_test_programs, uninstalled_test_programs +# installed_test_scripts, uninstalled_test_scripts +# installed_test_data, uninstalled_test_data +# installed_test_ltlibraries, uninstalled_test_ltlibraries +# +# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts +# that should not themselves be run as testcases (but exist to be used from other testcases): +# +# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs +# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts +# +# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data +# file automatically end up in the tarball. +# +# dist_test_scripts, dist_test_data, dist_test_extra_scripts +# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts +# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts +# +# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the +# standard automake convention of not disting programs scripts or data by default. +# +# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted +# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under +# gtester. That's a bit strange for scripts, but it's possible. + +# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace... +TEST_PROGS = $(strip $(test_programs) $(test_scripts) \ + $(uninstalled_test_programs) $(uninstalled_test_scripts) \ + $(dist_test_scripts) $(dist_uninstalled_test_scripts)) +installed_test_LTLIBRARIES = $(am__append_13) +installed_test_SCRIPTS = $(am__append_11) +nobase_installed_test_DATA = $(am__append_12) +noinst_LTLIBRARIES = $(am__append_2) +noinst_SCRIPTS = $(am__append_4) +noinst_DATA = $(am__append_5) +check_LTLIBRARIES = $(am__append_6) +check_SCRIPTS = $(am__append_8) +check_DATA = $(am__append_9) + +# Note: build even the installed-only targets during 'make check' to ensure that they still work. +# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to +# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were +# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'. +all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \ + $(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs) + +all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) \ + $(installed_test_scripts) $(test_extra_scripts) \ + $(uninstalled_test_extra_scripts) \ + $(installed_test_extra_scripts) $(all_dist_test_scripts) +all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \ + $(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts) + +all_test_data = $(test_data) $(uninstalled_test_data) \ + $(installed_test_data) $(all_dist_test_data) +all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data) +all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries) +@ENABLE_INSTALLED_TESTS_TRUE@installed_testcases = $(test_programs) $(installed_test_programs) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(test_scripts) $(installed_test_scripts) \ +@ENABLE_INSTALLED_TESTS_TRUE@ $(dist_test_scripts) $(dist_installed_test_scripts) + +@ENABLE_INSTALLED_TESTS_TRUE@installed_test_meta_DATA = $(installed_testcases:=.test) +installed_m4 = glib-2.0.m4 glib-gettext.m4 gsettings.m4 +m4datadir = $(datadir)/aclocal +m4data_DATA = $(installed_m4) +all: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) all-am + +.SUFFIXES: +.SUFFIXES: .log .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/glib.mk $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4macros/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu m4macros/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/glib.mk $(am__empty): + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkLTLIBRARIES: + -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES) + @list='$(check_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +install-installed_testLTLIBRARIES: $(installed_test_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(installed_testdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(installed_testdir)"; \ + } + +uninstall-installed_testLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_LTLIBRARIES)'; test -n "$(installed_testdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(installed_testdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(installed_testdir)/$$f"; \ + done + +clean-installed_testLTLIBRARIES: + -test -z "$(installed_test_LTLIBRARIES)" || rm -f $(installed_test_LTLIBRARIES) + @list='$(installed_test_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testPROGRAMS: $(installed_test_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + || test -f $$p1 \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_PROGRAMS)'; test -n "$(installed_testdir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(installed_testdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(installed_testdir)" && rm -f $$files + +clean-installed_testPROGRAMS: + @list='$(installed_test_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list +install-installed_testSCRIPTS: $(installed_test_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(installed_testdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(installed_testdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-installed_testSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_SCRIPTS)'; test -n "$(installed_testdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-installed_test_metaDATA: $(installed_test_meta_DATA) + @$(NORMAL_INSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_test_metadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_test_metadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(installed_test_metadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(installed_test_metadir)" || exit $$?; \ + done + +uninstall-installed_test_metaDATA: + @$(NORMAL_UNINSTALL) + @list='$(installed_test_meta_DATA)'; test -n "$(installed_test_metadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(installed_test_metadir)'; $(am__uninstall_files_from_dir) +install-m4dataDATA: $(m4data_DATA) + @$(NORMAL_INSTALL) + @list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(m4datadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(m4datadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(m4datadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(m4datadir)" || exit $$?; \ + done + +uninstall-m4dataDATA: + @$(NORMAL_UNINSTALL) + @list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(m4datadir)'; $(am__uninstall_files_from_dir) +install-nobase_installed_testDATA: $(nobase_installed_test_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(installed_testdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(installed_testdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(installed_testdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_installed_testDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_installed_test_DATA)'; test -n "$(installed_testdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(installed_testdir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) $(check_DATA) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(check_DATA) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-am +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_testdir)" "$(DESTDIR)$(installed_test_metadir)" "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(installed_testdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-am + +clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-m4dataDATA \ + install-nobase_installed_testDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-m4dataDATA \ + uninstall-nobase_installed_testDATA + +.MAKE: all check check-am install install-am install-strip + +.PHONY: all all-am check check-TESTS check-am check-local clean \ + clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \ + clean-installed_testLTLIBRARIES clean-installed_testPROGRAMS \ + clean-libtool clean-noinstLTLIBRARIES clean-noinstPROGRAMS \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-installed_testLTLIBRARIES \ + install-installed_testPROGRAMS install-installed_testSCRIPTS \ + install-installed_test_metaDATA install-m4dataDATA install-man \ + install-nobase_installed_testDATA install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am recheck tags-am \ + uninstall uninstall-am uninstall-installed_testLTLIBRARIES \ + uninstall-installed_testPROGRAMS \ + uninstall-installed_testSCRIPTS \ + uninstall-installed_test_metaDATA uninstall-m4dataDATA \ + uninstall-nobase_installed_testDATA + +.PRECIOUS: Makefile + + +# test-nonrecursive: run tests only in cwd +@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS} +@OS_UNIX_TRUE@ @test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS} +@OS_UNIX_FALSE@test-nonrecursive: + +.PHONY: test-nonrecursive + +.PHONY: lcov genlcov lcov-clean +# use recursive makes in order to ignore errors during check +lcov: + -$(MAKE) $(AM_MAKEFLAGS) -k check + $(MAKE) $(AM_MAKEFLAGS) genlcov + +# we have to massage the lcov.info file slightly to hide the effect of libtool +# placing the objects files in the .libs/ directory separate from the *.c +# we also have to delete tests/.libs/libmoduletestplugin_*.gcda +genlcov: + $(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \ + $(LTP) --quiet --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \ + $(LTP) --quiet --output-file glib-lcov.info --remove glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \ + LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --frames --show-details glib-lcov.info --ignore-errors source + @echo "file://$(abs_top_builddir)/glib-lcov/index.html" + +lcov-clean: + if test -n "$(LTP)"; then \ + $(LTP) --quiet --directory $(top_builddir) -z; \ + fi + +# run tests in cwd as part of make check +check-local: test-nonrecursive + +@ENABLE_INSTALLED_TESTS_TRUE@%.test: %$(EXEEXT) Makefile +@ENABLE_INSTALLED_TESTS_TRUE@ $(AM_V_GEN) (echo '[Test]' > $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Type=session' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ echo 'Exec=$(installed_testdir)/$(notdir $<)' >> $@.tmp; \ +@ENABLE_INSTALLED_TESTS_TRUE@ mv $@.tmp $@) + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/m4macros/glib-gettext.m4 b/m4macros/glib-gettext.m4 index 5217fd8..155b1d8 100644 --- a/m4macros/glib-gettext.m4 +++ b/m4macros/glib-gettext.m4 @@ -313,7 +313,7 @@ msgstr "" # on various variables needed by the Makefile.in.in installed by # glib-gettextize. dnl -glib_DEFUN([GLIB_GNU_GETTEXT], +AU_DEFUN([GLIB_GNU_GETTEXT], [AC_REQUIRE([AC_PROG_CC])dnl GLIB_LC_MESSAGES @@ -383,7 +383,8 @@ glib_DEFUN([GLIB_GNU_GETTEXT], rm -f po/POTFILES sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ < $srcdir/po/POTFILES.in > po/POTFILES - ]) + ], + [[$0: This macro is deprecated. You should use upstream gettext instead.]]) # AM_GLIB_DEFINE_LOCALEDIR(VARIABLE) # ------------------------------- diff --git a/m4macros/gtk-doc.m4 b/m4macros/gtk-doc.m4 new file mode 100644 index 0000000..3675543 --- /dev/null +++ b/m4macros/gtk-doc.m4 @@ -0,0 +1,88 @@ +dnl -*- mode: autoconf -*- + +# serial 2 + +dnl Usage: +dnl GTK_DOC_CHECK([minimum-gtk-doc-version]) +AC_DEFUN([GTK_DOC_CHECK], +[ + AC_REQUIRE([PKG_PROG_PKG_CONFIG]) + AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first + AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first + + ifelse([$1],[],[gtk_doc_requires="gtk-doc"],[gtk_doc_requires="gtk-doc >= $1"]) + AC_MSG_CHECKING([for gtk-doc]) + PKG_CHECK_EXISTS([$gtk_doc_requires],[have_gtk_doc=yes],[have_gtk_doc=no]) + AC_MSG_RESULT($have_gtk_doc) + + if test "$have_gtk_doc" = "no"; then + AC_MSG_WARN([ + You will not be able to create source packages with 'make dist' + because $gtk_doc_requires is not found.]) + fi + + dnl check for tools we added during development + dnl Use AC_CHECK_PROG to avoid the check target using an absolute path that + dnl may not be writable by the user. Currently, automake requires that the + dnl test name must end in '.test'. + dnl https://bugzilla.gnome.org/show_bug.cgi?id=701638 + AC_CHECK_PROG([GTKDOC_CHECK],[gtkdoc-check],[gtkdoc-check.test]) + AC_PATH_PROG([GTKDOC_CHECK_PATH],[gtkdoc-check]) + AC_PATH_PROGS([GTKDOC_REBASE],[gtkdoc-rebase],[true]) + AC_PATH_PROG([GTKDOC_MKPDF],[gtkdoc-mkpdf]) + + dnl for overriding the documentation installation directory + AC_ARG_WITH([html-dir], + AS_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),, + [with_html_dir='${datadir}/gtk-doc/html']) + HTML_DIR="$with_html_dir" + AC_SUBST([HTML_DIR]) + + dnl enable/disable documentation building + AC_ARG_ENABLE([gtk-doc], + AS_HELP_STRING([--enable-gtk-doc], + [use gtk-doc to build documentation [[default=no]]]),, + [enable_gtk_doc=no]) + + AC_MSG_CHECKING([whether to build gtk-doc documentation]) + AC_MSG_RESULT($enable_gtk_doc) + + if test "x$enable_gtk_doc" = "xyes" && test "$have_gtk_doc" = "no"; then + AC_MSG_ERROR([ + You must have $gtk_doc_requires installed to build documentation for + $PACKAGE_NAME. Please install gtk-doc or disable building the + documentation by adding '--disable-gtk-doc' to '[$]0'.]) + fi + + dnl don't check for glib if we build glib + if test "x$PACKAGE_NAME" != "xglib"; then + dnl don't fail if someone does not have glib + PKG_CHECK_MODULES(GTKDOC_DEPS, glib-2.0 >= 2.10.0 gobject-2.0 >= 2.10.0,,[:]) + fi + + dnl enable/disable output formats + AC_ARG_ENABLE([gtk-doc-html], + AS_HELP_STRING([--enable-gtk-doc-html], + [build documentation in html format [[default=yes]]]),, + [enable_gtk_doc_html=yes]) + AC_ARG_ENABLE([gtk-doc-pdf], + AS_HELP_STRING([--enable-gtk-doc-pdf], + [build documentation in pdf format [[default=no]]]),, + [enable_gtk_doc_pdf=no]) + + if test -z "$GTKDOC_MKPDF"; then + enable_gtk_doc_pdf=no + fi + + if test -z "$AM_DEFAULT_VERBOSITY"; then + AM_DEFAULT_VERBOSITY=1 + fi + AC_SUBST([AM_DEFAULT_VERBOSITY]) + + AM_CONDITIONAL([HAVE_GTK_DOC], [test x$have_gtk_doc = xyes]) + AM_CONDITIONAL([ENABLE_GTK_DOC], [test x$enable_gtk_doc = xyes]) + AM_CONDITIONAL([GTK_DOC_BUILD_HTML], [test x$enable_gtk_doc_html = xyes]) + AM_CONDITIONAL([GTK_DOC_BUILD_PDF], [test x$enable_gtk_doc_pdf = xyes]) + AM_CONDITIONAL([GTK_DOC_USE_LIBTOOL], [test -n "$LIBTOOL"]) + AM_CONDITIONAL([GTK_DOC_USE_REBASE], [test -n "$GTKDOC_REBASE"]) +]) diff --git a/m4macros/libtool.m4 b/m4macros/libtool.m4 new file mode 100644 index 0000000..10ab284 --- /dev/null +++ b/m4macros/libtool.m4 @@ -0,0 +1,8388 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 2014 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. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +]) + +# serial 58 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + +# _LT_CC_BASENAME(CC) +# ------------------- +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. +m4_defun([_LT_CC_BASENAME], +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from 'configure', and 'config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain=$ac_aux_dir/ltmain.sh +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the 'libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags='_LT_TAGS'dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# '#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test 0 = "$lt_write_fail" && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test 0 != $[#] +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try '$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try '$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +_LT_COPYING +_LT_LIBTOOL_TAGS + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS=$save_LDFLAGS + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[[012]][[,.]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + m4_if([$1], [CXX], +[ if test yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case $ECHO in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([$with_sysroot]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and where our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test yes = "[$]$2"; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS +]) + +if test yes = "[$]$2"; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n "$lt_cv_sys_max_cmd_len"; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes = "$cross_compiling"; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen=shl_load], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen=dlopen], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then + + # We can hardcode non-existent directories. + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program that can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac]) +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program that can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test no = "$withval" || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi]) +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM=-lm) + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test yes = "$GCC"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + _LT_TAGVAR(link_all_deplibs, $1)=no + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + osf3*) + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting $shlibpath_var if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC=$CC +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report what library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC=$lt_save_CC +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)=$prev$p + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)=$p + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)=$p + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test no = "$F77"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_F77"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test no = "$FC"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_FC"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_FC" + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code=$lt_simple_compile_test_code + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f "$lt_ac_sed" && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test 10 -lt "$lt_ac_count" && break + lt_ac_count=`expr $lt_ac_count + 1` + if test "$lt_ac_count" -gt "$lt_ac_max"; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine what file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/m4macros/ltoptions.m4 b/m4macros/ltoptions.m4 new file mode 100644 index 0000000..94b0829 --- /dev/null +++ b/m4macros/ltoptions.m4 @@ -0,0 +1,437 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 8 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option '$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --with-aix-soname flag, and support the `aix-soname=aix' +# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT +# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_WITH([aix-soname], + [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) + with_aix_soname=$lt_cv_with_aix_soname]) + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' +# LT_INIT options. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [pic_mode=m4_default([$1], [default])]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/m4macros/ltsugar.m4 b/m4macros/ltsugar.m4 new file mode 100644 index 0000000..48bc934 --- /dev/null +++ b/m4macros/ltsugar.m4 @@ -0,0 +1,124 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59, which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/m4macros/ltversion.m4 b/m4macros/ltversion.m4 new file mode 100644 index 0000000..fa04b52 --- /dev/null +++ b/m4macros/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 4179 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.6' +macro_revision='2.4.6' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/m4macros/lt~obsolete.m4 b/m4macros/lt~obsolete.m4 new file mode 100644 index 0000000..c6b26f8 --- /dev/null +++ b/m4macros/lt~obsolete.m4 @@ -0,0 +1,99 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/missing b/missing new file mode 100755 index 0000000..f62bbae --- /dev/null +++ b/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2013-10-28.13; # UTC + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/po/.gitignore b/po/.gitignore deleted file mode 100644 index d17ff35..0000000 --- a/po/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -POTFILES -*.gmo -glib20.pot diff --git a/po/LINGUAS b/po/LINGUAS index fcd23ff..7772af2 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -32,6 +32,7 @@ fa fi fr ga +gd gl gu he diff --git a/po/POTFILES.in b/po/POTFILES.in index 6ea427c..e20cf09 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -18,21 +18,32 @@ gio/gconverter.c gio/gconverterinputstream.c gio/gconverteroutputstream.c gio/gcredentials.c +gio/gdatagrambased.c gio/gdatainputstream.c gio/gdataoutputstream.c gio/gdbusaddress.c gio/gdbusauth.c gio/gdbusauthmechanism.c gio/gdbusauthmechanismsha1.c +gio/gdbusauthobserver.c gio/gdbusconnection.c +gio/gdbusdaemon.c +gio/gdbusinterfaceskeleton.c gio/gdbusmessage.c gio/gdbusmethodinvocation.c +gio/gdbusobject.c +gio/gdbusobjectmanager.c +gio/gdbusobjectmanagerclient.c +gio/gdbusobjectskeleton.c gio/gdbusprivate.c gio/gdbusproxy.c gio/gdbusserver.c gio/gdbus-tool.c gio/gdesktopappinfo.c gio/gdrive.c +gio/gdtlsclientconnection.c +gio/gdtlsconnection.c +gio/gdtlsserverconnection.c gio/gdummyfile.c gio/gdummytlsbackend.c gio/gemblem.c @@ -62,8 +73,8 @@ gio/gioscheduler.c gio/giostream.c gio/glib-compile-resources.c gio/glib-compile-schemas.c +gio/glistmodel.c gio/gloadableicon.c -gio/glocaldirectorymonitor.c gio/glocalfile.c gio/glocalfileenumerator.c gio/glocalfileinfo.c @@ -73,8 +84,10 @@ gio/glocalfileoutputstream.c gio/glocalvfs.c gio/gmemoryinputstream.c gio/gmemoryoutputstream.c +gio/gmenumodel.c gio/gmount.c gio/gmountoperation.c +gio/gnativesocketaddress.c gio/gnativevolumemonitor.c gio/gnetworkaddress.c gio/gnetworkmonitorbase.c @@ -110,6 +123,7 @@ gio/gsocketconnection.c gio/gsocketinputstream.c gio/gsocketlistener.c gio/gsocketoutputstream.c +gio/gsocketservice.c gio/gsocks4aproxy.c gio/gsocks5proxy.c gio/gsubprocess.c diff --git a/po/POTFILES.skip b/po/POTFILES.skip deleted file mode 100644 index 6e12c7e..0000000 --- a/po/POTFILES.skip +++ /dev/null @@ -1,2 +0,0 @@ -glib/tests/utils.c -tests/gio-ls.c diff --git a/po/README.translators b/po/README.translators deleted file mode 100644 index 984392c..0000000 --- a/po/README.translators +++ /dev/null @@ -1,25 +0,0 @@ -All the .po files are now in UTF-8! - -For information on editing UTF-8 files on Unix, see - - -If you just want to convert it back to your native encoding to -edit and then convert again to UTF-8 to commit, please see the -scripts in gnome-i18n/UTF-8, for example - - export ENCODING_TO=ISO-8859-15 - utftopo fi.po - emacs fi.po - potoutf.sh fi.po - cvs commit fi.po - -Alternatively, you can use the gettext package (>= 0.11) to convert -your translation to and from your native encoding: - -msgconv -t ISO-8859-15 fi.po > fi.native.po -emacs fi.native.po -msgconv -t UTF-8 fi.native.po > fi.po -cvs commit fi.po - -If you need help with this, ask, but please don't commit -non-UTF-8 files here. diff --git a/po/af.gmo b/po/af.gmo new file mode 100644 index 0000000000000000000000000000000000000000..f0ed89cfe293d54f5dbcabc8fd2f124effb56700 GIT binary patch literal 7931 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 V9C#UDHappy7jQCl>9NUQ{s-Nu3#I@7 literal 0 HcmV?d00001 diff --git a/po/am.gmo b/po/am.gmo new file mode 100644 index 0000000000000000000000000000000000000000..61f8aea78c262a9e41983eab66b69107d3f138b5 GIT binary patch literal 2696 zcma)+OKclO7{`YaUM`PP-i6ZPv8hD0iQUjD-8MklCdDXjLt+X+AXwWId+B=D%}l$dY{kg4zxlpz z9{>4fJio8)nq?^6s1KozT*ufJ@SRoopp0J6*n{Bn;99T>-UA*69|lio|9S9M*cUV} zf@@&^3El@@2G@bByV~s59MpV8b4v3g&9flsx}bSUbJY!P{|3z+niHA_LDG2~ydOLR zl8zt2yTM;I{|2dF*Nu$b1+D|Be~;!KkaWMU?YFi4G57%d=RnHOPv8P_cM04M`^3$R z;m3Z#2TQQuK}a2lqtd>p+>T0j+#o}j^_p}C?$vF&M;lPFg;se?6IYY5At`;yrLaqmSLTzB zEBHnu*l2MhV0(7kp~yQ`(Pcbq89B=s?{sC`E^gF1y*4)r+z|ZA2yRSthO50ssn?k9 za1G`|xF1BoSG^}Vpdse9L8 zO(ungMIkBlob4rsA~!jdI4Wl+%E;N%OD3EW;y}rsZp$B*PI55kFI{iR$ZU2iDfe&)y2vRUOjwC zl8|1cy4`t60I6L$fV4(3ArvKyK|*D)@))EuA%a|b?bxXF-w?&n%$CgkLI#fSS-k8z z1-^f1Y&^SfZ)!}`d>NX#pzM^)ol!Y3^S;F^VOXbYI@w zg*PIE6q6nWi*HV6GG=<4nSPRQ?z6URMI)U?M{^ASNs_$SFWqORGiGKhPxo7W+cpjD z&ZkD~AT;yR_5#-qeQEJMVxu_3hb8{Tj*xuVr_9o7e2427ZC3=(l!Z7%n|TVOy>eui zg_#$2)#8KIiY=YuwR&3IuBLL?+|bp0W_r@8U04p=H1pFn>?jm(g}pV`cD(Jph$#aR z4n*Ok*?+YkDV`M49P)}jy_Xj6FF0X}shOr~o>lQo>yc88S+3$(#h;?3>ZeqF4)%E! zA64}QRX@*F;}pebzM@CgaP`w_yhKl_F{oxvb7LpHp{jnE<}xO@A-VA~qo)%O=mb;8 zzEI63redlwui^#OJl-;z^QtjNiyoU%&2KRt%N2phQq9b&cpe)(hFz%m43>V67HCrIh>B_7trm1L+HrhV)xSsUGg_08F!Id7v!EKE z!&5&BX^2BQCj3w}v5EKt6@P*hwPt7_kqc_BSLH0)OGUM2 Q?9{YO(*IQi^&O)A1(Ws~M*si- literal 0 HcmV?d00001 diff --git a/po/an.gmo b/po/an.gmo new file mode 100644 index 0000000000000000000000000000000000000000..d42ad23e0f74016cfe815a33da6bda68728db655 GIT binary patch literal 99465 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 U1c1d$s-K8L+*4zScpYl~FS=P4dH?_b literal 0 HcmV?d00001 diff --git a/po/ast.gmo b/po/ast.gmo new file mode 100644 index 0000000000000000000000000000000000000000..6a04eadb64311c881cfacb6c812d88045e8662a2 GIT binary patch literal 46631 zcmd6w37B0~mG6&=LPro(WJV5wqAHNe1O!L|BxE9x2@*gg7*EwbRdvm+dy6|HRY6cx z6clm7S<#3n7^7gcZK3UMQ+C_k+O~E(wD#aUx3lfgD!$);?R}dVLmL0v9&GOR|b{tHc(Cqp?o| zXM-nz=Yz^;3mAeUpwizCs=Rwa@zY=W_n-6l6OV_}IMuHYRJs+Q;$IJ{pIiR@8$gx+ zK_C9Fpz8Mn@M!Re#V()OV94`QQ2e|NJOgG&Dpcr5rIpyK@kRKGvze8)fQK)Ny*2Q_}~2Nmxd9)AyB#PhKP zGUS7+L5+(WL6!eDkf9fR6cj&x3sn1$rV#PP*`Vs*0G0l&p!nthsP=ppd@6X%Qdi$I zL9z(egW~5G`{xHi_4^M%r8{hy8^4Rem-0LSitm5u-yeOU8|TYG)wcVGw;`rhQ9_kgGH{P*Aq;CDe-Jb2s+SHJT>$)VWeogP07 zs-9m3m3|gN_bBj8Q1o63sy&vj^0hQlTD;@n8fT!}j z4LlLN89W($6UfjH{sI&|zYlH&k6%Sw!73=Z^kI-L2p$2~gUeRCd~XMp?}tE@_eD_s z@hk9ju!qEI_hq2y(g0_JcY>nNgP{8LTi{9HDQjK$GEn1TJE;73fvV>lK}1mSNe~ta z9s$*#OR4M`;4?wxcMGWU9tMvGzW|EPKLORxC#-Y**AJ>aSAZMAyTJ#*AA-B}e3`4q z@s~SX2=?%P9Vou6foku4;F;hTKtxFJ7&6uKd7$L*0I2?aH5h{L0+r7vK(+gapy)Dd zgOi8-;FEb?396s30!7~{D0<1ar!6(5GJan^@Cw*W)&zr$H;LV`&y$@7-KMAVb zuYe(V$Q4fB^nmktjzRJFU7+f{7ZiW~6{vcD8SDjr2Z~=#ztW|92H3~*OTY!-1K?TU z*Fe$fh%Jt8{h<0`4Jbaj0i+4RD?wO2_$sLSo(|J1-C9t5Gz_ZzJ3*y?08~HxJNRVq z7ohTc!c{?VIM@R!zeV7o;7(BVzZrZ2_(o9md^@Oie-=C&46b(cI|mGT901k+7lKa& z-v&Mv+zYB+e+?cDej9|7@eLmLd;GM=?}6f%L!ROARF4;Vyw2me z$JcuNfX9CZMVJ2u5edPu*Shkzf#Q>0pxV11JOcbCxDfmqcoca0GabFp1w)>%0@bda zpz8H9@JZl(pybqt!E?dSgW|I%UgzGQ3o8B=Q0d3Or-8SE$ANDKj|D&I!$0NmYoOx& z5)^$8-{#_n9xnh-;Qf{UdDK6@7(AZ$d%zRHhyD96g5sB-`RAjrclDYNsvYY=@!55t z#>35^>U9q&Iz9}FpT7+%-y@&p;-3X7-;JQ+kAbT9ZJ_9IHz+ys_n`RqN8knEleW8b zmwJ2-cp>la05x9!5mdZigW~5!&vxlofy%E0hTuy<_1|7l_4)|72>d*#c!x!1BIdQ<%>l{$yw+@O9cY~_eC%}`zFM*2xD^T@0 zYS5MYbWr6j22TO614Hmek8kn#QSj-!|1WSc_E|Nf90 z&xZ~>JksN_9#8Su>v29PemW0447?l^zi$Ocz!+?Sp9bsTDqgDG4}+rL7eLYX_n`WD zLD|uH4R{&P70}{?;?FOD=YT&2mF|q^xcJwCqUZBK_4i)zbnr_a9|2eLeA*6lA2-FdaADcm7w_L25=7e zdT=%PF>oGuXwB)##h}s;fr|e|@HFtRefT#(#eeFUtIs9iy*$4R6u&II!ST;Za0Aa3 za0&PjsC54WD*w~#u3guFeLU|1)&94GP4M#|A~LwF;q2;nc>Ef;iT5Fqwt!=x#?i+? zwf_+imI;>A$` z+0k(hsCa9@%fTvm5%>_e4*U(Ma#lXil~V;T=J`%=A^2%f`3KK;`fmYvDvvGjB=Gg% zTJVFQ+VMM3{oZqnny?@!jb!aD4S#Q1$I z@WI4<5zy<)G-Y4HSLv0yWMLfPLUk!Cvr$m%0A91XMj= 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 literal 0 HcmV?d00001 diff --git a/po/az.gmo b/po/az.gmo new file mode 100644 index 0000000000000000000000000000000000000000..8edd6d8daf43f29b81feb0b31f444beed97814e3 GIT binary patch literal 12743 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 MYS$@-j(M&A3xTSt761SM literal 0 HcmV?d00001 diff --git a/po/be.gmo b/po/be.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c46979051693f4e10dd717ebf532f9556b4ab029 GIT binary patch literal 122702 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 j*5hRtU?@t%9C7oN*ll6rk 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 literal 0 HcmV?d00001 diff --git a/po/be@latin.gmo b/po/be@latin.gmo new file mode 100644 index 0000000000000000000000000000000000000000..715700b1e78f760dc4dc47de1426791e57586b7f GIT binary patch literal 37359 zcmd6wd7NBFb?_m3GfIp!NdvSk+8f#0wiHczQ0p-Z{P0ek>tGm z@%p2hU*B8%sdG-9I#tzr?v$e*3Ha>!i6A%+{NeFI@L9h9_33&W1cT=X!KvU7cr3Wu z;|7mg!4r7D+doI($vh|Eo!|_(7yKL;fmd8WS>P{$D)(dHLdAopfj{Whp{ zPl2NM7eS5V8N)%a6x;xc@1{Yed!NTof@^sG3J7U~i^-&XoB5;m&VZu(uYzjdUx5s9 z@M4%%<1z@6HP{A9PVNQOt~Y|J?*kyD2)^N;&!jPu-&;WCtAKPh_;v8L;4>gB5bT5r z^nM1s9DElDD+bSkD*wlz+7rTL*MK*Js_&Jc+VxS8rUripD%~j*qI|2s6Tz2(>R$;w z3H$}{6!201{=NSB)1cD-4XFCR1*(0gz~theYeDhLouK;D1f>t&;qg-*{{>V#&WCxG z??&)sa2z}p+z*PcUgzKcCU_dp9|R?Lf9jwA78L!z4~jnLUFG_96DYoz1jRS60wGcG z7$`b?9^3^UeYKO*yTH{v9{{(2Uj|j)Vu&d^-2tkdGobqQYoO|V22}sP35u`Jfaqs} z*MiD-3#fVa5<>w1cU{Hw}9t?PlIaz^Wf>=Q3%0H!E-?M zdoif~Yym^C0-goF0aX5XgKFha3jxCAYBSR0IHqe1Vx{7 zuXp{~2GYe~3=F|{fRe|LgG&E(P;@$bt!wu>P<%56s=gU81m6a#T^|E40zV6?obQ6L zZgBn$jvsCTHIDa#h+Od7pvM1MQ2jh+ouk`@-~~M23~mP#kbl94__F}~5qKdOu6N^l zJt%sQgQDjzf zDET-M;%){PfEtI2$Jcm#%;O(>eAeT4J)V4{8_&x;-sCa%_<+Z^dHjgSzw-D!Q2jmi zrXZjz!5UEQcqORud@HE_Jqw-)p0LTu$JyY?JZ}bH0`39N2dBUx@HL?N_c$p2d1XQ|fLD6YDsPqMo_kwEIBmVh){`pVAvw8m&@Lcf6{{1-+Rs3@$ zsC>7B;`=(N_Pzns_`emr1bhlqyS@ru3jP=z1cwl2m3u3w^c7I$z6n(N$3eCGQ{WKz zJU9TJu+{O;GEn@r4%GVs7=o_>PXylss{B6!B~PCNmG0PWuKZzeAkB@u&FnAL29|w;C zKMRU3&w`WS_rL^XWs7gZw&G(cod`y!FNE>WBnaY{}(~g@vWff{1Na9@M|C<8k~Qp zvm1-x3ZCBus=ntzST#8QE|-5dDEc%&R73Da@GYf|t2@s{&rj^M}Ee;CI2F1()r0 zcJli{#h?1qjy_vKL^*gRsP~@+r6-S#-22Vo>v(g4BYP;|T#R6Egbj z8t`MF`0w99jq?QsN2kr;#XKkAS>VH<=>9HHa`GAQBJkh91>m_wCr@iYJr}_cd^M>0 z-wjIco&hy3Kk)IF#7+-v0MFxn4b-?k4640<0;;@!1V!%?$FMoTRiMV@5pV@K3l4+9 zxT|jj+{oiLa0B=Vcoq0Xa1D6Mgsbls@LZlNAgmv}7L;Ck4!jBcNrd5I@K#XeO@pfU zqoC;VO;Giojqr$`H-aH}KdATvp!oUIpz6JFin73$ftP^q2RDJA2X6$!5;_Z<07b9w zfa0TpGHV#{9#Hi?4i13NgQC~56_G)@C5J=!Arr9 zgBs^=fiD7&tvUUDJa`<>XM-n!3qX~-98`bGpxXDlUdFja$nML&nrREvjA!w9s?Uh(@MYk3@M-XN@U#|lDp&$VuP=a0!HcFH-EIY!@cbaS5d0vx3j88?Ie6AS zN53tg=o5p>z_)|zz|Vl2!87)|aT^8I{)fQT;O~PP|9=M00#~+O`*wjJ=J_%3e(cs2MVa0tBeUe~X^p!nyF;0X8!;CbNRgJ*y* zy3f(`Y*75a#y^jOYTv6tmG^e=RPd8N{yFeWo?rYkZamKg#h=%L>VE}X4L$*?eg6uo zy_fy0(_4GNEj%|twdW~N^nMOhx})!R{CX{@@hO5Af{%bI@AtvWz^{RNf7;Kv{#^lH z$#VhJc>F537W@*Z@w)Hd?*LB$ z-wUc;Pl2NU*TK8N{{UYM-u-Hadp#CBj)O-LKjoim9-AKbd%V}<{T?3#k0#$kpz^=o zzkf5Rar$LYi-7#li;_(W5FNz=NG@$J)a0F{plVr08iw35qJ!EC8+$XJZ=P)eg~-X z?gTFeBX9`(d2j*vd*IpNXF$>Y8{i@^_yyPQLGT4XVCVA9n3p37*Dt3`#y`K+*ZVpvw6NQ0+bK z^^X5XK*>cB)cXfP_3N$v`6*Cx@wmpgtQ3ckuih_T>H?5B!sV zei!(4!mIqV+V~y9Q-pnl|3!EYVHIH!<(xzK0^ipV{)~`*s(kra`rz?A(%#PZlR$k$ z7kxsWzwN#TyZHVV|NVK78b5s`H@`?Yo-_SLHceP;UdEC5`K#CSA;7`^K0PMp#1LoYyr;&*V~iRZO8cU zDJ=DA#aF*Y5Fd-zPvHHt;0@qU5q^U3ah`vfa5dpug!FSSUn0W$3HK8|K==&dI`Ujf z_yOPVB3wmyE#cn@%XxndL7(fv(+IcleK#Q_=<`Yk!QP5!7$*$!d@|S~ z6bW_07@QOLExQXyS!mkr9B>jD0{_|cQ z))J-(4Z@2F=Md5lDlJ$|zMu4Uo$m1ud4Cz--vRy%VS7DuJakc2!5ZimbjgS^z%)=tmAoufANsVpYtePe+pqYX`b}&PV$(-@9;%B z?>NGr5VjEBNVwJ4b1UD^=KE3LRp9>wZykbW-b{mXe+LU@tSm&OT?B|JtrOAmbh zjj(`pG57|(@SitVL4%#=RX3^1QSr73gPz& zxAX3A!T&=@Kl}M|9^tnMe?T~zH2Pct?gBqd_%fkP7$7`I&}Tbgv3+y%+H3sxJ3PJ_ z{3XIFU!GoHko$fj-xvGmeqUOQM@}EJPy1KED%m4oXfL5 zUv&`N;-CN2KmVi0jl7@r-xq;*@_e^{-U=Qde40@6@BSKGN_Y`r%D;Q7$4`N8C;X~^ z77P+r67JN4|GW;|Mm-l3^f?y%Ah;gf1O9Kq(*%89%)2vuIz4}qu#<2-;e6g70rQ18RRq%s|ql42NF3e{p#86OG;MwX3* zH{RfIv&XGqBOFUgakI_pobL`>;b^QSK?*Tb=D zsZ`xZEyOKawJ6MDR)$G4EJtn2HyV#8l`yJ=aVajxm1bCp%JC7G+?+Zg6_?}`io-`X_xz%Wf zqp_z9xklUJP%sqkOPUkaRx_;D;)>`s7_1FPtJSG;RG%VoJ=}fkCfBQ|RF9)#JB;@y zjbfmyls@#aUM>)ynX;-CMQRwp9Qi)4@^>S}1slrY6rQYVei2IhA-+8Qmz(hRVSag?~(5wVjhsWjtp z25;VE&3dZ>m&f6aTjMgkv#C;RHFq|layeM%NFJhb%1MPp4UI;m1~ikX)DcXj^qR?J zZH(coj7u1iuU#95mtA$Z6xZYu)Z?+Zjv7_BhDR<%4;HIbtxlP8MKgpoHK{3i%T!LevNs^0YEoSFJRo#FS7OxrYm~UP$v9-~ z%$kgGrk*92E8&vdD-)MP)QmVtU(igqgY~ z_CpaQZEj`@45t%fGa4T`lG@B1u<4o{CfRA_;+I2~FsZrO4T(lt>J#+gjl!JhtAj?exPIkq%$vk&`e4t*MwmwOZyN|^{o`q$h1ppBa`bPD7qLs!Lgg^ zf!J8V$kW}mR98@g=(cL0v1CoBTyM3=OtW_8Y_-97WPBuCC0k|9P$!3)8<%V78W_&Y zky#yZJ!C>h*P=p9`u?*+nAgw225%Rd#H-|jdQe;(VzwAjnA6b2P0F@WOUWZUOoKje zeuOEPw!4&IgEgOGr7;&RT)7C99HWgHOS7MOpP=ufdc4A^&T!$&Th->uaA8S*#`Pzv zRU0dV4X%v;kCgm|3OWh9iNS$Lj-0`UdR>DBZKWEdhD}#?ziw5M{rT6Z?52{-959tx zYv-biE!jR|06%Bs;>P2qFykF*v%$#ig>me=HhOtj|UnQ>RYER#r>BTIk1yP5> zX)HX`)7d#OHlEqi)@Seog+Z0^Ztp;K#bFi~>PZbj%Qd1|j~d3-J)QSPZXc4mnT0vL zmeA~R45jf_DXL4k*EN;Hxh&BmEOabfW9f{iT-I{bbduCJXRd87xfrvY%*_ zmFE^!)9ONrozhgtTw_yzM2=u|YpS;dd)M9Oo|Z_lWJ2Bu@jv89I3{75kK*OXFUcLb z%RJAQ)XajcTpIw-V=Kb3qGFFMXAdiN7yCksI#ji8@$46ti)AtuCc*|TA~<9sV(~wU zErMBZZl%oR%q_+`tJA@S7cam3ij~e5-p?AZ6c4ciWY{O7nlmbWDLhoGSePjL+^}kL z35!uPO4oZiEV^2zEywt_$?LtezYqRHFdi4Uk z(K&j&c~2(`i!9n(bMhetH?Bu3?n=t>Q3E%v7}&aEU}yeS6b_7r0~ljIE*!WsA6;HD zP+T(54sJqAb-bJA`(cSBx|nxDEAK>nZPSj1IM_6wL#caZ(I;8g%43uFmfyG&i)9y{ zaPy#+5*A%)RHnPkLmm#wKd#0}t*2|Rp?Omual#f3oy(UWL5WIu)fIgbx`yFsFrO8s zSH~)MoSikYkMX4e&*CLqeP3vzP3huXC`x7`n7*FCm(`VbDrOg;H&r?x&54lZ$W%`! za7CqMHjboIp3?FR*2kSkX4?GFvQD%J$hEzbHm*!3^=d_o)t$oGkKSQ9jzhJQHD@35 zphiD4FD&O~`e|CpiwpAPd~hA#9Sy8llSN57djSziY*IX+y zGo3CEyTWQwQeW)4z1TS+%mLP?uvR7WP-fd=R(L0E<^#34w?oVMQlykWTs*|ijZB}^ zC~Q2p>S(23z8>rtOcgIClPcmPs~0Q<%+fqpdMq(}DApch4i{Wwv=H!YvMkNxM@xhCsFCmVq}m?a6_NZ-d(531NG$^!VZ>MK$+c2w2dRqHY`wDo=e=> zZc`I#^<>&i`x2fpiOr~}V!mV7=XrBFS5YTgQ>|^LsXiMrbVP$Xw0WAY%&h0zi+QKM z`jhkIv6;GhQR=D8*2f*f^z7jUhbwH&A_>T%CAke+87~w;-yE9*# zy6Ndsust=5Oj0`h-g$2hNOl0?k~TKCJL`}cqrWv`wpp-a-K`r?>Nt{dhQQr!B@g$A zrDbuT=&sQ!jM~ks=qo{h+LXrNAH#z!s88!&g5lga&U`=2L_T8Kp_2dv<=n7>gcjcW3uV`U*mN zS#R%^gEH_b<~ON*f<9&EJ(ay3*wt~eVZGVre*Tq8>zEWlPn2lUqe6CJufqpkS*Amf z8tZr1C+JS(#dC4G(p0Hw29%Dhj9nT}=b9Uhkta!@cP%-Alz2EDXLCtmBplqOT?OS+ zoJtwW7n9$12^a0jDWOATRY|rU2?x!YVjFd^TeZ@)!9YdSo$CCwFWMhA)l6DvgyocN zqdN;^_lf7cH<}|Gqm61wt{GL+GQY00<^t*Q1!1Ew!Lr2in)PQ5$GKUrn93}32#0;b zq9sUeW9eBHk+r+05!yN}Ib$+Qk{)(RDuq(ZcKjAy%xFI^(SGFTennpLPkcvd9Os7#OB1CUi3=C?urZ) z)oe#e_-3^;U(ysasQagovX_(^d3w^>VG8E$s8wP=-H4dk=vX=I1j9>q&Z$#&pFB2> zhe|GvWIBK)vPQcTFF{Yauz^l2lx#)Au^4Bf)4B(DcW0O2Erd9W7HNx zne&KwB=6*;$yv+dw7dolD#+<~*zC^z)31zuQPQj>MG7$wQ7(zh7@PS0Hf?XO)A+@< z4{9mXCeqre3fm2#YpQdhs()R5az_`^q@5j}^o{2))0zx;_bdqOB7b-?F}-Y!!}wHD z1$8ts_QtTOSU0KC8k@a?-Hm8GUJ=}8+mc#%7=L#8#xt9*g>5-hii$B@q zk*wlU992eC{t+Y}D^)QB@H>sh^&`!broMaoj$NC!ZyOmIxhL48Rk>dbqo1TNgFWk< z>hf9!QkB?s9*r?jw1D7Pn4M$TQ|Ol$t>9FQJ6!?gIeAC-*xKj2=|^adDVnoq(?|}u z&BXPp?^Y0vj@IL8j@OY9HNf&!*^gRVtIrp;F&>>S>gK32Z&a%^f7HCWwnp#Kk{~_%xuUrXO~|H z3|=>=$j%W++wtj{VKn`?6OeY2E%TSd^s>)!lZu;o!o=yGx1==j&)eCu)c6Th2x_-r zo}Ut%XHDrZCjVkkh#K**?K(+WID?}R4(=%}4)<&!veZ`a~~^ZJJS?5$WgDiYGUo` z=p=eLaC-xp4lJ@5)~P;c(09D9u}eHptR@6?UZi8ikwn2*wjZYrAm{Q9##-3#-6EBg z=DbCk>Ma&hb0UzX{_k6*K8ahEcuolj4=1~Nn<2TecU^3cz#u$*A`q7T5eQ1FK2H?> ziN1v)BK5{RQ8+>S#~>XQ7dH{_kBXd0E5iUiBRMyU!C7?QqD-0s&LG9(WX$$TG9d{t zGZ7AXZ?F}&ZMc1lPR%*h*&x!{w{D{Bd33(G9wy8D0@d=Uj&N#Kh!I?g_t`8shUZ1a zA_MFWWlYV{>cOQ$*?aF#%~qtEOS1!?w#E(mO&Hn4knD%+@obM{4nr?^Rg2?2JJjMm zwM^b}ac<^PyiFj^4I%AQ_I@=TdZ!tE2$-fo?(GnuW_@Ux<@BbZ?G6w1eS42dQ*RH` za?|{@O$}&``dQRk8lceZ00QPUJNB5Wf$xeG$!H=II()@_7$*@&msp?FeY|ZVX=JK( zowc5ms#<8mFJ4tOP&u-Kb;6N}b>QCGjyE??8!ktier+Ix9Sqpn9W+jH~m3T z4&Vk^BeXWr*>_v3OAIoCU|{IQj}hxN6-Oj#nE6WCZR_fC_2XFGKUBh{G>`O#or zOIxyR>EfkJ5l>Ao5|8d==15l~8bmp!L?NeV6+Kh7INx7MFn!6Jx=u3s2Q6=oJ6Dzo zcv?`-PS29{sE6#m_qw^hcxg<9oCz!^& z0Ey_LBjB92 z!K)eGv|;V~<8O_1wPbi}V>~Gi-_ROw4DaGF-$b)nTd`!xXls0i=_DE%uT;zNNVPt` z1d)mBdx;n+j3?JI3PlbguU2^rS;f%qVq^8DW!G%GY|FBx+ZIYiaQM1H3eLRNqtfv^ zw(lBVCk4Y~F}xl*&dBpkjKU7}M`S-Pdy3@=^I zfq$jD{PN3|E+^dO6Vn%4% z8ZuYLTP(zeci{(K5#A7Ui~?s6%595$vE*HLP33xy;zjCwC;f`>c->{`5Omqd(&N{$ zs-UaG+HqcCuCpb$@)8c8O19arSZy0)opfq6x^Z}ezty!Oyk<0M9>1f+<(Sg&MrJa6 zCY72!HdbGbbKbtL9;^&3Te^DnvT)(TP+yl`w0haH@VanmNOGRntX`f*ty+DBzFLl@ ztClSd@4eS$A3I@}ZT-bIGidM74S}os=rkWE@UK#b`R3eXx?m^WQdOS* z$=L^@*@JR6=^4;PvuLuJVmtjps=yZK6dKMxG0Ag@x(Wq+q*1Lkd*JDZqf(_^4reOS zR8(G!uA6YRO2S4N(GxLt{!el?0@W|{?Jkuz{p$qT6} zUlXm$Ur3v$p6YZfb;7jLnxZ4uA@Nt$ zO3Bj?vpD9^cLE`NCDV~;TZ!zp+GrBZ7_Fk_6dXOtb+x;qDaNjdloTOz=9X;DK3T=U zstOZF*tCmBdgLf2ZjOXi0vlhmfHkV_FxVbh#B#^WC@U@{Rd_EY{z* z%a@2&n4EnSfk-JZ**$zUEaHgvTAFky(s4ZGz(++X7|E5-)s0KD^bH zcJ_%fvx`cSs%oW_=M@q;AKzKS83gR^reoU%ET!`wQiQ1pNzO;H6HIqXg=yml`jjZv zNlwYn&Hh}dg_op5)1_5qY31F6#JjJqNT)AXoc6ik8*jHaH!l;d0#M0O3B zTZ(eiG1}=g;uIUk^dg)Ir>gMFBv%Df)nv6U3?&<;6=bWETSGxlkivA@(3FQ7Z>4ix z__z1JC2ZmSo=VDOXMl+lZ^KyyN|=l$sv@4hE;#!kV*GR~8nP-7XE||Jjb8b0Hl}N! zEgf@FCUmh067CY6Y`m4DSMiJWOnsN7Ww5EZwkht9>r;*i?G7PUf=W{dO~{-|N!7OV z%2QBApu8lSJj5`3=v(18J4r8|@1NAQ*QGRdySBlWmCaURj>3-Su>Vc?)v^VjNw1L& znsIw&_5d`dqDqSsCipyB9Qb6qNj0m;5=}8zKI$vLp%&RK!(csfYv&$G!$^wn(H&Ko zq&<63#Oktq>Rtj0iAg{bCbI{4rOKs7;H7k)!~jep=D3bPrZI=F5-Dpj-NLJC8Fy~k zWFN&2u-k^x?nhpPx5ND8{X+Al*3gmXOLKVg!2R{M3=pyF(+@MXatrZr6i>UKWC% zxxmgMiPVNQd=$Q8;;hadsGvc-?2x9MmJ*c@+xErM#SqMi`*dr9Z;S$(7=v;u%CtAr zfTq*@_@s9iQ}TH;)?4;6VrSBZv{rP(w13gQkKZ70CUz?QNrN^i^d!U6@X?HIsCNVMX z!uY(m9`Dk`W|PjLr>q&xy^PD^&SV9TX?6$~dMTvIMj!afWJ;5N-+8Ndo`Oj3R{Iu= zleR2lMA2AAi-R3VrOndmJ13yd&^MJnPm1hPQWoD?GDz5M$uP;JTuYMfa+urTY}wlG zMr2R4R4lWct>}=d>qvaPq-TgoU25`ulaexFli^big%(clU@TaS@2xUn5Pkn_Nwsvy%XLm*U zblGGsVLE)W?i4BIGs}}{4+&;s&e~;l_1F#bRF$Th=}Voif@Z?G>@wXhBFOWzTRvV# zfUDSeDOb%iUimELST-1zOFvfbYFxhrW?PwWccyJNv0G5|OFF}k2TZikjH=0>HtCSl z87#h=m>~z+teVuU)RHi@)jdq!%JG?I52E-XRkoy^uW-CgjOU?>IxNF?*W5R`k-$`1 zx65g6;%G9*Rym<&Fm<#=R;r_CKN1`wy&G2jAWgkplV#Q2Wz2mxCB6PQ7|uS*tkT48 z?=QsBXo1az`MEF^8O%8Dol><+T8}4m`P4>onjyt}VddYg1@dB*79*3OWeW{0xmf(; zr+{-ri@rs6cP%X?;ztFznko;{3&}<^S<3;&K-u~4lo7cDfHJ(U7M%nPs=l&bJVb^$Y5f$bj!-;a{4z~N zsg|n~cs_OacL&xSCX_5h*kyv<48M>q+eBtFd#jPUNoK;-%PC4^>&gx}tjDh8LnO#| za!#9_JwS`S#`G+dPL!R|^m^s+gE_-3StPkyIsVG1+CR~MUv*hYoWR#z;KMgNvm+cev#Yw|{w^Q0 zTMl3Z*pe8Z6!zz|wkf>PlwX6mtGYwBm`eM;*e@s`GL9-a&nKfUj`I^b1oS4OTbLkj ztsHax7qZOd-A+}`Z-x?=zi*1gkn^&4jMmvF!X2B|%g{AHTu1B=Rcfk2dQ)fm7~1uk zUY!{<&!~vFrG+Yfc2+}E+bI>G9xk&nok}n!Bp@yJJSM6fE!5&~x@{g|yi+FDdCJc1 zkk`@$^QokBueCFEbmc@PcPn^au44ky<^;dYqK%={@r&-l2^Kn{r7a}EK?z$D6_Tzo zHyNE*@Uu(A{oAnH2|R>BWFq^oYeFBm8+2sZPZBC`)>4N8|p><#V;2Jkc& z?Nafbp&pAP1LYAe6}!EsRNb!#cDu1<{ljF-yhV8x?PPEZg&BQr|8`LhuP@ttG zes1OL>*t2}hg#mxpZ(DJ)_QB&9J%TCYCFtsCNtKZx7t0;jO;<@OEG7lHd8eytlX+o zLr0d!Or{r_$=z2z!W!J2<$Pir7u&M!`0Q;b*qB2+?gmiGHd{;Qx}*H&&}1~`t~>fB zG~UxbPfEs487|80Va$!4z_IIo^r&B68P6?Q>U~SLReQQyH@9eSsProxac=V?i`t38 z-HTD;Y*gKv%zDtK_lz_y1gylvk*t%Ly@2|JoXYa|`^9^{P-7nU2;__B*v9M=%z552 zE^5b|O$?DgYlfaWqB3`}Bt4b(U934;Me0(gfEDaCg(DVQ47g+IE$(*OS71Vz)=?z$ z7|~DIfju0#CcF{~`{qO3^Cty-Ih+{?5&KF(y2|~&rB_qF5N}1MO-QT_7U%Rk{(IPg zcFD^3?kj6B^<_7!X>iFV&WtJ}FRT_O*E!|k%E>&vtru9{OfIW$xl@PQo05}A8$Rwb zc5W!dbE$G>NE}<_`mG|m7s_Hs{9T+)m9F{6PmjZ#w zu|{utZF|A>(Av&A@RKXnnqW6Sa>vOYIbu4N58IR&f-(l^i>UwxVw!2uJn@+oh*;SQ z&07r4YkD}7VQsO|Y9a+1D*2K4g0M=|k8v^kWLU%2Z}K(2v9s_Cju2gssu=S57TXokjDz`0}DXcn(*vdK^Y zcBF?NM-$hu$*?WyQwD8w6T_qpwDC*6OwIYeO_&GJJ z8oDU}T|^h*>A8-+KnrT2ZaZs4*Qonx?ZjoXYB<7@5_pq3aa}R2&xaNfxV|hH!cw0pK`_AX+ud6dC`Odeb z+qH6Vif@X0?CsDc?M>!4>|g+;LIx04ZBoiD=ZD=H4yl=BlIX06b=@Y0H6o|0m0bro zrdw02hS17^w1r=lX|l<;#k9M*&4bjUR}VYPCSPj5O!$*oV?T*`f+5cpA3IE!E@-mI zp4Xe}I&Ac?jhbKPbT7ihCp$XppRShX@4V-FH2;#%7c{qqoo=&9+r;S#Jeku;8_ccR zxkw$Q{^&^8yKZ|TRcYm*E0Gj52a4IbW&Y$C-Y7q#4b7y*s8**M{Pp+Qw_98m;}t0T ztehMw`zG=O5}1{CUeM-(U2-A!oUzc{h^N2~6X6tLvpZu4e%DmmY@nd)?3UH^kc!eh z_&H^9ylL)R8f4+Pl>9Ehq+ zwMbe7hXL`T_7<`qVE7L2j!Y|`*^ z$%oM^`LsG%f;JR=dew83)qanwc~&2a)}E^Z~msw{BiFqPTN0XQcYyyUEu z8O~ZCWIp$nAScFj@t(Pp-jz^t>`F7s`=)64JI?hNScY-hJSAW)Wc^6Ht+gwSu-=>D z(Z6zkw~94}&MaVtG2hZ+wLi61wWRISY)CNOo;?sx;*&^wnC_R%Q!CQLaWMJ8=4|Js zBsRMYYDUh2aN10*>9)Y`!goT_1}T~95`NRu%~8RQbU)tjcXZ6de%?-|Q0Fc0IiuTk z^*<^i%+5NZCLOS>vL2El=Z;*6Jg(XKx3YKBva_E7U`|r2!`uQWW3qnjOE*#a7vJ;C z09iB43NW+Mk*=!?21&53~We0Qd|1x+j&fNzs-iaKQ2N~Z8KWz|C$x@SL z!s&JFd@Uu_lS-BLdxOXoVC~dsncmfj`t(GpnJp{&^ZDF`NVbSi*XB?><2u)T>f7A@imy<49MNdNSDvd4pSH>q?=FIVYE$i)AdCYB+n^AF;L4we8tc z@F5Eu3HWV;b$8yp*8jGF)?#u}dDEn2KW)HpqwAP*f&()gRJRqlwhw_&j_vdq#S{-#QL-rFt60(S+Jj>{Ki zA~~49$ zlcdiXWtG~oq*=7;vb{|%ZsGnU3t0BvoC?sC!lN~%lWF##?lAhB_ub`nGcO|HZ`@L3 z%I&uJMl)o(jqY`n8$u$_CiI*{R&Xmk$?8>XQJ1a2YEa~wQww)>B`CFgLhU+EnX;2} zAg^{PO^50+tQV|WfW&3gPxVQmt%7`-p)_mil-9_kk<#HDJ41~c@A@qM?PPd&YS?vk zK3{rzM;}jXD7tg2K{AR0%O(aW!fKV?bLm1NuZ<*BY^n~l-q74`7xmjrR=D^u=3a51 znn|wu1Y;>0C+4T=lTJPxjQG0UXUK+Jw z+w^k3-Kdgh(CcyC;7@N^wPlQng6{UG4wdn!C9F8x4!@TnK3@59kWM$6RTT|8<{M6_ z?o^!0WC0J^m{mmgz{ZX1RBn60-}qPiv*}(Mfz^bL!?}fl7>mPcdlm$4xtn8&tYD1| zm+hzEU@e(+^WXQ~uKl~yy*X-j9ZI1C?&728v@Ul*>V(TCIyLqMO{+6(y7JRFkji{> zGW9a1HjSTacltX4OzmlU6Z2FEbXK^c112tBw=rx1OQTHv+Ats))q21ykv*={t3&D5 z+=9f>H|IH2As`w_(;0S4L1q4y0=&Dcy6rT;u(w^h4!f?XKNdZ#mg74h*G| mXWO`Fa^#%GtS&pjvf5`l9$X(8Ryy78LRmj;XeVv3HtQ_ literal 0 HcmV?d00001 diff --git a/po/bg.gmo b/po/bg.gmo new file mode 100644 index 0000000000000000000000000000000000000000..e53d84784fac5c0146deebbfcdf929cc5298b92c GIT binary patch literal 131836 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 LO5w4x9=iCy28(vD literal 0 HcmV?d00001 diff --git a/po/bg.po b/po/bg.po index 9a6bc5d..1de6b57 100644 --- a/po/bg.po +++ b/po/bg.po @@ -1,8 +1,10 @@ # Bulgarian translation of glib po-file. # Copyright (C) 2002, 2005, 2006, 2007, 2009 Free Software Foundation, Inc. # Copyright (C) 2010, 2011, 2012, 2013, 2015 Free Software Foundation, Inc. +# Copyright (C) 2016 Free Software Foundation, Inc. # Borislav Aleksandrov , 2002. -# Alexander Shopov , 2002, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2015. +# Alexander Shopov , 2002, 2005, 2006, 2007, 2008, 2009, 2010, 2011. +# Alexander Shopov , 2012, 2013, 2015, 2016. # Damyan Ivanov , 2010. # Krasimir Chonov , 2014. # @@ -10,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: glib master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-03-10 10:35+0200\n" -"PO-Revision-Date: 2015-03-10 10:12+0200\n" +"POT-Creation-Date: 2016-02-01 06:19+0200\n" +"PO-Revision-Date: 2016-01-31 22:54+0200\n" "Last-Translator: Alexander Shopov \n" "Language-Team: Bulgarian \n" "Language: bg\n" @@ -19,7 +21,6 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" #: ../gio/gapplication.c:531 msgid "Enter GApplication service mode (use from D-Bus service files)" @@ -35,12 +36,12 @@ msgid "Show GApplication options" msgstr "Извеждане на настройките за GApplication" #: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46 -#: ../gio/gresource-tool.c:485 ../gio/gsettings-tool.c:521 +#: ../gio/gresource-tool.c:488 ../gio/gsettings-tool.c:512 msgid "Print help" msgstr "Извеждане на помощта" -#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:486 -#: ../gio/gresource-tool.c:554 +#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:489 +#: ../gio/gresource-tool.c:557 msgid "[COMMAND]" msgstr "[КОМАНДА]" @@ -48,7 +49,7 @@ msgstr "[КОМАНДА]" msgid "Print version" msgstr "Извеждане на версията" -#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:527 +#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:518 msgid "Print version information and exit" msgstr "Извеждане на версията" @@ -115,14 +116,14 @@ msgstr "" "Идентификатор на приложение във формат D-Bus (например: „org.example.viewer“)" #: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589 -#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:492 -#: ../gio/gresource-tool.c:558 +#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:495 +#: ../gio/gresource-tool.c:561 msgid "FILE" msgstr "ФАЙЛ" #: ../gio/gapplication-tool.c:72 -msgid "Optional relative or relative filenames, or URIs to open" -msgstr "Незадължителни относителни пътища или файлове за отваряне" +msgid "Optional relative or absolute filenames, or URIs to open" +msgstr "Незадължителни относителни или абсолютни пътища или адреси за отваряне" #: ../gio/gapplication-tool.c:73 msgid "ACTION" @@ -141,8 +142,8 @@ msgid "Optional parameter to the action invocation, in GVariant format" msgstr "" "Незадължителен параметър при повикване на действието. Във формат за GVariant" -#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:523 -#: ../gio/gsettings-tool.c:607 +#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526 +#: ../gio/gsettings-tool.c:598 #, c-format msgid "" "Unknown command %s\n" @@ -155,8 +156,8 @@ msgstr "" msgid "Usage:\n" msgstr "Употреба:\n" -#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:548 -#: ../gio/gsettings-tool.c:641 +#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551 +#: ../gio/gsettings-tool.c:632 msgid "Arguments:\n" msgstr "Аргументи:\n" @@ -217,7 +218,7 @@ msgstr "Грешка при изпращане на съобщение „%s“ #, c-format msgid "action name must be given after application id\n" msgstr "" -"името на действие трябва да бъде подадено след идентификатор на приложение\n" +"името на действие трябва да бъде подадено след идентификатора на приложение\n" #: ../gio/gapplication-tool.c:325 #, c-format @@ -258,9 +259,9 @@ msgstr "" "\n" #: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498 -#: ../gio/ginputstream.c:176 ../gio/ginputstream.c:376 -#: ../gio/ginputstream.c:614 ../gio/ginputstream.c:1013 -#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:830 +#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379 +#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1016 +#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834 #: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206 #, c-format msgid "Too large count value passed to %s" @@ -275,8 +276,8 @@ msgstr "Търсенето не се поддържа от основния по msgid "Cannot truncate GBufferedInputStream" msgstr "GBufferedInputStream не може да се съкрати" -#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1202 -#: ../gio/giostream.c:278 ../gio/goutputstream.c:1654 +#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1205 +#: ../gio/giostream.c:300 ../gio/goutputstream.c:1658 msgid "Stream is already closed" msgstr "Потокът вече е затворен" @@ -284,10 +285,9 @@ msgstr "Потокът вече е затворен" msgid "Truncate not supported on base stream" msgstr "Основният поток не може да се съкращава" -#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1896 -#: ../gio/gdbusconnection.c:1989 ../gio/gdbusprivate.c:1421 -#: ../gio/glocalfile.c:2181 ../gio/gsimpleasyncresult.c:830 -#: ../gio/gsimpleasyncresult.c:856 +#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1847 +#: ../gio/gdbusprivate.c:1375 ../gio/glocalfile.c:2220 +#: ../gio/gsimpleasyncresult.c:870 ../gio/gsimpleasyncresult.c:896 #, c-format msgid "Operation was cancelled" msgstr "Действието е прекратено" @@ -305,24 +305,24 @@ msgid "Not enough space in destination" msgstr "Няма достатъчно място в целта" #: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848 -#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 -#: ../glib/gconvert.c:845 ../glib/giochannel.c:1557 ../glib/giochannel.c:1599 -#: ../glib/giochannel.c:2443 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 +#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 ../glib/gconvert.c:845 +#: ../glib/giochannel.c:1556 ../glib/giochannel.c:1598 +#: ../glib/giochannel.c:2442 ../glib/gutf8.c:853 ../glib/gutf8.c:1306 msgid "Invalid byte sequence in conversion input" msgstr "Грешна байтова последователност на входа за преобразуване" -#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 -#: ../glib/gconvert.c:770 ../glib/giochannel.c:1564 ../glib/giochannel.c:2455 +#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 ../glib/gconvert.c:770 +#: ../glib/giochannel.c:1563 ../glib/giochannel.c:2454 #, c-format msgid "Error during conversion: %s" msgstr "Грешка по време на преобразуване: %s" -#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:990 +#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1078 msgid "Cancellable initialization not supported" msgstr "Не се поддържа отменима инициализация" #: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321 -#: ../glib/giochannel.c:1385 +#: ../glib/giochannel.c:1384 #, c-format msgid "Conversion from character set '%s' to '%s' is not supported" msgstr "Преобразуването от набора знаци „%s“ към „%s“ не се поддържа" @@ -341,7 +341,7 @@ msgstr "Вид на %s" msgid "Unknown type" msgstr "Непознат вид" -#: ../gio/gcontenttype-win32.c:161 +#: ../gio/gcontenttype-win32.c:162 #, c-format msgid "%s filetype" msgstr "Вид на файла %s" @@ -368,13 +368,13 @@ msgstr "Операционната система няма реализация msgid "Unexpected early end-of-stream" msgstr "Неочаквано ранен край на поток" -#: ../gio/gdbusaddress.c:148 ../gio/gdbusaddress.c:236 -#: ../gio/gdbusaddress.c:317 +#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241 +#: ../gio/gdbusaddress.c:322 #, c-format msgid "Unsupported key '%s' in address entry '%s'" msgstr "Неподдържан ключ „%s“ в адрес „%s“" -#: ../gio/gdbusaddress.c:175 +#: ../gio/gdbusaddress.c:180 #, c-format msgid "" "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" @@ -382,27 +382,27 @@ msgstr "" "Адресът „%s“ е грешен (трябва да съдържа само едно от следните: път, " "временна директория или абстрактни ключове)" -#: ../gio/gdbusaddress.c:188 +#: ../gio/gdbusaddress.c:193 #, c-format msgid "Meaningless key/value pair combination in address entry '%s'" msgstr "Безсмислена комбинация от ключ и стойност в адреса „%s“" -#: ../gio/gdbusaddress.c:251 ../gio/gdbusaddress.c:332 +#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 #, c-format msgid "Error in address '%s' - the port attribute is malformed" msgstr "Грешка в адреса „%s“ — атрибутът за порт „port“ е неправилен" -#: ../gio/gdbusaddress.c:262 ../gio/gdbusaddress.c:343 +#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348 #, c-format msgid "Error in address '%s' - the family attribute is malformed" msgstr "Грешка в адреса „%s“ — атрибутът за семейство „family“ е неправилен" -#: ../gio/gdbusaddress.c:452 +#: ../gio/gdbusaddress.c:457 #, c-format msgid "Address element '%s' does not contain a colon (:)" msgstr "Елементът на адреса „%s“ не съдържа двоеточие („:“)" -#: ../gio/gdbusaddress.c:473 +#: ../gio/gdbusaddress.c:478 #, c-format msgid "" "Key/Value pair %d, '%s', in address element '%s' does not contain an equal " @@ -411,7 +411,7 @@ msgstr "" "Двойката ключ/стойност %d, „%s“ в адресния елемент „%s“ не съдържа знак за " "равенство („=“)" -#: ../gio/gdbusaddress.c:487 +#: ../gio/gdbusaddress.c:492 #, c-format msgid "" "Error unescaping key or value in Key/Value pair %d, '%s', in address element " @@ -420,7 +420,7 @@ msgstr "" "Грешка при декодиране на ключа или стойността в двойката %d, „%s“ в адресния " "елемент „%s“" -#: ../gio/gdbusaddress.c:565 +#: ../gio/gdbusaddress.c:570 #, c-format msgid "" "Error in address '%s' - the unix transport requires exactly one of the keys " @@ -429,96 +429,95 @@ msgstr "" "Грешка в адреса „%s“ — транспортът „unix“ изисква точно един от ключовете " "„path“ или „abstract“" -#: ../gio/gdbusaddress.c:601 +#: ../gio/gdbusaddress.c:606 #, c-format msgid "Error in address '%s' - the host attribute is missing or malformed" msgstr "Грешка в адреса „%s“ — атрибутът за хост „host“ липсва или е грешен" -#: ../gio/gdbusaddress.c:615 +#: ../gio/gdbusaddress.c:620 #, c-format msgid "Error in address '%s' - the port attribute is missing or malformed" msgstr "Грешка в адреса „%s“ — атрибутът за порт „port“ липсва или е грешен" -#: ../gio/gdbusaddress.c:629 +#: ../gio/gdbusaddress.c:634 #, c-format msgid "Error in address '%s' - the noncefile attribute is missing or malformed" msgstr "" -"Грешка в адреса „%s“ — атрибутът за моментност „noncefile“ липсва или е " -"грешен" +"Грешка в адреса „%s“ — атрибутът за момент „noncefile“ липсва или е грешен" -#: ../gio/gdbusaddress.c:650 +#: ../gio/gdbusaddress.c:655 msgid "Error auto-launching: " msgstr "Грешка при автоматично стартиране: " -#: ../gio/gdbusaddress.c:658 +#: ../gio/gdbusaddress.c:663 #, c-format msgid "Unknown or unsupported transport '%s' for address '%s'" msgstr "Непознат или неподдържан транспорт „%s“ за адрес „%s“" -#: ../gio/gdbusaddress.c:694 +#: ../gio/gdbusaddress.c:699 #, c-format msgid "Error opening nonce file '%s': %s" msgstr "Грешка при отваряне на моментен файл „%s“: %s" -#: ../gio/gdbusaddress.c:712 +#: ../gio/gdbusaddress.c:717 #, c-format msgid "Error reading from nonce file '%s': %s" msgstr "Грешка при четене на моментен файл „%s“: %s" -#: ../gio/gdbusaddress.c:721 +#: ../gio/gdbusaddress.c:726 #, c-format msgid "Error reading from nonce file '%s', expected 16 bytes, got %d" msgstr "" "Грешка при четене на моментен файл „%s“, очакват се 16 байта, а са получени " "%d" -#: ../gio/gdbusaddress.c:739 +#: ../gio/gdbusaddress.c:744 #, c-format msgid "Error writing contents of nonce file '%s' to stream:" msgstr "Грешка при запис на съдържанието на моментен файл „%s“ в поток:" -#: ../gio/gdbusaddress.c:958 +#: ../gio/gdbusaddress.c:950 msgid "The given address is empty" msgstr "Даденият адрес е празен" -#: ../gio/gdbusaddress.c:1028 +#: ../gio/gdbusaddress.c:1063 #, c-format msgid "Cannot spawn a message bus when setuid" msgstr "" "Създаването на шина за обмен на съобщения не е възможно при изрично зададен " "идентификатор на потребител (setuid)" -#: ../gio/gdbusaddress.c:1035 +#: ../gio/gdbusaddress.c:1070 msgid "Cannot spawn a message bus without a machine-id: " msgstr "" "Създаването на шина за обмен на съобщения не е възможно без идентификатор на " "машина: " -#: ../gio/gdbusaddress.c:1077 +#: ../gio/gdbusaddress.c:1112 #, c-format msgid "Error spawning command line '%s': " msgstr "Грешка при изпълняване на външна команда „%s“: " -#: ../gio/gdbusaddress.c:1294 +#: ../gio/gdbusaddress.c:1329 #, c-format msgid "(Type any character to close this window)\n" msgstr "(Въведете произволен знак, за да затворите този прозорец)\n" -#: ../gio/gdbusaddress.c:1425 +#: ../gio/gdbusaddress.c:1460 #, c-format msgid "Session dbus not running, and autolaunch failed" msgstr "" "Шината на сесията D-Bus не е стартирана. Автоматичното ѝ стартиране бе също " "неуспешно" -#: ../gio/gdbusaddress.c:1446 +#: ../gio/gdbusaddress.c:1471 #, c-format msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "" "Адресът на шината на сесията не може да се определи (липсва реализация за " "тази операционна система)" -#: ../gio/gdbusaddress.c:1546 ../gio/gdbusconnection.c:6931 +#: ../gio/gdbusaddress.c:1606 ../gio/gdbusconnection.c:7128 #, c-format msgid "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " @@ -527,7 +526,7 @@ msgstr "" "Адресът на шината не може да се определи от променливата на обкръжението " "DBUS_STARTER_BUS_TYPE — непозната стойност „%s“" -#: ../gio/gdbusaddress.c:1555 ../gio/gdbusconnection.c:6940 +#: ../gio/gdbusaddress.c:1615 ../gio/gdbusconnection.c:7137 msgid "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" @@ -535,7 +534,7 @@ msgstr "" "Адресът на шината не може да се определи, защото променливата " "DBUS_STARTER_BUS_TYPE липсва в обкръжението" -#: ../gio/gdbusaddress.c:1565 +#: ../gio/gdbusaddress.c:1625 #, c-format msgid "Unknown bus type %d" msgstr "Непознат вид шина %d" @@ -637,86 +636,96 @@ msgstr "Грешка при отваряне на ключодържателя msgid "(Additionally, releasing the lock for '%s' also failed: %s) " msgstr "(Допълнително, отключването на „%s“ бе също неуспешно: %s) " -#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2455 +#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2373 msgid "The connection is closed" -msgstr "Връзката е прекъсната" +msgstr "Връзката прекъсна" -#: ../gio/gdbusconnection.c:1942 +#: ../gio/gdbusconnection.c:1877 msgid "Timeout was reached" msgstr "Времето за изчакване е просрочено" -#: ../gio/gdbusconnection.c:2577 +#: ../gio/gdbusconnection.c:2495 msgid "" "Unsupported flags encountered when constructing a client-side connection" msgstr "Неподдържани флагове при създаване на изходяща връзка" -#: ../gio/gdbusconnection.c:4157 ../gio/gdbusconnection.c:4504 +#: ../gio/gdbusconnection.c:4105 ../gio/gdbusconnection.c:4452 #, c-format msgid "" "No such interface 'org.freedesktop.DBus.Properties' on object at path %s" msgstr "Обектът в %s няма интерфейс „org.freedesktop.DBus.Properties“" -#: ../gio/gdbusconnection.c:4299 +#: ../gio/gdbusconnection.c:4247 #, c-format msgid "No such property '%s'" msgstr "Липсва свойство „%s“" -#: ../gio/gdbusconnection.c:4311 +#: ../gio/gdbusconnection.c:4259 #, c-format msgid "Property '%s' is not readable" msgstr "Свойството „%s“ не поддържа четене" -#: ../gio/gdbusconnection.c:4322 +#: ../gio/gdbusconnection.c:4270 #, c-format msgid "Property '%s' is not writable" msgstr "Свойството „%s“ не поддържа запис" -#: ../gio/gdbusconnection.c:4342 +#: ../gio/gdbusconnection.c:4290 #, c-format msgid "Error setting property '%s': Expected type '%s' but got '%s'" msgstr "" "Грешка при промяна на свойството „%s“: Очакван е вид „%s“, а е получен „%s“" -#: ../gio/gdbusconnection.c:4447 ../gio/gdbusconnection.c:6371 +#: ../gio/gdbusconnection.c:4395 ../gio/gdbusconnection.c:6568 #, c-format msgid "No such interface '%s'" msgstr "Липсва интерфейс „%s“" -#: ../gio/gdbusconnection.c:4655 +#: ../gio/gdbusconnection.c:4603 msgid "No such interface" msgstr "Липсва такъв интерфейс" -#: ../gio/gdbusconnection.c:4873 ../gio/gdbusconnection.c:6880 +#: ../gio/gdbusconnection.c:4821 ../gio/gdbusconnection.c:7077 #, c-format msgid "No such interface '%s' on object at path %s" msgstr "Липсва интерфейс „%s“ към обекта в %s" -#: ../gio/gdbusconnection.c:4971 +#: ../gio/gdbusconnection.c:4919 #, c-format msgid "No such method '%s'" msgstr "Липсва метод „%s“" -#: ../gio/gdbusconnection.c:5002 +#: ../gio/gdbusconnection.c:4950 #, c-format msgid "Type of message, '%s', does not match expected type '%s'" msgstr "Видът на съобщението („%s“) не съвпада с очаквания („%s“)" -#: ../gio/gdbusconnection.c:5200 +#: ../gio/gdbusconnection.c:5148 #, c-format msgid "An object is already exported for the interface %s at %s" msgstr "Вече е наличен обект за интерфейса %s в %s" -#: ../gio/gdbusconnection.c:5399 +#: ../gio/gdbusconnection.c:5374 +#, c-format +msgid "Unable to retrieve property %s.%s" +msgstr "Свойството „%s.%s“ не може да бъде получено" + +#: ../gio/gdbusconnection.c:5430 +#, c-format +msgid "Unable to set property %s.%s" +msgstr "Свойството „%s.%s“ не може да бъде зададено" + +#: ../gio/gdbusconnection.c:5606 #, c-format msgid "Method '%s' returned type '%s', but expected '%s'" msgstr "Методът „%s“ върна тип „%s“, а се очаква „%s“" -#: ../gio/gdbusconnection.c:6482 +#: ../gio/gdbusconnection.c:6679 #, c-format msgid "Method '%s' on interface '%s' with signature '%s' does not exist" msgstr "Не съществува метод „%s“ на интерфейса „%s“ със сигнатура „%s“" -#: ../gio/gdbusconnection.c:6603 +#: ../gio/gdbusconnection.c:6800 #, c-format msgid "A subtree is already exported for %s" msgstr "Вече има поддърво за %s" @@ -903,35 +912,35 @@ msgstr "" "Тялото на съобщението е празно, а сигнатурата в полето на заглавната част е " "„(%s)“" -#: ../gio/gdbusmessage.c:3280 +#: ../gio/gdbusmessage.c:3283 #, c-format msgid "Error return with body of type '%s'" msgstr "Връщане на грешка с тяло от вид „%s“" -#: ../gio/gdbusmessage.c:3288 +#: ../gio/gdbusmessage.c:3291 msgid "Error return with empty body" msgstr "Връщане на грешка с празно тяло на съобщението" -#: ../gio/gdbusprivate.c:2085 +#: ../gio/gdbusprivate.c:2036 #, c-format msgid "Unable to get Hardware profile: %s" msgstr "Неуспешно определяне на хардуерния профил: %s" -#: ../gio/gdbusprivate.c:2130 +#: ../gio/gdbusprivate.c:2081 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: " msgstr "Неуспешно зареждане на /var/lib/dbus/machine-id или /etc/machine-id: " -#: ../gio/gdbusproxy.c:1630 +#: ../gio/gdbusproxy.c:1610 #, c-format msgid "Error calling StartServiceByName for %s: " msgstr "Грешка при извикване на StartServiceByName за %s:" -#: ../gio/gdbusproxy.c:1653 +#: ../gio/gdbusproxy.c:1633 #, c-format msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" msgstr "Неочакван отговор „%d“ от метода StartServicebyName(„%s“)" -#: ../gio/gdbusproxy.c:2754 ../gio/gdbusproxy.c:2891 +#: ../gio/gdbusproxy.c:2709 ../gio/gdbusproxy.c:2843 msgid "" "Cannot invoke method; proxy is for a well-known name without an owner and " "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag" @@ -985,55 +994,60 @@ msgstr "" "Използвайте „%s КОМАНДА --help“ за допълнителна информация за всяка " "команда.\n" -#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:220 ../gio/gdbus-tool.c:292 -#: ../gio/gdbus-tool.c:316 ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1031 -#: ../gio/gdbus-tool.c:1465 +#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:226 ../gio/gdbus-tool.c:298 +#: ../gio/gdbus-tool.c:322 ../gio/gdbus-tool.c:711 ../gio/gdbus-tool.c:1043 +#: ../gio/gdbus-tool.c:1477 #, c-format msgid "Error: %s\n" msgstr "Грешка: %s\n" -#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:233 ../gio/gdbus-tool.c:1481 +#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493 #, c-format msgid "Error parsing introspection XML: %s\n" -msgstr "Грешка при разчитане на XML с аналитична информация: %s\n" +msgstr "Грешка при анализа на XML с аналитична информация: %s\n" -#: ../gio/gdbus-tool.c:350 +#: ../gio/gdbus-tool.c:208 +#, c-format +msgid "Error: %s is not a valid name\n" +msgstr "Грешка: „%s“ не е вярно име\n" + +#: ../gio/gdbus-tool.c:356 msgid "Connect to the system bus" msgstr "Свързване към системната шина" -#: ../gio/gdbus-tool.c:351 +#: ../gio/gdbus-tool.c:357 msgid "Connect to the session bus" msgstr "Свързване към шината на сесията" -#: ../gio/gdbus-tool.c:352 +#: ../gio/gdbus-tool.c:358 msgid "Connect to given D-Bus address" msgstr "Свързване към даден адрес на D-Bus" -#: ../gio/gdbus-tool.c:362 +#: ../gio/gdbus-tool.c:368 msgid "Connection Endpoint Options:" msgstr "Варианти за връзка:" -#: ../gio/gdbus-tool.c:363 +#: ../gio/gdbus-tool.c:369 msgid "Options specifying the connection endpoint" msgstr "Опции, указващи точката за връзка" -#: ../gio/gdbus-tool.c:385 +#: ../gio/gdbus-tool.c:391 #, c-format msgid "No connection endpoint specified" msgstr "Не е указана точка за връзка" -#: ../gio/gdbus-tool.c:395 +#: ../gio/gdbus-tool.c:401 #, c-format msgid "Multiple connection endpoints specified" msgstr "Указани са множество точки за връзка" -#: ../gio/gdbus-tool.c:465 +#: ../gio/gdbus-tool.c:471 #, c-format msgid "" "Warning: According to introspection data, interface '%s' does not exist\n" msgstr "Предупреждение: Според анализа интерфейсът „%s“ не съществува\n" -#: ../gio/gdbus-tool.c:474 +#: ../gio/gdbus-tool.c:480 #, c-format msgid "" "Warning: According to introspection data, method '%s' does not exist on " @@ -1042,189 +1056,193 @@ msgstr "" "Предупреждение: Според анализа методът „%s“ не се предлага от интерфейса " "„%s“\n" -#: ../gio/gdbus-tool.c:536 +#: ../gio/gdbus-tool.c:542 msgid "Optional destination for signal (unique name)" msgstr "Незадължителен получател на сигнала (уникално име)" -#: ../gio/gdbus-tool.c:537 +#: ../gio/gdbus-tool.c:543 msgid "Object path to emit signal on" msgstr "Път до обекта, към който да се излъчи сигнал" -#: ../gio/gdbus-tool.c:538 +#: ../gio/gdbus-tool.c:544 msgid "Signal and interface name" msgstr "Име на сигнал и интерфейс" -#: ../gio/gdbus-tool.c:570 +#: ../gio/gdbus-tool.c:576 msgid "Emit a signal." msgstr "Издаване на сигнал." -#: ../gio/gdbus-tool.c:604 ../gio/gdbus-tool.c:836 ../gio/gdbus-tool.c:1571 -#: ../gio/gdbus-tool.c:1799 +#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583 +#: ../gio/gdbus-tool.c:1818 #, c-format msgid "Error connecting: %s\n" msgstr "Грешка при свързване: %s\n" -#: ../gio/gdbus-tool.c:616 +#: ../gio/gdbus-tool.c:622 #, c-format msgid "Error: object path not specified.\n" msgstr "Грешка: не е указан път до обект\n" -#: ../gio/gdbus-tool.c:621 ../gio/gdbus-tool.c:897 ../gio/gdbus-tool.c:1629 -#: ../gio/gdbus-tool.c:1858 +#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648 +#: ../gio/gdbus-tool.c:1884 #, c-format msgid "Error: %s is not a valid object path\n" msgstr "Грешка: „%s“ не е допустим път до обект\n" -#: ../gio/gdbus-tool.c:627 +#: ../gio/gdbus-tool.c:633 #, c-format msgid "Error: signal not specified.\n" msgstr "Грешка: не е указан сигнал\n" -#: ../gio/gdbus-tool.c:634 +#: ../gio/gdbus-tool.c:640 #, c-format msgid "Error: signal must be the fully-qualified name.\n" msgstr "Грешка: сигналът трябва да е указан с квалифицирано име\n" -#: ../gio/gdbus-tool.c:642 +#: ../gio/gdbus-tool.c:648 #, c-format msgid "Error: %s is not a valid interface name\n" msgstr "Грешка: „%s“ не е вярно име на интерфейс\n" -#: ../gio/gdbus-tool.c:648 +#: ../gio/gdbus-tool.c:654 #, c-format msgid "Error: %s is not a valid member name\n" msgstr "Грешка: „%s“ не е вярно име на член\n" -#: ../gio/gdbus-tool.c:654 +#: ../gio/gdbus-tool.c:660 #, c-format msgid "Error: %s is not a valid unique bus name.\n" msgstr "Грешка: „%s“ не е вярно, уникално име на шина\n" #. Use the original non-"parse-me-harder" error -#: ../gio/gdbus-tool.c:681 ../gio/gdbus-tool.c:999 +#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011 #, c-format msgid "Error parsing parameter %d: %s\n" msgstr "Грешка при анализ на параметър %d: %s\n" -#: ../gio/gdbus-tool.c:712 +#: ../gio/gdbus-tool.c:718 #, c-format msgid "Error flushing connection: %s\n" msgstr "Грешка при завършване на предаването на данните на връзка: %s\n" -#: ../gio/gdbus-tool.c:739 +#: ../gio/gdbus-tool.c:745 msgid "Destination name to invoke method on" msgstr "Целево име, към чийто метод да се направи обръщение" -#: ../gio/gdbus-tool.c:740 +#: ../gio/gdbus-tool.c:746 msgid "Object path to invoke method on" msgstr "Път до обект, към чийто метод да се направи обръщение" -#: ../gio/gdbus-tool.c:741 +#: ../gio/gdbus-tool.c:747 msgid "Method and interface name" msgstr "Име на метод и интерфейс" -#: ../gio/gdbus-tool.c:742 +#: ../gio/gdbus-tool.c:748 msgid "Timeout in seconds" msgstr "Време за изчакване в секунди" -#: ../gio/gdbus-tool.c:781 +#: ../gio/gdbus-tool.c:787 msgid "Invoke a method on a remote object." msgstr "Обръщение към метод на отдалечен обект" -#: ../gio/gdbus-tool.c:856 ../gio/gdbus-tool.c:1590 ../gio/gdbus-tool.c:1818 +#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837 #, c-format msgid "Error: Destination is not specified\n" msgstr "Грешка: не е указана цел\n" -#: ../gio/gdbus-tool.c:877 ../gio/gdbus-tool.c:1609 +#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849 +#, c-format +msgid "Error: %s is not a valid bus name\n" +msgstr "Грешка: „%s“ не е вярно име на шина\n" + +#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628 #, c-format msgid "Error: Object path is not specified\n" msgstr "Грешка: Не е указан път до обект\n" -#: ../gio/gdbus-tool.c:912 +#: ../gio/gdbus-tool.c:924 #, c-format msgid "Error: Method name is not specified\n" msgstr "Грешка: Не е указано име на метод\n" -#: ../gio/gdbus-tool.c:923 +#: ../gio/gdbus-tool.c:935 #, c-format msgid "Error: Method name '%s' is invalid\n" msgstr "Грешка: „%s“ не е допустимо име на метод\n" -#: ../gio/gdbus-tool.c:991 +#: ../gio/gdbus-tool.c:1003 #, c-format msgid "Error parsing parameter %d of type '%s': %s\n" msgstr "Грешка при анализ на параметър %d от вид „%s“: %s\n" -#: ../gio/gdbus-tool.c:1428 +#: ../gio/gdbus-tool.c:1440 msgid "Destination name to introspect" msgstr "Име на целта за анализ" -#: ../gio/gdbus-tool.c:1429 +#: ../gio/gdbus-tool.c:1441 msgid "Object path to introspect" msgstr "Път до обекта за анализ" -#: ../gio/gdbus-tool.c:1430 +#: ../gio/gdbus-tool.c:1442 msgid "Print XML" msgstr "Извеждане на XML" -#: ../gio/gdbus-tool.c:1431 +#: ../gio/gdbus-tool.c:1443 msgid "Introspect children" msgstr "Анализ на наследниците" -#: ../gio/gdbus-tool.c:1432 +#: ../gio/gdbus-tool.c:1444 msgid "Only print properties" msgstr "Извеждане само на свойствата" -#: ../gio/gdbus-tool.c:1523 +#: ../gio/gdbus-tool.c:1535 msgid "Introspect a remote object." msgstr "Анализ на отдалечен обект." -#: ../gio/gdbus-tool.c:1721 +#: ../gio/gdbus-tool.c:1740 msgid "Destination name to monitor" msgstr "Име на целта за наблюдение" -#: ../gio/gdbus-tool.c:1722 +#: ../gio/gdbus-tool.c:1741 msgid "Object path to monitor" msgstr "Път до обекта за наблюдение" -#: ../gio/gdbus-tool.c:1751 +#: ../gio/gdbus-tool.c:1770 msgid "Monitor a remote object." msgstr "Наблюдение на отдалечен обект." -#: ../gio/gdesktopappinfo.c:1999 ../gio/gdesktopappinfo.c:4530 -#: ../gio/gwin32appinfo.c:219 +#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4502 msgid "Unnamed" msgstr "Без име" -#: ../gio/gdesktopappinfo.c:2408 +#: ../gio/gdesktopappinfo.c:2402 msgid "Desktop file didn't specify Exec field" msgstr "Във файла „.desktop“ липсва поле за изпълнение" -#: ../gio/gdesktopappinfo.c:2693 +#: ../gio/gdesktopappinfo.c:2687 msgid "Unable to find terminal required for application" msgstr "Не може да се открие терминал за приложението" -#: ../gio/gdesktopappinfo.c:3114 +#: ../gio/gdesktopappinfo.c:3099 #, c-format msgid "Can't create user application configuration folder %s: %s" msgstr "Не може да се създаде папката с потребителските настройки %s: %s" -#: ../gio/gdesktopappinfo.c:3118 +#: ../gio/gdesktopappinfo.c:3103 #, c-format msgid "Can't create user MIME configuration folder %s: %s" msgstr "Не може да се създаде папката с настройките за MIME %s: %s" -#: ../gio/gdesktopappinfo.c:3358 ../gio/gdesktopappinfo.c:3382 +#: ../gio/gdesktopappinfo.c:3343 ../gio/gdesktopappinfo.c:3367 msgid "Application information lacks an identifier" msgstr "В информацията за програма липсва идентификатор" -#: ../gio/gdesktopappinfo.c:3615 +#: ../gio/gdesktopappinfo.c:3600 #, c-format msgid "Can't create user desktop file %s" msgstr "Не може да се създаде файл „.desktop“ — „%s“" -#: ../gio/gdesktopappinfo.c:3749 +#: ../gio/gdesktopappinfo.c:3734 #, c-format msgid "Custom definition for %s" msgstr "Потребителска дефиниция за %s" @@ -1252,11 +1270,15 @@ msgstr "устройството не поддържа стартиране" msgid "drive doesn't implement stop" msgstr "устройството не поддържа спиране" -#: ../gio/gdummytlsbackend.c:189 ../gio/gdummytlsbackend.c:311 -#: ../gio/gdummytlsbackend.c:401 +#: ../gio/gdummytlsbackend.c:195 ../gio/gdummytlsbackend.c:317 +#: ../gio/gdummytlsbackend.c:509 msgid "TLS support is not available" msgstr "Липсва поддръжка на TLS" +#: ../gio/gdummytlsbackend.c:419 +msgid "DTLS support is not available" +msgstr "Липсва поддръжка на DTLS" + #: ../gio/gemblem.c:323 #, c-format msgid "Can't handle version %d of GEmblem encoding" @@ -1281,14 +1303,14 @@ msgstr "Неправилен брой лексеми (%d) в кодиранет msgid "Expected a GEmblem for GEmblemedIcon" msgstr "Очакваше се GEmblem за GEmblemedIcon" -#: ../gio/gfile.c:968 ../gio/gfile.c:1206 ../gio/gfile.c:1344 -#: ../gio/gfile.c:1582 ../gio/gfile.c:1637 ../gio/gfile.c:1695 -#: ../gio/gfile.c:1779 ../gio/gfile.c:1836 ../gio/gfile.c:1900 -#: ../gio/gfile.c:1955 ../gio/gfile.c:3603 ../gio/gfile.c:3658 -#: ../gio/gfile.c:3893 ../gio/gfile.c:3935 ../gio/gfile.c:4398 -#: ../gio/gfile.c:4809 ../gio/gfile.c:4894 ../gio/gfile.c:4984 -#: ../gio/gfile.c:5081 ../gio/gfile.c:5168 ../gio/gfile.c:5269 -#: ../gio/gfile.c:7788 ../gio/gfile.c:7878 ../gio/gfile.c:7962 +#: ../gio/gfile.c:969 ../gio/gfile.c:1207 ../gio/gfile.c:1345 +#: ../gio/gfile.c:1583 ../gio/gfile.c:1638 ../gio/gfile.c:1696 +#: ../gio/gfile.c:1780 ../gio/gfile.c:1837 ../gio/gfile.c:1901 +#: ../gio/gfile.c:1956 ../gio/gfile.c:3604 ../gio/gfile.c:3659 +#: ../gio/gfile.c:3894 ../gio/gfile.c:3936 ../gio/gfile.c:4404 +#: ../gio/gfile.c:4815 ../gio/gfile.c:4900 ../gio/gfile.c:4990 +#: ../gio/gfile.c:5087 ../gio/gfile.c:5174 ../gio/gfile.c:5275 +#: ../gio/gfile.c:7796 ../gio/gfile.c:7886 ../gio/gfile.c:7970 #: ../gio/win32/gwinhttpfile.c:437 msgid "Operation not supported" msgstr "Действието не се поддържа" @@ -1303,72 +1325,72 @@ msgstr "Действието не се поддържа" #. Translators: This is an error message when trying to find #. * the enclosing (user visible) mount of a file, but none #. * exists. -#: ../gio/gfile.c:1467 ../gio/glocalfile.c:1103 ../gio/glocalfile.c:1114 -#: ../gio/glocalfile.c:1127 +#: ../gio/gfile.c:1468 ../gio/glocalfile.c:1134 ../gio/glocalfile.c:1145 +#: ../gio/glocalfile.c:1158 msgid "Containing mount does not exist" msgstr "Съдържащият монтиран обект не съществува" -#: ../gio/gfile.c:2514 ../gio/glocalfile.c:2337 +#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2376 msgid "Can't copy over directory" msgstr "Не може да се копира върху папка" -#: ../gio/gfile.c:2574 +#: ../gio/gfile.c:2575 msgid "Can't copy directory over directory" msgstr "Папка не може да се копира върху папка" -#: ../gio/gfile.c:2582 ../gio/glocalfile.c:2346 +#: ../gio/gfile.c:2583 ../gio/glocalfile.c:2385 msgid "Target file exists" msgstr "Целевият файл съществува" -#: ../gio/gfile.c:2601 +#: ../gio/gfile.c:2602 msgid "Can't recursively copy directory" msgstr "Папката не може да се копира рекурсивно" -#: ../gio/gfile.c:2883 +#: ../gio/gfile.c:2884 msgid "Splice not supported" -msgstr "Не се поддържа разделяне" +msgstr "Не се поддържа прилепване (splice)" -#: ../gio/gfile.c:2887 +#: ../gio/gfile.c:2888 #, c-format msgid "Error splicing file: %s" -msgstr "Грешка при разделяне на файл: %s" +msgstr "Грешка при прилепване (splice) на файл: %s" -#: ../gio/gfile.c:3018 +#: ../gio/gfile.c:3019 msgid "Copy (reflink/clone) between mounts is not supported" msgstr "" "Копирането между различни монтирани дялове чрез reflink/clone не се поддържа" -#: ../gio/gfile.c:3022 +#: ../gio/gfile.c:3023 msgid "Copy (reflink/clone) is not supported or invalid" msgstr "" "Копирането чрез reflink/clone не се поддържа или е извършено неправилно" -#: ../gio/gfile.c:3027 +#: ../gio/gfile.c:3028 msgid "Copy (reflink/clone) is not supported or didn't work" msgstr "Копирането чрез reflink/clone не се поддържа или не проработи" -#: ../gio/gfile.c:3090 +#: ../gio/gfile.c:3091 msgid "Can't copy special file" msgstr "Не може да се копира специален файл" -#: ../gio/gfile.c:3883 +#: ../gio/gfile.c:3884 msgid "Invalid symlink value given" msgstr "Зададена е неправилна стойност на символна връзка" -#: ../gio/gfile.c:4044 +#: ../gio/gfile.c:4045 msgid "Trash not supported" msgstr "Не се поддържа кошче" -#: ../gio/gfile.c:4156 +#: ../gio/gfile.c:4157 #, c-format msgid "File names cannot contain '%c'" msgstr "Файловите имена не могат да съдържат „%c“" -#: ../gio/gfile.c:6580 ../gio/gvolume.c:363 +#: ../gio/gfile.c:6586 ../gio/gvolume.c:363 msgid "volume doesn't implement mount" msgstr "томът не поддържа монтиране" -#: ../gio/gfile.c:6689 +#: ../gio/gfile.c:6695 msgid "No application is registered as handling this file" msgstr "Не е регистрирано приложение за обработка на този вид файлове" @@ -1379,7 +1401,7 @@ msgstr "Броячът е затворен" #: ../gio/gfileenumerator.c:219 ../gio/gfileenumerator.c:278 #: ../gio/gfileenumerator.c:377 ../gio/gfileenumerator.c:476 msgid "File enumerator has outstanding operation" -msgstr "Файловият брояч все още е е привършил" +msgstr "Файловият брояч все още не е привършил" #: ../gio/gfileenumerator.c:368 ../gio/gfileenumerator.c:467 msgid "File enumerator is already closed" @@ -1488,18 +1510,18 @@ msgstr "В адреса са зададени битове след префик #: ../gio/ginetaddressmask.c:300 #, c-format msgid "Could not parse '%s' as IP address mask" -msgstr "„%s“ не е на маска за адреси на IP" +msgstr "„%s“ не е маска за адреси на IP" -#: ../gio/ginetsocketaddress.c:196 ../gio/ginetsocketaddress.c:213 -#: ../gio/gunixsocketaddress.c:209 +#: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220 +#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:216 msgid "Not enough space for socket address" msgstr "Няма достатъчно място за адреса на гнездо" -#: ../gio/ginetsocketaddress.c:228 +#: ../gio/ginetsocketaddress.c:235 msgid "Unsupported socket address" msgstr "Неподдържан адрес на гнездо" -#: ../gio/ginputstream.c:185 +#: ../gio/ginputstream.c:188 msgid "Input stream doesn't implement read" msgstr "Входният поток не поддържа четене" @@ -1509,12 +1531,12 @@ msgstr "Входният поток не поддържа четене" #. Translators: This is an error you get if there is #. * already an operation running against this stream when #. * you try to start one -#: ../gio/ginputstream.c:1212 ../gio/giostream.c:288 -#: ../gio/goutputstream.c:1664 +#: ../gio/ginputstream.c:1215 ../gio/giostream.c:310 +#: ../gio/goutputstream.c:1668 msgid "Stream has outstanding operation" msgstr "Действията върху потока не са привършили" -#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1453 +#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1491 #, c-format msgid "Element <%s> not allowed inside <%s>" msgstr "Елементът <%s> не е позволен в <%s>" @@ -1559,7 +1581,7 @@ msgstr "Грешка при четене на файл „%s“: %s" msgid "Error compressing file %s" msgstr "Грешка при компресиране на файл: %s" -#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1565 +#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1603 #, c-format msgid "text may not appear inside <%s>" msgstr "в <%s> не е позволен текст" @@ -1574,8 +1596,8 @@ msgid "" "directory)" msgstr "Папката откъдето да се четат файловете (стандартно е текущата)" -#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:1994 -#: ../gio/glib-compile-schemas.c:2023 +#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2036 +#: ../gio/glib-compile-schemas.c:2065 msgid "DIRECTORY" msgstr "ПАПКА" @@ -1616,70 +1638,70 @@ msgid "" msgstr "" "Компилиране на файловете с указания за ресурси в ресурсен файл.\n" "Файловете за указване на ресурси трябва да завършват на „.gresource.xml“,\n" -"а ресурсният файл на „.gresource“." +"а ресурсният файл — на „.gresource“." #: ../gio/glib-compile-resources.c:639 #, c-format msgid "You should give exactly one file name\n" msgstr "Изисква се точно едно име на файл\n" -#: ../gio/glib-compile-schemas.c:772 +#: ../gio/glib-compile-schemas.c:784 msgid "empty names are not permitted" msgstr "не се позволяват празни имена" -#: ../gio/glib-compile-schemas.c:782 +#: ../gio/glib-compile-schemas.c:794 #, c-format msgid "invalid name '%s': names must begin with a lowercase letter" msgstr "неправилно име „%s“: имената трябва да започват с малка буква" -#: ../gio/glib-compile-schemas.c:794 +#: ../gio/glib-compile-schemas.c:806 #, c-format msgid "" "invalid name '%s': invalid character '%c'; only lowercase letters, numbers " "and hyphen ('-') are permitted." msgstr "" -"неправилно име „%s“: неправилен знак „%c“; позволени са само малки букви, " +"неправилно име „%s“: неправилен знак „%c“ — позволени са само малки букви, " "цифри и тире („-“)." -#: ../gio/glib-compile-schemas.c:803 +#: ../gio/glib-compile-schemas.c:815 #, c-format msgid "invalid name '%s': two successive hyphens ('--') are not permitted." msgstr "неправилно име „%s“: не са позволени две последователни тирета („--“)." -#: ../gio/glib-compile-schemas.c:812 +#: ../gio/glib-compile-schemas.c:824 #, c-format msgid "invalid name '%s': the last character may not be a hyphen ('-')." msgstr "неправилно име „%s“: последният знак не може да е тире („-“)." -#: ../gio/glib-compile-schemas.c:820 +#: ../gio/glib-compile-schemas.c:832 #, c-format msgid "invalid name '%s': maximum length is 1024" msgstr "неправилно име „%s“: максималната дължина е 1024" -#: ../gio/glib-compile-schemas.c:889 +#: ../gio/glib-compile-schemas.c:901 #, c-format msgid " already specified" msgstr " вече е указано" -#: ../gio/glib-compile-schemas.c:915 +#: ../gio/glib-compile-schemas.c:927 msgid "cannot add keys to a 'list-of' schema" msgstr "към схема „list-of“ не могат да се добавят ключове" -#: ../gio/glib-compile-schemas.c:926 +#: ../gio/glib-compile-schemas.c:938 #, c-format msgid " already specified" msgstr " вече е указано" -#: ../gio/glib-compile-schemas.c:944 +#: ../gio/glib-compile-schemas.c:956 #, c-format msgid "" " shadows in ; use " "to modify value" msgstr "" -" покрива в ; използвайте " +" засенчва в . Използвайте " ", за да промените стойността" -#: ../gio/glib-compile-schemas.c:955 +#: ../gio/glib-compile-schemas.c:967 #, c-format msgid "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " @@ -1688,63 +1710,63 @@ msgstr "" "като атрибут на трябва да присъства точно едно от „type“, „enum“ или " "„flags“" -#: ../gio/glib-compile-schemas.c:974 +#: ../gio/glib-compile-schemas.c:986 #, c-format msgid "<%s id='%s'> not (yet) defined." msgstr "<%s id='%s'> не е дефинирано (все още)." -#: ../gio/glib-compile-schemas.c:989 +#: ../gio/glib-compile-schemas.c:1001 #, c-format msgid "invalid GVariant type string '%s'" msgstr "неправилен низ за вид на GVariant: „%s“" -#: ../gio/glib-compile-schemas.c:1019 +#: ../gio/glib-compile-schemas.c:1031 msgid " given but schema isn't extending anything" msgstr "използвано е , но схемата не разширява нищо" -#: ../gio/glib-compile-schemas.c:1032 +#: ../gio/glib-compile-schemas.c:1044 #, c-format msgid "no to override" msgstr "липсва за предефиниране" -#: ../gio/glib-compile-schemas.c:1040 +#: ../gio/glib-compile-schemas.c:1052 #, c-format msgid " already specified" msgstr "вече е указано " -#: ../gio/glib-compile-schemas.c:1111 +#: ../gio/glib-compile-schemas.c:1125 #, c-format msgid " already specified" msgstr "вече е указано " -#: ../gio/glib-compile-schemas.c:1123 +#: ../gio/glib-compile-schemas.c:1137 #, c-format msgid " extends not yet existing schema '%s'" msgstr " добавя към схема „%s“, която още не съществува" -#: ../gio/glib-compile-schemas.c:1139 +#: ../gio/glib-compile-schemas.c:1153 #, c-format msgid " is list of not yet existing schema '%s'" msgstr " е списък на схема „%s“, която още не съществува" -#: ../gio/glib-compile-schemas.c:1147 +#: ../gio/glib-compile-schemas.c:1161 #, c-format msgid "Can not be a list of a schema with a path" msgstr "Не може да е списък от схема с път" -#: ../gio/glib-compile-schemas.c:1157 +#: ../gio/glib-compile-schemas.c:1171 #, c-format msgid "Can not extend a schema with a path" msgstr "Схема не може да се разширява с път" -#: ../gio/glib-compile-schemas.c:1167 +#: ../gio/glib-compile-schemas.c:1181 #, c-format msgid "" " is a list, extending which is not a list" msgstr "" " е списък, разширяващ , която не е списък" -#: ../gio/glib-compile-schemas.c:1177 +#: ../gio/glib-compile-schemas.c:1191 #, c-format msgid "" " extends but '%s' " @@ -1753,62 +1775,67 @@ msgstr "" " разширява , но " "„%s“ не разширява „%s“" -#: ../gio/glib-compile-schemas.c:1194 +#: ../gio/glib-compile-schemas.c:1208 #, c-format msgid "a path, if given, must begin and end with a slash" msgstr "всеки път трябва да започва и да завършва с наклонена черта („/“)" -#: ../gio/glib-compile-schemas.c:1201 +#: ../gio/glib-compile-schemas.c:1215 #, c-format msgid "the path of a list must end with ':/'" msgstr "пътят на списък трябва да завършва с „:/“" -#: ../gio/glib-compile-schemas.c:1233 +#: ../gio/glib-compile-schemas.c:1247 #, c-format msgid "<%s id='%s'> already specified" msgstr "вече е указано <%s id='%s'>" -#: ../gio/glib-compile-schemas.c:1457 +#: ../gio/glib-compile-schemas.c:1397 ../gio/glib-compile-schemas.c:1413 +#, c-format +msgid "Only one <%s> element allowed inside <%s>" +msgstr "Само един елемент <%s> е позволен в <%s>" + +#: ../gio/glib-compile-schemas.c:1495 #, c-format msgid "Element <%s> not allowed at the top level" msgstr "Елементът <%s> не е позволен на най-горно ниво" #. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1752 ../gio/glib-compile-schemas.c:1823 -#: ../gio/glib-compile-schemas.c:1899 +#: ../gio/glib-compile-schemas.c:1794 ../gio/glib-compile-schemas.c:1865 +#: ../gio/glib-compile-schemas.c:1941 #, c-format msgid "--strict was specified; exiting.\n" msgstr "Указано е „--strict“, изход.\n" -#: ../gio/glib-compile-schemas.c:1760 +#: ../gio/glib-compile-schemas.c:1802 #, c-format msgid "This entire file has been ignored.\n" msgstr "Целият файл е пренебрегнат.\n" -#: ../gio/glib-compile-schemas.c:1819 +#: ../gio/glib-compile-schemas.c:1861 #, c-format msgid "Ignoring this file.\n" msgstr "Пренебрегване на файла.\n" -#: ../gio/glib-compile-schemas.c:1859 +#: ../gio/glib-compile-schemas.c:1901 #, c-format msgid "No such key '%s' in schema '%s' as specified in override file '%s'" msgstr "" "Липсва ключ „%s“ в схемата „%s“, указан във файла за предефиниране „%s“" -#: ../gio/glib-compile-schemas.c:1865 ../gio/glib-compile-schemas.c:1923 -#: ../gio/glib-compile-schemas.c:1951 +#: ../gio/glib-compile-schemas.c:1907 ../gio/glib-compile-schemas.c:1965 +#: ../gio/glib-compile-schemas.c:1993 #, c-format msgid "; ignoring override for this key.\n" -msgstr "; пренебрегване на предефинирането на ключа.\n" +msgstr "пренебрегване на предефинирането на ключа.\n" -#: ../gio/glib-compile-schemas.c:1869 ../gio/glib-compile-schemas.c:1927 -#: ../gio/glib-compile-schemas.c:1955 +#: ../gio/glib-compile-schemas.c:1911 ../gio/glib-compile-schemas.c:1969 +#: ../gio/glib-compile-schemas.c:1997 #, c-format msgid " and --strict was specified; exiting.\n" msgstr "и е указано „--strict“, излизане.\n" -#: ../gio/glib-compile-schemas.c:1885 +#: ../gio/glib-compile-schemas.c:1927 #, c-format msgid "" "error parsing key '%s' in schema '%s' as specified in override file '%s': %s." @@ -1816,12 +1843,12 @@ msgstr "" "грешка при анализиране на ключа „%s“ от схемата „%s“, указан във файла за " "предефиниране „%s“ — %s." -#: ../gio/glib-compile-schemas.c:1895 +#: ../gio/glib-compile-schemas.c:1937 #, c-format msgid "Ignoring override for this key.\n" msgstr "Пренебрегване на предефинирането на ключа.\n" -#: ../gio/glib-compile-schemas.c:1913 +#: ../gio/glib-compile-schemas.c:1955 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is outside the " @@ -1830,7 +1857,7 @@ msgstr "" "предефинирането на ключа „%s“ в схемата „%s“ във файла за предефиниране „%s“ " "е извън обсега, даден в схемата" -#: ../gio/glib-compile-schemas.c:1941 +#: ../gio/glib-compile-schemas.c:1983 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is not in the " @@ -1839,24 +1866,23 @@ msgstr "" "предефинирането на ключа „%s“ в схемата „%s“ във файла за предефиниране „%s“ " "не е в списъка с позволени стойности" -#: ../gio/glib-compile-schemas.c:1994 +#: ../gio/glib-compile-schemas.c:2036 msgid "where to store the gschemas.compiled file" msgstr "място за съхраняване на файла gschemas.compiled" -# Явно става дума за обясняване на --strict -#: ../gio/glib-compile-schemas.c:1995 +#: ../gio/glib-compile-schemas.c:2037 msgid "Abort on any errors in schemas" msgstr "Прекъсване на работа при всякакви грешки в схемите" -#: ../gio/glib-compile-schemas.c:1996 +#: ../gio/glib-compile-schemas.c:2038 msgid "Do not write the gschema.compiled file" msgstr "Без запис на файл gschema.compiled" -#: ../gio/glib-compile-schemas.c:1997 +#: ../gio/glib-compile-schemas.c:2039 msgid "Do not enforce key name restrictions" msgstr "Без налагане на ограниченията за имена на ключове" -#: ../gio/glib-compile-schemas.c:2026 +#: ../gio/glib-compile-schemas.c:2068 msgid "" "Compile all GSettings schema files into a schema cache.\n" "Schema files are required to have the extension .gschema.xml,\n" @@ -1866,147 +1892,141 @@ msgstr "" "Файловете със схемите трябва да завършват на .gschema.xml,\n" "а файлът с кеша се нарича gschemas.compiled." -#: ../gio/glib-compile-schemas.c:2042 +#: ../gio/glib-compile-schemas.c:2084 #, c-format msgid "You should give exactly one directory name\n" msgstr "Изисква се точно едно име на папка\n" -#: ../gio/glib-compile-schemas.c:2081 +#: ../gio/glib-compile-schemas.c:2123 #, c-format msgid "No schema files found: " msgstr "Не са открити файлове със схеми: " -#: ../gio/glib-compile-schemas.c:2084 +#: ../gio/glib-compile-schemas.c:2126 #, c-format msgid "doing nothing.\n" msgstr "без обработка.\n" -#: ../gio/glib-compile-schemas.c:2087 +#: ../gio/glib-compile-schemas.c:2129 #, c-format msgid "removed existing output file.\n" msgstr "съществуващият резултатен файл е премахнат.\n" -#: ../gio/glocaldirectorymonitor.c:224 -msgid "Unable to find default local directory monitor type" -msgstr "" -"Стандартната функционалност за наблюдение на локални папки не може да бъде " -"открита" - -#: ../gio/glocalfile.c:604 ../gio/win32/gwinhttpfile.c:420 +#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420 #, c-format msgid "Invalid filename %s" msgstr "Неправилно име на файл: %s" -#: ../gio/glocalfile.c:981 +#: ../gio/glocalfile.c:1012 #, c-format msgid "Error getting filesystem info: %s" msgstr "Грешка при получаване на информация за файловата система: %s" -#: ../gio/glocalfile.c:1149 +#: ../gio/glocalfile.c:1180 msgid "Can't rename root directory" msgstr "Кореновата папка не може да се преименува" -#: ../gio/glocalfile.c:1169 ../gio/glocalfile.c:1195 +#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226 #, c-format msgid "Error renaming file: %s" msgstr "Грешка при преименуване на файл: %s" -#: ../gio/glocalfile.c:1178 +#: ../gio/glocalfile.c:1209 msgid "Can't rename file, filename already exists" msgstr "Файлът не може да се преименува — съществува друг файл с такова име" -#: ../gio/glocalfile.c:1191 ../gio/glocalfile.c:2210 ../gio/glocalfile.c:2239 -#: ../gio/glocalfile.c:2399 ../gio/glocalfileoutputstream.c:549 +#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2249 ../gio/glocalfile.c:2278 +#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549 msgid "Invalid filename" msgstr "Неправилно име на файл" -#: ../gio/glocalfile.c:1358 ../gio/glocalfile.c:1382 +#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413 msgid "Can't open directory" msgstr "Папката не може да бъде отворена" -#: ../gio/glocalfile.c:1366 +#: ../gio/glocalfile.c:1397 #, c-format msgid "Error opening file: %s" msgstr "Грешка при отваряне на файл: %s" -#: ../gio/glocalfile.c:1507 +#: ../gio/glocalfile.c:1538 #, c-format msgid "Error removing file: %s" msgstr "Грешка при изтриване на файл: %s" -#: ../gio/glocalfile.c:1887 +#: ../gio/glocalfile.c:1922 #, c-format msgid "Error trashing file: %s" msgstr "Грешка при преместване на файл в кошчето: %s" -#: ../gio/glocalfile.c:1910 +#: ../gio/glocalfile.c:1945 #, c-format msgid "Unable to create trash dir %s: %s" msgstr "Неуспешно създаване на папката за кошче „%s“: %s" -#: ../gio/glocalfile.c:1931 +#: ../gio/glocalfile.c:1966 msgid "Unable to find toplevel directory for trash" msgstr "Не може да се открие най-горната папка за кошче" -#: ../gio/glocalfile.c:2010 ../gio/glocalfile.c:2030 +#: ../gio/glocalfile.c:2045 ../gio/glocalfile.c:2065 msgid "Unable to find or create trash directory" msgstr "Не може да се създаде папката за кошче" -#: ../gio/glocalfile.c:2064 +#: ../gio/glocalfile.c:2099 #, c-format msgid "Unable to create trashing info file: %s" msgstr "Неуспешно създаване на файл с информация за кошчето: %s" -#: ../gio/glocalfile.c:2095 ../gio/glocalfile.c:2100 ../gio/glocalfile.c:2180 -#: ../gio/glocalfile.c:2187 +#: ../gio/glocalfile.c:2157 ../gio/glocalfile.c:2162 ../gio/glocalfile.c:2219 +#: ../gio/glocalfile.c:2226 #, c-format msgid "Unable to trash file: %s" msgstr "Неуспешно преместване на файл в кошчето: %s" -#: ../gio/glocalfile.c:2188 ../glib/gregex.c:281 +#: ../gio/glocalfile.c:2227 ../glib/gregex.c:281 msgid "internal error" msgstr "вътрешна грешка" -#: ../gio/glocalfile.c:2214 +#: ../gio/glocalfile.c:2253 #, c-format msgid "Error creating directory: %s" msgstr "Грешка при създаване на папка: %s" -#: ../gio/glocalfile.c:2243 +#: ../gio/glocalfile.c:2282 #, c-format msgid "Filesystem does not support symbolic links" msgstr "Файловата система не поддържа символни връзки" -#: ../gio/glocalfile.c:2247 +#: ../gio/glocalfile.c:2286 #, c-format msgid "Error making symbolic link: %s" msgstr "Грешка при създаване на символна връзка: %s" -#: ../gio/glocalfile.c:2309 ../gio/glocalfile.c:2403 +#: ../gio/glocalfile.c:2348 ../gio/glocalfile.c:2442 #, c-format msgid "Error moving file: %s" msgstr "Грешка при преместване на файл: %s" -#: ../gio/glocalfile.c:2332 +#: ../gio/glocalfile.c:2371 msgid "Can't move directory over directory" msgstr "Папка не може да бъде преместена върху папка" -#: ../gio/glocalfile.c:2359 ../gio/glocalfileoutputstream.c:925 +#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:925 #: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954 #: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984 msgid "Backup file creation failed" msgstr "Неуспешно създаване на резервен файл" -#: ../gio/glocalfile.c:2378 +#: ../gio/glocalfile.c:2417 #, c-format msgid "Error removing target file: %s" msgstr "Грешка при премахване на целевия файл: %s" -#: ../gio/glocalfile.c:2392 +#: ../gio/glocalfile.c:2431 msgid "Move between mounts not supported" msgstr "Не се поддържа местене между монтирани местоположения" -#: ../gio/glocalfile.c:2603 +#: ../gio/glocalfile.c:2623 #, c-format msgid "Could not determine the disk usage of %s: %s" msgstr "Не може да се определи заетото място на %s: %s" @@ -2028,79 +2048,79 @@ msgstr "Неправилно име на допълнителен атрибут msgid "Error setting extended attribute '%s': %s" msgstr "Грешка при задаване на допълнителен атрибут „%s“: %s" -#: ../gio/glocalfileinfo.c:1556 +#: ../gio/glocalfileinfo.c:1575 msgid " (invalid encoding)" msgstr " (неправилно кодиране)" -#: ../gio/glocalfileinfo.c:1747 ../gio/glocalfileoutputstream.c:803 +#: ../gio/glocalfileinfo.c:1766 ../gio/glocalfileoutputstream.c:803 #, c-format msgid "Error when getting information for file '%s': %s" msgstr "Грешка при получаване на информация за файла „%s“: %s" -#: ../gio/glocalfileinfo.c:1998 +#: ../gio/glocalfileinfo.c:2017 #, c-format msgid "Error when getting information for file descriptor: %s" msgstr "Грешка при получаване на информация за файловия дескриптор: %s" -#: ../gio/glocalfileinfo.c:2043 +#: ../gio/glocalfileinfo.c:2062 msgid "Invalid attribute type (uint32 expected)" msgstr "Неправилен вид на атрибут (очакваше се uint32)" -#: ../gio/glocalfileinfo.c:2061 +#: ../gio/glocalfileinfo.c:2080 msgid "Invalid attribute type (uint64 expected)" msgstr "Неправилен вид на атрибут (очакваше се uint64)" -#: ../gio/glocalfileinfo.c:2080 ../gio/glocalfileinfo.c:2099 +#: ../gio/glocalfileinfo.c:2099 ../gio/glocalfileinfo.c:2118 msgid "Invalid attribute type (byte string expected)" msgstr "Неправилен вид на атрибут (очакваше се низ от байтове)" -#: ../gio/glocalfileinfo.c:2134 +#: ../gio/glocalfileinfo.c:2153 msgid "Cannot set permissions on symlinks" msgstr "Грешка при задаване на правата за достъп на символната връзка" -#: ../gio/glocalfileinfo.c:2150 +#: ../gio/glocalfileinfo.c:2169 #, c-format msgid "Error setting permissions: %s" msgstr "Грешка при задаване на правата за достъп: %s" -#: ../gio/glocalfileinfo.c:2201 +#: ../gio/glocalfileinfo.c:2220 #, c-format msgid "Error setting owner: %s" msgstr "Грешка при задаване на собственик: %s" -#: ../gio/glocalfileinfo.c:2224 +#: ../gio/glocalfileinfo.c:2243 msgid "symlink must be non-NULL" msgstr "символната връзка трябва да не е NULL" -#: ../gio/glocalfileinfo.c:2234 ../gio/glocalfileinfo.c:2253 -#: ../gio/glocalfileinfo.c:2264 +#: ../gio/glocalfileinfo.c:2253 ../gio/glocalfileinfo.c:2272 +#: ../gio/glocalfileinfo.c:2283 #, c-format msgid "Error setting symlink: %s" msgstr "Грешка при задаване на символна връзка: %s" -#: ../gio/glocalfileinfo.c:2243 +#: ../gio/glocalfileinfo.c:2262 msgid "Error setting symlink: file is not a symlink" msgstr "Грешка при задаване на символна връзка: файлът не е такава" -#: ../gio/glocalfileinfo.c:2369 +#: ../gio/glocalfileinfo.c:2388 #, c-format msgid "Error setting modification or access time: %s" msgstr "Грешка при задаване на времето на промяна или достъп: %s" -#: ../gio/glocalfileinfo.c:2392 +#: ../gio/glocalfileinfo.c:2411 msgid "SELinux context must be non-NULL" msgstr "Контекстът на SELinux трябва да не е NULL" -#: ../gio/glocalfileinfo.c:2407 +#: ../gio/glocalfileinfo.c:2426 #, c-format msgid "Error setting SELinux context: %s" msgstr "Грешка при задаване на контекста на SELinux: %s" -#: ../gio/glocalfileinfo.c:2414 +#: ../gio/glocalfileinfo.c:2433 msgid "SELinux is not enabled on this system" msgstr "SELinux не е включен на тази система" -#: ../gio/glocalfileinfo.c:2506 +#: ../gio/glocalfileinfo.c:2525 #, c-format msgid "Setting attribute %s not supported" msgstr "Не се поддържа задаването на атрибута %s" @@ -2123,7 +2143,7 @@ msgstr "Грешка при търсене във файл: %s" msgid "Error closing file: %s" msgstr "Грешка при затваряне на файл: %s" -#: ../gio/glocalfilemonitor.c:145 +#: ../gio/glocalfilemonitor.c:840 msgid "Unable to find default local file monitor type" msgstr "" "Стандартната функционалност за наблюдение на локални файлове не може да бъде " @@ -2178,7 +2198,7 @@ msgstr "Файлът бе променен от външно приложени msgid "Error removing old file: %s" msgstr "Грешка при изтриване на стар файл: %s" -#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:769 +#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:771 msgid "Invalid GSeekType supplied" msgstr "Зададен е неправилен GSeekType" @@ -2190,15 +2210,15 @@ msgstr "Неправилна заявка за търсене" msgid "Cannot truncate GMemoryInputStream" msgstr "GMemoryInputStream не може да се съкрати" -#: ../gio/gmemoryoutputstream.c:565 +#: ../gio/gmemoryoutputstream.c:567 msgid "Memory output stream not resizable" msgstr "Изходящият поток в паметта не може да бъде преоразмерен" -#: ../gio/gmemoryoutputstream.c:581 +#: ../gio/gmemoryoutputstream.c:583 msgid "Failed to resize memory output stream" msgstr "Неуспешно преоразмеряване на изходящия поток в паметта" -#: ../gio/gmemoryoutputstream.c:671 +#: ../gio/gmemoryoutputstream.c:673 msgid "" "Amount of memory required to process the write is larger than available " "address space" @@ -2206,11 +2226,11 @@ msgstr "" "Количеството памет, необходимо за обработката на записа, е по-голямо от " "наличното адресно пространство." -#: ../gio/gmemoryoutputstream.c:779 +#: ../gio/gmemoryoutputstream.c:781 msgid "Requested seek before the beginning of the stream" msgstr "Заявеното търсене е преди началото на потока" -#: ../gio/gmemoryoutputstream.c:794 +#: ../gio/gmemoryoutputstream.c:796 msgid "Requested seek beyond the end of the stream" msgstr "Заявеното търсене е след края на потока" @@ -2265,16 +2285,16 @@ msgstr "монтираният обект не поддържа откриван msgid "mount doesn't implement synchronous content type guessing" msgstr "монтираният обект не поддържа синхронно откриване на вида" -#: ../gio/gnetworkaddress.c:383 +#: ../gio/gnetworkaddress.c:378 #, c-format msgid "Hostname '%s' contains '[' but not ']'" msgstr "Името на хоста „%s“ съдържа „[“, но липсва „]“" -#: ../gio/gnetworkmonitorbase.c:199 ../gio/gnetworkmonitorbase.c:302 +#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:309 msgid "Network unreachable" msgstr "Мрежата е недостъпна" -#: ../gio/gnetworkmonitorbase.c:237 ../gio/gnetworkmonitorbase.c:267 +#: ../gio/gnetworkmonitorbase.c:244 ../gio/gnetworkmonitorbase.c:274 msgid "Host unreachable" msgstr "Хостът е недостъпен" @@ -2292,52 +2312,52 @@ msgstr "Състоянието на мрежата не може да бъде msgid "Could not get network status: " msgstr "Състоянието на мрежата не може да бъде получено: " -#: ../gio/gnetworkmonitornm.c:278 +#: ../gio/gnetworkmonitornm.c:326 #, c-format msgid "NetworkManager version too old" msgstr "Прекалено стара версия на „NetworkManager“" -#: ../gio/goutputstream.c:209 ../gio/goutputstream.c:557 +#: ../gio/goutputstream.c:212 ../gio/goutputstream.c:560 msgid "Output stream doesn't implement write" msgstr "Изходният поток не поддържа запис" -#: ../gio/goutputstream.c:518 ../gio/goutputstream.c:1218 +#: ../gio/goutputstream.c:521 ../gio/goutputstream.c:1222 msgid "Source stream is already closed" msgstr "Изходният поток вече е затворен" -#: ../gio/gresolver.c:331 ../gio/gthreadedresolver.c:116 +#: ../gio/gresolver.c:330 ../gio/gthreadedresolver.c:116 #: ../gio/gthreadedresolver.c:126 #, c-format msgid "Error resolving '%s': %s" msgstr "Грешка при откриване по адрес на „%s“: %s" -#: ../gio/gresource.c:298 ../gio/gresource.c:546 ../gio/gresource.c:563 -#: ../gio/gresource.c:684 ../gio/gresource.c:753 ../gio/gresource.c:814 -#: ../gio/gresource.c:894 ../gio/gresourcefile.c:452 -#: ../gio/gresourcefile.c:553 ../gio/gresourcefile.c:655 +#: ../gio/gresource.c:304 ../gio/gresource.c:555 ../gio/gresource.c:572 +#: ../gio/gresource.c:693 ../gio/gresource.c:762 ../gio/gresource.c:823 +#: ../gio/gresource.c:903 ../gio/gresourcefile.c:453 ../gio/gresourcefile.c:576 +#: ../gio/gresourcefile.c:713 #, c-format msgid "The resource at '%s' does not exist" msgstr "Ресурсът „%s“ липсва" -#: ../gio/gresource.c:463 +#: ../gio/gresource.c:469 #, c-format msgid "The resource at '%s' failed to decompress" msgstr "Ресурсът „%s“ не може да се декомпресира" -#: ../gio/gresourcefile.c:651 +#: ../gio/gresourcefile.c:709 #, c-format msgid "The resource at '%s' is not a directory" msgstr "Ресурсът „%s“ не е папка" -#: ../gio/gresourcefile.c:859 +#: ../gio/gresourcefile.c:917 msgid "Input stream doesn't implement seek" msgstr "Входният поток не поддържа търсене" -#: ../gio/gresource-tool.c:491 +#: ../gio/gresource-tool.c:494 msgid "List sections containing resources in an elf FILE" msgstr "Изброяване на разделите с ресурси във ФАЙЛа във формат elf" -#: ../gio/gresource-tool.c:497 +#: ../gio/gresource-tool.c:500 msgid "" "List resources\n" "If SECTION is given, only list resources in this section\n" @@ -2347,16 +2367,16 @@ msgstr "" "Ако е даден РАЗДЕЛ, се изброяват само ресурсите в него\n" "Ако е даден ПЪТ, се изброяват само съвпадащите ресурси" -#: ../gio/gresource-tool.c:500 ../gio/gresource-tool.c:510 +#: ../gio/gresource-tool.c:503 ../gio/gresource-tool.c:513 msgid "FILE [PATH]" msgstr "ФАЙЛ [ПЪТ]" -#: ../gio/gresource-tool.c:501 ../gio/gresource-tool.c:511 -#: ../gio/gresource-tool.c:518 +#: ../gio/gresource-tool.c:504 ../gio/gresource-tool.c:514 +#: ../gio/gresource-tool.c:521 msgid "SECTION" msgstr "РАЗДЕЛ" -#: ../gio/gresource-tool.c:506 +#: ../gio/gresource-tool.c:509 msgid "" "List resources with details\n" "If SECTION is given, only list resources in this section\n" @@ -2368,15 +2388,15 @@ msgstr "" "Ако е даден ПЪТ, се изброяват само съвпадащите ресурси\n" "Подробностите включват раздел, размер и компресия" -#: ../gio/gresource-tool.c:516 +#: ../gio/gresource-tool.c:519 msgid "Extract a resource file to stdout" msgstr "Разархивиране на ресурс към стандартния изход" -#: ../gio/gresource-tool.c:517 +#: ../gio/gresource-tool.c:520 msgid "FILE PATH" msgstr "ПЪТ ДО ФАЙЛ" -#: ../gio/gresource-tool.c:531 +#: ../gio/gresource-tool.c:534 msgid "" "Usage:\n" " gresource [--section SECTION] COMMAND [ARGS...]\n" @@ -2404,7 +2424,7 @@ msgstr "" "За подробна информация стартирайте „gresource help КОМАНДА“\n" "\n" -#: ../gio/gresource-tool.c:545 +#: ../gio/gresource-tool.c:548 #, c-format msgid "" "Usage:\n" @@ -2419,19 +2439,19 @@ msgstr "" "%s\n" "\n" -#: ../gio/gresource-tool.c:552 +#: ../gio/gresource-tool.c:555 msgid " SECTION An (optional) elf section name\n" msgstr " РАЗДЕЛ (Незадължително) име на раздел в elf\n" -#: ../gio/gresource-tool.c:556 ../gio/gsettings-tool.c:648 +#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:639 msgid " COMMAND The (optional) command to explain\n" msgstr " КОМАНДА Помощ за командата или обща помощ, ако не е указано име\n" -#: ../gio/gresource-tool.c:562 +#: ../gio/gresource-tool.c:565 msgid " FILE An elf file (a binary or a shared library)\n" msgstr " ФАЙЛ Файл във формат elf (изпълним или споделена библиотека)\n" -#: ../gio/gresource-tool.c:565 +#: ../gio/gresource-tool.c:568 msgid "" " FILE An elf file (a binary or a shared library)\n" " or a compiled resource file\n" @@ -2439,23 +2459,24 @@ msgstr "" " ФАЙЛ Файл във формат elf (изпълним или споделена библиотека)\n" " или компилиран файл с ресурси\n" -#: ../gio/gresource-tool.c:569 +#: ../gio/gresource-tool.c:572 msgid "[PATH]" msgstr "[ПЪТ]" -#: ../gio/gresource-tool.c:571 +#: ../gio/gresource-tool.c:574 msgid " PATH An (optional) resource path (may be partial)\n" msgstr " ПЪТ (Незадължителен) (непълен) път до ресурс\n" -#: ../gio/gresource-tool.c:572 +#: ../gio/gresource-tool.c:575 msgid "PATH" msgstr "ПЪТ" -#: ../gio/gresource-tool.c:574 +#: ../gio/gresource-tool.c:577 msgid " PATH A resource path\n" msgstr " ПЪТ Път до ресурс\n" #: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72 +#: ../gio/gsettings-tool.c:824 #, c-format msgid "No such schema '%s'\n" msgstr "Липсва схема „%s“\n" @@ -2490,83 +2511,83 @@ msgstr "Пътят трябва да завършва с наклонена че msgid "Path must not contain two adjacent slashes (//)\n" msgstr "Пътят не трябва да съдържа две последователни наклонени черти („//“)\n" -#: ../gio/gsettings-tool.c:490 +#: ../gio/gsettings-tool.c:481 #, c-format msgid "The provided value is outside of the valid range\n" msgstr "Стойността е извън интервала на допустимите стойности\n" -#: ../gio/gsettings-tool.c:497 +#: ../gio/gsettings-tool.c:488 #, c-format msgid "The key is not writable\n" msgstr "Ключът не поддържа запис\n" -#: ../gio/gsettings-tool.c:533 +#: ../gio/gsettings-tool.c:524 msgid "List the installed (non-relocatable) schemas" msgstr "Извеждане на инсталираните схеми (които не се местят)" -#: ../gio/gsettings-tool.c:539 +#: ../gio/gsettings-tool.c:530 msgid "List the installed relocatable schemas" msgstr "Извеждане на инсталираните схеми, които могат да се местят" -#: ../gio/gsettings-tool.c:545 +#: ../gio/gsettings-tool.c:536 msgid "List the keys in SCHEMA" msgstr "Извеждане на ключовете в СХЕМАта" -#: ../gio/gsettings-tool.c:546 ../gio/gsettings-tool.c:552 -#: ../gio/gsettings-tool.c:589 +#: ../gio/gsettings-tool.c:537 ../gio/gsettings-tool.c:543 +#: ../gio/gsettings-tool.c:580 msgid "SCHEMA[:PATH]" msgstr "СХЕМА[:ПЪТ]" -#: ../gio/gsettings-tool.c:551 +#: ../gio/gsettings-tool.c:542 msgid "List the children of SCHEMA" msgstr "Извеждане на наследниците на СХЕМАта" -#: ../gio/gsettings-tool.c:557 +#: ../gio/gsettings-tool.c:548 msgid "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" msgstr "" -"Рекурсивно извеждане на ключовете и стойностите им\n" +"Рекурсивно извеждане на ключовете и стойностите им.\n" "Ако липсва СХЕМА, се извеждат всички ключове\n" -#: ../gio/gsettings-tool.c:559 +#: ../gio/gsettings-tool.c:550 msgid "[SCHEMA[:PATH]]" msgstr "[СХЕМА[:ПЪТ]]" -#: ../gio/gsettings-tool.c:564 +#: ../gio/gsettings-tool.c:555 msgid "Get the value of KEY" msgstr "Получаване на стойността на КЛЮЧ" -#: ../gio/gsettings-tool.c:565 ../gio/gsettings-tool.c:571 -#: ../gio/gsettings-tool.c:583 ../gio/gsettings-tool.c:595 +#: ../gio/gsettings-tool.c:556 ../gio/gsettings-tool.c:562 +#: ../gio/gsettings-tool.c:574 ../gio/gsettings-tool.c:586 msgid "SCHEMA[:PATH] KEY" msgstr "СХЕМА[:ПЪТ] КЛЮЧ" -#: ../gio/gsettings-tool.c:570 +#: ../gio/gsettings-tool.c:561 msgid "Query the range of valid values for KEY" msgstr "Запитване за интервала от допустими стойности за КЛЮЧа" -#: ../gio/gsettings-tool.c:576 +#: ../gio/gsettings-tool.c:567 msgid "Set the value of KEY to VALUE" msgstr "Задаване на СТОЙНОСТта на КЛЮЧ" -#: ../gio/gsettings-tool.c:577 +#: ../gio/gsettings-tool.c:568 msgid "SCHEMA[:PATH] KEY VALUE" msgstr "СХЕМА[:ПЪТ] КЛЮЧ СТОЙНОСТ" -#: ../gio/gsettings-tool.c:582 +#: ../gio/gsettings-tool.c:573 msgid "Reset KEY to its default value" msgstr "Връщане на стандартната стойност на КЛЮЧ" -#: ../gio/gsettings-tool.c:588 +#: ../gio/gsettings-tool.c:579 msgid "Reset all keys in SCHEMA to their defaults" msgstr "Връщане на стандартната стойност на всички ключове в СХЕМАта" -#: ../gio/gsettings-tool.c:594 +#: ../gio/gsettings-tool.c:585 msgid "Check if KEY is writable" msgstr "Проверка дали стойността на КЛЮЧ може да се променя" -#: ../gio/gsettings-tool.c:600 +#: ../gio/gsettings-tool.c:591 msgid "" "Monitor KEY for changes.\n" "If no KEY is specified, monitor all keys in SCHEMA.\n" @@ -2576,11 +2597,11 @@ msgstr "" "Ако не е указан определен КЛЮЧ, се следят всички във СХЕМАта.\n" "Наблюдението се спира с „^C“.\n" -#: ../gio/gsettings-tool.c:603 +#: ../gio/gsettings-tool.c:594 msgid "SCHEMA[:PATH] [KEY]" msgstr "СХЕМА[:ПЪТ] [КЛЮЧ]" -#: ../gio/gsettings-tool.c:615 +#: ../gio/gsettings-tool.c:606 msgid "" "Usage:\n" " gsettings --version\n" @@ -2628,7 +2649,7 @@ msgstr "" "Използвайте „gsettings help КОМАНДА“ за допълнителна информация.\n" "\n" -#: ../gio/gsettings-tool.c:638 +#: ../gio/gsettings-tool.c:629 #, c-format msgid "" "Usage:\n" @@ -2643,11 +2664,11 @@ msgstr "" "%s\n" "\n" -#: ../gio/gsettings-tool.c:644 +#: ../gio/gsettings-tool.c:635 msgid " SCHEMADIR A directory to search for additional schemas\n" msgstr " ПАПКА_НА_СХЕМА Папка, в която да се търсят допълнителни схеми\n" -#: ../gio/gsettings-tool.c:652 +#: ../gio/gsettings-tool.c:643 msgid "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" @@ -2656,19 +2677,19 @@ msgstr "" " СХЕМА Името на схемата\n" " ПЪТ Път (за схеми, които могат да се местят)\n" -#: ../gio/gsettings-tool.c:657 +#: ../gio/gsettings-tool.c:648 msgid " KEY The (optional) key within the schema\n" msgstr " КЛЮЧ Ключ в схемата (незадължителен)\n" -#: ../gio/gsettings-tool.c:661 +#: ../gio/gsettings-tool.c:652 msgid " KEY The key within the schema\n" msgstr " КЛЮЧ Ключ в схемата\n" -#: ../gio/gsettings-tool.c:665 +#: ../gio/gsettings-tool.c:656 msgid " VALUE The value to set\n" msgstr " СТОЙНОСТ Стойност, която да бъде зададена\n" -#: ../gio/gsettings-tool.c:720 +#: ../gio/gsettings-tool.c:712 #, c-format msgid "Could not load schemas from %s: %s\n" msgstr "Схеми от „%s“ не могат да се заредят: %s\n" @@ -2678,138 +2699,153 @@ msgstr "Схеми от „%s“ не могат да се заредят: %s\n" msgid "Empty schema name given\n" msgstr "Подадено е празно име за схема\n" -#: ../gio/gsettings-tool.c:811 +#: ../gio/gsettings-tool.c:837 #, c-format msgid "No such key '%s'\n" msgstr "Липсва ключ „%s“\n" -#: ../gio/gsocket.c:271 +#: ../gio/gsocket.c:364 msgid "Invalid socket, not initialized" msgstr "Неправилно гнездо, не е инициализирано" -#: ../gio/gsocket.c:278 +#: ../gio/gsocket.c:371 #, c-format msgid "Invalid socket, initialization failed due to: %s" msgstr "Неправилно гнездо, неуспешна инициализация понеже: %s" -#: ../gio/gsocket.c:286 +#: ../gio/gsocket.c:379 msgid "Socket is already closed" msgstr "Гнездото вече е затворено" -#: ../gio/gsocket.c:301 ../gio/gsocket.c:3627 ../gio/gsocket.c:3682 +#: ../gio/gsocket.c:394 ../gio/gsocket.c:2751 ../gio/gsocket.c:3896 +#: ../gio/gsocket.c:3951 msgid "Socket I/O timed out" msgstr "Просрочено време за отговор при входни-изходна операция с гнездото" -#: ../gio/gsocket.c:448 +#: ../gio/gsocket.c:526 #, c-format msgid "creating GSocket from fd: %s" msgstr "създаване на GSocket от файлов дескриптор: %s" -#: ../gio/gsocket.c:476 ../gio/gsocket.c:530 ../gio/gsocket.c:537 +#: ../gio/gsocket.c:554 ../gio/gsocket.c:608 ../gio/gsocket.c:615 #, c-format msgid "Unable to create socket: %s" msgstr "Неуспешно създаване на гнездо: %s" -#: ../gio/gsocket.c:530 +#: ../gio/gsocket.c:608 msgid "Unknown family was specified" msgstr "Указан е непознат вид версия на протокол" -#: ../gio/gsocket.c:537 +#: ../gio/gsocket.c:615 msgid "Unknown protocol was specified" msgstr "Указан е непознат протокол" -#: ../gio/gsocket.c:1727 +#: ../gio/gsocket.c:1104 +#, c-format +msgid "Cannot use datagram operations on a non-datagram socket." +msgstr "" +"Не може да се използват операции за дейтаграми върху гнезда, които не са за " +"дейтаграми." + +#: ../gio/gsocket.c:1121 +#, c-format +msgid "Cannot use datagram operations on a socket with a timeout set." +msgstr "" +"Не може да се използват операции за дейтаграми върху гнезда без зададено " +"максимално време за операцията." + +#: ../gio/gsocket.c:1925 #, c-format msgid "could not get local address: %s" msgstr "локалният адрес не може да бъде получен :%s" -#: ../gio/gsocket.c:1770 +#: ../gio/gsocket.c:1968 #, c-format msgid "could not get remote address: %s" msgstr "отдалеченият адрес не може да бъде получен :%s" -#: ../gio/gsocket.c:1831 +#: ../gio/gsocket.c:2034 #, c-format msgid "could not listen: %s" msgstr "не може да се слуша: %s" -#: ../gio/gsocket.c:1930 +#: ../gio/gsocket.c:2133 #, c-format msgid "Error binding to address: %s" msgstr "Грешка при свързване към адрес: %s" -#: ../gio/gsocket.c:2045 ../gio/gsocket.c:2082 +#: ../gio/gsocket.c:2248 ../gio/gsocket.c:2285 #, c-format msgid "Error joining multicast group: %s" msgstr "Грешка при включване към група за разпръскване: %s" -#: ../gio/gsocket.c:2046 ../gio/gsocket.c:2083 +#: ../gio/gsocket.c:2249 ../gio/gsocket.c:2286 #, c-format msgid "Error leaving multicast group: %s" msgstr "Грешка при напускане на група за разпръскване: %s" -#: ../gio/gsocket.c:2047 +#: ../gio/gsocket.c:2250 msgid "No support for source-specific multicast" msgstr "Липсва поддръжка за насочено разпръскване" -#: ../gio/gsocket.c:2269 +#: ../gio/gsocket.c:2470 #, c-format msgid "Error accepting connection: %s" msgstr "Грешка при приемане на връзка: %s" -#: ../gio/gsocket.c:2392 +#: ../gio/gsocket.c:2593 msgid "Connection in progress" msgstr "В момента се осъществява връзка" -#: ../gio/gsocket.c:2442 +#: ../gio/gsocket.c:2644 msgid "Unable to get pending error: " msgstr "Неуспешно получаване на текущата грешка: " -#: ../gio/gsocket.c:2645 +#: ../gio/gsocket.c:2816 #, c-format msgid "Error receiving data: %s" msgstr "Грешка при получаване на данни: %s" -#: ../gio/gsocket.c:2820 +#: ../gio/gsocket.c:3013 #, c-format msgid "Error sending data: %s" msgstr "Грешка при изпращане на данни: %s" -#: ../gio/gsocket.c:2934 +#: ../gio/gsocket.c:3200 #, c-format msgid "Unable to shutdown socket: %s" msgstr "Неуспешно изключване на гнездо: %s" -#: ../gio/gsocket.c:3013 +#: ../gio/gsocket.c:3281 #, c-format msgid "Error closing socket: %s" msgstr "Грешка при затваряне на гнездо: %s" -#: ../gio/gsocket.c:3620 +#: ../gio/gsocket.c:3889 #, c-format msgid "Waiting for socket condition: %s" msgstr "Изчакване за състояние на гнездо: %s" -#: ../gio/gsocket.c:3907 ../gio/gsocket.c:3990 ../gio/gsocket.c:4218 +#: ../gio/gsocket.c:4361 ../gio/gsocket.c:4441 ../gio/gsocket.c:4619 #, c-format msgid "Error sending message: %s" msgstr "Грешка при изпращане на съобщение: %s" -#: ../gio/gsocket.c:3932 +#: ../gio/gsocket.c:4385 msgid "GSocketControlMessage not supported on Windows" -msgstr "GSocketControlMessage не се поддържа под Уиндоус" +msgstr "GSocketControlMessage не се поддържа под Windows" -#: ../gio/gsocket.c:4546 ../gio/gsocket.c:4684 +#: ../gio/gsocket.c:4840 ../gio/gsocket.c:4913 ../gio/gsocket.c:5140 #, c-format msgid "Error receiving message: %s" msgstr "Грешка при изпращане на съобщение: %s" -#: ../gio/gsocket.c:4806 +#: ../gio/gsocket.c:5412 #, c-format msgid "Unable to read socket credentials: %s" msgstr "Неуспешно изчитане на правата на гнездо: %s" -#: ../gio/gsocket.c:4815 +#: ../gio/gsocket.c:5421 msgid "g_socket_get_credentials not implemented for this OS" msgstr "g_socket_get_credentials не е реализирана на тази операционна система" @@ -2840,11 +2876,11 @@ msgstr "Не се поддържа посредничество на връзк msgid "Proxy protocol '%s' is not supported." msgstr "Протоколът за посредничество „%s“ не се поддържа." -#: ../gio/gsocketlistener.c:188 +#: ../gio/gsocketlistener.c:218 msgid "Listener is already closed" msgstr "Функцията за слушане вече е затворена" -#: ../gio/gsocketlistener.c:234 +#: ../gio/gsocketlistener.c:264 msgid "Added socket is closed" msgstr "Добавеното гнездо е затворено" @@ -2916,11 +2952,11 @@ msgstr "Правилата не позволяват свързването по #: ../gio/gsocks5proxy.c:368 msgid "Host unreachable through SOCKSv5 server." -msgstr "Хостът не е достижим през сървъра за SOCKSv5." +msgstr "Хостът не е достъпен през сървъра за SOCKSv5." #: ../gio/gsocks5proxy.c:374 msgid "Network unreachable through SOCKSv5 proxy." -msgstr "Мрежата не е достижима през сървъра посредник за SOCKSv5." +msgstr "Мрежата не е достъпна през сървъра посредник за SOCKSv5." #: ../gio/gsocks5proxy.c:380 msgid "Connection refused through SOCKSv5 proxy." @@ -3012,7 +3048,7 @@ msgstr "Въведената парола е неправилна." #, c-format msgid "Expecting 1 control message, got %d" msgid_plural "Expecting 1 control message, got %d" -msgstr[0] "Очакваше се 1 контролно съобщение, а бяха получени %d" +msgstr[0] "Очакваше се 1 контролно съобщение, а беше получено %d" msgstr[1] "Очакваше се 1 контролно съобщение, а бяха получени %d" #: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:573 @@ -3060,12 +3096,12 @@ msgstr "Не се очакваше контролно съобщение, а б msgid "Error while disabling SO_PASSCRED: %s" msgstr "Грешка при забраняване на SO_PASSCRED: %s" -#: ../gio/gunixinputstream.c:370 ../gio/gunixinputstream.c:391 +#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390 #, c-format msgid "Error reading from file descriptor: %s" msgstr "Грешка при четене от файловия дескриптор: %s" -#: ../gio/gunixinputstream.c:424 ../gio/gunixoutputstream.c:410 +#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409 #, c-format msgid "Error closing file descriptor: %s" msgstr "Грешка при затваряне на файловия дескриптор: %s" @@ -3074,15 +3110,14 @@ msgstr "Грешка при затваряне на файловия дескр msgid "Filesystem root" msgstr "Коренова папка на файловата система" -#: ../gio/gunixoutputstream.c:356 ../gio/gunixoutputstream.c:377 +#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376 #, c-format msgid "Error writing to file descriptor: %s" msgstr "Грешка при запис във файловия дескриптор: %s" -#: ../gio/gunixsocketaddress.c:232 +#: ../gio/gunixsocketaddress.c:239 msgid "Abstract UNIX domain socket addresses not supported on this system" -msgstr "" -"Тази система не поддържа абстрактни адреси на гнезда за домейни в ЮНИКС" +msgstr "Тази система не поддържа абстрактни адреси на гнезда за домейни в Unix" #: ../gio/gvolume.c:437 msgid "volume doesn't implement eject" @@ -3095,34 +3130,17 @@ msgstr "томът не поддържа изваждане" msgid "volume doesn't implement eject or eject_with_operation" msgstr "томът не поддържа нито изваждане, нито изваждане с действие" -#: ../gio/gwin32appinfo.c:274 -msgid "Can't find application" -msgstr "Приложението не може да бъде открито" - -#: ../gio/gwin32appinfo.c:303 -#, c-format -msgid "Error launching application: %s" -msgstr "Грешка при стартиране на приложение: %s" - -#: ../gio/gwin32appinfo.c:378 -msgid "association changes not supported on win32" -msgstr "не се поддържа промяна на асоциациите при win32" - -#: ../gio/gwin32appinfo.c:390 -msgid "Association creation not supported on win32" -msgstr "Не се поддържа създаването на асоциации при win32" - -#: ../gio/gwin32inputstream.c:344 +#: ../gio/gwin32inputstream.c:343 #, c-format msgid "Error reading from handle: %s" msgstr "Грешка при четене от манипулатор: %s" -#: ../gio/gwin32inputstream.c:388 ../gio/gwin32outputstream.c:375 +#: ../gio/gwin32inputstream.c:387 ../gio/gwin32outputstream.c:374 #, c-format msgid "Error closing handle: %s" msgstr "Грешка при затваряне на манипулатор: %s" -#: ../gio/gwin32outputstream.c:331 +#: ../gio/gwin32outputstream.c:330 #, c-format msgid "Error writing to handle: %s" msgstr "Грешка при запис в манипулатор: %s" @@ -3239,8 +3257,8 @@ msgstr "Никоя програма „%s“ не е регистрирала о msgid "Failed to expand exec line '%s' with URI '%s'" msgstr "Неуспешно дописване на реда за изпълнение „%s“ с адреса „%s“" -#: ../glib/gconvert.c:477 ../glib/gutf8.c:833 ../glib/gutf8.c:1044 -#: ../glib/gutf8.c:1181 ../glib/gutf8.c:1285 +#: ../glib/gconvert.c:477 ../glib/gutf8.c:849 ../glib/gutf8.c:1061 +#: ../glib/gutf8.c:1198 ../glib/gutf8.c:1302 msgid "Partial character sequence at end of input" msgstr "Непълна знакова последователност в края на входните данни" @@ -3250,39 +3268,39 @@ msgid "Cannot convert fallback '%s' to codeset '%s'" msgstr "" "Заместващият знак „%s“ не може да бъде преобразуван към знак от набора „%s“" -#: ../glib/gconvert.c:1566 +#: ../glib/gconvert.c:1567 #, c-format msgid "The URI '%s' is not an absolute URI using the \"file\" scheme" msgstr "" "Адресът „%s“ не е абсолютен при използване на схемата „file“ (файлова " "система)" -#: ../glib/gconvert.c:1576 +#: ../glib/gconvert.c:1577 #, c-format msgid "The local file URI '%s' may not include a '#'" msgstr "Адресът „%s“ на локален файл не може да включва „#“" -#: ../glib/gconvert.c:1593 +#: ../glib/gconvert.c:1594 #, c-format msgid "The URI '%s' is invalid" msgstr "Адресът „%s“ е неправилен" -#: ../glib/gconvert.c:1605 +#: ../glib/gconvert.c:1606 #, c-format msgid "The hostname of the URI '%s' is invalid" msgstr "Името на хоста в адреса „%s“ е неправилно" -#: ../glib/gconvert.c:1621 +#: ../glib/gconvert.c:1622 #, c-format msgid "The URI '%s' contains invalidly escaped characters" msgstr "Адресът „%s“ съдържа грешни екраниращи последователности" -#: ../glib/gconvert.c:1716 +#: ../glib/gconvert.c:1717 #, c-format msgid "The pathname '%s' is not an absolute path" msgstr "Пътят „%s“ не е абсолютен" -#: ../glib/gconvert.c:1726 +#: ../glib/gconvert.c:1727 msgid "Invalid hostname" msgstr "Неправилно име на хост" @@ -3302,13 +3320,13 @@ msgstr "сл. об." #: ../glib/gdatetime.c:206 msgctxt "GDateTime" msgid "%a %b %e %H:%M:%S %Y" -msgstr "%x (%a) %X %Z" +msgstr "%d.%m.%Y (%a) %H:%M:%S" #. Translators: this is the preferred format for expressing the date #: ../glib/gdatetime.c:209 msgctxt "GDateTime" msgid "%m/%d/%y" -msgstr "%d.%m.%y" +msgstr "%d.%m.%Y" #. Translators: this is the preferred format for expressing the time #: ../glib/gdatetime.c:212 @@ -3320,7 +3338,7 @@ msgstr "%H:%M:%S" #: ../glib/gdatetime.c:215 msgctxt "GDateTime" msgid "%I:%M:%S %p" -msgstr "%l,%M,%S" +msgstr "%l:%M:%S %p" #: ../glib/gdatetime.c:228 msgctxt "full month name" @@ -3548,20 +3566,19 @@ msgstr "Неуспешно отваряне на файл „%s“: %s" #, c-format msgid "Failed to get attributes of file '%s': fstat() failed: %s" msgstr "" -"Неуспех при получаване на атрибутите на файл „%s“: неуспешно изпълнение на " +"Неуспешно получаване на атрибутите на файл „%s“: неуспешно изпълнение на " "fstat(): %s" #: ../glib/gfileutils.c:907 #, c-format msgid "Failed to open file '%s': fdopen() failed: %s" -msgstr "" -"Неуспех при отваряне на файл „%s“: неуспешно изпълнение на fdopen(): %s" +msgstr "Неуспешно отваряне на файл „%s“: неуспешно изпълнение на fdopen(): %s" #: ../glib/gfileutils.c:1006 #, c-format msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s" msgstr "" -"Неуспех при преименуване на файл „%s“ на „%s“: неуспешно изпълнение на " +"Неуспешно преименуване на файл „%s“ на „%s“: неуспешно изпълнение на " "g_rename(): %s" #: ../glib/gfileutils.c:1041 ../glib/gfileutils.c:1540 @@ -3605,25 +3622,25 @@ msgstr "Неуспешно четене на символната връзка msgid "Symbolic links not supported" msgstr "Символни връзки не се поддържат" -#: ../glib/giochannel.c:1389 +#: ../glib/giochannel.c:1388 #, c-format msgid "Could not open converter from '%s' to '%s': %s" msgstr "Не може да се отвори конвертор от „%s“ към „%s“: %s" -#: ../glib/giochannel.c:1734 +#: ../glib/giochannel.c:1733 msgid "Can't do a raw read in g_io_channel_read_line_string" msgstr "Не може да се чете от g_io_channel_read_line_string" -#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039 -#: ../glib/giochannel.c:2126 +#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038 +#: ../glib/giochannel.c:2125 msgid "Leftover unconverted data in read buffer" msgstr "В буфера за четене останаха непреобразувани данни" -#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939 +#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938 msgid "Channel terminates in a partial character" msgstr "Каналът прекъсна на непълен знак" -#: ../glib/giochannel.c:1925 +#: ../glib/giochannel.c:1924 msgid "Can't do a raw read in g_io_channel_read_to_end" msgstr "Не може да се чете от g_io_channel_read_to_end" @@ -3663,8 +3680,8 @@ msgid "Key file contains unsupported encoding '%s'" msgstr "Ключовият файл съдържа неподдържаното кодиране „%s“" #: ../glib/gkeyfile.c:1548 ../glib/gkeyfile.c:1721 ../glib/gkeyfile.c:3099 -#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3288 ../glib/gkeyfile.c:3418 -#: ../glib/gkeyfile.c:3560 ../glib/gkeyfile.c:3789 ../glib/gkeyfile.c:3856 +#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3292 ../glib/gkeyfile.c:3422 +#: ../glib/gkeyfile.c:3566 ../glib/gkeyfile.c:3795 ../glib/gkeyfile.c:3862 #, c-format msgid "Key file does not have group '%s'" msgstr "Ключовият файл не съдържа групата „%s“" @@ -3701,32 +3718,32 @@ msgstr "" msgid "Key '%s' in group '%s' has value '%s' where %s was expected" msgstr "Ключът „%s“ в групата „%s“ има стойност „%s“, а се очакваше „%s“." -#: ../glib/gkeyfile.c:4096 +#: ../glib/gkeyfile.c:4102 msgid "Key file contains escape character at end of line" msgstr "Ключовият файл съдържа екранираща последователност в край на ред" -#: ../glib/gkeyfile.c:4118 +#: ../glib/gkeyfile.c:4124 #, c-format msgid "Key file contains invalid escape sequence '%s'" msgstr "Ключовият файл съдържа грешна екранираща последователност — „%s“" -#: ../glib/gkeyfile.c:4260 +#: ../glib/gkeyfile.c:4266 #, c-format msgid "Value '%s' cannot be interpreted as a number." msgstr "Стойността „%s“ не може да се интерпретира като число." -#: ../glib/gkeyfile.c:4274 +#: ../glib/gkeyfile.c:4280 #, c-format msgid "Integer value '%s' out of range" msgstr "Целочислената стойност „%s“ е извън интервала на допустими стойности" -#: ../glib/gkeyfile.c:4307 +#: ../glib/gkeyfile.c:4313 #, c-format msgid "Value '%s' cannot be interpreted as a float number." msgstr "" "Стойността „%s“ не може да се интерпретира като число с плаваща запетая." -#: ../glib/gkeyfile.c:4331 +#: ../glib/gkeyfile.c:4350 #, c-format msgid "Value '%s' cannot be interpreted as a boolean." msgstr "Стойността „%s“ не може да се интерпретира като булева." @@ -3775,56 +3792,55 @@ msgstr "„%s“ е неправилно име: „%c“" msgid "Error on line %d: %s" msgstr "Грешка на ред %d: %s" -#: ../glib/gmarkup.c:683 +#: ../glib/gmarkup.c:676 #, c-format msgid "" "Failed to parse '%-.*s', which should have been a digit inside a character " "reference (ê for example) - perhaps the digit is too large" msgstr "" "Грешка при анализ на „%-.*s“, което трябва да е число в указател на знак " -"(напр. ê). Вероятно числото е твърде голямо" +"(напр. „ê“). Вероятно числото е твърде голямо" -#: ../glib/gmarkup.c:695 +#: ../glib/gmarkup.c:688 msgid "" "Character reference did not end with a semicolon; most likely you used an " "ampersand character without intending to start an entity - escape ampersand " "as &" msgstr "" -"Указателят на знак не завършва с „;“. Най-вероятно сте използвали амперсанд, " -"без той да е начало на заместваща последователност. Представете амперсанда " -"чрез „&“" +"Указателят на знак не завършва с „;“. Най-вероятно сте използвали „&“, без " +"той да е начало на заместваща последователност. Представете го чрез „&“" -#: ../glib/gmarkup.c:721 +#: ../glib/gmarkup.c:714 #, c-format msgid "Character reference '%-.*s' does not encode a permitted character" msgstr "Указателят на знак „%-.*s“ не представя разрешен знак при декодиране" -#: ../glib/gmarkup.c:759 +#: ../glib/gmarkup.c:752 msgid "" "Empty entity '&;' seen; valid entities are: & " < > '" msgstr "" "Намерена е празна заместваща последователност: „&;“. Валидни " "последователности са: „&“, „"“, „<“, „>“, „'“" -#: ../glib/gmarkup.c:767 +#: ../glib/gmarkup.c:760 #, c-format msgid "Entity name '%-.*s' is not known" msgstr "Името на заместващата последователност „%-.*s“ е неизвестно" -#: ../glib/gmarkup.c:772 +#: ../glib/gmarkup.c:765 msgid "" "Entity did not end with a semicolon; most likely you used an ampersand " "character without intending to start an entity - escape ampersand as &" msgstr "" "Заместващата последователност не завършва с „;“. Най-вероятно сте използвали " -"амперсанд, без той да е начало на заместваща последователност. Представете " -"амперсанда чрез „&“" +"„&“, без той да е начало на заместваща последователност. Представете го чрез " +"„&“" -#: ../glib/gmarkup.c:1178 +#: ../glib/gmarkup.c:1171 msgid "Document must begin with an element (e.g. )" msgstr "Документът трябва да започва с елемент (напр. )" -#: ../glib/gmarkup.c:1218 +#: ../glib/gmarkup.c:1211 #, c-format msgid "" "'%s' is not a valid character following a '<' character; it may not begin an " @@ -3832,7 +3848,7 @@ msgid "" msgstr "" "„%s“ е неправилен знак след „<“. Името на елемент не може да започне с него" -#: ../glib/gmarkup.c:1260 +#: ../glib/gmarkup.c:1253 #, c-format msgid "" "Odd character '%s', expected a '>' character to end the empty-element tag " @@ -3841,7 +3857,7 @@ msgstr "" "Неподходящ знак „%s“, очаква се етикетът на празния елемент „%s“ да завърши " "с „>“" -#: ../glib/gmarkup.c:1341 +#: ../glib/gmarkup.c:1334 #, c-format msgid "" "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" @@ -3849,7 +3865,7 @@ msgstr "" "Неподходящ знак „%s“, очаква се „=“ след името на атрибут „%s“ на елемент " "„%s“" -#: ../glib/gmarkup.c:1382 +#: ../glib/gmarkup.c:1375 #, c-format msgid "" "Odd character '%s', expected a '>' or '/' character to end the start tag of " @@ -3860,7 +3876,7 @@ msgstr "" "завърши със знак „>“ или „/“, или евентуално да продължи с атрибут. Най-" "вероятно използвате неправилен знак в името на атрибут" -#: ../glib/gmarkup.c:1426 +#: ../glib/gmarkup.c:1419 #, c-format msgid "" "Odd character '%s', expected an open quote mark after the equals sign when " @@ -3869,7 +3885,7 @@ msgstr "" "Неподходящ знак „%s“, очаква се знакът „\"“ след знака за равенство, когато " "се присвоява стойност на атрибута „%s“ на елемент „%s“" -#: ../glib/gmarkup.c:1559 +#: ../glib/gmarkup.c:1552 #, c-format msgid "" "'%s' is not a valid character following the characters '“" -#: ../glib/gmarkup.c:1606 +#: ../glib/gmarkup.c:1599 #, c-format msgid "Element '%s' was closed, no element is currently open" msgstr "Елементът „%s“ е затворен, няма текущо отворен елемент" -#: ../glib/gmarkup.c:1615 +#: ../glib/gmarkup.c:1608 #, c-format msgid "Element '%s' was closed, but the currently open element is '%s'" msgstr "Елементът „%s“ е затворен, но текущо е отворен елемент „%s“" -#: ../glib/gmarkup.c:1768 +#: ../glib/gmarkup.c:1761 msgid "Document was empty or contained only whitespace" msgstr "Документът е празен или съдържа само празни знаци" -#: ../glib/gmarkup.c:1782 +#: ../glib/gmarkup.c:1775 msgid "Document ended unexpectedly just after an open angle bracket '<'" msgstr "" "Документът завършва неочаквано веднага след отваряща счупена скоба — „<“" -#: ../glib/gmarkup.c:1790 ../glib/gmarkup.c:1835 +#: ../glib/gmarkup.c:1783 ../glib/gmarkup.c:1828 #, c-format msgid "" "Document ended unexpectedly with elements still open - '%s' was the last " @@ -3914,7 +3930,7 @@ msgstr "" "Документът завършва неочаквано — има отворени елементи. Последно отворен е " "„%s“" -#: ../glib/gmarkup.c:1798 +#: ../glib/gmarkup.c:1791 #, c-format msgid "" "Document ended unexpectedly, expected to see a close angle bracket ending " @@ -3923,19 +3939,19 @@ msgstr "" "Документът завършва неочаквано, очаква се затваряща счупена скоба да завърши " "етикета <%s/>" -#: ../glib/gmarkup.c:1804 +#: ../glib/gmarkup.c:1797 msgid "Document ended unexpectedly inside an element name" msgstr "Документът завършва неочаквано в името на елемент" -#: ../glib/gmarkup.c:1810 +#: ../glib/gmarkup.c:1803 msgid "Document ended unexpectedly inside an attribute name" msgstr "Документът завършва неочаквано в името на атрибут" -#: ../glib/gmarkup.c:1815 +#: ../glib/gmarkup.c:1808 msgid "Document ended unexpectedly inside an element-opening tag." msgstr "Документът завършва неочаквано в отварящ етикет на елемент " -#: ../glib/gmarkup.c:1821 +#: ../glib/gmarkup.c:1814 msgid "" "Document ended unexpectedly after the equals sign following an attribute " "name; no attribute value" @@ -3943,78 +3959,82 @@ msgstr "" "Документът завършва неочаквано след знака за равенство следващ името на " "атрибута. Атрибутът няма стойност" -#: ../glib/gmarkup.c:1828 +#: ../glib/gmarkup.c:1821 msgid "Document ended unexpectedly while inside an attribute value" msgstr "Документът завършва неочаквано вътре в стойността на атрибут" -#: ../glib/gmarkup.c:1844 +#: ../glib/gmarkup.c:1837 #, c-format msgid "Document ended unexpectedly inside the close tag for element '%s'" msgstr "Документът завършва неочаквано в затварящия етикет на елемент „%s“" -#: ../glib/gmarkup.c:1850 +#: ../glib/gmarkup.c:1843 msgid "Document ended unexpectedly inside a comment or processing instruction" msgstr "Документът завършва неочаквано в коментар или инструкция за обработка" -#: ../glib/goption.c:858 +#: ../glib/goption.c:857 msgid "Usage:" msgstr "Употреба:" -#: ../glib/goption.c:858 +#: ../glib/goption.c:861 msgid "[OPTION...]" msgstr "[ОПЦИЯ…]" -#: ../glib/goption.c:974 +#: ../glib/goption.c:977 msgid "Help Options:" msgstr "Настройки на помощта:" -#: ../glib/goption.c:975 +#: ../glib/goption.c:978 msgid "Show help options" msgstr "Показване на настройките на помощта" -#: ../glib/goption.c:981 +#: ../glib/goption.c:984 msgid "Show all help options" msgstr "Показване на всички настройки на помощта" -#: ../glib/goption.c:1043 +#: ../glib/goption.c:1047 msgid "Application Options:" msgstr "Настройки на приложението:" -#: ../glib/goption.c:1107 ../glib/goption.c:1177 +#: ../glib/goption.c:1049 +msgid "Options:" +msgstr "Настройки:" + +#: ../glib/goption.c:1113 ../glib/goption.c:1183 #, c-format msgid "Cannot parse integer value '%s' for %s" msgstr "Не може да се анализира целочислената стойност „%s“ за %s" -#: ../glib/goption.c:1117 ../glib/goption.c:1185 +#: ../glib/goption.c:1123 ../glib/goption.c:1191 #, c-format msgid "Integer value '%s' for %s out of range" msgstr "" "Целочислената стойност „%s“ за %s е извън интервала на допустимите стойности" -#: ../glib/goption.c:1142 +#: ../glib/goption.c:1148 #, c-format msgid "Cannot parse double value '%s' for %s" msgstr "" "Не може да се анализира стойността с повишена точност double „%s“ за %s" -#: ../glib/goption.c:1150 +#: ../glib/goption.c:1156 #, c-format msgid "Double value '%s' for %s out of range" msgstr "" "Стойността с повишена точност — double „%s“ за %s е извън интервала на " "допустимите стойности" -#: ../glib/goption.c:1436 ../glib/goption.c:1515 +#: ../glib/goption.c:1442 ../glib/goption.c:1521 #, c-format msgid "Error parsing option %s" msgstr "Грешка при анализа на опцията: %s" -#: ../glib/goption.c:1546 ../glib/goption.c:1659 +#: ../glib/goption.c:1552 ../glib/goption.c:1665 #, c-format msgid "Missing argument for %s" msgstr "Липсва аргумент за %s" -#: ../glib/goption.c:2120 +#: ../glib/goption.c:2126 #, c-format msgid "Unknown option %s" msgstr "Непозната опция %s" @@ -4059,7 +4079,7 @@ msgstr "неправилно отместване" #: ../glib/gregex.c:304 msgid "short utf8" -msgstr "прекалено къс utf8" +msgstr "прекалено къс UTF-8" #: ../glib/gregex.c:306 msgid "recursion loop" @@ -4258,7 +4278,7 @@ msgstr "" #: ../glib/gregex.c:481 msgid "a numbered reference must not be zero" -msgstr "численият указател не трябва да е „0“" +msgstr "номерираният указател не трябва да е „0“" #: ../glib/gregex.c:484 msgid "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)" @@ -4319,70 +4339,70 @@ msgstr "" msgid "character value in \\u.... sequence is too large" msgstr "знаковата стойност в последователността „\\u…“ е прекалено голяма" -#: ../glib/gregex.c:746 ../glib/gregex.c:1915 +#: ../glib/gregex.c:746 ../glib/gregex.c:1973 #, c-format msgid "Error while matching regular expression %s: %s" msgstr "Грешка %2$s при напасването на регулярния израз — %1$s" -#: ../glib/gregex.c:1312 +#: ../glib/gregex.c:1317 msgid "PCRE library is compiled without UTF8 support" msgstr "Библиотеката PCRE е компилирана без поддръжка на UTF-8" -#: ../glib/gregex.c:1316 +#: ../glib/gregex.c:1321 msgid "PCRE library is compiled without UTF8 properties support" msgstr "Библиотеката PCRE е компилирана без поддръжка на настройки в UTF-8" -#: ../glib/gregex.c:1324 +#: ../glib/gregex.c:1329 msgid "PCRE library is compiled with incompatible options" msgstr "Библиотеката PCRE е компилирана с несъвместими опции" -#: ../glib/gregex.c:1383 -#, c-format -msgid "Error while compiling regular expression %s at char %d: %s" -msgstr "Грешка при компилирането на регулярния израз %s, знак %d: %s" - -#: ../glib/gregex.c:1425 +#: ../glib/gregex.c:1358 #, c-format msgid "Error while optimizing regular expression %s: %s" msgstr "Грешка при оптимизирането на регулярния израз %s: %s" -#: ../glib/gregex.c:2347 +#: ../glib/gregex.c:1438 +#, c-format +msgid "Error while compiling regular expression %s at char %d: %s" +msgstr "Грешка при компилирането на регулярния израз %s, знак %d: %s" + +#: ../glib/gregex.c:2409 msgid "hexadecimal digit or '}' expected" msgstr "очаква се шестнадесетично число или „}“" -#: ../glib/gregex.c:2363 +#: ../glib/gregex.c:2425 msgid "hexadecimal digit expected" msgstr "очаква се шестнадесетично число" -#: ../glib/gregex.c:2403 +#: ../glib/gregex.c:2465 msgid "missing '<' in symbolic reference" msgstr "в символния указател липсва „<“" -#: ../glib/gregex.c:2412 +#: ../glib/gregex.c:2474 msgid "unfinished symbolic reference" msgstr "незавършен символен указател" -#: ../glib/gregex.c:2419 +#: ../glib/gregex.c:2481 msgid "zero-length symbolic reference" msgstr "символен указател с нулева дължина" -#: ../glib/gregex.c:2430 +#: ../glib/gregex.c:2492 msgid "digit expected" msgstr "очаква се цифра" -#: ../glib/gregex.c:2448 +#: ../glib/gregex.c:2510 msgid "illegal symbolic reference" msgstr "неправилен символен указател" -#: ../glib/gregex.c:2510 +#: ../glib/gregex.c:2572 msgid "stray final '\\'" msgstr "в края има един знак „\\“ в повече" -#: ../glib/gregex.c:2514 +#: ../glib/gregex.c:2576 msgid "unknown escape sequence" msgstr "непозната екранираща последователност" -#: ../glib/gregex.c:2524 +#: ../glib/gregex.c:2586 #, c-format msgid "Error while parsing replacement text \"%s\" at char %lu: %s" msgstr "Грешка при анализа на текста за замяна „%s“, знак %lu: %s" @@ -4427,62 +4447,62 @@ msgstr "" msgid "Unexpected error in waitpid() (%s)" msgstr "Неочаквана грешка в waitpid() (%s)" -#: ../glib/gspawn.c:849 ../glib/gspawn-win32.c:1233 +#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233 #, c-format msgid "Child process exited with code %ld" msgstr "Дъщерният процес завърши с код %ld" -#: ../glib/gspawn.c:857 +#: ../glib/gspawn.c:852 #, c-format msgid "Child process killed by signal %ld" msgstr "Дъщерният процес бе убит от сигнал %ld" -#: ../glib/gspawn.c:864 +#: ../glib/gspawn.c:859 #, c-format msgid "Child process stopped by signal %ld" msgstr "Дъщерният процес бе спрян от сигнал %ld" -#: ../glib/gspawn.c:871 +#: ../glib/gspawn.c:866 #, c-format msgid "Child process exited abnormally" msgstr "Дъщерният процес завърши аварийно" -#: ../glib/gspawn.c:1276 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 +#: ../glib/gspawn.c:1271 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 #, c-format msgid "Failed to read from child pipe (%s)" msgstr "Неуспешно четене от дъщерен канал (%s)" -#: ../glib/gspawn.c:1346 +#: ../glib/gspawn.c:1341 #, c-format msgid "Failed to fork (%s)" msgstr "Неуспешно разклоняване (%s)" -#: ../glib/gspawn.c:1495 ../glib/gspawn-win32.c:370 +#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370 #, c-format msgid "Failed to change to directory '%s' (%s)" msgstr "Неуспешна смяна към папка „%s“ (%s)" -#: ../glib/gspawn.c:1505 +#: ../glib/gspawn.c:1500 #, c-format msgid "Failed to execute child process \"%s\" (%s)" msgstr "Неуспешно изпълнение на дъщерен процес „%s“ (%s)" -#: ../glib/gspawn.c:1515 +#: ../glib/gspawn.c:1510 #, c-format msgid "Failed to redirect output or input of child process (%s)" msgstr "Неуспешно пренасочване на изхода или входа на дъщерен процес (%s)" -#: ../glib/gspawn.c:1524 +#: ../glib/gspawn.c:1519 #, c-format msgid "Failed to fork child process (%s)" msgstr "Неуспешно разклоняване на дъщерен процес (%s)" -#: ../glib/gspawn.c:1532 +#: ../glib/gspawn.c:1527 #, c-format msgid "Unknown error executing child process \"%s\"" msgstr "Неизвестна грешка при изпълнение на дъщерен процес „%s“" -#: ../glib/gspawn.c:1556 +#: ../glib/gspawn.c:1551 #, c-format msgid "Failed to read enough data from child pid pipe (%s)" msgstr "" @@ -4538,92 +4558,92 @@ msgstr "" "Неочаквана грешка в g_io_channel_win32_poll() при четене на данни от дъщерен " "процес" -#: ../glib/gutf8.c:780 +#: ../glib/gutf8.c:795 msgid "Failed to allocate memory" msgstr "Неуспешно заделяне на памет" -#: ../glib/gutf8.c:912 +#: ../glib/gutf8.c:928 msgid "Character out of range for UTF-8" msgstr "Знак извън обхвата на UTF-8" -#: ../glib/gutf8.c:1012 ../glib/gutf8.c:1021 ../glib/gutf8.c:1151 -#: ../glib/gutf8.c:1160 ../glib/gutf8.c:1299 ../glib/gutf8.c:1396 +#: ../glib/gutf8.c:1029 ../glib/gutf8.c:1038 ../glib/gutf8.c:1168 +#: ../glib/gutf8.c:1177 ../glib/gutf8.c:1316 ../glib/gutf8.c:1413 msgid "Invalid sequence in conversion input" msgstr "Неправилна последователност на входа" -#: ../glib/gutf8.c:1310 ../glib/gutf8.c:1407 +#: ../glib/gutf8.c:1327 ../glib/gutf8.c:1424 msgid "Character out of range for UTF-16" msgstr "Знак извън обхвата на UTF-16" -#: ../glib/gutils.c:2116 ../glib/gutils.c:2143 ../glib/gutils.c:2249 +#: ../glib/gutils.c:2117 ../glib/gutils.c:2144 ../glib/gutils.c:2250 #, c-format msgid "%u byte" msgid_plural "%u bytes" msgstr[0] "%u B" msgstr[1] "%u B" -#: ../glib/gutils.c:2122 +#: ../glib/gutils.c:2123 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" -#: ../glib/gutils.c:2124 +#: ../glib/gutils.c:2125 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" -#: ../glib/gutils.c:2127 +#: ../glib/gutils.c:2128 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" -#: ../glib/gutils.c:2130 +#: ../glib/gutils.c:2131 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" -#: ../glib/gutils.c:2133 +#: ../glib/gutils.c:2134 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" -#: ../glib/gutils.c:2136 +#: ../glib/gutils.c:2137 #, c-format msgid "%.1f EiB" msgstr "%.1f EiB" -#: ../glib/gutils.c:2149 +#: ../glib/gutils.c:2150 #, c-format msgid "%.1f kB" msgstr "%.1f kb" -#: ../glib/gutils.c:2152 ../glib/gutils.c:2267 +#: ../glib/gutils.c:2153 ../glib/gutils.c:2268 #, c-format msgid "%.1f MB" msgstr "%.1f MB" -#: ../glib/gutils.c:2155 ../glib/gutils.c:2272 +#: ../glib/gutils.c:2156 ../glib/gutils.c:2273 #, c-format msgid "%.1f GB" msgstr "%.1f GB" -#: ../glib/gutils.c:2157 ../glib/gutils.c:2277 +#: ../glib/gutils.c:2158 ../glib/gutils.c:2278 #, c-format msgid "%.1f TB" msgstr "%.1f TB" -#: ../glib/gutils.c:2160 ../glib/gutils.c:2282 +#: ../glib/gutils.c:2161 ../glib/gutils.c:2283 #, c-format msgid "%.1f PB" msgstr "%.1f PB" -#: ../glib/gutils.c:2163 ../glib/gutils.c:2287 +#: ../glib/gutils.c:2164 ../glib/gutils.c:2288 #, c-format msgid "%.1f EB" msgstr "%.1f EB" #. Translators: the %s in "%s bytes" will always be replaced by a number. -#: ../glib/gutils.c:2200 +#: ../glib/gutils.c:2201 #, c-format msgid "%s byte" msgid_plural "%s bytes" @@ -4635,7 +4655,7 @@ msgstr[1] "%s байта" #. * compatibility. Users will not see this string unless a program is using this deprecated function. #. * Please translate as literally as possible. #. -#: ../glib/gutils.c:2262 +#: ../glib/gutils.c:2263 #, c-format msgid "%.1f KB" msgstr "%.1f KB" diff --git a/po/bn.gmo b/po/bn.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c16fbee4f24d5521a35be60b5a951bf4c69f6a1e GIT binary patch literal 72605 zcmeIb37A|}ng4&IxPju1pdbarrI7-xU#~B=F#^1Q0(HXZH9k-v3=#2CGeBbxnt?E{FHK6!^o_{^L z`QCHyS>FA;=iFP>-+9?~*F}6jH6x041$W&siq3czr~;q!JEG|2;Ck?R;8g*y3;6zk zn*(kM_)%~N>VGnnzXYB|`5(Yl;68gtQ5n1v+y(p@xI6f~&M2A%c7huB6p&j{1w0CT z2e=dX7EpxQ1!RtrpDVJ6n$rcC2$ZFJy(N} z65S2X2LBO6G*%G5dvkG5aB09{5E7zmLDBa~umpY=TnK9LTY#fL(fK`4^86im2)Of{ zDB@qVg8v{fx+IkE1$UZex z*FlZCzZ+CP>%bEDPEhvzA#f+~(NO+AsCNGi%5GkJu-oVH;HxOF1$P6l2G#z9 zAf^<3KHUE`DE@Z9Db!CVsCJ7%)h~n6{{6Fmr``sfEB|Dv6^xeK@~;CbNTl>Zuh z9r(AP{Nu-<=y)MUgDXd`2i4!HpyY5dDEqh-6d&6_wcq|wx1W7MOguUbd^vatD0*)I zMaRRS?ETlF{My4@|7U_~HxA-@(e2>d!N)+^|Je|$>lcHVT(kugz25`X|8pQp^mKxV zDmn$!cy9+~*PjK&$G?LbXO|kk}tp(NoDp37>415vz4e+(#k3iA=+=Wr}VsIWP zdtL~>5?leQ-g)8r72pdgzc1ijpy>rvzdr!Q*RKPdb=-j{Tu=AL3s`M8t^J`H}Eb{@#YJlrLUf`QR@v#vUpC15E0)GzP4<63Nx2Oz?zVntkZUj3h-vr9e zKLvJyPk^rnJL!bb7o7^Kd^xE2{$Wu5_^+V&`Y&)FaMsBlw@w4q?^;muc^@eGJq*ge zzYU81UxBiR?Up(HyMeNo!$8UJRImh&fvR^MsQ&H+Wyg<#lGArU)qet%{$6v6+tZPt z#(gs=dw37H0Q?pxK6g6R^>GX+xvT>TLD4l}349dn1b+&u{wtQd9*zRl?*J${Tmx#{ z+rbj}MeqplC*T}#7RD*RI1_vsSOaCx8$r>13#f5E126O4fQU9)0pg<39iZs_F{pMsoZy0=yfED$4obdX z1y%pw0{#yues)^r*XMyMp8)OxR>0SQ7lrFLgR++gL-}7o(e-Oke7xjbx3k?r`NL75 z=;{Y0$BV$3;N775{YOxC`EyYHzO3x^_XkDy5>RsJ1{F`<0qzby0KNhI8n_4e!fwYo z;9-=PfwH%&LDl;ND0}`bsP@nA@&0ClCCVp((q9b}T^EA;fj5F0_bZ_I_!TJo+`iZO zn+J;j(?R*~DEMOVW>9v24=8zm7ZhE;1LeO5R$LCiVG9q7r_sMkArVr6GeXyo;?ueg+Z6+Y2Za%zZ^UleEtwI z2dsh*f!_ho0B@)nGr=3d#o!-7Qj6&Lzakcc z?*hL!gV=)bB#)OfxY~7t>i=F4(MKJ0ekS-%a3%N?a0PhmB~gTEqMJeSzvExi7yVrV z{(|yH--fM%6EG{eo_ZOv0{jE`dGITjGiQU>Ug7nI-yTK(L3!6JnFHwO`R|CL`zRlM z6}b!eYY^2(@3}gPJ_F7`37-W&3tkIe@lIko?RI-t6dgqQ@prpFypo$oQ$8F#3)~1E z27Wu>tKZ}C@k~(lt_G#QuYo<_E+}s)cp*3jJ_^EGbma9em(PQe%kDS${Pk*uL9?Tp9hZse-9o2F1XR@8U|Iq7n}?J8+ai2%A0(>yaXJkd=bo)3PTsk9)ZUZ&` z&$l=|C*RAQOZg+JU+qoCyT2TOjUPt+-AfYDO_-UViUP7=z#nCqc zUi!DpZItH|d=O3aICu_t?dM!SzXZD}pY?g4S3UubQ=an$pQr8sWpA(hqRVFtyovIU zz+1tMUvhie>&vdsOTc5e{s-`K@W@BqKfVNBLiq_0kwq7N#oNE(@7zwm30}taxqnX# z1|I^?1y?=h^n41ulJbFH_59;A;B3l20at@N{X-PJ5xfZeHTW&?McDgeUt?_sKK_ra zdBK1FXZNF_|KtAqUT}!|kAXLUhyRO@_jT|T%1gfCdbkCAGv%4z^f+)6IEV6X-*P`% z0-i_tL*N>4*Kd3K%fS;Ue-o5lbv*9&cr7TpU-%tgua1NA%g=xZfO~$|=kGJY3n||P z9uIbIa~uX2QGOU)0sb#|D!Af%9xo21gFd;ED5_&1av0&fJz{?+xlN>4le%ID3E;4tMMg3|jL7}4(FU7*JK64(Lm z`hQu=gGYfogWm-upWlJ|fQS5s7zg%)L*R3M>+y9ATu1pAU>~^pzueCs19zbO(%*TU z-VIc}Uhp{Z+u+^c>z?qu`Z4fjl)nqU5d0PR0`PwWzTo#>@8#fgxxQB@zaCV*1p$u< zcoL|7&IDf!R>JjhQ1){Xcop~5MNpz7Tou73hNi}GXO zdEl(=W<(3Y_kdmC*Fo{I-E(GGK6)VdX3AT@nc(ivoni6s_<&ylmvMdB^JbV`-v+AR zna`hLdD6Au>nZ;Tl)b#{1vAXP*Msk-y#4kwEKhwucq!#$cbH-E>+ir1Qm(wv<@GXx zp!Bv8JRW@Mjx#JzJR5uuQ_VR_6I;3(yX!5hG?mw5l51I6!>m(GaZ3SJG0 zza3uY{apy2OZj`C`aA07-u`^Bm-0(qF(djqI1auAT=L2p(aqo&z@x#Qom?K1pxXZq z+!LJhsu`A_o&v6<{7&$V;Lk#N@y>pI0$jrNXYVq@;?^?oV#<$zJ>ZeA_Hpk3FQmNt zYi3|!ZrfWp*`M<{9Qtgt|9zhRW;hodNImJ|LU00<-)gSAmNMi<=W!?&T*>i$j%RUP z$DxmSR6LNaB3jEy4hJuzyf+wsI>X6*nQOWv8`I}`4)#ByjrPyf8wuxgLEJMs89Y04 zAJ)xxO5n#iE((2p8vG#T1sr1>Z|8_V|H;XTp)i~4w{ec@qYa_XuHoKd@J^1~IgaGs zYdPfaw}Gf2I*em0<;|e+@F}y`106aSI0~8xc;D&xa|0hSE}wpK-j1Lq4X@V(#gK+a#Y?CTGZi>t}Mjh2slc z$K0ZaIP}>SJdR_8^KOpqIljU15{~$@Hz#*f=M-=kjyaq^%<+%9&T$yW;~epa>BRi~ z0_wz{Cpfv0<0D*K&v7m1FAX>48}q~YB9L&M`)Kac=d&DlX8P1MT+r5#?+n*p#kEVq z`9rF}XGe$V&0Ie^+|#9ZaQ-2VeK(t+p-@K%l^Ie(1f zyBy0YU&HZb&W`~#x17X5*tgH=4wl30$F;$5U6&Qd&*0d^v5e~#@Lk|_91n25SE#Fb z;T{gnOGj|+_Hg|W%JVpXAE?->c|)I>T>B?KjaG-cp=hA^*b}ZRrrl~+@olbMAI{&z z`F)(90%{&0Y(*Dw?8c$b3E;=T`>o{vUCA}g$$!VOkn?{4-^B5H&MyEvL4AJ6v5Mmy z%1j^jS3cf7VUl8j25}e@LN5GT7bHIP)xP+q|>T(+WEyoR%U&QeX&c}6; zPZ#BbINr*B&gpYF?&5d_$4aiP;fOysa{eI-&j*)q?9Tbm!_9vNpQG#G z0UV#={5WtQj#-@RGaOLo=W>2WC|^VQ7LJ`c&f?nF!27|C;OjU}<@gncJ{?>?p5t=P z_u_Z~=ks)f&(}E)ru-jP^1a4`Ie&!XT#oN?e1aqUnMGkMZF<4~lfA+D2RY8<_yG5R z9qv60zLD}C95-=(TDX1}<+C{dPAIPhSA=uHTRHCFI7)57f8%%?hdx(x3~^nb=Q{ZR zrJ2>CwdH|oZ>ciWQ|qk`_0Nhr=FICWEjr5axPT`HTpDm$z!l(VsjoUv8CySG(Yaw~ z$7pA%I$9d4jg`tJAE9S;d8FJkRv9Vv)dmJ?>lloCoriXok~@c#s$-?W@_K96UFok5 zmC8e<%0OkXGBj2iDi2noc6%OMT}k^LWte?C4=GvWr?LNm+Gr(5o{exwNrRWgW2HAG zLh|T5yt9x4u~uq&X93;zbe5u-N1R%!jg)2{@y30+&grf8SI0(6gX5!PrS3|QDdTmo zFU^W(mDW|qR@cVIO10t2kR&}bT3G6?)z%D_N7hhzq;%S;i;Y?c9jTOi*Ow~iS4YQ2 zqlMk0W71P;e5iVUskb&*Mhm00o;4Lz+1oo(86B;-Vn@e^hifBaj9D9kW!M{CKRQ+! zj28Cxaxt{wa*yQH8!a5Hjibg|Uum#1SQ}Yi8mYW_ygEYFv07<(q}D^%Cc1Sa)v=1i zHBcVu$6m%(V+G~4!m=!RUf$;V7e5{bCR7 z*9i$FqNB<^ zYsQDo8%oKjeUJ_FN0)~>$4Wi5;q|3ncdtcOtxLYrGIz|_86f`MkBsjg6y_L~5W3|9>(syqSzaA;CL%-$T z64ukds#;rxlMfA523G0fs)6cIWfgXYWd?%UXf#$^RY46d$-e4PZz)50xXd8En1~!u zsvf9fT?lzp)}f147))YazD-=M1AFc(9k*x@TN|8C-AeD`wtGJoqiDbOiq%BG!rlil zl+=QX4N4&(trM8W1jiA}+RDKCI;%`7SWp_NVgET3?Wqj7A6AE|V_0JKEd}nSPUJZV z1i9itgu`y!!+i{YXSS(~5>n)2apmFi2=TPHHZCuBA2SzJxN_@KmtLznG*(e;Xj)C3 z4_8J8tD{o>sAAOU`aukDjro9j8XFlOB63tp$1Syhw0LNEd~Ep`7CIOm?dDoyz8b6! zQE60`T-NAfIt}Zp8Rj*Mw|$uYP`?5)F?PkVUGol{s>Z>Y3L}-i$_R6@f>GC;*E5Uu z)42uAl|ejUpf+?!X|Tq`F;HD216W@hSMH^Fcc;|lt)W@Q#vF%x`yxf zSQJKz#QJ{CBf31s^r8-ZZb+HcWTgACSN4t61~U}JrXxbkMwl(cYZBjSJ3iq2YbG`| zcMOa(JxZ0dvf!k|rLdtq`(s80;|E^D&E# zU3}7_QvXPeNrM3;3MTa0h~gKTs0~$0-568P>gbqkphd5mOKc+OTVGmqex--mpfb=K z9aHNWw^Ru&q0RB3%K6L|SPD8W_bK&K3}n_V4=`C*`$bBUilO>sf|KhXfg8E8*!(5S!z!n7_8a~p>7P?NRB7ztv(gqKw=y_P2*TikA7TBqA*>!T;qR6x9@AuADP_ZU zv?we#%;VLwC$F$cK$-(IxVdaFGecC{>zc0eyIV(d{Ic%G~T7S0*eT!*rLq z*Iya4ZpDVLukiZ5TBgQ8nKWj#I>_Y1nfrs~HM&Xm(_Le!#H2s8CVRWKwm?iwQ%cfH z9i9h(3H#}-OfPZlOxQDbD5zjlu3V+bz0750dLpf6%eqw5n!00>>xW71DPO2leePbJ zn#qSNRTD&Sd90ivBE2z4%2Mvn+R_MVW0CNZ>#V#=!5-?Qo~zP8XXus;3-vd$fiK1U z=O_)=S%b4MFSEdG=yE!HMr{8O*-S%SyNndkPWTAcxxa86YVfm2eUeiYZHko zBL(AS)({1E!;+%a9f>C03kwZG&=}R;MS&{GtrMrOxA5FO7EwJT)nQ_1h6MI+MlBxH zX(g<83dZwng1l|Gik34yGU0b1Zf&79?@cn+}%8JOmZC%+Ti5 z<Pt?D|-GIff}%@}3elFrID6Hj+jlZ?6-CHkiVlGz@6Pp^K(3 znG{ACFCo}qGl#7Z1^ZWx56PKl&SF)IZn-33#Hmj?**Z{~AGQ&E@g6E^ka=d|Beenc z!Yr!HF7>l~>FCYWQU2f8>zRk&+&((iMifhELd#6f@*%f0vtx8tww`5R2~!J7eKy19 zsn2w)X^e4Yw25Ce+#as7&J%x1^%0@=-{8s;Htc|?7w_lQQBz^DqOG=kC9S~f=`OC> zq`TFX0sPb#mgT|5u7U z+f3qv<*V5(-)v>$J*!Kj zY)oSztIKR%b(7|@VzkZdWHpmn=coH2Gxy$Wzxn$g;>)b_*;N>*%wo?0wXZG@`+6nx zqUC+f_l`4a)#P8&eB>+ooHE<2R&N#7Wo4)~-oLuBXYzLQk~%xFHeoZv{6wDAv`(Vy zI*nN`TB7BWx*~^Vd)>C1waQ_4OG~7xwz*`XITNqQV zdvM>5-hDgPXD%&Vnkg)!u-u*s9nH=a6WLOq$MU;y+I8hAOK)x6XmmU=I(1v6`S|Wv=Nmh1rLDcZ&T~4W#XOdjt21Q`jt`7gwSC9h_|4=@@a01B$*HVAZoWQZN$in3?(%f;at>T%0Sh*$6&G=Pz2ku``u|X;6LN?Kl^Cx90p+p7>#R>5RNxfu~+*g<=yr9%8ma%W7s#;DftAnK_ z_108)z+7Le)_op3rL#>J$%75{yW-Am&zjVtp`jK*B!^fe8`g2{tc5lehVMYkMnq(z z>2s7mPw{$r!Z_y3{G?a&x8^hkm19_}8+{{qtvzW}f~*C6Mp$Xx%Fx>CNNq@tlCR-U zOTrVDejXJKCH$=;N0N0Vsi(C(5y4tOPuw{?5lEg>h!9q9ntVv1D^X*MYWzNeKTAji zX`azoUAnXg0@JR4D|w=!$c^1ekgK(J@t8|4kHuF;Fhq97=M>P8beeW!FEKnF9X&OA zv~lY_WY}bWQMj}aQ^1V`?J{z9LiKV9HoLsD;c|6^1&AI*%=S%G+rTgAYmmntRgEng#+_Eh)LT1LeMwV9!LAmy9JUNc%!=^L|0>FkjClgJQx)R`qw z-Q#^caf_C)_+x+Db|CBK@TKJe(tn=6(nhn4=a5?4X?E8`+$gO=+R#le*!Ng%O@+rf zGdp@`X|RUp$?dnPfAX8Qj318qsOE$IBs0$T!i*^Mu&hk)Pee=gNEEdtK|%{TLc>x$ zOYW|Wty4~J&*SQ!shw0o3ig1?r`?lkC41jM@BH`!E|Ze&lNY{h644^FNvUlSHVh5Qsc%-`47RCcSvQS{@mXz$Fp7Y$aC2wV{t@1#Zjl|lBj~|m}a+CCXc+`Th#TANR zIQ)_YMB1k^O?wMPM4AN>dR3EEr$lJGH9=eov9>1h4BRS(EA}MBMBtN8{4Pyn9Sy^b zrbplG{zNDDW}gR({>;-J-r_o}Gk%(tdxq#b!W-g8AIAAqogJQeB}~f>%^3FJQcp>` z;;!`UsNL=map%5GdiAiO-si`DV7%&N+vuvMw+;I=sQK~ z37LE>7Jp+gOhD3~`Htx@I@O*pSg3H{?(5~6WsO|4B(l4L0+p*M3iJHa-iy#oqIJG6 zpBq}Nuf@Ir=IhpNr8mB=7FP%f0SPvcaU7whl1&Fx$nJ z782~znf8hDl|mGn9dER$*SGt~g7Iz>^>!iYn}``;(Snn8_Z$ zhb9FIpOP$p=$TWRxk8Wh)lT;`(5!4X*>@gFohvipxJ6U-WVe17jelyR_OUrokOjN-<7jY!@JD{0?&y zLO>>7*yac!B3S{Xdoy}nBJSY}hJ8rsF4QlMJ@%m^Q%`C69 zVKQ~~T!iNm_PjpbF-w_pvcyM_P`qJPpUH@vIQ6p_c3SdwTd7hWk%tfUcGdd2f-Pom z+jDN_`P_@h_V)LxVX_JAO>05v%NKWgcYvHA`ydOJ63UDZRLitIfHd1_?z`(neXJ{2 z$A+uDbYf2dGF9RPmyztnx_YkT`?KveD&0-?=Cah2)CSh1F<0O5gFKEP7$@Ru+WNH=${Y^z)#ZDRo%eEPXu#?Y~Bw0OI z)H6HVyg>6c+$eX}Ma~5^bPT9-5>6+o;|*P$QG{^?JK);@W3mDbkQUA@GPIdbwB| zGUqviZM^=_xlJwU7DV*Mlb5YneDXzV) zkF_vo5o_zfl|4mmiE|!M{dH0_%C}IE4ev5?ZgUbevk=OxrsA7?dEzaVky;=-DtC8} zRMzs<4H^>I*zZ#F?G_G?G`n?drMua!6UswPZ;cN$ztyzW(sENWmX_D&I%F4RO|QPn zB=V0PsW!j4l=XF%?Oe;{<*^nw$6K^qv3k6D%N665<~Ps4QxlaZF(oWRXC5(AH`A}z z*n0?d^Qq=<|8|YN^q)M%#bdNO3`R?d^^OvX)OlsxJT-kVAk|)POj9y#67l-9VmN=yE00Pk&*FXnYKS} z;6nU{iRMYq1F~;2=I`qj6lU_`3In!-X>q{6dxSW`6FPt5-RBPg{2_TfmqoqoYw0@| z^$Yuo9*4BPtDR!2wn|IhRq1olW_@a|jRP19^J=+i|F$R7;%;p?3Xe%xwn%hgtE+FE zg=Ri%R0pE^t3-^EaVEls8^nv^>*E6jmB)uF4LuMbcwN7KK*a{TmUC@_0s*4n1_7b? z2Ekx_q{%JzHVZo=42+C6xy3W9;yXluA-}h}a(=m&Z=4Nc@U$v<=A=9%`Erjf9-^X2F`4|T=i}KtsO)E% zg}ex5+J0KOOcbviPGU;tUi`RV#3xDL=u?EXuPx!h`g$y66bLY`L2R>cb|_=w5nj?V zB=nXs%qqNkj%5<{9LD{|?V()+jCY4j!6=Q=uj}OZ1NXFmu;*0wB@wS$7du+CRPqzP`fp3{7}7Z3KZRuus@CO$9J>^(3DfXp0b*RtTt{lUO`JHK6^{kc3y^Aq(#9T zG~sktwRkLDa3RTYnRoj6g3m~}Z?B^$zvFQNNpVB1TF)3h7pAmPrY5cb!nbHw&Ohj& zD7?=QVy2#tF+t%K@!Owzy6fMW;2G)KDjW=~XO6A##gtwq-tY}Ib}chT!6feAlJ#%D zg&`6O>#dB3A^Q3uX+nNF57(KJ*!kdFb~Zoabi=S2zCpzo)}n+6ZCmO4x3<+L<)k!G zso^EobSmdXQpBR!s9ef@5i4Y}AyJ4}O_Id1^hTuYSw(68?y_-ypv-&bVEO#&;P_yP z*C`T)c^Naj^V_%st38X@t&-eS? zN*Mv^X&ZtT5u1cnox9h0!{?V=#ymPX8Y;1VJzWa8M_rFD326Os{YJ-(IwUPdPak0wC zDsIf_>8~Dv)_VCy-(mec``MeNH3avL9=3Si!6)srWZvA9_Et#YE#@I==;3;KVEbh! zujo2j0SVXdI)=EkptRrIdGosFzM*UG{-yoqFF4>pPUg;~V%Mp}9)*as-rTOa^SkCA zRGK?)!Tf{wnR_7hmhc_5t`!8GQFh7oKGxz<-p(tXP}Vmn53QabM+2TnYs|UOsGmtgq|fw4P`tly)s56Vl$(g3`g=)v@i* z>^jb5Wz3v-RJofiws~{r&6~6T_R9wNO8-FDvE&u(I}Qz7arChLco=D?hs_)+?QvLX z-mF9DWm%03d#o$wHeocqb+o3_5x%5!)WVaFTe9$&Maz#*Z~9Z0qn-2xC8s?q&D=Ke zwrvw1+%|dnwu#Bowux)DP29O{;<{~AFNkcLxXf-`wQb^|Z4-~E zk^bl6CjV)XZ4)L3BYE=zI9x|z#hIr89R_B&jUo`_y_{WY6jO`)TPP#S&;`SruqQ7I4Iolq-0B(8jq*Jx^Xux2bhFOJRfphTLwbbtTQ<`%l5$ey?L+)P(K?1gmXh zsH{HoJa%@>^Iq|V0{s_Btx+r{b9lcPotcqOm~QWY*j%@iF_#C@-;ObTqD2hO4NB^z zR;qu=Jyt9?r>vX(ff*ZpvkB~x@KZD9!5g@U9oKf4|vFWKxj}Z{UMRepk~^tOdO$8QS-ch|HL8c+0& zUfudOmGm_xdb!OE$$KSwNeK)}B?_A;+-elKNtj6OK4W{IDF$HtS-HAYn^ZkM)%plZA1|{Q9RtpBD@LiJL!Ez@}}UWRB_@x^te(U zOq7IwxiVcgF24{AEXYpWxq$AFJ~jE@#V*yLNO5c9FfQZJ#qGZTnmQ_c<_wH3Oj4q* zPVXULdmM*CdjFX9j?AfjpSchNqh=St9TvqTZ)btph=Qx8SF>kWfUs+~O>W|ZiZ&6c zAnK#Mn0y$RU|`1Jf85L+ro|Zg2`1Q0f)2xPaCbx>F3$THIMsI(xz$-L1Y{yqrhnME zj`1++yXiK~8z?aJ<)($L6x{x~q!5r$7aT5%(j|(?Ol)w)z%lVi2J|62)pma4_{TF6YGafd*;r{FZbhL_|G-zPld(4;*k|km72C7YqP7#O$B}VZ-Py; zn|5@=kW+;$_e>nlomz7p!N9zDLK6)MEn3B;uZ(?nqX=~mi{rRh^ayb~O_K0{Rb}TE zNReYvBb`kxfY(bXe$Bk)=pDUu^rs~tytDqyk#Q_GuF^h_eZQ2Smq6(y^buYatcq+=Zc4H$12+j8i&BS8ecYT~BVZ2(~rqU_DMJAqr+vdtXzhx03Awh`zyWL;*6* z-V!^3wRFkQEX`_rSfopS?Gn4)1eja+J_Qo2Gnjz|PtrW&N0xG+#5}nzL*SCEKPF`| z7(aP^Y){QtZTvAqnj|T;IW9(`S$@-$ec6l#oxTW=c|j+Qk-2ufC?{$%-<(hcxXDe` zD8|$nDBVkQgQTuou{e$DI<=%@tG+V8Zzrbqa4AMB(P(VByASW4qXL&&^mOp_I*Na% zs-CoXSdC^5WL)dqqaky4APhC;mRlM9Dj%3I-G=2|PM~-OiVyCFG}GW=TN!2*4UER4 zHl>S>oHpp%iY&Z;>`?Kke&41*r}cWHRZ5O_EvxnMC{NziNvvPqX|7v!!4Wvt8lPo0sO!zW8*>C>OtRG5>^{xWeW88b|<5SQBm zSFA?WQ*avM3w4uu3rceVAu@U~bSPEqqDkTr!Ir!^Zme0FLc)emc<{4TikDDbA-5-T z$y#a>>~Zl%rCWmj=a3u>Pc6856UiIspOaQx($mbGJ!J))v*o{7LKCBbTr9>X*)2(! z@x<0Wf@Q)pYa-h=-x1G_Q;6T)%4a}=mDXy1QJi4xT3?vRZ+7ps`9m?C7>}oKaA%xC zJ-H++sK+0j-CYBl$bv(TR7?+)K#-?# z*bRv~rljWpIbJdo6EnfY1MvE1ngwV3uTDcy&g-0P*L;{i%}N_`$*FvUj*2Wlo=$Uq zPbjbzb{xA3atVl_$HdhNvVf?C=zOggrs<~oDp>TffJ-AT1hAw?AK-D*H48KMF@fvV zAV_CnOQ5DEEp7iq5rc}@f)-23uXneg_a5tlOh{QZ!xDcypHrHFw9w&yXafnsvFvl3fn+pAl-l4n!wBSeo9wFo_g`wyI3~vLdiDLXJJMuZdTVHIw(!7I zzv$lBkWuI^q?(*z3Q&)7q1K(9m5wrV?&ZP|NGs0*7ux9+&W4(|{Q;y?fF}o?wjvzrNb||H4jAy?pZe%k4G#-i1^f*`q|5 zwAf~XGTC5wk{Gt>0+^&Ca?WiPkq9F{A~14p*f4f=d-%AIfx-jrTZ8#X#%@{~#xodS#5Tp=XchG}Hb}N;ideT0;RgO=|_YX|@h;MNP9+qdYUQR*Qc5 zRcq3tr=bu15|lZQ2O}h(dEF$F3&`tzr3Y!s6VS%xrhOG!)9GW}W~z5@MAnQaBWvia zzPB*fnuXF}YcM4G(M)g7>V~2{iny_Q4^O7Tu8>uP0gMh}Vbiy1JS%{cFwm&OSPD)0b3?iw5%Z&y zbV>H$QnyD&9ldBMh_SJQ$XcX5xaAO4at~7)+u~3W#L%)N#hHKJXJ=Q@9t zq;55NJqfREuW|f~bVeUG<&(FI2qKjMaupG}SSO7d%&j5EZ6bf4&1oQY$A&5`WG8M0 zWiCjJn9*>hO*RuSb7?An>SUzdr#@n25FwT1`c^@hoG90?mrP@m?aQNyhTZ%RGN-gaZY<5poc9pAGUep6$N*0~VZ#81+uN$mB|#sB7RMSV5VUZ$^D z48C>fmT!;fVbP3vI?3mh!@+Cf%7_pvk?+ctXWDKV*Rat|E?<3pDJPlw?tP^M&Gf+X znwFTMVh9ac-zPCD4l$}{8C}Qd?1D7dqX;9)tZhngEvIk)wGOgRiV%DUQbjSIiA!m) z#93k3GkuS$t*7j#I6QhrJXn&xNS08544H}Bl|U?L3o)_J5IvD26D-;e%4wKG^cO!+ ziM>t2*si(o{Y?bYGXJi(iiQP)>(wI^E1*_NR2nUfFlJlzZDK%czJo_x@aU~Yaq467 zf(6E41ac(>Q?@4?CUja@SeeB56+Cl)(<+nex`%r5lKVqesUeyB+B`+4<_GTN>3irI zJ%#xUlJE>Txg**(IZ0oT5wvB<&Qr}1BZ+{itOxMsEdom$k?kr5*zinBu<&4IVxW9Fy z9oj_5?)kz0x#1S7r6h&;O=mTa&n-}JFSDG{rQ8m&yDV4rP8~XGlUx_6ZIMq!Z~Us6 zv*wXM_;$UJr_-xhS7P1Rv8Et+$jwB}20(O{7GmDE@Qh_F$4NGT>0GO_w&}LNk!AtO zMRI4H_c913dw=>nw5B^fa*oGMqs^4*c*HMRtZA3eHq1#sWYlJV4IX5%K|)8)7>-A# zuv)gDQ~%Dr^P7g#CU$_cDNEvaJ*VMoo(*_FOJ5LeIzsqcaZLs=2gECwhh$^W(cFoG zSnBt=>TNIcx8a%$+8|$sox0a1p=aub$zQ!|P0rLE@#}T^<9SWH>6-I;`yGLn=|R1? zG=DJP$agqnI>0rF)!{jIF7t2&`Mlxb*Uvq)rvZ~mKerW{na<23$)I4C=}|_+poEC@ znLYZ)oABd1+I(8?e{)ZNXU{r!^V}jK+2#cyC^ufhD(MGC8>kS)8Z^8W`o1WRN7!cb zDS{DmJB)R^5t%K{da3`Z`)?ZI`59lR&do+S7HsBErIH4c_IYbMcI$ClNXvUHa@#uE zTl8URaOeV?K-X?5Xa^5Dm*O!q)y5n50%#dNXF$pAroaLo=DfUTbW(`0;f^S$zOkL!dj7p z+v_;|oye!X-}o;|HtE>@uw-s&W@gwjET&@P$ISV?F@C(NHX^G@w3CbdST)|}%fK|4 zn7K;DO8jsHH0dhG128%kT@!`lP&>Djz;wcrDN{Xei|a7XBe}lnZ9XaI=PdoLOB*Xh zLIw@nn_P8Ylb34#GSSL@?kR83|n!bR*(9#n`f1p--1!J$;9eJAs+<6TSyRiJNMAKJ7?}H zibe#UE%>j%Sk_qlH#&_83lf2A*#*+0x$i%^MkY6D8lR9hU>brvVH>sv2}#1@a`7h@Ise!Z| zY}nT5)DL#^wwQD3(M4h{C;`GPHIg@KzMoW27V~1lyqEkRo3(i4-DIb)u!%P-5@$i! zPi08|MN6nkyzfsrTI*p-{#S9IHs0D8?ZEvt+Fx+6y4CDQtGL9_WPT0SXhwc>njdX(=e*wd32rnFkPpKOA@VfHH)ba+)dRucuZKJFj1uM ztxYvZXwzhtbS?^LgCl~$hOQ(bY;zoBQqWs0EWRZx4SAU1TeY@mAS#5#K4ltHmf|#P zNc|IAqf~L4>T?^8#lp_ZE7g%cEE?>MN<>JY(F*_mY!dSM_ zSAKE{*6&Fy!r?9>J!t=jMQCoBGo2xu4Tj)i`HR7L;*5Wp+Y=SEMSC+JnRy~Rkr$?T zVw5`ys@uBFQYfFc(Nj)bEf^0zTo7OCtUy~J6fDGkoaSIN4WfXwofrsVP;SX3!og)v$_BDt9|CC3SsR`z$Wv10n9lJ5 zHB`l%Ur@$*H_N0=%rtV^ZGmV^IPIIF_AS@?GzW+$D~9$dkKn}oM`U3l_b|C}x(*&U zhfX~GxGh&kHc%l*qC9}y4 zgN=f0I?2YP=C&0)F1w)?P1#r(Hw$)M64OX?FSJT^EYjDL%xgH4GLW3nBWGWJ%fZa7 z#38k4NJW~^V{ig@L2f`hHzui-1{BgBoAHi|e<2X(!A{jxZVL!$(UvKcele)n@Pd^! zYzNUi$5O#`6QwW36gWmo23*wVKLzvm)bugE<9F0EdFg*KiKn8M%se);qjy$JT01{h zXkz}e6BrZjPVVZ|R!##uc1h7MDBZ2l9N-3ff!U%%b}19`QBQyozEV4S#!yfqJ>gRd zs5Y3{rdft1fSUD#T;2AXKRQuvA$_7@d!lRt%!`O%&!GIG3xCIzuBiY*^{-Q-1V zYVz)0NqE#Gm?b->%X}@HFk|nM^`xCz#Fsd>q$v-C7!MQIQq{dQ6gCfzROYz4o^ zPO=4u4CC^2*LEBB@!cyW^<)?CGW+%4)PW{Vhf3Xi_2r##)q`R%0GELRc=3A8V;tl7 zTWA{hJ_|Ql5#gAO5ke8-Z@L171(eU2{_sEaMne~i$2R9vJLw7SX%sV)j<;@|wJ1zf zP686s=FBulN-V)iXFQkEBQ{ghU$I8oB=E`p;68GNjP%U~B(Hab1KW+g789B9hD=Z& zQ%l}#VsFGin!bq15Z&y*|)&9a_0^EDy6eL1D^oMT({d~1n&zUnqP*bnmOj26m$ z*CUl!W~)Y4(v{3|h}L5lc8oZJ!s#JrIEa9o=I$C@FYz^xKlUv)ryN5@ao)8YHa1Q5 zrgHrpn>xj0TV9)Ct8T`<%^W1ATSQ|n&Z!2*J92>zi@BUj+$pvlZsa0BYm2m52gYH- z-A6W)Yme(It44wTUPYSc)K5HVU?RpMRV3#tb+K`)afx0SCXGBfshWbtzZ;7O7zK`O z;PMEgz7+wP85xx(7#`xVwz}7#v1#|6EW@!Lw~(+a5l;spj61F2kpi?zT(b#5^L=@L zO`QI@u$BIRN_AU*F~a6<6;j(UPq*gWZ$6QA9{x;7 z<1dSQ^t##OW~p=EB5`CYn9-*(&Vx>oO`5AAcWf|mQza@gK{H0Qp2{`&X`6W+-r<5S2vZyX~udk~Q?flz8$Y*zoaz-sFGbk@p!rtS4p^Xj=|npD-# z?-pYf>zW&W#%a_~E*^yDGY`}IqlG~v(=(Hh#N~P|>Lw$dVsA!%tl%DWa*OSym3$*J zCl^8T8UhogLd0eZ8PcWVZ+%Tq6+AadzowJqM2Y6xT{|&ML(*w)RdK_|a#yfPiP)t4 zPd>qInHnG?j+PyL>LSiP^T7JtI6V>2{IA_Q->jRQVnXn^n217(){o!$Ps&mtNV*Rq zb#%j6t;EnST~G6r7BTL40}R8B$Jgjpa?91dyE?= z1#!NrDzv2*OH=uc*^m}W^+Am?{L+PoI!xzYModCN>bRa4<=oKic+&bV@@Q)Og^ zOx)rnVlE|O;3^gbPsk%gc+`VsTo=WYRMSBi&R1I+gdRO;csB0hmEPJJYO3#q8|U|z z>i_x^?uptrxP7GYKleI320@rXB#7%iXAA$344hAoJ}z67bXh5-g$jw4Y(@UGX`;NO z69#eq6?7YnLGK&+z!2;D*zDHCRdd7eQz3y^_=|-vmB0u8W2;WBq@FU3Z*bE)MV&sY zgw3;NqnQlsz0Ao?rapyvxW-x%#_0&kDVHE7LpdzOds+|K_jLA~uiKK$mm#b(b zC*-z8OIrk<>Mfs|8aa}MSub(VW=cs%^MWR`Z4)=zJ(XJucvI|8OoYLb?uoS{V`z`B zWRhW8V{Al-SY(xHUvh1mWC>A7E);IF`iP0KUHsfon29noR~wzeBf6Q4nJM1A2)m80 z5p2#?8K)Q`A;cY~O6X_5`?AuR_JI>@AOwrp(RjlonQUbb+@=f7@&qhY!%a?-eMm^W z)wq>TsB7B;wpiY5WFr*CC`9R5b?9;v{W*7ZDXE$GwpbIJ@d8)e-JoG52OL>V=*|5- zBoI_LwnCuT9Ch?`CEIFEjUStZ6Z)f9_E|($qV6=O;A(C$K-rVbbVtv;UMyHV-)!IE z@@{shQMpl9Q1%1$!ODXl_oOkie zTi-5w@{|>h>W*Ocf@0_&%F#PcE;Y4EJh_MDi+>2#$b5KK!A34DW~|tTL;aWQs$@ft zurCSWjvkeeBjPK10VlB=sI{5R{KQR5)aS&P(83MVjtr6!-SX5Zse$pypi6u9@yE{g zq<&0@j9fvrU|=(8?@_<9^$0IcRz~?!;p^!N6eS8W2-&ECnq1XB@skb zXG0C>dMf_m4%sTAARhv>519Ej0e6}RD6Wiwz$(;*KMoUk18Ve$j<24DQ&IQjOC)CO0L)z(yoM#FcT)y$=U za1=ZxyI7x!Lq-+0njuM)PM;(iS^rOJIMk2FBOX01^|*u)z$0ONLlLL3;*kxExxv)C zCf#ka*eManJ`%gi+cP&)^TSy#S531dckU+HKzNOyz=53L+f2^R2K~Dhtz(n*GzS_R zDUYtM4)vEp(w+%z=Hb&L+D!t_Ht&nWWpj$98>~jQgH%oE`d{{&n4-6aE)P+%tVyrJ z88Y^UT+*0aYAM_(HrqcFjUwnt(D)>jAI6as+$t1ViDED+|Dn*nWgw;OmnP!;T>kAA ztyOoTpxjjAl)I}jHE2daxe(<}g168KO6Q7}H7#>f$Y?5vx5qttb_I(e9cX22rir|S zrm_|!s01w*Di0lv7n`>bs2QtGSTJV%sBZ9VhJ#=C2~Cs1vvV#6;Vv0Tkq%nY6FP93 z+)tbapM-r&@(xSP>57>c@AZozn>T`6{oVDPE}NzW`9w2jF`0VNFsmTspqa#lfY98E zG?&H=FiqLO6zpu9*kVEt84#wmVcW!egXnFSt=@>pS}dlBgs_)M0tN|`J%|+jmJpQq z6Lpz51t_JAl=Y4k#3LH1o`SK&6qoyx)a$B4^Y>ddTpJjeIjf75lX_DyW@F?nD6&-X z>8EtGGEnL9-;jZL79AcUh_j3pBJYzT*njn5UAa2Ok5(At!S<)md;F6WQ?*QY52PF8 z;07~!N!=BM*QJXtWI9!siczNNOmBMWx$!C&-Hs7mf$Oz3R?-1V2#@fbY=RxSxY*tn zz0n9VOST}IS|ek$W6j}r1BfTG+L%3s7kJ1;8KmR3t+33^`mn`-ZZzS=L#rZjZMMGg zJ{tNs+QZ>?8$H%np-e}%n`=M*RewJgn({f+!vBn@=)u?o6lZWUFgu~_*LjTB#ZekaFHAIrLbkP;eYA)R;%KA$!XSQ1rzj;S$+{;(J2l^-(hzlW9%#g85#X< zSio=y!7Y_>J$y{YG7FrHtu5`@{h4IxveHUA z!ke+RgeCb4-QWb+lYYHD_Cl%NDTFb9#ZfH!NKngd=8Ig?oVWg!M>AUDRM;6>oTztD zk5}!I-_wNtmHiNYjfV)BLjsqTx<|@Am0lWz_~OJ6Az)BSdS|K{1r5_##(R)jx-&}k zEk-#~MFw}KofoLBK)^zBaKb86 zvq0<+V4gpz9dbkd>7I%2`$0i#it}KR_aZl*eB^BiQBHR&=w9uT9h^6Nt1`P0L|JDrZMiN z*m$i42nhzArIRIf7z4&!N*Etiwpcgbv9BD}C7M&BSxi1Vj3|1OH57@APfZyu1)TmW zQ!AIW1<0jhc3}~7qE=WxCcHZpH-vryvGNfoKKC04QJxu;82t2Bqt4Aknxc7bs!a6k z1{i;9AJ)t$B_+RuWW>Xh><^NC*n~S#;%-CFIg86uVlND3*2>|>p=e91%SD?BJNO@$ zi>CI1*&qq^u5hzv)11${{2Y}jPlkbJunlRM?p?)FcG#HU%p0cyJZhqL6Ana(F8|pG4Q1o%lAc6j zHMiJ(UjqB1>M%u3Yf$+1X=XAW!gLcCrZJvJQkyl+8k5+7)la#j7uDrBh?-0FX^v~d z9gEv(%F}RTlGqoPt5#9vc9WpQ7-)&3C>zRN3TaXH5@v%Ow`MP4tez;jtKm%^F@v4a zHJzr}Q(aT2oy=aspV6v^CsdDtU{YM+oKfkCE3(b$2a~7JbH=+nFYILW#DI(A7WI(| zaZ#ogQ!WETCT_qj(;!6VLUtx?zu=@rXDnHKlHOMKTlfewB3<51ZN|fUC=dhP#!&%L zX9IH{Eu2Wo2pcEgI&}*MM%1oQ#Z@}V$RO4a3%Y4ejzm|8k%iKuhef436mrkYEd+Sr z)MS^W49+1p@HlKjv7%nokR1}dgwa$L2+hTFn^}|WyF>~=m!M4GYs%SwBya;&b?r;DV@c|6P!5%9m+n0chMr(ImNt~$1Q6~95xFaB0* zL(ep!BbCA0_>htMOv=l4E-<}%`9IU*86Qf-lhtIn{IuxO2EbAp-n%hhQ^>UG6H~># zHt;`nC(TXdu8DuSVZK%F|L^;4El zb-p@9(2SI9l01nq5LYhsAl!K#=y@gC6a#2^R8Nd)9l=mrj|zN-AUM*YXO!f}8{jfB zBkyUhypc6wj{`b9hl#e2sNxw6Gbu;-?5ttme3#?(ZY5>$iLPHGzWyja<@ z3m*L|fVfl{QmTwH!HXNYoQ%43+=iZ{j+k%)D5j<_%ck0{w!ood@BLn@oU*J8Dz!hDQZeV*?mX29;tgiuc`=L{4EysYHXE1$;(EuLv zv5p{C$}!bB65W+~*=S`at=bT%2~YyjKybxbdt8Ta0k{E44BO&3Q`$Cp*S5(!akpSb zbQnj5iTh_cU8qnJEc%$7#s zT_Bgg=}Y87K{9nI(n3_cD>(5;$-ikG8;*w}LLdPw<9`jU;t+&61mPD{L4qDkkum+X z-ot3z9l%xTK~(rmE2ZRVH{RfoKpsbQF`Rl$&>T-&X`5R#Cmh!Gt@gKA+>muMTx=gk zNWq2yeINR#?0nguuJe^mB|L2@lp;&f-8hkwB6h(#Leqzeidf^b+M$wr^MNvIG3(D$lxE#I$N5dm$MbZB7WT@~r z!13@2cr^S^FdsELiVnnlF5C;=4R?gkK!yJ;+#GH>CyKU!+e4Xm59VRPd|)si6wH%? zd0H^f3Fbw?e0(ss1#=c|N4%@y1b6}53VtKFKO5YC4v)kB6{!49nHxoE_(ixY+;m

G&Dk0saRnpIa>?3>*eW!)~a2Uk`VJPr*g-C8%_a!yx-^csM)< zN-n+uRS$m;=67HX=IUdjCzq@G|%+RC-Qb8b!n5El}Z~ zfxE*uq2yq@Wo~~ERJuO~N5M}))&JvA{(cKpejnkXDvyyc1&@Xeuoqqn?}xj>CK`j} zvlA-(rvmSSDu*AzD)=wBSw$38oDfC#V%{Q6nZQTk-Z0(l={*zfhWQ$}Cwu_z0)GUR zu2-S@pB-ELxl`ao%*{~sc5UE~q4KvyYZOrg(RiqMKLb@hcf%dw&*3omXSg5SCgb&R z5LCKOfcwHTpz7~SP|tq`R>SuKhqt+T4wM}9LzT}>P~o0{Tf$f2{_qW`_;+vj=Z=Sa zU_KryA14RAR--YcB1om zC^>i#D!s2jmDjE-J>HpcIOfw~1H2I)4*vkh!TmeEK9)k2+j)UshTC9%4$g!x!5v_2 zmzT#Rcs1rluphn#C&RYxD7qBh1XJ*kthb+Ip~|TXN)A2+B^O_UweYL(5cnr}ARN}? zayu8we-BhWoF8~SlpH()cZNTPivLwO6mD^n$A18nc?PV89dHi36sn$Hf(rLe;O@Qd ze>@zI{Sr6@UI}NwUqGcZm2>-JAw?ct1NEHE`dprCpv*@?#eX7HIxmE3&)317;8$P@ zJ`0te*P!zIQ3_T4%D#cKq2lX@s;8^q5cn7z0e=GbffcK~T!uo$HxWwi76Eyx_o3{9p;Onp8GgdK7I-(!8hP;aMa0O9!Ei? zdo`5*s{`+a^7j-x8vY*2-@&JNdpHh`!hA727=9H_fd7VSM`KR)e&bjuf9J#T@L@O> z{sXFhs!wyyhI-yfa1Z!NSOsr}s^5E|;{8=%#p&M9R71tH0ID2U2lF+7UxiBd%TVdq z;tVg3@lf);7*2*aL8b5aQ1R`3CSyLF3MJ1!hZEsGXL-0KQ00Cr+!THvZV8`*TftvK z<>wDj?I}9j<)H>1j&VjXpAXfp*Fin^IjDTT3004Koa6oWOgI$tGN|xpK&AIdD1UFk z17P*J9^V4EC+1V3+&>4^Uwj9C0=@wy@27vS8B-L-IA%nRXc*b3E7?t$ar zx1sX)F5CfDU+DeB1gLoCL)mBHN8#Cl7YBYm@K&gFJqUM&FT+{zeW-LFMd3_?X{hI~ zgG%qCa69-tSOb3v_lKK&(&IZI@HjXO`wL(Sei^-5l>L0T4_poR zgI7W2=P{`E@GRUB{u%BL{|i-LyI_zbMY{@+mTd+4WWD{ws2^F9TY zuiK&Ge;leDei-auflB{d@DRAo#U5@tRQa_*xt{@*?kk|$*&|T#{|O!lt1j{SKNu=M z$HKi}A5?i<7Wg1kJNqRZ4R^WJ%lAll4CdAFNcapq3=X->LzT#N4s$G8^PJ&;A z^7j%v0#<%5isr(pumN5M7r>vuBVhH_p3W6;H_TVVA@F{<0zM6Qh2yUAa+nLNG55f2 z;b-BF@D_Lgd<-goe}tpqPM>$VpB~r_cf$SxI0k+JPJ+)twcD+~;QmKImCGDB9`-?{ z>rS{k{5Cut{syW(PPo?VqZg{)FNBhd2cX>Fhg0Bo*LixIpz6CFDm|w`)%Rsk~G;Bd^>!LjgLuo}J%N5WyZxO^;tlDiy~oShFpQ%B4umT(&xMkwhv3fe zhfw+WW3Ybgle7lB;=8<R|d;5$(1nfpy&Z@3C>h57Gr54pnw;gD~6c};~|Vm>jj56b`P zQ0e~!+!kI6RgO16mGc8o_4NW&xxNFH?(M$q>$DT#;h3)u{3RTYdH3&ldpH8_j=4AR zqQF}MzY+Li;9G$^eb>W{3_L0@6L@CeHE>Vje=zXJfv*K_{XKU-AaF)tD;!COXZ1-}WE&u8I8_$E|*qrdO*c4{*m{ilc3UiK-A_-}&B=Mzxre;V!w ze-C$uTfX4=*bk;K&kF2>s?UqyZt!lXd_4sZhOY*5>epVMheNfm4k&-0fj_9AKZR|W z&v}Wl5B>@M9t-}yLjACw$yMkFe)vG82@ zF}OK=32p)Z2={`o1@ks9yLkwd`?z499L!6h!e@fHE0|XW^Xb8SK2$wl49|gg1@l3F z@Nu*W%KZfREqErR%A)CiWK4xaU-9~S4UWT{de!@?aF(3Py zxAOO(1fC1efvxiQPw(%$ z;9|^o!?R@nrmsJI0)86vZ=mF_=U=orcsaZc_Ws-Rx7UAME_&fA?B9m_!js-&4g#-) zO7DN*E%3y*UC-R{9mWLAT~PIXz`OJXa188&x4{)~pZ9!xxByPW`~o}=4t<|K8Qua{ z!bSh(f?tD&!y!?H`CkmL#Qb@vavoDrVe)b}JOlICN;lsRmH$IGsjzj@ufR^sZ^6&O zwoNOdb{Ku6!uB^-z_l1(gv$4^Y=SAh&%%$vLpQIm_H{Y@Ddsg>R9JfFZdnm6s$hJB zivQ@XDolQ!fTv;}`OylKo7pfyz}2u~ zNJTUiuHCi5*2^E?t-|`DZFjG*a-R+x33ncx3!jFHe~&%9ysw3l$G!Kgh`Qj3a1Hzg zJP{tfSB1?(9)r(g-eqr(_cbX0qxPw={_R?*a{fMC3inS{c>e|^cYlI<&YYnYQ3iev zs-FG}^_*41JpI3cYL^G?TVZ<0#Zc+~9qff;_Ny@c^(Ht6^IcHwNi9vECk5LY2p>P~+D^5-WK>7ajrkKDfg4p5^d-o__`06z+LwMRXtTL&sM{U&s7Y zDF2_GSYhMa^KdHW*P;5+ag)4WmqC@=L-0;mb(q)VBT)6Y)8q;pcTa*dG2a!;Z$Zh` zA%|C(o^%>i`?&=k4R=0*b_Ls^!aWY>!Oa^gqVL1SQ2oljQ#_u}!lN+12tN*M5$Y@8 zUGPyjZCZt`cSem~z7ImBcgl3Huh(H3^OG|wtiK<6q|4dKf$O23KYeCJ)BryNN5Nmf z8F0&^y!{>x55oKjD7kwgaO+v#4=sf)*k1#c|Np`)Y@F@+eE=Sed8;|d8Jq%_!!__Q z_zO52?lQL`x(2pDwTu5k^%Jw^x%*}C2+S|R9+;Z%a(pQ~4)e=U`8oV(fBwaA0_Ok1 z$#BAg3hU?BLdE-MsPY-pphIXE5axtlKY`nU+n{RMbFJob2(hxJhXf9G<4-XEakul5Ab-x+WU<_F;r_!c}K zZl8Af?}5i+{svqL_iXll(=RoUUU(@Y;qy@P@(-xz zPwsT{m!R6i-=WI$+Ah!koA3n8v%1~>b|`&mlWc{}H@cwe@hT|&<&W?jcv6p#e{Vv` zckfAF9>0Z$VxG|J;d1Z@%-?{BcC=~E<$Xb)r|({<`Wn*j`MMmc9$tnTFKSkK|9K8P z6Z3uyYG=Wlp!$*OHO{qgH0JL^mG^s4`EOZUVfz1f;hvaZhpNAAPIh@a8P;Kb6|RFr zPN^_G^a-ePcoCirk36-)^xyBpZ7}}??hbz!?B9obVBY++3Y)L(3uPW3%!^{p=5+ z`mM?5czZh!YTVfUT(7T>LyebjLdnC5kGnqfBvijtbDodi$3w~Y(@=Wab_^;f!}(C* zzYn|M7&>vcBNIM5F@UQ~VB%lQnb^7$H6Jsy6sx4&DV^0WCRE(f#VD$EbTHL(6t z?{{y8lC!CoRoHywTTuGkCoivvZiR_pObF!eq!%iE28gUz6Gk^=()|G|2CY0x&O;v zPY=Tk`FR^k&p6=@@6Ydps=rBhx;%abs=dDkKMAMYbieVSx2uC6@^SZc zcoFu0hm!Nt9zYTs-JT8i$NYDAB;4gO zPv3H=aKD1r!Q&qHe&a2;81vyzc)qTJdd{EV8?gGxifC)nzsFZAqJP8MuT?~dTr~6> z-VVR=P1kdF{+5q}(_ts!PJ^FSJn#m1&bM8jhJVN9<#IR_`^xX4U&8&M`h!|1x%oVl z+>ia9*V}DSa_}zv96awS?{8Ay_xidJDt~{5C&7-VJ^Zhr;ywBYp001gCozwHroz@& zUWe)@wtCj{JsQ?v?uN3z3Z4rehidmzo^yTYJlKT!2T=Oc&>wpHy9}OD{P&!25yUa64W>}8%nMp zhSq=mtisM?o&i%E=* z6smt1_8Sj>Hk4dG0adTN{MPev1)PWZ*YIFi_dD+oTj4^?cSH39ANjq{i;jiz|0Gm9 z+4f~0Cp)0zXxJZIJ|2VL!aVYi-v7P{&%u1`E3PNL0C&UO{Hn{*sZizdDwO^>@lP%{ z--ME{ze1JE9e?(6+T$-?zehujPZz?=;r(zLJo2yZei595`CD)X-0^ST&Xzzu??KoC zxA?oW6H5Pn4&DZbyypJD4u67quh+di{{hEiuK$OZ%L*v-vryyFmT!3fbsto@EdFPO zolAZls{YP>)7#q{@N~>e|5XvC;IE*b|1LZUPNkDjJv;!_A6EUxc_;h?<^^xLzW-}@ zCg#?+U7lWs8O$@@@%i~3a1rJ$-}U&H!y_=SgO|WR!fWB0_dNYW-uL<2*PzO6^?xg( zufZpw@^@BLY2)O96_q9rUxsQw@4zaGy+x(9 z_wjHH=A$7^FFF_AzX{`8l|N_aZ7QulSqe3t{RrL1DVz@iy;JY4fX|9V?@!aUZr*rLDL89X4RzbLUE%pB)bs{$;o&T((Q4>96f@ zE6iuZ&ETh@`mZbD1o$PWa4$lQf5!}|wEp39Pqma&{G5 zhk2LXD{Vjdakwq!=b*}SJ=`0<70kQt;qIfM(%BHqv!K$q1nvx*1J^)>|1?y*cR+=E zJn%b#KZGB}{#Q``UJ3U9ffr$}+_Tc;`;x#t_Nugb_&O-Le*=CRp1!xs-PZe5T7R+@ z&cgn3_!xW%sz3RBs?x^0;X^BJef2JQHTFM-hrsS(l~FTX2i0!2+_%!&a~3MTTVWQy z2}i@sel9mx!NV}W2*<)bhgbT#BviY80;*p+Y=4)dAHp2wqpB-yJ^Bf#@qOExN?TVy z73w*&YAbC#dlWv0d9wp5ZC>(oxC7?B4)k&x1yyfHK$ZJ(!MrB8UkX+JHw5#Sq3Z2X zsCxT);4k1FnEwV9U)2bI&c1;M2hM~;abF7M@AP1Q6;%1%29JYV*Hzm5rX5P|e+28` zPW4`XQ=s(xJ}9~VGyE~!e`KZUS#Lwh`P5OBrawFiW&S<<1zbA1(#ErKV=8UFaS_zG zHte8ETUWRqo{4$)v6VLNTm$E0-e;Vfd*F$f{|TGm@`Js+?}Gf4l^0 z92t73_Y+w-5A(}`%N}GqC0Y8iV z+i(|n`HV`_yKjRkk5}PTxaLR?_ZS?9dFz>#(J(j_PKIqza&!|s1pXJQJ`Op`({XL! zJ5cl2V`sVjeSzD}_V(8WRlk3MbKwzlyd7Q)B`;gdt&Hfl%@45OQY>!g`Z}h?j1gop zI+07i``{~F+vBeGey0M5-)r!p;O{fADs~9$C$3wuKcDL+u1+rf<`c)M+@nI-?;*Gk z*F60H78|vT>0IqxKfrzjel-@N3fT|UAVLg^ey0XES)Lrb!7H&pH~74n`{mf}jv2K$ zdVu?M2)6)UhkIxyVz1vn@$)eJD%bR2 z$1VFx%-y;E#ieoiqg;|t{U#8{g7Az_1@0W1alaJ5S71I4j=?WoEqVoWCCo#)()f86 zR&!0^{$wuwPQtv3>zmwvk1#XM*8lqn_!)L|KLdV`V%HFCPvSZ6VV*`j`k^LUzdTg; z*iXX!WG=OpCosRtrQh!Zm%<$gGakD~xbNbAHU9N$f-Ufi*sTh7vRC^>yzTcZN3Mvf!Nh!z8x;+`aO0Z!Hp?QbT(%Frr`cd?hk@{ zx|QuG{s=!W1@jhgbNn2QpA)gK5BA%_H$yzKI*0oixa;>(?x#Ygt;vrmakLQoA99_; z{g>dMxxR;wJGkEG`Udv3Twe~ME`j^;+$*p<60V2map|`s*C?)Ag83)J^)c=l+M?Uw zI(g#vQ_S1=ZSw!Z5azS+r(EC0kA9DE{fR5Xv-BH>Jxf5*uJEgHZLt3}Zr{Of6+B%Y z!*5&s#J@i7KaOEP{C$@z#r0Xt3%E|;x|i!f;#tzBgFGLt^;sq z8O!EVvR@b6H|KsB*A|$+3$Nk&3-=XVUEDv(HIw@rx%9h(IQ|V!!@N7!Wa51ab0gQG zxE&22!R-+4hv4^e1>pW(>>uLx6WsqE-U{{W3jVjle5TnDKliA|(NwOxusfJ*8FoJl z?$2{SI^2)t{tx)OgX_Uy_c79<-_N<8<@z>$R$w=S`r2+#O$aNG;Ko4MZx=5X7E`&Z#4%wviFzTp2GnDx8W5xoPq#(gK;hXg-o z1U>^%Nlgc?;(l+gtwOltLOeBu-JDCmW4Z3e&y!sGeG)zv{CymD2m8Z=fA_^RFb@fK zp9y}}!957m4^Iwu@_$T8*w;h+n_~ZU{Cz%{9}Hpk!F)=vi=QXsUbtV)%^@Xjf5-d} z+>gcmliXhr-1}fFc5ie2oBMkB1pbca{`1_w47Y;%Jq%g;i~fjR{Chs!UxWQ+;r@O2 zH$41?>n*Nk^6(UPzvTWV{2dRk$GjIDkGVO7!x&YBa@aT6J%`;k_|fk_*j>l31+;zf#~&c9-JTsvCamxxd11ZGPMn!tDmX%vH}dBjoRL;%VlZRS@4HxZN4TG{JXq zJ0`Plu2OTXX3H{sk6_F}j-=1Z`@2!15^+XDM)%=#U{ z^&hUIgB!R0<2irD?kilggViqrkAjbJ9mjPK?%nu(4&Kc*COlhSzsB`4SB5LgrC)1E z|7HdLo+g~uZ_a|paGl8gr@3Ci&mJ)TJ%ig_TuZP&mUvEqeK;<{u9i!`ySZNE{&3tr z!Tph3LxLN((PrWPemD+4qv33Lp&Y~S1uv z*bgUNn{eGjc>P9ke>>a-^I`b;g4r^@!C73Va6O9KBCd~c{f+Bft}4PE$F(BFo8x{A z_bIq6jsx>}%=+~bM!&6tf88I*RfGNRT+d=(hgt7?=-0uuDBPa_FUI}H_}d>o9OC#} z;2iw^f$JBThXy;0(Pz2ufi1!A+p^^MB<7WH+XBC`zmWJ3gV%D^^2|Lk>-Q?x@3>yX zyeYhmaNCEltFiklc3F5C*Lv z+@^Cq7@mVwbQXROhdX0Gg8Lh}UXcU8^SS>jem8+1!TpceeT!=j_rJxik}Ll0g1?!; zJP!9?W8M+&jfbyce@yUrKin7dl#qr~G0($%23(H+Cqf+ibH5BfTXB6M_*E2Zg8O6e zgkaw(2Y#zC-@w(+{g=4fgI~E_j{Q}-3BTpI_3{k;KFRe*%sayaVI6+uG!LG^wG;Qx zbDhckG#vf`_4_z}{~PZA;#ScF%-`o~;Ch?uN7!G<^;i5>W7h9tuDdYbB6BJ=b>5sg z4RfcZQmKV2GO3zuPhUs2JKb5EYRPtWrMp{Gec4oIO;2aKqq_?4(`U|Z#4o>w?o_6; zE!Ec1Nw9RPxuZMXyEc{WO{G)073tngYpS!Oxfi?I|Ko7}AphSYCQUs&uQk=1$z}U{ zTQc@|#Xqa@xZt}a8!IzwQ>#1rR&;cy`p96eWksedJut+e-sU$fJkn!s$Un6w-M2z< z6gYMlmR*uOc}&%GrPrpKGpU|*Z(j#RtB_4ok8GUNpoo>;?sQism2E3bVPWL*qL@ac z+9-zJOlP(w-Is2r;5|FJe2mj(E=V<`T043(Eqz()gWAhw(!DJ!ENHs5wZrSTC}iW* zg)`^PB`wrxfdr^}bHsx{SPJ!&V;W{Jasg1HR;4@pGyaS|Tx&YIvFT_{Wx89ktsUL% zwNXkUR9Bbl>+NXiORY}lQn{W?OGjHrrgb86MQXa+>#L&S^`qNTjZ*?U!p)4BvBj)l zF)Oy16D;P$7W0F}{Mce)uvi#dti&RhYF^uyiJ8+)EbhITllm#W90^aQdwM!MC~6e| zxuPt+U^~}Rnw_25)m5ZCXENBgw#VXg_J{bLxu|-0t~%9`OLb@aXdYfhEi{sJOJAlp z#6>~iRz0aYmAFhyb@ZhqJPOyGX-9@hRi-o3mFe!YD%t3mCHqOdIUX~zdSc3w^}iT@ zXEv89N}fGoqKS1{_o?Klv2Wk(4I!qwemJqHly^^Zx&Zg46?foj1992?t zz?_B!vuaaa{kgu>iu9_C)n)L2>oJWBrqo)Q(n_-J-5n=qTBDl77pU{9Ief{1b<0{i z+B^Dk9sv#4E1SeOuT9lPH4RBC>RdZQ%`ubCsrFRHG|iRP)U0gNow;nPEv+tVLTY%f zHWk$@L{Lc2+Jb^Wu3D_<=%sRWR^6@H)pQcI)^BC|`%>ASOt&6T6Mb+?LT1{#v%T`3 zU6twW?Pyi{dr2H|)63D=CLyyOt%oUvlT+!=-b}i6ZN6C+J4^Cv)@J%@Q>~e{j_yor zeKe_MMMr0=iQnLHs6SOLZnO`^46>a|O)3eA%un)OE=lvmR6lYyDbC(xHOwyho3^#y zAw`MP2P7dMLwm=nOn0i8vW}mX>#pvjgX+t4t0Pm5X$)zPN)p2$m+Py`wuO9p0CEvW z$vngQlS&)tt?)>`M1~D_OK)rk6x4hL-SL)R4;cH}~~s zGJ0;_ttZ>tM>CW>566=YTT#RO`7@{a|0%ahEt%i2pkYqq!o~&5g2NIiF7@^Gn45_t zMUSpVNCV0C(i*zs@epUmD*ENrqPa7VO|@pbP<&E3S~aE0@X5%K3w4(3?+NK4GHYJB zwYk1bS3U|G)^j~+^b{3J5+G_|P+gVo^Nz^|*oaProP`IGY3mVMWvxegAz>Ylur=Ko zyl2*sQbwa}x2X@VBlLCkFie>y7UzXFm8(tSiU*Kl5p2nJ_bIPwhQdyAR5KwTVg=)N zvwFlFrO=#Nn`Kb%>7_$hlj_WLxA(0`;-)D|4rol-?x>+F+s{CSOmtY5Z)rQiZ z-fW9$dX!Ko0$7xzlD0liOiZVh;$u^&eUNWd`D9Vm*hSoL} zJ-uDJ&*Y_GIG<;FZf-)6VqIMC2ol8sb4}LRHj|qpmw#w`idYb}g$=N+hEU1_zCa z8v0P5=rl4e29#$}6-u_+C~2f6@#vbFjerbb-P!KCxr=7cj;4^R{vKD_lc)Ls6-}js zP4aJ|OE>F{O$FMX>CW^bvl3EMy;1QpQJ6kNQ>ieegNJ#SqFQGrVCuFFWSAtMiBIn; z2lYem+mh{BTcFCSx6T_CPwZ!K7gILVotEJ^gbF*OA*44oXXczn9@E{{(cVwqRBw#+ zt+))&X}~TMq);dPa3NbWxs`p{Q20sQt>`YP-t=nPM!HpE*S@?XyBsa4yF1glT$al_ z8F!aUgJ$^gTyI36zU*>_uHc`MyR}f84c0uQl}UtZSAA0_N_mPx&Z!)zK5ItgF;VA> zgT+3Fx61R3#x5o#T_478rgi2<$37h$YU6z`WRh1t_AX>4FGQvy<&7bKQnv&1gQ%JdOX&m>;|76=Qh{UVF1Nm}IJ^Xj(Fz-s5$2Gc#f;b#j@0 zA@-=s>PV+%Orx7>=(toC?@$$2X^rbrA}z@VyHv;C?9A7M;~Q1ZP)Q;hCQWMH$xHpY$acAwrYS~$IK^uZtG;Zu*%(?`9Z_*J;>2TpF4NUvisVG*W=sq^J65XeT$}CJ(938< z?R61lE9+aEs!L^ZEosf8lNe|Z`(v6&@-lR09c{KE zNYj#PsV)Nt&01rvQ%g@uMKg2dF1kSauyXEdg4QFZhIb-VMP62RbZRM*HGv#cZj_9H zUUH20Jp=vt%4!ZRaB6a!O0CFr_Gm%SeoZSh8MawPM_#L}N~vIavl7xi{LRc8P$G~l z#L#tPe0F6SL};1zn-dHJy|s{g_hS)S2c>qUE=nzLUSA+%CO|diUh@=bzOT_&@RI=VZ8d*O$16w!Lo0C)q>bq z>{)|v&KG{vC7PmX{dIkN96|k>uFerv5TU|bvEWK&ypv$2bm#K!K{o-El+CDWH+5Fis&PKBB`H<}#XiP{e%BU}do!8lE>{p0Lb6YDlj}o{>z*yEC;+aQaqf7-#Hh^wdES z*>IpzUz(iLXKDhoI@`Ol{FBNB3e$fA^lJ%@E*HtvZUEEVPG4q2SuAV4fIwVl+=;lZVHmT$KBLMd6ANltmAL){fjt zMix{~%|_zsTjE)rPy9rNlfM4q>~vbOWLLdGi9 z0_B)?9{0-DZR4%QHY}twF|_n|v&m{*8cI^SO#-H{j15*zjILUl zU<*Z+CEY1m>CseSBIzoyGM#&aPoSc-F`%`+E}L1=AqCaQq#?{K$k0YbQ<|QQ3>2?o zDGMJiNL{=o(wAPObu&h3~qD&}5QfaPz=$xK}Iv=z&5meqf(V zc0|GUpo+5=>)QHU|%9>qcC==`8ZRW0$ZXIF!O(vNA zz0AaHAz#uJmmyJ@a1I)tMql8U^{IkblBZH+Flnpae`2*Ht$U)@1niIilerEwbt-6r&)!n|pVXi2o0!_aQ~$N= zzcfSA#1NC6rZ7F0IfF+YlxtfrF&7+|y|V3~nK)7RvVD$1;M)|b;jSaqr{<*BbaeH1 z#r72Sm`Rhy9Bljcxm3-;V^bU{s3i*@99iyv7@Lj^q^i^GX&1Lj-?@%c$ds(Vv#*2N zF#RT+EN~gJ#eX$qR^LMoZ4Dvp%`~boQZov7Dx|G-Fodyf%IO^~!1+p^ zXZoDF&NMxUc6(7u-I~))whc@fhq+Th81+wzuu01lO4wa5%@4ycCl)G%Yxr&e*fI@Hv_o zD6V8pd_dj?_$U|L&tQ}(npS#CdjK;43T^}bXacs5t<=moMyt+Da&3&W*6N!vJ_1|A zQHSbN>(v|{QnfR1g@*7-}4qS?0ck)L)lRHTlbGh6A3n_%q8&&}cxYBRQni~|~fDL(C~+F&1g z?9xaIJr_PCWHRn!3(BR)r6m1{o0c=ItjmrD1H6@sUQrAf7m7lblw*M^GdgHhBU0@Q z(8J>nW<#NilF*XrFtKdq%xhVPWUDbLeJzET6XnF7P5x9Egi6{#k(ZK|khn3>Ye8v% zGa88`W-xmW2hscJnDhW2xooE;SaldgNRykqWl_%i`g_Bat2xWry+XN40_XksgiAgX zM~y_8x8K3cx`Bmr5m-8u&Hr& zM|b}kn_9B&Ur=bV4?lLIsX;ROm9(4KryVJbkN*bEQRkI9x(a*8*thM_mU&*mK4v-B zUOK#9CP|)##$-|+cM~>8RJ$nJ54GuW_^#%x`C7B=b@JW=(^k~eb(1ud^V`U6lzZ7x$j{sQ4~?;6Ou zI!+!mK?4HBBVBKXmqc3pXnG&5%(fo#$?xnh4C#ZhH&YI6s|PC?Kx|#g_RuE;VGJX9 zp~tW=TP9}u3#+Q~B_AFiJe3b#I^4-u7_fDlZ&kjUftC=?8){m*0goJoY(^dU0AJyR zqZG#t#DyYy5-(ur9E#%8s)#1J6H?O(me0e?IP8&TS`$xme2-TleJX>`u)$Q;&!7>_ z^W&JdJTs`Lf*jdQJxNbK)nOk!KDDS0zpbCOzdEgg+dCsA*$e^vq(^wIMA5BT!J#7C z-)FhB;2dfGG?Y}it_&@!yCc`df)DHW@frP^B!KFf^^f>0b<*~c+jvWc6&KSA6u5o4 z_enLi1!w*V9u`_TfN9H11E_k|q2n__xW9Fjv`;dGr;-f-{d+w#%780s9z zp{x_zlrtY?d~8@zTc2Xj$hNgHmhh-lO;{hJ9fq*f6^93___zwyhcJI}0 zOyS|BgmA_s5rl%=mG}-z{&|@x@Y(-vO_FA|lF^j0c!7G?qIvc2WM6W;m@|T+IkV-m4CnWA0@wv5#}d zcBtPbd0{Pzti|hOL6Z(c1ZO$ewX-Ufo||9TE!sr#HLqMWV`_deAfLRjyGsKO2Mba& zrxhM6DGJ3yq{J1TpGHBmag;Poc+jYIt*M zIF%bhq=p|?=-f4Ocl{a-F4dd7??7; z*k0tMc*2V_Y(~>_vTD+@mT`=;X^BH<2F!O&<@Gm?a?E+{Y`4a74w=fSVBN_Ype<(T zXk$LEFnIW0bg8u+>-E!jdQYpHgR=h2Si*f6U@nu@NnPm=yyG*2!BI~~4P>%G-@wcE z(UCf>njHH(Qu_k^-85qq8J)H*wIG7x<9^y?%=FfqN6U+ifI(=`BbQX0A||P*URGV= z4RNtHoJFZo@%S0Sv68gDET@h)%DWvobni3u%B*(e6`5w_GzU|bW-MePHBF};&5J3U zB)i;OwTTCl+BRAtGm)8WAM2d}bS7KZH`O!8sUACcP2pRAi#PSU-VIs{((#9+F_`-L zL4LGkho3%M6`xHmIW=tF zV>cUG7$%6qXBM2F&8)N+qvO|*5+|R}P+ABgM`X3GK&hF))LE1B7$iJNm_(8D)%F@M zbe|HjxMHoUc2M78{`0{e`#ZY(4jPjjq!~O$dE`LBz!(QeLw=7i5e(0tq)3ZGl!26q zB=K5})th3hOIqu!Px-6}f1}nM+>)xP?yRoWxISvl*fE%- zKpenEyEsrm8sphFif?#Xl>F;c9$HD$&Rant=lvGEBUS9f7kop{ZRcZ>{ORzm`mH}{y+5u7P-=#3Q)R~c$Q+CVIzwBIC zXqpyQQf6xhX%zodc-=z_p*)hQB87qItH+W)Qzk@5{3Q~9Q6#BM>nN1C;s;0$Ek$%L z1<7Sel=l>rX!~l1s#D7yK|^EhhnAh`rDd|#R9_|)Nwoia5$TX>Q3)2joNt|FnPiyG z7Ye+w~Kv81@3 zOaziSX)bnxvo@NYY3s9BmpN?|j+J}&u6)`ouG!uw!=v7@*U_$0#V3A|V|Lh}r$HzU z6lmeWnkw z-Xfs0{{JlvRnz==RB=mZKZoyBT_HOokTB-PD%yCwmuhc?6};G6pYaPXMde~=Z`hh%=JOy&&YQM;YQyZ=@#6FZmnOQuIgN9sG%gtQL~jVYpmE`%1#|PEi_QiQb{cq2 zd`bxskk;>uLp*cFbh-z<;~wR`u+*T(<<&jJ8v=0;{2{`Wz8If>S~#DU z@~4_UFek$fiB`?gFe%%S`O!i$s*k?eR})B4vQ^6@zz5UF-*t^wm%{W$nh%o8tL>U6 z#adapG~7}Mp0i%dR0pBvs)D_r3y zV~1E3FLE&BShKc1nww2co7<#uGTZB?z!1MM--s(hMP?F+XZtLPRZsZnmWoCqTlU*Y zihhuH!l(#+7N*2Q!OLKI4{`HNDoCLUM++)1e(!=bBiyz@F6A#-@F)#p+K+_Bb?d_5 z#aW3nUXVZ1ZDN#c@sOM{wU!qsJ=~N-sRy=7P!L;hsxY3o0Q4OM)9#zK(@;>>gN6*R z8@M88h0EzD9<0?You>~~Tv(a;mKi!6>ar`W8OD7&WoU72*LanRg?JGZlp^gw2MoG4KLX)CX=SxxAj}2|nUGp-g zwENCKSu%BiIl1CNDOa1bQ$Z3rvkH4kVFy{Bf{lM@OzH7OhWPn~q1=xilRqHh?#X64 zjZDkhv5flQ5Ke9u9`vAZwhsZAeDhLTcU0nv(1jJhfi5L)YLkJcB|=b8pk7e}SH;7q1AB0BZxBL|7q zXR3;=B%L<pA5=Z-JNgdNSo&uGL;9r@J}>bEeMt*}KKPB3jryTE$=ilu6O zp0E5%sD9SX59GQoD1l2-Xk}BHrD&dB@1xUYODQx#I)!Lnyjf-ocKJa%Z*T9)`B#xx zBJ<4#rqKnm>y1=hWT#$^vC~izf!e(9{GnOgJjjpU-AJCs zbOT>#7UVOzS8LRBnEhhS*pf`^L%_JBTI&O(t!0&J9ML@Ab`6TLbhhGkf7{25l5ZJu zxA4elK5q;$pSDjcYpl>zk<^3_uQ08&?F)a2+dp!*;UHT1XW{73f~tu%ri~03sxF#8 zuZd44vi+h0LoWzzhM5<=U$G+QUR8p$aP^*alJb>E0sRRwBLzaj?0%y8Ix!H|9bD2R zeD+Z&M2oV}L*no2`eZX1eai$c8z78#8tgVU$cKJL5`ZZ<8PMFPRu9uV`F7gV7dewf z%lvAmtE2Nt977Qkb^j=ESn$eGkbG@=B;StB`%pKwA$Jv-x_s7IQ+$wtLE}X91d7vQ zqgrZ4T7<=)V@ei{y&6b#FC2Bqs8N3GYt-;;G~c=b-l7P1@d}pP$66?f z$#E)(QAit*?xs^h;WkWEi%lpC-gc$cYvQ7B{NSZv%#US6i)%LhEbFRf7rXL(F1jq+ zCG@NYp-BX_UQbwK&D_@V(gX5_6SKL7qRl0g?pM$H{juvPKmH=Jh{Z>;a{4Ll{&h_@;L1*6Z5f2+}t=QSt2bQ)I z(ww0jePzlXWrxJI1VL)OuNoM_J_%~WB?VvVSNgc-e{{h5h$xD7nu(aN9}<>~?w|B=%DM~2w# z(>`PKOX{K3@QIUE2gmBEHLEDzX)gF+p_*~gMjGGp(uP0h7ua`ZQb_^!Fm$ky#pX*K zLBSl+MuYI#ah4W)`&q@x^yR(MuxZ}OQc0Y+>JSB*o4*+Gfgy-!6`#{cG=7^I5XwLG zBy}<0@gysysT!M5SvRhfvYV95ZRo*E0v9fN76dE}#0rDd*8iQuKH8Np9=9dp&1p{U zg>Im{kHpbF-{Pkjf=d6!A_zR7plB1?F$4t~^ga#Yl@X4#1!+pF@dSW7A zTwnx^g#s0xX)o21KTRn0h_58H^m!uejEmj~XZp5UpVpu}sUTjkwgVHc0=M<|(x~{Z z1N#K5DCVeGKF*dZdlbrC)R$?nLZ!CPP`LkM8&_G&EUz_{&i8Hb&T9-NO+H)H>Otws zfuAPx14^lxBj?%cN|u`_Skh^gtb{lD_k4pITE<;}1))@fYqB$Y$zhea@i36|u3fH? zI0`jSs^q|av@ri-o`!#Ya<$M(kIHX&mpWO0 zQ9R*ZNO_{oh6Sv60FL#gW9=6edkW(!n>l`zRk6kan6v7jiUR08K)r z$vh)?;iLmPYKyj>nQ$U3lHMiaTo0UYVuaJrlO@UUf9}!{m|*&WUG z8;r6jzH(k|0PNLRk)w$HqpGoTsdXC<6E6zJIZNJupAS66g^#FSl zBy!zMh3dGx!sJKiVVXP+^L4F^g$*-O8`PvD+4%}{2_uli!{^VwU8z1z9Sl_;yd}%o zBr6;+Rcd2BU7uO;!xp}DnU;QM-wUyQX4?p?iS;rZ1{^H+8dl(NR)e0ENjK%>uSqgL z*Yj+f$dBC;&B58 z0jsaj`+Mzc{IxPK9HAwxalOfdM-~t8u22z`dNh4OE2z4zyPGQSiB)5^ucR|~v*;5w z!*^tq!~uSSwnO>z-J)>f%bq{LXDFbe&Wsp?)F-aqBJErxnvT1A-pl(8Utuiv=?CYE z$|%fLe2P6|(adQ|B_d@HP8FT(jRywxQa0SGKgG~R5WF))+XpiwSQ;sswGz(|sN3fg2P<`Y zGz-n6qJ`P;wg6p({+59YfSyPjBo(apF4W7g#hn;-;iJIT6$Bj=<;k~veWWe+lqn_UqSU7n24SBb^rb4I|$|AB@ zXbnLjiQnN(64j;GP?Ix|`OU|OexPIsh!!PdVtC!j7qo3ddVrg~i>!{0GT49*El5c% zu?^W0fA$r?xcBpJChj=Zzxii$HEI;3tV|f|9XI4%Lnwm9h>#@O&i1V>jhD`q4++rQ zg+bJ}!U}fd1_TJ7=}J0${e>z%At=!-@T=F9j!gHqu2%ogFs&4ql!d(Ln7S?C`OBmQ z5!iP!IRwx62nu(9he?(govXPm-mI5nw$MO|sLrvJ5pd9kw519y-JlPHH0jh`Q{i{7 zYV@WJe}K#O;0lW(-aerz+VELgGqL*!``n;aWL#@S(WuKJtLzOhYtsicR1x@aMXy*9 z4d>NkN39;IEtC8tK&)o*hIdtBY2oOx^va_OvZ#Lj!@6;t?v?(Pveznq5=Z#bl17wd za-TT*^iV@c91k*Ec)Su}FZc?-wdh!f4F%`^Gf4O(Ilo`O)e>L7U(1sIsRs3SmY<=?TM|b!B*8Y-uv1vpBDbVP!%fI z@TgpIwym)8rx86lDqjmyuuhi`9?DmmMe(2Q41tjCl85j}3uG=d!T2lk@ne$1nT2Vy z5Q&Sr$8dNe4#mP(@;7XffcfWWHOlnck~6)jut$*uDY(%-h9;NN6qB6{J6NuIqpr*U zX5gYAu1;H0$tppp>GB~`1C|Hlr_d}03ADgm%09;ead35Dfp{RT;dxo82TX^Ftyeb5 zjAy0;(>gW&`xBNt&4^;Z1dEl!fx#A=dMu^IzXU*6v`BA9=SBbjxFrqNW{P_}TX*tR zg^g&gVFjMtZTLMr@-SenUS(1yRQ`3m`sf%tKcg<+bn2qdZ6qgU!r!%}C&(!PFK3v( zQ1;~vomb;;6lb&itDA5BR4jpf>T!c`KPULXtr7W7~-}48__c*??#%vss@u7kRXAlIulQ`;2#8_(HiXki(#>*^(DVFMD%g&6U@* z^*6qQZM2kEgZ~HdN6QqPbjQ2QHc=`%p>!0h_D%M2S}B;6Ku2>&r~bN+ZTYi}ZtadH zlK;#@;a-_O&JyX5BthBfBRrg(=siCIZe+r59V}Kx_eNk{?5Uj1`RbQJ!s;oR)1!JOtXgBhft znle2_PW&yDm96><)hfm5y&Z!)&Y?{dMp_iIi4#|YJN9oN%vRlz@!ZC{b5(ZuI0P+`eR;h3u{MkJH27%Y;Me2-P6p4wNcWO}9k!()LI1(um%>wL=Q9DSItdKVIX(j)VR1}6@CSLZQ zmqs5J9Cge(}CBcII{JqrD4k2v{8vZJMZKU{it`r_vC&Z} zzKN0inG>Cw@;`Hu$q}Nrx4%cdiytJzBK}mEv|(Rd3^P+(+A4O}x5QW;Ebl=DnemU6 z+cKhxFMNx_zgyGh?+5djum-+*bs993mgn?z2{C62JJN&tv;(*saLx8aws&PcTfUu;0!~p;zmc!`&{AyO zC3GZ7`&ZpomH3f9Ybq*I>ute}g^NQBm}O42E4KO&Tl_gy)c1JvU+paaUSD{$z4)B- zCZ(n|_Z0Qfr>SxI;fJODNgGQvl&DbEqED;V;t;26l! zJ}*A3tk$nT<~}*fZ)>RugoEq)uwTgt+|d~gut50Xm4&1C%%eM-h}~_FHgv=eYwwZmQ%sY3zqh+b4a$M z=oHm1ZQ+Zr`m8|K*yrrv;3!(XzVVgxHv^p{d8bw9edup5wi7V<##J)HMLOfd>azOE zzSP{t#k2KCs^X(KHYL%{iZx&S`aZTBCEo)&@K}RQ4v5?0F{_vAXKWcZ_EDfrOfZ+K z0vml>O8b|dG%a4++%4VN!|<)YR?*SIvP*RxuQZ^uR@YZokvIl9y+@L7+bAI+>ckc0 zIe86}Si3W;ZJpMdX@RFOkfqQbM%5&G^k-UY$f=L3oUw(w;=wDR2uT zKkioCdEGMn*`gGG){2@g*TP~SRG?|e+905@MX`Ne*(i>C|HKD!p$$%3BB?EFyUhBE zyo9+h#!raDlX@jFQEu#cQT{JM7Qat1%yfxiALOnwbFU?8#|A=5apQcz27L5)Z>$e{ ze(=80DUf2S4$pe0cKU3oC4=TvpVQ-ARX$H>vw<=pO(vP z{vzAtQ4rCPisp{?*hUIIMy2VL(^%JFEluwP_6B!5o?~5Xul^v{0AJY_zFrX4o{5~@ z3f2QOFrmLJJ?M}_A{`7N13^`>6yl_13YI7+3w=As|590;dXv_{6g(1;_otICt_Aw~ z3XazOFktDK-sQKf$a3T|7v+N?lOHhv~_r-ai+lEJm`52$CS=E6c@SSBQXmaVuO=wt^G-(?T4x9Pl-Wh8NMRWkNgqEaQk*o9~OXMNMUM;|!j@flCF zf^0j9APpK$QI#xrN^WpESx$*^7LV5&ENTv~`yg+VKFGuT!93*u?C8>n@*EBT{p9}?ikct+tA@pk?ZeD)y>JZceL_H^xAWE z3;8=-EBg9+CX5`}+~0n(&Z*RMu92_w>x~)utxWH79O_%zI}S%SS~(1HSUabx_NSZI zD=oRhW{y5|?t!yMkD9x`Mjn;KW|~(RE=9azHS=B*M!uVQKQG!jT&D! z=AhK5aTCUkJCJ5K3XgRQ=--vhf&NAxJYnp??r%1yE9(~OzzOFw^(O?XX0wOTpKj08 zE#!REgwzy1LdA3>RWp;RM7ox_eQTz!WAvfjb*$pqDePe=`-M!}Lw)N|t#8~V8?o7h1 zUw4b$-=N3n1M$A^yMEop7Wg`XaYn6;U|+Vl&tJdpUPWKvtY;}PINjpUS0J|q53au% z7t;G!a8&Ydz~SCFl;`Mf^G6PzCcgE$2JLP;MUX+vd z>mFWz^Cxw$Oh1fmz7&;7y>S@Fj8FVfiG(6L3iJc&5l=UVdc663qP}wd&1Y^*q!xYI zkn{DSGW(U}uzX&SDN=cpo;gU!4a(sLBbAJO+~Pl5B4ol#9v`7>krVFx;Sw4X7vB_B z+O5nBN>b8yH?}UDcXGs`FtH&IBku5bc9dUsWb{i zbpzGmZQP~z4txAngpJFLtl2AWDqpP0fl8+|eJ-`PkN~ed+VutN*WK)CAS#kc(R#wq zu8rKDN1n||Dh+TP;Ic>30KCDhvphazC0Fn?d?5$cqbMEMkeZ3u-DdtM0x#g3N(<40 zU2VP;X8lb!Rz<_>N4KRKrv!F{oAv9ivPbhj5>67md%MoP&B%N6=ISz2>TOou8~rT_ zEgu_y#Mh&pANcjVr@F<$V6iavu@Z|M*(iKcIWws$)5DVn!WM{wWK=>)Ns>P=K00NJ z-^HJ1CmHl+NcvTCnD4S`lz6ywh6YKMP~qouRL;_v@8~S=YJoSKfZpQniJ>2t!VHy| zwZvm-a3O!lWP`*gLK?3+0Gq4Uxm7Yc5+x}jU-FojL|WQ)5*CU<4(qG{{P9Rm=-Ryy zywZGl^qxQ=LX+U`JUu-W^c|Q(TjkCRRHYFDL^hiqEF0z0Ts>)Ib;uIAWDKRAuD1NB z3n|S{h`vm2yv>n`PZEqw|KG^knEiNr*ecNzaPvk#DiMtVd8{5j+G9of%G7+hA{$sN zR^Z;ZQknEU-l3=ji=xGhtlXQbo?IQ*6h%dS(xtj46L)0!+UJgHe(b~g*V1@P{wX}U zsD`|)dGB|X4GKk4i1(XJ2nZC*77Z>edU>`GW)~NdCqK%GyQndkAZF|QP2`h?46>p-eVMKG_+LRK&LsZ}w231&1_6Bcwq}BToH4T42=r!p~>C8%H zATROw_a;m6okc7tJO5vM@7iQnb>?~Q*L;c-bjT@cNQ5u#s*ou=WFccs389go%N}6V zX(@pm5=kYcFhoT~Bvh2q4Ard{6{hVDM`bENc^JEd30~M!5d?e{MSqg{{h$A{*1nv5 zPM*{Sh>pP~IeYK5p6ma)thM*q=P>7H?Ik7f#21q>bC%LLC65sXZSGdW!|G0N(x&N@ zVifV>fxig(L6zOJ`ewN23Y^(kmP76Bl@U+<%iX;@;nq(Do%n=2T0)>@MAmlgS4O*lFxz4p1S4DNI6Ov5)7|*4L{H^I2px~z{K4d@vgiCmrq&Q8$Z&U7 zd=pf}sI|||luz{7v7k^GOu1TkN78F5;jRo16eL~At3dz+=>YtuDI%2Pn4k}#b%07- z_{0+PiEu?f#SNNs?CcDo%*&1f1vNvI8k&JMV}p#xo)TG$uLc*4o0-)~u*%}>2Jd&M zZ*&9MkRaH|lrdT4Ny7L+#o`b)+C+YvCp+q3_Dxq(@h7Xl*x!$Xr z1RS_SS4Wj|nkp&Y_5tKF;tamX(uq%+1F$NfGqzKAV$qP|^w=#zMbAEjHlFx5M20N! z0{!h^lS>;bsYJ|K#Ls?zSkD_ZhnkONp~pb2gPLP!&alxRe<#O|>!Iuk4`iP`#(TC; zoP9Yjyr>;C9^HGnF#xqVyUD*JRo(%QjMy@vq)^QOiL20D!EVqLa-AeNg@d^$zlW71p@isK1y?)W6jR$& zGMk7h!r{m#k8+LH{@0k8F&#ua_}D`c3Q|#8XUSV>iq0BJBaL>?@eSExf{{O-*O6*^$S5ZQqPxoC3u=onci6~>eT zB{)#7!JZ8-N3zsIW#jEPju*~$yKjcesb+^R9LrZABB2*vLyEvJlBJ!|8L8mN}-g^9VDWUrptWbA)MBB$G|`` zx7xoy+W3_nfjGkp*VJ^Zw1=eK%rKX&xCb|LMk(099ID&eqQr%cnt$Z(-m6dKuW~-| z=EgdYhbb_Y;sV**DPV|(vU9mQtCBG8gdqQBn;T)6D+7S*mJ+Q;mg+|zK{T6`zcx{B z*5Y{|Pm{#nhknF<)trHM3k#Stf2L@Jb9S2A!A)<3A0eF^u~xPu8vJLF8`Q2E@)x56 zj{1yH@)}`>V*he?Do}Hb;$Or82Ky4Fy7sPx1;)k*?sCyvz(bEDpsQmN@(8uuvavT^N7&`DuOCQr~nAiX5ywpA9a2WKZg9Ck>p5DptZWhE@ksmn(1YuDyE%w z8_G59bd8$Jf|Q3VWFt>eCI;OcQ{-X1z%<7hx<59N8WmKzt8gekSXYHvX8NZ5(i%$i zQjMLios&RYfFceA49tP~oqHvFZ>FMMfR5L*9oR4BLGs+l~YCtX- zHrjz}LI&s;G5XnLyhemT4jCEbs}#0xvl6})k2^C7 z+&%ExzhVeF7!#~2ofF+SvSdUd>9^I%Q7jeW(uLakm(D8G9&Ce6DPi%<1dn#hJD9J^W9(ztmE)WnYem5>}U766$ADk+?~D?Ymls` z0j3N9VY&%~1AU;b>>OMf#2MY}Bo}Zt*)8I;Y!PWIPYqbI0wSU{b=bO75FB}JE7g|e zj_%q*YY7r_Ii1tw3T%fK&}w^OFOghAtH~MkQKKIyXWCp9?T40rO&O7B(p5@LZORyp z+h{&8sfAMmnG?()H#Ncw>R_EQ<@@kcP0(^!nJebrgORfKAlXD}F$5g#G!dTyl1ptd z2#3)npu?C*j30J?lV|i&?PI+3^toU7#f?Xg>XoXOuksk%YUkyu>latAtgl~%GY+cD zXJ^r0mqi5&s>taGk?W95>9`X2a4pw?OISNdPj> zEROee*8-bf>*dy^mY=^`$O{bUXXDxIP!>>)B1e&lX-XIwQ($T|>)eB6#tdOzS64`@ z`QHtHA_$Ykms9))7n|=iF2HImU^?P5%`{@@(?5RU-1&3QA3Mv|=6QX7{^w^-Fyv+s zzY{bqIKyG*{@sa5cDZAi7T!n`qvbb@B5bD<%@!h(yFe-wXzo`A7{M1wV9F{#9nb;R z!?5BiYOv6B51Q_9WO-w*DVpcTh#~SI{dhRM^xovTbBKb!6x)c?E`5__cnG8T(9XnO zP7L8LZGaG7`AA1t@Joo*#6#V1?0~$n^&vF5BFfB?EqZr|9Z-q{t}Xyf9zLv1(9CNSYoYBGXKm0VcGU_!J;)rp=*smrGZa({hq1rY?ivThnY>&!K3ePA zd5nhZ`z5k70k)f^aGf!EbBJeiR%cM)himeDd1y!*CEjgPt|+Jt3}D%;|5df@8fv?m z)nyrmXhGxa2_J@CIiwv)G~EaD0%z0CkQc_pPJe~QfaQU*ttns;LlbH7I_?zCz$EUW zP2sY@$tkcN45iRCxJ6PepqOVlo+`i2H)(6s8d)Q|XrLK*?U85Cv$+N+kqV;H2p$q!1ps1GOsXQ^T%e-Wjy#}7|c ztlsfw#-i#CBY=a9OnZ;<_)R2nsJ^kq%Q?E8BM0<^&IJ5L>;6M9Ga@z5{5XCOo27?- zIrp4@fuL9knBX?0vXP0;^7YKCZ}+E_Tp+E0m0`D2wU`H`*pLLK_F6vuRqzzBEkSQ{ zg-E^uZNY#vx>{qQ+;&0;BT7JT0tzkBM5MkK@$K)g*u1~GJ4IilBofq}`>a8s15Pa< z^H&F;vT|tkiNA=a5W#0hsKQgMievq`B-Jtk9F*=CDD(nbfkO*H04VkM7;t>ExQ0=B zB&nPFrM}WZGniIwF;^}Kxko~-F9|zzf<6gI)n)kf*N8WV9%EKK=N00p62|~JhB(0^ z(oDP9mN%~3Yt?;w!Y$PdGcXq{_%?kxTK&| z*p87UhiaB|hE;pHOr){03_V$$d~5BED^d{C5(3Owjv3;3;fJN6r|tZjDiBGJ&pI}w zcB3zDlzQ+%upTbZn2e>6sSS5;B1xQ}JS83YzIt+YVBn81uBIz=%W>$DBuY+_m5Nma z5vu$qc$PO`0w6 zP}ti8gf$W*ux8i?LL40iT?R$m`U5oZxLmjEUb5+I-}Z z;unDIZl4^gMq^xUhc}LL>cLtxc-i?W_H{ty@UrRpCA!sBy{Gh1NRFf~Ga`2=IO7{4 zC8UTSGB8&NGOgH%Rw9&?1`oQl?T|1#J(3CHrr?gq;q*TQ0GO*P3pu0Gel}?VzD*R8 zjFJZsevF*^*=JS4{jTEd`1=8oBK72AfjI>a7`Z1>TmJYcaK zRz&c~MEZ+$)Lc974W6Tlh-ktCASU6098AMPX-=~B+-Y)|ZE4W?Ci4O2_lRTLOo~bv zAvsc%lj@NjMM6+uh9^sAHDin;nv_vfvUQQI>{`epy224-x6f(T-}CEaEPD_8DPx%+ zVS)oSduZ0`8+XWtX1fqZ7bYP;6gr*`Ewz&%2bW*Z3F3Id%G?RBDAXUa2+iHSsd=%( z7_wRhZJe4l9iZJLkBscEbC&D)?Y;8E$v=sXjL*aTXl^nI_RjX5woz6|M-V{i==6-^ zz&Izl(Av(n&9GEc))dOEfFVX2ZG0)<^}pcIBknX}(}S4A3S1(b4)dA@?zp~wgx|cn z#IHVgmKGg)gHh05Of}#wR5*OwO=BU0)2SoI#Jtq92f+$rSnviuZ}cu`ix7JOaxNUv z+*a^viK>Vjb#3Sf8OAdnk6)=^NSow1z{Iz*l270JikV$oF?g^)U>4#KXc)S!LTs6V zUTt5> z)p-tDl^sm24`UzZVUgz1jzikQylIhu1t`msj8x+-To;SenxJNtn4+l0<`X3Q=unFn zsJ0E5jsevTf>=JaX64j~nc^XiP7PH zUC36-A=Dh0W{wSR#W3@^ps;`uNx%rAgsNaI#|6B55p#zb%xX6$!WSpcaBer~JHg>4 zN$P6Qx}Sm^aFFp~TyGcJ9hR%jjiN9#=HQMXeGSHQG(yCcS+Q`>6stX)3%sW3-(x%g z?Fa>!>mwU68)D9EHi8Vx4(GgUK;-?lAHzLhHW z%-StPJl89#H%sXvK5?PakLjt~xx4qTQ9J%SXUCfcTSh@+}WQuDjdpj z36V&4{YNw7vOLa25@&??-Z&y)$7iBTqb#WPT{D91A~(D92ui zPU#{bsVm0o!ep13;wyR{m=lM6zpM~>9@sjPadplI835q z5V*3E{rO=vFXn~`nnAE`7pE)wp&AJNDlCV>`x|Zuldn%!QmXOZ!&BG5nBCWA^WRr# z)O`f4pg~*^Q~Lzqp)%o2OrGSjyYH`4n{2xFQOPmoP(clKdfzNH6vUDEe6JGuqVg*k zrxEbm_=2(DHiG}h>(h{`>%O?3;WQuBR_<0FU&X|R!dhM zF7%#~+AkOwKL+(uJbQtTW)y4NL?JZNJ=g?`^l!ShqV}~_cpM?{8M#@;9o{yfGKA$* z`)w>P+IL7#cKvnlD{_ovW<0K=oWQ{BK_*Y}lVz{}@G%6O3&yayrrn8|>QLyjN#8UX zv;k@qFcLt3tPZdhS6D9a*Kuh?$a-AEnzRj;vNkACQ}Z%n+@`cKP)9E|o*>ZaN8%(? z5e_11Fgb`$1+d7_#}bPUG!I0?FsRw_bWu{m z#K$J9k@Fz;N1yUQ+cT$MIL*9IOornQjHWw!dYp4r+O{<8n+1FM4he^( zp$u7a5~{_@^&!d{AYUR+EFm+7MqoXx?)6S`vX{I6FZw9h3@uoOM(w zE?~&H40Z(Ii!5-Ve{oYtb?m(7SDQ6^XCwtH!A=_^J)jjA&rqE7w)rdeK zJP<*7X2f2Tm2drEg-f-fU~I!Vmyqq6a5{%VnC-Kp`8dtD^uv5Vn0#wfe_qv}wJVpe z{h(2Wm$13fWXW$s(iy6^MSvS3{TA$_nZL;_y|4yKsV|l@{HaG8^l(}+lV5-KvVgxN zHz2%iW5A@x6gh4b-G7r7EEok$d;=cllzw4?xt~oAUFVZAhdXu^#+Cpxt zY$V88Lp6)@rc`h&QJs3G3m)mjshVOgvdiu5N{DO;K!0%fX7LZ|tGl_wl zZt&VoconfMyMtPwW^PT!tzUW)%+if}hT>{!ot53WEq*rg-1^lw`RS4$zkQn5>M;yz z+AH3NXcLBU`f&s2sFH0Qq*ajjCg+|zf9BY^bH~q~cpA#6GqT<=zbrhx%4lH-I|U;L z>X`YD6Bn3t4#+8S-41Fkiv_Z?BtfW9wV8v1*4tX+xw67axg@?YjYbG}OS{!or|Pu$ zu6>VOx#QAPl9;9tq-3l*{PX_OOmw-O z<9ji%Q2rY8SAEG*X;xdzDr5joaY}nZDD2hwY1p@20w5NCWa75AC91@DR`uzlN&R_1 zVjCx|2D-xkLP4Yxr4|t41Vi5B{JXGS=)Wd-f^C;k#~fg5n+~B1DnKc3>jnq-;8#co zPl>1*|JU8=f6XpH+E_b*bC4#M&#;T!FbFXC&wlx@ZP6A`QUJE$UQOG@OPat*0M*nd z$plhUsQ{DZ8jph-wG3$+sGc7dMdog}&bGzK5RrR>Nn(U7M6l`$6GdmIO!s@r5?uJF zPA)Cz5++Ec{H3=NCfWFbn4;lMa8hH-0k^AnW7tQf6!~yjp~&O!7q5%WQnJvYq@s1V z0aV%xw=E5%5MT9F|A{4_#GNPmf7a_viz>^>9^WI=&&e_GYmz#He>YTKPU^rJ7I)%V z+Tst%`(XayvMk~Aha&FvOB-+D>k=V~Fb9)^n?N0^10u1o? z@nq*=&&M{LDnS)}v?uGCBJMuHr!SZm@93ikjSVdEG zQsBgT)%)7snY?du!Fcpr$3x|2Wx*pqdscUR@Pk9Ork`3i3C8f!UdAA{0B}z5?NgBp zq9cFHg(Tp#;VhyY(IurjV?D?Y{ocg$WljxFjP8BhYhYVRH6XgLeD${-rcy~ZK-W*T zm_X`_L9I>1OYjRFiF7psW9FXuT^kE*a4oQ5>3(|P#TEcDXDx&Feb(4Cj^XK$zC!*0 z^alj?mu~Jddq63pZ(jqAhQWboX)D(lbMmZJIJbHy-|lb6d%Un$7Gcp9QVlVs3JLks z&bxova*cb?79Xn(Qc&!^s6{Ao3`zB}RdFu(^S-+aW4kS7?HV}p8;9F;J_o0;BSVr^ z$U8*g`$$t00MeALh%l?7+%;9ji-Uy>=cqrzuoqklY0goivrnvC$A%t;SATZjlv@JT z0$!16JxHhmRv6+^=Vkn)__p&=YF%&8HOFo6Xid8S3`;o$R!&kY01J|qF2%H3It`);8 zaW8&wGc!5i7&Aj}<%S{U8NEYBTpGTW*~H&>yU9d)rR!vQtB#sx)ZG-*&I9(>*4JN$ zZO=oa4%R&pb&_&v$ej8xxob1dju*y8WvsVxAv(K3ZSJJ`S!}t<t^lB^^%{sO{fH_OhQIJI%@H!+S*|%)92UyHORG1BYTapoCGb}|TFzXf z^fDdT6Yf^B00nhP3tF*@tkDbUVe&c3fQkTLbX=4ksEvSRiu53<^TjE71Y}?+6B2et zQYDH28$}qaW&5eN@}_?U4zb<+Ev%P^bP*WqLQZc?F=U@hG#u6aOv z9n}MoCZ_Lq?i81ve^$1po7Ew5GhAK9$=LS1zA?e&a$#Cmr;$`g^ke4*WH|_9^^0#K zt~zZ*1cfjxeSm}lum`j`j%wL4p)5c%$h`ftqg#xANth)CSnui1;zIJQ;#kDhB_5=< zkCa%Jh1u7E8s!*qafl3}G5jYp3vsDX=LDhZpvRzSVW}u>7~ZQ3z@RibL|G z%OV9m&Q9wW*MY#yy`W@15+6PFN1d4gs%|ITNBko^3hzXK>Ldbn_A|nBESVTGd_`;< z%I1scHOKC^!IyHhuEyS974Hsod7xF9TSm}d@Vx!iNdY%>25+Fwp)T`9h|1jHs>Hm; zk!(K(!93G+kx^j4e$$>@!D^-vV~Hs<4qw*D~>CLIk=+#(YJc`N0{X~uwI~9 z+7n`6P=eQLh|o?U(;6LI9#!T3ctg?&joL+eb^MUGw5F z=A`dTr^ZW#9>vG;DufXy+qV{TW{YgpCJ||~n+-MI+#moWc{oDD!lM2=p`WvZ{=#;< zrbgH155i8PwWF-nZjQeLao_n$*Msu4Xv4}uFr+$ak}lN)O&i~z8YeNDehaFwqzhNP zB|!Ii$A)A6$OfgU0E9R0?oByOa62YQ+mW|&VJb)%Tmmhh1CzHm*e&hWi2U*OlhGbR+hss()0#Cz6Tl)Ld5;NbpJ+pa2ytR z5d3N@Fu>+zs-W;EcQHiI zSsW`$wSA@S+{f}eTf}NBS6pZ!!qC~UCfBqba@*OJjVU}22~>5$QmpoPGhJ(lNCl+D zSI=L+q*ojrR$pJ0bmjAAUdJ>JmXd8vuc5vf7Dv%9C+*L=R4tc`Kie*Y}o4zxm8cxD4A+yL`YSCMgbtIWVr^ z`r6jT%h&azG&h5Zl(rExoL=?graQcMzytymMQ`^{zgW+|%mwYJM1hbfOd-xdk7XIJ zmKa^;9_IeCuE4$~0NLy)!bZ)pscRE4 zW?HKrDIa;rfwz;fa&P~RAY`#0nKs?I(4@;-p}e`z2BY5qRtxDw%nU2(2M63OVs@+6(X+H#nN)G`_)kR$(<@xVoji$REkIW!F1?K zh7Ril39|2d3#WPI^3~Uwy3j$z@k`)zvOGO>@&8uf-$qiPRn~W@c7Kwsa_s|(k!4ta zR@q#r#L>ws*S6NSvSC!*!;^2DvX79R-`6Tb1haD$z#*f*k3z$YykAmFMeq~qc{{?< z-C9Q_g?fVBqN+snH~k#gw&@RxU-3M$bnk5_8|~x6H{MvgGQa1aaU=wX&$SH;#yA3& zn)u4a%U9MfEkM-%yyp`rzb@fi?bM{IywE^uyl6mnTtumREtY81OV6T22h6AheD+1hiO@G&v%)4J1=so;J!tLGJV3jtf z6g+JDbMx<&`1PJ%HSejw6$8f+-)73?b(_muiC4bFri$AE-|2j7nc`TeE>EKyv|s{X z8z}@gi1#)x%XaV}3=EI4!+i0U??!46{VH~52s#MU3~TiX9_fzMj&p#CNW<+#HASm; z_sFicp93$uRK_n1@j2$J!oUftpTu?sOw_Ok3}mDOb-LPQxw?LdFRYGbxUe{ikshQD zTt=+mHnHrbq??$e%;PGP5B7@00mU1w+R(MLKbRY=>I2@sbYV=V8BAi-r6~UL>c-Zn zm2|%b3eK-6p0}UUT+oJ0U#0UDu0rANd=!b zJ(1Sy*RsJ&x~7-%0dwSH@oIBOpj08I&US>|K1{%(OO3w&-BGO^5J=LlcX0^vdfYEk zE4dJDQ z9i|`QmkR0^VVl@#^qL30*p9#QmOTP$U?KqtH*z4^M589<8wXLiKaH%wn49GTra}A# z_xFfX5&B4-1%pvtcWF4d69;KMZi?(0WW$$Jm;s*j`s?@2Gsmy4UtGVmwXwE&O_Gov z^QR+y#Lyi`aZnX=W^`N#zHpwLe3}s^-diGY7FQ<7gLouk*D5Dkk;j9KoNw{SPn{qb zNL}M9BBJ#zf(dI=SRloh&7q$jJ@o9+L+6@9C;ee^=*r~K|K1!rrrp&;znC2Q`DA$M zjU$IH9y#=O69xchMv!fvJw4ZmNvCxrXwPD@1I>8m+~o_euWuc{tl#9>e0KfXwY68* zCx5$f>7stg$JJwiV@#(^(i&Nc7AXM*Zep)tI}$O$A%o~YB{3_eym=|N6YY1mKCfh*EkyGZTuFgSrLYimRlI5h3SzBdB24R<>Rc7NTa;8MngCVy@AG>5~EeHo73&cItp>?valD^|0& zf^%(tdTu2kKJR$q>)@V7l}1H7S&!29%=7Elwx0gQb)`fwk|lAXSAeg@uDAhSW({o8 zWR(lDku_u13t#uEJOogHq?KKv9%~^L(-At2qx^c6ml|#bW5>f)KR-_{q%>&W2ex8ce*pZ6~(t3Wdz{IDRKY zmnr}O0gCZN4I}e6S}NI3Qcc4fLT@1@83@V4zj%9VeR6Fpf7hYnrdASYdlB%_V-Jeu zSIeyv3?oWSuJZ$$-~G-5(`^ZE-~XPt5wm29?A8L4WKFp$3y=?brK~#V9*Tz3GiWfr z#Au`naF!gg8~9O@O`vfOS-~Ws*LL;D+iv3aVb%2FYW>p1jkQacSOGyY^QfOPsTz%W z=E=9de_?WXWpm{*rb+(ElW%?RJDmA(oQWbcRa;c4fK`81pq7OFzLP0Cr~hEO5I zF^%@%mJ4<=_JYR>T(&jZT z3T{wN;5fwZhb5G`fCY{6X|=Q=23GW-q2~fL(g=>tR8J~W|vwZ2DFg#sM`TF)kh%V zt|765DVLNjq?l$DjqnEo&M1QD63k<(qgmcM=`abr9E19(@{Es5qn)vi*x5}JLxxaq zxd=<8S-28uS%rv9j+IQj#9G#l2i5{E7U^pdmLH~AL4r0Ku)x1haNW0kVR>()9`)I4 zFKjSiwK-4~v=vs`Rfv`A0nIuaKQ*IuV6UnOfb&waXjNoUOES<^4MgE6CQ8Oa31L7q zMGG5tu?B8=q>44zX_g0e&P$FZamloOEiD#v?yHUu+xz@TzeuixXi*)+S=|1UnhMO-oOA<1^OE z5x!g;S*?eyRUz9xoCAgKQk3BbKbX;1_W<-aCIaXISx`sOQ>pPW2(LUZ|d9HnMBENVS5 zy6B4hCCncrN%X~9s#-`RnXI=@Zrf6ADTWx1#3(%xiGdHe8cYs9adG|H>syzvK-+x; z5-IK84tJ9G-+Qd72^`-@+VPuFTsWY$U=`U#ilU;ky&U+(8$F01jB#;V{;AVoMZGZ{@~7MWfI+VSzxdjgkdP42rR$JruqvB?`=zmd$eAQ03?IB`iG%fi+TlQce8>It%S6K z2*SBKL#>5s z*&m-c%P=;CVSdXd{(sG+`{frK&&3cVv+ROMUeTqU{*M_2$L zj0F96QwBWK+ms)n!~Fe)1CSM*SQ=S{0iup3lC_Scl*115HSQwU`bF8|8z)_ny5=OD zpa)oHbcs_tVNGHWtj9WRs@l>%8Os5HVHEa{7rQjMXSQ1=f;O&c@ep2;sazl;Q{m;H z2!I_;bfgg6W)d?LuSX)4feAxK=`*@50Ulc58Owh@X`8i#s;4MWU_TEW|{VDej!)ys?7CU#Gk@OOCQXIJIskl%u>jO2$=X< z#zIM2^f3&zcY~f{Isl}oP@C=Y-}8EDu9ZVF0hisMkIHW44C_ck$gJH1G%!JO1e}Ta zG=in))F%z-VN|6Gu*5Vq0svOI1VfCD4{fN8@pR5U7PSLvf)Z43EP|GPSsX3fqR%ed;$(m zmWWyMaoD2R50aJyqa{qrkg$_UR$pT?MqyMDVq&lD=#P?pO_8{)e1oV%3pC$BUHBg}v4HHNlv%Shn3Z3nC~-0Tb4l`p@_BM0;iFLWm{MCCwf- z%5m*%KeI!-Iya9V`?3a_JUyT(SjrdG_S9CssUSDt3En0J;$2 zYX_36UhvAA%m{R-&welYhEt z0BOb19)PJUD1Vv91{prr;|mZ#yJBkPvBWkL9R^;VGAQPCya+!K105WRtt42-g^6H` z0C1F24#+833cMB_e$qx(Oyc9fWP(5x33-8l1CaM(Y%bvf0U=e+420=G9GiiL4?BaJ z=|GQh(W@zO0UjeS60O(=OgeUZRFdxaY zHG@N;Ml7Cp8$3~D>g?3{0iSRiy>mD{iTmYwP=!S9<+KKLcGYkL^;xqIt1gu0NK>nmh<`Rc1r zymED&uMfv=_7hM4`1-Xc&RpdkDp$8Q*5e6^`<7-It-z^@Xd?2F(&8-S-Jeq*h3Ew^ zR;?GP{&$Rh#b|tb&%I3><93f~Um2Wnu~cE!tms;oQJMI5=|V{*wO0M5v?ox>3cWis zP6`L4(=%5)_mSq>nXQj%4aQmR=ylKd(mSMIWWPxPFp%|x6XRSxyJ&_Dgy*rS!+w5n1@AQoH$$6081C+gjNu}Ngh{Ip>#40! z*O2bAY<*%`xWe_!)hEKE{U&Oty!VB6qpW8abI}KQ5*yXHA+~elOB3!h?HqX)t--`@ z{6*gPEzn3os$*|Ay>e;gG|@Ij7Z}0-rL`na`In=MG_y%ip&AB_xI#1pHlXFk{Y1sh z_6aG<*(mI}j6C&ORd`sTd_a1hzcPbh$9UWEcm2%aO|_)aKZa?HiV_(0$wZ}*0Hqc` zj{kl(mqA^L#AI?pr z8Wg?bY{6{bAHn}zRyU95aVZC$Ck*!>Hh=ZH^24vg8s9AK@#}4O=#!NrW9H}#2+$MP zN()$dJ|-isMoNMp7~TnB%dLO>LGfTZnS5vuDuL|FNSS2}{KHg^5|(xfI}UomTWbQm zsrC65j;Q)2RT2gHRPb;z#}%)GWUb&=b9tbspKsKntHD0EY0;OkY?S%H?*xtL^zuPY zKm6BvG-Nc1M7b?lIm~6hj*;nDXFQs*A3Jh?g4bNUEV6GC+fk&J@kjp_HNllEe##V# z6p=dAVQG`t2f(zwuj>}^c4Q*~RWRW{O4h>(F70aFy*rXwDJO-Ua|^pygRB1x1!lRU z#upG$F&JrR^aM1fv{$S(Xxw(4WJ(s3#~KZbz>Aa#acYV%P_5AgvHNdrLNH>kIG*Z+ ztj;9zF{19o=TCW;$A4P8$~S%W+73#AE$FQ7Nh*B^M#D_ZyPH=~&t(`HUrHFBd_WHv z${#X1|5-Ey8IX}6fmJQCv_&{wWmz3mP+@;6?(66ICa6C6yBZEw`>b^~+?IPn0BNh& z9b#Wh;^la$hNPCQqA5i2DQ-zy^|8B;8yh|P)0{beRu2T)Nth5HL0bsX-#w*wUf>#^b1^D{VK}KsK6Mtks*el$nkl9mb^dVuR_`Bjp2gVNG}O7K#}+(f(3hSt>c;26}8MO79ZB(aWP0U;7BQ;zFNdcMocn~_$DrGXaT8u1Nifhg+(@Fb$q9!Wn1p}#-i97> znCNXjJupTN_J^s;ejM`4IJY8vmB(98sr=MJ!#x8By3zwE#spjgU}Yr~sl;w)ph^%K zQO!b7Rw2ZyJ$G@;cu4pxVf#sNlwW0Kd!gLFiihuexUg#7+Xa7`96q8(2w__=a_mq5 z4t~H#nn=JzvTpddzI~uvG1Q;UXf8{O0)O<^Uxrg5uu7&1j>i=3JX?{ZtpZdOoy>|f zdHBeY$LjuTI+@GG=0q41uvOBiE+HP(3PHx;%w4fN5p>CbTCtmx?Rv<=D5{fv| z?iXlC)-(*aCQtt5lTWH@*WrxvXN|%qis6tkwmqIabh#-5ENkYL$SlLPq<#Obh8@IJ(B;=NarpVbE z3Zacg$S9C+A78C@!)?VBNhthYuNyYEZ5gNpFKMD?8MiXOzeN#hump;20N}J67R|>( z>{G~;b#S;;S`fy{ynN~mahL~{-rA2*Gc9R8qNZR$ zf(370A*EnE(ug{;?pno4Nf?aB0c0>SW2Ygd>H+xNwplnBSx<7dzpT%aV1xF5_6Wk= z95U^6e!&R#oZ>H{h$*y(MWKD1#BRZeQ1u3E8r9_r68J|h#nTJ{Uh#LTZ5AO07d8vH zl8CY>3|U4MP@*~rKk4)9M44aayJGH90GA5ykbX2)* zr{~hVMonlROrZaPSM6Vf3DT0Slg5{4LT>`?y-6zzD5{m<%e&L+pfFAZg;4ipbME9b zr;nXNc*mCGOdj%gKOUc)JpKHMvp+d@T+6_)?F0B4$O5Kac8CcCoFIf}u!!9aN45Ou zNRk4F)|4Ke%Wf1Ro+hJrvrq9|sLfC&J%LuP#Ny#{8VkM!Qs&oU?pwekNO+`kzx{~r zw;x$v!g$f+_a-OLy!m}(-wgwxK_nAAodp&<0WiCkVy<8xE6d$g`22bU)rDsr- z`h4~J=K8gD?L>`KDDt!Ou{%2V{K5|!M)B+sF6~634L;mo;X5^#)-PEX7@ty`z&cX8JC>lkLyzCxn?^*)$NRcnd?V44M3A1~sV@)sJZD!a{afIY z40UXz5IXNo^kzC{21=bEG&%7ZAtiOxtT5_>(2azk{v`PIGDxObjI`5?3d59YH%I*! z6TMY+E-6(cE`lp1BiH`esm>yA_{4I~qqP2`7UKSQCu`TYE^n?~zjWa>PSyfDKVkHn z?NWQA;)^Q(jy50h2uim@?b;tfunOpNoCrCEa0tvr3p9;niPLh))=dq4yP_W6!hB5O zif;?+Sj5|Wy(s%Ku(y-ptxN>!nlGAS$fCjwanDvjL(2Uu{NyH!(KUyGXVVF!9=_uQ z5|Rj#ZH?emMxzqZGsmu6+1%i3${X=DMcWhool;;5G*zLnMWyvY$f3n3xei+1?N;}~ z5ElXqg}D*fDOq{bsnJoS;~_Ur)ijI=?76^W_(bFwlF~N^X8!=#d8MxqN01T-xv!?c z#_V#DnkHFY{;=0RX=+!Xadvvi83C;@jwabsb4Cq&AH%TcU9WsHXz@yBf3vhr(^s6L z&68v8QhC{CMKUDWnVdZG99Qi(CE)TIC3D%dCU z7|Y=^i8rv*p&Ryh1E;fIWEH7PTCiVQU%)O5s~M7Pd~J^TdKO>W&QR<*QA&iI={m%b zNuoRgI_jDLg-lHJr{Bgk?;-4Gmgi6DD=^TE4CBs_%DSf%V8x*6vLi$hW&&sv7wr;f zQA{V}GUN{toZwpMTFy3%+K*NQy<*77A_M3^aV3x_j2z}%5N4XC1gu2SAOB8ES{Z+W zFjI@2LC`rg-4FU?7RJu^(S8>HAgSANOoVM6S;LnmxhvC+BaDoDsRv4GrTId{-RfsG zC-qU^+ab29DSR-cx384nGz@yy4wAB3fcH*JiIkOEadlg4Wd|~Yra-_6gn&?mGzxIP z<-gtVGg%zOusP8K=urb=kj#6h)z|H=926`wP{%@Q?@Pj!$Pxsuu78+BFYi}#ZnAEW z4g3~__J<+CIN=h2dw-OlUw&zY6S$-;4FMtP0%zfgPa`xSWfNsu4zkE7{3$%|Te4BE zjwlQnK1OpS$LT6H2!H{&G=3wKYgnFTCuYTj&OycthD4ix=fy3Heo!GD+zYzeJlGV& zMJ)z&FcVII9l+VFl7Y}f3~pbLwX_e6`10)JnNu6T;4^GAb|%$_sBlZ*1ySSM8DW!7vI%C8xRE5~dvq3-v8txfT?bW(?OlBBOvI zD5i!N+rTl%Y1Ai8g`mLcsNpKkKn!c3(iraIj9W-M3agc}>D+A)<5v}vG^CmJXmf?} z4o?W1=`92SO}MYzT~f=df(M!yg+Li%3}lErd@F=h>JmFqWQt1RU~$2nGLO)twpI^D z5yTMu-1y9;fO4+6FwH9$<<%ZRBy#{@C#MI&dai7bHGLUUOPd;6P_acyPbTUusv}oR z!!BDfoCn+vVrW}TR9@T-J25LlpXbPSx2WXi={5wo+B#@5kfI;@EB|4I(ZebVT8jD7EyJdxHI!qAa276* z^NS`x23C5@9!!pn0B3u)xEwF1|8o7Vq?zr7r=eZz;dg=!&g;i_h%DQI@FDXSQEl2W z;`8=kOp%WO1Y$B@m+KvV?S42U@E$%iRQardT*F>=tLv8W@o!wPi|d!<=FnlFkzRwk zW;qz>ej|}IubE0i%_mI?hi=+$ZbXH!Q5BnT6IQU6cfumlvO~xv?R%Uol4kC}!Advd zB`r|wJG=9S%<%Y+_s7HeOn=d4Tl-?gUR|pcRQOS-XI_XO`Alh>xM>Rxg>Ac=;SdD) zpoO5$XQgck=Qpk~7Ml}?HY3S8!O{=Fh;<+ZQr@4;{Mx5-q306JnLq5`wU{h zGn1_bDb8^x9VCrR=3M6vk@8j>(SQy4+h;`xM&6yr83rm2tsOa#iuugsp=+xauvgIWtg%y*J}FLQSpR(3MPHlDFrHJ5Z9A>D z!)p5R`CoMkT<{7<8ygi>$wiGC%rb!^DxXjVd+D^Z8x0wlaQG zC5yd#P=iM$uv{sz!U&atMq3Q5fAl(8cYgmd_O362)uepSW`j$2pPuD!N#>D5VY==Lhz z5=3h)&y196n9J=*Mi?l&>iIfEhWqmF6rBnjGFR%(e%AsB*sg)nllGw}a!UD@6jcmya1U<9T-|1+^lC!6QQuqE_X@LB@L~hlX?q+m zD}JLKI^Ha=cCOv3w2v!AZ8k3UzC?_<7WuymMQ2iUC8Y=li%>^Q3{ABkY-mfW@Q^MY znc(U^LMf$WAmzheNO1u;&jDoy56<#1$GIBJ2z5Eq84c6D6J}H~FT6C$pEYoy8b_NW zZ?0WEvbph#Bf1xU0-lpI;#y3jvO)S-;-?Jp)hX##<5G6Wi=S1cX! zRSlGIQ9|t+G!Y!sEVfH8#X=Q&APFDvf%b3Tm{0Te{DHE@p)k9@ZilX+o&Doh&i=6D zONGfL5~=Y<>~|3)e-5m>qx)l7L&3XLSy@83=|#@mmbSkuSg6!~5q@oZ>8#&EBg#lk z&x*Kx)EO)#2;}YZt0G3a%-_Ztcul|kxq1GV8<)QOo%2^NZ*CrbY=u=EllIYy5yMbw$^)Jc zSki0jn>@`GogB^}6dcxS5tV(Sp}8l4c^C7w$C_WRZERiHxOg9mo6a&O1F->SFL0G9 zh5#Oz-2sj_d2zIq)pRRPp4YNd-;22!DP@O?9FPwT7DXe22=C9U^LbMR&MCnJ(UOc3 zX#?&xC6~yIITIsT=$)>|yAH zm0Lbcsf7dDKn%-3n9pSPB`FS>`t5oypzZ~;BPhv2((Gm4(dV72hQhzyB&y|R$iYbq zIbD8!k1@;k_{dNZ<+N>K^W6^aYO0LZYE%@rgBT6uXpekpCtmr@_}!Rk6A49j0!H_= zKQ^;Y=t9>)K)%8}p9_Q~e|40RyBCm=P)N;R&4EDItRPV$u|DSl*ZE|dPInfNRQ<}J zViePGTeZZk)jy;h_d$*KU=XK=x@AdLdV{V(q3|5n*9-L^w`oHnaHT#T^J;@ z!J%aU&@^pxk_)|h<6`Wp6J}P0v3qor3D2S%r}CjzglMCI#IYNLxn6q{JFA4lIF3eM zDH)Zm5)shJ10<>sEcRp`)W;d1)wbKrOytN3j&N3ZDx85CQqPEZoX-f-Snkb20=2+S zDmOx5oHs-TpSm-E`OBI~QDRWDC5t3PbhSXM=0xmksdQe z?mOkh)zxeCV|pSqe>m*r$?@l&efHStrzbBSJNwMJC!ToXtb+}L`pjAq{YTWtSa7~^sxudG$kWDy5aY58Q71kEG@#a@meQqQ4)$KSw5 zpqi|-UJLuB%~u#T;xo=hLQ)9CtKJvEfiGihv4?eSvby@_`qgW=7Uf>8XXWt=udTna z#;frr{uFLV)t4qU4eDz?! z1n|V9xUz9+vX)Z{8`k`r7q6~g>VYg~)GL=?nVEHU{lax@{O0=R+wH`b&)TJnlQ-8k zudiQw9PHGg@VvTq>DBdiO6Sx6#v`S?2$aBC&r!h_x#dT`X*2%MGhES>U^nSZ(U)_^ z|2a2r3K2MG(%HB&$|olAOITIQ%G8r^ZrXx$fFWPSYL{9k=nX6S{j55xemMTx`i0jg z8!|pdn2=7&SPb&UsnE?!;nen0O#`Z^F;srth~?wKlqmU|s5D7bPw_fRW5rsxYmh-$tuE zs;5}!a_V}=g;^~pIrkRbUo)B|=h9-9tsvr*>9R}doGnM+8d=dCRJ(-|*98!|ki-$f zN=-{OjlP1ETyEzMyFP4pf!k*Fa=*k`3!4};;dVhrRgVQvW8n%Yu0Km0tLnNq;9!~P-nN4YCxjiV+6DDqrOT6 zTG)=3Tq{9fpzz2ZBW8fB=s^^Wc@s|n3gh59V(c9z+E)%ZHdBJ~xX{Saqt|>x#0Xb- z!AZA;it4$Jq8fTT)ar5-WY{~!;Mz^`y%AYS0l_>R!aT<+7KU{EE>VY^)5l)<`cL~T zkQOdXujv_U+q9jhxYWTB5nqACfTAocWt99~s95-Y>QzzCNPVrG43<$QAGfpWHW>Kw zZ4Gb0ryHbsS%k~poaS#X_J$b(6YU0Eb*GGxJO0VNux|ttCnd3hkP$b-^>|R5r>t>t z9|58d!;8cTZjo1GGNLj|4SetsNmU_j%697or&w-#Z9VoJ(}BhKLkZv9jaZIvU70m6 zhQcG8WG^=_K6gex1g!;J^Ww;B8Jfr!7~C00(6Af4FQNK9dC3X`p_As~Gp! zt6^ZyxoxsLF{U;My7x%&BdTFvg<2R@4(}JamyX9IU57L}5vbnlQnr-yo0m@Wspn)1 z?;Q(d6bRr2VMo^O(8}{8aW%_meE}-?c}DG*bOH8~or^*bpNI}XhSkuU-1y$)*tz2; z^?W!NEFSx-nu0I^Rb>NB#AcNB_nMbpoWrgemTaInZQJ30x|b!_SD&^Kz4y&7L$*)GB1d2h;43{7M9_WFBvw z(9EjX%Q#^O(CqE?ytM*(=LrX^KO;Ks)~z}m4-Fsd1|42a{{oQ!eRbcEy$9Tu14c3p zgtU{atD#;OVl#S38gJu3oeKd;*^*XxM_&JFS%TH*+(u&JcqKj-F_G1YLC+G z3ACX2-{Uy;<%kHX&X7H}vcp|uQYg!5owzWZWYc(_bYM79_6eUNVTIsiFNjG6bYqJa z|NLVJ)809eow$e^Q$BSQpgBj&E%D%=O$XxQE{2oO%AS$0vvX;wQ&Wp5lXfa;%N8lh5m>9ZWT?y+7b{tsu6XQ8ChIFq{#@ zCEl1VCN2hte{^_t*5s1j`e6}CU#(nY!u^~FIa%Zbz@&m|MtysUgPLibBiP^1C%~eF z$aKPJfSXK*Bdtt0CGO>?i2Z7rq;ul!a6zq;5v_<~(d0t=D4%e!Q4p<2BrW+23T1N3 zyu&94vDFk6IZy#^tLU>S_>oyLu^uzx^a!DkoAH)#fFq~|fB6hUU>egK-tr3H#AbFI49ANR&OOy zq%{%!;KI31Myn4U?{P5Cvycot1*e-KT8JS_&VC*4@JpMIPhL93zt{Qqg$#-hf`+^W zqiRelouLR$4;FTJ6_(%T>L&!W5CbCqdkwtSD zIMk&H637O|oXJ6&;QK40I>cA@ZL<)WNhs%BCQmLAHb58UoO^{;IgFw0K37i2?+nq_ z8`GEvKkJQ`K#No0ic?8|D?N-eDg@C$85LdpJv~1@;*LyEW|u%EFC|=t+4}#(F5BZVyn~^rZ$D4$GDsR>xt zZoo$8r4H=$-|Joe|DYaBD;4+>Meov;aS#nwmNk+9)^Zabsx&KGZ(mto@f@LO{+1;6 zUB7hw4ULUNvhvF2+N<%BXR-@t+!$b=_a;wq7xafMO~k=X07eP8Ym7EC2L(jK{7P{c zngb-qUHdsEEtMI(F&HBA;Cpc_2}H#FdEdSODhORCBFq1r`wQ}$HWPZA3-+%s5M<>pV^x7LNqY)IbI?15*SrDYFa_Ff``Sqm{cRLS_H2lU_5xE$7Ss0BtLLvp$8(-% z3(jA-$`6xX+S*v-0h;jAdz0tR`BP>==U8oYnWiOxy$?Ys84_W;VGzJ47~OUnc;2Mr zGh-1J^;NVu?sZL^syK17g8^epKXYG{J9T^I9~61}u!=~W-oSd6G$dC-LiNl!Tp-h; zs*|BV+hqT569buKC2`D0lhY^u_SDJKCzu8eE)mI2kiTa%{3x7m8B7B+Lvs7>o;p#; zU^v@fRyp_#h;(dF{6p((G%dY|=oqH+%S2!d=xP;c8B0Er{Ql~^B?ggc({A>{63X4o z&Qg3dZdN_g&v7%Oy1OURBT~Nukc}6RZ>$+hf;4t_ZR8=mA^J$ltC_tShRjds=yo6w z&Plx#SV(DmD{MNhlkqhyPmsibfEw7SmrF$vgoZ;%{^3;bA1 zCx1T{qXFDu8G7IoZ5u4N3upQ4Pl9xbrl2O5etKMaN|gp#oGAdJ(<9cvQo7dwc_+4L zy&SM5Q3ZMdy|PWOMl7Ux_($L3I?*M}7ZMAEU{r5Ai{lL9riL%-g%pc4;aZ!bt37;b zSVS@_h^+1bFRxtq8ejg~Y5>jojbot4Un8~CY*aD&ZV4*xARKmCi2Hb#8|YoMnYT!9 z)4_y}`JKt5v3v9=)12V#^6;;Oj06(yX9Q^jp_QOz^QQDQbEzfq!Pe9PcwbHn|cPAuJj|$<3BF^Ezc=p)YzlqzrXU@KG z`b2y>_ctfcbZ_uJ|I-tv<4zV*WV+xJx;t9~FNcHHkA%T3;MT--%m=!OS0Ya}gX>;o z5pCX1k~!N9G=HNit!n#|XK2FU`F?DyOtjVW*J?t37}ONYdKke>p^meV1T(S#x5&x? zro|?qh1c>JE}YgLHwR9Xy&T>n58+xhq{d=<{Jn0Oh2T@?ugoC9F^rPul_D&fk?=w3 z>=evh9;gHmkyl9z<$l)$kC9nODs6)hIETDaUF8FIdtE+?mmNRN`ygh^w?oo(;bzrH z&{!I3V1RjSoNZ&=CZu+0*a=5y)1bu5OW*y=za+h<{Zb#MU|Gau6cp7nqBv9$8^XEn z;Vd>}lzffn>?f(OyA3fzJDp8FJIc`Q z6)P}8lz~i~1M9j!Ym6CuQoLT6GZB)#Fw(lFU4mc%Zfsj@dt25;G3-*-vHD!Af^GPq z^bt&C<@-}-NCOS53np<=eoB4I#g=yo7R{cP3C365GeHGjm}{thE?$l0WC8n7Ua z6>PRT$8vQOR>p;rq#*NlFwcaB$ou(mBz;zybGz~CC4jF|}Hw)O%9Rr46 z6nSZ_Zf0*&PFqcxWm;T(A9BvI?pg?ll21clI4&r=ew!o7s?^Y@PyEFDnZ0Kq_JKvu z0tg^G+5wnL%`JKvX*-kaTd({TXHYRU^FWS^Au5sPo~aIRtB*_Vc$!gFs!%(>Rw}l3QzbN{TlP~n;7whN=SAAsEI~g7#~5k$`Gp`GP1apSE_qL=#~Ngq8=Pw5 zJ-tN6O^Zn}8a@J;#efOMtL+evH$CFJ)BEqog&5MVw?-&8!9*CNLlHmQMov;r6u08Z4W5nu5hD~~ zlfyq+B5W+ z+ljC_&#FBX_GPDPA#wG-7)J5myqa%;c;dq4H?HvW9V#Ndyoe#{b9^d|Tu-Yz674>8 zRnlq7Wbz)P<93L+rj3Mf(#HxL0?L=hJdl|>K)RQ~VJIp^NFGntg~{C@xE^#pF;_pJ9U z-*e9QEcecD_uB5$9)G89>v?10mk#p0&u`~>6OWOt=Y6r+^J?L>P*#t?HE_q{Jg*L} zh2!Dppu+zU9t(d9kB9p&w&rzk0_HElgW)4^Z}>7)_-&SW-VU%D?g;Cgx!#%QIrCy? z?r`Q+&fMe71J0ax<};o70%!g>+=KY9fc5YzaA)`j=l+Uwe+#a_e#aJ@-!2%#d>`B& z9+ryLLhhQ8k zU;S`*cs^8mE{F5rH=)w;Cfp0|-(mAP0aAtDJXi-m29@t0z%lS8xD37rm5ybd*8XE~ z4(99O1o#K2de|M$G9Lu1;6mubL5OI2m%*v<>rnFYJk;}Ef-0{uCse8ZFd53e11jB{;AD6+RQ*2-B`@2ow&hm=RUWO-ho`~@_(^yTd<^anvm{RP zc?nebn;jp9Du;i-(QscniS0)bC%heV)hV8L1AGP^0?&!r^nMW@fcblHEPNcQ{Qm(} zuRC?w{^uyD=XSvv@LZ^RyT|c$sQguR(-z?hsCe&!Du+kl-ta9r4({Az%b^yk9y*}X zbv8U4egUffegtdb%diq29Jg$89DtIWPeYZ@W~gw#g*(BWdhPS~hKj!)9syUtgW#D^ z`S_f(e;AI({05{5yo35YZvi|5%HRD^a{M-|hZEP@dg_C7F@F`Rd|rZxsy9Aic_x$` zJOP#79oO0Nnhq6j0#?9lU<14#&Vk$a+x}z$tj2sgRQkW{_*1wW=2u}ed=Ksgo0GOY zR>99<&ci(1W5Dxf!wcYLa5MDb@|0~q8=%VRQYbmN8A>jG1oiyq;4yG?+O~sv@G#6N zDF2^;s)rjLe*h&1Pr-fQ>rnCUG-$(BLB)TZGxxzt%pZX*@HVJ=dJihxL8rQUgnI4@ zcq}{(&VzTth45cc>71Lf_8TBY>U|F?-1w}O=S5KFwNUY243*BWLbd06;TZTd^x-Q| z>DeP^^E(k%VV>`pgo^LeQ1$dJxF7rtl$^f-)s7CMGE^=NQ1PvVlDqZJd<{Gp^LODa z_@r~+cgU9SEU0iNK*gVdYF8IK`>#Xg=OO3*B2>D(^)^4_pz7%usP@(dRS!An!^@!3 zcRSQ`eg^l2FFO18pycg<4L06xDEas>tbyNv`@v_S^6^hN6Yjmy#@hx}9_ygeeFc>N z?>asT55W8qJRWYh$@)719*ub;oD9DKr@`l7J>2g!+m6~{E#?hS{%(ZF!YAQWxYy~n zeik|=p`LdcJP6(dN5co9>i1Eo_W7>kVQ1KWW+7BPXQ0aQ3TOVF<8x5?`_P%Le}o5P zUI8WF>)~v;87h6-on_;j4L^ms8%mzvf-~Tpvu(K3pz8A>xE=f}+zGx4cZTmkS0*Bxj_#-GedlDWAce}{;tH;89 zFfW0Mr_0%&19!oEx#P7^&%Xuk51)mL;hRwDoA(jVYlJJHo_7u06@C-$0e=Xq;G=Ln zd>1OdaTK0-JRAqlhCaL=DxUkH{67U%j^0NtkASjY1P_I2cm(`7)Oc|Rl-xfERo{Pr z2g0|Y>SeD>Y&kE0N>|SD^NtU|YV2QuYR3m$iY^E1pq_U=RKC6h75|-3N%f-lBWk?4SW$QUHg6#9S+Wbl9P|Zsqk8; za(e*9`-48Q@94IJWhoR;YDx=J_7HA3op0n{0~&RCw+%!}aea1ibd&xS|B%c0uYy-@l5 zEmZtFUuETfmgC7#@^KcN0xyS3|ASEBx4YW)qJYR!{!u#RA@Q-i_d>5)-7JZR95WE6zlKEPjt{*|=^C`#IpyYO^ z>ui6144jU6Jyf~h3e~?p19yU>uD9dN&QRsM2bBN$Q1P4&74B>BX!tms33vXI^}h&C z#(Wx_0dI!#{~|mL?tO#J*U?b^mO+*G1yIj_814$6f(OAD;Apt*m#zJ7a2)2bP~|np zaW$;Kd>WhzuZ5DgC*UObU#R-4z0u0mJgEB4!9(B|q0)ITRDHb!m5%>F)!WWrvE_O& zR6Iw+9bhx`;qg$<&%g%wSr~&)!_{!+S8e>CgL5%&cINHBX46v#Ri52Y<#{DkKAwOr zaOazB`K^FsF`ovNug^l2!;hiL<}-05c5F5y0yFM-O(bP zf|9!iDEk;xy$wMheio`-e+McZk2<~rRc^c7V*8;(p~BU}Bj75i`aTCLowvgU@NrlV z$9}`g*K*j7`NQx?_#`|EZi}!>9*=>N?{!e}buLtUxd)DiPeP^dJ-8I^f16ErA3PBA zMX(ZH59RNtum=7SDqVZsZrkJ0unzMYcsRVw+208j{&&v2!#Az}I>(i83hp0<3ioZe z0{#Z>1*hF%<)<0yd8?iIY^ZX&97>M91AX{AI0tHQs0DMO`hzr7ySxCZo!kpm-p@d# z??3P;SaFvPw*ppSz6ef+x4{YUd8l;k_AM(%bx`ux3YCsaoc--k<@E?uz5E5L-HiFR z9S4ts^D&l>st|?IMbqFqkXF|pMAUqKM18xs@{l4`#1}Yz8 z;ovCh05)&SbMCg!d*=sMZt8w$>wgVYIz9rG-ycBL*K1Jq;NNHccS0ZYxv(8x50#!b z;c__VN3?Z#1w2UZQ1x^#RC)ass-N8Je#@~?{>MY5e+t|k9t%~D%~0W1LzU0@a16X2 zR>N<@HSl>TIh(iH@?5C;zYnS%ya-iJ2R>kVv}2oNzvBgt*E)XR@z;+3aNPAl8&8$v zd^nc)Pj)=b@w1M1IzH<7isLRnw*6o=RDG_1%E$Ro@!jw2e-9fm@A8m+?(uLm<|I@; z*TYHh^HBBobGR$~FI4__`H9tQXG6(vEA(L+sysgd^}HM4Ja`}64SwjSR&K{Y)k_Uj ze?1Ex4OhZyc$u^R9#lL}IrE$FaLi+VX2*f)a3balpychFumipXm5$jzxBYzw+!u2K zs@L4}h)CKH+#Slw4fp%y&8S!%+TT zf|BFy9=79|59NOuJPZyx^CzM5{dKq-{0STfpMvuDZ>aWh$RoD=hTsvHFNaFsci@rm zmv9~YH&nUy{nCyTm%+K1e-7uv-5$05bUUoV{9&kc-U9X9pFlnL?@;mY{wr&)ges?I zsQA}F$Y0dXKei~ zgK|F$X0~BGfwh?T{Hm9BH)4)6xJBmBBE-{s8rIP-(f{ID}W>CDeL^Ix3#HD`XunYa19jelo&kVl(_ z)8Qnja$XDd+)d8?JlKKx3veZT9WIBh&)ago5vttpg9pGDpyD0%2U|}E!y_?IgN-l- zRj*%$dfpT85cndjgggAv*7GE&cw68&n1Me0G*r3Y1tnL9{mIJlLMZ!9@G$r%I0x?V zXFESy2xnlv97--8fqL#+aC^A#3w9swU?}-I9PSNg!pX1=Hoe{=2?FWdIJ3M$;`Q2xFFC&Cw@^0m(^w%=`nvcCWx4ZjJMkH5ea z-1SvEFFzfgi1}UkVc7YaEw`uPV$5UzVf)RsQ1yQuRQ~UWQ{dZh9-R2PmESb1#{3|x zg0De6_rN#ocrzPHj#onUTkGL<@J^_3C;rpQB)x_52;wZQ!`pAQw^=b_}|M{pASD^$7;`nS#JY&aS7TBv%z63X9Wj@$jm zx=)3**vH{P@N%efx)rJ%o`yB>kMLl)*MDs}O@=bBgiGK?sB(M&Dt&*4190#6tUi1W z)boD=m9BT-95}%nWy+x+9*y}{D0%)fTmcUrHOj2(t%pj-FQD@CZ>ah|W}8tao>QR8 z^NVmk{1co7tG69x+FKt~KCg!=|3{(9Z}fJf%s4m&c4D3f_k~x$1K}<3x9}m@0l)I0 zQRaNWzv0!G7qVHa{QeQ{2S@KP%Jfg;pu#smxvzps|GBUk-U?gbJ5cq%Xh)l$GoZ@x z%TV?Cb7%i5RD1{QG|H6URL3|}zCHtIz|C+T95s5BcM@!bs;4hN`MVpcp8p2x;f_0x zGV_)BunqGiFb$uDGhxdvwmdI}=VJZ^oDGlPb(E3&Pe7UPfa-r1RbRXAZtL%OsC0Y=D&7~M;v2umDAS*|!y_XiMhd|U@rzJG#q;SmSe=f|P)eLYlu zAA@?{&Ij81nGMx0&x5V-St$3KgKT-60@WX00C$03gKGERf+~*}pz^cNSo^$2C^xO&VXtkX{dVr zEL6RGADa4v8khE|9%b~)TDUjn3!u{bIVkyl3aXrUJ#v)MllFzXVIBu%UkA5=^^UWk z`suk)@o#|2-(^t!>=VxXG8~Kfs0p_I+MwKHQ0d+X)t;_{D*tC3_nbJ&jB^X2+VQDS z?eq%AJE4#HS5W2n22}YRRAcMC4XPZ@hWo;spvvt&I0pV6`tVJt`q{76rsH_1dcGK{ z-E4OJmvf&m$@WV27(B4f z=65EP+;&05e(CA5ir@W{NGB=}_fxf-|21mtwvODxR01u%6Dt0lrrGkE3sqlPxCCAa)o%X` zRS$2$WpKA+Mwxw~9{3~7e}Ky0jnnP8_6$@#?SHI&ZVg zUcC)J8>)OxgObxPK;`S#P~*$KGpuzV%JmMo96ko+Z(^h6e5m$*5>z_RgDUqM zpz{ADRJr{ZO70GBvgT%}a$gI(;4SdWaL)y!ybSy{RC!KVXxRYOzb%I1wEU z{S;I=k6C2f&1|?6=2dVz*b9}feyD!oI;ise4OD&X)@pz8C`7TZ4_3zfeVlw92a)$SgHD#sm{jxy^%hd`C%M5ub53ss+| zz#ZUvsPvo#Rj=2<`S7Pu^|X8ID6=k>fhzA`!sFq)Q0Z)Gv-N)-oQU}@sPKP)D#yy> zt^U;mHICg4^}N4A)#GmMPClU8(OMXTABSV%Yf$6GZXGuN6QSgN0aU-V2Kw-3sQ%;U zP~rXpRbJb7T6-U=9A-kbgEpvi#G(58i=e_?4^>V-fU1}0p!{vW%$9dGR69HcN?tzd z?0*R*XFHx?^^SQ^^>-+6n>K-K^2Q1OjD$)>** zsy{gms+=Bzd%-_K*8e=mG}LphhLV#XI`dml=^MMs_Iq=obbW=jY}^=$@%!0&3^|p^#*UqaRM-=X^V?YgXa zE|i=thpN9E)OdCg^x=b0;a`O6H@54x;m5$8F}J}5a1~VfUk{bPC!zYkf5Fjkn;zR< zcZFAuV*U>Mwk2J0+b)ky*!DLBB`3E*rSmzc_C0o;m4g&qiuqcoe)v@=IXJ9;lsSJl z6UzT1um_Gy+V*uJlssMyRqo$|dd{EWZg8Igo8BX!@>T21^>9zjjZkuS0#v_~fYLWV z1yyc0LDl!YFackLs`vJkm5(n%^(RlkdC*Ib^2ok7-*KViV#ij;4#(w=D;?K3c0-LX zeU3@TQ=R*e<0i*59nXadcY!m1)bZm`?d?-g`FQ}&gs(u=>%>8;2QPuDhtr|_{S>O6 z-+-!@_ux@*@~KuXdZ5bhN~rR`8LC`=4JF@yfhwQfGgdCALG?o|Q1aLdRn9j+$>VpR z!aojG|1Us2Z=0-5-!v%uUZ{Te94I-z3ab9T4OLIi!%1*S&i0q5L&?ouP|rCiKgzuC zaSYrZ^DMX{Y=j!GTAckdsPbIp7<24}s^@;FaA~M;8{kgxZ1^E~F_heW0_r(eL;1fR z%HPe-{w}EScSGp|o1qW)8M6JrG^l)bJDv^IZa)uI&R>U;`(HWtZPwd*Jrt@RnFCc` zNvQGS0(c6%9oE6UH`w}Uf(@9@ht2Q-sQ!G9jkX?VL-j*(SPd_Qdj7Yd%Jo@iejBP^ zI&_ouKMhKrPKJlW3!&P}O;F)qb{un>?RV;-$yTW(jT)5L2Rv$bLrZL|Qr@@*tZ903P%KK6%dHfnwdcF^jfUh|B zF=yHQ)j>Uf1yni5VIw>XN)GRbD)%>_^6#H*-5a6ChmSzz^G2xj{{^c5+T|Skyn~>| zg}G4e=S-+@S3tFgJE79~2vqqz4^=;JL-l8epKG5x1IoO{aXmZ?^T(m$yA7(HKMd6` zc;{KU@}c~-!cmZB?NOB8s%`AP$ko^_=bD7w3V1Z^QUl>{d$gnS*R$M9 zX7x7)v*hq2@KF5C%Ex2f!k=<&-EYd^jB|T{@o7yZMaS(zTdzjxN5jw zBiv0~_i{al`7L~Z2|ms>h3jLO7rJ=9g}K$G?LPd^z^uP<+%Mq%Y_1lrE3CD*i2E;c zPgi9A-o`xD-OJ)6?kl)faP95lMLfKX`1=~}|A4j5el7Qs(-YyzT*2Q-+&smlK6XK1 z2|I|V$@yy{4(UdhVCTcbxb*jNuB))q-?sSuti3h=zQDi7VRsbnL);_I-tJt>iK`9s zoi6U3u)7WOUYM6TJB;2d*stRHkW2qgjz{6=A$j2MlenK@Z@qnRe+;(?*l9dG+4*nB z?g8v>=X#NQpG$u?IqH5TZU;romtc1m*H5wg7krm%XZ!?zv$+3>Gw}GTA z!nGUM-?;wi0=fEE3fJJ`2z9(nCr{j z&%ymqE-jyjeb^n1-(8&l*)WeC({zs^-@BIUQ0Mjn_v$OJ!+k7v>QDcO-B-90*mZK< z$o=EkkA~O6(!XC~e+d5m1;5F4CHKMKQsUf?>sjoN$MQmWDx3=&TpHx}Ji<)De7X#g zzk9eppUcPpb@0-Nn{KbfUVpDdp7~MiHaPQLxP6`byRcgbXL3z+ZZA2m<+(rR{%QPt z5o!$kF;@lmz0S{E*zNBB3;)iw5%~Hbq9N$|6bf*#rP8{LSZPE!U?43&$}ojz=9U;SAh< z#PuN8`Of}BJok9g@G^WDyPcu_)?xPp?lqnt20wz^OzeWc!z1@e?k76)qxd}qPt);# zv5V{5n2*H$S8!YG_vAW^>qh6k0sH9RpRj+B>(ltr-ze^<5&m%Je`ois_b~6rb%OQg z{m@ak(D|)|*AdSsuBWlTh^vA7P8Y|20F=UzQ&nf$NXX9*`DiHT))7+lJJLcr7-(&64zh3mp*(C%s~B(!M*|WM8Z4+zYZUU zw{rc0>s=Of2Xh5s-okEw zt{U#AVZRD~3%BFBujBeJZo%Ig%spK1a&=;P8~iobYVNl&`lb4`^e_jds178l1m*j?uCAA$Qi zKf61=0>6p>Pr?`AN4fMDv+yob70Zo};*%xUhw4{PBS zxUJ@T6my>IbKGz1;&_$&W4ON@{uMX<9mh4z+@YUg|1&QA%^|Ke-0#Bu^W47;_ayAT z+y{S}PkqH1266j1ZZ|vkuVVim*ArX=xK+U_+)g0QD))?kV7C`;85gDp^QXCfg84P5 zzk9i2nBQ<=PQx50%m8+0W7o*N2QT32aej8i?OCoGoMz#E4E7gcZp5s=&sdoC%6{C& za=nhb{=UZjom~2>bJYD?&RzHI`iH+?M(nF@cXNLY{1aEoxu1sJY_1e> z%)bODaGOBbb6xnK!#U1h zAATm_J`?VSeUj@Jip>4}6Z>^8o+X5-<^Jznw>rDy;b#f+I~a$-U%iVzFpK?McXCa3 zVP*FX7p5J%V`ahL*RVSdb3NB1nE&GZoCJT4`8Mp^iT}&60&_j~_jBFC{SELc*vs`t z?xTOF66P^17Qyj^jsE==^G~@x#C0a&z7L1E4(9$Y7f%-f2C$pYbrp79&VDIunyI+v)3Y&xImj+@6T z{>4ozobQrs^v5^)>l3-PiIkrsgW2x2@qyUz5F>hPYv^2LV{RxsbugA&t2iQ#sc6}S z$&*LFY9O}J?~40_u}m&O(JExe{6$SI4T@OlO~nS{e!4fB!f533qL?Q7y%a+xo=kVg zax&B2-h8&1DkZ zIe&dD>t_e!-HF~ryk`b-MQT!gwWGa?+PYr9X`W-k-7E|kSS)rHivx=mXVDT^v^k5m zz@pPxbOsjvSY-XKjk$QhtZo8v&%{s7Q+inv?#BiPlL?Ai1wgJSOIxtXjg)3GnO;Ad zlxK|$<~9zR_$>1-e#@*^S&^;u6Inl%&e1$<8FkZ0V%@oT#>GWJ;8r=a(hpr`_=%h^ z;ZeA*cpoxMs^ZD`Ks=Q*RkGDFOZLNfvpi-}>whu+WI7u!N}hSb3?tStl@~2H zOoYm#a&~3e9H>2v=ul6r-7Z`%)=yQX(ta${mshD|sgkNATN>IISNj9`Y|dXB8;YB{ zbRKX$p{addwJB3tNxCnU*c9*as^+w-^QxM&azf4Oo; zwxZ<5iE57VSXQ;CGNx(vo2F*UHkQn${oa_mta`s9TkU&Qod^o)*%&DZ7)~F%(bvU6gh3tZb?> zM+cRQr__l7j{@c^fee z4SrWT-9He^*jBQvz1fyTAciL4S+Bv*=DTv4cwEmdxDBQ=Ihvv5xdKmS*zy|M+L{~f zzrMBdSGF~@H?%Z$Hnp#I4lAX&)YjHw?jjPO9$k%)29nOu8dAY{h%;jq{j$GoY4eGG zPkI2w$IsHLDOH9~Mux1bvuu9QrH9B&^U7|_=Hdf|D9o^)9gLx;s8GTHUIT;bP%LLV zCNsc#bSmV`J%~)39-&9pdZaBRtb-A@Diz0jd;=+EG)kw8`e1d0+`u5il+nb3ywIky z)nQ!008%W1-RV?Ld5tj?CdpA%eIdkJ#_cZkh*?UZE50$!pgx$PL)hRaf>*`+>M7E`T8eyNFd45MO2pU4GZaxYe9HQkzL1P{_Zuam5UJM?3{v%@ zy@o7xov^w^H(jvRvZ7KV8D%gyYKqs8Lw%yth+8qBJd3JOveipTBQ2pvtC^V*kO3@} zPSq@3wq%Jnk5uIct7u~61%=NiS!z@q*N-NTqDahNygnZ(x4fBY_7K=P%gcOq09Ma;uS3L5PfsR4}^yN!=P|iK>{VWQO8&x5a|#LS^En&1gQ%JdJ;iu`qVgD+co9yk^og zm~g75Xu9J`+v6ot%#4^yZ7S0*1RhmciI~5zk#4FXpIh77g-BB=_4P4KsDPW|HM&!q zW)c(csTqvNGYYMSO3CAwjswNKi(bKYEmB2k*6QYs%HTZr#Je*a2XlT~Q%jAR+wttd zj2*%lTY@+hFk_M(r^nA`V}0>@zu-uRJb);pX3;Uaajh%f9g{XES!%;z9^A zfCgaNNHil=N>4&VgHlTQgi3d7M|F@$M(=dL%7*%3{>u=!VWaXQzcGJ3wO?bOZe&Nx z7E=G|T1gR|lIGGjj3(05Ae};47yw6$|h z!?Mm+Te^O4GG=-bB{>|e$$6-t_^3dsthAdVF<=3Ms_IGSRRwm0F*<~jZ#y)_Xnkq? z)lfd7w=IZ@#BWf-Vv0GdfiSyqfNrqgv>;RSgE1;87KoXVsr87uG?aY8^m`+E3yPJg zHB*^Xye7fyET|&8JfSH!t~ng*ZWqwh{@=q8ZFIoQDLI!%@3Ch%&f4NaU<1dr+3Rb7u3{Edp{r3 zBOXxSNUSnhSy5AaBnuRU*@%{JG?1H0$VtG$X?xiidRQG%aWmosV|_M0kT8nm4CZD` z43dd{b)6g2c@4dcM%3N_@nuK(2z6z-jed=Nlth+&Ye%;S#$wMJe6x1pM_r;(G);e9+ZRMoyI~+XakNBFJ_1|Y+|7znaX^(3 z)ffq1NHV3jup^$+Y@7L!)pu#iUcr;fqsj zBD2Xw#$EE9&ulFPYnI7tNhN9|qN3tAOB{Am<3``8voahR*M>Qnsja%%z(q=8Q>te$ zO*Z{-I^`ZHM|4?Qn~JJj0CH3rW>zoT{j;*O!C?Z6hMSP>NanCkjnvxuCD zYXZo!9naIORZAUqvRUZFv;-peKuD9d^917L=k(jmjnM&NM$Hu(iXR&oVj%V%C4n?vYVfsfxy?1A4{bZTY+N2^lo0H(UvdTdLv$<*4u!fTAqf?XR3bgrfi@oqY`I72Po z=uzG5N4sMba$)Ej!8xK_lYz3H+@R<++SX?##@(z)CRl{hSdSu8VW#1dDW*1NA)WOf zRgTw~c3KV!FM3n3QmygB>~GO&Q7YDxUD8r4K?ff6%BI`KTesP;kj})=l25V8YPvL( zq*$*6Oko)tOf@mOYGr~g6jhdVr*Nf5Q-v9%D`I7I?kzrniqgh_*7^p_%!&@lsYXT` z+{}UuZB;a->DkIa!77%r@WF!A1Y07xSYPed1XW?WO_o@n5#ZqAu4YHBjdj{avQ?s) zm=*_6yJ;iHwpkWt&u)uJU;!Q9L6Jwx>isLq2&GFZ%{7P4X_HW62Q5tmmA7P!L z8W|h6AYxkZx8kOTm1UhBQ80T@#aRnF|GpHrr#EQ8 zDKZ&nJ!{K8)2wK0(UX&FJ;p1V4Af#&O}j~3<@gzulC;zetqGVz0!-!-XzEl@y`8=J z<4?_}b2I$$N&VBOe_{+tGh9sOG=)d{K^=6+QqHX z?py~cWJ;D#<`UF~(Qn+z0xLsi@m~#@)pwUevxeaIW|~wO{=(=^g|xKnQdUo*v*|HVbnhGl@Y8Vgw&$tnIEq8HeG?VxFn#oswoASCMt)6_l-tu!7@BwiLrP zG%YwAopEqu^f{UsD6Vi#d|2Lw`6w6Mp1~+nG(Gf|<^jwAD7Y>7qY0RGY^7%530ie# zl555|(^~Cjj2(eZ!%>H7r`GE^Jfv!8;BvX{$r~k-B5^a(NSaNp>mdUerAv8`^RV12NP4u$bPJ z=42a-vZ?+^1Z<8eyecPR%Ty45j4XDY7KZ&mwbkf8j0dHBR&B&-Kr_9Iuv&XSvMnOC=V8q!nPNd+bD0gK+dKX*YpSbEGgh{_8YHomWZ>M0>}; zx7ndB^SsDDW;xdk9bSe>l1)QXI4KXh2{T7jyNL)!@JP2OS|-}iMYR{K?XeSKH&LAw zFx6gfI%=%}X8MLZG|^)7(fYSXEdNj;P0(joUy;ifp49wS2_kX^Wvuf!Z<( zdz<$UP`2Z>%R+WlP}yKrBhO-mR%VP+&0xbu8nbonS(s5b@G6tukdXdi$g zYUVQKqgwc)QQIBq6woJ_Q7pAJpm%Mwt^He@~>2N1sZot-Up;g({473Dy-cZxh zEqLT8WEbkd`}lGv9HlsJAubfrQ+WYH=TH=%Rz)<)t@j%v%ja%p?Dk0GJ)x%-yT_}L zb}EBUx4~4_&xjGV+T)mJd1gdUksO(sdYGOEw+lIXH^t~lK}ZgHxzlx0 zdELD|-&Tm;ilNSdOlO_gOgRft2FHdKwdqsLGt#}ij3qqEuX5{Sv_lt`daUTFuJt>q zgfdYxduNR;kz`b+5!y{)Ep6Hk+9X_ENS$fonRGH(KrJYNAIOikl6u{WsnsG?%PLqs zWy`L#a_O4diN`bjrpddVJOsLBM4d4st_iRyo?%H%CC0Ptq41I;2)2{rKvd4t`Ev7* zc`3}^aSXk4(Q0pjc>zRz!_8WI9y;P8No4C1KgHvcUnLPN#NbxJLs2w+*D&Y71WSs_ zp@w!k37w*#oXi3SgF)mRO!?@gs1`K8LiBMq=yVLZI1cSGm!`A4&yuGFo^&dNF43G8 zhz$&nYEasVJQq|Ho0s7Afk*+7>;BRhj9qb>OHv|jK2!+Ja1@kqMOOc@z}Bm6p*Of?#upH@1x-jj+A)Kx$S5f zDmI0jl{)tJ$YyJ!+LB)>4&mXmiS9L%EGHfjPqX&jrE?ZBGRMnUlufW>86JWwoM5XO zfB2N6rp_=T?+)l!b4m=MS{oa*8)PmP3~63b(EKe@R;IaY+G3Z%i$rBBy_L$Gi87ut zM_h)*%K zs(Yk3hxs-ZCBCIFn~sWsEg}N4mX^&iJ;brF$D&!D*+Wr5YM!iD9=rwe9xrSz=)D;7 zK+j;e2M~Ar8o@B1JT*89?zSULTq-J^-wKXon>TRG>y2`@?-LcyWxDgZ#T84{7rg37 zIpz$jhdE9fn`8WDTIW`u$V{*@=5%K_C~$g%eL7Q#(rgP$xkcMXc9kpZEu3GN{uh$x z_H${n?kIuZ+!#GbQWT1ZNNtOrm_{Wt2Oc?dvapd8EuGZCb`^{2D_ZI+imaNgm0vL! z^%(Ojy8H^N(}nOWRz#f#CROxIs@NE@YG{cV+AwsO*SzLa7HBLj_5i!pRfFSQ%Fc50 zf+mIFUWj3nnI4hVknW9)Pn-9#Z%yL@C9H^%7O+Sh^^`^FaGwnpj8bXmbYU%s= z(NY|KMmS7gd{m)~H$+f1YYvK=XfisfTy*9#I9Eyb(^Q-yF`kUsj2Ku2XO2rw0~_yw zn;A0b{)xiQ7&sRj?>8?z2d@`}PIjI`X(5OlebssarDg=C#xyw_gM=px6DnwS6}`$9 zx}EBb^BG7$;xVt*ONC)oq}l|rowE`1i`6d@{|pQD9yXf zL{KP36?f<^$u4Ul?INgAd)80hoM6~&Xj`x-tk(F3`5K6=BgH{m4&F42WUVfe2lfeq zhuW2ciFUjQUW{U+GH?&(4Z|L&wnHPMRnjX5zN4*l#Cow?-CBYydJn7D&g6Q`M=y#> zAP8W_v>;Fm0u^3y^;oQRN&;^xnuDLFf0rU;rOp^x5oH$~y~>>T za!u2Om6Vw^ffx$C?_T530w<4T3P@of`s%TywUh~w2);04UjPX!({vO{T=4@WhbBdI zE|KK2)XDn?O0@YJhpJP{7)}pkO^22p&(JbiL#i#4iZI&$y@+)9w5S9lFWsBYvP?3J zX6Fh#;yorEuf|5EC3V(ZR8texUuZ!9MXyX`(bvCBzbqjtF4pjDy_udB%Cit#v5&Br zib}tXZxm?G?b$PgHnH;bfp!JTsG*#s)54*7H^p0G&h(h0vk`H2w$g$kQtnroq*!g2 z2qaUQHJFo^)!veLZ_d1O%qbyv9Nc!_8p6!%tINCzhDW^{uOnHdicRnW#uB%&j=(Do z6j=1Y@%!oKOVBo>>CSrArtsptJqKy6i5z*Sbs5RX>dPhJE3KoOwE!P{m59`uK4qfO zXSHgjl(G74q7QV+tO9koZwD2En6sSHgNffNt!^HL7xy(G1#HuImCA*R>{qzpC6BeG z!s&lHreQsS~wdnJT!^=W_B%$IN(L zHO2m~Sx=H;Umd*tP|mY^X$WEBqZRTUO%99a%wmdC!-{2?oWdg`PaFO)Bb+p!NQyPR zl7y7ZoB6EAqSnSW^Ba~d2^N*>tu)cSwKTQNYib|yB(4kF-qg9QeQ6sZ%?8Qkm2}Mm zgW0h;f1rWXY{hWqz-=W-8ATc~QiJp?1!p&d9TtH-SjUSFyqpt_r4W+DO2A7i$c#}% z(eX%k=0UTsFv^j_YlW>c%#kuv!8uGRDuvxczJFqKRPuQAbiI62HV9Fgmnh8$&BB3E zD$FNI?3k?~zmPg(7mlCiJ2*uVpp0mgXxDItKB2j7Zo07RPz>h$}QAC zH77>v4BiaY7xc_D+3ZAQYu%6_Ysxd+t(zFUuoVsq5^LLRYt8GQC(qYVsaIbEuLvS@ z=HNlYrjRZACPT@4b&|I5b##6=#vOg8mFay(?cSj$nr){@+PtOuD2{mn$1!_~9wP5}6+8s3JFGv2iVh~!ZSXn; zX-4+VzPEJ0aJ{26h*6FtQ&zQ(1~1M^knu?VNVk!)aOZ~Pl&RE$yy@Xa)0FmL76~G; zW&CJ7K>_IV21dE>(gs4LtVay#-XgGio+(@oHSyp=>vWwC6*l131%v(|H0vZ5rRfgf z{||#_P58V%yrrp#dX3>Wp=4!?JlblZiMTCyW;SMPp2n^`mH5?1je7agmQyEc^*NE+ zHhV6Kw=+1lx}}I1Tg>A|hfxPM5^h(nrfbs}!5WR-#>Y(>v|VpgPaBAeNgW3!_40X< z9Zj-uQYw5{%L99Xnrn z(q5`-aMraTNJ_iiwI@qPC1BpIcu>sMu*``b$(6Bk`$2B^SDu`W{YaS7V;2&F=SM?X zKYC2zaEEmdH^OO2TDlHo)D95t)MfOL2K}>niQmXKFO;Rc5?6%It?CVTDS6AXBxLY{ zWou9Lvkt1t$dORKb2+Orc&9ErhgaxQ(3^@*e7#>}vm+nP)Zn8v1a+)N3#bXA(i?0> zrnVwFb=#9hh}F(k6p-IW>Ej*6M>2xG;sLY)Z4_wd&P8dR8`vToa^I@LGe7F0&|C z7^n;O<~=w2MI)BM?1lnU>4@ywMk?(rsTW(!NhXOvb-{PxKs1%A3Uv!p6q{apM-4Ei z1j9Ep$dBH;2%pB317BztD-1z@VerXh%V_URA1fc&&EJ)G5c( z+ltrr%^su|eut2|&P84uZ~HK(HlIb-SfS}6sc|1oVQOi%DC`T^_5*cW4x-h47Kf%s zswU8ywlbirIOJWsZa?Vj7QM0*Bwvc2#CKl{KGcnE$z4UJE}ykj zA5E1(V;y<|#c5)rTB;_Q2#Y_Z6fO+gYEab;1asTSV!U}ZaPl#eC)*=ilPl6*o9PC4 z1H#<}t60`PP&G+RmJ>aULfT}sZaU%PZrxX6;$R?tBdRl0g?I}cZ{?X|~s9E}jcsL(rjjQ#VIDc z_+(--=eM=WKw@lHG(3d)TBjKeDc4fJ(y2AYqkq-+JyDip%(d(iAyLUWSpJhj=RR9* zdt(l3JO5d)J+G$Tqm!uG0p{IO&-z_iubyvpvB~T-7rC26n2(E>_*_Zq2yK@cAuFbZ z^Zh|XGWBLYa2a@TwPxP0qwtU_Go5i?XzgfT$P3_snq-%cCi>>Z@C6O?n=~%G&q`8h z44qU!A$;i)Mc%wfWF$tP$WtBL0l2L4y@atX>6LqeSv1}1$R`o|q=;%iNvi!M7rXiD z&eX!HxoZ@BePn1_pnaNF;{}_=k#7mAl@{%V@tG~{*>ePetz#yJ6yP8u1A9^Ip9B#^ z=6R;GcV7f&^)QoXp(>s$c%|Ladc)O_AaRv03KTQ@&cgeKAfh3@bP+1_M)4<<{R)$` z!9u?hE{6J5X1-*4X{D46p>XO#2VD|4x~>@sSQ>~`0%@iHJEwBAv0gkZOT@ck9H?{M zKzSdbqxrI)ZLi89->_3xGST$C`tE{#*U(k6*HPxAh`J2dVBO0%1x>QT4(DMt&+v=4*RKHr)8FL*AEnwDrg<%I9+(&BxpPgB$AlXvJ98S{^)=L}l^#{tvo3Wq z{YCM7x|8xmS#^t0!T1`eLnoR)uh^3tSJ|(zr%V-V5P&JE&YCEIUeVM0(RuSqzT{jx zHc6%t&I^ZCP|c7;HynpsR(1-esgD%{X^0iwwSJX`2Xn|JI3r)plfr1CUzqVLS4F0s zTL@~l*3Abts(6aahFVAQw^Vo#&knj^+pmT%ENiA&`c8yddNJGKREbI`Y{fdQws1+J zt9FY~7R6W2t34s6u_8+m+wYwQx}%n5Y?xqSFUVQ=Y6=x&j}1iD7Z4>f83rNYuBwOG z8$lx1T~w$}vMWqsbRMU<;W)c&6*pnsgwqUa(vi#&3FG2MAc=>a9@`yB^=ay0sCwru zT(Kru?(C;h8>r#>0*XB^VV56c((lZtJj_e2LZE2rvO)!b<6HnD2V<^$$T z%}n&6nqfCxl*D0voVG*x^GP9hXv;i*m`_(gMV%QjI;js`ZHqKV8_{&EtId0PpY8*R z#XjxXx1us~QxQ9ZUbw8eQK>|v%!B=+Be=o9pkB%hx9U$Z3=jnG4AJIW77{Ft6kS?P zX9(1ZO15*1AH3zr9Fte`nxeiYOA(pD-8h6*?P?dHbbV%Yd?%K|&`u$6?pG@tnn)V0 ziRSIB)ajYSs1j`0-sdl}_ZVq!&orqPA3(Y6a3oHJeBZuFTcT?9? z2-QMacqSHFgHuR?*K5N>4d@Ng@EBuZf6-eO4uI~pBfB_lHkgOGnRkNKtC8U?_|W2# zbP%(_TH?=qjW6ixY@ZVJlIqOt=WI1ZL{e5JjOhxuQbhM3Cfc0E+gKVeJt;5r z)3vz~)9zhGw$FwIaG%Qxdw2a(6rb{w97g==b)iMEOwW3C_Ke9&aY#W?#? zXCwmiy-GIqGm}_NoTO>@q{7FnHT#+r&vi$v*v=|cm>E~xJ_F@Yc#oeJQ}C5to6qr! zJhVY`D!wFnw%{V^4!5BTvjEdCDf__!yexP^=#^J4G@7S+_yHaLM3`Ozi8`APHqi?d z{Un0;TC`3Sa6HYqh{9JeZ@sj}e#^v?B0b6P=J@6ai_j_CKN zs`SPSKZIrW)1pNYY=zJi%~)AlGlBa=^VvUBkwL8$MWg9h>Qm z8NrGd2Q?T5rDKkLlEgG)02_v=n@Qe~4%Zrao>`oSg)vEc;u_KmpT;x0L6j5ij^7Ya znzdA)Kw@i*NVp@#FP}Ai@_`}u$gQw6eMhMhyT*^Mj1mYlScoI2$stu$CJ6jg&0b_0! zYb%>%2Gh_mRCqH#_#Ft7JWYQBzXS`E!_aqlv)t&yQd;aA`E*6g^pj{0qc4}cnUM#l=jqOTQPvy^6z&m{BS2p;Xh&=Q{+EvDD|4c$5!sK=xH6^_(s z_e6S<&MvsKUF8-cM)Sz6jVN+rsxa9!%Nd$l7C(k~&1Mbju^j2Q_hrv3dn@>{7PnNY z)gwkA#vc?;eQ%>MF_W?}dW(LI@K|r*811ce;=S5i+1jSxA2z?v=suaTvS@Q~wYMtr zW)Mq1TH*3m%{Mc9dImLu zEsVD8jSCB`ygaSn+IF_yDqiLNAH?siR&dfCY$=6dnBg?@vf1aj*F#6bjl}3b{a8MOKil%x5PG%6yehJ z&`3_L%wR?+sE+txkrTg3(%++BidHEu$RtK~Y@tm=BP|Nq!Re`y9rIfV*||19a>&kn zd}PPvEKx<5*@Kqn7Oc&0Aw-s3_=$$m&OefEzUEA$8F1h8Muk!D6doMID{4dV%B5>c zL6@OHq3Xzn`SY9FI;$sgyP%~R6`469Hk5^81F8l#Ij3~*&mlq#tfe(O;G1T6&rW>NB`oW=|%p$`5a?UQ{)r531B+ z4kw-~^|2U^&~uvDtiV);dPTSlrH(*-RB%vOtyMpQKHDqoIZ52zp>cf>uVlnbB)ws_ z`9AcQVb%x~?uhR_+z#zz%%0ic-k&H2r@z4e-a$x)`@4(oX&y3*2>Ho5kG3sTqBRKKZf$}a4 zczoGGZhdR)oMa6Zye6^~Z-#)oecrHVu442LF2FGCE?TZ!&3f(I!oc&1S9@OAa#J>Q^2T-7J$-*6=z3 zI%Z{Unr0gD-+gB{m9;lsHRFR9M)g+rz@dVTgZg>X zDsozF`k$~ztqoHZc~qbex$inMkk?I~GPRsf1#*R4bU3v%J>|k`=nM9K-4`5!ZGVny z#flPLHklgldF98fnlsqhOmc3yvL?u;l%hyhjS^$U!yKPCA1=C66sZgp<)wpbE7=&rnn2bp!>NWpPz%GrpvXkzy}p*v|26b z)7ZSgzMxnX$2~sufm~=q(ky9Im$hAO`ig>tSz!#G5QHc7N@A$UnCE$gUr;Q5mtmaI zCC0sASoA+Drkxy-{5A%HIeXCO-B~%@r>7DxMv!#}dm{Wa*j(0`* zte?@|%Y-yS5$MfYkE5Kcj%;aYUuUBLwfy;cPTU*|8tUwzlU))TN>;(HGcAna8L!opuK65UhRa zeY}iwH)m%|7n{)!Sq<}*?&j+OZmpQe*}Jc0B|~)BP}D>6y06?_QhcJY?1@1Vbi2aP+|m zBE@eP)9qZ;J<`pe_&m%|0zu&W#7wBn$<%N#<+y&NZPA69)l$!`%-d38Y0wsOX=8P( z;mjP1XLu3&G-`IZXl{Q0l~UH^h|X@1isKN4K3&9SGv0#Vc}76=euG&Sl*kv7h^JxS z9uH*L%>CRqj?p71Zq;N&KAEbpNXYkF^10sW9s@kf5Ih}8;V7e5c!=%Of@sw=s)A99 z&uxW;z{expcj`l3S*bRs`^^!`V1%KY=KukjHQSZu_s3LWT8WZCXtx~EFxo@-B28ue zq)N~ELUheWv7LibSbPV1E2iLTLyS7+U-T-T9DVe$rC3}MwQUe zH{6>!53K~+870wpre~tqnwN6iy1CKI7f$6AexB8w_p&pXg1b8#Q}|4XX>HNrQIjo{ zcK3y*p#R9HBt2{_lZD{CZzx9ix4Yf$l`$PMG8qXStcn{J*$y09o2_vgV3~?+%cS)y$~DbB zH7D3l8}JQt&J)$@pPDH(Q~7~y{aR8@OSUi3!%xHYWotV5b*Z(v++h8rNnQEAO*-{a z%aK67J+GHd=vCsGH8|9E_a){~!#x}=n5F2((+TTsknF7Hy6H@ zFrU&)j&5u1teLM-g@yZ?Mh2I9f6C;#qiZHlshM(&KlzyYqw6NncqZeqrk&nbpU52U zukPsj$&)8cuEXCF4kp%g>i7mn8}(uQ4%SCAemiU2-TqA4SRzxKkzsB;*IUb(k63M2 zY&OACeR;n5P}9kgqasrL)Ypy$b%6RQl_hCMIL{hmEFpC32(Nc)cN(tXaU} zOb*wj28}U0>nPqTHn+1<6?Kzm&8qXqkN0&u`LJ1ab^aWGvX5`fvu8~SoMz6Ns@p2# zZD!qM|Mb&s5d2K8CQKb+rpy?9VvYSc)?losrpf%UW=Toc9qmt^R$n*W*2sx9?z5*V z}X*rJe2FYOingxKE$=H(Pmfe4e3E^^2b=o@3#>+wa$EcK6qF;=c=?V&txjC6J{o13_Iz~_wa=gHat1* zA${WhODS?CV)GZ9TI>V-W;!vOIN$H+Y&gkUbDoSE;s3$(z`A%QxlZemVIE9y4tlH(c{D_{Q7*rvpgUzF}RmCUj+ zrDA-a(B6DpQ{&Rsj!ypsqG#bmAEfP1QyNT^`DxHxY$&--UaL~^M0PL}8$w&|r|Hm; z*6}L2pWp`c3m36YgeVz`$a$vsj$yvR+%9 z1wRyOE!qMG7M;$bGqC8#f(_%?x?I3maFZS~w}qy#Hb;JkV)}-1jJJIHW8Iily4rc| zr%?6UK{l5kj@-YaKUde5JIO-1(kv#<73D&kO#ICH)Qr+Qz(x(Q~>QM*nV z7Uja-rWh6DW_}b}hMtOToJ8o1+rlLc3tN{|+sD$o45le+rf(|ssyXeZYpa^Gazf4O zE)CTbmx+g-GRsE;5`MK;)o2=6nmsG#i)2kw?|L14#Y`Ga)>tD+-+vi(tt{rVgLIhY zha#(euZkn6*#vz=QcY)F!tbZ_`ZcpNeR6Jymc98}a+lte&d_!6soD4@9vBpIl~-tD zWn0(`#5NV@9q0VI_yF-R=ihwo{TG@Zf|(jG!VUK8tIFu`EY!IvF3B8162l0KT}?Ks z))7xN{hCo%W2tnlH`AUDl}y|ggZGbli{N@f%O z%wQ5aTjiM8G(gE~PDWGZ&h%tn=qDQO@SGQ7!cBt@I}r>>>WkT+m*7zl2^BB(D=F|w z5@rv@rF&hOMEq~rqn=V|9YqfctVrH$Ffhz z4)W_){Z?K_&dzLkpok>&HpG@9bI;YVLUThv?PwRKj&I>4P%}2)gD^0v(1i!E0!1V>W00^&95v1dPw=m-YreQrOhK z+BvLjbgBmXtgHE40l&-F!%w8pnCZ;ao_n;SqlO#nrzNo@v-w)S^P4B-jP+i_pyuO@ z7BPR>Qaqu*il>w<8d?`;wvWf1QiAyTxHR$1y zLc}o~#ZmDF)4USUMPks?RhT{8vM8pGeIf}+4AGIOE4KrpQ$M7r@tYqu*K}n@0pmxU z+;6bE{D$>L5oEEWO8uT8Ib7NtjPB^>aFj zV5UJiIZ_<>zcB5a0PJC=q%0TgB`uF(l>v zsyK($^eF=O+bOj}i8z}Plt2(BOEcn`CIC-i)Q|T_`QmxJYG+mv%~QMvchn+L&-b_z z*?cG)CShdL6j`Dtqv9JfV>G$3CnP$C((C@e;?8Y3uIoD2>l#ndl@vw5MSzqn%PvZh z3nCy2A_<@XP>C#ZqZ&XHYyjPjpwTdel&^EMbK$ByK>QB-Iu|MVz4HBIj5*g_tGjWK zypvRHgT3Z?j`L}bfsGogGW)LYE4Dc70{p{KRY--S@d$^G1Qd9!3A`8G>oWk4iXh08 z9kU>9s=u>8(c}wii6ASZC|}X@babxIBCseKl%##FH976#p6>>n^lr;2Gq& z<`4cC`LhZ=hZ=$*G1-b_lIjNC2J-pG^=MGH0TWGP?gI&GDl`^}r>TKNYI`g|=}ZPg zg!}%Wi2wnfg-G7@30j@*+Rhx+C*8B511ASFDaRXjC3Lfhcir(}|MYC46EP+@?4Jr< ztm+{Y0>VV3ne>>*53`f;Mcq2cUHiw?O)%TyV+Hu6B=&_JX*L4~#ISLn#L*Gw+(<4` z4Cuc6fcw%Ja0J|=+vR8%i4h3IzHzIwg8kJ(}exoKa2?|r|$ zey{2J*X7`N-)=af^ymsn0~m7IOsG-lBx?qcSQG5&#J-Ge@|!J#A~HUp28 z=mEnY9heC#ci~s>rHf67k$dT$YKhAPz5z>tV>L0%4PB5#r&km17>)B3V3IYCEBoo+ zx+nTGSr)i0=4J6Fl@a%^#px-hBy-4&$a2RTL(J>>SN6yOL|o<2cRhQz1dFaP85_}{ z^Zb>h-yh3{FVHj2fK%~j#DdNd_6Rpla=b>C2Gt*cG|5z0-pQZFRbXc=gZamw-SF{u z_6@Qo$jPMk83%HIp|Q&ACeX)sZIhpM{qSrs_rclG)F6`sVYY#Y6-%m{HHRW_D=3VhscibfEdD(y2^{0m z0e`g;HMcLIQ{o^X8}Dai)nh_Kl%MqGRHw6nUVo`}lcTQRqN0V-M%sB^o82So;e%c? z8dARG%uLeyukDeLK++p`C9)PB*rpAAsWn*r+|*_3NH~ZgI(E6R@B(h^W*{Rtoz2yq z^|h~7F-9wYOtwZAa>QMn=nXLp>?2HFkfd`A5BPnU8kigU*><|sbx0SsPT}D zZF6FFQw~vOUw@1)OS5Desp9=1=?X|E$cPG(n)$#lj6&#L7YW#QcsGXu@Bi{2vET9=q?a2 z9-wkN8n+WhTh#Vz6Z$v^hz#T_iG*&77e&deye+XxO*Z#RXAuI6wsiWKx<*6Z5P`$@ ze)==V5!1t8D9iTKpSvgB>c!k%4I2`|3Kkp|Eyd-2omg`=AB{?W+9g$h6^od;^Fx?s zilA;N17{KqZtQA2=x6rTG2d-wsJSs?DIfr=H0E+u@fntEVwW>&U9(Y#!Y(77_jae7FpVs~%gJwa1Tj)M! zO^vvM6=z^1!(cbvm501wY2qWAayRrT6S-jWCAf#q)7Embu+?gwW&lgmpPH<^23O<< z`8zV5VuM5wHnyFpgeVxolZ2lBHK54(=xv8ki~F5JB`cbxE{{LAtt_9V?zJV!$PJE| zU4a0kGqEq>u#5+?V*^8G(ItEw*+F)yvlDQv<_~r;)!O>k3i>`K?FLq6)TAE@ zZB~vprcSr68ema|?}EJoJ%3r64jgoyl){ zDtQiqj*52#3&3E294JCOWG&`_?O|Fp@z3nur>6Dr_706qIO&A7Q!d$Li7m98_9x7J%Z`C$^#ID;2z%%D$-;Yw4z78Mge2D^8Od(e z@2=ddzdR7;Ag%{6_IJ}DemQ1ok`4R13nY-h>BtRJHx>Y;R$ICC7ckH5s3 zej6BpfB4M(Ig}y17-Z;lmP{XFgAI2^cCU(l1Obts z??2ys{cQjB=Igzk)xZA7=C>QK6h0yM%(dy{X=my2|~Y zI&&o69oJm$tN2;x897KoL~z(WF$WfMM*nJ5FSKkP>a%gbw64^Tghu+!o+kARB+-!7 zI$45J=3HBpLV;Dle6dCu1wo-VcOHK9IiVvtawUF7^}yI@YI5fzW!it<`RGjlb*%sD zf+e4eWtk^3fDQn=?xJMzvyM0b)#F;ElMu4CY3?TWa-AK25l6GqdDZPAqmw+sak*E} z2LI%XFFyIqVsCI|@=P#cLQ9aTxdV0oW+NeH-ghkaMGyu`K$nE14wiybT>?57`-)9X z>}4ZDi5On?L)Zgqs+@4e2dSgx80}ZDfBLiBSdCiD5>)$GAfX^UL73%3reXo{=tDGl zpIByh$!$HHuK497-9NA?38%Ei{IA$zHV^><_F85pEiWvv+&fMm*?nZ&&gea=o}0s7 zYCK}yd*mCM$Q^{XC}FeyEJ~PN1v00nPxNCJdPt<8FXx2dhIODZfVZN}WJZ}d*5fKh zF(wgbkaR9th9(0AC)~SR``fF#yF6sF*1>9F;w82&b`U=Psd;^*%xu60nTc6&S1Mx& zMmm!aq_mA%`fBfDYBarDbuY zK?9*Qbg`*BUL2NYv@{*Zb=P=$p?TkR2<|%hmJ|+&5gI9>PZra%LgoAr{u?s|K9#e$j$pzzBJmXHy@@F@S zl?9|nHAWCJ4^KYX<|=|o8fq82lOrl5N<8ob1P-S#wIRgJ$HeAjkn>pNn+C$}+eO~ALViTvvzgVISdRl1VQ!HW^ugb|Gfe4x}dF44nF`v~5nUoGWJWDUM5_K)^9?y6g{W265J8Z7eo8V=jJzRm;dWdlbWi6Pff9C73Zt=2W*KYFc0W z1kC?xzFc|fMeTVm3hL~x4w2x(-a~3li{njqcbe;7-$Ec_?GZ44Fm8HNC65UUI`~ z@Ubg3p#`LS0`P$zW-+5VjW;Ek_)41 z#q$<4McQQ4zaWz@rC`lDVbTM2w6*!XAd`3={p(x^%-?6hpFDLQ4)wPbS-IF?mbGlr z?WEVwFyP@41_&FMJ-ZLg-+jRtmm-2T-Br6c7n%hbBaWyDXzmKia=C^XOd4r-oUzmt zigbsjWwcGZd2>nA8`w(b&c47fuy z(-^wt!=$Lz{;uKd( z3lTAknhqv&5$J9<9tHJ;U+IAtxSN_DNB-UP+(dz(e#hdi6phYvLdX?dFLgZpy~R9M zRBC{(?gHYhbH%kE zJNJyZ56*H*NRv9pw~lM@R7G%zA`oJke;ubrK7i7lK~9lAmq~DOoKSDwkcB8BYU@p(J|zlz zmXf0&2J$f`L&X#=E*VxN25x>rfdBQf7Z}w6vm_MGUF*(9awbkDH?zD+bm?X}p~Ek@@Oz#|(_3C`Ux$kIKg}`I?1E zgz@u9oBf|@&TYMeRhQE*G?)8JS_s<6v%|70pWMjQR~-Rk+Qo_~OaFlPkjIzn)d-JM{#vlXTcK%CY!u*0vJfiP!CcFx#x*S8_`xIS!t|z8R$DpkxF?V*S@+dge)+7p@m5{>}miU;4hst>76d$DFuu;j- zicm5Ux)2*U59CG;0Ax(mq;XI94NlXzaeK{WTLaEH?>R?Y$Kvy9#tL*Gk~nm&EH2o* z{sImr-zH6b2TWcDK`f6O@X7Gy17@1*#nPU3qH9TFjjnoxRK8`-$h^5lFdOh6X#*1G zl-bAu)lfPiG5GdDkd^Qyqe@J5_24w&_n@nI(jr&krlX(~)cK5)NVe45aAR(}cZ5Ck zhKozn2URbW&V)3!7dmxYmPN`?v(C9pbC*cv1jidsDG#2XykaI5FZcb7-R3cU~ zV#wM}euHdNskYl9%mnpMtf%wQ-+%J!Pd{G*lK~oC=17!x~8hw9Or)j*&(;X3%h~-NJAT+IVUY0`@*Pvk~4Y2URJV>+4t<5vSDb~iX zXx2&8YB}4NJW@DN%cBztj*a6>o59W`dhW4wVjcxWsE;w7NTvx4qVPH6+OfWZI@NzR zslxF-(LDqvCP=FR6>Rou6L>?pZH@|}XUt55GB^?OxyK4Xw|J{WD^Va6@*;jTt*s8z zL5Z!a6lR{;KnbV~CqwF-h>)J%VVRCweUlUGxY0y#ona^NT=VH`dTe3<#T<}B6`SH| z_0kwvtC6Qk^%dD(b_ua|4_`4^ZNlAf1`1H6EWva`ji_oPo^U`=3%UD>XUrp+)av}i zbw`&wt^UidIc^(mg*=4ft zEtxdKjuktmmpZ1r#iGxHZ=ODQ_4L7R^&ex134U*#c6ubmq$g?`Hv?>4y9Ew9!sQ{n@ zDtD!*`UEJY&`B8EUuex!h>{lzJ6ZM>zgYhs)yjk&EVXuvPYJSgPrY!*edm2E#F2mZ zALSq}(?@<2=_3fj=)ASNKLbz#2Y&bg{ua6qI~9z*<(GLKS%=uxgyI&^zT%N%Im^!O z)9W_^#OOtZK?@$C?hT_(fC3U(&Acec?L6PZ8@)y%PxS}j;PyI0Wh-=LVz9I9jY_;p zbdoe`;OshS41#G<_DS`c{|0wi7zb`V($PGzqqz-;1VjEt;RRMfz-K8twQ8bYqOH<1Rw>+E;-umLTIWf zIzOkuQT_FR47*G8sBIXRT8JW>eFq446)224ZfcS3MCo9?Qx!twg#9ZUa|PQhdZOcE zf+n}*gD6NDM0pe1m9%pm0djGcq!&>UJ+R*79apWrX3NsdjwuqG3Uo7ix{yWm;XUS@ zkeT@FPww62vrp+#*I+B*4w=sYPR_I=s4cWXGDV%)0!`5GvLtYRsRACErVF>lbu-J`tYE+(e_Z zu)r(#$^8M~vm%KOt7+SQwKy!b`W)IUfROM%;)+|hpOzu|l!`1-9I4i)ZB0o$yFM5l zxA$Lko40~8)9!AkT4bUSjD=5S!qZ~I z`S)YYbRx`|X4p&f?8*z1!j2r!FuZ`QiIM8`I_tYUS?7o+-cN0h+q#K;r!aXz0TLrs zw95F{TZiz~+_2Fh*2?S2K;~T})Y=WVa_^!4b|V$bs8?<(vcafvja!$;3Aa0oOW{71 z=P|BnnJQvdi|>&E05lXD=bALns^2>ep�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 literal 0 HcmV?d00001 diff --git a/po/ca.gmo b/po/ca.gmo new file mode 100644 index 0000000000000000000000000000000000000000..87c4a029fb97609806b63dc5cb3e49ef021df1aa GIT binary patch literal 106228 zcmd4434B~t{r`Q-PS{J?w@YbALYs74M|#-w$w>7NrxsgVJ7JU0)ild zpdh$`Ag=5nD7b(NRK*ok5cq+Bf}kLvxF9Ox^ZtC#xp(d)lT!Y_|MR?_^mY5bXW!5H zp5>l-X7qL+3;0{VZ4ev`e|k_5T)SNmy!SZi2Em`3f}jq*4y6^I5Cm)B$#63KIy@4- z4CQ{W#X)d9tb-@QwO;*AI3D%i;2|(v5(In0Sy1j<;f`<<+zFoN)t7knN4@$Qul~GO z-|E$0_3CeV_4mE{A+LVStDl8?;{WeqJ$w`H0*`KX;m?LLUkFcuCqt$8E|`L&mj=Q9 zZ~z_(FM|ibTcOhR1Gq2z9jt->hBIL0vLHALc0i^3GI%)rEF23rL;3e2JPdB%5(G!U zN+^3xa3x#^m0u6Ssqi(ZcpX7z%byG3G4Mu6kp$1cX|Sf%x$A)AP+tspfVac#;oVT_ zx)<&NABBp~@8DdxZJUe70yrA=TBvlM1u4?tqi`~O1}fcqwgqSt>0 z&PM%LsCscUmQ)UFU^QF^LwFUWN(OhsG4K~~Dtr;Dz8ti|g?9v0el>fZ0aY#^gZsfd z;1u{ERQ>!HRK89<$@#YePDK47cr3gZDqeqqO4p$$2SF`tfwFfFRCu>T#p{ z=bflLiuch_=~)J6!i{hOya%crpNDEU6{iNlX|M{aJU;-H?|*@`8rfSjG>WKz-e%YQ9&>d-i7*v_fY2WKk!ia`IL+A1MmRUPs4-ZKj6M_ zOoxltcvy#eIaIh8!0GS{Q04y{&wV;w`c8l(EjSCx-zT8*;V*D+ctDqncP&&tv_O@^ zAXL0Q2akaFLzUkPP~q>HrcB^$&mPZ@K-GhEWXszqFmcj!Iqwn^5sR>U5W1r$YJrAy^5&3+3O7a5k)7=lYSgum<&YQ1Snv=c{mc)T4Xpo8aMa zG+YOjALqcU;V0lAoYF^M4{wB5z~93VZpym$b2U^x-2qh(9)hYDFF=LAP0o!!6X1B% zUGQ*tIh6gopu+u;=W|f?;NNf`xKF?He>{}C6QKO>_3DdZ73y1HGkgT9oDM(3xtr;^ z3d;Ri@OXGFoC_a^3*muz7tanT{i`8a8axfRQY@Z?gyWN6W|+A?dJ#zLHRKc%D>f6^=*?^Uk?vKeIJ|& zpY-PYuXp)68_M0uQ2r0VvG7u_e+N{0e&WqvhKkoV8(ezEL6y((Q0=T0D*xBR5MBut zzpp}t^AOw@zU=i!ZFKeQASi#+Q1#*>SPSoj`@v_S((w;C1MaiQ`P&MWAH7iV{uGq` z`#c|o2cUiho(Ok1)7d*29)tQUI0@bfkA=^{dU(KDuKl#bI@D)E*}DlI51)in;h6Wj z@@ewSLWOrFJP6(fE8vfy;`b<2IsXHyeTHYd{9OR0PQ#<%hoH*+9;keM%B%nDIqn?i zUlUZkdf_4PTBv${FPsH;KG(%}5tM)D!zekga}fhvdH&I^L=;6%7H zoCJ94pRu;ZB80-ziY#dM?}>-Ubhc_d~gV9x8v2 zc)zo^8d`op`F9UI82-ka{|Bny7=J+!Tmnyms{hYH>F<0YV>LVm9sx5@;avvh-yLuo z{2!=rM}NS@a|u*D^Pbm3)!T=l>cb0A?#Eo@{F?=p5AT7B@40Xfcr#oAzX`{{9Y5&m z-N8`yTH$DTHrxkZ4&~36y#Dv$uBe~zd;u!_zrg+B;TJnOtsW|VAAs}WwNT+b2SfM| zI2P_tCP_UVDj!zC$?zPw8~ifd6Mh?3!-wIK@J*<25BregQYin^}yT z-~aJE{8Fdi2oFQQ7mkCMLZ$yssP^(bsCw}mcp&^6RQc_3nJbTZQ1Lp$^J>q{um=5C zpxXbwA0}^M9aMPdL8a@nQ2yTqm0v&b`cFf}|223V-1Z~R-E^pYUI}GB02S|xq1xT; zQ2sv)$HV_ZSPNf(ir3y(B9p>tQ1$79a4NhGD&HP~a`zULzlUDM+zzgS%8x8u2rq=| z;m_dRaQ??!JpTn1?+G7w>01jYpuPY$!aJeL{~u80aOfvoIUWn;?nKYapz6<$;L-3E zsP-3r(zWkX;SAIppzM7W&Vi4^rEvdGIk~0>wxYfX%KR-j8P2@g^;0>xAL@(YTKHMG zKdiXM<--xM3Uwpg1NOna;o0ygcm-5@ybmg!PeJ*=)2Cg%ulHOD$DsdSI0aq-XTa}4 zxgT|{vmZj`PXjz2u7!%<=ioW;n^5I({B^E87DJVH2ULCdFqHY@a4viaD!vmwqfp9jIiP|t?4w+71H#Zdm-0A+qZ+!y{9 zE`e`Cl}qDi=|kXE@Jy*c=luCDRDFCID!swy9ruT-zmwo>cp97ruY=0}$Kg(Jn=iP2 zc^9}d>dA0BI2|g#=RmnDK>2qol=~;)F>w1Yy7HI~Wq%`_1aE=U;jf|W@BbxNFXlm| zGYw_$La6+|2P*vk!rkD`H@J4NAFM!qG?e}~O1-AEv{@QC|!XhPS|p@P|Muj()Ayk2(MvFdd)(vN?<81XuNKPwa##&7fRo^D za6EhlD*TGCyZTcLRqqx>bC^-rP7;{~YpvgbG4csLQxLwzokf1Ba)@I|Qb z!f(2Go(NU1E`chio1x&WvG7)?_&o2q z&3#U;I~*!rbx`dz4;R5Rq5Rzp4}`D59pKL2a`yIwO2_`Ne-w2LHf>8d-*(}>alflC zwGX)RUkMeD3!&0`A5^}-3Xg^dZ+7-uV2Ju0*a|-b6`#Mrli>94xp}~q@F1B(mD9aY z`Sp9aGu-|Aj{C!1P>+R*e;wQd9s`w+jZp4Rfy$rv!7=bNQ1$z(a1DG0&W5vo;CK$K zMEz~3`u{tqeA@Rx$H|^cJbOIP_q^8g>z_tS7s zxW`Xiy$xZAdJa@Rrl7)E59h)w;qLG;sQUT>RC&A&4}rV?)b;NZU=8XHDE&*J{JGhy zAB0DsegQVaoqy)!qm!WO*#)o--U}6vJsxuX`#88S>UyZ~PxL$;?uYvQQ1-9!{4(4J z_4lFb%TrM9{sd)zr-xm?8bayUd$vL4XRlXZ11JJ)0s{Z~8PKB>~^CN%m+Is_( z`%b8Ip96P?*TAvxW_URK8C1LY6I4De{Dtcu(@^od1Re!H2TzATgUZ)wzjWh52b_cY zIyetL3#Y&%9&!EQ3aEIV3l;7)P~maMLK{M>q-fOHaG` z{(;Xh7e(C-C%~tm%5|q_U3f=9rFSvxfEU9B@D(V3j{c3a*98^d3t=6+9_|PqhC9K> zz4|v^{Rgjp-K+oU)!Y2m*{^_dzqeN(GRX%gP`ZTC?oez(L*TQA+SMV5E`8(GxS3;Hl2cXK~ z4j950q3Yj`FZg;0$Dv*h3-C-RcdtR^^L{Vd7D2Ea%HDl&F8nQA4#)l8^^<2ph5ti% zBzzn004x81j0q>e1K<>>dbb3sd{2Y(;D=x>eAt`+2P(WhUUKutsZjmLSKxH`B2@hx z`!Zt)tcSN= z&WDe|T6oZ(UAZ;ENvKbUO8+%*0(=~*oVI)2mBU=vfckPM{a-@)x94A6{aOw$MExM_ zfz5wq?GN4!RZlMXo6F~WJzs+g@9@97^sI(0s6PRfjz2)fd+Hl5e>T7>)Src_2S0*} z=bzztc*s9odYj-qs4s^qhlOvtde;k;&mV(w{~aj*UW7Zr-Tz7XjiT(~1E?4Oi#8;C3hANl8!GqxFx14?*+zWLZTmaLs9^ML7p1+3+;pqRkdUGmVg8GY4>HG^k6V7_u z^gzdPeJ4~tJPqZpA{b@$V-8e2&V;ImcYF1#Q0=06 z)F|s$d!hXO2;3Ro3+3+nQ27^ZGs@a+C6xb5q2hf3oCSXlm5+ODJ1RI29tS(&H=x2f zWIM+cJQ?*D;TrfhY=ft5Kg!m@?t*#LZ^B-x%->ltuQ^w+@-_+EG*d=?%K{{_DZ53U#$TnrzFC&AP% zqqGDQd;==It9Kn`<#QoayZ;PSK0g8#uU&Q6e#`KeI-+!x_w_$*Yod+qP+FNDhX3!&V71FnTH z!RfH|02l6uq0H}t%C}cwGd$!#=ifT0a6Sta@2B7#xc5OWJ?&8OKL;uvw?g$F&p^e0 z`-7eS9H{!1hjs9aP~klaGqQJxi+2vH{@w;Pj=Tz$Pty){>FI<0s6Pwk|LDU;**a4* zl)GD?{QV(W7C>u9cL6zT^pu&3@E``U8b?LqU%KY1K4&3I5 zQMRrz54NJd7Ao97L$&uw<6QVT&+DQ3!(Tw<%d1fNHKx+#-(1gLsB-u?l=%;!`p3U{ z{lkuQ`L+xyedj>s_Z?9E+i#)#-@VG^=P__O>d(M-_;)CKCsdCLZigG-MtEe+sNlWu zGf?&qKFXI9+yV6$;U4f-xI4TL9s+*?RgN#gYPkP+m!Az#@%|80dEW!oPG5pb-#!yu zem25GQC|#Yej{8BAB88uDYc_)o#zrLe>Ow4zc--5n_K6~aUE<#{T29W_)n;Gete>< zznkF-=|hFzGRej7eNgS=7N~LhS-1+0o9xQ@JlKT#0nc5hjI#N{3aECl9;zH}hsyV7 zp~`Is2FYn~Dm)nW!7RK49ti&lRUTuex_&zYHNIXCcY!y-z2Mzm|3N5u=;xk~L52To zI2MjM#`ROjL6ysuQ1$XosPMKs*0qDfpxV(YsCIJ&ls`X(3uNy&*Y7WehshpPdw4HY zdLD$T-@!D;*--lDK>7PM7{XVe+QV+gyZmW}swd|_^-s4!mCy5V4&1Zeg?l0lQFp+7 z;rpS+k*lHV`2$e#{+m}%obLQjd43em!F)4Rd2BahRB#p?4{P8Ja6kA9cm#Y2YCPL* zrc+P!Y=eu?-vCvf--VU%HK_QEndR!u4A_9WA1Zx!LG_crg&{m>wkzKmP~jJ#;&m-l zxZi^(!WW_H-?TZd9-j?+P;Z86kK-F$e{>$yIQerp2Tq*p+Ce{5xqJ$$-8})-j<%iW z@-YQvz7Z;2UxO;&V7`+#La6-S1P_Im!wz@{ycv#e92L9{zXg^5cPw!6d>N{~OMP((_%EpXKW&jq|8l7IdoENwegaib#x%Kjv_qxuHmLfv>j|!XH$avD#Zc|| zUa0moda-kNp68RW8U3S|xcHq1)$cwC)efGAcfq%z1u zYX1XJ<@;@@e0+j zR6V)~s=s;=D&C`4x_n;>RgM=ymCG;S9C+X=*DtPwGXEr0fA}0!KXu@0SMOS&%Kd!U z3-5=!!Mf92zcmA@KWm1&!!zMt@M5U;cnz$CKY+@&SKwSYX3Z#DKR5|$9Jv9?-V;#% zy$xr;@$Yf{%vz{?y4kBAgQ_R{r`-5_G#rC^9+dvcP~}>HJHkt#{QoFayuJ?AzdR4~ z@c52VwhnSDRCyoT>Bf;0;jyT{0F{4F!8SOq%hjWeQ04V~*avq_yYfC0s^7Z_u7Zz1 zg+Hm=g}(x-pF0mq|0Nj0J$hXHCwVT0YDe8r<@z0{e*E81^=a?5qimgL5>&mN2UWk; zLfN|ns@;7Ks@?no%HFF`^?7v0(VUIZmC{0OSu{Sz*PC!X%=<)>gj>W85E z{n_hWJ=z3SZ#P4g!<$g$y?3um=L)F!ycf#+7I+H$0aSU1eJ&oWq57rsq0)H|R6TzL zsvhi}b^gqT>L0UE{rB}y=HG$pSN;f9uSe%xyiR~h*SS#s-vQNcJP%KW+xEM8+i6h# zZG@_ypMbLWL#X=s2dMhI&l#>?nF*E7_duoZ^Y8%pOQ?K%1*%-8=3RYS0ab4uyg%jDzlO@c$s3%#)lmLl4i(?8K$Y9Sp!(f?HoEcqXsB}72vzTIhU#A* zg)Q(^sC=8X$)#f*+!OVc@ICMgaA&yvnNFVD11kONpxVcca98*cRR8l7R5&leFN~r- zoHZ)=)wZt^i`<#_cT<$ zwataDejWgOP&Y%x<8GLO+ke2tvj-~vS3!~=JPEgf&v^B3JzwyA$@5jX9rj*_+ru}! z`Ymrh>LTag_MSUK`MaCvo}PPq?(2Dg=fR$b!FJq@g{q$$pz{AlsC@o2JP{u9L06tR zsCx4$sQ&IQ*Z^OH^Wdb5UA_%K`F9E21KtZ&AASPWzyBSoo`#pW`Y;`896JkYocJbG zem@LVUVno}z->R|>{UVaYu!-(T@Me3KY<~96{gJO0Qq* zc`Q^ov%UEOufG(k{+t9ucr8@9d>g7>{t>F*8}kv@{-#2urvWPe-vc+oE1<^7ipyQO zH9*-r8_tEFh8MzTq1tu&3fC`u4lYIgSJ({ae$TXWlLI=S;`Mc?{P;Ume5QZgjXxJd z<;$0#>gOX+{rf9W`Lx3)TsRY<;+2AG#}`5QdmX$0J_Rp^@A;&wXD>sgujW&(UtA59 zjtk*5cokIoeg;)P--K20;H#Y+I3KDXSq9Zk(r_%i0jj?K7%JYcz!rGGH7im zQ0?XcsQA7D)h@REw5#9MQ2J}3;&CoieYhF!34iSMpMq)+J6!9^eF0Sb(@^8>b)FAF z`TsUlJde1}mB#`o^#xGoH$bKHr*ITx_zd35)47e?N4W+)$tAVuNq#s+mi*r?bcFk2 zZyO%{{R^((`8DsV6Z$&{wWS{(g4?<1y~1-I>Ipo*MXwef1mEVV;k||DB>X-bdkf*u zq5dvFUw@y5>RXb3H{AH)JA`Uy)W{N;+f8K7SCj!rI;uG=A-u=G!BDR39~7@ z?}@+q+n%S}n=M1{J-n|&PqNrU%i9*oT7Mz$&Aea4 z)6Vm8ryVTg{WH7|Vy?fpQBU>nQlHBE5j>|P^cWU`_hIiQ%>Mz8_TlAtSO32Trg@^j zQ+auUXFDFrGtplg{w(qKPQVYz26Rb52oLv`J`Ar%Pk%dM_Y>~b{(q7GPegAD=7YR5 ztOdJyyG!7`m>qz>JM#Wz%nv}liYNN}8~UqwDt!FMdDdg+hu#uhhpkmcZl1)f2EEZ} zbb9-zp!XB>zQ&`!Dj&w3p3+;1*;v&3dp93K?;M_Ap!Wv+C(q8_J+Hw`-XHer{k=b9 zWx(Go^ecFF<$0awuTDGoFZRBJ`b8f7{Rj1vypJc$9eC6yz3%u!qkjwL zlX$+zvpr_pVD^39zrdrv#n`zMeibwIr@ux0G&~imzg@#~8Sl~GM|gP|wdMl)tMOsY zM(+#w@iU%Vc~>9yGVl8P9L%Cu@9j!&9`El(Zy{y{o-gsVdGl9z*Vu3)=KJudAAbqG z+j#m>ujILv_eas+30@DAfBRwn82Xj)Kk(~3pW*#Ao_!K=cn>R@(cesOuJ>nr z{Pcb*`WL|O;?D`vpk!u$0#>`%n}mv9vNd+;2_bDKBcfc_u-JFmeTy#I^`@y7mk;C(vo zk4o5)!FK2!irxxmE%>gd@L_Ma4&H!2|3&YAcrM~;Kz)kb^1Ow5d+b!BcN*#*x#Jnb z`#I<>gZld}?_KbE%$j(Y-1K>#`*=RbBf0q7=yl_yL|j^1ccF3qHm3P29Y|^DOWB`!?@C;nCmm*jwaY zgXg^7davHi^H}WYZyFDxYB1ibUq^i@Zg%1MAD&0hpFsML;2A_+38(Vt??|5Sp?8L< z+<%KuABCG9?A!%^h58tL<9Q!y{k?_WzTVwT^v~!09`sMBE+j;uY*Ix^M ztj4Sp?uGg|-V5+SINygQdvpE!?Fl`3S%*K@!52}S!PCX_1)k6IOqE0b7ou+VZr?=j zb|C6Kc=qP~AK2M}XMZ03^}>Z^Euj`~kff8XX=i~675&6%jvxEVn2LiApNZ==WZLeRzYexAM2dzGga{khov z4SF9zJs))&&&POlR(&714zmM!-o#vgckupA9{o-9)cafBT<<69KmHz1=zS6OZ0z@$ zN$Gzrgmo}xe@WQi=-(ee|A#)DM%d={pTUb`{riu+cU}0Szbc*%?CuA@$+MRC*LZ%* zyZ(NPyEA#N^6sTK7W2bV9{?YKhoQFtHp0#5MStx+j3dyf<-Num?1!C-S$T=*WiGj4L;%{8c_zu#kjEM~v-?(Xw^4GVwZ`4mqF&r|4s-Mc#te&5@}$o{^> z|FiI?86Lp%7ao+hRs+iZ-RyM_#=oV!FTl?`c|PFv?}r&YnFarp2=9~Fe?QL?=*_|W z2;L`RryuoN)Qc4`e+R>}G5a9TX{gV}d@0Wi)PI0WFh3dnU3hQj$@BhsxEw}*AHc5u zzTyzP2lIWs|2OhJ+P}Ym`C`;V|8~dygTk@B8o^>BIUl=Dqkk+xz`P zuP<*l^L{P-9Z$iVpO0Q6PZmFBqW?wM1g}Le#rsB{Pw^i8ZO3~nic5HwWA=O0$K%%` zp1pZaLhma)`n#NG3g#Dk_m9B&KHMJcjK_Qi9D{y==Vx-{|Ne#k>E53caWjGUzwq20 z>A~x8^E=oJqrYbp?~&f=ynL0X4!Z~8*K(e_y}efSj`tS7jNS>T>v>ctKJ@1Cd=|Zo*Iy1#;&~qPtKsgL{~LZ1^qzc8G)thu>i>HIJZ+t;SU>RkUoCYMe1)`Xq8zP?np zD;&s$>5cupsZ6#a2*U+UOB%7uUqd!b_jZTfnO>Zw!j4QfmERQR@?k10tWD+9U14vg zBadFq|FJt4ko(^}CQki?*A?c|h1_7iGi|}k|HX}`c-upgu`azS+>jYqo5_X)B(TuA zHr>3Pxt0JQv<0EGTtSpQ1o$rQ)}1|c4hME&Vd}| zLFpCJseI>JbDHYv%DD0^aoISpy=mD};zF4wYJiHjfIn0Si=jeU(XeE>s{o4B`c&^= z+J!NIX>}%xPNpkNXFGFUnQTu@5UL8*))ofxna+W5L#hxK`qQ16?o7ICI`xX!WP9o= zg37wd-C^Tg&y0Ur7%|dV>@^lg8qHp#InrqH8ZD7VyVq!sG}fU}2s<_nq$3ve5>@wn z`iwzxuRz4ZRDXYOhOAZwkSg-hWo+*zarbq=KS-Y+r&v#J?YVQexz%nXF8JaX5O?x7A7t8{O=FP$B*BH3!6 zRrh0m3j{N_t_k}F3j^WW)cUlQrMH0TipJKtHI}Eel3Y(Vb7s0L zsGi-b&Z~O%%JH?UyD~kQfr9gZhU*HO$aicCYl7;AxE1wonxN*GP8C#o%43@5I%{f{ zx2fJjF6>UJ%c>763pHU--A+XzKARF5LA~mavSI*YOLSN4Gx64{&ZFW zR0r?elBhF1*<4=MbL-Rje5OnB&l5TPrkA6!&7jU^x@Ibdv%*wwKAq~?RBV=|#;SSM zo6-X{VOP34lTCNk1v5I=W_r7<`i<;|`cswSR@-3AAlZd*#t@g(`5CU4i{m^!9HgGj zh>|x;4YQB_rhAj?kb>Cg9imY5p(nFGoeew4>nN;3wrYS5Y9O6eN2U_f7}66Ai422W zVW2kG?bGQTkc!9~m(4?LDIBXGT{)}0Q9!0SG=#E6RO8H48sR@UGJp?m-R{p8pLF6#5gpB9l6}PzEs||lI5*UE+?XD zXb~?24PjxhV<4YSE8L=4e=a{jGgN)9#F7nLK|@PR(|q@T=(NI>Ee)*=&5iAit*gDk zN(nA?b#qGDf3$$u-mEn_-q2SA` zFxcAs>DHmn!=Q^+aGl-NPgz@WN5HQ+iX8(;%E6;kE{BGJ|(bV*x5 zx=cbl8eyxmX{@I=5>rN_T-L+~CnF5>^)pPFBo?KGHdUyJ{fY*V(kj@Q%MK{5DTcyc zQdC`Ebg`CkyF)!H&=@mkk>Fa)S(1)QP@y zpQI5#xY|(KpU-tFW$HCIBo9j8e-KHur1$jSgACD(B}a>k{5bYo$E}9D0&(+M1xd)MbI#SNJK}Fc124bl@yEW zOEa7uF5re2K(rFBDQe>H4r} zNEh2jokeh>tMemON4hg5`Al_f{@mqlYuefyS{aGg=)L`vmPRVn`b<8TwMoqS6y9ql zOXqKSk{;Ny_ucti-@Ea*HXO{Z%jPy@{baQ?6QTq#rdu0HCZt;N$*8keOv#^Ej9%7O z6Gf8oIJZuDL-{bHb=@p!k=<0dfzq#apxyL(gCWhlz=_)E%Tkt0N? z$rdE9lvD$jBq*w`+@OlUjV~q@DEhAFl8?@oMpO;XBU;-+RZ;cpS7otmE=c?;Z0e)G zTW2lEO1?iuA*G^fW_4-*azGJe)x5%ma|gS-(=25*W%~yQ+K@+6eZws^n`~2J#dYeTt6lhH5~hYl zTL3Cf{W!=TEdtm)ubTlP+v6r|%i9;!PCoXXY)ng7Kp-QsN@P`KZQW5UITYs?T9DC* zZG|wP3Kmbq%lgp8dWW)`p(PsB3+cX$iH6geZ6WISX4a|e+>{&C7~7>vjcCMRqe>n7 z9#3LbecW7%E~zj;R>+0AvVl!uZI~`}rZh8-eV{!YiE290OVgQUx^0b*rX^ufT?Pi4 zhemRw7Lyc<4raf7bb<6?<;>Lttw#(id#O|=nbUb&`5#$2_zSO6^Krludkwc}&SFaQD|J1#QBzprT?q9mH5<=xCw1wpPg+ zt4Vhct=iHki6X@$(J!L0#y~b`r51nUwNStC7pd8i=>zcc*0hKyb9#M=5_r)ladkfpr1DZcG<8gwmivdNY zNPE3bl1!Z2k~UcQCU9Fqv{_D>pzC^^`_dSjXD+(baUVTzvrtFI+QN4ou|!^^swn$y z(ZWqr{OFrBR)Q1b+At%Vtg4%hOe7>WX1n@xBr}XBNIpOrBDB)ll;tIE=y$9G7+9On z4fd=J+m_8++_wH0H?YMqmItLaruu%@mWA_aP3c&OBRtJRwRqvCkHt<*iyAVIcoFhM>$HAZ$)#!4mnOfgx;@a!hkCh&qG^i4)EsouiZTgrkSnn)WAI*Fc z9wkhiMB)ZTn;;FhR_c`45#KBsN!p`sYOAbB$cR(km5$^w)!nX4VI3n2BBy2}(L61- ztj;G2k>O-uurxWnIc8a|p&^Y)XmmcPYl?E(rUj&1Vl#q`*|Lh`E6}^J>L!t~&rV`8 zzZl1wT4L$AFI7-)l?dyIC>lsvZf1=nmt&!}C#uK&IYcf= zch>x&s_MKs@&#ma%evpZ)6vh0;1x-sE!yejkzobz$M3%vGbZWLFqje_s^s=36 z12&r2Hd@wtN-#e;-SurClDQf;raS4>(hRj&qeu0#AMJOM$;F{>1mlEotp%lWe)vH# znD1I2X-E2CjWNTrlE!)jnM#{)t4=Ysv88cVbW}LO{G69^5O|TBqP1s@AGTvfr$w$f zOKy=$zC;~()GJ%JjkQkOf{@I_&@z~1+tj)=grrorDwy0dHdrw+x@rl6O%WBAWT$wY zM^lCA#4Dj?GWQlkprEwWuhqLgn_1BzdC|yfgP&QDpsn&|XneNPQM87oB)mH(wb3TW zK&q#1Yn&=G{kBP}$0~3XxG&j}OXGBH47noFOiYUdh~2ai>b5QPvJ1DxD6k}s?I_EW zdG*c(WtGxLmF7Bt%;};~>jo`N1eLbl6p@UQq&PA*ZlQ{43Ex#WHLLrxsS9Ul`F>VS(S@R$?(0W}r^5LzgW8|V zQtQbk=05#ew4I;R(8%Hi3+h_DKt2y`0!BP(uz5B&SvA(?wp(=c4oH)xtldn=v}jkD zPN&t$BC#zm^f5PHxODlvHBC!dUs&3(1V`m3vSD&|6*RWCE^CeEne}07W6P3L*0eRY zHZ?3!BFuQrQuYrJZc|z#v<^%is?A?noNM%XVjaBA+?CT^6Kn^`D&}CGnV2ojt9C_s zh!<8lM|4l4PuOLBD&b2UDrGh+mK3z7N^hn>wdUBHW<6`mHgl|KY|)ah*9s;mnGDpS zR7v|uTh)=%t5nmn)3qjG+x|@EGDzwaP`#VIg-4z-m>ZZL9@(q^dh}n4A!)kz$<9ZZ z9Lt=+dG3X4TQ4ya44A#Lk)WA4Ugy~mM<8$;4`HQ~k?O+c)W%HTU|*z9R!^BRW6H6% z6JH3ckDVHFNT7x!yt8M8|D|s_1Q1rG*rhIQm2NLOiXl_7!QO!krD5`oKP%wskS+bI zA+yZxQ)p`lez&DjnGr5b?mb9a%P@qo5z2WSEx@^zGTX$63~d%uLl)Si`~OFCd>%V$KHv6Yp3+9&#cbF5LjcVVitGtF)eqo@~Q=_pJb^TzZ!wY@2N5bfV0 zlsawBE7`^_dFsYtm&e+v;dd^ka1hEM-#AhY{h2b3avUb$+a=gTC3Z2aU-xb9CfH}YQ2HuKq__y zE}!bIK@%d$5+miTv?TOxmHVgrS7yyOAKjRTjzx>tXggP-}z%heW@2) zm4q_x-fa>FvutG-m&oHoU_&<8RVlQW9#(1Ks!|qJrTiv)mG7=uh42}EItwYvNbBZ1 zCC=HzDp8o699q9+8+|G3U05vd$Z-~pMc3@Qga>SX$-Oc^q03YcdyE`z9Tvv@RnaJE z9~nj7jMz#e+1v_wNbi(1E8}N08 z$xslU+`L5bikett$(?k?z?W8}59#MMzLI^~Gqu6o_sBy%Nm@<@;u9J5p^1DcF&Ps7 z*i6e6me*x_`(f6~c`q-9_4_3*hvZ{IRGI9hrU_vW18`;3fo#cjNfbKM8LO6EoKh`o z5N{>Mxv!<}a#cCjXSY7|gUpaNP-10BONh-F$hBZJ%ovG7HD)Azj`PsF=wS0O8--l2 zMObC%tB@uyMa`0w4-Dr0l&T}gX}e^-iX9j2xCxbP#)cYc(zPRofEez?5LOjRJA;Cs z@iA0Ki$rnTi_C@;RHQw;nBK)GieR;+F_do7M!L4fC7JBtMw>dauAj)X$c8&VBGEq{ z-G;QA$fg|vj1KI2$xtVZGJVP3F|uttuw}wa>{FIA&C}uKnFP5wG{%$esGG1kpxRBM zVnjjuJjYrdF>*ZZUVk?XiWok5Io0B_+)DFMb zS;htHSK5-3iI&C4PPg%k7_m6LY2pey`rV)6q*)~sUqxbqHV7i&B$~!1a>0qZ@^C~s z%{FEuAtCz3xu9&L&S4KaACoTGg*D^lSUszF<&v_rbw^ZKw z(BV$D{D7_3Vykki6*}vo3Fj89AV~N_gzsRH^Nk%y4DVp;9gO{{Mv0bNh!djf8GLjR z#a`x^XSXj_d>g3#y5;qs8-55(fLy zw9Ra$(8rPxEBw*9{OZ_&Y6>eP(fR4P_n_uSn>MV;m|P*pJ!@RAR$Y@g=Z|y06w3ik zTYySz03>IcItcETdh|VtNm`Lhj)D2}cM_WYyE_3_^xjouofMhIO0rE#i(W=Yh2^#N zN)|@0yPMI7pu%duf<{aBZYjsgu9~{AokA$%HS>E`;WE99>ojAxO{~RF*Tq}J)d@|u zP9mS{jh0x8V&uEBqs^vnzozQsP?fSWR-tU!lzu|es`l!!OwVg+chiqZI!y>fHfEcH zGt+q%-IQa5Z)CYBVxT( z#(79gG#`jXN*mCk9IhW0|% zn*zl;ld#&C>Zkj1|LQ|z#Qu>YuUWerZ)4G@n6jaU-CfezTCcWbSE5IJJZ*yiw4}h9 zNUEo;j(6xJMvBDo0Ty`^?PUUdc-WL=( zK1t#jsOI%|huhWX6?h&9n6wb0zyildK#n(>Hsq8dsK zL$oZGnE9fyvt*&jdgfs^T^-Yw7>61q*JpIPQ372_9t@9!2@P=!)Ni@E)5Ga?nT=FI zkc~OH%xGZWfcS73a&(%qm;|@I9(%9Gw<+5>lAptDo5m2^61lCTVqi;D0clH4=O7=| zvA7GPd7|yIC?hq~*4Gcg0$EQNw;%K^3~8Wea2p6zclSlXFq?!L9TxW+7Uq|-N+-Oc zL)-S%jeXK6WA_bF@#LmI!CP9e6n)XE4xOXUv%WaMS!6rtZxchmenn!UwKXq&`$2*8 z9qi;;AxbtbF7}peEV*^ELa=aNaRH$iJ-_2ill6xU!lwDjqb4P;2t;CA@=P@%nH`Db zRLa8noOx-d47RIWRA1R#UspJSb0j)xNl-**Tl+A39W|a zgrWsSn|<0fkGw!)X?924ova!i08?^KvX3&!1pjRe+tBogtfzEtVtnFMT5RB}H#1=q zW!=|91!lu`s$1hT$4h0DSdp@ZWy>5o)L8V(4+?Gk z3kH91X@y`zvaiz!wkxYlGE^k1R#y$N7Ii8)q%4)IJN7tL4PhY1LFuisZl@%j^(K9{ zt3w3xOp6S(R+HWqwllMvuY;Oq#iUUfTX^B7Ivn{;ud}bSqc5joBR9b!w`f6} z>eW&Sxn>on*7^$PgDOw#CYCJS212#VbT>z1y~w(Qnh|aL3E4Ya9Hf08JtaQ-GqR7e z$Qg*?J`Sr5RDZv%8CMLKKGh$fnv1G9O*JPNRZg0+vFN3Jc#Q|eY*co~=Bn9cH6#{ACF+hb%9^hjE*aYK zEOD#l&0)6sQl}H+s4Yhy(It{LIgtjoNTNX9lE(x$&_&;T(YZzD(S&DMfNDE5GFm0W zNn|_ON=Gagw~MdU*OE`nT;Cmb*$o{fIS@Ip!8mf1h-0)IfF$m}SS9_sPehA@+DuGj za?x($v#wGbZVlTHId-HcPM^*Tt3Qk9J&{X&RJDa~7Sxp8cMZhRjSLJ98rTw_Z3e7U zd+CO+E$vLJ_3x74T&*)Di@|L0BM{nAHs3VOt!kMDA9oDaf1#qaU4mqEA~UG^>aiql zm2r`Yu0wI(w#0>L9fcxS8i4Ad#fZ)&5nWb!`LsfjwyQ%_oLYbJ0wjx3wCr@AmdWB* zU71+K-u~b7Nat!xaxig2fOVE-qG2Mb&+vrxl!Vh-=b3gBSS(UWO;CTKl?)`*GM**B zY_on@m8djZ-cUqU# zjDoINiNDsZXwu$8bcGVJwLWEn3F2CAQ_NWSH}4~1xFAPu{-UFz6Fa6V0UrOIwCyK= zSn*dM$zh8wfhy-Ju~p-p4++-g3LiEgNdJEphl=?wJc_upcaZadDlVU#3Dhtqd*A6 zBsMIy#?dJTnFwuoU{*P4K8YA>UZ@%}WWvuKB#V~KUo)>^$&zR_yx!F&y0_-W=DCfn zBOWsLZd)7Mm$xo0x-L1cJkkN>=IG!QRX|d`Ta6;jg$w8&^x1t-w8GkkHm}sIwSGVz zu?wK?A=-h6df0d2X6U#2#n2+z(uHc{eRG;E87vP2dTcO7@Udb&HeyiEPrZFjMN!@^s4LrY?^FaD1|ydBuJb5jJFvlMBk#t!-A@{ zYqoXvW$S74G*s%V-pDEykvVe|(6A|Fv#y&M^2wlTTl}Sc&>WrWrjwi{Ed^!&wN$~o2OviCR1`w_lkqnvb&%@7NT&)13; zqShUkpIjve6UsLFQiM2D_if8x!&JQ9G1Q3(N2*g!v`#uNO-hvTMEZ!g)v|cYiRhFm z)M9;8;3jEGday-;gm3vU=}(jay1BuG`ws1VB=UMhm;M6@C+At_a-NHTi>=dlIuux+ zU(k&DgIKLYXym5;rO!x%xvsT0gYX08e&&B zFm-b+m=`DNbW=)Qi#w9VhbNrK-I7O)Ef!ow>~*B0%I)*jx;BjwtkJmh2bf8McI$2G zX``xQvE!_$zN;_Mqe&JIiN%2>0`M`g3&gC7Iq9+12ijRYGc4EE46VE4qcC@9MV%og zjFjvv`F2Cc&XrW!1ojQinHDRO;_i+ckR%fcn0Lz`1ambkJIthdWmB`wrFvU|T&OF}1rzL64J*uN_fba)Slc!7QpY47EtKWPpmkoxPQtAAv z-f)v4ACL}l8GSpttSfnAg^Dt98kS2rXI4d@3&uwfi(LwGQ^{esck*mj;)YKRK3YRi z$7)hQZRC|c&a*nT72c`ao;ZT9Zni4lhQ!lm*wL&}-wq&MMXBQ=8^4X3yxk*O&M2;c zP`*iLwu%;PIl{ChZ9VI&FqWfr4`BIkW8D!wcaGS}gQ{?G3@vYlCMj5^uMTxG#6FRW zvQj57^qE}pyEd~)AI$!jZ>)45!Ln#C&zA3sLwZr)KK66hIvRO)>37uDcUZc8mIVG^nMA84Az(b%*X5~W&D{6Dc8p*acE3Vu!S6=9O>Z9vCe0x z-6|aB%4jpx#ESslVbrBu9BCGYmGPgbK|gmL!`#Xt#$IQ!-yR)b0-0sGSw(B-7a9~THV@byp~y91a(qu z3z1{=Vt(%~EcWYU1u~MGuqSe_ZPA8$zAc$6%QQ-`6cHlaGR~aNc~!F0e4|*ZCz^+) z7fZ!!$*vewbbZluII(_jA4*O-Zqg)oJZ(~CE@-j-fbT{8TeR@y^dsq%$P_re#K5Hu zRcEHtO#ao+Z%bA5J+2XJ4^#6U-ByH^gqRT35v|GDthKDEnq6edg^u)Hwt481>MKoL zQR@`KMr-f31el@{W^3E$wIrq3;f_umOf$JwzvOPCV&HI+g!RL2l}FpgC#nzk`(aTB zQBvsY!6x?mrmVk)0i)9 z17~+-y?VaYr7GK1FEO`B*yZU%Y_24BxOOX(kVV$w*AP)dvU0P_J|hdh)a+|RGLKqi zGa!EhZCleqK8KGaE4Sh_A+*or7c|Uk)By1gi%&y+Xr};*?uV{w4BBT`R%3Kwpvu^d z*=6PRB@A-CLAelYopq}{pNQ`h6SIMdnhi|!zS|u{Q;Q4jzEN-&%lcy@fz?_~5bZCQ zJ^J9c&$x6<+x#52U`v|0BpKMx$iVg$TP~3YiK(G=_Fn8@!7)F`+E#j?Xq9$L>x~ys zqR3TwFOcQj7as5E0*}^n??*fbu(<-R+?`YsAdCGMn}qVQSihV!_i4cfR-AS{&p}2c6Pov@j3U&`zXDm>#+#(m2J)dPJ>dQ11A!OTq z8P0yGjuTDGEV{MDi;unu+Spta2&^`_`J>hohOQ;p{3USbsluj-%j~-=OHHInr!{1K zyv^M(?4`^y=K2AKp#oZ)9UY91s6>s2fh50ajRxAl+tBJLB4nAPdfq~r0Fxiu4lU*O zC2f%u7`3YSyMds+_=TZHcijz})KXBzZSJ8))?buP!Q07CgjK(86^*ZvICQf81*Mk! zxXKofJ5eiNBL~c4bv#85^g*M(79X?=3RKUv$S$IdH^tF;tR{(L-AY&5-1?cP z4Qi5+>{NxB_z_6e!_AZ3CZ_r{bubjYw-zsQ6D@zvRk4l4aNP&vj##)A%ar6hyV%5b zpKW`vI+DvU7f%_q`|caD``^!12gVTwH%7qv*s>Bpr^Fky;J( zl_HX}E6i_=oNi~mSP0SYrbK(JG_WIRUj#R75U}#{y}v7cjlY)X$q`z$H7Yk*aGpg2 zyc4MKNPsY`o#oBq1UQk(9$TuC1Jsfe3FFI?U4XRT~#B56_+&D(3K)3fuds?_Y<*hdR=5&9VgR{<0vZID>7 z0^F{zdP_So^!)9`))jae6yeEj1iO*8)Kakn93o?tcvWI6@|WVEl65O<3WQ=IF9P$0*5Cz_=wswKQhoZKHa_`S+>#8I z#{;1M#LBH_+n)3=Gy8&Cy&4JLf(BJD}xg?g`QZvrdu z55*e{sQpD-g|&kN{CW`W$xibRiJr^2M7-l&=%Pe#eT&=9Tr&eLAo;&fNz) z<>IsI_ zJz|Fyl=LTL2fB$YjJ&%d?kNci*_=h90{*4$H(^nNP; zV_z|L3ybBWq0GRp^{k9Wr3-x;*rMFAQ=ddJM}N+KA);e1Uv|gqhWKF%?XWn$XiHqf zbMewY+YBO~Xm|WNg5s=Y_Y5_*)~bZhLLFpFdX(JVjWPi@(aE8tRo}&UTfuVsr3(*= z*Oc7A9$z<33FsfFsBkr4xRsUsS{ntcC11b3w>rK>ePu)I!Z!ULRYk=-x75Ss@k4Hm zk1k|4+VtMm_!3LWxQNf}mDrZTPPN72TVxL>y*hnY_OHZA0jvJtVj0V&R!fgLhO_|c zp0csi!+>+HPwj%zcc9<--&rotgB+M z~dj#|y6Y&hnKbExq_Ma%Vd zb+PLIAGf5D+DvJWXA4GdIbbWAt6w_Tlu9$35kH$F4Z{}Ml_zCf6~CUV3s%@s7OxMoXc@bU)KEJ3hUiSyWC4}Cu+CWO=SBd z#59dGQIl!Alr&(d)wL_O{92DL~@f$m%9Y|87BRdHa{rjzZ*%MR>0^ue!6ocqXp@Xk&I4AWk)m`>>b%?L|4tJ z5hLH6+BA}fOLOZ-GFrwAW`vAtOZS%;@oOvVy7a5o%Eblw%*ck#w27prB`(`I5;d~n z;1*oAuN@rOW&2=yWW$qKZb~khM=j4UKHIN6B$izG@rep=pPFs=RMTks{7vPEFzTJ+ z(_mOdY>2+N^i3)1GBhYuAJs5#USmsp%>-T-G&C*Y#kAEuHMQ3SaZgfQ?Q$E5)w8Pu z`%S>OVGtkt&c_Wes94=8-3?KQ#LW)=*hG)P!90;@Z(nWpa_^kJv(WD#bz#KjjNL93 z`03^Stz?1?``TM8Yk%We z*gtzD2f7PgCtnzqHv~))U1C`ybDsmE<38;y{=$il8M$9LNf&UD&ky#i*}IchXhe5_ zNlbMscz()gYfh!+x+IKsyYd#48EJP`16IIguLb>aJ5JS7;cu%A69HZ*|_c=vGx^=xFO) z?V|XtoDbSQ7A}OVmP`m&_3|t|OC9Ceye)S}2UZOZZ>>R6-l1cu(h3cyn5%Si4aed+ zA#BSkRk5%TuPvFJOUDx({#9$$udvSwikm{J?*1USZs!{^3}$+RVY-7o2qnX`8U5_0 z#9;=EefdEa<%StB@|D*g zY+Rcbo0JSs3~UT?&Pj;@gIak52DHKa2u7UfFY6gYS-voW5jP2xH(?axwg#E?tZ@^K zH5Blg#QM4o1@UGM9iZB!tv+#4&syplyM!4|RU%sJqOQ1a8E&MScXn0LhJIqP2Z!-R zRq==v=!6VQyy_PR!ljKTEzxgLMF&}IUZCv_YrfcZyTDGV`aP_(j>O3L7`3h7vV^F9 z#@0e38;KFU-b^YII=UcAyMHcfT0yo6RI0b1kB{`D6q!!eKB{W@L;%6Ds;;Vn$T6Vl zyNqJnMiTH|$EHZI@u!XWnoV!8#Zqgg2}^#^3K_yD)x`S#GJ@hj$&zb)F@c*cM6od0 zUFoe4BdwxU-8(hirASkgJlE8--N}L)pO0~gg~`)&qNHr?rhfezYc(mYvHmCSQS0JZ zC4!2C9Dm6q1Nr1hQ>K=)DMvn&OHPjtjZZnZ8v3HmS$``-v@g$js#Hm&%SKbcumq%tl(5%cLMa zrW~$nQI%fR9}6}KGe62>ZrNQF@cge6h5ULIC0(wCMK&lv6IHcJPh$%r{i0w|>i3bc z4eEt<8Eu`SrmXI2>nn;i%vHuHgvdRyR}^DG#=;AVKloVsvB6lACC0v!x$?|e9U^vY z!KH*WcGtIHV=%k5HY|K^eXC<2Aygfn^-ewX*%C`eOsVd~3)i1tN|OKSpiN>`*h%mD>`IIiW8AnODIE2Ej} zNoGk#h`x!#*d#{jvB}3?b>OS0k3~nOC(@BHk5X|u>ueSmSkTfpc6o1Zhg+awC9W0LF8+449N_U}EC5>geN+3v{f41b9)!Vu+E}3Rou~FLd9G`$4iO_EuX* z67YyX(VotUI4RIAa$soP4+ECMbX|Vu+8hTK3qjEtb@E+%A06?L|89lcO)!0se*VOj zFY7Z@1TITvLS;usL*qO-WFBYc7NR*l+5B% z>aCc9s|_*g*l7(8Wh5563PEh9rktz;3~5nXCr_F%X%eD@hQ8s}?7*@j=w_676Ijng zwlyu~Jap6iV6b>>rub{Jb|A~mV2bAcz)SJ!4{L47;Zc(tIGEhY)k zf!w$nVc%_G`)|5*3dj-?8#oa$vNl9iifysQ&A86up>=z1K#ay+EK$32Jw$>yXqZF< zveYTM-snsj#X?s!4r>soo?ZJ+)@Hnug_e;l6n`~zRj{6K|CsoXG)LdEv0_?wl0Kp{ z8wdk;nv=%NwFx@RNo5)KL)C8J(1L5NmjKHYWJ^A$AAPQE>Z)Dgt}Ea|bq)!IQ|hMi zQ{ehtr`qO1Po|3>vFj<+w(~n!6)nr!Yv-xoXT7|3KHYzPIAzl0V`?W&tDQVKoOE3M zF~^UeG-c8xEY`NtKk7!!5_?D2PM#D_KCb>~+)TyZ63+J3w(Hacrvr75{t4O#;pYSk z;f&M!QiVB%T=#%BVS7_`d~h-g2icxM?pUa8=L}GNIM0l-;SBnnE=~{jrAKs8Pe)my zixrB=om@AG0{|ug)V4EaueW2=6K!36y45Z=DrefAT19(`EPZNiBNHa~TT0V9_`0d0 zg^vVMy|oKC;>Z!TY`-ZBGpF!5uf5L9hKJ7#Cr_^k!f;vZe7@Dx-;yd4OgUEP`a8+2 zRBsIfGwr{MR>|r6RDSdIae-pe8A>KiG@V&I=j{VI(tqQk};ip zTv=1k& zwvbJtPDL>K3FoFY^Q&BNjcp-miMGoqN8D*nn6F)%Df-KTCciPGnnLFt>TJurrp;Ft zW12{6SCuLPXHPmao4=yUA_t5j{Qj!`h&f^t-B1eOb<81?$3nGgwSEHI93gzJ-+VpO z=~PV+W~i2oP#M{G_cPEk!v}8RhzIlf&VdK+<>LqHF5k@{6;#$u?hYI0dS?8~!ibT^ zVz03{(rES?{9vea+Y&L-X!jcJk;XbS*k0v_10r(2nQvGa*hMS(G(R$@Lg`hOAnIo} zW@soZ4Im6zg1g9yuBwzZJ0+fDF8n|!qCTbO8(bxWylL?g-QM9@2p+hlvhcvYRF`n` zP5StNQm6IWWrZ#e@u<+Bm!V1~Vf?@?Gak5?K7+&lR7)CGI=lG>stcB^@>ThBk#+AX z3{}TC3I)n(#>5BioeraDDlkTR>i_Vd-epLo@l=j+LpSY0f~E_QkAKxtq8!nre)Ek5 z%c=)%nf1WEWzwd!yPO*yo1$600_c3;-h>@wb7gOTyq`l+K5&blhfzdpIX_Pf`Q1HB zc(m&iPyjSp2^d+`7CBkb*gChyJg=VJiqo8QXRjPzySi)hZLGej#5Dn;;?Vh8&2pc* zVo&a>8^S)7I2%uZYx1ht7|5__>Dm`Rp&54AF(ZD9f;_>VFQ0)_U&rQ~6xD8Ar0lo3 zYQmtp1z|irsM%X@A&sm+GMMC>Tg!61pqA5~sk5vzGA`2T(}Ca-)yX17EVHyzg0_S6 z{AhjFl~XklZlj5BRr{WsY`FeM3U%%+7rj=v67NJkSlFE3feDTpCmVN|LpQk%s@Z$ulFu472eavCGrCqHwpAy8T!2eiWg}K<#r4=;M0tleoCW-O*3H%Hxt88rrEj5p4$76a zCIml3Z_1kH%Jeyvr$KoKm4$#kXomZsp{0enp#2{@t&jsTt()J+y@joftG&reCpNN4 zyP7L|nelS?n^jFZ1M3geL%RJqy33^S5;Rzw#U{Dlr;7_n1Sf|qDJ-z4_bhC_iwiyU z)|F#XG7~Oe${iok@3B(zmRe`3F^1FFY8rHpDrWAPl`A@MdPV>9t?8h_u8ef~W%7!O z+J~XKV6A{d@!IfE(O6$Mz$hQ(Zn0*{*b6OTwd?AU^w_Kq)uGzJi@2Cj5A^lxbZTu; z^di;zP_wtTXp2;<2TR0RcUMLuv-&w-%*BXkagh+aauhhLoU8)W%SmL>8*B35#)x#b zx0mje%%RWGDfu2Qqd>`*&CI{4{S7_{Bt!MRFc(V^nQ$&I;V-yZDi1 zwl%c2zWI8+tIqjz=e{K3PFgu;qf`%*8z&@11!b|dBF|`?(Csk+RW%+^+}=DLTU2X( z)utV)!gX)Htuy0(@Po}*F1V5CYW0VKFqX9HgQij`OwxAInA7N5y5Jau|551b{yGAz zt7i_~Q|Etvrfz*E%@#^c(4gG&$Fxm`P0Dn1ep{C}0NOP2J@MA zTJK=9Ge^=jvHgFVJGb6AuOnUeHGf582DB-UM9GIZ8;ZvULs7COIuN3iNyhRJO|nH( zZjuU{RAdD6EB4*K@?8Q5#sK!k2D0}R`;X1@R@FLuUw?g|Jl@z!ERo&oylPdwby&43 zJqS}`KABacQFQ*dWnmpAkoqF+?W@y6HdK4i>Q7s6iVcjl_wBK4jC?wJ|6+_g{0K^x zHR>H&vPLSxUcS*p9y<2^0=;q3YDm@6V4g5es&`KW!uBTLkAV+>%f1*A>E&L3_?y66dbmFy2k zm;amFaiW_b3sX}KMcAjXRYyxXOaf8qx=X3AlwasSuO;4S=AJUtY>+|V@t)Y`@a*<& z&t;il+2G}qNH)I&hF0BjVDjH zp6u%9r+?huV)}U-*bLPHw=UabV{61GmhTozt|KdCcoMmQp%bKKlF+Tin>%-QjcgId zq{wwXMOTXX4xKs!;s~j`xK_=U@D8pE`L0a#EU|MYFZF!Hpv8e5{v zYVRN)Y22cnd%v}JDG)!(V87!xu3=}fWp&Ai_Of7IZcBzfd4LD|gFP6N9uBKbe{OOY zJf*j=km^7nb!_`UtJ;642OcEv%ZHy{q457`mSvC3c^T9JP2E`kAnde>>9)q_rb)@7 zx~5oV883{&XBUuH3La;ajUTLY^G(>%jGy0N5K0i+RQl4y<=gkz7eDNpFw{Fi-ZA-P zlGWOoQb&^)sLDs@obL0;@J*8SXvs6&uTvMyE%A6_b!Gd(rd@83_q82Hp)C#BV5#M`(0?wW2W)r+(sY^o_Z z?HXjH8JQDBf896EuZA&ci}8!(NAI`mSRUn6X-no5JBC^^?ha=2p}1Z+2yfib9YTmi z+xvPb)Q9MPdEo$hU%0`&hxBJ2zI`Q;#>grfIAZgqrxnJK@RYmfob54$q*^5R*(n+Q zx9}bK=Wsa)C%Jp3nt*I=vfMd_Ux|R%^IhWgH^-wD$*rob(uwTvv#aJQoS$MIX*9ub zun1w6;?cOcdrUi;YPNgqgRC@cl_PQ6)O5VQ+3k}b0DZoif}1Y$1gbS^^Z`2r!J;`& zx!`pUEwg~Mt{QKJ3F81Y2gF(m;RkSu!nOq*>G+m2<~F&?l)?cM^YNe?h!4R?Ob1(W z+Z)i2qDbAGb%+dGy8t%23KoSMSa}xGh&&Bs!jlRAY=}wZ<(zip*%OKH?^!4KCcYUAi=3jcP+A>)HuQJGoU!RmtA(X){s_9^KqGL)o| zO@BR$%I4LYZZ8>d(p7C}>CNEmO`xM1FwQRNc(h)>hQ=`YyC_U%sIe(|8epjs6Fc1# z*}9E8?67QHYba@jAy$I!3~RyNf=`8AshA&qE3*R6${OM|M|DQj$z#}B=Ot@(Or+rP z0N_Hi@?U=M4zXhDzQ5h-v{Yra2wrfiS`luK1`fG^1`oNjb(hN!h+(lN z4Ekm&_uvY{4guJ zBN^i>Vu@3Q?A~@;_v|VNG?UvHmMk;4e8+Am0?l-U&;;4(6XUTuSqi zyADxWc6+V(!RbDMc*qfilA&^!C<9rq!Ga0U(taI(AqFWc2V<0`(fCd(Idtw;|Mfm& zDK4|nYV)^O8Nu-6m;h`K|4^8RsrID(vq&A~D8Yo2FqU95c8QF`mz`zRM`IfAI8JXP zB2eC~4e0$`Pcg`80W5|un3YQKAV;=bVH;zD0>h=v8<>?CNk%{ysWC zI!?>%W!A6IC7P$ff6S<|*x?Q{>ql7!LU+uQq;n_GQtb%=8#h0n>P(CxM>vJ{obtYf zW3T_2Vr0&SpI>W?R5RMUKt~lqGA0~Y(UhEl7!7ur5%yy-57_<-lJ!myOx%nbnn>C zpx`+MFSDObTR3_TlLhzk?beegkBKq59Ue-^&1D1&Hh4t@0rpi1`}z$+7GDubR&)2! z#zUl3<&+NjEqj-CPkzty_5Oo=G>l^4nCCD+qjhbdS6W}#3?BPb4ar;BW7g`iw9iz*TxV6cz4t z2o6+$t>!nxsP!K}0r5@3=X^4r{KRE)v%mD;Q__y#^xqrluS5McVAj}WOl6YV7iJ)Z ztcsdZ*PCAj!wn@@MWRFqWz%#en$U4!bSX|C;t&}l=RSQ1vA^M}s1YB9Kl<#mk3KbZ zfM5h3Bqzr5T8wO|#^Emijjekq<>lLf!uO1cD5^omC#V&1K@M|*y+xCnay2LMG!!{a zKW5D#rQYO6aR6XGV2)*0&8mn(V9rht%!G#IQPvWDZN8wRW?J{PFxd?+Zj6+a*V@VU zkX*;EU04)I5DN$4|5K~rmZo6#dIB5aEJ0*3ZqB@0MRn@!Uah$eU>w*sBGkr+6ilK8 zG!o9CL!Mhh2isKiFg^%F&#n`e@-ve3wYf4X-t2m>34oB1%j&^N!jWZa%UK-ZdpwL4FfAJKHlBl*xBLjr8_hwlKW<0d2t{>h|w^EBBd6L zFk&|;9_oX+qTC-bIKL)B&2gg6q31Pdt$|%=PP^^_18Tz?pI4PJx5u({@k0nkmpJC` zd})1bA!G}R3+E#p8di(B?PvP~B%-#1d3I8+M}KH*r(k@63(VC;t6S&b;vha5GdbM^%Gm41)e=vV_v&`TaQE`Lw%HSI? z2Y4l4F)=WFs7pI3DuM+8X1mfMFe4L3iY;ZE6B5$xRiwxoxPS74u7_L5YE>Ww%&JiO zna2%hOFl*yvJ%K+_AFXE)+5OXhGb`2a54^vymqzk9UG9D3DED-jH400^#$GLFsH>r zi*v;PCqJBUOt4C2R{+1v7V6DP3kH+TsaIt8xn6MZrDQ~_(o#d?AU5rA-jjhFH{1hd zXDD&Q*id<8eipYKrO{Qj$GA#UpFczKg|at zrM$R|q7iU4;qbA@K2Et^_9}a}T-WWU77cpJuM+-+*{6D{Mj7H9UJ$j+lW}!am}^Uu zNIScLG;C0flsd+UCC##20>xW5?b-fQY;>6rv$Yg1a=WOBPrO5L@xG3Y@Qp6>BbS+Hc&ux;52g~P()I{+<-gn)d@wpNx#Hkqr}^5}=7iv=|a z6tbJKbZ07Q?)F{l5mw-LHx@L23*vMH^ol*7Lo2P4rCmbv6_i;i!-0PHiLI!Fwz*jC zFwdoTTpHOHn`HQf*U~9NSQxHakk}hA#-2QCO>CzpsA*rJ>-ORSZ4^5dG zMmyW_%(yAze0a`bs22IEuyTG?I?tHJtU2;gwSnurft{on(Sk_vd08-97BBPald56F zgS}d*tDMwaTrOEQVSre~kh);6t2oZ3I?KWdS))vu;UP2crBoUe7V~YoAB3Z1Lm{xA zfAu{N5h>xoD(S6#i{)F9YT!{hqU(k>JZGU$Ut(YC#Zq%uu#+*uIXe86p}q%zv`qm) zPfKBoG@5oB?_kAq2RVzw^1k5$p+~rm4YkuD%pos4FbQ`P!(J-j=^q1{vZr zaTiYjK#PO)(6>3oJVZRMmo6-g$%9O>fW3Dv8MILbYbF{CXHXWUrCL^i=j881cgHaB z{KYcRtjR!mzxFK|iP=0W6HP7(qfbCNMH@HA)|z5h)6;F_=4TZ5*&hFdmeb$Ov-u`7 zPEaj7L3s+8j}#kgX1!CaU)*;#@MG6DDrA}^VG+D;^Tb-6I6W}db9a~-SJ4EMpSXc} zal)O;Z`ZB`$I2d0T2cxds*~*w10TB|*<#EN+=R8E^$IG7=QdS0y*D=se2F`e;pQqI z4E=6l72jc&NjKPA(yJVST6)7f%0+R2QJ>W`p4IIp< z+{IRB_bj_n-Sy(yjlLVz!$!hBqQI8W-eQ%g6t*-XBXX;F-d9>U4*}@uIWXN%nZ5(y zDAKNk5d8pTo_tRZ?6ZTOXO!r90<4V(k(ew#?tf*Uf2|0P>a1MsarBf~-m?<4zD*VY z$ts?NCD}LelEKpK#l&V~*?%?-t7a60E)H;6c@hm!5hihlV-94$D97n9H({3OvSDFp zcADJUg71xHXHRHmm5!0L%95^u*bexcT?y$ZpDy0(FuHZT3OG%RETcsu6-jeSdq*#L z(AXEOql@(Q)Qs!0DeO7HTg6?4m#YDkv`YRzg+X=l&lf1?=fONQIA6r9cYunx9wHk8b+LoEK$8P6BEV-RmDVn#1+`!z&ZHNLUE*fZ{eqgm%y^9kH9)Y3GMI*y!$3?DVm3bMaY7y;C)4)Fif65e)*8c_$=OIR z-g&UD+L9hHOq1Gbb>1RyMXko*RtarPZu{zr!)xxT2m^q!>uA{rb)Xn)5RK@5gkYrI z$}qsIx2Zwj${J)iBI3y);wsWCH$Z5n^}~MZxJ0uCG^Hxo*;hVHc!P5OG5YC93y7g{ z6U3lSfPGCTtU@>#Nm>NCo3!cp&eQ#!{rHxd)j+%jKHX^K=7Wh}7|8h<^s= zYtRVcsIwvwO0!WOuIN4BxZc|=Pj72#YSpezN)An34o|3q{fZ>P~Ol)ebrkvhx_VYfAx?3)u;W{f9tIt++01rx%ypiW4-@y zy|-ocKj;|?@s?b?%lHtL`G35-;jbfMN`Jshq*|_ zI*e3PoRK}@9hdSX0b~th`Ro#*c#JcSM851YjGaw0RWWr>+f@X%YUx5#`Zj*0Lv%ld zt+H@0bcvJHOqOFH8IT*2ot`}MybudbKHlR1=>()ua-%xk;jU9hwG>*PZ@y@W(_A+u zxxoOCj#N;apzEd@-(iKDl>wjiO!52lbX zk2S6C_()w`FPCE-8s8RYW>>^P6s(HqaRn!3QmDT_Bhwc{g~J zj3p_QDg>dOT{z_B+pkdYT~THBmv6szUS`BNT}vvnV-i!Tsc7=v-w5}PKM~V<_v*ju z-6wlC_wcW4RJwrRwrtz@^4251&Tw(wd&)7ngGI|UTe}cz4S2BL!YrUthZ~iGSGg3y zt^)zJ9Dc`kl?CwTnSM<=NQO9eU=_7WGJ5O2nu#@&&UFb1r^06tYD_P3WG!F8ax$xU za&mN}DzUK;WG5ISw5AhD@fo!=@Q%VeGVZ|6TLIVB7_b)_=sqfi5@lmmE(D%BFxY=z z1`?SVjUNgvH*yrLdxU%`Ko^3C8a8+Bhuzvpik9a@FN)^hvIA{_#gwtnle4+yt1S zS~rtHW|F0` zW#fBm=l7AI?s)K$)1nTcaA&P~$ja$b$nnFDRl@4}Alb&7om{u=(^>Y!E_TuQybR6y zb4$+j;6zZTN`^*CnDYxuduRN|h^7p$w^JoRDj!S8)pQ5DE2O6pj6I2Kqu=Wivc+y) z4Layddbc~4XSP6t!QV^XHj=gGQ|#d5wHf-pHU^^18R3@Pbkp(l%!t29#Nb5g z7px@1eC`O$$zKcbZ*Gm2pcrI0n3zNNl-Z>*4(p&Z$4eIj)kSQ>s{jqz`%M6pl#jLu zBE--Ld?n(dxeVNWu}+B4rxT^psmvTP7g)6v&vA^zT4>wdkTlaYhd{t`*(3JAHaS~} z+Xb}}Ga7+t8j`p)Q*DQjbABrpATVp%*Zsnm58CH0C`}iE+f0n%#^wT#T`8SC+Nz&l zrqzUj>Min~f^JOQ&0mZ#$HsERRK)|OJYxgQArm*Om+Q_2rThuug6!uvpAs$@2{Nh% z>Y2S+lnnB#D6*?33Wk(V(d;t`dS-Pdg6G{96GByoIvi>4LCYNxBX+Q71dJH7%_HO7 zS6BRTcaUmGv2kIg_i8UkNa5f7Wnc|p5 z2HVkx#p$kl_!P~WCvXhDHnHyP*n;tqA1U}nbWq{_0k$tv4YD{T#NF9SGvfQ5%nu|X zdfRZVV7k?YD%WWZo|Wm%QsBA!^euJawL zJZ#Ln0?>sI`gAC|k4Pod*6kSU1%vI#{#FT9*=SXY}R6N--e!;*-AM+Clnd}nua;{kC9i_#HnZ#?}H z*di;&!>xzE-6DfQM_W&}o<4i>XmM-JKgyS+)eOW*5-HrUpLI|cC*_AeJMaqvZ z#?yOd*;N(!!)j$?E}KsTg3*f*arNGj2rb1+G+KsWmTwq>=h)0@cxZ7K&4IU@-x~E# zCVwX7CJXw^~3GtgkH8*P*fwoOO~|#fOmt zQzBnUl&S&r9;T-kvc~6{8d}U@PWd<#i+M}!r z=iGy4Q;FM+@U%L;plp7a|En;-?1`I|<*|2{8tCf)TQBP_L?>Q0vNN&|{5r&T&aVuADD-Jzx0+GXr$nZ$Kr9kcS%=W!S=O5|Q| ztLnu7wFzZ131dutGEkwhag#V!h_w(^9)gzSm&V8e_vV>f=N&T}3Y)#oW3T`*{Z_-B z3s#o9y+~JE-FoWm@r;C}%?X$a%IrL`{MEL!tfxncS~?TkB3?0ct+_RKTE^~^Ya&eR-Le22eQzUSx5P5BWi8einX%ZVv5uyHa5J2;*BqbM?5Z=#m z!aBPiJiI!uUmDk2J}-#K4}8C_*BaKhaW?2Q4rLizw%y7AWVtl!302>Dd%k~Jb=DK- zXgL)N7K=~2txylZq{U6r=4$l?O#x{ZpiH^ZTHvG$I16J;&QgHibzP zwXg6)Gp;z15&Gzml>%oFDp}c?rBsi(CcA2e2f;n#o9cYl*>-P@G3$1bv?9i3?R_X0 z^m^SaQf)~iO97om)20EdKhZdnGTMkMDf+^XE$efU;b!Y&7zyu(i3v7XJZtW@?9So_ zgjk^L*S9%~Ct0c~hLR4Wj-C)&6-O+~eH}!+X^+jS_ax~dnJTZQUu;a!L)pE19aV(O zDqq}LN15)to*iv9y6;TuxuZ#h#A3GDGbgnhThw>SAJ=emQ1J5YKXdL_xfFt;A`X`?artNKe!u0aowAW-boMZ)ZFVFLqLY$HGF=)oc>c3GZ7hj*Ds`6UQmu2d zmFLSxWdPp}*Qq0C3W?|AkzfEqB&M0S>l`gQ;AAOhcW1u8Mkc;TZnZN@6=zCS6L+*X ze04;V5gTIVSk{XA*noYS1 zUlEUTV`ua~8#_JrxAks!sqau!SvHYtPUF$r&aXy#P`}K~)!X6QBsP;nkflUk$^OT? z0&*c?9`{M{C@XK$d5j4A*HxeHeeX(rHpx{}cj>ft-U9~Su_^bySf63pOAl~JgOkb@ z2~^wu^X7|pv zH_EaHkKhdq)a7BVk-OP2$=}%x<;nrFL_vNZt!`n?NOA)|tM|Gx3sd)v^FjtY3@fB5 zs=U+`%Z#2w?{C61J(F35W&VyKAw<<{rH_SRNvAGT$38c!M4f9ldGxqZiwpAu3+rP0 zWC)vIgH=(in2>mZS(HZzZb zQubEC1yr-ll(&9;>z3$b@}tAE3_&PxYxT5u-_qh?p6HVnrx&lGWF2nm192;B7u+%V z+nG+C*p1ywuL|oTN&Yo!^wlTLi^(GT6v={bhKJvEW-|w`rX6Zcinf|ps^(7YA+32d zhI8(&_bx*o`RX=A1hIgf@EI!V4xVz~0~;Tag<%~pKfm3yB=fmXTcINr4LTX z=8b_?A~Jb&UZP(R$u7wVKZr{W!J*wsA3&L^5ol$2 zu3;hpVF;#`%gj)_C%jeo8POwrjUIzp*L#{@**PF_(=4Xd<5+pLw6*YL=ushQiaNGq zE|NL7gSPVP33|CS%FeUA(SS}9f-+W8;sHHfH)|`mt?k*+VzG_I^uo*W)$O=<*81Iy zf$c)}VgL6V4<0|6`syoL55Mk(N6t8iSU@xXhqh4M0RrmlP1g;#!K5&2zLj#7Zp)jo zFEWSJevzH~_bhGna_$x7OR!YacQ-cm5<$b;l9d;-k>*y}ZFr^`yem^gvy~(lMasT+ zqzO=@q6Af^KK=kCMA%sOM5->K{YJ0hB%0gdO?tdpSpaUz0&p|+xJCYz$D6;~dHsp4 zzvIi)9@-%O4ymE{w_kr6Y-diybc9GkViwFKd~Py5J@D$$4QB%bih3h^^5Y3M2n#%c zH@u8DYtUQ;4MYz<9#3_UTxv1kUs<(oc9RBDno!Di)0RQ9;?7LQxY7PO`KLvZS8XU+ zREtkY{5e0xYB!vigvq-|#so)`XVHKn#LXSU;IK+cYnA}ny%I7tyST|`3EgE|TF{K< zd58v_eRk}X*v&5x0dX#yf#cHxk^vE-VI@wI=!CTGvdHiimxT2qGw@F;jAh47qn^*%kFT$h`Ai1E;yUIAOR}nV z`6}sjt1g0gZcv5^k2yXdAN!d=uYi!B27bxMftUd7Nz9LoE0D=cbGR^iOHIV2v(>;I z6LJI*_OhPQ1Z^c1!Ux{C`Vx?)h>cvb#8hMTOz zURyGE4d3W?f${vv-DC$vf#3}rYL*R2zB z+s@j#UYAYM?IohSg+|+ zU3aV){nH0KqFWz#8Is=yOD1SF?|CBG0>~zt=`?-+!nGPQ-n*()khM*@RfZ0uSj)or z0Bp+h5InWV&KJ-q>SiteV1Eq2b`(;Jp^quVhNI}$Q59C8XP@NI@g}uQ#@#%JSu1^< zn1MO)sppC6GzG&LoNm)na9<_xW`xS6B|C#|yRk3?<)+YK0%or6ulLtd6D3i?y1kuY z?OLP#mlrsS%AwTbD_H?!_SDVm=a%YwaxyTHiBFyLOKe_BHo}= z*w*M8SdNB9oD+DUz9hBiu0W9Q7Hz+2%CNeqr+C{m@fN~qmc3Rk>22G0)i|mO}pD*f`r_<=ZFfbEUT(YJ&RoHe8$1wEG||^rpgwWLV&i zIe~@7O8$|}^K}l4rb^d2i=G+lDd}BpaBC^zPOAO z`mNJq)04&qd3YZuu#@Y-Xk_fm8R(;Ql%?}l^)w%-J6laO#>_)vzI>lQ5}+s-9fwIj zXddWA_3~{gt+ih>m|D4e&+gxe<0=Yv-IMaK{S8`V%K5-~I=vP4WNf=}h1S3a0a3bX zXPD9@7itDblZcYZ|FYMb94VQVFwmHwnw_~!3w1PF$P1(F3Xl;ukkHtA?1ZbIS1^qOoj>{Hua=qpcdQd zp>eZ{lvKa5!HtzFZ6>PLE;K!jvAiu8v#)Wkg=omPnq0vFa10>KnOT+7(~#n0hr36o zyZc}i?o{ml`RL^1k9J?3jz(*G0ytro$i^b*j148{jB<-ApG@7<^|7gWOG7~3qUqLv z_LeiXZqbvSn6#MJEF=5#;OP9-(E$xxz9p+-L@uYZc#;nRz~CW*#>7)riZU}I>_aQj zfjk>rv)XYt>|Gnx0O}^P3qxO^7U3Pnj9v|qpjg}KI)G+p>cytDe^?#=gTiW!C*AhTv82KV)< zGkMdT-n9xTSEV*Izf+Sd3Q@O)pPyuqFa|6@1H9}K`;|_4LhA9c;A?KvAAjsHD0KG( zS!>ElHey1io^o>nwVx?%K)Pd|R6J)SIR#=fq=NJnad(Zu>X;Yumj>h+pdlW+3`4js zrd`v{g>>AfX>K48h^{>z+al+#JYqpnj4kYf34j*a9lgusPraD*V^x_uKNdYrY#awE z{psW|M%G(F8Y(0WCYGD#I7$w`tc|QW#o`rJiXL1pB=jzPNWg=x1l-j#PfQ$Z_U*1I6a&{X__m@}- z*Jw`1)YZ+T>3aI4y0lc4$6q!$LUEq{(^0h!@M_aeFQe)o^ zziSPn5QX6`P9oGKh!LioR1-L-_bN^rG*S&C?!a}_^j+86s^68$QM2?p=lW*f9NoiG zx%z1n>TkNk8G&;YZ9Dv>`_JQcrlY!=lE`-d*)q?C!XDse;q<6$!b)b;&5r0f71?WL za%?VDu81oFZp$&Xe(lT`gPSEDV8+V5rik_F;cvQkLqZ*HM+Zu5ip zyLaOD%+}7=vIS(;eV2FugFT)()46aLb4f!G56nCTc+haj3In)_fg)#zh^{Iy#BtOo z(#~1nIxEtzB$z_XaiSVc+RZwoW45SZKI8-olIp^%`9;Tyn{_jOXpXYYB_$ZCZKu@@ zWER7aRYRkWR;r*7u!bPbZ)0dM0^ksxGB59)o{ol-@6CqgtOhSZstb zM~SdllB>3&08=;VI?nZsPAn9c&Jfs0x`sBm#c?>*^Mqm7T^(KIq{NdSwdC46Eu>!N zRd@>}gbP(mSi{Z1shXjZ+4VMFPkz8a!B$}+ImnVQDP}Ba3aVzLTIl3s0_4>88DG?u z-aEI)A|#(hY>*w{u0CWDPxsvny;Zq<$b|pM_YMG&eck3`RnkFSQ|*1pN#a`%#)U+% z`#UA`S&FY;nODl`b*0yYNWHJ@G=9y$+ne_%|5LE3ml8OC)rzF~y7yeBsH9(W(9qB) zKlOr^9Y{Xk6c*JbgEPO>t-~@r;T@7;Du_M27zLj{ax`qxf?B=j`<gV zdK~ltFFU|~6vWFhv#_mJKi^LEL(5lb54y@zv9xd+b~fOr*E&QFcFiwX56dosj2EpL zo1yR{e+FAz;a@Or?by?OJxTmCLaRJ4F2BTk&-zJ$O>*wCgO(?}=c4L>LuX_ih-odzcK)si}13o$K89SzHxO@s=F|AhH$Hzz#3(e-|LNL?0a#b!H z`BrQ_QWgUKzB`zaO* zMQyEpaChVW1KE@nv$giY=HrJC@9Rru;|vx=AjA~s2EJ7fpDJIhQJ79`_QkuPSoa7O zYHTNb-)xdT9w~r0mX1=oOwGisdcK%g56O0jfodd64Ot4bj*vW2w9rGGU5%#%7Sh@& zHb+I~#Yz~-3|^R9&n2P}OL9d@U?dy1q4CofOo$HyzSSh}K&Z|)#DTwnHL-pz3~-ee z-u#6o{-dJ}rnZM5Nf~}Qd`j%ei0txV2t95==nD%H2%yyWh+r%jf(*SBbj{nkNQH6U zEr$+Cje_ptR=!!d&G4D_bymr<;W47Tqo`~WM4|d?+ae|1jgUFqubV`+Ro0UYKS$Hj zE->5fx4>-_nfN(Qz?UOf1f0vsXne6Jj_;Z-oMvz?2p$ZxNy(8&yYs^aX|H|pPgCY0J+TiY^gj(;7~~`yU%ROkI~y8FBDP1 zhgi3D1<4*BB3A$a{mfGa_x|N#baXo6ALQRdlYb8-{~n#b_QH=z8bxvLOW=#u4|mW= zPv9M6ej1G~$kuX4PQyKT@SURz#(bzBUY?SU_0ACz75d@dA?$!m*QV5qP@72 z)Mpme31d?+1?`Sc_rD#U@1nNvQdxPsA#2UKA*|wvqtm@XPVCd;Xkh`)dXzO1e+<&ClX9=KhoHzB{IcBK)r11;gwV5(g%x=f< z^yg>mi;^WNllbu72L9iOEDBRaGWl>x!G8x?{9#Bv!)ih=y!%V zZV9l^P1*;Vu7z@S5ILpl*Y6h7N1kMJl!LUIT`PT?gI-mnh%kO*mh1gT9rvr~T`;hv5f#Zp3W*16J~vclKa=Z}Jkn0Y~ww~qZh8k1>#c_m<^how(MH^5LfUJk ze5sPRNrYpmwg88j3WWsL49zLq6~8H@*}xI@40#Y*iRp7iNyqmK)-5Wc_FEAWc?VvQ zdPOu{6CMnG8`2Pze*Vg7#F0Pl*PS#`x)&! zb$9csUR74drE1P(Cd^ZL8ogAE!;B}6r6x_FzxKs@tp-a?R|Ex1lATZ&`Rl_LWm&C! zS=o4i$x!VKr2#mpXDt!$AbBVcYf}k=3TlZK3`KEru3m%1AH5$9OvA9*1K=A|K>UR! zALf~cA}Gw5=MRS3>_eU#)hOp7C@8+K6=#)|N78iym|K9mZaL zqBF=y2uWqlUXb`oe)PZm2W>l_$7g5u2;Fl7C8AW$szEERa$;nlly$7XtQSyH|M|zi z{&g8M;JZpg;iljUk3(ifb!3dPx^Op|SU2hQB&pzhBAxayY8w}8B@Pi+ZNhJTLe&QR z_PN))09y+!PI*O}($u(v^J?{OlTB!5{EH7lOWCm*jcJ*eL`!VT8G$P7OXf_D3yFs$ zY{!<=US`zO^=8x%Ja@gqZc(_CyRq@Us8jsW`s=iIn9C;_!+Luc`}l6c4RoP3Lt_RG zB*&240S9`Aih-Q5*=&$kA)46o3b`$zSBng@hLjnK(jtgyc%Qd*D*U<0aC_C{ zV22X>+xf*{gaYk}_VHnz_mGeXCAZj`Z`dNCSnDZiFvU04KK`h{G0Pgk$#y_=O~ajf z=85SfT%sG1@oRpp$8S*Tfi8&Qv(@qEI{$7<^!v6!vu4$;E^1%Cy-f}d6?Sto1Yt&) ze1ktNB~Y7-OC`aYOjmJfLe{DSC5V6lCDWHPF!v{wjiQ93kpqmSkXc=-vVRE8X$jZD zI>?khytRJo)~#zj0V=+-X_oy)k@aJotR@6^FeMiT+Gmz4G!A}pK4WiM1k5NP$R-# zqkcfxtg9vCZ61lyVX>;$&8~gH@iCk27vSOc6y{b0IbNwe6X-QSzK>6LQ|qZd7un!8 zyEqof6mpl?$mX%dMQl\n" "Language-Team: Catalan \n" @@ -36,7 +36,7 @@ msgid "Show GApplication options" msgstr "Mostra les opcions de la GApplication" #: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46 -#: ../gio/gresource-tool.c:485 ../gio/gsettings-tool.c:521 +#: ../gio/gresource-tool.c:485 ../gio/gsettings-tool.c:525 msgid "Print help" msgstr "Mostra l'ajuda" @@ -49,7 +49,7 @@ msgstr "[ORDRE]" msgid "Print version" msgstr "Mostra la versió" -#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:527 +#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:531 msgid "Print version information and exit" msgstr "Mostra la informació de la versió i surt" @@ -111,7 +111,7 @@ msgstr "L'ordre per la qual imprimir l'ajuda detallada" #: ../gio/gapplication-tool.c:71 msgid "Application identifier in D-Bus format (eg: org.example.viewer)" msgstr "" -"Identificador de l'aplicació en format D-Bus (p.e.: org.example.viewer)" +"Identificador de l'aplicació en format D-Bus (p. ex.: org.example.viewer)" #: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589 #: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:492 @@ -120,7 +120,7 @@ msgid "FILE" msgstr "FITXER" #: ../gio/gapplication-tool.c:72 -msgid "Optional relative or relative filenames, or URIs to open" +msgid "Optional relative or absolute filenames, or URIs to open" msgstr "Noms de fitxers relatius opcionals o relatius, o URI que s'han d'obrir" #: ../gio/gapplication-tool.c:73 @@ -140,7 +140,7 @@ msgid "Optional parameter to the action invocation, in GVariant format" msgstr "Paràmetre opcional per la invocació de l'acció, en format GVariant" #: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:523 -#: ../gio/gsettings-tool.c:607 +#: ../gio/gsettings-tool.c:611 #, c-format msgid "" "Unknown command %s\n" @@ -154,7 +154,7 @@ msgid "Usage:\n" msgstr "Forma d'ús:\n" #: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:548 -#: ../gio/gsettings-tool.c:641 +#: ../gio/gsettings-tool.c:645 msgid "Arguments:\n" msgstr "Arguments:\n" @@ -189,7 +189,7 @@ msgstr "" #: ../gio/gapplication-tool.c:171 #, c-format msgid "invalid application id: '%s'\n" -msgstr "l'identificar de l'aplicació no és vàlid: «%s»\n" +msgstr "l'identificador de l'aplicació no és vàlid: «%s»\n" #. Translators: %s is replaced with a command name like 'list-actions' #: ../gio/gapplication-tool.c:182 @@ -265,7 +265,7 @@ msgstr "" #: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206 #, c-format msgid "Too large count value passed to %s" -msgstr "El valor de comptatge passat a %s és massa llarg" +msgstr "El valor de comptatge passat a %s és massa gran" #: ../gio/gbufferedinputstream.c:891 ../gio/gbufferedoutputstream.c:575 #: ../gio/gdataoutputstream.c:562 @@ -285,10 +285,9 @@ msgstr "Ja està tancat el flux" msgid "Truncate not supported on base stream" msgstr "No es permet truncar en els fluxos base" -#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1896 -#: ../gio/gdbusconnection.c:1989 ../gio/gdbusprivate.c:1421 -#: ../gio/glocalfile.c:2181 ../gio/gsimpleasyncresult.c:830 -#: ../gio/gsimpleasyncresult.c:856 +#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1847 +#: ../gio/gdbusprivate.c:1375 ../gio/glocalfile.c:2212 +#: ../gio/gsimpleasyncresult.c:870 ../gio/gsimpleasyncresult.c:896 #, c-format msgid "Operation was cancelled" msgstr "S'ha cancel·lat l'operació" @@ -307,23 +306,23 @@ msgstr "No hi ha prou espai a la destinació" #: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848 #: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 -#: ../glib/gconvert.c:845 ../glib/giochannel.c:1557 ../glib/giochannel.c:1599 -#: ../glib/giochannel.c:2443 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 +#: ../glib/gconvert.c:845 ../glib/giochannel.c:1556 ../glib/giochannel.c:1598 +#: ../glib/giochannel.c:2442 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 msgid "Invalid byte sequence in conversion input" msgstr "La seqüència de bytes a l'entrada de conversió no és vàlida" #: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 -#: ../glib/gconvert.c:770 ../glib/giochannel.c:1564 ../glib/giochannel.c:2455 +#: ../glib/gconvert.c:770 ../glib/giochannel.c:1563 ../glib/giochannel.c:2454 #, c-format msgid "Error during conversion: %s" msgstr "S'ha produït un error durant la conversió: %s" -#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:990 +#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:981 msgid "Cancellable initialization not supported" msgstr "La cancel·lació de la inicialització no està implementada" #: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321 -#: ../glib/giochannel.c:1385 +#: ../glib/giochannel.c:1384 #, c-format msgid "Conversion from character set '%s' to '%s' is not supported" msgstr "No es permet la conversió entre els jocs de caràcters «%s» i «%s»" @@ -342,7 +341,7 @@ msgstr "tipus %s" msgid "Unknown type" msgstr "Tipus desconegut" -#: ../gio/gcontenttype-win32.c:161 +#: ../gio/gcontenttype-win32.c:162 #, c-format msgid "%s filetype" msgstr "tipus de fitxer %s" @@ -369,13 +368,13 @@ msgstr "Aquest sistema operatiu no implementa el falsejament de credencials" msgid "Unexpected early end-of-stream" msgstr "No s'esperava un final de flux tan aviat" -#: ../gio/gdbusaddress.c:148 ../gio/gdbusaddress.c:236 -#: ../gio/gdbusaddress.c:317 +#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241 +#: ../gio/gdbusaddress.c:322 #, c-format msgid "Unsupported key '%s' in address entry '%s'" msgstr "No es permet la clau «%s» en l'entrada de l'adreça «%s»" -#: ../gio/gdbusaddress.c:175 +#: ../gio/gdbusaddress.c:180 #, c-format msgid "" "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" @@ -383,29 +382,29 @@ msgstr "" "L'adreça «%s» no és vàlida (ha de ser, o bé un camí, o bé un tmpdir -" "directori temporal-, o bé unes claus abstractes)" -#: ../gio/gdbusaddress.c:188 +#: ../gio/gdbusaddress.c:193 #, c-format msgid "Meaningless key/value pair combination in address entry '%s'" msgstr "L'entrada d'adreça «%s» té una parella clau/valor que no té sentit" -#: ../gio/gdbusaddress.c:251 ../gio/gdbusaddress.c:332 +#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 #, c-format msgid "Error in address '%s' - the port attribute is malformed" msgstr "" "Hi ha un error a l'adreça «%s»: l'atribut del port no està ben formatat" -#: ../gio/gdbusaddress.c:262 ../gio/gdbusaddress.c:343 +#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348 #, c-format msgid "Error in address '%s' - the family attribute is malformed" msgstr "" "Hi ha un error a l'adreça «%s»: l'atribut de la família no està ben formatat" -#: ../gio/gdbusaddress.c:452 +#: ../gio/gdbusaddress.c:457 #, c-format msgid "Address element '%s' does not contain a colon (:)" msgstr "L'element d'adreça «%s» no conté dos punts (:)" -#: ../gio/gdbusaddress.c:473 +#: ../gio/gdbusaddress.c:478 #, c-format msgid "" "Key/Value pair %d, '%s', in address element '%s' does not contain an equal " @@ -414,7 +413,7 @@ msgstr "" "La parella de clau/valor %d, «%s», a l'element d'adreça «%s», no conté un " "signe d'igual" -#: ../gio/gdbusaddress.c:487 +#: ../gio/gdbusaddress.c:492 #, c-format msgid "" "Error unescaping key or value in Key/Value pair %d, '%s', in address element " @@ -423,7 +422,7 @@ msgstr "" "S'ha produït un error en suprimir l'escapament d'una clau o d'un valor en la " "parella clau/valor %d, «%s», de l'element d'adreça «%s»" -#: ../gio/gdbusaddress.c:565 +#: ../gio/gdbusaddress.c:570 #, c-format msgid "" "Error in address '%s' - the unix transport requires exactly one of the keys " @@ -433,101 +432,101 @@ msgstr "" "establerta exactament una clau, o bé de tipus «path» (camí), o bé de tipus " "«abstract» (abstracte)" -#: ../gio/gdbusaddress.c:601 +#: ../gio/gdbusaddress.c:606 #, c-format msgid "Error in address '%s' - the host attribute is missing or malformed" msgstr "" "Hi ha un error a l'adreça «%s»: manca o està mal formatat l'atribut del nom " "d'ordinador" -#: ../gio/gdbusaddress.c:615 +#: ../gio/gdbusaddress.c:620 #, c-format msgid "Error in address '%s' - the port attribute is missing or malformed" msgstr "" "Hi ha un error a l'adreça «%s»: manca o està mal formatat l'atribut del port" -#: ../gio/gdbusaddress.c:629 +#: ../gio/gdbusaddress.c:634 #, c-format msgid "Error in address '%s' - the noncefile attribute is missing or malformed" msgstr "" "Hi ha un error a l'adreça «%s»: l'atribut noncefile no existeix o està mal " "formatat" -#: ../gio/gdbusaddress.c:650 +#: ../gio/gdbusaddress.c:655 msgid "Error auto-launching: " msgstr "S'ha produït un error en executar-se automàticament: " -#: ../gio/gdbusaddress.c:658 +#: ../gio/gdbusaddress.c:663 #, c-format msgid "Unknown or unsupported transport '%s' for address '%s'" msgstr "" "El transport «%s» per a l'adreça «%s» és desconegut o no està implementat" -#: ../gio/gdbusaddress.c:694 +#: ../gio/gdbusaddress.c:699 #, c-format msgid "Error opening nonce file '%s': %s" msgstr "S'ha produït un error en obrir el fitxer nonce «%s»: %s" -#: ../gio/gdbusaddress.c:712 +#: ../gio/gdbusaddress.c:717 #, c-format msgid "Error reading from nonce file '%s': %s" msgstr "S'ha produït un error en llegir el fitxer nonce «%s»: %s" -#: ../gio/gdbusaddress.c:721 +#: ../gio/gdbusaddress.c:726 #, c-format msgid "Error reading from nonce file '%s', expected 16 bytes, got %d" msgstr "" "S'ha produït un error en llegir el fitxer nonce «%s»: s'esperaven 16 bytes " "però se n'han obtingut %d" -#: ../gio/gdbusaddress.c:739 +#: ../gio/gdbusaddress.c:744 #, c-format msgid "Error writing contents of nonce file '%s' to stream:" msgstr "" "S'ha produït un error en escriure els continguts del fitxer nonce «%s» al " "flux:" -#: ../gio/gdbusaddress.c:958 +#: ../gio/gdbusaddress.c:950 msgid "The given address is empty" msgstr "L'adreça que s'ha indicat és buida" -#: ../gio/gdbusaddress.c:1028 +#: ../gio/gdbusaddress.c:1063 #, c-format msgid "Cannot spawn a message bus when setuid" msgstr "" "No es pot engendrar un bus de missatge si s'executa com un altre usuari " "(setuid)" -#: ../gio/gdbusaddress.c:1035 +#: ../gio/gdbusaddress.c:1070 msgid "Cannot spawn a message bus without a machine-id: " msgstr "" "No es pot engendrar un bus de missatge sense un identificador de màquina: " -#: ../gio/gdbusaddress.c:1077 +#: ../gio/gdbusaddress.c:1112 #, c-format msgid "Error spawning command line '%s': " msgstr "S'ha produït un error en engendrar la línia d'ordres «%s»: " -#: ../gio/gdbusaddress.c:1294 +#: ../gio/gdbusaddress.c:1329 #, c-format msgid "(Type any character to close this window)\n" msgstr "(Premeu qualsevol tecla per tancar aquesta finestra)\n" -#: ../gio/gdbusaddress.c:1425 +#: ../gio/gdbusaddress.c:1460 #, c-format msgid "Session dbus not running, and autolaunch failed" msgstr "" "El bus de sessió (D-Bus) no està en funcionament i l'arrencada automàtica no " "ha funcionat" -#: ../gio/gdbusaddress.c:1446 +#: ../gio/gdbusaddress.c:1471 #, c-format msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "" "No s'ha pogut determinar l'adreça del bus de sessió (no està implementat en " "aquest sistema operatiu)" -#: ../gio/gdbusaddress.c:1546 ../gio/gdbusconnection.c:6931 +#: ../gio/gdbusaddress.c:1604 ../gio/gdbusconnection.c:6821 #, c-format msgid "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " @@ -536,7 +535,7 @@ msgstr "" "No es pot determinar l'adreça del bus a través de la variable d'entorn " "«DBUS_STARTER_BUS_TYPE»: conté un valor desconegut «%s»" -#: ../gio/gdbusaddress.c:1555 ../gio/gdbusconnection.c:6940 +#: ../gio/gdbusaddress.c:1613 ../gio/gdbusconnection.c:6830 msgid "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" @@ -544,7 +543,7 @@ msgstr "" "No es pot determinar l'adreça del bus perquè la variable d'entorn " "«DBUS_STARTER_BUS_TYPE» no està establerta" -#: ../gio/gdbusaddress.c:1565 +#: ../gio/gdbusaddress.c:1623 #, c-format msgid "Unknown bus type %d" msgstr "Tipus de bus desconegut %d" @@ -657,22 +656,22 @@ msgid "(Additionally, releasing the lock for '%s' also failed: %s) " msgstr "" "(A més a més, l'alliberació del blocatge per a «%s» també ha fallat: %s) " -#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2455 +#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2348 msgid "The connection is closed" msgstr "La connexió està tancada" -#: ../gio/gdbusconnection.c:1942 +#: ../gio/gdbusconnection.c:1877 msgid "Timeout was reached" msgstr "S'ha esgotat el temps d'espera" -#: ../gio/gdbusconnection.c:2577 +#: ../gio/gdbusconnection.c:2470 msgid "" "Unsupported flags encountered when constructing a client-side connection" msgstr "" "S'han trobat senyaladors no implementats en construir-se la part de la " "connexió del client" -#: ../gio/gdbusconnection.c:4157 ../gio/gdbusconnection.c:4504 +#: ../gio/gdbusconnection.c:4051 ../gio/gdbusconnection.c:4398 #, c-format msgid "" "No such interface 'org.freedesktop.DBus.Properties' on object at path %s" @@ -680,68 +679,68 @@ msgstr "" "No existeix la interfície «org.freedesktop.DBus.Properties» en l'objecte al " "camí %s" -#: ../gio/gdbusconnection.c:4299 +#: ../gio/gdbusconnection.c:4193 #, c-format msgid "No such property '%s'" msgstr "No existeix la propietat «%s»" -#: ../gio/gdbusconnection.c:4311 +#: ../gio/gdbusconnection.c:4205 #, c-format msgid "Property '%s' is not readable" msgstr "La propietat «%s» no és de lectura" -#: ../gio/gdbusconnection.c:4322 +#: ../gio/gdbusconnection.c:4216 #, c-format msgid "Property '%s' is not writable" msgstr "La propietat «%s» no és d'escriptura" -#: ../gio/gdbusconnection.c:4342 +#: ../gio/gdbusconnection.c:4236 #, c-format msgid "Error setting property '%s': Expected type '%s' but got '%s'" msgstr "" "S'ha produït un error en establir la propietat «%s»: s'esperava el tipus " "«%s» però s'ha obtingut el «%s»" -#: ../gio/gdbusconnection.c:4447 ../gio/gdbusconnection.c:6371 +#: ../gio/gdbusconnection.c:4341 ../gio/gdbusconnection.c:6261 #, c-format msgid "No such interface '%s'" msgstr "No existeix la interfície «%s»" -#: ../gio/gdbusconnection.c:4655 +#: ../gio/gdbusconnection.c:4549 msgid "No such interface" msgstr "No existeix la interfície" -#: ../gio/gdbusconnection.c:4873 ../gio/gdbusconnection.c:6880 +#: ../gio/gdbusconnection.c:4767 ../gio/gdbusconnection.c:6770 #, c-format msgid "No such interface '%s' on object at path %s" msgstr "No existeix la interfície «%s» en l'objecte al camí %s" -#: ../gio/gdbusconnection.c:4971 +#: ../gio/gdbusconnection.c:4865 #, c-format msgid "No such method '%s'" msgstr "No existeix el mètode «%s»" -#: ../gio/gdbusconnection.c:5002 +#: ../gio/gdbusconnection.c:4896 #, c-format msgid "Type of message, '%s', does not match expected type '%s'" msgstr "El tipus de missatge «%s» no correspon al tipus «%s» que s'esperava" -#: ../gio/gdbusconnection.c:5200 +#: ../gio/gdbusconnection.c:5094 #, c-format msgid "An object is already exported for the interface %s at %s" msgstr "Ja hi ha un objecte exportat per a la interfície %s a %s" -#: ../gio/gdbusconnection.c:5399 +#: ../gio/gdbusconnection.c:5299 #, c-format msgid "Method '%s' returned type '%s', but expected '%s'" msgstr "El mètode «%s» ha retornat un tipus «%s» però s'esperava «%s»" -#: ../gio/gdbusconnection.c:6482 +#: ../gio/gdbusconnection.c:6372 #, c-format msgid "Method '%s' on interface '%s' with signature '%s' does not exist" msgstr "No existeix el mètode «%s» a la interfície «%s» amb la signatura «%s»" -#: ../gio/gdbusconnection.c:6603 +#: ../gio/gdbusconnection.c:6493 #, c-format msgid "A subtree is already exported for %s" msgstr "Ja està exportat un subarbre per a %s" @@ -938,38 +937,38 @@ msgstr "" "El cos del missatge és buit però la signatura en el camp de la capçalera és " "«(%s)»" -#: ../gio/gdbusmessage.c:3280 +#: ../gio/gdbusmessage.c:3283 #, c-format msgid "Error return with body of type '%s'" msgstr "S'ha retornat un error amb el cos de tipus «%s»" -#: ../gio/gdbusmessage.c:3288 +#: ../gio/gdbusmessage.c:3291 msgid "Error return with empty body" msgstr "S'ha retornat un error amb el cos buit" -#: ../gio/gdbusprivate.c:2085 +#: ../gio/gdbusprivate.c:2036 #, c-format msgid "Unable to get Hardware profile: %s" msgstr "No s'ha pogut obtenir el perfil de maquinari: %s" -#: ../gio/gdbusprivate.c:2130 +#: ../gio/gdbusprivate.c:2081 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: " msgstr "" "No s'ha pogut carregar «/var/lib/dbus/machine-id» o «/etc/machine-id»: " -#: ../gio/gdbusproxy.c:1630 +#: ../gio/gdbusproxy.c:1610 #, c-format msgid "Error calling StartServiceByName for %s: " msgstr "S'ha produït un error en cridar «StartServiceByName» per a %s: " -#: ../gio/gdbusproxy.c:1653 +#: ../gio/gdbusproxy.c:1633 #, c-format msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" msgstr "" "S'ha obtingut una resposta inesperada %d per al mètode " "«StartServiceByName(\"%s\")»" -#: ../gio/gdbusproxy.c:2754 ../gio/gdbusproxy.c:2891 +#: ../gio/gdbusproxy.c:2708 ../gio/gdbusproxy.c:2842 msgid "" "Cannot invoke method; proxy is for a well-known name without an owner and " "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag" @@ -1022,56 +1021,61 @@ msgstr "" "\n" "Utilitzeu «%s ORDRE --help» per veure l'ajuda de cada ordre en particular.\n" -#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:220 ../gio/gdbus-tool.c:292 -#: ../gio/gdbus-tool.c:316 ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1031 -#: ../gio/gdbus-tool.c:1465 +#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:226 ../gio/gdbus-tool.c:298 +#: ../gio/gdbus-tool.c:322 ../gio/gdbus-tool.c:711 ../gio/gdbus-tool.c:1043 +#: ../gio/gdbus-tool.c:1477 #, c-format msgid "Error: %s\n" msgstr "S'ha produït un error: %s\n" -#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:233 ../gio/gdbus-tool.c:1481 +#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493 #, c-format msgid "Error parsing introspection XML: %s\n" msgstr "S'ha produït un error en analitzar la introspecció XML: %s\n" -#: ../gio/gdbus-tool.c:350 +#: ../gio/gdbus-tool.c:208 +#, c-format +msgid "Error: %s is not a valid name\n" +msgstr "Error: %s no és un nom de membre vàlid\n" + +#: ../gio/gdbus-tool.c:356 msgid "Connect to the system bus" msgstr "Connecta al bus del sistema" -#: ../gio/gdbus-tool.c:351 +#: ../gio/gdbus-tool.c:357 msgid "Connect to the session bus" msgstr "Connecta al bus de la sessió" -#: ../gio/gdbus-tool.c:352 +#: ../gio/gdbus-tool.c:358 msgid "Connect to given D-Bus address" msgstr "Connecta a l'adreça de D-Bus donada" -#: ../gio/gdbus-tool.c:362 +#: ../gio/gdbus-tool.c:368 msgid "Connection Endpoint Options:" msgstr "Opcions del punt final de connexió:" -#: ../gio/gdbus-tool.c:363 +#: ../gio/gdbus-tool.c:369 msgid "Options specifying the connection endpoint" msgstr "Opcions d'especificació del punt final de connexió" -#: ../gio/gdbus-tool.c:385 +#: ../gio/gdbus-tool.c:391 #, c-format msgid "No connection endpoint specified" msgstr "No s'ha especificat el punt final de connexió" -#: ../gio/gdbus-tool.c:395 +#: ../gio/gdbus-tool.c:401 #, c-format msgid "Multiple connection endpoints specified" msgstr "S'han especificat més d'un punt final de connexió" -#: ../gio/gdbus-tool.c:465 +#: ../gio/gdbus-tool.c:471 #, c-format msgid "" "Warning: According to introspection data, interface '%s' does not exist\n" msgstr "" "Avís: d'acord amb les dades d'introspecció no existeix la interfície «%s»\n" -#: ../gio/gdbus-tool.c:474 +#: ../gio/gdbus-tool.c:480 #, c-format msgid "" "Warning: According to introspection data, method '%s' does not exist on " @@ -1080,193 +1084,197 @@ msgstr "" "Avís: d'acord amb les dades d'introspecció no existeix el mètode «%s» a la " "interfície «%s»\n" -#: ../gio/gdbus-tool.c:536 +#: ../gio/gdbus-tool.c:542 msgid "Optional destination for signal (unique name)" msgstr "Destinació opcional del senyal (nom únic)" -#: ../gio/gdbus-tool.c:537 +#: ../gio/gdbus-tool.c:543 msgid "Object path to emit signal on" msgstr "Camí a l'objecte al qual se li enviarà un senyal" -#: ../gio/gdbus-tool.c:538 +#: ../gio/gdbus-tool.c:544 msgid "Signal and interface name" msgstr "Senyal i nom d'interfície" -#: ../gio/gdbus-tool.c:570 +#: ../gio/gdbus-tool.c:576 msgid "Emit a signal." msgstr "Envia un senyal." -#: ../gio/gdbus-tool.c:604 ../gio/gdbus-tool.c:836 ../gio/gdbus-tool.c:1571 -#: ../gio/gdbus-tool.c:1799 +#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583 +#: ../gio/gdbus-tool.c:1818 #, c-format msgid "Error connecting: %s\n" msgstr "S'ha produït un error en connectar-se: %s\n" -#: ../gio/gdbus-tool.c:616 +#: ../gio/gdbus-tool.c:622 #, c-format msgid "Error: object path not specified.\n" msgstr "Error: no s'ha especificat el camí a l'objecte.\n" -#: ../gio/gdbus-tool.c:621 ../gio/gdbus-tool.c:897 ../gio/gdbus-tool.c:1629 -#: ../gio/gdbus-tool.c:1858 +#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648 +#: ../gio/gdbus-tool.c:1884 #, c-format msgid "Error: %s is not a valid object path\n" msgstr "Error: «%s» no és un camí d'objecte vàlid\n" -#: ../gio/gdbus-tool.c:627 +#: ../gio/gdbus-tool.c:633 #, c-format msgid "Error: signal not specified.\n" msgstr "Error: no s'ha especificat el senyal.\n" -#: ../gio/gdbus-tool.c:634 +#: ../gio/gdbus-tool.c:640 #, c-format msgid "Error: signal must be the fully-qualified name.\n" msgstr "Error: el senyal no pot ser un nom parcial.\n" -#: ../gio/gdbus-tool.c:642 +#: ../gio/gdbus-tool.c:648 #, c-format msgid "Error: %s is not a valid interface name\n" msgstr "Error: %s no és un nom d'interfície vàlid\n" -#: ../gio/gdbus-tool.c:648 +#: ../gio/gdbus-tool.c:654 #, c-format msgid "Error: %s is not a valid member name\n" msgstr "Error: %s no és un nom de membre vàlid\n" -#: ../gio/gdbus-tool.c:654 +#: ../gio/gdbus-tool.c:660 #, c-format msgid "Error: %s is not a valid unique bus name.\n" msgstr "Error: %s no és un nom de bus únic vàlid.\n" #. Use the original non-"parse-me-harder" error -#: ../gio/gdbus-tool.c:681 ../gio/gdbus-tool.c:999 +#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011 #, c-format msgid "Error parsing parameter %d: %s\n" msgstr "S'ha produït un error en analitzar el paràmetre %d: %s\n" -#: ../gio/gdbus-tool.c:712 +#: ../gio/gdbus-tool.c:718 #, c-format msgid "Error flushing connection: %s\n" msgstr "S'ha produït un error en buidar la connexió: %s\n" -#: ../gio/gdbus-tool.c:739 +#: ../gio/gdbus-tool.c:745 msgid "Destination name to invoke method on" msgstr "Nom de destinació on invocar el mètode" -#: ../gio/gdbus-tool.c:740 +#: ../gio/gdbus-tool.c:746 msgid "Object path to invoke method on" msgstr "Camí a l'objecte on invocar el mètode" -#: ../gio/gdbus-tool.c:741 +#: ../gio/gdbus-tool.c:747 msgid "Method and interface name" msgstr "Mètode i nom d'interfície" -#: ../gio/gdbus-tool.c:742 +#: ../gio/gdbus-tool.c:748 msgid "Timeout in seconds" msgstr "Temps d'espera, en segons" -#: ../gio/gdbus-tool.c:781 +#: ../gio/gdbus-tool.c:787 msgid "Invoke a method on a remote object." msgstr "Invoca un mètode en un objecte remot." -#: ../gio/gdbus-tool.c:856 ../gio/gdbus-tool.c:1590 ../gio/gdbus-tool.c:1818 +#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837 #, c-format msgid "Error: Destination is not specified\n" msgstr "Error: no s'ha especificat la destinació\n" -#: ../gio/gdbus-tool.c:877 ../gio/gdbus-tool.c:1609 +#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849 +#, c-format +msgid "Error: %s is not a valid bus name\n" +msgstr "Error: %s no és un nom de bus vàlid\n" + +#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628 #, c-format msgid "Error: Object path is not specified\n" msgstr "Error: no s'ha especificat el camí a l'objecte\n" -#: ../gio/gdbus-tool.c:912 +#: ../gio/gdbus-tool.c:924 #, c-format msgid "Error: Method name is not specified\n" msgstr "Error: no s'ha especificat el nom del mètode\n" -#: ../gio/gdbus-tool.c:923 +#: ../gio/gdbus-tool.c:935 #, c-format msgid "Error: Method name '%s' is invalid\n" msgstr "Error: el nom del mètode «%s» no és vàlid\n" -#: ../gio/gdbus-tool.c:991 +#: ../gio/gdbus-tool.c:1003 #, c-format msgid "Error parsing parameter %d of type '%s': %s\n" msgstr "" "S'ha produït un error en analitzar el paràmetre %d del tipus «%s»: %s\n" -#: ../gio/gdbus-tool.c:1428 +#: ../gio/gdbus-tool.c:1440 msgid "Destination name to introspect" msgstr "Nom de destinació a introspeccionar" -#: ../gio/gdbus-tool.c:1429 +#: ../gio/gdbus-tool.c:1441 msgid "Object path to introspect" msgstr "Camí a l'objecte a introspeccionar" -#: ../gio/gdbus-tool.c:1430 +#: ../gio/gdbus-tool.c:1442 msgid "Print XML" msgstr "Imprimeix XML" -#: ../gio/gdbus-tool.c:1431 +#: ../gio/gdbus-tool.c:1443 msgid "Introspect children" msgstr "Introspecciona el fill" -#: ../gio/gdbus-tool.c:1432 +#: ../gio/gdbus-tool.c:1444 msgid "Only print properties" msgstr "Només mostra les propietats" -#: ../gio/gdbus-tool.c:1523 +#: ../gio/gdbus-tool.c:1535 msgid "Introspect a remote object." msgstr "Introspecciona un objecte remot." -#: ../gio/gdbus-tool.c:1721 +#: ../gio/gdbus-tool.c:1740 msgid "Destination name to monitor" msgstr "Nom de destinació al qual se li vol fer un seguiment" -#: ../gio/gdbus-tool.c:1722 +#: ../gio/gdbus-tool.c:1741 msgid "Object path to monitor" msgstr "Camí a l'objecte al qual se li vol fer un seguiment" -#: ../gio/gdbus-tool.c:1751 +#: ../gio/gdbus-tool.c:1770 msgid "Monitor a remote object." msgstr "Fes el seguiment a un objecte remot." -#: ../gio/gdesktopappinfo.c:1999 ../gio/gdesktopappinfo.c:4530 -#: ../gio/gwin32appinfo.c:219 +#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4511 msgid "Unnamed" msgstr "Sense nom" -#: ../gio/gdesktopappinfo.c:2408 +#: ../gio/gdesktopappinfo.c:2402 msgid "Desktop file didn't specify Exec field" msgstr "El fitxer d'escriptori no especificava el camp d'execució" -#: ../gio/gdesktopappinfo.c:2693 +#: ../gio/gdesktopappinfo.c:2687 msgid "Unable to find terminal required for application" msgstr "No s'ha pogut trobar el terminal que demanava l'aplicació" -#: ../gio/gdesktopappinfo.c:3114 +#: ../gio/gdesktopappinfo.c:3108 #, c-format msgid "Can't create user application configuration folder %s: %s" msgstr "" "No s'ha pogut crear el directori de configuració de l'aplicació de l'usuari " "%s: %s" -#: ../gio/gdesktopappinfo.c:3118 +#: ../gio/gdesktopappinfo.c:3112 #, c-format msgid "Can't create user MIME configuration folder %s: %s" msgstr "" "No s'ha pogut crear el directori de configuració MIME de l'usuari %s: %s" -#: ../gio/gdesktopappinfo.c:3358 ../gio/gdesktopappinfo.c:3382 +#: ../gio/gdesktopappinfo.c:3352 ../gio/gdesktopappinfo.c:3376 msgid "Application information lacks an identifier" msgstr "A la informació d'aplicació li manca un identificador" -#: ../gio/gdesktopappinfo.c:3615 +#: ../gio/gdesktopappinfo.c:3609 #, c-format msgid "Can't create user desktop file %s" msgstr "No s'ha pogut crear el fitxer d'escriptori de l'usuari %s" -#: ../gio/gdesktopappinfo.c:3749 +#: ../gio/gdesktopappinfo.c:3743 #, c-format msgid "Custom definition for %s" msgstr "Definició personalitzada per a %s" @@ -1294,8 +1302,8 @@ msgstr "la unitat no implementa la inicialització" msgid "drive doesn't implement stop" msgstr "la unitat no implementa l'aturada" -#: ../gio/gdummytlsbackend.c:189 ../gio/gdummytlsbackend.c:311 -#: ../gio/gdummytlsbackend.c:401 +#: ../gio/gdummytlsbackend.c:188 ../gio/gdummytlsbackend.c:310 +#: ../gio/gdummytlsbackend.c:400 msgid "TLS support is not available" msgstr "El TLS no està implementat" @@ -1334,7 +1342,7 @@ msgstr "S'esperava un GEmblem per a un GEmblemedIcon" #: ../gio/gfile.c:3893 ../gio/gfile.c:3935 ../gio/gfile.c:4398 #: ../gio/gfile.c:4809 ../gio/gfile.c:4894 ../gio/gfile.c:4984 #: ../gio/gfile.c:5081 ../gio/gfile.c:5168 ../gio/gfile.c:5269 -#: ../gio/gfile.c:7788 ../gio/gfile.c:7878 ../gio/gfile.c:7962 +#: ../gio/gfile.c:7790 ../gio/gfile.c:7880 ../gio/gfile.c:7964 #: ../gio/win32/gwinhttpfile.c:437 msgid "Operation not supported" msgstr "L'operació no està implementada" @@ -1349,12 +1357,12 @@ msgstr "L'operació no està implementada" #. Translators: This is an error message when trying to find #. * the enclosing (user visible) mount of a file, but none #. * exists. -#: ../gio/gfile.c:1467 ../gio/glocalfile.c:1103 ../gio/glocalfile.c:1114 -#: ../gio/glocalfile.c:1127 +#: ../gio/gfile.c:1467 ../gio/glocalfile.c:1134 ../gio/glocalfile.c:1145 +#: ../gio/glocalfile.c:1158 msgid "Containing mount does not exist" msgstr "No existeix el punt de muntatge contenidor" -#: ../gio/gfile.c:2514 ../gio/glocalfile.c:2337 +#: ../gio/gfile.c:2514 ../gio/glocalfile.c:2368 msgid "Can't copy over directory" msgstr "No es pot copiar al directori" @@ -1362,7 +1370,7 @@ msgstr "No es pot copiar al directori" msgid "Can't copy directory over directory" msgstr "No es pot copiar el directori al directori" -#: ../gio/gfile.c:2582 ../gio/glocalfile.c:2346 +#: ../gio/gfile.c:2582 ../gio/glocalfile.c:2377 msgid "Target file exists" msgstr "Ja existeix el fitxer de destinació" @@ -1539,7 +1547,7 @@ msgid "Could not parse '%s' as IP address mask" msgstr "No s'ha pogut analitzar «%s» com a màscara d'adreça IP" #: ../gio/ginetsocketaddress.c:196 ../gio/ginetsocketaddress.c:213 -#: ../gio/gunixsocketaddress.c:209 +#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:209 msgid "Not enough space for socket address" msgstr "No hi ha prou espai per a l'adreça del sòcol" @@ -1562,7 +1570,7 @@ msgstr "El flux d'entrada no té implementada la lectura" msgid "Stream has outstanding operation" msgstr "El flux té una operació pendent" -#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1453 +#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1491 #, c-format msgid "Element <%s> not allowed inside <%s>" msgstr "No es permet posar l'element <%s> dins de <%s>" @@ -1607,7 +1615,7 @@ msgstr "S'ha produït un error en llegir el fitxer %s: %s" msgid "Error compressing file %s" msgstr "S'ha produït un error en comprimir el fitxer %s" -#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1565 +#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1603 #, c-format msgid "text may not appear inside <%s>" msgstr "no pot haver-hi text dins de <%s>" @@ -1624,8 +1632,8 @@ msgstr "" "Els directoris des d'on s'han de llegir els fitxers (per defecte és el " "directori actual)" -#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:1994 -#: ../gio/glib-compile-schemas.c:2023 +#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2036 +#: ../gio/glib-compile-schemas.c:2065 msgid "DIRECTORY" msgstr "DIRECTORI" @@ -1678,17 +1686,17 @@ msgstr "" msgid "You should give exactly one file name\n" msgstr "Heu de donar un sol nom de fitxer\n" -#: ../gio/glib-compile-schemas.c:772 +#: ../gio/glib-compile-schemas.c:784 msgid "empty names are not permitted" msgstr "o es permet utilitzar noms buits" -#: ../gio/glib-compile-schemas.c:782 +#: ../gio/glib-compile-schemas.c:794 #, c-format msgid "invalid name '%s': names must begin with a lowercase letter" msgstr "" "el nom «%s» no és vàlid: els noms han de començar amb una lletra minúscula" -#: ../gio/glib-compile-schemas.c:794 +#: ../gio/glib-compile-schemas.c:806 #, c-format msgid "" "invalid name '%s': invalid character '%c'; only lowercase letters, numbers " @@ -1697,37 +1705,37 @@ msgstr "" "el nom «%s» no és vàlid: el caràcter «%c» no és vàlid. Només es permeten " "lletres minúscules, nombres i el guionet («-»)." -#: ../gio/glib-compile-schemas.c:803 +#: ../gio/glib-compile-schemas.c:815 #, c-format msgid "invalid name '%s': two successive hyphens ('--') are not permitted." msgstr "" "el nom «%s» no és vàlid: no es poden posar dos guionets seguits («--»)." -#: ../gio/glib-compile-schemas.c:812 +#: ../gio/glib-compile-schemas.c:824 #, c-format msgid "invalid name '%s': the last character may not be a hyphen ('-')." msgstr "el nom «%s» no és vàlid: l'últim caràcter no pot ser un guionet («-»)." -#: ../gio/glib-compile-schemas.c:820 +#: ../gio/glib-compile-schemas.c:832 #, c-format msgid "invalid name '%s': maximum length is 1024" msgstr "el nom «%s» no és vàlid: la llargada màxima és de 1024" -#: ../gio/glib-compile-schemas.c:889 +#: ../gio/glib-compile-schemas.c:901 #, c-format msgid " already specified" msgstr "ja està especificat " -#: ../gio/glib-compile-schemas.c:915 +#: ../gio/glib-compile-schemas.c:927 msgid "cannot add keys to a 'list-of' schema" msgstr "no es poden afegir claus a un esquema del tipus «list-of»" -#: ../gio/glib-compile-schemas.c:926 +#: ../gio/glib-compile-schemas.c:938 #, c-format msgid " already specified" msgstr "ja està especificat " -#: ../gio/glib-compile-schemas.c:944 +#: ../gio/glib-compile-schemas.c:956 #, c-format msgid "" " shadows in ; use " @@ -1736,7 +1744,7 @@ msgstr "" "La emmascara la a . " "Utilitzeu per modificar-ne el valor." -#: ../gio/glib-compile-schemas.c:955 +#: ../gio/glib-compile-schemas.c:967 #, c-format msgid "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " @@ -1744,57 +1752,57 @@ msgid "" msgstr "" "l'atribut de la ha de ser necessàriament «type», «enum» o «flags»" -#: ../gio/glib-compile-schemas.c:974 +#: ../gio/glib-compile-schemas.c:986 #, c-format msgid "<%s id='%s'> not (yet) defined." msgstr "(encara) no s'ha definit <%s id='%s'>." -#: ../gio/glib-compile-schemas.c:989 +#: ../gio/glib-compile-schemas.c:1001 #, c-format msgid "invalid GVariant type string '%s'" msgstr "el tipus de cadena GVariant «%s» no és vàlid" -#: ../gio/glib-compile-schemas.c:1019 +#: ../gio/glib-compile-schemas.c:1031 msgid " given but schema isn't extending anything" msgstr "s'ha indicat però l'esquema no està ampliant res" -#: ../gio/glib-compile-schemas.c:1032 +#: ../gio/glib-compile-schemas.c:1044 #, c-format msgid "no to override" msgstr "no hi ha cap a sobreescriure" -#: ../gio/glib-compile-schemas.c:1040 +#: ../gio/glib-compile-schemas.c:1052 #, c-format msgid " already specified" msgstr "ja s'ha especificat " -#: ../gio/glib-compile-schemas.c:1111 +#: ../gio/glib-compile-schemas.c:1125 #, c-format msgid " already specified" msgstr "ja s'ha especificat " -#: ../gio/glib-compile-schemas.c:1123 +#: ../gio/glib-compile-schemas.c:1137 #, c-format msgid " extends not yet existing schema '%s'" msgstr "el amplia l'esquema «%s» que encara no existeix" -#: ../gio/glib-compile-schemas.c:1139 +#: ../gio/glib-compile-schemas.c:1153 #, c-format msgid " is list of not yet existing schema '%s'" msgstr "" "el és una llista d'un esquema «%s» que encara no existeix" -#: ../gio/glib-compile-schemas.c:1147 +#: ../gio/glib-compile-schemas.c:1161 #, c-format msgid "Can not be a list of a schema with a path" msgstr "No pot ser una llista d'un esquema amb un camí" -#: ../gio/glib-compile-schemas.c:1157 +#: ../gio/glib-compile-schemas.c:1171 #, c-format msgid "Can not extend a schema with a path" msgstr "No es pot ampliar un esquema amb un camí" -#: ../gio/glib-compile-schemas.c:1167 +#: ../gio/glib-compile-schemas.c:1181 #, c-format msgid "" " is a list, extending which is not a list" @@ -1802,7 +1810,7 @@ msgstr "" "El és una llista i amplia el que no és una " "llista" -#: ../gio/glib-compile-schemas.c:1177 +#: ../gio/glib-compile-schemas.c:1191 #, c-format msgid "" " extends but '%s' " @@ -1811,63 +1819,68 @@ msgstr "" "El amplia el " "però «%s» no amplia «%s»" -#: ../gio/glib-compile-schemas.c:1194 +#: ../gio/glib-compile-schemas.c:1208 #, c-format msgid "a path, if given, must begin and end with a slash" msgstr "si es dóna un camí ha de començar i acabar amb una barra inclinada" -#: ../gio/glib-compile-schemas.c:1201 +#: ../gio/glib-compile-schemas.c:1215 #, c-format msgid "the path of a list must end with ':/'" msgstr "el camí d'una llista ha d'acabar amb «:/»" -#: ../gio/glib-compile-schemas.c:1233 +#: ../gio/glib-compile-schemas.c:1247 #, c-format msgid "<%s id='%s'> already specified" msgstr "ja s'ha especificat <%s id='%s'>" -#: ../gio/glib-compile-schemas.c:1457 +#: ../gio/glib-compile-schemas.c:1397 ../gio/glib-compile-schemas.c:1413 +#, c-format +msgid "Only one <%s> element allowed inside <%s>" +msgstr "No es permet posar l'element <%s> dins de <%s>" + +#: ../gio/glib-compile-schemas.c:1495 #, c-format msgid "Element <%s> not allowed at the top level" msgstr "No es permet posar l'element <%s> al primer nivell" #. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1752 ../gio/glib-compile-schemas.c:1823 -#: ../gio/glib-compile-schemas.c:1899 +#: ../gio/glib-compile-schemas.c:1794 ../gio/glib-compile-schemas.c:1865 +#: ../gio/glib-compile-schemas.c:1941 #, c-format msgid "--strict was specified; exiting.\n" msgstr "S'ha especificat «--strict», se surt.\n" -#: ../gio/glib-compile-schemas.c:1760 +#: ../gio/glib-compile-schemas.c:1802 #, c-format msgid "This entire file has been ignored.\n" msgstr "S'ha ignorat el fitxer sencer.\n" -#: ../gio/glib-compile-schemas.c:1819 +#: ../gio/glib-compile-schemas.c:1861 #, c-format msgid "Ignoring this file.\n" msgstr "S'està ignorant aquest fitxer.\n" -#: ../gio/glib-compile-schemas.c:1859 +#: ../gio/glib-compile-schemas.c:1901 #, c-format msgid "No such key '%s' in schema '%s' as specified in override file '%s'" msgstr "" "No existeix la clau «%s» en l'esquema «%s» tal com especifica el fitxer de " "sobreescriptura «%s»" -#: ../gio/glib-compile-schemas.c:1865 ../gio/glib-compile-schemas.c:1923 -#: ../gio/glib-compile-schemas.c:1951 +#: ../gio/glib-compile-schemas.c:1907 ../gio/glib-compile-schemas.c:1965 +#: ../gio/glib-compile-schemas.c:1993 #, c-format msgid "; ignoring override for this key.\n" msgstr "; s'està ignorant la sobreescriptura d'aquesta clau.\n" -#: ../gio/glib-compile-schemas.c:1869 ../gio/glib-compile-schemas.c:1927 -#: ../gio/glib-compile-schemas.c:1955 +#: ../gio/glib-compile-schemas.c:1911 ../gio/glib-compile-schemas.c:1969 +#: ../gio/glib-compile-schemas.c:1997 #, c-format msgid " and --strict was specified; exiting.\n" msgstr " i s'havia especificat «--strict», se surt.\n" -#: ../gio/glib-compile-schemas.c:1885 +#: ../gio/glib-compile-schemas.c:1927 #, c-format msgid "" "error parsing key '%s' in schema '%s' as specified in override file '%s': %s." @@ -1875,12 +1888,12 @@ msgstr "" "s'ha produït un error en analitzar la clau «%s» en l'esquema «%s» tal com " "especifica el fitxer de sobreescriptura «%s»: %s." -#: ../gio/glib-compile-schemas.c:1895 +#: ../gio/glib-compile-schemas.c:1937 #, c-format msgid "Ignoring override for this key.\n" msgstr "S'està ignorant la sobreescriptura d'aquesta clau.\n" -#: ../gio/glib-compile-schemas.c:1913 +#: ../gio/glib-compile-schemas.c:1955 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is outside the " @@ -1889,7 +1902,7 @@ msgstr "" "la sobreescriptura de la clau «%s» de l'esquema «%s» en el fitxer de " "sobreescriptura «%s» és fora de l'interval de l'esquema donat" -#: ../gio/glib-compile-schemas.c:1941 +#: ../gio/glib-compile-schemas.c:1983 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is not in the " @@ -1898,23 +1911,23 @@ msgstr "" "la sobreescriptura de la clau «%s» de l'esquema «%s» en el fitxer de " "sobreescriptura «%s» no és a la llista de valors vàlids" -#: ../gio/glib-compile-schemas.c:1994 +#: ../gio/glib-compile-schemas.c:2036 msgid "where to store the gschemas.compiled file" msgstr "on desar el fitxer gschemas.compiled" -#: ../gio/glib-compile-schemas.c:1995 +#: ../gio/glib-compile-schemas.c:2037 msgid "Abort on any errors in schemas" msgstr "Interromp si hi ha cap error en els esquemes" -#: ../gio/glib-compile-schemas.c:1996 +#: ../gio/glib-compile-schemas.c:2038 msgid "Do not write the gschema.compiled file" msgstr "No escriguis el fitxer gschema.compiled" -#: ../gio/glib-compile-schemas.c:1997 +#: ../gio/glib-compile-schemas.c:2039 msgid "Do not enforce key name restrictions" msgstr "No siguis estricte amb les restriccions dels noms de les claus" -#: ../gio/glib-compile-schemas.c:2026 +#: ../gio/glib-compile-schemas.c:2068 msgid "" "Compile all GSettings schema files into a schema cache.\n" "Schema files are required to have the extension .gschema.xml,\n" @@ -1924,147 +1937,142 @@ msgstr "" "Els fitxers d'esquema han de tenir l'extensió .gschema.xml\n" "i el fitxer de memòria cau es dirà gschemas.compiled." -#: ../gio/glib-compile-schemas.c:2042 +#: ../gio/glib-compile-schemas.c:2084 #, c-format msgid "You should give exactly one directory name\n" msgstr "Heu de donar un sol nom de directori\n" -#: ../gio/glib-compile-schemas.c:2081 +#: ../gio/glib-compile-schemas.c:2123 #, c-format msgid "No schema files found: " msgstr "No s'ha trobat cap fitxer d'esquemes: " -#: ../gio/glib-compile-schemas.c:2084 +#: ../gio/glib-compile-schemas.c:2126 #, c-format msgid "doing nothing.\n" msgstr "no facis res.\n" -#: ../gio/glib-compile-schemas.c:2087 +#: ../gio/glib-compile-schemas.c:2129 #, c-format msgid "removed existing output file.\n" msgstr "suprimeix el fitxer de sortida actual.\n" -#: ../gio/glocaldirectorymonitor.c:224 -msgid "Unable to find default local directory monitor type" -msgstr "" -"No s'ha pogut trobar el tipus de seguiment de directoris locals predeterminat" - -#: ../gio/glocalfile.c:604 ../gio/win32/gwinhttpfile.c:420 +#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420 #, c-format msgid "Invalid filename %s" msgstr "El nom del fitxer no és vàlid: %s" -#: ../gio/glocalfile.c:981 +#: ../gio/glocalfile.c:1012 #, c-format msgid "Error getting filesystem info: %s" msgstr "" "S'ha produït un error en obtenir la informació del sistema de fitxers: %s" -#: ../gio/glocalfile.c:1149 +#: ../gio/glocalfile.c:1180 msgid "Can't rename root directory" msgstr "No es pot canviar el nom del directori arrel" -#: ../gio/glocalfile.c:1169 ../gio/glocalfile.c:1195 +#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226 #, c-format msgid "Error renaming file: %s" msgstr "S'ha produït un error en canviar el nom del fitxer: %s" -#: ../gio/glocalfile.c:1178 +#: ../gio/glocalfile.c:1209 msgid "Can't rename file, filename already exists" msgstr "No es pot canviar el nom del fitxer, ja existeix aquest nom" -#: ../gio/glocalfile.c:1191 ../gio/glocalfile.c:2210 ../gio/glocalfile.c:2239 -#: ../gio/glocalfile.c:2399 ../gio/glocalfileoutputstream.c:549 +#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2241 ../gio/glocalfile.c:2270 +#: ../gio/glocalfile.c:2430 ../gio/glocalfileoutputstream.c:549 msgid "Invalid filename" msgstr "Nom de fitxer no vàlid" -#: ../gio/glocalfile.c:1358 ../gio/glocalfile.c:1382 +#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413 msgid "Can't open directory" msgstr "No s'ha pogut obrir el directori" -#: ../gio/glocalfile.c:1366 +#: ../gio/glocalfile.c:1397 #, c-format msgid "Error opening file: %s" msgstr "S'ha produït un error en obrir el fitxer: %s" -#: ../gio/glocalfile.c:1507 +#: ../gio/glocalfile.c:1538 #, c-format msgid "Error removing file: %s" msgstr "S'ha produït un error en suprimir el fitxer: %s" -#: ../gio/glocalfile.c:1887 +#: ../gio/glocalfile.c:1918 #, c-format msgid "Error trashing file: %s" msgstr "S'ha produït un error en enviar el fitxer a la paperera: %s" -#: ../gio/glocalfile.c:1910 +#: ../gio/glocalfile.c:1941 #, c-format msgid "Unable to create trash dir %s: %s" msgstr "No s'ha pogut crear el directori de la paperera %s: %s" -#: ../gio/glocalfile.c:1931 +#: ../gio/glocalfile.c:1962 msgid "Unable to find toplevel directory for trash" msgstr "No s'ha pogut trobar el directori superior per a la paperera" -#: ../gio/glocalfile.c:2010 ../gio/glocalfile.c:2030 +#: ../gio/glocalfile.c:2041 ../gio/glocalfile.c:2061 msgid "Unable to find or create trash directory" msgstr "No s'ha pogut trobar o crear el directori de la paperera" -#: ../gio/glocalfile.c:2064 +#: ../gio/glocalfile.c:2095 #, c-format msgid "Unable to create trashing info file: %s" msgstr "No s'ha pogut crear el fitxer d'informació d'enviar a la paperera: %s" -#: ../gio/glocalfile.c:2095 ../gio/glocalfile.c:2100 ../gio/glocalfile.c:2180 -#: ../gio/glocalfile.c:2187 +#: ../gio/glocalfile.c:2126 ../gio/glocalfile.c:2131 ../gio/glocalfile.c:2211 +#: ../gio/glocalfile.c:2218 #, c-format msgid "Unable to trash file: %s" msgstr "No s'ha pogut enviar el fitxer a la paperera: %s" -#: ../gio/glocalfile.c:2188 ../glib/gregex.c:281 +#: ../gio/glocalfile.c:2219 ../glib/gregex.c:281 msgid "internal error" msgstr "error intern" -#: ../gio/glocalfile.c:2214 +#: ../gio/glocalfile.c:2245 #, c-format msgid "Error creating directory: %s" msgstr "S'ha produït un error en crear el directori: %s" -#: ../gio/glocalfile.c:2243 +#: ../gio/glocalfile.c:2274 #, c-format msgid "Filesystem does not support symbolic links" msgstr "El sistema de fitxers no implementa enllaços simbòlics" -#: ../gio/glocalfile.c:2247 +#: ../gio/glocalfile.c:2278 #, c-format msgid "Error making symbolic link: %s" msgstr "S'ha produït un error en fer l'enllaç simbòlic: %s" -#: ../gio/glocalfile.c:2309 ../gio/glocalfile.c:2403 +#: ../gio/glocalfile.c:2340 ../gio/glocalfile.c:2434 #, c-format msgid "Error moving file: %s" msgstr "S'ha produït un error en moure el fitxer: %s" -#: ../gio/glocalfile.c:2332 +#: ../gio/glocalfile.c:2363 msgid "Can't move directory over directory" msgstr "No s'ha pogut moure el directori al directori" -#: ../gio/glocalfile.c:2359 ../gio/glocalfileoutputstream.c:925 +#: ../gio/glocalfile.c:2390 ../gio/glocalfileoutputstream.c:925 #: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954 #: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984 msgid "Backup file creation failed" msgstr "Ha fallat la creació del fitxer de còpia de seguretat" -#: ../gio/glocalfile.c:2378 +#: ../gio/glocalfile.c:2409 #, c-format msgid "Error removing target file: %s" msgstr "S'ha produït un error en suprimir el fitxer objectiu: %s" -#: ../gio/glocalfile.c:2392 +#: ../gio/glocalfile.c:2423 msgid "Move between mounts not supported" msgstr "No està implementat el moure entre muntatges" -#: ../gio/glocalfile.c:2603 +#: ../gio/glocalfile.c:2615 #, c-format msgid "Could not determine the disk usage of %s: %s" msgstr "No s'han pogut determinar l'ús del disc de %s: %s" @@ -2185,7 +2193,7 @@ msgstr "S'ha produït un error en cercar en el fitxer: %s" msgid "Error closing file: %s" msgstr "S'ha produït un error en tancar el fitxer: %s" -#: ../gio/glocalfilemonitor.c:145 +#: ../gio/glocalfilemonitor.c:840 msgid "Unable to find default local file monitor type" msgstr "" "No s'ha pogut trobar el tipus de seguiment de fitxer local predeterminat" @@ -2328,16 +2336,16 @@ msgstr "el muntatge no implementa l'estimació de tipus de contingut" msgid "mount doesn't implement synchronous content type guessing" msgstr "el muntatge no implementa l'estimació de tipus de contingut síncron" -#: ../gio/gnetworkaddress.c:383 +#: ../gio/gnetworkaddress.c:376 #, c-format msgid "Hostname '%s' contains '[' but not ']'" msgstr "El nom de l'ordinador «%s» conté «[» però no «]»" -#: ../gio/gnetworkmonitorbase.c:199 ../gio/gnetworkmonitorbase.c:302 +#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:309 msgid "Network unreachable" msgstr "No es pot accedir a la xarxa" -#: ../gio/gnetworkmonitorbase.c:237 ../gio/gnetworkmonitorbase.c:267 +#: ../gio/gnetworkmonitorbase.c:244 ../gio/gnetworkmonitorbase.c:274 msgid "Host unreachable" msgstr "No es pot accedir a la màquina" @@ -2355,7 +2363,7 @@ msgstr "No s'ha pogut crear el monitor de xarxa: " msgid "Could not get network status: " msgstr "No s'ha pogut obtenir l'estat de la xarxa: " -#: ../gio/gnetworkmonitornm.c:278 +#: ../gio/gnetworkmonitornm.c:326 #, c-format msgid "NetworkManager version too old" msgstr "La versió del NetworkManager és massa antiga" @@ -2368,21 +2376,21 @@ msgstr "El flux de sortida no implementa l'escriptura" msgid "Source stream is already closed" msgstr "El flux font ja està tancat" -#: ../gio/gresolver.c:331 ../gio/gthreadedresolver.c:116 +#: ../gio/gresolver.c:330 ../gio/gthreadedresolver.c:116 #: ../gio/gthreadedresolver.c:126 #, c-format msgid "Error resolving '%s': %s" msgstr "S'ha produït un error en resoldre «%s»: %s" -#: ../gio/gresource.c:298 ../gio/gresource.c:546 ../gio/gresource.c:563 -#: ../gio/gresource.c:684 ../gio/gresource.c:753 ../gio/gresource.c:814 -#: ../gio/gresource.c:894 ../gio/gresourcefile.c:452 +#: ../gio/gresource.c:304 ../gio/gresource.c:555 ../gio/gresource.c:572 +#: ../gio/gresource.c:693 ../gio/gresource.c:762 ../gio/gresource.c:823 +#: ../gio/gresource.c:903 ../gio/gresourcefile.c:452 #: ../gio/gresourcefile.c:553 ../gio/gresourcefile.c:655 #, c-format msgid "The resource at '%s' does not exist" msgstr "No existeix el recurs a «%s»" -#: ../gio/gresource.c:463 +#: ../gio/gresource.c:469 #, c-format msgid "The resource at '%s' failed to decompress" msgstr "No s'ha pogut descomprimir el recurs «%s»" @@ -2486,7 +2494,7 @@ msgstr "" msgid " SECTION An (optional) elf section name\n" msgstr " SECCIÓ El nom (opcional) d'una secció elf\n" -#: ../gio/gresource-tool.c:556 ../gio/gsettings-tool.c:648 +#: ../gio/gresource-tool.c:556 ../gio/gsettings-tool.c:652 msgid " COMMAND The (optional) command to explain\n" msgstr " ORDRE L'ordre (opcional) que s'explicarà\n" @@ -2520,6 +2528,7 @@ msgid " PATH A resource path\n" msgstr " CAMÍ Un camí de recurs\n" #: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72 +#: ../gio/gsettings-tool.c:837 #, c-format msgid "No such schema '%s'\n" msgstr "No existeix l'esquema «%s»\n" @@ -2555,38 +2564,38 @@ msgstr "El camí ha d'acabar amb una barra inclinada (/)\n" msgid "Path must not contain two adjacent slashes (//)\n" msgstr "El camí no pot contenir dues barres inclinades seguides (//)\n" -#: ../gio/gsettings-tool.c:490 +#: ../gio/gsettings-tool.c:494 #, c-format msgid "The provided value is outside of the valid range\n" msgstr "El valor proporcionat està fora del rang vàlid\n" -#: ../gio/gsettings-tool.c:497 +#: ../gio/gsettings-tool.c:501 #, c-format msgid "The key is not writable\n" msgstr "La clau no és d'escriptura\n" -#: ../gio/gsettings-tool.c:533 +#: ../gio/gsettings-tool.c:537 msgid "List the installed (non-relocatable) schemas" msgstr "Llista els esquemes instal·lats (que no es poden canviar de lloc)" -#: ../gio/gsettings-tool.c:539 +#: ../gio/gsettings-tool.c:543 msgid "List the installed relocatable schemas" msgstr "Llista els esquemes instal·lats que es poden canviar de lloc" -#: ../gio/gsettings-tool.c:545 +#: ../gio/gsettings-tool.c:549 msgid "List the keys in SCHEMA" msgstr "Llista les claus a l'ESQUEMA" -#: ../gio/gsettings-tool.c:546 ../gio/gsettings-tool.c:552 -#: ../gio/gsettings-tool.c:589 +#: ../gio/gsettings-tool.c:550 ../gio/gsettings-tool.c:556 +#: ../gio/gsettings-tool.c:593 msgid "SCHEMA[:PATH]" msgstr "ESQUEMA[:CAMÍ]" -#: ../gio/gsettings-tool.c:551 +#: ../gio/gsettings-tool.c:555 msgid "List the children of SCHEMA" msgstr "Llista els fills de l'ESQUEMA" -#: ../gio/gsettings-tool.c:557 +#: ../gio/gsettings-tool.c:561 msgid "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" @@ -2594,44 +2603,44 @@ msgstr "" "Llista les claus i els valors recursivament\n" "Si no es passa cap ESQUEMA, es llista totes les claus\n" -#: ../gio/gsettings-tool.c:559 +#: ../gio/gsettings-tool.c:563 msgid "[SCHEMA[:PATH]]" msgstr "[ESQUEMA[:CAMÍ]]" -#: ../gio/gsettings-tool.c:564 +#: ../gio/gsettings-tool.c:568 msgid "Get the value of KEY" msgstr "Obtén el valor de la CLAU" -#: ../gio/gsettings-tool.c:565 ../gio/gsettings-tool.c:571 -#: ../gio/gsettings-tool.c:583 ../gio/gsettings-tool.c:595 +#: ../gio/gsettings-tool.c:569 ../gio/gsettings-tool.c:575 +#: ../gio/gsettings-tool.c:587 ../gio/gsettings-tool.c:599 msgid "SCHEMA[:PATH] KEY" msgstr "ESQUEMA[:CAMÍ] CLAU" -#: ../gio/gsettings-tool.c:570 +#: ../gio/gsettings-tool.c:574 msgid "Query the range of valid values for KEY" msgstr "Consulta el rang de valors vàlids per a la CLAU" -#: ../gio/gsettings-tool.c:576 +#: ../gio/gsettings-tool.c:580 msgid "Set the value of KEY to VALUE" msgstr "Estableix el valor de la CLAU a VALOR" -#: ../gio/gsettings-tool.c:577 +#: ../gio/gsettings-tool.c:581 msgid "SCHEMA[:PATH] KEY VALUE" msgstr "ESQUEMA[:CAMÍ] CLAU VALOR" -#: ../gio/gsettings-tool.c:582 +#: ../gio/gsettings-tool.c:586 msgid "Reset KEY to its default value" msgstr "Reinicia la CLAU al seu valor predeterminat" -#: ../gio/gsettings-tool.c:588 +#: ../gio/gsettings-tool.c:592 msgid "Reset all keys in SCHEMA to their defaults" msgstr "Reinicia totes les claus de l'ESQUEMA als seus valors per defecte" -#: ../gio/gsettings-tool.c:594 +#: ../gio/gsettings-tool.c:598 msgid "Check if KEY is writable" msgstr "Comprova si la CLAU és d'escriptura" -#: ../gio/gsettings-tool.c:600 +#: ../gio/gsettings-tool.c:604 msgid "" "Monitor KEY for changes.\n" "If no KEY is specified, monitor all keys in SCHEMA.\n" @@ -2642,11 +2651,11 @@ msgstr "" "totes les claus de l'ESQUEMA.\n" "Utilitzeu ^C per deixar de fer el seguiment.\n" -#: ../gio/gsettings-tool.c:603 +#: ../gio/gsettings-tool.c:607 msgid "SCHEMA[:PATH] [KEY]" msgstr "ESQUEMA[:CAMÍ] [CLAU]" -#: ../gio/gsettings-tool.c:615 +#: ../gio/gsettings-tool.c:619 msgid "" "Usage:\n" " gsettings --version\n" @@ -2693,7 +2702,7 @@ msgstr "" "Utilitzeu «gsettings help ORDRE» per veure l'ajuda més detallada.\n" "\n" -#: ../gio/gsettings-tool.c:638 +#: ../gio/gsettings-tool.c:642 #, c-format msgid "" "Usage:\n" @@ -2708,12 +2717,12 @@ msgstr "" "%s\n" "\n" -#: ../gio/gsettings-tool.c:644 +#: ../gio/gsettings-tool.c:648 msgid " SCHEMADIR A directory to search for additional schemas\n" msgstr "" " DIRECTORI_D'ESQUEMES Un directori on cercar-hi esquemes addicionals\n" -#: ../gio/gsettings-tool.c:652 +#: ../gio/gsettings-tool.c:656 msgid "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" @@ -2721,160 +2730,160 @@ msgstr "" " ESQUEMA El nom de l'esquema\n" " CAMÍ El camí, pels esquemes que es poden canviar de lloc\n" -#: ../gio/gsettings-tool.c:657 +#: ../gio/gsettings-tool.c:661 msgid " KEY The (optional) key within the schema\n" msgstr " CLAU La clau (opcional) de l'esquema\n" -#: ../gio/gsettings-tool.c:661 +#: ../gio/gsettings-tool.c:665 msgid " KEY The key within the schema\n" msgstr " CLAU La clau de l'esquema\n" -#: ../gio/gsettings-tool.c:665 +#: ../gio/gsettings-tool.c:669 msgid " VALUE The value to set\n" msgstr " VALOR El valor a establir\n" -#: ../gio/gsettings-tool.c:720 +#: ../gio/gsettings-tool.c:725 #, c-format msgid "Could not load schemas from %s: %s\n" msgstr "No s'han pogut carregar els esquemes %s: %s\n" -#: ../gio/gsettings-tool.c:782 +#: ../gio/gsettings-tool.c:795 #, c-format msgid "Empty schema name given\n" msgstr "S'ha donat un nom d'esquema buit\n" -#: ../gio/gsettings-tool.c:811 +#: ../gio/gsettings-tool.c:850 #, c-format msgid "No such key '%s'\n" msgstr "No existeix la clau «%s»\n" -#: ../gio/gsocket.c:271 +#: ../gio/gsocket.c:280 msgid "Invalid socket, not initialized" msgstr "El sòcol no és vàlid, no està inicialitzat" -#: ../gio/gsocket.c:278 +#: ../gio/gsocket.c:287 #, c-format msgid "Invalid socket, initialization failed due to: %s" msgstr "El sòcol no és vàlid, ha fallat la inicialització degut a: %s" -#: ../gio/gsocket.c:286 +#: ../gio/gsocket.c:295 msgid "Socket is already closed" msgstr "El sòcol ja és tancat" -#: ../gio/gsocket.c:301 ../gio/gsocket.c:3627 ../gio/gsocket.c:3682 +#: ../gio/gsocket.c:310 ../gio/gsocket.c:3624 ../gio/gsocket.c:3679 msgid "Socket I/O timed out" msgstr "S'ha excedit el temps d'espera d'entrada/sortida del sòcol" -#: ../gio/gsocket.c:448 +#: ../gio/gsocket.c:439 #, c-format msgid "creating GSocket from fd: %s" msgstr "s'està creant un GSocket a partir del descriptor de fitxer: %s" -#: ../gio/gsocket.c:476 ../gio/gsocket.c:530 ../gio/gsocket.c:537 +#: ../gio/gsocket.c:467 ../gio/gsocket.c:521 ../gio/gsocket.c:528 #, c-format msgid "Unable to create socket: %s" msgstr "No s'ha pogut crear el sòcol: %s" -#: ../gio/gsocket.c:530 +#: ../gio/gsocket.c:521 msgid "Unknown family was specified" msgstr "S'ha especificat una família desconeguda" -#: ../gio/gsocket.c:537 +#: ../gio/gsocket.c:528 msgid "Unknown protocol was specified" msgstr "S'ha especificat un protocol desconegut" -#: ../gio/gsocket.c:1727 +#: ../gio/gsocket.c:1724 #, c-format msgid "could not get local address: %s" msgstr "no s'ha pogut obtenir l'adreça local: %s" -#: ../gio/gsocket.c:1770 +#: ../gio/gsocket.c:1767 #, c-format msgid "could not get remote address: %s" msgstr "no s'ha pogut obtenir l'adreça remota: %s" -#: ../gio/gsocket.c:1831 +#: ../gio/gsocket.c:1828 #, c-format msgid "could not listen: %s" msgstr "no s'ha pogut escoltar: %s" -#: ../gio/gsocket.c:1930 +#: ../gio/gsocket.c:1927 #, c-format msgid "Error binding to address: %s" msgstr "S'ha produït un error en vincular-se a l'adreça: %s" -#: ../gio/gsocket.c:2045 ../gio/gsocket.c:2082 +#: ../gio/gsocket.c:2042 ../gio/gsocket.c:2079 #, c-format msgid "Error joining multicast group: %s" msgstr "S'ha produït un error en unir-se a un grup de multidestinació: %s" -#: ../gio/gsocket.c:2046 ../gio/gsocket.c:2083 +#: ../gio/gsocket.c:2043 ../gio/gsocket.c:2080 #, c-format msgid "Error leaving multicast group: %s" msgstr "S'ha produït un error en deixar un grup de multidestinació: %s" -#: ../gio/gsocket.c:2047 +#: ../gio/gsocket.c:2044 msgid "No support for source-specific multicast" msgstr "Encara no es pot fer multidestinació des d'un origen concret" -#: ../gio/gsocket.c:2269 +#: ../gio/gsocket.c:2266 #, c-format msgid "Error accepting connection: %s" msgstr "S'ha produït un error en acceptar la connexió: %s" -#: ../gio/gsocket.c:2392 +#: ../gio/gsocket.c:2389 msgid "Connection in progress" msgstr "Connexió en curs" -#: ../gio/gsocket.c:2442 +#: ../gio/gsocket.c:2439 msgid "Unable to get pending error: " msgstr "No s'ha pogut obtenir l'error pendent: " -#: ../gio/gsocket.c:2645 +#: ../gio/gsocket.c:2642 #, c-format msgid "Error receiving data: %s" msgstr "S'ha produït un error en rebre les dades: %s" -#: ../gio/gsocket.c:2820 +#: ../gio/gsocket.c:2817 #, c-format msgid "Error sending data: %s" msgstr "S'ha produït un error en enviar les dades: %s" -#: ../gio/gsocket.c:2934 +#: ../gio/gsocket.c:2931 #, c-format msgid "Unable to shutdown socket: %s" msgstr "No s'ha pogut aturar el sòcol: %s" -#: ../gio/gsocket.c:3013 +#: ../gio/gsocket.c:3010 #, c-format msgid "Error closing socket: %s" msgstr "S'ha produït un error en tancar el sòcol: %s" -#: ../gio/gsocket.c:3620 +#: ../gio/gsocket.c:3617 #, c-format msgid "Waiting for socket condition: %s" msgstr "S'està esperant la condició del sòcol: %s" -#: ../gio/gsocket.c:3907 ../gio/gsocket.c:3990 ../gio/gsocket.c:4218 +#: ../gio/gsocket.c:3904 ../gio/gsocket.c:3987 ../gio/gsocket.c:4230 #, c-format msgid "Error sending message: %s" msgstr "S'ha produït un error en enviar el missatge: %s" -#: ../gio/gsocket.c:3932 +#: ../gio/gsocket.c:3929 msgid "GSocketControlMessage not supported on Windows" msgstr "El GSocketControlMessage no està implementat a Windows" -#: ../gio/gsocket.c:4546 ../gio/gsocket.c:4684 +#: ../gio/gsocket.c:4559 ../gio/gsocket.c:4697 #, c-format msgid "Error receiving message: %s" msgstr "S'ha produït un error en rebre un missatge: %s" -#: ../gio/gsocket.c:4806 +#: ../gio/gsocket.c:4819 #, c-format msgid "Unable to read socket credentials: %s" msgstr "No s'han pogut llegir les credencials del sòcol: %s" -#: ../gio/gsocket.c:4815 +#: ../gio/gsocket.c:4828 msgid "g_socket_get_credentials not implemented for this OS" msgstr "Aquest sistema operatiu no implementa el «g_socket_get_credentials»" @@ -2907,11 +2916,11 @@ msgstr "" msgid "Proxy protocol '%s' is not supported." msgstr "El protocol del servidor intermediari «%s» no està implementat." -#: ../gio/gsocketlistener.c:188 +#: ../gio/gsocketlistener.c:218 msgid "Listener is already closed" msgstr "Ja està tancat el receptor de connexions" -#: ../gio/gsocketlistener.c:234 +#: ../gio/gsocketlistener.c:264 msgid "Added socket is closed" msgstr "El sòcol que s'ha afegit és tancat" @@ -3138,12 +3147,12 @@ msgstr "No s'esperava un missatge de control però s'ha obtingut %d" msgid "Error while disabling SO_PASSCRED: %s" msgstr "S'ha produït un error en inhabilitar «SO_PASSCRED»: %s" -#: ../gio/gunixinputstream.c:370 ../gio/gunixinputstream.c:391 +#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390 #, c-format msgid "Error reading from file descriptor: %s" msgstr "S'ha produït un error en llegir del descriptor de fitxer: %s" -#: ../gio/gunixinputstream.c:424 ../gio/gunixoutputstream.c:410 +#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409 #, c-format msgid "Error closing file descriptor: %s" msgstr "S'ha produït un error tancant el descriptor de fitxer: %s" @@ -3152,7 +3161,7 @@ msgstr "S'ha produït un error tancant el descriptor de fitxer: %s" msgid "Filesystem root" msgstr "Arrel del sistema de fitxers" -#: ../gio/gunixoutputstream.c:356 ../gio/gunixoutputstream.c:377 +#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376 #, c-format msgid "Error writing to file descriptor: %s" msgstr "S'ha produït un error en escriure al descriptor de fitxer: %s" @@ -3172,34 +3181,17 @@ msgstr "el volum no implementa l'expulsió" msgid "volume doesn't implement eject or eject_with_operation" msgstr "el volum no implementa l'expulsió o «eject_with_operation»" -#: ../gio/gwin32appinfo.c:274 -msgid "Can't find application" -msgstr "No es pot trobar l'aplicació" - -#: ../gio/gwin32appinfo.c:303 -#, c-format -msgid "Error launching application: %s" -msgstr "S'ha produït un error en executar l'aplicació: %s" - -#: ../gio/gwin32appinfo.c:378 -msgid "association changes not supported on win32" -msgstr "els canvis associatius no estan implementats a win32" - -#: ../gio/gwin32appinfo.c:390 -msgid "Association creation not supported on win32" -msgstr "La creació associativa no està implementada a win32" - -#: ../gio/gwin32inputstream.c:344 +#: ../gio/gwin32inputstream.c:343 #, c-format msgid "Error reading from handle: %s" msgstr "S'ha produït un error en llegir del gestor: %s" -#: ../gio/gwin32inputstream.c:388 ../gio/gwin32outputstream.c:375 +#: ../gio/gwin32inputstream.c:387 ../gio/gwin32outputstream.c:374 #, c-format msgid "Error closing handle: %s" msgstr "S'ha produït un error en tancar el gestor: %s" -#: ../gio/gwin32outputstream.c:331 +#: ../gio/gwin32outputstream.c:330 #, c-format msgid "Error writing to handle: %s" msgstr "S'ha produït un error en escriure al gestor: %s" @@ -3683,25 +3675,25 @@ msgstr "No s'ha pogut llegir l'enllaç simbòlic «%s»: %s" msgid "Symbolic links not supported" msgstr "No es poden utilitzar els enllaços simbòlics" -#: ../glib/giochannel.c:1389 +#: ../glib/giochannel.c:1388 #, c-format msgid "Could not open converter from '%s' to '%s': %s" msgstr "No s'ha pogut obrir el convertidor de «%s» a «%s»: %s" -#: ../glib/giochannel.c:1734 +#: ../glib/giochannel.c:1733 msgid "Can't do a raw read in g_io_channel_read_line_string" msgstr "No es pot fer una lectura bàsica a g_io_channel_read_line_string" -#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039 -#: ../glib/giochannel.c:2126 +#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038 +#: ../glib/giochannel.c:2125 msgid "Leftover unconverted data in read buffer" msgstr "A la memòria intermèdia de lectura hi ha dades sobrants no convertides" -#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939 +#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938 msgid "Channel terminates in a partial character" msgstr "El canal acaba en un caràcter parcial" -#: ../glib/giochannel.c:1925 +#: ../glib/giochannel.c:1924 msgid "Can't do a raw read in g_io_channel_read_to_end" msgstr "No es pot fer una lectura bàsica a g_io_channel_read_to_end" @@ -3741,8 +3733,8 @@ msgid "Key file contains unsupported encoding '%s'" msgstr "El fitxer de claus conté la codificació no implementada «%s»" #: ../glib/gkeyfile.c:1548 ../glib/gkeyfile.c:1721 ../glib/gkeyfile.c:3099 -#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3288 ../glib/gkeyfile.c:3418 -#: ../glib/gkeyfile.c:3560 ../glib/gkeyfile.c:3789 ../glib/gkeyfile.c:3856 +#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3292 ../glib/gkeyfile.c:3422 +#: ../glib/gkeyfile.c:3566 ../glib/gkeyfile.c:3795 ../glib/gkeyfile.c:3862 #, c-format msgid "Key file does not have group '%s'" msgstr "El fitxer de claus no té el grup «%s»" @@ -3781,31 +3773,31 @@ msgid "Key '%s' in group '%s' has value '%s' where %s was expected" msgstr "" "La clau «%s» en el grup «%s» té el valor «%s» però s'esperava el valor %s" -#: ../glib/gkeyfile.c:4096 +#: ../glib/gkeyfile.c:4102 msgid "Key file contains escape character at end of line" msgstr "El fitxer de claus conté un caràcter d'escapada al final de línia" -#: ../glib/gkeyfile.c:4118 +#: ../glib/gkeyfile.c:4124 #, c-format msgid "Key file contains invalid escape sequence '%s'" msgstr "El fitxer de claus conté la seqüència d'escapada no vàlida «%s»" -#: ../glib/gkeyfile.c:4260 +#: ../glib/gkeyfile.c:4266 #, c-format msgid "Value '%s' cannot be interpreted as a number." msgstr "El valor «%s» no es pot interpretar com un nombre." -#: ../glib/gkeyfile.c:4274 +#: ../glib/gkeyfile.c:4280 #, c-format msgid "Integer value '%s' out of range" msgstr "El valor enter «%s» és fora de l'interval" -#: ../glib/gkeyfile.c:4307 +#: ../glib/gkeyfile.c:4313 #, c-format msgid "Value '%s' cannot be interpreted as a float number." msgstr "El valor «%s» no es pot interpretar com un nombre amb coma flotant." -#: ../glib/gkeyfile.c:4331 +#: ../glib/gkeyfile.c:4337 #, c-format msgid "Value '%s' cannot be interpreted as a boolean." msgstr "El valor «%s» no es pot interpretar com un booleà." @@ -3860,7 +3852,7 @@ msgid "" "reference (ê for example) - perhaps the digit is too large" msgstr "" "No s'ha pogut analitzar «%-.*s»: hi hauria d'haver hagut un dígit dins un " -"caràcter de referència (per exemple ê). Potser el dígit és massa llarg." +"caràcter de referència (per exemple ê). Potser el dígit és massa gran." #: ../glib/gmarkup.c:695 msgid "" @@ -4043,61 +4035,65 @@ msgstr "" "El document ha acabat de manera inesperada enmig d'un comentari o d'una " "instrucció de processament" -#: ../glib/goption.c:858 +#: ../glib/goption.c:857 msgid "Usage:" msgstr "Forma d'ús:" -#: ../glib/goption.c:858 +#: ../glib/goption.c:861 msgid "[OPTION...]" msgstr "[OPCIÓ...]" -#: ../glib/goption.c:974 +#: ../glib/goption.c:977 msgid "Help Options:" msgstr "Opcions d'ajuda:" -#: ../glib/goption.c:975 +#: ../glib/goption.c:978 msgid "Show help options" msgstr "Mostra les opcions d'ajuda" -#: ../glib/goption.c:981 +#: ../glib/goption.c:984 msgid "Show all help options" msgstr "Mostra totes les opcions d'ajuda" -#: ../glib/goption.c:1043 +#: ../glib/goption.c:1047 msgid "Application Options:" msgstr "Opcions de l'aplicació:" -#: ../glib/goption.c:1107 ../glib/goption.c:1177 +#: ../glib/goption.c:1049 +msgid "Options:" +msgstr "Opcions:" + +#: ../glib/goption.c:1113 ../glib/goption.c:1183 #, c-format msgid "Cannot parse integer value '%s' for %s" msgstr "No es pot analitzar el valor enter «%s» per a %s" -#: ../glib/goption.c:1117 ../glib/goption.c:1185 +#: ../glib/goption.c:1123 ../glib/goption.c:1191 #, c-format msgid "Integer value '%s' for %s out of range" msgstr "El valor enter «%s» per a %s és fora de l'interval" -#: ../glib/goption.c:1142 +#: ../glib/goption.c:1148 #, c-format msgid "Cannot parse double value '%s' for %s" msgstr "No es pot analitzar el valor doble «%s» per a %s" -#: ../glib/goption.c:1150 +#: ../glib/goption.c:1156 #, c-format msgid "Double value '%s' for %s out of range" msgstr "El valor doble «%s» per a %s és fora de l'interval" -#: ../glib/goption.c:1436 ../glib/goption.c:1515 +#: ../glib/goption.c:1442 ../glib/goption.c:1521 #, c-format msgid "Error parsing option %s" msgstr "S'ha produït un error en analitzar l'opció %s" -#: ../glib/goption.c:1546 ../glib/goption.c:1659 +#: ../glib/goption.c:1552 ../glib/goption.c:1665 #, c-format msgid "Missing argument for %s" msgstr "Manca un argument per a %s" -#: ../glib/goption.c:2120 +#: ../glib/goption.c:2126 #, c-format msgid "Unknown option %s" msgstr "Es desconeix l'opció %s" @@ -4217,7 +4213,7 @@ msgstr "falta un «)» després del comentari" #: ../glib/gregex.c:376 msgid "regular expression is too large" -msgstr "l'expressió regular és massa llarga" +msgstr "l'expressió regular és massa gran" #: ../glib/gregex.c:379 msgid "failed to get memory" @@ -4406,72 +4402,72 @@ msgstr "el nom és massa llarg a «(*MARK)«, «(*PRUNE)«, «(*SKIP)» o «(*TH msgid "character value in \\u.... sequence is too large" msgstr "el valor del caràcter a la seqüència «\\u...» és massa llarg" -#: ../glib/gregex.c:746 ../glib/gregex.c:1915 +#: ../glib/gregex.c:746 ../glib/gregex.c:1973 #, c-format msgid "Error while matching regular expression %s: %s" msgstr "S'ha produït un error en fer coincidir l'expressió regular %s: %s" -#: ../glib/gregex.c:1312 +#: ../glib/gregex.c:1317 msgid "PCRE library is compiled without UTF8 support" msgstr "La biblioteca PCRE no està compilada per interpretar UTF-8" -#: ../glib/gregex.c:1316 +#: ../glib/gregex.c:1321 msgid "PCRE library is compiled without UTF8 properties support" msgstr "" "La biblioteca PCRE no està compilada per interpretar les propietats UTF-8" -#: ../glib/gregex.c:1324 +#: ../glib/gregex.c:1329 msgid "PCRE library is compiled with incompatible options" msgstr "La biblioteca PCRE ha estat compilada amb opcions incompatibles" -#: ../glib/gregex.c:1383 +#: ../glib/gregex.c:1358 +#, c-format +msgid "Error while optimizing regular expression %s: %s" +msgstr "S'ha produït un error en optimitzar l'expressió regular %s: %s" + +#: ../glib/gregex.c:1438 #, c-format msgid "Error while compiling regular expression %s at char %d: %s" msgstr "" "S'ha produït un error en compilar l'expressió regular %s al caràcter %d: %s" -#: ../glib/gregex.c:1425 -#, c-format -msgid "Error while optimizing regular expression %s: %s" -msgstr "S'ha produït un error en optimitzar l'expressió regular %s: %s" - -#: ../glib/gregex.c:2347 +#: ../glib/gregex.c:2409 msgid "hexadecimal digit or '}' expected" msgstr "s'esperava un dígit hexadecimal o bé «}»" -#: ../glib/gregex.c:2363 +#: ../glib/gregex.c:2425 msgid "hexadecimal digit expected" msgstr "s'esperava un dígit hexadecimal" -#: ../glib/gregex.c:2403 +#: ../glib/gregex.c:2465 msgid "missing '<' in symbolic reference" msgstr "falta un «<» en la referència simbòlica" -#: ../glib/gregex.c:2412 +#: ../glib/gregex.c:2474 msgid "unfinished symbolic reference" msgstr "la referència simbòlica no està acabada" -#: ../glib/gregex.c:2419 +#: ../glib/gregex.c:2481 msgid "zero-length symbolic reference" msgstr "referència simbòlica de longitud zero" -#: ../glib/gregex.c:2430 +#: ../glib/gregex.c:2492 msgid "digit expected" msgstr "s'esperava un dígit" -#: ../glib/gregex.c:2448 +#: ../glib/gregex.c:2510 msgid "illegal symbolic reference" msgstr "la referència simbòlica no és vàlida" -#: ../glib/gregex.c:2510 +#: ../glib/gregex.c:2572 msgid "stray final '\\'" msgstr "«\\» final extraviat" -#: ../glib/gregex.c:2514 +#: ../glib/gregex.c:2576 msgid "unknown escape sequence" msgstr "no es reconeix la seqüència d'escapament" -#: ../glib/gregex.c:2524 +#: ../glib/gregex.c:2586 #, c-format msgid "Error while parsing replacement text \"%s\" at char %lu: %s" msgstr "" @@ -4521,62 +4517,62 @@ msgstr "" msgid "Unexpected error in waitpid() (%s)" msgstr "S'ha produït un error inesperat en waitpid() (%s)" -#: ../glib/gspawn.c:849 ../glib/gspawn-win32.c:1233 +#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233 #, c-format msgid "Child process exited with code %ld" msgstr "El procés fill ha sortit amb el codi %ld" -#: ../glib/gspawn.c:857 +#: ../glib/gspawn.c:852 #, c-format msgid "Child process killed by signal %ld" msgstr "El senyal %ld ha matat el procés fill" -#: ../glib/gspawn.c:864 +#: ../glib/gspawn.c:859 #, c-format msgid "Child process stopped by signal %ld" msgstr "El senyal %ld ha aturat el procés fill" -#: ../glib/gspawn.c:871 +#: ../glib/gspawn.c:866 #, c-format msgid "Child process exited abnormally" msgstr "El procés fill ha sortit inesperadament" -#: ../glib/gspawn.c:1276 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 +#: ../glib/gspawn.c:1271 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 #, c-format msgid "Failed to read from child pipe (%s)" msgstr "No s'ha pogut llegir des del conducte fill (%s)" -#: ../glib/gspawn.c:1346 +#: ../glib/gspawn.c:1341 #, c-format msgid "Failed to fork (%s)" msgstr "No s'ha pogut bifurcar-se (%s)" -#: ../glib/gspawn.c:1495 ../glib/gspawn-win32.c:370 +#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370 #, c-format msgid "Failed to change to directory '%s' (%s)" msgstr "No s'ha pogut canviar al directori «%s» (%s)" -#: ../glib/gspawn.c:1505 +#: ../glib/gspawn.c:1500 #, c-format msgid "Failed to execute child process \"%s\" (%s)" msgstr "No s'ha pogut executar el procés fill «%s» (%s)" -#: ../glib/gspawn.c:1515 +#: ../glib/gspawn.c:1510 #, c-format msgid "Failed to redirect output or input of child process (%s)" msgstr "No s'ha pogut redirigir l'entrada o la sortida del procés fill (%s)" -#: ../glib/gspawn.c:1524 +#: ../glib/gspawn.c:1519 #, c-format msgid "Failed to fork child process (%s)" msgstr "No s'ha pogut bifurcar el procés fill (%s)" -#: ../glib/gspawn.c:1532 +#: ../glib/gspawn.c:1527 #, c-format msgid "Unknown error executing child process \"%s\"" msgstr "S'ha produït un error desconegut en executar el procés fill «%s»" -#: ../glib/gspawn.c:1556 +#: ../glib/gspawn.c:1551 #, c-format msgid "Failed to read enough data from child pid pipe (%s)" msgstr "" @@ -4735,6 +4731,23 @@ msgstr[1] "%s bytes" msgid "%.1f KB" msgstr "%.1f KB" +#~ msgid "Unable to find default local directory monitor type" +#~ msgstr "" +#~ "No s'ha pogut trobar el tipus de seguiment de directoris locals " +#~ "predeterminat" + +#~ msgid "Can't find application" +#~ msgstr "No es pot trobar l'aplicació" + +#~ msgid "Error launching application: %s" +#~ msgstr "S'ha produït un error en executar l'aplicació: %s" + +#~ msgid "association changes not supported on win32" +#~ msgstr "els canvis associatius no estan implementats a win32" + +#~ msgid "Association creation not supported on win32" +#~ msgstr "La creació associativa no està implementada a win32" + #~ msgid "URIs not supported" #~ msgstr "No estan implementats els URI" diff --git a/po/ca@valencia.gmo b/po/ca@valencia.gmo new file mode 100644 index 0000000000000000000000000000000000000000..6759558207f7cff4bd0aac738cc070f301a1d048 GIT binary patch literal 105797 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

jyDwni7Yko-J;)^rmQ~TH}Z9 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 z, 2002, 2004, 2005. # Lukas Novotny , 2006. # Jakub Friedl , 2006, 2007. -# Petr Kovar , 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014. -# Marek Černocký , 2012, 2013, 2014, 2015. +# Petr Kovar , 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015. +# Marek Černocký , 2012, 2013, 2014, 2015, 2016. # msgid "" msgstr "" "Project-Id-Version: glib\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=glib&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2015-03-02 18:49+0000\n" -"PO-Revision-Date: 2015-03-02 21:51+0100\n" +"POT-Creation-Date: 2016-03-08 07:39+0000\n" +"PO-Revision-Date: 2016-03-08 18:48+0100\n" "Last-Translator: Marek Černocký \n" "Language-Team: Czech \n" "Language: cs\n" @@ -24,29 +24,33 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Gtranslator 2.91.6\n" +"X-Generator: Gtranslator 2.91.7\n" "X-Project-Style: gnome\n" -#: ../gio/gapplication.c:531 -msgid "Enter GApplication service mode (use from D-Bus service files)" -msgstr "" -"Vstoupit do režimu služby GApplication (použít ze souborů služby D-Bus)" - -#: ../gio/gapplication.c:536 +#: ../gio/gapplication.c:493 msgid "GApplication options" msgstr "Volby GApplication" -#: ../gio/gapplication.c:536 +#: ../gio/gapplication.c:493 msgid "Show GApplication options" msgstr "Ukázat volby GApplication" +#: ../gio/gapplication.c:538 +msgid "Enter GApplication service mode (use from D-Bus service files)" +msgstr "" +"Vstoupit do režimu služby GApplication (použít ze souborů služby D-Bus)" + +#: ../gio/gapplication.c:550 +msgid "Override the application's ID" +msgstr "Přepsat ID aplikace" + #: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46 -#: ../gio/gresource-tool.c:485 ../gio/gsettings-tool.c:521 +#: ../gio/gresource-tool.c:488 ../gio/gsettings-tool.c:512 msgid "Print help" msgstr "Vypsat nápovědu" -#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:486 -#: ../gio/gresource-tool.c:554 +#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:489 +#: ../gio/gresource-tool.c:557 msgid "[COMMAND]" msgstr "[PŘÍKAZ]" @@ -54,7 +58,7 @@ msgstr "[PŘÍKAZ]" msgid "Print version" msgstr "Vypsat verzi" -#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:527 +#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:518 msgid "Print version information and exit" msgstr "Vypsat informace o verzi a skončit" @@ -117,14 +121,16 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)" msgstr "Identifikátor aplikace ve formátu D-Bus (např. org.example.viewer)" #: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589 -#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:492 -#: ../gio/gresource-tool.c:558 +#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:495 +#: ../gio/gresource-tool.c:561 msgid "FILE" msgstr "SOUBOR" #: ../gio/gapplication-tool.c:72 -msgid "Optional relative or relative filenames, or URIs to open" -msgstr "Volitelné relativní názvy souborů nebo URI, které chcete otevřít" +msgid "Optional relative or absolute filenames, or URIs to open" +msgstr "" +"Volitelné relativní nebo absolutní názvy souborů nebo adresy URI, které se " +"mají otevřít" #: ../gio/gapplication-tool.c:73 msgid "ACTION" @@ -142,8 +148,8 @@ msgstr "PARAMETR" msgid "Optional parameter to the action invocation, in GVariant format" msgstr "Volitelný parametr k akci vyvolání ve formátu GVariant" -#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:523 -#: ../gio/gsettings-tool.c:607 +#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526 +#: ../gio/gsettings-tool.c:598 #, c-format msgid "" "Unknown command %s\n" @@ -156,8 +162,8 @@ msgstr "" msgid "Usage:\n" msgstr "Použití:\n" -#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:548 -#: ../gio/gsettings-tool.c:641 +#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551 +#: ../gio/gsettings-tool.c:632 msgid "Arguments:\n" msgstr "Argumenty:\n" @@ -258,9 +264,9 @@ msgstr "" "\n" #: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498 -#: ../gio/ginputstream.c:176 ../gio/ginputstream.c:376 -#: ../gio/ginputstream.c:614 ../gio/ginputstream.c:1013 -#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:830 +#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379 +#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1016 +#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834 #: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206 #, c-format msgid "Too large count value passed to %s" @@ -275,8 +281,8 @@ msgstr "Posouvání není v proudu podporováno" msgid "Cannot truncate GBufferedInputStream" msgstr "Nelze zkrátit GBufferedInputStream" -#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1202 -#: ../gio/giostream.c:278 ../gio/goutputstream.c:1654 +#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1205 +#: ../gio/giostream.c:300 ../gio/goutputstream.c:1658 msgid "Stream is already closed" msgstr "Proud je již uzavřen" @@ -284,10 +290,9 @@ msgstr "Proud je již uzavřen" msgid "Truncate not supported on base stream" msgstr "Zkrácování není v proudu podporováno" -#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1896 -#: ../gio/gdbusconnection.c:1989 ../gio/gdbusprivate.c:1421 -#: ../gio/glocalfile.c:2181 ../gio/gsimpleasyncresult.c:830 -#: ../gio/gsimpleasyncresult.c:856 +#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1847 +#: ../gio/gdbusprivate.c:1375 ../gio/glocalfile.c:2220 +#: ../gio/gsimpleasyncresult.c:870 ../gio/gsimpleasyncresult.c:896 #, c-format msgid "Operation was cancelled" msgstr "Operace byla zruÅ¡ena" @@ -305,24 +310,24 @@ msgid "Not enough space in destination" msgstr "Cíl nemá dostatek místa" #: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848 -#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 -#: ../glib/gconvert.c:845 ../glib/giochannel.c:1557 ../glib/giochannel.c:1599 -#: ../glib/giochannel.c:2443 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 +#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 ../glib/gconvert.c:845 +#: ../glib/giochannel.c:1556 ../glib/giochannel.c:1598 +#: ../glib/giochannel.c:2442 ../glib/gutf8.c:853 ../glib/gutf8.c:1306 msgid "Invalid byte sequence in conversion input" msgstr "Neplatná posloupnost bajtů na vstupu převodu" -#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 -#: ../glib/gconvert.c:770 ../glib/giochannel.c:1564 ../glib/giochannel.c:2455 +#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 ../glib/gconvert.c:770 +#: ../glib/giochannel.c:1563 ../glib/giochannel.c:2454 #, c-format msgid "Error during conversion: %s" msgstr "Chyba při převodu: %s" -#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:985 +#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1078 msgid "Cancellable initialization not supported" msgstr "ZruÅ¡itelné spuÅ¡tění není podporováno" #: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321 -#: ../glib/giochannel.c:1385 +#: ../glib/giochannel.c:1384 #, c-format msgid "Conversion from character set '%s' to '%s' is not supported" msgstr "Převod ze znakové sady „%s“ do „%s“ není podporován" @@ -341,7 +346,7 @@ msgstr "typ %s" msgid "Unknown type" msgstr "Neznámý typ" -#: ../gio/gcontenttype-win32.c:161 +#: ../gio/gcontenttype-win32.c:162 #, c-format msgid "%s filetype" msgstr "typ souboru %s" @@ -366,13 +371,13 @@ msgstr "Změna přihlaÅ¡ovacích údajů na tomto OS není implementován" msgid "Unexpected early end-of-stream" msgstr "Neočekávaný časný konec proudu" -#: ../gio/gdbusaddress.c:148 ../gio/gdbusaddress.c:236 -#: ../gio/gdbusaddress.c:317 +#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241 +#: ../gio/gdbusaddress.c:322 #, c-format msgid "Unsupported key '%s' in address entry '%s'" msgstr "Nepodporovaný klíč „%s“ v záznamu adresy „%s“" -#: ../gio/gdbusaddress.c:175 +#: ../gio/gdbusaddress.c:180 #, c-format msgid "" "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" @@ -380,27 +385,27 @@ msgstr "" "Adresa „%s“ je neplatná (je zapotřebí právě jeden z klíčů path, tmpdir nebo " "abstract)" -#: ../gio/gdbusaddress.c:188 +#: ../gio/gdbusaddress.c:193 #, c-format msgid "Meaningless key/value pair combination in address entry '%s'" msgstr "Nesmyslná párová kombinace klíč/hodnota v záznamu adresy „%s“" -#: ../gio/gdbusaddress.c:251 ../gio/gdbusaddress.c:332 +#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 #, c-format msgid "Error in address '%s' - the port attribute is malformed" msgstr "Chyba v adrese „%s“ – atribut portu má chybný formát" -#: ../gio/gdbusaddress.c:262 ../gio/gdbusaddress.c:343 +#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348 #, c-format msgid "Error in address '%s' - the family attribute is malformed" msgstr "Chyba v adrese „%s“ – atribut rodiny má chybný formát" -#: ../gio/gdbusaddress.c:452 +#: ../gio/gdbusaddress.c:457 #, c-format msgid "Address element '%s' does not contain a colon (:)" msgstr "Prvek adresy „%s“ neobsahuje dvojtečku (:)" -#: ../gio/gdbusaddress.c:473 +#: ../gio/gdbusaddress.c:478 #, c-format msgid "" "Key/Value pair %d, '%s', in address element '%s' does not contain an equal " @@ -408,7 +413,7 @@ msgid "" msgstr "" "Pár klíč/hodnota %d, „%s“, v prvku adresy „%s“ neobsahuje znak rovná se" -#: ../gio/gdbusaddress.c:487 +#: ../gio/gdbusaddress.c:492 #, c-format msgid "" "Error unescaping key or value in Key/Value pair %d, '%s', in address element " @@ -417,7 +422,7 @@ msgstr "" "Chyba v neuvozeném klíči nebo hodnotě v páru klíč/hodnota %d, „%s“, v prvku " "adresy „%s“" -#: ../gio/gdbusaddress.c:565 +#: ../gio/gdbusaddress.c:570 #, c-format msgid "" "Error in address '%s' - the unix transport requires exactly one of the keys " @@ -426,84 +431,84 @@ msgstr "" "Chyba v adrese „%s“ – unix transport vyžaduje jako nastavený právě jeden z " "klíčů „path“ nebo „abstract“" -#: ../gio/gdbusaddress.c:601 +#: ../gio/gdbusaddress.c:606 #, c-format msgid "Error in address '%s' - the host attribute is missing or malformed" msgstr "Chyba v adrese „%s“ – atribut počítače schází nebo má chybný formát" -#: ../gio/gdbusaddress.c:615 +#: ../gio/gdbusaddress.c:620 #, c-format msgid "Error in address '%s' - the port attribute is missing or malformed" msgstr "Chyba v adrese „%s“ – atribut portu schází nebo má chybný formát" -#: ../gio/gdbusaddress.c:629 +#: ../gio/gdbusaddress.c:634 #, c-format msgid "Error in address '%s' - the noncefile attribute is missing or malformed" msgstr "Chyba v adrese „%s“ – atribut noncefile schází nebo má chybný formát" -#: ../gio/gdbusaddress.c:650 +#: ../gio/gdbusaddress.c:655 msgid "Error auto-launching: " msgstr "Chyba při automatickém spouÅ¡tění: " -#: ../gio/gdbusaddress.c:658 +#: ../gio/gdbusaddress.c:663 #, c-format msgid "Unknown or unsupported transport '%s' for address '%s'" msgstr "Neznámý nebo nepodporovaný transport „%s“ adresy „%s“" -#: ../gio/gdbusaddress.c:694 +#: ../gio/gdbusaddress.c:699 #, c-format msgid "Error opening nonce file '%s': %s" msgstr "Chyba při otevírání souboru nonce „%s“: %s" -#: ../gio/gdbusaddress.c:712 +#: ../gio/gdbusaddress.c:717 #, c-format msgid "Error reading from nonce file '%s': %s" msgstr "Chyba při čtení ze souboru nonce „%s“: %s" -#: ../gio/gdbusaddress.c:721 +#: ../gio/gdbusaddress.c:726 #, c-format msgid "Error reading from nonce file '%s', expected 16 bytes, got %d" msgstr "Chyba při čtení ze souboru nonce „%s“, očekáváno 16 bajtů, obdrženo %d" -#: ../gio/gdbusaddress.c:739 +#: ../gio/gdbusaddress.c:744 #, c-format msgid "Error writing contents of nonce file '%s' to stream:" msgstr "Chyba při zápisu obsahu souboru nonce „%s“ do proudu:" -#: ../gio/gdbusaddress.c:958 +#: ../gio/gdbusaddress.c:950 msgid "The given address is empty" msgstr "Daná adresa je prázdná" -#: ../gio/gdbusaddress.c:1028 +#: ../gio/gdbusaddress.c:1063 #, c-format msgid "Cannot spawn a message bus when setuid" msgstr "Nelze spustit sběrnici zpráv bez setuid" -#: ../gio/gdbusaddress.c:1035 +#: ../gio/gdbusaddress.c:1070 msgid "Cannot spawn a message bus without a machine-id: " msgstr "Nelze spustit sběrnici zpráv bez machine-id: " -#: ../gio/gdbusaddress.c:1077 +#: ../gio/gdbusaddress.c:1112 #, c-format msgid "Error spawning command line '%s': " msgstr "Chyba při spouÅ¡tění příkazového řádku „%s“: " -#: ../gio/gdbusaddress.c:1294 +#: ../gio/gdbusaddress.c:1329 #, c-format msgid "(Type any character to close this window)\n" msgstr "(Zmáčknutím libovolného znaku okno zavřete)\n" -#: ../gio/gdbusaddress.c:1425 +#: ../gio/gdbusaddress.c:1481 #, c-format msgid "Session dbus not running, and autolaunch failed" msgstr "Služba dbus sezení neběží a automatické spuÅ¡tění selhalo" -#: ../gio/gdbusaddress.c:1446 +#: ../gio/gdbusaddress.c:1492 #, c-format msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "Nelze určit adresu sběrnice sezení (v tomto OS neimplementováno)" -#: ../gio/gdbusaddress.c:1546 ../gio/gdbusconnection.c:6931 +#: ../gio/gdbusaddress.c:1627 ../gio/gdbusconnection.c:7128 #, c-format msgid "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " @@ -512,7 +517,7 @@ msgstr "" "Nelze určit adresu sběrnice z proměnné prostředí DBUS_STARTER_BUS_TYPE – " "neznámá hodnota „%s“" -#: ../gio/gdbusaddress.c:1555 ../gio/gdbusconnection.c:6940 +#: ../gio/gdbusaddress.c:1636 ../gio/gdbusconnection.c:7137 msgid "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" @@ -520,7 +525,7 @@ msgstr "" "Nelze určit adresu sběrnice, jelikož proměnná prostředí " "DBUS_STARTER_BUS_TYPE není nastavena" -#: ../gio/gdbusaddress.c:1565 +#: ../gio/gdbusaddress.c:1646 #, c-format msgid "Unknown bus type %d" msgstr "Neznámý typ sběrnice %d" @@ -618,21 +623,21 @@ msgstr "Chyba při otevírání klíčenky „%s“ k zápisu: " msgid "(Additionally, releasing the lock for '%s' also failed: %s) " msgstr "(Navíc selhalo také zruÅ¡ení uzamčení „%s“: %s) " -#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2455 +#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2373 msgid "The connection is closed" msgstr "Spojení bylo ukončeno" -#: ../gio/gdbusconnection.c:1942 +#: ../gio/gdbusconnection.c:1877 msgid "Timeout was reached" msgstr "Časový limit vyprÅ¡el" -#: ../gio/gdbusconnection.c:2577 +#: ../gio/gdbusconnection.c:2495 msgid "" "Unsupported flags encountered when constructing a client-side connection" msgstr "" "Nalezeny nepodporované příznaky při vytváření spojení na straně klienta" -#: ../gio/gdbusconnection.c:4157 ../gio/gdbusconnection.c:4504 +#: ../gio/gdbusconnection.c:4105 ../gio/gdbusconnection.c:4452 #, c-format msgid "" "No such interface 'org.freedesktop.DBus.Properties' on object at path %s" @@ -640,67 +645,77 @@ msgstr "" "Žádné prostředí „org.freedesktop.DBus.Properties“ neexistuje na objektu na " "cestě %s" -#: ../gio/gdbusconnection.c:4299 +#: ../gio/gdbusconnection.c:4247 #, c-format msgid "No such property '%s'" msgstr "Žádná vlastnost „%s“ neexistuje" -#: ../gio/gdbusconnection.c:4311 +#: ../gio/gdbusconnection.c:4259 #, c-format msgid "Property '%s' is not readable" msgstr "Vlastnost „%s“ není čitelná" -#: ../gio/gdbusconnection.c:4322 +#: ../gio/gdbusconnection.c:4270 #, c-format msgid "Property '%s' is not writable" msgstr "Vlastnost „%s“ není zapisovatelná" -#: ../gio/gdbusconnection.c:4342 +#: ../gio/gdbusconnection.c:4290 #, c-format msgid "Error setting property '%s': Expected type '%s' but got '%s'" msgstr "" "Chyba při nastavování vlastnosti „%s“: Očekáván typ „%s“, ale obdržen „%s“" -#: ../gio/gdbusconnection.c:4447 ../gio/gdbusconnection.c:6371 +#: ../gio/gdbusconnection.c:4395 ../gio/gdbusconnection.c:6568 #, c-format msgid "No such interface '%s'" msgstr "Žádné rozhraní „%s“ neexistuje" -#: ../gio/gdbusconnection.c:4655 +#: ../gio/gdbusconnection.c:4603 msgid "No such interface" msgstr "Žádné takové rozhraní neexistuje" -#: ../gio/gdbusconnection.c:4873 ../gio/gdbusconnection.c:6880 +#: ../gio/gdbusconnection.c:4821 ../gio/gdbusconnection.c:7077 #, c-format msgid "No such interface '%s' on object at path %s" msgstr "Žádné rozhraní „%s“ neexistuje na objektu na cestě %s" -#: ../gio/gdbusconnection.c:4971 +#: ../gio/gdbusconnection.c:4919 #, c-format msgid "No such method '%s'" msgstr "Žádná taková metoda „%s“ neexistuje" -#: ../gio/gdbusconnection.c:5002 +#: ../gio/gdbusconnection.c:4950 #, c-format msgid "Type of message, '%s', does not match expected type '%s'" msgstr "Typ zprávy, „%s“, se neshoduje s očekávaným typem „%s“" -#: ../gio/gdbusconnection.c:5200 +#: ../gio/gdbusconnection.c:5148 #, c-format msgid "An object is already exported for the interface %s at %s" msgstr "Objekt je již exportován pro prostředí %s na %s" -#: ../gio/gdbusconnection.c:5399 +#: ../gio/gdbusconnection.c:5374 +#, c-format +msgid "Unable to retrieve property %s.%s" +msgstr "Nelze načíst vlastnost %s.%s" + +#: ../gio/gdbusconnection.c:5430 +#, c-format +msgid "Unable to set property %s.%s" +msgstr "Nelze nastavit vlastnost %s.%s" + +#: ../gio/gdbusconnection.c:5606 #, c-format msgid "Method '%s' returned type '%s', but expected '%s'" msgstr "Metoda „%s“ navrátila typ „%s“, ale očekáván byl „%s“" -#: ../gio/gdbusconnection.c:6482 +#: ../gio/gdbusconnection.c:6679 #, c-format msgid "Method '%s' on interface '%s' with signature '%s' does not exist" msgstr "Metoda „%s“ na rozhraní „%s“ s podpisem „%s“ neexistuje" -#: ../gio/gdbusconnection.c:6603 +#: ../gio/gdbusconnection.c:6800 #, c-format msgid "A subtree is already exported for %s" msgstr "Podstrom je již exportován pro %s" @@ -882,35 +897,35 @@ msgstr "Tělo zprávy má podpis typu „%s“, ale podpis v poli se záhlavím msgid "Message body is empty but signature in the header field is '(%s)'" msgstr "Tělo zprávy je prázdné, ale podpis v poli se záhlavím je „(%s)“" -#: ../gio/gdbusmessage.c:3280 +#: ../gio/gdbusmessage.c:3283 #, c-format msgid "Error return with body of type '%s'" msgstr "Navrácena chyba s tělem typu „%s“" -#: ../gio/gdbusmessage.c:3288 +#: ../gio/gdbusmessage.c:3291 msgid "Error return with empty body" msgstr "Navrácena chyba s prázdným tělem" -#: ../gio/gdbusprivate.c:2085 +#: ../gio/gdbusprivate.c:2036 #, c-format msgid "Unable to get Hardware profile: %s" msgstr "Nelze získat profil hardwaru: %s" -#: ../gio/gdbusprivate.c:2130 +#: ../gio/gdbusprivate.c:2081 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: " msgstr "Nelze načíst /var/lib/dbus/machine-id nebo /etc/machine-id: " -#: ../gio/gdbusproxy.c:1630 +#: ../gio/gdbusproxy.c:1610 #, c-format msgid "Error calling StartServiceByName for %s: " msgstr "Chyba při volání StartServiceByName pro %s: " -#: ../gio/gdbusproxy.c:1653 +#: ../gio/gdbusproxy.c:1633 #, c-format msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" msgstr "Neočekávaná odpověď %d od metody StartServiceByName(„%s“)" -#: ../gio/gdbusproxy.c:2754 ../gio/gdbusproxy.c:2891 +#: ../gio/gdbusproxy.c:2709 ../gio/gdbusproxy.c:2843 msgid "" "Cannot invoke method; proxy is for a well-known name without an owner and " "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag" @@ -962,55 +977,60 @@ msgstr "" "\n" "Nápovědu k jednotlivým příkazům získáte použitím „%s PŘÍKAZ --help“.\n" -#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:220 ../gio/gdbus-tool.c:292 -#: ../gio/gdbus-tool.c:316 ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1031 -#: ../gio/gdbus-tool.c:1465 +#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:226 ../gio/gdbus-tool.c:298 +#: ../gio/gdbus-tool.c:322 ../gio/gdbus-tool.c:711 ../gio/gdbus-tool.c:1043 +#: ../gio/gdbus-tool.c:1477 #, c-format msgid "Error: %s\n" msgstr "Chyba: %s\n" -#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:233 ../gio/gdbus-tool.c:1481 +#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493 #, c-format msgid "Error parsing introspection XML: %s\n" msgstr "Chyba při analýze introspection XML: %s\n" -#: ../gio/gdbus-tool.c:350 +#: ../gio/gdbus-tool.c:208 +#, c-format +msgid "Error: %s is not a valid name\n" +msgstr "Chyba: %s není platným názvem\n" + +#: ../gio/gdbus-tool.c:356 msgid "Connect to the system bus" msgstr "Připojit k systémové sběrnici" -#: ../gio/gdbus-tool.c:351 +#: ../gio/gdbus-tool.c:357 msgid "Connect to the session bus" msgstr "Připojit ke sběrnici sezení" -#: ../gio/gdbus-tool.c:352 +#: ../gio/gdbus-tool.c:358 msgid "Connect to given D-Bus address" msgstr "Připojit k dané adrese D-Bus" -#: ../gio/gdbus-tool.c:362 +#: ../gio/gdbus-tool.c:368 msgid "Connection Endpoint Options:" msgstr "Volby koncového bodu spojení:" -#: ../gio/gdbus-tool.c:363 +#: ../gio/gdbus-tool.c:369 msgid "Options specifying the connection endpoint" msgstr "Volby určující koncový bod spojení" -#: ../gio/gdbus-tool.c:385 +#: ../gio/gdbus-tool.c:391 #, c-format msgid "No connection endpoint specified" msgstr "Neurčen žádný koncový bod spojení" -#: ../gio/gdbus-tool.c:395 +#: ../gio/gdbus-tool.c:401 #, c-format msgid "Multiple connection endpoints specified" msgstr "Určeno více koncových bodů spojení" -#: ../gio/gdbus-tool.c:465 +#: ../gio/gdbus-tool.c:471 #, c-format msgid "" "Warning: According to introspection data, interface '%s' does not exist\n" msgstr "Varování: Podle dat introspection rozhraní „%s“ neexistuje\n" -#: ../gio/gdbus-tool.c:474 +#: ../gio/gdbus-tool.c:480 #, c-format msgid "" "Warning: According to introspection data, method '%s' does not exist on " @@ -1018,189 +1038,193 @@ msgid "" msgstr "" "Varování: Podle dat introspection metoda „%s“ neexistuje na rozhraní „%s“\n" -#: ../gio/gdbus-tool.c:536 +#: ../gio/gdbus-tool.c:542 msgid "Optional destination for signal (unique name)" msgstr "Volitelný cíl signálu (jedinečný název)" -#: ../gio/gdbus-tool.c:537 +#: ../gio/gdbus-tool.c:543 msgid "Object path to emit signal on" msgstr "Cesta objektu, na kterou se má vyslat signál" -#: ../gio/gdbus-tool.c:538 +#: ../gio/gdbus-tool.c:544 msgid "Signal and interface name" msgstr "Název signálu a rozhraní" -#: ../gio/gdbus-tool.c:570 +#: ../gio/gdbus-tool.c:576 msgid "Emit a signal." msgstr "Vyslat signál." -#: ../gio/gdbus-tool.c:604 ../gio/gdbus-tool.c:836 ../gio/gdbus-tool.c:1571 -#: ../gio/gdbus-tool.c:1799 +#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583 +#: ../gio/gdbus-tool.c:1818 #, c-format msgid "Error connecting: %s\n" msgstr "Chyba při spojení: %s\n" -#: ../gio/gdbus-tool.c:616 +#: ../gio/gdbus-tool.c:622 #, c-format msgid "Error: object path not specified.\n" msgstr "Chyba: neurčena cesta objektu.\n" -#: ../gio/gdbus-tool.c:621 ../gio/gdbus-tool.c:897 ../gio/gdbus-tool.c:1629 -#: ../gio/gdbus-tool.c:1858 +#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648 +#: ../gio/gdbus-tool.c:1884 #, c-format msgid "Error: %s is not a valid object path\n" msgstr "Chyba: %s není platnou cestou objektu\n" -#: ../gio/gdbus-tool.c:627 +#: ../gio/gdbus-tool.c:633 #, c-format msgid "Error: signal not specified.\n" msgstr "Chyba: neurčen žádný signál.\n" -#: ../gio/gdbus-tool.c:634 +#: ../gio/gdbus-tool.c:640 #, c-format msgid "Error: signal must be the fully-qualified name.\n" msgstr "Chyba: signál musí být úplný název.\n" -#: ../gio/gdbus-tool.c:642 +#: ../gio/gdbus-tool.c:648 #, c-format msgid "Error: %s is not a valid interface name\n" msgstr "Chyba: %s není platným názvem rozhraní\n" -#: ../gio/gdbus-tool.c:648 +#: ../gio/gdbus-tool.c:654 #, c-format msgid "Error: %s is not a valid member name\n" msgstr "Chyba: %s není platným názvem členu\n" -#: ../gio/gdbus-tool.c:654 +#: ../gio/gdbus-tool.c:660 #, c-format msgid "Error: %s is not a valid unique bus name.\n" msgstr "Chyba: %s není platným jedinečným názvem sběrnice.\n" #. Use the original non-"parse-me-harder" error -#: ../gio/gdbus-tool.c:681 ../gio/gdbus-tool.c:999 +#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011 #, c-format msgid "Error parsing parameter %d: %s\n" msgstr "Chyba při analyzování parametru %d: %s\n" -#: ../gio/gdbus-tool.c:712 +#: ../gio/gdbus-tool.c:718 #, c-format msgid "Error flushing connection: %s\n" msgstr "Chyba při vyprazdňování spojení: %s\n" -#: ../gio/gdbus-tool.c:739 +#: ../gio/gdbus-tool.c:745 msgid "Destination name to invoke method on" msgstr "Název cíle, u kterého se má spustit metoda" -#: ../gio/gdbus-tool.c:740 +#: ../gio/gdbus-tool.c:746 msgid "Object path to invoke method on" msgstr "Cesta objektu, u kterého se má spustit metoda" -#: ../gio/gdbus-tool.c:741 +#: ../gio/gdbus-tool.c:747 msgid "Method and interface name" msgstr "Název metody a rozhraní" -#: ../gio/gdbus-tool.c:742 +#: ../gio/gdbus-tool.c:748 msgid "Timeout in seconds" msgstr "Časový limit v sekundách" -#: ../gio/gdbus-tool.c:781 +#: ../gio/gdbus-tool.c:787 msgid "Invoke a method on a remote object." msgstr "Spustit metodu na vzdáleném objektu." -#: ../gio/gdbus-tool.c:856 ../gio/gdbus-tool.c:1590 ../gio/gdbus-tool.c:1818 +#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837 #, c-format msgid "Error: Destination is not specified\n" msgstr "Chyba: Neurčen žádný cíl\n" -#: ../gio/gdbus-tool.c:877 ../gio/gdbus-tool.c:1609 +#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849 +#, c-format +msgid "Error: %s is not a valid bus name\n" +msgstr "Chyba: %s není platným názvem sběrnice\n" + +#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628 #, c-format msgid "Error: Object path is not specified\n" msgstr "Chyba: Neurčena žádná cesta objektu\n" -#: ../gio/gdbus-tool.c:912 +#: ../gio/gdbus-tool.c:924 #, c-format msgid "Error: Method name is not specified\n" msgstr "Chyba: Název metody neurčen\n" -#: ../gio/gdbus-tool.c:923 +#: ../gio/gdbus-tool.c:935 #, c-format msgid "Error: Method name '%s' is invalid\n" msgstr "Chyba: Název metody „%s“ je neplatný\n" -#: ../gio/gdbus-tool.c:991 +#: ../gio/gdbus-tool.c:1003 #, c-format msgid "Error parsing parameter %d of type '%s': %s\n" msgstr "Chyba při analyzování parametru %d typu „%s“: %s\n" -#: ../gio/gdbus-tool.c:1428 +#: ../gio/gdbus-tool.c:1440 msgid "Destination name to introspect" msgstr "Název cíle, u kterého provést introspection" -#: ../gio/gdbus-tool.c:1429 +#: ../gio/gdbus-tool.c:1441 msgid "Object path to introspect" msgstr "Cesta objektu, u které provést introspection" -#: ../gio/gdbus-tool.c:1430 +#: ../gio/gdbus-tool.c:1442 msgid "Print XML" msgstr "Vypsat XML" -#: ../gio/gdbus-tool.c:1431 +#: ../gio/gdbus-tool.c:1443 msgid "Introspect children" msgstr "Provést introspection potomka" -#: ../gio/gdbus-tool.c:1432 +#: ../gio/gdbus-tool.c:1444 msgid "Only print properties" msgstr "Vypsat pouze vlastnosti" -#: ../gio/gdbus-tool.c:1523 +#: ../gio/gdbus-tool.c:1535 msgid "Introspect a remote object." msgstr "Provést introspection vzdáleného objektu." -#: ../gio/gdbus-tool.c:1721 +#: ../gio/gdbus-tool.c:1740 msgid "Destination name to monitor" msgstr "Název cíle určený ke sledování" -#: ../gio/gdbus-tool.c:1722 +#: ../gio/gdbus-tool.c:1741 msgid "Object path to monitor" msgstr "Cesta objektu určená ke sledování" -#: ../gio/gdbus-tool.c:1751 +#: ../gio/gdbus-tool.c:1770 msgid "Monitor a remote object." msgstr "Sledovat vzdálený objekt." -#: ../gio/gdesktopappinfo.c:1999 ../gio/gdesktopappinfo.c:4530 -#: ../gio/gwin32appinfo.c:219 +#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4502 msgid "Unnamed" msgstr "Bez názvu" -#: ../gio/gdesktopappinfo.c:2408 +#: ../gio/gdesktopappinfo.c:2402 msgid "Desktop file didn't specify Exec field" msgstr "V souboru desktop nezadáno pole Exec" -#: ../gio/gdesktopappinfo.c:2693 +#: ../gio/gdesktopappinfo.c:2687 msgid "Unable to find terminal required for application" msgstr "Nelze nalézt terminál vyžadovaný pro aplikaci" -#: ../gio/gdesktopappinfo.c:3114 +#: ../gio/gdesktopappinfo.c:3099 #, c-format msgid "Can't create user application configuration folder %s: %s" msgstr "Nelze vytvořit uživatelskou konfigurační složku aplikace %s: %s" -#: ../gio/gdesktopappinfo.c:3118 +#: ../gio/gdesktopappinfo.c:3103 #, c-format msgid "Can't create user MIME configuration folder %s: %s" msgstr "Nelze vytvořit uživatelskou konfigurační složku MIME %s: %s" -#: ../gio/gdesktopappinfo.c:3358 ../gio/gdesktopappinfo.c:3382 +#: ../gio/gdesktopappinfo.c:3343 ../gio/gdesktopappinfo.c:3367 msgid "Application information lacks an identifier" msgstr "Informace o aplikaci postrádá identifikátor" -#: ../gio/gdesktopappinfo.c:3615 +#: ../gio/gdesktopappinfo.c:3600 #, c-format msgid "Can't create user desktop file %s" msgstr "Nelze vytvořit uživatelský soubor desktop %s" -#: ../gio/gdesktopappinfo.c:3749 +#: ../gio/gdesktopappinfo.c:3734 #, c-format msgid "Custom definition for %s" msgstr "Vlastní definice %s" @@ -1228,10 +1252,14 @@ msgstr "mechanika neprovádí spuÅ¡tění" msgid "drive doesn't implement stop" msgstr "mechanika neprovádí zastavení" -#: ../gio/gdummytlsbackend.c:189 ../gio/gdummytlsbackend.c:311 -#: ../gio/gdummytlsbackend.c:401 +#: ../gio/gdummytlsbackend.c:195 ../gio/gdummytlsbackend.c:317 +#: ../gio/gdummytlsbackend.c:509 msgid "TLS support is not available" -msgstr "Podpora TLS je nedostupná" +msgstr "Podpora TLS není dostupná" + +#: ../gio/gdummytlsbackend.c:419 +msgid "DTLS support is not available" +msgstr "Podpora DTLS není dostupná" #: ../gio/gemblem.c:323 #, c-format @@ -1257,14 +1285,14 @@ msgstr "Chybný počet tokenů (%d) v kódování GEmblemedIcon" msgid "Expected a GEmblem for GEmblemedIcon" msgstr "Očekáváno GEmblem u GEmblemedIcon" -#: ../gio/gfile.c:962 ../gio/gfile.c:1200 ../gio/gfile.c:1338 -#: ../gio/gfile.c:1576 ../gio/gfile.c:1631 ../gio/gfile.c:1689 -#: ../gio/gfile.c:1773 ../gio/gfile.c:1830 ../gio/gfile.c:1894 -#: ../gio/gfile.c:1949 ../gio/gfile.c:3597 ../gio/gfile.c:3652 -#: ../gio/gfile.c:3887 ../gio/gfile.c:3929 ../gio/gfile.c:4392 -#: ../gio/gfile.c:4803 ../gio/gfile.c:4888 ../gio/gfile.c:4978 -#: ../gio/gfile.c:5075 ../gio/gfile.c:5162 ../gio/gfile.c:5263 -#: ../gio/gfile.c:7782 ../gio/gfile.c:7872 ../gio/gfile.c:7956 +#: ../gio/gfile.c:969 ../gio/gfile.c:1207 ../gio/gfile.c:1345 +#: ../gio/gfile.c:1583 ../gio/gfile.c:1638 ../gio/gfile.c:1696 +#: ../gio/gfile.c:1780 ../gio/gfile.c:1837 ../gio/gfile.c:1901 +#: ../gio/gfile.c:1956 ../gio/gfile.c:3604 ../gio/gfile.c:3659 +#: ../gio/gfile.c:3894 ../gio/gfile.c:3936 ../gio/gfile.c:4404 +#: ../gio/gfile.c:4815 ../gio/gfile.c:4900 ../gio/gfile.c:4990 +#: ../gio/gfile.c:5087 ../gio/gfile.c:5174 ../gio/gfile.c:5275 +#: ../gio/gfile.c:7796 ../gio/gfile.c:7886 ../gio/gfile.c:7970 #: ../gio/win32/gwinhttpfile.c:437 msgid "Operation not supported" msgstr "Operace není podporována" @@ -1279,71 +1307,71 @@ msgstr "Operace není podporována" #. Translators: This is an error message when trying to find #. * the enclosing (user visible) mount of a file, but none #. * exists. -#: ../gio/gfile.c:1461 ../gio/glocalfile.c:1103 ../gio/glocalfile.c:1114 -#: ../gio/glocalfile.c:1127 +#: ../gio/gfile.c:1468 ../gio/glocalfile.c:1134 ../gio/glocalfile.c:1145 +#: ../gio/glocalfile.c:1158 msgid "Containing mount does not exist" msgstr "Obsahující připojené neexistuje" -#: ../gio/gfile.c:2508 ../gio/glocalfile.c:2337 +#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2376 msgid "Can't copy over directory" msgstr "Nelze kopírovat nad adresář" -#: ../gio/gfile.c:2568 +#: ../gio/gfile.c:2575 msgid "Can't copy directory over directory" msgstr "Nelze kopírovat adresář nad adresář" -#: ../gio/gfile.c:2576 ../gio/glocalfile.c:2346 +#: ../gio/gfile.c:2583 ../gio/glocalfile.c:2385 msgid "Target file exists" msgstr "Cílový soubor existuje" -#: ../gio/gfile.c:2595 +#: ../gio/gfile.c:2602 msgid "Can't recursively copy directory" msgstr "Adresář nelze kopírovat rekurzivně" # For splice(), see http://en.wikipedia.org/w/index.php?title=Splice_(system_call)&oldid=334434835 -#: ../gio/gfile.c:2877 +#: ../gio/gfile.c:2884 msgid "Splice not supported" msgstr "splice() není podporováno" -#: ../gio/gfile.c:2881 +#: ../gio/gfile.c:2888 #, c-format msgid "Error splicing file: %s" msgstr "Chyba při spojování souboru: %s" -#: ../gio/gfile.c:3012 +#: ../gio/gfile.c:3019 msgid "Copy (reflink/clone) between mounts is not supported" msgstr "Kopírování (reflink/clone) mezi připojeními není podporováno" -#: ../gio/gfile.c:3016 +#: ../gio/gfile.c:3023 msgid "Copy (reflink/clone) is not supported or invalid" msgstr "Kopírování (reflink/clone) není podporováno nebo je neplatné" -#: ../gio/gfile.c:3021 +#: ../gio/gfile.c:3028 msgid "Copy (reflink/clone) is not supported or didn't work" msgstr "Kopírování (reflink/clone) není podporováno nebo neproběhlo správně" -#: ../gio/gfile.c:3084 +#: ../gio/gfile.c:3091 msgid "Can't copy special file" msgstr "Nelze kopírovat zvláštní soubor" -#: ../gio/gfile.c:3877 +#: ../gio/gfile.c:3884 msgid "Invalid symlink value given" msgstr "Zadaný symbolický odkaz je neplatný" -#: ../gio/gfile.c:4038 +#: ../gio/gfile.c:4045 msgid "Trash not supported" msgstr "Zahozené není podporováno" -#: ../gio/gfile.c:4150 +#: ../gio/gfile.c:4157 #, c-format msgid "File names cannot contain '%c'" msgstr "Názvy souborů nemohou obsahovat „%c“" -#: ../gio/gfile.c:6574 ../gio/gvolume.c:363 +#: ../gio/gfile.c:6586 ../gio/gvolume.c:363 msgid "volume doesn't implement mount" msgstr "svazek neprovádí připojení" -#: ../gio/gfile.c:6683 +#: ../gio/gfile.c:6695 msgid "No application is registered as handling this file" msgstr "Žádná aplikace není zaregistrována k obsluze tohoto souboru" @@ -1388,6 +1416,31 @@ msgstr "Zkrácení nepodporováno ve vstupním proudu" msgid "Truncate not supported on stream" msgstr "Zkrácení není v proudu podporováno" +#: ../gio/ghttpproxy.c:136 +msgid "Bad HTTP proxy reply" +msgstr "Chybná odpověď HTTP proxy" + +#: ../gio/ghttpproxy.c:152 +msgid "HTTP proxy connection not allowed" +msgstr "Spojení přes HTTP proxy není povoleno" + +#: ../gio/ghttpproxy.c:157 +msgid "HTTP proxy authentication failed" +msgstr "Ověření HTTP proxy selhalo" + +#: ../gio/ghttpproxy.c:160 +msgid "HTTP proxy authentication required" +msgstr "Vyžadováno ověření HTTP proxy" + +#: ../gio/ghttpproxy.c:164 +#, c-format +msgid "HTTP proxy connection failed: %i" +msgstr "Spojení přes HTTP proxy selhalo: %i" + +#: ../gio/ghttpproxy.c:260 +msgid "HTTP proxy server closed connection unexpectedly." +msgstr "Server HTTP proxy neočekávaně ukončil spojení." + #: ../gio/gicon.c:290 #, c-format msgid "Wrong number of tokens (%d)" @@ -1440,16 +1493,16 @@ msgstr "Adresa má nastavené bity za hranicí danou prefixem délky" msgid "Could not parse '%s' as IP address mask" msgstr "Nelze zpracovat „%s“ jak masku adresy IP" -#: ../gio/ginetsocketaddress.c:196 ../gio/ginetsocketaddress.c:213 -#: ../gio/gunixsocketaddress.c:209 +#: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220 +#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:216 msgid "Not enough space for socket address" msgstr "Adresa soketu nemá dostatek místa" -#: ../gio/ginetsocketaddress.c:228 +#: ../gio/ginetsocketaddress.c:235 msgid "Unsupported socket address" msgstr "Nepodporovaná adresa soketu" -#: ../gio/ginputstream.c:185 +#: ../gio/ginputstream.c:188 msgid "Input stream doesn't implement read" msgstr "Vstupní proud neprovádí čtení" @@ -1459,12 +1512,12 @@ msgstr "Vstupní proud neprovádí čtení" #. Translators: This is an error you get if there is #. * already an operation running against this stream when #. * you try to start one -#: ../gio/ginputstream.c:1212 ../gio/giostream.c:288 -#: ../gio/goutputstream.c:1664 +#: ../gio/ginputstream.c:1215 ../gio/giostream.c:310 +#: ../gio/goutputstream.c:1668 msgid "Stream has outstanding operation" msgstr "Proud má otevřenou operaci" -#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1453 +#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1491 #, c-format msgid "Element <%s> not allowed inside <%s>" msgstr "Prvek <%s> není povolen uvnitř <%s>" @@ -1509,7 +1562,7 @@ msgstr "Chyba čtení souboru „%s“: %s" msgid "Error compressing file %s" msgstr "Chyba při komprimaci souboru „%s“" -#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1565 +#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1603 #, c-format msgid "text may not appear inside <%s>" msgstr "text nemůže být umístěn uvnitř <%s>" @@ -1524,8 +1577,8 @@ msgid "" "directory)" msgstr "Složka, ze které mají být čteny soubory (výchozí je aktuální složka)" -#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:1994 -#: ../gio/glib-compile-schemas.c:2023 +#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2036 +#: ../gio/glib-compile-schemas.c:2065 msgid "DIRECTORY" msgstr "SLOŽKA" @@ -1576,16 +1629,16 @@ msgstr "" msgid "You should give exactly one file name\n" msgstr "Měl by být zadán právě jeden název souboru\n" -#: ../gio/glib-compile-schemas.c:772 +#: ../gio/glib-compile-schemas.c:784 msgid "empty names are not permitted" msgstr "prázdné názvy nejsou povoleny" -#: ../gio/glib-compile-schemas.c:782 +#: ../gio/glib-compile-schemas.c:794 #, c-format msgid "invalid name '%s': names must begin with a lowercase letter" msgstr "neplatný název „%s“: názvy musí začínat malým písmenem" -#: ../gio/glib-compile-schemas.c:794 +#: ../gio/glib-compile-schemas.c:806 #, c-format msgid "" "invalid name '%s': invalid character '%c'; only lowercase letters, numbers " @@ -1594,37 +1647,37 @@ msgstr "" "neplatný název „%s“: neplatný znak „%c“; pouze malá písmena, číslice a " "pomlčka („-“) jsou povoleny." -#: ../gio/glib-compile-schemas.c:803 +#: ../gio/glib-compile-schemas.c:815 #, c-format msgid "invalid name '%s': two successive hyphens ('--') are not permitted." msgstr "" "neplatný název „%s“: dvě po sobě následující pomlčky („--“) nejsou povoleny." -#: ../gio/glib-compile-schemas.c:812 +#: ../gio/glib-compile-schemas.c:824 #, c-format msgid "invalid name '%s': the last character may not be a hyphen ('-')." msgstr "neplatný název „%s“: posledním znakem nemůže být pomlčka („-“)." -#: ../gio/glib-compile-schemas.c:820 +#: ../gio/glib-compile-schemas.c:832 #, c-format msgid "invalid name '%s': maximum length is 1024" msgstr "neplatný název „%s“: maximální délka je 1024" -#: ../gio/glib-compile-schemas.c:889 +#: ../gio/glib-compile-schemas.c:901 #, c-format msgid " already specified" msgstr " již bylo určeno" -#: ../gio/glib-compile-schemas.c:915 +#: ../gio/glib-compile-schemas.c:927 msgid "cannot add keys to a 'list-of' schema" msgstr "ke schématu „list-of“ nelze přidat klíče" -#: ../gio/glib-compile-schemas.c:926 +#: ../gio/glib-compile-schemas.c:938 #, c-format msgid " already specified" msgstr " již bylo určeno" -#: ../gio/glib-compile-schemas.c:944 +#: ../gio/glib-compile-schemas.c:956 #, c-format msgid "" " shadows in ; use " @@ -1633,7 +1686,7 @@ msgstr "" " má přednost před v ; " "použijte ke změně hodnoty" -#: ../gio/glib-compile-schemas.c:955 +#: ../gio/glib-compile-schemas.c:967 #, c-format msgid "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " @@ -1642,63 +1695,63 @@ msgstr "" "právě jeden z „type“, „enum“ nebo „flags“ musí být vybrán jako atribut ke " "klíči " -#: ../gio/glib-compile-schemas.c:974 +#: ../gio/glib-compile-schemas.c:986 #, c-format msgid "<%s id='%s'> not (yet) defined." msgstr "<%s id='%s'> (zatím) nebylo určeno." -#: ../gio/glib-compile-schemas.c:989 +#: ../gio/glib-compile-schemas.c:1001 #, c-format msgid "invalid GVariant type string '%s'" msgstr "neplatný řetězec typu GVariant „%s“" -#: ../gio/glib-compile-schemas.c:1019 +#: ../gio/glib-compile-schemas.c:1031 msgid " given but schema isn't extending anything" msgstr " zadáno, ale schéma nic nerozÅ¡iřuje" -#: ../gio/glib-compile-schemas.c:1032 +#: ../gio/glib-compile-schemas.c:1044 #, c-format msgid "no to override" msgstr "neexistuje žádné k přepsání" -#: ../gio/glib-compile-schemas.c:1040 +#: ../gio/glib-compile-schemas.c:1052 #, c-format msgid " already specified" msgstr " již bylo určeno" -#: ../gio/glib-compile-schemas.c:1111 +#: ../gio/glib-compile-schemas.c:1125 #, c-format msgid " already specified" msgstr " již bylo určeno" -#: ../gio/glib-compile-schemas.c:1123 +#: ../gio/glib-compile-schemas.c:1137 #, c-format msgid " extends not yet existing schema '%s'" msgstr " rozÅ¡iřuje zatím neexistující schéma „%s“" -#: ../gio/glib-compile-schemas.c:1139 +#: ../gio/glib-compile-schemas.c:1153 #, c-format msgid " is list of not yet existing schema '%s'" msgstr " je seznamem zatím neexistujícího schématu „%s“" -#: ../gio/glib-compile-schemas.c:1147 +#: ../gio/glib-compile-schemas.c:1161 #, c-format msgid "Can not be a list of a schema with a path" msgstr "Nemůže být seznamem schématu s cestou" -#: ../gio/glib-compile-schemas.c:1157 +#: ../gio/glib-compile-schemas.c:1171 #, c-format msgid "Can not extend a schema with a path" msgstr "Nemůže rozšířit schéma s cestou" -#: ../gio/glib-compile-schemas.c:1167 +#: ../gio/glib-compile-schemas.c:1181 #, c-format msgid "" " is a list, extending which is not a list" msgstr "" " je seznam rozÅ¡iřující , což není seznam" -#: ../gio/glib-compile-schemas.c:1177 +#: ../gio/glib-compile-schemas.c:1191 #, c-format msgid "" " extends but '%s' " @@ -1707,63 +1760,68 @@ msgstr "" " rozÅ¡iřuje , ale " "„%s“ nerozÅ¡iřuje „%s“" -#: ../gio/glib-compile-schemas.c:1194 +#: ../gio/glib-compile-schemas.c:1208 #, c-format msgid "a path, if given, must begin and end with a slash" msgstr "cesta, je-li zadána, musí začínat lomítkem" -#: ../gio/glib-compile-schemas.c:1201 +#: ../gio/glib-compile-schemas.c:1215 #, c-format msgid "the path of a list must end with ':/'" msgstr "cesta seznamu musí končit znakem „:/“" -#: ../gio/glib-compile-schemas.c:1233 +#: ../gio/glib-compile-schemas.c:1247 #, c-format msgid "<%s id='%s'> already specified" msgstr "<%s id='%s'> již bylo určeno" -#: ../gio/glib-compile-schemas.c:1457 +#: ../gio/glib-compile-schemas.c:1397 ../gio/glib-compile-schemas.c:1413 +#, c-format +msgid "Only one <%s> element allowed inside <%s>" +msgstr "Uvnitř <%2$s> je povolen jen jeden prvek <%1$s>" + +#: ../gio/glib-compile-schemas.c:1495 #, c-format msgid "Element <%s> not allowed at the top level" msgstr "Prvek <%s> není povolen na nejvyšší úrovni" #. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1752 ../gio/glib-compile-schemas.c:1823 -#: ../gio/glib-compile-schemas.c:1899 +#: ../gio/glib-compile-schemas.c:1794 ../gio/glib-compile-schemas.c:1865 +#: ../gio/glib-compile-schemas.c:1941 #, c-format msgid "--strict was specified; exiting.\n" msgstr "--strict bylo určeno; ukončuje se.\n" -#: ../gio/glib-compile-schemas.c:1760 +#: ../gio/glib-compile-schemas.c:1802 #, c-format msgid "This entire file has been ignored.\n" msgstr "Celý tento soubor byl ignorován.\n" -#: ../gio/glib-compile-schemas.c:1819 +#: ../gio/glib-compile-schemas.c:1861 #, c-format msgid "Ignoring this file.\n" msgstr "Ignoruje se tento soubor.\n" -#: ../gio/glib-compile-schemas.c:1859 +#: ../gio/glib-compile-schemas.c:1901 #, c-format msgid "No such key '%s' in schema '%s' as specified in override file '%s'" msgstr "" "Klíč „%s“ neexistuje ve schématu „%s“, jak bylo určeno v přepisujícím " "souboru „%s“" -#: ../gio/glib-compile-schemas.c:1865 ../gio/glib-compile-schemas.c:1923 -#: ../gio/glib-compile-schemas.c:1951 +#: ../gio/glib-compile-schemas.c:1907 ../gio/glib-compile-schemas.c:1965 +#: ../gio/glib-compile-schemas.c:1993 #, c-format msgid "; ignoring override for this key.\n" msgstr "; ignoruje se přepsání u tohoto klíče.\n" -#: ../gio/glib-compile-schemas.c:1869 ../gio/glib-compile-schemas.c:1927 -#: ../gio/glib-compile-schemas.c:1955 +#: ../gio/glib-compile-schemas.c:1911 ../gio/glib-compile-schemas.c:1969 +#: ../gio/glib-compile-schemas.c:1997 #, c-format msgid " and --strict was specified; exiting.\n" msgstr " a --strict bylo určeno; ukončuje se.\n" -#: ../gio/glib-compile-schemas.c:1885 +#: ../gio/glib-compile-schemas.c:1927 #, c-format msgid "" "error parsing key '%s' in schema '%s' as specified in override file '%s': %s." @@ -1771,12 +1829,12 @@ msgstr "" "chyba při analýze klíče „%s“ ve schématu „%s“, jak bylo určeno v " "přepisujícím souboru „%s“: %s." -#: ../gio/glib-compile-schemas.c:1895 +#: ../gio/glib-compile-schemas.c:1937 #, c-format msgid "Ignoring override for this key.\n" msgstr "Ignoruje se přepsání u tohoto klíče.\n" -#: ../gio/glib-compile-schemas.c:1913 +#: ../gio/glib-compile-schemas.c:1955 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is outside the " @@ -1785,7 +1843,7 @@ msgstr "" "přepsání u klíče „%s“ ve schématu „%s“ v přepisujícím souboru „%s“ je mimo " "rozsah zadaný ve schématu" -#: ../gio/glib-compile-schemas.c:1941 +#: ../gio/glib-compile-schemas.c:1983 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is not in the " @@ -1794,23 +1852,23 @@ msgstr "" "přepsání u klíče „%s“ ve schématu „%s“ v přepisujícím souboru „%s“ není v " "seznamu platných možností" -#: ../gio/glib-compile-schemas.c:1994 +#: ../gio/glib-compile-schemas.c:2036 msgid "where to store the gschemas.compiled file" msgstr "kde ukládat soubor gschemas.compiled" -#: ../gio/glib-compile-schemas.c:1995 +#: ../gio/glib-compile-schemas.c:2037 msgid "Abort on any errors in schemas" msgstr "PřeruÅ¡it při libovolných chybách ve schématech" -#: ../gio/glib-compile-schemas.c:1996 +#: ../gio/glib-compile-schemas.c:2038 msgid "Do not write the gschema.compiled file" msgstr "Nezapisovat soubor gschema.compiled" -#: ../gio/glib-compile-schemas.c:1997 +#: ../gio/glib-compile-schemas.c:2039 msgid "Do not enforce key name restrictions" msgstr "Nevynucovat omezení názvů klíče" -#: ../gio/glib-compile-schemas.c:2026 +#: ../gio/glib-compile-schemas.c:2068 msgid "" "Compile all GSettings schema files into a schema cache.\n" "Schema files are required to have the extension .gschema.xml,\n" @@ -1820,145 +1878,141 @@ msgstr "" "Soubory schémat musí mít rozšíření .gschema.xml,\n" "a soubor mezipaměti se jmenuje gschemas.compiled." -#: ../gio/glib-compile-schemas.c:2042 +#: ../gio/glib-compile-schemas.c:2084 #, c-format msgid "You should give exactly one directory name\n" msgstr "Měl by být zadán právě jeden název adresáře\n" -#: ../gio/glib-compile-schemas.c:2081 +#: ../gio/glib-compile-schemas.c:2123 #, c-format msgid "No schema files found: " msgstr "Žádné soubory schémat nenalezeny: " -#: ../gio/glib-compile-schemas.c:2084 +#: ../gio/glib-compile-schemas.c:2126 #, c-format msgid "doing nothing.\n" msgstr "nedělá se nic.\n" -#: ../gio/glib-compile-schemas.c:2087 +#: ../gio/glib-compile-schemas.c:2129 #, c-format msgid "removed existing output file.\n" msgstr "odstraněn existující výstupní soubor.\n" -#: ../gio/glocaldirectorymonitor.c:224 -msgid "Unable to find default local directory monitor type" -msgstr "Nelze nalézt výchozí typ sledování místního adresáře" - -#: ../gio/glocalfile.c:604 ../gio/win32/gwinhttpfile.c:420 +#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420 #, c-format msgid "Invalid filename %s" msgstr "Neplatný název souboru %s" -#: ../gio/glocalfile.c:981 +#: ../gio/glocalfile.c:1012 #, c-format msgid "Error getting filesystem info: %s" msgstr "Chyba při získávání informace o systému souborů: %s" -#: ../gio/glocalfile.c:1149 +#: ../gio/glocalfile.c:1180 msgid "Can't rename root directory" msgstr "Nelze přejmenovat kořenový adresář" -#: ../gio/glocalfile.c:1169 ../gio/glocalfile.c:1195 +#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226 #, c-format msgid "Error renaming file: %s" msgstr "Chyba při přejmenovávání souboru: %s" -#: ../gio/glocalfile.c:1178 +#: ../gio/glocalfile.c:1209 msgid "Can't rename file, filename already exists" msgstr "Soubor nelze přejmenovat, název souboru již existuje" -#: ../gio/glocalfile.c:1191 ../gio/glocalfile.c:2210 ../gio/glocalfile.c:2239 -#: ../gio/glocalfile.c:2399 ../gio/glocalfileoutputstream.c:549 +#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2249 ../gio/glocalfile.c:2278 +#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549 msgid "Invalid filename" msgstr "Neplatný název souboru" -#: ../gio/glocalfile.c:1358 ../gio/glocalfile.c:1382 +#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413 msgid "Can't open directory" msgstr "Nelze otevřít adresář" -#: ../gio/glocalfile.c:1366 +#: ../gio/glocalfile.c:1397 #, c-format msgid "Error opening file: %s" msgstr "Chyba při otevírání souboru: %s" -#: ../gio/glocalfile.c:1507 +#: ../gio/glocalfile.c:1538 #, c-format msgid "Error removing file: %s" msgstr "Chyba při odstraňování souboru: %s" -#: ../gio/glocalfile.c:1887 +#: ../gio/glocalfile.c:1922 #, c-format msgid "Error trashing file: %s" msgstr "Chyba při zahazování souboru: %s" -#: ../gio/glocalfile.c:1910 +#: ../gio/glocalfile.c:1945 #, c-format msgid "Unable to create trash dir %s: %s" msgstr "Nelze vytvořit adresář koÅ¡e %s: %s" -#: ../gio/glocalfile.c:1931 +#: ../gio/glocalfile.c:1966 msgid "Unable to find toplevel directory for trash" msgstr "Ke koÅ¡i nelze nalézt adresář nejvyšší úrovně" -#: ../gio/glocalfile.c:2010 ../gio/glocalfile.c:2030 +#: ../gio/glocalfile.c:2045 ../gio/glocalfile.c:2065 msgid "Unable to find or create trash directory" msgstr "Nelze nalézt nebo vytvořit adresář koÅ¡e" -#: ../gio/glocalfile.c:2064 +#: ../gio/glocalfile.c:2099 #, c-format msgid "Unable to create trashing info file: %s" msgstr "Nelze vytvořit informační soubor o zahozeném: %s" -#: ../gio/glocalfile.c:2095 ../gio/glocalfile.c:2100 ../gio/glocalfile.c:2180 -#: ../gio/glocalfile.c:2187 +#: ../gio/glocalfile.c:2157 ../gio/glocalfile.c:2162 ../gio/glocalfile.c:2219 +#: ../gio/glocalfile.c:2226 #, c-format msgid "Unable to trash file: %s" msgstr "Nelze zahodit soubor: %s" -#: ../gio/glocalfile.c:2188 ../glib/gregex.c:281 +#: ../gio/glocalfile.c:2227 ../glib/gregex.c:281 msgid "internal error" msgstr "vnitřní chyba" -#: ../gio/glocalfile.c:2214 +#: ../gio/glocalfile.c:2253 #, c-format msgid "Error creating directory: %s" msgstr "Chyba při vytváření adresáře: %s" -#: ../gio/glocalfile.c:2243 +#: ../gio/glocalfile.c:2282 #, c-format msgid "Filesystem does not support symbolic links" msgstr "Systém souborů nepodporuje symbolické odkazy" -#: ../gio/glocalfile.c:2247 +#: ../gio/glocalfile.c:2286 #, c-format msgid "Error making symbolic link: %s" msgstr "Chyba při vytváření symbolického odkazu: %s" -#: ../gio/glocalfile.c:2309 ../gio/glocalfile.c:2403 +#: ../gio/glocalfile.c:2348 ../gio/glocalfile.c:2442 #, c-format msgid "Error moving file: %s" msgstr "Chyba při přesunování souboru: %s" -#: ../gio/glocalfile.c:2332 +#: ../gio/glocalfile.c:2371 msgid "Can't move directory over directory" msgstr "Adresář nelze přesunout nad adresář" -#: ../gio/glocalfile.c:2359 ../gio/glocalfileoutputstream.c:925 +#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:925 #: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954 #: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984 msgid "Backup file creation failed" msgstr "Vytvoření záložního souboru selhalo" -#: ../gio/glocalfile.c:2378 +#: ../gio/glocalfile.c:2417 #, c-format msgid "Error removing target file: %s" msgstr "Chyba při odstraňování cílového souboru: %s" -#: ../gio/glocalfile.c:2392 +#: ../gio/glocalfile.c:2431 msgid "Move between mounts not supported" msgstr "Přesunování mezi připojeními není podporováno" -#: ../gio/glocalfile.c:2603 +#: ../gio/glocalfile.c:2623 #, c-format msgid "Could not determine the disk usage of %s: %s" msgstr "Nelze zjistit využití disku %s: %s" @@ -1980,80 +2034,80 @@ msgstr "Neplatný název rozšířeného atributu" msgid "Error setting extended attribute '%s': %s" msgstr "Chyba při nastavování rozšířeného atributu „%s“: %s" -#: ../gio/glocalfileinfo.c:1556 +#: ../gio/glocalfileinfo.c:1575 msgid " (invalid encoding)" msgstr " (neplatné kódování)" -#: ../gio/glocalfileinfo.c:1747 ../gio/glocalfileoutputstream.c:803 +#: ../gio/glocalfileinfo.c:1766 ../gio/glocalfileoutputstream.c:803 #, c-format msgid "Error when getting information for file '%s': %s" msgstr "Chyba při získávání informací pro soubor „%s“: %s" -#: ../gio/glocalfileinfo.c:1998 +#: ../gio/glocalfileinfo.c:2017 #, c-format msgid "Error when getting information for file descriptor: %s" msgstr "Chyba při získávání informací pro popisovače souboru: %s" -#: ../gio/glocalfileinfo.c:2043 +#: ../gio/glocalfileinfo.c:2062 msgid "Invalid attribute type (uint32 expected)" msgstr "Neplatný typ atributu (očekáván uint32)" -#: ../gio/glocalfileinfo.c:2061 +#: ../gio/glocalfileinfo.c:2080 msgid "Invalid attribute type (uint64 expected)" msgstr "Neplatný typ atributu (očekáván uint64)" -#: ../gio/glocalfileinfo.c:2080 ../gio/glocalfileinfo.c:2099 +#: ../gio/glocalfileinfo.c:2099 ../gio/glocalfileinfo.c:2118 msgid "Invalid attribute type (byte string expected)" msgstr "Neplatný typ atributu (očekáván bajtový řetězec)" -#: ../gio/glocalfileinfo.c:2134 +#: ../gio/glocalfileinfo.c:2153 msgid "Cannot set permissions on symlinks" msgstr "Nelze nastavit oprávnění na symbolických odkazech" -#: ../gio/glocalfileinfo.c:2150 +#: ../gio/glocalfileinfo.c:2169 #, c-format msgid "Error setting permissions: %s" msgstr "Chyba při nastavování oprávnění: %s" -#: ../gio/glocalfileinfo.c:2201 +#: ../gio/glocalfileinfo.c:2220 #, c-format msgid "Error setting owner: %s" msgstr "Chyba při nastavování vlastníka: %s" -#: ../gio/glocalfileinfo.c:2224 +#: ../gio/glocalfileinfo.c:2243 msgid "symlink must be non-NULL" msgstr "symbolický odkaz nesmí být prázdný" -#: ../gio/glocalfileinfo.c:2234 ../gio/glocalfileinfo.c:2253 -#: ../gio/glocalfileinfo.c:2264 +#: ../gio/glocalfileinfo.c:2253 ../gio/glocalfileinfo.c:2272 +#: ../gio/glocalfileinfo.c:2283 #, c-format msgid "Error setting symlink: %s" msgstr "Chyba při nastavování symbolického odkazu: %s" -#: ../gio/glocalfileinfo.c:2243 +#: ../gio/glocalfileinfo.c:2262 msgid "Error setting symlink: file is not a symlink" msgstr "" "Chyba při nastavování symbolického odkazu: soubor není symbolickým odkazem" -#: ../gio/glocalfileinfo.c:2369 +#: ../gio/glocalfileinfo.c:2388 #, c-format msgid "Error setting modification or access time: %s" msgstr "Chyba při nastavování změny nebo času přístupu: %s" -#: ../gio/glocalfileinfo.c:2392 +#: ../gio/glocalfileinfo.c:2411 msgid "SELinux context must be non-NULL" msgstr "Kontext SELinux nesmí být prázdný" -#: ../gio/glocalfileinfo.c:2407 +#: ../gio/glocalfileinfo.c:2426 #, c-format msgid "Error setting SELinux context: %s" msgstr "Chyba při nastavování kontextu SELinux: %s" -#: ../gio/glocalfileinfo.c:2414 +#: ../gio/glocalfileinfo.c:2433 msgid "SELinux is not enabled on this system" msgstr "V tomto systému není SELinux povolen" -#: ../gio/glocalfileinfo.c:2506 +#: ../gio/glocalfileinfo.c:2525 #, c-format msgid "Setting attribute %s not supported" msgstr "Nastavení atributu %s není podporováno" @@ -2076,7 +2130,7 @@ msgstr "Chyba při hledání v souboru: %s" msgid "Error closing file: %s" msgstr "Chyba při zavírání souboru: %s" -#: ../gio/glocalfilemonitor.c:145 +#: ../gio/glocalfilemonitor.c:840 msgid "Unable to find default local file monitor type" msgstr "Nelze nalézt výchozí typ sledování místního souboru" @@ -2129,7 +2183,7 @@ msgstr "Soubor byl externě pozměněn" msgid "Error removing old file: %s" msgstr "Chyba při odstraňování starého souboru: %s" -#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:769 +#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:771 msgid "Invalid GSeekType supplied" msgstr "Poskytnut neplatný GSeekType" @@ -2141,15 +2195,15 @@ msgstr "Neplatný požadavek na hledání" msgid "Cannot truncate GMemoryInputStream" msgstr "Nelze zkrátit GMemoryInputStream" -#: ../gio/gmemoryoutputstream.c:565 +#: ../gio/gmemoryoutputstream.c:567 msgid "Memory output stream not resizable" msgstr "Nelze měnit velikost výstupního proudu paměti" -#: ../gio/gmemoryoutputstream.c:581 +#: ../gio/gmemoryoutputstream.c:583 msgid "Failed to resize memory output stream" msgstr "Nelze změnit velikost výstupního proudu paměti" -#: ../gio/gmemoryoutputstream.c:671 +#: ../gio/gmemoryoutputstream.c:673 msgid "" "Amount of memory required to process the write is larger than available " "address space" @@ -2157,11 +2211,11 @@ msgstr "" "Velikost paměti potřebná ke zpracování zápisu je větší než dostupný adresní " "prostor" -#: ../gio/gmemoryoutputstream.c:779 +#: ../gio/gmemoryoutputstream.c:781 msgid "Requested seek before the beginning of the stream" msgstr "Požadováno hledání před počátkem proudu" -#: ../gio/gmemoryoutputstream.c:794 +#: ../gio/gmemoryoutputstream.c:796 msgid "Requested seek beyond the end of the stream" msgstr "Požadováno hledání za ukončením proudu" @@ -2214,16 +2268,16 @@ msgstr "připojené neprovádí odhad typu obsahu" msgid "mount doesn't implement synchronous content type guessing" msgstr "připojené neprovádí synchronní odhad typu obsahu" -#: ../gio/gnetworkaddress.c:383 +#: ../gio/gnetworkaddress.c:378 #, c-format msgid "Hostname '%s' contains '[' but not ']'" msgstr "Název počítače „%s“ obsahuje „[“, ale nikoliv „]“" -#: ../gio/gnetworkmonitorbase.c:199 ../gio/gnetworkmonitorbase.c:302 +#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:309 msgid "Network unreachable" msgstr "Síť není dostupná" -#: ../gio/gnetworkmonitorbase.c:237 ../gio/gnetworkmonitorbase.c:267 +#: ../gio/gnetworkmonitorbase.c:244 ../gio/gnetworkmonitorbase.c:274 msgid "Host unreachable" msgstr "Počítač není dostupný" @@ -2241,52 +2295,52 @@ msgstr "Nelze vytvořit sledování sítě: " msgid "Could not get network status: " msgstr "Nelze zjistit stav sítě: " -#: ../gio/gnetworkmonitornm.c:278 +#: ../gio/gnetworkmonitornm.c:326 #, c-format msgid "NetworkManager version too old" msgstr "NetworkManager je v příliÅ¡ staré verzi" -#: ../gio/goutputstream.c:209 ../gio/goutputstream.c:557 +#: ../gio/goutputstream.c:212 ../gio/goutputstream.c:560 msgid "Output stream doesn't implement write" msgstr "Výstupní proud neprovádí zápis" -#: ../gio/goutputstream.c:518 ../gio/goutputstream.c:1218 +#: ../gio/goutputstream.c:521 ../gio/goutputstream.c:1222 msgid "Source stream is already closed" msgstr "Zdrojový proud je již ukončen" -#: ../gio/gresolver.c:320 ../gio/gthreadedresolver.c:116 +#: ../gio/gresolver.c:330 ../gio/gthreadedresolver.c:116 #: ../gio/gthreadedresolver.c:126 #, c-format msgid "Error resolving '%s': %s" msgstr "Chyba při řeÅ¡ení „%s“: %s" -#: ../gio/gresource.c:298 ../gio/gresource.c:546 ../gio/gresource.c:563 -#: ../gio/gresource.c:684 ../gio/gresource.c:753 ../gio/gresource.c:814 -#: ../gio/gresource.c:894 ../gio/gresourcefile.c:452 -#: ../gio/gresourcefile.c:553 ../gio/gresourcefile.c:655 +#: ../gio/gresource.c:304 ../gio/gresource.c:555 ../gio/gresource.c:572 +#: ../gio/gresource.c:693 ../gio/gresource.c:762 ../gio/gresource.c:823 +#: ../gio/gresource.c:903 ../gio/gresourcefile.c:453 ../gio/gresourcefile.c:576 +#: ../gio/gresourcefile.c:713 #, c-format msgid "The resource at '%s' does not exist" msgstr "Prostředek v „%s“ neexistuje" -#: ../gio/gresource.c:463 +#: ../gio/gresource.c:469 #, c-format msgid "The resource at '%s' failed to decompress" msgstr "Prostředek v „%s“ se nezdařilo dekomprimovat" -#: ../gio/gresourcefile.c:651 +#: ../gio/gresourcefile.c:709 #, c-format msgid "The resource at '%s' is not a directory" msgstr "Prostředek v „%s“ není složkou" -#: ../gio/gresourcefile.c:859 +#: ../gio/gresourcefile.c:917 msgid "Input stream doesn't implement seek" msgstr "Vstupní proud neimplementuje posouvání" -#: ../gio/gresource-tool.c:491 +#: ../gio/gresource-tool.c:494 msgid "List sections containing resources in an elf FILE" msgstr "Vypsat oddíly obsahující prostředky v SOUBORU ve formátu elf" -#: ../gio/gresource-tool.c:497 +#: ../gio/gresource-tool.c:500 msgid "" "List resources\n" "If SECTION is given, only list resources in this section\n" @@ -2296,16 +2350,16 @@ msgstr "" "Je-li zadán ODDÍL, jsou vypsány pouze prostředky v tomto oddíle\n" "Je-li zadána CESTA, jsou vypsány jen odpovídající prostředky" -#: ../gio/gresource-tool.c:500 ../gio/gresource-tool.c:510 +#: ../gio/gresource-tool.c:503 ../gio/gresource-tool.c:513 msgid "FILE [PATH]" msgstr "SOUBOR [CESTA]" -#: ../gio/gresource-tool.c:501 ../gio/gresource-tool.c:511 -#: ../gio/gresource-tool.c:518 +#: ../gio/gresource-tool.c:504 ../gio/gresource-tool.c:514 +#: ../gio/gresource-tool.c:521 msgid "SECTION" msgstr "ODDÍL" -#: ../gio/gresource-tool.c:506 +#: ../gio/gresource-tool.c:509 msgid "" "List resources with details\n" "If SECTION is given, only list resources in this section\n" @@ -2317,15 +2371,15 @@ msgstr "" "Je-li zadána CESTA, jsou vypsány jen odpovídající prostředky\n" "Podrobnosti zahrnují oddíl, velikost a komprimaci" -#: ../gio/gresource-tool.c:516 +#: ../gio/gresource-tool.c:519 msgid "Extract a resource file to stdout" msgstr "Vybalit prostředky ze souboru na standardní výstup" -#: ../gio/gresource-tool.c:517 +#: ../gio/gresource-tool.c:520 msgid "FILE PATH" msgstr "SOUBOR CESTA" -#: ../gio/gresource-tool.c:531 +#: ../gio/gresource-tool.c:534 msgid "" "Usage:\n" " gresource [--section SECTION] COMMAND [ARGS...]\n" @@ -2353,7 +2407,7 @@ msgstr "" "Další informace získáte zadáním „gresource help PŘÍKAZ“.\n" "\n" -#: ../gio/gresource-tool.c:545 +#: ../gio/gresource-tool.c:548 #, c-format msgid "" "Usage:\n" @@ -2368,20 +2422,20 @@ msgstr "" "%s\n" "\n" -#: ../gio/gresource-tool.c:552 +#: ../gio/gresource-tool.c:555 msgid " SECTION An (optional) elf section name\n" msgstr " ODDÍL (Volitelný) název oddílu elf\n" -#: ../gio/gresource-tool.c:556 ../gio/gsettings-tool.c:648 +#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:639 msgid " COMMAND The (optional) command to explain\n" msgstr " PŘÍKAZ (Volitelný) příkaz, který má být popsán\n" -#: ../gio/gresource-tool.c:562 +#: ../gio/gresource-tool.c:565 msgid " FILE An elf file (a binary or a shared library)\n" msgstr "" " SOUBOR Soubor ve formátu elf (spustitelný nebo sdílená knihovna)\n" -#: ../gio/gresource-tool.c:565 +#: ../gio/gresource-tool.c:568 msgid "" " FILE An elf file (a binary or a shared library)\n" " or a compiled resource file\n" @@ -2389,23 +2443,24 @@ msgstr "" " SOUBOR Soubor ve formátu elf (spustitelný nebo sdílená knihovna)\n" " nebo přeložený soubor prostředků\n" -#: ../gio/gresource-tool.c:569 +#: ../gio/gresource-tool.c:572 msgid "[PATH]" msgstr "[CESTA]" -#: ../gio/gresource-tool.c:571 +#: ../gio/gresource-tool.c:574 msgid " PATH An (optional) resource path (may be partial)\n" msgstr " CESTA (Volitelná) cesta k prostředku (může být neúplná)\n" -#: ../gio/gresource-tool.c:572 +#: ../gio/gresource-tool.c:575 msgid "PATH" msgstr "CESTA" -#: ../gio/gresource-tool.c:574 +#: ../gio/gresource-tool.c:577 msgid " PATH A resource path\n" msgstr " CESTA Cesta k prostředku\n" #: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72 +#: ../gio/gsettings-tool.c:830 #, c-format msgid "No such schema '%s'\n" msgstr "Schéma „%s“ neexistuje\n" @@ -2440,38 +2495,38 @@ msgstr "Cesta musí končit lomítkem (/)\n" msgid "Path must not contain two adjacent slashes (//)\n" msgstr "Cesta nesmí obsahovat dvě po sobě jdoucí lomítka (//)\n" -#: ../gio/gsettings-tool.c:490 +#: ../gio/gsettings-tool.c:481 #, c-format msgid "The provided value is outside of the valid range\n" msgstr "Poskytnutá hodnota je mimo platný rozsah\n" -#: ../gio/gsettings-tool.c:497 +#: ../gio/gsettings-tool.c:488 #, c-format msgid "The key is not writable\n" msgstr "Klíč není zapisovatelný\n" -#: ../gio/gsettings-tool.c:533 +#: ../gio/gsettings-tool.c:524 msgid "List the installed (non-relocatable) schemas" msgstr "Vypíše nainstalovaná (nepřemístitelná) schémata" -#: ../gio/gsettings-tool.c:539 +#: ../gio/gsettings-tool.c:530 msgid "List the installed relocatable schemas" msgstr "Vypíše nainstalovaná přemístitelná schémata" -#: ../gio/gsettings-tool.c:545 +#: ../gio/gsettings-tool.c:536 msgid "List the keys in SCHEMA" msgstr "Vypíše klíče ve SCHÉMATU" -#: ../gio/gsettings-tool.c:546 ../gio/gsettings-tool.c:552 -#: ../gio/gsettings-tool.c:589 +#: ../gio/gsettings-tool.c:537 ../gio/gsettings-tool.c:543 +#: ../gio/gsettings-tool.c:580 msgid "SCHEMA[:PATH]" msgstr "SCHÉMA[:CESTA]" -#: ../gio/gsettings-tool.c:551 +#: ../gio/gsettings-tool.c:542 msgid "List the children of SCHEMA" msgstr "Vypíše potomky SCHÉMATU" -#: ../gio/gsettings-tool.c:557 +#: ../gio/gsettings-tool.c:548 msgid "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" @@ -2479,44 +2534,44 @@ msgstr "" "Vypíše klíče a hodnoty, rekurzivně\n" "Není-li zadáno SCHÉMA, vypíše vÅ¡echny klíče\n" -#: ../gio/gsettings-tool.c:559 +#: ../gio/gsettings-tool.c:550 msgid "[SCHEMA[:PATH]]" msgstr "[SCHÉMA[:CESTA]]" -#: ../gio/gsettings-tool.c:564 +#: ../gio/gsettings-tool.c:555 msgid "Get the value of KEY" msgstr "Získá hodnotu KLÍČE" -#: ../gio/gsettings-tool.c:565 ../gio/gsettings-tool.c:571 -#: ../gio/gsettings-tool.c:583 ../gio/gsettings-tool.c:595 +#: ../gio/gsettings-tool.c:556 ../gio/gsettings-tool.c:562 +#: ../gio/gsettings-tool.c:574 ../gio/gsettings-tool.c:586 msgid "SCHEMA[:PATH] KEY" msgstr "SCHÉMA[:CESTA] KLÍČ" -#: ../gio/gsettings-tool.c:570 +#: ../gio/gsettings-tool.c:561 msgid "Query the range of valid values for KEY" msgstr "Dotáže se na rozsah platných hodnot KLÍČE" -#: ../gio/gsettings-tool.c:576 +#: ../gio/gsettings-tool.c:567 msgid "Set the value of KEY to VALUE" msgstr "Nastaví hodnotu KLÍČE k HODNOTĚ" -#: ../gio/gsettings-tool.c:577 +#: ../gio/gsettings-tool.c:568 msgid "SCHEMA[:PATH] KEY VALUE" msgstr "SCHÉMA[:CESTA] KLÍČ HODNOTA" -#: ../gio/gsettings-tool.c:582 +#: ../gio/gsettings-tool.c:573 msgid "Reset KEY to its default value" msgstr "Nastaví KLÍČ na výchozí hodnotu" -#: ../gio/gsettings-tool.c:588 +#: ../gio/gsettings-tool.c:579 msgid "Reset all keys in SCHEMA to their defaults" msgstr "Resetovat vÅ¡echny klíče ve SCHÉMATU na výchozí hodnoty" -#: ../gio/gsettings-tool.c:594 +#: ../gio/gsettings-tool.c:585 msgid "Check if KEY is writable" msgstr "Zjistí, zda je KLÍČ zapisovatelný" -#: ../gio/gsettings-tool.c:600 +#: ../gio/gsettings-tool.c:591 msgid "" "Monitor KEY for changes.\n" "If no KEY is specified, monitor all keys in SCHEMA.\n" @@ -2526,11 +2581,11 @@ msgstr "" "Není-li zadán KLÍČ, sleduje vÅ¡echny klíče ve SCHÉMATU.\n" "Sledování zastavíte použitím ^C.\n" -#: ../gio/gsettings-tool.c:603 +#: ../gio/gsettings-tool.c:594 msgid "SCHEMA[:PATH] [KEY]" msgstr "SCHÉMA[:CESTA] [KLÍČ]" -#: ../gio/gsettings-tool.c:615 +#: ../gio/gsettings-tool.c:606 msgid "" "Usage:\n" " gsettings --version\n" @@ -2576,7 +2631,7 @@ msgstr "" "Podrobnou nápovědu získáte použitím „gsettings help PŘÍKAZ“.\n" "\n" -#: ../gio/gsettings-tool.c:638 +#: ../gio/gsettings-tool.c:629 #, c-format msgid "" "Usage:\n" @@ -2591,11 +2646,11 @@ msgstr "" "%s\n" "\n" -#: ../gio/gsettings-tool.c:644 +#: ../gio/gsettings-tool.c:635 msgid " SCHEMADIR A directory to search for additional schemas\n" msgstr " SLOŽKA_SCHÉMAT Složka, ve které se mají hledat dodatečná schémata\n" -#: ../gio/gsettings-tool.c:652 +#: ../gio/gsettings-tool.c:643 msgid "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" @@ -2603,160 +2658,177 @@ msgstr "" " SCHÉMA Název schématu\n" " CESTA Cesta, pro přemístitelná schémata\n" -#: ../gio/gsettings-tool.c:657 +#: ../gio/gsettings-tool.c:648 msgid " KEY The (optional) key within the schema\n" msgstr " KLÍČ (Volitelný) klíč uvnitř schématu\n" -#: ../gio/gsettings-tool.c:661 +#: ../gio/gsettings-tool.c:652 msgid " KEY The key within the schema\n" msgstr " KLÍČ Klíč uvnitř schématu\n" -#: ../gio/gsettings-tool.c:665 +#: ../gio/gsettings-tool.c:656 msgid " VALUE The value to set\n" msgstr " HODNOTA Hodnota, která má být nastavena\n" -#: ../gio/gsettings-tool.c:720 +#: ../gio/gsettings-tool.c:711 #, c-format msgid "Could not load schemas from %s: %s\n" msgstr "Nelze nahrát schémata z %s: %s\n" -#: ../gio/gsettings-tool.c:782 +#: ../gio/gsettings-tool.c:723 +#, c-format +msgid "No schemas installed\n" +msgstr "Nejsou nainstalována žádná schémata\n" + +#: ../gio/gsettings-tool.c:788 #, c-format msgid "Empty schema name given\n" msgstr "Poskytnut prázdný název schématu\n" -#: ../gio/gsettings-tool.c:811 +#: ../gio/gsettings-tool.c:843 #, c-format msgid "No such key '%s'\n" msgstr "Klíč „%s“ neexistuje\n" -#: ../gio/gsocket.c:266 +#: ../gio/gsocket.c:364 msgid "Invalid socket, not initialized" msgstr "Neplatný soket, nebyl spuÅ¡těn" -#: ../gio/gsocket.c:273 +#: ../gio/gsocket.c:371 #, c-format msgid "Invalid socket, initialization failed due to: %s" msgstr "Neplatný soket, spuÅ¡tění selhalo kvůli: %s" -#: ../gio/gsocket.c:281 +#: ../gio/gsocket.c:379 msgid "Socket is already closed" msgstr "Soket je již ukončen" -#: ../gio/gsocket.c:296 ../gio/gsocket.c:3619 ../gio/gsocket.c:3674 +#: ../gio/gsocket.c:394 ../gio/gsocket.c:2751 ../gio/gsocket.c:3896 +#: ../gio/gsocket.c:3951 msgid "Socket I/O timed out" msgstr "Časový limit V/V soketu vyprÅ¡el" -#: ../gio/gsocket.c:443 +#: ../gio/gsocket.c:526 #, c-format msgid "creating GSocket from fd: %s" msgstr "vytváří se GSocket z fd: %s" -#: ../gio/gsocket.c:471 ../gio/gsocket.c:525 ../gio/gsocket.c:532 +#: ../gio/gsocket.c:554 ../gio/gsocket.c:608 ../gio/gsocket.c:615 #, c-format msgid "Unable to create socket: %s" msgstr "Nelze vytvořit soket: %s" -#: ../gio/gsocket.c:525 +#: ../gio/gsocket.c:608 msgid "Unknown family was specified" msgstr "Byla zadána neznámá rodina" -#: ../gio/gsocket.c:532 +#: ../gio/gsocket.c:615 msgid "Unknown protocol was specified" msgstr "Byl zadán neznámý protokol" -#: ../gio/gsocket.c:1722 +#: ../gio/gsocket.c:1104 +#, c-format +msgid "Cannot use datagram operations on a non-datagram socket." +msgstr "Nelze používat datagramové operace na nedatagramovém soketu." + +#: ../gio/gsocket.c:1121 +#, c-format +msgid "Cannot use datagram operations on a socket with a timeout set." +msgstr "" +"Nelze používat datagramové operace na soketu s nastaveným časovým limitem." + +#: ../gio/gsocket.c:1925 #, c-format msgid "could not get local address: %s" msgstr "nezdařilo se získat místní adresu: %s" -#: ../gio/gsocket.c:1765 +#: ../gio/gsocket.c:1968 #, c-format msgid "could not get remote address: %s" msgstr "nezdařilo se získat vzdálenou adresu: %s" -#: ../gio/gsocket.c:1826 +#: ../gio/gsocket.c:2034 #, c-format msgid "could not listen: %s" msgstr "nezdařilo se naslouchání: %s" -#: ../gio/gsocket.c:1925 +#: ../gio/gsocket.c:2133 #, c-format msgid "Error binding to address: %s" msgstr "Chyba při propojení na adresu: %s" -#: ../gio/gsocket.c:2037 ../gio/gsocket.c:2074 +#: ../gio/gsocket.c:2248 ../gio/gsocket.c:2285 #, c-format msgid "Error joining multicast group: %s" msgstr "Chyba připojování ke skupině hromadného vysílání: %s" -#: ../gio/gsocket.c:2038 ../gio/gsocket.c:2075 +#: ../gio/gsocket.c:2249 ../gio/gsocket.c:2286 #, c-format msgid "Error leaving multicast group: %s" msgstr "Chyba při opouÅ¡tění skupiny hromadného vysílání: %s" -#: ../gio/gsocket.c:2039 +#: ../gio/gsocket.c:2250 msgid "No support for source-specific multicast" msgstr "Není podpora pro hromadné vysílání určené zdrojem" -#: ../gio/gsocket.c:2261 +#: ../gio/gsocket.c:2470 #, c-format msgid "Error accepting connection: %s" msgstr "Chyba při přijímání spojení: %s" -#: ../gio/gsocket.c:2384 +#: ../gio/gsocket.c:2593 msgid "Connection in progress" msgstr "Probíhá spojení" -#: ../gio/gsocket.c:2434 +#: ../gio/gsocket.c:2644 msgid "Unable to get pending error: " msgstr "Nelze získat nevyřízenou chybu: " -#: ../gio/gsocket.c:2637 +#: ../gio/gsocket.c:2816 #, c-format msgid "Error receiving data: %s" msgstr "Chyba při získávání dat: %s" -#: ../gio/gsocket.c:2812 +#: ../gio/gsocket.c:3013 #, c-format msgid "Error sending data: %s" msgstr "Chyba při odesílání dat: %s" -#: ../gio/gsocket.c:2926 +#: ../gio/gsocket.c:3200 #, c-format msgid "Unable to shutdown socket: %s" msgstr "Nelze ukončit soket: %s" -#: ../gio/gsocket.c:3005 +#: ../gio/gsocket.c:3281 #, c-format msgid "Error closing socket: %s" msgstr "Chyba při zavírání soketu: %s" -#: ../gio/gsocket.c:3612 +#: ../gio/gsocket.c:3889 #, c-format msgid "Waiting for socket condition: %s" msgstr "Čeká se na stav soketu: %s" -#: ../gio/gsocket.c:3899 ../gio/gsocket.c:3982 ../gio/gsocket.c:4210 +#: ../gio/gsocket.c:4361 ../gio/gsocket.c:4441 ../gio/gsocket.c:4619 #, c-format msgid "Error sending message: %s" msgstr "Chyba při odesílání zprávy: %s" -#: ../gio/gsocket.c:3924 +#: ../gio/gsocket.c:4385 msgid "GSocketControlMessage not supported on Windows" msgstr "GSocketControlMessage nepodporováno na Windows" -#: ../gio/gsocket.c:4538 ../gio/gsocket.c:4676 +#: ../gio/gsocket.c:4840 ../gio/gsocket.c:4913 ../gio/gsocket.c:5140 #, c-format msgid "Error receiving message: %s" msgstr "Chyba při získávání zprávy: %s" -#: ../gio/gsocket.c:4798 +#: ../gio/gsocket.c:5412 #, c-format msgid "Unable to read socket credentials: %s" msgstr "Nelze číst pověření k soketu: %s" -#: ../gio/gsocket.c:4807 +#: ../gio/gsocket.c:5421 msgid "g_socket_get_credentials not implemented for this OS" msgstr "g_socket_get_credentials není u tohoto OS implementováno" @@ -2774,25 +2846,25 @@ msgstr "Nelze se připojit k %s: " msgid "Could not connect: " msgstr "Nelze se připojit: " -#: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1603 +#: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1599 msgid "Unknown error on connect" msgstr "Neznámá chyba při spojení" -#: ../gio/gsocketclient.c:1082 ../gio/gsocketclient.c:1538 +#: ../gio/gsocketclient.c:1081 ../gio/gsocketclient.c:1535 msgid "Proxying over a non-TCP connection is not supported." msgstr "" "Není podporován pokus o proxy přes spojení, které není založeno na TCP." -#: ../gio/gsocketclient.c:1108 ../gio/gsocketclient.c:1559 +#: ../gio/gsocketclient.c:1110 ../gio/gsocketclient.c:1561 #, c-format msgid "Proxy protocol '%s' is not supported." msgstr "Protokol proxy „%s“ není podporován." -#: ../gio/gsocketlistener.c:188 +#: ../gio/gsocketlistener.c:218 msgid "Listener is already closed" msgstr "Naslouchající je již uzavřen" -#: ../gio/gsocketlistener.c:234 +#: ../gio/gsocketlistener.c:264 msgid "Added socket is closed" msgstr "Přidaný soket je uzavřen" @@ -3008,26 +3080,27 @@ msgstr "Ovládací zpráva nebyla očekávána, ale obdrženo %d" msgid "Error while disabling SO_PASSCRED: %s" msgstr "Chyba při zakazování SO_PASSCRED: %s" -#: ../gio/gunixinputstream.c:370 ../gio/gunixinputstream.c:391 +#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390 #, c-format msgid "Error reading from file descriptor: %s" msgstr "Chyba při čtení z popisovače souboru: %s" -#: ../gio/gunixinputstream.c:424 ../gio/gunixoutputstream.c:410 +#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409 +#: ../gio/gwin32inputstream.c:217 ../gio/gwin32outputstream.c:204 #, c-format msgid "Error closing file descriptor: %s" msgstr "Chyba při zavírání popisovače souboru: %s" -#: ../gio/gunixmounts.c:2054 ../gio/gunixmounts.c:2107 +#: ../gio/gunixmounts.c:2099 ../gio/gunixmounts.c:2152 msgid "Filesystem root" msgstr "Kořen systému souborů" -#: ../gio/gunixoutputstream.c:356 ../gio/gunixoutputstream.c:377 +#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376 #, c-format msgid "Error writing to file descriptor: %s" msgstr "Chyba při zápisu do popisovače souboru: %s" -#: ../gio/gunixsocketaddress.c:232 +#: ../gio/gunixsocketaddress.c:239 msgid "Abstract UNIX domain socket addresses not supported on this system" msgstr "V tomto systému nejsou podporovány abstraktní adresy soketů domén UNIX" @@ -3042,34 +3115,17 @@ msgstr "svazek neprovádí vysouvání" msgid "volume doesn't implement eject or eject_with_operation" msgstr "svazek neprovádí eject (vysouvání) nebo eject_with_operation" -#: ../gio/gwin32appinfo.c:274 -msgid "Can't find application" -msgstr "Nelze nalézt aplikaci" - -#: ../gio/gwin32appinfo.c:303 -#, c-format -msgid "Error launching application: %s" -msgstr "Chyba při spouÅ¡tění aplikace: %s" - -#: ../gio/gwin32appinfo.c:378 -msgid "association changes not supported on win32" -msgstr "změny asociací nepodporovány na Win32" - -#: ../gio/gwin32appinfo.c:390 -msgid "Association creation not supported on win32" -msgstr "Vytváření asociací nepodporováno na Win32" - -#: ../gio/gwin32inputstream.c:344 +#: ../gio/gwin32inputstream.c:185 #, c-format msgid "Error reading from handle: %s" msgstr "Chyba při čtení z obsluhy: %s" -#: ../gio/gwin32inputstream.c:388 ../gio/gwin32outputstream.c:375 +#: ../gio/gwin32inputstream.c:232 ../gio/gwin32outputstream.c:219 #, c-format msgid "Error closing handle: %s" msgstr "Chyba při zavírání obsluhy: %s" -#: ../gio/gwin32outputstream.c:331 +#: ../gio/gwin32outputstream.c:172 #, c-format msgid "Error writing to handle: %s" msgstr "Chyba při zápisu do obsluhy: %s" @@ -3186,8 +3242,8 @@ msgstr "Žádná aplikace s názvem „%s“ nezaregistrovala záložku „%s“ msgid "Failed to expand exec line '%s' with URI '%s'" msgstr "Nelze rozšířit řádek exec „%s“ pomocí URI „%s“" -#: ../glib/gconvert.c:477 ../glib/gutf8.c:833 ../glib/gutf8.c:1044 -#: ../glib/gutf8.c:1181 ../glib/gutf8.c:1285 +#: ../glib/gconvert.c:477 ../glib/gutf8.c:849 ../glib/gutf8.c:1061 +#: ../glib/gutf8.c:1198 ../glib/gutf8.c:1302 msgid "Partial character sequence at end of input" msgstr "Částečná posloupnost znaků na konci vstupu" @@ -3196,37 +3252,37 @@ msgstr "Částečná posloupnost znaků na konci vstupu" msgid "Cannot convert fallback '%s' to codeset '%s'" msgstr "Nelze převést ukončení „%s“ do znakové sady „%s“" -#: ../glib/gconvert.c:1566 +#: ../glib/gconvert.c:1567 #, c-format msgid "The URI '%s' is not an absolute URI using the \"file\" scheme" msgstr "URI „%s“ není absolutní URI používající schéma „file“" -#: ../glib/gconvert.c:1576 +#: ../glib/gconvert.c:1577 #, c-format msgid "The local file URI '%s' may not include a '#'" msgstr "URI „%s“ místního souboru nesmí obsahovat „#“" -#: ../glib/gconvert.c:1593 +#: ../glib/gconvert.c:1594 #, c-format msgid "The URI '%s' is invalid" msgstr "URI „%s“ je neplatné" -#: ../glib/gconvert.c:1605 +#: ../glib/gconvert.c:1606 #, c-format msgid "The hostname of the URI '%s' is invalid" msgstr "Název počítače v URI „%s“ je neplatný" -#: ../glib/gconvert.c:1621 +#: ../glib/gconvert.c:1622 #, c-format msgid "The URI '%s' contains invalidly escaped characters" msgstr "URI „%s“ obsahuje nesprávně změněné znaky" -#: ../glib/gconvert.c:1716 +#: ../glib/gconvert.c:1717 #, c-format msgid "The pathname '%s' is not an absolute path" msgstr "„%s“ není absolutní cestou" -#: ../glib/gconvert.c:1726 +#: ../glib/gconvert.c:1727 msgid "Invalid hostname" msgstr "Neplatný název počítače" @@ -3547,25 +3603,25 @@ msgstr "Nelze přečíst symbolický odkaz „%s“: %s" msgid "Symbolic links not supported" msgstr "Symbolické odkazy nejsou podporovány" -#: ../glib/giochannel.c:1389 +#: ../glib/giochannel.c:1388 #, c-format msgid "Could not open converter from '%s' to '%s': %s" msgstr "Nelze otevřít převodník z „%s“ do „%s“: %s" -#: ../glib/giochannel.c:1734 +#: ../glib/giochannel.c:1733 msgid "Can't do a raw read in g_io_channel_read_line_string" msgstr "Nelze přímo číst v g_io_channel_read_line_string" -#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039 -#: ../glib/giochannel.c:2126 +#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038 +#: ../glib/giochannel.c:2125 msgid "Leftover unconverted data in read buffer" msgstr "Ve vstupní vyrovnávací paměti zbyla nepřevedená data" -#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939 +#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938 msgid "Channel terminates in a partial character" msgstr "Kanál ukončen částí znaku" -#: ../glib/giochannel.c:1925 +#: ../glib/giochannel.c:1924 msgid "Can't do a raw read in g_io_channel_read_to_end" msgstr "Nelze přímo číst v g_io_channel_read_to_end" @@ -3605,8 +3661,8 @@ msgid "Key file contains unsupported encoding '%s'" msgstr "Soubor klíče obsahuje nepodporované kódování „%s“" #: ../glib/gkeyfile.c:1548 ../glib/gkeyfile.c:1721 ../glib/gkeyfile.c:3099 -#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3288 ../glib/gkeyfile.c:3418 -#: ../glib/gkeyfile.c:3560 ../glib/gkeyfile.c:3789 ../glib/gkeyfile.c:3856 +#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3292 ../glib/gkeyfile.c:3422 +#: ../glib/gkeyfile.c:3566 ../glib/gkeyfile.c:3795 ../glib/gkeyfile.c:3862 #, c-format msgid "Key file does not have group '%s'" msgstr "Soubor klíče nemá skupinu „%s“" @@ -3642,31 +3698,31 @@ msgstr "" msgid "Key '%s' in group '%s' has value '%s' where %s was expected" msgstr "Klíč „%s“ ve skupině „%s“ má hodnotu „%s“, když byla očekávána „%s“" -#: ../glib/gkeyfile.c:4096 +#: ../glib/gkeyfile.c:4102 msgid "Key file contains escape character at end of line" msgstr "Soubor klíče obsahuje na konci řádku znak změny" -#: ../glib/gkeyfile.c:4118 +#: ../glib/gkeyfile.c:4124 #, c-format msgid "Key file contains invalid escape sequence '%s'" msgstr "Soubor klíče obsahuje neplatnou posloupnost pro změnu „%s“" -#: ../glib/gkeyfile.c:4260 +#: ../glib/gkeyfile.c:4266 #, c-format msgid "Value '%s' cannot be interpreted as a number." msgstr "Hodnotu „%s“ nelze interpretovat jako číslo." -#: ../glib/gkeyfile.c:4274 +#: ../glib/gkeyfile.c:4280 #, c-format msgid "Integer value '%s' out of range" msgstr "Celočíselná hodnota „%s“ mimo rozsah" -#: ../glib/gkeyfile.c:4307 +#: ../glib/gkeyfile.c:4313 #, c-format msgid "Value '%s' cannot be interpreted as a float number." msgstr "Hodnotu „%s“ nelze interpretovat jako reálné (float) číslo." -#: ../glib/gkeyfile.c:4331 +#: ../glib/gkeyfile.c:4350 #, c-format msgid "Value '%s' cannot be interpreted as a boolean." msgstr "Hodnotu „%s“ nelze interpretovat jako pravdivostní hodnotu." @@ -3711,7 +3767,7 @@ msgstr "„%s“ není platným názvem: „%c“" msgid "Error on line %d: %s" msgstr "Chyba na řádku %d: %s" -#: ../glib/gmarkup.c:683 +#: ../glib/gmarkup.c:676 #, c-format msgid "" "Failed to parse '%-.*s', which should have been a digit inside a character " @@ -3720,7 +3776,7 @@ msgstr "" "Nelze zpracovat „%-.*s“, což by mělo být číslo v odkazu na znak (například " "ê) – číslo je možná příliÅ¡ velké" -#: ../glib/gmarkup.c:695 +#: ../glib/gmarkup.c:688 msgid "" "Character reference did not end with a semicolon; most likely you used an " "ampersand character without intending to start an entity - escape ampersand " @@ -3729,24 +3785,24 @@ msgstr "" "Odkaz na znak nekončí středníkem; pravděpodobně jste použili znak & bez " "úmyslu začít entitu – zapiÅ¡te prosím ligaturu et jako &" -#: ../glib/gmarkup.c:721 +#: ../glib/gmarkup.c:714 #, c-format msgid "Character reference '%-.*s' does not encode a permitted character" msgstr "Odkaz na znak „%-.*s“ nekóduje povolený znak" -#: ../glib/gmarkup.c:759 +#: ../glib/gmarkup.c:752 msgid "" "Empty entity '&;' seen; valid entities are: & " < > '" msgstr "" "Nalezena prázdná entita „&;“, platnými entitami jsou: & " < > " "'" -#: ../glib/gmarkup.c:767 +#: ../glib/gmarkup.c:760 #, c-format msgid "Entity name '%-.*s' is not known" msgstr "Název entity „%-.*s“ není znám" -#: ../glib/gmarkup.c:772 +#: ../glib/gmarkup.c:765 msgid "" "Entity did not end with a semicolon; most likely you used an ampersand " "character without intending to start an entity - escape ampersand as &" @@ -3754,18 +3810,18 @@ msgstr "" "Entita nekončí středníkem; pravděpodobně jste použili znak & bez úmyslu " "začít entitu – zapiÅ¡te prosím ligaturu et jako &" -#: ../glib/gmarkup.c:1178 +#: ../glib/gmarkup.c:1171 msgid "Document must begin with an element (e.g. )" msgstr "Dokument musí začínat prvkem (například: )" -#: ../glib/gmarkup.c:1218 +#: ../glib/gmarkup.c:1211 #, c-format msgid "" "'%s' is not a valid character following a '<' character; it may not begin an " "element name" msgstr "„%s“ není platný znak po znaku „<“; nesmí s ním začínat název prvku" -#: ../glib/gmarkup.c:1260 +#: ../glib/gmarkup.c:1253 #, c-format msgid "" "Odd character '%s', expected a '>' character to end the empty-element tag " @@ -3774,14 +3830,14 @@ msgstr "" "Zvláštní znak „%s“, byl očekáván znak „>“ k ukončení značky empty-element " "„%s“" -#: ../glib/gmarkup.c:1341 +#: ../glib/gmarkup.c:1334 #, c-format msgid "" "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" msgstr "" "Zvláštní znak „%s“, po názvu atributu „%s“ prvku „%s“ bylo očekáváno „=“" -#: ../glib/gmarkup.c:1382 +#: ../glib/gmarkup.c:1375 #, c-format msgid "" "Odd character '%s', expected a '>' or '/' character to end the start tag of " @@ -3792,7 +3848,7 @@ msgstr "" "prvku „%s“, nebo případně atribut; pravděpodobně jste použili neplatný znak " "v názvu atributu" -#: ../glib/gmarkup.c:1426 +#: ../glib/gmarkup.c:1419 #, c-format msgid "" "Odd character '%s', expected an open quote mark after the equals sign when " @@ -3801,7 +3857,7 @@ msgstr "" "Zvláštní znak „%s“, po znaku rovnítka při udávání hodnoty atributu „%s“ " "prvku „%s“ byly očekávány uvozovky" -#: ../glib/gmarkup.c:1559 +#: ../glib/gmarkup.c:1552 #, c-format msgid "" "'%s' is not a valid character following the characters '“" -#: ../glib/gmarkup.c:1606 +#: ../glib/gmarkup.c:1599 #, c-format msgid "Element '%s' was closed, no element is currently open" msgstr "Prvek „%s“ byl uzavřen, žádný prvek není momentálně otevřen" -#: ../glib/gmarkup.c:1615 +#: ../glib/gmarkup.c:1608 #, c-format msgid "Element '%s' was closed, but the currently open element is '%s'" msgstr "Byl uzavřen prvek „%s“, ale aktuálně je otevřen prvek „%s“" -#: ../glib/gmarkup.c:1768 +#: ../glib/gmarkup.c:1761 msgid "Document was empty or contained only whitespace" msgstr "Dokument je prázdný nebo obsahuje pouze mezery" -#: ../glib/gmarkup.c:1782 +#: ../glib/gmarkup.c:1775 msgid "Document ended unexpectedly just after an open angle bracket '<'" msgstr "Dokument neočekávaně skončil ihned po otevírací značce „<“" -#: ../glib/gmarkup.c:1790 ../glib/gmarkup.c:1835 +#: ../glib/gmarkup.c:1783 ../glib/gmarkup.c:1828 #, c-format msgid "" "Document ended unexpectedly with elements still open - '%s' was the last " @@ -3845,7 +3901,7 @@ msgstr "" "Dokument neočekávaně skončil, prvky jsou stále otevřeny – poslední otevřený " "prvek byl „%s“" -#: ../glib/gmarkup.c:1798 +#: ../glib/gmarkup.c:1791 #, c-format msgid "" "Document ended unexpectedly, expected to see a close angle bracket ending " @@ -3853,19 +3909,19 @@ msgid "" msgstr "" "Dokument neočekávaně skončil, byla očekávána uzavírací závorka značky <%s/>" -#: ../glib/gmarkup.c:1804 +#: ../glib/gmarkup.c:1797 msgid "Document ended unexpectedly inside an element name" msgstr "Dokument neočekávaně skončil uvnitř názvu prvku" -#: ../glib/gmarkup.c:1810 +#: ../glib/gmarkup.c:1803 msgid "Document ended unexpectedly inside an attribute name" msgstr "Dokument neočekávaně skončil uvnitř názvu atributu" -#: ../glib/gmarkup.c:1815 +#: ../glib/gmarkup.c:1808 msgid "Document ended unexpectedly inside an element-opening tag." msgstr "Dokument neočekávaně skončil ve značce otevírající prvek." -#: ../glib/gmarkup.c:1821 +#: ../glib/gmarkup.c:1814 msgid "" "Document ended unexpectedly after the equals sign following an attribute " "name; no attribute value" @@ -3873,75 +3929,79 @@ msgstr "" "Dokument neočekávaně skončil po znaku přiřazení následujícím za názvem " "atributu; chybí hodnota atributu" -#: ../glib/gmarkup.c:1828 +#: ../glib/gmarkup.c:1821 msgid "Document ended unexpectedly while inside an attribute value" msgstr "Dokument neočekávaně skončil uvnitř hodnoty atributu" -#: ../glib/gmarkup.c:1844 +#: ../glib/gmarkup.c:1837 #, c-format msgid "Document ended unexpectedly inside the close tag for element '%s'" msgstr "Dokument neočekávaně skončil uvnitř uzavírací značky prvku „%s“" -#: ../glib/gmarkup.c:1850 +#: ../glib/gmarkup.c:1843 msgid "Document ended unexpectedly inside a comment or processing instruction" msgstr "" "Dokument neočekávaně skončil uvnitř komentáře nebo instrukce pro zpracování" -#: ../glib/goption.c:858 +#: ../glib/goption.c:857 msgid "Usage:" msgstr "Použití:" -#: ../glib/goption.c:858 +#: ../glib/goption.c:861 msgid "[OPTION...]" msgstr "[PŘEPÍNAČ…]" -#: ../glib/goption.c:974 +#: ../glib/goption.c:977 msgid "Help Options:" msgstr "Přepínače nápovědy:" -#: ../glib/goption.c:975 +#: ../glib/goption.c:978 msgid "Show help options" msgstr "Zobrazit přepínače nápovědy" -#: ../glib/goption.c:981 +#: ../glib/goption.c:984 msgid "Show all help options" msgstr "Zobrazit vÅ¡echny přepínače nápovědy" -#: ../glib/goption.c:1043 +#: ../glib/goption.c:1047 msgid "Application Options:" msgstr "Přepínače aplikace:" -#: ../glib/goption.c:1107 ../glib/goption.c:1177 +#: ../glib/goption.c:1049 +msgid "Options:" +msgstr "Přepínače:" + +#: ../glib/goption.c:1113 ../glib/goption.c:1183 #, c-format msgid "Cannot parse integer value '%s' for %s" msgstr "Nelze zpracovat celočíselnou hodnotu „%s“ u %s" -#: ../glib/goption.c:1117 ../glib/goption.c:1185 +#: ../glib/goption.c:1123 ../glib/goption.c:1191 #, c-format msgid "Integer value '%s' for %s out of range" msgstr "Celočíselná hodnota „%s“ u %s mimo rozsah" -#: ../glib/goption.c:1142 +#: ../glib/goption.c:1148 #, c-format msgid "Cannot parse double value '%s' for %s" msgstr "Nelze zpracovat celočíselnou (double) hodnotu „%s“ u %s" -#: ../glib/goption.c:1150 +#: ../glib/goption.c:1156 #, c-format msgid "Double value '%s' for %s out of range" msgstr "Celočíselná (double) hodnota „%s“ u %s mimo rozsah" -#: ../glib/goption.c:1436 ../glib/goption.c:1515 +#: ../glib/goption.c:1442 ../glib/goption.c:1521 #, c-format msgid "Error parsing option %s" msgstr "Chyba volby %s při syntaktické analýze" -#: ../glib/goption.c:1546 ../glib/goption.c:1659 +#: ../glib/goption.c:1552 ../glib/goption.c:1665 #, c-format msgid "Missing argument for %s" msgstr "Chybí parametr %s" -#: ../glib/goption.c:2120 +#: ../glib/goption.c:2126 #, c-format msgid "Unknown option %s" msgstr "Neznámý přepínač %s" @@ -4243,70 +4303,70 @@ msgstr "název je příliÅ¡ dlouhý v (*MARK), (*PRUNE), (*SKIP) nebo (*THEN)" msgid "character value in \\u.... sequence is too large" msgstr "znaková hodnota v posloupnosti \\u.... je příliÅ¡ vysoká" -#: ../glib/gregex.c:746 ../glib/gregex.c:1915 +#: ../glib/gregex.c:746 ../glib/gregex.c:1973 #, c-format msgid "Error while matching regular expression %s: %s" msgstr "Chyba při porovnávání regulárního výrazu %s: %s" -#: ../glib/gregex.c:1312 +#: ../glib/gregex.c:1317 msgid "PCRE library is compiled without UTF8 support" msgstr "Knihovna PCRE byla přeložena bez podpory UTF-8" -#: ../glib/gregex.c:1316 +#: ../glib/gregex.c:1321 msgid "PCRE library is compiled without UTF8 properties support" msgstr "Knihovna PCRE byla přeložena bez podpory vlastností UTF-8" -#: ../glib/gregex.c:1324 +#: ../glib/gregex.c:1329 msgid "PCRE library is compiled with incompatible options" msgstr "Knihovna PCRE je přeložena s nekompatibilními volbami" -#: ../glib/gregex.c:1383 -#, c-format -msgid "Error while compiling regular expression %s at char %d: %s" -msgstr "Chyba při kompilaci regulárního výrazu %s na znaku %d: %s" - -#: ../glib/gregex.c:1425 +#: ../glib/gregex.c:1358 #, c-format msgid "Error while optimizing regular expression %s: %s" msgstr "Chyba při optimalizaci regulárního výrazu %s: %s" -#: ../glib/gregex.c:2347 +#: ../glib/gregex.c:1438 +#, c-format +msgid "Error while compiling regular expression %s at char %d: %s" +msgstr "Chyba při kompilaci regulárního výrazu %s na znaku %d: %s" + +#: ../glib/gregex.c:2409 msgid "hexadecimal digit or '}' expected" msgstr "očekáváno číslo nebo „}“" -#: ../glib/gregex.c:2363 +#: ../glib/gregex.c:2425 msgid "hexadecimal digit expected" msgstr "očekáváno Å¡estnáctkové číslo" -#: ../glib/gregex.c:2403 +#: ../glib/gregex.c:2465 msgid "missing '<' in symbolic reference" msgstr "v symbolickém odkazu chybí „<“" -#: ../glib/gregex.c:2412 +#: ../glib/gregex.c:2474 msgid "unfinished symbolic reference" msgstr "neukončený symbolický odkaz" -#: ../glib/gregex.c:2419 +#: ../glib/gregex.c:2481 msgid "zero-length symbolic reference" msgstr "symbolický odkaz o nulové délce" -#: ../glib/gregex.c:2430 +#: ../glib/gregex.c:2492 msgid "digit expected" msgstr "očekáváno číslo" -#: ../glib/gregex.c:2448 +#: ../glib/gregex.c:2510 msgid "illegal symbolic reference" msgstr "nedovolený symbolický odkaz" -#: ../glib/gregex.c:2510 +#: ../glib/gregex.c:2572 msgid "stray final '\\'" msgstr "osamocené koncové „\\“" -#: ../glib/gregex.c:2514 +#: ../glib/gregex.c:2576 msgid "unknown escape sequence" msgstr "neznámá posloupnost pro změnu" -#: ../glib/gregex.c:2524 +#: ../glib/gregex.c:2586 #, c-format msgid "Error while parsing replacement text \"%s\" at char %lu: %s" msgstr "Chyba při analyzování náhradního textu „%s“ na znaku %lu: %s" @@ -4351,62 +4411,62 @@ msgstr "Neočekávaná chyba v select() při čtení dat z procesu potomka (%s)" msgid "Unexpected error in waitpid() (%s)" msgstr "Neočekávaná chyba v waitpid() (%s)" -#: ../glib/gspawn.c:849 ../glib/gspawn-win32.c:1233 +#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233 #, c-format msgid "Child process exited with code %ld" msgstr "Proces potomka skončil s kódem %ld" -#: ../glib/gspawn.c:857 +#: ../glib/gspawn.c:852 #, c-format msgid "Child process killed by signal %ld" msgstr "Proces potomka byl zabit signálem %ld" -#: ../glib/gspawn.c:864 +#: ../glib/gspawn.c:859 #, c-format msgid "Child process stopped by signal %ld" msgstr "Proces potomka byl zastaven signálem %ld" -#: ../glib/gspawn.c:871 +#: ../glib/gspawn.c:866 #, c-format msgid "Child process exited abnormally" msgstr "Proces potomka neskončil normálně" -#: ../glib/gspawn.c:1276 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 +#: ../glib/gspawn.c:1271 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 #, c-format msgid "Failed to read from child pipe (%s)" msgstr "Nelze číst z roury potomka (%s)" -#: ../glib/gspawn.c:1346 +#: ../glib/gspawn.c:1341 #, c-format msgid "Failed to fork (%s)" msgstr "Nelze rozvětvit (%s)" -#: ../glib/gspawn.c:1495 ../glib/gspawn-win32.c:370 +#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370 #, c-format msgid "Failed to change to directory '%s' (%s)" msgstr "Nelze přejít do adresáře „%s“ (%s)" -#: ../glib/gspawn.c:1505 +#: ../glib/gspawn.c:1500 #, c-format msgid "Failed to execute child process \"%s\" (%s)" msgstr "Nelze spustit proces potomka „%s“ (%s)" -#: ../glib/gspawn.c:1515 +#: ../glib/gspawn.c:1510 #, c-format msgid "Failed to redirect output or input of child process (%s)" msgstr "Nelze přesměrovat vstup nebo výstup procesu potomka (%s)" -#: ../glib/gspawn.c:1524 +#: ../glib/gspawn.c:1519 #, c-format msgid "Failed to fork child process (%s)" msgstr "Nelze rozvětvit proces potomka (%s)" -#: ../glib/gspawn.c:1532 +#: ../glib/gspawn.c:1527 #, c-format msgid "Unknown error executing child process \"%s\"" msgstr "Neznámá chyba při běhu procesu potomka „%s“" -#: ../glib/gspawn.c:1556 +#: ../glib/gspawn.c:1551 #, c-format msgid "Failed to read enough data from child pid pipe (%s)" msgstr "Nelze přečíst dostatek dat z roury pid potomka (%s)" @@ -4459,24 +4519,24 @@ msgid "" msgstr "" "Neočekávaná chyba v g_io_channel_win32_poll() při čtení dat z procesu potomka" -#: ../glib/gutf8.c:780 +#: ../glib/gutf8.c:795 msgid "Failed to allocate memory" msgstr "Nelze alokovat paměť" -#: ../glib/gutf8.c:912 +#: ../glib/gutf8.c:928 msgid "Character out of range for UTF-8" msgstr "Znak je mimo rozsah UTF-8" -#: ../glib/gutf8.c:1012 ../glib/gutf8.c:1021 ../glib/gutf8.c:1151 -#: ../glib/gutf8.c:1160 ../glib/gutf8.c:1299 ../glib/gutf8.c:1396 +#: ../glib/gutf8.c:1029 ../glib/gutf8.c:1038 ../glib/gutf8.c:1168 +#: ../glib/gutf8.c:1177 ../glib/gutf8.c:1316 ../glib/gutf8.c:1413 msgid "Invalid sequence in conversion input" msgstr "Neplatná posloupnost na vstupu převodu" -#: ../glib/gutf8.c:1310 ../glib/gutf8.c:1407 +#: ../glib/gutf8.c:1327 ../glib/gutf8.c:1424 msgid "Character out of range for UTF-16" msgstr "Znak je mimo rozsah UTF-16" -#: ../glib/gutils.c:2116 ../glib/gutils.c:2143 ../glib/gutils.c:2249 +#: ../glib/gutils.c:2117 ../glib/gutils.c:2144 ../glib/gutils.c:2250 #, c-format msgid "%u byte" msgid_plural "%u bytes" @@ -4484,68 +4544,68 @@ msgstr[0] "%u bajt" msgstr[1] "%u bajty" msgstr[2] "%u bajtů" -#: ../glib/gutils.c:2122 +#: ../glib/gutils.c:2123 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" -#: ../glib/gutils.c:2124 +#: ../glib/gutils.c:2125 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" -#: ../glib/gutils.c:2127 +#: ../glib/gutils.c:2128 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" -#: ../glib/gutils.c:2130 +#: ../glib/gutils.c:2131 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" -#: ../glib/gutils.c:2133 +#: ../glib/gutils.c:2134 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" -#: ../glib/gutils.c:2136 +#: ../glib/gutils.c:2137 #, c-format msgid "%.1f EiB" msgstr "%.1f EiB" -#: ../glib/gutils.c:2149 +#: ../glib/gutils.c:2150 #, c-format msgid "%.1f kB" msgstr "%.1f kB" -#: ../glib/gutils.c:2152 ../glib/gutils.c:2267 +#: ../glib/gutils.c:2153 ../glib/gutils.c:2268 #, c-format msgid "%.1f MB" msgstr "%.1f MB" -#: ../glib/gutils.c:2155 ../glib/gutils.c:2272 +#: ../glib/gutils.c:2156 ../glib/gutils.c:2273 #, c-format msgid "%.1f GB" msgstr "%.1f GB" -#: ../glib/gutils.c:2157 ../glib/gutils.c:2277 +#: ../glib/gutils.c:2158 ../glib/gutils.c:2278 #, c-format msgid "%.1f TB" msgstr "%.1f TB" -#: ../glib/gutils.c:2160 ../glib/gutils.c:2282 +#: ../glib/gutils.c:2161 ../glib/gutils.c:2283 #, c-format msgid "%.1f PB" msgstr "%.1f PB" -#: ../glib/gutils.c:2163 ../glib/gutils.c:2287 +#: ../glib/gutils.c:2164 ../glib/gutils.c:2288 #, c-format msgid "%.1f EB" msgstr "%.1f EB" #. Translators: the %s in "%s bytes" will always be replaced by a number. -#: ../glib/gutils.c:2200 +#: ../glib/gutils.c:2201 #, c-format msgid "%s byte" msgid_plural "%s bytes" @@ -4558,7 +4618,7 @@ msgstr[2] "%s bajtů" #. * compatibility. Users will not see this string unless a program is using this deprecated function. #. * Please translate as literally as possible. #. -#: ../glib/gutils.c:2262 +#: ../glib/gutils.c:2263 #, c-format msgid "%.1f KB" msgstr "%.1f KB" diff --git a/po/cy.gmo b/po/cy.gmo new file mode 100644 index 0000000000000000000000000000000000000000..c3492bb30c92985fa0e142005b9c715358c7d552 GIT binary patch literal 27429 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 LLXZQgIBWhNQT$+Z literal 0 HcmV?d00001 diff --git a/po/da.po b/po/da.po index 6da2b61..2374337 100644 --- a/po/da.po +++ b/po/da.po @@ -1,5 +1,5 @@ # Danish translation of glib. -# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# Copyright (C) 2001-2016 Free Software Foundation, Inc. # This file is distributed under the same license as the glib package. # # Keld Simonsen , 2001. @@ -8,7 +8,7 @@ # Martin Willemoes Hansen , 2004 - 2005 # Kenneth Nielsen , 2011. # Joe Hansen (joedalton2@yahoo.dk), 2013. -# Ask Hjorth Larsen , 2007, 08, 09, 10, 11, 12, 14. +# Ask Hjorth Larsen , 2007, 08, 09, 10, 11, 12, 14, 15, 16. # # Konventioner: # @@ -24,35 +24,39 @@ msgid "" msgstr "" "Project-Id-Version: glib\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-09-20 17:19+0200\n" -"PO-Revision-Date: 2014-09-19 20:54+0200\n" +"POT-Creation-Date: 2016-03-20 23:41+0100\n" +"PO-Revision-Date: 2016-03-20 04:50+0100\n" "Last-Translator: Ask Hjorth Larsen \n" -"Language-Team: Dansk \n" +"Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -#: ../gio/gapplication.c:514 -msgid "Enter GApplication service mode (use from D-Bus service files)" -msgstr "Indtast GApplication-tjenestetilstand (brug fra D-Bus-tjenestefiler)" - -#: ../gio/gapplication.c:519 +#: ../gio/gapplication.c:493 msgid "GApplication options" msgstr "GApplication-indstillinger" -#: ../gio/gapplication.c:519 +#: ../gio/gapplication.c:493 msgid "Show GApplication options" msgstr "Vis GApplication-indstillinger" +#: ../gio/gapplication.c:538 +msgid "Enter GApplication service mode (use from D-Bus service files)" +msgstr "Indtast GApplication-tjenestetilstand (brug fra D-Bus-tjenestefiler)" + +#: ../gio/gapplication.c:550 +msgid "Override the application's ID" +msgstr "Tilsidesæt programmets id" + #: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46 -#: ../gio/gresource-tool.c:485 ../gio/gsettings-tool.c:508 +#: ../gio/gresource-tool.c:488 ../gio/gsettings-tool.c:512 msgid "Print help" msgstr "Udskriv hjælp" -#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:486 -#: ../gio/gresource-tool.c:554 +#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:489 +#: ../gio/gresource-tool.c:557 msgid "[COMMAND]" msgstr "[KOMMANDO]" @@ -60,7 +64,7 @@ msgstr "[KOMMANDO]" msgid "Print version" msgstr "Udskriv version" -#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:514 +#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:518 msgid "Print version information and exit" msgstr "Udskriv versionsoplysninger og afslut" @@ -123,15 +127,14 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)" msgstr "Programidentifikator i D-Bus-format (f.eks. org.eksempel.fremviser)" #: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589 -#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:492 -#: ../gio/gresource-tool.c:558 +#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:495 +#: ../gio/gresource-tool.c:561 msgid "FILE" msgstr "FIL" -# ??? #: ../gio/gapplication-tool.c:72 -msgid "Optional relative or relative filenames, or URIs to open" -msgstr "Valgfrit relative eller relative filnavne, eller URI'er der skal Ã¥bnes" +msgid "Optional relative or absolute filenames, or URIs to open" +msgstr "Valgfri relative eller absolutte filnavne, eller URI'er der skal Ã¥bnes" #: ../gio/gapplication-tool.c:73 msgid "ACTION" @@ -149,8 +152,8 @@ msgstr "PARAMETER" msgid "Optional parameter to the action invocation, in GVariant format" msgstr "Valgfri parameter til handlingen i GVariant-format" -#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:523 -#: ../gio/gsettings-tool.c:594 +#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526 +#: ../gio/gsettings-tool.c:598 #, c-format msgid "" "Unknown command %s\n" @@ -163,8 +166,8 @@ msgstr "" msgid "Usage:\n" msgstr "Brug:\n" -#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:548 -#: ../gio/gsettings-tool.c:628 +#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551 +#: ../gio/gsettings-tool.c:632 msgid "Arguments:\n" msgstr "Argumenter:\n" @@ -265,9 +268,9 @@ msgstr "" "\n" #: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498 -#: ../gio/ginputstream.c:176 ../gio/ginputstream.c:370 -#: ../gio/ginputstream.c:608 ../gio/ginputstream.c:828 -#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:823 +#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379 +#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1016 +#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834 #: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206 #, c-format msgid "Too large count value passed to %s" @@ -282,8 +285,8 @@ msgstr "Søgning understøttes ikke af basisstrømmen" msgid "Cannot truncate GBufferedInputStream" msgstr "Kan ikke beskære GBufferedInputStream" -#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1017 -#: ../gio/giostream.c:277 ../gio/goutputstream.c:1464 +#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1205 +#: ../gio/giostream.c:300 ../gio/goutputstream.c:1658 msgid "Stream is already closed" msgstr "Strømmen er allerede lukket" @@ -291,10 +294,9 @@ msgstr "Strømmen er allerede lukket" msgid "Truncate not supported on base stream" msgstr "Beskæring understøttes ikke af basisstrømmen" -#: ../gio/gcancellable.c:310 ../gio/gdbusconnection.c:1896 -#: ../gio/gdbusconnection.c:1989 ../gio/gdbusprivate.c:1417 -#: ../gio/glocalfile.c:2181 ../gio/gsimpleasyncresult.c:830 -#: ../gio/gsimpleasyncresult.c:856 +#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1847 +#: ../gio/gdbusprivate.c:1375 ../gio/glocalfile.c:2220 +#: ../gio/gsimpleasyncresult.c:870 ../gio/gsimpleasyncresult.c:896 #, c-format msgid "Operation was cancelled" msgstr "Operationen blev afbrudt" @@ -313,23 +315,23 @@ msgstr "Utilstrækkelig plads pÃ¥ destinationen" #: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848 #: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 -#: ../glib/gconvert.c:845 ../glib/giochannel.c:1557 ../glib/giochannel.c:1599 -#: ../glib/giochannel.c:2443 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 +#: ../glib/gconvert.c:845 ../glib/giochannel.c:1556 ../glib/giochannel.c:1598 +#: ../glib/giochannel.c:2442 ../glib/gutf8.c:853 ../glib/gutf8.c:1306 msgid "Invalid byte sequence in conversion input" msgstr "Ugyldig bytesekvens i konverteringsinddata" #: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 -#: ../glib/gconvert.c:770 ../glib/giochannel.c:1564 ../glib/giochannel.c:2455 +#: ../glib/gconvert.c:770 ../glib/giochannel.c:1563 ../glib/giochannel.c:2454 #, c-format msgid "Error during conversion: %s" msgstr "Fejl under konvertering: %s" -#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:985 +#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1078 msgid "Cancellable initialization not supported" msgstr "Initialisering med mulighed for afbrydelse understøttes ikke" #: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321 -#: ../glib/giochannel.c:1385 +#: ../glib/giochannel.c:1384 #, c-format msgid "Conversion from character set '%s' to '%s' is not supported" msgstr "Konvertering fra tegnsæt \"%s\" til \"%s\" er ikke understøttet" @@ -348,7 +350,7 @@ msgstr "%s-type" msgid "Unknown type" msgstr "Ukendt type" -#: ../gio/gcontenttype-win32.c:161 +#: ../gio/gcontenttype-win32.c:162 #, c-format msgid "%s filetype" msgstr "%s-filtype" @@ -373,13 +375,13 @@ msgstr "Falske akkreditiver er ikke mulige pÃ¥ dette operativsystem" msgid "Unexpected early end-of-stream" msgstr "Uventet tidlig strømafslutning" -#: ../gio/gdbusaddress.c:148 ../gio/gdbusaddress.c:236 -#: ../gio/gdbusaddress.c:317 +#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241 +#: ../gio/gdbusaddress.c:322 #, c-format msgid "Unsupported key '%s' in address entry '%s'" msgstr "Ikke-understøttet nøgle \"%s\" i adresseindgang \"%s\"" -#: ../gio/gdbusaddress.c:175 +#: ../gio/gdbusaddress.c:180 #, c-format msgid "" "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" @@ -387,27 +389,27 @@ msgstr "" "Adressen \"%s\" er ugyldig (kræver præcist en af nøglerne path, tmpdir eller " "abstract)" -#: ../gio/gdbusaddress.c:188 +#: ../gio/gdbusaddress.c:193 #, c-format msgid "Meaningless key/value pair combination in address entry '%s'" msgstr "Meningsløst nøgle-/værdikombination i adresseindgang \"%s\"" -#: ../gio/gdbusaddress.c:251 ../gio/gdbusaddress.c:332 +#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 #, c-format msgid "Error in address '%s' - the port attribute is malformed" msgstr "Fejl i adressen \"%s\" - portattributten er fejlformateret" -#: ../gio/gdbusaddress.c:262 ../gio/gdbusaddress.c:343 +#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348 #, c-format msgid "Error in address '%s' - the family attribute is malformed" msgstr "Fejl i adressen \"%s\" - familieattributten er fejlformateret" -#: ../gio/gdbusaddress.c:452 +#: ../gio/gdbusaddress.c:457 #, c-format msgid "Address element '%s' does not contain a colon (:)" msgstr "Adresseelementet \"%s\" indeholder intet kolon (:)" -#: ../gio/gdbusaddress.c:473 +#: ../gio/gdbusaddress.c:478 #, c-format msgid "" "Key/Value pair %d, '%s', in address element '%s' does not contain an equal " @@ -416,7 +418,7 @@ msgstr "" "Nøgle-/værdiparret %d, \"%s\" i adresseelementet \"%s\" indeholder ikke et " "lighedstegn" -#: ../gio/gdbusaddress.c:487 +#: ../gio/gdbusaddress.c:492 #, c-format msgid "" "Error unescaping key or value in Key/Value pair %d, '%s', in address element " @@ -425,7 +427,7 @@ msgstr "" "Fejl ved af-undvigelse af nøgle eller værdi i nøgle-/værdiparret %d, \"%s\" " "i adresseelementet \"%s\"" -#: ../gio/gdbusaddress.c:565 +#: ../gio/gdbusaddress.c:570 #, c-format msgid "" "Error in address '%s' - the unix transport requires exactly one of the keys " @@ -434,93 +436,93 @@ msgstr "" "Fejl i adressen \"%s\" - unix-transporten kræver at præcist en af nøglerne " "\"path\" eller \"abstract\" er givet" -#: ../gio/gdbusaddress.c:601 +#: ../gio/gdbusaddress.c:606 #, c-format msgid "Error in address '%s' - the host attribute is missing or malformed" msgstr "" "Fejl i adressen \"%s\" - værtsattributten mangler eller er fejlformateret" -#: ../gio/gdbusaddress.c:615 +#: ../gio/gdbusaddress.c:620 #, c-format msgid "Error in address '%s' - the port attribute is missing or malformed" msgstr "" "Fejl i adressen \"%s\" - portattributten mangler eller er fejlformateret" -#: ../gio/gdbusaddress.c:629 +#: ../gio/gdbusaddress.c:634 #, c-format msgid "Error in address '%s' - the noncefile attribute is missing or malformed" msgstr "" "Fejl i adressen \"%s\" - noncefile-attributten mangler eller er " "fejlformateret" -#: ../gio/gdbusaddress.c:650 +#: ../gio/gdbusaddress.c:655 msgid "Error auto-launching: " msgstr "Fejl ved automatisk opstart: " -#: ../gio/gdbusaddress.c:658 +#: ../gio/gdbusaddress.c:663 #, c-format msgid "Unknown or unsupported transport '%s' for address '%s'" msgstr "Ukendt eller ikke-understøttet transport \"%s\" for adressen \"%s\"" -#: ../gio/gdbusaddress.c:694 +#: ../gio/gdbusaddress.c:699 #, c-format msgid "Error opening nonce file '%s': %s" msgstr "Fejl ved Ã¥bning af \"nonce\"-filen \"%s\": %s" -#: ../gio/gdbusaddress.c:712 +#: ../gio/gdbusaddress.c:717 #, c-format msgid "Error reading from nonce file '%s': %s" msgstr "Fejl ved læsning af \"nonce\"-filen \"%s\": %s" -#: ../gio/gdbusaddress.c:721 +#: ../gio/gdbusaddress.c:726 #, c-format msgid "Error reading from nonce file '%s', expected 16 bytes, got %d" msgstr "" "Fejl ved læsning af \"nonce\"-filen \"%s\". Forventede 16 byte, fandt %d" -#: ../gio/gdbusaddress.c:739 +#: ../gio/gdbusaddress.c:744 #, c-format msgid "Error writing contents of nonce file '%s' to stream:" msgstr "" "Fejl under skrivning af indhold af \"nonce\"-filen \"%s\" til strømmen:" -#: ../gio/gdbusaddress.c:958 +#: ../gio/gdbusaddress.c:950 msgid "The given address is empty" msgstr "Den givne adresse er tom" # nÃ¥ ja, det er ikke grimmere pÃ¥ dansk end pÃ¥ engelsk -#: ../gio/gdbusaddress.c:1028 +#: ../gio/gdbusaddress.c:1063 #, c-format msgid "Cannot spawn a message bus when setuid" msgstr "Kan ikke starte en meddelelsesbus nÃ¥r setuid" -#: ../gio/gdbusaddress.c:1035 +#: ../gio/gdbusaddress.c:1070 msgid "Cannot spawn a message bus without a machine-id: " msgstr "Kan ikke starte en meddelelsesbus uden maskine-id: " -#: ../gio/gdbusaddress.c:1077 +#: ../gio/gdbusaddress.c:1112 #, c-format msgid "Error spawning command line '%s': " msgstr "Fejl ved kørsel af kommandolinjen \"%s\": " -#: ../gio/gdbusaddress.c:1294 +#: ../gio/gdbusaddress.c:1329 #, c-format msgid "(Type any character to close this window)\n" msgstr "(Skriv et hvilket som helst tegn for at lukke dette vindue)\n" -#: ../gio/gdbusaddress.c:1425 +#: ../gio/gdbusaddress.c:1481 #, c-format msgid "Session dbus not running, and autolaunch failed" msgstr "Sessions-dbus kører ikke, og autostart mislykkedes" -#: ../gio/gdbusaddress.c:1446 +#: ../gio/gdbusaddress.c:1492 #, c-format msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "" "Kan ikke bestemme sessionsbussens adresse (ikke implementeret for dette " "operativsystem)" -#: ../gio/gdbusaddress.c:1546 ../gio/gdbusconnection.c:6931 +#: ../gio/gdbusaddress.c:1627 ../gio/gdbusconnection.c:7128 #, c-format msgid "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " @@ -529,7 +531,7 @@ msgstr "" "Kan ikke bestemme busadressen fra miljøvariablen DBUS_STARTER_BUS_TYPE - " "ukendt værdi \"%s\"" -#: ../gio/gdbusaddress.c:1555 ../gio/gdbusconnection.c:6940 +#: ../gio/gdbusaddress.c:1636 ../gio/gdbusconnection.c:7137 msgid "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" @@ -537,7 +539,7 @@ msgstr "" "Kan ikke bestemme busadressen, da miljøvariablen DBUS_STARTER_BUS_TYPE ikke " "er angivet" -#: ../gio/gdbusaddress.c:1565 +#: ../gio/gdbusaddress.c:1646 #, c-format msgid "Unknown bus type %d" msgstr "Ukendt bustype %d" @@ -642,116 +644,126 @@ msgstr "Fejl ved Ã¥bning af nøgleringen \"%s\" til skrivning: " msgid "(Additionally, releasing the lock for '%s' also failed: %s) " msgstr "(Yderligere kunne lÃ¥sen for \"%s\" ikke opgives: %s) " -#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2455 +#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2373 msgid "The connection is closed" msgstr "Forbindelsen er lukket" -#: ../gio/gdbusconnection.c:1942 +#: ../gio/gdbusconnection.c:1877 msgid "Timeout was reached" msgstr "Tiden løb ud" -#: ../gio/gdbusconnection.c:2577 +#: ../gio/gdbusconnection.c:2495 msgid "" "Unsupported flags encountered when constructing a client-side connection" msgstr "" "Der blev fundet ikke-understøttede flag ved oprettelse af en forbindelse pÃ¥ " "klientsiden" -#: ../gio/gdbusconnection.c:4157 ../gio/gdbusconnection.c:4504 +#: ../gio/gdbusconnection.c:4105 ../gio/gdbusconnection.c:4452 #, c-format msgid "" "No such interface 'org.freedesktop.DBus.Properties' on object at path %s" msgstr "" "Ingen grænseflade \"org.freedesktop.DBus.Properties\" pÃ¥ objekt ved stien %s" -#: ../gio/gdbusconnection.c:4299 +#: ../gio/gdbusconnection.c:4247 #, c-format msgid "No such property '%s'" msgstr "Ingen sÃ¥dan egenskab \"%s\"" -#: ../gio/gdbusconnection.c:4311 +#: ../gio/gdbusconnection.c:4259 #, c-format msgid "Property '%s' is not readable" msgstr "Egenskaben \"%s\" kan ikke læses" -#: ../gio/gdbusconnection.c:4322 +#: ../gio/gdbusconnection.c:4270 #, c-format msgid "Property '%s' is not writable" msgstr "Egenskaben \"%s\" er skrivebeskyttet" -#: ../gio/gdbusconnection.c:4342 +#: ../gio/gdbusconnection.c:4290 #, c-format msgid "Error setting property '%s': Expected type '%s' but got '%s'" msgstr "" "Fejl ved anvendelse af egenskaben \"%s\": Forventede typen \"%s\", men fik " "\"%s\"" -#: ../gio/gdbusconnection.c:4447 ../gio/gdbusconnection.c:6371 +#: ../gio/gdbusconnection.c:4395 ../gio/gdbusconnection.c:6568 #, c-format msgid "No such interface '%s'" msgstr "Ingen sÃ¥dan grænseflade \"%s\"" -#: ../gio/gdbusconnection.c:4655 +#: ../gio/gdbusconnection.c:4603 msgid "No such interface" msgstr "Ingen sÃ¥dan grænseflade" -#: ../gio/gdbusconnection.c:4873 ../gio/gdbusconnection.c:6880 +#: ../gio/gdbusconnection.c:4821 ../gio/gdbusconnection.c:7077 #, c-format msgid "No such interface '%s' on object at path %s" msgstr "Ingen sÃ¥dan grænseflade \"%s\" pÃ¥ objektet ved stien %s" -#: ../gio/gdbusconnection.c:4971 +#: ../gio/gdbusconnection.c:4919 #, c-format msgid "No such method '%s'" msgstr "Ingen sÃ¥dan metode \"%s\"" -#: ../gio/gdbusconnection.c:5002 +#: ../gio/gdbusconnection.c:4950 #, c-format msgid "Type of message, '%s', does not match expected type '%s'" msgstr "Beskedtypen \"%s\" er ikke den forventede type, \"%s\"" -#: ../gio/gdbusconnection.c:5200 +#: ../gio/gdbusconnection.c:5148 #, c-format msgid "An object is already exported for the interface %s at %s" msgstr "Der er allerede eksporteret et objekt for grænsefladen %s pÃ¥ %s" -#: ../gio/gdbusconnection.c:5399 +#: ../gio/gdbusconnection.c:5374 +#, c-format +msgid "Unable to retrieve property %s.%s" +msgstr "Kan ikke hente egenskaben %s.%s" + +#: ../gio/gdbusconnection.c:5430 +#, c-format +msgid "Unable to set property %s.%s" +msgstr "Kan ikke sætte egenskaben %s.%s" + +#: ../gio/gdbusconnection.c:5606 #, c-format msgid "Method '%s' returned type '%s', but expected '%s'" msgstr "Metoden \"%s\" returnerede typen \"%s\", men forventede \"%s\"" -#: ../gio/gdbusconnection.c:6482 +#: ../gio/gdbusconnection.c:6679 #, c-format msgid "Method '%s' on interface '%s' with signature '%s' does not exist" msgstr "Metoden \"%s\" pÃ¥ grænsefladen \"%s\" med signatur \"%s\" findes ikke" -#: ../gio/gdbusconnection.c:6603 +#: ../gio/gdbusconnection.c:6800 #, c-format msgid "A subtree is already exported for %s" msgstr "Der er allerede eksporteret et undertræ for %s" -#: ../gio/gdbusmessage.c:1246 +#: ../gio/gdbusmessage.c:1244 msgid "type is INVALID" msgstr "typen er INVALID" -#: ../gio/gdbusmessage.c:1257 +#: ../gio/gdbusmessage.c:1255 msgid "METHOD_CALL message: PATH or MEMBER header field is missing" msgstr "" "Meddelelse for METHOD_CALL: et af toptekstfelterne PATH eller MEMBER mangler" -#: ../gio/gdbusmessage.c:1268 +#: ../gio/gdbusmessage.c:1266 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing" msgstr "Meddelelse for METHOD_RETURN: Toptekstfeltet REPLY_SERIAL mangler" -#: ../gio/gdbusmessage.c:1280 +#: ../gio/gdbusmessage.c:1278 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing" msgstr "FEJLmeddelelse: Toptekstfeltet REPLY_SERIAL eller ERROR_NAME mangler" -#: ../gio/gdbusmessage.c:1293 +#: ../gio/gdbusmessage.c:1291 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing" msgstr "SIGNALmeddelelse: Toptekstfeltet PATH, INTERFACE eller MEMBER mangler" -#: ../gio/gdbusmessage.c:1301 +#: ../gio/gdbusmessage.c:1299 msgid "" "SIGNAL message: The PATH header field is using the reserved value /org/" "freedesktop/DBus/Local" @@ -759,7 +771,7 @@ msgstr "" "SIGNALmeddelelse: Toptekstfeltet PATH bruger den reserverede værdi /org/" "freedesktop/DBus/Local" -#: ../gio/gdbusmessage.c:1309 +#: ../gio/gdbusmessage.c:1307 msgid "" "SIGNAL message: The INTERFACE header field is using the reserved value org." "freedesktop.DBus.Local" @@ -767,19 +779,19 @@ msgstr "" "SIGNALbesked: Toptekstfeltet INTERFACE bruger den reserverede værdi org." "freedesktop.DBus.Local" -#: ../gio/gdbusmessage.c:1357 ../gio/gdbusmessage.c:1417 +#: ../gio/gdbusmessage.c:1355 ../gio/gdbusmessage.c:1415 #, c-format msgid "Wanted to read %lu byte but only got %lu" msgid_plural "Wanted to read %lu bytes but only got %lu" msgstr[0] "Ville læse %lu byte men fik kun %lu" msgstr[1] "Ville læse %lu byte men fik kun %lu" -#: ../gio/gdbusmessage.c:1371 +#: ../gio/gdbusmessage.c:1369 #, c-format msgid "Expected NUL byte after the string '%s' but found byte %d" msgstr "Forventede NUL-byte efter strengen \"%s\", men fandt byte %d" -#: ../gio/gdbusmessage.c:1390 +#: ../gio/gdbusmessage.c:1388 #, c-format msgid "" "Expected valid UTF-8 string but found invalid bytes at byte offset %d " @@ -789,17 +801,17 @@ msgstr "" "(strengens længde er %d). Den gyldige UTF-8-streng indtil dette punkt var " "\"%s\"" -#: ../gio/gdbusmessage.c:1589 +#: ../gio/gdbusmessage.c:1587 #, c-format msgid "Parsed value '%s' is not a valid D-Bus object path" msgstr "Den fortolkede værdi \"%s\" er ikke en gyldig objektsti til D-Bus" -#: ../gio/gdbusmessage.c:1611 +#: ../gio/gdbusmessage.c:1609 #, c-format msgid "Parsed value '%s' is not a valid D-Bus signature" msgstr "Fortolket værdi \"%s\" er ikke en gyldig D-Bus-signatur" -#: ../gio/gdbusmessage.c:1658 +#: ../gio/gdbusmessage.c:1656 #, c-format msgid "" "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)." @@ -812,7 +824,7 @@ msgstr[1] "" "Stødte pÃ¥ et array med længde %u bytes. Den maksimale længde er 2<<26 byte " "(64 MiB)." -#: ../gio/gdbusmessage.c:1678 +#: ../gio/gdbusmessage.c:1676 #, c-format msgid "" "Encountered array of type 'a%c', expected to have a length a multiple of %u " @@ -821,12 +833,12 @@ msgstr "" "Stødte pÃ¥ et array af typen \"a%c\", som ventes at have en længde som er et " "multiplum af %u byte, men som havde længde %u byte" -#: ../gio/gdbusmessage.c:1845 +#: ../gio/gdbusmessage.c:1843 #, c-format msgid "Parsed value '%s' for variant is not a valid D-Bus signature" msgstr "Fortolket værdi \"%s\" for variant er ikke en gyldig D-Bus-signatur" -#: ../gio/gdbusmessage.c:1869 +#: ../gio/gdbusmessage.c:1867 #, c-format msgid "" "Error deserializing GVariant with type string '%s' from the D-Bus wire format" @@ -834,7 +846,7 @@ msgstr "" "Fejl ved deserialisering af GVariant med type-streng \"%s\" fra D-Bus-wire-" "formatet" -#: ../gio/gdbusmessage.c:2053 +#: ../gio/gdbusmessage.c:2051 #, c-format msgid "" "Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found value " @@ -843,34 +855,34 @@ msgstr "" "Ugyldigt værdi for byterækkefølge (endianness). Forventede 0x6c (\"l\") " "eller 0x42 (\"B\"), men fandt værdien 0x%02x" -#: ../gio/gdbusmessage.c:2066 +#: ../gio/gdbusmessage.c:2064 #, c-format msgid "Invalid major protocol version. Expected 1 but found %d" msgstr "Igyldig hovedprotokolversion. Forventede 1 men fandt %d" -#: ../gio/gdbusmessage.c:2122 +#: ../gio/gdbusmessage.c:2120 #, c-format msgid "Signature header with signature '%s' found but message body is empty" msgstr "" "Signaturtoptekst med signaturen \"%s\" fundet, men beskedteksten er tom" -#: ../gio/gdbusmessage.c:2136 +#: ../gio/gdbusmessage.c:2134 #, c-format msgid "Parsed value '%s' is not a valid D-Bus signature (for body)" msgstr "Fortolket værdi \"%s\" er ikke en gyldig D-Bus-signatur (for tekst)" -#: ../gio/gdbusmessage.c:2166 +#: ../gio/gdbusmessage.c:2164 #, c-format msgid "No signature header in message but the message body is %u byte" msgid_plural "No signature header in message but the message body is %u bytes" msgstr[0] "Ingen signaturtoptekst i beskeden, men beskedteksten er %u byte" msgstr[1] "Ingen signaturtoptekst i beskeden, men beskedteksten er %u bytes" -#: ../gio/gdbusmessage.c:2176 +#: ../gio/gdbusmessage.c:2174 msgid "Cannot deserialize message: " msgstr "Kan ikke deserialisere besked: " -#: ../gio/gdbusmessage.c:2517 +#: ../gio/gdbusmessage.c:2515 #, c-format msgid "" "Error serializing GVariant with type string '%s' to the D-Bus wire format" @@ -878,7 +890,7 @@ msgstr "" "Fejl ved serialisering af GVariant med typestreng \"%s\" til D-Bus-wire-" "formatet" -#: ../gio/gdbusmessage.c:2654 +#: ../gio/gdbusmessage.c:2652 #, c-format msgid "" "Message has %d file descriptors but the header field indicates %d file " @@ -887,16 +899,16 @@ msgstr "" "Beskeden har %d fildeskriptorer, men toptekstfeltet angiver %d " "fildeskriptorer" -#: ../gio/gdbusmessage.c:2662 +#: ../gio/gdbusmessage.c:2660 msgid "Cannot serialize message: " msgstr "Kan ikke serialisere besked: " -#: ../gio/gdbusmessage.c:2706 +#: ../gio/gdbusmessage.c:2704 #, c-format msgid "Message body has signature '%s' but there is no signature header" msgstr "Beskedteksten har signatur \"%s\", men der er ingen signaturtoptekst" -#: ../gio/gdbusmessage.c:2716 +#: ../gio/gdbusmessage.c:2714 #, c-format msgid "" "Message body has type signature '%s' but signature in the header field is " @@ -905,41 +917,41 @@ msgstr "" "Beskedteksten har typesignatur \"%s\", men signaturen i toptekstfeltet er " "\"%s\"" -#: ../gio/gdbusmessage.c:2732 +#: ../gio/gdbusmessage.c:2730 #, c-format msgid "Message body is empty but signature in the header field is '(%s)'" msgstr "Beskedteksten er tom, men signaturen i toptekstfeltet er \"(%s)\"" -#: ../gio/gdbusmessage.c:3282 +#: ../gio/gdbusmessage.c:3283 #, c-format msgid "Error return with body of type '%s'" msgstr "Fejlagtig returværdi med beskedtekst af typen \"%s\"" -#: ../gio/gdbusmessage.c:3290 +#: ../gio/gdbusmessage.c:3291 msgid "Error return with empty body" msgstr "Fejlagtig returværdi - tom beskedtekst" -#: ../gio/gdbusprivate.c:2067 +#: ../gio/gdbusprivate.c:2036 #, c-format msgid "Unable to get Hardware profile: %s" msgstr "Kan ikke hente hardwareprofil: %s" -#: ../gio/gdbusprivate.c:2112 +#: ../gio/gdbusprivate.c:2081 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: " msgstr "Kan ikke indlæse /var/lib/dbus/machine-id eller /etc/machine-id: " -#: ../gio/gdbusproxy.c:1630 +#: ../gio/gdbusproxy.c:1610 #, c-format msgid "Error calling StartServiceByName for %s: " msgstr "Fejl ved kald til StartServiceByName for %s: " -#: ../gio/gdbusproxy.c:1653 +#: ../gio/gdbusproxy.c:1633 #, c-format msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" msgstr "Uventet svar %d fra metoden StartServiceByName(\"%s\")" # Ved ikke helt hvad proxy dækker over her -#: ../gio/gdbusproxy.c:2754 ../gio/gdbusproxy.c:2891 +#: ../gio/gdbusproxy.c:2709 ../gio/gdbusproxy.c:2843 msgid "" "Cannot invoke method; proxy is for a well-known name without an owner and " "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag" @@ -991,55 +1003,60 @@ msgstr "" "\n" "Brug \"%s KOMMANDO --help\" for at fÃ¥ hjælp om hver kommando.\n" -#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:220 ../gio/gdbus-tool.c:292 -#: ../gio/gdbus-tool.c:316 ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1031 -#: ../gio/gdbus-tool.c:1465 +#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:226 ../gio/gdbus-tool.c:298 +#: ../gio/gdbus-tool.c:322 ../gio/gdbus-tool.c:711 ../gio/gdbus-tool.c:1043 +#: ../gio/gdbus-tool.c:1477 #, c-format msgid "Error: %s\n" msgstr "Fejl: %s\n" -#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:233 ../gio/gdbus-tool.c:1481 +#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493 #, c-format msgid "Error parsing introspection XML: %s\n" msgstr "Fejl ved fortolkning af XML til introspektion: %s\n" -#: ../gio/gdbus-tool.c:350 +#: ../gio/gdbus-tool.c:208 +#, c-format +msgid "Error: %s is not a valid name\n" +msgstr "Fejl: %s er ikke et gyldigt navn\n" + +#: ../gio/gdbus-tool.c:356 msgid "Connect to the system bus" msgstr "Forbind til systembussen" -#: ../gio/gdbus-tool.c:351 +#: ../gio/gdbus-tool.c:357 msgid "Connect to the session bus" msgstr "Forbind til sessionsbussen" -#: ../gio/gdbus-tool.c:352 +#: ../gio/gdbus-tool.c:358 msgid "Connect to given D-Bus address" msgstr "Forbind til den givne D-Bus-adresse" -#: ../gio/gdbus-tool.c:362 +#: ../gio/gdbus-tool.c:368 msgid "Connection Endpoint Options:" msgstr "Tilvalg for forbindelsesslutpunkt:" -#: ../gio/gdbus-tool.c:363 +#: ../gio/gdbus-tool.c:369 msgid "Options specifying the connection endpoint" msgstr "Tilvalg, der angiver forbindelsens slutpunkt" -#: ../gio/gdbus-tool.c:385 +#: ../gio/gdbus-tool.c:391 #, c-format msgid "No connection endpoint specified" msgstr "Intet slutpunkt for forbindelsen angivet" -#: ../gio/gdbus-tool.c:395 +#: ../gio/gdbus-tool.c:401 #, c-format msgid "Multiple connection endpoints specified" msgstr "Flere slutpunkter for forbindelsen angivet" -#: ../gio/gdbus-tool.c:465 +#: ../gio/gdbus-tool.c:471 #, c-format msgid "" "Warning: According to introspection data, interface '%s' does not exist\n" msgstr "Advarsel: Grænsefladen \"%s\" findes ikke ifølge introspektionsdata\n" -#: ../gio/gdbus-tool.c:474 +#: ../gio/gdbus-tool.c:480 #, c-format msgid "" "Warning: According to introspection data, method '%s' does not exist on " @@ -1048,189 +1065,193 @@ msgstr "" "Advarsel: Metoden \"%s\" findes ikke i grænsefladen \"%s\" ifølge " "introspektionsdata\n" -#: ../gio/gdbus-tool.c:536 +#: ../gio/gdbus-tool.c:542 msgid "Optional destination for signal (unique name)" msgstr "Valgfri destination for signal (unikt navn)" -#: ../gio/gdbus-tool.c:537 +#: ../gio/gdbus-tool.c:543 msgid "Object path to emit signal on" msgstr "Objektsti, der skal udsendes et signal fra" -#: ../gio/gdbus-tool.c:538 +#: ../gio/gdbus-tool.c:544 msgid "Signal and interface name" msgstr "Signal- og grænsefladenavn" -#: ../gio/gdbus-tool.c:570 +#: ../gio/gdbus-tool.c:576 msgid "Emit a signal." msgstr "Udsend et signal." -#: ../gio/gdbus-tool.c:604 ../gio/gdbus-tool.c:836 ../gio/gdbus-tool.c:1571 -#: ../gio/gdbus-tool.c:1799 +#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583 +#: ../gio/gdbus-tool.c:1818 #, c-format msgid "Error connecting: %s\n" msgstr "Fejl ved forbindelse: %s\n" -#: ../gio/gdbus-tool.c:616 +#: ../gio/gdbus-tool.c:622 #, c-format msgid "Error: object path not specified.\n" msgstr "Fejl: Objektstien er ikke angivet.\n" -#: ../gio/gdbus-tool.c:621 ../gio/gdbus-tool.c:897 ../gio/gdbus-tool.c:1629 -#: ../gio/gdbus-tool.c:1858 +#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648 +#: ../gio/gdbus-tool.c:1884 #, c-format msgid "Error: %s is not a valid object path\n" msgstr "Fejl: \"%s\" er ikke en gyldig objektsti\n" -#: ../gio/gdbus-tool.c:627 +#: ../gio/gdbus-tool.c:633 #, c-format msgid "Error: signal not specified.\n" msgstr "Fejl: Signal er ikke angivet.\n" -#: ../gio/gdbus-tool.c:634 +#: ../gio/gdbus-tool.c:640 #, c-format msgid "Error: signal must be the fully-qualified name.\n" msgstr "Fejl: Signal skal være et fuldt kvalificeret navn.\n" -#: ../gio/gdbus-tool.c:642 +#: ../gio/gdbus-tool.c:648 #, c-format msgid "Error: %s is not a valid interface name\n" msgstr "Fejl: \"%s\" er ikke et gyldigt grænsefladenavn\n" -#: ../gio/gdbus-tool.c:648 +#: ../gio/gdbus-tool.c:654 #, c-format msgid "Error: %s is not a valid member name\n" msgstr "Fejl: \"%s\" er ikke et gyldigt medlemsnavn\n" -#: ../gio/gdbus-tool.c:654 +#: ../gio/gdbus-tool.c:660 #, c-format msgid "Error: %s is not a valid unique bus name.\n" msgstr "Fejl: \"%s\" er ikke et gyldigt unikt busnavn.\n" #. Use the original non-"parse-me-harder" error -#: ../gio/gdbus-tool.c:681 ../gio/gdbus-tool.c:999 +#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011 #, c-format msgid "Error parsing parameter %d: %s\n" msgstr "Fejl ved fortolkning af parameter %d: %s\n" -#: ../gio/gdbus-tool.c:712 +#: ../gio/gdbus-tool.c:718 #, c-format msgid "Error flushing connection: %s\n" msgstr "Fejl ved tømning (flush) af forbindelse: %s\n" -#: ../gio/gdbus-tool.c:739 +#: ../gio/gdbus-tool.c:745 msgid "Destination name to invoke method on" msgstr "Destinationsnavnet, som metoden skal kaldes pÃ¥" -#: ../gio/gdbus-tool.c:740 +#: ../gio/gdbus-tool.c:746 msgid "Object path to invoke method on" msgstr "Objektstien, som metoden skal kaldes pÃ¥" -#: ../gio/gdbus-tool.c:741 +#: ../gio/gdbus-tool.c:747 msgid "Method and interface name" msgstr "Metode- og grænsefladenavn" -#: ../gio/gdbus-tool.c:742 +#: ../gio/gdbus-tool.c:748 msgid "Timeout in seconds" msgstr "Tidsudløb i sekunder" -#: ../gio/gdbus-tool.c:781 +#: ../gio/gdbus-tool.c:787 msgid "Invoke a method on a remote object." msgstr "Kald en metode pÃ¥ et fjernobjekt." -#: ../gio/gdbus-tool.c:856 ../gio/gdbus-tool.c:1590 ../gio/gdbus-tool.c:1818 +#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837 #, c-format msgid "Error: Destination is not specified\n" msgstr "Fejl: Destinationen er ikke angivet\n" -#: ../gio/gdbus-tool.c:877 ../gio/gdbus-tool.c:1609 +#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849 +#, c-format +msgid "Error: %s is not a valid bus name\n" +msgstr "Fejl: %s er ikke et gyldigt busnavn\n" + +#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628 #, c-format msgid "Error: Object path is not specified\n" msgstr "Fejl: Objektstien er ikke angivet\n" -#: ../gio/gdbus-tool.c:912 +#: ../gio/gdbus-tool.c:924 #, c-format msgid "Error: Method name is not specified\n" msgstr "Fejl: Metodenavnet er ikke angivet\n" -#: ../gio/gdbus-tool.c:923 +#: ../gio/gdbus-tool.c:935 #, c-format msgid "Error: Method name '%s' is invalid\n" msgstr "Fejl: Metodenavnet \"%s\" er ugyldigt\n" -#: ../gio/gdbus-tool.c:991 +#: ../gio/gdbus-tool.c:1003 #, c-format msgid "Error parsing parameter %d of type '%s': %s\n" msgstr "Fejl ved fortolkning af parameter %d af typen \"%s\": %s\n" -#: ../gio/gdbus-tool.c:1428 +#: ../gio/gdbus-tool.c:1440 msgid "Destination name to introspect" msgstr "Destinationsnavnet, der skal introspiceres" -#: ../gio/gdbus-tool.c:1429 +#: ../gio/gdbus-tool.c:1441 msgid "Object path to introspect" msgstr "Objektstien, der skal introspiceres" -#: ../gio/gdbus-tool.c:1430 +#: ../gio/gdbus-tool.c:1442 msgid "Print XML" msgstr "Udskriv XML" -#: ../gio/gdbus-tool.c:1431 +#: ../gio/gdbus-tool.c:1443 msgid "Introspect children" msgstr "Foretag introspektion af underelementer" -#: ../gio/gdbus-tool.c:1432 +#: ../gio/gdbus-tool.c:1444 msgid "Only print properties" msgstr "Vis kun egenskaber" -#: ../gio/gdbus-tool.c:1523 +#: ../gio/gdbus-tool.c:1535 msgid "Introspect a remote object." msgstr "Introspicér et fjernobjekt." -#: ../gio/gdbus-tool.c:1721 +#: ../gio/gdbus-tool.c:1740 msgid "Destination name to monitor" msgstr "Navn pÃ¥ destination, der skal overvÃ¥ges" -#: ../gio/gdbus-tool.c:1722 +#: ../gio/gdbus-tool.c:1741 msgid "Object path to monitor" msgstr "Objektsti, der skal overvÃ¥ges" -#: ../gio/gdbus-tool.c:1751 +#: ../gio/gdbus-tool.c:1770 msgid "Monitor a remote object." msgstr "OvervÃ¥g et fjernobjekt." -#: ../gio/gdesktopappinfo.c:2001 ../gio/gdesktopappinfo.c:4525 -#: ../gio/gwin32appinfo.c:219 +#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4503 msgid "Unnamed" msgstr "Unavngivet" -#: ../gio/gdesktopappinfo.c:2410 +#: ../gio/gdesktopappinfo.c:2402 msgid "Desktop file didn't specify Exec field" msgstr "Skrivebordsfil angav intet Exec-felt" -#: ../gio/gdesktopappinfo.c:2695 +#: ../gio/gdesktopappinfo.c:2687 msgid "Unable to find terminal required for application" msgstr "Kan ikke finde terminal krævet af dette program" -#: ../gio/gdesktopappinfo.c:3116 +#: ../gio/gdesktopappinfo.c:3099 #, c-format msgid "Can't create user application configuration folder %s: %s" msgstr "Kan ikke oprette konfigurationsfolder %s for brugerprogram: %s" -#: ../gio/gdesktopappinfo.c:3120 +#: ../gio/gdesktopappinfo.c:3103 #, c-format msgid "Can't create user MIME configuration folder %s: %s" msgstr "Kan ikke oprette bruger-MIME-konfigurationsfolder %s: %s" -#: ../gio/gdesktopappinfo.c:3360 ../gio/gdesktopappinfo.c:3384 +#: ../gio/gdesktopappinfo.c:3343 ../gio/gdesktopappinfo.c:3367 msgid "Application information lacks an identifier" msgstr "Programinformation mangler en identifikator" -#: ../gio/gdesktopappinfo.c:3617 +#: ../gio/gdesktopappinfo.c:3601 #, c-format msgid "Can't create user desktop file %s" msgstr "Kan ikke oprette brugerskrivebords-fil %s" -#: ../gio/gdesktopappinfo.c:3751 +#: ../gio/gdesktopappinfo.c:3735 #, c-format msgid "Custom definition for %s" msgstr "Tilpasset definition for %s" @@ -1258,11 +1279,15 @@ msgstr "drevet implementerer ikke start" msgid "drive doesn't implement stop" msgstr "drevet implementerer ikke stop" -#: ../gio/gdummytlsbackend.c:189 ../gio/gdummytlsbackend.c:311 -#: ../gio/gdummytlsbackend.c:401 +#: ../gio/gdummytlsbackend.c:195 ../gio/gdummytlsbackend.c:317 +#: ../gio/gdummytlsbackend.c:509 msgid "TLS support is not available" msgstr "TLS-understøttelse er ikke tilgængelig" +#: ../gio/gdummytlsbackend.c:419 +msgid "DTLS support is not available" +msgstr "DTLS-understøttelse er ikke tilgængelig" + #: ../gio/gemblem.c:323 #, c-format msgid "Can't handle version %d of GEmblem encoding" @@ -1287,14 +1312,14 @@ msgstr "Forkert antal symboler (%d) i GEmblemedIcon-kodning" msgid "Expected a GEmblem for GEmblemedIcon" msgstr "Forventede et GEmblem til GEmblemedIcon" -#: ../gio/gfile.c:956 ../gio/gfile.c:1194 ../gio/gfile.c:1332 -#: ../gio/gfile.c:1570 ../gio/gfile.c:1625 ../gio/gfile.c:1683 -#: ../gio/gfile.c:1767 ../gio/gfile.c:1824 ../gio/gfile.c:1888 -#: ../gio/gfile.c:1943 ../gio/gfile.c:3591 ../gio/gfile.c:3646 -#: ../gio/gfile.c:3853 ../gio/gfile.c:3895 ../gio/gfile.c:4358 -#: ../gio/gfile.c:4769 ../gio/gfile.c:4854 ../gio/gfile.c:4944 -#: ../gio/gfile.c:5041 ../gio/gfile.c:5128 ../gio/gfile.c:5229 -#: ../gio/gfile.c:7748 ../gio/gfile.c:7838 ../gio/gfile.c:7922 +#: ../gio/gfile.c:969 ../gio/gfile.c:1207 ../gio/gfile.c:1345 +#: ../gio/gfile.c:1583 ../gio/gfile.c:1638 ../gio/gfile.c:1696 +#: ../gio/gfile.c:1780 ../gio/gfile.c:1837 ../gio/gfile.c:1901 +#: ../gio/gfile.c:1956 ../gio/gfile.c:3604 ../gio/gfile.c:3659 +#: ../gio/gfile.c:3894 ../gio/gfile.c:3936 ../gio/gfile.c:4404 +#: ../gio/gfile.c:4815 ../gio/gfile.c:4900 ../gio/gfile.c:4990 +#: ../gio/gfile.c:5087 ../gio/gfile.c:5174 ../gio/gfile.c:5275 +#: ../gio/gfile.c:7796 ../gio/gfile.c:7886 ../gio/gfile.c:7970 #: ../gio/win32/gwinhttpfile.c:437 msgid "Operation not supported" msgstr "Operationen understøttes ikke" @@ -1309,71 +1334,71 @@ msgstr "Operationen understøttes ikke" #. Translators: This is an error message when trying to find #. * the enclosing (user visible) mount of a file, but none #. * exists. -#: ../gio/gfile.c:1455 ../gio/glocalfile.c:1103 ../gio/glocalfile.c:1114 -#: ../gio/glocalfile.c:1127 +#: ../gio/gfile.c:1468 ../gio/glocalfile.c:1134 ../gio/glocalfile.c:1145 +#: ../gio/glocalfile.c:1158 msgid "Containing mount does not exist" msgstr "Indeholdende montering findes ikke" -#: ../gio/gfile.c:2502 ../gio/glocalfile.c:2337 +#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2376 msgid "Can't copy over directory" msgstr "Kan ikke kopiere over mappe" -#: ../gio/gfile.c:2562 +#: ../gio/gfile.c:2575 msgid "Can't copy directory over directory" msgstr "Kan ikke kopiere mappe over mappe" -#: ../gio/gfile.c:2570 ../gio/glocalfile.c:2346 +#: ../gio/gfile.c:2583 ../gio/glocalfile.c:2385 msgid "Target file exists" msgstr "MÃ¥lfilen findes" -#: ../gio/gfile.c:2589 +#: ../gio/gfile.c:2602 msgid "Can't recursively copy directory" msgstr "Kan ikke kopiere mappe rekursivt" -#: ../gio/gfile.c:2871 +#: ../gio/gfile.c:2884 msgid "Splice not supported" msgstr "Splejsning understøttes ikke" -#: ../gio/gfile.c:2875 +#: ../gio/gfile.c:2888 #, c-format msgid "Error splicing file: %s" msgstr "Fejl ved splejsning af fil: %s" -#: ../gio/gfile.c:3006 +#: ../gio/gfile.c:3019 msgid "Copy (reflink/clone) between mounts is not supported" msgstr "Kopiering (reflink/klon) mellem monteringer understøttes ikke" -#: ../gio/gfile.c:3010 +#: ../gio/gfile.c:3023 msgid "Copy (reflink/clone) is not supported or invalid" msgstr "Kopiering (reflink/klon) er ikke understøttet eller ugyldigt" -#: ../gio/gfile.c:3015 +#: ../gio/gfile.c:3028 msgid "Copy (reflink/clone) is not supported or didn't work" msgstr "Kopiering (reflink/klon) er ikke understøttet eller virkede ikke" -#: ../gio/gfile.c:3078 +#: ../gio/gfile.c:3091 msgid "Can't copy special file" msgstr "Kan ikke kopiere specialfil" -#: ../gio/gfile.c:3843 +#: ../gio/gfile.c:3884 msgid "Invalid symlink value given" msgstr "Ugyldig værdi givet for symbolsk henvisning" # ved ikke om det er papirkurv eller blot affald, eller om det er et udsagnsord. Vi skriver det sikreste... -#: ../gio/gfile.c:4004 +#: ../gio/gfile.c:4045 msgid "Trash not supported" msgstr "Affald understøttes ikke" -#: ../gio/gfile.c:4116 +#: ../gio/gfile.c:4157 #, c-format msgid "File names cannot contain '%c'" msgstr "Filnavne kan ikke indeholder \"%c\"" -#: ../gio/gfile.c:6540 ../gio/gvolume.c:363 +#: ../gio/gfile.c:6586 ../gio/gvolume.c:363 msgid "volume doesn't implement mount" msgstr "diskenheden implementerer ikke montering" -#: ../gio/gfile.c:6649 +#: ../gio/gfile.c:6695 msgid "No application is registered as handling this file" msgstr "Intet program er registreret til hÃ¥ndtering af denne fil" @@ -1419,6 +1444,31 @@ msgstr "Afskæring tillades ikke for inputstrømmen" msgid "Truncate not supported on stream" msgstr "Afskæring understøttes ikke pÃ¥ strømmen" +#: ../gio/ghttpproxy.c:136 +msgid "Bad HTTP proxy reply" +msgstr "Ugyldigt HTTP-proxysvar" + +#: ../gio/ghttpproxy.c:152 +msgid "HTTP proxy connection not allowed" +msgstr "HTTP-proxyforbindelse ikke tilladt" + +#: ../gio/ghttpproxy.c:157 +msgid "HTTP proxy authentication failed" +msgstr "HTTP-proxygodkendelse mislykkedes" + +#: ../gio/ghttpproxy.c:160 +msgid "HTTP proxy authentication required" +msgstr "HTTP-proxygodkendelse pÃ¥krævet" + +#: ../gio/ghttpproxy.c:164 +#, c-format +msgid "HTTP proxy connection failed: %i" +msgstr "Fejl i HTTP-proxyforbindelsen: %i" + +#: ../gio/ghttpproxy.c:260 +msgid "HTTP proxy server closed connection unexpectedly." +msgstr "HTTP-proxyserveren lukkede uventet forbindelsen." + #: ../gio/gicon.c:290 #, c-format msgid "Wrong number of tokens (%d)" @@ -1472,16 +1522,16 @@ msgstr "Adressen har bit sat ud over præfikslængden" msgid "Could not parse '%s' as IP address mask" msgstr "Kunne ikke fortolke \"%s\" som en IP-adresse-maske" -#: ../gio/ginetsocketaddress.c:196 ../gio/ginetsocketaddress.c:213 -#: ../gio/gunixsocketaddress.c:209 +#: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220 +#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:216 msgid "Not enough space for socket address" msgstr "Utilstrækkelig plads til sokkeladresse" -#: ../gio/ginetsocketaddress.c:228 +#: ../gio/ginetsocketaddress.c:235 msgid "Unsupported socket address" msgstr "Sokkeladresse understøttes ikke" -#: ../gio/ginputstream.c:185 +#: ../gio/ginputstream.c:188 msgid "Input stream doesn't implement read" msgstr "Inputstrøm implementerer ikke læsning" @@ -1491,12 +1541,12 @@ msgstr "Inputstrøm implementerer ikke læsning" #. Translators: This is an error you get if there is #. * already an operation running against this stream when #. * you try to start one -#: ../gio/ginputstream.c:1027 ../gio/giostream.c:287 -#: ../gio/goutputstream.c:1474 +#: ../gio/ginputstream.c:1215 ../gio/giostream.c:310 +#: ../gio/goutputstream.c:1668 msgid "Stream has outstanding operation" msgstr "Strøm arbejder stadig" -#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1453 +#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1491 #, c-format msgid "Element <%s> not allowed inside <%s>" msgstr "Elementet <%s> er ikke tilladt inden i <%s>" @@ -1541,7 +1591,7 @@ msgstr "Fejl ved læsning af filen %s: %s" msgid "Error compressing file %s" msgstr "Fejl ved komprimering af filen %s" -#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1565 +#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1603 #, c-format msgid "text may not appear inside <%s>" msgstr "der mÃ¥ ikke være tekst inden i <%s>" @@ -1556,8 +1606,8 @@ msgid "" "directory)" msgstr "Katalogerne hvorfra filer læses (som standard det nuværende katalog)" -#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:1994 -#: ../gio/glib-compile-schemas.c:2023 +#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2036 +#: ../gio/glib-compile-schemas.c:2065 msgid "DIRECTORY" msgstr "KATALOG" @@ -1606,16 +1656,16 @@ msgstr "" msgid "You should give exactly one file name\n" msgstr "Du skal angive præcist ét filnavn\n" -#: ../gio/glib-compile-schemas.c:772 +#: ../gio/glib-compile-schemas.c:784 msgid "empty names are not permitted" msgstr "tomme navne tillades ikke" -#: ../gio/glib-compile-schemas.c:782 +#: ../gio/glib-compile-schemas.c:794 #, c-format msgid "invalid name '%s': names must begin with a lowercase letter" msgstr "ugyldigt navn \"%s\": Navne skal begynde med et lille bogstav" -#: ../gio/glib-compile-schemas.c:794 +#: ../gio/glib-compile-schemas.c:806 #, c-format msgid "" "invalid name '%s': invalid character '%c'; only lowercase letters, numbers " @@ -1624,36 +1674,36 @@ msgstr "" "ugyldigt navn \"%s\": ugyldigt tegn \"%c\"; kun smÃ¥ bogstaver, tal og " "bindestreg (\"-\") er tilladt." -#: ../gio/glib-compile-schemas.c:803 +#: ../gio/glib-compile-schemas.c:815 #, c-format msgid "invalid name '%s': two successive hyphens ('--') are not permitted." msgstr "ugyldigt navn \"%s\": To bindestreger i træk (\"--\") er ikke tilladt." -#: ../gio/glib-compile-schemas.c:812 +#: ../gio/glib-compile-schemas.c:824 #, c-format msgid "invalid name '%s': the last character may not be a hyphen ('-')." msgstr "ugyldigt navn \"%s\": Sidste tegn mÃ¥ ikke være en bindestreg (\"-\")." -#: ../gio/glib-compile-schemas.c:820 +#: ../gio/glib-compile-schemas.c:832 #, c-format msgid "invalid name '%s': maximum length is 1024" msgstr "ugyldigt navn \"%s\": maksimale længde er 1024" -#: ../gio/glib-compile-schemas.c:889 +#: ../gio/glib-compile-schemas.c:901 #, c-format msgid " already specified" msgstr " allerede angivet" -#: ../gio/glib-compile-schemas.c:915 +#: ../gio/glib-compile-schemas.c:927 msgid "cannot add keys to a 'list-of' schema" msgstr "kan ikke føje nøgler til et \"list-of\"-skema" -#: ../gio/glib-compile-schemas.c:926 +#: ../gio/glib-compile-schemas.c:938 #, c-format msgid " already specified" msgstr " allerede angivet" -#: ../gio/glib-compile-schemas.c:944 +#: ../gio/glib-compile-schemas.c:956 #, c-format msgid "" " shadows in ; use " @@ -1662,7 +1712,7 @@ msgstr "" " overskygger i ; brug " " for at ændre værdi" -#: ../gio/glib-compile-schemas.c:955 +#: ../gio/glib-compile-schemas.c:967 #, c-format msgid "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " @@ -1671,58 +1721,58 @@ msgstr "" "præcist en af 'type', 'enum' eller 'flags' skal være angivet som attribut " "for " -#: ../gio/glib-compile-schemas.c:974 +#: ../gio/glib-compile-schemas.c:986 #, c-format msgid "<%s id='%s'> not (yet) defined." msgstr "<%s id='%s'> (endnu) ikke defineret." -#: ../gio/glib-compile-schemas.c:989 +#: ../gio/glib-compile-schemas.c:1001 #, c-format msgid "invalid GVariant type string '%s'" msgstr "ugyldig typestreng \"%s\" for GVariant" # override og extend bruges i forbindelse med nedarvning i forbindelse med objektorienteret programmering -#: ../gio/glib-compile-schemas.c:1019 +#: ../gio/glib-compile-schemas.c:1031 msgid " given but schema isn't extending anything" msgstr " givet, men skemaet nedarver ikke fra noget" -#: ../gio/glib-compile-schemas.c:1032 +#: ../gio/glib-compile-schemas.c:1044 #, c-format msgid "no to override" msgstr "ingen at overskrive" -#: ../gio/glib-compile-schemas.c:1040 +#: ../gio/glib-compile-schemas.c:1052 #, c-format msgid " already specified" msgstr " allerede angivet" -#: ../gio/glib-compile-schemas.c:1111 +#: ../gio/glib-compile-schemas.c:1125 #, c-format msgid " already specified" msgstr " allerede angivet" -#: ../gio/glib-compile-schemas.c:1123 +#: ../gio/glib-compile-schemas.c:1137 #, c-format msgid " extends not yet existing schema '%s'" msgstr " nedarver fra skemaet \"%s\", som ikke findes endnu" # list of? -#: ../gio/glib-compile-schemas.c:1139 +#: ../gio/glib-compile-schemas.c:1153 #, c-format msgid " is list of not yet existing schema '%s'" msgstr " er en liste for skemaet \"%s\", der ikke findes endnu" -#: ../gio/glib-compile-schemas.c:1147 +#: ../gio/glib-compile-schemas.c:1161 #, c-format msgid "Can not be a list of a schema with a path" msgstr "Kan ikke være en liste for et skema med en sti" -#: ../gio/glib-compile-schemas.c:1157 +#: ../gio/glib-compile-schemas.c:1171 #, c-format msgid "Can not extend a schema with a path" msgstr "Kan ikke udvide et skema med en sti" -#: ../gio/glib-compile-schemas.c:1167 +#: ../gio/glib-compile-schemas.c:1181 #, c-format msgid "" " is a list, extending which is not a list" @@ -1730,7 +1780,7 @@ msgstr "" " er en liste, der nedarver fra , som ikke er " "en liste" -#: ../gio/glib-compile-schemas.c:1177 +#: ../gio/glib-compile-schemas.c:1191 #, c-format msgid "" " extends but '%s' " @@ -1739,63 +1789,68 @@ msgstr "" " nedarver fra , " "men \"%s\" nedarver ikke fra \"%s\"" -#: ../gio/glib-compile-schemas.c:1194 +#: ../gio/glib-compile-schemas.c:1208 #, c-format msgid "a path, if given, must begin and end with a slash" msgstr "en sti, hvis givet, skal starte og slutte med skrÃ¥streg" -#: ../gio/glib-compile-schemas.c:1201 +#: ../gio/glib-compile-schemas.c:1215 #, c-format msgid "the path of a list must end with ':/'" msgstr "stien for en liste skal slutte med \":/\"" -#: ../gio/glib-compile-schemas.c:1233 +#: ../gio/glib-compile-schemas.c:1247 #, c-format msgid "<%s id='%s'> already specified" msgstr "<%s id='%s'> allerede angivet" -#: ../gio/glib-compile-schemas.c:1457 +#: ../gio/glib-compile-schemas.c:1397 ../gio/glib-compile-schemas.c:1413 +#, c-format +msgid "Only one <%s> element allowed inside <%s>" +msgstr "Kun ét <%s>-element er tilladt inden i <%s>" + +#: ../gio/glib-compile-schemas.c:1495 #, c-format msgid "Element <%s> not allowed at the top level" msgstr "Elementet <%s> er ikke tilladt i topniveau" #. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1752 ../gio/glib-compile-schemas.c:1823 -#: ../gio/glib-compile-schemas.c:1899 +#: ../gio/glib-compile-schemas.c:1794 ../gio/glib-compile-schemas.c:1865 +#: ../gio/glib-compile-schemas.c:1941 #, c-format msgid "--strict was specified; exiting.\n" msgstr "--strict blev angivet; afslutter.\n" -#: ../gio/glib-compile-schemas.c:1760 +#: ../gio/glib-compile-schemas.c:1802 #, c-format msgid "This entire file has been ignored.\n" msgstr "Hele denne fil er blevet ignoreret.\n" -#: ../gio/glib-compile-schemas.c:1819 +#: ../gio/glib-compile-schemas.c:1861 #, c-format msgid "Ignoring this file.\n" msgstr "Ignorerer denne fil.\n" -#: ../gio/glib-compile-schemas.c:1859 +#: ../gio/glib-compile-schemas.c:1901 #, c-format msgid "No such key '%s' in schema '%s' as specified in override file '%s'" msgstr "" "Ingen sÃ¥dan nøgle \"%s\" i skemaet \"%s\" som angivet i overskrivningsfilen " "\"%s\"" -#: ../gio/glib-compile-schemas.c:1865 ../gio/glib-compile-schemas.c:1923 -#: ../gio/glib-compile-schemas.c:1951 +#: ../gio/glib-compile-schemas.c:1907 ../gio/glib-compile-schemas.c:1965 +#: ../gio/glib-compile-schemas.c:1993 #, c-format msgid "; ignoring override for this key.\n" msgstr "; ignorerer overskrivning for denne nøgle.\n" -#: ../gio/glib-compile-schemas.c:1869 ../gio/glib-compile-schemas.c:1927 -#: ../gio/glib-compile-schemas.c:1955 +#: ../gio/glib-compile-schemas.c:1911 ../gio/glib-compile-schemas.c:1969 +#: ../gio/glib-compile-schemas.c:1997 #, c-format msgid " and --strict was specified; exiting.\n" msgstr " og --strict blev givet; afslutter.\n" -#: ../gio/glib-compile-schemas.c:1885 +#: ../gio/glib-compile-schemas.c:1927 #, c-format msgid "" "error parsing key '%s' in schema '%s' as specified in override file '%s': %s." @@ -1803,12 +1858,12 @@ msgstr "" "fejl ved fortolkning af nøglen \"%s\" i skemaet \"%s\" som givet i " "overskrivningsfilen \"%s\": %s." -#: ../gio/glib-compile-schemas.c:1895 +#: ../gio/glib-compile-schemas.c:1937 #, c-format msgid "Ignoring override for this key.\n" msgstr "Ignorerer overskrivning for denne nøgle.\n" -#: ../gio/glib-compile-schemas.c:1913 +#: ../gio/glib-compile-schemas.c:1955 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is outside the " @@ -1817,7 +1872,7 @@ msgstr "" "overskrivning for nøglen \"%s\" i skemaet \"%s\" i overskrivningsfilen \"%s" "\" er ikke i det interval, skemaet angiver" -#: ../gio/glib-compile-schemas.c:1941 +#: ../gio/glib-compile-schemas.c:1983 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is not in the " @@ -1826,23 +1881,23 @@ msgstr "" "overskrivningen for nøglen \"%s\" i skemaet \"%s\" i overskrivningsfilen \"%s" "\" er ikke i listen af gyldige valg" -#: ../gio/glib-compile-schemas.c:1994 +#: ../gio/glib-compile-schemas.c:2036 msgid "where to store the gschemas.compiled file" msgstr "hvor filen gschemas.compiled skal lægges" -#: ../gio/glib-compile-schemas.c:1995 +#: ../gio/glib-compile-schemas.c:2037 msgid "Abort on any errors in schemas" msgstr "Afbryd ved enhver fejl i skemaer" -#: ../gio/glib-compile-schemas.c:1996 +#: ../gio/glib-compile-schemas.c:2038 msgid "Do not write the gschema.compiled file" msgstr "Skriv ikke filen gschema.compiled" -#: ../gio/glib-compile-schemas.c:1997 +#: ../gio/glib-compile-schemas.c:2039 msgid "Do not enforce key name restrictions" msgstr "Gennemtving ikke begrænsninger pÃ¥ nøglenavn" -#: ../gio/glib-compile-schemas.c:2026 +#: ../gio/glib-compile-schemas.c:2068 msgid "" "Compile all GSettings schema files into a schema cache.\n" "Schema files are required to have the extension .gschema.xml,\n" @@ -1852,145 +1907,141 @@ msgstr "" "Schemafiler skal have filendelsen .gschema.xml,\n" "og mellemlagerfilen kaldes gschemas.compiled." -#: ../gio/glib-compile-schemas.c:2042 +#: ../gio/glib-compile-schemas.c:2084 #, c-format msgid "You should give exactly one directory name\n" msgstr "Du skal give præcist et katalognavn\n" -#: ../gio/glib-compile-schemas.c:2081 +#: ../gio/glib-compile-schemas.c:2123 #, c-format msgid "No schema files found: " msgstr "Ingen skemafiler fundet: " -#: ../gio/glib-compile-schemas.c:2084 +#: ../gio/glib-compile-schemas.c:2126 #, c-format msgid "doing nothing.\n" msgstr "gør intet.\n" -#: ../gio/glib-compile-schemas.c:2087 +#: ../gio/glib-compile-schemas.c:2129 #, c-format msgid "removed existing output file.\n" msgstr "fjernede eksisterende uddatafil.\n" -#: ../gio/glocaldirectorymonitor.c:224 -msgid "Unable to find default local directory monitor type" -msgstr "Kan ikke finde standardmonitortype for lokal mappe" - -#: ../gio/glocalfile.c:604 ../gio/win32/gwinhttpfile.c:420 +#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420 #, c-format msgid "Invalid filename %s" msgstr "Ugyldigt filnavn %s" -#: ../gio/glocalfile.c:981 +#: ../gio/glocalfile.c:1012 #, c-format msgid "Error getting filesystem info: %s" msgstr "Fejl ved læsning af filsysteminformation: %s" -#: ../gio/glocalfile.c:1149 +#: ../gio/glocalfile.c:1180 msgid "Can't rename root directory" msgstr "Kan ikke omdøbe rodmappen" -#: ../gio/glocalfile.c:1169 ../gio/glocalfile.c:1195 +#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226 #, c-format msgid "Error renaming file: %s" msgstr "Fejl ved omdøbning af fil: %s" -#: ../gio/glocalfile.c:1178 +#: ../gio/glocalfile.c:1209 msgid "Can't rename file, filename already exists" msgstr "Kan ikke omdøbe fil, filnavn findes allerede" -#: ../gio/glocalfile.c:1191 ../gio/glocalfile.c:2210 ../gio/glocalfile.c:2239 -#: ../gio/glocalfile.c:2399 ../gio/glocalfileoutputstream.c:549 +#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2249 ../gio/glocalfile.c:2278 +#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549 msgid "Invalid filename" msgstr "Ugyldigt filnavn" -#: ../gio/glocalfile.c:1358 ../gio/glocalfile.c:1382 +#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413 msgid "Can't open directory" msgstr "Kan ikke Ã¥bne mappe" -#: ../gio/glocalfile.c:1366 +#: ../gio/glocalfile.c:1397 #, c-format msgid "Error opening file: %s" msgstr "Fejl ved Ã¥bning af fil: %s" -#: ../gio/glocalfile.c:1507 +#: ../gio/glocalfile.c:1538 #, c-format msgid "Error removing file: %s" msgstr "Fejl under fjernelse af fil: %s" -#: ../gio/glocalfile.c:1887 +#: ../gio/glocalfile.c:1922 #, c-format msgid "Error trashing file: %s" msgstr "Fejl ved udsmidning af fil: %s" -#: ../gio/glocalfile.c:1910 +#: ../gio/glocalfile.c:1945 #, c-format msgid "Unable to create trash dir %s: %s" msgstr "Kan ikke oprette affaldsmappe %s: %s" -#: ../gio/glocalfile.c:1931 +#: ../gio/glocalfile.c:1966 msgid "Unable to find toplevel directory for trash" msgstr "Kan ikke finde topniveau-mappe til affald" -#: ../gio/glocalfile.c:2010 ../gio/glocalfile.c:2030 +#: ../gio/glocalfile.c:2045 ../gio/glocalfile.c:2065 msgid "Unable to find or create trash directory" msgstr "Kan ikke finde eller oprette affaldsmappe" -#: ../gio/glocalfile.c:2064 +#: ../gio/glocalfile.c:2099 #, c-format msgid "Unable to create trashing info file: %s" msgstr "Kan ikke oprette affalds-infofil: %s" -#: ../gio/glocalfile.c:2095 ../gio/glocalfile.c:2100 ../gio/glocalfile.c:2180 -#: ../gio/glocalfile.c:2187 +#: ../gio/glocalfile.c:2157 ../gio/glocalfile.c:2162 ../gio/glocalfile.c:2219 +#: ../gio/glocalfile.c:2226 #, c-format msgid "Unable to trash file: %s" msgstr "Kan ikke smide fil ud: %s" -#: ../gio/glocalfile.c:2188 ../glib/gregex.c:281 +#: ../gio/glocalfile.c:2227 ../glib/gregex.c:281 msgid "internal error" msgstr "intern fejl" -#: ../gio/glocalfile.c:2214 +#: ../gio/glocalfile.c:2253 #, c-format msgid "Error creating directory: %s" msgstr "Fejl ved oprettelse af mappen: %s" -#: ../gio/glocalfile.c:2243 +#: ../gio/glocalfile.c:2282 #, c-format msgid "Filesystem does not support symbolic links" msgstr "Filsystemet understøtter ikke symbolske henvisninger" -#: ../gio/glocalfile.c:2247 +#: ../gio/glocalfile.c:2286 #, c-format msgid "Error making symbolic link: %s" msgstr "Fejl under oprettelse af symbolsk henvisning: %s" -#: ../gio/glocalfile.c:2309 ../gio/glocalfile.c:2403 +#: ../gio/glocalfile.c:2348 ../gio/glocalfile.c:2442 #, c-format msgid "Error moving file: %s" msgstr "Fejl ved flytning af fil: %s" -#: ../gio/glocalfile.c:2332 +#: ../gio/glocalfile.c:2371 msgid "Can't move directory over directory" msgstr "Kan ikke flytte mappe over mappe" -#: ../gio/glocalfile.c:2359 ../gio/glocalfileoutputstream.c:925 +#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:925 #: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954 #: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984 msgid "Backup file creation failed" msgstr "Oprettelse af sikkerhedskopi mislykkedes" -#: ../gio/glocalfile.c:2378 +#: ../gio/glocalfile.c:2417 #, c-format msgid "Error removing target file: %s" msgstr "Fejl ved fjernelse af mÃ¥lfil: %s" -#: ../gio/glocalfile.c:2392 +#: ../gio/glocalfile.c:2431 msgid "Move between mounts not supported" msgstr "Flytning mellem monteringer understøttes ikke" -#: ../gio/glocalfile.c:2603 +#: ../gio/glocalfile.c:2623 #, c-format msgid "Could not determine the disk usage of %s: %s" msgstr "Kunne ikke bestemme diskforbruget af %s: %s" @@ -2012,81 +2063,81 @@ msgstr "Ugyldigt udvidet attributnavn" msgid "Error setting extended attribute '%s': %s" msgstr "Fejl ved instilling af udvidet attribut \"%s\": %s" -#: ../gio/glocalfileinfo.c:1556 +#: ../gio/glocalfileinfo.c:1575 msgid " (invalid encoding)" msgstr " (ugyldig kodning)" -#: ../gio/glocalfileinfo.c:1747 ../gio/glocalfileoutputstream.c:803 +#: ../gio/glocalfileinfo.c:1766 ../gio/glocalfileoutputstream.c:803 #, c-format msgid "Error when getting information for file '%s': %s" msgstr "Fejl ved indhentning af oplysninger om filen \"%s\": %s" -#: ../gio/glocalfileinfo.c:1998 +#: ../gio/glocalfileinfo.c:2017 #, c-format msgid "Error when getting information for file descriptor: %s" msgstr "Fejl ved indhentning af oplysninger om fildeskriptor: %s" -#: ../gio/glocalfileinfo.c:2043 +#: ../gio/glocalfileinfo.c:2062 msgid "Invalid attribute type (uint32 expected)" msgstr "Ugyldig attributtype (uint32 forventet)" -#: ../gio/glocalfileinfo.c:2061 +#: ../gio/glocalfileinfo.c:2080 msgid "Invalid attribute type (uint64 expected)" msgstr "Ugyldig attributtype (uint64 forventet)" -#: ../gio/glocalfileinfo.c:2080 ../gio/glocalfileinfo.c:2099 +#: ../gio/glocalfileinfo.c:2099 ../gio/glocalfileinfo.c:2118 msgid "Invalid attribute type (byte string expected)" msgstr "Ugyldig attributtype (byte-streng forventet)" -#: ../gio/glocalfileinfo.c:2134 +#: ../gio/glocalfileinfo.c:2153 msgid "Cannot set permissions on symlinks" msgstr "Kan ikke ændre rettigheder pÃ¥ symlænker" -#: ../gio/glocalfileinfo.c:2150 +#: ../gio/glocalfileinfo.c:2169 #, c-format msgid "Error setting permissions: %s" msgstr "Fejl ved ændring af rettigheder: %s" -#: ../gio/glocalfileinfo.c:2201 +#: ../gio/glocalfileinfo.c:2220 #, c-format msgid "Error setting owner: %s" msgstr "Fejl ved ændring af ejer: %s" -#: ../gio/glocalfileinfo.c:2224 +#: ../gio/glocalfileinfo.c:2243 msgid "symlink must be non-NULL" msgstr "symbolsk henvisning mÃ¥ ikke være NULL" -#: ../gio/glocalfileinfo.c:2234 ../gio/glocalfileinfo.c:2253 -#: ../gio/glocalfileinfo.c:2264 +#: ../gio/glocalfileinfo.c:2253 ../gio/glocalfileinfo.c:2272 +#: ../gio/glocalfileinfo.c:2283 #, c-format msgid "Error setting symlink: %s" msgstr "Fejl ved manipulation af symbolsk henvisning: %s" -#: ../gio/glocalfileinfo.c:2243 +#: ../gio/glocalfileinfo.c:2262 msgid "Error setting symlink: file is not a symlink" msgstr "" "Fejl ved manipulation af symbolsk henvisning: filen er ikke en symbolsk " "henvisning" -#: ../gio/glocalfileinfo.c:2369 +#: ../gio/glocalfileinfo.c:2388 #, c-format msgid "Error setting modification or access time: %s" msgstr "Fejl ved ændring af tidspunkt for ændring eller tilgang: %s" -#: ../gio/glocalfileinfo.c:2392 +#: ../gio/glocalfileinfo.c:2411 msgid "SELinux context must be non-NULL" msgstr "SELinux-kontekst skal være forskellig fra NULL" -#: ../gio/glocalfileinfo.c:2407 +#: ../gio/glocalfileinfo.c:2426 #, c-format msgid "Error setting SELinux context: %s" msgstr "Fejl ved ændring af SELinux-kontekst: %s" -#: ../gio/glocalfileinfo.c:2414 +#: ../gio/glocalfileinfo.c:2433 msgid "SELinux is not enabled on this system" msgstr "SELinux er ikke aktiveret pÃ¥ dette system" -#: ../gio/glocalfileinfo.c:2506 +#: ../gio/glocalfileinfo.c:2525 #, c-format msgid "Setting attribute %s not supported" msgstr "Indstilling af attributten %s understøttes ikke" @@ -2109,7 +2160,7 @@ msgstr "Fejl under søgning i filen: %s" msgid "Error closing file: %s" msgstr "Fejl ved lukning af filen: %s" -#: ../gio/glocalfilemonitor.c:145 +#: ../gio/glocalfilemonitor.c:840 msgid "Unable to find default local file monitor type" msgstr "Kan ikke finde standardmonitortype for lokal fil" @@ -2174,11 +2225,11 @@ msgstr "Ugyldig søgeforespørgsel" msgid "Cannot truncate GMemoryInputStream" msgstr "Kan ikke beskære GMemoryInputStream" -#: ../gio/gmemoryoutputstream.c:565 +#: ../gio/gmemoryoutputstream.c:567 msgid "Memory output stream not resizable" msgstr "Hukommelses-uddatastrøm kan ikke ændre størrelse" -#: ../gio/gmemoryoutputstream.c:581 +#: ../gio/gmemoryoutputstream.c:583 msgid "Failed to resize memory output stream" msgstr "Kunne ikke ændre størrelse for hukommelses-uddatastrøm" @@ -2250,16 +2301,16 @@ msgstr "monteringsobjekt implementerer ikke gæt pÃ¥ indholdstype" msgid "mount doesn't implement synchronous content type guessing" msgstr "monteringsobjekt implementerer ikke synkrone gæt pÃ¥ indholdstype" -#: ../gio/gnetworkaddress.c:338 +#: ../gio/gnetworkaddress.c:378 #, c-format msgid "Hostname '%s' contains '[' but not ']'" msgstr "Værtsnavnet \"%s\" indeholder \"[\", men ikke \"]\"" -#: ../gio/gnetworkmonitorbase.c:189 ../gio/gnetworkmonitorbase.c:292 +#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:309 msgid "Network unreachable" msgstr "Netværket kan ikke nÃ¥s" -#: ../gio/gnetworkmonitorbase.c:227 ../gio/gnetworkmonitorbase.c:257 +#: ../gio/gnetworkmonitorbase.c:244 ../gio/gnetworkmonitorbase.c:274 msgid "Host unreachable" msgstr "Vært kan ikke nÃ¥s" @@ -2277,47 +2328,52 @@ msgstr "Kunne ikke oprette netværksovervÃ¥gning: " msgid "Could not get network status: " msgstr "Kunne ikke finde netværksstatus: " -#: ../gio/goutputstream.c:209 ../gio/goutputstream.c:550 +#: ../gio/gnetworkmonitornm.c:326 +#, c-format +msgid "NetworkManager version too old" +msgstr "Versionen af NetværksHÃ¥ndtering er for gammel" + +#: ../gio/goutputstream.c:212 ../gio/goutputstream.c:560 msgid "Output stream doesn't implement write" msgstr "Uddatastrøm implementerer ikke write" -#: ../gio/goutputstream.c:511 ../gio/goutputstream.c:1028 +#: ../gio/goutputstream.c:521 ../gio/goutputstream.c:1222 msgid "Source stream is already closed" msgstr "Kildestrømmen er allerede lukket" -#: ../gio/gresolver.c:320 ../gio/gthreadedresolver.c:116 +#: ../gio/gresolver.c:330 ../gio/gthreadedresolver.c:116 #: ../gio/gthreadedresolver.c:126 #, c-format msgid "Error resolving '%s': %s" msgstr "Fejl ved opløsning af \"%s\": %s" -#: ../gio/gresource.c:291 ../gio/gresource.c:539 ../gio/gresource.c:556 -#: ../gio/gresource.c:677 ../gio/gresource.c:746 ../gio/gresource.c:807 -#: ../gio/gresource.c:887 ../gio/gresourcefile.c:452 -#: ../gio/gresourcefile.c:553 ../gio/gresourcefile.c:655 +#: ../gio/gresource.c:304 ../gio/gresource.c:555 ../gio/gresource.c:572 +#: ../gio/gresource.c:693 ../gio/gresource.c:762 ../gio/gresource.c:823 +#: ../gio/gresource.c:903 ../gio/gresourcefile.c:453 +#: ../gio/gresourcefile.c:576 ../gio/gresourcefile.c:713 #, c-format msgid "The resource at '%s' does not exist" msgstr "Ressourcen pÃ¥ \"%s\" findes ikke" -#: ../gio/gresource.c:456 +#: ../gio/gresource.c:469 #, c-format msgid "The resource at '%s' failed to decompress" msgstr "Ressourcen pÃ¥ \"%s\" kunne ikke afkomprimeres" -#: ../gio/gresourcefile.c:651 +#: ../gio/gresourcefile.c:709 #, c-format msgid "The resource at '%s' is not a directory" msgstr "Ressourcen i \"%s\" er ikke et katalog" -#: ../gio/gresourcefile.c:859 +#: ../gio/gresourcefile.c:917 msgid "Input stream doesn't implement seek" msgstr "Inputstrømmen implementerer ikke søgning" -#: ../gio/gresource-tool.c:491 +#: ../gio/gresource-tool.c:494 msgid "List sections containing resources in an elf FILE" msgstr "Vis sektioner, der indeholder ressourcer, i en elf-FIL" -#: ../gio/gresource-tool.c:497 +#: ../gio/gresource-tool.c:500 msgid "" "List resources\n" "If SECTION is given, only list resources in this section\n" @@ -2327,16 +2383,16 @@ msgstr "" "Hvis SEKTION er givet, sÃ¥ vis kun ressourcer i denne sektion\n" "Hvis STI er givet, sÃ¥ vis kun matchende ressourcer" -#: ../gio/gresource-tool.c:500 ../gio/gresource-tool.c:510 +#: ../gio/gresource-tool.c:503 ../gio/gresource-tool.c:513 msgid "FILE [PATH]" msgstr "FIL [STI]" -#: ../gio/gresource-tool.c:501 ../gio/gresource-tool.c:511 -#: ../gio/gresource-tool.c:518 +#: ../gio/gresource-tool.c:504 ../gio/gresource-tool.c:514 +#: ../gio/gresource-tool.c:521 msgid "SECTION" msgstr "SEKTION" -#: ../gio/gresource-tool.c:506 +#: ../gio/gresource-tool.c:509 msgid "" "List resources with details\n" "If SECTION is given, only list resources in this section\n" @@ -2348,15 +2404,15 @@ msgstr "" "Hvis STI er givet, sÃ¥ vis kun matchende ressourcer\n" "Detaljerne inkluderer sektion, størrelse og komprimering" -#: ../gio/gresource-tool.c:516 +#: ../gio/gresource-tool.c:519 msgid "Extract a resource file to stdout" msgstr "Udskriv en ressourcefil til stdout" -#: ../gio/gresource-tool.c:517 +#: ../gio/gresource-tool.c:520 msgid "FILE PATH" msgstr "FILSTI" -#: ../gio/gresource-tool.c:531 +#: ../gio/gresource-tool.c:534 msgid "" "Usage:\n" " gresource [--section SECTION] COMMAND [ARGS...]\n" @@ -2384,7 +2440,7 @@ msgstr "" "Brug \"gresource help KOMMANDO\" til at fÃ¥ uddybende hjælp.\n" "\n" -#: ../gio/gresource-tool.c:545 +#: ../gio/gresource-tool.c:548 #, c-format msgid "" "Usage:\n" @@ -2399,19 +2455,19 @@ msgstr "" "%s\n" "\n" -#: ../gio/gresource-tool.c:552 +#: ../gio/gresource-tool.c:555 msgid " SECTION An (optional) elf section name\n" msgstr " SEKTION Navn pÃ¥ elf-sektion (valgfri)\n" -#: ../gio/gresource-tool.c:556 ../gio/gsettings-tool.c:635 +#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:639 msgid " COMMAND The (optional) command to explain\n" msgstr " KOMMANDO Den kommandoen der skal forklares (valgfri)\n" -#: ../gio/gresource-tool.c:562 +#: ../gio/gresource-tool.c:565 msgid " FILE An elf file (a binary or a shared library)\n" msgstr " FIL En elf-fil (et binært eller delt bibliotek)\n" -#: ../gio/gresource-tool.c:565 +#: ../gio/gresource-tool.c:568 msgid "" " FILE An elf file (a binary or a shared library)\n" " or a compiled resource file\n" @@ -2419,23 +2475,24 @@ msgstr "" " FIL En elf-fil (et binært eller delt bibliotek)\n" " eller en kompileret ressourcefil\n" -#: ../gio/gresource-tool.c:569 +#: ../gio/gresource-tool.c:572 msgid "[PATH]" msgstr "[STI]" -#: ../gio/gresource-tool.c:571 +#: ../gio/gresource-tool.c:574 msgid " PATH An (optional) resource path (may be partial)\n" msgstr " STI En eventuelt delvis ressourcesti (valgfri)\n" -#: ../gio/gresource-tool.c:572 +#: ../gio/gresource-tool.c:575 msgid "PATH" msgstr "STI" -#: ../gio/gresource-tool.c:574 +#: ../gio/gresource-tool.c:577 msgid " PATH A resource path\n" msgstr " STI En ressourcesti\n" #: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72 +#: ../gio/gsettings-tool.c:830 #, c-format msgid "No such schema '%s'\n" msgstr "Intet sÃ¥dant skema \"%s\"\n" @@ -2470,38 +2527,38 @@ msgstr "Sti skal slutte med skrÃ¥streg (/)\n" msgid "Path must not contain two adjacent slashes (//)\n" msgstr "Sti mÃ¥ ikke indeholde to skrÃ¥streger i træk (//)\n" -#: ../gio/gsettings-tool.c:477 +#: ../gio/gsettings-tool.c:481 #, c-format msgid "The provided value is outside of the valid range\n" msgstr "Den givne værdi ligger uden for det gyldige interval\n" -#: ../gio/gsettings-tool.c:484 +#: ../gio/gsettings-tool.c:488 #, c-format msgid "The key is not writable\n" msgstr "Nøglen er skrivebeskyttet\n" -#: ../gio/gsettings-tool.c:520 +#: ../gio/gsettings-tool.c:524 msgid "List the installed (non-relocatable) schemas" msgstr "Vis de installerede (uflytbare) skemaer" -#: ../gio/gsettings-tool.c:526 +#: ../gio/gsettings-tool.c:530 msgid "List the installed relocatable schemas" msgstr "Vis de installerede flytbare skemaer" -#: ../gio/gsettings-tool.c:532 +#: ../gio/gsettings-tool.c:536 msgid "List the keys in SCHEMA" msgstr "Vis nøglerne i SKEMA" -#: ../gio/gsettings-tool.c:533 ../gio/gsettings-tool.c:539 -#: ../gio/gsettings-tool.c:576 +#: ../gio/gsettings-tool.c:537 ../gio/gsettings-tool.c:543 +#: ../gio/gsettings-tool.c:580 msgid "SCHEMA[:PATH]" msgstr "SKEMA[:STI]" -#: ../gio/gsettings-tool.c:538 +#: ../gio/gsettings-tool.c:542 msgid "List the children of SCHEMA" msgstr "Vis underelementerne af SKEMA" -#: ../gio/gsettings-tool.c:544 +#: ../gio/gsettings-tool.c:548 msgid "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" @@ -2509,44 +2566,44 @@ msgstr "" "Vis nøgler og værdier rekursivt\n" "Hvis intet SKEMA er angivet, vis alle nøgler\n" -#: ../gio/gsettings-tool.c:546 +#: ../gio/gsettings-tool.c:550 msgid "[SCHEMA[:PATH]]" msgstr "[SKEMA[:STI]]" -#: ../gio/gsettings-tool.c:551 +#: ../gio/gsettings-tool.c:555 msgid "Get the value of KEY" msgstr "Hent værdien for NØGLE" -#: ../gio/gsettings-tool.c:552 ../gio/gsettings-tool.c:558 -#: ../gio/gsettings-tool.c:570 ../gio/gsettings-tool.c:582 +#: ../gio/gsettings-tool.c:556 ../gio/gsettings-tool.c:562 +#: ../gio/gsettings-tool.c:574 ../gio/gsettings-tool.c:586 msgid "SCHEMA[:PATH] KEY" msgstr "SKEMA[:STI] NØGLE" -#: ../gio/gsettings-tool.c:557 +#: ../gio/gsettings-tool.c:561 msgid "Query the range of valid values for KEY" msgstr "Forespørg om det gyldige interval af værdier for NØGLE" -#: ../gio/gsettings-tool.c:563 +#: ../gio/gsettings-tool.c:567 msgid "Set the value of KEY to VALUE" msgstr "Sæt værdien af NØGLE til VÆRDI" -#: ../gio/gsettings-tool.c:564 +#: ../gio/gsettings-tool.c:568 msgid "SCHEMA[:PATH] KEY VALUE" msgstr "SKEMA[:STI] NØGLE VÆRDI" -#: ../gio/gsettings-tool.c:569 +#: ../gio/gsettings-tool.c:573 msgid "Reset KEY to its default value" msgstr "Nulstil NØGLE til dens standardværdi" -#: ../gio/gsettings-tool.c:575 +#: ../gio/gsettings-tool.c:579 msgid "Reset all keys in SCHEMA to their defaults" msgstr "Nulstil alle nøgler i SKEMA til deres standardværdier" -#: ../gio/gsettings-tool.c:581 +#: ../gio/gsettings-tool.c:585 msgid "Check if KEY is writable" msgstr "Se om NØGLE er skrivbar" -#: ../gio/gsettings-tool.c:587 +#: ../gio/gsettings-tool.c:591 msgid "" "Monitor KEY for changes.\n" "If no KEY is specified, monitor all keys in SCHEMA.\n" @@ -2556,11 +2613,11 @@ msgstr "" "Hvis ingen NØGLE er givet, overvÃ¥ges alle nøgler i SKEMA.\n" "Brug ^C for at standse overvÃ¥gning.\n" -#: ../gio/gsettings-tool.c:590 +#: ../gio/gsettings-tool.c:594 msgid "SCHEMA[:PATH] [KEY]" msgstr "SKEMA[:STI] [NØGLE]" -#: ../gio/gsettings-tool.c:602 +#: ../gio/gsettings-tool.c:606 msgid "" "Usage:\n" " gsettings --version\n" @@ -2606,7 +2663,7 @@ msgstr "" "Brug \"gsettings help KOMMANDO\" for at fÃ¥ uddybende hjælp.\n" "\n" -#: ../gio/gsettings-tool.c:625 +#: ../gio/gsettings-tool.c:629 #, c-format msgid "" "Usage:\n" @@ -2621,11 +2678,11 @@ msgstr "" "%s\n" "\n" -#: ../gio/gsettings-tool.c:631 +#: ../gio/gsettings-tool.c:635 msgid " SCHEMADIR A directory to search for additional schemas\n" msgstr " SKEMAKAT Et katalog hvor der søges efter yderligere skemaer\n" -#: ../gio/gsettings-tool.c:639 +#: ../gio/gsettings-tool.c:643 msgid "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" @@ -2633,160 +2690,176 @@ msgstr "" " SKEMA Navnet pÃ¥ skemaet\n" " STI Stien, for flytbare skemaer\n" -#: ../gio/gsettings-tool.c:644 +#: ../gio/gsettings-tool.c:648 msgid " KEY The (optional) key within the schema\n" msgstr " NØGLE Den (valgfri) nøgle inden for skemaet\n" -#: ../gio/gsettings-tool.c:648 +#: ../gio/gsettings-tool.c:652 msgid " KEY The key within the schema\n" msgstr " NØGLE Nøglen inden for skemaet\n" -#: ../gio/gsettings-tool.c:652 +#: ../gio/gsettings-tool.c:656 msgid " VALUE The value to set\n" msgstr " VÆRDI Værdien der skal sættes\n" -#: ../gio/gsettings-tool.c:707 +#: ../gio/gsettings-tool.c:711 #, c-format msgid "Could not load schemas from %s: %s\n" msgstr "Kunne ikke indlæse skemaer fra %s: %s\n" -#: ../gio/gsettings-tool.c:769 +#: ../gio/gsettings-tool.c:723 +#, c-format +msgid "No schemas installed\n" +msgstr "Ingen skemaer installeret\n" + +#: ../gio/gsettings-tool.c:788 #, c-format msgid "Empty schema name given\n" msgstr "Tomt skemanavn givet\n" -#: ../gio/gsettings-tool.c:798 +#: ../gio/gsettings-tool.c:843 #, c-format msgid "No such key '%s'\n" msgstr "Ingen sÃ¥dan nøgle \"%s\"\n" -#: ../gio/gsocket.c:266 +#: ../gio/gsocket.c:364 msgid "Invalid socket, not initialized" msgstr "Ugyldig sokkel, ikke initialiseret" -#: ../gio/gsocket.c:273 +#: ../gio/gsocket.c:371 #, c-format msgid "Invalid socket, initialization failed due to: %s" msgstr "Ugyldig sokkel, initialisering mislykkedes pÃ¥ grund af: %s" -#: ../gio/gsocket.c:281 +#: ../gio/gsocket.c:379 msgid "Socket is already closed" msgstr "Soklen er allerede lukket" -#: ../gio/gsocket.c:296 ../gio/gsocket.c:3618 ../gio/gsocket.c:3673 +#: ../gio/gsocket.c:394 ../gio/gsocket.c:2751 ../gio/gsocket.c:3896 +#: ../gio/gsocket.c:3951 msgid "Socket I/O timed out" msgstr "Tidsudløb for sokkel-I/O" -#: ../gio/gsocket.c:443 +#: ../gio/gsocket.c:526 #, c-format msgid "creating GSocket from fd: %s" msgstr "opretter GSocket fra fd: %s" -#: ../gio/gsocket.c:471 ../gio/gsocket.c:525 ../gio/gsocket.c:532 +#: ../gio/gsocket.c:554 ../gio/gsocket.c:608 ../gio/gsocket.c:615 #, c-format msgid "Unable to create socket: %s" msgstr "Kan ikke oprette sokkel: %s" -#: ../gio/gsocket.c:525 +#: ../gio/gsocket.c:608 msgid "Unknown family was specified" msgstr "Der blev angivet en ukendt familie" -#: ../gio/gsocket.c:532 +#: ../gio/gsocket.c:615 msgid "Unknown protocol was specified" msgstr "Der blev angivet en ukendt protokol" -#: ../gio/gsocket.c:1722 +#: ../gio/gsocket.c:1104 +#, c-format +msgid "Cannot use datagram operations on a non-datagram socket." +msgstr "Kan ikke bruge datagramoperationer pÃ¥ en ikke-datagram-sokkel." + +#: ../gio/gsocket.c:1121 +#, c-format +msgid "Cannot use datagram operations on a socket with a timeout set." +msgstr "Kan ikke bruge datagramoperationer pÃ¥ en sokkel med angivet udløbstid." + +#: ../gio/gsocket.c:1925 #, c-format msgid "could not get local address: %s" msgstr "kunne ikke finde lokal adresse: %s" -#: ../gio/gsocket.c:1765 +#: ../gio/gsocket.c:1968 #, c-format msgid "could not get remote address: %s" msgstr "kunne ikke finde fjern adresse: %s" -#: ../gio/gsocket.c:1826 +#: ../gio/gsocket.c:2034 #, c-format msgid "could not listen: %s" msgstr "kunne ikke lytte: %s" -#: ../gio/gsocket.c:1925 +#: ../gio/gsocket.c:2133 #, c-format msgid "Error binding to address: %s" msgstr "Fejl ved binding til adresse: %s" -#: ../gio/gsocket.c:2037 ../gio/gsocket.c:2074 +#: ../gio/gsocket.c:2248 ../gio/gsocket.c:2285 #, c-format msgid "Error joining multicast group: %s" msgstr "Fejl ved deltagelse i multicastgruppe: %s" -#: ../gio/gsocket.c:2038 ../gio/gsocket.c:2075 +#: ../gio/gsocket.c:2249 ../gio/gsocket.c:2286 #, c-format msgid "Error leaving multicast group: %s" msgstr "Fejl ved fratræden fra multicastgruppe: %s" -#: ../gio/gsocket.c:2039 +#: ../gio/gsocket.c:2250 msgid "No support for source-specific multicast" msgstr "Ingen understøttelse for kildespecifik multicast" -#: ../gio/gsocket.c:2261 +#: ../gio/gsocket.c:2470 #, c-format msgid "Error accepting connection: %s" msgstr "Fejl ved accept af forbindelse: %s" -#: ../gio/gsocket.c:2382 +#: ../gio/gsocket.c:2593 msgid "Connection in progress" msgstr "Forbinder" -#: ../gio/gsocket.c:2432 +#: ../gio/gsocket.c:2644 msgid "Unable to get pending error: " msgstr "Kan ikke hente verserende fejl: " -#: ../gio/gsocket.c:2633 +#: ../gio/gsocket.c:2816 #, c-format msgid "Error receiving data: %s" msgstr "Fejl ved modtagelse af data: %s" -#: ../gio/gsocket.c:2811 +#: ../gio/gsocket.c:3013 #, c-format msgid "Error sending data: %s" msgstr "Fejl ved afsendelse af data: %s" -#: ../gio/gsocket.c:2925 +#: ../gio/gsocket.c:3200 #, c-format msgid "Unable to shutdown socket: %s" msgstr "Kan ikke nedlukke sokkel: %s" -#: ../gio/gsocket.c:3004 +#: ../gio/gsocket.c:3281 #, c-format msgid "Error closing socket: %s" msgstr "Fejl ved lukning af sokkel: %s" -#: ../gio/gsocket.c:3611 +#: ../gio/gsocket.c:3889 #, c-format msgid "Waiting for socket condition: %s" msgstr "Venter pÃ¥ sokkelbetingelse: %s" -#: ../gio/gsocket.c:3897 ../gio/gsocket.c:3978 +#: ../gio/gsocket.c:4361 ../gio/gsocket.c:4441 ../gio/gsocket.c:4619 #, c-format msgid "Error sending message: %s" msgstr "Fejl ved afsendelse af meddelelse: %s" -#: ../gio/gsocket.c:3922 +#: ../gio/gsocket.c:4385 msgid "GSocketControlMessage not supported on Windows" msgstr "GSocketControlMessage understøttes ikke af Windows" -#: ../gio/gsocket.c:4259 ../gio/gsocket.c:4394 +#: ../gio/gsocket.c:4840 ../gio/gsocket.c:4913 ../gio/gsocket.c:5140 #, c-format msgid "Error receiving message: %s" msgstr "Fejl ved modtagelse af meddelelse: %s" -#: ../gio/gsocket.c:4516 +#: ../gio/gsocket.c:5412 #, c-format msgid "Unable to read socket credentials: %s" msgstr "Kan ikke læse sokkelakkreditiver: %s" -#: ../gio/gsocket.c:4525 +#: ../gio/gsocket.c:5421 msgid "g_socket_get_credentials not implemented for this OS" msgstr "g_socket_get_credentials ikke implementeret pÃ¥ dette operativsystem" @@ -2804,25 +2877,25 @@ msgstr "Kunne ikke forbinde til %s: " msgid "Could not connect: " msgstr "Kunne ikke forbinde: " -#: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1603 +#: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1599 msgid "Unknown error on connect" msgstr "Ukendt forbindelsesfejl" -#: ../gio/gsocketclient.c:1082 ../gio/gsocketclient.c:1538 +#: ../gio/gsocketclient.c:1081 ../gio/gsocketclient.c:1535 msgid "Proxying over a non-TCP connection is not supported." msgstr "Brug af proxy over ikke-TCP-forbindelse understøttes ikke." -#: ../gio/gsocketclient.c:1108 ../gio/gsocketclient.c:1559 +#: ../gio/gsocketclient.c:1110 ../gio/gsocketclient.c:1561 #, c-format msgid "Proxy protocol '%s' is not supported." msgstr "Proxyprotokollen \"%s\" understøttes ikke." # Relateret til ordlistens "(SMTP )listener -> *(SMTP-)modtager" -#: ../gio/gsocketlistener.c:188 +#: ../gio/gsocketlistener.c:218 msgid "Listener is already closed" msgstr "Modtager er allerede lukket" -#: ../gio/gsocketlistener.c:234 +#: ../gio/gsocketlistener.c:264 msgid "Added socket is closed" msgstr "Tilføjede sokkel er lukket" @@ -2943,23 +3016,23 @@ msgstr "Midlertidigt ude af stand til at opløse \"%s\"" msgid "Error resolving '%s'" msgstr "Fejl ved opløsning af \"%s\"" -#: ../gio/gtlscertificate.c:247 +#: ../gio/gtlscertificate.c:250 msgid "Cannot decrypt PEM-encoded private key" msgstr "Kan ikke dekryptere PEM-kodet privat nøgle" -#: ../gio/gtlscertificate.c:252 +#: ../gio/gtlscertificate.c:255 msgid "No PEM-encoded private key found" msgstr "Intet privat, PEM-kodet nøgle fundet" -#: ../gio/gtlscertificate.c:262 +#: ../gio/gtlscertificate.c:265 msgid "Could not parse PEM-encoded private key" msgstr "Kunne ikke fortolke PEM-kodet privat nøgle" -#: ../gio/gtlscertificate.c:287 +#: ../gio/gtlscertificate.c:290 msgid "No PEM-encoded certificate found" msgstr "Intet PEM-kodet certifikat fundet" -#: ../gio/gtlscertificate.c:296 +#: ../gio/gtlscertificate.c:299 msgid "Could not parse PEM-encoded certificate" msgstr "Kunne ikke fortolke PEM-kodet certifikat" @@ -2983,80 +3056,81 @@ msgstr "" msgid "The password entered is incorrect." msgstr "Den indtastede adgangskode er forkert." -#: ../gio/gunixconnection.c:159 ../gio/gunixconnection.c:554 +#: ../gio/gunixconnection.c:166 ../gio/gunixconnection.c:561 #, c-format msgid "Expecting 1 control message, got %d" msgid_plural "Expecting 1 control message, got %d" msgstr[0] "Forventede én kontrolmeddelelse, men fik %d" msgstr[1] "Forventede én kontrolmeddelelse, men fik %d" -#: ../gio/gunixconnection.c:175 ../gio/gunixconnection.c:566 +#: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:573 msgid "Unexpected type of ancillary data" msgstr "Uventet type af supplerende data" -#: ../gio/gunixconnection.c:193 +#: ../gio/gunixconnection.c:200 #, c-format msgid "Expecting one fd, but got %d\n" msgid_plural "Expecting one fd, but got %d\n" msgstr[0] "Forventede én fd, men fik %d\n" msgstr[1] "Forventede én fd, men fik %d\n" -#: ../gio/gunixconnection.c:212 +#: ../gio/gunixconnection.c:219 msgid "Received invalid fd" msgstr "Modtog ugyldig fd" -#: ../gio/gunixconnection.c:348 +#: ../gio/gunixconnection.c:355 msgid "Error sending credentials: " msgstr "Fejl ved afsendelse af akkreditiver: " -#: ../gio/gunixconnection.c:496 +#: ../gio/gunixconnection.c:503 #, c-format msgid "Error checking if SO_PASSCRED is enabled for socket: %s" msgstr "Fejl ved kontrol af om SO_PASSCRED er slÃ¥et til for sokkel: %s" -#: ../gio/gunixconnection.c:511 +#: ../gio/gunixconnection.c:518 #, c-format msgid "Error enabling SO_PASSCRED: %s" msgstr "Fejl ved aktivering af SO_PASSCRED: %s" -#: ../gio/gunixconnection.c:540 +#: ../gio/gunixconnection.c:547 msgid "" "Expecting to read a single byte for receiving credentials but read zero bytes" msgstr "" "Forventede at læse en enkelt byte for at modtage akkreditiver, men læste nul " "byte" -#: ../gio/gunixconnection.c:580 +#: ../gio/gunixconnection.c:587 #, c-format msgid "Not expecting control message, but got %d" msgstr "Forventer ikke kontrolmeddelelse, men modtog %d" -#: ../gio/gunixconnection.c:604 +#: ../gio/gunixconnection.c:611 #, c-format msgid "Error while disabling SO_PASSCRED: %s" msgstr "Fejl ved deaktiverering af SO_PASSCRED: %s" -#: ../gio/gunixinputstream.c:370 ../gio/gunixinputstream.c:391 +#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390 #, c-format msgid "Error reading from file descriptor: %s" msgstr "Fejl ved læsning fra fildeskriptor: %s" -#: ../gio/gunixinputstream.c:424 ../gio/gunixoutputstream.c:410 +#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409 +#: ../gio/gwin32inputstream.c:217 ../gio/gwin32outputstream.c:204 #, c-format msgid "Error closing file descriptor: %s" msgstr "Fejl ved lukning af fildeskriptor: %s" -#: ../gio/gunixmounts.c:2054 ../gio/gunixmounts.c:2107 +#: ../gio/gunixmounts.c:2099 ../gio/gunixmounts.c:2152 msgid "Filesystem root" msgstr "Filsystemets rod" -#: ../gio/gunixoutputstream.c:356 ../gio/gunixoutputstream.c:377 +#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376 #, c-format msgid "Error writing to file descriptor: %s" msgstr "Fejl under skrivning til fildeskriptor: %s" # "[abstract unix domain]-socket address" eller "abstract [unix domain socket] address", eller en anden kombination? Vi mÃ¥ hellere bibeholde ordenes rækkefølge pÃ¥ bekostning af at ordet bliver meget langt -#: ../gio/gunixsocketaddress.c:232 +#: ../gio/gunixsocketaddress.c:239 msgid "Abstract UNIX domain socket addresses not supported on this system" msgstr "Abstrakte UNIX-domænesokkeladresser understøttes ikke af dette system" @@ -3072,38 +3146,17 @@ msgstr "diskenhed implementerer ikke eject" msgid "volume doesn't implement eject or eject_with_operation" msgstr "diskenhed implementerer ikke eject eller eject_with_operation" -#: ../gio/gwin32appinfo.c:274 -msgid "Can't find application" -msgstr "Kan ikke finde program" - -#: ../gio/gwin32appinfo.c:306 -#, c-format -msgid "Error launching application: %s" -msgstr "Fejl ved opstart af program: %s" - -#: ../gio/gwin32appinfo.c:342 -msgid "URIs not supported" -msgstr "URI'er understøttes ikke" - -#: ../gio/gwin32appinfo.c:364 -msgid "association changes not supported on win32" -msgstr "associationsændring understøttes ikke af win32" - -#: ../gio/gwin32appinfo.c:376 -msgid "Association creation not supported on win32" -msgstr "Associationsoprettelse understøttes ikke i win32" - -#: ../gio/gwin32inputstream.c:344 +#: ../gio/gwin32inputstream.c:185 #, c-format msgid "Error reading from handle: %s" msgstr "Fejl ved læsning fra hÃ¥ndtag: %s" -#: ../gio/gwin32inputstream.c:388 ../gio/gwin32outputstream.c:375 +#: ../gio/gwin32inputstream.c:232 ../gio/gwin32outputstream.c:219 #, c-format msgid "Error closing handle: %s" msgstr "Fejl ved lukning af hÃ¥ndtag: %s" -#: ../gio/gwin32outputstream.c:331 +#: ../gio/gwin32outputstream.c:172 #, c-format msgid "Error writing to handle: %s" msgstr "Fejl under skrivning til hÃ¥ndtag: %s" @@ -3220,8 +3273,8 @@ msgstr "Intet program med navnet \"%s\" har registreret et bogmærke for \"%s\"" msgid "Failed to expand exec line '%s' with URI '%s'" msgstr "Kunne ikke udvide eksekveringslinjen \"%s\" med URI'en \"%s\"" -#: ../glib/gconvert.c:477 ../glib/gutf8.c:833 ../glib/gutf8.c:1044 -#: ../glib/gutf8.c:1181 ../glib/gutf8.c:1285 +#: ../glib/gconvert.c:477 ../glib/gutf8.c:849 ../glib/gutf8.c:1061 +#: ../glib/gutf8.c:1198 ../glib/gutf8.c:1302 msgid "Partial character sequence at end of input" msgstr "Delvis tegnsekvens ved slutningen af inddata" @@ -3230,37 +3283,37 @@ msgstr "Delvis tegnsekvens ved slutningen af inddata" msgid "Cannot convert fallback '%s' to codeset '%s'" msgstr "Kan ikke konvertere tilbagefaldet \"%s\" til tegnsæt \"%s\"" -#: ../glib/gconvert.c:1566 +#: ../glib/gconvert.c:1567 #, c-format msgid "The URI '%s' is not an absolute URI using the \"file\" scheme" msgstr "URI'en \"%s\" er ikke en absolut URI, ved brug af \"fil\"-metoden" -#: ../glib/gconvert.c:1576 +#: ../glib/gconvert.c:1577 #, c-format msgid "The local file URI '%s' may not include a '#'" msgstr "Den lokale fil-URI \"%s\" mÃ¥ ikke indeholde en \"#\"" -#: ../glib/gconvert.c:1593 +#: ../glib/gconvert.c:1594 #, c-format msgid "The URI '%s' is invalid" msgstr "URI'en \"%s\" er ugyldig" -#: ../glib/gconvert.c:1605 +#: ../glib/gconvert.c:1606 #, c-format msgid "The hostname of the URI '%s' is invalid" msgstr "Værtsnavnet for URI'en \"%s\" er ugyldig" -#: ../glib/gconvert.c:1621 +#: ../glib/gconvert.c:1622 #, c-format msgid "The URI '%s' contains invalidly escaped characters" msgstr "URI'en \"%s\" indeholder ugyldigt beskyttede tegn" -#: ../glib/gconvert.c:1716 +#: ../glib/gconvert.c:1717 #, c-format msgid "The pathname '%s' is not an absolute path" msgstr "Stinavnet \"%s\" er ikke en absolut sti" -#: ../glib/gconvert.c:1726 +#: ../glib/gconvert.c:1727 msgid "Invalid hostname" msgstr "Ugyldigt værtsnavn" @@ -3578,37 +3631,37 @@ msgstr "Kunne ikke læse den symbolske henvisning \"%s\": %s" msgid "Symbolic links not supported" msgstr "Symbolske henvisninger er ikke understøttet" -#: ../glib/giochannel.c:1389 +#: ../glib/giochannel.c:1388 #, c-format msgid "Could not open converter from '%s' to '%s': %s" msgstr "Kunne ikke Ã¥bne konverterer fra \"%s\" til \"%s\": %s" -#: ../glib/giochannel.c:1734 +#: ../glib/giochannel.c:1733 msgid "Can't do a raw read in g_io_channel_read_line_string" msgstr "Kan ikke foretage en rÃ¥ læsning i g_io_channel_read_line_string" -#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039 -#: ../glib/giochannel.c:2126 +#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038 +#: ../glib/giochannel.c:2125 msgid "Leftover unconverted data in read buffer" msgstr "Resterende ukonverterede data i læsemellemlager" -#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939 +#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938 msgid "Channel terminates in a partial character" msgstr "Kanal afslutter med et ufuldendt tegn" -#: ../glib/giochannel.c:1925 +#: ../glib/giochannel.c:1924 msgid "Can't do a raw read in g_io_channel_read_to_end" msgstr "Kan ikke foretage en rÃ¥ læsning i g_io_channel_read_to_end" -#: ../glib/gkeyfile.c:719 +#: ../glib/gkeyfile.c:737 msgid "Valid key file could not be found in search dirs" msgstr "Gyldig nøglefil blev ikke fundet i søgekatalogerne" -#: ../glib/gkeyfile.c:755 +#: ../glib/gkeyfile.c:773 msgid "Not a regular file" msgstr "Ikke en almindelig fil" -#: ../glib/gkeyfile.c:1155 +#: ../glib/gkeyfile.c:1173 #, c-format msgid "" "Key file contains line '%s' which is not a key-value pair, group, or comment" @@ -3616,44 +3669,44 @@ msgstr "" "Nøglefilen indeholder linjen \"%s\" hvilken ikke er et nøgle-værdi-par, en " "gruppe eller en kommentar" -#: ../glib/gkeyfile.c:1212 +#: ../glib/gkeyfile.c:1230 #, c-format msgid "Invalid group name: %s" msgstr "Ugyldigt gruppenavn: %s" -#: ../glib/gkeyfile.c:1234 +#: ../glib/gkeyfile.c:1252 msgid "Key file does not start with a group" msgstr "Nøglefilen starter ikke med en gruppe" -#: ../glib/gkeyfile.c:1260 +#: ../glib/gkeyfile.c:1278 #, c-format msgid "Invalid key name: %s" msgstr "Ugyldigt nøglenavn: %s" -#: ../glib/gkeyfile.c:1287 +#: ../glib/gkeyfile.c:1305 #, c-format msgid "Key file contains unsupported encoding '%s'" msgstr "Nøglefilen indeholder kodningen \"%s\", der ikke understøttes" -#: ../glib/gkeyfile.c:1530 ../glib/gkeyfile.c:1692 ../glib/gkeyfile.c:3072 -#: ../glib/gkeyfile.c:3138 ../glib/gkeyfile.c:3264 ../glib/gkeyfile.c:3397 -#: ../glib/gkeyfile.c:3539 ../glib/gkeyfile.c:3768 ../glib/gkeyfile.c:3835 +#: ../glib/gkeyfile.c:1548 ../glib/gkeyfile.c:1721 ../glib/gkeyfile.c:3099 +#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3292 ../glib/gkeyfile.c:3422 +#: ../glib/gkeyfile.c:3566 ../glib/gkeyfile.c:3795 ../glib/gkeyfile.c:3862 #, c-format msgid "Key file does not have group '%s'" msgstr "Nøglefilen indeholder ikke gruppen \"%s\"" -#: ../glib/gkeyfile.c:1704 +#: ../glib/gkeyfile.c:1676 #, c-format -msgid "Key file does not have key '%s'" -msgstr "Nøglefilen indeholder ikke nøglen \"%s\"" +msgid "Key file does not have key '%s' in group '%s'" +msgstr "Nøglefilen har ikke nøglen \"%s\" i gruppen \"%s\"" -#: ../glib/gkeyfile.c:1811 ../glib/gkeyfile.c:1927 +#: ../glib/gkeyfile.c:1838 ../glib/gkeyfile.c:1954 #, c-format msgid "Key file contains key '%s' with value '%s' which is not UTF-8" msgstr "" "Nøglefilen indeholder nøglen \"%s\" med værdien \"%s\" der ikke er UTF-8" -#: ../glib/gkeyfile.c:1831 ../glib/gkeyfile.c:1947 ../glib/gkeyfile.c:2316 +#: ../glib/gkeyfile.c:1858 ../glib/gkeyfile.c:1974 ../glib/gkeyfile.c:2343 #, c-format msgid "" "Key file contains key '%s' which has a value that cannot be interpreted." @@ -3661,7 +3714,7 @@ msgstr "" "Nøglefilen indeholder nøglen \"%s\", som har en værdi, der ikke kan " "fortolkes." -#: ../glib/gkeyfile.c:2533 ../glib/gkeyfile.c:2901 +#: ../glib/gkeyfile.c:2560 ../glib/gkeyfile.c:2928 #, c-format msgid "" "Key file contains key '%s' in group '%s' which has a value that cannot be " @@ -3670,42 +3723,37 @@ msgstr "" "Nøglefilen indeholder nøglen \"%s\" i gruppen \"%s\", som har en værdi der " "ikke kan fortolkes." -#: ../glib/gkeyfile.c:2611 ../glib/gkeyfile.c:2688 +#: ../glib/gkeyfile.c:2638 ../glib/gkeyfile.c:2715 #, c-format msgid "Key '%s' in group '%s' has value '%s' where %s was expected" msgstr "" "Nøglen \"%s\" i gruppen \"%s\" har værdien \"%s\", mens %s blev forventet" -#: ../glib/gkeyfile.c:3087 ../glib/gkeyfile.c:3279 ../glib/gkeyfile.c:3846 -#, c-format -msgid "Key file does not have key '%s' in group '%s'" -msgstr "Nøglefilen har ikke nøglen \"%s\" i gruppen \"%s\"" - -#: ../glib/gkeyfile.c:4078 +#: ../glib/gkeyfile.c:4102 msgid "Key file contains escape character at end of line" msgstr "Nøglefilen indeholder beskyttede tegn for enden af linjen" -#: ../glib/gkeyfile.c:4100 +#: ../glib/gkeyfile.c:4124 #, c-format msgid "Key file contains invalid escape sequence '%s'" msgstr "Nøglefilen indeholder en ugyldig undvigesekvens \"%s\"" -#: ../glib/gkeyfile.c:4242 +#: ../glib/gkeyfile.c:4266 #, c-format msgid "Value '%s' cannot be interpreted as a number." msgstr "Værdien \"%s\" kan ikke fortolkes som et nummer." -#: ../glib/gkeyfile.c:4256 +#: ../glib/gkeyfile.c:4280 #, c-format msgid "Integer value '%s' out of range" msgstr "Heltalsværdien \"%s\" er ikke i gyldigt interval" -#: ../glib/gkeyfile.c:4289 +#: ../glib/gkeyfile.c:4313 #, c-format msgid "Value '%s' cannot be interpreted as a float number." msgstr "Værdien \"%s\" kan ikke fortolkes som en float." -#: ../glib/gkeyfile.c:4313 +#: ../glib/gkeyfile.c:4350 #, c-format msgid "Value '%s' cannot be interpreted as a boolean." msgstr "Værdien \"%s\" kan ikke fortolkes som en sandhedsværdi." @@ -3751,7 +3799,7 @@ msgstr "\"%s\" er ikke et gyldigt navn: \"%c\"" msgid "Error on line %d: %s" msgstr "Fejl pÃ¥ linje %d: %s" -#: ../glib/gmarkup.c:683 +#: ../glib/gmarkup.c:676 #, c-format msgid "" "Failed to parse '%-.*s', which should have been a digit inside a character " @@ -3760,7 +3808,7 @@ msgstr "" "Fejl ved fortolkning af \"%-.*s\" som skulle have været et ciffer i en " "tegnreference (ê for eksempel) - mÃ¥ske er cifret for stort" -#: ../glib/gmarkup.c:695 +#: ../glib/gmarkup.c:688 msgid "" "Character reference did not end with a semicolon; most likely you used an " "ampersand character without intending to start an entity - escape ampersand " @@ -3770,24 +3818,24 @@ msgstr "" "og-tegn uden at det var beregnet pÃ¥ at starte en entitet - undgÃ¥ dette ved " "at bruge & i stedet" -#: ../glib/gmarkup.c:721 +#: ../glib/gmarkup.c:714 #, c-format msgid "Character reference '%-.*s' does not encode a permitted character" msgstr "Tegnreferencen \"%-.*s\" koder ikke et tilladt tegn" -#: ../glib/gmarkup.c:759 +#: ../glib/gmarkup.c:752 msgid "" "Empty entity '&;' seen; valid entities are: & " < > '" msgstr "" "Tom entitet \"&;\" fundet; gyldige entiteter er: & " < > " "'" -#: ../glib/gmarkup.c:767 +#: ../glib/gmarkup.c:760 #, c-format msgid "Entity name '%-.*s' is not known" msgstr "Entitetsnavnet \"%-.*s\" er ukendt" -#: ../glib/gmarkup.c:772 +#: ../glib/gmarkup.c:765 msgid "" "Entity did not end with a semicolon; most likely you used an ampersand " "character without intending to start an entity - escape ampersand as &" @@ -3796,11 +3844,11 @@ msgstr "" "tegn uden at det var beregnet pÃ¥ at starte en entitet - dette undgÃ¥s ved at " "bruge & i stedet" -#: ../glib/gmarkup.c:1178 +#: ../glib/gmarkup.c:1171 msgid "Document must begin with an element (e.g. )" msgstr "Dokumentet skal begynde med et element (f.eks )" -#: ../glib/gmarkup.c:1218 +#: ../glib/gmarkup.c:1211 #, c-format msgid "" "'%s' is not a valid character following a '<' character; it may not begin an " @@ -3809,7 +3857,7 @@ msgstr "" "\"%s\" er ikke et gyldigt tegn efter et \"<\"-tegn; det kan ikke være " "begyndelsen pÃ¥ et elementnavn" -#: ../glib/gmarkup.c:1260 +#: ../glib/gmarkup.c:1253 #, c-format msgid "" "Odd character '%s', expected a '>' character to end the empty-element tag " @@ -3818,7 +3866,7 @@ msgstr "" "Mærkeligt tegn \"%s\", forventede et \">\"-tegn for at afslutte det tomme " "elementmærke \"%s\"" -#: ../glib/gmarkup.c:1341 +#: ../glib/gmarkup.c:1334 #, c-format msgid "" "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" @@ -3826,7 +3874,7 @@ msgstr "" "Mærkeligt tegn \"%s\", forventede et \"=\" efter attributnavn \"%s\" for " "elementet \"%s\"" -#: ../glib/gmarkup.c:1382 +#: ../glib/gmarkup.c:1375 #, c-format msgid "" "Odd character '%s', expected a '>' or '/' character to end the start tag of " @@ -3837,7 +3885,7 @@ msgstr "" "begyndelsesmærket til elementet \"%s\" eller alternativt en attribut; mÃ¥ske " "brugte du et ugyldigt tegn i attributnavnet" -#: ../glib/gmarkup.c:1426 +#: ../glib/gmarkup.c:1419 #, c-format msgid "" "Odd character '%s', expected an open quote mark after the equals sign when " @@ -3847,7 +3895,7 @@ msgstr "" "lighedstegnet nÃ¥r værdien for egenskaben \"%s\" for attributten \"%s\" " "angives" -#: ../glib/gmarkup.c:1559 +#: ../glib/gmarkup.c:1552 #, c-format msgid "" "'%s' is not a valid character following the characters '\"" -#: ../glib/gmarkup.c:1606 +#: ../glib/gmarkup.c:1599 #, c-format msgid "Element '%s' was closed, no element is currently open" msgstr "Element \"%s\" blev lukket, ingen Ã¥bne elementer nu" -#: ../glib/gmarkup.c:1615 +#: ../glib/gmarkup.c:1608 #, c-format msgid "Element '%s' was closed, but the currently open element is '%s'" msgstr "Element \"%s\" blev lukket, men aktivt Ã¥bent element er \"%s\"" -#: ../glib/gmarkup.c:1768 +#: ../glib/gmarkup.c:1761 msgid "Document was empty or contained only whitespace" msgstr "Dokumentet var tomt eller indeholdt kun blanke tegn" -#: ../glib/gmarkup.c:1782 +#: ../glib/gmarkup.c:1775 msgid "Document ended unexpectedly just after an open angle bracket '<'" msgstr "Dokumentet sluttede uventet lige efter en Ã¥ben vinkelparantes \"<\"" -#: ../glib/gmarkup.c:1790 ../glib/gmarkup.c:1835 +#: ../glib/gmarkup.c:1783 ../glib/gmarkup.c:1828 #, c-format msgid "" "Document ended unexpectedly with elements still open - '%s' was the last " @@ -3892,7 +3940,7 @@ msgstr "" "Dokumentet sluttede uventet med Ã¥bne elementer - \"%s\" var sidste Ã¥bne " "element" -#: ../glib/gmarkup.c:1798 +#: ../glib/gmarkup.c:1791 #, c-format msgid "" "Document ended unexpectedly, expected to see a close angle bracket ending " @@ -3901,19 +3949,19 @@ msgstr "" "Dokumentet sluttede uventet, forventede at se en vinkelparantes for at " "afslutte det sidste mærke <%s/>" -#: ../glib/gmarkup.c:1804 +#: ../glib/gmarkup.c:1797 msgid "Document ended unexpectedly inside an element name" msgstr "Dokumentet sluttede uventet inden i et elementnavn" -#: ../glib/gmarkup.c:1810 +#: ../glib/gmarkup.c:1803 msgid "Document ended unexpectedly inside an attribute name" msgstr "Dokumentet sluttede uventet inden i et attributnavn" -#: ../glib/gmarkup.c:1815 +#: ../glib/gmarkup.c:1808 msgid "Document ended unexpectedly inside an element-opening tag." msgstr "Dokumentet sluttede uventet inden i et element-Ã¥bnende mærke." -#: ../glib/gmarkup.c:1821 +#: ../glib/gmarkup.c:1814 msgid "" "Document ended unexpectedly after the equals sign following an attribute " "name; no attribute value" @@ -3921,79 +3969,83 @@ msgstr "" "Dokumentet sluttede uventet efter lighedstegnet efter et attributnavn; ingen " "attributværdi" -#: ../glib/gmarkup.c:1828 +#: ../glib/gmarkup.c:1821 msgid "Document ended unexpectedly while inside an attribute value" msgstr "Dokumentet sluttede uventet inden i en attributværdi" -#: ../glib/gmarkup.c:1844 +#: ../glib/gmarkup.c:1837 #, c-format msgid "Document ended unexpectedly inside the close tag for element '%s'" msgstr "" "Dokumentet sluttede uventet inden i lukningsmærket for elementet \"%s\"" -#: ../glib/gmarkup.c:1850 +#: ../glib/gmarkup.c:1843 msgid "Document ended unexpectedly inside a comment or processing instruction" msgstr "" "Dokumentet sluttede uventet inden i en kommentar eller behandlingsinstruktion" -#: ../glib/goption.c:795 +#: ../glib/goption.c:857 msgid "Usage:" msgstr "Brug:" -#: ../glib/goption.c:795 +#: ../glib/goption.c:861 msgid "[OPTION...]" msgstr "[TILVALG...]" -#: ../glib/goption.c:911 +#: ../glib/goption.c:977 msgid "Help Options:" -msgstr "Flag for hjælp:" +msgstr "Tilvalg til hjælp:" -#: ../glib/goption.c:912 +#: ../glib/goption.c:978 msgid "Show help options" -msgstr "Vis flag for hjælp" +msgstr "Vis tilvalg for hjælp" -#: ../glib/goption.c:918 +#: ../glib/goption.c:984 msgid "Show all help options" -msgstr "Vis alle flag for hjælp" +msgstr "Vis alle tilvalg for hjælp" -#: ../glib/goption.c:980 +#: ../glib/goption.c:1047 msgid "Application Options:" -msgstr "Flag for programmet:" +msgstr "Tilvalg for programmet:" -#: ../glib/goption.c:1044 ../glib/goption.c:1114 +#: ../glib/goption.c:1049 +msgid "Options:" +msgstr "Tilvalg:" + +#: ../glib/goption.c:1113 ../glib/goption.c:1183 #, c-format msgid "Cannot parse integer value '%s' for %s" msgstr "Kan ikke fortolke heltalsværdien \"%s\" for %s" -#: ../glib/goption.c:1054 ../glib/goption.c:1122 +#: ../glib/goption.c:1123 ../glib/goption.c:1191 #, c-format msgid "Integer value '%s' for %s out of range" msgstr "Heltalsværdien \"%s\" for %s er ikke i gyldigt interval" -#: ../glib/goption.c:1079 +#: ../glib/goption.c:1148 #, c-format msgid "Cannot parse double value '%s' for %s" msgstr "Kan ikke fortolke double-værdien \"%s\" for %s" -#: ../glib/goption.c:1087 +#: ../glib/goption.c:1156 #, c-format msgid "Double value '%s' for %s out of range" msgstr "Double-værdien \"%s\" for %s er ikke i gyldigt interval" -#: ../glib/goption.c:1373 ../glib/goption.c:1452 +#: ../glib/goption.c:1442 ../glib/goption.c:1521 #, c-format msgid "Error parsing option %s" msgstr "Kunne ikke fortolke tilvalg %s" -#: ../glib/goption.c:1483 ../glib/goption.c:1596 +#: ../glib/goption.c:1552 ../glib/goption.c:1665 #, c-format msgid "Missing argument for %s" msgstr "Mangler argument for %s" -#: ../glib/goption.c:2057 +#: ../glib/goption.c:2126 #, c-format msgid "Unknown option %s" -msgstr "Ukendt flag %s" +msgstr "Ukendt tilvalg %s" #: ../glib/gregex.c:258 msgid "corrupted object" @@ -4298,70 +4350,70 @@ msgstr "navn er for langt i (*MARK), (*PRUNE), (*SKIP) eller (*THEN)" msgid "character value in \\u.... sequence is too large" msgstr "tegnværdi i \\u...-sekvens er for stor" -#: ../glib/gregex.c:746 ../glib/gregex.c:1915 +#: ../glib/gregex.c:746 ../glib/gregex.c:1973 #, c-format msgid "Error while matching regular expression %s: %s" msgstr "Fejl under søgning med det regulære udtryk %s: %s" -#: ../glib/gregex.c:1312 +#: ../glib/gregex.c:1317 msgid "PCRE library is compiled without UTF8 support" msgstr "PCRE-biblioteket er kompileret uden UTF8-understøttelse" -#: ../glib/gregex.c:1316 +#: ../glib/gregex.c:1321 msgid "PCRE library is compiled without UTF8 properties support" msgstr "PCRE-biblioteket er kompileret uden understøttelse af UTF8-egenskaber" -#: ../glib/gregex.c:1324 +#: ../glib/gregex.c:1329 msgid "PCRE library is compiled with incompatible options" msgstr "PCRE-biblioteket er kompileret med inkompatible indstillinger" -#: ../glib/gregex.c:1383 -#, c-format -msgid "Error while compiling regular expression %s at char %d: %s" -msgstr "Fejl under kompilering af det regulære udtryk %s ved tegn %d: %s" - -#: ../glib/gregex.c:1425 +#: ../glib/gregex.c:1358 #, c-format msgid "Error while optimizing regular expression %s: %s" msgstr "Fejl under optimering af det regulære udtryk %s: %s" -#: ../glib/gregex.c:2347 +#: ../glib/gregex.c:1438 +#, c-format +msgid "Error while compiling regular expression %s at char %d: %s" +msgstr "Fejl under kompilering af det regulære udtryk %s ved tegn %d: %s" + +#: ../glib/gregex.c:2409 msgid "hexadecimal digit or '}' expected" msgstr "hexadecimalt ciffer eller \"}\" forventet" -#: ../glib/gregex.c:2363 +#: ../glib/gregex.c:2425 msgid "hexadecimal digit expected" msgstr "hexadecimalt ciffer forventet" -#: ../glib/gregex.c:2403 +#: ../glib/gregex.c:2465 msgid "missing '<' in symbolic reference" msgstr "manglende \"<\" i symbolsk reference" -#: ../glib/gregex.c:2412 +#: ../glib/gregex.c:2474 msgid "unfinished symbolic reference" msgstr "ufærdig symbolsk reference" -#: ../glib/gregex.c:2419 +#: ../glib/gregex.c:2481 msgid "zero-length symbolic reference" msgstr "symbolsk reference med længde nul" -#: ../glib/gregex.c:2430 +#: ../glib/gregex.c:2492 msgid "digit expected" msgstr "ciffer forventet" -#: ../glib/gregex.c:2448 +#: ../glib/gregex.c:2510 msgid "illegal symbolic reference" msgstr "ugyldig symbolsk reference" -#: ../glib/gregex.c:2510 +#: ../glib/gregex.c:2572 msgid "stray final '\\'" msgstr "løst afsluttende \"\\\"" -#: ../glib/gregex.c:2514 +#: ../glib/gregex.c:2576 msgid "unknown escape sequence" msgstr "ukendt undvigesekvens" -#: ../glib/gregex.c:2524 +#: ../glib/gregex.c:2586 #, c-format msgid "Error while parsing replacement text \"%s\" at char %lu: %s" msgstr "Fejl under fortolkning af erstatningstekst \"%s\" ved tegn %lu: %s" @@ -4406,62 +4458,62 @@ msgstr "Uventet fejl i select() ved læsning af data fra underprocess (%s)" msgid "Unexpected error in waitpid() (%s)" msgstr "Uventet fejl i waitpid() (%s)" -#: ../glib/gspawn.c:849 ../glib/gspawn-win32.c:1233 +#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233 #, c-format msgid "Child process exited with code %ld" msgstr "Underproces afsluttede med kode %ld" -#: ../glib/gspawn.c:857 +#: ../glib/gspawn.c:852 #, c-format msgid "Child process killed by signal %ld" msgstr "Underproces dræbt med signal %ld" -#: ../glib/gspawn.c:864 +#: ../glib/gspawn.c:859 #, c-format msgid "Child process stopped by signal %ld" msgstr "Underproces stoppet med signal %ld" -#: ../glib/gspawn.c:871 +#: ../glib/gspawn.c:866 #, c-format msgid "Child process exited abnormally" msgstr "Underproces afsluttede fejlagtigt" -#: ../glib/gspawn.c:1276 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 +#: ../glib/gspawn.c:1271 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 #, c-format msgid "Failed to read from child pipe (%s)" msgstr "Fejl under læsning fra barnedatakanal (%s)" -#: ../glib/gspawn.c:1346 +#: ../glib/gspawn.c:1341 #, c-format msgid "Failed to fork (%s)" msgstr "Fejl under fraspaltning af proces (%s)" -#: ../glib/gspawn.c:1495 ../glib/gspawn-win32.c:370 +#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370 #, c-format msgid "Failed to change to directory '%s' (%s)" msgstr "Fejl ved skift til mappen \"%s\" (%s)" -#: ../glib/gspawn.c:1505 +#: ../glib/gspawn.c:1500 #, c-format msgid "Failed to execute child process \"%s\" (%s)" msgstr "Fejl under kørsel af underprocessen \"%s\" (%s)" -#: ../glib/gspawn.c:1515 +#: ../glib/gspawn.c:1510 #, c-format msgid "Failed to redirect output or input of child process (%s)" msgstr "Fejl under omdirigering af uddata eller inddata for underprocess (%s)" -#: ../glib/gspawn.c:1524 +#: ../glib/gspawn.c:1519 #, c-format msgid "Failed to fork child process (%s)" msgstr "Fejl ved fraspaltning af underprocess (%s)" -#: ../glib/gspawn.c:1532 +#: ../glib/gspawn.c:1527 #, c-format msgid "Unknown error executing child process \"%s\"" msgstr "Ukendt fejl under kørsel af underprocessen \"%s\"" -#: ../glib/gspawn.c:1556 +#: ../glib/gspawn.c:1551 #, c-format msgid "Failed to read enough data from child pid pipe (%s)" msgstr "" @@ -4516,92 +4568,92 @@ msgstr "" "Uventet fejl i g_io_channel_win32_poll() under læsning af data fra en " "underprocess" -#: ../glib/gutf8.c:780 +#: ../glib/gutf8.c:795 msgid "Failed to allocate memory" msgstr "Kunne ikke tildele hukommelse" -#: ../glib/gutf8.c:912 +#: ../glib/gutf8.c:928 msgid "Character out of range for UTF-8" msgstr "Tegn uden for gyldigt interval for UTF-8" -#: ../glib/gutf8.c:1012 ../glib/gutf8.c:1021 ../glib/gutf8.c:1151 -#: ../glib/gutf8.c:1160 ../glib/gutf8.c:1299 ../glib/gutf8.c:1396 +#: ../glib/gutf8.c:1029 ../glib/gutf8.c:1038 ../glib/gutf8.c:1168 +#: ../glib/gutf8.c:1177 ../glib/gutf8.c:1316 ../glib/gutf8.c:1413 msgid "Invalid sequence in conversion input" msgstr "Ugyldig sekvens i konverteringsinddata" -#: ../glib/gutf8.c:1310 ../glib/gutf8.c:1407 +#: ../glib/gutf8.c:1327 ../glib/gutf8.c:1424 msgid "Character out of range for UTF-16" msgstr "Tegn uden for gyldigt interval for UTF-16" -#: ../glib/gutils.c:2116 ../glib/gutils.c:2143 ../glib/gutils.c:2249 +#: ../glib/gutils.c:2133 ../glib/gutils.c:2160 ../glib/gutils.c:2266 #, c-format msgid "%u byte" msgid_plural "%u bytes" msgstr[0] "%u byte" msgstr[1] "%u bytes" -#: ../glib/gutils.c:2122 +#: ../glib/gutils.c:2139 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" -#: ../glib/gutils.c:2124 +#: ../glib/gutils.c:2141 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" -#: ../glib/gutils.c:2127 +#: ../glib/gutils.c:2144 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" -#: ../glib/gutils.c:2130 +#: ../glib/gutils.c:2147 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" -#: ../glib/gutils.c:2133 +#: ../glib/gutils.c:2150 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" -#: ../glib/gutils.c:2136 +#: ../glib/gutils.c:2153 #, c-format msgid "%.1f EiB" msgstr "%.1f EiB" -#: ../glib/gutils.c:2149 +#: ../glib/gutils.c:2166 #, c-format msgid "%.1f kB" msgstr "%.1f kB" -#: ../glib/gutils.c:2152 ../glib/gutils.c:2267 +#: ../glib/gutils.c:2169 ../glib/gutils.c:2284 #, c-format msgid "%.1f MB" msgstr "%.1f MB" -#: ../glib/gutils.c:2155 ../glib/gutils.c:2272 +#: ../glib/gutils.c:2172 ../glib/gutils.c:2289 #, c-format msgid "%.1f GB" msgstr "%.1f GB" -#: ../glib/gutils.c:2157 ../glib/gutils.c:2277 +#: ../glib/gutils.c:2174 ../glib/gutils.c:2294 #, c-format msgid "%.1f TB" msgstr "%.1f TB" -#: ../glib/gutils.c:2160 ../glib/gutils.c:2282 +#: ../glib/gutils.c:2177 ../glib/gutils.c:2299 #, c-format msgid "%.1f PB" msgstr "%.1f PB" -#: ../glib/gutils.c:2163 ../glib/gutils.c:2287 +#: ../glib/gutils.c:2180 ../glib/gutils.c:2304 #, c-format msgid "%.1f EB" msgstr "%.1f EB" #. Translators: the %s in "%s bytes" will always be replaced by a number. -#: ../glib/gutils.c:2200 +#: ../glib/gutils.c:2217 #, c-format msgid "%s byte" msgid_plural "%s bytes" @@ -4613,11 +4665,32 @@ msgstr[1] "%s bytes" #. * compatibility. Users will not see this string unless a program is using this deprecated function. #. * Please translate as literally as possible. #. -#: ../glib/gutils.c:2262 +#: ../glib/gutils.c:2279 #, c-format msgid "%.1f KB" msgstr "%.1f KB" +#~ msgid "Can't find application" +#~ msgstr "Kan ikke finde program" + +#~ msgid "Error launching application: %s" +#~ msgstr "Fejl ved opstart af program: %s" + +#~ msgid "association changes not supported on win32" +#~ msgstr "associationsændring understøttes ikke af win32" + +#~ msgid "Association creation not supported on win32" +#~ msgstr "Associationsoprettelse understøttes ikke i win32" + +#~ msgid "Unable to find default local directory monitor type" +#~ msgstr "Kan ikke finde standardmonitortype for lokal mappe" + +#~ msgid "URIs not supported" +#~ msgstr "URI'er understøttes ikke" + +#~ msgid "Key file does not have key '%s'" +#~ msgstr "Nøglefilen indeholder ikke nøglen \"%s\"" + #~ msgid "" #~ "Error processing input file with xmllint:\n" #~ "%s" diff --git a/po/de.gmo b/po/de.gmo new file mode 100644 index 0000000000000000000000000000000000000000..b236805c9ec160568b48de971342538147e6abef GIT binary patch literal 104491 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 Nt(YuT1GCJ)`ybVg<%0kK literal 0 HcmV?d00001 diff --git a/po/hu.gmo b/po/hu.gmo new file mode 100644 index 0000000000000000000000000000000000000000..94af1a76b3b4f7e419b7aa32b01eea77ce30a72d GIT binary patch literal 104880 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, 2005. -# Gabor Kelemen , 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014. +# Gabor Kelemen , 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016. # Balázs Úr , 2013, 2014, 2015. msgid "" msgstr "" "Project-Id-Version: glib master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=glib&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2015-03-08 14:39+0000\n" -"PO-Revision-Date: 2015-03-08 18:34+0100\n" -"Last-Translator: Balázs Úr \n" +"POT-Creation-Date: 2016-03-04 07:38+0000\n" +"PO-Revision-Date: 2016-03-04 20:34+0100\n" +"Last-Translator: Gabor Kelemen \n" "Language-Team: Hungarian \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 1.2\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.5\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../gio/gapplication.c:531 -msgid "Enter GApplication service mode (use from D-Bus service files)" -msgstr "" -"Belépés GApplication szolgáltatásmódba (használja D-Bus " -"szolgáltatásfájlokból)" - -#: ../gio/gapplication.c:536 +#: ../gio/gapplication.c:493 msgid "GApplication options" msgstr "GApplication kapcsolói" -#: ../gio/gapplication.c:536 +#: ../gio/gapplication.c:493 msgid "Show GApplication options" msgstr "A GApplication kapcsolóinak megjelenítése" +#: ../gio/gapplication.c:538 +msgid "Enter GApplication service mode (use from D-Bus service files)" +msgstr "" +"Belépés GApplication szolgáltatásmódba (használja D-Bus " +"szolgáltatásfájlokból)" + +#: ../gio/gapplication.c:550 +#| msgid "List applications" +msgid "Override the application's ID" +msgstr "Alkalmazások azonosítójának felülbírálása" + #: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46 -#: ../gio/gresource-tool.c:485 ../gio/gsettings-tool.c:521 +#: ../gio/gresource-tool.c:488 ../gio/gsettings-tool.c:512 msgid "Print help" msgstr "Súgó kiírása" -#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:486 -#: ../gio/gresource-tool.c:554 +#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:489 +#: ../gio/gresource-tool.c:557 msgid "[COMMAND]" msgstr "[PARANCS]" @@ -49,7 +54,7 @@ msgstr "[PARANCS]" msgid "Print version" msgstr "Verzió kiírása" -#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:527 +#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:518 msgid "Print version information and exit" msgstr "Verzióinformációk kiírása és kilépés" @@ -113,14 +118,14 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)" msgstr "Alkalmazásazonosító D-Bus formátumban (például: org.example.viewer)" #: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589 -#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:492 -#: ../gio/gresource-tool.c:558 +#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:495 +#: ../gio/gresource-tool.c:561 msgid "FILE" msgstr "FÁJL" #: ../gio/gapplication-tool.c:72 -msgid "Optional relative or relative filenames, or URIs to open" -msgstr "Megnyitandó, elhagyható relatív fájlnevek vagy URI-k" +msgid "Optional relative or absolute filenames, or URIs to open" +msgstr "Megnyitandó, elhagyható relatív vagy abszolút fájlnevek, illetve URI-k" #: ../gio/gapplication-tool.c:73 msgid "ACTION" @@ -138,8 +143,8 @@ msgstr "PARAMÉTER" msgid "Optional parameter to the action invocation, in GVariant format" msgstr "A művelethívás elhagyható paramétere GVariant formátumban" -#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:523 -#: ../gio/gsettings-tool.c:607 +#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526 +#: ../gio/gsettings-tool.c:598 #, c-format msgid "" "Unknown command %s\n" @@ -152,8 +157,8 @@ msgstr "" msgid "Usage:\n" msgstr "Használat:\n" -#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:548 -#: ../gio/gsettings-tool.c:641 +#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551 +#: ../gio/gsettings-tool.c:632 msgid "Arguments:\n" msgstr "Argumentumok:\n" @@ -255,9 +260,9 @@ msgstr "" "\n" #: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498 -#: ../gio/ginputstream.c:176 ../gio/ginputstream.c:376 -#: ../gio/ginputstream.c:614 ../gio/ginputstream.c:1013 -#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:830 +#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379 +#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1016 +#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834 #: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206 #, c-format msgid "Too large count value passed to %s" @@ -272,8 +277,8 @@ msgstr "Az alap adatfolyam nem támogatja a pozicionálást" msgid "Cannot truncate GBufferedInputStream" msgstr "A GBufferedInputStream nem csonkítható" -#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1202 -#: ../gio/giostream.c:278 ../gio/goutputstream.c:1654 +#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1205 +#: ../gio/giostream.c:300 ../gio/goutputstream.c:1658 msgid "Stream is already closed" msgstr "Az adatfolyam már le van zárva" @@ -281,10 +286,9 @@ msgstr "Az adatfolyam már le van zárva" msgid "Truncate not supported on base stream" msgstr "Az alap adatfolyam csonkítása nem engedélyezett" -#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1896 -#: ../gio/gdbusconnection.c:1989 ../gio/gdbusprivate.c:1421 -#: ../gio/glocalfile.c:2181 ../gio/gsimpleasyncresult.c:830 -#: ../gio/gsimpleasyncresult.c:856 +#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1847 +#: ../gio/gdbusprivate.c:1375 ../gio/glocalfile.c:2220 +#: ../gio/gsimpleasyncresult.c:870 ../gio/gsimpleasyncresult.c:896 #, c-format msgid "Operation was cancelled" msgstr "A művelet megszakítva" @@ -302,24 +306,24 @@ msgid "Not enough space in destination" msgstr "Nincs elég hely a célon" #: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848 -#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 -#: ../glib/gconvert.c:845 ../glib/giochannel.c:1557 ../glib/giochannel.c:1599 -#: ../glib/giochannel.c:2443 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 +#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 ../glib/gconvert.c:845 +#: ../glib/giochannel.c:1556 ../glib/giochannel.c:1598 +#: ../glib/giochannel.c:2442 ../glib/gutf8.c:853 ../glib/gutf8.c:1306 msgid "Invalid byte sequence in conversion input" msgstr "Érvénytelen bájtsorrend az átalakítás bemenetében" -#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 -#: ../glib/gconvert.c:770 ../glib/giochannel.c:1564 ../glib/giochannel.c:2455 +#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 ../glib/gconvert.c:770 +#: ../glib/giochannel.c:1563 ../glib/giochannel.c:2454 #, c-format msgid "Error during conversion: %s" msgstr "Hiba az átalakítás során: %s" -#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:990 +#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1078 msgid "Cancellable initialization not supported" msgstr "A megszakítható előkészítés nem támogatott" #: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321 -#: ../glib/giochannel.c:1385 +#: ../glib/giochannel.c:1384 #, c-format msgid "Conversion from character set '%s' to '%s' is not supported" msgstr "A(z) „%s” és „%s” karakterkészletek közötti átalakítás nem támogatott" @@ -340,7 +344,7 @@ msgstr "%s típus" msgid "Unknown type" msgstr "Ismeretlen típus" -#: ../gio/gcontenttype-win32.c:161 +#: ../gio/gcontenttype-win32.c:162 #, c-format msgid "%s filetype" msgstr "%s fájltípus" @@ -365,13 +369,13 @@ msgstr "A hitelesítési adatok hamisítása nincs megvalósítva ezen a rendsze msgid "Unexpected early end-of-stream" msgstr "Váratlan korai adatfolyam vége" -#: ../gio/gdbusaddress.c:148 ../gio/gdbusaddress.c:236 -#: ../gio/gdbusaddress.c:317 +#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241 +#: ../gio/gdbusaddress.c:322 #, c-format msgid "Unsupported key '%s' in address entry '%s'" msgstr "Nem támogatott „%s” kulcs a(z) „%s” címbejegyzésben" -#: ../gio/gdbusaddress.c:175 +#: ../gio/gdbusaddress.c:180 #, c-format msgid "" "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" @@ -379,34 +383,34 @@ msgstr "" "A(z) „%s” cím érvénytelen (csak az útvonal, tmp könyvtár vagy absztrakt " "kulcs egyike lehet)" -#: ../gio/gdbusaddress.c:188 +#: ../gio/gdbusaddress.c:193 #, c-format msgid "Meaningless key/value pair combination in address entry '%s'" msgstr "Értelmetlen kulcs/érték párkombináció a(z) „%s” címbejegyzésben" -#: ../gio/gdbusaddress.c:251 ../gio/gdbusaddress.c:332 +#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 #, c-format msgid "Error in address '%s' - the port attribute is malformed" msgstr "Hiba a(z) „%s” címben – a port attribútum rosszul formázott" -#: ../gio/gdbusaddress.c:262 ../gio/gdbusaddress.c:343 +#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348 #, c-format msgid "Error in address '%s' - the family attribute is malformed" msgstr "Hiba a(z) „%s” címben – a család attribútum rosszul formázott" -#: ../gio/gdbusaddress.c:452 +#: ../gio/gdbusaddress.c:457 #, c-format msgid "Address element '%s' does not contain a colon (:)" msgstr "A(z) „%s” címelem nem tartalmaz kettőspontot (:)" -#: ../gio/gdbusaddress.c:473 +#: ../gio/gdbusaddress.c:478 #, c-format msgid "" "Key/Value pair %d, '%s', in address element '%s' does not contain an equal " "sign" msgstr "%d. kulcspár: „%s” a(z) „%s” címelemben nem tartalmaz egyenlőségjelet" -#: ../gio/gdbusaddress.c:487 +#: ../gio/gdbusaddress.c:492 #, c-format msgid "" "Error unescaping key or value in Key/Value pair %d, '%s', in address element " @@ -415,7 +419,7 @@ msgstr "" "Hiba a(z) „%3$s” címelemben található a(z) %1$d. kulcspárban lévő „%2$s” " "kulcs vagy érték értelmezésekor." -#: ../gio/gdbusaddress.c:565 +#: ../gio/gdbusaddress.c:570 #, c-format msgid "" "Error in address '%s' - the unix transport requires exactly one of the keys " @@ -424,91 +428,91 @@ msgstr "" "Hiba a(z) „%s” címben – a unix szállítás a „path” vagy „abstract” kulcsok " "pontosan egyikének jelenlétét igényli" -#: ../gio/gdbusaddress.c:601 +#: ../gio/gdbusaddress.c:606 #, c-format msgid "Error in address '%s' - the host attribute is missing or malformed" msgstr "" "Hiba a(z) „%s” címben – a host attribútum hiányzik vagy rosszul formázott" -#: ../gio/gdbusaddress.c:615 +#: ../gio/gdbusaddress.c:620 #, c-format msgid "Error in address '%s' - the port attribute is missing or malformed" msgstr "" "Hiba a(z) „%s” címben – a port attribútum hiányzik vagy rosszul formázott" -#: ../gio/gdbusaddress.c:629 +#: ../gio/gdbusaddress.c:634 #, c-format msgid "Error in address '%s' - the noncefile attribute is missing or malformed" msgstr "" "Hiba a(z) „%s” címben – a noncefile attribútum hiányzik vagy rosszul " "formázott" -#: ../gio/gdbusaddress.c:650 +#: ../gio/gdbusaddress.c:655 msgid "Error auto-launching: " msgstr "Hiba az automatikus indításkor: " -#: ../gio/gdbusaddress.c:658 +#: ../gio/gdbusaddress.c:663 #, c-format msgid "Unknown or unsupported transport '%s' for address '%s'" msgstr "Ismeretlen vagy nem támogatott szállítás („%s”) a címhez („%s”)" -#: ../gio/gdbusaddress.c:694 +#: ../gio/gdbusaddress.c:699 #, c-format msgid "Error opening nonce file '%s': %s" msgstr "Hiba a(z) „%s” ideiglenes fájl megnyitásakor: %s" -#: ../gio/gdbusaddress.c:712 +#: ../gio/gdbusaddress.c:717 #, c-format msgid "Error reading from nonce file '%s': %s" msgstr "Hiba a(z) „%s” ideiglenes fájl olvasása közben: %s" -#: ../gio/gdbusaddress.c:721 +#: ../gio/gdbusaddress.c:726 #, c-format msgid "Error reading from nonce file '%s', expected 16 bytes, got %d" msgstr "" "Hiba a(z) „%s” ideiglenes fájl olvasása közben, a várt 16 bájt helyett %d " "érkezett" -#: ../gio/gdbusaddress.c:739 +#: ../gio/gdbusaddress.c:744 #, c-format msgid "Error writing contents of nonce file '%s' to stream:" msgstr "Hiba az ideiglenes fájl („%s”) tartalmának írásakor az adatfolyamba:" -#: ../gio/gdbusaddress.c:958 +#: ../gio/gdbusaddress.c:950 msgid "The given address is empty" msgstr "A megadott cím üres" -#: ../gio/gdbusaddress.c:1028 +#: ../gio/gdbusaddress.c:1063 #, c-format msgid "Cannot spawn a message bus when setuid" msgstr "Nem indítható üzenetbusz setuid módban" -#: ../gio/gdbusaddress.c:1035 +#: ../gio/gdbusaddress.c:1070 msgid "Cannot spawn a message bus without a machine-id: " msgstr "Nem indítható üzenetbusz gépazonosító nélkül: " -#: ../gio/gdbusaddress.c:1077 +#: ../gio/gdbusaddress.c:1112 #, c-format msgid "Error spawning command line '%s': " msgstr "Hiba a(z) „%s” parancssor indításakor: " -#: ../gio/gdbusaddress.c:1294 +#: ../gio/gdbusaddress.c:1329 #, c-format msgid "(Type any character to close this window)\n" msgstr "(Az ablak bezárásához nyomjon le egy gombot)\n" -#: ../gio/gdbusaddress.c:1425 +#: ../gio/gdbusaddress.c:1481 #, c-format msgid "Session dbus not running, and autolaunch failed" msgstr "A munkamenet D-Bus nem fut, és az automatikus indítás sikertelen" -#: ../gio/gdbusaddress.c:1446 +#: ../gio/gdbusaddress.c:1492 #, c-format msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "" "Nem határozható meg a munkamenetbusz címe (nincs megvalósítva erre az OS-re)" -#: ../gio/gdbusaddress.c:1546 ../gio/gdbusconnection.c:6931 +#: ../gio/gdbusaddress.c:1627 ../gio/gdbusconnection.c:7128 #, c-format msgid "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " @@ -517,7 +521,7 @@ msgstr "" "Nem határozható meg a busz címe a DBUS_STARTER_BUS_TYPE környezeti " "változóból – ismeretlen „%s” érték" -#: ../gio/gdbusaddress.c:1555 ../gio/gdbusconnection.c:6940 +#: ../gio/gdbusaddress.c:1636 ../gio/gdbusconnection.c:7137 msgid "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" @@ -525,7 +529,7 @@ msgstr "" "Nem határozható meg a busz címe, mivel a DBUS_STARTER_BUS_TYPE környezeti " "változó nincs beállítva" -#: ../gio/gdbusaddress.c:1565 +#: ../gio/gdbusaddress.c:1646 #, c-format msgid "Unknown bus type %d" msgstr "Ismeretlen busztípus: %d" @@ -630,21 +634,21 @@ msgstr "Hiba a(z) „%s” kulcstartó írásra való megnyitásakor: " msgid "(Additionally, releasing the lock for '%s' also failed: %s) " msgstr "(Ezen kívül a(z) „%s” zárolásának feloldása is meghiúsult: %s) " -#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2455 +#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2373 msgid "The connection is closed" msgstr "A kapcsolat le van zárva" -#: ../gio/gdbusconnection.c:1942 +#: ../gio/gdbusconnection.c:1877 msgid "Timeout was reached" msgstr "Az időkorlát elérve" -#: ../gio/gdbusconnection.c:2577 +#: ../gio/gdbusconnection.c:2495 msgid "" "Unsupported flags encountered when constructing a client-side connection" msgstr "" "Nem támogatott jelzők találhatók a kliensoldali kapcsolat létrehozásakor" -#: ../gio/gdbusconnection.c:4157 ../gio/gdbusconnection.c:4504 +#: ../gio/gdbusconnection.c:4105 ../gio/gdbusconnection.c:4452 #, c-format msgid "" "No such interface 'org.freedesktop.DBus.Properties' on object at path %s" @@ -652,68 +656,78 @@ msgstr "" "Nincs „org.freedesktop.DBus.Properties” felület a(z) %s útvonalon lévő " "objektumon" -#: ../gio/gdbusconnection.c:4299 +#: ../gio/gdbusconnection.c:4247 #, c-format msgid "No such property '%s'" msgstr "Nincs „%s” tulajdonság" -#: ../gio/gdbusconnection.c:4311 +#: ../gio/gdbusconnection.c:4259 #, c-format msgid "Property '%s' is not readable" msgstr "A tulajdonság („%s”) nem olvasható" -#: ../gio/gdbusconnection.c:4322 +#: ../gio/gdbusconnection.c:4270 #, c-format msgid "Property '%s' is not writable" msgstr "A tulajdonság („%s”) nem írható" -#: ../gio/gdbusconnection.c:4342 +#: ../gio/gdbusconnection.c:4290 #, c-format msgid "Error setting property '%s': Expected type '%s' but got '%s'" msgstr "" "Hiba a(z) „%s” tulajdonság beállításakor: a várt „%s” típus helyett „%s” " "érkezett" -#: ../gio/gdbusconnection.c:4447 ../gio/gdbusconnection.c:6371 +#: ../gio/gdbusconnection.c:4395 ../gio/gdbusconnection.c:6568 #, c-format msgid "No such interface '%s'" msgstr "Nincs „%s” felület" -#: ../gio/gdbusconnection.c:4655 +#: ../gio/gdbusconnection.c:4603 msgid "No such interface" msgstr "Nincs ilyen felület" -#: ../gio/gdbusconnection.c:4873 ../gio/gdbusconnection.c:6880 +#: ../gio/gdbusconnection.c:4821 ../gio/gdbusconnection.c:7077 #, c-format msgid "No such interface '%s' on object at path %s" msgstr "Nincs „%s” felület a(z) %s útvonalon lévő objektumon" -#: ../gio/gdbusconnection.c:4971 +#: ../gio/gdbusconnection.c:4919 #, c-format msgid "No such method '%s'" msgstr "Nincs „%s” metódus" -#: ../gio/gdbusconnection.c:5002 +#: ../gio/gdbusconnection.c:4950 #, c-format msgid "Type of message, '%s', does not match expected type '%s'" msgstr "Az üzenet „%s” típusa nem felel meg a várt „%s” típusnak" -#: ../gio/gdbusconnection.c:5200 +#: ../gio/gdbusconnection.c:5148 #, c-format msgid "An object is already exported for the interface %s at %s" msgstr "Már exportálva van egy objektum a(z) %s felülethez itt: %s" -#: ../gio/gdbusconnection.c:5399 +#: ../gio/gdbusconnection.c:5374 +#, c-format +msgid "Unable to retrieve property %s.%s" +msgstr "Nem sikerült lekérni a tulajdonságot: %s.%s" + +#: ../gio/gdbusconnection.c:5430 +#, c-format +msgid "Unable to set property %s.%s" +msgstr "Nem sikerült beállítani a tulajdonságot: %s.%s" + +#: ../gio/gdbusconnection.c:5606 #, c-format msgid "Method '%s' returned type '%s', but expected '%s'" msgstr "A metódus („%s”) a(z) „%s” típust adta vissza a várt „%s” helyett" -#: ../gio/gdbusconnection.c:6482 +#: ../gio/gdbusconnection.c:6679 #, c-format msgid "Method '%s' on interface '%s' with signature '%s' does not exist" msgstr "A metódus („%s”) nem létezik a(z) „%s” felületen „%s” aláírással" -#: ../gio/gdbusconnection.c:6603 +#: ../gio/gdbusconnection.c:6800 #, c-format msgid "A subtree is already exported for %s" msgstr "Egy részfa már exportálva van a következőhöz: %s" @@ -891,35 +905,35 @@ msgstr "" msgid "Message body is empty but signature in the header field is '(%s)'" msgstr "Az üzenettörzs üres, de az aláírásfejlécben lévő aláírás: „%s”" -#: ../gio/gdbusmessage.c:3280 +#: ../gio/gdbusmessage.c:3283 #, c-format msgid "Error return with body of type '%s'" msgstr "Hiba került visszaadásra a(z) „%s” típusú törzzsel" -#: ../gio/gdbusmessage.c:3288 +#: ../gio/gdbusmessage.c:3291 msgid "Error return with empty body" msgstr "Hiba került visszaadásra az üres törzzsel" -#: ../gio/gdbusprivate.c:2085 +#: ../gio/gdbusprivate.c:2036 #, c-format msgid "Unable to get Hardware profile: %s" msgstr "Nem kérhető le hardverprofil: %s" -#: ../gio/gdbusprivate.c:2130 +#: ../gio/gdbusprivate.c:2081 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: " msgstr "Nem tölthető be a /var/lib/dbus/machine-id vagy az /etc/machine-id: " -#: ../gio/gdbusproxy.c:1630 +#: ../gio/gdbusproxy.c:1610 #, c-format msgid "Error calling StartServiceByName for %s: " msgstr "Hiba a StartServiceByName hívásakor ehhez: %s: " -#: ../gio/gdbusproxy.c:1653 +#: ../gio/gdbusproxy.c:1633 #, c-format msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" msgstr "Váratlan válasz (%d) a StartServiceByName(\"%s\") metódustól" -#: ../gio/gdbusproxy.c:2754 ../gio/gdbusproxy.c:2891 +#: ../gio/gdbusproxy.c:2709 ../gio/gdbusproxy.c:2843 msgid "" "Cannot invoke method; proxy is for a well-known name without an owner and " "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag" @@ -971,56 +985,61 @@ msgstr "" "\n" "Az egyes parancsok súgója a „%s PARANCS --help” kiadásával érhető el.\n" -#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:220 ../gio/gdbus-tool.c:292 -#: ../gio/gdbus-tool.c:316 ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1031 -#: ../gio/gdbus-tool.c:1465 +#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:226 ../gio/gdbus-tool.c:298 +#: ../gio/gdbus-tool.c:322 ../gio/gdbus-tool.c:711 ../gio/gdbus-tool.c:1043 +#: ../gio/gdbus-tool.c:1477 #, c-format msgid "Error: %s\n" msgstr "Hiba: %s\n" -#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:233 ../gio/gdbus-tool.c:1481 +#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493 #, c-format msgid "Error parsing introspection XML: %s\n" msgstr "Hiba a betekintési XML feldolgozása során: %s\n" -#: ../gio/gdbus-tool.c:350 +#: ../gio/gdbus-tool.c:208 +#, c-format +msgid "Error: %s is not a valid name\n" +msgstr "Hiba: a(z) %s nem érvényes név\n" + +#: ../gio/gdbus-tool.c:356 msgid "Connect to the system bus" msgstr "Csatlakozás a rendszerbuszhoz" -#: ../gio/gdbus-tool.c:351 +#: ../gio/gdbus-tool.c:357 msgid "Connect to the session bus" msgstr "Csatlakozás a munkamenetbuszhoz" -#: ../gio/gdbus-tool.c:352 +#: ../gio/gdbus-tool.c:358 msgid "Connect to given D-Bus address" msgstr "Csatlakozás a megadott D-Bus címhez" -#: ../gio/gdbus-tool.c:362 +#: ../gio/gdbus-tool.c:368 msgid "Connection Endpoint Options:" msgstr "Kapcsolatvégpont beállításai:" -#: ../gio/gdbus-tool.c:363 +#: ../gio/gdbus-tool.c:369 msgid "Options specifying the connection endpoint" msgstr "A kapcsolat végpontját megadó beállítások" -#: ../gio/gdbus-tool.c:385 +#: ../gio/gdbus-tool.c:391 #, c-format msgid "No connection endpoint specified" msgstr "Nincs megadva kapcsolatvégpont" -#: ../gio/gdbus-tool.c:395 +#: ../gio/gdbus-tool.c:401 #, c-format msgid "Multiple connection endpoints specified" msgstr "Több kapcsolatvégpontot adott meg" -#: ../gio/gdbus-tool.c:465 +#: ../gio/gdbus-tool.c:471 #, c-format msgid "" "Warning: According to introspection data, interface '%s' does not exist\n" msgstr "" "Figyelmeztetés: a betekintési adatok szerint a(z) „%s” felület nem létezik\n" -#: ../gio/gdbus-tool.c:474 +#: ../gio/gdbus-tool.c:480 #, c-format msgid "" "Warning: According to introspection data, method '%s' does not exist on " @@ -1029,190 +1048,194 @@ msgstr "" "Figyelmeztetés: a betekintési adatok szerint a felületen („%2$s”) nem " "létezik „%1$s” metódus\n" -#: ../gio/gdbus-tool.c:536 +#: ../gio/gdbus-tool.c:542 msgid "Optional destination for signal (unique name)" msgstr "A szignál elhagyható célja (egyedi név)" -#: ../gio/gdbus-tool.c:537 +#: ../gio/gdbus-tool.c:543 msgid "Object path to emit signal on" msgstr "Szignál kibocsátása ezen az objektumútvonalon" -#: ../gio/gdbus-tool.c:538 +#: ../gio/gdbus-tool.c:544 msgid "Signal and interface name" msgstr "Szignál és felület neve" -#: ../gio/gdbus-tool.c:570 +#: ../gio/gdbus-tool.c:576 msgid "Emit a signal." msgstr "Szignál kibocsátása." -#: ../gio/gdbus-tool.c:604 ../gio/gdbus-tool.c:836 ../gio/gdbus-tool.c:1571 -#: ../gio/gdbus-tool.c:1799 +#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583 +#: ../gio/gdbus-tool.c:1818 #, c-format msgid "Error connecting: %s\n" msgstr "Hiba a csatlakozáskor: %s\n" -#: ../gio/gdbus-tool.c:616 +#: ../gio/gdbus-tool.c:622 #, c-format msgid "Error: object path not specified.\n" msgstr "Hiba: az objektumútvonal nincs megadva.\n" -#: ../gio/gdbus-tool.c:621 ../gio/gdbus-tool.c:897 ../gio/gdbus-tool.c:1629 -#: ../gio/gdbus-tool.c:1858 +#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648 +#: ../gio/gdbus-tool.c:1884 #, c-format msgid "Error: %s is not a valid object path\n" msgstr "Hiba: a(z) %s nem érvényes objektumútvonal\n" -#: ../gio/gdbus-tool.c:627 +#: ../gio/gdbus-tool.c:633 #, c-format msgid "Error: signal not specified.\n" msgstr "Hiba: a szignál nincs megadva.\n" -#: ../gio/gdbus-tool.c:634 +#: ../gio/gdbus-tool.c:640 #, c-format msgid "Error: signal must be the fully-qualified name.\n" msgstr "Hiba: a szignálnak teljes képzésű névnek kell lennie.\n" -#: ../gio/gdbus-tool.c:642 +#: ../gio/gdbus-tool.c:648 #, c-format msgid "Error: %s is not a valid interface name\n" msgstr "Hiba: a(z) %s nem érvényes felületnév\n" -#: ../gio/gdbus-tool.c:648 +#: ../gio/gdbus-tool.c:654 #, c-format msgid "Error: %s is not a valid member name\n" msgstr "Hiba: a(z) %s nem érvényes tagnév\n" -#: ../gio/gdbus-tool.c:654 +#: ../gio/gdbus-tool.c:660 #, c-format msgid "Error: %s is not a valid unique bus name.\n" msgstr "Hiba: a(z) %s nem érvényes egyedi busznév.\n" #. Use the original non-"parse-me-harder" error -#: ../gio/gdbus-tool.c:681 ../gio/gdbus-tool.c:999 +#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011 #, c-format msgid "Error parsing parameter %d: %s\n" msgstr "Hiba a(z) %d. paraméter feldolgozásakor: %s\n" -#: ../gio/gdbus-tool.c:712 +#: ../gio/gdbus-tool.c:718 #, c-format msgid "Error flushing connection: %s\n" msgstr "Hiba a kapcsolat kiürítésekor: %s\n" -#: ../gio/gdbus-tool.c:739 +#: ../gio/gdbus-tool.c:745 msgid "Destination name to invoke method on" msgstr "A cél neve a metódushíváshoz" -#: ../gio/gdbus-tool.c:740 +#: ../gio/gdbus-tool.c:746 msgid "Object path to invoke method on" msgstr "Objektum útvonala a metódushíváshoz" -#: ../gio/gdbus-tool.c:741 +#: ../gio/gdbus-tool.c:747 msgid "Method and interface name" msgstr "Metódus és felület neve" -#: ../gio/gdbus-tool.c:742 +#: ../gio/gdbus-tool.c:748 msgid "Timeout in seconds" msgstr "Időkorlát másodpercben" -#: ../gio/gdbus-tool.c:781 +#: ../gio/gdbus-tool.c:787 msgid "Invoke a method on a remote object." msgstr "Metódus hívása távoli objektumon." -#: ../gio/gdbus-tool.c:856 ../gio/gdbus-tool.c:1590 ../gio/gdbus-tool.c:1818 +#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837 #, c-format msgid "Error: Destination is not specified\n" msgstr "Hiba: a cél nincs megadva\n" -#: ../gio/gdbus-tool.c:877 ../gio/gdbus-tool.c:1609 +#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849 +#, c-format +msgid "Error: %s is not a valid bus name\n" +msgstr "Hiba: a(z) %s nem érvényes busznév\n" + +#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628 #, c-format msgid "Error: Object path is not specified\n" msgstr "Hiba: az objektumútvonal nincs megadva\n" -#: ../gio/gdbus-tool.c:912 +#: ../gio/gdbus-tool.c:924 #, c-format msgid "Error: Method name is not specified\n" msgstr "Hiba: a metódusnév nincs megadva\n" -#: ../gio/gdbus-tool.c:923 +#: ../gio/gdbus-tool.c:935 #, c-format msgid "Error: Method name '%s' is invalid\n" msgstr "Hiba: a metódusnév („%s”) érvénytelen\n" -#: ../gio/gdbus-tool.c:991 +#: ../gio/gdbus-tool.c:1003 #, c-format msgid "Error parsing parameter %d of type '%s': %s\n" msgstr "Hiba a(z) „%2$s” típusú %1$d. paraméter feldolgozásakor: %3$s\n" -#: ../gio/gdbus-tool.c:1428 +#: ../gio/gdbus-tool.c:1440 msgid "Destination name to introspect" msgstr "A cél neve a betekintéshez" -#: ../gio/gdbus-tool.c:1429 +#: ../gio/gdbus-tool.c:1441 msgid "Object path to introspect" msgstr "Az objektumútvonal a betekintéshez" -#: ../gio/gdbus-tool.c:1430 +#: ../gio/gdbus-tool.c:1442 msgid "Print XML" msgstr "XML kiírása" -#: ../gio/gdbus-tool.c:1431 +#: ../gio/gdbus-tool.c:1443 msgid "Introspect children" msgstr "Betekintés gyermekekbe" -#: ../gio/gdbus-tool.c:1432 +#: ../gio/gdbus-tool.c:1444 msgid "Only print properties" msgstr "Csak a tulajdonságok kiírása" -#: ../gio/gdbus-tool.c:1523 +#: ../gio/gdbus-tool.c:1535 msgid "Introspect a remote object." msgstr "Betekintés távoli objektumba." -#: ../gio/gdbus-tool.c:1721 +#: ../gio/gdbus-tool.c:1740 msgid "Destination name to monitor" msgstr "Megfigyelendő cél neve" -#: ../gio/gdbus-tool.c:1722 +#: ../gio/gdbus-tool.c:1741 msgid "Object path to monitor" msgstr "Megfigyelendő objektumútvonal" -#: ../gio/gdbus-tool.c:1751 +#: ../gio/gdbus-tool.c:1770 msgid "Monitor a remote object." msgstr "Távoli objektum megfigyelése." -#: ../gio/gdesktopappinfo.c:1999 ../gio/gdesktopappinfo.c:4530 -#: ../gio/gwin32appinfo.c:219 +#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4502 msgid "Unnamed" msgstr "Névtelen" -#: ../gio/gdesktopappinfo.c:2408 +#: ../gio/gdesktopappinfo.c:2402 msgid "Desktop file didn't specify Exec field" msgstr "A desktop fájl nem adta meg az Exec mezőt" -#: ../gio/gdesktopappinfo.c:2693 +#: ../gio/gdesktopappinfo.c:2687 msgid "Unable to find terminal required for application" msgstr "Nem található az alkalmazáshoz szükséges terminál" -#: ../gio/gdesktopappinfo.c:3114 +#: ../gio/gdesktopappinfo.c:3099 #, c-format msgid "Can't create user application configuration folder %s: %s" msgstr "" "Nem hozható létre a(z) %s felhasználói alkalmazáskonfigurációs mappa: %s" -#: ../gio/gdesktopappinfo.c:3118 +#: ../gio/gdesktopappinfo.c:3103 #, c-format msgid "Can't create user MIME configuration folder %s: %s" msgstr "Nem hozható létre a(z) %s felhasználói MIME konfigurációs mappa: %s" -#: ../gio/gdesktopappinfo.c:3358 ../gio/gdesktopappinfo.c:3382 +#: ../gio/gdesktopappinfo.c:3343 ../gio/gdesktopappinfo.c:3367 msgid "Application information lacks an identifier" msgstr "Az alkalmazásinformációkból hiányzik az azonosító" -#: ../gio/gdesktopappinfo.c:3615 +#: ../gio/gdesktopappinfo.c:3600 #, c-format msgid "Can't create user desktop file %s" msgstr "Nem hozható létre a felhasználói desktop fájl (%s)" -#: ../gio/gdesktopappinfo.c:3749 +#: ../gio/gdesktopappinfo.c:3734 #, c-format msgid "Custom definition for %s" msgstr "%s egyéni meghatározása" @@ -1241,11 +1264,15 @@ msgstr "a meghajtó nem valósítja meg a indítást" msgid "drive doesn't implement stop" msgstr "a meghajtó nem valósítja meg a leállítást" -#: ../gio/gdummytlsbackend.c:189 ../gio/gdummytlsbackend.c:311 -#: ../gio/gdummytlsbackend.c:401 +#: ../gio/gdummytlsbackend.c:195 ../gio/gdummytlsbackend.c:317 +#: ../gio/gdummytlsbackend.c:509 msgid "TLS support is not available" msgstr "A TLS-támogatás nem érhető el" +#: ../gio/gdummytlsbackend.c:419 +msgid "DTLS support is not available" +msgstr "A DTLS-támogatás nem érhető el" + #: ../gio/gemblem.c:323 #, c-format msgid "Can't handle version %d of GEmblem encoding" @@ -1270,14 +1297,14 @@ msgstr "A GEmblemedIcon kódolásban a jelsorok száma (%d) hibásan formált" msgid "Expected a GEmblem for GEmblemedIcon" msgstr "Egy GEmblem kellene a GEmblemedIconhoz" -#: ../gio/gfile.c:968 ../gio/gfile.c:1206 ../gio/gfile.c:1344 -#: ../gio/gfile.c:1582 ../gio/gfile.c:1637 ../gio/gfile.c:1695 -#: ../gio/gfile.c:1779 ../gio/gfile.c:1836 ../gio/gfile.c:1900 -#: ../gio/gfile.c:1955 ../gio/gfile.c:3603 ../gio/gfile.c:3658 -#: ../gio/gfile.c:3893 ../gio/gfile.c:3935 ../gio/gfile.c:4398 -#: ../gio/gfile.c:4809 ../gio/gfile.c:4894 ../gio/gfile.c:4984 -#: ../gio/gfile.c:5081 ../gio/gfile.c:5168 ../gio/gfile.c:5269 -#: ../gio/gfile.c:7788 ../gio/gfile.c:7878 ../gio/gfile.c:7962 +#: ../gio/gfile.c:969 ../gio/gfile.c:1207 ../gio/gfile.c:1345 +#: ../gio/gfile.c:1583 ../gio/gfile.c:1638 ../gio/gfile.c:1696 +#: ../gio/gfile.c:1780 ../gio/gfile.c:1837 ../gio/gfile.c:1901 +#: ../gio/gfile.c:1956 ../gio/gfile.c:3604 ../gio/gfile.c:3659 +#: ../gio/gfile.c:3894 ../gio/gfile.c:3936 ../gio/gfile.c:4404 +#: ../gio/gfile.c:4815 ../gio/gfile.c:4900 ../gio/gfile.c:4990 +#: ../gio/gfile.c:5087 ../gio/gfile.c:5174 ../gio/gfile.c:5275 +#: ../gio/gfile.c:7796 ../gio/gfile.c:7886 ../gio/gfile.c:7970 #: ../gio/win32/gwinhttpfile.c:437 msgid "Operation not supported" msgstr "A művelet nem támogatott" @@ -1292,70 +1319,70 @@ msgstr "A művelet nem támogatott" #. Translators: This is an error message when trying to find #. * the enclosing (user visible) mount of a file, but none #. * exists. -#: ../gio/gfile.c:1467 ../gio/glocalfile.c:1103 ../gio/glocalfile.c:1114 -#: ../gio/glocalfile.c:1127 +#: ../gio/gfile.c:1468 ../gio/glocalfile.c:1134 ../gio/glocalfile.c:1145 +#: ../gio/glocalfile.c:1158 msgid "Containing mount does not exist" msgstr "A tartalmazó csatolás nem létezik" -#: ../gio/gfile.c:2514 ../gio/glocalfile.c:2337 +#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2376 msgid "Can't copy over directory" msgstr "Nem lehet a könyvtárra másolni" -#: ../gio/gfile.c:2574 +#: ../gio/gfile.c:2575 msgid "Can't copy directory over directory" msgstr "A könyvtár nem másolható könyvtárba" -#: ../gio/gfile.c:2582 ../gio/glocalfile.c:2346 +#: ../gio/gfile.c:2583 ../gio/glocalfile.c:2385 msgid "Target file exists" msgstr "A célfájl létezik" -#: ../gio/gfile.c:2601 +#: ../gio/gfile.c:2602 msgid "Can't recursively copy directory" msgstr "A könyvtár nem másolható rekurzívan" -#: ../gio/gfile.c:2883 +#: ../gio/gfile.c:2884 msgid "Splice not supported" msgstr "A fájlillesztés nem támogatott" -#: ../gio/gfile.c:2887 +#: ../gio/gfile.c:2888 #, c-format msgid "Error splicing file: %s" msgstr "Hiba a fájl illesztése közben: %s" -#: ../gio/gfile.c:3018 +#: ../gio/gfile.c:3019 msgid "Copy (reflink/clone) between mounts is not supported" msgstr "A csatolások közti másolás (reflink/clone) nem támogatott" -#: ../gio/gfile.c:3022 +#: ../gio/gfile.c:3023 msgid "Copy (reflink/clone) is not supported or invalid" msgstr "A másolás (reflink/clone) nem támogatott vagy érvénytelen" -#: ../gio/gfile.c:3027 +#: ../gio/gfile.c:3028 msgid "Copy (reflink/clone) is not supported or didn't work" msgstr "A másolás (reflink/clone) nem támogatott vagy nem működött" -#: ../gio/gfile.c:3090 +#: ../gio/gfile.c:3091 msgid "Can't copy special file" msgstr "A speciális fájl nem másolható" -#: ../gio/gfile.c:3883 +#: ../gio/gfile.c:3884 msgid "Invalid symlink value given" msgstr "Érvénytelen szimbolikus link érték került megadásra" -#: ../gio/gfile.c:4044 +#: ../gio/gfile.c:4045 msgid "Trash not supported" msgstr "A Kuka nem támogatott" -#: ../gio/gfile.c:4156 +#: ../gio/gfile.c:4157 #, c-format msgid "File names cannot contain '%c'" msgstr "A fájlnevek nem tartalmazhatnak „%c” karaktert" -#: ../gio/gfile.c:6580 ../gio/gvolume.c:363 +#: ../gio/gfile.c:6586 ../gio/gvolume.c:363 msgid "volume doesn't implement mount" msgstr "a kötet nem valósítja meg a csatolást" -#: ../gio/gfile.c:6689 +#: ../gio/gfile.c:6695 msgid "No application is registered as handling this file" msgstr "Nincs alkalmazás regisztrálva a fájl kezeléséhez" @@ -1405,7 +1432,6 @@ msgid "Bad HTTP proxy reply" msgstr "Rossz HTTP proxy válasz" #: ../gio/ghttpproxy.c:152 -#| msgid "The connection is closed" msgid "HTTP proxy connection not allowed" msgstr "A HTTP proxykapcsolat nem engedélyezett" @@ -1419,7 +1445,6 @@ msgstr "HTTP proxyhitelesítés szükséges" #: ../gio/ghttpproxy.c:164 #, c-format -#| msgid "The connection is closed" msgid "HTTP proxy connection failed: %i" msgstr "A HTTP proxykapcsolat meghiúsult: %i" @@ -1480,16 +1505,16 @@ msgstr "A címben az előtag hosszán túl is be vannak állítva bitek" msgid "Could not parse '%s' as IP address mask" msgstr "Nem dolgozható fel a(z) „%s” IP-cím maszkként" -#: ../gio/ginetsocketaddress.c:196 ../gio/ginetsocketaddress.c:213 -#: ../gio/gunixsocketaddress.c:209 +#: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220 +#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:216 msgid "Not enough space for socket address" msgstr "Nincs elég hely a foglalat címének" -#: ../gio/ginetsocketaddress.c:228 +#: ../gio/ginetsocketaddress.c:235 msgid "Unsupported socket address" msgstr "Nem támogatott foglalatcím" -#: ../gio/ginputstream.c:185 +#: ../gio/ginputstream.c:188 msgid "Input stream doesn't implement read" msgstr "A bemeneti adatfolyam nem valósítja meg az olvasást" @@ -1499,12 +1524,12 @@ msgstr "A bemeneti adatfolyam nem valósítja meg az olvasást" #. Translators: This is an error you get if there is #. * already an operation running against this stream when #. * you try to start one -#: ../gio/ginputstream.c:1212 ../gio/giostream.c:288 -#: ../gio/goutputstream.c:1664 +#: ../gio/ginputstream.c:1215 ../gio/giostream.c:310 +#: ../gio/goutputstream.c:1668 msgid "Stream has outstanding operation" msgstr "Az adatfolyam hátralévő művelettel rendelkezik" -#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1453 +#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1491 #, c-format msgid "Element <%s> not allowed inside <%s>" msgstr "<%s> elem nem engedélyezett ezen belül: <%s>" @@ -1549,7 +1574,7 @@ msgstr "Hiba a(z) %s fájl olvasása közben: %s" msgid "Error compressing file %s" msgstr "Hiba a fájl tömörítése közben: %s" -#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1565 +#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1603 #, c-format msgid "text may not appear inside <%s>" msgstr "nem jelenhet meg szöveg ezen belül: <%s>" @@ -1565,8 +1590,8 @@ msgid "" msgstr "" "A fájlok olvasása ebből a könyvtárból (alapértelmezett: aktuális könyvtár)" -#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:1994 -#: ../gio/glib-compile-schemas.c:2023 +#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2036 +#: ../gio/glib-compile-schemas.c:2065 msgid "DIRECTORY" msgstr "KÖNYVTÁR" @@ -1615,16 +1640,16 @@ msgstr "" msgid "You should give exactly one file name\n" msgstr "Pontosan egy fájlnevet kell megadnia\n" -#: ../gio/glib-compile-schemas.c:772 +#: ../gio/glib-compile-schemas.c:784 msgid "empty names are not permitted" msgstr "az üres nevek nem engedélyezettek" -#: ../gio/glib-compile-schemas.c:782 +#: ../gio/glib-compile-schemas.c:794 #, c-format msgid "invalid name '%s': names must begin with a lowercase letter" msgstr "érvénytelen név („%s”): a neveknek kisbetűvel kell kezdődniük" -#: ../gio/glib-compile-schemas.c:794 +#: ../gio/glib-compile-schemas.c:806 #, c-format msgid "" "invalid name '%s': invalid character '%c'; only lowercase letters, numbers " @@ -1633,37 +1658,37 @@ msgstr "" "érvénytelen név („%s”): érvénytelen karakter: „%c”. Csak kisbetűk, számok és " "kötőjel („-”) engedélyezettek." -#: ../gio/glib-compile-schemas.c:803 +#: ../gio/glib-compile-schemas.c:815 #, c-format msgid "invalid name '%s': two successive hyphens ('--') are not permitted." msgstr "" "érvénytelen név („%s”): két egymást követő kötőjel („--”) nem engedélyezett." -#: ../gio/glib-compile-schemas.c:812 +#: ../gio/glib-compile-schemas.c:824 #, c-format msgid "invalid name '%s': the last character may not be a hyphen ('-')." msgstr "érvénytelen név („%s”): az utolsó karakter nem lehet kötőjel („-”)." -#: ../gio/glib-compile-schemas.c:820 +#: ../gio/glib-compile-schemas.c:832 #, c-format msgid "invalid name '%s': maximum length is 1024" msgstr "érvénytelen név („%s”): a maximális hossz 1024 karakter" -#: ../gio/glib-compile-schemas.c:889 +#: ../gio/glib-compile-schemas.c:901 #, c-format msgid " already specified" msgstr " már meg van adva" -#: ../gio/glib-compile-schemas.c:915 +#: ../gio/glib-compile-schemas.c:927 msgid "cannot add keys to a 'list-of' schema" msgstr "nem adhatók kulcsok „list-of” sémához" -#: ../gio/glib-compile-schemas.c:926 +#: ../gio/glib-compile-schemas.c:938 #, c-format msgid " already specified" msgstr " már meg van adva" -#: ../gio/glib-compile-schemas.c:944 +#: ../gio/glib-compile-schemas.c:956 #, c-format msgid "" " shadows in ; use " @@ -1672,7 +1697,7 @@ msgstr "" " leárnyékolja ezt: ebben: ; " "az érték módosításához használja az címkét" -#: ../gio/glib-compile-schemas.c:955 +#: ../gio/glib-compile-schemas.c:967 #, c-format msgid "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " @@ -1680,63 +1705,63 @@ msgid "" msgstr "" "a attribútumaként csak a „type”, „enum” vagy „flags” egyike adható meg" -#: ../gio/glib-compile-schemas.c:974 +#: ../gio/glib-compile-schemas.c:986 #, c-format msgid "<%s id='%s'> not (yet) defined." msgstr "<%s id='%s'> (még) nincs megadva." -#: ../gio/glib-compile-schemas.c:989 +#: ../gio/glib-compile-schemas.c:1001 #, c-format msgid "invalid GVariant type string '%s'" msgstr "érvénytelen GVariant típuskarakterlánc: „%s”" -#: ../gio/glib-compile-schemas.c:1019 +#: ../gio/glib-compile-schemas.c:1031 msgid " given but schema isn't extending anything" msgstr "az megadva, de a séma nem terjeszt ki semmit" -#: ../gio/glib-compile-schemas.c:1032 +#: ../gio/glib-compile-schemas.c:1044 #, c-format msgid "no to override" msgstr "nincs felülírandó " -#: ../gio/glib-compile-schemas.c:1040 +#: ../gio/glib-compile-schemas.c:1052 #, c-format msgid " already specified" msgstr " már megadva" -#: ../gio/glib-compile-schemas.c:1111 +#: ../gio/glib-compile-schemas.c:1125 #, c-format msgid " already specified" msgstr " már megadva" -#: ../gio/glib-compile-schemas.c:1123 +#: ../gio/glib-compile-schemas.c:1137 #, c-format msgid " extends not yet existing schema '%s'" msgstr "a a még nem létező „%s” sémát terjeszti ki" -#: ../gio/glib-compile-schemas.c:1139 +#: ../gio/glib-compile-schemas.c:1153 #, c-format msgid " is list of not yet existing schema '%s'" msgstr "a a még nem létező „%s” séma listája" -#: ../gio/glib-compile-schemas.c:1147 +#: ../gio/glib-compile-schemas.c:1161 #, c-format msgid "Can not be a list of a schema with a path" msgstr "Nem lehet séma listája útvonallal" -#: ../gio/glib-compile-schemas.c:1157 +#: ../gio/glib-compile-schemas.c:1171 #, c-format msgid "Can not extend a schema with a path" msgstr "Nem terjeszthet ki sémát útvonallal" -#: ../gio/glib-compile-schemas.c:1167 +#: ../gio/glib-compile-schemas.c:1181 #, c-format msgid "" " is a list, extending which is not a list" msgstr "" "a lista a nem lista sémát terjeszti ki" -#: ../gio/glib-compile-schemas.c:1177 +#: ../gio/glib-compile-schemas.c:1191 #, c-format msgid "" " extends but '%s' " @@ -1745,64 +1770,69 @@ msgstr "" "a kiterjeszti ezt: , de „%s” nem terjeszti ki ezt: „%s”" -#: ../gio/glib-compile-schemas.c:1194 +#: ../gio/glib-compile-schemas.c:1208 #, c-format msgid "a path, if given, must begin and end with a slash" msgstr "" "ha meg van adva útvonal, akkor osztásjellel kell kezdődnie és végződnie" -#: ../gio/glib-compile-schemas.c:1201 +#: ../gio/glib-compile-schemas.c:1215 #, c-format msgid "the path of a list must end with ':/'" msgstr "a lista útvonalának „:/” karakterekkel kell végződnie" -#: ../gio/glib-compile-schemas.c:1233 +#: ../gio/glib-compile-schemas.c:1247 #, c-format msgid "<%s id='%s'> already specified" msgstr "<%s id='%s'> már meg van adva" -#: ../gio/glib-compile-schemas.c:1457 +#: ../gio/glib-compile-schemas.c:1397 ../gio/glib-compile-schemas.c:1413 +#, c-format +msgid "Only one <%s> element allowed inside <%s>" +msgstr "Csak egy <%s> elem engedélyezett ezen belül: <%s>" + +#: ../gio/glib-compile-schemas.c:1495 #, c-format msgid "Element <%s> not allowed at the top level" msgstr "<%s> elem nem engedélyezett a felső szinten" #. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1752 ../gio/glib-compile-schemas.c:1823 -#: ../gio/glib-compile-schemas.c:1899 +#: ../gio/glib-compile-schemas.c:1794 ../gio/glib-compile-schemas.c:1865 +#: ../gio/glib-compile-schemas.c:1941 #, c-format msgid "--strict was specified; exiting.\n" msgstr "a --strict meg lett adva, kilépés.\n" -#: ../gio/glib-compile-schemas.c:1760 +#: ../gio/glib-compile-schemas.c:1802 #, c-format msgid "This entire file has been ignored.\n" msgstr "Ez az egész fájl figyelmen kívül marad.\n" -#: ../gio/glib-compile-schemas.c:1819 +#: ../gio/glib-compile-schemas.c:1861 #, c-format msgid "Ignoring this file.\n" msgstr "Fájl figyelmen kívül hagyása.\n" -#: ../gio/glib-compile-schemas.c:1859 +#: ../gio/glib-compile-schemas.c:1901 #, c-format msgid "No such key '%s' in schema '%s' as specified in override file '%s'" msgstr "" "Nincs „%s” kulcs a(z) „%s” sémában a(z) „%s” felülbírálási fájlban megadott " "módon" -#: ../gio/glib-compile-schemas.c:1865 ../gio/glib-compile-schemas.c:1923 -#: ../gio/glib-compile-schemas.c:1951 +#: ../gio/glib-compile-schemas.c:1907 ../gio/glib-compile-schemas.c:1965 +#: ../gio/glib-compile-schemas.c:1993 #, c-format msgid "; ignoring override for this key.\n" msgstr "; kulcs felülbírálásának figyelmen kívül hagyása.\n" -#: ../gio/glib-compile-schemas.c:1869 ../gio/glib-compile-schemas.c:1927 -#: ../gio/glib-compile-schemas.c:1955 +#: ../gio/glib-compile-schemas.c:1911 ../gio/glib-compile-schemas.c:1969 +#: ../gio/glib-compile-schemas.c:1997 #, c-format msgid " and --strict was specified; exiting.\n" msgstr " és a --strict meg lett adva, kilépés.\n" -#: ../gio/glib-compile-schemas.c:1885 +#: ../gio/glib-compile-schemas.c:1927 #, c-format msgid "" "error parsing key '%s' in schema '%s' as specified in override file '%s': %s." @@ -1810,12 +1840,12 @@ msgstr "" "hiba a(z) „%s” kulcs feldolgozásakor a(z) „%s” sémában a(z) „%s” " "felülbírálási fájlban megadott módon: %s. " -#: ../gio/glib-compile-schemas.c:1895 +#: ../gio/glib-compile-schemas.c:1937 #, c-format msgid "Ignoring override for this key.\n" msgstr "Kulcs felülbírálásának figyelmen kívül hagyása.\n" -#: ../gio/glib-compile-schemas.c:1913 +#: ../gio/glib-compile-schemas.c:1955 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is outside the " @@ -1824,7 +1854,7 @@ msgstr "" "a(z) „%2$s” séma „%1$s” kulcsának felülbírálása a(z) „%3$s” felülbírálási " "fájlban a sémában megadott tartományon kívül esik" -#: ../gio/glib-compile-schemas.c:1941 +#: ../gio/glib-compile-schemas.c:1983 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is not in the " @@ -1833,23 +1863,23 @@ msgstr "" "a(z) „%2$s” séma „%1$s” kulcsának felülbírálása a(z) „%3$s” felülbírálási " "fájlban nincs az érvényes lehetőségek listájában" -#: ../gio/glib-compile-schemas.c:1994 +#: ../gio/glib-compile-schemas.c:2036 msgid "where to store the gschemas.compiled file" msgstr "a gschemas.compiled fájl tárolási helye" -#: ../gio/glib-compile-schemas.c:1995 +#: ../gio/glib-compile-schemas.c:2037 msgid "Abort on any errors in schemas" msgstr "Megszakítás a sémák bármely hibája esetén" -#: ../gio/glib-compile-schemas.c:1996 +#: ../gio/glib-compile-schemas.c:2038 msgid "Do not write the gschema.compiled file" msgstr "Ne írja ki a gschema.compiled fájlt" -#: ../gio/glib-compile-schemas.c:1997 +#: ../gio/glib-compile-schemas.c:2039 msgid "Do not enforce key name restrictions" msgstr "Ne kényszerítse ki a kulcsnévmegszorításokat" -#: ../gio/glib-compile-schemas.c:2026 +#: ../gio/glib-compile-schemas.c:2068 msgid "" "Compile all GSettings schema files into a schema cache.\n" "Schema files are required to have the extension .gschema.xml,\n" @@ -1859,145 +1889,141 @@ msgstr "" "A sémafájloknak .gschema.xml kiterjesztéssel kell rendelkezniük,\n" "és a gyorsítótárfájl neve gschemas.compiled." -#: ../gio/glib-compile-schemas.c:2042 +#: ../gio/glib-compile-schemas.c:2084 #, c-format msgid "You should give exactly one directory name\n" msgstr "Pontosan egy könyvtárnevet kell megadnia\n" -#: ../gio/glib-compile-schemas.c:2081 +#: ../gio/glib-compile-schemas.c:2123 #, c-format msgid "No schema files found: " msgstr "Nem találhatók sémafájlok: " -#: ../gio/glib-compile-schemas.c:2084 +#: ../gio/glib-compile-schemas.c:2126 #, c-format msgid "doing nothing.\n" msgstr "nem történik semmi.\n" -#: ../gio/glib-compile-schemas.c:2087 +#: ../gio/glib-compile-schemas.c:2129 #, c-format msgid "removed existing output file.\n" msgstr "meglévő kimeneti fájl eltávolítva.\n" -#: ../gio/glocaldirectorymonitor.c:224 -msgid "Unable to find default local directory monitor type" -msgstr "Nem található az alapértelmezett helyi könyvtárfigyelő típus" - -#: ../gio/glocalfile.c:604 ../gio/win32/gwinhttpfile.c:420 +#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420 #, c-format msgid "Invalid filename %s" msgstr "Érvénytelen fájlnév: %s" -#: ../gio/glocalfile.c:981 +#: ../gio/glocalfile.c:1012 #, c-format msgid "Error getting filesystem info: %s" msgstr "Hiba a fájlrendszer-információk lekérése közben: %s" -#: ../gio/glocalfile.c:1149 +#: ../gio/glocalfile.c:1180 msgid "Can't rename root directory" msgstr "Nem nevezhető át a gyökérkönyvtár" -#: ../gio/glocalfile.c:1169 ../gio/glocalfile.c:1195 +#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226 #, c-format msgid "Error renaming file: %s" msgstr "Hiba a fájl átnevezése közben: %s" -#: ../gio/glocalfile.c:1178 +#: ../gio/glocalfile.c:1209 msgid "Can't rename file, filename already exists" msgstr "A fájl nem nevezhető át, a fájlnév már létezik" -#: ../gio/glocalfile.c:1191 ../gio/glocalfile.c:2210 ../gio/glocalfile.c:2239 -#: ../gio/glocalfile.c:2399 ../gio/glocalfileoutputstream.c:549 +#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2249 ../gio/glocalfile.c:2278 +#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549 msgid "Invalid filename" msgstr "Érvénytelen fájlnév" -#: ../gio/glocalfile.c:1358 ../gio/glocalfile.c:1382 +#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413 msgid "Can't open directory" msgstr "A könyvtár nem nyitható meg" -#: ../gio/glocalfile.c:1366 +#: ../gio/glocalfile.c:1397 #, c-format msgid "Error opening file: %s" msgstr "Hiba a fájl megnyitása közben: %s" -#: ../gio/glocalfile.c:1507 +#: ../gio/glocalfile.c:1538 #, c-format msgid "Error removing file: %s" msgstr "Hiba a fájl eltávolítása közben: %s" -#: ../gio/glocalfile.c:1887 +#: ../gio/glocalfile.c:1922 #, c-format msgid "Error trashing file: %s" msgstr "Hiba fájl kidobása közben: %s" -#: ../gio/glocalfile.c:1910 +#: ../gio/glocalfile.c:1945 #, c-format msgid "Unable to create trash dir %s: %s" msgstr "Nem sikerült létrehozni a(z) %s Kuka könyvtárat: %s" -#: ../gio/glocalfile.c:1931 +#: ../gio/glocalfile.c:1966 msgid "Unable to find toplevel directory for trash" msgstr "Nem található a Kuka felső szintű könyvtára" -#: ../gio/glocalfile.c:2010 ../gio/glocalfile.c:2030 +#: ../gio/glocalfile.c:2045 ../gio/glocalfile.c:2065 msgid "Unable to find or create trash directory" msgstr "Nem található vagy nem hozható létre a Kuka könyvtár" -#: ../gio/glocalfile.c:2064 +#: ../gio/glocalfile.c:2099 #, c-format msgid "Unable to create trashing info file: %s" msgstr "Nem sikerült létrehozni a kukainformációs fájlt: %s" -#: ../gio/glocalfile.c:2095 ../gio/glocalfile.c:2100 ../gio/glocalfile.c:2180 -#: ../gio/glocalfile.c:2187 +#: ../gio/glocalfile.c:2157 ../gio/glocalfile.c:2162 ../gio/glocalfile.c:2219 +#: ../gio/glocalfile.c:2226 #, c-format msgid "Unable to trash file: %s" msgstr "Nem lehet a Kukába dobni a fájlt: %s" -#: ../gio/glocalfile.c:2188 ../glib/gregex.c:281 +#: ../gio/glocalfile.c:2227 ../glib/gregex.c:281 msgid "internal error" msgstr "belső hiba" -#: ../gio/glocalfile.c:2214 +#: ../gio/glocalfile.c:2253 #, c-format msgid "Error creating directory: %s" msgstr "Hiba a könyvtár létrehozásakor: %s" -#: ../gio/glocalfile.c:2243 +#: ../gio/glocalfile.c:2282 #, c-format msgid "Filesystem does not support symbolic links" msgstr "A fájlrendszer nem támogatja a szimbolikus linkeket" -#: ../gio/glocalfile.c:2247 +#: ../gio/glocalfile.c:2286 #, c-format msgid "Error making symbolic link: %s" msgstr "Hiba a szimbolikus link létrehozása során: %s" -#: ../gio/glocalfile.c:2309 ../gio/glocalfile.c:2403 +#: ../gio/glocalfile.c:2348 ../gio/glocalfile.c:2442 #, c-format msgid "Error moving file: %s" msgstr "Hiba a fájl áthelyezésekor: %s" -#: ../gio/glocalfile.c:2332 +#: ../gio/glocalfile.c:2371 msgid "Can't move directory over directory" msgstr "A könyvtár nem helyezhető át könyvtárba" -#: ../gio/glocalfile.c:2359 ../gio/glocalfileoutputstream.c:925 +#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:925 #: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954 #: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984 msgid "Backup file creation failed" msgstr "A mentési fájl létrehozása meghiúsult" -#: ../gio/glocalfile.c:2378 +#: ../gio/glocalfile.c:2417 #, c-format msgid "Error removing target file: %s" msgstr "Hiba a célfájl eltávolításakor: %s" -#: ../gio/glocalfile.c:2392 +#: ../gio/glocalfile.c:2431 msgid "Move between mounts not supported" msgstr "A csatolások közti áthelyezés nem támogatott" -#: ../gio/glocalfile.c:2603 +#: ../gio/glocalfile.c:2623 #, c-format msgid "Could not determine the disk usage of %s: %s" msgstr "Nem lehet meghatározni %s lemezhasználatát: %s" @@ -2019,79 +2045,79 @@ msgstr "Érvénytelen kiterjesztett attribútumnév" msgid "Error setting extended attribute '%s': %s" msgstr "Hiba a(z) „%s” kiterjesztett attribútum beállításakor: %s" -#: ../gio/glocalfileinfo.c:1556 +#: ../gio/glocalfileinfo.c:1575 msgid " (invalid encoding)" msgstr " (érvénytelen kódolás)" -#: ../gio/glocalfileinfo.c:1747 ../gio/glocalfileoutputstream.c:803 +#: ../gio/glocalfileinfo.c:1766 ../gio/glocalfileoutputstream.c:803 #, c-format msgid "Error when getting information for file '%s': %s" msgstr "Hiba a(z) „%s” fájl információinak lekérésekor: %s" -#: ../gio/glocalfileinfo.c:1998 +#: ../gio/glocalfileinfo.c:2017 #, c-format msgid "Error when getting information for file descriptor: %s" msgstr "Hiba a fájlleíró információinak lekérésekor: %s" -#: ../gio/glocalfileinfo.c:2043 +#: ../gio/glocalfileinfo.c:2062 msgid "Invalid attribute type (uint32 expected)" msgstr "Érvénytelen attribútumtípus (a várt uint32 helyett)" -#: ../gio/glocalfileinfo.c:2061 +#: ../gio/glocalfileinfo.c:2080 msgid "Invalid attribute type (uint64 expected)" msgstr "Érvénytelen attribútumtípus (a várt uint64 helyett)" -#: ../gio/glocalfileinfo.c:2080 ../gio/glocalfileinfo.c:2099 +#: ../gio/glocalfileinfo.c:2099 ../gio/glocalfileinfo.c:2118 msgid "Invalid attribute type (byte string expected)" msgstr "Érvénytelen attribútumtípus (a várt bájtkarakterlánc helyett)" -#: ../gio/glocalfileinfo.c:2134 +#: ../gio/glocalfileinfo.c:2153 msgid "Cannot set permissions on symlinks" msgstr "Nem állíthatók be a szimbolikus linkek jogosultságai" -#: ../gio/glocalfileinfo.c:2150 +#: ../gio/glocalfileinfo.c:2169 #, c-format msgid "Error setting permissions: %s" msgstr "Hiba a jogosultságok beállításakor: %s" -#: ../gio/glocalfileinfo.c:2201 +#: ../gio/glocalfileinfo.c:2220 #, c-format msgid "Error setting owner: %s" msgstr "Hiba a tulajdonos beállításakor: %s" -#: ../gio/glocalfileinfo.c:2224 +#: ../gio/glocalfileinfo.c:2243 msgid "symlink must be non-NULL" msgstr "a szimbolikus link nem lehet NULL" -#: ../gio/glocalfileinfo.c:2234 ../gio/glocalfileinfo.c:2253 -#: ../gio/glocalfileinfo.c:2264 +#: ../gio/glocalfileinfo.c:2253 ../gio/glocalfileinfo.c:2272 +#: ../gio/glocalfileinfo.c:2283 #, c-format msgid "Error setting symlink: %s" msgstr "Hiba a szimbolikus link beállításakor: %s" -#: ../gio/glocalfileinfo.c:2243 +#: ../gio/glocalfileinfo.c:2262 msgid "Error setting symlink: file is not a symlink" msgstr "Hiba a szimbolikus link beállításakor: a fájl nem szimbolikus link" -#: ../gio/glocalfileinfo.c:2369 +#: ../gio/glocalfileinfo.c:2388 #, c-format msgid "Error setting modification or access time: %s" msgstr "Hiba a módosítási vagy hozzáférési idő beállításakor: %s" -#: ../gio/glocalfileinfo.c:2392 +#: ../gio/glocalfileinfo.c:2411 msgid "SELinux context must be non-NULL" msgstr "A SELinux környezet nem lehet NULL" -#: ../gio/glocalfileinfo.c:2407 +#: ../gio/glocalfileinfo.c:2426 #, c-format msgid "Error setting SELinux context: %s" msgstr "Hiba a SELinux környezet beállításakor: %s" -#: ../gio/glocalfileinfo.c:2414 +#: ../gio/glocalfileinfo.c:2433 msgid "SELinux is not enabled on this system" msgstr "A SELinux nem engedélyezett ezen rendszeren" -#: ../gio/glocalfileinfo.c:2506 +#: ../gio/glocalfileinfo.c:2525 #, c-format msgid "Setting attribute %s not supported" msgstr "A(z) %s attribútum beállítása nem támogatott" @@ -2114,7 +2140,7 @@ msgstr "Hiba a fájlban kereséskor: %s" msgid "Error closing file: %s" msgstr "Hiba a fájl lezárásakor: %s" -#: ../gio/glocalfilemonitor.c:145 +#: ../gio/glocalfilemonitor.c:840 msgid "Unable to find default local file monitor type" msgstr "Nem található az alapértelmezett helyi fájlfigyelő típus" @@ -2167,7 +2193,7 @@ msgstr "A fájlt külső program módosította" msgid "Error removing old file: %s" msgstr "Hiba a régi fájl eltávolítása közben: %s" -#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:769 +#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:771 msgid "Invalid GSeekType supplied" msgstr "A megadott GSeekType nem támogatott" @@ -2179,15 +2205,15 @@ msgstr "Érvénytelen keresési kérés" msgid "Cannot truncate GMemoryInputStream" msgstr "A GMemoryInputStream nem csonkítható" -#: ../gio/gmemoryoutputstream.c:565 +#: ../gio/gmemoryoutputstream.c:567 msgid "Memory output stream not resizable" msgstr "A memóriakimeneti adatfolyam nem méretezhető át" -#: ../gio/gmemoryoutputstream.c:581 +#: ../gio/gmemoryoutputstream.c:583 msgid "Failed to resize memory output stream" msgstr "A memóriakimeneti adatfolyam átméretezése meghiúsult" -#: ../gio/gmemoryoutputstream.c:671 +#: ../gio/gmemoryoutputstream.c:673 msgid "" "Amount of memory required to process the write is larger than available " "address space" @@ -2195,11 +2221,11 @@ msgstr "" "Az írás feldolgozásához szükséges memória mérete nagyobb, mint az elérhető " "címtér" -#: ../gio/gmemoryoutputstream.c:779 +#: ../gio/gmemoryoutputstream.c:781 msgid "Requested seek before the beginning of the stream" msgstr "Pozicionálási kérés az adatfolyam eleje elé" -#: ../gio/gmemoryoutputstream.c:794 +#: ../gio/gmemoryoutputstream.c:796 msgid "Requested seek beyond the end of the stream" msgstr "Pozicionálási kérés az adatfolyam vége mögé" @@ -2256,16 +2282,16 @@ msgstr "A csatolás nem valósítja meg a tartalomtípus meghatározását" msgid "mount doesn't implement synchronous content type guessing" msgstr "A csatolás nem valósítja meg a tartalomtípus szinkron meghatározását" -#: ../gio/gnetworkaddress.c:383 +#: ../gio/gnetworkaddress.c:378 #, c-format msgid "Hostname '%s' contains '[' but not ']'" msgstr "A gépnév („%s”) „[” karaktert tartalmaz „]” nélkül" -#: ../gio/gnetworkmonitorbase.c:199 ../gio/gnetworkmonitorbase.c:302 +#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:309 msgid "Network unreachable" msgstr "A hálózat elérhetetlen" -#: ../gio/gnetworkmonitorbase.c:237 ../gio/gnetworkmonitorbase.c:267 +#: ../gio/gnetworkmonitorbase.c:244 ../gio/gnetworkmonitorbase.c:274 msgid "Host unreachable" msgstr "A gép elérhetetlen" @@ -2283,52 +2309,52 @@ msgstr "Nem hozható létre a hálózatfigyelő: " msgid "Could not get network status: " msgstr "Nem kérhető le a hálózat állapota: " -#: ../gio/gnetworkmonitornm.c:278 +#: ../gio/gnetworkmonitornm.c:326 #, c-format msgid "NetworkManager version too old" msgstr "A Hálózatkezelő verziója túl régi" -#: ../gio/goutputstream.c:209 ../gio/goutputstream.c:557 +#: ../gio/goutputstream.c:212 ../gio/goutputstream.c:560 msgid "Output stream doesn't implement write" msgstr "A kimeneti adatfolyam nem valósítja meg az írást" -#: ../gio/goutputstream.c:518 ../gio/goutputstream.c:1218 +#: ../gio/goutputstream.c:521 ../gio/goutputstream.c:1222 msgid "Source stream is already closed" msgstr "A forrás adatfolyam már le van zárva" -#: ../gio/gresolver.c:331 ../gio/gthreadedresolver.c:116 +#: ../gio/gresolver.c:330 ../gio/gthreadedresolver.c:116 #: ../gio/gthreadedresolver.c:126 #, c-format msgid "Error resolving '%s': %s" msgstr "Hiba a(z) „%s” feloldása közben: %s" -#: ../gio/gresource.c:298 ../gio/gresource.c:546 ../gio/gresource.c:563 -#: ../gio/gresource.c:684 ../gio/gresource.c:753 ../gio/gresource.c:814 -#: ../gio/gresource.c:894 ../gio/gresourcefile.c:452 -#: ../gio/gresourcefile.c:553 ../gio/gresourcefile.c:655 +#: ../gio/gresource.c:304 ../gio/gresource.c:555 ../gio/gresource.c:572 +#: ../gio/gresource.c:693 ../gio/gresource.c:762 ../gio/gresource.c:823 +#: ../gio/gresource.c:903 ../gio/gresourcefile.c:453 ../gio/gresourcefile.c:576 +#: ../gio/gresourcefile.c:713 #, c-format msgid "The resource at '%s' does not exist" msgstr "Az erőforrás nem létezik itt: „%s”" -#: ../gio/gresource.c:463 +#: ../gio/gresource.c:469 #, c-format msgid "The resource at '%s' failed to decompress" msgstr "Az erőforrás kicsomagolása meghiúsult itt: „%s”" -#: ../gio/gresourcefile.c:651 +#: ../gio/gresourcefile.c:709 #, c-format msgid "The resource at '%s' is not a directory" msgstr "Az erőforrás nem könyvtár itt: „%s”" -#: ../gio/gresourcefile.c:859 +#: ../gio/gresourcefile.c:917 msgid "Input stream doesn't implement seek" msgstr "A bemeneti adatfolyam nem valósítja meg a pozicionálást" -#: ../gio/gresource-tool.c:491 +#: ../gio/gresource-tool.c:494 msgid "List sections containing resources in an elf FILE" msgstr "Elf FÁJLBAN erőforrásokat tartalmazó szakaszok felsorolása" -#: ../gio/gresource-tool.c:497 +#: ../gio/gresource-tool.c:500 msgid "" "List resources\n" "If SECTION is given, only list resources in this section\n" @@ -2339,16 +2365,16 @@ msgstr "" "felsorolása\n" "Ha az ÚTVONAL meg van adva, akkor csak az illeszkedő erőforrások felsorolása" -#: ../gio/gresource-tool.c:500 ../gio/gresource-tool.c:510 +#: ../gio/gresource-tool.c:503 ../gio/gresource-tool.c:513 msgid "FILE [PATH]" msgstr "FÁJL [ÚTVONAL]" -#: ../gio/gresource-tool.c:501 ../gio/gresource-tool.c:511 -#: ../gio/gresource-tool.c:518 +#: ../gio/gresource-tool.c:504 ../gio/gresource-tool.c:514 +#: ../gio/gresource-tool.c:521 msgid "SECTION" msgstr "SZAKASZ" -#: ../gio/gresource-tool.c:506 +#: ../gio/gresource-tool.c:509 msgid "" "List resources with details\n" "If SECTION is given, only list resources in this section\n" @@ -2362,15 +2388,15 @@ msgstr "" "felsorolása\n" "A részletek közé a szakasz, méret és tömörítés tartozik" -#: ../gio/gresource-tool.c:516 +#: ../gio/gresource-tool.c:519 msgid "Extract a resource file to stdout" msgstr "Erőforrásfájl kibontása a szabványos kimenetre" -#: ../gio/gresource-tool.c:517 +#: ../gio/gresource-tool.c:520 msgid "FILE PATH" msgstr "FÁJL ÚTVONAL" -#: ../gio/gresource-tool.c:531 +#: ../gio/gresource-tool.c:534 msgid "" "Usage:\n" " gresource [--section SECTION] COMMAND [ARGS...]\n" @@ -2398,7 +2424,7 @@ msgstr "" "Részletes segítségért adja ki a „gresource help PARANCS” parancsot.\n" "\n" -#: ../gio/gresource-tool.c:545 +#: ../gio/gresource-tool.c:548 #, c-format msgid "" "Usage:\n" @@ -2413,19 +2439,19 @@ msgstr "" "%s\n" "\n" -#: ../gio/gresource-tool.c:552 +#: ../gio/gresource-tool.c:555 msgid " SECTION An (optional) elf section name\n" msgstr " SZAKASZ Egy elhagyható elf szakasznév\n" -#: ../gio/gresource-tool.c:556 ../gio/gsettings-tool.c:648 +#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:639 msgid " COMMAND The (optional) command to explain\n" msgstr " PARANCS A megmagyarázandó (elhagyható) parancs\n" -#: ../gio/gresource-tool.c:562 +#: ../gio/gresource-tool.c:565 msgid " FILE An elf file (a binary or a shared library)\n" msgstr " FÁJL Egy elf fájl (bináris vagy megosztott programkönyvtár)\n" -#: ../gio/gresource-tool.c:565 +#: ../gio/gresource-tool.c:568 msgid "" " FILE An elf file (a binary or a shared library)\n" " or a compiled resource file\n" @@ -2434,23 +2460,24 @@ msgstr "" "\n" " vagy lefordított erőforrásfájl\n" -#: ../gio/gresource-tool.c:569 +#: ../gio/gresource-tool.c:572 msgid "[PATH]" msgstr "[ÚTVONAL]" -#: ../gio/gresource-tool.c:571 +#: ../gio/gresource-tool.c:574 msgid " PATH An (optional) resource path (may be partial)\n" msgstr " ÚTVONAL Egy elhagyható erőforrás-útvonal (részleges is lehet)\n" -#: ../gio/gresource-tool.c:572 +#: ../gio/gresource-tool.c:575 msgid "PATH" msgstr "ÚTVONAL" -#: ../gio/gresource-tool.c:574 +#: ../gio/gresource-tool.c:577 msgid " PATH A resource path\n" msgstr " ÚTVONAL Egy erőforrás-útvonal\n" #: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72 +#: ../gio/gsettings-tool.c:830 #, c-format msgid "No such schema '%s'\n" msgstr "Nincs „%s” séma\n" @@ -2485,38 +2512,38 @@ msgstr "Az útvonalnak osztásjellel (/) kell végződnie\n" msgid "Path must not contain two adjacent slashes (//)\n" msgstr "Az útvonal nem tartalmazhat két szomszédos osztásjelet (//)\n" -#: ../gio/gsettings-tool.c:490 +#: ../gio/gsettings-tool.c:481 #, c-format msgid "The provided value is outside of the valid range\n" msgstr "A megadott érték kívül esik az érvényes tartományon\n" -#: ../gio/gsettings-tool.c:497 +#: ../gio/gsettings-tool.c:488 #, c-format msgid "The key is not writable\n" msgstr "A kulcs nem írható\n" -#: ../gio/gsettings-tool.c:533 +#: ../gio/gsettings-tool.c:524 msgid "List the installed (non-relocatable) schemas" msgstr "A telepített (át nem helyezhető) sémák felsorolása" -#: ../gio/gsettings-tool.c:539 +#: ../gio/gsettings-tool.c:530 msgid "List the installed relocatable schemas" msgstr "A telepített áthelyezhető sémák felsorolása" -#: ../gio/gsettings-tool.c:545 +#: ../gio/gsettings-tool.c:536 msgid "List the keys in SCHEMA" msgstr "A SÉMA kulcsainak felsorolása" -#: ../gio/gsettings-tool.c:546 ../gio/gsettings-tool.c:552 -#: ../gio/gsettings-tool.c:589 +#: ../gio/gsettings-tool.c:537 ../gio/gsettings-tool.c:543 +#: ../gio/gsettings-tool.c:580 msgid "SCHEMA[:PATH]" msgstr "SÉMA[:ÚTVONAL]" -#: ../gio/gsettings-tool.c:551 +#: ../gio/gsettings-tool.c:542 msgid "List the children of SCHEMA" msgstr "A SÉMA gyermekeinek felsorolása" -#: ../gio/gsettings-tool.c:557 +#: ../gio/gsettings-tool.c:548 msgid "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" @@ -2524,44 +2551,44 @@ msgstr "" "Kulcsok és értékek rekurzív felsorolása\n" "Ha nincs megadva SÉMA, az összes kulcs felsorolása\n" -#: ../gio/gsettings-tool.c:559 +#: ../gio/gsettings-tool.c:550 msgid "[SCHEMA[:PATH]]" msgstr "[SÉMA[:ÚTVONAL]]" -#: ../gio/gsettings-tool.c:564 +#: ../gio/gsettings-tool.c:555 msgid "Get the value of KEY" msgstr "A KULCS értékének lekérése" -#: ../gio/gsettings-tool.c:565 ../gio/gsettings-tool.c:571 -#: ../gio/gsettings-tool.c:583 ../gio/gsettings-tool.c:595 +#: ../gio/gsettings-tool.c:556 ../gio/gsettings-tool.c:562 +#: ../gio/gsettings-tool.c:574 ../gio/gsettings-tool.c:586 msgid "SCHEMA[:PATH] KEY" msgstr "SÉMA[:ÚTVONAL] KULCS" -#: ../gio/gsettings-tool.c:570 +#: ../gio/gsettings-tool.c:561 msgid "Query the range of valid values for KEY" msgstr "A KULCS érvényes értékeinek tartományának lekérése" -#: ../gio/gsettings-tool.c:576 +#: ../gio/gsettings-tool.c:567 msgid "Set the value of KEY to VALUE" msgstr "A KULCS értékének beállítása az ÉRTÉKRE" -#: ../gio/gsettings-tool.c:577 +#: ../gio/gsettings-tool.c:568 msgid "SCHEMA[:PATH] KEY VALUE" msgstr "SÉMA[:ÚTVONAL] KULCS ÉRTÉK" -#: ../gio/gsettings-tool.c:582 +#: ../gio/gsettings-tool.c:573 msgid "Reset KEY to its default value" msgstr "A KULCS visszaállítása az alapértékére" -#: ../gio/gsettings-tool.c:588 +#: ../gio/gsettings-tool.c:579 msgid "Reset all keys in SCHEMA to their defaults" msgstr "A SÉMA minden kulcsának visszaállítása az alapértékekre" -#: ../gio/gsettings-tool.c:594 +#: ../gio/gsettings-tool.c:585 msgid "Check if KEY is writable" msgstr "A KULCS írhatóságának ellenőrzése" -#: ../gio/gsettings-tool.c:600 +#: ../gio/gsettings-tool.c:591 msgid "" "Monitor KEY for changes.\n" "If no KEY is specified, monitor all keys in SCHEMA.\n" @@ -2571,11 +2598,11 @@ msgstr "" "Ha nincs megadva KULCS, akkor a SÉMA összes kulcsának figyelése.\n" "A figyelés befejezéséhez nyomja meg a ^C kombinációt.\n" -#: ../gio/gsettings-tool.c:603 +#: ../gio/gsettings-tool.c:594 msgid "SCHEMA[:PATH] [KEY]" msgstr "SÉMA[:ÚTVONAL] [KULCS]" -#: ../gio/gsettings-tool.c:615 +#: ../gio/gsettings-tool.c:606 msgid "" "Usage:\n" " gsettings --version\n" @@ -2621,7 +2648,7 @@ msgstr "" "Részletes segítségért adja ki a „gsettings help PARANCS” parancsot.\n" "\n" -#: ../gio/gsettings-tool.c:638 +#: ../gio/gsettings-tool.c:629 #, c-format msgid "" "Usage:\n" @@ -2636,11 +2663,11 @@ msgstr "" "%s\n" "\n" -#: ../gio/gsettings-tool.c:644 +#: ../gio/gsettings-tool.c:635 msgid " SCHEMADIR A directory to search for additional schemas\n" msgstr " SÉMAKVT További sémák keresése ebben a könyvtárban\n" -#: ../gio/gsettings-tool.c:652 +#: ../gio/gsettings-tool.c:643 msgid "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" @@ -2648,160 +2675,179 @@ msgstr "" " SÉMA A séma neve\n" " ÚTVONAL Az áthelyezhető sémák útvonala\n" -#: ../gio/gsettings-tool.c:657 +#: ../gio/gsettings-tool.c:648 msgid " KEY The (optional) key within the schema\n" msgstr " KULCS A sémán belüli (elhagyható) kulcs\n" -#: ../gio/gsettings-tool.c:661 +#: ../gio/gsettings-tool.c:652 msgid " KEY The key within the schema\n" msgstr " KULCS A sémán belüli kulcs\n" -#: ../gio/gsettings-tool.c:665 +#: ../gio/gsettings-tool.c:656 msgid " VALUE The value to set\n" msgstr " ÉRTÉK A beállítandó érték\n" -#: ../gio/gsettings-tool.c:720 +#: ../gio/gsettings-tool.c:711 #, c-format msgid "Could not load schemas from %s: %s\n" msgstr "Nem lehet sémákat betölteni ebből: %s: %s\n" -#: ../gio/gsettings-tool.c:782 +#: ../gio/gsettings-tool.c:723 +#, c-format +#| msgid "No schema files found: " +msgid "No schemas installed\n" +msgstr "Nincsenek telepítve sémák\n" + +#: ../gio/gsettings-tool.c:788 #, c-format msgid "Empty schema name given\n" msgstr "Üres sémanevet adott meg\n" -#: ../gio/gsettings-tool.c:811 +#: ../gio/gsettings-tool.c:843 #, c-format msgid "No such key '%s'\n" msgstr "Nincs „%s” kulcs\n" -#: ../gio/gsocket.c:271 +#: ../gio/gsocket.c:364 msgid "Invalid socket, not initialized" msgstr "Érvénytelen foglalat, nincs előkészítve" -#: ../gio/gsocket.c:278 +#: ../gio/gsocket.c:371 #, c-format msgid "Invalid socket, initialization failed due to: %s" msgstr "Érvénytelen foglalat, az előkészítés meghiúsulásának oka: %s" -#: ../gio/gsocket.c:286 +#: ../gio/gsocket.c:379 msgid "Socket is already closed" msgstr "A foglalat már le van zárva" -#: ../gio/gsocket.c:301 ../gio/gsocket.c:3627 ../gio/gsocket.c:3682 +#: ../gio/gsocket.c:394 ../gio/gsocket.c:2751 ../gio/gsocket.c:3896 +#: ../gio/gsocket.c:3951 msgid "Socket I/O timed out" msgstr "A foglalat I/O túllépte az időkorlátot" -#: ../gio/gsocket.c:448 +#: ../gio/gsocket.c:526 #, c-format msgid "creating GSocket from fd: %s" msgstr "GSocket létrehozása fájlleíróból: %s" -#: ../gio/gsocket.c:476 ../gio/gsocket.c:530 ../gio/gsocket.c:537 +#: ../gio/gsocket.c:554 ../gio/gsocket.c:608 ../gio/gsocket.c:615 #, c-format msgid "Unable to create socket: %s" msgstr "Nem sikerült létrehozni foglalatot: %s" -#: ../gio/gsocket.c:530 +#: ../gio/gsocket.c:608 msgid "Unknown family was specified" msgstr "Ismeretlen családot adtak meg" -#: ../gio/gsocket.c:537 +#: ../gio/gsocket.c:615 msgid "Unknown protocol was specified" msgstr "Ismeretlen protokollt adtak meg" -#: ../gio/gsocket.c:1727 +#: ../gio/gsocket.c:1104 +#, c-format +msgid "Cannot use datagram operations on a non-datagram socket." +msgstr "A datagram műveletek nem használhatóak nem-datagram foglalaton." + +#: ../gio/gsocket.c:1121 +#, c-format +msgid "Cannot use datagram operations on a socket with a timeout set." +msgstr "" +"A datagram műveletek nem használhatóak olyan foglalaton, amelyre időtúllépés " +"van beállítva." + +#: ../gio/gsocket.c:1925 #, c-format msgid "could not get local address: %s" msgstr "nem kérhető le a helyi cím: %s" -#: ../gio/gsocket.c:1770 +#: ../gio/gsocket.c:1968 #, c-format msgid "could not get remote address: %s" msgstr "nem kérhető le a távoli cím: %s" -#: ../gio/gsocket.c:1831 +#: ../gio/gsocket.c:2034 #, c-format msgid "could not listen: %s" msgstr "nem lehet figyelni: %s" -#: ../gio/gsocket.c:1930 +#: ../gio/gsocket.c:2133 #, c-format msgid "Error binding to address: %s" msgstr "Hiba a címhez csatlakozáskor: %s" -#: ../gio/gsocket.c:2045 ../gio/gsocket.c:2082 +#: ../gio/gsocket.c:2248 ../gio/gsocket.c:2285 #, c-format msgid "Error joining multicast group: %s" msgstr "Hiba a multicast csoporthoz csatlakozáskor: %s" -#: ../gio/gsocket.c:2046 ../gio/gsocket.c:2083 +#: ../gio/gsocket.c:2249 ../gio/gsocket.c:2286 #, c-format msgid "Error leaving multicast group: %s" msgstr "Hiba a multicast csoport elhagyásakor: %s" -#: ../gio/gsocket.c:2047 +#: ../gio/gsocket.c:2250 msgid "No support for source-specific multicast" msgstr "A forrásspecifikus multicast nem támogatott" -#: ../gio/gsocket.c:2269 +#: ../gio/gsocket.c:2470 #, c-format msgid "Error accepting connection: %s" msgstr "Hiba a kapcsolat elfogadásakor: %s" -#: ../gio/gsocket.c:2392 +#: ../gio/gsocket.c:2593 msgid "Connection in progress" msgstr "Csatlakozás folyamatban" -#: ../gio/gsocket.c:2442 +#: ../gio/gsocket.c:2644 msgid "Unable to get pending error: " msgstr "Nem lehet lekérni a függőben lévő hibát:" -#: ../gio/gsocket.c:2645 +#: ../gio/gsocket.c:2816 #, c-format msgid "Error receiving data: %s" msgstr "Hiba az adatok fogadásakor: %s" -#: ../gio/gsocket.c:2820 +#: ../gio/gsocket.c:3013 #, c-format msgid "Error sending data: %s" msgstr "Hiba az adatok küldésekor: %s" -#: ../gio/gsocket.c:2934 +#: ../gio/gsocket.c:3200 #, c-format msgid "Unable to shutdown socket: %s" msgstr "Nem sikerült leállítani a foglalatot: %s" -#: ../gio/gsocket.c:3013 +#: ../gio/gsocket.c:3281 #, c-format msgid "Error closing socket: %s" msgstr "Hiba a foglalat lezárásakor: %s" -#: ../gio/gsocket.c:3620 +#: ../gio/gsocket.c:3889 #, c-format msgid "Waiting for socket condition: %s" msgstr "Várakozás a foglalat állapotára: %s" -#: ../gio/gsocket.c:3907 ../gio/gsocket.c:3990 ../gio/gsocket.c:4218 +#: ../gio/gsocket.c:4361 ../gio/gsocket.c:4441 ../gio/gsocket.c:4619 #, c-format msgid "Error sending message: %s" msgstr "Hiba az üzenet küldésekor: %s" -#: ../gio/gsocket.c:3932 +#: ../gio/gsocket.c:4385 msgid "GSocketControlMessage not supported on Windows" msgstr "A GSocketControlMessage nem támogatott Windowson" -#: ../gio/gsocket.c:4546 ../gio/gsocket.c:4684 +#: ../gio/gsocket.c:4840 ../gio/gsocket.c:4913 ../gio/gsocket.c:5140 #, c-format msgid "Error receiving message: %s" msgstr "Hiba az üzenet fájl eltávolítása fogadásakor: %s" -#: ../gio/gsocket.c:4806 +#: ../gio/gsocket.c:5412 #, c-format msgid "Unable to read socket credentials: %s" msgstr "Nem sikerült olvasni a foglalat hitelesítési adatait: %s" -#: ../gio/gsocket.c:4815 +#: ../gio/gsocket.c:5421 msgid "g_socket_get_credentials not implemented for this OS" msgstr "a g_socket_get_credentials nincs megvalósítva erre az OS-re" @@ -2832,11 +2878,11 @@ msgstr "A proxyzás nem TCP kapcsolaton keresztül nem támogatott." msgid "Proxy protocol '%s' is not supported." msgstr "A proxyprotokoll („%s”) nem támogatott." -#: ../gio/gsocketlistener.c:188 +#: ../gio/gsocketlistener.c:218 msgid "Listener is already closed" msgstr "A figyelő már le van zárva" -#: ../gio/gsocketlistener.c:234 +#: ../gio/gsocketlistener.c:264 msgid "Added socket is closed" msgstr "A hozzáadott foglalat le van zárva" @@ -3051,12 +3097,13 @@ msgstr "A program nem várt vezérlőüzenetet, de %d érkezett" msgid "Error while disabling SO_PASSCRED: %s" msgstr "Hiba a SO_PASSCRED letiltásakor: %s" -#: ../gio/gunixinputstream.c:370 ../gio/gunixinputstream.c:391 +#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390 #, c-format msgid "Error reading from file descriptor: %s" msgstr "Hiba a fájlleíróból olvasáskor: %s" -#: ../gio/gunixinputstream.c:424 ../gio/gunixoutputstream.c:410 +#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409 +#: ../gio/gwin32inputstream.c:217 ../gio/gwin32outputstream.c:204 #, c-format msgid "Error closing file descriptor: %s" msgstr "Hiba a fájlleíró lezárásakor: %s" @@ -3065,12 +3112,12 @@ msgstr "Hiba a fájlleíró lezárásakor: %s" msgid "Filesystem root" msgstr "Fájlrendszer gyökere" -#: ../gio/gunixoutputstream.c:356 ../gio/gunixoutputstream.c:377 +#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376 #, c-format msgid "Error writing to file descriptor: %s" msgstr "Hiba a fájlleíróba íráskor: %s" -#: ../gio/gunixsocketaddress.c:232 +#: ../gio/gunixsocketaddress.c:239 msgid "Abstract UNIX domain socket addresses not supported on this system" msgstr "" "Az absztrakt UNIX tartományfoglalat-címek nem támogatottak ezen a rendszeren" @@ -3087,34 +3134,17 @@ msgid "volume doesn't implement eject or eject_with_operation" msgstr "" "a kötet nem valósítja meg a kiadást vagy a eject_with_operation függvényt" -#: ../gio/gwin32appinfo.c:274 -msgid "Can't find application" -msgstr "Nem található az alkalmazás" - -#: ../gio/gwin32appinfo.c:303 -#, c-format -msgid "Error launching application: %s" -msgstr "Hiba az alkalmazás indításakor: %s" - -#: ../gio/gwin32appinfo.c:378 -msgid "association changes not supported on win32" -msgstr "a társításmódosítások nem támogatottak win32 rendszeren" - -#: ../gio/gwin32appinfo.c:390 -msgid "Association creation not supported on win32" -msgstr "A társítás létrehozása nem támogatott win32 rendszeren" - -#: ../gio/gwin32inputstream.c:344 +#: ../gio/gwin32inputstream.c:185 #, c-format msgid "Error reading from handle: %s" msgstr "Hiba a leíróból való olvasáskor: %s" -#: ../gio/gwin32inputstream.c:388 ../gio/gwin32outputstream.c:375 +#: ../gio/gwin32inputstream.c:232 ../gio/gwin32outputstream.c:219 #, c-format msgid "Error closing handle: %s" msgstr "Hiba a leíró lezárásakor: %s" -#: ../gio/gwin32outputstream.c:331 +#: ../gio/gwin32outputstream.c:172 #, c-format msgid "Error writing to handle: %s" msgstr "Hiba a leíróba íráskor: %s" @@ -3234,8 +3264,8 @@ msgid "Failed to expand exec line '%s' with URI '%s'" msgstr "" "Nem sikerült kiterjeszteni a(z) „%s” végrehajtási sort a(z) „%s” URL címmel" -#: ../glib/gconvert.c:477 ../glib/gutf8.c:833 ../glib/gutf8.c:1044 -#: ../glib/gutf8.c:1181 ../glib/gutf8.c:1285 +#: ../glib/gconvert.c:477 ../glib/gutf8.c:849 ../glib/gutf8.c:1061 +#: ../glib/gutf8.c:1198 ../glib/gutf8.c:1302 msgid "Partial character sequence at end of input" msgstr "Részleges karaktersorozat a bemenet végén" @@ -3244,38 +3274,38 @@ msgstr "Részleges karaktersorozat a bemenet végén" msgid "Cannot convert fallback '%s' to codeset '%s'" msgstr "Nem alakítható át a tartalék „%s” a(z) „%s” kódkészletre" -#: ../glib/gconvert.c:1566 +#: ../glib/gconvert.c:1567 #, c-format msgid "The URI '%s' is not an absolute URI using the \"file\" scheme" msgstr "A(z) „%s” URI nem abszolút, a „file” sémát használó URI" -#: ../glib/gconvert.c:1576 +#: ../glib/gconvert.c:1577 #, c-format msgid "The local file URI '%s' may not include a '#'" msgstr "A(z) „%s” helyi fájl URI nem tartalmazhat „#” karaktert" -#: ../glib/gconvert.c:1593 +#: ../glib/gconvert.c:1594 #, c-format msgid "The URI '%s' is invalid" msgstr "A(z) „%s” URI érvénytelen" -#: ../glib/gconvert.c:1605 +#: ../glib/gconvert.c:1606 #, c-format msgid "The hostname of the URI '%s' is invalid" msgstr "A(z) „%s” gépneve érvénytelen" -#: ../glib/gconvert.c:1621 +#: ../glib/gconvert.c:1622 #, c-format msgid "The URI '%s' contains invalidly escaped characters" msgstr "" "A(z) „%s” URI érvénytelen, escape sorozatként megadott karaktereket tartalmaz" -#: ../glib/gconvert.c:1716 +#: ../glib/gconvert.c:1717 #, c-format msgid "The pathname '%s' is not an absolute path" msgstr "A(z) „%s” elérési út neve nem abszolút útvonal" -#: ../glib/gconvert.c:1726 +#: ../glib/gconvert.c:1727 msgid "Invalid hostname" msgstr "Érvénytelen gépnév" @@ -3594,26 +3624,26 @@ msgstr "Nem sikerült kiolvasni a(z) „%s” szimbolikus linket: %s" msgid "Symbolic links not supported" msgstr "A szimbolikus linkek használata nem támogatott" -#: ../glib/giochannel.c:1389 +#: ../glib/giochannel.c:1388 #, c-format msgid "Could not open converter from '%s' to '%s': %s" msgstr "Az átalakító a(z) „%s” elemről „%s” elemre nem nyitható meg: %s" -#: ../glib/giochannel.c:1734 +#: ../glib/giochannel.c:1733 msgid "Can't do a raw read in g_io_channel_read_line_string" msgstr "" "Nem lehet nyers (raw) olvasást végezni a g_io_channel_read_line_string-ben" -#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039 -#: ../glib/giochannel.c:2126 +#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038 +#: ../glib/giochannel.c:2125 msgid "Leftover unconverted data in read buffer" msgstr "Át nem alakított adatok maradtak az olvasási pufferben" -#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939 +#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938 msgid "Channel terminates in a partial character" msgstr "A csatorna töredék karakterrel ér véget" -#: ../glib/giochannel.c:1925 +#: ../glib/giochannel.c:1924 msgid "Can't do a raw read in g_io_channel_read_to_end" msgstr "Nem lehet nyers (raw) olvasást végezni a g_io_channel_read_to_end-ben" @@ -3653,8 +3683,8 @@ msgid "Key file contains unsupported encoding '%s'" msgstr "A kulcsfájl a nem támogatott „%s” kódolást tartalmazza" #: ../glib/gkeyfile.c:1548 ../glib/gkeyfile.c:1721 ../glib/gkeyfile.c:3099 -#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3288 ../glib/gkeyfile.c:3418 -#: ../glib/gkeyfile.c:3560 ../glib/gkeyfile.c:3789 ../glib/gkeyfile.c:3856 +#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3292 ../glib/gkeyfile.c:3422 +#: ../glib/gkeyfile.c:3566 ../glib/gkeyfile.c:3795 ../glib/gkeyfile.c:3862 #, c-format msgid "Key file does not have group '%s'" msgstr "A kulcsfájlból hiányzik a(z) „%s” csoport" @@ -3694,31 +3724,31 @@ msgstr "" "A(z) „%s” kulcs a(z) „%s” csoportban „%s” értékkel rendelkezik a várt %s " "helyett" -#: ../glib/gkeyfile.c:4096 +#: ../glib/gkeyfile.c:4102 msgid "Key file contains escape character at end of line" msgstr "A kulcsfájl escape sorozattal megadott karaktert tartalmaz a sor végén" -#: ../glib/gkeyfile.c:4118 +#: ../glib/gkeyfile.c:4124 #, c-format msgid "Key file contains invalid escape sequence '%s'" msgstr "A kulcsfájl érvénytelen escape sorozatot tartalmaz („%s”)" -#: ../glib/gkeyfile.c:4260 +#: ../glib/gkeyfile.c:4266 #, c-format msgid "Value '%s' cannot be interpreted as a number." msgstr "A(z) „%s” érték nem értelmezhető számként." -#: ../glib/gkeyfile.c:4274 +#: ../glib/gkeyfile.c:4280 #, c-format msgid "Integer value '%s' out of range" msgstr "A(z) „%s” egész érték a tartományon kívülre esik" -#: ../glib/gkeyfile.c:4307 +#: ../glib/gkeyfile.c:4313 #, c-format msgid "Value '%s' cannot be interpreted as a float number." msgstr "A(z) „%s” érték nem értelmezhető lebegőpontos számként." -#: ../glib/gkeyfile.c:4331 +#: ../glib/gkeyfile.c:4350 #, c-format msgid "Value '%s' cannot be interpreted as a boolean." msgstr "A(z) „%s” érték nem értelmezhető logikai értékként." @@ -3765,7 +3795,7 @@ msgstr "„%s” nem érvényes név: „%c”" msgid "Error on line %d: %s" msgstr "Hiba a(z) %d. sorban: %s" -#: ../glib/gmarkup.c:683 +#: ../glib/gmarkup.c:676 #, c-format msgid "" "Failed to parse '%-.*s', which should have been a digit inside a character " @@ -3774,7 +3804,7 @@ msgstr "" "Nem sikerült feldolgozni ezt: „%-.*s”. Valószínűleg számjegy lett volna egy " "karakterhivatkozáson (mint az ê) belül - lehet, hogy túl nagy a számjegy" -#: ../glib/gmarkup.c:695 +#: ../glib/gmarkup.c:688 msgid "" "Character reference did not end with a semicolon; most likely you used an " "ampersand character without intending to start an entity - escape ampersand " @@ -3783,23 +3813,23 @@ msgstr "" "A karakterhivatkozás nem pontosvesszővel ért véget; valószínűleg egy &-jelet " "használt anélkül, hogy entitást akart volna kezdeni - írja & formában." -#: ../glib/gmarkup.c:721 +#: ../glib/gmarkup.c:714 #, c-format msgid "Character reference '%-.*s' does not encode a permitted character" msgstr "A(z) „%-.*s” karakterhivatkozás nem engedélyezett karaktert kódol" -#: ../glib/gmarkup.c:759 +#: ../glib/gmarkup.c:752 msgid "" "Empty entity '&;' seen; valid entities are: & " < > '" msgstr "" "Üres „&;” entitás; az érvényes entitások: & " < > '" -#: ../glib/gmarkup.c:767 +#: ../glib/gmarkup.c:760 #, c-format msgid "Entity name '%-.*s' is not known" msgstr "A(z) „%-.*s” entitásnév ismeretlen" -#: ../glib/gmarkup.c:772 +#: ../glib/gmarkup.c:765 msgid "" "Entity did not end with a semicolon; most likely you used an ampersand " "character without intending to start an entity - escape ampersand as &" @@ -3807,11 +3837,11 @@ msgstr "" "Az entitás neve nem pontosvesszővel ért véget; valószínűleg egy &-jelet " "használt anélkül, hogy entitást akart volna kezdeni - írja & formában." -#: ../glib/gmarkup.c:1178 +#: ../glib/gmarkup.c:1171 msgid "Document must begin with an element (e.g. )" msgstr "A dokumentumnak egy elemmel kell kezdődnie (például: )" -#: ../glib/gmarkup.c:1218 +#: ../glib/gmarkup.c:1211 #, c-format msgid "" "'%s' is not a valid character following a '<' character; it may not begin an " @@ -3819,7 +3849,7 @@ msgid "" msgstr "" "„%s” nem érvényes karakter a „<” karakter után; elem neve nem kezdődhet vele" -#: ../glib/gmarkup.c:1260 +#: ../glib/gmarkup.c:1253 #, c-format msgid "" "Odd character '%s', expected a '>' character to end the empty-element tag " @@ -3828,7 +3858,7 @@ msgstr "" "Furcsa karakter („%s”), „>” karakternek kellett volna jönnie, hogy lezárja " "a(z) „%s” üres elemcímkét" -#: ../glib/gmarkup.c:1341 +#: ../glib/gmarkup.c:1334 #, c-format msgid "" "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" @@ -3836,7 +3866,7 @@ msgstr "" "Furcsa karakter („%s”) - „=” karakternek kellett volna jönnie a(z) „%s” elem " "„%s” attribútumneve után" -#: ../glib/gmarkup.c:1382 +#: ../glib/gmarkup.c:1375 #, c-format msgid "" "Odd character '%s', expected a '>' or '/' character to end the start tag of " @@ -3847,7 +3877,7 @@ msgstr "" "„%s” elem kezdő címkéje után, esetleg egy attribútumnak; lehet, hogy " "érvénytelen karaktert használt az attribútum nevében" -#: ../glib/gmarkup.c:1426 +#: ../glib/gmarkup.c:1419 #, c-format msgid "" "Odd character '%s', expected an open quote mark after the equals sign when " @@ -3856,7 +3886,7 @@ msgstr "" "Furcsa karakter („%s”) - egy nyitó idézőjelnek kellene jönnie az " "egyenlőségjel után, ha értéket ad a(z) „%s” attribútumnak „%s” elemben" -#: ../glib/gmarkup.c:1559 +#: ../glib/gmarkup.c:1552 #, c-format msgid "" "'%s' is not a valid character following the characters '”." -#: ../glib/gmarkup.c:1606 +#: ../glib/gmarkup.c:1599 #, c-format msgid "Element '%s' was closed, no element is currently open" msgstr "A(z) „%s” elem le lett lezárva, jelenleg egy elem sincs nyitva" -#: ../glib/gmarkup.c:1615 +#: ../glib/gmarkup.c:1608 #, c-format msgid "Element '%s' was closed, but the currently open element is '%s'" msgstr "A(z) „%s” elem le lett lezárva, de a jelenleg nyitott elem a(z) „%s”" -#: ../glib/gmarkup.c:1768 +#: ../glib/gmarkup.c:1761 msgid "Document was empty or contained only whitespace" msgstr "A dokumentum üres volt, vagy csak üres hely karaktereket tartalmazott" -#: ../glib/gmarkup.c:1782 +#: ../glib/gmarkup.c:1775 msgid "Document ended unexpectedly just after an open angle bracket '<'" msgstr "" "A dokumentum váratlanul véget ért egy nyitott hegyes zárójel („<”) után" -#: ../glib/gmarkup.c:1790 ../glib/gmarkup.c:1835 +#: ../glib/gmarkup.c:1783 ../glib/gmarkup.c:1828 #, c-format msgid "" "Document ended unexpectedly with elements still open - '%s' was the last " @@ -3902,7 +3932,7 @@ msgstr "" "A dokumentum váratlanul véget ért, pedig még nyitva vannak elemek - „%s” az " "utoljára megnyitott elem" -#: ../glib/gmarkup.c:1798 +#: ../glib/gmarkup.c:1791 #, c-format msgid "" "Document ended unexpectedly, expected to see a close angle bracket ending " @@ -3911,19 +3941,19 @@ msgstr "" "A dokumentum váratlanul véget ért; a(z) <%s/> elemet lezáró hegyes " "zárójelnek kellett volna következnie" -#: ../glib/gmarkup.c:1804 +#: ../glib/gmarkup.c:1797 msgid "Document ended unexpectedly inside an element name" msgstr "A dokumentum váratlanul véget ért egy elemnéven belül" -#: ../glib/gmarkup.c:1810 +#: ../glib/gmarkup.c:1803 msgid "Document ended unexpectedly inside an attribute name" msgstr "A dokumentum váratlanul véget ért egy attribútumnéven belül" -#: ../glib/gmarkup.c:1815 +#: ../glib/gmarkup.c:1808 msgid "Document ended unexpectedly inside an element-opening tag." msgstr "A dokumentum váratlanul véget ért egy elemnyitó címkén belül" -#: ../glib/gmarkup.c:1821 +#: ../glib/gmarkup.c:1814 msgid "" "Document ended unexpectedly after the equals sign following an attribute " "name; no attribute value" @@ -3931,78 +3961,82 @@ msgstr "" "A dokumentum váratlanul véget ért egy az attribútumnevet követő " "egyenlőségjel után; az attribútum értéke nem lett megadva" -#: ../glib/gmarkup.c:1828 +#: ../glib/gmarkup.c:1821 msgid "Document ended unexpectedly while inside an attribute value" msgstr "A dokumentum váratlanul véget ért egy attribútumértéken belül" -#: ../glib/gmarkup.c:1844 +#: ../glib/gmarkup.c:1837 #, c-format msgid "Document ended unexpectedly inside the close tag for element '%s'" msgstr "A dokumentum váratlanul véget ért a(z) „%s” elem lezáró címkéjén belül" -#: ../glib/gmarkup.c:1850 +#: ../glib/gmarkup.c:1843 msgid "Document ended unexpectedly inside a comment or processing instruction" msgstr "" "A dokumentum váratlanul véget ért egy megjegyzésen vagy feldolgozási " "utasításon belül" -#: ../glib/goption.c:858 +#: ../glib/goption.c:857 msgid "Usage:" msgstr "Használat:" -#: ../glib/goption.c:858 +#: ../glib/goption.c:861 msgid "[OPTION...]" msgstr "[KAPCSOLÓ...]" -#: ../glib/goption.c:974 +#: ../glib/goption.c:977 msgid "Help Options:" msgstr "Súgólehetőségek:" -#: ../glib/goption.c:975 +#: ../glib/goption.c:978 msgid "Show help options" msgstr "Súgólehetőségek megjelenítése" -#: ../glib/goption.c:981 +#: ../glib/goption.c:984 msgid "Show all help options" msgstr "Minden súgólehetőség megjelenítése" -#: ../glib/goption.c:1043 +#: ../glib/goption.c:1047 msgid "Application Options:" msgstr "Alkalmazás kapcsolói:" -#: ../glib/goption.c:1107 ../glib/goption.c:1177 +#: ../glib/goption.c:1049 +msgid "Options:" +msgstr "Kapcsolók:" + +#: ../glib/goption.c:1113 ../glib/goption.c:1183 #, c-format msgid "Cannot parse integer value '%s' for %s" msgstr "Nem dolgozható fel a(z) „%s” egész érték a következőhöz: %s" -#: ../glib/goption.c:1117 ../glib/goption.c:1185 +#: ../glib/goption.c:1123 ../glib/goption.c:1191 #, c-format msgid "Integer value '%s' for %s out of range" msgstr "A(z) „%s” egész érték a tartományon kívülre esik a következőhöz: %s" -#: ../glib/goption.c:1142 +#: ../glib/goption.c:1148 #, c-format msgid "Cannot parse double value '%s' for %s" msgstr "Nem dolgozható fel a(z) „%s” dupla hosszúságú érték a következőhöz: %s" -#: ../glib/goption.c:1150 +#: ../glib/goption.c:1156 #, c-format msgid "Double value '%s' for %s out of range" msgstr "" "A(z) „%s” dupla hosszúságú érték a tartományon kívülre esik a következőhöz: " "%s" -#: ../glib/goption.c:1436 ../glib/goption.c:1515 +#: ../glib/goption.c:1442 ../glib/goption.c:1521 #, c-format msgid "Error parsing option %s" msgstr "Hiba a kapcsoló feldolgozása során: %s" -#: ../glib/goption.c:1546 ../glib/goption.c:1659 +#: ../glib/goption.c:1552 ../glib/goption.c:1665 #, c-format msgid "Missing argument for %s" msgstr "Hiányzó paraméter a következőhöz: %s" -#: ../glib/goption.c:2120 +#: ../glib/goption.c:2126 #, c-format msgid "Unknown option %s" msgstr "Ismeretlen kapcsoló: %s" @@ -4307,72 +4341,72 @@ msgstr "a név túl hosszú a (*MARK), (*PRUNE), (*SKIP) vagy (*THEN) egyikében msgid "character value in \\u.... sequence is too large" msgstr "a \\u.... sorozaton belüli karakterérték túl nagy" -#: ../glib/gregex.c:746 ../glib/gregex.c:1915 +#: ../glib/gregex.c:746 ../glib/gregex.c:1973 #, c-format msgid "Error while matching regular expression %s: %s" msgstr "Hiba a(z) %s reguláris kifejezés illesztésekor: %s" -#: ../glib/gregex.c:1312 +#: ../glib/gregex.c:1317 msgid "PCRE library is compiled without UTF8 support" msgstr "A PRCE programkönyvtár UTF-8 támogatás nélkül lett fordítva" -#: ../glib/gregex.c:1316 +#: ../glib/gregex.c:1321 msgid "PCRE library is compiled without UTF8 properties support" msgstr "" "A PRCE programkönyvtár az UTF-8 tulajdonságok támogatása nélkül lett fordítva" -#: ../glib/gregex.c:1324 +#: ../glib/gregex.c:1329 msgid "PCRE library is compiled with incompatible options" msgstr "A PRCE programkönyvtár inkompatibilis beállításokkal lett fordítva" -#: ../glib/gregex.c:1383 +#: ../glib/gregex.c:1358 +#, c-format +msgid "Error while optimizing regular expression %s: %s" +msgstr "Hiba a(z) %s reguláris kifejezés optimalizálásakor: %s" + +#: ../glib/gregex.c:1438 #, c-format msgid "Error while compiling regular expression %s at char %d: %s" msgstr "" "Hiba a(z) „%s” reguláris kifejezés fordításakor a(z) %d. karakternél: %s" -#: ../glib/gregex.c:1425 -#, c-format -msgid "Error while optimizing regular expression %s: %s" -msgstr "Hiba a(z) %s reguláris kifejezés optimalizálásakor: %s" - -#: ../glib/gregex.c:2347 +#: ../glib/gregex.c:2409 msgid "hexadecimal digit or '}' expected" msgstr "a program hexadecimális számjegyet vagy „}” jelet várt" -#: ../glib/gregex.c:2363 +#: ../glib/gregex.c:2425 msgid "hexadecimal digit expected" msgstr "a program hexadecimális számjegyet várt" -#: ../glib/gregex.c:2403 +#: ../glib/gregex.c:2465 msgid "missing '<' in symbolic reference" msgstr "hiányzó „<” jel a szimbolikus hivatkozásban" -#: ../glib/gregex.c:2412 +#: ../glib/gregex.c:2474 msgid "unfinished symbolic reference" msgstr "befejezetlen szimbolikus hivatkozás" -#: ../glib/gregex.c:2419 +#: ../glib/gregex.c:2481 msgid "zero-length symbolic reference" msgstr "nulla hosszúságú szimbolikus hivatkozás" -#: ../glib/gregex.c:2430 +#: ../glib/gregex.c:2492 msgid "digit expected" msgstr "re rendszer számjegyet várt" -#: ../glib/gregex.c:2448 +#: ../glib/gregex.c:2510 msgid "illegal symbolic reference" msgstr "illegális szimbolikus hivatkozás" -#: ../glib/gregex.c:2510 +#: ../glib/gregex.c:2572 msgid "stray final '\\'" msgstr "a záró „\\” helye nem megfelelő" -#: ../glib/gregex.c:2514 +#: ../glib/gregex.c:2576 msgid "unknown escape sequence" msgstr "ismeretlen escape sorozat" -#: ../glib/gregex.c:2524 +#: ../glib/gregex.c:2586 #, c-format msgid "Error while parsing replacement text \"%s\" at char %lu: %s" msgstr "" @@ -4421,62 +4455,62 @@ msgstr "" msgid "Unexpected error in waitpid() (%s)" msgstr "Váratlan hiba a waitpid()-ben (%s)" -#: ../glib/gspawn.c:849 ../glib/gspawn-win32.c:1233 +#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233 #, c-format msgid "Child process exited with code %ld" msgstr "A gyermekfolyamat a következő kóddal lépett ki: %ld" -#: ../glib/gspawn.c:857 +#: ../glib/gspawn.c:852 #, c-format msgid "Child process killed by signal %ld" msgstr "A gyermekfolyamat kilőve %ld szignállal" -#: ../glib/gspawn.c:864 +#: ../glib/gspawn.c:859 #, c-format msgid "Child process stopped by signal %ld" msgstr "A gyermekfolyamat megállítva %ld szignállal" -#: ../glib/gspawn.c:871 +#: ../glib/gspawn.c:866 #, c-format msgid "Child process exited abnormally" msgstr "A gyermekfolyamat abnormálisan lépett ki" -#: ../glib/gspawn.c:1276 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 +#: ../glib/gspawn.c:1271 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 #, c-format msgid "Failed to read from child pipe (%s)" msgstr "Nem sikerült olvasni a gyermek csővezetékből (%s)" -#: ../glib/gspawn.c:1346 +#: ../glib/gspawn.c:1341 #, c-format msgid "Failed to fork (%s)" msgstr "Nem sikerült folyamatot indítani (%s)" -#: ../glib/gspawn.c:1495 ../glib/gspawn-win32.c:370 +#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370 #, c-format msgid "Failed to change to directory '%s' (%s)" msgstr "Nem sikerült átváltani a(z) „%s” könyvtárra (%s)" -#: ../glib/gspawn.c:1505 +#: ../glib/gspawn.c:1500 #, c-format msgid "Failed to execute child process \"%s\" (%s)" msgstr "Nem sikerült a gyermekfolyamat („%s”) végrehajtása (%s)" -#: ../glib/gspawn.c:1515 +#: ../glib/gspawn.c:1510 #, c-format msgid "Failed to redirect output or input of child process (%s)" msgstr "Nem sikerült a gyermekfolyamat ki- vagy bemenetének átirányítása (%s)" -#: ../glib/gspawn.c:1524 +#: ../glib/gspawn.c:1519 #, c-format msgid "Failed to fork child process (%s)" msgstr "Nem sikerült a gyermekfolyamat elindítása (%s)" -#: ../glib/gspawn.c:1532 +#: ../glib/gspawn.c:1527 #, c-format msgid "Unknown error executing child process \"%s\"" msgstr "Ismeretlen hiba a gyermekfolyamat („%s”) végrehajtása közben" -#: ../glib/gspawn.c:1556 +#: ../glib/gspawn.c:1551 #, c-format msgid "Failed to read enough data from child pid pipe (%s)" msgstr "Nem sikerült elég adatot kiolvasni a gyermek pid csővezetékből (%s)" @@ -4532,92 +4566,92 @@ msgstr "" "Váratlan hiba, miközben a g_io_channel_win32_poll() adatokat olvasott egy " "gyermekfolyamatból" -#: ../glib/gutf8.c:780 +#: ../glib/gutf8.c:795 msgid "Failed to allocate memory" msgstr "Nem sikerült memóriát lefoglalni" -#: ../glib/gutf8.c:912 +#: ../glib/gutf8.c:928 msgid "Character out of range for UTF-8" msgstr "A karakter az UTF-8 tartományon kívülre esik" -#: ../glib/gutf8.c:1012 ../glib/gutf8.c:1021 ../glib/gutf8.c:1151 -#: ../glib/gutf8.c:1160 ../glib/gutf8.c:1299 ../glib/gutf8.c:1396 +#: ../glib/gutf8.c:1029 ../glib/gutf8.c:1038 ../glib/gutf8.c:1168 +#: ../glib/gutf8.c:1177 ../glib/gutf8.c:1316 ../glib/gutf8.c:1413 msgid "Invalid sequence in conversion input" msgstr "Érvénytelen sorozat az átalakítási bemenetben" -#: ../glib/gutf8.c:1310 ../glib/gutf8.c:1407 +#: ../glib/gutf8.c:1327 ../glib/gutf8.c:1424 msgid "Character out of range for UTF-16" msgstr "A karakter az UTF-16 tartományon kívülre esik" -#: ../glib/gutils.c:2116 ../glib/gutils.c:2143 ../glib/gutils.c:2249 +#: ../glib/gutils.c:2117 ../glib/gutils.c:2144 ../glib/gutils.c:2250 #, c-format msgid "%u byte" msgid_plural "%u bytes" msgstr[0] "%u bájt" msgstr[1] "%u bájt" -#: ../glib/gutils.c:2122 +#: ../glib/gutils.c:2123 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" -#: ../glib/gutils.c:2124 +#: ../glib/gutils.c:2125 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" -#: ../glib/gutils.c:2127 +#: ../glib/gutils.c:2128 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" -#: ../glib/gutils.c:2130 +#: ../glib/gutils.c:2131 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" -#: ../glib/gutils.c:2133 +#: ../glib/gutils.c:2134 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" -#: ../glib/gutils.c:2136 +#: ../glib/gutils.c:2137 #, c-format msgid "%.1f EiB" msgstr "%.1f EiB" -#: ../glib/gutils.c:2149 +#: ../glib/gutils.c:2150 #, c-format msgid "%.1f kB" msgstr "%.1f kB" -#: ../glib/gutils.c:2152 ../glib/gutils.c:2267 +#: ../glib/gutils.c:2153 ../glib/gutils.c:2268 #, c-format msgid "%.1f MB" msgstr "%.1f MB" -#: ../glib/gutils.c:2155 ../glib/gutils.c:2272 +#: ../glib/gutils.c:2156 ../glib/gutils.c:2273 #, c-format msgid "%.1f GB" msgstr "%.1f GB" -#: ../glib/gutils.c:2157 ../glib/gutils.c:2277 +#: ../glib/gutils.c:2158 ../glib/gutils.c:2278 #, c-format msgid "%.1f TB" msgstr "%.1f TB" -#: ../glib/gutils.c:2160 ../glib/gutils.c:2282 +#: ../glib/gutils.c:2161 ../glib/gutils.c:2283 #, c-format msgid "%.1f PB" msgstr "%.1f PB" -#: ../glib/gutils.c:2163 ../glib/gutils.c:2287 +#: ../glib/gutils.c:2164 ../glib/gutils.c:2288 #, c-format msgid "%.1f EB" msgstr "%.1f EB" #. Translators: the %s in "%s bytes" will always be replaced by a number. -#: ../glib/gutils.c:2200 +#: ../glib/gutils.c:2201 #, c-format msgid "%s byte" msgid_plural "%s bytes" @@ -4629,11 +4663,26 @@ msgstr[1] "%s bájt" #. * compatibility. Users will not see this string unless a program is using this deprecated function. #. * Please translate as literally as possible. #. -#: ../glib/gutils.c:2262 +#: ../glib/gutils.c:2263 #, c-format msgid "%.1f KB" msgstr "%.1f KB" +#~ msgid "Can't find application" +#~ msgstr "Nem található az alkalmazás" + +#~ msgid "Error launching application: %s" +#~ msgstr "Hiba az alkalmazás indításakor: %s" + +#~ msgid "association changes not supported on win32" +#~ msgstr "a társításmódosítások nem támogatottak win32 rendszeren" + +#~ msgid "Association creation not supported on win32" +#~ msgstr "A társítás létrehozása nem támogatott win32 rendszeren" + +#~ msgid "Unable to find default local directory monitor type" +#~ msgstr "Nem található az alapértelmezett helyi könyvtárfigyelő típus" + #~ msgid "Key file does not have key '%s'" #~ msgstr "A kulcsfájlban nincs „%s” kulcs" diff --git a/po/hy.gmo b/po/hy.gmo new file mode 100644 index 0000000000000000000000000000000000000000..fb24a84dea4c658ef20a67f83ce86fcbe1d7c9c9 GIT binary patch literal 91573 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 TMs=>{>4!yk4bD?GDj@w|;sP7` literal 0 HcmV?d00001 diff --git a/po/id.gmo b/po/id.gmo new file mode 100644 index 0000000000000000000000000000000000000000..19f56bd513f54dc979940a71ad385b146597124a GIT binary patch literal 96846 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

l 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, 2005. # Dirgita , 2010, 2012. -# Andika Triwidada , 2010, 2011, 2012, 2013. +# Andika Triwidada , 2010-2013, 2015. msgid "" msgstr "" "Project-Id-Version: glib master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=glib&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2014-09-02 05:56+0000\n" -"PO-Revision-Date: 2014-09-03 20:49+0700\n" +"POT-Creation-Date: 2015-08-28 05:59+0000\n" +"PO-Revision-Date: 2015-08-28 20:58+0800\n" "Last-Translator: Andika Triwidada \n" "Language-Team: Indonesian \n" "Language: id\n" @@ -19,27 +19,27 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 1.6.9\n" +"X-Generator: Poedit 1.7.1\n" -#: ../gio/gapplication.c:514 +#: ../gio/gapplication.c:531 msgid "Enter GApplication service mode (use from D-Bus service files)" msgstr "Masuk mode layanan GApplication (pakai dari berkas layanan D-Bus)" -#: ../gio/gapplication.c:519 +#: ../gio/gapplication.c:536 msgid "GApplication options" msgstr "Opsi GApplication" -#: ../gio/gapplication.c:519 +#: ../gio/gapplication.c:536 msgid "Show GApplication options" msgstr "Tunjukkan opsi GApplication" #: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46 -#: ../gio/gresource-tool.c:481 ../gio/gsettings-tool.c:508 +#: ../gio/gresource-tool.c:485 ../gio/gsettings-tool.c:525 msgid "Print help" msgstr "Cetak bantuan" -#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:482 -#: ../gio/gresource-tool.c:550 +#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:486 +#: ../gio/gresource-tool.c:554 msgid "[COMMAND]" msgstr "[PERINTAH]" @@ -47,7 +47,7 @@ msgstr "[PERINTAH]" msgid "Print version" msgstr "Cetak versi" -#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:514 +#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:531 msgid "Print version information and exit" msgstr "Cetak informasi versi dan keluar" @@ -111,14 +111,14 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)" msgstr "Identifier aplikasi dalam format D-Bus (mis: org.example.viewer)" #: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589 -#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:488 -#: ../gio/gresource-tool.c:554 +#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:492 +#: ../gio/gresource-tool.c:558 msgid "FILE" msgstr "BERKAS" #: ../gio/gapplication-tool.c:72 -msgid "Optional relative or relative filenames, or URIs to open" -msgstr "Nama berkas relatif atau relatif opsional, atau URI yang akan dibuka" +msgid "Optional relative or absolute filenames, or URIs to open" +msgstr "Nama berkas relatif atau absolut, atau URI opsional yang akan dibuka" #: ../gio/gapplication-tool.c:73 msgid "ACTION" @@ -136,8 +136,8 @@ msgstr "PARAMETER" msgid "Optional parameter to the action invocation, in GVariant format" msgstr "Parameter opsional untuk pemanggilan aksi, dalam format GVariant" -#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:519 -#: ../gio/gsettings-tool.c:594 +#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:523 +#: ../gio/gsettings-tool.c:611 #, c-format msgid "" "Unknown command %s\n" @@ -150,8 +150,8 @@ msgstr "" msgid "Usage:\n" msgstr "Cara pakai:\n" -#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:544 -#: ../gio/gsettings-tool.c:628 +#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:548 +#: ../gio/gsettings-tool.c:645 msgid "Arguments:\n" msgstr "Argumen:\n" @@ -252,9 +252,9 @@ msgstr "" "\n" #: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498 -#: ../gio/ginputstream.c:176 ../gio/ginputstream.c:370 -#: ../gio/ginputstream.c:608 ../gio/ginputstream.c:828 -#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:823 +#: ../gio/ginputstream.c:176 ../gio/ginputstream.c:376 +#: ../gio/ginputstream.c:614 ../gio/ginputstream.c:1013 +#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:830 #: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206 #, c-format msgid "Too large count value passed to %s" @@ -269,8 +269,8 @@ msgstr "Seek tak didukung pada stream basis" msgid "Cannot truncate GBufferedInputStream" msgstr "Tak bisa memenggal GBufferedInputStream" -#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1017 -#: ../gio/giostream.c:277 ../gio/goutputstream.c:1464 +#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1202 +#: ../gio/giostream.c:278 ../gio/goutputstream.c:1654 msgid "Stream is already closed" msgstr "Stream telah ditutup" @@ -278,10 +278,9 @@ msgstr "Stream telah ditutup" msgid "Truncate not supported on base stream" msgstr "Pemenggalan tak didukung pada stream basis" -#: ../gio/gcancellable.c:310 ../gio/gdbusconnection.c:1896 -#: ../gio/gdbusconnection.c:1989 ../gio/gdbusprivate.c:1417 -#: ../gio/glocalfile.c:2181 ../gio/gsimpleasyncresult.c:830 -#: ../gio/gsimpleasyncresult.c:856 +#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1847 +#: ../gio/gdbusprivate.c:1375 ../gio/glocalfile.c:2212 +#: ../gio/gsimpleasyncresult.c:870 ../gio/gsimpleasyncresult.c:896 #, c-format msgid "Operation was cancelled" msgstr "Operasi dibatalkan" @@ -300,23 +299,23 @@ msgstr "Tak cukup ruang di tujuan" #: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848 #: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 -#: ../glib/gconvert.c:845 ../glib/giochannel.c:1557 ../glib/giochannel.c:1599 -#: ../glib/giochannel.c:2443 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 +#: ../glib/gconvert.c:845 ../glib/giochannel.c:1556 ../glib/giochannel.c:1598 +#: ../glib/giochannel.c:2442 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 msgid "Invalid byte sequence in conversion input" msgstr "Rangkaian bita dalam input konversi tidak benar" #: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 -#: ../glib/gconvert.c:770 ../glib/giochannel.c:1564 ../glib/giochannel.c:2455 +#: ../glib/gconvert.c:770 ../glib/giochannel.c:1563 ../glib/giochannel.c:2454 #, c-format msgid "Error during conversion: %s" msgstr "Galat ketika konversi: %s" -#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:985 +#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:981 msgid "Cancellable initialization not supported" msgstr "Inisialisasi yang dapat dibatalkan tak didukung" #: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321 -#: ../glib/giochannel.c:1385 +#: ../glib/giochannel.c:1384 #, c-format msgid "Conversion from character set '%s' to '%s' is not supported" msgstr "Konversi dari gugus karakter '%s' ke '%s' tak didukung" @@ -335,7 +334,7 @@ msgstr "tipe %s" msgid "Unknown type" msgstr "Tipe tak dikenal" -#: ../gio/gcontenttype-win32.c:161 +#: ../gio/gcontenttype-win32.c:162 #, c-format msgid "%s filetype" msgstr "tipe berkas %s" @@ -360,13 +359,13 @@ msgstr "Pemalsuan kredensial tak diimplementasikan di OS ini" msgid "Unexpected early end-of-stream" msgstr "Akhir stream terlalu dini, tak diharapkan" -#: ../gio/gdbusaddress.c:148 ../gio/gdbusaddress.c:236 -#: ../gio/gdbusaddress.c:317 +#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241 +#: ../gio/gdbusaddress.c:322 #, c-format msgid "Unsupported key '%s' in address entry '%s'" msgstr "Kunci '%s' tak didukung pada entri alamat '%s'" -#: ../gio/gdbusaddress.c:175 +#: ../gio/gdbusaddress.c:180 #, c-format msgid "" "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" @@ -374,27 +373,27 @@ msgstr "" "Alamat '%s' tak valid (perlu hanya salah satu dari path, tmpdir, atau kunci " "abstrak)" -#: ../gio/gdbusaddress.c:188 +#: ../gio/gdbusaddress.c:193 #, c-format msgid "Meaningless key/value pair combination in address entry '%s'" msgstr "Kombinasi pasangan kunci/nilai tanpa arti di entri alamat '%s'" -#: ../gio/gdbusaddress.c:251 ../gio/gdbusaddress.c:332 +#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 #, c-format msgid "Error in address '%s' - the port attribute is malformed" msgstr "Galat di alamat '%s' - atribut port salah bentuk" -#: ../gio/gdbusaddress.c:262 ../gio/gdbusaddress.c:343 +#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348 #, c-format msgid "Error in address '%s' - the family attribute is malformed" msgstr "Galat di alamat '%s' - atribut family salah bentuk" -#: ../gio/gdbusaddress.c:452 +#: ../gio/gdbusaddress.c:457 #, c-format msgid "Address element '%s' does not contain a colon (:)" msgstr "Elemen alamat '%s' tak memuat titik dua (:)" -#: ../gio/gdbusaddress.c:473 +#: ../gio/gdbusaddress.c:478 #, c-format msgid "" "Key/Value pair %d, '%s', in address element '%s' does not contain an equal " @@ -403,7 +402,7 @@ msgstr "" "Pasangan kunci/nilai %d, '%s', di elemen alamat '%s' tak memuat tanda sama " "dengan" -#: ../gio/gdbusaddress.c:487 +#: ../gio/gdbusaddress.c:492 #, c-format msgid "" "Error unescaping key or value in Key/Value pair %d, '%s', in address element " @@ -412,7 +411,7 @@ msgstr "" "Galat saat membongkar kunci atau nilai dalam pasangan Key/Value %d, '%s', " "dalam elemen alamat '%s'" -#: ../gio/gdbusaddress.c:565 +#: ../gio/gdbusaddress.c:570 #, c-format msgid "" "Error in address '%s' - the unix transport requires exactly one of the keys " @@ -421,85 +420,85 @@ msgstr "" "Galat di alamat '%s' - transport unix memerlukan hanya satu dari kunci " "'path' atau 'abstract' untuk ditata" -#: ../gio/gdbusaddress.c:601 +#: ../gio/gdbusaddress.c:606 #, c-format msgid "Error in address '%s' - the host attribute is missing or malformed" msgstr "Galat di alamat '%s' - atribut host hilang atau salah bentuk" -#: ../gio/gdbusaddress.c:615 +#: ../gio/gdbusaddress.c:620 #, c-format msgid "Error in address '%s' - the port attribute is missing or malformed" msgstr "Galat di alamat '%s' - atribut portt hilang atau salah bentuk" -#: ../gio/gdbusaddress.c:629 +#: ../gio/gdbusaddress.c:634 #, c-format msgid "Error in address '%s' - the noncefile attribute is missing or malformed" msgstr "Galat di alamat '%s' - atribut berkas nonce hilang atau salah bentuk" -#: ../gio/gdbusaddress.c:650 +#: ../gio/gdbusaddress.c:655 msgid "Error auto-launching: " msgstr "Galat saat meluncurkan otomatis: " -#: ../gio/gdbusaddress.c:658 +#: ../gio/gdbusaddress.c:663 #, c-format msgid "Unknown or unsupported transport '%s' for address '%s'" msgstr "Transport '%s' tak dikenal atau tak didukung bagi alamat '%s'" -#: ../gio/gdbusaddress.c:694 +#: ../gio/gdbusaddress.c:699 #, c-format msgid "Error opening nonce file '%s': %s" msgstr "Galat saat membuka berkas nonce '%s': %s" -#: ../gio/gdbusaddress.c:712 +#: ../gio/gdbusaddress.c:717 #, c-format msgid "Error reading from nonce file '%s': %s" msgstr "Galat saat membaca berkas nonce '%s': %s" -#: ../gio/gdbusaddress.c:721 +#: ../gio/gdbusaddress.c:726 #, c-format msgid "Error reading from nonce file '%s', expected 16 bytes, got %d" msgstr "Galat saat membaca berkas nonce '%s', berharap 16 bita, mendapat %d" -#: ../gio/gdbusaddress.c:739 +#: ../gio/gdbusaddress.c:744 #, c-format msgid "Error writing contents of nonce file '%s' to stream:" msgstr "Galat saat menulis isi dari berkas nonce '%s' ke stream:" -#: ../gio/gdbusaddress.c:958 +#: ../gio/gdbusaddress.c:950 msgid "The given address is empty" msgstr "Tidak ada alamat yang diberikan" -#: ../gio/gdbusaddress.c:1028 +#: ../gio/gdbusaddress.c:1063 #, c-format msgid "Cannot spawn a message bus when setuid" msgstr "Tidak bisa spawn suatu bus pesan ketika setuid" -#: ../gio/gdbusaddress.c:1035 +#: ../gio/gdbusaddress.c:1070 msgid "Cannot spawn a message bus without a machine-id: " msgstr "Tidak bisa spawn suatu bus pesan tanpa id-mesin: " -#: ../gio/gdbusaddress.c:1077 +#: ../gio/gdbusaddress.c:1112 #, c-format msgid "Error spawning command line '%s': " msgstr "Galat saat spawn baris perintah '%s': " -#: ../gio/gdbusaddress.c:1294 +#: ../gio/gdbusaddress.c:1329 #, c-format msgid "(Type any character to close this window)\n" msgstr "(Ketikkan karakter apapun untuk menutup jendela ini)\n" -#: ../gio/gdbusaddress.c:1425 +#: ../gio/gdbusaddress.c:1460 #, c-format msgid "Session dbus not running, and autolaunch failed" msgstr "dbus sesi tak sedang berjalan, dan peluncuran-otomatis gagal" -#: ../gio/gdbusaddress.c:1446 +#: ../gio/gdbusaddress.c:1471 #, c-format msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "" "Tidak bisa menentukan alamat bus sesi (tidak diimplementasi bagi OS ini)" -#: ../gio/gdbusaddress.c:1546 ../gio/gdbusconnection.c:6931 +#: ../gio/gdbusaddress.c:1604 ../gio/gdbusconnection.c:7128 #, c-format msgid "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " @@ -508,7 +507,7 @@ msgstr "" "Tak bisa menentukan alamat bus dari variabel lingkungan " "DBUS_STARTER_BUS_TYPE - nilai tak dikenal '%s'" -#: ../gio/gdbusaddress.c:1555 ../gio/gdbusconnection.c:6940 +#: ../gio/gdbusaddress.c:1613 ../gio/gdbusconnection.c:7137 msgid "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" @@ -516,7 +515,7 @@ msgstr "" "Tak bisa menentukan alamat bus karena variabel lingkungan " "DBUS_STARTER_BUS_TYPE tak diisi" -#: ../gio/gdbusaddress.c:1565 +#: ../gio/gdbusaddress.c:1623 #, c-format msgid "Unknown bus type %d" msgstr "Tipe bus %d tak dikenal" @@ -620,113 +619,123 @@ msgstr "Galat saat membuka gantungan kunci '%s' untuk ditulisi: " msgid "(Additionally, releasing the lock for '%s' also failed: %s) " msgstr "(Selain itu, melepas kunci bagi '%s' juga gagal: %s) " -#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2455 +#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2373 msgid "The connection is closed" msgstr "Sambungan tertutup" -#: ../gio/gdbusconnection.c:1942 +#: ../gio/gdbusconnection.c:1877 msgid "Timeout was reached" msgstr "Kehabisan waktu" -#: ../gio/gdbusconnection.c:2577 +#: ../gio/gdbusconnection.c:2495 msgid "" "Unsupported flags encountered when constructing a client-side connection" msgstr "" "Ditemui flag yang tak didukung ketika membangun sambungan di sisi klien" -#: ../gio/gdbusconnection.c:4157 ../gio/gdbusconnection.c:4504 +#: ../gio/gdbusconnection.c:4105 ../gio/gdbusconnection.c:4452 #, c-format msgid "" "No such interface 'org.freedesktop.DBus.Properties' on object at path %s" msgstr "" "Tidak ada antarmuka 'org.freedesktop.DBus.Properties' pada objek di lokasi %s" -#: ../gio/gdbusconnection.c:4299 +#: ../gio/gdbusconnection.c:4247 #, c-format msgid "No such property '%s'" msgstr "Tak ada properti '%s'" -#: ../gio/gdbusconnection.c:4311 +#: ../gio/gdbusconnection.c:4259 #, c-format msgid "Property '%s' is not readable" msgstr "Properti '%s' tidak dapat dibaca" -#: ../gio/gdbusconnection.c:4322 +#: ../gio/gdbusconnection.c:4270 #, c-format msgid "Property '%s' is not writable" msgstr "Properti '%s' tidak dapat ditulisi" -#: ../gio/gdbusconnection.c:4342 +#: ../gio/gdbusconnection.c:4290 #, c-format msgid "Error setting property '%s': Expected type '%s' but got '%s'" msgstr "" "Galat menata properti '%s': Tipe yang diharapkan '%s' tapi diperoleh '%s'" -#: ../gio/gdbusconnection.c:4447 ../gio/gdbusconnection.c:6371 +#: ../gio/gdbusconnection.c:4395 ../gio/gdbusconnection.c:6568 #, c-format msgid "No such interface '%s'" msgstr "Tak ada antar muka '%s'" -#: ../gio/gdbusconnection.c:4655 +#: ../gio/gdbusconnection.c:4603 msgid "No such interface" msgstr "Tak ada antar muka begitu" -#: ../gio/gdbusconnection.c:4873 ../gio/gdbusconnection.c:6880 +#: ../gio/gdbusconnection.c:4821 ../gio/gdbusconnection.c:7077 #, c-format msgid "No such interface '%s' on object at path %s" msgstr "Tak ada antar muka '%s' pada objek di lokasi %s" -#: ../gio/gdbusconnection.c:4971 +#: ../gio/gdbusconnection.c:4919 #, c-format msgid "No such method '%s'" msgstr "Tak ada metoda '%s'" -#: ../gio/gdbusconnection.c:5002 +#: ../gio/gdbusconnection.c:4950 #, c-format msgid "Type of message, '%s', does not match expected type '%s'" msgstr "Tipe pesan '%s' tak cocok dengan tipe yang diharapkan '%s'" -#: ../gio/gdbusconnection.c:5200 +#: ../gio/gdbusconnection.c:5148 #, c-format msgid "An object is already exported for the interface %s at %s" msgstr "Suatu objek telah diekspor bagi antar muka %s pada %s" -#: ../gio/gdbusconnection.c:5399 +#: ../gio/gdbusconnection.c:5374 +#, c-format +msgid "Unable to retrieve property %s.%s" +msgstr "Tak bisa mengambil properti %s.%s" + +#: ../gio/gdbusconnection.c:5430 +#, c-format +msgid "Unable to set property %s.%s" +msgstr "Tak bisa menata properti %s.%s" + +#: ../gio/gdbusconnection.c:5606 #, c-format msgid "Method '%s' returned type '%s', but expected '%s'" msgstr "Metoda '%s' mengembalikan tipe '%s', tapi yang diharapkan '%s'" -#: ../gio/gdbusconnection.c:6482 +#: ../gio/gdbusconnection.c:6679 #, c-format msgid "Method '%s' on interface '%s' with signature '%s' does not exist" msgstr "Metoda '%s' pada antar muka '%s' dengan tanda tangan '%s' tak ada" -#: ../gio/gdbusconnection.c:6603 +#: ../gio/gdbusconnection.c:6800 #, c-format msgid "A subtree is already exported for %s" msgstr "Subtree telah diekspor bagi %s" -#: ../gio/gdbusmessage.c:1246 +#: ../gio/gdbusmessage.c:1244 msgid "type is INVALID" msgstr "jenisnya INVALID" -#: ../gio/gdbusmessage.c:1257 +#: ../gio/gdbusmessage.c:1255 msgid "METHOD_CALL message: PATH or MEMBER header field is missing" msgstr "Pesan METHOD_CALL: ruas header PATH atau MEMBER hilang" -#: ../gio/gdbusmessage.c:1268 +#: ../gio/gdbusmessage.c:1266 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing" msgstr "Pesan METHOD_RETURN: ruas header REPLY_SERIAL hilang" -#: ../gio/gdbusmessage.c:1280 +#: ../gio/gdbusmessage.c:1278 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing" msgstr "Pesan ERROR: ruas header REPLY_SERIAL atau ERRORN_NAME hilang" -#: ../gio/gdbusmessage.c:1293 +#: ../gio/gdbusmessage.c:1291 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing" msgstr "Pesan SIGNAL: ruas header PATH, INTERFACE, atau MEMBER hilang" -#: ../gio/gdbusmessage.c:1301 +#: ../gio/gdbusmessage.c:1299 msgid "" "SIGNAL message: The PATH header field is using the reserved value /org/" "freedesktop/DBus/Local" @@ -734,7 +743,7 @@ msgstr "" "Pesan SIGNAL: ruas header PATH memakai nilai khusus /org/freedesktop/DBus/" "Local" -#: ../gio/gdbusmessage.c:1309 +#: ../gio/gdbusmessage.c:1307 msgid "" "SIGNAL message: The INTERFACE header field is using the reserved value org." "freedesktop.DBus.Local" @@ -742,18 +751,18 @@ msgstr "" "Pesan SIGNAL: ruas header INTERFACE memakai nilai khusus org.freedesktop." "DBus.Local" -#: ../gio/gdbusmessage.c:1357 ../gio/gdbusmessage.c:1417 +#: ../gio/gdbusmessage.c:1355 ../gio/gdbusmessage.c:1415 #, c-format msgid "Wanted to read %lu byte but only got %lu" msgid_plural "Wanted to read %lu bytes but only got %lu" msgstr[0] "Ingin membaca %lu bita tapi hanya memperoleh %lu" -#: ../gio/gdbusmessage.c:1371 +#: ../gio/gdbusmessage.c:1369 #, c-format msgid "Expected NUL byte after the string '%s' but found byte %d" msgstr "Mengharapkan bita NUL setelah string '%s' tapi menemui bita %d" -#: ../gio/gdbusmessage.c:1390 +#: ../gio/gdbusmessage.c:1388 #, c-format msgid "" "Expected valid UTF-8 string but found invalid bytes at byte offset %d " @@ -763,17 +772,17 @@ msgstr "" "%d (panjang string adalah %d). String UTF-8 yang valid sampai titik itu " "adalah '%s'" -#: ../gio/gdbusmessage.c:1589 +#: ../gio/gdbusmessage.c:1587 #, c-format msgid "Parsed value '%s' is not a valid D-Bus object path" msgstr "Nilai terurai '%s' bukan lokasi objek D-Bus yang valid" -#: ../gio/gdbusmessage.c:1611 +#: ../gio/gdbusmessage.c:1609 #, c-format msgid "Parsed value '%s' is not a valid D-Bus signature" msgstr "Nilai terurai '%s' bukan tanda tangan D-Bus yang valid" -#: ../gio/gdbusmessage.c:1658 +#: ../gio/gdbusmessage.c:1656 #, c-format msgid "" "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)." @@ -783,7 +792,7 @@ msgstr[0] "" "Menjumpai larik dengan panjang %u bita. Panjang maksimal adalah 2<<26 bita " "(64 MiB). " -#: ../gio/gdbusmessage.c:1678 +#: ../gio/gdbusmessage.c:1676 #, c-format msgid "" "Encountered array of type 'a%c', expected to have a length a multiple of %u " @@ -792,12 +801,12 @@ msgstr "" "Menemui larik bertipe 'a%c', mengharapkan punya panjang kelipatan %u byte, " "tapi menemui panjang %u byte" -#: ../gio/gdbusmessage.c:1845 +#: ../gio/gdbusmessage.c:1843 #, c-format msgid "Parsed value '%s' for variant is not a valid D-Bus signature" msgstr "Nilai terurai '%s' bagi varian bukan tanda tangan D-Bus yang valid" -#: ../gio/gdbusmessage.c:1869 +#: ../gio/gdbusmessage.c:1867 #, c-format msgid "" "Error deserializing GVariant with type string '%s' from the D-Bus wire format" @@ -805,7 +814,7 @@ msgstr "" "Galat saat deserialisasi GVariant dengan type string '%s' dari format kabel " "D-Bus" -#: ../gio/gdbusmessage.c:2053 +#: ../gio/gdbusmessage.c:2051 #, c-format msgid "" "Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found value " @@ -814,23 +823,23 @@ msgstr "" "Nilai ke-endian-an tak valid. Berharap 0x6c ('l') atau (0x42) 'B' tapi " "menemui 0x%02x" -#: ../gio/gdbusmessage.c:2066 +#: ../gio/gdbusmessage.c:2064 #, c-format msgid "Invalid major protocol version. Expected 1 but found %d" msgstr "Versi protokol mayor tak valid. Berharap 1 tapi menemui %d" -#: ../gio/gdbusmessage.c:2122 +#: ../gio/gdbusmessage.c:2120 #, c-format msgid "Signature header with signature '%s' found but message body is empty" msgstr "" "Header tanda tangan dengan tanda tangan '%s' ditemukan tapi body pesan kosong" -#: ../gio/gdbusmessage.c:2136 +#: ../gio/gdbusmessage.c:2134 #, c-format msgid "Parsed value '%s' is not a valid D-Bus signature (for body)" msgstr "Nilai terurai '%s' bukan tanda tangan D-Bus yang valid (bagi body)" -#: ../gio/gdbusmessage.c:2166 +#: ../gio/gdbusmessage.c:2164 #, c-format msgid "No signature header in message but the message body is %u byte" msgid_plural "No signature header in message but the message body is %u bytes" @@ -838,18 +847,18 @@ msgstr[0] "" "Tidak terdapat tajuk tanda tangan pada pesan, tetapi panjang badan pesan " "adalah %u bita" -#: ../gio/gdbusmessage.c:2176 +#: ../gio/gdbusmessage.c:2174 msgid "Cannot deserialize message: " msgstr "Tidak bisa men-deserialisasi pesan: " -#: ../gio/gdbusmessage.c:2517 +#: ../gio/gdbusmessage.c:2515 #, c-format msgid "" "Error serializing GVariant with type string '%s' to the D-Bus wire format" msgstr "" "Kesalahan serialisasi GVariant dengan type string '%s' ke format kabel D-Bus" -#: ../gio/gdbusmessage.c:2654 +#: ../gio/gdbusmessage.c:2652 #, c-format msgid "" "Message has %d file descriptors but the header field indicates %d file " @@ -858,16 +867,16 @@ msgstr "" "Pesan punya %d deskriptor berkas tapi ruas header mengindikasikan %d " "deskriptor berkas" -#: ../gio/gdbusmessage.c:2662 +#: ../gio/gdbusmessage.c:2660 msgid "Cannot serialize message: " msgstr "Tidak bisa men-serialisasi pesan: " -#: ../gio/gdbusmessage.c:2706 +#: ../gio/gdbusmessage.c:2704 #, c-format msgid "Message body has signature '%s' but there is no signature header" msgstr "Body pesan punya tanda tangan '%s' tapi tak ada header tanda tangan" -#: ../gio/gdbusmessage.c:2716 +#: ../gio/gdbusmessage.c:2714 #, c-format msgid "" "Message body has type signature '%s' but signature in the header field is " @@ -876,40 +885,40 @@ msgstr "" "Body pesan memiliki tanda tangan tipe '%s' tapi tanda tangan di ruas header " "adalah '(%s)'" -#: ../gio/gdbusmessage.c:2732 +#: ../gio/gdbusmessage.c:2730 #, c-format msgid "Message body is empty but signature in the header field is '(%s)'" msgstr "Body pesan kosong tapi tanda tangan pada ruas header adalah '(%s)'" -#: ../gio/gdbusmessage.c:3282 +#: ../gio/gdbusmessage.c:3283 #, c-format msgid "Error return with body of type '%s'" msgstr "Galat balikan dengan body bertipe '%s'" -#: ../gio/gdbusmessage.c:3290 +#: ../gio/gdbusmessage.c:3291 msgid "Error return with empty body" msgstr "Galat balikan dengan body kosong" -#: ../gio/gdbusprivate.c:2067 +#: ../gio/gdbusprivate.c:2036 #, c-format msgid "Unable to get Hardware profile: %s" msgstr "Tak bisa mendapat profil perangkat keras: %s" -#: ../gio/gdbusprivate.c:2112 +#: ../gio/gdbusprivate.c:2081 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: " msgstr "Tak bisa memuat /var/lib/dbus/machine-id ata /etc/machine-id: " -#: ../gio/gdbusproxy.c:1630 +#: ../gio/gdbusproxy.c:1610 #, c-format msgid "Error calling StartServiceByName for %s: " msgstr "Galat sewaktu memanggil StartServiceByName untuk %s: " -#: ../gio/gdbusproxy.c:1653 +#: ../gio/gdbusproxy.c:1633 #, c-format msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" msgstr "Balasan tak diharapkan %d dari metode StartServiceByName(\"%s\")" -#: ../gio/gdbusproxy.c:2754 ../gio/gdbusproxy.c:2891 +#: ../gio/gdbusproxy.c:2708 ../gio/gdbusproxy.c:2842 msgid "" "Cannot invoke method; proxy is for a well-known name without an owner and " "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag" @@ -962,55 +971,60 @@ msgstr "" "Gunakan \"%s PERINTAH --help\" untuk memperoleh bantuan pada setiap " "perintah.\n" -#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:220 ../gio/gdbus-tool.c:292 -#: ../gio/gdbus-tool.c:316 ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1031 -#: ../gio/gdbus-tool.c:1465 +#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:226 ../gio/gdbus-tool.c:298 +#: ../gio/gdbus-tool.c:322 ../gio/gdbus-tool.c:711 ../gio/gdbus-tool.c:1043 +#: ../gio/gdbus-tool.c:1477 #, c-format msgid "Error: %s\n" msgstr "Galat: %s\n" -#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:233 ../gio/gdbus-tool.c:1481 +#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493 #, c-format msgid "Error parsing introspection XML: %s\n" msgstr "Galat saat mengurai XML introspeksi: %s\n" -#: ../gio/gdbus-tool.c:350 +#: ../gio/gdbus-tool.c:208 +#, c-format +msgid "Error: %s is not a valid name\n" +msgstr "Galat: %s bukan nama yang valid\n" + +#: ../gio/gdbus-tool.c:356 msgid "Connect to the system bus" msgstr "Menyambung ke bus sistem" -#: ../gio/gdbus-tool.c:351 +#: ../gio/gdbus-tool.c:357 msgid "Connect to the session bus" msgstr "Menyambung ke bus sesi" -#: ../gio/gdbus-tool.c:352 +#: ../gio/gdbus-tool.c:358 msgid "Connect to given D-Bus address" msgstr "Menyambung ke alamat D-Bus yang diberikan" -#: ../gio/gdbus-tool.c:362 +#: ../gio/gdbus-tool.c:368 msgid "Connection Endpoint Options:" msgstr "Opsi Titik Ujung Sambungan:" -#: ../gio/gdbus-tool.c:363 +#: ../gio/gdbus-tool.c:369 msgid "Options specifying the connection endpoint" msgstr "Opsi yang menyatakan titik ujung sambungan" -#: ../gio/gdbus-tool.c:385 +#: ../gio/gdbus-tool.c:391 #, c-format msgid "No connection endpoint specified" msgstr "Titik ujung sambungan tak dinyatakan" -#: ../gio/gdbus-tool.c:395 +#: ../gio/gdbus-tool.c:401 #, c-format msgid "Multiple connection endpoints specified" msgstr "Telah dinyatakan titik ujung sambungan berganda" -#: ../gio/gdbus-tool.c:465 +#: ../gio/gdbus-tool.c:471 #, c-format msgid "" "Warning: According to introspection data, interface '%s' does not exist\n" msgstr "Peringatan: Menurut data introspeksi, antar muka '%s' tak ada\n" -#: ../gio/gdbus-tool.c:474 +#: ../gio/gdbus-tool.c:480 #, c-format msgid "" "Warning: According to introspection data, method '%s' does not exist on " @@ -1019,190 +1033,194 @@ msgstr "" "Peringatan: Menurut data introspeksi, metoda '%s' tak ada pada antar muka " "'%s'\n" -#: ../gio/gdbus-tool.c:536 +#: ../gio/gdbus-tool.c:542 msgid "Optional destination for signal (unique name)" msgstr "Tujuan opsional bagi sinyal (nama unik)" -#: ../gio/gdbus-tool.c:537 +#: ../gio/gdbus-tool.c:543 msgid "Object path to emit signal on" msgstr "Path objek untuk dipancari sinyal" -#: ../gio/gdbus-tool.c:538 +#: ../gio/gdbus-tool.c:544 msgid "Signal and interface name" msgstr "Nama antar muka dan sinyal" -#: ../gio/gdbus-tool.c:570 +#: ../gio/gdbus-tool.c:576 msgid "Emit a signal." msgstr "Pancarkan sinyal." -#: ../gio/gdbus-tool.c:604 ../gio/gdbus-tool.c:836 ../gio/gdbus-tool.c:1571 -#: ../gio/gdbus-tool.c:1799 +#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583 +#: ../gio/gdbus-tool.c:1818 #, c-format msgid "Error connecting: %s\n" msgstr "Galat saat menyambung: %s\n" -#: ../gio/gdbus-tool.c:616 +#: ../gio/gdbus-tool.c:622 #, c-format msgid "Error: object path not specified.\n" msgstr "Galat: path objek tak dinyatakan\n" -#: ../gio/gdbus-tool.c:621 ../gio/gdbus-tool.c:897 ../gio/gdbus-tool.c:1629 -#: ../gio/gdbus-tool.c:1858 +#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648 +#: ../gio/gdbus-tool.c:1884 #, c-format msgid "Error: %s is not a valid object path\n" msgstr "Galat: '%s' bukan suatu lokasi objek yang valid\n" -#: ../gio/gdbus-tool.c:627 +#: ../gio/gdbus-tool.c:633 #, c-format msgid "Error: signal not specified.\n" msgstr "Galat: sinyal tak dinyatakan\n" -#: ../gio/gdbus-tool.c:634 +#: ../gio/gdbus-tool.c:640 #, c-format msgid "Error: signal must be the fully-qualified name.\n" msgstr "Galat: sinyal harus berupa nama yang berkualifikasi penuh.\n" -#: ../gio/gdbus-tool.c:642 +#: ../gio/gdbus-tool.c:648 #, c-format msgid "Error: %s is not a valid interface name\n" msgstr "Galat: '%s' bukan nama antar muka yang valid\n" -#: ../gio/gdbus-tool.c:648 +#: ../gio/gdbus-tool.c:654 #, c-format msgid "Error: %s is not a valid member name\n" msgstr "Galat: '%s' bukan nama anggota yang valid\n" -#: ../gio/gdbus-tool.c:654 +#: ../gio/gdbus-tool.c:660 #, c-format msgid "Error: %s is not a valid unique bus name.\n" msgstr "Galat: '%s' bukan nama bus unik yang valid\n" #. Use the original non-"parse-me-harder" error -#: ../gio/gdbus-tool.c:681 ../gio/gdbus-tool.c:999 +#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011 #, c-format msgid "Error parsing parameter %d: %s\n" msgstr "Galat saat mengurai parameter %d: %s\n" -#: ../gio/gdbus-tool.c:712 +#: ../gio/gdbus-tool.c:718 #, c-format msgid "Error flushing connection: %s\n" msgstr "Galat saat menggelontor sambungan: %s\n" -#: ../gio/gdbus-tool.c:739 +#: ../gio/gdbus-tool.c:745 msgid "Destination name to invoke method on" msgstr "Nama tujuan tempat menjalankan metoda" -#: ../gio/gdbus-tool.c:740 +#: ../gio/gdbus-tool.c:746 msgid "Object path to invoke method on" msgstr "Lokasi objek tempat menjalankan metoda" -#: ../gio/gdbus-tool.c:741 +#: ../gio/gdbus-tool.c:747 msgid "Method and interface name" msgstr "Nama metoda dan antar muka" -#: ../gio/gdbus-tool.c:742 +#: ../gio/gdbus-tool.c:748 msgid "Timeout in seconds" msgstr "Tenggat waktu dalam detik" -#: ../gio/gdbus-tool.c:781 +#: ../gio/gdbus-tool.c:787 msgid "Invoke a method on a remote object." msgstr "Jalankan suatu metoda pada suatu objek jauh." -#: ../gio/gdbus-tool.c:856 ../gio/gdbus-tool.c:1590 ../gio/gdbus-tool.c:1818 +#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837 #, c-format msgid "Error: Destination is not specified\n" msgstr "Galat: Tujuan tak dinyatakan\n" -#: ../gio/gdbus-tool.c:877 ../gio/gdbus-tool.c:1609 +#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849 +#, c-format +msgid "Error: %s is not a valid bus name\n" +msgstr "Galat: %s bukan nama bus yang valid\n" + +#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628 #, c-format msgid "Error: Object path is not specified\n" msgstr "Galat: Lokasi objek tak dinyatakan\n" -#: ../gio/gdbus-tool.c:912 +#: ../gio/gdbus-tool.c:924 #, c-format msgid "Error: Method name is not specified\n" msgstr "Galat: Nama metoda tak dinyatakan\n" -#: ../gio/gdbus-tool.c:923 +#: ../gio/gdbus-tool.c:935 #, c-format msgid "Error: Method name '%s' is invalid\n" msgstr "Galat: Nama metoda '%s' tak valid\n" -#: ../gio/gdbus-tool.c:991 +#: ../gio/gdbus-tool.c:1003 #, c-format msgid "Error parsing parameter %d of type '%s': %s\n" msgstr "Galat ketika mengurai parameter ke-%d dari jenis '%s': %s\n" -#: ../gio/gdbus-tool.c:1428 +#: ../gio/gdbus-tool.c:1440 msgid "Destination name to introspect" msgstr "Nama tujuan untuk introspeksi" -#: ../gio/gdbus-tool.c:1429 +#: ../gio/gdbus-tool.c:1441 msgid "Object path to introspect" msgstr "Lokasi objek untuk introspeksi" -#: ../gio/gdbus-tool.c:1430 +#: ../gio/gdbus-tool.c:1442 msgid "Print XML" msgstr "Cetak XML" -#: ../gio/gdbus-tool.c:1431 +#: ../gio/gdbus-tool.c:1443 msgid "Introspect children" msgstr "Introspeksi anak" -#: ../gio/gdbus-tool.c:1432 +#: ../gio/gdbus-tool.c:1444 msgid "Only print properties" msgstr "Hanya cetak properti" -#: ../gio/gdbus-tool.c:1523 +#: ../gio/gdbus-tool.c:1535 msgid "Introspect a remote object." msgstr "Introspeksi suatu objek jauh." -#: ../gio/gdbus-tool.c:1721 +#: ../gio/gdbus-tool.c:1740 msgid "Destination name to monitor" msgstr "Nama tujuan untuk dipantau" -#: ../gio/gdbus-tool.c:1722 +#: ../gio/gdbus-tool.c:1741 msgid "Object path to monitor" msgstr "Lokasi objek untuk dipantau" -#: ../gio/gdbus-tool.c:1751 +#: ../gio/gdbus-tool.c:1770 msgid "Monitor a remote object." msgstr "Memantau suatu objek jauh." -#: ../gio/gdesktopappinfo.c:1919 ../gio/gdesktopappinfo.c:4440 -#: ../gio/gwin32appinfo.c:219 +#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4511 msgid "Unnamed" msgstr "Tanpa nama" -#: ../gio/gdesktopappinfo.c:2328 +#: ../gio/gdesktopappinfo.c:2402 msgid "Desktop file didn't specify Exec field" msgstr "Berkas desktop tak menyatakan ruas Exec" -#: ../gio/gdesktopappinfo.c:2613 +#: ../gio/gdesktopappinfo.c:2687 msgid "Unable to find terminal required for application" msgstr "Tak bisa temukan terminal yang diperlukan bagi aplikasi" -#: ../gio/gdesktopappinfo.c:3034 +#: ../gio/gdesktopappinfo.c:3108 #, c-format msgid "Can't create user application configuration folder %s: %s" msgstr "" "Tak bisa membuat folder %s untuk konfigurasi aplikasi bagi pengguna: %s" -#: ../gio/gdesktopappinfo.c:3038 +#: ../gio/gdesktopappinfo.c:3112 #, c-format msgid "Can't create user MIME configuration folder %s: %s" msgstr "Tak bisa membuat folder %s untuk konfigurasi MIME bagi pengguna: %s" -#: ../gio/gdesktopappinfo.c:3278 ../gio/gdesktopappinfo.c:3302 +#: ../gio/gdesktopappinfo.c:3352 ../gio/gdesktopappinfo.c:3376 msgid "Application information lacks an identifier" msgstr "Informasi aplikasi tak punya identifier" -#: ../gio/gdesktopappinfo.c:3535 +#: ../gio/gdesktopappinfo.c:3609 #, c-format msgid "Can't create user desktop file %s" msgstr "Tak bisa membuat berkas desktop pengguna %s" -#: ../gio/gdesktopappinfo.c:3669 +#: ../gio/gdesktopappinfo.c:3743 #, c-format msgid "Custom definition for %s" msgstr "Definisi gubahan bagi %s" @@ -1230,8 +1248,8 @@ msgstr "kandar tidak mengimplementasi start" msgid "drive doesn't implement stop" msgstr "kandar tidak mengimplementasi stop" -#: ../gio/gdummytlsbackend.c:189 ../gio/gdummytlsbackend.c:311 -#: ../gio/gdummytlsbackend.c:401 +#: ../gio/gdummytlsbackend.c:188 ../gio/gdummytlsbackend.c:310 +#: ../gio/gdummytlsbackend.c:400 msgid "TLS support is not available" msgstr "Dukungan TLS tak tersedia" @@ -1259,14 +1277,14 @@ msgstr "Cacah token (%d) salah bentuk di pengkodean GEmblemedIcon" msgid "Expected a GEmblem for GEmblemedIcon" msgstr "Berharap suatu GEmblem bagi GEmblemedIcon" -#: ../gio/gfile.c:956 ../gio/gfile.c:1194 ../gio/gfile.c:1332 -#: ../gio/gfile.c:1570 ../gio/gfile.c:1625 ../gio/gfile.c:1683 -#: ../gio/gfile.c:1767 ../gio/gfile.c:1824 ../gio/gfile.c:1888 -#: ../gio/gfile.c:1943 ../gio/gfile.c:3591 ../gio/gfile.c:3646 -#: ../gio/gfile.c:3853 ../gio/gfile.c:3895 ../gio/gfile.c:4358 -#: ../gio/gfile.c:4769 ../gio/gfile.c:4854 ../gio/gfile.c:4944 -#: ../gio/gfile.c:5041 ../gio/gfile.c:5128 ../gio/gfile.c:5229 -#: ../gio/gfile.c:7748 ../gio/gfile.c:7838 ../gio/gfile.c:7922 +#: ../gio/gfile.c:969 ../gio/gfile.c:1207 ../gio/gfile.c:1345 +#: ../gio/gfile.c:1583 ../gio/gfile.c:1638 ../gio/gfile.c:1696 +#: ../gio/gfile.c:1780 ../gio/gfile.c:1837 ../gio/gfile.c:1901 +#: ../gio/gfile.c:1956 ../gio/gfile.c:3604 ../gio/gfile.c:3659 +#: ../gio/gfile.c:3894 ../gio/gfile.c:3936 ../gio/gfile.c:4404 +#: ../gio/gfile.c:4815 ../gio/gfile.c:4900 ../gio/gfile.c:4990 +#: ../gio/gfile.c:5087 ../gio/gfile.c:5174 ../gio/gfile.c:5275 +#: ../gio/gfile.c:7796 ../gio/gfile.c:7886 ../gio/gfile.c:7970 #: ../gio/win32/gwinhttpfile.c:437 msgid "Operation not supported" msgstr "Operasi tak didukung" @@ -1281,70 +1299,70 @@ msgstr "Operasi tak didukung" #. Translators: This is an error message when trying to find #. * the enclosing (user visible) mount of a file, but none #. * exists. -#: ../gio/gfile.c:1455 ../gio/glocalfile.c:1103 ../gio/glocalfile.c:1114 -#: ../gio/glocalfile.c:1127 +#: ../gio/gfile.c:1468 ../gio/glocalfile.c:1134 ../gio/glocalfile.c:1145 +#: ../gio/glocalfile.c:1158 msgid "Containing mount does not exist" msgstr "Kait yang memuat tak ada" -#: ../gio/gfile.c:2502 ../gio/glocalfile.c:2337 +#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2368 msgid "Can't copy over directory" msgstr "Tak bisa menyalin atas direktori" -#: ../gio/gfile.c:2562 +#: ../gio/gfile.c:2575 msgid "Can't copy directory over directory" msgstr "Tak bisa menyalin direktori atas direktori" -#: ../gio/gfile.c:2570 ../gio/glocalfile.c:2346 +#: ../gio/gfile.c:2583 ../gio/glocalfile.c:2377 msgid "Target file exists" msgstr "Berkas tujuan telah ada" -#: ../gio/gfile.c:2589 +#: ../gio/gfile.c:2602 msgid "Can't recursively copy directory" msgstr "Tak bisa menyalin direktori secara rekursif" -#: ../gio/gfile.c:2871 +#: ../gio/gfile.c:2884 msgid "Splice not supported" msgstr "Splice tidak didukung" -#: ../gio/gfile.c:2875 +#: ../gio/gfile.c:2888 #, c-format msgid "Error splicing file: %s" msgstr "Galat saat men-splice berkas: %s" -#: ../gio/gfile.c:3006 +#: ../gio/gfile.c:3019 msgid "Copy (reflink/clone) between mounts is not supported" msgstr "Menyalin (reflink/clone) antar kait tak didukung" -#: ../gio/gfile.c:3010 +#: ../gio/gfile.c:3023 msgid "Copy (reflink/clone) is not supported or invalid" msgstr "Menyalin (reflink/clone) tak didukung atau tak valid" -#: ../gio/gfile.c:3015 +#: ../gio/gfile.c:3028 msgid "Copy (reflink/clone) is not supported or didn't work" msgstr "Menyalin (reflink/clone) tak didukung atau tak bekerja" -#: ../gio/gfile.c:3078 +#: ../gio/gfile.c:3091 msgid "Can't copy special file" msgstr "Tak bisa menyalin berkas spesial" -#: ../gio/gfile.c:3843 +#: ../gio/gfile.c:3884 msgid "Invalid symlink value given" msgstr "Diberikan nilai link simbolik yang tak valid" -#: ../gio/gfile.c:4004 +#: ../gio/gfile.c:4045 msgid "Trash not supported" msgstr "Tong sampah tak didukung" -#: ../gio/gfile.c:4116 +#: ../gio/gfile.c:4157 #, c-format msgid "File names cannot contain '%c'" msgstr "Nama berkas tak boleh mengandung '%c'" -#: ../gio/gfile.c:6540 ../gio/gvolume.c:363 +#: ../gio/gfile.c:6586 ../gio/gvolume.c:363 msgid "volume doesn't implement mount" msgstr "volume tak mengimplementasi pengaitan" -#: ../gio/gfile.c:6649 +#: ../gio/gfile.c:6695 msgid "No application is registered as handling this file" msgstr "Tak ada aplikasi terdaftar yang menangani berkas ini" @@ -1389,6 +1407,31 @@ msgstr "Pemenggalan tak diijinkan pada stream masukan" msgid "Truncate not supported on stream" msgstr "Pemenggalan tak didukung pada stream" +#: ../gio/ghttpproxy.c:136 +msgid "Bad HTTP proxy reply" +msgstr "Jawaban proksi HTTP buruk" + +#: ../gio/ghttpproxy.c:152 +msgid "HTTP proxy connection not allowed" +msgstr "Sambungan proksi HTTP tak diizinkan" + +#: ../gio/ghttpproxy.c:157 +msgid "HTTP proxy authentication failed" +msgstr "Otentikasi proksi HTTP gagal" + +#: ../gio/ghttpproxy.c:160 +msgid "HTTP proxy authentication required" +msgstr "Otentikasi proksi HTTP diperlukan" + +#: ../gio/ghttpproxy.c:164 +#, c-format +msgid "HTTP proxy connection failed: %i" +msgstr "Sambungan proksi HTTP gagal: %i" + +#: ../gio/ghttpproxy.c:260 +msgid "HTTP proxy server closed connection unexpectedly." +msgstr "Server proksi HTTP menutup koneksi secara tak terduga." + #: ../gio/gicon.c:290 #, c-format msgid "Wrong number of tokens (%d)" @@ -1442,7 +1485,7 @@ msgid "Could not parse '%s' as IP address mask" msgstr "Tak bisa mengurai '%s' sebagai mask alamat IP" #: ../gio/ginetsocketaddress.c:196 ../gio/ginetsocketaddress.c:213 -#: ../gio/gunixsocketaddress.c:209 +#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:209 msgid "Not enough space for socket address" msgstr "Tak cukup ruang bagi alamat soket" @@ -1460,12 +1503,12 @@ msgstr "Stream masukan tak mengimplementasi pembacaan" #. Translators: This is an error you get if there is #. * already an operation running against this stream when #. * you try to start one -#: ../gio/ginputstream.c:1027 ../gio/giostream.c:287 -#: ../gio/goutputstream.c:1474 +#: ../gio/ginputstream.c:1212 ../gio/giostream.c:288 +#: ../gio/goutputstream.c:1664 msgid "Stream has outstanding operation" msgstr "Stream memiliki operasi tertunda" -#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1453 +#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1491 #, c-format msgid "Element <%s> not allowed inside <%s>" msgstr "Elemen <%s> tidak diijinkan di dalam <%s>" @@ -1510,7 +1553,7 @@ msgstr "Galat saat membaca berkas %s: %s" msgid "Error compressing file %s" msgstr "Galat saat memampatkan berkas %s" -#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1565 +#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1603 #, c-format msgid "text may not appear inside <%s>" msgstr "teks tidak boleh muncul di dalam <%s>" @@ -1525,8 +1568,8 @@ msgid "" "directory)" msgstr "Direktori tempat berkas akan dibaca darinya (baku ke direktori kini)" -#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:1994 -#: ../gio/glib-compile-schemas.c:2023 +#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2036 +#: ../gio/glib-compile-schemas.c:2065 msgid "DIRECTORY" msgstr "DIREKTORI" @@ -1577,16 +1620,16 @@ msgstr "" msgid "You should give exactly one file name\n" msgstr "Anda mesti memberikan hanya satu nama berkas\n" -#: ../gio/glib-compile-schemas.c:772 +#: ../gio/glib-compile-schemas.c:784 msgid "empty names are not permitted" msgstr "nama yang kosong tidak diperbolehkan" -#: ../gio/glib-compile-schemas.c:782 +#: ../gio/glib-compile-schemas.c:794 #, c-format msgid "invalid name '%s': names must begin with a lowercase letter" msgstr "nama '%s' tak valid: nama mesti diawali dengan huruf kecil" -#: ../gio/glib-compile-schemas.c:794 +#: ../gio/glib-compile-schemas.c:806 #, c-format msgid "" "invalid name '%s': invalid character '%c'; only lowercase letters, numbers " @@ -1595,36 +1638,36 @@ msgstr "" "nama '%s' tak valid: karakter '%c' tak valid; hanya huruf kecil, angka, dan " "tanda hubung ('-') yang diijinkan." -#: ../gio/glib-compile-schemas.c:803 +#: ../gio/glib-compile-schemas.c:815 #, c-format msgid "invalid name '%s': two successive hyphens ('--') are not permitted." msgstr "nama '%s' tak valid: dua tanda hubung berturutan ('--') tak diijinkan." -#: ../gio/glib-compile-schemas.c:812 +#: ../gio/glib-compile-schemas.c:824 #, c-format msgid "invalid name '%s': the last character may not be a hyphen ('-')." msgstr "nama '%s' tak valid: karakter terakhir tak boleh tanda hubung ('-')." -#: ../gio/glib-compile-schemas.c:820 +#: ../gio/glib-compile-schemas.c:832 #, c-format msgid "invalid name '%s': maximum length is 1024" msgstr "nama '%s' tak valid: panjang maksimum 1024" -#: ../gio/glib-compile-schemas.c:889 +#: ../gio/glib-compile-schemas.c:901 #, c-format msgid " already specified" msgstr " telah dinyatakan" -#: ../gio/glib-compile-schemas.c:915 +#: ../gio/glib-compile-schemas.c:927 msgid "cannot add keys to a 'list-of' schema" msgstr "tak bisa menambah kunci ke skema 'list-of'" -#: ../gio/glib-compile-schemas.c:926 +#: ../gio/glib-compile-schemas.c:938 #, c-format msgid " already specified" msgstr " telah dinyatakan" -#: ../gio/glib-compile-schemas.c:944 +#: ../gio/glib-compile-schemas.c:956 #, c-format msgid "" " shadows in ; use " @@ -1633,7 +1676,7 @@ msgstr "" " membayangi di ; gunakan " " untuk mengubah nilai" -#: ../gio/glib-compile-schemas.c:955 +#: ../gio/glib-compile-schemas.c:967 #, c-format msgid "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " @@ -1642,63 +1685,63 @@ msgstr "" "persis satu dari 'type', 'enum', atau 'flags' mesti dinyatakan sebagai " "atribut dari " -#: ../gio/glib-compile-schemas.c:974 +#: ../gio/glib-compile-schemas.c:986 #, c-format msgid "<%s id='%s'> not (yet) defined." msgstr "<%s id='%s'> belum didefinisikan." -#: ../gio/glib-compile-schemas.c:989 +#: ../gio/glib-compile-schemas.c:1001 #, c-format msgid "invalid GVariant type string '%s'" msgstr "string jenis GVariant '%s' tidak sah" -#: ../gio/glib-compile-schemas.c:1019 +#: ../gio/glib-compile-schemas.c:1031 msgid " given but schema isn't extending anything" msgstr " diberikan tapi skema tak memperluas apapun" -#: ../gio/glib-compile-schemas.c:1032 +#: ../gio/glib-compile-schemas.c:1044 #, c-format msgid "no to override" msgstr "tak ada untuk ditimpa" -#: ../gio/glib-compile-schemas.c:1040 +#: ../gio/glib-compile-schemas.c:1052 #, c-format msgid " already specified" msgstr " telah dinyatakan" -#: ../gio/glib-compile-schemas.c:1111 +#: ../gio/glib-compile-schemas.c:1125 #, c-format msgid " already specified" msgstr " sudah ditentukan" -#: ../gio/glib-compile-schemas.c:1123 +#: ../gio/glib-compile-schemas.c:1137 #, c-format msgid " extends not yet existing schema '%s'" msgstr " memperluas skema '%s' yang belum ada" -#: ../gio/glib-compile-schemas.c:1139 +#: ../gio/glib-compile-schemas.c:1153 #, c-format msgid " is list of not yet existing schema '%s'" msgstr " adalah daftar dari skema '%s' yang belum ada" -#: ../gio/glib-compile-schemas.c:1147 +#: ../gio/glib-compile-schemas.c:1161 #, c-format msgid "Can not be a list of a schema with a path" msgstr "Tak mungkin berupa suatu daftar skema dengan path" -#: ../gio/glib-compile-schemas.c:1157 +#: ../gio/glib-compile-schemas.c:1171 #, c-format msgid "Can not extend a schema with a path" msgstr "Tak bisa memperluas suatu skema dengan path" -#: ../gio/glib-compile-schemas.c:1167 +#: ../gio/glib-compile-schemas.c:1181 #, c-format msgid "" " is a list, extending which is not a list" msgstr "" " adalah daftar, memperluas yang bukan daftar" -#: ../gio/glib-compile-schemas.c:1177 +#: ../gio/glib-compile-schemas.c:1191 #, c-format msgid "" " extends but '%s' " @@ -1707,64 +1750,69 @@ msgstr "" " memperluas tapi " "'%s' tak memperluas '%s'" -#: ../gio/glib-compile-schemas.c:1194 +#: ../gio/glib-compile-schemas.c:1208 #, c-format msgid "a path, if given, must begin and end with a slash" msgstr "" "suatu path, bila diberikan, harus dimulai dan diakhiri dengan garis miring" -#: ../gio/glib-compile-schemas.c:1201 +#: ../gio/glib-compile-schemas.c:1215 #, c-format msgid "the path of a list must end with ':/'" msgstr "path dari suatu daftar mesti diakhiri dengan ':/'" -#: ../gio/glib-compile-schemas.c:1233 +#: ../gio/glib-compile-schemas.c:1247 #, c-format msgid "<%s id='%s'> already specified" msgstr "<%s id='%s'> sudah ditentukan" -#: ../gio/glib-compile-schemas.c:1457 +#: ../gio/glib-compile-schemas.c:1397 ../gio/glib-compile-schemas.c:1413 +#, c-format +msgid "Only one <%s> element allowed inside <%s>" +msgstr "Hanya satu elemen <%s> diizinkan di dalam <%s>" + +#: ../gio/glib-compile-schemas.c:1495 #, c-format msgid "Element <%s> not allowed at the top level" msgstr "Elemen <%s> tidak diijinkan pada aras puncak" #. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1752 ../gio/glib-compile-schemas.c:1823 -#: ../gio/glib-compile-schemas.c:1899 +#: ../gio/glib-compile-schemas.c:1794 ../gio/glib-compile-schemas.c:1865 +#: ../gio/glib-compile-schemas.c:1941 #, c-format msgid "--strict was specified; exiting.\n" msgstr "--strict dinyatakan; keluar.\n" -#: ../gio/glib-compile-schemas.c:1760 +#: ../gio/glib-compile-schemas.c:1802 #, c-format msgid "This entire file has been ignored.\n" msgstr "Seluruh berkas telah diabaikan.\n" -#: ../gio/glib-compile-schemas.c:1819 +#: ../gio/glib-compile-schemas.c:1861 #, c-format msgid "Ignoring this file.\n" msgstr "Mengabaikan berkas ini.\n" -#: ../gio/glib-compile-schemas.c:1859 +#: ../gio/glib-compile-schemas.c:1901 #, c-format msgid "No such key '%s' in schema '%s' as specified in override file '%s'" msgstr "" "Tak ada kunci '%s' dalam skema '%s' sebagaimana dinyatakan di berkas penimpa " "'%s'" -#: ../gio/glib-compile-schemas.c:1865 ../gio/glib-compile-schemas.c:1923 -#: ../gio/glib-compile-schemas.c:1951 +#: ../gio/glib-compile-schemas.c:1907 ../gio/glib-compile-schemas.c:1965 +#: ../gio/glib-compile-schemas.c:1993 #, c-format msgid "; ignoring override for this key.\n" msgstr "; mengabaikan penimpaan kunci ini.\n" -#: ../gio/glib-compile-schemas.c:1869 ../gio/glib-compile-schemas.c:1927 -#: ../gio/glib-compile-schemas.c:1955 +#: ../gio/glib-compile-schemas.c:1911 ../gio/glib-compile-schemas.c:1969 +#: ../gio/glib-compile-schemas.c:1997 #, c-format msgid " and --strict was specified; exiting.\n" msgstr " dan --strict dinyatakan; keluar.\n" -#: ../gio/glib-compile-schemas.c:1885 +#: ../gio/glib-compile-schemas.c:1927 #, c-format msgid "" "error parsing key '%s' in schema '%s' as specified in override file '%s': %s." @@ -1772,12 +1820,12 @@ msgstr "" "galat saat mengurai kunci '%s' dalam skema '%s' sebagaimana dinyatakan di " "berkas penimpa '%s': %s." -#: ../gio/glib-compile-schemas.c:1895 +#: ../gio/glib-compile-schemas.c:1937 #, c-format msgid "Ignoring override for this key.\n" msgstr "Mengabaikan penimpaan bagi kunci ini.\n" -#: ../gio/glib-compile-schemas.c:1913 +#: ../gio/glib-compile-schemas.c:1955 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is outside the " @@ -1786,7 +1834,7 @@ msgstr "" "penimpa bagi kunci '%s' dalam skema '%s' di berkas penimpa '%s' di luar " "jangkauan yang diberikan di dalam skema" -#: ../gio/glib-compile-schemas.c:1941 +#: ../gio/glib-compile-schemas.c:1983 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is not in the " @@ -1795,23 +1843,23 @@ msgstr "" "penimpa bagi kunci '%s' dalam skema '%s' di berkas penimpa '%s' tak ada di " "dalam daftar pilihan yang valid" -#: ../gio/glib-compile-schemas.c:1994 +#: ../gio/glib-compile-schemas.c:2036 msgid "where to store the gschemas.compiled file" msgstr "dimana menyimpan berkas gschemas.compiled" -#: ../gio/glib-compile-schemas.c:1995 +#: ../gio/glib-compile-schemas.c:2037 msgid "Abort on any errors in schemas" msgstr "Gugurkan pada sebarang galat dalam skema" -#: ../gio/glib-compile-schemas.c:1996 +#: ../gio/glib-compile-schemas.c:2038 msgid "Do not write the gschema.compiled file" msgstr "Jangan menulis berkas gschema.compiled" -#: ../gio/glib-compile-schemas.c:1997 +#: ../gio/glib-compile-schemas.c:2039 msgid "Do not enforce key name restrictions" msgstr "Jangan paksakan pembatasan nama kunci" -#: ../gio/glib-compile-schemas.c:2026 +#: ../gio/glib-compile-schemas.c:2068 msgid "" "Compile all GSettings schema files into a schema cache.\n" "Schema files are required to have the extension .gschema.xml,\n" @@ -1821,145 +1869,141 @@ msgstr "" "Berkas skema diharuskan memiliki ekstensi .gschema.xml,\n" "dan berkas singgahan dinamai gschemas.compiled." -#: ../gio/glib-compile-schemas.c:2042 +#: ../gio/glib-compile-schemas.c:2084 #, c-format msgid "You should give exactly one directory name\n" msgstr "Anda mesti memberikan hanya satu nama direktori\n" -#: ../gio/glib-compile-schemas.c:2081 +#: ../gio/glib-compile-schemas.c:2123 #, c-format msgid "No schema files found: " msgstr "Tidak menemukan berkas skema: " -#: ../gio/glib-compile-schemas.c:2084 +#: ../gio/glib-compile-schemas.c:2126 #, c-format msgid "doing nothing.\n" msgstr "tak melakukan apapun.\n" -#: ../gio/glib-compile-schemas.c:2087 +#: ../gio/glib-compile-schemas.c:2129 #, c-format msgid "removed existing output file.\n" msgstr "menghapus berkas keluaran yang telah ada.\n" -#: ../gio/glocaldirectorymonitor.c:224 -msgid "Unable to find default local directory monitor type" -msgstr "Tak bisa temukan tipe pemantau direktori lokal baku" - -#: ../gio/glocalfile.c:604 ../gio/win32/gwinhttpfile.c:420 +#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420 #, c-format msgid "Invalid filename %s" msgstr "Nama berkas tak valid: %s" -#: ../gio/glocalfile.c:981 +#: ../gio/glocalfile.c:1012 #, c-format msgid "Error getting filesystem info: %s" msgstr "Galat saat mengambil info sistem berkas: %s" -#: ../gio/glocalfile.c:1149 +#: ../gio/glocalfile.c:1180 msgid "Can't rename root directory" msgstr "Tak bisa mengubah nama direktori root" -#: ../gio/glocalfile.c:1169 ../gio/glocalfile.c:1195 +#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226 #, c-format msgid "Error renaming file: %s" msgstr "Galat saat mengubah nama berkas: %s" -#: ../gio/glocalfile.c:1178 +#: ../gio/glocalfile.c:1209 msgid "Can't rename file, filename already exists" msgstr "Tak bisa mengubah nama berkas, nama telah dipakai" -#: ../gio/glocalfile.c:1191 ../gio/glocalfile.c:2210 ../gio/glocalfile.c:2239 -#: ../gio/glocalfile.c:2399 ../gio/glocalfileoutputstream.c:549 +#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2241 ../gio/glocalfile.c:2270 +#: ../gio/glocalfile.c:2430 ../gio/glocalfileoutputstream.c:549 msgid "Invalid filename" msgstr "Nama berkas tak valid" -#: ../gio/glocalfile.c:1358 ../gio/glocalfile.c:1382 +#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413 msgid "Can't open directory" msgstr "Tak bisa membuka direktori" -#: ../gio/glocalfile.c:1366 +#: ../gio/glocalfile.c:1397 #, c-format msgid "Error opening file: %s" msgstr "Galat saat membuka berkas: %s" -#: ../gio/glocalfile.c:1507 +#: ../gio/glocalfile.c:1538 #, c-format msgid "Error removing file: %s" msgstr "Galat saat menghapus berkas: %s" -#: ../gio/glocalfile.c:1887 +#: ../gio/glocalfile.c:1918 #, c-format msgid "Error trashing file: %s" msgstr "Galat saat membuang berkas ke tong sampah: %s" -#: ../gio/glocalfile.c:1910 +#: ../gio/glocalfile.c:1941 #, c-format msgid "Unable to create trash dir %s: %s" msgstr "Tak bisa membuat direktori tong sampah %s: %s" -#: ../gio/glocalfile.c:1931 +#: ../gio/glocalfile.c:1962 msgid "Unable to find toplevel directory for trash" msgstr "Tak bisa temukan direktori puncak bagi tong sampah" -#: ../gio/glocalfile.c:2010 ../gio/glocalfile.c:2030 +#: ../gio/glocalfile.c:2041 ../gio/glocalfile.c:2061 msgid "Unable to find or create trash directory" msgstr "Tak bisa temukan atau buat direktori tong sampah" -#: ../gio/glocalfile.c:2064 +#: ../gio/glocalfile.c:2095 #, c-format msgid "Unable to create trashing info file: %s" msgstr "Tak bis membuat berkas informasi pembuangan ke tong sampah: %s" -#: ../gio/glocalfile.c:2095 ../gio/glocalfile.c:2100 ../gio/glocalfile.c:2180 -#: ../gio/glocalfile.c:2187 +#: ../gio/glocalfile.c:2126 ../gio/glocalfile.c:2131 ../gio/glocalfile.c:2211 +#: ../gio/glocalfile.c:2218 #, c-format msgid "Unable to trash file: %s" msgstr "Tak bisa membuang berkas ke tong sampah: %s" -#: ../gio/glocalfile.c:2188 ../glib/gregex.c:281 +#: ../gio/glocalfile.c:2219 ../glib/gregex.c:281 msgid "internal error" msgstr "kesalahan internal" -#: ../gio/glocalfile.c:2214 +#: ../gio/glocalfile.c:2245 #, c-format msgid "Error creating directory: %s" msgstr "Galat saat membuat direktori: %s" -#: ../gio/glocalfile.c:2243 +#: ../gio/glocalfile.c:2274 #, c-format msgid "Filesystem does not support symbolic links" msgstr "Sistem berkas tak mendukung taut simbolik" -#: ../gio/glocalfile.c:2247 +#: ../gio/glocalfile.c:2278 #, c-format msgid "Error making symbolic link: %s" msgstr "Galat saat membuat taut simbolis: %s" -#: ../gio/glocalfile.c:2309 ../gio/glocalfile.c:2403 +#: ../gio/glocalfile.c:2340 ../gio/glocalfile.c:2434 #, c-format msgid "Error moving file: %s" msgstr "Galat saat memindah berkas: %s" -#: ../gio/glocalfile.c:2332 +#: ../gio/glocalfile.c:2363 msgid "Can't move directory over directory" msgstr "Tak bisa memindah direktori atas direktori" -#: ../gio/glocalfile.c:2359 ../gio/glocalfileoutputstream.c:925 +#: ../gio/glocalfile.c:2390 ../gio/glocalfileoutputstream.c:925 #: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954 #: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984 msgid "Backup file creation failed" msgstr "Pembuatan berkas cadangan gagal" -#: ../gio/glocalfile.c:2378 +#: ../gio/glocalfile.c:2409 #, c-format msgid "Error removing target file: %s" msgstr "Galat saat menghapus berkas tujuan: %s" -#: ../gio/glocalfile.c:2392 +#: ../gio/glocalfile.c:2423 msgid "Move between mounts not supported" msgstr "Perpindahan antar kait tak didukung" -#: ../gio/glocalfile.c:2603 +#: ../gio/glocalfile.c:2615 #, c-format msgid "Could not determine the disk usage of %s: %s" msgstr "Tak bisa menentukan penggunaan diska dari %s: %s" @@ -1981,79 +2025,79 @@ msgstr "Nama atribut tambahan yang tak valid" msgid "Error setting extended attribute '%s': %s" msgstr "Galat saat menata atribut tambahan '%s': %s" -#: ../gio/glocalfileinfo.c:1556 +#: ../gio/glocalfileinfo.c:1571 msgid " (invalid encoding)" msgstr " (pengkodean tak valid)" -#: ../gio/glocalfileinfo.c:1747 ../gio/glocalfileoutputstream.c:803 +#: ../gio/glocalfileinfo.c:1762 ../gio/glocalfileoutputstream.c:803 #, c-format msgid "Error when getting information for file '%s': %s" msgstr "Galat saat mengambil informasi bagi berkas '%s': %s" -#: ../gio/glocalfileinfo.c:1998 +#: ../gio/glocalfileinfo.c:2013 #, c-format msgid "Error when getting information for file descriptor: %s" msgstr "Galat saat mengambil informasi bagi descriptor berkas: %s" -#: ../gio/glocalfileinfo.c:2043 +#: ../gio/glocalfileinfo.c:2058 msgid "Invalid attribute type (uint32 expected)" msgstr "Tipe atribut tak valid (diharapkan uint32)" -#: ../gio/glocalfileinfo.c:2061 +#: ../gio/glocalfileinfo.c:2076 msgid "Invalid attribute type (uint64 expected)" msgstr "Tipe atribut tak valid (diharapkan uint64)" -#: ../gio/glocalfileinfo.c:2080 ../gio/glocalfileinfo.c:2099 +#: ../gio/glocalfileinfo.c:2095 ../gio/glocalfileinfo.c:2114 msgid "Invalid attribute type (byte string expected)" msgstr "Jenis atribut tidak sah (diharapkan bita berjenis string)" -#: ../gio/glocalfileinfo.c:2134 +#: ../gio/glocalfileinfo.c:2149 msgid "Cannot set permissions on symlinks" msgstr "Tak bisa menata ijin pada taut simbolik" -#: ../gio/glocalfileinfo.c:2150 +#: ../gio/glocalfileinfo.c:2165 #, c-format msgid "Error setting permissions: %s" msgstr "Galat saat menata ijin: %s" -#: ../gio/glocalfileinfo.c:2201 +#: ../gio/glocalfileinfo.c:2216 #, c-format msgid "Error setting owner: %s" msgstr "Galat saat menata pemilik: %s" -#: ../gio/glocalfileinfo.c:2224 +#: ../gio/glocalfileinfo.c:2239 msgid "symlink must be non-NULL" msgstr "symlink tak boleh NULL" -#: ../gio/glocalfileinfo.c:2234 ../gio/glocalfileinfo.c:2253 -#: ../gio/glocalfileinfo.c:2264 +#: ../gio/glocalfileinfo.c:2249 ../gio/glocalfileinfo.c:2268 +#: ../gio/glocalfileinfo.c:2279 #, c-format msgid "Error setting symlink: %s" msgstr "Galat saat menata taut simbolis: %s" -#: ../gio/glocalfileinfo.c:2243 +#: ../gio/glocalfileinfo.c:2258 msgid "Error setting symlink: file is not a symlink" msgstr "Galat saat menata symlink: berkas bukan suatu link simbolik" -#: ../gio/glocalfileinfo.c:2369 +#: ../gio/glocalfileinfo.c:2384 #, c-format msgid "Error setting modification or access time: %s" msgstr "Galat saat menata waktu modifikasi atau akses: %s" -#: ../gio/glocalfileinfo.c:2392 +#: ../gio/glocalfileinfo.c:2407 msgid "SELinux context must be non-NULL" msgstr "Konteks SELinux tak boleh NULL" -#: ../gio/glocalfileinfo.c:2407 +#: ../gio/glocalfileinfo.c:2422 #, c-format msgid "Error setting SELinux context: %s" msgstr "Galat saat menata konteks SELinux: %s" -#: ../gio/glocalfileinfo.c:2414 +#: ../gio/glocalfileinfo.c:2429 msgid "SELinux is not enabled on this system" msgstr "SELinux tak diaktifkan di sistem ini" -#: ../gio/glocalfileinfo.c:2506 +#: ../gio/glocalfileinfo.c:2521 #, c-format msgid "Setting attribute %s not supported" msgstr "Penataan atribut %s tak didukung" @@ -2076,7 +2120,7 @@ msgstr "Galat saat men-seek di berkas: %s" msgid "Error closing file: %s" msgstr "Galat saat menutup berkas: %s" -#: ../gio/glocalfilemonitor.c:145 +#: ../gio/glocalfilemonitor.c:840 msgid "Unable to find default local file monitor type" msgstr "Tak bisa temukan tipe pemantauan berkas lokal baku" @@ -2129,7 +2173,7 @@ msgstr "Berkas telah diubah secara eksternal" msgid "Error removing old file: %s" msgstr "Galat saat menghapus berkas lama: %s" -#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:771 +#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:769 msgid "Invalid GSeekType supplied" msgstr "GSeekType yang tak valid diberikan" @@ -2149,7 +2193,7 @@ msgstr "Memori stream keluaran tak bisa diubah ukuran" msgid "Failed to resize memory output stream" msgstr "Gagal mengubah ukuran memori stream keluaran" -#: ../gio/gmemoryoutputstream.c:673 +#: ../gio/gmemoryoutputstream.c:671 msgid "" "Amount of memory required to process the write is larger than available " "address space" @@ -2157,11 +2201,11 @@ msgstr "" "Banyaknya memori yang diperlukan untuk memroses penulisan lebih besar " "daripada ruang tersedia" -#: ../gio/gmemoryoutputstream.c:781 +#: ../gio/gmemoryoutputstream.c:779 msgid "Requested seek before the beginning of the stream" msgstr "Seek yang diminta sebelum awal stream" -#: ../gio/gmemoryoutputstream.c:796 +#: ../gio/gmemoryoutputstream.c:794 msgid "Requested seek beyond the end of the stream" msgstr "Seek yang diminta setelah akhir stream" @@ -2214,16 +2258,16 @@ msgstr "mount tak mengimplementasi penebakan jenis isi" msgid "mount doesn't implement synchronous content type guessing" msgstr "mount tak mengimplementasi penebakan sinkron jenis isi" -#: ../gio/gnetworkaddress.c:338 +#: ../gio/gnetworkaddress.c:376 #, c-format msgid "Hostname '%s' contains '[' but not ']'" msgstr "Nama host '%s' memuat '[' tapi tanpa ']'" -#: ../gio/gnetworkmonitorbase.c:189 ../gio/gnetworkmonitorbase.c:292 +#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:309 msgid "Network unreachable" msgstr "Jaringan tak dapat dijangkau" -#: ../gio/gnetworkmonitorbase.c:227 ../gio/gnetworkmonitorbase.c:257 +#: ../gio/gnetworkmonitorbase.c:244 ../gio/gnetworkmonitorbase.c:274 msgid "Host unreachable" msgstr "Host tak dapat dihubungi" @@ -2241,47 +2285,52 @@ msgstr "Tak bisa membuat pemantau jaringan: " msgid "Could not get network status: " msgstr "Tak bisa mendapat status jaringan: " -#: ../gio/goutputstream.c:209 ../gio/goutputstream.c:550 +#: ../gio/gnetworkmonitornm.c:326 +#, c-format +msgid "NetworkManager version too old" +msgstr "Versi NetworkManager terlalu tua" + +#: ../gio/goutputstream.c:209 ../gio/goutputstream.c:557 msgid "Output stream doesn't implement write" msgstr "Stream keluaran tak mengimplementasi penulisan" -#: ../gio/goutputstream.c:511 ../gio/goutputstream.c:1028 +#: ../gio/goutputstream.c:518 ../gio/goutputstream.c:1218 msgid "Source stream is already closed" msgstr "Stream sumber telah ditutup" -#: ../gio/gresolver.c:320 ../gio/gthreadedresolver.c:116 +#: ../gio/gresolver.c:330 ../gio/gthreadedresolver.c:116 #: ../gio/gthreadedresolver.c:126 #, c-format msgid "Error resolving '%s': %s" msgstr "Galat saat menguraikan '%s': %s" -#: ../gio/gresource.c:291 ../gio/gresource.c:539 ../gio/gresource.c:556 -#: ../gio/gresource.c:677 ../gio/gresource.c:746 ../gio/gresource.c:807 -#: ../gio/gresource.c:887 ../gio/gresourcefile.c:452 -#: ../gio/gresourcefile.c:553 ../gio/gresourcefile.c:655 +#: ../gio/gresource.c:304 ../gio/gresource.c:555 ../gio/gresource.c:572 +#: ../gio/gresource.c:693 ../gio/gresource.c:762 ../gio/gresource.c:823 +#: ../gio/gresource.c:903 ../gio/gresourcefile.c:453 +#: ../gio/gresourcefile.c:576 ../gio/gresourcefile.c:706 #, c-format msgid "The resource at '%s' does not exist" msgstr "Sumber daya pada '%s' tak ada" -#: ../gio/gresource.c:456 +#: ../gio/gresource.c:469 #, c-format msgid "The resource at '%s' failed to decompress" msgstr "Sumber daya pada '%s' gagal dibuka pemampatannya" -#: ../gio/gresourcefile.c:651 +#: ../gio/gresourcefile.c:702 #, c-format msgid "The resource at '%s' is not a directory" msgstr "Sumber daya pada '%s' bukan suatu direktori" -#: ../gio/gresourcefile.c:859 +#: ../gio/gresourcefile.c:910 msgid "Input stream doesn't implement seek" msgstr "Stream masukan tak mengimplementasi seek" -#: ../gio/gresource-tool.c:487 +#: ../gio/gresource-tool.c:491 msgid "List sections containing resources in an elf FILE" msgstr "Seksi daftar memuat sumber daya dalam BERKAS elf" -#: ../gio/gresource-tool.c:493 +#: ../gio/gresource-tool.c:497 msgid "" "List resources\n" "If SECTION is given, only list resources in this section\n" @@ -2291,16 +2340,16 @@ msgstr "" "Bila SEKSI diberikan, hanya mendaftar sumber daya dalam seksi ini\n" "Bila PATH diberikan, hanya mendaftar sumber daya yang cocok" -#: ../gio/gresource-tool.c:496 ../gio/gresource-tool.c:506 +#: ../gio/gresource-tool.c:500 ../gio/gresource-tool.c:510 msgid "FILE [PATH]" msgstr "BERKAS [PATH]" -#: ../gio/gresource-tool.c:497 ../gio/gresource-tool.c:507 -#: ../gio/gresource-tool.c:514 +#: ../gio/gresource-tool.c:501 ../gio/gresource-tool.c:511 +#: ../gio/gresource-tool.c:518 msgid "SECTION" msgstr "SEKSI" -#: ../gio/gresource-tool.c:502 +#: ../gio/gresource-tool.c:506 msgid "" "List resources with details\n" "If SECTION is given, only list resources in this section\n" @@ -2312,15 +2361,15 @@ msgstr "" "Bila PATH diberikan, hanya mendaftar sumber daya yang cocok\n" "Rincian termasuk seksi, ukuran, dan kompresi" -#: ../gio/gresource-tool.c:512 +#: ../gio/gresource-tool.c:516 msgid "Extract a resource file to stdout" msgstr "Ekstrak berkas sumber daya ke stdout" -#: ../gio/gresource-tool.c:513 +#: ../gio/gresource-tool.c:517 msgid "FILE PATH" msgstr "BERKAS PATH" -#: ../gio/gresource-tool.c:527 +#: ../gio/gresource-tool.c:531 msgid "" "Usage:\n" " gresource [--section SECTION] COMMAND [ARGS...]\n" @@ -2348,7 +2397,7 @@ msgstr "" "Gunakan 'gresource help PERINTAH' untuk memperoleh bantuan terrinci.\n" "\n" -#: ../gio/gresource-tool.c:541 +#: ../gio/gresource-tool.c:545 #, c-format msgid "" "Usage:\n" @@ -2363,19 +2412,19 @@ msgstr "" "%s\n" "\n" -#: ../gio/gresource-tool.c:548 +#: ../gio/gresource-tool.c:552 msgid " SECTION An (optional) elf section name\n" msgstr " SEKSI Nama seksi elf (opsional)\n" -#: ../gio/gresource-tool.c:552 ../gio/gsettings-tool.c:635 +#: ../gio/gresource-tool.c:556 ../gio/gsettings-tool.c:652 msgid " COMMAND The (optional) command to explain\n" msgstr " PERINTAH Perintah (opsional) untuk dijelaskan\n" -#: ../gio/gresource-tool.c:558 +#: ../gio/gresource-tool.c:562 msgid " FILE An elf file (a binary or a shared library)\n" msgstr " BERKAS Berkas elf (biner atau pustaka bersama)\n" -#: ../gio/gresource-tool.c:561 +#: ../gio/gresource-tool.c:565 msgid "" " FILE An elf file (a binary or a shared library)\n" " or a compiled resource file\n" @@ -2383,23 +2432,24 @@ msgstr "" " BERKAS Berkas elf (biner atau pustaka bersama)\n" " atau berkas sumber daya terkompail\n" -#: ../gio/gresource-tool.c:565 +#: ../gio/gresource-tool.c:569 msgid "[PATH]" msgstr "[PATH]" -#: ../gio/gresource-tool.c:567 +#: ../gio/gresource-tool.c:571 msgid " PATH An (optional) resource path (may be partial)\n" msgstr " PATH Path sumber daya (opsional, mungkin parsial)\n" -#: ../gio/gresource-tool.c:568 +#: ../gio/gresource-tool.c:572 msgid "PATH" msgstr "PATH" -#: ../gio/gresource-tool.c:570 +#: ../gio/gresource-tool.c:574 msgid " PATH A resource path\n" msgstr " PATH Path sumber daya\n" #: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72 +#: ../gio/gsettings-tool.c:837 #, c-format msgid "No such schema '%s'\n" msgstr "Tak ada skema '%s'\n" @@ -2434,38 +2484,38 @@ msgstr "Path harus diakhiri dengan garis miring (/)\n" msgid "Path must not contain two adjacent slashes (//)\n" msgstr "Path tak boleh memuat dua slash berturutan (//)\n" -#: ../gio/gsettings-tool.c:477 +#: ../gio/gsettings-tool.c:494 #, c-format msgid "The provided value is outside of the valid range\n" msgstr "Nilai yang diberikan diluar rentang yang valid\n" -#: ../gio/gsettings-tool.c:484 +#: ../gio/gsettings-tool.c:501 #, c-format msgid "The key is not writable\n" msgstr "Kunci tidak dapat ditulisi\n" -#: ../gio/gsettings-tool.c:520 +#: ../gio/gsettings-tool.c:537 msgid "List the installed (non-relocatable) schemas" msgstr "Daftar skema (yang tak bisa dipindah) yang terpasang" -#: ../gio/gsettings-tool.c:526 +#: ../gio/gsettings-tool.c:543 msgid "List the installed relocatable schemas" msgstr "Daftar skema yang dapat dipindah yang terpasang" -#: ../gio/gsettings-tool.c:532 +#: ../gio/gsettings-tool.c:549 msgid "List the keys in SCHEMA" msgstr "Daftar kunci di SKEMA" -#: ../gio/gsettings-tool.c:533 ../gio/gsettings-tool.c:539 -#: ../gio/gsettings-tool.c:576 +#: ../gio/gsettings-tool.c:550 ../gio/gsettings-tool.c:556 +#: ../gio/gsettings-tool.c:593 msgid "SCHEMA[:PATH]" msgstr "SKEMA[:PATH]" -#: ../gio/gsettings-tool.c:538 +#: ../gio/gsettings-tool.c:555 msgid "List the children of SCHEMA" msgstr "Daftar anak dari SKEMA" -#: ../gio/gsettings-tool.c:544 +#: ../gio/gsettings-tool.c:561 msgid "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" @@ -2473,44 +2523,44 @@ msgstr "" "Daftar kunci dan nilai, secara rekursif\n" "Bila tak ada SKEMA diberikan, daftar semua kunci\n" -#: ../gio/gsettings-tool.c:546 +#: ../gio/gsettings-tool.c:563 msgid "[SCHEMA[:PATH]]" msgstr "[SKEMA[:PATH]]" -#: ../gio/gsettings-tool.c:551 +#: ../gio/gsettings-tool.c:568 msgid "Get the value of KEY" msgstr "Ambil nilai dari KUNCI" -#: ../gio/gsettings-tool.c:552 ../gio/gsettings-tool.c:558 -#: ../gio/gsettings-tool.c:570 ../gio/gsettings-tool.c:582 +#: ../gio/gsettings-tool.c:569 ../gio/gsettings-tool.c:575 +#: ../gio/gsettings-tool.c:587 ../gio/gsettings-tool.c:599 msgid "SCHEMA[:PATH] KEY" msgstr "SKEMA[:PATH] KUNCI" -#: ../gio/gsettings-tool.c:557 +#: ../gio/gsettings-tool.c:574 msgid "Query the range of valid values for KEY" msgstr "Kueri rentang nilai yang valid bagi KUNCI" -#: ../gio/gsettings-tool.c:563 +#: ../gio/gsettings-tool.c:580 msgid "Set the value of KEY to VALUE" msgstr "Menata nilai KUNCI ke NILAI" -#: ../gio/gsettings-tool.c:564 +#: ../gio/gsettings-tool.c:581 msgid "SCHEMA[:PATH] KEY VALUE" msgstr "SKEMA[:PATH] KUNCI NILAI" -#: ../gio/gsettings-tool.c:569 +#: ../gio/gsettings-tool.c:586 msgid "Reset KEY to its default value" msgstr "Menata KUNCI ke nilai bawaannya" -#: ../gio/gsettings-tool.c:575 +#: ../gio/gsettings-tool.c:592 msgid "Reset all keys in SCHEMA to their defaults" msgstr "Tata ulang semua kunci dalam SKEMA ke nilai baku" -#: ../gio/gsettings-tool.c:581 +#: ../gio/gsettings-tool.c:598 msgid "Check if KEY is writable" msgstr "Periksa apakah KUNCI dapat ditulisi" -#: ../gio/gsettings-tool.c:587 +#: ../gio/gsettings-tool.c:604 msgid "" "Monitor KEY for changes.\n" "If no KEY is specified, monitor all keys in SCHEMA.\n" @@ -2520,11 +2570,11 @@ msgstr "" "Bila tak ada KUNCI yang dinyatakan, memantau semua kunci dalam SKEMA.\n" "Gunakan ^C untuk berhenti memantau.\n" -#: ../gio/gsettings-tool.c:590 +#: ../gio/gsettings-tool.c:607 msgid "SCHEMA[:PATH] [KEY]" msgstr "SKEMA[:PATH] [KUNCI]" -#: ../gio/gsettings-tool.c:602 +#: ../gio/gsettings-tool.c:619 msgid "" "Usage:\n" " gsettings --version\n" @@ -2570,7 +2620,7 @@ msgstr "" "Pakai 'gsettings help PERINTAH' untuk mendapat bantuan terrinci.\n" "\n" -#: ../gio/gsettings-tool.c:625 +#: ../gio/gsettings-tool.c:642 #, c-format msgid "" "Usage:\n" @@ -2585,11 +2635,11 @@ msgstr "" "%s\n" "\n" -#: ../gio/gsettings-tool.c:631 +#: ../gio/gsettings-tool.c:648 msgid " SCHEMADIR A directory to search for additional schemas\n" msgstr " DIRSKEMA Adalah direktori tempat mencari skema tambahan\n" -#: ../gio/gsettings-tool.c:639 +#: ../gio/gsettings-tool.c:656 msgid "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" @@ -2597,160 +2647,160 @@ msgstr "" " SKEMA Nama skema\n" " PATH Path, bagi skema yang dapat dipindah\n" -#: ../gio/gsettings-tool.c:644 +#: ../gio/gsettings-tool.c:661 msgid " KEY The (optional) key within the schema\n" msgstr " KUNCI Kunci (opsional) dalam skema\n" -#: ../gio/gsettings-tool.c:648 +#: ../gio/gsettings-tool.c:665 msgid " KEY The key within the schema\n" msgstr " KUNCI Kunci dalam skema\n" -#: ../gio/gsettings-tool.c:652 +#: ../gio/gsettings-tool.c:669 msgid " VALUE The value to set\n" msgstr " NILAI Tatanan nilai\n" -#: ../gio/gsettings-tool.c:707 +#: ../gio/gsettings-tool.c:725 #, c-format msgid "Could not load schemas from %s: %s\n" msgstr "Tidak dapat memuat skema dari %s: %s\n" -#: ../gio/gsettings-tool.c:769 +#: ../gio/gsettings-tool.c:795 #, c-format msgid "Empty schema name given\n" msgstr "Nama skema yang diberikan kosong\n" -#: ../gio/gsettings-tool.c:798 +#: ../gio/gsettings-tool.c:850 #, c-format msgid "No such key '%s'\n" msgstr "Tak ada kunci '%s'\n" -#: ../gio/gsocket.c:266 +#: ../gio/gsocket.c:280 msgid "Invalid socket, not initialized" msgstr "Soket tak valid, tak diinisialisasi" -#: ../gio/gsocket.c:273 +#: ../gio/gsocket.c:287 #, c-format msgid "Invalid socket, initialization failed due to: %s" msgstr "Soket tak valid, inisialisasi gagal karena: %s" -#: ../gio/gsocket.c:281 +#: ../gio/gsocket.c:295 msgid "Socket is already closed" msgstr "Soket telah ditutup" -#: ../gio/gsocket.c:296 ../gio/gsocket.c:3618 ../gio/gsocket.c:3673 +#: ../gio/gsocket.c:310 ../gio/gsocket.c:3624 ../gio/gsocket.c:3679 msgid "Socket I/O timed out" msgstr "I/O soket kehabisan waktu" -#: ../gio/gsocket.c:443 +#: ../gio/gsocket.c:439 #, c-format msgid "creating GSocket from fd: %s" msgstr "membuat GSocket dari fd: %s" -#: ../gio/gsocket.c:471 ../gio/gsocket.c:525 ../gio/gsocket.c:532 +#: ../gio/gsocket.c:467 ../gio/gsocket.c:521 ../gio/gsocket.c:528 #, c-format msgid "Unable to create socket: %s" msgstr "Tak bisa membuat soket: %s" -#: ../gio/gsocket.c:525 +#: ../gio/gsocket.c:521 msgid "Unknown family was specified" msgstr "Famili tak dikenal dinyatakan" -#: ../gio/gsocket.c:532 +#: ../gio/gsocket.c:528 msgid "Unknown protocol was specified" msgstr "Protokol tak dikenal dinyatakan" -#: ../gio/gsocket.c:1722 +#: ../gio/gsocket.c:1724 #, c-format msgid "could not get local address: %s" msgstr "tak bisa mendapat alamat lokal: %s" -#: ../gio/gsocket.c:1765 +#: ../gio/gsocket.c:1767 #, c-format msgid "could not get remote address: %s" msgstr "tak bisa mendapat alamat jauh: %s" -#: ../gio/gsocket.c:1826 +#: ../gio/gsocket.c:1828 #, c-format msgid "could not listen: %s" msgstr "tak bisa mendengarkan: %s" -#: ../gio/gsocket.c:1925 +#: ../gio/gsocket.c:1927 #, c-format msgid "Error binding to address: %s" msgstr "Galat saat mengikat ke alamat: %s" -#: ../gio/gsocket.c:2037 ../gio/gsocket.c:2074 +#: ../gio/gsocket.c:2042 ../gio/gsocket.c:2079 #, c-format msgid "Error joining multicast group: %s" msgstr "Galat saat bergabung dengan grup multicast: %s" -#: ../gio/gsocket.c:2038 ../gio/gsocket.c:2075 +#: ../gio/gsocket.c:2043 ../gio/gsocket.c:2080 #, c-format msgid "Error leaving multicast group: %s" msgstr "Galat saat meninggalkan grup multicast: %s" -#: ../gio/gsocket.c:2039 +#: ../gio/gsocket.c:2044 msgid "No support for source-specific multicast" msgstr "Tak ada dukungan bagi multicast spesifik sumber" -#: ../gio/gsocket.c:2261 +#: ../gio/gsocket.c:2266 #, c-format msgid "Error accepting connection: %s" msgstr "Galat saat menerima sambungan: %s" -#: ../gio/gsocket.c:2382 +#: ../gio/gsocket.c:2389 msgid "Connection in progress" msgstr "Penyambungan tengah berlangsung" -#: ../gio/gsocket.c:2432 +#: ../gio/gsocket.c:2439 msgid "Unable to get pending error: " msgstr "Tak bisa mendapat kesalahan yang tertunda:" -#: ../gio/gsocket.c:2633 +#: ../gio/gsocket.c:2642 #, c-format msgid "Error receiving data: %s" msgstr "Galat saat menerima data: %s" -#: ../gio/gsocket.c:2811 +#: ../gio/gsocket.c:2817 #, c-format msgid "Error sending data: %s" msgstr "Galat saat mengirim data: %s" -#: ../gio/gsocket.c:2925 +#: ../gio/gsocket.c:2931 #, c-format msgid "Unable to shutdown socket: %s" msgstr "Tak bisa mematikan soket: %s" -#: ../gio/gsocket.c:3004 +#: ../gio/gsocket.c:3010 #, c-format msgid "Error closing socket: %s" msgstr "Galat saat menutup soket: %s" -#: ../gio/gsocket.c:3611 +#: ../gio/gsocket.c:3617 #, c-format msgid "Waiting for socket condition: %s" msgstr "Menunggu kondisi soket: %s" -#: ../gio/gsocket.c:3897 ../gio/gsocket.c:3978 +#: ../gio/gsocket.c:3904 ../gio/gsocket.c:3987 ../gio/gsocket.c:4230 #, c-format msgid "Error sending message: %s" msgstr "Galat saat menerima pesan: %s" -#: ../gio/gsocket.c:3922 +#: ../gio/gsocket.c:3929 msgid "GSocketControlMessage not supported on Windows" msgstr "GSocketControlMessage tak didukung pada Windows" -#: ../gio/gsocket.c:4259 ../gio/gsocket.c:4394 +#: ../gio/gsocket.c:4559 ../gio/gsocket.c:4697 #, c-format msgid "Error receiving message: %s" msgstr "Galat saat menerima pesan: %s" -#: ../gio/gsocket.c:4516 +#: ../gio/gsocket.c:4819 #, c-format msgid "Unable to read socket credentials: %s" msgstr "Tak bisa membaca kredensial soket: %s" -#: ../gio/gsocket.c:4525 +#: ../gio/gsocket.c:4828 msgid "g_socket_get_credentials not implemented for this OS" msgstr "g_socket_get_credentials tidak diimplementasikan untuk OS ini" @@ -2768,24 +2818,24 @@ msgstr "Tak bisa menyambung ke %s: " msgid "Could not connect: " msgstr "Tak bisa menyambung: " -#: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1603 +#: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1599 msgid "Unknown error on connect" msgstr "Galat tak dikenal saat hubungan" -#: ../gio/gsocketclient.c:1082 ../gio/gsocketclient.c:1538 +#: ../gio/gsocketclient.c:1081 ../gio/gsocketclient.c:1535 msgid "Proxying over a non-TCP connection is not supported." msgstr "Proksi melalui koneksi bukan TCP tidak didukung." -#: ../gio/gsocketclient.c:1108 ../gio/gsocketclient.c:1559 +#: ../gio/gsocketclient.c:1110 ../gio/gsocketclient.c:1561 #, c-format msgid "Proxy protocol '%s' is not supported." msgstr "Protokol proksi '%s' tidak didukung." -#: ../gio/gsocketlistener.c:188 +#: ../gio/gsocketlistener.c:218 msgid "Listener is already closed" msgstr "Pendengar telah ditutup" -#: ../gio/gsocketlistener.c:234 +#: ../gio/gsocketlistener.c:264 msgid "Added socket is closed" msgstr "Soket yang ditambahkan tertutup" @@ -2905,23 +2955,23 @@ msgstr "Sementara tidak dapat menguraikan '%s'" msgid "Error resolving '%s'" msgstr "Galat saat menguraikan '%s'" -#: ../gio/gtlscertificate.c:247 +#: ../gio/gtlscertificate.c:250 msgid "Cannot decrypt PEM-encoded private key" msgstr "Tak bisa mendekripsi kunci privat terenkode-PEM" -#: ../gio/gtlscertificate.c:252 +#: ../gio/gtlscertificate.c:255 msgid "No PEM-encoded private key found" msgstr "Tak ditemukan sertifikat terenkode-PEM" -#: ../gio/gtlscertificate.c:262 +#: ../gio/gtlscertificate.c:265 msgid "Could not parse PEM-encoded private key" msgstr "Tak bisa mengurai kunci privat terenkode-PEM" -#: ../gio/gtlscertificate.c:287 +#: ../gio/gtlscertificate.c:290 msgid "No PEM-encoded certificate found" msgstr "Tak ditemukan sertifika terenkode-PEM" -#: ../gio/gtlscertificate.c:296 +#: ../gio/gtlscertificate.c:299 msgid "Could not parse PEM-encoded certificate" msgstr "Tak bisa mengurai sertifikat terenkode-PEM" @@ -2945,72 +2995,72 @@ msgstr "" msgid "The password entered is incorrect." msgstr "Sandi yang dimasukkan salah." -#: ../gio/gunixconnection.c:159 ../gio/gunixconnection.c:554 +#: ../gio/gunixconnection.c:166 ../gio/gunixconnection.c:561 #, c-format msgid "Expecting 1 control message, got %d" msgid_plural "Expecting 1 control message, got %d" msgstr[0] "Mengharapkan 1 pesan kendali, memperoleh %d" -#: ../gio/gunixconnection.c:175 ../gio/gunixconnection.c:566 +#: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:573 msgid "Unexpected type of ancillary data" msgstr "Tipe yang tak diharapkan dari data ancillary" -#: ../gio/gunixconnection.c:193 +#: ../gio/gunixconnection.c:200 #, c-format msgid "Expecting one fd, but got %d\n" msgid_plural "Expecting one fd, but got %d\n" msgstr[0] "Mengharapkan satu fd, tapi mendapat %d\n" -#: ../gio/gunixconnection.c:212 +#: ../gio/gunixconnection.c:219 msgid "Received invalid fd" msgstr "Menerima fd yang tak valid" -#: ../gio/gunixconnection.c:348 +#: ../gio/gunixconnection.c:355 msgid "Error sending credentials: " msgstr "Galat saat mengirim kredensial: " -#: ../gio/gunixconnection.c:496 +#: ../gio/gunixconnection.c:503 #, c-format msgid "Error checking if SO_PASSCRED is enabled for socket: %s" msgstr "Galat ketika memeriksa apakah SO_PASSCRED diaktifkan bagi soket: %s" -#: ../gio/gunixconnection.c:511 +#: ../gio/gunixconnection.c:518 #, c-format msgid "Error enabling SO_PASSCRED: %s" msgstr "Galat saat mengaktifkan SO_PASSCRED: %s" -#: ../gio/gunixconnection.c:540 +#: ../gio/gunixconnection.c:547 msgid "" "Expecting to read a single byte for receiving credentials but read zero bytes" msgstr "" "Berharap membaca byte tunggal untuk penerimaan kredensial tapi membaca nol " "byte" -#: ../gio/gunixconnection.c:580 +#: ../gio/gunixconnection.c:587 #, c-format msgid "Not expecting control message, but got %d" msgstr "Tak mengharapkan pesan kendali, tapi memperoleh %d" -#: ../gio/gunixconnection.c:604 +#: ../gio/gunixconnection.c:611 #, c-format msgid "Error while disabling SO_PASSCRED: %s" msgstr "Galat ketika mematikan SO_PASSCRED: %s" -#: ../gio/gunixinputstream.c:370 ../gio/gunixinputstream.c:391 +#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390 #, c-format msgid "Error reading from file descriptor: %s" msgstr "Galat saat membaca dari descriptor berkas: %s" -#: ../gio/gunixinputstream.c:424 ../gio/gunixoutputstream.c:410 +#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409 #, c-format msgid "Error closing file descriptor: %s" msgstr "Galat saat menutup descriptor berkas: %s" -#: ../gio/gunixmounts.c:2054 ../gio/gunixmounts.c:2107 +#: ../gio/gunixmounts.c:2099 ../gio/gunixmounts.c:2152 msgid "Filesystem root" msgstr "Akar sistem berkas" -#: ../gio/gunixoutputstream.c:356 ../gio/gunixoutputstream.c:377 +#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376 #, c-format msgid "Error writing to file descriptor: %s" msgstr "Galat saat menulis ke descriptor berkas: %s" @@ -3030,38 +3080,17 @@ msgstr "volume tak mengimplementasi eject" msgid "volume doesn't implement eject or eject_with_operation" msgstr "volume tak mengimplementasi eject atau eject_with_operation" -#: ../gio/gwin32appinfo.c:274 -msgid "Can't find application" -msgstr "Tak bisa menemukan aplikasi" - -#: ../gio/gwin32appinfo.c:306 -#, c-format -msgid "Error launching application: %s" -msgstr "Galat saat meluncurkan aplikasi: %s" - -#: ../gio/gwin32appinfo.c:342 -msgid "URIs not supported" -msgstr "URI tak didukung" - -#: ../gio/gwin32appinfo.c:364 -msgid "association changes not supported on win32" -msgstr "perubahan asosiasi tak didukung pada win32" - -#: ../gio/gwin32appinfo.c:376 -msgid "Association creation not supported on win32" -msgstr "Pembuatan asosiasi tak didukung pada win32" - -#: ../gio/gwin32inputstream.c:344 +#: ../gio/gwin32inputstream.c:343 #, c-format msgid "Error reading from handle: %s" msgstr "Galat saat membaca dari handle: %s" -#: ../gio/gwin32inputstream.c:388 ../gio/gwin32outputstream.c:375 +#: ../gio/gwin32inputstream.c:387 ../gio/gwin32outputstream.c:374 #, c-format msgid "Error closing handle: %s" msgstr "Galat saat menutup handle: %s" -#: ../gio/gwin32outputstream.c:331 +#: ../gio/gwin32outputstream.c:330 #, c-format msgid "Error writing to handle: %s" msgstr "Galat saat menulis ke handle: %s" @@ -3534,38 +3563,38 @@ msgstr "Gagal saat membaca taut simbolik '%s': %s" msgid "Symbolic links not supported" msgstr "Taut simbolik tidak didukung" -#: ../glib/giochannel.c:1389 +#: ../glib/giochannel.c:1388 #, c-format msgid "Could not open converter from '%s' to '%s': %s" msgstr "Tidak dapat membuka konverter dari '%s' menjadi '%s': %s" -#: ../glib/giochannel.c:1734 +#: ../glib/giochannel.c:1733 msgid "Can't do a raw read in g_io_channel_read_line_string" msgstr "" "Tidak dapat melakukan proses baca mentah di g_io_channel_read_line_string" -#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039 -#: ../glib/giochannel.c:2126 +#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038 +#: ../glib/giochannel.c:2125 msgid "Leftover unconverted data in read buffer" msgstr "Ada data tersisa yang belum dikonversi pada penyangga read" -#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939 +#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938 msgid "Channel terminates in a partial character" msgstr "Kanal terputus pada karakter sebagian" -#: ../glib/giochannel.c:1925 +#: ../glib/giochannel.c:1924 msgid "Can't do a raw read in g_io_channel_read_to_end" msgstr "Tidak dapat melakukan proses baca mentah di g_io_channel_read_to_end" -#: ../glib/gkeyfile.c:719 +#: ../glib/gkeyfile.c:737 msgid "Valid key file could not be found in search dirs" msgstr "Berkas kunci yang valid tak ditemukan pada direktori yang dicari" -#: ../glib/gkeyfile.c:755 +#: ../glib/gkeyfile.c:773 msgid "Not a regular file" msgstr "Bukan berkas biasa" -#: ../glib/gkeyfile.c:1155 +#: ../glib/gkeyfile.c:1173 #, c-format msgid "" "Key file contains line '%s' which is not a key-value pair, group, or comment" @@ -3573,50 +3602,50 @@ msgstr "" "Berkas kunci berisi baris '%s' yang bukan pasangan nilai kunci, kelompok " "atau komentar" -#: ../glib/gkeyfile.c:1212 +#: ../glib/gkeyfile.c:1230 #, c-format msgid "Invalid group name: %s" msgstr "Nama grup tak valid: %s" -#: ../glib/gkeyfile.c:1234 +#: ../glib/gkeyfile.c:1252 msgid "Key file does not start with a group" msgstr "Berkas kunci tidak mulai dengan sebuah kelompok" -#: ../glib/gkeyfile.c:1260 +#: ../glib/gkeyfile.c:1278 #, c-format msgid "Invalid key name: %s" msgstr "Nama kunci tak valid: %s" -#: ../glib/gkeyfile.c:1287 +#: ../glib/gkeyfile.c:1305 #, c-format msgid "Key file contains unsupported encoding '%s'" msgstr "Berkas kunci mengadung encoding yang tidak didukung '%s'" -#: ../glib/gkeyfile.c:1530 ../glib/gkeyfile.c:1692 ../glib/gkeyfile.c:3072 -#: ../glib/gkeyfile.c:3138 ../glib/gkeyfile.c:3264 ../glib/gkeyfile.c:3397 -#: ../glib/gkeyfile.c:3539 ../glib/gkeyfile.c:3768 ../glib/gkeyfile.c:3835 +#: ../glib/gkeyfile.c:1548 ../glib/gkeyfile.c:1721 ../glib/gkeyfile.c:3099 +#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3292 ../glib/gkeyfile.c:3422 +#: ../glib/gkeyfile.c:3566 ../glib/gkeyfile.c:3795 ../glib/gkeyfile.c:3862 #, c-format msgid "Key file does not have group '%s'" msgstr "Berkas kunci tidak memiliki kelompok '%s'" -#: ../glib/gkeyfile.c:1704 +#: ../glib/gkeyfile.c:1676 #, c-format -msgid "Key file does not have key '%s'" -msgstr "Berkas kunci tidak memiliki kunci '%s'" +msgid "Key file does not have key '%s' in group '%s'" +msgstr "Berkas kunci tidak memiliki kunci '%s' pada kelompok '%s'" -#: ../glib/gkeyfile.c:1811 ../glib/gkeyfile.c:1927 +#: ../glib/gkeyfile.c:1838 ../glib/gkeyfile.c:1954 #, c-format msgid "Key file contains key '%s' with value '%s' which is not UTF-8" msgstr "Berkas kunci mengandung kunci '%s' dengan nilai '%s' yang bukan UTF-8" -#: ../glib/gkeyfile.c:1831 ../glib/gkeyfile.c:1947 ../glib/gkeyfile.c:2316 +#: ../glib/gkeyfile.c:1858 ../glib/gkeyfile.c:1974 ../glib/gkeyfile.c:2343 #, c-format msgid "" "Key file contains key '%s' which has a value that cannot be interpreted." msgstr "" "Berkas kunci mengandung kunci '%s' yang nilainya tidak dapat diterjemahkan." -#: ../glib/gkeyfile.c:2533 ../glib/gkeyfile.c:2901 +#: ../glib/gkeyfile.c:2560 ../glib/gkeyfile.c:2928 #, c-format msgid "" "Key file contains key '%s' in group '%s' which has a value that cannot be " @@ -3625,41 +3654,36 @@ msgstr "" "Berkas kunci mengandung kunci '%s' dalam kelompok '%s' yang memiliki nilai " "yang tidak dapat diterjemahkan." -#: ../glib/gkeyfile.c:2611 ../glib/gkeyfile.c:2688 +#: ../glib/gkeyfile.c:2638 ../glib/gkeyfile.c:2715 #, c-format msgid "Key '%s' in group '%s' has value '%s' where %s was expected" msgstr "Kunci '%s' dalam grup '%s' bernilai '%s' padahal diharapkan %s" -#: ../glib/gkeyfile.c:3087 ../glib/gkeyfile.c:3279 ../glib/gkeyfile.c:3846 -#, c-format -msgid "Key file does not have key '%s' in group '%s'" -msgstr "Berkas kunci tidak memiliki kunci '%s' pada kelompok '%s'" - -#: ../glib/gkeyfile.c:4078 +#: ../glib/gkeyfile.c:4102 msgid "Key file contains escape character at end of line" msgstr "Berkas kunci mengandung karakter escape pada akhir baris" -#: ../glib/gkeyfile.c:4100 +#: ../glib/gkeyfile.c:4124 #, c-format msgid "Key file contains invalid escape sequence '%s'" msgstr "Berkas kunci berisi '%s'" -#: ../glib/gkeyfile.c:4242 +#: ../glib/gkeyfile.c:4266 #, c-format msgid "Value '%s' cannot be interpreted as a number." msgstr "Nilai '%s' tidak dapat diterjemahkan sebagai sebuah nomor." -#: ../glib/gkeyfile.c:4256 +#: ../glib/gkeyfile.c:4280 #, c-format msgid "Integer value '%s' out of range" msgstr "Nilai integer '%s' di luar jangkauan" -#: ../glib/gkeyfile.c:4289 +#: ../glib/gkeyfile.c:4313 #, c-format msgid "Value '%s' cannot be interpreted as a float number." msgstr "Nilai '%s' tidak dapat diterjemahkan sebagai angka pecahan." -#: ../glib/gkeyfile.c:4313 +#: ../glib/gkeyfile.c:4337 #, c-format msgid "Value '%s' cannot be interpreted as a boolean." msgstr "Nilai '%s' tidak dapat diterjemahkan sebagai suatu nilai boolean." @@ -3890,61 +3914,65 @@ msgstr "" "Dokumen terpotong tidak sempurna di dalam keterangan atau instruksi " "pemrosesan" -#: ../glib/goption.c:795 +#: ../glib/goption.c:857 msgid "Usage:" msgstr "Penggunaan:" -#: ../glib/goption.c:795 +#: ../glib/goption.c:861 msgid "[OPTION...]" msgstr "[OPSI...]" -#: ../glib/goption.c:911 +#: ../glib/goption.c:977 msgid "Help Options:" msgstr "Opsi Bantuan:" -#: ../glib/goption.c:912 +#: ../glib/goption.c:978 msgid "Show help options" msgstr "Menampilkan opsi bantuan" -#: ../glib/goption.c:918 +#: ../glib/goption.c:984 msgid "Show all help options" msgstr "Menampilkan semua opsi bantuan" -#: ../glib/goption.c:980 +#: ../glib/goption.c:1047 msgid "Application Options:" msgstr "Opsi Aplikasi:" -#: ../glib/goption.c:1044 ../glib/goption.c:1114 +#: ../glib/goption.c:1049 +msgid "Options:" +msgstr "Opsi:" + +#: ../glib/goption.c:1113 ../glib/goption.c:1183 #, c-format msgid "Cannot parse integer value '%s' for %s" msgstr "Tidak dapat menguraikan nilai integer '%s' untuk %s" -#: ../glib/goption.c:1054 ../glib/goption.c:1122 +#: ../glib/goption.c:1123 ../glib/goption.c:1191 #, c-format msgid "Integer value '%s' for %s out of range" msgstr "Nilai integer '%s' untuk %s di luar jangkauan" -#: ../glib/goption.c:1079 +#: ../glib/goption.c:1148 #, c-format msgid "Cannot parse double value '%s' for %s" msgstr "Tidak dapat mengurai nilai ganda '%s' untuk %s" -#: ../glib/goption.c:1087 +#: ../glib/goption.c:1156 #, c-format msgid "Double value '%s' for %s out of range" msgstr "Nilai double '%s' untuk %s di luar jangkauan" -#: ../glib/goption.c:1373 ../glib/goption.c:1452 +#: ../glib/goption.c:1442 ../glib/goption.c:1521 #, c-format msgid "Error parsing option %s" msgstr "Galat saat mengurai opsi %s" -#: ../glib/goption.c:1483 ../glib/goption.c:1596 +#: ../glib/goption.c:1552 ../glib/goption.c:1665 #, c-format msgid "Missing argument for %s" msgstr "Argumen untuk %s tidak lengkap" -#: ../glib/goption.c:2057 +#: ../glib/goption.c:2126 #, c-format msgid "Unknown option %s" msgstr "Pilihan tidak diketahui %s" @@ -4246,70 +4274,70 @@ msgstr "nama terlalu panjang dalam (*MARK), (*PRUNE), (*SKIP), atau (*THEN)" msgid "character value in \\u.... sequence is too large" msgstr "nilai karakter dalam urutan \\u.... terlalu besar" -#: ../glib/gregex.c:746 ../glib/gregex.c:1915 +#: ../glib/gregex.c:746 ../glib/gregex.c:1973 #, c-format msgid "Error while matching regular expression %s: %s" msgstr "Galat saat mencocokkan ekspresi reguler %s: %s" -#: ../glib/gregex.c:1312 +#: ../glib/gregex.c:1317 msgid "PCRE library is compiled without UTF8 support" msgstr "Pustaka PCRE dikompail tanpa dukungan UTF-8" -#: ../glib/gregex.c:1316 +#: ../glib/gregex.c:1321 msgid "PCRE library is compiled without UTF8 properties support" msgstr "Pustaka PCRE dikompail tanpa dukungan properti UTF-8" -#: ../glib/gregex.c:1324 +#: ../glib/gregex.c:1329 msgid "PCRE library is compiled with incompatible options" msgstr "Pustaka PCRE dikompail dengan opsi yang tak kompatibel" -#: ../glib/gregex.c:1383 -#, c-format -msgid "Error while compiling regular expression %s at char %d: %s" -msgstr "Galat saat mengkompail ekspresi reguler %s pada karakter %d: %s" - -#: ../glib/gregex.c:1425 +#: ../glib/gregex.c:1358 #, c-format msgid "Error while optimizing regular expression %s: %s" msgstr "Galat saat mengoptimasi ekspresi reguler %s: %s" -#: ../glib/gregex.c:2347 +#: ../glib/gregex.c:1438 +#, c-format +msgid "Error while compiling regular expression %s at char %d: %s" +msgstr "Galat saat mengkompail ekspresi reguler %s pada karakter %d: %s" + +#: ../glib/gregex.c:2409 msgid "hexadecimal digit or '}' expected" msgstr "digit heksadesimal atau '}' diharapkan" -#: ../glib/gregex.c:2363 +#: ../glib/gregex.c:2425 msgid "hexadecimal digit expected" msgstr "digit heksadesimal diharapkan" -#: ../glib/gregex.c:2403 +#: ../glib/gregex.c:2465 msgid "missing '<' in symbolic reference" msgstr "kehilangan '<' di acuan simbolis" -#: ../glib/gregex.c:2412 +#: ../glib/gregex.c:2474 msgid "unfinished symbolic reference" msgstr "acuan simbolis yang belum selesai" -#: ../glib/gregex.c:2419 +#: ../glib/gregex.c:2481 msgid "zero-length symbolic reference" msgstr "acuan simbolis dengan panjang nol" -#: ../glib/gregex.c:2430 +#: ../glib/gregex.c:2492 msgid "digit expected" msgstr "diharapkan digit" -#: ../glib/gregex.c:2448 +#: ../glib/gregex.c:2510 msgid "illegal symbolic reference" msgstr "acuan simbolis yang tak legal" -#: ../glib/gregex.c:2510 +#: ../glib/gregex.c:2572 msgid "stray final '\\'" msgstr "'\\' akhir yang tercecer" -#: ../glib/gregex.c:2514 +#: ../glib/gregex.c:2576 msgid "unknown escape sequence" msgstr "urutan escape tak dikenal" -#: ../glib/gregex.c:2524 +#: ../glib/gregex.c:2586 #, c-format msgid "Error while parsing replacement text \"%s\" at char %lu: %s" msgstr "Galat saat mengurai teks penggani \"%s\" pada karakter %lu: %s" @@ -4357,62 +4385,62 @@ msgstr "" msgid "Unexpected error in waitpid() (%s)" msgstr "Terjadi galat pada fungsi waitpid() (%s)" -#: ../glib/gspawn.c:849 ../glib/gspawn-win32.c:1233 +#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233 #, c-format msgid "Child process exited with code %ld" msgstr "Proses anak keluar dengan kode %ld" -#: ../glib/gspawn.c:857 +#: ../glib/gspawn.c:852 #, c-format msgid "Child process killed by signal %ld" msgstr "Proses anak dimatikan oleh sinyal %ld" -#: ../glib/gspawn.c:864 +#: ../glib/gspawn.c:859 #, c-format msgid "Child process stopped by signal %ld" msgstr "Proses anak dihentikan oleh sinyal %ld" -#: ../glib/gspawn.c:871 +#: ../glib/gspawn.c:866 #, c-format msgid "Child process exited abnormally" msgstr "Proses anak keluar secara tak normal" -#: ../glib/gspawn.c:1276 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 +#: ../glib/gspawn.c:1271 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 #, c-format msgid "Failed to read from child pipe (%s)" msgstr "Gagal saat membaca dari pipe child (%s)" -#: ../glib/gspawn.c:1346 +#: ../glib/gspawn.c:1341 #, c-format msgid "Failed to fork (%s)" msgstr "Gagal saat fork (%s)" -#: ../glib/gspawn.c:1495 ../glib/gspawn-win32.c:370 +#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370 #, c-format msgid "Failed to change to directory '%s' (%s)" msgstr "Gagal saat mengganti direktori ke '%s' (%s)" -#: ../glib/gspawn.c:1505 +#: ../glib/gspawn.c:1500 #, c-format msgid "Failed to execute child process \"%s\" (%s)" msgstr "Gagal saat menjalankan proses child '%s' (%s)" -#: ../glib/gspawn.c:1515 +#: ../glib/gspawn.c:1510 #, c-format msgid "Failed to redirect output or input of child process (%s)" msgstr "Gagal mengarahkan output atau input pada proses child (%s)" -#: ../glib/gspawn.c:1524 +#: ../glib/gspawn.c:1519 #, c-format msgid "Failed to fork child process (%s)" msgstr "Gagal saat fork proses child (%s)" -#: ../glib/gspawn.c:1532 +#: ../glib/gspawn.c:1527 #, c-format msgid "Unknown error executing child process \"%s\"" msgstr "Terjadi galat ketika mengeksekusi anak proses \"%s\"" -#: ../glib/gspawn.c:1556 +#: ../glib/gspawn.c:1551 #, c-format msgid "Failed to read enough data from child pid pipe (%s)" msgstr "Gagal saat membaca data yang dibutuhkan dai pipe pid child (%s)" @@ -4484,74 +4512,74 @@ msgstr "Rangkaian input konversi salah" msgid "Character out of range for UTF-16" msgstr "Karakter di luar jangkauan UTF-16" -#: ../glib/gutils.c:2116 ../glib/gutils.c:2143 ../glib/gutils.c:2249 +#: ../glib/gutils.c:2118 ../glib/gutils.c:2145 ../glib/gutils.c:2251 #, c-format msgid "%u byte" msgid_plural "%u bytes" msgstr[0] "%u bita" -#: ../glib/gutils.c:2122 +#: ../glib/gutils.c:2124 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" -#: ../glib/gutils.c:2124 +#: ../glib/gutils.c:2126 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" -#: ../glib/gutils.c:2127 +#: ../glib/gutils.c:2129 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" -#: ../glib/gutils.c:2130 +#: ../glib/gutils.c:2132 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" -#: ../glib/gutils.c:2133 +#: ../glib/gutils.c:2135 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" -#: ../glib/gutils.c:2136 +#: ../glib/gutils.c:2138 #, c-format msgid "%.1f EiB" msgstr "%.1f EiB" -#: ../glib/gutils.c:2149 +#: ../glib/gutils.c:2151 #, c-format msgid "%.1f kB" msgstr "%.1f kB" -#: ../glib/gutils.c:2152 ../glib/gutils.c:2267 +#: ../glib/gutils.c:2154 ../glib/gutils.c:2269 #, c-format msgid "%.1f MB" msgstr "%.1f MB" -#: ../glib/gutils.c:2155 ../glib/gutils.c:2272 +#: ../glib/gutils.c:2157 ../glib/gutils.c:2274 #, c-format msgid "%.1f GB" msgstr "%.1f GB" -#: ../glib/gutils.c:2157 ../glib/gutils.c:2277 +#: ../glib/gutils.c:2159 ../glib/gutils.c:2279 #, c-format msgid "%.1f TB" msgstr "%.1f TB" -#: ../glib/gutils.c:2160 ../glib/gutils.c:2282 +#: ../glib/gutils.c:2162 ../glib/gutils.c:2284 #, c-format msgid "%.1f PB" msgstr "%.1f PB" -#: ../glib/gutils.c:2163 ../glib/gutils.c:2287 +#: ../glib/gutils.c:2165 ../glib/gutils.c:2289 #, c-format msgid "%.1f EB" msgstr "%.1f EB" #. Translators: the %s in "%s bytes" will always be replaced by a number. -#: ../glib/gutils.c:2200 +#: ../glib/gutils.c:2202 #, c-format msgid "%s byte" msgid_plural "%s bytes" @@ -4562,7 +4590,7 @@ msgstr[0] "%s bita" #. * compatibility. Users will not see this string unless a program is using this deprecated function. #. * Please translate as literally as possible. #. -#: ../glib/gutils.c:2262 +#: ../glib/gutils.c:2264 #, c-format msgid "%.1f KB" msgstr "%.1f KB" diff --git a/po/is.gmo b/po/is.gmo new file mode 100644 index 0000000000000000000000000000000000000000..6044076de3963e6ac9c795688d7d595e4136d735 GIT binary patch literal 13669 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, 2003 # +# Richard Allen , 2003. +# Sveinn í Felli , 2015. msgid "" msgstr "" "Project-Id-Version: glib 2.2\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=glib&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2011-09-04 23:56-0400\n" -"PO-Revision-Date: 2003-08-18 18:05+0000\n" -"Last-Translator: Richard Allen \n" -"Language-Team: is \n" -"Language: \n" +"POT-Creation-Date: 2015-04-24 06:02+0000\n" +"PO-Revision-Date: 2015-04-24 14:35+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Lokalize 1.5\n" -#: ../glib/gbookmarkfile.c:780 -#, fuzzy, c-format -msgid "Unexpected attribute '%s' for element '%s'" +#: ../gio/gapplication.c:531 +msgid "Enter GApplication service mode (use from D-Bus service files)" msgstr "" -"Undarlegt tákn '%s', átti von á '=' eftir heiti eiginleika '%s' af mengi '%s'" -#: ../glib/gbookmarkfile.c:791 ../glib/gbookmarkfile.c:862 -#: ../glib/gbookmarkfile.c:872 ../glib/gbookmarkfile.c:979 -#, c-format -msgid "Attribute '%s' of element '%s' not found" +#: ../gio/gapplication.c:536 +msgid "GApplication options" msgstr "" -#: ../glib/gbookmarkfile.c:1149 ../glib/gbookmarkfile.c:1214 -#: ../glib/gbookmarkfile.c:1278 ../glib/gbookmarkfile.c:1288 -#, c-format -msgid "Unexpected tag '%s', tag '%s' expected" +#: ../gio/gapplication.c:536 +msgid "Show GApplication options" msgstr "" -#: ../glib/gbookmarkfile.c:1174 ../glib/gbookmarkfile.c:1188 -#: ../glib/gbookmarkfile.c:1256 ../glib/gbookmarkfile.c:1308 -#, c-format -msgid "Unexpected tag '%s' inside '%s'" +#: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46 +#: ../gio/gresource-tool.c:485 ../gio/gsettings-tool.c:521 +msgid "Print help" msgstr "" -#: ../glib/gbookmarkfile.c:1834 -msgid "No valid bookmark file found in data dirs" +#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:486 +#: ../gio/gresource-tool.c:554 +msgid "[COMMAND]" msgstr "" -#: ../glib/gbookmarkfile.c:2035 -#, c-format -msgid "A bookmark for URI '%s' already exists" +#: ../gio/gapplication-tool.c:49 +msgid "Print version" msgstr "" -#: ../glib/gbookmarkfile.c:2081 ../glib/gbookmarkfile.c:2239 -#: ../glib/gbookmarkfile.c:2324 ../glib/gbookmarkfile.c:2404 -#: ../glib/gbookmarkfile.c:2489 ../glib/gbookmarkfile.c:2572 -#: ../glib/gbookmarkfile.c:2650 ../glib/gbookmarkfile.c:2729 -#: ../glib/gbookmarkfile.c:2771 ../glib/gbookmarkfile.c:2868 -#: ../glib/gbookmarkfile.c:2994 ../glib/gbookmarkfile.c:3184 -#: ../glib/gbookmarkfile.c:3260 ../glib/gbookmarkfile.c:3425 -#: ../glib/gbookmarkfile.c:3514 ../glib/gbookmarkfile.c:3604 -#: ../glib/gbookmarkfile.c:3732 -#, c-format -msgid "No bookmark found for URI '%s'" +#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:527 +msgid "Print version information and exit" +msgstr "" + +#: ../gio/gapplication-tool.c:52 +msgid "List applications" +msgstr "" + +#: ../gio/gapplication-tool.c:53 +msgid "List the installed D-Bus activatable applications (by .desktop files)" +msgstr "" + +#: ../gio/gapplication-tool.c:55 +#, fuzzy +msgid "Launch an application" +msgstr "Villa við umbreytingu: %s" + +#: ../gio/gapplication-tool.c:56 +msgid "Launch the application (with optional files to open)" +msgstr "" + +#: ../gio/gapplication-tool.c:57 +msgid "APPID [FILE...]" +msgstr "" + +#: ../gio/gapplication-tool.c:59 +msgid "Activate an action" +msgstr "" + +#: ../gio/gapplication-tool.c:60 +msgid "Invoke an action on the application" +msgstr "" + +#: ../gio/gapplication-tool.c:61 +msgid "APPID ACTION [PARAMETER]" msgstr "" -#: ../glib/gbookmarkfile.c:2413 +#: ../gio/gapplication-tool.c:63 +msgid "List available actions" +msgstr "" + +#: ../gio/gapplication-tool.c:64 +msgid "List static actions for an application (from .desktop file)" +msgstr "" + +#: ../gio/gapplication-tool.c:65 ../gio/gapplication-tool.c:71 +msgid "APPID" +msgstr "" + +#: ../gio/gapplication-tool.c:70 ../gio/gapplication-tool.c:133 +#: ../gio/gdbus-tool.c:90 +msgid "COMMAND" +msgstr "" + +#: ../gio/gapplication-tool.c:70 +msgid "The command to print detailed help for" +msgstr "" + +#: ../gio/gapplication-tool.c:71 +msgid "Application identifier in D-Bus format (eg: org.example.viewer)" +msgstr "" + +#: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589 +#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:492 +#: ../gio/gresource-tool.c:558 +msgid "FILE" +msgstr "" + +#: ../gio/gapplication-tool.c:72 +msgid "Optional relative or absolute filenames, or URIs to open" +msgstr "" + +#: ../gio/gapplication-tool.c:73 +msgid "ACTION" +msgstr "" + +#: ../gio/gapplication-tool.c:73 +msgid "The action name to invoke" +msgstr "" + +#: ../gio/gapplication-tool.c:74 +msgid "PARAMETER" +msgstr "" + +#: ../gio/gapplication-tool.c:74 +msgid "Optional parameter to the action invocation, in GVariant format" +msgstr "" + +#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:523 +#: ../gio/gsettings-tool.c:607 #, c-format -msgid "No MIME type defined in the bookmark for URI '%s'" +msgid "" +"Unknown command %s\n" +"\n" +msgstr "" + +#: ../gio/gapplication-tool.c:101 +msgid "Usage:\n" +msgstr "" + +#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:548 +#: ../gio/gsettings-tool.c:641 +msgid "Arguments:\n" +msgstr "" + +#: ../gio/gapplication-tool.c:133 +msgid "[ARGS...]" msgstr "" -#: ../glib/gbookmarkfile.c:2498 +#: ../gio/gapplication-tool.c:134 #, c-format -msgid "No private flag has been defined in bookmark for URI '%s'" +msgid "Commands:\n" msgstr "" -#: ../glib/gbookmarkfile.c:2877 +#. Translators: do not translate 'help', but please translate 'COMMAND'. +#: ../gio/gapplication-tool.c:146 #, c-format -msgid "No groups set in bookmark for URI '%s'" +msgid "" +"Use '%s help COMMAND' to get detailed help.\n" +"\n" msgstr "" -#: ../glib/gbookmarkfile.c:3278 ../glib/gbookmarkfile.c:3435 +#: ../gio/gapplication-tool.c:165 #, c-format -msgid "No application with name '%s' registered a bookmark for '%s'" +msgid "" +"%s command requires an application id to directly follow\n" +"\n" msgstr "" -#: ../glib/gbookmarkfile.c:3458 +#: ../gio/gapplication-tool.c:171 #, fuzzy, c-format -msgid "Failed to expand exec line '%s' with URI '%s'" -msgstr "gat ekki lesið tákntengið '%s': %s" +msgid "invalid application id: '%s'\n" +msgstr "Villa við umbreytingu: %s" -#: ../glib/gconvert.c:567 ../glib/gconvert.c:645 ../glib/giochannel.c:1404 -#: ../gio/gcharsetconverter.c:458 +#. Translators: %s is replaced with a command name like 'list-actions' +#: ../gio/gapplication-tool.c:182 #, c-format -msgid "Conversion from character set '%s' to '%s' is not supported" -msgstr "Umbreyting úr stafasettinu '%s' í '%s' er ekki stutt" +msgid "" +"'%s' takes no arguments\n" +"\n" +msgstr "" -#: ../glib/gconvert.c:571 ../glib/gconvert.c:649 -#: ../gio/gcharsetconverter.c:462 +#: ../gio/gapplication-tool.c:266 #, fuzzy, c-format -msgid "Could not open converter from '%s' to '%s'" -msgstr "Gat ekki opnað umbreyti úr '%s' í '%s': %s" +msgid "unable to connect to D-Bus: %s\n" +msgstr "gat ekki búið til skrána '%s': %s" -#: ../glib/gconvert.c:768 ../glib/gconvert.c:1162 ../glib/giochannel.c:1576 -#: ../glib/giochannel.c:1618 ../glib/giochannel.c:2461 ../glib/gutf8.c:1012 -#: ../glib/gutf8.c:1463 ../gio/gcharsetconverter.c:345 -#: ../gio/gdatainputstream.c:854 ../gio/gdatainputstream.c:1291 -msgid "Invalid byte sequence in conversion input" -msgstr "Ógild bætaruna í ílagi umbreytingar" +#: ../gio/gapplication-tool.c:286 +#, fuzzy, c-format +msgid "error sending %s message to application: %s\n" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../glib/gconvert.c:777 ../glib/gconvert.c:1087 ../glib/giochannel.c:1583 -#: ../glib/giochannel.c:2473 ../gio/gcharsetconverter.c:350 +#: ../gio/gapplication-tool.c:317 #, c-format -msgid "Error during conversion: %s" -msgstr "Villa við umbreytingu: %s" - -#: ../glib/gconvert.c:809 ../glib/gutf8.c:1008 ../glib/gutf8.c:1218 -#: ../glib/gutf8.c:1355 ../glib/gutf8.c:1459 -msgid "Partial character sequence at end of input" -msgstr "Ókláruð stafaruna í enda ílags" +msgid "action name must be given after application id\n" +msgstr "" -#: ../glib/gconvert.c:1059 +#: ../gio/gapplication-tool.c:325 #, c-format -msgid "Cannot convert fallback '%s' to codeset '%s'" -msgstr "Gat ekki umbreytt '%s' í stafatöflu '%s'" +msgid "" +"invalid action name: '%s'\n" +"action names must consist of only alphanumerics, '-' and '.'\n" +msgstr "" -#: ../glib/gconvert.c:1886 +#: ../gio/gapplication-tool.c:344 #, fuzzy, c-format -msgid "The URI '%s' is not an absolute URI using the \"file\" scheme" -msgstr "URI '%s' er ekki fullt URI sem notar 'file' skemuna" +msgid "error parsing action parameter: %s\n" +msgstr "Villa við umbreytingu: %s" -#: ../glib/gconvert.c:1896 +#: ../gio/gapplication-tool.c:356 #, c-format -msgid "The local file URI '%s' may not include a '#'" -msgstr "Skráar-URI '%s' má ekki innihalda '#'" +msgid "actions accept a maximum of one parameter\n" +msgstr "" -#: ../glib/gconvert.c:1913 +#: ../gio/gapplication-tool.c:411 #, c-format -msgid "The URI '%s' is invalid" -msgstr "URI '%s' er ógilt" +msgid "list-actions command takes only the application id" +msgstr "" -#: ../glib/gconvert.c:1925 +#: ../gio/gapplication-tool.c:421 #, c-format -msgid "The hostname of the URI '%s' is invalid" -msgstr "Vélarheitið í URI '%s' er ógilt" +msgid "unable to find desktop file for application %s\n" +msgstr "" -#: ../glib/gconvert.c:1941 +#: ../gio/gapplication-tool.c:466 #, c-format -msgid "The URI '%s' contains invalidly escaped characters" -msgstr "URI '%s' inniheldur ógild sértákn" +msgid "" +"unrecognised command: %s\n" +"\n" +msgstr "" -#: ../glib/gconvert.c:2036 +#: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498 +#: ../gio/ginputstream.c:176 ../gio/ginputstream.c:376 +#: ../gio/ginputstream.c:614 ../gio/ginputstream.c:1013 +#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:830 +#: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206 #, c-format -msgid "The pathname '%s' is not an absolute path" -msgstr "Slóðin '%s' er ekki full slóð" - -#: ../glib/gconvert.c:2046 -msgid "Invalid hostname" -msgstr "Ógilt vélarheiti" +msgid "Too large count value passed to %s" +msgstr "" -#. Translators: 'before midday' indicator -#: ../glib/gdatetime.c:202 -msgctxt "GDateTime" -msgid "AM" -msgstr "fh" +#: ../gio/gbufferedinputstream.c:891 ../gio/gbufferedoutputstream.c:575 +#: ../gio/gdataoutputstream.c:562 +#, fuzzy +msgid "Seek not supported on base stream" +msgstr "Tákntengi eru ekki studd" -#. Translators: 'after midday' indicator -#: ../glib/gdatetime.c:204 -msgctxt "GDateTime" -msgid "PM" -msgstr "eh" +#: ../gio/gbufferedinputstream.c:937 +msgid "Cannot truncate GBufferedInputStream" +msgstr "" -#. Translators: this is the preferred format for expressing the date and the time -#: ../glib/gdatetime.c:207 -msgctxt "GDateTime" -msgid "%a %b %e %H:%M:%S %Y" -msgstr "%a %e.%b %Y, %T %Z" +#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1202 +#: ../gio/giostream.c:278 ../gio/goutputstream.c:1654 +msgid "Stream is already closed" +msgstr "" -#. Translators: this is the preferred format for expressing the date -#: ../glib/gdatetime.c:210 -msgctxt "GDateTime" -msgid "%m/%d/%y" -msgstr "%a %e.%b %Y" +#: ../gio/gbufferedoutputstream.c:612 ../gio/gdataoutputstream.c:592 +#, fuzzy +msgid "Truncate not supported on base stream" +msgstr "Tákntengi eru ekki studd" -#. Translators: this is the preferred format for expressing the time -#: ../glib/gdatetime.c:213 -msgctxt "GDateTime" -msgid "%H:%M:%S" -msgstr "%T" +#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1858 +#: ../gio/gdbusprivate.c:1375 ../gio/glocalfile.c:2212 +#: ../gio/gsimpleasyncresult.c:870 ../gio/gsimpleasyncresult.c:896 +#, c-format +msgid "Operation was cancelled" +msgstr "" -#. Translators: this is the preferred format for expressing 12 hour time -#: ../glib/gdatetime.c:216 -msgctxt "GDateTime" -msgid "%I:%M:%S %p" +#: ../gio/gcharsetconverter.c:260 +msgid "Invalid object, not initialized" msgstr "" -#: ../glib/gdatetime.c:229 -msgctxt "full month name" -msgid "January" -msgstr "janúar" +#: ../gio/gcharsetconverter.c:281 ../gio/gcharsetconverter.c:309 +#, fuzzy +msgid "Incomplete multibyte sequence in input" +msgstr "Ógild bætaruna í ílagi umbreytingar" -#: ../glib/gdatetime.c:231 -msgctxt "full month name" -msgid "February" -msgstr "febrúar" +#: ../gio/gcharsetconverter.c:315 ../gio/gcharsetconverter.c:324 +msgid "Not enough space in destination" +msgstr "" -#: ../glib/gdatetime.c:233 -msgctxt "full month name" -msgid "March" -msgstr "mars" +#: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848 +#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 +#: ../glib/gconvert.c:845 ../glib/giochannel.c:1556 ../glib/giochannel.c:1598 +#: ../glib/giochannel.c:2442 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 +msgid "Invalid byte sequence in conversion input" +msgstr "Ógild bætaruna í ílagi umbreytingar" -#: ../glib/gdatetime.c:235 -msgctxt "full month name" -msgid "April" -msgstr "apríl" +#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 +#: ../glib/gconvert.c:770 ../glib/giochannel.c:1563 ../glib/giochannel.c:2454 +#, c-format +msgid "Error during conversion: %s" +msgstr "Villa við umbreytingu: %s" -#: ../glib/gdatetime.c:237 -msgctxt "full month name" -msgid "May" -msgstr "maí" +#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:990 +#, fuzzy +msgid "Cancellable initialization not supported" +msgstr "Tákntengi eru ekki studd" -#: ../glib/gdatetime.c:239 -msgctxt "full month name" -msgid "June" -msgstr "júní" +#: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321 +#: ../glib/giochannel.c:1384 +#, c-format +msgid "Conversion from character set '%s' to '%s' is not supported" +msgstr "Umbreyting úr stafasettinu '%s' í '%s' er ekki stutt" -#: ../glib/gdatetime.c:241 -msgctxt "full month name" -msgid "July" -msgstr "júlí" +#: ../gio/gcharsetconverter.c:458 ../glib/gconvert.c:325 +#, fuzzy, c-format +msgid "Could not open converter from '%s' to '%s'" +msgstr "Gat ekki opnað umbreyti úr '%s' í '%s': %s" -#: ../glib/gdatetime.c:243 -msgctxt "full month name" -msgid "August" +#: ../gio/gcontenttype.c:335 +#, c-format +msgid "%s type" msgstr "" -#: ../glib/gdatetime.c:245 -msgctxt "full month name" -msgid "September" +#: ../gio/gcontenttype-win32.c:160 +msgid "Unknown type" msgstr "" -#: ../glib/gdatetime.c:247 -msgctxt "full month name" -msgid "October" +#: ../gio/gcontenttype-win32.c:161 +#, c-format +msgid "%s filetype" msgstr "" -#: ../glib/gdatetime.c:249 -msgctxt "full month name" -msgid "November" +#: ../gio/gcredentials.c:312 ../gio/gcredentials.c:571 +msgid "GCredentials is not implemented on this OS" msgstr "" -#: ../glib/gdatetime.c:251 -msgctxt "full month name" -msgid "December" +#: ../gio/gcredentials.c:467 +msgid "There is no GCredentials support for your platform" msgstr "" -#: ../glib/gdatetime.c:266 -msgctxt "abbreviated month name" -msgid "Jan" -msgstr "jan" - -#: ../glib/gdatetime.c:268 -msgctxt "abbreviated month name" -msgid "Feb" -msgstr "feb" - -#: ../glib/gdatetime.c:270 -msgctxt "abbreviated month name" -msgid "Mar" -msgstr "mar" - -#: ../glib/gdatetime.c:272 -msgctxt "abbreviated month name" -msgid "Apr" -msgstr "apr" - -#: ../glib/gdatetime.c:274 -msgctxt "abbreviated month name" -msgid "May" -msgstr "maí" - -#: ../glib/gdatetime.c:276 -msgctxt "abbreviated month name" -msgid "Jun" -msgstr "jún" - -#: ../glib/gdatetime.c:278 -msgctxt "abbreviated month name" -msgid "Jul" -msgstr "júl" +#: ../gio/gcredentials.c:513 +msgid "GCredentials does not contain a process ID on this OS" +msgstr "" -#: ../glib/gdatetime.c:280 -msgctxt "abbreviated month name" -msgid "Aug" +#: ../gio/gcredentials.c:565 +msgid "Credentials spoofing is not possible on this OS" msgstr "" -#: ../glib/gdatetime.c:282 -msgctxt "abbreviated month name" -msgid "Sep" +#: ../gio/gdatainputstream.c:304 +msgid "Unexpected early end-of-stream" msgstr "" -#: ../glib/gdatetime.c:284 -msgctxt "abbreviated month name" -msgid "Oct" +#: ../gio/gdbusaddress.c:148 ../gio/gdbusaddress.c:236 +#: ../gio/gdbusaddress.c:317 +#, c-format +msgid "Unsupported key '%s' in address entry '%s'" msgstr "" -#: ../glib/gdatetime.c:286 -msgctxt "abbreviated month name" -msgid "Nov" +#: ../gio/gdbusaddress.c:175 +#, c-format +msgid "" +"Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" msgstr "" -#: ../glib/gdatetime.c:288 -msgctxt "abbreviated month name" -msgid "Dec" +#: ../gio/gdbusaddress.c:188 +#, c-format +msgid "Meaningless key/value pair combination in address entry '%s'" msgstr "" -#: ../glib/gdatetime.c:303 -msgctxt "full weekday name" -msgid "Monday" -msgstr "mánudagur" - -#: ../glib/gdatetime.c:305 -msgctxt "full weekday name" -msgid "Tuesday" -msgstr "þriðjudagur" - -#: ../glib/gdatetime.c:307 -msgctxt "full weekday name" -msgid "Wednesday" -msgstr "miðvikudagur" - -#: ../glib/gdatetime.c:309 -msgctxt "full weekday name" -msgid "Thursday" -msgstr "fimmtudagur" - -#: ../glib/gdatetime.c:311 -msgctxt "full weekday name" -msgid "Friday" -msgstr "föstudagur" - -#: ../glib/gdatetime.c:313 -msgctxt "full weekday name" -msgid "Saturday" -msgstr "laugardagur" - -#: ../glib/gdatetime.c:315 -msgctxt "full weekday name" -msgid "Sunday" -msgstr "sunnudagur" - -#: ../glib/gdatetime.c:330 -msgctxt "abbreviated weekday name" -msgid "Mon" -msgstr "mán" - -#: ../glib/gdatetime.c:332 -msgctxt "abbreviated weekday name" -msgid "Tue" -msgstr "þri" - -#: ../glib/gdatetime.c:334 -msgctxt "abbreviated weekday name" -msgid "Wed" -msgstr "mið" - -#: ../glib/gdatetime.c:336 -msgctxt "abbreviated weekday name" -msgid "Thu" -msgstr "fim" - -#: ../glib/gdatetime.c:338 -msgctxt "abbreviated weekday name" -msgid "Fri" -msgstr "fös" - -#: ../glib/gdatetime.c:340 -msgctxt "abbreviated weekday name" -msgid "Sat" -msgstr "lau" - -#: ../glib/gdatetime.c:342 -msgctxt "abbreviated weekday name" -msgid "Sun" -msgstr "sun" +#: ../gio/gdbusaddress.c:251 ../gio/gdbusaddress.c:332 +#, c-format +msgid "Error in address '%s' - the port attribute is malformed" +msgstr "" -#: ../glib/gdir.c:115 ../glib/gdir.c:138 +#: ../gio/gdbusaddress.c:262 ../gio/gdbusaddress.c:343 #, c-format -msgid "Error opening directory '%s': %s" -msgstr "Villa við að opna möppuna '%s': %s" +msgid "Error in address '%s' - the family attribute is malformed" +msgstr "" -#: ../glib/gfileutils.c:540 ../glib/gfileutils.c:628 +#: ../gio/gdbusaddress.c:452 #, c-format -msgid "Could not allocate %lu bytes to read file \"%s\"" -msgstr "Gat ekki frátekið %lu bæti til að lesa skrána \"%s\"" +msgid "Address element '%s' does not contain a colon (:)" +msgstr "" -#: ../glib/gfileutils.c:555 +#: ../gio/gdbusaddress.c:473 #, c-format -msgid "Error reading file '%s': %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +msgid "" +"Key/Value pair %d, '%s', in address element '%s' does not contain an equal " +"sign" +msgstr "" -#: ../glib/gfileutils.c:569 +#: ../gio/gdbusaddress.c:487 #, c-format -msgid "File \"%s\" is too large" +msgid "" +"Error unescaping key or value in Key/Value pair %d, '%s', in address element " +"'%s'" msgstr "" -#: ../glib/gfileutils.c:652 +#: ../gio/gdbusaddress.c:565 #, c-format -msgid "Failed to read from file '%s': %s" -msgstr "Gat ekki lesið úr skránni '%s': %s" +msgid "" +"Error in address '%s' - the unix transport requires exactly one of the keys " +"'path' or 'abstract' to be set" +msgstr "" -#: ../glib/gfileutils.c:703 ../glib/gfileutils.c:790 +#: ../gio/gdbusaddress.c:601 #, c-format -msgid "Failed to open file '%s': %s" -msgstr "Gat ekki opnað skrána '%s': %s" +msgid "Error in address '%s' - the host attribute is missing or malformed" +msgstr "" -#: ../glib/gfileutils.c:720 ../glib/gmappedfile.c:169 +#: ../gio/gdbusaddress.c:615 #, c-format -msgid "Failed to get attributes of file '%s': fstat() failed: %s" -msgstr "gat ekki lesið eiginleika skráarinnar '%s': fstat() brást: %s" +msgid "Error in address '%s' - the port attribute is missing or malformed" +msgstr "" -#: ../glib/gfileutils.c:754 +#: ../gio/gdbusaddress.c:629 #, c-format -msgid "Failed to open file '%s': fdopen() failed: %s" -msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" +msgid "Error in address '%s' - the noncefile attribute is missing or malformed" +msgstr "" -#: ../glib/gfileutils.c:862 -#, fuzzy, c-format -msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s" -msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" +#: ../gio/gdbusaddress.c:650 +#, fuzzy +msgid "Error auto-launching: " +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../glib/gfileutils.c:904 ../glib/gfileutils.c:1449 +#: ../gio/gdbusaddress.c:658 #, c-format -msgid "Failed to create file '%s': %s" -msgstr "gat ekki búið til skrána '%s': %s" +msgid "Unknown or unsupported transport '%s' for address '%s'" +msgstr "" -#: ../glib/gfileutils.c:918 +#: ../gio/gdbusaddress.c:694 #, fuzzy, c-format -msgid "Failed to open file '%s' for writing: fdopen() failed: %s" -msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" +msgid "Error opening nonce file '%s': %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../glib/gfileutils.c:943 +#: ../gio/gdbusaddress.c:712 #, fuzzy, c-format -msgid "Failed to write file '%s': fwrite() failed: %s" -msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" +msgid "Error reading from nonce file '%s': %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../glib/gfileutils.c:962 +#: ../gio/gdbusaddress.c:721 #, fuzzy, c-format -msgid "Failed to write file '%s': fflush() failed: %s" -msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" +msgid "Error reading from nonce file '%s', expected 16 bytes, got %d" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../glib/gfileutils.c:1006 +#: ../gio/gdbusaddress.c:739 #, fuzzy, c-format -msgid "Failed to write file '%s': fsync() failed: %s" -msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" +msgid "Error writing contents of nonce file '%s' to stream:" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../glib/gfileutils.c:1030 -#, fuzzy, c-format -msgid "Failed to close file '%s': fclose() failed: %s" -msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" +#: ../gio/gdbusaddress.c:945 +msgid "The given address is empty" +msgstr "" -#: ../glib/gfileutils.c:1152 +#: ../gio/gdbusaddress.c:1015 #, c-format -msgid "Existing file '%s' could not be removed: g_unlink() failed: %s" +msgid "Cannot spawn a message bus when setuid" msgstr "" -#: ../glib/gfileutils.c:1412 -#, c-format -msgid "Template '%s' invalid, should not contain a '%s'" -msgstr "Sniðmátið '%s' er ógilt og ætti ekki að innihalda '%s'" +#: ../gio/gdbusaddress.c:1022 +msgid "Cannot spawn a message bus without a machine-id: " +msgstr "" -#: ../glib/gfileutils.c:1425 +#: ../gio/gdbusaddress.c:1064 #, fuzzy, c-format -msgid "Template '%s' doesn't contain XXXXXX" -msgstr "Sniðmátið '%s' endar ekki á XXXXXX" - -#: ../glib/gfileutils.c:2001 ../glib/gfileutils.c:2029 -#: ../glib/gfileutils.c:2134 -#, c-format -msgid "%u byte" -msgid_plural "%u bytes" -msgstr[0] "" -msgstr[1] "" +msgid "Error spawning command line '%s': " +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../glib/gfileutils.c:2007 +#: ../gio/gdbusaddress.c:1281 #, c-format -msgid "%.1f KiB" +msgid "(Type any character to close this window)\n" msgstr "" -#: ../glib/gfileutils.c:2010 +#: ../gio/gdbusaddress.c:1412 #, c-format -msgid "%.1f MiB" +msgid "Session dbus not running, and autolaunch failed" msgstr "" -#: ../glib/gfileutils.c:2013 +#: ../gio/gdbusaddress.c:1433 #, c-format -msgid "%.1f GiB" +msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "" -#: ../glib/gfileutils.c:2016 +#: ../gio/gdbusaddress.c:1533 ../gio/gdbusconnection.c:6825 #, c-format -msgid "%.1f TiB" +msgid "" +"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " +"- unknown value '%s'" msgstr "" -#: ../glib/gfileutils.c:2019 -#, c-format -msgid "%.1f PiB" +#: ../gio/gdbusaddress.c:1542 ../gio/gdbusconnection.c:6834 +msgid "" +"Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " +"variable is not set" msgstr "" -#: ../glib/gfileutils.c:2022 +#: ../gio/gdbusaddress.c:1552 #, c-format -msgid "%.1f EiB" +msgid "Unknown bus type %d" msgstr "" -#: ../glib/gfileutils.c:2035 -#, c-format -msgid "%.1f kB" +#: ../gio/gdbusauth.c:293 +msgid "Unexpected lack of content trying to read a line" msgstr "" -#: ../glib/gfileutils.c:2038 ../glib/gfileutils.c:2147 -#, c-format -msgid "%.1f MB" +#: ../gio/gdbusauth.c:337 +msgid "Unexpected lack of content trying to (safely) read a line" msgstr "" -#: ../glib/gfileutils.c:2041 ../glib/gfileutils.c:2152 +#: ../gio/gdbusauth.c:508 #, c-format -msgid "%.1f GB" +msgid "" +"Exhausted all available authentication mechanisms (tried: %s) (available: %s)" msgstr "" -#: ../glib/gfileutils.c:2044 ../glib/gfileutils.c:2157 -#, c-format -msgid "%.1f TB" +#: ../gio/gdbusauth.c:1170 +msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer" msgstr "" -#: ../glib/gfileutils.c:2047 ../glib/gfileutils.c:2162 +#: ../gio/gdbusauthmechanismsha1.c:261 +#, fuzzy, c-format +#| msgid "Error opening directory '%s': %s" +msgid "Error when getting information for directory '%s': %s" +msgstr "Villa við að opna möppuna '%s': %s" + +#: ../gio/gdbusauthmechanismsha1.c:273 #, c-format -msgid "%.1f PB" +msgid "" +"Permissions on directory '%s' are malformed. Expected mode 0700, got 0%o" msgstr "" -#: ../glib/gfileutils.c:2050 ../glib/gfileutils.c:2167 +#: ../gio/gdbusauthmechanismsha1.c:294 +#, fuzzy, c-format +msgid "Error creating directory '%s': %s" +msgstr "Villa við að opna möppuna '%s': %s" + +#: ../gio/gdbusauthmechanismsha1.c:377 +#, fuzzy, c-format +msgid "Error opening keyring '%s' for reading: " +msgstr "Villa við lestur skráarinnar '%s': %s" + +#: ../gio/gdbusauthmechanismsha1.c:401 ../gio/gdbusauthmechanismsha1.c:714 #, c-format -msgid "%.1f EB" +msgid "Line %d of the keyring at '%s' with content '%s' is malformed" msgstr "" -#. Translators: the %s in "%s bytes" will always be replaced by a number. -#: ../glib/gfileutils.c:2087 +#: ../gio/gdbusauthmechanismsha1.c:415 ../gio/gdbusauthmechanismsha1.c:728 #, c-format -msgid "%s byte" -msgid_plural "%s bytes" -msgstr[0] "" -msgstr[1] "" +msgid "" +"First token of line %d of the keyring at '%s' with content '%s' is malformed" +msgstr "" -#: ../glib/gfileutils.c:2142 +#: ../gio/gdbusauthmechanismsha1.c:430 ../gio/gdbusauthmechanismsha1.c:742 #, c-format -msgid "%.1f KB" +msgid "" +"Second token of line %d of the keyring at '%s' with content '%s' is malformed" msgstr "" -#: ../glib/gfileutils.c:2210 +#: ../gio/gdbusauthmechanismsha1.c:454 #, c-format -msgid "Failed to read the symbolic link '%s': %s" -msgstr "gat ekki lesið tákntengið '%s': %s" - -#: ../glib/gfileutils.c:2231 -msgid "Symbolic links not supported" -msgstr "Tákntengi eru ekki studd" +msgid "Didn't find cookie with id %d in the keyring at '%s'" +msgstr "" -#: ../glib/giochannel.c:1408 +#: ../gio/gdbusauthmechanismsha1.c:532 #, fuzzy, c-format -msgid "Could not open converter from '%s' to '%s': %s" -msgstr "Gat ekki opnað umbreyti úr '%s' í '%s': %s" - -#: ../glib/giochannel.c:1753 -msgid "Can't do a raw read in g_io_channel_read_line_string" -msgstr "Gat ekki lesið í g_io_channel_read_line_string" - -#: ../glib/giochannel.c:1800 ../glib/giochannel.c:2057 -#: ../glib/giochannel.c:2144 -msgid "Leftover unconverted data in read buffer" -msgstr "Það eru eftir óumbreytt gögn í lesminninu" - -#: ../glib/giochannel.c:1881 ../glib/giochannel.c:1958 -msgid "Channel terminates in a partial character" -msgstr "Rásin endar á hluta úr tákni" - -#: ../glib/giochannel.c:1944 -msgid "Can't do a raw read in g_io_channel_read_to_end" -msgstr "Gat ekki lesið í g_io_channel_read_to_end" +msgid "Error deleting stale lock file '%s': %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../glib/gmappedfile.c:150 +#: ../gio/gdbusauthmechanismsha1.c:564 #, fuzzy, c-format -msgid "Failed to open file '%s': open() failed: %s" -msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" +msgid "Error creating lock file '%s': %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../glib/gmappedfile.c:229 +#: ../gio/gdbusauthmechanismsha1.c:594 #, fuzzy, c-format -msgid "Failed to map file '%s': mmap() failed: %s" -msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" +msgid "Error closing (unlinked) lock file '%s': %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../glib/gmarkup.c:355 ../glib/gmarkup.c:396 +#: ../gio/gdbusauthmechanismsha1.c:604 #, fuzzy, c-format -msgid "Error on line %d char %d: " -msgstr "Villa á línu %d tákn %d: %s" +msgid "Error unlinking lock file '%s': %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../glib/gmarkup.c:418 ../glib/gmarkup.c:501 +#: ../gio/gdbusauthmechanismsha1.c:681 #, fuzzy, c-format -msgid "Invalid UTF-8 encoded text in name - not valid '%s'" -msgstr "Ógildur UTF-8 þýddur texti" +msgid "Error opening keyring '%s' for writing: " +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../glib/gmarkup.c:429 +#: ../gio/gdbusauthmechanismsha1.c:878 #, c-format -msgid "'%s' is not a valid name " +msgid "(Additionally, releasing the lock for '%s' also failed: %s) " msgstr "" -#: ../glib/gmarkup.c:445 -#, c-format -msgid "'%s' is not a valid name: '%c' " +#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2359 +msgid "The connection is closed" msgstr "" -#: ../glib/gmarkup.c:554 -#, c-format -msgid "Error on line %d: %s" -msgstr "Villa á línu %d: %s" +#: ../gio/gdbusconnection.c:1888 +msgid "Timeout was reached" +msgstr "" -#: ../glib/gmarkup.c:638 -#, fuzzy, c-format +#: ../gio/gdbusconnection.c:2481 msgid "" -"Failed to parse '%-.*s', which should have been a digit inside a character " -"reference (ê for example) - perhaps the digit is too large" +"Unsupported flags encountered when constructing a client-side connection" msgstr "" -"Gat ekki þáttað '%s' sem ætti að vera tölustafur innan í tilvísun í tákn " -"(til dæmis ê). Ef til vill er talan of stór" -#: ../glib/gmarkup.c:650 +#: ../gio/gdbusconnection.c:4061 ../gio/gdbusconnection.c:4408 +#, c-format msgid "" -"Character reference did not end with a semicolon; most likely you used an " -"ampersand character without intending to start an entity - escape ampersand " -"as &" +"No such interface 'org.freedesktop.DBus.Properties' on object at path %s" msgstr "" -"Viðfangið endar ekki á semikommu; líklega notaðir þú og-merkið án þess að " -"ætla að byrja viðfang. Ritaðu það sem &" - -#: ../glib/gmarkup.c:676 -#, fuzzy, c-format -msgid "Character reference '%-.*s' does not encode a permitted character" -msgstr "Tákntilvísunin '%s' vísar ekki í leyfilegt tákn" -#: ../glib/gmarkup.c:714 -msgid "" -"Empty entity '&;' seen; valid entities are: & " < > '" -msgstr "" -"Tómt viðfang '&;' fannst; gild viðföng eru: & " < > '" - -#: ../glib/gmarkup.c:722 -#, fuzzy, c-format -msgid "Entity name '%-.*s' is not known" -msgstr "Viðfangið '%s' er óþekkt" - -#: ../glib/gmarkup.c:727 -msgid "" -"Entity did not end with a semicolon; most likely you used an ampersand " -"character without intending to start an entity - escape ampersand as &" +#: ../gio/gdbusconnection.c:4203 +#, c-format +msgid "No such property '%s'" msgstr "" -"Viðfangið endar ekki á semikommu; líklega notaðir þú og-merkið án þess að " -"ætla að byrja viðfang. Ritaðu það sem &" - -#: ../glib/gmarkup.c:1078 -msgid "Document must begin with an element (e.g. )" -msgstr "Skjalið verður að byrja á viðfangi (t.d. )" -#: ../glib/gmarkup.c:1118 +#: ../gio/gdbusconnection.c:4215 #, c-format -msgid "" -"'%s' is not a valid character following a '<' character; it may not begin an " -"element name" +msgid "Property '%s' is not readable" msgstr "" -"'%s' er ekki gilt tákn strax á eftir '<' tákninu; það má ekki byrja á heiti " -"viðfangs" -#: ../glib/gmarkup.c:1186 -#, fuzzy, c-format -msgid "" -"Odd character '%s', expected a '>' character to end the empty-element tag " -"'%s'" -msgstr "Undarlegt tákn '%s', átti von á '>' tákninu til að enda viðfangið '%s'" - -#: ../glib/gmarkup.c:1270 +#: ../gio/gdbusconnection.c:4226 #, c-format -msgid "" -"Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" +msgid "Property '%s' is not writable" msgstr "" -"Undarlegt tákn '%s', átti von á '=' eftir heiti eiginleika '%s' af mengi '%s'" -#: ../glib/gmarkup.c:1311 +#: ../gio/gdbusconnection.c:4246 #, c-format -msgid "" -"Odd character '%s', expected a '>' or '/' character to end the start tag of " -"element '%s', or optionally an attribute; perhaps you used an invalid " -"character in an attribute name" +msgid "Error setting property '%s': Expected type '%s' but got '%s'" msgstr "" -"Undarlegt tákn '%s', átti von á '>' eða '/' tákni rtil þess að enda upphafs " -"viðfangi '%s', eða eiginleika; Þú notaðir ef til vill ógilt tákn í heiti " -"eiginleika" -#: ../glib/gmarkup.c:1355 +#: ../gio/gdbusconnection.c:4351 ../gio/gdbusconnection.c:6265 #, c-format -msgid "" -"Odd character '%s', expected an open quote mark after the equals sign when " -"giving value for attribute '%s' of element '%s'" +msgid "No such interface '%s'" msgstr "" -"Undarlegt tákn '%s', átti von á tilvísunarmerki eftir samasem merkinu þegar " -"gildi er gefið með eiginleikanum '%s' af menginu '%s'" -#: ../glib/gmarkup.c:1488 -#, c-format -msgid "" -"'%s' is not a valid character following the characters ''" +msgid "No such interface '%s' on object at path %s" msgstr "" -"'%s' er ekki gilt tákn strax á eftir lokun mengis '%s'. Leyfilegt tákn er '>'" -#: ../glib/gmarkup.c:1535 +#: ../gio/gdbusconnection.c:4875 #, c-format -msgid "Element '%s' was closed, no element is currently open" -msgstr "Mengið '%s' var lokað og engin önnur mengi eru opin" +msgid "No such method '%s'" +msgstr "" -#: ../glib/gmarkup.c:1544 +#: ../gio/gdbusconnection.c:4906 #, c-format -msgid "Element '%s' was closed, but the currently open element is '%s'" -msgstr "Mengið '%s' var lokað en mengið sem nú er opið er '%s'" - -#: ../glib/gmarkup.c:1712 -msgid "Document was empty or contained only whitespace" -msgstr "Skjalið var tómt eða innihélt einungis orðabil" - -#: ../glib/gmarkup.c:1726 -msgid "Document ended unexpectedly just after an open angle bracket '<'" -msgstr "Skjalið endar óvænt rétt eftir opið minna en merki '<'" +msgid "Type of message, '%s', does not match expected type '%s'" +msgstr "" -#: ../glib/gmarkup.c:1734 ../glib/gmarkup.c:1779 +#: ../gio/gdbusconnection.c:5104 #, c-format -msgid "" -"Document ended unexpectedly with elements still open - '%s' was the last " -"element opened" +msgid "An object is already exported for the interface %s at %s" msgstr "" -"Skjalið endar óvænt með mengi sem enn eru opin. '%s' var mengið sem síðast " -"var opnað" -#: ../glib/gmarkup.c:1742 +#: ../gio/gdbusconnection.c:5303 #, c-format -msgid "" -"Document ended unexpectedly, expected to see a close angle bracket ending " -"the tag <%s/>" +msgid "Method '%s' returned type '%s', but expected '%s'" msgstr "" -"Skjalið endar óvænt. Átti von á að sjá stærraen merki sem lokar taginu <%s/>" - -#: ../glib/gmarkup.c:1748 -msgid "Document ended unexpectedly inside an element name" -msgstr "Skjalið endar óvænt inn í heiti mengis" -#: ../glib/gmarkup.c:1754 -msgid "Document ended unexpectedly inside an attribute name" -msgstr "Skjalið endar óvænt inn í heiti eiginleika" - -#: ../glib/gmarkup.c:1759 -msgid "Document ended unexpectedly inside an element-opening tag." -msgstr "Skjalið endar óvænt inn í tagi sem opnar mengi." - -#: ../glib/gmarkup.c:1765 -msgid "" -"Document ended unexpectedly after the equals sign following an attribute " -"name; no attribute value" +#: ../gio/gdbusconnection.c:6376 +#, c-format +msgid "Method '%s' on interface '%s' with signature '%s' does not exist" msgstr "" -"Skjalið endar óvænt eftir samasem merkið sem fylgir heiti eiginleika og það " -"er ekkert gildi" - -#: ../glib/gmarkup.c:1772 -msgid "Document ended unexpectedly while inside an attribute value" -msgstr "Skjalið endar óvænt inn í gildi eiginleika" -#: ../glib/gmarkup.c:1788 +#: ../gio/gdbusconnection.c:6497 #, c-format -msgid "Document ended unexpectedly inside the close tag for element '%s'" -msgstr "Skjalið endar óvænt inni í lokunartagi fyrir mengið '%s'" - -#: ../glib/gmarkup.c:1794 -msgid "Document ended unexpectedly inside a comment or processing instruction" -msgstr "Skjalið endar óvænt inni í athugasemd eða í miðri skipun" - -#: ../glib/gregex.c:189 -msgid "corrupted object" +msgid "A subtree is already exported for %s" msgstr "" -#: ../glib/gregex.c:191 -msgid "internal error or corrupted object" +#: ../gio/gdbusmessage.c:1244 +msgid "type is INVALID" msgstr "" -#: ../glib/gregex.c:193 -msgid "out of memory" +#: ../gio/gdbusmessage.c:1255 +msgid "METHOD_CALL message: PATH or MEMBER header field is missing" msgstr "" -#: ../glib/gregex.c:198 -msgid "backtracking limit reached" +#: ../gio/gdbusmessage.c:1266 +msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing" msgstr "" -#: ../glib/gregex.c:210 ../glib/gregex.c:218 -msgid "the pattern contains items not supported for partial matching" +#: ../gio/gdbusmessage.c:1278 +msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing" msgstr "" -#: ../glib/gregex.c:212 ../gio/glocalfile.c:2107 -msgid "internal error" +#: ../gio/gdbusmessage.c:1291 +msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing" msgstr "" -#: ../glib/gregex.c:220 -msgid "back references as conditions are not supported for partial matching" +#: ../gio/gdbusmessage.c:1299 +msgid "" +"SIGNAL message: The PATH header field is using the reserved value /org/" +"freedesktop/DBus/Local" msgstr "" -#: ../glib/gregex.c:229 -msgid "recursion limit reached" +#: ../gio/gdbusmessage.c:1307 +msgid "" +"SIGNAL message: The INTERFACE header field is using the reserved value org." +"freedesktop.DBus.Local" msgstr "" -#: ../glib/gregex.c:231 -msgid "workspace limit for empty substrings reached" -msgstr "" +#: ../gio/gdbusmessage.c:1355 ../gio/gdbusmessage.c:1415 +#, c-format +msgid "Wanted to read %lu byte but only got %lu" +msgid_plural "Wanted to read %lu bytes but only got %lu" +msgstr[0] "" +msgstr[1] "" -#: ../glib/gregex.c:233 -msgid "invalid combination of newline flags" +#: ../gio/gdbusmessage.c:1369 +#, c-format +msgid "Expected NUL byte after the string '%s' but found byte %d" msgstr "" -#: ../glib/gregex.c:235 -msgid "bad offset" +#: ../gio/gdbusmessage.c:1388 +#, c-format +msgid "" +"Expected valid UTF-8 string but found invalid bytes at byte offset %d " +"(length of string is %d). The valid UTF-8 string up until that point was '%s'" msgstr "" -#: ../glib/gregex.c:237 -msgid "short utf8" +#: ../gio/gdbusmessage.c:1587 +#, c-format +msgid "Parsed value '%s' is not a valid D-Bus object path" msgstr "" -#: ../glib/gregex.c:241 -msgid "unknown error" +#: ../gio/gdbusmessage.c:1609 +#, c-format +msgid "Parsed value '%s' is not a valid D-Bus signature" msgstr "" -#: ../glib/gregex.c:261 -msgid "\\ at end of pattern" -msgstr "" +#: ../gio/gdbusmessage.c:1656 +#, c-format +msgid "" +"Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)." +msgid_plural "" +"Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)." +msgstr[0] "" +msgstr[1] "" -#: ../glib/gregex.c:264 -msgid "\\c at end of pattern" +#: ../gio/gdbusmessage.c:1676 +#, c-format +msgid "" +"Encountered array of type 'a%c', expected to have a length a multiple of %u " +"bytes, but found to be %u bytes in length" msgstr "" -#: ../glib/gregex.c:267 -msgid "unrecognized character follows \\" +#: ../gio/gdbusmessage.c:1843 +#, c-format +msgid "Parsed value '%s' for variant is not a valid D-Bus signature" msgstr "" -#: ../glib/gregex.c:274 -msgid "case-changing escapes (\\l, \\L, \\u, \\U) are not allowed here" +#: ../gio/gdbusmessage.c:1867 +#, c-format +msgid "" +"Error deserializing GVariant with type string '%s' from the D-Bus wire format" msgstr "" -#: ../glib/gregex.c:277 -msgid "numbers out of order in {} quantifier" +#: ../gio/gdbusmessage.c:2051 +#, c-format +msgid "" +"Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found value " +"0x%02x" msgstr "" -#: ../glib/gregex.c:280 -msgid "number too big in {} quantifier" +#: ../gio/gdbusmessage.c:2064 +#, c-format +msgid "Invalid major protocol version. Expected 1 but found %d" msgstr "" -#: ../glib/gregex.c:283 -#, fuzzy -msgid "missing terminating ] for character class" -msgstr "Rásin endar á hluta úr tákni" - -#: ../glib/gregex.c:286 -#, fuzzy -msgid "invalid escape sequence in character class" -msgstr "Ógild bætaruna í ílagi umbreytingar" - -#: ../glib/gregex.c:289 -msgid "range out of order in character class" +#: ../gio/gdbusmessage.c:2120 +#, c-format +msgid "Signature header with signature '%s' found but message body is empty" msgstr "" -#: ../glib/gregex.c:292 -msgid "nothing to repeat" +#: ../gio/gdbusmessage.c:2134 +#, c-format +msgid "Parsed value '%s' is not a valid D-Bus signature (for body)" msgstr "" -#: ../glib/gregex.c:295 -#, fuzzy -msgid "unrecognized character after (?" -msgstr "Hálfkláruð tákntilvísun" - -#: ../glib/gregex.c:299 -#, fuzzy -msgid "unrecognized character after (?<" -msgstr "Hálfkláruð tákntilvísun" - -#: ../glib/gregex.c:303 -#, fuzzy -msgid "unrecognized character after (?P" -msgstr "Hálfkláruð tákntilvísun" +#: ../gio/gdbusmessage.c:2164 +#, c-format +msgid "No signature header in message but the message body is %u byte" +msgid_plural "No signature header in message but the message body is %u bytes" +msgstr[0] "" +msgstr[1] "" -#: ../glib/gregex.c:306 -msgid "POSIX named classes are supported only within a class" +#: ../gio/gdbusmessage.c:2174 +msgid "Cannot deserialize message: " msgstr "" -#: ../glib/gregex.c:309 -msgid "missing terminating )" +#: ../gio/gdbusmessage.c:2515 +#, c-format +msgid "" +"Error serializing GVariant with type string '%s' to the D-Bus wire format" msgstr "" -#: ../glib/gregex.c:313 -msgid ") without opening (" +#: ../gio/gdbusmessage.c:2652 +#, c-format +msgid "" +"Message has %d file descriptors but the header field indicates %d file " +"descriptors" msgstr "" -#. translators: '(?R' and '(?[+-]digits' are both meant as (groups of) -#. * sequences here, '(?-54' would be an example for the second group. -#. -#: ../glib/gregex.c:320 -msgid "(?R or (?[+-]digits must be followed by )" +#: ../gio/gdbusmessage.c:2660 +msgid "Cannot serialize message: " msgstr "" -#: ../glib/gregex.c:323 -msgid "reference to non-existent subpattern" +#: ../gio/gdbusmessage.c:2704 +#, c-format +msgid "Message body has signature '%s' but there is no signature header" msgstr "" -#: ../glib/gregex.c:326 -msgid "missing ) after comment" +#: ../gio/gdbusmessage.c:2714 +#, c-format +msgid "" +"Message body has type signature '%s' but signature in the header field is " +"'%s'" msgstr "" -#: ../glib/gregex.c:329 -msgid "regular expression too large" +#: ../gio/gdbusmessage.c:2730 +#, c-format +msgid "Message body is empty but signature in the header field is '(%s)'" msgstr "" -#: ../glib/gregex.c:332 -msgid "failed to get memory" -msgstr "" +#: ../gio/gdbusmessage.c:3283 +#, fuzzy, c-format +msgid "Error return with body of type '%s'" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../glib/gregex.c:335 -msgid "lookbehind assertion is not fixed length" +#: ../gio/gdbusmessage.c:3291 +msgid "Error return with empty body" msgstr "" -#: ../glib/gregex.c:338 -msgid "malformed number or name after (?(" +#: ../gio/gdbusprivate.c:2036 +#, fuzzy, c-format +msgid "Unable to get Hardware profile: %s" +msgstr "gat ekki búið til skrána '%s': %s" + +#: ../gio/gdbusprivate.c:2081 +msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: " msgstr "" -#: ../glib/gregex.c:341 -msgid "conditional group contains more than two branches" +#: ../gio/gdbusproxy.c:1610 +#, c-format +msgid "Error calling StartServiceByName for %s: " msgstr "" -#: ../glib/gregex.c:344 -msgid "assertion expected after (?(" +#: ../gio/gdbusproxy.c:1633 +#, c-format +msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" msgstr "" -#: ../glib/gregex.c:347 -msgid "unknown POSIX class name" +#: ../gio/gdbusproxy.c:2708 ../gio/gdbusproxy.c:2842 +msgid "" +"Cannot invoke method; proxy is for a well-known name without an owner and " +"proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag" msgstr "" -#: ../glib/gregex.c:350 +#: ../gio/gdbusserver.c:708 #, fuzzy -msgid "POSIX collating elements are not supported" +msgid "Abstract name space not supported" msgstr "Tákntengi eru ekki studd" -#: ../glib/gregex.c:353 -msgid "character value in \\x{...} sequence is too large" +#: ../gio/gdbusserver.c:795 +msgid "Cannot specify nonce file when creating a server" msgstr "" -#: ../glib/gregex.c:356 -msgid "invalid condition (?(0)" -msgstr "" +#: ../gio/gdbusserver.c:873 +#, fuzzy, c-format +msgid "Error writing nonce file at '%s': %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../glib/gregex.c:359 -msgid "\\C not allowed in lookbehind assertion" +#: ../gio/gdbusserver.c:1044 +#, c-format +msgid "The string '%s' is not a valid D-Bus GUID" msgstr "" -#: ../glib/gregex.c:362 -msgid "recursive call could loop indefinitely" +#: ../gio/gdbusserver.c:1084 +#, c-format +msgid "Cannot listen on unsupported transport '%s'" msgstr "" -#: ../glib/gregex.c:365 -msgid "missing terminator in subpattern name" +#: ../gio/gdbus-tool.c:95 +#, c-format +msgid "" +"Commands:\n" +" help Shows this information\n" +" introspect Introspect a remote object\n" +" monitor Monitor a remote object\n" +" call Invoke a method on a remote object\n" +" emit Emit a signal\n" +"\n" +"Use \"%s COMMAND --help\" to get help on each command.\n" msgstr "" -#: ../glib/gregex.c:368 -msgid "two named subpatterns have the same name" -msgstr "" +#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:226 ../gio/gdbus-tool.c:298 +#: ../gio/gdbus-tool.c:322 ../gio/gdbus-tool.c:711 ../gio/gdbus-tool.c:1043 +#: ../gio/gdbus-tool.c:1477 +#, fuzzy, c-format +msgid "Error: %s\n" +msgstr "Villa á línu %d: %s" -#: ../glib/gregex.c:371 -msgid "malformed \\P or \\p sequence" +#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493 +#, fuzzy, c-format +msgid "Error parsing introspection XML: %s\n" +msgstr "Villa við umbreytingu: %s" + +#: ../gio/gdbus-tool.c:208 +#, fuzzy, c-format +msgid "Error: %s is not a valid name\n" +msgstr "Táknið '%s' er ekki gilt í heitum viðfanga" + +#: ../gio/gdbus-tool.c:356 +msgid "Connect to the system bus" msgstr "" -#: ../glib/gregex.c:374 -msgid "unknown property name after \\P or \\p" +#: ../gio/gdbus-tool.c:357 +msgid "Connect to the session bus" msgstr "" -#: ../glib/gregex.c:377 -msgid "subpattern name is too long (maximum 32 characters)" +#: ../gio/gdbus-tool.c:358 +msgid "Connect to given D-Bus address" msgstr "" -#: ../glib/gregex.c:380 -msgid "too many named subpatterns (maximum 10,000)" +#: ../gio/gdbus-tool.c:368 +msgid "Connection Endpoint Options:" msgstr "" -#: ../glib/gregex.c:383 -msgid "octal value is greater than \\377" +#: ../gio/gdbus-tool.c:369 +msgid "Options specifying the connection endpoint" msgstr "" -#: ../glib/gregex.c:386 -msgid "DEFINE group contains more than one branch" +#: ../gio/gdbus-tool.c:391 +#, c-format +msgid "No connection endpoint specified" msgstr "" -#: ../glib/gregex.c:389 -msgid "repeating a DEFINE group is not allowed" +#: ../gio/gdbus-tool.c:401 +#, c-format +msgid "Multiple connection endpoints specified" msgstr "" -#: ../glib/gregex.c:392 -msgid "inconsistent NEWLINE options" +#: ../gio/gdbus-tool.c:471 +#, c-format +msgid "" +"Warning: According to introspection data, interface '%s' does not exist\n" msgstr "" -#: ../glib/gregex.c:395 +#: ../gio/gdbus-tool.c:480 +#, c-format msgid "" -"\\g is not followed by a braced name or an optionally braced non-zero number" +"Warning: According to introspection data, method '%s' does not exist on " +"interface '%s'\n" msgstr "" -#: ../glib/gregex.c:400 -msgid "unexpected repeat" +#: ../gio/gdbus-tool.c:542 +msgid "Optional destination for signal (unique name)" msgstr "" -#: ../glib/gregex.c:404 -msgid "code overflow" +#: ../gio/gdbus-tool.c:543 +msgid "Object path to emit signal on" msgstr "" -#: ../glib/gregex.c:408 -msgid "overran compiling workspace" +#: ../gio/gdbus-tool.c:544 +msgid "Signal and interface name" msgstr "" -#: ../glib/gregex.c:412 -msgid "previously-checked referenced subpattern not found" +#: ../gio/gdbus-tool.c:576 +msgid "Emit a signal." msgstr "" -#: ../glib/gregex.c:630 ../glib/gregex.c:1753 +#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583 +#: ../gio/gdbus-tool.c:1818 +#, fuzzy, c-format +msgid "Error connecting: %s\n" +msgstr "Villa við lestur skráarinnar '%s': %s" + +#: ../gio/gdbus-tool.c:622 #, c-format -msgid "Error while matching regular expression %s: %s" +msgid "Error: object path not specified.\n" msgstr "" -#: ../glib/gregex.c:1206 -msgid "PCRE library is compiled without UTF8 support" +#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648 +#: ../gio/gdbus-tool.c:1884 +#, c-format +msgid "Error: %s is not a valid object path\n" msgstr "" -#: ../glib/gregex.c:1215 -msgid "PCRE library is compiled without UTF8 properties support" +#: ../gio/gdbus-tool.c:633 +#, c-format +msgid "Error: signal not specified.\n" msgstr "" -#: ../glib/gregex.c:1271 -#, fuzzy, c-format -msgid "Error while compiling regular expression %s at char %d: %s" -msgstr "Villa á línu %d tákn %d: %s" - -#: ../glib/gregex.c:1307 +#: ../gio/gdbus-tool.c:640 #, c-format -msgid "Error while optimizing regular expression %s: %s" +msgid "Error: signal must be the fully-qualified name.\n" msgstr "" -#: ../glib/gregex.c:2183 -msgid "hexadecimal digit or '}' expected" -msgstr "" +#: ../gio/gdbus-tool.c:648 +#, fuzzy, c-format +msgid "Error: %s is not a valid interface name\n" +msgstr "Táknið '%s' er ekki gilt í heitum viðfanga" -#: ../glib/gregex.c:2199 -msgid "hexadecimal digit expected" -msgstr "" +#: ../gio/gdbus-tool.c:654 +#, fuzzy, c-format +msgid "Error: %s is not a valid member name\n" +msgstr "Táknið '%s' er ekki gilt í heitum viðfanga" -#: ../glib/gregex.c:2239 -msgid "missing '<' in symbolic reference" -msgstr "" +#: ../gio/gdbus-tool.c:660 +#, fuzzy, c-format +msgid "Error: %s is not a valid unique bus name.\n" +msgstr "Táknið '%s' er ekki gilt í heitum viðfanga" -#: ../glib/gregex.c:2248 -#, fuzzy -msgid "unfinished symbolic reference" -msgstr "Hálfkláruð viðfangatilvísun" +#. Use the original non-"parse-me-harder" error +#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011 +#, fuzzy, c-format +msgid "Error parsing parameter %d: %s\n" +msgstr "Villa við umbreytingu: %s" -#: ../glib/gregex.c:2255 -msgid "zero-length symbolic reference" -msgstr "" +#: ../gio/gdbus-tool.c:718 +#, fuzzy, c-format +msgid "Error flushing connection: %s\n" +msgstr "Villa við umbreytingu: %s" -#: ../glib/gregex.c:2266 -msgid "digit expected" +#: ../gio/gdbus-tool.c:745 +msgid "Destination name to invoke method on" msgstr "" -#: ../glib/gregex.c:2284 -msgid "illegal symbolic reference" +#: ../gio/gdbus-tool.c:746 +msgid "Object path to invoke method on" msgstr "" -#: ../glib/gregex.c:2346 -msgid "stray final '\\'" +#: ../gio/gdbus-tool.c:747 +msgid "Method and interface name" msgstr "" -#: ../glib/gregex.c:2350 -msgid "unknown escape sequence" +#: ../gio/gdbus-tool.c:748 +msgid "Timeout in seconds" msgstr "" -#: ../glib/gregex.c:2360 -#, c-format -msgid "Error while parsing replacement text \"%s\" at char %lu: %s" +#: ../gio/gdbus-tool.c:787 +msgid "Invoke a method on a remote object." msgstr "" -#: ../glib/gshell.c:91 -msgid "Quoted text doesn't begin with a quotation mark" -msgstr "Tilvísunin byrjar ekki á spurningarmerki" - -#: ../glib/gshell.c:181 -msgid "Unmatched quotation mark in command line or other shell-quoted text" -msgstr "Tilvísunarmerki stemma ekki í skipanalínunni eða öðrum texta" - -#: ../glib/gshell.c:559 -#, c-format -msgid "Text ended just after a '\\' character. (The text was '%s')" -msgstr "Textinn endaði eftir '\\' tákn. (Textinn var '%s')" - -#: ../glib/gshell.c:566 -#, c-format -msgid "Text ended before matching quote was found for %c. (The text was '%s')" -msgstr "Textinn endaði áður en samstaða við %c fannst. (Textinn var '%s')" - -#: ../glib/gshell.c:578 -msgid "Text was empty (or contained only whitespace)" -msgstr "Textinn var tómur (eða innihélt eingöngu orðabil)" - -#: ../glib/gspawn-win32.c:282 -msgid "Failed to read data from child process" -msgstr "Gat ekki lesið gögn frá undirferli" - -#: ../glib/gspawn-win32.c:299 ../glib/gspawn.c:1517 +#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837 #, c-format -msgid "Failed to create pipe for communicating with child process (%s)" -msgstr "Gat ekki búið til pípu til samskipta við undirferli (%s)" +msgid "Error: Destination is not specified\n" +msgstr "" -#: ../glib/gspawn-win32.c:338 ../glib/gspawn-win32.c:346 ../glib/gspawn.c:1170 -#, c-format -msgid "Failed to read from child pipe (%s)" -msgstr "Gat ekki lesið úr undirferlispípu (%s)" +#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849 +#, fuzzy, c-format +msgid "Error: %s is not a valid bus name\n" +msgstr "Táknið '%s' er ekki gilt í heitum viðfanga" -#: ../glib/gspawn-win32.c:369 ../glib/gspawn.c:1383 +#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628 #, c-format -msgid "Failed to change to directory '%s' (%s)" -msgstr "Gat ekki farið í möppuna '%s' (%s)" +msgid "Error: Object path is not specified\n" +msgstr "" -#: ../glib/gspawn-win32.c:375 ../glib/gspawn-win32.c:494 +#: ../gio/gdbus-tool.c:924 #, c-format -msgid "Failed to execute child process (%s)" -msgstr "Gat ekki keyrt undirferli (%s)" - -#: ../glib/gspawn-win32.c:444 -#, fuzzy, c-format -msgid "Invalid program name: %s" -msgstr "Ógilt vélarheiti" +msgid "Error: Method name is not specified\n" +msgstr "" -#: ../glib/gspawn-win32.c:454 ../glib/gspawn-win32.c:722 -#: ../glib/gspawn-win32.c:1278 +#: ../gio/gdbus-tool.c:935 #, c-format -msgid "Invalid string in argument vector at %d: %s" +msgid "Error: Method name '%s' is invalid\n" msgstr "" -#: ../glib/gspawn-win32.c:465 ../glib/gspawn-win32.c:737 -#: ../glib/gspawn-win32.c:1311 -#, fuzzy, c-format -msgid "Invalid string in environment: %s" -msgstr "Ógild runa í ílagi umbreytingar" - -#: ../glib/gspawn-win32.c:718 ../glib/gspawn-win32.c:1259 +#: ../gio/gdbus-tool.c:1003 #, fuzzy, c-format -msgid "Invalid working directory: %s" +msgid "Error parsing parameter %d of type '%s': %s\n" msgstr "Villa við að opna möppuna '%s': %s" -#: ../glib/gspawn-win32.c:783 -#, fuzzy, c-format -msgid "Failed to execute helper program (%s)" -msgstr "Gat ekki keyrt hjálparforrit" - -#: ../glib/gspawn-win32.c:997 -msgid "" -"Unexpected error in g_io_channel_win32_poll() reading data from a child " -"process" -msgstr "Óvænt villa í g_io_channel_win32_poll() við lestur úr undirferli" - -#: ../glib/gspawn.c:207 -#, c-format -msgid "Failed to read data from child process (%s)" -msgstr "Gat ekki lesið gögn frá undirferli (%s)" - -#: ../glib/gspawn.c:347 -#, c-format -msgid "Unexpected error in select() reading data from a child process (%s)" -msgstr "Óvæn villa í select() við lestur gagna frá undirferli (%s)" - -#: ../glib/gspawn.c:432 -#, c-format -msgid "Unexpected error in waitpid() (%s)" -msgstr "Óvæn villa í waitpid() (%s)" - -#: ../glib/gspawn.c:1237 -#, c-format -msgid "Failed to fork (%s)" -msgstr "Gat ekki ræst (%s)" - -#: ../glib/gspawn.c:1393 -#, c-format -msgid "Failed to execute child process \"%s\" (%s)" -msgstr "Gat ekki ræst undirferli \"%s\" (%s)" - -#: ../glib/gspawn.c:1403 -#, c-format -msgid "Failed to redirect output or input of child process (%s)" -msgstr "Gat ekki sent frálag eða ílag underferlis annað (%s)" - -#: ../glib/gspawn.c:1412 -#, c-format -msgid "Failed to fork child process (%s)" -msgstr "Gat ekki ræst undirferli (%s)" +#: ../gio/gdbus-tool.c:1440 +msgid "Destination name to introspect" +msgstr "" -#: ../glib/gspawn.c:1420 -#, c-format -msgid "Unknown error executing child process \"%s\"" -msgstr "Óþekkt villa við keyrslu undirferlis \"%s\"" +#: ../gio/gdbus-tool.c:1441 +msgid "Object path to introspect" +msgstr "" -#: ../glib/gspawn.c:1444 -#, c-format -msgid "Failed to read enough data from child pid pipe (%s)" -msgstr "Gat ekki lesið nægjanleg gögn úr pípunni til undirferlisins (%s)" +#: ../gio/gdbus-tool.c:1442 +msgid "Print XML" +msgstr "" -#: ../glib/gutf8.c:1086 -msgid "Character out of range for UTF-8" -msgstr "Táknið er utan UTF-8 sviðsins" +#: ../gio/gdbus-tool.c:1443 +msgid "Introspect children" +msgstr "" -#: ../glib/gutf8.c:1186 ../glib/gutf8.c:1195 ../glib/gutf8.c:1325 -#: ../glib/gutf8.c:1334 ../glib/gutf8.c:1473 ../glib/gutf8.c:1569 -msgid "Invalid sequence in conversion input" -msgstr "Ógild runa í ílagi umbreytingar" +#: ../gio/gdbus-tool.c:1444 +msgid "Only print properties" +msgstr "" -#: ../glib/gutf8.c:1484 ../glib/gutf8.c:1580 -msgid "Character out of range for UTF-16" -msgstr "Táknið er utan UTF-16 sviðsins" +#: ../gio/gdbus-tool.c:1535 +msgid "Introspect a remote object." +msgstr "" -#: ../glib/goption.c:760 -msgid "Usage:" +#: ../gio/gdbus-tool.c:1740 +msgid "Destination name to monitor" msgstr "" -#: ../glib/goption.c:760 -msgid "[OPTION...]" +#: ../gio/gdbus-tool.c:1741 +msgid "Object path to monitor" msgstr "" -#: ../glib/goption.c:866 -msgid "Help Options:" +#: ../gio/gdbus-tool.c:1770 +msgid "Monitor a remote object." msgstr "" -#: ../glib/goption.c:867 -msgid "Show help options" +#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4511 +#: ../gio/gwin32appinfo.c:219 +msgid "Unnamed" msgstr "" -#: ../glib/goption.c:873 -msgid "Show all help options" +#: ../gio/gdesktopappinfo.c:2402 +msgid "Desktop file didn't specify Exec field" msgstr "" -#: ../glib/goption.c:935 -msgid "Application Options:" +#: ../gio/gdesktopappinfo.c:2687 +msgid "Unable to find terminal required for application" msgstr "" -#: ../glib/goption.c:997 ../glib/goption.c:1067 +#: ../gio/gdesktopappinfo.c:3108 #, c-format -msgid "Cannot parse integer value '%s' for %s" +msgid "Can't create user application configuration folder %s: %s" msgstr "" -#: ../glib/goption.c:1007 ../glib/goption.c:1075 +#: ../gio/gdesktopappinfo.c:3112 #, c-format -msgid "Integer value '%s' for %s out of range" +msgid "Can't create user MIME configuration folder %s: %s" msgstr "" -#: ../glib/goption.c:1032 +#: ../gio/gdesktopappinfo.c:3352 ../gio/gdesktopappinfo.c:3376 +msgid "Application information lacks an identifier" +msgstr "" + +#: ../gio/gdesktopappinfo.c:3609 #, c-format -msgid "Cannot parse double value '%s' for %s" +msgid "Can't create user desktop file %s" msgstr "" -#: ../glib/goption.c:1040 +#: ../gio/gdesktopappinfo.c:3743 #, c-format -msgid "Double value '%s' for %s out of range" +msgid "Custom definition for %s" msgstr "" -#: ../glib/goption.c:1303 ../glib/goption.c:1382 -#, fuzzy, c-format -msgid "Error parsing option %s" -msgstr "Villa við umbreytingu: %s" - -#: ../glib/goption.c:1413 ../glib/goption.c:1526 -#, c-format -msgid "Missing argument for %s" +#: ../gio/gdrive.c:392 +msgid "drive doesn't implement eject" msgstr "" -#: ../glib/goption.c:1957 -#, c-format -msgid "Unknown option %s" +#. Translators: This is an error +#. * message for drive objects that +#. * don't implement any of eject or eject_with_operation. +#: ../gio/gdrive.c:470 +msgid "drive doesn't implement eject or eject_with_operation" msgstr "" -#: ../glib/gkeyfile.c:366 -msgid "Valid key file could not be found in search dirs" +#: ../gio/gdrive.c:546 +msgid "drive doesn't implement polling for media" msgstr "" -#: ../glib/gkeyfile.c:401 -msgid "Not a regular file" +#: ../gio/gdrive.c:751 +msgid "drive doesn't implement start" msgstr "" -#: ../glib/gkeyfile.c:409 -msgid "File is empty" +#: ../gio/gdrive.c:853 +msgid "drive doesn't implement stop" msgstr "" -#: ../glib/gkeyfile.c:768 -#, c-format -msgid "" -"Key file contains line '%s' which is not a key-value pair, group, or comment" +#: ../gio/gdummytlsbackend.c:189 ../gio/gdummytlsbackend.c:311 +#: ../gio/gdummytlsbackend.c:401 +msgid "TLS support is not available" msgstr "" -#: ../glib/gkeyfile.c:828 -#, fuzzy, c-format -msgid "Invalid group name: %s" -msgstr "Ógilt vélarheiti" - -#: ../glib/gkeyfile.c:850 -msgid "Key file does not start with a group" +#: ../gio/gemblem.c:323 +#, c-format +msgid "Can't handle version %d of GEmblem encoding" msgstr "" -#: ../glib/gkeyfile.c:876 -#, fuzzy, c-format -msgid "Invalid key name: %s" -msgstr "Ógilt vélarheiti" - -#: ../glib/gkeyfile.c:903 +#: ../gio/gemblem.c:333 #, c-format -msgid "Key file contains unsupported encoding '%s'" +msgid "Malformed number of tokens (%d) in GEmblem encoding" msgstr "" -#: ../glib/gkeyfile.c:1149 ../glib/gkeyfile.c:1311 ../glib/gkeyfile.c:2686 -#: ../glib/gkeyfile.c:2752 ../glib/gkeyfile.c:2887 ../glib/gkeyfile.c:3020 -#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3394 ../glib/gkeyfile.c:3463 +#: ../gio/gemblemedicon.c:362 #, c-format -msgid "Key file does not have group '%s'" +msgid "Can't handle version %d of GEmblemedIcon encoding" msgstr "" -#: ../glib/gkeyfile.c:1323 +#: ../gio/gemblemedicon.c:372 #, c-format -msgid "Key file does not have key '%s'" +msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding" msgstr "" -#: ../glib/gkeyfile.c:1430 ../glib/gkeyfile.c:1546 -#, c-format -msgid "Key file contains key '%s' with value '%s' which is not UTF-8" +#: ../gio/gemblemedicon.c:395 +msgid "Expected a GEmblem for GEmblemedIcon" msgstr "" -#: ../glib/gkeyfile.c:1450 ../glib/gkeyfile.c:1934 -#, c-format -msgid "Key file contains key '%s' which has value that cannot be interpreted." +#: ../gio/gfile.c:968 ../gio/gfile.c:1206 ../gio/gfile.c:1344 +#: ../gio/gfile.c:1582 ../gio/gfile.c:1637 ../gio/gfile.c:1695 +#: ../gio/gfile.c:1779 ../gio/gfile.c:1836 ../gio/gfile.c:1900 +#: ../gio/gfile.c:1955 ../gio/gfile.c:3603 ../gio/gfile.c:3658 +#: ../gio/gfile.c:3893 ../gio/gfile.c:3935 ../gio/gfile.c:4398 +#: ../gio/gfile.c:4809 ../gio/gfile.c:4894 ../gio/gfile.c:4984 +#: ../gio/gfile.c:5081 ../gio/gfile.c:5168 ../gio/gfile.c:5269 +#: ../gio/gfile.c:7788 ../gio/gfile.c:7878 ../gio/gfile.c:7962 +#: ../gio/win32/gwinhttpfile.c:437 +#, fuzzy +msgid "Operation not supported" +msgstr "Tákntengi eru ekki studd" + +#. Translators: This is an error message when +#. * trying to find the enclosing (user visible) +#. * mount of a file, but none exists. +#. +#. Translators: This is an error message when trying to +#. * find the enclosing (user visible) mount of a file, but +#. * none exists. +#. Translators: This is an error message when trying to find +#. * the enclosing (user visible) mount of a file, but none +#. * exists. +#: ../gio/gfile.c:1467 ../gio/glocalfile.c:1134 ../gio/glocalfile.c:1145 +#: ../gio/glocalfile.c:1158 +msgid "Containing mount does not exist" msgstr "" -#: ../glib/gkeyfile.c:1566 -#, c-format -msgid "" -"Key file contains key '%s' which has a value that cannot be interpreted." +#: ../gio/gfile.c:2514 ../gio/glocalfile.c:2368 +msgid "Can't copy over directory" msgstr "" -#: ../glib/gkeyfile.c:2151 ../glib/gkeyfile.c:2515 -#, c-format -msgid "" -"Key file contains key '%s' in group '%s' which has value that cannot be " -"interpreted." +#: ../gio/gfile.c:2574 +msgid "Can't copy directory over directory" msgstr "" -#: ../glib/gkeyfile.c:2701 ../glib/gkeyfile.c:2902 ../glib/gkeyfile.c:3474 -#, c-format -msgid "Key file does not have key '%s' in group '%s'" +#: ../gio/gfile.c:2582 ../gio/glocalfile.c:2377 +msgid "Target file exists" msgstr "" -#: ../glib/gkeyfile.c:3708 -msgid "Key file contains escape character at end of line" +#: ../gio/gfile.c:2601 +msgid "Can't recursively copy directory" msgstr "" -#: ../glib/gkeyfile.c:3730 +#: ../gio/gfile.c:2883 +#, fuzzy +msgid "Splice not supported" +msgstr "Tákntengi eru ekki studd" + +#: ../gio/gfile.c:2887 #, fuzzy, c-format -msgid "Key file contains invalid escape sequence '%s'" -msgstr "URI '%s' inniheldur ógild sértákn" +msgid "Error splicing file: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../glib/gkeyfile.c:3872 -#, c-format -msgid "Value '%s' cannot be interpreted as a number." +#: ../gio/gfile.c:3018 +msgid "Copy (reflink/clone) between mounts is not supported" msgstr "" -#: ../glib/gkeyfile.c:3886 -#, c-format -msgid "Integer value '%s' out of range" +#: ../gio/gfile.c:3022 +msgid "Copy (reflink/clone) is not supported or invalid" msgstr "" -#: ../glib/gkeyfile.c:3919 -#, c-format -msgid "Value '%s' cannot be interpreted as a float number." +#: ../gio/gfile.c:3027 +msgid "Copy (reflink/clone) is not supported or didn't work" msgstr "" -#: ../glib/gkeyfile.c:3943 -#, c-format -msgid "Value '%s' cannot be interpreted as a boolean." +#: ../gio/gfile.c:3090 +msgid "Can't copy special file" +msgstr "" + +#: ../gio/gfile.c:3883 +msgid "Invalid symlink value given" msgstr "" -#: ../gio/gbufferedinputstream.c:411 ../gio/gbufferedinputstream.c:492 -#: ../gio/ginputstream.c:185 ../gio/ginputstream.c:317 -#: ../gio/ginputstream.c:556 ../gio/ginputstream.c:680 -#: ../gio/goutputstream.c:198 ../gio/goutputstream.c:732 +#: ../gio/gfile.c:4044 +#, fuzzy +msgid "Trash not supported" +msgstr "Tákntengi eru ekki studd" + +#: ../gio/gfile.c:4156 #, c-format -msgid "Too large count value passed to %s" +msgid "File names cannot contain '%c'" msgstr "" -#: ../gio/gbufferedinputstream.c:881 ../gio/ginputstream.c:888 -#: ../gio/giostream.c:306 ../gio/goutputstream.c:1206 -msgid "Stream is already closed" +#: ../gio/gfile.c:6580 ../gio/gvolume.c:363 +msgid "volume doesn't implement mount" msgstr "" -#: ../gio/gcancellable.c:321 ../gio/gdbusconnection.c:1640 -#: ../gio/gdbusconnection.c:1729 ../gio/gdbusconnection.c:1916 -#: ../gio/glocalfile.c:2100 ../gio/gsimpleasyncresult.c:814 -#: ../gio/gsimpleasyncresult.c:840 -msgid "Operation was cancelled" +#: ../gio/gfile.c:6689 +msgid "No application is registered as handling this file" msgstr "" -#: ../gio/gcharsetconverter.c:263 -msgid "Invalid object, not initialized" +#: ../gio/gfileenumerator.c:212 +msgid "Enumerator is closed" msgstr "" -#: ../gio/gcharsetconverter.c:284 ../gio/gcharsetconverter.c:312 -#, fuzzy -msgid "Incomplete multibyte sequence in input" -msgstr "Ógild bætaruna í ílagi umbreytingar" +#: ../gio/gfileenumerator.c:219 ../gio/gfileenumerator.c:278 +#: ../gio/gfileenumerator.c:377 ../gio/gfileenumerator.c:476 +msgid "File enumerator has outstanding operation" +msgstr "" -#: ../gio/gcharsetconverter.c:318 ../gio/gcharsetconverter.c:327 -msgid "Not enough space in destination" +#: ../gio/gfileenumerator.c:368 ../gio/gfileenumerator.c:467 +msgid "File enumerator is already closed" msgstr "" -#: ../gio/gcharsetconverter.c:447 ../gio/gsocket.c:854 -#, fuzzy -msgid "Cancellable initialization not supported" -msgstr "Tákntengi eru ekki studd" +#: ../gio/gfileicon.c:236 +#, c-format +msgid "Can't handle version %d of GFileIcon encoding" +msgstr "" -#: ../gio/gcontenttype.c:180 -msgid "Unknown type" +#: ../gio/gfileicon.c:246 +msgid "Malformed input data for GFileIcon" msgstr "" -#: ../gio/gcontenttype.c:181 -#, c-format -msgid "%s filetype" +#: ../gio/gfileinputstream.c:149 ../gio/gfileinputstream.c:394 +#: ../gio/gfileiostream.c:167 ../gio/gfileoutputstream.c:164 +#: ../gio/gfileoutputstream.c:497 +msgid "Stream doesn't support query_info" msgstr "" -#: ../gio/gcontenttype.c:680 -#, c-format -msgid "%s type" +#: ../gio/gfileinputstream.c:325 ../gio/gfileiostream.c:379 +#: ../gio/gfileoutputstream.c:371 +msgid "Seek not supported on stream" msgstr "" -#: ../gio/gcredentials.c:273 ../gio/gcredentials.c:495 -msgid "GCredentials is not implemented on this OS" +#: ../gio/gfileinputstream.c:369 +msgid "Truncate not allowed on input stream" msgstr "" -#: ../gio/gcredentials.c:447 -msgid "There is no GCredentials support for your platform" +#: ../gio/gfileiostream.c:455 ../gio/gfileoutputstream.c:447 +msgid "Truncate not supported on stream" msgstr "" -#: ../gio/gdatainputstream.c:311 -msgid "Unexpected early end-of-stream" +#: ../gio/ghttpproxy.c:136 +msgid "Bad HTTP proxy reply" msgstr "" -#: ../gio/gdbusaddress.c:142 ../gio/gdbusaddress.c:230 -#: ../gio/gdbusaddress.c:311 -#, c-format -msgid "Unsupported key '%s' in address entry '%s'" +#: ../gio/ghttpproxy.c:152 +msgid "HTTP proxy connection not allowed" msgstr "" -#: ../gio/gdbusaddress.c:169 +#: ../gio/ghttpproxy.c:157 +msgid "HTTP proxy authentication failed" +msgstr "" + +#: ../gio/ghttpproxy.c:160 +msgid "HTTP proxy authentication required" +msgstr "" + +#: ../gio/ghttpproxy.c:164 #, c-format -msgid "" -"Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" +msgid "HTTP proxy connection failed: %i" +msgstr "" + +#: ../gio/ghttpproxy.c:260 +msgid "HTTP proxy server closed connection unexpectedly." msgstr "" -#: ../gio/gdbusaddress.c:182 +#: ../gio/gicon.c:290 #, c-format -msgid "Meaningless key/value pair combination in address entry '%s'" +msgid "Wrong number of tokens (%d)" msgstr "" -#: ../gio/gdbusaddress.c:245 ../gio/gdbusaddress.c:326 +#: ../gio/gicon.c:310 #, c-format -msgid "Error in address '%s' - the port attribute is malformed" +msgid "No type for class name %s" msgstr "" -#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 +#: ../gio/gicon.c:320 #, c-format -msgid "Error in address '%s' - the family attribute is malformed" +msgid "Type %s does not implement the GIcon interface" msgstr "" -#: ../gio/gdbusaddress.c:446 +#: ../gio/gicon.c:331 #, c-format -msgid "Address element '%s', does not contain a colon (:)" +msgid "Type %s is not classed" msgstr "" -#: ../gio/gdbusaddress.c:467 +#: ../gio/gicon.c:345 #, c-format -msgid "" -"Key/Value pair %d, '%s', in address element '%s', does not contain an equal " -"sign" +msgid "Malformed version number: %s" msgstr "" -#: ../gio/gdbusaddress.c:481 +#: ../gio/gicon.c:359 #, c-format -msgid "" -"Error unescaping key or value in Key/Value pair %d, '%s', in address element " -"'%s'" +msgid "Type %s does not implement from_tokens() on the GIcon interface" +msgstr "" + +#: ../gio/gicon.c:461 +msgid "Can't handle the supplied version of the icon encoding" msgstr "" -#: ../gio/gdbusaddress.c:559 +#: ../gio/ginetaddressmask.c:182 +msgid "No address specified" +msgstr "" + +#: ../gio/ginetaddressmask.c:190 #, c-format -msgid "" -"Error in address '%s' - the unix transport requires exactly one of the keys " -"'path' or 'abstract' to be set" +msgid "Length %u is too long for address" +msgstr "" + +#: ../gio/ginetaddressmask.c:223 +msgid "Address has bits set beyond prefix length" msgstr "" -#: ../gio/gdbusaddress.c:595 +#: ../gio/ginetaddressmask.c:300 #, c-format -msgid "Error in address '%s' - the host attribute is missing or malformed" +msgid "Could not parse '%s' as IP address mask" msgstr "" -#: ../gio/gdbusaddress.c:609 +#: ../gio/ginetsocketaddress.c:196 ../gio/ginetsocketaddress.c:213 +#: ../gio/gunixsocketaddress.c:209 +msgid "Not enough space for socket address" +msgstr "" + +#: ../gio/ginetsocketaddress.c:228 +msgid "Unsupported socket address" +msgstr "" + +#: ../gio/ginputstream.c:185 +msgid "Input stream doesn't implement read" +msgstr "" + +#. Translators: This is an error you get if there is already an +#. * operation running against this stream when you try to start +#. * one +#. Translators: This is an error you get if there is +#. * already an operation running against this stream when +#. * you try to start one +#: ../gio/ginputstream.c:1212 ../gio/giostream.c:288 +#: ../gio/goutputstream.c:1664 +msgid "Stream has outstanding operation" +msgstr "" + +#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1484 #, c-format -msgid "Error in address '%s' - the port attribute is missing or malformed" +msgid "Element <%s> not allowed inside <%s>" msgstr "" -#: ../gio/gdbusaddress.c:623 +#: ../gio/glib-compile-resources.c:146 #, c-format -msgid "Error in address '%s' - the noncefile attribute is missing or malformed" +msgid "Element <%s> not allowed at toplevel" msgstr "" -#: ../gio/gdbusaddress.c:644 -#, fuzzy -msgid "Error auto-launching: " -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../gio/glib-compile-resources.c:236 +#, c-format +msgid "File %s appears multiple times in the resource" +msgstr "" -#: ../gio/gdbusaddress.c:652 +#: ../gio/glib-compile-resources.c:249 #, c-format -msgid "Unknown or unsupported transport '%s' for address '%s'" +msgid "Failed to locate '%s' in any source directory" msgstr "" -#: ../gio/gdbusaddress.c:688 +#: ../gio/glib-compile-resources.c:260 #, fuzzy, c-format -msgid "Error opening nonce file '%s': %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#| msgid "Failed to change to directory '%s' (%s)" +msgid "Failed to locate '%s' in current directory" +msgstr "Gat ekki farið í möppuna '%s' (%s)" -#: ../gio/gdbusaddress.c:706 +#: ../gio/glib-compile-resources.c:288 #, fuzzy, c-format -msgid "Error reading from nonce file '%s': %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +msgid "Unknown processing option \"%s\"" +msgstr "Villa við umbreytingu: %s" -#: ../gio/gdbusaddress.c:715 +#: ../gio/glib-compile-resources.c:306 ../gio/glib-compile-resources.c:352 #, fuzzy, c-format -msgid "Error reading from nonce file '%s', expected 16 bytes, got %d" -msgstr "Villa við lestur skráarinnar '%s': %s" +#| msgid "Failed to create file '%s': %s" +msgid "Failed to create temp file: %s" +msgstr "gat ekki búið til skrána '%s': %s" -#: ../gio/gdbusaddress.c:733 +#: ../gio/glib-compile-resources.c:380 #, fuzzy, c-format -msgid "Error writing contents of nonce file '%s' to stream:" +#| msgid "Error reading file '%s': %s" +msgid "Error reading file %s: %s" msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/gdbusaddress.c:951 -msgid "The given address is empty" -msgstr "" - -#: ../gio/gdbusaddress.c:1020 -msgid "Cannot spawn a message bus without a machine-id: " -msgstr "" - -#: ../gio/gdbusaddress.c:1057 +#: ../gio/glib-compile-resources.c:400 #, fuzzy, c-format -msgid "Error spawning command line '%s': " +msgid "Error compressing file %s" msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/gdbusaddress.c:1068 +#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1596 #, c-format -msgid "Abnormal program termination spawning command line '%s': %s" +msgid "text may not appear inside <%s>" msgstr "" -#: ../gio/gdbusaddress.c:1082 -#, c-format -msgid "Command line '%s' exited with non-zero exit status %d: %s" -msgstr "" +#: ../gio/glib-compile-resources.c:589 +#, fuzzy +msgid "name of the output file" +msgstr "Vélarheitið í URI '%s' er ógilt" -#: ../gio/gdbusaddress.c:1155 -#, c-format -msgid "Cannot determine session bus address (not implemented for this OS)" +#: ../gio/glib-compile-resources.c:590 +msgid "" +"The directories where files are to be read from (default to current " +"directory)" msgstr "" -#: ../gio/gdbusaddress.c:1254 ../gio/gdbusconnection.c:6409 -#, c-format -msgid "" -"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " -"- unknown value '%s'" +#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2027 +#: ../gio/glib-compile-schemas.c:2056 +msgid "DIRECTORY" msgstr "" -#: ../gio/gdbusaddress.c:1263 ../gio/gdbusconnection.c:6418 +#: ../gio/glib-compile-resources.c:591 msgid "" -"Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " -"variable is not set" +"Generate output in the format selected for by the target filename extension" msgstr "" -#: ../gio/gdbusaddress.c:1273 -#, c-format -msgid "Unknown bus type %d" +#: ../gio/glib-compile-resources.c:592 +msgid "Generate source header" msgstr "" -#: ../gio/gdbusauth.c:288 -msgid "Unexpected lack of content trying to read a line" +#: ../gio/glib-compile-resources.c:593 +msgid "Generate sourcecode used to link in the resource file into your code" msgstr "" -#: ../gio/gdbusauth.c:332 -msgid "Unexpected lack of content trying to (safely) read a line" +#: ../gio/glib-compile-resources.c:594 +msgid "Generate dependency list" msgstr "" -#: ../gio/gdbusauth.c:503 -#, c-format -msgid "" -"Exhausted all available authentication mechanisms (tried: %s) (available: %s)" +#: ../gio/glib-compile-resources.c:595 +msgid "Don't automatically create and register resource" msgstr "" -#: ../gio/gdbusauth.c:1159 -msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer" +#: ../gio/glib-compile-resources.c:596 +msgid "Don't export functions; declare them G_GNUC_INTERNAL" msgstr "" -#: ../gio/gdbusauthmechanismsha1.c:266 -#, fuzzy, c-format -msgid "Error statting directory '%s': %s" -msgstr "Villa við að opna möppuna '%s': %s" +#: ../gio/glib-compile-resources.c:597 +msgid "C identifier name used for the generated source code" +msgstr "" -#: ../gio/gdbusauthmechanismsha1.c:278 -#, c-format +#: ../gio/glib-compile-resources.c:623 msgid "" -"Permissions on directory '%s' are malformed. Expected mode 0700, got 0%o" +"Compile a resource specification into a resource file.\n" +"Resource specification files have the extension .gresource.xml,\n" +"and the resource file have the extension called .gresource." msgstr "" -#: ../gio/gdbusauthmechanismsha1.c:299 -#, fuzzy, c-format -msgid "Error creating directory '%s': %s" -msgstr "Villa við að opna möppuna '%s': %s" +#: ../gio/glib-compile-resources.c:639 +#, c-format +msgid "You should give exactly one file name\n" +msgstr "" -#: ../gio/gdbusauthmechanismsha1.c:382 -#, fuzzy, c-format -msgid "Error opening keyring '%s' for reading: " -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../gio/glib-compile-schemas.c:777 +#, fuzzy +msgid "empty names are not permitted" +msgstr "Tákntengi eru ekki studd" -#: ../gio/gdbusauthmechanismsha1.c:406 ../gio/gdbusauthmechanismsha1.c:718 +#: ../gio/glib-compile-schemas.c:787 #, c-format -msgid "Line %d of the keyring at '%s' with content '%s' is malformed" +msgid "invalid name '%s': names must begin with a lowercase letter" msgstr "" -#: ../gio/gdbusauthmechanismsha1.c:420 ../gio/gdbusauthmechanismsha1.c:732 +#: ../gio/glib-compile-schemas.c:799 #, c-format msgid "" -"First token of line %d of the keyring at '%s' with content '%s' is malformed" +"invalid name '%s': invalid character '%c'; only lowercase letters, numbers " +"and hyphen ('-') are permitted." msgstr "" -#: ../gio/gdbusauthmechanismsha1.c:435 ../gio/gdbusauthmechanismsha1.c:746 +#: ../gio/glib-compile-schemas.c:808 #, c-format -msgid "" -"Second token of line %d of the keyring at '%s' with content '%s' is malformed" +msgid "invalid name '%s': two successive hyphens ('--') are not permitted." msgstr "" -#: ../gio/gdbusauthmechanismsha1.c:459 +#: ../gio/glib-compile-schemas.c:817 #, c-format -msgid "Didn't find cookie with id %d in the keyring at '%s'" +msgid "invalid name '%s': the last character may not be a hyphen ('-')." msgstr "" -#: ../gio/gdbusauthmechanismsha1.c:536 -#, fuzzy, c-format -msgid "Error deleting stale lock file '%s': %s" -msgstr "Villa við lestur skráarinnar '%s': %s" - -#: ../gio/gdbusauthmechanismsha1.c:568 -#, fuzzy, c-format -msgid "Error creating lock file '%s': %s" -msgstr "Villa við lestur skráarinnar '%s': %s" - -#: ../gio/gdbusauthmechanismsha1.c:598 -#, fuzzy, c-format -msgid "Error closing (unlinked) lock file '%s': %s" -msgstr "Villa við lestur skráarinnar '%s': %s" - -#: ../gio/gdbusauthmechanismsha1.c:608 -#, fuzzy, c-format -msgid "Error unlinking lock file '%s': %s" -msgstr "Villa við lestur skráarinnar '%s': %s" - -#: ../gio/gdbusauthmechanismsha1.c:685 -#, fuzzy, c-format -msgid "Error opening keyring '%s' for writing: " -msgstr "Villa við lestur skráarinnar '%s': %s" - -#: ../gio/gdbusauthmechanismsha1.c:882 +#: ../gio/glib-compile-schemas.c:825 #, c-format -msgid "(Additionally, releasing the lock for '%s' also failed: %s) " +msgid "invalid name '%s': maximum length is 1024" msgstr "" -#: ../gio/gdbusconnection.c:1150 ../gio/gdbusconnection.c:1376 -#: ../gio/gdbusconnection.c:1415 ../gio/gdbusconnection.c:1740 -msgid "The connection is closed" +#: ../gio/glib-compile-schemas.c:894 +#, c-format +msgid " already specified" msgstr "" -#: ../gio/gdbusconnection.c:1684 -msgid "Timeout was reached" +#: ../gio/glib-compile-schemas.c:920 +msgid "cannot add keys to a 'list-of' schema" msgstr "" -#: ../gio/gdbusconnection.c:2306 -msgid "" -"Unsupported flags encountered when constructing a client-side connection" +#: ../gio/glib-compile-schemas.c:931 +#, c-format +msgid " already specified" msgstr "" -#: ../gio/gdbusconnection.c:3770 ../gio/gdbusconnection.c:4086 +#: ../gio/glib-compile-schemas.c:949 #, c-format msgid "" -"No such interface 'org.freedesktop.DBus.Properties' on object at path %s" +" shadows in ; use " +"to modify value" msgstr "" -#: ../gio/gdbusconnection.c:3841 +#: ../gio/glib-compile-schemas.c:960 #, c-format -msgid "Error setting property '%s': Expected type '%s' but got '%s'" +msgid "" +"exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " +"to " msgstr "" -#: ../gio/gdbusconnection.c:3936 +#: ../gio/glib-compile-schemas.c:979 #, c-format -msgid "No such property '%s'" +msgid "<%s id='%s'> not (yet) defined." msgstr "" -#: ../gio/gdbusconnection.c:3948 +#: ../gio/glib-compile-schemas.c:994 #, c-format -msgid "Property '%s' is not readable" +msgid "invalid GVariant type string '%s'" msgstr "" -#: ../gio/gdbusconnection.c:3959 -#, c-format -msgid "Property '%s' is not writable" +#: ../gio/glib-compile-schemas.c:1024 +msgid " given but schema isn't extending anything" msgstr "" -#: ../gio/gdbusconnection.c:4029 ../gio/gdbusconnection.c:5853 +#: ../gio/glib-compile-schemas.c:1037 #, c-format -msgid "No such interface '%s'" -msgstr "" - -#: ../gio/gdbusconnection.c:4213 -msgid "No such interface" +msgid "no to override" msgstr "" -#: ../gio/gdbusconnection.c:4432 ../gio/gdbusconnection.c:6359 +#: ../gio/glib-compile-schemas.c:1045 #, c-format -msgid "No such interface '%s' on object at path %s" +msgid " already specified" msgstr "" -#: ../gio/gdbusconnection.c:4484 +#: ../gio/glib-compile-schemas.c:1118 #, c-format -msgid "No such method '%s'" +msgid " already specified" msgstr "" -#: ../gio/gdbusconnection.c:4515 +#: ../gio/glib-compile-schemas.c:1130 #, c-format -msgid "Type of message, '%s', does not match expected type '%s'" +msgid " extends not yet existing schema '%s'" msgstr "" -#: ../gio/gdbusconnection.c:4734 +#: ../gio/glib-compile-schemas.c:1146 #, c-format -msgid "An object is already exported for the interface %s at %s" +msgid " is list of not yet existing schema '%s'" msgstr "" -#: ../gio/gdbusconnection.c:4932 +#: ../gio/glib-compile-schemas.c:1154 #, c-format -msgid "Method '%s' returned type '%s', but expected '%s'" +msgid "Can not be a list of a schema with a path" msgstr "" -#: ../gio/gdbusconnection.c:5964 +#: ../gio/glib-compile-schemas.c:1164 #, c-format -msgid "Method '%s' on interface '%s' with signature '%s' does not exist" +msgid "Can not extend a schema with a path" msgstr "" -#: ../gio/gdbusconnection.c:6082 +#: ../gio/glib-compile-schemas.c:1174 #, c-format -msgid "A subtree is already exported for %s" +msgid "" +" is a list, extending which is not a list" msgstr "" -#: ../gio/gdbusmessage.c:859 -msgid "type is INVALID" +#: ../gio/glib-compile-schemas.c:1184 +#, c-format +msgid "" +" extends but '%s' " +"does not extend '%s'" msgstr "" -#: ../gio/gdbusmessage.c:870 -msgid "METHOD_CALL message: PATH or MEMBER header field is missing" +#: ../gio/glib-compile-schemas.c:1201 +#, c-format +msgid "a path, if given, must begin and end with a slash" msgstr "" -#: ../gio/gdbusmessage.c:881 -msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing" +#: ../gio/glib-compile-schemas.c:1208 +#, c-format +msgid "the path of a list must end with ':/'" msgstr "" -#: ../gio/gdbusmessage.c:893 -msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing" +#: ../gio/glib-compile-schemas.c:1240 +#, c-format +msgid "<%s id='%s'> already specified" msgstr "" -#: ../gio/gdbusmessage.c:906 -msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing" +#: ../gio/glib-compile-schemas.c:1390 ../gio/glib-compile-schemas.c:1406 +#, c-format +msgid "Only one <%s> element allowed inside <%s>" msgstr "" -#: ../gio/gdbusmessage.c:914 -msgid "" -"SIGNAL message: The PATH header field is using the reserved value /org/" -"freedesktop/DBus/Local" +#: ../gio/glib-compile-schemas.c:1488 +#, c-format +msgid "Element <%s> not allowed at the top level" msgstr "" -#: ../gio/gdbusmessage.c:922 -msgid "" -"SIGNAL message: The INTERFACE header field is using the reserved value org." -"freedesktop.DBus.Local" +#. Translators: Do not translate "--strict". +#: ../gio/glib-compile-schemas.c:1785 ../gio/glib-compile-schemas.c:1856 +#: ../gio/glib-compile-schemas.c:1932 +#, c-format +msgid "--strict was specified; exiting.\n" msgstr "" -#: ../gio/gdbusmessage.c:998 +#: ../gio/glib-compile-schemas.c:1793 #, c-format -msgid "Wanted to read %lu byte but got EOF" -msgid_plural "Wanted to read %lu bytes but got EOF" -msgstr[0] "" -msgstr[1] "" +msgid "This entire file has been ignored.\n" +msgstr "" -#: ../gio/gdbusmessage.c:1025 +#: ../gio/glib-compile-schemas.c:1852 #, c-format -msgid "" -"Expected valid UTF-8 string but found invalid bytes at byte offset %d " -"(length of string is %d). The valid UTF-8 string up until that point was '%s'" +msgid "Ignoring this file.\n" msgstr "" -#: ../gio/gdbusmessage.c:1038 +#: ../gio/glib-compile-schemas.c:1892 #, c-format -msgid "Expected NUL byte after the string '%s' but found byte %d" +msgid "No such key '%s' in schema '%s' as specified in override file '%s'" msgstr "" -#: ../gio/gdbusmessage.c:1242 +#: ../gio/glib-compile-schemas.c:1898 ../gio/glib-compile-schemas.c:1956 +#: ../gio/glib-compile-schemas.c:1984 #, c-format -msgid "Parsed value '%s' is not a valid D-Bus object path" +msgid "; ignoring override for this key.\n" msgstr "" -#: ../gio/gdbusmessage.c:1268 +#: ../gio/glib-compile-schemas.c:1902 ../gio/glib-compile-schemas.c:1960 +#: ../gio/glib-compile-schemas.c:1988 #, c-format -msgid "Parsed value '%s' is not a valid D-Bus signature" +msgid " and --strict was specified; exiting.\n" msgstr "" -#: ../gio/gdbusmessage.c:1324 +#: ../gio/glib-compile-schemas.c:1918 #, c-format msgid "" -"Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)." -msgid_plural "" -"Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)." -msgstr[0] "" -msgstr[1] "" +"error parsing key '%s' in schema '%s' as specified in override file '%s': %s." +msgstr "" -#: ../gio/gdbusmessage.c:1490 +#: ../gio/glib-compile-schemas.c:1928 #, c-format -msgid "Parsed value '%s' for variant is not a valid D-Bus signature" +msgid "Ignoring override for this key.\n" msgstr "" -#: ../gio/gdbusmessage.c:1517 +#: ../gio/glib-compile-schemas.c:1946 #, c-format msgid "" -"Error deserializing GVariant with type string '%s' from the D-Bus wire format" +"override for key '%s' in schema '%s' in override file '%s' is outside the " +"range given in the schema" msgstr "" -#: ../gio/gdbusmessage.c:1705 +#: ../gio/glib-compile-schemas.c:1974 #, c-format msgid "" -"Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found value " -"0x%02x" +"override for key '%s' in schema '%s' in override file '%s' is not in the " +"list of valid choices" msgstr "" -#: ../gio/gdbusmessage.c:1719 -#, c-format -msgid "Invalid major protocol version. Expected 1 but found %d" +#: ../gio/glib-compile-schemas.c:2027 +msgid "where to store the gschemas.compiled file" msgstr "" -#: ../gio/gdbusmessage.c:1776 -#, c-format -msgid "Signature header with signature '%s' found but message body is empty" +#: ../gio/glib-compile-schemas.c:2028 +msgid "Abort on any errors in schemas" msgstr "" -#: ../gio/gdbusmessage.c:1790 -#, c-format -msgid "Parsed value '%s' is not a valid D-Bus signature (for body)" +#: ../gio/glib-compile-schemas.c:2029 +msgid "Do not write the gschema.compiled file" msgstr "" -#: ../gio/gdbusmessage.c:1821 -#, c-format -msgid "No signature header in message but the message body is %u byte" -msgid_plural "No signature header in message but the message body is %u bytes" -msgstr[0] "" -msgstr[1] "" - -#: ../gio/gdbusmessage.c:1831 -msgid "Cannot deserialize message: " +#: ../gio/glib-compile-schemas.c:2030 +msgid "Do not enforce key name restrictions" msgstr "" -#: ../gio/gdbusmessage.c:2163 -#, c-format +#: ../gio/glib-compile-schemas.c:2059 msgid "" -"Error serializing GVariant with type string '%s' to the D-Bus wire format" +"Compile all GSettings schema files into a schema cache.\n" +"Schema files are required to have the extension .gschema.xml,\n" +"and the cache file is called gschemas.compiled." msgstr "" -#: ../gio/gdbusmessage.c:2303 +#: ../gio/glib-compile-schemas.c:2075 #, c-format -msgid "" -"Message has %d file descriptors but the header field indicates %d file " -"descriptors" -msgstr "" - -#: ../gio/gdbusmessage.c:2311 -msgid "Cannot serialize message: " +msgid "You should give exactly one directory name\n" msgstr "" -#: ../gio/gdbusmessage.c:2355 +#: ../gio/glib-compile-schemas.c:2114 #, c-format -msgid "Message body has signature '%s' but there is no signature header" +msgid "No schema files found: " msgstr "" -#: ../gio/gdbusmessage.c:2365 +#: ../gio/glib-compile-schemas.c:2117 #, c-format -msgid "" -"Message body has type signature '%s' but signature in the header field is '" -"%s'" +msgid "doing nothing.\n" msgstr "" -#: ../gio/gdbusmessage.c:2381 +#: ../gio/glib-compile-schemas.c:2120 #, c-format -msgid "Message body is empty but signature in the header field is '(%s)'" +msgid "removed existing output file.\n" msgstr "" -#: ../gio/gdbusmessage.c:2938 +#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420 #, fuzzy, c-format -msgid "Error return with body of type '%s'" +msgid "Invalid filename %s" +msgstr "Ógilt vélarheiti" + +#: ../gio/glocalfile.c:1012 +#, fuzzy, c-format +msgid "Error getting filesystem info: %s" msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/gdbusmessage.c:2946 -msgid "Error return with empty body" +#: ../gio/glocalfile.c:1180 +msgid "Can't rename root directory" msgstr "" -#: ../gio/gdbusprivate.c:1736 -msgid "Unable to load /var/lib/dbus/machine-id: " -msgstr "" +#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226 +#, fuzzy, c-format +msgid "Error renaming file: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/gdbusproxy.c:1489 -#, c-format -msgid "Error calling StartServiceByName for %s: " +#: ../gio/glocalfile.c:1209 +msgid "Can't rename file, filename already exists" msgstr "" -#: ../gio/gdbusproxy.c:1510 -#, c-format -msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" -msgstr "" +#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2241 ../gio/glocalfile.c:2270 +#: ../gio/glocalfile.c:2430 ../gio/glocalfileoutputstream.c:549 +#, fuzzy +msgid "Invalid filename" +msgstr "Ógilt vélarheiti" -#: ../gio/gdbusproxy.c:2600 ../gio/gdbusproxy.c:2734 -msgid "" -"Cannot invoke method; proxy is for a well-known name without an owner and " -"proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag" +#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413 +msgid "Can't open directory" msgstr "" -#: ../gio/gdbusserver.c:711 -#, fuzzy -msgid "Abstract name space not supported" -msgstr "Tákntengi eru ekki studd" +#: ../gio/glocalfile.c:1397 +#, fuzzy, c-format +msgid "Error opening file: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/gdbusserver.c:798 -msgid "Cannot specify nonce file when creating a server" -msgstr "" +#: ../gio/glocalfile.c:1538 +#, fuzzy, c-format +msgid "Error removing file: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/gdbusserver.c:875 +#: ../gio/glocalfile.c:1918 #, fuzzy, c-format -msgid "Error writing nonce file at '%s': %s" +msgid "Error trashing file: %s" msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/gdbusserver.c:1042 -#, c-format -msgid "The string '%s' is not a valid D-Bus GUID" -msgstr "" +#: ../gio/glocalfile.c:1941 +#, fuzzy, c-format +msgid "Unable to create trash dir %s: %s" +msgstr "gat ekki búið til skrána '%s': %s" -#: ../gio/gdbusserver.c:1082 -#, c-format -msgid "Cannot listen on unsupported transport '%s'" +#: ../gio/glocalfile.c:1962 +msgid "Unable to find toplevel directory for trash" msgstr "" -#: ../gio/gdbus-tool.c:88 -msgid "COMMAND" +#: ../gio/glocalfile.c:2041 ../gio/glocalfile.c:2061 +msgid "Unable to find or create trash directory" msgstr "" -#: ../gio/gdbus-tool.c:93 -#, c-format -msgid "" -"Commands:\n" -" help Shows this information\n" -" introspect Introspect a remote object\n" -" monitor Monitor a remote object\n" -" call Invoke a method on a remote object\n" -" emit Emit a signal\n" -"\n" -"Use \"%s COMMAND --help\" to get help on each command.\n" +#: ../gio/glocalfile.c:2095 +#, fuzzy, c-format +msgid "Unable to create trashing info file: %s" +msgstr "gat ekki búið til skrána '%s': %s" + +#: ../gio/glocalfile.c:2126 ../gio/glocalfile.c:2131 ../gio/glocalfile.c:2211 +#: ../gio/glocalfile.c:2218 +#, fuzzy, c-format +msgid "Unable to trash file: %s" +msgstr "gat ekki búið til skrána '%s': %s" + +#: ../gio/glocalfile.c:2219 ../glib/gregex.c:281 +msgid "internal error" msgstr "" -#: ../gio/gdbus-tool.c:162 ../gio/gdbus-tool.c:218 ../gio/gdbus-tool.c:290 -#: ../gio/gdbus-tool.c:314 ../gio/gdbus-tool.c:691 ../gio/gdbus-tool.c:1010 -#: ../gio/gdbus-tool.c:1443 +#: ../gio/glocalfile.c:2245 #, fuzzy, c-format -msgid "Error: %s\n" -msgstr "Villa á línu %d: %s" +msgid "Error creating directory: %s" +msgstr "Villa við að opna möppuna '%s': %s" -#: ../gio/gdbus-tool.c:173 ../gio/gdbus-tool.c:231 ../gio/gdbus-tool.c:1459 +#: ../gio/glocalfile.c:2274 #, fuzzy, c-format -msgid "Error parsing introspection XML: %s\n" +msgid "Filesystem does not support symbolic links" +msgstr "gat ekki lesið tákntengið '%s': %s" + +#: ../gio/glocalfile.c:2278 +#, fuzzy, c-format +msgid "Error making symbolic link: %s" msgstr "Villa við umbreytingu: %s" -#: ../gio/gdbus-tool.c:348 -msgid "Connect to the system bus" -msgstr "" +#: ../gio/glocalfile.c:2340 ../gio/glocalfile.c:2434 +#, fuzzy, c-format +msgid "Error moving file: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/gdbus-tool.c:349 -msgid "Connect to the session bus" +#: ../gio/glocalfile.c:2363 +msgid "Can't move directory over directory" msgstr "" -#: ../gio/gdbus-tool.c:350 -msgid "Connect to given D-Bus address" +#: ../gio/glocalfile.c:2390 ../gio/glocalfileoutputstream.c:925 +#: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954 +#: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984 +msgid "Backup file creation failed" msgstr "" -#: ../gio/gdbus-tool.c:360 -msgid "Connection Endpoint Options:" -msgstr "" +#: ../gio/glocalfile.c:2409 +#, fuzzy, c-format +msgid "Error removing target file: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/gdbus-tool.c:361 -msgid "Options specifying the connection endpoint" +#: ../gio/glocalfile.c:2423 +msgid "Move between mounts not supported" msgstr "" -#: ../gio/gdbus-tool.c:383 -#, c-format -msgid "No connection endpoint specified" +#: ../gio/glocalfile.c:2615 +#, fuzzy, c-format +msgid "Could not determine the disk usage of %s: %s" +msgstr "Gat ekki frátekið %lu bæti til að lesa skrána \"%s\"" + +#: ../gio/glocalfileinfo.c:721 +msgid "Attribute value must be non-NULL" msgstr "" -#: ../gio/gdbus-tool.c:393 -#, c-format -msgid "Multiple connection endpoints specified" +#: ../gio/glocalfileinfo.c:728 +msgid "Invalid attribute type (string expected)" msgstr "" -#: ../gio/gdbus-tool.c:463 -#, c-format -msgid "" -"Warning: According to introspection data, interface '%s' does not exist\n" -msgstr "" +#: ../gio/glocalfileinfo.c:735 +#, fuzzy +msgid "Invalid extended attribute name" +msgstr "Skjalið endar óvænt inn í heiti eiginleika" -#: ../gio/gdbus-tool.c:472 -#, c-format -msgid "" -"Warning: According to introspection data, method '%s' does not exist on " -"interface '%s'\n" +#: ../gio/glocalfileinfo.c:775 +#, fuzzy, c-format +msgid "Error setting extended attribute '%s': %s" +msgstr "Villa við að opna möppuna '%s': %s" + +#: ../gio/glocalfileinfo.c:1556 +msgid " (invalid encoding)" msgstr "" -#: ../gio/gdbus-tool.c:534 -msgid "Optional destination for signal (unique name)" +#: ../gio/glocalfileinfo.c:1747 ../gio/glocalfileoutputstream.c:803 +#, fuzzy, c-format +msgid "Error when getting information for file '%s': %s" +msgstr "Villa við lestur skráarinnar '%s': %s" + +#: ../gio/glocalfileinfo.c:1998 +#, fuzzy, c-format +msgid "Error when getting information for file descriptor: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" + +#: ../gio/glocalfileinfo.c:2043 +msgid "Invalid attribute type (uint32 expected)" msgstr "" -#: ../gio/gdbus-tool.c:535 -msgid "Object path to emit signal on" +#: ../gio/glocalfileinfo.c:2061 +msgid "Invalid attribute type (uint64 expected)" msgstr "" -#: ../gio/gdbus-tool.c:536 -msgid "Signal and interface name" +#: ../gio/glocalfileinfo.c:2080 ../gio/glocalfileinfo.c:2099 +msgid "Invalid attribute type (byte string expected)" msgstr "" -#: ../gio/gdbus-tool.c:568 -msgid "Emit a signal." +#: ../gio/glocalfileinfo.c:2134 +#, fuzzy +msgid "Cannot set permissions on symlinks" +msgstr "Villa við umbreytingu: %s" + +#: ../gio/glocalfileinfo.c:2150 +#, fuzzy, c-format +msgid "Error setting permissions: %s" +msgstr "Villa við umbreytingu: %s" + +#: ../gio/glocalfileinfo.c:2201 +#, fuzzy, c-format +msgid "Error setting owner: %s" +msgstr "Villa við umbreytingu: %s" + +#: ../gio/glocalfileinfo.c:2224 +msgid "symlink must be non-NULL" msgstr "" -#: ../gio/gdbus-tool.c:602 ../gio/gdbus-tool.c:822 ../gio/gdbus-tool.c:1549 -#: ../gio/gdbus-tool.c:1781 +#: ../gio/glocalfileinfo.c:2234 ../gio/glocalfileinfo.c:2253 +#: ../gio/glocalfileinfo.c:2264 #, fuzzy, c-format -msgid "Error connecting: %s\n" -msgstr "Villa við lestur skráarinnar '%s': %s" +msgid "Error setting symlink: %s" +msgstr "Villa á línu %d: %s" -#: ../gio/gdbus-tool.c:614 -#, c-format -msgid "Error: object path not specified.\n" +#: ../gio/glocalfileinfo.c:2243 +msgid "Error setting symlink: file is not a symlink" msgstr "" -#: ../gio/gdbus-tool.c:619 ../gio/gdbus-tool.c:883 ../gio/gdbus-tool.c:1607 -#: ../gio/gdbus-tool.c:1840 -#, c-format -msgid "Error: %s is not a valid object path\n" +#: ../gio/glocalfileinfo.c:2369 +#, fuzzy, c-format +msgid "Error setting modification or access time: %s" +msgstr "Villa við umbreytingu: %s" + +#: ../gio/glocalfileinfo.c:2392 +msgid "SELinux context must be non-NULL" msgstr "" -#: ../gio/gdbus-tool.c:625 -#, c-format -msgid "Error: signal not specified.\n" +#: ../gio/glocalfileinfo.c:2407 +#, fuzzy, c-format +msgid "Error setting SELinux context: %s" +msgstr "Villa við umbreytingu: %s" + +#: ../gio/glocalfileinfo.c:2414 +msgid "SELinux is not enabled on this system" msgstr "" -#: ../gio/gdbus-tool.c:634 +#: ../gio/glocalfileinfo.c:2506 #, fuzzy, c-format -msgid "Error: %s is not a valid interface name\n" -msgstr "Táknið '%s' er ekki gilt í heitum viðfanga" +msgid "Setting attribute %s not supported" +msgstr "Tákntengi eru ekki studd" -#: ../gio/gdbus-tool.c:640 +#: ../gio/glocalfileinputstream.c:168 ../gio/glocalfileoutputstream.c:694 #, fuzzy, c-format -msgid "Error: %s is not a valid member name\n" -msgstr "Táknið '%s' er ekki gilt í heitum viðfanga" +msgid "Error reading from file: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/gdbus-tool.c:646 +#: ../gio/glocalfileinputstream.c:199 ../gio/glocalfileinputstream.c:211 +#: ../gio/glocalfileinputstream.c:225 ../gio/glocalfileinputstream.c:333 +#: ../gio/glocalfileoutputstream.c:456 ../gio/glocalfileoutputstream.c:1002 #, fuzzy, c-format -msgid "Error: %s is not a valid unique bus name.\n" -msgstr "Táknið '%s' er ekki gilt í heitum viðfanga" +msgid "Error seeking in file: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/gdbus-tool.c:669 ../gio/gdbus-tool.c:982 +#: ../gio/glocalfileinputstream.c:255 ../gio/glocalfileoutputstream.c:246 +#: ../gio/glocalfileoutputstream.c:340 #, fuzzy, c-format -msgid "Error parsing parameter %d: %s\n" -msgstr "Villa við umbreytingu: %s" +msgid "Error closing file: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" + +#: ../gio/glocalfilemonitor.c:838 +msgid "Unable to find default local file monitor type" +msgstr "" -#: ../gio/gdbus-tool.c:698 +#: ../gio/glocalfileoutputstream.c:194 ../gio/glocalfileoutputstream.c:226 +#: ../gio/glocalfileoutputstream.c:715 #, fuzzy, c-format -msgid "Error flushing connection: %s\n" +msgid "Error writing to file: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" + +#: ../gio/glocalfileoutputstream.c:273 +#, fuzzy, c-format +msgid "Error removing old backup link: %s" msgstr "Villa við umbreytingu: %s" -#: ../gio/gdbus-tool.c:725 -msgid "Destination name to invoke method on" -msgstr "" +#: ../gio/glocalfileoutputstream.c:287 ../gio/glocalfileoutputstream.c:300 +#, fuzzy, c-format +msgid "Error creating backup copy: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/gdbus-tool.c:726 -msgid "Object path to invoke method on" +#: ../gio/glocalfileoutputstream.c:318 +#, fuzzy, c-format +msgid "Error renaming temporary file: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" + +#: ../gio/glocalfileoutputstream.c:502 ../gio/glocalfileoutputstream.c:1053 +#, fuzzy, c-format +msgid "Error truncating file: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" + +#: ../gio/glocalfileoutputstream.c:555 ../gio/glocalfileoutputstream.c:785 +#: ../gio/glocalfileoutputstream.c:1034 ../gio/gsubprocess.c:360 +#, fuzzy, c-format +msgid "Error opening file '%s': %s" +msgstr "Villa við lestur skráarinnar '%s': %s" + +#: ../gio/glocalfileoutputstream.c:816 +msgid "Target file is a directory" msgstr "" -#: ../gio/gdbus-tool.c:727 -msgid "Method and interface name" +#: ../gio/glocalfileoutputstream.c:821 +msgid "Target file is not a regular file" msgstr "" -#: ../gio/gdbus-tool.c:728 -msgid "Timeout in seconds" +#: ../gio/glocalfileoutputstream.c:833 +msgid "The file was externally modified" msgstr "" -#: ../gio/gdbus-tool.c:767 -msgid "Invoke a method on a remote object." +#: ../gio/glocalfileoutputstream.c:1018 +#, fuzzy, c-format +msgid "Error removing old file: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" + +#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:769 +msgid "Invalid GSeekType supplied" msgstr "" -#: ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1568 ../gio/gdbus-tool.c:1800 -#, c-format -msgid "Error: Destination is not specified\n" +#: ../gio/gmemoryinputstream.c:481 +#, fuzzy +msgid "Invalid seek request" +msgstr "Ógilt vélarheiti" + +#: ../gio/gmemoryinputstream.c:505 +msgid "Cannot truncate GMemoryInputStream" msgstr "" -#: ../gio/gdbus-tool.c:863 ../gio/gdbus-tool.c:1587 -#, c-format -msgid "Error: Object path is not specified\n" +#: ../gio/gmemoryoutputstream.c:565 +msgid "Memory output stream not resizable" msgstr "" -#: ../gio/gdbus-tool.c:898 -#, c-format -msgid "Error: Method name is not specified\n" +#: ../gio/gmemoryoutputstream.c:581 +msgid "Failed to resize memory output stream" msgstr "" -#: ../gio/gdbus-tool.c:909 -#, c-format -msgid "Error: Method name '%s' is invalid\n" +#: ../gio/gmemoryoutputstream.c:671 +msgid "" +"Amount of memory required to process the write is larger than available " +"address space" msgstr "" -#: ../gio/gdbus-tool.c:974 -#, fuzzy, c-format -msgid "Error parsing parameter %d of type '%s': %s\n" -msgstr "Villa við að opna möppuna '%s': %s" +#: ../gio/gmemoryoutputstream.c:779 +msgid "Requested seek before the beginning of the stream" +msgstr "" -#: ../gio/gdbus-tool.c:1406 -msgid "Destination name to introspect" +#: ../gio/gmemoryoutputstream.c:794 +msgid "Requested seek beyond the end of the stream" msgstr "" -#: ../gio/gdbus-tool.c:1407 -msgid "Object path to introspect" +#. Translators: This is an error +#. * message for mount objects that +#. * don't implement unmount. +#: ../gio/gmount.c:393 +msgid "mount doesn't implement \"unmount\"" msgstr "" -#: ../gio/gdbus-tool.c:1408 -msgid "Print XML" +#. Translators: This is an error +#. * message for mount objects that +#. * don't implement eject. +#: ../gio/gmount.c:469 +msgid "mount doesn't implement \"eject\"" msgstr "" -#: ../gio/gdbus-tool.c:1409 -msgid "Introspect children" +#. Translators: This is an error +#. * message for mount objects that +#. * don't implement any of unmount or unmount_with_operation. +#: ../gio/gmount.c:547 +msgid "mount doesn't implement \"unmount\" or \"unmount_with_operation\"" msgstr "" -#: ../gio/gdbus-tool.c:1410 -msgid "Only print properties" +#. Translators: This is an error +#. * message for mount objects that +#. * don't implement any of eject or eject_with_operation. +#: ../gio/gmount.c:632 +msgid "mount doesn't implement \"eject\" or \"eject_with_operation\"" msgstr "" -#: ../gio/gdbus-tool.c:1501 -msgid "Introspect a remote object." +#. Translators: This is an error +#. * message for mount objects that +#. * don't implement remount. +#: ../gio/gmount.c:720 +msgid "mount doesn't implement \"remount\"" msgstr "" -#: ../gio/gdbus-tool.c:1699 -msgid "Destination name to monitor" +#. Translators: This is an error +#. * message for mount objects that +#. * don't implement content type guessing. +#: ../gio/gmount.c:802 +msgid "mount doesn't implement content type guessing" msgstr "" -#: ../gio/gdbus-tool.c:1700 -msgid "Object path to monitor" +#. Translators: This is an error +#. * message for mount objects that +#. * don't implement content type guessing. +#: ../gio/gmount.c:889 +msgid "mount doesn't implement synchronous content type guessing" msgstr "" -#: ../gio/gdbus-tool.c:1733 -msgid "Monitor a remote object." +#: ../gio/gnetworkaddress.c:383 +#, c-format +msgid "Hostname '%s' contains '[' but not ']'" msgstr "" -#: ../gio/gdesktopappinfo.c:572 ../gio/gwin32appinfo.c:221 -msgid "Unnamed" +#: ../gio/gnetworkmonitorbase.c:199 ../gio/gnetworkmonitorbase.c:302 +msgid "Network unreachable" msgstr "" -#: ../gio/gdesktopappinfo.c:969 -msgid "Desktop file didn't specify Exec field" +#: ../gio/gnetworkmonitorbase.c:237 ../gio/gnetworkmonitorbase.c:267 +msgid "Host unreachable" msgstr "" -#: ../gio/gdesktopappinfo.c:1250 -msgid "Unable to find terminal required for application" +#: ../gio/gnetworkmonitornetlink.c:96 ../gio/gnetworkmonitornetlink.c:108 +#: ../gio/gnetworkmonitornetlink.c:127 +#, fuzzy, c-format +msgid "Could not create network monitor: %s" +msgstr "Gat ekki frátekið %lu bæti til að lesa skrána \"%s\"" + +#: ../gio/gnetworkmonitornetlink.c:117 +msgid "Could not create network monitor: " msgstr "" -#: ../gio/gdesktopappinfo.c:1515 +#: ../gio/gnetworkmonitornetlink.c:175 +#, fuzzy +msgid "Could not get network status: " +msgstr "Gat ekki frátekið %lu bæti til að lesa skrána \"%s\"" + +#: ../gio/gnetworkmonitornm.c:278 #, c-format -msgid "Can't create user application configuration folder %s: %s" +msgid "NetworkManager version too old" msgstr "" -#: ../gio/gdesktopappinfo.c:1519 -#, c-format -msgid "Can't create user MIME configuration folder %s: %s" +#: ../gio/goutputstream.c:209 ../gio/goutputstream.c:557 +msgid "Output stream doesn't implement write" msgstr "" -#: ../gio/gdesktopappinfo.c:1785 ../gio/gdesktopappinfo.c:1809 -msgid "Application information lacks an identifier" +#: ../gio/goutputstream.c:518 ../gio/goutputstream.c:1218 +msgid "Source stream is already closed" msgstr "" -#: ../gio/gdesktopappinfo.c:2033 +#: ../gio/gresolver.c:331 ../gio/gthreadedresolver.c:116 +#: ../gio/gthreadedresolver.c:126 +#, fuzzy, c-format +msgid "Error resolving '%s': %s" +msgstr "Villa við lestur skráarinnar '%s': %s" + +#: ../gio/gresource.c:298 ../gio/gresource.c:546 ../gio/gresource.c:563 +#: ../gio/gresource.c:684 ../gio/gresource.c:753 ../gio/gresource.c:814 +#: ../gio/gresource.c:894 ../gio/gresourcefile.c:452 +#: ../gio/gresourcefile.c:553 ../gio/gresourcefile.c:655 #, c-format -msgid "Can't create user desktop file %s" +msgid "The resource at '%s' does not exist" msgstr "" -#: ../gio/gdesktopappinfo.c:2149 +#: ../gio/gresource.c:463 #, c-format -msgid "Custom definition for %s" +msgid "The resource at '%s' failed to decompress" msgstr "" -#: ../gio/gdrive.c:363 -msgid "drive doesn't implement eject" +#: ../gio/gresourcefile.c:651 +#, c-format +msgid "The resource at '%s' is not a directory" msgstr "" -#. Translators: This is an error -#. * message for drive objects that -#. * don't implement any of eject or eject_with_operation. -#: ../gio/gdrive.c:444 -msgid "drive doesn't implement eject or eject_with_operation" +#: ../gio/gresourcefile.c:859 +msgid "Input stream doesn't implement seek" msgstr "" -#: ../gio/gdrive.c:521 -msgid "drive doesn't implement polling for media" +#: ../gio/gresource-tool.c:491 +msgid "List sections containing resources in an elf FILE" msgstr "" -#: ../gio/gdrive.c:728 -msgid "drive doesn't implement start" +#: ../gio/gresource-tool.c:497 +msgid "" +"List resources\n" +"If SECTION is given, only list resources in this section\n" +"If PATH is given, only list matching resources" msgstr "" -#: ../gio/gdrive.c:831 -msgid "drive doesn't implement stop" +#: ../gio/gresource-tool.c:500 ../gio/gresource-tool.c:510 +msgid "FILE [PATH]" msgstr "" -#: ../gio/gdummytlsbackend.c:168 ../gio/gdummytlsbackend.c:288 -#: ../gio/gdummytlsbackend.c:378 -msgid "TLS support is not available" +#: ../gio/gresource-tool.c:501 ../gio/gresource-tool.c:511 +#: ../gio/gresource-tool.c:518 +msgid "SECTION" msgstr "" -#: ../gio/gemblem.c:324 -#, c-format -msgid "Can't handle version %d of GEmblem encoding" +#: ../gio/gresource-tool.c:506 +msgid "" +"List resources with details\n" +"If SECTION is given, only list resources in this section\n" +"If PATH is given, only list matching resources\n" +"Details include the section, size and compression" msgstr "" -#: ../gio/gemblem.c:334 -#, c-format -msgid "Malformed number of tokens (%d) in GEmblem encoding" +#: ../gio/gresource-tool.c:516 +msgid "Extract a resource file to stdout" msgstr "" -#: ../gio/gemblemedicon.c:368 -#, c-format -msgid "Can't handle version %d of GEmblemedIcon encoding" +#: ../gio/gresource-tool.c:517 +msgid "FILE PATH" +msgstr "" + +#: ../gio/gresource-tool.c:531 +msgid "" +"Usage:\n" +" gresource [--section SECTION] COMMAND [ARGS...]\n" +"\n" +"Commands:\n" +" help Show this information\n" +" sections List resource sections\n" +" list List resources\n" +" details List resources with details\n" +" extract Extract a resource\n" +"\n" +"Use 'gresource help COMMAND' to get detailed help.\n" +"\n" msgstr "" -#: ../gio/gemblemedicon.c:378 +#: ../gio/gresource-tool.c:545 #, c-format -msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding" +msgid "" +"Usage:\n" +" gresource %s%s%s %s\n" +"\n" +"%s\n" +"\n" msgstr "" -#: ../gio/gemblemedicon.c:401 -msgid "Expected a GEmblem for GEmblemedIcon" +#: ../gio/gresource-tool.c:552 +msgid " SECTION An (optional) elf section name\n" msgstr "" -#: ../gio/gfile.c:871 ../gio/gfile.c:1102 ../gio/gfile.c:1237 -#: ../gio/gfile.c:1474 ../gio/gfile.c:1528 ../gio/gfile.c:1585 -#: ../gio/gfile.c:1668 ../gio/gfile.c:1723 ../gio/gfile.c:1783 -#: ../gio/gfile.c:1837 ../gio/gfile.c:3307 ../gio/gfile.c:3361 -#: ../gio/gfile.c:3493 ../gio/gfile.c:3534 ../gio/gfile.c:3864 -#: ../gio/gfile.c:4266 ../gio/gfile.c:4352 ../gio/gfile.c:4441 -#: ../gio/gfile.c:4539 ../gio/gfile.c:4626 ../gio/gfile.c:4720 -#: ../gio/gfile.c:5041 ../gio/gfile.c:5308 ../gio/gfile.c:5373 -#: ../gio/gfile.c:6947 ../gio/gfile.c:7037 ../gio/gfile.c:7123 -#: ../gio/win32/gwinhttpfile.c:439 -#, fuzzy -msgid "Operation not supported" -msgstr "Tákntengi eru ekki studd" +#: ../gio/gresource-tool.c:556 ../gio/gsettings-tool.c:648 +msgid " COMMAND The (optional) command to explain\n" +msgstr "" -#. Translators: This is an error message when trying to find the -#. * enclosing (user visible) mount of a file, but none exists. -#. Translators: This is an error message when trying to -#. * find the enclosing (user visible) mount of a file, but -#. * none exists. -#. Translators: This is an error message when trying to find -#. * the enclosing (user visible) mount of a file, but none -#. * exists. -#: ../gio/gfile.c:1358 ../gio/glocalfile.c:1051 ../gio/glocalfile.c:1062 -#: ../gio/glocalfile.c:1075 -msgid "Containing mount does not exist" +#: ../gio/gresource-tool.c:562 +msgid " FILE An elf file (a binary or a shared library)\n" msgstr "" -#: ../gio/gfile.c:2411 ../gio/glocalfile.c:2256 -msgid "Can't copy over directory" +#: ../gio/gresource-tool.c:565 +msgid "" +" FILE An elf file (a binary or a shared library)\n" +" or a compiled resource file\n" msgstr "" -#: ../gio/gfile.c:2472 -msgid "Can't copy directory over directory" +#: ../gio/gresource-tool.c:569 +msgid "[PATH]" msgstr "" -#: ../gio/gfile.c:2480 ../gio/glocalfile.c:2265 -msgid "Target file exists" +#: ../gio/gresource-tool.c:571 +msgid " PATH An (optional) resource path (may be partial)\n" msgstr "" -#: ../gio/gfile.c:2498 -msgid "Can't recursively copy directory" +#: ../gio/gresource-tool.c:572 +msgid "PATH" msgstr "" -#: ../gio/gfile.c:2758 -#, fuzzy -msgid "Splice not supported" -msgstr "Tákntengi eru ekki studd" +#: ../gio/gresource-tool.c:574 +msgid " PATH A resource path\n" +msgstr "" -#: ../gio/gfile.c:2762 -#, fuzzy, c-format -msgid "Error splicing file: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" - -#: ../gio/gfile.c:2909 -msgid "Can't copy special file" +#: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72 +#, c-format +msgid "No such schema '%s'\n" msgstr "" -#: ../gio/gfile.c:3483 -msgid "Invalid symlink value given" +#: ../gio/gsettings-tool.c:57 +#, c-format +msgid "Schema '%s' is not relocatable (path must not be specified)\n" msgstr "" -#: ../gio/gfile.c:3577 -#, fuzzy -msgid "Trash not supported" -msgstr "Tákntengi eru ekki studd" - -#: ../gio/gfile.c:3626 +#: ../gio/gsettings-tool.c:78 #, c-format -msgid "File names cannot contain '%c'" +msgid "Schema '%s' is relocatable (path must be specified)\n" msgstr "" -#: ../gio/gfile.c:6006 ../gio/gvolume.c:332 -msgid "volume doesn't implement mount" +#: ../gio/gsettings-tool.c:92 +#, c-format +msgid "Empty path given.\n" msgstr "" -#: ../gio/gfile.c:6117 -msgid "No application is registered as handling this file" +#: ../gio/gsettings-tool.c:98 +#, c-format +msgid "Path must begin with a slash (/)\n" msgstr "" -#: ../gio/gfileenumerator.c:205 -msgid "Enumerator is closed" +#: ../gio/gsettings-tool.c:104 +#, c-format +msgid "Path must end with a slash (/)\n" msgstr "" -#: ../gio/gfileenumerator.c:212 ../gio/gfileenumerator.c:271 -#: ../gio/gfileenumerator.c:371 ../gio/gfileenumerator.c:480 -msgid "File enumerator has outstanding operation" +#: ../gio/gsettings-tool.c:110 +#, c-format +msgid "Path must not contain two adjacent slashes (//)\n" msgstr "" -#: ../gio/gfileenumerator.c:361 ../gio/gfileenumerator.c:470 -msgid "File enumerator is already closed" +#: ../gio/gsettings-tool.c:490 +#, c-format +msgid "The provided value is outside of the valid range\n" msgstr "" -#: ../gio/gfileicon.c:236 +#: ../gio/gsettings-tool.c:497 #, c-format -msgid "Can't handle version %d of GFileIcon encoding" +msgid "The key is not writable\n" msgstr "" -#: ../gio/gfileicon.c:246 -msgid "Malformed input data for GFileIcon" +#: ../gio/gsettings-tool.c:533 +msgid "List the installed (non-relocatable) schemas" msgstr "" -#: ../gio/gfileinputstream.c:154 ../gio/gfileinputstream.c:420 -#: ../gio/gfileiostream.c:170 ../gio/gfileoutputstream.c:169 -#: ../gio/gfileoutputstream.c:523 -msgid "Stream doesn't support query_info" +#: ../gio/gsettings-tool.c:539 +msgid "List the installed relocatable schemas" msgstr "" -#: ../gio/gfileinputstream.c:335 ../gio/gfileiostream.c:387 -#: ../gio/gfileoutputstream.c:381 -msgid "Seek not supported on stream" +#: ../gio/gsettings-tool.c:545 +msgid "List the keys in SCHEMA" msgstr "" -#: ../gio/gfileinputstream.c:379 -msgid "Truncate not allowed on input stream" +#: ../gio/gsettings-tool.c:546 ../gio/gsettings-tool.c:552 +#: ../gio/gsettings-tool.c:589 +msgid "SCHEMA[:PATH]" msgstr "" -#: ../gio/gfileiostream.c:463 ../gio/gfileoutputstream.c:457 -msgid "Truncate not supported on stream" +#: ../gio/gsettings-tool.c:551 +msgid "List the children of SCHEMA" msgstr "" -#: ../gio/gicon.c:284 -#, c-format -msgid "Wrong number of tokens (%d)" +#: ../gio/gsettings-tool.c:557 +msgid "" +"List keys and values, recursively\n" +"If no SCHEMA is given, list all keys\n" msgstr "" -#: ../gio/gicon.c:304 -#, c-format -msgid "No type for class name %s" +#: ../gio/gsettings-tool.c:559 +msgid "[SCHEMA[:PATH]]" msgstr "" -#: ../gio/gicon.c:314 -#, c-format -msgid "Type %s does not implement the GIcon interface" +#: ../gio/gsettings-tool.c:564 +msgid "Get the value of KEY" msgstr "" -#: ../gio/gicon.c:325 -#, c-format -msgid "Type %s is not classed" +#: ../gio/gsettings-tool.c:565 ../gio/gsettings-tool.c:571 +#: ../gio/gsettings-tool.c:583 ../gio/gsettings-tool.c:595 +msgid "SCHEMA[:PATH] KEY" msgstr "" -#: ../gio/gicon.c:339 -#, c-format -msgid "Malformed version number: %s" +#: ../gio/gsettings-tool.c:570 +msgid "Query the range of valid values for KEY" msgstr "" -#: ../gio/gicon.c:353 -#, c-format -msgid "Type %s does not implement from_tokens() on the GIcon interface" +#: ../gio/gsettings-tool.c:576 +msgid "Set the value of KEY to VALUE" msgstr "" -#: ../gio/gicon.c:430 -msgid "Can't handle the supplied version the icon encoding" +#: ../gio/gsettings-tool.c:577 +msgid "SCHEMA[:PATH] KEY VALUE" msgstr "" -#: ../gio/ginputstream.c:194 -msgid "Input stream doesn't implement read" +#: ../gio/gsettings-tool.c:582 +msgid "Reset KEY to its default value" msgstr "" -#. Translators: This is an error you get if there is already an -#. * operation running against this stream when you try to start -#. * one -#. Translators: This is an error you get if there is -#. * already an operation running against this stream when -#. * you try to start one -#: ../gio/ginputstream.c:898 ../gio/giostream.c:316 -#: ../gio/goutputstream.c:1216 -msgid "Stream has outstanding operation" +#: ../gio/gsettings-tool.c:588 +msgid "Reset all keys in SCHEMA to their defaults" msgstr "" -#: ../gio/ginetsocketaddress.c:181 ../gio/ginetsocketaddress.c:198 -#: ../gio/gunixsocketaddress.c:221 -msgid "Not enough space for socket address" +#: ../gio/gsettings-tool.c:594 +msgid "Check if KEY is writable" msgstr "" -#: ../gio/ginetsocketaddress.c:211 -msgid "Unsupported socket address" +#: ../gio/gsettings-tool.c:600 +msgid "" +"Monitor KEY for changes.\n" +"If no KEY is specified, monitor all keys in SCHEMA.\n" +"Use ^C to stop monitoring.\n" msgstr "" -#: ../gio/glib-compile-schemas.c:741 -#, fuzzy -msgid "empty names are not permitted" -msgstr "Tákntengi eru ekki studd" - -#: ../gio/glib-compile-schemas.c:751 -#, c-format -msgid "invalid name '%s': names must begin with a lowercase letter" +#: ../gio/gsettings-tool.c:603 +msgid "SCHEMA[:PATH] [KEY]" msgstr "" -#: ../gio/glib-compile-schemas.c:763 -#, c-format +#: ../gio/gsettings-tool.c:615 msgid "" -"invalid name '%s': invalid character '%c'; only lowercase letters, numbers " -"and dash ('-') are permitted." +"Usage:\n" +" gsettings --version\n" +" gsettings [--schemadir SCHEMADIR] COMMAND [ARGS...]\n" +"\n" +"Commands:\n" +" help Show this information\n" +" list-schemas List installed schemas\n" +" list-relocatable-schemas List relocatable schemas\n" +" list-keys List keys in a schema\n" +" list-children List children of a schema\n" +" list-recursively List keys and values, recursively\n" +" range Queries the range of a key\n" +" get Get the value of a key\n" +" set Set the value of a key\n" +" reset Reset the value of a key\n" +" reset-recursively Reset all values in a given schema\n" +" writable Check if a key is writable\n" +" monitor Watch for changes\n" +"\n" +"Use 'gsettings help COMMAND' to get detailed help.\n" +"\n" msgstr "" -#: ../gio/glib-compile-schemas.c:772 +#: ../gio/gsettings-tool.c:638 #, c-format -msgid "invalid name '%s': two successive dashes ('--') are not permitted." +msgid "" +"Usage:\n" +" gsettings [--schemadir SCHEMADIR] %s %s\n" +"\n" +"%s\n" +"\n" msgstr "" -#: ../gio/glib-compile-schemas.c:781 -#, c-format -msgid "invalid name '%s': the last character may not be a dash ('-')." +#: ../gio/gsettings-tool.c:644 +msgid " SCHEMADIR A directory to search for additional schemas\n" msgstr "" -#: ../gio/glib-compile-schemas.c:789 -#, c-format -msgid "invalid name '%s': maximum length is 1024" +#: ../gio/gsettings-tool.c:652 +msgid "" +" SCHEMA The name of the schema\n" +" PATH The path, for relocatable schemas\n" msgstr "" -#: ../gio/glib-compile-schemas.c:858 -#, c-format -msgid " already specified" +#: ../gio/gsettings-tool.c:657 +msgid " KEY The (optional) key within the schema\n" msgstr "" -#: ../gio/glib-compile-schemas.c:884 -msgid "can not add keys to a 'list-of' schema" +#: ../gio/gsettings-tool.c:661 +msgid " KEY The key within the schema\n" msgstr "" -#: ../gio/glib-compile-schemas.c:895 -#, c-format -msgid " already specified" +#: ../gio/gsettings-tool.c:665 +msgid " VALUE The value to set\n" msgstr "" -#: ../gio/glib-compile-schemas.c:913 +#: ../gio/gsettings-tool.c:720 +#, fuzzy, c-format +msgid "Could not load schemas from %s: %s\n" +msgstr "Gat ekki opnað umbreyti úr '%s' í '%s': %s" + +#: ../gio/gsettings-tool.c:782 #, c-format -msgid "" -" shadows in ; use " -"to modify value" +msgid "Empty schema name given\n" msgstr "" -#: ../gio/glib-compile-schemas.c:924 +#: ../gio/gsettings-tool.c:811 #, c-format -msgid "" -"exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " -"to " +msgid "No such key '%s'\n" msgstr "" -#: ../gio/glib-compile-schemas.c:943 -#, c-format -msgid "<%s id='%s'> not (yet) defined." +#: ../gio/gsocket.c:271 +msgid "Invalid socket, not initialized" msgstr "" -#: ../gio/glib-compile-schemas.c:958 +#: ../gio/gsocket.c:278 #, c-format -msgid "invalid GVariant type string '%s'" +msgid "Invalid socket, initialization failed due to: %s" msgstr "" -#: ../gio/glib-compile-schemas.c:988 -msgid " given but schema isn't extending anything" +#: ../gio/gsocket.c:286 +msgid "Socket is already closed" msgstr "" -#: ../gio/glib-compile-schemas.c:1001 -#, c-format -msgid "no to override" +#: ../gio/gsocket.c:301 ../gio/gsocket.c:3630 ../gio/gsocket.c:3685 +msgid "Socket I/O timed out" msgstr "" -#: ../gio/glib-compile-schemas.c:1009 -#, c-format -msgid " already specified" -msgstr "" +#: ../gio/gsocket.c:448 +#, fuzzy, c-format +msgid "creating GSocket from fd: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/glib-compile-schemas.c:1080 -#, c-format -msgid " already specified" -msgstr "" +#: ../gio/gsocket.c:476 ../gio/gsocket.c:530 ../gio/gsocket.c:537 +#, fuzzy, c-format +msgid "Unable to create socket: %s" +msgstr "gat ekki búið til skrána '%s': %s" -#: ../gio/glib-compile-schemas.c:1092 -#, c-format -msgid " extends not yet existing schema '%s'" +#: ../gio/gsocket.c:530 +msgid "Unknown family was specified" msgstr "" -#: ../gio/glib-compile-schemas.c:1108 -#, c-format -msgid " is list of not yet existing schema '%s'" +#: ../gio/gsocket.c:537 +msgid "Unknown protocol was specified" msgstr "" -#: ../gio/glib-compile-schemas.c:1116 +#: ../gio/gsocket.c:1730 #, c-format -msgid "Can not be a list of a schema with a path" +msgid "could not get local address: %s" msgstr "" -#: ../gio/glib-compile-schemas.c:1126 -#, c-format -msgid "Can not extend a schema with a path" -msgstr "" +#: ../gio/gsocket.c:1773 +#, fuzzy, c-format +msgid "could not get remote address: %s" +msgstr "Gat ekki frátekið %lu bæti til að lesa skrána \"%s\"" -#: ../gio/glib-compile-schemas.c:1136 +#: ../gio/gsocket.c:1834 #, c-format -msgid "" -" is a list, extending which is not a list" +msgid "could not listen: %s" msgstr "" -#: ../gio/glib-compile-schemas.c:1146 -#, c-format -msgid "" -" extends but '%s' " -"does not extend '%s'" -msgstr "" +#: ../gio/gsocket.c:1933 +#, fuzzy, c-format +msgid "Error binding to address: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/glib-compile-schemas.c:1163 -#, c-format -msgid "a path, if given, must begin and end with a slash" -msgstr "" +#: ../gio/gsocket.c:2048 ../gio/gsocket.c:2085 +#, fuzzy, c-format +msgid "Error joining multicast group: %s" +msgstr "Villa við umbreytingu: %s" -#: ../gio/glib-compile-schemas.c:1170 -#, c-format -msgid "the path of a list must end with ':/'" -msgstr "" +#: ../gio/gsocket.c:2049 ../gio/gsocket.c:2086 +#, fuzzy, c-format +msgid "Error leaving multicast group: %s" +msgstr "Villa við umbreytingu: %s" -#: ../gio/glib-compile-schemas.c:1196 -#, c-format -msgid "<%s id='%s'> already specified" +#: ../gio/gsocket.c:2050 +msgid "No support for source-specific multicast" msgstr "" -#: ../gio/glib-compile-schemas.c:1416 -#, c-format -msgid "Element <%s> not allowed inside <%s>" -msgstr "" +#: ../gio/gsocket.c:2272 +#, fuzzy, c-format +msgid "Error accepting connection: %s" +msgstr "Villa við umbreytingu: %s" -#: ../gio/glib-compile-schemas.c:1420 -#, c-format -msgid "Element <%s> not allowed at toplevel" +#: ../gio/gsocket.c:2395 +msgid "Connection in progress" msgstr "" -#: ../gio/glib-compile-schemas.c:1511 -#, c-format -msgid "text may not appear inside <%s>" -msgstr "" +#: ../gio/gsocket.c:2445 +#, fuzzy +msgid "Unable to get pending error: " +msgstr "gat ekki búið til skrána '%s': %s" -#. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1696 ../gio/glib-compile-schemas.c:1767 -#: ../gio/glib-compile-schemas.c:1843 -#, c-format -msgid "--strict was specified; exiting.\n" -msgstr "" +#: ../gio/gsocket.c:2648 +#, fuzzy, c-format +msgid "Error receiving data: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/glib-compile-schemas.c:1704 -#, c-format -msgid "This entire file has been ignored.\n" -msgstr "" +#: ../gio/gsocket.c:2823 +#, fuzzy, c-format +msgid "Error sending data: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/glib-compile-schemas.c:1763 -#, c-format -msgid "Ignoring this file.\n" -msgstr "" +#: ../gio/gsocket.c:2937 +#, fuzzy, c-format +msgid "Unable to shutdown socket: %s" +msgstr "gat ekki búið til skrána '%s': %s" + +#: ../gio/gsocket.c:3016 +#, fuzzy, c-format +msgid "Error closing socket: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/glib-compile-schemas.c:1803 +#: ../gio/gsocket.c:3623 #, c-format -msgid "No such key '%s' in schema '%s' as specified in override file '%s'" +msgid "Waiting for socket condition: %s" msgstr "" -#: ../gio/glib-compile-schemas.c:1809 ../gio/glib-compile-schemas.c:1867 -#: ../gio/glib-compile-schemas.c:1895 -#, c-format -msgid "; ignoring override for this key.\n" +#: ../gio/gsocket.c:3910 ../gio/gsocket.c:3993 ../gio/gsocket.c:4221 +#, fuzzy, c-format +msgid "Error sending message: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" + +#: ../gio/gsocket.c:3935 +msgid "GSocketControlMessage not supported on Windows" msgstr "" -#: ../gio/glib-compile-schemas.c:1813 ../gio/glib-compile-schemas.c:1871 -#: ../gio/glib-compile-schemas.c:1899 -#, c-format -msgid " and --strict was specified; exiting.\n" +#: ../gio/gsocket.c:4549 ../gio/gsocket.c:4687 +#, fuzzy, c-format +msgid "Error receiving message: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" + +#: ../gio/gsocket.c:4809 +#, fuzzy, c-format +msgid "Unable to read socket credentials: %s" +msgstr "gat ekki búið til skrána '%s': %s" + +#: ../gio/gsocket.c:4818 +msgid "g_socket_get_credentials not implemented for this OS" msgstr "" -#: ../gio/glib-compile-schemas.c:1829 +#: ../gio/gsocketclient.c:176 #, c-format -msgid "" -"error parsing key '%s' in schema '%s' as specified in override file '%s': " -"%s. " +msgid "Could not connect to proxy server %s: " msgstr "" -#: ../gio/glib-compile-schemas.c:1839 -#, c-format -msgid "Ignoring override for this key.\n" +#: ../gio/gsocketclient.c:190 +#, fuzzy, c-format +msgid "Could not connect to %s: " +msgstr "Gat ekki opnað umbreyti úr '%s' í '%s': %s" + +#: ../gio/gsocketclient.c:192 +msgid "Could not connect: " msgstr "" -#: ../gio/glib-compile-schemas.c:1857 -#, c-format -msgid "" -"override for key '%s' in schema '%s' in override file '%s' is out of the " -"range given in the schema" +#: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1599 +msgid "Unknown error on connect" +msgstr "" + +#: ../gio/gsocketclient.c:1081 ../gio/gsocketclient.c:1535 +#, fuzzy +msgid "Proxying over a non-TCP connection is not supported." +msgstr "Tákntengi eru ekki studd" + +#: ../gio/gsocketclient.c:1110 ../gio/gsocketclient.c:1561 +#, fuzzy, c-format +msgid "Proxy protocol '%s' is not supported." +msgstr "Tákntengi eru ekki studd" + +#: ../gio/gsocketlistener.c:218 +msgid "Listener is already closed" +msgstr "" + +#: ../gio/gsocketlistener.c:264 +msgid "Added socket is closed" msgstr "" -#: ../gio/glib-compile-schemas.c:1885 +#: ../gio/gsocks4aproxy.c:118 #, c-format -msgid "" -"override for key '%s' in schema '%s' in override file '%s' is not in the " -"list of valid choices" +msgid "SOCKSv4 does not support IPv6 address '%s'" msgstr "" -#: ../gio/glib-compile-schemas.c:1939 -msgid "where to store the gschemas.compiled file" +#: ../gio/gsocks4aproxy.c:136 +msgid "Username is too long for SOCKSv4 protocol" msgstr "" -#: ../gio/glib-compile-schemas.c:1939 ../gio/glib-compile-schemas.c:1970 -msgid "DIRECTORY" +#: ../gio/gsocks4aproxy.c:153 +#, c-format +msgid "Hostname '%s' is too long for SOCKSv4 protocol" msgstr "" -#: ../gio/glib-compile-schemas.c:1940 -msgid "Abort on any errors in schemas" +#: ../gio/gsocks4aproxy.c:179 +msgid "The server is not a SOCKSv4 proxy server." msgstr "" -#: ../gio/glib-compile-schemas.c:1941 -msgid "Do not write the gschema.compiled file" +#: ../gio/gsocks4aproxy.c:186 +msgid "Connection through SOCKSv4 server was rejected" msgstr "" -#: ../gio/glib-compile-schemas.c:1942 -msgid "This option will be removed soon." +#: ../gio/gsocks5proxy.c:153 ../gio/gsocks5proxy.c:324 +#: ../gio/gsocks5proxy.c:334 +msgid "The server is not a SOCKSv5 proxy server." msgstr "" -#: ../gio/glib-compile-schemas.c:1943 -msgid "Do not enforce key name restrictions" +#: ../gio/gsocks5proxy.c:167 +msgid "The SOCKSv5 proxy requires authentication." msgstr "" -#: ../gio/glib-compile-schemas.c:1973 +#: ../gio/gsocks5proxy.c:177 msgid "" -"Compile all GSettings schema files into a schema cache.\n" -"Schema files are required to have the extension .gschema.xml,\n" -"and the cache file is called gschemas.compiled." +"The SOCKSv5 proxy requires an authentication method that is not supported by " +"GLib." msgstr "" -#: ../gio/glib-compile-schemas.c:1989 -#, c-format -msgid "You should give exactly one directory name\n" +#: ../gio/gsocks5proxy.c:206 +msgid "Username or password is too long for SOCKSv5 protocol." msgstr "" -#: ../gio/glib-compile-schemas.c:2028 -#, c-format -msgid "No schema files found: " +#: ../gio/gsocks5proxy.c:236 +msgid "SOCKSv5 authentication failed due to wrong username or password." msgstr "" -#: ../gio/glib-compile-schemas.c:2031 +#: ../gio/gsocks5proxy.c:286 #, c-format -msgid "doing nothing.\n" +msgid "Hostname '%s' is too long for SOCKSv5 protocol" msgstr "" -#: ../gio/glib-compile-schemas.c:2034 -#, c-format -msgid "removed existing output file.\n" +#: ../gio/gsocks5proxy.c:348 +msgid "The SOCKSv5 proxy server uses unknown address type." msgstr "" -#: ../gio/glocaldirectorymonitor.c:287 -msgid "Unable to find default local directory monitor type" +#: ../gio/gsocks5proxy.c:355 +msgid "Internal SOCKSv5 proxy server error." msgstr "" -#: ../gio/glocalfile.c:571 ../gio/win32/gwinhttpfile.c:422 -#, fuzzy, c-format -msgid "Invalid filename %s" -msgstr "Ógilt vélarheiti" +#: ../gio/gsocks5proxy.c:361 +msgid "SOCKSv5 connection not allowed by ruleset." +msgstr "" -#: ../gio/glocalfile.c:948 -#, fuzzy, c-format -msgid "Error getting filesystem info: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../gio/gsocks5proxy.c:368 +msgid "Host unreachable through SOCKSv5 server." +msgstr "" -#: ../gio/glocalfile.c:1097 -msgid "Can't rename root directory" +#: ../gio/gsocks5proxy.c:374 +msgid "Network unreachable through SOCKSv5 proxy." msgstr "" -#: ../gio/glocalfile.c:1117 ../gio/glocalfile.c:1143 -#, fuzzy, c-format -msgid "Error renaming file: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../gio/gsocks5proxy.c:380 +msgid "Connection refused through SOCKSv5 proxy." +msgstr "" -#: ../gio/glocalfile.c:1126 -msgid "Can't rename file, filename already exists" +#: ../gio/gsocks5proxy.c:386 +msgid "SOCKSv5 proxy does not support 'connect' command." msgstr "" -#: ../gio/glocalfile.c:1139 ../gio/glocalfile.c:2129 ../gio/glocalfile.c:2158 -#: ../gio/glocalfile.c:2318 ../gio/glocalfileoutputstream.c:571 -#: ../gio/glocalfileoutputstream.c:624 ../gio/glocalfileoutputstream.c:669 -#: ../gio/glocalfileoutputstream.c:1157 -#, fuzzy -msgid "Invalid filename" -msgstr "Ógilt vélarheiti" +#: ../gio/gsocks5proxy.c:392 +msgid "SOCKSv5 proxy does not support provided address type." +msgstr "" -#: ../gio/glocalfile.c:1300 -#, fuzzy, c-format -msgid "Error opening file: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../gio/gsocks5proxy.c:398 +msgid "Unknown SOCKSv5 proxy error." +msgstr "" -#: ../gio/glocalfile.c:1316 -msgid "Can't open directory" +#: ../gio/gthemedicon.c:518 +#, c-format +msgid "Can't handle version %d of GThemedIcon encoding" msgstr "" -#: ../gio/glocalfile.c:1441 +#: ../gio/gthreadedresolver.c:118 +msgid "No valid addresses were found" +msgstr "" + +#: ../gio/gthreadedresolver.c:211 #, fuzzy, c-format -msgid "Error removing file: %s" +msgid "Error reverse-resolving '%s': %s" msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/glocalfile.c:1808 +#: ../gio/gthreadedresolver.c:546 ../gio/gthreadedresolver.c:626 +#: ../gio/gthreadedresolver.c:724 ../gio/gthreadedresolver.c:774 +#, c-format +msgid "No DNS record of the requested type for '%s'" +msgstr "" + +#: ../gio/gthreadedresolver.c:551 ../gio/gthreadedresolver.c:729 +#, c-format +msgid "Temporarily unable to resolve '%s'" +msgstr "" + +#: ../gio/gthreadedresolver.c:556 ../gio/gthreadedresolver.c:734 #, fuzzy, c-format -msgid "Error trashing file: %s" +msgid "Error resolving '%s'" msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/glocalfile.c:1831 -#, fuzzy, c-format -msgid "Unable to create trash dir %s: %s" -msgstr "gat ekki búið til skrána '%s': %s" +#: ../gio/gtlscertificate.c:250 +msgid "Cannot decrypt PEM-encoded private key" +msgstr "" -#: ../gio/glocalfile.c:1852 -msgid "Unable to find toplevel directory for trash" +#: ../gio/gtlscertificate.c:255 +msgid "No PEM-encoded private key found" msgstr "" -#: ../gio/glocalfile.c:1931 ../gio/glocalfile.c:1951 -msgid "Unable to find or create trash directory" +#: ../gio/gtlscertificate.c:265 +msgid "Could not parse PEM-encoded private key" msgstr "" -#: ../gio/glocalfile.c:1985 -#, fuzzy, c-format -msgid "Unable to create trashing info file: %s" -msgstr "gat ekki búið til skrána '%s': %s" +#: ../gio/gtlscertificate.c:290 +msgid "No PEM-encoded certificate found" +msgstr "" -#: ../gio/glocalfile.c:2014 ../gio/glocalfile.c:2019 ../gio/glocalfile.c:2099 -#: ../gio/glocalfile.c:2106 -#, fuzzy, c-format -msgid "Unable to trash file: %s" -msgstr "gat ekki búið til skrána '%s': %s" +#: ../gio/gtlscertificate.c:299 +msgid "Could not parse PEM-encoded certificate" +msgstr "" -#: ../gio/glocalfile.c:2133 -#, fuzzy, c-format -msgid "Error creating directory: %s" -msgstr "Villa við að opna möppuna '%s': %s" +#: ../gio/gtlspassword.c:111 +msgid "" +"This is the last chance to enter the password correctly before your access " +"is locked out." +msgstr "" -#: ../gio/glocalfile.c:2162 -#, fuzzy, c-format -msgid "Filesystem does not support symbolic links" -msgstr "gat ekki lesið tákntengið '%s': %s" +#: ../gio/gtlspassword.c:113 +msgid "" +"Several password entered have been incorrect, and your access will be locked " +"out after further failures." +msgstr "" -#: ../gio/glocalfile.c:2166 -#, fuzzy, c-format -msgid "Error making symbolic link: %s" -msgstr "Villa við umbreytingu: %s" +#: ../gio/gtlspassword.c:115 +msgid "The password entered is incorrect." +msgstr "" -#: ../gio/glocalfile.c:2228 ../gio/glocalfile.c:2322 -#, fuzzy, c-format -msgid "Error moving file: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../gio/gunixconnection.c:166 ../gio/gunixconnection.c:561 +#, c-format +msgid "Expecting 1 control message, got %d" +msgid_plural "Expecting 1 control message, got %d" +msgstr[0] "" +msgstr[1] "" -#: ../gio/glocalfile.c:2251 -msgid "Can't move directory over directory" +#: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:573 +msgid "Unexpected type of ancillary data" msgstr "" -#: ../gio/glocalfile.c:2278 ../gio/glocalfileoutputstream.c:955 -#: ../gio/glocalfileoutputstream.c:969 ../gio/glocalfileoutputstream.c:984 -#: ../gio/glocalfileoutputstream.c:1000 ../gio/glocalfileoutputstream.c:1014 -msgid "Backup file creation failed" +#: ../gio/gunixconnection.c:200 +#, c-format +msgid "Expecting one fd, but got %d\n" +msgid_plural "Expecting one fd, but got %d\n" +msgstr[0] "" +msgstr[1] "" + +#: ../gio/gunixconnection.c:219 +msgid "Received invalid fd" msgstr "" -#: ../gio/glocalfile.c:2297 -#, fuzzy, c-format -msgid "Error removing target file: %s" +#: ../gio/gunixconnection.c:355 +#, fuzzy +msgid "Error sending credentials: " msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/glocalfile.c:2311 -msgid "Move between mounts not supported" +#: ../gio/gunixconnection.c:503 +#, c-format +msgid "Error checking if SO_PASSCRED is enabled for socket: %s" msgstr "" -#: ../gio/glocalfileinfo.c:719 -msgid "Attribute value must be non-NULL" +#: ../gio/gunixconnection.c:518 +#, fuzzy, c-format +msgid "Error enabling SO_PASSCRED: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" + +#: ../gio/gunixconnection.c:547 +msgid "" +"Expecting to read a single byte for receiving credentials but read zero bytes" msgstr "" -#: ../gio/glocalfileinfo.c:726 -msgid "Invalid attribute type (string expected)" +#: ../gio/gunixconnection.c:587 +#, c-format +msgid "Not expecting control message, but got %d" msgstr "" -#: ../gio/glocalfileinfo.c:733 -#, fuzzy -msgid "Invalid extended attribute name" -msgstr "Skjalið endar óvænt inn í heiti eiginleika" +#: ../gio/gunixconnection.c:611 +#, c-format +msgid "Error while disabling SO_PASSCRED: %s" +msgstr "" -#: ../gio/glocalfileinfo.c:773 +#: ../gio/gunixinputstream.c:370 ../gio/gunixinputstream.c:391 #, fuzzy, c-format -msgid "Error setting extended attribute '%s': %s" -msgstr "Villa við að opna möppuna '%s': %s" +msgid "Error reading from file descriptor: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/glocalfileinfo.c:1482 ../gio/glocalfileoutputstream.c:833 +#: ../gio/gunixinputstream.c:424 ../gio/gunixoutputstream.c:410 #, fuzzy, c-format -msgid "Error stating file '%s': %s" +msgid "Error closing file descriptor: %s" msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/glocalfileinfo.c:1566 -msgid " (invalid encoding)" +#: ../gio/gunixmounts.c:2099 ../gio/gunixmounts.c:2152 +msgid "Filesystem root" msgstr "" -#: ../gio/glocalfileinfo.c:1768 +#: ../gio/gunixoutputstream.c:356 ../gio/gunixoutputstream.c:377 #, fuzzy, c-format -msgid "Error stating file descriptor: %s" +msgid "Error writing to file descriptor: %s" msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/glocalfileinfo.c:1813 -msgid "Invalid attribute type (uint32 expected)" +#: ../gio/gunixsocketaddress.c:232 +msgid "Abstract UNIX domain socket addresses not supported on this system" msgstr "" -#: ../gio/glocalfileinfo.c:1831 -msgid "Invalid attribute type (uint64 expected)" +#: ../gio/gvolume.c:437 +msgid "volume doesn't implement eject" msgstr "" -#: ../gio/glocalfileinfo.c:1850 ../gio/glocalfileinfo.c:1869 -msgid "Invalid attribute type (byte string expected)" +#. Translators: This is an error +#. * message for volume objects that +#. * don't implement any of eject or eject_with_operation. +#: ../gio/gvolume.c:514 +msgid "volume doesn't implement eject or eject_with_operation" msgstr "" -#: ../gio/glocalfileinfo.c:1904 -#, fuzzy -msgid "Cannot set permissions on symlinks" -msgstr "Villa við umbreytingu: %s" +#: ../gio/gwin32appinfo.c:274 +msgid "Can't find application" +msgstr "" -#: ../gio/glocalfileinfo.c:1920 +#: ../gio/gwin32appinfo.c:303 #, fuzzy, c-format -msgid "Error setting permissions: %s" +msgid "Error launching application: %s" msgstr "Villa við umbreytingu: %s" -#: ../gio/glocalfileinfo.c:1971 -#, fuzzy, c-format -msgid "Error setting owner: %s" -msgstr "Villa við umbreytingu: %s" +#: ../gio/gwin32appinfo.c:378 +msgid "association changes not supported on win32" +msgstr "" -#: ../gio/glocalfileinfo.c:1994 -msgid "symlink must be non-NULL" +#: ../gio/gwin32appinfo.c:390 +msgid "Association creation not supported on win32" msgstr "" -#: ../gio/glocalfileinfo.c:2004 ../gio/glocalfileinfo.c:2023 -#: ../gio/glocalfileinfo.c:2034 +#: ../gio/gwin32inputstream.c:344 #, fuzzy, c-format -msgid "Error setting symlink: %s" -msgstr "Villa á línu %d: %s" +msgid "Error reading from handle: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/glocalfileinfo.c:2013 -msgid "Error setting symlink: file is not a symlink" -msgstr "" +#: ../gio/gwin32inputstream.c:388 ../gio/gwin32outputstream.c:375 +#, fuzzy, c-format +msgid "Error closing handle: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/glocalfileinfo.c:2139 +#: ../gio/gwin32outputstream.c:331 #, fuzzy, c-format -msgid "Error setting modification or access time: %s" -msgstr "Villa við umbreytingu: %s" +msgid "Error writing to handle: %s" +msgstr "Villa við lestur skráarinnar '%s': %s" -#: ../gio/glocalfileinfo.c:2162 -msgid "SELinux context must be non-NULL" +#: ../gio/gzlibcompressor.c:394 ../gio/gzlibdecompressor.c:347 +msgid "Not enough memory" +msgstr "" + +#: ../gio/gzlibcompressor.c:401 ../gio/gzlibdecompressor.c:354 +#, c-format +msgid "Internal error: %s" +msgstr "" + +#: ../gio/gzlibcompressor.c:414 ../gio/gzlibdecompressor.c:368 +msgid "Need more input" +msgstr "" + +#: ../gio/gzlibdecompressor.c:340 +#, fuzzy +msgid "Invalid compressed data" +msgstr "Ógilt vélarheiti" + +#: ../gio/tests/gdbus-daemon.c:18 +msgid "Address to listen on" +msgstr "" + +#: ../gio/tests/gdbus-daemon.c:19 +msgid "Ignored, for compat with GTestDbus" +msgstr "" + +#: ../gio/tests/gdbus-daemon.c:20 +msgid "Print address" +msgstr "" + +#: ../gio/tests/gdbus-daemon.c:21 +msgid "Print address in shell mode" +msgstr "" + +#: ../gio/tests/gdbus-daemon.c:28 +msgid "Run a dbus service" +msgstr "" + +#: ../gio/tests/gdbus-daemon.c:42 +#, c-format +msgid "Wrong args\n" +msgstr "" + +#: ../glib/gbookmarkfile.c:755 +#, fuzzy, c-format +msgid "Unexpected attribute '%s' for element '%s'" +msgstr "" +"Undarlegt tákn '%s', átti von á '=' eftir heiti eiginleika '%s' af mengi '%s'" + +#: ../glib/gbookmarkfile.c:766 ../glib/gbookmarkfile.c:837 +#: ../glib/gbookmarkfile.c:847 ../glib/gbookmarkfile.c:954 +#, c-format +msgid "Attribute '%s' of element '%s' not found" +msgstr "" + +#: ../glib/gbookmarkfile.c:1124 ../glib/gbookmarkfile.c:1189 +#: ../glib/gbookmarkfile.c:1253 ../glib/gbookmarkfile.c:1263 +#, c-format +msgid "Unexpected tag '%s', tag '%s' expected" +msgstr "" + +#: ../glib/gbookmarkfile.c:1149 ../glib/gbookmarkfile.c:1163 +#: ../glib/gbookmarkfile.c:1231 +#, c-format +msgid "Unexpected tag '%s' inside '%s'" +msgstr "" + +#: ../glib/gbookmarkfile.c:1756 +msgid "No valid bookmark file found in data dirs" +msgstr "" + +#: ../glib/gbookmarkfile.c:1957 +#, c-format +msgid "A bookmark for URI '%s' already exists" +msgstr "" + +#: ../glib/gbookmarkfile.c:2003 ../glib/gbookmarkfile.c:2161 +#: ../glib/gbookmarkfile.c:2246 ../glib/gbookmarkfile.c:2326 +#: ../glib/gbookmarkfile.c:2411 ../glib/gbookmarkfile.c:2494 +#: ../glib/gbookmarkfile.c:2572 ../glib/gbookmarkfile.c:2651 +#: ../glib/gbookmarkfile.c:2693 ../glib/gbookmarkfile.c:2790 +#: ../glib/gbookmarkfile.c:2910 ../glib/gbookmarkfile.c:3100 +#: ../glib/gbookmarkfile.c:3176 ../glib/gbookmarkfile.c:3344 +#: ../glib/gbookmarkfile.c:3433 ../glib/gbookmarkfile.c:3522 +#: ../glib/gbookmarkfile.c:3638 +#, c-format +msgid "No bookmark found for URI '%s'" +msgstr "" + +#: ../glib/gbookmarkfile.c:2335 +#, c-format +msgid "No MIME type defined in the bookmark for URI '%s'" +msgstr "" + +#: ../glib/gbookmarkfile.c:2420 +#, c-format +msgid "No private flag has been defined in bookmark for URI '%s'" +msgstr "" + +#: ../glib/gbookmarkfile.c:2799 +#, c-format +msgid "No groups set in bookmark for URI '%s'" +msgstr "" + +#: ../glib/gbookmarkfile.c:3197 ../glib/gbookmarkfile.c:3354 +#, c-format +msgid "No application with name '%s' registered a bookmark for '%s'" +msgstr "" + +#: ../glib/gbookmarkfile.c:3377 +#, fuzzy, c-format +msgid "Failed to expand exec line '%s' with URI '%s'" +msgstr "gat ekki lesið tákntengið '%s': %s" + +#: ../glib/gconvert.c:477 ../glib/gutf8.c:833 ../glib/gutf8.c:1044 +#: ../glib/gutf8.c:1181 ../glib/gutf8.c:1285 +msgid "Partial character sequence at end of input" +msgstr "Ókláruð stafaruna í enda ílags" + +#: ../glib/gconvert.c:742 +#, c-format +msgid "Cannot convert fallback '%s' to codeset '%s'" +msgstr "Gat ekki umbreytt '%s' í stafatöflu '%s'" + +#: ../glib/gconvert.c:1566 +#, fuzzy, c-format +msgid "The URI '%s' is not an absolute URI using the \"file\" scheme" +msgstr "URI '%s' er ekki fullt URI sem notar 'file' skemuna" + +#: ../glib/gconvert.c:1576 +#, c-format +msgid "The local file URI '%s' may not include a '#'" +msgstr "Skráar-URI '%s' má ekki innihalda '#'" + +#: ../glib/gconvert.c:1593 +#, c-format +msgid "The URI '%s' is invalid" +msgstr "URI '%s' er ógilt" + +#: ../glib/gconvert.c:1605 +#, c-format +msgid "The hostname of the URI '%s' is invalid" +msgstr "Vélarheitið í URI '%s' er ógilt" + +#: ../glib/gconvert.c:1621 +#, c-format +msgid "The URI '%s' contains invalidly escaped characters" +msgstr "URI '%s' inniheldur ógild sértákn" + +#: ../glib/gconvert.c:1716 +#, c-format +msgid "The pathname '%s' is not an absolute path" +msgstr "Slóðin '%s' er ekki full slóð" + +#: ../glib/gconvert.c:1726 +msgid "Invalid hostname" +msgstr "Ógilt vélarheiti" + +#. Translators: 'before midday' indicator +#: ../glib/gdatetime.c:201 +msgctxt "GDateTime" +msgid "AM" +msgstr "fh" + +#. Translators: 'after midday' indicator +#: ../glib/gdatetime.c:203 +msgctxt "GDateTime" +msgid "PM" +msgstr "eh" + +#. Translators: this is the preferred format for expressing the date and the time +#: ../glib/gdatetime.c:206 +msgctxt "GDateTime" +msgid "%a %b %e %H:%M:%S %Y" +msgstr "%a %e.%b %Y, %T %Z" + +#. Translators: this is the preferred format for expressing the date +#: ../glib/gdatetime.c:209 +msgctxt "GDateTime" +msgid "%m/%d/%y" +msgstr "%d/%m/%y" + +#. Translators: this is the preferred format for expressing the time +#: ../glib/gdatetime.c:212 +msgctxt "GDateTime" +msgid "%H:%M:%S" +msgstr "%H:%M:%S" + +#. Translators: this is the preferred format for expressing 12 hour time +#: ../glib/gdatetime.c:215 +msgctxt "GDateTime" +msgid "%I:%M:%S %p" +msgstr "%I:%M:%S %p" + +#: ../glib/gdatetime.c:228 +msgctxt "full month name" +msgid "January" +msgstr "janúar" + +#: ../glib/gdatetime.c:230 +msgctxt "full month name" +msgid "February" +msgstr "febrúar" + +#: ../glib/gdatetime.c:232 +msgctxt "full month name" +msgid "March" +msgstr "mars" + +#: ../glib/gdatetime.c:234 +msgctxt "full month name" +msgid "April" +msgstr "apríl" + +#: ../glib/gdatetime.c:236 +msgctxt "full month name" +msgid "May" +msgstr "maí" + +#: ../glib/gdatetime.c:238 +msgctxt "full month name" +msgid "June" +msgstr "júní" + +#: ../glib/gdatetime.c:240 +msgctxt "full month name" +msgid "July" +msgstr "júlí" + +#: ../glib/gdatetime.c:242 +msgctxt "full month name" +msgid "August" +msgstr "ágúst" + +#: ../glib/gdatetime.c:244 +msgctxt "full month name" +msgid "September" +msgstr "september" + +#: ../glib/gdatetime.c:246 +msgctxt "full month name" +msgid "October" +msgstr "október" + +#: ../glib/gdatetime.c:248 +msgctxt "full month name" +msgid "November" +msgstr "nóvember" + +#: ../glib/gdatetime.c:250 +msgctxt "full month name" +msgid "December" +msgstr "desember" + +#: ../glib/gdatetime.c:265 +msgctxt "abbreviated month name" +msgid "Jan" +msgstr "jan" + +#: ../glib/gdatetime.c:267 +msgctxt "abbreviated month name" +msgid "Feb" +msgstr "feb" + +#: ../glib/gdatetime.c:269 +msgctxt "abbreviated month name" +msgid "Mar" +msgstr "mar" + +#: ../glib/gdatetime.c:271 +msgctxt "abbreviated month name" +msgid "Apr" +msgstr "apr" + +#: ../glib/gdatetime.c:273 +msgctxt "abbreviated month name" +msgid "May" +msgstr "maí" + +#: ../glib/gdatetime.c:275 +msgctxt "abbreviated month name" +msgid "Jun" +msgstr "jún" + +#: ../glib/gdatetime.c:277 +msgctxt "abbreviated month name" +msgid "Jul" +msgstr "júl" + +#: ../glib/gdatetime.c:279 +msgctxt "abbreviated month name" +msgid "Aug" +msgstr "ágú" + +#: ../glib/gdatetime.c:281 +msgctxt "abbreviated month name" +msgid "Sep" +msgstr "sep" + +#: ../glib/gdatetime.c:283 +msgctxt "abbreviated month name" +msgid "Oct" +msgstr "okt" + +#: ../glib/gdatetime.c:285 +msgctxt "abbreviated month name" +msgid "Nov" +msgstr "nóv" + +#: ../glib/gdatetime.c:287 +msgctxt "abbreviated month name" +msgid "Dec" +msgstr "des" + +#: ../glib/gdatetime.c:302 +msgctxt "full weekday name" +msgid "Monday" +msgstr "mánudagur" + +#: ../glib/gdatetime.c:304 +msgctxt "full weekday name" +msgid "Tuesday" +msgstr "þriðjudagur" + +#: ../glib/gdatetime.c:306 +msgctxt "full weekday name" +msgid "Wednesday" +msgstr "miðvikudagur" + +#: ../glib/gdatetime.c:308 +msgctxt "full weekday name" +msgid "Thursday" +msgstr "fimmtudagur" + +#: ../glib/gdatetime.c:310 +msgctxt "full weekday name" +msgid "Friday" +msgstr "föstudagur" + +#: ../glib/gdatetime.c:312 +msgctxt "full weekday name" +msgid "Saturday" +msgstr "laugardagur" + +#: ../glib/gdatetime.c:314 +msgctxt "full weekday name" +msgid "Sunday" +msgstr "sunnudagur" + +#: ../glib/gdatetime.c:329 +msgctxt "abbreviated weekday name" +msgid "Mon" +msgstr "mán" + +#: ../glib/gdatetime.c:331 +msgctxt "abbreviated weekday name" +msgid "Tue" +msgstr "þri" + +#: ../glib/gdatetime.c:333 +msgctxt "abbreviated weekday name" +msgid "Wed" +msgstr "mið" + +#: ../glib/gdatetime.c:335 +msgctxt "abbreviated weekday name" +msgid "Thu" +msgstr "fim" + +#: ../glib/gdatetime.c:337 +msgctxt "abbreviated weekday name" +msgid "Fri" +msgstr "fös" + +#: ../glib/gdatetime.c:339 +msgctxt "abbreviated weekday name" +msgid "Sat" +msgstr "lau" + +#: ../glib/gdatetime.c:341 +msgctxt "abbreviated weekday name" +msgid "Sun" +msgstr "sun" + +#: ../glib/gdir.c:155 +#, c-format +msgid "Error opening directory '%s': %s" +msgstr "Villa við að opna möppuna '%s': %s" + +#: ../glib/gfileutils.c:700 ../glib/gfileutils.c:792 +#, fuzzy, c-format +#| msgid "Could not allocate %lu bytes to read file \"%s\"" +msgid "Could not allocate %lu byte to read file \"%s\"" +msgid_plural "Could not allocate %lu bytes to read file \"%s\"" +msgstr[0] "Gat ekki frátekið %lu bæti til að lesa skrána \"%s\"" +msgstr[1] "Gat ekki frátekið %lu bæti til að lesa skrána \"%s\"" + +#: ../glib/gfileutils.c:717 +#, c-format +msgid "Error reading file '%s': %s" +msgstr "Villa við lestur skráarinnar '%s': %s" + +#: ../glib/gfileutils.c:753 +#, c-format +msgid "File \"%s\" is too large" +msgstr "Skráin \"%s\" er of stór" + +#: ../glib/gfileutils.c:817 +#, c-format +msgid "Failed to read from file '%s': %s" +msgstr "Gat ekki lesið úr skránni '%s': %s" + +#: ../glib/gfileutils.c:865 ../glib/gfileutils.c:937 +#, c-format +msgid "Failed to open file '%s': %s" +msgstr "Gat ekki opnað skrána '%s': %s" + +#: ../glib/gfileutils.c:877 +#, c-format +msgid "Failed to get attributes of file '%s': fstat() failed: %s" +msgstr "gat ekki lesið eiginleika skráarinnar '%s': fstat() brást: %s" + +#: ../glib/gfileutils.c:907 +#, c-format +msgid "Failed to open file '%s': fdopen() failed: %s" +msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" + +#: ../glib/gfileutils.c:1006 +#, fuzzy, c-format +msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s" +msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" + +#: ../glib/gfileutils.c:1041 ../glib/gfileutils.c:1540 +#, c-format +msgid "Failed to create file '%s': %s" +msgstr "gat ekki búið til skrána '%s': %s" + +#: ../glib/gfileutils.c:1068 +#, fuzzy, c-format +msgid "Failed to write file '%s': write() failed: %s" +msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" + +#: ../glib/gfileutils.c:1111 +#, fuzzy, c-format +msgid "Failed to write file '%s': fsync() failed: %s" +msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" + +#: ../glib/gfileutils.c:1235 +#, c-format +msgid "Existing file '%s' could not be removed: g_unlink() failed: %s" +msgstr "" + +#: ../glib/gfileutils.c:1506 +#, c-format +msgid "Template '%s' invalid, should not contain a '%s'" +msgstr "Sniðmátið '%s' er ógilt og ætti ekki að innihalda '%s'" + +#: ../glib/gfileutils.c:1519 +#, fuzzy, c-format +msgid "Template '%s' doesn't contain XXXXXX" +msgstr "Sniðmátið '%s' endar ekki á XXXXXX" + +#: ../glib/gfileutils.c:2038 +#, c-format +msgid "Failed to read the symbolic link '%s': %s" +msgstr "gat ekki lesið tákntengið '%s': %s" + +#: ../glib/gfileutils.c:2057 +msgid "Symbolic links not supported" +msgstr "Tákntengi eru ekki studd" + +#: ../glib/giochannel.c:1388 +#, fuzzy, c-format +msgid "Could not open converter from '%s' to '%s': %s" +msgstr "Gat ekki opnað umbreyti úr '%s' í '%s': %s" + +#: ../glib/giochannel.c:1733 +msgid "Can't do a raw read in g_io_channel_read_line_string" +msgstr "Gat ekki lesið í g_io_channel_read_line_string" + +#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038 +#: ../glib/giochannel.c:2125 +msgid "Leftover unconverted data in read buffer" +msgstr "Það eru eftir óumbreytt gögn í lesminninu" + +#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938 +msgid "Channel terminates in a partial character" +msgstr "Rásin endar á hluta úr tákni" + +#: ../glib/giochannel.c:1924 +msgid "Can't do a raw read in g_io_channel_read_to_end" +msgstr "Gat ekki lesið í g_io_channel_read_to_end" + +#: ../glib/gkeyfile.c:737 +msgid "Valid key file could not be found in search dirs" +msgstr "" + +#: ../glib/gkeyfile.c:773 +msgid "Not a regular file" +msgstr "" + +#: ../glib/gkeyfile.c:1173 +#, c-format +msgid "" +"Key file contains line '%s' which is not a key-value pair, group, or comment" +msgstr "" + +#: ../glib/gkeyfile.c:1230 +#, fuzzy, c-format +msgid "Invalid group name: %s" +msgstr "Ógilt vélarheiti" + +#: ../glib/gkeyfile.c:1252 +msgid "Key file does not start with a group" +msgstr "" + +#: ../glib/gkeyfile.c:1278 +#, fuzzy, c-format +msgid "Invalid key name: %s" +msgstr "Ógilt vélarheiti" + +#: ../glib/gkeyfile.c:1305 +#, c-format +msgid "Key file contains unsupported encoding '%s'" +msgstr "" + +#: ../glib/gkeyfile.c:1548 ../glib/gkeyfile.c:1721 ../glib/gkeyfile.c:3099 +#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3288 ../glib/gkeyfile.c:3418 +#: ../glib/gkeyfile.c:3560 ../glib/gkeyfile.c:3789 ../glib/gkeyfile.c:3856 +#, c-format +msgid "Key file does not have group '%s'" +msgstr "" + +#: ../glib/gkeyfile.c:1676 +#, c-format +msgid "Key file does not have key '%s' in group '%s'" +msgstr "" + +#: ../glib/gkeyfile.c:1838 ../glib/gkeyfile.c:1954 +#, c-format +msgid "Key file contains key '%s' with value '%s' which is not UTF-8" +msgstr "" + +#: ../glib/gkeyfile.c:1858 ../glib/gkeyfile.c:1974 ../glib/gkeyfile.c:2343 +#, c-format +msgid "" +"Key file contains key '%s' which has a value that cannot be interpreted." +msgstr "" + +#: ../glib/gkeyfile.c:2560 ../glib/gkeyfile.c:2928 +#, c-format +msgid "" +"Key file contains key '%s' in group '%s' which has a value that cannot be " +"interpreted." +msgstr "" + +#: ../glib/gkeyfile.c:2638 ../glib/gkeyfile.c:2715 +#, c-format +msgid "Key '%s' in group '%s' has value '%s' where %s was expected" +msgstr "" + +#: ../glib/gkeyfile.c:4096 +msgid "Key file contains escape character at end of line" +msgstr "" + +#: ../glib/gkeyfile.c:4118 +#, fuzzy, c-format +msgid "Key file contains invalid escape sequence '%s'" +msgstr "URI '%s' inniheldur ógild sértákn" + +#: ../glib/gkeyfile.c:4260 +#, c-format +msgid "Value '%s' cannot be interpreted as a number." msgstr "" -#: ../gio/glocalfileinfo.c:2177 -#, fuzzy, c-format -msgid "Error setting SELinux context: %s" -msgstr "Villa við umbreytingu: %s" +#: ../glib/gkeyfile.c:4274 +#, c-format +msgid "Integer value '%s' out of range" +msgstr "" -#: ../gio/glocalfileinfo.c:2184 -msgid "SELinux is not enabled on this system" +#: ../glib/gkeyfile.c:4307 +#, c-format +msgid "Value '%s' cannot be interpreted as a float number." msgstr "" -#: ../gio/glocalfileinfo.c:2276 -#, fuzzy, c-format -msgid "Setting attribute %s not supported" -msgstr "Tákntengi eru ekki studd" +#: ../glib/gkeyfile.c:4331 +#, c-format +msgid "Value '%s' cannot be interpreted as a boolean." +msgstr "" -#: ../gio/glocalfileinputstream.c:185 ../gio/glocalfileoutputstream.c:722 +#: ../glib/gmappedfile.c:129 #, fuzzy, c-format -msgid "Error reading from file: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#| msgid "Failed to get attributes of file '%s': fstat() failed: %s" +msgid "Failed to get attributes of file '%s%s%s%s': fstat() failed: %s" +msgstr "gat ekki lesið eiginleika skráarinnar '%s': fstat() brást: %s" -#: ../gio/glocalfileinputstream.c:216 ../gio/glocalfileinputstream.c:228 -#: ../gio/glocalfileinputstream.c:340 ../gio/glocalfileoutputstream.c:470 -#: ../gio/glocalfileoutputstream.c:1032 +#: ../glib/gmappedfile.c:195 #, fuzzy, c-format -msgid "Error seeking in file: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +msgid "Failed to map %s%s%s%s: mmap() failed: %s" +msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" -#: ../gio/glocalfileinputstream.c:261 ../gio/glocalfileoutputstream.c:256 -#: ../gio/glocalfileoutputstream.c:351 +#: ../glib/gmappedfile.c:261 #, fuzzy, c-format -msgid "Error closing file: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" - -#: ../gio/glocalfilemonitor.c:212 -msgid "Unable to find default local file monitor type" -msgstr "" +msgid "Failed to open file '%s': open() failed: %s" +msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" -#: ../gio/glocalfileoutputstream.c:202 ../gio/glocalfileoutputstream.c:235 -#: ../gio/glocalfileoutputstream.c:743 +#: ../glib/gmarkup.c:398 ../glib/gmarkup.c:440 #, fuzzy, c-format -msgid "Error writing to file: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +msgid "Error on line %d char %d: " +msgstr "Villa á línu %d tákn %d: %s" -#: ../gio/glocalfileoutputstream.c:283 +#: ../glib/gmarkup.c:462 ../glib/gmarkup.c:545 #, fuzzy, c-format -msgid "Error removing old backup link: %s" -msgstr "Villa við umbreytingu: %s" +msgid "Invalid UTF-8 encoded text in name - not valid '%s'" +msgstr "Ógildur UTF-8 þýddur texti" -#: ../gio/glocalfileoutputstream.c:297 ../gio/glocalfileoutputstream.c:310 +#: ../glib/gmarkup.c:473 #, fuzzy, c-format -msgid "Error creating backup copy: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +msgid "'%s' is not a valid name" +msgstr "Táknið '%s' er ekki gilt í heitum viðfanga" -#: ../gio/glocalfileoutputstream.c:328 +#: ../glib/gmarkup.c:489 #, fuzzy, c-format -msgid "Error renaming temporary file: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +msgid "'%s' is not a valid name: '%c'" +msgstr "Táknið '%s' er ekki gilt í heitum viðfanga" -#: ../gio/glocalfileoutputstream.c:516 ../gio/glocalfileoutputstream.c:1083 -#, fuzzy, c-format -msgid "Error truncating file: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/gmarkup.c:599 +#, c-format +msgid "Error on line %d: %s" +msgstr "Villa á línu %d: %s" -#: ../gio/glocalfileoutputstream.c:577 ../gio/glocalfileoutputstream.c:630 -#: ../gio/glocalfileoutputstream.c:675 ../gio/glocalfileoutputstream.c:815 -#: ../gio/glocalfileoutputstream.c:1064 ../gio/glocalfileoutputstream.c:1163 +#: ../glib/gmarkup.c:683 #, fuzzy, c-format -msgid "Error opening file '%s': %s" -msgstr "Villa við lestur skráarinnar '%s': %s" - -#: ../gio/glocalfileoutputstream.c:846 -msgid "Target file is a directory" +msgid "" +"Failed to parse '%-.*s', which should have been a digit inside a character " +"reference (ê for example) - perhaps the digit is too large" msgstr "" +"Gat ekki þáttað '%s' sem ætti að vera tölustafur innan í tilvísun í tákn " +"(til dæmis ê). Ef til vill er talan of stór" -#: ../gio/glocalfileoutputstream.c:851 -msgid "Target file is not a regular file" +#: ../glib/gmarkup.c:695 +msgid "" +"Character reference did not end with a semicolon; most likely you used an " +"ampersand character without intending to start an entity - escape ampersand " +"as &" msgstr "" +"Viðfangið endar ekki á semikommu; líklega notaðir þú og-merkið án þess að " +"ætla að byrja viðfang. Ritaðu það sem &" -#: ../gio/glocalfileoutputstream.c:863 -msgid "The file was externally modified" +#: ../glib/gmarkup.c:721 +#, fuzzy, c-format +msgid "Character reference '%-.*s' does not encode a permitted character" +msgstr "Tákntilvísunin '%s' vísar ekki í leyfilegt tákn" + +#: ../glib/gmarkup.c:759 +msgid "" +"Empty entity '&;' seen; valid entities are: & " < > '" msgstr "" +"Tómt viðfang '&;' fannst; gild viðföng eru: & " < > '" -#: ../gio/glocalfileoutputstream.c:1048 +#: ../glib/gmarkup.c:767 #, fuzzy, c-format -msgid "Error removing old file: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +msgid "Entity name '%-.*s' is not known" +msgstr "Viðfangið '%s' er óþekkt" -#: ../gio/gmemoryinputstream.c:486 ../gio/gmemoryoutputstream.c:746 -msgid "Invalid GSeekType supplied" +#: ../glib/gmarkup.c:772 +msgid "" +"Entity did not end with a semicolon; most likely you used an ampersand " +"character without intending to start an entity - escape ampersand as &" msgstr "" +"Viðfangið endar ekki á semikommu; líklega notaðir þú og-merkið án þess að " +"ætla að byrja viðfang. Ritaðu það sem &" -#: ../gio/gmemoryinputstream.c:496 -#, fuzzy -msgid "Invalid seek request" -msgstr "Ógilt vélarheiti" +#: ../glib/gmarkup.c:1178 +msgid "Document must begin with an element (e.g. )" +msgstr "Skjalið verður að byrja á viðfangi (t.d. )" -#: ../gio/gmemoryinputstream.c:520 -msgid "Cannot truncate GMemoryInputStream" +#: ../glib/gmarkup.c:1218 +#, c-format +msgid "" +"'%s' is not a valid character following a '<' character; it may not begin an " +"element name" msgstr "" +"'%s' er ekki gilt tákn strax á eftir '<' tákninu; það má ekki byrja á heiti " +"viðfangs" -#: ../gio/gmemoryoutputstream.c:496 -msgid "Memory output stream not resizable" -msgstr "" +#: ../glib/gmarkup.c:1260 +#, fuzzy, c-format +msgid "" +"Odd character '%s', expected a '>' character to end the empty-element tag " +"'%s'" +msgstr "Undarlegt tákn '%s', átti von á '>' tákninu til að enda viðfangið '%s'" -#: ../gio/gmemoryoutputstream.c:512 -msgid "Failed to resize memory output stream" +#: ../glib/gmarkup.c:1341 +#, c-format +msgid "" +"Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" msgstr "" +"Undarlegt tákn '%s', átti von á '=' eftir heiti eiginleika '%s' af mengi '%s'" -#: ../gio/gmemoryoutputstream.c:600 +#: ../glib/gmarkup.c:1382 +#, c-format msgid "" -"Amount of memory required to process the write is larger than available " -"address space" +"Odd character '%s', expected a '>' or '/' character to end the start tag of " +"element '%s', or optionally an attribute; perhaps you used an invalid " +"character in an attribute name" msgstr "" +"Undarlegt tákn '%s', átti von á '>' eða '/' tákni rtil þess að enda upphafs " +"viðfangi '%s', eða eiginleika; Þú notaðir ef til vill ógilt tákn í heiti " +"eiginleika" -#: ../gio/gmemoryoutputstream.c:756 -msgid "Requested seek before the beginning of the stream" +#: ../glib/gmarkup.c:1426 +#, c-format +msgid "" +"Odd character '%s', expected an open quote mark after the equals sign when " +"giving value for attribute '%s' of element '%s'" msgstr "" +"Undarlegt tákn '%s', átti von á tilvísunarmerki eftir samasem merkinu þegar " +"gildi er gefið með eiginleikanum '%s' af menginu '%s'" -#: ../gio/gmemoryoutputstream.c:765 -msgid "Requested seek beyond the end of the stream" +#: ../glib/gmarkup.c:1559 +#, c-format +msgid "" +"'%s' is not a valid character following the characters ''" msgstr "" +"'%s' er ekki gilt tákn strax á eftir lokun mengis '%s'. Leyfilegt tákn er '>'" -#. Translators: This is an error -#. * message for mount objects that -#. * don't implement eject. -#: ../gio/gmount.c:442 -msgid "mount doesn't implement \"eject\"" -msgstr "" +#: ../glib/gmarkup.c:1606 +#, c-format +msgid "Element '%s' was closed, no element is currently open" +msgstr "Mengið '%s' var lokað og engin önnur mengi eru opin" -#. Translators: This is an error -#. * message for mount objects that -#. * don't implement any of unmount or unmount_with_operation. -#: ../gio/gmount.c:523 -msgid "mount doesn't implement \"unmount\" or \"unmount_with_operation\"" -msgstr "" +#: ../glib/gmarkup.c:1615 +#, c-format +msgid "Element '%s' was closed, but the currently open element is '%s'" +msgstr "Mengið '%s' var lokað en mengið sem nú er opið er '%s'" -#. Translators: This is an error -#. * message for mount objects that -#. * don't implement any of eject or eject_with_operation. -#: ../gio/gmount.c:611 -msgid "mount doesn't implement \"eject\" or \"eject_with_operation\"" -msgstr "" +#: ../glib/gmarkup.c:1768 +msgid "Document was empty or contained only whitespace" +msgstr "Skjalið var tómt eða innihélt einungis orðabil" -#. Translators: This is an error -#. * message for mount objects that -#. * don't implement remount. -#: ../gio/gmount.c:701 -msgid "mount doesn't implement \"remount\"" +#: ../glib/gmarkup.c:1782 +msgid "Document ended unexpectedly just after an open angle bracket '<'" +msgstr "Skjalið endar óvænt rétt eftir opið minna en merki '<'" + +#: ../glib/gmarkup.c:1790 ../glib/gmarkup.c:1835 +#, c-format +msgid "" +"Document ended unexpectedly with elements still open - '%s' was the last " +"element opened" msgstr "" +"Skjalið endar óvænt með mengi sem enn eru opin. '%s' var mengið sem síðast " +"var opnað" -#. Translators: This is an error -#. * message for mount objects that -#. * don't implement content type guessing. -#: ../gio/gmount.c:785 -msgid "mount doesn't implement content type guessing" +#: ../glib/gmarkup.c:1798 +#, c-format +msgid "" +"Document ended unexpectedly, expected to see a close angle bracket ending " +"the tag <%s/>" msgstr "" +"Skjalið endar óvænt. Átti von á að sjá stærraen merki sem lokar taginu <%s/>" -#. Translators: This is an error -#. * message for mount objects that -#. * don't implement content type guessing. -#: ../gio/gmount.c:874 -msgid "mount doesn't implement synchronous content type guessing" +#: ../glib/gmarkup.c:1804 +msgid "Document ended unexpectedly inside an element name" +msgstr "Skjalið endar óvænt inn í heiti mengis" + +#: ../glib/gmarkup.c:1810 +msgid "Document ended unexpectedly inside an attribute name" +msgstr "Skjalið endar óvænt inn í heiti eiginleika" + +#: ../glib/gmarkup.c:1815 +msgid "Document ended unexpectedly inside an element-opening tag." +msgstr "Skjalið endar óvænt inn í tagi sem opnar mengi." + +#: ../glib/gmarkup.c:1821 +msgid "" +"Document ended unexpectedly after the equals sign following an attribute " +"name; no attribute value" msgstr "" +"Skjalið endar óvænt eftir samasem merkið sem fylgir heiti eiginleika og það " +"er ekkert gildi" + +#: ../glib/gmarkup.c:1828 +msgid "Document ended unexpectedly while inside an attribute value" +msgstr "Skjalið endar óvænt inn í gildi eiginleika" -#: ../gio/gnetworkaddress.c:322 +#: ../glib/gmarkup.c:1844 #, c-format -msgid "Hostname '%s' contains '[' but not ']'" -msgstr "" +msgid "Document ended unexpectedly inside the close tag for element '%s'" +msgstr "Skjalið endar óvænt inni í lokunartagi fyrir mengið '%s'" -#: ../gio/goutputstream.c:207 ../gio/goutputstream.c:411 -msgid "Output stream doesn't implement write" -msgstr "" +#: ../glib/gmarkup.c:1850 +msgid "Document ended unexpectedly inside a comment or processing instruction" +msgstr "Skjalið endar óvænt inni í athugasemd eða í miðri skipun" -#: ../gio/goutputstream.c:372 ../gio/goutputstream.c:855 -msgid "Source stream is already closed" +#: ../glib/goption.c:858 +msgid "Usage:" +msgstr "Notkun:" + +#: ../glib/goption.c:858 +msgid "[OPTION...]" msgstr "" -#: ../gio/gresolver.c:779 -#, fuzzy, c-format -msgid "Error resolving '%s': %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/goption.c:974 +msgid "Help Options:" +msgstr "Hjálparvalmöguleikar:" -#: ../gio/gresolver.c:829 -#, fuzzy, c-format -msgid "Error reverse-resolving '%s': %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/goption.c:975 +msgid "Show help options" +msgstr "Birta hjálparmöguleika" -#: ../gio/gresolver.c:864 ../gio/gresolver.c:943 +#: ../glib/goption.c:981 +msgid "Show all help options" +msgstr "Birta alla hjálparmöguleika" + +#: ../glib/goption.c:1043 +msgid "Application Options:" +msgstr "Valmöguleikar forrits:" + +#: ../glib/goption.c:1107 ../glib/goption.c:1177 #, c-format -msgid "No service record for '%s'" +msgid "Cannot parse integer value '%s' for %s" msgstr "" -#: ../gio/gresolver.c:869 ../gio/gresolver.c:948 +#: ../glib/goption.c:1117 ../glib/goption.c:1185 #, c-format -msgid "Temporarily unable to resolve '%s'" +msgid "Integer value '%s' for %s out of range" msgstr "" -#: ../gio/gresolver.c:874 ../gio/gresolver.c:953 -#, fuzzy, c-format -msgid "Error resolving '%s'" -msgstr "Villa við lestur skráarinnar '%s': %s" - -#: ../gio/gsettings-tool.c:60 +#: ../glib/goption.c:1142 #, c-format -msgid "Schema '%s' is not relocatable (path must not be specified)\n" +msgid "Cannot parse double value '%s' for %s" msgstr "" -#: ../gio/gsettings-tool.c:65 ../gio/gsettings-tool.c:82 +#: ../glib/goption.c:1150 #, c-format -msgid "No such schema '%s'\n" +msgid "Double value '%s' for %s out of range" msgstr "" -#: ../gio/gsettings-tool.c:77 +#: ../glib/goption.c:1436 ../glib/goption.c:1515 +#, fuzzy, c-format +msgid "Error parsing option %s" +msgstr "Villa við umbreytingu: %s" + +#: ../glib/goption.c:1546 ../glib/goption.c:1659 #, c-format -msgid "Schema '%s' is relocatable (path must be specified)\n" +msgid "Missing argument for %s" msgstr "" -#: ../gio/gsettings-tool.c:92 +#: ../glib/goption.c:2120 #, c-format -msgid "Empty path given.\n" +msgid "Unknown option %s" msgstr "" -#: ../gio/gsettings-tool.c:98 -#, c-format -msgid "Path must begin with a slash (/)\n" +#: ../glib/gregex.c:258 +msgid "corrupted object" msgstr "" -#: ../gio/gsettings-tool.c:104 -#, c-format -msgid "Path must end with a slash (/)\n" +#: ../glib/gregex.c:260 +msgid "internal error or corrupted object" msgstr "" -#: ../gio/gsettings-tool.c:110 -#, c-format -msgid "Path must not contain two adjacent slashes (//)\n" +#: ../glib/gregex.c:262 +msgid "out of memory" msgstr "" -#: ../gio/gsettings-tool.c:131 -#, c-format -msgid "No such key '%s'\n" +#: ../glib/gregex.c:267 +msgid "backtracking limit reached" msgstr "" -#: ../gio/gsettings-tool.c:504 -#, c-format -msgid "The provided value is outside of the valid range\n" +#: ../glib/gregex.c:279 ../glib/gregex.c:287 +msgid "the pattern contains items not supported for partial matching" msgstr "" -#: ../gio/gsettings-tool.c:533 -msgid "Print help" +#: ../glib/gregex.c:289 +msgid "back references as conditions are not supported for partial matching" msgstr "" -#: ../gio/gsettings-tool.c:539 -msgid "List the installed (non-relocatable) schemas" +#: ../glib/gregex.c:298 +msgid "recursion limit reached" msgstr "" -#: ../gio/gsettings-tool.c:545 -msgid "List the installed relocatable schemas" +#: ../glib/gregex.c:300 +msgid "invalid combination of newline flags" msgstr "" -#: ../gio/gsettings-tool.c:551 -msgid "List the keys in SCHEMA" +#: ../glib/gregex.c:302 +msgid "bad offset" msgstr "" -#: ../gio/gsettings-tool.c:552 ../gio/gsettings-tool.c:558 -#: ../gio/gsettings-tool.c:595 -msgid "SCHEMA[:PATH]" +#: ../glib/gregex.c:304 +msgid "short utf8" msgstr "" -#: ../gio/gsettings-tool.c:557 -msgid "List the children of SCHEMA" +#: ../glib/gregex.c:306 +msgid "recursion loop" msgstr "" -#: ../gio/gsettings-tool.c:563 -msgid "" -"List keys and values, recursively\n" -"If no SCHEMA is given, list all keys\n" +#: ../glib/gregex.c:310 +msgid "unknown error" msgstr "" -#: ../gio/gsettings-tool.c:565 -msgid "[SCHEMA[:PATH]]" +#: ../glib/gregex.c:330 +msgid "\\ at end of pattern" msgstr "" -#: ../gio/gsettings-tool.c:570 -msgid "Get the value of KEY" +#: ../glib/gregex.c:333 +msgid "\\c at end of pattern" msgstr "" -#: ../gio/gsettings-tool.c:571 ../gio/gsettings-tool.c:577 -#: ../gio/gsettings-tool.c:589 ../gio/gsettings-tool.c:601 -msgid "SCHEMA[:PATH] KEY" +#: ../glib/gregex.c:336 +#, fuzzy +msgid "unrecognized character following \\" +msgstr "Hálfkláruð tákntilvísun" + +#: ../glib/gregex.c:339 +msgid "numbers out of order in {} quantifier" msgstr "" -#: ../gio/gsettings-tool.c:576 -msgid "Query the range of valid values for KEY" +#: ../glib/gregex.c:342 +msgid "number too big in {} quantifier" msgstr "" -#: ../gio/gsettings-tool.c:582 -msgid "Set the value of KEY to VALUE" +#: ../glib/gregex.c:345 +#, fuzzy +msgid "missing terminating ] for character class" +msgstr "Rásin endar á hluta úr tákni" + +#: ../glib/gregex.c:348 +#, fuzzy +msgid "invalid escape sequence in character class" +msgstr "Ógild bætaruna í ílagi umbreytingar" + +#: ../glib/gregex.c:351 +msgid "range out of order in character class" msgstr "" -#: ../gio/gsettings-tool.c:583 -msgid "SCHEMA[:PATH] KEY VALUE" +#: ../glib/gregex.c:354 +msgid "nothing to repeat" msgstr "" -#: ../gio/gsettings-tool.c:588 -msgid "Reset KEY to its default value" +#: ../glib/gregex.c:358 +msgid "unexpected repeat" msgstr "" -#: ../gio/gsettings-tool.c:594 -msgid "Reset all keys in SCHEMA to their defaults" +#: ../glib/gregex.c:361 +#, fuzzy +msgid "unrecognized character after (? or (?-" +msgstr "Hálfkláruð tákntilvísun" + +#: ../glib/gregex.c:364 +msgid "POSIX named classes are supported only within a class" msgstr "" -#: ../gio/gsettings-tool.c:600 -msgid "Check if KEY is writable" +#: ../glib/gregex.c:367 +msgid "missing terminating )" msgstr "" -#: ../gio/gsettings-tool.c:606 -msgid "" -"Monitor KEY for changes.\n" -"If no KEY is specified, monitor all keys in SCHEMA.\n" -"Use ^C to stop monitoring.\n" +#: ../glib/gregex.c:370 +msgid "reference to non-existent subpattern" msgstr "" -#: ../gio/gsettings-tool.c:609 -msgid "SCHEMA[:PATH] [KEY]" +#: ../glib/gregex.c:373 +msgid "missing ) after comment" msgstr "" -#: ../gio/gsettings-tool.c:613 -#, c-format -msgid "" -"Unknown command %s\n" -"\n" +#: ../glib/gregex.c:376 +msgid "regular expression is too large" msgstr "" -#: ../gio/gsettings-tool.c:621 -msgid "" -"Usage:\n" -" gsettings COMMAND [ARGS...]\n" -"\n" -"Commands:\n" -" help Show this information\n" -" list-schemas List installed schemas\n" -" list-relocatable-schemas List relocatable schemas\n" -" list-keys List keys in a schema\n" -" list-children List children of a schema\n" -" list-recursively List keys and values, recursively\n" -" range Queries the range of a key\n" -" get Get the value of a key\n" -" set Set the value of a key\n" -" reset Reset the value of a key\n" -" reset-recursively Reset all values in a given schema\n" -" writable Check if a key is writable\n" -" monitor Watch for changes\n" -"\n" -"Use 'gsettings help COMMAND' to get detailed help.\n" -"\n" +#: ../glib/gregex.c:379 +msgid "failed to get memory" msgstr "" -#: ../gio/gsettings-tool.c:643 -#, c-format -msgid "" -"Usage:\n" -" gsettings %s %s\n" -"\n" -"%s\n" -"\n" +#: ../glib/gregex.c:383 +msgid ") without opening (" msgstr "" -#: ../gio/gsettings-tool.c:648 -msgid "Arguments:\n" +#: ../glib/gregex.c:387 +msgid "code overflow" msgstr "" -#: ../gio/gsettings-tool.c:652 -msgid " COMMAND The (optional) command to explain\n" +#: ../glib/gregex.c:391 +#, fuzzy +msgid "unrecognized character after (?<" +msgstr "Hálfkláruð tákntilvísun" + +#: ../glib/gregex.c:394 +msgid "lookbehind assertion is not fixed length" msgstr "" -#: ../gio/gsettings-tool.c:656 -msgid "" -" SCHEMA The name of the schema\n" -" PATH The path, for relocatable schemas\n" +#: ../glib/gregex.c:397 +msgid "malformed number or name after (?(" msgstr "" -#: ../gio/gsettings-tool.c:661 -msgid " KEY The (optional) key within the schema\n" +#: ../glib/gregex.c:400 +msgid "conditional group contains more than two branches" msgstr "" -#: ../gio/gsettings-tool.c:665 -msgid " KEY The key within the schema\n" +#: ../glib/gregex.c:403 +msgid "assertion expected after (?(" msgstr "" -#: ../gio/gsettings-tool.c:669 -msgid " VALUE The value to set\n" +#. translators: '(?R' and '(?[+-]digits' are both meant as (groups of) +#. * sequences here, '(?-54' would be an example for the second group. +#. +#: ../glib/gregex.c:410 +msgid "(?R or (?[+-]digits must be followed by )" msgstr "" -#: ../gio/gsettings-tool.c:766 -#, c-format -msgid "Empty schema name given\n" +#: ../glib/gregex.c:413 +msgid "unknown POSIX class name" msgstr "" -#: ../gio/gsocket.c:275 -msgid "Invalid socket, not initialized" +#: ../glib/gregex.c:416 +#, fuzzy +msgid "POSIX collating elements are not supported" +msgstr "Tákntengi eru ekki studd" + +#: ../glib/gregex.c:419 +msgid "character value in \\x{...} sequence is too large" msgstr "" -#: ../gio/gsocket.c:282 -#, c-format -msgid "Invalid socket, initialization failed due to: %s" +#: ../glib/gregex.c:422 +msgid "invalid condition (?(0)" msgstr "" -#: ../gio/gsocket.c:290 -msgid "Socket is already closed" +#: ../glib/gregex.c:425 +msgid "\\C not allowed in lookbehind assertion" msgstr "" -#: ../gio/gsocket.c:298 ../gio/gsocket.c:2798 ../gio/gsocket.c:2842 -msgid "Socket I/O timed out" +#: ../glib/gregex.c:432 +msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported" msgstr "" -#: ../gio/gsocket.c:464 -#, fuzzy, c-format -msgid "creating GSocket from fd: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/gregex.c:435 +msgid "recursive call could loop indefinitely" +msgstr "" -#: ../gio/gsocket.c:498 ../gio/gsocket.c:514 -#, fuzzy, c-format -msgid "Unable to create socket: %s" -msgstr "gat ekki búið til skrána '%s': %s" +#: ../glib/gregex.c:439 +#, fuzzy +msgid "unrecognized character after (?P" +msgstr "Hálfkláruð tákntilvísun" -#: ../gio/gsocket.c:498 -msgid "Unknown protocol was specified" +#: ../glib/gregex.c:442 +msgid "missing terminator in subpattern name" msgstr "" -#: ../gio/gsocket.c:1268 -#, c-format -msgid "could not get local address: %s" +#: ../glib/gregex.c:445 +msgid "two named subpatterns have the same name" msgstr "" -#: ../gio/gsocket.c:1311 -#, fuzzy, c-format -msgid "could not get remote address: %s" -msgstr "Gat ekki frátekið %lu bæti til að lesa skrána \"%s\"" - -#: ../gio/gsocket.c:1372 -#, c-format -msgid "could not listen: %s" +#: ../glib/gregex.c:448 +msgid "malformed \\P or \\p sequence" msgstr "" -#: ../gio/gsocket.c:1446 -#, fuzzy, c-format -msgid "Error binding to address: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" - -#: ../gio/gsocket.c:1566 -#, fuzzy, c-format -msgid "Error accepting connection: %s" -msgstr "Villa við umbreytingu: %s" +#: ../glib/gregex.c:451 +msgid "unknown property name after \\P or \\p" +msgstr "" -#: ../gio/gsocket.c:1683 -#, fuzzy -msgid "Error connecting: " -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/gregex.c:454 +msgid "subpattern name is too long (maximum 32 characters)" +msgstr "" -#: ../gio/gsocket.c:1688 -msgid "Connection in progress" +#: ../glib/gregex.c:457 +msgid "too many named subpatterns (maximum 10,000)" msgstr "" -#: ../gio/gsocket.c:1695 -#, fuzzy, c-format -msgid "Error connecting: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/gregex.c:460 +msgid "octal value is greater than \\377" +msgstr "" -#: ../gio/gsocket.c:1738 ../gio/gsocket.c:3579 -#, fuzzy, c-format -msgid "Unable to get pending error: %s" -msgstr "gat ekki búið til skrána '%s': %s" +#: ../glib/gregex.c:464 +msgid "overran compiling workspace" +msgstr "" -#: ../gio/gsocket.c:1875 -#, fuzzy, c-format -msgid "Error receiving data: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/gregex.c:468 +msgid "previously-checked referenced subpattern not found" +msgstr "" -#: ../gio/gsocket.c:2050 -#, fuzzy, c-format -msgid "Error sending data: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/gregex.c:471 +msgid "DEFINE group contains more than one branch" +msgstr "" -#: ../gio/gsocket.c:2163 -#, fuzzy, c-format -msgid "Unable to shutdown socket: %s" -msgstr "gat ekki búið til skrána '%s': %s" +#: ../glib/gregex.c:474 +msgid "inconsistent NEWLINE options" +msgstr "" -#: ../gio/gsocket.c:2242 -#, fuzzy, c-format -msgid "Error closing socket: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/gregex.c:477 +msgid "" +"\\g is not followed by a braced, angle-bracketed, or quoted name or number, " +"or by a plain number" +msgstr "" -#: ../gio/gsocket.c:2791 -#, c-format -msgid "Waiting for socket condition: %s" +#: ../glib/gregex.c:481 +msgid "a numbered reference must not be zero" msgstr "" -#: ../gio/gsocket.c:3056 ../gio/gsocket.c:3137 -#, fuzzy, c-format -msgid "Error sending message: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/gregex.c:484 +msgid "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)" +msgstr "" -#: ../gio/gsocket.c:3081 -msgid "GSocketControlMessage not supported on windows" +#: ../glib/gregex.c:487 +msgid "(*VERB) not recognized" msgstr "" -#: ../gio/gsocket.c:3358 ../gio/gsocket.c:3494 -#, fuzzy, c-format -msgid "Error receiving message: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/gregex.c:490 +msgid "number is too big" +msgstr "" -#: ../gio/gsocket.c:3598 -msgid "g_socket_get_credentials not implemented for this OS" +#: ../glib/gregex.c:493 +msgid "missing subpattern name after (?&" msgstr "" -#: ../gio/gsocketclient.c:798 ../gio/gsocketclient.c:1368 -msgid "Unknown error on connect" +#: ../glib/gregex.c:496 +msgid "digit expected after (?+" msgstr "" -#: ../gio/gsocketclient.c:836 ../gio/gsocketclient.c:1252 -msgid "Trying to proxy over non-TCP connection is not supported." +#: ../glib/gregex.c:499 +msgid "] is an invalid data character in JavaScript compatibility mode" msgstr "" -#: ../gio/gsocketclient.c:858 ../gio/gsocketclient.c:1277 -#, fuzzy, c-format -msgid "Proxy protocol '%s' is not supported." -msgstr "Tákntengi eru ekki studd" +#: ../glib/gregex.c:502 +msgid "different names for subpatterns of the same number are not allowed" +msgstr "" -#: ../gio/gsocketlistener.c:191 -msgid "Listener is already closed" +#: ../glib/gregex.c:505 +msgid "(*MARK) must have an argument" msgstr "" -#: ../gio/gsocketlistener.c:232 -msgid "Added socket is closed" +#: ../glib/gregex.c:508 +msgid "\\c must be followed by an ASCII character" msgstr "" -#: ../gio/gsocks4aproxy.c:121 -#, c-format -msgid "SOCKSv4 does not support IPv6 address '%s'" +#: ../glib/gregex.c:511 +msgid "\\k is not followed by a braced, angle-bracketed, or quoted name" msgstr "" -#: ../gio/gsocks4aproxy.c:139 -#, c-format -msgid "SOCKSv4 implementation limits username to %i characters" +#: ../glib/gregex.c:514 +#, fuzzy +msgid "\\N is not supported in a class" +msgstr "Tákntengi eru ekki studd" + +#: ../glib/gregex.c:517 +msgid "too many forward references" msgstr "" -#: ../gio/gsocks4aproxy.c:157 -#, c-format -msgid "SOCKSv4a implementation limits hostname to %i characters" +#: ../glib/gregex.c:520 +msgid "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)" msgstr "" -#: ../gio/gsocks4aproxy.c:183 -msgid "The server is not a SOCKSv4 proxy server." +#: ../glib/gregex.c:523 +msgid "character value in \\u.... sequence is too large" msgstr "" -#: ../gio/gsocks4aproxy.c:190 -msgid "Connection through SOCKSv4 server was rejected" +#: ../glib/gregex.c:746 ../glib/gregex.c:1915 +#, c-format +msgid "Error while matching regular expression %s: %s" msgstr "" -#: ../gio/gsocks5proxy.c:155 ../gio/gsocks5proxy.c:328 -#: ../gio/gsocks5proxy.c:338 -msgid "The server is not a SOCKSv5 proxy server." +#: ../glib/gregex.c:1312 +msgid "PCRE library is compiled without UTF8 support" msgstr "" -#: ../gio/gsocks5proxy.c:169 -msgid "The SOCKSv5 proxy requires authentication." +#: ../glib/gregex.c:1316 +msgid "PCRE library is compiled without UTF8 properties support" msgstr "" -#: ../gio/gsocks5proxy.c:179 -msgid "" -"The SOCKSv5 proxy requires an authentication method that is not supported by " -"GLib." +#: ../glib/gregex.c:1324 +msgid "PCRE library is compiled with incompatible options" msgstr "" -#: ../gio/gsocks5proxy.c:208 +#: ../glib/gregex.c:1383 +#, fuzzy, c-format +msgid "Error while compiling regular expression %s at char %d: %s" +msgstr "Villa á línu %d tákn %d: %s" + +#: ../glib/gregex.c:1425 #, c-format -msgid "Username or password is too long for SOCKSv5 protocol (max. is %i)." +msgid "Error while optimizing regular expression %s: %s" msgstr "" -#: ../gio/gsocks5proxy.c:239 -msgid "SOCKSv5 authentication failed due to wrong username or password." +#: ../glib/gregex.c:2347 +msgid "hexadecimal digit or '}' expected" msgstr "" -#: ../gio/gsocks5proxy.c:289 -#, c-format -msgid "Hostname '%s' too long for SOCKSv5 protocol (maximum is %i bytes)" +#: ../glib/gregex.c:2363 +msgid "hexadecimal digit expected" msgstr "" -#: ../gio/gsocks5proxy.c:352 -msgid "The SOCKSv5 proxy server uses unknown address type." +#: ../glib/gregex.c:2403 +msgid "missing '<' in symbolic reference" msgstr "" -#: ../gio/gsocks5proxy.c:359 -msgid "Internal SOCKSv5 proxy server error." -msgstr "" +#: ../glib/gregex.c:2412 +#, fuzzy +msgid "unfinished symbolic reference" +msgstr "Hálfkláruð viðfangatilvísun" -#: ../gio/gsocks5proxy.c:365 -msgid "SOCKSv5 connection not allowed by ruleset." +#: ../glib/gregex.c:2419 +msgid "zero-length symbolic reference" msgstr "" -#: ../gio/gsocks5proxy.c:372 -msgid "Host unreachable through SOCKSv5 server." +#: ../glib/gregex.c:2430 +msgid "digit expected" msgstr "" -#: ../gio/gsocks5proxy.c:378 -msgid "Network unreachable through SOCKSv5 proxy." +#: ../glib/gregex.c:2448 +msgid "illegal symbolic reference" msgstr "" -#: ../gio/gsocks5proxy.c:384 -msgid "Connection refused through SOCKSv5 proxy." +#: ../glib/gregex.c:2510 +msgid "stray final '\\'" msgstr "" -#: ../gio/gsocks5proxy.c:390 -msgid "SOCKSv5 proxy does not support 'connect' command." +#: ../glib/gregex.c:2514 +msgid "unknown escape sequence" msgstr "" -#: ../gio/gsocks5proxy.c:396 -msgid "SOCKSv5 proxy does not support provided address type." +#: ../glib/gregex.c:2524 +#, c-format +msgid "Error while parsing replacement text \"%s\" at char %lu: %s" msgstr "" -#: ../gio/gsocks5proxy.c:402 -msgid "Unknown SOCKSv5 proxy error." -msgstr "" +#: ../glib/gshell.c:96 +msgid "Quoted text doesn't begin with a quotation mark" +msgstr "Tilvísunin byrjar ekki á spurningarmerki" + +#: ../glib/gshell.c:186 +msgid "Unmatched quotation mark in command line or other shell-quoted text" +msgstr "Tilvísunarmerki stemma ekki í skipanalínunni eða öðrum texta" -#: ../gio/gthemedicon.c:498 +#: ../glib/gshell.c:582 #, c-format -msgid "Can't handle version %d of GThemedIcon encoding" -msgstr "" +msgid "Text ended just after a '\\' character. (The text was '%s')" +msgstr "Textinn endaði eftir '\\' tákn. (Textinn var '%s')" -#: ../gio/gtlscertificate.c:226 -msgid "No PEM-encoded private key found" -msgstr "" +#: ../glib/gshell.c:589 +#, c-format +msgid "Text ended before matching quote was found for %c. (The text was '%s')" +msgstr "Textinn endaði áður en samstaða við %c fannst. (Textinn var '%s')" -#: ../gio/gtlscertificate.c:235 -msgid "Could not parse PEM-encoded private key" -msgstr "" +#: ../glib/gshell.c:601 +msgid "Text was empty (or contained only whitespace)" +msgstr "Textinn var tómur (eða innihélt eingöngu orðabil)" -#: ../gio/gtlscertificate.c:260 -msgid "No PEM-encoded certificate found" -msgstr "" +#: ../glib/gspawn.c:209 +#, c-format +msgid "Failed to read data from child process (%s)" +msgstr "Gat ekki lesið gögn frá undirferli (%s)" -#: ../gio/gtlscertificate.c:269 -msgid "Could not parse PEM-encoded certificate" -msgstr "" +#: ../glib/gspawn.c:353 +#, c-format +msgid "Unexpected error in select() reading data from a child process (%s)" +msgstr "Óvæn villa í select() við lestur gagna frá undirferli (%s)" -#: ../gio/gtlspassword.c:114 -msgid "" -"This is the last chance to enter the password correctly before your access " -"is locked out." -msgstr "" +#: ../glib/gspawn.c:438 +#, c-format +msgid "Unexpected error in waitpid() (%s)" +msgstr "Óvæn villa í waitpid() (%s)" -#: ../gio/gtlspassword.c:116 -msgid "" -"Several password entered have been incorrect, and your access will be locked " -"out after further failures." +#: ../glib/gspawn.c:849 ../glib/gspawn-win32.c:1233 +#, c-format +msgid "Child process exited with code %ld" msgstr "" -#: ../gio/gtlspassword.c:118 -msgid "The password entered is incorrect." +#: ../glib/gspawn.c:857 +#, c-format +msgid "Child process killed by signal %ld" msgstr "" -#: ../gio/gunixconnection.c:164 ../gio/gunixconnection.c:521 +#: ../glib/gspawn.c:864 #, c-format -msgid "Expecting 1 control message, got %d" +msgid "Child process stopped by signal %ld" msgstr "" -#: ../gio/gunixconnection.c:177 ../gio/gunixconnection.c:531 -msgid "Unexpected type of ancillary data" +#: ../glib/gspawn.c:871 +#, c-format +msgid "Child process exited abnormally" msgstr "" -#: ../gio/gunixconnection.c:195 +#: ../glib/gspawn.c:1276 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 #, c-format -msgid "Expecting one fd, but got %d\n" -msgstr "" +msgid "Failed to read from child pipe (%s)" +msgstr "Gat ekki lesið úr undirferlispípu (%s)" -#: ../gio/gunixconnection.c:211 -msgid "Received invalid fd" -msgstr "" +#: ../glib/gspawn.c:1346 +#, c-format +msgid "Failed to fork (%s)" +msgstr "Gat ekki ræst (%s)" -#: ../gio/gunixconnection.c:371 -#, fuzzy -msgid "Error sending credentials: " -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/gspawn.c:1495 ../glib/gspawn-win32.c:370 +#, c-format +msgid "Failed to change to directory '%s' (%s)" +msgstr "Gat ekki farið í möppuna '%s' (%s)" -#: ../gio/gunixconnection.c:452 +#: ../glib/gspawn.c:1505 #, c-format -msgid "Error checking if SO_PASSCRED is enabled for socket: %s" -msgstr "" +msgid "Failed to execute child process \"%s\" (%s)" +msgstr "Gat ekki ræst undirferli \"%s\" (%s)" -#: ../gio/gunixconnection.c:461 +#: ../glib/gspawn.c:1515 #, c-format -msgid "" -"Unexpected option length while checking if SO_PASSCRED is enabled for " -"socket. Expected %d bytes, got %d" -msgstr "" +msgid "Failed to redirect output or input of child process (%s)" +msgstr "Gat ekki sent frálag eða ílag underferlis annað (%s)" -#: ../gio/gunixconnection.c:478 -#, fuzzy, c-format -msgid "Error enabling SO_PASSCRED: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/gspawn.c:1524 +#, c-format +msgid "Failed to fork child process (%s)" +msgstr "Gat ekki ræst undirferli (%s)" -#: ../gio/gunixconnection.c:509 -msgid "" -"Expecting to read a single byte for receiving credentials but read zero bytes" -msgstr "" +#: ../glib/gspawn.c:1532 +#, c-format +msgid "Unknown error executing child process \"%s\"" +msgstr "Óþekkt villa við keyrslu undirferlis \"%s\"" -#: ../gio/gunixconnection.c:545 +#: ../glib/gspawn.c:1556 #, c-format -msgid "Not expecting control message, but got %d" -msgstr "" +msgid "Failed to read enough data from child pid pipe (%s)" +msgstr "Gat ekki lesið nægjanleg gögn úr pípunni til undirferlisins (%s)" -#: ../gio/gunixconnection.c:571 +#: ../glib/gspawn-win32.c:283 +msgid "Failed to read data from child process" +msgstr "Gat ekki lesið gögn frá undirferli" + +#: ../glib/gspawn-win32.c:300 #, c-format -msgid "Error while disabling SO_PASSCRED: %s" -msgstr "" +msgid "Failed to create pipe for communicating with child process (%s)" +msgstr "Gat ekki búið til pípu til samskipta við undirferli (%s)" + +#: ../glib/gspawn-win32.c:376 ../glib/gspawn-win32.c:495 +#, c-format +msgid "Failed to execute child process (%s)" +msgstr "Gat ekki keyrt undirferli (%s)" -#: ../gio/gunixinputstream.c:368 ../gio/gunixinputstream.c:388 -#: ../gio/gunixinputstream.c:466 +#: ../glib/gspawn-win32.c:445 #, fuzzy, c-format -msgid "Error reading from unix: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +msgid "Invalid program name: %s" +msgstr "Ógilt vélarheiti" + +#: ../glib/gspawn-win32.c:455 ../glib/gspawn-win32.c:722 +#: ../glib/gspawn-win32.c:1297 +#, c-format +msgid "Invalid string in argument vector at %d: %s" +msgstr "Ógildur strengur í frumgildi vektors í %d: %s" -#: ../gio/gunixinputstream.c:421 ../gio/gunixinputstream.c:601 -#: ../gio/gunixoutputstream.c:407 ../gio/gunixoutputstream.c:556 +#: ../glib/gspawn-win32.c:466 ../glib/gspawn-win32.c:737 +#: ../glib/gspawn-win32.c:1330 #, fuzzy, c-format -msgid "Error closing unix: %s" -msgstr "Villa á línu %d: %s" +msgid "Invalid string in environment: %s" +msgstr "Ógild runa í ílagi umbreytingar" -#: ../gio/gunixmounts.c:1900 ../gio/gunixmounts.c:1937 -msgid "Filesystem root" -msgstr "" +#: ../glib/gspawn-win32.c:718 ../glib/gspawn-win32.c:1278 +#, fuzzy, c-format +msgid "Invalid working directory: %s" +msgstr "Villa við að opna möppuna '%s': %s" -#: ../gio/gunixoutputstream.c:353 ../gio/gunixoutputstream.c:374 -#: ../gio/gunixoutputstream.c:452 +#: ../glib/gspawn-win32.c:783 #, fuzzy, c-format -msgid "Error writing to unix: %s" -msgstr "Villa við umbreytingu: %s" +msgid "Failed to execute helper program (%s)" +msgstr "Gat ekki keyrt hjálparforrit" -#: ../gio/gunixsocketaddress.c:244 -msgid "Abstract unix domain socket addresses not supported on this system" -msgstr "" +#: ../glib/gspawn-win32.c:997 +msgid "" +"Unexpected error in g_io_channel_win32_poll() reading data from a child " +"process" +msgstr "Óvænt villa í g_io_channel_win32_poll() við lestur úr undirferli" -#: ../gio/gvolume.c:408 -msgid "volume doesn't implement eject" -msgstr "" +#: ../glib/gutf8.c:780 +msgid "Failed to allocate memory" +msgstr "Mistókst að úthluta minni" -#. Translators: This is an error -#. * message for volume objects that -#. * don't implement any of eject or eject_with_operation. -#: ../gio/gvolume.c:488 -msgid "volume doesn't implement eject or eject_with_operation" -msgstr "" +#: ../glib/gutf8.c:912 +msgid "Character out of range for UTF-8" +msgstr "Táknið er utan UTF-8 sviðsins" -#: ../gio/gwin32appinfo.c:276 -msgid "Can't find application" -msgstr "" +#: ../glib/gutf8.c:1012 ../glib/gutf8.c:1021 ../glib/gutf8.c:1151 +#: ../glib/gutf8.c:1160 ../glib/gutf8.c:1299 ../glib/gutf8.c:1396 +msgid "Invalid sequence in conversion input" +msgstr "Ógild runa í ílagi umbreytingar" -#: ../gio/gwin32appinfo.c:299 -#, fuzzy, c-format -msgid "Error launching application: %s" -msgstr "Villa við umbreytingu: %s" +#: ../glib/gutf8.c:1310 ../glib/gutf8.c:1407 +msgid "Character out of range for UTF-16" +msgstr "Táknið er utan UTF-16 sviðsins" -#: ../gio/gwin32appinfo.c:335 -#, fuzzy -msgid "URIs not supported" -msgstr "Tákntengi eru ekki studd" +#: ../glib/gutils.c:2116 ../glib/gutils.c:2143 ../glib/gutils.c:2249 +#, c-format +msgid "%u byte" +msgid_plural "%u bytes" +msgstr[0] "%u bæti" +msgstr[1] "%u bæti" -#: ../gio/gwin32appinfo.c:357 -msgid "association changes not supported on win32" -msgstr "" +#: ../glib/gutils.c:2122 +#, c-format +msgid "%.1f KiB" +msgstr "%.1f KiB" -#: ../gio/gwin32appinfo.c:369 -msgid "Association creation not supported on win32" -msgstr "" +#: ../glib/gutils.c:2124 +#, c-format +msgid "%.1f MiB" +msgstr "%.1f MiB" -#: ../gio/gwin32inputstream.c:318 -#, fuzzy, c-format -msgid "Error reading from handle: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/gutils.c:2127 +#, c-format +msgid "%.1f GiB" +msgstr "%.1f GiB" -#: ../gio/gwin32inputstream.c:348 ../gio/gwin32outputstream.c:348 -#, fuzzy, c-format -msgid "Error closing handle: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/gutils.c:2130 +#, c-format +msgid "%.1f TiB" +msgstr "%.1f TiB" -#: ../gio/gwin32outputstream.c:318 -#, fuzzy, c-format -msgid "Error writing to handle: %s" -msgstr "Villa við lestur skráarinnar '%s': %s" +#: ../glib/gutils.c:2133 +#, c-format +msgid "%.1f PiB" +msgstr "%.1f PiB" -#: ../gio/gzlibcompressor.c:396 ../gio/gzlibdecompressor.c:349 -msgid "Not enough memory" -msgstr "" +#: ../glib/gutils.c:2136 +#, c-format +msgid "%.1f EiB" +msgstr "%.1f EiB" -#: ../gio/gzlibcompressor.c:403 ../gio/gzlibdecompressor.c:356 +#: ../glib/gutils.c:2149 #, c-format -msgid "Internal error: %s" -msgstr "" +msgid "%.1f kB" +msgstr "%.1f kB" -#: ../gio/gzlibcompressor.c:416 ../gio/gzlibdecompressor.c:370 -msgid "Need more input" -msgstr "" +#: ../glib/gutils.c:2152 ../glib/gutils.c:2267 +#, c-format +msgid "%.1f MB" +msgstr "%.1f MB" + +#: ../glib/gutils.c:2155 ../glib/gutils.c:2272 +#, c-format +msgid "%.1f GB" +msgstr "%.1f GB" + +#: ../glib/gutils.c:2157 ../glib/gutils.c:2277 +#, c-format +msgid "%.1f TB" +msgstr "%.1f TB" + +#: ../glib/gutils.c:2160 ../glib/gutils.c:2282 +#, c-format +msgid "%.1f PB" +msgstr "%.1f PB" + +#: ../glib/gutils.c:2163 ../glib/gutils.c:2287 +#, c-format +msgid "%.1f EB" +msgstr "%.1f EB" + +#. Translators: the %s in "%s bytes" will always be replaced by a number. +#: ../glib/gutils.c:2200 +#, c-format +msgid "%s byte" +msgid_plural "%s bytes" +msgstr[0] "%s bæti" +msgstr[1] "%s bæti" + +#. Translators: this is from the deprecated function g_format_size_for_display() which uses 'KB' to +#. * mean 1024 bytes. I am aware that 'KB' is not correct, but it has been preserved for reasons of +#. * compatibility. Users will not see this string unless a program is using this deprecated function. +#. * Please translate as literally as possible. +#. +#: ../glib/gutils.c:2262 +#, c-format +msgid "%.1f KB" +msgstr "%.1f KB" -#: ../gio/gzlibdecompressor.c:342 #, fuzzy -msgid "Invalid compressed data" -msgstr "Ógilt vélarheiti" +#~ msgid "Failed to open file '%s' for writing: fdopen() failed: %s" +#~ msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" + +#, fuzzy +#~ msgid "Failed to write file '%s': fflush() failed: %s" +#~ msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" + +#, fuzzy +#~ msgid "Failed to close file '%s': fclose() failed: %s" +#~ msgstr "Gat ekki opnað skrána '%s': fdopen() brást: %s" + +#, fuzzy +#~ msgid "Error statting directory '%s': %s" +#~ msgstr "Villa við að opna möppuna '%s': %s" + +#, fuzzy +#~ msgid "Error stating file '%s': %s" +#~ msgstr "Villa við lestur skráarinnar '%s': %s" + +#, fuzzy +#~ msgid "Error connecting: " +#~ msgstr "Villa við lestur skráarinnar '%s': %s" + +#, fuzzy +#~ msgid "Error connecting: %s" +#~ msgstr "Villa við lestur skráarinnar '%s': %s" + +#, fuzzy +#~ msgid "Error reading from unix: %s" +#~ msgstr "Villa við lestur skráarinnar '%s': %s" + +#, fuzzy +#~ msgid "Error closing unix: %s" +#~ msgstr "Villa á línu %d: %s" + +#, fuzzy +#~ msgid "Error writing to unix: %s" +#~ msgstr "Villa við umbreytingu: %s" #, fuzzy #~ msgid "Invalid UTF-8 sequence in input" @@ -3785,10 +4516,6 @@ msgstr "Ógilt vélarheiti" #~ msgstr "Vélarheitið í URI '%s' er ógilt" #, fuzzy -#~ msgid "The name of the icon" -#~ msgstr "Vélarheitið í URI '%s' er ógilt" - -#, fuzzy #~ msgid "Close file descriptor" #~ msgstr "Villa við lestur skráarinnar '%s': %s" diff --git a/po/it.gmo b/po/it.gmo new file mode 100644 index 0000000000000000000000000000000000000000..ec84c051a25acf1e4e41e6e47f20daf24d6b531f GIT binary patch literal 102244 zcmd4434C2e{r7(Y1tIK9q3nl3ngp73g_d+p+q4aB7Lv53w58r8H_4^Rz2PoxQ+7l_ zL}W)mL{OAPWpQCq1VKbZL}gP{WEDY_#UG%!@PB`1=A3)(%}ptfzyI@kZeOSGGwYc% z^PQRRENAlU?xQaC_?@z~=j{(i@!yT3Jn!{svh}X>eEKJsZ}+&%+(yDBy=f&Xda17kD z#q$n?HEKc#A1YlBK*dwh=6OfJ#gHQMPKDFq!%*S2YWKWDVKv+qHp6Y;GN|`j z1$Tj2sPvo#=fN*SrQ?rqceq`Leb4Uj@9<=0;vcUxi0*u6$ezl`o%$KD-&$!=J$~!kwuM zW8gQSzHwyc-?@e*;yX|Au;gRgdRY!WE9EIeraFE*^u*pAVqIjp_Bg?cscQ0BnNe;5w-1 zTm<#}+u(liDX8~(+u2w4S^rBRS?6WoLii+dW~AB8#Cm$dTtEW8l&0VykYx4=Cy{{kwXUWR+YQG-@K_Jex33DF1(graT_w0sM@Fd5tK&9tVsPcIO?hW@`Z{>VER6SY=RX>KH;=341K5ud6r=aBa zZ8!_=y1}|PL*;7@D%|;SZ+H__y}IAozYO(0WgD%#50$RzQ15db90OBO_3a#}{Qo-i z;lohrdkyM2qlWDJ`cU@MpyccrsCch}l8bv_4SWSEU86VI_o#t0F)xApz;obucpX%_ zAA|D$wqyB8*56oo4E8gj{GAVvfVaVk@D+F@9CNa*hb>U`=Uk|E<5nnte}G59T~D#~ z>}aU+InD7aQ0aOY?gw9l*wT~OiPfhvdjXHr%$ z4!4IVz#U)~>itfKs#jOS1L6H}4t(C35B`KL$GK3?Jpt-{KL=H=-+_C;7onc_9#r^! z&a&xU3FYr%Xz~L}E?$TG!@WLf-KRjc8!>n;{4A9GkNK3fp9800UI!0>*FZh*0jT(1 zhST9LXWQp4h8394gnIrBj!(h8FpoON%ENw8;g5!jFAJ3qmqDfXJ8&2H99#3y!YTZ zxZ`JSeot{+0cC#@JP2L~4~6$bz5gpv_2qpix!CJ`+io5PRelYy1`a``>uZj`aQp|X z#(wPQZ2eyf+c0-SJ?{>v_j(#C{y#zG*T06QT0?Lg#)HRJ!kl z6X8ox{zhMD&uX3xCu^z6EC;v?u2^3FT(NgZrA`{fhy;k&)ah7fcs+ZhkD<$9Up*_pAX;^ zIQ9x#|CU45?+f5e_zft3ufe%+rz??R*bM98)vyiz0nUY!ud?aPzE&g>X;Ix5LTsAvhDh z4;6me7p?#0Q2Da~9tFP$mA+rY(eO=pD%|!OTP~l3DwoTl%Ke*Aa`B9FKjceRA2|Xl z-5a6eIS(p5*Fly09Z>o496SKN4^>~rTx;v!JSaI>1|_Gx@F4gZD1SFYg?kbzp1(Qw zovyR#tAR_gUjS7;7s6ZNb8wT)U$*h=_!XPJBca}Vsbe>k9G?v5z?9CE## zS7?S6m{&lh=M=a-yb6wj*F)w1O;F)~4;AlTU$yZpfJb0XL6y(-Q2t+ls?VdpX61At z)N{{-2g7eb<;P=C{@#Ep2mc29`~=(ya|Z4Q&w%CdYG;1~9EbOp1(^Q+^OvB~^9WRa{u?Skr+mY{#~^INd_7eD z{SEF9M}O14*JP-C=!D9b(_tU{GL(Gnc#D;jaZv9u6Ux3BE`WVd^8F2{`g}iB`TW+| z{}bxDyCQ@>oDAi!9V#9Dj-Q6gx39u|;ayPSo`8qKci}|1-)%OXOW{JyDOd-;3v1w8 zunit`yUm|8oPzmkI2ryDsvJgr%gWdOQ15dr90$`->AM0p!`q<`%f4;XH5N)PWJ@I%ggt>Yt(??9#VpzqpnZEz*#^>BCi3%Cb- z5$bvGIrF}E*nFymlB0I$!y%}8d?l=f&%nLl_IKKP=|k0%l~DPegG%4!Q2y_QRq(G+ z`M>vFR_+%=JwFR2KbJ$v-FKj#|29;7WA3))TnFWE1snr&Q1W{|JP_UmTi~zZd|358 z8-G7M3iIcnp8qhM4&R58vnk)V<<<`MyiIU__ywqZx(n_JABB3}3sBGB=^pEE9NZ1_ ze0U^W29=)k9B+m@V*V*qx}JurxBLCTwmXMF#oG_}g_px^;q6fV?t;pvAHu;h^c2{* zHP5-vKJS_bto%F$B{!pfWbJFA-Zu_a4wu0x@Ifef`v>%4<%3q<7sJJvuYxP!OK=A` z^T)P)7sJCbcf)b;0=PZA!|{hu{vUzc!l&Ub@L8yQ{3{#>w|dCtPc>A&E{00?8n_mo z4JB`{I9C3|%0n+yefTU?KHcm1jN?0wyFP5)4|iPX7;`+?@p8x89Upc46WpKpxBjW6 z?>NixIL8f+mpI-AClK!E@G$rvsQ0LT#Kx0=3ow5QD*cbZa`;DB0pEfOzxU5OGvUtgG$?sJAF4dQ1`mLDz$4(3uo~|0 zb8CMD)cdzP^B_C~^ZBp|-VVn@?=dT9HLx9HH&iHvP|ttgagSfv_H#Ux z{{@aKp~5Ah z{Xf`wpTnPHEen4qz!~tDQ0d+2dHcLsQ1WywB07j5{Rpu&%K<^!F1oHI{=%I|4#B3$Im8=d<( z&U^uk;r=D4_uc9xTaOY@`TPX*;Tv!)-1TK!ep8^zsU52R^+V;;6J1KMkkCKf`&@ z|Fg}fF1P{nsceUs||M?JQVX8umOG*Ho@1S{MWr<)7uBTmZLz*XmD;;cUzoLOtgfQ2yVC%8#+{+4<`} zco^op9bbm>zw6(vzdHC+%%?*iF8PP8&;76h^A&I$yca6|Kf>+d&hL{iWylu17W3kN zqSL|GpvvV_|FZ4k&2V4L4?)#~7vP@I`?qbcM?<~GVyJLuL%rwM;gRqyI2~5~$Lc3B zIDq+LcpxnMz^2!S`(SQ@N@p+Bdwvcop1Yv(;Z3M=+s`XA`pzPF1m+=l6ubrMd9Om{ z``EHFqwgON561jWI0^m&Dj&Ams?6lmj&MBY$4_h&B#bRp$w!>a{51a-oK4#xz4Xnj{ z8Jr3qgnHli;aoUzyD~E$d?Hl+xd-Y!cG%u>I+Ps5;qLG=umye*D!=~QMr!94~?@|J$JI+fz{WcH5n7x{ro>kJI2m z@SD(wKZh!pH=KF5oy&}VFc~WTW+-{s0LQ{>ocVsJ@_7v&3-{l}#*>43-^-!$>mI25 zdK=DyRlAm%@ke%%5kC;xW#N9|T-=Ht$UdXKW*ZFx_EGOvM3?`NUXa|_%X{t7C+ zuR%S3k3DR@90k=b91E3>^PuwaeyDctb*T1x-#u-4&xVq(4N%YdGL-v+Q2F;NRQ`<_ zZJ$3KDxX(D)sJhS%HyX{w&-o#g+`I@S7rX9VX6pN4 zQ2rM~`8yHH-^FkuybtO*Z$UkGuQAqq1YCysIH>2`3Y8DfLgmBm``CO~3>7{Nm%_`T z{JjJvr(^cD^|}u#U#^2b{5e!Uya7*#yXXv=d)1dJ@!B=XKhgBeHK*tehuybABD>I-@wUm)Is)rr$Lol9LoOF zQ1A79sP}jiDqr^ZZMhx|m98PE{P`wSJN6P(z8`RKnVFxN1N9zPK(!OELOti;v1Q(M zumP@we}al<-XUd1Pud6-&mZ6@SaxWc(O0*HyI|fEs-HL%s$7>qmHWw1`Eos!{Jjko z@4*$;-wLRDcn(y)-wjos??UDOe&fo_xNjL$JU7C*a)&eFv`U-bS*Ut`C!7tRgK|Hp zs?7TmTn&}3e?#>Lwbf-tzluZU=L1mbe*-Gt_ByQ0^rJ1X8S|xZE_?|p{))pbyWs(t zzYJ9#KZMHHH=y35a=ew(rBLOw9;zL^87_lAfP2C{Yi#|hhLW3ZxE;I%N=~kZ@^_=N z{{d7vJmmN@sBpi8sz+tDwm94whmz+jpyc6EDEZiWvXz_3 zQ2De9%6}5>0k4Al!&{)*OKDjQ?PD&nVG-32_B8P{HQWB53meM?(T!i=f6YA=^=Ht zoI2rJ%;!SM!)s7-UN*zZT^*GCi-o``SB!FJ^dF{`AwN?+n+(GcK0Hv z`urSJJ=(3l%p#0BkwDtZtDEIYH>HZv) zT;2oK4!!`DzdIjo%YQXg_zcv0e+EkbxCbh~UV#d?=Mo#wTqrq;JM*Qm7xUdP2FETf z^In8!!OLJ@la22KsPd?8www>uKd*sP;VDq{>UOC5{x(!Ss%o+Alct&! zFZfqD4Q{i{y3c}&??kBdUjbEqzlCbY{{~h5+bp;FdmvQ1HyeHou7v8hWAHF|E}RR$ z1LN>rsB&Dr!n*$es{XwSRW5Umwdu$~)#n?b>f_5$?aHK;Hh*$Z?d79T&+(44_49D3 z_wR$s*U!S$@Ox1G)|gdgo)4!&rF$8aoD9MicmY(tJO}lj@4m(PPr|4(5LdMpxWnCpz7r}o%^#;^=I3-O?LxSea%4S=Vj1`Pe6r#2Tq6MdThR}h03?$?ib7pUymDh2O^-%A%8cNiw>Oqu@Po8+bqT;ZNY_%BZ*SyIV7ENLhK9 zn6d1EO5YdY(eO#AeD<@pzllTT|20tZ_IoJ#8J#OL`+Vm>_50s}G57&g`x9Gl>s1CS z{?9?RYd?X~cmD;qhudr@GwYeVK)v7oa1U4s)t=3OD(7}6`8gGif!9LyOLxOGdBc!}fZ9lzlC zCC9Hg-r)FkxQKM!3iUpJhxM>xlkFdS;Tp_mKp*}A?gYJ)Y<=Gus-De92L&WHEG9pR``Y&*IelpIz<$>($^d06XswX^>%RK3{h zRNFpPLA6H>uorHE(qCSHl860IvwGYzDEYk&ZVR7u{2i2>yy*BkRKN9(bN{#FsMD>y z?*J8kH>hx9p!^>UC1=&neu}f73FUu*vtQ!a;kX7$9($nDeIk_H-3*mqKY~7d5vqS0 zb%yQl4}z-SwNUx78ur06;W+qbsB+%@Oj|$ZK$X)fn1UBWwclHR!piZHP;z~mGd}|B zFz`mfXB!SD-E&-sC~e;HO{F8ib{&uXaj&4C(+4M4TqUx16@&!F1T(Vwzh z1oiwOsCMB&*aXYZw)t`_lzd$T)xO;XRsSD@%9rP%>hHgx+KtL{tiNNRC3 z-Uc_qv7fg6z*TS}=4YYueV23XJVY&&9L;{MH&p%D^)vRp zTOCh>rr&}`^2hDt=yl_^>wa{vzMPw zaQ~`{>-*5>YRCUexIM|WkgJF5m)K9muj;{rLtLZX)*j zy^o)};r(2V&QA7Mb4d>0kJ8^YzuitFqSm~Z|vE%-ZpT+$${9b{1H9Qi(HQaYY zno@5p*T?bmIIQBD$NdmjI~QHFN4MtvnEPK4rV$3er?~k&cGI|ufA?co?<})Cho;0^ z#HHUWQ1W^(*K7Eji~Gr3y_g@w{HBZV&yHPi55lNzypMa-3U3Ji`mKPS@N3vbf2!YY zF8uGELpgpw!F?M08}Q#33G*KJ4P4S+_jBP~Fz@Hs*AsRC`yQy@MO=q-pH>*I(_EMe z?*Gm8cdnhe?l8U?o5I0Jyzk(41mS-OgWtv6{DFxn|(5pU-tU*Q2-}hFyz`_aB&}zZWro z6Zgf={#nOLN3|1kxIY9=#@||aAzZ|DI@f&XPjRO8AHNpt-+@=cCvpEW*T=a3H+KKw zz8TiSb=d6#FM;2|PQP2Zp22((_PfBlp?=Fr|Hrvb$NU->Dv9?X_D|wx68BeeKaqR= z2Hm?3Vg3Twm#|xipXa&g8qF_>{T%!qg85Bs2DslByJk4kh2O*RIozMY-|t*lMQ|`~ z=jevtCc;gFXBrdpJPt1=vyMD|YoWHr)rSP*6JN+8C|1`W5`@g^|Wyvpz z{Q~$^t{b_I;|hN2Cxc%n@$5y|H2$x}vYh)V*iFX#EqFZFpRn5ow^7`GnoGZhxIfSR zG^l<{zsI=6VFTTev>pdIjCb+4JQ!aTCO_Gqv7?~1;0;X7yQ0RT(!9W z3`+mg?;FnjW89DB+6nVd;TO36#{ITj{oMbMtCjnkx%9i8IQ|aL!aSC1p5n#az%>K6 zR(KCrg8LV6Z{dD{{BZvtF8x+>ZENn3Gu-q$1WqB$6z)&vTFHHdb6diF50`$|!|B9x zD%V=B1Dv1z9pz^`_nhx@|1sR{ZVn+9qtJAy9d6-^;hhI-*fK%OU{q%wHTj)9)vk59Zp6>te3pcU^Gf_%Gtpua2-k zi1?G;<+yd}hTkjPUutj7_;7;@cQCx2>qxF8#G&8ki6_q09EooRZr^cXj)P@f2RL&- z{vPIjl@0E_C3~(%xc(_Ot{nGYf!o7<-E-vq7uc=i((gh?-EYVJMCb1Wcqrj+b?!08 zI(c-zCAjbC{GW~cWUdw1{fSGzSK+(x7#H>uxD)2fus(zH_PCt`*Kj4c{~Xs}@UtI`{=SR*@z}3+@nmpZjolt5WB<=U3(Z(N_|+L>@`xKb|O_1x=ssO;^n zw-;`+oPCxs`t9!g>;7=AYV7ypdJ6j*%uUXJANMQWeHXkG_owk!3-5JtyyMt}-#>Bv z0dqCiAKkOA=01h}3C`b7xWAVBA9J0+{b*;;t@)i#xLMp?!&SpG4{-7P8S~3rFJK-8 zZzJ5^F6^qo%tx- zUn1Pz@IX8~i2ZWs@w@O)%#AJ$Ct+^Gd^+sJ|NSnG!?^Fp&#qiwaendQZF27S!Cq&- zP7eG|!F&T(miw=8o#6b+?eo}wUN`R7iCd0m=yx91>zGHw@$d-z%4s?L6xW{I|CZ}) z?lT&xO*J7>@xSqiNGOoArI{~wP7jS(W^DQ#_{`{7vruyau zzVCPR#r>+(U^bCT#`>%MuGGLlEZOa6Q+|BoV1F!;EXVu8#-$DTK8h)L5R&+GQn@k}b0?uwhoEB+-7 zE1mD6*H{-H@;4;1eTk%>VS}4z6LG0-!{#kM-x`_8D1Rs}f0U65W10*_G-}BzvnpUm{dflgXwNU0Hua zEaPVe<6ViKM7(>zhRzZ!rd$i7+5TE7E1z)CTGzUShPBe*1)2} zS#$&z>#)f9okQ7pz>IDJaZkrj%#nK;67I(a2m2FbwK9OWA}?*m_79Pp{r#y8<)l1g zWH384XyUWXx%e$JUS&n5(obakWGYMbuzA!)C5d%q<7pQc8G&2n%t}9Wnc*k0zJy2N zI^(^_FsX|7#|PrctSOQ$j#;uF#+%_W6Dnu;CRzWB@%N`P@q*-;C(JNn9aDZ$bHhX^ zKPqQemV5)%hY=m>h_%aw%f{AGRLPVdOZVoKD;bKU>aeEzwk6g6KrWN@`(o?krYxNY zT$eYr&8s$fN-atCCKH?D-Cot4HZ@*Vb5cd*p zKQvy|F&@jP^pwX`&2^@#nY@klXHtGoOifmuUy-Tyy{Zlbh4c(XG6K2kGFe9}m7%dp zcBeMbNK~74E0xRoslj+s52*4!ye1(ty~$Ks-c#%2>2#u7=}(h5;-;0Ovdu(h6Wz0v z!r6YTKOK*C59O<6p|d2fYABwq_PgUfiDbOH)|=VYm+0>{;x}>}YEM;)TkL~AgV)aZ zGmAnZ^D}KL7p8fJpF_@O2Cp|;6?1_0rf0}DNM7jlAxX%`(3@BvPx_tYb?~fAvNB5p zm5nFWkg3GfhxB?yiJ_CrWNT7A?mcY)-Xe&`W^<7*J;%sLcgjd_@E~JZ{DhK4R2cni zmr&clP+DqPGiq9c*U{64M~p$!Qi!Bjd+HIzJ8;K_7b9O~HGxWNAJ zTPuH6YkgaNQ$t5X+ZyMvN{UNuZ7t?bBJpX_RSBsesWi1A8T5xZ(^t_h`^%aekM+A# z11LUzhFVRo(tXl1WL%kLa)T~CL}sd2W+;=559FgT-Fjv)hMuBK2?KcbbgJuPS=%s~ z4%VYl;mzEGcxlrjbjw zazJHDCB6EARE~}cnHY!mTtLaJy)2S}KnOe;a=>(a<>-E!)(<5g4)cdZd;WS!~ z%Xiu+veH9INp+rpUNWL=D9S{VuC+&5Piq&;8hMFy=PgFh&D44I5lh<2WLCOKS`x9K zW?qiYJ(V6HcvZZ&jx6o1CCdi}`{T9i6Y&l4G+7i4pR~TEFZ9Q{))^%tAE{R#bW(NY zUVRpoh=w3;iF^}54nc~gdVN7WqLI_rDQ5u)4XiyQg0ql$_-jYyo<)%s4KS9 z!L8e0+|kiWX{9zQ{|Ebry!o`G;fop>r9HK^N;%gXPsY;-r=-#7*ywU`&y5qj`IL+j zM+$7)q2fj5H+r?{u`o#xL!Y)y9MKQWY*%VD(s9}~Ue>rkyeVhigPy$`3blg-9jc^%x@xL+Vdn4MpKyaMbbc&i04!#skSG?c0 zVTmMT9R^36tn?N32hO7kD-rV-Eui74&t>~sI+0xprLHc938ijRyheAbybMd?-8F;p zcv_E9bmTmKX*N)`J82Va!y@I9`m2W9C;`rMcf2b-G??{U8=7j&XpLtNrfsK0ZxO_) zfN7KLIBj?)6YGuF`FTg0*a2h~#fhfQ^;Dhlu9);Q$=ZT>%i7nrchtAh6R*{M$I8|Q z1ZsUEol2TP%=#G7Ya~nKZ}KFb-F);t>D0hSiMPhjCD$cW8iz}o$`kAVMJ@2S>8o{WBvw8zs5e@$c`o=q|nobk|J6k zjgD;?4UH*5YJZMFVYh8bm4}Pgnp|vcYdLo1+J#H&7qzcl(6Y9xmIuguT@?cF+4gG|W}#wes%AZA9UHX!QKIdTcpz>VlF$W{i+3{H~qngrvm zpor{*g9g#mM%zuAcx_)P-JVCNngszUf~2aKzi3{rrzg%-R%3E7mu*KMjSUR<)MRv< z5?)jbx|yiyO~(c_hO-@ydHI;>zC%Z=_SFV)Z#JM)5hY5bJewGZOQOgmg4@o-w^Gd; z7|mAQv6*{%2O+J|MWe*)wveyn2mvtg84N$!*Fk1yuI~fA~X%7>a&_gGvFE)F(s>q+h2nW)J2m8<>kw$J!8?`g9+-I z8okz74fcC!P0Tw=lZi1nb(43@ZIBI`Ats)14%SUL2J?7HB8a%EU#~513+9sxJyB{iITX+(ZHaa+=Je$we}?uE2n~-_BdBtj%CWLa4epc5}XIV>aWx zD=$78aYZ7ExL8fdcE)C4Hr!ibP*O*FlVl|C9yC*1X4doyA1z2tu=Ii!U%Mqim6>iaC)R7kJ9xM&*^x`*1T9zDBGLFzQx+)Y z)F33^Oh2iTr03j> zh-qQLikm7{hWUI%!K`%^zFMH6^8|9*XN79Q?0md#%2Vr~cG#0&1g(nK_SX6{wWu(= zIv+yGjSmc>;UjRaK|%UcNu-`^Vq`R^spJJIb(~D8FwL(i6|{HX3=2so6*kS1D|6Xe za<@~VE&%VOfpibUL`@}TX3(T{F?DSwJq8%DFKS*ke{EwkvmVX$O9@nZcyw(FJYY5HnXaM>KoI{rD?#_@R?CHQ-%$0Vc0bPWe)jgmc93RQiZtX3Zk8gioc+W`}x&R(fg8^ia)&_Q#oJ z+q};d^DLY7Zb(--ZbqdfEjdFo6=pL6L%jrgJOxx|$9Dd>6LYET z41Zj|{_E9$F*>XnE+(^U!)UpTC~V|T^)|CO#svq)wk&UGet@XcEYqVd*yRwv!fH^p zep75?VjwpV*pta%sBnpgPn$TI(BY}%UOSH@U7FRYbzg*-?h z1GZd$HbH3^?Z@q4urg#8Bvg@^{C96?W*FQWP=hkVUld&tkuH~@3uAefT|%1Iu=96j zX(ezpW1MQTzzoU%ADRJhDKdo~Ol?qtQkKo69!aKeWm<>&iM?C0YtWjaAM5Ihv&KX( z>J(fW3Ztw!XWE>a{unKYR+Uj%tu?!-%yKh%>_%3RFlwI^VY?Bt@Z8g^V=F0D3MHJqm|joOgohneF6=Jf>q^`8mYv)tKEhMbu4Nl zO87N{1Lldl(uqMbVgw&0tnFGw35VgyVic;upOR)CSCMh~738h5u!3z+HW$O0Jxzlf zjdE}(`Wy`#6jwM?KkVIx`6w0K?)4~md0To(|6M$$t1paVi(a8bxR3e@xg-nh`HA~*Yg*B=zl1_7{C=f6u1aN5 zWy~%8SGwk!ISQBICos*Tj5N)Bm()2k?1~g7`pbd@WOMy#K`a?HOW|+J#+1d~DRw{Z$F|6G$2w9Ym5mjZ9)0)Qn zy>!48K?Ab6&;?28iYJU%YSpErL%6^h=DsGvONnx5&mIEbbuvYDpukH}O$goS$Tgib z%o&YC5;KxLn~Z2(wB34`k4&oHBv@tWL`Z{|yk)_gXLD&cr0Ptu2QVsEVc@(UJD`%! z&`~{2yk^8FpoUvDgjt2c#vtQHe00^p6jE6C0=J@q3ap10(?{qj648b(D!p)yEm*pBQovApgK4NW$D?7hY2|G~ zLND|ZB_x`@&FURR(&1KMON3zlN(**!(X<%ZX_uo>BbLO6CM-7_(g$Pgf2&~Nt3-^~ z@6~|ucb-ZIFYfN-%XQeg&DSbBTcI5&8gOpL3yOr>+V~+J*>%~8#_%D& zKE&DWwUlbPnKYrQp2(*lLFzScqG52IzaTQf?#9k;jWymKdTO$3#7c=B?BLTaP?hvE zVni)=W2l+H8PQYZjm%g+Oiw=5ZXG_@YpE`yC&%nyjpoVC*DEGhhXt@ZRNMzHa^2X+ zW+<~ifC<%bbwX2)!7eT-g9CBuW-^f(U`mJ?{@`nYsxW{gg&C4yS9jQYAo;kS1J>5?A=qnkcX$2wKoaS}~N@;fYc3)mT zdMn73t6WHTtuM;UBjR@A0dGS5i$^w1meD8I_hpiz@uSjw@YySmozpb$z#&G?>K zxI{nwI@Q=NB5U%~Ht{CmYJ?`4Mk1Z+52jf2YUD@qqot@GH>Ya#P?fSWR!`ZyEA51| zRjuUXnU>eQyB&T6+G#`~GJUoQuqmEq(oH$Wv+VZtqAd)znPVeY*3(XR^Pl-V&EByg zzGLwkZ=v}VMSjD@Ub{0p;vz|8=@UPNJ)2)85zNQn=E*}*G_Bt-=fMP%j(S5W2Q(7e zg+V@yG*8<1FE6^K@YxTB9ybXK9~BPYXP0R|zeq*=@k4tzo_f zrQgVNUdgfV5`4%I$spc(U2zP?t}x9-&(L@vR4Gk|7UXb6M*o(R1vVb#uO%*f$C zETmigSG_SR6Q4)84d9_5MBc8*w_6m*%S^=UKx~la%l@nL(GdqnO1wtxw!aNkqx_o{ zJN9(TW=o^moL{LP;pVmR?t_;MJ2eqcGdtd?eHt-dj?co#n_x{d+(eh(0arEdkjYb~ z&M+eHJ{72Dml;CU7aO!oXf75EDL$6a2r!aYrn+n3V<*ZBL}d%T70aB7GM+SBWQN7e z`iQBbMN(+Om>EZx0#)M?{R9$HQ2)L7A#C$$|~*u3bvA)Z-LB*mU6aVHs$wqx_!lk1xwNAy=p5w<}~w* zS$0U9&kxMN(9K`*GQr%M)4pA&!0r!L@=PI0H_lJ?7A!2;d9sYRXnuYIA)h?A;!Blv zn+^QN1<{Qt1)+F|)VAnOZ&Wg~VUj&7ix#jWrh_sVRk66PqN%Q;z^c(&`4xjvk1@ZZ z)32a7T?oHoWz>0KLPht4ilK;AeN)8HilN#Q)JijoQL ziyfAsX%U%E=^CPcV$WLW;KZAeu%w7yNZ&MN7!8}f=IWo>d@85NjFhQZW|~7=9`kXz zPQk817h9Vhu69?Rz649Mf!01VkX+lmGlWTL2e0%3J}z2Br>Cc*-Z6-v&ht6H7x`|f zNL}tRYRqOl1Un(4UV^0}^38^)2}+FMA=nPbGIrF57A(;YY_*X-sU4Bh-=n)~YQ4qU zejDy%T&$&xT#|ML%}U#ci!FHb!u^Z(F~mbiQwXL@b~24(yQ*ETPII|RCbm0sek<3nVq{egrcvClE+htS1wPPc!t45#xFh81w z#Loy{FBI;=DB+E|Bat*aSbo*cc={VVF>}v^IYVCw3{&T znqbzqbxgIIW~J7*!!-O&+<0V{Usc&(SuI6l;>M|yG0nr2AEufhI8{uXyfGi8`5c@G z^4X~D4&5c$B`u^D1tn@XIm(+84Eq{d@hk|d>CIuj24W|W;-D@EpY}ywZBpbNSRx4? zYNtHL+m0^y5{Uu{7SM$RoTjb({s7?spz zc*J{5%4v;_Osfe@7OAAhtG&=n1{!LK$fDodnRZ!1RG6*dM+IhFna|IBY=u6;Y%0k8 z628&=*^+3tN7}^7(??nmDWN~JNl-JM=A#^MsoAb%b_GYo+1W~ci%7X&Ws+jmbRv*U zX}DuHl~#L8<2_mPF*h5a+&*~Qe5(sH!^TeY=^Y+*ynuF_6)QHumnTczo&p43X&}R* zd#OKcP_Yy>IhyW_XKnIl57;f9)|$wXcWRfBjEoL{3BMsOZ`9gDaIh1pHEqgxqljy| zO(|pI-$WlM!x;r?cgHW~gP3iqQs9Z-YTIrAh!=MtlLEHtXsS}7B1<(cc+q2RuJG9d ziuC`rG?Xu}&!dRD`g80DRB^f28IOc97+2N?{kg^*CbOIu^Leb=JXNZKe9`B8993oJ zJ#7f)$Jmu(n_%}XE-i9iX#FZPw^7TgPWYuhLa7{Aq5>^Uji^1SEAPha51YEQgO2Zm zlPrCki7+Yl)xl>Ur98W@r4T00{gCfya+vjJ_*IY^rdq?~I zB&2A-&&eo@TNbRHU%zx|FdJTHrHSUPsiA3JL)(a(j9u8ahK^-z&H2y;+m%P!pxhK} zoI(Vo)!W%9p1Eit&4UgD@bX@m+tA{bsCqs`+X?yJKr*WH?#$Sa6osqHDEYRt^z28$!E}}zzDTn{aybJ)#R6%q+ z(rx$9=qrqJr0|*=tPI~sFH^x5Qzg;S1@v2RrLc=U9AbyPA4QJSwuO%IJOWt0kY zs*CNj)#c|?XY9iM(;OvK5CO^v8(yfo;qEEBuQ?cg*uL65Qf*QGaYi+7avS(U{ZnIN zw9ep@SRF!WhRJ3LB~$CV1X+`x;WFd+;7hfzTaZ}WYFlf*dp&->x=MZX8+b(!88ZhD z8a9M%(jgc{9~4U3!tejRreIe$wJeynKu2|L89 za1w(N#m1ppqBGy-HN}!Kb9R6`i$wFD?49zOQ~rYHc6FnvwB6T+bh_b2P)^EGBcOOT z=eU^CbH|Y>=Ooc3PnA;iBYfjVIq7hnA`g*|+wvZQ+8vgkLPa|h$~O2?gft`jX31aO zR5;&J9KO7P;5_aog#%EBcll2f8k^YW&L8%@dO#5 z^CXON->H?4NM4T^(tRLd^*ocg?C0Xa!KaX6CsuB3!xqIgMHJ(Jo8}B!iO{UAY2>l{ z;^4mwo-yHbI?*iHMlswbl($TQM_X7lLv9BF;~lfpfF?k1TI5%!MfGrmnNu=qb*f8k ztKF!@=P2yc-CRWUIOcISyA*X`BawHxZ5llF9L(Iqn2t?^Utx;krKcOEd9-jM{F)Z9|RjIib}yXBwD3i7)7qUXd$8=jQr`yA*v^S`;$) zqO_$uddh{0GO|aO14L(41|JcI8x!*l4cb(}7Pt?KYngTHlH>Nv$&rOMfwIH}2Wp#a2s{z=bI^c~ksKUW>j()P523;arfF+Lxh^=iDN* z`P$9+q-ADR%vDyJ53eOy;WLwZ`HntsZ$1IEM^G`1W)~zFibtf}R%f-v{rcv|Y~hly zROfx?_mWfmDtb4uMF#7%07hwMgJt;f3U97YQo^S(WWg8OiE^Zqoygj?p?a(5FoMRK z4k(-&Z~=oRZOHbbX1=RfYYDv8c`bI)*lF2P01Foh%qpzc610ovE%JlGNhVJG7Yjr*vm6B+8C=DZ6vl3!IaJNSZZa#<>5txIT9x1^dIFrEXW^1C}l*o!}{@BwHv}saahrn zG@FCEkU;W64+%~&w&U7R1uqe}WB}KJs`uQ|ARqY|VE{(^ynu#T)q0rDD=>Ru?R;rC z|CygSwVH1$iKB00PQV_$?B>=oWF%*LPvC^!ybraDn{!u|sSjcL!bc&d7dnAGu4Jc) zjbf>qU?MC$A}gGKw#A^L8wiHbkvV_!aplBm6DQg&Z4)a}UaM&>_{PND1(RjgKG0}M zOokm#bZc6KwQkx0X_de)qIBsIwluqK(6|3&$psmv3iDSrR~g+mYR=I z3-8v@g65;3(A5Rl;l8>7uPv_adV~nNnVxR!%pwVvX3eBCPBz&&E)$cPw$fwB>Fi7-QOP-&Wt4{K4w$!%HrwHy|BTm`Q&sQQ zPF*cD^L4Ig{jRE0%eSV`WLDw}+)X0PG4Mq`SCKkG+u2OW#BBZxil8FVc(`Lr0}rm$ z%omDe9#UmSP3|n+_QpkgLLcZ|c9v?qZ$7PGSUQ~!J2f*?GkRujbqHTHGnM|EMqhNBm)QO8CddSnI?!JGMqGxy;DkV2qId~Ss~#F!HgsbWly=1dYNxm!Z}yJ$_&6vE3K5W z?i7xNXrPM%N2gCC0gD4M86h?Ie`nW{*6$0uWr=uaj17mb87S=|bTlU>+WM+DO8SZV+xgq2y1;p3mW^092nR{|+Diw!Tu;RenWQKy}Tsptxo-X5} zwoH8yD!4gg!}>3@v5ISniMsaU=>^j_=M@4YO?Gst*@oho1~a>ez?aYBpvR?ECi zU`eA@G^gHf&q{VWXbE@yDT!hQt=()l47arem4}WbJ+xLGt>=7bMimvZ#P&Ytp~M5D zALkaA@@9`t>d1eUsNP+t+(xbRsQl7+v6E>p3J2&N?~(Y`kgrp#jIGH zCB>>hFT-Kjo_Jfr3hZ`u(6Tc0CZFs#qKwk@JhN~d_Uxp^wnuUbb_tnfvCU+p<_euq z1bTM4iCaCVU5(EdLhu)0f^}Ic*df#}q94`?nDTP1zb$?Bzb4P4J+!1XC^vbqkp&&R zogyJBwP-pX%&EmzH8+~NO{^-jIf0&`nTbABGwj-qk~qwd+h9cgb10MB8)lwA%%{ts zg2s#(oz#b}wnmyAlxRBE)xLXapY8z4LZ5bvT|pkXp@BAaG8m)=y?X1-3nLV!(YF2y9hYmCm`hyTw0Q5xaAgN$} zxI5Px%J0NXIIOs=!wejXsn{844vVzr|GbdaYf9 zW+%THpKvs^Il4Z-gwQc^cxC%Y-c4CkAQTIE;h9*d4Nf5mK41B!`+hkWlV2b z*a5oFvg~ZPS;rpcX1=;stHuj&#)l@Cq=T5*x*~t(Jj0-=i?k_jlG>y!k|^U{eIF8m z9uOwLY~LFy_DHM9@dq?huJ^OcU6B>HVFBFXVPQ+Hzt6?NhLWj>Uws<2IF|0-poW{_ zh8p6c_mUTFp*It2_5;>P1m|vsNS|GnsmRn8_|QOqWXHZ-mOrCJbu=Fk6uq6z_sDC93*Y$x zfoYTFKGqCqJ5^A;Q@Ic4(NK_)G!Ldpqc zu-*QlBSDyYjD8DPGCupY!j=TL-w2gT(}q|gJDBJu67wxn#Ebr1i~1pHXPTE|BZrbm z<5ZQ2^>E&}O*SbtyDGORq$%;?0n8s^G5aI*>h0RM*B(90t4bdS@z=}DT3s|Nf@KzJ zrRg?{OD1q1Z_ZFO1sRlDK{RTrcvV&g7_I3P5fubJtb$jlfVv&+fum-P%nDyccNid0 zulTIJJhU|7XsPs-rZTdieC=7nL7dhr?J9Y%IsPyXcYKt3l5kKTI@)2Ox{e?oWH!11 z6Jd}1!2{DE1iGusIQzcTB@JDbNEfH_Ka3S;J1%OYKZBe`aFjsl`e4ACAW?yuKeQ-j&p_v^pQ-qP3XhMYB1Pgr2U^dc)+F#(0 zApP3#SMpa7B!gGCSF(iXLa&88D}8DJa%fK2FAmx;>_cvQ=6z*8Yt8V)oqul*@>2Iy zFnFm|l?yYRu0b-9;SX-QxqDLH8``QE%xs#vemkejY0CdU6ovBDJt|Z9+9tEYtsueX z5LXn@&6N4zE`OzD6#mUqTYfdjcF{w4qzPnPsDi=4`N3nt?VZuInGm6inn#zqAXH?l zZ$4c9IhuvCs|tm?f_=C2kPnl;)AED{mC_Ky1q!qET;)btm;NonMM10@ZIa5X5=5#& z>0kRuL8ulZ1Zp!bC7)vgQCi{N=kTF6kml}eUZ@3(xdE+}J(3xWNW)O!&HUg`ZkSBa zNGR}2ut2vAeTO$Ij9M(E#U5TjQ?yJUbmv9?|F|ZNRA&lXJTu>9XA`!dy1JQnjmR`G z8u3d#-eK4rz4D|)sQd?ewcc{G&qhtYnQ16EAtc;Ub;Z&Qf|8Z%S!Sh_P*S8z4{A6#GjkH< zJaS7TitNV9k2_5)8f6wfhIq}o4O6pxL}2er?vVCY@^^9Etf?lF=z-{e(Ac%rB$&yv zUzU|`)~^vB=_KV|*hhP-oOrMCR<*S1k4CHK_T1?rs|wZ$*LbTV-y$&!q{%LC^?WnP zr-g9aT#*0Ny3RO*C~ciY;#J7r>gHhjDz6Qhro@btz13{)4?lAXqt;F|vs#bfhy*-`JR6^7mFVu(dO$1s=^o>-yByoK0Tij$M}pa_Dq5Gu4IB=Dl%Yu9ff1^#{_O zt+$%5p8t#Zy)_C>x`WkaGf*nn$#gU)1GSqIccoyG1BuQ=zy6?+S;=R0+|)a&Nd9Ds z=o*>MlkxO-q4YP!`3pzxQ)!>(6^D7Z;`zBRe)xC!&!SgluQO)yR&y&4lde%Z(heBNrdpaRswg(HZxk=DE3R z^M@rOGdBFai*n~5$u>u0Q)vd=;pnI^YMsKZW_U$y2tM+3RVipP)G1UQRzH7!Lu*I% zcy1TgH!kJISgUzz?5Os_mLxw}X4fIB=2Us+k0XW^gY=kBi){CTiOHeD#S}e}w3&TF zW}rvsU?P!fZ$1?5=cqe<+Mz$p)QuBsJLW(u&-JH_rp)JG>Qb0p@0Wg@>fxArqmFy| zs%=#|T9VZ{TGm=LI@SU;S4$?CZeL4tCH-$a3IC^z6hOzXYvT;P@&=DVqJ3GW*z6aG z*x0X0^M7(hyOivoT#080kxu6ZRqgG@Ei8g#$E2p(2|zbwG;>ac?mCx@X}{7Qlo@e* zG`g7{RL|?qzp!WE^w>{(`TO4H&&=6Bd~f&e@JFIu>u*jKmKXVv zQfc%=B-F~THAZJ>=(S30L04?GF1FwxS9IuLhAq;SIxL4h_iR5l(<+srvJlQK89kSVC)io6+NwWC zKikW%DM{SjE^{3SSkw(B`n_Scxn7i#Vb=71=5WSg4)lHL9Fuax9O(H<+voU`gT+rh zI+u(Ov!tuz4=5FTRWDa;NB34bb#!hizRDXGfS!$$+CrCt?um|#PR<4?aG+Bw?Ldc? zOON2h=K>`oqbo~iMsVWrg3>PZVjK`5x8AjOps|($UK^R7H(f!v7DNN6dTC~#I2))B zS!0ng!KO@9Yn=@iwk^Y*BzdP)=6&dIKK2qYJR2+Qkvwg%VTxDnV%BeNSg}-p94pud zW5xwq9Wm7xzjhJX8YSPu8tXuf4EJc88C<3i)y|l?(7;EeN3Sz35WJ zn*mg;e~|B;^mi~4UF_$stl|3u6vxWi%5oA%ho+A{@^u?cz(pOpqQQn=Qxa=3zCm;B z=5N|&BA#5Q<Zq$3_Kh?&Npmtj ztEEh+@x>bFW*B{%MwB<}8yeJ~rLE#kt4;e8wy3pXsv?gHlpJ@iB^~*siIb<6@~J>B zlM6PV7N@6FSap5D+O9hYB3RaEJ65b9(Iu0q{+@4y%v3m?oqb96C0Eu2uPLP{@~TFO zvEpI2$D5;{v$1u&f{_cQsIc6n)vXfg)q|m86LE9BJnkmD z^9r8(gGfGqFpH8dRl@=w6rfR6HA_!r^8)+4Vo@0PxX=f3p+!nFPf=acc8zH(@)Bl+ zF?d1{p42Oep(10R=jHzbW#N|$V~s8`_QTwjXVz}uWMtd(2(g;PMH*1oOe6BjIslIKA88)=GEo*Kt zckN3WTY~{a$Krcg%SCV94Z0jy~8Sr1I_KQ5m313*L3o#PJg+qDrXi8}7~QcUA)Jh>~bL(=w55jm>PQZd~By^1E*G zf8N&Y=dvT1yt~^klRs_5)V65%sKFLWyF2J9Xg_jENe`>Vyh5;_HxwiM+a+xGNtiYf znHLEitcnN)9l#}G3a;kgmkBRNd#$7H;D>l-cHGNPMhQuDqTT8tWKb6 zPR)mToB3fLT1WDb|3js#z4d%p$iRQ3G5Y46mC}-f^bv!Zj?lB4L8;7~)S$hf2+Od) zoNYS}O}N%L4X{K(wx(11E7UcO-8IYY2??Cx&K@KFF1h}UR83Q+H_^@C%Kzip|-0xF^7WfW}Cn)MKzALS08y~W;ITl z-hBAdNfVpLsXJieEr}0vf@ptvYfDGXe03&F!q+UIPpR`KPn>jQ&BQ4+lcxETj;fnF z@o?(QL_F5C(dg=A(Bb|jPpX?d`S6L8@VAuxhBY19iouRW{XKxDM1RVkA7jlLOJ=2J z@+ZPlbM;@X#BVkslD#<&i>T>fXHlKsNJqyxe*Vnt;9NB$nOgd<+{W5OHt!XEK3lG% zA@aF5sdgg!35-Hf)4>cto!Qhq!A#T7Fv7~Z=PYw7Sl*wKNfTYu!1&AlHK^&G#N5gk z3$gy1h3vOvzg%+A7&Egb^X0L*omG`Qc-Exq8Rf^;xC2-9qOB=rZ?gWR+Ud2^$~|8j z9_pJHw6JK|$mfUr!O>(ln~PF|o5;eLP7ms4#d$Enm@pk@Ro^$~8QCSyW$sXHopQuy zx+o4w_PwKc__Q!IuFT5wm*a?(ArfU0$Giz~+9A^KL#y;a&Vsy5`ZEE6oNdt^z8u$%MW+R!$?rLCPjBu5yEFw)JS zYT0BdF$Er?sVMf$cSE@cZfAQs3r=R@c@rOn#!bH2MJ&A#<)n&LnC$37@DM~iUU#aq z_Vp5^O0%L`l~KajXR$Vjn9Y8Xg*Y^su3W*UnTL@-};soV)eCH zwdd1{KX3zW86_KRxMI&mirpldE9l~{q~pUGq7S@k+EhN94QjeXtl}{@&T!*M9i|K`@0iFks_V~2ZosXqu7X}d3-E}q;J^Q$DEF*28_&zQH_dN|(I!*Y+J(Jp^g zQq!=qD%{^iFRIhE)gHOW@py8MYKv;l{F@uO_9hG|E$7KH_tVJh0J-;l6o;z8Jfgl@pqGk48c>In%8;1TUcGNclc97-G&g z?`%J%F^wt3XB$8-^b?J9c*^rJF>uqVWU29tFl^rT#ko_i&_E(ZOgONGn=U-bGC<5L zN}L(-u*B!Gzq&&`Jlc|~jd|hXH<)c4^DU+gviS&Aye_pPC#k_C&b}uV3kg9r4>u3GJx+CVig2^QQ(mNV7CF#|hPSk5$P~X~W|M#tx&;FIRdJZ;h zYgywQR_QQFv$v&D8Z{fW*)vVM$mY?U?RizbG%T|7?lc|ou=9`UuxGZ~BsOhIn3pws z@padoV$P7ZWLYyuc%T`pdofc1%mA44l~BC7we^-xSOqi?^V$bv>QQJ~X(DW>gcZdg z6mQ4Y&-LnaD&?2epGKAz?1P;$VOngpM46Pg6rIeb(6;eG%V!&Ij<#fZDnsq!sqqYn zG;NBSxR}1GV49Y4r%j=CGh0Zq1B1jya~u5GSx&FacOoSorMW(KEz>4b@du^p_*HcZ zl=rJcy^&5fp6PF{SnUOGwxOo$>dz&6`{J8uI@NdKyNA>HQjwe|AEjB*dJ~3*g7a(L zL|c~1Lur`FG4$r}W!Vu!sd8XVr#>vzggS!CF%@c(B~XKj2kv67&5T=|E^AAM$by8s z)|bDj$Iwcco`B8BqI_j6B zYE7NjXuctl9%qK1!+ek?O*61%fm8O(UtH(=)81P5XK8BJC*rJgRC9c05>1fQFokJm zAzge)o+xd`L@`1lyn5GFC+f;2g6RZX@SI4Q^b}|kM#?z$Y-nG^qzM;sH>_%i*BCGbi*F0@vEzok%hY474t(dij?#37)=!F!) zp*h79I9*{K4!Q<->p+1fQ&H-EMn+9qSlD_;zJ>HChQuZ1ea~ZpTCEI`|#x12q9f8J4DQgR!Cq zHV}H%&_I``hsXx4G2XyIH3SEU5G%Wh>e~@23SkhYNUaW~Ow@#<TwqZE5JAkmKFy(mIYojFRTSrCd9oYqbX& z#I=P50da&(CS@s9N*AS!z%S}sW9!HsN7|8|h)@FybNu183dxe<8Ex)9X*T^UNEOWZ zTxt*s*b`NW*(8g9?-gbYK7063H3Ci%Jf<5}wSejI#@Tdw-dY*(MF)dO7sBA7$^;Nr zXWdiZw0bGn;dNq-u2n#3t)z7ZU*K8fkGiX!uBqqIaKW}CjG&?PkxZ=dc6qB3+ zs8d1sLQgy%z5UyN8zv#4_<0?#O$Z_|!u05y?+y+RUTi*pvHko|Kfn0X{&o^@W+6zl zk&B#~8>c+RDy52NOV75EEH8GrNFZ4)t+C_QX%PnDG)5~_ZM?jDlbDt%c&DR-@!pt6 zRw{BqfCJ{IbkLWl$ET*oJ6n_}gP;S4GHv~5Xvl_p5?mMM3wwroWFVjWxMk=FGt#-~ z&bnryglfe;IkaQnf4=wce>!~pbo0r<;iJ97-Mtrwo8P_I^Xq6WFpFi#IlSE|)2jq^ zvpBS&A5o#&7=?rlWqfO{-XT|Csie9cwszKG0fT+aC>f&4K%ZryH2_M>(V+^cCBln2 zT7Zv~aXy&6dv&Teuv>e{d_~H;UeR_j!k`>PObB99E1D*(1{A%TwHeE@gXF6%Da(kE z)yYO2T!I>t2>?0-BDtrTpN%O(Q*h(-rqvy}4mpx@c=C-s-2gpTk@o}75UwXGEuY!r zdyCqUIhwB8;wD1|MVLbde<%4^D{&o%g>EQJUf=KxOSP@{8O0!4ea!~S=z4q)2P-4W z1SUH@egq>YB4L9D>)}2$x93q4+Ll=S)E*=8CWq36twYZhXvuf zCJ;+De)uz94uvv(G``tS znn*ksj+nXXCAM2eGaW=I1*`Mpek)WpM(2V-2pK3SAu-U5Ycn0J+iuI8K+>G@Po2cq zXQH*zT4jFWu!<^1J{$xrJsXCtKYqz4%Vi|((!#G#yBTyuUt$0~mvMkCNPX#dpjOOW zo&@`|V=N__lDnkya~$kVWHpdeziryGdd81KQg)v19CDq#VjCMu(OWU(sQ0NEfS?PR zg@Gs0A?%o(mpo7gHJNN_WywY5$Y~@jKB5@Et2wk9>_X@a3Y^)woa2sjBJTK?ck??U z@b!SI^1iS`Ug6~xcA3;Ov_sx>i#%Ohrf^v%HvcxSGa91}1E$DoVS`I+i`J~{o|YCm zoR0(|NH{Z~>p7&ytc^T-U5OK>Bwx9Sz;zN--qI-Xqa=$Aeix>yWUfH{@u#>!A-%yS z8RnsP41tEdyK-zZ#fQS_D~K_{OLYL zrB3kl3a5PqFnOzpqn^2&4u7ayyAjqleef18?^XZjC6=>9W|i!wa(t&-gH2?sd0B0H(&rmWUPtc8JR%dU%p*Onrut$ z!T;Ppgw^lJh-nnoG2t*QIhd#wWZ`}elP_F%*9&Q#wS)>A^d=DkKO@Bn)#6QRE9;f3 zbZ!i6LFW7S=$UXT8QMS|VytS!S{%>}Q7wwv4(9br0IPa(3plzJ>1dASB&~pWEWW2Q zRvn@Bx2u~_h1Zk$g^eD35X}bSXm(8*eFH(6Or~X-USKbwLxr(jCEu|Z&aO|JN9OhN zk@)aJaT?Or=_b4YEZEN*5~FYmKiYn*Abm!5ySAB%jjNiK4q9yEGz0=rAb0QipUfr* zv8W8iqT)dWB;h@xNTcLFV>;Q$WkkTAd%$X|14SG<th}~B5`1Tp22ZH7uDUlEmQmty%7hPr ziH)Z0(gOB_MW0KvfJ>Xr)hQWa1ZEBfHkk=~h4%%g8v~hEs$FMye0oG!n8a9)I>cLk zf%lmB$9}*{iEwi4vmr?+E)5Zb#43z0n|BiV!<1!~Al77dZan|6HogfpRHuTGK7IW@ z3vgD<3S)Ycc6{Y5Od5AUv|UgQfom39u}g6YToVzpjh^aR3@lBhN-jzVnu%2 zktAzJ1%mH0pfE7Dss$o_A!ccDv(bjjF(T#jHN6z|4pDfHQPz}AwK3&!$zzu%8(V;E z1`wH{LoqxqR{-YeW(ZHX|5bZO<_yYOqILkf<&~{dNO<(69*y}5^H+`T+Q~KLmGt1` znI1zEWrqKnixln?Dy-ahMoY}Fp=y$EglwD((jfA4Zpl7Ek+A0B#S@_l>1)PIk8+BL zKGFZl;gj9(whpb(I0ekLxO96xTa{?jpsAoq79i;R^XGfdANsi#sviZ$TaWKW+r!<> zXWPx+{ww0S4C1+t;*}N2wUC4AGgGoTCqEs74Wpb!o^Ks1h+)1R4$Sb?%_J@efJoQ==!-R~ zz+u8IUmyq&aAuZ>(MKu`@x|z)x&C^izb06azR;uB9z!B&!BicGNc7jo=J+v-Ng|pd z*)$n~Wn?N%nMM=L^o$rELf#%noU(1Vt-5eLES%ST!VjoM9`&1;HIh+}i? zx)*v&9k4LFRt52O6fzT+>K3NgT0lZvt3;^xGj&O+GaWKpyWIA0qmhfdV;Pxt$-)(Y zb(?JqVv)cif#Ql8`BqH5E$l=~q+pBkut-@~ zx^8MN09*L|d=0bE@eK`_&rR07ArM<--sLFL>Rb2YSLgb&`rfH8N9-$IuuKO4o`*;D zX2}hULv`?c`t24Bl@`0`sKs6=k5M~N2}&c55{v@XhbHGjI=;f3x(xgZjN#EZ>204* zakyf$!Mx%3rYd^1jtWVw(lF3>$(;CA$Py{DG6EHRtlg&ry;V&-M2e7- zK5!r?>JiE^*J*-ZlDR%`H1h-gmcAdjhz%hgOxGNdV!X3oT0+;$Mio_Yy_g33<>WfedF`E>;M9AOBizW38TZp zwm}ZqPUVG^1JAvXQ1%vSG54dKUcRC(frH{p`UTxk-izO9l{~Ptp}I+Ta1@|kM8*)> z1J~X#Q528wTr^y?y5Z~E#$eFTK`WylLQq!jEHY0#)F;OPF6?EXZ%D9UW5sFBn_S2Q z$#a8QTpOrqImb|1Lo_V@PqoR@S^J7h8xA6hwjkRoBq&K?!S)so-s#v~h&aASP6dGq zqh=v5y%s~nJdGmn*AkqzZr%k%8IG#&7xCJviA#g^&6p568-45|GG(J=mPM@N!-w9nQ~+_utsydU^y^lBSeH3{2J>X88ye zW$e^-=xAFF4Ww)PV1Gr(s4cdBdke&FjFs@=>A(rt!z~=6fT+F->D@f(65rI50O>^M zqD#5`7#$1cqXz#p%wR)PwNeWqm8Me;z|ENtjRKQSnmMRfzuT$ zMvGw=a7pMhx~N5eb!bXzGzd#&3{ZC=EPasd1adAGos8lH!xNmFuK_a`a#pP>lw%u;6?yrHK(UnMW-0C3~gG3S6^!cYSko<|48%6sQtmbpe6yh?wmxB&(vDXq#i zpc03EO=dJlSb{mF?sx-UX0U9>RVsFBH}_os&Gsm$KwFqzuv-=&JyIgQpYmeWW>}<` zy2`R|*05AGf`%q@Re>F*Ca3EiL==paH}<@R$+q+$3!@0nf@}pLmN%C%GDH=L#6Xx~E(`_>JuB1xDJ4egSb6{3`^SPI((IcLYD zjJx=_uqm>!RaaIL%#vNm<56PRGOcfE13tQ;mP=0|BDZv@w}{3_)NNV`cHXqtAk#VS z2&=N_gA+}|mC_d6Ph&=ql|ft#(Ope%WMfV~03hrml);Camu(AQV&fmwsoFF9NI`LR zMo-$FN)G^UBg%|WiCC+ zN;!(WrC^aq0w>3`Z|t7OUy9S+KaqRJ_-Q`sx;%hf5pqo6M;du>5S}dxbR0UL;58X7 zHRT`~T5h^qSy}5N@|WDd%#|m*mCb{_KDo(J+bqL9`hhx;$zkjuevS+YYg2}@8Ws-x z6erJPVgS_STA9HNhFd9z_MxEL>eG(aSyM64i(Hn0ktad>=YVjrxILS{HSommaJ~aYmOj!18{99j&G#eE`EF4avdTAF|t8Zcnn3bFL;*e z>atN`m<(360&MFQ`V&j7!F<-D1GaYL?5rf% zidS~W?{1CII_2PR-`uOes(uH>je|Q1LS?5zJpIS9-iqLxPKkqt}AtA^P>y z&15$Y*%}Os+Ty_oDy-6+K)v1>DI&*eKh#ol%EN4)E-`@X0|gNzOUhJBdg~d6SY_-9 zqHZ`3wg3p64IRfOH_;oSyMILDrP{qF*l2q4!P6}4EQ_EdS89e-836^gk58}9r?036 znlh`MQknk{LJsFQ*((Pi;h7uEH?W|KkN)A4Pe1$OF75~bv`PvPdsi)354b{o#vM zyP!>;J1dcOMc$Df+#Au$Ljs?*8ei=73pzfZ3Enf&Ky>q3mB@ffy)l5l>4bws2PaWU z0k3vcEp~{XNb~`>aD@y3u@;4sM6}YJCC;Ogh9mHdRr1pSXFF{Ua>{*;uw86>tpcD! z^Doz3?+OhrzaHMj_ZP`?d zWD+zQeah#bo-HWn7iPU+*SJVJm8Fa?P>h)dFKi*pzWGicdEHfFbKjsg;~ z6`rZpY_>Hut}+#Cs0l6sS-?8`vv9mxwJRN3DJA7&1Mdb z#X?6aPU>h{o_eNXAwPFltbn??f zL~EAg{7}GENP%v1?sD!DjdfcVBtu4yq z^3zY2ZOr+6{@L9EhOx48E+C?8XbB1pwt+K{Kw^UQ$A+@1;<`k8$pKZm&h!wU=p@{L zil?G7<;&CYXw!`<4}SUlXtcgEU%87z+DrrtO0 zQu#}HryOeRR3B@G+RAM#hPDd0wHzCx0o@&ombo|9PV4VJzHqmFL22!?9`asv4rpjDU=bDB8u!ncx$BsUgw_|%1 zTz02uH4O_{eE~x4Te>@m5zvKM4-KtG>=OBYI zmSkl#yWtc$e(T%qXPd5D;#tB)=CMXXSIS72CAs1@)kvI$Hg4ItQDypG8iA-QGH}R= zvijNx6ekkK%|qn!VRwM!!&o?iP_X#;xzYZj3`}*y)SLt&x>NiQtdY7AX*C?d(fsOI zplDRvq-65GM7YD`1?SN3S-g|LS5Dr`cEdpIAQTnw#^D-;8+D!&h5*Svh@`k9Fc z>x{fk>IZcT%PA_UB}FpEh`5# zdh!^>)ym@Sx>=ltZa&KmDN>D})$|4dP80!5mHa-eTeyl#=cIj9mN%2Pw*2iigJdQj z;0Rtf>ViVkDQ#aG4#63?{@61XXyR=m_6^CAM;ioai)_3ZQ3Ne!QiLEVY7^33E+LC7 zLNjKT|HiH7Ch!~CU*q<@TzF~WRxR<+4;ZyImsp8s)`z8x*(C8S8k?^zp48TN`$%$I z+F1QPlc9>A-Vnz_c+QZRZCE6Q){>lZ546@I>(~(!j!nLc>as4of$^_rlqM?Pg(!W} z>5lyiVMP&8;x?=z#Xj1qDoNQ6=$Tgr5|?ssLim+@>Rd3^p6(%d112Rxfsh>qi4?sh zwiBVBP`gPKcp8fvM6D-*0B2sshp-qg@L>aV*dKrz1Y{h=hyG*B=C#^PZq%%c8CbB1 z<^8kW`ilkDlLPcbFOrOP9M!?CD+{W-9HjCMh%C8I4mg7(lTC|e-#VL8Q_Jj(@ zGcuz`y9b7}1`CKNW~g=ZqJhD#@e?2q>uo9@ANXortXQnD%)@;;rM>eIx?^c1*}CB< ze@hh+P2TB=D59ANVgqNr+KSfdhBiy;4Ru~gjpwXGbtTQ z-(ZGv0+AQi#hB^#@p z?06r4r_`w_QLfdTHxIj2nFOj%>F_hs*-ls!ibY(beS)-%uQ5|aj6y8iIUte*qKjTv zboLwErFSG+wgUenQomk04rP10q1z{|E@|sdymC$*-q@@2qv=LkR{|uXUSe5*i?cW= zH_3U(?;P*|Wh&xkw=6NHJ0QUJ0gEp*{D8pOgn^DGDwCgCqt z@K_c2P~H@fwW7pBXk%j7X{nOSJYRWH4_&8_+Y$gwj%3bAa}we}Rl!wVd8)RPq$_xo_{E%saBFS(IcxkMRfu zuEK~i^Y;4ut)rFb=NJS;i8&@L%%d%Nif*Gu_n2YWIJL(#qvXk=a!`Vdm__;J%pC?* z`M~q^E>HK*0V5VzK&N~0UCPGC7b)Q8(rs}=&yopWH?wLxTHQ0+rHe; zLv>Vb&u>oZeRwn6Ys-pKi_MTkxOR6{PNyDB`YLw%Iu?;@m!Wn zC#L7zxlMP8|F2s*hPv$~B%LLp3>5$vxzYRP*#`#kZgzl96wDqZpG{n)KO$-{C7VFN9*@_Xsp+~ zu#8(;>p)@xnJmSV^=uC>dNMYlVUr`p<}iy*qeV%s#1p# zz|Vs}K6sF&gvsc^>S+@ck@WfWVz?cTaOv7iiyhuEXNMHlw~ax>*HT8(9@t6&Lr*PeNsv zYwol8pJZnw`;jo};>yyqWJJNpm<$t5v|DI3BAQEnkTXP5@vk_lG6F_&7$`^qcUOFl zm8LpYz>}M;e|VVq#*h6^!lt$Gi+Iv=;QJr^f*8|Z2yJFkVL{R=HQP}a$PnHNFzh|0 z$lFd35^0;<70?v6iuC$eR+2{tJ5Q)(x5y|ii~2p@#^%|L$D3Q*L&o(qfR<@xOT)NY zI$`Wl(4k5P(#X!)JW!meAg@wcFMm2cbCuQ711b~#qFK!3f6D~-nc;pY#hT&1l;Zn7 zLj=m%nI)8JDN8&1*PpwP{dBF9j270mblw9I9s(Vgy`Zr$SI`3?Nl!MTWT+x71fY%O zoiVxi2xGL+`tz$fo&`GX+%6kl~d7mgB*BT#R9O5LtW>StCOR*_H{rN!j0ENs8EQJ!g4-I&oiz@-vB#gK2Y5PC6@o%?&hK(d&C29slMNTQe9P$bpX9!r6@Lr9Le?zA|NiP$~< z`7-L*)*9+WxX*t*l<-n1LD`qKINczxqBHqcsV@T{rqlofwY(TFpGwCP$^e9j(b|KS z=mVp=j&*G(0+wa&)bY5zt5#4MQSyJ59*0|L`_{5;^kPJ0KR`Nyavd%sXzSnYkH+h@ zVJH_;JisMqOaTrd_(G&*00LrV#F(5Qm>9J-^LSKxSHMImSfh!YAu~D>ihO7x>EH?$ z0K%7NVu%oVGk5{n$sQqON)-`6IOz|oN27I``;ZcD1f6${WOt`&mnW`fSbIrD(;ElT zz-~0+dGT8c=<-4*(LQfyR)V+9Hrz3U@s@MLjG!k>zVRe?>IJMP{&~9Yu7X&Rz}h zqC6-Rr8QF3HiD!R%S&}TwT?dPs@~_4lr39?4%I{{%VCHBJ(F%D#!m}2SV0*mJz^UU zL<3(iy+#k~2Ld%)&uar(6XO&p7M7tR^P0|<@zd!(Xkt)c_{`|62XGHp zu6|U$ou#Z$w2AZSi4Vf&pry&YuFZQ8v3|;z(>ZFE>`sUTN%cBl z<3-c5KuC}7k(ewj{|9m@(BKkl3#R9Z7CJX)a}$F(za`U|Tpu^^iIp%|l4$b9>*_+d zO;KEo85slGrdd#E0ZceBv5TBorb`eX&9ej{eT0}3VdcafnI^TkPZB|I8kaToh;U$5 z*<5^3BmQT0D$BG~W()i`VwUrUY~s8Yb5W{Gsk~%;DESe}m zi9>}Hf2p#?b1;`GTnk)oBN<6-x+o6or>tNFDlI@Kl zs!VhUnU!7kH4kkcnvi}$YNuA^h!9~bPb`oM)G-p?@4iIqN*dyRvRyLqgre&zLdUpL z#e&TwrB)K#$niDGwx_AO8$X?43}q-33GPa@oQ}Pr)UupmnbkHX*ip zpEJFW+5f)Ov-{;GMYQ$%)61jklg$!WHB;bxKvP((fXHt=E`;o}GO9$>AC5hcdi5qg2u}%-{$p;;QZHBSWJqY4*q} zTr4?={Zd`%?A!B_H6y1OHJTv6%H8Z3X#F$8DjSVw|;pb)8x_gn_qX~1M9j- z65n`uqkW|v501X-NPr?_efRNV5FLG^ZJMhv2!)9BncET)v2A?SLwR=$vm?Ms@;0^NID}zna zVu7-}So1s6CwUr5b22$~YxM_PL#n6*K5B3xbtv*7j>r-vSWQwx?DNn~IghNz(j;6k zhBcCx%aatmp`s^*H9;0JkY4M0?Ma(44NNd!-3@G9wLCU12ojPo8G3*naY(5qLVIfF zaNzPzKIcM_+Y35vzPliuTYug0zemKtAq6N%h>O;L{B!4y{_i*VVPgX!?~VfU5f+XEys*6?+`(-;P zrled1St~H&(Mxgl{T}+H^eU}UD<`x0z!d$~+*VOTnP~b8*1n^mxwg6JiS)0mx1`5H z*UDk5NK-mI4@k+Z9IjwS!Aj{xoGoQ2cBZqpSVm`{rPhEeS{@R(ab9* zG+JSX0bMi?+za#!rPUC zT{YhNOTV|^Z6>3)BWO*0_tE~}S($Z{Jxu?X@r+zLOkGFEijc`E+ukq~B`#WqMkXBCII$(~10yAJm(E&}`|` z?)o>@er%=H&4N{{M+bm8Yb8S_$=BgoKlHAB@?h^uE-LIo9Da?Wf}=ZK+@DXx&W~S3&sOXLVWLx)whkP0WD=u5`UY_YiWo*f0g zcN$4Kl5d(Hw)UQF?mpV%r@j6EyR)~u?H`v2i644F6F)XDF}|P&rx1_iyJ=o-nVg0^ zn2cFESw%azy?oB&fUl-+*+qP6lReiATm=*mV$ES!=F`j$g$)k=0qshR;&r&pUup2cP&zsFR zDmHP{Jf6N%!K>!!)tlzY?21~D=luVMsMPBQmQM|j%jSFg{-imWylNhuzN6i#x0{|f z++c+uwiMv=lvD))>KBWI}MD{n&JBL$Jii4Qq6%=)l<`+Q=ILc zCUlkxqWM16>~O_!{STX4Tig3D?%o@%|KaiG&eOZx;QAjxtY1+29sP-DQSOlSn@RSVObhHe#z9!8lj~Vitk(8=uPJMKlLYuX z`U$bSiK@d+gPK{zFrqw`oG-!Xq+Vx1X2rzh)7L8vho7V@OgaffSvseV5}t~(yu5;_ zj0MQSe4_~EvfY3A3*Gp~`;UfhJI`&d|L1Eqkt_v1?y5Wv>>3r^2FmIKUtR^7xX!iPi()z{oCDyGpJ$hE4=rY1dilcMT(7Rub66rM zjx>CcF{~QSNeGg@ZHY3wF0n+sQ)fm3OqAhBJ(kuESdP(I6UJ%*eEn1u%gjV1Xpo(a zF7D2vPND@>?v}6!>qYW@(;rYaTKK(t~BiuY%|;8d5s}e1#U8 zu6IACqnA(bjb6@2FL(c<5~6?Qm+#258NIw3B2XP7o!4rN!6jTkF4ArUqF_aOP@R;hs z5e1;fuX4aD32714Og?1ucBT9iw~dNwnB+16vj7R_&`vq>cMw36p@W#IP3GDNEUK1< zP${x5wuOWZSu~mKoKQDWGyYlGSOHE~#z^8rf`Eaqi%>CH!)UKC*LT)p+{KKdV3~=$ zX5-K7g&4}O*B`ilGB%buA3eGuD#`L0X^P@pVd0(mfoS8c#ij4Pf^7BG7p`Jux@1%; zj$uUl!IhW^Ct<{1QGcM9Om0XYYa45XDcJ?|<^#9NGXyRcnfLwU2cLYlpi91|YY8lz zV>|aDT@FYatBT9-&z&ATFPj!n)U~k?z?R#GI<^V7n11w?z<`!=M8FR*w@^T+^eR)=@fp9pkD9RB5 zih$~7H<7gNvg3Ng`}KUThuu*`#0Lg(y}4T&r93)r$Gp^jmB3#uCRCLmVycfABmBpj zD$R*vGVrNUt|7>dwpR5n4Pnc68qiq;hnXnLI}5PTRTc_4%A&@K2@fmp+n)3Go*l8{ zJqD5}$2%ME(c|jmLwjhs(Yv$YTQ`mrE}_Vu$8#Hw(PWVwi=$LX>}{vr8H9&AjtE~d z6HyM}E2G(shM@1}y4eZ((6i0w|7t4I{`2p4x9z8cf8E)4W$DGY+q-uIAZwY%N~nhj zYO=yeLdZWW>hmknd_)vTF0^6_%19{SGqhc5aqtPq9C*~zJmT|~I%44H1?pvjHBkM_ zUmX=8{8tK`#zaI){eqUv$6}Ptg4`{ogK5L`Y1-GzPyhJGCP^(YYdxO>8Q|pLDrVv_ z(y63H#m58WC;(DzygH+NLXNv@U;5I+ZG?8ylPcjuSH3 zU8`fafm_<>C0GgamUHp*c{D{7%D!v24`GYCzwJIXU#B$o}Cgwu4f%sTf8QRIHI07 z1ufjTsp&KTT&ZZjfl_vYyYY99wE#-J#0zjeU{)D;MIZuySsC!R2RN)e9GctJ51kZ zBCT69{*D@g?GyBIy9PLnECKi{Fxai?hultS5v5Q!1izlP1Of4#9p z!!MU;vwv%wm%3M6D2RFnkVEo~n^Kl+$NC3tDYthw!2~T9o4WHS%6?U_^2R-w7h_Hr W?le7K010AM)U|&*Rn;&vApd`~bZ+MW literal 0 HcmV?d00001 diff --git a/po/it.po b/po/it.po index b01ed2b..9afe085 100644 --- a/po/it.po +++ b/po/it.po @@ -1,6 +1,7 @@ # Italian translation for glib. # This file is distributed under the same license as glib package # Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc. +# Copyright (C) 2016 Free Software Foundation, Inc. # Christopher R. Gabriel 2002. # # Nota sull'uso delle virgolette: @@ -13,15 +14,15 @@ # Seek è tradotto posizionare # Polling - proviamo con controllo sistematico (MS lo lascia non tradotto) # Luca Ferretti , 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012. -# Milo Casagrande , 2013, 2014, 2015. +# Milo Casagrande , 2013, 2014, 2015, 2016. # msgid "" msgstr "" "Project-Id-Version: glib\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=glib&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2015-03-08 14:39+0000\n" -"PO-Revision-Date: 2015-03-08 16:31+0100\n" +"POT-Creation-Date: 2016-03-17 19:40+0000\n" +"PO-Revision-Date: 2016-03-17 21:22+0100\n" "Last-Translator: Milo Casagrande \n" "Language-Team: Italian \n" "Language: it\n" @@ -29,27 +30,31 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" -"X-Generator: Poedit 1.7.4\n" +"X-Generator: Poedit 1.8.7\n" -#: ../gio/gapplication.c:531 -msgid "Enter GApplication service mode (use from D-Bus service files)" -msgstr "Avvia modalità di servizio GApplication (da file di servizio D-Bus)" - -#: ../gio/gapplication.c:536 +#: ../gio/gapplication.c:493 msgid "GApplication options" msgstr "Opzioni GApplication" -#: ../gio/gapplication.c:536 +#: ../gio/gapplication.c:493 msgid "Show GApplication options" msgstr "Mostra opzioni GApplication" +#: ../gio/gapplication.c:538 +msgid "Enter GApplication service mode (use from D-Bus service files)" +msgstr "Avvia modalità di servizio GApplication (da file di servizio D-Bus)" + +#: ../gio/gapplication.c:550 +msgid "Override the application's ID" +msgstr "Soprascrive l'ID dell'applicazione" + #: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46 -#: ../gio/gresource-tool.c:485 ../gio/gsettings-tool.c:521 +#: ../gio/gresource-tool.c:488 ../gio/gsettings-tool.c:512 msgid "Print help" msgstr "Stampa l'aiuto" -#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:486 -#: ../gio/gresource-tool.c:554 +#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:489 +#: ../gio/gresource-tool.c:557 msgid "[COMMAND]" msgstr "[COMANDO]" @@ -57,7 +62,7 @@ msgstr "[COMANDO]" msgid "Print version" msgstr "Stampa la versione" -#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:527 +#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:518 msgid "Print version information and exit" msgstr "Stampa informazioni di versione ed esce" @@ -120,14 +125,14 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)" msgstr "Identificatore dell'applicazione in formato D-Bus (org.example.viewer)" #: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589 -#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:492 -#: ../gio/gresource-tool.c:558 +#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:495 +#: ../gio/gresource-tool.c:561 msgid "FILE" msgstr "FILE" #: ../gio/gapplication-tool.c:72 -msgid "Optional relative or relative filenames, or URIs to open" -msgstr "Nomi di file relativi o URI da aprire" +msgid "Optional relative or absolute filenames, or URIs to open" +msgstr "Nomi di file relativi o assoluti oppure URI da aprire" #: ../gio/gapplication-tool.c:73 msgid "ACTION" @@ -146,8 +151,8 @@ msgstr "PARAMETERO" msgid "Optional parameter to the action invocation, in GVariant format" msgstr "Parametro opzioni per l'azione da invocare, in formato GVariant" -#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:523 -#: ../gio/gsettings-tool.c:607 +#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526 +#: ../gio/gsettings-tool.c:598 #, c-format msgid "" "Unknown command %s\n" @@ -160,8 +165,8 @@ msgstr "" msgid "Usage:\n" msgstr "Uso:\n" -#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:548 -#: ../gio/gsettings-tool.c:641 +#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551 +#: ../gio/gsettings-tool.c:632 msgid "Arguments:\n" msgstr "Argomenti:\n" @@ -264,9 +269,9 @@ msgstr "" # count (gssize) è un parametro delle funzione #: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498 -#: ../gio/ginputstream.c:176 ../gio/ginputstream.c:376 -#: ../gio/ginputstream.c:614 ../gio/ginputstream.c:1013 -#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:830 +#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379 +#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1016 +#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834 #: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206 #, c-format msgid "Too large count value passed to %s" @@ -281,8 +286,8 @@ msgstr "Posizionamento non supportato sullo stream di base" msgid "Cannot truncate GBufferedInputStream" msgstr "Impossibile troncare GBufferedInputStream" -#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1202 -#: ../gio/giostream.c:278 ../gio/goutputstream.c:1654 +#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1205 +#: ../gio/giostream.c:300 ../gio/goutputstream.c:1658 msgid "Stream is already closed" msgstr "Lo stream è già chiuso" @@ -290,10 +295,9 @@ msgstr "Lo stream è già chiuso" msgid "Truncate not supported on base stream" msgstr "Troncamento non supportato sullo stream di base" -#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1896 -#: ../gio/gdbusconnection.c:1989 ../gio/gdbusprivate.c:1421 -#: ../gio/glocalfile.c:2181 ../gio/gsimpleasyncresult.c:830 -#: ../gio/gsimpleasyncresult.c:856 +#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1847 +#: ../gio/gdbusprivate.c:1375 ../gio/glocalfile.c:2220 +#: ../gio/gsimpleasyncresult.c:870 ../gio/gsimpleasyncresult.c:896 #, c-format msgid "Operation was cancelled" msgstr "L'operazione è stata annullata" @@ -311,24 +315,24 @@ msgid "Not enough space in destination" msgstr "Spazio non sufficiente nella destinazione" #: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848 -#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 -#: ../glib/gconvert.c:845 ../glib/giochannel.c:1557 ../glib/giochannel.c:1599 -#: ../glib/giochannel.c:2443 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 +#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 ../glib/gconvert.c:845 +#: ../glib/giochannel.c:1556 ../glib/giochannel.c:1598 +#: ../glib/giochannel.c:2442 ../glib/gutf8.c:853 ../glib/gutf8.c:1306 msgid "Invalid byte sequence in conversion input" msgstr "Sequenza di byte non valida nell'ingresso per la conversione" -#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 -#: ../glib/gconvert.c:770 ../glib/giochannel.c:1564 ../glib/giochannel.c:2455 +#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 ../glib/gconvert.c:770 +#: ../glib/giochannel.c:1563 ../glib/giochannel.c:2454 #, c-format msgid "Error during conversion: %s" msgstr "Errore durante la conversione: %s" -#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:990 +#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1078 msgid "Cancellable initialization not supported" msgstr "Inizializzazione annullabile non supportata" #: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321 -#: ../glib/giochannel.c:1385 +#: ../glib/giochannel.c:1384 #, c-format msgid "Conversion from character set '%s' to '%s' is not supported" msgstr "" @@ -348,7 +352,7 @@ msgstr "Tipo %s" msgid "Unknown type" msgstr "Tipo sconosciuto" -#: ../gio/gcontenttype-win32.c:161 +#: ../gio/gcontenttype-win32.c:162 #, c-format msgid "%s filetype" msgstr "Tipo di file %s" @@ -374,14 +378,14 @@ msgstr "" msgid "Unexpected early end-of-stream" msgstr "End-of-stream prematuro inatteso" -#: ../gio/gdbusaddress.c:148 ../gio/gdbusaddress.c:236 -#: ../gio/gdbusaddress.c:317 +#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241 +#: ../gio/gdbusaddress.c:322 #, c-format msgid "Unsupported key '%s' in address entry '%s'" msgstr "La chiave \"%s\" non è valida nella voce indirizzo \"%s\"" # Come chiarito in un messaggio seguente, path, tmpdir e abstract sono nomi chi chiavi (NdT) -#: ../gio/gdbusaddress.c:175 +#: ../gio/gdbusaddress.c:180 #, c-format msgid "" "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" @@ -389,29 +393,29 @@ msgstr "" "L'indirizzo \"%s\" non è valido (necessario esattamente una tra le chiavi " "path, tmpdir o abstract)" -#: ../gio/gdbusaddress.c:188 +#: ../gio/gdbusaddress.c:193 #, c-format msgid "Meaningless key/value pair combination in address entry '%s'" msgstr "" "Combinazione coppia chiave/valore senza significato nella voce indirizzo \"%s" "\"" -#: ../gio/gdbusaddress.c:251 ../gio/gdbusaddress.c:332 +#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 #, c-format msgid "Error in address '%s' - the port attribute is malformed" msgstr "Errore nell'indirizzo \"%s\" - l'attributo port è malformato" -#: ../gio/gdbusaddress.c:262 ../gio/gdbusaddress.c:343 +#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348 #, c-format msgid "Error in address '%s' - the family attribute is malformed" msgstr "Errore nell'indirizzo \"%s\" - l'attributo family è malformato" -#: ../gio/gdbusaddress.c:452 +#: ../gio/gdbusaddress.c:457 #, c-format msgid "Address element '%s' does not contain a colon (:)" msgstr "L'elemento indirizzo \"%s\" non contiene due punti (:)" -#: ../gio/gdbusaddress.c:473 +#: ../gio/gdbusaddress.c:478 #, c-format msgid "" "Key/Value pair %d, '%s', in address element '%s' does not contain an equal " @@ -420,7 +424,7 @@ msgstr "" "La coppia chiave/valore %d, \"%s\", nell'elemento indirizzo \"%s\", non " "contiene un segno di uguale" -#: ../gio/gdbusaddress.c:487 +#: ../gio/gdbusaddress.c:492 #, c-format msgid "" "Error unescaping key or value in Key/Value pair %d, '%s', in address element " @@ -429,7 +433,7 @@ msgstr "" "Errore nell'eseguire l'unescaping sulla chiave o sul valore nella coppia " "chiave/valore %d, \"%s\", nell'elemento di indirizzo \"%s\"" -#: ../gio/gdbusaddress.c:565 +#: ../gio/gdbusaddress.c:570 #, c-format msgid "" "Error in address '%s' - the unix transport requires exactly one of the keys " @@ -438,91 +442,91 @@ msgstr "" "Errore nell'indirizzo \"%s\" -- il trasporto unix richiede espressamente " "l'impostazione di una tra le chiavi \"path\" o \"abstract\"" -#: ../gio/gdbusaddress.c:601 +#: ../gio/gdbusaddress.c:606 #, c-format msgid "Error in address '%s' - the host attribute is missing or malformed" msgstr "" "Errore nell'indirizzo \"%s\" - l'attributo host manca oppure è malformato" -#: ../gio/gdbusaddress.c:615 +#: ../gio/gdbusaddress.c:620 #, c-format msgid "Error in address '%s' - the port attribute is missing or malformed" msgstr "" "Errore nell'indirizzo \"%s\" - l'attributo port manca oppure è malformato" -#: ../gio/gdbusaddress.c:629 +#: ../gio/gdbusaddress.c:634 #, c-format msgid "Error in address '%s' - the noncefile attribute is missing or malformed" msgstr "" "Errore nell'indirizzo \"%s\" - l'attributo noncefile manca oppure è " "malformato" -#: ../gio/gdbusaddress.c:650 +#: ../gio/gdbusaddress.c:655 msgid "Error auto-launching: " msgstr "Errore nell'avvio automatico: " -#: ../gio/gdbusaddress.c:658 +#: ../gio/gdbusaddress.c:663 #, c-format msgid "Unknown or unsupported transport '%s' for address '%s'" msgstr "Trasporto \"%s\" sconosciuto o non supportato per l'indirizzo \"%s\"" -#: ../gio/gdbusaddress.c:694 +#: ../gio/gdbusaddress.c:699 #, c-format msgid "Error opening nonce file '%s': %s" msgstr "Errore nell'aprire il file nonce \"%s\": %s" -#: ../gio/gdbusaddress.c:712 +#: ../gio/gdbusaddress.c:717 #, c-format msgid "Error reading from nonce file '%s': %s" msgstr "Errore nel leggere dal file nonce \"%s\": %s" -#: ../gio/gdbusaddress.c:721 +#: ../gio/gdbusaddress.c:726 #, c-format msgid "Error reading from nonce file '%s', expected 16 bytes, got %d" msgstr "Errore nel leggere dal file nonce \"%s\": attesi 16 byte, ottenuti %d" -#: ../gio/gdbusaddress.c:739 +#: ../gio/gdbusaddress.c:744 #, c-format msgid "Error writing contents of nonce file '%s' to stream:" msgstr "Errore nello scrivere i contenuti del file nonce \"%s\" sullo stream:" -#: ../gio/gdbusaddress.c:958 +#: ../gio/gdbusaddress.c:950 msgid "The given address is empty" msgstr "L'indirizzo fornito è vuoto" -#: ../gio/gdbusaddress.c:1028 +#: ../gio/gdbusaddress.c:1063 #, c-format msgid "Cannot spawn a message bus when setuid" msgstr "Impossibile eseguire lo spawn di un bus di messaggi quando in setuid" -#: ../gio/gdbusaddress.c:1035 +#: ../gio/gdbusaddress.c:1070 msgid "Cannot spawn a message bus without a machine-id: " msgstr "" "Impossibile eseguire lo spawn di un bus di messaggi senza un machine-id:" -#: ../gio/gdbusaddress.c:1077 +#: ../gio/gdbusaddress.c:1112 #, c-format msgid "Error spawning command line '%s': " msgstr "Errore nell'eseguire lo spawn della riga di comando \"%s\":" -#: ../gio/gdbusaddress.c:1294 +#: ../gio/gdbusaddress.c:1329 #, c-format msgid "(Type any character to close this window)\n" msgstr "(digitare un carattere qualsiasi per chiudere questa finestra)\n" -#: ../gio/gdbusaddress.c:1425 +#: ../gio/gdbusaddress.c:1481 #, c-format msgid "Session dbus not running, and autolaunch failed" msgstr "dbus di sessione non in esecuzione e autolaunch non riuscito" -#: ../gio/gdbusaddress.c:1446 +#: ../gio/gdbusaddress.c:1492 #, c-format msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "" "Impossibile determinare l'indirizzo del bus di sessione (non implementato " "per questo S.O.)" -#: ../gio/gdbusaddress.c:1546 ../gio/gdbusconnection.c:6931 +#: ../gio/gdbusaddress.c:1627 ../gio/gdbusconnection.c:7128 #, c-format msgid "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " @@ -531,7 +535,7 @@ msgstr "" "Impossibile determinare l'indirizzo del bus dalla variabile d'ambiente " "DBUS_STARTER_BUS_TYPE - valore \"%s\" sconosciuto" -#: ../gio/gdbusaddress.c:1555 ../gio/gdbusconnection.c:6940 +#: ../gio/gdbusaddress.c:1636 ../gio/gdbusconnection.c:7137 msgid "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" @@ -539,7 +543,7 @@ msgstr "" "Impossibile determinare l'indirizzo del bus poiché la variabile d'ambiente " "DBUS_STARTER_BUS_TYPE non è impostata" -#: ../gio/gdbusaddress.c:1565 +#: ../gio/gdbusaddress.c:1646 #, c-format msgid "Unknown bus type %d" msgstr "Tipo di bus %d sconosciuto" @@ -645,25 +649,25 @@ msgstr "Errore nell'aprire il portachiavi \"%s\" in scrittura: " msgid "(Additionally, releasing the lock for '%s' also failed: %s) " msgstr "(inoltre non è riuscito il rilascio del lock per \"%s\": %s)" -#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2455 +#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2373 msgid "The connection is closed" msgstr "La connessione è chiusa" # Sarebbe anche "il tempo è scaduto", ma non so # se la forma in cui l'hanno messo ha un particolare # senso, per cui la mantengo assieme a timeout -#: ../gio/gdbusconnection.c:1942 +#: ../gio/gdbusconnection.c:1877 msgid "Timeout was reached" msgstr "È stato raggiunto il timeout" -#: ../gio/gdbusconnection.c:2577 +#: ../gio/gdbusconnection.c:2495 msgid "" "Unsupported flags encountered when constructing a client-side connection" msgstr "" "Incontrate flag non supportate durante la costruzione di una connessione " "client-side" -#: ../gio/gdbusconnection.c:4157 ../gio/gdbusconnection.c:4504 +#: ../gio/gdbusconnection.c:4105 ../gio/gdbusconnection.c:4452 #, c-format msgid "" "No such interface 'org.freedesktop.DBus.Properties' on object at path %s" @@ -671,68 +675,78 @@ msgstr "" "Interfaccia \"org.freedesktop.DBus.Properties\" inesistente sull'oggetto nel " "percorso %s" -#: ../gio/gdbusconnection.c:4299 +#: ../gio/gdbusconnection.c:4247 #, c-format msgid "No such property '%s'" msgstr "Proprietà \"%s\" inesistente" -#: ../gio/gdbusconnection.c:4311 +#: ../gio/gdbusconnection.c:4259 #, c-format msgid "Property '%s' is not readable" msgstr "La proprietà \"%s\" non è leggibile" -#: ../gio/gdbusconnection.c:4322 +#: ../gio/gdbusconnection.c:4270 #, c-format msgid "Property '%s' is not writable" msgstr "La proprietà \"%s\" non è scrivibile" -#: ../gio/gdbusconnection.c:4342 +#: ../gio/gdbusconnection.c:4290 #, c-format msgid "Error setting property '%s': Expected type '%s' but got '%s'" msgstr "" "Errore nell'impostare la proprietà \"%s\": atteso il tipo \"%s\", ottenuto " "\"%s\"" -#: ../gio/gdbusconnection.c:4447 ../gio/gdbusconnection.c:6371 +#: ../gio/gdbusconnection.c:4395 ../gio/gdbusconnection.c:6568 #, c-format msgid "No such interface '%s'" msgstr "Interfaccia \"%s\" inesistente" -#: ../gio/gdbusconnection.c:4655 +#: ../gio/gdbusconnection.c:4603 msgid "No such interface" msgstr "Interfaccia inesistente" -#: ../gio/gdbusconnection.c:4873 ../gio/gdbusconnection.c:6880 +#: ../gio/gdbusconnection.c:4821 ../gio/gdbusconnection.c:7077 #, c-format msgid "No such interface '%s' on object at path %s" msgstr "Interfaccia \"%s\" inesistente sull'oggetto nel percorso %s" -#: ../gio/gdbusconnection.c:4971 +#: ../gio/gdbusconnection.c:4919 #, c-format msgid "No such method '%s'" msgstr "Metodo \"%s\" inesistente" -#: ../gio/gdbusconnection.c:5002 +#: ../gio/gdbusconnection.c:4950 #, c-format msgid "Type of message, '%s', does not match expected type '%s'" msgstr "Il tipo di messaggio (%s) non corrisponde al tipo atteso (%s)" -#: ../gio/gdbusconnection.c:5200 +#: ../gio/gdbusconnection.c:5148 #, c-format msgid "An object is already exported for the interface %s at %s" msgstr "Risulta già esportato un oggetto per l'interfaccia %s su %s" -#: ../gio/gdbusconnection.c:5399 +#: ../gio/gdbusconnection.c:5374 +#, c-format +msgid "Unable to retrieve property %s.%s" +msgstr "Impossibile recuperare la proprietà %s.%s" + +#: ../gio/gdbusconnection.c:5430 +#, c-format +msgid "Unable to set property %s.%s" +msgstr "Impossibile impostare la proprietà %s.%s" + +#: ../gio/gdbusconnection.c:5606 #, c-format msgid "Method '%s' returned type '%s', but expected '%s'" msgstr "Il metodo \"%s\" ha restituito il tipo \"%s, ma era atteso \"%s\"" -#: ../gio/gdbusconnection.c:6482 +#: ../gio/gdbusconnection.c:6679 #, c-format msgid "Method '%s' on interface '%s' with signature '%s' does not exist" msgstr "Il metodo \"%s\" sull'interfaccia \"%s\" con firma \"%s\" non esiste" -#: ../gio/gdbusconnection.c:6603 +#: ../gio/gdbusconnection.c:6800 #, c-format msgid "A subtree is already exported for %s" msgstr "Un sottoalbero per %s è già esportato" @@ -932,36 +946,36 @@ msgstr "" # non mi convincono "di ritorno" e "corpo" # ma altrove corpo non ci stava male -#: ../gio/gdbusmessage.c:3280 +#: ../gio/gdbusmessage.c:3283 #, c-format msgid "Error return with body of type '%s'" msgstr "Errore di ritorno con corpo di tipo \"%s\"" # come sopra -#: ../gio/gdbusmessage.c:3288 +#: ../gio/gdbusmessage.c:3291 msgid "Error return with empty body" msgstr "Errore di ritorno con corpo vuoto" -#: ../gio/gdbusprivate.c:2085 +#: ../gio/gdbusprivate.c:2036 #, c-format msgid "Unable to get Hardware profile: %s" msgstr "Impossibile ottenere profilo hardware: %s" -#: ../gio/gdbusprivate.c:2130 +#: ../gio/gdbusprivate.c:2081 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: " msgstr "Impossibile caricare /var/lib/dbus/machine-id o /etc/machine-id: " -#: ../gio/gdbusproxy.c:1630 +#: ../gio/gdbusproxy.c:1610 #, c-format msgid "Error calling StartServiceByName for %s: " msgstr "Errore nel chiamare StartServiceByName per %s: " -#: ../gio/gdbusproxy.c:1653 +#: ../gio/gdbusproxy.c:1633 #, c-format msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" msgstr "Risposta %d inattesa dal metodo StartServiceByName(\"%s\")" -#: ../gio/gdbusproxy.c:2754 ../gio/gdbusproxy.c:2891 +#: ../gio/gdbusproxy.c:2709 ../gio/gdbusproxy.c:2843 msgid "" "Cannot invoke method; proxy is for a well-known name without an owner and " "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag" @@ -1015,56 +1029,61 @@ msgstr "" "\n" "Usare \"%s COMANDO --help\" per informazioni su ciascun comando.\n" -#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:220 ../gio/gdbus-tool.c:292 -#: ../gio/gdbus-tool.c:316 ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1031 -#: ../gio/gdbus-tool.c:1465 +#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:226 ../gio/gdbus-tool.c:298 +#: ../gio/gdbus-tool.c:322 ../gio/gdbus-tool.c:711 ../gio/gdbus-tool.c:1043 +#: ../gio/gdbus-tool.c:1477 #, c-format msgid "Error: %s\n" msgstr "Errore: %s\n" -#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:233 ../gio/gdbus-tool.c:1481 +#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493 #, c-format msgid "Error parsing introspection XML: %s\n" msgstr "Errore nell'analizzare XML introspection: %s\n" -#: ../gio/gdbus-tool.c:350 +#: ../gio/gdbus-tool.c:208 +#, c-format +msgid "Error: %s is not a valid name\n" +msgstr "Errore: \"%s\" non è un nome valido\n" + +#: ../gio/gdbus-tool.c:356 msgid "Connect to the system bus" msgstr "Connette al bus di sistema" -#: ../gio/gdbus-tool.c:351 +#: ../gio/gdbus-tool.c:357 msgid "Connect to the session bus" msgstr "Connette al bus di sessione" -#: ../gio/gdbus-tool.c:352 +#: ../gio/gdbus-tool.c:358 msgid "Connect to given D-Bus address" msgstr "Connette all'indirizzo D-Bus fornito" -#: ../gio/gdbus-tool.c:362 +#: ../gio/gdbus-tool.c:368 msgid "Connection Endpoint Options:" msgstr "Opzioni endpoint connessione:" -#: ../gio/gdbus-tool.c:363 +#: ../gio/gdbus-tool.c:369 msgid "Options specifying the connection endpoint" msgstr "Opzioni per specificare gli endpoint di connessione" -#: ../gio/gdbus-tool.c:385 +#: ../gio/gdbus-tool.c:391 #, c-format msgid "No connection endpoint specified" msgstr "Nessun endpoint di connessione specificato" -#: ../gio/gdbus-tool.c:395 +#: ../gio/gdbus-tool.c:401 #, c-format msgid "Multiple connection endpoints specified" msgstr "Specificati endpoint di connessione multipli" -#: ../gio/gdbus-tool.c:465 +#: ../gio/gdbus-tool.c:471 #, c-format msgid "" "Warning: According to introspection data, interface '%s' does not exist\n" msgstr "" "Attenzione: secondo dati di introspezione, l'interfaccia \"%s\" non esiste\n" -#: ../gio/gdbus-tool.c:474 +#: ../gio/gdbus-tool.c:480 #, c-format msgid "" "Warning: According to introspection data, method '%s' does not exist on " @@ -1073,176 +1092,180 @@ msgstr "" "Attenzione: in accordo ai dati di introspezione, il metodo \"%s\" non esiste " "sull'interfaccia \"%s\"\n" -#: ../gio/gdbus-tool.c:536 +#: ../gio/gdbus-tool.c:542 msgid "Optional destination for signal (unique name)" msgstr "Destinazione opzionale per il segnale (nome univoco)" -#: ../gio/gdbus-tool.c:537 +#: ../gio/gdbus-tool.c:543 msgid "Object path to emit signal on" msgstr "Percorso oggetto su cui emettere il segnale" -#: ../gio/gdbus-tool.c:538 +#: ../gio/gdbus-tool.c:544 msgid "Signal and interface name" msgstr "Segnale e nome dell'interfaccia" -#: ../gio/gdbus-tool.c:570 +#: ../gio/gdbus-tool.c:576 msgid "Emit a signal." msgstr "Emette un segnale." -#: ../gio/gdbus-tool.c:604 ../gio/gdbus-tool.c:836 ../gio/gdbus-tool.c:1571 -#: ../gio/gdbus-tool.c:1799 +#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583 +#: ../gio/gdbus-tool.c:1818 #, c-format msgid "Error connecting: %s\n" msgstr "Errore nel connettersi: %s\n" -#: ../gio/gdbus-tool.c:616 +#: ../gio/gdbus-tool.c:622 #, c-format msgid "Error: object path not specified.\n" msgstr "Errore: non è specificato il percorso dell'oggetto.\n" -#: ../gio/gdbus-tool.c:621 ../gio/gdbus-tool.c:897 ../gio/gdbus-tool.c:1629 -#: ../gio/gdbus-tool.c:1858 +#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648 +#: ../gio/gdbus-tool.c:1884 #, c-format msgid "Error: %s is not a valid object path\n" msgstr "Errore: \"%s\" non è un percorso di oggetto valido\n" -#: ../gio/gdbus-tool.c:627 +#: ../gio/gdbus-tool.c:633 #, c-format msgid "Error: signal not specified.\n" msgstr "Errore: segnale non specificato.\n" -#: ../gio/gdbus-tool.c:634 +#: ../gio/gdbus-tool.c:640 #, c-format msgid "Error: signal must be the fully-qualified name.\n" msgstr "Errore: il segnale deve essere il nome fully-qualified.\n" -#: ../gio/gdbus-tool.c:642 +#: ../gio/gdbus-tool.c:648 #, c-format msgid "Error: %s is not a valid interface name\n" msgstr "Errore: \"%s\" non è un nome di interfaccia valido\n" -#: ../gio/gdbus-tool.c:648 +#: ../gio/gdbus-tool.c:654 #, c-format msgid "Error: %s is not a valid member name\n" msgstr "Errore: \"%s\" non è un nome di membro valido\n" -#: ../gio/gdbus-tool.c:654 +#: ../gio/gdbus-tool.c:660 #, c-format msgid "Error: %s is not a valid unique bus name.\n" msgstr "Errore: \"%s\" non è un nome di bus univoco valido.\n" #. Use the original non-"parse-me-harder" error -#: ../gio/gdbus-tool.c:681 ../gio/gdbus-tool.c:999 +#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011 #, c-format msgid "Error parsing parameter %d: %s\n" msgstr "Errore nell'analizzare il parametro %d: %s\n" -#: ../gio/gdbus-tool.c:712 +#: ../gio/gdbus-tool.c:718 #, c-format msgid "Error flushing connection: %s\n" msgstr "Errore nell'eseguire il flush della connessione: %s\n" -#: ../gio/gdbus-tool.c:739 +#: ../gio/gdbus-tool.c:745 msgid "Destination name to invoke method on" msgstr "Nome della destinazione su cui invocare il metodo" -#: ../gio/gdbus-tool.c:740 +#: ../gio/gdbus-tool.c:746 msgid "Object path to invoke method on" msgstr "Percorso dell'oggetto su cui invocare il metodo" # oppure "Nome del metodo e dell'interfaccia" ??? -#: ../gio/gdbus-tool.c:741 +#: ../gio/gdbus-tool.c:747 msgid "Method and interface name" msgstr "Metodo e nome dell'interfaccia" -#: ../gio/gdbus-tool.c:742 +#: ../gio/gdbus-tool.c:748 msgid "Timeout in seconds" msgstr "Timeout in secondi" -#: ../gio/gdbus-tool.c:781 +#: ../gio/gdbus-tool.c:787 msgid "Invoke a method on a remote object." msgstr "Invoca un metodo su un oggetto remoto." -#: ../gio/gdbus-tool.c:856 ../gio/gdbus-tool.c:1590 ../gio/gdbus-tool.c:1818 +#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837 #, c-format msgid "Error: Destination is not specified\n" msgstr "Errore: non è specificata la destinazione\n" -#: ../gio/gdbus-tool.c:877 ../gio/gdbus-tool.c:1609 +#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849 +#, c-format +msgid "Error: %s is not a valid bus name\n" +msgstr "Errore: \"%s\" non è un nome di bus valido\n" + +#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628 #, c-format msgid "Error: Object path is not specified\n" msgstr "Errore: non è specificato il percorso dell'oggetto\n" -#: ../gio/gdbus-tool.c:912 +#: ../gio/gdbus-tool.c:924 #, c-format msgid "Error: Method name is not specified\n" msgstr "Errore: non è specificato il nome del metodo\n" -#: ../gio/gdbus-tool.c:923 +#: ../gio/gdbus-tool.c:935 #, c-format msgid "Error: Method name '%s' is invalid\n" msgstr "Errore: il nome di metodo \"%s\" non è valido\n" -#: ../gio/gdbus-tool.c:991 +#: ../gio/gdbus-tool.c:1003 #, c-format msgid "Error parsing parameter %d of type '%s': %s\n" msgstr "Errore nell'analizzare il parametro %d di tipo \"%s\": %s\n" # predicato > sostantivo per introspezione, direi che funziona -#: ../gio/gdbus-tool.c:1428 +#: ../gio/gdbus-tool.c:1440 msgid "Destination name to introspect" msgstr "Nome destinazione per l'introspezione" -#: ../gio/gdbus-tool.c:1429 +#: ../gio/gdbus-tool.c:1441 msgid "Object path to introspect" msgstr "Percorso oggetto per l'introspezione" -#: ../gio/gdbus-tool.c:1430 +#: ../gio/gdbus-tool.c:1442 msgid "Print XML" msgstr "Stampa XML" -#: ../gio/gdbus-tool.c:1431 +#: ../gio/gdbus-tool.c:1443 msgid "Introspect children" msgstr "Figli introspezione" -#: ../gio/gdbus-tool.c:1432 +#: ../gio/gdbus-tool.c:1444 msgid "Only print properties" msgstr "Stampa solo le proprietà" -#: ../gio/gdbus-tool.c:1523 +#: ../gio/gdbus-tool.c:1535 msgid "Introspect a remote object." msgstr "Esegue l'introspezione su un oggetto remoto." # predicato > sostantivo per monitor, direi che funziona -#: ../gio/gdbus-tool.c:1721 +#: ../gio/gdbus-tool.c:1740 msgid "Destination name to monitor" msgstr "Nome destinazione per il monitoraggio" -#: ../gio/gdbus-tool.c:1722 +#: ../gio/gdbus-tool.c:1741 msgid "Object path to monitor" msgstr "Percorso oggetto per il monitoraggio" -#: ../gio/gdbus-tool.c:1751 +#: ../gio/gdbus-tool.c:1770 msgid "Monitor a remote object." msgstr "Esegue il monitoraggio su un oggetto remoto." # NdT: nome di applicazione (quando manca) -#: ../gio/gdesktopappinfo.c:1999 ../gio/gdesktopappinfo.c:4530 -#: ../gio/gwin32appinfo.c:219 +#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4503 msgid "Unnamed" msgstr "Senza nome" -#: ../gio/gdesktopappinfo.c:2408 +#: ../gio/gdesktopappinfo.c:2402 msgid "Desktop file didn't specify Exec field" msgstr "Il file .desktop non specifica il campo Exec" -#: ../gio/gdesktopappinfo.c:2693 +#: ../gio/gdesktopappinfo.c:2687 msgid "Unable to find terminal required for application" msgstr "Impossibile trovare il terminale richiesto per l'applicazione" # NdT il primo %s è il percorso alla cartella .local/share/application # messo tra parentesi per scelta stilistica... -#: ../gio/gdesktopappinfo.c:3114 +#: ../gio/gdesktopappinfo.c:3099 #, c-format msgid "Can't create user application configuration folder %s: %s" msgstr "" @@ -1250,21 +1273,21 @@ msgstr "" # NdT il primo %s è il percorso alla cartella .local/share/application # messo tra parentesi per scelta stilistica... -#: ../gio/gdesktopappinfo.c:3118 +#: ../gio/gdesktopappinfo.c:3103 #, c-format msgid "Can't create user MIME configuration folder %s: %s" msgstr "Impossibile creare la cartella utente di configurazione MIME (%s): %s" -#: ../gio/gdesktopappinfo.c:3358 ../gio/gdesktopappinfo.c:3382 +#: ../gio/gdesktopappinfo.c:3343 ../gio/gdesktopappinfo.c:3367 msgid "Application information lacks an identifier" msgstr "Manca un identificatore nelle informazioni dell'applicazione" -#: ../gio/gdesktopappinfo.c:3615 +#: ../gio/gdesktopappinfo.c:3601 #, c-format msgid "Can't create user desktop file %s" msgstr "Impossibile creare il file .desktop utente %s" -#: ../gio/gdesktopappinfo.c:3749 +#: ../gio/gdesktopappinfo.c:3735 #, c-format msgid "Custom definition for %s" msgstr "Definizione personalizzata per %s" @@ -1292,11 +1315,15 @@ msgstr "l'unità non implementa l'azione start" msgid "drive doesn't implement stop" msgstr "l'unità non implementa l'azione stop" -#: ../gio/gdummytlsbackend.c:189 ../gio/gdummytlsbackend.c:311 -#: ../gio/gdummytlsbackend.c:401 +#: ../gio/gdummytlsbackend.c:195 ../gio/gdummytlsbackend.c:317 +#: ../gio/gdummytlsbackend.c:509 msgid "TLS support is not available" msgstr "Non è disponibile il supporto a TLS" +#: ../gio/gdummytlsbackend.c:419 +msgid "DTLS support is not available" +msgstr "Non è disponibile il supporto a DTLS" + #: ../gio/gemblem.c:323 #, c-format msgid "Can't handle version %d of GEmblem encoding" @@ -1321,14 +1348,14 @@ msgstr "Numero di token malformato (%d) nella codifica GEmblemedIcon" msgid "Expected a GEmblem for GEmblemedIcon" msgstr "Atteso un GEmblem per GEmblemedIcon" -#: ../gio/gfile.c:968 ../gio/gfile.c:1206 ../gio/gfile.c:1344 -#: ../gio/gfile.c:1582 ../gio/gfile.c:1637 ../gio/gfile.c:1695 -#: ../gio/gfile.c:1779 ../gio/gfile.c:1836 ../gio/gfile.c:1900 -#: ../gio/gfile.c:1955 ../gio/gfile.c:3603 ../gio/gfile.c:3658 -#: ../gio/gfile.c:3893 ../gio/gfile.c:3935 ../gio/gfile.c:4398 -#: ../gio/gfile.c:4809 ../gio/gfile.c:4894 ../gio/gfile.c:4984 -#: ../gio/gfile.c:5081 ../gio/gfile.c:5168 ../gio/gfile.c:5269 -#: ../gio/gfile.c:7788 ../gio/gfile.c:7878 ../gio/gfile.c:7962 +#: ../gio/gfile.c:969 ../gio/gfile.c:1207 ../gio/gfile.c:1345 +#: ../gio/gfile.c:1583 ../gio/gfile.c:1638 ../gio/gfile.c:1696 +#: ../gio/gfile.c:1780 ../gio/gfile.c:1837 ../gio/gfile.c:1901 +#: ../gio/gfile.c:1956 ../gio/gfile.c:3604 ../gio/gfile.c:3659 +#: ../gio/gfile.c:3894 ../gio/gfile.c:3936 ../gio/gfile.c:4404 +#: ../gio/gfile.c:4815 ../gio/gfile.c:4900 ../gio/gfile.c:4990 +#: ../gio/gfile.c:5087 ../gio/gfile.c:5174 ../gio/gfile.c:5275 +#: ../gio/gfile.c:7796 ../gio/gfile.c:7886 ../gio/gfile.c:7970 #: ../gio/win32/gwinhttpfile.c:437 msgid "Operation not supported" msgstr "Operazione non supportata" @@ -1343,71 +1370,71 @@ msgstr "Operazione non supportata" #. Translators: This is an error message when trying to find #. * the enclosing (user visible) mount of a file, but none #. * exists. -#: ../gio/gfile.c:1467 ../gio/glocalfile.c:1103 ../gio/glocalfile.c:1114 -#: ../gio/glocalfile.c:1127 +#: ../gio/gfile.c:1468 ../gio/glocalfile.c:1134 ../gio/glocalfile.c:1145 +#: ../gio/glocalfile.c:1158 msgid "Containing mount does not exist" msgstr "L'oggetto mount contenuto non esiste" -#: ../gio/gfile.c:2514 ../gio/glocalfile.c:2337 +#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2376 msgid "Can't copy over directory" msgstr "Impossibile copiare sopra la directory" -#: ../gio/gfile.c:2574 +#: ../gio/gfile.c:2575 msgid "Can't copy directory over directory" msgstr "Impossibile copiare la directory sopra la directory" -#: ../gio/gfile.c:2582 ../gio/glocalfile.c:2346 +#: ../gio/gfile.c:2583 ../gio/glocalfile.c:2385 msgid "Target file exists" msgstr "Il file destinazione esiste" -#: ../gio/gfile.c:2601 +#: ../gio/gfile.c:2602 msgid "Can't recursively copy directory" msgstr "Impossibile copiare la directory ricorsivamente" # see man splice(2) :) -#: ../gio/gfile.c:2883 +#: ../gio/gfile.c:2884 msgid "Splice not supported" msgstr "Splice non supportato" -#: ../gio/gfile.c:2887 +#: ../gio/gfile.c:2888 #, c-format msgid "Error splicing file: %s" msgstr "Errore nell'eseguire lo splice del file: %s" -#: ../gio/gfile.c:3018 +#: ../gio/gfile.c:3019 msgid "Copy (reflink/clone) between mounts is not supported" msgstr "Copia (reflink/clone) tra oggetti mount non supportato" -#: ../gio/gfile.c:3022 +#: ../gio/gfile.c:3023 msgid "Copy (reflink/clone) is not supported or invalid" msgstr "Copia (reflink/clone) non supportato o non valido" -#: ../gio/gfile.c:3027 +#: ../gio/gfile.c:3028 msgid "Copy (reflink/clone) is not supported or didn't work" msgstr "Copia (reflink/clone) non supportato o non ha funzionato" -#: ../gio/gfile.c:3090 +#: ../gio/gfile.c:3091 msgid "Can't copy special file" msgstr "Impossibile copiare il file speciale" -#: ../gio/gfile.c:3883 +#: ../gio/gfile.c:3884 msgid "Invalid symlink value given" msgstr "Fornito valore di collegamento simbolico non valido" -#: ../gio/gfile.c:4044 +#: ../gio/gfile.c:4045 msgid "Trash not supported" msgstr "Cestino non supportato" -#: ../gio/gfile.c:4156 +#: ../gio/gfile.c:4157 #, c-format msgid "File names cannot contain '%c'" msgstr "I nomi di file non possono contenere '%c'" -#: ../gio/gfile.c:6580 ../gio/gvolume.c:363 +#: ../gio/gfile.c:6586 ../gio/gvolume.c:363 msgid "volume doesn't implement mount" msgstr "il volume non implementa l'azione mount" -#: ../gio/gfile.c:6689 +#: ../gio/gfile.c:6695 msgid "No application is registered as handling this file" msgstr "Non risulta registrata alcuna applicazione per gestire questo file" @@ -1533,16 +1560,16 @@ msgstr "L'indirizzo presenta bit impostati oltre la lunghezza del prefisso" msgid "Could not parse '%s' as IP address mask" msgstr "Impossibile analizzare \"%s\" come maschera di indirizzo IP" -#: ../gio/ginetsocketaddress.c:196 ../gio/ginetsocketaddress.c:213 -#: ../gio/gunixsocketaddress.c:209 +#: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220 +#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:216 msgid "Not enough space for socket address" msgstr "Spazio non sufficiente per l'indirizzo del socket" -#: ../gio/ginetsocketaddress.c:228 +#: ../gio/ginetsocketaddress.c:235 msgid "Unsupported socket address" msgstr "Indirizzo del socket non supportato" -#: ../gio/ginputstream.c:185 +#: ../gio/ginputstream.c:188 msgid "Input stream doesn't implement read" msgstr "Lo stream di input non implementa la lettura" @@ -1553,12 +1580,12 @@ msgstr "Lo stream di input non implementa la lettura" #. Translators: This is an error you get if there is #. * already an operation running against this stream when #. * you try to start one -#: ../gio/ginputstream.c:1212 ../gio/giostream.c:288 -#: ../gio/goutputstream.c:1664 +#: ../gio/ginputstream.c:1215 ../gio/giostream.c:310 +#: ../gio/goutputstream.c:1668 msgid "Stream has outstanding operation" msgstr "Lo stream presenta un'operazione in sospeso" -#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1453 +#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1491 #, c-format msgid "Element <%s> not allowed inside <%s>" msgstr "Elemento <%s> non ammesso dentro <%s>" @@ -1603,7 +1630,7 @@ msgstr "Errore nel leggere il file %s: %s" msgid "Error compressing file %s" msgstr "Errore nel comprimere il file %s" -#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1565 +#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1603 #, c-format msgid "text may not appear inside <%s>" msgstr "il testo non può apparire all'interno di <%s>" @@ -1619,8 +1646,8 @@ msgid "" msgstr "" "Le directory da cui leggere i file (come predefinita la directory corrente)" -#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:1994 -#: ../gio/glib-compile-schemas.c:2023 +#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2036 +#: ../gio/glib-compile-schemas.c:2065 msgid "DIRECTORY" msgstr "DIRECTORY" @@ -1672,17 +1699,17 @@ msgstr "" msgid "You should give exactly one file name\n" msgstr "È necessario indicare esattamente un nome di file\n" -#: ../gio/glib-compile-schemas.c:772 +#: ../gio/glib-compile-schemas.c:784 msgid "empty names are not permitted" msgstr "non sono permessi nomi vuoti" -#: ../gio/glib-compile-schemas.c:782 +#: ../gio/glib-compile-schemas.c:794 #, c-format msgid "invalid name '%s': names must begin with a lowercase letter" msgstr "" "nome \"%s\" non valido: i nomi devono cominciare con una lettera minuscola" -#: ../gio/glib-compile-schemas.c:794 +#: ../gio/glib-compile-schemas.c:806 #, c-format msgid "" "invalid name '%s': invalid character '%c'; only lowercase letters, numbers " @@ -1691,39 +1718,39 @@ msgstr "" "nome \"%s\" non valido: carattere '%c' non valido; sono permessi sono " "lettere minuscole, numeri e trattino ('-')." -#: ../gio/glib-compile-schemas.c:803 +#: ../gio/glib-compile-schemas.c:815 #, c-format msgid "invalid name '%s': two successive hyphens ('--') are not permitted." msgstr "" "nome \"%s\" non valido: non sono permessi due trattini consecutivi ('--')." -#: ../gio/glib-compile-schemas.c:812 +#: ../gio/glib-compile-schemas.c:824 #, c-format msgid "invalid name '%s': the last character may not be a hyphen ('-')." msgstr "" "nome \"%s\" non valido: l'ultimo carattere non può essere un trattino ('-')." -#: ../gio/glib-compile-schemas.c:820 +#: ../gio/glib-compile-schemas.c:832 #, c-format msgid "invalid name '%s': maximum length is 1024" msgstr "nome \"%s\" non valido: la lunghezza massima è 1024" -#: ../gio/glib-compile-schemas.c:889 +#: ../gio/glib-compile-schemas.c:901 #, c-format msgid " already specified" msgstr " già specificato" -#: ../gio/glib-compile-schemas.c:915 +#: ../gio/glib-compile-schemas.c:927 msgid "cannot add keys to a 'list-of' schema" msgstr "impossibile aggiungere chiavi a uno schema \"list-of\"" # maschile, inteso come elemento -#: ../gio/glib-compile-schemas.c:926 +#: ../gio/glib-compile-schemas.c:938 #, c-format msgid " already specified" msgstr " già specificato" -#: ../gio/glib-compile-schemas.c:944 +#: ../gio/glib-compile-schemas.c:956 #, c-format msgid "" " shadows in ; use " @@ -1732,7 +1759,7 @@ msgstr "" " esegue lo shadow di in ; " "usare per modificare il valore" -#: ../gio/glib-compile-schemas.c:955 +#: ../gio/glib-compile-schemas.c:967 #, c-format msgid "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " @@ -1741,59 +1768,59 @@ msgstr "" "è necessario specificare come un attributo per solo uno tra \"type\", " "\"enum\" o \"flags\"" -#: ../gio/glib-compile-schemas.c:974 +#: ../gio/glib-compile-schemas.c:986 #, c-format msgid "<%s id='%s'> not (yet) defined." msgstr "<%s id='%s'> non (ancora) definito." -#: ../gio/glib-compile-schemas.c:989 +#: ../gio/glib-compile-schemas.c:1001 #, c-format msgid "invalid GVariant type string '%s'" msgstr "stringa tipo GVariant \"%s\" non valida" # direi che la doppia negazione qui possiamo lasciarla -#: ../gio/glib-compile-schemas.c:1019 +#: ../gio/glib-compile-schemas.c:1031 msgid " given but schema isn't extending anything" msgstr " indicato, ma lo schema non sta estendendo nulla" -#: ../gio/glib-compile-schemas.c:1032 +#: ../gio/glib-compile-schemas.c:1044 #, c-format msgid "no to override" msgstr "nessun da scavalcare" -#: ../gio/glib-compile-schemas.c:1040 +#: ../gio/glib-compile-schemas.c:1052 #, c-format msgid " already specified" msgstr " già specificato" -#: ../gio/glib-compile-schemas.c:1111 +#: ../gio/glib-compile-schemas.c:1125 #, c-format msgid " already specified" msgstr " già specificato" -#: ../gio/glib-compile-schemas.c:1123 +#: ../gio/glib-compile-schemas.c:1137 #, c-format msgid " extends not yet existing schema '%s'" msgstr " estende lo schema \"%s\" non ancora esistente" # o esistenti?? -#: ../gio/glib-compile-schemas.c:1139 +#: ../gio/glib-compile-schemas.c:1153 #, c-format msgid " is list of not yet existing schema '%s'" msgstr " è un elenco di schema \"%s\" non ancora esistente" # diciamocelo, gira roba forte... -#: ../gio/glib-compile-schemas.c:1147 +#: ../gio/glib-compile-schemas.c:1161 #, c-format msgid "Can not be a list of a schema with a path" msgstr "Non può essere un elenco di uno schema con un percorso" -#: ../gio/glib-compile-schemas.c:1157 +#: ../gio/glib-compile-schemas.c:1171 #, c-format msgid "Can not extend a schema with a path" msgstr "Non può estendere uno schema con un percorso" -#: ../gio/glib-compile-schemas.c:1167 +#: ../gio/glib-compile-schemas.c:1181 #, c-format msgid "" " is a list, extending which is not a list" @@ -1801,7 +1828,7 @@ msgstr "" " è un elenco, che estende che non è un " "elenco" -#: ../gio/glib-compile-schemas.c:1177 +#: ../gio/glib-compile-schemas.c:1191 #, c-format msgid "" " extends but '%s' " @@ -1810,64 +1837,69 @@ msgstr "" " estende , ma \"%s" "\" non estende \"%s\"" -#: ../gio/glib-compile-schemas.c:1194 +#: ../gio/glib-compile-schemas.c:1208 #, c-format msgid "a path, if given, must begin and end with a slash" msgstr "un percorso, se fornito, deve iniziare e terminare con uno slash" -#: ../gio/glib-compile-schemas.c:1201 +#: ../gio/glib-compile-schemas.c:1215 #, c-format msgid "the path of a list must end with ':/'" msgstr "il percorso di una list deve terminare con \":/\"" -#: ../gio/glib-compile-schemas.c:1233 +#: ../gio/glib-compile-schemas.c:1247 #, c-format msgid "<%s id='%s'> already specified" msgstr "<%s id='%s'> già specificato" -#: ../gio/glib-compile-schemas.c:1457 +#: ../gio/glib-compile-schemas.c:1397 ../gio/glib-compile-schemas.c:1413 +#, c-format +msgid "Only one <%s> element allowed inside <%s>" +msgstr "Solo un elemento <%s> ammesso dentro <%s>" + +#: ../gio/glib-compile-schemas.c:1495 #, c-format msgid "Element <%s> not allowed at the top level" msgstr "Elemento <%s> non ammesso come primo livello" #. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1752 ../gio/glib-compile-schemas.c:1823 -#: ../gio/glib-compile-schemas.c:1899 +#: ../gio/glib-compile-schemas.c:1794 ../gio/glib-compile-schemas.c:1865 +#: ../gio/glib-compile-schemas.c:1941 #, c-format msgid "--strict was specified; exiting.\n" msgstr "è stato specificato --strict, uscita\n" -#: ../gio/glib-compile-schemas.c:1760 +#: ../gio/glib-compile-schemas.c:1802 #, c-format msgid "This entire file has been ignored.\n" msgstr "Questo intero file è stato ignorato.\n" -#: ../gio/glib-compile-schemas.c:1819 +#: ../gio/glib-compile-schemas.c:1861 #, c-format msgid "Ignoring this file.\n" msgstr "Ignorato questo file.\n" # override... -#: ../gio/glib-compile-schemas.c:1859 +#: ../gio/glib-compile-schemas.c:1901 #, c-format msgid "No such key '%s' in schema '%s' as specified in override file '%s'" msgstr "" "Nessuna chiave \"%s\" nello schema \"%s\" come specificato nel file di " "override \"%s\"" -#: ../gio/glib-compile-schemas.c:1865 ../gio/glib-compile-schemas.c:1923 -#: ../gio/glib-compile-schemas.c:1951 +#: ../gio/glib-compile-schemas.c:1907 ../gio/glib-compile-schemas.c:1965 +#: ../gio/glib-compile-schemas.c:1993 #, c-format msgid "; ignoring override for this key.\n" msgstr "; ignorato lo scavalcamento per questa chiave.\n" -#: ../gio/glib-compile-schemas.c:1869 ../gio/glib-compile-schemas.c:1927 -#: ../gio/glib-compile-schemas.c:1955 +#: ../gio/glib-compile-schemas.c:1911 ../gio/glib-compile-schemas.c:1969 +#: ../gio/glib-compile-schemas.c:1997 #, c-format msgid " and --strict was specified; exiting.\n" msgstr " ed è stato specificato --strict; uscita.\n" -#: ../gio/glib-compile-schemas.c:1885 +#: ../gio/glib-compile-schemas.c:1927 #, c-format msgid "" "error parsing key '%s' in schema '%s' as specified in override file '%s': %s." @@ -1875,12 +1907,12 @@ msgstr "" "errore nell'analizzare la chiave \"%s\" nello schema \"%s\" come specificato " "nel file di override \"%s\": %s." -#: ../gio/glib-compile-schemas.c:1895 +#: ../gio/glib-compile-schemas.c:1937 #, c-format msgid "Ignoring override for this key.\n" msgstr "Ignorato l'override per questa chiave.\n" -#: ../gio/glib-compile-schemas.c:1913 +#: ../gio/glib-compile-schemas.c:1955 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is outside the " @@ -1889,7 +1921,7 @@ msgstr "" "l'override per la chiave \"%s\" nello schema \"%s\" nel file di override \"%s" "\" è fuori dall'intervallo indicato nello schema" -#: ../gio/glib-compile-schemas.c:1941 +#: ../gio/glib-compile-schemas.c:1983 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is not in the " @@ -1899,23 +1931,23 @@ msgstr "" "\" non è nell'elenco delle scelte valide" # FIXME: le altre sono maiuscole -#: ../gio/glib-compile-schemas.c:1994 +#: ../gio/glib-compile-schemas.c:2036 msgid "where to store the gschemas.compiled file" msgstr "Dove memorizzare il file gschemas.compiled" -#: ../gio/glib-compile-schemas.c:1995 +#: ../gio/glib-compile-schemas.c:2037 msgid "Abort on any errors in schemas" msgstr "Interrompe l'esecuzione per ogni errore negli schemas" -#: ../gio/glib-compile-schemas.c:1996 +#: ../gio/glib-compile-schemas.c:2038 msgid "Do not write the gschema.compiled file" msgstr "Non scrive il file gschema.compiled" -#: ../gio/glib-compile-schemas.c:1997 +#: ../gio/glib-compile-schemas.c:2039 msgid "Do not enforce key name restrictions" msgstr "Non forza le limitazioni sui nomi di chiave" -#: ../gio/glib-compile-schemas.c:2026 +#: ../gio/glib-compile-schemas.c:2068 msgid "" "Compile all GSettings schema files into a schema cache.\n" "Schema files are required to have the extension .gschema.xml,\n" @@ -1925,152 +1957,147 @@ msgstr "" "I file schema devo avere estensione .gschema.xml,\n" "e il file cache è chiamato gschemas.compiled." -#: ../gio/glib-compile-schemas.c:2042 +#: ../gio/glib-compile-schemas.c:2084 #, c-format msgid "You should give exactly one directory name\n" msgstr "È necessario indicare esattamente un nome di directory\n" -#: ../gio/glib-compile-schemas.c:2081 +#: ../gio/glib-compile-schemas.c:2123 #, c-format msgid "No schema files found: " msgstr "Nessun file schema trovato: " -#: ../gio/glib-compile-schemas.c:2084 +#: ../gio/glib-compile-schemas.c:2126 #, c-format msgid "doing nothing.\n" msgstr "nessuna azione.\n" # visto che se lo rimuovo esisto, proviamo con preesistente -#: ../gio/glib-compile-schemas.c:2087 +#: ../gio/glib-compile-schemas.c:2129 #, c-format msgid "removed existing output file.\n" msgstr "rimosso il file di output preesistente.\n" -#: ../gio/glocaldirectorymonitor.c:224 -msgid "Unable to find default local directory monitor type" -msgstr "" -"Impossibile trovare il tipo di monitor predefinito per directory locali" - -#: ../gio/glocalfile.c:604 ../gio/win32/gwinhttpfile.c:420 +#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420 #, c-format msgid "Invalid filename %s" msgstr "Nome di file %s non valido" -#: ../gio/glocalfile.c:981 +#: ../gio/glocalfile.c:1012 #, c-format msgid "Error getting filesystem info: %s" msgstr "Errore nell'ottenere informazioni sul file system: %s" -#: ../gio/glocalfile.c:1149 +#: ../gio/glocalfile.c:1180 msgid "Can't rename root directory" msgstr "Impossibile rinominare la directory root" -#: ../gio/glocalfile.c:1169 ../gio/glocalfile.c:1195 +#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226 #, c-format msgid "Error renaming file: %s" msgstr "Errore nel rinominare il file: %s" -#: ../gio/glocalfile.c:1178 +#: ../gio/glocalfile.c:1209 msgid "Can't rename file, filename already exists" msgstr "Impossibile rinominare il file, il nome di file esiste già" -#: ../gio/glocalfile.c:1191 ../gio/glocalfile.c:2210 ../gio/glocalfile.c:2239 -#: ../gio/glocalfile.c:2399 ../gio/glocalfileoutputstream.c:549 +#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2249 ../gio/glocalfile.c:2278 +#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549 msgid "Invalid filename" msgstr "Nome di file non valido" -#: ../gio/glocalfile.c:1358 ../gio/glocalfile.c:1382 +#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413 msgid "Can't open directory" msgstr "Impossibile aprire la directory" -#: ../gio/glocalfile.c:1366 +#: ../gio/glocalfile.c:1397 #, c-format msgid "Error opening file: %s" msgstr "Errore nell'aprire il file: %s" -#: ../gio/glocalfile.c:1507 +#: ../gio/glocalfile.c:1538 #, c-format msgid "Error removing file: %s" msgstr "Errore nel rimuovere il file: %s" -#: ../gio/glocalfile.c:1887 +#: ../gio/glocalfile.c:1922 #, c-format msgid "Error trashing file: %s" msgstr "Errore nel cestinare il file: %s" -#: ../gio/glocalfile.c:1910 +#: ../gio/glocalfile.c:1945 #, c-format msgid "Unable to create trash dir %s: %s" msgstr "Impossibile creare la directory cestino \"%s\": %s" -#: ../gio/glocalfile.c:1931 +#: ../gio/glocalfile.c:1966 msgid "Unable to find toplevel directory for trash" msgstr "Impossibile trovare la directory di livello superiore per il cestino" -#: ../gio/glocalfile.c:2010 ../gio/glocalfile.c:2030 +#: ../gio/glocalfile.c:2045 ../gio/glocalfile.c:2065 msgid "Unable to find or create trash directory" msgstr "Impossibile trovare o creare la directory cestino" # consultare la specifica del cestino di freedesktop.org # (in breve per ogni file cestinato viene creata una copia # del file e un file di informazioni - data, posizione originaria...) -#: ../gio/glocalfile.c:2064 +#: ../gio/glocalfile.c:2099 #, c-format msgid "Unable to create trashing info file: %s" msgstr "Impossibile creare il file informazioni cestinamento: %s" -#: ../gio/glocalfile.c:2095 ../gio/glocalfile.c:2100 ../gio/glocalfile.c:2180 -#: ../gio/glocalfile.c:2187 +#: ../gio/glocalfile.c:2157 ../gio/glocalfile.c:2162 ../gio/glocalfile.c:2219 +#: ../gio/glocalfile.c:2226 #, c-format msgid "Unable to trash file: %s" msgstr "Impossibile cestinare il file: %s" -#: ../gio/glocalfile.c:2188 ../glib/gregex.c:281 +#: ../gio/glocalfile.c:2227 ../glib/gregex.c:281 msgid "internal error" msgstr "errore interno" -#: ../gio/glocalfile.c:2214 +#: ../gio/glocalfile.c:2253 #, c-format msgid "Error creating directory: %s" msgstr "Errore nel creare la directory: %s" -#: ../gio/glocalfile.c:2243 +#: ../gio/glocalfile.c:2282 #, c-format msgid "Filesystem does not support symbolic links" msgstr "Il file system non supporta i collegamenti simbolici" # FIXME: all other occurrences are "symlink" -#: ../gio/glocalfile.c:2247 +#: ../gio/glocalfile.c:2286 #, c-format msgid "Error making symbolic link: %s" msgstr "Errore nel creare il collegamento simbolico: %s" -#: ../gio/glocalfile.c:2309 ../gio/glocalfile.c:2403 +#: ../gio/glocalfile.c:2348 ../gio/glocalfile.c:2442 #, c-format msgid "Error moving file: %s" msgstr "Errore nello spostare il file: %s" # ma che senso ha??? -#: ../gio/glocalfile.c:2332 +#: ../gio/glocalfile.c:2371 msgid "Can't move directory over directory" msgstr "Impossibile spostare la directory sopra la directory" -#: ../gio/glocalfile.c:2359 ../gio/glocalfileoutputstream.c:925 +#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:925 #: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954 #: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984 msgid "Backup file creation failed" msgstr "Creazione del file backup non riuscita" -#: ../gio/glocalfile.c:2378 +#: ../gio/glocalfile.c:2417 #, c-format msgid "Error removing target file: %s" msgstr "Errore nel rimuovere il file destinazione: %s" -#: ../gio/glocalfile.c:2392 +#: ../gio/glocalfile.c:2431 msgid "Move between mounts not supported" msgstr "Spostamento tra oggetti mount non supportato" -#: ../gio/glocalfile.c:2603 +#: ../gio/glocalfile.c:2623 #, c-format msgid "Could not determine the disk usage of %s: %s" msgstr "Impossibile determinare l'utilizzo del disco di %s: %s" @@ -2092,84 +2119,84 @@ msgstr "Nome di attributo esteso non valido" msgid "Error setting extended attribute '%s': %s" msgstr "Errore nell'impostare l'attributo esteso «%s»: %s" -#: ../gio/glocalfileinfo.c:1556 +#: ../gio/glocalfileinfo.c:1575 msgid " (invalid encoding)" msgstr " (codifica non valida)" -#: ../gio/glocalfileinfo.c:1747 ../gio/glocalfileoutputstream.c:803 +#: ../gio/glocalfileinfo.c:1766 ../gio/glocalfileoutputstream.c:803 #, c-format msgid "Error when getting information for file '%s': %s" msgstr "Errore nel recuperare informazioni per il file «%s»: %s" -#: ../gio/glocalfileinfo.c:1998 +#: ../gio/glocalfileinfo.c:2017 #, c-format msgid "Error when getting information for file descriptor: %s" msgstr "Errore nel recuperare informazioni per il descrittore di file: %s" -#: ../gio/glocalfileinfo.c:2043 +#: ../gio/glocalfileinfo.c:2062 msgid "Invalid attribute type (uint32 expected)" msgstr "Tipo di attributo non valido (atteso unit32)" -#: ../gio/glocalfileinfo.c:2061 +#: ../gio/glocalfileinfo.c:2080 msgid "Invalid attribute type (uint64 expected)" msgstr "Tipo di attributo non valido (atteso uint64)" -#: ../gio/glocalfileinfo.c:2080 ../gio/glocalfileinfo.c:2099 +#: ../gio/glocalfileinfo.c:2099 ../gio/glocalfileinfo.c:2118 msgid "Invalid attribute type (byte string expected)" msgstr "Tipo di attributo non valido (attesa stringa di byte)" -#: ../gio/glocalfileinfo.c:2134 +#: ../gio/glocalfileinfo.c:2153 msgid "Cannot set permissions on symlinks" msgstr "Impossibile impostare i permessi sui collegamenti simbolici" -#: ../gio/glocalfileinfo.c:2150 +#: ../gio/glocalfileinfo.c:2169 #, c-format msgid "Error setting permissions: %s" msgstr "Errore nell'impostare i permessi: %s" -#: ../gio/glocalfileinfo.c:2201 +#: ../gio/glocalfileinfo.c:2220 #, c-format msgid "Error setting owner: %s" msgstr "Errore nell'impostare il proprietario: %s" -#: ../gio/glocalfileinfo.c:2224 +#: ../gio/glocalfileinfo.c:2243 msgid "symlink must be non-NULL" msgstr "il collegamento simbolico deve essere non-NULL" -#: ../gio/glocalfileinfo.c:2234 ../gio/glocalfileinfo.c:2253 -#: ../gio/glocalfileinfo.c:2264 +#: ../gio/glocalfileinfo.c:2253 ../gio/glocalfileinfo.c:2272 +#: ../gio/glocalfileinfo.c:2283 #, c-format msgid "Error setting symlink: %s" msgstr "Errore nell'impostare il collegamento simbolico: %s" -#: ../gio/glocalfileinfo.c:2243 +#: ../gio/glocalfileinfo.c:2262 msgid "Error setting symlink: file is not a symlink" msgstr "" "Errore nell'impostare il collegamento simbolico: il file non è un " "collegamento" -#: ../gio/glocalfileinfo.c:2369 +#: ../gio/glocalfileinfo.c:2388 #, c-format msgid "Error setting modification or access time: %s" msgstr "Errore nell'impostare l'ora di modifica o accesso: %s" # lasciata minuscola come per precedente messaggio # "symlink must be non-NULL" -#: ../gio/glocalfileinfo.c:2392 +#: ../gio/glocalfileinfo.c:2411 msgid "SELinux context must be non-NULL" msgstr "il contesto SELinux deve essere non-NULL" -#: ../gio/glocalfileinfo.c:2407 +#: ../gio/glocalfileinfo.c:2426 #, c-format msgid "Error setting SELinux context: %s" msgstr "Errore nell'impostare il contesto SELinux: %s" -#: ../gio/glocalfileinfo.c:2414 +#: ../gio/glocalfileinfo.c:2433 msgid "SELinux is not enabled on this system" msgstr "SELinux non è abilitato su questo sistema" # %s è l'attributo -#: ../gio/glocalfileinfo.c:2506 +#: ../gio/glocalfileinfo.c:2525 #, c-format msgid "Setting attribute %s not supported" msgstr "Impostazione dell'attributo %s non supportata" @@ -2192,7 +2219,7 @@ msgstr "Errore nel posizionarsi all'interno del file: %s" msgid "Error closing file: %s" msgstr "Errore nel chiudere il file: %s" -#: ../gio/glocalfilemonitor.c:145 +#: ../gio/glocalfilemonitor.c:840 msgid "Unable to find default local file monitor type" msgstr "Impossibile trovare il tipo di monitor predefinito per file locali" @@ -2245,7 +2272,7 @@ msgstr "Il file è stato modificato dall'esterno" msgid "Error removing old file: %s" msgstr "Errore nel rimuovere il vecchio file: %s" -#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:769 +#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:771 msgid "Invalid GSeekType supplied" msgstr "Fornito GSeekType non valido" @@ -2257,16 +2284,16 @@ msgstr "Richiesta di posizionamento non valida" msgid "Cannot truncate GMemoryInputStream" msgstr "Impossibile troncare GMemoryInputStream" -#: ../gio/gmemoryoutputstream.c:565 +#: ../gio/gmemoryoutputstream.c:567 msgid "Memory output stream not resizable" msgstr "Stream di output di memoria non ridimensionabile" -#: ../gio/gmemoryoutputstream.c:581 +#: ../gio/gmemoryoutputstream.c:583 msgid "Failed to resize memory output stream" msgstr "Ridimensionamento dello stream di output di memoria non riuscito" # spero sia write -> scrittura e non write -> write -#: ../gio/gmemoryoutputstream.c:671 +#: ../gio/gmemoryoutputstream.c:673 msgid "" "Amount of memory required to process the write is larger than available " "address space" @@ -2274,11 +2301,11 @@ msgstr "" "La quantità di memoria necessaria per elaborare la scrittura è più grande " "dello spazio di indirizzamento disponibile" -#: ../gio/gmemoryoutputstream.c:779 +#: ../gio/gmemoryoutputstream.c:781 msgid "Requested seek before the beginning of the stream" msgstr "Richiesto posizionamento prima dell'inizio dello stream" -#: ../gio/gmemoryoutputstream.c:794 +#: ../gio/gmemoryoutputstream.c:796 msgid "Requested seek beyond the end of the stream" msgstr "Richiesto posizionamento oltre la fine dello stream" @@ -2337,16 +2364,16 @@ msgid "mount doesn't implement synchronous content type guessing" msgstr "" "l'oggetto mount non implementa la supposizione sincrona del tipo di contenuto" -#: ../gio/gnetworkaddress.c:383 +#: ../gio/gnetworkaddress.c:378 #, c-format msgid "Hostname '%s' contains '[' but not ']'" msgstr "L'hostname \"%s\" contiene '[' ma non ']'" -#: ../gio/gnetworkmonitorbase.c:199 ../gio/gnetworkmonitorbase.c:302 +#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:309 msgid "Network unreachable" msgstr "Rete irraggiungibile" -#: ../gio/gnetworkmonitorbase.c:237 ../gio/gnetworkmonitorbase.c:267 +#: ../gio/gnetworkmonitorbase.c:244 ../gio/gnetworkmonitorbase.c:274 msgid "Host unreachable" msgstr "Host irraggiungibile" @@ -2364,52 +2391,52 @@ msgstr "Impossibile creare il monitor di rete: " msgid "Could not get network status: " msgstr "impossibile ottenere lo stato della rete: " -#: ../gio/gnetworkmonitornm.c:278 +#: ../gio/gnetworkmonitornm.c:326 #, c-format msgid "NetworkManager version too old" msgstr "Version di NetworkManager troppo datata" -#: ../gio/goutputstream.c:209 ../gio/goutputstream.c:557 +#: ../gio/goutputstream.c:212 ../gio/goutputstream.c:560 msgid "Output stream doesn't implement write" msgstr "Lo stream di output non implementa la scrittura" -#: ../gio/goutputstream.c:518 ../gio/goutputstream.c:1218 +#: ../gio/goutputstream.c:521 ../gio/goutputstream.c:1222 msgid "Source stream is already closed" msgstr "Lo stream sorgente è già chiuso" -#: ../gio/gresolver.c:331 ../gio/gthreadedresolver.c:116 +#: ../gio/gresolver.c:330 ../gio/gthreadedresolver.c:116 #: ../gio/gthreadedresolver.c:126 #, c-format msgid "Error resolving '%s': %s" msgstr "Errore nel risolvere \"%s\": %s" -#: ../gio/gresource.c:298 ../gio/gresource.c:546 ../gio/gresource.c:563 -#: ../gio/gresource.c:684 ../gio/gresource.c:753 ../gio/gresource.c:814 -#: ../gio/gresource.c:894 ../gio/gresourcefile.c:452 -#: ../gio/gresourcefile.c:553 ../gio/gresourcefile.c:655 +#: ../gio/gresource.c:304 ../gio/gresource.c:555 ../gio/gresource.c:572 +#: ../gio/gresource.c:693 ../gio/gresource.c:762 ../gio/gresource.c:823 +#: ../gio/gresource.c:903 ../gio/gresourcefile.c:453 ../gio/gresourcefile.c:576 +#: ../gio/gresourcefile.c:713 #, c-format msgid "The resource at '%s' does not exist" msgstr "La risorsa presso \"%s\" non esiste" -#: ../gio/gresource.c:463 +#: ../gio/gresource.c:469 #, c-format msgid "The resource at '%s' failed to decompress" msgstr "Decompressione della risorsa presso \"%s\" non riuscita" -#: ../gio/gresourcefile.c:651 +#: ../gio/gresourcefile.c:709 #, c-format msgid "The resource at '%s' is not a directory" msgstr "La risorsa presso \"%s\" non è una directory" -#: ../gio/gresourcefile.c:859 +#: ../gio/gresourcefile.c:917 msgid "Input stream doesn't implement seek" msgstr "Lo stream di input non implementa il posizionamento" -#: ../gio/gresource-tool.c:491 +#: ../gio/gresource-tool.c:494 msgid "List sections containing resources in an elf FILE" msgstr "Elenca le sezioni che contengono risorse in un FILE elf" -#: ../gio/gresource-tool.c:497 +#: ../gio/gresource-tool.c:500 msgid "" "List resources\n" "If SECTION is given, only list resources in this section\n" @@ -2419,16 +2446,16 @@ msgstr "" "Se è indicato SEZIONE, elenca solo le risorse in quella sezione\n" "Se è indicato PERCORSO, elenca solo le risorse che corrispondono" -#: ../gio/gresource-tool.c:500 ../gio/gresource-tool.c:510 +#: ../gio/gresource-tool.c:503 ../gio/gresource-tool.c:513 msgid "FILE [PATH]" msgstr "FILE [PERCORSO]" -#: ../gio/gresource-tool.c:501 ../gio/gresource-tool.c:511 -#: ../gio/gresource-tool.c:518 +#: ../gio/gresource-tool.c:504 ../gio/gresource-tool.c:514 +#: ../gio/gresource-tool.c:521 msgid "SECTION" msgstr "SEZIONE" -#: ../gio/gresource-tool.c:506 +#: ../gio/gresource-tool.c:509 msgid "" "List resources with details\n" "If SECTION is given, only list resources in this section\n" @@ -2440,15 +2467,15 @@ msgstr "" "Se è indicato PERCORSO, elenca solo le risorse che corrispondono\n" "I dettagli includono la sezione, la dimensione e la compressione" -#: ../gio/gresource-tool.c:516 +#: ../gio/gresource-tool.c:519 msgid "Extract a resource file to stdout" msgstr "Estrare un file risorsa su stdout" -#: ../gio/gresource-tool.c:517 +#: ../gio/gresource-tool.c:520 msgid "FILE PATH" msgstr "FILE PERCORSO" -#: ../gio/gresource-tool.c:531 +#: ../gio/gresource-tool.c:534 msgid "" "Usage:\n" " gresource [--section SECTION] COMMAND [ARGS...]\n" @@ -2476,7 +2503,7 @@ msgstr "" "Usare 'gresource help COMANDO' per ottenere un aiuto dettagliato.\n" "\n" -#: ../gio/gresource-tool.c:545 +#: ../gio/gresource-tool.c:548 #, c-format msgid "" "Usage:\n" @@ -2491,21 +2518,21 @@ msgstr "" "%s\n" "\n" -#: ../gio/gresource-tool.c:552 +#: ../gio/gresource-tool.c:555 msgid " SECTION An (optional) elf section name\n" msgstr " SEZIONE Un nome sezione elf (opzionale)\n" -#: ../gio/gresource-tool.c:556 ../gio/gsettings-tool.c:648 +#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:639 msgid " COMMAND The (optional) command to explain\n" msgstr "" " COMANDO Il comando (opzionale) da spiegare\n" "\n" -#: ../gio/gresource-tool.c:562 +#: ../gio/gresource-tool.c:565 msgid " FILE An elf file (a binary or a shared library)\n" msgstr " FILE Un file elf (un binario o una libreria condivisa)\n" -#: ../gio/gresource-tool.c:565 +#: ../gio/gresource-tool.c:568 msgid "" " FILE An elf file (a binary or a shared library)\n" " or a compiled resource file\n" @@ -2513,23 +2540,24 @@ msgstr "" " FILE Un file elf (un binario o una libreria condivisa)\n" " o un file risorsa compilato\n" -#: ../gio/gresource-tool.c:569 +#: ../gio/gresource-tool.c:572 msgid "[PATH]" msgstr "[PERCORSO]" -#: ../gio/gresource-tool.c:571 +#: ../gio/gresource-tool.c:574 msgid " PATH An (optional) resource path (may be partial)\n" msgstr " PERCORSO Un (opzionale) percorso risorsa (può essere parziale)\n" -#: ../gio/gresource-tool.c:572 +#: ../gio/gresource-tool.c:575 msgid "PATH" msgstr "PERCORSO" -#: ../gio/gresource-tool.c:574 +#: ../gio/gresource-tool.c:577 msgid " PATH A resource path\n" msgstr " PERCORSO Un percorso risorsa\n" #: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72 +#: ../gio/gsettings-tool.c:830 #, c-format msgid "No such schema '%s'\n" msgstr "Schema \"%s\" inesistente\n" @@ -2565,38 +2593,38 @@ msgstr "Il percorso deve terminare con uno slash (/)\n" msgid "Path must not contain two adjacent slashes (//)\n" msgstr "Il percorso non deve contenere due slash adiacenti (//)\n" -#: ../gio/gsettings-tool.c:490 +#: ../gio/gsettings-tool.c:481 #, c-format msgid "The provided value is outside of the valid range\n" msgstr "Il valore fornito è fuori dell'intervallo valido\n" -#: ../gio/gsettings-tool.c:497 +#: ../gio/gsettings-tool.c:488 #, c-format msgid "The key is not writable\n" msgstr "La chiave non è scrivibile\n" -#: ../gio/gsettings-tool.c:533 +#: ../gio/gsettings-tool.c:524 msgid "List the installed (non-relocatable) schemas" msgstr "Elenca gli schemi (non rilocabili) installati" -#: ../gio/gsettings-tool.c:539 +#: ../gio/gsettings-tool.c:530 msgid "List the installed relocatable schemas" msgstr "Elenca gli schemi rilocabili installati" -#: ../gio/gsettings-tool.c:545 +#: ../gio/gsettings-tool.c:536 msgid "List the keys in SCHEMA" msgstr "Elenca le chiavi in SCHEMA" -#: ../gio/gsettings-tool.c:546 ../gio/gsettings-tool.c:552 -#: ../gio/gsettings-tool.c:589 +#: ../gio/gsettings-tool.c:537 ../gio/gsettings-tool.c:543 +#: ../gio/gsettings-tool.c:580 msgid "SCHEMA[:PATH]" msgstr "SCHEMA[:PERCORSO]" -#: ../gio/gsettings-tool.c:551 +#: ../gio/gsettings-tool.c:542 msgid "List the children of SCHEMA" msgstr "Elenca i figli di SCHEMA" -#: ../gio/gsettings-tool.c:557 +#: ../gio/gsettings-tool.c:548 msgid "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" @@ -2604,44 +2632,44 @@ msgstr "" "Elenca chiavi e valori, ricorsivamente\n" "Se non è fornito alcuno SCHEMA elenca tutte le chiavi\n" -#: ../gio/gsettings-tool.c:559 +#: ../gio/gsettings-tool.c:550 msgid "[SCHEMA[:PATH]]" msgstr "[SCHEMA[:PERCORSO]]" -#: ../gio/gsettings-tool.c:564 +#: ../gio/gsettings-tool.c:555 msgid "Get the value of KEY" msgstr "Ottiene il valore di CHIAVE" -#: ../gio/gsettings-tool.c:565 ../gio/gsettings-tool.c:571 -#: ../gio/gsettings-tool.c:583 ../gio/gsettings-tool.c:595 +#: ../gio/gsettings-tool.c:556 ../gio/gsettings-tool.c:562 +#: ../gio/gsettings-tool.c:574 ../gio/gsettings-tool.c:586 msgid "SCHEMA[:PATH] KEY" msgstr "SCHEMA[:PERCORSO] CHIAVE" -#: ../gio/gsettings-tool.c:570 +#: ../gio/gsettings-tool.c:561 msgid "Query the range of valid values for KEY" msgstr "Interroga l'intervallo di valori ammessi per CHIAVE" -#: ../gio/gsettings-tool.c:576 +#: ../gio/gsettings-tool.c:567 msgid "Set the value of KEY to VALUE" msgstr "Imposta il valore di CHIAVE a VALORE" -#: ../gio/gsettings-tool.c:577 +#: ../gio/gsettings-tool.c:568 msgid "SCHEMA[:PATH] KEY VALUE" msgstr "SCHEMA[:PERCORSO] CHIAVE VALORE" -#: ../gio/gsettings-tool.c:582 +#: ../gio/gsettings-tool.c:573 msgid "Reset KEY to its default value" msgstr "Azzera CHIAVE al suo valore predefinito" -#: ../gio/gsettings-tool.c:588 +#: ../gio/gsettings-tool.c:579 msgid "Reset all keys in SCHEMA to their defaults" msgstr "Azzera tutte le chiavi in SCHEMA ai rispettivi valori predefiniti" -#: ../gio/gsettings-tool.c:594 +#: ../gio/gsettings-tool.c:585 msgid "Check if KEY is writable" msgstr "Verifica se CHIAVE è scrivibile" -#: ../gio/gsettings-tool.c:600 +#: ../gio/gsettings-tool.c:591 msgid "" "Monitor KEY for changes.\n" "If no KEY is specified, monitor all keys in SCHEMA.\n" @@ -2651,11 +2679,11 @@ msgstr "" "Se CHIAVE non è specificato, monitorizza tutte le chiavi in SCHEMA.\n" "Usare ^C per fermare il monitoraggio.\n" -#: ../gio/gsettings-tool.c:603 +#: ../gio/gsettings-tool.c:594 msgid "SCHEMA[:PATH] [KEY]" msgstr "SCHEMA[:PERCORSO] [CHIAVE]" -#: ../gio/gsettings-tool.c:615 +#: ../gio/gsettings-tool.c:606 msgid "" "Usage:\n" " gsettings --version\n" @@ -2700,7 +2728,7 @@ msgstr "" "\n" "Usare \"gsettings help COMANDO\" per ottenere un aiuto dettagliato.\n" -#: ../gio/gsettings-tool.c:638 +#: ../gio/gsettings-tool.c:629 #, c-format msgid "" "Usage:\n" @@ -2715,11 +2743,11 @@ msgstr "" "%s\n" "\n" -#: ../gio/gsettings-tool.c:644 +#: ../gio/gsettings-tool.c:635 msgid " SCHEMADIR A directory to search for additional schemas\n" msgstr " DIR_SCHEMA Una directory in cui cercare schemi aggiuntivi\n" -#: ../gio/gsettings-tool.c:652 +#: ../gio/gsettings-tool.c:643 msgid "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" @@ -2727,161 +2755,179 @@ msgstr "" " SCHEMA Il nome dello schema\n" " PERCORSO Il percorso, per gli schemi rilocabili\n" -#: ../gio/gsettings-tool.c:657 +#: ../gio/gsettings-tool.c:648 msgid " KEY The (optional) key within the schema\n" msgstr " CHIAVE La chiave (opzionale) all'interno dello schema\n" -#: ../gio/gsettings-tool.c:661 +#: ../gio/gsettings-tool.c:652 msgid " KEY The key within the schema\n" msgstr " CHIAVE La chiave all'interno dello schema\n" -#: ../gio/gsettings-tool.c:665 +#: ../gio/gsettings-tool.c:656 msgid " VALUE The value to set\n" msgstr " VALORE Il valore da impostare\n" -#: ../gio/gsettings-tool.c:720 +#: ../gio/gsettings-tool.c:711 #, c-format msgid "Could not load schemas from %s: %s\n" msgstr "Impossibile aprire i file schema da %s: %s\n" -#: ../gio/gsettings-tool.c:782 +#: ../gio/gsettings-tool.c:723 +#, c-format +msgid "No schemas installed\n" +msgstr "Nessun file schema installato\n" + +#: ../gio/gsettings-tool.c:788 #, c-format msgid "Empty schema name given\n" msgstr "Fornito un nome di schema vuoto\n" -#: ../gio/gsettings-tool.c:811 +#: ../gio/gsettings-tool.c:843 #, c-format msgid "No such key '%s'\n" msgstr "Chiave \"%s\" inesistente\n" -#: ../gio/gsocket.c:271 +#: ../gio/gsocket.c:364 msgid "Invalid socket, not initialized" msgstr "Socket non valido, non inizializzato" -#: ../gio/gsocket.c:278 +#: ../gio/gsocket.c:371 #, c-format msgid "Invalid socket, initialization failed due to: %s" msgstr "Socket non valido, inizializzazione non riuscita a causa di: %s" -#: ../gio/gsocket.c:286 +#: ../gio/gsocket.c:379 msgid "Socket is already closed" msgstr "Il socket è già chiuso" -#: ../gio/gsocket.c:301 ../gio/gsocket.c:3627 ../gio/gsocket.c:3682 +#: ../gio/gsocket.c:394 ../gio/gsocket.c:2751 ../gio/gsocket.c:3896 +#: ../gio/gsocket.c:3951 msgid "Socket I/O timed out" msgstr "I/O sul socket scaduto" -#: ../gio/gsocket.c:448 +#: ../gio/gsocket.c:526 #, c-format msgid "creating GSocket from fd: %s" msgstr "creazione di GSocket da FD: %s" -#: ../gio/gsocket.c:476 ../gio/gsocket.c:530 ../gio/gsocket.c:537 +#: ../gio/gsocket.c:554 ../gio/gsocket.c:608 ../gio/gsocket.c:615 #, c-format msgid "Unable to create socket: %s" msgstr "Impossibile creare il socket: %s" -#: ../gio/gsocket.c:530 +#: ../gio/gsocket.c:608 msgid "Unknown family was specified" msgstr "È stata specificata una famiglia sconosciuta" -#: ../gio/gsocket.c:537 +#: ../gio/gsocket.c:615 msgid "Unknown protocol was specified" msgstr "È stato specificato un protocollo sconosciuto" -#: ../gio/gsocket.c:1727 +#: ../gio/gsocket.c:1104 +#, c-format +msgid "Cannot use datagram operations on a non-datagram socket." +msgstr "Impossibile utilizzare operazioni datagram su un socket non-datagram." + +#: ../gio/gsocket.c:1121 +#, c-format +msgid "Cannot use datagram operations on a socket with a timeout set." +msgstr "" +"Impossibile utilizzare operazioni datagram su un socket con impostato un " +"timeout." + +#: ../gio/gsocket.c:1925 #, c-format msgid "could not get local address: %s" msgstr "impossibile ottenere l'indirizzo locale: %s" -#: ../gio/gsocket.c:1770 +#: ../gio/gsocket.c:1968 #, c-format msgid "could not get remote address: %s" msgstr "impossibile ottenere l'indirizzo remoto: %s" -#: ../gio/gsocket.c:1831 +#: ../gio/gsocket.c:2034 #, c-format msgid "could not listen: %s" msgstr "impossibile restare in ascolto: %s" # oppure "nell'eseguire il binding" ?? -#: ../gio/gsocket.c:1930 +#: ../gio/gsocket.c:2133 #, c-format msgid "Error binding to address: %s" msgstr "Errore nel legarsi all'indirizzo: %s" -#: ../gio/gsocket.c:2045 ../gio/gsocket.c:2082 +#: ../gio/gsocket.c:2248 ../gio/gsocket.c:2285 #, c-format msgid "Error joining multicast group: %s" msgstr "Errore nel fare il join al gruppo multicast: %s" -#: ../gio/gsocket.c:2046 ../gio/gsocket.c:2083 +#: ../gio/gsocket.c:2249 ../gio/gsocket.c:2286 #, c-format msgid "Error leaving multicast group: %s" msgstr "Errore nel lasciare il gruppo multicast: %s" -#: ../gio/gsocket.c:2047 +#: ../gio/gsocket.c:2250 msgid "No support for source-specific multicast" msgstr "Nessun supporto per multicast source-specific" -#: ../gio/gsocket.c:2269 +#: ../gio/gsocket.c:2470 #, c-format msgid "Error accepting connection: %s" msgstr "Errore nell'accettare la connessione: %s" -#: ../gio/gsocket.c:2392 +#: ../gio/gsocket.c:2593 msgid "Connection in progress" msgstr "Connessione in corso" -#: ../gio/gsocket.c:2442 +#: ../gio/gsocket.c:2644 msgid "Unable to get pending error: " msgstr "Impossibile ottenere l'errore in sospeso: " -#: ../gio/gsocket.c:2645 +#: ../gio/gsocket.c:2816 #, c-format msgid "Error receiving data: %s" msgstr "Errore nel ricevere i dati: %s" -#: ../gio/gsocket.c:2820 +#: ../gio/gsocket.c:3013 #, c-format msgid "Error sending data: %s" msgstr "Errore nell'inviare i dati: %s" -#: ../gio/gsocket.c:2934 +#: ../gio/gsocket.c:3200 #, c-format msgid "Unable to shutdown socket: %s" msgstr "Impossibile arrestare il socket: %s" -#: ../gio/gsocket.c:3013 +#: ../gio/gsocket.c:3281 #, c-format msgid "Error closing socket: %s" msgstr "Errore nel chiudere il socket: %s" -#: ../gio/gsocket.c:3620 +#: ../gio/gsocket.c:3889 #, c-format msgid "Waiting for socket condition: %s" msgstr "In attesa della condizione del socket: %s" -#: ../gio/gsocket.c:3907 ../gio/gsocket.c:3990 ../gio/gsocket.c:4218 +#: ../gio/gsocket.c:4361 ../gio/gsocket.c:4441 ../gio/gsocket.c:4619 #, c-format msgid "Error sending message: %s" msgstr "Errore nell'inviare il messaggio: %s" -#: ../gio/gsocket.c:3932 +#: ../gio/gsocket.c:4385 msgid "GSocketControlMessage not supported on Windows" msgstr "GSocketControlMessage non supportato su Windows" -#: ../gio/gsocket.c:4546 ../gio/gsocket.c:4684 +#: ../gio/gsocket.c:4840 ../gio/gsocket.c:4913 ../gio/gsocket.c:5140 #, c-format msgid "Error receiving message: %s" msgstr "Errore nel ricevere il messaggio: %s" -#: ../gio/gsocket.c:4806 +#: ../gio/gsocket.c:5412 #, c-format msgid "Unable to read socket credentials: %s" msgstr "Impossibile reggere le credenziali del socket: %s" -#: ../gio/gsocket.c:4815 +#: ../gio/gsocket.c:5421 msgid "g_socket_get_credentials not implemented for this OS" msgstr "g_socket_get_credentials non implementata per questo S.O." @@ -2913,11 +2959,11 @@ msgstr "L'esecuzione del proxy su una connessione non-TCP non è supportato." msgid "Proxy protocol '%s' is not supported." msgstr "Il protocollo proxy \"%s\" non è supportato." -#: ../gio/gsocketlistener.c:188 +#: ../gio/gsocketlistener.c:218 msgid "Listener is already closed" msgstr "Il listener è già chiuso" -#: ../gio/gsocketlistener.c:234 +#: ../gio/gsocketlistener.c:264 msgid "Added socket is closed" msgstr "Il socket aggiunto è chiuso" @@ -3136,12 +3182,13 @@ msgstr "Messaggio di controllo inatteso, ottenuti %d" msgid "Error while disabling SO_PASSCRED: %s" msgstr "Errore durante la disabilitazione di SO_PASSCRED: %s" -#: ../gio/gunixinputstream.c:370 ../gio/gunixinputstream.c:391 +#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390 #, c-format msgid "Error reading from file descriptor: %s" msgstr "Errore nel leggere dal descrittore di file: %s" -#: ../gio/gunixinputstream.c:424 ../gio/gunixoutputstream.c:410 +#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409 +#: ../gio/gwin32inputstream.c:217 ../gio/gwin32outputstream.c:204 #, c-format msgid "Error closing file descriptor: %s" msgstr "Errore nel chiudere il descrittore di file: %s" @@ -3150,14 +3197,14 @@ msgstr "Errore nel chiudere il descrittore di file: %s" msgid "Filesystem root" msgstr "File system radice" -#: ../gio/gunixoutputstream.c:356 ../gio/gunixoutputstream.c:377 +#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376 #, c-format msgid "Error writing to file descriptor: %s" msgstr "Errore nello scrivere sul descrittore di file: %s" # a chi è riferito abstract?? # a addresses o a domain? -#: ../gio/gunixsocketaddress.c:232 +#: ../gio/gunixsocketaddress.c:239 msgid "Abstract UNIX domain socket addresses not supported on this system" msgstr "" "Indirizzi di socket di dominio UNIX astratto non supportati su questo sistema" @@ -3173,34 +3220,17 @@ msgstr "il volume non implementa l'azione eject" msgid "volume doesn't implement eject or eject_with_operation" msgstr "il volume non implementa l'azione eject o eject_with_operation" -#: ../gio/gwin32appinfo.c:274 -msgid "Can't find application" -msgstr "Impossibile trovare l'applicazione" - -#: ../gio/gwin32appinfo.c:303 -#, c-format -msgid "Error launching application: %s" -msgstr "Errore nel lanciare l'applicazione: %s" - -#: ../gio/gwin32appinfo.c:378 -msgid "association changes not supported on win32" -msgstr "cambi di associazioni non supportati su win32" - -#: ../gio/gwin32appinfo.c:390 -msgid "Association creation not supported on win32" -msgstr "Creazione di associazioni non supportata su win32" - -#: ../gio/gwin32inputstream.c:344 +#: ../gio/gwin32inputstream.c:185 #, c-format msgid "Error reading from handle: %s" msgstr "Errore nel leggere dall'handle: %s" -#: ../gio/gwin32inputstream.c:388 ../gio/gwin32outputstream.c:375 +#: ../gio/gwin32inputstream.c:232 ../gio/gwin32outputstream.c:219 #, c-format msgid "Error closing handle: %s" msgstr "Errore nel chiudere l'handle: %s" -#: ../gio/gwin32outputstream.c:331 +#: ../gio/gwin32outputstream.c:172 #, c-format msgid "Error writing to handle: %s" msgstr "Errore nello scrivere sull'handle: %s" @@ -3327,8 +3357,8 @@ msgstr "" msgid "Failed to expand exec line '%s' with URI '%s'" msgstr "Espansione della riga exec \"%s\" con l'URI \"%s\" non riuscita" -#: ../glib/gconvert.c:477 ../glib/gutf8.c:833 ../glib/gutf8.c:1044 -#: ../glib/gutf8.c:1181 ../glib/gutf8.c:1285 +#: ../glib/gconvert.c:477 ../glib/gutf8.c:849 ../glib/gutf8.c:1061 +#: ../glib/gutf8.c:1198 ../glib/gutf8.c:1302 msgid "Partial character sequence at end of input" msgstr "Sequenza di caratteri parziale al termine dei dati in ingresso" @@ -3338,37 +3368,37 @@ msgstr "Sequenza di caratteri parziale al termine dei dati in ingresso" msgid "Cannot convert fallback '%s' to codeset '%s'" msgstr "Impossibile convertire \"%s\" nel set di caratteri \"%s\"" -#: ../glib/gconvert.c:1566 +#: ../glib/gconvert.c:1567 #, c-format msgid "The URI '%s' is not an absolute URI using the \"file\" scheme" msgstr "L'URI \"%s\" non è un URI assoluto che utilizza lo schema \"file\"" -#: ../glib/gconvert.c:1576 +#: ../glib/gconvert.c:1577 #, c-format msgid "The local file URI '%s' may not include a '#'" msgstr "L'URI per il file locale \"%s\" non può includere un '#'" -#: ../glib/gconvert.c:1593 +#: ../glib/gconvert.c:1594 #, c-format msgid "The URI '%s' is invalid" msgstr "L'URI \"%s\" non è valido" -#: ../glib/gconvert.c:1605 +#: ../glib/gconvert.c:1606 #, c-format msgid "The hostname of the URI '%s' is invalid" msgstr "Il nome dell'host nell'URI \"%s\" non è valido" -#: ../glib/gconvert.c:1621 +#: ../glib/gconvert.c:1622 #, c-format msgid "The URI '%s' contains invalidly escaped characters" msgstr "L'URI \"%s\" contiene sequenze di escape non valide" -#: ../glib/gconvert.c:1716 +#: ../glib/gconvert.c:1717 #, c-format msgid "The pathname '%s' is not an absolute path" msgstr "Il nome di percorso \"%s\" non è un percorso assoluto" -#: ../glib/gconvert.c:1726 +#: ../glib/gconvert.c:1727 msgid "Invalid hostname" msgstr "Nome host non valido" @@ -3696,25 +3726,25 @@ msgstr "Lettura del collegamento simbolico \"%s\" non riuscita: %s" msgid "Symbolic links not supported" msgstr "Collegamenti simbolici non supportati" -#: ../glib/giochannel.c:1389 +#: ../glib/giochannel.c:1388 #, c-format msgid "Could not open converter from '%s' to '%s': %s" msgstr "Impossibile aprire il convertitore da \"%s\" a \"%s\": %s" -#: ../glib/giochannel.c:1734 +#: ../glib/giochannel.c:1733 msgid "Can't do a raw read in g_io_channel_read_line_string" msgstr "Impossibile leggere i dati grezzi in g_io_channel_read_line_string" -#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039 -#: ../glib/giochannel.c:2126 +#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038 +#: ../glib/giochannel.c:2125 msgid "Leftover unconverted data in read buffer" msgstr "Sono rimasti dei dati non convertiti nel buffer di lettura" -#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939 +#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938 msgid "Channel terminates in a partial character" msgstr "Il canale termina in un carattere parziale" -#: ../glib/giochannel.c:1925 +#: ../glib/giochannel.c:1924 msgid "Can't do a raw read in g_io_channel_read_to_end" msgstr "Impossibile eseguire una lettura grezza in g_io_channel_read_to_end" @@ -3757,8 +3787,8 @@ msgid "Key file contains unsupported encoding '%s'" msgstr "Il file chiavi contiene la codifica non supportata \"%s\"" #: ../glib/gkeyfile.c:1548 ../glib/gkeyfile.c:1721 ../glib/gkeyfile.c:3099 -#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3288 ../glib/gkeyfile.c:3418 -#: ../glib/gkeyfile.c:3560 ../glib/gkeyfile.c:3789 ../glib/gkeyfile.c:3856 +#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3292 ../glib/gkeyfile.c:3422 +#: ../glib/gkeyfile.c:3566 ../glib/gkeyfile.c:3795 ../glib/gkeyfile.c:3862 #, c-format msgid "Key file does not have group '%s'" msgstr "Il file chiavi non presenta il gruppo \"%s\"" @@ -3798,31 +3828,31 @@ msgstr "" "La chiave \"%s\" nel gruppo \"%s\" presenta il valore \"%s\" mentre era " "atteso %s" -#: ../glib/gkeyfile.c:4096 +#: ../glib/gkeyfile.c:4102 msgid "Key file contains escape character at end of line" msgstr "Il file chiavi contiene un carattere di escape alla fine della riga" -#: ../glib/gkeyfile.c:4118 +#: ../glib/gkeyfile.c:4124 #, c-format msgid "Key file contains invalid escape sequence '%s'" msgstr "Il file chiavi contiene la sequenza di escape non valida \"%s\"" -#: ../glib/gkeyfile.c:4260 +#: ../glib/gkeyfile.c:4266 #, c-format msgid "Value '%s' cannot be interpreted as a number." msgstr "Impossibile interpretare il valore \"%s\" come un numero." -#: ../glib/gkeyfile.c:4274 +#: ../glib/gkeyfile.c:4280 #, c-format msgid "Integer value '%s' out of range" msgstr "Il valore intero \"%s\" è fuori dall'intervallo" -#: ../glib/gkeyfile.c:4307 +#: ../glib/gkeyfile.c:4313 #, c-format msgid "Value '%s' cannot be interpreted as a float number." msgstr "Impossibile interpretare il valore \"%s\" come un numero float." -#: ../glib/gkeyfile.c:4331 +#: ../glib/gkeyfile.c:4350 #, c-format msgid "Value '%s' cannot be interpreted as a boolean." msgstr "Impossibile interpretare il valore \"%s\" come un booleano." @@ -3869,7 +3899,7 @@ msgstr "\"%s\" non è un nome valido: '%c'" msgid "Error on line %d: %s" msgstr "Errore alla riga %d: %s" -#: ../glib/gmarkup.c:683 +#: ../glib/gmarkup.c:676 #, c-format msgid "" "Failed to parse '%-.*s', which should have been a digit inside a character " @@ -3879,7 +3909,7 @@ msgstr "" "di un riferimento a carattere (es. ê) - probabilmente il numero è " "troppo grande" -#: ../glib/gmarkup.c:695 +#: ../glib/gmarkup.c:688 msgid "" "Character reference did not end with a semicolon; most likely you used an " "ampersand character without intending to start an entity - escape ampersand " @@ -3889,23 +3919,23 @@ msgstr "" "si è utilizzato un carattere \"e commerciale\" senza l'intenzione di " "iniziare una nuova entità. In tal caso ricorrere a &" -#: ../glib/gmarkup.c:721 +#: ../glib/gmarkup.c:714 #, c-format msgid "Character reference '%-.*s' does not encode a permitted character" msgstr "Il riferimento a carattere '%-.*s' non codifica un carattere permesso" -#: ../glib/gmarkup.c:759 +#: ../glib/gmarkup.c:752 msgid "" "Empty entity '&;' seen; valid entities are: & " < > '" msgstr "" "Rilevata entità vuota '&;' (sono entità valide & " < > ')" -#: ../glib/gmarkup.c:767 +#: ../glib/gmarkup.c:760 #, c-format msgid "Entity name '%-.*s' is not known" msgstr "Il nome di entità \"%-.*s\" è sconosciuto" -#: ../glib/gmarkup.c:772 +#: ../glib/gmarkup.c:765 msgid "" "Entity did not end with a semicolon; most likely you used an ampersand " "character without intending to start an entity - escape ampersand as &" @@ -3914,11 +3944,11 @@ msgstr "" "utilizzata una \"e commerciale\" senza l'intento di iniziare una entità. In " "tal caso ricorrere a &" -#: ../glib/gmarkup.c:1178 +#: ../glib/gmarkup.c:1171 msgid "Document must begin with an element (e.g. )" msgstr "Il documento deve iniziare con un elemento (es. )" -#: ../glib/gmarkup.c:1218 +#: ../glib/gmarkup.c:1211 #, c-format msgid "" "'%s' is not a valid character following a '<' character; it may not begin an " @@ -3927,7 +3957,7 @@ msgstr "" "'%s' non è un carattere valido dopo un carattere '<'; non può dare inizio a " "un nome di elemento" -#: ../glib/gmarkup.c:1260 +#: ../glib/gmarkup.c:1253 #, c-format msgid "" "Odd character '%s', expected a '>' character to end the empty-element tag " @@ -3936,7 +3966,7 @@ msgstr "" "Carattere '%s' spaiato, era atteso un carattere '>' per terminare il tag " "dell'elemento-vuoto \"%s\"" -#: ../glib/gmarkup.c:1341 +#: ../glib/gmarkup.c:1334 #, c-format msgid "" "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" @@ -3944,7 +3974,7 @@ msgstr "" "Carattere '%s' spaiato, era atteso un carattere '=' dopo il nome " "dell'attributo \"%s\" dell'elemento \"%s\"" -#: ../glib/gmarkup.c:1382 +#: ../glib/gmarkup.c:1375 #, c-format msgid "" "Odd character '%s', expected a '>' or '/' character to end the start tag of " @@ -3955,7 +3985,7 @@ msgstr "" "il tag di partenza dell'elemento \"%s\", oppure opzionalmente un attributo. " "Probabilmente è stato usato un carattere non valido in un nome di attributo" -#: ../glib/gmarkup.c:1426 +#: ../glib/gmarkup.c:1419 #, c-format msgid "" "Odd character '%s', expected an open quote mark after the equals sign when " @@ -3965,7 +3995,7 @@ msgstr "" "segno di uguale per attribuire un valore all'attributo \"%s\" dell'elemento " "\"%s\"" -#: ../glib/gmarkup.c:1559 +#: ../glib/gmarkup.c:1552 #, c-format msgid "" "'%s' is not a valid character following the characters ''" -#: ../glib/gmarkup.c:1606 +#: ../glib/gmarkup.c:1599 #, c-format msgid "Element '%s' was closed, no element is currently open" msgstr "" "È stato chiuso l'elemento \"%s\", nessun elemento risulta correntemente " "aperto" -#: ../glib/gmarkup.c:1615 +#: ../glib/gmarkup.c:1608 #, c-format msgid "Element '%s' was closed, but the currently open element is '%s'" msgstr "" "È stato chiuso l'elemento \"%s\", ma l'elemento correntemente aperto è \"%s\"" -#: ../glib/gmarkup.c:1768 +#: ../glib/gmarkup.c:1761 msgid "Document was empty or contained only whitespace" msgstr "Il documento era vuoto oppure conteneva unicamente spazi" -#: ../glib/gmarkup.c:1782 +#: ../glib/gmarkup.c:1775 msgid "Document ended unexpectedly just after an open angle bracket '<'" msgstr "" "Il documento è terminato in modo inatteso subito dopo una parentesi angolare " "d'apertura '<'" -#: ../glib/gmarkup.c:1790 ../glib/gmarkup.c:1835 +#: ../glib/gmarkup.c:1783 ../glib/gmarkup.c:1828 #, c-format msgid "" "Document ended unexpectedly with elements still open - '%s' was the last " @@ -4015,7 +4045,7 @@ msgstr "" "Il documento è terminato in modo inatteso con elementi ancora aperti - \"%s" "\" era l'ultimo elemento aperto" -#: ../glib/gmarkup.c:1798 +#: ../glib/gmarkup.c:1791 #, c-format msgid "" "Document ended unexpectedly, expected to see a close angle bracket ending " @@ -4024,23 +4054,23 @@ msgstr "" "Il documento è terminato in modo inatteso, mancando la parentesi angolare di " "chiusura per il tag <%s/>" -#: ../glib/gmarkup.c:1804 +#: ../glib/gmarkup.c:1797 msgid "Document ended unexpectedly inside an element name" msgstr "" "Il documento è terminato in modo inatteso all'interno di un nome di elemento" -#: ../glib/gmarkup.c:1810 +#: ../glib/gmarkup.c:1803 msgid "Document ended unexpectedly inside an attribute name" msgstr "" "Il documento è terminato in modo inatteso all'interno di un nome di attributo" -#: ../glib/gmarkup.c:1815 +#: ../glib/gmarkup.c:1808 msgid "Document ended unexpectedly inside an element-opening tag." msgstr "" "Il documento è terminato in modo inatteso all'interno di un tag di apertura " "elemento." -#: ../glib/gmarkup.c:1821 +#: ../glib/gmarkup.c:1814 msgid "" "Document ended unexpectedly after the equals sign following an attribute " "name; no attribute value" @@ -4048,13 +4078,13 @@ msgstr "" "Il documento è terminato in modo inatteso dopo il segno di uguale che segue " "un nome di attributo; nessun valore per l'attributo" -#: ../glib/gmarkup.c:1828 +#: ../glib/gmarkup.c:1821 msgid "Document ended unexpectedly while inside an attribute value" msgstr "" "Il documento è terminato in modo inatteso all'interno di un valore di " "attributo" -#: ../glib/gmarkup.c:1844 +#: ../glib/gmarkup.c:1837 #, c-format msgid "Document ended unexpectedly inside the close tag for element '%s'" msgstr "" @@ -4062,67 +4092,71 @@ msgstr "" "per l'elemento \"%s\"" # di elaborazione? in elaborazione ? -#: ../glib/gmarkup.c:1850 +#: ../glib/gmarkup.c:1843 msgid "Document ended unexpectedly inside a comment or processing instruction" msgstr "" "Il documento è terminato in modo inatteso all'interno di un commento o " "istruzione di elaborazione" -#: ../glib/goption.c:858 +#: ../glib/goption.c:857 msgid "Usage:" msgstr "Uso:" -#: ../glib/goption.c:858 +#: ../glib/goption.c:861 msgid "[OPTION...]" msgstr "[OPZIONE...]" -#: ../glib/goption.c:974 +#: ../glib/goption.c:977 msgid "Help Options:" msgstr "Opzioni di aiuto:" -#: ../glib/goption.c:975 +#: ../glib/goption.c:978 msgid "Show help options" msgstr "Mostra le opzioni di aiuto" -#: ../glib/goption.c:981 +#: ../glib/goption.c:984 msgid "Show all help options" msgstr "Mostra tutte le opzioni di aiuto" -#: ../glib/goption.c:1043 +#: ../glib/goption.c:1047 msgid "Application Options:" msgstr "Opzioni dell'applicazione:" -#: ../glib/goption.c:1107 ../glib/goption.c:1177 +#: ../glib/goption.c:1049 +msgid "Options:" +msgstr "Opzioni:" + +#: ../glib/goption.c:1113 ../glib/goption.c:1183 #, c-format msgid "Cannot parse integer value '%s' for %s" msgstr "Impossibile analizzare il valore intero \"%s\" per %s" -#: ../glib/goption.c:1117 ../glib/goption.c:1185 +#: ../glib/goption.c:1123 ../glib/goption.c:1191 #, c-format msgid "Integer value '%s' for %s out of range" msgstr "Il valore intero \"%s\" per %s è fuori dall'intervallo" -#: ../glib/goption.c:1142 +#: ../glib/goption.c:1148 #, c-format msgid "Cannot parse double value '%s' for %s" msgstr "Impossibile analizzare il valore double \"%s\" per %s" -#: ../glib/goption.c:1150 +#: ../glib/goption.c:1156 #, c-format msgid "Double value '%s' for %s out of range" msgstr "Il valore double \"%s\" per %s è fuori dall'intervallo" -#: ../glib/goption.c:1436 ../glib/goption.c:1515 +#: ../glib/goption.c:1442 ../glib/goption.c:1521 #, c-format msgid "Error parsing option %s" msgstr "Errore nell'analizzare l'opzione %s" -#: ../glib/goption.c:1546 ../glib/goption.c:1659 +#: ../glib/goption.c:1552 ../glib/goption.c:1665 #, c-format msgid "Missing argument for %s" msgstr "Argomento mancante per %s" -#: ../glib/goption.c:2120 +#: ../glib/goption.c:2126 #, c-format msgid "Unknown option %s" msgstr "Opzione %s sconosciuta" @@ -4436,61 +4470,61 @@ msgstr "nome troppo lungo in (*MARK), (*PRUNE), (*SKIP) o (*THEN)" msgid "character value in \\u.... sequence is too large" msgstr "il valore del carattere nella sequenza \\u.... è troppo grande" -#: ../glib/gregex.c:746 ../glib/gregex.c:1915 +#: ../glib/gregex.c:746 ../glib/gregex.c:1973 #, c-format msgid "Error while matching regular expression %s: %s" msgstr "" "Errore durante la ricerca di corrispondenza per l'espressione regolare %s: %s" -#: ../glib/gregex.c:1312 +#: ../glib/gregex.c:1317 msgid "PCRE library is compiled without UTF8 support" msgstr "La libreria PCRE è compilata senza supporto per UTF-8" -#: ../glib/gregex.c:1316 +#: ../glib/gregex.c:1321 msgid "PCRE library is compiled without UTF8 properties support" msgstr "La libreria PCRE è compilata senza supporto per le proprietà UTF-8" -#: ../glib/gregex.c:1324 +#: ../glib/gregex.c:1329 msgid "PCRE library is compiled with incompatible options" msgstr "La libreria PCRE è compilata con opzioni incompatibili\t" -#: ../glib/gregex.c:1383 +#: ../glib/gregex.c:1358 +#, c-format +msgid "Error while optimizing regular expression %s: %s" +msgstr "Errore durante l'ottimizzazione dell'espressione regolare %s: %s" + +#: ../glib/gregex.c:1438 #, c-format msgid "Error while compiling regular expression %s at char %d: %s" msgstr "" "Errore durante la compilazione dell'espressione regolare %s al carattere %d: " "%s" -#: ../glib/gregex.c:1425 -#, c-format -msgid "Error while optimizing regular expression %s: %s" -msgstr "Errore durante l'ottimizzazione dell'espressione regolare %s: %s" - -#: ../glib/gregex.c:2347 +#: ../glib/gregex.c:2409 msgid "hexadecimal digit or '}' expected" msgstr "attesa cifra esadecimale o '}'" -#: ../glib/gregex.c:2363 +#: ../glib/gregex.c:2425 msgid "hexadecimal digit expected" msgstr "attesa cifra esadecimale" -#: ../glib/gregex.c:2403 +#: ../glib/gregex.c:2465 msgid "missing '<' in symbolic reference" msgstr "'<' mancante nel riferimento simbolico" -#: ../glib/gregex.c:2412 +#: ../glib/gregex.c:2474 msgid "unfinished symbolic reference" msgstr "riferimento simbolico non terminato" -#: ../glib/gregex.c:2419 +#: ../glib/gregex.c:2481 msgid "zero-length symbolic reference" msgstr "riferimento simbolico di lunghezza zero" -#: ../glib/gregex.c:2430 +#: ../glib/gregex.c:2492 msgid "digit expected" msgstr "attesa cifra" -#: ../glib/gregex.c:2448 +#: ../glib/gregex.c:2510 msgid "illegal symbolic reference" msgstr "riferimento simbolico non lecito" @@ -4498,16 +4532,16 @@ msgstr "riferimento simbolico non lecito" # carattere successivo che manca # # Quindi "isolato" o "staccato" o al limite "accindetale", "casuale" -#: ../glib/gregex.c:2510 +#: ../glib/gregex.c:2572 msgid "stray final '\\'" msgstr "'\\' finale isolato" -#: ../glib/gregex.c:2514 +#: ../glib/gregex.c:2576 msgid "unknown escape sequence" msgstr "sequenza di escape sconosciuta" # da sostituire crea confusione... -#: ../glib/gregex.c:2524 +#: ../glib/gregex.c:2586 #, c-format msgid "Error while parsing replacement text \"%s\" at char %lu: %s" msgstr "" @@ -4558,69 +4592,69 @@ msgstr "" msgid "Unexpected error in waitpid() (%s)" msgstr "Errore inatteso in waitpid() (%s)" -#: ../glib/gspawn.c:849 ../glib/gspawn-win32.c:1233 +#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233 #, c-format msgid "Child process exited with code %ld" msgstr "Processo figlio uscito con codice %ld" -#: ../glib/gspawn.c:857 +#: ../glib/gspawn.c:852 #, c-format msgid "Child process killed by signal %ld" msgstr "Processo figlio ucciso dal segnale %ld" -#: ../glib/gspawn.c:864 +#: ../glib/gspawn.c:859 #, c-format msgid "Child process stopped by signal %ld" msgstr "Processo figlio fermato dal segnale %ld" -#: ../glib/gspawn.c:871 +#: ../glib/gspawn.c:866 #, c-format msgid "Child process exited abnormally" msgstr "Il processo figlio è uscito in modo anomalo" # (%s) è in fondo perché risolto in g_strerror (gint) -#: ../glib/gspawn.c:1276 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 +#: ../glib/gspawn.c:1271 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 #, c-format msgid "Failed to read from child pipe (%s)" msgstr "Lettura dalla pipe figlia non riuscita (%s)" # (%s) è in fondo perché risolto in g_strerror (gint) -#: ../glib/gspawn.c:1346 +#: ../glib/gspawn.c:1341 #, c-format msgid "Failed to fork (%s)" msgstr "Esecuzione di fork non riuscita (%s)" # (%s) è in fondo perché risolto in g_strerror (gint) -#: ../glib/gspawn.c:1495 ../glib/gspawn-win32.c:370 +#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370 #, c-format msgid "Failed to change to directory '%s' (%s)" msgstr "Cambio della directory in \"%s\" non riuscito (%s)" # (%s) è in fondo perché risolto in g_strerror (gint) -#: ../glib/gspawn.c:1505 +#: ../glib/gspawn.c:1500 #, c-format msgid "Failed to execute child process \"%s\" (%s)" msgstr "Esecuzione del processo figlio \"%s\" non riuscita (%s)" # (%s) è in fondo perché risolto in g_strerror (gint) -#: ../glib/gspawn.c:1515 +#: ../glib/gspawn.c:1510 #, c-format msgid "Failed to redirect output or input of child process (%s)" msgstr "Ridirezione dell'output o input del processo figlio non riuscita (%s)" # (%s) è in fondo perché risolto in g_strerror (gint) -#: ../glib/gspawn.c:1524 +#: ../glib/gspawn.c:1519 #, c-format msgid "Failed to fork child process (%s)" msgstr "Esecuzione del fork per processo figlio non riuscita (%s)" -#: ../glib/gspawn.c:1532 +#: ../glib/gspawn.c:1527 #, c-format msgid "Unknown error executing child process \"%s\"" msgstr "Errore sconosciuto nell'eseguire il processo figlio \"%s\"" # (%s) è in fondo perché risolto in g_strerror (gint) -#: ../glib/gspawn.c:1556 +#: ../glib/gspawn.c:1551 #, c-format msgid "Failed to read enough data from child pid pipe (%s)" msgstr "" @@ -4680,92 +4714,92 @@ msgstr "" "Errore inatteso in g_io_channel_win32_poll() nel leggere i dati da un " "processo figlio" -#: ../glib/gutf8.c:780 +#: ../glib/gutf8.c:795 msgid "Failed to allocate memory" msgstr "Allocazione della memoria non riuscita" -#: ../glib/gutf8.c:912 +#: ../glib/gutf8.c:928 msgid "Character out of range for UTF-8" msgstr "Carattere fuori dall'intervallo per UTF-8" -#: ../glib/gutf8.c:1012 ../glib/gutf8.c:1021 ../glib/gutf8.c:1151 -#: ../glib/gutf8.c:1160 ../glib/gutf8.c:1299 ../glib/gutf8.c:1396 +#: ../glib/gutf8.c:1029 ../glib/gutf8.c:1038 ../glib/gutf8.c:1168 +#: ../glib/gutf8.c:1177 ../glib/gutf8.c:1316 ../glib/gutf8.c:1413 msgid "Invalid sequence in conversion input" msgstr "Sequenza non valida in ingresso per la conversione" -#: ../glib/gutf8.c:1310 ../glib/gutf8.c:1407 +#: ../glib/gutf8.c:1327 ../glib/gutf8.c:1424 msgid "Character out of range for UTF-16" msgstr "Carattere fuori dall'intervallo per UTF-16" -#: ../glib/gutils.c:2116 ../glib/gutils.c:2143 ../glib/gutils.c:2249 +#: ../glib/gutils.c:2133 ../glib/gutils.c:2160 ../glib/gutils.c:2266 #, c-format msgid "%u byte" msgid_plural "%u bytes" msgstr[0] "%u byte" msgstr[1] "%u byte" -#: ../glib/gutils.c:2122 +#: ../glib/gutils.c:2139 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" -#: ../glib/gutils.c:2124 +#: ../glib/gutils.c:2141 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" -#: ../glib/gutils.c:2127 +#: ../glib/gutils.c:2144 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" -#: ../glib/gutils.c:2130 +#: ../glib/gutils.c:2147 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" -#: ../glib/gutils.c:2133 +#: ../glib/gutils.c:2150 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" -#: ../glib/gutils.c:2136 +#: ../glib/gutils.c:2153 #, c-format msgid "%.1f EiB" msgstr "%.1f EiB" -#: ../glib/gutils.c:2149 +#: ../glib/gutils.c:2166 #, c-format msgid "%.1f kB" msgstr "%.1f kB" -#: ../glib/gutils.c:2152 ../glib/gutils.c:2267 +#: ../glib/gutils.c:2169 ../glib/gutils.c:2284 #, c-format msgid "%.1f MB" msgstr "%.1f MB" -#: ../glib/gutils.c:2155 ../glib/gutils.c:2272 +#: ../glib/gutils.c:2172 ../glib/gutils.c:2289 #, c-format msgid "%.1f GB" msgstr "%.1f GB" -#: ../glib/gutils.c:2157 ../glib/gutils.c:2277 +#: ../glib/gutils.c:2174 ../glib/gutils.c:2294 #, c-format msgid "%.1f TB" msgstr "%.1f TB" -#: ../glib/gutils.c:2160 ../glib/gutils.c:2282 +#: ../glib/gutils.c:2177 ../glib/gutils.c:2299 #, c-format msgid "%.1f PB" msgstr "%.1f PB" -#: ../glib/gutils.c:2163 ../glib/gutils.c:2287 +#: ../glib/gutils.c:2180 ../glib/gutils.c:2304 #, c-format msgid "%.1f EB" msgstr "%.1f EB" #. Translators: the %s in "%s bytes" will always be replaced by a number. -#: ../glib/gutils.c:2200 +#: ../glib/gutils.c:2217 #, c-format msgid "%s byte" msgid_plural "%s bytes" @@ -4777,7 +4811,7 @@ msgstr[1] "%s byte" #. * compatibility. Users will not see this string unless a program is using this deprecated function. #. * Please translate as literally as possible. #. -#: ../glib/gutils.c:2262 +#: ../glib/gutils.c:2279 #, c-format msgid "%.1f KB" msgstr "%.1f kB" diff --git a/po/ja.gmo b/po/ja.gmo new file mode 100644 index 0000000000000000000000000000000000000000..42d109d17d5c643613c106bbf7abfc209ae557be GIT binary patch literal 82470 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%0DlSQ-!>w+2b{Ol2-7Ej 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 F{SSJUIdT91 literal 0 HcmV?d00001 diff --git a/po/ka.gmo b/po/ka.gmo new file mode 100644 index 0000000000000000000000000000000000000000..71530a399449b1863ea8c1afb55ef4a9ac9a80bc GIT binary patch literal 34272 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 a3W!7}nA_CClgx@xM-W?tNw!n4?f(Y^y1CB) literal 0 HcmV?d00001 diff --git a/po/kk.gmo b/po/kk.gmo new file mode 100644 index 0000000000000000000000000000000000000000..fc221b278abc130cb9f4caa183e814849abc8514 GIT binary patch literal 12728 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 literal 0 HcmV?d00001 diff --git a/po/kk.po b/po/kk.po index 765a5e8..c7f153c 100644 --- a/po/kk.po +++ b/po/kk.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=glib&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2015-03-08 14:39+0000\n" -"PO-Revision-Date: 2015-03-08 23:05+0500\n" +"POT-Creation-Date: 2016-03-05 07:39+0000\n" +"PO-Revision-Date: 2016-03-05 15:37+0500\n" "Last-Translator: Baurzhan Muftakhidinov \n" "Language-Team: Kazakh \n" "Language: kk\n" @@ -17,27 +17,31 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 1.7.3\n" +"X-Generator: Poedit 1.8.6\n" -#: ../gio/gapplication.c:531 -msgid "Enter GApplication service mode (use from D-Bus service files)" -msgstr "" - -#: ../gio/gapplication.c:536 +#: ../gio/gapplication.c:493 msgid "GApplication options" msgstr "GApplication опциялары" -#: ../gio/gapplication.c:536 +#: ../gio/gapplication.c:493 msgid "Show GApplication options" msgstr "GApplication опцияларын көрсету" +#: ../gio/gapplication.c:538 +msgid "Enter GApplication service mode (use from D-Bus service files)" +msgstr "" + +#: ../gio/gapplication.c:550 +msgid "Override the application's ID" +msgstr "" + #: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46 -#: ../gio/gresource-tool.c:485 ../gio/gsettings-tool.c:521 +#: ../gio/gresource-tool.c:488 ../gio/gsettings-tool.c:512 msgid "Print help" msgstr "Көмекті шығару" -#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:486 -#: ../gio/gresource-tool.c:554 +#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:489 +#: ../gio/gresource-tool.c:557 msgid "[COMMAND]" msgstr "[КОМАНДА]" @@ -45,12 +49,11 @@ msgstr "[КОМАНДА]" msgid "Print version" msgstr "Нұсқа ақпаратын шығару" -#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:527 +#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:518 msgid "Print version information and exit" msgstr "Нұсқа ақпаратын шығару және шығу" #: ../gio/gapplication-tool.c:52 -#| msgid "Can't find application" msgid "List applications" msgstr "" @@ -59,7 +62,6 @@ msgid "List the installed D-Bus activatable applications (by .desktop files)" msgstr "" #: ../gio/gapplication-tool.c:55 -#| msgid "Can't find application" msgid "Launch an application" msgstr "" @@ -109,13 +111,13 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)" msgstr "" #: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589 -#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:492 -#: ../gio/gresource-tool.c:558 +#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:495 +#: ../gio/gresource-tool.c:561 msgid "FILE" msgstr "ФАЙЛ" #: ../gio/gapplication-tool.c:72 -msgid "Optional relative or relative filenames, or URIs to open" +msgid "Optional relative or absolute filenames, or URIs to open" msgstr "" #: ../gio/gapplication-tool.c:73 @@ -134,8 +136,8 @@ msgstr "ПАРАМЕТР" msgid "Optional parameter to the action invocation, in GVariant format" msgstr "" -#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:523 -#: ../gio/gsettings-tool.c:607 +#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526 +#: ../gio/gsettings-tool.c:598 #, c-format msgid "" "Unknown command %s\n" @@ -146,8 +148,8 @@ msgstr "" msgid "Usage:\n" msgstr "Қолданылуы:\n" -#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:548 -#: ../gio/gsettings-tool.c:641 +#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551 +#: ../gio/gsettings-tool.c:632 msgid "Arguments:\n" msgstr "Аргументтер:\n" @@ -177,7 +179,6 @@ msgstr "" #: ../gio/gapplication-tool.c:171 #, c-format -#| msgid "Error launching application: %s" msgid "invalid application id: '%s'\n" msgstr "" @@ -196,7 +197,6 @@ msgstr "" #: ../gio/gapplication-tool.c:286 #, c-format -#| msgid "Error sending message: %s" msgid "error sending %s message to application: %s\n" msgstr "" @@ -214,7 +214,6 @@ msgstr "" #: ../gio/gapplication-tool.c:344 #, c-format -#| msgid "Error setting owner: %s" msgid "error parsing action parameter: %s\n" msgstr "" @@ -241,9 +240,9 @@ msgid "" msgstr "" #: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498 -#: ../gio/ginputstream.c:176 ../gio/ginputstream.c:376 -#: ../gio/ginputstream.c:614 ../gio/ginputstream.c:1013 -#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:830 +#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379 +#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1016 +#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834 #: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206 #, c-format msgid "Too large count value passed to %s" @@ -258,8 +257,8 @@ msgstr "" msgid "Cannot truncate GBufferedInputStream" msgstr "" -#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1202 -#: ../gio/giostream.c:278 ../gio/goutputstream.c:1654 +#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1205 +#: ../gio/giostream.c:300 ../gio/goutputstream.c:1658 msgid "Stream is already closed" msgstr "" @@ -267,10 +266,9 @@ msgstr "" msgid "Truncate not supported on base stream" msgstr "" -#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1896 -#: ../gio/gdbusconnection.c:1989 ../gio/gdbusprivate.c:1421 -#: ../gio/glocalfile.c:2181 ../gio/gsimpleasyncresult.c:830 -#: ../gio/gsimpleasyncresult.c:856 +#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1847 +#: ../gio/gdbusprivate.c:1375 ../gio/glocalfile.c:2220 +#: ../gio/gsimpleasyncresult.c:870 ../gio/gsimpleasyncresult.c:896 #, c-format msgid "Operation was cancelled" msgstr "Әрекеттен бас тартылды" @@ -288,24 +286,24 @@ msgid "Not enough space in destination" msgstr "" #: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848 -#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 -#: ../glib/gconvert.c:845 ../glib/giochannel.c:1557 ../glib/giochannel.c:1599 -#: ../glib/giochannel.c:2443 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 +#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 ../glib/gconvert.c:845 +#: ../glib/giochannel.c:1556 ../glib/giochannel.c:1598 +#: ../glib/giochannel.c:2442 ../glib/gutf8.c:853 ../glib/gutf8.c:1306 msgid "Invalid byte sequence in conversion input" msgstr "" -#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 -#: ../glib/gconvert.c:770 ../glib/giochannel.c:1564 ../glib/giochannel.c:2455 +#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 ../glib/gconvert.c:770 +#: ../glib/giochannel.c:1563 ../glib/giochannel.c:2454 #, c-format msgid "Error during conversion: %s" msgstr "" -#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:990 +#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1078 msgid "Cancellable initialization not supported" msgstr "" #: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321 -#: ../glib/giochannel.c:1385 +#: ../glib/giochannel.c:1384 #, c-format msgid "Conversion from character set '%s' to '%s' is not supported" msgstr "" @@ -324,10 +322,10 @@ msgstr "%s түрі" msgid "Unknown type" msgstr "Белгісіз түрі" -#: ../gio/gcontenttype-win32.c:161 +#: ../gio/gcontenttype-win32.c:162 #, c-format msgid "%s filetype" -msgstr "" +msgstr "%s файл түрі" #: ../gio/gcredentials.c:312 ../gio/gcredentials.c:571 msgid "GCredentials is not implemented on this OS" @@ -349,150 +347,150 @@ msgstr "" msgid "Unexpected early end-of-stream" msgstr "" -#: ../gio/gdbusaddress.c:148 ../gio/gdbusaddress.c:236 -#: ../gio/gdbusaddress.c:317 +#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241 +#: ../gio/gdbusaddress.c:322 #, c-format msgid "Unsupported key '%s' in address entry '%s'" msgstr "" -#: ../gio/gdbusaddress.c:175 +#: ../gio/gdbusaddress.c:180 #, c-format msgid "" "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" msgstr "" -#: ../gio/gdbusaddress.c:188 +#: ../gio/gdbusaddress.c:193 #, c-format msgid "Meaningless key/value pair combination in address entry '%s'" msgstr "" -#: ../gio/gdbusaddress.c:251 ../gio/gdbusaddress.c:332 +#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 #, c-format msgid "Error in address '%s' - the port attribute is malformed" msgstr "" -#: ../gio/gdbusaddress.c:262 ../gio/gdbusaddress.c:343 +#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348 #, c-format msgid "Error in address '%s' - the family attribute is malformed" msgstr "" -#: ../gio/gdbusaddress.c:452 +#: ../gio/gdbusaddress.c:457 #, c-format msgid "Address element '%s' does not contain a colon (:)" msgstr "" -#: ../gio/gdbusaddress.c:473 +#: ../gio/gdbusaddress.c:478 #, c-format msgid "" "Key/Value pair %d, '%s', in address element '%s' does not contain an equal " "sign" msgstr "" -#: ../gio/gdbusaddress.c:487 +#: ../gio/gdbusaddress.c:492 #, c-format msgid "" "Error unescaping key or value in Key/Value pair %d, '%s', in address element " "'%s'" msgstr "" -#: ../gio/gdbusaddress.c:565 +#: ../gio/gdbusaddress.c:570 #, c-format msgid "" "Error in address '%s' - the unix transport requires exactly one of the keys " "'path' or 'abstract' to be set" msgstr "" -#: ../gio/gdbusaddress.c:601 +#: ../gio/gdbusaddress.c:606 #, c-format msgid "Error in address '%s' - the host attribute is missing or malformed" msgstr "" -#: ../gio/gdbusaddress.c:615 +#: ../gio/gdbusaddress.c:620 #, c-format msgid "Error in address '%s' - the port attribute is missing or malformed" msgstr "" -#: ../gio/gdbusaddress.c:629 +#: ../gio/gdbusaddress.c:634 #, c-format msgid "Error in address '%s' - the noncefile attribute is missing or malformed" msgstr "" -#: ../gio/gdbusaddress.c:650 +#: ../gio/gdbusaddress.c:655 msgid "Error auto-launching: " msgstr "" -#: ../gio/gdbusaddress.c:658 +#: ../gio/gdbusaddress.c:663 #, c-format msgid "Unknown or unsupported transport '%s' for address '%s'" msgstr "" -#: ../gio/gdbusaddress.c:694 +#: ../gio/gdbusaddress.c:699 #, c-format msgid "Error opening nonce file '%s': %s" msgstr "" -#: ../gio/gdbusaddress.c:712 +#: ../gio/gdbusaddress.c:717 #, c-format msgid "Error reading from nonce file '%s': %s" msgstr "" -#: ../gio/gdbusaddress.c:721 +#: ../gio/gdbusaddress.c:726 #, c-format msgid "Error reading from nonce file '%s', expected 16 bytes, got %d" msgstr "" -#: ../gio/gdbusaddress.c:739 +#: ../gio/gdbusaddress.c:744 #, c-format msgid "Error writing contents of nonce file '%s' to stream:" msgstr "" -#: ../gio/gdbusaddress.c:958 +#: ../gio/gdbusaddress.c:950 msgid "The given address is empty" msgstr "" -#: ../gio/gdbusaddress.c:1028 +#: ../gio/gdbusaddress.c:1063 #, c-format msgid "Cannot spawn a message bus when setuid" msgstr "" -#: ../gio/gdbusaddress.c:1035 +#: ../gio/gdbusaddress.c:1070 msgid "Cannot spawn a message bus without a machine-id: " msgstr "" -#: ../gio/gdbusaddress.c:1077 +#: ../gio/gdbusaddress.c:1112 #, c-format msgid "Error spawning command line '%s': " msgstr "" -#: ../gio/gdbusaddress.c:1294 +#: ../gio/gdbusaddress.c:1329 #, c-format msgid "(Type any character to close this window)\n" msgstr "" -#: ../gio/gdbusaddress.c:1425 +#: ../gio/gdbusaddress.c:1481 #, c-format msgid "Session dbus not running, and autolaunch failed" msgstr "" -#: ../gio/gdbusaddress.c:1446 +#: ../gio/gdbusaddress.c:1492 #, c-format msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "" -#: ../gio/gdbusaddress.c:1546 ../gio/gdbusconnection.c:6931 +#: ../gio/gdbusaddress.c:1627 ../gio/gdbusconnection.c:7128 #, c-format msgid "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " "- unknown value '%s'" msgstr "" -#: ../gio/gdbusaddress.c:1555 ../gio/gdbusconnection.c:6940 +#: ../gio/gdbusaddress.c:1636 ../gio/gdbusconnection.c:7137 msgid "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" msgstr "" -#: ../gio/gdbusaddress.c:1565 +#: ../gio/gdbusaddress.c:1646 #, c-format msgid "Unknown bus type %d" msgstr "" @@ -517,7 +515,6 @@ msgstr "" #: ../gio/gdbusauthmechanismsha1.c:261 #, c-format -#| msgid "Error creating directory '%s': %s" msgid "Error when getting information for directory '%s': %s" msgstr "" @@ -589,85 +586,95 @@ msgstr "" msgid "(Additionally, releasing the lock for '%s' also failed: %s) " msgstr "" -#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2455 +#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2373 msgid "The connection is closed" msgstr "" -#: ../gio/gdbusconnection.c:1942 +#: ../gio/gdbusconnection.c:1877 msgid "Timeout was reached" msgstr "" -#: ../gio/gdbusconnection.c:2577 +#: ../gio/gdbusconnection.c:2495 msgid "" "Unsupported flags encountered when constructing a client-side connection" msgstr "" -#: ../gio/gdbusconnection.c:4157 ../gio/gdbusconnection.c:4504 +#: ../gio/gdbusconnection.c:4105 ../gio/gdbusconnection.c:4452 #, c-format msgid "" "No such interface 'org.freedesktop.DBus.Properties' on object at path %s" msgstr "" -#: ../gio/gdbusconnection.c:4299 +#: ../gio/gdbusconnection.c:4247 #, c-format msgid "No such property '%s'" msgstr "" -#: ../gio/gdbusconnection.c:4311 +#: ../gio/gdbusconnection.c:4259 #, c-format msgid "Property '%s' is not readable" msgstr "" -#: ../gio/gdbusconnection.c:4322 +#: ../gio/gdbusconnection.c:4270 #, c-format msgid "Property '%s' is not writable" msgstr "" -#: ../gio/gdbusconnection.c:4342 +#: ../gio/gdbusconnection.c:4290 #, c-format msgid "Error setting property '%s': Expected type '%s' but got '%s'" msgstr "" -#: ../gio/gdbusconnection.c:4447 ../gio/gdbusconnection.c:6371 +#: ../gio/gdbusconnection.c:4395 ../gio/gdbusconnection.c:6568 #, c-format msgid "No such interface '%s'" msgstr "" -#: ../gio/gdbusconnection.c:4655 +#: ../gio/gdbusconnection.c:4603 msgid "No such interface" msgstr "" -#: ../gio/gdbusconnection.c:4873 ../gio/gdbusconnection.c:6880 +#: ../gio/gdbusconnection.c:4821 ../gio/gdbusconnection.c:7077 #, c-format msgid "No such interface '%s' on object at path %s" msgstr "" -#: ../gio/gdbusconnection.c:4971 +#: ../gio/gdbusconnection.c:4919 #, c-format msgid "No such method '%s'" msgstr "" -#: ../gio/gdbusconnection.c:5002 +#: ../gio/gdbusconnection.c:4950 #, c-format msgid "Type of message, '%s', does not match expected type '%s'" msgstr "" -#: ../gio/gdbusconnection.c:5200 +#: ../gio/gdbusconnection.c:5148 #, c-format msgid "An object is already exported for the interface %s at %s" msgstr "" -#: ../gio/gdbusconnection.c:5399 +#: ../gio/gdbusconnection.c:5374 +#, c-format +msgid "Unable to retrieve property %s.%s" +msgstr "" + +#: ../gio/gdbusconnection.c:5430 +#, c-format +msgid "Unable to set property %s.%s" +msgstr "%s қасиетін орнату мүмкін емес.%s" + +#: ../gio/gdbusconnection.c:5606 #, c-format msgid "Method '%s' returned type '%s', but expected '%s'" msgstr "" -#: ../gio/gdbusconnection.c:6482 +#: ../gio/gdbusconnection.c:6679 #, c-format msgid "Method '%s' on interface '%s' with signature '%s' does not exist" msgstr "" -#: ../gio/gdbusconnection.c:6603 +#: ../gio/gdbusconnection.c:6800 #, c-format msgid "A subtree is already exported for %s" msgstr "" @@ -709,7 +716,6 @@ msgstr "" msgid "Wanted to read %lu byte but only got %lu" msgid_plural "Wanted to read %lu bytes but only got %lu" msgstr[0] "" -msgstr[1] "" #: ../gio/gdbusmessage.c:1369 #, c-format @@ -740,7 +746,6 @@ msgid "" msgid_plural "" "Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)." msgstr[0] "" -msgstr[1] "" #: ../gio/gdbusmessage.c:1676 #, c-format @@ -787,7 +792,6 @@ msgstr "" msgid "No signature header in message but the message body is %u byte" msgid_plural "No signature header in message but the message body is %u bytes" msgstr[0] "" -msgstr[1] "" #: ../gio/gdbusmessage.c:2174 msgid "Cannot deserialize message: " @@ -827,36 +831,35 @@ msgstr "" msgid "Message body is empty but signature in the header field is '(%s)'" msgstr "" -#: ../gio/gdbusmessage.c:3280 +#: ../gio/gdbusmessage.c:3283 #, c-format msgid "Error return with body of type '%s'" msgstr "" -#: ../gio/gdbusmessage.c:3288 +#: ../gio/gdbusmessage.c:3291 msgid "Error return with empty body" msgstr "" -#: ../gio/gdbusprivate.c:2085 +#: ../gio/gdbusprivate.c:2036 #, c-format -#| msgid "Unable to trash file: %s" msgid "Unable to get Hardware profile: %s" msgstr "" -#: ../gio/gdbusprivate.c:2130 +#: ../gio/gdbusprivate.c:2081 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: " msgstr "" -#: ../gio/gdbusproxy.c:1630 +#: ../gio/gdbusproxy.c:1610 #, c-format msgid "Error calling StartServiceByName for %s: " msgstr "" -#: ../gio/gdbusproxy.c:1653 +#: ../gio/gdbusproxy.c:1633 #, c-format msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" msgstr "" -#: ../gio/gdbusproxy.c:2754 ../gio/gdbusproxy.c:2891 +#: ../gio/gdbusproxy.c:2709 ../gio/gdbusproxy.c:2843 msgid "" "Cannot invoke method; proxy is for a well-known name without an owner and " "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag" @@ -898,244 +901,253 @@ msgid "" "Use \"%s COMMAND --help\" to get help on each command.\n" msgstr "" -#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:220 ../gio/gdbus-tool.c:292 -#: ../gio/gdbus-tool.c:316 ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1031 -#: ../gio/gdbus-tool.c:1465 +#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:226 ../gio/gdbus-tool.c:298 +#: ../gio/gdbus-tool.c:322 ../gio/gdbus-tool.c:711 ../gio/gdbus-tool.c:1043 +#: ../gio/gdbus-tool.c:1477 #, c-format msgid "Error: %s\n" msgstr "Қате: %s\n" -#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:233 ../gio/gdbus-tool.c:1481 +#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493 #, c-format msgid "Error parsing introspection XML: %s\n" msgstr "" -#: ../gio/gdbus-tool.c:350 +#: ../gio/gdbus-tool.c:208 +#, c-format +msgid "Error: %s is not a valid name\n" +msgstr "" + +#: ../gio/gdbus-tool.c:356 msgid "Connect to the system bus" msgstr "" -#: ../gio/gdbus-tool.c:351 +#: ../gio/gdbus-tool.c:357 msgid "Connect to the session bus" msgstr "" -#: ../gio/gdbus-tool.c:352 +#: ../gio/gdbus-tool.c:358 msgid "Connect to given D-Bus address" msgstr "" -#: ../gio/gdbus-tool.c:362 +#: ../gio/gdbus-tool.c:368 msgid "Connection Endpoint Options:" msgstr "" -#: ../gio/gdbus-tool.c:363 +#: ../gio/gdbus-tool.c:369 msgid "Options specifying the connection endpoint" msgstr "" -#: ../gio/gdbus-tool.c:385 +#: ../gio/gdbus-tool.c:391 #, c-format msgid "No connection endpoint specified" msgstr "" -#: ../gio/gdbus-tool.c:395 +#: ../gio/gdbus-tool.c:401 #, c-format msgid "Multiple connection endpoints specified" msgstr "" -#: ../gio/gdbus-tool.c:465 +#: ../gio/gdbus-tool.c:471 #, c-format msgid "" "Warning: According to introspection data, interface '%s' does not exist\n" msgstr "" -#: ../gio/gdbus-tool.c:474 +#: ../gio/gdbus-tool.c:480 #, c-format msgid "" "Warning: According to introspection data, method '%s' does not exist on " "interface '%s'\n" msgstr "" -#: ../gio/gdbus-tool.c:536 +#: ../gio/gdbus-tool.c:542 msgid "Optional destination for signal (unique name)" msgstr "" -#: ../gio/gdbus-tool.c:537 +#: ../gio/gdbus-tool.c:543 msgid "Object path to emit signal on" msgstr "" -#: ../gio/gdbus-tool.c:538 +#: ../gio/gdbus-tool.c:544 msgid "Signal and interface name" msgstr "" -#: ../gio/gdbus-tool.c:570 +#: ../gio/gdbus-tool.c:576 msgid "Emit a signal." msgstr "" -#: ../gio/gdbus-tool.c:604 ../gio/gdbus-tool.c:836 ../gio/gdbus-tool.c:1571 -#: ../gio/gdbus-tool.c:1799 +#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583 +#: ../gio/gdbus-tool.c:1818 #, c-format msgid "Error connecting: %s\n" msgstr "" -#: ../gio/gdbus-tool.c:616 +#: ../gio/gdbus-tool.c:622 #, c-format msgid "Error: object path not specified.\n" msgstr "" -#: ../gio/gdbus-tool.c:621 ../gio/gdbus-tool.c:897 ../gio/gdbus-tool.c:1629 -#: ../gio/gdbus-tool.c:1858 +#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648 +#: ../gio/gdbus-tool.c:1884 #, c-format msgid "Error: %s is not a valid object path\n" msgstr "" -#: ../gio/gdbus-tool.c:627 +#: ../gio/gdbus-tool.c:633 #, c-format msgid "Error: signal not specified.\n" msgstr "" -#: ../gio/gdbus-tool.c:634 +#: ../gio/gdbus-tool.c:640 #, c-format msgid "Error: signal must be the fully-qualified name.\n" msgstr "" -#: ../gio/gdbus-tool.c:642 +#: ../gio/gdbus-tool.c:648 #, c-format msgid "Error: %s is not a valid interface name\n" msgstr "" -#: ../gio/gdbus-tool.c:648 +#: ../gio/gdbus-tool.c:654 #, c-format msgid "Error: %s is not a valid member name\n" msgstr "" -#: ../gio/gdbus-tool.c:654 +#: ../gio/gdbus-tool.c:660 #, c-format msgid "Error: %s is not a valid unique bus name.\n" msgstr "" #. Use the original non-"parse-me-harder" error -#: ../gio/gdbus-tool.c:681 ../gio/gdbus-tool.c:999 +#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011 #, c-format msgid "Error parsing parameter %d: %s\n" msgstr "" -#: ../gio/gdbus-tool.c:712 +#: ../gio/gdbus-tool.c:718 #, c-format msgid "Error flushing connection: %s\n" msgstr "" -#: ../gio/gdbus-tool.c:739 +#: ../gio/gdbus-tool.c:745 msgid "Destination name to invoke method on" msgstr "" -#: ../gio/gdbus-tool.c:740 +#: ../gio/gdbus-tool.c:746 msgid "Object path to invoke method on" msgstr "" -#: ../gio/gdbus-tool.c:741 +#: ../gio/gdbus-tool.c:747 msgid "Method and interface name" msgstr "" -#: ../gio/gdbus-tool.c:742 +#: ../gio/gdbus-tool.c:748 msgid "Timeout in seconds" msgstr "" -#: ../gio/gdbus-tool.c:781 +#: ../gio/gdbus-tool.c:787 msgid "Invoke a method on a remote object." msgstr "" -#: ../gio/gdbus-tool.c:856 ../gio/gdbus-tool.c:1590 ../gio/gdbus-tool.c:1818 +#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837 #, c-format msgid "Error: Destination is not specified\n" msgstr "" -#: ../gio/gdbus-tool.c:877 ../gio/gdbus-tool.c:1609 +#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849 +#, c-format +msgid "Error: %s is not a valid bus name\n" +msgstr "" + +#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628 #, c-format msgid "Error: Object path is not specified\n" msgstr "" -#: ../gio/gdbus-tool.c:912 +#: ../gio/gdbus-tool.c:924 #, c-format msgid "Error: Method name is not specified\n" msgstr "" -#: ../gio/gdbus-tool.c:923 +#: ../gio/gdbus-tool.c:935 #, c-format msgid "Error: Method name '%s' is invalid\n" msgstr "" -#: ../gio/gdbus-tool.c:991 +#: ../gio/gdbus-tool.c:1003 #, c-format msgid "Error parsing parameter %d of type '%s': %s\n" msgstr "" -#: ../gio/gdbus-tool.c:1428 +#: ../gio/gdbus-tool.c:1440 msgid "Destination name to introspect" msgstr "" -#: ../gio/gdbus-tool.c:1429 +#: ../gio/gdbus-tool.c:1441 msgid "Object path to introspect" msgstr "" -#: ../gio/gdbus-tool.c:1430 +#: ../gio/gdbus-tool.c:1442 msgid "Print XML" msgstr "" -#: ../gio/gdbus-tool.c:1431 +#: ../gio/gdbus-tool.c:1443 msgid "Introspect children" msgstr "" -#: ../gio/gdbus-tool.c:1432 +#: ../gio/gdbus-tool.c:1444 msgid "Only print properties" msgstr "" -#: ../gio/gdbus-tool.c:1523 +#: ../gio/gdbus-tool.c:1535 msgid "Introspect a remote object." msgstr "" -#: ../gio/gdbus-tool.c:1721 +#: ../gio/gdbus-tool.c:1740 msgid "Destination name to monitor" msgstr "" -#: ../gio/gdbus-tool.c:1722 +#: ../gio/gdbus-tool.c:1741 msgid "Object path to monitor" msgstr "" -#: ../gio/gdbus-tool.c:1751 +#: ../gio/gdbus-tool.c:1770 msgid "Monitor a remote object." msgstr "" -#: ../gio/gdesktopappinfo.c:1999 ../gio/gdesktopappinfo.c:4530 -#: ../gio/gwin32appinfo.c:219 +#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4502 msgid "Unnamed" msgstr "Атаусыз" -#: ../gio/gdesktopappinfo.c:2408 +#: ../gio/gdesktopappinfo.c:2402 msgid "Desktop file didn't specify Exec field" msgstr "" -#: ../gio/gdesktopappinfo.c:2693 +#: ../gio/gdesktopappinfo.c:2687 msgid "Unable to find terminal required for application" msgstr "" -#: ../gio/gdesktopappinfo.c:3114 +#: ../gio/gdesktopappinfo.c:3099 #, c-format msgid "Can't create user application configuration folder %s: %s" msgstr "" -#: ../gio/gdesktopappinfo.c:3118 +#: ../gio/gdesktopappinfo.c:3103 #, c-format msgid "Can't create user MIME configuration folder %s: %s" msgstr "" -#: ../gio/gdesktopappinfo.c:3358 ../gio/gdesktopappinfo.c:3382 +#: ../gio/gdesktopappinfo.c:3343 ../gio/gdesktopappinfo.c:3367 msgid "Application information lacks an identifier" msgstr "" -#: ../gio/gdesktopappinfo.c:3615 +#: ../gio/gdesktopappinfo.c:3600 #, c-format msgid "Can't create user desktop file %s" msgstr "" -#: ../gio/gdesktopappinfo.c:3749 +#: ../gio/gdesktopappinfo.c:3734 #, c-format msgid "Custom definition for %s" msgstr "" @@ -1163,11 +1175,15 @@ msgstr "" msgid "drive doesn't implement stop" msgstr "" -#: ../gio/gdummytlsbackend.c:189 ../gio/gdummytlsbackend.c:311 -#: ../gio/gdummytlsbackend.c:401 +#: ../gio/gdummytlsbackend.c:195 ../gio/gdummytlsbackend.c:317 +#: ../gio/gdummytlsbackend.c:509 msgid "TLS support is not available" msgstr "TLS қолдауы қолжетерсіз" +#: ../gio/gdummytlsbackend.c:419 +msgid "DTLS support is not available" +msgstr "DTLS қолдауы қолжетерсіз" + #: ../gio/gemblem.c:323 #, c-format msgid "Can't handle version %d of GEmblem encoding" @@ -1192,14 +1208,14 @@ msgstr "" msgid "Expected a GEmblem for GEmblemedIcon" msgstr "" -#: ../gio/gfile.c:968 ../gio/gfile.c:1206 ../gio/gfile.c:1344 -#: ../gio/gfile.c:1582 ../gio/gfile.c:1637 ../gio/gfile.c:1695 -#: ../gio/gfile.c:1779 ../gio/gfile.c:1836 ../gio/gfile.c:1900 -#: ../gio/gfile.c:1955 ../gio/gfile.c:3603 ../gio/gfile.c:3658 -#: ../gio/gfile.c:3893 ../gio/gfile.c:3935 ../gio/gfile.c:4398 -#: ../gio/gfile.c:4809 ../gio/gfile.c:4894 ../gio/gfile.c:4984 -#: ../gio/gfile.c:5081 ../gio/gfile.c:5168 ../gio/gfile.c:5269 -#: ../gio/gfile.c:7788 ../gio/gfile.c:7878 ../gio/gfile.c:7962 +#: ../gio/gfile.c:969 ../gio/gfile.c:1207 ../gio/gfile.c:1345 +#: ../gio/gfile.c:1583 ../gio/gfile.c:1638 ../gio/gfile.c:1696 +#: ../gio/gfile.c:1780 ../gio/gfile.c:1837 ../gio/gfile.c:1901 +#: ../gio/gfile.c:1956 ../gio/gfile.c:3604 ../gio/gfile.c:3659 +#: ../gio/gfile.c:3894 ../gio/gfile.c:3936 ../gio/gfile.c:4404 +#: ../gio/gfile.c:4815 ../gio/gfile.c:4900 ../gio/gfile.c:4990 +#: ../gio/gfile.c:5087 ../gio/gfile.c:5174 ../gio/gfile.c:5275 +#: ../gio/gfile.c:7796 ../gio/gfile.c:7886 ../gio/gfile.c:7970 #: ../gio/win32/gwinhttpfile.c:437 msgid "Operation not supported" msgstr "Әрекетке қолдау жоқ" @@ -1214,70 +1230,70 @@ msgstr "Әрекетке қолдау жоқ" #. Translators: This is an error message when trying to find #. * the enclosing (user visible) mount of a file, but none #. * exists. -#: ../gio/gfile.c:1467 ../gio/glocalfile.c:1103 ../gio/glocalfile.c:1114 -#: ../gio/glocalfile.c:1127 +#: ../gio/gfile.c:1468 ../gio/glocalfile.c:1134 ../gio/glocalfile.c:1145 +#: ../gio/glocalfile.c:1158 msgid "Containing mount does not exist" msgstr "" -#: ../gio/gfile.c:2514 ../gio/glocalfile.c:2337 +#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2376 msgid "Can't copy over directory" msgstr "" -#: ../gio/gfile.c:2574 +#: ../gio/gfile.c:2575 msgid "Can't copy directory over directory" msgstr "" -#: ../gio/gfile.c:2582 ../gio/glocalfile.c:2346 +#: ../gio/gfile.c:2583 ../gio/glocalfile.c:2385 msgid "Target file exists" msgstr "Мақсат файлы бар болып тұр" -#: ../gio/gfile.c:2601 +#: ../gio/gfile.c:2602 msgid "Can't recursively copy directory" msgstr "Буманы рекурсивті көшіру мүмкін емес" -#: ../gio/gfile.c:2883 +#: ../gio/gfile.c:2884 msgid "Splice not supported" msgstr "" -#: ../gio/gfile.c:2887 +#: ../gio/gfile.c:2888 #, c-format msgid "Error splicing file: %s" msgstr "" -#: ../gio/gfile.c:3018 +#: ../gio/gfile.c:3019 msgid "Copy (reflink/clone) between mounts is not supported" msgstr "" -#: ../gio/gfile.c:3022 +#: ../gio/gfile.c:3023 msgid "Copy (reflink/clone) is not supported or invalid" msgstr "" -#: ../gio/gfile.c:3027 +#: ../gio/gfile.c:3028 msgid "Copy (reflink/clone) is not supported or didn't work" msgstr "" -#: ../gio/gfile.c:3090 +#: ../gio/gfile.c:3091 msgid "Can't copy special file" msgstr "" -#: ../gio/gfile.c:3883 +#: ../gio/gfile.c:3884 msgid "Invalid symlink value given" msgstr "" -#: ../gio/gfile.c:4044 +#: ../gio/gfile.c:4045 msgid "Trash not supported" msgstr "" -#: ../gio/gfile.c:4156 +#: ../gio/gfile.c:4157 #, c-format msgid "File names cannot contain '%c'" msgstr "" -#: ../gio/gfile.c:6580 ../gio/gvolume.c:363 +#: ../gio/gfile.c:6586 ../gio/gvolume.c:363 msgid "volume doesn't implement mount" msgstr "" -#: ../gio/gfile.c:6689 +#: ../gio/gfile.c:6695 msgid "No application is registered as handling this file" msgstr "" @@ -1399,16 +1415,16 @@ msgstr "" msgid "Could not parse '%s' as IP address mask" msgstr "" -#: ../gio/ginetsocketaddress.c:196 ../gio/ginetsocketaddress.c:213 -#: ../gio/gunixsocketaddress.c:209 +#: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220 +#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:216 msgid "Not enough space for socket address" msgstr "" -#: ../gio/ginetsocketaddress.c:228 +#: ../gio/ginetsocketaddress.c:235 msgid "Unsupported socket address" msgstr "" -#: ../gio/ginputstream.c:185 +#: ../gio/ginputstream.c:188 msgid "Input stream doesn't implement read" msgstr "" @@ -1418,12 +1434,12 @@ msgstr "" #. Translators: This is an error you get if there is #. * already an operation running against this stream when #. * you try to start one -#: ../gio/ginputstream.c:1212 ../gio/giostream.c:288 -#: ../gio/goutputstream.c:1664 +#: ../gio/ginputstream.c:1215 ../gio/giostream.c:310 +#: ../gio/goutputstream.c:1668 msgid "Stream has outstanding operation" msgstr "" -#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1453 +#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1491 #, c-format msgid "Element <%s> not allowed inside <%s>" msgstr "<%s> элементін <%s> ішінде орналастыру рұқсат етілмеген" @@ -1450,29 +1466,25 @@ msgstr "" #: ../gio/glib-compile-resources.c:288 #, c-format -#| msgid "Unknown option %s" msgid "Unknown processing option \"%s\"" msgstr "" #: ../gio/glib-compile-resources.c:306 ../gio/glib-compile-resources.c:352 #, c-format -#| msgid "Failed to create file '%s': %s" msgid "Failed to create temp file: %s" msgstr "" #: ../gio/glib-compile-resources.c:380 #, c-format -#| msgid "Error reading file '%s': %s" msgid "Error reading file %s: %s" msgstr "" #: ../gio/glib-compile-resources.c:400 #, c-format -#| msgid "Error closing file: %s" msgid "Error compressing file %s" msgstr "" -#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1565 +#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1603 #, c-format msgid "text may not appear inside <%s>" msgstr "мәтін <%s> ішінде болмауы мүмкін" @@ -1487,8 +1499,8 @@ msgid "" "directory)" msgstr "" -#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:1994 -#: ../gio/glib-compile-schemas.c:2023 +#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2036 +#: ../gio/glib-compile-schemas.c:2065 msgid "DIRECTORY" msgstr "БУМА" @@ -1533,368 +1545,369 @@ msgstr "" msgid "You should give exactly one file name\n" msgstr "" -#: ../gio/glib-compile-schemas.c:772 +#: ../gio/glib-compile-schemas.c:784 msgid "empty names are not permitted" msgstr "" -#: ../gio/glib-compile-schemas.c:782 +#: ../gio/glib-compile-schemas.c:794 #, c-format msgid "invalid name '%s': names must begin with a lowercase letter" msgstr "" -#: ../gio/glib-compile-schemas.c:794 +#: ../gio/glib-compile-schemas.c:806 #, c-format msgid "" "invalid name '%s': invalid character '%c'; only lowercase letters, numbers " "and hyphen ('-') are permitted." msgstr "" -#: ../gio/glib-compile-schemas.c:803 +#: ../gio/glib-compile-schemas.c:815 #, c-format msgid "invalid name '%s': two successive hyphens ('--') are not permitted." msgstr "" -#: ../gio/glib-compile-schemas.c:812 +#: ../gio/glib-compile-schemas.c:824 #, c-format msgid "invalid name '%s': the last character may not be a hyphen ('-')." msgstr "" -#: ../gio/glib-compile-schemas.c:820 +#: ../gio/glib-compile-schemas.c:832 #, c-format msgid "invalid name '%s': maximum length is 1024" msgstr "" -#: ../gio/glib-compile-schemas.c:889 +#: ../gio/glib-compile-schemas.c:901 #, c-format msgid " already specified" msgstr "" -#: ../gio/glib-compile-schemas.c:915 +#: ../gio/glib-compile-schemas.c:927 msgid "cannot add keys to a 'list-of' schema" msgstr "" -#: ../gio/glib-compile-schemas.c:926 +#: ../gio/glib-compile-schemas.c:938 #, c-format msgid " already specified" msgstr "" -#: ../gio/glib-compile-schemas.c:944 +#: ../gio/glib-compile-schemas.c:956 #, c-format msgid "" " shadows in ; use " "to modify value" msgstr "" -#: ../gio/glib-compile-schemas.c:955 +#: ../gio/glib-compile-schemas.c:967 #, c-format msgid "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " "to " msgstr "" -#: ../gio/glib-compile-schemas.c:974 +#: ../gio/glib-compile-schemas.c:986 #, c-format msgid "<%s id='%s'> not (yet) defined." msgstr "" -#: ../gio/glib-compile-schemas.c:989 +#: ../gio/glib-compile-schemas.c:1001 #, c-format msgid "invalid GVariant type string '%s'" msgstr "" -#: ../gio/glib-compile-schemas.c:1019 +#: ../gio/glib-compile-schemas.c:1031 msgid " given but schema isn't extending anything" msgstr "" -#: ../gio/glib-compile-schemas.c:1032 +#: ../gio/glib-compile-schemas.c:1044 #, c-format msgid "no to override" msgstr "" -#: ../gio/glib-compile-schemas.c:1040 +#: ../gio/glib-compile-schemas.c:1052 #, c-format msgid " already specified" msgstr "" -#: ../gio/glib-compile-schemas.c:1111 +#: ../gio/glib-compile-schemas.c:1125 #, c-format msgid " already specified" msgstr "" -#: ../gio/glib-compile-schemas.c:1123 +#: ../gio/glib-compile-schemas.c:1137 #, c-format msgid " extends not yet existing schema '%s'" msgstr "" -#: ../gio/glib-compile-schemas.c:1139 +#: ../gio/glib-compile-schemas.c:1153 #, c-format msgid " is list of not yet existing schema '%s'" msgstr "" -#: ../gio/glib-compile-schemas.c:1147 +#: ../gio/glib-compile-schemas.c:1161 #, c-format msgid "Can not be a list of a schema with a path" msgstr "" -#: ../gio/glib-compile-schemas.c:1157 +#: ../gio/glib-compile-schemas.c:1171 #, c-format msgid "Can not extend a schema with a path" msgstr "" -#: ../gio/glib-compile-schemas.c:1167 +#: ../gio/glib-compile-schemas.c:1181 #, c-format msgid "" " is a list, extending which is not a list" msgstr "" -#: ../gio/glib-compile-schemas.c:1177 +#: ../gio/glib-compile-schemas.c:1191 #, c-format msgid "" " extends but '%s' " "does not extend '%s'" msgstr "" -#: ../gio/glib-compile-schemas.c:1194 +#: ../gio/glib-compile-schemas.c:1208 #, c-format msgid "a path, if given, must begin and end with a slash" msgstr "" -#: ../gio/glib-compile-schemas.c:1201 +#: ../gio/glib-compile-schemas.c:1215 #, c-format msgid "the path of a list must end with ':/'" msgstr "" -#: ../gio/glib-compile-schemas.c:1233 +#: ../gio/glib-compile-schemas.c:1247 #, c-format msgid "<%s id='%s'> already specified" msgstr "" -#: ../gio/glib-compile-schemas.c:1457 +#: ../gio/glib-compile-schemas.c:1397 ../gio/glib-compile-schemas.c:1413 +#, c-format +msgid "Only one <%s> element allowed inside <%s>" +msgstr "<%s> ішінде тек бір <%s> элементіне рұқсат етілген" + +#: ../gio/glib-compile-schemas.c:1495 #, c-format msgid "Element <%s> not allowed at the top level" msgstr "" #. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1752 ../gio/glib-compile-schemas.c:1823 -#: ../gio/glib-compile-schemas.c:1899 +#: ../gio/glib-compile-schemas.c:1794 ../gio/glib-compile-schemas.c:1865 +#: ../gio/glib-compile-schemas.c:1941 #, c-format msgid "--strict was specified; exiting.\n" msgstr "" -#: ../gio/glib-compile-schemas.c:1760 +#: ../gio/glib-compile-schemas.c:1802 #, c-format msgid "This entire file has been ignored.\n" msgstr "" -#: ../gio/glib-compile-schemas.c:1819 +#: ../gio/glib-compile-schemas.c:1861 #, c-format msgid "Ignoring this file.\n" msgstr "" -#: ../gio/glib-compile-schemas.c:1859 +#: ../gio/glib-compile-schemas.c:1901 #, c-format msgid "No such key '%s' in schema '%s' as specified in override file '%s'" msgstr "" -#: ../gio/glib-compile-schemas.c:1865 ../gio/glib-compile-schemas.c:1923 -#: ../gio/glib-compile-schemas.c:1951 +#: ../gio/glib-compile-schemas.c:1907 ../gio/glib-compile-schemas.c:1965 +#: ../gio/glib-compile-schemas.c:1993 #, c-format msgid "; ignoring override for this key.\n" msgstr "" -#: ../gio/glib-compile-schemas.c:1869 ../gio/glib-compile-schemas.c:1927 -#: ../gio/glib-compile-schemas.c:1955 +#: ../gio/glib-compile-schemas.c:1911 ../gio/glib-compile-schemas.c:1969 +#: ../gio/glib-compile-schemas.c:1997 #, c-format msgid " and --strict was specified; exiting.\n" msgstr "" -#: ../gio/glib-compile-schemas.c:1885 +#: ../gio/glib-compile-schemas.c:1927 #, c-format msgid "" "error parsing key '%s' in schema '%s' as specified in override file '%s': %s." msgstr "" -#: ../gio/glib-compile-schemas.c:1895 +#: ../gio/glib-compile-schemas.c:1937 #, c-format msgid "Ignoring override for this key.\n" msgstr "" -#: ../gio/glib-compile-schemas.c:1913 +#: ../gio/glib-compile-schemas.c:1955 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is outside the " "range given in the schema" msgstr "" -#: ../gio/glib-compile-schemas.c:1941 +#: ../gio/glib-compile-schemas.c:1983 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is not in the " "list of valid choices" msgstr "" -#: ../gio/glib-compile-schemas.c:1994 +#: ../gio/glib-compile-schemas.c:2036 msgid "where to store the gschemas.compiled file" msgstr "" -#: ../gio/glib-compile-schemas.c:1995 +#: ../gio/glib-compile-schemas.c:2037 msgid "Abort on any errors in schemas" msgstr "" -#: ../gio/glib-compile-schemas.c:1996 +#: ../gio/glib-compile-schemas.c:2038 msgid "Do not write the gschema.compiled file" msgstr "" -#: ../gio/glib-compile-schemas.c:1997 +#: ../gio/glib-compile-schemas.c:2039 msgid "Do not enforce key name restrictions" msgstr "" -#: ../gio/glib-compile-schemas.c:2026 +#: ../gio/glib-compile-schemas.c:2068 msgid "" "Compile all GSettings schema files into a schema cache.\n" "Schema files are required to have the extension .gschema.xml,\n" "and the cache file is called gschemas.compiled." msgstr "" -#: ../gio/glib-compile-schemas.c:2042 +#: ../gio/glib-compile-schemas.c:2084 #, c-format msgid "You should give exactly one directory name\n" msgstr "" -#: ../gio/glib-compile-schemas.c:2081 +#: ../gio/glib-compile-schemas.c:2123 #, c-format msgid "No schema files found: " msgstr "" -#: ../gio/glib-compile-schemas.c:2084 +#: ../gio/glib-compile-schemas.c:2126 #, c-format msgid "doing nothing.\n" msgstr "" -#: ../gio/glib-compile-schemas.c:2087 +#: ../gio/glib-compile-schemas.c:2129 #, c-format msgid "removed existing output file.\n" msgstr "" -#: ../gio/glocaldirectorymonitor.c:224 -msgid "Unable to find default local directory monitor type" -msgstr "" - -#: ../gio/glocalfile.c:604 ../gio/win32/gwinhttpfile.c:420 +#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420 #, c-format msgid "Invalid filename %s" msgstr "Қате файл аты %s" -#: ../gio/glocalfile.c:981 +#: ../gio/glocalfile.c:1012 #, c-format msgid "Error getting filesystem info: %s" msgstr "" -#: ../gio/glocalfile.c:1149 +#: ../gio/glocalfile.c:1180 msgid "Can't rename root directory" msgstr "Түбірлік буманың атын ауыстыру мүмкін емес" -#: ../gio/glocalfile.c:1169 ../gio/glocalfile.c:1195 +#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226 #, c-format msgid "Error renaming file: %s" msgstr "Файл атын ауыстыру қатесі: %s" -#: ../gio/glocalfile.c:1178 +#: ../gio/glocalfile.c:1209 msgid "Can't rename file, filename already exists" msgstr "Файл атын ауыстыру мүмкін емес, мақсат файлы бар болып тұр" -#: ../gio/glocalfile.c:1191 ../gio/glocalfile.c:2210 ../gio/glocalfile.c:2239 -#: ../gio/glocalfile.c:2399 ../gio/glocalfileoutputstream.c:549 +#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2249 ../gio/glocalfile.c:2278 +#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549 msgid "Invalid filename" msgstr "Файл аты қате" -#: ../gio/glocalfile.c:1358 ../gio/glocalfile.c:1382 +#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413 msgid "Can't open directory" msgstr "Буманы ашу мүмкін емес" -#: ../gio/glocalfile.c:1366 +#: ../gio/glocalfile.c:1397 #, c-format msgid "Error opening file: %s" msgstr "Файлды ашу қатесі: %s" -#: ../gio/glocalfile.c:1507 +#: ../gio/glocalfile.c:1538 #, c-format msgid "Error removing file: %s" msgstr "Файлды өшіру қатесі: %s" -#: ../gio/glocalfile.c:1887 +#: ../gio/glocalfile.c:1922 #, c-format msgid "Error trashing file: %s" msgstr "Файлды қоқысқа тастау қатесі: %s" -#: ../gio/glocalfile.c:1910 +#: ../gio/glocalfile.c:1945 #, c-format msgid "Unable to create trash dir %s: %s" msgstr "" -#: ../gio/glocalfile.c:1931 +#: ../gio/glocalfile.c:1966 msgid "Unable to find toplevel directory for trash" msgstr "" -#: ../gio/glocalfile.c:2010 ../gio/glocalfile.c:2030 +#: ../gio/glocalfile.c:2045 ../gio/glocalfile.c:2065 msgid "Unable to find or create trash directory" msgstr "" -#: ../gio/glocalfile.c:2064 +#: ../gio/glocalfile.c:2099 #, c-format msgid "Unable to create trashing info file: %s" msgstr "" -#: ../gio/glocalfile.c:2095 ../gio/glocalfile.c:2100 ../gio/glocalfile.c:2180 -#: ../gio/glocalfile.c:2187 +#: ../gio/glocalfile.c:2157 ../gio/glocalfile.c:2162 ../gio/glocalfile.c:2219 +#: ../gio/glocalfile.c:2226 #, c-format msgid "Unable to trash file: %s" msgstr "Файлды қоқысқа тастау мүмкін емес: %s" -#: ../gio/glocalfile.c:2188 ../glib/gregex.c:281 +#: ../gio/glocalfile.c:2227 ../glib/gregex.c:281 msgid "internal error" msgstr "ішкі қате" -#: ../gio/glocalfile.c:2214 +#: ../gio/glocalfile.c:2253 #, c-format msgid "Error creating directory: %s" msgstr "Буманы жасау қатесі: %s" -#: ../gio/glocalfile.c:2243 +#: ../gio/glocalfile.c:2282 #, c-format msgid "Filesystem does not support symbolic links" msgstr "" -#: ../gio/glocalfile.c:2247 +#: ../gio/glocalfile.c:2286 #, c-format msgid "Error making symbolic link: %s" msgstr "" -#: ../gio/glocalfile.c:2309 ../gio/glocalfile.c:2403 +#: ../gio/glocalfile.c:2348 ../gio/glocalfile.c:2442 #, c-format msgid "Error moving file: %s" msgstr "Файлды жылжыту қатесі: %s" -#: ../gio/glocalfile.c:2332 +#: ../gio/glocalfile.c:2371 msgid "Can't move directory over directory" msgstr "" -#: ../gio/glocalfile.c:2359 ../gio/glocalfileoutputstream.c:925 +#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:925 #: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954 #: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984 msgid "Backup file creation failed" msgstr "" -#: ../gio/glocalfile.c:2378 +#: ../gio/glocalfile.c:2417 #, c-format msgid "Error removing target file: %s" msgstr "Мақсат файлын өшіру қатесі: %s" -#: ../gio/glocalfile.c:2392 +#: ../gio/glocalfile.c:2431 msgid "Move between mounts not supported" msgstr "" -#: ../gio/glocalfile.c:2603 +#: ../gio/glocalfile.c:2623 #, c-format msgid "Could not determine the disk usage of %s: %s" msgstr "" @@ -1916,79 +1929,79 @@ msgstr "" msgid "Error setting extended attribute '%s': %s" msgstr "" -#: ../gio/glocalfileinfo.c:1556 +#: ../gio/glocalfileinfo.c:1575 msgid " (invalid encoding)" msgstr " (кодталуы қате)" -#: ../gio/glocalfileinfo.c:1747 ../gio/glocalfileoutputstream.c:803 +#: ../gio/glocalfileinfo.c:1766 ../gio/glocalfileoutputstream.c:803 #, c-format msgid "Error when getting information for file '%s': %s" msgstr "" -#: ../gio/glocalfileinfo.c:1998 +#: ../gio/glocalfileinfo.c:2017 #, c-format msgid "Error when getting information for file descriptor: %s" msgstr "" -#: ../gio/glocalfileinfo.c:2043 +#: ../gio/glocalfileinfo.c:2062 msgid "Invalid attribute type (uint32 expected)" msgstr "" -#: ../gio/glocalfileinfo.c:2061 +#: ../gio/glocalfileinfo.c:2080 msgid "Invalid attribute type (uint64 expected)" msgstr "" -#: ../gio/glocalfileinfo.c:2080 ../gio/glocalfileinfo.c:2099 +#: ../gio/glocalfileinfo.c:2099 ../gio/glocalfileinfo.c:2118 msgid "Invalid attribute type (byte string expected)" msgstr "" -#: ../gio/glocalfileinfo.c:2134 +#: ../gio/glocalfileinfo.c:2153 msgid "Cannot set permissions on symlinks" msgstr "" -#: ../gio/glocalfileinfo.c:2150 +#: ../gio/glocalfileinfo.c:2169 #, c-format msgid "Error setting permissions: %s" msgstr "Рұқсаттарды орнату қатесі: %s" -#: ../gio/glocalfileinfo.c:2201 +#: ../gio/glocalfileinfo.c:2220 #, c-format msgid "Error setting owner: %s" msgstr "Иесін орнату қатесі: %s" -#: ../gio/glocalfileinfo.c:2224 +#: ../gio/glocalfileinfo.c:2243 msgid "symlink must be non-NULL" msgstr "" -#: ../gio/glocalfileinfo.c:2234 ../gio/glocalfileinfo.c:2253 -#: ../gio/glocalfileinfo.c:2264 +#: ../gio/glocalfileinfo.c:2253 ../gio/glocalfileinfo.c:2272 +#: ../gio/glocalfileinfo.c:2283 #, c-format msgid "Error setting symlink: %s" msgstr "" -#: ../gio/glocalfileinfo.c:2243 +#: ../gio/glocalfileinfo.c:2262 msgid "Error setting symlink: file is not a symlink" msgstr "" -#: ../gio/glocalfileinfo.c:2369 +#: ../gio/glocalfileinfo.c:2388 #, c-format msgid "Error setting modification or access time: %s" msgstr "" -#: ../gio/glocalfileinfo.c:2392 +#: ../gio/glocalfileinfo.c:2411 msgid "SELinux context must be non-NULL" msgstr "" -#: ../gio/glocalfileinfo.c:2407 +#: ../gio/glocalfileinfo.c:2426 #, c-format msgid "Error setting SELinux context: %s" msgstr "" -#: ../gio/glocalfileinfo.c:2414 +#: ../gio/glocalfileinfo.c:2433 msgid "SELinux is not enabled on this system" msgstr "" -#: ../gio/glocalfileinfo.c:2506 +#: ../gio/glocalfileinfo.c:2525 #, c-format msgid "Setting attribute %s not supported" msgstr "" @@ -2011,7 +2024,7 @@ msgstr "Файлдан іздеу қатесі: %s" msgid "Error closing file: %s" msgstr "Файлды жабу қатесі: %s" -#: ../gio/glocalfilemonitor.c:145 +#: ../gio/glocalfilemonitor.c:840 msgid "Unable to find default local file monitor type" msgstr "" @@ -2064,7 +2077,7 @@ msgstr "" msgid "Error removing old file: %s" msgstr "Ескі файлды өшіру қатесі: %s" -#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:769 +#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:771 msgid "Invalid GSeekType supplied" msgstr "" @@ -2076,25 +2089,25 @@ msgstr "" msgid "Cannot truncate GMemoryInputStream" msgstr "" -#: ../gio/gmemoryoutputstream.c:565 +#: ../gio/gmemoryoutputstream.c:567 msgid "Memory output stream not resizable" msgstr "" -#: ../gio/gmemoryoutputstream.c:581 +#: ../gio/gmemoryoutputstream.c:583 msgid "Failed to resize memory output stream" msgstr "" -#: ../gio/gmemoryoutputstream.c:671 +#: ../gio/gmemoryoutputstream.c:673 msgid "" "Amount of memory required to process the write is larger than available " "address space" msgstr "" -#: ../gio/gmemoryoutputstream.c:779 +#: ../gio/gmemoryoutputstream.c:781 msgid "Requested seek before the beginning of the stream" msgstr "" -#: ../gio/gmemoryoutputstream.c:794 +#: ../gio/gmemoryoutputstream.c:796 msgid "Requested seek beyond the end of the stream" msgstr "" @@ -2147,18 +2160,18 @@ msgstr "" msgid "mount doesn't implement synchronous content type guessing" msgstr "" -#: ../gio/gnetworkaddress.c:383 +#: ../gio/gnetworkaddress.c:378 #, c-format msgid "Hostname '%s' contains '[' but not ']'" msgstr "" -#: ../gio/gnetworkmonitorbase.c:199 ../gio/gnetworkmonitorbase.c:302 +#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:309 msgid "Network unreachable" -msgstr "" +msgstr "Желі қолжетерсіз" -#: ../gio/gnetworkmonitorbase.c:237 ../gio/gnetworkmonitorbase.c:267 +#: ../gio/gnetworkmonitorbase.c:244 ../gio/gnetworkmonitorbase.c:274 msgid "Host unreachable" -msgstr "" +msgstr "Хост қолжетерсіз" #: ../gio/gnetworkmonitornetlink.c:96 ../gio/gnetworkmonitornetlink.c:108 #: ../gio/gnetworkmonitornetlink.c:127 @@ -2174,69 +2187,68 @@ msgstr "" msgid "Could not get network status: " msgstr "" -#: ../gio/gnetworkmonitornm.c:278 +#: ../gio/gnetworkmonitornm.c:326 #, c-format msgid "NetworkManager version too old" -msgstr "" +msgstr "NetworkManager нұсқасы тым ескі" -#: ../gio/goutputstream.c:209 ../gio/goutputstream.c:557 +#: ../gio/goutputstream.c:212 ../gio/goutputstream.c:560 msgid "Output stream doesn't implement write" msgstr "" -#: ../gio/goutputstream.c:518 ../gio/goutputstream.c:1218 +#: ../gio/goutputstream.c:521 ../gio/goutputstream.c:1222 msgid "Source stream is already closed" msgstr "" -#: ../gio/gresolver.c:331 ../gio/gthreadedresolver.c:116 +#: ../gio/gresolver.c:330 ../gio/gthreadedresolver.c:116 #: ../gio/gthreadedresolver.c:126 #, c-format msgid "Error resolving '%s': %s" msgstr "" -#: ../gio/gresource.c:298 ../gio/gresource.c:546 ../gio/gresource.c:563 -#: ../gio/gresource.c:684 ../gio/gresource.c:753 ../gio/gresource.c:814 -#: ../gio/gresource.c:894 ../gio/gresourcefile.c:452 -#: ../gio/gresourcefile.c:553 ../gio/gresourcefile.c:655 +#: ../gio/gresource.c:304 ../gio/gresource.c:555 ../gio/gresource.c:572 +#: ../gio/gresource.c:693 ../gio/gresource.c:762 ../gio/gresource.c:823 +#: ../gio/gresource.c:903 ../gio/gresourcefile.c:453 ../gio/gresourcefile.c:576 +#: ../gio/gresourcefile.c:713 #, c-format msgid "The resource at '%s' does not exist" msgstr "" -#: ../gio/gresource.c:463 +#: ../gio/gresource.c:469 #, c-format msgid "The resource at '%s' failed to decompress" msgstr "" -#: ../gio/gresourcefile.c:651 +#: ../gio/gresourcefile.c:709 #, c-format -#| msgid "Target file is a directory" msgid "The resource at '%s' is not a directory" msgstr "" -#: ../gio/gresourcefile.c:859 +#: ../gio/gresourcefile.c:917 msgid "Input stream doesn't implement seek" msgstr "" -#: ../gio/gresource-tool.c:491 +#: ../gio/gresource-tool.c:494 msgid "List sections containing resources in an elf FILE" msgstr "" -#: ../gio/gresource-tool.c:497 +#: ../gio/gresource-tool.c:500 msgid "" "List resources\n" "If SECTION is given, only list resources in this section\n" "If PATH is given, only list matching resources" msgstr "" -#: ../gio/gresource-tool.c:500 ../gio/gresource-tool.c:510 +#: ../gio/gresource-tool.c:503 ../gio/gresource-tool.c:513 msgid "FILE [PATH]" msgstr "" -#: ../gio/gresource-tool.c:501 ../gio/gresource-tool.c:511 -#: ../gio/gresource-tool.c:518 +#: ../gio/gresource-tool.c:504 ../gio/gresource-tool.c:514 +#: ../gio/gresource-tool.c:521 msgid "SECTION" msgstr "" -#: ../gio/gresource-tool.c:506 +#: ../gio/gresource-tool.c:509 msgid "" "List resources with details\n" "If SECTION is given, only list resources in this section\n" @@ -2244,16 +2256,15 @@ msgid "" "Details include the section, size and compression" msgstr "" -#: ../gio/gresource-tool.c:516 +#: ../gio/gresource-tool.c:519 msgid "Extract a resource file to stdout" msgstr "" -#: ../gio/gresource-tool.c:517 -#| msgid "PATH" +#: ../gio/gresource-tool.c:520 msgid "FILE PATH" msgstr "" -#: ../gio/gresource-tool.c:531 +#: ../gio/gresource-tool.c:534 msgid "" "Usage:\n" " gresource [--section SECTION] COMMAND [ARGS...]\n" @@ -2269,7 +2280,7 @@ msgid "" "\n" msgstr "" -#: ../gio/gresource-tool.c:545 +#: ../gio/gresource-tool.c:548 #, c-format msgid "" "Usage:\n" @@ -2279,42 +2290,42 @@ msgid "" "\n" msgstr "" -#: ../gio/gresource-tool.c:552 +#: ../gio/gresource-tool.c:555 msgid " SECTION An (optional) elf section name\n" msgstr "" -#: ../gio/gresource-tool.c:556 ../gio/gsettings-tool.c:648 +#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:639 msgid " COMMAND The (optional) command to explain\n" msgstr "" -#: ../gio/gresource-tool.c:562 +#: ../gio/gresource-tool.c:565 msgid " FILE An elf file (a binary or a shared library)\n" msgstr "" -#: ../gio/gresource-tool.c:565 +#: ../gio/gresource-tool.c:568 msgid "" " FILE An elf file (a binary or a shared library)\n" " or a compiled resource file\n" msgstr "" -#: ../gio/gresource-tool.c:569 -#| msgid "PATH" +#: ../gio/gresource-tool.c:572 msgid "[PATH]" msgstr "" -#: ../gio/gresource-tool.c:571 +#: ../gio/gresource-tool.c:574 msgid " PATH An (optional) resource path (may be partial)\n" msgstr "" -#: ../gio/gresource-tool.c:572 +#: ../gio/gresource-tool.c:575 msgid "PATH" msgstr "ЖОЛ" -#: ../gio/gresource-tool.c:574 +#: ../gio/gresource-tool.c:577 msgid " PATH A resource path\n" msgstr "" #: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72 +#: ../gio/gsettings-tool.c:830 #, c-format msgid "No such schema '%s'\n" msgstr "" @@ -2349,92 +2360,92 @@ msgstr "" msgid "Path must not contain two adjacent slashes (//)\n" msgstr "" -#: ../gio/gsettings-tool.c:490 +#: ../gio/gsettings-tool.c:481 #, c-format msgid "The provided value is outside of the valid range\n" msgstr "" -#: ../gio/gsettings-tool.c:497 +#: ../gio/gsettings-tool.c:488 #, c-format msgid "The key is not writable\n" msgstr "" -#: ../gio/gsettings-tool.c:533 +#: ../gio/gsettings-tool.c:524 msgid "List the installed (non-relocatable) schemas" msgstr "" -#: ../gio/gsettings-tool.c:539 +#: ../gio/gsettings-tool.c:530 msgid "List the installed relocatable schemas" msgstr "" -#: ../gio/gsettings-tool.c:545 +#: ../gio/gsettings-tool.c:536 msgid "List the keys in SCHEMA" msgstr "" -#: ../gio/gsettings-tool.c:546 ../gio/gsettings-tool.c:552 -#: ../gio/gsettings-tool.c:589 +#: ../gio/gsettings-tool.c:537 ../gio/gsettings-tool.c:543 +#: ../gio/gsettings-tool.c:580 msgid "SCHEMA[:PATH]" -msgstr "" +msgstr "SCHEMA[:PATH]" -#: ../gio/gsettings-tool.c:551 +#: ../gio/gsettings-tool.c:542 msgid "List the children of SCHEMA" msgstr "" -#: ../gio/gsettings-tool.c:557 +#: ../gio/gsettings-tool.c:548 msgid "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" msgstr "" -#: ../gio/gsettings-tool.c:559 +#: ../gio/gsettings-tool.c:550 msgid "[SCHEMA[:PATH]]" -msgstr "" +msgstr "[SCHEMA[:PATH]]" -#: ../gio/gsettings-tool.c:564 +#: ../gio/gsettings-tool.c:555 msgid "Get the value of KEY" msgstr "" -#: ../gio/gsettings-tool.c:565 ../gio/gsettings-tool.c:571 -#: ../gio/gsettings-tool.c:583 ../gio/gsettings-tool.c:595 +#: ../gio/gsettings-tool.c:556 ../gio/gsettings-tool.c:562 +#: ../gio/gsettings-tool.c:574 ../gio/gsettings-tool.c:586 msgid "SCHEMA[:PATH] KEY" -msgstr "" +msgstr "SCHEMA[:PATH] KEY" -#: ../gio/gsettings-tool.c:570 +#: ../gio/gsettings-tool.c:561 msgid "Query the range of valid values for KEY" msgstr "" -#: ../gio/gsettings-tool.c:576 +#: ../gio/gsettings-tool.c:567 msgid "Set the value of KEY to VALUE" msgstr "" -#: ../gio/gsettings-tool.c:577 +#: ../gio/gsettings-tool.c:568 msgid "SCHEMA[:PATH] KEY VALUE" -msgstr "" +msgstr "SCHEMA[:PATH] KEY VALUE" -#: ../gio/gsettings-tool.c:582 +#: ../gio/gsettings-tool.c:573 msgid "Reset KEY to its default value" msgstr "" -#: ../gio/gsettings-tool.c:588 +#: ../gio/gsettings-tool.c:579 msgid "Reset all keys in SCHEMA to their defaults" msgstr "" -#: ../gio/gsettings-tool.c:594 +#: ../gio/gsettings-tool.c:585 msgid "Check if KEY is writable" msgstr "" -#: ../gio/gsettings-tool.c:600 +#: ../gio/gsettings-tool.c:591 msgid "" "Monitor KEY for changes.\n" "If no KEY is specified, monitor all keys in SCHEMA.\n" "Use ^C to stop monitoring.\n" msgstr "" -#: ../gio/gsettings-tool.c:603 +#: ../gio/gsettings-tool.c:594 msgid "SCHEMA[:PATH] [KEY]" msgstr "" -#: ../gio/gsettings-tool.c:615 +#: ../gio/gsettings-tool.c:606 msgid "" "Usage:\n" " gsettings --version\n" @@ -2459,7 +2470,7 @@ msgid "" "\n" msgstr "" -#: ../gio/gsettings-tool.c:638 +#: ../gio/gsettings-tool.c:629 #, c-format msgid "" "Usage:\n" @@ -2469,173 +2480,186 @@ msgid "" "\n" msgstr "" -#: ../gio/gsettings-tool.c:644 +#: ../gio/gsettings-tool.c:635 msgid " SCHEMADIR A directory to search for additional schemas\n" msgstr "" -#: ../gio/gsettings-tool.c:652 +#: ../gio/gsettings-tool.c:643 msgid "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" msgstr "" -#: ../gio/gsettings-tool.c:657 +#: ../gio/gsettings-tool.c:648 msgid " KEY The (optional) key within the schema\n" msgstr "" -#: ../gio/gsettings-tool.c:661 +#: ../gio/gsettings-tool.c:652 msgid " KEY The key within the schema\n" msgstr "" -#: ../gio/gsettings-tool.c:665 +#: ../gio/gsettings-tool.c:656 msgid " VALUE The value to set\n" msgstr "" -#: ../gio/gsettings-tool.c:720 +#: ../gio/gsettings-tool.c:711 #, c-format msgid "Could not load schemas from %s: %s\n" msgstr "" -#: ../gio/gsettings-tool.c:782 +#: ../gio/gsettings-tool.c:723 +#, c-format +msgid "No schemas installed\n" +msgstr "" + +#: ../gio/gsettings-tool.c:788 #, c-format msgid "Empty schema name given\n" msgstr "" -#: ../gio/gsettings-tool.c:811 +#: ../gio/gsettings-tool.c:843 #, c-format msgid "No such key '%s'\n" msgstr "" -#: ../gio/gsocket.c:271 +#: ../gio/gsocket.c:364 msgid "Invalid socket, not initialized" msgstr "" -#: ../gio/gsocket.c:278 +#: ../gio/gsocket.c:371 #, c-format msgid "Invalid socket, initialization failed due to: %s" msgstr "" -#: ../gio/gsocket.c:286 +#: ../gio/gsocket.c:379 msgid "Socket is already closed" msgstr "" -#: ../gio/gsocket.c:301 ../gio/gsocket.c:3627 ../gio/gsocket.c:3682 +#: ../gio/gsocket.c:394 ../gio/gsocket.c:2751 ../gio/gsocket.c:3896 +#: ../gio/gsocket.c:3951 msgid "Socket I/O timed out" msgstr "" -#: ../gio/gsocket.c:448 +#: ../gio/gsocket.c:526 #, c-format msgid "creating GSocket from fd: %s" msgstr "" -#: ../gio/gsocket.c:476 ../gio/gsocket.c:530 ../gio/gsocket.c:537 +#: ../gio/gsocket.c:554 ../gio/gsocket.c:608 ../gio/gsocket.c:615 #, c-format msgid "Unable to create socket: %s" msgstr "" -#: ../gio/gsocket.c:530 +#: ../gio/gsocket.c:608 msgid "Unknown family was specified" msgstr "" -#: ../gio/gsocket.c:537 +#: ../gio/gsocket.c:615 msgid "Unknown protocol was specified" msgstr "" -#: ../gio/gsocket.c:1727 +#: ../gio/gsocket.c:1104 +#, c-format +msgid "Cannot use datagram operations on a non-datagram socket." +msgstr "" + +#: ../gio/gsocket.c:1121 +#, c-format +msgid "Cannot use datagram operations on a socket with a timeout set." +msgstr "" + +#: ../gio/gsocket.c:1925 #, c-format msgid "could not get local address: %s" msgstr "" -#: ../gio/gsocket.c:1770 +#: ../gio/gsocket.c:1968 #, c-format msgid "could not get remote address: %s" msgstr "" -#: ../gio/gsocket.c:1831 +#: ../gio/gsocket.c:2034 #, c-format msgid "could not listen: %s" msgstr "" -#: ../gio/gsocket.c:1930 +#: ../gio/gsocket.c:2133 #, c-format msgid "Error binding to address: %s" msgstr "" -#: ../gio/gsocket.c:2045 ../gio/gsocket.c:2082 +#: ../gio/gsocket.c:2248 ../gio/gsocket.c:2285 #, c-format -#| msgid "Error launching application: %s" msgid "Error joining multicast group: %s" msgstr "" -#: ../gio/gsocket.c:2046 ../gio/gsocket.c:2083 +#: ../gio/gsocket.c:2249 ../gio/gsocket.c:2286 #, c-format -#| msgid "Error launching application: %s" msgid "Error leaving multicast group: %s" msgstr "" -#: ../gio/gsocket.c:2047 +#: ../gio/gsocket.c:2250 msgid "No support for source-specific multicast" msgstr "" -#: ../gio/gsocket.c:2269 +#: ../gio/gsocket.c:2470 #, c-format msgid "Error accepting connection: %s" msgstr "" -#: ../gio/gsocket.c:2392 +#: ../gio/gsocket.c:2593 msgid "Connection in progress" msgstr "" -#: ../gio/gsocket.c:2442 -#| msgid "Unable to trash file: %s" +#: ../gio/gsocket.c:2644 msgid "Unable to get pending error: " msgstr "" -#: ../gio/gsocket.c:2645 +#: ../gio/gsocket.c:2816 #, c-format msgid "Error receiving data: %s" msgstr "" -#: ../gio/gsocket.c:2820 +#: ../gio/gsocket.c:3013 #, c-format msgid "Error sending data: %s" msgstr "" -#: ../gio/gsocket.c:2934 +#: ../gio/gsocket.c:3200 #, c-format msgid "Unable to shutdown socket: %s" msgstr "" -#: ../gio/gsocket.c:3013 +#: ../gio/gsocket.c:3281 #, c-format msgid "Error closing socket: %s" msgstr "" -#: ../gio/gsocket.c:3620 +#: ../gio/gsocket.c:3889 #, c-format msgid "Waiting for socket condition: %s" msgstr "" -#: ../gio/gsocket.c:3907 ../gio/gsocket.c:3990 ../gio/gsocket.c:4218 +#: ../gio/gsocket.c:4361 ../gio/gsocket.c:4441 ../gio/gsocket.c:4619 #, c-format msgid "Error sending message: %s" msgstr "Хабарламаны жіберу сәтсіз: %s" -#: ../gio/gsocket.c:3932 +#: ../gio/gsocket.c:4385 msgid "GSocketControlMessage not supported on Windows" msgstr "" -#: ../gio/gsocket.c:4546 ../gio/gsocket.c:4684 +#: ../gio/gsocket.c:4840 ../gio/gsocket.c:4913 ../gio/gsocket.c:5140 #, c-format msgid "Error receiving message: %s" msgstr "" -#: ../gio/gsocket.c:4806 +#: ../gio/gsocket.c:5412 #, c-format msgid "Unable to read socket credentials: %s" msgstr "" -#: ../gio/gsocket.c:4815 +#: ../gio/gsocket.c:5421 msgid "g_socket_get_credentials not implemented for this OS" msgstr "" @@ -2651,11 +2675,11 @@ msgstr "" #: ../gio/gsocketclient.c:192 msgid "Could not connect: " -msgstr "" +msgstr "Байланысу мүмкін емес: " #: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1599 msgid "Unknown error on connect" -msgstr "" +msgstr "Байланысты орнату кезіндегі белгісіз қате" #: ../gio/gsocketclient.c:1081 ../gio/gsocketclient.c:1535 msgid "Proxying over a non-TCP connection is not supported." @@ -2666,11 +2690,11 @@ msgstr "" msgid "Proxy protocol '%s' is not supported." msgstr "" -#: ../gio/gsocketlistener.c:188 +#: ../gio/gsocketlistener.c:218 msgid "Listener is already closed" msgstr "" -#: ../gio/gsocketlistener.c:234 +#: ../gio/gsocketlistener.c:264 msgid "Added socket is closed" msgstr "" @@ -2834,7 +2858,6 @@ msgstr "" msgid "Expecting 1 control message, got %d" msgid_plural "Expecting 1 control message, got %d" msgstr[0] "" -msgstr[1] "" #: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:573 msgid "Unexpected type of ancillary data" @@ -2845,7 +2868,6 @@ msgstr "" msgid "Expecting one fd, but got %d\n" msgid_plural "Expecting one fd, but got %d\n" msgstr[0] "" -msgstr[1] "" #: ../gio/gunixconnection.c:219 msgid "Received invalid fd" @@ -2880,15 +2902,14 @@ msgstr "" msgid "Error while disabling SO_PASSCRED: %s" msgstr "" -#: ../gio/gunixinputstream.c:370 ../gio/gunixinputstream.c:391 +#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390 #, c-format -#| msgid "Error reading from file: %s" msgid "Error reading from file descriptor: %s" msgstr "" -#: ../gio/gunixinputstream.c:424 ../gio/gunixoutputstream.c:410 +#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409 +#: ../gio/gwin32inputstream.c:217 ../gio/gwin32outputstream.c:204 #, c-format -#| msgid "Error closing file: %s" msgid "Error closing file descriptor: %s" msgstr "" @@ -2896,13 +2917,12 @@ msgstr "" msgid "Filesystem root" msgstr "Файлдық жүйе түбірі" -#: ../gio/gunixoutputstream.c:356 ../gio/gunixoutputstream.c:377 +#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376 #, c-format -#| msgid "Error writing to file: %s" msgid "Error writing to file descriptor: %s" msgstr "" -#: ../gio/gunixsocketaddress.c:232 +#: ../gio/gunixsocketaddress.c:239 msgid "Abstract UNIX domain socket addresses not supported on this system" msgstr "" @@ -2917,34 +2937,17 @@ msgstr "" msgid "volume doesn't implement eject or eject_with_operation" msgstr "" -#: ../gio/gwin32appinfo.c:274 -msgid "Can't find application" -msgstr "Қолданбаны табу мүмкін емес" - -#: ../gio/gwin32appinfo.c:303 -#, c-format -msgid "Error launching application: %s" -msgstr "Қолданбаны жөнелту қатесі: %s" - -#: ../gio/gwin32appinfo.c:378 -msgid "association changes not supported on win32" -msgstr "" - -#: ../gio/gwin32appinfo.c:390 -msgid "Association creation not supported on win32" -msgstr "" - -#: ../gio/gwin32inputstream.c:344 +#: ../gio/gwin32inputstream.c:185 #, c-format msgid "Error reading from handle: %s" msgstr "" -#: ../gio/gwin32inputstream.c:388 ../gio/gwin32outputstream.c:375 +#: ../gio/gwin32inputstream.c:232 ../gio/gwin32outputstream.c:219 #, c-format msgid "Error closing handle: %s" msgstr "" -#: ../gio/gwin32outputstream.c:331 +#: ../gio/gwin32outputstream.c:172 #, c-format msgid "Error writing to handle: %s" msgstr "" @@ -3061,8 +3064,8 @@ msgstr "" msgid "Failed to expand exec line '%s' with URI '%s'" msgstr "" -#: ../glib/gconvert.c:477 ../glib/gutf8.c:833 ../glib/gutf8.c:1044 -#: ../glib/gutf8.c:1181 ../glib/gutf8.c:1285 +#: ../glib/gconvert.c:477 ../glib/gutf8.c:849 ../glib/gutf8.c:1061 +#: ../glib/gutf8.c:1198 ../glib/gutf8.c:1302 msgid "Partial character sequence at end of input" msgstr "" @@ -3071,39 +3074,39 @@ msgstr "" msgid "Cannot convert fallback '%s' to codeset '%s'" msgstr "" -#: ../glib/gconvert.c:1566 +#: ../glib/gconvert.c:1567 #, c-format msgid "The URI '%s' is not an absolute URI using the \"file\" scheme" msgstr "" -#: ../glib/gconvert.c:1576 +#: ../glib/gconvert.c:1577 #, c-format msgid "The local file URI '%s' may not include a '#'" msgstr "" -#: ../glib/gconvert.c:1593 +#: ../glib/gconvert.c:1594 #, c-format msgid "The URI '%s' is invalid" msgstr "URI '%s' қате" -#: ../glib/gconvert.c:1605 +#: ../glib/gconvert.c:1606 #, c-format msgid "The hostname of the URI '%s' is invalid" msgstr "" -#: ../glib/gconvert.c:1621 +#: ../glib/gconvert.c:1622 #, c-format msgid "The URI '%s' contains invalidly escaped characters" msgstr "" -#: ../glib/gconvert.c:1716 +#: ../glib/gconvert.c:1717 #, c-format msgid "The pathname '%s' is not an absolute path" msgstr "" -#: ../glib/gconvert.c:1726 +#: ../glib/gconvert.c:1727 msgid "Invalid hostname" -msgstr "" +msgstr "Хост аты қате" #. Translators: 'before midday' indicator #: ../glib/gdatetime.c:201 @@ -3334,14 +3337,13 @@ msgstr "Жк" #: ../glib/gdir.c:155 #, c-format msgid "Error opening directory '%s': %s" -msgstr "" +msgstr "'%s' бумасын ашу қатесі: %s" #: ../glib/gfileutils.c:700 ../glib/gfileutils.c:792 #, c-format msgid "Could not allocate %lu byte to read file \"%s\"" msgid_plural "Could not allocate %lu bytes to read file \"%s\"" msgstr[0] "" -msgstr[1] "" #: ../glib/gfileutils.c:717 #, c-format @@ -3385,7 +3387,6 @@ msgstr "'%s' файлын жасау сәтсіз: %s" #: ../glib/gfileutils.c:1068 #, c-format -#| msgid "Failed to open file '%s': open() failed: %s" msgid "Failed to write file '%s': write() failed: %s" msgstr "" @@ -3418,25 +3419,25 @@ msgstr "" msgid "Symbolic links not supported" msgstr "Символдық сілтемелерге қолдау жоқ" -#: ../glib/giochannel.c:1389 +#: ../glib/giochannel.c:1388 #, c-format msgid "Could not open converter from '%s' to '%s': %s" msgstr "" -#: ../glib/giochannel.c:1734 +#: ../glib/giochannel.c:1733 msgid "Can't do a raw read in g_io_channel_read_line_string" msgstr "" -#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039 -#: ../glib/giochannel.c:2126 +#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038 +#: ../glib/giochannel.c:2125 msgid "Leftover unconverted data in read buffer" msgstr "" -#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939 +#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938 msgid "Channel terminates in a partial character" msgstr "" -#: ../glib/giochannel.c:1925 +#: ../glib/giochannel.c:1924 msgid "Can't do a raw read in g_io_channel_read_to_end" msgstr "" @@ -3474,8 +3475,8 @@ msgid "Key file contains unsupported encoding '%s'" msgstr "" #: ../glib/gkeyfile.c:1548 ../glib/gkeyfile.c:1721 ../glib/gkeyfile.c:3099 -#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3288 ../glib/gkeyfile.c:3418 -#: ../glib/gkeyfile.c:3560 ../glib/gkeyfile.c:3789 ../glib/gkeyfile.c:3856 +#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3292 ../glib/gkeyfile.c:3422 +#: ../glib/gkeyfile.c:3566 ../glib/gkeyfile.c:3795 ../glib/gkeyfile.c:3862 #, c-format msgid "Key file does not have group '%s'" msgstr "" @@ -3508,44 +3509,42 @@ msgstr "" msgid "Key '%s' in group '%s' has value '%s' where %s was expected" msgstr "" -#: ../glib/gkeyfile.c:4096 +#: ../glib/gkeyfile.c:4102 msgid "Key file contains escape character at end of line" msgstr "" -#: ../glib/gkeyfile.c:4118 +#: ../glib/gkeyfile.c:4124 #, c-format msgid "Key file contains invalid escape sequence '%s'" msgstr "" -#: ../glib/gkeyfile.c:4260 +#: ../glib/gkeyfile.c:4266 #, c-format msgid "Value '%s' cannot be interpreted as a number." msgstr "" -#: ../glib/gkeyfile.c:4274 +#: ../glib/gkeyfile.c:4280 #, c-format msgid "Integer value '%s' out of range" msgstr "" -#: ../glib/gkeyfile.c:4307 +#: ../glib/gkeyfile.c:4313 #, c-format msgid "Value '%s' cannot be interpreted as a float number." msgstr "" -#: ../glib/gkeyfile.c:4331 +#: ../glib/gkeyfile.c:4350 #, c-format msgid "Value '%s' cannot be interpreted as a boolean." msgstr "" #: ../glib/gmappedfile.c:129 #, c-format -#| msgid "Failed to open file '%s': open() failed: %s" msgid "Failed to get attributes of file '%s%s%s%s': fstat() failed: %s" msgstr "" #: ../glib/gmappedfile.c:195 #, c-format -#| msgid "Failed to open file '%s': open() failed: %s" msgid "Failed to map %s%s%s%s: mmap() failed: %s" msgstr "" @@ -3566,81 +3565,79 @@ msgstr "" #: ../glib/gmarkup.c:473 #, c-format -#| msgid "'%s' is not a valid name " msgid "'%s' is not a valid name" -msgstr "" +msgstr "'%s' дұрыс атау емес" #: ../glib/gmarkup.c:489 #, c-format -#| msgid "'%s' is not a valid name: '%c' " msgid "'%s' is not a valid name: '%c'" -msgstr "" +msgstr "'%s' дұрыс атау емес: '%c'" #: ../glib/gmarkup.c:599 #, c-format msgid "Error on line %d: %s" msgstr "" -#: ../glib/gmarkup.c:683 +#: ../glib/gmarkup.c:676 #, c-format msgid "" "Failed to parse '%-.*s', which should have been a digit inside a character " "reference (ê for example) - perhaps the digit is too large" msgstr "" -#: ../glib/gmarkup.c:695 +#: ../glib/gmarkup.c:688 msgid "" "Character reference did not end with a semicolon; most likely you used an " "ampersand character without intending to start an entity - escape ampersand " "as &" msgstr "" -#: ../glib/gmarkup.c:721 +#: ../glib/gmarkup.c:714 #, c-format msgid "Character reference '%-.*s' does not encode a permitted character" msgstr "" -#: ../glib/gmarkup.c:759 +#: ../glib/gmarkup.c:752 msgid "" "Empty entity '&;' seen; valid entities are: & " < > '" msgstr "" -#: ../glib/gmarkup.c:767 +#: ../glib/gmarkup.c:760 #, c-format msgid "Entity name '%-.*s' is not known" msgstr "" -#: ../glib/gmarkup.c:772 +#: ../glib/gmarkup.c:765 msgid "" "Entity did not end with a semicolon; most likely you used an ampersand " "character without intending to start an entity - escape ampersand as &" msgstr "" -#: ../glib/gmarkup.c:1178 +#: ../glib/gmarkup.c:1171 msgid "Document must begin with an element (e.g. )" msgstr "" -#: ../glib/gmarkup.c:1218 +#: ../glib/gmarkup.c:1211 #, c-format msgid "" "'%s' is not a valid character following a '<' character; it may not begin an " "element name" msgstr "" -#: ../glib/gmarkup.c:1260 +#: ../glib/gmarkup.c:1253 #, c-format msgid "" "Odd character '%s', expected a '>' character to end the empty-element tag " "'%s'" msgstr "" -#: ../glib/gmarkup.c:1341 +#: ../glib/gmarkup.c:1334 #, c-format msgid "" "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" msgstr "" -#: ../glib/gmarkup.c:1382 +#: ../glib/gmarkup.c:1375 #, c-format msgid "" "Odd character '%s', expected a '>' or '/' character to end the start tag of " @@ -3648,145 +3645,149 @@ msgid "" "character in an attribute name" msgstr "" -#: ../glib/gmarkup.c:1426 +#: ../glib/gmarkup.c:1419 #, c-format msgid "" "Odd character '%s', expected an open quote mark after the equals sign when " "giving value for attribute '%s' of element '%s'" msgstr "" -#: ../glib/gmarkup.c:1559 +#: ../glib/gmarkup.c:1552 #, c-format msgid "" "'%s' is not a valid character following the characters ''" msgstr "" -#: ../glib/gmarkup.c:1606 +#: ../glib/gmarkup.c:1599 #, c-format msgid "Element '%s' was closed, no element is currently open" msgstr "" -#: ../glib/gmarkup.c:1615 +#: ../glib/gmarkup.c:1608 #, c-format msgid "Element '%s' was closed, but the currently open element is '%s'" msgstr "" -#: ../glib/gmarkup.c:1768 +#: ../glib/gmarkup.c:1761 msgid "Document was empty or contained only whitespace" msgstr "" -#: ../glib/gmarkup.c:1782 +#: ../glib/gmarkup.c:1775 msgid "Document ended unexpectedly just after an open angle bracket '<'" msgstr "" -#: ../glib/gmarkup.c:1790 ../glib/gmarkup.c:1835 +#: ../glib/gmarkup.c:1783 ../glib/gmarkup.c:1828 #, c-format msgid "" "Document ended unexpectedly with elements still open - '%s' was the last " "element opened" msgstr "" -#: ../glib/gmarkup.c:1798 +#: ../glib/gmarkup.c:1791 #, c-format msgid "" "Document ended unexpectedly, expected to see a close angle bracket ending " "the tag <%s/>" msgstr "" -#: ../glib/gmarkup.c:1804 +#: ../glib/gmarkup.c:1797 msgid "Document ended unexpectedly inside an element name" msgstr "" -#: ../glib/gmarkup.c:1810 +#: ../glib/gmarkup.c:1803 msgid "Document ended unexpectedly inside an attribute name" msgstr "" -#: ../glib/gmarkup.c:1815 +#: ../glib/gmarkup.c:1808 msgid "Document ended unexpectedly inside an element-opening tag." msgstr "" -#: ../glib/gmarkup.c:1821 +#: ../glib/gmarkup.c:1814 msgid "" "Document ended unexpectedly after the equals sign following an attribute " "name; no attribute value" msgstr "" -#: ../glib/gmarkup.c:1828 +#: ../glib/gmarkup.c:1821 msgid "Document ended unexpectedly while inside an attribute value" msgstr "" -#: ../glib/gmarkup.c:1844 +#: ../glib/gmarkup.c:1837 #, c-format msgid "Document ended unexpectedly inside the close tag for element '%s'" msgstr "" -#: ../glib/gmarkup.c:1850 +#: ../glib/gmarkup.c:1843 msgid "Document ended unexpectedly inside a comment or processing instruction" msgstr "" -#: ../glib/goption.c:858 +#: ../glib/goption.c:857 msgid "Usage:" msgstr "Қолданылуы:" -#: ../glib/goption.c:858 +#: ../glib/goption.c:861 msgid "[OPTION...]" msgstr "[ОПЦИЯ...]" -#: ../glib/goption.c:974 +#: ../glib/goption.c:977 msgid "Help Options:" -msgstr "" +msgstr "Көмек опциялары:" -#: ../glib/goption.c:975 +#: ../glib/goption.c:978 msgid "Show help options" msgstr "Көмек опцияларын көрсету" -#: ../glib/goption.c:981 +#: ../glib/goption.c:984 msgid "Show all help options" -msgstr "" +msgstr "Барлық көмек опцияларын көрсету" -#: ../glib/goption.c:1043 +#: ../glib/goption.c:1047 msgid "Application Options:" -msgstr "" +msgstr "Қолданба опциялары:" + +#: ../glib/goption.c:1049 +msgid "Options:" +msgstr "Опциялар:" -#: ../glib/goption.c:1107 ../glib/goption.c:1177 +#: ../glib/goption.c:1113 ../glib/goption.c:1183 #, c-format msgid "Cannot parse integer value '%s' for %s" msgstr "" -#: ../glib/goption.c:1117 ../glib/goption.c:1185 +#: ../glib/goption.c:1123 ../glib/goption.c:1191 #, c-format msgid "Integer value '%s' for %s out of range" msgstr "" -#: ../glib/goption.c:1142 +#: ../glib/goption.c:1148 #, c-format msgid "Cannot parse double value '%s' for %s" msgstr "" -#: ../glib/goption.c:1150 +#: ../glib/goption.c:1156 #, c-format msgid "Double value '%s' for %s out of range" msgstr "" -#: ../glib/goption.c:1436 ../glib/goption.c:1515 +#: ../glib/goption.c:1442 ../glib/goption.c:1521 #, c-format msgid "Error parsing option %s" msgstr "" -#: ../glib/goption.c:1546 ../glib/goption.c:1659 +#: ../glib/goption.c:1552 ../glib/goption.c:1665 #, c-format msgid "Missing argument for %s" msgstr "" -#: ../glib/goption.c:2120 +#: ../glib/goption.c:2126 #, c-format msgid "Unknown option %s" msgstr "Белгісіз опция %s" @@ -3825,7 +3826,7 @@ msgstr "" #: ../glib/gregex.c:302 msgid "bad offset" -msgstr "" +msgstr "қате шегініс" #: ../glib/gregex.c:304 msgid "short utf8" @@ -4034,11 +4035,11 @@ msgstr "" #: ../glib/gregex.c:487 msgid "(*VERB) not recognized" -msgstr "" +msgstr "(*VERB) танылмады" #: ../glib/gregex.c:490 msgid "number is too big" -msgstr "" +msgstr "сан тым үлкен" #: ../glib/gregex.c:493 msgid "missing subpattern name after (?&" @@ -4046,7 +4047,7 @@ msgstr "" #: ../glib/gregex.c:496 msgid "digit expected after (?+" -msgstr "" +msgstr "(?+ кейін сан күтілген" #: ../glib/gregex.c:499 msgid "] is an invalid data character in JavaScript compatibility mode" @@ -4084,70 +4085,70 @@ msgstr "" msgid "character value in \\u.... sequence is too large" msgstr "" -#: ../glib/gregex.c:746 ../glib/gregex.c:1915 +#: ../glib/gregex.c:746 ../glib/gregex.c:1973 #, c-format msgid "Error while matching regular expression %s: %s" msgstr "" -#: ../glib/gregex.c:1312 +#: ../glib/gregex.c:1317 msgid "PCRE library is compiled without UTF8 support" msgstr "" -#: ../glib/gregex.c:1316 +#: ../glib/gregex.c:1321 msgid "PCRE library is compiled without UTF8 properties support" msgstr "" -#: ../glib/gregex.c:1324 +#: ../glib/gregex.c:1329 msgid "PCRE library is compiled with incompatible options" msgstr "" -#: ../glib/gregex.c:1383 +#: ../glib/gregex.c:1358 #, c-format -msgid "Error while compiling regular expression %s at char %d: %s" +msgid "Error while optimizing regular expression %s: %s" msgstr "" -#: ../glib/gregex.c:1425 +#: ../glib/gregex.c:1438 #, c-format -msgid "Error while optimizing regular expression %s: %s" +msgid "Error while compiling regular expression %s at char %d: %s" msgstr "" -#: ../glib/gregex.c:2347 +#: ../glib/gregex.c:2409 msgid "hexadecimal digit or '}' expected" msgstr "" -#: ../glib/gregex.c:2363 +#: ../glib/gregex.c:2425 msgid "hexadecimal digit expected" msgstr "" -#: ../glib/gregex.c:2403 +#: ../glib/gregex.c:2465 msgid "missing '<' in symbolic reference" msgstr "" -#: ../glib/gregex.c:2412 +#: ../glib/gregex.c:2474 msgid "unfinished symbolic reference" msgstr "" -#: ../glib/gregex.c:2419 +#: ../glib/gregex.c:2481 msgid "zero-length symbolic reference" msgstr "" -#: ../glib/gregex.c:2430 +#: ../glib/gregex.c:2492 msgid "digit expected" -msgstr "" +msgstr "сан күтілген" -#: ../glib/gregex.c:2448 +#: ../glib/gregex.c:2510 msgid "illegal symbolic reference" msgstr "" -#: ../glib/gregex.c:2510 +#: ../glib/gregex.c:2572 msgid "stray final '\\'" msgstr "" -#: ../glib/gregex.c:2514 +#: ../glib/gregex.c:2576 msgid "unknown escape sequence" msgstr "" -#: ../glib/gregex.c:2524 +#: ../glib/gregex.c:2586 #, c-format msgid "Error while parsing replacement text \"%s\" at char %lu: %s" msgstr "" @@ -4189,62 +4190,62 @@ msgstr "" msgid "Unexpected error in waitpid() (%s)" msgstr "" -#: ../glib/gspawn.c:849 ../glib/gspawn-win32.c:1233 +#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233 #, c-format msgid "Child process exited with code %ld" msgstr "" -#: ../glib/gspawn.c:857 +#: ../glib/gspawn.c:852 #, c-format msgid "Child process killed by signal %ld" msgstr "" -#: ../glib/gspawn.c:864 +#: ../glib/gspawn.c:859 #, c-format msgid "Child process stopped by signal %ld" msgstr "" -#: ../glib/gspawn.c:871 +#: ../glib/gspawn.c:866 #, c-format msgid "Child process exited abnormally" msgstr "" -#: ../glib/gspawn.c:1276 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 +#: ../glib/gspawn.c:1271 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 #, c-format msgid "Failed to read from child pipe (%s)" msgstr "" -#: ../glib/gspawn.c:1346 +#: ../glib/gspawn.c:1341 #, c-format msgid "Failed to fork (%s)" msgstr "" -#: ../glib/gspawn.c:1495 ../glib/gspawn-win32.c:370 +#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370 #, c-format msgid "Failed to change to directory '%s' (%s)" msgstr "" -#: ../glib/gspawn.c:1505 +#: ../glib/gspawn.c:1500 #, c-format msgid "Failed to execute child process \"%s\" (%s)" msgstr "" -#: ../glib/gspawn.c:1515 +#: ../glib/gspawn.c:1510 #, c-format msgid "Failed to redirect output or input of child process (%s)" msgstr "" -#: ../glib/gspawn.c:1524 +#: ../glib/gspawn.c:1519 #, c-format msgid "Failed to fork child process (%s)" msgstr "" -#: ../glib/gspawn.c:1532 +#: ../glib/gspawn.c:1527 #, c-format msgid "Unknown error executing child process \"%s\"" msgstr "" -#: ../glib/gspawn.c:1556 +#: ../glib/gspawn.c:1551 #, c-format msgid "Failed to read enough data from child pid pipe (%s)" msgstr "" @@ -4283,7 +4284,7 @@ msgstr "" #: ../glib/gspawn-win32.c:718 ../glib/gspawn-win32.c:1278 #, c-format msgid "Invalid working directory: %s" -msgstr "" +msgstr "Жұмыс бумасы қате: %s" #: ../glib/gspawn-win32.c:783 #, c-format @@ -4296,91 +4297,91 @@ msgid "" "process" msgstr "" -#: ../glib/gutf8.c:780 +#: ../glib/gutf8.c:795 msgid "Failed to allocate memory" -msgstr "" +msgstr "Жадыны бөлу сәтсіз" -#: ../glib/gutf8.c:912 +#: ../glib/gutf8.c:928 msgid "Character out of range for UTF-8" msgstr "" -#: ../glib/gutf8.c:1012 ../glib/gutf8.c:1021 ../glib/gutf8.c:1151 -#: ../glib/gutf8.c:1160 ../glib/gutf8.c:1299 ../glib/gutf8.c:1396 +#: ../glib/gutf8.c:1029 ../glib/gutf8.c:1038 ../glib/gutf8.c:1168 +#: ../glib/gutf8.c:1177 ../glib/gutf8.c:1316 ../glib/gutf8.c:1413 msgid "Invalid sequence in conversion input" msgstr "" -#: ../glib/gutf8.c:1310 ../glib/gutf8.c:1407 +#: ../glib/gutf8.c:1327 ../glib/gutf8.c:1424 msgid "Character out of range for UTF-16" msgstr "" -#: ../glib/gutils.c:2116 ../glib/gutils.c:2143 ../glib/gutils.c:2249 +#: ../glib/gutils.c:2117 ../glib/gutils.c:2144 ../glib/gutils.c:2250 #, c-format msgid "%u byte" msgid_plural "%u bytes" msgstr[0] "%u байт" -#: ../glib/gutils.c:2122 +#: ../glib/gutils.c:2123 #, c-format msgid "%.1f KiB" msgstr "%.1f КиБ" -#: ../glib/gutils.c:2124 +#: ../glib/gutils.c:2125 #, c-format msgid "%.1f MiB" msgstr "%.1f МиБ" -#: ../glib/gutils.c:2127 +#: ../glib/gutils.c:2128 #, c-format msgid "%.1f GiB" msgstr "%.1f ГиБ" -#: ../glib/gutils.c:2130 +#: ../glib/gutils.c:2131 #, c-format msgid "%.1f TiB" msgstr "%.1f ТиБ" -#: ../glib/gutils.c:2133 +#: ../glib/gutils.c:2134 #, c-format msgid "%.1f PiB" msgstr "%.1f ПиБ" -#: ../glib/gutils.c:2136 +#: ../glib/gutils.c:2137 #, c-format msgid "%.1f EiB" msgstr "%.1f ЭиБ" -#: ../glib/gutils.c:2149 +#: ../glib/gutils.c:2150 #, c-format msgid "%.1f kB" msgstr "%.1f КБ" -#: ../glib/gutils.c:2152 ../glib/gutils.c:2267 +#: ../glib/gutils.c:2153 ../glib/gutils.c:2268 #, c-format msgid "%.1f MB" msgstr "%.1f МБ" -#: ../glib/gutils.c:2155 ../glib/gutils.c:2272 +#: ../glib/gutils.c:2156 ../glib/gutils.c:2273 #, c-format msgid "%.1f GB" msgstr "%.1f ГБ" -#: ../glib/gutils.c:2157 ../glib/gutils.c:2277 +#: ../glib/gutils.c:2158 ../glib/gutils.c:2278 #, c-format msgid "%.1f TB" msgstr "%.1f ТБ" -#: ../glib/gutils.c:2160 ../glib/gutils.c:2282 +#: ../glib/gutils.c:2161 ../glib/gutils.c:2283 #, c-format msgid "%.1f PB" msgstr "%.1f ПБ" -#: ../glib/gutils.c:2163 ../glib/gutils.c:2287 +#: ../glib/gutils.c:2164 ../glib/gutils.c:2288 #, c-format msgid "%.1f EB" msgstr "%.1f ЭБ" #. Translators: the %s in "%s bytes" will always be replaced by a number. -#: ../glib/gutils.c:2200 +#: ../glib/gutils.c:2201 #, c-format msgid "%s byte" msgid_plural "%s bytes" @@ -4391,11 +4392,17 @@ msgstr[0] "%s байт" #. * compatibility. Users will not see this string unless a program is using this deprecated function. #. * Please translate as literally as possible. #. -#: ../glib/gutils.c:2262 +#: ../glib/gutils.c:2263 #, c-format msgid "%.1f KB" msgstr "%.1f КБ" +#~ msgid "Can't find application" +#~ msgstr "Қолданбаны табу мүмкін емес" + +#~ msgid "Error launching application: %s" +#~ msgstr "Қолданбаны жөнелту қатесі: %s" + #~ msgid "File is empty" #~ msgstr "Файл бос" diff --git a/po/kn.gmo b/po/kn.gmo new file mode 100644 index 0000000000000000000000000000000000000000..ee34d821951ebc9a42600f5d1c027c8a7e8c9285 GIT binary patch literal 162103 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

pPm8WfNCioysSU}XKg5_C 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, 2004. # Andre Klapper , 2007, 2008. # Philipp Kerling , 2008. -# Mario Blättermann , 2010-2013. -# Wolfgang Stöggl , 2011. +# Mario Blättermann , 2010-2013, 2015-2016. +# Wolfgang Stöggl , 2011, 2015. # Christian Kirbach , 2009, 2010, 2012. # Tobias Endrigkeit , 2012. +# Bernd Homuth , 2015. # msgid "" msgstr "" "Project-Id-Version: glib master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=glib&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2015-03-10 18:49+0000\n" -"PO-Revision-Date: 2014-08-15 11:50+0100\n" -"Last-Translator: Christian Kirbach \n" +"POT-Creation-Date: 2016-03-10 07:39+0000\n" +"PO-Revision-Date: 2016-03-10 19:46+0100\n" +"Last-Translator: Mario Blättermann \n" "Language-Team: Deutsch \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.8.7.1\n" -#: ../gio/gapplication.c:531 -msgid "Enter GApplication service mode (use from D-Bus service files)" -msgstr "GApplication Dienstmodus starten (aus D-Bus Dienstdateien verwenden)" - -#: ../gio/gapplication.c:536 +#: ../gio/gapplication.c:493 msgid "GApplication options" msgstr "Optionen für GApplication" -#: ../gio/gapplication.c:536 +#: ../gio/gapplication.c:493 msgid "Show GApplication options" msgstr "Optionen für GApplication anzeigen" +#: ../gio/gapplication.c:538 +msgid "Enter GApplication service mode (use from D-Bus service files)" +msgstr "GApplication Dienstmodus starten (aus D-Bus Dienstdateien verwenden)" + +#: ../gio/gapplication.c:550 +msgid "Override the application's ID" +msgstr "Anwendungskennung überschreiben" + #: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46 -#: ../gio/gresource-tool.c:485 ../gio/gsettings-tool.c:521 +#: ../gio/gresource-tool.c:488 ../gio/gsettings-tool.c:512 msgid "Print help" msgstr "Hilfe ausgeben" -#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:486 -#: ../gio/gresource-tool.c:554 +#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:489 +#: ../gio/gresource-tool.c:557 msgid "[COMMAND]" msgstr "[BEFEHL]" @@ -53,7 +58,7 @@ msgstr "[BEFEHL]" msgid "Print version" msgstr "Version ausgeben" -#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:527 +#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:518 msgid "Print version information and exit" msgstr "Versionsinformationen anzeigen und beenden" @@ -116,15 +121,15 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)" msgstr "Anwendungsbezeichnung im D-Bus-Format (z.B: org.example.viewer)" #: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589 -#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:492 -#: ../gio/gresource-tool.c:558 +#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:495 +#: ../gio/gresource-tool.c:561 msgid "FILE" msgstr "DATEI" #: ../gio/gapplication-tool.c:72 -msgid "Optional relative or relative filenames, or URIs to open" +msgid "Optional relative or absolute filenames, or URIs to open" msgstr "" -"Optional realtive oder relative Dateinamen, oder Adressen (URIs) zum Öffnen" +"Optional relative oder absolute Dateinamen oder Adressen (URIs) zum Öffnen" #: ../gio/gapplication-tool.c:73 msgid "ACTION" @@ -142,8 +147,8 @@ msgstr "PARAMETER" msgid "Optional parameter to the action invocation, in GVariant format" msgstr "Optionaler Parameter für den Aufruf der Aktion, im GVariant-Format" -#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:523 -#: ../gio/gsettings-tool.c:607 +#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526 +#: ../gio/gsettings-tool.c:598 #, c-format msgid "" "Unknown command %s\n" @@ -156,8 +161,8 @@ msgstr "" msgid "Usage:\n" msgstr "Aufruf:\n" -#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:548 -#: ../gio/gsettings-tool.c:641 +#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551 +#: ../gio/gsettings-tool.c:632 msgid "Arguments:\n" msgstr "Argumente:\n" @@ -258,9 +263,9 @@ msgstr "" "\n" #: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498 -#: ../gio/ginputstream.c:176 ../gio/ginputstream.c:376 -#: ../gio/ginputstream.c:614 ../gio/ginputstream.c:1013 -#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:830 +#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379 +#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1016 +#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834 #: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206 #, c-format msgid "Too large count value passed to %s" @@ -275,8 +280,8 @@ msgstr "Suchen im Basis-Datenstrom nicht unterstützt" msgid "Cannot truncate GBufferedInputStream" msgstr "GBufferedInputStream konnte nicht abgeschnitten werden" -#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1202 -#: ../gio/giostream.c:278 ../gio/goutputstream.c:1654 +#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1205 +#: ../gio/giostream.c:300 ../gio/goutputstream.c:1658 msgid "Stream is already closed" msgstr "Datenstrom ist bereits geschlossen" @@ -284,10 +289,9 @@ msgstr "Datenstrom ist bereits geschlossen" msgid "Truncate not supported on base stream" msgstr "Abschneiden wird vom Basis-Datenstrom nicht unterstützt" -#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1896 -#: ../gio/gdbusconnection.c:1989 ../gio/gdbusprivate.c:1421 -#: ../gio/glocalfile.c:2181 ../gio/gsimpleasyncresult.c:830 -#: ../gio/gsimpleasyncresult.c:856 +#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1847 +#: ../gio/gdbusprivate.c:1375 ../gio/glocalfile.c:2220 +#: ../gio/gsimpleasyncresult.c:870 ../gio/gsimpleasyncresult.c:896 #, c-format msgid "Operation was cancelled" msgstr "Vorgang wurde abgebrochen" @@ -305,24 +309,24 @@ msgid "Not enough space in destination" msgstr "Nicht genug Platz im Ziel" #: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848 -#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 -#: ../glib/gconvert.c:845 ../glib/giochannel.c:1557 ../glib/giochannel.c:1599 -#: ../glib/giochannel.c:2443 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 +#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 ../glib/gconvert.c:845 +#: ../glib/giochannel.c:1556 ../glib/giochannel.c:1598 +#: ../glib/giochannel.c:2442 ../glib/gutf8.c:853 ../glib/gutf8.c:1306 msgid "Invalid byte sequence in conversion input" msgstr "Ungültige Bytefolge in Konvertierungseingabe" -#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 -#: ../glib/gconvert.c:770 ../glib/giochannel.c:1564 ../glib/giochannel.c:2455 +#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 ../glib/gconvert.c:770 +#: ../glib/giochannel.c:1563 ../glib/giochannel.c:2454 #, c-format msgid "Error during conversion: %s" msgstr "Fehler bei der Umwandlung: %s" -#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:990 +#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1078 msgid "Cancellable initialization not supported" msgstr "Abbrechbare Initialisierung wird nicht unterstützt" #: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321 -#: ../glib/giochannel.c:1385 +#: ../glib/giochannel.c:1384 #, c-format msgid "Conversion from character set '%s' to '%s' is not supported" msgstr "Umwandlung von Zeichensatz »%s« in »%s« wird nicht unterstützt" @@ -341,7 +345,7 @@ msgstr "%s-Typ" msgid "Unknown type" msgstr "Unbekannter Typ" -#: ../gio/gcontenttype-win32.c:161 +#: ../gio/gcontenttype-win32.c:162 #, c-format msgid "%s filetype" msgstr "%s-Dateityp" @@ -367,13 +371,13 @@ msgstr "" msgid "Unexpected early end-of-stream" msgstr "Unerwartet frühes Datenstromende" -#: ../gio/gdbusaddress.c:148 ../gio/gdbusaddress.c:236 -#: ../gio/gdbusaddress.c:317 +#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241 +#: ../gio/gdbusaddress.c:322 #, c-format msgid "Unsupported key '%s' in address entry '%s'" msgstr "Nicht unterstützter Schlüssel »%s« im Adresseintrag »%s«" -#: ../gio/gdbusaddress.c:175 +#: ../gio/gdbusaddress.c:180 #, c-format msgid "" "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" @@ -381,27 +385,27 @@ msgstr "" "Adresse »%s« ist ungültig (benötigt genau einen der Schlüssel path, tmpdir " "oder abstract)" -#: ../gio/gdbusaddress.c:188 +#: ../gio/gdbusaddress.c:193 #, c-format msgid "Meaningless key/value pair combination in address entry '%s'" msgstr "Bedeutungsloses Schlüssel-Wert-Paar im Adresseintrag »%s«" -#: ../gio/gdbusaddress.c:251 ../gio/gdbusaddress.c:332 +#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 #, c-format msgid "Error in address '%s' - the port attribute is malformed" msgstr "Fehler in Adresse »%s« - Das Port-Attribut ist nicht korrekt" -#: ../gio/gdbusaddress.c:262 ../gio/gdbusaddress.c:343 +#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348 #, c-format msgid "Error in address '%s' - the family attribute is malformed" msgstr "Fehler in Adresse »%s« - Das Familien-Attribut ist nicht korrekt" -#: ../gio/gdbusaddress.c:452 +#: ../gio/gdbusaddress.c:457 #, c-format msgid "Address element '%s' does not contain a colon (:)" msgstr "Adresselement »%s« enthält keinen Doppelpunkt" -#: ../gio/gdbusaddress.c:473 +#: ../gio/gdbusaddress.c:478 #, c-format msgid "" "Key/Value pair %d, '%s', in address element '%s' does not contain an equal " @@ -410,7 +414,7 @@ msgstr "" "Schlüssel-Wert-Paar %d, »%s«, in Adresselement »%s« enthält kein " "Gleichheitszeichen" -#: ../gio/gdbusaddress.c:487 +#: ../gio/gdbusaddress.c:492 #, c-format msgid "" "Error unescaping key or value in Key/Value pair %d, '%s', in address element " @@ -419,7 +423,7 @@ msgstr "" "Fehler beim Entfernen von Escape-Zeichen im Schlüssel-Wert-Paar %d, »%s« im " "Adresselement »%s«" -#: ../gio/gdbusaddress.c:565 +#: ../gio/gdbusaddress.c:570 #, c-format msgid "" "Error in address '%s' - the unix transport requires exactly one of the keys " @@ -428,94 +432,94 @@ msgstr "" "Fehler in Adresse »%s« - für den Unix-Transport muss genau einer der " "Schlüssel »path« oder »abstract« gesetzt sein" -#: ../gio/gdbusaddress.c:601 +#: ../gio/gdbusaddress.c:606 #, c-format msgid "Error in address '%s' - the host attribute is missing or malformed" msgstr "" "Fehler in Adresse »%s« - Das Host-Attribut fehlt oder ist nicht korrekt" -#: ../gio/gdbusaddress.c:615 +#: ../gio/gdbusaddress.c:620 #, c-format msgid "Error in address '%s' - the port attribute is missing or malformed" msgstr "" "Fehler in Adresse »%s« - Das Port-Attribut fehlt oder ist nicht korrekt" -#: ../gio/gdbusaddress.c:629 +#: ../gio/gdbusaddress.c:634 #, c-format msgid "Error in address '%s' - the noncefile attribute is missing or malformed" msgstr "" "Fehler in Adresse »%s« - Das noncefile-Attribut fehlt oder ist nicht korrekt" -#: ../gio/gdbusaddress.c:650 +#: ../gio/gdbusaddress.c:655 msgid "Error auto-launching: " msgstr "Fehler beim automatischen Starten:" -#: ../gio/gdbusaddress.c:658 +#: ../gio/gdbusaddress.c:663 #, c-format msgid "Unknown or unsupported transport '%s' for address '%s'" msgstr "Unbekannter oder nicht unterstützter Transport »%s« für Adresse »%s«" -#: ../gio/gdbusaddress.c:694 +#: ../gio/gdbusaddress.c:699 #, c-format msgid "Error opening nonce file '%s': %s" msgstr "Fehler beim Öffnen der Nonce-Datei »%s«: %s" -#: ../gio/gdbusaddress.c:712 +#: ../gio/gdbusaddress.c:717 #, c-format msgid "Error reading from nonce file '%s': %s" msgstr "Fehler beim Lesen der Nonce-Datei »%s«: %s" -#: ../gio/gdbusaddress.c:721 +#: ../gio/gdbusaddress.c:726 #, c-format msgid "Error reading from nonce file '%s', expected 16 bytes, got %d" msgstr "" "Fehler beim Lesen der Nonce-Datei »%s«, erwartet wurden 16 Bytes, jedoch %d " "erhalten" -#: ../gio/gdbusaddress.c:739 +#: ../gio/gdbusaddress.c:744 #, c-format msgid "Error writing contents of nonce file '%s' to stream:" msgstr "" "Fehler beim Schreiben des Inhalts der Nonce-Datei »%s« in den Datenstrom:" -#: ../gio/gdbusaddress.c:958 +#: ../gio/gdbusaddress.c:950 msgid "The given address is empty" msgstr "Die angegebene Adresse ist leer" -#: ../gio/gdbusaddress.c:1028 +#: ../gio/gdbusaddress.c:1063 #, c-format msgid "Cannot spawn a message bus when setuid" msgstr "Ein Nachrichtenbus kann nicht mit setuid erzeugt werden" -#: ../gio/gdbusaddress.c:1035 +#: ../gio/gdbusaddress.c:1070 msgid "Cannot spawn a message bus without a machine-id: " msgstr "" "Ein Nachrichtenbus kann nicht ohne eine Rechner-Kennung erzeugt werden:" -#: ../gio/gdbusaddress.c:1077 +#: ../gio/gdbusaddress.c:1112 #, c-format msgid "Error spawning command line '%s': " msgstr "Fehler beim Erzeugen der Befehlszeile »%s«:" -#: ../gio/gdbusaddress.c:1294 +#: ../gio/gdbusaddress.c:1329 #, c-format msgid "(Type any character to close this window)\n" msgstr "" "(Geben Sie ein beliebiges Zeichen ein, um dieses Fenster zu schließen)\n" -#: ../gio/gdbusaddress.c:1425 +#: ../gio/gdbusaddress.c:1481 #, c-format msgid "Session dbus not running, and autolaunch failed" msgstr "Der Sitzungs-dbus läuft nicht und automatisches Starten schlug fehl" -#: ../gio/gdbusaddress.c:1446 +#: ../gio/gdbusaddress.c:1492 #, c-format msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "" "Adresse des Sitzungsbus konnte nicht ermittelt werden (für dieses " "Betriebssystem nicht implementiert)" -#: ../gio/gdbusaddress.c:1546 ../gio/gdbusconnection.c:6931 +#: ../gio/gdbusaddress.c:1627 ../gio/gdbusconnection.c:7128 #, c-format msgid "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " @@ -524,7 +528,7 @@ msgstr "" "Bus-Adresse konnte nicht über die Umgebungsvariable DBUS_STARTER_BUS_TYPE " "ermittelt werden, unbekannter Wert »%s«" -#: ../gio/gdbusaddress.c:1555 ../gio/gdbusconnection.c:6940 +#: ../gio/gdbusaddress.c:1636 ../gio/gdbusconnection.c:7137 msgid "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" @@ -532,7 +536,7 @@ msgstr "" "Bus-Adresse konnte nicht ermittelt werden, da die Umgebungsvariable " "DBUS_STARTER_BUS_TYPE nicht gesetzt ist" -#: ../gio/gdbusaddress.c:1565 +#: ../gio/gdbusaddress.c:1646 #, c-format msgid "Unknown bus type %d" msgstr "Unbekannter Bus-Typ %d" @@ -638,22 +642,22 @@ msgstr "Fehler beim Öffnen des Schlüsselbundes »%s« zum Schreiben:" msgid "(Additionally, releasing the lock for '%s' also failed: %s) " msgstr "(Außerdem schlug das Entsperren von »%s« ebenso fehl: %s)" -#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2455 +#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2373 msgid "The connection is closed" msgstr "Verbindung ist geschlossen" -#: ../gio/gdbusconnection.c:1942 +#: ../gio/gdbusconnection.c:1877 msgid "Timeout was reached" msgstr "Zeitüberschreitung wurde erreicht" -#: ../gio/gdbusconnection.c:2577 +#: ../gio/gdbusconnection.c:2495 msgid "" "Unsupported flags encountered when constructing a client-side connection" msgstr "" "Beim Erstellen einer client-seitigen Verbindung wurden nicht unterstützte " "Flags entdeckt" -#: ../gio/gdbusconnection.c:4157 ../gio/gdbusconnection.c:4504 +#: ../gio/gdbusconnection.c:4105 ../gio/gdbusconnection.c:4452 #, c-format msgid "" "No such interface 'org.freedesktop.DBus.Properties' on object at path %s" @@ -661,68 +665,78 @@ msgstr "" "Keine derartige Schnittstelle »org.freedesktop.DBus.Properties« des Objekts " "im Pfad %s" -#: ../gio/gdbusconnection.c:4299 +#: ../gio/gdbusconnection.c:4247 #, c-format msgid "No such property '%s'" msgstr "Keine derartige Eigenschaft »%s«" -#: ../gio/gdbusconnection.c:4311 +#: ../gio/gdbusconnection.c:4259 #, c-format msgid "Property '%s' is not readable" msgstr "Eigenschaft »%s« ist nicht lesbar" -#: ../gio/gdbusconnection.c:4322 +#: ../gio/gdbusconnection.c:4270 #, c-format msgid "Property '%s' is not writable" msgstr "Eigenschaft »%s« ist nicht schreibbar" -#: ../gio/gdbusconnection.c:4342 +#: ../gio/gdbusconnection.c:4290 #, c-format msgid "Error setting property '%s': Expected type '%s' but got '%s'" msgstr "" "Fehler beim Setzen der Eigenschaft »%s«: Erwarteter Typ war »%s«, aber »%s« " "wurde erhalten" -#: ../gio/gdbusconnection.c:4447 ../gio/gdbusconnection.c:6371 +#: ../gio/gdbusconnection.c:4395 ../gio/gdbusconnection.c:6568 #, c-format msgid "No such interface '%s'" msgstr "Keine derartige Schnittstelle »%s«" -#: ../gio/gdbusconnection.c:4655 +#: ../gio/gdbusconnection.c:4603 msgid "No such interface" msgstr "Keine derartige Schnittstelle" -#: ../gio/gdbusconnection.c:4873 ../gio/gdbusconnection.c:6880 +#: ../gio/gdbusconnection.c:4821 ../gio/gdbusconnection.c:7077 #, c-format msgid "No such interface '%s' on object at path %s" msgstr "Keine derartige Schnittstelle »%s« des Objekts im Pfad %s" -#: ../gio/gdbusconnection.c:4971 +#: ../gio/gdbusconnection.c:4919 #, c-format msgid "No such method '%s'" msgstr "Keine derartige Methode »%s«" -#: ../gio/gdbusconnection.c:5002 +#: ../gio/gdbusconnection.c:4950 #, c-format msgid "Type of message, '%s', does not match expected type '%s'" msgstr "Der Nachrichtentyp »%s« entspricht nicht dem erwarteten Wert »%s«" -#: ../gio/gdbusconnection.c:5200 +#: ../gio/gdbusconnection.c:5148 #, c-format msgid "An object is already exported for the interface %s at %s" msgstr "Für die Schnittstelle %s auf %s wurde bereits ein Objekt exportiert" -#: ../gio/gdbusconnection.c:5399 +#: ../gio/gdbusconnection.c:5374 +#, c-format +msgid "Unable to retrieve property %s.%s" +msgstr "Eigenschaft kann nicht abgefragt werden: %s.%s" + +#: ../gio/gdbusconnection.c:5430 +#, c-format +msgid "Unable to set property %s.%s" +msgstr "Eigenschaft kann nicht gesetzt werden: %s.%s" + +#: ../gio/gdbusconnection.c:5606 #, c-format msgid "Method '%s' returned type '%s', but expected '%s'" msgstr "Methode »%s« gab Typ »%s« zurück, aber »%s« wurde erwartet" -#: ../gio/gdbusconnection.c:6482 +#: ../gio/gdbusconnection.c:6679 #, c-format msgid "Method '%s' on interface '%s' with signature '%s' does not exist" msgstr "Methode »%s« in Schnittstelle »%s« mit Signatur »%s« existiert nicht" -#: ../gio/gdbusconnection.c:6603 +#: ../gio/gdbusconnection.c:6800 #, c-format msgid "A subtree is already exported for %s" msgstr "Ein Unterbaum wurde bereits für %s exportiert" @@ -839,7 +853,7 @@ msgid "" "0x%02x" msgstr "" "Ungültiger Wert für die Speicherreihenfolge. Es wird entweder 0x6c ('l') " -"oder 0x42 ('B') erwartet, aber der Wert 0x%02x gefunden" +"oder 0x42 ('B') erwartet, aber der Wert 0x%02x gefunden" #: ../gio/gdbusmessage.c:2064 #, c-format @@ -917,36 +931,36 @@ msgid "Message body is empty but signature in the header field is '(%s)'" msgstr "" "Nachrichtenrumpf ist leer, aber die Signatur im Kopfzeilenfeld ist »(%s)«" -#: ../gio/gdbusmessage.c:3280 +#: ../gio/gdbusmessage.c:3283 #, c-format msgid "Error return with body of type '%s'" msgstr "Fehlerrückmeldung mit Inhalt des Typs »%s«" -#: ../gio/gdbusmessage.c:3288 +#: ../gio/gdbusmessage.c:3291 msgid "Error return with empty body" msgstr "Fehlerrückmeldung mit leerem Inhalt" -#: ../gio/gdbusprivate.c:2085 +#: ../gio/gdbusprivate.c:2036 #, c-format msgid "Unable to get Hardware profile: %s" msgstr "Hardware-Profil konnte nicht ermittelt werden: %s" -#: ../gio/gdbusprivate.c:2130 +#: ../gio/gdbusprivate.c:2081 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: " msgstr "" "/var/lib/dbus/machine-id oder /etc/machine-id konnte nicht geladen werden: " -#: ../gio/gdbusproxy.c:1630 +#: ../gio/gdbusproxy.c:1610 #, c-format msgid "Error calling StartServiceByName for %s: " msgstr "Fehler beim Aufruf von StartServiceByName für %s: " -#: ../gio/gdbusproxy.c:1653 +#: ../gio/gdbusproxy.c:1633 #, c-format msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" msgstr "Unerwartete Antwort %d von der Methode StartServiceByName(»%s«)" -#: ../gio/gdbusproxy.c:2754 ../gio/gdbusproxy.c:2891 +#: ../gio/gdbusproxy.c:2709 ../gio/gdbusproxy.c:2843 msgid "" "Cannot invoke method; proxy is for a well-known name without an owner and " "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag" @@ -999,49 +1013,54 @@ msgstr "" "\n" "Mit »%s BEFEHL --help« erhalten Sie Hilfe zu jedem der Befehle.\n" -#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:220 ../gio/gdbus-tool.c:292 -#: ../gio/gdbus-tool.c:316 ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1031 -#: ../gio/gdbus-tool.c:1465 +#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:226 ../gio/gdbus-tool.c:298 +#: ../gio/gdbus-tool.c:322 ../gio/gdbus-tool.c:711 ../gio/gdbus-tool.c:1043 +#: ../gio/gdbus-tool.c:1477 #, c-format msgid "Error: %s\n" msgstr "Fehler: %s\n" -#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:233 ../gio/gdbus-tool.c:1481 +#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493 #, c-format msgid "Error parsing introspection XML: %s\n" msgstr "Fehler beim Verarbeiten des XML-Codes der Inspektion: %s\n" -#: ../gio/gdbus-tool.c:350 +#: ../gio/gdbus-tool.c:208 +#, c-format +msgid "Error: %s is not a valid name\n" +msgstr "Fehler: %s ist kein gültiger Name\n" + +#: ../gio/gdbus-tool.c:356 msgid "Connect to the system bus" msgstr "Zum Systembus verbinden" -#: ../gio/gdbus-tool.c:351 +#: ../gio/gdbus-tool.c:357 msgid "Connect to the session bus" msgstr "Zum Sitzungsbus verbinden" -#: ../gio/gdbus-tool.c:352 +#: ../gio/gdbus-tool.c:358 msgid "Connect to given D-Bus address" msgstr "Zur angegebenen D-Bus-Adresse verbinden" -#: ../gio/gdbus-tool.c:362 +#: ../gio/gdbus-tool.c:368 msgid "Connection Endpoint Options:" msgstr "Optionen für Gegenstelle der Verbindung:" -#: ../gio/gdbus-tool.c:363 +#: ../gio/gdbus-tool.c:369 msgid "Options specifying the connection endpoint" msgstr "Optionen zur Gegenstelle der Verbindung" -#: ../gio/gdbus-tool.c:385 +#: ../gio/gdbus-tool.c:391 #, c-format msgid "No connection endpoint specified" msgstr "Keine Gegenstelle der Verbindung angegeben" -#: ../gio/gdbus-tool.c:395 +#: ../gio/gdbus-tool.c:401 #, c-format msgid "Multiple connection endpoints specified" msgstr "Mehrere Gegenstellen der Verbindung angegeben" -#: ../gio/gdbus-tool.c:465 +#: ../gio/gdbus-tool.c:471 #, c-format msgid "" "Warning: According to introspection data, interface '%s' does not exist\n" @@ -1049,7 +1068,7 @@ msgstr "" "Warnung: Entsprechend den Inspektionsdaten existiert die Schnittstelle »%s« " "nicht\n" -#: ../gio/gdbus-tool.c:474 +#: ../gio/gdbus-tool.c:480 #, c-format msgid "" "Warning: According to introspection data, method '%s' does not exist on " @@ -1058,192 +1077,196 @@ msgstr "" "Warnung: Entsprechend den Inspektionsdaten existiert die Methode »%s« nicht " "in der Schnittstelle »%s«\n" -#: ../gio/gdbus-tool.c:536 +#: ../gio/gdbus-tool.c:542 msgid "Optional destination for signal (unique name)" msgstr "Optionales Ziel des Signals (eindeutiger Name)" -#: ../gio/gdbus-tool.c:537 +#: ../gio/gdbus-tool.c:543 msgid "Object path to emit signal on" msgstr "Objektpfad, auf den das Signal ausgegeben werden soll" -#: ../gio/gdbus-tool.c:538 +#: ../gio/gdbus-tool.c:544 msgid "Signal and interface name" msgstr "Signal und Schnittstellenname" -#: ../gio/gdbus-tool.c:570 +#: ../gio/gdbus-tool.c:576 msgid "Emit a signal." msgstr "Ein Signal ausgeben." -#: ../gio/gdbus-tool.c:604 ../gio/gdbus-tool.c:836 ../gio/gdbus-tool.c:1571 -#: ../gio/gdbus-tool.c:1799 +#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583 +#: ../gio/gdbus-tool.c:1818 #, c-format msgid "Error connecting: %s\n" msgstr "Fehler beim Verbinden: %s\n" -#: ../gio/gdbus-tool.c:616 +#: ../gio/gdbus-tool.c:622 #, c-format msgid "Error: object path not specified.\n" msgstr "Fehler: Objektpfad wurde nicht angegeben.\n" -#: ../gio/gdbus-tool.c:621 ../gio/gdbus-tool.c:897 ../gio/gdbus-tool.c:1629 -#: ../gio/gdbus-tool.c:1858 +#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648 +#: ../gio/gdbus-tool.c:1884 #, c-format msgid "Error: %s is not a valid object path\n" msgstr "Fehler: %s ist kein gültiger Objektpfad\n" -#: ../gio/gdbus-tool.c:627 +#: ../gio/gdbus-tool.c:633 #, c-format msgid "Error: signal not specified.\n" msgstr "Fehler: Signal wurde nicht angegeben.\n" -#: ../gio/gdbus-tool.c:634 +#: ../gio/gdbus-tool.c:640 #, c-format msgid "Error: signal must be the fully-qualified name.\n" msgstr "Fehler: Signal muss ein vollwertiger Name sein.\n" -#: ../gio/gdbus-tool.c:642 +#: ../gio/gdbus-tool.c:648 #, c-format msgid "Error: %s is not a valid interface name\n" msgstr "Fehler: %s ist kein gültiger Schnittstellenname\n" -#: ../gio/gdbus-tool.c:648 +#: ../gio/gdbus-tool.c:654 #, c-format msgid "Error: %s is not a valid member name\n" msgstr "Fehler: %s ist kein gültiger Mitgliedsname\n" -#: ../gio/gdbus-tool.c:654 +#: ../gio/gdbus-tool.c:660 #, c-format msgid "Error: %s is not a valid unique bus name.\n" msgstr "Fehler: %s ist kein gültiger eindeutiger Bus-Name.\n" #. Use the original non-"parse-me-harder" error -#: ../gio/gdbus-tool.c:681 ../gio/gdbus-tool.c:999 +#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011 #, c-format msgid "Error parsing parameter %d: %s\n" msgstr "Fehler bei der Verarbeitung des Parameters %d: %s\n" -#: ../gio/gdbus-tool.c:712 +#: ../gio/gdbus-tool.c:718 #, c-format msgid "Error flushing connection: %s\n" msgstr "Fehler beim Löschen der Verbindung: %s\n" -#: ../gio/gdbus-tool.c:739 +#: ../gio/gdbus-tool.c:745 msgid "Destination name to invoke method on" msgstr "Name des Ziels, für das die Methode aufgerufen werden soll" -#: ../gio/gdbus-tool.c:740 +#: ../gio/gdbus-tool.c:746 msgid "Object path to invoke method on" msgstr "Objektpfad, für den die Methode aufgerufen werden soll" -#: ../gio/gdbus-tool.c:741 +#: ../gio/gdbus-tool.c:747 msgid "Method and interface name" msgstr "Methode und Schnittstellenname" -#: ../gio/gdbus-tool.c:742 +#: ../gio/gdbus-tool.c:748 msgid "Timeout in seconds" msgstr "Verzögerung in Sekunden:" -#: ../gio/gdbus-tool.c:781 +#: ../gio/gdbus-tool.c:787 msgid "Invoke a method on a remote object." msgstr "Eine Methode für ein entferntes Objekt aufrufen." -#: ../gio/gdbus-tool.c:856 ../gio/gdbus-tool.c:1590 ../gio/gdbus-tool.c:1818 +#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837 #, c-format msgid "Error: Destination is not specified\n" msgstr "Fehler: Ziel wurde nicht angegeben\n" -#: ../gio/gdbus-tool.c:877 ../gio/gdbus-tool.c:1609 +#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849 +#, c-format +msgid "Error: %s is not a valid bus name\n" +msgstr "Fehler: %s ist kein gültiger Bus-Name\n" + +#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628 #, c-format msgid "Error: Object path is not specified\n" msgstr "Fehler: Objektpfad wurde nicht angegeben\n" -#: ../gio/gdbus-tool.c:912 +#: ../gio/gdbus-tool.c:924 #, c-format msgid "Error: Method name is not specified\n" msgstr "Fehler: Name der Methode wurde nicht angegeben\n" -#: ../gio/gdbus-tool.c:923 +#: ../gio/gdbus-tool.c:935 #, c-format msgid "Error: Method name '%s' is invalid\n" msgstr "Fehler: Name der Methode »%s« ist ungültig\n" -#: ../gio/gdbus-tool.c:991 +#: ../gio/gdbus-tool.c:1003 #, c-format msgid "Error parsing parameter %d of type '%s': %s\n" msgstr "Fehler bei der Verarbeitung des Parameters %d vom Typ »%s«: %s\n" -#: ../gio/gdbus-tool.c:1428 +#: ../gio/gdbus-tool.c:1440 msgid "Destination name to introspect" msgstr "Name des Ziels der Inspektion" -#: ../gio/gdbus-tool.c:1429 +#: ../gio/gdbus-tool.c:1441 msgid "Object path to introspect" msgstr "Zu inspizierender Objektpfad" -#: ../gio/gdbus-tool.c:1430 +#: ../gio/gdbus-tool.c:1442 msgid "Print XML" msgstr "XML drucken" -#: ../gio/gdbus-tool.c:1431 +#: ../gio/gdbus-tool.c:1443 msgid "Introspect children" msgstr "Unterelemente inspizieren" -#: ../gio/gdbus-tool.c:1432 +#: ../gio/gdbus-tool.c:1444 msgid "Only print properties" msgstr "Nur Eigenschaften ausgeben" -#: ../gio/gdbus-tool.c:1523 +#: ../gio/gdbus-tool.c:1535 msgid "Introspect a remote object." msgstr "Ein entferntes Objekt inspizieren." -#: ../gio/gdbus-tool.c:1721 +#: ../gio/gdbus-tool.c:1740 msgid "Destination name to monitor" msgstr "Name des zu überwachenden Ziels" -#: ../gio/gdbus-tool.c:1722 +#: ../gio/gdbus-tool.c:1741 msgid "Object path to monitor" msgstr "Zu überwachender Objektpfad" -#: ../gio/gdbus-tool.c:1751 +#: ../gio/gdbus-tool.c:1770 msgid "Monitor a remote object." msgstr "Ein entferntes Objekt überwachen." -#: ../gio/gdesktopappinfo.c:1999 ../gio/gdesktopappinfo.c:4530 -#: ../gio/gwin32appinfo.c:219 +#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4502 msgid "Unnamed" msgstr "Unbenannt" -#: ../gio/gdesktopappinfo.c:2408 +#: ../gio/gdesktopappinfo.c:2402 msgid "Desktop file didn't specify Exec field" msgstr "Desktop-Datei hat kein Exec-Feld angegeben" -#: ../gio/gdesktopappinfo.c:2693 +#: ../gio/gdesktopappinfo.c:2687 msgid "Unable to find terminal required for application" msgstr "Für die Anwendung benötigtes Terminal konnte nicht gefunden werden" -#: ../gio/gdesktopappinfo.c:3114 +#: ../gio/gdesktopappinfo.c:3099 #, c-format msgid "Can't create user application configuration folder %s: %s" msgstr "" "Konfigurationsordner %s für Benutzeranwendungen konnte nicht erstellt " "werden: %s" -#: ../gio/gdesktopappinfo.c:3118 +#: ../gio/gdesktopappinfo.c:3103 #, c-format msgid "Can't create user MIME configuration folder %s: %s" msgstr "" "MIME-Konfigurationsordner %s des Benutzers konnte nicht erstellt werden: %s" -#: ../gio/gdesktopappinfo.c:3358 ../gio/gdesktopappinfo.c:3382 +#: ../gio/gdesktopappinfo.c:3343 ../gio/gdesktopappinfo.c:3367 msgid "Application information lacks an identifier" msgstr "Den Anwendungsinformationen fehlt ein Bezeichner" -#: ../gio/gdesktopappinfo.c:3615 +#: ../gio/gdesktopappinfo.c:3600 #, c-format msgid "Can't create user desktop file %s" msgstr "Benutzer-Desktop-Datei %s kann nicht erstellt werden" -#: ../gio/gdesktopappinfo.c:3749 +#: ../gio/gdesktopappinfo.c:3734 #, c-format msgid "Custom definition for %s" msgstr "Benutzerdefinition für %s" @@ -1271,11 +1294,15 @@ msgstr "Laufwerk unterstützt keinen Startvorgang" msgid "drive doesn't implement stop" msgstr "Laufwerk unterstützt keinen Stoppvorgang" -#: ../gio/gdummytlsbackend.c:189 ../gio/gdummytlsbackend.c:311 -#: ../gio/gdummytlsbackend.c:401 +#: ../gio/gdummytlsbackend.c:195 ../gio/gdummytlsbackend.c:317 +#: ../gio/gdummytlsbackend.c:509 msgid "TLS support is not available" msgstr "TLS-Unterstützung ist nicht verfügbar" +#: ../gio/gdummytlsbackend.c:419 +msgid "DTLS support is not available" +msgstr "DTLS-Unterstützung ist nicht verfügbar" + #: ../gio/gemblem.c:323 #, c-format msgid "Can't handle version %d of GEmblem encoding" @@ -1300,14 +1327,14 @@ msgstr "Ungültige Symbolanzahl (%d) in GEmblemedIcon-Kodierung" msgid "Expected a GEmblem for GEmblemedIcon" msgstr "Es wurde ein GEmblem für GEmblemedIcon erwartet" -#: ../gio/gfile.c:968 ../gio/gfile.c:1206 ../gio/gfile.c:1344 -#: ../gio/gfile.c:1582 ../gio/gfile.c:1637 ../gio/gfile.c:1695 -#: ../gio/gfile.c:1779 ../gio/gfile.c:1836 ../gio/gfile.c:1900 -#: ../gio/gfile.c:1955 ../gio/gfile.c:3603 ../gio/gfile.c:3658 -#: ../gio/gfile.c:3893 ../gio/gfile.c:3935 ../gio/gfile.c:4398 -#: ../gio/gfile.c:4809 ../gio/gfile.c:4894 ../gio/gfile.c:4984 -#: ../gio/gfile.c:5081 ../gio/gfile.c:5168 ../gio/gfile.c:5269 -#: ../gio/gfile.c:7788 ../gio/gfile.c:7878 ../gio/gfile.c:7962 +#: ../gio/gfile.c:969 ../gio/gfile.c:1207 ../gio/gfile.c:1345 +#: ../gio/gfile.c:1583 ../gio/gfile.c:1638 ../gio/gfile.c:1696 +#: ../gio/gfile.c:1780 ../gio/gfile.c:1837 ../gio/gfile.c:1901 +#: ../gio/gfile.c:1956 ../gio/gfile.c:3604 ../gio/gfile.c:3659 +#: ../gio/gfile.c:3894 ../gio/gfile.c:3936 ../gio/gfile.c:4404 +#: ../gio/gfile.c:4815 ../gio/gfile.c:4900 ../gio/gfile.c:4990 +#: ../gio/gfile.c:5087 ../gio/gfile.c:5174 ../gio/gfile.c:5275 +#: ../gio/gfile.c:7796 ../gio/gfile.c:7886 ../gio/gfile.c:7970 #: ../gio/win32/gwinhttpfile.c:437 msgid "Operation not supported" msgstr "Vorgang wird nicht unterstützt" @@ -1322,71 +1349,71 @@ msgstr "Vorgang wird nicht unterstützt" #. Translators: This is an error message when trying to find #. * the enclosing (user visible) mount of a file, but none #. * exists. -#: ../gio/gfile.c:1467 ../gio/glocalfile.c:1103 ../gio/glocalfile.c:1114 -#: ../gio/glocalfile.c:1127 +#: ../gio/gfile.c:1468 ../gio/glocalfile.c:1134 ../gio/glocalfile.c:1145 +#: ../gio/glocalfile.c:1158 msgid "Containing mount does not exist" msgstr "Enthaltender Einhängepunkt existiert nicht" -#: ../gio/gfile.c:2514 ../gio/glocalfile.c:2337 +#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2376 msgid "Can't copy over directory" msgstr "Es kann nicht über den Ordner kopiert werden" -#: ../gio/gfile.c:2574 +#: ../gio/gfile.c:2575 msgid "Can't copy directory over directory" msgstr "Ordner kann nicht über Ordner kopiert werden" -#: ../gio/gfile.c:2582 ../gio/glocalfile.c:2346 +#: ../gio/gfile.c:2583 ../gio/glocalfile.c:2385 msgid "Target file exists" msgstr "Zieldatei existiert" -#: ../gio/gfile.c:2601 +#: ../gio/gfile.c:2602 msgid "Can't recursively copy directory" msgstr "Ordner kann nicht rekursiv kopiert werden" -#: ../gio/gfile.c:2883 +#: ../gio/gfile.c:2884 msgid "Splice not supported" msgstr "Zusammenfügen wird nicht unterstützt" -#: ../gio/gfile.c:2887 +#: ../gio/gfile.c:2888 #, c-format msgid "Error splicing file: %s" msgstr "Fehler beim Zusammenfügen der Datei: %s" -#: ../gio/gfile.c:3018 +#: ../gio/gfile.c:3019 msgid "Copy (reflink/clone) between mounts is not supported" msgstr "Kopieren (reflink/clone) zwischen Einhängepunkten nicht unterstützt" -#: ../gio/gfile.c:3022 +#: ../gio/gfile.c:3023 msgid "Copy (reflink/clone) is not supported or invalid" msgstr "Kopieren (reflink/clone) wird nicht unterstützt oder ist ungültig" -#: ../gio/gfile.c:3027 +#: ../gio/gfile.c:3028 msgid "Copy (reflink/clone) is not supported or didn't work" msgstr "" "Kopieren (reflink/clone) wird nicht unterstützt oder funktioniert nicht" -#: ../gio/gfile.c:3090 +#: ../gio/gfile.c:3091 msgid "Can't copy special file" msgstr "Spezielle Datei kann nicht kopiert werden" -#: ../gio/gfile.c:3883 +#: ../gio/gfile.c:3884 msgid "Invalid symlink value given" msgstr "Ungültiger Wert für symbolische Verknüpfung angegeben" -#: ../gio/gfile.c:4044 +#: ../gio/gfile.c:4045 msgid "Trash not supported" msgstr "Papierkorb nicht unterstützt" -#: ../gio/gfile.c:4156 +#: ../gio/gfile.c:4157 #, c-format msgid "File names cannot contain '%c'" msgstr "Dateinamen dürfen kein »%c« enthalten" -#: ../gio/gfile.c:6580 ../gio/gvolume.c:363 +#: ../gio/gfile.c:6586 ../gio/gvolume.c:363 msgid "volume doesn't implement mount" msgstr "Datenträger unterstützt Einhängen nicht" -#: ../gio/gfile.c:6689 +#: ../gio/gfile.c:6695 msgid "No application is registered as handling this file" msgstr "Es wurde keine Anwendung gefunden, die diese Datei verarbeiten kann" @@ -1433,31 +1460,28 @@ msgstr "Abschneiden wird vom Datenstrom nicht unterstützt" #: ../gio/ghttpproxy.c:136 msgid "Bad HTTP proxy reply" -msgstr "" +msgstr "Ungültige Antwort vom HTTP-Proxy" #: ../gio/ghttpproxy.c:152 -#, fuzzy -#| msgid "The connection is closed" msgid "HTTP proxy connection not allowed" -msgstr "Verbindung ist geschlossen" +msgstr "Verbindung zum HTTP-Proxy nicht zugelassen" #: ../gio/ghttpproxy.c:157 msgid "HTTP proxy authentication failed" -msgstr "" +msgstr "Legitimierung am HTTP-Proxy ist fehlgeschlagen" #: ../gio/ghttpproxy.c:160 msgid "HTTP proxy authentication required" -msgstr "" +msgstr "Legitimierung ist erforderlich am HTTP-Proxy" #: ../gio/ghttpproxy.c:164 -#, fuzzy, c-format -#| msgid "The connection is closed" +#, c-format msgid "HTTP proxy connection failed: %i" -msgstr "Verbindung ist geschlossen" +msgstr "Verbindung zum HTTP-Proxy ist fehlgeschlagen: %i" #: ../gio/ghttpproxy.c:260 msgid "HTTP proxy server closed connection unexpectedly." -msgstr "" +msgstr "HTTP Proxy-Server hat die Verbindung unerwartet geschlossen." #: ../gio/gicon.c:290 #, c-format @@ -1511,16 +1535,16 @@ msgstr "Für die Adresse sind Bits außerhalb der Präfix-Länge gesetzt" msgid "Could not parse '%s' as IP address mask" msgstr "»%s« konnte nicht als IP-Adressmaske verarbeitet werden" -#: ../gio/ginetsocketaddress.c:196 ../gio/ginetsocketaddress.c:213 -#: ../gio/gunixsocketaddress.c:209 +#: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220 +#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:216 msgid "Not enough space for socket address" msgstr "Nicht genug Platz für eine Socket-Adresse" -#: ../gio/ginetsocketaddress.c:228 +#: ../gio/ginetsocketaddress.c:235 msgid "Unsupported socket address" msgstr "Nicht unterstützte Socket-Adresse" -#: ../gio/ginputstream.c:185 +#: ../gio/ginputstream.c:188 msgid "Input stream doesn't implement read" msgstr "Eingabedatenstrom unterstützt kein Lesen" @@ -1530,12 +1554,12 @@ msgstr "Eingabedatenstrom unterstützt kein Lesen" #. Translators: This is an error you get if there is #. * already an operation running against this stream when #. * you try to start one -#: ../gio/ginputstream.c:1212 ../gio/giostream.c:288 -#: ../gio/goutputstream.c:1664 +#: ../gio/ginputstream.c:1215 ../gio/giostream.c:310 +#: ../gio/goutputstream.c:1668 msgid "Stream has outstanding operation" msgstr "Datenstrom hat noch einen ausstehenden Vorgang" -#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1453 +#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1491 #, c-format msgid "Element <%s> not allowed inside <%s>" msgstr "Element <%s> ist innerhalb <%s> nicht erlaubt" @@ -1580,7 +1604,7 @@ msgstr "Fehler beim Lesen der Datei »%s«: %s" msgid "Error compressing file %s" msgstr "Fehler beim Komprimieren der Datei %s" -#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1565 +#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1603 #, c-format msgid "text may not appear inside <%s>" msgstr "Text könnte nicht innerhalb von <%s> erscheinen" @@ -1597,8 +1621,8 @@ msgstr "" "Die Ordner, aus denen Dateien gelesen werden sollen (Vorgabe ist der " "aktuelle Ordner)" -#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:1994 -#: ../gio/glib-compile-schemas.c:2023 +#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2036 +#: ../gio/glib-compile-schemas.c:2065 msgid "DIRECTORY" msgstr "ORDNER" @@ -1611,7 +1635,7 @@ msgstr "" #: ../gio/glib-compile-resources.c:592 msgid "Generate source header" -msgstr "Quellcode-Header gernerieren" +msgstr "Quellcode-Header generieren" #: ../gio/glib-compile-resources.c:593 msgid "Generate sourcecode used to link in the resource file into your code" @@ -1623,7 +1647,7 @@ msgstr "Abhängigkeitsliste generieren" #: ../gio/glib-compile-resources.c:595 msgid "Don't automatically create and register resource" -msgstr "Die Resssource nicht automatisch anlegen und registrieren" +msgstr "Die Ressource nicht automatisch anlegen und registrieren" #: ../gio/glib-compile-resources.c:596 msgid "Don't export functions; declare them G_GNUC_INTERNAL" @@ -1649,16 +1673,16 @@ msgstr "" msgid "You should give exactly one file name\n" msgstr "Sie sollten genau einen Dateinamen angeben\n" -#: ../gio/glib-compile-schemas.c:772 +#: ../gio/glib-compile-schemas.c:784 msgid "empty names are not permitted" msgstr "Leere Namen sind nicht zulässig" -#: ../gio/glib-compile-schemas.c:782 +#: ../gio/glib-compile-schemas.c:794 #, c-format msgid "invalid name '%s': names must begin with a lowercase letter" msgstr "Ungültiger Name »%s«: Namen müssen mit einem Kleinbuchstaben beginnen" -#: ../gio/glib-compile-schemas.c:794 +#: ../gio/glib-compile-schemas.c:806 #, c-format msgid "" "invalid name '%s': invalid character '%c'; only lowercase letters, numbers " @@ -1667,39 +1691,39 @@ msgstr "" "Ungültiger Name »%s«: ungültiges Zeichen »%c«; nur Kleinbuchstaben, Ziffern " "und Bindestriche »-« sind zulässig" -#: ../gio/glib-compile-schemas.c:803 +#: ../gio/glib-compile-schemas.c:815 #, c-format msgid "invalid name '%s': two successive hyphens ('--') are not permitted." msgstr "" "Ungültiger Name »%s«: Zwei aufeinander folgende Bindestriche »--« sind nicht " "zulässig." -#: ../gio/glib-compile-schemas.c:812 +#: ../gio/glib-compile-schemas.c:824 #, c-format msgid "invalid name '%s': the last character may not be a hyphen ('-')." msgstr "" "Ungültiger Name »%s«: das letzte Zeichen darf kein Bindestrich »-« sein." -#: ../gio/glib-compile-schemas.c:820 +#: ../gio/glib-compile-schemas.c:832 #, c-format msgid "invalid name '%s': maximum length is 1024" msgstr "Ungültiger Name »%s«: maximale Länge ist 1024" -#: ../gio/glib-compile-schemas.c:889 +#: ../gio/glib-compile-schemas.c:901 #, c-format msgid " already specified" msgstr " wurde bereits angegeben" -#: ../gio/glib-compile-schemas.c:915 +#: ../gio/glib-compile-schemas.c:927 msgid "cannot add keys to a 'list-of' schema" msgstr "Schlüssel können nicht zum Schema »list-of« hinzugefügt werden" -#: ../gio/glib-compile-schemas.c:926 +#: ../gio/glib-compile-schemas.c:938 #, c-format msgid " already specified" msgstr " wurde bereits angegeben" -#: ../gio/glib-compile-schemas.c:944 +#: ../gio/glib-compile-schemas.c:956 #, c-format msgid "" " shadows in ; use " @@ -1708,7 +1732,7 @@ msgstr "" " verdeckt in ; verwenden Sie " ", um den Wert anzupassen" -#: ../gio/glib-compile-schemas.c:955 +#: ../gio/glib-compile-schemas.c:967 #, c-format msgid "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " @@ -1717,57 +1741,57 @@ msgstr "" "Genau eines von »type«, »enum« oder »flags« muss als Attribut für " "angegeben werden" -#: ../gio/glib-compile-schemas.c:974 +#: ../gio/glib-compile-schemas.c:986 #, c-format msgid "<%s id='%s'> not (yet) defined." msgstr "<%s id='%s'> (noch) nicht definiert." -#: ../gio/glib-compile-schemas.c:989 +#: ../gio/glib-compile-schemas.c:1001 #, c-format msgid "invalid GVariant type string '%s'" msgstr "Ungültige GVariant-Typzeichenkette »%s«" -#: ../gio/glib-compile-schemas.c:1019 +#: ../gio/glib-compile-schemas.c:1031 msgid " given but schema isn't extending anything" msgstr " angegeben, aber das Schema erweitert nichts" -#: ../gio/glib-compile-schemas.c:1032 +#: ../gio/glib-compile-schemas.c:1044 #, c-format msgid "no to override" msgstr "Kein zum Überschreiben" -#: ../gio/glib-compile-schemas.c:1040 +#: ../gio/glib-compile-schemas.c:1052 #, c-format msgid " already specified" msgstr " wurde bereits angegeben" -#: ../gio/glib-compile-schemas.c:1111 +#: ../gio/glib-compile-schemas.c:1125 #, c-format msgid " already specified" msgstr " wurde bereits angegeben" -#: ../gio/glib-compile-schemas.c:1123 +#: ../gio/glib-compile-schemas.c:1137 #, c-format msgid " extends not yet existing schema '%s'" msgstr " erweitert noch nicht vorhandenes Schema »%s«" -#: ../gio/glib-compile-schemas.c:1139 +#: ../gio/glib-compile-schemas.c:1153 #, c-format msgid " is list of not yet existing schema '%s'" msgstr "" " ist eine Liste des noch nicht vorhandenen Schemas »%s«" -#: ../gio/glib-compile-schemas.c:1147 +#: ../gio/glib-compile-schemas.c:1161 #, c-format msgid "Can not be a list of a schema with a path" msgstr "Darf nicht eine Liste von Schemata mit einem Pfad sein" -#: ../gio/glib-compile-schemas.c:1157 +#: ../gio/glib-compile-schemas.c:1171 #, c-format msgid "Can not extend a schema with a path" msgstr "Ein Schema darf nicht um einem Pfad erweitert werden" -#: ../gio/glib-compile-schemas.c:1167 +#: ../gio/glib-compile-schemas.c:1181 #, c-format msgid "" " is a list, extending which is not a list" @@ -1775,7 +1799,7 @@ msgstr "" " ist eine Liste, welche erweitert, das " "keine Liste ist" -#: ../gio/glib-compile-schemas.c:1177 +#: ../gio/glib-compile-schemas.c:1191 #, c-format msgid "" " extends but '%s' " @@ -1784,64 +1808,69 @@ msgstr "" " erweitert , aber " "»%s« erweitert »%s« nicht" -#: ../gio/glib-compile-schemas.c:1194 +#: ../gio/glib-compile-schemas.c:1208 #, c-format msgid "a path, if given, must begin and end with a slash" msgstr "" "Ein Pfad, falls angegeben, muss mit einem Schrägstrich beginnen und enden" -#: ../gio/glib-compile-schemas.c:1201 +#: ../gio/glib-compile-schemas.c:1215 #, c-format msgid "the path of a list must end with ':/'" msgstr "Der Pfad einer Liste muss mit »:/« enden" -#: ../gio/glib-compile-schemas.c:1233 +#: ../gio/glib-compile-schemas.c:1247 #, c-format msgid "<%s id='%s'> already specified" msgstr "<%s id='%s'> bereits angegeben" -#: ../gio/glib-compile-schemas.c:1457 +#: ../gio/glib-compile-schemas.c:1397 ../gio/glib-compile-schemas.c:1413 +#, c-format +msgid "Only one <%s> element allowed inside <%s>" +msgstr "Nur ein <%s>-Element ist innerhalb von <%s> erlaubt" + +#: ../gio/glib-compile-schemas.c:1495 #, c-format msgid "Element <%s> not allowed at the top level" msgstr "Element <%s> ist in der obersten Ebene nicht erlaubt" #. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1752 ../gio/glib-compile-schemas.c:1823 -#: ../gio/glib-compile-schemas.c:1899 +#: ../gio/glib-compile-schemas.c:1794 ../gio/glib-compile-schemas.c:1865 +#: ../gio/glib-compile-schemas.c:1941 #, c-format msgid "--strict was specified; exiting.\n" msgstr "--strict wurde angegeben; Abbruch.\n" -#: ../gio/glib-compile-schemas.c:1760 +#: ../gio/glib-compile-schemas.c:1802 #, c-format msgid "This entire file has been ignored.\n" msgstr "Die gesamte Datei wurde ignoriert.\n" -#: ../gio/glib-compile-schemas.c:1819 +#: ../gio/glib-compile-schemas.c:1861 #, c-format msgid "Ignoring this file.\n" msgstr "Diese Datei wird ignoriert.\n" -#: ../gio/glib-compile-schemas.c:1859 +#: ../gio/glib-compile-schemas.c:1901 #, c-format msgid "No such key '%s' in schema '%s' as specified in override file '%s'" msgstr "" "Kein Schlüssel »%s« in Schema »%s« wie angegeben in überschreibender Datei " "»%s«" -#: ../gio/glib-compile-schemas.c:1865 ../gio/glib-compile-schemas.c:1923 -#: ../gio/glib-compile-schemas.c:1951 +#: ../gio/glib-compile-schemas.c:1907 ../gio/glib-compile-schemas.c:1965 +#: ../gio/glib-compile-schemas.c:1993 #, c-format msgid "; ignoring override for this key.\n" msgstr "; Überschreiben dieses Schlüssels wird ignoriert.\n" -#: ../gio/glib-compile-schemas.c:1869 ../gio/glib-compile-schemas.c:1927 -#: ../gio/glib-compile-schemas.c:1955 +#: ../gio/glib-compile-schemas.c:1911 ../gio/glib-compile-schemas.c:1969 +#: ../gio/glib-compile-schemas.c:1997 #, c-format msgid " and --strict was specified; exiting.\n" msgstr " und --strict wurde angegeben; Abbruch.\n" -#: ../gio/glib-compile-schemas.c:1885 +#: ../gio/glib-compile-schemas.c:1927 #, c-format msgid "" "error parsing key '%s' in schema '%s' as specified in override file '%s': %s." @@ -1849,12 +1878,12 @@ msgstr "" "Fehler beim Verarbeiten des Schlüssels »%s« in Schema »%s« wie angegeben in " "überschreibender Datei »%s«: %s." -#: ../gio/glib-compile-schemas.c:1895 +#: ../gio/glib-compile-schemas.c:1937 #, c-format msgid "Ignoring override for this key.\n" msgstr "Überschreiben dieses Schlüssels wird ignoriert.\n" -#: ../gio/glib-compile-schemas.c:1913 +#: ../gio/glib-compile-schemas.c:1955 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is outside the " @@ -1863,7 +1892,7 @@ msgstr "" "Überschreiben für Schlüssel »%s« in Schema »%s« in überschreibender Datei " "»%s« liegt außerhalb des im Schema angegebenen Bereichs" -#: ../gio/glib-compile-schemas.c:1941 +#: ../gio/glib-compile-schemas.c:1983 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is not in the " @@ -1872,23 +1901,23 @@ msgstr "" "Überschreiben für Schlüssel »%s« in Schema »%s« in überschreibender Datei " "»%s« befindet sich nicht in der Liste gültiger Auswahlmöglichkeiten" -#: ../gio/glib-compile-schemas.c:1994 +#: ../gio/glib-compile-schemas.c:2036 msgid "where to store the gschemas.compiled file" msgstr "Speicherort der Datei »gschemas.compiled«" -#: ../gio/glib-compile-schemas.c:1995 +#: ../gio/glib-compile-schemas.c:2037 msgid "Abort on any errors in schemas" msgstr "Abbruch wegen einiger Fehler in Schemata" -#: ../gio/glib-compile-schemas.c:1996 +#: ../gio/glib-compile-schemas.c:2038 msgid "Do not write the gschema.compiled file" msgstr "Die Datei »gschema.compiled« nicht schreiben" -#: ../gio/glib-compile-schemas.c:1997 +#: ../gio/glib-compile-schemas.c:2039 msgid "Do not enforce key name restrictions" msgstr "Keine Einschränkungen für Schlüsselnamen erzwingen" -#: ../gio/glib-compile-schemas.c:2026 +#: ../gio/glib-compile-schemas.c:2068 msgid "" "Compile all GSettings schema files into a schema cache.\n" "Schema files are required to have the extension .gschema.xml,\n" @@ -1898,146 +1927,141 @@ msgstr "" "Schemadateien müssen die Erweiterung .gschema.xml haben,\n" "die Zwischenspeicherdatei die Erweiterung gschemas.compiled." -#: ../gio/glib-compile-schemas.c:2042 +#: ../gio/glib-compile-schemas.c:2084 #, c-format msgid "You should give exactly one directory name\n" msgstr "Sie sollten genau einen Ordnernamen angeben\n" -#: ../gio/glib-compile-schemas.c:2081 +#: ../gio/glib-compile-schemas.c:2123 #, c-format msgid "No schema files found: " msgstr "Keine Schema-Dateien gefunden:" -#: ../gio/glib-compile-schemas.c:2084 +#: ../gio/glib-compile-schemas.c:2126 #, c-format msgid "doing nothing.\n" msgstr "Nichts wird getan.\n" -#: ../gio/glib-compile-schemas.c:2087 +#: ../gio/glib-compile-schemas.c:2129 #, c-format msgid "removed existing output file.\n" msgstr "Vorhandene Ausgabedatei wurde entfernt.\n" -#: ../gio/glocaldirectorymonitor.c:224 -msgid "Unable to find default local directory monitor type" -msgstr "" -"Vorgegebener Überwachungstyp für lokale Ordner konnte nicht gefunden werden" - -#: ../gio/glocalfile.c:604 ../gio/win32/gwinhttpfile.c:420 +#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420 #, c-format msgid "Invalid filename %s" msgstr "Ungültiger Dateiname %s" -#: ../gio/glocalfile.c:981 +#: ../gio/glocalfile.c:1012 #, c-format msgid "Error getting filesystem info: %s" msgstr "Fehler beim Einlesen der Dateisystem-Information: %s" -#: ../gio/glocalfile.c:1149 +#: ../gio/glocalfile.c:1180 msgid "Can't rename root directory" msgstr "Wurzelordner kann nicht umbenannt werden" -#: ../gio/glocalfile.c:1169 ../gio/glocalfile.c:1195 +#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226 #, c-format msgid "Error renaming file: %s" msgstr "Fehler beim Umbenennen der Datei: %s" -#: ../gio/glocalfile.c:1178 +#: ../gio/glocalfile.c:1209 msgid "Can't rename file, filename already exists" msgstr "Datei kann nicht umbenannt werden, da der Dateiname bereits existiert" -#: ../gio/glocalfile.c:1191 ../gio/glocalfile.c:2210 ../gio/glocalfile.c:2239 -#: ../gio/glocalfile.c:2399 ../gio/glocalfileoutputstream.c:549 +#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2249 ../gio/glocalfile.c:2278 +#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549 msgid "Invalid filename" msgstr "Ungültiger Dateiname" -#: ../gio/glocalfile.c:1358 ../gio/glocalfile.c:1382 +#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413 msgid "Can't open directory" msgstr "Ordner kann nicht geöffnet werden" -#: ../gio/glocalfile.c:1366 +#: ../gio/glocalfile.c:1397 #, c-format msgid "Error opening file: %s" msgstr "Fehler beim Öffnen der Datei: %s" -#: ../gio/glocalfile.c:1507 +#: ../gio/glocalfile.c:1538 #, c-format msgid "Error removing file: %s" msgstr "Fehler beim Entfernen der Datei: %s" -#: ../gio/glocalfile.c:1887 +#: ../gio/glocalfile.c:1922 #, c-format msgid "Error trashing file: %s" msgstr "Fehler beim Verschieben der Datei in den Papierkorb: %s" -#: ../gio/glocalfile.c:1910 +#: ../gio/glocalfile.c:1945 #, c-format msgid "Unable to create trash dir %s: %s" msgstr "Papierkorb-Ordner %s konnte nicht angelegt werden: %s" -#: ../gio/glocalfile.c:1931 +#: ../gio/glocalfile.c:1966 msgid "Unable to find toplevel directory for trash" msgstr "Elternordner für den Papierkorb konnte nicht gefunden werden" -#: ../gio/glocalfile.c:2010 ../gio/glocalfile.c:2030 +#: ../gio/glocalfile.c:2045 ../gio/glocalfile.c:2065 msgid "Unable to find or create trash directory" msgstr "Papierkorb-Ordner konnte nicht gefunden oder angelegt werden" -#: ../gio/glocalfile.c:2064 +#: ../gio/glocalfile.c:2099 #, c-format msgid "Unable to create trashing info file: %s" msgstr "Löschprotokoll-Datei konnte nicht angelegt werden: %s" -#: ../gio/glocalfile.c:2095 ../gio/glocalfile.c:2100 ../gio/glocalfile.c:2180 -#: ../gio/glocalfile.c:2187 +#: ../gio/glocalfile.c:2157 ../gio/glocalfile.c:2162 ../gio/glocalfile.c:2219 +#: ../gio/glocalfile.c:2226 #, c-format msgid "Unable to trash file: %s" msgstr "Datei konnte nicht in den Papierkorb verschoben werden: %s" -#: ../gio/glocalfile.c:2188 ../glib/gregex.c:281 +#: ../gio/glocalfile.c:2227 ../glib/gregex.c:281 msgid "internal error" msgstr "Interner Fehler" -#: ../gio/glocalfile.c:2214 +#: ../gio/glocalfile.c:2253 #, c-format msgid "Error creating directory: %s" msgstr "Fehler beim Erstellen des Ordners: %s" -#: ../gio/glocalfile.c:2243 +#: ../gio/glocalfile.c:2282 #, c-format msgid "Filesystem does not support symbolic links" msgstr "Das Dateisystem unterstützt keine symbolische Verknüpfungen" -#: ../gio/glocalfile.c:2247 +#: ../gio/glocalfile.c:2286 #, c-format msgid "Error making symbolic link: %s" msgstr "Fehler beim Erstellen der symbolischen Verknüpfung: %s" -#: ../gio/glocalfile.c:2309 ../gio/glocalfile.c:2403 +#: ../gio/glocalfile.c:2348 ../gio/glocalfile.c:2442 #, c-format msgid "Error moving file: %s" msgstr "Fehler beim Verschieben der Datei: %s" -#: ../gio/glocalfile.c:2332 +#: ../gio/glocalfile.c:2371 msgid "Can't move directory over directory" msgstr "Ordner kann nicht über Ordner verschoben werden" -#: ../gio/glocalfile.c:2359 ../gio/glocalfileoutputstream.c:925 +#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:925 #: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954 #: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984 msgid "Backup file creation failed" msgstr "Erstellen der Sicherungsdatei gescheitert" -#: ../gio/glocalfile.c:2378 +#: ../gio/glocalfile.c:2417 #, c-format msgid "Error removing target file: %s" msgstr "Fehler beim Entfernen der Zieldatei: %s" -#: ../gio/glocalfile.c:2392 +#: ../gio/glocalfile.c:2431 msgid "Move between mounts not supported" msgstr "Verschieben zwischen Einhängepunkten nicht unterstützt" -#: ../gio/glocalfile.c:2603 +#: ../gio/glocalfile.c:2623 #, c-format msgid "Could not determine the disk usage of %s: %s" msgstr "Konnte die Festplattenbelegung von %s nicht bestimmen: %s" @@ -2059,82 +2083,82 @@ msgstr "Ungültiger erweiterter Attributname" msgid "Error setting extended attribute '%s': %s" msgstr "Fehler beim Setzen des erweiterten Attributs »%s«: %s" -#: ../gio/glocalfileinfo.c:1556 +#: ../gio/glocalfileinfo.c:1575 msgid " (invalid encoding)" msgstr " (ungültige Kodierung)" -#: ../gio/glocalfileinfo.c:1747 ../gio/glocalfileoutputstream.c:803 +#: ../gio/glocalfileinfo.c:1766 ../gio/glocalfileoutputstream.c:803 #, c-format msgid "Error when getting information for file '%s': %s" msgstr "Fehler beim Holen der Informationen für Datei »%s«: %s" -#: ../gio/glocalfileinfo.c:1998 +#: ../gio/glocalfileinfo.c:2017 #, c-format msgid "Error when getting information for file descriptor: %s" msgstr "Fehler beim Holen der Informationen für Dateideskriptor: %s" -#: ../gio/glocalfileinfo.c:2043 +#: ../gio/glocalfileinfo.c:2062 msgid "Invalid attribute type (uint32 expected)" msgstr "Ungültiger Attributtyp (»uint32« erwartet)" -#: ../gio/glocalfileinfo.c:2061 +#: ../gio/glocalfileinfo.c:2080 msgid "Invalid attribute type (uint64 expected)" msgstr "Ungültiger Attributtyp (»uint64« erwartet)" -#: ../gio/glocalfileinfo.c:2080 ../gio/glocalfileinfo.c:2099 +#: ../gio/glocalfileinfo.c:2099 ../gio/glocalfileinfo.c:2118 msgid "Invalid attribute type (byte string expected)" msgstr "Ungültiger Attributtyp (»byte string« erwartet)" -#: ../gio/glocalfileinfo.c:2134 +#: ../gio/glocalfileinfo.c:2153 msgid "Cannot set permissions on symlinks" msgstr "" "Zugriffsrechte für symbolische Verknüpfungen können nicht gesetzt werden" -#: ../gio/glocalfileinfo.c:2150 +#: ../gio/glocalfileinfo.c:2169 #, c-format msgid "Error setting permissions: %s" msgstr "Fehler beim Setzen der Zugriffsrechte: %s" -#: ../gio/glocalfileinfo.c:2201 +#: ../gio/glocalfileinfo.c:2220 #, c-format msgid "Error setting owner: %s" msgstr "Fehler beim Setzen des Besitzers: %s" -#: ../gio/glocalfileinfo.c:2224 +#: ../gio/glocalfileinfo.c:2243 msgid "symlink must be non-NULL" msgstr "Symbolische Verknüpfung darf nicht NULL sein" -#: ../gio/glocalfileinfo.c:2234 ../gio/glocalfileinfo.c:2253 -#: ../gio/glocalfileinfo.c:2264 +#: ../gio/glocalfileinfo.c:2253 ../gio/glocalfileinfo.c:2272 +#: ../gio/glocalfileinfo.c:2283 #, c-format msgid "Error setting symlink: %s" msgstr "Fehler beim Setzen der symbolischen Verknüpfung: %s" -#: ../gio/glocalfileinfo.c:2243 +#: ../gio/glocalfileinfo.c:2262 msgid "Error setting symlink: file is not a symlink" msgstr "" "Fehler beim Setzen der symbolischen Verknüpfung: Datei ist keine symbolische " "Verknüpfung" -#: ../gio/glocalfileinfo.c:2369 +#: ../gio/glocalfileinfo.c:2388 #, c-format msgid "Error setting modification or access time: %s" msgstr "Fehler beim Setzen der Zugriffsrechte oder der Zugriffszeit: %s" -#: ../gio/glocalfileinfo.c:2392 +#: ../gio/glocalfileinfo.c:2411 msgid "SELinux context must be non-NULL" msgstr "SELinux-Kontext darf nicht NULL sein" -#: ../gio/glocalfileinfo.c:2407 +#: ../gio/glocalfileinfo.c:2426 #, c-format msgid "Error setting SELinux context: %s" msgstr "Fehler beim Setzen des SELinux-Kontexts: %s" -#: ../gio/glocalfileinfo.c:2414 +#: ../gio/glocalfileinfo.c:2433 msgid "SELinux is not enabled on this system" msgstr "SELinux ist auf diesem System nicht aktiviert" -#: ../gio/glocalfileinfo.c:2506 +#: ../gio/glocalfileinfo.c:2525 #, c-format msgid "Setting attribute %s not supported" msgstr "Setzen des Attributs %s nicht unterstützt" @@ -2157,7 +2181,7 @@ msgstr "Fehler beim Suchen in Datei: %s" msgid "Error closing file: %s" msgstr "Fehler beim Schließen der Datei: %s" -#: ../gio/glocalfilemonitor.c:145 +#: ../gio/glocalfilemonitor.c:840 msgid "Unable to find default local file monitor type" msgstr "" "Vorgegebener Überwachungstyp für lokale Dateien konnte nicht gefunden werden" @@ -2211,7 +2235,7 @@ msgstr "Die Datei wurde extern verändert" msgid "Error removing old file: %s" msgstr "Fehler beim Entfernen der alten Datei: %s" -#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:769 +#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:771 msgid "Invalid GSeekType supplied" msgstr "Ungültiger GSeekType übergeben" @@ -2223,15 +2247,15 @@ msgstr "Ungültige Suchanfrage" msgid "Cannot truncate GMemoryInputStream" msgstr "GMemoryInputStream konnte nicht abgeschnitten werden" -#: ../gio/gmemoryoutputstream.c:565 +#: ../gio/gmemoryoutputstream.c:567 msgid "Memory output stream not resizable" msgstr "Größe des Speicherausgabestroms ist nicht änderbar" -#: ../gio/gmemoryoutputstream.c:581 +#: ../gio/gmemoryoutputstream.c:583 msgid "Failed to resize memory output stream" msgstr "Größe des Speicherausgabestroms konnte nicht geändert werden" -#: ../gio/gmemoryoutputstream.c:671 +#: ../gio/gmemoryoutputstream.c:673 msgid "" "Amount of memory required to process the write is larger than available " "address space" @@ -2239,11 +2263,11 @@ msgstr "" "Für den Schreibvorgang erforderliche Speichermenge ist größer als der " "verfügbare Adressbereich" -#: ../gio/gmemoryoutputstream.c:779 +#: ../gio/gmemoryoutputstream.c:781 msgid "Requested seek before the beginning of the stream" msgstr "Angeforderte Suche vor dem Beginn des Datenstroms" -#: ../gio/gmemoryoutputstream.c:794 +#: ../gio/gmemoryoutputstream.c:796 msgid "Requested seek beyond the end of the stream" msgstr "Angeforderte Suche nach dem Ende des Datenstroms" @@ -2297,16 +2321,16 @@ msgstr "Einhängepunkt unterstützt Erraten des Inhaltstyps nicht" msgid "mount doesn't implement synchronous content type guessing" msgstr "Einhängepunkt unterstützt synchrones Erraten des Inhaltstyps nicht" -#: ../gio/gnetworkaddress.c:383 +#: ../gio/gnetworkaddress.c:378 #, c-format msgid "Hostname '%s' contains '[' but not ']'" msgstr "Rechnername »%s« enthält »[«, aber nicht »]«" -#: ../gio/gnetworkmonitorbase.c:199 ../gio/gnetworkmonitorbase.c:302 +#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:309 msgid "Network unreachable" msgstr "Das Netzwerk ist nicht erreichbar" -#: ../gio/gnetworkmonitorbase.c:237 ../gio/gnetworkmonitorbase.c:267 +#: ../gio/gnetworkmonitorbase.c:244 ../gio/gnetworkmonitorbase.c:274 msgid "Host unreachable" msgstr "Rechner ist nicht erreichbar" @@ -2324,52 +2348,52 @@ msgstr "Netzwerkmonitor konnte nicht erstellt werden:" msgid "Could not get network status: " msgstr "Netzwerkstatus konnte nicht ermittelt werden:" -#: ../gio/gnetworkmonitornm.c:278 +#: ../gio/gnetworkmonitornm.c:326 #, c-format msgid "NetworkManager version too old" -msgstr "" +msgstr "Die Version von NetworkManager ist zu alt" -#: ../gio/goutputstream.c:209 ../gio/goutputstream.c:557 +#: ../gio/goutputstream.c:212 ../gio/goutputstream.c:560 msgid "Output stream doesn't implement write" msgstr "Ausgabedatenstrom unterstützt kein Schreiben" -#: ../gio/goutputstream.c:518 ../gio/goutputstream.c:1218 +#: ../gio/goutputstream.c:521 ../gio/goutputstream.c:1222 msgid "Source stream is already closed" msgstr "Quelldatenstrom ist bereits geschlossen" -#: ../gio/gresolver.c:331 ../gio/gthreadedresolver.c:116 +#: ../gio/gresolver.c:330 ../gio/gthreadedresolver.c:116 #: ../gio/gthreadedresolver.c:126 #, c-format msgid "Error resolving '%s': %s" msgstr "Fehler beim Auflösen von »%s«: %s" -#: ../gio/gresource.c:298 ../gio/gresource.c:546 ../gio/gresource.c:563 -#: ../gio/gresource.c:684 ../gio/gresource.c:753 ../gio/gresource.c:814 -#: ../gio/gresource.c:894 ../gio/gresourcefile.c:452 -#: ../gio/gresourcefile.c:553 ../gio/gresourcefile.c:655 +#: ../gio/gresource.c:304 ../gio/gresource.c:555 ../gio/gresource.c:572 +#: ../gio/gresource.c:693 ../gio/gresource.c:762 ../gio/gresource.c:823 +#: ../gio/gresource.c:903 ../gio/gresourcefile.c:453 ../gio/gresourcefile.c:576 +#: ../gio/gresourcefile.c:713 #, c-format msgid "The resource at '%s' does not exist" msgstr "Die Ressource auf »%s« existiert nicht" -#: ../gio/gresource.c:463 +#: ../gio/gresource.c:469 #, c-format msgid "The resource at '%s' failed to decompress" msgstr "Die Ressource auf »%s« konnte nicht entpackt werden" -#: ../gio/gresourcefile.c:651 +#: ../gio/gresourcefile.c:709 #, c-format msgid "The resource at '%s' is not a directory" msgstr "Die Ressource »%s« ist ein Ordner" -#: ../gio/gresourcefile.c:859 +#: ../gio/gresourcefile.c:917 msgid "Input stream doesn't implement seek" msgstr "Eingabedatenstrom unterstützt kein Suchen" -#: ../gio/gresource-tool.c:491 +#: ../gio/gresource-tool.c:494 msgid "List sections containing resources in an elf FILE" msgstr "Sektionen einer ELF-Datei auflisten, welche Ressourcen enthält" -#: ../gio/gresource-tool.c:497 +#: ../gio/gresource-tool.c:500 msgid "" "List resources\n" "If SECTION is given, only list resources in this section\n" @@ -2379,16 +2403,16 @@ msgstr "" "Falls SEKTION angegeben ist, nur die Ressourcen dieser Sektion auflisten\n" "Falls PFAD angegeben ist, nur die betreffenden Ressourcen auflisten" -#: ../gio/gresource-tool.c:500 ../gio/gresource-tool.c:510 +#: ../gio/gresource-tool.c:503 ../gio/gresource-tool.c:513 msgid "FILE [PATH]" msgstr "DATEI [PFAD]" -#: ../gio/gresource-tool.c:501 ../gio/gresource-tool.c:511 -#: ../gio/gresource-tool.c:518 +#: ../gio/gresource-tool.c:504 ../gio/gresource-tool.c:514 +#: ../gio/gresource-tool.c:521 msgid "SECTION" msgstr "SEKTION" -#: ../gio/gresource-tool.c:506 +#: ../gio/gresource-tool.c:509 msgid "" "List resources with details\n" "If SECTION is given, only list resources in this section\n" @@ -2400,15 +2424,15 @@ msgstr "" "Falls PFAD angegeben ist, nur die betreffenden Ressourcen auflisten\n" "Details enthalten Sektion, Größe und Kompression" -#: ../gio/gresource-tool.c:516 +#: ../gio/gresource-tool.c:519 msgid "Extract a resource file to stdout" msgstr "Eine Ressourcendatei in stdout auspacken" -#: ../gio/gresource-tool.c:517 +#: ../gio/gresource-tool.c:520 msgid "FILE PATH" msgstr "DATEIPFAD" -#: ../gio/gresource-tool.c:531 +#: ../gio/gresource-tool.c:534 msgid "" "Usage:\n" " gresource [--section SECTION] COMMAND [ARGS...]\n" @@ -2436,7 +2460,7 @@ msgstr "" "Rufen Sie »gresource help BEFEHL« auf, um detaillierte Hilfe zu erhalten.\n" "\n" -#: ../gio/gresource-tool.c:545 +#: ../gio/gresource-tool.c:548 #, c-format msgid "" "Usage:\n" @@ -2451,20 +2475,20 @@ msgstr "" "%s\n" "\n" -#: ../gio/gresource-tool.c:552 +#: ../gio/gresource-tool.c:555 msgid " SECTION An (optional) elf section name\n" msgstr " SEKTION Ein (optionaler) Name einer ELF-Sektion\n" -#: ../gio/gresource-tool.c:556 ../gio/gsettings-tool.c:648 +#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:639 msgid " COMMAND The (optional) command to explain\n" msgstr " BEFEHL Der (optionale) zu erklärende Befehl\n" -#: ../gio/gresource-tool.c:562 +#: ../gio/gresource-tool.c:565 msgid " FILE An elf file (a binary or a shared library)\n" msgstr "" " DATEI Eine ELF-Datei (ein Binary oder eine gemeinsame Bibliothek)\n" -#: ../gio/gresource-tool.c:565 +#: ../gio/gresource-tool.c:568 msgid "" " FILE An elf file (a binary or a shared library)\n" " or a compiled resource file\n" @@ -2472,24 +2496,25 @@ msgstr "" " DATEI Eine ELF-Datei (ein Binary oder eine gemeinsame Bibliothek)\n" " oder eine kompilierte Ressourcendatei\n" -#: ../gio/gresource-tool.c:569 +#: ../gio/gresource-tool.c:572 msgid "[PATH]" msgstr "[PFAD]" -#: ../gio/gresource-tool.c:571 +#: ../gio/gresource-tool.c:574 msgid " PATH An (optional) resource path (may be partial)\n" msgstr "" " PFAD Ein (optionaler) Ressourcenpfad (kann unvollständig sein)\n" -#: ../gio/gresource-tool.c:572 +#: ../gio/gresource-tool.c:575 msgid "PATH" msgstr "PFAD" -#: ../gio/gresource-tool.c:574 +#: ../gio/gresource-tool.c:577 msgid " PATH A resource path\n" msgstr " PFAD Ein Ressourcenpfad\n" #: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72 +#: ../gio/gsettings-tool.c:830 #, c-format msgid "No such schema '%s'\n" msgstr "Keine derartiges Schema »%s«\n" @@ -2526,38 +2551,38 @@ msgid "Path must not contain two adjacent slashes (//)\n" msgstr "" "Pfad darf nicht zwei aufeinander folgende Schrägstriche enthalten (//)\n" -#: ../gio/gsettings-tool.c:490 +#: ../gio/gsettings-tool.c:481 #, c-format msgid "The provided value is outside of the valid range\n" msgstr "Der angegebene Wert liegt außerhalb des gültigen Bereichs\n" -#: ../gio/gsettings-tool.c:497 +#: ../gio/gsettings-tool.c:488 #, c-format msgid "The key is not writable\n" msgstr "Der Schlüssel ist nicht schreibbar\n" -#: ../gio/gsettings-tool.c:533 +#: ../gio/gsettings-tool.c:524 msgid "List the installed (non-relocatable) schemas" msgstr "Installierte (nicht verschiebbare) Schemata auflisten" -#: ../gio/gsettings-tool.c:539 +#: ../gio/gsettings-tool.c:530 msgid "List the installed relocatable schemas" msgstr "Installierte (verschiebbare) Schemata auflisten" -#: ../gio/gsettings-tool.c:545 +#: ../gio/gsettings-tool.c:536 msgid "List the keys in SCHEMA" msgstr "Schlüssel in SCHEMA auflisten" -#: ../gio/gsettings-tool.c:546 ../gio/gsettings-tool.c:552 -#: ../gio/gsettings-tool.c:589 +#: ../gio/gsettings-tool.c:537 ../gio/gsettings-tool.c:543 +#: ../gio/gsettings-tool.c:580 msgid "SCHEMA[:PATH]" msgstr "SCHEMA[:PFAD]" -#: ../gio/gsettings-tool.c:551 +#: ../gio/gsettings-tool.c:542 msgid "List the children of SCHEMA" msgstr "Unterelemente von SCHEMA auflisten" -#: ../gio/gsettings-tool.c:557 +#: ../gio/gsettings-tool.c:548 msgid "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" @@ -2565,44 +2590,44 @@ msgstr "" "Schlüssel und Werte rekursiv auflisten\n" "Falls kein Schema angegeben, alle Schlüssel auflisten\n" -#: ../gio/gsettings-tool.c:559 +#: ../gio/gsettings-tool.c:550 msgid "[SCHEMA[:PATH]]" msgstr "[SCHEMA[:PFAD]]" -#: ../gio/gsettings-tool.c:564 +#: ../gio/gsettings-tool.c:555 msgid "Get the value of KEY" msgstr "Den Wert von SCHLÜSSEL ermitteln" -#: ../gio/gsettings-tool.c:565 ../gio/gsettings-tool.c:571 -#: ../gio/gsettings-tool.c:583 ../gio/gsettings-tool.c:595 +#: ../gio/gsettings-tool.c:556 ../gio/gsettings-tool.c:562 +#: ../gio/gsettings-tool.c:574 ../gio/gsettings-tool.c:586 msgid "SCHEMA[:PATH] KEY" msgstr "SCHEMA[:PFAD] SCHLÜSSEL" -#: ../gio/gsettings-tool.c:570 +#: ../gio/gsettings-tool.c:561 msgid "Query the range of valid values for KEY" msgstr "Den Bereich gültiger Werte für SCHLÜSSEL abfragen" -#: ../gio/gsettings-tool.c:576 +#: ../gio/gsettings-tool.c:567 msgid "Set the value of KEY to VALUE" msgstr "Den Wert von SCHLÜSSEL auf WERT setzen" -#: ../gio/gsettings-tool.c:577 +#: ../gio/gsettings-tool.c:568 msgid "SCHEMA[:PATH] KEY VALUE" msgstr "SCHEMA[:PFAD] SCHLÜSSEL WERT" -#: ../gio/gsettings-tool.c:582 +#: ../gio/gsettings-tool.c:573 msgid "Reset KEY to its default value" msgstr "SCHLÜSSEL auf Vorgabewert setzen" -#: ../gio/gsettings-tool.c:588 +#: ../gio/gsettings-tool.c:579 msgid "Reset all keys in SCHEMA to their defaults" msgstr "Alle Schlüssel in SCHEMA auf deren Vorgaben zurücksetzen" -#: ../gio/gsettings-tool.c:594 +#: ../gio/gsettings-tool.c:585 msgid "Check if KEY is writable" msgstr "Prüfen, ob SCHLÜSSEL schreibgeschützt ist" -#: ../gio/gsettings-tool.c:600 +#: ../gio/gsettings-tool.c:591 msgid "" "Monitor KEY for changes.\n" "If no KEY is specified, monitor all keys in SCHEMA.\n" @@ -2613,11 +2638,11 @@ msgstr "" "in SCHEMA überwacht.\n" "Drücken Sie ^C, um die Überwachung zu beenden.\n" -#: ../gio/gsettings-tool.c:603 +#: ../gio/gsettings-tool.c:594 msgid "SCHEMA[:PATH] [KEY]" msgstr "SCHEMA[:PFAD] [SCHLÜSSEL]" -#: ../gio/gsettings-tool.c:615 +#: ../gio/gsettings-tool.c:606 msgid "" "Usage:\n" " gsettings --version\n" @@ -2650,7 +2675,7 @@ msgstr "" " list-schemas Installierte Schemata auflisten\n" " list-relocatable-schemas Verschiebbare Schemata auflisten\n" " list-keys Schlüssel in einem Schema auflisten\n" -" list-children Unterlemente eines Schemas auflisten\n" +" list-children Unterelemente eines Schemas auflisten\n" " list-recursively Schlüssel und Werte rekursiv auflisten\n" " range Bereich eines Schlüssels abfragen\n" " get Wert eines Schlüssels ermitteln\n" @@ -2665,7 +2690,7 @@ msgstr "" "erhalten.\n" "\n" -#: ../gio/gsettings-tool.c:638 +#: ../gio/gsettings-tool.c:629 #, c-format msgid "" "Usage:\n" @@ -2680,11 +2705,11 @@ msgstr "" "%s\n" "\n" -#: ../gio/gsettings-tool.c:644 +#: ../gio/gsettings-tool.c:635 msgid " SCHEMADIR A directory to search for additional schemas\n" msgstr " SCHEMADIR Ein Ordner zum Suchen nach zusätzlichen Schemas\n" -#: ../gio/gsettings-tool.c:652 +#: ../gio/gsettings-tool.c:643 msgid "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" @@ -2692,160 +2717,180 @@ msgstr "" " SCHEMA Die Kennung des Schemas\n" " SCHLÜSSEL Der Name des Schlüssels\n" -#: ../gio/gsettings-tool.c:657 +#: ../gio/gsettings-tool.c:648 msgid " KEY The (optional) key within the schema\n" msgstr " SCHLÜSSEL Der (optionale) Schlüssel innerhalb des Schemas\n" -#: ../gio/gsettings-tool.c:661 +#: ../gio/gsettings-tool.c:652 msgid " KEY The key within the schema\n" msgstr " SCHLÜSSEL Der Schlüssel innerhalb des Schemas\n" -#: ../gio/gsettings-tool.c:665 +#: ../gio/gsettings-tool.c:656 msgid " VALUE The value to set\n" msgstr " WERT Der zu setzende Wert\n" -#: ../gio/gsettings-tool.c:720 +#: ../gio/gsettings-tool.c:711 #, c-format msgid "Could not load schemas from %s: %s\n" msgstr "Schemata von »%s« konnten nicht geladen werden: %s\n" -#: ../gio/gsettings-tool.c:782 +#: ../gio/gsettings-tool.c:723 +#, c-format +msgid "No schemas installed\n" +msgstr "Keine Schemata installiert\n" + +#: ../gio/gsettings-tool.c:788 #, c-format msgid "Empty schema name given\n" msgstr "Leerer Schema-Name wurde angegeben\n" -#: ../gio/gsettings-tool.c:811 +#: ../gio/gsettings-tool.c:843 #, c-format msgid "No such key '%s'\n" msgstr "Keine derartiger Schlüssel »%s«\n" -#: ../gio/gsocket.c:271 +#: ../gio/gsocket.c:364 msgid "Invalid socket, not initialized" msgstr "Ungültiger Socket, wurde nicht initialisiert" -#: ../gio/gsocket.c:278 +#: ../gio/gsocket.c:371 #, c-format msgid "Invalid socket, initialization failed due to: %s" msgstr "Ungültiger Socket, Initialisierung schlug fehl wegen: %s" -#: ../gio/gsocket.c:286 +#: ../gio/gsocket.c:379 msgid "Socket is already closed" msgstr "Der Socket ist bereits geschlossen" -#: ../gio/gsocket.c:301 ../gio/gsocket.c:3627 ../gio/gsocket.c:3682 +#: ../gio/gsocket.c:394 ../gio/gsocket.c:2751 ../gio/gsocket.c:3896 +#: ../gio/gsocket.c:3951 msgid "Socket I/O timed out" msgstr "Zeitüberschreitung bei Ein-/Ausgabeoperation des Sockets" -#: ../gio/gsocket.c:448 +#: ../gio/gsocket.c:526 #, c-format msgid "creating GSocket from fd: %s" msgstr "GSocket wird erstellt von Dateideskriptor: %s" -#: ../gio/gsocket.c:476 ../gio/gsocket.c:530 ../gio/gsocket.c:537 +#: ../gio/gsocket.c:554 ../gio/gsocket.c:608 ../gio/gsocket.c:615 #, c-format msgid "Unable to create socket: %s" msgstr "Socket kann nicht angelegt werden: %s" -#: ../gio/gsocket.c:530 +#: ../gio/gsocket.c:608 msgid "Unknown family was specified" msgstr "Eine unbekannte Familie wurde angegeben" -#: ../gio/gsocket.c:537 +#: ../gio/gsocket.c:615 msgid "Unknown protocol was specified" msgstr "Ein unbekanntes Protokoll wurde angegeben" -#: ../gio/gsocket.c:1727 +#: ../gio/gsocket.c:1104 +#, c-format +msgid "Cannot use datagram operations on a non-datagram socket." +msgstr "" +"Datagramm-Operationen können nicht auf einem Nicht-Datagramm-Socket " +"ausgeführt werden." + +#: ../gio/gsocket.c:1121 +#, c-format +msgid "Cannot use datagram operations on a socket with a timeout set." +msgstr "" +"Datagramm-Operationen können nicht auf einem Socket mit gesetzter " +"Zeitüberschreitung ausgeführt werden." + +#: ../gio/gsocket.c:1925 #, c-format msgid "could not get local address: %s" msgstr "Lokale Adresse konnte nicht gelesen werden: %s" -#: ../gio/gsocket.c:1770 +#: ../gio/gsocket.c:1968 #, c-format msgid "could not get remote address: %s" msgstr "Entfernte Adresse konnte nicht gelesen werden: %s" -#: ../gio/gsocket.c:1831 +#: ../gio/gsocket.c:2034 #, c-format msgid "could not listen: %s" msgstr "Es konnte nicht gelauscht werden: %s" -#: ../gio/gsocket.c:1930 +#: ../gio/gsocket.c:2133 #, c-format msgid "Error binding to address: %s" msgstr "Fehler beim Binden an Adresse: %s" -#: ../gio/gsocket.c:2045 ../gio/gsocket.c:2082 +#: ../gio/gsocket.c:2248 ../gio/gsocket.c:2285 #, c-format msgid "Error joining multicast group: %s" msgstr "Fehler beim Beitreten zur Multicast-Gruppe: %s" -#: ../gio/gsocket.c:2046 ../gio/gsocket.c:2083 +#: ../gio/gsocket.c:2249 ../gio/gsocket.c:2286 #, c-format msgid "Error leaving multicast group: %s" msgstr "Fehler beim Verlassen der Multicast-Gruppe: %s" -#: ../gio/gsocket.c:2047 +#: ../gio/gsocket.c:2250 msgid "No support for source-specific multicast" msgstr "Quellen-spezifisches Multicast wird nicht unterstützt" -#: ../gio/gsocket.c:2269 +#: ../gio/gsocket.c:2470 #, c-format msgid "Error accepting connection: %s" msgstr "Fehler bei Annahme der Verbindung: %s" -#: ../gio/gsocket.c:2392 +#: ../gio/gsocket.c:2593 msgid "Connection in progress" msgstr "Verbindungsvorgang läuft" -#: ../gio/gsocket.c:2442 +#: ../gio/gsocket.c:2644 msgid "Unable to get pending error: " msgstr "Ausstehender Fehler konnte nicht erhalten werden: " -#: ../gio/gsocket.c:2645 +#: ../gio/gsocket.c:2816 #, c-format msgid "Error receiving data: %s" msgstr "Fehler beim Erhalt von Daten: %s" -#: ../gio/gsocket.c:2820 +#: ../gio/gsocket.c:3013 #, c-format msgid "Error sending data: %s" msgstr "Fehler beim Senden von Daten: %s" -#: ../gio/gsocket.c:2934 +#: ../gio/gsocket.c:3200 #, c-format msgid "Unable to shutdown socket: %s" msgstr "Socket kann nicht heruntergefahren werden: %s" -#: ../gio/gsocket.c:3013 +#: ../gio/gsocket.c:3281 #, c-format msgid "Error closing socket: %s" msgstr "Fehler beim Schließen des Sockets: %s" -#: ../gio/gsocket.c:3620 +#: ../gio/gsocket.c:3889 #, c-format msgid "Waiting for socket condition: %s" msgstr "Es wird auf eine Socket-Bedingung gewartet: %s" -#: ../gio/gsocket.c:3907 ../gio/gsocket.c:3990 ../gio/gsocket.c:4218 +#: ../gio/gsocket.c:4361 ../gio/gsocket.c:4441 ../gio/gsocket.c:4619 #, c-format msgid "Error sending message: %s" msgstr "Fehler beim Senden der Nachricht: %s" -#: ../gio/gsocket.c:3932 +#: ../gio/gsocket.c:4385 msgid "GSocketControlMessage not supported on Windows" msgstr "GSocketControlMessage wird unter Windows nicht unterstützt" -#: ../gio/gsocket.c:4546 ../gio/gsocket.c:4684 +#: ../gio/gsocket.c:4840 ../gio/gsocket.c:4913 ../gio/gsocket.c:5140 #, c-format msgid "Error receiving message: %s" msgstr "Fehler beim Empfang der Nachricht: %s" -#: ../gio/gsocket.c:4806 +#: ../gio/gsocket.c:5412 #, c-format msgid "Unable to read socket credentials: %s" msgstr "Socket-Berechtigungen konnten nicht gelesen werden: %s" -#: ../gio/gsocket.c:4815 +#: ../gio/gsocket.c:5421 msgid "g_socket_get_credentials not implemented for this OS" msgstr "" "g_socket_get_credentials ist für dieses Betriebssystem nicht implementiert" @@ -2877,11 +2922,11 @@ msgstr "Nicht-TCP-Verbindung über Proxy wird nicht unterstützt." msgid "Proxy protocol '%s' is not supported." msgstr "Proxy-Protokoll »%s« wird nicht unterstützt." -#: ../gio/gsocketlistener.c:188 +#: ../gio/gsocketlistener.c:218 msgid "Listener is already closed" msgstr "Lauscher ist bereits geschlossen" -#: ../gio/gsocketlistener.c:234 +#: ../gio/gsocketlistener.c:264 msgid "Added socket is closed" msgstr "Der hinzugefügte Socket ist geschlossen" @@ -3054,7 +3099,7 @@ msgstr[1] "1 Kontrollnachricht wird erwartet, %d wurden erhalten" #: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:573 msgid "Unexpected type of ancillary data" -msgstr "Unerwartete Art von Zustzdaten" +msgstr "Unerwartete Art von Zusatzdaten" #: ../gio/gunixconnection.c:200 #, c-format @@ -3099,12 +3144,13 @@ msgstr "Kontrollnachricht wurde nicht erwartet, %d wurde erhalten" msgid "Error while disabling SO_PASSCRED: %s" msgstr "Fehler beim Deaktivieren von SO_PASSCRED: %s" -#: ../gio/gunixinputstream.c:370 ../gio/gunixinputstream.c:391 +#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390 #, c-format msgid "Error reading from file descriptor: %s" msgstr "Fehler beim Lesen aus dem Dateideskriptor: %s" -#: ../gio/gunixinputstream.c:424 ../gio/gunixoutputstream.c:410 +#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409 +#: ../gio/gwin32inputstream.c:217 ../gio/gwin32outputstream.c:204 #, c-format msgid "Error closing file descriptor: %s" msgstr "Fehler beim Schließen des Dateideskriptors: %s" @@ -3113,12 +3159,12 @@ msgstr "Fehler beim Schließen des Dateideskriptors: %s" msgid "Filesystem root" msgstr "Wurzelordner des Dateisystems" -#: ../gio/gunixoutputstream.c:356 ../gio/gunixoutputstream.c:377 +#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376 #, c-format msgid "Error writing to file descriptor: %s" msgstr "Fehler beim Schreiben in den Dateideskriptor: %s" -#: ../gio/gunixsocketaddress.c:232 +#: ../gio/gunixsocketaddress.c:239 msgid "Abstract UNIX domain socket addresses not supported on this system" msgstr "" "Abstrakte Unix Domänen-Socket-Adresse wird auf diesem System nicht " @@ -3135,34 +3181,17 @@ msgstr "Datenträger unterstützt Auswerfen nicht" msgid "volume doesn't implement eject or eject_with_operation" msgstr "Datenträger unterstützt weder Auswerfen noch »eject_with_operation«" -#: ../gio/gwin32appinfo.c:274 -msgid "Can't find application" -msgstr "Anwendung kann nicht gefunden werden" - -#: ../gio/gwin32appinfo.c:303 -#, c-format -msgid "Error launching application: %s" -msgstr "Fehler beim Starten der Anwendung: %s" - -#: ../gio/gwin32appinfo.c:378 -msgid "association changes not supported on win32" -msgstr "Änderungen von Assoziationen unter win32 nicht unterstützt" - -#: ../gio/gwin32appinfo.c:390 -msgid "Association creation not supported on win32" -msgstr "Erstellen von Assoziationen unter win32 nicht unterstützt" - -#: ../gio/gwin32inputstream.c:344 +#: ../gio/gwin32inputstream.c:185 #, c-format msgid "Error reading from handle: %s" msgstr "Fehler beim Lesen aus dem Handler: %s" -#: ../gio/gwin32inputstream.c:388 ../gio/gwin32outputstream.c:375 +#: ../gio/gwin32inputstream.c:232 ../gio/gwin32outputstream.c:219 #, c-format msgid "Error closing handle: %s" msgstr "Fehler beim Schließen des Handlers: %s" -#: ../gio/gwin32outputstream.c:331 +#: ../gio/gwin32outputstream.c:172 #, c-format msgid "Error writing to handle: %s" msgstr "Fehler beim Schreiben in das Handle: %s" @@ -3285,8 +3314,8 @@ msgid "Failed to expand exec line '%s' with URI '%s'" msgstr "" "Die Befehlszeile »%s« konnte nicht mit der Adresse »%s« verknüpft werden." -#: ../glib/gconvert.c:477 ../glib/gutf8.c:833 ../glib/gutf8.c:1044 -#: ../glib/gutf8.c:1181 ../glib/gutf8.c:1285 +#: ../glib/gconvert.c:477 ../glib/gutf8.c:849 ../glib/gutf8.c:1061 +#: ../glib/gutf8.c:1198 ../glib/gutf8.c:1302 msgid "Partial character sequence at end of input" msgstr "Bruchstückhafte Zeichenfolge am Eingabeende" @@ -3295,39 +3324,39 @@ msgstr "Bruchstückhafte Zeichenfolge am Eingabeende" msgid "Cannot convert fallback '%s' to codeset '%s'" msgstr "Notnagel »%s« kann nicht in Kodierung »%s« umgewandelt werden" -#: ../glib/gconvert.c:1566 +#: ../glib/gconvert.c:1567 #, c-format msgid "The URI '%s' is not an absolute URI using the \"file\" scheme" msgstr "" "Die Adresse »%s« ist keine absolute Adresse, die das »file«-Schema verwendet" -#: ../glib/gconvert.c:1576 +#: ../glib/gconvert.c:1577 #, c-format msgid "The local file URI '%s' may not include a '#'" msgstr "Die lokale Adresse »%s« darf kein »#« enthalten" -#: ../glib/gconvert.c:1593 +#: ../glib/gconvert.c:1594 #, c-format msgid "The URI '%s' is invalid" msgstr "Die Adresse »%s« ist ungültig" -#: ../glib/gconvert.c:1605 +#: ../glib/gconvert.c:1606 #, c-format msgid "The hostname of the URI '%s' is invalid" msgstr "Der Rechnername der Adresse »%s« ist ungültig" # CHECK -#: ../glib/gconvert.c:1621 +#: ../glib/gconvert.c:1622 #, c-format msgid "The URI '%s' contains invalidly escaped characters" msgstr "Die Adresse »%s« enthält ungültige Escape-Zeichen" -#: ../glib/gconvert.c:1716 +#: ../glib/gconvert.c:1717 #, c-format msgid "The pathname '%s' is not an absolute path" msgstr "Der Pfadname »%s« ist kein absoluter Pfad" -#: ../glib/gconvert.c:1726 +#: ../glib/gconvert.c:1727 msgid "Invalid hostname" msgstr "Ungültiger Rechnername" @@ -3650,25 +3679,25 @@ msgstr "Die symbolische Verknüpfung »%s« konnte nicht gelesen werden: %s" msgid "Symbolic links not supported" msgstr "Symbolische Verknüpfungen nicht unterstützt" -#: ../glib/giochannel.c:1389 +#: ../glib/giochannel.c:1388 #, c-format msgid "Could not open converter from '%s' to '%s': %s" msgstr "Konverter von »%s« in »%s« konnte nicht geöffnet werden: %s" -#: ../glib/giochannel.c:1734 +#: ../glib/giochannel.c:1733 msgid "Can't do a raw read in g_io_channel_read_line_string" msgstr "Raw-read in g_io_channel_read_line_string nicht möglich" -#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039 -#: ../glib/giochannel.c:2126 +#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038 +#: ../glib/giochannel.c:2125 msgid "Leftover unconverted data in read buffer" msgstr "Nicht konvertierte Daten befinden sich noch im Lesepuffer " -#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939 +#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938 msgid "Channel terminates in a partial character" msgstr "Kanal endet mit einem Teilzeichen" -#: ../glib/giochannel.c:1925 +#: ../glib/giochannel.c:1924 msgid "Can't do a raw read in g_io_channel_read_to_end" msgstr "Raw-read in g_io_channel_read_to_end nicht möglich" @@ -3708,8 +3737,8 @@ msgid "Key file contains unsupported encoding '%s'" msgstr "Die Schlüsselwertedatei enthält die nicht unterstützte Kodierung »%s«" #: ../glib/gkeyfile.c:1548 ../glib/gkeyfile.c:1721 ../glib/gkeyfile.c:3099 -#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3288 ../glib/gkeyfile.c:3418 -#: ../glib/gkeyfile.c:3560 ../glib/gkeyfile.c:3789 ../glib/gkeyfile.c:3856 +#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3292 ../glib/gkeyfile.c:3422 +#: ../glib/gkeyfile.c:3566 ../glib/gkeyfile.c:3795 ../glib/gkeyfile.c:3862 #, c-format msgid "Key file does not have group '%s'" msgstr "Die Schlüsselwertedatei enthält nicht die Gruppe »%s«" @@ -3750,32 +3779,32 @@ msgstr "" "Der Schlüssel »%s« in der Gruppe »%s« enthält den Wert »%s«, obwohl %s " "erwartet wurde" -#: ../glib/gkeyfile.c:4096 +#: ../glib/gkeyfile.c:4102 msgid "Key file contains escape character at end of line" msgstr "Die Schlüsselwertedatei enthält ein Escape-Zeichen am Zeilenende" # CHECK -#: ../glib/gkeyfile.c:4118 +#: ../glib/gkeyfile.c:4124 #, c-format msgid "Key file contains invalid escape sequence '%s'" msgstr "Die Schlüsselwertedatei enthält das ungültige Escape-Zeichen »%s«" -#: ../glib/gkeyfile.c:4260 +#: ../glib/gkeyfile.c:4266 #, c-format msgid "Value '%s' cannot be interpreted as a number." msgstr "Der Wert »%s« konnte nicht als Zahl interpretiert werden." -#: ../glib/gkeyfile.c:4274 +#: ../glib/gkeyfile.c:4280 #, c-format msgid "Integer value '%s' out of range" msgstr "Ganzzahliger Wert »%s« ist außerhalb des Wertebereiches." -#: ../glib/gkeyfile.c:4307 +#: ../glib/gkeyfile.c:4313 #, c-format msgid "Value '%s' cannot be interpreted as a float number." msgstr "Der Wert »%s« konnte nicht als Gleitkommazahl interpretiert werden." -#: ../glib/gkeyfile.c:4331 +#: ../glib/gkeyfile.c:4350 #, c-format msgid "Value '%s' cannot be interpreted as a boolean." msgstr "" @@ -3823,7 +3852,7 @@ msgstr "»%s« ist kein gültiger Name: »%c«" msgid "Error on line %d: %s" msgstr "Fehler in Zeile %d: %s" -#: ../glib/gmarkup.c:683 +#: ../glib/gmarkup.c:676 #, c-format msgid "" "Failed to parse '%-.*s', which should have been a digit inside a character " @@ -3832,7 +3861,7 @@ msgstr "" "»%-.*s«, was eine Zahl in einer Zeichenreferenz (wie ê) sein sollte, " "konnte nicht analysiert werden - vielleicht ist die Zahl zu groß" -#: ../glib/gmarkup.c:695 +#: ../glib/gmarkup.c:688 msgid "" "Character reference did not end with a semicolon; most likely you used an " "ampersand character without intending to start an entity - escape ampersand " @@ -3842,24 +3871,24 @@ msgstr "" "&-Zeichen benutzt, ohne eine Entität beginnen zu wollen - umschreiben Sie " "das »&« als &" -#: ../glib/gmarkup.c:721 +#: ../glib/gmarkup.c:714 #, c-format msgid "Character reference '%-.*s' does not encode a permitted character" msgstr "Zeichenreferenz »%-.*s« kodiert kein zulässiges Zeichen" -#: ../glib/gmarkup.c:759 +#: ../glib/gmarkup.c:752 msgid "" "Empty entity '&;' seen; valid entities are: & " < > '" msgstr "" "Leere Entität »&;« gefunden; gültige Entitäten sind & " < > " "'" -#: ../glib/gmarkup.c:767 +#: ../glib/gmarkup.c:760 #, c-format msgid "Entity name '%-.*s' is not known" msgstr "Entitätenname »%-.*s« ist unbekannt" -#: ../glib/gmarkup.c:772 +#: ../glib/gmarkup.c:765 msgid "" "Entity did not end with a semicolon; most likely you used an ampersand " "character without intending to start an entity - escape ampersand as &" @@ -3868,11 +3897,11 @@ msgstr "" "Zeichen benutzt, ohne eine Entität beginnen zu wollen - umschreiben Sie das " "»&« als &" -#: ../glib/gmarkup.c:1178 +#: ../glib/gmarkup.c:1171 msgid "Document must begin with an element (e.g. )" msgstr "Dokument muss mit einem Element beginnen (e.g. )" -#: ../glib/gmarkup.c:1218 +#: ../glib/gmarkup.c:1211 #, c-format msgid "" "'%s' is not a valid character following a '<' character; it may not begin an " @@ -3881,7 +3910,7 @@ msgstr "" "»%s« ist kein gültiges Zeichen nach einem »<«-Zeichen; es darf keinen " "Elementnamen beginnen" -#: ../glib/gmarkup.c:1260 +#: ../glib/gmarkup.c:1253 #, c-format msgid "" "Odd character '%s', expected a '>' character to end the empty-element tag " @@ -3890,7 +3919,7 @@ msgstr "" "Seltsames Zeichen »%s«, »>« erwartet um Start-Tag des leeren Elements »%s« " "abzuschließen" -#: ../glib/gmarkup.c:1341 +#: ../glib/gmarkup.c:1334 #, c-format msgid "" "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" @@ -3898,7 +3927,7 @@ msgstr "" "Seltsames Zeichen »%s«, »=« wird nach dem Attributnamen »%s« des Elements " "»%s« erwartet" -#: ../glib/gmarkup.c:1382 +#: ../glib/gmarkup.c:1375 #, c-format msgid "" "Odd character '%s', expected a '>' or '/' character to end the start tag of " @@ -3909,7 +3938,7 @@ msgstr "" "»/« erwartet, um das Start-Tag des Elements »%s« abzuschließen; vielleicht " "haben Sie ein ungültiges Zeichen in einem Attributnamen benutzt" -#: ../glib/gmarkup.c:1426 +#: ../glib/gmarkup.c:1419 #, c-format msgid "" "Odd character '%s', expected an open quote mark after the equals sign when " @@ -3919,7 +3948,7 @@ msgstr "" "Elements »%s« wurde ein Anführungszeichen nach dem Gleichheitszeichen " "erwartet" -#: ../glib/gmarkup.c:1559 +#: ../glib/gmarkup.c:1552 #, c-format msgid "" "'%s' is not a valid character following the characters '«" -#: ../glib/gmarkup.c:1606 +#: ../glib/gmarkup.c:1599 #, c-format msgid "Element '%s' was closed, no element is currently open" msgstr "Element »%s« wurde geschlossen, kein Element ist derzeit offen" -#: ../glib/gmarkup.c:1615 +#: ../glib/gmarkup.c:1608 #, c-format msgid "Element '%s' was closed, but the currently open element is '%s'" msgstr "" "Element »%s« wurde geschlossen, aber das derzeit offene Element ist »%s«" -#: ../glib/gmarkup.c:1768 +#: ../glib/gmarkup.c:1761 msgid "Document was empty or contained only whitespace" msgstr "Dokument ist leer oder enthält nur Leerraum" -#: ../glib/gmarkup.c:1782 +#: ../glib/gmarkup.c:1775 msgid "Document ended unexpectedly just after an open angle bracket '<'" msgstr "Dokument endete unerwartet nach einer offenen spitzen Klammer »<«" -#: ../glib/gmarkup.c:1790 ../glib/gmarkup.c:1835 +#: ../glib/gmarkup.c:1783 ../glib/gmarkup.c:1828 #, c-format msgid "" "Document ended unexpectedly with elements still open - '%s' was the last " @@ -3965,7 +3994,7 @@ msgstr "" "Dokument endete unerwartet mit noch offenen Elementen - »%s« war das letzte " "offene Element" -#: ../glib/gmarkup.c:1798 +#: ../glib/gmarkup.c:1791 #, c-format msgid "" "Document ended unexpectedly, expected to see a close angle bracket ending " @@ -3974,19 +4003,19 @@ msgstr "" "Dokument endete unerwartet, es wurde eine spitze Klammer »>«, die das Tag <" "%s/> schließt, erwartet" -#: ../glib/gmarkup.c:1804 +#: ../glib/gmarkup.c:1797 msgid "Document ended unexpectedly inside an element name" msgstr "Dokument endete unerwartet innerhalb eines Elementnamens" -#: ../glib/gmarkup.c:1810 +#: ../glib/gmarkup.c:1803 msgid "Document ended unexpectedly inside an attribute name" msgstr "Dokument endete unerwartet innerhalb eines Attributnamens" -#: ../glib/gmarkup.c:1815 +#: ../glib/gmarkup.c:1808 msgid "Document ended unexpectedly inside an element-opening tag." msgstr "Dokument endete unerwartet innerhalb eines Element-öffnenden Tags." -#: ../glib/gmarkup.c:1821 +#: ../glib/gmarkup.c:1814 msgid "" "Document ended unexpectedly after the equals sign following an attribute " "name; no attribute value" @@ -3994,78 +4023,82 @@ msgstr "" "Dokument endete unerwartet nach dem Gleichheitszeichen, das einem " "Attributnamen folgt; kein Attributwert" -#: ../glib/gmarkup.c:1828 +#: ../glib/gmarkup.c:1821 msgid "Document ended unexpectedly while inside an attribute value" msgstr "Dokument endete unerwartet innerhalb eines Attributwertes" -#: ../glib/gmarkup.c:1844 +#: ../glib/gmarkup.c:1837 #, c-format msgid "Document ended unexpectedly inside the close tag for element '%s'" msgstr "" "Dokument endete unerwartet innerhalb eines schließenden Tags für das Element " "»%s«" -#: ../glib/gmarkup.c:1850 +#: ../glib/gmarkup.c:1843 msgid "Document ended unexpectedly inside a comment or processing instruction" msgstr "" "Dokument endete unerwartet innerhalb eines Kommentars oder " "Verarbeitungsanweisung" -#: ../glib/goption.c:858 +#: ../glib/goption.c:857 msgid "Usage:" msgstr "Aufruf:" -#: ../glib/goption.c:858 +#: ../glib/goption.c:861 msgid "[OPTION...]" msgstr "[OPTION …]" -#: ../glib/goption.c:974 +#: ../glib/goption.c:977 msgid "Help Options:" msgstr "Hilfeoptionen:" -#: ../glib/goption.c:975 +#: ../glib/goption.c:978 msgid "Show help options" msgstr "Hilfeoptionen anzeigen" -#: ../glib/goption.c:981 +#: ../glib/goption.c:984 msgid "Show all help options" msgstr "Alle Hilfeoptionen anzeigen" -#: ../glib/goption.c:1043 +#: ../glib/goption.c:1047 msgid "Application Options:" msgstr "Anwendungsoptionen:" -#: ../glib/goption.c:1107 ../glib/goption.c:1177 +#: ../glib/goption.c:1049 +msgid "Options:" +msgstr "Optionen:" + +#: ../glib/goption.c:1113 ../glib/goption.c:1183 #, c-format msgid "Cannot parse integer value '%s' for %s" msgstr "»%s« konnte nicht als ganzzahliger Wert für %s interpretiert werden." -#: ../glib/goption.c:1117 ../glib/goption.c:1185 +#: ../glib/goption.c:1123 ../glib/goption.c:1191 #, c-format msgid "Integer value '%s' for %s out of range" msgstr "Ganzzahliger Wert »%s« für %s ist außerhalb des Bereiches." -#: ../glib/goption.c:1142 +#: ../glib/goption.c:1148 #, c-format msgid "Cannot parse double value '%s' for %s" msgstr "»%s« konnte nicht als »double«-Wert für %s interpretiert werden." -#: ../glib/goption.c:1150 +#: ../glib/goption.c:1156 #, c-format msgid "Double value '%s' for %s out of range" msgstr "»double«-Wert »%s« für %s ist außerhalb des Bereiches." -#: ../glib/goption.c:1436 ../glib/goption.c:1515 +#: ../glib/goption.c:1442 ../glib/goption.c:1521 #, c-format msgid "Error parsing option %s" msgstr "Fehler beim Verarbeiten der Option: %s" -#: ../glib/goption.c:1546 ../glib/goption.c:1659 +#: ../glib/goption.c:1552 ../glib/goption.c:1665 #, c-format msgid "Missing argument for %s" msgstr "Für %s wird ein Argument benötigt" -#: ../glib/goption.c:2120 +#: ../glib/goption.c:2126 #, c-format msgid "Unknown option %s" msgstr "Unbekannte Option %s" @@ -4339,7 +4372,7 @@ msgstr "Ziffer erwartet nach (?+" #: ../glib/gregex.c:499 msgid "] is an invalid data character in JavaScript compatibility mode" -msgstr "] ist ein ungültiges Datenzeichen im JavaScript-Kompatibiliätsmodus" +msgstr "] ist ein ungültiges Datenzeichen im JavaScript-Kompatibilitätsmodus" #: ../glib/gregex.c:502 msgid "different names for subpatterns of the same number are not allowed" @@ -4376,73 +4409,73 @@ msgstr "Name ist zu lang in (*MARK), (*PRUNE), (*SKIP), oder (*THEN)" msgid "character value in \\u.... sequence is too large" msgstr "Zeichenwert in \\u....-Sequenz ist zu groß" -#: ../glib/gregex.c:746 ../glib/gregex.c:1915 +#: ../glib/gregex.c:746 ../glib/gregex.c:1973 #, c-format msgid "Error while matching regular expression %s: %s" msgstr "Fehler beim Anwenden des regulären Ausdrucks %s: %s" -#: ../glib/gregex.c:1312 +#: ../glib/gregex.c:1317 msgid "PCRE library is compiled without UTF8 support" -msgstr "PCRE-Bibliothek wurde ohne UTF8-Unterstützung kompilliert" +msgstr "PCRE-Bibliothek wurde ohne UTF8-Unterstützung kompiliert" -#: ../glib/gregex.c:1316 +#: ../glib/gregex.c:1321 msgid "PCRE library is compiled without UTF8 properties support" msgstr "" -"PCRE-Bibliothek wurde ohne Unterstützung für UTF8-Eigenschaften kompilliert" +"PCRE-Bibliothek wurde ohne Unterstützung für UTF8-Eigenschaften kompiliert" -#: ../glib/gregex.c:1324 +#: ../glib/gregex.c:1329 msgid "PCRE library is compiled with incompatible options" msgstr "" "PCRE-Bibliothek wurde mit Unterstützung für nicht-kompatible Optionen " "kompiliert" -#: ../glib/gregex.c:1383 -#, c-format -msgid "Error while compiling regular expression %s at char %d: %s" -msgstr "Fehler beim Kompilieren des regulären Ausdrucks %s an Zeichen %d: %s" - -#: ../glib/gregex.c:1425 +#: ../glib/gregex.c:1358 #, c-format msgid "Error while optimizing regular expression %s: %s" msgstr "Fehler beim Optimieren des regulären Ausdrucks %s: %s" -#: ../glib/gregex.c:2347 +#: ../glib/gregex.c:1438 +#, c-format +msgid "Error while compiling regular expression %s at char %d: %s" +msgstr "Fehler beim Kompilieren des regulären Ausdrucks %s an Zeichen %d: %s" + +#: ../glib/gregex.c:2409 msgid "hexadecimal digit or '}' expected" msgstr "Hexadezimalzahl oder »}« erwartet" -#: ../glib/gregex.c:2363 +#: ../glib/gregex.c:2425 msgid "hexadecimal digit expected" msgstr "Hexadezimalzahl erwartet" -#: ../glib/gregex.c:2403 +#: ../glib/gregex.c:2465 msgid "missing '<' in symbolic reference" msgstr "Fehlendes »<» in symbolischer Referenz" -#: ../glib/gregex.c:2412 +#: ../glib/gregex.c:2474 msgid "unfinished symbolic reference" msgstr "Unvollendete symbolische Referenz" -#: ../glib/gregex.c:2419 +#: ../glib/gregex.c:2481 msgid "zero-length symbolic reference" msgstr "Symbolische Referenz der Länge 0" -#: ../glib/gregex.c:2430 +#: ../glib/gregex.c:2492 msgid "digit expected" msgstr "Ziffer erwartet" -#: ../glib/gregex.c:2448 +#: ../glib/gregex.c:2510 msgid "illegal symbolic reference" msgstr "Illegale symbolische Referenz" -#: ../glib/gregex.c:2510 +#: ../glib/gregex.c:2572 msgid "stray final '\\'" msgstr "Verirrtes abschließendes »\\«" -#: ../glib/gregex.c:2514 +#: ../glib/gregex.c:2576 msgid "unknown escape sequence" msgstr "Unbekannte Escape-Sequenz" -#: ../glib/gregex.c:2524 +#: ../glib/gregex.c:2586 #, c-format msgid "Error while parsing replacement text \"%s\" at char %lu: %s" msgstr "Fehler beim Verarbeiten des Ersetzungstextes »%s« an Zeichen %lu: %s" @@ -4489,62 +4522,62 @@ msgstr "" msgid "Unexpected error in waitpid() (%s)" msgstr "Unerwarteter Fehler in waitpid() (%s)" -#: ../glib/gspawn.c:849 ../glib/gspawn-win32.c:1233 +#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233 #, c-format msgid "Child process exited with code %ld" msgstr "Der Kindprozess wurde mit Status %ld beendet" -#: ../glib/gspawn.c:857 +#: ../glib/gspawn.c:852 #, c-format msgid "Child process killed by signal %ld" msgstr "Der Kindprozess wurde mit Signal %ld beendet" -#: ../glib/gspawn.c:864 +#: ../glib/gspawn.c:859 #, c-format msgid "Child process stopped by signal %ld" msgstr "Der Kindprozess wurde mit Signal %ld beendet" -#: ../glib/gspawn.c:871 +#: ../glib/gspawn.c:866 #, c-format msgid "Child process exited abnormally" msgstr "Der Kindprozess wurde gewaltsam beendet" -#: ../glib/gspawn.c:1276 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 +#: ../glib/gspawn.c:1271 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 #, c-format msgid "Failed to read from child pipe (%s)" msgstr "Lesen aus Weiterleitung zum Kind (%s) gescheitert" -#: ../glib/gspawn.c:1346 +#: ../glib/gspawn.c:1341 #, c-format msgid "Failed to fork (%s)" msgstr "Abspalten gescheitert (%s)" -#: ../glib/gspawn.c:1495 ../glib/gspawn-win32.c:370 +#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370 #, c-format msgid "Failed to change to directory '%s' (%s)" msgstr "In Ordner »%s« (%s) konnte nicht gewechselt werden" -#: ../glib/gspawn.c:1505 +#: ../glib/gspawn.c:1500 #, c-format msgid "Failed to execute child process \"%s\" (%s)" msgstr "Kindprozess »%s« konnte nicht ausgeführt werden (%s)" -#: ../glib/gspawn.c:1515 +#: ../glib/gspawn.c:1510 #, c-format msgid "Failed to redirect output or input of child process (%s)" msgstr "Umleiten der Ausgabe oder Eingabe des Kindprozesses (%s) gescheitert" -#: ../glib/gspawn.c:1524 +#: ../glib/gspawn.c:1519 #, c-format msgid "Failed to fork child process (%s)" msgstr "Abspalten des Kindprozesses gescheitert (%s)" -#: ../glib/gspawn.c:1532 +#: ../glib/gspawn.c:1527 #, c-format msgid "Unknown error executing child process \"%s\"" msgstr "Unbekannter Fehler beim Ausführen des Kindprozesses »%s«" -#: ../glib/gspawn.c:1556 +#: ../glib/gspawn.c:1551 #, c-format msgid "Failed to read enough data from child pid pipe (%s)" msgstr "" @@ -4602,92 +4635,92 @@ msgstr "" "Unerwarteter Fehler in g_io_channel_win32_poll() beim Lesen aus dem " "Kindprozess" -#: ../glib/gutf8.c:780 +#: ../glib/gutf8.c:795 msgid "Failed to allocate memory" msgstr "Fehler beim Anfordern von Speicher" -#: ../glib/gutf8.c:912 +#: ../glib/gutf8.c:928 msgid "Character out of range for UTF-8" msgstr "Zeichen außerhalb des Bereiches für UTF-8" -#: ../glib/gutf8.c:1012 ../glib/gutf8.c:1021 ../glib/gutf8.c:1151 -#: ../glib/gutf8.c:1160 ../glib/gutf8.c:1299 ../glib/gutf8.c:1396 +#: ../glib/gutf8.c:1029 ../glib/gutf8.c:1038 ../glib/gutf8.c:1168 +#: ../glib/gutf8.c:1177 ../glib/gutf8.c:1316 ../glib/gutf8.c:1413 msgid "Invalid sequence in conversion input" msgstr "Ungültige Folge in Umwandlungseingabe" -#: ../glib/gutf8.c:1310 ../glib/gutf8.c:1407 +#: ../glib/gutf8.c:1327 ../glib/gutf8.c:1424 msgid "Character out of range for UTF-16" msgstr "Zeichen außerhalb des Bereiches für UTF-16" -#: ../glib/gutils.c:2116 ../glib/gutils.c:2143 ../glib/gutils.c:2249 +#: ../glib/gutils.c:2133 ../glib/gutils.c:2160 ../glib/gutils.c:2266 #, c-format msgid "%u byte" msgid_plural "%u bytes" msgstr[0] "%u Byte" msgstr[1] "%u Bytes" -#: ../glib/gutils.c:2122 +#: ../glib/gutils.c:2139 #, c-format msgid "%.1f KiB" msgstr "%.1f kiB" -#: ../glib/gutils.c:2124 +#: ../glib/gutils.c:2141 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" -#: ../glib/gutils.c:2127 +#: ../glib/gutils.c:2144 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" -#: ../glib/gutils.c:2130 +#: ../glib/gutils.c:2147 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" -#: ../glib/gutils.c:2133 +#: ../glib/gutils.c:2150 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" -#: ../glib/gutils.c:2136 +#: ../glib/gutils.c:2153 #, c-format msgid "%.1f EiB" msgstr "%.1f EiB" -#: ../glib/gutils.c:2149 +#: ../glib/gutils.c:2166 #, c-format msgid "%.1f kB" msgstr "%.1f kB" -#: ../glib/gutils.c:2152 ../glib/gutils.c:2267 +#: ../glib/gutils.c:2169 ../glib/gutils.c:2284 #, c-format msgid "%.1f MB" msgstr "%.1f MB" -#: ../glib/gutils.c:2155 ../glib/gutils.c:2272 +#: ../glib/gutils.c:2172 ../glib/gutils.c:2289 #, c-format msgid "%.1f GB" msgstr "%.1f GB" -#: ../glib/gutils.c:2157 ../glib/gutils.c:2277 +#: ../glib/gutils.c:2174 ../glib/gutils.c:2294 #, c-format msgid "%.1f TB" msgstr "%.1f TB" -#: ../glib/gutils.c:2160 ../glib/gutils.c:2282 +#: ../glib/gutils.c:2177 ../glib/gutils.c:2299 #, c-format msgid "%.1f PB" msgstr "%.1f PB" -#: ../glib/gutils.c:2163 ../glib/gutils.c:2287 +#: ../glib/gutils.c:2180 ../glib/gutils.c:2304 #, c-format msgid "%.1f EB" msgstr "%.1f EB" #. Translators: the %s in "%s bytes" will always be replaced by a number. -#: ../glib/gutils.c:2200 +#: ../glib/gutils.c:2217 #, c-format msgid "%s byte" msgid_plural "%s bytes" @@ -4699,11 +4732,28 @@ msgstr[1] "%s Bytes" #. * compatibility. Users will not see this string unless a program is using this deprecated function. #. * Please translate as literally as possible. #. -#: ../glib/gutils.c:2262 +#: ../glib/gutils.c:2279 #, c-format msgid "%.1f KB" msgstr "%.1f KB" +#~ msgid "Unable to find default local directory monitor type" +#~ msgstr "" +#~ "Vorgegebener Überwachungstyp für lokale Ordner konnte nicht gefunden " +#~ "werden" + +#~ msgid "Can't find application" +#~ msgstr "Anwendung kann nicht gefunden werden" + +#~ msgid "Error launching application: %s" +#~ msgstr "Fehler beim Starten der Anwendung: %s" + +#~ msgid "association changes not supported on win32" +#~ msgstr "Änderungen von Assoziationen unter win32 nicht unterstützt" + +#~ msgid "Association creation not supported on win32" +#~ msgstr "Erstellen von Assoziationen unter win32 nicht unterstützt" + #~ msgid "URIs not supported" #~ msgstr "Adressen werden nicht unterstützt" diff --git a/po/dz.gmo b/po/dz.gmo new file mode 100644 index 0000000000000000000000000000000000000000..508fac62ac3d30ac38e74bd0701b7caab8a0d37e GIT binary patch literal 34875 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 Th&D4?A!~=c88y8e6Knln@E&%M literal 0 HcmV?d00001 diff --git a/po/el.gmo b/po/el.gmo new file mode 100644 index 0000000000000000000000000000000000000000..67e17ee662b361f3e8860a7debf687f36cf1f9ef GIT binary patch literal 133548 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 US{dFJzg1Q#7R_lgx-TaG7otRE82|tP literal 0 HcmV?d00001 diff --git a/po/el.po b/po/el.po index e7b62f6..526db8d 100644 --- a/po/el.po +++ b/po/el.po @@ -8,47 +8,50 @@ # Fotis Tsamis , 2009. # Michael Kotsarinis , 2011. # Dimitris Spingos (Δημήτρης Σπίγγος) , 2012. -# Dimitris Spingos (Δημήτρης Σπίγγος) , 2012, 2013, 2014. +# Dimitris Spingos (Δημήτρης Σπίγγος) , 2012, 2013, 2014, 2015. # Efstathios Iosifidis , 2015. -# msgid "" msgstr "" "Project-Id-Version: glib.HEAD\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=glib&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2015-03-11 06:50+0000\n" -"PO-Revision-Date: 2015-03-11 14:34+0200\n" +"POT-Creation-Date: 2016-03-11 07:38+0000\n" +"PO-Revision-Date: 2016-03-12 11:28+0200\n" "Last-Translator: Tom Tryfonidis \n" -"Language-Team: Greek, Modern (1453-) \n" +"Language-Team: www.gnome.gr\n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.7.4\n" +"X-Generator: Poedit 1.8.7\n" "X-Project-Style: gnome\n" -#: ../gio/gapplication.c:531 -msgid "Enter GApplication service mode (use from D-Bus service files)" -msgstr "" -"Εισαγωγή τρόπου λειτουργίας της εφαρμογής GApplication (χρήση από αρχεία " -"υπηρεσίας D-Bus)" - -#: ../gio/gapplication.c:536 +#: ../gio/gapplication.c:493 msgid "GApplication options" msgstr "Επιλογές GApplication" -#: ../gio/gapplication.c:536 +#: ../gio/gapplication.c:493 msgid "Show GApplication options" msgstr "Εμφάνιση επιλογών GApplication" +#: ../gio/gapplication.c:538 +msgid "Enter GApplication service mode (use from D-Bus service files)" +msgstr "" +"Εισαγωγή τρόπου λειτουργίας της εφαρμογής GApplication (χρήση από αρχεία " +"υπηρεσίας D-Bus)" + +#: ../gio/gapplication.c:550 +msgid "Override the application's ID" +msgstr "Αντικατάσταση αναγνωριστικού της εφαρμογής" + #: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46 -#: ../gio/gresource-tool.c:485 ../gio/gsettings-tool.c:521 +#: ../gio/gresource-tool.c:488 ../gio/gsettings-tool.c:512 msgid "Print help" msgstr "Εμφάνιση βοήθειας" -#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:486 -#: ../gio/gresource-tool.c:554 +#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:489 +#: ../gio/gresource-tool.c:557 msgid "[COMMAND]" msgstr "[ΕΝΤΟΛΗ]" @@ -56,7 +59,7 @@ msgstr "[ΕΝΤΟΛΗ]" msgid "Print version" msgstr "Εμφάνιση έκδοσης" -#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:527 +#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:518 msgid "Print version information and exit" msgstr "Προβολή πληροφοριών έκδοσης και έξοδος" @@ -120,14 +123,14 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)" msgstr "Το αναγνωριστικό εφαρμογής σε μορφή D-Bus (πχ: org.example.viewer)" #: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589 -#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:492 -#: ../gio/gresource-tool.c:558 +#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:495 +#: ../gio/gresource-tool.c:561 msgid "FILE" msgstr "ΑΡΧΕΙΟ" #: ../gio/gapplication-tool.c:72 -msgid "Optional relative or relative filenames, or URIs to open" -msgstr "Προαιρετικά ή σχετικά ονόματα αρχείων, ή URIs για άνοιγμα" +msgid "Optional relative or absolute filenames, or URIs to open" +msgstr "Προαιρετικά σχετικά ή απόλυτα ονόματα αρχείων, ή URIs για άνοιγμα" #: ../gio/gapplication-tool.c:73 msgid "ACTION" @@ -145,8 +148,8 @@ msgstr "ΠΑΡΑΜΕΤΡΟΣ" msgid "Optional parameter to the action invocation, in GVariant format" msgstr "Προαιρετική παράμετρος στην κλήση ενέργειας, στη μορφή GVariant" -#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:523 -#: ../gio/gsettings-tool.c:607 +#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526 +#: ../gio/gsettings-tool.c:598 #, c-format msgid "" "Unknown command %s\n" @@ -159,8 +162,8 @@ msgstr "" msgid "Usage:\n" msgstr "Χρήση:\n" -#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:548 -#: ../gio/gsettings-tool.c:641 +#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551 +#: ../gio/gsettings-tool.c:632 msgid "Arguments:\n" msgstr "Ορίσματα:\n" @@ -265,9 +268,9 @@ msgstr "" "\n" #: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498 -#: ../gio/ginputstream.c:176 ../gio/ginputstream.c:376 -#: ../gio/ginputstream.c:614 ../gio/ginputstream.c:1013 -#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:830 +#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379 +#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1016 +#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834 #: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206 #, c-format msgid "Too large count value passed to %s" @@ -282,8 +285,8 @@ msgstr "Δεν υποστηρίζεται η αναζήτηση στη βασι msgid "Cannot truncate GBufferedInputStream" msgstr "Αδυναμία περικοπής του GMemoryInputStream" -#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1202 -#: ../gio/giostream.c:278 ../gio/goutputstream.c:1654 +#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1205 +#: ../gio/giostream.c:300 ../gio/goutputstream.c:1658 msgid "Stream is already closed" msgstr "Η ροή έχει ήδη κλείσει" @@ -291,10 +294,9 @@ msgstr "Η ροή έχει ήδη κλείσει" msgid "Truncate not supported on base stream" msgstr "Δεν υποστηρίζεται η περικοπή στη βασική ροή" -#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1896 -#: ../gio/gdbusconnection.c:1989 ../gio/gdbusprivate.c:1421 -#: ../gio/glocalfile.c:2181 ../gio/gsimpleasyncresult.c:830 -#: ../gio/gsimpleasyncresult.c:856 +#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1847 +#: ../gio/gdbusprivate.c:1375 ../gio/glocalfile.c:2220 +#: ../gio/gsimpleasyncresult.c:870 ../gio/gsimpleasyncresult.c:896 #, c-format msgid "Operation was cancelled" msgstr "Η λειτουργία ακυρώθηκε" @@ -312,25 +314,25 @@ msgid "Not enough space in destination" msgstr "Μη επαρκής χώρος στην περιοχή προορισμού" #: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848 -#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 -#: ../glib/gconvert.c:845 ../glib/giochannel.c:1557 ../glib/giochannel.c:1599 -#: ../glib/giochannel.c:2443 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 +#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 ../glib/gconvert.c:845 +#: ../glib/giochannel.c:1556 ../glib/giochannel.c:1598 +#: ../glib/giochannel.c:2442 ../glib/gutf8.c:853 ../glib/gutf8.c:1306 msgid "Invalid byte sequence in conversion input" msgstr "Άκυρη σειρά byte στην είσοδο μετατροπής" # gconf/gconftool.c:1181 -#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 -#: ../glib/gconvert.c:770 ../glib/giochannel.c:1564 ../glib/giochannel.c:2455 +#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 ../glib/gconvert.c:770 +#: ../glib/giochannel.c:1563 ../glib/giochannel.c:2454 #, c-format msgid "Error during conversion: %s" msgstr "Σφάλμα κατά τη μετατροπή: %s" -#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:990 +#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1078 msgid "Cancellable initialization not supported" msgstr "Δεν υποστηρίζεται η ακυρώσιμη αρχικοποίηση" #: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321 -#: ../glib/giochannel.c:1385 +#: ../glib/giochannel.c:1384 #, c-format msgid "Conversion from character set '%s' to '%s' is not supported" msgstr "Η μετατροπή από την ομάδα χαρακτήρων '%s' σε '%s' δεν υποστηρίζεται" @@ -343,13 +345,13 @@ msgstr "Αδυναμία ανοίγματος μετατροπέα από '%s' #: ../gio/gcontenttype.c:335 #, c-format msgid "%s type" -msgstr "τύπος %s" +msgstr "Τύπος %s" #: ../gio/gcontenttype-win32.c:160 msgid "Unknown type" msgstr "Άγνωστος τύπος" -#: ../gio/gcontenttype-win32.c:161 +#: ../gio/gcontenttype-win32.c:162 #, c-format msgid "%s filetype" msgstr "%s τύπος αρχείων" @@ -377,13 +379,13 @@ msgstr "" msgid "Unexpected early end-of-stream" msgstr "Αναπάντεχο πρόωρο τέλος ροής" -#: ../gio/gdbusaddress.c:148 ../gio/gdbusaddress.c:236 -#: ../gio/gdbusaddress.c:317 +#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241 +#: ../gio/gdbusaddress.c:322 #, c-format msgid "Unsupported key '%s' in address entry '%s'" msgstr "Ανυποστήρικτο κλειδί '%s' στην εισαγωγή διεύθυνσης'%s'" -#: ../gio/gdbusaddress.c:175 +#: ../gio/gdbusaddress.c:180 #, c-format msgid "" "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" @@ -391,29 +393,29 @@ msgstr "" "Η διεύθυνση '%s' είναι άκυρη (χρειάζεται ακριβώς μια διαδρομή, tmpdir ή " "αφηρημένα κλειδιά)" -#: ../gio/gdbusaddress.c:188 +#: ../gio/gdbusaddress.c:193 #, c-format msgid "Meaningless key/value pair combination in address entry '%s'" msgstr "" "Συνδυασμός χωρίς νόημα ζευγαριού κλειδιού/τιμής στην εισαγόμενη διεύθυνση " "'%s'" -#: ../gio/gdbusaddress.c:251 ../gio/gdbusaddress.c:332 +#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 #, c-format msgid "Error in address '%s' - the port attribute is malformed" msgstr "Σφάλμα στη διεύθυνση '%s' - η ιδιότητα θύρας είναι κακοδιατυπωμένη" -#: ../gio/gdbusaddress.c:262 ../gio/gdbusaddress.c:343 +#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348 #, c-format msgid "Error in address '%s' - the family attribute is malformed" msgstr "Σφάλμα στη διεύθυνση '%s' - η ιδιότητα ομάδας είναι κακοδιατυπωμένη" -#: ../gio/gdbusaddress.c:452 +#: ../gio/gdbusaddress.c:457 #, c-format msgid "Address element '%s' does not contain a colon (:)" msgstr "Το στοιχείο διευθύνσεως '%s' δεν περιέχει διπλή στιγμή (:)" -#: ../gio/gdbusaddress.c:473 +#: ../gio/gdbusaddress.c:478 #, c-format msgid "" "Key/Value pair %d, '%s', in address element '%s' does not contain an equal " @@ -422,7 +424,7 @@ msgstr "" "Το δίδυμο κλειδί/τιμή %d, '%s', στο στοιχείο διεύθυνσης'%s' δεν περιέχει τον " "τελεστή ίσον" -#: ../gio/gdbusaddress.c:487 +#: ../gio/gdbusaddress.c:492 #, c-format msgid "" "Error unescaping key or value in Key/Value pair %d, '%s', in address element " @@ -431,7 +433,7 @@ msgstr "" "Σφάλμα στη μη διαφυγή του κλειδιού ή της τιμής στο δίδυμο κλειδί/τιμή %d, " "'%s', στο στοιχείο διεύθυνσης '%s'" -#: ../gio/gdbusaddress.c:565 +#: ../gio/gdbusaddress.c:570 #, c-format msgid "" "Error in address '%s' - the unix transport requires exactly one of the keys " @@ -440,20 +442,20 @@ msgstr "" "Σφάλμα στη διεύθυνση '%s' – ο μεταφορέας unix απαιτεί ακριβώς ένα από τα " "κλειδιά 'path' ή 'abstract' να οριστούν" -#: ../gio/gdbusaddress.c:601 +#: ../gio/gdbusaddress.c:606 #, c-format msgid "Error in address '%s' - the host attribute is missing or malformed" msgstr "" "Σφάλμα στη διεύθυνση '%s' - η ιδιότητα κεντρικού υπολογιστή λείπει ή είναι " "κακοδιατυπωμένη" -#: ../gio/gdbusaddress.c:615 +#: ../gio/gdbusaddress.c:620 #, c-format msgid "Error in address '%s' - the port attribute is missing or malformed" msgstr "" "Σφάλμα στη διεύθυνση '%s' - η ιδιότητα θύρας λείπει ή είναι κακοδιατυπωμένη" -#: ../gio/gdbusaddress.c:629 +#: ../gio/gdbusaddress.c:634 #, c-format msgid "Error in address '%s' - the noncefile attribute is missing or malformed" msgstr "" @@ -461,78 +463,78 @@ msgstr "" "κακοδιατυπωμένη" # -#: ../gio/gdbusaddress.c:650 +#: ../gio/gdbusaddress.c:655 msgid "Error auto-launching: " msgstr "Σφάλμα αυτόματης εκκίνησης: " -#: ../gio/gdbusaddress.c:658 +#: ../gio/gdbusaddress.c:663 #, c-format msgid "Unknown or unsupported transport '%s' for address '%s'" msgstr "Άγνωστη ή ανυποστήρικτη μεταφορά '%s' για τη διεύθυνση '%s'" # -#: ../gio/gdbusaddress.c:694 +#: ../gio/gdbusaddress.c:699 #, c-format msgid "Error opening nonce file '%s': %s" msgstr "Σφάλμα ανοίγματος παρόντος αρχείου '%s': %s" # -#: ../gio/gdbusaddress.c:712 +#: ../gio/gdbusaddress.c:717 #, c-format msgid "Error reading from nonce file '%s': %s" msgstr "Σφάλμα ανάγνωσης από το παρόν αρχείο '%s': %s" # -#: ../gio/gdbusaddress.c:721 +#: ../gio/gdbusaddress.c:726 #, c-format msgid "Error reading from nonce file '%s', expected 16 bytes, got %d" msgstr "" "Σφάλμα ανάγνωσης από το παρόν αρχείο '%s', αναμενόμενες 16 bytes, " "παραλήφθηκαν %d" -#: ../gio/gdbusaddress.c:739 +#: ../gio/gdbusaddress.c:744 #, c-format msgid "Error writing contents of nonce file '%s' to stream:" msgstr "Σφάλμα εγγραφής περιεχομένου του παρόντος αρχείου '%s' στην ροή:" -#: ../gio/gdbusaddress.c:958 +#: ../gio/gdbusaddress.c:950 msgid "The given address is empty" msgstr "Η δεδομένη διεύθυνση είναι κενή" -#: ../gio/gdbusaddress.c:1028 +#: ../gio/gdbusaddress.c:1063 #, c-format msgid "Cannot spawn a message bus when setuid" msgstr "Αδυναμία δημιουργίας διαύλου μηνυμάτων όταν χρησιμοποιείται setuid" -#: ../gio/gdbusaddress.c:1035 +#: ../gio/gdbusaddress.c:1070 msgid "Cannot spawn a message bus without a machine-id: " msgstr "Αδυναμία δημιουργίας διαύλου μηνυμάτων χωρίς ταυτότητα μηχανήματος: " # -#: ../gio/gdbusaddress.c:1077 +#: ../gio/gdbusaddress.c:1112 #, c-format msgid "Error spawning command line '%s': " msgstr "Σφάλμα δημιουργίας στη γραμμή εντολών '%s': " -#: ../gio/gdbusaddress.c:1294 +#: ../gio/gdbusaddress.c:1329 #, c-format msgid "(Type any character to close this window)\n" msgstr "" "(Πληκτρολογήστε οποιοδήποτε χαρακτήρα για να κλείσετε αυτό το παράθυρο)\n" -#: ../gio/gdbusaddress.c:1425 +#: ../gio/gdbusaddress.c:1481 #, c-format msgid "Session dbus not running, and autolaunch failed" msgstr "Η σύνοδος dbus δεν εκτελείται και η αυτόματη εκκίνηση απέτυχε" -#: ../gio/gdbusaddress.c:1446 +#: ../gio/gdbusaddress.c:1492 #, c-format msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "" "Αδυναμία καθορισμού της διεύθυνσης διαύλου συνόδου (μη υλοποιημένος σε αυτό " "το λειτουργικό)" -#: ../gio/gdbusaddress.c:1546 ../gio/gdbusconnection.c:6931 +#: ../gio/gdbusaddress.c:1627 ../gio/gdbusconnection.c:7128 #, c-format msgid "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " @@ -541,7 +543,7 @@ msgstr "" "Αδυναμία καθορισμού της διεύθυνση διαύλου από την μεταβλητή περιβάλλοντος " "DBUS_STARTER_BUS_TYPE - άγνωστη τιμή '%s'" -#: ../gio/gdbusaddress.c:1555 ../gio/gdbusconnection.c:6940 +#: ../gio/gdbusaddress.c:1636 ../gio/gdbusconnection.c:7137 msgid "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" @@ -549,7 +551,7 @@ msgstr "" "Αδυναμία καθορισμού της διεύθυνσης διαύλου επειδή η μεταβλητή περιβάλλοντος " "DBUS_STARTER_BUS_TYPE δεν είναι ορισθεί" -#: ../gio/gdbusaddress.c:1565 +#: ../gio/gdbusaddress.c:1646 #, c-format msgid "Unknown bus type %d" msgstr "Άγνωστος τύπος διαύλου %d" @@ -664,21 +666,21 @@ msgstr "Σφάλμα στο άνοιγμα της κλειδοθήκης '%s' γ msgid "(Additionally, releasing the lock for '%s' also failed: %s) " msgstr "(Επιπλέον, απελευθερώνοντας το κλείδωμα για '%s' απέτυχε επίσης: %s) " -#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2455 +#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2373 msgid "The connection is closed" msgstr "Η σύνδεση είναι κλειστή" -#: ../gio/gdbusconnection.c:1942 +#: ../gio/gdbusconnection.c:1877 msgid "Timeout was reached" msgstr "Έφτασε ο χρόνος λήξης" -#: ../gio/gdbusconnection.c:2577 +#: ../gio/gdbusconnection.c:2495 msgid "" "Unsupported flags encountered when constructing a client-side connection" msgstr "" "Βρέθηκαν ανυποστήρικτες σημαίες κατά την κατασκευή μίας client-side σύνδεσης" -#: ../gio/gdbusconnection.c:4157 ../gio/gdbusconnection.c:4504 +#: ../gio/gdbusconnection.c:4105 ../gio/gdbusconnection.c:4452 #, c-format msgid "" "No such interface 'org.freedesktop.DBus.Properties' on object at path %s" @@ -686,67 +688,79 @@ msgstr "" "Καμία τέτοια διεπαφή 'org.freedesktop.DBus.Properties' στο αντικείμενο στη " "διαδρομή %s" -#: ../gio/gdbusconnection.c:4299 +#: ../gio/gdbusconnection.c:4247 #, c-format msgid "No such property '%s'" msgstr "Δεν υπάρχει η ιδιότητα '%s'" -#: ../gio/gdbusconnection.c:4311 +#: ../gio/gdbusconnection.c:4259 #, c-format msgid "Property '%s' is not readable" msgstr "Η ιδιότητα '%s' δεν είναι αναγνώσιμη" -#: ../gio/gdbusconnection.c:4322 +#: ../gio/gdbusconnection.c:4270 #, c-format msgid "Property '%s' is not writable" msgstr "Η ιδιότητα '%s' δεν είναι εγγράψιμη" -#: ../gio/gdbusconnection.c:4342 +#: ../gio/gdbusconnection.c:4290 #, c-format msgid "Error setting property '%s': Expected type '%s' but got '%s'" msgstr "" "Σφάλμα ρύθμισης της ιδιότητας'%s': Αναμενόμενος τύπος '%s' αλλά βρήκε '%s'" -#: ../gio/gdbusconnection.c:4447 ../gio/gdbusconnection.c:6371 +#: ../gio/gdbusconnection.c:4395 ../gio/gdbusconnection.c:6568 #, c-format msgid "No such interface '%s'" msgstr "Δεν υπάρχει η διεπαφή'%s'" -#: ../gio/gdbusconnection.c:4655 +#: ../gio/gdbusconnection.c:4603 msgid "No such interface" msgstr "Δεν υπάρχει τέτοια διεπαφή" -#: ../gio/gdbusconnection.c:4873 ../gio/gdbusconnection.c:6880 +#: ../gio/gdbusconnection.c:4821 ../gio/gdbusconnection.c:7077 #, c-format msgid "No such interface '%s' on object at path %s" msgstr "Δεν υπάρχει η διεπαφή '%s' στο αντικείμενο στην διαδρομή %s" -#: ../gio/gdbusconnection.c:4971 +#: ../gio/gdbusconnection.c:4919 #, c-format msgid "No such method '%s'" msgstr "Δεν υπάρχει η μέθοδος '%s'" -#: ../gio/gdbusconnection.c:5002 +#: ../gio/gdbusconnection.c:4950 #, c-format msgid "Type of message, '%s', does not match expected type '%s'" msgstr "Ο τύπος μηνύματος, '%s', δεν ταιριάζει με τον αναμενόμενο τύπο '%s'" -#: ../gio/gdbusconnection.c:5200 +#: ../gio/gdbusconnection.c:5148 #, c-format msgid "An object is already exported for the interface %s at %s" msgstr "Ένα αντικείμενο έχει εξαχθεί ήδη για τη διεπαφή %s στο %s" -#: ../gio/gdbusconnection.c:5399 +# gconf/gconf-internals.c:2416 +#: ../gio/gdbusconnection.c:5374 +#, c-format +msgid "Unable to retrieve property %s.%s" +msgstr "Αδυναμία ανάκτησης της ιδιότητας %s.%s" + +# gconf/gconf-internals.c:2416 +#: ../gio/gdbusconnection.c:5430 +#, c-format +msgid "Unable to set property %s.%s" +msgstr "Αδυναμία ορισμού της ιδιότητας %s.%s" + +#: ../gio/gdbusconnection.c:5606 #, c-format msgid "Method '%s' returned type '%s', but expected '%s'" msgstr "Η μέθοδος '%s' επέστρεψε τον τύπο '%s', αλλά αναμενόταν '%s'" -#: ../gio/gdbusconnection.c:6482 +#: ../gio/gdbusconnection.c:6679 #, c-format msgid "Method '%s' on interface '%s' with signature '%s' does not exist" msgstr "Η μέθοδος '%s' στη διεπαφή '%s' με υπογραφή '%s' δεν υπάρχει" -#: ../gio/gdbusconnection.c:6603 +#: ../gio/gdbusconnection.c:6800 #, c-format msgid "A subtree is already exported for %s" msgstr "Ένα υποδένδρο εξάγεται ήδη για %s" @@ -938,36 +952,36 @@ msgstr "" "Το σώμα του μηνύματος είναι κενό αλλά η υπογραφή στο πεδίο κεφαλίδας είναι " "'(%s)'" -#: ../gio/gdbusmessage.c:3280 +#: ../gio/gdbusmessage.c:3283 #, c-format msgid "Error return with body of type '%s'" msgstr "Σφάλμα επιστροφής με σώμα τύπου'%s'" -#: ../gio/gdbusmessage.c:3288 +#: ../gio/gdbusmessage.c:3291 msgid "Error return with empty body" msgstr "Επιστροφή σφάλματος με κενό σώμα" # gconf/gconf-internals.c:2416 -#: ../gio/gdbusprivate.c:2085 +#: ../gio/gdbusprivate.c:2036 #, c-format msgid "Unable to get Hardware profile: %s" msgstr "Αδύνατη η λήψη κατατομής υλικού: %s" -#: ../gio/gdbusprivate.c:2130 +#: ../gio/gdbusprivate.c:2081 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: " msgstr "Αδυναμία φόρτωσης /var/lib/dbus/machine-id ή /etc/machine-id: " -#: ../gio/gdbusproxy.c:1630 +#: ../gio/gdbusproxy.c:1610 #, c-format msgid "Error calling StartServiceByName for %s: " msgstr "Σφάλμα στην κλήση StartServiceByName για το %s: " -#: ../gio/gdbusproxy.c:1653 +#: ../gio/gdbusproxy.c:1633 #, c-format msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" msgstr "Απροσδόκητη απάντηση %d από την μέθοδο StartServiceByName(\"%s\")" -#: ../gio/gdbusproxy.c:2754 ../gio/gdbusproxy.c:2891 +#: ../gio/gdbusproxy.c:2709 ../gio/gdbusproxy.c:2843 msgid "" "Cannot invoke method; proxy is for a well-known name without an owner and " "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag" @@ -1022,50 +1036,55 @@ msgstr "" "Χρησιμοποιείστε \"%s COMMAND --help\" για λήψη βοήθειας για κάθε εντολή.\n" # -#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:220 ../gio/gdbus-tool.c:292 -#: ../gio/gdbus-tool.c:316 ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1031 -#: ../gio/gdbus-tool.c:1465 +#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:226 ../gio/gdbus-tool.c:298 +#: ../gio/gdbus-tool.c:322 ../gio/gdbus-tool.c:711 ../gio/gdbus-tool.c:1043 +#: ../gio/gdbus-tool.c:1477 #, c-format msgid "Error: %s\n" msgstr "Σφάλμα: %s\n" # gconf/gconftool.c:1181 -#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:233 ../gio/gdbus-tool.c:1481 +#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493 #, c-format msgid "Error parsing introspection XML: %s\n" msgstr "Ενδοσκόπηση της ανάλυσης λάθους XML: %s\n" -#: ../gio/gdbus-tool.c:350 +#: ../gio/gdbus-tool.c:208 +#, c-format +msgid "Error: %s is not a valid name\n" +msgstr "Σφάλμα: το %s δεν είναι έγκυρο όνομα\n" + +#: ../gio/gdbus-tool.c:356 msgid "Connect to the system bus" msgstr "Σύνδεση με το δίαυλο συστήματος" -#: ../gio/gdbus-tool.c:351 +#: ../gio/gdbus-tool.c:357 msgid "Connect to the session bus" msgstr "Σύνδεση με το δίαυλο συνόδου" -#: ../gio/gdbus-tool.c:352 +#: ../gio/gdbus-tool.c:358 msgid "Connect to given D-Bus address" msgstr "Σύνδεση με δεδομένη διεύθυνση D-Bus" -#: ../gio/gdbus-tool.c:362 +#: ../gio/gdbus-tool.c:368 msgid "Connection Endpoint Options:" msgstr "Επιλογές σημείου τέλους σύνδεσης:" -#: ../gio/gdbus-tool.c:363 +#: ../gio/gdbus-tool.c:369 msgid "Options specifying the connection endpoint" msgstr "Οι επιλογές που διευκρινίζουν το σημείο τέλους σύνδεσης" -#: ../gio/gdbus-tool.c:385 +#: ../gio/gdbus-tool.c:391 #, c-format msgid "No connection endpoint specified" msgstr "Δεν διευκρινίζεται σημείο τέλους σύνδεσης" -#: ../gio/gdbus-tool.c:395 +#: ../gio/gdbus-tool.c:401 #, c-format msgid "Multiple connection endpoints specified" msgstr "Διευκρινίστηκαν πολλαπλά σημεία τέλους σύνδεσης" -#: ../gio/gdbus-tool.c:465 +#: ../gio/gdbus-tool.c:471 #, c-format msgid "" "Warning: According to introspection data, interface '%s' does not exist\n" @@ -1073,7 +1092,7 @@ msgstr "" "Προειδοποίηση: Σύμφωνα με τα στοιχεία ενδοσκόπησης, η διεπαφή '%s' δεν " "υπάρχει\n" -#: ../gio/gdbus-tool.c:474 +#: ../gio/gdbus-tool.c:480 #, c-format msgid "" "Warning: According to introspection data, method '%s' does not exist on " @@ -1082,192 +1101,196 @@ msgstr "" "Προειδοποίηση: Σύμφωνα με τα στοιχεία ενδοσκόπησης, η μέθοδος '%s' δεν " "υπάρχει στη διεπαφή '%s'\n" -#: ../gio/gdbus-tool.c:536 +#: ../gio/gdbus-tool.c:542 msgid "Optional destination for signal (unique name)" msgstr "Προαιρετικός προορισμός για σήμα (μοναδικό όνομα)" -#: ../gio/gdbus-tool.c:537 +#: ../gio/gdbus-tool.c:543 msgid "Object path to emit signal on" msgstr "Η διαδρομή αντικειμένου για εκπομπή σήματος" -#: ../gio/gdbus-tool.c:538 +#: ../gio/gdbus-tool.c:544 msgid "Signal and interface name" msgstr "Σήμα και όνομα διεπαφής" -#: ../gio/gdbus-tool.c:570 +#: ../gio/gdbus-tool.c:576 msgid "Emit a signal." msgstr "Εκπομπή σήματος." -#: ../gio/gdbus-tool.c:604 ../gio/gdbus-tool.c:836 ../gio/gdbus-tool.c:1571 -#: ../gio/gdbus-tool.c:1799 +#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583 +#: ../gio/gdbus-tool.c:1818 #, c-format msgid "Error connecting: %s\n" msgstr "Σφάλμα σύνδεσης: %s\n" -#: ../gio/gdbus-tool.c:616 +#: ../gio/gdbus-tool.c:622 #, c-format msgid "Error: object path not specified.\n" msgstr "Σφάλμα: αδιευκρίνιστη διαδρομή αντικειμένου.\n" -#: ../gio/gdbus-tool.c:621 ../gio/gdbus-tool.c:897 ../gio/gdbus-tool.c:1629 -#: ../gio/gdbus-tool.c:1858 +#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648 +#: ../gio/gdbus-tool.c:1884 #, c-format msgid "Error: %s is not a valid object path\n" msgstr "Σφάλμα: το %s δεν είναι έγκυρη διαδρομή αντικειμένου\n" -#: ../gio/gdbus-tool.c:627 +#: ../gio/gdbus-tool.c:633 #, c-format msgid "Error: signal not specified.\n" msgstr "Σφάλμα: αδιευκρίνιστο σήμα.\n" -#: ../gio/gdbus-tool.c:634 +#: ../gio/gdbus-tool.c:640 #, c-format msgid "Error: signal must be the fully-qualified name.\n" msgstr "Σφάλμα: το σήμα πρέπει να είναι το πλήρως εξειδικευμένο όνομα.\n" -#: ../gio/gdbus-tool.c:642 +#: ../gio/gdbus-tool.c:648 #, c-format msgid "Error: %s is not a valid interface name\n" msgstr "Σφάλμα: Το %s δεν είναι έγκυρο όνομα διεπαφής\n" -#: ../gio/gdbus-tool.c:648 +#: ../gio/gdbus-tool.c:654 #, c-format msgid "Error: %s is not a valid member name\n" msgstr "Σφάλμα: το %s δεν είναι έγκυρο όνομα μέλους\n" -#: ../gio/gdbus-tool.c:654 +#: ../gio/gdbus-tool.c:660 #, c-format msgid "Error: %s is not a valid unique bus name.\n" msgstr "Σφάλμα: το %s δεν είναι έγκυρο μοναδικό όνομα διαύλου.\n" # gconf/gconftool.c:1181 #. Use the original non-"parse-me-harder" error -#: ../gio/gdbus-tool.c:681 ../gio/gdbus-tool.c:999 +#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011 #, c-format msgid "Error parsing parameter %d: %s\n" msgstr "Σφάλμα ανάλυσης παραμέτρου %d: %s\n" # gconf/gconftool.c:1181 -#: ../gio/gdbus-tool.c:712 +#: ../gio/gdbus-tool.c:718 #, c-format msgid "Error flushing connection: %s\n" msgstr "Σφάλμα εκκένωσης σύνδεσης: %s\n" -#: ../gio/gdbus-tool.c:739 +#: ../gio/gdbus-tool.c:745 msgid "Destination name to invoke method on" msgstr "Το όνομα προορισμού για την κλήση της μεθόδου" -#: ../gio/gdbus-tool.c:740 +#: ../gio/gdbus-tool.c:746 msgid "Object path to invoke method on" msgstr "Η διαδρομή αντικειμένου για κλήση της μεθόδου" -#: ../gio/gdbus-tool.c:741 +#: ../gio/gdbus-tool.c:747 msgid "Method and interface name" msgstr "Μέθοδος και όνομα διεπαφής" -#: ../gio/gdbus-tool.c:742 +#: ../gio/gdbus-tool.c:748 msgid "Timeout in seconds" msgstr "Ο χρόνος λήξης σε δευτερόλεπτα" -#: ../gio/gdbus-tool.c:781 +#: ../gio/gdbus-tool.c:787 msgid "Invoke a method on a remote object." msgstr "Κλήση μεθόδου σε απομακρυσμένο αντικείμενο." -#: ../gio/gdbus-tool.c:856 ../gio/gdbus-tool.c:1590 ../gio/gdbus-tool.c:1818 +#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837 #, c-format msgid "Error: Destination is not specified\n" msgstr "Σφάλμα: αδιευκρίνιστος προορισμός\n" -#: ../gio/gdbus-tool.c:877 ../gio/gdbus-tool.c:1609 +#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849 +#, c-format +msgid "Error: %s is not a valid bus name\n" +msgstr "Σφάλμα: το %s δεν είναι έγκυρο όνομα διαύλου\n" + +#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628 #, c-format msgid "Error: Object path is not specified\n" msgstr "Σφάλμα: αδιευκρίνιστη διαδρομή αντικειμένου\n" -#: ../gio/gdbus-tool.c:912 +#: ../gio/gdbus-tool.c:924 #, c-format msgid "Error: Method name is not specified\n" msgstr "Σφάλμα: αδιευκρίνιστο όνομα μεθόδου\n" -#: ../gio/gdbus-tool.c:923 +#: ../gio/gdbus-tool.c:935 #, c-format msgid "Error: Method name '%s' is invalid\n" msgstr "Σφάλμα: Το όνομα μεθόδου '%s' είναι άκυρο\n" # -#: ../gio/gdbus-tool.c:991 +#: ../gio/gdbus-tool.c:1003 #, c-format msgid "Error parsing parameter %d of type '%s': %s\n" msgstr "Σφάλμα στην ανάλυσης παραμέτρου %d του τύπου '%s': %s\n" -#: ../gio/gdbus-tool.c:1428 +#: ../gio/gdbus-tool.c:1440 msgid "Destination name to introspect" msgstr "Όνομα προορισμού για ενδοσκόπηση" -#: ../gio/gdbus-tool.c:1429 +#: ../gio/gdbus-tool.c:1441 msgid "Object path to introspect" msgstr "Διαδρομή αντικειμένου για ενδοσκόπηση" -#: ../gio/gdbus-tool.c:1430 +#: ../gio/gdbus-tool.c:1442 msgid "Print XML" msgstr "Εκτύπωση XML" -#: ../gio/gdbus-tool.c:1431 +#: ../gio/gdbus-tool.c:1443 msgid "Introspect children" msgstr "Ενδοσκόπηση θυγατρικής" -#: ../gio/gdbus-tool.c:1432 +#: ../gio/gdbus-tool.c:1444 msgid "Only print properties" msgstr "Μόνο ιδιότητες εκτύπωσης" -#: ../gio/gdbus-tool.c:1523 +#: ../gio/gdbus-tool.c:1535 msgid "Introspect a remote object." msgstr "Ενδοσκόπηση απομακρυσμένου αντικειμένου." -#: ../gio/gdbus-tool.c:1721 +#: ../gio/gdbus-tool.c:1740 msgid "Destination name to monitor" msgstr "Όνομα προορισμού για έλεγχο" -#: ../gio/gdbus-tool.c:1722 +#: ../gio/gdbus-tool.c:1741 msgid "Object path to monitor" msgstr "Η διαδρομή αντικειμένου για έλεγχο" -#: ../gio/gdbus-tool.c:1751 +#: ../gio/gdbus-tool.c:1770 msgid "Monitor a remote object." msgstr "Έλεγχος απομακρυσμένου αντικειμένου." -#: ../gio/gdesktopappinfo.c:1999 ../gio/gdesktopappinfo.c:4530 -#: ../gio/gwin32appinfo.c:219 +#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4502 msgid "Unnamed" msgstr "Ανώνυμο" -#: ../gio/gdesktopappinfo.c:2408 +#: ../gio/gdesktopappinfo.c:2402 msgid "Desktop file didn't specify Exec field" msgstr "Το αρχείο επιφάνειας εργασίας δεν όρισε πεδίο Exec" -#: ../gio/gdesktopappinfo.c:2693 +#: ../gio/gdesktopappinfo.c:2687 msgid "Unable to find terminal required for application" msgstr "Αδυναμία εύρεσης του απαιτούμενου τερματικού για την εφαρμογή" -#: ../gio/gdesktopappinfo.c:3114 +#: ../gio/gdesktopappinfo.c:3099 #, c-format msgid "Can't create user application configuration folder %s: %s" msgstr "Αδυναμία δημιουργίας φακέλου ρυθμίσεων εφαρμογής %s: %s" -#: ../gio/gdesktopappinfo.c:3118 +#: ../gio/gdesktopappinfo.c:3103 #, c-format msgid "Can't create user MIME configuration folder %s: %s" msgstr "Αδυναμία δημιουργίας φακέλου ρυθμίσεων MIME %s: %s" -#: ../gio/gdesktopappinfo.c:3358 ../gio/gdesktopappinfo.c:3382 +#: ../gio/gdesktopappinfo.c:3343 ../gio/gdesktopappinfo.c:3367 msgid "Application information lacks an identifier" msgstr "Οι πληροφορίες εφαρμογής στερούνται ταυτοποιητή" -#: ../gio/gdesktopappinfo.c:3615 +#: ../gio/gdesktopappinfo.c:3600 #, c-format msgid "Can't create user desktop file %s" msgstr "Αδυναμία δημιουργίας αρχείου επιφάνειας εργασίας %s" -#: ../gio/gdesktopappinfo.c:3749 +#: ../gio/gdesktopappinfo.c:3734 #, c-format msgid "Custom definition for %s" msgstr "Προσαρμοσμένος ορισμός του %s" @@ -1295,11 +1318,15 @@ msgstr "ο οδηγός δεν υποστηρίζει έναρξη" msgid "drive doesn't implement stop" msgstr "ο οδηγός δεν υποστηρίζει τερματισμό" -#: ../gio/gdummytlsbackend.c:189 ../gio/gdummytlsbackend.c:311 -#: ../gio/gdummytlsbackend.c:401 +#: ../gio/gdummytlsbackend.c:195 ../gio/gdummytlsbackend.c:317 +#: ../gio/gdummytlsbackend.c:509 msgid "TLS support is not available" msgstr "Η υποστήριξη TLS δεν είναι διαθέσιμη" +#: ../gio/gdummytlsbackend.c:419 +msgid "DTLS support is not available" +msgstr "Η υποστήριξη DTLS δεν είναι διαθέσιμη" + #: ../gio/gemblem.c:323 #, c-format msgid "Can't handle version %d of GEmblem encoding" @@ -1325,14 +1352,14 @@ msgstr "" msgid "Expected a GEmblem for GEmblemedIcon" msgstr "Αναμενόταν GEmblem για το GEmblemedIcon" -#: ../gio/gfile.c:968 ../gio/gfile.c:1206 ../gio/gfile.c:1344 -#: ../gio/gfile.c:1582 ../gio/gfile.c:1637 ../gio/gfile.c:1695 -#: ../gio/gfile.c:1779 ../gio/gfile.c:1836 ../gio/gfile.c:1900 -#: ../gio/gfile.c:1955 ../gio/gfile.c:3603 ../gio/gfile.c:3658 -#: ../gio/gfile.c:3893 ../gio/gfile.c:3935 ../gio/gfile.c:4398 -#: ../gio/gfile.c:4809 ../gio/gfile.c:4894 ../gio/gfile.c:4984 -#: ../gio/gfile.c:5081 ../gio/gfile.c:5168 ../gio/gfile.c:5269 -#: ../gio/gfile.c:7788 ../gio/gfile.c:7878 ../gio/gfile.c:7962 +#: ../gio/gfile.c:969 ../gio/gfile.c:1207 ../gio/gfile.c:1345 +#: ../gio/gfile.c:1583 ../gio/gfile.c:1638 ../gio/gfile.c:1696 +#: ../gio/gfile.c:1780 ../gio/gfile.c:1837 ../gio/gfile.c:1901 +#: ../gio/gfile.c:1956 ../gio/gfile.c:3604 ../gio/gfile.c:3659 +#: ../gio/gfile.c:3894 ../gio/gfile.c:3936 ../gio/gfile.c:4404 +#: ../gio/gfile.c:4815 ../gio/gfile.c:4900 ../gio/gfile.c:4990 +#: ../gio/gfile.c:5087 ../gio/gfile.c:5174 ../gio/gfile.c:5275 +#: ../gio/gfile.c:7796 ../gio/gfile.c:7886 ../gio/gfile.c:7970 #: ../gio/win32/gwinhttpfile.c:437 msgid "Operation not supported" msgstr "Ανυποστήρικτη λειτουργία" @@ -1347,73 +1374,73 @@ msgstr "Ανυποστήρικτη λειτουργία" #. Translators: This is an error message when trying to find #. * the enclosing (user visible) mount of a file, but none #. * exists. -#: ../gio/gfile.c:1467 ../gio/glocalfile.c:1103 ../gio/glocalfile.c:1114 -#: ../gio/glocalfile.c:1127 +#: ../gio/gfile.c:1468 ../gio/glocalfile.c:1134 ../gio/glocalfile.c:1145 +#: ../gio/glocalfile.c:1158 msgid "Containing mount does not exist" msgstr "Δεν υπάρχει η περιέχουσα προσάρτηση" -#: ../gio/gfile.c:2514 ../gio/glocalfile.c:2337 +#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2376 msgid "Can't copy over directory" msgstr "Αδυναμία αντιγραφής σε κατάλογο" -#: ../gio/gfile.c:2574 +#: ../gio/gfile.c:2575 msgid "Can't copy directory over directory" msgstr "Αδυναμία αντιγραφής καταλόγου σε κατάλογο" -#: ../gio/gfile.c:2582 ../gio/glocalfile.c:2346 +#: ../gio/gfile.c:2583 ../gio/glocalfile.c:2385 msgid "Target file exists" msgstr "Το αρχείο προορισμού υπάρχει" -#: ../gio/gfile.c:2601 +#: ../gio/gfile.c:2602 msgid "Can't recursively copy directory" msgstr "Αδυναμία αναδρομικής αντιγραφής καταλόγου" -#: ../gio/gfile.c:2883 +#: ../gio/gfile.c:2884 msgid "Splice not supported" msgstr "Η αρμολόγηση δεν υποστηρίζεται" -#: ../gio/gfile.c:2887 +#: ../gio/gfile.c:2888 #, c-format msgid "Error splicing file: %s" msgstr "Σφάλμα αρμολόγησης αρχείου: %s" -#: ../gio/gfile.c:3018 +#: ../gio/gfile.c:3019 msgid "Copy (reflink/clone) between mounts is not supported" msgstr "" "Δεν υποστηρίζεται η αντιγραφή (συνδέσμου αναφοράς/κλώνου) μεταξύ προσαρτήσεων" -#: ../gio/gfile.c:3022 +#: ../gio/gfile.c:3023 msgid "Copy (reflink/clone) is not supported or invalid" msgstr "" "Η αντιγραφή (συνδέσμου αναφοράς/κλώνου) δεν υποστηρίζεται ή είναι άκυρη" -#: ../gio/gfile.c:3027 +#: ../gio/gfile.c:3028 msgid "Copy (reflink/clone) is not supported or didn't work" msgstr "" "Η αντιγραφή (συνδέσμου αναφοράς/κλώνου) δεν υποστηρίζεται ή δεν δούλεψε" -#: ../gio/gfile.c:3090 +#: ../gio/gfile.c:3091 msgid "Can't copy special file" msgstr "Αδυναμία αντιγραφής του ειδικού αρχείου" -#: ../gio/gfile.c:3883 +#: ../gio/gfile.c:3884 msgid "Invalid symlink value given" msgstr "Άκυρη τιμή συμβολικού συνδέσμου" -#: ../gio/gfile.c:4044 +#: ../gio/gfile.c:4045 msgid "Trash not supported" msgstr "Δεν υποστηρίζονται απορρίμματα" -#: ../gio/gfile.c:4156 +#: ../gio/gfile.c:4157 #, c-format msgid "File names cannot contain '%c'" msgstr "Τα ονόματα των αρχείων δεν μπορούν να περιέχουν '%c'" -#: ../gio/gfile.c:6580 ../gio/gvolume.c:363 +#: ../gio/gfile.c:6586 ../gio/gvolume.c:363 msgid "volume doesn't implement mount" msgstr "ο τόμος δεν υποστηρίζει προσάρτηση" -#: ../gio/gfile.c:6689 +#: ../gio/gfile.c:6695 msgid "No application is registered as handling this file" msgstr "Δεν έχουν οριστεί εφαρμογές για το χειρισμό αυτού του αρχείου" @@ -1536,16 +1563,16 @@ msgstr "Η διεύθυνση έχει σύνολα δυαδικών πέρα α msgid "Could not parse '%s' as IP address mask" msgstr "Αδυναμία ανάλυσης του '%s' ως μάσκα διεύθυνσης IP" -#: ../gio/ginetsocketaddress.c:196 ../gio/ginetsocketaddress.c:213 -#: ../gio/gunixsocketaddress.c:209 +#: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220 +#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:216 msgid "Not enough space for socket address" msgstr "Ανεπαρκής χώρος για την διεύθυνση υποδοχέα" -#: ../gio/ginetsocketaddress.c:228 +#: ../gio/ginetsocketaddress.c:235 msgid "Unsupported socket address" msgstr "Ανυποστήρικτη διεύθυνση υποδοχέα" -#: ../gio/ginputstream.c:185 +#: ../gio/ginputstream.c:188 msgid "Input stream doesn't implement read" msgstr "Η ροή εισόδου δεν υποστηρίζει την ανάγνωση" @@ -1555,12 +1582,12 @@ msgstr "Η ροή εισόδου δεν υποστηρίζει την ανάγν #. Translators: This is an error you get if there is #. * already an operation running against this stream when #. * you try to start one -#: ../gio/ginputstream.c:1212 ../gio/giostream.c:288 -#: ../gio/goutputstream.c:1664 +#: ../gio/ginputstream.c:1215 ../gio/giostream.c:310 +#: ../gio/goutputstream.c:1668 msgid "Stream has outstanding operation" msgstr "Εκκρεμεί μία ενέργεια για τη ροή" -#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1453 +#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1491 #, c-format msgid "Element <%s> not allowed inside <%s>" msgstr "Το στοιχείο <%s> δεν επιτρέπεται μέσα στο <%s>" @@ -1607,7 +1634,7 @@ msgstr "Σφάλμα ανάγνωσης αρχείου %s: %s" msgid "Error compressing file %s" msgstr "Σφάλμα αρχείου συμπίεσης %s" -#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1565 +#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1603 #, c-format msgid "text may not appear inside <%s>" msgstr "το κείμενο μπορεί να μην εμφανιστεί μέσα στο <%s>" @@ -1624,8 +1651,8 @@ msgstr "" "Οι κατάλογοι από όπου πρόκειται να διαβαστούν αρχεία (προεπιλογή ο τρέχον " "κατάλογος)" -#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:1994 -#: ../gio/glib-compile-schemas.c:2023 +#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2036 +#: ../gio/glib-compile-schemas.c:2065 msgid "DIRECTORY" msgstr "ΚΑΤΑΛΟΓΟΣ" @@ -1677,16 +1704,16 @@ msgstr "" msgid "You should give exactly one file name\n" msgstr "Πρέπει να δώσετε ακριβώς ένα όνομα αρχείου\n" -#: ../gio/glib-compile-schemas.c:772 +#: ../gio/glib-compile-schemas.c:784 msgid "empty names are not permitted" msgstr "κενά ονόματα δεν επιτρέπονται" -#: ../gio/glib-compile-schemas.c:782 +#: ../gio/glib-compile-schemas.c:794 #, c-format msgid "invalid name '%s': names must begin with a lowercase letter" msgstr "άκυρο όνομα '%s': τα ονόματα πρέπει να αρχίσουν με πεζό γράμμα" -#: ../gio/glib-compile-schemas.c:794 +#: ../gio/glib-compile-schemas.c:806 #, c-format msgid "" "invalid name '%s': invalid character '%c'; only lowercase letters, numbers " @@ -1695,37 +1722,37 @@ msgstr "" "άκυρο όνομα '%s': άκυρος χαρακτήρας '%c'· μόνο πεζά γράμματα, αριθμοί και " "παύλες ('-') επιτρέπονται." -#: ../gio/glib-compile-schemas.c:803 +#: ../gio/glib-compile-schemas.c:815 #, c-format msgid "invalid name '%s': two successive hyphens ('--') are not permitted." msgstr "άκυρο όνομα '%s': δύο διαδοχικές παύλες ('--') δεν επιτρέπονται." -#: ../gio/glib-compile-schemas.c:812 +#: ../gio/glib-compile-schemas.c:824 #, c-format msgid "invalid name '%s': the last character may not be a hyphen ('-')." msgstr "" "άκυρο όνομα '%s': ο τελευταίος χαρακτήρας μπορεί να μην είναι παύλα ('-')." -#: ../gio/glib-compile-schemas.c:820 +#: ../gio/glib-compile-schemas.c:832 #, c-format msgid "invalid name '%s': maximum length is 1024" msgstr "άκυρο όνομα '%s': το μέγιστο μήκος είναι 1024" -#: ../gio/glib-compile-schemas.c:889 +#: ../gio/glib-compile-schemas.c:901 #, c-format msgid " already specified" msgstr " έχει ήδη οριστεί" -#: ../gio/glib-compile-schemas.c:915 +#: ../gio/glib-compile-schemas.c:927 msgid "cannot add keys to a 'list-of' schema" msgstr "αδυναμία προσθήκης κλειδιών σε σχήμα 'list-of'" -#: ../gio/glib-compile-schemas.c:926 +#: ../gio/glib-compile-schemas.c:938 #, c-format msgid " already specified" msgstr " έχει ήδη οριστεί" -#: ../gio/glib-compile-schemas.c:944 +#: ../gio/glib-compile-schemas.c:956 #, c-format msgid "" " shadows in ; use " @@ -1734,7 +1761,7 @@ msgstr "" " σκιές στο · χρησιμοποιεί " " για τροποποίηση της τιμής" -#: ../gio/glib-compile-schemas.c:955 +#: ../gio/glib-compile-schemas.c:967 #, c-format msgid "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " @@ -1743,57 +1770,57 @@ msgstr "" "ακριβώς ένα από 'type', 'enum' ή 'flags' πρέπει να διευκρινιστείτε ως " "ιδιότητα στο " -#: ../gio/glib-compile-schemas.c:974 +#: ../gio/glib-compile-schemas.c:986 #, c-format msgid "<%s id='%s'> not (yet) defined." msgstr "<%s id='%s'> αδιευκρίνιστη (ακόμα)." -#: ../gio/glib-compile-schemas.c:989 +#: ../gio/glib-compile-schemas.c:1001 #, c-format msgid "invalid GVariant type string '%s'" msgstr "Άκυρος τύπος συμβολοσειράς GVariant '%s'" -#: ../gio/glib-compile-schemas.c:1019 +#: ../gio/glib-compile-schemas.c:1031 msgid " given but schema isn't extending anything" msgstr " δόθηκε αλλά το σχήμα δεν επεκτείνει τίποτα" -#: ../gio/glib-compile-schemas.c:1032 +#: ../gio/glib-compile-schemas.c:1044 #, c-format msgid "no to override" msgstr "δεν υπάρχει για αντικατάσταση" -#: ../gio/glib-compile-schemas.c:1040 +#: ../gio/glib-compile-schemas.c:1052 #, c-format msgid " already specified" msgstr " έχει ήδη οριστεί" -#: ../gio/glib-compile-schemas.c:1111 +#: ../gio/glib-compile-schemas.c:1125 #, c-format msgid " already specified" msgstr " έχει ήδη οριστεί" -#: ../gio/glib-compile-schemas.c:1123 +#: ../gio/glib-compile-schemas.c:1137 #, c-format msgid " extends not yet existing schema '%s'" msgstr " επεκτείνει ένα μη υπάρχον ακόμα σχήμα '%s'" -#: ../gio/glib-compile-schemas.c:1139 +#: ../gio/glib-compile-schemas.c:1153 #, c-format msgid " is list of not yet existing schema '%s'" msgstr "" " είναι κατάλογος ενός μη υπάρχοντος ακόμα σχήματος '%s'" -#: ../gio/glib-compile-schemas.c:1147 +#: ../gio/glib-compile-schemas.c:1161 #, c-format msgid "Can not be a list of a schema with a path" msgstr "Αδυναμία ύπαρξης λίστας σχήματος με διαδρομή" -#: ../gio/glib-compile-schemas.c:1157 +#: ../gio/glib-compile-schemas.c:1171 #, c-format msgid "Can not extend a schema with a path" msgstr "Αδυναμία επέκτασης σχήματος με διαδρομή" -#: ../gio/glib-compile-schemas.c:1167 +#: ../gio/glib-compile-schemas.c:1181 #, c-format msgid "" " is a list, extending which is not a list" @@ -1801,7 +1828,7 @@ msgstr "" "Το είναι λίστα, που επεκτείνει το που δεν " "είναι λίστα" -#: ../gio/glib-compile-schemas.c:1177 +#: ../gio/glib-compile-schemas.c:1191 #, c-format msgid "" " extends but '%s' " @@ -1810,64 +1837,69 @@ msgstr "" " επεκτείνει το " "αλλά το '%s' δεν επεκτείνει το '%s'" -#: ../gio/glib-compile-schemas.c:1194 +#: ../gio/glib-compile-schemas.c:1208 #, c-format msgid "a path, if given, must begin and end with a slash" msgstr "" "μία διαδρομή, εάν έχει δοθεί, πρέπει να αρχίζει και να τελειώνει με κάθετο" -#: ../gio/glib-compile-schemas.c:1201 +#: ../gio/glib-compile-schemas.c:1215 #, c-format msgid "the path of a list must end with ':/'" msgstr "η διαδρομή μίας λίστας πρέπει να τελειώσει με ':/'" -#: ../gio/glib-compile-schemas.c:1233 +#: ../gio/glib-compile-schemas.c:1247 #, c-format msgid "<%s id='%s'> already specified" msgstr "<%s id='%s'> είναι ήδη ορισμένο" -#: ../gio/glib-compile-schemas.c:1457 +#: ../gio/glib-compile-schemas.c:1397 ../gio/glib-compile-schemas.c:1413 +#, c-format +msgid "Only one <%s> element allowed inside <%s>" +msgstr "Μόνο ένα στοιχείο <%s> επιτρέπεται μέσα στο <%s>" + +#: ../gio/glib-compile-schemas.c:1495 #, c-format msgid "Element <%s> not allowed at the top level" msgstr "Το στοιχείο <%s> δεν επιτρέπεται στο κορυφαίο επίπεδο" #. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1752 ../gio/glib-compile-schemas.c:1823 -#: ../gio/glib-compile-schemas.c:1899 +#: ../gio/glib-compile-schemas.c:1794 ../gio/glib-compile-schemas.c:1865 +#: ../gio/glib-compile-schemas.c:1941 #, c-format msgid "--strict was specified; exiting.\n" msgstr "ορίστηκε το --strict· γίνεται έξοδος.\n" -#: ../gio/glib-compile-schemas.c:1760 +#: ../gio/glib-compile-schemas.c:1802 #, c-format msgid "This entire file has been ignored.\n" msgstr "Έχει παραβλεφθεί όλο αυτό το αρχείο.\n" -#: ../gio/glib-compile-schemas.c:1819 +#: ../gio/glib-compile-schemas.c:1861 #, c-format msgid "Ignoring this file.\n" msgstr "Παράβλεψη αυτού του αρχείου.\n" -#: ../gio/glib-compile-schemas.c:1859 +#: ../gio/glib-compile-schemas.c:1901 #, c-format msgid "No such key '%s' in schema '%s' as specified in override file '%s'" msgstr "" "Δεν υπάρχει τέτοιο κλειδί '%s' στο σχήμα '%s' όπως ορίζεται στο αρχείο " "αντικατάστασης '%s'" -#: ../gio/glib-compile-schemas.c:1865 ../gio/glib-compile-schemas.c:1923 -#: ../gio/glib-compile-schemas.c:1951 +#: ../gio/glib-compile-schemas.c:1907 ../gio/glib-compile-schemas.c:1965 +#: ../gio/glib-compile-schemas.c:1993 #, c-format msgid "; ignoring override for this key.\n" msgstr "· παράβλεψη αντικατάστασης για αυτό το κλειδί.\n" -#: ../gio/glib-compile-schemas.c:1869 ../gio/glib-compile-schemas.c:1927 -#: ../gio/glib-compile-schemas.c:1955 +#: ../gio/glib-compile-schemas.c:1911 ../gio/glib-compile-schemas.c:1969 +#: ../gio/glib-compile-schemas.c:1997 #, c-format msgid " and --strict was specified; exiting.\n" msgstr " και ορίστηκε το --strict· έξοδος.\n" -#: ../gio/glib-compile-schemas.c:1885 +#: ../gio/glib-compile-schemas.c:1927 #, c-format msgid "" "error parsing key '%s' in schema '%s' as specified in override file '%s': %s." @@ -1875,12 +1907,12 @@ msgstr "" "σφάλμα ανάλυσης κλειδιού '%s' στο σχήμα '%s' όπως ορίστηκε στο αρχείο " "αντικατάστασης '%s': %s." -#: ../gio/glib-compile-schemas.c:1895 +#: ../gio/glib-compile-schemas.c:1937 #, c-format msgid "Ignoring override for this key.\n" msgstr "Παράβλεψη αντικατάστασης για αυτό το κλειδί.\n" -#: ../gio/glib-compile-schemas.c:1913 +#: ../gio/glib-compile-schemas.c:1955 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is outside the " @@ -1889,7 +1921,7 @@ msgstr "" "η αντικατάσταση για το κλειδί '%s' στο σχήμα '%s' στο αρχείο αντικατάστασης " "'%s' είναι εκτός της εμβέλειας που έχει δοθεί στο σχήμα" -#: ../gio/glib-compile-schemas.c:1941 +#: ../gio/glib-compile-schemas.c:1983 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is not in the " @@ -1898,23 +1930,23 @@ msgstr "" "η αντικατάσταση για το κλειδί'%s' στο σχήμα '%s' στο αρχείο αντικατάστασης " "'%s' δεν είναι στον κατάλογο έγκυρων επιλογών" -#: ../gio/glib-compile-schemas.c:1994 +#: ../gio/glib-compile-schemas.c:2036 msgid "where to store the gschemas.compiled file" msgstr "πού να αποθηκευτεί το αρχείο gschemas.compiled" -#: ../gio/glib-compile-schemas.c:1995 +#: ../gio/glib-compile-schemas.c:2037 msgid "Abort on any errors in schemas" msgstr "Εγκατάλειψη σε κάθε σφάλμα σε σχήματα" -#: ../gio/glib-compile-schemas.c:1996 +#: ../gio/glib-compile-schemas.c:2038 msgid "Do not write the gschema.compiled file" msgstr "Μην γράφετε το αρχείο gschema.compiled" -#: ../gio/glib-compile-schemas.c:1997 +#: ../gio/glib-compile-schemas.c:2039 msgid "Do not enforce key name restrictions" msgstr "Μην επιβάλετε περιορισμούς στο όνομα κλειδιού" -#: ../gio/glib-compile-schemas.c:2026 +#: ../gio/glib-compile-schemas.c:2068 msgid "" "Compile all GSettings schema files into a schema cache.\n" "Schema files are required to have the extension .gschema.xml,\n" @@ -1924,150 +1956,146 @@ msgstr "" "Τα αρχεία σχημάτων απαιτείται να έχουν την επέκταση.gschema.xml\n" "και το αρχείο κρυφής μνήμης καλείται gschemas.compiled." -#: ../gio/glib-compile-schemas.c:2042 +#: ../gio/glib-compile-schemas.c:2084 #, c-format msgid "You should give exactly one directory name\n" msgstr "Πρέπει να δώσετε ακριβώς ένα όνομα καταλόγου\n" -#: ../gio/glib-compile-schemas.c:2081 +#: ../gio/glib-compile-schemas.c:2123 #, c-format msgid "No schema files found: " msgstr "Κανένα αρχείο σχημάτων δεν βρέθηκε: " -#: ../gio/glib-compile-schemas.c:2084 +#: ../gio/glib-compile-schemas.c:2126 #, c-format msgid "doing nothing.\n" msgstr "αδρανές.\n" -#: ../gio/glib-compile-schemas.c:2087 +#: ../gio/glib-compile-schemas.c:2129 #, c-format msgid "removed existing output file.\n" msgstr "αφαίρεση υπάρχοντος αρχείου εξόδου.\n" -#: ../gio/glocaldirectorymonitor.c:224 -msgid "Unable to find default local directory monitor type" -msgstr "Δε βρέθηκε ο τύπος παρακολούθησης του προεπιλεγμένου τοπικού καταλόγου" - -#: ../gio/glocalfile.c:604 ../gio/win32/gwinhttpfile.c:420 +#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420 #, c-format msgid "Invalid filename %s" msgstr "Άκυρο όνομα αρχείου: %s" -#: ../gio/glocalfile.c:981 +#: ../gio/glocalfile.c:1012 #, c-format msgid "Error getting filesystem info: %s" msgstr "Σφάλμα λήψης πληροφοριών συστήματος αρχείων: %s" -#: ../gio/glocalfile.c:1149 +#: ../gio/glocalfile.c:1180 msgid "Can't rename root directory" msgstr "Αδυναμία μετονομασίας του καταλόγου root" -#: ../gio/glocalfile.c:1169 ../gio/glocalfile.c:1195 +#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226 #, c-format msgid "Error renaming file: %s" msgstr "Σφάλμα μετονομασίας αρχείου: %s" -#: ../gio/glocalfile.c:1178 +#: ../gio/glocalfile.c:1209 msgid "Can't rename file, filename already exists" msgstr "Αδυναμία μετονομασίας του αρχείου, το όνομα αρχείου υπάρχει ήδη" -#: ../gio/glocalfile.c:1191 ../gio/glocalfile.c:2210 ../gio/glocalfile.c:2239 -#: ../gio/glocalfile.c:2399 ../gio/glocalfileoutputstream.c:549 +#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2249 ../gio/glocalfile.c:2278 +#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549 msgid "Invalid filename" msgstr "Άκυρο όνομα αρχείου" -#: ../gio/glocalfile.c:1358 ../gio/glocalfile.c:1382 +#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413 msgid "Can't open directory" msgstr "Αδυναμία ανοίγματος καταλόγου" -#: ../gio/glocalfile.c:1366 +#: ../gio/glocalfile.c:1397 #, c-format msgid "Error opening file: %s" msgstr "Σφάλμα ανοίγματος αρχείου: %s" -#: ../gio/glocalfile.c:1507 +#: ../gio/glocalfile.c:1538 #, c-format msgid "Error removing file: %s" msgstr "Σφάλμα αφαίρεσης αρχείου: %s" -#: ../gio/glocalfile.c:1887 +#: ../gio/glocalfile.c:1922 #, c-format msgid "Error trashing file: %s" msgstr "Σφάλμα μεταφοράς αρχείου στα απορρίμματα: %s" # gconf/gconf-internals.c:2416 -#: ../gio/glocalfile.c:1910 +#: ../gio/glocalfile.c:1945 #, c-format msgid "Unable to create trash dir %s: %s" msgstr "Αποτυχία δημιουργίας καταλόγου απορριμμάτων %s: %s" -#: ../gio/glocalfile.c:1931 +#: ../gio/glocalfile.c:1966 msgid "Unable to find toplevel directory for trash" msgstr "Αδυναμία εύρεσης καταλόγου ανωτάτου επιπέδου για τα απορρίμματα" -#: ../gio/glocalfile.c:2010 ../gio/glocalfile.c:2030 +#: ../gio/glocalfile.c:2045 ../gio/glocalfile.c:2065 msgid "Unable to find or create trash directory" msgstr "Αδύνατη η εύρεση ή δημιουργία του καταλόγου απορριμμάτων" # gconf/gconf-internals.c:2416 -#: ../gio/glocalfile.c:2064 +#: ../gio/glocalfile.c:2099 #, c-format msgid "Unable to create trashing info file: %s" msgstr "Αποτυχία δημιουργίας αρχείου πληροφοριών απορριμμάτων: %s" # gconf/gconf-internals.c:2416 -#: ../gio/glocalfile.c:2095 ../gio/glocalfile.c:2100 ../gio/glocalfile.c:2180 -#: ../gio/glocalfile.c:2187 +#: ../gio/glocalfile.c:2157 ../gio/glocalfile.c:2162 ../gio/glocalfile.c:2219 +#: ../gio/glocalfile.c:2226 #, c-format msgid "Unable to trash file: %s" msgstr "Αδύνατη η μεταφορά του αρχείου στα απορρίμματα: %s" -#: ../gio/glocalfile.c:2188 ../glib/gregex.c:281 +#: ../gio/glocalfile.c:2227 ../glib/gregex.c:281 msgid "internal error" msgstr "εσωτερικό σφάλμα" -#: ../gio/glocalfile.c:2214 +#: ../gio/glocalfile.c:2253 #, c-format msgid "Error creating directory: %s" msgstr "Σφάλμα δημιουργίας καταλόγου: %s" # gconf/gconf-internals.c:2416 -#: ../gio/glocalfile.c:2243 +#: ../gio/glocalfile.c:2282 #, c-format msgid "Filesystem does not support symbolic links" msgstr "Το σύστημα αρχείων δεν υποστηρίζει συμβολικούς συνδέσμους" # gconf/gconftool.c:1181 -#: ../gio/glocalfile.c:2247 +#: ../gio/glocalfile.c:2286 #, c-format msgid "Error making symbolic link: %s" msgstr "Σφάλμα δημιουργίας συμβολικού συνδέσμου: %s" -#: ../gio/glocalfile.c:2309 ../gio/glocalfile.c:2403 +#: ../gio/glocalfile.c:2348 ../gio/glocalfile.c:2442 #, c-format msgid "Error moving file: %s" msgstr "Σφάλμα μετακίνησης αρχείου: %s" -#: ../gio/glocalfile.c:2332 +#: ../gio/glocalfile.c:2371 msgid "Can't move directory over directory" msgstr "Αδυναμία μετακίνησης καταλόγου σε άλλον" -#: ../gio/glocalfile.c:2359 ../gio/glocalfileoutputstream.c:925 +#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:925 #: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954 #: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984 msgid "Backup file creation failed" msgstr "Αποτυχία δημιουργίας αντιγράφου ασφαλείας" -#: ../gio/glocalfile.c:2378 +#: ../gio/glocalfile.c:2417 #, c-format msgid "Error removing target file: %s" msgstr "Σφάλμα αφαίρεσης του αρχείου προορισμού: %s" -#: ../gio/glocalfile.c:2392 +#: ../gio/glocalfile.c:2431 msgid "Move between mounts not supported" msgstr "Δεν υποστηρίζεται η μετακίνηση μεταξύ προσαρτήσεων" -#: ../gio/glocalfile.c:2603 +#: ../gio/glocalfile.c:2623 #, c-format msgid "Could not determine the disk usage of %s: %s" msgstr "Αδυναμία προσδιορισμού της χρήσης δίσκου %s: %s" @@ -2089,86 +2117,86 @@ msgstr "Άκυρο εκτεταμένο όνομα γνωρίσματος" msgid "Error setting extended attribute '%s': %s" msgstr "Σφάλμα ορισμού εκτεταμένου γνωρίσματος '%s': %s" -#: ../gio/glocalfileinfo.c:1556 +#: ../gio/glocalfileinfo.c:1575 msgid " (invalid encoding)" msgstr " (άκυρη κωδικοποίηση)" # -#: ../gio/glocalfileinfo.c:1747 ../gio/glocalfileoutputstream.c:803 +#: ../gio/glocalfileinfo.c:1766 ../gio/glocalfileoutputstream.c:803 #, c-format msgid "Error when getting information for file '%s': %s" msgstr "Σφάλμα λήψης πληροφοριών αρχείου '%s': %s" -#: ../gio/glocalfileinfo.c:1998 +#: ../gio/glocalfileinfo.c:2017 #, c-format msgid "Error when getting information for file descriptor: %s" msgstr "Σφάλμα λήψης πληροφοριών για περιγραφέα αρχείου: %s" -#: ../gio/glocalfileinfo.c:2043 +#: ../gio/glocalfileinfo.c:2062 msgid "Invalid attribute type (uint32 expected)" msgstr "Άκυρος τύπος γνωρίσματος (αναμένεται uint32)" -#: ../gio/glocalfileinfo.c:2061 +#: ../gio/glocalfileinfo.c:2080 msgid "Invalid attribute type (uint64 expected)" msgstr "Άκυρος τύπος γνωρίσματος (αναμένεται uint64)" -#: ../gio/glocalfileinfo.c:2080 ../gio/glocalfileinfo.c:2099 +#: ../gio/glocalfileinfo.c:2099 ../gio/glocalfileinfo.c:2118 msgid "Invalid attribute type (byte string expected)" msgstr "Άκυρος τύπος γνωρίσματος (αναμένεται συμβολοσειρά byte)" # gconf/gconftool.c:1181 -#: ../gio/glocalfileinfo.c:2134 +#: ../gio/glocalfileinfo.c:2153 msgid "Cannot set permissions on symlinks" msgstr "Αδυναμία ορισμού δικαιωμάτων σε συμβολικούς συνδέσμους" # gconf/gconftool.c:1181 -#: ../gio/glocalfileinfo.c:2150 +#: ../gio/glocalfileinfo.c:2169 #, c-format msgid "Error setting permissions: %s" msgstr "Σφάλμα ρύθμισης δικαιωμάτων: %s" # gconf/gconftool.c:1181 -#: ../gio/glocalfileinfo.c:2201 +#: ../gio/glocalfileinfo.c:2220 #, c-format msgid "Error setting owner: %s" msgstr "Σφάλμα ρύθμισης ιδιοκτήτη: %s" -#: ../gio/glocalfileinfo.c:2224 +#: ../gio/glocalfileinfo.c:2243 msgid "symlink must be non-NULL" msgstr "ο συμβολικός σύνδεσμος πρέπει να είναι μη μηδενικός" -#: ../gio/glocalfileinfo.c:2234 ../gio/glocalfileinfo.c:2253 -#: ../gio/glocalfileinfo.c:2264 +#: ../gio/glocalfileinfo.c:2253 ../gio/glocalfileinfo.c:2272 +#: ../gio/glocalfileinfo.c:2283 #, c-format msgid "Error setting symlink: %s" msgstr "Σφάλμα ορισμού συμβολικού συνδέσμου: %s" -#: ../gio/glocalfileinfo.c:2243 +#: ../gio/glocalfileinfo.c:2262 msgid "Error setting symlink: file is not a symlink" msgstr "" "Σφάλμα ορισμού συμβολικού συνδέσμου: το αρχείο δεν είναι συμβολικός σύνδεσμος" # gconf/gconftool.c:1181 -#: ../gio/glocalfileinfo.c:2369 +#: ../gio/glocalfileinfo.c:2388 #, c-format msgid "Error setting modification or access time: %s" msgstr "Σφάλμα ρύθμισης τροποποίησης ή χρόνου πρόσβασης: %s" -#: ../gio/glocalfileinfo.c:2392 +#: ../gio/glocalfileinfo.c:2411 msgid "SELinux context must be non-NULL" msgstr "Το περιεχόμενο SELinux πρέπει να είναι μη μηδενικό" # gconf/gconftool.c:1181 -#: ../gio/glocalfileinfo.c:2407 +#: ../gio/glocalfileinfo.c:2426 #, c-format msgid "Error setting SELinux context: %s" msgstr "Σφάλμα ρύθμισης του περιεχομένου SELinux: %s" -#: ../gio/glocalfileinfo.c:2414 +#: ../gio/glocalfileinfo.c:2433 msgid "SELinux is not enabled on this system" msgstr "Το SELinux δεν έχει ενεργοποιηθεί στο σύστημά σας" -#: ../gio/glocalfileinfo.c:2506 +#: ../gio/glocalfileinfo.c:2525 #, c-format msgid "Setting attribute %s not supported" msgstr "Δεν υποστηρίζεται ο ορισμός του γνωρίσματος %s" @@ -2191,7 +2219,7 @@ msgstr "Σφάλμα αναζήτησης στο αρχείο: %s" msgid "Error closing file: %s" msgstr "Σφάλμα κλεισίματος αρχείου: %s" -#: ../gio/glocalfilemonitor.c:145 +#: ../gio/glocalfilemonitor.c:840 msgid "Unable to find default local file monitor type" msgstr "Δε βρέθηκε ο τύπος παρακολούθησης του προεπιλεγμένου τοπικού αρχείου" @@ -2249,7 +2277,7 @@ msgstr "Το αρχείο τροποποιήθηκε εξωτερικά" msgid "Error removing old file: %s" msgstr "Σφάλμα αφαίρεσης παλαιού αρχείου: %s" -#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:769 +#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:771 msgid "Invalid GSeekType supplied" msgstr "Δόθηκε άκυρο GSeekType" @@ -2261,15 +2289,15 @@ msgstr "Άκυρη αίτηση αναζήτησης" msgid "Cannot truncate GMemoryInputStream" msgstr "Αδυναμία περικοπής του GMemoryInputStream" -#: ../gio/gmemoryoutputstream.c:565 +#: ../gio/gmemoryoutputstream.c:567 msgid "Memory output stream not resizable" msgstr "Η ροή εξόδου μνήμης δεν είναι κλιμακώσιμη" -#: ../gio/gmemoryoutputstream.c:581 +#: ../gio/gmemoryoutputstream.c:583 msgid "Failed to resize memory output stream" msgstr "Αποτυχία κλιμάκωσης της ροής εξόδου μνήμης" -#: ../gio/gmemoryoutputstream.c:671 +#: ../gio/gmemoryoutputstream.c:673 msgid "" "Amount of memory required to process the write is larger than available " "address space" @@ -2277,11 +2305,11 @@ msgstr "" "Το ποσό μνήμης που απαιτείται για την επεξεργασία της εγγραφής είναι " "μεγαλύτερο από το διαθέσιμο χώρο διευθύνσεων" -#: ../gio/gmemoryoutputstream.c:779 +#: ../gio/gmemoryoutputstream.c:781 msgid "Requested seek before the beginning of the stream" msgstr "Αίτηση αναζήτησης πριν την έναρξη της ροής" -#: ../gio/gmemoryoutputstream.c:794 +#: ../gio/gmemoryoutputstream.c:796 msgid "Requested seek beyond the end of the stream" msgstr "Αίτηση αναζήτησης πέραν του τέλους της ροής" @@ -2336,16 +2364,16 @@ msgstr "η προσάρτηση δεν υποστηρίζει την πρόβλ msgid "mount doesn't implement synchronous content type guessing" msgstr "η προσάρτηση δεν υποστηρίζει την πρόβλεψη σύγχρονου τύπου περιεχομένου" -#: ../gio/gnetworkaddress.c:383 +#: ../gio/gnetworkaddress.c:378 #, c-format msgid "Hostname '%s' contains '[' but not ']'" msgstr "Το όνομα κεντρικού υπολογιστή '%s' περιέχει το '[' αλλά όχι το ']'" -#: ../gio/gnetworkmonitorbase.c:199 ../gio/gnetworkmonitorbase.c:302 +#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:309 msgid "Network unreachable" msgstr "Απροσπέλαστο δίκτυο" -#: ../gio/gnetworkmonitorbase.c:237 ../gio/gnetworkmonitorbase.c:267 +#: ../gio/gnetworkmonitorbase.c:244 ../gio/gnetworkmonitorbase.c:274 msgid "Host unreachable" msgstr "Απροσπέλαστος κεντρικός υπολογιστής" @@ -2363,53 +2391,53 @@ msgstr "Αδυναμία δημιουργίας παρακολούθησης δ msgid "Could not get network status: " msgstr "Αδυναμία λήψης κατάστασης δικτύου: " -#: ../gio/gnetworkmonitornm.c:278 +#: ../gio/gnetworkmonitornm.c:326 #, c-format msgid "NetworkManager version too old" msgstr "Πολύ παλιά έκδοση του NetworkManager" -#: ../gio/goutputstream.c:209 ../gio/goutputstream.c:557 +#: ../gio/goutputstream.c:212 ../gio/goutputstream.c:560 msgid "Output stream doesn't implement write" msgstr "Η ροή εξόδου δεν υποστηρίζει την εγγραφή" -#: ../gio/goutputstream.c:518 ../gio/goutputstream.c:1218 +#: ../gio/goutputstream.c:521 ../gio/goutputstream.c:1222 msgid "Source stream is already closed" msgstr "Η ροή πηγής έχει ήδη κλείσει" # -#: ../gio/gresolver.c:331 ../gio/gthreadedresolver.c:116 +#: ../gio/gresolver.c:330 ../gio/gthreadedresolver.c:116 #: ../gio/gthreadedresolver.c:126 #, c-format msgid "Error resolving '%s': %s" msgstr "Σφάλμα επίλυσης του '%s': %s" -#: ../gio/gresource.c:298 ../gio/gresource.c:546 ../gio/gresource.c:563 -#: ../gio/gresource.c:684 ../gio/gresource.c:753 ../gio/gresource.c:814 -#: ../gio/gresource.c:894 ../gio/gresourcefile.c:452 -#: ../gio/gresourcefile.c:553 ../gio/gresourcefile.c:655 +#: ../gio/gresource.c:304 ../gio/gresource.c:555 ../gio/gresource.c:572 +#: ../gio/gresource.c:693 ../gio/gresource.c:762 ../gio/gresource.c:823 +#: ../gio/gresource.c:903 ../gio/gresourcefile.c:453 ../gio/gresourcefile.c:576 +#: ../gio/gresourcefile.c:713 #, c-format msgid "The resource at '%s' does not exist" msgstr "Η πηγή στο '%s' δεν υπάρχει" -#: ../gio/gresource.c:463 +#: ../gio/gresource.c:469 #, c-format msgid "The resource at '%s' failed to decompress" msgstr "Αποτυχία αποσυμπίεσης πηγής στο '%s'" -#: ../gio/gresourcefile.c:651 +#: ../gio/gresourcefile.c:709 #, c-format msgid "The resource at '%s' is not a directory" msgstr "Η πηγή στο '%s' δεν είναι κατάλογος" -#: ../gio/gresourcefile.c:859 +#: ../gio/gresourcefile.c:917 msgid "Input stream doesn't implement seek" msgstr "Η ροή εισόδου δεν υποστηρίζει αναζήτηση" -#: ../gio/gresource-tool.c:491 +#: ../gio/gresource-tool.c:494 msgid "List sections containing resources in an elf FILE" msgstr "Οι ενότητες λίστας περιέχουν πηγές σε ΑΡΧΕΙΟ elf" -#: ../gio/gresource-tool.c:497 +#: ../gio/gresource-tool.c:500 msgid "" "List resources\n" "If SECTION is given, only list resources in this section\n" @@ -2419,16 +2447,16 @@ msgstr "" "Εάν δίνεται ΕΝΟΤΗΤΑ, μόνο πηγές λίστας σε αυτήν την ενότητα\n" "Εάν δίνεται ΔΙΑΔΡΟΜΗ, μόνο λίστα που ταιριάζει στις πηγές" -#: ../gio/gresource-tool.c:500 ../gio/gresource-tool.c:510 +#: ../gio/gresource-tool.c:503 ../gio/gresource-tool.c:513 msgid "FILE [PATH]" msgstr "ΑΡΧΕΙΟ [ΔΙΑΔΡΟΜΗ]" -#: ../gio/gresource-tool.c:501 ../gio/gresource-tool.c:511 -#: ../gio/gresource-tool.c:518 +#: ../gio/gresource-tool.c:504 ../gio/gresource-tool.c:514 +#: ../gio/gresource-tool.c:521 msgid "SECTION" msgstr "ΕΝΟΤΗΤΑ" -#: ../gio/gresource-tool.c:506 +#: ../gio/gresource-tool.c:509 msgid "" "List resources with details\n" "If SECTION is given, only list resources in this section\n" @@ -2440,15 +2468,15 @@ msgstr "" "Εάν δίνεται ΔΙΑΔΡΟΜΗ, μόνο λίστα που ταιριάζει στις πηγές\n" "Οι λεπτομέρειες περιλαμβάνουν την ενότητα, μέγεθος και συμπίεση" -#: ../gio/gresource-tool.c:516 +#: ../gio/gresource-tool.c:519 msgid "Extract a resource file to stdout" msgstr "Εξαγωγή αρχείου πηγής σε τυπική έξοδο" -#: ../gio/gresource-tool.c:517 +#: ../gio/gresource-tool.c:520 msgid "FILE PATH" msgstr "ΔΙΑΔΡΟΜΗ ΑΡΧΕΙΟΥ" -#: ../gio/gresource-tool.c:531 +#: ../gio/gresource-tool.c:534 msgid "" "Usage:\n" " gresource [--section SECTION] COMMAND [ARGS...]\n" @@ -2476,7 +2504,7 @@ msgstr "" "Χρήση 'gresource help COMMAND' για λήψη αναλυτικής βοήθειας.\n" "\n" -#: ../gio/gresource-tool.c:545 +#: ../gio/gresource-tool.c:548 #, c-format msgid "" "Usage:\n" @@ -2491,19 +2519,19 @@ msgstr "" "%s\n" "\n" -#: ../gio/gresource-tool.c:552 +#: ../gio/gresource-tool.c:555 msgid " SECTION An (optional) elf section name\n" msgstr " SECTION Ένα (προαιρετικό) όνομα ενότητας elf\n" -#: ../gio/gresource-tool.c:556 ../gio/gsettings-tool.c:648 +#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:639 msgid " COMMAND The (optional) command to explain\n" msgstr " COMMAND Η (προαιρετική) εντολή για επεξήγηση\n" -#: ../gio/gresource-tool.c:562 +#: ../gio/gresource-tool.c:565 msgid " FILE An elf file (a binary or a shared library)\n" msgstr " FILE Ένα αρχείο elf (δυαδικό ή κοινόχρηστης βιβλιοθήκης)\n" -#: ../gio/gresource-tool.c:565 +#: ../gio/gresource-tool.c:568 msgid "" " FILE An elf file (a binary or a shared library)\n" " or a compiled resource file\n" @@ -2511,23 +2539,24 @@ msgstr "" " FILE Αρχείο elf (δυαδικό ή κοινόχρηστης βιβλιοθήκης)\n" " ή μεταγλωττισμένο πηγαίο αρχείο\n" -#: ../gio/gresource-tool.c:569 +#: ../gio/gresource-tool.c:572 msgid "[PATH]" msgstr "[ΔΙΑΔΡΟΜΗ]" -#: ../gio/gresource-tool.c:571 +#: ../gio/gresource-tool.c:574 msgid " PATH An (optional) resource path (may be partial)\n" msgstr " PATH (Προαιρετική) διαδρομή πηγής (μπορεί να είναι μερικό)\n" -#: ../gio/gresource-tool.c:572 +#: ../gio/gresource-tool.c:575 msgid "PATH" msgstr "ΔΙΑΔΡΟΜΗ" -#: ../gio/gresource-tool.c:574 +#: ../gio/gresource-tool.c:577 msgid " PATH A resource path\n" msgstr " PATH Διαδρομή πηγής\n" #: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72 +#: ../gio/gsettings-tool.c:830 #, c-format msgid "No such schema '%s'\n" msgstr "Χωρίς τέτοιο σχήμα '%s'\n" @@ -2563,38 +2592,38 @@ msgstr "Η διαδρομή πρέπει να τελειώνει με μια κ msgid "Path must not contain two adjacent slashes (//)\n" msgstr "Η διαδρομή δεν πρέπει να περιέχει δύο συνεχόμενες καθέτους (//)\n" -#: ../gio/gsettings-tool.c:490 +#: ../gio/gsettings-tool.c:481 #, c-format msgid "The provided value is outside of the valid range\n" msgstr "Η παρεχόμενη τιμή είναι εκτός του έγκυρου εύρους\n" -#: ../gio/gsettings-tool.c:497 +#: ../gio/gsettings-tool.c:488 #, c-format msgid "The key is not writable\n" msgstr "Το κλειδί δεν είναι εγγράψιμο\n" -#: ../gio/gsettings-tool.c:533 +#: ../gio/gsettings-tool.c:524 msgid "List the installed (non-relocatable) schemas" msgstr "Απαρίθμηση των εγκατεστήμενων (μη μετακινούμενων) σχημάτων" -#: ../gio/gsettings-tool.c:539 +#: ../gio/gsettings-tool.c:530 msgid "List the installed relocatable schemas" msgstr "Απαρίθμηση των εγκατεστήμενων μετακινούμενων σχημάτων" -#: ../gio/gsettings-tool.c:545 +#: ../gio/gsettings-tool.c:536 msgid "List the keys in SCHEMA" msgstr "Απαριθμεί τα κλειδιά στο SCHEMA" -#: ../gio/gsettings-tool.c:546 ../gio/gsettings-tool.c:552 -#: ../gio/gsettings-tool.c:589 +#: ../gio/gsettings-tool.c:537 ../gio/gsettings-tool.c:543 +#: ../gio/gsettings-tool.c:580 msgid "SCHEMA[:PATH]" msgstr "SCHEMA[:PATH]" -#: ../gio/gsettings-tool.c:551 +#: ../gio/gsettings-tool.c:542 msgid "List the children of SCHEMA" msgstr "Απαριθμεί τις θυγατρικές του SCHEMA" -#: ../gio/gsettings-tool.c:557 +#: ../gio/gsettings-tool.c:548 msgid "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" @@ -2602,44 +2631,44 @@ msgstr "" "Απαρίθμηση κλειδιών και τιμών, αναδρομικά\n" "Αν δε δίνεται SCHEMA, προβολή όλων των κλειδιών\n" -#: ../gio/gsettings-tool.c:559 +#: ../gio/gsettings-tool.c:550 msgid "[SCHEMA[:PATH]]" msgstr "[SCHEMA[:PATH]]" -#: ../gio/gsettings-tool.c:564 +#: ../gio/gsettings-tool.c:555 msgid "Get the value of KEY" msgstr "Λήψη τιμής της KEY" -#: ../gio/gsettings-tool.c:565 ../gio/gsettings-tool.c:571 -#: ../gio/gsettings-tool.c:583 ../gio/gsettings-tool.c:595 +#: ../gio/gsettings-tool.c:556 ../gio/gsettings-tool.c:562 +#: ../gio/gsettings-tool.c:574 ../gio/gsettings-tool.c:586 msgid "SCHEMA[:PATH] KEY" msgstr "SCHEMA[:PATH] KEY" -#: ../gio/gsettings-tool.c:570 +#: ../gio/gsettings-tool.c:561 msgid "Query the range of valid values for KEY" msgstr "Αναζητεί το εύρος των έγκυρων τιμών για KEY" -#: ../gio/gsettings-tool.c:576 +#: ../gio/gsettings-tool.c:567 msgid "Set the value of KEY to VALUE" msgstr "Ορίζει την τιμή της KEY σε VALUE" -#: ../gio/gsettings-tool.c:577 +#: ../gio/gsettings-tool.c:568 msgid "SCHEMA[:PATH] KEY VALUE" msgstr "SCHEMA[:PATH] KEY VALUE" -#: ../gio/gsettings-tool.c:582 +#: ../gio/gsettings-tool.c:573 msgid "Reset KEY to its default value" msgstr "Επαναφέρει την KEY στην προεπιλεγμένη της τιμή" -#: ../gio/gsettings-tool.c:588 +#: ../gio/gsettings-tool.c:579 msgid "Reset all keys in SCHEMA to their defaults" msgstr "Επαναφορά όλων των κλειδιών στο SCHEMA στις προεπιλογές τους" -#: ../gio/gsettings-tool.c:594 +#: ../gio/gsettings-tool.c:585 msgid "Check if KEY is writable" msgstr "Έλεγχος εγγραψιμότητας του KEY" -#: ../gio/gsettings-tool.c:600 +#: ../gio/gsettings-tool.c:591 msgid "" "Monitor KEY for changes.\n" "If no KEY is specified, monitor all keys in SCHEMA.\n" @@ -2649,11 +2678,11 @@ msgstr "" "Αν δεν έχει ορισθεί KEY, παρακολουθεί όλα τα κλειδιά στο SCHEMA.\n" "Χρησιμοποιείστε το ^C για τερματισμό της παρακολούθησης.\n" -#: ../gio/gsettings-tool.c:603 +#: ../gio/gsettings-tool.c:594 msgid "SCHEMA[:PATH] [KEY]" msgstr "SCHEMA[:PATH] [KEY]" -#: ../gio/gsettings-tool.c:615 +#: ../gio/gsettings-tool.c:606 msgid "" "Usage:\n" " gsettings --version\n" @@ -2699,7 +2728,7 @@ msgstr "" "Χρησιμοποιήστε 'gsettings help COMMAND' για αναλυτική βοήθεια.\n" "\n" -#: ../gio/gsettings-tool.c:638 +#: ../gio/gsettings-tool.c:629 #, c-format msgid "" "Usage:\n" @@ -2714,11 +2743,11 @@ msgstr "" "%s\n" "\n" -#: ../gio/gsettings-tool.c:644 +#: ../gio/gsettings-tool.c:635 msgid " SCHEMADIR A directory to search for additional schemas\n" msgstr " SCHEMADIR Κατάλογος αναζήτησης για πρόσθετα σχήματα\n" -#: ../gio/gsettings-tool.c:652 +#: ../gio/gsettings-tool.c:643 msgid "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" @@ -2726,167 +2755,185 @@ msgstr "" " SCHEMA Το όνομα του σχήματος\n" " PATH Η διαδρομή, για μετακινούμενα σχήματα\n" -#: ../gio/gsettings-tool.c:657 +#: ../gio/gsettings-tool.c:648 msgid " KEY The (optional) key within the schema\n" msgstr " KEY Το (προαιρετικό) κλειδί στο σχήμα\n" -#: ../gio/gsettings-tool.c:661 +#: ../gio/gsettings-tool.c:652 msgid " KEY The key within the schema\n" msgstr " KEY Το κλειδί στο σχήμα\n" -#: ../gio/gsettings-tool.c:665 +#: ../gio/gsettings-tool.c:656 msgid " VALUE The value to set\n" msgstr " VALUE Η τιμή που θα ορισθεί\n" -#: ../gio/gsettings-tool.c:720 +#: ../gio/gsettings-tool.c:711 #, c-format msgid "Could not load schemas from %s: %s\n" msgstr "Αδυναμία φόρτωσης διατάξεων από %s: %s\n" -#: ../gio/gsettings-tool.c:782 +#: ../gio/gsettings-tool.c:723 +#, c-format +msgid "No schemas installed\n" +msgstr "Δεν εγκαταστάθηκαν σχήματα\n" + +#: ../gio/gsettings-tool.c:788 #, c-format msgid "Empty schema name given\n" msgstr "Δόθηκε κενό όνομα σχήματος\n" -#: ../gio/gsettings-tool.c:811 +#: ../gio/gsettings-tool.c:843 #, c-format msgid "No such key '%s'\n" msgstr "Χωρίς τέτοιο κλειδί '%s'\n" -#: ../gio/gsocket.c:271 +#: ../gio/gsocket.c:364 msgid "Invalid socket, not initialized" msgstr "Άκυρος υποδοχέας, δεν αρχικοποιήθηκε" -#: ../gio/gsocket.c:278 +#: ../gio/gsocket.c:371 #, c-format msgid "Invalid socket, initialization failed due to: %s" msgstr "Άκυρος υποδοχέας, η αρχικοποίηση απέτυχε λόγω του: %s" -#: ../gio/gsocket.c:286 +#: ../gio/gsocket.c:379 msgid "Socket is already closed" msgstr "Ο υποδοχέας είναι ήδη κλειστός" -#: ../gio/gsocket.c:301 ../gio/gsocket.c:3627 ../gio/gsocket.c:3682 +#: ../gio/gsocket.c:394 ../gio/gsocket.c:2751 ../gio/gsocket.c:3896 +#: ../gio/gsocket.c:3951 msgid "Socket I/O timed out" msgstr "Η υποδοχή I/O έληξε" -#: ../gio/gsocket.c:448 +#: ../gio/gsocket.c:526 #, c-format msgid "creating GSocket from fd: %s" msgstr "δημιουργία GSocket από fd: %s" # gconf/gconf-internals.c:2416 -#: ../gio/gsocket.c:476 ../gio/gsocket.c:530 ../gio/gsocket.c:537 +#: ../gio/gsocket.c:554 ../gio/gsocket.c:608 ../gio/gsocket.c:615 #, c-format msgid "Unable to create socket: %s" msgstr "Αδυναμία δημιουργίας υποδοχέα: %s" -#: ../gio/gsocket.c:530 +#: ../gio/gsocket.c:608 msgid "Unknown family was specified" msgstr "Ορίστηκε άγνωστη οικογένεια" -#: ../gio/gsocket.c:537 +#: ../gio/gsocket.c:615 msgid "Unknown protocol was specified" msgstr "Ορίστηκε άγνωστο πρωτόκολλο" -#: ../gio/gsocket.c:1727 +#: ../gio/gsocket.c:1104 +#, c-format +msgid "Cannot use datagram operations on a non-datagram socket." +msgstr "Αδυναμία χρήσης αυτοδύναμων λειτουργιών σε μια μη αυτοδύναμη υποδοχή." + +#: ../gio/gsocket.c:1121 +#, c-format +msgid "Cannot use datagram operations on a socket with a timeout set." +msgstr "" +"Αδυναμία χρήσης αυτοδύναμων λειτουργιών σε μια υποδοχή με ορισμένο χρόνο " +"λήξης." + +#: ../gio/gsocket.c:1925 #, c-format msgid "could not get local address: %s" msgstr "αδυναμία λήψης τοπικής διεύθυνσης: %s" -#: ../gio/gsocket.c:1770 +#: ../gio/gsocket.c:1968 #, c-format msgid "could not get remote address: %s" msgstr "αδυναμία λήψης απομακρυσμένης διεύθυνσης: %s" -#: ../gio/gsocket.c:1831 +#: ../gio/gsocket.c:2034 #, c-format msgid "could not listen: %s" msgstr "αδυναμία ακρόασης: %s" -#: ../gio/gsocket.c:1930 +#: ../gio/gsocket.c:2133 #, c-format msgid "Error binding to address: %s" msgstr "Σφάλμα σύνδεσης στην διεύθυνση: %s" # gconf/gconftool.c:1181 -#: ../gio/gsocket.c:2045 ../gio/gsocket.c:2082 +#: ../gio/gsocket.c:2248 ../gio/gsocket.c:2285 #, c-format msgid "Error joining multicast group: %s" msgstr "Σφάλμα ένωσης ομάδας πολυεκπομπής: %s" # gconf/gconftool.c:1181 -#: ../gio/gsocket.c:2046 ../gio/gsocket.c:2083 +#: ../gio/gsocket.c:2249 ../gio/gsocket.c:2286 #, c-format msgid "Error leaving multicast group: %s" msgstr "Σφάλμα απομάκρυνσης ομάδας πολυεκπομπής: %s" -#: ../gio/gsocket.c:2047 +#: ../gio/gsocket.c:2250 msgid "No support for source-specific multicast" msgstr "Χωρίς υποστήριξη για πολυεκπομπή ειδικής πηγής" # gconf/gconftool.c:1181 -#: ../gio/gsocket.c:2269 +#: ../gio/gsocket.c:2470 #, c-format msgid "Error accepting connection: %s" msgstr "Σφάλμα αποδοχής σύνδεσης: %s" -#: ../gio/gsocket.c:2392 +#: ../gio/gsocket.c:2593 msgid "Connection in progress" msgstr "Σύνδεση σε εξέλιξη" # gconf/gconf-internals.c:2416 -#: ../gio/gsocket.c:2442 +#: ../gio/gsocket.c:2644 msgid "Unable to get pending error: " msgstr "Αδυναμία λήψης εκκρεμούς σφάλματος: " -#: ../gio/gsocket.c:2645 +#: ../gio/gsocket.c:2816 #, c-format msgid "Error receiving data: %s" msgstr "Σφάλμα λήψης δεδομένων: %s" -#: ../gio/gsocket.c:2820 +#: ../gio/gsocket.c:3013 #, c-format msgid "Error sending data: %s" msgstr "Σφάλμα αποστολής δεδομένων: %s" # gconf/gconf-internals.c:2416 -#: ../gio/gsocket.c:2934 +#: ../gio/gsocket.c:3200 #, c-format msgid "Unable to shutdown socket: %s" msgstr "Αδυναμία τερματισμού υποδοχής: %s" -#: ../gio/gsocket.c:3013 +#: ../gio/gsocket.c:3281 #, c-format msgid "Error closing socket: %s" msgstr "Σφάλμα τερματισμού υποδοχέα: %s" -#: ../gio/gsocket.c:3620 +#: ../gio/gsocket.c:3889 #, c-format msgid "Waiting for socket condition: %s" msgstr "Αναμονή για την συνθήκη υποδοχέα: %s" -#: ../gio/gsocket.c:3907 ../gio/gsocket.c:3990 ../gio/gsocket.c:4218 +#: ../gio/gsocket.c:4361 ../gio/gsocket.c:4441 ../gio/gsocket.c:4619 #, c-format msgid "Error sending message: %s" msgstr "Σφάλμα αποστολής μηνύματος: %s" -#: ../gio/gsocket.c:3932 +#: ../gio/gsocket.c:4385 msgid "GSocketControlMessage not supported on Windows" msgstr "Το GSocketControlMessage δεν υποστηρίζεται στα Windows" -#: ../gio/gsocket.c:4546 ../gio/gsocket.c:4684 +#: ../gio/gsocket.c:4840 ../gio/gsocket.c:4913 ../gio/gsocket.c:5140 #, c-format msgid "Error receiving message: %s" msgstr "Σφάλμα λήψης μηνύματος: %s" # gconf/gconf-internals.c:2416 -#: ../gio/gsocket.c:4806 +#: ../gio/gsocket.c:5412 #, c-format msgid "Unable to read socket credentials: %s" msgstr "Αδύνατη η ανάγνωση διαπιστευτηρίων υποδοχής: %s" -#: ../gio/gsocket.c:4815 +#: ../gio/gsocket.c:5421 msgid "g_socket_get_credentials not implemented for this OS" msgstr "" "Το g_socket_get_credentials δεν έχει υλοποιηθεί για αυτό το λειτουργικό " @@ -2919,11 +2966,11 @@ msgstr "Η προσπάθεια διαμεσολάβησης σε σύνδεση msgid "Proxy protocol '%s' is not supported." msgstr "Το πρωτόκολλο διαμεσολαβητή '%s' δεν υποστηρίζεται." -#: ../gio/gsocketlistener.c:188 +#: ../gio/gsocketlistener.c:218 msgid "Listener is already closed" msgstr "Η ακρόαση έχει ήδη κλείσει" -#: ../gio/gsocketlistener.c:234 +#: ../gio/gsocketlistener.c:264 msgid "Added socket is closed" msgstr "Ο πρόσθετος υποδοχέας είναι κλειστός" @@ -3147,12 +3194,13 @@ msgstr "Χωρίς αναμονή μηνύματος έλεγχου, αλλά λ msgid "Error while disabling SO_PASSCRED: %s" msgstr "Σφάλμα απενεργοποίησης SO_PASSCRED: %s" -#: ../gio/gunixinputstream.c:370 ../gio/gunixinputstream.c:391 +#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390 #, c-format msgid "Error reading from file descriptor: %s" msgstr "Σφάλμα ανάγνωσης περιγραφέα αρχείου: %s" -#: ../gio/gunixinputstream.c:424 ../gio/gunixoutputstream.c:410 +#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409 +#: ../gio/gwin32inputstream.c:217 ../gio/gwin32outputstream.c:204 #, c-format msgid "Error closing file descriptor: %s" msgstr "Σφάλμα κλεισίματος περιγραφέα αρχείου: %s" @@ -3161,12 +3209,12 @@ msgstr "Σφάλμα κλεισίματος περιγραφέα αρχείου: msgid "Filesystem root" msgstr "Διαχειριστής συστήματος αρχείων" -#: ../gio/gunixoutputstream.c:356 ../gio/gunixoutputstream.c:377 +#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376 #, c-format msgid "Error writing to file descriptor: %s" msgstr "Σφάλμα εγγραφής περιγραφέα αρχείου: %s" -#: ../gio/gunixsocketaddress.c:232 +#: ../gio/gunixsocketaddress.c:239 msgid "Abstract UNIX domain socket addresses not supported on this system" msgstr "" "Δεν υποστηρίζονται αφηρημένες διευθύνσεις υποδοχής τομέα unix σε αυτό το " @@ -3183,35 +3231,17 @@ msgstr "ο τόμος δεν υποστηρίζει εξαγωγή" msgid "volume doesn't implement eject or eject_with_operation" msgstr "ο τόμος δεν υποστηρίζει την εξαγωγή ή eject_with_operation" -#: ../gio/gwin32appinfo.c:274 -msgid "Can't find application" -msgstr "Αδυναμία εύρεσης εφαρμογής" - -# gconf/gconftool.c:1181 -#: ../gio/gwin32appinfo.c:303 -#, c-format -msgid "Error launching application: %s" -msgstr "Σφάλμα εκκίνησης εφαρμογής: %s" - -#: ../gio/gwin32appinfo.c:378 -msgid "association changes not supported on win32" -msgstr "οι αλλαγές συσχετίσεων δεν υποστηρίζονται στα win32" - -#: ../gio/gwin32appinfo.c:390 -msgid "Association creation not supported on win32" -msgstr "Η δημιουργία συσχέτισης δεν υποστηρίζεται σε win32" - -#: ../gio/gwin32inputstream.c:344 +#: ../gio/gwin32inputstream.c:185 #, c-format msgid "Error reading from handle: %s" msgstr "Σφάλμα ανάγνωσης χειριστηρίου: %s" -#: ../gio/gwin32inputstream.c:388 ../gio/gwin32outputstream.c:375 +#: ../gio/gwin32inputstream.c:232 ../gio/gwin32outputstream.c:219 #, c-format msgid "Error closing handle: %s" msgstr "Σφάλμα κλεισίματος χειριστηρίου: %s" -#: ../gio/gwin32outputstream.c:331 +#: ../gio/gwin32outputstream.c:172 #, c-format msgid "Error writing to handle: %s" msgstr "Σφάλμα εγγραφής επεξεργασίας: %s" @@ -3331,8 +3361,8 @@ msgstr "" msgid "Failed to expand exec line '%s' with URI '%s'" msgstr "Αποτυχία ανάπτυξης της γραμμής exec '%s' με URI '%s'" -#: ../glib/gconvert.c:477 ../glib/gutf8.c:833 ../glib/gutf8.c:1044 -#: ../glib/gutf8.c:1181 ../glib/gutf8.c:1285 +#: ../glib/gconvert.c:477 ../glib/gutf8.c:849 ../glib/gutf8.c:1061 +#: ../glib/gutf8.c:1198 ../glib/gutf8.c:1302 msgid "Partial character sequence at end of input" msgstr "Ημιτελής σειρά χαρακτήρα στο τέλος της εισόδου" @@ -3341,38 +3371,38 @@ msgstr "Ημιτελής σειρά χαρακτήρα στο τέλος της msgid "Cannot convert fallback '%s' to codeset '%s'" msgstr "Αδυναμία μετατροπής υποχώρησης '%s' σε σύνολο κώδικα '%s'" -#: ../glib/gconvert.c:1566 +#: ../glib/gconvert.c:1567 #, c-format msgid "The URI '%s' is not an absolute URI using the \"file\" scheme" msgstr "" "Το URI '%s' δεν είναι ένα απόλυτο URI με την χρήση του σχήματος \"αρχείου\"" -#: ../glib/gconvert.c:1576 +#: ../glib/gconvert.c:1577 #, c-format msgid "The local file URI '%s' may not include a '#'" msgstr "Το URI τοπικού αρχείου '%s' μπορεί να μην περιέχει ένα '#'" -#: ../glib/gconvert.c:1593 +#: ../glib/gconvert.c:1594 #, c-format msgid "The URI '%s' is invalid" msgstr "Το URI '%s' δεν είναι έγκυρο" -#: ../glib/gconvert.c:1605 +#: ../glib/gconvert.c:1606 #, c-format msgid "The hostname of the URI '%s' is invalid" msgstr "Το όνομα κεντρικού υπολογιστή του URI '%s' είναι άκυρο" -#: ../glib/gconvert.c:1621 +#: ../glib/gconvert.c:1622 #, c-format msgid "The URI '%s' contains invalidly escaped characters" msgstr "Το URI '%s' περιέχει άκυρους χαρακτήρες διαφυγής" -#: ../glib/gconvert.c:1716 +#: ../glib/gconvert.c:1717 #, c-format msgid "The pathname '%s' is not an absolute path" msgstr "Το όνομα διαδρομής '%s' δεν είναι απόλυτη διαδρομή" -#: ../glib/gconvert.c:1726 +#: ../glib/gconvert.c:1727 msgid "Invalid hostname" msgstr "Άκυρο όνομα κεντρικού υπολογιστή" @@ -3485,7 +3515,7 @@ msgstr "Φεβ" #: ../glib/gdatetime.c:269 msgctxt "abbreviated month name" msgid "Mar" -msgstr "Μάρ" +msgstr "Μαρ" #: ../glib/gdatetime.c:271 msgctxt "abbreviated month name" @@ -3495,22 +3525,22 @@ msgstr "Απρ" #: ../glib/gdatetime.c:273 msgctxt "abbreviated month name" msgid "May" -msgstr "Μάι" +msgstr "Μαϊ" #: ../glib/gdatetime.c:275 msgctxt "abbreviated month name" msgid "Jun" -msgstr "Ιούν" +msgstr "Ιουν" #: ../glib/gdatetime.c:277 msgctxt "abbreviated month name" msgid "Jul" -msgstr "Ιούλ" +msgstr "Ιουλ" #: ../glib/gdatetime.c:279 msgctxt "abbreviated month name" msgid "Aug" -msgstr "Αύγ" +msgstr "Αυγ" #: ../glib/gdatetime.c:281 msgctxt "abbreviated month name" @@ -3525,7 +3555,7 @@ msgstr "Οκτ" #: ../glib/gdatetime.c:285 msgctxt "abbreviated month name" msgid "Nov" -msgstr "Νοέ" +msgstr "Νοε" #: ../glib/gdatetime.c:287 msgctxt "abbreviated month name" @@ -3701,25 +3731,25 @@ msgstr "Αποτυχία ανάγνωσης συμβολικού συνδέσμ msgid "Symbolic links not supported" msgstr "Οι συμβολικοί σύνδεσμοι δεν υποστηρίζονται" -#: ../glib/giochannel.c:1389 +#: ../glib/giochannel.c:1388 #, c-format msgid "Could not open converter from '%s' to '%s': %s" msgstr "Αδυναμία ανοίγματος μετατροπέα από '%s' σε '%s': %s" -#: ../glib/giochannel.c:1734 +#: ../glib/giochannel.c:1733 msgid "Can't do a raw read in g_io_channel_read_line_string" msgstr "Αδυναμία ανάγνωσης raw σε g_io_channel_read_line_string" -#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039 -#: ../glib/giochannel.c:2126 +#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038 +#: ../glib/giochannel.c:2125 msgid "Leftover unconverted data in read buffer" msgstr "Εναπομείναντα αμετάτρεπτα δεδομένα σε μνήμη ανάγνωσης" -#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939 +#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938 msgid "Channel terminates in a partial character" msgstr "Το κανάλι τερματίζει σε ημιτελή χαρακτήρα" -#: ../glib/giochannel.c:1925 +#: ../glib/giochannel.c:1924 msgid "Can't do a raw read in g_io_channel_read_to_end" msgstr "Αδυναμία ανάγνωσης raw σε g_io_channel_read_to_end" @@ -3759,8 +3789,8 @@ msgid "Key file contains unsupported encoding '%s'" msgstr "Το αρχείο κλειδιού περιέχει ανυποστήρικτη κωδικοποίηση '%s'" #: ../glib/gkeyfile.c:1548 ../glib/gkeyfile.c:1721 ../glib/gkeyfile.c:3099 -#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3288 ../glib/gkeyfile.c:3418 -#: ../glib/gkeyfile.c:3560 ../glib/gkeyfile.c:3789 ../glib/gkeyfile.c:3856 +#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3292 ../glib/gkeyfile.c:3422 +#: ../glib/gkeyfile.c:3566 ../glib/gkeyfile.c:3795 ../glib/gkeyfile.c:3862 #, c-format msgid "Key file does not have group '%s'" msgstr "Το αρχείο κλειδιού δεν έχει ομάδα '%s'" @@ -3798,31 +3828,31 @@ msgstr "" msgid "Key '%s' in group '%s' has value '%s' where %s was expected" msgstr "Το κλειδί '%s' στην ομάδα '%s' έχει τιμή '%s' όταν αναμενόταν %s" -#: ../glib/gkeyfile.c:4096 +#: ../glib/gkeyfile.c:4102 msgid "Key file contains escape character at end of line" msgstr "Το αρχείο κλειδιού περιέχει χαρακτήρα διαφυγής στο τέλος της γραμμής" -#: ../glib/gkeyfile.c:4118 +#: ../glib/gkeyfile.c:4124 #, c-format msgid "Key file contains invalid escape sequence '%s'" msgstr "Το αρχείο κλειδιού περιέχει άκυρη σειρά διαφυγής '%s'" -#: ../glib/gkeyfile.c:4260 +#: ../glib/gkeyfile.c:4266 #, c-format msgid "Value '%s' cannot be interpreted as a number." msgstr "Η τιμή '%s' δεν μπορεί να ερμηνευθεί ως αριθμός." -#: ../glib/gkeyfile.c:4274 +#: ../glib/gkeyfile.c:4280 #, c-format msgid "Integer value '%s' out of range" msgstr "Η ακέραιη τιμή '%s' είναι εκτός εύρους" -#: ../glib/gkeyfile.c:4307 +#: ../glib/gkeyfile.c:4313 #, c-format msgid "Value '%s' cannot be interpreted as a float number." msgstr "Η τιμή '%s' δεν μπορεί να ερμηνευθεί ως αριθμός κινητής υποδιαστολής." -#: ../glib/gkeyfile.c:4331 +#: ../glib/gkeyfile.c:4350 #, c-format msgid "Value '%s' cannot be interpreted as a boolean." msgstr "Η τιμή '%s' δεν μπορεί να ερμηνευθεί ως Μπουλ." @@ -3872,7 +3902,7 @@ msgstr "'%s' δεν είναι ένα έγκυρο όνομα: '%c'" msgid "Error on line %d: %s" msgstr "Σφάλμα στη γραμμή %d: %s" -#: ../glib/gmarkup.c:683 +#: ../glib/gmarkup.c:676 #, c-format msgid "" "Failed to parse '%-.*s', which should have been a digit inside a character " @@ -3882,7 +3912,7 @@ msgstr "" "αναφορά χαρακτήρα (ê για παράδειγμα) - ίσως το ψηφίο να είναι πολύ " "μεγάλο" -#: ../glib/gmarkup.c:695 +#: ../glib/gmarkup.c:688 msgid "" "Character reference did not end with a semicolon; most likely you used an " "ampersand character without intending to start an entity - escape ampersand " @@ -3892,25 +3922,25 @@ msgstr "" "χρησιμοποιήσατε συμπλεκτικό χαρακτήρα χωρίς να θέλετε να ξεκινήσετε μια " "οντότητα - διαφυγή συμπλεκτικού ως &" -#: ../glib/gmarkup.c:721 +#: ../glib/gmarkup.c:714 #, c-format msgid "Character reference '%-.*s' does not encode a permitted character" msgstr "" "Η αναφορά χαρακτήρα '%-.*s' δεν κωδικοποιεί έναν επιτρεπόμενο χαρακτήρα" -#: ../glib/gmarkup.c:759 +#: ../glib/gmarkup.c:752 msgid "" "Empty entity '&;' seen; valid entities are: & " < > '" msgstr "" "Κενή οντότητα '&;' παρατηρήθηκε· έγκυρες οντότητες είναι: & " < " "> '" -#: ../glib/gmarkup.c:767 +#: ../glib/gmarkup.c:760 #, c-format msgid "Entity name '%-.*s' is not known" msgstr "Το όνομα οντότητας '%-.*s' δεν είναι γνωστό" -#: ../glib/gmarkup.c:772 +#: ../glib/gmarkup.c:765 msgid "" "Entity did not end with a semicolon; most likely you used an ampersand " "character without intending to start an entity - escape ampersand as &" @@ -3919,11 +3949,11 @@ msgstr "" "συμπλεκτικό χαρακτήρα χωρίς να θέλετε να ξεκινήσετε οντότητα - διαφυγή " "συμπλεκτικού ως &" -#: ../glib/gmarkup.c:1178 +#: ../glib/gmarkup.c:1171 msgid "Document must begin with an element (e.g. )" msgstr "Το έγγραφο πρέπει να ξεκινά με στοιχείο (π.χ. )" -#: ../glib/gmarkup.c:1218 +#: ../glib/gmarkup.c:1211 #, c-format msgid "" "'%s' is not a valid character following a '<' character; it may not begin an " @@ -3932,7 +3962,7 @@ msgstr "" "Το '%s' δεν είναι έγκυρος χαρακτήρας όταν ακολουθείται από χαρακτήρα '<'· " "δεν μπορεί να ξεκινά όνομα στοιχείου" -#: ../glib/gmarkup.c:1260 +#: ../glib/gmarkup.c:1253 #, c-format msgid "" "Odd character '%s', expected a '>' character to end the empty-element tag " @@ -3941,7 +3971,7 @@ msgstr "" "Περίεργος χαρακτήρας '%s', αναμενόταν ο χαρακτήρας '>' στο τέλος της " "ετικέτας του κενού-στοιχείου '%s'" -#: ../glib/gmarkup.c:1341 +#: ../glib/gmarkup.c:1334 #, c-format msgid "" "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" @@ -3949,7 +3979,7 @@ msgstr "" "Περίεργος χαρακτήρας '%s', αναμενόταν ένα '=' μετά το όνομα γνωρίσματος '%s' " "του στοιχείου '%s'" -#: ../glib/gmarkup.c:1382 +#: ../glib/gmarkup.c:1375 #, c-format msgid "" "Odd character '%s', expected a '>' or '/' character to end the start tag of " @@ -3960,7 +3990,7 @@ msgstr "" "της ετικέτας έναρξης του στοιχείου '%s' ή προαιρετικά ένα γνώρισμα· πιθανόν " "να χρησιμοποιήσατε έναν άκυρο χαρακτήρα σε όνομα γνωρίσματος" -#: ../glib/gmarkup.c:1426 +#: ../glib/gmarkup.c:1419 #, c-format msgid "" "Odd character '%s', expected an open quote mark after the equals sign when " @@ -3969,7 +3999,7 @@ msgstr "" "Περίεργος χαρακτήρας '%s', αναμενόταν ένα ανοικτό εισαγωγικό μετά το σύμβολο " "ίσον στην τιμή για το γνώρισμα '%s' του στοιχείου '%s'" -#: ../glib/gmarkup.c:1559 +#: ../glib/gmarkup.c:1552 #, c-format msgid "" "'%s' is not a valid character following the characters ''" -#: ../glib/gmarkup.c:1606 +#: ../glib/gmarkup.c:1599 #, c-format msgid "Element '%s' was closed, no element is currently open" msgstr "Το στοιχείο '%s' έκλεισε, κανένα στοιχείο δεν είναι ανοικτό" -#: ../glib/gmarkup.c:1615 +#: ../glib/gmarkup.c:1608 #, c-format msgid "Element '%s' was closed, but the currently open element is '%s'" msgstr "Το στοιχείο '%s' έκλεισε, αλλά το τρέχον ανοικτό στοιχείο είναι '%s'" -#: ../glib/gmarkup.c:1768 +#: ../glib/gmarkup.c:1761 msgid "Document was empty or contained only whitespace" msgstr "Το έγγραφο ήταν κενό ή περιέχει μόνο λευκό κενό" -#: ../glib/gmarkup.c:1782 +#: ../glib/gmarkup.c:1775 msgid "Document ended unexpectedly just after an open angle bracket '<'" msgstr "" "Το έγγραφο τερματίστηκε απρόσμενα αμέσως μετά από μια ανοικτή γωνιακή " "παρένθεση '<'" -#: ../glib/gmarkup.c:1790 ../glib/gmarkup.c:1835 +#: ../glib/gmarkup.c:1783 ../glib/gmarkup.c:1828 #, c-format msgid "" "Document ended unexpectedly with elements still open - '%s' was the last " @@ -4016,7 +4046,7 @@ msgstr "" "Το έγγραφο τερματίστηκε απρόσμενα με στοιχεία ακόμα ανοικτά - '%s' ήταν το " "τελευταίο στοιχείο που ανοίχθηκε" -#: ../glib/gmarkup.c:1798 +#: ../glib/gmarkup.c:1791 #, c-format msgid "" "Document ended unexpectedly, expected to see a close angle bracket ending " @@ -4025,20 +4055,20 @@ msgstr "" "Το έγγραφο τερματίστηκε απρόσμενα, αναμενόταν μια γωνιακή παρένθεση " "κλεισίματος στο τέλος της ετικέτας <%s/>" -#: ../glib/gmarkup.c:1804 +#: ../glib/gmarkup.c:1797 msgid "Document ended unexpectedly inside an element name" msgstr "Το έγγραφο τερματίστηκε απρόσμενα σε όνομα στοιχείου" -#: ../glib/gmarkup.c:1810 +#: ../glib/gmarkup.c:1803 msgid "Document ended unexpectedly inside an attribute name" msgstr "Το έγγραφο τερματίστηκε απρόσμενα σε όνομα γνωρίσματος" -#: ../glib/gmarkup.c:1815 +#: ../glib/gmarkup.c:1808 msgid "Document ended unexpectedly inside an element-opening tag." msgstr "" "Το έγγραφο τερματίστηκε απρόσμενα μέσα σε ετικέτα ανοίγματος στοιχείου." -#: ../glib/gmarkup.c:1821 +#: ../glib/gmarkup.c:1814 msgid "" "Document ended unexpectedly after the equals sign following an attribute " "name; no attribute value" @@ -4046,76 +4076,80 @@ msgstr "" "Το έγγραφο τερματίστηκε απρόσμενα μετά το σύμβολο ίσον ακολουθούμενο από " "όνομα γνωρίσματος· δεν υπάρχει τιμή γνωρίσματος" -#: ../glib/gmarkup.c:1828 +#: ../glib/gmarkup.c:1821 msgid "Document ended unexpectedly while inside an attribute value" msgstr "Το έγγραφο τερματίστηκε απρόσμενα σε τιμή γνωρίσματος" -#: ../glib/gmarkup.c:1844 +#: ../glib/gmarkup.c:1837 #, c-format msgid "Document ended unexpectedly inside the close tag for element '%s'" msgstr "" "Το έγγραφο τερματίστηκε απρόσμενα σε ετικέτα κλεισίματος για στοιχείο '%s'" -#: ../glib/gmarkup.c:1850 +#: ../glib/gmarkup.c:1843 msgid "Document ended unexpectedly inside a comment or processing instruction" msgstr "Το έγγραφο τερματίστηκε απρόσμενα σε σχόλιο ή οδηγία επεξεργασίας" -#: ../glib/goption.c:858 +#: ../glib/goption.c:857 msgid "Usage:" msgstr "Χρήση:" -#: ../glib/goption.c:858 +#: ../glib/goption.c:861 msgid "[OPTION...]" msgstr "[ΕΠΙΛΟΓΗ...]" -#: ../glib/goption.c:974 +#: ../glib/goption.c:977 msgid "Help Options:" msgstr "Επιλογές βοήθειας:" -#: ../glib/goption.c:975 +#: ../glib/goption.c:978 msgid "Show help options" msgstr "Εμφάνιση επιλογών βοήθειας" -#: ../glib/goption.c:981 +#: ../glib/goption.c:984 msgid "Show all help options" msgstr "Εμφάνιση όλων των επιλογών βοήθειας" -#: ../glib/goption.c:1043 +#: ../glib/goption.c:1047 msgid "Application Options:" msgstr "Επιλογές εφαρμογής:" -#: ../glib/goption.c:1107 ../glib/goption.c:1177 +#: ../glib/goption.c:1049 +msgid "Options:" +msgstr "Επιλογές:" + +#: ../glib/goption.c:1113 ../glib/goption.c:1183 #, c-format msgid "Cannot parse integer value '%s' for %s" msgstr "Αδυναμία ανάλυσης ακέραιης τιμής '%s' για %s" -#: ../glib/goption.c:1117 ../glib/goption.c:1185 +#: ../glib/goption.c:1123 ../glib/goption.c:1191 #, c-format msgid "Integer value '%s' for %s out of range" msgstr "Ακέραιη τιμή '%s' για %s είναι εκτός περιοχής" -#: ../glib/goption.c:1142 +#: ../glib/goption.c:1148 #, c-format msgid "Cannot parse double value '%s' for %s" msgstr "Αδυναμία ανάλυσης διπλής τιμής '%s' για %s" -#: ../glib/goption.c:1150 +#: ../glib/goption.c:1156 #, c-format msgid "Double value '%s' for %s out of range" msgstr "Η διπλή τιμή '%s' για %s είναι εκτός περιοχής" # gconf/gconftool.c:1181 -#: ../glib/goption.c:1436 ../glib/goption.c:1515 +#: ../glib/goption.c:1442 ../glib/goption.c:1521 #, c-format msgid "Error parsing option %s" msgstr "Σφάλμα επιλογής ανάλυσης %s" -#: ../glib/goption.c:1546 ../glib/goption.c:1659 +#: ../glib/goption.c:1552 ../glib/goption.c:1665 #, c-format msgid "Missing argument for %s" msgstr "Λείπει όρισμα για %s" -#: ../glib/goption.c:2120 +#: ../glib/goption.c:2126 #, c-format msgid "Unknown option %s" msgstr "Άγνωστη επιλογή %s" @@ -4421,72 +4455,72 @@ msgstr "το όνομα είναι πολύ μεγάλο στο (*MARK), (*PRUNE msgid "character value in \\u.... sequence is too large" msgstr "η τιμή του χαρακτήρα στην ακολουθία \\u.... είναι υπερβολικά μεγάλη" -#: ../glib/gregex.c:746 ../glib/gregex.c:1915 +#: ../glib/gregex.c:746 ../glib/gregex.c:1973 #, c-format msgid "Error while matching regular expression %s: %s" msgstr "Σφάλμα αντιστοίχισης της κανονικής έκφρασης %s: %s" -#: ../glib/gregex.c:1312 +#: ../glib/gregex.c:1317 msgid "PCRE library is compiled without UTF8 support" msgstr "Η βιβλιοθήκη PCRE έχει μεταγλωττιστεί χωρίς υποστήριξη UTF8" -#: ../glib/gregex.c:1316 +#: ../glib/gregex.c:1321 msgid "PCRE library is compiled without UTF8 properties support" msgstr "Η βιβλιοθήκη PCRE έχει μεταγλωττιστεί χωρίς υποστήριξη ιδιοτήτων UTF8" -#: ../glib/gregex.c:1324 +#: ../glib/gregex.c:1329 msgid "PCRE library is compiled with incompatible options" msgstr "Η βιβλιοθήκη PCRE έχει μεταγλωττιστεί με ασύμβατες επιλογές" +#: ../glib/gregex.c:1358 +#, c-format +msgid "Error while optimizing regular expression %s: %s" +msgstr "Σφάλμα κατά τη βελτιστοποίηση της κανονικής έκφρασης %s: %s" + # gconf/gconfd.c:1676 -#: ../glib/gregex.c:1383 +#: ../glib/gregex.c:1438 #, c-format msgid "Error while compiling regular expression %s at char %d: %s" msgstr "" "Σφάλμα κατά τη μεταγλώττιση της κανονικής έκφρασης %s στον χαρακτήρα %d: %s" -#: ../glib/gregex.c:1425 -#, c-format -msgid "Error while optimizing regular expression %s: %s" -msgstr "Σφάλμα κατά τη βελτιστοποίηση της κανονικής έκφρασης %s: %s" - -#: ../glib/gregex.c:2347 +#: ../glib/gregex.c:2409 msgid "hexadecimal digit or '}' expected" msgstr "αναμένεται δεκαεξαδικό ψηφίο ή '}'" -#: ../glib/gregex.c:2363 +#: ../glib/gregex.c:2425 msgid "hexadecimal digit expected" msgstr "αναμένεται δεκαεξαδικό ψηφίο" -#: ../glib/gregex.c:2403 +#: ../glib/gregex.c:2465 msgid "missing '<' in symbolic reference" msgstr "λείπει το '<' από τη συμβολική αναφορά" -#: ../glib/gregex.c:2412 +#: ../glib/gregex.c:2474 msgid "unfinished symbolic reference" msgstr "ημιτελής συμβολική αναφορά" -#: ../glib/gregex.c:2419 +#: ../glib/gregex.c:2481 msgid "zero-length symbolic reference" msgstr "συμβολική αναφορά μηδενικού μήκους" -#: ../glib/gregex.c:2430 +#: ../glib/gregex.c:2492 msgid "digit expected" msgstr "αναμένεται ψηφίο" -#: ../glib/gregex.c:2448 +#: ../glib/gregex.c:2510 msgid "illegal symbolic reference" msgstr "παράνομη συμβολική αναφορά" -#: ../glib/gregex.c:2510 +#: ../glib/gregex.c:2572 msgid "stray final '\\'" msgstr "αδέσποτο τελικό '\\'" -#: ../glib/gregex.c:2514 +#: ../glib/gregex.c:2576 msgid "unknown escape sequence" msgstr "άγνωστη ακολουθία διαφυγής" -#: ../glib/gregex.c:2524 +#: ../glib/gregex.c:2586 #, c-format msgid "Error while parsing replacement text \"%s\" at char %lu: %s" msgstr "" @@ -4538,65 +4572,65 @@ msgstr "" msgid "Unexpected error in waitpid() (%s)" msgstr "Απρόσμενο σφάλμα στη waitpid() (%s)" -#: ../glib/gspawn.c:849 ../glib/gspawn-win32.c:1233 +#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233 #, c-format msgid "Child process exited with code %ld" msgstr "Η θυγατρική διεργασία τερματίστηκε με κωδικό %ld" -#: ../glib/gspawn.c:857 +#: ../glib/gspawn.c:852 #, c-format msgid "Child process killed by signal %ld" msgstr "Η θυγατρική διεργασία τερματίστηκε από το σήμα %ld" -#: ../glib/gspawn.c:864 +#: ../glib/gspawn.c:859 #, c-format msgid "Child process stopped by signal %ld" msgstr "Η θυγατρική διεργασία διακόπηκε από το σήμα %ld" -#: ../glib/gspawn.c:871 +#: ../glib/gspawn.c:866 #, c-format msgid "Child process exited abnormally" msgstr "Η θυγατρική διεργασία τερματίστηκε ασυνήθιστα" # gconf/gconftool.c:881 -#: ../glib/gspawn.c:1276 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 +#: ../glib/gspawn.c:1271 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 #, c-format msgid "Failed to read from child pipe (%s)" msgstr "Αποτυχία ανάγνωσης από τη θυγατρική διοχέτευση (%s)" # gconf/gconf-internals.c:2416 -#: ../glib/gspawn.c:1346 +#: ../glib/gspawn.c:1341 #, c-format msgid "Failed to fork (%s)" msgstr "Αποτυχία δικράνωσης (%s)" -#: ../glib/gspawn.c:1495 ../glib/gspawn-win32.c:370 +#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370 #, c-format msgid "Failed to change to directory '%s' (%s)" msgstr "Αποτυχία αλλαγής καταλόγου '%s' (%s)" # gconf/gconf-internals.c:2416 -#: ../glib/gspawn.c:1505 +#: ../glib/gspawn.c:1500 #, c-format msgid "Failed to execute child process \"%s\" (%s)" msgstr "Αποτυχία εκτέλεσης θυγατρικής διεργασίας \"%s\" (%s)" -#: ../glib/gspawn.c:1515 +#: ../glib/gspawn.c:1510 #, c-format msgid "Failed to redirect output or input of child process (%s)" msgstr "Αποτυχία ανακατεύθυνσης εισόδου ή εξόδου θυγατρικής διεργασίας (%s)" -#: ../glib/gspawn.c:1524 +#: ../glib/gspawn.c:1519 #, c-format msgid "Failed to fork child process (%s)" msgstr "Αποτυχία δικράνωσης θυγατρικής διεργασίας (%s)" -#: ../glib/gspawn.c:1532 +#: ../glib/gspawn.c:1527 #, c-format msgid "Unknown error executing child process \"%s\"" msgstr "Άγνωστο σφάλμα εκτέλεσης θυγατρικής διεργασίας \"%s\"" -#: ../glib/gspawn.c:1556 +#: ../glib/gspawn.c:1551 #, c-format msgid "Failed to read enough data from child pid pipe (%s)" msgstr "Αποτυχία ανάγνωσης επαρκών δεδομένων από θυγατρική διοχέτευση pid (%s)" @@ -4653,92 +4687,92 @@ msgstr "" "Απρόσμενο σφάλμα στο g_io_channel_win32_poll() ανάγνωση δεδομένων από " "θυγατρική διεργασία" -#: ../glib/gutf8.c:780 +#: ../glib/gutf8.c:795 msgid "Failed to allocate memory" msgstr "Αποτυχία κατανομής μνήμης" -#: ../glib/gutf8.c:912 +#: ../glib/gutf8.c:928 msgid "Character out of range for UTF-8" msgstr "Ο χαρακτήρας είναι εκτός περιοχής UTF-8" -#: ../glib/gutf8.c:1012 ../glib/gutf8.c:1021 ../glib/gutf8.c:1151 -#: ../glib/gutf8.c:1160 ../glib/gutf8.c:1299 ../glib/gutf8.c:1396 +#: ../glib/gutf8.c:1029 ../glib/gutf8.c:1038 ../glib/gutf8.c:1168 +#: ../glib/gutf8.c:1177 ../glib/gutf8.c:1316 ../glib/gutf8.c:1413 msgid "Invalid sequence in conversion input" msgstr "Άκυρη σειρά στην είσοδο μετατροπής" -#: ../glib/gutf8.c:1310 ../glib/gutf8.c:1407 +#: ../glib/gutf8.c:1327 ../glib/gutf8.c:1424 msgid "Character out of range for UTF-16" msgstr "Ο χαρακτήρας είναι εκτός περιοχής UTF-16" -#: ../glib/gutils.c:2116 ../glib/gutils.c:2143 ../glib/gutils.c:2249 +#: ../glib/gutils.c:2133 ../glib/gutils.c:2160 ../glib/gutils.c:2266 #, c-format msgid "%u byte" msgid_plural "%u bytes" msgstr[0] "%u byte" msgstr[1] "%u bytes" -#: ../glib/gutils.c:2122 +#: ../glib/gutils.c:2139 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" -#: ../glib/gutils.c:2124 +#: ../glib/gutils.c:2141 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" -#: ../glib/gutils.c:2127 +#: ../glib/gutils.c:2144 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" -#: ../glib/gutils.c:2130 +#: ../glib/gutils.c:2147 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" -#: ../glib/gutils.c:2133 +#: ../glib/gutils.c:2150 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" -#: ../glib/gutils.c:2136 +#: ../glib/gutils.c:2153 #, c-format msgid "%.1f EiB" msgstr "%.1f EiB" -#: ../glib/gutils.c:2149 +#: ../glib/gutils.c:2166 #, c-format msgid "%.1f kB" msgstr "%.1f KB" -#: ../glib/gutils.c:2152 ../glib/gutils.c:2267 +#: ../glib/gutils.c:2169 ../glib/gutils.c:2284 #, c-format msgid "%.1f MB" msgstr "%.1f MB" -#: ../glib/gutils.c:2155 ../glib/gutils.c:2272 +#: ../glib/gutils.c:2172 ../glib/gutils.c:2289 #, c-format msgid "%.1f GB" msgstr "%.1f GB" -#: ../glib/gutils.c:2157 ../glib/gutils.c:2277 +#: ../glib/gutils.c:2174 ../glib/gutils.c:2294 #, c-format msgid "%.1f TB" msgstr "%.1f TB" -#: ../glib/gutils.c:2160 ../glib/gutils.c:2282 +#: ../glib/gutils.c:2177 ../glib/gutils.c:2299 #, c-format msgid "%.1f PB" msgstr "%.1f PB" -#: ../glib/gutils.c:2163 ../glib/gutils.c:2287 +#: ../glib/gutils.c:2180 ../glib/gutils.c:2304 #, c-format msgid "%.1f EB" msgstr "%.1f EB" #. Translators: the %s in "%s bytes" will always be replaced by a number. -#: ../glib/gutils.c:2200 +#: ../glib/gutils.c:2217 #, c-format msgid "%s byte" msgid_plural "%s bytes" @@ -4750,11 +4784,28 @@ msgstr[1] "%s bytes" #. * compatibility. Users will not see this string unless a program is using this deprecated function. #. * Please translate as literally as possible. #. -#: ../glib/gutils.c:2262 +#: ../glib/gutils.c:2279 #, c-format msgid "%.1f KB" msgstr "%.1f KB" +#~ msgid "Unable to find default local directory monitor type" +#~ msgstr "" +#~ "Δε βρέθηκε ο τύπος παρακολούθησης του προεπιλεγμένου τοπικού καταλόγου" + +#~ msgid "Can't find application" +#~ msgstr "Αδυναμία εύρεσης εφαρμογής" + +# gconf/gconftool.c:1181 +#~ msgid "Error launching application: %s" +#~ msgstr "Σφάλμα εκκίνησης εφαρμογής: %s" + +#~ msgid "association changes not supported on win32" +#~ msgstr "οι αλλαγές συσχετίσεων δεν υποστηρίζονται στα win32" + +#~ msgid "Association creation not supported on win32" +#~ msgstr "Η δημιουργία συσχέτισης δεν υποστηρίζεται σε win32" + #~ msgid "URIs not supported" #~ msgstr "URIs δεν υποστηρίζονται" diff --git a/po/en@shaw.gmo b/po/en@shaw.gmo new file mode 100644 index 0000000000000000000000000000000000000000..b0c90d723a6425067cee5f47ad6131024a61c62d GIT binary patch literal 69756 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 V?Jileb*=tx*^o{)|2_t?{}1irtKk3u literal 0 HcmV?d00001 diff --git a/po/en_CA.gmo b/po/en_CA.gmo new file mode 100644 index 0000000000000000000000000000000000000000..bee13bbd812541f93c46e6fb630aea24b2c93dae GIT binary patch literal 78635 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 PsCVM9UdN84@ADYooSJZ~cCY5Apin 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, 2007, 2008, 2009, 2010, 2011, 2012. # -# Daniel Mustieles , 2010, 2011, 2012. , 2013, 2014, 2015. +# Daniel Mustieles , 2010, 2011, 2012. , 2013, 2014, 2015, 2016. # msgid "" msgstr "" "Project-Id-Version: glib.master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=glib&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2015-03-08 18:48+0000\n" -"PO-Revision-Date: 2015-03-08 21:16+0100\n" +"POT-Creation-Date: 2016-03-04 07:38+0000\n" +"PO-Revision-Date: 2016-03-04 09:06+0100\n" "Last-Translator: Daniel Mustieles \n" "Language-Team: Español; Castellano \n" "Language: \n" @@ -27,27 +27,31 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 2.91.6\n" -#: ../gio/gapplication.c:531 -msgid "Enter GApplication service mode (use from D-Bus service files)" -msgstr "" -"Entrar en modo de servicio de GApplication (usar desde archivos de servicio " -"de D-Bus)" - -#: ../gio/gapplication.c:536 +#: ../gio/gapplication.c:493 msgid "GApplication options" msgstr "Opciones de GApplication" -#: ../gio/gapplication.c:536 +#: ../gio/gapplication.c:493 msgid "Show GApplication options" msgstr "Mostrar las opciones de GApplication" +#: ../gio/gapplication.c:538 +msgid "Enter GApplication service mode (use from D-Bus service files)" +msgstr "" +"Entrar en modo de servicio de GApplication (usar desde archivos de servicio " +"de D-Bus)" + +#: ../gio/gapplication.c:550 +msgid "Override the application's ID" +msgstr "Omitir el ID de la aplicación" + #: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46 -#: ../gio/gresource-tool.c:485 ../gio/gsettings-tool.c:521 +#: ../gio/gresource-tool.c:488 ../gio/gsettings-tool.c:512 msgid "Print help" msgstr "Imprimir ayuda" -#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:486 -#: ../gio/gresource-tool.c:554 +#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:489 +#: ../gio/gresource-tool.c:557 msgid "[COMMAND]" msgstr "[COMANDO]" @@ -55,7 +59,7 @@ msgstr "[COMANDO]" msgid "Print version" msgstr "Imprimir versión" -#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:527 +#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:518 msgid "Print version information and exit" msgstr "Mostrar información de la versión y salir" @@ -120,14 +124,14 @@ msgstr "" "Identificador de la aplicación en formato D-Bus (ej. org.example.viewer)" #: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589 -#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:492 -#: ../gio/gresource-tool.c:558 +#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:495 +#: ../gio/gresource-tool.c:561 msgid "FILE" msgstr "ARCHIVO" #: ../gio/gapplication-tool.c:72 -msgid "Optional relative or relative filenames, or URIs to open" -msgstr "Nombres de archivos relativos opcionales, o URI que abrir" +msgid "Optional relative or absolute filenames, or URIs to open" +msgstr "Nombres de archivos relativos o absolutos, o URI que abrir" #: ../gio/gapplication-tool.c:73 msgid "ACTION" @@ -146,8 +150,8 @@ msgid "Optional parameter to the action invocation, in GVariant format" msgstr "" "Parámetro opcionales para la invocación de la acción, en formato GVariant" -#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:523 -#: ../gio/gsettings-tool.c:607 +#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526 +#: ../gio/gsettings-tool.c:598 #, c-format msgid "" "Unknown command %s\n" @@ -160,8 +164,8 @@ msgstr "" msgid "Usage:\n" msgstr "Uso:\n" -#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:548 -#: ../gio/gsettings-tool.c:641 +#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551 +#: ../gio/gsettings-tool.c:632 msgid "Arguments:\n" msgstr "Argumentos:\n" @@ -264,9 +268,9 @@ msgstr "" "\n" #: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498 -#: ../gio/ginputstream.c:176 ../gio/ginputstream.c:376 -#: ../gio/ginputstream.c:614 ../gio/ginputstream.c:1013 -#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:830 +#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379 +#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1016 +#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834 #: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206 #, c-format msgid "Too large count value passed to %s" @@ -281,8 +285,8 @@ msgstr "No se permite buscar en el flujo base" msgid "Cannot truncate GBufferedInputStream" msgstr "No se puede truncar GBufferedInputStream" -#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1202 -#: ../gio/giostream.c:278 ../gio/goutputstream.c:1654 +#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1205 +#: ../gio/giostream.c:300 ../gio/goutputstream.c:1658 msgid "Stream is already closed" msgstr "El flujo ya se cerró" @@ -290,10 +294,9 @@ msgstr "El flujo ya se cerró" msgid "Truncate not supported on base stream" msgstr "No se soporta el truncado en el flujo base" -#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1896 -#: ../gio/gdbusconnection.c:1989 ../gio/gdbusprivate.c:1421 -#: ../gio/glocalfile.c:2181 ../gio/gsimpleasyncresult.c:830 -#: ../gio/gsimpleasyncresult.c:856 +#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1847 +#: ../gio/gdbusprivate.c:1375 ../gio/glocalfile.c:2220 +#: ../gio/gsimpleasyncresult.c:870 ../gio/gsimpleasyncresult.c:896 #, c-format msgid "Operation was cancelled" msgstr "Se canceló la operación" @@ -312,23 +315,23 @@ msgstr "No hay suficiente espacio en el destino" #: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848 #: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 -#: ../glib/gconvert.c:845 ../glib/giochannel.c:1557 ../glib/giochannel.c:1599 -#: ../glib/giochannel.c:2443 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 +#: ../glib/gconvert.c:845 ../glib/giochannel.c:1556 ../glib/giochannel.c:1598 +#: ../glib/giochannel.c:2442 ../glib/gutf8.c:853 ../glib/gutf8.c:1306 msgid "Invalid byte sequence in conversion input" msgstr "Hay una secuencia de bytes no válida en la entrada de conversión" #: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 -#: ../glib/gconvert.c:770 ../glib/giochannel.c:1564 ../glib/giochannel.c:2455 +#: ../glib/gconvert.c:770 ../glib/giochannel.c:1563 ../glib/giochannel.c:2454 #, c-format msgid "Error during conversion: %s" msgstr "Falló durante la conversión: %s" -#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:990 +#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1078 msgid "Cancellable initialization not supported" msgstr "La inicialización cancelable no eestá soportada" #: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321 -#: ../glib/giochannel.c:1385 +#: ../glib/giochannel.c:1384 #, c-format msgid "Conversion from character set '%s' to '%s' is not supported" msgstr "" @@ -348,7 +351,7 @@ msgstr "tipo %s" msgid "Unknown type" msgstr "Tipo desconocido" -#: ../gio/gcontenttype-win32.c:161 +#: ../gio/gcontenttype-win32.c:162 #, c-format msgid "%s filetype" msgstr "tipo de archivo %s" @@ -373,13 +376,13 @@ msgstr "No se soporta la burla de credenciales en este SO" msgid "Unexpected early end-of-stream" msgstr "Final de flujo inesperadamente prematuro" -#: ../gio/gdbusaddress.c:148 ../gio/gdbusaddress.c:236 -#: ../gio/gdbusaddress.c:317 +#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241 +#: ../gio/gdbusaddress.c:322 #, c-format msgid "Unsupported key '%s' in address entry '%s'" msgstr "Clave «%s» no soportada en la entrada de dirección «%s»" -#: ../gio/gdbusaddress.c:175 +#: ../gio/gdbusaddress.c:180 #, c-format msgid "" "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" @@ -387,28 +390,28 @@ msgstr "" "La dirección «%s» no es válida (se necesita exactamente una ruta, dirtemp o " "claves abstractas)" -#: ../gio/gdbusaddress.c:188 +#: ../gio/gdbusaddress.c:193 #, c-format msgid "Meaningless key/value pair combination in address entry '%s'" msgstr "" "Combinación del par clave/valor sin sentido en la entrada de dirección «%s»" -#: ../gio/gdbusaddress.c:251 ../gio/gdbusaddress.c:332 +#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 #, c-format msgid "Error in address '%s' - the port attribute is malformed" msgstr "Error en la dirección «%s»; el atributo de puerto está mal formado" -#: ../gio/gdbusaddress.c:262 ../gio/gdbusaddress.c:343 +#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348 #, c-format msgid "Error in address '%s' - the family attribute is malformed" msgstr "Error en la dirección «%s»; el atributo de familia está mal formado" -#: ../gio/gdbusaddress.c:452 +#: ../gio/gdbusaddress.c:457 #, c-format msgid "Address element '%s' does not contain a colon (:)" msgstr "El elemento de dirección «%s» no contiene dos puntos (:)" -#: ../gio/gdbusaddress.c:473 +#: ../gio/gdbusaddress.c:478 #, c-format msgid "" "Key/Value pair %d, '%s', in address element '%s' does not contain an equal " @@ -417,7 +420,7 @@ msgstr "" "El par clave/valor %d, «%s», en el elemento de dirección «%s», no contiene " "un signo de igual" -#: ../gio/gdbusaddress.c:487 +#: ../gio/gdbusaddress.c:492 #, c-format msgid "" "Error unescaping key or value in Key/Value pair %d, '%s', in address element " @@ -426,7 +429,7 @@ msgstr "" "Error al desescapar la clave o el valor en el par clave/valor %d, «%s», en " "el elemento de dirección «%s»" -#: ../gio/gdbusaddress.c:565 +#: ../gio/gdbusaddress.c:570 #, c-format msgid "" "Error in address '%s' - the unix transport requires exactly one of the keys " @@ -435,97 +438,97 @@ msgstr "" "Error en la dirección «%s»: el transporte UNIX requiere exactamente que una " "de las claves «path» o «abstract» esté establecida" -#: ../gio/gdbusaddress.c:601 +#: ../gio/gdbusaddress.c:606 #, c-format msgid "Error in address '%s' - the host attribute is missing or malformed" msgstr "" "Error en la dirección «%s»: falta o está mal formado el atributo para el " "servidor" -#: ../gio/gdbusaddress.c:615 +#: ../gio/gdbusaddress.c:620 #, c-format msgid "Error in address '%s' - the port attribute is missing or malformed" msgstr "" "Error en la dirección «%s»: falta o está mal formado el atributo para el " "puerto" -#: ../gio/gdbusaddress.c:629 +#: ../gio/gdbusaddress.c:634 #, c-format msgid "Error in address '%s' - the noncefile attribute is missing or malformed" msgstr "" "Error en la dirección «%s»: falta o está mal formado el atributo para el " "archivo de número usado una sola vez" -#: ../gio/gdbusaddress.c:650 +#: ../gio/gdbusaddress.c:655 msgid "Error auto-launching: " msgstr "Error al autolanzar: " -#: ../gio/gdbusaddress.c:658 +#: ../gio/gdbusaddress.c:663 #, c-format msgid "Unknown or unsupported transport '%s' for address '%s'" msgstr "Transporte «%s» desconocido o no soportado para la dirección «%s»" -#: ../gio/gdbusaddress.c:694 +#: ../gio/gdbusaddress.c:699 #, c-format msgid "Error opening nonce file '%s': %s" msgstr "Error al abrir el archivo de número usado una sola vez «%s»: %s" -#: ../gio/gdbusaddress.c:712 +#: ../gio/gdbusaddress.c:717 #, c-format msgid "Error reading from nonce file '%s': %s" msgstr "Error al leer el archivo de número usado una sola vez «%s»: %s" -#: ../gio/gdbusaddress.c:721 +#: ../gio/gdbusaddress.c:726 #, c-format msgid "Error reading from nonce file '%s', expected 16 bytes, got %d" msgstr "" "Error al leer el archivo de número usado una sola vez «%s», se esperaban 16 " "bytes, se obtuvieron %d" -#: ../gio/gdbusaddress.c:739 +#: ../gio/gdbusaddress.c:744 #, c-format msgid "Error writing contents of nonce file '%s' to stream:" msgstr "" "Error al escribir el contenido del archivo de número usado una sola vez «%s» " "al flujo:" -#: ../gio/gdbusaddress.c:958 +#: ../gio/gdbusaddress.c:950 msgid "The given address is empty" msgstr "La dirección proporcionada está vacía" -#: ../gio/gdbusaddress.c:1028 +#: ../gio/gdbusaddress.c:1063 #, c-format msgid "Cannot spawn a message bus when setuid" msgstr "No se puede lanzar («spawn») un mensaje al bus con setuid" -#: ../gio/gdbusaddress.c:1035 +#: ../gio/gdbusaddress.c:1070 msgid "Cannot spawn a message bus without a machine-id: " msgstr "No se puede lanzar («spawn») un mensaje al bus sin un ID de máquina: " -#: ../gio/gdbusaddress.c:1077 +#: ../gio/gdbusaddress.c:1112 #, c-format msgid "Error spawning command line '%s': " msgstr "Error al lanzar («spawn») el comando «%s»: " -#: ../gio/gdbusaddress.c:1294 +#: ../gio/gdbusaddress.c:1329 #, c-format msgid "(Type any character to close this window)\n" msgstr "(Escriba un carácter cualquiera para cerrar esta ventana)\n" -#: ../gio/gdbusaddress.c:1425 +#: ../gio/gdbusaddress.c:1481 #, c-format msgid "Session dbus not running, and autolaunch failed" msgstr "" "La sesión de dbus no está en ejecución, y falló el lanzamiento automático" -#: ../gio/gdbusaddress.c:1446 +#: ../gio/gdbusaddress.c:1492 #, c-format msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "" "No se puede determinar la dirección del bus de sesión (no implementado para " "este SO)" -#: ../gio/gdbusaddress.c:1546 ../gio/gdbusconnection.c:6931 +#: ../gio/gdbusaddress.c:1627 ../gio/gdbusconnection.c:7128 #, c-format msgid "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " @@ -534,7 +537,7 @@ msgstr "" "No se puede determinar la dirección del bus desde la variable de entorno " "DBUS_STARTER_BUS_TYPE; variable «%s» desconocida" -#: ../gio/gdbusaddress.c:1555 ../gio/gdbusconnection.c:6940 +#: ../gio/gdbusaddress.c:1636 ../gio/gdbusconnection.c:7137 msgid "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" @@ -542,7 +545,7 @@ msgstr "" "No se puede determinar la dirección del bus porque la variable de entorno " "DBUS_STARTER_BUS_TYPE no está establecida" -#: ../gio/gdbusaddress.c:1565 +#: ../gio/gdbusaddress.c:1646 #, c-format msgid "Unknown bus type %d" msgstr "Tipo de bus %d desconocido" @@ -650,22 +653,22 @@ msgid "(Additionally, releasing the lock for '%s' also failed: %s) " msgstr "" "(Adicionalmente, también falló la liberación del bloqueo para «%s»: %s)" -#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2455 +#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2373 msgid "The connection is closed" msgstr "La conexión está cerrada" -#: ../gio/gdbusconnection.c:1942 +#: ../gio/gdbusconnection.c:1877 msgid "Timeout was reached" msgstr "Se alcanzó el tiempo de expiración" -#: ../gio/gdbusconnection.c:2577 +#: ../gio/gdbusconnection.c:2495 msgid "" "Unsupported flags encountered when constructing a client-side connection" msgstr "" "Se encontraron opciones no soportadas al construir la conexión del lado del " "cliente" -#: ../gio/gdbusconnection.c:4157 ../gio/gdbusconnection.c:4504 +#: ../gio/gdbusconnection.c:4105 ../gio/gdbusconnection.c:4452 #, c-format msgid "" "No such interface 'org.freedesktop.DBus.Properties' on object at path %s" @@ -673,68 +676,78 @@ msgstr "" "No existe la interfaz «org.freedesktop.DBus.Properties» en el objeto en la " "ruta %s" -#: ../gio/gdbusconnection.c:4299 +#: ../gio/gdbusconnection.c:4247 #, c-format msgid "No such property '%s'" msgstr "No existe la propiedad «%s»" -#: ../gio/gdbusconnection.c:4311 +#: ../gio/gdbusconnection.c:4259 #, c-format msgid "Property '%s' is not readable" msgstr "No se puede leer la clave «%s»" -#: ../gio/gdbusconnection.c:4322 +#: ../gio/gdbusconnection.c:4270 #, c-format msgid "Property '%s' is not writable" msgstr "No se puede escribir la clave «%s»" -#: ../gio/gdbusconnection.c:4342 +#: ../gio/gdbusconnection.c:4290 #, c-format msgid "Error setting property '%s': Expected type '%s' but got '%s'" msgstr "" "Error al establecer la propiedad «%s». Se esperaba el tipo «%s» pero se " "obtuvo «%s»." -#: ../gio/gdbusconnection.c:4447 ../gio/gdbusconnection.c:6371 +#: ../gio/gdbusconnection.c:4395 ../gio/gdbusconnection.c:6568 #, c-format msgid "No such interface '%s'" msgstr "La interfaz «%s» no existe" -#: ../gio/gdbusconnection.c:4655 +#: ../gio/gdbusconnection.c:4603 msgid "No such interface" msgstr "No existe tal interfaz" -#: ../gio/gdbusconnection.c:4873 ../gio/gdbusconnection.c:6880 +#: ../gio/gdbusconnection.c:4821 ../gio/gdbusconnection.c:7077 #, c-format msgid "No such interface '%s' on object at path %s" msgstr "No existe la interfaz «%s» en el objeto en la ruta %s" -#: ../gio/gdbusconnection.c:4971 +#: ../gio/gdbusconnection.c:4919 #, c-format msgid "No such method '%s'" msgstr "No existe el método «%s»" -#: ../gio/gdbusconnection.c:5002 +#: ../gio/gdbusconnection.c:4950 #, c-format msgid "Type of message, '%s', does not match expected type '%s'" msgstr "El tipo de mensaje, «%s», no concide con el tipo esperado «%s»" -#: ../gio/gdbusconnection.c:5200 +#: ../gio/gdbusconnection.c:5148 #, c-format msgid "An object is already exported for the interface %s at %s" msgstr "Ya existe un objeto exportado para la interfaz %s en %s" -#: ../gio/gdbusconnection.c:5399 +#: ../gio/gdbusconnection.c:5374 +#, c-format +msgid "Unable to retrieve property %s.%s" +msgstr "No se pudo obtener la propiedad %s.%s" + +#: ../gio/gdbusconnection.c:5430 +#, c-format +msgid "Unable to set property %s.%s" +msgstr "No se pudo establecer la propiedad %s.%s" + +#: ../gio/gdbusconnection.c:5606 #, c-format msgid "Method '%s' returned type '%s', but expected '%s'" msgstr "El método «%s» devolvió el tipo «%s» pero se esperaba «%s»" -#: ../gio/gdbusconnection.c:6482 +#: ../gio/gdbusconnection.c:6679 #, c-format msgid "Method '%s' on interface '%s' with signature '%s' does not exist" msgstr "El método «%s» con interfaz «%s» y firma «%s» no existe" -#: ../gio/gdbusconnection.c:6603 +#: ../gio/gdbusconnection.c:6800 #, c-format msgid "A subtree is already exported for %s" msgstr "Ya se ha exportado un subárbol para %s" @@ -933,35 +946,35 @@ msgstr "" "El cuerpo del mensaje está vacío pero la firma en el campo de cabecera es " "«(%s)»" -#: ../gio/gdbusmessage.c:3280 +#: ../gio/gdbusmessage.c:3283 #, c-format msgid "Error return with body of type '%s'" msgstr "Error al devolver el cuerpo de tipo «%s»" -#: ../gio/gdbusmessage.c:3288 +#: ../gio/gdbusmessage.c:3291 msgid "Error return with empty body" msgstr "Error al devolver un cuepro vacío" -#: ../gio/gdbusprivate.c:2085 +#: ../gio/gdbusprivate.c:2036 #, c-format msgid "Unable to get Hardware profile: %s" msgstr "No se pudo obtener el perfil de hardware: %s" -#: ../gio/gdbusprivate.c:2130 +#: ../gio/gdbusprivate.c:2081 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: " msgstr "No se puede cargar /var/lib/dbus/machine-id o /etc/machine-id: " -#: ../gio/gdbusproxy.c:1630 +#: ../gio/gdbusproxy.c:1610 #, c-format msgid "Error calling StartServiceByName for %s: " msgstr "Error al llamar StartSereviceByName para %s: " -#: ../gio/gdbusproxy.c:1653 +#: ../gio/gdbusproxy.c:1633 #, c-format msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" msgstr "Respuesta %d no esperada del método StartServiceByName(«%s»)" -#: ../gio/gdbusproxy.c:2754 ../gio/gdbusproxy.c:2891 +#: ../gio/gdbusproxy.c:2709 ../gio/gdbusproxy.c:2843 msgid "" "Cannot invoke method; proxy is for a well-known name without an owner and " "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag" @@ -1016,49 +1029,54 @@ msgstr "" "\n" "Use «%s COMANDO --help» para obtener ayuda de los comandos individuales.\n" -#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:220 ../gio/gdbus-tool.c:292 -#: ../gio/gdbus-tool.c:316 ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1031 -#: ../gio/gdbus-tool.c:1465 +#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:226 ../gio/gdbus-tool.c:298 +#: ../gio/gdbus-tool.c:322 ../gio/gdbus-tool.c:711 ../gio/gdbus-tool.c:1043 +#: ../gio/gdbus-tool.c:1477 #, c-format msgid "Error: %s\n" msgstr "Error: %s\n" -#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:233 ../gio/gdbus-tool.c:1481 +#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493 #, c-format msgid "Error parsing introspection XML: %s\n" msgstr "Error al analizar la introspección XML: %s\n" -#: ../gio/gdbus-tool.c:350 +#: ../gio/gdbus-tool.c:208 +#, c-format +msgid "Error: %s is not a valid name\n" +msgstr "Error: %s no es un nombre válido\n" + +#: ../gio/gdbus-tool.c:356 msgid "Connect to the system bus" msgstr "Conectar con el bus del sistema" -#: ../gio/gdbus-tool.c:351 +#: ../gio/gdbus-tool.c:357 msgid "Connect to the session bus" msgstr "Conectar con el bus de sesión" -#: ../gio/gdbus-tool.c:352 +#: ../gio/gdbus-tool.c:358 msgid "Connect to given D-Bus address" msgstr "Conectar con la dirección de D-Bus proporcionada" -#: ../gio/gdbus-tool.c:362 +#: ../gio/gdbus-tool.c:368 msgid "Connection Endpoint Options:" msgstr "Opciones de conexión del extremo:" -#: ../gio/gdbus-tool.c:363 +#: ../gio/gdbus-tool.c:369 msgid "Options specifying the connection endpoint" msgstr "Opciones para especificar la conexión del extremo:" -#: ../gio/gdbus-tool.c:385 +#: ../gio/gdbus-tool.c:391 #, c-format msgid "No connection endpoint specified" msgstr "No se especificó ningún punto de conexión extremo" -#: ../gio/gdbus-tool.c:395 +#: ../gio/gdbus-tool.c:401 #, c-format msgid "Multiple connection endpoints specified" msgstr "Se especificaron varios puntos de conexión extremos" -#: ../gio/gdbus-tool.c:465 +#: ../gio/gdbus-tool.c:471 #, c-format msgid "" "Warning: According to introspection data, interface '%s' does not exist\n" @@ -1066,7 +1084,7 @@ msgstr "" "Advertencia: según la introspección de los datos, la interfaz «%s» no " "existe\n" -#: ../gio/gdbus-tool.c:474 +#: ../gio/gdbus-tool.c:480 #, c-format msgid "" "Warning: According to introspection data, method '%s' does not exist on " @@ -1075,191 +1093,195 @@ msgstr "" "Advertencia: según la introspección de los datos, el método «%s» no existe " "en la interfaz «%s»\n" -#: ../gio/gdbus-tool.c:536 +#: ../gio/gdbus-tool.c:542 msgid "Optional destination for signal (unique name)" msgstr "Destino opcional para la señal (nombre único)" -#: ../gio/gdbus-tool.c:537 +#: ../gio/gdbus-tool.c:543 msgid "Object path to emit signal on" msgstr "Ruta del objeto sobre el que emitir la señal" -#: ../gio/gdbus-tool.c:538 +#: ../gio/gdbus-tool.c:544 msgid "Signal and interface name" msgstr "Nombres de la interfaz y señal" -#: ../gio/gdbus-tool.c:570 +#: ../gio/gdbus-tool.c:576 msgid "Emit a signal." msgstr "Emitir una señal." -#: ../gio/gdbus-tool.c:604 ../gio/gdbus-tool.c:836 ../gio/gdbus-tool.c:1571 -#: ../gio/gdbus-tool.c:1799 +#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583 +#: ../gio/gdbus-tool.c:1818 #, c-format msgid "Error connecting: %s\n" msgstr "Error al conectar: %s\n" -#: ../gio/gdbus-tool.c:616 +#: ../gio/gdbus-tool.c:622 #, c-format msgid "Error: object path not specified.\n" msgstr "Error: no se especificó la ruta del objeto.\n" -#: ../gio/gdbus-tool.c:621 ../gio/gdbus-tool.c:897 ../gio/gdbus-tool.c:1629 -#: ../gio/gdbus-tool.c:1858 +#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648 +#: ../gio/gdbus-tool.c:1884 #, c-format msgid "Error: %s is not a valid object path\n" msgstr "Error: %s no es una ruta de objeto válida\n" -#: ../gio/gdbus-tool.c:627 +#: ../gio/gdbus-tool.c:633 #, c-format msgid "Error: signal not specified.\n" msgstr "Error: no se especificó la señal.\n" -#: ../gio/gdbus-tool.c:634 +#: ../gio/gdbus-tool.c:640 #, c-format msgid "Error: signal must be the fully-qualified name.\n" msgstr "Error: la señal debe ser el nombre completamente cualificado.\n" -#: ../gio/gdbus-tool.c:642 +#: ../gio/gdbus-tool.c:648 #, c-format msgid "Error: %s is not a valid interface name\n" msgstr "Error: %s no es un nombre de interfaz válida\n" -#: ../gio/gdbus-tool.c:648 +#: ../gio/gdbus-tool.c:654 #, c-format msgid "Error: %s is not a valid member name\n" msgstr "Error: %s no es un nombre de miembro válido\n" -#: ../gio/gdbus-tool.c:654 +#: ../gio/gdbus-tool.c:660 #, c-format msgid "Error: %s is not a valid unique bus name.\n" msgstr "Error: %s no es un nombre de bus único válido.\n" #. Use the original non-"parse-me-harder" error -#: ../gio/gdbus-tool.c:681 ../gio/gdbus-tool.c:999 +#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011 #, c-format msgid "Error parsing parameter %d: %s\n" msgstr "Error al analizar el parámetro %d: %s\n" -#: ../gio/gdbus-tool.c:712 +#: ../gio/gdbus-tool.c:718 #, c-format msgid "Error flushing connection: %s\n" msgstr "Error al limpiar la conexión: %s\n" -#: ../gio/gdbus-tool.c:739 +#: ../gio/gdbus-tool.c:745 msgid "Destination name to invoke method on" msgstr "Nombre del detino sobre el que invocar elmétodo" -#: ../gio/gdbus-tool.c:740 +#: ../gio/gdbus-tool.c:746 msgid "Object path to invoke method on" msgstr "Ruta del objeto sobre la que invocar el método" -#: ../gio/gdbus-tool.c:741 +#: ../gio/gdbus-tool.c:747 msgid "Method and interface name" msgstr "Nombre de la interfaz y método" -#: ../gio/gdbus-tool.c:742 +#: ../gio/gdbus-tool.c:748 msgid "Timeout in seconds" msgstr "Tiempo de expiración en segundos" -#: ../gio/gdbus-tool.c:781 +#: ../gio/gdbus-tool.c:787 msgid "Invoke a method on a remote object." msgstr "Invocar un método en un objeto remoto." -#: ../gio/gdbus-tool.c:856 ../gio/gdbus-tool.c:1590 ../gio/gdbus-tool.c:1818 +#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837 #, c-format msgid "Error: Destination is not specified\n" msgstr "Error: el destino no está especificado\n" -#: ../gio/gdbus-tool.c:877 ../gio/gdbus-tool.c:1609 +#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849 +#, c-format +msgid "Error: %s is not a valid bus name\n" +msgstr "Error: %s no es un nombre de bus válido\n" + +#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628 #, c-format msgid "Error: Object path is not specified\n" msgstr "Error: no se especificó la ruta del objeto\n" -#: ../gio/gdbus-tool.c:912 +#: ../gio/gdbus-tool.c:924 #, c-format msgid "Error: Method name is not specified\n" msgstr "Error: no se especificó el nombre del método\n" -#: ../gio/gdbus-tool.c:923 +#: ../gio/gdbus-tool.c:935 #, c-format msgid "Error: Method name '%s' is invalid\n" msgstr "Error: el nombre del método «%s» no es válido\n" -#: ../gio/gdbus-tool.c:991 +#: ../gio/gdbus-tool.c:1003 #, c-format msgid "Error parsing parameter %d of type '%s': %s\n" msgstr "Error al analizar el parámetro %d del tipo «%s»: %s\n" -#: ../gio/gdbus-tool.c:1428 +#: ../gio/gdbus-tool.c:1440 msgid "Destination name to introspect" msgstr "Nombre de destino que introspeccionar" -#: ../gio/gdbus-tool.c:1429 +#: ../gio/gdbus-tool.c:1441 msgid "Object path to introspect" msgstr "Ruta del objeto que introspeccionar" -#: ../gio/gdbus-tool.c:1430 +#: ../gio/gdbus-tool.c:1442 msgid "Print XML" msgstr "Imprimir XML" -#: ../gio/gdbus-tool.c:1431 +#: ../gio/gdbus-tool.c:1443 msgid "Introspect children" msgstr "Introspeccionar hijo" -#: ../gio/gdbus-tool.c:1432 +#: ../gio/gdbus-tool.c:1444 msgid "Only print properties" msgstr "Solo mostrar propiedades" -#: ../gio/gdbus-tool.c:1523 +#: ../gio/gdbus-tool.c:1535 msgid "Introspect a remote object." msgstr "Introspeccionar un objeto remoto." -#: ../gio/gdbus-tool.c:1721 +#: ../gio/gdbus-tool.c:1740 msgid "Destination name to monitor" msgstr "Nombre de destino para monitorizar" -#: ../gio/gdbus-tool.c:1722 +#: ../gio/gdbus-tool.c:1741 msgid "Object path to monitor" msgstr "Ruta objeto para monitorizar" -#: ../gio/gdbus-tool.c:1751 +#: ../gio/gdbus-tool.c:1770 msgid "Monitor a remote object." msgstr "Monitorizar un objeto remoto." -#: ../gio/gdesktopappinfo.c:1999 ../gio/gdesktopappinfo.c:4530 -#: ../gio/gwin32appinfo.c:219 +#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4502 msgid "Unnamed" msgstr "Sin nombre" -#: ../gio/gdesktopappinfo.c:2408 +#: ../gio/gdesktopappinfo.c:2402 msgid "Desktop file didn't specify Exec field" msgstr "El archivo de escritorio no especificó el campo Exec" -#: ../gio/gdesktopappinfo.c:2693 +#: ../gio/gdesktopappinfo.c:2687 msgid "Unable to find terminal required for application" msgstr "Imposible encontrar el terminal requerido por la aplicación" -#: ../gio/gdesktopappinfo.c:3114 +#: ../gio/gdesktopappinfo.c:3099 #, c-format msgid "Can't create user application configuration folder %s: %s" msgstr "" "No se puede crear la carpeta de configuración de la aplicación %s del " "usuario: %s" -#: ../gio/gdesktopappinfo.c:3118 +#: ../gio/gdesktopappinfo.c:3103 #, c-format msgid "Can't create user MIME configuration folder %s: %s" msgstr "No se puede crear la carpeta de configuración MIME %s del usuario: %s" -#: ../gio/gdesktopappinfo.c:3358 ../gio/gdesktopappinfo.c:3382 +#: ../gio/gdesktopappinfo.c:3343 ../gio/gdesktopappinfo.c:3367 msgid "Application information lacks an identifier" msgstr "La información de la aplicación carece de un identificador" -#: ../gio/gdesktopappinfo.c:3615 +#: ../gio/gdesktopappinfo.c:3600 #, c-format msgid "Can't create user desktop file %s" msgstr "No se puede crear el archivo de escritorio %s del usuario" -#: ../gio/gdesktopappinfo.c:3749 +#: ../gio/gdesktopappinfo.c:3734 #, c-format msgid "Custom definition for %s" msgstr "Definición personalizada para %s" @@ -1287,11 +1309,15 @@ msgstr "la unidad no implementa reproducir" msgid "drive doesn't implement stop" msgstr "la unidad no implementa detener" -#: ../gio/gdummytlsbackend.c:189 ../gio/gdummytlsbackend.c:311 -#: ../gio/gdummytlsbackend.c:401 +#: ../gio/gdummytlsbackend.c:195 ../gio/gdummytlsbackend.c:317 +#: ../gio/gdummytlsbackend.c:509 msgid "TLS support is not available" msgstr "El soporte de TSL no está disponible" +#: ../gio/gdummytlsbackend.c:419 +msgid "DTLS support is not available" +msgstr "Soporte de DTSL no disponible" + #: ../gio/gemblem.c:323 #, c-format msgid "Can't handle version %d of GEmblem encoding" @@ -1316,14 +1342,14 @@ msgstr "Número de tokens (%d) mal formados en la codificación GEmblemedIcon" msgid "Expected a GEmblem for GEmblemedIcon" msgstr "Se esperaba un GEmblem para GEmblemedIconjo" -#: ../gio/gfile.c:968 ../gio/gfile.c:1206 ../gio/gfile.c:1344 -#: ../gio/gfile.c:1582 ../gio/gfile.c:1637 ../gio/gfile.c:1695 -#: ../gio/gfile.c:1779 ../gio/gfile.c:1836 ../gio/gfile.c:1900 -#: ../gio/gfile.c:1955 ../gio/gfile.c:3603 ../gio/gfile.c:3658 -#: ../gio/gfile.c:3893 ../gio/gfile.c:3935 ../gio/gfile.c:4398 -#: ../gio/gfile.c:4809 ../gio/gfile.c:4894 ../gio/gfile.c:4984 -#: ../gio/gfile.c:5081 ../gio/gfile.c:5168 ../gio/gfile.c:5269 -#: ../gio/gfile.c:7788 ../gio/gfile.c:7878 ../gio/gfile.c:7962 +#: ../gio/gfile.c:969 ../gio/gfile.c:1207 ../gio/gfile.c:1345 +#: ../gio/gfile.c:1583 ../gio/gfile.c:1638 ../gio/gfile.c:1696 +#: ../gio/gfile.c:1780 ../gio/gfile.c:1837 ../gio/gfile.c:1901 +#: ../gio/gfile.c:1956 ../gio/gfile.c:3604 ../gio/gfile.c:3659 +#: ../gio/gfile.c:3894 ../gio/gfile.c:3936 ../gio/gfile.c:4404 +#: ../gio/gfile.c:4815 ../gio/gfile.c:4900 ../gio/gfile.c:4990 +#: ../gio/gfile.c:5087 ../gio/gfile.c:5174 ../gio/gfile.c:5275 +#: ../gio/gfile.c:7796 ../gio/gfile.c:7886 ../gio/gfile.c:7970 #: ../gio/win32/gwinhttpfile.c:437 msgid "Operation not supported" msgstr "Operación no soportada" @@ -1338,70 +1364,70 @@ msgstr "Operación no soportada" #. Translators: This is an error message when trying to find #. * the enclosing (user visible) mount of a file, but none #. * exists. -#: ../gio/gfile.c:1467 ../gio/glocalfile.c:1103 ../gio/glocalfile.c:1114 -#: ../gio/glocalfile.c:1127 +#: ../gio/gfile.c:1468 ../gio/glocalfile.c:1134 ../gio/glocalfile.c:1145 +#: ../gio/glocalfile.c:1158 msgid "Containing mount does not exist" msgstr "El punto de montaje contenido no existe" -#: ../gio/gfile.c:2514 ../gio/glocalfile.c:2337 +#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2376 msgid "Can't copy over directory" msgstr "No se puede copiar sobre la carpeta" -#: ../gio/gfile.c:2574 +#: ../gio/gfile.c:2575 msgid "Can't copy directory over directory" msgstr "No se puede copiar una carpeta sobre otra" -#: ../gio/gfile.c:2582 ../gio/glocalfile.c:2346 +#: ../gio/gfile.c:2583 ../gio/glocalfile.c:2385 msgid "Target file exists" msgstr "El archivo destino ya existe" -#: ../gio/gfile.c:2601 +#: ../gio/gfile.c:2602 msgid "Can't recursively copy directory" msgstr "No se puede copiar la carpeta recursivamente" -#: ../gio/gfile.c:2883 +#: ../gio/gfile.c:2884 msgid "Splice not supported" msgstr "La unión no está soportada" -#: ../gio/gfile.c:2887 +#: ../gio/gfile.c:2888 #, c-format msgid "Error splicing file: %s" msgstr "Error al unir el archivo: %s" -#: ../gio/gfile.c:3018 +#: ../gio/gfile.c:3019 msgid "Copy (reflink/clone) between mounts is not supported" msgstr "Copiar (reflink/clone) entre puntos de montaje no está soportado" -#: ../gio/gfile.c:3022 +#: ../gio/gfile.c:3023 msgid "Copy (reflink/clone) is not supported or invalid" msgstr "Copiar (reflink/clone) no está soportado o no es válido" -#: ../gio/gfile.c:3027 +#: ../gio/gfile.c:3028 msgid "Copy (reflink/clone) is not supported or didn't work" msgstr "Copiar (reflink/clone) no está soportado o no ha funcionado" -#: ../gio/gfile.c:3090 +#: ../gio/gfile.c:3091 msgid "Can't copy special file" msgstr "No se puede copiar el archivo especial" -#: ../gio/gfile.c:3883 +#: ../gio/gfile.c:3884 msgid "Invalid symlink value given" msgstr "El valor del enlace simbólico dado no es válido" -#: ../gio/gfile.c:4044 +#: ../gio/gfile.c:4045 msgid "Trash not supported" msgstr "No se soporta mover a la papelera" -#: ../gio/gfile.c:4156 +#: ../gio/gfile.c:4157 #, c-format msgid "File names cannot contain '%c'" msgstr "Los nombres de archivo no pueden contener «%c»" -#: ../gio/gfile.c:6580 ../gio/gvolume.c:363 +#: ../gio/gfile.c:6586 ../gio/gvolume.c:363 msgid "volume doesn't implement mount" msgstr "el volumen no implementa el montado" -#: ../gio/gfile.c:6689 +#: ../gio/gfile.c:6695 msgid "No application is registered as handling this file" msgstr "No hay ninguna aplicación registrada para manejar este archivo" @@ -1451,7 +1477,6 @@ msgid "Bad HTTP proxy reply" msgstr "Respuesta del proxy HTTP incorrecta" #: ../gio/ghttpproxy.c:152 -#| msgid "The connection is closed" msgid "HTTP proxy connection not allowed" msgstr "Conexión al proxy HTTP no permitida" @@ -1465,7 +1490,6 @@ msgstr "Autenticación requerida en el proxy HTTP" #: ../gio/ghttpproxy.c:164 #, c-format -#| msgid "The connection is closed" msgid "HTTP proxy connection failed: %i" msgstr "Falló la conexión al proxy HTTP: %i" @@ -1526,16 +1550,16 @@ msgstr "La dirección tiene bits más allá de la longitud del prefijo" msgid "Could not parse '%s' as IP address mask" msgstr "No se pudo analizar «%s» como una máscara de una dirección IP" -#: ../gio/ginetsocketaddress.c:196 ../gio/ginetsocketaddress.c:213 -#: ../gio/gunixsocketaddress.c:209 +#: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220 +#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:216 msgid "Not enough space for socket address" msgstr "No hay suficiente espacio para la dirección del socket" -#: ../gio/ginetsocketaddress.c:228 +#: ../gio/ginetsocketaddress.c:235 msgid "Unsupported socket address" msgstr "Dirección del socket no soportada" -#: ../gio/ginputstream.c:185 +#: ../gio/ginputstream.c:188 msgid "Input stream doesn't implement read" msgstr "El flujo de entrada no implementa la lectura" @@ -1545,12 +1569,12 @@ msgstr "El flujo de entrada no implementa la lectura" #. Translators: This is an error you get if there is #. * already an operation running against this stream when #. * you try to start one -#: ../gio/ginputstream.c:1212 ../gio/giostream.c:288 -#: ../gio/goutputstream.c:1664 +#: ../gio/ginputstream.c:1215 ../gio/giostream.c:310 +#: ../gio/goutputstream.c:1668 msgid "Stream has outstanding operation" msgstr "El flujo tiene una operación excepcional" -#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1453 +#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1491 #, c-format msgid "Element <%s> not allowed inside <%s>" msgstr "No se permite el elemento <%s> dentro de <%s>" @@ -1595,7 +1619,7 @@ msgstr "Error al leer el archivo %s: %s" msgid "Error compressing file %s" msgstr "Error al comprimir el archivo %s" -#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1565 +#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1603 #, c-format msgid "text may not appear inside <%s>" msgstr "El texto no debe aparecer dentro de <%s>" @@ -1612,8 +1636,8 @@ msgstr "" "La carpeta de la que se tienen que leer los archivos (la predeterminada es " "la carpeta actual)" -#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:1994 -#: ../gio/glib-compile-schemas.c:2023 +#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2036 +#: ../gio/glib-compile-schemas.c:2065 msgid "DIRECTORY" msgstr "CARPETA" @@ -1666,17 +1690,17 @@ msgstr "" msgid "You should give exactly one file name\n" msgstr "Deberá proporcionar exactamente un nombre de archivo\n" -#: ../gio/glib-compile-schemas.c:772 +#: ../gio/glib-compile-schemas.c:784 msgid "empty names are not permitted" msgstr "no se permiten nombres vacíos" -#: ../gio/glib-compile-schemas.c:782 +#: ../gio/glib-compile-schemas.c:794 #, c-format msgid "invalid name '%s': names must begin with a lowercase letter" msgstr "" "nombre «%s» no válido: los nombres deben comenzar por una letra minúscula" -#: ../gio/glib-compile-schemas.c:794 +#: ../gio/glib-compile-schemas.c:806 #, c-format msgid "" "invalid name '%s': invalid character '%c'; only lowercase letters, numbers " @@ -1685,36 +1709,36 @@ msgstr "" "nombre «%s» no válido: el carácter «%c» no es válido; sólo se permiten " "nombres en minúscula, números y guión («-»)." -#: ../gio/glib-compile-schemas.c:803 +#: ../gio/glib-compile-schemas.c:815 #, c-format msgid "invalid name '%s': two successive hyphens ('--') are not permitted." msgstr "nombre «%s» no válido: no se permiten dos guiones seguidos («--»)." -#: ../gio/glib-compile-schemas.c:812 +#: ../gio/glib-compile-schemas.c:824 #, c-format msgid "invalid name '%s': the last character may not be a hyphen ('-')." msgstr "nombre «%s» no válido: el último carácter no puede ser un guión («-»)." -#: ../gio/glib-compile-schemas.c:820 +#: ../gio/glib-compile-schemas.c:832 #, c-format msgid "invalid name '%s': maximum length is 1024" msgstr "nombre «%s» no válido: la longitud máxima es 1024" -#: ../gio/glib-compile-schemas.c:889 +#: ../gio/glib-compile-schemas.c:901 #, c-format msgid " already specified" msgstr " ya especificado" -#: ../gio/glib-compile-schemas.c:915 +#: ../gio/glib-compile-schemas.c:927 msgid "cannot add keys to a 'list-of' schema" msgstr "no se pueden añadir claves a un esquema de «lista-de»" -#: ../gio/glib-compile-schemas.c:926 +#: ../gio/glib-compile-schemas.c:938 #, c-format msgid " already specified" msgstr " ya especificada" -#: ../gio/glib-compile-schemas.c:944 +#: ../gio/glib-compile-schemas.c:956 #, c-format msgid "" " shadows in ; use " @@ -1723,7 +1747,7 @@ msgstr "" " eclipsa a en ; use " " para modificar el valor" -#: ../gio/glib-compile-schemas.c:955 +#: ../gio/glib-compile-schemas.c:967 #, c-format msgid "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " @@ -1732,56 +1756,56 @@ msgstr "" "se debe especificar exactamente uno de «type», «enum» o «flags» como " "atributo para " -#: ../gio/glib-compile-schemas.c:974 +#: ../gio/glib-compile-schemas.c:986 #, c-format msgid "<%s id='%s'> not (yet) defined." msgstr "<%s id='%s'> aún no especificado." -#: ../gio/glib-compile-schemas.c:989 +#: ../gio/glib-compile-schemas.c:1001 #, c-format msgid "invalid GVariant type string '%s'" msgstr "tipo de cadena GVariant «%s» no válida" -#: ../gio/glib-compile-schemas.c:1019 +#: ../gio/glib-compile-schemas.c:1031 msgid " given but schema isn't extending anything" msgstr "Se proporcionó pero el esquema no está extendiendo nada" -#: ../gio/glib-compile-schemas.c:1032 +#: ../gio/glib-compile-schemas.c:1044 #, c-format msgid "no to override" msgstr "no existe para sobrescribir" -#: ../gio/glib-compile-schemas.c:1040 +#: ../gio/glib-compile-schemas.c:1052 #, c-format msgid " already specified" msgstr " ya especificada" -#: ../gio/glib-compile-schemas.c:1111 +#: ../gio/glib-compile-schemas.c:1125 #, c-format msgid " already specified" msgstr " ya especificado" -#: ../gio/glib-compile-schemas.c:1123 +#: ../gio/glib-compile-schemas.c:1137 #, c-format msgid " extends not yet existing schema '%s'" msgstr " extiende el esquema «%s» que aún no existe" -#: ../gio/glib-compile-schemas.c:1139 +#: ../gio/glib-compile-schemas.c:1153 #, c-format msgid " is list of not yet existing schema '%s'" msgstr " es una lista del esquema «%s» que aún no existe" -#: ../gio/glib-compile-schemas.c:1147 +#: ../gio/glib-compile-schemas.c:1161 #, c-format msgid "Can not be a list of a schema with a path" msgstr "No puede ser una lista de un esquema con una ruta" -#: ../gio/glib-compile-schemas.c:1157 +#: ../gio/glib-compile-schemas.c:1171 #, c-format msgid "Can not extend a schema with a path" msgstr "No se puede extender un esquema con una ruta" -#: ../gio/glib-compile-schemas.c:1167 +#: ../gio/glib-compile-schemas.c:1181 #, c-format msgid "" " is a list, extending which is not a list" @@ -1789,7 +1813,7 @@ msgstr "" " es una lista, extendiendo que no es una " "lista" -#: ../gio/glib-compile-schemas.c:1177 +#: ../gio/glib-compile-schemas.c:1191 #, c-format msgid "" " extends but '%s' " @@ -1798,63 +1822,68 @@ msgstr "" " extiende pero " "«%s» no extiende «%s»" -#: ../gio/glib-compile-schemas.c:1194 +#: ../gio/glib-compile-schemas.c:1208 #, c-format msgid "a path, if given, must begin and end with a slash" msgstr "si se especifica una ruta, debe comenzar y terminar con una barra" -#: ../gio/glib-compile-schemas.c:1201 +#: ../gio/glib-compile-schemas.c:1215 #, c-format msgid "the path of a list must end with ':/'" msgstr "la ruta de la lista debe terminar con «:/»" -#: ../gio/glib-compile-schemas.c:1233 +#: ../gio/glib-compile-schemas.c:1247 #, c-format msgid "<%s id='%s'> already specified" msgstr "<%s id='%s'> ya especificado" -#: ../gio/glib-compile-schemas.c:1457 +#: ../gio/glib-compile-schemas.c:1397 ../gio/glib-compile-schemas.c:1413 +#, c-format +msgid "Only one <%s> element allowed inside <%s>" +msgstr "Sólo se permite un elemento <%s> dentro de <%s>" + +#: ../gio/glib-compile-schemas.c:1495 #, c-format msgid "Element <%s> not allowed at the top level" msgstr "No se permite el elemento <%s> en el nivel superior" #. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1752 ../gio/glib-compile-schemas.c:1823 -#: ../gio/glib-compile-schemas.c:1899 +#: ../gio/glib-compile-schemas.c:1794 ../gio/glib-compile-schemas.c:1865 +#: ../gio/glib-compile-schemas.c:1941 #, c-format msgid "--strict was specified; exiting.\n" msgstr "se especificó --strict; saliendo.\n" -#: ../gio/glib-compile-schemas.c:1760 +#: ../gio/glib-compile-schemas.c:1802 #, c-format msgid "This entire file has been ignored.\n" msgstr "Se ha ignorado este archivo completamente.\n" -#: ../gio/glib-compile-schemas.c:1819 +#: ../gio/glib-compile-schemas.c:1861 #, c-format msgid "Ignoring this file.\n" msgstr "Ignorando este archivo.\n" -#: ../gio/glib-compile-schemas.c:1859 +#: ../gio/glib-compile-schemas.c:1901 #, c-format msgid "No such key '%s' in schema '%s' as specified in override file '%s'" msgstr "" "No existe la clave «%s» en el esquema «%s» como se especificó en el archivo " "de sobrescritura «%s»" -#: ../gio/glib-compile-schemas.c:1865 ../gio/glib-compile-schemas.c:1923 -#: ../gio/glib-compile-schemas.c:1951 +#: ../gio/glib-compile-schemas.c:1907 ../gio/glib-compile-schemas.c:1965 +#: ../gio/glib-compile-schemas.c:1993 #, c-format msgid "; ignoring override for this key.\n" msgstr "; ignorando la sobrescritura para esta clave.\n" -#: ../gio/glib-compile-schemas.c:1869 ../gio/glib-compile-schemas.c:1927 -#: ../gio/glib-compile-schemas.c:1955 +#: ../gio/glib-compile-schemas.c:1911 ../gio/glib-compile-schemas.c:1969 +#: ../gio/glib-compile-schemas.c:1997 #, c-format msgid " and --strict was specified; exiting.\n" msgstr "y se especificó --strict; saliendo.\n" -#: ../gio/glib-compile-schemas.c:1885 +#: ../gio/glib-compile-schemas.c:1927 #, c-format msgid "" "error parsing key '%s' in schema '%s' as specified in override file '%s': %s." @@ -1862,12 +1891,12 @@ msgstr "" "error al analizar la clave «%s» en el esquema «%s» como se especificó en el " "archivo de sobrescritura «%s»: %s." -#: ../gio/glib-compile-schemas.c:1895 +#: ../gio/glib-compile-schemas.c:1937 #, c-format msgid "Ignoring override for this key.\n" msgstr "Ignorando la sobrescritura para esta clave.\n" -#: ../gio/glib-compile-schemas.c:1913 +#: ../gio/glib-compile-schemas.c:1955 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is outside the " @@ -1876,7 +1905,7 @@ msgstr "" "la clave de sobrescritura «%s» en el esquema «%s» en el archivo de " "sobrescritura «%s» está fuera del rango proporcionado en el esquema" -#: ../gio/glib-compile-schemas.c:1941 +#: ../gio/glib-compile-schemas.c:1983 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is not in the " @@ -1885,23 +1914,23 @@ msgstr "" "la clave de sobrescritura «%s» en el esquema «%s» en el archivo de " "sobrescritura «%s» no está en la lista de opciones válidas" -#: ../gio/glib-compile-schemas.c:1994 +#: ../gio/glib-compile-schemas.c:2036 msgid "where to store the gschemas.compiled file" msgstr "dónde almacenar el archivo gschemas.compiled" -#: ../gio/glib-compile-schemas.c:1995 +#: ../gio/glib-compile-schemas.c:2037 msgid "Abort on any errors in schemas" msgstr "Abortar ante cualquier error en los esquemas" -#: ../gio/glib-compile-schemas.c:1996 +#: ../gio/glib-compile-schemas.c:2038 msgid "Do not write the gschema.compiled file" msgstr "No escribir el archivo gschemas.compiled" -#: ../gio/glib-compile-schemas.c:1997 +#: ../gio/glib-compile-schemas.c:2039 msgid "Do not enforce key name restrictions" msgstr "No forzar las restricciones de nombre de las claves" -#: ../gio/glib-compile-schemas.c:2026 +#: ../gio/glib-compile-schemas.c:2068 msgid "" "Compile all GSettings schema files into a schema cache.\n" "Schema files are required to have the extension .gschema.xml,\n" @@ -1912,147 +1941,141 @@ msgstr "" "Los archivos de esquema deben tener la extensión .gschema.xml,\n" "y el archivo de caché se llama gschemas.compiled." -#: ../gio/glib-compile-schemas.c:2042 +#: ../gio/glib-compile-schemas.c:2084 #, c-format msgid "You should give exactly one directory name\n" msgstr "Deberá proporcionar exactamente un nombre de carpeta\n" -#: ../gio/glib-compile-schemas.c:2081 +#: ../gio/glib-compile-schemas.c:2123 #, c-format msgid "No schema files found: " msgstr "No se encontró ningún archivo de esquemas: " -#: ../gio/glib-compile-schemas.c:2084 +#: ../gio/glib-compile-schemas.c:2126 #, c-format msgid "doing nothing.\n" msgstr "sin hacer nada.\n" -#: ../gio/glib-compile-schemas.c:2087 +#: ../gio/glib-compile-schemas.c:2129 #, c-format msgid "removed existing output file.\n" msgstr "se quitó el archivo de salida existente.\n" -#: ../gio/glocaldirectorymonitor.c:224 -msgid "Unable to find default local directory monitor type" -msgstr "" -"No se pudo encontrar el tipo de monitorización de la carpeta local " -"predeterminada" - -#: ../gio/glocalfile.c:604 ../gio/win32/gwinhttpfile.c:420 +#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420 #, c-format msgid "Invalid filename %s" msgstr "Nombre de archivo no válido %s" -#: ../gio/glocalfile.c:981 +#: ../gio/glocalfile.c:1012 #, c-format msgid "Error getting filesystem info: %s" msgstr "Error al obtener la información del sistema de archivos: %s" -#: ../gio/glocalfile.c:1149 +#: ../gio/glocalfile.c:1180 msgid "Can't rename root directory" msgstr "No se puede renombrar la carpeta raíz" -#: ../gio/glocalfile.c:1169 ../gio/glocalfile.c:1195 +#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226 #, c-format msgid "Error renaming file: %s" msgstr "Error al renombrar el archivo: %s" -#: ../gio/glocalfile.c:1178 +#: ../gio/glocalfile.c:1209 msgid "Can't rename file, filename already exists" msgstr "No se puede renombrar el archivo, el nombre de archivo ya existe" -#: ../gio/glocalfile.c:1191 ../gio/glocalfile.c:2210 ../gio/glocalfile.c:2239 -#: ../gio/glocalfile.c:2399 ../gio/glocalfileoutputstream.c:549 +#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2249 ../gio/glocalfile.c:2278 +#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549 msgid "Invalid filename" msgstr "Nombre de archivo no válido" -#: ../gio/glocalfile.c:1358 ../gio/glocalfile.c:1382 +#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413 msgid "Can't open directory" msgstr "No se puede abrir la carpeta" -#: ../gio/glocalfile.c:1366 +#: ../gio/glocalfile.c:1397 #, c-format msgid "Error opening file: %s" msgstr "Error al abrir el archivo: %s" -#: ../gio/glocalfile.c:1507 +#: ../gio/glocalfile.c:1538 #, c-format msgid "Error removing file: %s" msgstr "Error al eliminar el archivo: %s" -#: ../gio/glocalfile.c:1887 +#: ../gio/glocalfile.c:1922 #, c-format msgid "Error trashing file: %s" msgstr "Error al mover a la papelera el archivo: %s" -#: ../gio/glocalfile.c:1910 +#: ../gio/glocalfile.c:1945 #, c-format msgid "Unable to create trash dir %s: %s" msgstr "No se pudo crear la carpeta de papelera %s: %s" -#: ../gio/glocalfile.c:1931 +#: ../gio/glocalfile.c:1966 msgid "Unable to find toplevel directory for trash" msgstr "No se pudo encontrar la carpeta de nivel superior para la papelera" -#: ../gio/glocalfile.c:2010 ../gio/glocalfile.c:2030 +#: ../gio/glocalfile.c:2045 ../gio/glocalfile.c:2065 msgid "Unable to find or create trash directory" msgstr "No se pudo encontrar o crear la carpeta de la papelera" -#: ../gio/glocalfile.c:2064 +#: ../gio/glocalfile.c:2099 #, c-format msgid "Unable to create trashing info file: %s" msgstr "No se pudo crear la información de papelera para el archivo: %s" -#: ../gio/glocalfile.c:2095 ../gio/glocalfile.c:2100 ../gio/glocalfile.c:2180 -#: ../gio/glocalfile.c:2187 +#: ../gio/glocalfile.c:2157 ../gio/glocalfile.c:2162 ../gio/glocalfile.c:2219 +#: ../gio/glocalfile.c:2226 #, c-format msgid "Unable to trash file: %s" msgstr "No se pudo enviar a la papelera el archivo: %s" -#: ../gio/glocalfile.c:2188 ../glib/gregex.c:281 +#: ../gio/glocalfile.c:2227 ../glib/gregex.c:281 msgid "internal error" msgstr "error interno" -#: ../gio/glocalfile.c:2214 +#: ../gio/glocalfile.c:2253 #, c-format msgid "Error creating directory: %s" msgstr "Error al crear la carpeta: %s" -#: ../gio/glocalfile.c:2243 +#: ../gio/glocalfile.c:2282 #, c-format msgid "Filesystem does not support symbolic links" msgstr "El sistema de archivos no soporta enlaces simbólicos" -#: ../gio/glocalfile.c:2247 +#: ../gio/glocalfile.c:2286 #, c-format msgid "Error making symbolic link: %s" msgstr "Error al crear el enlace simbólico: %s" -#: ../gio/glocalfile.c:2309 ../gio/glocalfile.c:2403 +#: ../gio/glocalfile.c:2348 ../gio/glocalfile.c:2442 #, c-format msgid "Error moving file: %s" msgstr "Error al mover el archivo: %s" -#: ../gio/glocalfile.c:2332 +#: ../gio/glocalfile.c:2371 msgid "Can't move directory over directory" msgstr "No se puede mover una carpeta sobre una carpeta" -#: ../gio/glocalfile.c:2359 ../gio/glocalfileoutputstream.c:925 +#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:925 #: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954 #: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984 msgid "Backup file creation failed" msgstr "Falló la creación del archivo de respaldo" -#: ../gio/glocalfile.c:2378 +#: ../gio/glocalfile.c:2417 #, c-format msgid "Error removing target file: %s" msgstr "Error al eliminar el archivo destino: %s" -#: ../gio/glocalfile.c:2392 +#: ../gio/glocalfile.c:2431 msgid "Move between mounts not supported" msgstr "No se soporta mover archivos entre puntos de montaje" -#: ../gio/glocalfile.c:2603 +#: ../gio/glocalfile.c:2623 #, c-format msgid "Could not determine the disk usage of %s: %s" msgstr "No se pudo determinar el uso de disco de %s: %s" @@ -2074,80 +2097,80 @@ msgstr "Nombre extendido del atributo no válido" msgid "Error setting extended attribute '%s': %s" msgstr "Error al establecer el atributo extendido «%s»: %s" -#: ../gio/glocalfileinfo.c:1556 +#: ../gio/glocalfileinfo.c:1575 msgid " (invalid encoding)" msgstr " (codificación no válida)" -#: ../gio/glocalfileinfo.c:1747 ../gio/glocalfileoutputstream.c:803 +#: ../gio/glocalfileinfo.c:1766 ../gio/glocalfileoutputstream.c:803 #, c-format msgid "Error when getting information for file '%s': %s" msgstr "Error al obtener la información del archivo «%s»: %s" -#: ../gio/glocalfileinfo.c:1998 +#: ../gio/glocalfileinfo.c:2017 #, c-format msgid "Error when getting information for file descriptor: %s" msgstr "Error al obtener la información del descriptor del archivo: %s" -#: ../gio/glocalfileinfo.c:2043 +#: ../gio/glocalfileinfo.c:2062 msgid "Invalid attribute type (uint32 expected)" msgstr "Tipo de atributo no válido (se esperaba uint32)" -#: ../gio/glocalfileinfo.c:2061 +#: ../gio/glocalfileinfo.c:2080 msgid "Invalid attribute type (uint64 expected)" msgstr "Tipo de atributo no válido (se esperaba uint64)" -#: ../gio/glocalfileinfo.c:2080 ../gio/glocalfileinfo.c:2099 +#: ../gio/glocalfileinfo.c:2099 ../gio/glocalfileinfo.c:2118 msgid "Invalid attribute type (byte string expected)" msgstr "Tipo de atributo no válido (se esperaba una cadena byte)" -#: ../gio/glocalfileinfo.c:2134 +#: ../gio/glocalfileinfo.c:2153 msgid "Cannot set permissions on symlinks" msgstr "No se pueden establecer permisos en enlaces simbólicos" -#: ../gio/glocalfileinfo.c:2150 +#: ../gio/glocalfileinfo.c:2169 #, c-format msgid "Error setting permissions: %s" msgstr "Error al establecer permisos: %s" -#: ../gio/glocalfileinfo.c:2201 +#: ../gio/glocalfileinfo.c:2220 #, c-format msgid "Error setting owner: %s" msgstr "Error al establecer el propietario: %s" -#: ../gio/glocalfileinfo.c:2224 +#: ../gio/glocalfileinfo.c:2243 msgid "symlink must be non-NULL" msgstr "el enlace simbólico debe ser no nulo" -#: ../gio/glocalfileinfo.c:2234 ../gio/glocalfileinfo.c:2253 -#: ../gio/glocalfileinfo.c:2264 +#: ../gio/glocalfileinfo.c:2253 ../gio/glocalfileinfo.c:2272 +#: ../gio/glocalfileinfo.c:2283 #, c-format msgid "Error setting symlink: %s" msgstr "Error al establecer el enlace simbólico: %s" -#: ../gio/glocalfileinfo.c:2243 +#: ../gio/glocalfileinfo.c:2262 msgid "Error setting symlink: file is not a symlink" msgstr "" "Error al establecer el enlace simbólico: el archivo no es un enlace simbólico" -#: ../gio/glocalfileinfo.c:2369 +#: ../gio/glocalfileinfo.c:2388 #, c-format msgid "Error setting modification or access time: %s" msgstr "Error al establecer o modificar el tiempo de acceso: %s" -#: ../gio/glocalfileinfo.c:2392 +#: ../gio/glocalfileinfo.c:2411 msgid "SELinux context must be non-NULL" msgstr "El contexto SELinux debe ser no nulo" -#: ../gio/glocalfileinfo.c:2407 +#: ../gio/glocalfileinfo.c:2426 #, c-format msgid "Error setting SELinux context: %s" msgstr "Error al establecer el contexto SELinux: %s" -#: ../gio/glocalfileinfo.c:2414 +#: ../gio/glocalfileinfo.c:2433 msgid "SELinux is not enabled on this system" msgstr "SELinux no está activado en este sistema" -#: ../gio/glocalfileinfo.c:2506 +#: ../gio/glocalfileinfo.c:2525 #, c-format msgid "Setting attribute %s not supported" msgstr "Establecer el atributo %s no está soportado" @@ -2170,7 +2193,7 @@ msgstr "Error al buscar en el archivo: %s" msgid "Error closing file: %s" msgstr "Error al cerrar el archivo: %s" -#: ../gio/glocalfilemonitor.c:145 +#: ../gio/glocalfilemonitor.c:840 msgid "Unable to find default local file monitor type" msgstr "" "No se pudo encontrar el tipo de monitorización del archivo local " @@ -2225,7 +2248,7 @@ msgstr "El archivo se modificó externamente" msgid "Error removing old file: %s" msgstr "Error al eliminar el archivo antiguo: %s" -#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:769 +#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:771 msgid "Invalid GSeekType supplied" msgstr "Se proporcionó un GSeekType no válido" @@ -2237,15 +2260,15 @@ msgstr "Petición de búsqueda no válida" msgid "Cannot truncate GMemoryInputStream" msgstr "No se puede truncar GMemoryInputStream" -#: ../gio/gmemoryoutputstream.c:565 +#: ../gio/gmemoryoutputstream.c:567 msgid "Memory output stream not resizable" msgstr "El flujo de salida de la memoria no es redimensionable" -#: ../gio/gmemoryoutputstream.c:581 +#: ../gio/gmemoryoutputstream.c:583 msgid "Failed to resize memory output stream" msgstr "Falló al redimensionar el flujo de salida de la memoria" -#: ../gio/gmemoryoutputstream.c:671 +#: ../gio/gmemoryoutputstream.c:673 msgid "" "Amount of memory required to process the write is larger than available " "address space" @@ -2253,11 +2276,11 @@ msgstr "" "La cantidad de memoria necesaria para procesar el escrito es mayor que el " "espacio de direcciones libre disponible" -#: ../gio/gmemoryoutputstream.c:779 +#: ../gio/gmemoryoutputstream.c:781 msgid "Requested seek before the beginning of the stream" msgstr "La búsqueda solicitada antes del inicio del flujo" -#: ../gio/gmemoryoutputstream.c:794 +#: ../gio/gmemoryoutputstream.c:796 msgid "Requested seek beyond the end of the stream" msgstr "La búsqueda solicitada después del final del flujo" @@ -2315,16 +2338,16 @@ msgid "mount doesn't implement synchronous content type guessing" msgstr "" "el punto de montaje no implementa averiguación del tipo de contenido síncrona" -#: ../gio/gnetworkaddress.c:383 +#: ../gio/gnetworkaddress.c:378 #, c-format msgid "Hostname '%s' contains '[' but not ']'" msgstr "El nombre del equipo «%s» contiene «[» pero no «]»" -#: ../gio/gnetworkmonitorbase.c:199 ../gio/gnetworkmonitorbase.c:302 +#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:309 msgid "Network unreachable" msgstr "Red no alcanzable" -#: ../gio/gnetworkmonitorbase.c:237 ../gio/gnetworkmonitorbase.c:267 +#: ../gio/gnetworkmonitorbase.c:244 ../gio/gnetworkmonitorbase.c:274 msgid "Host unreachable" msgstr "Equipo no alcanzable" @@ -2342,52 +2365,52 @@ msgstr "No se pudo crear el monitor de red: " msgid "Could not get network status: " msgstr "No se pudo obtener el estado de la red: " -#: ../gio/gnetworkmonitornm.c:278 +#: ../gio/gnetworkmonitornm.c:326 #, c-format msgid "NetworkManager version too old" msgstr "Versión de NetworkManager demasiado antigua" -#: ../gio/goutputstream.c:209 ../gio/goutputstream.c:557 +#: ../gio/goutputstream.c:212 ../gio/goutputstream.c:560 msgid "Output stream doesn't implement write" msgstr "El flujo de salida no implementa la escritura" -#: ../gio/goutputstream.c:518 ../gio/goutputstream.c:1218 +#: ../gio/goutputstream.c:521 ../gio/goutputstream.c:1222 msgid "Source stream is already closed" msgstr "El flujo de origen ya está cerrado" -#: ../gio/gresolver.c:331 ../gio/gthreadedresolver.c:116 +#: ../gio/gresolver.c:330 ../gio/gthreadedresolver.c:116 #: ../gio/gthreadedresolver.c:126 #, c-format msgid "Error resolving '%s': %s" msgstr "Error al resolver «%s»: %s" -#: ../gio/gresource.c:298 ../gio/gresource.c:546 ../gio/gresource.c:563 -#: ../gio/gresource.c:684 ../gio/gresource.c:753 ../gio/gresource.c:814 -#: ../gio/gresource.c:894 ../gio/gresourcefile.c:452 -#: ../gio/gresourcefile.c:553 ../gio/gresourcefile.c:655 +#: ../gio/gresource.c:304 ../gio/gresource.c:555 ../gio/gresource.c:572 +#: ../gio/gresource.c:693 ../gio/gresource.c:762 ../gio/gresource.c:823 +#: ../gio/gresource.c:903 ../gio/gresourcefile.c:453 +#: ../gio/gresourcefile.c:576 ../gio/gresourcefile.c:713 #, c-format msgid "The resource at '%s' does not exist" msgstr "El recurso en «%s» no existe" -#: ../gio/gresource.c:463 +#: ../gio/gresource.c:469 #, c-format msgid "The resource at '%s' failed to decompress" msgstr "El recurso en «%s» falló al descomprimir" -#: ../gio/gresourcefile.c:651 +#: ../gio/gresourcefile.c:709 #, c-format msgid "The resource at '%s' is not a directory" msgstr "El recurso en «%s» no es una carpeta" -#: ../gio/gresourcefile.c:859 +#: ../gio/gresourcefile.c:917 msgid "Input stream doesn't implement seek" msgstr "El flujo de entrada no implementa la búsqueda" -#: ../gio/gresource-tool.c:491 +#: ../gio/gresource-tool.c:494 msgid "List sections containing resources in an elf FILE" msgstr "Listar secciones que contengan recursos en un ARCHIVO elf" -#: ../gio/gresource-tool.c:497 +#: ../gio/gresource-tool.c:500 msgid "" "List resources\n" "If SECTION is given, only list resources in this section\n" @@ -2397,16 +2420,16 @@ msgstr "" "Si se da la SECCIÓN, listar solo los recursos de esta sección.\n" "Si se da la RUTA, listar solo los recursos que coincidan" -#: ../gio/gresource-tool.c:500 ../gio/gresource-tool.c:510 +#: ../gio/gresource-tool.c:503 ../gio/gresource-tool.c:513 msgid "FILE [PATH]" msgstr "ARCHIVO [RUTA]" -#: ../gio/gresource-tool.c:501 ../gio/gresource-tool.c:511 -#: ../gio/gresource-tool.c:518 +#: ../gio/gresource-tool.c:504 ../gio/gresource-tool.c:514 +#: ../gio/gresource-tool.c:521 msgid "SECTION" msgstr "SECCIÓN" -#: ../gio/gresource-tool.c:506 +#: ../gio/gresource-tool.c:509 msgid "" "List resources with details\n" "If SECTION is given, only list resources in this section\n" @@ -2418,15 +2441,15 @@ msgstr "" "Si se da la RUTA, listar solo los recursos que coincidan\n" "Los detalles incluyen la sección, el tamaño y la compresión" -#: ../gio/gresource-tool.c:516 +#: ../gio/gresource-tool.c:519 msgid "Extract a resource file to stdout" msgstr "Extraer un archivo de recursos a stdout" -#: ../gio/gresource-tool.c:517 +#: ../gio/gresource-tool.c:520 msgid "FILE PATH" msgstr "ARCHIVO RUTA" -#: ../gio/gresource-tool.c:531 +#: ../gio/gresource-tool.c:534 msgid "" "Usage:\n" " gresource [--section SECTION] COMMAND [ARGS...]\n" @@ -2454,7 +2477,7 @@ msgstr "" "Use «gresource help COMANDO» para obtener ayuda detallada.\n" "\n" -#: ../gio/gresource-tool.c:545 +#: ../gio/gresource-tool.c:548 #, c-format msgid "" "Usage:\n" @@ -2469,20 +2492,20 @@ msgstr "" "%s\n" "\n" -#: ../gio/gresource-tool.c:552 +#: ../gio/gresource-tool.c:555 msgid " SECTION An (optional) elf section name\n" msgstr " SECCIÓN El nombre de sección (opcional) de un elf\n" -#: ../gio/gresource-tool.c:556 ../gio/gsettings-tool.c:648 +#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:639 msgid " COMMAND The (optional) command to explain\n" msgstr " COMANDO El comando (opcional) que explicar\n" -#: ../gio/gresource-tool.c:562 +#: ../gio/gresource-tool.c:565 msgid " FILE An elf file (a binary or a shared library)\n" msgstr "" " ARCHIVO Un archivo elf (un binario o una biblioteca compartida)\n" -#: ../gio/gresource-tool.c:565 +#: ../gio/gresource-tool.c:568 msgid "" " FILE An elf file (a binary or a shared library)\n" " or a compiled resource file\n" @@ -2490,23 +2513,24 @@ msgstr "" " ARCHIVO Un archivo elf (un binario o una biblioteca compartida)\n" " o un archivo de recursos compilado\n" -#: ../gio/gresource-tool.c:569 +#: ../gio/gresource-tool.c:572 msgid "[PATH]" msgstr "[RUTA]" -#: ../gio/gresource-tool.c:571 +#: ../gio/gresource-tool.c:574 msgid " PATH An (optional) resource path (may be partial)\n" msgstr " RUTA La ruta (opcional) de un recurso (puede ser parcial)\n" -#: ../gio/gresource-tool.c:572 +#: ../gio/gresource-tool.c:575 msgid "PATH" msgstr "RUTA" -#: ../gio/gresource-tool.c:574 +#: ../gio/gresource-tool.c:577 msgid " PATH A resource path\n" msgstr " RUTA La ruta de un recurso\n" #: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72 +#: ../gio/gsettings-tool.c:830 #, c-format msgid "No such schema '%s'\n" msgstr "No existe el esquema «%s»\n" @@ -2541,38 +2565,38 @@ msgstr "La ruta debe terminar con una barra (/)\n" msgid "Path must not contain two adjacent slashes (//)\n" msgstr "La ruta no debe contener dos barras adyacentes (//)\n" -#: ../gio/gsettings-tool.c:490 +#: ../gio/gsettings-tool.c:481 #, c-format msgid "The provided value is outside of the valid range\n" msgstr "El valor proporcionado está fuera del rango válido\n" -#: ../gio/gsettings-tool.c:497 +#: ../gio/gsettings-tool.c:488 #, c-format msgid "The key is not writable\n" msgstr "No se puede escribir la clave\n" -#: ../gio/gsettings-tool.c:533 +#: ../gio/gsettings-tool.c:524 msgid "List the installed (non-relocatable) schemas" msgstr "Listar los esquemas instalados (no reubicables)" -#: ../gio/gsettings-tool.c:539 +#: ../gio/gsettings-tool.c:530 msgid "List the installed relocatable schemas" msgstr "Listar los esquemas reubicables instalados" -#: ../gio/gsettings-tool.c:545 +#: ../gio/gsettings-tool.c:536 msgid "List the keys in SCHEMA" msgstr "Listar las claves en el ESQUEMA" -#: ../gio/gsettings-tool.c:546 ../gio/gsettings-tool.c:552 -#: ../gio/gsettings-tool.c:589 +#: ../gio/gsettings-tool.c:537 ../gio/gsettings-tool.c:543 +#: ../gio/gsettings-tool.c:580 msgid "SCHEMA[:PATH]" msgstr "ESQUEMA[:RUTA]" -#: ../gio/gsettings-tool.c:551 +#: ../gio/gsettings-tool.c:542 msgid "List the children of SCHEMA" msgstr "Listar los hijos del ESQUEMA" -#: ../gio/gsettings-tool.c:557 +#: ../gio/gsettings-tool.c:548 msgid "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" @@ -2580,45 +2604,45 @@ msgstr "" "Listar las claves y valores recursivamente\n" "Si no se proporciona un ESQUEMA, listar todas las claves\n" -#: ../gio/gsettings-tool.c:559 +#: ../gio/gsettings-tool.c:550 msgid "[SCHEMA[:PATH]]" msgstr "[ESQUEMA[:RUTA]]" -#: ../gio/gsettings-tool.c:564 +#: ../gio/gsettings-tool.c:555 msgid "Get the value of KEY" msgstr "Obtener el valor de la CLAVE" -#: ../gio/gsettings-tool.c:565 ../gio/gsettings-tool.c:571 -#: ../gio/gsettings-tool.c:583 ../gio/gsettings-tool.c:595 +#: ../gio/gsettings-tool.c:556 ../gio/gsettings-tool.c:562 +#: ../gio/gsettings-tool.c:574 ../gio/gsettings-tool.c:586 msgid "SCHEMA[:PATH] KEY" msgstr "ESQUEMA[:RUTA] CLAVE" -#: ../gio/gsettings-tool.c:570 +#: ../gio/gsettings-tool.c:561 msgid "Query the range of valid values for KEY" msgstr "Consultar el rango de valores válidos para la CLAVE" -#: ../gio/gsettings-tool.c:576 +#: ../gio/gsettings-tool.c:567 msgid "Set the value of KEY to VALUE" msgstr "Establecer el valor de la CLAVE a VALOR" -#: ../gio/gsettings-tool.c:577 +#: ../gio/gsettings-tool.c:568 msgid "SCHEMA[:PATH] KEY VALUE" msgstr "ESQUEMA[:RUTA] CLAVE VALOR" -#: ../gio/gsettings-tool.c:582 +#: ../gio/gsettings-tool.c:573 msgid "Reset KEY to its default value" msgstr "Restablecer la CLAVE a su valor predeterminado" -#: ../gio/gsettings-tool.c:588 +#: ../gio/gsettings-tool.c:579 msgid "Reset all keys in SCHEMA to their defaults" msgstr "" "Restablecer todas las claves en un ESQUEMA a sus valores predeterminados" -#: ../gio/gsettings-tool.c:594 +#: ../gio/gsettings-tool.c:585 msgid "Check if KEY is writable" msgstr "Comprobar si la CLAVE se puede escribir" -#: ../gio/gsettings-tool.c:600 +#: ../gio/gsettings-tool.c:591 msgid "" "Monitor KEY for changes.\n" "If no KEY is specified, monitor all keys in SCHEMA.\n" @@ -2628,11 +2652,11 @@ msgstr "" "Si no se especifica una CLAVE, monitorizar todas las claves en el ESQUEMA.\n" "Use ^C para detener la monitorización.\n" -#: ../gio/gsettings-tool.c:603 +#: ../gio/gsettings-tool.c:594 msgid "SCHEMA[:PATH] [KEY]" msgstr "ESQUEMA[:RUTA] [CLAVE]" -#: ../gio/gsettings-tool.c:615 +#: ../gio/gsettings-tool.c:606 msgid "" "Usage:\n" " gsettings --version\n" @@ -2679,7 +2703,7 @@ msgstr "" "Use «gsettings help COMANDO» para obtener una ayuda detallada.\n" "\n" -#: ../gio/gsettings-tool.c:638 +#: ../gio/gsettings-tool.c:629 #, c-format msgid "" "Usage:\n" @@ -2694,11 +2718,11 @@ msgstr "" "%s\n" "\n" -#: ../gio/gsettings-tool.c:644 +#: ../gio/gsettings-tool.c:635 msgid " SCHEMADIR A directory to search for additional schemas\n" msgstr " CARPETA_ESQUEMA: una carpeta para buscar esquemas adicionales\n" -#: ../gio/gsettings-tool.c:652 +#: ../gio/gsettings-tool.c:643 msgid "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" @@ -2706,160 +2730,181 @@ msgstr "" " SCHEMA El nombre del esquema\n" " RUTA La ruta, para esquemas reubicables\n" -#: ../gio/gsettings-tool.c:657 +#: ../gio/gsettings-tool.c:648 msgid " KEY The (optional) key within the schema\n" msgstr " CLAVE La clave (opcional) para el esquema\n" -#: ../gio/gsettings-tool.c:661 +#: ../gio/gsettings-tool.c:652 msgid " KEY The key within the schema\n" msgstr " CLAVE La clave para el esquema\n" -#: ../gio/gsettings-tool.c:665 +#: ../gio/gsettings-tool.c:656 msgid " VALUE The value to set\n" msgstr " VALOR El valor para establecer\n" -#: ../gio/gsettings-tool.c:720 +#: ../gio/gsettings-tool.c:711 #, c-format msgid "Could not load schemas from %s: %s\n" msgstr "No se pudieron cargar los esquemas de %s: %s\n" -#: ../gio/gsettings-tool.c:782 +#: ../gio/gsettings-tool.c:723 +#, c-format +#| msgid "No schema files found: " +msgid "No schemas installed\n" +msgstr "No hay esquemas instalados\n" + +#: ../gio/gsettings-tool.c:788 #, c-format msgid "Empty schema name given\n" msgstr "Se proporcionó un nombre de esquema vacío\n" -#: ../gio/gsettings-tool.c:811 +#: ../gio/gsettings-tool.c:843 #, c-format msgid "No such key '%s'\n" msgstr "No existe la clave «%s»\n" -#: ../gio/gsocket.c:271 +#: ../gio/gsocket.c:364 msgid "Invalid socket, not initialized" msgstr "Socket no válido, no inicializado" -#: ../gio/gsocket.c:278 +#: ../gio/gsocket.c:371 #, c-format msgid "Invalid socket, initialization failed due to: %s" msgstr "Socket no válido, falló la instalación debido a: %s" -#: ../gio/gsocket.c:286 +#: ../gio/gsocket.c:379 msgid "Socket is already closed" msgstr "El socket ya está cerrado" -#: ../gio/gsocket.c:301 ../gio/gsocket.c:3627 ../gio/gsocket.c:3682 +#: ../gio/gsocket.c:394 ../gio/gsocket.c:2751 ../gio/gsocket.c:3896 +#: ../gio/gsocket.c:3951 msgid "Socket I/O timed out" msgstr "Expiró la E/S del socket" -#: ../gio/gsocket.c:448 +#: ../gio/gsocket.c:526 #, c-format msgid "creating GSocket from fd: %s" msgstr "creando el GSocket desde fd: %s" -#: ../gio/gsocket.c:476 ../gio/gsocket.c:530 ../gio/gsocket.c:537 +#: ../gio/gsocket.c:554 ../gio/gsocket.c:608 ../gio/gsocket.c:615 #, c-format msgid "Unable to create socket: %s" msgstr "No se pudo crear el socket: %s" -#: ../gio/gsocket.c:530 +#: ../gio/gsocket.c:608 msgid "Unknown family was specified" msgstr "Se especificó una familia desconocida" -#: ../gio/gsocket.c:537 +#: ../gio/gsocket.c:615 msgid "Unknown protocol was specified" msgstr "Se especificó un protocolo desconocido" -#: ../gio/gsocket.c:1727 +#: ../gio/gsocket.c:1104 +#, c-format +msgid "Cannot use datagram operations on a non-datagram socket." +msgstr "" +"No se pueden usar operaciones de datagrama en un zócalo que no es de " +"datagrama." + +#: ../gio/gsocket.c:1121 +#, c-format +msgid "Cannot use datagram operations on a socket with a timeout set." +msgstr "" +"No se pueden usar operaciones de datagrama en un zócalo sin un tiempo de " +"expiración establecido." + +#: ../gio/gsocket.c:1925 #, c-format msgid "could not get local address: %s" msgstr "no se pudo obtener la dirección local: %s" -#: ../gio/gsocket.c:1770 +#: ../gio/gsocket.c:1968 #, c-format msgid "could not get remote address: %s" msgstr "no se pudo obtener la dirección remota: %s" -#: ../gio/gsocket.c:1831 +#: ../gio/gsocket.c:2034 #, c-format msgid "could not listen: %s" msgstr "no se pudo escuchar: %s" -#: ../gio/gsocket.c:1930 +#: ../gio/gsocket.c:2133 #, c-format msgid "Error binding to address: %s" msgstr "Error al vincular con la dirección: %s" -#: ../gio/gsocket.c:2045 ../gio/gsocket.c:2082 +#: ../gio/gsocket.c:2248 ../gio/gsocket.c:2285 #, c-format msgid "Error joining multicast group: %s" msgstr "Error al unirse al grupo de multicast: %s" -#: ../gio/gsocket.c:2046 ../gio/gsocket.c:2083 +#: ../gio/gsocket.c:2249 ../gio/gsocket.c:2286 #, c-format msgid "Error leaving multicast group: %s" msgstr "Error al abandonar al grupo de multicast: %s" -#: ../gio/gsocket.c:2047 +#: ../gio/gsocket.c:2250 msgid "No support for source-specific multicast" msgstr "No se soporta el multicast específico de la fuente" -#: ../gio/gsocket.c:2269 +#: ../gio/gsocket.c:2470 #, c-format msgid "Error accepting connection: %s" msgstr "Error al aceptar la conexión: %s" -#: ../gio/gsocket.c:2392 +#: ../gio/gsocket.c:2593 msgid "Connection in progress" msgstr "Conexión en progreso" -#: ../gio/gsocket.c:2442 +#: ../gio/gsocket.c:2644 msgid "Unable to get pending error: " msgstr "No se pudo obtener el error pendiente: " -#: ../gio/gsocket.c:2645 +#: ../gio/gsocket.c:2816 #, c-format msgid "Error receiving data: %s" msgstr "Error al recibir los datos: %s" -#: ../gio/gsocket.c:2820 +#: ../gio/gsocket.c:3013 #, c-format msgid "Error sending data: %s" msgstr "Error al enviar los datos: %s" -#: ../gio/gsocket.c:2934 +#: ../gio/gsocket.c:3200 #, c-format msgid "Unable to shutdown socket: %s" msgstr "No se pudo desconectar el socket: %s" -#: ../gio/gsocket.c:3013 +#: ../gio/gsocket.c:3281 #, c-format msgid "Error closing socket: %s" msgstr "Error al cerrar el socket: %s" -#: ../gio/gsocket.c:3620 +#: ../gio/gsocket.c:3889 #, c-format msgid "Waiting for socket condition: %s" msgstr "Esperando la condición del socket: %s" -#: ../gio/gsocket.c:3907 ../gio/gsocket.c:3990 ../gio/gsocket.c:4218 +#: ../gio/gsocket.c:4361 ../gio/gsocket.c:4441 ../gio/gsocket.c:4619 #, c-format msgid "Error sending message: %s" msgstr "Error al enviar el mensaje: %s" -#: ../gio/gsocket.c:3932 +#: ../gio/gsocket.c:4385 msgid "GSocketControlMessage not supported on Windows" msgstr "GSocketControlMessage no está soportado en Windows" -#: ../gio/gsocket.c:4546 ../gio/gsocket.c:4684 +#: ../gio/gsocket.c:4840 ../gio/gsocket.c:4913 ../gio/gsocket.c:5140 #, c-format msgid "Error receiving message: %s" msgstr "Error al recibir el mensaje: %s" -#: ../gio/gsocket.c:4806 +#: ../gio/gsocket.c:5412 #, c-format msgid "Unable to read socket credentials: %s" msgstr "No se pudieron leer las credenciales del socket: %s" -#: ../gio/gsocket.c:4815 +#: ../gio/gsocket.c:5421 msgid "g_socket_get_credentials not implemented for this OS" msgstr "g_socket_get_credentials no está implementado en este SO" @@ -2891,11 +2936,11 @@ msgstr "" msgid "Proxy protocol '%s' is not supported." msgstr "El protocolo del proxy «%s» no está soportado." -#: ../gio/gsocketlistener.c:188 +#: ../gio/gsocketlistener.c:218 msgid "Listener is already closed" msgstr "El «listener» ya está cerrado" -#: ../gio/gsocketlistener.c:234 +#: ../gio/gsocketlistener.c:264 msgid "Added socket is closed" msgstr "El socket añadido está cerrado" @@ -3114,12 +3159,13 @@ msgstr "No se esperaba un mensaje de control, pero se obtuvo %d" msgid "Error while disabling SO_PASSCRED: %s" msgstr "Error al desactivar SO_PASSCRED: %s" -#: ../gio/gunixinputstream.c:370 ../gio/gunixinputstream.c:391 +#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390 #, c-format msgid "Error reading from file descriptor: %s" msgstr "Error al leer del descriptor del archivo: %s" -#: ../gio/gunixinputstream.c:424 ../gio/gunixoutputstream.c:410 +#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409 +#: ../gio/gwin32inputstream.c:217 ../gio/gwin32outputstream.c:204 #, c-format msgid "Error closing file descriptor: %s" msgstr "Error al cerrar el descriptor del archivo: %s" @@ -3128,12 +3174,12 @@ msgstr "Error al cerrar el descriptor del archivo: %s" msgid "Filesystem root" msgstr "Sistema de archivos raíz" -#: ../gio/gunixoutputstream.c:356 ../gio/gunixoutputstream.c:377 +#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376 #, c-format msgid "Error writing to file descriptor: %s" msgstr "Error al escribir en el descriptor del archivo: %s" -#: ../gio/gunixsocketaddress.c:232 +#: ../gio/gunixsocketaddress.c:239 msgid "Abstract UNIX domain socket addresses not supported on this system" msgstr "" "Este sistema no soporta direcciones de socket de dominio UNIX abstracto" @@ -3149,34 +3195,17 @@ msgstr "el volumen no implementa la expulsión" msgid "volume doesn't implement eject or eject_with_operation" msgstr "el volumen no implementa la expulsión o expulsión con operación" -#: ../gio/gwin32appinfo.c:274 -msgid "Can't find application" -msgstr "No se puede encontrar la aplicación" - -#: ../gio/gwin32appinfo.c:303 -#, c-format -msgid "Error launching application: %s" -msgstr "Error al analizar la aplicación: %s" - -#: ../gio/gwin32appinfo.c:378 -msgid "association changes not supported on win32" -msgstr "los cambios de asociación no están soportados en win32" - -#: ../gio/gwin32appinfo.c:390 -msgid "Association creation not supported on win32" -msgstr "La creación de asociación no está soportada en win32" - -#: ../gio/gwin32inputstream.c:344 +#: ../gio/gwin32inputstream.c:185 #, c-format msgid "Error reading from handle: %s" msgstr "Error al leer del manejador: %s" -#: ../gio/gwin32inputstream.c:388 ../gio/gwin32outputstream.c:375 +#: ../gio/gwin32inputstream.c:232 ../gio/gwin32outputstream.c:219 #, c-format msgid "Error closing handle: %s" msgstr "Error al cerrar el manejador: %s" -#: ../gio/gwin32outputstream.c:331 +#: ../gio/gwin32outputstream.c:172 #, c-format msgid "Error writing to handle: %s" msgstr "Error al escribir en el manejador: %s" @@ -3295,8 +3324,8 @@ msgstr "Ninguna aplicación con nombre «%s» registró un marcador para «%s»" msgid "Failed to expand exec line '%s' with URI '%s'" msgstr "Falló la expansión de la la linea ejecutable «%s» con el URI «%s»" -#: ../glib/gconvert.c:477 ../glib/gutf8.c:833 ../glib/gutf8.c:1044 -#: ../glib/gutf8.c:1181 ../glib/gutf8.c:1285 +#: ../glib/gconvert.c:477 ../glib/gutf8.c:849 ../glib/gutf8.c:1061 +#: ../glib/gutf8.c:1198 ../glib/gutf8.c:1302 msgid "Partial character sequence at end of input" msgstr "Hay una secuencia parcial de caracteres en el final de la entrada" @@ -3305,37 +3334,37 @@ msgstr "Hay una secuencia parcial de caracteres en el final de la entrada" msgid "Cannot convert fallback '%s' to codeset '%s'" msgstr "No se puede convertir el fallback «%s» al conjunto de códigos «%s»" -#: ../glib/gconvert.c:1566 +#: ../glib/gconvert.c:1567 #, c-format msgid "The URI '%s' is not an absolute URI using the \"file\" scheme" msgstr "El URI «%s» no es una URI absoluta utilizando el esquema «file»" -#: ../glib/gconvert.c:1576 +#: ../glib/gconvert.c:1577 #, c-format msgid "The local file URI '%s' may not include a '#'" msgstr "El archivo local en la URI «%s» no debe incluir un «#»" -#: ../glib/gconvert.c:1593 +#: ../glib/gconvert.c:1594 #, c-format msgid "The URI '%s' is invalid" msgstr "El URI «%s» no es válido" -#: ../glib/gconvert.c:1605 +#: ../glib/gconvert.c:1606 #, c-format msgid "The hostname of the URI '%s' is invalid" msgstr "El nombre del host de la URI «%s» no es válido" -#: ../glib/gconvert.c:1621 +#: ../glib/gconvert.c:1622 #, c-format msgid "The URI '%s' contains invalidly escaped characters" msgstr "El URI «%s» contiene caracteres de escape no válidos" -#: ../glib/gconvert.c:1716 +#: ../glib/gconvert.c:1717 #, c-format msgid "The pathname '%s' is not an absolute path" msgstr "El nombre de la ruta «%s» no es una ruta absoluta" -#: ../glib/gconvert.c:1726 +#: ../glib/gconvert.c:1727 msgid "Invalid hostname" msgstr "El nombre del host no es válido" @@ -3651,26 +3680,26 @@ msgstr "Falló al leer el enlace simbólico «%s»: %s" msgid "Symbolic links not supported" msgstr "Enlaces simbólicos no soportados" -#: ../glib/giochannel.c:1389 +#: ../glib/giochannel.c:1388 #, c-format msgid "Could not open converter from '%s' to '%s': %s" msgstr "No se pudo abrir el conversor de «%s» a «%s»: %s" -#: ../glib/giochannel.c:1734 +#: ../glib/giochannel.c:1733 msgid "Can't do a raw read in g_io_channel_read_line_string" msgstr "" "No se puede hacer una lectura en bruto (raw) en g_io_channel_read_line_string" -#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039 -#: ../glib/giochannel.c:2126 +#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038 +#: ../glib/giochannel.c:2125 msgid "Leftover unconverted data in read buffer" msgstr "Se han dejado datos no convertidos en el búfer de lectura" -#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939 +#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938 msgid "Channel terminates in a partial character" msgstr "El canal termina en un carácter parcial" -#: ../glib/giochannel.c:1925 +#: ../glib/giochannel.c:1924 msgid "Can't do a raw read in g_io_channel_read_to_end" msgstr "" "No se puede hacer una lectura en bruto (raw) en g_io_channel_read_to_end" @@ -3712,8 +3741,8 @@ msgid "Key file contains unsupported encoding '%s'" msgstr "El archivo de claves contiene una codificación «%s» no soportada" #: ../glib/gkeyfile.c:1548 ../glib/gkeyfile.c:1721 ../glib/gkeyfile.c:3099 -#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3288 ../glib/gkeyfile.c:3418 -#: ../glib/gkeyfile.c:3560 ../glib/gkeyfile.c:3789 ../glib/gkeyfile.c:3856 +#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3292 ../glib/gkeyfile.c:3422 +#: ../glib/gkeyfile.c:3566 ../glib/gkeyfile.c:3795 ../glib/gkeyfile.c:3862 #, c-format msgid "Key file does not have group '%s'" msgstr "El archivo de claves no tiene el grupo «%s»" @@ -3753,32 +3782,32 @@ msgid "Key '%s' in group '%s' has value '%s' where %s was expected" msgstr "" "La clave «%s» en el grupo «%s» tiene el valor «%s», pero se esperaba %s" -#: ../glib/gkeyfile.c:4096 +#: ../glib/gkeyfile.c:4102 msgid "Key file contains escape character at end of line" msgstr "" "El archivo de claves contiene un carácter de escape al final de la línea" -#: ../glib/gkeyfile.c:4118 +#: ../glib/gkeyfile.c:4124 #, c-format msgid "Key file contains invalid escape sequence '%s'" msgstr "El archivo de claves contiene la secuencia de escape no válida «%s»" -#: ../glib/gkeyfile.c:4260 +#: ../glib/gkeyfile.c:4266 #, c-format msgid "Value '%s' cannot be interpreted as a number." msgstr "El valor «%s» no puede interpretarse como un número." -#: ../glib/gkeyfile.c:4274 +#: ../glib/gkeyfile.c:4280 #, c-format msgid "Integer value '%s' out of range" msgstr "El valor entero «%s» está fuera de rango" -#: ../glib/gkeyfile.c:4307 +#: ../glib/gkeyfile.c:4313 #, c-format msgid "Value '%s' cannot be interpreted as a float number." msgstr "El valor «%s» no puede interpretarse como un número de coma flotante." -#: ../glib/gkeyfile.c:4331 +#: ../glib/gkeyfile.c:4350 #, c-format msgid "Value '%s' cannot be interpreted as a boolean." msgstr "El valor «%s» no puede interpretarse como un booleano." @@ -3824,7 +3853,7 @@ msgstr "«%s» no es un nombre válido: «%c»" msgid "Error on line %d: %s" msgstr "Error en la línea %d: %s" -#: ../glib/gmarkup.c:683 +#: ../glib/gmarkup.c:676 #, c-format msgid "" "Failed to parse '%-.*s', which should have been a digit inside a character " @@ -3834,7 +3863,7 @@ msgstr "" "carácter de referencia( por ejemplo ê) - tal vez el dígito es demasiado " "grande" -#: ../glib/gmarkup.c:695 +#: ../glib/gmarkup.c:688 msgid "" "Character reference did not end with a semicolon; most likely you used an " "ampersand character without intending to start an entity - escape ampersand " @@ -3844,24 +3873,24 @@ msgstr "" "un carácter «&» sin pretender iniciar una entidad, escape el carácter \"&\" " "como &" -#: ../glib/gmarkup.c:721 +#: ../glib/gmarkup.c:714 #, c-format msgid "Character reference '%-.*s' does not encode a permitted character" msgstr "El carácter de referencia «%-.*s» no codifica un carácter permitido" -#: ../glib/gmarkup.c:759 +#: ../glib/gmarkup.c:752 msgid "" "Empty entity '&;' seen; valid entities are: & " < > '" msgstr "" "La entidad '&;' está vacía; las entidades válidas son: & " < " "> '" -#: ../glib/gmarkup.c:767 +#: ../glib/gmarkup.c:760 #, c-format msgid "Entity name '%-.*s' is not known" msgstr "El nombre de la entidad «%-.*s» es desconocido" -#: ../glib/gmarkup.c:772 +#: ../glib/gmarkup.c:765 msgid "" "Entity did not end with a semicolon; most likely you used an ampersand " "character without intending to start an entity - escape ampersand as &" @@ -3870,11 +3899,11 @@ msgstr "" "\"&\" sin la intención de indicar una entidad, escape el signo \"&\" como " "&" -#: ../glib/gmarkup.c:1178 +#: ../glib/gmarkup.c:1171 msgid "Document must begin with an element (e.g. )" msgstr "El documento debe comenzar con un elemento (por ejemplo: )" -#: ../glib/gmarkup.c:1218 +#: ../glib/gmarkup.c:1211 #, c-format msgid "" "'%s' is not a valid character following a '<' character; it may not begin an " @@ -3883,7 +3912,7 @@ msgstr "" "«%s» no es un carácter válido a continuación del carácter '<'; no debe " "iniciar un nombre de elemento" -#: ../glib/gmarkup.c:1260 +#: ../glib/gmarkup.c:1253 #, c-format msgid "" "Odd character '%s', expected a '>' character to end the empty-element tag " @@ -3892,7 +3921,7 @@ msgstr "" "Carácter «%s» impropio, se esperaba un carácter «>» para terminar la " "etiqueta vacía del elemento «%s»" -#: ../glib/gmarkup.c:1341 +#: ../glib/gmarkup.c:1334 #, c-format msgid "" "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" @@ -3900,7 +3929,7 @@ msgstr "" "Carácter «%s» impropio, se esperaba el carácter '=' después del nombre de " "atributo «%s» del elemento «%s»" -#: ../glib/gmarkup.c:1382 +#: ../glib/gmarkup.c:1375 #, c-format msgid "" "Odd character '%s', expected a '>' or '/' character to end the start tag of " @@ -3911,7 +3940,7 @@ msgstr "" "etiqueta de inicio del elemento «%s» u opcionalmente un atributo; tal vez " "utilizó un carácter que no es válido en un nombre de atributo" -#: ../glib/gmarkup.c:1426 +#: ../glib/gmarkup.c:1419 #, c-format msgid "" "Odd character '%s', expected an open quote mark after the equals sign when " @@ -3920,7 +3949,7 @@ msgstr "" "Carácter «%s» impropio, se esperaba una marca de apertura de comillas " "después del signo igual al darle valor al atributo «%s» del elemento «%s»" -#: ../glib/gmarkup.c:1559 +#: ../glib/gmarkup.c:1552 #, c-format msgid "" "'%s' is not a valid character following the characters ''" -#: ../glib/gmarkup.c:1606 +#: ../glib/gmarkup.c:1599 #, c-format msgid "Element '%s' was closed, no element is currently open" msgstr "El elemento «%s» fue cerrado, no existe ningún elemento abierto" -#: ../glib/gmarkup.c:1615 +#: ../glib/gmarkup.c:1608 #, c-format msgid "Element '%s' was closed, but the currently open element is '%s'" msgstr "" "Se cerró el elemento «%s», pero el elemento que está abierto actualmente es " "«%s»" -#: ../glib/gmarkup.c:1768 +#: ../glib/gmarkup.c:1761 msgid "Document was empty or contained only whitespace" msgstr "El documento estaba vacío o sólo contenía espacios en blanco" -#: ../glib/gmarkup.c:1782 +#: ../glib/gmarkup.c:1775 msgid "Document ended unexpectedly just after an open angle bracket '<'" msgstr "El documento termina inesperadamente justo después de un '<'" -#: ../glib/gmarkup.c:1790 ../glib/gmarkup.c:1835 +#: ../glib/gmarkup.c:1783 ../glib/gmarkup.c:1828 #, c-format msgid "" "Document ended unexpectedly with elements still open - '%s' was the last " @@ -3967,7 +3996,7 @@ msgstr "" "El documento termina inesperadamente con elementos todavía abiertos - «%s» " "fue el último elemento abierto" -#: ../glib/gmarkup.c:1798 +#: ../glib/gmarkup.c:1791 #, c-format msgid "" "Document ended unexpectedly, expected to see a close angle bracket ending " @@ -3976,21 +4005,21 @@ msgstr "" "El documento termina inesperadamente, se esperaba un carácter '>' " "finalizando la etiqueta <%s/>" -#: ../glib/gmarkup.c:1804 +#: ../glib/gmarkup.c:1797 msgid "Document ended unexpectedly inside an element name" msgstr "El documento termina inesperadamente dentro de un nombre de elemento" -#: ../glib/gmarkup.c:1810 +#: ../glib/gmarkup.c:1803 msgid "Document ended unexpectedly inside an attribute name" msgstr "El documento termina inesperadamente dentro de un nombre de atributo" -#: ../glib/gmarkup.c:1815 +#: ../glib/gmarkup.c:1808 msgid "Document ended unexpectedly inside an element-opening tag." msgstr "" "El documento terminó inesperadamente dentro de una etiqueta de apertura de " "elemento." -#: ../glib/gmarkup.c:1821 +#: ../glib/gmarkup.c:1814 msgid "" "Document ended unexpectedly after the equals sign following an attribute " "name; no attribute value" @@ -3998,78 +4027,82 @@ msgstr "" "El documento termina inesperadamente después de los signos igual que siguen " "al nombre de atributo; sin valor de atributo" -#: ../glib/gmarkup.c:1828 +#: ../glib/gmarkup.c:1821 msgid "Document ended unexpectedly while inside an attribute value" msgstr "El documento termina inesperadamente dentro del valor de un atributo" -#: ../glib/gmarkup.c:1844 +#: ../glib/gmarkup.c:1837 #, c-format msgid "Document ended unexpectedly inside the close tag for element '%s'" msgstr "" "El documento termina inesperadamente dentro de la etiqueta de cierre del " "elemento «%s»" -#: ../glib/gmarkup.c:1850 +#: ../glib/gmarkup.c:1843 msgid "Document ended unexpectedly inside a comment or processing instruction" msgstr "" "El documento termina inesperadamente dentro de un comentario o instrucción " "de proceso" -#: ../glib/goption.c:858 +#: ../glib/goption.c:857 msgid "Usage:" msgstr "Uso:" -#: ../glib/goption.c:858 +#: ../glib/goption.c:861 msgid "[OPTION...]" msgstr "[OPCIÓN…]" -#: ../glib/goption.c:974 +#: ../glib/goption.c:977 msgid "Help Options:" msgstr "Opciones de ayuda:" -#: ../glib/goption.c:975 +#: ../glib/goption.c:978 msgid "Show help options" msgstr "Mostrar opciones de ayuda" -#: ../glib/goption.c:981 +#: ../glib/goption.c:984 msgid "Show all help options" msgstr "Muestra todas las opciones de ayuda" -#: ../glib/goption.c:1043 +#: ../glib/goption.c:1047 msgid "Application Options:" msgstr "Opciones de la aplicación:" -#: ../glib/goption.c:1107 ../glib/goption.c:1177 +#: ../glib/goption.c:1049 +msgid "Options:" +msgstr "Opciones:" + +#: ../glib/goption.c:1113 ../glib/goption.c:1183 #, c-format msgid "Cannot parse integer value '%s' for %s" msgstr "No se puede analizar el valor entero «%s» para %s" -#: ../glib/goption.c:1117 ../glib/goption.c:1185 +#: ../glib/goption.c:1123 ../glib/goption.c:1191 #, c-format msgid "Integer value '%s' for %s out of range" msgstr "El valor entero «%s» para %s está fuera de rango" -#: ../glib/goption.c:1142 +#: ../glib/goption.c:1148 #, c-format msgid "Cannot parse double value '%s' for %s" msgstr "No se puede analizar el valor doble «%s» para %s" -#: ../glib/goption.c:1150 +#: ../glib/goption.c:1156 #, c-format msgid "Double value '%s' for %s out of range" msgstr "El valor doble «%s» para %s está fuera de rango" -#: ../glib/goption.c:1436 ../glib/goption.c:1515 +#: ../glib/goption.c:1442 ../glib/goption.c:1521 #, c-format msgid "Error parsing option %s" msgstr "Error al analizar la opción: %s" -#: ../glib/goption.c:1546 ../glib/goption.c:1659 +#: ../glib/goption.c:1552 ../glib/goption.c:1665 #, c-format msgid "Missing argument for %s" msgstr "Falta un argumento para %s" -#: ../glib/goption.c:2120 +#: ../glib/goption.c:2126 #, c-format msgid "Unknown option %s" msgstr "Opción desconocida %s" @@ -4378,71 +4411,71 @@ msgstr "el nombre es demasiado largo en (*MARK), (*PRUNE), (*SKIP), o (*THEN)" msgid "character value in \\u.... sequence is too large" msgstr "el valor del carácter en la secuencia \\u{…} es demasiado largo" -#: ../glib/gregex.c:746 ../glib/gregex.c:1915 +#: ../glib/gregex.c:746 ../glib/gregex.c:1973 #, c-format msgid "Error while matching regular expression %s: %s" msgstr "Error al coincidir con la expresión regular %s: %s" -#: ../glib/gregex.c:1312 +#: ../glib/gregex.c:1317 msgid "PCRE library is compiled without UTF8 support" msgstr "La biblioteca PCRE está compilada sin soporte para UTF8" -#: ../glib/gregex.c:1316 +#: ../glib/gregex.c:1321 msgid "PCRE library is compiled without UTF8 properties support" msgstr "" "La biblioteca PCRE está compilada sin soporte para las propiedades de UTF8" -#: ../glib/gregex.c:1324 +#: ../glib/gregex.c:1329 msgid "PCRE library is compiled with incompatible options" msgstr "La biblioteca PCRE está compilada con opciones incompatibles" -#: ../glib/gregex.c:1383 -#, c-format -msgid "Error while compiling regular expression %s at char %d: %s" -msgstr "Error al compilar la expresión regular %s en el carácter %d: %s" - -#: ../glib/gregex.c:1425 +#: ../glib/gregex.c:1358 #, c-format msgid "Error while optimizing regular expression %s: %s" msgstr "Error al optimizar la expresión regular %s: %s" -#: ../glib/gregex.c:2347 +#: ../glib/gregex.c:1438 +#, c-format +msgid "Error while compiling regular expression %s at char %d: %s" +msgstr "Error al compilar la expresión regular %s en el carácter %d: %s" + +#: ../glib/gregex.c:2409 msgid "hexadecimal digit or '}' expected" msgstr "se esperaba un dígito hexadecimal o «}»" -#: ../glib/gregex.c:2363 +#: ../glib/gregex.c:2425 msgid "hexadecimal digit expected" msgstr "se esperaba un dígito hexadecimal" -#: ../glib/gregex.c:2403 +#: ../glib/gregex.c:2465 msgid "missing '<' in symbolic reference" msgstr "falta «<» en la referencia simbólica" -#: ../glib/gregex.c:2412 +#: ../glib/gregex.c:2474 msgid "unfinished symbolic reference" msgstr "referencia de símbolo sin terminar" -#: ../glib/gregex.c:2419 +#: ../glib/gregex.c:2481 msgid "zero-length symbolic reference" msgstr "referencia simbólica de longitud cero" -#: ../glib/gregex.c:2430 +#: ../glib/gregex.c:2492 msgid "digit expected" msgstr "se esperaba un dígito" -#: ../glib/gregex.c:2448 +#: ../glib/gregex.c:2510 msgid "illegal symbolic reference" msgstr "referencia simbólica ilegal" -#: ../glib/gregex.c:2510 +#: ../glib/gregex.c:2572 msgid "stray final '\\'" msgstr "«\\» al final de la cadena" -#: ../glib/gregex.c:2514 +#: ../glib/gregex.c:2576 msgid "unknown escape sequence" msgstr "secuencia de escape desconocida" -#: ../glib/gregex.c:2524 +#: ../glib/gregex.c:2586 #, c-format msgid "Error while parsing replacement text \"%s\" at char %lu: %s" msgstr "Error al analizar el texto de reemplazo «%s» en el carácter %lu: %s" @@ -4489,62 +4522,62 @@ msgstr "Falló inesperado en select() leyendo datos desde el proceso hijo (%s)" msgid "Unexpected error in waitpid() (%s)" msgstr "Falló inesperado en waitpid() (%s)" -#: ../glib/gspawn.c:849 ../glib/gspawn-win32.c:1233 +#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233 #, c-format msgid "Child process exited with code %ld" msgstr "El proceso hijo terminó con el código %ld" -#: ../glib/gspawn.c:857 +#: ../glib/gspawn.c:852 #, c-format msgid "Child process killed by signal %ld" msgstr "El proceso hijo terminado por la señal %ld" -#: ../glib/gspawn.c:864 +#: ../glib/gspawn.c:859 #, c-format msgid "Child process stopped by signal %ld" msgstr "El proceso hijo se detuvo por la señal %ld" -#: ../glib/gspawn.c:871 +#: ../glib/gspawn.c:866 #, c-format msgid "Child process exited abnormally" msgstr "El proceso hijo terminó de forma anormal" -#: ../glib/gspawn.c:1276 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 +#: ../glib/gspawn.c:1271 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 #, c-format msgid "Failed to read from child pipe (%s)" msgstr "Falló al leer desde el conducto hijo (%s)" -#: ../glib/gspawn.c:1346 +#: ../glib/gspawn.c:1341 #, c-format msgid "Failed to fork (%s)" msgstr "Falló al bifurcar (fork) (%s)" -#: ../glib/gspawn.c:1495 ../glib/gspawn-win32.c:370 +#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370 #, c-format msgid "Failed to change to directory '%s' (%s)" msgstr "Falló al cambiar a la carpeta «%s» (%s)" -#: ../glib/gspawn.c:1505 +#: ../glib/gspawn.c:1500 #, c-format msgid "Failed to execute child process \"%s\" (%s)" msgstr "Falló al ejecutar el proceso hijo «%s» (%s)" -#: ../glib/gspawn.c:1515 +#: ../glib/gspawn.c:1510 #, c-format msgid "Failed to redirect output or input of child process (%s)" msgstr "Falló al redirigir la salida o la entrada del proceso hijo (%s)" -#: ../glib/gspawn.c:1524 +#: ../glib/gspawn.c:1519 #, c-format msgid "Failed to fork child process (%s)" msgstr "Falló al bifurcar el proceso hijo (%s)" -#: ../glib/gspawn.c:1532 +#: ../glib/gspawn.c:1527 #, c-format msgid "Unknown error executing child process \"%s\"" msgstr "Falló desconocido al ejecutar el proceso hijo «%s»" -#: ../glib/gspawn.c:1556 +#: ../glib/gspawn.c:1551 #, c-format msgid "Failed to read enough data from child pid pipe (%s)" msgstr "Falló al leer suficientes datos desde el conducto del pid hijo (%s)" @@ -4600,92 +4633,92 @@ msgstr "" "Falló inesperado en g_io_channel_win32_poll() al leer datos desde un proceso " "hijo" -#: ../glib/gutf8.c:780 +#: ../glib/gutf8.c:795 msgid "Failed to allocate memory" msgstr "Falló al obtener memoria" -#: ../glib/gutf8.c:912 +#: ../glib/gutf8.c:928 msgid "Character out of range for UTF-8" msgstr "El carácter se sale del rango para UTF-8" -#: ../glib/gutf8.c:1012 ../glib/gutf8.c:1021 ../glib/gutf8.c:1151 -#: ../glib/gutf8.c:1160 ../glib/gutf8.c:1299 ../glib/gutf8.c:1396 +#: ../glib/gutf8.c:1029 ../glib/gutf8.c:1038 ../glib/gutf8.c:1168 +#: ../glib/gutf8.c:1177 ../glib/gutf8.c:1316 ../glib/gutf8.c:1413 msgid "Invalid sequence in conversion input" msgstr "Secuencia no válida en la entrada de conversión" -#: ../glib/gutf8.c:1310 ../glib/gutf8.c:1407 +#: ../glib/gutf8.c:1327 ../glib/gutf8.c:1424 msgid "Character out of range for UTF-16" msgstr "El carácter se sale del rango para UTF-16" -#: ../glib/gutils.c:2116 ../glib/gutils.c:2143 ../glib/gutils.c:2249 +#: ../glib/gutils.c:2117 ../glib/gutils.c:2144 ../glib/gutils.c:2250 #, c-format msgid "%u byte" msgid_plural "%u bytes" msgstr[0] "%u byte" msgstr[1] "%u bytes" -#: ../glib/gutils.c:2122 +#: ../glib/gutils.c:2123 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" -#: ../glib/gutils.c:2124 +#: ../glib/gutils.c:2125 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" -#: ../glib/gutils.c:2127 +#: ../glib/gutils.c:2128 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" -#: ../glib/gutils.c:2130 +#: ../glib/gutils.c:2131 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" -#: ../glib/gutils.c:2133 +#: ../glib/gutils.c:2134 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" -#: ../glib/gutils.c:2136 +#: ../glib/gutils.c:2137 #, c-format msgid "%.1f EiB" msgstr "%.1f EiB" -#: ../glib/gutils.c:2149 +#: ../glib/gutils.c:2150 #, c-format msgid "%.1f kB" msgstr "%.1f kB" -#: ../glib/gutils.c:2152 ../glib/gutils.c:2267 +#: ../glib/gutils.c:2153 ../glib/gutils.c:2268 #, c-format msgid "%.1f MB" msgstr "%.1f MB" -#: ../glib/gutils.c:2155 ../glib/gutils.c:2272 +#: ../glib/gutils.c:2156 ../glib/gutils.c:2273 #, c-format msgid "%.1f GB" msgstr "%.1f GB" -#: ../glib/gutils.c:2157 ../glib/gutils.c:2277 +#: ../glib/gutils.c:2158 ../glib/gutils.c:2278 #, c-format msgid "%.1f TB" msgstr "%.1f TB" -#: ../glib/gutils.c:2160 ../glib/gutils.c:2282 +#: ../glib/gutils.c:2161 ../glib/gutils.c:2283 #, c-format msgid "%.1f PB" msgstr "%.1f PB" -#: ../glib/gutils.c:2163 ../glib/gutils.c:2287 +#: ../glib/gutils.c:2164 ../glib/gutils.c:2288 #, c-format msgid "%.1f EB" msgstr "%.1f EB" #. Translators: the %s in "%s bytes" will always be replaced by a number. -#: ../glib/gutils.c:2200 +#: ../glib/gutils.c:2201 #, c-format msgid "%s byte" msgid_plural "%s bytes" @@ -4697,11 +4730,28 @@ msgstr[1] "%s bytes" #. * compatibility. Users will not see this string unless a program is using this deprecated function. #. * Please translate as literally as possible. #. -#: ../glib/gutils.c:2262 +#: ../glib/gutils.c:2263 #, c-format msgid "%.1f KB" msgstr "%.1f KB" +#~ msgid "Can't find application" +#~ msgstr "No se puede encontrar la aplicación" + +#~ msgid "Error launching application: %s" +#~ msgstr "Error al analizar la aplicación: %s" + +#~ msgid "association changes not supported on win32" +#~ msgstr "los cambios de asociación no están soportados en win32" + +#~ msgid "Association creation not supported on win32" +#~ msgstr "La creación de asociación no está soportada en win32" + +#~ msgid "Unable to find default local directory monitor type" +#~ msgstr "" +#~ "No se pudo encontrar el tipo de monitorización de la carpeta local " +#~ "predeterminada" + #~ msgid "URIs not supported" #~ msgstr "No se soportan URI" diff --git a/po/et.gmo b/po/et.gmo new file mode 100644 index 0000000000000000000000000000000000000000..15980967f16b946d3b4f88953b60233d2ee6f336 GIT binary patch literal 51517 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 C>S}iY literal 0 HcmV?d00001 diff --git a/po/eu.gmo b/po/eu.gmo new file mode 100644 index 0000000000000000000000000000000000000000..18848c2c9eea37eb95eb29a14fcf51ed159d28b3 GIT binary patch literal 100996 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 YoE{^ord1v=2~)sWw?hU;r6QaE0qkjvh5!Hn literal 0 HcmV?d00001 diff --git a/po/eu.po b/po/eu.po index d17ac54..123e136 100644 --- a/po/eu.po +++ b/po/eu.po @@ -1,48 +1,47 @@ # Basque translation of glib. # Copyright (C) 2004-2011 Free Software Foundation, Inc. # +# # Joseba Bidaurrazaga van Dierdonck , 2001. # Hizkuntza Politikarako Sailburuordetza , 2004. # Iñaki Larrañaga Murgoitio , 2004, 2005, 2006, 2007, 2008, 2009, 2010. # Iñaki Larrañaga Murgoitio , 2011, 2012, 2013, 2014, 2015. -# msgid "" msgstr "" "Project-Id-Version: glib master\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" -"product=glib&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2015-01-17 17:12+0100\n" -"PO-Revision-Date: 2015-01-17 17:14+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-10-14 11:49+0200\n" +"PO-Revision-Date: 2015-10-09 20:32+0200\n" "Last-Translator: Iñaki Larrañaga Murgoitio \n" -"Language-Team: Basque \n" +"Language-Team: Basque >\n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 1.4\n" +"X-Generator: Lokalize 1.5\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../gio/gapplication.c:520 +#: ../gio/gapplication.c:531 msgid "Enter GApplication service mode (use from D-Bus service files)" msgstr "" "Sartu GApplication zerbitzu moduan (erabili D-Bus zerbitzuaren " "fitxategietatik)" -#: ../gio/gapplication.c:525 +#: ../gio/gapplication.c:536 msgid "GApplication options" msgstr "GApplication-en aukerak" -#: ../gio/gapplication.c:525 +#: ../gio/gapplication.c:536 msgid "Show GApplication options" msgstr "Erakutsi GApplication-en aukerak" #: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46 -#: ../gio/gresource-tool.c:485 ../gio/gsettings-tool.c:521 +#: ../gio/gresource-tool.c:488 ../gio/gsettings-tool.c:512 msgid "Print help" msgstr "Erakutsi laguntza" -#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:486 -#: ../gio/gresource-tool.c:554 +#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:489 +#: ../gio/gresource-tool.c:557 msgid "[COMMAND]" msgstr "[KOMANDOA]" @@ -50,7 +49,7 @@ msgstr "[KOMANDOA]" msgid "Print version" msgstr "Erakutsi bertsioa" -#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:527 +#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:518 msgid "Print version information and exit" msgstr "Erakutsi bertsioaren informazioa eta irten" @@ -115,14 +114,14 @@ msgstr "" "Aplikazioaren identifikatzailea D-bus formatuan (adib: org.example.viewer)" #: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589 -#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:492 -#: ../gio/gresource-tool.c:558 +#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:495 +#: ../gio/gresource-tool.c:561 msgid "FILE" msgstr "FITXATEGIA" #: ../gio/gapplication-tool.c:72 -msgid "Optional relative or relative filenames, or URIs to open" -msgstr "Fitxategi-izenak (agian erlatiboak), edo URIak irekitzeko" +msgid "Optional relative or absolute filenames, or URIs to open" +msgstr "Aukerako fitxategi-izen erlatibo edo absolutuak, edo URIak irekitzeko" #: ../gio/gapplication-tool.c:73 msgid "ACTION" @@ -140,8 +139,8 @@ msgstr "PARAMETROA" msgid "Optional parameter to the action invocation, in GVariant format" msgstr "Ekintza deitzean emango zaion parametroa, GVariant formatuan" -#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:523 -#: ../gio/gsettings-tool.c:607 +#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526 +#: ../gio/gsettings-tool.c:598 #, c-format msgid "" "Unknown command %s\n" @@ -154,8 +153,8 @@ msgstr "" msgid "Usage:\n" msgstr "Erabilera:\n" -#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:548 -#: ../gio/gsettings-tool.c:641 +#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551 +#: ../gio/gsettings-tool.c:632 msgid "Arguments:\n" msgstr "Argumentuak:\n" @@ -259,7 +258,7 @@ msgstr "" #: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498 #: ../gio/ginputstream.c:176 ../gio/ginputstream.c:376 #: ../gio/ginputstream.c:614 ../gio/ginputstream.c:1013 -#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:830 +#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:831 #: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206 #, c-format msgid "Too large count value passed to %s" @@ -275,7 +274,7 @@ msgid "Cannot truncate GBufferedInputStream" msgstr "Ezin da GBufferedInputStream trunkatu" #: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1202 -#: ../gio/giostream.c:277 ../gio/goutputstream.c:1654 +#: ../gio/giostream.c:278 ../gio/goutputstream.c:1655 msgid "Stream is already closed" msgstr "Korrontea jadanik itxita dago" @@ -283,10 +282,9 @@ msgstr "Korrontea jadanik itxita dago" msgid "Truncate not supported on base stream" msgstr "Trunkatzea ez da onartzen oinarrizko korrontean" -#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1896 -#: ../gio/gdbusconnection.c:1989 ../gio/gdbusprivate.c:1417 -#: ../gio/glocalfile.c:2181 ../gio/gsimpleasyncresult.c:830 -#: ../gio/gsimpleasyncresult.c:856 +#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1847 +#: ../gio/gdbusprivate.c:1375 ../gio/glocalfile.c:2216 +#: ../gio/gsimpleasyncresult.c:870 ../gio/gsimpleasyncresult.c:896 #, c-format msgid "Operation was cancelled" msgstr "Eragiketa bertan behera utzi da" @@ -305,23 +303,23 @@ msgstr "Ez dago nahikoa lekurik helburuan" #: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848 #: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 -#: ../glib/gconvert.c:845 ../glib/giochannel.c:1557 ../glib/giochannel.c:1599 -#: ../glib/giochannel.c:2443 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 +#: ../glib/gconvert.c:845 ../glib/giochannel.c:1556 ../glib/giochannel.c:1598 +#: ../glib/giochannel.c:2442 ../glib/gutf8.c:852 ../glib/gutf8.c:1304 msgid "Invalid byte sequence in conversion input" msgstr "Byteen sekuentzia baliogabea bihurketa-sarreran" #: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 -#: ../glib/gconvert.c:770 ../glib/giochannel.c:1564 ../glib/giochannel.c:2455 +#: ../glib/gconvert.c:770 ../glib/giochannel.c:1563 ../glib/giochannel.c:2454 #, c-format msgid "Error during conversion: %s" msgstr "Errorea bihurtzean: %s" -#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:985 +#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1078 msgid "Cancellable initialization not supported" msgstr "Hasieratzea bertan behera uztea ez dago onartuta" #: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321 -#: ../glib/giochannel.c:1385 +#: ../glib/giochannel.c:1384 #, c-format msgid "Conversion from character set '%s' to '%s' is not supported" msgstr "'%s' karaktere-multzoa '%s' bihurtzea ez da onartzen" @@ -340,7 +338,7 @@ msgstr "%s mota" msgid "Unknown type" msgstr "Mota ezezaguna" -#: ../gio/gcontenttype-win32.c:161 +#: ../gio/gcontenttype-win32.c:162 #, c-format msgid "%s filetype" msgstr "%s fitxategi mota" @@ -365,13 +363,13 @@ msgstr "Kredentzialak usurpatzea ezinezkoa da S.E. honetan" msgid "Unexpected early end-of-stream" msgstr "Ustekabeko korronte-amaiera azkarregia" -#: ../gio/gdbusaddress.c:148 ../gio/gdbusaddress.c:236 -#: ../gio/gdbusaddress.c:317 +#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241 +#: ../gio/gdbusaddress.c:322 #, c-format msgid "Unsupported key '%s' in address entry '%s'" msgstr "Onartu gabeko '%s' gakoa helbidearen '%s' sarreran" -#: ../gio/gdbusaddress.c:175 +#: ../gio/gdbusaddress.c:180 #, c-format msgid "" "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" @@ -379,29 +377,29 @@ msgstr "" "'%s' helbidea baliogabea da (gako hauetariko bat behar du: 'path' (bide-" "izena), 'tmpdir' (aldi baterako direktorioa) edo 'abstract' (abstraktua))" -#: ../gio/gdbusaddress.c:188 +#: ../gio/gdbusaddress.c:193 #, c-format msgid "Meaningless key/value pair combination in address entry '%s'" msgstr "" "Zentzurik gabeko gakoa/balioa bikotearen konbinazioa '%s' helbidearen " "sarreran" -#: ../gio/gdbusaddress.c:251 ../gio/gdbusaddress.c:332 +#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 #, c-format msgid "Error in address '%s' - the port attribute is malformed" msgstr "Errorea '%s' helbidean - atakaren atributua gaizki osatuta dago" -#: ../gio/gdbusaddress.c:262 ../gio/gdbusaddress.c:343 +#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348 #, c-format msgid "Error in address '%s' - the family attribute is malformed" msgstr "Errorea '%s' helbidean - familiaren atributua gaizki osatuta dago" -#: ../gio/gdbusaddress.c:452 +#: ../gio/gdbusaddress.c:457 #, c-format msgid "Address element '%s' does not contain a colon (:)" msgstr "'%s' helbidearen elementuak ez dauka bi punturik (:)" -#: ../gio/gdbusaddress.c:473 +#: ../gio/gdbusaddress.c:478 #, c-format msgid "" "Key/Value pair %d, '%s', in address element '%s' does not contain an equal " @@ -410,7 +408,7 @@ msgstr "" "%d. gakoa/balioa bikoteak, '%s', '%s' helbidearen elementuan, ez dauka " "berdina (=) ikurrik" -#: ../gio/gdbusaddress.c:487 +#: ../gio/gdbusaddress.c:492 #, c-format msgid "" "Error unescaping key or value in Key/Value pair %d, '%s', in address element " @@ -419,7 +417,7 @@ msgstr "" "Errorea gakoa edo balioa iheseko modutik kentzean %d. gakoa/balioa bikotean, " "'%s', '%s' helbidearen elementuan" -#: ../gio/gdbusaddress.c:565 +#: ../gio/gdbusaddress.c:570 #, c-format msgid "" "Error in address '%s' - the unix transport requires exactly one of the keys " @@ -428,93 +426,93 @@ msgstr "" "Errorea '%s' helbidean - unix-eko garraioak 'path' edo 'abstract' " "gakoetariko bat behar du hain zuzen." -#: ../gio/gdbusaddress.c:601 +#: ../gio/gdbusaddress.c:606 #, c-format msgid "Error in address '%s' - the host attribute is missing or malformed" msgstr "" "Errorea '%s' helbidean - ostalariaren atributua falta da edo gaizki osatuta " "dago" -#: ../gio/gdbusaddress.c:615 +#: ../gio/gdbusaddress.c:620 #, c-format msgid "Error in address '%s' - the port attribute is missing or malformed" msgstr "" "Errorea '%s' helbidean - atakaren atributua falta da edo gaizki osatuta dago" -#: ../gio/gdbusaddress.c:629 +#: ../gio/gdbusaddress.c:634 #, c-format msgid "Error in address '%s' - the noncefile attribute is missing or malformed" msgstr "" "Errorea '%s' helbidean - izendapenaren fitxategiaren atributua falta da edo " "gaizki osatuta dago" -#: ../gio/gdbusaddress.c:650 +#: ../gio/gdbusaddress.c:655 msgid "Error auto-launching: " msgstr "Errorea automatikoki abiaraztean: " -#: ../gio/gdbusaddress.c:658 +#: ../gio/gdbusaddress.c:663 #, c-format msgid "Unknown or unsupported transport '%s' for address '%s'" msgstr "'%2$s' helbidearen '%1$s' garraioa ezezaguna edo onartu gabea" -#: ../gio/gdbusaddress.c:694 +#: ../gio/gdbusaddress.c:699 #, c-format msgid "Error opening nonce file '%s': %s" msgstr "Errorea '%s' izendapeneko fitxategia irekitzean: %s" -#: ../gio/gdbusaddress.c:712 +#: ../gio/gdbusaddress.c:717 #, c-format msgid "Error reading from nonce file '%s': %s" msgstr "Errorea '%s' izendapeneko fitxategitik irakurtzean: %s" -#: ../gio/gdbusaddress.c:721 +#: ../gio/gdbusaddress.c:726 #, c-format msgid "Error reading from nonce file '%s', expected 16 bytes, got %d" msgstr "" "Errorea '%s' izendapeneko fitxategitik irakurtzean: 16 byte espero ziren, " "baina %d lortu dira" -#: ../gio/gdbusaddress.c:739 +#: ../gio/gdbusaddress.c:744 #, c-format msgid "Error writing contents of nonce file '%s' to stream:" msgstr "Errorea '%s' izendapeneko fitxategiko edukia korrontean idaztean:" -#: ../gio/gdbusaddress.c:958 +#: ../gio/gdbusaddress.c:950 msgid "The given address is empty" msgstr "Emandako helbidea hutsik dago" -#: ../gio/gdbusaddress.c:1028 +#: ../gio/gdbusaddress.c:1063 #, c-format msgid "Cannot spawn a message bus when setuid" msgstr "Ezin da mezuaren deia abiarazi 'setuid' duenean" -#: ../gio/gdbusaddress.c:1035 +#: ../gio/gdbusaddress.c:1070 msgid "Cannot spawn a message bus without a machine-id: " msgstr "Ezin da mezuaren deia abiarazi makinaren IDrik gabe: " -#: ../gio/gdbusaddress.c:1077 +#: ../gio/gdbusaddress.c:1112 #, c-format msgid "Error spawning command line '%s': " msgstr "Errorea '%s' komando-lerroa abiaraztean: " -#: ../gio/gdbusaddress.c:1294 +#: ../gio/gdbusaddress.c:1329 #, c-format msgid "(Type any character to close this window)\n" msgstr "(Sakatu edozer tekla leihoa ixteko)\n" -#: ../gio/gdbusaddress.c:1425 +#: ../gio/gdbusaddress.c:1460 #, c-format msgid "Session dbus not running, and autolaunch failed" msgstr "" "Saioaren dbus ez da exekutatzen ari, eta abiarazte automatikoak huts egin du" -#: ../gio/gdbusaddress.c:1446 +#: ../gio/gdbusaddress.c:1471 #, c-format msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "" "Ezin da saioaren bus-eko helbidea zehaztu (ez dago S.E. honetan garatuta)" -#: ../gio/gdbusaddress.c:1546 ../gio/gdbusconnection.c:6931 +#: ../gio/gdbusaddress.c:1606 ../gio/gdbusconnection.c:7128 #, c-format msgid "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " @@ -523,7 +521,7 @@ msgstr "" "Ezin da bus-aren helbidea zehaztua inguruneko DBUS_STARTER_BUS_TYPE " "aldagaitik. '%s' balio ezezaguna" -#: ../gio/gdbusaddress.c:1555 ../gio/gdbusconnection.c:6940 +#: ../gio/gdbusaddress.c:1615 ../gio/gdbusconnection.c:7137 msgid "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" @@ -531,7 +529,7 @@ msgstr "" "Ezin da bus-aren helbidea zehaztua, inguruneko DBUS_STARTER_BUS_TYPE " "aldagaia ezarri gabe dagoelako" -#: ../gio/gdbusaddress.c:1565 +#: ../gio/gdbusaddress.c:1625 #, c-format msgid "Unknown bus type %d" msgstr "%d bus mota ezezaguna" @@ -637,21 +635,21 @@ msgstr "Errorea '%s' gako sorta idazteko irekitzean: " msgid "(Additionally, releasing the lock for '%s' also failed: %s) " msgstr "(Gainera, '%s'(r)en blokeoa askatzeak ere huts egin du: %s) " -#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2455 +#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2373 msgid "The connection is closed" msgstr "Konexioa itxi egin da" -#: ../gio/gdbusconnection.c:1942 +#: ../gio/gdbusconnection.c:1877 msgid "Timeout was reached" msgstr "Denbora-mugara iritsi da" -#: ../gio/gdbusconnection.c:2577 +#: ../gio/gdbusconnection.c:2495 msgid "" "Unsupported flags encountered when constructing a client-side connection" msgstr "" "Onartu gabeko banderak aurkitu dira bezeroaren aldeko konexioa eraikitzean" -#: ../gio/gdbusconnection.c:4157 ../gio/gdbusconnection.c:4504 +#: ../gio/gdbusconnection.c:4105 ../gio/gdbusconnection.c:4452 #, c-format msgid "" "No such interface 'org.freedesktop.DBus.Properties' on object at path %s" @@ -659,68 +657,78 @@ msgstr "" "Ez dago 'org.freedesktop.DBus.Properties' bezalako interfazerik '%s' bide-" "izeneko objektuan" -#: ../gio/gdbusconnection.c:4299 +#: ../gio/gdbusconnection.c:4247 #, c-format msgid "No such property '%s'" msgstr "Ez dago '%s' bezalako propietaterik" -#: ../gio/gdbusconnection.c:4311 +#: ../gio/gdbusconnection.c:4259 #, c-format msgid "Property '%s' is not readable" msgstr "%s propietatea ez da irakurgarria" -#: ../gio/gdbusconnection.c:4322 +#: ../gio/gdbusconnection.c:4270 #, c-format msgid "Property '%s' is not writable" msgstr "%s propietatea ez da idazgarria" -#: ../gio/gdbusconnection.c:4342 +#: ../gio/gdbusconnection.c:4290 #, c-format msgid "Error setting property '%s': Expected type '%s' but got '%s'" msgstr "" "Errorea '%s' propietatea ezartzean: '%s' mota espero zen, baina '%s' lortu da" -#: ../gio/gdbusconnection.c:4447 ../gio/gdbusconnection.c:6371 +#: ../gio/gdbusconnection.c:4395 ../gio/gdbusconnection.c:6568 #, c-format msgid "No such interface '%s'" msgstr "Ez dago '%s' bezalako interfazerik" -#: ../gio/gdbusconnection.c:4655 +#: ../gio/gdbusconnection.c:4603 msgid "No such interface" msgstr "Ez dago halako interfazerik" -#: ../gio/gdbusconnection.c:4873 ../gio/gdbusconnection.c:6880 +#: ../gio/gdbusconnection.c:4821 ../gio/gdbusconnection.c:7077 #, c-format msgid "No such interface '%s' on object at path %s" msgstr "Ez dago '%s' bezalako interfazerik '%s' bide-izeneko objektuan" -#: ../gio/gdbusconnection.c:4971 +#: ../gio/gdbusconnection.c:4919 #, c-format msgid "No such method '%s'" msgstr "Ez dago '%s' bezalako metodorik" -#: ../gio/gdbusconnection.c:5002 +#: ../gio/gdbusconnection.c:4950 #, c-format msgid "Type of message, '%s', does not match expected type '%s'" msgstr "'%s' mezu mota ez dator bat espero zen '%s' motarekin" -#: ../gio/gdbusconnection.c:5200 +#: ../gio/gdbusconnection.c:5148 #, c-format msgid "An object is already exported for the interface %s at %s" msgstr "Jadanik objektu bat esportatuta dago %s interfazearentzako %s(e)n" -#: ../gio/gdbusconnection.c:5399 +#: ../gio/gdbusconnection.c:5374 +#, c-format +msgid "Unable to retrieve property %s.%s" +msgstr "Ezin da %s.%s propietatea eskuratu" + +#: ../gio/gdbusconnection.c:5430 +#, c-format +msgid "Unable to set property %s.%s" +msgstr "Ezin da %s.%s propietatea ezarri" + +#: ../gio/gdbusconnection.c:5606 #, c-format msgid "Method '%s' returned type '%s', but expected '%s'" msgstr "'%s' metodoak '%s' mota itzuli du, baina '%s' espero zen" -#: ../gio/gdbusconnection.c:6482 +#: ../gio/gdbusconnection.c:6679 #, c-format msgid "Method '%s' on interface '%s' with signature '%s' does not exist" msgstr "" "'%2$s' interfazeko '%1$s' metodoa '%3$s' sinadurarekin ez da existitzen" -#: ../gio/gdbusconnection.c:6603 +#: ../gio/gdbusconnection.c:6800 #, c-format msgid "A subtree is already exported for %s" msgstr "Azpizuhaitza jadanik %s(e)ra esportatuta" @@ -914,35 +922,35 @@ msgid "Message body is empty but signature in the header field is '(%s)'" msgstr "" "Mezuaren gorputza hutsik dago, baina goiburuaren eremuko sinadura '(%s)' da" -#: ../gio/gdbusmessage.c:3280 +#: ../gio/gdbusmessage.c:3283 #, c-format msgid "Error return with body of type '%s'" msgstr "Errorearen itzulera '%s' motako gorputzarekin " -#: ../gio/gdbusmessage.c:3288 +#: ../gio/gdbusmessage.c:3291 msgid "Error return with empty body" msgstr "Errorearen itzulera gorputz hutsarekin" -#: ../gio/gdbusprivate.c:2067 +#: ../gio/gdbusprivate.c:2036 #, c-format msgid "Unable to get Hardware profile: %s" msgstr "Ezin da hardwarearen profila eskuratu: %s" -#: ../gio/gdbusprivate.c:2112 +#: ../gio/gdbusprivate.c:2081 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: " msgstr "Ezin da /var/lib/dbus/machine-id edo /etc/machine-id kargatu: " -#: ../gio/gdbusproxy.c:1630 +#: ../gio/gdbusproxy.c:1610 #, c-format msgid "Error calling StartServiceByName for %s: " msgstr "Errorea %s(r)en StartServiceByName deia egitean: " -#: ../gio/gdbusproxy.c:1653 +#: ../gio/gdbusproxy.c:1633 #, c-format msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" msgstr "Ustekabeko %d erantzuna StartServiceByName(\"%s\") metodotik" -#: ../gio/gdbusproxy.c:2754 ../gio/gdbusproxy.c:2891 +#: ../gio/gdbusproxy.c:2708 ../gio/gdbusproxy.c:2842 msgid "" "Cannot invoke method; proxy is for a well-known name without an owner and " "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag" @@ -995,56 +1003,61 @@ msgstr "" "Erabili\"%s KOMANDOA --help\" komando bakoitzari dagokion laguntza " "lortzeko.\n" -#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:220 ../gio/gdbus-tool.c:292 -#: ../gio/gdbus-tool.c:316 ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1031 -#: ../gio/gdbus-tool.c:1465 +#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:226 ../gio/gdbus-tool.c:298 +#: ../gio/gdbus-tool.c:322 ../gio/gdbus-tool.c:711 ../gio/gdbus-tool.c:1043 +#: ../gio/gdbus-tool.c:1477 #, c-format msgid "Error: %s\n" msgstr "Errorea: %s\n" -#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:233 ../gio/gdbus-tool.c:1481 +#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493 #, c-format msgid "Error parsing introspection XML: %s\n" msgstr "Errorea introspekzioko XMLa analizatzean: %s\n" -#: ../gio/gdbus-tool.c:350 +#: ../gio/gdbus-tool.c:208 +#, c-format +msgid "Error: %s is not a valid name\n" +msgstr "Errorea: '%s' ez da baliozko izena\n" + +#: ../gio/gdbus-tool.c:356 msgid "Connect to the system bus" msgstr "Konektatu sistemako bus-arekin" -#: ../gio/gdbus-tool.c:351 +#: ../gio/gdbus-tool.c:357 msgid "Connect to the session bus" msgstr "Konektatu saioko bus-arekin" -#: ../gio/gdbus-tool.c:352 +#: ../gio/gdbus-tool.c:358 msgid "Connect to given D-Bus address" msgstr "Konektatu emandako D-Bus helbidera" -#: ../gio/gdbus-tool.c:362 +#: ../gio/gdbus-tool.c:368 msgid "Connection Endpoint Options:" msgstr "Konexioaren amaierako puntuaren aukerak:" -#: ../gio/gdbus-tool.c:363 +#: ../gio/gdbus-tool.c:369 msgid "Options specifying the connection endpoint" msgstr "Aukerak konexioaren amaierako puntua zehaztuz" -#: ../gio/gdbus-tool.c:385 +#: ../gio/gdbus-tool.c:391 #, c-format msgid "No connection endpoint specified" msgstr "Ez da konexioaren amaierako punturik zehaztu" -#: ../gio/gdbus-tool.c:395 +#: ../gio/gdbus-tool.c:401 #, c-format msgid "Multiple connection endpoints specified" msgstr "Konexioaren hainbat amaierako puntu zehaztu dira" -#: ../gio/gdbus-tool.c:465 +#: ../gio/gdbus-tool.c:471 #, c-format msgid "" "Warning: According to introspection data, interface '%s' does not exist\n" msgstr "" "Abisua: introspekzioko datuen arabera, '%s' interfazea ez da existitzen\n" -#: ../gio/gdbus-tool.c:474 +#: ../gio/gdbus-tool.c:480 #, c-format msgid "" "Warning: According to introspection data, method '%s' does not exist on " @@ -1053,190 +1066,194 @@ msgstr "" "Abisua: introspekzioko datuen arabera, '%s' metodoa ez da existitzen '%s' " "interfazean\n" -#: ../gio/gdbus-tool.c:536 +#: ../gio/gdbus-tool.c:542 msgid "Optional destination for signal (unique name)" msgstr "Seinalearen aukerazko helburua (izen esklusiboa)" -#: ../gio/gdbus-tool.c:537 +#: ../gio/gdbus-tool.c:543 msgid "Object path to emit signal on" msgstr "Objektuaren bide-izena bere gainera seinalea igortzeko" -#: ../gio/gdbus-tool.c:538 +#: ../gio/gdbus-tool.c:544 msgid "Signal and interface name" msgstr "Seinale eta interfazearen izena" -#: ../gio/gdbus-tool.c:570 +#: ../gio/gdbus-tool.c:576 msgid "Emit a signal." msgstr "Igorri seinale bat." -#: ../gio/gdbus-tool.c:604 ../gio/gdbus-tool.c:836 ../gio/gdbus-tool.c:1571 -#: ../gio/gdbus-tool.c:1799 +#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583 +#: ../gio/gdbus-tool.c:1818 #, c-format msgid "Error connecting: %s\n" msgstr "Errorea konektatzean: %s\n" -#: ../gio/gdbus-tool.c:616 +#: ../gio/gdbus-tool.c:622 #, c-format msgid "Error: object path not specified.\n" msgstr "Errorea: objektuaren bide-izena ez da zehaztu.\n" -#: ../gio/gdbus-tool.c:621 ../gio/gdbus-tool.c:897 ../gio/gdbus-tool.c:1629 -#: ../gio/gdbus-tool.c:1858 +#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648 +#: ../gio/gdbus-tool.c:1884 #, c-format msgid "Error: %s is not a valid object path\n" msgstr "Errorea: '%s' ez da objektuaren baliozko bide-izena\n" -#: ../gio/gdbus-tool.c:627 +#: ../gio/gdbus-tool.c:633 #, c-format msgid "Error: signal not specified.\n" msgstr "Errorea: seinalea ez da zehaztu.\n" -#: ../gio/gdbus-tool.c:634 +#: ../gio/gdbus-tool.c:640 #, c-format msgid "Error: signal must be the fully-qualified name.\n" msgstr "Errorea: seinaleak erabat kualifikatutako izena eduki behar du.\n" -#: ../gio/gdbus-tool.c:642 +#: ../gio/gdbus-tool.c:648 #, c-format msgid "Error: %s is not a valid interface name\n" msgstr "Errorea: '%s' ez da interfazearen baliozko izena\n" -#: ../gio/gdbus-tool.c:648 +#: ../gio/gdbus-tool.c:654 #, c-format msgid "Error: %s is not a valid member name\n" msgstr "Errorea: '%s' ez da kidearen baliozko izena\n" -#: ../gio/gdbus-tool.c:654 +#: ../gio/gdbus-tool.c:660 #, c-format msgid "Error: %s is not a valid unique bus name.\n" msgstr "Errorea: '%s' ez da bus-aren baliozko izen esklusiboa\n" #. Use the original non-"parse-me-harder" error -#: ../gio/gdbus-tool.c:681 ../gio/gdbus-tool.c:999 +#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011 #, c-format msgid "Error parsing parameter %d: %s\n" msgstr "Errorea %d parametroa analizatzean: %s\n" -#: ../gio/gdbus-tool.c:712 +#: ../gio/gdbus-tool.c:718 #, c-format msgid "Error flushing connection: %s\n" msgstr "Errorea konexioa garbitzean: %s\n" -#: ../gio/gdbus-tool.c:739 +#: ../gio/gdbus-tool.c:745 msgid "Destination name to invoke method on" msgstr "Helburuaren izena metodoari deitzeko" -#: ../gio/gdbus-tool.c:740 +#: ../gio/gdbus-tool.c:746 msgid "Object path to invoke method on" msgstr "Objektuaren bide-izena metodoari deitzeko" -#: ../gio/gdbus-tool.c:741 +#: ../gio/gdbus-tool.c:747 msgid "Method and interface name" msgstr "Metodo eta interfazearen izena" -#: ../gio/gdbus-tool.c:742 +#: ../gio/gdbus-tool.c:748 msgid "Timeout in seconds" msgstr "Denbora-muga (segundotan)" -#: ../gio/gdbus-tool.c:781 +#: ../gio/gdbus-tool.c:787 msgid "Invoke a method on a remote object." msgstr "Deitu metodo bati urruneko objektu batean." -#: ../gio/gdbus-tool.c:856 ../gio/gdbus-tool.c:1590 ../gio/gdbus-tool.c:1818 +#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837 #, c-format msgid "Error: Destination is not specified\n" msgstr "Errorea: helburua ez dago zehaztuta\n" -#: ../gio/gdbus-tool.c:877 ../gio/gdbus-tool.c:1609 +#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849 +#, c-format +msgid "Error: %s is not a valid bus name\n" +msgstr "Errorea: '%s' ez da busaren baliozko izena\n" + +#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628 #, c-format msgid "Error: Object path is not specified\n" msgstr "Errorea: objektuaren bide-izena ez dago zehaztuta\n" -#: ../gio/gdbus-tool.c:912 +#: ../gio/gdbus-tool.c:924 #, c-format msgid "Error: Method name is not specified\n" msgstr "Errorea: metodoaren izena ez dago zehaztuta\n" -#: ../gio/gdbus-tool.c:923 +#: ../gio/gdbus-tool.c:935 #, c-format msgid "Error: Method name '%s' is invalid\n" msgstr "Errorea: '%s' metodoaren izena baliogabea da\n" -#: ../gio/gdbus-tool.c:991 +#: ../gio/gdbus-tool.c:1003 #, c-format msgid "Error parsing parameter %d of type '%s': %s\n" msgstr "Errorea '%2$s' motako %1$d parametroa analizatzean: %3$s\n" -#: ../gio/gdbus-tool.c:1428 +#: ../gio/gdbus-tool.c:1440 msgid "Destination name to introspect" msgstr "Helburuko izena introspekzioa egiteko" -#: ../gio/gdbus-tool.c:1429 +#: ../gio/gdbus-tool.c:1441 msgid "Object path to introspect" msgstr "Objektuaren bide-izena introspekzioa egiteko" -#: ../gio/gdbus-tool.c:1430 +#: ../gio/gdbus-tool.c:1442 msgid "Print XML" msgstr "Inprimatu XML" -#: ../gio/gdbus-tool.c:1431 +#: ../gio/gdbus-tool.c:1443 msgid "Introspect children" msgstr "Aztertu umeen barnean" -#: ../gio/gdbus-tool.c:1432 +#: ../gio/gdbus-tool.c:1444 msgid "Only print properties" msgstr "Soilik inprimatzeko propietateak" -#: ../gio/gdbus-tool.c:1523 +#: ../gio/gdbus-tool.c:1535 msgid "Introspect a remote object." msgstr "Urruneko objektu baten introspekzioa egin." -#: ../gio/gdbus-tool.c:1721 +#: ../gio/gdbus-tool.c:1740 msgid "Destination name to monitor" msgstr "Helburuko izena monitorizatzeko" -#: ../gio/gdbus-tool.c:1722 +#: ../gio/gdbus-tool.c:1741 msgid "Object path to monitor" msgstr "Objektuaren bide-izena monitorizatzeko" -#: ../gio/gdbus-tool.c:1751 +#: ../gio/gdbus-tool.c:1770 msgid "Monitor a remote object." msgstr "Monitorizatu urruneko objektu bat." -#: ../gio/gdesktopappinfo.c:1999 ../gio/gdesktopappinfo.c:4523 -#: ../gio/gwin32appinfo.c:219 +#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4502 msgid "Unnamed" msgstr "Izengabea" -#: ../gio/gdesktopappinfo.c:2408 +#: ../gio/gdesktopappinfo.c:2402 msgid "Desktop file didn't specify Exec field" msgstr "Mahaigaineko fitxategiak ez du Exec eremua zehaztu" -#: ../gio/gdesktopappinfo.c:2693 +#: ../gio/gdesktopappinfo.c:2687 msgid "Unable to find terminal required for application" msgstr "Ezin izan da aplikazioak eskatzen duen terminala aurkitu" -#: ../gio/gdesktopappinfo.c:3114 +#: ../gio/gdesktopappinfo.c:3099 #, c-format msgid "Can't create user application configuration folder %s: %s" msgstr "" "Ezin da erabiltzailearen aplikazioaren %s konfigurazio-karpeta sortu: %s" -#: ../gio/gdesktopappinfo.c:3118 +#: ../gio/gdesktopappinfo.c:3103 #, c-format msgid "Can't create user MIME configuration folder %s: %s" msgstr "Ezin da erabiltzailearen MIMEren %s konfigurazio-karpeta sortu: %s" -#: ../gio/gdesktopappinfo.c:3358 ../gio/gdesktopappinfo.c:3382 +#: ../gio/gdesktopappinfo.c:3343 ../gio/gdesktopappinfo.c:3367 msgid "Application information lacks an identifier" msgstr "Aplikazioaren informazioari identifikatzaile bat falta zaio" -#: ../gio/gdesktopappinfo.c:3615 +#: ../gio/gdesktopappinfo.c:3600 #, c-format msgid "Can't create user desktop file %s" msgstr "Ezin da erabiltzailearen mahaigaineko %s fitxategia sortu" -#: ../gio/gdesktopappinfo.c:3749 +#: ../gio/gdesktopappinfo.c:3734 #, c-format msgid "Custom definition for %s" msgstr "%s(r)en definizio pertsonalizatua" @@ -1264,8 +1281,8 @@ msgstr "gailuak ez dauka 'abiatu' inplementatuta" msgid "drive doesn't implement stop" msgstr "gailuak ez dauka 'gelditu' inplementatuta" -#: ../gio/gdummytlsbackend.c:189 ../gio/gdummytlsbackend.c:311 -#: ../gio/gdummytlsbackend.c:401 +#: ../gio/gdummytlsbackend.c:188 ../gio/gdummytlsbackend.c:310 +#: ../gio/gdummytlsbackend.c:400 msgid "TLS support is not available" msgstr "TLS euskarria ez dago erabilgarri" @@ -1293,14 +1310,14 @@ msgstr "Gaizki osatutako token kopurua (%d) GEmblemedIcon kodeketan" msgid "Expected a GEmblem for GEmblemedIcon" msgstr "GEmblen espero zen GEmblemedIcon-entzako" -#: ../gio/gfile.c:962 ../gio/gfile.c:1200 ../gio/gfile.c:1338 -#: ../gio/gfile.c:1576 ../gio/gfile.c:1631 ../gio/gfile.c:1689 -#: ../gio/gfile.c:1773 ../gio/gfile.c:1830 ../gio/gfile.c:1894 -#: ../gio/gfile.c:1949 ../gio/gfile.c:3597 ../gio/gfile.c:3652 -#: ../gio/gfile.c:3887 ../gio/gfile.c:3929 ../gio/gfile.c:4392 -#: ../gio/gfile.c:4803 ../gio/gfile.c:4888 ../gio/gfile.c:4978 -#: ../gio/gfile.c:5075 ../gio/gfile.c:5162 ../gio/gfile.c:5263 -#: ../gio/gfile.c:7782 ../gio/gfile.c:7872 ../gio/gfile.c:7956 +#: ../gio/gfile.c:969 ../gio/gfile.c:1207 ../gio/gfile.c:1345 +#: ../gio/gfile.c:1583 ../gio/gfile.c:1638 ../gio/gfile.c:1696 +#: ../gio/gfile.c:1780 ../gio/gfile.c:1837 ../gio/gfile.c:1901 +#: ../gio/gfile.c:1956 ../gio/gfile.c:3604 ../gio/gfile.c:3659 +#: ../gio/gfile.c:3894 ../gio/gfile.c:3936 ../gio/gfile.c:4404 +#: ../gio/gfile.c:4815 ../gio/gfile.c:4900 ../gio/gfile.c:4990 +#: ../gio/gfile.c:5087 ../gio/gfile.c:5174 ../gio/gfile.c:5275 +#: ../gio/gfile.c:7796 ../gio/gfile.c:7886 ../gio/gfile.c:7970 #: ../gio/win32/gwinhttpfile.c:437 msgid "Operation not supported" msgstr "Eragiketa ez dago onartuta" @@ -1315,70 +1332,70 @@ msgstr "Eragiketa ez dago onartuta" #. Translators: This is an error message when trying to find #. * the enclosing (user visible) mount of a file, but none #. * exists. -#: ../gio/gfile.c:1461 ../gio/glocalfile.c:1103 ../gio/glocalfile.c:1114 -#: ../gio/glocalfile.c:1127 +#: ../gio/gfile.c:1468 ../gio/glocalfile.c:1134 ../gio/glocalfile.c:1145 +#: ../gio/glocalfile.c:1158 msgid "Containing mount does not exist" msgstr "Ontziaren muntaia ez da existitzen" -#: ../gio/gfile.c:2508 ../gio/glocalfile.c:2337 +#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2372 msgid "Can't copy over directory" msgstr "Ezin da direktorioaren gainean kopiatu" -#: ../gio/gfile.c:2568 +#: ../gio/gfile.c:2575 msgid "Can't copy directory over directory" msgstr "Ezin da direktorioa kopiatu direktorio gainean" -#: ../gio/gfile.c:2576 ../gio/glocalfile.c:2346 +#: ../gio/gfile.c:2583 ../gio/glocalfile.c:2381 msgid "Target file exists" msgstr "Helburuko fitxategia existitzen da" -#: ../gio/gfile.c:2595 +#: ../gio/gfile.c:2602 msgid "Can't recursively copy directory" msgstr "Ezin da direktorioa errekurtsiboki kopiatu" -#: ../gio/gfile.c:2877 +#: ../gio/gfile.c:2884 msgid "Splice not supported" msgstr "Lotura ez da onartzen" -#: ../gio/gfile.c:2881 +#: ../gio/gfile.c:2888 #, c-format msgid "Error splicing file: %s" msgstr "Errorea fitxategia batzean: %s" -#: ../gio/gfile.c:3012 +#: ../gio/gfile.c:3019 msgid "Copy (reflink/clone) between mounts is not supported" msgstr "Muntaien artean kopiatzea (reflink/clone) ez dago onartuta" -#: ../gio/gfile.c:3016 +#: ../gio/gfile.c:3023 msgid "Copy (reflink/clone) is not supported or invalid" msgstr "Kopiatzea (reflink/clone) ez dago onartuta edo baliogabea da" -#: ../gio/gfile.c:3021 +#: ../gio/gfile.c:3028 msgid "Copy (reflink/clone) is not supported or didn't work" msgstr "Kopiatzea (reflink/clone) ez dago onartuta edo ez du funtzionatzen" -#: ../gio/gfile.c:3084 +#: ../gio/gfile.c:3091 msgid "Can't copy special file" msgstr "Ezin da fitxategi berezia kopiatu" -#: ../gio/gfile.c:3877 +#: ../gio/gfile.c:3884 msgid "Invalid symlink value given" msgstr "Esteka sinbolikoaren baliogabeko balioa eman da" -#: ../gio/gfile.c:4038 +#: ../gio/gfile.c:4045 msgid "Trash not supported" msgstr "Zakarrontzira botatzea ez dago onartuta" -#: ../gio/gfile.c:4150 +#: ../gio/gfile.c:4157 #, c-format msgid "File names cannot contain '%c'" msgstr "Fitxategi-izenek ezin dute '%c' eduki" -#: ../gio/gfile.c:6574 ../gio/gvolume.c:363 +#: ../gio/gfile.c:6586 ../gio/gvolume.c:363 msgid "volume doesn't implement mount" msgstr "bolumenak ez dauka muntatzea inplementatuta" -#: ../gio/gfile.c:6683 +#: ../gio/gfile.c:6695 msgid "No application is registered as handling this file" msgstr "Ez da aplikaziorik erregistratu fitxategi hau kudeatzeko" @@ -1423,6 +1440,31 @@ msgstr "Trunkatzea ez da baimentzen sarrerako korrontean" msgid "Truncate not supported on stream" msgstr "Trunkatzea ez da onartzen korrontean" +#: ../gio/ghttpproxy.c:136 +msgid "Bad HTTP proxy reply" +msgstr "HTTP proxy-aren okerreko erantzuna" + +#: ../gio/ghttpproxy.c:152 +msgid "HTTP proxy connection not allowed" +msgstr "HTTP proxy-aren konexioa ez dago baimenduta" + +#: ../gio/ghttpproxy.c:157 +msgid "HTTP proxy authentication failed" +msgstr "HTTP proxy-aren autentifikazioak huts egin du" + +#: ../gio/ghttpproxy.c:160 +msgid "HTTP proxy authentication required" +msgstr "HTTP proxy-aren autentifikazioa behar da" + +#: ../gio/ghttpproxy.c:164 +#, c-format +msgid "HTTP proxy connection failed: %i" +msgstr "HTTP proxy-aren konexioak huts egin du: %i" + +#: ../gio/ghttpproxy.c:260 +msgid "HTTP proxy server closed connection unexpectedly." +msgstr "HTTP proxy zerbitzariak konexioa ustekabean itxi du." + #: ../gio/gicon.c:290 #, c-format msgid "Wrong number of tokens (%d)" @@ -1475,12 +1517,12 @@ msgstr "Helbideak aurrizkiaren luzera baino harago bitak ditu ezarrita" msgid "Could not parse '%s' as IP address mask" msgstr "Ezin izan da '%s' analizatu IP helbide-maskara gisa" -#: ../gio/ginetsocketaddress.c:196 ../gio/ginetsocketaddress.c:213 -#: ../gio/gunixsocketaddress.c:209 +#: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220 +#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:216 msgid "Not enough space for socket address" msgstr "Ez dago nahikoa lekurik socket helbideentzako" -#: ../gio/ginetsocketaddress.c:228 +#: ../gio/ginetsocketaddress.c:235 msgid "Unsupported socket address" msgstr "Onartu gabeko socket helbidea" @@ -1494,12 +1536,12 @@ msgstr "Sarrerako korronteak ez dauka irakurtzea inplementatuta" #. Translators: This is an error you get if there is #. * already an operation running against this stream when #. * you try to start one -#: ../gio/ginputstream.c:1212 ../gio/giostream.c:287 -#: ../gio/goutputstream.c:1664 +#: ../gio/ginputstream.c:1212 ../gio/giostream.c:288 +#: ../gio/goutputstream.c:1665 msgid "Stream has outstanding operation" msgstr "Korronteak eragiketa bat du lanean" -#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1453 +#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1491 #, c-format msgid "Element <%s> not allowed inside <%s>" msgstr "<%s> elementua ez da <%s>(r)en barruan onartzen" @@ -1544,7 +1586,7 @@ msgstr "Errorea '%s' fitxategia irakurtzean: %s" msgid "Error compressing file %s" msgstr "Errorea %s fitxategia konprimitzean" -#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1565 +#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1603 #, c-format msgid "text may not appear inside <%s>" msgstr "testua ezin da <%s>(r)en barruan egon" @@ -1561,8 +1603,8 @@ msgstr "" "Direktorioak, horietarik fitxategiak irakurtzeko (lehenetsia uneko " "direktorioa)" -#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:1994 -#: ../gio/glib-compile-schemas.c:2023 +#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2036 +#: ../gio/glib-compile-schemas.c:2065 msgid "DIRECTORY" msgstr "DIREKTORIOA" @@ -1614,16 +1656,16 @@ msgstr "" msgid "You should give exactly one file name\n" msgstr "Fitxategi baten izena bakarrik eman behar duzu\n" -#: ../gio/glib-compile-schemas.c:772 +#: ../gio/glib-compile-schemas.c:784 msgid "empty names are not permitted" msgstr "izen hutsak ez daude baimenduta" -#: ../gio/glib-compile-schemas.c:782 +#: ../gio/glib-compile-schemas.c:794 #, c-format msgid "invalid name '%s': names must begin with a lowercase letter" msgstr "'%s' izena baliogabea: izenak letra minuskula batekin hasi behar dira" -#: ../gio/glib-compile-schemas.c:794 +#: ../gio/glib-compile-schemas.c:806 #, c-format msgid "" "invalid name '%s': invalid character '%c'; only lowercase letters, numbers " @@ -1632,37 +1674,37 @@ msgstr "" "'%s' izena baliogabea: '%c' karakterea baliogabea. soilik letra minuskulak, " "zenbakiak eta hipenazioa ('-') onartzen dira." -#: ../gio/glib-compile-schemas.c:803 +#: ../gio/glib-compile-schemas.c:815 #, c-format msgid "invalid name '%s': two successive hyphens ('--') are not permitted." msgstr "'%s' izena baliogabea: bi hipenazio jarraian ('--') ez dago onartuta." -#: ../gio/glib-compile-schemas.c:812 +#: ../gio/glib-compile-schemas.c:824 #, c-format msgid "invalid name '%s': the last character may not be a hyphen ('-')." msgstr "" "'%s' izena baliogabea: azken karakterea ezin da hipenazioa ('-') izan." -#: ../gio/glib-compile-schemas.c:820 +#: ../gio/glib-compile-schemas.c:832 #, c-format msgid "invalid name '%s': maximum length is 1024" msgstr "'%s' izena baliogabea: gehienezko luzera 1024 da" -#: ../gio/glib-compile-schemas.c:889 +#: ../gio/glib-compile-schemas.c:901 #, c-format msgid " already specified" msgstr " jadanik zehaztuta" -#: ../gio/glib-compile-schemas.c:915 +#: ../gio/glib-compile-schemas.c:927 msgid "cannot add keys to a 'list-of' schema" msgstr "ezin zaio gakorik gehitu 'list-of' eskema bati" -#: ../gio/glib-compile-schemas.c:926 +#: ../gio/glib-compile-schemas.c:938 #, c-format msgid " already specified" msgstr " jadanik zehaztuta" -#: ../gio/glib-compile-schemas.c:944 +#: ../gio/glib-compile-schemas.c:956 #, c-format msgid "" " shadows in ; use " @@ -1671,7 +1713,7 @@ msgstr "" "-ek iluntzen du -en; erabili " " balioa aldatzeko" -#: ../gio/glib-compile-schemas.c:955 +#: ../gio/glib-compile-schemas.c:967 #, c-format msgid "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " @@ -1680,56 +1722,56 @@ msgstr "" "-rentzako hauetariko bat zehaztu behar da atributu gisa: 'type', 'enum' " "edo 'flags'" -#: ../gio/glib-compile-schemas.c:974 +#: ../gio/glib-compile-schemas.c:986 #, c-format msgid "<%s id='%s'> not (yet) defined." msgstr "<%s id='%s'> ez dago (oraindik) definituta." -#: ../gio/glib-compile-schemas.c:989 +#: ../gio/glib-compile-schemas.c:1001 #, c-format msgid "invalid GVariant type string '%s'" msgstr "baliogabeko GVariant motako '%s' katea" -#: ../gio/glib-compile-schemas.c:1019 +#: ../gio/glib-compile-schemas.c:1031 msgid " given but schema isn't extending anything" msgstr " eman da, baina eskema ez da ezer hedatzen ari" -#: ../gio/glib-compile-schemas.c:1032 +#: ../gio/glib-compile-schemas.c:1044 #, c-format msgid "no to override" msgstr "ez dago (e)rik gainidazteko" -#: ../gio/glib-compile-schemas.c:1040 +#: ../gio/glib-compile-schemas.c:1052 #, c-format msgid " already specified" msgstr " jadanik zehaztuta" -#: ../gio/glib-compile-schemas.c:1111 +#: ../gio/glib-compile-schemas.c:1125 #, c-format msgid " already specified" msgstr " jadanik zehaztuta" -#: ../gio/glib-compile-schemas.c:1123 +#: ../gio/glib-compile-schemas.c:1137 #, c-format msgid " extends not yet existing schema '%s'" msgstr " oraindik existitzen ez den '%s' eskema hedatzen du" -#: ../gio/glib-compile-schemas.c:1139 +#: ../gio/glib-compile-schemas.c:1153 #, c-format msgid " is list of not yet existing schema '%s'" msgstr " oraindik existitzen ez den '%s' eskemaren zerrenda da" -#: ../gio/glib-compile-schemas.c:1147 +#: ../gio/glib-compile-schemas.c:1161 #, c-format msgid "Can not be a list of a schema with a path" msgstr "Ezin da bide-izena duen eskema baten zerrenda izan" -#: ../gio/glib-compile-schemas.c:1157 +#: ../gio/glib-compile-schemas.c:1171 #, c-format msgid "Can not extend a schema with a path" msgstr "Ezin da eskema bat bide-izen batekin hedatu" -#: ../gio/glib-compile-schemas.c:1167 +#: ../gio/glib-compile-schemas.c:1181 #, c-format msgid "" " is a list, extending which is not a list" @@ -1737,7 +1779,7 @@ msgstr "" " zerrenda bat da, zerrenda ez den hedatzen " "duena" -#: ../gio/glib-compile-schemas.c:1177 +#: ../gio/glib-compile-schemas.c:1191 #, c-format msgid "" " extends but '%s' " @@ -1746,63 +1788,68 @@ msgstr "" "(e)k hedatzen du, " "baina '%s'(e)k ez du '%s' hedatzen" -#: ../gio/glib-compile-schemas.c:1194 +#: ../gio/glib-compile-schemas.c:1208 #, c-format msgid "a path, if given, must begin and end with a slash" msgstr "bide-izen bat ematen bada, barra batekin (/) hasi eta amaitu behar da" -#: ../gio/glib-compile-schemas.c:1201 +#: ../gio/glib-compile-schemas.c:1215 #, c-format msgid "the path of a list must end with ':/'" msgstr "zerrenda bateko bide-izena ':/'-rekin amaitu behar da" -#: ../gio/glib-compile-schemas.c:1233 +#: ../gio/glib-compile-schemas.c:1247 #, c-format msgid "<%s id='%s'> already specified" msgstr "<%s id='%s'> jadanik zehaztuta" -#: ../gio/glib-compile-schemas.c:1457 +#: ../gio/glib-compile-schemas.c:1397 ../gio/glib-compile-schemas.c:1413 +#, c-format +msgid "Only one <%s> element allowed inside <%s>" +msgstr "Soilik <%s> elementu bakarra onartzen da <%s>(r)en barruan" + +#: ../gio/glib-compile-schemas.c:1495 #, c-format msgid "Element <%s> not allowed at the top level" msgstr "<%s> elementua ez da maila gorenean onartzen" #. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1752 ../gio/glib-compile-schemas.c:1823 -#: ../gio/glib-compile-schemas.c:1899 +#: ../gio/glib-compile-schemas.c:1794 ../gio/glib-compile-schemas.c:1865 +#: ../gio/glib-compile-schemas.c:1941 #, c-format msgid "--strict was specified; exiting.\n" msgstr "--strict zehaztu da; irtetzen.\n" -#: ../gio/glib-compile-schemas.c:1760 +#: ../gio/glib-compile-schemas.c:1802 #, c-format msgid "This entire file has been ignored.\n" msgstr "Fitxategi oso honi ezikusi egin zaio.\n" -#: ../gio/glib-compile-schemas.c:1819 +#: ../gio/glib-compile-schemas.c:1861 #, c-format msgid "Ignoring this file.\n" msgstr "Fitxategi honi ezikusi egiten.\n" -#: ../gio/glib-compile-schemas.c:1859 +#: ../gio/glib-compile-schemas.c:1901 #, c-format msgid "No such key '%s' in schema '%s' as specified in override file '%s'" msgstr "" "Ez dago '%s' bezalako gakorik '%s' eskeman gainidazteko '%s' fitxategian " "ageri den bezala" -#: ../gio/glib-compile-schemas.c:1865 ../gio/glib-compile-schemas.c:1923 -#: ../gio/glib-compile-schemas.c:1951 +#: ../gio/glib-compile-schemas.c:1907 ../gio/glib-compile-schemas.c:1965 +#: ../gio/glib-compile-schemas.c:1993 #, c-format msgid "; ignoring override for this key.\n" msgstr "; gainidazketari ezikusi egiten gako honentzako.\n" -#: ../gio/glib-compile-schemas.c:1869 ../gio/glib-compile-schemas.c:1927 -#: ../gio/glib-compile-schemas.c:1955 +#: ../gio/glib-compile-schemas.c:1911 ../gio/glib-compile-schemas.c:1969 +#: ../gio/glib-compile-schemas.c:1997 #, c-format msgid " and --strict was specified; exiting.\n" msgstr " eta --strict zehaztu da; irtetzen.\n" -#: ../gio/glib-compile-schemas.c:1885 +#: ../gio/glib-compile-schemas.c:1927 #, c-format msgid "" "error parsing key '%s' in schema '%s' as specified in override file '%s': %s." @@ -1810,12 +1857,12 @@ msgstr "" "errorea '%2$s' eskemako '%1$s' gakoa analizatzean gainidazteko '%3$s' " "fitxategian ageri den bezala: %4$s." -#: ../gio/glib-compile-schemas.c:1895 +#: ../gio/glib-compile-schemas.c:1937 #, c-format msgid "Ignoring override for this key.\n" msgstr "Gainidazketari ezikusi egiten gako honentzako.\n" -#: ../gio/glib-compile-schemas.c:1913 +#: ../gio/glib-compile-schemas.c:1955 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is outside the " @@ -1824,7 +1871,7 @@ msgstr "" "gainidazteko '%3$s' fitxategiko '%2$s' eskemako '%1$s' gakoa gainidaztea " "barrutitik kanpo dago emandako eskeman" -#: ../gio/glib-compile-schemas.c:1941 +#: ../gio/glib-compile-schemas.c:1983 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is not in the " @@ -1833,23 +1880,23 @@ msgstr "" "gainidazteko '%3$s' fitxategiko '%2$s' eskemako '%1$s' gakoa gainidaztea ez " "dago baliozko aukeren zerrendan" -#: ../gio/glib-compile-schemas.c:1994 +#: ../gio/glib-compile-schemas.c:2036 msgid "where to store the gschemas.compiled file" msgstr "non gorde gschemas.compiled fitxategia" -#: ../gio/glib-compile-schemas.c:1995 +#: ../gio/glib-compile-schemas.c:2037 msgid "Abort on any errors in schemas" msgstr "Abortatu eskemetan edozer motako erroreak agertzean" -#: ../gio/glib-compile-schemas.c:1996 +#: ../gio/glib-compile-schemas.c:2038 msgid "Do not write the gschema.compiled file" msgstr "Ez idatzi gschema.compiled fitxategia" -#: ../gio/glib-compile-schemas.c:1997 +#: ../gio/glib-compile-schemas.c:2039 msgid "Do not enforce key name restrictions" msgstr "Ez derrigortu gako-izenen murriztapenik" -#: ../gio/glib-compile-schemas.c:2026 +#: ../gio/glib-compile-schemas.c:2068 msgid "" "Compile all GSettings schema files into a schema cache.\n" "Schema files are required to have the extension .gschema.xml,\n" @@ -1859,147 +1906,143 @@ msgstr "" "Eskemen fitxategiek .gschema.xml luzapena eduki behar dute,\n" "eta cache-ko fitxategia gschemas.compiled deitzen da." -#: ../gio/glib-compile-schemas.c:2042 +#: ../gio/glib-compile-schemas.c:2084 #, c-format msgid "You should give exactly one directory name\n" msgstr "Direktorio baten izena bakarrik eman behar duzu\n" -#: ../gio/glib-compile-schemas.c:2081 +#: ../gio/glib-compile-schemas.c:2123 #, c-format msgid "No schema files found: " msgstr "Ez da eskemen fitxategirik aurkitu: " -#: ../gio/glib-compile-schemas.c:2084 +#: ../gio/glib-compile-schemas.c:2126 #, c-format msgid "doing nothing.\n" msgstr "ezer ez da egiten ari.\n" -#: ../gio/glib-compile-schemas.c:2087 +#: ../gio/glib-compile-schemas.c:2129 #, c-format msgid "removed existing output file.\n" msgstr "existitzen den irteerako fitxategia kenduta.\n" -#: ../gio/glocaldirectorymonitor.c:224 -msgid "Unable to find default local directory monitor type" -msgstr "Ezin da lokaleko direktorio lehenetsiaren monitorizazio mota aurkitu" - # -#: ../gio/glocalfile.c:604 ../gio/win32/gwinhttpfile.c:420 +#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420 #, c-format msgid "Invalid filename %s" msgstr "%s fitxategi-izen baliogabea" -#: ../gio/glocalfile.c:981 +#: ../gio/glocalfile.c:1012 #, c-format msgid "Error getting filesystem info: %s" msgstr "Errorea fitxategi-sistemako informazioa lortzean: %s" -#: ../gio/glocalfile.c:1149 +#: ../gio/glocalfile.c:1180 msgid "Can't rename root directory" msgstr "Ezin da erroko direktorioa izenez aldatu" -#: ../gio/glocalfile.c:1169 ../gio/glocalfile.c:1195 +#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226 #, c-format msgid "Error renaming file: %s" msgstr "Errorea fitxategia izenez aldatzean: %s" -#: ../gio/glocalfile.c:1178 +#: ../gio/glocalfile.c:1209 msgid "Can't rename file, filename already exists" msgstr "Ezin da fitxategia izenez aldatu, fitxategi-izena badago lehendik ere" # -#: ../gio/glocalfile.c:1191 ../gio/glocalfile.c:2210 ../gio/glocalfile.c:2239 -#: ../gio/glocalfile.c:2399 ../gio/glocalfileoutputstream.c:549 +#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2245 ../gio/glocalfile.c:2274 +#: ../gio/glocalfile.c:2434 ../gio/glocalfileoutputstream.c:549 msgid "Invalid filename" msgstr "Fitxategi-izen baliogabea" -#: ../gio/glocalfile.c:1358 ../gio/glocalfile.c:1382 +#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413 msgid "Can't open directory" msgstr "Ezin da direktorioa ireki" -#: ../gio/glocalfile.c:1366 +#: ../gio/glocalfile.c:1397 #, c-format msgid "Error opening file: %s" msgstr "Errorea fitxategia irekitzean: %s" -#: ../gio/glocalfile.c:1507 +#: ../gio/glocalfile.c:1538 #, c-format msgid "Error removing file: %s" msgstr "Errorea fitxategia kentzean: %s" -#: ../gio/glocalfile.c:1887 +#: ../gio/glocalfile.c:1922 #, c-format msgid "Error trashing file: %s" msgstr "Errorea fitxategia zakarrontzira botatzean: %s" -#: ../gio/glocalfile.c:1910 +#: ../gio/glocalfile.c:1945 #, c-format msgid "Unable to create trash dir %s: %s" msgstr "Ezin izan da zakarrontziaren '%s' direktorioa sortu: %s" -#: ../gio/glocalfile.c:1931 +#: ../gio/glocalfile.c:1966 msgid "Unable to find toplevel directory for trash" msgstr "Ezin da zakarrontziaren goi-mailako direktorioa aurkitu" -#: ../gio/glocalfile.c:2010 ../gio/glocalfile.c:2030 +#: ../gio/glocalfile.c:2045 ../gio/glocalfile.c:2065 msgid "Unable to find or create trash directory" msgstr "Ezin da zakarrontziaren direktorioa aurkitu edo sortu" -#: ../gio/glocalfile.c:2064 +#: ../gio/glocalfile.c:2099 #, c-format msgid "Unable to create trashing info file: %s" msgstr "Ezin da zakarrontziaren informazio-fitxategia sortu: %s" -#: ../gio/glocalfile.c:2095 ../gio/glocalfile.c:2100 ../gio/glocalfile.c:2180 -#: ../gio/glocalfile.c:2187 +#: ../gio/glocalfile.c:2130 ../gio/glocalfile.c:2135 ../gio/glocalfile.c:2215 +#: ../gio/glocalfile.c:2222 #, c-format msgid "Unable to trash file: %s" msgstr "Ezin da fitxategia zakarrontzira bota: %s" -#: ../gio/glocalfile.c:2188 ../glib/gregex.c:281 +#: ../gio/glocalfile.c:2223 ../glib/gregex.c:281 msgid "internal error" msgstr "barneko errorea" -#: ../gio/glocalfile.c:2214 +#: ../gio/glocalfile.c:2249 #, c-format msgid "Error creating directory: %s" msgstr "Errorea direktorioa sortzean: %s" -#: ../gio/glocalfile.c:2243 +#: ../gio/glocalfile.c:2278 #, c-format msgid "Filesystem does not support symbolic links" msgstr "Fitxategi-sistemak ez ditu esteka sinbolikorik onartzen" -#: ../gio/glocalfile.c:2247 +#: ../gio/glocalfile.c:2282 #, c-format msgid "Error making symbolic link: %s" msgstr "Errorea esteka sinbolikoa sortzean: %s" -#: ../gio/glocalfile.c:2309 ../gio/glocalfile.c:2403 +#: ../gio/glocalfile.c:2344 ../gio/glocalfile.c:2438 #, c-format msgid "Error moving file: %s" msgstr "Errorea fitxategia lekuz aldatzean: %s" -#: ../gio/glocalfile.c:2332 +#: ../gio/glocalfile.c:2367 msgid "Can't move directory over directory" msgstr "Ezin da direktorioa lekuz aldatu direktorioaren gainera" -#: ../gio/glocalfile.c:2359 ../gio/glocalfileoutputstream.c:925 +#: ../gio/glocalfile.c:2394 ../gio/glocalfileoutputstream.c:925 #: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954 #: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984 msgid "Backup file creation failed" msgstr "Huts egin du babeskopia sortzean" -#: ../gio/glocalfile.c:2378 +#: ../gio/glocalfile.c:2413 #, c-format msgid "Error removing target file: %s" msgstr "Errorea helburuko fitxategia kentzean: %s" -#: ../gio/glocalfile.c:2392 +#: ../gio/glocalfile.c:2427 msgid "Move between mounts not supported" msgstr "Muntaien artean lekuz aldatzea ez dago onartuta" -#: ../gio/glocalfile.c:2603 +#: ../gio/glocalfile.c:2619 #, c-format msgid "Could not determine the disk usage of %s: %s" msgstr "Ezin izan da '%s' diskoaren erabilpena zehaztu: %s" @@ -2021,80 +2064,80 @@ msgstr "Atributu hedatuaren izen baliogabea" msgid "Error setting extended attribute '%s': %s" msgstr "Errorea '%s' atributu hedatua ezartzean: %s" -#: ../gio/glocalfileinfo.c:1556 +#: ../gio/glocalfileinfo.c:1579 msgid " (invalid encoding)" msgstr " (baliogabeko kodeketa)" -#: ../gio/glocalfileinfo.c:1747 ../gio/glocalfileoutputstream.c:803 +#: ../gio/glocalfileinfo.c:1770 ../gio/glocalfileoutputstream.c:803 #, c-format msgid "Error when getting information for file '%s': %s" msgstr "Errorea '%s' fitxategiaren informazioa eskuratzean: %s" -#: ../gio/glocalfileinfo.c:1998 +#: ../gio/glocalfileinfo.c:2021 #, c-format msgid "Error when getting information for file descriptor: %s" msgstr "Errorea fitxategiaren deskriptorearen informazioa irakurtzean: %s " -#: ../gio/glocalfileinfo.c:2043 +#: ../gio/glocalfileinfo.c:2066 msgid "Invalid attribute type (uint32 expected)" msgstr "Baliogabeko atributu mota (uint32 espero zen)" -#: ../gio/glocalfileinfo.c:2061 +#: ../gio/glocalfileinfo.c:2084 msgid "Invalid attribute type (uint64 expected)" msgstr "Baliogabeko atributu mota (uint64 espero zen)" -#: ../gio/glocalfileinfo.c:2080 ../gio/glocalfileinfo.c:2099 +#: ../gio/glocalfileinfo.c:2103 ../gio/glocalfileinfo.c:2122 msgid "Invalid attribute type (byte string expected)" msgstr "Baliogabeko atributu mota (byte katea espero zen)" -#: ../gio/glocalfileinfo.c:2134 +#: ../gio/glocalfileinfo.c:2157 msgid "Cannot set permissions on symlinks" msgstr "Ezin da baimenik ezarri esteka sinbolikoetan" -#: ../gio/glocalfileinfo.c:2150 +#: ../gio/glocalfileinfo.c:2173 #, c-format msgid "Error setting permissions: %s" msgstr "Errorea baimenak ezartzean: %s" -#: ../gio/glocalfileinfo.c:2201 +#: ../gio/glocalfileinfo.c:2224 #, c-format msgid "Error setting owner: %s" msgstr "Errorea jabea ezartzean: %s" -#: ../gio/glocalfileinfo.c:2224 +#: ../gio/glocalfileinfo.c:2247 msgid "symlink must be non-NULL" msgstr "esteka sinbolikoak NULL-en desberdina izan behar du" -#: ../gio/glocalfileinfo.c:2234 ../gio/glocalfileinfo.c:2253 -#: ../gio/glocalfileinfo.c:2264 +#: ../gio/glocalfileinfo.c:2257 ../gio/glocalfileinfo.c:2276 +#: ../gio/glocalfileinfo.c:2287 #, c-format msgid "Error setting symlink: %s" msgstr "Errorea esteka sinbolikoa ezartzean: %s" -#: ../gio/glocalfileinfo.c:2243 +#: ../gio/glocalfileinfo.c:2266 msgid "Error setting symlink: file is not a symlink" msgstr "" "Errorea esteka sinbolikoa ezartzean: fitxategia ez da esteka sinboliko bat" -#: ../gio/glocalfileinfo.c:2369 +#: ../gio/glocalfileinfo.c:2392 #, c-format msgid "Error setting modification or access time: %s" msgstr "Errorea eraldaketa edo atzipen ordua ezartzean: %s" -#: ../gio/glocalfileinfo.c:2392 +#: ../gio/glocalfileinfo.c:2415 msgid "SELinux context must be non-NULL" msgstr "SELinux testuinguruak NULL-en desberdina izan behar du" -#: ../gio/glocalfileinfo.c:2407 +#: ../gio/glocalfileinfo.c:2430 #, c-format msgid "Error setting SELinux context: %s" msgstr "Errorea SELinux testuingurua ezartzean: %s" -#: ../gio/glocalfileinfo.c:2414 +#: ../gio/glocalfileinfo.c:2437 msgid "SELinux is not enabled on this system" msgstr "SELinux ez dago gaituta sistema honetan" -#: ../gio/glocalfileinfo.c:2506 +#: ../gio/glocalfileinfo.c:2529 #, c-format msgid "Setting attribute %s not supported" msgstr "%s atributuaren ezarpena ez dago onartuta" @@ -2117,7 +2160,7 @@ msgstr "Errorea fitxategian bilatzean: %s" msgid "Error closing file: %s" msgstr "Errorea fitxategia ixtean: %s" -#: ../gio/glocalfilemonitor.c:145 +#: ../gio/glocalfilemonitor.c:840 msgid "Unable to find default local file monitor type" msgstr "Ezin da lokaleko fitxategi lehenetsiaren monitorizazio mota aurkitu" @@ -2260,16 +2303,16 @@ msgstr "muntaiak ez dauka eduki mota sinkronoa asmatzea inplementatuta" msgid "mount doesn't implement synchronous content type guessing" msgstr "muntaiak ez dauka eduki mota sinkronoa asmatzea inplementatuta" -#: ../gio/gnetworkaddress.c:383 +#: ../gio/gnetworkaddress.c:378 #, c-format msgid "Hostname '%s' contains '[' but not ']'" msgstr "'%s' ostalariak '['baina ez']' dauka" -#: ../gio/gnetworkmonitorbase.c:199 ../gio/gnetworkmonitorbase.c:302 +#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:309 msgid "Network unreachable" msgstr "Sarea atziezina" -#: ../gio/gnetworkmonitorbase.c:237 ../gio/gnetworkmonitorbase.c:267 +#: ../gio/gnetworkmonitorbase.c:244 ../gio/gnetworkmonitorbase.c:274 msgid "Host unreachable" msgstr "Ostalaria atziezina" @@ -2287,7 +2330,7 @@ msgstr "Ezin izan da sareko monitorea sortu: " msgid "Could not get network status: " msgstr "Ezin izan da sarearen egoera eskuratu: " -#: ../gio/gnetworkmonitornm.c:278 +#: ../gio/gnetworkmonitornm.c:326 #, c-format msgid "NetworkManager version too old" msgstr "NetworkManager-en bertsioa zaharregia" @@ -2296,43 +2339,43 @@ msgstr "NetworkManager-en bertsioa zaharregia" msgid "Output stream doesn't implement write" msgstr "Irteerako korronteak ez dauka idaztea inplementatuta" -#: ../gio/goutputstream.c:518 ../gio/goutputstream.c:1218 +#: ../gio/goutputstream.c:518 ../gio/goutputstream.c:1219 msgid "Source stream is already closed" msgstr "Iturburuko korrontea jadanik itxi da" -#: ../gio/gresolver.c:320 ../gio/gthreadedresolver.c:116 +#: ../gio/gresolver.c:330 ../gio/gthreadedresolver.c:116 #: ../gio/gthreadedresolver.c:126 #, c-format msgid "Error resolving '%s': %s" msgstr "Errorea '%s' ebaztean: %s" -#: ../gio/gresource.c:291 ../gio/gresource.c:539 ../gio/gresource.c:556 -#: ../gio/gresource.c:677 ../gio/gresource.c:746 ../gio/gresource.c:807 -#: ../gio/gresource.c:887 ../gio/gresourcefile.c:452 -#: ../gio/gresourcefile.c:553 ../gio/gresourcefile.c:655 +#: ../gio/gresource.c:304 ../gio/gresource.c:555 ../gio/gresource.c:572 +#: ../gio/gresource.c:693 ../gio/gresource.c:762 ../gio/gresource.c:823 +#: ../gio/gresource.c:903 ../gio/gresourcefile.c:453 +#: ../gio/gresourcefile.c:576 ../gio/gresourcefile.c:706 #, c-format msgid "The resource at '%s' does not exist" msgstr "'%s'(e)ko baliabidea ez da existitzen" -#: ../gio/gresource.c:456 +#: ../gio/gresource.c:469 #, c-format msgid "The resource at '%s' failed to decompress" msgstr "Huts egin du '%s'(e)ko baliabidea deskonprimitzean" -#: ../gio/gresourcefile.c:651 +#: ../gio/gresourcefile.c:702 #, c-format msgid "The resource at '%s' is not a directory" msgstr "'%s'(e)ko baliabidea ez da direktorio bat" -#: ../gio/gresourcefile.c:859 +#: ../gio/gresourcefile.c:910 msgid "Input stream doesn't implement seek" msgstr "Sarrerako korronteak ez dauka bilaketa inplementatuta" -#: ../gio/gresource-tool.c:491 +#: ../gio/gresource-tool.c:494 msgid "List sections containing resources in an elf FILE" msgstr "Zerrendatu baliabideak dituzten atalak elf fitxategi batean" -#: ../gio/gresource-tool.c:497 +#: ../gio/gresource-tool.c:500 msgid "" "List resources\n" "If SECTION is given, only list resources in this section\n" @@ -2342,16 +2385,16 @@ msgstr "" "ATALA ematen bada, soilik atal honetako baliabideak zerrendatu\n" "BIDE-IZENA ematen bada, bat datozen baliabideak soilik zerrendatu" -#: ../gio/gresource-tool.c:500 ../gio/gresource-tool.c:510 +#: ../gio/gresource-tool.c:503 ../gio/gresource-tool.c:513 msgid "FILE [PATH]" msgstr "FITXATEGIA [BIDE-IZENA]" -#: ../gio/gresource-tool.c:501 ../gio/gresource-tool.c:511 -#: ../gio/gresource-tool.c:518 +#: ../gio/gresource-tool.c:504 ../gio/gresource-tool.c:514 +#: ../gio/gresource-tool.c:521 msgid "SECTION" msgstr "ATALA" -#: ../gio/gresource-tool.c:506 +#: ../gio/gresource-tool.c:509 msgid "" "List resources with details\n" "If SECTION is given, only list resources in this section\n" @@ -2363,15 +2406,15 @@ msgstr "" "BIDE-IZENA ematen bada, bat datozen baliabideak soilik zerrendatu\n" "Xehetasunek atala, tamaina eta konpresioa daukate" -#: ../gio/gresource-tool.c:516 +#: ../gio/gresource-tool.c:519 msgid "Extract a resource file to stdout" msgstr "Erauzi baliabidearen fitxategia irteera estandarrean (stdout)" -#: ../gio/gresource-tool.c:517 +#: ../gio/gresource-tool.c:520 msgid "FILE PATH" msgstr "FITXATEGIA BIDE-IZENA" -#: ../gio/gresource-tool.c:531 +#: ../gio/gresource-tool.c:534 msgid "" "Usage:\n" " gresource [--section SECTION] COMMAND [ARGS...]\n" @@ -2399,7 +2442,7 @@ msgstr "" "Erabili 'gresource help KOMANDOA' laguntza xehea eskuratzeko.\n" "\n" -#: ../gio/gresource-tool.c:545 +#: ../gio/gresource-tool.c:548 #, c-format msgid "" "Usage:\n" @@ -2414,20 +2457,20 @@ msgstr "" "%s\n" "\n" -#: ../gio/gresource-tool.c:552 +#: ../gio/gresource-tool.c:555 msgid " SECTION An (optional) elf section name\n" msgstr " ATALA elf atalaren izena (aukerakoa)\n" -#: ../gio/gresource-tool.c:556 ../gio/gsettings-tool.c:648 +#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:639 msgid " COMMAND The (optional) command to explain\n" msgstr " KOMANDOA (aukerako) komandoa deskribatzeko\n" -#: ../gio/gresource-tool.c:562 +#: ../gio/gresource-tool.c:565 msgid " FILE An elf file (a binary or a shared library)\n" msgstr "" " FITXATEGIA Elf fitxategia (bitarra edo partekatutako liburutegia)\n" -#: ../gio/gresource-tool.c:565 +#: ../gio/gresource-tool.c:568 msgid "" " FILE An elf file (a binary or a shared library)\n" " or a compiled resource file\n" @@ -2435,25 +2478,26 @@ msgstr "" " FITXATEGIA Elf fitxategia (bitarra edo partekatutako liburutegia)\n" " edo konpilatutako baliabidearen fitxategi bat\n" -#: ../gio/gresource-tool.c:569 +#: ../gio/gresource-tool.c:572 msgid "[PATH]" msgstr "[BIDE-IZENA]" -#: ../gio/gresource-tool.c:571 +#: ../gio/gresource-tool.c:574 msgid " PATH An (optional) resource path (may be partial)\n" msgstr "" " BIDE-IZENA (aukerakoa) baliabidearen bide-izena (partziala izan " "daiteke)\n" -#: ../gio/gresource-tool.c:572 +#: ../gio/gresource-tool.c:575 msgid "PATH" msgstr "BIDE-IZENA" -#: ../gio/gresource-tool.c:574 +#: ../gio/gresource-tool.c:577 msgid " PATH A resource path\n" msgstr " BIDE-IZENA Baliabidearen bide-izena\n" #: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72 +#: ../gio/gsettings-tool.c:824 #, c-format msgid "No such schema '%s'\n" msgstr "Ez dago '%s' bezalako eskemarik\n" @@ -2488,38 +2532,38 @@ msgstr "Bide-izena barra batekin (/) amaitu behar da\n" msgid "Path must not contain two adjacent slashes (//)\n" msgstr "Bide-izenak ezin ditu bi barra jarraian eduki (//)\n" -#: ../gio/gsettings-tool.c:490 +#: ../gio/gsettings-tool.c:481 #, c-format msgid "The provided value is outside of the valid range\n" msgstr "Emandako balioa baliozko barrutitik kanpo dago\n" -#: ../gio/gsettings-tool.c:497 +#: ../gio/gsettings-tool.c:488 #, c-format msgid "The key is not writable\n" msgstr "Gakoa ez da idazgarria\n" -#: ../gio/gsettings-tool.c:533 +#: ../gio/gsettings-tool.c:524 msgid "List the installed (non-relocatable) schemas" msgstr "Zerrendatu instalatutako eskemak (lekuz ezin direnak aldatu)" -#: ../gio/gsettings-tool.c:539 +#: ../gio/gsettings-tool.c:530 msgid "List the installed relocatable schemas" msgstr "Zerrendatu instalatutako eskemak (lekuz alda daitezkeenak)" -#: ../gio/gsettings-tool.c:545 +#: ../gio/gsettings-tool.c:536 msgid "List the keys in SCHEMA" msgstr "Zerrendatu ESKEMAko gakoak" -#: ../gio/gsettings-tool.c:546 ../gio/gsettings-tool.c:552 -#: ../gio/gsettings-tool.c:589 +#: ../gio/gsettings-tool.c:537 ../gio/gsettings-tool.c:543 +#: ../gio/gsettings-tool.c:580 msgid "SCHEMA[:PATH]" msgstr "ESKEMA[:bide-izena]" -#: ../gio/gsettings-tool.c:551 +#: ../gio/gsettings-tool.c:542 msgid "List the children of SCHEMA" msgstr "Zerrendatu ESKEMAren umeak" -#: ../gio/gsettings-tool.c:557 +#: ../gio/gsettings-tool.c:548 msgid "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" @@ -2527,44 +2571,44 @@ msgstr "" "Zerrendatu gako eta balioak, errekurtsiboki\n" "Ez bada ESKEMArik ematen, zerrendatu gako guztiak\n" -#: ../gio/gsettings-tool.c:559 +#: ../gio/gsettings-tool.c:550 msgid "[SCHEMA[:PATH]]" msgstr "[ESKEMA[:BIDE-IZENA]]" -#: ../gio/gsettings-tool.c:564 +#: ../gio/gsettings-tool.c:555 msgid "Get the value of KEY" msgstr "Lortu GAKOAren balioa" -#: ../gio/gsettings-tool.c:565 ../gio/gsettings-tool.c:571 -#: ../gio/gsettings-tool.c:583 ../gio/gsettings-tool.c:595 +#: ../gio/gsettings-tool.c:556 ../gio/gsettings-tool.c:562 +#: ../gio/gsettings-tool.c:574 ../gio/gsettings-tool.c:586 msgid "SCHEMA[:PATH] KEY" msgstr "ESKEMA[:BIDE-IZENA] GAKOA" -#: ../gio/gsettings-tool.c:570 +#: ../gio/gsettings-tool.c:561 msgid "Query the range of valid values for KEY" msgstr "Kontsultatu GAKOAren baliozko balioen barrutiari buruz" -#: ../gio/gsettings-tool.c:576 +#: ../gio/gsettings-tool.c:567 msgid "Set the value of KEY to VALUE" msgstr "Ezarri GAKOAren balioa BALIOArekin" -#: ../gio/gsettings-tool.c:577 +#: ../gio/gsettings-tool.c:568 msgid "SCHEMA[:PATH] KEY VALUE" msgstr "ESKEMA[:BIDE-IZENA] GAKOA BALIOA" -#: ../gio/gsettings-tool.c:582 +#: ../gio/gsettings-tool.c:573 msgid "Reset KEY to its default value" msgstr "Berrezarri GAKOA bere balio lehenetsira" -#: ../gio/gsettings-tool.c:588 +#: ../gio/gsettings-tool.c:579 msgid "Reset all keys in SCHEMA to their defaults" msgstr "Berrezarri ESKEMAko gako guztiak beraien balio lehenetsietara" -#: ../gio/gsettings-tool.c:594 +#: ../gio/gsettings-tool.c:585 msgid "Check if KEY is writable" msgstr "Begiratu GAKOA idazgarria den edo ez" -#: ../gio/gsettings-tool.c:600 +#: ../gio/gsettings-tool.c:591 msgid "" "Monitor KEY for changes.\n" "If no KEY is specified, monitor all keys in SCHEMA.\n" @@ -2574,11 +2618,11 @@ msgstr "" "Ez bada GAKOA zehazten, ESKEMAko gako guztiak monitorizatuko ditu.\n" "Erabili ^C monitorizazioa gelditzeko.\n" -#: ../gio/gsettings-tool.c:603 +#: ../gio/gsettings-tool.c:594 msgid "SCHEMA[:PATH] [KEY]" msgstr "ESKEMA[:BIDE-IZENA] GAKOA" -#: ../gio/gsettings-tool.c:615 +#: ../gio/gsettings-tool.c:606 msgid "" "Usage:\n" " gsettings --version\n" @@ -2626,7 +2670,7 @@ msgstr "" "Erabili 'gsettings help KOMANDOA' laguntza xehea lortzeko.\n" "\n" -#: ../gio/gsettings-tool.c:638 +#: ../gio/gsettings-tool.c:629 #, c-format msgid "" "Usage:\n" @@ -2641,11 +2685,11 @@ msgstr "" "%s\n" "\n" -#: ../gio/gsettings-tool.c:644 +#: ../gio/gsettings-tool.c:635 msgid " SCHEMADIR A directory to search for additional schemas\n" msgstr " ESKEMA-DIREKTORIOA Eskema gehigarriak bilatzeko direkotrioa\n" -#: ../gio/gsettings-tool.c:652 +#: ../gio/gsettings-tool.c:643 msgid "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" @@ -2653,19 +2697,19 @@ msgstr "" " ESKEMA Eskemaren izena\n" " BIDE-IZENA Bide-izena, lekuz alda daitezkeen eskementzako\n" -#: ../gio/gsettings-tool.c:657 +#: ../gio/gsettings-tool.c:648 msgid " KEY The (optional) key within the schema\n" msgstr " GAKOA Eskema barruko (aukerako) gakoa\n" -#: ../gio/gsettings-tool.c:661 +#: ../gio/gsettings-tool.c:652 msgid " KEY The key within the schema\n" msgstr " GAKOA Eskema barruko gakoa\n" -#: ../gio/gsettings-tool.c:665 +#: ../gio/gsettings-tool.c:656 msgid " VALUE The value to set\n" msgstr " BALIOA Ezarriko den balioa\n" -#: ../gio/gsettings-tool.c:720 +#: ../gio/gsettings-tool.c:712 #, c-format msgid "Could not load schemas from %s: %s\n" msgstr "Ezin izan dira eskemarik '%s'(e)ndik kargatu : %s\n" @@ -2675,138 +2719,149 @@ msgstr "Ezin izan dira eskemarik '%s'(e)ndik kargatu : %s\n" msgid "Empty schema name given\n" msgstr "Eskemaren izen hutsa eman da\n" -#: ../gio/gsettings-tool.c:811 +#: ../gio/gsettings-tool.c:837 #, c-format msgid "No such key '%s'\n" msgstr "Ez dago '%s' bezalako gakorik\n" -#: ../gio/gsocket.c:266 +#: ../gio/gsocket.c:364 msgid "Invalid socket, not initialized" msgstr "Baliogabeko socket-a, hasieratu gabe dago" -#: ../gio/gsocket.c:273 +#: ../gio/gsocket.c:371 #, c-format msgid "Invalid socket, initialization failed due to: %s" msgstr "Baliogabeko socket-a, hasieratzeak huts egin du: %s" -#: ../gio/gsocket.c:281 +#: ../gio/gsocket.c:379 msgid "Socket is already closed" msgstr "Socket-a jadanik itxita dago" -#: ../gio/gsocket.c:296 ../gio/gsocket.c:3619 ../gio/gsocket.c:3674 +#: ../gio/gsocket.c:394 ../gio/gsocket.c:2751 ../gio/gsocket.c:3896 +#: ../gio/gsocket.c:3951 msgid "Socket I/O timed out" msgstr "S/Iko socket-aren denbora-muga gaindituta" -#: ../gio/gsocket.c:443 +#: ../gio/gsocket.c:526 #, c-format msgid "creating GSocket from fd: %s" msgstr "GSocket sortzen fd-tik: %s" -#: ../gio/gsocket.c:471 ../gio/gsocket.c:525 ../gio/gsocket.c:532 +#: ../gio/gsocket.c:554 ../gio/gsocket.c:608 ../gio/gsocket.c:615 #, c-format msgid "Unable to create socket: %s" msgstr "Ezin da socket-a sortu: %s" -#: ../gio/gsocket.c:525 +#: ../gio/gsocket.c:608 msgid "Unknown family was specified" msgstr "Familia ezezaguna zehaztu da" -#: ../gio/gsocket.c:532 +#: ../gio/gsocket.c:615 msgid "Unknown protocol was specified" msgstr "Protokolo ezezaguna zehaztu da" -#: ../gio/gsocket.c:1722 +#: ../gio/gsocket.c:1104 +#, c-format +msgid "Cannot use datagram operations on a non-datagram socket." +msgstr "" + +#: ../gio/gsocket.c:1121 +#, c-format +msgid "Cannot use datagram operations on a socket with a timeout set." +msgstr "" + +#: ../gio/gsocket.c:1925 #, c-format msgid "could not get local address: %s" msgstr "ezin izan da lokaleko helbidea lortu: %s" -#: ../gio/gsocket.c:1765 +#: ../gio/gsocket.c:1968 #, c-format msgid "could not get remote address: %s" msgstr "ezin izan da urruneko helbidea lortu: %s" -#: ../gio/gsocket.c:1826 +#: ../gio/gsocket.c:2034 #, c-format msgid "could not listen: %s" msgstr "ezin izan da entzun: %s" -#: ../gio/gsocket.c:1925 +#: ../gio/gsocket.c:2133 #, c-format msgid "Error binding to address: %s" msgstr "Errorea helbidea lotzean: %s" -#: ../gio/gsocket.c:2037 ../gio/gsocket.c:2074 +#: ../gio/gsocket.c:2248 ../gio/gsocket.c:2285 #, c-format msgid "Error joining multicast group: %s" msgstr "Errorea multidifusioko taldean elkartzean: %s" -#: ../gio/gsocket.c:2038 ../gio/gsocket.c:2075 +#: ../gio/gsocket.c:2249 ../gio/gsocket.c:2286 #, c-format msgid "Error leaving multicast group: %s" msgstr "Errorea multidifusioko taldea uztean: %s" -#: ../gio/gsocket.c:2039 +#: ../gio/gsocket.c:2250 msgid "No support for source-specific multicast" msgstr "Iturburu zehatzeko multidifusiorik ez da onartzen" -#: ../gio/gsocket.c:2261 +#: ../gio/gsocket.c:2470 #, c-format msgid "Error accepting connection: %s" msgstr "Errorea konexioa onartzean: %s" -#: ../gio/gsocket.c:2384 +#: ../gio/gsocket.c:2593 msgid "Connection in progress" msgstr "Konexioa lantzen" -#: ../gio/gsocket.c:2434 +#: ../gio/gsocket.c:2644 msgid "Unable to get pending error: " msgstr "Ezin da falta diren erroreak lortu: " -#: ../gio/gsocket.c:2637 +#: ../gio/gsocket.c:2816 #, c-format msgid "Error receiving data: %s" msgstr "Errorea datuak jasotzean: %s" -#: ../gio/gsocket.c:2812 +#: ../gio/gsocket.c:3013 #, c-format msgid "Error sending data: %s" msgstr "Errorea datuak bidaltzean: %s" -#: ../gio/gsocket.c:2926 +#: ../gio/gsocket.c:3200 #, c-format msgid "Unable to shutdown socket: %s" msgstr "Ezin da socket-a itzali: %s" -#: ../gio/gsocket.c:3005 +#: ../gio/gsocket.c:3281 #, c-format msgid "Error closing socket: %s" msgstr "Errorea socket-a ixtean: %s" -#: ../gio/gsocket.c:3612 +#: ../gio/gsocket.c:3889 #, c-format msgid "Waiting for socket condition: %s" msgstr "Socket-aren baldintzen zai: %s" -#: ../gio/gsocket.c:3899 ../gio/gsocket.c:3982 ../gio/gsocket.c:4210 +#: ../gio/gsocket.c:4361 ../gio/gsocket.c:4441 ../gio/gsocket.c:4619 #, c-format msgid "Error sending message: %s" msgstr "Errorea mezua bidaltzean: %s" -#: ../gio/gsocket.c:3924 +#: ../gio/gsocket.c:4385 msgid "GSocketControlMessage not supported on Windows" msgstr "GSocketControlMessage ez da Windows sisteman onartzen" -#: ../gio/gsocket.c:4538 ../gio/gsocket.c:4676 +#: ../gio/gsocket.c:4840 ../gio/gsocket.c:4913 ../gio/gsocket.c:5140 #, c-format msgid "Error receiving message: %s" msgstr "Errorea mezua jasotzean: %s" -#: ../gio/gsocket.c:4798 +#: ../gio/gsocket.c:5412 #, c-format msgid "Unable to read socket credentials: %s" msgstr "Ezin da socket-aren kredentzialik irakurri: %s" -#: ../gio/gsocket.c:4807 +#: ../gio/gsocket.c:5421 msgid "g_socket_get_credentials not implemented for this OS" msgstr "g_socket_get_credentials ez dago S.E. honetan inplementatuta" @@ -2824,25 +2879,25 @@ msgstr "Ezin izan da %s(r)ekin konektatu: " msgid "Could not connect: " msgstr "Ezin izan da konektatu: " -#: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1603 +#: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1599 msgid "Unknown error on connect" msgstr "Errore ezezaguna konexioan" -#: ../gio/gsocketclient.c:1082 ../gio/gsocketclient.c:1538 +#: ../gio/gsocketclient.c:1081 ../gio/gsocketclient.c:1535 msgid "Proxying over a non-TCP connection is not supported." msgstr "" "TCP motakoak ez diren konexioen gainean proxy-a egitea ez dago onartuta." -#: ../gio/gsocketclient.c:1108 ../gio/gsocketclient.c:1559 +#: ../gio/gsocketclient.c:1110 ../gio/gsocketclient.c:1561 #, c-format msgid "Proxy protocol '%s' is not supported." msgstr "Proxy-aren %s protokoloa ez dago onartuta." -#: ../gio/gsocketlistener.c:188 +#: ../gio/gsocketlistener.c:218 msgid "Listener is already closed" msgstr "Entzulea jadanik itxita dago" -#: ../gio/gsocketlistener.c:234 +#: ../gio/gsocketlistener.c:264 msgid "Added socket is closed" msgstr "Gehitutako socket-a itxi da" @@ -3007,79 +3062,79 @@ msgstr "" msgid "The password entered is incorrect." msgstr "Sartutako pasahitza okerrekoa da." -#: ../gio/gunixconnection.c:159 ../gio/gunixconnection.c:554 +#: ../gio/gunixconnection.c:166 ../gio/gunixconnection.c:561 #, c-format msgid "Expecting 1 control message, got %d" msgid_plural "Expecting 1 control message, got %d" msgstr[0] "Kontroleko mezu 1 espero zen, %d lortu da" msgstr[1] "Kontroleko mezu 1 espero zen, %d lortu dira" -#: ../gio/gunixconnection.c:175 ../gio/gunixconnection.c:566 +#: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:573 msgid "Unexpected type of ancillary data" msgstr "Ustekabeko datu-laguntzaile mota" -#: ../gio/gunixconnection.c:193 +#: ../gio/gunixconnection.c:200 #, c-format msgid "Expecting one fd, but got %d\n" msgid_plural "Expecting one fd, but got %d\n" msgstr[0] "fd bat espero zen, baina %d lortu da\n" msgstr[1] "fd bat espero zen, baina %d lortu dira\n" -#: ../gio/gunixconnection.c:212 +#: ../gio/gunixconnection.c:219 msgid "Received invalid fd" msgstr "Baliogabeko fd jasota" -#: ../gio/gunixconnection.c:348 +#: ../gio/gunixconnection.c:355 msgid "Error sending credentials: " msgstr "Errorea kredentzialak bidaltzean: " -#: ../gio/gunixconnection.c:496 +#: ../gio/gunixconnection.c:503 #, c-format msgid "Error checking if SO_PASSCRED is enabled for socket: %s" msgstr "Errorea SO_PASSCRED gaituta dagoen begiratzean socket-arentzako: %s" -#: ../gio/gunixconnection.c:511 +#: ../gio/gunixconnection.c:518 #, c-format msgid "Error enabling SO_PASSCRED: %s" msgstr "Errorea SO_PASSCRED gaitzean: %s" -#: ../gio/gunixconnection.c:540 +#: ../gio/gunixconnection.c:547 msgid "" "Expecting to read a single byte for receiving credentials but read zero bytes" msgstr "" "Harrerako kredentzialentzako byte bakar bat irakurtzea espero zen, baina " "zero byte irakurri dira." -#: ../gio/gunixconnection.c:580 +#: ../gio/gunixconnection.c:587 #, c-format msgid "Not expecting control message, but got %d" msgstr "Ez zen kontroleko mezurik espero, baina %d lortu dira" -#: ../gio/gunixconnection.c:604 +#: ../gio/gunixconnection.c:611 #, c-format msgid "Error while disabling SO_PASSCRED: %s" msgstr "Errorea SO_PASSCRED desgaitzean: %s" -#: ../gio/gunixinputstream.c:370 ../gio/gunixinputstream.c:391 +#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390 #, c-format msgid "Error reading from file descriptor: %s" msgstr "Errorea fitxategiaren deskriptoretik irakurtzean: %s " -#: ../gio/gunixinputstream.c:424 ../gio/gunixoutputstream.c:410 +#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409 #, c-format msgid "Error closing file descriptor: %s" msgstr "Errorea fitxategiaren deskriptorea ixtean: %s " -#: ../gio/gunixmounts.c:2054 ../gio/gunixmounts.c:2107 +#: ../gio/gunixmounts.c:2099 ../gio/gunixmounts.c:2152 msgid "Filesystem root" msgstr "Fitxategi-sistemaren erroa" -#: ../gio/gunixoutputstream.c:356 ../gio/gunixoutputstream.c:377 +#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376 #, c-format msgid "Error writing to file descriptor: %s" msgstr "Errorea fitxategiaren deskriptorean idaztean: %s" -#: ../gio/gunixsocketaddress.c:232 +#: ../gio/gunixsocketaddress.c:239 msgid "Abstract UNIX domain socket addresses not supported on this system" msgstr "" "UNIX-eko domeinuen socket helbide abstraktuak ez daude sistema honetan " @@ -3096,34 +3151,17 @@ msgstr "bolumenak ez dauka 'egotzi' inplementatuta" msgid "volume doesn't implement eject or eject_with_operation" msgstr "bolumenak ez dauka 'egotzi' edo 'egotzi eragiketarekin' inplementatuta" -#: ../gio/gwin32appinfo.c:274 -msgid "Can't find application" -msgstr "Ezin da aplikazioa aurkitu" - -#: ../gio/gwin32appinfo.c:303 -#, c-format -msgid "Error launching application: %s" -msgstr "Errorea aplikazioa abiaraztean: %s" - -#: ../gio/gwin32appinfo.c:378 -msgid "association changes not supported on win32" -msgstr "asoziazioaren aldaketak ez dira onartzen win32 sisteman" - -#: ../gio/gwin32appinfo.c:390 -msgid "Association creation not supported on win32" -msgstr "Asoziazioa sortzea ez da onartzen win32 sisteman" - -#: ../gio/gwin32inputstream.c:344 +#: ../gio/gwin32inputstream.c:343 #, c-format msgid "Error reading from handle: %s" msgstr "Errorea heldulekutik irakurtzean: %s" -#: ../gio/gwin32inputstream.c:388 ../gio/gwin32outputstream.c:375 +#: ../gio/gwin32inputstream.c:387 ../gio/gwin32outputstream.c:374 #, c-format msgid "Error closing handle: %s" msgstr "Errorea heldulekua ixtean: %s" -#: ../gio/gwin32outputstream.c:331 +#: ../gio/gwin32outputstream.c:330 #, c-format msgid "Error writing to handle: %s" msgstr "Errorea heldulekuan idaztean: %s" @@ -3242,8 +3280,8 @@ msgstr "'%s' izeneko aplikaziorik ez du erregistratu laster-markarik '%s'(e)n" msgid "Failed to expand exec line '%s' with URI '%s'" msgstr "Huts egin du '%s' exekuzioko lerroa '%s' URIarekin hedatzean" -#: ../glib/gconvert.c:477 ../glib/gutf8.c:833 ../glib/gutf8.c:1044 -#: ../glib/gutf8.c:1181 ../glib/gutf8.c:1285 +#: ../glib/gconvert.c:477 ../glib/gutf8.c:848 ../glib/gutf8.c:1059 +#: ../glib/gutf8.c:1196 ../glib/gutf8.c:1300 msgid "Partial character sequence at end of input" msgstr "Karaktere-sekuentzia partziala sarreraren amaieran" @@ -3607,25 +3645,25 @@ msgstr "Ezin izan da '%s' esteka sinbolikorik irakurri: %s" msgid "Symbolic links not supported" msgstr "Esteka sinbolikoak ez dira onartzen" -#: ../glib/giochannel.c:1389 +#: ../glib/giochannel.c:1388 #, c-format msgid "Could not open converter from '%s' to '%s': %s" msgstr "Ezin izan da '%s'(e)tik '%s'(e)rako bihurtzailea ireki: %s" -#: ../glib/giochannel.c:1734 +#: ../glib/giochannel.c:1733 msgid "Can't do a raw read in g_io_channel_read_line_string" msgstr "Ezin dira datu gordinak irakurri 'g_io_channel_read_line_string'-en" -#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039 -#: ../glib/giochannel.c:2126 +#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038 +#: ../glib/giochannel.c:2125 msgid "Leftover unconverted data in read buffer" msgstr "Irakurketa-bufferrean geratu diren bihurtu gabeko datuak" -#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939 +#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938 msgid "Channel terminates in a partial character" msgstr "Kanala karaktere partzial batean bukatzen da" -#: ../glib/giochannel.c:1925 +#: ../glib/giochannel.c:1924 msgid "Can't do a raw read in g_io_channel_read_to_end" msgstr "Ezin dira datu gordinak irakurri 'g_io_channel_read_to_end'-etik" @@ -3667,8 +3705,8 @@ msgid "Key file contains unsupported encoding '%s'" msgstr "Gako-fitxategiak onartzen ez den '%s' kodeketa du" #: ../glib/gkeyfile.c:1548 ../glib/gkeyfile.c:1721 ../glib/gkeyfile.c:3099 -#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3288 ../glib/gkeyfile.c:3418 -#: ../glib/gkeyfile.c:3560 ../glib/gkeyfile.c:3789 ../glib/gkeyfile.c:3856 +#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3292 ../glib/gkeyfile.c:3422 +#: ../glib/gkeyfile.c:3566 ../glib/gkeyfile.c:3795 ../glib/gkeyfile.c:3862 #, c-format msgid "Key file does not have group '%s'" msgstr "Gako-fitxategiak ez dauka '%s' taldea" @@ -3705,31 +3743,31 @@ msgstr "" msgid "Key '%s' in group '%s' has value '%s' where %s was expected" msgstr "'%2$s' taldeko '%1$s' gakoaren balioa '%3$s' da, '%4$s' izan ordez." -#: ../glib/gkeyfile.c:4096 +#: ../glib/gkeyfile.c:4102 msgid "Key file contains escape character at end of line" msgstr "Gako-fitxategiak ihes-karakterea dauka lerro amaieran" -#: ../glib/gkeyfile.c:4118 +#: ../glib/gkeyfile.c:4124 #, c-format msgid "Key file contains invalid escape sequence '%s'" msgstr "Gako-fitxategiak '%s' ihes-sekuentzia baliogabea dauka" -#: ../glib/gkeyfile.c:4260 +#: ../glib/gkeyfile.c:4266 #, c-format msgid "Value '%s' cannot be interpreted as a number." msgstr "'%s' balioa ezin da zenbaki gisa interpretatu" -#: ../glib/gkeyfile.c:4274 +#: ../glib/gkeyfile.c:4280 #, c-format msgid "Integer value '%s' out of range" msgstr "'%s' osoko balioa barrutitik kanpo" -#: ../glib/gkeyfile.c:4307 +#: ../glib/gkeyfile.c:4313 #, c-format msgid "Value '%s' cannot be interpreted as a float number." msgstr "'%s' balioa ezin da zenbaki mugikor gisa interpretatu." -#: ../glib/gkeyfile.c:4331 +#: ../glib/gkeyfile.c:4337 #, c-format msgid "Value '%s' cannot be interpreted as a boolean." msgstr "'%s' balioa ezin da boolear gisa interpretatu" @@ -3776,7 +3814,7 @@ msgstr "'%s' ez da baliozko izena: '%c' " msgid "Error on line %d: %s" msgstr "Errorea %d lerroan: %s" -#: ../glib/gmarkup.c:683 +#: ../glib/gmarkup.c:676 #, c-format msgid "" "Failed to parse '%-.*s', which should have been a digit inside a character " @@ -3785,7 +3823,7 @@ msgstr "" "Ezin izan da '%-.*s' analizatu, digitu bat izan behar zuen karaktere-" "erreferentzia baten barruan (ê adibidez); agian digitua handiegia da" -#: ../glib/gmarkup.c:695 +#: ../glib/gmarkup.c:688 msgid "" "Character reference did not end with a semicolon; most likely you used an " "ampersand character without intending to start an entity - escape ampersand " @@ -3795,25 +3833,25 @@ msgstr "" "erabiliko zenuen entitatea hasteko asmorik gabe. Izendatu & karakterea & " "gisa;" -#: ../glib/gmarkup.c:721 +#: ../glib/gmarkup.c:714 #, c-format msgid "Character reference '%-.*s' does not encode a permitted character" msgstr "" "'%-.*s' karaktere-erreferentziak ez du baimendutako karaktere bat kodetzen" -#: ../glib/gmarkup.c:759 +#: ../glib/gmarkup.c:752 msgid "" "Empty entity '&;' seen; valid entities are: & " < > '" msgstr "" "'&;' entitatea hutsik dago; baliozko entitateak hauek dira: & " " "< > '" -#: ../glib/gmarkup.c:767 +#: ../glib/gmarkup.c:760 #, c-format msgid "Entity name '%-.*s' is not known" msgstr "'%-.*s' entitate-izena ezezaguna da" -#: ../glib/gmarkup.c:772 +#: ../glib/gmarkup.c:765 msgid "" "Entity did not end with a semicolon; most likely you used an ampersand " "character without intending to start an entity - escape ampersand as &" @@ -3821,11 +3859,11 @@ msgstr "" "Entitatea ez da puntu eta komaz bukatzen; normalean & ikurra erabiltzen da " "entitatea hasteko asmorik gabe; izendatu & karakterea & gisa;" -#: ../glib/gmarkup.c:1178 +#: ../glib/gmarkup.c:1171 msgid "Document must begin with an element (e.g. )" msgstr "Dokumentuak elementu batez hasi behar du (adibidez, )" -#: ../glib/gmarkup.c:1218 +#: ../glib/gmarkup.c:1211 #, c-format msgid "" "'%s' is not a valid character following a '<' character; it may not begin an " @@ -3834,7 +3872,7 @@ msgstr "" "'%s' ez da karaktere balioduna '<' karakterearen atzetik; baliteke elementu " "baten izena ez hastea" -#: ../glib/gmarkup.c:1260 +#: ../glib/gmarkup.c:1253 #, c-format msgid "" "Odd character '%s', expected a '>' character to end the empty-element tag " @@ -3843,7 +3881,7 @@ msgstr "" "'%s' karaktere bitxia, '>' karakterea espero zen '%s' elementuaren etiketa " "hutsa amaitzeko" -#: ../glib/gmarkup.c:1341 +#: ../glib/gmarkup.c:1334 #, c-format msgid "" "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" @@ -3851,7 +3889,7 @@ msgstr "" "'%s' karaktere bitxia, '=' espero zen '$2%s' elementuaren '$1%s' " "atributuaren ondoren" -#: ../glib/gmarkup.c:1382 +#: ../glib/gmarkup.c:1375 #, c-format msgid "" "Odd character '%s', expected a '>' or '/' character to end the start tag of " @@ -3862,7 +3900,7 @@ msgstr "" "hasiera-etiketa bukatzeko, edo bestela atributu bat. Agian karaktere " "baliogabea erabili duzu atributu-izen batean" -#: ../glib/gmarkup.c:1426 +#: ../glib/gmarkup.c:1419 #, c-format msgid "" "Odd character '%s', expected an open quote mark after the equals sign when " @@ -3871,7 +3909,7 @@ msgstr "" "'%s' karaktere bitxia, komatxo irekia espero zen berdin ikurraren ondoren " "'$2%s' elementuaren '$1%s' atributuari balioa ematean" -#: ../glib/gmarkup.c:1559 +#: ../glib/gmarkup.c:1552 #, c-format msgid "" "'%s' is not a valid character following the characters '' da" -#: ../glib/gmarkup.c:1606 +#: ../glib/gmarkup.c:1599 #, c-format msgid "Element '%s' was closed, no element is currently open" msgstr "'%s' elementua itxi egin da, unean ez dago elementurik irekita" -#: ../glib/gmarkup.c:1615 +#: ../glib/gmarkup.c:1608 #, c-format msgid "Element '%s' was closed, but the currently open element is '%s'" msgstr "'%s' elementua itxi egin da, baina unean '%s' elementua dago irekita" -#: ../glib/gmarkup.c:1768 +#: ../glib/gmarkup.c:1761 msgid "Document was empty or contained only whitespace" msgstr "Dokumentua hutsik dago edo zuriuneak bakarrik ditu" -#: ../glib/gmarkup.c:1782 +#: ../glib/gmarkup.c:1775 msgid "Document ended unexpectedly just after an open angle bracket '<'" msgstr "Dokumentua ustekabean itxi da angelu-parentesi ireki baten ondoren '<'" -#: ../glib/gmarkup.c:1790 ../glib/gmarkup.c:1835 +#: ../glib/gmarkup.c:1783 ../glib/gmarkup.c:1828 #, c-format msgid "" "Document ended unexpectedly with elements still open - '%s' was the last " @@ -3916,7 +3954,7 @@ msgstr "" "Dokumentua ustekabean amaitu da oraindik irekita zeuden elementuekin. '%s' " "irekitako azken elementua da" -#: ../glib/gmarkup.c:1798 +#: ../glib/gmarkup.c:1791 #, c-format msgid "" "Document ended unexpectedly, expected to see a close angle bracket ending " @@ -3925,20 +3963,20 @@ msgstr "" "Dokumentua ustekabean amaitu da, angelu-parentesi itxia ikustea espero nuen <" "%s/> etiketa amaitzen" -#: ../glib/gmarkup.c:1804 +#: ../glib/gmarkup.c:1797 msgid "Document ended unexpectedly inside an element name" msgstr "Dokumentua ustekabean amaitu da elementu-izen baten barruan" -#: ../glib/gmarkup.c:1810 +#: ../glib/gmarkup.c:1803 msgid "Document ended unexpectedly inside an attribute name" msgstr "Dokumentua ustekabean amaitu da atributu-izen baten barruan" -#: ../glib/gmarkup.c:1815 +#: ../glib/gmarkup.c:1808 msgid "Document ended unexpectedly inside an element-opening tag." msgstr "" "Dokumentua ustekabean amaitu da elementua irekitzeko etiketa baten barruan." -#: ../glib/gmarkup.c:1821 +#: ../glib/gmarkup.c:1814 msgid "" "Document ended unexpectedly after the equals sign following an attribute " "name; no attribute value" @@ -3946,77 +3984,81 @@ msgstr "" "Dokumentua ustekabean amaitu da atributu-izen baten ondorengo berdin " "ikurraren atzetik; ez dago atributu-baliorik" -#: ../glib/gmarkup.c:1828 +#: ../glib/gmarkup.c:1821 msgid "Document ended unexpectedly while inside an attribute value" msgstr "Dokumentua ustekabean amaitu da atributu-balio baten barruan" -#: ../glib/gmarkup.c:1844 +#: ../glib/gmarkup.c:1837 #, c-format msgid "Document ended unexpectedly inside the close tag for element '%s'" msgstr "" "Dokumentua ustekabean amaitu da '%s' elementuaren itxiera-etiketaren barruan" -#: ../glib/gmarkup.c:1850 +#: ../glib/gmarkup.c:1843 msgid "Document ended unexpectedly inside a comment or processing instruction" msgstr "" "Dokumentua ustekabean amaitu da iruzkin baten barruan edo prozesatzen ari " "zen instrukzio baten barruan" -#: ../glib/goption.c:858 +#: ../glib/goption.c:857 msgid "Usage:" msgstr "Erabilera:" -#: ../glib/goption.c:858 +#: ../glib/goption.c:861 msgid "[OPTION...]" msgstr "[AUKERA...]" -#: ../glib/goption.c:974 +#: ../glib/goption.c:977 msgid "Help Options:" msgstr "Laguntzako aukerak:" -#: ../glib/goption.c:975 +#: ../glib/goption.c:978 msgid "Show help options" msgstr "Erakutsi laguntzako aukerak" -#: ../glib/goption.c:981 +#: ../glib/goption.c:984 msgid "Show all help options" msgstr "Erakutsi laguntzako aukera guztiak" -#: ../glib/goption.c:1043 +#: ../glib/goption.c:1047 msgid "Application Options:" msgstr "Aplikazio-aukerak:" -#: ../glib/goption.c:1107 ../glib/goption.c:1177 +#: ../glib/goption.c:1049 +msgid "Options:" +msgstr "Aukerak:" + +#: ../glib/goption.c:1113 ../glib/goption.c:1183 #, c-format msgid "Cannot parse integer value '%s' for %s" msgstr "Ezin da '%2$s'(r)en '%1$s' osoko balioa analizatu" -#: ../glib/goption.c:1117 ../glib/goption.c:1185 +#: ../glib/goption.c:1123 ../glib/goption.c:1191 #, c-format msgid "Integer value '%s' for %s out of range" msgstr "%2$s(r)en '%1$s' osoko balioa barrutitik kanpo" -#: ../glib/goption.c:1142 +#: ../glib/goption.c:1148 #, c-format msgid "Cannot parse double value '%s' for %s" msgstr "Ezin da '%2$s'(r)en '%1$s' balio bikoitza analizatu" -#: ../glib/goption.c:1150 +#: ../glib/goption.c:1156 #, c-format msgid "Double value '%s' for %s out of range" msgstr "%2$s(r)en '%1$s' balio bikoitza barrutitik kanpo" -#: ../glib/goption.c:1436 ../glib/goption.c:1515 +#: ../glib/goption.c:1442 ../glib/goption.c:1521 #, c-format msgid "Error parsing option %s" msgstr "Errorea %s aukera analizatzean" -#: ../glib/goption.c:1546 ../glib/goption.c:1659 +#: ../glib/goption.c:1552 ../glib/goption.c:1665 #, c-format msgid "Missing argument for %s" msgstr "%s(e)ko argumentua falta da" -#: ../glib/goption.c:2120 +#: ../glib/goption.c:2126 #, c-format msgid "Unknown option %s" msgstr "%s aukera ezezaguna" @@ -4321,70 +4363,70 @@ msgstr "izena luzeegia da (*MARK), (*PRUNE), (*SKIP), edo (*THEN)-en" msgid "character value in \\u.... sequence is too large" msgstr "\\u sekuentziako karaktere-balioa luzeegia da" -#: ../glib/gregex.c:746 ../glib/gregex.c:1915 +#: ../glib/gregex.c:746 ../glib/gregex.c:1973 #, c-format msgid "Error while matching regular expression %s: %s" msgstr "Errorea %s adierazpen erregularra bilatzean: %s" -#: ../glib/gregex.c:1312 +#: ../glib/gregex.c:1317 msgid "PCRE library is compiled without UTF8 support" msgstr "PCRE liburutegia UTF8 euskarri gabe konpilatua" -#: ../glib/gregex.c:1316 +#: ../glib/gregex.c:1321 msgid "PCRE library is compiled without UTF8 properties support" msgstr "PCRE liburutegia UTF8 propietateen euskarri gabe konpilatua" -#: ../glib/gregex.c:1324 +#: ../glib/gregex.c:1329 msgid "PCRE library is compiled with incompatible options" msgstr "PCRE liburutegia aukera bateragarririk gabe konpilatua" -#: ../glib/gregex.c:1383 -#, c-format -msgid "Error while compiling regular expression %s at char %d: %s" -msgstr "Errorea %s adierazpen erregularra %d karakterean konpilatzean: %s" - -#: ../glib/gregex.c:1425 +#: ../glib/gregex.c:1358 #, c-format msgid "Error while optimizing regular expression %s: %s" msgstr "Errorea %s adierazpen erregularra optimizatzean: %s" -#: ../glib/gregex.c:2347 +#: ../glib/gregex.c:1438 +#, c-format +msgid "Error while compiling regular expression %s at char %d: %s" +msgstr "Errorea %s adierazpen erregularra %d karakterean konpilatzean: %s" + +#: ../glib/gregex.c:2409 msgid "hexadecimal digit or '}' expected" msgstr "digitu hamaseitarra edo '}' espero zen" -#: ../glib/gregex.c:2363 +#: ../glib/gregex.c:2425 msgid "hexadecimal digit expected" msgstr "digitu hamaseitarra espero zen" -#: ../glib/gregex.c:2403 +#: ../glib/gregex.c:2465 msgid "missing '<' in symbolic reference" msgstr "'<' falta da erreferentzia sinbolikoan" -#: ../glib/gregex.c:2412 +#: ../glib/gregex.c:2474 msgid "unfinished symbolic reference" msgstr "amaitu gabeko erreferentzia sinbolikoa" -#: ../glib/gregex.c:2419 +#: ../glib/gregex.c:2481 msgid "zero-length symbolic reference" msgstr "zero luzerako erreferentzia sinbolikoa" -#: ../glib/gregex.c:2430 +#: ../glib/gregex.c:2492 msgid "digit expected" msgstr "digitua espero zen" -#: ../glib/gregex.c:2448 +#: ../glib/gregex.c:2510 msgid "illegal symbolic reference" msgstr "erreferentzia sinboliko ilegala" -#: ../glib/gregex.c:2510 +#: ../glib/gregex.c:2572 msgid "stray final '\\'" msgstr "'\\' katearen amaieran" -#: ../glib/gregex.c:2514 +#: ../glib/gregex.c:2576 msgid "unknown escape sequence" msgstr "ihes-sekuentzi ezezaguna" -#: ../glib/gregex.c:2524 +#: ../glib/gregex.c:2586 #, c-format msgid "Error while parsing replacement text \"%s\" at char %lu: %s" msgstr "Errorea ordezko \"%s\" testua analizatzean %lu karakterean: %s" @@ -4429,62 +4471,62 @@ msgstr "Ustekabeko errorea select()-en, datuak prozesu umetik irakurtzen (%s)" msgid "Unexpected error in waitpid() (%s)" msgstr "Ustekabeko errorea waitpid()-en (%s)" -#: ../glib/gspawn.c:849 ../glib/gspawn-win32.c:1233 +#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233 #, c-format msgid "Child process exited with code %ld" msgstr "Prozesu umea amaitu da %ld kodearekin" -#: ../glib/gspawn.c:857 +#: ../glib/gspawn.c:852 #, c-format msgid "Child process killed by signal %ld" msgstr "Prozesu umea %ld seinaleak hilda" -#: ../glib/gspawn.c:864 +#: ../glib/gspawn.c:859 #, c-format msgid "Child process stopped by signal %ld" msgstr "Prozesu umea %ld seinaleak geldituta" -#: ../glib/gspawn.c:871 +#: ../glib/gspawn.c:866 #, c-format msgid "Child process exited abnormally" msgstr "Prozesu umea ustekabean amaituta" -#: ../glib/gspawn.c:1276 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 +#: ../glib/gspawn.c:1271 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 #, c-format msgid "Failed to read from child pipe (%s)" msgstr "Ezin izan da kanalizazio umetik irakurri (%s) " -#: ../glib/gspawn.c:1346 +#: ../glib/gspawn.c:1341 #, c-format msgid "Failed to fork (%s)" msgstr "Ezin da sardetu (%s)" -#: ../glib/gspawn.c:1495 ../glib/gspawn-win32.c:370 +#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370 #, c-format msgid "Failed to change to directory '%s' (%s)" msgstr "Ezin izan da '%s' direktoriora aldatu (%s)" -#: ../glib/gspawn.c:1505 +#: ../glib/gspawn.c:1500 #, c-format msgid "Failed to execute child process \"%s\" (%s)" msgstr "Ezin izan da \"%s\" prozesu umea exekutatu (%s)" -#: ../glib/gspawn.c:1515 +#: ../glib/gspawn.c:1510 #, c-format msgid "Failed to redirect output or input of child process (%s)" msgstr "Ezin izan da prozesu umearen irteera edo sarrera birbideratu (%s)" -#: ../glib/gspawn.c:1524 +#: ../glib/gspawn.c:1519 #, c-format msgid "Failed to fork child process (%s)" msgstr "Ezin izan da prozesu umea sardetu (%s)" -#: ../glib/gspawn.c:1532 +#: ../glib/gspawn.c:1527 #, c-format msgid "Unknown error executing child process \"%s\"" msgstr "Errore ezezaguna \"%s\" prozesu umea exekutatzean" -#: ../glib/gspawn.c:1556 +#: ../glib/gspawn.c:1551 #, c-format msgid "Failed to read enough data from child pid pipe (%s)" msgstr "Ezin izan da nahikoa datu irakurri pid kanalizazio umetik (%s)" @@ -4540,92 +4582,92 @@ msgstr "" "Ustekabeko errorea gertatu da 'g_io_channel_win32_poll()'-en prozesu umetik " "datuak irakurtzean" -#: ../glib/gutf8.c:780 +#: ../glib/gutf8.c:795 msgid "Failed to allocate memory" msgstr "Huts egin du memoria esleitzean" -#: ../glib/gutf8.c:912 +#: ../glib/gutf8.c:927 msgid "Character out of range for UTF-8" msgstr "Karakterea UTF-8 barrutitik kanpo" -#: ../glib/gutf8.c:1012 ../glib/gutf8.c:1021 ../glib/gutf8.c:1151 -#: ../glib/gutf8.c:1160 ../glib/gutf8.c:1299 ../glib/gutf8.c:1396 +#: ../glib/gutf8.c:1027 ../glib/gutf8.c:1036 ../glib/gutf8.c:1166 +#: ../glib/gutf8.c:1175 ../glib/gutf8.c:1314 ../glib/gutf8.c:1411 msgid "Invalid sequence in conversion input" msgstr "Sekuentzia baliogabea bihurketa-sarreran" -#: ../glib/gutf8.c:1310 ../glib/gutf8.c:1407 +#: ../glib/gutf8.c:1325 ../glib/gutf8.c:1422 msgid "Character out of range for UTF-16" msgstr "Karakterea UTF-16 barrutitik kanpo" -#: ../glib/gutils.c:2116 ../glib/gutils.c:2143 ../glib/gutils.c:2249 +#: ../glib/gutils.c:2118 ../glib/gutils.c:2145 ../glib/gutils.c:2251 #, c-format msgid "%u byte" msgid_plural "%u bytes" msgstr[0] "byte %u" msgstr[1] "%u byte" -#: ../glib/gutils.c:2122 +#: ../glib/gutils.c:2124 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" -#: ../glib/gutils.c:2124 +#: ../glib/gutils.c:2126 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" -#: ../glib/gutils.c:2127 +#: ../glib/gutils.c:2129 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" -#: ../glib/gutils.c:2130 +#: ../glib/gutils.c:2132 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" -#: ../glib/gutils.c:2133 +#: ../glib/gutils.c:2135 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" -#: ../glib/gutils.c:2136 +#: ../glib/gutils.c:2138 #, c-format msgid "%.1f EiB" msgstr "%.1f EiB" -#: ../glib/gutils.c:2149 +#: ../glib/gutils.c:2151 #, c-format msgid "%.1f kB" msgstr "%.1f kB" -#: ../glib/gutils.c:2152 ../glib/gutils.c:2267 +#: ../glib/gutils.c:2154 ../glib/gutils.c:2269 #, c-format msgid "%.1f MB" msgstr "%.1f MB" -#: ../glib/gutils.c:2155 ../glib/gutils.c:2272 +#: ../glib/gutils.c:2157 ../glib/gutils.c:2274 #, c-format msgid "%.1f GB" msgstr "%.1f GB" -#: ../glib/gutils.c:2157 ../glib/gutils.c:2277 +#: ../glib/gutils.c:2159 ../glib/gutils.c:2279 #, c-format msgid "%.1f TB" msgstr "%.1f TB" -#: ../glib/gutils.c:2160 ../glib/gutils.c:2282 +#: ../glib/gutils.c:2162 ../glib/gutils.c:2284 #, c-format msgid "%.1f PB" msgstr "%.1f PB" -#: ../glib/gutils.c:2163 ../glib/gutils.c:2287 +#: ../glib/gutils.c:2165 ../glib/gutils.c:2289 #, c-format msgid "%.1f EB" msgstr "%.1f EB" #. Translators: the %s in "%s bytes" will always be replaced by a number. -#: ../glib/gutils.c:2200 +#: ../glib/gutils.c:2202 #, c-format msgid "%s byte" msgid_plural "%s bytes" @@ -4637,11 +4679,27 @@ msgstr[1] "%s byte" #. * compatibility. Users will not see this string unless a program is using this deprecated function. #. * Please translate as literally as possible. #. -#: ../glib/gutils.c:2262 +#: ../glib/gutils.c:2264 #, c-format msgid "%.1f KB" msgstr "%.1f KB" +#~ msgid "Can't find application" +#~ msgstr "Ezin da aplikazioa aurkitu" + +#~ msgid "Error launching application: %s" +#~ msgstr "Errorea aplikazioa abiaraztean: %s" + +#~ msgid "association changes not supported on win32" +#~ msgstr "asoziazioaren aldaketak ez dira onartzen win32 sisteman" + +#~ msgid "Association creation not supported on win32" +#~ msgstr "Asoziazioa sortzea ez da onartzen win32 sisteman" + +#~ msgid "Unable to find default local directory monitor type" +#~ msgstr "" +#~ "Ezin da lokaleko direktorio lehenetsiaren monitorizazio mota aurkitu" + #~ msgid "URIs not supported" #~ msgstr "URIak ez daude onartuta" diff --git a/po/fa.gmo b/po/fa.gmo new file mode 100644 index 0000000000000000000000000000000000000000..4510c2ee31684ac38c3651f3ce62f4eadfd943f8 GIT binary patch literal 56429 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\n" "Language-Team: עברית <>\n" "Language: he\n" @@ -25,25 +25,29 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 2.91.6\n" -#: ../gio/gapplication.c:520 -msgid "Enter GApplication service mode (use from D-Bus service files)" -msgstr "Enter GApplication service mode (use from D-Bus service files)" - -#: ../gio/gapplication.c:525 +#: ../gio/gapplication.c:493 msgid "GApplication options" msgstr "GApplication options" -#: ../gio/gapplication.c:525 +#: ../gio/gapplication.c:493 msgid "Show GApplication options" msgstr "Show GApplication options" +#: ../gio/gapplication.c:538 +msgid "Enter GApplication service mode (use from D-Bus service files)" +msgstr "Enter GApplication service mode (use from D-Bus service files)" + +#: ../gio/gapplication.c:550 +msgid "Override the application's ID" +msgstr "Override the application's ID" + #: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46 -#: ../gio/gresource-tool.c:485 ../gio/gsettings-tool.c:521 +#: ../gio/gresource-tool.c:488 ../gio/gsettings-tool.c:512 msgid "Print help" msgstr "Print help" -#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:486 -#: ../gio/gresource-tool.c:554 +#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:489 +#: ../gio/gresource-tool.c:557 msgid "[COMMAND]" msgstr "[COMMAND]" @@ -51,7 +55,7 @@ msgstr "[COMMAND]" msgid "Print version" msgstr "Print version" -#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:527 +#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:518 msgid "Print version information and exit" msgstr "Print version information and exit" @@ -113,14 +117,14 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)" msgstr "Application identifier in D-Bus format (eg: org.example.viewer)" #: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589 -#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:492 -#: ../gio/gresource-tool.c:558 +#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:495 +#: ../gio/gresource-tool.c:561 msgid "FILE" msgstr "FILE" #: ../gio/gapplication-tool.c:72 -msgid "Optional relative or relative filenames, or URIs to open" -msgstr "Optional relative or relative filenames, or URIs to open" +msgid "Optional relative or absolute filenames, or URIs to open" +msgstr "Optional relative or absolute filenames, or URIs to open" #: ../gio/gapplication-tool.c:73 msgid "ACTION" @@ -138,8 +142,8 @@ msgstr "PARAMETER" msgid "Optional parameter to the action invocation, in GVariant format" msgstr "Optional parameter to the action invocation, in GVariant format" -#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:523 -#: ../gio/gsettings-tool.c:607 +#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526 +#: ../gio/gsettings-tool.c:598 #, c-format msgid "" "Unknown command %s\n" @@ -152,8 +156,8 @@ msgstr "" msgid "Usage:\n" msgstr "Usage:\n" -#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:548 -#: ../gio/gsettings-tool.c:641 +#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551 +#: ../gio/gsettings-tool.c:632 msgid "Arguments:\n" msgstr "Arguments:\n" @@ -254,9 +258,9 @@ msgstr "" "\n" #: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498 -#: ../gio/ginputstream.c:176 ../gio/ginputstream.c:376 -#: ../gio/ginputstream.c:614 ../gio/ginputstream.c:1013 -#: ../gio/goutputstream.c:200 ../gio/goutputstream.c:830 +#: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379 +#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1016 +#: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834 #: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206 #, c-format msgid "Too large count value passed to %s" @@ -271,8 +275,8 @@ msgstr "Seek not supported on base stream" msgid "Cannot truncate GBufferedInputStream" msgstr "Cannot truncate GBufferedInputStream" -#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1202 -#: ../gio/giostream.c:277 ../gio/goutputstream.c:1654 +#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1205 +#: ../gio/giostream.c:300 ../gio/goutputstream.c:1658 msgid "Stream is already closed" msgstr "Stream is already closed" @@ -280,10 +284,9 @@ msgstr "Stream is already closed" msgid "Truncate not supported on base stream" msgstr "Truncate not supported on base stream" -#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1896 -#: ../gio/gdbusconnection.c:1989 ../gio/gdbusprivate.c:1417 -#: ../gio/glocalfile.c:2181 ../gio/gsimpleasyncresult.c:830 -#: ../gio/gsimpleasyncresult.c:856 +#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1847 +#: ../gio/gdbusprivate.c:1375 ../gio/glocalfile.c:2220 +#: ../gio/gsimpleasyncresult.c:870 ../gio/gsimpleasyncresult.c:896 #, c-format msgid "Operation was cancelled" msgstr "Operation was cancelled" @@ -301,26 +304,26 @@ msgid "Not enough space in destination" msgstr "Not enough space in destination" #: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848 -#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 -#: ../glib/gconvert.c:845 ../glib/giochannel.c:1557 ../glib/giochannel.c:1599 -#: ../glib/giochannel.c:2443 ../glib/gutf8.c:837 ../glib/gutf8.c:1289 +#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438 ../glib/gconvert.c:845 +#: ../glib/giochannel.c:1556 ../glib/giochannel.c:1598 +#: ../glib/giochannel.c:2442 ../glib/gutf8.c:853 ../glib/gutf8.c:1306 msgid "Invalid byte sequence in conversion input" msgstr "Invalid byte sequence in conversion input" -#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 -#: ../glib/gconvert.c:770 ../glib/giochannel.c:1564 ../glib/giochannel.c:2455 +#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 ../glib/gconvert.c:770 +#: ../glib/giochannel.c:1563 ../glib/giochannel.c:2454 #, c-format msgid "Error during conversion: %s" msgstr "Error during conversion: %s" -#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:985 +#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1078 msgid "Cancellable initialization not supported" msgstr "Cancellable initialization not supported" # *** This file should not be translated to hebrew, please only copy the english text *** # *** Old hebrew ranslation is commented for backup sake *** #: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321 -#: ../glib/giochannel.c:1385 +#: ../glib/giochannel.c:1384 #, c-format msgid "Conversion from character set '%s' to '%s' is not supported" msgstr "Conversion from character set '%s' to '%s' is not supported" @@ -339,7 +342,7 @@ msgstr "%s type" msgid "Unknown type" msgstr "Unknown type" -#: ../gio/gcontenttype-win32.c:161 +#: ../gio/gcontenttype-win32.c:162 #, c-format msgid "%s filetype" msgstr "%s filetype" @@ -364,40 +367,40 @@ msgstr "Credentials spoofing is not possible on this OS" msgid "Unexpected early end-of-stream" msgstr "Unexpected early end-of-stream" -#: ../gio/gdbusaddress.c:148 ../gio/gdbusaddress.c:236 -#: ../gio/gdbusaddress.c:317 +#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241 +#: ../gio/gdbusaddress.c:322 #, c-format msgid "Unsupported key '%s' in address entry '%s'" msgstr "Unsupported key '%s' in address entry '%s'" -#: ../gio/gdbusaddress.c:175 +#: ../gio/gdbusaddress.c:180 #, c-format msgid "" "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" msgstr "" "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)" -#: ../gio/gdbusaddress.c:188 +#: ../gio/gdbusaddress.c:193 #, c-format msgid "Meaningless key/value pair combination in address entry '%s'" msgstr "Meaningless key/value pair combination in address entry '%s'" -#: ../gio/gdbusaddress.c:251 ../gio/gdbusaddress.c:332 +#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337 #, c-format msgid "Error in address '%s' - the port attribute is malformed" msgstr "Error in address '%s' - the port attribute is malformed" -#: ../gio/gdbusaddress.c:262 ../gio/gdbusaddress.c:343 +#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348 #, c-format msgid "Error in address '%s' - the family attribute is malformed" msgstr "Error in address '%s' - the family attribute is malformed" -#: ../gio/gdbusaddress.c:452 +#: ../gio/gdbusaddress.c:457 #, c-format msgid "Address element '%s' does not contain a colon (:)" msgstr "Address element '%s' does not contain a colon (:)" -#: ../gio/gdbusaddress.c:473 +#: ../gio/gdbusaddress.c:478 #, c-format msgid "" "Key/Value pair %d, '%s', in address element '%s' does not contain an equal " @@ -406,7 +409,7 @@ msgstr "" "Key/Value pair %d, '%s', in address element '%s' does not contain an equal " "sign" -#: ../gio/gdbusaddress.c:487 +#: ../gio/gdbusaddress.c:492 #, c-format msgid "" "Error unescaping key or value in Key/Value pair %d, '%s', in address element " @@ -415,7 +418,7 @@ msgstr "" "Error unescaping key or value in Key/Value pair %d, '%s', in address element " "'%s'" -#: ../gio/gdbusaddress.c:565 +#: ../gio/gdbusaddress.c:570 #, c-format msgid "" "Error in address '%s' - the unix transport requires exactly one of the keys " @@ -424,85 +427,85 @@ msgstr "" "Error in address '%s' - the unix transport requires exactly one of the keys " "'path' or 'abstract' to be set" -#: ../gio/gdbusaddress.c:601 +#: ../gio/gdbusaddress.c:606 #, c-format msgid "Error in address '%s' - the host attribute is missing or malformed" msgstr "Error in address '%s' - the host attribute is missing or malformed" -#: ../gio/gdbusaddress.c:615 +#: ../gio/gdbusaddress.c:620 #, c-format msgid "Error in address '%s' - the port attribute is missing or malformed" msgstr "Error in address '%s' - the port attribute is missing or malformed" -#: ../gio/gdbusaddress.c:629 +#: ../gio/gdbusaddress.c:634 #, c-format msgid "Error in address '%s' - the noncefile attribute is missing or malformed" msgstr "" "Error in address '%s' - the noncefile attribute is missing or malformed" -#: ../gio/gdbusaddress.c:650 +#: ../gio/gdbusaddress.c:655 msgid "Error auto-launching: " msgstr "Error auto-launching: " -#: ../gio/gdbusaddress.c:658 +#: ../gio/gdbusaddress.c:663 #, c-format msgid "Unknown or unsupported transport '%s' for address '%s'" msgstr "Unknown or unsupported transport '%s' for address '%s'" -#: ../gio/gdbusaddress.c:694 +#: ../gio/gdbusaddress.c:699 #, c-format msgid "Error opening nonce file '%s': %s" msgstr "Error opening nonce file '%s': %s" -#: ../gio/gdbusaddress.c:712 +#: ../gio/gdbusaddress.c:717 #, c-format msgid "Error reading from nonce file '%s': %s" msgstr "Error reading from nonce file '%s': %s" -#: ../gio/gdbusaddress.c:721 +#: ../gio/gdbusaddress.c:726 #, c-format msgid "Error reading from nonce file '%s', expected 16 bytes, got %d" msgstr "Error reading from nonce file '%s', expected 16 bytes, got %d" -#: ../gio/gdbusaddress.c:739 +#: ../gio/gdbusaddress.c:744 #, c-format msgid "Error writing contents of nonce file '%s' to stream:" msgstr "Error writing contents of nonce file '%s' to stream:" -#: ../gio/gdbusaddress.c:958 +#: ../gio/gdbusaddress.c:950 msgid "The given address is empty" msgstr "The given address is empty" -#: ../gio/gdbusaddress.c:1028 +#: ../gio/gdbusaddress.c:1063 #, c-format msgid "Cannot spawn a message bus when setuid" msgstr "Cannot spawn a message bus when setuid" -#: ../gio/gdbusaddress.c:1035 +#: ../gio/gdbusaddress.c:1070 msgid "Cannot spawn a message bus without a machine-id: " msgstr "Cannot spawn a message bus without a machine-id: " -#: ../gio/gdbusaddress.c:1077 +#: ../gio/gdbusaddress.c:1112 #, c-format msgid "Error spawning command line '%s': " msgstr "Error spawning command line '%s': " -#: ../gio/gdbusaddress.c:1294 +#: ../gio/gdbusaddress.c:1329 #, c-format msgid "(Type any character to close this window)\n" msgstr "(Type any character to close this window)\n" -#: ../gio/gdbusaddress.c:1425 +#: ../gio/gdbusaddress.c:1481 #, c-format msgid "Session dbus not running, and autolaunch failed" msgstr "Session dbus not running, and autolaunch failed" -#: ../gio/gdbusaddress.c:1446 +#: ../gio/gdbusaddress.c:1492 #, c-format msgid "Cannot determine session bus address (not implemented for this OS)" msgstr "Cannot determine session bus address (not implemented for this OS)" -#: ../gio/gdbusaddress.c:1546 ../gio/gdbusconnection.c:6931 +#: ../gio/gdbusaddress.c:1627 ../gio/gdbusconnection.c:7128 #, c-format msgid "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " @@ -511,7 +514,7 @@ msgstr "" "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable " "- unknown value '%s'" -#: ../gio/gdbusaddress.c:1555 ../gio/gdbusconnection.c:6940 +#: ../gio/gdbusaddress.c:1636 ../gio/gdbusconnection.c:7137 msgid "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" @@ -519,7 +522,7 @@ msgstr "" "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment " "variable is not set" -#: ../gio/gdbusaddress.c:1565 +#: ../gio/gdbusaddress.c:1646 #, c-format msgid "Unknown bus type %d" msgstr "Unknown bus type %d" @@ -619,87 +622,97 @@ msgstr "Error opening keyring '%s' for writing: " msgid "(Additionally, releasing the lock for '%s' also failed: %s) " msgstr "(Additionally, releasing the lock for '%s' also failed: %s) " -#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2455 +#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2373 msgid "The connection is closed" msgstr "The connection is closed" -#: ../gio/gdbusconnection.c:1942 +#: ../gio/gdbusconnection.c:1877 msgid "Timeout was reached" msgstr "Timeout was reached" -#: ../gio/gdbusconnection.c:2577 +#: ../gio/gdbusconnection.c:2495 msgid "" "Unsupported flags encountered when constructing a client-side connection" msgstr "" "Unsupported flags encountered when constructing a client-side connection" -#: ../gio/gdbusconnection.c:4157 ../gio/gdbusconnection.c:4504 +#: ../gio/gdbusconnection.c:4105 ../gio/gdbusconnection.c:4452 #, c-format msgid "" "No such interface 'org.freedesktop.DBus.Properties' on object at path %s" msgstr "" "No such interface 'org.freedesktop.DBus.Properties' on object at path %s" -#: ../gio/gdbusconnection.c:4299 +#: ../gio/gdbusconnection.c:4247 #, c-format msgid "No such property '%s'" msgstr "No such property '%s'" -#: ../gio/gdbusconnection.c:4311 +#: ../gio/gdbusconnection.c:4259 #, c-format msgid "Property '%s' is not readable" msgstr "Property '%s' is not readable" -#: ../gio/gdbusconnection.c:4322 +#: ../gio/gdbusconnection.c:4270 #, c-format msgid "Property '%s' is not writable" msgstr "Property '%s' is not writable" -#: ../gio/gdbusconnection.c:4342 +#: ../gio/gdbusconnection.c:4290 #, c-format msgid "Error setting property '%s': Expected type '%s' but got '%s'" msgstr "Error setting property '%s': Expected type '%s' but got '%s'" -#: ../gio/gdbusconnection.c:4447 ../gio/gdbusconnection.c:6371 +#: ../gio/gdbusconnection.c:4395 ../gio/gdbusconnection.c:6568 #, c-format msgid "No such interface '%s'" msgstr "No such interface '%s'" -#: ../gio/gdbusconnection.c:4655 +#: ../gio/gdbusconnection.c:4603 msgid "No such interface" msgstr "No such interface" -#: ../gio/gdbusconnection.c:4873 ../gio/gdbusconnection.c:6880 +#: ../gio/gdbusconnection.c:4821 ../gio/gdbusconnection.c:7077 #, c-format msgid "No such interface '%s' on object at path %s" msgstr "No such interface '%s' on object at path %s" -#: ../gio/gdbusconnection.c:4971 +#: ../gio/gdbusconnection.c:4919 #, c-format msgid "No such method '%s'" msgstr "No such method '%s'" -#: ../gio/gdbusconnection.c:5002 +#: ../gio/gdbusconnection.c:4950 #, c-format msgid "Type of message, '%s', does not match expected type '%s'" msgstr "Type of message, '%s', does not match expected type '%s'" -#: ../gio/gdbusconnection.c:5200 +#: ../gio/gdbusconnection.c:5148 #, c-format msgid "An object is already exported for the interface %s at %s" msgstr "An object is already exported for the interface %s at %s" -#: ../gio/gdbusconnection.c:5399 +#: ../gio/gdbusconnection.c:5374 +#, c-format +msgid "Unable to retrieve property %s.%s" +msgstr "Unable to retrieve property %s.%s" + +#: ../gio/gdbusconnection.c:5430 +#, c-format +msgid "Unable to set property %s.%s" +msgstr "Unable to set property %s.%s" + +#: ../gio/gdbusconnection.c:5606 #, c-format msgid "Method '%s' returned type '%s', but expected '%s'" msgstr "Method '%s' returned type '%s', but expected '%s'" -#: ../gio/gdbusconnection.c:6482 +#: ../gio/gdbusconnection.c:6679 #, c-format msgid "Method '%s' on interface '%s' with signature '%s' does not exist" msgstr "Method '%s' on interface '%s' with signature '%s' does not exist" -#: ../gio/gdbusconnection.c:6603 +#: ../gio/gdbusconnection.c:6800 #, c-format msgid "A subtree is already exported for %s" msgstr "A subtree is already exported for %s" @@ -877,35 +890,35 @@ msgstr "" msgid "Message body is empty but signature in the header field is '(%s)'" msgstr "Message body is empty but signature in the header field is '(%s)'" -#: ../gio/gdbusmessage.c:3280 +#: ../gio/gdbusmessage.c:3283 #, c-format msgid "Error return with body of type '%s'" msgstr "Error return with body of type '%s'" -#: ../gio/gdbusmessage.c:3288 +#: ../gio/gdbusmessage.c:3291 msgid "Error return with empty body" msgstr "Error return with empty body" -#: ../gio/gdbusprivate.c:2067 +#: ../gio/gdbusprivate.c:2036 #, c-format msgid "Unable to get Hardware profile: %s" msgstr "Unable to get Hardware profile: %s" -#: ../gio/gdbusprivate.c:2112 +#: ../gio/gdbusprivate.c:2081 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: " msgstr "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: " -#: ../gio/gdbusproxy.c:1630 +#: ../gio/gdbusproxy.c:1610 #, c-format msgid "Error calling StartServiceByName for %s: " msgstr "Error calling StartServiceByName for %s: " -#: ../gio/gdbusproxy.c:1653 +#: ../gio/gdbusproxy.c:1633 #, c-format msgid "Unexpected reply %d from StartServiceByName(\"%s\") method" msgstr "Unexpected reply %d from StartServiceByName(\"%s\") method" -#: ../gio/gdbusproxy.c:2754 ../gio/gdbusproxy.c:2891 +#: ../gio/gdbusproxy.c:2709 ../gio/gdbusproxy.c:2843 msgid "" "Cannot invoke method; proxy is for a well-known name without an owner and " "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag" @@ -957,56 +970,61 @@ msgstr "" "\n" "Use \"%s COMMAND --help\" to get help on each command.\n" -#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:220 ../gio/gdbus-tool.c:292 -#: ../gio/gdbus-tool.c:316 ../gio/gdbus-tool.c:705 ../gio/gdbus-tool.c:1031 -#: ../gio/gdbus-tool.c:1465 +#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:226 ../gio/gdbus-tool.c:298 +#: ../gio/gdbus-tool.c:322 ../gio/gdbus-tool.c:711 ../gio/gdbus-tool.c:1043 +#: ../gio/gdbus-tool.c:1477 #, c-format msgid "Error: %s\n" msgstr "Error: %s\n" -#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:233 ../gio/gdbus-tool.c:1481 +#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493 #, c-format msgid "Error parsing introspection XML: %s\n" msgstr "Error parsing introspection XML: %s\n" -#: ../gio/gdbus-tool.c:350 +#: ../gio/gdbus-tool.c:208 +#, c-format +msgid "Error: %s is not a valid name\n" +msgstr "Error: %s is not a valid name\n" + +#: ../gio/gdbus-tool.c:356 msgid "Connect to the system bus" msgstr "Connect to the system bus" -#: ../gio/gdbus-tool.c:351 +#: ../gio/gdbus-tool.c:357 msgid "Connect to the session bus" msgstr "Connect to the session bus" -#: ../gio/gdbus-tool.c:352 +#: ../gio/gdbus-tool.c:358 msgid "Connect to given D-Bus address" msgstr "Connect to given D-Bus address" -#: ../gio/gdbus-tool.c:362 +#: ../gio/gdbus-tool.c:368 msgid "Connection Endpoint Options:" msgstr "Connection Endpoint Options:" -#: ../gio/gdbus-tool.c:363 +#: ../gio/gdbus-tool.c:369 msgid "Options specifying the connection endpoint" msgstr "Options specifying the connection endpoint" -#: ../gio/gdbus-tool.c:385 +#: ../gio/gdbus-tool.c:391 #, c-format msgid "No connection endpoint specified" msgstr "No connection endpoint specified" -#: ../gio/gdbus-tool.c:395 +#: ../gio/gdbus-tool.c:401 #, c-format msgid "Multiple connection endpoints specified" msgstr "Multiple connection endpoints specified" -#: ../gio/gdbus-tool.c:465 +#: ../gio/gdbus-tool.c:471 #, c-format msgid "" "Warning: According to introspection data, interface '%s' does not exist\n" msgstr "" "Warning: According to introspection data, interface '%s' does not exist\n" -#: ../gio/gdbus-tool.c:474 +#: ../gio/gdbus-tool.c:480 #, c-format msgid "" "Warning: According to introspection data, method '%s' does not exist on " @@ -1015,189 +1033,193 @@ msgstr "" "Warning: According to introspection data, method '%s' does not exist on " "interface '%s'\n" -#: ../gio/gdbus-tool.c:536 +#: ../gio/gdbus-tool.c:542 msgid "Optional destination for signal (unique name)" msgstr "Optional destination for signal (unique name)" -#: ../gio/gdbus-tool.c:537 +#: ../gio/gdbus-tool.c:543 msgid "Object path to emit signal on" msgstr "Object path to emit signal on" -#: ../gio/gdbus-tool.c:538 +#: ../gio/gdbus-tool.c:544 msgid "Signal and interface name" msgstr "Signal and interface name" -#: ../gio/gdbus-tool.c:570 +#: ../gio/gdbus-tool.c:576 msgid "Emit a signal." msgstr "Emit a signal." -#: ../gio/gdbus-tool.c:604 ../gio/gdbus-tool.c:836 ../gio/gdbus-tool.c:1571 -#: ../gio/gdbus-tool.c:1799 +#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583 +#: ../gio/gdbus-tool.c:1818 #, c-format msgid "Error connecting: %s\n" msgstr "Error connecting: %s\n" -#: ../gio/gdbus-tool.c:616 +#: ../gio/gdbus-tool.c:622 #, c-format msgid "Error: object path not specified.\n" msgstr "Error: object path not specified.\n" -#: ../gio/gdbus-tool.c:621 ../gio/gdbus-tool.c:897 ../gio/gdbus-tool.c:1629 -#: ../gio/gdbus-tool.c:1858 +#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648 +#: ../gio/gdbus-tool.c:1884 #, c-format msgid "Error: %s is not a valid object path\n" msgstr "Error: %s is not a valid object path\n" -#: ../gio/gdbus-tool.c:627 +#: ../gio/gdbus-tool.c:633 #, c-format msgid "Error: signal not specified.\n" msgstr "Error: signal not specified.\n" -#: ../gio/gdbus-tool.c:634 +#: ../gio/gdbus-tool.c:640 #, c-format msgid "Error: signal must be the fully-qualified name.\n" msgstr "Error: signal must be the fully-qualified name.\n" -#: ../gio/gdbus-tool.c:642 +#: ../gio/gdbus-tool.c:648 #, c-format msgid "Error: %s is not a valid interface name\n" msgstr "Error: %s is not a valid interface name\n" -#: ../gio/gdbus-tool.c:648 +#: ../gio/gdbus-tool.c:654 #, c-format msgid "Error: %s is not a valid member name\n" msgstr "Error: %s is not a valid member name\n" -#: ../gio/gdbus-tool.c:654 +#: ../gio/gdbus-tool.c:660 #, c-format msgid "Error: %s is not a valid unique bus name.\n" msgstr "Error: %s is not a valid unique bus name.\n" #. Use the original non-"parse-me-harder" error -#: ../gio/gdbus-tool.c:681 ../gio/gdbus-tool.c:999 +#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011 #, c-format msgid "Error parsing parameter %d: %s\n" msgstr "Error parsing parameter %d: %s\n" -#: ../gio/gdbus-tool.c:712 +#: ../gio/gdbus-tool.c:718 #, c-format msgid "Error flushing connection: %s\n" msgstr "Error flushing connection: %s\n" -#: ../gio/gdbus-tool.c:739 +#: ../gio/gdbus-tool.c:745 msgid "Destination name to invoke method on" msgstr "Destination name to invoke method on" -#: ../gio/gdbus-tool.c:740 +#: ../gio/gdbus-tool.c:746 msgid "Object path to invoke method on" msgstr "Object path to invoke method on" -#: ../gio/gdbus-tool.c:741 +#: ../gio/gdbus-tool.c:747 msgid "Method and interface name" msgstr "Method and interface name" -#: ../gio/gdbus-tool.c:742 +#: ../gio/gdbus-tool.c:748 msgid "Timeout in seconds" msgstr "Timeout in seconds" -#: ../gio/gdbus-tool.c:781 +#: ../gio/gdbus-tool.c:787 msgid "Invoke a method on a remote object." msgstr "Invoke a method on a remote object." -#: ../gio/gdbus-tool.c:856 ../gio/gdbus-tool.c:1590 ../gio/gdbus-tool.c:1818 +#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837 #, c-format msgid "Error: Destination is not specified\n" msgstr "Error: Destination is not specified\n" -#: ../gio/gdbus-tool.c:877 ../gio/gdbus-tool.c:1609 +#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849 +#, c-format +msgid "Error: %s is not a valid bus name\n" +msgstr "Error: %s is not a valid bus name\n" + +#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628 #, c-format msgid "Error: Object path is not specified\n" msgstr "Error: Object path is not specified\n" -#: ../gio/gdbus-tool.c:912 +#: ../gio/gdbus-tool.c:924 #, c-format msgid "Error: Method name is not specified\n" msgstr "Error: Method name is not specified\n" -#: ../gio/gdbus-tool.c:923 +#: ../gio/gdbus-tool.c:935 #, c-format msgid "Error: Method name '%s' is invalid\n" msgstr "Error: Method name '%s' is invalid\n" -#: ../gio/gdbus-tool.c:991 +#: ../gio/gdbus-tool.c:1003 #, c-format msgid "Error parsing parameter %d of type '%s': %s\n" msgstr "Error parsing parameter %d of type '%s': %s\n" -#: ../gio/gdbus-tool.c:1428 +#: ../gio/gdbus-tool.c:1440 msgid "Destination name to introspect" msgstr "Destination name to introspect" -#: ../gio/gdbus-tool.c:1429 +#: ../gio/gdbus-tool.c:1441 msgid "Object path to introspect" msgstr "Object path to introspect" -#: ../gio/gdbus-tool.c:1430 +#: ../gio/gdbus-tool.c:1442 msgid "Print XML" msgstr "Print XML" -#: ../gio/gdbus-tool.c:1431 +#: ../gio/gdbus-tool.c:1443 msgid "Introspect children" msgstr "Introspect children" -#: ../gio/gdbus-tool.c:1432 +#: ../gio/gdbus-tool.c:1444 msgid "Only print properties" msgstr "Only print properties" -#: ../gio/gdbus-tool.c:1523 +#: ../gio/gdbus-tool.c:1535 msgid "Introspect a remote object." msgstr "Introspect a remote object." -#: ../gio/gdbus-tool.c:1721 +#: ../gio/gdbus-tool.c:1740 msgid "Destination name to monitor" msgstr "Destination name to monitor" -#: ../gio/gdbus-tool.c:1722 +#: ../gio/gdbus-tool.c:1741 msgid "Object path to monitor" msgstr "Object path to monitor" -#: ../gio/gdbus-tool.c:1751 +#: ../gio/gdbus-tool.c:1770 msgid "Monitor a remote object." msgstr "corrupted object" -#: ../gio/gdesktopappinfo.c:1999 ../gio/gdesktopappinfo.c:4523 -#: ../gio/gwin32appinfo.c:219 +#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4502 msgid "Unnamed" msgstr "Unnamed" -#: ../gio/gdesktopappinfo.c:2408 +#: ../gio/gdesktopappinfo.c:2402 msgid "Desktop file didn't specify Exec field" msgstr "Desktop file didn't specify Exec field" -#: ../gio/gdesktopappinfo.c:2693 +#: ../gio/gdesktopappinfo.c:2687 msgid "Unable to find terminal required for application" msgstr "Unable to find terminal required for application" -#: ../gio/gdesktopappinfo.c:3114 +#: ../gio/gdesktopappinfo.c:3099 #, c-format msgid "Can't create user application configuration folder %s: %s" msgstr "Can't create user application configuration folder %s: %s" -#: ../gio/gdesktopappinfo.c:3118 +#: ../gio/gdesktopappinfo.c:3103 #, c-format msgid "Can't create user MIME configuration folder %s: %s" msgstr "Can't create user MIME configuration folder %s: %s" -#: ../gio/gdesktopappinfo.c:3358 ../gio/gdesktopappinfo.c:3382 +#: ../gio/gdesktopappinfo.c:3343 ../gio/gdesktopappinfo.c:3367 msgid "Application information lacks an identifier" msgstr "Application information lacks an identifier" -#: ../gio/gdesktopappinfo.c:3615 +#: ../gio/gdesktopappinfo.c:3600 #, c-format msgid "Can't create user desktop file %s" msgstr "Can't create user desktop file %s" -#: ../gio/gdesktopappinfo.c:3749 +#: ../gio/gdesktopappinfo.c:3734 #, c-format msgid "Custom definition for %s" msgstr "Custom definition for %s" @@ -1225,11 +1247,15 @@ msgstr "drive doesn't implement start" msgid "drive doesn't implement stop" msgstr "drive doesn't implement stop" -#: ../gio/gdummytlsbackend.c:189 ../gio/gdummytlsbackend.c:311 -#: ../gio/gdummytlsbackend.c:401 +#: ../gio/gdummytlsbackend.c:195 ../gio/gdummytlsbackend.c:317 +#: ../gio/gdummytlsbackend.c:509 msgid "TLS support is not available" msgstr "TLS support is not available" +#: ../gio/gdummytlsbackend.c:419 +msgid "DTLS support is not available" +msgstr "DTLS support is not available" + #: ../gio/gemblem.c:323 #, c-format msgid "Can't handle version %d of GEmblem encoding" @@ -1254,14 +1280,14 @@ msgstr "Malformed number of tokens (%d) in GEmblemedIcon encoding" msgid "Expected a GEmblem for GEmblemedIcon" msgstr "Expected a GEmblem for GEmblemedIcon" -#: ../gio/gfile.c:962 ../gio/gfile.c:1200 ../gio/gfile.c:1338 -#: ../gio/gfile.c:1576 ../gio/gfile.c:1631 ../gio/gfile.c:1689 -#: ../gio/gfile.c:1773 ../gio/gfile.c:1830 ../gio/gfile.c:1894 -#: ../gio/gfile.c:1949 ../gio/gfile.c:3597 ../gio/gfile.c:3652 -#: ../gio/gfile.c:3859 ../gio/gfile.c:3901 ../gio/gfile.c:4364 -#: ../gio/gfile.c:4775 ../gio/gfile.c:4860 ../gio/gfile.c:4950 -#: ../gio/gfile.c:5047 ../gio/gfile.c:5134 ../gio/gfile.c:5235 -#: ../gio/gfile.c:7754 ../gio/gfile.c:7844 ../gio/gfile.c:7928 +#: ../gio/gfile.c:969 ../gio/gfile.c:1207 ../gio/gfile.c:1345 +#: ../gio/gfile.c:1583 ../gio/gfile.c:1638 ../gio/gfile.c:1696 +#: ../gio/gfile.c:1780 ../gio/gfile.c:1837 ../gio/gfile.c:1901 +#: ../gio/gfile.c:1956 ../gio/gfile.c:3604 ../gio/gfile.c:3659 +#: ../gio/gfile.c:3894 ../gio/gfile.c:3936 ../gio/gfile.c:4404 +#: ../gio/gfile.c:4815 ../gio/gfile.c:4900 ../gio/gfile.c:4990 +#: ../gio/gfile.c:5087 ../gio/gfile.c:5174 ../gio/gfile.c:5275 +#: ../gio/gfile.c:7796 ../gio/gfile.c:7886 ../gio/gfile.c:7970 #: ../gio/win32/gwinhttpfile.c:437 msgid "Operation not supported" msgstr "Operation not supported" @@ -1276,70 +1302,70 @@ msgstr "Operation not supported" #. Translators: This is an error message when trying to find #. * the enclosing (user visible) mount of a file, but none #. * exists. -#: ../gio/gfile.c:1461 ../gio/glocalfile.c:1103 ../gio/glocalfile.c:1114 -#: ../gio/glocalfile.c:1127 +#: ../gio/gfile.c:1468 ../gio/glocalfile.c:1134 ../gio/glocalfile.c:1145 +#: ../gio/glocalfile.c:1158 msgid "Containing mount does not exist" msgstr "Containing mount does not exist" -#: ../gio/gfile.c:2508 ../gio/glocalfile.c:2337 +#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2376 msgid "Can't copy over directory" msgstr "Can't copy over directory" -#: ../gio/gfile.c:2568 +#: ../gio/gfile.c:2575 msgid "Can't copy directory over directory" msgstr "Can't copy directory over directory" -#: ../gio/gfile.c:2576 ../gio/glocalfile.c:2346 +#: ../gio/gfile.c:2583 ../gio/glocalfile.c:2385 msgid "Target file exists" msgstr "Target file exists" -#: ../gio/gfile.c:2595 +#: ../gio/gfile.c:2602 msgid "Can't recursively copy directory" msgstr "Can't recursively copy directory" -#: ../gio/gfile.c:2877 +#: ../gio/gfile.c:2884 msgid "Splice not supported" msgstr "Symbolic links not supported" -#: ../gio/gfile.c:2881 +#: ../gio/gfile.c:2888 #, c-format msgid "Error splicing file: %s" msgstr "Error opening file: %s" -#: ../gio/gfile.c:3012 +#: ../gio/gfile.c:3019 msgid "Copy (reflink/clone) between mounts is not supported" msgstr "Copy (reflink/clone) between mounts is not supported" -#: ../gio/gfile.c:3016 +#: ../gio/gfile.c:3023 msgid "Copy (reflink/clone) is not supported or invalid" msgstr "Copy (reflink/clone) is not supported or invalid" -#: ../gio/gfile.c:3021 +#: ../gio/gfile.c:3028 msgid "Copy (reflink/clone) is not supported or didn't work" msgstr "Copy (reflink/clone) is not supported or didn't work" -#: ../gio/gfile.c:3084 +#: ../gio/gfile.c:3091 msgid "Can't copy special file" msgstr "Can't copy special file" -#: ../gio/gfile.c:3849 +#: ../gio/gfile.c:3884 msgid "Invalid symlink value given" msgstr "Invalid symlink value given" -#: ../gio/gfile.c:4010 +#: ../gio/gfile.c:4045 msgid "Trash not supported" msgstr "Trash not supported" -#: ../gio/gfile.c:4122 +#: ../gio/gfile.c:4157 #, c-format msgid "File names cannot contain '%c'" msgstr "File names cannot contain '%c'" -#: ../gio/gfile.c:6546 ../gio/gvolume.c:363 +#: ../gio/gfile.c:6586 ../gio/gvolume.c:363 msgid "volume doesn't implement mount" msgstr "volume doesn't implement mount" -#: ../gio/gfile.c:6655 +#: ../gio/gfile.c:6695 msgid "No application is registered as handling this file" msgstr "No application is registered as handling this file" @@ -1384,6 +1410,31 @@ msgstr "Truncate not allowed on input stream" msgid "Truncate not supported on stream" msgstr "Truncate not supported on stream" +#: ../gio/ghttpproxy.c:136 +msgid "Bad HTTP proxy reply" +msgstr "Bad HTTP proxy reply" + +#: ../gio/ghttpproxy.c:152 +msgid "HTTP proxy connection not allowed" +msgstr "HTTP proxy connection not allowed" + +#: ../gio/ghttpproxy.c:157 +msgid "HTTP proxy authentication failed" +msgstr "HTTP proxy authentication failed" + +#: ../gio/ghttpproxy.c:160 +msgid "HTTP proxy authentication required" +msgstr "HTTP proxy authentication required" + +#: ../gio/ghttpproxy.c:164 +#, c-format +msgid "HTTP proxy connection failed: %i" +msgstr "HTTP proxy connection failed: %i" + +#: ../gio/ghttpproxy.c:260 +msgid "HTTP proxy server closed connection unexpectedly." +msgstr "HTTP proxy server closed connection unexpectedly." + #: ../gio/gicon.c:290 #, c-format msgid "Wrong number of tokens (%d)" @@ -1436,16 +1487,16 @@ msgstr "Address has bits set beyond prefix length" msgid "Could not parse '%s' as IP address mask" msgstr "Could not parse '%s' as IP address mask" -#: ../gio/ginetsocketaddress.c:196 ../gio/ginetsocketaddress.c:213 -#: ../gio/gunixsocketaddress.c:209 +#: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220 +#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:216 msgid "Not enough space for socket address" msgstr "Not enough space for socket address" -#: ../gio/ginetsocketaddress.c:228 +#: ../gio/ginetsocketaddress.c:235 msgid "Unsupported socket address" msgstr "Unsupported socket address" -#: ../gio/ginputstream.c:185 +#: ../gio/ginputstream.c:188 msgid "Input stream doesn't implement read" msgstr "Input stream doesn't implement read" @@ -1455,12 +1506,12 @@ msgstr "Input stream doesn't implement read" #. Translators: This is an error you get if there is #. * already an operation running against this stream when #. * you try to start one -#: ../gio/ginputstream.c:1212 ../gio/giostream.c:287 -#: ../gio/goutputstream.c:1664 +#: ../gio/ginputstream.c:1215 ../gio/giostream.c:310 +#: ../gio/goutputstream.c:1668 msgid "Stream has outstanding operation" msgstr "Stream has outstanding operation" -#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1447 +#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1485 #, c-format msgid "Element <%s> not allowed inside <%s>" msgstr "Element <%s> not allowed inside <%s>" @@ -1505,7 +1556,7 @@ msgstr "Error reading file %s: %s" msgid "Error compressing file %s" msgstr "Error compressing file %s" -#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1559 +#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1597 #, c-format msgid "text may not appear inside <%s>" msgstr "text may not appear inside <%s>" @@ -1522,8 +1573,8 @@ msgstr "" "The directories where files are to be read from (default to current " "directory)" -#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:1988 -#: ../gio/glib-compile-schemas.c:2017 +#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2030 +#: ../gio/glib-compile-schemas.c:2059 msgid "DIRECTORY" msgstr "DIRECTORY" @@ -1572,16 +1623,16 @@ msgstr "" msgid "You should give exactly one file name\n" msgstr "You should give exactly one file name\n" -#: ../gio/glib-compile-schemas.c:772 +#: ../gio/glib-compile-schemas.c:784 msgid "empty names are not permitted" msgstr "empty names are not permitted" -#: ../gio/glib-compile-schemas.c:782 +#: ../gio/glib-compile-schemas.c:794 #, c-format msgid "invalid name '%s': names must begin with a lowercase letter" msgstr "invalid name '%s': names must begin with a lowercase letter" -#: ../gio/glib-compile-schemas.c:794 +#: ../gio/glib-compile-schemas.c:806 #, c-format msgid "" "invalid name '%s': invalid character '%c'; only lowercase letters, numbers " @@ -1590,36 +1641,36 @@ msgstr "" "invalid name '%s': invalid character '%c'; only lowercase letters, numbers " "and hyphen ('-') are permitted." -#: ../gio/glib-compile-schemas.c:803 +#: ../gio/glib-compile-schemas.c:815 #, c-format msgid "invalid name '%s': two successive hyphens ('--') are not permitted." msgstr "invalid name '%s': two successive hyphens ('--') are not permitted." -#: ../gio/glib-compile-schemas.c:812 +#: ../gio/glib-compile-schemas.c:824 #, c-format msgid "invalid name '%s': the last character may not be a hyphen ('-')." msgstr "invalid name '%s': the last character may not be a hyphen ('-')." -#: ../gio/glib-compile-schemas.c:820 +#: ../gio/glib-compile-schemas.c:832 #, c-format msgid "invalid name '%s': maximum length is 1024" msgstr "invalid name '%s': maximum length is 1024" -#: ../gio/glib-compile-schemas.c:889 +#: ../gio/glib-compile-schemas.c:901 #, c-format msgid " already specified" msgstr " already specified" -#: ../gio/glib-compile-schemas.c:915 +#: ../gio/glib-compile-schemas.c:927 msgid "cannot add keys to a 'list-of' schema" msgstr "cannot add keys to a 'list-of' schema" -#: ../gio/glib-compile-schemas.c:926 +#: ../gio/glib-compile-schemas.c:938 #, c-format msgid " already specified" msgstr " already specified" -#: ../gio/glib-compile-schemas.c:944 +#: ../gio/glib-compile-schemas.c:956 #, c-format msgid "" " shadows in ; use " @@ -1628,7 +1679,7 @@ msgstr "" " shadows in ; use " "to modify value" -#: ../gio/glib-compile-schemas.c:955 +#: ../gio/glib-compile-schemas.c:967 #, c-format msgid "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " @@ -1637,63 +1688,63 @@ msgstr "" "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute " "to " -#: ../gio/glib-compile-schemas.c:974 +#: ../gio/glib-compile-schemas.c:986 #, c-format msgid "<%s id='%s'> not (yet) defined." msgstr "<%s id='%s'> not (yet) defined." -#: ../gio/glib-compile-schemas.c:989 +#: ../gio/glib-compile-schemas.c:1001 #, c-format msgid "invalid GVariant type string '%s'" msgstr "invalid GVariant type string '%s'" -#: ../gio/glib-compile-schemas.c:1019 +#: ../gio/glib-compile-schemas.c:1031 msgid " given but schema isn't extending anything" msgstr " given but schema isn't extending anything" -#: ../gio/glib-compile-schemas.c:1032 +#: ../gio/glib-compile-schemas.c:1044 #, c-format msgid "no to override" msgstr "no to override" -#: ../gio/glib-compile-schemas.c:1040 +#: ../gio/glib-compile-schemas.c:1052 #, c-format msgid " already specified" msgstr " already specified" -#: ../gio/glib-compile-schemas.c:1111 +#: ../gio/glib-compile-schemas.c:1125 #, c-format msgid " already specified" msgstr " already specified" -#: ../gio/glib-compile-schemas.c:1123 +#: ../gio/glib-compile-schemas.c:1137 #, c-format msgid " extends not yet existing schema '%s'" msgstr " extends not yet existing schema '%s'" -#: ../gio/glib-compile-schemas.c:1139 +#: ../gio/glib-compile-schemas.c:1153 #, c-format msgid " is list of not yet existing schema '%s'" msgstr " is list of not yet existing schema '%s'" -#: ../gio/glib-compile-schemas.c:1147 +#: ../gio/glib-compile-schemas.c:1161 #, c-format msgid "Can not be a list of a schema with a path" msgstr "Can not be a list of a schema with a path" -#: ../gio/glib-compile-schemas.c:1157 +#: ../gio/glib-compile-schemas.c:1171 #, c-format msgid "Can not extend a schema with a path" msgstr "Can not extend a schema with a path" -#: ../gio/glib-compile-schemas.c:1167 +#: ../gio/glib-compile-schemas.c:1181 #, c-format msgid "" " is a list, extending which is not a list" msgstr "" " is a list, extending which is not a list" -#: ../gio/glib-compile-schemas.c:1177 +#: ../gio/glib-compile-schemas.c:1191 #, c-format msgid "" " extends but '%s' " @@ -1702,73 +1753,78 @@ msgstr "" " extends but '%s' " "does not extend '%s'" -#: ../gio/glib-compile-schemas.c:1194 +#: ../gio/glib-compile-schemas.c:1208 #, c-format msgid "a path, if given, must begin and end with a slash" msgstr "a path, if given, must begin and end with a slash" -#: ../gio/glib-compile-schemas.c:1201 +#: ../gio/glib-compile-schemas.c:1215 #, c-format msgid "the path of a list must end with ':/'" msgstr "the path of a list must end with ':/'" -#: ../gio/glib-compile-schemas.c:1227 +#: ../gio/glib-compile-schemas.c:1241 #, c-format msgid "<%s id='%s'> already specified" msgstr "<%s id='%s'> already specified" -#: ../gio/glib-compile-schemas.c:1451 +#: ../gio/glib-compile-schemas.c:1391 ../gio/glib-compile-schemas.c:1407 +#, c-format +msgid "Only one <%s> element allowed inside <%s>" +msgstr "Only one <%s> element allowed inside <%s>" + +#: ../gio/glib-compile-schemas.c:1489 #, c-format msgid "Element <%s> not allowed at the top level" msgstr "Element <%s> not allowed at the top level" #. Translators: Do not translate "--strict". -#: ../gio/glib-compile-schemas.c:1746 ../gio/glib-compile-schemas.c:1817 -#: ../gio/glib-compile-schemas.c:1893 +#: ../gio/glib-compile-schemas.c:1788 ../gio/glib-compile-schemas.c:1859 +#: ../gio/glib-compile-schemas.c:1935 #, c-format msgid "--strict was specified; exiting.\n" msgstr "--strict was specified; exiting.\n" -#: ../gio/glib-compile-schemas.c:1754 +#: ../gio/glib-compile-schemas.c:1796 #, c-format msgid "This entire file has been ignored.\n" msgstr "This entire file has been ignored.\n" -#: ../gio/glib-compile-schemas.c:1813 +#: ../gio/glib-compile-schemas.c:1855 #, c-format msgid "Ignoring this file.\n" msgstr "Ignoring this file.\n" -#: ../gio/glib-compile-schemas.c:1853 +#: ../gio/glib-compile-schemas.c:1895 #, c-format msgid "No such key '%s' in schema '%s' as specified in override file '%s'" msgstr "No such key '%s' in schema '%s' as specified in override file '%s'" -#: ../gio/glib-compile-schemas.c:1859 ../gio/glib-compile-schemas.c:1917 -#: ../gio/glib-compile-schemas.c:1945 +#: ../gio/glib-compile-schemas.c:1901 ../gio/glib-compile-schemas.c:1959 +#: ../gio/glib-compile-schemas.c:1987 #, c-format msgid "; ignoring override for this key.\n" msgstr "; ignoring override for this key.\n" -#: ../gio/glib-compile-schemas.c:1863 ../gio/glib-compile-schemas.c:1921 -#: ../gio/glib-compile-schemas.c:1949 +#: ../gio/glib-compile-schemas.c:1905 ../gio/glib-compile-schemas.c:1963 +#: ../gio/glib-compile-schemas.c:1991 #, c-format msgid " and --strict was specified; exiting.\n" msgstr " and --strict was specified; exiting.\n" -#: ../gio/glib-compile-schemas.c:1879 +#: ../gio/glib-compile-schemas.c:1921 #, c-format msgid "" "error parsing key '%s' in schema '%s' as specified in override file '%s': %s." msgstr "" "error parsing key '%s' in schema '%s' as specified in override file '%s': %s." -#: ../gio/glib-compile-schemas.c:1889 +#: ../gio/glib-compile-schemas.c:1931 #, c-format msgid "Ignoring override for this key.\n" msgstr "Ignoring override for this key.\n" -#: ../gio/glib-compile-schemas.c:1907 +#: ../gio/glib-compile-schemas.c:1949 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is outside the " @@ -1777,7 +1833,7 @@ msgstr "" "override for key '%s' in schema '%s' in override file '%s' is outside the " "range given in the schema" -#: ../gio/glib-compile-schemas.c:1935 +#: ../gio/glib-compile-schemas.c:1977 #, c-format msgid "" "override for key '%s' in schema '%s' in override file '%s' is not in the " @@ -1786,23 +1842,23 @@ msgstr "" "override for key '%s' in schema '%s' in override file '%s' is not in the " "list of valid choices" -#: ../gio/glib-compile-schemas.c:1988 +#: ../gio/glib-compile-schemas.c:2030 msgid "where to store the gschemas.compiled file" msgstr "where to store the gschemas.compiled file" -#: ../gio/glib-compile-schemas.c:1989 +#: ../gio/glib-compile-schemas.c:2031 msgid "Abort on any errors in schemas" msgstr "Abort on any errors in schemas" -#: ../gio/glib-compile-schemas.c:1990 +#: ../gio/glib-compile-schemas.c:2032 msgid "Do not write the gschema.compiled file" msgstr "Do not write the gschema.compiled file" -#: ../gio/glib-compile-schemas.c:1991 +#: ../gio/glib-compile-schemas.c:2033 msgid "Do not enforce key name restrictions" msgstr "Do not enforce key name restrictions" -#: ../gio/glib-compile-schemas.c:2020 +#: ../gio/glib-compile-schemas.c:2062 msgid "" "Compile all GSettings schema files into a schema cache.\n" "Schema files are required to have the extension .gschema.xml,\n" @@ -1812,145 +1868,141 @@ msgstr "" "Schema files are required to have the extension .gschema.xml,\n" "and the cache file is called gschemas.compiled." -#: ../gio/glib-compile-schemas.c:2036 +#: ../gio/glib-compile-schemas.c:2078 #, c-format msgid "You should give exactly one directory name\n" msgstr "You should give exactly one directory name\n" -#: ../gio/glib-compile-schemas.c:2075 +#: ../gio/glib-compile-schemas.c:2117 #, c-format msgid "No schema files found: " msgstr "No schema files found: " -#: ../gio/glib-compile-schemas.c:2078 +#: ../gio/glib-compile-schemas.c:2120 #, c-format msgid "doing nothing.\n" msgstr "doing nothing.\n" -#: ../gio/glib-compile-schemas.c:2081 +#: ../gio/glib-compile-schemas.c:2123 #, c-format msgid "removed existing output file.\n" msgstr "removed existing output file.\n" -#: ../gio/glocaldirectorymonitor.c:224 -msgid "Unable to find default local directory monitor type" -msgstr "Unable to find default local directory monitor type" - -#: ../gio/glocalfile.c:604 ../gio/win32/gwinhttpfile.c:420 +#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420 #, c-format msgid "Invalid filename %s" msgstr "Invalid filename %s" -#: ../gio/glocalfile.c:981 +#: ../gio/glocalfile.c:1012 #, c-format msgid "Error getting filesystem info: %s" msgstr "Error getting filesystem info: %s" -#: ../gio/glocalfile.c:1149 +#: ../gio/glocalfile.c:1180 msgid "Can't rename root directory" msgstr "Can't rename root directory" -#: ../gio/glocalfile.c:1169 ../gio/glocalfile.c:1195 +#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226 #, c-format msgid "Error renaming file: %s" msgstr "Error renaming file: %s" -#: ../gio/glocalfile.c:1178 +#: ../gio/glocalfile.c:1209 msgid "Can't rename file, filename already exists" msgstr "Can't rename file, filename already exists" -#: ../gio/glocalfile.c:1191 ../gio/glocalfile.c:2210 ../gio/glocalfile.c:2239 -#: ../gio/glocalfile.c:2399 ../gio/glocalfileoutputstream.c:549 +#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2249 ../gio/glocalfile.c:2278 +#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549 msgid "Invalid filename" msgstr "Invalid filename" -#: ../gio/glocalfile.c:1358 ../gio/glocalfile.c:1382 +#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413 msgid "Can't open directory" msgstr "Can't open directory" -#: ../gio/glocalfile.c:1366 +#: ../gio/glocalfile.c:1397 #, c-format msgid "Error opening file: %s" msgstr "Error opening file: %s" -#: ../gio/glocalfile.c:1507 +#: ../gio/glocalfile.c:1538 #, c-format msgid "Error removing file: %s" msgstr "Error removing file: %s" -#: ../gio/glocalfile.c:1887 +#: ../gio/glocalfile.c:1922 #, c-format msgid "Error trashing file: %s" msgstr "Error trashing file: %s" -#: ../gio/glocalfile.c:1910 +#: ../gio/glocalfile.c:1945 #, c-format msgid "Unable to create trash dir %s: %s" msgstr "Unable to create trash dir %s: %s" -#: ../gio/glocalfile.c:1931 +#: ../gio/glocalfile.c:1966 msgid "Unable to find toplevel directory for trash" msgstr "Unable to find toplevel directory for trash" -#: ../gio/glocalfile.c:2010 ../gio/glocalfile.c:2030 +#: ../gio/glocalfile.c:2045 ../gio/glocalfile.c:2065 msgid "Unable to find or create trash directory" msgstr "Unable to find or create trash directory" -#: ../gio/glocalfile.c:2064 +#: ../gio/glocalfile.c:2099 #, c-format msgid "Unable to create trashing info file: %s" msgstr "Unable to create trashing info file: %s" -#: ../gio/glocalfile.c:2095 ../gio/glocalfile.c:2100 ../gio/glocalfile.c:2180 -#: ../gio/glocalfile.c:2187 +#: ../gio/glocalfile.c:2157 ../gio/glocalfile.c:2162 ../gio/glocalfile.c:2219 +#: ../gio/glocalfile.c:2226 #, c-format msgid "Unable to trash file: %s" msgstr "Unable to trash file: %s" -#: ../gio/glocalfile.c:2188 ../glib/gregex.c:281 +#: ../gio/glocalfile.c:2227 ../glib/gregex.c:281 msgid "internal error" msgstr "internal error" -#: ../gio/glocalfile.c:2214 +#: ../gio/glocalfile.c:2253 #, c-format msgid "Error creating directory: %s" msgstr "Error creating directory: %s" -#: ../gio/glocalfile.c:2243 +#: ../gio/glocalfile.c:2282 #, c-format msgid "Filesystem does not support symbolic links" msgstr "Filesystem does not support symbolic links" -#: ../gio/glocalfile.c:2247 +#: ../gio/glocalfile.c:2286 #, c-format msgid "Error making symbolic link: %s" msgstr "Error making symbolic link: %s" -#: ../gio/glocalfile.c:2309 ../gio/glocalfile.c:2403 +#: ../gio/glocalfile.c:2348 ../gio/glocalfile.c:2442 #, c-format msgid "Error moving file: %s" msgstr "Error moving file: %s" -#: ../gio/glocalfile.c:2332 +#: ../gio/glocalfile.c:2371 msgid "Can't move directory over directory" msgstr "Can't move directory over directory" -#: ../gio/glocalfile.c:2359 ../gio/glocalfileoutputstream.c:925 +#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:925 #: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954 #: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984 msgid "Backup file creation failed" msgstr "Backup file creation failed" -#: ../gio/glocalfile.c:2378 +#: ../gio/glocalfile.c:2417 #, c-format msgid "Error removing target file: %s" msgstr "Error removing target file: %s" -#: ../gio/glocalfile.c:2392 +#: ../gio/glocalfile.c:2431 msgid "Move between mounts not supported" msgstr "Move between mounts not supported" -#: ../gio/glocalfile.c:2603 +#: ../gio/glocalfile.c:2623 #, c-format msgid "Could not determine the disk usage of %s: %s" msgstr "Could not determine the disk usage of %s: %s" @@ -1972,80 +2024,80 @@ msgstr "Invalid extended attribute name" msgid "Error setting extended attribute '%s': %s" msgstr "Error setting extended attribute '%s': %s" -#: ../gio/glocalfileinfo.c:1556 +#: ../gio/glocalfileinfo.c:1575 msgid " (invalid encoding)" msgstr " (invalid encoding)" -#: ../gio/glocalfileinfo.c:1747 ../gio/glocalfileoutputstream.c:803 +#: ../gio/glocalfileinfo.c:1766 ../gio/glocalfileoutputstream.c:803 #, c-format msgid "Error when getting information for file '%s': %s" msgstr "Error when getting information for file '%s': %s" -#: ../gio/glocalfileinfo.c:1998 +#: ../gio/glocalfileinfo.c:2017 #, c-format msgid "Error when getting information for file descriptor: %s" msgstr "Error when getting information for file descriptor: %s" -#: ../gio/glocalfileinfo.c:2043 +#: ../gio/glocalfileinfo.c:2062 msgid "Invalid attribute type (uint32 expected)" msgstr "Invalid attribute type (uint32 expected)" -#: ../gio/glocalfileinfo.c:2061 +#: ../gio/glocalfileinfo.c:2080 msgid "Invalid attribute type (uint64 expected)" msgstr "Invalid attribute type (uint64 expected)" -#: ../gio/glocalfileinfo.c:2080 ../gio/glocalfileinfo.c:2099 +#: ../gio/glocalfileinfo.c:2099 ../gio/glocalfileinfo.c:2118 msgid "Invalid attribute type (byte string expected)" msgstr "Invalid attribute type (byte string expected)" -#: ../gio/glocalfileinfo.c:2134 +#: ../gio/glocalfileinfo.c:2153 msgid "Cannot set permissions on symlinks" msgstr "Cannot set permissions on symlinks" -#: ../gio/glocalfileinfo.c:2150 +#: ../gio/glocalfileinfo.c:2169 #, c-format msgid "Error setting permissions: %s" msgstr "Error setting permissions: %s" -#: ../gio/glocalfileinfo.c:2201 +#: ../gio/glocalfileinfo.c:2220 #, c-format msgid "Error setting owner: %s" msgstr "Error setting owner: %s" -#: ../gio/glocalfileinfo.c:2224 +#: ../gio/glocalfileinfo.c:2243 msgid "symlink must be non-NULL" msgstr "symlink must be non-NULL" -#: ../gio/glocalfileinfo.c:2234 ../gio/glocalfileinfo.c:2253 -#: ../gio/glocalfileinfo.c:2264 +#: ../gio/glocalfileinfo.c:2253 ../gio/glocalfileinfo.c:2272 +#: ../gio/glocalfileinfo.c:2283 #, c-format msgid "Error setting symlink: %s" msgstr "Error setting symlink: %s" -#: ../gio/glocalfileinfo.c:2243 +#: ../gio/glocalfileinfo.c:2262 msgid "Error setting symlink: file is not a symlink" msgstr "Error setting symlink: file is not a symlink" -#: ../gio/glocalfileinfo.c:2369 +#: ../gio/glocalfileinfo.c:2388 #, c-format msgid "Error setting modification or access time: %s" msgstr "Error setting modification or access time: %s" # c-format -#: ../gio/glocalfileinfo.c:2392 +#: ../gio/glocalfileinfo.c:2411 msgid "SELinux context must be non-NULL" msgstr "SELinux context must be non-NULL" -#: ../gio/glocalfileinfo.c:2407 +#: ../gio/glocalfileinfo.c:2426 #, c-format msgid "Error setting SELinux context: %s" msgstr "Error setting SELinux context: %s" -#: ../gio/glocalfileinfo.c:2414 +#: ../gio/glocalfileinfo.c:2433 msgid "SELinux is not enabled on this system" msgstr "SELinux is not enabled on this system" -#: ../gio/glocalfileinfo.c:2506 +#: ../gio/glocalfileinfo.c:2525 #, c-format msgid "Setting attribute %s not supported" msgstr "Setting attribute %s not supported" @@ -2068,7 +2120,7 @@ msgstr "Error seeking in file: %s" msgid "Error closing file: %s" msgstr "Error closing file: %s" -#: ../gio/glocalfilemonitor.c:145 +#: ../gio/glocalfilemonitor.c:840 msgid "Unable to find default local file monitor type" msgstr "Unable to find default local file monitor type" @@ -2121,7 +2173,7 @@ msgstr "The file was externally modified" msgid "Error removing old file: %s" msgstr "Error removing old file: %s" -#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:769 +#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:771 msgid "Invalid GSeekType supplied" msgstr "Invalid GSeekType supplied" @@ -2133,15 +2185,15 @@ msgstr "Invalid seek request" msgid "Cannot truncate GMemoryInputStream" msgstr "Cannot truncate GMemoryInputStream" -#: ../gio/gmemoryoutputstream.c:565 +#: ../gio/gmemoryoutputstream.c:567 msgid "Memory output stream not resizable" msgstr "Memory output stream not resizable" -#: ../gio/gmemoryoutputstream.c:581 +#: ../gio/gmemoryoutputstream.c:583 msgid "Failed to resize memory output stream" msgstr "Failed to resize memory output stream" -#: ../gio/gmemoryoutputstream.c:671 +#: ../gio/gmemoryoutputstream.c:673 msgid "" "Amount of memory required to process the write is larger than available " "address space" @@ -2149,11 +2201,11 @@ msgstr "" "Amount of memory required to process the write is larger than available " "address space" -#: ../gio/gmemoryoutputstream.c:779 +#: ../gio/gmemoryoutputstream.c:781 msgid "Requested seek before the beginning of the stream" msgstr "Requested seek before the beginning of the stream" -#: ../gio/gmemoryoutputstream.c:794 +#: ../gio/gmemoryoutputstream.c:796 msgid "Requested seek beyond the end of the stream" msgstr "Requested seek beyond the end of the stream" @@ -2206,16 +2258,16 @@ msgstr "mount doesn't implement content type guessing" msgid "mount doesn't implement synchronous content type guessing" msgstr "mount doesn't implement synchronous content type guessing" -#: ../gio/gnetworkaddress.c:383 +#: ../gio/gnetworkaddress.c:378 #, c-format msgid "Hostname '%s' contains '[' but not ']'" msgstr "Hostname '%s' contains '[' but not ']'" -#: ../gio/gnetworkmonitorbase.c:199 ../gio/gnetworkmonitorbase.c:302 +#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:309 msgid "Network unreachable" msgstr "Network unreachable" -#: ../gio/gnetworkmonitorbase.c:237 ../gio/gnetworkmonitorbase.c:267 +#: ../gio/gnetworkmonitorbase.c:244 ../gio/gnetworkmonitorbase.c:274 msgid "Host unreachable" msgstr "Host unreachable" @@ -2233,52 +2285,52 @@ msgstr "Could not create network monitor: " msgid "Could not get network status: " msgstr "Could not get network status: " -#: ../gio/gnetworkmonitornm.c:263 +#: ../gio/gnetworkmonitornm.c:326 #, c-format msgid "NetworkManager version too old" msgstr "NetworkManager version too old" -#: ../gio/goutputstream.c:209 ../gio/goutputstream.c:557 +#: ../gio/goutputstream.c:212 ../gio/goutputstream.c:560 msgid "Output stream doesn't implement write" msgstr "Output stream doesn't implement write" -#: ../gio/goutputstream.c:518 ../gio/goutputstream.c:1218 +#: ../gio/goutputstream.c:521 ../gio/goutputstream.c:1222 msgid "Source stream is already closed" msgstr "Source stream is already closed" -#: ../gio/gresolver.c:320 ../gio/gthreadedresolver.c:116 +#: ../gio/gresolver.c:330 ../gio/gthreadedresolver.c:116 #: ../gio/gthreadedresolver.c:126 #, c-format msgid "Error resolving '%s': %s" msgstr "Error resolving '%s': %s" -#: ../gio/gresource.c:291 ../gio/gresource.c:539 ../gio/gresource.c:556 -#: ../gio/gresource.c:677 ../gio/gresource.c:746 ../gio/gresource.c:807 -#: ../gio/gresource.c:887 ../gio/gresourcefile.c:452 -#: ../gio/gresourcefile.c:553 ../gio/gresourcefile.c:655 +#: ../gio/gresource.c:304 ../gio/gresource.c:555 ../gio/gresource.c:572 +#: ../gio/gresource.c:693 ../gio/gresource.c:762 ../gio/gresource.c:823 +#: ../gio/gresource.c:903 ../gio/gresourcefile.c:453 ../gio/gresourcefile.c:576 +#: ../gio/gresourcefile.c:713 #, c-format msgid "The resource at '%s' does not exist" msgstr "The resource at '%s' does not exist" -#: ../gio/gresource.c:456 +#: ../gio/gresource.c:469 #, c-format msgid "The resource at '%s' failed to decompress" msgstr "The resource at '%s' failed to decompress" -#: ../gio/gresourcefile.c:651 +#: ../gio/gresourcefile.c:709 #, c-format msgid "The resource at '%s' is not a directory" msgstr "The resource at '%s' is not a directory" -#: ../gio/gresourcefile.c:859 +#: ../gio/gresourcefile.c:917 msgid "Input stream doesn't implement seek" msgstr "Input stream doesn't implement seek" -#: ../gio/gresource-tool.c:491 +#: ../gio/gresource-tool.c:494 msgid "List sections containing resources in an elf FILE" msgstr "List sections containing resources in an elf FILE" -#: ../gio/gresource-tool.c:497 +#: ../gio/gresource-tool.c:500 msgid "" "List resources\n" "If SECTION is given, only list resources in this section\n" @@ -2288,16 +2340,16 @@ msgstr "" "If SECTION is given, only list resources in this section\n" "If PATH is given, only list matching resources" -#: ../gio/gresource-tool.c:500 ../gio/gresource-tool.c:510 +#: ../gio/gresource-tool.c:503 ../gio/gresource-tool.c:513 msgid "FILE [PATH]" msgstr "FILE [PATH]" -#: ../gio/gresource-tool.c:501 ../gio/gresource-tool.c:511 -#: ../gio/gresource-tool.c:518 +#: ../gio/gresource-tool.c:504 ../gio/gresource-tool.c:514 +#: ../gio/gresource-tool.c:521 msgid "SECTION" msgstr "SECTION" -#: ../gio/gresource-tool.c:506 +#: ../gio/gresource-tool.c:509 msgid "" "List resources with details\n" "If SECTION is given, only list resources in this section\n" @@ -2309,15 +2361,15 @@ msgstr "" "If PATH is given, only list matching resources\n" "Details include the section, size and compression" -#: ../gio/gresource-tool.c:516 +#: ../gio/gresource-tool.c:519 msgid "Extract a resource file to stdout" msgstr "Extract a resource file to stdout" -#: ../gio/gresource-tool.c:517 +#: ../gio/gresource-tool.c:520 msgid "FILE PATH" msgstr "FILE PATH" -#: ../gio/gresource-tool.c:531 +#: ../gio/gresource-tool.c:534 msgid "" "Usage:\n" " gresource [--section SECTION] COMMAND [ARGS...]\n" @@ -2345,7 +2397,7 @@ msgstr "" "Use 'gresource help COMMAND' to get detailed help.\n" "\n" -#: ../gio/gresource-tool.c:545 +#: ../gio/gresource-tool.c:548 #, c-format msgid "" "Usage:\n" @@ -2360,19 +2412,19 @@ msgstr "" "%s\n" "\n" -#: ../gio/gresource-tool.c:552 +#: ../gio/gresource-tool.c:555 msgid " SECTION An (optional) elf section name\n" msgstr " SECTION An (optional) elf section name\n" -#: ../gio/gresource-tool.c:556 ../gio/gsettings-tool.c:648 +#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:639 msgid " COMMAND The (optional) command to explain\n" msgstr " COMMAND The (optional) command to explain\n" -#: ../gio/gresource-tool.c:562 +#: ../gio/gresource-tool.c:565 msgid " FILE An elf file (a binary or a shared library)\n" msgstr " FILE An elf file (a binary or a shared library)\n" -#: ../gio/gresource-tool.c:565 +#: ../gio/gresource-tool.c:568 msgid "" " FILE An elf file (a binary or a shared library)\n" " or a compiled resource file\n" @@ -2380,23 +2432,24 @@ msgstr "" " FILE An elf file (a binary or a shared library)\n" " or a compiled resource file\n" -#: ../gio/gresource-tool.c:569 +#: ../gio/gresource-tool.c:572 msgid "[PATH]" msgstr "[PATH]" -#: ../gio/gresource-tool.c:571 +#: ../gio/gresource-tool.c:574 msgid " PATH An (optional) resource path (may be partial)\n" msgstr " PATH An (optional) resource path (may be partial)\n" -#: ../gio/gresource-tool.c:572 +#: ../gio/gresource-tool.c:575 msgid "PATH" msgstr "PATH" -#: ../gio/gresource-tool.c:574 +#: ../gio/gresource-tool.c:577 msgid " PATH A resource path\n" msgstr " PATH A resource path\n" #: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72 +#: ../gio/gsettings-tool.c:830 #, c-format msgid "No such schema '%s'\n" msgstr "No such schema '%s'\n" @@ -2431,38 +2484,38 @@ msgstr "Path must end with a slash (/)\n" msgid "Path must not contain two adjacent slashes (//)\n" msgstr "Path must not contain two adjacent slashes (//)\n" -#: ../gio/gsettings-tool.c:490 +#: ../gio/gsettings-tool.c:481 #, c-format msgid "The provided value is outside of the valid range\n" msgstr "The provided value is outside of the valid range\n" -#: ../gio/gsettings-tool.c:497 +#: ../gio/gsettings-tool.c:488 #, c-format msgid "The key is not writable\n" msgstr "The key is not writable\n" -#: ../gio/gsettings-tool.c:533 +#: ../gio/gsettings-tool.c:524 msgid "List the installed (non-relocatable) schemas" msgstr "List the installed (non-relocatable) schemas" -#: ../gio/gsettings-tool.c:539 +#: ../gio/gsettings-tool.c:530 msgid "List the installed relocatable schemas" msgstr "List the installed relocatable schemas" -#: ../gio/gsettings-tool.c:545 +#: ../gio/gsettings-tool.c:536 msgid "List the keys in SCHEMA" msgstr "List the keys in SCHEMA" -#: ../gio/gsettings-tool.c:546 ../gio/gsettings-tool.c:552 -#: ../gio/gsettings-tool.c:589 +#: ../gio/gsettings-tool.c:537 ../gio/gsettings-tool.c:543 +#: ../gio/gsettings-tool.c:580 msgid "SCHEMA[:PATH]" msgstr "SCHEMA[:PATH]" -#: ../gio/gsettings-tool.c:551 +#: ../gio/gsettings-tool.c:542 msgid "List the children of SCHEMA" msgstr "List the children of SCHEMA" -#: ../gio/gsettings-tool.c:557 +#: ../gio/gsettings-tool.c:548 msgid "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" @@ -2470,44 +2523,44 @@ msgstr "" "List keys and values, recursively\n" "If no SCHEMA is given, list all keys\n" -#: ../gio/gsettings-tool.c:559 +#: ../gio/gsettings-tool.c:550 msgid "[SCHEMA[:PATH]]" msgstr "[SCHEMA[:PATH]]" -#: ../gio/gsettings-tool.c:564 +#: ../gio/gsettings-tool.c:555 msgid "Get the value of KEY" msgstr "Get the value of KEY" -#: ../gio/gsettings-tool.c:565 ../gio/gsettings-tool.c:571 -#: ../gio/gsettings-tool.c:583 ../gio/gsettings-tool.c:595 +#: ../gio/gsettings-tool.c:556 ../gio/gsettings-tool.c:562 +#: ../gio/gsettings-tool.c:574 ../gio/gsettings-tool.c:586 msgid "SCHEMA[:PATH] KEY" msgstr "SCHEMA[:PATH] KEY" -#: ../gio/gsettings-tool.c:570 +#: ../gio/gsettings-tool.c:561 msgid "Query the range of valid values for KEY" msgstr "Query the range of valid values for KEY" -#: ../gio/gsettings-tool.c:576 +#: ../gio/gsettings-tool.c:567 msgid "Set the value of KEY to VALUE" msgstr "Set the value of KEY to VALUE" -#: ../gio/gsettings-tool.c:577 +#: ../gio/gsettings-tool.c:568 msgid "SCHEMA[:PATH] KEY VALUE" msgstr "SCHEMA[:PATH] KEY VALUE" -#: ../gio/gsettings-tool.c:582 +#: ../gio/gsettings-tool.c:573 msgid "Reset KEY to its default value" msgstr "Reset KEY to its default value" -#: ../gio/gsettings-tool.c:588 +#: ../gio/gsettings-tool.c:579 msgid "Reset all keys in SCHEMA to their defaults" msgstr "Reset all keys in SCHEMA to their defaults" -#: ../gio/gsettings-tool.c:594 +#: ../gio/gsettings-tool.c:585 msgid "Check if KEY is writable" msgstr "Check if KEY is writable" -#: ../gio/gsettings-tool.c:600 +#: ../gio/gsettings-tool.c:591 msgid "" "Monitor KEY for changes.\n" "If no KEY is specified, monitor all keys in SCHEMA.\n" @@ -2517,11 +2570,11 @@ msgstr "" "If no KEY is specified, monitor all keys in SCHEMA.\n" "Use ^C to stop monitoring.\n" -#: ../gio/gsettings-tool.c:603 +#: ../gio/gsettings-tool.c:594 msgid "SCHEMA[:PATH] [KEY]" msgstr "SCHEMA[:PATH] [KEY]" -#: ../gio/gsettings-tool.c:615 +#: ../gio/gsettings-tool.c:606 msgid "" "Usage:\n" " gsettings --version\n" @@ -2567,7 +2620,7 @@ msgstr "" "Use 'gsettings help COMMAND' to get detailed help.\n" "\n" -#: ../gio/gsettings-tool.c:638 +#: ../gio/gsettings-tool.c:629 #, c-format msgid "" "Usage:\n" @@ -2582,11 +2635,11 @@ msgstr "" "%s\n" "\n" -#: ../gio/gsettings-tool.c:644 +#: ../gio/gsettings-tool.c:635 msgid " SCHEMADIR A directory to search for additional schemas\n" msgstr " SCHEMADIR A directory to search for additional schemas\n" -#: ../gio/gsettings-tool.c:652 +#: ../gio/gsettings-tool.c:643 msgid "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" @@ -2594,160 +2647,176 @@ msgstr "" " SCHEMA The name of the schema\n" " PATH The path, for relocatable schemas\n" -#: ../gio/gsettings-tool.c:657 +#: ../gio/gsettings-tool.c:648 msgid " KEY The (optional) key within the schema\n" msgstr " KEY The (optional) key within the schema\n" -#: ../gio/gsettings-tool.c:661 +#: ../gio/gsettings-tool.c:652 msgid " KEY The key within the schema\n" msgstr " KEY The key within the schema\n" -#: ../gio/gsettings-tool.c:665 +#: ../gio/gsettings-tool.c:656 msgid " VALUE The value to set\n" msgstr " VALUE The value to set\n" -#: ../gio/gsettings-tool.c:720 +#: ../gio/gsettings-tool.c:711 #, c-format msgid "Could not load schemas from %s: %s\n" msgstr "Could not load schemas from %s: %s\n" -#: ../gio/gsettings-tool.c:782 +#: ../gio/gsettings-tool.c:723 +#, c-format +msgid "No schemas installed\n" +msgstr "No schemas installed\n" + +#: ../gio/gsettings-tool.c:788 #, c-format msgid "Empty schema name given\n" msgstr "Empty schema name given\n" -#: ../gio/gsettings-tool.c:811 +#: ../gio/gsettings-tool.c:843 #, c-format msgid "No such key '%s'\n" msgstr "No such key '%s'\n" -#: ../gio/gsocket.c:266 +#: ../gio/gsocket.c:364 msgid "Invalid socket, not initialized" msgstr "Invalid socket, not initialized" -#: ../gio/gsocket.c:273 +#: ../gio/gsocket.c:371 #, c-format msgid "Invalid socket, initialization failed due to: %s" msgstr "Invalid socket, initialization failed due to: %s" -#: ../gio/gsocket.c:281 +#: ../gio/gsocket.c:379 msgid "Socket is already closed" msgstr "Socket is already closed" -#: ../gio/gsocket.c:296 ../gio/gsocket.c:3618 ../gio/gsocket.c:3673 +#: ../gio/gsocket.c:394 ../gio/gsocket.c:2751 ../gio/gsocket.c:3896 +#: ../gio/gsocket.c:3951 msgid "Socket I/O timed out" msgstr "Socket I/O timed out" -#: ../gio/gsocket.c:443 +#: ../gio/gsocket.c:526 #, c-format msgid "creating GSocket from fd: %s" msgstr "creating GSocket from fd: %s" -#: ../gio/gsocket.c:471 ../gio/gsocket.c:525 ../gio/gsocket.c:532 +#: ../gio/gsocket.c:554 ../gio/gsocket.c:608 ../gio/gsocket.c:615 #, c-format msgid "Unable to create socket: %s" msgstr "Unable to create socket: %s" -#: ../gio/gsocket.c:525 +#: ../gio/gsocket.c:608 msgid "Unknown family was specified" msgstr "Unknown family was specified" -#: ../gio/gsocket.c:532 +#: ../gio/gsocket.c:615 msgid "Unknown protocol was specified" msgstr "Unknown protocol was specified" -#: ../gio/gsocket.c:1722 +#: ../gio/gsocket.c:1104 +#, c-format +msgid "Cannot use datagram operations on a non-datagram socket." +msgstr "Cannot use datagram operations on a non-datagram socket." + +#: ../gio/gsocket.c:1121 +#, c-format +msgid "Cannot use datagram operations on a socket with a timeout set." +msgstr "Cannot use datagram operations on a socket with a timeout set." + +#: ../gio/gsocket.c:1925 #, c-format msgid "could not get local address: %s" msgstr "could not get local address: %s" -#: ../gio/gsocket.c:1765 +#: ../gio/gsocket.c:1968 #, c-format msgid "could not get remote address: %s" msgstr "could not get remote address: %s" -#: ../gio/gsocket.c:1826 +#: ../gio/gsocket.c:2034 #, c-format msgid "could not listen: %s" msgstr "could not listen: %s" -#: ../gio/gsocket.c:1925 +#: ../gio/gsocket.c:2133 #, c-format msgid "Error binding to address: %s" msgstr "Error binding to address: %s" -#: ../gio/gsocket.c:2037 ../gio/gsocket.c:2074 +#: ../gio/gsocket.c:2248 ../gio/gsocket.c:2285 #, c-format msgid "Error joining multicast group: %s" msgstr "Error joining multicast group: %s" -#: ../gio/gsocket.c:2038 ../gio/gsocket.c:2075 +#: ../gio/gsocket.c:2249 ../gio/gsocket.c:2286 #, c-format msgid "Error leaving multicast group: %s" msgstr "Error leaving multicast group: %s" -#: ../gio/gsocket.c:2039 +#: ../gio/gsocket.c:2250 msgid "No support for source-specific multicast" msgstr "No support for source-specific multicast" -#: ../gio/gsocket.c:2261 +#: ../gio/gsocket.c:2470 #, c-format msgid "Error accepting connection: %s" msgstr "Error accepting connection: %s" -#: ../gio/gsocket.c:2382 +#: ../gio/gsocket.c:2593 msgid "Connection in progress" msgstr "Connection in progress" -#: ../gio/gsocket.c:2432 +#: ../gio/gsocket.c:2644 msgid "Unable to get pending error: " msgstr "Unable to get pending error: " -#: ../gio/gsocket.c:2633 +#: ../gio/gsocket.c:2816 #, c-format msgid "Error receiving data: %s" msgstr "Error receiving data: %s" -#: ../gio/gsocket.c:2811 +#: ../gio/gsocket.c:3013 #, c-format msgid "Error sending data: %s" msgstr "Error sending data: %s" -#: ../gio/gsocket.c:2925 +#: ../gio/gsocket.c:3200 #, c-format msgid "Unable to shutdown socket: %s" msgstr "Unable to shutdown socket: %s" -#: ../gio/gsocket.c:3004 +#: ../gio/gsocket.c:3281 #, c-format msgid "Error closing socket: %s" msgstr "Error closing socket: %s" -#: ../gio/gsocket.c:3611 +#: ../gio/gsocket.c:3889 #, c-format msgid "Waiting for socket condition: %s" msgstr "Waiting for socket condition: %s" -#: ../gio/gsocket.c:3897 ../gio/gsocket.c:3978 ../gio/gsocket.c:4206 +#: ../gio/gsocket.c:4361 ../gio/gsocket.c:4441 ../gio/gsocket.c:4619 #, c-format msgid "Error sending message: %s" msgstr "Error sending message: %s" -#: ../gio/gsocket.c:3922 +#: ../gio/gsocket.c:4385 msgid "GSocketControlMessage not supported on Windows" msgstr "GSocketControlMessage not supported on Windows" -#: ../gio/gsocket.c:4534 ../gio/gsocket.c:4669 +#: ../gio/gsocket.c:4840 ../gio/gsocket.c:4913 ../gio/gsocket.c:5140 #, c-format msgid "Error receiving message: %s" msgstr "Error receiving message: %s" -#: ../gio/gsocket.c:4791 +#: ../gio/gsocket.c:5412 #, c-format msgid "Unable to read socket credentials: %s" msgstr "Unable to read socket credentials: %s" -#: ../gio/gsocket.c:4800 +#: ../gio/gsocket.c:5421 msgid "g_socket_get_credentials not implemented for this OS" msgstr "g_socket_get_credentials not implemented for this OS" @@ -2765,24 +2834,24 @@ msgstr "Could not connect to %s: " msgid "Could not connect: " msgstr "Could not connect: " -#: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1603 +#: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1599 msgid "Unknown error on connect" msgstr "Unknown error on connect" -#: ../gio/gsocketclient.c:1082 ../gio/gsocketclient.c:1538 +#: ../gio/gsocketclient.c:1081 ../gio/gsocketclient.c:1535 msgid "Proxying over a non-TCP connection is not supported." msgstr "Proxying over a non-TCP connection is not supported." -#: ../gio/gsocketclient.c:1108 ../gio/gsocketclient.c:1559 +#: ../gio/gsocketclient.c:1110 ../gio/gsocketclient.c:1561 #, c-format msgid "Proxy protocol '%s' is not supported." msgstr "Proxy protocol '%s' is not supported." -#: ../gio/gsocketlistener.c:188 +#: ../gio/gsocketlistener.c:218 msgid "Listener is already closed" msgstr "Listener is already closed" -#: ../gio/gsocketlistener.c:234 +#: ../gio/gsocketlistener.c:264 msgid "Added socket is closed" msgstr "Added socket is closed" @@ -2944,78 +3013,79 @@ msgstr "" msgid "The password entered is incorrect." msgstr "The password entered is incorrect." -#: ../gio/gunixconnection.c:159 ../gio/gunixconnection.c:554 +#: ../gio/gunixconnection.c:166 ../gio/gunixconnection.c:561 #, c-format msgid "Expecting 1 control message, got %d" msgid_plural "Expecting 1 control message, got %d" msgstr[0] "Expecting 1 control message, got %d" msgstr[1] "Expecting 1 control message, got %d" -#: ../gio/gunixconnection.c:175 ../gio/gunixconnection.c:566 +#: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:573 msgid "Unexpected type of ancillary data" msgstr "Unexpected type of ancillary data" -#: ../gio/gunixconnection.c:193 +#: ../gio/gunixconnection.c:200 #, c-format msgid "Expecting one fd, but got %d\n" msgid_plural "Expecting one fd, but got %d\n" msgstr[0] "Expecting one fd, but got %d\n" msgstr[1] "Expecting one fd, but got %d\n" -#: ../gio/gunixconnection.c:212 +#: ../gio/gunixconnection.c:219 msgid "Received invalid fd" msgstr "Received invalid fd" -#: ../gio/gunixconnection.c:348 +#: ../gio/gunixconnection.c:355 msgid "Error sending credentials: " msgstr "Error sending data: %s" -#: ../gio/gunixconnection.c:496 +#: ../gio/gunixconnection.c:503 #, c-format msgid "Error checking if SO_PASSCRED is enabled for socket: %s" msgstr "Error checking if SO_PASSCRED is enabled for socket: %s" -#: ../gio/gunixconnection.c:511 +#: ../gio/gunixconnection.c:518 #, c-format msgid "Error enabling SO_PASSCRED: %s" msgstr "Error enabling SO_PASSCRED: %s" -#: ../gio/gunixconnection.c:540 +#: ../gio/gunixconnection.c:547 msgid "" "Expecting to read a single byte for receiving credentials but read zero bytes" msgstr "" "Expecting to read a single byte for receiving credentials but read zero bytes" -#: ../gio/gunixconnection.c:580 +#: ../gio/gunixconnection.c:587 #, c-format msgid "Not expecting control message, but got %d" msgstr "Not expecting control message, but got %d" -#: ../gio/gunixconnection.c:604 +#: ../gio/gunixconnection.c:611 #, c-format msgid "Error while disabling SO_PASSCRED: %s" msgstr "Error while disabling SO_PASSCRED: %s" -#: ../gio/gunixinputstream.c:370 ../gio/gunixinputstream.c:391 +#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390 #, c-format msgid "Error reading from file descriptor: %s" msgstr "Error reading from file descriptor: %s" -#: ../gio/gunixinputstream.c:424 ../gio/gunixoutputstream.c:410 +#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409 +#: ../gio/gwin32inputstream.c:217 ../gio/gwin32outputstream.c:204 #, c-format msgid "Error closing file descriptor: %s" msgstr "Error closing file descriptor: %s" -#: ../gio/gunixmounts.c:2054 ../gio/gunixmounts.c:2107 +#: ../gio/gunixmounts.c:2099 ../gio/gunixmounts.c:2152 msgid "Filesystem root" msgstr "Filesystem root" -#: ../gio/gunixoutputstream.c:356 ../gio/gunixoutputstream.c:377 +#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376 #, c-format msgid "Error writing to file descriptor: %s" msgstr "Error writing to file descriptor: %s" -#: ../gio/gunixsocketaddress.c:232 +#: ../gio/gunixsocketaddress.c:239 msgid "Abstract UNIX domain socket addresses not supported on this system" msgstr "Abstract UNIX domain socket addresses not supported on this system" @@ -3030,34 +3100,17 @@ msgstr "volume doesn't implement eject" msgid "volume doesn't implement eject or eject_with_operation" msgstr "volume doesn't implement eject or eject_with_operation" -#: ../gio/gwin32appinfo.c:274 -msgid "Can't find application" -msgstr "Can't find application" - -#: ../gio/gwin32appinfo.c:303 -#, c-format -msgid "Error launching application: %s" -msgstr "Error launching application: %s" - -#: ../gio/gwin32appinfo.c:378 -msgid "association changes not supported on win32" -msgstr "association changes not supported on win32" - -#: ../gio/gwin32appinfo.c:390 -msgid "Association creation not supported on win32" -msgstr "Association creation not supported on win32" - -#: ../gio/gwin32inputstream.c:344 +#: ../gio/gwin32inputstream.c:185 #, c-format msgid "Error reading from handle: %s" msgstr "Error reading from file: %s" -#: ../gio/gwin32inputstream.c:388 ../gio/gwin32outputstream.c:375 +#: ../gio/gwin32inputstream.c:232 ../gio/gwin32outputstream.c:219 #, c-format msgid "Error closing handle: %s" msgstr "Error closing file: %s" -#: ../gio/gwin32outputstream.c:331 +#: ../gio/gwin32outputstream.c:172 #, c-format msgid "Error writing to handle: %s" msgstr "Error writing to file: %s" @@ -3174,8 +3227,8 @@ msgstr "No application with name '%s' registered a bookmark for '%s'" msgid "Failed to expand exec line '%s' with URI '%s'" msgstr "Failed to expand exec line '%s' with URI '%s'" -#: ../glib/gconvert.c:477 ../glib/gutf8.c:833 ../glib/gutf8.c:1044 -#: ../glib/gutf8.c:1181 ../glib/gutf8.c:1285 +#: ../glib/gconvert.c:477 ../glib/gutf8.c:849 ../glib/gutf8.c:1061 +#: ../glib/gutf8.c:1198 ../glib/gutf8.c:1302 msgid "Partial character sequence at end of input" msgstr "Partial character sequence at end of input" @@ -3184,37 +3237,37 @@ msgstr "Partial character sequence at end of input" msgid "Cannot convert fallback '%s' to codeset '%s'" msgstr "Cannot convert fallback '%s' to codeset '%s'" -#: ../glib/gconvert.c:1566 +#: ../glib/gconvert.c:1567 #, c-format msgid "The URI '%s' is not an absolute URI using the \"file\" scheme" msgstr "The URI '%s' is not an absolute URI using the \"file\" scheme" -#: ../glib/gconvert.c:1576 +#: ../glib/gconvert.c:1577 #, c-format msgid "The local file URI '%s' may not include a '#'" msgstr "The local file URI '%s' may not include a '#'" -#: ../glib/gconvert.c:1593 +#: ../glib/gconvert.c:1594 #, c-format msgid "The URI '%s' is invalid" msgstr "The URI '%s' is invalid" -#: ../glib/gconvert.c:1605 +#: ../glib/gconvert.c:1606 #, c-format msgid "The hostname of the URI '%s' is invalid" msgstr "The hostname of the URI '%s' is invalid" -#: ../glib/gconvert.c:1621 +#: ../glib/gconvert.c:1622 #, c-format msgid "The URI '%s' contains invalidly escaped characters" msgstr "The URI '%s' contains invalidly escaped characters" -#: ../glib/gconvert.c:1716 +#: ../glib/gconvert.c:1717 #, c-format msgid "The pathname '%s' is not an absolute path" msgstr "The pathname '%s' is not an absolute path" -#: ../glib/gconvert.c:1726 +#: ../glib/gconvert.c:1727 msgid "Invalid hostname" msgstr "Invalid hostname" @@ -3530,87 +3583,87 @@ msgstr "Failed to read the symbolic link '%s': %s" msgid "Symbolic links not supported" msgstr "Symbolic links not supported" -#: ../glib/giochannel.c:1389 +#: ../glib/giochannel.c:1388 #, c-format msgid "Could not open converter from '%s' to '%s': %s" msgstr "Could not open converter from '%s' to '%s': %s" -#: ../glib/giochannel.c:1734 +#: ../glib/giochannel.c:1733 msgid "Can't do a raw read in g_io_channel_read_line_string" msgstr "Can't do a raw read in g_io_channel_read_line_string" -#: ../glib/giochannel.c:1781 ../glib/giochannel.c:2039 -#: ../glib/giochannel.c:2126 +#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038 +#: ../glib/giochannel.c:2125 msgid "Leftover unconverted data in read buffer" msgstr "Left over unconverted data in read buffer" -#: ../glib/giochannel.c:1862 ../glib/giochannel.c:1939 +#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938 msgid "Channel terminates in a partial character" msgstr "Channel terminates in a partial character" -#: ../glib/giochannel.c:1925 +#: ../glib/giochannel.c:1924 msgid "Can't do a raw read in g_io_channel_read_to_end" msgstr "Can't do a raw read in g_io_channel_read_to_end" -#: ../glib/gkeyfile.c:719 +#: ../glib/gkeyfile.c:737 msgid "Valid key file could not be found in search dirs" msgstr "Valid key file could not be found in search dirs" -#: ../glib/gkeyfile.c:755 +#: ../glib/gkeyfile.c:773 msgid "Not a regular file" msgstr "Not a regular file" -#: ../glib/gkeyfile.c:1155 +#: ../glib/gkeyfile.c:1173 #, c-format msgid "" "Key file contains line '%s' which is not a key-value pair, group, or comment" msgstr "" "Key file contains line '%s' which is not a key-value pair, group, or comment" -#: ../glib/gkeyfile.c:1212 +#: ../glib/gkeyfile.c:1230 #, c-format msgid "Invalid group name: %s" msgstr "Invalid group name: %s" -#: ../glib/gkeyfile.c:1234 +#: ../glib/gkeyfile.c:1252 msgid "Key file does not start with a group" msgstr "Key file does not start with a group" -#: ../glib/gkeyfile.c:1260 +#: ../glib/gkeyfile.c:1278 #, c-format msgid "Invalid key name: %s" msgstr "Invalid key name: %s" -#: ../glib/gkeyfile.c:1287 +#: ../glib/gkeyfile.c:1305 #, c-format msgid "Key file contains unsupported encoding '%s'" msgstr "Key file contains unsupported encoding '%s'" -#: ../glib/gkeyfile.c:1530 ../glib/gkeyfile.c:1703 ../glib/gkeyfile.c:3081 -#: ../glib/gkeyfile.c:3144 ../glib/gkeyfile.c:3270 ../glib/gkeyfile.c:3400 -#: ../glib/gkeyfile.c:3542 ../glib/gkeyfile.c:3771 ../glib/gkeyfile.c:3838 +#: ../glib/gkeyfile.c:1548 ../glib/gkeyfile.c:1721 ../glib/gkeyfile.c:3099 +#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3292 ../glib/gkeyfile.c:3422 +#: ../glib/gkeyfile.c:3566 ../glib/gkeyfile.c:3795 ../glib/gkeyfile.c:3862 #, c-format msgid "Key file does not have group '%s'" msgstr "Key file does not have group '%s'" -#: ../glib/gkeyfile.c:1658 +#: ../glib/gkeyfile.c:1676 #, c-format msgid "Key file does not have key '%s' in group '%s'" msgstr "Key file does not have key '%s' in group '%s'" -#: ../glib/gkeyfile.c:1820 ../glib/gkeyfile.c:1936 +#: ../glib/gkeyfile.c:1838 ../glib/gkeyfile.c:1954 #, c-format msgid "Key file contains key '%s' with value '%s' which is not UTF-8" msgstr "Key file contains key '%s' with value '%s' which is not UTF-8" -#: ../glib/gkeyfile.c:1840 ../glib/gkeyfile.c:1956 ../glib/gkeyfile.c:2325 +#: ../glib/gkeyfile.c:1858 ../glib/gkeyfile.c:1974 ../glib/gkeyfile.c:2343 #, c-format msgid "" "Key file contains key '%s' which has a value that cannot be interpreted." msgstr "" "Key file contains key '%s' which has a value that cannot be interpreted." -#: ../glib/gkeyfile.c:2542 ../glib/gkeyfile.c:2910 +#: ../glib/gkeyfile.c:2560 ../glib/gkeyfile.c:2928 #, c-format msgid "" "Key file contains key '%s' in group '%s' which has a value that cannot be " @@ -3619,36 +3672,36 @@ msgstr "" "Key file contains key '%s' in group '%s' which has a value that cannot be " "interpreted." -#: ../glib/gkeyfile.c:2620 ../glib/gkeyfile.c:2697 +#: ../glib/gkeyfile.c:2638 ../glib/gkeyfile.c:2715 #, c-format msgid "Key '%s' in group '%s' has value '%s' where %s was expected" msgstr "Key '%s' in group '%s' has value '%s' where %s was expected" -#: ../glib/gkeyfile.c:4078 +#: ../glib/gkeyfile.c:4102 msgid "Key file contains escape character at end of line" msgstr "Key file contains escape character at end of line" -#: ../glib/gkeyfile.c:4100 +#: ../glib/gkeyfile.c:4124 #, c-format msgid "Key file contains invalid escape sequence '%s'" msgstr "Key file contains invalid escape sequence '%s'" -#: ../glib/gkeyfile.c:4242 +#: ../glib/gkeyfile.c:4266 #, c-format msgid "Value '%s' cannot be interpreted as a number." msgstr "Value '%s' cannot be interpreted as a number." -#: ../glib/gkeyfile.c:4256 +#: ../glib/gkeyfile.c:4280 #, c-format msgid "Integer value '%s' out of range" msgstr "Integer value '%s' out of range" -#: ../glib/gkeyfile.c:4289 +#: ../glib/gkeyfile.c:4313 #, c-format msgid "Value '%s' cannot be interpreted as a float number." msgstr "Value '%s' cannot be interpreted as a float number." -#: ../glib/gkeyfile.c:4313 +#: ../glib/gkeyfile.c:4350 #, c-format msgid "Value '%s' cannot be interpreted as a boolean." msgstr "Value '%s' cannot be interpreted as a boolean." @@ -3693,7 +3746,7 @@ msgstr "'%s' is not a valid name: '%c'" msgid "Error on line %d: %s" msgstr "Error on line %d: %s" -#: ../glib/gmarkup.c:683 +#: ../glib/gmarkup.c:676 #, c-format msgid "" "Failed to parse '%-.*s', which should have been a digit inside a character " @@ -3702,7 +3755,7 @@ msgstr "" "Failed to parse '%-.*s', which should have been a digit inside a character " "reference (ê for example) - perhaps the digit is too large" -#: ../glib/gmarkup.c:695 +#: ../glib/gmarkup.c:688 msgid "" "Character reference did not end with a semicolon; most likely you used an " "ampersand character without intending to start an entity - escape ampersand " @@ -3712,23 +3765,23 @@ msgstr "" "ampersand character without intending to start an entity - escape ampersand " "as &" -#: ../glib/gmarkup.c:721 +#: ../glib/gmarkup.c:714 #, c-format msgid "Character reference '%-.*s' does not encode a permitted character" msgstr "Character reference '%-.*s' does not encode a permitted character" -#: ../glib/gmarkup.c:759 +#: ../glib/gmarkup.c:752 msgid "" "Empty entity '&;' seen; valid entities are: & " < > '" msgstr "" "Empty entity '&;' seen; valid entities are: & " < > '" -#: ../glib/gmarkup.c:767 +#: ../glib/gmarkup.c:760 #, c-format msgid "Entity name '%-.*s' is not known" msgstr "Entity name '%-.*s' is not known" -#: ../glib/gmarkup.c:772 +#: ../glib/gmarkup.c:765 msgid "" "Entity did not end with a semicolon; most likely you used an ampersand " "character without intending to start an entity - escape ampersand as &" @@ -3736,11 +3789,11 @@ msgstr "" "Entity did not end with a semicolon; most likely you used an ampersand " "character without intending to start an entity - escape ampersand as &" -#: ../glib/gmarkup.c:1178 +#: ../glib/gmarkup.c:1171 msgid "Document must begin with an element (e.g. )" msgstr "Document must begin with an element (e.g. )" -#: ../glib/gmarkup.c:1218 +#: ../glib/gmarkup.c:1211 #, c-format msgid "" "'%s' is not a valid character following a '<' character; it may not begin an " @@ -3750,7 +3803,7 @@ msgstr "" "element name" # c-format -#: ../glib/gmarkup.c:1260 +#: ../glib/gmarkup.c:1253 #, c-format msgid "" "Odd character '%s', expected a '>' character to end the empty-element tag " @@ -3759,14 +3812,14 @@ msgstr "" "Odd character '%s', expected a '>' character to end the empty-element tag " "'%s'" -#: ../glib/gmarkup.c:1341 +#: ../glib/gmarkup.c:1334 #, c-format msgid "" "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" msgstr "" "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'" -#: ../glib/gmarkup.c:1382 +#: ../glib/gmarkup.c:1375 #, c-format msgid "" "Odd character '%s', expected a '>' or '/' character to end the start tag of " @@ -3777,7 +3830,7 @@ msgstr "" "element '%s', or optionally an attribute; perhaps you used an invalid " "character in an attribute name" -#: ../glib/gmarkup.c:1426 +#: ../glib/gmarkup.c:1419 #, c-format msgid "" "Odd character '%s', expected an open quote mark after the equals sign when " @@ -3786,7 +3839,7 @@ msgstr "" "Odd character '%s', expected an open quote mark after the equals sign when " "giving value for attribute '%s' of element '%s'" -#: ../glib/gmarkup.c:1559 +#: ../glib/gmarkup.c:1552 #, c-format msgid "" "'%s' is not a valid character following the characters ''" -#: ../glib/gmarkup.c:1606 +#: ../glib/gmarkup.c:1599 #, c-format msgid "Element '%s' was closed, no element is currently open" msgstr "Element '%s' was closed, no element is currently open" -#: ../glib/gmarkup.c:1615 +#: ../glib/gmarkup.c:1608 #, c-format msgid "Element '%s' was closed, but the currently open element is '%s'" msgstr "Element '%s' was closed, but the currently open element is '%s'" -#: ../glib/gmarkup.c:1768 +#: ../glib/gmarkup.c:1761 msgid "Document was empty or contained only whitespace" msgstr "Document was empty or contained only whitespace" -#: ../glib/gmarkup.c:1782 +#: ../glib/gmarkup.c:1775 msgid "Document ended unexpectedly just after an open angle bracket '<'" msgstr "Document ended unexpectedly just after an open angle bracket '<'" -#: ../glib/gmarkup.c:1790 ../glib/gmarkup.c:1835 +#: ../glib/gmarkup.c:1783 ../glib/gmarkup.c:1828 #, c-format msgid "" "Document ended unexpectedly with elements still open - '%s' was the last " @@ -3831,7 +3884,7 @@ msgstr "" "Document ended unexpectedly with elements still open - '%s' was the last " "element opened" -#: ../glib/gmarkup.c:1798 +#: ../glib/gmarkup.c:1791 #, c-format msgid "" "Document ended unexpectedly, expected to see a close angle bracket ending " @@ -3840,19 +3893,19 @@ msgstr "" "Document ended unexpectedly, expected to see a close angle bracket ending " "the tag <%s/>" -#: ../glib/gmarkup.c:1804 +#: ../glib/gmarkup.c:1797 msgid "Document ended unexpectedly inside an element name" msgstr "Document ended unexpectedly inside an element name" -#: ../glib/gmarkup.c:1810 +#: ../glib/gmarkup.c:1803 msgid "Document ended unexpectedly inside an attribute name" msgstr "Document ended unexpectedly inside an attribute name" -#: ../glib/gmarkup.c:1815 +#: ../glib/gmarkup.c:1808 msgid "Document ended unexpectedly inside an element-opening tag." msgstr "Document ended unexpectedly inside an element-opening tag." -#: ../glib/gmarkup.c:1821 +#: ../glib/gmarkup.c:1814 msgid "" "Document ended unexpectedly after the equals sign following an attribute " "name; no attribute value" @@ -3860,74 +3913,78 @@ msgstr "" "Document ended unexpectedly after the equals sign following an attribute " "name; no attribute value" -#: ../glib/gmarkup.c:1828 +#: ../glib/gmarkup.c:1821 msgid "Document ended unexpectedly while inside an attribute value" msgstr "Document ended unexpectedly while inside an attribute value" -#: ../glib/gmarkup.c:1844 +#: ../glib/gmarkup.c:1837 #, c-format msgid "Document ended unexpectedly inside the close tag for element '%s'" msgstr "Document ended unexpectedly inside the close tag for element '%s'" -#: ../glib/gmarkup.c:1850 +#: ../glib/gmarkup.c:1843 msgid "Document ended unexpectedly inside a comment or processing instruction" msgstr "Document ended unexpectedly inside a comment or processing instruction" -#: ../glib/goption.c:855 +#: ../glib/goption.c:857 msgid "Usage:" msgstr "Usage:" -#: ../glib/goption.c:855 +#: ../glib/goption.c:861 msgid "[OPTION...]" msgstr "[OPTION...]" -#: ../glib/goption.c:971 +#: ../glib/goption.c:977 msgid "Help Options:" msgstr "Help Options:" -#: ../glib/goption.c:972 +#: ../glib/goption.c:978 msgid "Show help options" msgstr "Show help options" -#: ../glib/goption.c:978 +#: ../glib/goption.c:984 msgid "Show all help options" msgstr "Show all help options" -#: ../glib/goption.c:1040 +#: ../glib/goption.c:1047 msgid "Application Options:" msgstr "Application Options:" -#: ../glib/goption.c:1104 ../glib/goption.c:1174 +#: ../glib/goption.c:1049 +msgid "Options:" +msgstr "Options:" + +#: ../glib/goption.c:1113 ../glib/goption.c:1183 #, c-format msgid "Cannot parse integer value '%s' for %s" msgstr "Cannot parse integer value '%s' for %s" -#: ../glib/goption.c:1114 ../glib/goption.c:1182 +#: ../glib/goption.c:1123 ../glib/goption.c:1191 #, c-format msgid "Integer value '%s' for %s out of range" msgstr "Integer value '%s' for %s out of range" -#: ../glib/goption.c:1139 +#: ../glib/goption.c:1148 #, c-format msgid "Cannot parse double value '%s' for %s" msgstr "Cannot parse double value '%s' for %s" -#: ../glib/goption.c:1147 +#: ../glib/goption.c:1156 #, c-format msgid "Double value '%s' for %s out of range" msgstr "Double value '%s' for %s out of range" -#: ../glib/goption.c:1433 ../glib/goption.c:1512 +#: ../glib/goption.c:1442 ../glib/goption.c:1521 #, c-format msgid "Error parsing option %s" msgstr "Error parsing option %s" -#: ../glib/goption.c:1543 ../glib/goption.c:1656 +#: ../glib/goption.c:1552 ../glib/goption.c:1665 #, c-format msgid "Missing argument for %s" msgstr "Missing·argument·for·%s" -#: ../glib/goption.c:2117 +#: ../glib/goption.c:2126 #, c-format msgid "Unknown option %s" msgstr "Unknown option %s" @@ -4227,70 +4284,70 @@ msgstr "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)" msgid "character value in \\u.... sequence is too large" msgstr "character value in \\u.... sequence is too large" -#: ../glib/gregex.c:746 ../glib/gregex.c:1915 +#: ../glib/gregex.c:746 ../glib/gregex.c:1973 #, c-format msgid "Error while matching regular expression %s: %s" msgstr "Error while matching regular expression %s: %s" -#: ../glib/gregex.c:1312 +#: ../glib/gregex.c:1317 msgid "PCRE library is compiled without UTF8 support" msgstr "PCRE library is compiled without UTF8 support" -#: ../glib/gregex.c:1316 +#: ../glib/gregex.c:1321 msgid "PCRE library is compiled without UTF8 properties support" msgstr "PCRE library is compiled without UTF8 properties support" -#: ../glib/gregex.c:1324 +#: ../glib/gregex.c:1329 msgid "PCRE library is compiled with incompatible options" msgstr "PCRE library is compiled with incompatible options" -#: ../glib/gregex.c:1383 -#, c-format -msgid "Error while compiling regular expression %s at char %d: %s" -msgstr "Error while compiling regular expression %s at char %d: %s" - -#: ../glib/gregex.c:1425 +#: ../glib/gregex.c:1358 #, c-format msgid "Error while optimizing regular expression %s: %s" msgstr "Error while optimizing regular expression %s: %s" -#: ../glib/gregex.c:2347 +#: ../glib/gregex.c:1438 +#, c-format +msgid "Error while compiling regular expression %s at char %d: %s" +msgstr "Error while compiling regular expression %s at char %d: %s" + +#: ../glib/gregex.c:2409 msgid "hexadecimal digit or '}' expected" msgstr "hexadecimal digit or '}' expected" -#: ../glib/gregex.c:2363 +#: ../glib/gregex.c:2425 msgid "hexadecimal digit expected" msgstr "hexadecimal digit expected" -#: ../glib/gregex.c:2403 +#: ../glib/gregex.c:2465 msgid "missing '<' in symbolic reference" msgstr "missing '<' in symbolic reference" -#: ../glib/gregex.c:2412 +#: ../glib/gregex.c:2474 msgid "unfinished symbolic reference" msgstr "unfinished symbolic reference" -#: ../glib/gregex.c:2419 +#: ../glib/gregex.c:2481 msgid "zero-length symbolic reference" msgstr "zero-length symbolic reference" -#: ../glib/gregex.c:2430 +#: ../glib/gregex.c:2492 msgid "digit expected" msgstr "digit expected" -#: ../glib/gregex.c:2448 +#: ../glib/gregex.c:2510 msgid "illegal symbolic reference" msgstr "illegal symbolic reference" -#: ../glib/gregex.c:2510 +#: ../glib/gregex.c:2572 msgid "stray final '\\'" msgstr "stray final '\\'" -#: ../glib/gregex.c:2514 +#: ../glib/gregex.c:2576 msgid "unknown escape sequence" msgstr "unknown escape sequence" -#: ../glib/gregex.c:2524 +#: ../glib/gregex.c:2586 #, c-format msgid "Error while parsing replacement text \"%s\" at char %lu: %s" msgstr "Error while parsing replacement text \"%s\" at char %lu: %s" @@ -4332,62 +4389,62 @@ msgstr "Unexpected error in select() reading data from a child process (%s)" msgid "Unexpected error in waitpid() (%s)" msgstr "Unexpected error in waitpid() (%s)" -#: ../glib/gspawn.c:849 ../glib/gspawn-win32.c:1233 +#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233 #, c-format msgid "Child process exited with code %ld" msgstr "Child process exited with code %ld" -#: ../glib/gspawn.c:857 +#: ../glib/gspawn.c:852 #, c-format msgid "Child process killed by signal %ld" msgstr "Child process killed by signal %ld" -#: ../glib/gspawn.c:864 +#: ../glib/gspawn.c:859 #, c-format msgid "Child process stopped by signal %ld" msgstr "Child process stopped by signal %ld" -#: ../glib/gspawn.c:871 +#: ../glib/gspawn.c:866 #, c-format msgid "Child process exited abnormally" msgstr "Child process exited abnormally" -#: ../glib/gspawn.c:1276 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 +#: ../glib/gspawn.c:1271 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347 #, c-format msgid "Failed to read from child pipe (%s)" msgstr "Failed to read from child pipe (%s)" -#: ../glib/gspawn.c:1346 +#: ../glib/gspawn.c:1341 #, c-format msgid "Failed to fork (%s)" msgstr "Failed to fork (%s)" -#: ../glib/gspawn.c:1495 ../glib/gspawn-win32.c:370 +#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370 #, c-format msgid "Failed to change to directory '%s' (%s)" msgstr "Failed to change to directory '%s' (%s)" -#: ../glib/gspawn.c:1505 +#: ../glib/gspawn.c:1500 #, c-format msgid "Failed to execute child process \"%s\" (%s)" msgstr "Failed to execute child process \"%s\" (%s)" -#: ../glib/gspawn.c:1515 +#: ../glib/gspawn.c:1510 #, c-format msgid "Failed to redirect output or input of child process (%s)" msgstr "Failed to redirect output or input of child process (%s)" -#: ../glib/gspawn.c:1524 +#: ../glib/gspawn.c:1519 #, c-format msgid "Failed to fork child process (%s)" msgstr "Failed to fork child process (%s)" -#: ../glib/gspawn.c:1532 +#: ../glib/gspawn.c:1527 #, c-format msgid "Unknown error executing child process \"%s\"" msgstr "Unknown error executing child process \"%s\"" -#: ../glib/gspawn.c:1556 +#: ../glib/gspawn.c:1551 #, c-format msgid "Failed to read enough data from child pid pipe (%s)" msgstr "Failed to read enough data from child pid pipe (%s)" @@ -4441,92 +4498,92 @@ msgstr "" "Unexpected error in g_io_channel_win32_poll() reading data from a child " "process" -#: ../glib/gutf8.c:780 +#: ../glib/gutf8.c:795 msgid "Failed to allocate memory" msgstr "Failed to allocate memory" -#: ../glib/gutf8.c:912 +#: ../glib/gutf8.c:928 msgid "Character out of range for UTF-8" msgstr "Character out of range for UTF-8" -#: ../glib/gutf8.c:1012 ../glib/gutf8.c:1021 ../glib/gutf8.c:1151 -#: ../glib/gutf8.c:1160 ../glib/gutf8.c:1299 ../glib/gutf8.c:1396 +#: ../glib/gutf8.c:1029 ../glib/gutf8.c:1038 ../glib/gutf8.c:1168 +#: ../glib/gutf8.c:1177 ../glib/gutf8.c:1316 ../glib/gutf8.c:1413 msgid "Invalid sequence in conversion input" msgstr "Invalid sequence in conversion input" -#: ../glib/gutf8.c:1310 ../glib/gutf8.c:1407 +#: ../glib/gutf8.c:1327 ../glib/gutf8.c:1424 msgid "Character out of range for UTF-16" msgstr "Character out of range for UTF-16" -#: ../glib/gutils.c:2116 ../glib/gutils.c:2143 ../glib/gutils.c:2249 +#: ../glib/gutils.c:2133 ../glib/gutils.c:2160 ../glib/gutils.c:2266 #, c-format msgid "%u byte" msgid_plural "%u bytes" msgstr[0] "בית אחד" msgstr[1] "%u בתים" -#: ../glib/gutils.c:2122 +#: ../glib/gutils.c:2139 #, c-format msgid "%.1f KiB" msgstr "%.1f KiB" -#: ../glib/gutils.c:2124 +#: ../glib/gutils.c:2141 #, c-format msgid "%.1f MiB" msgstr "%.1f MiB" -#: ../glib/gutils.c:2127 +#: ../glib/gutils.c:2144 #, c-format msgid "%.1f GiB" msgstr "%.1f GiB" -#: ../glib/gutils.c:2130 +#: ../glib/gutils.c:2147 #, c-format msgid "%.1f TiB" msgstr "%.1f TiB" -#: ../glib/gutils.c:2133 +#: ../glib/gutils.c:2150 #, c-format msgid "%.1f PiB" msgstr "%.1f PiB" -#: ../glib/gutils.c:2136 +#: ../glib/gutils.c:2153 #, c-format msgid "%.1f EiB" msgstr "%.1f EiB" -#: ../glib/gutils.c:2149 +#: ../glib/gutils.c:2166 #, c-format msgid "%.1f kB" msgstr "%.1f ק״ב" -#: ../glib/gutils.c:2152 ../glib/gutils.c:2267 +#: ../glib/gutils.c:2169 ../glib/gutils.c:2284 #, c-format msgid "%.1f MB" msgstr "%.1f מ״ב" -#: ../glib/gutils.c:2155 ../glib/gutils.c:2272 +#: ../glib/gutils.c:2172 ../glib/gutils.c:2289 #, c-format msgid "%.1f GB" msgstr "%.1f ג״ב" -#: ../glib/gutils.c:2157 ../glib/gutils.c:2277 +#: ../glib/gutils.c:2174 ../glib/gutils.c:2294 #, c-format msgid "%.1f TB" msgstr "%.1f ט״ב" -#: ../glib/gutils.c:2160 ../glib/gutils.c:2282 +#: ../glib/gutils.c:2177 ../glib/gutils.c:2299 #, c-format msgid "%.1f PB" msgstr "%.1f פ״ב" -#: ../glib/gutils.c:2163 ../glib/gutils.c:2287 +#: ../glib/gutils.c:2180 ../glib/gutils.c:2304 #, c-format msgid "%.1f EB" msgstr "%.1f א״ב" #. Translators: the %s in "%s bytes" will always be replaced by a number. -#: ../glib/gutils.c:2200 +#: ../glib/gutils.c:2217 #, c-format msgid "%s byte" msgid_plural "%s bytes" @@ -4538,11 +4595,26 @@ msgstr[1] "%s בתים" #. * compatibility. Users will not see this string unless a program is using this deprecated function. #. * Please translate as literally as possible. #. -#: ../glib/gutils.c:2262 +#: ../glib/gutils.c:2279 #, c-format msgid "%.1f KB" msgstr "%.1f ק״ב" +#~ msgid "Can't find application" +#~ msgstr "Can't find application" + +#~ msgid "Error launching application: %s" +#~ msgstr "Error launching application: %s" + +#~ msgid "association changes not supported on win32" +#~ msgstr "association changes not supported on win32" + +#~ msgid "Association creation not supported on win32" +#~ msgstr "Association creation not supported on win32" + +#~ msgid "Unable to find default local directory monitor type" +#~ msgstr "Unable to find default local directory monitor type" + #~ msgid "URIs not supported" #~ msgstr "URIs not supported" diff --git a/po/hi.gmo b/po/hi.gmo new file mode 100644 index 0000000000000000000000000000000000000000..19fbff0a8efbd2e9cd48ae8c856ea51eacf70a3f GIT binary patch literal 145670 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